<?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>TinyMCE</name>
	<version>3.3.2</version>
    <mincmsversion>2.2.11</mincmsversion>
	<help><![CDATA[CjxoMz5XaGF0IERvZXMgVGhpcyBEbz88L2gzPgo8cD4KCVRoaXMgbW9kdWxlIGVtYmVkcyB0aGUgZnVsbCBUaW55TUNFIFdZU0lXWUcgZWRpdG9yIHZlcnNpb24gaW4gQ01TIE1hZGUgU2ltcGxlLiBJdCB3b3JrcyB3aXRoIGNvbnRlbnQgYmxvY2tzIGluIENNU01TIGNvbnRlbnQgcGFnZXMgKHdoZW4gYSBXWVNJV1lHIGhhcyBiZWVuIGFsbG93ZWQpLCBpbiBtb2R1bGUgQWRtaW4gZm9ybXMgd2hlcmUgV1lTSVdZRyBlZGl0b3JzIGFyZSBhbGxvd2VkLCBhbmQgYWxsb3dzIHJlc3RyaWN0ZWQgY2FwYWJpbGl0aWVzIGZvciBlZGl0aW5nIGh0bWwgYmxvY2tzIG9uIGZyb250ZW5kIHBhZ2VzLgo8L3A+CjxwPkluIG9yZGVyIGZvciBUaW55TUNFIHRvIGJlIHVzZWQgYXMgdGhlIFdZU0lXWUcgZWRpdG9yIGluIHRoZSBBZG1pbiBjb25zb2xlIHRoZSBUaW55TUNFIFdZU0lXWUcgRWRpdG9yIG5lZWRzIHRvIGJlIHNlbGVjdGVkIGluIHRoZSB1c2VycyBwcmVmZXJlbmNlcy4gIFBsZWFzZSBzZWxlY3QgJnF1b3Q7VGlueU1DRSZxdW90OyBpbiB0aGUgJnF1b3Q7U2VsZWN0IFdZU0lXWUcgdG8gVXNlJnF1b3Q7IG9wdGlvbiB1bmRlciAmcXVvdDtNeSBQcmVmZXJlbmNlcyAmZ3Q7Jmd0OyBVc2VyIFByZWZlcmVuY2VzJnF1b3Q7IGluIHRoZSBDTVNNUyBBZG1pbiBwYW5lbC4gIEFkZGl0aW9uYWwgb3B0aW9ucyBpbiB2YXJpb3VzIG1vZHVsZXMgb3IgaW4gY29udGVudCBwYWdlIHRlbXBsYXRlcywgYW5kIGNvbnRlbnQgcGFnZXMgdGhlbXNlbHZlcyBjYW4gY29udHJvbCB3aGV0aGVyIGEgdGV4dCBhcmVhIG9yIGEgV1lTSVdZRyBmaWVsZCBpcyBwcm92aWRlZCBpbiB2YXJpb3VzIGVkaXQgZm9ybXMuPC9wPgo8cD5Gb3IgRnJvbnRlbmQgZWRpdGluZyBjYXBhYmlsaXRpZXMgVGlueU1DRSBtdXN0IGJlIHNlbGVjdGVkIGFzIHRoZSAmcXVvdDtGcm9udGVuZCBXWVNJV1lHJnF1b3Q7IGluIHRoZSBnbG9iYWwgc2V0dGluZ3MgcGFnZSBvZiB0aGUgQ01TTVMgYWRtaW4gY29uc29sZS48L3A+Cgo8aDM+RmVhdHVyZXM6PC9oMz4KPHVsPgoJPGxpPkZ1bGwgbmF0aXZlIDxhIGhyZWY9Imh0dHA6Ly93d3cudGlueW1jZS5jb20iIHRhcmdldD0iX2JsYW5rIj5UaW55TUNFIGVkaXRvcjwvYT4gaXMgYXZhaWxhYmxlLjwvbGk+Cgk8bGk+Q29uZmlndXJhdGlvbiBwcm9maWxlcyBhbmQgYmFja2VuZCBncm91cHMgYXR0cmlidXRpb24uPC9saT4KCTxsaT5Mb3RzIG9mIGN1c3RvbWl6YXRpb24gb3B0aW9uczogdG9vbGJhciwgbWVudWJhciwgZXh0ZXJuYWwgbW9kdWxlcywgY3VzdG9tIHN0eWxlcywgLi4uPC9saT4KCTxsaT5Vc2VzIHRoZSBpbnRlcm5hbCBwYWdlIGxpbmtlciBmcm9tIHRoZSBNaWNyb1RpbnkgbW9kdWxlLjwvbGk+Cgk8bGk+RW1iZWRzIHRoZSBwb3dlcmZ1bCA8YSBocmVmPSJodHRwOi8vd3d3LnJlc3BvbnNpdmVmaWxlbWFuYWdlci5jb20vIiB0YXJnZXQ9Il9ibGFuayI+UmVzcG9uc2l2ZSBGaWxlIE1hbmFnZXI8L2E+IHRoYW5rcyB0byBpdHMgYXV0aG9yIEFsYmVydG8gUGVyaXBvbGxpLiBOb3RlOiBmb3Igc2VjdXJpdHkgcmVhc29ucywgdGhlIFJlc3BvbnNpdmUgRmlsZSBNYW5hZ2VyIHdpbGwgbm90IGJlIGF2YWlsYWJsZSB0byB0aGUgZnJvbnRlbmQgdXNlcnM8L2xpPgoJPGxpPkFiaWxpdHkgdG8gdXNlIGFuIGV4dGVybmFsIGphdmFzY3JpcHQgdGVtcGxhdGUgZmlsZSBmcm9tIHRoZSBEZXNpZ25NYW5hZ2VyIGluc3RlYWQgb2YgdGhlIHN0b2NrIEpTIGZpbGUgLSBUaGlzIHBlcm1pdHMgYSBjb21wbGV0ZSBjdXN0b21pemF0aW9uIG9mIHRoZSBpbml0IHNjcmlwdC48L2xpPgoJPGxpPkN1c3RvbWl6YWJsZSBhcHBlYXJhbmNlIGJ5IHNwZWNpZnlpbmcgYSBkZXNpZ24gdG8gdXNlIGZvciB0aGUgZWRpdG9yLjwvbGk+CjwvdWw+Cgo8aDM+SG93IGRvIEkgdXNlIGl0PC9oMz4KPHVsPgoJPGxpPkluc3RhbGwgYW5kIGNvbmZpZ3VyZSB0aGUgbW9kdWxlPC9saT4KCTxsaT48c3Ryb25nIHN0eWxlPSJjb2xvcjogcmVkIj5JbXBvcnRhbnQ6PC9zdHJvbmc+IGlmIHlvdSdyZSB1c2luZyBVUkwgUmV3cml0aW5nLCB5b3UgbXVzdCB1cGRhdGUgeW91ciAuaHRhY2Nlc3MgZmlsZSBhbmQgcmVwbGFjZToKCQk8dWw+CgkJCTxsaT48Y29kZT5SZWRpcmVjdE1hdGNoIDQwMyBeLiovbW9kdWxlcy8oLiopXC5waHA8L2NvZGU+JCZuYnNwO3dpdGg6PC9saT4KCQkJPGxpPjxjb2RlPlJlZGlyZWN0TWF0Y2ggNDAzIF4uKi9tb2R1bGVzLyg/IVRpbnlNQ0UvcmVzcG9uc2l2ZV9maWxlbWFuYWdlci9maWxlbWFuYWdlci8pLipcLnBocCQ8L2NvZGU+PC9saT4KCQkJPGxpPi4uLiBpbiBvcmRlciB0byBtYWtlIHRoZSBSZXNwb25zaXZlIEZpbGUgTWFuYWdlciB3b3JrIC0gSWYgeW91IGFscmVhZHkgZGlkIHNvbWUgY2hhbmdlcyBvbiB0aGF0IGxpbmUsIHBsZWFzZSB1cGRhdGUgdGhlIHJ1bGUgYWNjb3JkaW5nbHk8L2xpPgoJCTwvdWw+Cgk8L2xpPgoJPGxpPkNyZWF0ZSBhbmQgY29uZmlndXJlIHRoZSBhcHByb3ByaWF0ZSBwcm9maWxlcyBpbiA8ZW0+RXh0ZW5zaW9uczwvZW0+IC8gPGVtPlRpbnlNQ0UgV1lTSVdZRyBlZGl0b3I8L2VtPjwvbGk+Cgk8bGk+RG9uJ3QgZm9yZ2V0IHRvIGxpbmsgcHJvZmlsZXMgd2l0aCBiYWNrZW5kIHVzZXIgZ3JvdXBzIChvciBmcm9udGVuZCkgaW4gdGhlIFRpbnlNQ0UgcHJvZmlsZTwvbGk+Cgk8bGk+U2V0IFRpbnlNQ0UgYXMgeW91ciBXWVNJV1lHIGVkaXRvciBvZiBjaG9pY2UgaW4gJnF1b3Q7TXkgUHJlZmVyZW5jZXMmcXVvdDs8L2xpPgo8L3VsPgoKPHA+CglOb3RlIGFib3V0IHByb2ZpbGUgZWRpdGlvbjogdGhlIGJhY2tlbmQgdXNlciA8c3Ryb25nPm11c3QgaGF2ZTwvc3Ryb25nPiB0aGUgPGVtPk1hbmFnZSBUaW55TUNFIHByb2ZpbGVzPC9lbT4gcGVybWlzc2lvbiB0byBnZXQgdGhlIFRpbnlNQ0UgQWRtaW4gcGFnZS4KPC9wPgoKPGgzPkNhY2hpbmc6PC9oMz4KPHA+SW4gYW4gZWZmb3J0IHRvIGltcHJvdmUgcGVyZm9ybWFuY2UsIFRpbnlNQ0Ugd2lsbCBhdHRlbXB0IHRvIGNhY2hlIHRoZSBnZW5lcmF0ZWQgSmF2YVNjcmlwdCBmaWxlcyB1bmxlc3Mgc29tZXRoaW5nIGhhcyBjaGFuZ2VkLiBTYXZpbmcgYSBwcm9maWxlIG9yIGNsZWFyaW5nIHRoZSBDTVMgTWFkZSBTaW1wbGUgY2FjaGUgd2lsbCBhbHdheXMgcmVzZXQgdGhlIEpTIGNhY2hlIGZpbGUuPC9wPgoKPGgzPk1vZHVsZSBkZXZlbG9wZXJzOiBob3cgdG8gY3JlYXRlIGEgbmV3IGJ1dHRvbiBmb3IgeW91ciBtb2R1bGUgaW4gVGlueU1DRT88L2gzPgo8cD4KCVlvdSBtdXN0IGFkZCB0aHJlZSBmdW5jdGlvbnMgdG8geW91ciBtYWluIG1vZHVsZSBjbGFzcyAtIEV4YW1wbGUgZm9yIHRoZSBHYWxsZXJ5IG1vZHVsZToKPC9wPgoKPGNvZGU+PHByZT4KCWZ1bmN0aW9uIEhhc0NhcGFiaWxpdHkoJiMzNjtjYXBhYmlsaXR5LCAmIzM2O3BhcmFtcz1hcnJheSgpKSB7CgkJaWYgKCYjMzY7Y2FwYWJpbGl0eT09J1dZU0lXWUdJdGVtcycpIHJldHVybiB0cnVlOwoJCXJldHVybiBmYWxzZTsKCX0KCglmdW5jdGlvbiBHZXRXWVNJV1lHQnRuTmFtZSgpCgl7CgkJcmV0dXJuICdtb2R1bGVfZ2FsbGVyeSc7Cgl9CgoJZnVuY3Rpb24gR2V0V1lTSVdZR0J0bigmIzM2O3d5c2l3eWdfbW9kdWxlKQoJewoJCS8vIFRFU1QgQVJSQVkgRVhBTVBMRQoJCSYjMzY7aXRlbXMgPSBhcnJheSgKCQkJYXJyYXkoCgkJCQknbWVudV90ZXh0JyA9PiAnR2FsbGVyeSAxJywKCQkJCSdjb250ZW50JyA9PiAie0dhbGxlcnkgZGlyPSdkaXIxJ30iLCAvLyBFbXB0eSA9IG5vIGFjdGlvbiBvbiBjbGljawoJCQkJJ2NoaWxkcmVuJyA9PiBhcnJheSgKCQkJCQlhcnJheSgKCQkJCQkJJ21lbnVfdGV4dCcgPT4gJ1N1YkdhbGxlcnkgMS4xJywKCQkJCQkJJ2NvbnRlbnQnID0+ICJ7R2FsbGVyeSBkaXI9J3N1YmRpcjExJ30iCgkJCQkJCSdjaGlsZHJlbicgPT4gYXJyYXkoKSAvLyBZb3UgY2FuIGhhdmUgYXMgbWFueSBzdWJsZXZlbHMgYXMgeW91IG5lZWQKCQkJCQkpLAoJCQkJCWFycmF5KAoJCQkJCQknbWVudV90ZXh0JyA9PiAnU3ViR2FsbGVyeSAxLjInLAoJCQkJCQknY29udGVudCcgPT4gIntHYWxsZXJ5IGRpcj0nc3ViZGlyMTInfSIKCQkJCQkpLAoJCQkJCWFycmF5KAoJCQkJCQknbWVudV90ZXh0JyA9PiAnU3ViR2FsbGVyeSAxLjMnLAoJCQkJCQknY29udGVudCcgPT4gIntHYWxsZXJ5IGRpcj0nc3ViZGlyMTMnfSIKCQkJCQkpCgkJCQkpCgkJCSksCgkJCWFycmF5KAoJCQkJJ21lbnVfdGV4dCcgPT4gJ0dhbGxlcnkgMicsCgkJCQknY29udGVudCcgPT4gIntHYWxsZXJ5IGRpcj0nZGlyMid9IiwgLy8gRW1wdHkgPSBubyBhY3Rpb24gb24gY2xpY2sKCQkJCSdjaGlsZHJlbicgPT4gYXJyYXkoCgkJCQkJYXJyYXkoCgkJCQkJCSdtZW51X3RleHQnID0+ICdTdWJHYWxsZXJ5IDIuMScsCgkJCQkJCSdjb250ZW50JyA9PiAie0dhbGxlcnkgZGlyPSdzdWJkaXIyMSd9IgoJCQkJCSksCgkJCQkJYXJyYXkoCgkJCQkJCSdtZW51X3RleHQnID0+ICdTdWJHYWxsZXJ5IDIuMicsCgkJCQkJCSdjb250ZW50JyA9PiAie0dhbGxlcnkgZGlyPSdzdWJkaXIyMid9IgoJCQkJCSksCgkJCQkJYXJyYXkoCgkJCQkJCSdtZW51X3RleHQnID0+ICdTdWJHYWxsZXJ5IDIuMycsCgkJCQkJCSdjb250ZW50JyA9PiAie0dhbGxlcnkgZGlyPSdzdWJkaXIyMyd9IgoJCQkJCSkKCQkJCSkKCQkJKQoJCSk7CgoJCS8vIEJVSUxEIFRIRSBCVVRUT04gT0JKRUNUIFVTRUQgQlkgVEhFIFRpbnlNQ0UgTU9EVUxFCgkJaWYgKCYjMzY7d3lzaXd5Z19tb2R1bGUgPT0gJ1RpbnlNQ0UnKQoJCXsKCQkJJiMzNjtvYmogPSBuZXcgdGlueW1jZV9tb2R1bGVtZW51OwoJCQkmIzM2O29iai0+bW9kdWxlX25hbWUgPSAmIzM2O3RoaXMtPkdldE5hbWUoKTsKCQkJJiMzNjtvYmotPmJ1dHRvbl9uYW1lID0gJiMzNjt0aGlzLT5HZXRXWVNJV1lHQnRuTmFtZSgpOwoJCQkmIzM2O29iai0+dGl0bGUgPSAmIzM2O3RoaXMtPkxhbmcoJ3RpbnltY2VfYnV0dG9uX3BpY2tlcicpOwoJCQkmIzM2O29iai0+dG9vbHRpcCA9ICYjMzY7dGhpcy0+TGFuZygndGlueW1jZV9kZXNjcmlwdGlvbl9waWNrZXInKTsKCQkJJiMzNjtvYmotPmljb24gPSAnaW1hZ2UnOwoJCQkmIzM2O29iai0+aW1hZ2UgPSAmIzM2O3RoaXMtPkdldE1vZHVsZVVSTFBhdGgoKSAuICcvaW1hZ2VzL2ljb24uZ2lmJzsKCQkJJiMzNjtvYmotPm1lbnVfZW50cmllcyA9ICYjMzY7aXRlbXM7CgkJCSYjMzY7b2JqLT5tZW51X3NlY3Rpb24gPSAnaW5zZXJ0JzsKCgkJCXJldHVybiAmIzM2O29iajsKCQl9CgkJcmV0dXJuIGZhbHNlOwoJfQo8L3ByZT48L2NvZGU+Cgo8cD4KCVRoZSA8c3Ryb25nPkdldFdZU0lXWUdCdG4oKTwvc3Ryb25nPiBmdW5jdGlvbiBtdXN0IHJldHVybiBhIDxzdHJvbmc+dGlueW1jZV9tb2R1bGVtZW51PC9zdHJvbmc+IG9iamVjdCB3aXRoIGFuIGFycmF5IDxlbT5tZW51X2VudHJpZXM8L2VtPiBwcm9wZXJ0eS4KPC9wPgo8YnI+Cgo8aDM+TGljZW5zZSBpbmZvcm1hdGlvbnM8L2gzPgo8cD5UaGlzIG1vZHVsZSBpcyBmcmVlIHNvZnR3YXJlIC0geW91IGNhbiB1c2UgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAyIG9yIGFueSBsYXRlciB2ZXJzaW9uLjwvcD4KPHA+PHN0cm9uZz5Ib3dldmVyPC9zdHJvbmc+LCB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5yZXNwb25zaXZlZmlsZW1hbmFnZXIuY29tLyIgdGFyZ2V0PSJfYmxhbmsiPlJlc3BvbnNpdmUgRmlsZU1hbmFnZXI8L2E+IGlzIGxpY2Vuc2VkIHVuZGVyIGEgPGEgaHJlZj0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktbmMvMy4wLyIgdGFyZ2V0PSJfYmxhbmsiPkNyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tTm9uQ29tbWVyY2lhbCAzLjAgVW5wb3J0ZWQgTGljZW5zZTwvYT4uIFRoZSBUaW55TUNFIG1vZHVsZSBpbmNsdWRlcyBpdCA8c3Ryb25nPndpdGggdGhlIHBlcm1pc3Npb24gZnJvbSBBbGJlcnRvIFBlcmlwb2xsaTwvc3Ryb25nPiBnaXZlbiBvbiAyMDE2LTAxLTE5LiBUaGFuayB5b3UgQWxiZXJ0byEgPGEgaHJlZj0iaHR0cDovL3d3dy5yZXNwb25zaXZlZmlsZW1hbmFnZXIuY29tLyIgdGFyZ2V0PSJfYmxhbmsiPklmIHlvdSB3YW50IHRvIHN1cHBvcnQgdGhhdCBwcm9qZWN0LCBwbGVhc2UgY2hlY2sgdGhpcyBwYWdlIGFuZCBtYWtlIGEgZnJlZSBkb25hdGlvbi48L2E+PC9wPgoKPGgzPkhlbHAgYW5kIHN1cHBvcnQ8L2gzPgo8cD5XZSB0cmllZCB0byBleHBsYWluIGVhY2ggY29uZmlndXJhdGlvbiBvcHRpb24gb24gdGhlIHByb2ZpbGUgZWRpdGlvbiBBZG1pbiBwYWdlLiBQbGVhc2UgdXNlIHRoZSAiPyIgYnV0dG9ucyBuZWFyIGVhY2ggb3B0aW9uIHRvIGdldCBtb3JlIGluZm9ybWF0aW9ucy48L3A+Cgo8aDM+QnVnIHJlcG9ydCBvciBmZWF0dXJlIHJlcXVlc3Q8L2gzPgo8cD4KCUNoZWNrb3V0IHRoZSBDTVMgTWFkZSBTaW1wbGUgZm9yZ2U6IDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvdGlueW1jZSIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvdGlueW1jZTwvYT4KPC9wPgoKPGgzPkF1dGhvcnM8L2gzPgo8dWw+Cgk8bGk+TW9ydGVuIFBvdWxzZW46IDxhIGhyZWY9Im1haWx0bzptb3J0ZW5AcG91bHNlbi5vcmciPm1vcnRlbkBwb3Vsc2VuLm9yZzwvYT48L2xpPgoJPGxpPlJvbGYgVGphc3NlbnM6IDxhIGhyZWY9Im1haWx0bzpyb2xmQGNtc21hZGVzaW1wbGUub3JnIj5yb2xmQGNtc21hZGVzaW1wbGUub3JnPC9hPjwvbGk+Cgk8bGk+TWF0aGlldSBNdXRoczogPGEgaHJlZj0ibWFpbHRvOmNvbnRhY3RAYWlyZWxpYnJlLm5ldCI+Y29udGFjdEBhaXJlbGlicmUubmV0PC9hPjwvbGk+CjwvdWw+]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBNb3J0ZW4gUG91bHNlbiAoc2lsbWFyaWxsaW9uKSwgUm9sZiBUamFzc2VucyAocm9sZiksIE1hdGhpZXUgTXV0aHMgKGFpcmVsaWJyZSkgJmx0O2NvbnRhY3RAYWlyZWxpYnJlLmZyJmd0OzxiciAvPjxiciAvPlZlcnNpb246IDMuMy4yPGJyIC8+PGJyIC8+Q2hhbmdlIEhpc3Rvcnk6PGJyIC8+PGgzPlZlcnNpb25zIGZvciBDTVMgTWFkZSBTaW1wbGUgMi4yLjExIGFuZCAyLjMrIHdpdGggVGlueU1DRSA1KzwvaDM+Cjx1bD4KICAgIDxsaT4KICAgICAgICA8cD4KICAgICAgICAgICAgPHN0cm9uZz5WZXJzaW9uIDMuMy4yIChTaWxtYXJpbGxpb24pPC9zdHJvbmc+CiAgICAgICAgPHVsPgogICAgICAgICAgICA8bGk+VXBkYXRlZCBUaW55KE1DRSkgdG8gNS4zLjE8L2xpPgogICAgICAgICAgICA8bGk+Rml4ZWQgIzEyMzA4IHdoaWNoIGNhdXNlZCB3cm9uZ2x5IG5hbWVzIGNhY2hlZCBjb25maWcgZmlsZXMgdG8gYnJlYWsgc2Vzc2lvbi4gVGhhbmtzIHRvIFZlbGRlbiBmb3IgaXNvbGF0aW5nIGFuZCBzdWdnZXN0aW5nIGZpeCE8L2xpPgogICAgICAgICAgICA8bGk+PC9saT4KICAgICAgICA8L3VsPgogICAgICAgIDwvcD4KICAgIDwvbGk+CiAgPGxpPgogICAgPHA+CiAgICAgIDxzdHJvbmc+VmVyc2lvbiAzLjMuMTwvc3Ryb25nPgogICAgICA8dWw+CiAgICAgICAgPGxpPlVwZGF0ZWQgVGlueShNQ0UpIHRvIDUuMS4wPC9saT4KICAgICAgICA8bGk+TGFyZ2UgKCsybWIpIGZpbGVzIHVwbG9hZCBmaXg8L2xpPgogICAgICAgIDxsaT5TbWFsbCBxdWljayBmaXggZm9yIGR1cGxpY2F0ZSBjbXNtc19saW5rZXIgcGx1Z2luIGluIGNvbnRleHRtZW51PC9saT4KICAgICAgPC91bD4KICAgIDwvcD4KICA8L2xpPgogIDxsaT4KICAgIDxwPgogICAgICA8c3Ryb25nPlZlcnNpb24gMy4zPC9zdHJvbmc+CiAgICAgIDx1bD4KICAgICAgICA8bGk+U3RvcHMgdGhlICJiZXRhIiBjeWNsZSBhcyBpdCBkaWRuJ3QgbWFrZSBhbnkgc2Vuc2UgYW55bW9yZTwvbGk+CiAgICAgICAgPGxpPldvcmtzIGluIENNU01TIDIuMyAtIE1pbmltdW0gQ01TTVMgdmVyc2lvbiBpcyBub3cgMi4yLjExPC9saT4KICAgICAgICA8bGk+CiAgICAgICAgICBVcGRhdGVkIFRpbnlNQ0UgdG8gbWFqb3IgNS54IHZlcnNpb24gKDUuMC4xNSkgLSBJZiB5b3UgbWFkZSBzb21lIEpTIGN1c3RvbWl6YXRpb25zIHlvdSdsbCBoYXZlIHRvIGNoZWNrIGlmIGV2ZXJ5dGhpbmcgaXMgb2ssIGFuZC9vciB1cGRhdGUgeW91ciBUaW55TUNFIEpTIGZpbGUvdGVtcGxhdGUuCiAgICAgICAgPC9saT4KICAgICAgICA8bGk+CiAgICAgICAgICBTaG91bGQgd29yayB3aXRoIENTUyBmcm9tIHRoZSBEZXNpZ25NYW5hZ2VyIG9yIGZyb20gZmlsZXMgKENNU01TIDIuMyspCiAgICAgICAgPC9saT4KICAgICAgICA8bGk+UmVtb3ZlZCB0aGUgY29udGV4dF9tZW51IHBsdWdpbiBmcm9tIHRoZSBwbHVnaW5zIGxpc3Q6IGl0J3Mgbm93IGluIHRoZSBjb3JlLiBBZGRlZCBzb21lIGRvY3MgYW5kIHJlbW92ZWQgdGhlIGVuYWJsZS9kaXNhYmxlIG9mIHRoaXMgb3B0aW9uIChhbHdheXMgZW5hYmxlZCkuIElmIHlvdSBuZWVkIHRoZSBicm93c2VyIG5hdGl2ZSByaWdodC1jbGljaywgeW91IGNhbiBDVFJMICsgUmlnaHQgY2xpY2suPC9saT4KICAgICAgICA8bGk+Q29waWVkIHRoZSBjbXNtc19saW5rZXIgcGx1Z2luIGZyb20gdGhlIGxhdGVzdCBNaWNyb1RpbnksIGFuZCB1cGdyYWRlZCB0byB3b3JrIHdpdGggVGlueSA1Ky4gSWYgeW91IG5lZWQgdGhhdCBwbHVnaW4gaW4gdGhlIG1lbnViYXIsIHlvdSBtdXN0IG5vdyB1c2UgdGhlIGN1c3RvbSBtZW51YmFyIG9wdGlvbjwvbGk+CiAgICAgICAgPGxpPlVwZGF0ZWQgUmVzcG9uc2l2ZSBGaWxlIE1hbmFnZXIgOS4xNC4wIC0gTm93IHNoaXBwZWQgd2l0aCBUVUkgSW1hZ2UgRWRpdG9yIGluc3RlYWQgb2YgQWRvYmUgQXZpYXJ5PC9saT4KICAgICAgICA8bGk+CiAgICAgICAgICBOZXcgPGVtPmZpbGUtYmFzZWQgdGlueW1jZSB0ZW1wbGF0ZXM8L2VtPiBvcHRpb24gYXNpZGUgb2YgdGhlIERlc2lnbk1hbmFnZXIgb25lcy4gKHNlZSB0aGUgPGVtPnRlbXBsYXRlczwvZW0+IHByZWYgdGFiKS4KICAgICAgICA8L2xpPgogICAgICAgIDxsaT4KICAgICAgICAgIE1vdmVkIC8gcmVtb3ZlZCBzb21lIHByZWZzCiAgICAgICAgPC9saT4KICAgICAgPC91bD4KICAgIDwvcD4KICA8L2xpPgo8L3VsPgoKPGgzPlZlcnNpb25zIGZvciBDTVMgTWFkZSBTaW1wbGUgMi4qIHdpdGggVGlueU1DRSA0KzwvaDM+Cjx1bD4KICA8bGk+CiAgICA8cD4KICAgICAgPHN0cm9uZz5WZXJzaW9uIDMuMi1iZXRhNjwvc3Ryb25nPgogICAgICA8dWw+CiAgICAgICAgPGxpPlVwZGF0ZWQgVGlueU1DRSB0byA0LjguMDwvbGk+CiAgICAgICAgPGxpPlVwZGF0ZWQgdGhlIG1lc3NhZ2VzIG1lY2hhbmlzbSBmb3IgY21zbXMgMi4yLjY8L2xpPgogICAgICAgIDxsaT5VcGRhdGVkIFJlc3BvbnNpdmUgRmlsZSBNYW5hZ2VyIHRvIHY5LjEzLjEgLSBOb3cgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IHNob3VsZCBiZSBzYXZlZCBhbmQgcmUtb3BlbmVkPC9saT4KICAgICAgICA8bGk+UXVpY2sgZml4IGZvciB0aGUgdXBsb2FkIG9mID4ybWIgZmlsZXMgaW4gUkZNIC0gd29yayBpbiBwcm9ncmVzcywgcGxlYXNlIHRlc3QhPC9saT4KICAgICAgICA8bGk+KHNob3VsZCBiZSBidXQgdGVzdCkgZml4ZWQgZm9yIHRoZSBlbmdsaXNoIGxhbmd1YWdlIC5waHAgZmlsZSBwcm9ibGVtPC9saT4KICAgICAgPC91bD4KICAgIDwvcD4KICA8L2xpPgogIDxsaT4KICAgIDxwPgogICAgICA8c3Ryb25nPlZlcnNpb24gMy4yLWJldGE1PC9zdHJvbmc+CiAgICAgIDx1bD4KICAgICAgICA8bGk+VXBkYXRlZCBUaW55TUNFIHRvIDQuNy42PC9saT4KICAgICAgICA8bGk+VXBkYXRlZCBSZXNwb25zaXZlIEZpbGUgTWFuYWdlciB0byB2OS4xMi4yPC9saT4KICAgICAgICA8bGk+SWYgeW91ciBidWxsZXQgLyBvcmRlcmVkIGxpc3RzIGJ1dHRvbnMgYXJlIG1pc3NpbmcsIGFkZCB0aGUgPGVtPmxpc3RzPC9lbT4gcGx1Z2luIHRvIHlvdXIgdmFyaW91cyBwcm9maWxlczwvbGk+CiAgICAgIDwvdWw+CiAgICA8L3A+CiAgPC9saT4KCTxsaT4KCQk8cD4KCQkJPHN0cm9uZz5WZXJzaW9uIDMuMi1iZXRhNDwvc3Ryb25nPgoJCQk8dWw+CgkJCQk8bGk+VXBkYXRlZCB0aW55bWNlIHRvIDQuNi4zIC0gbm90ZSB0aGF0IElFIDgtOS0xMCBhcmUgbm8gbW9yZSBzdXBwb3J0ZWQ8L2xpPgoJCQkJPGxpPlVwZGF0ZWQgdG8gUmVzcG9uc2l2ZSBGaWxlIE1hbmFnZXIgdi4gOS4xMS4zPC9saT4KCQkJCTxsaT5DU1MgbWFuYWdlbWVudCB1cGdyYWRlOiBpZiB5b3UgYXJlIHVzaW5nIGEgY3VzdG9tIFRpbnlNQ0UgSlMgaW5pdCBzY3JpcHQsIHBsZWFzZSB1cGRhdGUgdGhlICdjb250ZW50X2NzcycgcGFydCBhY2NvcmRpbmcgdG8gdGhlIG9yaWdpbmFsIEpTIHRlbXBsYXRlPC9saT4KCQkJCTxsaT5Ob3cgdGhlIGRlbW8gSFRNTCBjb250ZW50IGlzIHNhdmVkIGR1cmluZyB0aGUgcHJvZmlsZSBzYXZlIC0gdGhpcyBpcyBhIGdsb2JhbCBwcmVmZXJlbmNlIGFjcm9zcyBhbGwgdGhlIHByb2ZpbGVzPC9saT4KCQkJCTxsaT5VcGdyYWRlIHNjcmlwdCBmaXggd3J0IHRhYmxlIG5hbWVzPC9saT4KCQkJCTxsaT5JbWFnZXMgLyBkb2N1bWVudHMgbGlua3MgZnJvbSB0aGUgUmVzcG9uc2l2ZSBmaWxlIG1hbmFnZXIgc2hvdWxkIG5vdCBhZGQgYSB0aW1lIHBhcmFtZXRlciAocGxlYXNlIGNsZWFyIHlvdXIgY2FjaGUgYW5kIHRlc3QpPC9saT4KCQkJCTxsaT5EaXNhYmxlIGJyb3dzZXIgY2FjaGluZywgZml4IGZvciBHYWxsZXJ5IG1vZHVsZSBwbHVnaW48L2xpPgoJCQkJPGxpPkxhbmd1YWdlcyBmaXhlcyAtIEJSIzExMjg5PC9saT4KCQkJCTxsaT5WYXJpb3VzIGJ1ZyBmaXhlczwvbGk+CgkJCTwvdWw+CgkJPC9wPgoJPC9saT4KCTxsaT4KCQk8cD4KCQkJPHN0cm9uZz5WZXJzaW9uIDMuMS40PC9zdHJvbmc+CgkJCTx1bD4KCQkJCTxsaT5CdWcgZml4IHdydCBmaWxlbXRpbWUgd2FybmluZyB3aGVuIHRoZSBKUyBjb25maWd1cmF0aW9uIGRvZXNuJ3QgZXhpc3Q8L2xpPgoJCQkJPGxpPkJ1ZyBmaXggd3J0IFJGTSBmaWxlL2RpciBwZXJtaXNzaW9ucyAoNzY2IGluc3RlYWQgb2YgNzU1KTwvbGk+CgkJCTwvdWw+CgkJPC9wPgoJPC9saT4KICA8bGk+CiAgICA8cD4KICAgICAgPHN0cm9uZz5WZXJzaW9uIDMuMS4zPC9zdHJvbmc+CiAgICA8L3A+CiAgICA8dWw+CiAgICAgIDxsaT5GaXhlZCBzb21lIGJ1Z3MgYW5kIHNlY3VyaXR5IGlzc3VlczwvbGk+CiAgICAgIDxsaT5GaXhlZCBidWcgMTEwMDUgOiBUaW55TUNFIGphdmFzY3JpcHQgZmlsZSBpcyByZWdlbmVyYXRlZCB3aGVuIGEgc3R5bHNoZWV0IGhhcyBiZWVuIHVwZGF0ZWQ8L2xpPgogICAgICA8bGk+VXBkYXRlZCBUaW55TUNFIHRvIDQuMy4xMTwvbGk+CiAgICAgIDxsaT5VcGRhdGVkIFJlc3BvbnNpdmVGaWxlTWFuYWdlciB0byB2ZXJzaW9uIDkuMTAuMTwvbGk+CiAgICA8L3VsPgogIDwvbGk+CiAgPGxpPgogICAgPHA+PHN0cm9uZz5WZXJzaW9uIDMuMS4yPC9zdHJvbmc+PC9wPgogICAgPHVsPgogICAgICA8bGk+SW1wcm92ZWQgUmVzcG9uc2l2ZSBmaWxlIG1hbmFnZXIgY29uZmlndXJhdGlvbiBvbiBzdWJkaXIgaW5zdGFsbHMgKHRoYW5rcyB0byBBbGJlcnRvIFBlcmlwb2xsaSkuIEF2aWFyeSBzaG91bGQgbm93IHdvcmsgb24gbG9jYWxob3N0IGluc3RhbGxzLjwvbGk+CiAgICAgIDxsaT5Db3JyZWN0ZWQgY2hhbmdlbG9nIHZlcnNpb25zIGVycm9yPC9saT4KICAgIDwvdWw+CiAgPC9saT4KICA8bGk+CiAgICA8cD48c3Ryb25nPlZlcnNpb24gMy4xLjE8L3N0cm9uZz48L3A+CiAgICA8dWw+CiAgICAgIDxsaT5CdWcgZml4IHJlZ2FyZGluZyB0byBBdmlhcnkgd2hlbiBDTVMgTWFkZSBTaW1wbGUgaXMgaW5zdGFsbGVkIGluIGEgc3ViZGlyPC9saT4KICAgICAgPGxpPlVwZ3JhZGVkIHRvIFRpbnlNQ0UgNC4zLjQ8L2xpPgogICAgPC91bD4KICA8L2xpPgogIDxsaT4KICAgIDxwPjxzdHJvbmc+VmVyc2lvbiAzLjE8L3N0cm9uZz48L3A+CiAgICA8dWw+CiAgICAgIDxsaT5VcGdyYWRlZCB0byBUaW55TUNFIDQuMy4zPC9saT4KICAgICAgPGxpPkFkZCBhbiBvcHRpb24gdG8gdXNlIHJlbGF0aXZlIG9yIGFic29sdXRlIFVSTHMgZm9yIGltYWdlcyBvciBsaW5rczwvbGk+CiAgICAgIDxsaT5BZGQgYW4gb3B0aW9uIHRvIHVzZSB0aGUgaW1hZ2UgYWR2YW5jZWQgdGFiIGZvciBzdHlsZSwgYm9yZGVyIG9yIHNwYWNpbmcuPC9saT4KICAgIDwvdWw+CiAgPC9saT4KICA8bGk+CiAgICA8cD48c3Ryb25nPlZlcnNpb24gMy4wPC9zdHJvbmc+PC9wPgogICAgPHA+Q29tcGxldGUgcmV3cml0ZSBmb3IgQ01TIE1hZGUgU2ltcGxlIDIuMSBhbmQgdGhlIG5ldyBUaW55TUNFIHZlcnNpb24gNDwvcD4KICAgIDxwPlBsZWFzZSBub3RlIHRoYXQgPHN0cm9uZyBzdHlsZT0iY29sb3I6ICNlMDAiPnRoZSB1cGdyYWRlIHNjcmlwdCB3aWxsIHRyeSB0byBrZWVwIHNvbWUgb2YgeW91ciBwcmV2aW91cyBUaW55TUNFIHByZWZlcmVuY2VzLCBidXQgd2lsbCByZW1vdmUgc29tZSBvdGhlcnM8L3N0cm9uZz4uIDxzdHJvbmcgc3R5bGU9ImNvbG9yOiAjZTAwIj5Zb3UgTVVTVCBjb25maWd1cmUgdGhlIGVkaXRvciBwcm9maWxlcyByaWdodCBhZnRlciB0aGUgdXBncmFkZSBhbmQgbWFrZSBzb21lIHVzZXIgdGVzdHM8L3N0cm9uZz4uPC9wPgogICAgPHA+UGxlYXNlIGJhY2t1cCB5b3VyIGZpbGVzIGFuZCBkYXRhYmFzZSBiZWZvcmUgdXBncmFkaW5nLjwvcD4KCiAgICA8aDM+V2hhdCBkaWQgY2hhbmdlPzwvaDM+CiAgICA8cD4KICAgICAgRXZlcnl0aGluZy4uLiB3ZSBkaWQgd3JpdGUgdGhhdCBuZXcgdmVyc2lvbiBmcm9tIHNjcmF0Y2guIFdoYXQgeW91J2xsIGZpbmQgaW5zaWRlOgogICAgICA8dWw+CiAgICAgICAgPGxpPlByb2ZpbGUgbWFuYWdlbWVudDogY3JlYXRlIGFzIG11Y2ggcHJvZmlsZXMgYXMgeW91IHdhbnQsIGFuZCBsaW5rIHRoZW0gdG8geW91IHVzZXJzIGdyb3VwcyBhbmQvb3IgdG8gZnJvbnRlbmQgdXNlcnM8L2xpPgogICAgICAgIDxsaT5Mb3RzIG9mIGN1c3RvbWl6YXRpb24gb3B0aW9uczogdG9vbGJhciwgbWVudWJhciwgZXh0ZXJuYWwgbW9kdWxlcywgY3VzdG9tIHN0eWxlcywgLi4uPC9saT4KICAgICAgICA8bGk+VXNlcyB0aGUgaW50ZXJuYWwgcGFnZSBsaW5rZXIgZnJvbSB0aGUgTWljcm9UaW55IG1vZHVsZS48L2xpPgogICAgICAgIDxsaT5FbWJlZHMgdGhlIHBvd2VyZnVsIDxhIGhyZWY9Imh0dHA6Ly93d3cucmVzcG9uc2l2ZWZpbGVtYW5hZ2VyLmNvbS8iIHRhcmdldD0iX2JsYW5rIj5SZXNwb25zaXZlIEZpbGUgTWFuYWdlcjwvYT4gdGhhbmtzIHRvIGl0cyBhdXRob3IgQWxiZXJ0byBQZXJpcG9sbGkuIE5vdGU6IGZvciBzZWN1cml0eSByZWFzb25zLCB0aGUgUmVzcG9uc2l2ZSBGaWxlIE1hbmFnZXIgd2lsbCBub3QgYmUgYXZhaWxhYmxlIHRvIHRoZSBmcm9udGVuZCB1c2VyczwvbGk+CiAgICAgICAgPGxpPkFiaWxpdHkgdG8gdXNlIGFuIGV4dGVybmFsIGphdmFzY3JpcHQgdGVtcGxhdGUgZmlsZSBmcm9tIHRoZSBEZXNpZ25NYW5hZ2VyIGluc3RlYWQgb2YgdGhlIHN0b2NrIEpTIGZpbGUgLSBUaGlzIHBlcm1pdHMgYSBjb21wbGV0ZSBjdXN0b21pemF0aW9uIG9mIHRoZSBpbml0IHNjcmlwdC48L2xpPgogICAgICAgIDxsaT5DdXN0b21pemFibGUgYXBwZWFyYW5jZSBieSBzcGVjaWZ5aW5nIGEgQ1NTIGRlc2lnbiB0byB1c2UgZm9yIHRoZSBlZGl0b3IuPC9saT4KICAgICAgPC91bD4KICAgIDwvcD4KICAgIDxwPgogICAgICBIb3BlIHlvdSdsbCBlbmpveSBpdCA6KQogICAgPC9wPgoKICAgIDxwPgogICAgICBXZSBuZWVkIGhlbHAgdG8gdGVzdCB0aGUgbW9kdWxlIGFuZCBpbXByb3ZlIGl0LiBQbGVhc2UgZ2l2ZSB1cyBmZWVkYmFjayB0aHJvdWdoIHRoZSBDTVNNUyBidWcgcmVwb3J0IHN5c3RlbSAoPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9idWcvbGlzdC8xMiIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvYnVnL2xpc3QvMTI8L2E+KQogICAgPC9wPgogICAgPHA+CiAgICAgIER1cmluZyB0aGUgdXBncmFkZSBwcm9jZXNzLCB0aGUgbW9kdWxlIHdpbGwgcmVtb3ZlIHlvdXIgb2xkIFRpbnlNQ0Ugb3B0aW9ucy9jb25maWd1cmF0aW9ucy4gUGxlYXNlIGtlZXAgYSBiYWNrdXAgaWYgeW91IG5lZWQgdG8gY2hlY2sgeW91ciBvbGQgY29uZmlndXJhdGlvbiBsYXRlci4KICAgIDwvcD4KICAgIDxwPgogICAgICBXZSB3aWxsIG5vdCBiZSByZXNwb25zaWJsZSBvZiBhbnkgZGF0YSBsb3NzLiBQbGVhc2UgYWx3YXlzIGRvIGJhY2t1cCB5b3VyIG9sZCBmaWxlcyBiZWZvcmUgdXBncmFkaW5nLgogICAgPC9wPgoKICA8L2xpPgo8L3VsPgo8YnI+PGJyPgoKPGhyPgo8aDM+T2xkZXIgdmVyc2lvbnMgZm9yIENNUyBNYWRlIFNpbXBsZSAxLiogc2VyaWVzPC9oMz4KPHVsPgo8bGk+CiAgICA8cD48c3Ryb25nPlZlcnNpb24gMi45LjEyPC9zdHJvbmc+PC9wPgogICAgPHA+VXBkYXRlZCB0byBUaW55TUNFIDMuNS44PC9wPgo8L2xpPgo8bGk+Cgk8cD48c3Ryb25nPlZlcnNpb24gMi45LjExPC9zdHJvbmc+PC9wPgoJPHA+VXBkYXRlZCB0byBUaW55TUNFIDMuNS42PC9wPgoJPHA+UmVzdG9yZWQgdGhlIE5ld2xpbmUtc3R5bGUgb3B0aW9uICZsdDtwJmd0OyBvciAmbHQ7YnImZ3Q7PC9wPgo8L2xpPgo8bGk+CiAgICA8cD48c3Ryb25nPlZlcnNpb24gMi45LjEwLjE8L3N0cm9uZz48L3A+CiAgICA8cD5GaXhlZCBzdHVwaWQgY29uZmlnLWVycm9yczwvcD4KPC9saT4KPGxpPgogICAgPHA+PHN0cm9uZz5WZXJzaW9uIDIuOS4xMDwvc3Ryb25nPjwvcD4KICAgIDxwPlVwZGF0ZWQgdG8gVGlueU1DRSAzLjUuNTwvcD4KICAgIDxwPlVwZGF0ZWQgdG8gVGlueU1DRSAzLjUuNC4xIChmaXhpbmcgc2hpZnQtQSk8L3A+CiAgICA8cD5SZW1vdmVkIGNvZGUgcmVsYXRlZCB0byB0aGUgb2Jzb2xldGUgZm9yY2VfcC9icl9uZXdsaW5lczwvcD4KICAgIDxwPkFkZGVkIGFuIG9wdGlvbiB0byB1c2UgdGhlIGh0bWw1IHNjaGVtZTwvcD4KPC9saT4KPGxpPgogICAgPHA+PHN0cm9uZz5WZXJzaW9uIDIuOS45PC9zdHJvbmc+PC9wPgogICAgPHA+VXBkYXRlZCB0byBUaW55TUNFIDMuNS40PC9wPgogICAgPHA+PC9wPgogICAgPHA+PC9wPgo8L2xpPgo8bGk+CiAgPHA+PHN0cm9uZz5WZXJzaW9uIDIuOS44PC9zdHJvbmc+PC9wPgogIDxwPlVwZGF0ZWQgdG8gVGlueU1DRSAzLjQuOTwvcD4KICA8cD5NYWRlIGZpbGVwaWNrZXIgd29yayB3aXRoIGRvdHMgaW4gdGhlIG5hbWUsIGZpeGVzICM3NzUyLCB0aGFua3MhPC9wPgogIDxwPlN0cmlwcyBvZmYgc29tZSBwaHAgcHV0IGludG8gdGhlIHN0eWxlc2hlZXQgYnkgc21hcnR5LCBiYWQgc21hcnR5ISAjNzYzNjwvcD4KICA8cD5GaXhlZCBzb20gbm90aWNlczwvcD4KCjwvbGk+CjxsaT4KICAgIDxwPjxzdHJvbmc+VmVyc2lvbiAyLjkuNzwvc3Ryb25nPjwvcD4KICAgIDxwPlVwZGF0ZWQgdG8gVGlueU1DRSAzLjQuODwvcD4KPC9saT4KICA8bGk+CiAgICA8cD48c3Ryb25nPlZlcnNpb24gMi45LjY8L3N0cm9uZz48L3A+CiAgICA8cD5CdWdyZXBvcnQgIzc0MjUgLSBTbWFydHkgZXJyb3JzIGluICZxdW90ZTtBYm91dCB0aGUgVGlueU1DRSBtb2R1bGUmcXVvdGU7PC9wPgogICAgPHA+Rml4ZWQgRmlsZVBpY2tlci1idWdzLi4uIHdlbGNvbWUgYmFjayB0byBhIHdvcmtpbmcgc3RhdGUhPC9wPgogIDwvbGk+CiAgPGxpPgogICAgPHA+PHN0cm9uZz5WZXJzaW9uIDIuOS41PC9zdHJvbmc+PC9wPgogICAgPHA+VXBkYXRlZCB0byBUaW55TUNFIDMuNC43PC9wPgogIDwvbGk+CiAgPGxpPgogICAgPHA+PHN0cm9uZz5WZXJzaW9uIDIuOS40PC9zdHJvbmc+PC9wPgogICAgPHA+VXBkYXRlZCB0byBUaW55TUNFIDMuNC42PC9wPgogICAgPHA+TW9yZSAxLjEwLWZpeGVzIChvbmx5IHVzYWJsZSB3aXRoIDEuMTAgb3IgbGF0ZXIgbm93KTwvcD4KICAgIDxwPlJlbW92ZWQgc3RhcnQvc3RvcEV4cGFuZC1zdHVmZiBhcyB0aGV5IGFyZSBub3QgaW4gdGhlcmUgYW55bW9yZS48L3A+CiAgPC9saT4KICA8bGk+CiAgICA8cD48c3Ryb25nPlZlcnNpb24gMi45LjM8L3N0cm9uZz48L3A+CiAgICA8cD5GaXhlcyB0byAxLjEwLWNvbXBhdGliaWxpdHkgKG1vZHVsZWxpc3QgdHJhdmVyc2VsKTwvcD4KICA8L2xpPgogIDxsaT4KICAgIDxwPjxzdHJvbmc+VmVyc2lvbiAyLjkuMjwvc3Ryb25nPjwvcD4KICAgIDxwPlRpbnlNQ0UgdXBkYXRlZCB0byAzLjQuNDwvcD4KICAgIDxwPjwvcD4KICAgIDxwPjwvcD4KICA8L2xpPgogIDxsaT4KICAgIDxwPjxzdHJvbmc+VmVyc2lvbiAyLjkuMTwvc3Ryb25nPjwvcD4KICAgIDxwPlRpbnlNQ0UgdXBkYXRlZCB0byAzLjQuMy4yPC9wPgogICAgPHA+Rml4ZWQgdXJscyB0byBwbHVnaW4tZG9jczwvcD4KICAgIDxwPjwvcD4KICA8L2xpPgogIDxsaT4KICAgIDxwPjxzdHJvbmc+VmVyc2lvbiAyLjkuMDwvc3Ryb25nPjwvcD4KICAgIDxwPlRpbnlNQ0UgdXBkYXRlZCB0byAzLjQuMjwvcD4KICAgIDxwPmNtc19zZWxmbGluay1zdHlsZSBsaW5rcyBzaG91bGQgbm93IHdvcmsgYmV0dGVyPC9wPgogICAgPHA+Rml4ZWQgYSBidWcgd2l0aCBpbWFnZXMgY29udGFpbmluZyBmb3JlaWduIGNoYXJzICgjNDU4NSkgdGhhbmtzIHRvIGN2b2d0PC9wPgogIDwvbGk+CgogIDxsaT4KCiAgPHA+PHN0cm9uZz5WZXJzaW9uIDIuOC4zPC9zdHJvbmc+PC9wPgogIDxwPlJlbW92ZSBjb21tZW50cyBmcm9tIHN0dWZmIGluamVjdGVkIGludG8gaGVhZC48L3A+CiAgPHA+Rml4ZWQgYSBidWcgaW4gR2VybWFuIGxhbmcgZmlsZSBicmVha2luZyBhZHZhbmNlZCBmb3JtPC9wPgogIDxwPjwvcD4KICA8L2xpPgoKICA8bGk+CiAgPHA+PHN0cm9uZz5WZXJzaW9uIDIuOC4yPC9zdHJvbmc+PC9wPgogIDxwPkZpeGVkIHRoZSB0cnVuY2F0aW9uIG9mIHV0ZjgtZW5jb2RlZCBtZW51dGV4dHMgaW4gY21zbGlua2VyPC9wPgogIDwvbGk+CiAgPGxpPgogIDxwPjxzdHJvbmc+VmVyc2lvbiAyLjguMTwvc3Ryb25nPjwvcD4KICA8cD5NaW5vciBmaXggaW4gZXhwcmVzc2lvbiB1c2VkIHRvIHRlc3QgaWYgZnJvbnRlbmQgd3lzaXd5ZyB3YXMgYWN0aXZlLjwvcD4KICA8L2xpPgogIDxsaT4KICA8cD5GaXhlZCB0aGF0IGFkbWluLXRlbXBsYXRlIHdhcyBzaG93biBhZnRlciB1c2luZyBmaWxlb3BzIGluIGZpbGVwaWNrZXI8L3A+CiAgPHA+U29tZSBmaXhlcyB0byBjbXNsaW5rZXIgZHJvcGRvd24gd2hlbiBlbnRyaWVzIGhhZCBub24tVVMgY2hhcnM8L3A+CiAgPHA+UmVpbnRyb2R1Y2VkIHN0eWxlc2hlZXQucGhwIGVudHJ5cG9pbnQgYXMgdGlueSBkb2VzIG5vdCBzdXBwb3J0IGxvYWRpbmcgZnJvbSB1cmxzIHdpdGggY29tbWFzIGluIHRoZW0uLi48L3A+CiAgPHA+UmVtb3ZlZCBzb21lIGRlYnVnZ2lub3V0cHV0IGluIGZpbGVwaWNrZXI8L3A+CiAgPC9saT4KPGxpPgogIDxwPjxzdHJvbmc+VmVyc2lvbiAyLjguMDwvc3Ryb25nPjwvcD4KICA8cD5SZXdyb3RlIHRlc3QtZWRpdG9yLiBNdWNoIG5pY2VyIEkgdGhpbmsuPC9wPgogIDxwPlJlbW92ZWQgbGFzdCBub24tY21zIGVudHJ5cG9pbnQsIGZpbGVwaWNrZXI8L3A+CiAgPHA+SW1hZ2V1cGxvYWRpbmcgbm93IGhvbmVycyB0aGUgc2l0ZS10aHVtYm5haWxzaXplIHNldHRpbmc8L3A+CiAgPHA+VXBsb2FkaW4gbm9uLWltYWdlcyB3aGVuIGluIGltYWdlc2VsZWN0b3Igbm93IHdvcmtzPC9wPgogIDxwPkdlbmVyYXRpb24gdGh1bWJuYWlscyB3aGVuIHVwbG9hZGluZyBpbWFnZXMgcmlnaHQgYWZ0ZXIgaW5zdGFsbGF0aW9uIGZpeGVkPC9wPgogIDxwPlVwZGF0ZWQgdG8gVGlueSAzLjMuOS4yPC9wPgo8L2xpPgo8bGk+CiAgPHA+PHN0cm9uZz5WZXJzaW9uIDIuNy40PC9zdHJvbmc+PC9wPgogIDxwPlVwZGF0ZWQgdG8gVGlueSAzLjMuOTwvcD4KICA8cD5QcmVwYXJlZCBtb2R1bGUgZm9yIDEuOS1zZXJpZXM8L3A+CiAgPHA+R2VuZXJhbCBjb2RlLWNsZWFudXBzPC9wPgogIDxwPkFkZGVkIGFuIG9wdGlvbiB0byBhdm9pZCBUaW55J3MgbGlua2NvbnZlcnNpb24sIG1ha2VzIHNtYXJ0eSBpbiB1cmxzIHBvc3NpYmxlPC9wPgogIDxwPkFkZGVkIGFuIG9wdGlvbmFsIGFkZGl0aW9uIHRvIHRoZSBvdXRwdXQgb2YgdGhlIENNU0xpbmtlciwgYm90aCBpbiBzZWxmbGluayBvciBocmVmIG1ldGhvZDwvcD4KPC9saT4KPGxpPgogIDxwPjxzdHJvbmc+VmVyc2lvbiAyLjcuMzwvc3Ryb25nPjwvcD4KICA8cD5Ob3cgaGFuZGxlcyB0aGUgU21hcnR5LXByb2Nlc3NlZCBmZWF0dXJlcyBvZiB0aGUgbmV3IGNtc19zdHlsZXNoZWV0LXN0eWxlIHRhZzwvcD4KICA8cD5GaXhlcyBwYXRocyB3aGVuIHVzaW5nIGludGVybmFsIHByZXR0eSB1cmxzPC9wPgo8L2xpPgo8bGk+CiAgPHA+PHN0cm9uZz5WZXJzaW9uIDIuNy4yPC9zdHJvbmc+PC9wPgogIDxwPlVwZGF0ZWQgdG8gVGlueSAzLjMuODwvcD4KICA8cD5BZGRlZCBhIG1pc3NpbmcgbGFuZ3N0cmluZzwvcD4KICA8cD5NYWRlIHN0YXRpYyBjb25maWcgdGhlIGRlZmF1bHQgYW5kIG1hZGUgc3VyZSBpdCBnZXRzIHJld3JpdHRlbiBldmVyeSB0aW1lLjwvcD4KPC9saT4KPGxpPgogIDxwPjxzdHJvbmc+VmVyc2lvbiAyLjcuMTwvc3Ryb25nPjwvcD4KICA8cD5VcGRhdGVkIHRvIFRpbnkgMy4zLjUuMTwvcD4KPC9saT4KPGxpPgogIDxwPjxzdHJvbmc+VmVyc2lvbiAyLjcuMDwvc3Ryb25nPjwvcD4KICA8cD5JbXBsZW1lbnRlZCBhIHBsdWdpbi1zeXN0ZW0sIHNvIG90aGVyIG1vZHVsZXMgY2FuIHJlZ2lzdGVyIHBsdWdpbnMgaW4gVGlueSBhbGxvd2luZyBzdHVmZiBsaWtlIHZlcnkgZWFzeSBpbnNlcnRpb24gb2YgdGFncyBldGMuPC9wPgogIDxwPkltcGxlbWVudGVkIGFuIG9wdGlvbiB0byBhbGxvdyBpbnBsYWNlIHJlc2l6aW5nIG9mIHRoZSBlZGl0b3IgZmllbGQ8L3A+CiAgPHA+VXBkYXRlZCB0byBUaW55IDMuMy4zPC9wPgo8L2xpPgo8bGk+CiAgPHA+PHN0cm9uZz5WZXJzaW9uIDIuNi42PC9zdHJvbmc+PC9wPgogIDxwPlVwZGF0ZWQgdG8gVGlueSAzLjMuMjwvcD4KICA8cD5GaXhlcyBpbnRlcm5hbCBsaW5rZXIgc28gaXQgaG9uZXJzIHVzZV9oaWVyYXJjaHk9ZmFsc2U8L3A+CiAgPHA+Rml4ZWQgZGVmYXVsdCB2YWx1ZSBmb3IgY21zbGlua2Vyc3R5bGU8L3A+CiAgPHA+TmV3bGluZSBpbiBtZW51dGV4dCBubyBsb25nZXIgYnJlYWtzIHRpbnkgKGNvdWxkIGNvbWUgZnJvbSBwYXN0ZXMpPC9wPgo8L2xpPgo8bGk+CiAgPHA+PHN0cm9uZz5WZXJzaW9uIDIuNi41PC9zdHJvbmc+PC9wPgogIDxwPlVwZGF0ZWQgdG8gVGlueSAzLjMuMTwvcD4KICA8cD5OZXcgb3B0aW9uIHRvIGFsbG93IGJhc2ljIEZNIG9wZXJhdGlvbnMgZXZlbiBpZiBNb2RpZnkgRmlsZXMgcGVybWlzc2lvbiBpcyBub3QgY2hlY2tlZDwvcD4KPC9saT4KPGxpPgogIDxwPjxzdHJvbmc+VmVyc2lvbiAyLjYuNDwvc3Ryb25nPjwvcD4KICA8cD5Ob3cgbm90IGRlcGVuZGluZyBvbiBhZG1pbi10aGVtZSdzIGFjb25zIGFueW1vcmUuIFRoYW5rcyBOdW5vPC9wPgogIDxwPlVwZGF0ZWQgdG8gVGlueSAzLjMtZmluYWw8L3A+CiAgPHA+Rml4ZWQgc3BlbGxjaGVja2VyIHdoaWNoIGJyb2tlIGluIDIuNi4zLiBTb3JyeSEgTXkgZmF1bHQuLi48L3A+CjwvbGk+CjxsaT4KICA8cD48c3Ryb25nPlZlcnNpb24gMi42LjM8L3N0cm9uZz48L3A+CiAgPHA+QWRkZWQgYW4gb3B0aW9uIHRvIGdlbmVyYXRlIGNtcy1jb21wYXRpYmxlIHRodW1ibmFpbHMgd2hlbiB1cGxvYWRpbmcgZmlsZXMgdGhvdWdoIHRoZSBmaWxlcGlja2VyLjwvcD4KICA8cD5VcGRhdGVkIHRvIFRpbnkgMy4zcmMxPC9wPgo8L2xpPgo8bGk+CiAgPHA+PHN0cm9uZz5WZXJzaW9uIDIuNi4yPC9zdHJvbmc+PC9wPgogIDxwPkNoYW5nZWQgdGhlIHdheSAtc3R5bGUgaW50ZXJuYWwgbGlua3Mgd2FzIHJlbmRlcmVkLiBGaXhlZCB0aGUgPGltZz4tc2l0dWF0aW9uLiBUaGFua3MgZm9yIHRoZSBzb2x1dGlvbiBDYWxndXkhPC9wPgogIDxwPlVwZGF0ZWQgdG8gVGlueSAzLjMtYmV0YTI8L3A+CjwvbGk+CjxsaT4KICA8cD48c3Ryb25nPlZlcnNpb24gMi42LjEuMTwvc3Ryb25nPjwvcD4KICA8cD5GaXhlZCBwcmVzZW50YXRpb24gb2YgdGhlIG5ld2x5IHNhdmVkIHJlc3RyaWN0IGRpciBvcHRpb248L3A+CjwvbGk+CjxsaT4KICA8cD48c3Ryb25nPlZlcnNpb24gMi42LjE8L3N0cm9uZz48L3A+CiAgPHA+SW1wbGVtZW50ZWQgcmVzdHJpY3RpbmcgdXNlcnMgb2YgYmFzaWMgcHJvZmlsZSB0byBhIGRpciBjYWxsZWQgYnkgdGhlaXIgdXNlcm5hbWU8L3A+CiAgPHA+UmVuYW1lZCBhIGNvdXBsZSBvZiBmaWxlcyB0byBwcm9maWxlcyBpbnN0ZWFkIG9mIHRvb2xiYXJzLiBTZWVtZWQgbW9yZSBsb2dpY2FsIG5vdy48L3A+CiAgPHA+SW1wbGVtZW50ZWQgZGVsZXRpb24gb2YgKGVtcHR5LW9ubHkpIHN1YmRpcnMgaW4gZmlsZXBpY2tlcjwvcD4KICA8cD5SZXdyb3RlIGV4dHJhY29uZmlnIGxvZ2ljIHNvIG11bHRpbGluZS1zdHVmZiBhcmUgcG9zc2libGU8L3A+CjwvbGk+CjxsaT4KICA8cD48c3Ryb25nPlZlcnNpb24gMi42LjA8L3N0cm9uZz48L3A+CiAgPHA+Tm93IGluY2x1ZGVzIHNwZWxsY2hlY2tlciBmdW5jdGlvbmFsaXR5LCB0aGFua3MgTnVubyE8L3A+CjwvbGk+CjxsaT4KICA8cD48c3Ryb25nPlZlcnNpb246IDIuNS42PC9zdHJvbmc+PC9wPgogIDxwPkZpeGVkIHRoZSBjbXNsaW5rZXJzdHlsZSBvcHRpb24sIHNvIGl0IGRvZXMgd2hhdCBpdCBzaG91bGQ8L3A+CiAgPHA+UmVlbmFibGVkIExpdGhhdW5pYW4gbGFuZ3VhZ2U8L3A+CjwvbGk+CjxsaT4KICA8cD48c3Ryb25nPlZlcnNpb246IDIuNS41IChjYWxndXkxMDAwKTwvc3Ryb25nPjwvcD4KICA8cD5Nb2RpZmllZCB0byB3b3JrIHdpdGggc2Vzc2lvbi51c2VfY29va2llcyA9IDA8L3A+CiAgPHA+VXBkYXRlZCB0byBUaW55IDMuMi43LCBidWdmaXhpbiByZWxlYXNlIChzaWxtYXJpbGxpb24pPC9wPgogIDxwPk5vdyBjaGVjayBmb3IgaWxsZWdhbCBjaGFycyBpbiBmaWxlbmFtZSB3aGVuIHVwbG9hZGluZyBmaWxlcy48L3A+CjwvbGk+CjxsaT4KICA8cD48c3Ryb25nPlZlcnNpb246IDIuNS40PC9zdHJvbmc+PC9wPgogIDxwPlJldmlzZWQgZ2xvYmFsICRjbXMsIHByZXBhcmluZyBmb3IgMS43LWFwaTwvcD4KICA8cD5GaXhlZCBidWcgZGlzYWJsaW5nIHRoZSB3eXNpd3lnIHRvZ2dsZWJveCB1cG9uIHNhdmluZyB0aGUgYmFzaWMgdG9vbGJhciBwcm9maWxlPC9wPgogIDxwPkZpeGVkIGJ1ZyB3aXRoIHRydW5jYXRlZCBtZW51dGV4dHMgd2l0aCBxdW90ZXMgaW4gdGhlbSBub3QgZ2V0dGluZyBwcm9wZXJseSBlc2NhcGVkLCBicmVha2luZyBjb25maWc8L3A+CiAgPHA+VXBkYXRlZCB0byBsYXRlc3QgVGlueU1DRSAzLjIuNiwgaW50cm9kdWNpbmcgYSB3b3JkY291bnQtcGx1Z2luPC9wPgo8L2xpPgo8bGk+CiAgPHA+PHN0cm9uZz5WZXJzaW9uOiAyLjUuMzwvc3Ryb25nPjwvcD4KICA8cD5SZXdyb3RlIGZyb250ZW5kIGZ1bmN0aW9uYWxpdHkgdG8gdXNlIGV2ZW50cyBpbnN0ZWFkIG9mIGNhbGxiYWNrcywgcHJlcGFyaW5nIGZvciAxLjctYXBpPC9wPgogIDxwPjwvcD4KPC9saT4KPGxpPgogIDxwPjxzdHJvbmc+VmVyc2lvbjogMi41LjI8L3N0cm9uZz48L3A+CiAgPHA+Rml4ZWQgd3JvbmcgcGF0aCB0byBkZWxldGUgaWNvbiBpbiBmaWxlcGlja2VyIHdoZW4gdXNpbmcgY3VzdG9taXplZCBhZG1pbiBkaXIgKHRoYW5rcyBNZWlSaWVNKTwvcD4KICA8cD5SZW1vdmVkIHRoZSBjbGVhbiBvbiBwYXN0ZSBmb3Igbm93LCBsZWF2aW5nIGl0IGVuYWJsZWQuIFNlZW1lZCB0byBkbyBubyBkaWZmZXJlbmNlIGZvciBtb3N0IHBlb3BsZS4uLjwvcD4KPC9saT4KPGxpPgogIDxwPjxzdHJvbmc+VmVyc2lvbjogMi41LjE8L3N0cm9uZz48L3A+CiAgPHA+VXBkYXRlZCB0byBUaW55TUNFIDMuMi41IGFuZCB1cGRhdGVkIHRyYW5zbGF0aW9ucyBhcyB3ZWxsPC9wPgogIDxwPkZpeGVkIGV4dHJhY29uZmlnPC9wPgogIDxwPjwvcD4KPC9saT4KPGxpPgogIDxwPjxzdHJvbmc+VmVyc2lvbjogMi41LjA8L3N0cm9uZz48L3A+CiAgPHA+Rml4ZWQgYSBzbWFsbCBzeW50YXgtZXJyb3IgaW4gY29uZmlnIGZpbGUgYnJlYWtpbmcgdGlueSBpbiBmcm9udGVuZCBpbiBJRTwvcD4KICA8cD5GaXhlZCBhIHByb2JsZW0gY29uY2VybmluZyByZXNldHRpbmcgc2V0dGluZ3MgdG8gZGVmYXVsdCB2YWx1ZXMgKGludHJvZHVjZWQgZHVlIHRoZSBuZWVkIG9mIHVuaXF1ZSBpZCdzIG9mIHN1Ym1pdGJ1dHRvbnMpPC9wPgogIDxwPkZpeGVkIGEgY291cGxlIG9mIHR5cG9zPC9wPgo8L2xpPgo8bGk+CiAgPHA+PHN0cm9uZz5WZXJzaW9uOiAyLjUuMC1iZXRhMzwvc3Ryb25nPjwvcD4KICA8cD5IYWQgdG8gbW92ZSB0b2dnbGUgYnV0dG9uIG9wdGlvbiB0byBhZHZhbmNlZCBwYWdlIGluc3RlYWQgb2YgcHJvZmlsZXMuIE5vdCBwb3NzaWJsZSB0byBjb250cm9sIHByZXNlbnRseS48L3A+CiAgPHA+UmV3cm90ZSBmcm9udC9iYWNrZW5kIGRldGVjdGlvbi4gU2hvdWxkIGJlIGEgbG90IG1vcmUgc3RhYmxlLjwvcD4KICA8cD5VcGRhdGVkIHRvIFRpbnkgMy4yLjMsIHNob3VsZCBoYXZlIGEgbmV3IGFuZCBpbXByb3ZlIFBhc3RlIGxvZ2ljIGF1dG9tYWdpY2FsbHkgZGV0ZWN0aW5nIFdvcmQtcGFzdGVzIGFuZCBjbGVhbmluZzwvcD4KPC9saT4KPGxpPgogIDxwPjxzdHJvbmc+VmVyc2lvbjogMi41LjAtYmV0YTI8L3N0cm9uZz48L3A+CiAgPHA+TWFkZSBzdXJyb3VuZGluZyBzZWxlY3RlZCB0ZXh0IHdpdGggc29tZXRoaW5nIHBvc3NpYmxlIGluIHRoZSBjdXN0b20tZHJvcGRvd248L3A+CiAgPHA+Rml4ZWQgcmVzZXR0aW5nIGFkdmFuY2VkLXByb2ZpbGU8L3A+CiAgPHA+Rml4ZWQgdGFibGUgY29udHJvbHMgd2hlbiBvbmx5IGVuYWJsZWQgaW4gYWR2YW5jZWQgcHJvZmlsZTwvcD4KICA8cD5GaXhlZCBhIGxvdCBvZiB2YWxpZGF0aW9uIGlzc3VlczwvcD4KICA8cD5JbXBsZW1lbnRlZCBmaWxlIGRlbGV0aW9uPC9wPgogIDxwPlJldmFtcGVkIHBlcm1pc3Npb24tcG9saWNpZXMgdG8gdGFrZSBNb2RpZnkgRmlsZXMgaW50byBhY2NvdW50IG1vcmU8L3A+CjwvbGk+CjxsaT4KICA8cD48c3Ryb25nPlZlcnNpb246IDIuNS4wLWJldGExPC9zdHJvbmc+PC9wPgogIDxwPkltcGxlbWVudGVkIG9udGhlZmx5LXJlc2l6aW5nIG9mIHVwbG9hZGVkIGltYWdlczwvcD4KICA8cD5SZXdyb3RlIHRvb2xiYXJzIGludG8gcHJvZmlsZXMgYWxsb3dpbmcgYSBzZXBlcmF0ZSBhZHZhbmNlZCBwcm9maWxlIGZvciBzZWxlY3RlZCB1c2VyczwvcD4KICA8cD5NYWRlIHN0eWxlc2hlZXQgaW5jbHVkZSBzY3JlZW4tY3NzIGV2ZW4gaWYgb3RoZXIgY2F0ZWdvcmllcyB3YXMgYWxzbyBzZWxlY3RlZCAoYW5kIHRoZSBzY3JlZW4tb25seSBvcHRpb24gd2FzIGVuYWJsZWQsIHRoYXQgaXMpPC9wPgogIDxwPkZpeGVkIGEgc21hbGwgYnVnIHdoZW4gdHJ5aW5nIHRvIG1ha2UgaW50ZXJuYWwgbGlua3Mgb3V0IG9mIGltYWdlczwvcD4KICA8cD5VcGRhdGVkIHRpbnkgdG8gMy4yLjI8L3A+CjwvbGk+Cgo8bGk+CiAgPHA+PHN0cm9uZz5WZXJzaW9uOiAyLjQuMTM8L3N0cm9uZz48L3A+CiAgPHA+Rml4ZWQgcmVzZXR0aW5nIHRvb2xiYXJzPC9wPgo8L2xpPgoKPGxpPgogIDxwPjxzdHJvbmc+VmVyc2lvbjogMi40LjEyPC9zdHJvbmc+PC9wPgogIDxwPkFkZGVkIHN1cHBvcnQgZm9yIGNvbmZpZ3VyaW5nIHRoZSB0aGlyZCB0b29sYmFyPC9wPgogIDxwPkFkZGVkIG9wdGlvbiB0byBzaG93IGFjdHVhbCB0aHVtYm5haWwtZmlsZXM8L3A+CiAgPHA+Rml4ZWQgZmlsZXR5cGUgaWNvbnMgaW4gRmlsZVBpY2tlcjwvcD4KICA8cD5SZXN0cnVjdHVyZWQgdGFiLWNvbnRlbnQgaW50byBzZXBlcmF0IGZpbGVzIGZvciBlYXNpZXIgbWFpbnRlbmFuY2U8L3A+CiAgPHA+SW1wbGVtZW50ZWQgfCBhcyBzZXBlcmF0b3IgaW4gdG9vbGJhcnM8L3A+CiAgPHA+Rml4ZWQgZnJvbnRlbmQtdG9vbGJhcnM8L3A+CjwvbGk+Cgo8bGk+CiAgPHA+PHN0cm9uZz5WZXJzaW9uOiAyLjQuMTE8L3N0cm9uZz48L3A+CiAgPHA+Rml4ZWQgc21hbGwgcG90ZW50aW9uIHdhcm5pbmcgb24gc3RhdCgpLXVzYWdlIGluIEZpbGVwaWNrZXI8L3A+CiAgPHA+QWRkZWQgc3VwcG9ydCBmb3IgbmV3IEhhc0NhcGFiaWxpdHkgYXBpLWNhbGw8L3A+CjwvbGk+CgogIDxsaT4KICA8cD48c3Ryb25nPlZlcnNpb246IDIuNC4xMDwvc3Ryb25nPjwvcD4KICA8cD5Tb3JyeSBJIGZvcmdvdC4uLjwvcD4KCTwvbGk+CgoJPGxpPgogIDxwPjxzdHJvbmc+VmVyc2lvbjogMi40Ljk8L3N0cm9uZz48L3A+CiAgPHA+Rml4ZWQgRmlsZVBpY2tlciB3aXRoIHJlZ2FyZHMgdG8gbmV3IHhzcy1zZWN1cml0eTwvcD4KICA8cD5VcGRhdGVkIHRvIFRpbnlNQ0UgMy4yLjE8L3A+Cgk8L2xpPgoKCTxsaT4KCTxwPjxzdHJvbmc+VmVyc2lvbjogMi40Ljg8L3N0cm9uZz48L3A+Cgk8cD5VcGRhdGVkIHRvIFRpbnlNQ0UgMy4yLjAuMTwvcD4KCTxwPkZpeGVkIHVzaW5nIHByb3BlciBoaWVyYXJjaHkgZm9yIHByZXR0eSB1cmxzPC9wPgoJPHA+QWRkZWQgYWR2YW5jZWQgb3B0aW9uIHRvIHN0YXJ0dXAgZWRpdG9ycyBpbiBkaXNhYmxlZCBzdGF0ZTwvcD4KCTwvbGk+CgkJPGxpPgoJCTxwPjxzdHJvbmc+VmVyc2lvbjogMi40Ljc8L3N0cm9uZz48L3A+CgkJPHA+UmVtb3ZlZCBzaW1wbGVwYXN0ZSBwbHVnaW4gYW5kIHJlaW5zZXJ0ZWQgc3RvY2sgcGFzdGUuIFRoYXQgb3RoZXIgc29sdXRpb24gY29uZnVzZWQgcGVvcGxlLjwvcD4KCQk8cD5BZGRlZCBtdWx0aXBsZSAqYm94IGVudHJpZXMgdG8gZHJvcGRvd24gaW4gYWR2IGxpbms8L3A+CgkJPHA+Rml4ZWQgZmlsZXBpY2tlciB3aGVuIHVzZWQgb24gaHR0cHMtc2l0ZXM8L3A+CgkJPHA+Tm93IHJld3JpdGluZyBjb25maWctZmlsZSB3aXRoIGV2ZXJ5IHNob3dpbmcgd2hlbiB1c2luZyBzdGF0aWMgY29uZmlnLCBmaXhpbmcgdGhlIHJldmVyc2VkIHRvZ2dsZS1ib3ggYnVnPC9wPgoJCTwvbGk+CgkJPGxpPgoJCTxwPjxzdHJvbmc+VmVyc2lvbjogMi40LjU8L3N0cm9uZz48L3A+CgkJPHA+Rml4ZWQgcHJvYmxlbSB3aXRoIGNtc2xpbmtlciBub3QgYWxsb3dpbmcgdG8gc2VsZWN0IHBhcmVudHBhZ2VzIFNvcnJ5IGd1eXMsIHRoYXQgd2FzIGEgbmV3bHkgaW50cm9kdWNlZCBwcm9ibGVtPC9wPgoJCTxwPkZpeGVkIGEgc21hbGwgYnVnIHdoaWNoIGNvdWxkIGNhdXNlIHJlbGF0aXZlIHVybHMgdG8gZ2VuZXJhdGUgc29tZXRoaW5nIGluY2x1ZGluZyB0aGUgaG9zdC1uYW1lPC9wPgoJCTwvbGk+CgkJPGxpPgoJCTxwPjxzdHJvbmc+VmVyc2lvbjogMi40LjQ8L3N0cm9uZz48L3A+CgkJPHA+Tm93IG9wdGlvbmFsbHkgb25seSBpbmNsdWRlcyBzdHlsZXNoZWV0cyB0YWdnZWQgYXMgJ3NjcmVlbicgb3IgJ2FsbCcgd2hlbiByZWFkaW5nIHN0eWxlczwvcD4KCQk8cD5Nb3ZlZCBjaGFuZ2Vsb2cgdG8gdGVtcGxhdGUuIEl0IHdhcyBodXV1Z2UuLi48L3A+CgkJPHA+VXBkYXRlZCBzaW1wbGVwYXN0ZS1wbHVnaW48L3A+CgkJPHA+QWRkZWQgYW4gaW5wdXQgZmllbGQgd2l0aCBzdHVmZiBhZGRlZCB0byBzdHlsZXNoZWV0PC9wPgoJCTxwPkRpZCBhbiBvcHRpb24gdG8gdXNlIGEgc3RhdGljPC9wPgoJCTwvbGk+CgkJPGxpPgoJCTxwPjxzdHJvbmc+VmVyc2lvbjogMi40LjM8L3N0cm9uZz48L3A+CgkJPHA+SW1wbGVtZW50ZWQgYW5vdGhlciB0cmljayB0byBwcmV2ZW50IHN0eWxlc2hlZXQgY29udGVudCBmcm9tIGJlaW5nIGNhY2hlZDwvcD4KCQk8cD5Ob3cgb3JkZXJzIHRoZSBzdHlsZXNoZWV0IGFmdGVyIGFzc29jX29yZGVyIGluc3RlYWQgb2YgZGF0ZTwvcD4KCQk8L2xpPgoJCTxsaT4KCQk8cD48c3Ryb25nPlZlcnNpb246IDIuNC4yPC9zdHJvbmc+PC9wPgoJCTxwPkZpeGVkIG9ubHkgc2hvd2luZyBpbWFnZXMgZXZlbiBpZiBsaW5rIHRvIGFsbCBmaWxldHlwZXMgc2hvdWxkIGJhIHBvc3NpYmxlPC9wPgoJCTxwPlVwZGF0ZWQgdG8gVGlueSAzLjEuMC4xPC9wPgoJCTwvbGk+CgkJPGxpPgoJCTxwPjxzdHJvbmc+VmVyc2lvbjogMi40LjE8L3N0cm9uZz48L3A+CgkJPHA+Rml4ZWQgYnVnIGNhdXNpbmcgdGlueSB0byBicmVhayBpZiB1c2luZyBjdXN0b20gY3NzLXN0eWxlczwvcD4KCQk8cD5SZWltcGxlbWVudGVkIGZpbGUgdXBsb2FkL2Rpci1jcmVhdGlvbiBpbiBGaWxlUGlja2VyPC9wPgoJCTxwPlVwZGF0ZWQgdG8gVGlueSAzLjAuOTwvcD4KCQk8cD5JbXBsZW1lbnRlZCBwcmV0dHkgdXJscyBmb3IgaHJlZi1zdHlsZSBsaW5rcyB3aGVuIGVuYWJsZWQgaW4gY29uZmlnLnBocDwvcD4KCQk8L2xpPgoJCTxsaT4KCQk8cD48c3Ryb25nPlZlcnNpb246IDIuNC4wPC9zdHJvbmc+PC9wPgoJCTxwPkRpc3RyaWJ1dGVkIHdpdGggQ01TTVMgMS4zPC9wPgoJCTwvbGk+CgkJPGxpPgoJCTxwPlZlcnNpb246IDIuNC4wYjU8L3A+CgkJPHA+QWRkZWQgaGVscCBmb3IgdG9vbGJhcjwvcD4KCQk8cD5BZGRlZCBjbXNsaW5rZXItc3R5bGU8L3A+CgkJPHA+QWRkZWQgRmlsZXBpY2tlci1zdHlsZTwvcD4KCQk8cD5GaXhlZCB0aGUgYnVnIHdoZXJlIGNvbnRlbnQgY2hhbmdlcyB3YXMgdW5kb24gd2hlbiB3eXNpd3lnIHdhcyBkaXNhYmxlZCB3aXRoIHRoZSBjaGVjayBib3g8L3A+CgkJPHA+QWRkZWQgb3B0aW9uIHRvIHR1cm4gcmVsZXRpdmUtdXJscyBvZmY8L3A+CgkJPHA+TnVubyByZWRlc2lnbmVkIGZpbGVwaWNrZXIgZGlhbG9ndWU8L3A+CgkJPHA+QWRkZWQgY3VzdG9taXphYmxlIGRpbWVuc2lvbnMgb2YgRmlsZVBpY2tlcjwvcD4KCQk8cD5OdW1lcm91cyBidWcgZml4ZXM8L3A+CgkJPC9saT4KCQk8bGk+CgkJPHA+VmVyc2lvbjogMi40LjBiNDwvcD4KCQk8cD5FbmFibGVkIGV4dHJhY29uZmlnLW9wdGlvbjwvcD4KCQk8cD5JbXBsZW1lbnRlZCBvcHRpb24gZm9yIGZvcmNlZF9yb290X2Jsb2NrPC9wPgoJCTxwPldvcmsgb24gc3VwcG9ydGVkIHByZXR0eS11cmxzLCB0aGFua3MgTnVubyE8L3A+CgkJPHA+VXBkYXRlZCB0byBUaW55IDMuMC44PC9wPgoJCTwvbGk+CgkJPGxpPgoJCTxwPlZlcnNpb246IDIuNC4wYjM8L3A+CgkJPHA+Rml4ZWQgZnJvbnRlbmQgdXNhZ2U8L3A+CgkJPHA+YWRkZWQgYSBjb3VwbGUgb2YgdXBncmFkZXMgZnJvbSBjbXNtc2xpbmstcGx1Z2luIHRvIGNtc2xpbmtlcjwvcD4KCQk8cD5BZGRlZCBsaW5rcyBmb3IgcGx1Z2luaGVscDwvcD4KCQk8cD5GaXhlZCBqcy1lcnJvciBicmVha2luZyBlZGl0b3IgaW4gSUU8L3A+CgkJPHA+QWRkZWQgYnV0dG9ucyBmb3IgcmVzZXR0aW5nIHRvIGRlZmF1bHQgdmFsdWVzPC9wPgoJCTwvbGk+CgkJPGxpPgoJCTxwPlZlcnNpb246IDIuNC4wYjI8L3A+CgkJPHA+RGlkIHByZXR0aWVyIGRlZmF1bHQgdmFsdWUgZm9yIGN1c3RvbW1lbnU8L3A+CgkJPHA+Rml4ZWQgaHRtbGVudGl0eSBwcm9ibGVtcyBpbiBjbXNsaW5rZXItcGFydCBjcmFzaGluZyB3aG9sZSBlZGl0b3I8L3A+CgkJPC9saT4KCQk8bGk+CgkJPHA+VmVyc2lvbjogMi40LjBiMTwvcD4KCQk8cD48L3A+CgkJPHA+VXBncmFkZWQgdG8gbGF0ZXN0IFRpbnlNQ0U8L3A+CgkJPHA+Q21zbXMtbGlua2VyIHJlaW1wbGVtZW50ZWQ8L3A+CgkJPHA+Q3VzdG9tIGRyb3Bkb3dubWVudSBpbXBsZW1lbnRlZDwvcD4KCQk8cD5GaWxlcGlja2VyIGJ1Z3MgZml4ZWQsIGxpbmtlIHVzaW5nIGl0IGZvciBsaW5raW5nIHRvIG5vbi1pbWFnZS1maWxlczwvcD4KCQk8cD5zdHlsZXNoZWV0IGNvZGUgcmV3cml0dGVuIHVzaW5nIGFkb2RiIGluc3RlYWQgb2YgcGxhaW4gbXlzcWwvcGdzcWwuIHNob3VsZCBiZSBsb3RzIHNhZmVyIG5vdzwvcD4KCQk8L2xpPgoJCTxsaT4KCQk8cD5WZXJzaW9uOiAyLjQuMGEyPC9wPgoJCTxwPjwvcD4KCQk8cD5VcGdyYWRlZCB0byBsYXRlc3QgVGlueU1DRTwvcD4KCQk8cD5Ub29sYmFycyBmb3IgZnJvbnRlbmQvYmFja2VuZCBjYW4gbm93IGJlIGNvbmZpZ3VyZWQgc2VwZXJhdGVseTwvcD4KCQk8cD5GaWxlcGlja2VyIHJlaW1wbGVtZW50ZWQsIHNpbXBsZSBmb3Igbm93LCBidXQgd29ya3M8L3A+CgkJPC9saT4KCQk8bGk+CgkJPHA+VmVyc2lvbjogMi40LjBhMTwvcD4KCQk8cD48L3A+CgkJPHA+VXBncmFkZWQgdG8gVGlueU1DRSAzLjA8L3A+CgkJPHA+U3RvcHBlZCB0aGUgc3R1cGlkIHNlcGVyYXRpb24gYmV0d2VlbiBhZHZhbmNlZCBhbmQgYmFzaWMgdmVyc2lvbi4gTm93IG9ubHkgdGhpcyBvbmUgaXMgaW4gZGV2ZWxvcG1lbnQsIGtlcHQgYXMgdHJpbSBhcyBwb3NzaWJsZSwgYnV0IHdpdGggbG90cyBvZiBwbHVnaW5zPC9wPgoJCTxwPlN0YXJ0ZWQgb3JnYW5pemluZyBhZG1pbi1zZXR0aW5ncyBsb2dpY2FsbHk8L3A+CgkJPC9saT4KCQk8bGk+CgkJPHA+VmVyc2lvbjogMi4yLjc8L3A+CgkJPHA+Rml4ZWQgaW5qZWN0aW9uIHZ1bG5lcmFiaWxpdHkgaW4gY29udGVudF9jc3MucGhwPC9wPgoJCTwvbGk+CgkJPGxpPgoJCTxwPlZlcnNpb246IDIuMi42PC9wPgoJCTxwPk1hZGUgZmlsZSB1cGxvYWRpbmcgdGhyb3VnaCBzaW1wbGVicm93c2VyIGhvbm9yIGRlZmF1bHRfdXBsb2FkX3Blcm1pc3Npb248L3A+CgkJPC9saT4KCQk8bGk+CgkJPHA+VmVyc2lvbjogMi4yLjU8L3A+CgkJPHA+TWFkZSB0aGUgZW50aXR5ZW5jb2RpbmcgYSBwcmVmZXJlbmNlPC9wPgoJCTxwPk1hZGUgVGlueSB3b3JrIGFzIGZyb250ZW5kIHd5c2l3eWcgbW9kdWxlPC9wPgoJCTxwPkZpeGVkIG1pc3NpbmcgYmxvY2tmb3JtYXQgZGVmYXVsdCB1cG9uIG5ldyBpbnN0YWxsYXRpb24gKHRoYW5rcyBVdHRlciBmb3Igbm90aWNpbmcpPC9wPgoJCTwvbGk+CgkJPGxpPgoJCTxwPlZlcnNpb246IDIuMi40PC9wPgoJCTxwPkZpeGVkIHRoZSBJRSB0b2dnbGUgYnVnPC9wPgoJCTxwPlNwZWVkZWQgdXAgdHVybmluZyBlZGl0b3Igb24vb2ZmIHF1aXRlIGEgYml0ICh1c2luZyBtY2VUb2dnbGVFZGl0b3IgaW4gc3RlYWQgb2YgbG9hZGluZy91bmxvYWRpbmcgd2hvbGUgc3lzdGVtKTwvcD4KCQk8L2xpPgoJCTxsaT4KCQk8cD5WZXJzaW9uOiAyLjIuMzwvcD4KCQk8cD5VcGRhdGVkIHRvIFRpbnlNQ0UgdmVyc2lvbiAyLjEuMiwgZml4ZXMgdHVybmluZyB3eXNpd3lnIG9uL29mZiBvbiBwYWdlcyBjb250YWluaW5nIG11bHRpcGxlIHRleHRhcmVhczwvcD4KCQk8cD5GaXhlZCBhIGJ1ZyBtYWtpbmcgeW91IGVuZCB1cCBpbiB3cm9uZyB0YWIgd2hlbiBzYXZpbmcgdG9vbGJhcjwvcD4KCQk8cD48L3A+CgkJPC9saT4KICAgIDxsaT4KCQk8cD5WZXJzaW9uOiAyLjIuMjwvcD4KCQk8cD5OdW1lcmVvdXMgc21hbGxlciB0d2Vla3MuPC9wPgogICAgPHA+Rml4ZWQgcHJvYmxlbSB3aXRoIGNoYW5naW5nIGJldHdlZW4gcGFnZXMgd2l0aCBUaW55IGFuZCBFZGl0QXJlYS48L3A+CiAgICA8cD5TZXNzaW9uaXplZCB0aGUgbGl2ZSBsYW5ndWFnZS48L3A+CiAgICA8cD5BZGRlZCBjaGFybWFwIHRvIGRlZmF1bHQgdG9vbGJhci48L3A+CgkJPC9saT4KCQk8bGk+CgkJPHA+VmVyc2lvbjogMi4yLjE8L3A+CgkJPHA+Rml4ZWQgYmxvY2tmb3JtYXQgZHJvcGRvd24gbm93IGFjdHVhbGx5IHJlZmxlY3RpbmcgdGhlIHZhbHVlcyBpbiB0aGUgZWRpdCBib3g8L3A+CgkJPHA+UmV3cm90ZSB0ZXh0YXJlYSBtYW5hZ2VtZW50IHRvIHVzaW5nIHNlc3Npb25zLiBTaG91bGQgZml4IHRoZSBkb3VibGUtdGlueXMgYXBwZWFyaW5nIHJhbmRvbWx5LjwvcD4KCQk8L2xpPgogICAgPGxpPgoJCTxwPlZlcnNpb246IDIuMi4wPC9wPgoJCTxwPlNwbGl0IFRpbnlNQ0UgaW50byAyIG1vZHVsZXMsIG9uZSBmb3IgaW5jbHVzaW9uIGluIGRpc3RyaWJ1dGlvbiBhbmQgb25lIGZvciBtb3JlIGFkdmFuY2VkIHVzZS4gVGhpcyBpcyB0aGUgQmFzaWMgdmVyc2lvbi48L3A+CgkJPHA+TWFkZSB0YWJsZSBvcGVyYXRpb25zIGFuIG9wdGlvbjwvcD4KCQk8cD5SZW1vdmVkIHRoZSBub253b3JraW5nICdyZXBsYWNlIGNtcy1saW5rcyB3aGlsZSB3cml0aW5nJzwvcD4KCQk8cD5HZW5lcmFsbHkgdHJpbW1lZCBkb3duIHRoZSBtb2R1bGUgdG8gYSBzaXplIGFjY2VwdGFibGUgZm9yIHRoZSBtYWluIGRpc3RyaWJ1dGlvbjwvcD4KCQk8L2xpPgogICAgPGxpPgoJCTxwPlZlcnNpb246IDIuMC42PC9wPgoJCTxwPk1hZGUgaXQgcG9zc2libGUgdG8gYWRkIHNvbWV0aGluZyBleHRyYSB0byB0aGUgY29uZmlndXJhdGlvbjwvcD4KCQk8cD5BZGRlZCBwYXN0ZSBhcyBwbGFpbiB0ZXh0IHBsdWdpbjwvcD4KCQk8cD5BZGRlZCBhbiBvcHRpb24gdG8gc2hvdyBhIGJ1dHRvbiB0dXJuaW5nIHRoZSB3eXNpd3lnLWZ1bmN0aW9uYWxpdHkgb24vb2ZmPC9wPgoJCTxwPkdlbmVyYWwgc3BlZWQgaW1wcm92ZW1lbnRzPC9wPgoJCTxwPlVwZGF0ZWQgdG8gVGlueSAyLjEuMSwgVGlueUNvbXByZXNzZWQgMS4xLjAgYW5kIFNwZWxsQ2hlY2tlciAxLjAuNDwvcD4KCQk8L2xpPgoJCTxsaT4KCQk8cD5WZXJzaW9uOiAyLjAuNTwvcD4KCQk8cD5BZGRlZCBhIHhodG1sLWVsZW1lbnRzIG9ubHkgb3B0aW9uPC9wPgoJCTxwPk1vdmVkIGphdmFzY3JpcHQgY29uZmlnIGludG8gYW4gZXh0ZXJuYWwgZmlsZTwvcD4KCQk8cD5BZGRlZCBzZWxlY3RpbmcgcCBvciBici8gc3R5bGUgbmV3bGluZXM8L3A+CgkJPHA+VXBkYXRlZCB0byBuZXcgY29tcHJlc3Npb24gZW5naW5lLiBTaG91bGQgZml4IHNvbWUgYnVncyByZWxhdGVkIHRvIHRoaXM8L3A+CgkJPHA+QWRkZWQgcGx1Z2luIGRlc2NyaXB0aW9ucyBmcm9tIGRvY3M8L3A+CgkJPHA+Rml4ZWQgc2hvd2luZyBvZiBjb3JyZWN0IHRlc3RhcmVhIGV2ZW4gaWYgYW5vdGhlciB3eXNpd3lnIGlzIGNob3NlbjwvcD4KCQk8cD5VcGRhdGVkIHRvIFRpbnkgMi4xLjA8L3A+CgkJPHA+QWRkZWQgdGh1bWJuYWlsIHByZXZpZXdzIGluIGltYWdlIGJyb3dzZXIuPC9wPgoJCTwvbGk+CgkJPGxpPgoJCTxwPlZlcnNpb246IDIuMC40PC9wPgoJCTxwPkZpeGVkIGN1c3RvbWl6ZWQgdGV4dGFyZWEgd2lkdGg8L3A+CgkJPHA+VXBkYXRlZCB0byBUaW55IDIuMC43PC9wPgoJCTxwPlJldmVyc2VkIGNoYW5nZWxvZyBjb250ZW50IChmcm9tIG5vdyBvbiBhdCBsZWFzdCkgOy0pPC9wPgoJCTxwPjwvcD4KCQk8L2xpPgoKCQk8bGk+CgkJPHA+VmVyc2lvbjogMS4wPC9wPgoJCTxwPk9yaWdpbmFsIG1vZHVsZSBjb2RlIGZvciBUaW55TUNFIFdZU0lXWUcgdGV4dGFyZWEgcmVwbGFjZW1lbnQgdG9vbC48L3A+CgkJPC9saT4KCQk8bGk+CgkJPHA+QXV0aG9yOiBTaW1vbiBCcm93biAmbHQ7c2ltb25AdXB0b2VsZXZlbi53cyZndDs8L3A+CgkJPHA+VmVyc2lvbjogMS4xPC9wPgoJCTxwPkNvbnZlcnRlZCBmb3IgdXNlIHdpdGggbmV3IENNUyBNb2R1bGUgYXJjaGl0ZWN0dXJlLjwvcD4KCQk8cD5VcGdyYWRlZCBUaW55TUNFIHRvIHZlcnNpb24gMS40Mi48L3A+CgkJPC9saT4KCQk8bGk+CgkJPHA+VmVyc2lvbjogMS4yPC9wPgoJCTxwPkZpeGVkIGJ1ZyB3aXRoIHBhdGhzIGJlaW5nIGNyZWF0ZWQgd3Jvbmcgb24gaW1hZ2UgaW5zZXJ0LjwvcD4KCQk8L2xpPgoJCTxsaT4KCQk8cD5WZXJzaW9uOiAyLjAuMDwvcD4KCQk8cD5BdXRob3I6IFN0ZWZhbiBSJm91bWw7bGxpbjwvcD4KCQk8cD5VUERBVEVEIHRvIHZlcnNpb24gMi4wLjUuMSBvZiBUaW55TUNFIGVkaXRvci48L3A+CgkJPHA+QUREIHBsdWdpbnMgc2ltcGxlYnJvd3NlciwgY21zbXNsaW5rIDwvcD4KCQk8cD5BREQgc29tZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuPC9wPgoJCTxwPkFERCBwZXJtaXNzaW9uIHRvIG1vZGlmeSBzZXR0aW5ncy48L3A+CgkJPC9saT4KCQk8bGk+CgkJPHA+VmVyc2lvbjogMi4wLjE8L3A+CgkJPHA+VVBEQVRFRCB0byB2ZXJzaW9uIDIuMC42LjEgb2YgVGlueU1DRSBlZGl0b3IuPC9wPgoJCTxwPkFERCBjb25maWd1cmF0aW9uIG9wdGlvbnM6IGxhbmd1YWdlIGFuZCBzb3VyY2VfZm9ybWF0dGluZy48L3A+CgkJPHA+SW1wcm92ZWQgcGx1Z2luIGNvbmZpZ3VyYXRpb24uPC9wPgoJCTxwPkFERCBtb3JlIGxhbmd1YWdlcy48L3A+CgkJPC9saT4KCQk8bGk+CgkJPHA+VmVyc2lvbjogMi4wLjI8L3A+CgkJPHA+RklYIGZpbGVicm93c2VyPC9wPgoJCTxwPkZJWCBzZWN1cml0eSBmbGF3IGluIGZpbGVicm93c2VyPC9wPgoJCTwvbGk+CgkJPGxpPgoJCTxwPlZlcnNpb246IDIuMC4zPC9wPgoJCTxwPkNvbnZlcnRlZCB0byBuZXcgZmV0Y2gtbWV0aG9kIG9mIGNvbnRlbnRfYXJyYXk8L3A+CgkJPHA+RklYIHNlY3VyaXR5IGZsYXcgaW4gZmlsZWJyb3dzZXI8L3A+CgkJPHA+QWRkZWQgbG9jYWxpemF0aW9uIG9mIHRlc3RhcmVhLXRleHQ8L3A+CgkJPC9saT4KCQk8L3VsPgo8YnIgLz4=]]></about>
	<description><![CDATA[A full featured WYSIWYG-editor providing file management and image management functionality]]></description>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/.htaccess</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IwojIEV4cGxpY2l0bHkgZGlzYWJsZSBjYWNoaW5nIG9mIGFueSBhbmQgYWxsIG1lZGlhIHR5cGVzIGZyb20gbW9kdWxlIHJlcXVlc3RzCiMgVGhpcyB3aWxsIGNhdXNlIHBlcmZvcm1hbmNlIGlzc3VlcyBmb3Igd2Vic2l0ZXMgdGhhdCBkbyBub3QgY2hhbmdlIG9mdGVuCiMgYnV0IHdpbGwgcHJldmVudCBicm93c2VyIGNhY2hpbmcgZnJvbSBwcmV2ZW50aW5nIGl0ZW1zIGZyb20gYmVpbmcgdXBkYXRlZC4KIwo8SWZNb2R1bGUgbW9kX2V4cGlyZXMuYz4KCUV4cGlyZXNBY3RpdmUgT2ZmCjwvSWZNb2R1bGU+Cgo8SWZNb2R1bGUgbW9kX2hlYWRlcnMuYz4KICAgIEhlYWRlciBzZXQgQ2FjaGUtQ29udHJvbCAicHJpdmF0ZSwgbm8tY2FjaGUsIG5vLXN0b3JlLCBwcm94eS1yZXZhbGlkYXRlLCBuby10cmFuc2Zvcm0iCiAgICBIZWFkZXIgc2V0IFByYWdtYSAibm8tY2FjaGUiCjwvSWZNb2R1bGU+CgojIFRvIGRlbnkgcHVibGljIGFjY2Vzcwo8RmlsZXMgfiAiXC4obWR8dHh0KSQiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogIG9yZGVyIGRlbnksYWxsb3cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICBkZW55IGZyb20gYWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCjwvRmlsZXM+]]></data>
	</file>
	<file>
	  <filename>/action.admin_copyprofile.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0NNUyAtIENNUyBNYWRlIFNpbXBsZQojKGMpMjAwNCBieSBUZWQgS3VscCAodGVkQGNtc21hZGVzaW1wbGUub3JnKQojVmlzaXQgb3VyIGhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKI1RoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiNpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyhhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKI1RoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKI01FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKI0dOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiNZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKI0ZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKIwppZiggIWNtc21zKCkgKSBleGl0OwppZighJHRoaXMtPlZpc2libGVUb0FkbWluVXNlcigpICkgcmV0dXJuOwoKCmlmICghaXNzZXQoJHBhcmFtc1snaWRfcHJvZmlsZSddKSkgZXhpdDsKCiRwcm9maWxlID0gbmV3IHRpbnltY2VfcHJvZmlsZSgoaW50KSRwYXJhbXNbJ2lkX3Byb2ZpbGUnXSk7CgokbmV3X3Byb2ZpbGUgPSBjbG9uZSAkcHJvZmlsZTsKCiRuZXdfcHJvZmlsZS0+c2F2ZSgpOwoKJHRoaXMtPlJlZGlyZWN0KCRpZCwnZGVmYXVsdGFkbWluJywkcmV0dXJuaWQsYXJyYXkoIm1vZHVsZV9tZXNzYWdlIj0+JHRoaXMtPkxhbmcoInByb2ZpbGVfY29waWVkIikpKTsKCgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.admin_deleteprofile.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0NNUyAtIENNUyBNYWRlIFNpbXBsZQojKGMpMjAwNCBieSBUZWQgS3VscCAodGVkQGNtc21hZGVzaW1wbGUub3JnKQojVmlzaXQgb3VyIGhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKI1RoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiNpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyhhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKI1RoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKI01FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKI0dOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiNZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKI0ZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKIwppZiggIWNtc21zKCkgKSBleGl0OwppZighJHRoaXMtPlZpc2libGVUb0FkbWluVXNlcigpICkgewogICAgcmV0dXJuOwp9CgoKaWYgKCFpc3NldCgkcGFyYW1zWydpZF9wcm9maWxlJ10pKSB7CiAgICBleGl0Owp9CgokcHJvZmlsZSA9IG5ldyB0aW55bWNlX3Byb2ZpbGUoKGludCkkcGFyYW1zWydpZF9wcm9maWxlJ10pOwokZGVmYXVsdF9wcm9maWxlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2lkX2RlZmF1bHRfcHJvZmlsZScpOwoKCmlmICgkcHJvZmlsZS0+aWRfcHJvZmlsZSAhPSAkZGVmYXVsdF9wcm9maWxlKSB7CglpZiAoJHByb2ZpbGUtPmRlbGV0ZV9mcm9tX2RiKCkpIHsKICAgICAgICAkdGhpcy0+c2V0TWVzc2FnZSgkdGhpcy0+TGFuZygncHJvZmlsZV9kZWxldGVkJykpOwogICAgICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsJ2RlZmF1bHRhZG1pbicsJHJldHVybmlkKTsKICAgIH0gZWxzZSB7CiAgICAgICAgJHRoaXMtPnNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9kZWxldGVfcHJvZmlsZScpKTsKCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCdkZWZhdWx0YWRtaW4nLCRyZXR1cm5pZCk7CiAgICB9Cn0gZWxzZSB7CiAgICAkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX2Nhbm5vdF9kZWxldGVfZGVmYXVsdF9wcm9maWxlJykpOwoJJHRoaXMtPlJlZGlyZWN0KCRpZCwnZGVmYXVsdGFkbWluJywkcmV0dXJuaWQpOwp9]]></data>
	</file>
	<file>
	  <filename>/action.admin_editprofile.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0NNUyAtIENNUyBNYWRlIFNpbXBsZQojKGMpMjAwNCBieSBUZWQgS3VscCAodGVkQGNtc21hZGVzaW1wbGUub3JnKQojVmlzaXQgb3VyIGhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKI1RoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiNpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyhhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKI1RoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKI01FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKI0dOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiNZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKI0ZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKIwppZiggIWNtc21zKCkgKSBleGl0OwppZighJHRoaXMtPlZpc2libGVUb0FkbWluVXNlcigpICkgcmV0dXJuOwoKLy8gRml4IGEgc2VjdXJpdHkgd2FybmluZyBpbiBDaHJvbWUKLy8gc2VlIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQzMjQ5OTk4L2Nocm9tZS1lcnItYmxvY2tlZC1ieS14c3MtYXVkaXRvci1kZXRhaWxzCmhlYWRlcignWC1YU1MtUHJvdGVjdGlvbjowJyk7CgppZiAoIWlzc2V0KCRwYXJhbXNbJ2lkX3Byb2ZpbGUnXSkpCnsKCSRtb2RlID0gJ2FkZCc7CgkkcHJvZmlsZSA9IG5ldyB0aW55bWNlX3Byb2ZpbGUoKTsKfQplbHNlCnsKCSRtb2RlID0gJ2VkaXQnOwoJJHByb2ZpbGUgPSBuZXcgdGlueW1jZV9wcm9maWxlKChpbnQpJHBhcmFtc1snaWRfcHJvZmlsZSddKTsKfQoKLy8gU1VCTUlUIC8gU0FWRQppZiAoaXNzZXQoJHBhcmFtc1snY2FuY2VsJ10pKQoJJHRoaXMtPlJlZGlyZWN0KCRpZCwnZGVmYXVsdGFkbWluJywkcmV0dXJuaWQpOwppZiAoaXNzZXQoJHBhcmFtc1snc3VibWl0J10pIHx8IGlzc2V0KCRwYXJhbXNbJ2FwcGx5J10pKQp7CgkkcHJvZmlsZS0+bG9hZF9wcm9maWxlX2Zyb21fYXJyYXkoJHBhcmFtcyk7CgoJaWYgKCRwcm9maWxlLT5zYXZlKCkpCgl7CgkJLy8gQ2xlYXIgSlMgY2FjaGUgc28gd2UgY2FuIHJlLWdlbmVyYXRlIGl0IGFmdGVyIHNhdmluZwoJCXRpbnltY2VfdXRpbHM6OmNsZWFyX3RpbnltY2VfY2FjaGUoKTsKCgkJLy8gU2F2ZSB0aGUgSFRNTCBjb250ZW50CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ3BsYXlncm91bmRfY29udGVudCcsICRwYXJhbXNbJ3BsYXlncm91bmRfY29udGVudCddKTsKCgkJaWYgKGlzc2V0KCRwYXJhbXNbJ2FwcGx5J10pKQoJCXsKCQkJJG1vZGUgPSAnZWRpdCc7CgkJCSR0aGlzLT5TaG93TWVzc2FnZSgkdGhpcy0+TGFuZygncHJvZmlsZV9zYXZlZCcpKTsKCQl9CgkJZWxzZSAvLyBzdWJtaXQgYW5kIGdvIHRvIGRlZmF1bHQgYWRtaW4KCQl7CgkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsJ2RlZmF1bHRhZG1pbicsJHJldHVybmlkLGFycmF5KCJtb2R1bGVfbWVzc2FnZSI9PiR0aGlzLT5MYW5nKCJwcm9maWxlX3NhdmVkIikpKTsKCQl9Cgl9CgllbHNlIHsKCQllY2hvIGNtc21zKCktPmdldERiKCktPmVycm9yTXNnKCk7CgkJZXhpdDsKCQkkdGhpcy0+U2hvd01lc3NhZ2UoJHRoaXMtPkxhbmcoJ2Vycm9yX3NhdmluZ19wcm9maWxlJykpOwoJfQp9CgovLyBMb2FkIHRoZSBKUyBhbmQgcmUtZ2VuZXJhdGUgdGhlIGNhY2hlIGZpbGUKZWNobyAkdGhpcy0+V1lTSVdZR0dlbmVyYXRlSGVhZGVyKG51bGwsIG51bGwsICRwcm9maWxlLCB0cnVlKTsKCgovLyBBRERJVElPTkFMIERBVEEKCi8vIEV4dGVybmFsIGNhcGFibGUgbW9kdWxlcwokYXNzaWduWydleHRlcm5hbF9tb2R1bGVzJ10gPSB0aW55bWNlX3V0aWxzOjpnZXRfd3lzaXd5Z2l0ZW1zX21vZHVsZXMoKTsKCi8vIFVzZXJzIGdyb3VwcwokdXNlcl9ncm91cHMgPSB0aW55bWNlX3V0aWxzOjpnZXRfdXNlcl9ncm91cHMoKTsKJHVzZXJfZ3JvdXBzX3NtYXJ0eSA9IGFycmF5KCk7CmZvcmVhY2ggKCR1c2VyX2dyb3VwcyBhcyAkZ3JvdXApCgkkdXNlcl9ncm91cHNfc21hcnR5WyRncm91cC0+aWRdID0gJGdyb3VwLT5uYW1lOwoKLy8gQWRkIGZyb250ZW5kCiR1c2VyX2dyb3Vwc19zbWFydHlbLTFdID0gJy0gJy4kdGhpcy0+TGFuZygnZ3JvdXBfZnJvbnRlbmQnKS4nIC0nOwoKLy8gRGVzaWduTWFuZ2VyIFRlbXBsYXRlIGxpbmtlZCB0byB0aGF0IHByb2ZpbGUKJHRlbXBsYXRlcyA9IHRpbnltY2VfdXRpbHM6OmxvYWRfdGVtcGxhdGVzX2J5X3R5cGUoJ2pzJyk7CgovLyBMaW5rIGEgZGVzaWduIGZvciBDU1MKJGRlc2lnbnMgPSBDbXNMYXlvdXRDb2xsZWN0aW9uOjpnZXRfYWxsKCk7CgoKCi8vIEFTU0lHTiBGT1IgU01BUlRZCiRhc3NpZ25bJ21vZGUnXSA9ICRtb2RlOwokYXNzaWduWydwcm9maWxlJ10gPSAkcHJvZmlsZTsKCiRhc3NpZ25bJ3BsYXlncm91bmRfY29udGVudCddID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3BsYXlncm91bmRfY29udGVudCcsICcnKTsKCiRhc3NpZ25bJ3VzZXJncm91cHMnXSA9ICR1c2VyX2dyb3Vwc19zbWFydHk7CgokYXNzaWduWyd0ZW1wbGF0ZXMnXSA9ICR0ZW1wbGF0ZXM7CiRhc3NpZ25bJ2Rlc2lnbnMnXSA9ICRkZXNpZ25zOwoKaWYgKHZlcnNpb25fY29tcGFyZShDTVNfVkVSU0lPTiwgJzIuMi45OScpID4gMCkgewoJJGFzc2lnblsnY21zbXNfdmVyc2lvbl8yMyddID0gdHJ1ZTsKfQoKJHVzZXJpZCA9IGdldF91c2VyaWQoKTsKJGRlZmF1bHRfY21zX2xhbmd1YWdlID0gY21zX3VzZXJwcmVmczo6Z2V0X2Zvcl91c2VyKCR1c2VyaWQsICdkZWZhdWx0X2Ntc19sYW5ndWFnZScpOwoKCi8vIERJU1BMQVkKY21zbXMoKS0+R2V0U21hcnR5KCktPmFzc2lnbigkYXNzaWduKTsKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdhZG1pbl9lZGl0cHJvZmlsZS50cGwnKTsKCgo=]]></data>
	</file>
	<file>
	  <filename>/action.admin_setdefaultprofile.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0NNUyAtIENNUyBNYWRlIFNpbXBsZQojKGMpMjAwNCBieSBUZWQgS3VscCAodGVkQGNtc21hZGVzaW1wbGUub3JnKQojVmlzaXQgb3VyIGhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKI1RoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiNpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyhhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKI1RoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKI01FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKI0dOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiNZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKI0ZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKIwppZiggIWNtc21zKCkgKSBleGl0OwppZighJHRoaXMtPlZpc2libGVUb0FkbWluVXNlcigpICkgcmV0dXJuOwoKCmlmICghaXNzZXQoJHBhcmFtc1snaWRfcHJvZmlsZSddKSkgZXhpdDsKCi8vIFByb2ZpbGUgZXhpc3RzID8KaWYgKCRwcm9maWxlID0gbmV3IHRpbnltY2VfcHJvZmlsZSgoaW50KSRwYXJhbXNbJ2lkX3Byb2ZpbGUnXSkpCnsKCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdpZF9kZWZhdWx0X3Byb2ZpbGUnLCAkcHJvZmlsZS0+aWRfcHJvZmlsZSk7CgoJJHRoaXMtPlJlZGlyZWN0KCRpZCwnZGVmYXVsdGFkbWluJywkcmV0dXJuaWQsYXJyYXkoIm1vZHVsZV9tZXNzYWdlIj0+JHRoaXMtPkxhbmcoImRlZmF1bHRfcHJvZmlsZV9zZXQiKSkpOwp9CgoKCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.ajax_getpages.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0NNUyAtIENNUyBNYWRlIFNpbXBsZQojKGMpMjAwNCBieSBUZWQgS3VscCAodGVkQGNtc21hZGVzaW1wbGUub3JnKQojVmlzaXQgb3VyIGhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKI1RoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiNpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyhhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKI1RoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKI01FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKI0dOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiNZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKI0ZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKIwppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CmlmKCAhY2hlY2tfbG9naW4oRkFMU0UpICkgZXhpdDsgLy8gYWRtaW4gb25seS4uLi4gYnV0IGFueSBhZG1pbgoKJGhhbmRsZXJzID0gb2JfbGlzdF9oYW5kbGVycygpOwpmb3IgKCRjbnQgPSAwOyAkY250IDwgc2l6ZW9mKCRoYW5kbGVycyk7ICRjbnQrKykgewogICAgb2JfZW5kX2NsZWFuKCk7Cn0KCiRvdXQgPSBudWxsOwokdGVybSA9IHRyaW0oc3RyaXBfdGFncyhnZXRfcGFyYW1ldGVyX3ZhbHVlKCRfUkVRVUVTVCwndGVybScpKSk7CiRhbGlhcyA9IHRyaW0oc3RyaXBfdGFncyhnZXRfcGFyYW1ldGVyX3ZhbHVlKCRfUkVRVUVTVCwnYWxpYXMnKSkpOwoKaWYgKCRhbGlhcykgewogICAgJHF1ZXJ5ID0gJ1NFTEVDVCBjb250ZW50X2lkLGNvbnRlbnRfbmFtZSxtZW51X3RleHQsY29udGVudF9hbGlhcyxpZF9oaWVyYXJjaHkgRlJPTSAnLkNNU19EQl9QUkVGSVguJ2NvbnRlbnQKICAgICAgICAgICAgICBXSEVSRSBjb250ZW50X2FsaWFzID0gPyBBTkQgYWN0aXZlID0gMSc7CiAgICAkZGJyID0gJGRiLT5HZXRSb3coJHF1ZXJ5LGFycmF5KCRhbGlhcykpOwogICAgaWYoIGlzX2FycmF5KCRkYnIpICYmIGNvdW50KCRkYnIpICkgewogICAgICAgICRsYmwgPSAieyRkYnJbJ2NvbnRlbnRfbmFtZSddfSAoeyRkYnJbJ2lkX2hpZXJhcmNoeSddfSkiOwogICAgICAgICRvdXQgPSBbCiAgICAgICAgICAgICdsYWJlbCcgPT4gJGxibCwKICAgICAgICAgICAgJ3ZhbHVlJyA9PiAkZGJyWydjb250ZW50X2FsaWFzJ10sCiAgICAgICAgICAgICd0aXRsZScgPT4gJGRiclsnY29udGVudF9uYW1lJ10sCiAgICAgICAgXTsKICAgICAgICBlY2hvIGpzb25fZW5jb2RlKCRvdXQpOwogICAgfQp9IGVsc2VpZiAoJHRlcm0pIHsKICAgICR0ZXJtID0gIiV7JHRlcm19JSI7CiAgICAkcXVlcnkgPSAnU0VMRUNUIGNvbnRlbnRfaWQsY29udGVudF9uYW1lLG1lbnVfdGV4dCxjb250ZW50X2FsaWFzLGlkX2hpZXJhcmNoeSBGUk9NICcuQ01TX0RCX1BSRUZJWC4nY29udGVudAogICAgICAgICAgICBXSEVSRSAoY29udGVudF9uYW1lIExJS0UgPyBPUiBtZW51X3RleHQgTElLRSA/IE9SIGNvbnRlbnRfYWxpYXMgTElLRSA/KQogICAgICAgICAgICAgIEFORCBhY3RpdmUgPSAxCiAgICAgICAgICAgIE9SREVSIEJZIGRlZmF1bHRfY29udGVudCBERVNDLCBoaWVyYXJjaHkgQVNDJzsKICAgICRkYnIgPSAkZGItPkdldEFycmF5KCRxdWVyeSxhcnJheSgkdGVybSwkdGVybSwkdGVybSkpOwogICAgaWYoIGlzX2FycmF5KCRkYnIpICYmIGNvdW50KCRkYnIpICkgewogICAgICAgIC8vIGZvdW5kIHNvbWUgcGFnZXMgdG8gbWF0Y2gKICAgICAgICAkb3V0ID0gYXJyYXkoKTsKICAgICAgICAvLyBsb2FkIHRoZSBjb250ZW50IG9iamVjdHMKICAgICAgICBmb3JlYWNoKCAkZGJyIGFzICRyb3cgKSB7CiAgICAgICAgICAgICRsYmwgPSAieyRyb3dbJ2NvbnRlbnRfbmFtZSddfSAoeyRyb3dbJ2lkX2hpZXJhcmNoeSddfSkiOwogICAgICAgICAgICAkb3V0W10gPSBbCiAgICAgICAgICAgICAgICAnbGFiZWwnID0+ICRsYmwsCiAgICAgICAgICAgICAgICAndmFsdWUnID0+ICRyb3dbJ2NvbnRlbnRfYWxpYXMnXSwKICAgICAgICAgICAgICAgICd0aXRsZScgPT4gJHJvd1snY29udGVudF9uYW1lJ10sCiAgICAgICAgICAgIF07CiAgICAgICAgfQogICAgICAgIGVjaG8ganNvbl9lbmNvZGUoJG91dCk7CiAgICB9Cn0KCmV4aXQ7]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAgLyogbm90aGluZyBoZXJlICovID8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0NNUyAtIENNUyBNYWRlIFNpbXBsZQojKGMpMjAwNCBieSBUZWQgS3VscCAodGVkQGNtc21hZGVzaW1wbGUub3JnKQojVmlzaXQgb3VyIGhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKI1RoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiNpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyhhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKI1RoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKI01FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKI0dOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiNZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKI0ZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKIwppZiggIWNtc21zKCkgKSBleGl0OwppZighJHRoaXMtPlZpc2libGVUb0FkbWluVXNlcigpICkgcmV0dXJuOwoKLy8gR2V0IHByb2ZpbGVzIHRvIGRpc3BsYXkgdGhlIGxpc3QKJGFzc2lnblsncHJvZmlsZXMnXSA9IHRpbnltY2VfdXRpbHM6OmdldF9hbGxfcHJvZmlsZXNfZm9yX2FkbWluX2xpc3QoKTsKJGFzc2lnblsnaWRfZGVmYXVsdF9wcm9maWxlJ10gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnaWRfZGVmYXVsdF9wcm9maWxlJywgMCk7CgpjbXNtcygpLT5HZXRTbWFydHkoKS0+YXNzaWduKCRhc3NpZ24pOwoKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdkZWZhdWx0YWRtaW4udHBsJyk7]]></data>
	</file>
	<file>
	  <filename>/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/customdropdown.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhFQAVAOeZAAAAAAICAAMCAAgGAQkGAAgHAwsJBhQSChgSAiYcAisgAjQuHUlCLVpDBl9PIXlbC31dCIFfBotmAnxnLZyGSdCaCNKbCMOcNKmooeanAOaoAuaoBOapBuapB+apCOaqCOaqCeaqCueqCeeqCueqC+erC+erDOerDeesDuesD+esEOetEeetEuitEOetE+iuFOiuFdqvPOivFuivF+iwGeawH+iwHOixG+ixHOmxG+mxHemxINyyQumyH+izIOmzIuqzIOm0Jum0KOq2Leu3K+q3Luq4Luu4L+q5M+u5M+u5Ney6NOq7N+u7OOy7Nuu7Oey8Oey8POu9Puy9Puy9QO29P+y+P+y+QOy+Q+zARe3ARe3BTO3DTu7EUe7EU+3FVO7HWu7HXO7HXu7IXO7IX+/KY+/LZ+/Mae/MavDMafDMavDNbPHNcPDObfDQePLRfPLTf/LTgfPUhPHVgfLVhvLWiPLXh/LXivPYjfPYjvPZj/PZkfPak/PalfTalPTdnfTen/TeovXfo/XgpfXhp/biqfbjrfbltffltffovfjou/jpvfjsyPnsx/jtzPnty/ntzPnuzvnv0/rz3Pr15Pv47vz+/v3+/v3//v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAP8ALAAAAAAVABUAQAj+AP8JHEiwoMF/Wq58+bPIyQoPJkJ8MDFiRqGD/56AOIEixYojMQYAUJAiAQACPDAOhHKjBIsgeVQKvCNEDqYFAABgSFRJYE4AMgn+DFoQDR2VlvwAUZFCBRErU7KMeTOop8E9A9Ws0ECGipc4W3IYgaRSkp4pKDrUQABAgIUSFQIAMGAQjxsxUoogYXIhZ4GcRAleCkzwkR0fM87IROQlCphIi7Bs6NHlzkWDfMJkEHGkCYwVL2TQsPGjCiWDa8wINKSjxBMcQ5RkCKFCkcwyJ3YAasOFkKM0c4IeYsNoEoWcDOoEanQAMME+JFysMJFkyYOcEVJAyDmhIJwWGjgSjAixYkaDnBJyOhBE+KdzgQEBADs=]]></data>
	</file>
	<file>
	  <filename>/images/icon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlh3ADCAOebAICA/4D//yRkrSRtrSRttiNqsCNquRtmqRtqsRpiqB1mrxhYmBhYmxhbmxhbnhhboRheoRhepBtepBthpBthpxthqhtkqhtkrRtnsBtnsx5nsB5nsx5qsx5qth5quR5tuR5tvB5wvB5wvx5wwh5zwh5zxSFzwiFzxSNgnCt6yBtlrRtlrxplqxpnsBljqRljqxllrRllrxtjqxtlqxtlrRtlrxtnrxhiqRhkqxtkqxhjqhhlrhpjqhpjrBplrBplrhZWlRZWlxZYlxZYmRZamRZamxZanRZcnRZcnxhamxhanRhcnRhcnxhcoRhenxheoRheoxhgoxhgpRhgpxhipxpgpRpgpxpipxpiqRpiqxpkqRpkqxpkrRpmrRpmrxpmsRposRxmrRxmrxxmsRxosRxosxxqsxxqtRxqtxxstxxsuRxsuxxuux5stx5suR5sux5uuR5uux5uvR5wvR5wvx5wwR5ywR5ywyBywSBywyB0wyB0xVyPw1yPxVyRxWyVv2yVwWyXwWyXw2yZw2yZxW6Zw26ZxW6Zx26bx26byW6dyW6dy26dzW6fzXCdy3CfzXCfz3Chz3Ch0XCh03Cj03Cj1XCj13Kj1XKj13Kl13Kl2f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH5BAEAAP8ALAAAAADcAMIAAAj+AP8JHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNq3Mixo8ePIC3m2ROypMmTKFMS3KNnD0mVMGPKnJnwTp48NvXQ3Mmz58c7evTk0ZPTp9GjSBsKxXmTaZ6kUKMexWmTqtM7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]]></data>
	</file>
	<file>
	  <filename>/images/icon.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/images/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLy8gQQokbGFuZ1snYWRtaW5kZXNjcmlwdGlvbiddID0gJ0EgZnVsbCBmZWF0dXJlZCBXWVNJV1lHLWVkaXRvciBwcm92aWRpbmcgZmlsZSBtYW5hZ2VtZW50IGFuZCBpbWFnZSBtYW5hZ2VtZW50IGZ1bmN0aW9uYWxpdHknOwokbGFuZ1snYWR2YW5jZWRfbWVudSddID0gJ0FkdmFuY2VkIG1lbnUnOwokbGFuZ1snYXBwbHknXSA9ICdBcHBseSc7CiRsYW5nWydhdXRvcmVzaXplJ10gPSAnQXV0byByZXNpemUnOwoKLy8gQgokbGFuZ1snYmxvY2tfZm9ybWF0cyddID0gJ0F2YWlsYWJsZSBmb3JtYXRzJzsKJGxhbmdbJ2J1dHRvbl9uYW1lJ10gPSAnQnV0dG9uIG5hbWUnOwoKLy8gQwokbGFuZ1snY2FuY2VsJ10gPSAnQ2FuY2VsJzsKJGxhbmdbJ2Ntc21zX2xpbmtlciddID0gJ0xpbmsgdG8gY29udGVudCBwYWdlJzsKJGxhbmdbJ2NvbnRleHRtZW51J10gPSAnQ29udGV4dCBtZW51JzsKJGxhbmdbJ2NvbnRleHRtZW51X2NvbnRlbnQnXSA9ICdDb250ZXh0IG1lbnUgY29udGVudCc7CiRsYW5nWydjb3B5J10gPSAnY29weSc7CiRsYW5nWydjb3B5X3Byb2ZpbGUnXSA9ICdDb3B5IHByb2ZpbGUnOwokbGFuZ1snY3NzX2NsYXNzZXMnXSA9ICdDU1MgY2xhc3Nlcyc7CiRsYW5nWydjc3NfZWRpdG9yX3JlbmRlciddID0gJ0NTUyBlZGl0b3IgcmVuZGVyJzsKJGxhbmdbJ2Nzc19maWxlcyddID0gJy4uLiBvciBDU1MgZmlsZXMnOwokbGFuZ1snY3NzX2ZpbGVzX2luZm8nXSA9ICdPbmUgZmlsZSBwZXIgbGluZSwgcmVsYXRpdmUgdG8gdGhlIENNU01TIHdlYnNpdGUgcm9vdCBwYXRoLiBFeDogPGVtPmFzc2V0cy9jc3Mvc3R5bGVzLmNzczwvZW0+JzsKJGxhbmdbJ2N1c3RvbV9kcm9wZG93biddID0gJ0N1c3RvbSBkcm9wZG93bic7CiRsYW5nWydjdXN0b21fZHJvcGRvd25fdGl0bGUnXSA9ICdDdXN0b20gZHJvcGRvd24gdGl0bGUnOwoKLy8gRAokbGFuZ1snZGVmYXVsdCddID0gJ0RlZmF1bHQnOwokbGFuZ1snZGVmYXVsdF9kZXNpZ25tYW5hZ2VyX3RlbXBsYXRlJ10gPSAnRGVmYXVsdCB0ZW1wbGF0ZSBmcm9tIHRoZSBEZXNpZ25NYW5hZ2VyJzsKJGxhbmdbJ2RlZmF1bHRfcHJvZmlsZV9zZXQnXSA9ICdEZWZhdWx0IHByb2ZpbGUgc3VjY2Vzc2Z1bGx5IGNoYW5nZWQnOwokbGFuZ1snZGVsZXRlX3Byb2ZpbGUnXSA9ICdEZWxldGUgcHJvZmlsZSc7CiRsYW5nWydkZWxldGVfcHJvZmlsZV9jb25maXJtJ109J0FyZSB5b3Ugc3VyZSB0aGlzIHByb2ZpbGUgc2hvdWxkIGJlIGRlbGV0ZWQ/JzsKJGxhbmdbJ2Rlc2lnbl9jc3MnXSA9ICdEZXNpZ24gdG8gdXNlIGZvciBDU1Mgc3R5bGVzaGVldHMnOwokbGFuZ1snZG9jdW1lbnRhdGlvbiddID0gJ0RvY3VtZW50YXRpb24nOwoKLy8gRQokbGFuZ1snZWRpdF9wcm9maWxlJ10gPSAnRWRpdCBwcm9maWxlJzsKJGxhbmdbJ2VuYWJsZV9jdXN0b21fZHJvcGRvd24nXSA9ICdFbmFibGUgY3VzdG9tIGRyb3Bkb3duJzsKJGxhbmdbJ2VuYWJsZV9saW5rZXInXSA9ICdMb2FkIHRoZSBDTVNNUyBsaW5rZXIgcGx1Z2luIChsaW5rcyB0byBjb250ZW50IHBhZ2VzKSc7CiRsYW5nWydlbmFibGVfdXNlcl90ZW1wbGF0ZXMnXSA9ICdFbmFibGUgdXNlciB0ZW1wbGF0ZXMnOwokbGFuZ1snZXJyb3JfZGVsZXRlX3Byb2ZpbGUnXSA9ICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgdGhlIGRlbGV0ZSBwcm9jZXNzJzsKJGxhbmdbJ2Vycm9yX2Nhbm5vdF9kZWxldGVfZGVmYXVsdF9wcm9maWxlJ10gPSAnRXJyb3I6IHRoZSBkZWZhdWx0IHByb2ZpbGUgY2Fubm90IGJlIGRlbGV0ZWQnOwokbGFuZ1snZXJyb3Jfc2F2aW5nX3Byb2ZpbGUnXSA9ICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgdGhlIHNhdmUgcHJvY2Vzcyc7CiRsYW5nWydleHRlcm5hbF9tb2R1bGVzJ10gPSAnRXh0ZXJuYWwgbW9kdWxlcyc7CiRsYW5nWydleHRlcm5hbF9tb2R1bGVzX3Nob3dfbWVudXRleHQnXSA9ICdTaG93IHRoZSBidXR0b24gdGV4dCBvbiB0aGUgdG9vbGJhciAtIHVuY2hlY2tlZCA9IGljb24gb25seSc7CiRsYW5nWydleHRyYV9qcyddID0gJ0V4dHJhIEphdmFTY3JpcHQgb3B0aW9ucyBmb3IgdGhlIGluaXQgc2NyaXB0JzsKCi8vIEYKJGxhbmdbJ2ZpbGVtYW5hZ2VyJ10gPSAnRmlsZSBtYW5hZ2VyJzsKJGxhbmdbJ2ZpbGVtYW5hZ2VyX3R1aV9hY3RpdmUnXSA9ICdFbmFibGUgdGhlIFRVSSBwaG90byBlZGl0b3InOwokbGFuZ1snZmlsZW1hbmFnZXJfY2htb2RfZGlycyddID0gJ0NITU9EIGRpcmVjdG9yaWVzJzsKJGxhbmdbJ2ZpbGVtYW5hZ2VyX2NobW9kX2ZpbGVzJ10gPSAnQ0hNT0QgZmlsZXMnOwokbGFuZ1snZmlsZW1hbmFnZXJfY29weV9jdXRfZGlycyddID0gJ0NvcHkgYW5kIGN1dCBkaXJlY3Rvcmllcyc7CiRsYW5nWydmaWxlbWFuYWdlcl9jb3B5X2N1dF9maWxlcyddID0gJ0NvcHkgYW5kIGN1dCBmaWxlcyc7CiRsYW5nWydmaWxlbWFuYWdlcl9jcmVhdGVfZm9sZGVycyddID0gJ0NyZWF0ZSBmb2xkZXJzJzsKJGxhbmdbJ2ZpbGVtYW5hZ2VyX2NyZWF0ZV90ZXh0X2ZpbGVzJ10gPSAnQ3JlYXRlIHRleHQgZmlsZXMnOwokbGFuZ1snZmlsZW1hbmFnZXJfZGVsZXRlX2ZpbGVzJ10gPSAnRGVsZXRlIGZpbGVzJzsKJGxhbmdbJ2ZpbGVtYW5hZ2VyX2RlbGV0ZV9mb2xkZXJzJ10gPSAnRGVsZXRlIGZvbGRlcnMnOwokbGFuZ1snZmlsZW1hbmFnZXJfZHVwbGljYXRlX2ZpbGVzJ10gPSAnRHVwbGljYXRlIGZpbGVzJzsKJGxhbmdbJ2ZpbGVtYW5hZ2VyX2VkaXRfdGV4dF9maWxlcyddID0gJ0VkaXQgdGV4dCBmaWxlcyc7CiRsYW5nWydmaWxlbWFuYWdlcl9pbWFnZV9yZXNpemluZyddID0gJ0F1dG9tYXRpY2FsbHkgcmVzaXplIGltYWdlcyBhZnRlciB1cGxvYWQnOwokbGFuZ1snZmlsZW1hbmFnZXJfaW1hZ2VfcmVzaXppbmdfdGl0bGUnXSA9ICdBdXRvbWF0aWMgaW1hZ2UgcmVzaXppbmcnOwokbGFuZ1snZmlsZW1hbmFnZXJfaW1hZ2VfcmVzaXppbmdfaGVpZ2h0J10gPSAnTWF4IGltYWdlIGhlaWdodCBhZnRlciByZXNpemluZyc7CiRsYW5nWydmaWxlbWFuYWdlcl9pbWFnZV9yZXNpemluZ193aWR0aCddID0gJ01heCBpbWFnZSB3aWR0aCBhZnRlciByZXNpemluZyc7CiRsYW5nWydmaWxlbWFuYWdlcl9waG90b19lZGl0b3InXSA9ICdJbWFnZSBlZGl0b3InOwokbGFuZ1snZmlsZW1hbmFnZXJfcHJldmlld190ZXh0X2ZpbGVzJ10gPSAnUHJldmlldyB0ZXh0IGZpbGVzJzsKJGxhbmdbJ2ZpbGVtYW5hZ2VyX3JlbmFtZV9maWxlcyddID0gJ1JlbmFtZSBmaWxlcyc7CiRsYW5nWydmaWxlbWFuYWdlcl9yZW5hbWVfZm9sZGVycyddID0gJ1JlbmFtZSBmb2xkZXJzJzsKJGxhbmdbJ2ZpbGVtYW5hZ2VyX3VwbG9hZF9maWxlcyddID0gJ1VwbG9hZCBmaWxlcyc7CiRsYW5nWydmaWxlbWFuYWdlcl9vcHRpb25zJ10gPSAnRmlsZSBtYW5hZ2VyIG9wdGlvbnMnOwokbGFuZ1snZmlsZW1hbmFnZXJfdXNlJ10gPSAnRW5hYmxlIHRoZSBmaWxlIG1hbmFnZXInOwokbGFuZ1snZnJpZW5kbHluYW1lJ10gPSAnVGlueU1DRSBXWVNJV1lHIGVkaXRvcic7CiRsYW5nWydmb3JjZWRfcm9vdF9ibG9jayddID0gJ0ZvcmNlIHBhcmFncmFwaCBvbiBsaW5lIGJyZWFrJzsKCi8vIEcKJGxhbmdbJ2dlbmVyYWwnXSA9ICdHZW5lcmFsJzsKJGxhbmdbJ2dsb2JhbF9zZXR0aW5ncyddID0gJ0dsb2JhbCBzZXR0aW5ncyc7CiRsYW5nWydncm91cF9mcm9udGVuZCddID0gJ0Zyb250ZW5kIHVzZXJzJzsKCi8vIEgKJGxhbmdbJ2hlbHBfYWR2YW5jZWRfbWVudSddID0gJ0lmIHlvdSBhcmUgbG9va2luZyBmb3IgYW4gYWR2YW5jZWQgbWVudSBjdXN0b21pemF0aW9uLCB5b3VyIGNhbiB0dXJuIHRoaXMgb3B0aW9uIG9uLiBFZGl0IHRoZSBtZW51IGVudHJpZXMgaW4gdGhlIGZpZWxkIGJlbG93LiBVc2luZyB0aGF0IG9wdGlvbiB3aWxsIGRpc2FibGUgdGhlIHN0YW5kYXJkIG1lbnUuJzsKJGxhbmdbJ2hlbHBfYXV0b3Jlc2l6ZSddID0gJ0VuYWJsZSB0aGUgPGVtPmF1dG9yZXNpemU8L2VtPiBwbHVnaW4gdG8gYXV0b21hdGljYWxseSByZXNpemUgdGhlIGVkaXRvciBoZWlnaHQgYWNjb3JkaW5nIHRvIHRoZSBjb250ZW50IHNpemUnOwokbGFuZ1snaGVscF9jbXNtc19saW5rZXInXSA9ICdFbmFibGUgdGhlIDxlbT5jbXNtc19saW5rZXI8L2VtPiBwbHVnaW4gdG8gZWFzaWx5IGluc2VydCBsaW5rcyB0byBvdGhlciBjb250ZW50IHBhZ2VzLiBJZiB5b3UgbmVlZCB0aGlzIHRvb2wgaW4geW91ciBNZW51LCB5b3UgbXVzdCB1c2UgdGhlIDxlbT5BZHZhbmNlZCBtZW51PC9lbT4gaW4gdGhlIDxlbT5NZW51YmFyPC9lbT4gdGFiLCBhbmQgYWRkIDxlbT5jbXNtc19saW5rZXI8L2VtPiBpbiB0aGUgcmlnaHQgc2VjdGlvbic7CiRsYW5nWydoZWxwX3R1aV9lZGl0b3InXSA9ICdUVUkgaW1hZ2UgZWRpdG9yIGlzIGEgZnVsbC1mZWF0dXJlZCBpbWFnZSBlZGl0b3IgdGhhdCBjb21lcyB3aXRoIGNyb3AsIHJlc2l6ZSwgdGV4dCwgc2hhcGUgdG9vbHMsIGFuZCBzb21lIGZpbHRlcnMuIE1vcmUgYWJvdXQgaXQ6IDxhIGhyZWY9Imh0dHBzOi8vdWkudG9hc3QuY29tL3R1aS1pbWFnZS1lZGl0b3IvIiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6Ly91aS50b2FzdC5jb20vdHVpLWltYWdlLWVkaXRvci88L2E+JzsKJGxhbmdbJ2hlbHBfY3NzX2ZpbGVzJ10gPSAnSGVyZSB5b3UgY2FuIGdpdmUgYSBsaXN0IG9mIENTUyBmaWxlcyB0byBiZSBpbmNsdWRlZCBpbiBUaW55TUNFLiBUaGlzIG9wdGlvbiB3aWxsIG9ubHkgd29yayBpZiB0aGUge2NvbnRlbnR9IHRhZyBoYXMgbm90IGEgPGVtPmNzc25hbWU8L2VtPiBwYXJhbWV0ZXIsIGFuZCBpZiB0aGVyZSBpcyBubyA8ZW0+RGVzaWduPC9lbT4gc2VsZWN0ZWQuPGJyPlBsZWFzZSB3cml0ZSBvbmUgY3NzIGZpbGUgcGVyIGxpbmUsIHdpdGggYSBwYXRoIHJlbGF0aXZlIHRvIHRoZSBDTVNNUyByb290IGRpcmVjdG9yeS4nOwokbGFuZ1snaGVscF9kZXNpZ25fY3NzJ10gPSAnVGlueU1DRSBjYW4gbG9hZCBhIHNldCBvZiBzdHlsZXNoZWV0cyBmcm9tIGEgZGVzaWduIGRlZmluZWQgaW4gdGhlIERlc2lnbiBNYW5hZ2VyIGluIG9yZGVyIHRvIGltcHJvdmUgdGhlIHZpc3VhbCBleHBlcmllbmNlLiBOb3RlIHRoYXQgaWYgdGhlIHtjb250ZW50fSB0YWcgaGFzIGEgPGVtPmNzc25hbWU8L2VtPiBwYXJhbWV0ZXIsIHRoaXMgcHJlZmVyZW5jZSB3aWxsIGJlIGlnbm9yZWQgaW4gdGhlIGRlZmF1bHQgSlMgdGVtcGxhdGUgKGJ1dCB5b3UgY2FuIGNyZWF0ZSBhIG5ldyBKUyB0ZW1wbGF0ZSB0byBjaGFuZ2UgdGhhdCBiZWhhdmlvcikuPGJyPjxicj48c3Ryb25nPkltcG9ydGFudDo8L3N0cm9uZz4gaWYgeW91XCdyZSB1c2luZyB0aGF0IGZlYXR1cmUsIHlvdSBtdXN0IGNsZWFyIHRoZSBDTVMgY2FjaGUgYWZ0ZXIgZXZlcnkgc3R5bGVzaGVldCBjaGFuZ2UgaW4gb3JkZXIgdG8gc2VlIGl0IGluIFRpbnlNQ0UuJzsKJGxhbmdbJ2hlbHBfZW5hYmxlX2N1c3RvbV9kcm9wZG93biddID0gJ0FkZHMgYSBzcGVjaWFsIGJ1dHRvbiBzbyB0aGUgZWRpdG9ycyBjYW4gYWRkIHNvbWUgc25pcHBldHMgKFNtYXJ0eSB0YWdzIG9yIG5vdCkgdG8gdGhlaXIgY29udGVudC4gRG9uXCd0IGZvcmdldCB0byBhZGQgdGhlIDxlbT48c3Ryb25nPmN1c3RvbWRyb3Bkb3duPC9zdHJvbmc+PC9lbT4gYnV0dG9uIHRvIHlvdXIgdG9vbGJhciBhbmQgeW91ciBjdXN0b20gbWVudWJhci4nOwokbGFuZ1snaGVscF9leHRlcm5hbF9tb2R1bGVzJ10gPSAnU29tZSB0aGlyZC1wYXJ0eSBtb2R1bGVzIGNhbiBnaXZlIHRvIFRpbnlNQ0UgYSBtZW51IHRvIGluY2x1ZGUgaXRlbXMuIFBsZWFzZSBzZWxlY3Qgd2hpY2ggbW9kdWxlIHNob3VsZCBiZSBsb2FkZWQuIERvblwndCBmb3JnZXQgdG8gYWRkIHRoZSBtb2R1bGUgYnV0dG9uIHRvIHRoZSB0b29sYmFyIGlmIHlvdSB3YW50IGl0IGhlcmUuIFRoZSA8ZW0+SW5zZXJ0PC9lbT4gbWVudSB3aWxsIHNob3cgaXQgdG9vLic7CiRsYW5nWydoZWxwX2V4dHJhX2pzJ10gPSAnU29tZSBKYXZhU2NyaXB0IGNvZGUgeW91IGNhbiBhZGQgdG8gdGhlIGluaXRpYWxpemF0aW9uIHNjcmlwdCB0byBhZGQgY3VzdG9tIG9wdGlvbnMgb3IgYmVoYXZpb3IuIFBsZWFzZSBzZXBhcmF0ZSBldmVyeSBvcHRpb24gd2l0aCBhIGNvbW1hLiBDaGVjayB0aGUgVGlueU1DRSBjb25maWd1cmF0aW9ucyBvcHRpb25zIHRvIHNlZSB3aGF0IHlvdSBjYW4gdXNlLic7CiRsYW5nWydoZWxwX2ZpbGVtYW5hZ2VyX2ltYWdlX3Jlc2l6aW5nJ10gPSAnQWZ0ZXIgYW4gaW1hZ2UgdXBsb2FkLCB0aGUgZmlsZSBtYW5hZ2VyIGNhbiBhdXRvbWF0aWNhbGx5IHJlc2l6ZSB0aGUgaW1hZ2UgdG8gdGhlIGRlc2lyZWQgbWF4aW11bSBkaW1lbnNpb25zLiBVc2VmdWwgdG8gcHJldmVudCB1c2VycyBmcm9tIGluY2x1ZGluZyB0b28gYmlnL2xhcmdlIGltYWdlcyBpbiB0aGVpciBwYWdlcy4nOwokbGFuZ1snaGVscF9maWxlbWFuYWdlcl91c2UnXSA9ICdFbmFibGUgdGhlIGZpbGVtYW5hZ2VyIC0gTm90ZSB0aGF0IGZvciBzZWN1cml0eSByZWFzb25zLCB0aGUgZmlsZW1hbmFnZXIgd2lsbCBuZXZlciBiZSBsb2FkZWQgb24gdGhlIGZyb250ZW5kLjxicj48YnI+VGhlIGZpbGUgbWFuYWdlciB3aWxsIGJlIGxvYWRlZCBpbiB0aGUgPGVtPmFkZCBsaW5rPC9lbT4gYW5kIDxlbT5pbnNlcnQgaW1hZ2U8L2VtPiBkaWFsb2dzLCBidXQgeW91IGNhbiBhZGQgYSBidXR0b24gdG8geW91ciB0b29sYmFyIHRvbyB3aXRoIHRoZSBidXR0b246IDxlbT5yZXNwb25zaXZlZmlsZW1hbmFnZXI8L2VtPi4nOwokbGFuZ1snaGVscF9mb3JjZWRfcm9vdF9ibG9jayddID0gJ1RoaXMgb3B0aW9uIGVuYWJsZXMgeW91IHRvIG1ha2Ugc3VyZSB0aGF0IGFueSBub24gYmxvY2sgZWxlbWVudHMgb3IgdGV4dCBub2RlcyBhcmUgd3JhcHBlZCBpbiBibG9jayAocCkgZWxlbWVudHMuIEZvciBleGFtcGxlIDxzdHJvbmc+c29tZXRoaW5nPC9zdHJvbmc+IHdpbGwgcmVzdWx0IGluIG91dHB1dCBsaWtlOiAmbHQ7cCZndDs8c3Ryb25nPnNvbWV0aGluZzwvc3Ryb25nPiZsdDsvcCZndDsuPGJyPjxicj5JZiB1bmNoZWNrZWQsIHRoZSBlZGl0b3Igd2lsbCBuZXZlciBwcm9kdWNlIDxzdHJvbmc+Jmx0O3AmZ3Q7PC9zdHJvbmc+IHRhZ3Mgb24gZW50ZXIsIG9ubHkgYSA8c3Ryb25nPiZsdDticiZndDs8L3N0cm9uZz4uIFlvdSB3aWxsIGhhdmUgdG8gdXNlIFNoaWZ0K0VudGVyIHRvIHByb2R1Y2UgYSA8c3Ryb25nPiZsdDtwJmd0Ozwvc3Ryb25nPiB0YWcuJzsKJGxhbmdbJ2hlbHBfaW1hZ2VfY2xhc3NlcyddID0gJ0hlcmUgeW91IGNhbiB0ZWxsIFRpbnlNQ0Ugd2hpY2ggY2xhc3NlcyBjYW4gYmUgYXBwbGllZCB0byBhbiBpbWFnZS4gVGhlIHVzZXIgd2lsbCBiZSBhYmxlIHRvIGNob29zZSBpdCBmcm9tIHRoZSBhZGQvZWRpdCBpbWFnZSB3aW5kb3cuIFRoaXMgY2hvaWNlIHdpbGwgbm90IGJlIG1hbmRhdG9yeSBmb3IgdGhlIHVzZXIuJzsKJGxhbmdbJ2hlbHBfbGlua19jbGFzc2VzJ10gPSAnSGVyZSB5b3UgY2FuIHRlbGwgVGlueU1DRSB3aGljaCBjbGFzc2VzIGNhbiBiZSBhcHBsaWVkIHRvIGEgbGluay4gVGhlIHVzZXIgd2lsbCBiZSBhYmxlIHRvIGNob29zZSBpdCBmcm9tIHRoZSBhZGQvZWRpdCBsaW5rIHdpbmRvdy4gVGhpcyBjaG9pY2Ugd2lsbCBub3QgYmUgbWFuZGF0b3J5IGZvciB0aGUgdXNlci4nOwokbGFuZ1snaGVscF9qc190ZW1wbGF0ZSddID0gJ1RoZSBUaW55TUNFIG1vZHVsZSBjYW4gdXNlIGEgc3BlY2lmaWMgSmF2YVNjcmlwdCB0ZW1wbGF0ZS4gVGhpcyBpcyB1c2VmdWwgaWYgeW91IHdhbnQgdG8gY29tcGxldGVseSBjdXN0b21pemUgdGhlIEphdmFTY3JpcHQgdGhhdCBjb25maWd1cmVzIFRpbnlNQ0UuPGJyPjxicj5JZiB5b3Ugd2FudCB0byBmb2xsb3cgdGhlIGxhdGVzdCBKUyBjb25maWd1cmF0aW9uIHRlbXBsYXRlIHNoaXBwZWQgd2l0aCB0aGUgbW9kdWxlLCBzZWxlY3QgdGhlIDxlbT5PcmlnaW5hbCB0ZW1wbGF0ZSBzaGlwcGVkIHdpdGggdGhlIG1vZHVsZTwvZW0+Ljxicj48YnI+SWYgeW91IGFyZSBhIGRldmVsb3BlciwgeW91ciBjYW4gY2hhbmdlIHRoaXMgcGFyYW1ldGVyIHRvIHVzZSBhIHRlbXBsYXRlIGZyb20gdGhlIERlc2lnbk1hbmFnZXIgYW5kIGN1c3RvbWl6ZSBpdC4gQmUgYXdhcmUgdGhhdCB5b3UgbWF5IGhhdmUgdG8gZWRpdCB5b3VyIGN1c3RvbSBKUyBjb25maWd1cmF0aW9uIG9uIGEgbmV3IG1vZHVsZSByZWxlYXNlIHRvIHVzZSBuZXcgZmVhdHVyZXMuJzsKJGxhbmdbJ2hlbHBfbWVudWJhciddID0gJ1NldCB3aGljaCBtZW51cyBhcmUgZGlzcGxheWVkIHRvIHRoZSBlZGl0b3IsIGFuZCBpbiB3aGljaCBwb3NpdGlvbi4gVGFrZSBhIGxvb2sgYXQgdGhlIGRvY3VtZW50YXRpb24gdG8gc2VlIHdoaWNoIG9wdGlvbnMgeW91IGNhbiB1c2UuJzsKJGxhbmdbJ2hlbHBfcGx1Z2lucyddID0gJ1RpbnlNQ0UgY2FuIGluY2x1ZGUgZXh0ZXJuYWwgcGx1Z2lucyB0byBleHRlbmQgaXRzIGZ1bmN0aW9ucy4gQmVmb3JlIGFkZGluZyBhbnkgYnV0dG9uIHRvIHRoZSBtZW51IG9yIHRvb2xiYXIsIHlvdSBtYXkgaGF2ZSB0byBpbmNsdWRlIGl0IGhlcmUuIE5vdGUgdGhhdCB0aGUgPGVtPmNtc21zX2xpbmtlcjwvZW0+LCA8ZW0+dGVtcGxhdGU8L2VtPiwgPGVtPmNvbnRleHRtZW51PC9lbT4gYW5kIDxlbT5yZXNwb25zaXZlZmlsZW1hbmFnZXI8L2VtPiBwbHVnaW5zIGFyZSBhdXRvbWF0aWNhbGx5IGluY2x1ZGVkLjxicj5SZWFkIHRoZSBkb2N1bWVudGF0aW9uIHRvIGdldCBhIGNvbXBsZXRlIGxpc3Qgb2YgYXZhaWxhYmxlIHBsdWdpbnMuJzsKJGxhbmdbJ2hlbHBfcHJpb3JpdHknXSA9ICdUaGlzIHBhcmFtZXRlciBpcyB1c2VkIHRvIGNob29zZSB3aGljaCBwcm9maWxlIGhhcyB0aGUgcHJpb3JpdHkgd2hlbiBhIHVzZXIgaXMgaW4gbXVsdGlwbGUgdXNlciBncm91cHMgdGhhdCBoYXZlIHZhcmlvdXMgVGlueU1DRSBwcm9maWxlcy4gTG93ZXIgaXMgYmV0dGVyLjxicj48YnI+Rm9yIGluc3RhbmNlOiB1c2VyIDEgaXMgbGlua2VkIHRvICBncm91cHMgQSBhbmQgQy4gR3JvdXAgQSBoYXMgdGhlIFRpbnlNQ0UgcHJvZmlsZSBZLCBncm91cCBDIHRoZSBaLiBUaGUgcHJvZmlsZSB0aGUgdXNlciB3aWxsIGdldCB3aGVuIHVzaW5nIFRpbnlNQ0UgaXMgdGhlIG9uZSB0aGF0IGhhcyB0aGUgbG93ZXIgcHJpb3JpdHkgbnVtYmVyIGJldHdlZW4gWSBhbmQgWi4nOwokbGFuZ1snaGVscF9yZWxhdGl2ZV91cmxzJ10gPSAnSWYgY2hlY2tlZCwgYWxsIHRoZSBpbWFnZXMvZmlsZXMgdXJscyB3aWxsIGJlIGRlZmluZWQgcmVsYXRpdmUgdG8gdGhlIHJvb3QgdXJsIChleGFtcGxlOiA8ZW0+L3VwbG9hZHMvaW1hZ2VzL215aW1hZ2UuanBnPC9lbT4pLjxicj48YnI+SWYgdW5jaGVja2VkLCB0aGUgcm9vdCB1cmwgd2lsbCBhbHdheXMgYmUgaW5jbHVkZWQgaW4gdGhlIHNvdXJjZSBjb2RlIChleGFtcGxlOiA8ZW0+aHR0cDovL3d3dy5teS13ZWJzaXRlLmNvbS91cGxvYWRzL2ltYWdlcy9teWltYWdlLmpwZzwvZW0+KS4nOwokbGFuZ1snaGVscF9zaG93X3N0YXR1c2JhciddID0gJ1Nob3cgb3IgaGlkZSB0aGUgZWRpdG9yIHN0YXR1c2Jhci4gUGxlYXNlIG5vdGUgdGhhdCBlbmFibGluZyB0aGUgcmVzaXplIGZ1bmN0aW9uIHdpbGwgZm9yY2UgdGhlIHN0YXR1c2JhciB0byBiZSBzaG93bi4nOwokbGFuZ1snaGVscF9zdHlsZV9mb3JtYXRzJ10gPSAnVGhlIGVkaXRvciB1c2VycyBjYW4gaW5zZXJ0IGZvcm1hdHRlZCB0YWdzIHRvIGNvbnRlbnQgd2l0aCB0aGUgPGVtPkZvcm1hdHM8L2VtPiBkcm9wZG93biBtZW51LiBIZXJlIHlvdSBjYW4gZGVmaW5lIHdoaWNoIHN0eWxlIHdpbGwgYmUgYXZhaWxhYmxlIGluIHRoZSBkcm9wZG93bi4gTm90ZSB0aGF0IHRoaXMgd2lsbCBub3QgZGVmaW5lIGFueSB2aXN1YWwgc3R5bGVzIGZvciBDU1MgY2xhc3Nlcywgb25seSBnaXZlIHRoZSBjbGFzcyBuYW1lIHRoZSB0YWcuIFlvdSBtdXN0IGFkZCB0aGUgcHJvcGVyIENTUyBydWxlcyBpbiB5b3VyIENTUyBmaWxlKHMpIHRvIGdldCBhIHZpc3VhbCByZW5kZXIuIFRha2UgYSBsb29rIGF0IHRoZSBUaW55TUNFIGRvY3VtZW50YXRpb24gdG8gY29uZmlndXJlIHRoYXQgb3B0aW9uLjxicj48YnI+RG9uXCd0IGZvcmdldCB0byBhZGQgdGhlIDxlbT48c3Ryb25nPnN0eWxlc2VsZWN0PC9zdHJvbmc+PC9lbT4gYnV0dG9uIHRvIHlvdXIgdG9vbGJhciBpZiB5b3Ugd2FudCBpdCBoZXJlJzsKCiRsYW5nWydoZWxwX3Rvb2xiYXInXSA9ICdEZWZpbmUgYWxsIHRoZSBidXR0b25zIHlvdSB3YW50IHRvIGJlIGRpc3BsYXllZCBvbiB0aGUgdG9vbGJhciAodGhlIGljb25zIGJhcikuIE5vdGUgdGhhdCB5b3Ugd2lsbCBuZWVkIHRvIGxvYWQgdGhlIGFwcHJvcHJpYXRlIHBsdWdpbnMgZm9yIHNvbWUgYnV0dG9ucy4nOwokbGFuZ1snaGVscF91c2VfY3VzdG9tX2Jsb2NrX2Zvcm1hdHMnXSA9ICdDdXN0b21pemUgdGhlIGZvcm1hdHMgZHJvcGRvd24gdG8gZ2l2ZSB5b3VyIHVzZXJzIG9ubHkgdGhlIGZvcm1hdHMgeW91IHdhbnQgdGhlbSB0byB1c2UuIFRoaXMgd2lsbCBvbmx5IHdvcmsgd2l0aCB0aGUgPGVtPmZvcm1hdHNlbGVjdDwvZW0+IGJ1dHRvbiwgYW5kIHdpdGggYmxvY2stbGV2ZWwgdGFnIHR5cGVzIChoMS4uNiwgZGl2LCBwcmUsIC4uLiknOwokbGFuZ1snaGVscF91c2VyX3RlbXBsYXRlcyddID0gJ1VzZXIgdGVtcGxhdGVzIGFyZSBIVE1MIHRlbXBsYXRlcy9ibG9ja3MgdGhhdCBUaW55TUNFIHVzZXJzIGNhbiBlYXNpbHkgaW5jbHVkZSBpbiB0aGUgY29udGVudCB1c2luZyB0aGUgPGVtPnRlbXBsYXRlPC9lbT4gcGx1Z2luLiBZb3UgY2FuIGNyZWF0ZSBhcyBtYW55IHVzZXIgdGVtcGxhdGVzIGFzIHlvdSB3YW50IGluIHRoZSBDTVNNUyBEZXNpZ24gTWFuYWdlciAodGVtcGxhdGUgdHlwZTogPGVtPlRpbnlNQ0UgdXNlciB0ZW1wbGF0ZTwvZW0+KSBhbmQvb3IgYXMgZmlsZXMgaW4gYSBzcGVjaWZpYyBkaXJlY3RvcnkgKHNlZSBiZWxvdykuPGJyPjxicj5PbmNlIGVuYWJsZWQsIGRvblwndCBmb3JnZXQgdG8gYWRkIHRoZSA8ZW0+dGVtcGxhdGU8L2VtPiBidXR0b24gdG8geW91IHRvb2xiYXIsIGlmIG5lZWRlZC4gSXQgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBtZW51YmFyLic7CiRsYW5nWydoZWxwX3VzZXJfdGVtcGxhdGVzX2ZpbGVzX2RpciddID0gJ0lmIHlvdSB3YW50IHRvIHVzZSBmaWxlIHRlbXBsYXRlcywgZmlsbCB0aGF0IGZpZWxkIHdpdGggdGhlIHBhdGggb2YgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRob3NlIHRlbXBsYXRlcyAoZXh0ZW5zaW9uIC50cGwpLiBSZWxhdGl2ZSB0byB0aGUgQ01TIHJvb3QgZGlyLjxicj5FeDogPGVtPmFzc2V0cy90aW55bWNlX3RlbXBsYXRlczwvZW0+JzsKJGxhbmdbJ2hlbHBfdXNlcmdyb3VwcyddID0gJ1NlbGVjdCB3aGljaCB1c2VyIGdyb3VwcyB3aWxsIHVzZSB0aGUgY3VycmVudCBUaW55TUNFIHByb2ZpbGUuIE5vdGUgdGhhdCBzZWxlY3RpbmcgYSB1c2VyIGdyb3VwIHRoYXQgaXMgY3VycmVudGx5IGxpbmtlZCB0byBhbm90aGVyIHByb2ZpbGUgd2lsbCByZW1vdmUgdGhlIGN1cnJlbnQgYXNzb2NpYXRpb24uIElmIG5vIHByb2ZpbGUgaXMgZm91bmQgZm9yIGEgdXNlciBncm91cCwgdGhlIGRlZmF1bHQgcHJvZmlsZSB3aWxsIGJlIHVzZWQuJzsKCi8vIEkKJGxhbmdbJ2lkJ10gPSAnSUQnOwokbGFuZ1snaW1hZ2VfYWR2dGFiJ10gPSAnRW5hYmxlIHRoZSBhZHZhbmNlZCB0YWIgZm9yIGltYWdlcyAoc3R5bGUsIHNwYWNpbmcsIGJvcmRlciknOwokbGFuZ1snaW1hZ2VfY2xhc3NlcyddID0gJ0NTUyBjbGFzc2VzIHRoYXQgY2FuIGJlIHVzZWQgZm9yIGltYWdlcyc7CiRsYW5nWydpbWFnZV9jbGFzc2VzX2luZm8nXSA9ICdPbmUgY2xhc3MgcGVyIGxpbmUsIGV4YW1wbGU6IDxjb2RlPjxlbT5Cb3JkZXJlZCBpbWFnZT1ib3JkZXJlZCBib3JkZXItcm91bmQ8L2VtPjwvY29kZT4nOwokbGFuZ1snaW1hZ2VfcGx1Z2luJ10gPSAnSW1hZ2UgcGx1Z2luIG9wdGlvbnMnOwokbGFuZ1snaW5mb19saW5rZXJfYXV0b2NvbXBsZXRlJ10gPSAnVGhpcyBpcyBhbiBhdXRvIGNvbXBsZXRlIGZpZWxkLiBCZWdpbiBieSB0eXBpbmcgYSBmZXcgY2hhcmFjdGVycyBvZiB0aGUgZGVzaXJlZCBwYWdlIGFsaWFzLCBtZW51IHRleHQsIG9yIHRpdGxlLiBBbnkgbWF0Y2hpbmcgaXRlbXMgd2lsbCBiZSBkaXNwbGF5ZWQgaW4gYSBsaXN0Lic7CiRsYW5nWydpbnN0YWxsX3Byb2ZpbGVfYWRtaW4nXSA9ICdBZG1pbmlzdHJhdG9ycyc7CiRsYW5nWydpbnN0YWxsX3Byb2ZpbGVfYWR2YW5jZWQnXSA9ICdBZHZhbmNlZCc7CiRsYW5nWydpbnN0YWxsX3Byb2ZpbGVfZnJvbnRlbmQnXSA9ICdGcm9udGVuZCc7CiRsYW5nWydpbnN0YWxsX3Byb2ZpbGVfbWluaW1hbCddID0gJ01pbmltYWwnOwokbGFuZ1snaW5zdGFsbF9wcm9maWxlX3N0YW5kYXJkJ10gPSAnU3RhbmRhcmQnOwoKLy8gSgokbGFuZ1snanNfdGVtcGxhdGUnXSA9ICdKYXZhU2NyaXB0IHRlbXBsYXRlJzsKCi8vIEwKJGxhbmdbJ2xpbmtfY2xhc3NlcyddID0gJ0NTUyBjbGFzc2VzIHRoYXQgY2FuIGJlIHVzZWQgZm9yIGxpbmtzJzsKJGxhbmdbJ2xpbmtfY2xhc3Nlc19pbmZvJ10gPSAnT25lIGNsYXNzIHBlciBsaW5lLCBleGFtcGxlOiA8Y29kZT48ZW0+Qmx1ZSBidXR0b249YnRuIGJ0bi1ibHVlPC9lbT48L2NvZGU+JzsKJGxhbmdbJ2xvYWRpbmdfaW5mbyddID0gJ0xvYWRpbmcuLi4nOwoKLy8gTQokbGFuZ1snbWVudWJhciddID0gJ01lbnViYXInOwoKLy8gTgokbGFuZ1snbmFtZSddID0gJ05hbWUnOwokbGFuZ1snbmV3X3Byb2ZpbGUnXSA9ICdDcmVhdGUgYSBuZXcgcHJvZmlsZSc7CiRsYW5nWyduZXd3aW5kb3cnXSA9ICdOZXcgd2luZG93JzsKJGxhbmdbJ25vX2Rlc2lnbl9saW5rZWQnXSA9ICdObyBkZXNpZ24nOwokbGFuZ1snbm9uZSddID0gJ05vbmUnOwoKLy8gTwokbGFuZ1snb3JpZ19qc190ZW1wbGF0ZV9maWxlJ10gPSAnT3JpZ2luYWwgdGVtcGxhdGUgc2hpcHBlZCB3aXRoIHRoZSBtb2R1bGUnOwoKLy8gUAokbGFuZ1sncGx1Z2lucyddID0gJ1BsdWdpbnMnOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdUaGUgVGlueU1DRSBlZGl0b3IgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IGluc3RhbGxlZC4gPHN0cm9uZz5JbXBvcnRhbnQ6PC9zdHJvbmc+IGlmIHlvdVwncmUgdXNpbmcgVVJMIFJld3JpdGluZywgcGxlYXNlIHVwZGF0ZSB5b3VyIC5odGFjY2VzcyBmaWxlIChzZWUgdGhlIFRpbnlNQ0UgaGVscCBwYWdlKSc7CiRsYW5nWydwcmlvcml0eSddID0gJ1ByaW9yaXR5JzsKJGxhbmdbJ3Byb2ZpbGVfY29waWVkJ10gPSAnVGhlIHByb2ZpbGUgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IGR1cGxpY2F0ZWQnOwokbGFuZ1sncHJvZmlsZV9kZWxldGVkJ10gPSAnVGhlIHByb2ZpbGUgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IGRlbGV0ZWQnOwokbGFuZ1sncHJvZmlsZV9uYW1lJ10gPSAnUHJvZmlsZSBuYW1lJzsKJGxhbmdbJ3Byb2ZpbGVfc2F2ZWQnXSA9ICdQcm9maWxlIHN1Y2Nlc3NmdWxseSBzYXZlZCc7CiRsYW5nWydwcm9maWxlcyddID0gJ1Byb2ZpbGVzJzsKJGxhbmdbJ3Byb21wdF9ocmVmJ10gPSAnR2VuZXJhdGVkIFVSTCc7CiRsYW5nWydwcm9tcHRfbGlua2VyJ10gPSAnRW50ZXIgUGFnZSB0aXRsZSc7CiRsYW5nWydwcm9tcHRfcHJvZmlsZXMnXSA9ICdQcm9maWxlcyc7CiRsYW5nWydwcm9tcHRfc2VsZWN0ZWRhbGlhcyddID0gJ1NlbGVjdGVkIFBhZ2UgYWxpYXMnOwokbGFuZ1sncHJvbXB0X25hbWUnXSA9ICdOYW1lJzsKJGxhbmdbJ3Byb21wdF90YXJnZXQnXSA9ICdUYXJnZXQnOwokbGFuZ1sncHJvbXB0X2NsYXNzJ10gPSAnQ2xhc3MgYXR0cmlidXRlJzsKJGxhbmdbJ3Byb21wdF9yZWwnXSA9ICdSZWwgYXR0cmlidXRlJzsKJGxhbmdbJ3Byb21wdF90ZXh0dG9kaXNwbGF5J10gPSAnVGV4dCB0byBkaXNwbGF5JzsKCi8vIFIKJGxhbmdbJ3JlbGF0aXZlX3VybHMnXSA9ICdVc2UgcmVsYXRpdmUgVVJMcyc7CiRsYW5nWydyZXNpemUnXSA9JyBSZXNpemUnOwokbGFuZ1sncmVzaXplX25vJ10gPSAnRG8gbm90IGFsbG93IHRvIHJlc2l6ZSc7CiRsYW5nWydyZXNpemVfdmVydGljYWwnXSA9ICdBbGxvdyB2ZXJ0aWNhbCByZXNpemluZyc7CiRsYW5nWydyZXNpemVfYm90aCddID0gJ0FsbG93IHZlcnRpY2FsIGFuZCBob3Jpem9udGFsIHJlc2l6aW5nJzsKCi8vIFMKJGxhbmdbJ3Nob3dfbWVudWJhciddID0gJ1Nob3cgbWVudWJhcic7CiRsYW5nWydzaG93X3N0YXR1c2JhciddID0gJ1Nob3cgc3RhdHVzYmFyJzsKJGxhbmdbJ3Nob3dfdG9vbGJhciddID0gJ1Nob3cgdG9vbGJhcic7CiRsYW5nWydzdHlsZV9mb3JtYXRzJ10gPSAnU3R5bGUgZm9ybWF0cyc7CiRsYW5nWydzdHlsZV9mb3JtYXRzX2luZm8nXSA9ICdPbmUgcnVsZSBwZXIgbGluZSwgZXhhbXBsZTogPGNvZGU+PGVtPnRpdGxlOiBcJ1JlZCB0aXRsZVwnLCBibG9jazogXCdoMlwnLCBjbGFzc2VzOiBcJ3RleHQtcmVkXCc8L2VtPjwvY29kZT4nOwokbGFuZ1snc3ViaGVscF9jb250ZXh0bWVudV9jb250ZW50J10gPSAnU3ludGF4OiA8ZW0+IGxpbmsgaW1hZ2UgaW1hZ2V0b29scyB8IHRhYmxlIGluc2VydHRhYmxlIGNlbGwgcm93IGNvbHVtbiBkZWxldGV0YWJsZSB8IGJvbGQgaXRhbGljPC9lbT48YnI+PGJyPjxlbT5Ob3RlOiB0aGUgYnJvd3NlcnMgbmF0aXZlIGNvbnRleHQgbWVudSBjYW4gc3RpbGwgYmUgYWNjZXNzZWQgYnkgaG9sZGluZyB0aGUgQ3RybCBrZXkgd2hpbGUgcmlnaHQgY2xpY2tpbmcgd2l0aCB0aGUgbW91c2UuPC9lbT4nOwokbGFuZ1snc3ViaGVscF9jdXN0b21fYmxvY2tfZm9ybWF0cyddID0gJ1N5bnRheDogPGVtPlBhcmFncmFwaD1wO0hlYWRlciAxPWgxO0hlYWRlciAyPWgyPC9lbT4nOwokbGFuZ1snc3ViaGVscF90b29sYmFyJ10gPSAnU3ludGF4OiA8ZW0+dW5kbyByZWRvIHwgY3V0IGNvcHkgcGFzdGUgfCBib2xkIGl0YWxpYzwvZW0+PGJyPlNwZWNpYWwgQ01TTVMgYnV0dG9uczogPGVtPmN1c3RvbWRyb3Bkb3duPC9lbT4sIDxlbT5jbXNtc19saW5rZXI8L2VtPiwgPGVtPnJlc3BvbnNpdmVmaWxlbWFuYWdlcjwvZW0+JzsKJGxhbmdbJ3N1YmhlbHBfY3VzdG9tX2Ryb3Bkb3duJ10gPSAnU3ludGF4OiA8ZW0+SXRlbSB0aXRsZXxjb250ZW50IHRvIGFkZDwvZW0+IG9yIDxlbT5JdGVtIHRpdGxlfG9wZW5pbmcgY29udGVudHxlbmQgY29udGVudDwvZW0+IHRvIGFkZCA8ZW0+b3BlbmluZyBjb250ZW50PC9lbT4gYmVmb3JlIHNlbGVjdGlvbiwgYW5kIDxlbT5lbmQgY29udGVudDwvZW0+IGFmdGVyIGl0Ljxicj5Eb25cJ3QgZm9yZ2V0IHRvIGFkZCA8ZW0+PHN0cm9uZz5jdXN0b21kcm9wZG93bjwvc3Ryb25nPjwvZW0+IHRvIHlvdXIgdG9vbGJhciBidXR0b25zIGFuZCB5b3VyIGN1c3RvbSBtZW51YmFyJzsKJGxhbmdbJ3N1Ym1pdCddID0gJ1N1Ym1pdCc7CgovLyBUCiRsYW5nWyd0YWJfZ2VuZXJhbF90aXRsZSddID0gJ0dlbmVyYWwnOwokbGFuZ1sndGFiX2FkdmFuY2VkX3RpdGxlJ10gPSAnQWR2YW5jZWQnOwokbGFuZ1sndGVtcGxhdGUnXSA9ICdUZW1wbGF0ZSc7CiRsYW5nWyd0ZW1wbGF0ZXMnXSA9ICdUZW1wbGF0ZXMnOwokbGFuZ1sndGl0bGVfY21zbXNfbGlua2VyJ10gPSAnQ3JlYXRlIGEgbGluayB0byBhIGNvbnRlbnQgcGFnZSc7CiRsYW5nWyd0b29sYmFyJ10gPSAnVG9vbGJhcic7CiRsYW5nWyd0b29sYmFyMSddID0gJ1Rvb2xiYXIgLSAxc3QgbGluZSc7CiRsYW5nWyd0b29sYmFyMiddID0gJ1Rvb2xiYXIgLSAybmQgbGluZSc7CiRsYW5nWyd0b29sdGlwX3NlbGVjdGVkYWxpYXMnXSA9ICdUaGlzIGZpZWxkIGlzIHJlYWQgb25seSc7CiRsYW5nWyd0eXBlX1RpbnlNQ0UnXSA9ICdUaW55TUNFJzsKJGxhbmdbJ3R5cGVfanMnXSA9ICdKYXZhU2NyaXB0JzsKJGxhbmdbJ3R5cGVfanNfZGVzY3JpcHRpb24nXSA9ICdKYXZhU2NyaXB0IHNjcmlwdCB0aGF0IHJ1bnMgVGlueU1DRSAtIFVzaW5nIGEgdGVtcGxhdGUgZ2l2ZXMgeW91IGZ1bGwgY29udHJvbCB0byBjb21wbGV0ZWx5IGN1c3RvbWl6ZSBUaW55TUNFIGZvciBlYWNoIHByb2ZpbGUuIFBsZWFzZSB0YWtlIGEgbG9vayBhdCB0aGUgVGlueU1DRSBkb2N1bWVudGF0aW9uIChodHRwczovL3d3dy50aW55bWNlLmNvbS9kb2NzLykgdG8gc2VlIGhvdyB0byBlZGl0IHRoYXQgc2NyaXB0Lic7CiRsYW5nWyd0eXBlX3VzZXJ0ZW1wbGF0ZSddID0gJ1RpbnlNQ0UgdXNlciB0ZW1wbGF0ZSc7CiRsYW5nWyd0eXBlX3VzZXJ0ZW1wbGF0ZV9kZXNjcmlwdGlvbiddID0gJ1lvdSBjYW4gdXNlIHRoYXQgdHlwZSBvZiB0ZW1wbGF0ZSB0byBjcmVhdGUgbWFueSBIVE1MIGJsb2NrcyB0aGUgVGlueU1DRSB1c2VycyBjYW4gaW5jbHVkZSBpbiB0aGVpciBjb250ZW50IHRocm91Z2ggdGhlIDxlbT50ZW1wbGF0ZXM8L2VtPiBUaW55TUNFIHBsdWdpbic7CgovLyBVCiRsYW5nWyd1c2VfYWR2YW5jZWRfbWVudSddID0gJ1VzZSBhZHZhbmNlZCBtZW51JzsKJGxhbmdbJ3VzZV9jdXN0b21fYmxvY2tfZm9ybWF0cyddID0gJ1VzZSBhIGN1c3RvbSBmb3JtYXRzIGRyb3Bkb3duJzsKJGxhbmdbJ3VzZXJncm91cHMnXSA9ICdVc2VycyBncm91cHMnOwokbGFuZ1sndXNlcl90ZW1wbGF0ZXNfZmlsZXNfZGlyJ10gPSAnRGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIHVzZXIgdGVtcGxhdGVzJzsKCgoKJGxhbmdbJ2hlbHAnXSA9ICA8PDxFT1QKCjxoMz5XaGF0IERvZXMgVGhpcyBEbz88L2gzPgo8cD4KCVRoaXMgbW9kdWxlIGVtYmVkcyB0aGUgZnVsbCBUaW55TUNFIFdZU0lXWUcgZWRpdG9yIHZlcnNpb24gaW4gQ01TIE1hZGUgU2ltcGxlLiBJdCB3b3JrcyB3aXRoIGNvbnRlbnQgYmxvY2tzIGluIENNU01TIGNvbnRlbnQgcGFnZXMgKHdoZW4gYSBXWVNJV1lHIGhhcyBiZWVuIGFsbG93ZWQpLCBpbiBtb2R1bGUgQWRtaW4gZm9ybXMgd2hlcmUgV1lTSVdZRyBlZGl0b3JzIGFyZSBhbGxvd2VkLCBhbmQgYWxsb3dzIHJlc3RyaWN0ZWQgY2FwYWJpbGl0aWVzIGZvciBlZGl0aW5nIGh0bWwgYmxvY2tzIG9uIGZyb250ZW5kIHBhZ2VzLgo8L3A+CjxwPkluIG9yZGVyIGZvciBUaW55TUNFIHRvIGJlIHVzZWQgYXMgdGhlIFdZU0lXWUcgZWRpdG9yIGluIHRoZSBBZG1pbiBjb25zb2xlIHRoZSBUaW55TUNFIFdZU0lXWUcgRWRpdG9yIG5lZWRzIHRvIGJlIHNlbGVjdGVkIGluIHRoZSB1c2VycyBwcmVmZXJlbmNlcy4gIFBsZWFzZSBzZWxlY3QgJnF1b3Q7VGlueU1DRSZxdW90OyBpbiB0aGUgJnF1b3Q7U2VsZWN0IFdZU0lXWUcgdG8gVXNlJnF1b3Q7IG9wdGlvbiB1bmRlciAmcXVvdDtNeSBQcmVmZXJlbmNlcyAmZ3Q7Jmd0OyBVc2VyIFByZWZlcmVuY2VzJnF1b3Q7IGluIHRoZSBDTVNNUyBBZG1pbiBwYW5lbC4gIEFkZGl0aW9uYWwgb3B0aW9ucyBpbiB2YXJpb3VzIG1vZHVsZXMgb3IgaW4gY29udGVudCBwYWdlIHRlbXBsYXRlcywgYW5kIGNvbnRlbnQgcGFnZXMgdGhlbXNlbHZlcyBjYW4gY29udHJvbCB3aGV0aGVyIGEgdGV4dCBhcmVhIG9yIGEgV1lTSVdZRyBmaWVsZCBpcyBwcm92aWRlZCBpbiB2YXJpb3VzIGVkaXQgZm9ybXMuPC9wPgo8cD5Gb3IgRnJvbnRlbmQgZWRpdGluZyBjYXBhYmlsaXRpZXMgVGlueU1DRSBtdXN0IGJlIHNlbGVjdGVkIGFzIHRoZSAmcXVvdDtGcm9udGVuZCBXWVNJV1lHJnF1b3Q7IGluIHRoZSBnbG9iYWwgc2V0dGluZ3MgcGFnZSBvZiB0aGUgQ01TTVMgYWRtaW4gY29uc29sZS48L3A+Cgo8aDM+RmVhdHVyZXM6PC9oMz4KPHVsPgoJPGxpPkZ1bGwgbmF0aXZlIDxhIGhyZWY9Imh0dHA6Ly93d3cudGlueW1jZS5jb20iIHRhcmdldD0iX2JsYW5rIj5UaW55TUNFIGVkaXRvcjwvYT4gaXMgYXZhaWxhYmxlLjwvbGk+Cgk8bGk+Q29uZmlndXJhdGlvbiBwcm9maWxlcyBhbmQgYmFja2VuZCBncm91cHMgYXR0cmlidXRpb24uPC9saT4KCTxsaT5Mb3RzIG9mIGN1c3RvbWl6YXRpb24gb3B0aW9uczogdG9vbGJhciwgbWVudWJhciwgZXh0ZXJuYWwgbW9kdWxlcywgY3VzdG9tIHN0eWxlcywgLi4uPC9saT4KCTxsaT5Vc2VzIHRoZSBpbnRlcm5hbCBwYWdlIGxpbmtlciBmcm9tIHRoZSBNaWNyb1RpbnkgbW9kdWxlLjwvbGk+Cgk8bGk+RW1iZWRzIHRoZSBwb3dlcmZ1bCA8YSBocmVmPSJodHRwOi8vd3d3LnJlc3BvbnNpdmVmaWxlbWFuYWdlci5jb20vIiB0YXJnZXQ9Il9ibGFuayI+UmVzcG9uc2l2ZSBGaWxlIE1hbmFnZXI8L2E+IHRoYW5rcyB0byBpdHMgYXV0aG9yIEFsYmVydG8gUGVyaXBvbGxpLiBOb3RlOiBmb3Igc2VjdXJpdHkgcmVhc29ucywgdGhlIFJlc3BvbnNpdmUgRmlsZSBNYW5hZ2VyIHdpbGwgbm90IGJlIGF2YWlsYWJsZSB0byB0aGUgZnJvbnRlbmQgdXNlcnM8L2xpPgoJPGxpPkFiaWxpdHkgdG8gdXNlIGFuIGV4dGVybmFsIGphdmFzY3JpcHQgdGVtcGxhdGUgZmlsZSBmcm9tIHRoZSBEZXNpZ25NYW5hZ2VyIGluc3RlYWQgb2YgdGhlIHN0b2NrIEpTIGZpbGUgLSBUaGlzIHBlcm1pdHMgYSBjb21wbGV0ZSBjdXN0b21pemF0aW9uIG9mIHRoZSBpbml0IHNjcmlwdC48L2xpPgoJPGxpPkN1c3RvbWl6YWJsZSBhcHBlYXJhbmNlIGJ5IHNwZWNpZnlpbmcgYSBkZXNpZ24gdG8gdXNlIGZvciB0aGUgZWRpdG9yLjwvbGk+CjwvdWw+Cgo8aDM+SG93IGRvIEkgdXNlIGl0PC9oMz4KPHVsPgoJPGxpPkluc3RhbGwgYW5kIGNvbmZpZ3VyZSB0aGUgbW9kdWxlPC9saT4KCTxsaT48c3Ryb25nIHN0eWxlPSJjb2xvcjogcmVkIj5JbXBvcnRhbnQ6PC9zdHJvbmc+IGlmIHlvdSdyZSB1c2luZyBVUkwgUmV3cml0aW5nLCB5b3UgbXVzdCB1cGRhdGUgeW91ciAuaHRhY2Nlc3MgZmlsZSBhbmQgcmVwbGFjZToKCQk8dWw+CgkJCTxsaT48Y29kZT5SZWRpcmVjdE1hdGNoIDQwMyBeLiovbW9kdWxlcy8oLiopXC5waHA8L2NvZGU+JCZuYnNwO3dpdGg6PC9saT4KCQkJPGxpPjxjb2RlPlJlZGlyZWN0TWF0Y2ggNDAzIF4uKi9tb2R1bGVzLyg/IVRpbnlNQ0UvcmVzcG9uc2l2ZV9maWxlbWFuYWdlci9maWxlbWFuYWdlci8pLipcLnBocCQ8L2NvZGU+PC9saT4KCQkJPGxpPi4uLiBpbiBvcmRlciB0byBtYWtlIHRoZSBSZXNwb25zaXZlIEZpbGUgTWFuYWdlciB3b3JrIC0gSWYgeW91IGFscmVhZHkgZGlkIHNvbWUgY2hhbmdlcyBvbiB0aGF0IGxpbmUsIHBsZWFzZSB1cGRhdGUgdGhlIHJ1bGUgYWNjb3JkaW5nbHk8L2xpPgoJCTwvdWw+Cgk8L2xpPgoJPGxpPkNyZWF0ZSBhbmQgY29uZmlndXJlIHRoZSBhcHByb3ByaWF0ZSBwcm9maWxlcyBpbiA8ZW0+RXh0ZW5zaW9uczwvZW0+IC8gPGVtPlRpbnlNQ0UgV1lTSVdZRyBlZGl0b3I8L2VtPjwvbGk+Cgk8bGk+RG9uJ3QgZm9yZ2V0IHRvIGxpbmsgcHJvZmlsZXMgd2l0aCBiYWNrZW5kIHVzZXIgZ3JvdXBzIChvciBmcm9udGVuZCkgaW4gdGhlIFRpbnlNQ0UgcHJvZmlsZTwvbGk+Cgk8bGk+U2V0IFRpbnlNQ0UgYXMgeW91ciBXWVNJV1lHIGVkaXRvciBvZiBjaG9pY2UgaW4gJnF1b3Q7TXkgUHJlZmVyZW5jZXMmcXVvdDs8L2xpPgo8L3VsPgoKPHA+CglOb3RlIGFib3V0IHByb2ZpbGUgZWRpdGlvbjogdGhlIGJhY2tlbmQgdXNlciA8c3Ryb25nPm11c3QgaGF2ZTwvc3Ryb25nPiB0aGUgPGVtPk1hbmFnZSBUaW55TUNFIHByb2ZpbGVzPC9lbT4gcGVybWlzc2lvbiB0byBnZXQgdGhlIFRpbnlNQ0UgQWRtaW4gcGFnZS4KPC9wPgoKPGgzPkNhY2hpbmc6PC9oMz4KPHA+SW4gYW4gZWZmb3J0IHRvIGltcHJvdmUgcGVyZm9ybWFuY2UsIFRpbnlNQ0Ugd2lsbCBhdHRlbXB0IHRvIGNhY2hlIHRoZSBnZW5lcmF0ZWQgSmF2YVNjcmlwdCBmaWxlcyB1bmxlc3Mgc29tZXRoaW5nIGhhcyBjaGFuZ2VkLiBTYXZpbmcgYSBwcm9maWxlIG9yIGNsZWFyaW5nIHRoZSBDTVMgTWFkZSBTaW1wbGUgY2FjaGUgd2lsbCBhbHdheXMgcmVzZXQgdGhlIEpTIGNhY2hlIGZpbGUuPC9wPgoKPGgzPk1vZHVsZSBkZXZlbG9wZXJzOiBob3cgdG8gY3JlYXRlIGEgbmV3IGJ1dHRvbiBmb3IgeW91ciBtb2R1bGUgaW4gVGlueU1DRT88L2gzPgo8cD4KCVlvdSBtdXN0IGFkZCB0aHJlZSBmdW5jdGlvbnMgdG8geW91ciBtYWluIG1vZHVsZSBjbGFzcyAtIEV4YW1wbGUgZm9yIHRoZSBHYWxsZXJ5IG1vZHVsZToKPC9wPgoKPGNvZGU+PHByZT4KCWZ1bmN0aW9uIEhhc0NhcGFiaWxpdHkoJiMzNjtjYXBhYmlsaXR5LCAmIzM2O3BhcmFtcz1hcnJheSgpKSB7CgkJaWYgKCYjMzY7Y2FwYWJpbGl0eT09J1dZU0lXWUdJdGVtcycpIHJldHVybiB0cnVlOwoJCXJldHVybiBmYWxzZTsKCX0KCglmdW5jdGlvbiBHZXRXWVNJV1lHQnRuTmFtZSgpCgl7CgkJcmV0dXJuICdtb2R1bGVfZ2FsbGVyeSc7Cgl9CgoJZnVuY3Rpb24gR2V0V1lTSVdZR0J0bigmIzM2O3d5c2l3eWdfbW9kdWxlKQoJewoJCS8vIFRFU1QgQVJSQVkgRVhBTVBMRQoJCSYjMzY7aXRlbXMgPSBhcnJheSgKCQkJYXJyYXkoCgkJCQknbWVudV90ZXh0JyA9PiAnR2FsbGVyeSAxJywKCQkJCSdjb250ZW50JyA9PiAie0dhbGxlcnkgZGlyPSdkaXIxJ30iLCAvLyBFbXB0eSA9IG5vIGFjdGlvbiBvbiBjbGljawoJCQkJJ2NoaWxkcmVuJyA9PiBhcnJheSgKCQkJCQlhcnJheSgKCQkJCQkJJ21lbnVfdGV4dCcgPT4gJ1N1YkdhbGxlcnkgMS4xJywKCQkJCQkJJ2NvbnRlbnQnID0+ICJ7R2FsbGVyeSBkaXI9J3N1YmRpcjExJ30iCgkJCQkJCSdjaGlsZHJlbicgPT4gYXJyYXkoKSAvLyBZb3UgY2FuIGhhdmUgYXMgbWFueSBzdWJsZXZlbHMgYXMgeW91IG5lZWQKCQkJCQkpLAoJCQkJCWFycmF5KAoJCQkJCQknbWVudV90ZXh0JyA9PiAnU3ViR2FsbGVyeSAxLjInLAoJCQkJCQknY29udGVudCcgPT4gIntHYWxsZXJ5IGRpcj0nc3ViZGlyMTInfSIKCQkJCQkpLAoJCQkJCWFycmF5KAoJCQkJCQknbWVudV90ZXh0JyA9PiAnU3ViR2FsbGVyeSAxLjMnLAoJCQkJCQknY29udGVudCcgPT4gIntHYWxsZXJ5IGRpcj0nc3ViZGlyMTMnfSIKCQkJCQkpCgkJCQkpCgkJCSksCgkJCWFycmF5KAoJCQkJJ21lbnVfdGV4dCcgPT4gJ0dhbGxlcnkgMicsCgkJCQknY29udGVudCcgPT4gIntHYWxsZXJ5IGRpcj0nZGlyMid9IiwgLy8gRW1wdHkgPSBubyBhY3Rpb24gb24gY2xpY2sKCQkJCSdjaGlsZHJlbicgPT4gYXJyYXkoCgkJCQkJYXJyYXkoCgkJCQkJCSdtZW51X3RleHQnID0+ICdTdWJHYWxsZXJ5IDIuMScsCgkJCQkJCSdjb250ZW50JyA9PiAie0dhbGxlcnkgZGlyPSdzdWJkaXIyMSd9IgoJCQkJCSksCgkJCQkJYXJyYXkoCgkJCQkJCSdtZW51X3RleHQnID0+ICdTdWJHYWxsZXJ5IDIuMicsCgkJCQkJCSdjb250ZW50JyA9PiAie0dhbGxlcnkgZGlyPSdzdWJkaXIyMid9IgoJCQkJCSksCgkJCQkJYXJyYXkoCgkJCQkJCSdtZW51X3RleHQnID0+ICdTdWJHYWxsZXJ5IDIuMycsCgkJCQkJCSdjb250ZW50JyA9PiAie0dhbGxlcnkgZGlyPSdzdWJkaXIyMyd9IgoJCQkJCSkKCQkJCSkKCQkJKQoJCSk7CgoJCS8vIEJVSUxEIFRIRSBCVVRUT04gT0JKRUNUIFVTRUQgQlkgVEhFIFRpbnlNQ0UgTU9EVUxFCgkJaWYgKCYjMzY7d3lzaXd5Z19tb2R1bGUgPT0gJ1RpbnlNQ0UnKQoJCXsKCQkJJiMzNjtvYmogPSBuZXcgdGlueW1jZV9tb2R1bGVtZW51OwoJCQkmIzM2O29iai0+bW9kdWxlX25hbWUgPSAmIzM2O3RoaXMtPkdldE5hbWUoKTsKCQkJJiMzNjtvYmotPmJ1dHRvbl9uYW1lID0gJiMzNjt0aGlzLT5HZXRXWVNJV1lHQnRuTmFtZSgpOwoJCQkmIzM2O29iai0+dGl0bGUgPSAmIzM2O3RoaXMtPkxhbmcoJ3RpbnltY2VfYnV0dG9uX3BpY2tlcicpOwoJCQkmIzM2O29iai0+dG9vbHRpcCA9ICYjMzY7dGhpcy0+TGFuZygndGlueW1jZV9kZXNjcmlwdGlvbl9waWNrZXInKTsKCQkJJiMzNjtvYmotPmljb24gPSAnaW1hZ2UnOwoJCQkmIzM2O29iai0+aW1hZ2UgPSAmIzM2O3RoaXMtPkdldE1vZHVsZVVSTFBhdGgoKSAuICcvaW1hZ2VzL2ljb24uZ2lmJzsKCQkJJiMzNjtvYmotPm1lbnVfZW50cmllcyA9ICYjMzY7aXRlbXM7CgkJCSYjMzY7b2JqLT5tZW51X3NlY3Rpb24gPSAnaW5zZXJ0JzsKCgkJCXJldHVybiAmIzM2O29iajsKCQl9CgkJcmV0dXJuIGZhbHNlOwoJfQo8L3ByZT48L2NvZGU+Cgo8cD4KCVRoZSA8c3Ryb25nPkdldFdZU0lXWUdCdG4oKTwvc3Ryb25nPiBmdW5jdGlvbiBtdXN0IHJldHVybiBhIDxzdHJvbmc+dGlueW1jZV9tb2R1bGVtZW51PC9zdHJvbmc+IG9iamVjdCB3aXRoIGFuIGFycmF5IDxlbT5tZW51X2VudHJpZXM8L2VtPiBwcm9wZXJ0eS4KPC9wPgo8YnI+Cgo8aDM+TGljZW5zZSBpbmZvcm1hdGlvbnM8L2gzPgo8cD5UaGlzIG1vZHVsZSBpcyBmcmVlIHNvZnR3YXJlIC0geW91IGNhbiB1c2UgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAyIG9yIGFueSBsYXRlciB2ZXJzaW9uLjwvcD4KPHA+PHN0cm9uZz5Ib3dldmVyPC9zdHJvbmc+LCB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5yZXNwb25zaXZlZmlsZW1hbmFnZXIuY29tLyIgdGFyZ2V0PSJfYmxhbmsiPlJlc3BvbnNpdmUgRmlsZU1hbmFnZXI8L2E+IGlzIGxpY2Vuc2VkIHVuZGVyIGEgPGEgaHJlZj0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktbmMvMy4wLyIgdGFyZ2V0PSJfYmxhbmsiPkNyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tTm9uQ29tbWVyY2lhbCAzLjAgVW5wb3J0ZWQgTGljZW5zZTwvYT4uIFRoZSBUaW55TUNFIG1vZHVsZSBpbmNsdWRlcyBpdCA8c3Ryb25nPndpdGggdGhlIHBlcm1pc3Npb24gZnJvbSBBbGJlcnRvIFBlcmlwb2xsaTwvc3Ryb25nPiBnaXZlbiBvbiAyMDE2LTAxLTE5LiBUaGFuayB5b3UgQWxiZXJ0byEgPGEgaHJlZj0iaHR0cDovL3d3dy5yZXNwb25zaXZlZmlsZW1hbmFnZXIuY29tLyIgdGFyZ2V0PSJfYmxhbmsiPklmIHlvdSB3YW50IHRvIHN1cHBvcnQgdGhhdCBwcm9qZWN0LCBwbGVhc2UgY2hlY2sgdGhpcyBwYWdlIGFuZCBtYWtlIGEgZnJlZSBkb25hdGlvbi48L2E+PC9wPgoKPGgzPkhlbHAgYW5kIHN1cHBvcnQ8L2gzPgo8cD5XZSB0cmllZCB0byBleHBsYWluIGVhY2ggY29uZmlndXJhdGlvbiBvcHRpb24gb24gdGhlIHByb2ZpbGUgZWRpdGlvbiBBZG1pbiBwYWdlLiBQbGVhc2UgdXNlIHRoZSAiPyIgYnV0dG9ucyBuZWFyIGVhY2ggb3B0aW9uIHRvIGdldCBtb3JlIGluZm9ybWF0aW9ucy48L3A+Cgo8aDM+QnVnIHJlcG9ydCBvciBmZWF0dXJlIHJlcXVlc3Q8L2gzPgo8cD4KCUNoZWNrb3V0IHRoZSBDTVMgTWFkZSBTaW1wbGUgZm9yZ2U6IDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvdGlueW1jZSIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvdGlueW1jZTwvYT4KPC9wPgoKPGgzPkF1dGhvcnM8L2gzPgo8dWw+Cgk8bGk+TW9ydGVuIFBvdWxzZW46IDxhIGhyZWY9Im1haWx0bzptb3J0ZW5AcG91bHNlbi5vcmciPm1vcnRlbkBwb3Vsc2VuLm9yZzwvYT48L2xpPgoJPGxpPlJvbGYgVGphc3NlbnM6IDxhIGhyZWY9Im1haWx0bzpyb2xmQGNtc21hZGVzaW1wbGUub3JnIj5yb2xmQGNtc21hZGVzaW1wbGUub3JnPC9hPjwvbGk+Cgk8bGk+TWF0aGlldSBNdXRoczogPGEgaHJlZj0ibWFpbHRvOmNvbnRhY3RAYWlyZWxpYnJlLm5ldCI+Y29udGFjdEBhaXJlbGlicmUubmV0PC9hPjwvbGk+CjwvdWw+CkVPVDsKCj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/ext/ar_AR.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1RpbnlNQ0UgV1lTSVdZRyc7CiRsYW5nWydhZG1pbmRlc2NyaXB0aW9uJ10gPSAnVGhpcyBtb2R1bGUgYWxsb3dzIG1haW5seSBjb250ZW50LCBidXQgcG9zc2libHkgYWxzbyBvdGhlciBraW5kcyBvZiBkYXRhLCB0byBiZSBlZGl0ZWQgdXNpbmcgYSBXWVNJV1lHIGVkaXRvciBwb3dlcmVkIGJ5IHRoZSBUaW55TUNFIHByb2plY3QuJzsKJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAnTW9kdWxlIFVuaW5zdGFsbGVkLic7CiRsYW5nWydpbnN0YWxsZWQnXSA9ICdNb2R1bGUgdmVyc2lvbiAlcyBpbnN0YWxsZWQuJzsKJGxhbmdbJ3N0cmlwYmFja2dyb3VuZHRhZ3MnXSA9ICdTdHJpcCBCYWNrZ3JvdW5kIFRhZ3MgRnJvbSBDU1MnOwokbGFuZ1snc3RpcHRhZ3NfaGVscCddID0gJ1RoaXMgb3B0aW9ucyB0cmllcyB0byByZW1vdmUgYmFja2dyb3VuZC10eXBlIHNldHRpbmdzIGZyb20gdGhlIHN0eWxlc2hlZXQuJzsKJGxhbmdbJ3NvdXJjZV9mb3JtYXR0aW5nX3RleHQnXSA9ICdBcHBseSBzb3VyY2UgZm9ybWF0dGluZyB0byB0aGUgb3V0cHV0IEhUTUwnOwokbGFuZ1snZHJvcGRvd25ibG9ja2Zvcm1hdHNfdGV4dCddID0gJ0Jsb2NrZm9ybWF0cyBpbiBkcm9wZG93bi1tZW51JzsKJGxhbmdbJ2FsbG93dGFibGVzJ10gPSAnQWxsb3cgdGFibGUgb3BlcmF0aW9ucyc7CiRsYW5nWyduZXdsaW5lc3R5bGVfdGV4dCddID0gJ05ld2xpbmUtc3R5bGUnOwokbGFuZ1sncHN0eWxlJ10gPSAnPHA+LXN0eWxlJzsKJGxhbmdbJ2Jyc3R5bGUnXSA9ICc8YnIvPi1zdHlsZSc7CiRsYW5nWyd1c2Vjb21wcmVzc2lvbnRleHQnXSA9ICdVc2UgZ3ogY29tcHJlc3Npb24nOwokbGFuZ1sndXNlY29tcHJlc3Npb25oZWxwJ10gPSAnVGhpcyBjYW4gc3BlZWQgdXAgbG9hZGluZyBUaW55TUNFLCBidXQgY2FuIGFsc28gcHJldmVudCBpdCBmcm9tIGxvYWRpbmcgb24gc29tZSBzeXN0ZW1zLiBVc2Ugd2l0aCBjYXV0aW9uLic7CiRsYW5nWydmb3JjZWRyb290YmxvY2t0ZXh0J10gPSAnRm9yY2UgPHA+IHJvb3RibG9jayc7CiRsYW5nWydmb3JjZWRyb290YmxvY2toZWxwJ10gPSAnRm9yY2VzIHRoZSByZXR1cm5lZCBjb250ZW50IHRvIGF0IGxlYXN0IGJlIGVuY2xvc2VkIGluIGEgPHA+LXRhZyc7CiRsYW5nWydmaWxlcGlja2Vyc3R5bGUnXSA9ICdGaWxlcGlja2VyIHN0eWxlJzsKJGxhbmdbJ2ZpbGVwaWNrZXJzaXplJ10gPSAnRmlsZXBpY2tlciBzaXplJzsKJGxhbmdbJ2FsbG93dXBsb2FkdGV4dCddID0gJ0FsbG93IHVwbG9hZCBhbmQgY3JlYXRpbmcgZGlycyBpbiBGaWxlUGlja2VyJzsKJGxhbmdbJ2FsbG93c2NhbGluZ3RleHQnXSA9ICdBbGxvdyBvbi10aGUtZmx5IHJlc2l6aW5nIG9mIHVwbG9hZGVkIGltYWdlcyc7CiRsYW5nWydzY2FsaW5nZGltZW5zaW9uc3RleHQnXSA9ICdEZWZhdWx0IGRpbWVuc2lvbnMnOwokbGFuZ1sncmVzaXpldG8nXSA9ICdSZXNpemUgdG86JzsKJGxhbmdbJ21ha2V0aHVtYm5haWwnXSA9ICdNYWtlIGEgdGh1bWJuYWlsIHdoZW4gdXBsb2FkaW5nIGltYWdlcyc7CiRsYW5nWyd1c2VhZHZhbmNlZHByb2ZpbGUnXSA9ICdVc2UgYWR2YW5jZWQgVGlueU1DRS1wcm9maWxlJzsKJGxhbmdbJ3NhdmVwcm9maWxlJ10gPSAnU2F2ZSBwcm9maWxlJzsKJGxhbmdbJ3Byb2ZpbGVzYXZlZCddID0gJ1RoZSBwcm9maWxlIHdhcyBzYXZlZCc7CiRsYW5nWydwcm9maWxlc190YWInXSA9ICdQcm9maWxlcyc7CiRsYW5nWydhZHZhbmNlZF9iYWNrZW5kX3Rvb2xiYXJzJ10gPSAnQWR2YW5jZWQgYmFja2VuZCBwcm9maWxlIHNldHRpbmdzJzsKJGxhbmdbJ3NhdmVzdHlsZXMnXSA9ICdTYXZlIHN0eWxlcyc7CiRsYW5nWydhbGxvd2FkdmFuY2VkcHJvZmlsZSddID0gJ0FsbG93IHVzYWdlIG9mIGFkdmFuY2VkIHByb2ZpbGUgaW4gVGlueU1DRSc7CiRsYW5nWydzaG93ZmlsZW1hbmFnZW1lbnQnXSA9ICdTaG93IGZpbGVtYW5hZ2VtZW50IG9wdGlvbnMnOwokbGFuZ1snc2hvd2ZpbGVtYW5hZ2VtZW50aGVscCddID0gJ1Nob3cgZmlsZW1hbmFnZW1lbnQgaW4gb3B0aW9ucyBsaWtlIHVwbG9hZCwgbWFrZSBkaXIgYW5kIGZpbGUgZGVsZXRpb24gaW4gRmlsZVBpY2tlciwgaWYgdGhlIHVzZXIgaXMgYWxsb3dlZCB0byBwZXJmb3JtIHRoZXNlLic7CiRsYW5nWydyZXN0cmljdGRpcnMnXSA9ICdSZXN0cmljdCB1c2VyJiMwMzk7cyBkaXIgYWNjZXNzJzsKJGxhbmdbJ3Jlc3RyaWN0ZGlyc2hlbHAnXSA9ICdUaGlzIHdpbGwgcmVzdHJpY3QgdGhlIGZpbGVtYW5hZ2VtZW50LWNhcGFiaWxpdGllcyBvZiB0aGUgdXNlciB0byBhIHN1YmRpciB0byAmIzAzOTt1cGxvYWRzJiMwMzk7IHdoaWNoIGhhdmUgdGhlIHNhbWUgbmFtZSBhcyB0aGUgdXNlciYjMDM5O3MgbG9naW4uIElmIHRoZSBzdWJkaXIgZG9lcyBub3QgZXhpc3QsIGl0IHdpbGwgcG9zc2libHkgYmUgY3JlYXRlZC4gUGxlYXNlIG5vdGUsIHRoaXMgY3VycmVudGx5IG9ubHkgd29ya3Mgd2l0aCB0aGUgc3RhbmRhcmQgZGlybmFtZXMsIHVwbG9hZHMvaW1hZ2VzLiBUaGlzIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4nOwokbGFuZ1snZGVsZXRlY29uZmlybWF0aW9uJ10gPSAnQXJlIHlvdSBzdXJlIHRoaXMgZmlsZSBzaG91bGQgYmUgZGVsZXRlZD8nOwokbGFuZ1snZGVsZXRlZmlsZXN1Y2Nlc3MnXSA9ICd3YXMgc3VjY2Vzc2Z1bGx5IGRlbGV0ZWQnOwokbGFuZ1snZGVsZXRlZmlsZWZhaWxlZCddID0gJ2NvdWxkIG5vdCBiZSBkZWxldGVkJzsKJGxhbmdbJ2RlbGV0ZXN1YmRpcmZhaWxlZCddID0gJ2NvdWxkIG5vdCBiZSBkZWxldGVkJzsKJGxhbmdbJ2RlbGV0ZXN1YmRpcnN1Y2Nlc3MnXSA9ICd3YXMgc3VjY2Vzc2Z1bGx5IGRlbGV0ZWQnOwokbGFuZ1snZGVsZXRlZGlyY29uZmlybWF0aW9uJ10gPSAnQXJlIHlvdSBzdXJlIHRoaXMgZW1wdHkgc3ViZGlyIHNob3VsZCBiZSBkZWxldGVkPyc7CiRsYW5nWydkZWxldGVkaXInXSA9ICdEZWxldGUgZW1wdHkgc3ViZGlyJzsKJGxhbmdbJ2RlbGV0ZWZpbGUnXSA9ICdEZWxldGUgRmlsZSc7CiRsYW5nWydjYW5ub3RyZWFkY29uZmlnJ10gPSAnQ2Fubm90IHJlYWQgdGhlIGZpbGUgdGlueWNvbmZpZy5waHAgZGlyZWN0bHkgc28gVGlueU1DRSB3aWxsIHByb2JhYmx5IG5vdCB3b3JrLiBZb3Ugc2hvdWxkIGNoZWNrIHRoZSBwZXJtaXNzaW9ucyBvZiB0aGUgZmlsZSBhbmQgb2YgdGhlIHBhcmVudCBkaXJzLCB3aGljaCBzaG91bGQgYmUgcmVhZGFibGUgZm9yIGFsbCBidXQgb25seSB3cml0YWJsZSBmb3Igb3duZXIuJzsKJGxhbmdbJ2ZpbGVuYW1lb25seSddID0gJ1Nob3cgZmlsZW5hbWVzJzsKJGxhbmdbJ3RodW1ibmFpbHNvbmx5J10gPSAnU2hvdyB0aHVtYm5haWxzJzsKJGxhbmdbJ3Nob3d0aHVtYm5haWxmaWxlc3RleHQnXSA9ICdTaG93IHRodW1ibmFpbC1maWxlcyBhcyByZWd1bGFyIGZpbGVzJzsKJGxhbmdbJ2ZpbGVuYW1lYW5kdGh1bWJuYWlscyddID0gJ1Nob3cgYm90aCBmaWxlbmFtZXMgYW5kIHRodW1ibmFpbHMnOwokbGFuZ1snc2tpbnN0ZXh0J10gPSAnU2tpbic7CiRsYW5nWydza2ludmFyaWF0aW9udGV4dCddID0gJ1NraW4gdmFyaWF0aW9uJzsKJGxhbmdbJ2FkdmFuY2Vkd2FybmluZyddID0gJzxzdHJvbmc+UGxlYXNlIG5vdGUhPGJyLz5DaGFuZ2luZyB0aGVzZSBzZXR0aW5ncyBjYW4gY2F1c2UgVGlueU1DRSB0byBzdG9wIHdvcmtpbmcgb3IgdGhlIGdlbmVyYXRlZCBjb2RlIHRvIGJlIHdyb25nIGluIHNvbWUgd2F5LiBPbmx5IGVkaXQgdGhpcyBpZiB5b3Uga25vdyB3aGF0IHlvdSBhcmUgZG9pbmchIFBsZWFzZSBjb25zdWx0IHRoZSBUaW55TUNFIHdlYnNpdGUgYmVmb3JlIHBsYXlpbmcgd2l0aCB0aGlzLjwvc3Ryb25nPic7CiRsYW5nWydlbnRpdHllbmNvZGluZ190ZXh0J10gPSAnRW5jb2Rpbmcgb2YgZW50aXRpZXMnOwokbGFuZ1sncmF3ZW5jb2RpbmcnXSA9ICdSYXcgZW5jb2RpbmcgKGZhc3Rlc3QsIHdvcmtzIGluIG1vc3QgY2FzZXMpJzsKJGxhbmdbJ25hbWVkZW5jb2RpbmcnXSA9ICdOYW1lZCBlbmNvZGluZyAobGlrZSAmbmJzcDspJzsKJGxhbmdbJ251bWVyaWNlbmNvZGluZyddID0gJ051bWVyaWMgZW5jb2RpbmcgKGxpa2UgJmFtcDsjMTYwOyknOwokbGFuZ1snc2hvd19wYXRoX3RleHQnXSA9ICdTaG93IHRoZSBwYXRoIG9mIHRoZSBlbGVtZW50IGF0IHRoZSBib3R0b20gb2YgdGhlIGVkaXRvcic7CiRsYW5nWyd0b29sYmFyX3RhYiddID0gJ1Rvb2xiYXInOwokbGFuZ1sndG9vbGJhcl9oZWxwJ10gPSAnVGhlc2Ugb3B0aW9ucyBzaG91bGQgY29udGFpbiBhIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIGJ1dHRvbi9jb250cm9sIG5hbWVzIHRvIGluc2VydCBpbnRvIHRoZSB0b29sYmFyLiBUaGUgY2hhciB8IGNhbiBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIHdvcmQgJiMwMzk7c2VwYXJhdG9yJiMwMzk7JzsKJGxhbmdbJ3Rvb2xiYXJfdGV4dCddID0gJ1Rvb2xiYXInOwokbGFuZ1sndG9vbGJhcmhlbHB0ZXh0J10gPSAnQ2xpY2sgaGVyZSB0byB2aWV3IHRvb2xiYXItaW5zdHJ1Y3Rpb25zIGluIFRpbnlNQ0Utd2lraS4nOwokbGFuZ1snZWRpdG9yX3dpZHRoX3RleHQnXSA9ICdXaWR0aCBvZiBlZGl0b3IgZmllbGQnOwokbGFuZ1snZWRpdG9yX2hlaWdodF90ZXh0J10gPSAnSGVpZ2h0IG9mIGVkaXRvciBmaWVsZCc7CiRsYW5nWydhdXRvJ10gPSAnQXV0byc7CiRsYW5nWydvciddID0gJ29yJzsKJGxhbmdbJ3Rlc3RhcmVhX3RhYiddID0gJ1Rlc3RpbmcgYXJlYSc7CiRsYW5nWydzaG93dGVzdGluZ291dHB1dCddID0gJ1Nob3cgdGVzdGluZyBvdXRwdXQnOwokbGFuZ1sndGVzdGFyZWFlZGl0b3InXSA9ICdUZXN0aW5nIGFyZWEgZWRpdG9yJzsKJGxhbmdbJ3Rlc3RhcmVhb3V0cHV0J10gPSAnVGVzdGluZyBhcmVhIG91dHB1dCc7CiRsYW5nWyd0ZXN0YXJlYW91dHB1dHNvdXJjZSddID0gJ1Rlc3RpbmcgYXJlYSBzb3VyY2UnOwokbGFuZ1snYWxsb3dyZXNpemluZyddID0gJ0FsbG93IGlucGxhY2UgcmVzaXppbmcgb2YgZWRpdG9yIGZpZWxkJzsKJGxhbmdbJ3Jlc2l6ZW5vbmUnXSA9ICdEbyBub3QgYWxsb3cgcmVzaXppbmcnOwokbGFuZ1sncmVzaXplYm90aCddID0gJ0FsbG93IHJlc2l6aW5nIGluIGJvdGggZGlyZWN0aW9ucyc7CiRsYW5nWydyZXNpemVoZWlnaHQnXSA9ICdBbGxvdyByZXNpemluZyBvZiBoZWlnaHQgb25seSc7CiRsYW5nWydkYXRldGltZWZvcm1hdF90ZXh0J10gPSAnRGF0ZS9UaW1lIGZvcm1hdCc7CiRsYW5nWyd0aW1ldGV4dCddID0gJ1RpbWUnOwokbGFuZ1snZGF0ZXRleHQnXSA9ICdEYXRlJzsKJGxhbmdbJ2RhdGV0aW1lZm9ybWF0X2hlbHAnXSA9ICdDbGljayBoZXJlIGZvciBoZWxwIG9uIGhvdyB0byBmb3JtYXQgdGhlIGRhdGUvdGltZSc7CiRsYW5nWydleHRyYWNvbmZpZ3RleHQnXSA9ICdFeHRyYSBjb25maWd1cmF0aW9uJzsKJGxhbmdbJ2V4dHJhY29uZmlnaGVscDInXSA9ICdPbmUgc3RhdGVtZW50IHBlciBsaW5lLCBjb21tYXMgd2lsbCBiZSBhZGRlZCBiZWZvcmUgYW5kIGFmdGVyIHRoaXMgY29udGVudC4gQ2hlY2sgVGlueU1DRS13aWtpIGZvciBpbnN0cnVjdGlvbnMuJzsKJGxhbmdbJ2N1c3RvbWRyb3Bkb3dudGV4dCddID0gJ0N1c3RvbSBkcm9wZG93bic7CiRsYW5nWydjdXN0b21kcm9wZG93bmhlbHAnXSA9ICdJbnNlcnRzIGN1c3RvbWl6YWJsZSBzbmlwcGV0cyBvZiBjb2RlL3RleHQgYnkgc2VsZWN0aW9uIGluIGEgZHJvcGRvd24gbWVudS4gDQpPYnZpb3VzIHVzZXMgYXJlIGVhc3kgYWNjZXNzIHRvIHRhZyYjMDM5O3MgZXRjLiBUaGUgbWVudSBpcyBpbnNlcnRlZCBpbnRvIHRvb2xiYXIgdXNpbmcgJiMwMzk7Y3VzdG9tZHJvcGRvd24mIzAzOTsuJzsKJGxhbmdbJ3N0YXJ0ZW5hYmxlZHRleHQnXSA9ICdTdGFydHVwIGVuYWJsZWQnOwokbGFuZ1snc3RhcnRlbmFibGVkaGVscCddID0gJ1VuY2hlY2tpbmcgdGhpcyBzdGFydHMgdXAgVGlueS1lZGl0b3JzIGluIGEgZGlzYWJsZWQgc3RhdGUuIFNob3VsZCBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggdGhlIHRvZ2dsZSBidXR0b24uJzsKJGxhbmdbJ2xvYWRjbXNsaW5rZXJ0ZXh0J10gPSAnTG9hZCB0aGUgQ01TLWxpbmtlcic7CiRsYW5nWydsb2FkY21zbGlua2VyaGVscCddID0gJ1RoaXMgZ2VuZXJhdGVzIHRoZSBqYXZhc2NyaXB0LWNvZGUgbmVlZGVkIHRvIGFsbG93ICYjMDM5O2Ntc2xpbmtlciYjMDM5OyB0byBiZSBhZGRlZCB0byBhIHRvb2xiYXIuJzsKJGxhbmdbJ2Ntc2xpbmtlcnN0eWxldGV4dCddID0gJ0NNUy1saW5rZXIgbGluay1zdHlsZSc7CiRsYW5nWydjbXNzZWxmbGlua3N0eWxlJ10gPSAne2Ntc19zZWxmbGlua30tc3R5bGUnOwokbGFuZ1snYWhyZWZzdHlsZSddID0gJzxhIGhyZWY+LXN0eWxlJzsKJGxhbmdbJ2Ntc2xpbmtlcmFkZHN0ZXh0J10gPSAnQ01TLWxpbmtlciBhZGRpdGlvbnMnOwokbGFuZ1snY21zbGlua2VyYWRkc2hlbHAnXSA9ICdUaGlzIGFsbG93cyB5b3UgdG8gYWRkIHN0dWZmIHRvIGVpdGhlciB0aGUgPGEgaHJlZj4tdGFnIG9yIHtjbXNfc2VsZmxpbmt9LCB3aGVuIGdlbmVyYXRlZCBieSBDTVMtbGlua2VyLic7CiRsYW5nWydhdm9pZGxpbmtjb252ZXJzaW9udGV4dCddID0gJ0F2b2lkIGxpbmsgY29udmVyc2lvbic7CiRsYW5nWydhdm9pZGxpbmtjb252ZXJzaW9uaGVscCddID0gJ1R1cm5zIFRpbnlNQ0UmIzAzOTtzIGJ1aWx0aW4gbGluayBjb252ZXJzaW9uIGxvZ2ljIG9mZi4gTWFrZXMge3NtYXJ0eX0tdXNhZ2UgaW4gdXJscyBwb3NzaWJsZS4nOwokbGFuZ1sncmVsYXRpdmV1cmxzdGV4dCddID0gJ0dlbmVyYXRlIHJlbGF0aXZlIHVybHMnOwokbGFuZ1snZm9yY2VjbGVhbnBhc3RldGV4dCddID0gJ0ZvcmNlIGNsZWFuIG9uIHBhc3RlJzsKJGxhbmdbJ2ZvcmNlY2xlYW5wYXN0ZWhlbHAnXSA9ICdUaGlzIHNob3VsZCBiZSBlbmFibGVkIHRvIHJlbW92ZSBzdHJhbmdlIGZvcm1hdHRpbmcgY29kZXMgd2hlbiBwYXN0aW5nIGZyb20gV29yZCBldGMuJzsKJGxhbmdbJ2JvZHljc3NfdGV4dCddID0gJ0JvZHkgdGFnIENTUyc7CiRsYW5nWydib2R5Y3NzX2hlbHAnXSA9ICdXaWxsIGJlIGFkZGVkIHRvIHRoZSBjc3MgYm9keS1kZWZpbml0aW9uLiBIaW50OiBCYWNrZ3JvdW5kLWNvbG9yIGNhbiBiZSBzZXQgdG8gd2hpdGUgdXNpbmcgJnF1b3Q7YmFja2dyb3VuZC1jb2xvcjogd2hpdGUmcXVvdDsnOwokbGFuZ1snaW5jbHVkZW9ubHlzY3JlZW5jc3NfdGV4dCddID0gJ0luY2x1ZGUgb25seSBzY3JlZW4gQ1NTJzsKJGxhbmdbJ2luY2x1ZGVvbmx5c2NyZWVuY3NzX2hlbHAnXSA9ICdTZWxlY3RpbmcgdGhpcyBhbGxvd3Mgb25seSBhdHRhY2hlZCBzdHlsZXNoZWV0cyB3aXRoIHRoZSBzY3JlZW4tbWVkaWF0eXBlIHNlbGVjdGVkIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBzdHlsZXMgVGlueU1DRSBoYW5kbGVzLic7CiRsYW5nWyd1c2VzdGF0aWNjb25maWd0ZXh0J10gPSAnVXNlIHN0YXRpYyBjb25maWcgZmlsZSc7CiRsYW5nWyd1c2VzdGF0aWNjb25maWdoZWxwJ10gPSAnVGhpcyBjYW4gaGVscCBnZXR0aW5nIHRpbnkgdG8gd29yayBvbiBzeXN0ZW1zIHdoZXJlIHRoZSBob3N0aW5nIGZhY2lsaXR5IGFkZHMgc3R1ZmYgbGlrZSBzdGF0aXN0aWNzIGV0Yy4gdG8gYWxsIG91dHB1dCwgYnJlYWtpbmcgZHluYW1pY2FsbHkgY3JlYXRlZCBqYXZhc2NyaXB0IGNvbmZpZyBmaWxlJzsKJGxhbmdbJ3VzZXN0YXRpY2NvbmZpZ3dhcm5pbmcnXSA9ICdXYXJuaW5nISBZb3UgaGF2ZSB0aGUgc3RhdGljIGNvbmZpZy1maWxlIG9wdGlvbiBlbmFibGVkIGJ1dCB5b3VyIC90bXAvIGRpciBpcyBub3Qgd3JpdGFibGUuIFRoaXMgd2lsbCBwcmV2ZW50IHRoZSBtb2R1bGUgZnJvbSBzYXZpbmcgdGhlIHN0YXRpYyBjb25maWctZmlsZSBhbmQgd2lsbCBtb3N0IHByb2JhYmx5IHJlbmRlciBUaW55TUNFIGlub3BlcmF0aW9uYWwuJzsKJGxhbmdbJ2lnbm9yZW1vZGlmeWZpbGVzdGV4dCddID0gJ0lnbm9yZSB0aGUgJiMwMzk7TW9kaWZ5IEZpbGVzJiMwMzk7IHBlcm1pc3Npb24gZm9yIEZpbGVQaWNrZXInOwokbGFuZ1snaWdub3JlbW9kaWZ5ZmlsZXNoZWxwJ10gPSAnV2FybmluZyEgVGhpcyBhbGxvd3Mgc29tZSBmaWxlLWFsdGVyaW5nIG9wZXJhdGlvbnMgZXZlbiBpZiB0aGUgJiMwMzk7TW9kaWZ5IEZpbGVzJiMwMzk7IHBlcm1pc3Npb24gaXMgbm90IHNldCBmb3IgdGhlIGN1cnJlbnQgdXNlcmdyb3VwLiBUaGlzIGNhbiBlZmZlY3RpdmVseSBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggdGhlIG9wdGlvbiB0byByZXN0cmljdCB1c2VyJiMwMzk7cyBkaXJlY3RvcnkgYWNjZXNzLic7CiRsYW5nWydzaG93dG9nZ2xlYnV0dG9uX3RleHQnXSA9ICdTaG93IGNoZWNrYm94IHRvIHR1cm4gd3lzaXd5ZyBvbi9vZmYnOwokbGFuZ1sndG9nZ2xld3lzaXd5ZyddID0gJ1R1cm4gV1lTSVdZRyBvbi9vZmYnOwokbGFuZ1snc3R5bGVzX3RhYiddID0gJ0NTUyBTdHlsZXMnOwokbGFuZ1snc3R5bGVzX2hlbHAnXSA9ICcgIElmIHlvdSBsZWF2ZSB0aGUgZmllbGQgZW1wdHksIFRpbnlNQ0Ugd2lsbCBwYXJzZSB5b3VyIENTUyBmaWxlIGFuZCBsaXN0IHRoZSBjbGFzcyBzdHlsZXMgY29udGFpbmVkIGluIGl0IHRvIHRoZSB1c2VyLiANCiAgSWYgeW91IHdhbnQgb25seSBzb21lIHN0eWxlcyBwcmVzZW50ZWQgdG8gdGhlIHVzZXIsIHNwZWNpZnkgdGhlbSBpbiB0aGUgZm9ybSAmcXVvdDtDdXN0b21OYW1lMT1zdHlsZTE7IEN1c3RvbU5hbWUyPXN0eWxlMiZxdW90OywgDQogICZxdW90O3N0eWxlMSZxdW90OyBiZWluZyBhIGNsYXNzIGNhbGwgaW4geW91ciBzdHlsZXNoZWV0IGFuZCB5b3UgZG9uJiMwMzk7dCBwdXQgdGhlIC4gDQogIG5vcm1hbGx5IHVzZWQgZm9yIGNsYXNzIGNhbGxzIGFzIGl0IGlzIGFscmVhZHkgaW4geW91ciBDU1MsIGl0IHdpbGwgbG9vayBsaWtlIHRoaXMgPHNwYW4gY2xhc3M9JnF1b3Q7c3R5bGUxJnF1b3Q7PnRleHQ8L3NwYW4+LCANCiAgaW4gdGhlIGZpcnN0IGZpZWxkIGJlbG93LiANCic7CiRsYW5nWydjc3Nfc3R5bGVzX3RleHQnXSA9ICdTdHlsZXMnOwokbGFuZ1snYWNjZXNzZGVuaWVkJ10gPSAnQWNjZXNzIERlbmllZC4gUGxlYXNlIGNoZWNrIHlvdXIgcGVybWlzc2lvbnMuJzsKJGxhbmdbJ2Vycm9yJ10gPSAnRXJyb3IhJzsKJGxhbmdbJ3N1Ym1pdCddID0gJ9iq2YLYr9mK2YUnOwokbGFuZ1sndXBkYXRlJ10gPSAnVXBkYXRlJzsKJGxhbmdbJ3NhdmVzZXR0aW5ncyddID0gJ9it2YHYuCDYp9mE2KXYudiv2KfYr9in2KonOwokbGFuZ1snc2V0dGluZ3MnXSA9ICfYpdi52K/Yp9iv2KfYqic7CiRsYW5nWydzZXR0aW5nc3NhdmVkJ10gPSAnU2V0dGluZ3Mgd2VyZSBzYXZlZCc7CiRsYW5nWydzYXZlYWR2YW5jZWQnXSA9ICdTYXZlIGFkdmFuY2VkIHNldHRpbmdzJzsKJGxhbmdbJ2FkdmFuY2Vkc2F2ZWQnXSA9ICdBZHZhbmNlZCBzZXR0aW5ncyBzYXZlZCc7CiRsYW5nWyd0b29sYmFyc2F2ZWQnXSA9ICdUb29sYmFyIHdhcyBzYXZlZCc7CiRsYW5nWydzdHlsZXNzYXZlZCddID0gJ1N0eWxlcyB3YXMgc2F2ZWQnOwokbGFuZ1sndGVzdGFyZWF0ZXh0J10gPSAnPHA+VGVzdCBhcmVhLCBubyBjb250ZW50IHdpbGwgYmUgaGFybWVkIHBsYXlpbmcgd2l0aCB0aGlzLi4uPC9wPic7CiRsYW5nWydyZXNldCddID0gJ1Jlc2V0IGRlZmF1bHRzJzsKJGxhbmdbJ3Jlc2V0YWxsJ10gPSAnUmVzZXQgYWxsIHNldHRpbmdzIHRvIGRlZmF1bHRzJzsKJGxhbmdbJ2NvbmZpcm1yZXNldCddID0gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZXNldCB0aGVzZSBzZXR0aW5ncyB0byB0aGVpciBkZWZhdWx0cz8nOwokbGFuZ1snY29uZmlybXJlc2V0YWxsJ10gPSAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlc2V0IEFMTCBzZXR0aW5ncyB0byB0aGVpciBkZWZhdWx0cz8nOwokbGFuZ1snc2V0dGluZ3NyZXNldCddID0gJ1RoZXNlIHNldHRpbmdzIHdhcyByZXNldCB0byBkZWZhdWx0JzsKJGxhbmdbJ2FsbHNldHRpbmdzcmVzZXQnXSA9ICdBbGwgc2V0dGluZ3Mgd2VyZSByZXNldCB0byBkZWZhdWx0JzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnaGFzIGJlZW4gdXBncmFkZWQgdG8gdmVyc2lvbiAlcyc7CiRsYW5nWydjdXN0b21kcm9wZG93biddID0gJ0N1c3RvbSBkcm9wZG93bi1tZW51JzsKJGxhbmdbJ2Ntc21zbGlua2VyJ10gPSAnSW5zZXJ0IGxpbmsgdG8gY21zbXMtcGFnZSc7CiRsYW5nWydiYWNrZW5kX3Rvb2xiYXJzJ10gPSAnQmFja2VuZCBwcm9maWxlIHNldHRpbmdzJzsKJGxhbmdbJ2Zyb250ZW5kX3Rvb2xiYXJzJ10gPSAnRnJvbnRlbmQgcHJvZmlsZSBzZXR0aW5ncyc7CiRsYW5nWydwbHVnaW5zX3RhYiddID0gJ1BsdWdpbnMnOwokbGFuZ1sncGx1Z2luc19oZWxwJ10gPSAnQ2hvb3NlIHRoZSBwbHVnaW5zIHlvdSB3YW50IHRvIGFjdGl2YXRlLiBEb2N1bWVudGF0aW9uIGNhbiBiZSBmb3VuZCA8YSBocmVmPSIlcyIgdGFyZ2V0PSJfYmxhbmsiPmhlcmU8L2E+JzsKJGxhbmdbJ3BsdWdpbnNfdGV4dCddID0gJ1BsdWdpbnMnOwokbGFuZ1snc2F2ZXBsdWdpbnMnXSA9ICdTYXZlIHBsdWdpbnMnOwokbGFuZ1sncGx1Z2luc3NhdmVkJ10gPSAnUGx1Z2lucyBzYXZlZCc7CiRsYW5nWydwbHVnaW5zX21vZHVsZSddID0gJ01vZHVsZSBQbHVnaW5zJzsKJGxhbmdbJ3BsdWdpbnNfY29tbW9uJ10gPSAnQ29tbW9uIFBsdWdpbnMnOwokbGFuZ1snbW9kdWxlJ10gPSAnTW9kdWxlJzsKJGxhbmdbJ2Rlc2NyaXB0aW9uJ10gPSAnRGVzY3JpcHRpb24nOwokbGFuZ1sncGx1Z2luJ10gPSAnUGx1Z2luJzsKJGxhbmdbJ3lvdWFyZWludGV4dCddID0gJ1lvdSBhcmUgaW4nOwokbGFuZ1snbG9hZHN0eWxlc2hlZXR0ZXh0J10gPSAnTG9hZCBzdHlsZXNoZWV0IGZvciBjb250ZW50IChyZWNvbW1lbmRlZCknOwokbGFuZ1snZXh0cmFzdHlsZXN0ZXh0J10gPSAnQWRkaXRpb25zIHRvIHN0eWxlc2hlZXQnOwokbGFuZ1snZXh0cmFzdHlsZXNoZWxwJ10gPSAnQ1NTIGVudGVyZWQgaGVyZSB3aWxsIGJlIGFkZGVkIHRvIHRoZSBzdHlsZXNoZWV0IHJlYWQgYnkgVGlueU1DRSBhZnRlciBpdCByZWNpZXZlcyB0aGUgQ01TbXMgc3R5bGVzJzsKJGxhbmdbJ3VwbG9hZG5ld2ZpbGUnXSA9ICdOZXcgZmlsZSc7CiRsYW5nWyd1cGxvYWRmaWxlJ10gPSAnVXBsb2FkJzsKJGxhbmdbJ2NyZWF0ZW5ld2RpciddID0gJ05ldyBkaXInOwokbGFuZ1snY3JlYXRlZGlyJ10gPSAnQ3JlYXRlJzsKJGxhbmdbJ25vZGlybmFtZSddID0gJ05vIGRpcm5hbWUgcHJvdmlkZWQnOwokbGFuZ1snZGlyZXhpc3RzJ10gPSAnRGlybmFtZSBhbHJlYWR5IGV4aXN0cyc7CiRsYW5nWyduZXdkaXJjcmVhdGVkJ10gPSAnTmV3IGRpciBzdWNjZXNzZnVsbHkgY3JlYXRlZCc7CiRsYW5nWyduZXdkaXJmYWlsZWQnXSA9ICdBbiBlcnJvciBvY2N1cmVkIHRyeWluZyB0byBjcmVhdGUgZGlyJzsKJGxhbmdbJ25vZmlsZSddID0gJ05vIGZpbGUgd2FzIHVwbG9hZGVkJzsKJGxhbmdbJ2ZpbGV0b29iaWcnXSA9ICdVcGxvYWRlZCBmaWxlIGlzIHRvbyBiaWcnOwokbGFuZ1snY29udGFpbnNpbGxlZ2FsY2hhcnMnXSA9ICdGaWxlbmFtZSBjb250YWlucyBvbmUgb3IgbW9yZSBpbGxlZ2FsIGNoYXJhY3RlcnMgKCYjMDM5OywmcXVvdDssKywqLFwsLywmYW1wOywkKSc7CiRsYW5nWyd1cGxvYWRmYWlsZWQnXSA9ICdFcnJvciBtb3ZpbmcgdXBsb2FkZWQgZmlsZSBpbnRvIHBsYWNlJzsKJGxhbmdbJ2ZpbGV1cGxvYWRlZCddID0gJ0ZpbGUgc3VjY2Vzc2Z1bGx5IHVwbG9hZGVkJzsKJGxhbmdbJ25vdGFuaW1hZ2UnXSA9ICdUaGUgdXBsb2FkZWQgZmlsZSBpcyBub3QgYW4gaW1hZ2UnOwokbGFuZ1snZmlsZXBpY2tlcnRpdGxlJ10gPSAnQ01TTWFkZVNpbXBsZSBGaWxlIFNlbGVjdGlvbic7CiRsYW5nWydzdWNjZXNzJ10gPSAnU3VjY2Vzcyc7CiRsYW5nWydmaWxlb3BlcmF0aW9ucyddID0gJ0ZpbGUgb3BlcmF0aW9ucyc7CiRsYW5nWyd0aG91c2FuZGRlbGltaXRlciddID0gJywnOwokbGFuZ1snc2l6ZSddID0gJ9it2KzZhSc7CiRsYW5nWydkaW1lbnNpb25zJ10gPSAnV3hIJzsKJGxhbmdbJ2FkdmFuY2VkX3RhYiddID0gJ0FkdmFuY2VkJzsKJGxhbmdbJ2hlbHAnXSA9ICcJPGgzPldoYXQgZG9lcyB0aGlzIGRvPzwvaDM+DQoJPHA+RW5hYmxlcyBhIFRpbnlNQ0UgdG8gYmUgdXNlZCBhcyBhIFdZU0lXWUcuPC9wPg0KCTxoMz5Ib3cgZG8gSSB1c2UgaXQ/PC9oMz4NCgk8cD5JbnN0YWxsIGl0LCB0aGVuIGdvIHRvIFVzZXIgUHJlZmVyZW5jZXMgYW5kIFNldCBUaW55TUNFIHRvIGJlIHlvdXIgd3lzaXd5ZyBvZiBjaG9pY2UuPC9wPg0KICA8aDM+U3BlbGxjaGVja2VyPC9oMz4NCiAgPHA+QXMgb2YgdmVyc2lvbiAyLjYuMCwgVGlueU1DRSBpbmNsdWRlcyBhbiBvbmxpbmUgc3BlbGxjaGVja2VyLiBQbGVhc2Ugbm90aWNlIHRoYXQgU1NMIG11c3QgYmUgdHVybmVkIG9uIGluIHlvdXIgc2VydmVyLWNvbmZpZ3VyYXRpb24gaW4gb3JkZXIgZm9yIHRoaXMgdG8gd29yay4gT24gc29tZSBzZXR1cHMgdGhpcyBvcHRpb24gaXMgY2FsbGVkIHBocF9vcGVuc3NsIGJ1dCB0aGF0IG1heSB2YXJ5PC9wPg0KCTxoMz5Ucm91Ymxlc2hvb3Rpbmc8L2gzPg0KCVNvbWUgcGVvcGxlIGhhdmUgdHJvdWJsZSB3aXRoIHRpbnkgbm90IHNob3dpbmcgdXAgdXBvbiBpbnN0YWxsYXRpb24gb3IgdXBncmFkaW5nLiBIZXJlIGlzIGEgY2hlY2tsaXN0IG9mIA0KCXRoaW5ncyB5b3UgY2FuIHRyeSBiZWZvcmUgY29udGFjdGluZyBtZSBmb3IgZnVydGhlciBzdXBwb3J0Lg0KCTxici8+DQoJPHVsPg0KCTxsaT4xLiBQbGVhc2UsIHBsZWFzZSwgdHJ5IHRvIHJldXBsb2FkIHRoZSBtb2R1bGVzL1RpbnlNQ0UgZGlyIHRvIHlvdXIgc2VydmVyLiBZb3UmIzAzOTtkIGJlIGFtYXplZCBob3cgbWFueSB0aW1lcyB0aGlzIGhhcyBoZWxwZWQgcGVvcGxlLjwvbGk+CQ0KCTxsaT4yLiBJZiB1cGdyYWRpbmcsIHBsZWFzZSB0cnkgdG8gcmVzZXQgYWxsIHNldHRpbmdzLiBOb3QgbmljZSBpZiB5b3UmIzAzOTt2ZSBkb25lIGEgbG90IG9mIGN1c3RvbWl6YXRpb24sIEkga25vdywgYnV0IGEgbG90IG9mIHRoaW5ncyBjaGFuZ2VkIGZyb20gMi4zLnggdG8gMi40Lnggc2VyaWVzIG9mIHRoZSBtb2R1bGUuDQoJPGxpPjMuIFRyeSBlbmFibGluZyB0aGUgc3RhdGljIGNvbmZpZyBvcHRpb24gaW4gYWR2YW5jZWQgc2V0dGluZ3MuIFRoaXMgd29ya3MgYmV0dGVyIG9uIHNvbWUgc3lzdGVtcyAobGlrZSBDR0ktYmFzZWQpLCBOb3RlIHRoYXQgdGhpcyByZXF1aXJlcyB5b3VyIC90bXAvLWRpciB0byBiZSB3cml0YWJsZSBieSB0aGUgd2Vic2VydmVyDQoJPC91bD4NCgk8YnIvPg0KICA8aDM+UGx1Z2luIGRldmVsb3BtZW50PC9oMz4NCiAgQXMgb2YgdmVyc2lvbiAyLjcuMCB0aGUgVGlueU1DRS1tb2R1bGUgaGFzIHRoZSBhYmlsaXR5IHRvIGFsbG93IG90aGVyIG1vZHVsZXMgdG8gcmVnaXN0ZXIgZXh0ZW5zaW9ucyBmb3IgaXQuIENvdWxkIGJlIGEgY3VzdG9tIGljb24gYWxsb3dpbmcgeW91IHRvIGluc2VydA0KICBjb250ZW50IGZyb20gc29tZSBtb2R1bGUsIGxpa2UgR2FsbGVyeSBldGMuIEhvdyB0byBkbyB0aGlzIGlzIHByZXR0eSB0ZWNoIHN0dWZmLCBidXQgaWYgeW91IGFyZSBhIG1vZHVsZSBkZXZlbG9wZXIgYW5kIGludGVyZXN0ZWQgaW4gY2hlY2tpbmcgaXQgb3V0DQogIHBsZWFzZSBsb29rIGluIHRoZSBUaW55TUNFL2RvY3MtZGlyIGZvciBmdXJ0aGVyIGluc3RydWN0aW9ucy4NCgkJDQonOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My40Nzg5MTg3MTAuMTMxMTE3ODYwNS4xMzExMTc4NjA1LjEzMTExNzg2MDUuMSc7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjEzMTExNzg2MDUuMS4xLnV0bWNjbj0oZGlyZWN0KXx1dG1jc3I9KGRpcmVjdCl8dXRtY21kPShub25lKSc7CiRsYW5nWydxY2EnXSA9ICdQMC0xMzkzMjQ2ODU1LTEzMDQ0OTg4NDIzNjQnOwokbGFuZ1sndXRtYiddID0gJzE1Njg2MTM1Myc7CiRsYW5nWyd1dG1jJ10gPSAnMTU2ODYxMzUzJzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/ca_ES.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1RpbnlNQ0UgV1lTSVdZRyc7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ00mb2dyYXZlO2RpbCBkZXNpbnN0YWwubGF0JzsKJGxhbmdbJ2luc3RhbGxlZCddID0gJ0luc3RhbC5sYWRhIGxhIHZlcnNpJm9hY3V0ZTsgJXMgZGVsIG0mb2dyYXZlO2R1bCc7CiRsYW5nWydzdHJpcGJhY2tncm91bmR0YWdzJ10gPSAnRWxpbWluYXQgZWxzIHRhZ3MgZGUgZm9ucyBkZWwgQ1NTJzsKJGxhbmdbJ3N0aXB0YWdzX2hlbHAnXSA9ICdUaGlzIG9wdGlvbnMgdHJpZXMgdG8gcmVtb3ZlIGJhY2tncm91bmQtdHlwZSBzZXR0aW5ncyBmcm9tIHRoZSBzdHlsZXNoZWV0Lic7CiRsYW5nWydzb3VyY2VfZm9ybWF0dGluZ190ZXh0J10gPSAnQXBwbHkgc291cmNlIGZvcm1hdHRpbmcgdG8gdGhlIG91dHB1dCBIVE1MJzsKJGxhbmdbJ2Ryb3Bkb3duYmxvY2tmb3JtYXRzX3RleHQnXSA9ICdCbG9ja2Zvcm1hdHMgaW4gZHJvcGRvd24tbWVudSc7CiRsYW5nWydhbGxvd3RhYmxlcyddID0gJ1Blcm1ldCBvcGVyYWNpb25zIGRlIHRhdWxhJzsKJGxhbmdbJ25ld2xpbmVzdHlsZV90ZXh0J10gPSAnRXN0aWwgZGUgTm92YSBsJmlhY3V0ZTtuaWEnOwokbGFuZ1sncHN0eWxlJ10gPSAnZXN0aWwgZGUgPHA+JzsKJGxhbmdbJ2Jyc3R5bGUnXSA9ICdlc3RpbCBkZSA8YnIvPic7CiRsYW5nWyd1c2Vjb21wcmVzc2lvbnRleHQnXSA9ICdVdGlsaXR6YSBjb21wcmVzc2kmb2FjdXRlOyBneic7CiRsYW5nWyd1c2Vjb21wcmVzc2lvbmhlbHAnXSA9ICdUaGlzIGNhbiBzcGVlZCB1cCBsb2FkaW5nIFRpbnlNQ0UsIGJ1dCBjYW4gYWxzbyBwcmV2ZW50IGl0IGZyb20gbG9hZGluZyBvbiBzb21lIHN5c3RlbXMuIFVzZSB3aXRoIGNhdXRpb24uJzsKJGxhbmdbJ2ZvcmNlZHJvb3RibG9ja3RleHQnXSA9ICdGb3JjZSA8cD4gcm9vdGJsb2NrJzsKJGxhbmdbJ2ZvcmNlZHJvb3RibG9ja2hlbHAnXSA9ICdGb3JjZXMgdGhlIHJldHVybmVkIGNvbnRlbnQgdG8gYXQgbGVhc3QgYmUgZW5jbG9zZWQgaW4gYSA8cD4tdGFnJzsKJGxhbmdbJ2ZpbGVwaWNrZXJzdHlsZSddID0gJ0ZpbGVwaWNrZXIgc3R5bGUnOwokbGFuZ1snZmlsZXBpY2tlcnNpemUnXSA9ICdGaWxlcGlja2VyIHNpemUnOwokbGFuZ1snYWxsb3d1cGxvYWR0ZXh0J10gPSAnQWxsb3cgdXBsb2FkIGFuZCBjcmVhdGluZyBkaXJzIGluIEZpbGVQaWNrZXInOwokbGFuZ1snYWxsb3dzY2FsaW5ndGV4dCddID0gJ0FsbG93IG9uLXRoZS1mbHkgcmVzaXppbmcgb2YgdXBsb2FkZWQgaW1hZ2VzJzsKJGxhbmdbJ3NjYWxpbmdkaW1lbnNpb25zdGV4dCddID0gJ0RlZmF1bHQgZGltZW5zaW9ucyc7CiRsYW5nWydyZXNpemV0byddID0gJ1Jlc2l6ZSB0bzonOwokbGFuZ1sndXNlYWR2YW5jZWRwcm9maWxlJ10gPSAnVXNlIGFkdmFuY2VkIFRpbnlNQ0UtcHJvZmlsZSc7CiRsYW5nWydzYXZlcHJvZmlsZSddID0gJ1NhdmUgcHJvZmlsZSc7CiRsYW5nWydwcm9maWxlc2F2ZWQnXSA9ICdUaGUgcHJvZmlsZSB3YXMgc2F2ZWQnOwokbGFuZ1sncHJvZmlsZXNfdGFiJ10gPSAnUHJvZmlsZXMnOwokbGFuZ1snYWR2YW5jZWRfYmFja2VuZF90b29sYmFycyddID0gJ0FkdmFuY2VkIGJhY2tlbmQgcHJvZmlsZSBzZXR0aW5ncyc7CiRsYW5nWydzYXZlc3R5bGVzJ10gPSAnU2F2ZSBzdHlsZXMnOwokbGFuZ1snYWxsb3dhZHZhbmNlZHByb2ZpbGUnXSA9ICdBbGxvdyB1c2FnZSBvZiBhZHZhbmNlZCBwcm9maWxlIGluIFRpbnlNQ0UnOwokbGFuZ1snc2hvd2ZpbGVtYW5hZ2VtZW50J10gPSAnU2hvdyBmaWxlbWFuYWdlbWVudCBvcHRpb25zJzsKJGxhbmdbJ3Nob3dmaWxlbWFuYWdlbWVudGhlbHAnXSA9ICdTaG93IGZpbGVtYW5hZ2VtZW50IGluIG9wdGlvbnMgbGlrZSB1cGxvYWQsIG1ha2UgZGlyIGFuZCBmaWxlIGRlbGV0aW9uIGluIEZpbGVQaWNrZXIsIGlmIHRoZSB1c2VyIGlzIGFsbG93ZWQgdG8gcGVyZm9ybSB0aGVzZS4nOwokbGFuZ1snZGVsZXRlY29uZmlybWF0aW9uJ10gPSAnQXJlIHlvdSBzdXJlIHRoaXMgZmlsZSBzaG91bGQgYmUgZGVsZXRlZD8nOwokbGFuZ1snZGVsZXRlZmlsZXN1Y2Nlc3MnXSA9ICd3YXMgc3VjY2Vzc2Z1bGx5IGRlbGV0ZWQnOwokbGFuZ1snZGVsZXRlZmlsZWZpbGEnXSA9ICdjb3VsZCBub3QgYmUgZGVsZXRlZCc7CiRsYW5nWydjYW5ub3RyZWFkY29uZmlnJ10gPSAnQ2Fubm90IHJlYWQgdGhlIGZpbGUgdGlueWNvbmZpZy5waHAgZGlyZWN0bHkgc28gVGlueU1DRSB3aWxsIHByb2JhYmx5IG5vdCB3b3JrLiBZb3Ugc2hvdWxkIGNoZWNrIHRoZSBwZXJtaXNzaW9ucyBvZiB0aGUgZmlsZSBhbmQgb2YgdGhlIHBhcmVudCBkaXJzLCB3aGljaCBzaG91bGQgYmUgcmVhZGFibGUgZm9yIGFsbCBidXQgb25seSB3cml0YWJsZSBmb3Igb3duZXIuJzsKJGxhbmdbJ2ZpbGVuYW1lb25seSddID0gJ1Nob3cgZmlsZW5hbWVzJzsKJGxhbmdbJ3RodW1ibmFpbHNvbmx5J10gPSAnU2hvdyB0aHVtYm5haWxzJzsKJGxhbmdbJ3Nob3d0aHVtYm5haWxmaWxlc3RleHQnXSA9ICdTaG93IHRodW1ibmFpbC1maWxlcyBpbiBsaXN0cyc7CiRsYW5nWydmaWxlbmFtZWFuZHRodW1ibmFpbHMnXSA9ICdTaG93IGJvdGggZmlsZW5hbWVzIGFuZCB0aHVtYm5haWxzJzsKJGxhbmdbJ3NraW5zdGV4dCddID0gJ1NraW4nOwokbGFuZ1snc2tpbnZhcmlhdGlvbnRleHQnXSA9ICdTa2luIHZhcmlhdGlvbic7CiRsYW5nWydhZHZhbmNlZHdhcm5pbmcnXSA9ICc8c3Ryb25nPlBsZWFzZSBub3RlITxici8+Q2hhbmdpbmcgdGhlc2Ugc2V0dGluZ3MgY2FuIGNhdXNlIFRpbnlNQ0UgdG8gc3RvcCB3b3JraW5nIG9yIHRoZSBnZW5lcmF0ZWQgY29kZSB0byBiZSB3cm9uZyBpbiBzb21lIHdheS4gT25seSBlZGl0IHRoaXMgaWYgeW91IGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nISBQbGVhc2UgY29uc3VsdCB0aGUgVGlueU1DRSB3ZWJzaXRlIGJlZm9yZSBwbGF5aW5nIHdpdGggdGhpcy48L3N0cm9uZz4nOwokbGFuZ1snZW50aXR5ZW5jb2RpbmdfdGV4dCddID0gJ0VuY29kaW5nIG9mIGVudGl0aWVzJzsKJGxhbmdbJ3Jhd2VuY29kaW5nJ10gPSAnUmF3IGVuY29kaW5nIChmYXN0ZXN0LCB3b3JrcyBpbiBtb3N0IGNhc2VzKSc7CiRsYW5nWyduYW1lZGVuY29kaW5nJ10gPSAnTmFtZWQgZW5jb2RpbmcgKGxpa2UgJm5ic3A7KSc7CiRsYW5nWydudW1lcmljZW5jb2RpbmcnXSA9ICdOdW1lcmljIGVuY29kaW5nIChsaWtlICZhbXA7IzE2MDspJzsKJGxhbmdbJ3Nob3dfcGF0aF90ZXh0J10gPSAnU2hvdyB0aGUgcGF0aCBvZiB0aGUgZWxlbWVudCBhdCB0aGUgYm90dG9tIG9mIHRoZSBlZGl0b3InOwokbGFuZ1sndG9vbGJhcl90YWInXSA9ICdUb29sYmFyJzsKJGxhbmdbJ3Rvb2xiYXJfaGVscCddID0gJ1RoZXNlIG9wdGlvbnMgc2hvdWxkIGNvbnRhaW4gYSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBidXR0b24vY29udHJvbCBuYW1lcyB0byBpbnNlcnQgaW50byB0aGUgdG9vbGJhci4gVGhlIGNoYXIgfCBjYW4gYmUgdXNlZCBpbnN0ZWFkIG9mIHRoZSB3b3JkICYjMDM5O3NlcGFyYXRvciYjMDM5Oyc7CiRsYW5nWyd0b29sYmFyX3RleHQnXSA9ICdUb29sYmFyJzsKJGxhbmdbJ3Rvb2xiYXJoZWxwdGV4dCddID0gJ0NsaWNrIGhlcmUgdG8gdmlldyB0b29sYmFyLWluc3RydWN0aW9ucyBpbiBUaW55TUNFLXdpa2kuJzsKJGxhbmdbJ2VkaXRvcl93aWR0aF90ZXh0J10gPSAnV2lkdGggb2YgZWRpdG9yIGZpZWxkJzsKJGxhbmdbJ2VkaXRvcl9oZWlnaHRfdGV4dCddID0gJ0hlaWdodCBvZiBlZGl0b3IgZmllbGQnOwokbGFuZ1snYXV0byddID0gJ0F1dG8nOwokbGFuZ1snb3InXSA9ICdvcic7CiRsYW5nWydkYXRldGltZWZvcm1hdF90ZXh0J10gPSAnRGF0ZS9UaW1lIGZvcm1hdCc7CiRsYW5nWyd0aW1ldGV4dCddID0gJ1RpbWUnOwokbGFuZ1snZGF0ZXRleHQnXSA9ICdEYXRlJzsKJGxhbmdbJ2RhdGV0aW1lZm9ybWF0X2hlbHAnXSA9ICdDbGljayBoZXJlIGZvciBoZWxwIG9uIGhvdyB0byBmb3JtYXQgdGhlIGRhdGUvdGltZSc7CiRsYW5nWydleHRyYWNvbmZpZ3RleHQnXSA9ICdFeHRyYSBjb25maWd1cmF0aW9uJzsKJGxhbmdbJ2V4dHJhY29uZmlnaGVscCddID0gJ09uZSBzdGF0ZW1lbnQgcGVyIGxpbmUsIG5vIGNvbW1hcywgcGxlYXNlLiBDaGVjayBUaW55TUNFLXdpa2kgZm9yIGluc3RydWN0aW9ucy4nOwokbGFuZ1snY3VzdG9tZHJvcGRvd250ZXh0J10gPSAnQ3VzdG9tIGRyb3Bkb3duJzsKJGxhbmdbJ2N1c3RvbWRyb3Bkb3duaGVscCddID0gJ0luc2VydHMgY3VzdG9taXphYmxlIHNuaXBwZXRzIG9mIGNvZGUvdGV4dCBieSBzZWxlY3Rpb24gaW4gYSBkcm9wZG93biBtZW51LiAKT2J2aW91cyB1c2VzIGFyZSBlYXN5IGFjY2VzcyB0byB0YWcmIzAzOTtzIGV0Yy4gVGhlIG1lbnUgaXMgaW5zZXJ0ZWQgaW50byB0b29sYmFyIHVzaW5nICYjMDM5O2N1c3RvbWRyb3Bkb3duJiMwMzk7Lic7CiRsYW5nWydzdGFydGVuYWJsZWR0ZXh0J10gPSAnU3RhcnR1cCBlbmFibGVkJzsKJGxhbmdbJ3N0YXJ0ZW5hYmxlZGhlbHAnXSA9ICdVbmNoZWNraW5nIHRoaXMgc3RhcnRzIHVwIFRpbnktZWRpdG9ycyBpbiBhIGRpc2FibGVkIHN0YXRlLiBTaG91bGQgYmUgdXNlZCB0b2dldGhlciB3aXRoIHRoZSB0b2dnbGUgYnV0dG9uLic7CiRsYW5nWydsb2FkY21zbGlua2VydGV4dCddID0gJ0xvYWQgdGhlIENNUy1saW5rZXInOwokbGFuZ1snbG9hZGNtc2xpbmtlcmhlbHAnXSA9ICdUaGlzIGdlbmVyYXRlcyB0aGUgamF2YXNjcmlwdC1jb2RlIG5lZWRlZCB0byBhbGxvdyAmIzAzOTtjbXNsaW5rZXImIzAzOTsgdG8gYmUgYWRkZWQgdG8gYSB0b29sYmFyLic7CiRsYW5nWydjbXNsaW5rZXJzdHlsZXRleHQnXSA9ICdDTVMtbGlua2VyIGxpbmstc3R5bGUnOwokbGFuZ1snY21zc2VsZmxpbmtzdHlsZSddID0gJ3tjbXNfc2VsZmxpbmt9LXN0eWxlJzsKJGxhbmdbJ2FocmVmc3R5bGUnXSA9ICc8YSBocmVmPi1zdHlsZSc7CiRsYW5nWydyZWxhdGl2ZXVybHN0ZXh0J10gPSAnR2VuZXJhdGUgcmVsYXRpdmUgdXJscyc7CiRsYW5nWydmb3JjZWNsZWFucGFzdGV0ZXh0J10gPSAnRm9yY2UgY2xlYW4gb24gcGFzdGUnOwokbGFuZ1snZm9yY2VjbGVhbnBhc3RlaGVscCddID0gJ1RoaXMgc2hvdWxkIGJlIGVuYWJsZWQgdG8gcmVtb3ZlIHN0cmFuZ2UgZm9ybWF0dGluZyBjb2RlcyB3aGVuIHBhc3RpbmcgZnJvbSBXb3JkIGV0Yy4nOwokbGFuZ1snYm9keWNzc190ZXh0J10gPSAnQm9keSB0YWcgQ1NTJzsKJGxhbmdbJ2JvZHljc3NfaGVscCddID0gJ1dpbGwgYmUgYWRkZWQgdG8gdGhlIGNzcyBib2R5LWRlZmluaXRpb24uIEhpbnQ6IEJhY2tncm91bmQtY29sb3IgY2FuIGJlIHNldCB0byB3aGl0ZSB1c2luZyAmcXVvdDtiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZSZxdW90Oyc7CiRsYW5nWydpbmNsdWRlb25seXNjcmVlbmNzc190ZXh0J10gPSAnSW5jbHVkZSBvbmx5IHNjcmVlbiBDU1MnOwokbGFuZ1snaW5jbHVkZW9ubHlzY3JlZW5jc3NfaGVscCddID0gJ1NlbGVjdGluZyB0aGlzIGFsbG93cyBvbmx5IGF0dGFjaGVkIHN0eWxlc2hlZXRzIHdpdGggdGhlIHNjcmVlbi1tZWRpYXR5cGUgc2VsZWN0ZWQgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHN0eWxlcyBUaW55TUNFIGhhbmRsZXMuJzsKJGxhbmdbJ3VzZXN0YXRpY2NvbmZpZ3RleHQnXSA9ICdVc2Ugc3RhdGljIGNvbmZpZyBmaWxlJzsKJGxhbmdbJ3VzZXN0YXRpY2NvbmZpZ2hlbHAnXSA9ICdUaGlzIGNhbiBoZWxwIGdldHRpbmcgdGlueSB0byB3b3JrIG9uIHN5c3RlbXMgd2hlcmUgdGhlIGhvc3RpbmcgZmFjaWxpdHkgYWRkcyBzdHVmZiBsaWtlIHN0YXRpc3RpY3MgZXRjLiB0byBhbGwgb3V0cHV0LCBicmVha2luZyBkeW5hbWljYWxseSBjcmVhdGVkIGphdmFzY3JpcHQgY29uZmlnIGZpbGUnOwokbGFuZ1sndXNlc3RhdGljY29uZmlnd2FybmluZyddID0gJ1dhcm5pbmchIFlvdSBoYXZlIHRoZSBzdGF0aWMgY29uZmlnLWZpbGUgb3B0aW9uIGVuYWJsZWQgYnV0IHlvdXIgL3RtcC8gZGlyIGlzIG5vdCB3cml0YWJsZS4gVGhpcyB3aWxsIHByZXZlbnQgdGhlIG1vZHVsZSBmcm9tIHNhdmluZyB0aGUgc3RhdGljIGNvbmZpZy1maWxlIGFuZCB3aWxsIG1vc3QgcHJvYmFibHkgcmVuZGVyIFRpbnlNQ0UgaW5vcGVyYXRpb25hbC4nOwokbGFuZ1snc2hvd3RvZ2dsZWJ1dHRvbl90ZXh0J10gPSAnU2hvdyBjaGVja2JveCB0byB0dXJuIHd5c2l3eWcgb24vb2ZmJzsKJGxhbmdbJ3RvZ2dsZXd5c2l3eWcnXSA9ICdUdXJuIFdZU0lXWUcgb24vb2ZmJzsKJGxhbmdbJ3N0eWxlc190YWInXSA9ICdDU1MgU3R5bGVzJzsKJGxhbmdbJ3N0eWxlc19oZWxwJ10gPSAnICBJZiB5b3UgbGVhdmUgdGhlIGZpZWxkIGVtcHR5LCBUaW55TUNFIHdpbGwgcGFyc2UgeW91ciBDU1MgZmlsZSBhbmQgbGlzdCB0aGUgY2xhc3Mgc3R5bGVzIGNvbnRhaW5lZCBpbiBpdCB0byB0aGUgdXNlci4gCiAgSWYgeW91IHdhbnQgb25seSBzb21lIHN0eWxlcyBwcmVzZW50ZWQgdG8gdGhlIHVzZXIsIHNwZWNpZnkgdGhlbSBpbiB0aGUgZm9ybSAmcXVvdDtDdXN0b21OYW1lMT1zdHlsZTE7IEN1c3RvbU5hbWUyPXN0eWxlMiZxdW90OywgCiAgJnF1b3Q7c3R5bGUxJnF1b3Q7IGJlaW5nIGEgY2xhc3MgY2FsbCBpbiB5b3VyIHN0eWxlc2hlZXQgYW5kIHlvdSBkb24mIzAzOTt0IHB1dCB0aGUgLiAKICBub3JtYWxseSB1c2VkIGZvciBjbGFzcyBjYWxscyBhcyBpdCBpcyBhbHJlYWR5IGluIHlvdXIgQ1NTLCBpdCB3aWxsIGxvb2sgbGlrZSB0aGlzIDxzcGFuIGNsYXNzPSZxdW90O3N0eWxlMSZxdW90Oz50ZXh0PC9zcGFuPiwgCiAgaW4gdGhlIGZpcnN0IGZpZWxkIGJlbG93LiAKJzsKJGxhbmdbJ2Nzc19zdHlsZXNfdGV4dCddID0gJ1N0eWxlcyc7CiRsYW5nWydhY2Nlc3NkZW5pZWQnXSA9ICdBY2Nlc3MgRGVuaWVkLiBQbGVhc2UgY2hlY2sgeW91ciBwZXJtaXNzaW9ucy4nOwokbGFuZ1snZXJyb3InXSA9ICdFcnJvciEnOwokbGFuZ1snc3VibWl0J10gPSAnU3VibWl0JzsKJGxhbmdbJ3VwZGF0ZSddID0gJ1VwZGF0ZSc7CiRsYW5nWydzYXZlc2V0dGluZ3MnXSA9ICdTYXZlIHNldHRpbmdzJzsKJGxhbmdbJ3NldHRpbmdzJ10gPSAnU2V0dGluZ3MnOwokbGFuZ1snc2V0dGluZ3NzYXZlZCddID0gJ1NldHRpbmdzIHdhcyBzYXZlZCc7CiRsYW5nWydzYXZlYWR2YW5jZWQnXSA9ICdTYXZlIGFkdmFuY2VkIHNldHRpbmdzJzsKJGxhbmdbJ2FkdmFuY2Vkc2F2ZWQnXSA9ICdBZHZhbmNlZCBzZXR0aW5ncyBzYXZlZCc7CiRsYW5nWyd0b29sYmFyc2F2ZWQnXSA9ICdUb29sYmFyIHdhcyBzYXZlZCc7CiRsYW5nWydzdHlsZXNzYXZlZCddID0gJ1N0eWxlcyB3YXMgc2F2ZWQnOwokbGFuZ1sndGVzdGFyZWF0ZXh0J10gPSAnPHA+VGVzdCBhcmVhLCBubyBjb250ZW50IHdpbGwgYmUgaGFybWVkIHBsYXlpbmcgd2l0aCB0aGlzLi4uPC9wPic7CiRsYW5nWydyZXNldCddID0gJ1Jlc2V0IGRlZmF1bHRzJzsKJGxhbmdbJ3Jlc2V0YWxsJ10gPSAnUmVzZXQgYWxsIHNldHRpbmdzIHRvIGRlZmF1bHRzJzsKJGxhbmdbJ2NvbmZpcm1yZXNldCddID0gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZXNldCB0aGVzZSBzZXR0aW5ncyB0byB0aGVpciBkZWZhdWx0cz8nOwokbGFuZ1snY29uZmlybXJlc2V0YWxsJ10gPSAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlc2V0IEFMTCBzZXR0aW5ncyB0byB0aGVpciBkZWZhdWx0cz8nOwokbGFuZ1snc2V0dGluZ3NyZXNldCddID0gJ1RoZXNlIHNldHRpbmdzIHdhcyByZXNldCB0byBkZWZhdWx0JzsKJGxhbmdbJ2FsbHNldHRpbmdzcmVzZXQnXSA9ICdBbGwgc2V0dGluZ3Mgd2VyZSByZXNldCB0byBkZWZhdWx0JzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnaGFzIGJlZW4gdXBncmFkZWQgdG8gdmVyc2lvbiAlcyc7CiRsYW5nWydjdXN0b21kcm9wZG93biddID0gJ0N1c3RvbSBkcm9wZG93bi1tZW51JzsKJGxhbmdbJ2Ntc21zbGlua2VyJ10gPSAnSW5zZXJ0IGxpbmsgdG8gY21zbXMtcGFnZSc7CiRsYW5nWydiYWNrZW5kX3Rvb2xiYXJzJ10gPSAnQmFja2VuZCBwcm9maWxlIHNldHRpbmdzJzsKJGxhbmdbJ2Zyb250ZW5kX3Rvb2xiYXJzJ10gPSAnRnJvbnRlbmQgcHJvZmlsZSBzZXR0aW5ncyc7CiRsYW5nWydwbHVnaW5zX3RhYiddID0gJ1BsdWdpbnMnOwokbGFuZ1sncGx1Z2luc19oZWxwJ10gPSAnQ2hvb3NlIHRoZSBwbHVnaW5zIHlvdSB3YW50IHRvIGFjdGl2YXRlLiBEb2N1bWVudGF0aW9uIGNhbiBiZSBmb3VuZCA8YSBocmVmPSIlcyIgdGFyZ2V0PSJfYmxhbmsiPmhlcmU8L2E+JzsKJGxhbmdbJ3BsdWdpbnNfdGV4dCddID0gJ1BsdWdpbnMnOwokbGFuZ1snc2F2ZXBsdWdpbnMnXSA9ICdTYXZlIHBsdWdpbnMnOwokbGFuZ1sncGx1Z2luc3NhdmVkJ10gPSAnUGx1Z2lucyBzYXZlZCc7CiRsYW5nWyd5b3VhcmVpbnRleHQnXSA9ICdZb3UgYXJlIGluJzsKJGxhbmdbJ2xvYWRzdHlsZXNoZWV0dGV4dCddID0gJ0xvYWQgc3R5bGVzaGVldCBmb3IgY29udGVudCAocmVjb21tZW5kZWQpJzsKJGxhbmdbJ2V4dHJhc3R5bGVzdGV4dCddID0gJ0FkZGl0aW9ucyB0byBzdHlsZXNoZWV0JzsKJGxhbmdbJ2V4dHJhc3R5bGVzaGVscCddID0gJ0NTUyBlbnRlcmVkIGhlcmUgd2lsbCBiZSBhZGRlZCB0byB0aGUgc3R5bGVzaGVldCByZWFkIGJ5IFRpbnlNQ0UgYWZ0ZXIgaXQgcmVjaWV2ZXMgdGhlIENNU21zIHN0eWxlcyc7CiRsYW5nWyd1cGxvYWRuZXdmaWxlJ10gPSAnTmV3IGZpbGUnOwokbGFuZ1sndXBsb2FkZmlsZSddID0gJ1VwbG9hZCc7CiRsYW5nWydjcmVhdGVuZXdkaXInXSA9ICdOZXcgZGlyJzsKJGxhbmdbJ2NyZWF0ZWRpciddID0gJ0NyZWF0ZSc7CiRsYW5nWydub2Rpcm5hbWUnXSA9ICdObyBkaXJuYW1lIHByb3ZpZGVkJzsKJGxhbmdbJ2RpcmV4aXN0cyddID0gJ0Rpcm5hbWUgYWxyZWFkeSBleGlzdHMnOwokbGFuZ1snbmV3ZGlyY3JlYXRlZCddID0gJ05vdSBkaXJlY3RvcmkgY3JlYXQgYW1iICZlZ3JhdmU7eGl0JzsKJGxhbmdbJ25ld2RpcmZhaWxlZCddID0gJ0hpIGhhIGhhZ3V0IHVuIGVycm9yIG1pcmFudCBkZSBjcmVhciB1biBkaXJlY3RvcmknOwokbGFuZ1snbm9maWxlJ10gPSAnTm8gcyYjMDM5O2hhIHB1amF0IGNhcCBhcnhpdSc7CiRsYW5nWydmaWxldG9vYmlnJ10gPSAnQXJ4aXUgcHVqYXQgbWFzc2EgZ3Jvcyc7CiRsYW5nWydjb250YWluc2lsbGVnYWxjaGFycyddID0gJ0VsIG5vbSBkJiMwMzk7YXJ4aXUgY29udCZlYWN1dGU7IHVuIG8gbSZlYWN1dGU7cyBjYXImYWdyYXZlO2N0ZXJzIGlsLmxlZ2FscyAoJiMwMzk7LCZxdW90OywrLCosXCwvLCZhbXA7LCQpJzsKJGxhbmdbJ3VwbG9hZGZhaWxlZCddID0gJ0Vycm9yIG1vdmVudCBhbCBzZXUgbGxvYyBsJiMwMzk7YXJ4aXUgcHVqYXQgJzsKJGxhbmdbJ2ZpbGV1cGxvYWRlZCddID0gJ0FyeGl1IHB1amF0IGFtYiAmZWdyYXZlO3hpdCc7CiRsYW5nWydmaWxlcGlja2VydGl0bGUnXSA9ICdTZWxlY2NpJm9hY3V0ZTsgZCYjMDM5O2FyeGl1cyBkZSBDTVNNYWRlU2ltcGxlJzsKJGxhbmdbJ3N1Y2Nlc3MnXSA9ICcmRWdyYXZlO3hpdCc7CiRsYW5nWydmaWxlb3BlcmF0aW9ucyddID0gJ09wZXJhY2lvbnMgZCYjMDM5O2FyeGl1JzsKJGxhbmdbJ3Rob3VzYW5kZGVsaW1pdGVyJ10gPSAnLCc7CiRsYW5nWydzaXplJ10gPSAnTWlkYSc7CiRsYW5nWydkaW1lbnNpb25zJ10gPSAnV3hIJzsKJGxhbmdbJ2FkdmFuY2VkX3RhYiddID0gJ0F2YW4mY2NlZGlsO2F0JzsKJGxhbmdbJ2hlbHAnXSA9ICcJPGgzPldoYXQgZG9lcyB0aGlzIGRvPzwvaDM+Cgk8cD5FbmFibGVzIGEgVGlueU1DRSB0byBiZSB1c2VkIGFzIGEgV1lTSVdZRy48L3A+Cgk8aDM+SG93IGRvIEkgdXNlIGl0PzwvaDM+Cgk8cD5JbnN0YWxsIGl0LCB0aGVuIGdvIHRvIFVzZXIgUHJlZmVyZW5jZXMgYW5kIFNldCBUaW55TUNFIHRvIGJlIHlvdXIgd3lzaXd5ZyBvZiBjaG9pY2UuPC9wPgoJPGgzPlRyb3VibGVzaG9vdGluZzwvaDM+CglTb21lIHBlb3BsZSBoYXZlIHRyb3VibGUgd2l0aCB0aW55IG5vdCBzaG93aW5nIHVwIHVwb24gaW5zdGFsbGF0aW9uIG9yIHVwZ3JhZGluZy4gSGVyZSBpcyBhIGNoZWNrbGlzdCBvZiAKCXRoaW5ncyB5b3UgY2FuIHRyeSBiZWZvcmUgY29udGFjdGluZyBtZSBmb3IgZnVydGhlciBzdXBwb3J0LgoJPGJyLz4KCTx1bD4KCTxsaT4xLiBQbGVhc2UsIHBsZWFzZSwgdHJ5IHRvIHJldXBsb2FkIHRoZSBtb2R1bGVzL1RpbnlNQ0UgZGlyIHRvIHlvdXIgc2VydmVyLiBZb3UmIzAzOTtkIGJlIGFtYXplZCBob3cgbWFueSB0aW1lcyB0aGlzIGhhcyBoZWxwZWQgcGVvcGxlLjwvbGk+Cgk8bGk+Mi4gVHJ5IHRvIHN3aXRjaCBvbiB0aGUgU3RhdGljIENvbmZpZyBvcHRpb24uIE5vdGUgdGhhdCB0aGlzIHJlcXVpcmVzIHlvdXIgL3RtcC8tZGlyIHRvIGJlIHdyaXRhYmxlIGJ5IHRoZSB3ZWJzZXJ2ZXI8L2xpPgoJPGxpPjMuIElmIHVwZ3JhZGluZywgcGxlYXNlIHRyeSB0byByZXNldCBhbGwgc2V0dGluZ3MuIE5vdCBuaWNlIGlmIHlvdSYjMDM5O3ZlIGRvbmUgYSBsb3Qgb2YgY3VzdG9taXphdGlvbiwgSSBrbm93LCBidXQgYSBsb3Qgb2YgdGhpbmdzIGNoYW5nZXMgZnJvbSAyLjMueCB0byAyLjQueCBzZXJpZXMgb2YgdGhlIG1vZHVsZS4KCTxsaT40LiBUcnkgZW5hYmxpbmcgdGhlIHN0YXRpYyBjb25maWcgb3B0aW9uIGluIGFkdmFuY2VkIHNldHRpbmdzLiBUaGlzIHdvcmtzIGJldHRlciBvbiBzb21lIHN5c3RlbXMgKGxpa2UgQ0dJLWJhc2VkKQoJPC91bD4KCTxici8+CgkJCic7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjMxMDkxNDU5Nzc1MzMyNDc1MDAuMTIyNTMxMTMxMi4xMjU5MjE2ODU3LjEyNTkyNjYwNzAuNDgnOwokbGFuZ1sndXRteiddID0gJzE1Njg2MTM1My4xMjU0MDg4NzU3LjM1LjIudXRtY2NuPShyZWZlcnJhbCl8dXRtY3NyPTY2LjE0Ny4yNDQuMTU1fHV0bWNjdD0vfmNsdWJjb2NjL2Ntc21hZGVzaW1wbGUvaW5zdGFsbC9pbmRleC5waHB8dXRtY21kPXJlZmVycmFsJzsKJGxhbmdbJ3FjYSddID0gJ1AwLTg5NDQ1MTEwOC0xMjUwNDU1ODIzODIwJzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwokbGFuZ1sndXRtYiddID0gJzE1Njg2MTM1Myc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/cs_CZ.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1RpbnlNQ0UgV1lTSVdZRyBlZGl0b3InOwokbGFuZ1sndW5pbnN0YWxsZWQnXSA9ICdNb2R1bCBvZGluc3RhbG92JmFhY3V0ZTtuJzsKJGxhbmdbJ2luc3RhbGxlZCddID0gJ01vZHVsIHZlcnplICVzIGJ5bCBuYWluc3RhbG92JmFhY3V0ZTtuLic7CiRsYW5nWydzdHJpcGJhY2tncm91bmR0YWdzJ10gPSAnT8WZZXphdCB0YWd5IHBvemFkJmlhY3V0ZTsgeiBDU1MnOwokbGFuZ1snc3RpcHRhZ3NfaGVscCddID0gJ1RhdG8gdm9sYmEgc2UgcG9rdXMmaWFjdXRlOyBvZHN0cmFuaXQgbmFzdGF2ZW4mZWFjdXRlOyBDU1Mgdmxhc3Rub3N0aSB0eXB1IEJBQ0tHUk9VTkQgKGJhY2tncm91bmQtaW1hZ2UsIGJhY2tncm91bmQsIGNvbG9yLCBhdGQuKSc7CiRsYW5nWydzb3VyY2VfZm9ybWF0dGluZ190ZXh0J10gPSAnUG91xb4maWFjdXRlO3QgZm9ybSZhYWN1dGU7dG92JmFhY3V0ZTtuJmlhY3V0ZTsgemRyb2plIHZlIHYmeWFjdXRlO2Nob3omaWFjdXRlO20gSFRNTCc7CiRsYW5nWydkcm9wZG93bmJsb2NrZm9ybWF0c190ZXh0J10gPSAnQmxva292JmVhY3V0ZTsgZm9ybSZhYWN1dGU7dHkgdiByb3piYWxvdmFjJmlhY3V0ZTttIG1lbnUnOwokbGFuZ1snYWxsb3d0YWJsZXMnXSA9ICdQb3ZvbGl0IHByJmFhY3V0ZTtjaSBzIHRhYnVsa2FtaSc7CiRsYW5nWyduZXdsaW5lc3R5bGVfdGV4dCddID0gJ1N0eWwgbm92JnlhY3V0ZTtjaCDFmSZhYWN1dGU7ZGvFryc7CiRsYW5nWydwc3R5bGUnXSA9ICdwIHN0eWwnOwokbGFuZ1snYnJzdHlsZSddID0gJ2JyIHN0eWwnOwokbGFuZ1sndXNlY29tcHJlc3Npb250ZXh0J10gPSAnUG91xb4maWFjdXRlO3QgZ3ppcCBrb21wcmVzaSc7CiRsYW5nWyd1c2Vjb21wcmVzc2lvbmhlbHAnXSA9ICdUYXRvIHZvbGJhIG3Fr8W+ZSB6cnljaGxpdCBuYcSNJmlhY3V0ZTt0JmFhY3V0ZTtuJmlhY3V0ZTsgVGlueU1DRSwgYWxlIG5hIG7Em2t0ZXImeWFjdXRlO2NoIHN5c3QmZWFjdXRlO21lY2ggbcWvxb5lIHDFr3NvYml0IHByb2JsJmVhY3V0ZTtteS4gUG91xb4maWFjdXRlO3ZlanRlIG9wYXRybsSbLic7CiRsYW5nWydmb3JjZWRyb290YmxvY2t0ZXh0J10gPSAnRm9yY2UgPHA+IHJvb3RibG9jayc7CiRsYW5nWydmb3JjZWRyb290YmxvY2toZWxwJ10gPSAnRm9yY2VzIHRoZSByZXR1cm5lZCBjb250ZW50IHRvIGF0IGxlYXN0IGJlIGVuY2xvc2VkIGluIGEgPHA+LXRhZyc7CiRsYW5nWydmaWxlcGlja2Vyc3R5bGUnXSA9ICdTdHlsIHYmeWFjdXRlO2LEm3J1IHNvdWJvcsWvJzsKJGxhbmdbJ2ZpbGVwaWNrZXJzaXplJ10gPSAnVmVsaWtvc3QgdiZ5YWN1dGU7YsSbcnUgc291Ym9yxa8nOwokbGFuZ1snYWxsb3d1cGxvYWR0ZXh0J10gPSAnUG92b2xpdCBuYWhyJmFhY3V0ZTt2JmFhY3V0ZTtuJmlhY3V0ZTsgc291Ym9yxa8gYSB2eXR2JmFhY3V0ZTvFmWVuJmlhY3V0ZTsgYWRyZXMmYWFjdXRlO8WZxa8gcMWZJmlhY3V0ZTttbyBwb21vYyZpYWN1dGU7IFYmeWFjdXRlO2LEm3J1IHNvdWJvcsWvJzsKJGxhbmdbJ2FsbG93c2NhbGluZ3RleHQnXSA9ICdQb3ZvbGl0IHptxJtudSByb3ptxJtyxa8gb2JyJmFhY3V0ZTt6a8WvIGLEm2hlbSB1cGxvYWR1JzsKJGxhbmdbJ3NjYWxpbmdkaW1lbnNpb25zdGV4dCddID0gJ1YmeWFjdXRlO2Nob3omaWFjdXRlOyByb3ptxJtyeSBvYnImYWFjdXRlO3prxa8nOwokbGFuZ1sncmVzaXpldG8nXSA9ICdabcSbbml0IHJvem3Em3J5IG5hOic7CiRsYW5nWyd1c2VhZHZhbmNlZHByb2ZpbGUnXSA9ICdQb3XFviZpYWN1dGU7dCBwb2tyb8SNaWwmeWFjdXRlOyBUaW55TUNFIHByb2ZpbCc7CiRsYW5nWydzYXZlcHJvZmlsZSddID0gJ1Vsb8W+aXQgcHJvZmlsJzsKJGxhbmdbJ3Byb2ZpbGVzYXZlZCddID0gJ1Byb2ZpbCBieWwgdWxvxb5lbic7CiRsYW5nWydwcm9maWxlc190YWInXSA9ICdQcm9maWx5JzsKJGxhbmdbJ2FkdmFuY2VkX2JhY2tlbmRfdG9vbGJhcnMnXSA9ICdOYXN0YXZlbiZpYWN1dGU7IHBva3JvxI1pbCZlYWN1dGU7aG8gcHJvZmlsdSB2IGFkbWluaXN0cmFjaSc7CiRsYW5nWydzYXZlc3R5bGVzJ10gPSAnVWxvxb5pdCBzdHlseSc7CiRsYW5nWydhbGxvd2FkdmFuY2VkcHJvZmlsZSddID0gJ1Bvdm9saXQgcG91xb4maWFjdXRlO3YmYWFjdXRlO24maWFjdXRlOyBwb2tyb8SNaWwmZWFjdXRlO2hvIHByb2ZpbHUgdiBUaW55TUNFJzsKJGxhbmdbJ3Nob3dmaWxlbWFuYWdlbWVudCddID0gJ1Bvdm9saXQgdm9sYnkgcHJvIHByJmFhY3V0ZTtjaSBzZSBzb3Vib3J5JzsKJGxhbmdbJ3Nob3dmaWxlbWFuYWdlbWVudGhlbHAnXSA9ICdab2JyYXomaWFjdXRlOyB2b2xieSBhIG4mYWFjdXRlO3N0cm9qZSBwcm8gcHImYWFjdXRlO2NpIHNlIHNvdWJvcnkgamFrbyBuYXDFmS4gdXBsb2FkLCB2eXR2JmFhY3V0ZTvFmWVuJmlhY3V0ZTsgYWRyZXMmYWFjdXRlO8WZxa8gYSBtYXomYWFjdXRlO24maWFjdXRlOyBzb3Vib3LFrywgcG9rdWQgbSZhYWN1dGU7IGsgdG9tdSB1xb5pdmF0ZWwgcG90xZllYm4mYWFjdXRlOyBwciZhYWN1dGU7dmEuJzsKJGxhbmdbJ2RlbGV0ZWNvbmZpcm1hdGlvbiddID0gJ09wcmF2ZHUgc2kgcMWZZWpldGUgdGVudG8gc291Ym9yIHNtYXphdD8nOwokbGFuZ1snZGVsZXRlZmlsZXN1Y2Nlc3MnXSA9ICdieWwgJnVhY3V0ZTtzcMSbJnNjYXJvbjtuxJsgdnltYXomYWFjdXRlO24nOwokbGFuZ1snZGVsZXRlZmlsZWZpbGEnXSA9ICduZW3Fr8W+ZSBiJnlhY3V0ZTt0IHZ5bWF6JmFhY3V0ZTtuJzsKJGxhbmdbJ2Nhbm5vdHJlYWRjb25maWcnXSA9ICdOZWx6ZSDEjSZpYWN1dGU7c3Qgc291Ym9yIHRpbnljb25maWcucGhwIHDFmSZpYWN1dGU7bW8sIHByb3RvIG5lYnVkZSBUaW55TUNFIHByYXZkxJtwb2RvYm7EmyBwcmFjb3ZhdC4gWmtvbnRyb2x1anRlIG9wciZhYWN1dGU7dm7Em24maWFjdXRlOyBzb3Vib3J1IGEgamVobyByb2RpxI1vdnNrJmVhY3V0ZTtobyBhZHJlcyZhYWN1dGU7xZllLCBrdGVyJmVhY3V0ZTsgbWFqJmlhY3V0ZTsgYiZ5YWN1dGU7dCDEjWl0ZWxuJmVhY3V0ZTsgdiZzY2Fyb247ZW1pIGEgemFwaXNvdmF0ZWxuJmVhY3V0ZTsgcG91emUgdmxhc3RuJmlhY3V0ZTtrZW0uJzsKJGxhbmdbJ2ZpbGVuYW1lb25seSddID0gJ1VrJmFhY3V0ZTt6YXQgam0mZWFjdXRlO25hIHNvdWJvcsWvJzsKJGxhbmdbJ3RodW1ibmFpbHNvbmx5J10gPSAnVWsmYWFjdXRlO3phdCBuJmFhY3V0ZTtobGVkeSc7CiRsYW5nWydzaG93dGh1bWJuYWlsZmlsZXN0ZXh0J10gPSAnWm9icmF6aXQgc291Ym9yeSBuJmFhY3V0ZTtobGVkxa8gdiBzZXpuYW11JzsKJGxhbmdbJ2ZpbGVuYW1lYW5kdGh1bWJuYWlscyddID0gJ1pvYnJheml0IGptJmVhY3V0ZTtuYSBzb3Vib3LFryBpIG4mYWFjdXRlO2hsZWR5JzsKJGxhbmdbJ3NraW5zdGV4dCddID0gJ1NraW4gJzsKJGxhbmdbJ3NraW52YXJpYXRpb250ZXh0J10gPSAnVmFyaWFjZSBza2ludSc7CiRsYW5nWydhZHZhbmNlZHdhcm5pbmcnXSA9ICc8c3Ryb25nPlByb3MmaWFjdXRlO20gdmVtdGUgbmEgdsSbZG9tJmlhY3V0ZTssIMW+ZSB6bcSbbmEgdMSbY2h0byBuYXN0YXZlbiZpYWN1dGU7IG3Fr8W+ZSB6cMWvc29iaXQgbmVmdW5rxI1ub3N0IGVkaXRvcnUgVGlueU1DRS4gVXByYXZ1anRlIGplIHBvdXplIHRlaGR5IHpuJmFhY3V0ZTt0ZS1saSBqZWppY2ggJnVhY3V0ZTvEjWlua3kuIERva3VtZW50YWNlIGplIGsgZGlzcG96aWNpIG5hIHN0ciZhYWN1dGU7bmsmYWFjdXRlO2NoIFRpbnlNQ0UuPC9zdHJvbmc+JzsKJGxhbmdbJ2VudGl0eWVuY29kaW5nX3RleHQnXSA9ICdLJm9hY3V0ZTtkb3YmYWFjdXRlO24maWFjdXRlOyBlbnRpdCc7CiRsYW5nWydyYXdlbmNvZGluZyddID0gJ1JhdyBlbmsmb2FjdXRlO2RvdiZhYWN1dGU7biZpYWN1dGU7IChyeWNobGVqJnNjYXJvbjsmaWFjdXRlOywgdmUgdsSbdCZzY2Fyb247aW7EmyBwxZkmaWFjdXRlO3BhZMWvIGZ1bmd1amUpJzsKJGxhbmdbJ25hbWVkZW5jb2RpbmcnXSA9ICdKbWVubiZlYWN1dGU7IGVuayZvYWN1dGU7ZG92JmFhY3V0ZTtuJmlhY3V0ZTsgKGpha28gJm5ic3A7KSc7CiRsYW5nWydudW1lcmljZW5jb2RpbmcnXSA9ICdOdW1lcmljayZlYWN1dGU7IGVuayZvYWN1dGU7ZG92JmFhY3V0ZTtuJmlhY3V0ZTsgKGpha28gJmFtcDsjMTYwOyknOwokbGFuZ1snc2hvd19wYXRoX3RleHQnXSA9ICdab2JyYXpvdmF0IGNlc3R1IGsgZWxlbWVudHUgbmEgc3BvZG4maWFjdXRlOyBzdHJhbsSbIGVkaXRvcnUuJzsKJGxhbmdbJ3Rvb2xiYXJfdGFiJ10gPSAnTiZhYWN1dGU7c3Ryb2pvdiZhYWN1dGU7IGxpJnNjYXJvbjt0YSc7CiRsYW5nWyd0b29sYmFyX2hlbHAnXSA9ICdUeXRvIHZvbGJ5IGJ5IG3Em2x5IG9ic2Fob3ZhdCBzZXpuYW0gam1lbiB0bGHEjSZpYWN1dGU7dGVrL292bGFkYcSNxa8gcHJvIHZsb8W+ZW4maWFjdXRlOyBkbyBuJmFhY3V0ZTtzdHJvam92JmVhY3V0ZTsgbGkmc2Nhcm9uO3R5Lic7CiRsYW5nWyd0b29sYmFyX3RleHQnXSA9ICdOJmFhY3V0ZTtzdHJvam92JmFhY3V0ZTsgbGkmc2Nhcm9uO3RhJzsKJGxhbmdbJ3Rvb2xiYXJoZWxwdGV4dCddID0gJ0tsaWtudXQmaWFjdXRlO20gemRlIHpvYnJheiZpYWN1dGU7dGUgaW5zdHJ1a2NlIHBybyBuYXN0YXZlbiZpYWN1dGU7IHRvb2xiYXJ1IHYgVGlueU1DRSB3aWtpLic7CiRsYW5nWydlZGl0b3Jfd2lkdGhfdGV4dCddID0gJyZTY2Fyb247JmlhY3V0ZTvFmWthIHBvbGUgcyBlZGl0b3JlbSc7CiRsYW5nWydlZGl0b3JfaGVpZ2h0X3RleHQnXSA9ICdWJnlhY3V0ZTsmc2Nhcm9uO2thIHBvbGUgcyBlZGl0b3JlbSc7CiRsYW5nWydhdXRvJ10gPSAnQXV0b21hdGlja3knOwokbGFuZ1snb3InXSA9ICduZWJvJzsKJGxhbmdbJ2RhdGV0aW1lZm9ybWF0X3RleHQnXSA9ICdGb3JtJmFhY3V0ZTt0IGRhdGEgYSDEjWFzdSc7CiRsYW5nWyd0aW1ldGV4dCddID0gJ8SMYXMnOwokbGFuZ1snZGF0ZXRleHQnXSA9ICdEYXR1bSc7CiRsYW5nWydkYXRldGltZWZvcm1hdF9oZWxwJ10gPSAnS2xpa27Em3RlIHNlbSBwcm8gbiZhYWN1dGU7cG92xJtkdSwgamFrIG5hc3Rhdml0IGRhdHVtIGEgxI1hcy4nOwokbGFuZ1snZXh0cmFjb25maWd0ZXh0J10gPSAnU3BlY2kmYWFjdXRlO2xuJmlhY3V0ZTsga29uZmlndXJhY2UnOwokbGFuZ1snZXh0cmFjb25maWdoZWxwJ10gPSAnWmtvbnRyb2x1anRlIFRpbnlNQ0Utd2lraSBwcm8gaW5zdHJ1a2NlJzsKJGxhbmdbJ2N1c3RvbWRyb3Bkb3dudGV4dCddID0gJ1ZsYXN0biZpYWN1dGU7IG1lbnUnOwokbGFuZ1snY3VzdG9tZHJvcGRvd25oZWxwJ10gPSAnVmtsJmFhY3V0ZTtkJmFhY3V0ZTsgdXByYXZpdGVsbiZlYWN1dGU7IGtvdXNreSBrJm9hY3V0ZTtkdS90ZXh0dSB2JnlhY3V0ZTtixJtyZW0gdiBkcm9wZG93biBtZW51LiAKWsWZZWptJmVhY3V0ZTsgcG91xb5pdCZpYWN1dGU7IGplIHBybyBqZWRub2R1Y2gmeWFjdXRlOyBwxZkmaWFjdXRlO3N0dXAgayB0YWfFr20gYXRkLiBNZW51IGplIHZsb8W+ZW5vIGRvIG4mYWFjdXRlO3N0cm9qb3YmZWFjdXRlOyBsaSZzY2Fyb247dHkgcMWZZXMgJiMwMzk7Y3VzdG9tZHJvcGRvd24mIzAzOTsuJzsKJGxhbmdbJ3N0YXJ0ZW5hYmxlZHRleHQnXSA9ICdTdGFydCBwb3ZvbGVuJzsKJGxhbmdbJ3N0YXJ0ZW5hYmxlZGhlbHAnXSA9ICdPZCZzY2Fyb247a3J0bnV0JmlhY3V0ZTsgdCZlYWN1dGU7dG8gdm9sYnkgc3B1c3QmaWFjdXRlOyBUaW55IGVkaXRvciB2IHphayZhYWN1dGU7emFuJmVhY3V0ZTttIHN0YXZ1LiBQb3XFviZpYWN1dGU7diZhYWN1dGU7IHNlIHNwb2xlxI1uxJsgcyBwxZllcCZpYWN1dGU7bmFjJmlhY3V0ZTttIHRsYcSNJmlhY3V0ZTt0a2VtLic7CiRsYW5nWydsb2FkY21zbGlua2VydGV4dCddID0gJ05haHImYWFjdXRlO3QgQ01TLWxpbmtlcic7CiRsYW5nWydsb2FkY21zbGlua2VyaGVscCddID0gJ0dlbmVydWplIGphdmFzY3JpcHQgayZvYWN1dGU7ZCBwb3TFmWVibiZ5YWN1dGU7IHBybyBwb3ZvbGVuJmlhY3V0ZTsgdmxvxb5lbiZpYWN1dGU7ICYjMDM5O2Ntc2xpbmtlciYjMDM5OyBkbyBuJmFhY3V0ZTtzdHJvam92JmVhY3V0ZTsgbGkmc2Nhcm9uO3R5Lic7CiRsYW5nWydjbXNsaW5rZXJzdHlsZXRleHQnXSA9ICdDTVMtbGlua2VyIHN0eWwgb2RrYXp1JzsKJGxhbmdbJ2Ntc3NlbGZsaW5rc3R5bGUnXSA9ICd7Y21zX3NlbGZsaW5rfS1zdHlsZSAnOwokbGFuZ1snYWhyZWZzdHlsZSddID0gJyZhbXA7bHQ7YSBocmVmJmFtcDtndDstc3R5bGUnOwokbGFuZ1sncmVsYXRpdmV1cmxzdGV4dCddID0gJ0dlbmVydWplIHJla3Vyeml2biZpYWN1dGU7IHJlbGF0aXZuJmlhY3V0ZTsgb2RrYXp5JzsKJGxhbmdbJ2ZvcmNlY2xlYW5wYXN0ZXRleHQnXSA9ICdWeW51dCZpYWN1dGU7IHZ5xI1pJnNjYXJvbjt0xJtuJmlhY3V0ZTsgcMWZaSB2bG/FvmVuJmlhY3V0ZTsnOwokbGFuZ1snZm9yY2VjbGVhbnBhc3RlaGVscCddID0gJ1RvdG8gbSZhYWN1dGU7IGImeWFjdXRlO3QgcG92b2xlbm8gcHJvIG9kc3RyYW7Em24maWFjdXRlOyBocm96biZlYWN1dGU7aG8gZm9ybSZhYWN1dGU7dG92JmFhY3V0ZTtuJmlhY3V0ZTsgcMWZaSB2a2wmYWFjdXRlO2QmYWFjdXRlO24maWFjdXRlOyB6IFdvcmR1IGF0ZC4nOwokbGFuZ1snYm9keWNzc190ZXh0J10gPSAnQ1NTIHRhZ3UgYm9keSc7CiRsYW5nWydib2R5Y3NzX2hlbHAnXSA9ICdCdWRlIHZsb8W+ZW5vIGRvIGNzcyBkZWZpbmljZSB0YWd1IGJvZHkuIE4mYWFjdXRlO3BvdsSbZGE6IFBybyBuYXN0YXZlbiZpYWN1dGU7IGImaWFjdXRlO2wmZWFjdXRlO2hvIHBvemFkJmlhY3V0ZTsgdmxvxb50ZSAmcXVvdDtiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyZxdW90Oyc7CiRsYW5nWydpbmNsdWRlb25seXNjcmVlbmNzc190ZXh0J10gPSAnVmxvxb5pdCBwb3V6ZSBzY3JlZW4gQ1NTJzsKJGxhbmdbJ2luY2x1ZGVvbmx5c2NyZWVuY3NzX2hlbHAnXSA9ICdWJnlhY3V0ZTtixJtyZW0gdCZlYWN1dGU7dG8gdm9sYnkgcG92b2wmaWFjdXRlO3RlIHDFmWlwb2plbiZpYWN1dGU7IHBvdXplIHN0eWx1IHMgbWVkaWF0eXBlbSBzY3JlZW4gZG8gb3ZsYWRhxI1lIHN0eWzFryBUaW55TUNFLic7CiRsYW5nWyd1c2VzdGF0aWNjb25maWd0ZXh0J10gPSAnUG91xb4maWFjdXRlO3Qgc3RhdGljayZ5YWN1dGU7IGtvbmZpZ3VyYcSNbiZpYWN1dGU7IHNvdWJvcic7CiRsYW5nWyd1c2VzdGF0aWNjb25maWdoZWxwJ10gPSAnVG90byBtxa/FvmUgcG9tb2NpIHRpbnkgcHJhY292YXQgbmEgc3lzdCZlYWN1dGU7bWVjaCBrZGUgaG9zdGluZyB2a2wmYWFjdXRlO2QmYWFjdXRlOyByZWtsYW1uJmlhY3V0ZTsgdsSbY2ksIGpha28gbmFwxZkuIHN0YXRpc3Rpa3kgYXRkLiBkbyB2JnNjYXJvbjtlaG8gdiZ5YWN1dGU7c3R1cHUsIHBvJnNjYXJvbjtrb3p1aiZpYWN1dGU7YyZpYWN1dGU7IGR5bmFtaWNreSB2eXR2JmFhY3V0ZTvFmWVuJnlhY3V0ZTsgamF2YXNjcmlwdCBrb25maWd1cmHEjW4maWFjdXRlOyBzb3Vib3InOwokbGFuZ1sndXNlc3RhdGljY29uZmlnd2FybmluZyddID0gJ1Zhcm92JmFhY3V0ZTtuJmlhY3V0ZTshIE0mYWFjdXRlO3RlIHBvdm9sZW4meWFjdXRlOyBzdGF0aWNrJnlhY3V0ZTsga29uZmlndXJhxI1uJmlhY3V0ZTsgc291Ym9yLCBhbGUgViZhYWN1dGU7JnNjYXJvbjsgYWRyZXMmYWFjdXRlO8WZIC90bXAvIG5lbiZpYWN1dGU7IHphcGlzb3ZhdGVsbiZ5YWN1dGU7LiBUb3RvIHphayZhYWN1dGU7emUgbW9kdWx1IHVrbCZhYWN1dGU7ZGF0IHN0YXRpY2smeWFjdXRlOyBrb25maWd1cmHEjW4maWFjdXRlOyBzb3Vib3IgYSBwcmF2ZMSbcG9kb2JuxJsgem5lZnVua8SNbiZpYWN1dGU7IFRpbnlNQ0UuJzsKJGxhbmdbJ3Nob3d0b2dnbGVidXR0b25fdGV4dCddID0gJ1pvYnJheml0IGNoZWNrYm94IHBybyB2eXBudXQmaWFjdXRlOy96YXBudXQmaWFjdXRlOyBXWVNJV1lHIGVkaXRvcnUnOwokbGFuZ1sndG9nZ2xld3lzaXd5ZyddID0gJ1phcG5vdXQvdnlwbm91dCBXWVNJV1lHJzsKJGxhbmdbJ3N0eWxlc190YWInXSA9ICdDU1MgU3R5bHknOwokbGFuZ1snc3R5bGVzX2hlbHAnXSA9ICdQb2t1ZCB0b3RvIHBvbGUgbmVjaCZhYWN1dGU7dGUgcHImYWFjdXRlO3pkbiZlYWN1dGU7LCBUaW55TUNFIHpwcmFjdWplIFZhJnNjYXJvbjtlIENTUyBzb3Vib3J5IGEgbmFiJmlhY3V0ZTtkbmUgc3R5bHkgdcW+aXZhdGVsaS4gUG9rdWQgY2hjZXRlIHXFvml2YXRlbGkgbmFiJmlhY3V0ZTtkbm91dCBqZW4gbsSba3RlciZlYWN1dGU7IHN0eWx5LCBzcGVjaWZpa3VqdGUgamUgZm9ybW91IFwmcXVvdDtTdHlsZSAxPXN0eWxlMTsgU3R5bGUgMj1zdHlsZTJcJnF1b3Q7IHYgcHJ2biZpYWN1dGU7bSBuJmFhY3V0ZTtzbGVkdWomaWFjdXRlO2MmaWFjdXRlO20gcG9saS4gVmUgemImeWFjdXRlO3ZhaiZpYWN1dGU7YyZpYWN1dGU7Y2ggcG9sJmlhY3V0ZTtjaCBsemUgc3BlY2lmaWtvdmF0IENTUyBzdHlseSBwcm8gdGFidWxreSwgxZkmYWFjdXRlO2RreSBhbmQgYnXFiGt5LCBrdGVyJmVhY3V0ZTsganNvdSBwb3XFvml0eSB2IHNvdXZpc2VqJmlhY3V0ZTtjJmlhY3V0ZTtjaCBkaWFsb3omaWFjdXRlO2NoLiBQcm8gcHImYWFjdXRlO3pkbiZhYWN1dGU7IHBvbGUgYnVkb3UgcG91xb5pdHkgcGFyYW1ldHJ5IHogaGxhdm4maWFjdXRlO2NoIHN0eWzFry4nOwokbGFuZ1snY3NzX3N0eWxlc190ZXh0J10gPSAnSGxhdm4maWFjdXRlOyc7CiRsYW5nWydhY2Nlc3NkZW5pZWQnXSA9ICdQxZkmaWFjdXRlO3N0dXAgemFrJmFhY3V0ZTt6JmFhY3V0ZTtuLiBaa29udHJvbHVqdGUgcHJvcyZpYWN1dGU7bSBzdm9qZSBvcHImYWFjdXRlO3ZuxJtuJmlhY3V0ZTsuJzsKJGxhbmdbJ2Vycm9yJ10gPSAnQ2h5YmEhJzsKJGxhbmdbJ3N1Ym1pdCddID0gJ09kZXNsYXQnOwokbGFuZ1sndXBkYXRlJ10gPSAnQWt0dWFsaXpvdmF0JzsKJGxhbmdbJ3NhdmVzZXR0aW5ncyddID0gJ1Vsb8W+aXQgbmFzdGF2ZW4maWFjdXRlOyc7CiRsYW5nWydzZXR0aW5ncyddID0gJ05hc3RhdmVuJmlhY3V0ZTsnOwokbGFuZ1snc2V0dGluZ3NzYXZlZCddID0gJ1ptxJtueSBieWx5IHVsb8W+ZW55JzsKJGxhbmdbJ3NhdmVhZHZhbmNlZCddID0gJ1Vsb8W+aXQgcG9rcm/EjSZpYWN1dGU7bCZlYWN1dGU7IG5hc3RhdmVuJmlhY3V0ZTsnOwokbGFuZ1snYWR2YW5jZWRzYXZlZCddID0gJ1Bva3JvxI1pbCZhYWN1dGU7IG5hc3RhdmVuJmlhY3V0ZTsgdWxvxb5lbmEnOwokbGFuZ1sndG9vbGJhcnNhdmVkJ10gPSAnTiZhYWN1dGU7c3Ryb2pvdiZhYWN1dGU7IGxpJnNjYXJvbjt0YSBieWxhIHVsb8W+ZW5hJzsKJGxhbmdbJ3N0eWxlc3NhdmVkJ10gPSAnU3R5bHkgYnlseSB1bG/FvmVueSc7CiRsYW5nWyd0ZXN0YXJlYXRleHQnXSA9ICc8cD5aa3Umc2Nhcm9uO2VibiZpYWN1dGU7IG9ibGFzdCwgbmljIG5lYnVkZSBuYXJ1JnNjYXJvbjtlbm8gem3Em25hbWkgdiBuJmlhY3V0ZTsuLi48L3A+JzsKJGxhbmdbJ3Jlc2V0J10gPSAnUmVzZXQgbmEgdiZ5YWN1dGU7Y2hveiZpYWN1dGU7JzsKJGxhbmdbJ3Jlc2V0YWxsJ10gPSAnUmVzZXRvdmF0IHYmc2Nhcm9uO2VjaG5hIG5hc3RhdmVuJmlhY3V0ZTsgbmEgdiZ5YWN1dGU7Y2hveiZpYWN1dGU7JzsKJGxhbmdbJ2NvbmZpcm1yZXNldCddID0gJ09wcmF2ZHUgY2hjZXRlIHJlc2V0b3ZhdCB0eXRvIG5hc3RhdmVuJmlhY3V0ZTsgbmEgdiZ5YWN1dGU7Y2hveiZpYWN1dGU7IGhvZG5vdHk/JzsKJGxhbmdbJ2NvbmZpcm1yZXNldGFsbCddID0gJ09wcmF2ZHUgY2hjZXRlIHJlc2V0b3ZhdCBWJlNjYXJvbjtFQ0hOQSBuYXN0YXZlbiZpYWN1dGU7IG5hIHYmeWFjdXRlO2Nob3omaWFjdXRlOyBob2Rub3R5Pyc7CiRsYW5nWydzZXR0aW5nc3Jlc2V0J10gPSAnVGF0byBuYXN0YXZlbiZpYWN1dGU7IGJ5bGEgJnVhY3V0ZTtzcMSbJnNjYXJvbjtuxJsgcmVzZXRvdiZhYWN1dGU7bmEgbmEgdiZ5YWN1dGU7Y2hveiZpYWN1dGU7IGhvZG5vdHknOwokbGFuZ1snYWxsc2V0dGluZ3NyZXNldCddID0gJ1Ymc2Nhcm9uO2VjaG5hIG5hc3RhdmVuJmlhY3V0ZTsgYnlsYSAmdWFjdXRlO3NwxJsmc2Nhcm9uO27EmyByZXNldG92JmFhY3V0ZTtuYSBuYSB2JnlhY3V0ZTtjaG96JmlhY3V0ZTsgaG9kbm90eSc7CiRsYW5nWyd1cGdyYWRlZCddID0gJ2J5bCBha3R1YWxpem92JmFhY3V0ZTtuIG5hIHZlcnppICVzJzsKJGxhbmdbJ2N1c3RvbWRyb3Bkb3duJ10gPSAnVmxhc3RuJmlhY3V0ZTsgZHJvcGRvd24gbWVudSc7CiRsYW5nWydjbXNtc2xpbmtlciddID0gJ1Zsb8W+aXQgb2RrYXogbmEgc3RyJmFhY3V0ZTtua3UgY21zbXMnOwokbGFuZ1snYmFja2VuZF90b29sYmFycyddID0gJ0JhY2tlbmQgbmFzdGF2ZW4maWFjdXRlOyBuJmFhY3V0ZTtzdHJvam92JmVhY3V0ZTsgbGkmc2Nhcm9uO3R5JzsKJGxhbmdbJ2Zyb250ZW5kX3Rvb2xiYXJzJ10gPSAnRnJvbnRlbmQgbmFzdGF2ZW4maWFjdXRlOyBuJmFhY3V0ZTtzdHJvam92JmVhY3V0ZTsgbGkmc2Nhcm9uO3R5JzsKJGxhbmdbJ3BsdWdpbnNfdGFiJ10gPSAnUGx1Z2lueSc7CiRsYW5nWydwbHVnaW5zX2hlbHAnXSA9ICdWeWJlcnRlIHBsdWdpbiwga3RlciZ5YWN1dGU7IGNoY2V0ZSBha3Rpdm92YXQuIERvY3VtZW50YWNpIGx6ZSBuYWomaWFjdXRlO3QgPGEgaHJlZj0iJXMiIHRhcmdldD0iX2JsYW5rIj56ZGU8L2E+JzsKJGxhbmdbJ3BsdWdpbnNfdGV4dCddID0gJ1BsdWdpbnknOwokbGFuZ1snc2F2ZXBsdWdpbnMnXSA9ICdVbG/Fvml0IHBsdWdpbnknOwokbGFuZ1sncGx1Z2luc3NhdmVkJ10gPSAnUGx1Z2lueSB1bG/FvmVueSc7CiRsYW5nWyd5b3VhcmVpbnRleHQnXSA9ICdKc3RlIG5hJzsKJGxhbmdbJ2xvYWRzdHlsZXNoZWV0dGV4dCddID0gJ05haHImYWFjdXRlO3Qgc3R5bCBvYnNhaHUgKGRvcG9ydcSNZW5vKSc7CiRsYW5nWydleHRyYXN0eWxlc3RleHQnXSA9ICdQxZkmaWFjdXRlO2Rhdmt5IGRvIHN0eWx1JzsKJGxhbmdbJ2V4dHJhc3R5bGVzaGVscCddID0gJ0NTUyB2bG/FvmVuJnlhY3V0ZTsgemRlIGJ1ZGUgdmxvxb5lbiBkbyBzdHlsdSwga3RlciZ5YWN1dGU7IMSNdGUgVGlueU1DRSBwbyBvYmRyxb5lbiZpYWN1dGU7IENNU21zIHN0eWx1JzsKJGxhbmdbJ3VwbG9hZG5ld2ZpbGUnXSA9ICdOb3YmeWFjdXRlOyBzb3Vib3InOwokbGFuZ1sndXBsb2FkZmlsZSddID0gJ05haHImYWFjdXRlO3QnOwokbGFuZ1snY3JlYXRlbmV3ZGlyJ10gPSAnTm92JnlhY3V0ZTsgYWRyZXMmYWFjdXRlO8WZJzsKJGxhbmdbJ2NyZWF0ZWRpciddID0gJ1Z5dHZvxZlpdCc7CiRsYW5nWydub2Rpcm5hbWUnXSA9ICdKbSZlYWN1dGU7bm8gYWRyZXMmYWFjdXRlO8WZZSBuZWRvZCZhYWN1dGU7bm8nOwokbGFuZ1snZGlyZXhpc3RzJ10gPSAnSm0mZWFjdXRlO25vIGFkcmVzJmFhY3V0ZTvFmWUgamnFviBleGlzdHVqZSc7CiRsYW5nWyduZXdkaXJjcmVhdGVkJ10gPSAnTm92JnlhY3V0ZTsgYWRyZXMmYWFjdXRlO8WZICZ1YWN1dGU7c3DEmyZzY2Fyb247bsSbIHZ5dHZvxZllbic7CiRsYW5nWyduZXdkaXJmYWlsZWQnXSA9ICdQxZlpIHZ5dHYmYWFjdXRlO8WZZW4maWFjdXRlOyBhZHJlcyZhYWN1dGU7xZllIHNlIHZ5c2t5dGxhIGNoeWJhJzsKJGxhbmdbJ25vZmlsZSddID0gJ05lYnlsIG5haHImYWFjdXRlO24gxb4mYWFjdXRlO2RuJnlhY3V0ZTsgc291Ym9yJzsKJGxhbmdbJ2ZpbGV0b29iaWcnXSA9ICduYWhyJmFhY3V0ZTt2YW4meWFjdXRlOyBzb3Vib3IgamUgbW9jIHZlbGsmeWFjdXRlOyc7CiRsYW5nWyd1cGxvYWRmYWlsZWQnXSA9ICdDaHliYSBwxZlpIHDFmWVzdW51IG5haHJhbiZlYWN1dGU7aG8gc291Ym9ydSBuYSBtJmlhY3V0ZTtzdG8nOwokbGFuZ1snZmlsZXVwbG9hZGVkJ10gPSAnU291Ym9yIG5haHImYWFjdXRlO24gJnVhY3V0ZTtzcMSbJnNjYXJvbjtuxJsnOwokbGFuZ1snZmlsZXBpY2tlcnRpdGxlJ10gPSAnQ01TTWFkZVNpbXBsZSB2JnlhY3V0ZTtixJtyIHNvdWJvcsWvJzsKJGxhbmdbJ3N1Y2Nlc3MnXSA9ICcmVWFjdXRlO3NwxJtjaCc7CiRsYW5nWydmaWxlb3BlcmF0aW9ucyddID0gJ09wZXJhY2Ugc2Ugc291Ym9yeSc7CiRsYW5nWyd0aG91c2FuZGRlbGltaXRlciddID0gJywgJzsKJGxhbmdbJ3NpemUnXSA9ICdWZWxpa29zdCc7CiRsYW5nWydkaW1lbnNpb25zJ10gPSAnSHhXJzsKJGxhbmdbJ2FkdmFuY2VkX3RhYiddID0gJ1Bva3JvxI1pbCZlYWN1dGU7JzsKJGxhbmdbJ2hlbHAnXSA9ICcJPGgzPkNvIGTEm2wmYWFjdXRlOyB0ZW50byBtb2R1bD88L2gzPgoJPHA+VW1vxb5uJmlhY3V0ZTsgcG91xb4maWFjdXRlO3ZhdCBUaW55TUNFIFdZU0lXWUcgZWRpdG9yIHBybyAmdWFjdXRlO3ByYXZ1IG9ic2FodS48L3A+Cgk8aDM+SmFrIHRvIHBvdcW+JmlhY3V0ZTt0PzwvaDM+Cgk8cD5OYWluc3RhbG92YXQsIHBvdCZlYWN1dGU7IGomaWFjdXRlO3QgZG8gVcW+aXZhdGVsc2smeWFjdXRlO2NoIG5hc3RhdmVuJmlhY3V0ZTssIGEgbmFzdGF2aXQgVGlueU1DRSBqYWtvIFYmYWFjdXRlOyZzY2Fyb247IFdZU0lXWUcgZWRpdG9yLjwvcD4KCTxoMz7FmGUmc2Nhcm9uO2VuJmlhY3V0ZTsgcHJvYmwmZWFjdXRlO23FrzwvaDM+CgluxJtrZG8gbcSbbCBwcm9ibCZlYWN1dGU7bXkgcyBuZXpvYnJhem92JmFhY3V0ZTtuJmlhY3V0ZTttIHRpbnkgcG8gaW5zdGFsYWNpIG5lYm8gYWt0dWFsaXphY2kuIFpkZSBqZSBzZXpuYW0gdsSbYyZpYWN1dGU7LCBrdGVyJmVhY3V0ZTsgYnlzdGUgbcSbbGkgemt1c2l0IGTFmSZpYWN1dGU7dmUgbmXFviBtxJsga29udGFrdHVqZXRlIHBybyBwb2Rwb3J1LgoJPGJyLz4KCTx1bD4KCTxsaT4xLiBQcm9zJmlhY3V0ZTttLCBwcm9zJmlhY3V0ZTttLCB6a3VzdGUgem5vdnUgbmFociZhYWN1dGU7dCBhZHJlcyZhYWN1dGU7xZkgbW9kdWxlcy9UaW55TUNFIG5hIFYmYWFjdXRlOyZzY2Fyb247IHNlcnZlcnIuIEJ1ZGV0ZSBwxZlla3ZhcGVuaSwga29saWtyJmFhY3V0ZTt0IHRvIGxpZGVtIHBvbW9obG8uPC9saT4KCTxsaT4yLiBaa3VzdGUgem3Em25pdCBuYSB2b2xidSBzdGF0aWNrJmVhY3V0ZTsga29uZmlndXJhY2UuIFRvdG8gdnnFvmFkdWplLCBhYnkgYnlsIFYmYWFjdXRlOyZzY2Fyb247IGFkcmVzJmFhY3V0ZTvFmSAvdG1wLyB6YXBpc292YXRlbG4meWFjdXRlOyB3ZWJvdiZ5YWN1dGU7bSBzZXJ2ZXJlbTwvbGk+Cgk8bGk+My4gUMWZaSBha3R1YWxpemFjaSB6a3VzdGUgcHJvcyZpYWN1dGU7bSB6cmVzZXRvdmF0IHYmc2Nhcm9uO2VjaG5hIG5hc3RhdmVuJmlhY3V0ZTsuIEplIHRvIG5lbWlsJmVhY3V0ZTsgcG9rdWQgbSZhYWN1dGU7dGUgbW5vaG8gJnVhY3V0ZTtwcmF2LCBhbGUgbW5vaG8gdsSbYyZpYWN1dGU7IHNlIHptxJtuaWxvIHDFmWkgcMWZZWNob2R1IHogMi4zLnggZG8gMi40LnggcyZlYWN1dGU7cmllIG1vZHVsdS4KCTxsaT40LiB6a3VzdGUgcG92b2xpdCBzdGF0aWNrb3Uga29uZmlndXJhY2kgdiByb3omc2Nhcm9uOyZpYWN1dGU7xZllbiZ5YWN1dGU7Y2ggbmFzdGFmZW4maWFjdXRlO2NoLiBUb3RvIGZ1bmd1amUgbCZlYWN1dGU7cGUgbmEgbsSba3RlciZ5YWN1dGU7Y2ggc3lzdCZlYWN1dGU7bWVjaCAobmFwxZkuIENHSS1iYXNlZCkKCTwvdWw+Cgk8YnIvPgonOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My4yNzI4MTc5ODMzNzg3MzI2MDAwLjEyNDc4NDQ3OTkuMTI0OTE0MzA2Mi4xMjQ5MTQ1ODMyLjI0JzsKJGxhbmdbJ3V0bXonXSA9ICcxNTY4NjEzNTMuMTI0OTExODQ3MS4xNy4xNC51dG1jY249KHJlZmVycmFsKXx1dG1jc3I9ZGV2LmNtc21hZGVzaW1wbGUub3JnfHV0bWNjdD0vZmVhdHVyZV9yZXF1ZXN0L2xpc3QvNjA1fHV0bWNtZD1yZWZlcnJhbCc7CiRsYW5nWyd1dG1jJ10gPSAnMTU2ODYxMzUzJzsKJGxhbmdbJ3V0bWInXSA9ICcxNTY4NjEzNTMnOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/da_DK.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1RpbnlNQ0UgV1lTSVdZRyBtb2R1bCc7CiRsYW5nWydhZG1pbmRlc2NyaXB0aW9uJ10gPSAnRGV0dGUgbW9kdWxlIGdpdmVyIGFkZ2FuZyB0aWwgcmVkaWdlcmUgYiZhcmluZztkZSBpbmRob2xkLCBtZW4gb2dzJmFyaW5nOyBhbmRyZSB0eXBlciBkYXRhLCBnZW5uZW0gZGV0IGJydWdlcnZlbmxpZ2UgVGlueU1DRS1zeXN0ZW0uJzsKJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAnTW9kdWxldCBibGV2IGFmaW5zdGFsbGVyZXQnOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kdWwgdmVyc2lvbiAlcyBibGV2IGluc3RhbGxlcmV0JzsKJGxhbmdbJ3N0cmlwYmFja2dyb3VuZHRhZ3MnXSA9ICdGamVybiBCYWdncnVuZHMtVGFncyBmcmEgQ1NTJzsKJGxhbmdbJ3N0aXB0YWdzX2hlbHAnXSA9ICdEZXR0ZSBmb3JzJm9zbGFzaDtnZXIgYXQgZmplcm5lIGJhZ2dydW5kc2luZHN0aWxsaW5nZXIgZnJhIHN0eWxlc2hlZXQmIzAzOTtldC4nOwokbGFuZ1snc291cmNlX2Zvcm1hdHRpbmdfdGV4dCddID0gJ0Zvcm1hdCZlYWN1dGU7ciBIVE1MLWtvZGVuJzsKJGxhbmdbJ2Ryb3Bkb3duYmxvY2tmb3JtYXRzX3RleHQnXSA9ICdCbG9ja2Zvcm1hdGVyaW5nICBpIGRyb3Bkb3duLW1lbnUnOwokbGFuZ1snYWxsb3d0YWJsZXMnXSA9ICdUaWxsYWQgdGFiZWwgZnVua3Rpb25lcic7CiRsYW5nWyduZXdsaW5lc3R5bGVfdGV4dCddID0gJ055IGxpbmllLW1ldG9kZSc7CiRsYW5nWydwc3R5bGUnXSA9ICc8IHAgPiBtZXRvZGUnOwokbGFuZ1snYnJzdHlsZSddID0gJzwgYnIvID4gbWV0b2RlJzsKJGxhbmdbJ3VzZWNvbXByZXNzaW9udGV4dCddID0gJ0Jlbnl0IGd6IGtvbXByZXNzaW9uJzsKJGxhbmdbJ3VzZWNvbXByZXNzaW9uaGVscCddID0gJ0RldHRlIGthbiBnJm9zbGFzaDtyZSBpbmRsJmFlbGlnO3NuaW5nZW4gYWYgVGlueU1DRSBodXJ0aWdlcmUsIG1lbiBvZ3MmYXJpbmc7IGZvcmhpbmRyZSBrb3JyZWt0IGluZGwmYWVsaWc7c25pbmcgcCZhcmluZzsgbm9nbGUgc3lzdGVtZXIuIEJlbnl0IGt1biBodmlzIGR1IHZlZCBodmFkIGR1IGcmb3NsYXNoO3IuJzsKJGxhbmdbJ2ZvcmNlZHJvb3RibG9ja3RleHQnXSA9ICdUdmluZyA8IHAgPi1ncnVuZC1ibG9rJzsKJGxhbmdbJ2ZvcmNlZHJvb3RibG9ja2hlbHAnXSA9ICdUdmluZ2VyIGRldCByZXR1cm5lcmVkZSBpbmRob2xkIHRpbCBpIGRldCBtaW5kc3RlIGFmIHYmYWVsaWc7cmUgb21rcmFuc2V0IGFmIGVuIDwgcCA+LXRhZyc7CiRsYW5nWydmaWxlcGlja2Vyc3R5bGUnXSA9ICdGaWx2JmFlbGlnO2xnZXItc3RpbCc7CiRsYW5nWydmaWxlcGlja2Vyc2l6ZSddID0gJ0ZpbHYmYWVsaWc7bGdlciBzdCZvc2xhc2g7cnJlbHNlJzsKJGxhbmdbJ2FsbG93dXBsb2FkdGV4dCddID0gJ1RpbGxhZCB1cGxvYWQgb2cgbWFwcGUtb3ByZXR0ZWxzZSBpIEZpbHYmYWVsaWc7bGdlcic7CiRsYW5nWydhbGxvd3NjYWxpbmd0ZXh0J10gPSAnVGlsbGFkIG9uLXRoZS1mbHkgc2thbGVyaW5nIGFmIHVwbG9hZCYjMDM5O2VkZSBiaWxsZWRlcic7CiRsYW5nWydzY2FsaW5nZGltZW5zaW9uc3RleHQnXSA9ICdTdGFuZGFyZCBkaW1lbnNpb25lcic7CiRsYW5nWydyZXNpemV0byddID0gJ1NrYWwmZWFjdXRlO3IgdGlsOic7CiRsYW5nWydtYWtldGh1bWJuYWlsJ10gPSAnTGF2IGJpbGxlZGVrc2VtcGVsIG4mYXJpbmc7ciBldCBiaWxsZWRlIHVwbG9hZCYjMDM5O2VzJzsKJGxhbmdbJ3VzZWFkdmFuY2VkcHJvZmlsZSddID0gJ1RpbGxhZCBhdmFuY2VyZXQgVGlueU1DRS1wcm9maWwnOwokbGFuZ1snc2F2ZXByb2ZpbGUnXSA9ICdHZW0gcHJvZmlsJzsKJGxhbmdbJ3Byb2ZpbGVzYXZlZCddID0gJ1Byb2ZpbGVuIGJsZXYgZ2VtdCc7CiRsYW5nWydwcm9maWxlc190YWInXSA9ICdQcm9maWxlcic7CiRsYW5nWydhZHZhbmNlZF9iYWNrZW5kX3Rvb2xiYXJzJ10gPSAnQXZhbmNlcmV0IGJhY2tlbmQgcHJvZmlsIGluZHN0aWxsaW5nZXInOwokbGFuZ1snc2F2ZXN0eWxlcyddID0gJ0dlbSBzdGlsYXJ0ZXInOwokbGFuZ1snYWxsb3dhZHZhbmNlZHByb2ZpbGUnXSA9ICdUaWxsYWQgYnJ1ZyBhZiBkZW4gYXZhbmNlcmVkZSBwcm9maWwgaSBUaW55TUNFJzsKJGxhbmdbJ3Nob3dmaWxlbWFuYWdlbWVudCddID0gJ1ZpcyBmaWxoJmFyaW5nO25kdGVyaW5ncyBtdWxpZ2hlZGVyJzsKJGxhbmdbJ3Nob3dmaWxlbWFuYWdlbWVudGhlbHAnXSA9ICdWaXNlciBmaWxoJmFyaW5nO25kdGVyaW5nIG11bGlnaGVkZXIgcyZhcmluZztzb20gdXBsb2FkLCBta2RpciBvZyBzbGV0bmluZyBhZiBmaWxlciBpIEZpbFYmYWVsaWc7bGdlcmVuJzsKJGxhbmdbJ3Jlc3RyaWN0ZGlycyddID0gJ0JlZ3ImYWVsaWc7bnMgYnJ1Z2VyZXMgbWFwcGUgYWRnYW5nJzsKJGxhbmdbJ3Jlc3RyaWN0ZGlyc2hlbHAnXSA9ICdEZXR0ZSB2aWwgYmVnciZhZWxpZztuc2UgZGUgZmlsaCZhcmluZztuZHRlcmluZ3MgbXVsaWdoZWRlciBlbiBicnVnZXIgaGFyIHRpbCBrdW4gYXQgZCZhZWxpZztra2UgZW4gdW5kZXJtYXBwZSB0aWwgJiMwMzk7dXBsb2FkcyYjMDM5OyBzb20gaGFyIGRldCBzYW1tZSBuYXZuIHNvbSBicnVnZXJlbnMgbG9naW4uIEh2aXMgbWFwcGVuIGlra2UgZWtzaXN0ZXJlciB2aWwgZGVuIGJsaXZlIG9wcmV0dGV0LiBCZW0mYWVsaWc7cmsgYXQgZGV0dGUga3VuIHZpcmtlciBtZWQgc3RhbmRhcmQgbWFwcGVuYXZuZW5lLCB1cGxvYWRzL2ltYWdlcy4gRGV0dGUgJmFlbGlnO25kcmVzIG11bGlndmlzIGkgZnJlbXRpZGVuLic7CiRsYW5nWydkZWxldGVjb25maXJtYXRpb24nXSA9ICdFciBkdSBzaWtrZXIgcCZhcmluZzsgZGVubmUgZmlsIHNrYWwgc2xldHRlcz8nOwokbGFuZ1snZGVsZXRlZmlsZXN1Y2Nlc3MnXSA9ICdibGV2IHNsZXR0ZXQnOwokbGFuZ1snZGVsZXRlZmlsZWZhaWxlZCddID0gJ2t1bm5lIGlra2Ugc2xldHRlcyc7CiRsYW5nWydkZWxldGVzdWJkaXJmYWlsZWQnXSA9ICdrdW5uZSBpa2tlIHNsZXR0ZXMnOwokbGFuZ1snZGVsZXRlc3ViZGlyc3VjY2VzcyddID0gJ2JsZXYgc2xldHRldHMnOwokbGFuZ1snZGVsZXRlZGlyY29uZmlybWF0aW9uJ10gPSAnRXIgZHUgc2lra2VyIHAmYXJpbmc7IGRlbm5lIHRvbW1lIG1hcHBlIHNrYWwgc2xldHRlcz8nOwokbGFuZ1snZGVsZXRlZGlyJ10gPSAnU2xldCB0b20gbWFwcGUnOwokbGFuZ1snZGVsZXRlZmlsZSddID0gJ1NsZXQgZmlsJzsKJGxhbmdbJ2Nhbm5vdHJlYWRjb25maWcnXSA9ICdLYW4gaWtrZSBsJmFlbGlnO3NlIHRpbnljb25maWcucGhwIGRpcmVrdGUsIHMmYXJpbmc7IFRpbnlNQ0UgdmlsIGZvcm1lbnRsaWcgaWtrZSB2aXJrZS4gRHUgc2thbCBrb250cm9sbGVyZSByZXR0aWdoZWRlciBwJmFyaW5nOyBkZW5uZSBmaWwgb2cgbWFwcGVuIGRlbiBsaWdnZXIgaSwgZGlzc2UgYiZvc2xhc2g7ciB0aWxsYWRlIGwmYWVsaWc7c25pbmcsIG1lbiBrdW4gc2tyaXZuaW5nIGZvciBlamVyZW4uJzsKJGxhbmdbJ2ZpbGVuYW1lb25seSddID0gJ1ZpcyBmaWxuYXZuZSc7CiRsYW5nWyd0aHVtYm5haWxzb25seSddID0gJ1ZpcyBiaWxsZWRlZWtzZW1wbGVyJzsKJGxhbmdbJ3Nob3d0aHVtYm5haWxmaWxlc3RleHQnXSA9ICdWaXMgYmlsbGVkZWtzZW1wbGVyIGkgbGlzdGVybmUnOwokbGFuZ1snZmlsZW5hbWVhbmR0aHVtYm5haWxzJ10gPSAnVmlzIGImYXJpbmc7ZGUgZmlsbmF2bmUgb2cgYmlsbGVkZWtzZW1wbGVyJzsKJGxhbmdbJ3NraW5zdGV4dCddID0gJ1Vkc2VlbmRlJzsKJGxhbmdbJ3NraW52YXJpYXRpb250ZXh0J10gPSAnVmFyaWF0aW9uIGFmIHVkc2VlbmRlJzsKJGxhbmdbJ2FkdmFuY2Vkd2FybmluZyddID0gJzxzdHJvbmc+QWR2YXJzZWwhPGJyLz5WZWQgYXQgJmFlbGlnO25kcmUgZGlzc2UgaW5kc3RpbGxpbmdlciByaXNpa2VyZXIgZHUgYXQgIFRpbnlNQ0UgaG9sZGUgb3AgbWVkIGF0IHZpcmtlciBlbGxlciBhdCBkZW4gcmVzdWx0ZXJlbmRlIGtvZGUgaWtrZSBlciBrb3JyZWt0LiBMYXYga3VuICZhZWxpZztuZHJpbmdlciBoZXIgaHZpcyBkdSB2ZWQgaHZhZCBkdSBnJm9zbGFzaDtyLiBPZyBsJmFlbGlnO3MgdmVubGlnc3QgcCZhcmluZzsgVGlueU1DRSYjMDM5O3Mgd2ViIHNpdGUgZiZvc2xhc2g7ciBkdSBsYXZlciAmYWVsaWc7bmRyaW5nZXIuPC9zdHJvbmc+JzsKJGxhbmdbJ2VudGl0eWVuY29kaW5nX3RleHQnXSA9ICdLb2RuaW5nIGFmIHNwZWNpZWxsZSBrYXJha3RlcmVyJzsKJGxhbmdbJ3Jhd2VuY29kaW5nJ10gPSAnUmF3IGtvZG5pbmcgKGh1cnRpZ3RzdCwgdmlya2VyIGkgZGUgZmxlc3RlIHRpbGYmYWVsaWc7bGRlKSc7CiRsYW5nWyduYW1lZGVuY29kaW5nJ10gPSAnTmF2bmdpdmVuIGtvZG5pbmcgKHNvbSAmYW1wOyBuYnNwOyknOwokbGFuZ1snbnVtZXJpY2VuY29kaW5nJ10gPSAnTnVtZXJpc2sga29kbmluZyAoc29tICZhbXA7IzE2MDspJzsKJGxhbmdbJ3Nob3dfcGF0aF90ZXh0J10gPSAnVmlzIHN0aWVuIHRpbCBlbGVtZW50ZXQgaSBidW5kZW4gYWYgZWRpdG9yZW4nOwokbGFuZ1sndG9vbGJhcl90YWInXSA9ICdWJmFlbGlnO3JrdCZvc2xhc2g7anNsaW5pZSc7CiRsYW5nWyd0b29sYmFyX2hlbHAnXSA9ICdEaXNzZSB2YWxnbXVsaWdoZWRlciBza3VsbGUgaW5kZWhvbGRlIGVuIGtvbW1hc2VwYXJlcmV0IGxpc3RlIGFmIGJ1dHRvbi9jb250cm9sIG5hdm5lIHRpbCBhdCBpbmRzJmFlbGlnO3R0ZSBpIHRvb2xiYXJlbi4gRHUga2FuIGJlbnl0dGUgfCB0ZWduZXQgaSBzdGVkZXQgZm9yIG9yZGV0ICYjMDM5O3NlcGVyYXRvciYjMDM5Oyc7CiRsYW5nWyd0b29sYmFyX3RleHQnXSA9ICdWJmFlbGlnO3JrdCZvc2xhc2g7anNsaW5pZSc7CiRsYW5nWyd0b29sYmFyaGVscHRleHQnXSA9ICdLbGlrIGhlciBmb3IgYXQgc2UgdiZhZWxpZztya3Qmb3NsYXNoO2pzbGluaWUtdmVqbGVkbmluZ2VuIGkgVGlueU1DRS13aWtpJiMwMzk7ZW4nOwokbGFuZ1snZWRpdG9yX3dpZHRoX3RleHQnXSA9ICdFZGl0b3IgZmVsdGV0cyBicmVkZGUnOwokbGFuZ1snZWRpdG9yX2hlaWdodF90ZXh0J10gPSAnRWRpdG9yIGZlbHRldHMgaCZvc2xhc2g7amRlJzsKJGxhbmdbJ2F1dG8nXSA9ICdBdXRvbWF0aXNrJzsKJGxhbmdbJ29yJ10gPSAnZWxsZXInOwokbGFuZ1sndGVzdGFyZWFfdGFiJ10gPSAnVGVzdCBvbXImYXJpbmc7ZGUnOwokbGFuZ1snc2hvd3Rlc3RpbmdvdXRwdXQnXSA9ICdWaXMgdGVzdCBvdXRwdXQnOwokbGFuZ1sndGVzdGFyZWFlZGl0b3InXSA9ICdUZXN0IGVkaXRvcic7CiRsYW5nWyd0ZXN0YXJlYW91dHB1dCddID0gJ1Rlc3Qgb21yJmFyaW5nO2RlIG91dHB1dCc7CiRsYW5nWyd0ZXN0YXJlYW91dHB1dHNvdXJjZSddID0gJ1Rlc3Qgb21yJmFyaW5nO2RlIGtpbGRlJzsKJGxhbmdbJ2FsbG93cmVzaXppbmcnXSA9ICdUaWxsYWQgYXQgZWRpdG9yIGZlbHRldHMgc3Qmb3NsYXNoO3JyZWxzZSBrYW4gJmFlbGlnO25kcmVzJzsKJGxhbmdbJ3Jlc2l6ZW5vbmUnXSA9ICdUaWxsYWQgaWtrZSAmYWVsaWc7bmRyaW5nIGFmIHN0Jm9zbGFzaDtycmVsc2VuJzsKJGxhbmdbJ3Jlc2l6ZWJvdGgnXSA9ICdUaWxsYWQgJmFlbGlnO25kcmluZ2VyIGFmIHN0Jm9zbGFzaDtycmVsc2VuIGkgYmVnZ2UgcmV0bmluZ2VyJzsKJGxhbmdbJ3Jlc2l6ZWhlaWdodCddID0gJ1RpbGxhZCBrdW4gJmFlbGlnO25kcmluZyBhZiBoJm9zbGFzaDtqZGVuJzsKJGxhbmdbJ2RhdGV0aW1lZm9ybWF0X3RleHQnXSA9ICdEYXRvL1RpZCBmb3JtYXQnOwokbGFuZ1sndGltZXRleHQnXSA9ICdUaWQnOwokbGFuZ1snZGF0ZXRleHQnXSA9ICdEYXRvJzsKJGxhbmdbJ2RhdGV0aW1lZm9ybWF0X2hlbHAnXSA9ICdLbGlrIGhlciBmb3IgYXQgaHZvcmRhbiBkYXRvL3RpZCBmb3JtYXRlcmVzJzsKJGxhbmdbJ2V4dHJhY29uZmlndGV4dCddID0gJ0Vrc3RyYSBrb25maWd1cmF0aW9uJzsKJGxhbmdbJ2V4dHJhY29uZmlnaGVscDInXSA9ICdFbiBrb21tYW5kbyBwci4gbGluaWUsIGtvbW1hZXIgdmlsIGJsaXZlIHRpbGYmb3NsYXNoO2plIGYmb3NsYXNoO3Igb2cgZWZ0ZXIgZGV0dGUgaW5kaG9sZC4gU2UgIFRpbnlNQ0Utd2lraSYjMDM5O2VuIGZvciBuJmFlbGlnO3JtZXJlIGluc3RydWt0aW9uZXIuJzsKJGxhbmdbJ2N1c3RvbWRyb3Bkb3dudGV4dCddID0gJ0JydWdlcmRlZmluZXJldCBtZW51JzsKJGxhbmdbJ2N1c3RvbWRyb3Bkb3duaGVscCddID0gJ0dpdmVyIG11bGlnaGVkIGZvciBhdCBicnVnZXJkZWZpbmVyZWRlIHN0dW1wZXIga29kZSBrYW4gaW5kcyZhZWxpZzt0dGVzIHZlZCBhdCB2JmFlbGlnO2xnZSBpIGVuIG1lbnUuIE1hbiBrdW5uZSBmb3JzdGlsbGUgc2lnIG5lbSBpbmRzJmFlbGlnO3R0ZWxzZSBhZiB0YWdzIG1tLiBNZW51ZW4gcGxhY2VyZXMgaSB2JmFlbGlnO3JrdCZvc2xhc2g7anNsaW5pZW4gdmVkIGF0IGluZHMmYWVsaWc7dHRlICYjMDM5O2N1c3RvbWRyb3Bkb3duJiMwMzk7Lic7CiRsYW5nWydzdGFydGVuYWJsZWR0ZXh0J10gPSAnU2wmYXJpbmc7ZXQgdGlsIGZyYSBzdGFydGVuJzsKJGxhbmdbJ3N0YXJ0ZW5hYmxlZGhlbHAnXSA9ICdIdmlzIGRldHRlIHNsJmFyaW5nO3MgZnJhIHN0YXJ0ZXMgVGlueS1lZGl0b3JlbmUgc29tIHNsJmFyaW5nO2V0IGZyYS4gRGV0dGUgYiZvc2xhc2g7ciBicnVnZXMgc2FtbWVuIG1lZCBrbmFwcGVuIHRpbCBhdCBzbCZhcmluZzsgZGVtIHRpbCBvZyBmcmEgZHluYW1pc2suJzsKJGxhbmdbJ2xvYWRjbXNsaW5rZXJ0ZXh0J10gPSAnSW5kbCZhZWxpZztzIENNU21zLWxpbmsmIzAzOTtlcmVuJzsKJGxhbmdbJ2xvYWRjbXNsaW5rZXJoZWxwJ10gPSAnRGV0dGUgZ2VuZXJlcmVyIGRlbiBuJm9zbGFzaDtkdmVuZGlnZSBqYXZhc2NyaXB0LWtvZGUgZGVyIHNrYWwgdGlsIGZvciBhdCBnaXZlIG11bGlnaGVkIGZvciBhdCB0aWxmJm9zbGFzaDtqZSAmIzAzOTtjbXNsaW5rZXImIzAzOTsgdGlsIHYmYWVsaWc7cmt0Jm9zbGFzaDtqc2xpbmllbi4nOwokbGFuZ1snY21zbGlua2Vyc3R5bGV0ZXh0J10gPSAnQ01TLWxpbmtlciBsaW5rLXN0aWwnOwokbGFuZ1snY21zc2VsZmxpbmtzdHlsZSddID0gJ3tjbXNfc2VsZmxpbmt9LXN0aWwnOwokbGFuZ1snYWhyZWZzdHlsZSddID0gJzwgYSBocmVmID4tc3RpbCc7CiRsYW5nWydjbXNsaW5rZXJhZGRzdGV4dCddID0gJ0NNUy1saW5rZXIgdGlsZiZvc2xhc2g7amVsc2VyJzsKJGxhbmdbJ2Ntc2xpbmtlcmFkZHNoZWxwJ10gPSAnRGV0dGUgZ2l2ZXIgZGlnIG11bGlnaGVkIGZvciBhdCB0aWxmJm9zbGFzaDtqZSB0aW5nIHRpbCBlbnRlbiA8IGEgaHJlZiA+LXRhZ2dlbiBlbGxlciB7Y21zX3NlbGZsaW5rfSwgbiZhcmluZztyIGRldCBlciBDTVMtbGlua2VyJiMwMzk7ZW4gZGVyIGxhdmVyIGxpbmtldC4nOwokbGFuZ1snYXZvaWRsaW5rY29udmVyc2lvbnRleHQnXSA9ICdVbmRnJmFyaW5nO3IgbGluayBrb252ZXJ0ZXJpbmcnOwokbGFuZ1snYXZvaWRsaW5rY29udmVyc2lvbmhlbHAnXSA9ICdEZXR0ZSBzbCZhcmluZztyIFRpbnlNQ0UmIzAzOTtzIGluZGJ5Z2dlZGUgbGluayBrb252ZXJ0ZXJpbmcgZnJhLiBEZXR0ZSBnJm9zbGFzaDtyIGJsYS4gYnJ1Z2VuIGFmIHtzbWFydHl9LXRhZ3MgaSB1cmwmIzAzOTtlciBtdWxpZ3QuJzsKJGxhbmdbJ3JlbGF0aXZldXJsc3RleHQnXSA9ICdMYXYgcmVsYXRpdmUtc3RpZXInOwokbGFuZ1snZm9yY2VjbGVhbnBhc3RldGV4dCddID0gJ1R2aW5nIHJlbnNuaW5nIHZlZCBpbmRzJmFlbGlnO3RuaW5nJzsKJGxhbmdbJ2ZvcmNlY2xlYW5wYXN0ZWhlbHAnXSA9ICdEZXR0ZSBza2FsIHYmYWVsaWc7cmUgc2wmYXJpbmc7ZXQgdGlsIGZvciBhdCBpbmRzYXQgaW5kaG9sZCByZW5zZXMgZm9yIHMmYWVsaWc7cmUga29kZSBmcmEgZi5la3MuIFdvcmQnOwokbGFuZ1snYm9keWNzc190ZXh0J10gPSAnQm9keSB0YWcgQ1NTJzsKJGxhbmdbJ2JvZHljc3NfaGVscCddID0gJ0xhZCBzdCZhcmluZzsgdG9tIGVsbGVyIHMmYWVsaWc7dCB0aWwgZGVmYXVsdCBmb3IgYXQgYnJ1Z2UgUEFHRSBDU1MuIE5vdGU6IEJhZ2dydW5kc2ZhcnZlbiBzJmFlbGlnO3R0ZXMgdGlsIGh2aWQsIHZlZCBhdCBpbmRzJmFlbGlnO3R0ZSBmJm9zbGFzaDtsZ2VuZGU6IGJhY2tncm91bmQtY29sb3I6IHdoaXRlOyc7CiRsYW5nWydpbmNsdWRlb25seXNjcmVlbmNzc190ZXh0J10gPSAnSW5rbHVkJmVhY3V0ZTtyIGt1biBzayZhZWxpZztybS1DU1MnOwokbGFuZ1snaW5jbHVkZW9ubHlzY3JlZW5jc3NfaGVscCddID0gJ0h2aXMgZGV0dGUgZXIgc2wmYXJpbmc7ZXQgdGlsIGlua2x1ZGVyZXMga3VuIHN0eWxlc2hlZXRzIGZvcmJ1bmRldCBtZWQgc2smYWVsaWc7cm0tbWVkaWV0eXBlbiBpIGRlIHN0eWxlcyBzb20gVGlueU1DRSBoJmFyaW5nO25kdGVyZXIuJzsKJGxhbmdbJ3VzZXN0YXRpY2NvbmZpZ3RleHQnXSA9ICdCZW55dCBzdGF0aXNrIGtvbmZpZ3VyYXRpb24nOwokbGFuZ1sndXNlc3RhdGljY29uZmlnaGVscCddID0gJ0RldHRlIGthbiBoaiZhZWxpZztscGUgbWVkIGF0IGYmYXJpbmc7IFRpbnkgdGlsIGF0IHZpcmtlIHAmYXJpbmc7IHN5c3RlbWVyIGh2b3IgaG9zdGluZyYjMDM5O2VuIGF1dG9tYXRpc2sgdGlsZiZvc2xhc2g7amVyIHRpbmcgdGlsIGZpbGVybmUsIGh2aWxrZXQga2FuICZvc2xhc2g7ZGVsJmFlbGlnO2dnZSBmLmVrcy4gZHluYW1pc2sgZ2VuZXJlcmVkZSBqYXZhc2NyaXB0LWZpbGVyLic7CiRsYW5nWyd1c2VzdGF0aWNjb25maWd3YXJuaW5nJ10gPSAnQWR2YXJzZWwhIER1IGhhciBzdGF0aXNrIGtvbmZpZ3VyYXRpb24gc2wmYXJpbmc7ZXQgdGlsIG1lbiBkZXIga2FuIGlra2Ugc2tyaXZlcyB0aWwgL3RtcC8uIERldHRlIGcmb3NsYXNoO3IgZGV0IHVtdWxpZ3QgZm9yIG1vZGVsZXQgYXQgZ2VtbWUgZGVuIHN0YXRpc3RrIGtvbmZpZ3VyYXRpb25zLWZpbCBvZyB2aWwgaCZvc2xhc2g7anN0IHNhbmRzeW5saWd0IGcmb3NsYXNoO3JlIGF0IFRpbnlNQ0UgaWtrZSB2aXJrZXIuJzsKJGxhbmdbJ2lnbm9yZW1vZGlmeWZpbGVzdGV4dCddID0gJ0lnbm9yJmVhY3V0ZTtyICYjMDM5O01vZGlmeSBGaWxlcyYjMDM5OyB0aWxsYWRlbHNlbiBmb3IgRmlsViZhZWxpZztsZ2VyZW4nOwokbGFuZ1snaWdub3JlbW9kaWZ5ZmlsZXNoZWxwJ10gPSAnQWR2YXJzZWwhIERldHRlIGdpdmVyIG11bGlnaGVkIGZvciBub2dsZSBmaWwtJmFlbGlnO25kcmVuZGUgaGFuZGxpbmdlciBzZWx2IG9tICYjMDM5O01vZGlmeSBGaWxlcyYjMDM5OyB0aWxsYWRlbHNlbiBpa2tlIGVyIHNhdCBmb3IgZGVuIGFrdHVlbGxlIGJydWdlcmdydXBwZS4gRGV0dGUgZXIgaXMmYWVsaWc7ciBicnVnYmFydCBzYW1tZW4gbWVkIG11bGlnaGVkZW4gZm9yIGF0IGJlZ3ImYWVsaWc7bnNlIGJydWdlcmVucyBhZGdhbmcgdGlsIHNpbiBlZ2VuIG1hcHBlLic7CiRsYW5nWydzaG93dG9nZ2xlYnV0dG9uX3RleHQnXSA9ICdWaXMgY2hlY2tib3ggdGlsIGF0IHNsJmFyaW5nOyB3eXNpd3lnIHRpbC9mcmEnOwokbGFuZ1sndG9nZ2xld3lzaXd5ZyddID0gJ1NsJmFyaW5nOyBXWVNJV1lHIHRpbC9mcmEnOwokbGFuZ1snc3R5bGVzX3RhYiddID0gJ0NTUyBzdGlsYXJ0ZXInOwokbGFuZ1snc3R5bGVzX2hlbHAnXSA9ICdIdmlzIGR1IGxhZGVyIGRldHRlIGZlbHQgdiZhZWxpZztyZSB0b210LCB2aWwgVGlueU1DRSBpbmRsJmFlbGlnO3NlIGRpbiBjc3MtZmlsIG9nIHZpc2Ugc3RpbGFydGVybmUgZnJhIGRlbiBwJmFyaW5nOyBzdGlsLWxpc3Rlbi4gSHZpcyBkdSBrdW4gJm9zbGFzaDtuc2tlciBlbmtlbHRlIHN0aWxhcnRlciB2aXN0LCBrYW4gZGUgc2tyaXZlcyBoZXJ1bmRlciBpIGZvcm1hdGV0ICZxdW90O01pblN0aWwxPXN0aWxhcnQxOyBNaW5TdGlsMj1zdGlsYXJ0MiZxdW90Oy4nOwokbGFuZ1snY3NzX3N0eWxlc190ZXh0J10gPSAnR2VuZXJlbHQnOwokbGFuZ1snYWNjZXNzZGVuaWVkJ10gPSAnQWRnYW5nIG4mYWVsaWc7Z3RldC4gQ2hlY2sgZGluZSB0aWxsYWRlbHNlci4nOwokbGFuZ1snZXJyb3InXSA9ICdGZWpsJzsKJGxhbmdbJ3N1Ym1pdCddID0gJ1NlbmQnOwokbGFuZ1sndXBkYXRlJ10gPSAnT3BkYXRlcic7CiRsYW5nWydzYXZlc2V0dGluZ3MnXSA9ICdHZW0gaW5kc3RpbGxpbmdlcic7CiRsYW5nWydzZXR0aW5ncyddID0gJ0luZHN0aWxsaW5nZXInOwokbGFuZ1snc2V0dGluZ3NzYXZlZCddID0gJ0luZHN0aWxsaW5nZXIgYmxldiBnZW10JzsKJGxhbmdbJ3NhdmVhZHZhbmNlZCddID0gJ0dlbSBhdmFuY2VyZWRlIGluZHN0aWxsaW5nZXInOwokbGFuZ1snYWR2YW5jZWRzYXZlZCddID0gJ0F2YW5jZXJlZGUgaW5kc3RpbGxpbmdlciBnZW10JzsKJGxhbmdbJ3Rvb2xiYXJzYXZlZCddID0gJ1YmYWVsaWc7cmt0Jm9zbGFzaDtqc2xpbmllbiBibGV2IGdlbXQnOwokbGFuZ1snc3R5bGVzc2F2ZWQnXSA9ICdTdHlsZXMgYmxldiBnZW10JzsKJGxhbmdbJ3Rlc3RhcmVhdGV4dCddID0gJzxwPlRlc3Qgb21yJmFyaW5nO2RlLCBpbnRldCBpbmRob2xkIHZpbCBibGl2ZSBza2FkZXQgdmVkIGF0IGxlZ2UgaGVyLi4uLjwvcD4nOwokbGFuZ1sncmVzZXQnXSA9ICdHZW5za2FiIHN0YW5kYXJkaW5kc3RpbGxpbmdlcic7CiRsYW5nWydyZXNldGFsbCddID0gJ0dlbnNrYWIgYWxsZSBzdGFuZGFyZGluZHN0aWxsaW5nZXInOwokbGFuZ1snY29uZmlybXJlc2V0J10gPSAnRXIgZHUgc2lra2VyIHAmYXJpbmc7IGR1IHZpbCBnZW5za2FiZSBkaXNzZSBzdGFuZGFyZGluZHN0aWxsaW5nZXI/JzsKJGxhbmdbJ2NvbmZpcm1yZXNldGFsbCddID0gJ0VyIGR1IHNpa2tlciBwJmFyaW5nOyBkdSB2aWwgZ2Vuc2thYmUgQUxMRSBzdGFuZGFyZGluZHN0aWxsaW5nZXI/JzsKJGxhbmdbJ3NldHRpbmdzcmVzZXQnXSA9ICdTdGFuZGFyZGluZHN0aWxsaW5nZXJuZSBibGV2IGdlbnNrYWJ0JzsKJGxhbmdbJ2FsbHNldHRpbmdzcmVzZXQnXSA9ICdBbGxlIHN0YW5kYXJkaW5kc3RpbGxpbmdlciBibGV2IGdlbnNrYWJ0JzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnZXIgYmxldmV0IG9wZ3JhZGVyZXQgdGlsJzsKJGxhbmdbJ2N1c3RvbWRyb3Bkb3duJ10gPSAnQnJ1Z2VyZGVmaW5lcmV0IG1lbnUnOwokbGFuZ1snY21zbXNsaW5rZXInXSA9ICdJbmRzJmFlbGlnO3QgbGluayB0aWwgY21zbXMtc2lkZSc7CiRsYW5nWydiYWNrZW5kX3Rvb2xiYXJzJ10gPSAnQmFja2VuZCBwcm9maWwgaW5kc3RpbGxpbmdlcic7CiRsYW5nWydmcm9udGVuZF90b29sYmFycyddID0gJ0Zyb250ZW5kIHByb2ZpbCBpbmRzdGlsbGluZ2VyJzsKJGxhbmdbJ3BsdWdpbnNfdGFiJ10gPSAnVWR2aWRlbHNlcic7CiRsYW5nWydwbHVnaW5zX2hlbHAnXSA9ICdWJmFlbGlnO2xnIGRlIHVkdmlkZWxzZXIgZHUgJm9zbGFzaDtuc2tlciBhdCBha3RpdmVyZS4gRG9rdW1lbnRhdGlvbiBrYW4gZmluZGVzICA8YSBocmVmPSIlcyIgdGFyZ2V0PSJfYmxhbmsiPmhlcjwvYT4nOwokbGFuZ1sncGx1Z2luc190ZXh0J10gPSAnVWR2aWRlbHNlcic7CiRsYW5nWydzYXZlcGx1Z2lucyddID0gJ0dlbSB1ZHZpZGVsc2VyJzsKJGxhbmdbJ3BsdWdpbnNzYXZlZCddID0gJ1VkdmlkZWxzZXIgYmxldiBnZW10JzsKJGxhbmdbJ3BsdWdpbnNfbW9kdWxlJ10gPSAnTW9kdWwgdWR2aWRlbHNlcic7CiRsYW5nWydwbHVnaW5zX2NvbW1vbiddID0gJ0FsbWluZGVsaWdlIHVkdmlkZWxzZXInOwokbGFuZ1snbW9kdWxlJ10gPSAnTW9kdWwnOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICdCZXNrcml2ZWxzZSc7CiRsYW5nWydwbHVnaW4nXSA9ICdVZHZpZGVsc2UnOwokbGFuZ1sneW91YXJlaW50ZXh0J10gPSAnRHUgZXIgaSc7CiRsYW5nWydsb2Fkc3R5bGVzaGVldHRleHQnXSA9ICdJbmRsJmFlbGlnO3Mgc3R5bGVzaGVldCBmb3IgaW5kaG9sZGV0IChhbmJlZmFsZXQpJzsKJGxhbmdbJ2V4dHJhc3R5bGVzdGV4dCddID0gJ1RpbGYmb3NsYXNoO2plbHNlciB0aWwgc3R5bGVzaGVldCc7CiRsYW5nWydleHRyYXN0eWxlc2hlbHAnXSA9ICdDU1MgZGVyIHNrcml2ZXMgaGVyIHRpbGYmb3NsYXNoO2plcyB0aWwgZGV0IHN0eWxlc2hlZXQgVGlueU1DRSBsJmFlbGlnO3NlciwgZWZ0ZXIgZGUgc3R5bGVzIHNvbSBkZW4gZiZhcmluZztyIGZyYSBDTVNtcy4nOwokbGFuZ1sndXBsb2FkbmV3ZmlsZSddID0gJ055IGZpbCc7CiRsYW5nWyd1cGxvYWRmaWxlJ10gPSAnVXBsb2FkJzsKJGxhbmdbJ2NyZWF0ZW5ld2RpciddID0gJ055IG1hcHBlJzsKJGxhbmdbJ2NyZWF0ZWRpciddID0gJ09wcmV0JzsKJGxhbmdbJ25vZGlybmFtZSddID0gJ0ludGV0IG1hcHBlbmF2biBnaXZldCc7CiRsYW5nWydkaXJleGlzdHMnXSA9ICdNYXBwZW4gZWtzaXN0ZXJlciBhbGxlcmVkZSc7CiRsYW5nWyduZXdkaXJjcmVhdGVkJ10gPSAnTWFwcGVuIGJsZXYgb3ByZXR0ZXQnOwokbGFuZ1snbmV3ZGlyZmFpbGVkJ10gPSAnRGVyIHNrZXRlIGVuIGZlamwgdmVkIG9wcmV0dGVsc2UgYWYgbWFwcGVuJzsKJGxhbmdbJ25vZmlsZSddID0gJ0luZ2VuIGZpbCBibGV2IHVwbG9hZCYjMDM5O2V0JzsKJGxhbmdbJ2ZpbGV0b29iaWcnXSA9ICdEZW4gdXBsb2FkJiMwMzk7ZWRlIGZpbCBlciBmb3Igc3Rvcic7CiRsYW5nWydjb250YWluc2lsbGVnYWxjaGFycyddID0gJ0ZpbG5hdm5ldCBpbmRlaG9sZGVyIGV0IGVsbGVyIGZsZXJlIHVneWxkaWdlIHRlZ24gKCYjMDM5OywmcXVvdDssKywqLFwsLywmYW1wOywkKSc7CiRsYW5nWyd1cGxvYWRmYWlsZWQnXSA9ICdEZXIgc2tldGUgZW4gZmVqbCB2ZWQgZmx5dG5pbmcgYWYgZGVuIHVwbG9hZCYjMDM5O2VkZSBmaWwnOwokbGFuZ1snZmlsZXVwbG9hZGVkJ10gPSAnRmlsZW4gYmxldiB1cGxvYWQmIzAzOTtldCc7CiRsYW5nWydub3RhbmltYWdlJ10gPSAnRGVuIHVwbG9hZCYjMDM5O2VkZSBmaWwgZXIgaWtrZSBldCBiaWxsZWRlJzsKJGxhbmdbJ2ZpbGVwaWNrZXJ0aXRsZSddID0gJ0NNUyBNYWRlU2ltcGxlIEZpbCBWJmFlbGlnO2xnZXInOwokbGFuZ1snc3VjY2VzcyddID0gJ1N1Y2Nlcyc7CiRsYW5nWydmaWxlb3BlcmF0aW9ucyddID0gJ0ZpbCBvcGVyYXRpb25lcic7CiRsYW5nWyd0aG91c2FuZGRlbGltaXRlciddID0gJywnOwokbGFuZ1snc2l6ZSddID0gJ1N0ci4nOwokbGFuZ1snZGltZW5zaW9ucyddID0gJ0J4SCc7CiRsYW5nWydhZHZhbmNlZF90YWInXSA9ICdBdmFuY2VyZXQnOwokbGFuZ1snaGVscCddID0gJwk8aDM+SHZhZCBnJm9zbGFzaDtyIGRldHRlIG1vZHVsPzwvaDM+Cgk8cD5UaWxsYWRlciBhdCBUaW55TUNFIGthbiBicnVnZXMgc29tIFdZU0lXWUctZWRpdG9yLjwvcD4KCTxoMz5Idm9yZGFuIGJydWdlciBqZWcgZGV0Pz88L2gzPgoJPHA+SW5zdGFsbCZlYWN1dGU7ciBkZXQsIGcmYXJpbmc7IHRpbCBicnVnZXIgaW5kc3RpbGxpbmdlciBvZyB2JmFlbGlnO2xnIFRpbnlNQ0Ugc29tIGRldCAmb3NsYXNoO25za2VkZSBXWVNJV1lHLXN5c3RlbS48L3A+CiAgPGgzPlNwZWxsY2hlY2tlcjwvaDM+CiAgPHA+RnJhIG9nIG1lZCB2ZXJzaW9uIDIuNi4wLCBoYXIgVGlueU1DRSBmJmFyaW5nO2V0IGVuIG9ubGluZSBzdGF2ZWtvbnRyb2wuIE1lbiBiZW0mYWVsaWc7cmsgdmVubGlnc3QgYXQgU1NMIHNrYWwgdiZhZWxpZztyZSBzbCZhcmluZztldCB0aWwgcCZhcmluZzsgc2VydmVyZW4gZm9yIGF0IGRldHRlIHZpcmtlci4gUCZhcmluZzsgbm9nbGUgaW5zdGFsbGF0aW9uZXIgaGVkZGVyIGRlbm4ga29uZmlndXJhdGlvbiBwaHBfb3BlbnNzbCBtZW4gZGV0IGthbiB2JmFlbGlnO3JlIGFuZGVybGVkZXMuPC9wPgoKPGgzPlByb2JsZW1sJm9zbGFzaDtzbmluZzwvaDM+CglOb2dsZSBicnVnZXJlIGhhciBwcm9ibGVtZXIgbWVkIGF0IFRpbnkgaWtrZSB2aXNlciBzaWcgZWZ0ZXIgaW5zdGFsbGF0aW9uIGVsbGVyIG9wZ3JhZGVyaW5nLiBIZXIgZXIgZW4gbGlzdGUgYWYgdGluZyBkZXIga2FuIHByJm9zbGFzaDt2ZXMgZiZvc2xhc2g7ciB1ZHZpa2xlcm5lIGtvbnRha3Rlcy4KCTxici8+Cgk8dWw+Cgk8bGk+MS4gUHImb3NsYXNoO3YgdmVubGlnc3QgYXQgdXBsb2FkJiMwMzk7ZSBtb2R1bGVzL1RpbnlNQ0UtbWFwcGVuIHRpbCBkaW4gc2VydmVyIGlnZW4uIEkgZm9yYmF2c2VuZGUgbWFuZ2UgdGlsZiZhZWxpZztsZGUgaGFyIHByb2JsZW1ldCB2JmFlbGlnO3JldCBtYW5nbGVuZGUgZmlsZXIgcGdhLiBmZWpsIGkgdXBsb2FkLjwvbGk+Cgk8bGk+Mi4gUHImb3NsYXNoO3YgYXQgc2wmYXJpbmc7IFN0YXRpc2sga29uZmlndXJhdGlvbiB0aWwuIEJlbSZhZWxpZztyayBhdCBkZXR0ZSBrciZhZWxpZzt2ZXIgYXQgZHUgaGFyIHNrcml2ZXJldHRpZ2hlZGVyIHRpbCAvdG1wLy1tYXBwZW4gcCZhcmluZzsgc2VydmVyZW48L2xpPgoJPGxpPjMuIEh2aXMgZHUgbGlnZSBoYXIgb3BncmFkZXJldCwgcyZhcmluZzsgbnVsc3RpbCBhbGxlIGluZHN0aWxsaW5nZXIuIERldHRlIGVyIGlra2UgcmFydCwgaHZpcyBkdSBoYXIga29uZmlndXJlcmV0IGVuIG1hc3NlLCBkZXQgdmVkIGplZywgbWVuIGRlciBlciBza2V0IGVuIHYmYWVsaWc7bGRpZyBtYXNzZSAmYWVsaWc7bmRyaW5nZXIgZnJhIDIuMy54IHRpbCAyLjQueCB2ZXJzaW9uZXJuZSBhZiBtb2R1bGV0Lgo8bGk+NC4gUHImb3NsYXNoO3YgYXQgc2wmYXJpbmc7IGZ1bmt0aW9uZW4gc3RhdGlzayBrb25maWd1cmF0aW9uIHRpbC4gRGV0dGUgdmlya2VyIGJlZHJlIHAmYXJpbmc7IG5vZ2xlIHN5c3RlbWVyIChDR0ktUEhQIGYuZWtzLikKCTwvdWw+Cgk8YnIvPgoJCTxoMz5VZHZpZGVsc2VzIHVkdmlrbGluZzwvaDM+CiAgRnJhIG9nIG1lZCB2ZXJzaW9uIDIuNy4wIGdpdmVyIFRpbnlNQ0UtbW9kdWxldCBtdWxpZ2hlZCBmb3IgYXQgYW5kcmUgbW9kdWxlciBrYW4gcmVnaXN0cmVyZSB1ZHZpZGVsc2VyIGkgZGV0dGUuIERldCBrdW5uZSB2JmFlbGlnO3JlIGVuIG55IGlrb24gdGlsIGF0IGluZHMmYWVsaWc7dHRlIGluZGhvbGQgZnJhIG1vZHVsZSwgIHMmYXJpbmc7c29tIGV0IGdhbGxlcmkgZWwuIGxpZ24uIERldCBlciByaW1lbGlnIHRla25pc2sgYXQgZiZhcmluZzsgZGV0dGUgdGlsIGF0IHZpcmtlLCBtZW4gaHZpcyBkdSBlciBtb2R1bC11ZHZpa2xlciBvZyBrdW5uZSB0JmFlbGlnO25rZSBkaWcgYXQga2lnZ2UgbiZhZWxpZztybWVyZSBwJmFyaW5nOyBkZXQsIHMmYXJpbmc7IGtpZyB2ZW5saWdzdCBpIFRpbnlNQ0UvZG9jcy1kaXIgZm9yIHlkZXJsaWdlcmUgaW5mb3JtYXRpb25lci4KCQkKJzsKJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuMjAzOTg4NjU4NS4xMjMxNzEzNjE4LjEyODgzNDc3NDYuMTI4ODYyODQ1Ni4xNjcnOwokbGFuZ1sndXRteiddID0gJzE1Njg2MTM1My4xMjg2ODc5ODM3LjE2Mi41MC51dG1jc3I9Zm9ydW0uY21zbWFkZXNpbXBsZS5vcmd8dXRtY2NuPShyZWZlcnJhbCl8dXRtY21kPXJlZmVycmFsfHV0bWNjdD0vaW5kZXgucGhwL2JvYXJkLDY0LjAuaHRtbCc7CiRsYW5nWydxY2EnXSA9ICcxMjI5NjAxNzkwLTg1MjQzMTk3LTQzMjYwNzEzJzsKJGxhbmdbJ3V0bWInXSA9ICcxNTY4NjEzNTMnOwokbGFuZ1sndXRtYyddID0gJzE1Njg2MTM1Myc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/de_DE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2FkbWluZGVzY3JpcHRpb24nXSA9ICdNaXQgZGllc2VtIE1vZHVsIGvDtm5uZW4gaGF1cHRzw6RjaGxpY2ggSW5oYWx0ZSwgYWJlciBhdWNoIGFsbGUgYW5kZXJlbiBBcnRlbiB2b24gRGF0ZW4gw7xiZXIgZGVuIFdZU0lXWUctRWRpdG9yIGRlcyBUaW55TUNFLVByb2pla3RzIGJlYXJiZWl0ZXQgd2VyZGVuLic7CiRsYW5nWydhZHZhbmNlZF9tZW51J10gPSAnRXJ3ZWl0ZXJ0ZXMgTWVuw7wnOwokbGFuZ1snYXBwbHknXSA9ICdBbndlbmRlbic7CiRsYW5nWydhdXRvcmVzaXplJ10gPSAnQXV0b21hdGlzY2hlIEdyw7bDn2VuYW5wYXNzdW5nJzsKJGxhbmdbJ2Jsb2NrX2Zvcm1hdHMnXSA9ICdWZXJmw7xnYmFyZSBGb3JtYXRlJzsKJGxhbmdbJ2J1dHRvbl9uYW1lJ10gPSAnTmFtZSBkZXMgS25vcGZzJzsKJGxhbmdbJ2NhbmNlbCddID0gJ0FiYnJlY2hlbic7CiRsYW5nWydjbXNtc19saW5rZXInXSA9ICdWZXJrbsO8cGZ1bmcgenVyIEluaGFsdHNzZWl0ZSc7CiRsYW5nWydjb250ZXh0bWVudSddID0gJ0tvbnRleHRtZW7DvCc7CiRsYW5nWydjb250ZXh0bWVudV9jb250ZW50J10gPSAnSW5oYWx0IGRlcyBLb250ZXh0bWVuw7xzJzsKJGxhbmdbJ2NvcHknXSA9ICdLb3BpZXJlbic7CiRsYW5nWydjb3B5X3Byb2ZpbGUnXSA9ICdQcm9maWwga29waWVyZW4nOwokbGFuZ1snY3NzX2NsYXNzZXMnXSA9ICdDU1MtS2xhc3Nlbic7CiRsYW5nWydjdXN0b21fZHJvcGRvd24nXSA9ICdFaWdlbmVzIEF1ZmtsYXBwbWVuw7wnOwokbGFuZ1snY3VzdG9tX2Ryb3Bkb3duX3RpdGxlJ10gPSAnVGl0ZWwgZGVzIGVpZ2VuZW4gQXVma2xhcHBtZW7DvHMnOwokbGFuZ1snZGVmYXVsdCddID0gJ1N0YW5kYXJkJzsKJGxhbmdbJ2RlZmF1bHRfZGVzaWdubWFuYWdlcl90ZW1wbGF0ZSddID0gJ1N0YW5kYXJkdm9ybGFnZSBhdXMgZGVtIERlc2lnbi1NYW5hZ2VyJzsKJGxhbmdbJ2RlZmF1bHRfcHJvZmlsZV9zZXQnXSA9ICdTdGFuZGFyZHByb2ZpbCB3dXJkZSBnZcOkbmRlcnQnOwokbGFuZ1snZGVsZXRlX3Byb2ZpbGUnXSA9ICdQcm9maWwgbMO2c2NoZW4nOwokbGFuZ1snZGVsZXRlX3Byb2ZpbGVfY29uZmlybSddID0gJ1NvbGwgZGllc2VzIFByb2ZpbCB3aXJrbGljaCBnZWzDtnNjaHQgd2VyZGVuPyc7CiRsYW5nWydkZXNpZ25fY3NzJ10gPSAnRGVzaWduIGbDvHIgU3R5bGVzaGVldHMnOwokbGFuZ1snZG9jdW1lbnRhdGlvbiddID0gJ0Rva3VtZW50YXRpb24nOwokbGFuZ1snZWRpdF9wcm9maWxlJ10gPSAnUHJvZmlsIGJlYXJiZWl0ZW4nOwokbGFuZ1snZW5hYmxlX2NvbnRleHRtZW51J10gPSAnS29udGV4dG1lbsO8IGVybGF1YmVuJzsKJGxhbmdbJ2VuYWJsZV9jdXN0b21fZHJvcGRvd24nXSA9ICdFaWdlbmVzIEF1ZmtsYXBwbWVuw7wgZXJsYXViZW4nOwokbGFuZ1snZW5hYmxlX2xpbmtlciddID0gJ0RpZSBDTVNNUy1MaW5rZXItRXJ3ZWl0ZXJ1bmcgbGFkZW4nOwokbGFuZ1snZW5hYmxlX3VzZXJfdGVtcGxhdGVzJ10gPSAnQmVudXR6ZXJ2b3JsYWdlbiBlcmxhdWJlbic7CiRsYW5nWydlcnJvcl9kZWxldGVfcHJvZmlsZSddID0gJ0JlaW0gTMO2c2NoZW4gdHJhdCBsZWlkZXIgZWluIEZlaGxlciBhdWYnOwokbGFuZ1snZXJyb3JfY2Fubm90X2RlbGV0ZV9kZWZhdWx0X3Byb2ZpbGUnXSA9ICdEYXMgU3RhbmRhcmRwcm9maWwga2FubiBuaWNodCBnZWzDtnNjaHQgd2VyZGVuJzsKJGxhbmdbJ2Vycm9yX3NhdmluZ19wcm9maWxlJ10gPSAnRXMgaXN0IGVpbiBGZWhsZXIgd8OkaHJlbmQgZGVzIFNwZWljaGVybnMgYXVmZ2V0cmV0ZW4uJzsKJGxhbmdbJ2V4dGVybmFsX21vZHVsZXMnXSA9ICdFeHRlcm5lIE1vZHVsZSc7CiRsYW5nWydleHRlcm5hbF9tb2R1bGVzX3Nob3dfbWVudXRleHQnXSA9ICdLbm9wZi1UZXh0IGluIGRlciBXZXJremV1Z2xlaXN0ZSBhbnplaWdlbiDigJMgd2VubiBuaWNodCBha3RpdmllcnQgd2lyZCBudXIgZGFzIFBpa3RvZ3JhbW0gYW5nZXplaWd0JzsKJGxhbmdbJ2V4dHJhX2pzJ10gPSAnRXh0cmEgSmF2YVNjcmlwdC1PcHRpb25lbiBmw7xyIGRhcyBJbml0aWFsaXNpZXJ1bmdzc2tyaXB0JzsKJGxhbmdbJ2ZpbGVtYW5hZ2VyJ10gPSAnRGF0ZWl2ZXJ3YWx0dW5nJzsKJGxhbmdbJ2ZpbGVtYW5hZ2VyX2F2aWFyeV9hY3RpdmUnXSA9ICdBdmlhcnktRm90b2VkaXRvciBlcmxhdWJlbic7CiRsYW5nWydmaWxlbWFuYWdlcl9hdmlhcnlfYXBpS2V5J10gPSAnQXZpYXJ5LUFQSS1TY2hsw7xzc2VsJzsKJGxhbmdbJ2ZpbGVtYW5hZ2VyX2NobW9kX2RpcnMnXSA9ICdDSE1PRCBmw7xyIFZlcnplaWNobmlzc2UnOwokbGFuZ1snZmlsZW1hbmFnZXJfY2htb2RfZmlsZXMnXSA9ICdDSE1PRCBmw7xyIERhdGVpZW4nOwokbGFuZ1snZmlsZW1hbmFnZXJfY29weV9jdXRfZGlycyddID0gJ1ZlcnplaWNobmlzc2UgYXVzc2NobmVpZGVuJzsKJGxhbmdbJ2ZpbGVtYW5hZ2VyX2NvcHlfY3V0X2ZpbGVzJ10gPSAnRGF0ZWllbiBhdXNzY2huZWlkZW4nOwokbGFuZ1snZmlsZW1hbmFnZXJfY3JlYXRlX2ZvbGRlcnMnXSA9ICdWZXJ6ZWljaG5pc3NlIGVyc3RlbGxlbic7CiRsYW5nWydmaWxlbWFuYWdlcl9jcmVhdGVfdGV4dF9maWxlcyddID0gJ1RleHRkYXRlaWVuIGVyc3RlbGxlbic7CiRsYW5nWydmaWxlbWFuYWdlcl9kZWxldGVfZmlsZXMnXSA9ICdEYXRlaWVuIGzDtnNjaGVuJzsKJGxhbmdbJ2ZpbGVtYW5hZ2VyX2RlbGV0ZV9mb2xkZXJzJ10gPSAnVmVyemVpY2huaXNzZSBsw7ZzY2hlbic7CiRsYW5nWydmaWxlbWFuYWdlcl9kdXBsaWNhdGVfZmlsZXMnXSA9ICdEYXRlaWVuIGR1cGxpemllcmVuJzsKJGxhbmdbJ2ZpbGVtYW5hZ2VyX2VkaXRfdGV4dF9maWxlcyddID0gJ1RleHRkYXRlaWVuIGJlYXJiZWl0ZW4nOwokbGFuZ1snZmlsZW1hbmFnZXJfaW1hZ2VfcmVzaXppbmcnXSA9ICdCaWxkZXIgbmFjaCBkZW0gSG9jaGxhZGVuIGF1dG9tYXRpc2NoIHNrYWxpZXJlbic7CiRsYW5nWydmaWxlbWFuYWdlcl9pbWFnZV9yZXNpemluZ190aXRsZSddID0gJ0F1dG9tYXRpc2NoZSBCaWxkc2thbGllcnVuZyc7CiRsYW5nWydmaWxlbWFuYWdlcl9pbWFnZV9yZXNpemluZ19oZWlnaHQnXSA9ICdNYXhpbWFsZSBCaWxkaMO2aGUgbmFjaCBkZXIgU2thbGllcnVuZyc7CiRsYW5nWydmaWxlbWFuYWdlcl9pbWFnZV9yZXNpemluZ193aWR0aCddID0gJ01heGltYWxlIEJpbGRicmVpdGUgbmFjaCBkZXIgU2thbGllcnVuZyc7CiRsYW5nWydmaWxlbWFuYWdlcl9waG90b19lZGl0b3InXSA9ICdBdmlhcnkgRm90b2VkaXRvcic7CiRsYW5nWydmaWxlbWFuYWdlcl9wcmV2aWV3X3RleHRfZmlsZXMnXSA9ICdUZXh0ZGF0ZWllbi1Wb3JzY2hhdSc7CiRsYW5nWydmaWxlbWFuYWdlcl9yZW5hbWVfZmlsZXMnXSA9ICdEYXRlaWVuIHVtYmVuZW5uZW4nOwokbGFuZ1snZmlsZW1hbmFnZXJfcmVuYW1lX2ZvbGRlcnMnXSA9ICdWZXJ6ZWljaG5pc3NlIHVtYmVuZW5uZW4nOwokbGFuZ1snZmlsZW1hbmFnZXJfdXBsb2FkX2ZpbGVzJ10gPSAnRGF0ZWllbiBob2NobGFkZW4nOwokbGFuZ1snZmlsZW1hbmFnZXJfb3B0aW9ucyddID0gJ0RhdGVpdmVyd2FsdHVuZ3NvcHRpb25lbic7CiRsYW5nWydmaWxlbWFuYWdlcl91c2UnXSA9ICdEYXRlaXZlcndhbHR1bmcgZXJsYXViZW4nOwokbGFuZ1snZnJpZW5kbHluYW1lJ10gPSAnVGlueU1DRSBXWVNJV1lHLUVkaXRvcic7CiRsYW5nWydmb3JjZWRfcm9vdF9ibG9jayddID0gJ0JlaSBaZWlsZW51bWJydWNoIEFic2F0eiBlcnp3aW5nZW4nOwokbGFuZ1snZ2VuZXJhbCddID0gJ0FsbGdlbWVpbic7CiRsYW5nWydnbG9iYWxfc2V0dGluZ3MnXSA9ICdHbG9iYWxlIEVpbnN0ZWxsdW5nZW4nOwokbGFuZ1snZ3JvdXBfZnJvbnRlbmQnXSA9ICfDlmZmZW50bGljaGUgQmVudXR6ZXInOwokbGFuZ1snaGVscF9hZHZhbmNlZF9tZW51J10gPSAnRsO8ciBlaW5lIGVyd2VpdGVydGUgTWVuw7wtR2VzdGFsdHVuZyBha3RpdmllcmVuIFNpZSBkaWVzZSBPcHRpb24uIEJlYXJiZWl0ZW4gU2llIGFuc2NobGllw59lbmQgZGllIEVpbnRyw6RnZSBpbiBkZW0gdW50ZXJlbiBGZWxkLiBXZW5uIFNpZSBkaWVzZSBPcHRpb24gdmVyd2VuZGVuLCB3aXJkIGRhcyBTdGFuZGFyZC1NZW7DvCBkZWFrdGl2aWVydC4nOwokbGFuZ1snaGVscF9hdXRvcmVzaXplJ10gPSAnQWt0aXZpZXJ1bmcgZGVzIDxlbT5hdXRvcmVzaXplPC9lbT4gUGx1Z2luIHVtIGRpZSBIw7ZoZSBhdXRvbWF0aXNjaCBhbiBkaWUgSMO2aGUgZGVzIEluaGFsdHMgYW56dXBhc3Nlbi4nOwokbGFuZ1snaGVscF9hdmlhcnknXSA9ICdBdmlhcnkgaXN0IGVpbmUgZXh0ZXJuZXMgQmlsZGJlYXJiZWl0dW5nc3Byb2dyYW1tIHZvbiBBZG9iZSc7CiRsYW5nWydoZWxwX2Rlc2lnbl9jc3MnXSA9ICdUaW55TUNFIGthbm4gU3R5bGVzaGVldHMgYXVzIGVpbmVtIERlc2lnbiBkZXMgRGVzaWduIE1hbmdlcnMgbGFkZW4sIHVtIGRhcyBvcHRpc2NoZSBFcnNjaGVpbnVuZ3NiaWxkIHp1IHZlcmJlc3Nlcm4uIEhhdCBkYXMge2NvbnRlbnR9LVRhZyBlaW5lbiBQYXJhbWV0ZXIgPGVtPmNzc25hbWU8L2VtPiwgd2lyZCBkaWUgRWluc3RlbGx1bmcgaWdub3JpZXJ0IHVuZCBkYXMgZGVmYXVsdCBKUyB0ZW1wbGF0ZSB2ZXJ3ZW5kZXQgKFNpZSBrw7ZubmVuIGFiZXIgZWluIG5ldWVzIEpTIHRlbXBsYXRlIGVyemV1Z2VuLCB1bSBkYXMgVmVyaGFsdGVuIHp1IMOkbmRlcm4pLjxicj48YnI+DQo8c3Ryb25nPldpY2h0aWc6PC9zdG9uZz4gV2VubiBTaWUgZGllc2VzIEZlYXR1cmUgdmVyd2VuZGVuIHdvbGxlbiwgbcO8c3NlbiBTaWUgZGVuIENNUy1DYWNoZSBsw7ZzY2hlbiwgbmFjaGRlbSBTaWUgZGFzIFN0eWxlc2hlZXQgZ2XDpG5kZXJ0IGhhYmVuLiBBbmRlcmVuZmFsbHMgc2VoZW4gU2llIGRpZSDDhG5kZXJ1bmdlbiBpbiBUaW55TUNFIG5pY2h0ISc7CiRsYW5nWydoZWxwX2VuYWJsZV9jdXN0b21fZHJvcGRvd24nXSA9ICdFcmfDpG56dCBlaW5lbiBzcGV6aWVsbGVuIEJ1dHRvbiwgZGVyIGVzIEVkaXRvcmVuIGVybcO2Z2xpY2h0LCBJaHJlbSBJbmhhbHQgZWluaWdlIENvZGUtU2Nobmlwc2VsIChTbWFydHkgdGFncyB6LkIuKSBoaW56dXp1ZsO8Z2VuLiBWZXJnZXNzZW4gU2llIG5pY2h0LCBpbiBkZXIgVG9vbGJhciBkZW4gQnV0dG9uIDxlbT48c3Ryb25nPmN1c3RvbWRyb3Bkb3duPC9zdHJvbmc+PC9lbT4gaGluenV6dWbDvGdlbi4gRGVyIE1lbsO8ZWludHJhZyA8ZW0+SW5zZXJ0PC9lbT4gemVpZ3QgZXMgZWJlbmZhbGxzIGFuLic7CiRsYW5nWydoZWxwX2V4dGVybmFsX21vZHVsZXMnXSA9ICdFaW5pZ2UgTW9kdWxlIHZvbiBEcml0dGFuYmlldGVybiBzaW5kIGluIGRlciBMYWdlLCBUaW55TUNFIGVpbiBNZW7DvCB6dW0gRWluYmluZGVuIHZvbiBJdGVtcyBhbnp1YmlldGVuLlfDpGhsZW4gU2llIGJpdHRlIGF1cywgd2VsY2hlcyBNb2R1bCBnZWxhZGVuIHdlcmRlbiBzb2xsLiBTb2xsIGRlciBNb2R1bC1CdXR0b24gYW5nZXplaWd0IHdlcmRlbiwgZXJnw6RuemVuIFNpZSBpaG4gYml0dGUuIERlciBNZW7DvGVpbnRyYWcgPGVtPkluc2VydDwvZW0+IHplaWd0IGVzIGViZW5mYWxscyBhbi4nOwokbGFuZ1snaGVscF9leHRyYV9qcyddID0gJ1NpZSBrw7ZubmVuIEphdmFzY3JpcHQgaW0gSW5pdGlhbGlzaWVydW5ncy1TY3JpcHQgZXJnw6RuemVuLCB1bSBzbyBiZW51dHplcnNwZXppZmlzY2hlIEVpZ2Vuc2NoYWZ0ZW4genUgZXJnw6RuemVuLiBUcmVubmVuIFNpZSBiaXR0ZSBqZWRlbiBFaW50cmFnIG1pdCBlaW5lbSBLb21tYSB1bmQgcHLDvGZlbiBTaWUgaW4gZGVuIFRpbnlNQ0UgS29uZmlndXJhdGlvbnNvcHRpb25lbiwgd2VsY2hlIEVpZ2Vuc2NoYWZ0ZW4gZ2VudXR6dCB3ZXJkZW4ga8O2bm5lbi4nOwokbGFuZ1snaGVscF9maWxlbWFuYWdlcl9pbWFnZV9yZXNpemluZyddID0gJ05hY2ggZWluZW0gSW1hZ2UtVXBsb2FkIGthbm4gZGVyIEZpbGUtTWFuYWdlciBkYXMgQmlsZCBhdXRvbWF0aXNjaCBhdWYgZGllIG1heGltYWwgenVsw6Rzc2lnZSBHcsO2w59lIGJlc2NobmVpZGVuLiBEYXMgaXN0IHNpbm52b2xsLCB1bSBCZW51dHplciBkYXJhbiB6dSBoaW5kZXJuLCB6dSBncm/Dn2UgQmlsZGVyIGluIElocmVuIFNlaXRlbiB6dSB2ZXJ3ZW5kZW4uJzsKJGxhbmdbJ2hlbHBfZmlsZW1hbmFnZXJfdXNlJ10gPSAnRGF0ZWltYW5hZ2VyIGFrdGl2aWVyZW4gLSBCZWFjaHRlbiBTaWUsIGRhc3MgYXVzIFNpY2hlcmhlaXRzZ3LDvG5kZW4gZGVyIERhdGVpbWFuYWdlciBuaWVtYWxzIGltIEZyb250ZW5kIGdlbGFkZW4gd2lyZCE8YnI+PGJyPiBEZXIgRGF0ZWltYW5hZ2VyIHdpcmQgaW4gZGVuIERpYWxvZ2VuIDxlbT5MaW5rIGVpbmbDvGdlbjwvZW0+IHVuZCA8ZW0+RWluZsO8Z2VuPC9lbT4gZ2VsYWRlbiwgU2llIGvDtm5uZW4gYWJlciBhdWNoIGVpbmVuIEJ1dHRvbiA8ZW0+cmVzcG9uc2l2ZWZpbGVtYW5hZ2VyPC9lbT4gaW4gZGVyIFRvb2xiYXIgZXJnw6RuemVuLic7CiRsYW5nWydoZWxwX2ltYWdlX2NsYXNzZXMnXSA9ICdIaWVyIGvDtm5uZW4gU2llIFRpbnlNQ0UgYW5nZWJlbiwgd2VsY2hlIEtsYXNzZW4gZWluZW0gQmlsZCB6dWdlb3JkbmV0IHdlcmRlbiBrw7ZubmVuLiBEZXIgQmVudXR6ZXIga2FubiBkaWUgRWludHLDpGdlIGRhbm4gaW5uZXJoYWxiIGRlcyBGZW5zdGVycyBFaW5mw7xnZW4vQmVhcmJlaXRlbiBhdXN3w6RobGVuLiBEaWVzZSBBdXN3YWhsIGlzdCBmw7xyIGRlbiBCZW51dHplciBuaWNodCB2ZXJwZmxpY2h0ZW5kLic7CiRsYW5nWydoZWxwX2xpbmtfY2xhc3NlcyddID0gJ0hpZXIga8O2bm5lbiBTaWUgVGlueU1DRSBhbmdlYmVuLCB3ZWxjaGUgS2xhc3NlbiBlaW5lbSBMaW5rIHp1Z2VvcmRuZXQgd2VyZGVuIGvDtm5uZW4uIERlciBCZW51dHplciBrYW5uIGRpZSBFaW50csOkZ2UgZGFubiBpbm5lcmhhbGIgZGVzIEZlbnN0ZXJzIEVpbmbDvGdlbi9CZWFyYmVpdGVuIGF1c3fDpGhsZW4uIERpZXNlIEF1c3dhaGwgaXN0IGbDvHIgZGVuIEJlbnV0emVyIG5pY2h0IHZlcnBmbGljaHRlbmQuJzsKJGxhbmdbJ2hlbHBfanNfdGVtcGxhdGUnXSA9ICdEYXMgVGlueU1DRS1Nb2R1bCBrYW5uIHNwZXppZWxsZSBKYXZhc2NyaXB0LVRlbXBsYXRlcyB2ZXJ3ZW5kZW4uIERhcyBpc3QgZGFubiBoaWxmcmVpY2gsIHdlbm4gU2llIGRhcyBLb25maWd1cmF0aW9uc3NjcmlwdCB2b24gVGlueU1DRSB2b2xsc3TDpG5kaWcgw6RuZGVybiB3b2xsZW4uPGJyPjxicj5XZW5uIFNpZSBTaWUgc2ljaCBhbiBkYXMgbGV0enRlIEpTLUtvbmZpZ3VyYXRpb25zc2NyaXB0IGFubGVobmVuIHdvbGxlbiwgZGFzIG1pdCBUaW55TUNFIGF1c2dlbGllZmVydCB3dXJkZSwgZGFubiB3w6RobGVuIFNpZSBiaXR0ZSA8ZW0+T3JpZ2luYWwtU2NyaXB0LCBkYXMgbWl0IGRlbSBNb2R1bCBhdXNnZWxpZWZlcnQgd3VyZGU8L2VtPi48YnI+PGJyPldlbm4gU2llIGVpbiBQcm9ncmFtbWllcmVyIHNpbmQsIGvDtm5uZW4gU2llIGRpZXNlbiBQYXJhbWV0ZXIgYXVjaCBhdWYgZWluIFRlbXBsYXRlIGRlcyBEZXNpZ24tTWFuYWdlcnMgc2V0emVuIHVuZCBkaWVzZXMgw6RuZGVybi4gU2VpZW4gU2llIHNpY2ggYWJlciBiZXd1c3N0LCBkYXNzIGRpZSBKUy1Lb25maWd1cmF0aW9uIG1pdCBqZWRlbSBuZXVlbiBNb2R1bC1SZWxlYXNlIHdpZWRlciBlcm5ldXQgYW5nZXBhc3N0IHdlcmRlbiBtdXNzLCB1bSBkaWUgbmV1ZW4gRmVhdHVyZXMgYXVjaCBudXR6ZW4genUga8O2bm5lbi4nOwokbGFuZ1snaGVscF9tZW51YmFyJ10gPSAnU3RlbGxlbiBTaWUgaGllciBlaW4sIHdlbGNoZSBNZW7DvHMgaW0gRWRpdG9yIGFuIHdlbGNoZXIgUG9zaXRpb24gc2ljaHRiYXIgc2VpbiBzb2xsZW4uIFdlcmZlbiBTaWUgZWluZW4gQmxpY2sgaW4gZGllIERva3VtZW50YXRpb24sIHVtIHp1IHNlaGVuLCB3ZWxjaGUgRWluc3RlbGx1bmdlbiBtw7ZnbGljaCBzaW5kLic7CiRsYW5nWydpbnN0YWxsX3Byb2ZpbGVfYWRtaW4nXSA9ICdBZG1pbmlzdHJhdG9yZW4nOwokbGFuZ1snaW5zdGFsbF9wcm9maWxlX2FkdmFuY2VkJ10gPSAnRXJ3ZWl0ZXJ0JzsKJGxhbmdbJ2luc3RhbGxfcHJvZmlsZV9mcm9udGVuZCddID0gJ8OWZmZlbnRsaWNoJzsKJGxhbmdbJ2luc3RhbGxfcHJvZmlsZV9taW5pbWFsJ10gPSAnTWluaW1hbCc7CiRsYW5nWydpbnN0YWxsX3Byb2ZpbGVfc3RhbmRhcmQnXSA9ICdTdGFuZGFyZCc7CiRsYW5nWydqc190ZW1wbGF0ZSddID0gJ0phdmFTY3JpcHQtVm9ybGFnZSc7CiRsYW5nWydsaW5rX2NsYXNzZXMnXSA9ICdDU1MtS2xhc3NlbiwgZGllIGbDvHIgTGlua3MgdmVyd2VuZGV0IHdlcmRlbiBrw7ZubmVuJzsKJGxhbmdbJ2xpbmtfY2xhc3Nlc19pbmZvJ10gPSAnRWluZSBLbGFzc2UgcHJvIFplaWxlLCB6LiBCLjogPGNvZGU+Z3Jvw59lciBLbm9wZj1rbm9wZiBzdGlsMTwvY29kZT4nOwokbGFuZ1snbG9hZGluZ19pbmZvJ10gPSAnTGFkZW7igKYnOwokbGFuZ1snbWVudWJhciddID0gJ01lbsO8bGVpc3RlJzsKJGxhbmdbJ25hbWUnXSA9ICdOYW1lJzsKJGxhbmdbJ25ld19wcm9maWxlJ10gPSAnTmV1ZXMgUHJvZmlsIGVyc3RlbGxlbic7CiRsYW5nWyduZXd3aW5kb3cnXSA9ICdOZXVlcyBGZW5zdGVyJzsKJGxhbmdbJ25vX2Rlc2lnbl9saW5rZWQnXSA9ICdLZWluIERlc2lnbic7CiRsYW5nWydub25lJ10gPSAnbmljaHRzJzsKJGxhbmdbJ29yaWdfanNfdGVtcGxhdGVfZmlsZSddID0gJ01pdCBkZW0gTW9kdWwgZ2VsaWVmZXJ0ZSBPcmlnaW5hbHZvcmxhZ2UnOwokbGFuZ1sncGx1Z2lucyddID0gJ0Vyd2VpdGVydW5nZW4nOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdEZXIgVGlueU1DRS1FZGl0b3Igd3VyZGUgaW5zdGFsbGllcnQuIDxzdHJvbmc+V2ljaHRpZzo8L3N0cm9uZz4gU29sbHRlIFVSTC1SZXdyaXRpbmcgdmVyd2VuZGV0IHdlcmRlbiwgYml0dGUgZGllIC5odGFjY2Vzcy1EYXRlaSBha3R1YWxpc2llcmVuIChzaWVoZSBIaWxmZXNlaXRlIGRlcyBUaW55TUNFLU1vZHVscyknOwokbGFuZ1sncHJpb3JpdHknXSA9ICdQcmlvcml0w6R0JzsKJGxhbmdbJ3Byb2ZpbGVfY29waWVkJ10gPSAnRGFzIFByb2ZpbCB3dXJkZSBkdXBsaXppZXJ0JzsKJGxhbmdbJ3Byb2ZpbGVfZGVsZXRlZCddID0gJ0RhcyBQcm9maWwgd3VyZGUgZ2Vsw7ZzY2h0JzsKJGxhbmdbJ3Byb2ZpbGVfbmFtZSddID0gJ1Byb2ZpbG5hbWUnOwokbGFuZ1sncHJvZmlsZV9zYXZlZCddID0gJ0RhcyBQcm9maWwgd3VyZGUgZ2VzcGVpY2hlcnQnOwokbGFuZ1sncHJvZmlsZXMnXSA9ICdQcm9maWxlJzsKJGxhbmdbJ3Byb21wdF9saW5rZXInXSA9ICdTZWl0ZW50aXRlbCBlaW5nZWJlbic7CiRsYW5nWydwcm9tcHRfcHJvZmlsZXMnXSA9ICdQcm9maWxlJzsKJGxhbmdbJ3Byb21wdF9zZWxlY3RlZGFsaWFzJ10gPSAnZ2V3w6RobHRlcyBTZWl0ZW5hbGlhcyc7CiRsYW5nWydwcm9tcHRfbmFtZSddID0gJ05hbWUnOwokbGFuZ1sncHJvbXB0X3RhcmdldCddID0gJ1ppZWwnOwokbGFuZ1sncHJvbXB0X2NsYXNzJ10gPSAnY2xhc3MtQXR0cmlidXQnOwokbGFuZ1sncHJvbXB0X3JlbCddID0gJ3JlbC1BdHRyaWJ1dCc7CiRsYW5nWydwcm9tcHRfdGV4dHRvZGlzcGxheSddID0gJ2FuenV6ZWlnZW5kZXIgVGV4dCc7CiRsYW5nWydyZWxhdGl2ZV91cmxzJ10gPSAnUmVsYXRpdmUgVVJMcyB2ZXJ3ZW5kZW4nOwokbGFuZ1sncmVzaXplJ10gPSAnR3LDtsOfZSDDpG5kZXJuJzsKJGxhbmdbJ3Jlc2l6ZV9ubyddID0gJ0dyw7bDn2Vuw6RuZGVydW5nIG5pY2h0IGVybGF1YmVuJzsKJGxhbmdbJ3Jlc2l6ZV92ZXJ0aWNhbCddID0gJ1ZlcnRpa2FsZSBHcsO2w59lbsOkbmRlcnVuZyBlcmxhdWJlbic7CiRsYW5nWydyZXNpemVfYm90aCddID0gJ1ZlcnRpa2FsZSB1bmQgaG9yaXpvbnRhbGUgR3LDtsOfZW7DpG5kZXJ1bmcgZXJsYXViZW4nOwokbGFuZ1snc2hvd19tZW51YmFyJ10gPSAnTWVuw7xsZWlzdGUgYW56ZWlnZW4nOwokbGFuZ1snc2hvd19zdGF0dXNiYXInXSA9ICdTdGF0dXNsZWlzdGUgYW56ZWlnZW4nOwokbGFuZ1snc2hvd190b29sYmFyJ10gPSAnV2Vya3pldWdsZWlzdGUgYW56ZWlnZW4nOwokbGFuZ1snc3R5bGVfZm9ybWF0cyddID0gJ1N0aWxmb3JtYXRlJzsKJGxhbmdbJ3N1Ym1pdCddID0gJ1NwZWljaGVybic7CiRsYW5nWyd0YWJfZ2VuZXJhbF90aXRsZSddID0gJ0FsbGdlbWVpbic7CiRsYW5nWyd0YWJfYWR2YW5jZWRfdGl0bGUnXSA9ICdFcndlaXRlcnQnOwokbGFuZ1sndGVtcGxhdGUnXSA9ICdWb3JsYWdlJzsKJGxhbmdbJ3RlbXBsYXRlcyddID0gJ1ZvcmxhZ2VuJzsKJGxhbmdbJ3RpdGxlX2Ntc21zX2xpbmtlciddID0gJ0xpbmsgenVyIEluaGFsdHNzZWl0ZSBlcnN0ZWxsZW4nOwokbGFuZ1sndG9vbGJhciddID0gJ1dlcmt6ZXVnbGVpc3RlJzsKJGxhbmdbJ3Rvb2xiYXIxJ10gPSAnV2Vya3pldWdsZWlzdGUg4oCTIGVyc3RlIFplaWxlJzsKJGxhbmdbJ3Rvb2xiYXIyJ10gPSAnV2Vya3pldWdsZWlzdGUg4oCTIHp3ZWl0ZSBaZWlsZSc7CiRsYW5nWyd0b29sdGlwX3NlbGVjdGVkYWxpYXMnXSA9ICdEaWVzZXMgRmVsZCBrYW5uIG51ciBhdXNnZWxlc2VuIHdlcmRlbic7CiRsYW5nWyd0eXBlX1RpbnlNQ0UnXSA9ICdUaW55TUNFJzsKJGxhbmdbJ3R5cGVfanMnXSA9ICdKYXZhU2NyaXB0JzsKJGxhbmdbJ3R5cGVfdXNlcnRlbXBsYXRlJ10gPSAnVGlueU1DRS1CZW51dHplcnZvcmxhZ2UnOwokbGFuZ1sndXNlX2FkdmFuY2VkX21lbnUnXSA9ICdFcndlaXRlcnRlcyBNZW7DvCB2ZXJ3ZW5kZW4nOwokbGFuZ1sndXNlX2N1c3RvbV9ibG9ja19mb3JtYXRzJ10gPSAnQXVma2xhcHBtZW7DvCBmw7xyIGVpZ2VuZSBGb3JtYXRlIHZlcndlbmRlbic7CiRsYW5nWyd1c2VyZ3JvdXBzJ10gPSAnQmVudXR6ZXJncnVwcGVuJzsKJGxhbmdbJ2hlbHAnXSA9ICc8aDM+V2FzIG1hY2h0IGRpZXNlcyBNb2R1bD88L2gzPg0KCTxwPkVzIHN0ZWxsdCBkZW4gVGlueU1DRSBhbHMgV1lTSVdZRy1FZGl0b3IgenVyIFZlcmbDvGd1bmcuPC9wPg0KCTxoMz5XaWUgd2lyZCBlcyBiZW51dHp0PzwvaDM+DQoJPHA+TmFjaCBkZXIgSW5zdGFsbGF0aW9uIGvDtm5uZW4gU2llIGluIGRlciBBZG1pbmlzdHJhdGlvbiBpbSBNZW7DvCDigJ5NZWluZSBFaW5zdGVsbHVuZ2VuIC0+IEJlbnV0emVyc3BlemlmaXNjaGUgRWluc3RlbGx1bmdlbuKAnCBUaW55TUNFIGFscyBXWVNJV1lHLUVkaXRvciBhdXN3w6RobGVuLjwvcD4NCiAgPGgzPlNwcmFjaHByw7xmdW5nPC9oMz4NCiAgPHA+U2VpdCBWZXJzaW9uIDIuNi4wIGVudGjDpGx0IFRpbnlNQ0UgZWluZSBvbmxpbmUtU3ByYWNocHLDvGZ1bmcuIEJpdHRlIGJlYWNodGVuIFNpZSwgZGFzcyBpbiBJaHJlciBTZXJ2ZXItS29uZmlndXJhdGlvbiBTU0wgYWt0aXZpZXJ0IHNlaW4gbXVzcywgZGFtaXQgZGllcyBmdW5rdGlvbmllcnQuIEJlaSBlaW5pZ2VuIEluc3RhbGxhdGlvbmVuIHdpcmQgZGllc2UgT3B0aW9uIHBocF9vcGVuc3NsIGdlbmFubnQsIGRpZXMga2FubiBhYmVyIGF1Y2ggZGF2b24gYWJ3ZWljaGVuLjwvcD4NCgk8aDM+RmVobGVyc3VjaGU8L2gzPg0KCTxwPkVpbmlnZSBBbndlbmRlciBoYWJlbiBQcm9ibGVtZSBtaXQgZGVyIEFuemVpZ2UgZGVzIFRpbnlNQ0UgbmFjaCBkZXIgSW5zdGFsbGF0aW9uIG9kZXIgQWt0dWFsaXNpZXJ1bmcuIEltIGZvbGdlbmRlbiBmaW5kZW4gU2llIGVpbmUgQ2hlY2tsaXN0ZSwgDQoJZGllIFNpZSBhYmFyYmVpdGVuIHNvbGx0ZW4sIGJldm9yIFNpZSBtaWNoIHVtIFVudGVyc3TDvHR6dW5nIGJpdHRlbi48L3A+DQoJPG9sPg0KCTxsaT5CaXR0ZSwgYml0dGUgdmVyc3VjaGVuIFNpZSwgZGFzIFRpbnlNQ0UtVmVyemVpY2huaXMgbm9jaG1hbHMgaW4gZGVuIC9tb2R1bGVzLU9yZG5lciBob2NoenVsYWRlbi4gU2llIHfDpHJlbiDDvGJlcnJhc2NodCwgd2VubiBTaWUgd8O8c3N0ZW4sIHdpZSBvZnQgZGllcyBiZXJlaXRzIGFuZGVyZW4gQW53ZW5kZXJuIGdlaG9sZmVuIGhhdC48L2xpPg0KCTxsaT5WZXJzdWNoZW4gU2llLCBkaWUgT3B0aW9uIGbDvHIgZWluZSBzdGF0aXNjaGUgS29uZmlndXJhdGlvbnNkYXRlaSB6dSB2ZXJ3ZW5kZW4uIEJpdHRlIGJlYWNodGVuIFNpZSwgZGFzcyBkYWbDvHIgaWhyIC90bXAtVmVyemVpY2huaXMgZHVyY2ggZGVuIFdlYnNlcnZlciBiZXNjaHJlaWJiYXIgc2VpbiBtdXNzLjwvbGk+DQoJPGxpPkZhbGxzIFNpZSBkYXMgTW9kdWwgYWt0dWFsaXNpZXJ0IGhhYmVuLCB2ZXJzdWNoZW4gU2llLCBzw6RtdGxpY2hlIEVpbnN0ZWxsdW5nZW4gYXVmIGRpZSBwcm9ncmFtbXNlaXRpZ2VuIFZvcmdhYmVuIHp1csO8Y2t6dXNldHplbi4gSWNoIHdlacOfLCBkYXNzIGRhcyBuaWNodCBnZXJhZGUgc2Now7ZuIGlzdCwgd2VubiBTaWUgVGlueU1DRSBiZXJlaXRzIGluZGl2aWR1ZWxsIGFuZ2VwYXNzdCBoYXR0ZW4sIGFiZXIgbWl0IGRlciBVbXN0ZWxsdW5nIGRlcyBNb2R1bHMgdm9uIDIuMy54IGF1ZiAyLjQueCBzaW5kIGVpbmUgTWVuZ2Ugw4RuZGVydW5nZW4gZXJmb2xndC48L2xpPg0KCTxsaT5WZXJzdWNoZW4gU2llLCBpbiBkZXIgUmVnaXN0ZXJrYXJ0ZSDigJ5XZWl0ZXJlIE9wdGlvbmVu4oCcIGRpZSBPcHRpb24genVyIFZlcndlbmR1bmcgZWluZXIgc3RhdGlzY2hlbiBLb25maWd1cmF0aW9uc2RhdGVpIHp1IHZlcndlbmRlbi4gQXVmIG1hbmNoZW4gKENHSS1iYXNpZXJ0ZW4pIFN5c3RlbWVuIGZ1bmt0aW9uaWVydCBkaWVzIGJlc3Nlci4gQml0dGUgYmVhY2h0ZW4gU2llLCBkYXNzIGRhZsO8ciBkYXMgVmVyemVpY2huaXMgL3RtcC8gZHVyY2ggZGVuIFdlYnNlcnZlciBiZXNjaHJlaWJiYXIgc2VpbiBtdXNzLjwvbGk+DQoJPC9vbD4NCiAgPGgzPlBsdWdpbi1Qcm9ncmFtbWllcnVuZzwvaDM+DQogIDxwPkFiIFZlcnNpb24gMi43LjAgZGVzIFRpbnlNQ0UtTW9kdWxzIGthbm4gYW5kZXJlbiBNb2R1bGVuIGVybGF1YnQgd2VyZGVuLCBFcndlaXRlcnVuZ2VuIGbDvHIgZGllc2UgenUgcmVnaXN0cmllcmVuLiBEaWVzIGvDtm5udGUgenVtIEJlaXNwaWVsIGVpbiBiZW51dHplcmRlZmluaWVydGVzIElrb24gc2VpbiwgbWl0IGRlbSBJbmhhbHRlIHZvbiBhbmRlcmVuIE1vZHVsZSBlaW5nZWbDvGd0IHdlcmRlbiBrw7ZubmVuLCB3aWUgenVtIEJlaXNwaWVsIGVpbmUgQmlsZGVyZ2FsZXJpZS4gV2VubiBTaWUgZWluIE1vZHVsLVByb2dyYW1taWVyZXIgc2luZCB1bmQgbWVociDDvGJlciBkaWUgdGVjaG5pc2NoZW4gSGludGVyZ3LDvG5kZSBlcmZhaHJlbiBtw7ZjaHRlbiwgZmluZGVuIFNpZSBpbSBWZXJ6ZWljaG5pcyBUaW55TUNFL2RvY3Mgd2VpdGVyZSBJbmZvcm1hdGlvbmVuLic7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/es_ES.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2FkbWluZGVzY3JpcHRpb24nXSA9ICdFc3RlIG3Ds2R1bG8gcGVybWl0ZSBmdW5kYW1lbnRhbG1lbnRlIGVkaXRhciBlbCBjb250ZW5pZG8sIGF1bnF1ZSBwb3NpYmxlbWVudGUgdGFtYmnDqW4gb3RybyB0aXBvIGRlIGluZm9ybWFjacOzbiwgbWVkaWFudGUgZWwgZWRpdG9yIFdZU0lXWUcgaW1wdWxzYWRvIHBvciBlbCBwcm95ZWN0byBUaW55TUNFLic7CiRsYW5nWydhZHZhbmNlZF9tZW51J10gPSAnTWVuw7ogYXZhbnphZG8nOwokbGFuZ1snYXBwbHknXSA9ICdBcGxpY2FyJzsKJGxhbmdbJ2F1dG9yZXNpemUnXSA9ICdBdXRvIGFqdXN0YXInOwokbGFuZ1snYmxvY2tfZm9ybWF0cyddID0gJ0Zvcm1hdG9zIGRpc3BvbmlibGVzJzsKJGxhbmdbJ2J1dHRvbl9uYW1lJ10gPSAnTm9tYnJlIGRlbCBib3TDs24nOwokbGFuZ1snY2FuY2VsJ10gPSAnQ2FuY2VsYXInOwokbGFuZ1snY21zbXNfbGlua2VyJ10gPSAnRW5sYWNlIGEgcMOhZ2luYSBkZSBjb250ZW5pZG8nOwokbGFuZ1snY29udGV4dG1lbnUnXSA9ICdNZW7DuiBjb250ZXh0dWFsJzsKJGxhbmdbJ2NvbnRleHRtZW51X2NvbnRlbnQnXSA9ICdDb250ZW5pZG8gZGVsIG1lbsO6IGNvbnRleHR1YWwnOwokbGFuZ1snY29weSddID0gJ2NvcGlhcic7CiRsYW5nWydjb3B5X3Byb2ZpbGUnXSA9ICdDb3BpYXIgcGVyZmlsJzsKJGxhbmdbJ2Nzc19jbGFzc2VzJ10gPSAnQ2xhc2VzIENTUyc7CiRsYW5nWydjdXN0b21fZHJvcGRvd24nXSA9ICdNZW7DuiBkZXNwbGVnYWJsZSBwZXJzb25hbGl6YWRvJzsKJGxhbmdbJ2N1c3RvbV9kcm9wZG93bl90aXRsZSddID0gJ1TDrXR1bG8gZGVsIG1lbsO6IGRlc3BsZWdhYmxlIHBlcnNvbmFsaXphZG8nOwokbGFuZ1snZGVmYXVsdCddID0gJ1ZhbG9yIHBvciBkZWZlY3RvJzsKJGxhbmdbJ2RlZmF1bHRfZGVzaWdubWFuYWdlcl90ZW1wbGF0ZSddID0gJ1BsYW50aWxsYSBwb3IgZGVmZWN0byc7CiRsYW5nWydkZWZhdWx0X3Byb2ZpbGVfc2V0J10gPSAnUGVyZmlsIHBvciBkZWZlY3RvIGNhbWJpYWRvIGV4aXRvc2FtZW50ZSc7CiRsYW5nWydkZWxldGVfcHJvZmlsZSddID0gJ0JvcnJhciBwZXJmaWwnOwokbGFuZ1snZGVsZXRlX3Byb2ZpbGVfY29uZmlybSddID0gJ8K/RXN0w6Egc2VndXJvIGRlIHF1ZXJlciBib3JyYXIgZXN0ZSBwZXJmaWw/JzsKJGxhbmdbJ2Rlc2lnbl9jc3MnXSA9ICdEaXNlw7FvIGEgdXNhciBwYXJhIGhvamFzIENTUyc7CiRsYW5nWydkb2N1bWVudGF0aW9uJ10gPSAnRG9jdW1lbnRhY2nDs24nOwokbGFuZ1snZWRpdF9wcm9maWxlJ10gPSAnRWRpdGFyIHBlcmZpbCc7CiRsYW5nWydlbmFibGVfY29udGV4dG1lbnUnXSA9ICdBY3RpdmFyIG1lbsO6IGNvbnRleHR1YWwgKGNsaWMgZGVyZWNobyknOwokbGFuZ1snZW5hYmxlX2N1c3RvbV9kcm9wZG93biddID0gJ0FjdGl2YXIgbWVuw7ogZGVzcGxlZ2FibGUgcGVyc29uYWxpemFkbyc7CiRsYW5nWydlbmFibGVfbGlua2VyJ10gPSAnQ2FyZ2FyIGVsIHBsdWdpbiBkZSBlbmxhY2VzIGEgcMOhZ2luYXMgQ01TTVMgKGVubGF6YSBhIHDDoWdpbmFzIGVuIHN1IHNpdGlvKSc7CiRsYW5nWydlbmFibGVfdXNlcl90ZW1wbGF0ZXMnXSA9ICdBY3RpdmFyIHBsYW50aWxsYXMgZGUgdXN1YXJpbyc7CiRsYW5nWydlcnJvcl9kZWxldGVfcHJvZmlsZSddID0gJ0Vycm9yIGFsIHRyYXRhciBkZSBib3JyYXInOwokbGFuZ1snZXJyb3JfY2Fubm90X2RlbGV0ZV9kZWZhdWx0X3Byb2ZpbGUnXSA9ICdFcnJvcjogZWwgcGVyZmlsIHBvciBkZWZlY3RvIG5vIHNlIHB1ZWRlIGJvcnJhcic7CiRsYW5nWydleHRlcm5hbF9tb2R1bGVzJ10gPSAnTcOzZHVsb3MgZXh0ZXJub3MnOwokbGFuZ1snZXh0ZXJuYWxfbW9kdWxlc19zaG93X21lbnV0ZXh0J10gPSAnTW9zdGFyIGVsIGJvdMOzbiBjb24gdGV4dG8gZW4gbGEgYmFycmEgZGUgaGVycmFtaWVudGFzIChzaW4gY2hlcXVlLCBtdWVzdHJhIMOtY29ubyBzb2xhbWVudGUpJzsKJGxhbmdbJ2V4dHJhX2pzJ10gPSAnT3BjaW9uZXMgZXh0cmFzIHBhcmEgSmF2YXNjcmlwdCBlbiBlbCBzY3JpcHQgZGUgaW5pY2lhbGl6YWNpw7NuJzsKJGxhbmdbJ2ZpbGVtYW5hZ2VyJ10gPSAnR2VzdG9yIGRlIGFyY2hpdm9zJzsKJGxhbmdbJ2ZpbGVtYW5hZ2VyX2F2aWFyeV9hY3RpdmUnXSA9ICdBY3RpdmFyIGVkaXRvciBkZSBmb3RvcyBBdmlhcnknOwokbGFuZ1snZmlsZW1hbmFnZXJfYXZpYXJ5X2FwaUtleSddID0gJ0xhIGxsYXZlIEFQSSBkZSBBdmlhcnknOwokbGFuZ1snZmlsZW1hbmFnZXJfY2htb2RfZGlycyddID0gJ0RpcmVjdG9yaW9zIENITU9EJzsKJGxhbmdbJ2ZpbGVtYW5hZ2VyX2NobW9kX2ZpbGVzJ10gPSAnQXJjaGl2b3MgQ0hNT0QnOwokbGFuZ1snZmlsZW1hbmFnZXJfY29weV9jdXRfZGlycyddID0gJ0NvcGlhciB5IHBlZ2FyIGRpcmVjdG9yaW9zJzsKJGxhbmdbJ2ZpbGVtYW5hZ2VyX2NvcHlfY3V0X2ZpbGVzJ10gPSAnQ29waWFyIHkgcGVnYXIgYXJjaGl2b3MnOwokbGFuZ1snZmlsZW1hbmFnZXJfY3JlYXRlX2ZvbGRlcnMnXSA9ICdDcmVhciBjYXJwZXRhcyc7CiRsYW5nWydmaWxlbWFuYWdlcl9jcmVhdGVfdGV4dF9maWxlcyddID0gJ0NyZWFyIGFyY2hpdm9zIGRlIHRleHRvJzsKJGxhbmdbJ2ZpbGVtYW5hZ2VyX2RlbGV0ZV9maWxlcyddID0gJ0JvcnJhciBhcmNoaXZvcyc7CiRsYW5nWydmaWxlbWFuYWdlcl9kZWxldGVfZm9sZGVycyddID0gJ0JvcnJhciBjYXJwZXRhcyc7CiRsYW5nWydmaWxlbWFuYWdlcl9kdXBsaWNhdGVfZmlsZXMnXSA9ICdEdXBsaWNhciBhcmNoaXZvcyc7CiRsYW5nWydmaWxlbWFuYWdlcl9lZGl0X3RleHRfZmlsZXMnXSA9ICdFZGl0YXIgYXJjaGl2b3MgZGUgdGV4dG8nOwokbGFuZ1snZmlsZW1hbmFnZXJfaW1hZ2VfcmVzaXppbmcnXSA9ICdBdXRvIGFqdXN0YXIgdGFtYcOxbyBkZSBpbcOhZ2VuZXMgYWwgc3ViaXJsYXMnOwokbGFuZ1snZmlsZW1hbmFnZXJfaW1hZ2VfcmVzaXppbmdfdGl0bGUnXSA9ICdBanVzdGUgYXV0b23DoXRpY28gZGUgaW3DoWdlbmVzJzsKJGxhbmdbJ2ZpbGVtYW5hZ2VyX2ltYWdlX3Jlc2l6aW5nX2hlaWdodCddID0gJ0FsdHVyYSBtw6F4aW1hIHBhcmEgaW3DoWdlbmVzJzsKJGxhbmdbJ2ZpbGVtYW5hZ2VyX2ltYWdlX3Jlc2l6aW5nX3dpZHRoJ10gPSAnQW5jaHVyYSBtw6F4aW1hIHBhcmEgaW3DoWdlbmVzJzsKJGxhbmdbJ2ZpbGVtYW5hZ2VyX3Bob3RvX2VkaXRvciddID0gJ0VkaXRvciBkZSBmb3RvcyBBdmlhcnknOwokbGFuZ1snZmlsZW1hbmFnZXJfcHJldmlld190ZXh0X2ZpbGVzJ10gPSAnVmVyIGFyY2hpdm9zIGRlIHRleHRvJzsKJGxhbmdbJ2ZpbGVtYW5hZ2VyX3JlbmFtZV9maWxlcyddID0gJ1Jlbm9tYnJhciBhcmNoaXZvcyc7CiRsYW5nWydmaWxlbWFuYWdlcl9yZW5hbWVfZm9sZGVycyddID0gJ1Jlbm9tYnJhciBjYXJwZXRhcyc7CiRsYW5nWydmaWxlbWFuYWdlcl91cGxvYWRfZmlsZXMnXSA9ICdTdWJpciBhcmNoaWNvcyc7CiRsYW5nWydmaWxlbWFuYWdlcl9vcHRpb25zJ10gPSAnT3BjaW9uZXMgZGVsIGdlc3RvciBkZSBhcmNoaXZvcyc7CiRsYW5nWydmaWxlbWFuYWdlcl91c2UnXSA9ICdBY3RpdmFyIGVsIGdlc3RvciBkZSBhcmNoaXZvcyc7CiRsYW5nWydmcmllbmRseW5hbWUnXSA9ICdFZGl0b3IgV1lTSVdZRyBUaW55TUNFJzsKJGxhbmdbJ2ZvcmNlZF9yb290X2Jsb2NrJ10gPSAnRm9yemFyIHVuIHDDoXJyYWZvIGRlc3B1w6lzIGRlIHVuIHNhbHRvIGRlIGzDrW5lYSc7CiRsYW5nWydnZW5lcmFsJ10gPSAnR2VuZXJhbGlkYWRlcyc7CiRsYW5nWydnbG9iYWxfc2V0dGluZ3MnXSA9ICdBanVzdGVzIGdsb2JhbGVzJzsKJGxhbmdbJ2dyb3VwX2Zyb250ZW5kJ10gPSAnVXN1YXJpb3MgZGUgcMOhZ2luYXMgZnJvbnRhbGVzJzsKJGxhbmdbJ2hlbHBfYWR2YW5jZWRfbWVudSddID0gJ0VzdGEgb3BjacOzbiBwZXJtaXRlIHBlcnNvbmFsaXphciBlbCBtZW7DuiBhdmFuemFkby4gU2kgc2UgdXNhIGVzdGUgbWVuw7osIGVsIG1lbsO6IGVzdMOhbmRhciBzZXJhIGRlc2FjdGl2YWRvLic7CiRsYW5nWydoZWxwX2F1dG9yZXNpemUnXSA9ICdBbCBhY3RpdmFyIGVsIHBsdWdpbiBkZSBhanVzdGUgYXV0b21hdGljbyBkZSB0YW1hw7FvLCBjYW1iaWEgZWwgdGFtYcOxbyBkZWwgZWRpdG9yIGRlcGVuZGllbmRvIGRlbCB0YW1hw7FvIGRlbCBjb250ZW5pZG8uJzsKJGxhbmdbJ2hlbHBfYXZpYXJ5J10gPSAnQXZpYXJ5IGVzIHVuIGVkaXRvciBkZSBpbcOhZ2VuZXMgcHJvcG9yY2lvbmFkbyBwb3IgQWRvYmUnOwokbGFuZ1snaGVscF9kZXNpZ25fY3NzJ10gPSAnVGlueU1DRSBwdWVkZSBjYXJnYXIgdW4gY29uanVudG8gZGUgaG9qYXMgZGUgZXN0aWxvcyBkZSB1biBkaXNlw7FvIGRlZmluaWRvIGVuIGVsIEdlc3RvciBkZSBEaXNlw7FvcyBwYXJhIG1lam9yYXIgbGEgZXhwZXJpZW5jaWEgdmlzdWFsLiBOb3RhOiBzaSBsYSBldGlxdWV0YSB7Y29udGVudH0gdGllbmUgdW4gcGFyw6FtZXRybyBcJ2Nzc25hbWVcJyBlc3RhIHByZWZlcmVuY2lhIHNlcsOhIGlnbm9yYWRhIGVuIGxhIHBsYW50aWxsYSBKYXZhc2NyaXB0IHBvciBkZWZlY3RvLCBwZXJvIHNlIHB1ZWRlIGNyZWFyIHVuYSBudWV2YSBwbGFudGlsbGEgSmF2YXNjcmlwdCBwYXJhIGNhbWJpYXIgZXN0ZSBjb21wb3J0YW1pZW50by4gPGJyPjxicj48Yj5JbXBvcnRhbnRlITwvYj5TaSB1c2EgZXN0YSBjYXJhY3RlcsOtc3RpY2EsIGRlYmUgYm9ycmFyIGVsIGNhY2hlIGRlIENNUyBkZXNwdcOpIGRlIGNhbWJpb3MgZW4gbGFzIGhvamFzIGRlIGVzdGlsbyBwYXJhIHF1ZSBzZWFuIHZpc2libGVzIGVuIFRpbnlNQ0UuJzsKJGxhbmdbJ2lkJ10gPSAnSUQnOwokbGFuZ1snaW1hZ2VfYWR2dGFiJ10gPSAnQWN0aXZhciBsYSBwZXN0YcOxYSBhdmFuemFkYSBwYXJhIGltw6FnZW5lcyAoZXN0aWxvcywgZXNwYWNpb3MsIGJvcmRlcyknOwokbGFuZ1snaW1hZ2VfY2xhc3NlcyddID0gJ0NsYXNlcyBDU1MgcXVlIHB1ZWRlbiBzZXIgdXNhZGFzIGNvbiBsYXMgaW3DoWdlbmVzJzsKJGxhbmdbJ2luc3RhbGxfcHJvZmlsZV9hZG1pbiddID0gJ0FkbWluaXN0cmFkb3Jlcyc7CiRsYW5nWydpbnN0YWxsX3Byb2ZpbGVfYWR2YW5jZWQnXSA9ICdBdmFuemFkbyc7CiRsYW5nWydpbnN0YWxsX3Byb2ZpbGVfZnJvbnRlbmQnXSA9ICdQw6FnaW5hcyBmcm9udGFsZXMnOwokbGFuZ1snaW5zdGFsbF9wcm9maWxlX21pbmltYWwnXSA9ICdNw61uaW1vJzsKJGxhbmdbJ2luc3RhbGxfcHJvZmlsZV9zdGFuZGFyZCddID0gJ0VzdMOhbmRhcic7CiRsYW5nWydqc190ZW1wbGF0ZSddID0gJ1BsYW50aWxsYSBKYXZhc2NyaXB0JzsKJGxhbmdbJ2xpbmtfY2xhc3NlcyddID0gJ0NsYXNzZXMgQ1NTIHF1ZSBwdWVkZW4gc2VyIHVzYWRhcyBwYXJhIGVubGFuY2VzJzsKJGxhbmdbJ2xpbmtfY2xhc3Nlc19pbmZvJ10gPSAnVW5hIGNsYXNlIHBvciBsw61uZWEsIGVqZW1wbG86IDxjb2RlPjxlbT5BenVsIGJ1dHRvbj0gYnRuIGJ0bi1ibHVlPC9lbT48L2NvZGU+JzsKJGxhbmdbJ2xvYWRpbmdfaW5mbyddID0gJ0NhcmdhbmRvLi4uJzsKJGxhbmdbJ21lbnViYXInXSA9ICdCYXJyYSBkZSBtZW7Duic7CiRsYW5nWyduYW1lJ10gPSAnTm9tYnJlJzsKJGxhbmdbJ25ld19wcm9maWxlJ10gPSAnQ3JlYXIgbnVldm8gcGVyZmlsJzsKJGxhbmdbJ25ld3dpbmRvdyddID0gJ051ZXZhIHZlbnRhbmEnOwokbGFuZ1snbm9fZGVzaWduX2xpbmtlZCddID0gJ1NpbiBkaXNlw7FvJzsKJGxhbmdbJ25vbmUnXSA9ICdOYWRhJzsKJGxhbmdbJ29yaWdfanNfdGVtcGxhdGVfZmlsZSddID0gJ1BsYW50aWxsYSBvcmlnaW5hbCBwcm92aXN0YSBjb24gZWwgbcOzZHVsbyc7CiRsYW5nWydwbHVnaW5zJ10gPSAnUGx1Z2lucyc7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ0VsIGVkaXRvciBUaW55TUNFIGhhIHNpZG8gaW5zdGFsYWRvIGV4aXRvc2FtZW50ZS4gPGI+SW1wb3J0YW50ZTwvYj4gU2kgZXN0w6EgdXNhbmRvIGxhIHJlLWVzY3JpdHVyYSBkZSBVUkxTLCBwb3IgZmF2b3IgYWN0dWFsaXphciBlbCBhcmNoaXZvIC5odGFjY2VzcyAodmVyIGxhIHNlY2Npw7NuIGRlIGF5dWRhIGRlIFRpbnlNQ0UpLic7CiRsYW5nWydwcmlvcml0eSddID0gJ1ByaW9yaWRhZCc7CiRsYW5nWydwcm9maWxlX2NvcGllZCddID0gJ0VsIHBlcmZpbCBmdWUgZHVwbGljYWRvIGV4aXRvc2FtZW50ZSc7CiRsYW5nWydwcm9maWxlX2RlbGV0ZWQnXSA9ICdFbCBwZXJmaWwgZnVlIGJvcnJhZG8gZXhpdG9zYW1lbnRlJzsKJGxhbmdbJ3Byb2ZpbGVfbmFtZSddID0gJ05vbWJyZSBkZSBwZXJmaWwnOwokbGFuZ1sncHJvZmlsZV9zYXZlZCddID0gJ1BlcmZpbCBndWFyZGFkbyBleGl0b3NhbWVudGUnOwokbGFuZ1sncHJvZmlsZXMnXSA9ICdQZXJmaWxlcyc7CiRsYW5nWydwcm9tcHRfbGlua2VyJ10gPSAnVMOtdHVsbyBkZSBsYSBww6FnaW5hJzsKJGxhbmdbJ3Byb21wdF9wcm9maWxlcyddID0gJ1BlcmZpbGVzJzsKJGxhbmdbJ3Byb21wdF9zZWxlY3RlZGFsaWFzJ10gPSAnQWxpYXMgZGUgbGEgcMOhZ2luYSBzZWxlY2Npb25hZGEnOwokbGFuZ1sncHJvbXB0X25hbWUnXSA9ICdOb21icmUnOwokbGFuZ1sncHJvbXB0X3RhcmdldCddID0gJ09iamV0aXZvJzsKJGxhbmdbJ3Byb21wdF9jbGFzcyddID0gJ0F0cmlidXRvIFwnY2xhc3NcJyc7CiRsYW5nWydwcm9tcHRfcmVsJ10gPSAnQXRyaWJ1dG8gXCdyZWxcJyc7CiRsYW5nWydwcm9tcHRfdGV4dHRvZGlzcGxheSddID0gJ1RleHRvIGEgbW9zdHJhcic7CiRsYW5nWydyZWxhdGl2ZV91cmxzJ10gPSAnVXNhciBVUkxzIHJlbGF0aXZhcyc7CiRsYW5nWydyZXNpemUnXSA9ICdDYW1iaWFyIHRhbWHDsW8nOwokbGFuZ1sncmVzaXplX25vJ10gPSAnTm8gcGVybWl0aXIgY2FtYmlvIGRlIHRhbWHDsW8nOwokbGFuZ1sncmVzaXplX3ZlcnRpY2FsJ10gPSAnUGVybWl0aXIgYWp1c3RlIHZlcnRpY2FsJzsKJGxhbmdbJ3Jlc2l6ZV9ib3RoJ10gPSAnUGVybWl0aXIgYWp1c3RlcyB2ZXJ0aWNhbCB5IGhvcml6b250YWwnOwokbGFuZ1snc2hvd19tZW51YmFyJ10gPSAnTW9zdHJhciBiYXJyYSBkZSBtZcOxdSc7CiRsYW5nWydzaG93X3N0YXR1c2JhciddID0gJ01vc3RyYXIgYmFycmEgZGUgZXN0YXR1cyc7CiRsYW5nWydzaG93X3Rvb2xiYXInXSA9ICdNb3N0cmFyIGJhcnJhIGRlIGhlcnJhbWllbnRhcyc7CiRsYW5nWydzdHlsZV9mb3JtYXRzJ10gPSAnRm9ybWF0b3MgZGUgZXN0aWxvcyc7CiRsYW5nWydzdHlsZV9mb3JtYXRzX2luZm8nXSA9ICdVbmEgcmVnbGEgcG9yIGzDrW5lYSwgZWplbXBsbzogPGNvZGU+PGVtPnRpdGxlOiBcJ1JlZCB0aXRsZVwnLCBibG9jazogXCdoMlwnLCBjbGFzc2VzOiBcJ3RleHQtcmVkXCc8L2VtPjwvY29kZT4nOwokbGFuZ1snc3VibWl0J10gPSAnRW52aWFyJzsKJGxhbmdbJ3RhYl9nZW5lcmFsX3RpdGxlJ10gPSAnR2VuZXJhbGlkYWRlcyc7CiRsYW5nWyd0YWJfYWR2YW5jZWRfdGl0bGUnXSA9ICdBdmFuemFkbyc7CiRsYW5nWyd0ZW1wbGF0ZSddID0gJ1BsYW50aWxsYSc7CiRsYW5nWyd0ZW1wbGF0ZXMnXSA9ICdQbGFudGlsbGFzJzsKJGxhbmdbJ3RpdGxlX2Ntc21zX2xpbmtlciddID0gJ0NyZWFyIGVubGFjZSBhIHDDoWdpbmEgZGUgY29udGVuaWRvJzsKJGxhbmdbJ3Rvb2xiYXInXSA9ICdCYXJyYSBkZSBoZXJyYW1pZW50YXMnOwokbGFuZ1sndG9vbGJhcjEnXSA9ICdCYXJyYSBkZSBoZXJyYW1pZW50YXMgLSAxZXJhIGzDrW5lYSc7CiRsYW5nWyd0b29sYmFyMiddID0gJ0JhcnJhIGRlIGhlcnJhbWllbnRhcyAtIDJkYSBsw61uZWEnOwokbGFuZ1sndG9vbHRpcF9zZWxlY3RlZGFsaWFzJ10gPSAnRXN0ZSBjYW1wbyBlcyBkZSBsZWN0dXJhIHVuaWNhbWVudGUnOwokbGFuZ1sndHlwZV9UaW55TUNFJ10gPSAnVGlueU1DRSc7CiRsYW5nWyd0eXBlX2pzJ10gPSAnSmF2YXNjcmlwdCc7CiRsYW5nWyd0eXBlX3VzZXJ0ZW1wbGF0ZSddID0gJ1BsYW50aWxsYSBkZSB1c3VhcmlvIFRpbnlNQ0UnOwokbGFuZ1sndXNlX2FkdmFuY2VkX21lbnUnXSA9ICdVc2FyIG1lbsO6IGF2YW56YWRvJzsKJGxhbmdbJ3VzZV9jdXN0b21fYmxvY2tfZm9ybWF0cyddID0gJ1VzYXIgbWVuw7ogZGVzcGxlZ2FibGUgZGUgZm9ybWF0b3MgcGVyc29uYWxpemFkb3MnOwokbGFuZ1sndXNlcmdyb3VwcyddID0gJ0dydXBvcyBkZSB1c3Vhcmlvcyc7CiRsYW5nWydoZWxwJ10gPSAnPGgzPsK/UXVlIGhhY2UgZXN0bz88L2gzPg0KCTxwPlBlcm1pdGUgcXVlIFRpbnlNQ0Ugc2UgdXRpbGljZSBjb21vIGVkaXRvciBXWVNJV1lHLjwvcD4NCgk8aDM+wr9Db21vIGxvIHVzbz88L2gzPg0KCTxwPkluc3RhbGUgZWwgbcOzZHVsbywgbHVlZ28gdmF5YSBhIHByZWZlcmVuY2lhcyBkZSB1c3VhcmlvIHkgc2VsZWNjaW9uZSBUaW55TUNFIGNvbW8gZWRpdG9yIHd5c2l3eWc8L3A+DQo8aDM+Q29ycmVjdG9yIE9ydG9ncsOhZmljbzwvaDM+DQogIDxwPkEgcGFydGlyIGRlIGxhIHZlcnNpw7NuIDIuNi4wLCBUaW55TUNFIGluY2x1eWUgdW4gY29ycmVjdG9yIG9ydG9ncsOhZmljbyBlbiBsw61uZWEuIFRlbmdhIGVuIGN1ZW50YSBxdWUgU1NMIGRlYmUgZXN0YXIgYWN0aXZhZG8gZW4gbGEgY29uZmlndXJhY2nDs24gZGUgc3Ugc2Vydmlkb3IgcGFyYSBxdWUgZXN0byBmdW5jaW9uZS4gRW4gYWxndW5hcyBjb25maWd1cmFjaW9uZXMgZXN0YSBvcGNpw7NuIHNlIGxsYW1hIHBocF9vcGVuc3NsLCBwZXJvIHB1ZWRlIHZhcmlhci48L3A+DQoJPGgzPlNvbHVjacOzbiBkZSBwcm9ibGVtYXM8L2gzPg0KCUFsZ3VuYXMgcGVyc29uYXMgaGFuIHRlbmlkbyBlbCBwcm9ibGVtYSBkZSBxdWUgdGlueSBubyBzZSBoYSBtb3N0cmFkbyB0cmFzIHVuYSBpbnN0YWxhY2nDs24gbyBhY3R1YWxpemFjacOzbi4gQXF1w60gdGllbmUgdW5hIGxpc3RhIGRlIGFjY2lvbmVzIHF1ZSBwdWVkZSBpbnRlbnRhciBhbnRlcyBkZSBjb250YWN0YXIgY29ubWlnby4NCgk8YnIvPg0KCTx1bD4NCgk8bGk+MS4gUG9yIGZhdm9yLCBwb3IgZmF2b3IsIHBydWViZSBhIHN1YmlyIGRlIG51ZXZvIGVsIGRpcmVjdG9yaW8gbW9kdWxlcy9UaW55TUNFIGFsIHNlcnZpZG9yLiBMZSBzb3JwcmVuZGVyw61hIHNhYmVyIGN1w6FudGFzIHZlY2VzIGVzdG8gaGEgc29sdWNpb25hZG8gZWwgcHJvYmxlbWEuPC9saT4JDQoJPGxpPjIuIFNpIGhhIGFjdHVhbGl6YWRvLCBwcnVlYmUgYSByZXN0YXVyYXIgYSBsYXMgY29uZmlndXJhY2lvbmVzIHBvciBkZWZlY3RvLiBTw6kgcXVlIG5vIGVzIGFncmFkYWJsZSBzaSBoYSByZWFsaXphZG8gbXVjaG9zIGFqdXN0ZXMsIHBlcm8gaGFuIGNhbWJpYWRvIG11Y2hhcyBjb3NhcyBkZSBsYSBzZXJpZSAyLjMueCBhIGxhIDIuNC54Lg0KCTxsaT4zLiBQcnVlYmUgYSBoYWJpbGl0YXIgbGEgb3BjacOzbiBkZSBjb25maWd1cmFjacOzbiBlc3TDoXRpY2EgZW4gbGEgcGVzdGHDsWEgZGUgY29uZmlndXJhY2lvbmVzIGF2YW56YWRhcy4gRXN0byBmdW5jaW9uYSBtZWpvciBlbiBhbGd1bm9zIHNpc3RlbWFzIChjb21vIGxvcyBiYXNhZG9zIGVuIENHSSkuIFRlbmdhIGVuIGN1ZW50YSBxdWUgcmVxdWllcmUgcXVlIGVsIGRpcmVjdG9yaW8gL3RtcCB0ZW5nYSBwZXJtaXNvcyBkZSBlc2NyaXR1cmEgcGFyYSBlbCBzZXJ2aWRvciB3ZWINCgk8L3VsPg0KCTxici8+DQogIDxoMz5EZXNhcnJvbGxvIGRlIHBsdWdpbjwvaDM+DQo8cD5EZXNkZSBsYSB2ZXJzacOzbiAyLjcuMCBlbCBtw7NkdWxvIFRpbnlNQ0UgdGllbmUgbGEgaGFiaWxpZGFkIGRlIHBlcm1pdGlyIHF1ZSBvdHJvcyBtw7NkdWxvIHJlZ2lzdHJlbiBleHRlbnNpb25lcyBwYXJhIMOpbC4gUG9kcsOtYSBzZXIgdW4gaWNvbm8gcGVyc29uYWxpemFkbyBxdWUgbGUgcGVybWl0aWVyYSBpbnNlcnRhciBjb250ZW5pZG8gZGVzZGUgb3Ryb3MgbcOzZHVsb3MgY29tbyBHYWxsZXJ5LCBldGMuIExhIGZvcm1hIGRlIGhhY2VybG8gcmVxdWllcmUgY29ub2NpbWllbnRvcyB0w6ljbmljb3MsIHBlcm8gc2kgZXMgdW4gZGVzYXJyb2xsYWRvciBkZSBtw7NkdWxvcyB5IGVzdMOhIGludGVyZXNhZG8sIG1pcmUgZWwgZGlyZWN0b3JpbyBUaW55TUNFL2RvY3MgcGFyYSBvYnRlbmVyIG3DoXMgaW5mb3JtYWNpw7NuLg0KPC9wPic7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/et_EE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1RpbnlNQ0UgV1lTSVdZRyc7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vb2R1bCBlZW1hbGRhdHVkLic7CiRsYW5nWydpbnN0YWxsZWQnXSA9ICdNb29kdWwgdmVyc2lvb25pZ2EgJXMgcGFpZ2FsZGF0dWQuJzsKJGxhbmdbJ3N0cmlwYmFja2dyb3VuZHRhZ3MnXSA9ICdFZW1hbGRhIHRhdXN0YSB0YWhpc2VkIENTUy1pc3QnOwokbGFuZ1snc3RpcHRhZ3NfaGVscCddID0gJ1NlZSB2YWxpayBwcm9vdmliIGVlbWFsZGFkYSB0YXVzdGEgdCZ1dW1sOyZ1dW1sO3BpIHNlYWRlaWQgc3RpaWxpbGVoZWx0Lic7CiRsYW5nWydzb3VyY2VfZm9ybWF0dGluZ190ZXh0J10gPSAnUmFrZW5kYSBsJmF1bWw7aHRla29vZGkgZm9ybWF0ZWVyaW1pc3QgdiZhdW1sO2xqdW5kIEhUTUwtaWxlJzsKJGxhbmdbJ2Ryb3Bkb3duYmxvY2tmb3JtYXRzX3RleHQnXSA9ICdQbG9raWZvcm1hYWRpZCByaXBwbWVuJnV1bWw7JnV1bWw7c3QnOwokbGFuZ1snYWxsb3d0YWJsZXMnXSA9ICdMdWJhIHRhYmVsaSBvcGVyYXRzaW9vbmlkJzsKJGxhbmdbJ25ld2xpbmVzdHlsZV90ZXh0J10gPSAnVXVlIHJlYSBzdGlpbCc7CiRsYW5nWydwc3R5bGUnXSA9ICc8cD4tc3RpaWwnOwokbGFuZ1snYnJzdHlsZSddID0gJzxici8+LXN0aWlsJzsKJGxhbmdbJ3VzZWNvbXByZXNzaW9udGV4dCddID0gJ0thc3V0YSBneiBrb21wcmVzc2lvb25pJzsKJGxhbmdbJ3VzZWNvbXByZXNzaW9uaGVscCddID0gJ1NlZSB2Jm90aWxkZTtpYiBraWlyZW5kYWRhIFRpbnlNQ0UgbGFhZGltaXN0LCBhZ2EgdiZvdGlsZGU7aWIga2EgdiZhdW1sO2x0aWRhIGxhYWRpbWFzdCBtJm90aWxkZTtuZSBzJnV1bWw7c3RlZW1pIHBlYWwuIEthc3V0YSBldHRldmFhdGxpa3VsdC4nOwokbGFuZ1snZm9yY2Vkcm9vdGJsb2NrdGV4dCddID0gJ1N1bm5pIDxwPiBqdXVycGxva2tpJzsKJGxhbmdbJ2ZvcmNlZHJvb3RibG9ja2hlbHAnXSA9ICdTdW5uaWIgdGFnYXN0YXR1ZCBzaXN1bCBvbGVtYSBzdWxldHVkIHYmYXVtbDtoZW1hbHQgPHA+LXQmYXVtbDtoaXN0ZWdhJzsKJGxhbmdbJ2ZpbGVwaWNrZXJzdHlsZSddID0gJ0ZpbGVwaWNrZXIgc3R5bGUnOwokbGFuZ1snZmlsZXBpY2tlcnNpemUnXSA9ICdGaWxlcGlja2VyIHNpemUnOwokbGFuZ1snYWxsb3d1cGxvYWR0ZXh0J10gPSAnQWxsb3cgdXBsb2FkIGFuZCBjcmVhdGluZyBkaXJzIGluIEZpbGVQaWNrZXInOwokbGFuZ1snYWxsb3dzY2FsaW5ndGV4dCddID0gJ0FsbG93IG9uLXRoZS1mbHkgcmVzaXppbmcgb2YgdXBsb2FkZWQgaW1hZ2VzJzsKJGxhbmdbJ3NjYWxpbmdkaW1lbnNpb25zdGV4dCddID0gJ0RlZmF1bHQgZGltZW5zaW9ucyc7CiRsYW5nWydyZXNpemV0byddID0gJ1Jlc2l6ZSB0bzonOwokbGFuZ1sndXNlYWR2YW5jZWRwcm9maWxlJ10gPSAnVXNlIGFkdmFuY2VkIFRpbnlNQ0UtcHJvZmlsZSc7CiRsYW5nWydzYXZlcHJvZmlsZSddID0gJ1NhdmUgcHJvZmlsZSc7CiRsYW5nWydwcm9maWxlc2F2ZWQnXSA9ICdUaGUgcHJvZmlsZSB3YXMgc2F2ZWQnOwokbGFuZ1sncHJvZmlsZXNfdGFiJ10gPSAnUHJvZmlsZXMnOwokbGFuZ1snYWR2YW5jZWRfYmFja2VuZF90b29sYmFycyddID0gJ0FkdmFuY2VkIGJhY2tlbmQgcHJvZmlsZSBzZXR0aW5ncyc7CiRsYW5nWydzYXZlc3R5bGVzJ10gPSAnU2F2ZSBzdHlsZXMnOwokbGFuZ1snYWxsb3dhZHZhbmNlZHByb2ZpbGUnXSA9ICdBbGxvdyB1c2FnZSBvZiBhZHZhbmNlZCBwcm9maWxlIGluIFRpbnlNQ0UnOwokbGFuZ1snc2hvd2ZpbGVtYW5hZ2VtZW50J10gPSAnU2hvdyBmaWxlbWFuYWdlbWVudCBvcHRpb25zJzsKJGxhbmdbJ3Nob3dmaWxlbWFuYWdlbWVudGhlbHAnXSA9ICdTaG93IGZpbGVtYW5hZ2VtZW50IGluIG9wdGlvbnMgbGlrZSB1cGxvYWQsIG1ha2UgZGlyIGFuZCBmaWxlIGRlbGV0aW9uIGluIEZpbGVQaWNrZXIsIGlmIHRoZSB1c2VyIGlzIGFsbG93ZWQgdG8gcGVyZm9ybSB0aGVzZS4nOwokbGFuZ1snZGVsZXRlY29uZmlybWF0aW9uJ10gPSAnQXJlIHlvdSBzdXJlIHRoaXMgZmlsZSBzaG91bGQgYmUgZGVsZXRlZD8nOwokbGFuZ1snZGVsZXRlZmlsZXN1Y2Nlc3MnXSA9ICd3YXMgc3VjY2Vzc2Z1bGx5IGRlbGV0ZWQnOwokbGFuZ1snZGVsZXRlZmlsZWZpbGEnXSA9ICdjb3VsZCBub3QgYmUgZGVsZXRlZCc7CiRsYW5nWydjYW5ub3RyZWFkY29uZmlnJ10gPSAnQ2Fubm90IHJlYWQgdGhlIGZpbGUgdGlueWNvbmZpZy5waHAgZGlyZWN0bHkgc28gVGlueU1DRSB3aWxsIHByb2JhYmx5IG5vdCB3b3JrLiBZb3Ugc2hvdWxkIGNoZWNrIHRoZSBwZXJtaXNzaW9ucyBvZiB0aGUgZmlsZSBhbmQgb2YgdGhlIHBhcmVudCBkaXJzLCB3aGljaCBzaG91bGQgYmUgcmVhZGFibGUgZm9yIGFsbCBidXQgb25seSB3cml0YWJsZSBmb3Igb3duZXIuJzsKJGxhbmdbJ2ZpbGVuYW1lb25seSddID0gJ1Nob3cgZmlsZW5hbWVzJzsKJGxhbmdbJ3RodW1ibmFpbHNvbmx5J10gPSAnU2hvdyB0aHVtYm5haWxzJzsKJGxhbmdbJ3Nob3d0aHVtYm5haWxmaWxlc3RleHQnXSA9ICdTaG93IHRodW1ibmFpbC1maWxlcyBpbiBsaXN0cyc7CiRsYW5nWydmaWxlbmFtZWFuZHRodW1ibmFpbHMnXSA9ICdTaG93IGJvdGggZmlsZW5hbWVzIGFuZCB0aHVtYm5haWxzJzsKJGxhbmdbJ3NraW5zdGV4dCddID0gJ1NraW4nOwokbGFuZ1snc2tpbnZhcmlhdGlvbnRleHQnXSA9ICdTa2luIHZhcmlhdGlvbic7CiRsYW5nWydhZHZhbmNlZHdhcm5pbmcnXSA9ICc8c3Ryb25nPlBsZWFzZSBub3RlITxici8+Q2hhbmdpbmcgdGhlc2Ugc2V0dGluZ3MgY2FuIGNhdXNlIFRpbnlNQ0UgdG8gc3RvcCB3b3JraW5nIG9yIHRoZSBnZW5lcmF0ZWQgY29kZSB0byBiZSB3cm9uZyBpbiBzb21lIHdheS4gT25seSBlZGl0IHRoaXMgaWYgeW91IGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nISBQbGVhc2UgY29uc3VsdCB0aGUgVGlueU1DRSB3ZWJzaXRlIGJlZm9yZSBwbGF5aW5nIHdpdGggdGhpcy48L3N0cm9uZz4nOwokbGFuZ1snZW50aXR5ZW5jb2RpbmdfdGV4dCddID0gJ0VuY29kaW5nIG9mIGVudGl0aWVzJzsKJGxhbmdbJ3Jhd2VuY29kaW5nJ10gPSAnUmF3IGVuY29kaW5nIChmYXN0ZXN0LCB3b3JrcyBpbiBtb3N0IGNhc2VzKSc7CiRsYW5nWyduYW1lZGVuY29kaW5nJ10gPSAnTmFtZWQgZW5jb2RpbmcgKGxpa2UgJm5ic3A7KSc7CiRsYW5nWydudW1lcmljZW5jb2RpbmcnXSA9ICdOdW1lcmljIGVuY29kaW5nIChsaWtlICZhbXA7IzE2MDspJzsKJGxhbmdbJ3Nob3dfcGF0aF90ZXh0J10gPSAnU2hvdyB0aGUgcGF0aCBvZiB0aGUgZWxlbWVudCBhdCB0aGUgYm90dG9tIG9mIHRoZSBlZGl0b3InOwokbGFuZ1sndG9vbGJhcl90YWInXSA9ICdUb29sYmFyJzsKJGxhbmdbJ3Rvb2xiYXJfaGVscCddID0gJ1RoZXNlIG9wdGlvbnMgc2hvdWxkIGNvbnRhaW4gYSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBidXR0b24vY29udHJvbCBuYW1lcyB0byBpbnNlcnQgaW50byB0aGUgdG9vbGJhci4gVGhlIGNoYXIgfCBjYW4gYmUgdXNlZCBpbnN0ZWFkIG9mIHRoZSB3b3JkICYjMDM5O3NlcGFyYXRvciYjMDM5Oyc7CiRsYW5nWyd0b29sYmFyX3RleHQnXSA9ICdUb29sYmFyJzsKJGxhbmdbJ3Rvb2xiYXJoZWxwdGV4dCddID0gJ0NsaWNrIGhlcmUgdG8gdmlldyB0b29sYmFyLWluc3RydWN0aW9ucyBpbiBUaW55TUNFLXdpa2kuJzsKJGxhbmdbJ2VkaXRvcl93aWR0aF90ZXh0J10gPSAnV2lkdGggb2YgZWRpdG9yIGZpZWxkJzsKJGxhbmdbJ2VkaXRvcl9oZWlnaHRfdGV4dCddID0gJ0hlaWdodCBvZiBlZGl0b3IgZmllbGQnOwokbGFuZ1snYXV0byddID0gJ0F1dG8nOwokbGFuZ1snb3InXSA9ICdvcic7CiRsYW5nWydkYXRldGltZWZvcm1hdF90ZXh0J10gPSAnRGF0ZS9UaW1lIGZvcm1hdCc7CiRsYW5nWyd0aW1ldGV4dCddID0gJ1RpbWUnOwokbGFuZ1snZGF0ZXRleHQnXSA9ICdEYXRlJzsKJGxhbmdbJ2RhdGV0aW1lZm9ybWF0X2hlbHAnXSA9ICdDbGljayBoZXJlIGZvciBoZWxwIG9uIGhvdyB0byBmb3JtYXQgdGhlIGRhdGUvdGltZSc7CiRsYW5nWydleHRyYWNvbmZpZ3RleHQnXSA9ICdFeHRyYSBjb25maWd1cmF0aW9uJzsKJGxhbmdbJ2V4dHJhY29uZmlnaGVscCddID0gJ09uZSBzdGF0ZW1lbnQgcGVyIGxpbmUsIG5vIGNvbW1hcywgcGxlYXNlLiBDaGVjayBUaW55TUNFLXdpa2kgZm9yIGluc3RydWN0aW9ucy4nOwokbGFuZ1snY3VzdG9tZHJvcGRvd250ZXh0J10gPSAnQ3VzdG9tIGRyb3Bkb3duJzsKJGxhbmdbJ2N1c3RvbWRyb3Bkb3duaGVscCddID0gJ0luc2VydHMgY3VzdG9taXphYmxlIHNuaXBwZXRzIG9mIGNvZGUvdGV4dCBieSBzZWxlY3Rpb24gaW4gYSBkcm9wZG93biBtZW51LiAKT2J2aW91cyB1c2VzIGFyZSBlYXN5IGFjY2VzcyB0byB0YWcmIzAzOTtzIGV0Yy4gVGhlIG1lbnUgaXMgaW5zZXJ0ZWQgaW50byB0b29sYmFyIHVzaW5nICYjMDM5O2N1c3RvbWRyb3Bkb3duJiMwMzk7Lic7CiRsYW5nWydzdGFydGVuYWJsZWR0ZXh0J10gPSAnU3RhcnR1cCBlbmFibGVkJzsKJGxhbmdbJ3N0YXJ0ZW5hYmxlZGhlbHAnXSA9ICdVbmNoZWNraW5nIHRoaXMgc3RhcnRzIHVwIFRpbnktZWRpdG9ycyBpbiBhIGRpc2FibGVkIHN0YXRlLiBTaG91bGQgYmUgdXNlZCB0b2dldGhlciB3aXRoIHRoZSB0b2dnbGUgYnV0dG9uLic7CiRsYW5nWydsb2FkY21zbGlua2VydGV4dCddID0gJ0xvYWQgdGhlIENNUy1saW5rZXInOwokbGFuZ1snbG9hZGNtc2xpbmtlcmhlbHAnXSA9ICdUaGlzIGdlbmVyYXRlcyB0aGUgamF2YXNjcmlwdC1jb2RlIG5lZWRlZCB0byBhbGxvdyAmIzAzOTtjbXNsaW5rZXImIzAzOTsgdG8gYmUgYWRkZWQgdG8gYSB0b29sYmFyLic7CiRsYW5nWydjbXNsaW5rZXJzdHlsZXRleHQnXSA9ICdDTVMtbGlua2VyIGxpbmstc3R5bGUnOwokbGFuZ1snY21zc2VsZmxpbmtzdHlsZSddID0gJ3tjbXNfc2VsZmxpbmt9LXN0eWxlJzsKJGxhbmdbJ2FocmVmc3R5bGUnXSA9ICc8YSBocmVmPi1zdHlsZSc7CiRsYW5nWydyZWxhdGl2ZXVybHN0ZXh0J10gPSAnR2VuZXJhdGUgcmVsYXRpdmUgdXJscyc7CiRsYW5nWydmb3JjZWNsZWFucGFzdGV0ZXh0J10gPSAnRm9yY2UgY2xlYW4gb24gcGFzdGUnOwokbGFuZ1snZm9yY2VjbGVhbnBhc3RlaGVscCddID0gJ1RoaXMgc2hvdWxkIGJlIGVuYWJsZWQgdG8gcmVtb3ZlIHN0cmFuZ2UgZm9ybWF0dGluZyBjb2RlcyB3aGVuIHBhc3RpbmcgZnJvbSBXb3JkIGV0Yy4nOwokbGFuZ1snYm9keWNzc190ZXh0J10gPSAnQm9keSB0YWcgQ1NTJzsKJGxhbmdbJ2JvZHljc3NfaGVscCddID0gJ1dpbGwgYmUgYWRkZWQgdG8gdGhlIGNzcyBib2R5LWRlZmluaXRpb24uIEhpbnQ6IEJhY2tncm91bmQtY29sb3IgY2FuIGJlIHNldCB0byB3aGl0ZSB1c2luZyAmcXVvdDtiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZSZxdW90Oyc7CiRsYW5nWydpbmNsdWRlb25seXNjcmVlbmNzc190ZXh0J10gPSAnSW5jbHVkZSBvbmx5IHNjcmVlbiBDU1MnOwokbGFuZ1snaW5jbHVkZW9ubHlzY3JlZW5jc3NfaGVscCddID0gJ1NlbGVjdGluZyB0aGlzIGFsbG93cyBvbmx5IGF0dGFjaGVkIHN0eWxlc2hlZXRzIHdpdGggdGhlIHNjcmVlbi1tZWRpYXR5cGUgc2VsZWN0ZWQgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHN0eWxlcyBUaW55TUNFIGhhbmRsZXMuJzsKJGxhbmdbJ3VzZXN0YXRpY2NvbmZpZ3RleHQnXSA9ICdVc2Ugc3RhdGljIGNvbmZpZyBmaWxlJzsKJGxhbmdbJ3VzZXN0YXRpY2NvbmZpZ2hlbHAnXSA9ICdUaGlzIGNhbiBoZWxwIGdldHRpbmcgdGlueSB0byB3b3JrIG9uIHN5c3RlbXMgd2hlcmUgdGhlIGhvc3RpbmcgZmFjaWxpdHkgYWRkcyBzdHVmZiBsaWtlIHN0YXRpc3RpY3MgZXRjLiB0byBhbGwgb3V0cHV0LCBicmVha2luZyBkeW5hbWljYWxseSBjcmVhdGVkIGphdmFzY3JpcHQgY29uZmlnIGZpbGUnOwokbGFuZ1sndXNlc3RhdGljY29uZmlnd2FybmluZyddID0gJ1dhcm5pbmchIFlvdSBoYXZlIHRoZSBzdGF0aWMgY29uZmlnLWZpbGUgb3B0aW9uIGVuYWJsZWQgYnV0IHlvdXIgL3RtcC8gZGlyIGlzIG5vdCB3cml0YWJsZS4gVGhpcyB3aWxsIHByZXZlbnQgdGhlIG1vZHVsZSBmcm9tIHNhdmluZyB0aGUgc3RhdGljIGNvbmZpZy1maWxlIGFuZCB3aWxsIG1vc3QgcHJvYmFibHkgcmVuZGVyIFRpbnlNQ0UgaW5vcGVyYXRpb25hbC4nOwokbGFuZ1snc2hvd3RvZ2dsZWJ1dHRvbl90ZXh0J10gPSAnU2hvdyBjaGVja2JveCB0byB0dXJuIHd5c2l3eWcgb24vb2ZmJzsKJGxhbmdbJ3RvZ2dsZXd5c2l3eWcnXSA9ICdUdXJuIFdZU0lXWUcgb24vb2ZmJzsKJGxhbmdbJ3N0eWxlc190YWInXSA9ICdDU1MgU3R5bGVzJzsKJGxhbmdbJ3N0eWxlc19oZWxwJ10gPSAnICBJZiB5b3UgbGVhdmUgdGhlIGZpZWxkIGVtcHR5LCBUaW55TUNFIHdpbGwgcGFyc2UgeW91ciBDU1MgZmlsZSBhbmQgbGlzdCB0aGUgY2xhc3Mgc3R5bGVzIGNvbnRhaW5lZCBpbiBpdCB0byB0aGUgdXNlci4gCiAgSWYgeW91IHdhbnQgb25seSBzb21lIHN0eWxlcyBwcmVzZW50ZWQgdG8gdGhlIHVzZXIsIHNwZWNpZnkgdGhlbSBpbiB0aGUgZm9ybSAmcXVvdDtDdXN0b21OYW1lMT1zdHlsZTE7IEN1c3RvbU5hbWUyPXN0eWxlMiZxdW90OywgCiAgJnF1b3Q7c3R5bGUxJnF1b3Q7IGJlaW5nIGEgY2xhc3MgY2FsbCBpbiB5b3VyIHN0eWxlc2hlZXQgYW5kIHlvdSBkb24mIzAzOTt0IHB1dCB0aGUgLiAKICBub3JtYWxseSB1c2VkIGZvciBjbGFzcyBjYWxscyBhcyBpdCBpcyBhbHJlYWR5IGluIHlvdXIgQ1NTLCBpdCB3aWxsIGxvb2sgbGlrZSB0aGlzIDxzcGFuIGNsYXNzPSZxdW90O3N0eWxlMSZxdW90Oz50ZXh0PC9zcGFuPiwgCiAgaW4gdGhlIGZpcnN0IGZpZWxkIGJlbG93LiAKJzsKJGxhbmdbJ2Nzc19zdHlsZXNfdGV4dCddID0gJ1N0eWxlcyc7CiRsYW5nWydhY2Nlc3NkZW5pZWQnXSA9ICdBY2Nlc3MgRGVuaWVkLiBQbGVhc2UgY2hlY2sgeW91ciBwZXJtaXNzaW9ucy4nOwokbGFuZ1snZXJyb3InXSA9ICdFcnJvciEnOwokbGFuZ1snc3VibWl0J10gPSAnU3VibWl0JzsKJGxhbmdbJ3VwZGF0ZSddID0gJ1VwZGF0ZSc7CiRsYW5nWydzYXZlc2V0dGluZ3MnXSA9ICdTYXZlIHNldHRpbmdzJzsKJGxhbmdbJ3NldHRpbmdzJ10gPSAnU2V0dGluZ3MnOwokbGFuZ1snc2V0dGluZ3NzYXZlZCddID0gJ1NldHRpbmdzIHdhcyBzYXZlZCc7CiRsYW5nWydzYXZlYWR2YW5jZWQnXSA9ICdTYXZlIGFkdmFuY2VkIHNldHRpbmdzJzsKJGxhbmdbJ2FkdmFuY2Vkc2F2ZWQnXSA9ICdBZHZhbmNlZCBzZXR0aW5ncyBzYXZlZCc7CiRsYW5nWyd0b29sYmFyc2F2ZWQnXSA9ICdUb29sYmFyIHdhcyBzYXZlZCc7CiRsYW5nWydzdHlsZXNzYXZlZCddID0gJ1N0eWxlcyB3YXMgc2F2ZWQnOwokbGFuZ1sndGVzdGFyZWF0ZXh0J10gPSAnPHA+VGVzdCBhcmVhLCBubyBjb250ZW50IHdpbGwgYmUgaGFybWVkIHBsYXlpbmcgd2l0aCB0aGlzLi4uPC9wPic7CiRsYW5nWydyZXNldCddID0gJ1Jlc2V0IGRlZmF1bHRzJzsKJGxhbmdbJ3Jlc2V0YWxsJ10gPSAnUmVzZXQgYWxsIHNldHRpbmdzIHRvIGRlZmF1bHRzJzsKJGxhbmdbJ2NvbmZpcm1yZXNldCddID0gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZXNldCB0aGVzZSBzZXR0aW5ncyB0byB0aGVpciBkZWZhdWx0cz8nOwokbGFuZ1snY29uZmlybXJlc2V0YWxsJ10gPSAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlc2V0IEFMTCBzZXR0aW5ncyB0byB0aGVpciBkZWZhdWx0cz8nOwokbGFuZ1snc2V0dGluZ3NyZXNldCddID0gJ1RoZXNlIHNldHRpbmdzIHdhcyByZXNldCB0byBkZWZhdWx0JzsKJGxhbmdbJ2FsbHNldHRpbmdzcmVzZXQnXSA9ICdBbGwgc2V0dGluZ3Mgd2VyZSByZXNldCB0byBkZWZhdWx0JzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnaGFzIGJlZW4gdXBncmFkZWQgdG8gdmVyc2lvbiAlcyc7CiRsYW5nWydjdXN0b21kcm9wZG93biddID0gJ0N1c3RvbSBkcm9wZG93bi1tZW51JzsKJGxhbmdbJ2Ntc21zbGlua2VyJ10gPSAnSW5zZXJ0IGxpbmsgdG8gY21zbXMtcGFnZSc7CiRsYW5nWydiYWNrZW5kX3Rvb2xiYXJzJ10gPSAnQmFja2VuZCBwcm9maWxlIHNldHRpbmdzJzsKJGxhbmdbJ2Zyb250ZW5kX3Rvb2xiYXJzJ10gPSAnRnJvbnRlbmQgcHJvZmlsZSBzZXR0aW5ncyc7CiRsYW5nWydwbHVnaW5zX3RhYiddID0gJ1BsdWdpbnMnOwokbGFuZ1sncGx1Z2luc19oZWxwJ10gPSAnQ2hvb3NlIHRoZSBwbHVnaW5zIHlvdSB3YW50IHRvIGFjdGl2YXRlLiBEb2N1bWVudGF0aW9uIGNhbiBiZSBmb3VuZCA8YSBocmVmPSIlcyIgdGFyZ2V0PSJfYmxhbmsiPmhlcmU8L2E+JzsKJGxhbmdbJ3BsdWdpbnNfdGV4dCddID0gJ1BsdWdpbnMnOwokbGFuZ1snc2F2ZXBsdWdpbnMnXSA9ICdTYXZlIHBsdWdpbnMnOwokbGFuZ1sncGx1Z2luc3NhdmVkJ10gPSAnUGx1Z2lucyBzYXZlZCc7CiRsYW5nWyd5b3VhcmVpbnRleHQnXSA9ICdZb3UgYXJlIGluJzsKJGxhbmdbJ2xvYWRzdHlsZXNoZWV0dGV4dCddID0gJ0xvYWQgc3R5bGVzaGVldCBmb3IgY29udGVudCAocmVjb21tZW5kZWQpJzsKJGxhbmdbJ2V4dHJhc3R5bGVzdGV4dCddID0gJ0FkZGl0aW9ucyB0byBzdHlsZXNoZWV0JzsKJGxhbmdbJ2V4dHJhc3R5bGVzaGVscCddID0gJ0NTUyBlbnRlcmVkIGhlcmUgd2lsbCBiZSBhZGRlZCB0byB0aGUgc3R5bGVzaGVldCByZWFkIGJ5IFRpbnlNQ0UgYWZ0ZXIgaXQgcmVjaWV2ZXMgdGhlIENNU21zIHN0eWxlcyc7CiRsYW5nWyd1cGxvYWRuZXdmaWxlJ10gPSAnTmV3IGZpbGUnOwokbGFuZ1sndXBsb2FkZmlsZSddID0gJ1VwbG9hZCc7CiRsYW5nWydjcmVhdGVuZXdkaXInXSA9ICdOZXcgZGlyJzsKJGxhbmdbJ2NyZWF0ZWRpciddID0gJ0NyZWF0ZSc7CiRsYW5nWydub2Rpcm5hbWUnXSA9ICdObyBkaXJuYW1lIHByb3ZpZGVkJzsKJGxhbmdbJ2RpcmV4aXN0cyddID0gJ0Rpcm5hbWUgYWxyZWFkeSBleGlzdHMnOwokbGFuZ1snbmV3ZGlyY3JlYXRlZCddID0gJ05ldyBkaXIgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQnOwokbGFuZ1snbmV3ZGlyZmFpbGVkJ10gPSAnQW4gZXJyb3Igb2NjdXJlZCB0cnlpbmcgdG8gY3JlYXRlIGRpcic7CiRsYW5nWydub2ZpbGUnXSA9ICdObyBmaWxlIHdhcyB1cGxvYWRlZCc7CiRsYW5nWydmaWxldG9vYmlnJ10gPSAnVXBsb2FkZWQgZmlsZSBpcyB0b28gYmlnJzsKJGxhbmdbJ3VwbG9hZGZhaWxlZCddID0gJ0Vycm9yIG1vdmluZyB1cGxvYWRlZCBmaWxlIGludG8gcGxhY2UnOwokbGFuZ1snZmlsZXVwbG9hZGVkJ10gPSAnRmlsZSBzdWNjZXNzZnVsbHkgdXBsb2FkZWQnOwokbGFuZ1snZmlsZXBpY2tlcnRpdGxlJ10gPSAnQ01TTWFkZVNpbXBsZSBGaWxlIFNlbGVjdGlvbic7CiRsYW5nWydzdWNjZXNzJ10gPSAnU3VjY2Vzcyc7CiRsYW5nWydmaWxlb3BlcmF0aW9ucyddID0gJ0ZpbGUgb3BlcmF0aW9ucyc7CiRsYW5nWyd0aG91c2FuZGRlbGltaXRlciddID0gJywnOwokbGFuZ1snc2l6ZSddID0gJ1NpemUnOwokbGFuZ1snZGltZW5zaW9ucyddID0gJ1d4SCc7CiRsYW5nWydhZHZhbmNlZF90YWInXSA9ICdBZHZhbmNlZCc7CiRsYW5nWydoZWxwJ10gPSAnCTxoMz5XaGF0IGRvZXMgdGhpcyBkbz88L2gzPgoJPHA+RW5hYmxlcyBhIFRpbnlNQ0UgdG8gYmUgdXNlZCBhcyBhIFdZU0lXWUcuPC9wPgoJPGgzPkhvdyBkbyBJIHVzZSBpdD88L2gzPgoJPHA+SW5zdGFsbCBpdCwgdGhlbiBnbyB0byBVc2VyIFByZWZlcmVuY2VzIGFuZCBTZXQgVGlueU1DRSB0byBiZSB5b3VyIHd5c2l3eWcgb2YgY2hvaWNlLjwvcD4KCTxoMz5Ucm91Ymxlc2hvb3Rpbmc8L2gzPgoJU29tZSBwZW9wbGUgaGF2ZSB0cm91YmxlIHdpdGggdGlueSBub3Qgc2hvd2luZyB1cCB1cG9uIGluc3RhbGxhdGlvbiBvciB1cGdyYWRpbmcuIEhlcmUgaXMgYSBjaGVja2xpc3Qgb2YgCgl0aGluZ3MgeW91IGNhbiB0cnkgYmVmb3JlIGNvbnRhY3RpbmcgbWUgZm9yIGZ1cnRoZXIgc3VwcG9ydC4KCTxici8+Cgk8dWw+Cgk8bGk+MS4gUGxlYXNlLCBwbGVhc2UsIHRyeSB0byByZXVwbG9hZCB0aGUgbW9kdWxlcy9UaW55TUNFIGRpciB0byB5b3VyIHNlcnZlci4gWW91JiMwMzk7ZCBiZSBhbWF6ZWQgaG93IG1hbnkgdGltZXMgdGhpcyBoYXMgaGVscGVkIHBlb3BsZS48L2xpPgoJPGxpPjIuIFRyeSB0byBzd2l0Y2ggb24gdGhlIFN0YXRpYyBDb25maWcgb3B0aW9uLiBOb3RlIHRoYXQgdGhpcyByZXF1aXJlcyB5b3VyIC90bXAvLWRpciB0byBiZSB3cml0YWJsZSBieSB0aGUgd2Vic2VydmVyPC9saT4KCTxsaT4zLiBJZiB1cGdyYWRpbmcsIHBsZWFzZSB0cnkgdG8gcmVzZXQgYWxsIHNldHRpbmdzLiBOb3QgbmljZSBpZiB5b3UmIzAzOTt2ZSBkb25lIGEgbG90IG9mIGN1c3RvbWl6YXRpb24sIEkga25vdywgYnV0IGEgbG90IG9mIHRoaW5ncyBjaGFuZ2VzIGZyb20gMi4zLnggdG8gMi40Lnggc2VyaWVzIG9mIHRoZSBtb2R1bGUuCgk8bGk+NC4gVHJ5IGVuYWJsaW5nIHRoZSBzdGF0aWMgY29uZmlnIG9wdGlvbiBpbiBhZHZhbmNlZCBzZXR0aW5ncy4gVGhpcyB3b3JrcyBiZXR0ZXIgb24gc29tZSBzeXN0ZW1zIChsaWtlIENHSS1iYXNlZCkKCTwvdWw+Cgk8YnIvPgoJCQonOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My4zMjE1NTQ1MjY2NzMyMDE5MDAwLjEyNDEwOTE3ODcuMTI1NDEyNTMzNC4xMjU0MTI4ODc1LjEzNyc7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjEyNTM4ODg2MzguMTMyLjI3LnV0bWNzcj1mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZ3x1dG1jY249KHJlZmVycmFsKXx1dG1jbWQ9cmVmZXJyYWx8dXRtY2N0PS9pbmRleC5waHAvdG9waWMsMzczNjAuMC5odG1sJzsKJGxhbmdbJ3FjYSddID0gJzEyNDA2ODM2MTUtNTg0MDk5NzMtNzk5MTUzMDMnOwokbGFuZ1sndXRtYyddID0gJzE1Njg2MTM1Myc7CiRsYW5nWyd1dG1iJ10gPSAnMTU2ODYxMzUzLjEuMTAuMTI1NDEyODg3NSc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/fa_FA.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1RpbnlNQ0UgV1lTSVdZRyc7CiRsYW5nWydhZG1pbmRlc2NyaXB0aW9uJ10gPSAnVGhpcyBtb2R1bGUgYWxsb3dzIG1haW5seSBjb250ZW50LCBidXQgcG9zc2libHkgYWxzbyBvdGhlciBraW5kcyBvZiBkYXRhLCB0byBiZSBlZGl0ZWQgdXNpbmcgYSBXWVNJV1lHIGVkaXRvciBwb3dlcmVkIGJ5IHRoZSBUaW55TUNFIHByb2plY3QuJzsKJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAn2K3YsNmBINmF2KfamNmI2YQnOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAn2YXYp9qY2YjZhCDZhti12Kgg2LTYryc7CiRsYW5nWydzdHJpcGJhY2tncm91bmR0YWdzJ10gPSAn2KrZh9uMINqp2LHYr9mGINiy2YXbjNmG2Ycg2KraryDZh9inINin2LIgQ1NTJzsKJGxhbmdbJ3N0aXB0YWdzX2hlbHAnXSA9ICfYp9uM2YYg2q/YstuM2YbZhyDYs9i524wg2YXbjCDaqdmG2K8g2KrZhti424zZhdin2Kog2YbZiNi5INiy2YXbjNmG2Ycg2LHYpyDYp9iyc3R5bGVzaGVldCDYrdiw2YEg2YbZhdin24zYryc7CiRsYW5nWydzb3VyY2VfZm9ybWF0dGluZ190ZXh0J10gPSAn2KfZgdiy2YjYr9mGINmB2LHZhdiqINin2LXZhNuMINio2YcgaHRtbCDYrtix2YjYrNuMJzsKJGxhbmdbJ2Ryb3Bkb3duYmxvY2tmb3JtYXRzX3RleHQnXSA9ICfZgdix2YXYqiDYqNmE2YjaqdmH2Kcg2K/YsSDZhdmG2YjbjCDaqdi02YjbjNuMJzsKJGxhbmdbJ2FsbG93dGFibGVzJ10gPSAn2LPYt9itINiv2LPYqtix2LPbjCDYqNix2KfbjCDYudmF2YTbjNin2Kog2YXYsdiq2KjYtyDYqNinINis2K/Yp9mI2YQnOwokbGFuZ1snbmV3bGluZXN0eWxlX3RleHQnXSA9ICfZgtin2YTYqCDYrti3INis2K/bjNivJzsKJGxhbmdbJ3BzdHlsZSddID0gJzxwPi1zdHlsZSc7CiRsYW5nWydicnN0eWxlJ10gPSAnPGJyLz4tc3R5bGUnOwokbGFuZ1sndXNlY29tcHJlc3Npb250ZXh0J10gPSAn2KfYs9iq2YHYp9iv2Ycg2KfYsiDZgdi02LHYr9mHINiz2KfYstuMIGd6JzsKJGxhbmdbJ3VzZWNvbXByZXNzaW9uaGVscCddID0gJ9in24zZhiDYudmF2YQg2YXbjCDYqtmI2KfZhtivINiz2LHYudiqINio2KfYsdqv2LDYp9ix24wgdGlueW1jZSDYsdinINin2YHYstin24zYtCDYr9mH2K8g2YjZhNuMINmF2YXaqdmGINin2LPYqiDYp9iyINio2KfYsdqv2LDYp9ix24wg2KLZhiDYr9ixINio2LHYrtuMINiz24zYs9iq2YUg2YfYpyDZhdmF2KfZhti52Kog2YbZhdin24zYry4g2KjZhtin2KjYsdin24zZhiDYqNinINin2K3YqtuM2KfYtyDYp9iyINii2YYg2KfYs9iq2YHYp9iv2Ycg2YbZhdin24zbjNivJzsKJGxhbmdbJ2ZvcmNlZHJvb3RibG9ja3RleHQnXSA9ICdGb3JjZSA8cD4gcm9vdGJsb2NrJzsKJGxhbmdbJ2ZvcmNlZHJvb3RibG9ja2hlbHAnXSA9ICdGb3JjZXMgdGhlIHJldHVybmVkIGNvbnRlbnQgdG8gYXQgbGVhc3QgYmUgZW5jbG9zZWQgaW4gYSA8cD4tdGFnJzsKJGxhbmdbJ2ZpbGVwaWNrZXJzdHlsZSddID0gJ0ZpbGVwaWNrZXIgc3R5bGUnOwokbGFuZ1snZmlsZXBpY2tlcnNpemUnXSA9ICdGaWxlcGlja2VyIHNpemUnOwokbGFuZ1snYWxsb3d1cGxvYWR0ZXh0J10gPSAnQWxsb3cgdXBsb2FkIGFuZCBjcmVhdGluZyBkaXJzIGluIEZpbGVQaWNrZXInOwokbGFuZ1snYWxsb3dzY2FsaW5ndGV4dCddID0gJ0FsbG93IG9uLXRoZS1mbHkgcmVzaXppbmcgb2YgdXBsb2FkZWQgaW1hZ2VzJzsKJGxhbmdbJ3NjYWxpbmdkaW1lbnNpb25zdGV4dCddID0gJ9in2KjYudin2K8g2b7bjNi0INmB2LHYtic7CiRsYW5nWydyZXNpemV0byddID0gJ9iq2LrbjNuM2LEg2LPYp9uM2LIg2KjZhyc7CiRsYW5nWydtYWtldGh1bWJuYWlsJ10gPSAnTWFrZSBhIHRodW1ibmFpbCB3aGVuIHVwbG9hZGluZyBpbWFnZXMnOwokbGFuZ1sndXNlYWR2YW5jZWRwcm9maWxlJ10gPSAn2KfYs9iq2YHYp9iv2Ycg2KfYsiDZvtix2YjZgdin24zZhCDZvtuM2LTYsdmB2KrZhyB0aW55bWNlJzsKJGxhbmdbJ3NhdmVwcm9maWxlJ10gPSAn2LDYrtuM2LHZhyDZvtix2YjZgdin24zZhCc7CiRsYW5nWydwcm9maWxlc2F2ZWQnXSA9ICfZvtix2YjZgdin24zZhCDYsNiu24zYsdmHINi02K8nOwokbGFuZ1sncHJvZmlsZXNfdGFiJ10gPSAn2b7YsdmI2YHYp9uM2YQg2YfYpyc7CiRsYW5nWydhZHZhbmNlZF9iYWNrZW5kX3Rvb2xiYXJzJ10gPSAn2KrZhti424zZhdin2Kog2b7bjNi02LHZgdiq2Ycg2b7YsdmI2YHYp9uM2YQnOwokbGFuZ1snc2F2ZXN0eWxlcyddID0gJ9iw2K7bjNix2Ycg2LPYqNqpJzsKJGxhbmdbJ2FsbG93YWR2YW5jZWRwcm9maWxlJ10gPSAn2KfYrNin2LLZhyDYp9iz2KrZgdin2K/ZhyDYp9iyINm+2LHZiNmB2KfbjNmEINm+24zYtNix2YHYqtmHINiv2LEgdGlueW1jZSc7CiRsYW5nWydzaG93ZmlsZW1hbmFnZW1lbnQnXSA9ICfYp9iz2KrZgdin2K/ZhyDYp9iyINqv2LLbjNmG2Ycg2YfYp9uMINmF2K/bjNix24zYqiDZgdin24zZhCc7CiRsYW5nWydzaG93ZmlsZW1hbmFnZW1lbnRoZWxwJ10gPSAnU2hvdyBmaWxlbWFuYWdlbWVudCBpbiBvcHRpb25zIGxpa2UgdXBsb2FkLCBtYWtlIGRpciBhbmQgZmlsZSBkZWxldGlvbiBpbiBGaWxlUGlja2VyLCBpZiB0aGUgdXNlciBpcyBhbGxvd2VkIHRvIHBlcmZvcm0gdGhlc2UuJzsKJGxhbmdbJ3Jlc3RyaWN0ZGlycyddID0gJ1Jlc3RyaWN0IHVzZXImIzAzOTtzIGRpciBhY2Nlc3MnOwokbGFuZ1sncmVzdHJpY3RkaXJzaGVscCddID0gJ1RoaXMgd2lsbCByZXN0cmljdCB0aGUgZmlsZW1hbmFnZW1lbnQtY2FwYWJpbGl0aWVzIG9mIHRoZSB1c2VyIHRvIGEgc3ViZGlyIHRvICYjMDM5O3VwbG9hZHMmIzAzOTsgd2hpY2ggaGF2ZSB0aGUgc2FtZSBuYW1lIGFzIHRoZSB1c2VyJiMwMzk7cyBsb2dpbi4gSWYgdGhlIHN1YmRpciBkb2VzIG5vdCBleGlzdCwgaXQgd2lsbCBwb3NzaWJseSBiZSBjcmVhdGVkLiBQbGVhc2Ugbm90ZSwgdGhpcyBjdXJyZW50bHkgb25seSB3b3JrcyB3aXRoIHRoZSBzdGFuZGFyZCBkaXJuYW1lcywgdXBsb2Fkcy9pbWFnZXMuIFRoaXMgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLic7CiRsYW5nWydkZWxldGVjb25maXJtYXRpb24nXSA9ICfYotuM2Kcg2YXYt9mF2KbZhtuM2K8g2YXbjCDYrtmI2KfZh9uM2K8g2KfbjNmGINmB2KfbjNmEINix2Kcg2K3YsNmBINmG2YXYp9uM24zYr9ifJzsKJGxhbmdbJ2RlbGV0ZWZpbGVzdWNjZXNzJ10gPSAn2K3YsNmBINio2Kcg2YXZiNmB2YLbjNiqINin2YbYrNin2YUg2LTYryc7CiRsYW5nWydkZWxldGVmaWxlZmFpbGVkJ10gPSAnY291bGQgbm90IGJlIGRlbGV0ZWQnOwokbGFuZ1snZGVsZXRlc3ViZGlyZmFpbGVkJ10gPSAnY291bGQgbm90IGJlIGRlbGV0ZWQnOwokbGFuZ1snZGVsZXRlc3ViZGlyc3VjY2VzcyddID0gJ3dhcyBzdWNjZXNzZnVsbHkgZGVsZXRlZCc7CiRsYW5nWydkZWxldGVkaXJjb25maXJtYXRpb24nXSA9ICdBcmUgeW91IHN1cmUgdGhpcyBlbXB0eSBzdWJkaXIgc2hvdWxkIGJlIGRlbGV0ZWQ/JzsKJGxhbmdbJ2RlbGV0ZWRpciddID0gJ0RlbGV0ZSBlbXB0eSBzdWJkaXInOwokbGFuZ1snZGVsZXRlZmlsZSddID0gJ0RlbGV0ZSBGaWxlJzsKJGxhbmdbJ2Nhbm5vdHJlYWRjb25maWcnXSA9ICdDYW5ub3QgcmVhZCB0aGUgZmlsZSB0aW55Y29uZmlnLnBocCBkaXJlY3RseSBzbyBUaW55TUNFIHdpbGwgcHJvYmFibHkgbm90IHdvcmsuIFlvdSBzaG91bGQgY2hlY2sgdGhlIHBlcm1pc3Npb25zIG9mIHRoZSBmaWxlIGFuZCBvZiB0aGUgcGFyZW50IGRpcnMsIHdoaWNoIHNob3VsZCBiZSByZWFkYWJsZSBmb3IgYWxsIGJ1dCBvbmx5IHdyaXRhYmxlIGZvciBvd25lci4nOwokbGFuZ1snZmlsZW5hbWVvbmx5J10gPSAn2YbZhdin24zYtCDZhtin2YUg2YHYp9uM2YQnOwokbGFuZ1sndGh1bWJuYWlsc29ubHknXSA9ICfZhtmF2KfbjNi0INio2Ycg2LXZiNix2KogdGh1bWJuYWlsJzsKJGxhbmdbJ3Nob3d0aHVtYm5haWxmaWxlc3RleHQnXSA9ICfZhtmF2KfbjNi0INmB2KfbjNmEINmH2KfbjHRodW1ibmFpbCDYr9ixINmE24zYs9iqJzsKJGxhbmdbJ2ZpbGVuYW1lYW5kdGh1bWJuYWlscyddID0gJ9mG2YXYp9uM2LQg2YHYp9uM2YQg2KjZhyDYtdmI2LHYqnRodW1ibmFpbCDYqNmHINmH2YXYsdin2Ycg2YbYp9mFINmB2KfbjNmEJzsKJGxhbmdbJ3NraW5zdGV4dCddID0gJ9m+2YjYs9iq2YcnOwokbGFuZ1snc2tpbnZhcmlhdGlvbnRleHQnXSA9ICfYqti624zbjNix2KfYqiDZvtmI2LPYqtmHJzsKJGxhbmdbJ2FkdmFuY2Vkd2FybmluZyddID0gJzxzdHJvbmc+UGxlYXNlIG5vdGUhPGJyLz5DaGFuZ2luZyB0aGVzZSBzZXR0aW5ncyBjYW4gY2F1c2UgVGlueU1DRSB0byBzdG9wIHdvcmtpbmcgb3IgdGhlIGdlbmVyYXRlZCBjb2RlIHRvIGJlIHdyb25nIGluIHNvbWUgd2F5LiBPbmx5IGVkaXQgdGhpcyBpZiB5b3Uga25vdyB3aGF0IHlvdSBhcmUgZG9pbmchIFBsZWFzZSBjb25zdWx0IHRoZSBUaW55TUNFIHdlYnNpdGUgYmVmb3JlIHBsYXlpbmcgd2l0aCB0aGlzLjwvc3Ryb25nPic7CiRsYW5nWydlbnRpdHllbmNvZGluZ190ZXh0J10gPSAn2LHZhdiy2qnYsdiv2YYg2YXZiNis2YjYr9uM2Kog2YfYpyc7CiRsYW5nWydyYXdlbmNvZGluZyddID0gJ9ix2YXYsiDaqdix2K/ZhiDYsdiv24zZgSc7CiRsYW5nWyduYW1lZGVuY29kaW5nJ10gPSAn2LHZhdiy2qnYsdiv2YYg2YbYp9mF2q/YsNin2LHbjCc7CiRsYW5nWydudW1lcmljZW5jb2RpbmcnXSA9ICfYsdmF2LIg2qnYsdiv2YYg2LnYr9iv24wnOwokbGFuZ1snc2hvd19wYXRoX3RleHQnXSA9ICfZhtmF2KfbjNi0INmF2LPbjNixINiv2LEg2KfZhtiq2YfYp9uMINmI24zYsdin24zYtNqv2LEnOwokbGFuZ1sndG9vbGJhcl90YWInXSA9ICfZhtmI2KfYsSDYp9uM2LLYp9ixJzsKJGxhbmdbJ3Rvb2xiYXJfaGVscCddID0gJ9in24zZhiDar9iy24zZhtmHINmH2Kcg2YXbjCDYqNin24zYs9iqINuM2qkg2qnYp9mF2Kcg2KjYudmG2YjYp9mGINis2K/Yp9qv2KfZhtmHINio2LHYp9uMINmI2LHZiNivINio2Ycg2YbZiNin2LEg2KfYqNiy2KfYsSDYr9in2LTYqtmHINio2KfYtNmG2K8nOwokbGFuZ1sndG9vbGJhcl90ZXh0J10gPSAn2YbZiNin2LEg2KfbjNiy2KfYsSc7CiRsYW5nWyd0b29sYmFyaGVscHRleHQnXSA9ICfYqNix2KfbjCDZhtmF2KfbjNi0INiv2LPYqtmI2LHYp9mE2LnZhdmEINmH2KfbjCB0aW55bWNl2KfbjNmG2KzYpyDaqdmE24zaqSDaqdmG24zYryc7CiRsYW5nWydlZGl0b3Jfd2lkdGhfdGV4dCddID0gJ9i52LHYtiDZgduM2YTYryDZiNuM2LHYp9uM2LTar9ixJzsKJGxhbmdbJ2VkaXRvcl9oZWlnaHRfdGV4dCddID0gJ0hlaWdodCBvZiBlZGl0b3IgZmllbGQnOwokbGFuZ1snYXV0byddID0gJ0F1dG8nOwokbGFuZ1snb3InXSA9ICdvcic7CiRsYW5nWyd0ZXN0YXJlYV90YWInXSA9ICdUZXN0aW5nIGFyZWEnOwokbGFuZ1snc2hvd3Rlc3RpbmdvdXRwdXQnXSA9ICdTaG93IHRlc3Rpbmcgb3V0cHV0JzsKJGxhbmdbJ3Rlc3RhcmVhZWRpdG9yJ10gPSAnVGVzdGluZyBhcmVhIGVkaXRvcic7CiRsYW5nWyd0ZXN0YXJlYW91dHB1dCddID0gJ1Rlc3RpbmcgYXJlYSBvdXRwdXQnOwokbGFuZ1sndGVzdGFyZWFvdXRwdXRzb3VyY2UnXSA9ICdUZXN0aW5nIGFyZWEgc291cmNlJzsKJGxhbmdbJ2FsbG93cmVzaXppbmcnXSA9ICdBbGxvdyBpbnBsYWNlIHJlc2l6aW5nIG9mIGVkaXRvciBmaWVsZCc7CiRsYW5nWydyZXNpemVub25lJ10gPSAnRG8gbm90IGFsbG93IHJlc2l6aW5nJzsKJGxhbmdbJ3Jlc2l6ZWJvdGgnXSA9ICdBbGxvdyByZXNpemluZyBpbiBib3RoIGRpcmVjdGlvbnMnOwokbGFuZ1sncmVzaXplaGVpZ2h0J10gPSAnQWxsb3cgcmVzaXppbmcgb2YgaGVpZ2h0IG9ubHknOwokbGFuZ1snZGF0ZXRpbWVmb3JtYXRfdGV4dCddID0gJ0RhdGUvVGltZSBmb3JtYXQnOwokbGFuZ1sndGltZXRleHQnXSA9ICdUaW1lJzsKJGxhbmdbJ2RhdGV0ZXh0J10gPSAnRGF0ZSc7CiRsYW5nWydkYXRldGltZWZvcm1hdF9oZWxwJ10gPSAnQ2xpY2sgaGVyZSBmb3IgaGVscCBvbiBob3cgdG8gZm9ybWF0IHRoZSBkYXRlL3RpbWUnOwokbGFuZ1snZXh0cmFjb25maWd0ZXh0J10gPSAnRXh0cmEgY29uZmlndXJhdGlvbic7CiRsYW5nWydleHRyYWNvbmZpZ2hlbHAyJ10gPSAnT25lIHN0YXRlbWVudCBwZXIgbGluZSwgY29tbWFzIHdpbGwgYmUgYWRkZWQgYmVmb3JlIGFuZCBhZnRlciB0aGlzIGNvbnRlbnQuIENoZWNrIFRpbnlNQ0Utd2lraSBmb3IgaW5zdHJ1Y3Rpb25zLic7CiRsYW5nWydjdXN0b21kcm9wZG93bnRleHQnXSA9ICdDdXN0b20gZHJvcGRvd24nOwokbGFuZ1snY3VzdG9tZHJvcGRvd25oZWxwJ10gPSAnSW5zZXJ0cyBjdXN0b21pemFibGUgc25pcHBldHMgb2YgY29kZS90ZXh0IGJ5IHNlbGVjdGlvbiBpbiBhIGRyb3Bkb3duIG1lbnUuIA0KT2J2aW91cyB1c2VzIGFyZSBlYXN5IGFjY2VzcyB0byB0YWcmIzAzOTtzIGV0Yy4gVGhlIG1lbnUgaXMgaW5zZXJ0ZWQgaW50byB0b29sYmFyIHVzaW5nICYjMDM5O2N1c3RvbWRyb3Bkb3duJiMwMzk7Lic7CiRsYW5nWydzdGFydGVuYWJsZWR0ZXh0J10gPSAnU3RhcnR1cCBlbmFibGVkJzsKJGxhbmdbJ3N0YXJ0ZW5hYmxlZGhlbHAnXSA9ICdVbmNoZWNraW5nIHRoaXMgc3RhcnRzIHVwIFRpbnktZWRpdG9ycyBpbiBhIGRpc2FibGVkIHN0YXRlLiBTaG91bGQgYmUgdXNlZCB0b2dldGhlciB3aXRoIHRoZSB0b2dnbGUgYnV0dG9uLic7CiRsYW5nWydsb2FkY21zbGlua2VydGV4dCddID0gJ0xvYWQgdGhlIENNUy1saW5rZXInOwokbGFuZ1snbG9hZGNtc2xpbmtlcmhlbHAnXSA9ICdUaGlzIGdlbmVyYXRlcyB0aGUgamF2YXNjcmlwdC1jb2RlIG5lZWRlZCB0byBhbGxvdyAmIzAzOTtjbXNsaW5rZXImIzAzOTsgdG8gYmUgYWRkZWQgdG8gYSB0b29sYmFyLic7CiRsYW5nWydjbXNsaW5rZXJzdHlsZXRleHQnXSA9ICdDTVMtbGlua2VyIGxpbmstc3R5bGUnOwokbGFuZ1snY21zc2VsZmxpbmtzdHlsZSddID0gJ3tjbXNfc2VsZmxpbmt9LXN0eWxlJzsKJGxhbmdbJ2FocmVmc3R5bGUnXSA9ICc8YSBocmVmPi1zdHlsZSc7CiRsYW5nWydjbXNsaW5rZXJhZGRzdGV4dCddID0gJ0NNUy1saW5rZXIgYWRkaXRpb25zJzsKJGxhbmdbJ2Ntc2xpbmtlcmFkZHNoZWxwJ10gPSAnVGhpcyBhbGxvd3MgeW91IHRvIGFkZCBzdHVmZiB0byBlaXRoZXIgdGhlIDxhIGhyZWY+LXRhZyBvciB7Y21zX3NlbGZsaW5rfSwgd2hlbiBnZW5lcmF0ZWQgYnkgQ01TLWxpbmtlci4nOwokbGFuZ1snYXZvaWRsaW5rY29udmVyc2lvbnRleHQnXSA9ICdBdm9pZCBsaW5rIGNvbnZlcnNpb24nOwokbGFuZ1snYXZvaWRsaW5rY29udmVyc2lvbmhlbHAnXSA9ICdUdXJucyBUaW55TUNFJiMwMzk7cyBidWlsdGluIGxpbmsgY29udmVyc2lvbiBsb2dpYyBvZmYuIE1ha2VzIHtzbWFydHl9LXVzYWdlIGluIHVybHMgcG9zc2libGUuJzsKJGxhbmdbJ3JlbGF0aXZldXJsc3RleHQnXSA9ICdHZW5lcmF0ZSByZWxhdGl2ZSB1cmxzJzsKJGxhbmdbJ2ZvcmNlY2xlYW5wYXN0ZXRleHQnXSA9ICdGb3JjZSBjbGVhbiBvbiBwYXN0ZSc7CiRsYW5nWydmb3JjZWNsZWFucGFzdGVoZWxwJ10gPSAnVGhpcyBzaG91bGQgYmUgZW5hYmxlZCB0byByZW1vdmUgc3RyYW5nZSBmb3JtYXR0aW5nIGNvZGVzIHdoZW4gcGFzdGluZyBmcm9tIFdvcmQgZXRjLic7CiRsYW5nWydib2R5Y3NzX3RleHQnXSA9ICdCb2R5IHRhZyBDU1MnOwokbGFuZ1snYm9keWNzc19oZWxwJ10gPSAnV2lsbCBiZSBhZGRlZCB0byB0aGUgY3NzIGJvZHktZGVmaW5pdGlvbi4gSGludDogQmFja2dyb3VuZC1jb2xvciBjYW4gYmUgc2V0IHRvIHdoaXRlIHVzaW5nICZxdW90O2JhY2tncm91bmQtY29sb3I6IHdoaXRlJnF1b3Q7JzsKJGxhbmdbJ2luY2x1ZGVvbmx5c2NyZWVuY3NzX3RleHQnXSA9ICdJbmNsdWRlIG9ubHkgc2NyZWVuIENTUyc7CiRsYW5nWydpbmNsdWRlb25seXNjcmVlbmNzc19oZWxwJ10gPSAnU2VsZWN0aW5nIHRoaXMgYWxsb3dzIG9ubHkgYXR0YWNoZWQgc3R5bGVzaGVldHMgd2l0aCB0aGUgc2NyZWVuLW1lZGlhdHlwZSBzZWxlY3RlZCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgc3R5bGVzIFRpbnlNQ0UgaGFuZGxlcy4nOwokbGFuZ1sndXNlc3RhdGljY29uZmlndGV4dCddID0gJ1VzZSBzdGF0aWMgY29uZmlnIGZpbGUnOwokbGFuZ1sndXNlc3RhdGljY29uZmlnaGVscCddID0gJ1RoaXMgY2FuIGhlbHAgZ2V0dGluZyB0aW55IHRvIHdvcmsgb24gc3lzdGVtcyB3aGVyZSB0aGUgaG9zdGluZyBmYWNpbGl0eSBhZGRzIHN0dWZmIGxpa2Ugc3RhdGlzdGljcyBldGMuIHRvIGFsbCBvdXRwdXQsIGJyZWFraW5nIGR5bmFtaWNhbGx5IGNyZWF0ZWQgamF2YXNjcmlwdCBjb25maWcgZmlsZSc7CiRsYW5nWyd1c2VzdGF0aWNjb25maWd3YXJuaW5nJ10gPSAnV2FybmluZyEgWW91IGhhdmUgdGhlIHN0YXRpYyBjb25maWctZmlsZSBvcHRpb24gZW5hYmxlZCBidXQgeW91ciAvdG1wLyBkaXIgaXMgbm90IHdyaXRhYmxlLiBUaGlzIHdpbGwgcHJldmVudCB0aGUgbW9kdWxlIGZyb20gc2F2aW5nIHRoZSBzdGF0aWMgY29uZmlnLWZpbGUgYW5kIHdpbGwgbW9zdCBwcm9iYWJseSByZW5kZXIgVGlueU1DRSBpbm9wZXJhdGlvbmFsLic7CiRsYW5nWydpZ25vcmVtb2RpZnlmaWxlc3RleHQnXSA9ICdJZ25vcmUgdGhlICYjMDM5O01vZGlmeSBGaWxlcyYjMDM5OyBwZXJtaXNzaW9uIGZvciBGaWxlUGlja2VyJzsKJGxhbmdbJ2lnbm9yZW1vZGlmeWZpbGVzaGVscCddID0gJ1dhcm5pbmchIFRoaXMgYWxsb3dzIHNvbWUgZmlsZS1hbHRlcmluZyBvcGVyYXRpb25zIGV2ZW4gaWYgdGhlICYjMDM5O01vZGlmeSBGaWxlcyYjMDM5OyBwZXJtaXNzaW9uIGlzIG5vdCBzZXQgZm9yIHRoZSBjdXJyZW50IHVzZXJncm91cC4gVGhpcyBjYW4gZWZmZWN0aXZlbHkgYmUgdXNlZCB0b2dldGhlciB3aXRoIHRoZSBvcHRpb24gdG8gcmVzdHJpY3QgdXNlciYjMDM5O3MgZGlyZWN0b3J5IGFjY2Vzcy4nOwokbGFuZ1snc2hvd3RvZ2dsZWJ1dHRvbl90ZXh0J10gPSAnU2hvdyBjaGVja2JveCB0byB0dXJuIHd5c2l3eWcgb24vb2ZmJzsKJGxhbmdbJ3RvZ2dsZXd5c2l3eWcnXSA9ICdUdXJuIFdZU0lXWUcgb24vb2ZmJzsKJGxhbmdbJ3N0eWxlc190YWInXSA9ICdDU1MgU3R5bGVzJzsKJGxhbmdbJ3N0eWxlc19oZWxwJ10gPSAnICBJZiB5b3UgbGVhdmUgdGhlIGZpZWxkIGVtcHR5LCBUaW55TUNFIHdpbGwgcGFyc2UgeW91ciBDU1MgZmlsZSBhbmQgbGlzdCB0aGUgY2xhc3Mgc3R5bGVzIGNvbnRhaW5lZCBpbiBpdCB0byB0aGUgdXNlci4gDQogIElmIHlvdSB3YW50IG9ubHkgc29tZSBzdHlsZXMgcHJlc2VudGVkIHRvIHRoZSB1c2VyLCBzcGVjaWZ5IHRoZW0gaW4gdGhlIGZvcm0gJnF1b3Q7Q3VzdG9tTmFtZTE9c3R5bGUxOyBDdXN0b21OYW1lMj1zdHlsZTImcXVvdDssIA0KICAmcXVvdDtzdHlsZTEmcXVvdDsgYmVpbmcgYSBjbGFzcyBjYWxsIGluIHlvdXIgc3R5bGVzaGVldCBhbmQgeW91IGRvbiYjMDM5O3QgcHV0IHRoZSAuIA0KICBub3JtYWxseSB1c2VkIGZvciBjbGFzcyBjYWxscyBhcyBpdCBpcyBhbHJlYWR5IGluIHlvdXIgQ1NTLCBpdCB3aWxsIGxvb2sgbGlrZSB0aGlzIDxzcGFuIGNsYXNzPSZxdW90O3N0eWxlMSZxdW90Oz50ZXh0PC9zcGFuPiwgDQogIGluIHRoZSBmaXJzdCBmaWVsZCBiZWxvdy4gDQonOwokbGFuZ1snY3NzX3N0eWxlc190ZXh0J10gPSAnU3R5bGVzJzsKJGxhbmdbJ2FjY2Vzc2RlbmllZCddID0gJ0FjY2VzcyBEZW5pZWQuIFBsZWFzZSBjaGVjayB5b3VyIHBlcm1pc3Npb25zLic7CiRsYW5nWydlcnJvciddID0gJ0Vycm9yISc7CiRsYW5nWydzdWJtaXQnXSA9ICdTdWJtaXQnOwokbGFuZ1sndXBkYXRlJ10gPSAn2KjYsdmI2LLYsdiz2KfZhtuMJzsKJGxhbmdbJ3NhdmVzZXR0aW5ncyddID0gJ9iw2K7bjNix2Ycg2KrZhti424zZhdin2KonOwokbGFuZ1snc2V0dGluZ3MnXSA9ICfYqtmG2LjbjNmF2KfYqic7CiRsYW5nWydzZXR0aW5nc3NhdmVkJ10gPSAn2KrZhti424zZhdin2Kog2LDYrtuM2LHZhyDYtNivJzsKJGxhbmdbJ3NhdmVhZHZhbmNlZCddID0gJ9iw2K7bjNix2Ycg2KrZhti424zZhdin2Kog2b7bjNi02LHZgdiq2YcnOwokbGFuZ1snYWR2YW5jZWRzYXZlZCddID0gJ9iq2YbYuNuM2YXYp9iqINm+24zYtNix2YHYqtmHINiw2K7bjNix2Ycg2LTYryc7CiRsYW5nWyd0b29sYmFyc2F2ZWQnXSA9ICdUb29sYmFyIHdhcyBzYXZlZCc7CiRsYW5nWydzdHlsZXNzYXZlZCddID0gJ1N0eWxlcyB3YXMgc2F2ZWQnOwokbGFuZ1sndGVzdGFyZWF0ZXh0J10gPSAnPHA+VGVzdCBhcmVhLCBubyBjb250ZW50IHdpbGwgYmUgaGFybWVkIHBsYXlpbmcgd2l0aCB0aGlzLi4uPC9wPic7CiRsYW5nWydyZXNldCddID0gJ1Jlc2V0IGRlZmF1bHRzJzsKJGxhbmdbJ3Jlc2V0YWxsJ10gPSAn2KjYsdqv2LHYr9in2YbYr9mGINiq2YXYp9mFINiq2YbYuNuM2YXYp9iqINio2Ycg2K3Yp9mE2Kog2b7bjNi02YHYsdi2JzsKJGxhbmdbJ2NvbmZpcm1yZXNldCddID0gJ9ii24zYpyDZhdi32YXYptmGINmH2LPYqtuM2K8g2qnZhyDZhduM2K7ZiNin2YfbjNivINin24zZhiDYqtmG2LjbjNmF2KfYqiDYsdinINio2Ycg2K3Yp9mE2Kog2KfZiNmE24zZhyDYqNin2LIg2q/Ysdiv2KfZhtuM2K/Ynyc7CiRsYW5nWydjb25maXJtcmVzZXRhbGwnXSA9ICfYotuM2Kcg2YXYt9mF2KbZhiDZh9iz2KrbjNivINqp2Ycg2YXbjNiu2YjYp9mH24zYryDYqtmF2KfZhduMINiq2YbYuNuM2YXYp9iqINix2Kcg2KjZhyDYrdin2YTYqiDYp9mI2YTbjNmHINio2KfYsiDar9ix2K/Yp9mG24zYr9ifJzsKJGxhbmdbJ3NldHRpbmdzcmVzZXQnXSA9ICfYp9uM2YYg2KrZhti424zZhdin2Kog2KjZhyDYrdin2YTYqiDZvtuM2LTZgdix2LYg2KjYp9iy2q/Ysdiv2KfZhtiv2Ycg2LTYry4nOwokbGFuZ1snYWxsc2V0dGluZ3NyZXNldCddID0gJ9iq2YXYp9mFINiq2YbYuNuM2YXYp9iqINio2Ycg2K3Yp9mE2Kog2b7bjNi02YHYsdi2INio2KfYstqv2LHYr9in2YbYr9mHINi02K8uJzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnaGFzIGJlZW4gdXBncmFkZWQgdG8gdmVyc2lvbiAlcyc7CiRsYW5nWydjdXN0b21kcm9wZG93biddID0gJ0N1c3RvbSBkcm9wZG93bi1tZW51JzsKJGxhbmdbJ2Ntc21zbGlua2VyJ10gPSAnSW5zZXJ0IGxpbmsgdG8gY21zbXMtcGFnZSc7CiRsYW5nWydiYWNrZW5kX3Rvb2xiYXJzJ10gPSAnQmFja2VuZCBwcm9maWxlIHNldHRpbmdzJzsKJGxhbmdbJ2Zyb250ZW5kX3Rvb2xiYXJzJ10gPSAnRnJvbnRlbmQgcHJvZmlsZSBzZXR0aW5ncyc7CiRsYW5nWydwbHVnaW5zX3RhYiddID0gJ9m+2YTYp9qv24zZhiDZh9inJzsKJGxhbmdbJ3BsdWdpbnNfaGVscCddID0gJ0Nob29zZSB0aGUgcGx1Z2lucyB5b3Ugd2FudCB0byBhY3RpdmF0ZS4gRG9jdW1lbnRhdGlvbiBjYW4gYmUgZm91bmQgPGEgaHJlZj0iJXMiIHRhcmdldD0iX2JsYW5rIj5oZXJlPC9hPic7CiRsYW5nWydwbHVnaW5zX3RleHQnXSA9ICfZvtmE2Kfar9uM2YYg2YfYpyc7CiRsYW5nWydzYXZlcGx1Z2lucyddID0gJ9iw2K7bjNix2Ycg2b7ZhNin2q/bjNmGINmH2KcnOwokbGFuZ1sncGx1Z2luc3NhdmVkJ10gPSAn2b7ZhNin2q/bjNmGINmH2Kcg2LDYrtuM2LHZhyDYtNivJzsKJGxhbmdbJ3BsdWdpbnNfbW9kdWxlJ10gPSAnTW9kdWxlIFBsdWdpbnMnOwokbGFuZ1sncGx1Z2luc19jb21tb24nXSA9ICdDb21tb24gUGx1Z2lucyc7CiRsYW5nWydtb2R1bGUnXSA9ICfZhdin2pjZiNmEJzsKJGxhbmdbJ2Rlc2NyaXB0aW9uJ10gPSAnRGVzY3JpcHRpb24nOwokbGFuZ1sncGx1Z2luJ10gPSAn2b7ZhNin2q/bjNmGJzsKJGxhbmdbJ3lvdWFyZWludGV4dCddID0gJ1lvdSBhcmUgaW4nOwokbGFuZ1snbG9hZHN0eWxlc2hlZXR0ZXh0J10gPSAnTG9hZCBzdHlsZXNoZWV0IGZvciBjb250ZW50IChyZWNvbW1lbmRlZCknOwokbGFuZ1snZXh0cmFzdHlsZXN0ZXh0J10gPSAnQWRkaXRpb25zIHRvIHN0eWxlc2hlZXQnOwokbGFuZ1snZXh0cmFzdHlsZXNoZWxwJ10gPSAnQ1NTIGVudGVyZWQgaGVyZSB3aWxsIGJlIGFkZGVkIHRvIHRoZSBzdHlsZXNoZWV0IHJlYWQgYnkgVGlueU1DRSBhZnRlciBpdCByZWNpZXZlcyB0aGUgQ01TbXMgc3R5bGVzJzsKJGxhbmdbJ3VwbG9hZG5ld2ZpbGUnXSA9ICdOZXcgZmlsZSc7CiRsYW5nWyd1cGxvYWRmaWxlJ10gPSAn2KLZvtmE2YjYryc7CiRsYW5nWydjcmVhdGVuZXdkaXInXSA9ICdOZXcgZGlyJzsKJGxhbmdbJ2NyZWF0ZWRpciddID0gJ0NyZWF0ZSc7CiRsYW5nWydub2Rpcm5hbWUnXSA9ICdObyBkaXJuYW1lIHByb3ZpZGVkJzsKJGxhbmdbJ2RpcmV4aXN0cyddID0gJ0Rpcm5hbWUgYWxyZWFkeSBleGlzdHMnOwokbGFuZ1snbmV3ZGlyY3JlYXRlZCddID0gJ05ldyBkaXIgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQnOwokbGFuZ1snbmV3ZGlyZmFpbGVkJ10gPSAnQW4gZXJyb3Igb2NjdXJlZCB0cnlpbmcgdG8gY3JlYXRlIGRpcic7CiRsYW5nWydub2ZpbGUnXSA9ICfZh9uM2oYg2YHYp9uM2YTbjCDYotm+2YTZiNivINmG2LTYryc7CiRsYW5nWydmaWxldG9vYmlnJ10gPSAnVXBsb2FkZWQgZmlsZSBpcyB0b28gYmlnJzsKJGxhbmdbJ2NvbnRhaW5zaWxsZWdhbGNoYXJzJ10gPSAnRmlsZW5hbWUgY29udGFpbnMgb25lIG9yIG1vcmUgaWxsZWdhbCBjaGFyYWN0ZXJzICgmIzAzOTssJnF1b3Q7LCssKixcLC8sJmFtcDssJCknOwokbGFuZ1sndXBsb2FkZmFpbGVkJ10gPSAnRXJyb3IgbW92aW5nIHVwbG9hZGVkIGZpbGUgaW50byBwbGFjZSc7CiRsYW5nWydmaWxldXBsb2FkZWQnXSA9ICdGaWxlIHN1Y2Nlc3NmdWxseSB1cGxvYWRlZCc7CiRsYW5nWydub3RhbmltYWdlJ10gPSAnVGhlIHVwbG9hZGVkIGZpbGUgaXMgbm90IGFuIGltYWdlJzsKJGxhbmdbJ2ZpbGVwaWNrZXJ0aXRsZSddID0gJ0NNU01hZGVTaW1wbGUgRmlsZSBTZWxlY3Rpb24nOwokbGFuZ1snc3VjY2VzcyddID0gJ1N1Y2Nlc3MnOwokbGFuZ1snZmlsZW9wZXJhdGlvbnMnXSA9ICdGaWxlIG9wZXJhdGlvbnMnOwokbGFuZ1sndGhvdXNhbmRkZWxpbWl0ZXInXSA9ICcsJzsKJGxhbmdbJ3NpemUnXSA9ICdTaXplJzsKJGxhbmdbJ2RpbWVuc2lvbnMnXSA9ICdXeEgnOwokbGFuZ1snYWR2YW5jZWRfdGFiJ10gPSAn2b7bjNi02LHZgdiq2YcnOwokbGFuZ1snaGVscCddID0gJwk8aDM+V2hhdCBkb2VzIHRoaXMgZG8/PC9oMz4NCgk8cD5FbmFibGVzIGEgVGlueU1DRSB0byBiZSB1c2VkIGFzIGEgV1lTSVdZRy48L3A+DQoJPGgzPkhvdyBkbyBJIHVzZSBpdD88L2gzPg0KCTxwPkluc3RhbGwgaXQsIHRoZW4gZ28gdG8gVXNlciBQcmVmZXJlbmNlcyBhbmQgU2V0IFRpbnlNQ0UgdG8gYmUgeW91ciB3eXNpd3lnIG9mIGNob2ljZS48L3A+DQoJPGgzPlRyb3VibGVzaG9vdGluZzwvaDM+DQoJU29tZSBwZW9wbGUgaGF2ZSB0cm91YmxlIHdpdGggdGlueSBub3Qgc2hvd2luZyB1cCB1cG9uIGluc3RhbGxhdGlvbiBvciB1cGdyYWRpbmcuIEhlcmUgaXMgYSBjaGVja2xpc3Qgb2YgDQoJdGhpbmdzIHlvdSBjYW4gdHJ5IGJlZm9yZSBjb250YWN0aW5nIG1lIGZvciBmdXJ0aGVyIHN1cHBvcnQuDQoJPGJyLz4NCgk8dWw+DQoJPGxpPjEuIFBsZWFzZSwgcGxlYXNlLCB0cnkgdG8gcmV1cGxvYWQgdGhlIG1vZHVsZXMvVGlueU1DRSBkaXIgdG8geW91ciBzZXJ2ZXIuIFlvdSYjMDM5O2QgYmUgYW1hemVkIGhvdyBtYW55IHRpbWVzIHRoaXMgaGFzIGhlbHBlZCBwZW9wbGUuPC9saT4NCgk8bGk+Mi4gVHJ5IHRvIHN3aXRjaCBvbiB0aGUgU3RhdGljIENvbmZpZyBvcHRpb24uIE5vdGUgdGhhdCB0aGlzIHJlcXVpcmVzIHlvdXIgL3RtcC8tZGlyIHRvIGJlIHdyaXRhYmxlIGJ5IHRoZSB3ZWJzZXJ2ZXI8L2xpPg0KCTxsaT4zLiBJZiB1cGdyYWRpbmcsIHBsZWFzZSB0cnkgdG8gcmVzZXQgYWxsIHNldHRpbmdzLiBOb3QgbmljZSBpZiB5b3UmIzAzOTt2ZSBkb25lIGEgbG90IG9mIGN1c3RvbWl6YXRpb24sIEkga25vdywgYnV0IGEgbG90IG9mIHRoaW5ncyBjaGFuZ2VzIGZyb20gMi4zLnggdG8gMi40Lnggc2VyaWVzIG9mIHRoZSBtb2R1bGUuDQoJPGxpPjQuIFRyeSBlbmFibGluZyB0aGUgc3RhdGljIGNvbmZpZyBvcHRpb24gaW4gYWR2YW5jZWQgc2V0dGluZ3MuIFRoaXMgd29ya3MgYmV0dGVyIG9uIHNvbWUgc3lzdGVtcyAobGlrZSBDR0ktYmFzZWQpDQoJPC91bD4NCgk8YnIvPg0KCQkNCic7CiRsYW5nWydxY2EnXSA9ICdQMC0xMzA2MTMwMDkzLTEzMTQ3Njk2OTkwMTInOwokbGFuZ1sndXRteiddID0gJzE1Njg2MTM1My4xMzE2ODAwNjc4LjEwLjUudXRtY3NyPWdvb2dsZXx1dG1jY249KG9yZ2FuaWMpfHV0bWNtZD1vcmdhbmljfHV0bWN0cj1tYWRlc2ltcGxlJzsKJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuNTkzOTA5MzQyLjEzMTA3MjgwNTAuMTMxNjgwMzMzNy4xMzE2ODg5NTgzLjEyJzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwokbGFuZ1sndXRtYiddID0gJzE1Njg2MTM1Myc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/fi_FI.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1RpbnlNQ0UgV1lTSVdZRyAtcGVydXNtb2R1dWxpJzsKJGxhbmdbJ2FkbWluZGVzY3JpcHRpb24nXSA9ICdUJmF1bWw7bSZhdW1sOyBtb2R1dWxpIHNhbGxpaSBwJmF1bWw7JmF1bWw7YXNpYXNzYSBzaXMmYXVtbDtsbCZvdW1sO24sIG11dHRhIG1haGRvbGxpc2VzdGkgbXkmb3VtbDtzIG11dW5raW4gZGF0YW4gbXVva2thYW1pc2VuIFdZU0lXWUcgZWRpdG9yaWxsYS4nOwokbGFuZ1sndW5pbnN0YWxsZWQnXSA9ICdNb2R1dWxpIHBvaXN0ZXR0dS4nOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kdXVsaW4gdmVyc2lvICVzIGFzZW5uZXR0dS4nOwokbGFuZ1snc3RyaXBiYWNrZ3JvdW5kdGFncyddID0gJ1BvaXN0YSB0YXVzdGF0YWdpdCBDU1M6c3QmYXVtbDsnOwokbGFuZ1snc3RpcHRhZ3NfaGVscCddID0gJ1QmYXVtbDttJmF1bWw7IGFzZXR1cyB5cml0dCZhdW1sOyZhdW1sOyBwb2lzdGFhIGJhY2tncm91bmQtdHl5cHBpc2V0IGFzZXR1a3NldCB0eXlsaXRpZWRvc3RvaXN0YS4nOwokbGFuZ1snc291cmNlX2Zvcm1hdHRpbmdfdGV4dCddID0gJ011b3RvaWxlIHR1bG9zdGV0dGF2YWEgSFRNTDomYXVtbDsmYXVtbDsnOwokbGFuZ1snZHJvcGRvd25ibG9ja2Zvcm1hdHNfdGV4dCddID0gJ0Jsb2NrZm9ybWF0cyBhbGFzdmV0b3ZhbGlrb3NzYSc7CiRsYW5nWydhbGxvd3RhYmxlcyddID0gJ1NhbGxpIHRhdWx1a2tvLW9wZXJhYXRpb3QnOwokbGFuZ1snbmV3bGluZXN0eWxlX3RleHQnXSA9ICdVdWRlbiByaXZpbiB0eXlsaSc7CiRsYW5nWydwc3R5bGUnXSA9ICdwLXR5eWxpJzsKJGxhbmdbJ2Jyc3R5bGUnXSA9ICdici10eXlsaSc7CiRsYW5nWyd1c2Vjb21wcmVzc2lvbnRleHQnXSA9ICdLJmF1bWw7eXQmYXVtbDsgZ3otcGFra2F1c3RhJzsKJGxhbmdbJ3VzZWNvbXByZXNzaW9uaGVscCddID0gJ1QmYXVtbDttJmF1bWw7IHZvaSBub3BldXR0YWEgVGlueU1DRTpuIGxhdGF1dHVtaXN0YSwgbXV0dGEgdm9pIG15Jm91bWw7cyBqb2lzc2FpbiBqJmF1bWw7cmplc3RlbG1pc3MmYXVtbDsgZXN0JmF1bWw7JmF1bWw7IHNlbiBsYXRhdXR1bWlzZW4uIEsmYXVtbDt5dCZhdW1sOyB2YXJvZW4uJzsKJGxhbmdbJ2ZvcmNlZHJvb3RibG9ja3RleHQnXSA9ICdQYWtvdGEgJmFtcDtsdDtwJmFtcDtndDsganV1cmllbGVtZW50dGknOwokbGFuZ1snZm9yY2Vkcm9vdGJsb2NraGVscCddID0gJ1Bha290dGFhIHBhbGF1dGV0dW4gc2lzJmF1bWw7bGwmb3VtbDtuIG9sZXZhbiBhaW5ha2luIHN1bGpldHR1bmEgJmFtcDtsdDtwJmFtcDtndDstdGFnaWluJzsKJGxhbmdbJ2ZpbGVwaWNrZXJzdHlsZSddID0gJ1RpZWRvc3RvdmFsaXRzZW1lbiB0eXlsaSc7CiRsYW5nWydmaWxlcGlja2Vyc2l6ZSddID0gJ1RpZWRvc3RvdmFsaXRzZW1lbiBrb2tvJzsKJGxhbmdbJ2FsbG93dXBsb2FkdGV4dCddID0gJ1NhbGxpIHRpZWRvc3RvamVuIGwmYXVtbDtoZXR0JmF1bWw7bWluZW4gamEgaGFrZW1pc3RvamVuIGx1b21pbmVuIFRpZWRvc3RvdmFsaXRzZW1hc3NhJzsKJGxhbmdbJ2FsbG93c2NhbGluZ3RleHQnXSA9ICdTYWxsaSBsJmF1bWw7aGV0ZXR0eWplbiBrdXZpZW4ga29vbiBtdXV0dGFtaW5lbiBsZW5ub3NzYSc7CiRsYW5nWydzY2FsaW5nZGltZW5zaW9uc3RleHQnXSA9ICdPbGV0dXNrb2tvJzsKJGxhbmdbJ3Jlc2l6ZXRvJ10gPSAnTXV1dGEga29va3NpOic7CiRsYW5nWydtYWtldGh1bWJuYWlsJ10gPSAnTHVvIHBpZW5vaXNrdXZhLCBrdW4ga3V2YSBsJmF1bWw7aGV0ZXQmYXVtbDsmYXVtbDtuJzsKJGxhbmdbJ3VzZWFkdmFuY2VkcHJvZmlsZSddID0gJ0smYXVtbDt5dCZhdW1sOyBtb25pcHVvbGlzZW1wYWEgVGlueU1DRS1wcm9maWlsaWEnOwokbGFuZ1snc2F2ZXByb2ZpbGUnXSA9ICdUYWxsZW5uYSBwcm9maWlsaSc7CiRsYW5nWydwcm9maWxlc2F2ZWQnXSA9ICdQcm9maWlsaSB0YWxsZW5uZXR0dSc7CiRsYW5nWydwcm9maWxlc190YWInXSA9ICdQcm9maWlsaXQnOwokbGFuZ1snYWR2YW5jZWRfYmFja2VuZF90b29sYmFycyddID0gJ01vbmlwdW9saXNlbW1hdCB0YXVzdGFwcm9maWlsaWVuIGFzZXR1a3NldCc7CiRsYW5nWydzYXZlc3R5bGVzJ10gPSAnVGFsbGVubmEgdHl5bGl0JzsKJGxhbmdbJ2FsbG93YWR2YW5jZWRwcm9maWxlJ10gPSAnU2FsbGkgbW9uaXB1b2xpc2VtcGllbiBwcm9maWlsaWVuIGsmYXVtbDt5dHQmYXVtbDttaW5lbiBUaW55TUNFOnNzJmF1bWw7JzsKJGxhbmdbJ3Nob3dmaWxlbWFuYWdlbWVudCddID0gJ04mYXVtbDt5dCZhdW1sOyB0aWVkb3N0b25oYWxsaW5uYW4gYXNldHVrc2V0JzsKJGxhbmdbJ3Nob3dmaWxlbWFuYWdlbWVudGhlbHAnXSA9ICdOJmF1bWw7eXQmYXVtbDsgdGllZG9zdG9uaGFsbGludGEgYXNldHVrc2lzc2EsIGt1dGVuIHRpZWRvc3RvamVuIGwmYXVtbDtoZXR5cywgaGFrZW1pc3RvamVuIGx1b21pbmVuIGphIHRpZWRvc3RvamVuIHBvaXN0YW1pbmVuIFRpZWRvc3RvdmFsaXRzZW1hc3NhLCBqb3MgayZhdW1sO3l0dCZhdW1sO2omYXVtbDtsbCZhdW1sOyBvbiBsdXBhIHN1b3JpdHRhYSBuJmF1bWw7aXQmYXVtbDsgdG9pbWludG9qYS4nOwokbGFuZ1sncmVzdHJpY3RkaXJzJ10gPSAnUmFqb2l0YSBrJmF1bWw7eXR0JmF1bWw7aiZhdW1sO24gcCZhdW1sOyZhdW1sO3N5JmF1bWw7IGhha2VtaXN0b2loaW4nOwokbGFuZ1sncmVzdHJpY3RkaXJzaGVscCddID0gJ1QmYXVtbDttJmF1bWw7IHJham9pdHRhYSBrJmF1bWw7eXR0JmF1bWw7aiZhdW1sO24gcCZhdW1sOyZhdW1sO3N5biB0aWVkb3N0b25oYWxsaW5uYXNzIGFpbm9hc3RhYW4gdXBsb2Fkcy1oYWtlbWlzdG9uIGFsaWhha2VtaXN0b29uLCBqb2thIG9uIHNhbWFuIG5pbWluZW4ga3VpbiBrJmF1bWw7eXR0JmF1bWw7aiZhdW1sO24gdHVubnVzLiBKb3MgaGFrZW1pc3RvYSBlaSBvbGUgb2xlbWFzc2EsIHZvaWRhYW4gc2UgbHVvZGEuIEh1b21hYSwgZXR0JmF1bWw7IHQmYXVtbDttJmF1bWw7IHRvaW1paSB0JmF1bWw7bGwmYXVtbDsgaGV0a2VsbCZhdW1sOyBhaW5vYXN0YWFuIG9sZXR1c2hha2VtaXN0b3N0b2lzc2EsIHVwbG9hZHMvaW1hZ2VzLiBUJmF1bWw7bSZhdW1sOyB2b2kgbXV1dHR1YSB0dWxldmFpc3V1ZGVzc2EuJzsKJGxhbmdbJ2RlbGV0ZWNvbmZpcm1hdGlvbiddID0gJ09sZXRrbyB2YXJtYSwgZXR0JmF1bWw7IGhhbHVhdCBwb2lzdGFhIHRpZWRvc3Rvbj8nOwokbGFuZ1snZGVsZXRlZmlsZXN1Y2Nlc3MnXSA9ICdwb2lzdGV0dGlpbiBvbm5pc3R1bmVlc3RpJzsKJGxhbmdbJ2RlbGV0ZWZpbGVmYWlsZWQnXSA9ICdlaSB2b2l0dSBwb2lzdGFhJzsKJGxhbmdbJ2RlbGV0ZXN1YmRpcmZhaWxlZCddID0gJ2VpIHZvaXR1IHBvaXN0YWEnOwokbGFuZ1snZGVsZXRlc3ViZGlyc3VjY2VzcyddID0gJ3BvaXN0ZXR0aWluIG9ubmlzdHVuZWVzdGknOwokbGFuZ1snZGVsZXRlZGlyY29uZmlybWF0aW9uJ10gPSAnT2xldGtvIHZhcm1hLCBldHQmYXVtbDsgdCZhdW1sO20mYXVtbDsgdHloaiZhdW1sOyBoYWtlbWlzdG8gcG9pc3RldGFhbj8nOwokbGFuZ1snZGVsZXRlZGlyJ10gPSAnUG9pc3RhIHR5aGomYXVtbDsgYWxpaGFrZW1pc3RvJzsKJGxhbmdbJ2RlbGV0ZWZpbGUnXSA9ICdQb2lzdGEgdGllZG9zdG8nOwokbGFuZ1snY2Fubm90cmVhZGNvbmZpZyddID0gJ0VpIHZvaWRhIGx1a2VhIHRpZWRvc3RvYSB0aW55Y29uZmlnLnBocCwgam90ZW4gVGlueU1DRSBlaSB0b2Rlbm4mYXVtbDtrJm91bWw7aXNlc3RpIHRvaW1pLiBTaW51biB0dWxpc2kgdGFya2lzdGFhIHRpZWRvc3RvbiBqYSB5bCZhdW1sO2hha2VtaXN0b2plbiBvaWtldWRldCwgam9pZGVuIHBpdCZhdW1sO2lzaSBvbGxhIGthaWtraWVuIGx1ZXR0YXZpc3NhLCBtdXR0YSBvbWlzdGFqYW4ga2lyam9pdGV0dGF2aXNzYS4nOwokbGFuZ1snZmlsZW5hbWVvbmx5J10gPSAnTiZhdW1sO3l0JmF1bWw7IHRpZWRvc3RvbmltZXQnOwokbGFuZ1sndGh1bWJuYWlsc29ubHknXSA9ICdOJmF1bWw7eXQmYXVtbDsgcGllbm9pc2t1dmF0JzsKJGxhbmdbJ3Nob3d0aHVtYm5haWxmaWxlc3RleHQnXSA9ICdOJmF1bWw7eXQmYXVtbDsgcGllbm9pc2t1dmF0IHRhdmFsbGlzaW5hIHRpZWRvc3RvaW5hJzsKJGxhbmdbJ2ZpbGVuYW1lYW5kdGh1bWJuYWlscyddID0gJ04mYXVtbDt5dCZhdW1sOyBzZWsmYXVtbDsgdGllZG9zdG9uaW1ldCBldHQmYXVtbDsgcGllbm9pc2t1dmF0JzsKJGxhbmdbJ3NraW5zdGV4dCddID0gJ1Vsa29hc3UnOwokbGFuZ1snc2tpbnZhcmlhdGlvbnRleHQnXSA9ICdVbGtvYXN1biBtdXVubm9zJzsKJGxhbmdbJ2FkdmFuY2Vkd2FybmluZyddID0gJzxzdHJvbmc+SHVvbWFhITxici8+TiZhdW1sO2lkZW4gYXNldHVzdGVuIG11dXR0YW1pbmVuIHZvaSBlc3QmYXVtbDsmYXVtbDsgVGlueU1DRTpuIHRvaW1pbm5hbiB0YWkgbHVvdHUga29vZGkgdm9pIG9sbGEgdmlyaGVlbGxpc3QmYXVtbDsuIE11b2trYWEgYWlub2FzdGFhbiwgam9zIHRpZWQmYXVtbDt0IG1pdCZhdW1sOyB0ZWV0ISBLYXRzbyBsaXMmYXVtbDt0aWV0b2EgVGlueU1DRTpuIGtvdGlzaXZ1aWx0YSBlbm5lbiBrdWluIGphdGthdC48L3N0cm9uZz4nOwokbGFuZ1snZW50aXR5ZW5jb2RpbmdfdGV4dCddID0gJ01lcmtraWVuIG11dW5ub2tzZXQnOwokbGFuZ1sncmF3ZW5jb2RpbmcnXSA9ICdSYWFrYSBtdXVubm9zIChub3BlaW4sIHRvaW1paSB1c2VpbW1pc3NhIHRhcGF1a3Npc3NhKSc7CiRsYW5nWyduYW1lZGVuY29kaW5nJ10gPSAnTmltZXR0eSBtdXVubm9zIChrdXRlbiAmbmJzcDspJzsKJGxhbmdbJ251bWVyaWNlbmNvZGluZyddID0gJ051bWVlcmluZW4gbXV1bm5vcyAoa3V0ZW4gJmFtcDsjMTYwOyknOwokbGFuZ1snc2hvd19wYXRoX3RleHQnXSA9ICdOJmF1bWw7eXQmYXVtbDsgZWxlbWVudGluIHBvbGt1IGVkaXRvcmluIGFsYW9zYXNzYS4nOwokbGFuZ1sndG9vbGJhcl90YWInXSA9ICdUeSZvdW1sO2thbHVwYWxra2knOwokbGFuZ1sndG9vbGJhcl9oZWxwJ10gPSAnTiZhdW1sO2lkZW4gdHVsaXNpIHNpcyZhdW1sO2x0JmF1bWw7JmF1bWw7IHBpbGt1bGxhIGVyb3RldHR1IGxpc3RhIHBhaW5pa2tlaWRlbi9rb250cm9sbGllbiBuaW1pc3QmYXVtbDssIGpvdGthIHNpam9pdGV0YWFuIHR5Jm91bWw7a2FsdXBhbGtraWluLic7CiRsYW5nWyd0b29sYmFyX3RleHQnXSA9ICdUeSZvdW1sO2thbHVwYWxra2knOwokbGFuZ1sndG9vbGJhcmhlbHB0ZXh0J10gPSAnS2xpa2thYSB0JmF1bWw7c3QmYXVtbDsgbiZhdW1sO2hkJmF1bWw7a3Nlc2kgdHkmb3VtbDtrYWx1cGFsa2luIG9oamVldCBUaW55TUNFOm4gd2lraXNzJmF1bWw7Lic7CiRsYW5nWydlZGl0b3Jfd2lkdGhfdGV4dCddID0gJ0VkaXRvcmlrZW50JmF1bWw7biBsZXZleXMnOwokbGFuZ1snZWRpdG9yX2hlaWdodF90ZXh0J10gPSAnRWRpdG9yaWtlbnQmYXVtbDtuIGtvcmtldXMnOwokbGFuZ1snYXV0byddID0gJ0F1dG9tYWF0dGluZW4nOwokbGFuZ1snb3InXSA9ICd0YWknOwokbGFuZ1sndGVzdGFyZWFfdGFiJ10gPSAnVGVzdGF1cyBhbHVlJzsKJGxhbmdbJ3Nob3d0ZXN0aW5nb3V0cHV0J10gPSAnTiZhdW1sO3l0JmF1bWw7IHRlc3RhdXMgdHVsb2tzZXQnOwokbGFuZ1sndGVzdGFyZWFlZGl0b3InXSA9ICdUZXN0YXVzIGFsdWVlbiBlZGl0b3JpJzsKJGxhbmdbJ3Rlc3RhcmVhb3V0cHV0J10gPSAnVGVzdGF1cyBhbHVlZW4gdHVsb2tzZXQnOwokbGFuZ1sndGVzdGFyZWFvdXRwdXRzb3VyY2UnXSA9ICdUZXN0YXVzIGFsdWVlbiBsJmF1bWw7aGRlJzsKJGxhbmdbJ2FsbG93cmVzaXppbmcnXSA9ICdTYWxsaSBlZGl0b2ludGlrZW50JmF1bWw7biBrb29uIG11dXR0YW1pbmVuIHBhaWthbGxhYW4nOwokbGFuZ1sncmVzaXplbm9uZSddID0gJyZBdW1sO2wmYXVtbDsgc2FsbGkga29vbiBtdXV0dGFtaXN0YSc7CiRsYW5nWydyZXNpemVib3RoJ10gPSAnU2FsbGkga29vbiBtdXV0dHRhbWluZW4gbW9sZW1waWluIHN1dW50aWluJzsKJGxhbmdbJ3Jlc2l6ZWhlaWdodCddID0gJ1NhbGxpIHZhaW4ga29ya2V1ZGVuIG11dXR0YW1pbmVuJzsKJGxhbmdbJ2RhdGV0aW1lZm9ybWF0X3RleHQnXSA9ICdQJmF1bWw7aXYmYXVtbDttJmF1bWw7JmF1bWw7ciZhdW1sOy0gamEgYWlrYW11b3RvJzsKJGxhbmdbJ3RpbWV0ZXh0J10gPSAnQWlrYSc7CiRsYW5nWydkYXRldGV4dCddID0gJ1AmYXVtbDtpdiZhdW1sO20mYXVtbDsmYXVtbDtyJmF1bWw7JzsKJGxhbmdbJ2RhdGV0aW1lZm9ybWF0X2hlbHAnXSA9ICdLbGlra2FhIHQmYXVtbDtzdCZhdW1sOywgam9zIGhhbHVhdCBvaGplaXRhIHAmYXVtbDtpdiZhdW1sO20mYXVtbDsmYXVtbDtyJmF1bWw7LSBqYSBhaWthbXVvdG9paGluJzsKJGxhbmdbJ2V4dHJhY29uZmlndGV4dCddID0gJ0xpcyZhdW1sO2FzZXR1a3NldCc7CiRsYW5nWydleHRyYWNvbmZpZ2hlbHAyJ10gPSAnWWtzaSBtJmF1bWw7JmF1bWw7cml0eXMgcGVyIHJpdmksIHBpbGt1dCBsaXMmYXVtbDt0JmF1bWw7JmF1bWw7biBlbm5lbiBqYSBqJmF1bWw7bGtlZW4gc2lzJmF1bWw7bHQmb3VtbDsmYXVtbDsuIEthdHNvIFRpbnlNQ0U6biB3aWtpc3QmYXVtbDsgbGlzJmF1bWw7b2hqZWl0YS4nOwokbGFuZ1snY3VzdG9tZHJvcGRvd250ZXh0J10gPSAnT21hIHB1ZG90dXN2YWxpa2tvJzsKJGxhbmdbJ2N1c3RvbWRyb3Bkb3duaGVscCddID0gJ0xpcyZhdW1sOyZhdW1sOyBvbWlhIHAmYXVtbDt0a2kmYXVtbDsga29vZGlhL3Rla3N0aSZhdW1sOyBwdWRvdHVzdmFsaWtrb29uLiBTZWxrZWluIGsmYXVtbDt5dHQmb3VtbDtrb2hkZSBvbiBoZWxwcG8gdGFnaWVuIGsmYXVtbDt5dHQmYXVtbDttaW5lbi4gVmFsaWtrbyBsaXMmYXVtbDt0JmF1bWw7JmF1bWw7biB0eSZvdW1sO2thbHVwYWxra2lpbiBrJmF1bWw7eXR0JmF1bWw7ZW4gJiMwMzk7Y3VzdG9tZHJvcGRvd24mIzAzOTstYXNldHVzdGEuJzsKJGxhbmdbJ3N0YXJ0ZW5hYmxlZHRleHQnXSA9ICdLJmF1bWw7eW5uaXN0eXMgcCZhdW1sOyZhdW1sO2xsJmF1bWw7JzsKJGxhbmdbJ3N0YXJ0ZW5hYmxlZGhlbHAnXSA9ICdUJmF1bWw7bSZhdW1sO24gb3R0YW1pbmVuIHBvaXMgayZhdW1sO3l0Jm91bWw7c3QmYXVtbDsgayZhdW1sO3lubmlzdCZhdW1sOyZhdW1sOyBUaW55TUNFOm4gcG9pc3NhIGsmYXVtbDt5dCZvdW1sO3N0JmF1bWw7LiBUJmF1bWw7dCZhdW1sOyB0dWxpc2kgayZhdW1sO3l0dCZhdW1sOyZhdW1sOyB5aGRlc3MmYXVtbDsgcCZhdW1sOyZhdW1sO2xsZS9wb2lzLXBhaW5pa2tlZW4ga2Fuc3NhLic7CiRsYW5nWydsb2FkY21zbGlua2VydGV4dCddID0gJ0xhdGFhIENNUy1saW5raXR0JmF1bWw7aiZhdW1sOyc7CiRsYW5nWydsb2FkY21zbGlua2VyaGVscCddID0gJ1QmYXVtbDttJmF1bWw7IGx1byBKYXZhU2NyaXB0LWtvb2Rpbiwgam9rYSBzYWxsaWkgY21zbGlua2VyaW4gbGlzJmF1bWw7JmF1bWw7bWlzZW4gdHkmb3VtbDtrYWx1cGFsa2tpaW4uJzsKJGxhbmdbJ2Ntc2xpbmtlcnN0eWxldGV4dCddID0gJ0NNUy1saW5raXR0JmF1bWw7aiZhdW1sO24gbGlua2tpdHl5bGknOwokbGFuZ1snY21zc2VsZmxpbmtzdHlsZSddID0gJ3tjbXNfc2VsZmxpbmt9LXR5eWxpJzsKJGxhbmdbJ2FocmVmc3R5bGUnXSA9ICc8YSBocmVmPi10eXlsaSc7CiRsYW5nWydjbXNsaW5rZXJhZGRzdGV4dCddID0gJ0NNUy1saW5rZXIgbGlzJmF1bWw7eWtzZXQnOwokbGFuZ1snY21zbGlua2VyYWRkc2hlbHAnXSA9ICdUJmF1bWw7bSZhdW1sOyBtYWhkb2xsaXN0YWEgcGFyYW1ldHJpZW4gbGlzJmF1bWw7JmF1bWw7bWlzZW4gJmFtcDtsdDthIGhyZWYmYW1wO2d0OyB0YWkge2Ntc19zZWxmbGlua30gLXRhZ2lpbiwga3VuIGdlbmVyb2lkYWFuIENNUy1saW5rZXJpbGwmYXVtbDsuJzsKJGxhbmdbJ2F2b2lkbGlua2NvbnZlcnNpb250ZXh0J10gPSAnViZhdW1sO2x0JmF1bWw7IGxpbmtraSBtdXVubm9rc2lhJzsKJGxhbmdbJ2F2b2lkbGlua2NvbnZlcnNpb25oZWxwJ10gPSAnUG9pc3RhYSBrJmF1bWw7eXQmb3VtbDtzdCZhdW1sOyBUaW55TUNFOm4gb21hbiBsaW5ra2kgY29udmVydHRlcmluLiBNYWhkb2xsaXN0YWEge3NtYXJ0eX06biBrJmF1bWw7eXQmb3VtbDtuIHVybGVpc3NhLic7CiRsYW5nWydyZWxhdGl2ZXVybHN0ZXh0J10gPSAnTHVvIHJlbGF0aWl2aXNldCB1cmwtb3NvaXR0ZWV0JzsKJGxhbmdbJ2ZvcmNlY2xlYW5wYXN0ZXRleHQnXSA9ICdQYWtvdGEga29vZGluIHNpaXN0aW1pbmVuIGxpaXR0JmF1bWw7bWlzZXNzJmF1bWw7JzsKJGxhbmdbJ2ZvcmNlY2xlYW5wYXN0ZWhlbHAnXSA9ICdUJmF1bWw7bSZhdW1sOyB0dWxpc2kgb2xsYSBwJmF1bWw7JmF1bWw7bGwmYXVtbDssIGpvdHRhIG91ZG90IG11b3RvaWx1dCBwb2lzdGV0YWFuIGtvb2Rpc3RhLCBrdW4gbGlpdGV0JmF1bWw7JmF1bWw7biB0ZWtzdGkmYXVtbDsgZXNpbWVya2lrc2kgV29yZGlzdGEuJzsKJGxhbmdbJ2JvZHljc3NfdGV4dCddID0gJ0JvZHktdGFnaW4gQ1NTJzsKJGxhbmdbJ2JvZHljc3NfaGVscCddID0gJ0omYXVtbDt0JmF1bWw7IHR5aGomYXVtbDtrc2kgdGFpIGFzZXRhIG9sZXR1cyBrJmF1bWw7eXR0JmF1bWw7JmF1bWw7a3Nlc2kgc2l2dW4gQ1NTOiZhdW1sOyZhdW1sOy4gSHVvbWFhOiBBc2V0dGFha3Nlc2kgZWRpdG9yaW4gdGF1c3RhdiZhdW1sO3JpbiB2YWxrb2lzZWtzaSwgYW5uYSBzZXVyYWF2YSBhcnZvOiBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyc7CiRsYW5nWydpbmNsdWRlb25seXNjcmVlbmNzc190ZXh0J10gPSAnU2lzJmF1bWw7bGx5dCZhdW1sOyBhaW5vYXN0YWFuIG4mYXVtbDt5dHQmb3VtbDsgQ1NTJzsKJGxhbmdbJ2luY2x1ZGVvbmx5c2NyZWVuY3NzX2hlbHAnXSA9ICdUJmF1bWw7bSZhdW1sO24gdmFsaXRzZW1pbmVuIGFpbm9hc3RhYW4gdHl5bGl0aWVkb3N0b2plbiBsaWl0dCZhdW1sO21pc2VuIFRpbnlNQ0U6aGVuLCBqb2lsbGEgb24gbWVkaWF0eXlwcGkgc2NyZWVuIHZhbGl0dHVuYS4nOwokbGFuZ1sndXNlc3RhdGljY29uZmlndGV4dCddID0gJ0smYXVtbDt5dCZhdW1sOyBzdGFhdHRpc3RhIGtvbmZpZ3VyYWF0aW90aWVkb3N0b2EnOwokbGFuZ1sndXNlc3RhdGljY29uZmlnaGVscCddID0gJ1QmYXVtbDttJmF1bWw7IHZvaSBoZWxwb3R0YWEgVGlueU1DRTpuIHNhYW1pc3RhIHRvaW1pbnRhYW4gc2VsbGFpc2Vzc2EgeW1wJmF1bWw7cmlzdCZvdW1sO3NzJmF1bWw7LCBqb3NzYSBwYWx2ZWx1bnRhcmpvYWphIGxpcyZhdW1sOyZhdW1sOyBwYWx2ZWx1amEga3V0ZW4gdGlsYXN0b2phIGthaWtrZWVuIHVsb3NtZW5ldiZhdW1sOyZhdW1sO24gdGlldG9vbiwgam9rYSByaWtrb28gZHluYWFtaXNlc3RpIGx1b2R1biBKYXZhU2NyaXB0IGtvbmZpZ3VyYWF0aW90aWVkb3N0b24nOwokbGFuZ1sndXNlc3RhdGljY29uZmlnd2FybmluZyddID0gJ1Zhcm9pdHVzISBTaW51bGxhIG9uIHN0YWF0dGluZW4ga29uZmlndXJhYXRpb3RpZWRvc3RvIGsmYXVtbDt5dCZvdW1sO3NzJmF1bWw7LCBtdXR0YSBoYWtlbWlzdG8gL3RtcC8gZWkgb2xlIGtpcmpvaXRldHRhdmlzc2EuIFQmYXVtbDttJmF1bWw7IGVzdCZhdW1sOyZhdW1sOyBtb2R1dWxpYSB0YWxsZW50YW1hc3RhIHN0YWF0dGlzdGEga29uZmlndXJhYXRpb3RpZWRvc3RvYSBqYSBlc3QmYXVtbDsmYXVtbDsgVGlueU1DRTpuIHRvaW1pbm5hbi4nOwokbGFuZ1snaWdub3JlbW9kaWZ5ZmlsZXN0ZXh0J10gPSAnJkF1bWw7bCZhdW1sOyB2JmF1bWw7bGl0JmF1bWw7ICYjMDM5O011b2thdGEgdGllZG9zdG9qYSYjMDM5Oy1vaWtldWRlc3RhIFRpZWRvc3RvdmFsaXRzaW1lc3NhLic7CiRsYW5nWydpZ25vcmVtb2RpZnlmaWxlc2hlbHAnXSA9ICdWYXJvaXR1cyEgVCZhdW1sO20mYXVtbDsgc2FsbGlpIGpvaWRlbmtpbiB0aWVkb3N0b2plbiBtdW9ra2F1c3RvaW1pbnRvamVuIHRla2VtaXNlbiwgdmFpa2thIGsmYXVtbDt5dHQmYXVtbDtqJmF1bWw7cnlobSZhdW1sO2xsJmF1bWw7IGVpIG9sZSAmIzAzOTtNdW9rYXRhIHRpZWRvc3RvamEmIzAzOTstb2lrZXV0dGEuIFQmYXVtbDt0JmF1bWw7IHZvaSB0ZWhva2thYXN0aSBrJmF1bWw7eXR0JmF1bWw7JmF1bWw7IGFzZXR1a3NlbiBrYW5zc2EsIGpva2EgcmFqb2l0dGFhIGsmYXVtbDt5dHQmYXVtbDtqJmF1bWw7biBoYWtlbWlzdG9paGluIHAmYXVtbDsmYXVtbDtzeSZhdW1sOy4nOwokbGFuZ1snc2hvd3RvZ2dsZWJ1dHRvbl90ZXh0J10gPSAnTiZhdW1sO3l0JmF1bWw7IHd5c2l3eWcgcCZhdW1sOyZhdW1sO2xsZS9wb2lzLXBhaW5pa2UnOwokbGFuZ1sndG9nZ2xld3lzaXd5ZyddID0gJ1dZU0lXWUcgcCZhdW1sOyZhdW1sO2xsZS9wb2lzJzsKJGxhbmdbJ3N0eWxlc190YWInXSA9ICdDU1MtdHl5bGl0JzsKJGxhbmdbJ3N0eWxlc19oZWxwJ10gPSAnSm9zIGomYXVtbDt0JmF1bWw7dCBlbnNpbW0mYXVtbDtpc2VuIGtlbnQmYXVtbDtuIHR5aGomYXVtbDtrc2ksIFRpbnlNQ0UgayZhdW1sO3NpdHRlbGVlIENTUy10aWVkb3N0b3NpIGphIGxpc3RhYSBzZW4gc2lzJmF1bWw7bHQmYXVtbDttJmF1bWw7dCB0eXlsaXQgayZhdW1sO3l0dCZhdW1sO2omYXVtbDtsbGUuIEpvcyBoYWx1YXQgdmFpbiBqb2lkZW5raW4gdHl5bGllbiBuJmF1bWw7a3l2JmF1bWw7biBrJmF1bWw7eXR0JmF1bWw7aiZhdW1sO2xsZSwgbSZhdW1sOyZhdW1sO3JpdHRlbGUgbmUgdCZhdW1sO2gmYXVtbDtuIHRhcGFhbjogXCZxdW90O1N0eWxlIDE9c3R5bGUxOyBTdHlsZSAyPXN0eWxlMlwmcXVvdDsgZW5zaW1tJmF1bWw7aXNlc3MmYXVtbDsgYWxsYSBvbGV2YXNzYSBrZW50JmF1bWw7c3MmYXVtbDsuIE11aXNzYSBrZW50aXNzJmF1bWw7IHZvaXQgbSZhdW1sOyZhdW1sO3JpdGVsbCZhdW1sOyBDU1MtdHl5bGVqJmF1bWw7IHRhdWx1a29pbGxlLCByaXZlaWxsZSBqYSBzb2x1aWxsZSwgam9pdGEgayZhdW1sO3l0ZXQmYXVtbDsmYXVtbDtuIHZhc3RhYXZpc3NhIGRpYWxvZ2Vpc3NhLiBKb3Mga2VudHQmYXVtbDsgb24gdHloaiZhdW1sOywgayZhdW1sO3l0ZXQmYXVtbDsmYXVtbDtuIHlsZWlzaSZhdW1sOyB0eXlsZWomYXVtbDsnOwokbGFuZ1snY3NzX3N0eWxlc190ZXh0J10gPSAnVHl5bGl0JzsKJGxhbmdbJ2FjY2Vzc2RlbmllZCddID0gJ1AmYXVtbDsmYXVtbDtzeSBlc3RldHR5LiBUYXJraXN0YSBvaWtldWRldC4nOwokbGFuZ1snZXJyb3InXSA9ICdWaXJoZSEnOwokbGFuZ1snc3VibWl0J10gPSAnTCZhdW1sO2hldCZhdW1sOyc7CiRsYW5nWyd1cGRhdGUnXSA9ICdQJmF1bWw7aXZpdCZhdW1sOyc7CiRsYW5nWydzYXZlc2V0dGluZ3MnXSA9ICdUYWxsZXRhIGFzZXR1a3NldCc7CiRsYW5nWydzZXR0aW5ncyddID0gJ0FzZXR1a3NldCc7CiRsYW5nWydzZXR0aW5nc3NhdmVkJ10gPSAnQXNldHVrc2V0IHRhbGxlbm5ldHR1JzsKJGxhbmdbJ3NhdmVhZHZhbmNlZCddID0gJ1RhbGxldGEgbW9uaXB1b2xpc2V0IGFzZXR1a3NldCc7CiRsYW5nWydhZHZhbmNlZHNhdmVkJ10gPSAnTW9uaXB1b2xpc2V0IGFzZXR1a3NldCB0YWxsZW5uZXR0dSc7CiRsYW5nWyd0b29sYmFyc2F2ZWQnXSA9ICdUeSZvdW1sO2thbHVwYWxra2kgdGFsbGVubmV0dHUnOwokbGFuZ1snc3R5bGVzc2F2ZWQnXSA9ICdUeXlsaXQgdGFsbGVubmV0dHUnOwokbGFuZ1sndGVzdGFyZWF0ZXh0J10gPSAnPHA+VGVzdGlhbHVlLCBzaXMmYXVtbDtsdCZvdW1sOyBlaSBzb3RrZWVubnUgdCZhdW1sO3QmYXVtbDsgbXVva2F0ZXNzYS4uLjwvcD4nOwokbGFuZ1sncmVzZXQnXSA9ICdQYWxhdXRhIG9sZXR1a3NldCc7CiRsYW5nWydyZXNldGFsbCddID0gJ1BhbGF1dGEga2Fpa2tpIGFzZXR1a3NldCBvbGV0dWtzaWluJzsKJGxhbmdbJ2NvbmZpcm1yZXNldCddID0gJ09sZXRrbyB2YXJtYSwgZXR0JmF1bWw7IGhhbHVhdCBwYWxhdXR0YWEgbiZhdW1sO20mYXVtbDsgYXNldHVrc2V0IG9sZXR1a3NpaW4/JzsKJGxhbmdbJ2NvbmZpcm1yZXNldGFsbCddID0gJ09sZXRrbyB2YXJtYSwgZXR0JmF1bWw7IGhhbHVhdCBwYWxhdXR0YWEgS0FJS0tJIGFzZXR1a3NldCBvbGV0dWtzaWluPyc7CiRsYW5nWydzZXR0aW5nc3Jlc2V0J10gPSAnTiZhdW1sO20mYXVtbDsgYXNldHVrc2V0IHBhbGF1dGV0dGlpbiBvbGV0dWtzaWluJzsKJGxhbmdbJ2FsbHNldHRpbmdzcmVzZXQnXSA9ICdLYWlra2kgYXNldHVrc2V0IHBhbGF1dGV0dGlpbiBvbGV0dWtzaWluJzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnb24gcCZhdW1sO2l2aXRldHR5IHZlcnNpb29uICVzJzsKJGxhbmdbJ2N1c3RvbWRyb3Bkb3duJ10gPSAnT21hIHB1ZG90dXN2YWxpa2tvJzsKJGxhbmdbJ2Ntc21zbGlua2VyJ10gPSAnTGlzJmF1bWw7JmF1bWw7IGxpbmtraSBjbXNtcy1zaXZ1bGxlJzsKJGxhbmdbJ2JhY2tlbmRfdG9vbGJhcnMnXSA9ICdIYWxsaW50YXBhbmVlbGluIHByb2ZpaWxpYXNldHVrc2V0JzsKJGxhbmdbJ2Zyb250ZW5kX3Rvb2xiYXJzJ10gPSAnSnVsa2lzZW4gc2l2dW4gcHJvZmlpbGlhc2V0dWtzZXQnOwokbGFuZ1sncGx1Z2luc190YWInXSA9ICdMaXMmYXVtbDtvc2F0JzsKJGxhbmdbJ3BsdWdpbnNfaGVscCddID0gJ1ZhbGl0c2UsIG1pdGsmYXVtbDsgbGlzJmF1bWw7b3NhdCBoYWx1YXQgYWt0aXZvaWRhLiBEb2t1bWVudGFhdGlvIGwmb3VtbDt5dHl5IDxhIGhyZWY9IiVzIiB0YXJnZXQ9Il9ibGFuayI+dCZhdW1sOyZhdW1sO2x0JmF1bWw7PC9hPic7CiRsYW5nWydwbHVnaW5zX3RleHQnXSA9ICdMaXMmYXVtbDtvc2F0JzsKJGxhbmdbJ3NhdmVwbHVnaW5zJ10gPSAnVGFsbGVubmEgbGlzJmF1bWw7b3NhdCc7CiRsYW5nWydwbHVnaW5zc2F2ZWQnXSA9ICdMaXMmYXVtbDtvc2F0IHRhbGxlbm5ldHR1JzsKJGxhbmdbJ3BsdWdpbnNfbW9kdWxlJ10gPSAnTW9kdXVsaW4gbGlzJmF1bWw7b3NhdCc7CiRsYW5nWydwbHVnaW5zX2NvbW1vbiddID0gJ1lsZWlzZXQgbGlzJmF1bWw7b3NhdCc7CiRsYW5nWydtb2R1bGUnXSA9ICdNb2R1dWxpJzsKJGxhbmdbJ2Rlc2NyaXB0aW9uJ10gPSAnS3V2YXVzJzsKJGxhbmdbJ3BsdWdpbiddID0gJ0xpcyZhdW1sO29zYSc7CiRsYW5nWyd5b3VhcmVpbnRleHQnXSA9ICdPbGV0IGtvaGRhc3NhJzsKJGxhbmdbJ2xvYWRzdHlsZXNoZWV0dGV4dCddID0gJ0xhdGFhIHR5eWxpdGllZG9zdG8gc2lzJmF1bWw7bGwmb3VtbDtsbGUgKHN1b3NpdGVsdHVhKSc7CiRsYW5nWydleHRyYXN0eWxlc3RleHQnXSA9ICdMaXMmYXVtbDt5a3NldCB0eXlsaXRpZWRvc3RvaWhpbic7CiRsYW5nWydleHRyYXN0eWxlc2hlbHAnXSA9ICdUJmF1bWw7aCZhdW1sO24gbGlzJmF1bWw7dHR5IENTUyBsaXMmYXVtbDt0JmF1bWw7JmF1bWw7biB0eXlsaXRpZWRvc3Rvb24sIGpvbmthIFRpbnlNQ0UgbHVrZWUsIGt1biBoYWtlZSBDTVNNUzpuIHR5eWxpdCc7CiRsYW5nWyd1cGxvYWRuZXdmaWxlJ10gPSAnVXVzaSB0aWVkb3N0byc7CiRsYW5nWyd1cGxvYWRmaWxlJ10gPSAnTCZhdW1sO2hldCZhdW1sOyc7CiRsYW5nWydjcmVhdGVuZXdkaXInXSA9ICdVdXNpIGhha2VtaXN0byc7CiRsYW5nWydjcmVhdGVkaXInXSA9ICdMdW8nOwokbGFuZ1snbm9kaXJuYW1lJ10gPSAnRWkgaGFrZW1pc3RvbiBuaW1lJmF1bWw7IGFubmV0dHVuYSc7CiRsYW5nWydkaXJleGlzdHMnXSA9ICdIYWtlbWlzdG9uIG5pbWkgb24gam8gb2xlbWFzc2EnOwokbGFuZ1snbmV3ZGlyY3JlYXRlZCddID0gJ1V1c2kgaGFrZW1pc3RvIGx1b3R1IG9ubmlzdHVuZWVzdGknOwokbGFuZ1snbmV3ZGlyZmFpbGVkJ10gPSAnVGFwYWh0dWkgdmlyaGUgaGFrZW1pc3RvYSBsdW90YWVzc2EnOwokbGFuZ1snbm9maWxlJ10gPSAnVGllZG9zdG9hIGVpIGwmYXVtbDtoZXRldHR5JzsKJGxhbmdbJ2ZpbGV0b29iaWcnXSA9ICdMJmF1bWw7aGV0ZXR0JmF1bWw7diZhdW1sOyB0aWVkb3N0byBvbiBsaWlhbiBzdXVyaSc7CiRsYW5nWydjb250YWluc2lsbGVnYWxjaGFycyddID0gJ1RpZWRvc3RvbiBuaW1pIHNpcyZhdW1sO2x0JmF1bWw7JmF1bWw7IHloZGVuIHRhaSB1c2VhbW1hbiBraWVsbGV0eW4gbWVya2luICgmIzAzOTssJnF1b3Q7LCssKixcLC8sJmFtcDssJCknOwokbGFuZ1sndXBsb2FkZmFpbGVkJ10gPSAnVmlyaGUgbCZhdW1sO2hldGV0eW4gdGllZG9zdG9uIHNpaXJ0JmF1bWw7bWlzZXNzJmF1bWw7JzsKJGxhbmdbJ2ZpbGV1cGxvYWRlZCddID0gJ1RpZWRvc3RvIGwmYXVtbDtoZXRldHRpaW4gb25uaXN0dW5lZXN0aSc7CiRsYW5nWydub3RhbmltYWdlJ10gPSAnTCZhdW1sO2hldGV0dCZhdW1sO3YmYXVtbDsgdGllZG9zdG8gZWkgb2xlIGt1dmEnOwokbGFuZ1snZmlsZXBpY2tlcnRpdGxlJ10gPSAnQ01TTWFkZVNpbXBsZSB0aWVkb3N0b24gdmFsaXRzZW1pbmVuJzsKJGxhbmdbJ3N1Y2Nlc3MnXSA9ICdPbm5pc3R1aSc7CiRsYW5nWydmaWxlb3BlcmF0aW9ucyddID0gJ1RpZWRvc3RvdHlvaW1pbm5vdCc7CiRsYW5nWyd0aG91c2FuZGRlbGltaXRlciddID0gJyAnOwokbGFuZ1snc2l6ZSddID0gJ0tva28nOwokbGFuZ1snZGltZW5zaW9ucyddID0gJ0x4Syc7CiRsYW5nWydhZHZhbmNlZF90YWInXSA9ICdNb25pcHVvbGluZW4nOwokbGFuZ1snaGVscCddID0gJzxoMz5NaXQmYXVtbDsgdCZhdW1sO20mYXVtbDsgdGVrZWU/PC9oMz4KCTxwPkFzZXR0YWEgayZhdW1sO3l0dCZvdW1sOyZvdW1sO24gVGlueU1DRTpuIGsmYXVtbDt5dHQmYXVtbDttaXNlbiBXWVNJV1lHLWVkaXRvcmluYS48L3A+Cgk8aDM+S3VpbmthIGsmYXVtbDt5dCZhdW1sO24gc2l0JmF1bWw7PzwvaDM+Cgk8cD5Bc2VubmEgc2UsIG1lbmUgc2VuIGomYXVtbDtsa2VlbiBrJmF1bWw7eXR0JmF1bWw7aiZhdW1sO24gYXNldHVrc2lpbiBqYSB2YWxpdHNlIG9ua28gVGlueU1DRSBrJmF1bWw7eXQmb3VtbDtzcyZhdW1sOy48L3A+CiAgPGgzPktpZWxlbnRhcmtpc3R1czwvaDM+CiAgPHA+VmVyc2lvc3RhIDIuNi4wIGwmYXVtbDtodGllbiBUaW55TUNFIHNpcyZhdW1sO2x0JmF1bWw7JmF1bWw7IHZlcmtvc3NhIG9sZXZhbiBraWVsZW50YXJraXN0dWtzZW4uIEh1b21hYSwgZXR0JmF1bWw7IHBhbHZlbGltZW4gYXNldHVrc2lzc2EgdCZhdW1sO3l0eXkgb2xsYSBTU0wgcCZhdW1sOyZhdW1sO2xsZSwgam90dGEgdCZhdW1sO20mYXVtbDsgdG9pbWlzaS4gSm9pc3NhaW4gYXNlbm51a3Npc3NhIG9uIHZhaWh0b2VodG8gbmltZWx0JmF1bWw7IHBocF9vcGVuc3NsLCBtdXR0YSBzZSB2b2kgdmFpaGRlbGxhPC9wPgoJPGgzPk9uZ2VsbWllbiBldHNpbWluZW48L2gzPgoJT3NhbGxhIGlobWlzaXN0JmF1bWw7IG9uIG9uZ2VsbWlhIHNhYWRhIFRpbnlNQ0UgbiZhdW1sO2t5bSZhdW1sOyZhdW1sO24gYXNlbm51a3NlbiB0YWkgcCZhdW1sO2l2aXR5a3NlbiBqJmF1bWw7bGtlZW4uIFQmYXVtbDtzcyZhdW1sOyBvbiB0YXJraXN0dXNsaXN0YSwgam9ua2Egdm9pdCBrJmF1bWw7eWQmYXVtbDsgbCZhdW1sO3BpIGVubmVuIGt1aW4ga3lzeXQgYXB1YS4KCTxici8+Cgk8dWw+Cgk8bGk+MS4gT2xlIGtpbHR0aSBqYSB5cml0JmF1bWw7IGwmYXVtbDtoZXR0JmF1bWw7JmF1bWw7IG1vZHVsZXMvVGlueU1DRSBoYWtlbWlzdG8gcGFsdmVsaW1lbGxlc2kuIEV0IHVza28sIGt1aW5rYSB1c2VpbiB0JmF1bWw7bSZhdW1sOyBvbiBhdXR0YW51dCBpaG1pc2kmYXVtbDsuLjwvbGk+CQoJPGxpPjIuIEpvcyBwJmF1bWw7aXZpdGl0IHV1dGVlbiB2ZXJzaW9vbiwgeXJpdCZhdW1sOyBwYWxhdXR0YWEgb2xldHVzYXNldHVrc2V0LiBUJmF1bWw7bSZhdW1sOyBlaSBvbGUgbXVrYXZhYSwgam9zIG9sZXQgdGVobnl0IHBhbGpvbiBtdXV0b2tzaWEsIG11dHRhIHZlcnNpb2lkZW4gMi4zLnggamEgMi40LnggdiZhdW1sO2xpbGwmYXVtbDsgb24gdGFwYWh0dW51dCBwYWxqb24gbXV1dG9rc2lhIG1vZHV1bGlpbi4KCTxsaT4zLiBZcml0JmF1bWw7IGxhaXR0YWEgcCZhdW1sOyZhdW1sO2xsZSBzdGFhdHRpbmVuIGtvbmZpZ3VyYWF0aW90aWVkb3N0byBtb25pcHVvbGlzaXNzYSBhc2V0dWtzc3NhLiBUJmF1bWw7bSZhdW1sOyB0b2ltaWkgb3Nhc3NhIGomYXVtbDtyamVzdGVsbWlzdCZhdW1sOyBwYXJlbW1pbiAoa3V0ZW4gQ0dJLXBvaGphaXNpc3NhKS4gSHVvbWFhLCBldHQmYXVtbDsgL3RtcC8taGFrZW1pc3Rvb24gdCZhdW1sO3l0eXkgcHlzdHkmYXVtbDsga2lyam9pdHRhbWFhbi4KCTwvdWw+Cgk8YnIvPgogIDxoMz5MaXMmYXVtbDtvc2FuIGtlaGl0dCZhdW1sO21pbmVuPC9oMz4KIFZlcnNpb3N0YSAyLjcuMCBsJmF1bWw7aHRpZW4gVGlueU1DRS1tb2R1dWxpc3NhIG9uIG1haGRvbGxpc3RhIG11aWRlbiBtb2R1dWxpZW4gcmVraXN0ZXImb3VtbDtpZCZhdW1sOyBsaXMmYXVtbDt5a3NpJmF1bWw7IHNpaWhlbi4gU2Ugdm9pIGVzaW1lcmtpa3NpIG9tYSBpa29uaSwgam9rYSBzYWxsaWkgc2lzJmF1bWw7bHQmb3VtbDtqZW4gbGlzJmF1bWw7JmF1bWw7bWlzZW4gdG9pc2VzdGEgbW9kdXVsaXN0YSwgZXNpbWVya2lrc2kgR2FsbGVyaWFzdGEuIFQmYXVtbDttJmF1bWw7biB0ZWtlbWluZW4gb24gc3VodGVlbGxpc2VuIHRla25pc3QmYXVtbDsgdGlldG9hLCBtdXR0YSBqb3Mgb2xldCBtb2R1dWxpbiBrZWhpdHQmYXVtbDtqJmF1bWw7IGphIG9sZXQga2lpbm5vc3R1bnV0IHQmYXVtbDtzdCZhdW1sOywgb2xlIGh5diZhdW1sOyBqYSBrYXRzbyBsaXMmYXVtbDt0aWV0b2EgVGlueU1DRS9kb2NzIC1oYWtlbWlzdG9zdGEuJzsKJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuOTEzNTc3MTU3LjEyOTI4NzAwMDcuMTMwNzUyMzM4NS4xMzA3NTI2MTIzLjE2JzsKJGxhbmdbJ3V0bXonXSA9ICcxNTY4NjEzNTMuMTMwMjU0NjY0My4xMC41LnV0bWNzcj1mZWVkYnVybmVyfHV0bWNjbj1GZWVkOiBjbXNtYWRlc2ltcGxlL2Jsb2cgKENNUyBNYWRlIFNpbXBsZSl8dXRtY21kPWZlZWQnOwokbGFuZ1sncWNhJ10gPSAnUDAtNTg0Mzc2OTI4LTEyOTI4NzAwMDY2NjcnOwokbGFuZ1sndXRtYyddID0gJzE1Njg2MTM1Myc7CiRsYW5nWyd1dG1iJ10gPSAnMTU2ODYxMzUzJzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/fr_FR.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2FkbWluZGVzY3JpcHRpb24nXSA9ICdVbiDDqWRpdGV1ciBXWVNJV1lHIGNvbXBsZXQgZXQgcGVyc29ubmFsaXNhYmxlJzsKJGxhbmdbJ2FkdmFuY2VkX21lbnUnXSA9ICdNZW51IGF2YW5jw6knOwokbGFuZ1snYXBwbHknXSA9ICdBcHBsaXF1ZXInOwokbGFuZ1snYXV0b3Jlc2l6ZSddID0gJ1JlZGltZW5zaW9ubmVtZW50IGF1dG9tYXRpcXVlJzsKJGxhbmdbJ2Jsb2NrX2Zvcm1hdHMnXSA9ICdGb3JtYXRzIGRpc3BvbmlibGVzJzsKJGxhbmdbJ2J1dHRvbl9uYW1lJ10gPSAnTm9tIGR1IGJvdXRvbic7CiRsYW5nWydjYW5jZWwnXSA9ICdBbm51bGVyJzsKJGxhbmdbJ2Ntc21zX2xpbmtlciddID0gJ0xpZW4gdmVycyB1bmUgcGFnZSBkZSBjb250ZW51JzsKJGxhbmdbJ2NvbnRleHRtZW51J10gPSAnTWVudSBjb250ZXh0dWVsJzsKJGxhbmdbJ2NvbnRleHRtZW51X2NvbnRlbnQnXSA9ICdDb250ZW51IGR1IG1lbnUgY29udGV4dHVlbCc7CiRsYW5nWydjb3B5J10gPSAnY29waWVyJzsKJGxhbmdbJ2NvcHlfcHJvZmlsZSddID0gJ0R1cGxpcXVlciBsZSBwcm9maWwnOwokbGFuZ1snY3NzX2NsYXNzZXMnXSA9ICdDbGFzc2VzIENTUyc7CiRsYW5nWydjdXN0b21fZHJvcGRvd24nXSA9ICdNZW51IHBlcnNvbm5hbGlzw6knOwokbGFuZ1snY3VzdG9tX2Ryb3Bkb3duX3RpdGxlJ10gPSAnVGl0cmUgZHUgbWVudSBwZXJzb25uYWxpc8OpJzsKJGxhbmdbJ2RlZmF1bHQnXSA9ICdEw6lmYXV0JzsKJGxhbmdbJ2RlZmF1bHRfZGVzaWdubWFuYWdlcl90ZW1wbGF0ZSddID0gJ0dhYmFyaXQgcGFyIGTDqWZhdXQgZHUgbW9kdWxlIGRlIGdlc3Rpb24gZHUgZGVzaWduJzsKJGxhbmdbJ2RlZmF1bHRfcHJvZmlsZV9zZXQnXSA9ICdQcm9maWwgcGFyIGTDqWZhdXQgbW9kaWZpw6knOwokbGFuZ1snZGVsZXRlX3Byb2ZpbGUnXSA9ICdTdXBwcmltZXIgbGUgcHJvZmlsJzsKJGxhbmdbJ2RlbGV0ZV9wcm9maWxlX2NvbmZpcm0nXSA9ICfDinRlcy12b3VzIHPDu3IgZGUgdm91bG9pciBzdXBwcmltZXIgY2UgcHJvZmlsID8nOwokbGFuZ1snZGVzaWduX2NzcyddID0gJ0Rlc2lnbiDDoCB1dGlsaXNlciBwb3VyIGxlcyBmZXVpbGxlcyBkZSBzdHlsZXMnOwokbGFuZ1snZG9jdW1lbnRhdGlvbiddID0gJ0RvY3VtZW50YXRpb24mbmJzcDsnOwokbGFuZ1snZWRpdF9wcm9maWxlJ10gPSAnTW9kaWZpZXIgbGUgcHJvZmlsJzsKJGxhbmdbJ2VuYWJsZV9jb250ZXh0bWVudSddID0gJ0FjdGl2ZXIgbGUgbWVudSBjb250ZXh0dWVsIChjbGljIGRyb2l0KSc7CiRsYW5nWydlbmFibGVfY3VzdG9tX2Ryb3Bkb3duJ10gPSAnQWN0aXZlciBsZSBtZW51IHBlcnNvbm5hbGlzw6knOwokbGFuZ1snZW5hYmxlX2xpbmtlciddID0gJ0NoYXJnZXIgbGUgcGx1Z2luIGRlIGxpZW5zIGludGVybmVzJzsKJGxhbmdbJ2VuYWJsZV91c2VyX3RlbXBsYXRlcyddID0gJ0FjdGl2ZXIgbGVzIGdhYmFyaXRzIHV0aWxpc2F0ZXVycyc7CiRsYW5nWydlcnJvcl9kZWxldGVfcHJvZmlsZSddID0gJ1VuZSBlcnJldXIgZXN0IHN1cnZlbnVlIGxvcnMgZGUgbGEgc3VwcHJlc3Npb24gZHUgcHJvZmlsJzsKJGxhbmdbJ2Vycm9yX2Nhbm5vdF9kZWxldGVfZGVmYXVsdF9wcm9maWxlJ10gPSAnRXJyZXVyIDogbGUgcHJvZmlsIHBhciBkw6lmYXV0IG5lIHBldXQgcGFzIMOqdHJlIHN1cHByaW3DqSc7CiRsYW5nWydlcnJvcl9zYXZpbmdfcHJvZmlsZSddID0gJ1VuZSBlcnJldXIgZXN0IHN1cnZlbnVlIHBlbmRhbnQgbGUgcHJvY2Vzc3VzIGRlIHNhdXZlZ2FyZGUnOwokbGFuZ1snZXh0ZXJuYWxfbW9kdWxlcyddID0gJ01vZHVsZXMgZXh0ZXJuZXMnOwokbGFuZ1snZXh0ZXJuYWxfbW9kdWxlc19zaG93X21lbnV0ZXh0J10gPSAnQWZmaWNoZXIgbGUgdGl0cmUgZHUgYm91dG9uIGRhbnMgbGEgYmFycmUgZFwnb3V0aWxzIC0gZMOpY29jaMOpID0gaWPDtG5lIHNldWxlJzsKJGxhbmdbJ2V4dHJhX2pzJ10gPSAnQ29kZSBqYXZhc2NyaXB0IHN1cHBsw6ltZW50YWlyZSAoYXBwZWzDqSBkYW5zIGxlIHNjcmlwdCA8ZW0+aW5pdCgpPC9lbT4pJzsKJGxhbmdbJ2ZpbGVtYW5hZ2VyJ10gPSAnR2VzdGlvbm5haXJlIGRlIGZpY2hpZXJzJzsKJGxhbmdbJ2ZpbGVtYW5hZ2VyX2F2aWFyeV9hY3RpdmUnXSA9ICdBY3RpdmVyIGxcJ8OpZGl0ZXVyIGRcJ2ltYWdlcyBBdmlhcnknOwokbGFuZ1snZmlsZW1hbmFnZXJfYXZpYXJ5X2FwaUtleSddID0gJ0Nsw6kgQVBJIEF2aWFyeSc7CiRsYW5nWydmaWxlbWFuYWdlcl9jaG1vZF9kaXJzJ10gPSAnQ0hNT0QgZG9zc2llcnMnOwokbGFuZ1snZmlsZW1hbmFnZXJfY2htb2RfZmlsZXMnXSA9ICdDSE1PRCBmaWNoaWVycyc7CiRsYW5nWydmaWxlbWFuYWdlcl9jb3B5X2N1dF9kaXJzJ10gPSAnQ291cGVyIGV0IGNvcGllciBkZXMgZG9zc2llcnMnOwokbGFuZ1snZmlsZW1hbmFnZXJfY29weV9jdXRfZmlsZXMnXSA9ICdDb3VwZXIgZXQgY29waWVyIGRlcyBmaWNoaWVycyc7CiRsYW5nWydmaWxlbWFuYWdlcl9jcmVhdGVfZm9sZGVycyddID0gJ0Nyw6llciBkZXMgZG9zc2llcnMnOwokbGFuZ1snZmlsZW1hbmFnZXJfY3JlYXRlX3RleHRfZmlsZXMnXSA9ICdDcsOpZXIgZGVzIGZpY2hpZXJzIHRleHRlJzsKJGxhbmdbJ2ZpbGVtYW5hZ2VyX2RlbGV0ZV9maWxlcyddID0gJ1N1cHByaW1lciBkZXMgZmljaGllcnMnOwokbGFuZ1snZmlsZW1hbmFnZXJfZGVsZXRlX2ZvbGRlcnMnXSA9ICdTdXBwcmltZXIgZGVzIGRvc3NpZXJzJzsKJGxhbmdbJ2ZpbGVtYW5hZ2VyX2R1cGxpY2F0ZV9maWxlcyddID0gJ0R1cGxpcXVlciBkZXMgZmljaGllcnMnOwokbGFuZ1snZmlsZW1hbmFnZXJfZWRpdF90ZXh0X2ZpbGVzJ10gPSAnRWRpdGVyIGxlcyBmaWNoaWVycyB0ZXh0ZSc7CiRsYW5nWydmaWxlbWFuYWdlcl9pbWFnZV9yZXNpemluZyddID0gJ1JlZGltZW5zaW9ubmVyIGF1dG9tYXRpcXVlbWVudCBsZXMgaW1hZ2VzIGFwcsOocyB0w6lsw6l2ZXJzZW1lbnQnOwokbGFuZ1snZmlsZW1hbmFnZXJfaW1hZ2VfcmVzaXppbmdfdGl0bGUnXSA9ICdSZWRpbWVuc2lvbm5lbWVudCBhdXRvbWF0aXF1ZSBkZXMgaW1hZ2VzJzsKJGxhbmdbJ2ZpbGVtYW5hZ2VyX2ltYWdlX3Jlc2l6aW5nX2hlaWdodCddID0gJ0hhdXRldXIgbWF4IGRlcyBpbWFnZXMgYXByw6hzIHJlZGltZW5zaW9ubmVtZW50JzsKJGxhbmdbJ2ZpbGVtYW5hZ2VyX2ltYWdlX3Jlc2l6aW5nX3dpZHRoJ10gPSAnTGFyZ2V1ciBtYXggZGVzIGltYWdlcyBhcHLDqHMgcmVkaW1lbnNpb25uZW1lbnQnOwokbGFuZ1snZmlsZW1hbmFnZXJfcGhvdG9fZWRpdG9yJ10gPSAnRWRpdGV1ciBwaG90byBBdmlhcnknOwokbGFuZ1snZmlsZW1hbmFnZXJfcHJldmlld190ZXh0X2ZpbGVzJ10gPSAnUHLDqXZpc3VhbGlzYXRpb24gZGVzIGZpY2hpZXJzIHRleHRlJzsKJGxhbmdbJ2ZpbGVtYW5hZ2VyX3JlbmFtZV9maWxlcyddID0gJ1Jlbm9tbWVyIGxlcyBmaWNoaWVycyc7CiRsYW5nWydmaWxlbWFuYWdlcl9yZW5hbWVfZm9sZGVycyddID0gJ1Jlbm9tbWVyIGxlcyBkb3NzaWVycyc7CiRsYW5nWydmaWxlbWFuYWdlcl91cGxvYWRfZmlsZXMnXSA9ICdUw6lsw6l2ZXJzZXIgZGVzIGZpY2hpZXJzJzsKJGxhbmdbJ2ZpbGVtYW5hZ2VyX29wdGlvbnMnXSA9ICdPcHRpb25zIGR1IGdlc3Rpb25uYWlyZSBkZSBmaWNoaWVycyc7CiRsYW5nWydmaWxlbWFuYWdlcl91c2UnXSA9ICdBY3RpdmVyIGxlIGdlc3Rpb25uYWlyZSBkZSBmaWNoaWVycyc7CiRsYW5nWydmcmllbmRseW5hbWUnXSA9ICdFZGl0ZXVyIFdZU0lXWUcgVGlueU1DRSc7CiRsYW5nWydmb3JjZWRfcm9vdF9ibG9jayddID0gJ0ZvcmNlciBsZSBzYXV0IGRlIGxpZ25lIGR1IHBhcmFncmFwaGUnOwokbGFuZ1snZ2VuZXJhbCddID0gJ0fDqW7DqXJhbCc7CiRsYW5nWydnbG9iYWxfc2V0dGluZ3MnXSA9ICdQYXJhbcOodHJlcyBnbG9iYXV4JzsKJGxhbmdbJ2dyb3VwX2Zyb250ZW5kJ10gPSAnVXRpbGlzYXRldXIgZHUgc2l0ZSc7CiRsYW5nWydoZWxwX2FkdmFuY2VkX21lbnUnXSA9ICdWb3VzIHBvdXZleiBhY3RpdmVyIGNldHRlIG9wdGlvbiBzaSB2b3VzIHNvdWhhaXRleiBhbGxlciBwbHVzIGxvaW4gZGFucyBsYSBwZXJzb25uYWxpc2F0aW9uIGR1IG1lbnUuIE1vZGlmaWV6IGxlIG1lbnUgZ3LDomNlIGF1IGNoYW1wIGZvdXJuaS4gTFwnYWN0aXZhdGlvbiBkZSBjZXR0ZSBvcHRpb24gZMOpc2FjdGl2ZXJhIGxlIG1lbnUgcGFyIGTDqWZhdXQnOwokbGFuZ1snaGVscF9hdXRvcmVzaXplJ10gPSAnQWN0aXZlIGxlIHBsdWdpbiA8ZW0+YXV0b3Jlc2l6ZTwvZW0+IHBlcm1ldHRhbnQgw6AgbFwnw6lkaXRldXIgZGUgbW9kaWZpZXIgc2EgaGF1dGV1ciBlbiBmb25jdGlvbiBkdSBjb250ZW51JzsKJGxhbmdbJ2hlbHBfYXZpYXJ5J10gPSAnTFwnw6lkaXRldXIgQXZpYXJ5IGVzdCB1biDDqWRpdGV1ciBkXCdpbWFnZXMgZXh0ZXJuZSBmb3VybmkgcGFyIEFkb2JlLic7CiRsYW5nWydoZWxwX2Rlc2lnbl9jc3MnXSA9ICdUaW55TUNFIHBldXQgY2hhcmdlciB1biBqZXUgZGUgZmV1aWxsZXMgZGUgc3R5bGVzIGF0dGFjaMOpZXMgw6AgdW4gZGVzaWduICh2aWEgbGUgR2VzdGlvbm5haXJlIGR1IGRlc2lnbikgYWZpbiBkXCdhbcOpbGlvcmVyIGxlIHJlbmR1IGdyYXBoaXF1ZS48YnI+PGJyPkRhbnMgbGUgZ2FiYXJpdCBqYXZhc2NyaXB0IHBhciBkw6lmYXV0LCBjZSBwYXJhbcOodHJlIGVzdCBpZ25vcsOpIHNpIGxhIGJhbGlzZSB7Y29udGVudH0gcXVpIGfDqHJlIGxlcyBibG9jcyBjb21wcmVuZCB1biBwYXJhbcOodHJlIDxlbT5jc3NuYW1lPC9lbT4uIENlIGNvbXBvcnRlbWVudCBwZXV0IMOqdHJlIG1vZGlmacOpIGF2ZWMgdW4gZ2FiYXJpdCBqYXZhc2NyaXB0IHN1ciBtZXN1cmUuPGJyPjxicj48c3Ryb25nPkltcG9ydGFudCA6PC9zdHJvbmc+IHNpIHZvdXMgdXRpbGlzZXogY2V0dGUgZm9uY3Rpb24sIHZvdXMgZGV2cmV6IHZpZGVyIGxlIGNhY2hlIGR1IENNUyBhcHLDqHMgY2hhcXVlIGNoYW5nZW1lbnQgc3VyIGxlcyBmZXVpbGxlcyBkZSBzdHlsZXMgYXNzb2Npw6llcy4nOwokbGFuZ1snaGVscF9lbmFibGVfY3VzdG9tX2Ryb3Bkb3duJ10gPSAnQWpvdXRlIHVuIG1lbnUgc3VyIG1lc3VyZSBwZXJtZXR0YW50IGxcJ2Fqb3V0IGRlIHBldGl0cyBtb3JjZWF1eCBkZSBjb2RlcyBhdSBjb250ZW51LiBOXCdvdWJsaWV6IHBhcyBkXCdham91dGVyIGxlIGJvdXRvbiA8ZW0+PHN0cm9uZz5jdXN0b21kcm9wZG93bjwvc3Ryb25nPjwvZW0+IMOgIGxhIGJhcnJlIGRcJ291dGlscyBzaSB2b3VzIHNvdWhhaXRleiBxdVwnaWwgeSBhcHBhcmFpc3NlLiBMZSBtZW51IDxlbT5JbnPDqXJlcjwvZW0+IGxcJ2FmZmljaGVyYSBkYW5zIHRvdXMgbGVzIGNhcyc7CiRsYW5nWydoZWxwX2V4dGVybmFsX21vZHVsZXMnXSA9ICdDZXJ0YWlucyBtb2R1bGVzIENNUyBNYWRlIFNpbXBsZSBwZXV2ZW50IGfDqW7DqXJlciB1biBtZW51IHBvdXIgbFwnw6lkaXRldXIgVGlueU1DRS4gTWVyY2kgZGUgc8OpbGVjdGlvbm5lciBxdWVscyBtb2R1bGVzIGV4dGVybmVzIGRvaXZlbnQgw6p0cmUgY2hhcmfDqXMuIE5cJ291YmxpZXogcGFzIGRcJ2Fqb3V0ZXIgbGUgYm91dG9uIGFzc29jacOpIGF1IG1vZHVsZSBkYW5zIGxhIGJhcmUgZFwnb3V0aWxzLiBMZSBtZW51IDxlbT5JbnPDqXJlcjwvZW0+IGFmZmljaGVyYSDDqWdhbGVtZW50IGxlIG1lbnUuJzsKJGxhbmdbJ2hlbHBfZXh0cmFfanMnXSA9ICdWb3VzIHBvdXZleiBpbnPDqXJlciBkdSBjb2RlIGphdmFzY3JpcHQgcG91ciBsYSBjb25maWd1cmF0aW9uIGRlIFRpbnlNQ0UuIE1lcmNpIGRlIHPDqXBhcmVyIGNoYXF1ZSBlbnRyw6llIGF2ZWMgdW5lIHZpcmd1bGUuIENvbnN1bHRleiBsYSBkb2N1bWVudGF0aW9uIGRlIFRpbnlNQ0UgcG91ciBlbiBzYXZvaXIgcGx1cy4nOwokbGFuZ1snaGVscF9maWxlbWFuYWdlcl9pbWFnZV9yZXNpemluZyddID0gJ0FwcsOocyBsZSB0w6lsw6l2ZXJzZW1lbnQgZFwndW5lIGltYWdlLCBsZSBnZXN0aW9ubmFpcmUgZGUgZmljaGllcnMgcGV1dCBhdXRvbWF0aXF1ZW1lbnQgbGEgcmVkaW1lbnNpb25uZXIgYXV4IGRpbWVuc2lvbnMgbWF4aW1hbGVzIGluZGlxdcOpZXMuIFV0aWxlIHBvdXIgw6l2aXRlciBkZSBjb25zZXJ2ZXIgZGVzIGltYWdlcyB0cm9wIGdyYW5kZXMgZXQgbG91cmRlcyBkYW5zIGxlcyBwYWdlcy4nOwokbGFuZ1snaGVscF9maWxlbWFuYWdlcl91c2UnXSA9ICdBY3RpdmVyIGxlIGdlc3Rpb25uYWlyZSBkZSBmaWNoaWVycyAtIE5vdGV6IHF1ZSBwb3VyIHJhaXNvbiBkZSBzw6ljdXJpdMOpLCBsZSBnZXN0aW9ubmFpcmUgZGUgZmljaGllcnMgbmUgc2VyYSBqYW1haXMgY2hhcmfDqSBob3JzIGRlIGxcJ2FkbWluaXN0cmF0aW9uPGJyPjxicj5MZSBnZXN0aW9ubmFpcmUgZGUgZmljaGllcnMgc2VyYSBpbmNsdXMgZGFucyBsZXMgYm9pdGVzIGRlIGRpYWxvZ3VlIDxlbT5JbnPDqXJlciB1biBsaWVuPC9lbT4gZXQgPGVtPkluc8OpcmVyIHVuZSBpbWFnZTwvZW0+LCBtYWlzIHZvdXMgcG91dmV6IMOpZ2FsZW1lbnQgYWpvdXRlciBsZSBib3V0b24gPGVtPnJlc3BvbnNpdmVmaWxlbWFuYWdlcjwvZW0+IMOgIHZvdHJlIGJhcnJlIGRcJ291dGlscyBwb3VyIHVuIGFjY8OocyBkaXJlY3QuJzsKJGxhbmdbJ2hlbHBfZm9yY2VkX3Jvb3RfYmxvY2snXSA9ICdDZXR0ZSBvcHRpb24gdm91cyBwZXJtZXQgZGUgdm91cyBhc3N1cmVyIHF1ZSBsZSB0ZXh0ZSBvdSBsZXMgw6lsw6ltZW50cyBub24tYmxvY3Mgc29pZW50IHRvdWpvdXJzIGluY2x1cyBkYW5zIHVuZSBiYWxpc2UgPHA+LiBQYXIgZXhlbXBsZSwgPHN0cm9uZz50ZXh0ZTwvc3Ryb25nPiBzZXJhIHRyYWR1aXQgZW4gPHA+PHN0cm9uZz50ZXh0ZTwvc3Ryb25nPjwvcD4uPGJyPjxicj5TaSBjZXR0ZSBvcHRpb24gZXN0IGTDqWNvY2jDqWUsIGxcJ8OpZGl0ZXVyIG5cJ2Fqb3V0ZXJhIGphbWFpcyBkZSBiYWxpc2UgPHN0cm9uZz48cD48L3N0cm9uZz4gbG9ycyBkXCd1biBzYXV0IGRlIGxpZ25lLCBzZXVsZW1lbnQgPHN0cm9uZz48YnI+PC9zdHJvbmc+LiBWb3VzIGRldnJleiBhbG9ycyB1dGlsaXNlciBsYSBjb21iaW5haXNvbiBTaGlmdCtFbnRyw6llIHBvdXIgcHJvZHVpcmUgdW5lIGJhbGlzZSA8c3Ryb25nPjxwPjwvc3Ryb25nPi4nOwokbGFuZ1snaGVscF9pbWFnZV9jbGFzc2VzJ10gPSAnSW5kaXF1ZXogcXVlbGxlcyBjbGFzc2VzIENTUyBsZXMgdXRpbGlzYXRldXJzIHBvdXJyb250IGFwcGxpcXVlciDDoCB1bmUgaW1hZ2UuIFNcJ2lsIGxlIHNvdWhhaXRlLCBsXCd1dGlsaXNhdGV1ciBwb3VycmEgY2hvaXNpciBsYSBjbGFzc2UgbG9ycyBkZSBsXCdham91dC/DqWRpdGlvbiBkXCd1bmUgaW1hZ2UuJzsKJGxhbmdbJ2hlbHBfbGlua19jbGFzc2VzJ10gPSAnSW5kaXF1ZXogcXVlbGxlcyBjbGFzc2VzIENTUyBsZXMgdXRpbGlzYXRldXJzIHBvdXJyb250IGFwcGxpcXVlciDDoCB1biBsaWVuLiBTXCdpbCBsZSBzb3VoYWl0ZSwgbFwndXRpbGlzYXRldXIgcG91cnJhIGNob2lzaXIgbGEgY2xhc3NlIGxvcnMgZGUgbFwnYWpvdXQvw6lkaXRpb24gZFwndW4gbGllbi4nOwokbGFuZ1snaGVscF9qc190ZW1wbGF0ZSddID0gJ0xlIG1vZHVsZSBUaW55TUNFIHBldXQgdXRpbGlzZXIgdW4gZ2FiYXJpdCBqYXZhc2NyaXB0IHN1ciBtZXN1cmUuIERlIGNldHRlIG1hbmnDqHJlLCB2b3VzIHBvdXZleiB0b3RhbGVtZW50IGFkYXB0ZXIgbGUgY29tcG9ydGVtZW50IGRlIFRpbnlNQ0Ugw6Agdm9zIGJlc29pbnMuPGJyPjxicj5TaSB2b3VzIHNvdWhhaXRleiB1dGlsaXNlciBsZSBmaWNoaWVyIGZvdXJuaSBhdmVjIGxlIG1vZHVsZSwgY2hvaXNpc3NleiA8ZW0+R2FiYXJpdCBvcmlnaW5hbCBmb3VybmkgYXZlYyBsZSBtb2R1bGU8L2VtPi48YnI+PGJyPlNpIHZvdXMgw6p0ZXMgZMOpdmVsb3BwZXVyLCB2b3VzIHBvdXZleiBjaG9pc2lyIGRcJ3V0aWxpc2VyIHVuIGdhYmFyaXQgaXNzdSBkdSBnZXN0aW9ubmFpcmUgZGUgZGVzaWduLiBTb3lleiBjb25zY2llbnRzIGNlcGVuZGFudCBkdSBmYWl0IHF1ZSB2b3VzIGRldnJleiBwcm9iYWJsZW1lbnQgbWV0dHJlIMOgIGpvdXIgdm90cmUgZmljaGllciDDoCBjaGFxdWUgbm91dmVsbGUgdmVyc2lvbiBkdSBtb2R1bGUgVGlueU1DRS4nOwokbGFuZ1snaGVscF9tZW51YmFyJ10gPSAnSW5kaXF1ZXogbGVzIGVudHLDqWVzIGRlIG1lbnUgw6AgYWZmaWNoZXIuIENvbnN1bHRleiBsYSBkb2N1bWVudGF0aW9uIHBvdXIgZW4gc2F2b2lyIHBsdXMuJzsKJGxhbmdbJ2hlbHBfcGx1Z2lucyddID0gJ1RpbnlNQ0UgaW5jbHVzIHVuIGNlcnRhaW4gbm9tYnJlIGRlIDxlbT5wbHVnaW5zPC9lbT4gYWZpbiBkXCfDqXRlbmRyZSBzZXMgcG9zc2liaWxpdMOpcy4gQXZhbnQgZFwnYWpvdXRlciB1biBib3V0b24gw6AgbGEgYmFycmUgZFwnb3V0aWxzIG91IGF1IG1lbnUsIHZvdXMgZGV2cmV6IHByb2JhbGVtZW50IGxcJ2Fqb3V0ZXIgaWNpLiBOb3RleiBxdWUgbGVzIHBsdWdpbnMgPGVtPmNtc21zX2xpbmtlcjwvZW0+LCA8ZW0+dGVtcGxhdGU8L2VtPiwgPGVtPmNvbnRleHRtZW51PC9lbT4gZXQgPGVtPnJlc3BvbnNpdmVmaWxlbWFuYWdlcjwvZW0+IHNvbnQgY2hhcmfDqXMgYXV0b21hdGlxdWVtZW50Ljxicj5Db25zdWx0ZXogbGEgZG9jdW1lbnRhdGlvbiBwb3VyIGF2b2lyIGxhIGxpc3RlIGNvbXBsw6h0ZSBkZXMgcGx1Z2lucyBkaXNwb25pYmxlcy4nOwokbGFuZ1snaGVscF9wcmlvcml0eSddID0gJ0NlIHBhcmFtw6h0cmUgZXN0IHV0aWxpc8OpIHBvdXIgZMOpdGVybWluZXIgcXVlbCBwcm9maWwgZG9pdCDDqnRyZSBjaGFyZ8OpIGVuIHByaW9yaXTDqSBxdWFuZCB1biB1dGlsaXNhdGV1ciBlc3QgcmF0dGFjaMOpIMOgIHBsdXNpZXVycyBncm91cGVzIGNvcnJlc3BvbmRhbnQgw6AgcGx1c2lldXJzIHByb2ZpbHMgVGlueU1DRS4gTGUgbm9tYnJlIGxlIHBsdXMgcGV0aXQgYSBsYSBwcmlvcml0w6kgbGEgcGx1cyDDqWxldsOpZS48YnI+PGJyPkV4ZW1wbGUgOiBsXCd1dGlsaXNhdGV1ciAxIGVzdCByYXR0YWNow6kgYXV4IGdyb3VwZXMgQSBldCBDLiBMZSBncm91cGUgQSBhIGxlIHByb2ZpbCBUaW55TUNFIFksIGxlIEMgbGUgWi4gTGUgcHJvZmlsIHF1ZSBsXCd1dGlsaXNhdGV1ciB2ZXJyYSBzXCdhZmZpY2hlciBzZXJhIGNlbHVpIHF1aSBhIGxhIHByaW9yaXTDqSBsYSBwbHVzIGJhc3NlIGVudHJlIFkgZXQgWi4nOwokbGFuZ1snaGVscF9yZWxhdGl2ZV91cmxzJ10gPSAnU2kgY2V0dGUgb3B0aW9uIGVzdCBjb2Now6llLCB0b3V0ZXMgbGVzIFVSTHMgZFwnaW1hZ2VzL2xpZW5zIHNlcm9udCBkw6lmaW5pZXMgcmVsYXRpdmVtZW50IMOgIGxcJ3VybCBwcmluY2lwYWxlIGR1IHNpdGUgKGV4ZW1wbGUgOiA8ZW0+L3VwbG9hZHMvaW1hZ2VzL21vbi1pbWFnZS5qcGc8L2VtPikuPGJyPjxicj5TaSBkw6ljb2Now6llLCBsZXMgdXJscyBkZXMgaW1hZ2VzIGV0IGxpZW5zIHNlcm9udCBkw6lmaW5pZXMgZGUgbWFuacOocmUgYWJzb2x1ZSBkYW5zIGxlIGNvZGUgc291cmNlIChleGVtcGxlIDogPGVtPmh0dHA6Ly93d3cubW9uLXNpdGUuY29tL3VwbG9hZHMvaW1hZ2VzL21vbi1pbWFnZS5qcGc8L2VtPikuJzsKJGxhbmdbJ2hlbHBfc2hvd19zdGF0dXNiYXInXSA9ICdBZmZpY2hlciBvdSBtYXNxdWVyIGxhIGJhcnJlIGRlIHN0YXR1dC4gTFwnYWN0aXZhdGlvbiBkZSBsXCdvcHRpb24gZGUgcmVkaW1lbnNpb25uZW1lbnQgYWZmaWNoZXJhIGNldHRlIGJhcnJlIGRhbnMgdG91cyBsZXMgY2FzJzsKJGxhbmdbJ2hlbHBfc3R5bGVfZm9ybWF0cyddID0gJ0xlcyB1dGlsaXNhdGV1cnMgcGV1dmVudCBpbnPDqXJlciBkZXMgYmFsaXNlcyBwcsOpLWZvcm1hdMOpZXMgYXZlYyB1biBtZW51IDxlbT5Gb3JtYXRzPC9lbT4uIFZvdXMgcG91dmV6IGljaSBjaG9pc2lyIHF1ZWxzIHN0eWxlcyBzZXJvbnQgZGlzcG9uaWJsZXMgZGFucyBjZSBtZW51LiBOb3RleiBxdWUgZGFucyBsZSBjYXMgZGVzIGNsYXNzZXMsIHZvdXMgZGV2cmV6IGFqb3V0ZXIgbGVzIHLDqGdsZXMgQ1NTIGRhbnMgbGVzIGZldWlsbGVzIGRlIHN0eWxlcyBhcHByb3ByacOpZXMgc2kgdm91cyBzb3VoYWl0ZXogdW4gcmVuZHUgZ3JhcGhpcXVlIGRpZmbDqXJlbnQuIENvbnN1bHRleiBsYSBkb2N1bWVudGF0aW9uIHBvdXIgZW4gc2F2b2lyIHBsdXMuPGJyPjxicj5OXCdvdWJsaWV6IHBhcyBkXCdham91dGVyIGxlIGJvdXRvbiA8ZW0+c3R5bGVzZWxlY3Q8L2VtPiDDoCBsYSBiYXJyZSBkXCdvdXRpbHMgc2kgdm91cyBsZSBzb3VoYWl0ZXouJzsKJGxhbmdbJ2hlbHBfdG9vbGJhciddID0gJ0luZGlxdWV6IHF1ZWxzIGJvdXRvbnMgYWZmaWNoZXIgZGFucyBsYSBiYXJyZSBkXCdvdXRpbHMgc291cyBmb3JtZSBkXCdpY8O0bmVzLiBOXCdvdWJsaWV6IHBhcyBkZSBjaGFyZ2VyIGxlcyBwbHVnaW5zIGFwcHJvcHJpw6lzIHNpIGJlc29pbi4nOwokbGFuZ1snaGVscF91c2VfY3VzdG9tX2Jsb2NrX2Zvcm1hdHMnXSA9ICdTw6lsZWN0aW9ubmV6IGxlcyBmb3JtYXRzIHF1ZSBsZXMgdXRpbGlzYXRldXJzIHBvdXJyb250IHPDqWxlY3Rpb25uZXIuIENldHRlIG9wdGlvbiBuZSBmb25jdGlvbm5lIHF1XCdhdmVjIGxlIGJvdXRvbiA8ZW0+Zm9ybWF0c2VsZWN0PC9lbT4gZXQgcG91ciBsZXMgw6lsw6ltZW50cyBkZSB0eXBlIGJsb2MgKGgxLi4uNiwgZGl2LCBwcmV2LCAuLi4pJzsKJGxhbmdbJ2hlbHBfdXNlcl90ZW1wbGF0ZXMnXSA9ICdMZXMgZ2FiYXJpdHMgdXRpbGlzYXRldXIgc29udCBkZXMgZ2FiYXJpdHMgSFRNTCBxdWUgbFwndXRpbGlzYXRldXIgcGV1dCBpbmNsdXJlIGRhbnMgbGUgY29udGVudSBncsOiY2UgYXUgcGx1Z2luIDxlbT50ZW1wbGF0ZTwvZW0+LiBWb3VzIHBvdXZleiBjcsOpZXIgYXV0YW50IGRlIGdhYmFyaXRzIHF1ZSBuw6ljZXNzYWlyZSBkYW5zIGxlIGdlc3Rpb25uYWlyZSBkZSBkZXNpZ24gZHUgQ01TICh0eXBlIGR1IGdhYmFyaXQgOiBHYWJhcml0IHV0aWxpc2F0ZXVyIFRpbnlNQ0UpLjxicj48YnI+VW5lIGZvaXMgY2V0dGUgb3B0aW9uIGFjdGl2w6llLCB2b3VzIHBvdXZleiBham91dGVyIGxlIGJvdXRvbiA8ZW0+dGVtcGxhdGU8L2VtPiDDoCB2b3RyZSBiYXJyZSBkXCdvdXRpbHMuIElsIHNlcmEgw6lnYWxlbWVudCBhdXRvbWF0aXF1ZW1lbnQgYWpvdXTDqSDDoCBsYSBiYXJyZSBkZSBtZW51Lic7CiRsYW5nWydoZWxwX3VzZXJncm91cHMnXSA9ICdTw6lsZWN0aW9ubmV6IHF1ZWwgZ3JvdXBlIGRcJ3V0aWxpc2F0ZXVycyB1dGlsaXNlcmEgY2UgcHJvZmlsLiBOb3RleiBxdWUgbGUgZmFpdCBkZSBjaG9pc2lyIHVuIGdyb3VwIGTDqWrDoCBhZmZlY3TDqSBwYXIgYWlsbGV1cnMgbGUgZMOpbGllcmEgZHUgcHLDqWPDqWRlbnQgcHJvZmlsLiBTaSBhdWN1biBwcm9maWwgblwnZXN0IHJhdHRhY2jDqSDDoCB1biBncm91cGUgZFwndXRpbGlzYXRldXJzLCBsZSBwcm9maWwgcGFyIGTDqWZhdXQgc2VyYSBjaGFyZ8OpLic7CiRsYW5nWydpZCddID0gJ0lEJm5ic3A7JzsKJGxhbmdbJ2ltYWdlX2FkdnRhYiddID0gJ0FjdGl2ZXIgbGVzIG9wdGlvbnMgYXZhbmPDqWVzIHBvdXIgbGVzIGltYWdlcyAoc3R5bGUsIGJvcmR1cmUsIGVzcGFjZW1lbnQpJzsKJGxhbmdbJ2ltYWdlX2NsYXNzZXMnXSA9ICdDbGFzc2VzIENTUyBwb3V2YW50IMOqdHJlIGFwcGxpcXXDqWVzIGF1eCBpbWFnZXMnOwokbGFuZ1snaW1hZ2VfY2xhc3Nlc19pbmZvJ10gPSAnVW5lIGNsYXNzZSBwYXIgbGlnbmUsIGV4ZW1wbGUgOiA8Y29kZT48ZW0+SW1hZ2UgYXZlYyBib3JkdXJlPWJvcmRlcmVkIGJvcmRlci1yb3VuZDwvZW0+PC9jb2RlPic7CiRsYW5nWydpbWFnZV9wbHVnaW4nXSA9ICdPcHRpb25zIGR1IHBsdWdpbiBJbWFnZSc7CiRsYW5nWydpbmZvX2xpbmtlcl9hdXRvY29tcGxldGUnXSA9ICdDb21tZW5jZXogcGFyIHRhcGVyIHF1ZWxxdWVzIGNhcmFjdMOocmVzIGR1IG5vbSBkZSBsYSBwYWdlIG91IGRlIHNvbiBhbGlhcy4gVG91cyBsZXMgbm9tcyBjb3JyZXNwb25kYW50cyBzZXJvbnQgYWZmaWNow6lzIGRhbnMgdW5lIGxpc3RlLic7CiRsYW5nWydpbnN0YWxsX3Byb2ZpbGVfYWRtaW4nXSA9ICdBZG1pbmlzdHJhdGV1cnMnOwokbGFuZ1snaW5zdGFsbF9wcm9maWxlX2FkdmFuY2VkJ10gPSAnQXZhbmPDqSc7CiRsYW5nWydpbnN0YWxsX3Byb2ZpbGVfZnJvbnRlbmQnXSA9ICdVdGlsaXNhdGV1cnMgc2l0ZSc7CiRsYW5nWydpbnN0YWxsX3Byb2ZpbGVfbWluaW1hbCddID0gJ01pbmltYWwmbmJzcDsnOwokbGFuZ1snaW5zdGFsbF9wcm9maWxlX3N0YW5kYXJkJ10gPSAnU3RhbmRhcmQmbmJzcDsnOwokbGFuZ1snanNfdGVtcGxhdGUnXSA9ICdHYWJhcml0IEphdmFzY3JpcHQnOwokbGFuZ1snbGlua19jbGFzc2VzJ10gPSAnQ2xhc3NlcyBDU1MgcG91dmFudCDDqnRyZSBhcHBsaXF1w6llcyBhdXggbGllbnMnOwokbGFuZ1snbGlua19jbGFzc2VzX2luZm8nXSA9ICdVbmUgY2xhc3NlIHBhciBsaWduZSwgZXhlbXBsZSA6IDxjb2RlPjxlbT5Cb3V0b24gYmxldT1idG4gYnRuLWJsdWU8L2VtPjwvY29kZT4nOwokbGFuZ1snbG9hZGluZ19pbmZvJ10gPSAnQ2hhcmdlbWVudC4uLic7CiRsYW5nWydtZW51YmFyJ10gPSAnQmFycmUgZGUgbWVudSc7CiRsYW5nWyduYW1lJ10gPSAnTm9tJzsKJGxhbmdbJ25ld19wcm9maWxlJ10gPSAnQ3LDqWVyIHVuIG5vdXZlYXUgcHJvZmlsJzsKJGxhbmdbJ25ld3dpbmRvdyddID0gJ05vdXZlbGxlIGZlbsOqdHJlJzsKJGxhbmdbJ25vX2Rlc2lnbl9saW5rZWQnXSA9ICdBdWN1biBkZXNpZ24nOwokbGFuZ1snbm9uZSddID0gJ0F1Y3VuJzsKJGxhbmdbJ29yaWdfanNfdGVtcGxhdGVfZmlsZSddID0gJ0dhYmFyaXQgb3JpZ2luYWwgZm91cm5pIGF2ZWMgbGUgbW9kdWxlJzsKJGxhbmdbJ3BsdWdpbnMnXSA9ICdQbHVnaW5zJm5ic3A7JzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnTFwnw6lkaXRldXIgVGlueU1DRSBhIMOpdMOpIGluc3RhbGzDqSBhdmVjIHN1Y2PDqHMuIDxzdHJvbmc+SW1wb3J0YW50IDo8L3N0cm9uZz4gc2kgdm91cyB1dGlsaXNleiBsYSByw6nDqWNyaXR1cmUgZFwnVVJMLCB2b3VzIGRldmV6IG1ldHRyZSDDoCBqb3VyIHZvdHJlIGZpY2hpZXIgLmh0YWNjZXNzIChjb25zdWx0ZXogbGEgcGFnZSBkXCdhaWRlIHBvdXIgZW4gc2F2b2lyIHBsdXMpJzsKJGxhbmdbJ3ByaW9yaXR5J10gPSAnUHJpb3JpdMOpJzsKJGxhbmdbJ3Byb2ZpbGVfY29waWVkJ10gPSAnTGUgcHJvZmlsIGEgw6l0w6kgZHVwbGlxdcOpIGF2ZWMgc3VjY8Oocyc7CiRsYW5nWydwcm9maWxlX2RlbGV0ZWQnXSA9ICdMZSBwcm9maWwgYSDDqXTDqSBzdXBwcmltw6kgYXZlYyBzdWNjw6hzJzsKJGxhbmdbJ3Byb2ZpbGVfbmFtZSddID0gJ05vbSBkdSBwcm9maWwnOwokbGFuZ1sncHJvZmlsZV9zYXZlZCddID0gJ1Byb2ZpbCBzYXV2w6kgYXZlYyBzdWNjw6hzJzsKJGxhbmdbJ3Byb2ZpbGVzJ10gPSAnUHJvZmlscyc7CiRsYW5nWydwcm9tcHRfbGlua2VyJ10gPSAnRW50cmV6IGxlIHRpdHJlIGRlIGxhIHBhZ2UnOwokbGFuZ1sncHJvbXB0X3Byb2ZpbGVzJ10gPSAnUHJvZmlscyc7CiRsYW5nWydwcm9tcHRfc2VsZWN0ZWRhbGlhcyddID0gJ0FsaWFzIGRlIHBhZ2Ugc8OpbGVjdGlvbm7DqSc7CiRsYW5nWydwcm9tcHRfbmFtZSddID0gJ05vbSZuYnNwOyc7CiRsYW5nWydwcm9tcHRfdGFyZ2V0J10gPSAnQ2libGUnOwokbGFuZ1sncHJvbXB0X2NsYXNzJ10gPSAnQ2xhc3NlIENTUyc7CiRsYW5nWydwcm9tcHRfcmVsJ10gPSAnQXR0cmlidXQgcmVsICh0eXBlIGRlIHJlbGF0aW9uKSc7CiRsYW5nWydwcm9tcHRfdGV4dHRvZGlzcGxheSddID0gJ1RleHRlIMOgIGFmZmljaGVyJzsKJGxhbmdbJ3JlbGF0aXZlX3VybHMnXSA9ICdHw6luw6lyZXIgZGVzIFVSTHMgcmVsYXRpdmVzJzsKJGxhbmdbJ3Jlc2l6ZSddID0gJ1JlZGltZW5zaW9ubmVtZW50JzsKJGxhbmdbJ3Jlc2l6ZV9ubyddID0gJ05lIHBhcyBwZXJtZXR0cmUgbGUgcmVkaW1lbnNpb25uZW1lbnQnOwokbGFuZ1sncmVzaXplX3ZlcnRpY2FsJ10gPSAnUGVybWV0dHJlIGxlIHJlZGltZW5zaW9ubmVtZW50IGVuIGhhdXRldXInOwokbGFuZ1sncmVzaXplX2JvdGgnXSA9ICdQZXJtZXR0cmUgbGUgcmVkaW1lbnNpb25uZW1lbnQgZW4gaGF1dGV1ciBldCBsYXJnZXVyJzsKJGxhbmdbJ3Nob3dfbWVudWJhciddID0gJ0FmZmljaGVyIGxhIGJhcnJlIGRlIG1lbnUnOwokbGFuZ1snc2hvd19zdGF0dXNiYXInXSA9ICdBZmZpY2hlciBsYSBiYXJyZSBkZSBzdGF0dXQnOwokbGFuZ1snc2hvd190b29sYmFyJ10gPSAnQWZmaWNoZXIgbGEgYmFycmUgZFwnb3V0aWxzICjDrmNvbmVzKSc7CiRsYW5nWydzdHlsZV9mb3JtYXRzJ10gPSAnRm9ybWF0cyBkZSBzdHlsZSc7CiRsYW5nWydzdHlsZV9mb3JtYXRzX2luZm8nXSA9ICdVbmUgcsOoZ2xlIHBhciBsaWduZSwgZXhlbXBsZSA6IDxjb2RlPjxlbT50aXRsZTogXCdUaXRyZSByb3VnZVwnLCBibG9jazogXCdoMlwnLCBjbGFzc2VzOiBcJ3RleHQtcmVkXCc8L2VtPjwvY29kZT4nOwokbGFuZ1snc3ViaGVscF9jb250ZXh0bWVudV9jb250ZW50J10gPSAnU3ludGF4ZSA6IDxlbT5jbXNtc19saW5rZXIgbGluayBpbWFnZSB8IGluc2VydHRhYmxlIGNlbGw8L2VtPic7CiRsYW5nWydzdWJoZWxwX2N1c3RvbV9ibG9ja19mb3JtYXRzJ10gPSAnU3ludGF4ZSA6IDxlbT5QYXJhZ3JhcGg9cDtIZWFkZXIgMT1oMTtIZWFkZXIgMj1oMjwvZW0+JzsKJGxhbmdbJ3N1YmhlbHBfdG9vbGJhciddID0gJ1N5bnRheGUgOiA8ZW0+dW5kbyByZWRvIHwgY3V0IGNvcHkgcGFzdGUgfCBib2xkIGl0YWxpYzwvZW0+PGJyPkJvdXRvbnMgc3DDqWNpYXV4IENNU01TIDogPGVtPmN1c3RvbWRyb3Bkb3duPC9lbT4sIDxlbT5jbXNtc19saW5rZXI8L2VtPiwgPGVtPnJlc3BvbnNpdmVmaWxlbWFuYWdlcjwvZW0+JzsKJGxhbmdbJ3N1YmhlbHBfY3VzdG9tX2Ryb3Bkb3duJ10gPSAnU3ludGF4ZSA6IDxlbT5UaXRyZXxjb250ZW51IMOgIGluc8OpcmVyPC9lbT4gb3UgPGVtPlRpdHJlfGNvbnRlbnUgYXUgZMOpYnV0fGNvbnRlbnUgw6AgbGEgZmluPC9lbT4gcG91ciBham91dGVyIDxlbT5jb250ZW51IGF1IGTDqWJ1dDwvZW0+IGF2YW50IGxhIHPDqWxlY3Rpb24sIGV0IDxlbT5jb250ZW51IMOgIGxhIGZpbjwvZW0+IGFwcsOocy48YnI+Tlwnb3VibGlleiBwYXMgZFwnYWpvdXRlciBsZSBib3V0b24gPGVtPjxzdHJvbmc+Y3VzdG9tZHJvcGRvd248L3N0cm9uZz48L2VtPiDDoCB2b3RyZSBiYXJyZSBkXCdvdXRpbHMuJzsKJGxhbmdbJ3N1Ym1pdCddID0gJ1ZhbGlkZXInOwokbGFuZ1sndGFiX2dlbmVyYWxfdGl0bGUnXSA9ICdHw6luw6lyYWwnOwokbGFuZ1sndGFiX2FkdmFuY2VkX3RpdGxlJ10gPSAnQXZhbmPDqSc7CiRsYW5nWyd0ZW1wbGF0ZSddID0gJ0dhYmFyaXQnOwokbGFuZ1sndGVtcGxhdGVzJ10gPSAnR2FiYXJpdHMnOwokbGFuZ1sndGl0bGVfY21zbXNfbGlua2VyJ10gPSAnQ3LDqWVyIHVuIGxpZW4gdmVycyB1bmUgcGFnZSBkZSBjb250ZW51JzsKJGxhbmdbJ3Rvb2xiYXInXSA9ICdCYXJyZSBkXCdvdXRpbHMnOwokbGFuZ1sndG9vbGJhcjEnXSA9ICdCYXJyZSBkXCdvdXRpbHMgLSAxw6hyZSBsaWduZSc7CiRsYW5nWyd0b29sYmFyMiddID0gJ0JhcnJlIGRcJ291dGlscyAtIDLDqG1lIGxpZ25lJzsKJGxhbmdbJ3Rvb2x0aXBfc2VsZWN0ZWRhbGlhcyddID0gJ0NlIGNoYW1wIGVzdCBlbiBsZWN0dXJlIHNldWwnOwokbGFuZ1sndHlwZV9UaW55TUNFJ10gPSAnVGlueU1DRSZuYnNwOyc7CiRsYW5nWyd0eXBlX2pzJ10gPSAnJm5ic3A7SmF2YXNjcmlwdCc7CiRsYW5nWyd0eXBlX2pzX2Rlc2NyaXB0aW9uJ10gPSAnU2NyaXB0IEphdmFzY3JpcHQgZFwnaW5pdGlhbGlzYXRpb24gZGUgVGlueU1DRSAtIExhIHBlcnNvbm5hbGlzYXRpb24gZGUgY2Ugc2NyaXB0IHZvdXMgb2ZmcmUgdW4gY29udHLDtGxlIGNvbXBsZXQgc3VyIGxlIGxhbmNlbWVudCBkZSBsXCfDqWRpdGV1ci4gQ29uc3VsdGV6IGxhIGRvY3VtZW50YXRpb24gZGUgVGlueU1DRSBwb3VyIGVuIHNhdm9pciBwbHVzIChodHRwczovL3d3dy50aW55bWNlLmNvbS9kb2NzLyknOwokbGFuZ1sndHlwZV91c2VydGVtcGxhdGUnXSA9ICcmbmJzcDtHYWJhcml0IHV0aWxpc2F0ZXVyIFRpbnlNQ0UnOwokbGFuZ1sndHlwZV91c2VydGVtcGxhdGVfZGVzY3JpcHRpb24nXSA9ICdWb3VzIHBvdXZleiB1dGlsaXNlciBjZSB0eXBlIGRlIGdhYmFyaXQgcG91ciBjcsOpZXIgZGVzIGJsb2NzIEhUTUwgcXVlIGxlcyB1dGlsaXNhdGV1cnMgZGUgbFwnw6lkaXRldXIgVGlueU1DRSBwb3Vycm9udCBpbnPDqXJlciBkYW5zIGxldXIgY29udGVudSBncsOiY2UgYXUgcGx1Z2luIDxlbT50ZW1wbGF0ZTwvZW0+JzsKJGxhbmdbJ3VzZV9hZHZhbmNlZF9tZW51J10gPSAnVXRpbGlzZXIgbGUgbWVudSBhdmFuY8OpJzsKJGxhbmdbJ3VzZV9jdXN0b21fYmxvY2tfZm9ybWF0cyddID0gJ1V0aWxpc2VyIHVuZSBsaXN0ZSBkZSBmb3JtYXRzIHBlcnNvbm5hbGlzw6llJzsKJGxhbmdbJ3VzZXJncm91cHMnXSA9ICdHcm91cGVzIHV0aWxpc2F0ZXVycyc7CiRsYW5nWydoZWxwJ10gPSAnPGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+DQo8cD4NCglUaGlzIG1vZHVsZSBlbWJlZHMgdGhlIGZ1bGwgVGlueU1DRSBXWVNJV1lHIGVkaXRvciB2ZXJzaW9uIGluIENNUyBNYWRlIFNpbXBsZS4gSXQgd29ya3Mgd2l0aCBjb250ZW50IGJsb2NrcyBpbiBDTVNNUyBjb250ZW50IHBhZ2VzICh3aGVuIGEgV1lTSVdZRyBoYXMgYmVlbiBhbGxvd2VkKSwgaW4gbW9kdWxlIEFkbWluIGZvcm1zIHdoZXJlIFdZU0lXWUcgZWRpdG9ycyBhcmUgYWxsb3dlZCwgYW5kIGFsbG93cyByZXN0cmljdGVkIGNhcGFiaWxpdGllcyBmb3IgZWRpdGluZyBodG1sIGJsb2NrcyBvbiBmcm9udGVuZCBwYWdlcy4NCjwvcD4NCjxwPkluIG9yZGVyIGZvciBUaW55TUNFIHRvIGJlIHVzZWQgYXMgdGhlIFdZU0lXWUcgZWRpdG9yIGluIHRoZSBBZG1pbiBjb25zb2xlIHRoZSBUaW55TUNFIFdZU0lXWUcgRWRpdG9yIG5lZWRzIHRvIGJlIHNlbGVjdGVkIGluIHRoZSB1c2VycyBwcmVmZXJlbmNlcy4gUGxlYXNlIHNlbGVjdCAiVGlueU1DRSIgaW4gdGhlICJTZWxlY3QgV1lTSVdZRyB0byBVc2UiIG9wdGlvbiB1bmRlciAiTXkgUHJlZmVyZW5jZXMgPj4gVXNlciBQcmVmZXJlbmNlcyIgaW4gdGhlIENNU01TIEFkbWluIHBhbmVsLiBBZGRpdGlvbmFsIG9wdGlvbnMgaW4gdmFyaW91cyBtb2R1bGVzIG9yIGluIGNvbnRlbnQgcGFnZSB0ZW1wbGF0ZXMsIGFuZCBjb250ZW50IHBhZ2VzIHRoZW1zZWx2ZXMgY2FuIGNvbnRyb2wgd2hldGhlciBhIHRleHQgYXJlYSBvciBhIFdZU0lXWUcgZmllbGQgaXMgcHJvdmlkZWQgaW4gdmFyaW91cyBlZGl0IGZvcm1zLjwvcD4NCjxwPkZvciBGcm9udGVuZCBlZGl0aW5nIGNhcGFiaWxpdGllcyBUaW55TUNFIG11c3QgYmUgc2VsZWN0ZWQgYXMgdGhlICJGcm9udGVuZCBXWVNJV1lHIiBpbiB0aGUgZ2xvYmFsIHNldHRpbmdzIHBhZ2Ugb2YgdGhlIENNU01TIGFkbWluIGNvbnNvbGUuPC9wPg0KDQo8aDM+RmVhdHVyZXM6PC9oMz4NCjx1bD4NCgk8bGk+RnVsbCBuYXRpdmUgPGEgaHJlZj0iaHR0cDovL3d3dy50aW55bWNlLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPlRpbnlNQ0UgZWRpdG9yPC9hPiBpcyBhdmFpbGFibGUuPC9saT4NCgk8bGk+Q29uZmlndXJhdGlvbiBwcm9maWxlcyBhbmQgYmFja2VuZCBncm91cHMgYXR0cmlidXRpb24uPC9saT4NCgk8bGk+TG90cyBvZiBjdXN0b21pemF0aW9uIG9wdGlvbnM6IHRvb2xiYXIsIG1lbnViYXIsIGV4dGVybmFsIG1vZHVsZXMsIGN1c3RvbSBzdHlsZXMsIC4uLjwvbGk+DQoJPGxpPlVzZXMgdGhlIGludGVybmFsIHBhZ2UgbGlua2VyIGZyb20gdGhlIE1pY3JvVGlueSBtb2R1bGUuPC9saT4NCgk8bGk+RW1iZWRzIHRoZSBwb3dlcmZ1bCA8YSBocmVmPSJodHRwOi8vd3d3LnJlc3BvbnNpdmVmaWxlbWFuYWdlci5jb20vIiB0YXJnZXQ9Il9ibGFuayI+UmVzcG9uc2l2ZSBGaWxlIE1hbmFnZXI8L2E+IHRoYW5rcyB0byBpdHMgYXV0aG9yIEFsYmVydG8gUGVyaXBvbGxpLiBOb3RlOiBmb3Igc2VjdXJpdHkgcmVhc29ucywgdGhlIFJlc3BvbnNpdmUgRmlsZSBNYW5hZ2VyIHdpbGwgbm90IGJlIGF2YWlsYWJsZSB0byB0aGUgZnJvbnRlbmQgdXNlcnM8L2xpPg0KCTxsaT5BYmlsaXR5IHRvIHVzZSBhbiBleHRlcm5hbCBqYXZhc2NyaXB0IHRlbXBsYXRlIGZpbGUgZnJvbSB0aGUgRGVzaWduTWFuYWdlciBpbnN0ZWFkIG9mIHRoZSBzdG9jayBKUyBmaWxlIC0gVGhpcyBwZXJtaXRzIGEgY29tcGxldGUgY3VzdG9taXphdGlvbiBvZiB0aGUgaW5pdCBzY3JpcHQuPC9saT4NCgk8bGk+Q3VzdG9taXphYmxlIGFwcGVhcmFuY2UgYnkgc3BlY2lmeWluZyBhIGRlc2lnbiB0byB1c2UgZm9yIHRoZSBlZGl0b3IuPC9saT4NCjwvdWw+DQoNCjxoMz5Ib3cgZG8gSSB1c2UgaXQ8L2gzPg0KPHVsPg0KCTxsaT5JbnN0YWxsIGFuZCBjb25maWd1cmUgdGhlIG1vZHVsZTwvbGk+DQoJPGxpPjxzdHJvbmcgc3R5bGU9ImNvbG9yOiByZWQiPkltcG9ydGFudDo8L3N0cm9uZz4gaWYgeW91XCdyZSB1c2luZyBVUkwgUmV3cml0aW5nLCB5b3UgbXVzdCB1cGRhdGUgeW91ciAuaHRhY2Nlc3MgZmlsZSBhbmQgcmVwbGFjZToNCgkJPHVsPg0KCQkJPGxpPjxjb2RlPlJlZGlyZWN0TWF0Y2ggNDAzIF4uKi9tb2R1bGVzLyguKilcXC5waHA8L2NvZGU+JMKgd2l0aDo8L2xpPg0KCQkJPGxpPjxjb2RlPlJlZGlyZWN0TWF0Y2ggNDAzIF4uKi9tb2R1bGVzLyg/IVRpbnlNQ0UvcmVzcG9uc2l2ZV9maWxlbWFuYWdlci9maWxlbWFuYWdlci8pLipcXC5waHAkPC9jb2RlPjwvbGk+DQoJCQk8bGk+Li4uIGluIG9yZGVyIHRvIG1ha2UgdGhlIFJlc3BvbnNpdmUgRmlsZSBNYW5hZ2VyIHdvcmsgLSBJZiB5b3UgYWxyZWFkeSBkaWQgc29tZSBjaGFuZ2VzIG9uIHRoYXQgbGluZSwgcGxlYXNlIHVwZGF0ZSB0aGUgcnVsZSBhY2NvcmRpbmdseTwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+Q3JlYXRlIGFuZCBjb25maWd1cmUgdGhlIGFwcHJvcHJpYXRlIHByb2ZpbGVzIGluIDxlbT5FeHRlbnNpb25zPC9lbT4gLyA8ZW0+VGlueU1DRSBXWVNJV1lHIGVkaXRvcjwvZW0+PC9saT4NCgk8bGk+RG9uXCd0IGZvcmdldCB0byBsaW5rIHByb2ZpbGVzIHdpdGggYmFja2VuZCB1c2VyIGdyb3VwcyAob3IgZnJvbnRlbmQpIGluIHRoZSBUaW55TUNFIHByb2ZpbGU8L2xpPg0KCTxsaT5TZXQgVGlueU1DRSBhcyB5b3VyIFdZU0lXWUcgZWRpdG9yIG9mIGNob2ljZSBpbiAiTXkgUHJlZmVyZW5jZXMiPC9saT4NCjwvdWw+DQoNCjxwPg0KCU5vdGUgYWJvdXQgcHJvZmlsZSBlZGl0aW9uOiB0aGUgYmFja2VuZCB1c2VyIDxzdHJvbmc+bXVzdCBoYXZlPC9zdHJvbmc+IHRoZSA8ZW0+TWFuYWdlIFRpbnlNQ0UgcHJvZmlsZXM8L2VtPiBwZXJtaXNzaW9uIHRvIGdldCB0aGUgVGlueU1DRSBBZG1pbiBwYWdlLg0KPC9wPg0KDQo8aDM+Q2FjaGluZzo8L2gzPg0KPHA+SW4gYW4gZWZmb3J0IHRvIGltcHJvdmUgcGVyZm9ybWFuY2UsIFRpbnlNQ0Ugd2lsbCBhdHRlbXB0IHRvIGNhY2hlIHRoZSBnZW5lcmF0ZWQgSmF2YVNjcmlwdCBmaWxlcyB1bmxlc3Mgc29tZXRoaW5nIGhhcyBjaGFuZ2VkLiBTYXZpbmcgYSBwcm9maWxlIG9yIGNsZWFyaW5nIHRoZSBDTVMgTWFkZSBTaW1wbGUgY2FjaGUgd2lsbCBhbHdheXMgcmVzZXQgdGhlIEpTIGNhY2hlIGZpbGUuPC9wPg0KDQo8aDM+TW9kdWxlIGRldmVsb3BlcnM6IGhvdyB0byBjcmVhdGUgYSBuZXcgYnV0dG9uIGZvciB5b3VyIG1vZHVsZSBpbiBUaW55TUNFPzwvaDM+DQo8cD4NCglZb3UgbXVzdCBhZGQgdGhyZWUgZnVuY3Rpb25zIHRvIHlvdXIgbWFpbiBtb2R1bGUgY2xhc3MgLSBFeGFtcGxlIGZvciB0aGUgR2FsbGVyeSBtb2R1bGU6DQo8L3A+DQoNCjxjb2RlPjxwcmU+DQoJZnVuY3Rpb24gSGFzQ2FwYWJpbGl0eSgkY2FwYWJpbGl0eSwgJHBhcmFtcz1hcnJheSgpKSB7DQoJCWlmICgkY2FwYWJpbGl0eT09XCdXWVNJV1lHSXRlbXNcJykgcmV0dXJuIHRydWU7DQoJCXJldHVybiBmYWxzZTsNCgl9DQoNCglmdW5jdGlvbiBHZXRXWVNJV1lHQnRuTmFtZSgpDQoJew0KCQlyZXR1cm4gXCdtb2R1bGVfZ2FsbGVyeVwnOw0KCX0NCg0KCWZ1bmN0aW9uIEdldFdZU0lXWUdCdG4oJHd5c2l3eWdfbW9kdWxlKQ0KCXsNCgkJLy8gVEVTVCBBUlJBWSBFWEFNUExFDQoJCSRpdGVtcyA9IGFycmF5KA0KCQkJYXJyYXkoDQoJCQkJXCdtZW51X3RleHRcJyA9PiBcJ0dhbGxlcnkgMVwnLA0KCQkJCVwnY29udGVudFwnID0+ICJ7R2FsbGVyeSBkaXI9XCdkaXIxXCd9IiwgLy8gRW1wdHkgPSBubyBhY3Rpb24gb24gY2xpY2sNCgkJCQlcJ2NoaWxkcmVuXCcgPT4gYXJyYXkoDQoJCQkJCWFycmF5KA0KCQkJCQkJXCdtZW51X3RleHRcJyA9PiBcJ1N1YkdhbGxlcnkgMS4xXCcsDQoJCQkJCQlcJ2NvbnRlbnRcJyA9PiAie0dhbGxlcnkgZGlyPVwnc3ViZGlyMTFcJ30iDQoJCQkJCQlcJ2NoaWxkcmVuXCcgPT4gYXJyYXkoKSAvLyBZb3UgY2FuIGhhdmUgYXMgbWFueSBzdWJsZXZlbHMgYXMgeW91IG5lZWQNCgkJCQkJKSwNCgkJCQkJYXJyYXkoDQoJCQkJCQlcJ21lbnVfdGV4dFwnID0+IFwnU3ViR2FsbGVyeSAxLjJcJywNCgkJCQkJCVwnY29udGVudFwnID0+ICJ7R2FsbGVyeSBkaXI9XCdzdWJkaXIxMlwnfSINCgkJCQkJKSwNCgkJCQkJYXJyYXkoDQoJCQkJCQlcJ21lbnVfdGV4dFwnID0+IFwnU3ViR2FsbGVyeSAxLjNcJywNCgkJCQkJCVwnY29udGVudFwnID0+ICJ7R2FsbGVyeSBkaXI9XCdzdWJkaXIxM1wnfSINCgkJCQkJKQ0KCQkJCSkNCgkJCSksDQoJCQlhcnJheSgNCgkJCQlcJ21lbnVfdGV4dFwnID0+IFwnR2FsbGVyeSAyXCcsDQoJCQkJXCdjb250ZW50XCcgPT4gIntHYWxsZXJ5IGRpcj1cJ2RpcjJcJ30iLCAvLyBFbXB0eSA9IG5vIGFjdGlvbiBvbiBjbGljaw0KCQkJCVwnY2hpbGRyZW5cJyA9PiBhcnJheSgNCgkJCQkJYXJyYXkoDQoJCQkJCQlcJ21lbnVfdGV4dFwnID0+IFwnU3ViR2FsbGVyeSAyLjFcJywNCgkJCQkJCVwnY29udGVudFwnID0+ICJ7R2FsbGVyeSBkaXI9XCdzdWJkaXIyMVwnfSINCgkJCQkJKSwNCgkJCQkJYXJyYXkoDQoJCQkJCQlcJ21lbnVfdGV4dFwnID0+IFwnU3ViR2FsbGVyeSAyLjJcJywNCgkJCQkJCVwnY29udGVudFwnID0+ICJ7R2FsbGVyeSBkaXI9XCdzdWJkaXIyMlwnfSINCgkJCQkJKSwNCgkJCQkJYXJyYXkoDQoJCQkJCQlcJ21lbnVfdGV4dFwnID0+IFwnU3ViR2FsbGVyeSAyLjNcJywNCgkJCQkJCVwnY29udGVudFwnID0+ICJ7R2FsbGVyeSBkaXI9XCdzdWJkaXIyM1wnfSINCgkJCQkJKQ0KCQkJCSkNCgkJCSkNCgkJKTsNCg0KCQkvLyBCVUlMRCBUSEUgQlVUVE9OIE9CSkVDVCBVU0VEIEJZIFRIRSBUaW55TUNFIE1PRFVMRQ0KCQlpZiAoJHd5c2l3eWdfbW9kdWxlID09IFwnVGlueU1DRVwnKQ0KCQl7DQoJCQkkb2JqID0gbmV3IHRpbnltY2VfbW9kdWxlbWVudTsNCgkJCSRvYmotPm1vZHVsZV9uYW1lID0gJHRoaXMtPkdldE5hbWUoKTsNCgkJCSRvYmotPmJ1dHRvbl9uYW1lID0gJHRoaXMtPkdldFdZU0lXWUdCdG5OYW1lKCk7DQoJCQkkb2JqLT50aXRsZSA9ICR0aGlzLT5MYW5nKFwndGlueW1jZV9idXR0b25fcGlja2VyXCcpOw0KCQkJJG9iai0+dG9vbHRpcCA9ICR0aGlzLT5MYW5nKFwndGlueW1jZV9kZXNjcmlwdGlvbl9waWNrZXJcJyk7DQoJCQkkb2JqLT5pY29uID0gXCdpbWFnZVwnOw0KCQkJJG9iai0+aW1hZ2UgPSAkdGhpcy0+R2V0TW9kdWxlVVJMUGF0aCgpIC4gXCcvaW1hZ2VzL2ljb24uZ2lmXCc7DQoJCQkkb2JqLT5tZW51X2VudHJpZXMgPSAkaXRlbXM7DQoJCQkkb2JqLT5tZW51X3NlY3Rpb24gPSBcJ2luc2VydFwnOw0KDQoJCQlyZXR1cm4gJG9iajsNCgkJfQ0KCQlyZXR1cm4gZmFsc2U7DQoJfQ0KPC9wcmU+PC9jb2RlPg0KDQo8cD4NCglUaGUgPHN0cm9uZz5HZXRXWVNJV1lHQnRuKCk8L3N0cm9uZz4gZnVuY3Rpb24gbXVzdCByZXR1cm4gYSA8c3Ryb25nPnRpbnltY2VfbW9kdWxlbWVudTwvc3Ryb25nPiBvYmplY3Qgd2l0aCBhbiBhcnJheSA8ZW0+bWVudV9lbnRyaWVzPC9lbT4gcHJvcGVydHkuDQo8L3A+DQo8YnI+DQoNCjxoMz5MaWNlbnNlIGluZm9ybWF0aW9uczwvaDM+DQo8cD5UaGlzIG1vZHVsZSBpcyBmcmVlIHNvZnR3YXJlIC0geW91IGNhbiB1c2UgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAyIG9yIGFueSBsYXRlciB2ZXJzaW9uLjwvcD4NCjxwPjxzdHJvbmc+SG93ZXZlcjwvc3Ryb25nPiwgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cucmVzcG9uc2l2ZWZpbGVtYW5hZ2VyLmNvbS8iIHRhcmdldD0iX2JsYW5rIj5SZXNwb25zaXZlIEZpbGVNYW5hZ2VyPC9hPiBpcyBsaWNlbnNlZCB1bmRlciBhIDxhIGhyZWY9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LW5jLzMuMC8iIHRhcmdldD0iX2JsYW5rIj5DcmVhdGl2ZSBDb21tb25zIEF0dHJpYnV0aW9uLU5vbkNvbW1lcmNpYWwgMy4wIFVucG9ydGVkIExpY2Vuc2U8L2E+LiBUaGUgVGlueU1DRSBtb2R1bGUgaW5jbHVkZXMgaXQgPHN0cm9uZz53aXRoIHRoZSBwZXJtaXNzaW9uIGZyb20gQWxiZXJ0byBQZXJpcG9sbGk8L3N0cm9uZz4gZ2l2ZW4gb24gMjAxNi0wMS0xOS4gVGhhbmsgeW91IEFsYmVydG8hIDxhIGhyZWY9Imh0dHA6Ly93d3cucmVzcG9uc2l2ZWZpbGVtYW5hZ2VyLmNvbS8iIHRhcmdldD0iX2JsYW5rIj5JZiB5b3Ugd2FudCB0byBzdXBwb3J0IHRoYXQgcHJvamVjdCwgcGxlYXNlIGNoZWNrIHRoaXMgcGFnZSBhbmQgbWFrZSBhIGZyZWUgZG9uYXRpb24uPC9hPjwvcD4NCg0KPGgzPkhlbHAgYW5kIHN1cHBvcnQ8L2gzPg0KPHA+V2UgdHJpZWQgdG8gZXhwbGFpbiBlYWNoIGNvbmZpZ3VyYXRpb24gb3B0aW9uIG9uIHRoZSBwcm9maWxlIGVkaXRpb24gQWRtaW4gcGFnZS4gUGxlYXNlIHVzZSB0aGUgIj8iIGJ1dHRvbnMgbmVhciBlYWNoIG9wdGlvbiB0byBnZXQgbW9yZSBpbmZvcm1hdGlvbnMuPC9wPg0KDQo8aDM+QnVnIHJlcG9ydCBvciBmZWF0dXJlIHJlcXVlc3Q8L2gzPg0KPHA+DQoJQ2hlY2tvdXQgdGhlIENNUyBNYWRlIFNpbXBsZSBmb3JnZTogPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy90aW55bWNlIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy90aW55bWNlPC9hPg0KPC9wPg0KDQo8aDM+QXV0aG9yczwvaDM+DQo8dWw+DQoJPGxpPk1vcnRlbiBQb3Vsc2VuOiA8YSBocmVmPSJtYWlsdG86bW9ydGVuQHBvdWxzZW4ub3JnIj5tb3J0ZW5AcG91bHNlbi5vcmc8L2E+PC9saT4NCgk8bGk+Um9sZiBUamFzc2VuczogPGEgaHJlZj0ibWFpbHRvOnJvbGZAY21zbWFkZXNpbXBsZS5vcmciPnJvbGZAY21zbWFkZXNpbXBsZS5vcmc8L2E+PC9saT4NCgk8bGk+TWF0aGlldSBNdXRoczogPGEgaHJlZj0ibWFpbHRvOmNvbnRhY3RAYWlyZWxpYnJlLm5ldCI+Y29udGFjdEBhaXJlbGlicmUubmV0PC9hPjwvbGk+DQo8L3VsPic7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/hu_HU.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1RpbnlNQ0UgV1lTSVdZRyBtb2R1bCc7CiRsYW5nWydhZG1pbmRlc2NyaXB0aW9uJ10gPSAnVGhpcyBtb2R1bGUgYWxsb3dzIG1haW5seSBjb250ZW50LCBidXQgcG9zc2libHkgYWxzbyBvdGhlciBraW5kcyBvZiBkYXRhLCB0byBiZSBlZGl0ZWQgdXNpbmcgYSBXWVNJV1lHIGVkaXRvciBwb3dlcmVkIGJ5IHRoZSBUaW55TUNFIHByb2plY3QuJzsKJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAnQSBtb2R1bCBlbHQmYWFjdXRlO3ZvbCZpYWN1dGU7dCZhYWN1dGU7c2EgbWVndCZvdW1sO3J0JmVhY3V0ZTtudC4nOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnQSBtb2R1bGImb2FjdXRlO2wgYSh6KSAlcyB2ZXJ6aSZvYWN1dGU7IHZhbiB0ZWxlcCZpYWN1dGU7dHZlLic7CiRsYW5nWydzdHJpcGJhY2tncm91bmR0YWdzJ10gPSAnQmFja2dyb3VuZCBUYWctb2sga2l2JmVhY3V0ZTt0ZWxlIGEgQ1NTLWLFkWwnOwokbGFuZ1snc3RpcHRhZ3NfaGVscCddID0gJ1RoaXMgb3B0aW9ucyB0cmllcyB0byByZW1vdmUgYmFja2dyb3VuZC10eXBlIHNldHRpbmdzIGZyb20gdGhlIHN0eWxlc2hlZXQuJzsKJGxhbmdbJ3NvdXJjZV9mb3JtYXR0aW5nX3RleHQnXSA9ICdGb3JyJmFhY3V0ZTtzZm9ybSZhYWN1dGU7eiZhYWN1dGU7cyBhbGthbG1heiZhYWN1dGU7c2EgYSBraW1lbmV0aSBIVE1MLWVuJzsKJGxhbmdbJ2Ryb3Bkb3duYmxvY2tmb3JtYXRzX3RleHQnXSA9ICdCbG9jayBmb3JtJmFhY3V0ZTt0dW1vayBhIGxlbnkmaWFjdXRlO2wmb2FjdXRlOyBtZW4mdXVtbDtrYmVuJzsKJGxhbmdbJ2FsbG93dGFibGVzJ10gPSAnVCZhYWN1dGU7YmwmYWFjdXRlO3phdCBtxbF2ZWxldGVrIGVuZ2VkJmVhY3V0ZTtseWV6JmVhY3V0ZTtzZSc7CiRsYW5nWyduZXdsaW5lc3R5bGVfdGV4dCddID0gJyZVYWN1dGU7anNvciBzdCZpYWN1dGU7bHVzJzsKJGxhbmdbJ3BzdHlsZSddID0gJzxwPiBzdCZpYWN1dGU7bHVzJzsKJGxhbmdbJ2Jyc3R5bGUnXSA9ICc8YnIgLz4gc3QmaWFjdXRlO2x1cyc7CiRsYW5nWyd1c2Vjb21wcmVzc2lvbnRleHQnXSA9ICdBIGd6IHQmb3VtbDttJm91bWw7ciZpYWN1dGU7dCZlYWN1dGU7cyBoYXN6biZhYWN1dGU7bGF0YSc7CiRsYW5nWyd1c2Vjb21wcmVzc2lvbmhlbHAnXSA9ICdFeiBtZWdneW9ycyZpYWN1dGU7dGhhdGphIGEgVGluZU1DRSBiZXQmb3VtbDtsdCZlYWN1dGU7cyZlYWN1dGU7dCwgZGUgbWVnIGlzIGFrYWQmYWFjdXRlO2x5b3poYXRqYSBhIG3FsWsmb3VtbDtkJmVhY3V0ZTtzJmVhY3V0ZTt0IGJpem9ueW9zIHJlbmRzemVyZWtlbi4gSyZvdW1sO3ImdXVtbDtsdGVraW50JmVhY3V0ZTtzc2VsIGhhc3puJmFhY3V0ZTtsZC4nOwokbGFuZ1snZm9yY2Vkcm9vdGJsb2NrdGV4dCddID0gJzxwPiBhbGFwYmxva2sgaGFzem4mYWFjdXRlO2xhdCZhYWN1dGU7bmFrIGtpayZlYWN1dGU7bnlzemVyJmlhY3V0ZTt0JmVhY3V0ZTtzZSc7CiRsYW5nWydmb3JjZWRyb290YmxvY2toZWxwJ10gPSAnS2lrJmVhY3V0ZTtueXN6ZXImaWFjdXRlO3RpLCBob2d5IGEgdGFydGFsb20gbGVnYWwmYWFjdXRlO2JiIDxwPi10YWdvayBrJm91bWw7eiZlYWN1dGU7IGxlZ3llbiB6JmFhY3V0ZTtydmEnOwokbGFuZ1snZmlsZXBpY2tlcnN0eWxlJ10gPSAnRiZhYWN1dGU7amx2JmFhY3V0ZTtsYXN6dCZvYWN1dGU7IHN0JmlhY3V0ZTtsdXNhJzsKJGxhbmdbJ2ZpbGVwaWNrZXJzaXplJ10gPSAnRiZhYWN1dGU7amx2JmFhY3V0ZTtsYXN6dCZvYWN1dGU7IG0mZWFjdXRlO3JldGUnOwokbGFuZ1snYWxsb3d1cGxvYWR0ZXh0J10gPSAnQWxsb3cgdXBsb2FkIGFuZCBjcmVhdGluZyBkaXJzIGluIEZpbGVQaWNrZXInOwokbGFuZ1snYWxsb3dzY2FsaW5ndGV4dCddID0gJ0FsbG93IG9uLXRoZS1mbHkgcmVzaXppbmcgb2YgdXBsb2FkZWQgaW1hZ2VzJzsKJGxhbmdbJ3NjYWxpbmdkaW1lbnNpb25zdGV4dCddID0gJ0FsYXAmZWFjdXRlO3J0ZWxtZXpldHQgbSZlYWN1dGU7cmV0JzsKJGxhbmdbJ3Jlc2l6ZXRvJ10gPSAnJkFhY3V0ZTt0bSZlYWN1dGU7cmV0ZXomZWFjdXRlO3M6JzsKJGxhbmdbJ21ha2V0aHVtYm5haWwnXSA9ICdNaW5pYXTFsXIgayZlYWN1dGU7c3omaWFjdXRlO3QmZWFjdXRlO3NlIGsmZWFjdXRlO3BmZWx0Jm91bWw7bHQmZWFjdXRlO3Nrb3InOwokbGFuZ1sndXNlYWR2YW5jZWRwcm9maWxlJ10gPSAnSGFsYWQmb2FjdXRlOyBUaW55TUNFLXByb2ZpbCBoYXN6biZhYWN1dGU7bGF0YSc7CiRsYW5nWydzYXZlcHJvZmlsZSddID0gJ1Byb2ZpbCBtZW50JmVhY3V0ZTtzZSc7CiRsYW5nWydwcm9maWxlc2F2ZWQnXSA9ICdBIHByb2ZpbCBlbCBsZXR0IG1lbnR2ZSc7CiRsYW5nWydwcm9maWxlc190YWInXSA9ICdQcm9maWxvayc7CiRsYW5nWydhZHZhbmNlZF9iYWNrZW5kX3Rvb2xiYXJzJ10gPSAnSGFsYWQmb2FjdXRlOyBoJmFhY3V0ZTt0dCZlYWN1dGU7ciBwcm9maWwgYmUmYWFjdXRlO2xsJmlhY3V0ZTt0JmFhY3V0ZTtzb2snOwokbGFuZ1snc2F2ZXN0eWxlcyddID0gJ1N0JmlhY3V0ZTtsdXNvayBtZW50JmVhY3V0ZTtzZSc7CiRsYW5nWydhbGxvd2FkdmFuY2VkcHJvZmlsZSddID0gJ0FsbG93IHVzYWdlIG9mIGFkdmFuY2VkIHByb2ZpbGUgaW4gVGlueU1DRSc7CiRsYW5nWydzaG93ZmlsZW1hbmFnZW1lbnQnXSA9ICdGJmFhY3V0ZTtqbCBrZXplbCZlYWN1dGU7c2kgbGVoZXTFkXMmZWFjdXRlO2dlayBtdXRhdCZhYWN1dGU7c2EnOwokbGFuZ1snc2hvd2ZpbGVtYW5hZ2VtZW50aGVscCddID0gJ1Nob3cgZmlsZW1hbmFnZW1lbnQgaW4gb3B0aW9ucyBsaWtlIHVwbG9hZCwgbWFrZSBkaXIgYW5kIGZpbGUgZGVsZXRpb24gaW4gRmlsZVBpY2tlciwgaWYgdGhlIHVzZXIgaXMgYWxsb3dlZCB0byBwZXJmb3JtIHRoZXNlLic7CiRsYW5nWydyZXN0cmljdGRpcnMnXSA9ICdSZXN0cmljdCB1c2VyJiMwMzk7cyBkaXIgYWNjZXNzJzsKJGxhbmdbJ3Jlc3RyaWN0ZGlyc2hlbHAnXSA9ICdUaGlzIHdpbGwgcmVzdHJpY3QgdGhlIGZpbGVtYW5hZ2VtZW50LWNhcGFiaWxpdGllcyBvZiB0aGUgdXNlciB0byBhIHN1YmRpciB0byAmIzAzOTt1cGxvYWRzJiMwMzk7IHdoaWNoIGhhdmUgdGhlIHNhbWUgbmFtZSBhcyB0aGUgdXNlciYjMDM5O3MgbG9naW4uIElmIHRoZSBzdWJkaXIgZG9lcyBub3QgZXhpc3QsIGl0IHdpbGwgcG9zc2libHkgYmUgY3JlYXRlZC4gUGxlYXNlIG5vdGUsIHRoaXMgY3VycmVudGx5IG9ubHkgd29ya3Mgd2l0aCB0aGUgc3RhbmRhcmQgZGlybmFtZXMsIHVwbG9hZHMvaW1hZ2VzLiBUaGlzIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4nOwokbGFuZ1snZGVsZXRlY29uZmlybWF0aW9uJ10gPSAnQml6dG9zIHZhZ3kgYmVubmUsIGhvZ3kgZXp0IGEgZiZhYWN1dGU7amx0IGtpIGFrYXJvZCB0Jm91bWw7ciZvdW1sO2xuaT8nOwokbGFuZ1snZGVsZXRlZmlsZXN1Y2Nlc3MnXSA9ICdzaWtlcmVzZW4gdCZvdW1sO3Imb3VtbDtsdmUnOwokbGFuZ1snZGVsZXRlZmlsZWZhaWxlZCddID0gJ25lbSBsZWhldCB0Jm91bWw7ciZvdW1sO2xuaSc7CiRsYW5nWydkZWxldGVzdWJkaXJmYWlsZWQnXSA9ICduZW0gbGVoZXQgdCZvdW1sO3Imb3VtbDtsbmknOwokbGFuZ1snZGVsZXRlc3ViZGlyc3VjY2VzcyddID0gJ3Npa2VyZXNlbiB0Jm91bWw7ciZvdW1sO2x2ZSc7CiRsYW5nWydkZWxldGVkaXJjb25maXJtYXRpb24nXSA9ICdCaXp0b3MgdmFneSBiZW5uZSwgaG9neSBlenQgYXogJnV1bWw7cmVzIGFsayZvdW1sO255dnQmYWFjdXRlO3JhdCB0Jm91bWw7ciZvdW1sO2xuaSBha2Fyb2Q/JzsKJGxhbmdbJ2RlbGV0ZWRpciddID0gJyZVdW1sO3JlcyBhbGsmb3VtbDtueXZ0JmFhY3V0ZTtyIHQmb3VtbDtybCZlYWN1dGU7c2UnOwokbGFuZ1snZGVsZXRlZmlsZSddID0gJ0YmYWFjdXRlO2psIHQmb3VtbDtybCZlYWN1dGU7c2UnOwokbGFuZ1snY2Fubm90cmVhZGNvbmZpZyddID0gJ0Nhbm5vdCByZWFkIHRoZSBmaWxlIHRpbnljb25maWcucGhwIGRpcmVjdGx5IHNvIFRpbnlNQ0Ugd2lsbCBwcm9iYWJseSBub3Qgd29yay4gWW91IHNob3VsZCBjaGVjayB0aGUgcGVybWlzc2lvbnMgb2YgdGhlIGZpbGUgYW5kIG9mIHRoZSBwYXJlbnQgZGlycywgd2hpY2ggc2hvdWxkIGJlIHJlYWRhYmxlIGZvciBhbGwgYnV0IG9ubHkgd3JpdGFibGUgZm9yIG93bmVyLic7CiRsYW5nWydmaWxlbmFtZW9ubHknXSA9ICdGJmFhY3V0ZTtqbG5ldmVrIG11dGF0JmFhY3V0ZTtzYSc7CiRsYW5nWyd0aHVtYm5haWxzb25seSddID0gJ01pbmlhdMWxciZvdW1sO2sgbXV0YXQmYWFjdXRlO3NhJzsKJGxhbmdbJ3Nob3d0aHVtYm5haWxmaWxlc3RleHQnXSA9ICdBIG1pbmlhdMWxciBrJmVhY3V0ZTtwZWsgbWVnamVsZW4maWFjdXRlO3QmZWFjdXRlO3NlIHJlbmRlcyBmJmFhY3V0ZTtqbG9rayZlYWN1dGU7bnQnOwokbGFuZ1snZmlsZW5hbWVhbmR0aHVtYm5haWxzJ10gPSAnRiZhYWN1dGU7amxuZXZlayAmZWFjdXRlO3MgbWluaWF0xbFyJm91bWw7ayBtdXRhdCZhYWN1dGU7c2EnOwokbGFuZ1snc2tpbnN0ZXh0J10gPSAnU2tpbic7CiRsYW5nWydza2ludmFyaWF0aW9udGV4dCddID0gJ1NraW4gdmFyaSZhYWN1dGU7Y2kmb2FjdXRlOyc7CiRsYW5nWydhZHZhbmNlZHdhcm5pbmcnXSA9ICc8c3Ryb25nPlBsZWFzZSBub3RlITxici8+Q2hhbmdpbmcgdGhlc2Ugc2V0dGluZ3MgY2FuIGNhdXNlIFRpbnlNQ0UgdG8gc3RvcCB3b3JraW5nIG9yIHRoZSBnZW5lcmF0ZWQgY29kZSB0byBiZSB3cm9uZyBpbiBzb21lIHdheS4gT25seSBlZGl0IHRoaXMgaWYgeW91IGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nISBQbGVhc2UgY29uc3VsdCB0aGUgVGlueU1DRSB3ZWJzaXRlIGJlZm9yZSBwbGF5aW5nIHdpdGggdGhpcy48L3N0cm9uZz4nOwokbGFuZ1snZW50aXR5ZW5jb2RpbmdfdGV4dCddID0gJ0VsZW1layBrJm9hY3V0ZTtkb2wmYWFjdXRlO3NhJzsKJGxhbmdbJ3Jhd2VuY29kaW5nJ10gPSAnRWd5c3plcsWxIGsmb2FjdXRlO2RvbCZhYWN1dGU7cyAoYSBsZWdneW9yc2FiYiwgYSBsZWd0Jm91bWw7YiBlc2V0YmVuIG3FsWsmb3VtbDtkaWspJzsKJGxhbmdbJ25hbWVkZW5jb2RpbmcnXSA9ICdOJmVhY3V0ZTt2IGFsYXAmdWFjdXRlOyBrJm9hY3V0ZTtkb2wmYWFjdXRlO3MgKHBsLiBtaW50ICZuYnNwOyknOwokbGFuZ1snbnVtZXJpY2VuY29kaW5nJ10gPSAnTnVtZXJpa3VzIGsmb2FjdXRlO2RvbCZhYWN1dGU7cyAocGwuIG1pbnQgJmFtcDsjMTYwOyknOwokbGFuZ1snc2hvd19wYXRoX3RleHQnXSA9ICdBeiBlbGVtICZ1YWN1dGU7dHZvbmFsJmFhY3V0ZTtuYWsgbXV0YXQmYWFjdXRlO3NhIGEgc3plcmtlc3p0xZEgZmVsJnV1bWw7bGV0IGFsaiZhYWN1dGU7bi4nOwokbGFuZ1sndG9vbGJhcl90YWInXSA9ICdFc3prJm91bWw7enQmYWFjdXRlO3InOwokbGFuZ1sndG9vbGJhcl9oZWxwJ10gPSAnRXplayBheiBvcGNpJm9hY3V0ZTtrIGVneSB2ZXNzesWRdmVsIGVsdiZhYWN1dGU7bGFzenRvdHQgbGlzdCZhYWN1dGU7YmFuIHRhcnRhbG1henomYWFjdXRlO2sgYXogZXN6ayZvdW1sO3p0JmFhY3V0ZTtyb24gaGFzem4mYWFjdXRlO2xuaSBrJmlhY3V0ZTt2JmFhY3V0ZTtudCBnb21ib2svdmV6JmVhY3V0ZTtybMWRIGVsZW1layBuZXYmZWFjdXRlO3QuJzsKJGxhbmdbJ3Rvb2xiYXJfdGV4dCddID0gJ0Vzemsmb3VtbDt6dCZhYWN1dGU7cic7CiRsYW5nWyd0b29sYmFyaGVscHRleHQnXSA9ICdLYXR0aW50cyBpZGUgYSBUaW55TUNFLXdpa2kgbWVndGVraW50JmVhY3V0ZTtzJmVhY3V0ZTtoZXosIHRvdiZhYWN1dGU7YmJpIGVzemsmb3VtbDt6dCZhYWN1dGU7ci1pbnN0cnVrY2kmb2FjdXRlO2tob3ouJzsKJGxhbmdbJ2VkaXRvcl93aWR0aF90ZXh0J10gPSAnQSBzemVya2VzenTFkSBtZXrFkSBzeiZlYWN1dGU7bGVzcyZlYWN1dGU7Z2UnOwokbGFuZ1snZWRpdG9yX2hlaWdodF90ZXh0J10gPSAnQSBzemVya2VzenTFkSBtZXrFkSBtYWdhc3MmYWFjdXRlO2dhJzsKJGxhbmdbJ2F1dG8nXSA9ICdBdXRvbWF0aWt1cyc7CiRsYW5nWydvciddID0gJ3ZhZ3knOwokbGFuZ1sndGVzdGFyZWFfdGFiJ10gPSAnVGVzenQgdGVyJnV1bWw7bGV0JzsKJGxhbmdbJ3Nob3d0ZXN0aW5nb3V0cHV0J10gPSAnVGVzenQga2ltZW5ldCBtdXRhdCZhYWN1dGU7c2EnOwokbGFuZ1sndGVzdGFyZWFlZGl0b3InXSA9ICdUZXN6dCB0ZXImdXVtbDtsZXQgc3plcmtlc3p0xZEnOwokbGFuZ1sndGVzdGFyZWFvdXRwdXQnXSA9ICdUZXN6dCB0ZXImdXVtbDtsZXQga2ltZW5ldCc7CiRsYW5nWyd0ZXN0YXJlYW91dHB1dHNvdXJjZSddID0gJ1Rlc3RpbmcgYXJlYSBzb3VyY2UnOwokbGFuZ1snYWxsb3dyZXNpemluZyddID0gJ0FsbG93IGlucGxhY2UgcmVzaXppbmcgb2YgZWRpdG9yIGZpZWxkJzsKJGxhbmdbJ3Jlc2l6ZW5vbmUnXSA9ICdEbyBub3QgYWxsb3cgcmVzaXppbmcnOwokbGFuZ1sncmVzaXplYm90aCddID0gJ0FsbG93IHJlc2l6aW5nIGluIGJvdGggZGlyZWN0aW9ucyc7CiRsYW5nWydyZXNpemVoZWlnaHQnXSA9ICdBbGxvdyByZXNpemluZyBvZiBoZWlnaHQgb25seSc7CiRsYW5nWydkYXRldGltZWZvcm1hdF90ZXh0J10gPSAnRCZhYWN1dGU7dHVtL2lkxZEgZm9ybSZhYWN1dGU7dHVtJzsKJGxhbmdbJ3RpbWV0ZXh0J10gPSAnSWTFkSc7CiRsYW5nWydkYXRldGV4dCddID0gJ0QmYWFjdXRlO3R1bSc7CiRsYW5nWydkYXRldGltZWZvcm1hdF9oZWxwJ10gPSAnS2F0dGludHMgaWRlIGEgZm9ybSZhYWN1dGU7dHVtIHMmdWFjdXRlO2cmb2FjdXRlO2hveic7CiRsYW5nWydleHRyYWNvbmZpZ3RleHQnXSA9ICdFeHRyYSBiZSZhYWN1dGU7bGwmaWFjdXRlO3QmYWFjdXRlO3MnOwokbGFuZ1snZXh0cmFjb25maWdoZWxwMiddID0gJ09uZSBzdGF0ZW1lbnQgcGVyIGxpbmUsIGNvbW1hcyB3aWxsIGJlIGFkZGVkIGJlZm9yZSBhbmQgYWZ0ZXIgdGhpcyBjb250ZW50LiBDaGVjayBUaW55TUNFLXdpa2kgZm9yIGluc3RydWN0aW9ucy4nOwokbGFuZ1snY3VzdG9tZHJvcGRvd250ZXh0J10gPSAnRWd5ZWRpIGxlZyZvdW1sO3JkJnV1bWw7bMWRIGxpc3RhJzsKJGxhbmdbJ2N1c3RvbWRyb3Bkb3duaGVscCddID0gJ0luc2VydHMgY3VzdG9taXphYmxlIHNuaXBwZXRzIG9mIGNvZGUvdGV4dCBieSBzZWxlY3Rpb24gaW4gYSBkcm9wZG93biBtZW51LiAKT2J2aW91cyB1c2VzIGFyZSBlYXN5IGFjY2VzcyB0byB0YWcmIzAzOTtzIGV0Yy4gVGhlIG1lbnUgaXMgaW5zZXJ0ZWQgaW50byB0b29sYmFyIHVzaW5nICYjMDM5O2N1c3RvbWRyb3Bkb3duJiMwMzk7Lic7CiRsYW5nWydzdGFydGVuYWJsZWR0ZXh0J10gPSAnU3RhcnR1cCBlbmFibGVkJzsKJGxhbmdbJ3N0YXJ0ZW5hYmxlZGhlbHAnXSA9ICdVbmNoZWNraW5nIHRoaXMgc3RhcnRzIHVwIFRpbnktZWRpdG9ycyBpbiBhIGRpc2FibGVkIHN0YXRlLiBTaG91bGQgYmUgdXNlZCB0b2dldGhlciB3aXRoIHRoZSB0b2dnbGUgYnV0dG9uLic7CiRsYW5nWydsb2FkY21zbGlua2VydGV4dCddID0gJ0xvYWQgdGhlIENNUy1saW5rZXInOwokbGFuZ1snbG9hZGNtc2xpbmtlcmhlbHAnXSA9ICdUaGlzIGdlbmVyYXRlcyB0aGUgamF2YXNjcmlwdC1jb2RlIG5lZWRlZCB0byBhbGxvdyAmIzAzOTtjbXNsaW5rZXImIzAzOTsgdG8gYmUgYWRkZWQgdG8gYSB0b29sYmFyLic7CiRsYW5nWydjbXNsaW5rZXJzdHlsZXRleHQnXSA9ICdDTVMtbGlua2VyIGxpbmstc3R5bGUnOwokbGFuZ1snY21zc2VsZmxpbmtzdHlsZSddID0gJ3tjbXNfc2VsZmxpbmt9LXN0eWxlJzsKJGxhbmdbJ2FocmVmc3R5bGUnXSA9ICc8YSBocmVmPi1zdHlsZSc7CiRsYW5nWydjbXNsaW5rZXJhZGRzdGV4dCddID0gJ0NNUy1saW5rZXIgYWRkaXRpb25zJzsKJGxhbmdbJ2Ntc2xpbmtlcmFkZHNoZWxwJ10gPSAnVGhpcyBhbGxvd3MgeW91IHRvIGFkZCBzdHVmZiB0byBlaXRoZXIgdGhlIDxhIGhyZWY+LXRhZyBvciB7Y21zX3NlbGZsaW5rfSwgd2hlbiBnZW5lcmF0ZWQgYnkgQ01TLWxpbmtlci4nOwokbGFuZ1snYXZvaWRsaW5rY29udmVyc2lvbnRleHQnXSA9ICdBdm9pZCBsaW5rIGNvbnZlcnNpb24nOwokbGFuZ1snYXZvaWRsaW5rY29udmVyc2lvbmhlbHAnXSA9ICdUdXJucyBUaW55TUNFJiMwMzk7cyBidWlsdGluIGxpbmsgY29udmVyc2lvbiBsb2dpYyBvZmYuIE1ha2VzIHtzbWFydHl9LXVzYWdlIGluIHVybHMgcG9zc2libGUuJzsKJGxhbmdbJ3JlbGF0aXZldXJsc3RleHQnXSA9ICdHZW5lcmF0ZSByZWxhdGl2ZSB1cmxzJzsKJGxhbmdbJ2ZvcmNlY2xlYW5wYXN0ZXRleHQnXSA9ICdGb3JjZSBjbGVhbiBvbiBwYXN0ZSc7CiRsYW5nWydmb3JjZWNsZWFucGFzdGVoZWxwJ10gPSAnVGhpcyBzaG91bGQgYmUgZW5hYmxlZCB0byByZW1vdmUgc3RyYW5nZSBmb3JtYXR0aW5nIGNvZGVzIHdoZW4gcGFzdGluZyBmcm9tIFdvcmQgZXRjLic7CiRsYW5nWydib2R5Y3NzX3RleHQnXSA9ICdCb2R5IHRhZyBDU1MnOwokbGFuZ1snYm9keWNzc19oZWxwJ10gPSAnaGFneWQgJiMwMzk7QkxBTksmIzAzOTstb24gdmFneSAmYWFjdXRlO2xsJmlhY3V0ZTt0c2QgJiMwMzk7REVGQVVMVCYjMDM5Oy1yYSBheiBvbGRhbCBhbGFwJmVhY3V0ZTtydGVsbWV6ZXR0IHN0JmlhY3V0ZTtsdXMmYWFjdXRlO25hayAoJiMwMzk7UEFHRSBDU1MmIzAzOTspIGhhc3puJmFhY3V0ZTtsYXQmYWFjdXRlO2hveic7CiRsYW5nWydpbmNsdWRlb25seXNjcmVlbmNzc190ZXh0J10gPSAnSW5jbHVkZSBvbmx5IHNjcmVlbiBDU1MnOwokbGFuZ1snaW5jbHVkZW9ubHlzY3JlZW5jc3NfaGVscCddID0gJ1NlbGVjdGluZyB0aGlzIGFsbG93cyBvbmx5IGF0dGFjaGVkIHN0eWxlc2hlZXRzIHdpdGggdGhlIHNjcmVlbi1tZWRpYXR5cGUgc2VsZWN0ZWQgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHN0eWxlcyBUaW55TUNFIGhhbmRsZXMuJzsKJGxhbmdbJ3VzZXN0YXRpY2NvbmZpZ3RleHQnXSA9ICdVc2Ugc3RhdGljIGNvbmZpZyBmaWxlJzsKJGxhbmdbJ3VzZXN0YXRpY2NvbmZpZ2hlbHAnXSA9ICdUaGlzIGNhbiBoZWxwIGdldHRpbmcgdGlueSB0byB3b3JrIG9uIHN5c3RlbXMgd2hlcmUgdGhlIGhvc3RpbmcgZmFjaWxpdHkgYWRkcyBzdHVmZiBsaWtlIHN0YXRpc3RpY3MgZXRjLiB0byBhbGwgb3V0cHV0LCBicmVha2luZyBkeW5hbWljY2FsbHkgY3JlYXRlZCBqYXZhc2NyaXB0IGNvbmZpZyBmaWxlJzsKJGxhbmdbJ3VzZXN0YXRpY2NvbmZpZ3dhcm5pbmcnXSA9ICdXYXJuaW5nISBZb3UgaGF2ZSB0aGUgc3RhdGljIGNvbmZpZy1maWxlIG9wdGlvbiBlbmFibGVkIGJ1dCB5b3VyIC90bXAvIGRpciBpcyBub3Qgd3JpdGFibGUuIFRoaXMgd2lsbCBwcmV2ZW50IHRoZSBtb2R1bGUgZnJvbSBzYXZpbmcgdGhlIHN0YXRpYyBjb25maWctZmlsZSBhbmQgd2lsbCBtb3N0IHByb2JhYmx5IHJlbmRlciBUaW55TUNFIGlub3BlcmF0aW9uYWwuJzsKJGxhbmdbJ2lnbm9yZW1vZGlmeWZpbGVzdGV4dCddID0gJ0lnbm9yZSB0aGUgJiMwMzk7TW9kaWZ5IEZpbGVzJiMwMzk7IHBlcm1pc3Npb24gZm9yIEZpbGVQaWNrZXInOwokbGFuZ1snaWdub3JlbW9kaWZ5ZmlsZXNoZWxwJ10gPSAnV2FybmluZyEgVGhpcyBhbGxvd3Mgc29tZSBmaWxlLWFsdGVyaW5nIG9wZXJhdGlvbnMgZXZlbiBpZiB0aGUgJiMwMzk7TW9kaWZ5IEZpbGVzJiMwMzk7IHBlcm1pc3Npb24gaXMgbm90IHNldCBmb3IgdGhlIGN1cnJlbnQgdXNlcmdyb3VwLiBUaGlzIGNhbiBlZmZlY3RpdmVseSBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggdGhlIG9wdGlvbiB0byByZXN0cmljdCB1c2VyJiMwMzk7cyBkaXJlY3RvcnkgYWNjZXNzLic7CiRsYW5nWydzaG93dG9nZ2xlYnV0dG9uX3RleHQnXSA9ICdBIFdZU0lXWUcga2ktL2Jla2FwY3NvbCZhYWN1dGU7c2EgZ29tYiBtdXRhdCZhYWN1dGU7c2EnOwokbGFuZ1sndG9nZ2xld3lzaXd5ZyddID0gJ1dZU0lXWUcga2ktL2Jla2FwY3NvbCZhYWN1dGU7c2EnOwokbGFuZ1snc3R5bGVzX3RhYiddID0gJ0NTUyBTdCZpYWN1dGU7bHVzb2snOwokbGFuZ1snc3R5bGVzX2hlbHAnXSA9ICdIYSBlenQgYSBtZXrFkXQgJnV1bWw7cmVzZW4gaGFneW9kLCBha2tvciBhIFRpbnlNQ0UgZmVsZG9sZ296emEgYSBDU1MgZmlsZS10ICZlYWN1dGU7cyBraWxpc3QmYWFjdXRlO3p6YSBhIHN0JmlhY3V0ZTtsdXNva2F0IGEgZmVsaGFzem4mYWFjdXRlO2wmb2FjdXRlO25hay4gSGEgY3NhayBiaXpvbnlvc2FrYXQgYWthcnN6IG1lZ211dGF0bmksIGFkZCBtZWcgxZFrZXQgJnF1b3Q7U3R5bGUgMT1zdGx5ZTE7IFN0eWxlIDI9c3RseWUyJnF1b3Q7IGZvcm0mYWFjdXRlO2JhbiBheiBhbCZhYWN1dGU7YmJpIG1lesWRYmVuLiBBIG1hcmFkJmVhY3V0ZTtrIG1lesWRa2JlbiBtZWdhZGhhdG9kIGEgQ1NTIHN0JmlhY3V0ZTtsdXN0IHQmYWFjdXRlO2JsJmFhY3V0ZTt6YXRvaywgc29yb2sgJmVhY3V0ZTtzIGNlbGwmYWFjdXRlO2sgc3omYWFjdXRlO20mYWFjdXRlO3JhLiAmVXVtbDtyZXMgbWV6xZEgZXNldCZlYWN1dGU7biBheiAmYWFjdXRlO2x0YWwmYWFjdXRlO25vcyBzdCZpYWN1dGU7bHVzYiZvYWN1dGU7bCAmb3VtbDtyJm91bWw7ayZvdW1sO2x0IHN0JmlhY3V0ZTtsdXNvayBsZXN6bmVrIGhhc3puJmFhY3V0ZTtsdmEuJzsKJGxhbmdbJ2Nzc19zdHlsZXNfdGV4dCddID0gJyZBYWN1dGU7bHRhbCZhYWN1dGU7bm9zJzsKJGxhbmdbJ2FjY2Vzc2RlbmllZCddID0gJ0EgaG96eiZhYWN1dGU7ZiZlYWN1dGU7ciZlYWN1dGU7cyBtZWd0YWdhZHZhLiBLJmVhY3V0ZTtyZW0sIGVsbGVuxZFyaXp6ZSBhIGpvZ29zdWx0cyZhYWN1dGU7Z29rYXQuJzsKJGxhbmdbJ2Vycm9yJ10gPSAnSGliYSEnOwokbGFuZ1snc3VibWl0J10gPSAnRWxrJnV1bWw7bGQnOwokbGFuZ1sndXBkYXRlJ10gPSAnRnJpc3MmaWFjdXRlO3QmZWFjdXRlO3MnOwokbGFuZ1snc2F2ZXNldHRpbmdzJ10gPSAnQmUmYWFjdXRlO2xsJmlhY3V0ZTt0JmFhY3V0ZTtzb2sgbWVudCZlYWN1dGU7c2UnOwokbGFuZ1snc2V0dGluZ3MnXSA9ICdCZSZhYWN1dGU7bGwmaWFjdXRlO3QmYWFjdXRlO3Nvayc7CiRsYW5nWydzZXR0aW5nc3NhdmVkJ10gPSAnQSBiZSZhYWN1dGU7bGwmaWFjdXRlO3QmYWFjdXRlO3Nva2F0IG1lbnRldHQmdXVtbDtrJzsKJGxhbmdbJ3NhdmVhZHZhbmNlZCddID0gJ0hhbGFkJm9hY3V0ZTsgYmUmYWFjdXRlO2xsJmlhY3V0ZTt0JmFhY3V0ZTtzb2sgbWVudCZlYWN1dGU7c2UnOwokbGFuZ1snYWR2YW5jZWRzYXZlZCddID0gJ0hhbGFkJm9hY3V0ZTsgYmUmYWFjdXRlO2xsJmlhY3V0ZTt0JmFhY3V0ZTtzb2thdCBtZW50ZXR0JnV1bWw7ayc7CiRsYW5nWyd0b29sYmFyc2F2ZWQnXSA9ICdBeiBlc3prJm91bWw7enQmYWFjdXRlO3JhdCBtZW50ZXR0JnV1bWw7ayc7CiRsYW5nWydzdHlsZXNzYXZlZCddID0gJ0Egc3QmaWFjdXRlO2x1c29rYXQgbWVudGV0dCZ1dW1sO2snOwokbGFuZ1sndGVzdGFyZWF0ZXh0J10gPSAnPHA+VGVzenQgdGVyJnV1bWw7bGV0LCBhIHRhcnRhbG1hdCBuZW0gZm9namEgYiZhYWN1dGU7bnRhbmksIGhhIGl0dCBwciZvYWN1dGU7YiZhYWN1dGU7bGtvem9sLi4uPC9wPic7CiRsYW5nWydyZXNldCddID0gJ0F6IGFsYXAmZWFjdXRlO3J0ZWxtZXpldHQgJmVhY3V0ZTtydCZlYWN1dGU7a2VrIHZpc3N6YSZhYWN1dGU7bGwmaWFjdXRlO3QmYWFjdXRlO3NhJzsKJGxhbmdbJ3Jlc2V0YWxsJ10gPSAnTWluZGVuIGJlJmFhY3V0ZTtsbGwmaWFjdXRlO3QmYWFjdXRlO3Mgdmlzc3phJmFhY3V0ZTtsbCZpYWN1dGU7dCZhYWN1dGU7c2EgYWxhcCZlYWN1dGU7cnRlbG1lemV0dHJlJzsKJGxhbmdbJ2NvbmZpcm1yZXNldCddID0gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZXNldCB0aGVzZSBzZXR0aW5ncyB0byB0aGVpciBkZWZhdWx0cz8nOwokbGFuZ1snY29uZmlybXJlc2V0YWxsJ10gPSAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlc2V0IEFMTCBzZXR0aW5ncyB0byB0aGVpciBkZWZhdWx0cz8nOwokbGFuZ1snc2V0dGluZ3NyZXNldCddID0gJ1RoZXNlIHNldHRpbmdzIHdhcyByZXNldCB0byBkZWZhdWx0JzsKJGxhbmdbJ2FsbHNldHRpbmdzcmVzZXQnXSA9ICdBbGwgc2V0dGluZ3Mgd2FzIHJlc2V0IHRvIGRlZmF1bHQnOwokbGFuZ1sndXBncmFkZWQnXSA9ICdoYXMgYmVlbiB1cGdyYWRlZCB0byB2ZXJzaW9uICVzJzsKJGxhbmdbJ2N1c3RvbWRyb3Bkb3duJ10gPSAnQ3VzdG9tIGRyb3Bkb3duLW1lbnUnOwokbGFuZ1snY21zbXNsaW5rZXInXSA9ICdJbnNlcnQgbGluayB0byBjbXNtcy1wYWdlJzsKJGxhbmdbJ2JhY2tlbmRfdG9vbGJhcnMnXSA9ICdCYWNrZW5kIHRvb2xiYXIgc2V0dGluZ3MnOwokbGFuZ1snZnJvbnRlbmRfdG9vbGJhcnMnXSA9ICdGcm9udGVuZCB0b29sYmFyIHNldHRpbmdzJzsKJGxhbmdbJ3BsdWdpbnNfdGFiJ10gPSAnUGx1Z2lucyc7CiRsYW5nWydwbHVnaW5zX2hlbHAnXSA9ICdDaG9vc2UgdGhlIHBsdWdpbnMgeW91IHdhbnQgdG8gYWN0aXZhdGUuIERvY3VtZW50YXRpb24gY2FuIGJlIGZvdW5kIDxhIGhyZWY9IiVzIiB0YXJnZXQ9Il9ibGFuayI+aGVyZTwvYT4nOwokbGFuZ1sncGx1Z2luc190ZXh0J10gPSAnUGx1Z2lucyc7CiRsYW5nWydzYXZlcGx1Z2lucyddID0gJ1NhdmUgcGx1Z2lucyc7CiRsYW5nWydwbHVnaW5zc2F2ZWQnXSA9ICdQbHVnaW5zIHNhdmVkJzsKJGxhbmdbJ3BsdWdpbnNfbW9kdWxlJ10gPSAnTW9kdWxlIFBsdWdpbnMnOwokbGFuZ1sncGx1Z2luc19jb21tb24nXSA9ICdDb21tb24gUGx1Z2lucyc7CiRsYW5nWydtb2R1bGUnXSA9ICdNb2R1bGUnOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICdEZXNjcmlwdGlvbic7CiRsYW5nWydwbHVnaW4nXSA9ICdQbHVnaW4nOwokbGFuZ1sneW91YXJlaW50ZXh0J10gPSAnWW91IGFyZSBpbic7CiRsYW5nWydsb2Fkc3R5bGVzaGVldHRleHQnXSA9ICdMb2FkIHN0eWxlc2hlZXQgZm9yIGNvbnRlbnQgKHJlY29tbWVuZGVkKSc7CiRsYW5nWydleHRyYXN0eWxlc3RleHQnXSA9ICdBZGRpdGlvbnMgdG8gc3R5bGVzaGVldCc7CiRsYW5nWydleHRyYXN0eWxlc2hlbHAnXSA9ICdDU1MgZW50ZXJlZCBoZXJlIHdpbGwgYmUgYWRkZWQgdG8gdGhlIHN0eWxlc2hlZXQgcmVhZCBieSBUaW55TUNFIGFmdGVyIGl0IHJlY2lldmVzIHRoZSBDTVNtcyBzdHlsZXMnOwokbGFuZ1sndXBsb2FkbmV3ZmlsZSddID0gJyZVYWN1dGU7aiBmJmFhY3V0ZTtqbCc7CiRsYW5nWyd1cGxvYWRmaWxlJ10gPSAnRmVsdCZvdW1sO2x0JmVhY3V0ZTtzJzsKJGxhbmdbJ2NyZWF0ZW5ld2RpciddID0gJyZVYWN1dGU7aiBrJm91bWw7bnl2dCZhYWN1dGU7cic7CiRsYW5nWydjcmVhdGVkaXInXSA9ICdMJmVhY3V0ZTt0cmVob3omYWFjdXRlO3MnOwokbGFuZ1snbm9kaXJuYW1lJ10gPSAnTm8gZGlybmFtZSBwcm92aWRlZCc7CiRsYW5nWydkaXJleGlzdHMnXSA9ICdEaXJuYW1lIGFscmVhZHkgZXhpc3RzJzsKJGxhbmdbJ25ld2RpcmNyZWF0ZWQnXSA9ICdOZXcgZGlyIHN1Y2Nlc3NmdWxseSBjcmVhdGVkJzsKJGxhbmdbJ25ld2RpcmZhaWxlZCddID0gJ0FuIGVycm9yIG9jY3VyZWQgdHJ5aW5nIHRvIGNyZWF0ZSBkaXInOwokbGFuZ1snbm9maWxlJ10gPSAnTm8gZmlsZSB3YXMgdXBsb2FkZWQnOwokbGFuZ1snZmlsZXRvb2JpZyddID0gJ1VwbG9hZGVkIGZpbGUgaXMgdG9vIGJpZyc7CiRsYW5nWydjb250YWluc2lsbGVnYWxjaGFycyddID0gJ0ZpbGVuYW1lIGNvbnRhaW5zIG9uZSBvciBtb3JlIGlsbGVnYWwgY2hhcmFjdGVycyAoJiMwMzk7LCZxdW90OywrLCosXCwvLCZhbXA7LCQpJzsKJGxhbmdbJ3VwbG9hZGZhaWxlZCddID0gJ0Vycm9yIG1vdmluZyB1cGxvYWRlZCBmaWxlIGludG8gcGxhY2UnOwokbGFuZ1snZmlsZXVwbG9hZGVkJ10gPSAnRmlsZSBzdWNjZXNzZnVsbHkgdXBsb2FkZWQnOwokbGFuZ1snbm90YW5pbWFnZSddID0gJ1RoZSB1cGxvYWRlZCBmaWxlIGlzIG5vdCBhbiBpbWFnZSc7CiRsYW5nWydmaWxlcGlja2VydGl0bGUnXSA9ICdDTVNNYWRlU2ltcGxlIEZpbGUgU2VsZWN0aW9uJzsKJGxhbmdbJ3N1Y2Nlc3MnXSA9ICdTaWtlcic7CiRsYW5nWydmaWxlb3BlcmF0aW9ucyddID0gJ0ZpbGUgb3BlcmF0aW9ucyc7CiRsYW5nWyd0aG91c2FuZGRlbGltaXRlciddID0gJywnOwokbGFuZ1snc2l6ZSddID0gJ00mZWFjdXRlO3JldCc7CiRsYW5nWydkaW1lbnNpb25zJ10gPSAnV3hIJzsKJGxhbmdbJ2FkdmFuY2VkX3RhYiddID0gJ0hhbGFkJm9hY3V0ZTsnOwokbGFuZ1snaGVscCddID0gJwk8aDM+RXogbWl0IGVyZWRtJmVhY3V0ZTtueWV6PzwvaDM+Cgk8cD5MZWhldMWRdiZlYWN1dGU7IHRlc3ppLCBob2d5IGEgVGlueU1DRS10IGhhc3puJmFhY3V0ZTtsZCBXWVNJV1lHIHN6ZXJrZXN6dMWRayZlYWN1dGU7bnQuPC9wPgoJPGgzPkhvZ3lhbiBoYXN6biZhYWN1dGU7bGhhdG9tPzwvaDM+Cgk8cD5UZWxlcCZpYWN1dGU7dHNkLCBtYWpkIGEgRmVsaGFzem4mYWFjdXRlO2wmb2FjdXRlO2kgUHJlZmVyZW5jaSZhYWN1dGU7ayBrJm91bWw7eiZvdW1sO3R0IHYmYWFjdXRlO2xhc3pkIHd5c2l3eWcgc3plcmtlc3p0xZFuZWsuPC9wPic7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjI1MTkwODA5Mi4xMzAwMTg2MzY1LjEzMDAxODYzNjUuMTMwMDE4NjM2NS4xJzsKJGxhbmdbJ3V0bWInXSA9ICcxNTY4NjEzNTMnOwokbGFuZ1sndXRtYyddID0gJzE1Njg2MTM1Myc7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjEzMDAxODYzNjUuMS4xLnV0bWNjbj0ocmVmZXJyYWwpfHV0bWNzcj1jbXNtYWRlc2ltcGxlLmh1fHV0bWNjdD0vZm9ydW0vaW5kZXgucGhwL3RvcGljLDQ3Ny4xNS5odG1sfHV0bWNtZD1yZWZlcnJhbCc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/it_IT.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ01vZHVsbyBXWVNJV1lHIFRpbnlNQ0UnOwokbGFuZ1snYWRtaW5kZXNjcmlwdGlvbiddID0gJ1F1ZXN0byBtb2R1bG8gcGVybWV0dGUgbGEgbW9kaWZpY2EgcHJpbmNpcGFsbWVudGUgZGkgY29udGVudXRvLCBtYSBldmVudHVhbG1lbnRlIGFuY2hlIGFsdHJpIHRpcGkgZGkgZGF0aSwgdXRpbGl6emFuZG8gdW4gZWRpdG9yIFdZU0lXWUcgZWRpdG9yIHN2aWx1cHBhdG8gZGFsIHByb2dldHRvIFRpbnlNQ0UuJzsKJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAnTW9kdWxvIGRpc2luc3RhbGxhdG8uJzsKJGxhbmdbJ2luc3RhbGxlZCddID0gJ1ZlcnNpb25lIGRlbCBtb2R1bG8gJXMgaW5zdGFsbGF0YSc7CiRsYW5nWydzdHJpcGJhY2tncm91bmR0YWdzJ10gPSAnVG9nbGkgaSB0YWcgYmFja2dyb3VuZCBkYSBDU1MnOwokbGFuZ1snc3RpcHRhZ3NfaGVscCddID0gJ1F1ZXN0YSBvcHppb25lIGNlcmNhIGRpIHJpbXVvdmVyZSBsZSBpbXBvc3RhemlvbmkgZGkgYmFja2dyb3VuZCBkYWkgZm9nbGkgZGkgc3RpbGUuJzsKJGxhbmdbJ3NvdXJjZV9mb3JtYXR0aW5nX3RleHQnXSA9ICdBcHBsaWNhIGxhIGZvcm1hdHRhemlvbmUgZGVsIHNvcmdlbnRlIGFsIEhUTUwgZGkgdXNjaXRhJzsKJGxhbmdbJ2Ryb3Bkb3duYmxvY2tmb3JtYXRzX3RleHQnXSA9ICdGb3JtYXRpIG5lbCBtZW51IGEgdGVuZGluYSc7CiRsYW5nWydhbGxvd3RhYmxlcyddID0gJ1Blcm1ldHRldGUgb3BlcmF6aW9uaSBzdWxsZSB0YWJlbGxlJzsKJGxhbmdbJ25ld2xpbmVzdHlsZV90ZXh0J10gPSAnU3RpbGUgZGkgdW4gSW52aW8nOwokbGFuZ1sncHN0eWxlJ10gPSAnc3RpbGUgJmFtcDtsdDtwJmFtcDtndDsnOwokbGFuZ1snYnJzdHlsZSddID0gJ3N0aWxlICZhbXA7bHQ7YnIgLyZhbXA7Z3Q7JzsKJGxhbmdbJ3VzZWNvbXByZXNzaW9udGV4dCddID0gJ1VzYSBsYSBjb21wcmVzc2lvbmUgZ3onOwokbGFuZ1sndXNlY29tcHJlc3Npb25oZWxwJ10gPSAnUXVlc3RvIHB1Jm9ncmF2ZTsgdmVsb2NpenphcmUgaWwgY2FyaWNhbWVudG8gZGkgVGlueU1DRSwgbWEgcHUmb2dyYXZlOyBhbmNoZSBpbXBlZGlybmUgaWwgY2FyaWNhbWVudG8gc3UgYWxjdW5pIHNpc3RlbWkuIFVzYXRlIGNvbiBjYXV0ZWxhLic7CiRsYW5nWydmb3JjZWRyb290YmxvY2t0ZXh0J10gPSAnRm9yemEgaWwgdGFnICZhbXA7bHQ7cCZhbXA7Z3Q7IGluaXppYWxlL2ZpbmFsZSBuZWwgYmxvY2NvJzsKJGxhbmdbJ2ZvcmNlZHJvb3RibG9ja2hlbHAnXSA9ICdGb3J6YSBsYSBwcmVzZW56YSBkaSBhbG1lbm8gdW4gdGFnICZhbXA7bHQ7cCZhbXA7Z3Q7IGF0dG9ybiBvIGFsIGNvbnRlbnV0byBpbnZpYXRvJzsKJGxhbmdbJ2ZpbGVwaWNrZXJzdHlsZSddID0gJ1N0aWxlIGRlbCBGaWxlcGlja2VyJzsKJGxhbmdbJ2ZpbGVwaWNrZXJzaXplJ10gPSAnRGltZW5zaW9uZSBkZWwgRmlsZXBpY2tlcic7CiRsYW5nWydhbGxvd3VwbG9hZHRleHQnXSA9ICdQZXJtZXR0ZSBpbCBjYXJpY2FtZW50byBlIGxhIGNyZWF6aW9uZSBkaSBkaXJlY3RvcnkgaW4gRmlsZVBpY2tlcic7CiRsYW5nWydhbGxvd3NjYWxpbmd0ZXh0J10gPSAnUGVybWV0dGUgaWwgcmlkaW1lbnNpb25hbWVudG8gYWwgdm9sbyBkZWxsZSBpbW1hZ2luaSBjYXJpY2F0ZSc7CiRsYW5nWydzY2FsaW5nZGltZW5zaW9uc3RleHQnXSA9ICdEaW1lbnNpb25pIHByZWRlZmluaXRlJzsKJGxhbmdbJ3Jlc2l6ZXRvJ10gPSAnUmlkaW1lbnNpb25hIGE6JzsKJGxhbmdbJ21ha2V0aHVtYm5haWwnXSA9ICdDcmVhIHVuYSBtaW5pYXR1cmEgcXVhbmRvIHNpIGNhcmljYW5vIGltbWFnaW5pJzsKJGxhbmdbJ3VzZWFkdmFuY2VkcHJvZmlsZSddID0gJ1VzYSBpbCBwcm9maWxvIFRpbnlNQ0UgYXZhbnphdG8nOwokbGFuZ1snc2F2ZXByb2ZpbGUnXSA9ICdTYWx2YSBpbCBwcm9maWxvJzsKJGxhbmdbJ3Byb2ZpbGVzYXZlZCddID0gJ0lsIHByb2ZpbG8gJmVncmF2ZTsgc3RhdG8gc2FsdmF0byc7CiRsYW5nWydwcm9maWxlc190YWInXSA9ICdQcm9maWxpJzsKJGxhbmdbJ2FkdmFuY2VkX2JhY2tlbmRfdG9vbGJhcnMnXSA9ICdQcm9maWxpIGRpIGNvbmZpZ3VyYXppb25lIGF2YW56YXRpIHBlciBpbCBwYW5uZWxsbyBkaSBhbW1pbmlzdHJhemlvbmUnOwokbGFuZ1snc2F2ZXN0eWxlcyddID0gJ1NhbHZhIGdsaSBTdGlsaSc7CiRsYW5nWydhbGxvd2FkdmFuY2VkcHJvZmlsZSddID0gJ1Blcm1ldHRpIGwmIzAzOTt1c28gZGkgcHJvZmlsaSBhdmFuemF0aSBpbiBUaW55TUNFJzsKJGxhbmdbJ3Nob3dmaWxlbWFuYWdlbWVudCddID0gJ01vc3RyYSBvcHppb25pIGRpIGdlc3Rpb25lIGZpbGUnOwokbGFuZ1snc2hvd2ZpbGVtYW5hZ2VtZW50aGVscCddID0gJ01vc3RyYSBnZXN0aW9uZSBkaSBmaWxlIGluIG9wemlvbmkgY29tZSB1cGxvYWQsIGNyZWEgY2FydGVsbGUgZSBjYW5jZWxsYXppb25lIGZpbGUgaW4gRmlsZVBpY2tlciwgc2UgYWxsJiMwMzk7dXRlbnRlICZlZ3JhdmU7IHBlcm1lc3NvLic7CiRsYW5nWydyZXN0cmljdGRpcnMnXSA9ICdMaW1pdGEgYWNjZXNzbyBhbGxhIGNhcnRlbGxhIHV0ZW50ZSc7CiRsYW5nWydyZXN0cmljdGRpcnNoZWxwJ10gPSAnUXVlc3RhIGZ1bnppb25lIGxpbWl0ZXImYWdyYXZlOyBsZSBwb3NzaWJpbGl0JmFncmF2ZTsgZGkgZ2VzdGlvbmUgZGVpIGZpbGUgZGVsbCYjMDM5O3V0ZW50ZSBhZCB1bmEgc290dG9jYXJ0ZWxsYSBkaSAmIzAzOTt1cGxvYWRzJiMwMzk7IGNvbiBsbyBzdGVzc28gbm9tZSBkaSBhY2Nlc3NvIGRlbGwmIzAzOTt1dGVudGUuIFNlIGxhIHNvdHRvY2FydGVsbGEgbm9uIGVzaXN0ZSBuZSB2ZXJyJmFncmF2ZTsgdGVudGF0YSBsYSBjcmVhemlvbmUuIFF1ZXN0YSBmdW56aW9uZSBhdHR1YWxtZW50ZSBmdW56aW9uYSBzb2xvIGNvbiBsZSBjYXJ0ZWxsZSBzdGFuZGFyZCwgdXBsb2FkL2ltYWdlcy4gUG90cmViYmUgZXNzZXJlIG1vZGlmaWNhdG8gaW4gZnV0dXJvLic7CiRsYW5nWydkZWxldGVjb25maXJtYXRpb24nXSA9ICdTaWV0ZSBzaWN1cmkgZGkgdm9sZXIgY2FuY2VsbGFyZSBxdWVzdG8gZmlsZT8nOwokbGFuZ1snZGVsZXRlZmlsZXN1Y2Nlc3MnXSA9ICcmZWdyYXZlOyBzdGF0byBjYW5jZWxsYXRvIGNvcnJldHRhbWVudGUnOwokbGFuZ1snZGVsZXRlZmlsZWZhaWxlZCddID0gJ25vbiBwdSZvZ3JhdmU7IGVzc2VyZSBjYW5jZWxsYXRvJzsKJGxhbmdbJ2RlbGV0ZXN1YmRpcmZhaWxlZCddID0gJ25vbiBwdSZvZ3JhdmU7IGVzc2VyZSBjYW5jZWxsYXRvJzsKJGxhbmdbJ2RlbGV0ZXN1YmRpcnN1Y2Nlc3MnXSA9ICcmZWdyYXZlOyBzdGF0byBjYW5jZWxsYXRvIGNvcnJldHRhbWVudGUnOwokbGFuZ1snZGVsZXRlZGlyY29uZmlybWF0aW9uJ10gPSAnU2lldGUgY2VydGkgY2hlIHF1ZXN0YSBzb3R0b2NhcnRlbGxhIHZ1b3RhIGRlYmJhIGVzc2VyZSBlbGltaW5hdGE/JzsKJGxhbmdbJ2RlbGV0ZWRpciddID0gJ0VsaW1pbmEgc290dG9jYXJ0ZWxsYSB2dW90YSc7CiRsYW5nWydkZWxldGVmaWxlJ10gPSAnRWxpbWluYSBGaWxlJzsKJGxhbmdbJ2Nhbm5vdHJlYWRjb25maWcnXSA9ICdOb24gcmllc2NvIGEgbGVnZ2VyZSBpbCBmaWxlIHRpbnljb25maWcucGhwIGRpcmV0dGFtZW50ZSwgcGVyY2kmb2dyYXZlOyAmZWdyYXZlOyBwb3NzaWJpbGUgY2hlIFRpbnlNQ0Ugbm9uIGZ1bnppb25pLiBEb3ZyZXN0ZSBjb250cm9sbGFyZSBpIHBlcm1lc3NpIGRlbCBmaWxlIGUgZGVsbGUgY2FydGVsbGUgc3VwZXJpb3JpLCBjaGUgZG92cmViYmVybyBlc3NlcmUgbGVnZ2liaWxpIHBlciB0dXR0aSBtYSBzY3JpdmliaWxpIHNvbG8gcGVyIGlsIHByb3ByaWV0YXJpby4nOwokbGFuZ1snZmlsZW5hbWVvbmx5J10gPSAnTW9zdHJhIG5vbWkgZmlsZSc7CiRsYW5nWyd0aHVtYm5haWxzb25seSddID0gJ01vc3RyYSBtaW5pYXR1cmUnOwokbGFuZ1snc2hvd3RodW1ibmFpbGZpbGVzdGV4dCddID0gJ01vc3RyYSBpIGZpbGUgbWluaWF0dXJhIGNvbWUgbm9ybWFsaSBmaWxlJzsKJGxhbmdbJ2ZpbGVuYW1lYW5kdGh1bWJuYWlscyddID0gJ01vc3RyYSBzaWEgaSBub21pIGZpbGUgY2hlIGxlIG1pbmlhdHVyZSc7CiRsYW5nWydza2luc3RleHQnXSA9ICdTa2luICc7CiRsYW5nWydza2ludmFyaWF0aW9udGV4dCddID0gJ0NhbWJpbyBTa2luJzsKJGxhbmdbJ2FkdmFuY2Vkd2FybmluZyddID0gJzxzdHJvbmc+Tm90YSBiZW5lITxici8+Q2FtYmlhcmUgcXVlc3RlIGNvbmZpZ3VyYXppb25pIHB1Jm9ncmF2ZTsgY2F1c2FyZSBpbCBub24gZnVuemlvbmFtZW50byBkaSBUaW55TUNFIG8gbGEgY3JlYXppb25lIGRpIGNvZGljZSBlcnJhdG8gaW4gcXVhbGNoZSBtb2RvLiBNb2RpZmljYXRlIHF1ZXN0aSBwYXJhbWV0cmkgc29sbyBzZSBzYXBldGUgcXVlbGxvIGNoZSBzdGF0ZSBmYWNlbmRvISBWaSBjb25zaWdsaWFtbyBkaSBjb25zdWx0YXJlIGlsIHNpdG8gZGkgVGlueU1DRSBwcmltYSBkaSBnaW9jYXJlIGNvbiBxdWVzdGkgdmFsb3JpLjwvc3Ryb25nPic7CiRsYW5nWydlbnRpdHllbmNvZGluZ190ZXh0J10gPSAnQ29kaWZpY2EgZGVsbGUgZW50aXQmYWdyYXZlOyc7CiRsYW5nWydyYXdlbmNvZGluZyddID0gJ0NvZGlmaWNhIGdyZXp6YSAocGkmdWdyYXZlOyB2ZWxvY2UsIGxhdm9yYSBuZWxsYSBtYWdnaW9yYW56YSBkZWkgY2FzaSknOwokbGFuZ1snbmFtZWRlbmNvZGluZyddID0gJ0NvZGlmaWNhIG5vbWluYWxlIChjb21lICZhbXA7YW1wO25ic3A7KSc7CiRsYW5nWydudW1lcmljZW5jb2RpbmcnXSA9ICdDb2RpZmljYSBudW1lcmljYSAoY29tZSAmYW1wO2FtcDsjMTYwOyknOwokbGFuZ1snc2hvd19wYXRoX3RleHQnXSA9ICdNb3N0cmEgaWwgcGVyY29yc28gZGVsbCYjMDM5O2VsZW1lbnRvIHNvdHRvIGFsbCYjMDM5O2VkaXRvcic7CiRsYW5nWyd0b29sYmFyX3RhYiddID0gJ0JhcnJhIGRlZ2xpIFN0cnVtZW50aSc7CiRsYW5nWyd0b29sYmFyX2hlbHAnXSA9ICdRdWVzdGUgb3B6aW9uaSBkb3ZyZWJiZXJvIGNvbnRlbmVyZSB1bmEgbGlzdGEgZGkgbm9taSBkaSBwdWxzYW50aS9jb250cm9sbGkgc2VwYXJhdGkgZGEgdmlyZ29sYSwgZGEgaW5zZXJpcmUgbmVsbGEgYmFycmEgZGVnbGkgc3RydW1lbnRpLiBJbCBjYXJhdHRlcmUgfCBwdSZvZ3JhdmU7IGVzc2VyZSB1c2F0byBpbnZlY2UgZGVsbGEgcGFyb2xhICYjMDM5O3NlcGFyYXRvciYjMDM5Oyc7CiRsYW5nWyd0b29sYmFyX3RleHQnXSA9ICdCYXJyYSBkZWdsaSBTdHJ1bWVudGknOwokbGFuZ1sndG9vbGJhcmhlbHB0ZXh0J10gPSAnQ2xpY2NhdGUgcXVpIHBlciB2ZWRlcmUgbGUgaXN0cnV6aW9uaSBwZXIgbGEgYmFycmEgZGVnbGkgc3RydW1lbnRpIG5lbCBUaW55TUNFLXdpa2kuJzsKJGxhbmdbJ2VkaXRvcl93aWR0aF90ZXh0J10gPSAnTGFyZ2hlenphIGRlbCBjYW1wbyBkaSBtb2RpZmljYSc7CiRsYW5nWydlZGl0b3JfaGVpZ2h0X3RleHQnXSA9ICdBbHRlenphIGRlbCBjYW1wbyBkaSBtb2RpZmljYSc7CiRsYW5nWydhdXRvJ10gPSAnQXV0b21hdGljbyc7CiRsYW5nWydvciddID0gJ28nOwokbGFuZ1sndGVzdGFyZWFfdGFiJ10gPSAnQXJlYSBkaSBwcm92YSc7CiRsYW5nWydzaG93dGVzdGluZ291dHB1dCddID0gJ01vc3RyYSBsJiMwMzk7b3V0cHV0IGRpIHByb3ZhJzsKJGxhbmdbJ3Rlc3RhcmVhZWRpdG9yJ10gPSAnRWRpdG9yIGRlbGwmIzAzOTthcmVhIGRpIHByb3ZhJzsKJGxhbmdbJ3Rlc3RhcmVhb3V0cHV0J10gPSAnT3V0cHV0IGRlbGwmIzAzOTthcmVhIGRpIHByb3ZhJzsKJGxhbmdbJ3Rlc3RhcmVhb3V0cHV0c291cmNlJ10gPSAnQ29kaWNlIGRlbGwmIzAzOTthcmVhIGRpIHByb3ZhJzsKJGxhbmdbJ2FsbG93cmVzaXppbmcnXSA9ICdQZXJtZXR0ZSBpbCByaWRpbWVuc2lvbmFtZW50byBuZWwgY2FtcG8gZGVsbCYjMDM5O2VkaXRvcic7CiRsYW5nWydyZXNpemVub25lJ10gPSAnTm9uIHBlcm1ldHRlIGlsIHJpZGltZW5zaW9uYW1lbnRvJzsKJGxhbmdbJ3Jlc2l6ZWJvdGgnXSA9ICdQZXJtZXR0ZSBpbCByaWRpbWVuc2lvbmFtZW50byBpbiBlbnRyYW1iZSBsZSBkaXJlemlvbmknOwokbGFuZ1sncmVzaXplaGVpZ2h0J10gPSAnUGVybWV0dGUgaWwgcmlkaW1lbnNpb25hbWVudG8gZGVsbGEgc29sYSBhbHRlenphJzsKJGxhbmdbJ2RhdGV0aW1lZm9ybWF0X3RleHQnXSA9ICdGb3JtYXRvIERhdGEvT3JhJzsKJGxhbmdbJ3RpbWV0ZXh0J10gPSAnT3JhJzsKJGxhbmdbJ2RhdGV0ZXh0J10gPSAnRGF0YSc7CiRsYW5nWydkYXRldGltZWZvcm1hdF9oZWxwJ10gPSAnQ2xpY2NhdGUgcXVpIHBlciBsJiMwMzk7YWl1dG8gc3UgY29tZSBmb3JtYXR0YXJlIGxhIGRhdGEvb3JhJzsKJGxhbmdbJ2V4dHJhY29uZmlndGV4dCddID0gJ0NvbmZpZ3VyYXppb25lIEV4dHJhJzsKJGxhbmdbJ2V4dHJhY29uZmlnaGVscDInXSA9ICdVbmEgZnJhc2UgcGVyIGxpbmVhLCBsZSB2aXJnb2xlIHNhcmFubm8gYWdnaXVudGUgcHJpbWEgZSBkb3BvIHF1ZXN0byBjb21tZW50by4gUGVyIGxlIGlzdHJ1emlvbmkgY29uc3VsdGF0ZSBpbCBUaW55TUNFLXdpa2kuJzsKJGxhbmdbJ2N1c3RvbWRyb3Bkb3dudGV4dCddID0gJ1RlbmRpbmEgcGVyc29uYWxpenphdGEnOwokbGFuZ1snY3VzdG9tZHJvcGRvd25oZWxwJ10gPSAnSW5zZXJpc2NlIHNuaXBwZXRzIGRpIGNvZGljZS90ZXN0byBwZXJzb25hbGl6emF0aSBpbiB1biBtZW51IGEgdGVuZGluYS4gDQpVdGlsaXp6aSBjb25zdWV0aSBwb3Nzb25vIGVzc2VyZSB1biBhY2Nlc3NvIHJhcGlkbyBhIHRhZywgcGx1Z2luLCBldGMuIElsIG1lbnUgJmVncmF2ZTsgaW5zZXJpdG8gbmVsbGEgYmFycmEgZGVnbGkgc3RydW1lbnRpIHVzYW5kbyAmIzAzOTtjdXN0b21kcm9wZG93biYjMDM5Oy4nOwokbGFuZ1snc3RhcnRlbmFibGVkdGV4dCddID0gJ0F2dmlvIGFiaWxpdGF0byc7CiRsYW5nWydzdGFydGVuYWJsZWRoZWxwJ10gPSAnRGVzZWxlemlvbmFyZSBxdWVzdGEgY2FzZWxsYSBjYXVzZXImYWdyYXZlOyBsJiMwMzk7YXZ2aW8gZGVnbGkgZWRpdG9yIFRpbnkgaW4gbW9kYWxpbHQmYWdyYXZlOyAmcXVvdDtkaXNhYmlsaXRhdG8mcXVvdDsuIERvdnJlYmJlIGVzc2VyZSB1dGlsaXp6YXRvIGluIGNvbmdpdW56aW9uZSBjb24gaWwgcHVsc2FudGUgZGkgYXR0aXZhemlvbmUuJzsKJGxhbmdbJ2xvYWRjbXNsaW5rZXJ0ZXh0J10gPSAnQ2FyaWNhIGlsIENNU21zbGlua2VyJzsKJGxhbmdbJ2xvYWRjbXNsaW5rZXJoZWxwJ10gPSAnUXVlc3RvIGdlbmVyYSBpbCBjb2RpY2UgamF2YXNjcmlwdCBuZWNlc3NhcmlvIHBlciBwZXJtZXR0ZXJlIGFsIGNtc21zbGlua2VyIGRpIGVzc2VyZSBhZ2dpdW50byBhbGxhIGJhcnJhIGRlZ2xpIHN0cnVtZW50aS4nOwokbGFuZ1snY21zbGlua2Vyc3R5bGV0ZXh0J10gPSAnU3RpbGUgZGVpIGxpbmsgcGVyIENNUy1saW5rZXInOwokbGFuZ1snY21zc2VsZmxpbmtzdHlsZSddID0gJ1N0aWxlIHtjbXNfc2VsZmxpbmt9JzsKJGxhbmdbJ2FocmVmc3R5bGUnXSA9ICdTdGlsZSAmYW1wO2x0O2EgaHJlZiZhbXA7Z3Q7JzsKJGxhbmdbJ2Ntc2xpbmtlcmFkZHN0ZXh0J10gPSAnQWdnaXVudGUgYWwgQ01TLWxpbmtlcic7CiRsYW5nWydjbXNsaW5rZXJhZGRzaGVscCddID0gJ1ZpIHBlcm1ldHRlIGRpIGFnZ2l1bmdlcmUgaW5mb3JtYXppb25pIGFsIHRhZyAmYW1wO2x0O2EgaHJlZiZhbXA7Z3Q7IG8ge2Ntc19zZWxmbGlua30gcXVhbmRvIHZlbmdvbm8gZ2VuZXJhdGkgZGEgQ01TLWxpbmtlci4nOwokbGFuZ1snYXZvaWRsaW5rY29udmVyc2lvbnRleHQnXSA9ICdOb24gcGVybWV0dGVyZSBsYSBjb252ZXJzaW9uZSBkaSBjb2xsZWdhbWVudGknOwokbGFuZ1snYXZvaWRsaW5rY29udmVyc2lvbmhlbHAnXSA9ICdEaXNhdHRpdmEgbGEgbG9naWNhIGRpIGNvbnZlcnNpb25lIGRlaSBjb2xsZWdhbWVudGkgZGkgVGlueU1DRS4gUmVuZGUgcG9zc2liaWxlIGwmIzAzOTt1c28gZGkge3NtYXJ0eX0gbmVnbGkgdXJsLic7CiRsYW5nWydyZWxhdGl2ZXVybHN0ZXh0J10gPSAnR2VuZXJhIFVSTCByZWxhdGl2aSc7CiRsYW5nWydmb3JjZWNsZWFucGFzdGV0ZXh0J10gPSAnRm9yemEgbGEgcHVsaXppYSBkZWwgY29kaWNlIHN1bGwmIzAzOTtpbmNvbGxhJzsKJGxhbmdbJ2ZvcmNlY2xlYW5wYXN0ZWhlbHAnXSA9ICdRdWVzdG8gcGFyYW1ldHJvIGRvdnJlYmJlIGVzc2VyZSBhYmlsaXRhdG8gcGVyIHJpbXVvdmVyZSBzdHJhbmUgZm9ybWF0dGF6aW9uaSBkaSBjb2RpY2UgcXVhbmRvIHNpIGluY29sbGEgZGEgV29yZCwgZXRjLi4uJzsKJGxhbmdbJ2JvZHljc3NfdGV4dCddID0gJ0ZvZ2xpbyBkaSBTdGlsZSAoQ1NTKSBkZWwgdGFnIEJvZHknOwokbGFuZ1snYm9keWNzc19oZWxwJ10gPSAnU2FyJmFncmF2ZTsgYWdnaXVudG8gYWxsYSBkZWZpbml6aW9uZSBkZWxsbyBTdGlsZSBDU1MgZGVsIGJvZHkuIFN1Z2dlcmltZW50bzogaWwgY29sb3JlIGRpIHNmb25kbyBwdSZvZ3JhdmU7IGVzc2VyZSBpbXBvc3RhdG8gYSBiaWFuY28gdXRpbGl6emFuZG8gJnF1b3Q7YmFja2dyb3VuZC1jb2xvcjogd2hpdGUmcXVvdDsgJzsKJGxhbmdbJ2luY2x1ZGVvbmx5c2NyZWVuY3NzX3RleHQnXSA9ICdJbmNsdWRlIHNvbG8gZ2xpIFN0aWxpIENTUyBkaSB0aXBvIHNjcmVlbic7CiRsYW5nWydpbmNsdWRlb25seXNjcmVlbmNzc19oZWxwJ10gPSAnU2VsZXppb25hbmRvIHF1ZXN0byBzaSBwZXJtZXR0ZSBzb2xvIGFnbGkgc3RpbGkgQ1NTIGNvbiBpbCBtZWRpYXR5cGUgZGkgdGlwbyBzY3JlZW4gY29sbGdhdGkgZGkgZXNzZXJlIGluY2x1c2kgbmVnbGkgc3RpbGkgZ2VzdGl0aSBkYSBUaW55TUNFLic7CiRsYW5nWyd1c2VzdGF0aWNjb25maWd0ZXh0J10gPSAnVXNhIGZpbGUgY29uZmlnIHN0YXRpY28nOwokbGFuZ1sndXNlc3RhdGljY29uZmlnaGVscCddID0gJ1B1Jm9ncmF2ZTsgYWl1dGFyZSBhIGZhciBmdW56aW9uYXJlIHRpbnkgc3Ugc2lzdGVtaSBpbiBjdWkgY3VpIGkgc2Vydml6aSBkaSBob3N0aW5nIGFnZ2l1bmdvbm8gYSB0dXR0aSBnbGkgb3V0cHV0IGNvc2UgY29tZSBzdGF0aXN0aWNoZSwgZXRjLiwgaW50ZXJyb21wZW5kbyBmaWxlIGRpIGNvbmZpZ3VyYXppb25lIGphdmFzY3JpcHQgY3JlYXRpIGRpbmFtaWNhbWVudGUnOwokbGFuZ1sndXNlc3RhdGljY29uZmlnd2FybmluZyddID0gJ0F0dGVuemlvbmUhIEF2ZXRlIGFiaWxpdGF0byBsJiMwMzk7b3B6aW9uZSBkaSBmaWxlIGNvbmZpZyBzdGF0aWNvIG1hIGxhIHZvc3RyYSBkaXJlY3RvcnkgdG1wLyBub24gJmVncmF2ZTsgc2NyaXZpYmlsZS4gUXVlc3RvIGltcGVkaXImYWdyYXZlOyBhbCBtb2R1bG8gZGkgc2FsdmFyZSBpbCBmaWxlIGNvbmZpZyBzdGF0aWNvIGUgbW9sdG8gcHJvYmFiaWxtZW50ZSByZW5kZXImYWdyYXZlOyBpbm9wZXJhdGl2byBUaW55TUNFLic7CiRsYW5nWydpZ25vcmVtb2RpZnlmaWxlc3RleHQnXSA9ICdJZ25vcmEgaSBwZXJtZXNzaSAmIzAzOTtNb2RpZmljYSBGaWxlJiMwMzk7IHBlciBGaWxlUGlja2VyJzsKJGxhbmdbJ2lnbm9yZW1vZGlmeWZpbGVzaGVscCddID0gJ0F0dGVuemlvbmUhIFF1ZXN0byBwYXJhbWV0cm8gcGVybWV0dGVyJmFncmF2ZTsgb3BlcmF6aW9uaSBkaSBhbHRlcmF6aW9uZSBkaSBmaWxlIGFuY2hlIHNlIGwmIzAzOTthdHR1YWxlIGdydXBwbyBkaSB1dGVudGkgbm9uIHBvc3NpZWRlIGkgcGVybWVzc2kgJiMwMzk7TW9kaWZpY2EgRmlsZSYjMDM5Oy4gUXVlc3RhIG9wemlvbmUgcHUmb2dyYXZlOyBlc3NlcmUgdXRpbGl6emF0YSBlZmZpY2FjZW1lbnRlIGNvbiBsJiMwMzk7b3B6aW9uZSBkaSByZXN0cml6aW9uZSBkJiMwMzk7YWNjZXNzbyBhbGxhIGNhcnRlbGxhIHV0ZW50ZS4nOwokbGFuZ1snc2hvd3RvZ2dsZWJ1dHRvbl90ZXh0J10gPSAnTW9zdHJhIGNhc2VsbGEgcGVyIGF0dGl2YXJlL2Rpc2F0dGl2YXJlIGwmIzAzOTtlZGl0b3IgV1lTSVdZRyc7CiRsYW5nWyd0b2dnbGV3eXNpd3lnJ10gPSAnQXR0aXZhL2Rpc2F0dGl2YSBlZGl0b3IgV1lTSVdZRyc7CiRsYW5nWydzdHlsZXNfdGFiJ10gPSAnU3RpbGkgQ1NTJzsKJGxhbmdbJ3N0eWxlc19oZWxwJ10gPSAnU2UgbGFzY2lhdGUgaWwgcHJpbW8gY2FtcG8gdnVvdG8sIFRpbnlNQ0UgZXNhbWluZXImYWdyYXZlOyBpbCB2b3N0cm8gRm9nbGlvIGRpIFN0aWxlIGVkIGVsZW5jaGVyJmFncmF2ZTsgYWxsJiMwMzk7dXRlbnRlIGdsaSBzdGlsaSBjb250ZW51dGkuDQpTZSB2b2xldGUgY2hlIHZlbmdhbm8gdmlzdWFsaXp6YXRpIGFsbCYjMDM5O3V0ZW50ZSBzb2xvIGFsY3VuaSBzdGlsaSwgc3BlY2lmaWNhdGVsaSBuZWxsYSBmb3JtYSAmcXVvdDtNaW9TdGlsZTE9c3R5bGUxOyBNaW9TdGlsZTI9c3R5bGUyJnF1b3Q7IG5lbCBwcmltbyBjYW1wbyBzb3R0by4NCk5vdGEgYmVuZTogTWlvU3RpbGUxPXN0eWxlMSBzaWduaWZpY2EgVW5Wb3N0cm9Ob21lZGVsbG9TdGlsZUNTUyA9IE5vbWVWRVJPZGVsbG9TdGlsZUNTUy4NCk5laSBjYW1waSByaW1hbmVudGkgcG90ZXRlIHNwZWNpZmljYXJlIHN0aWxpIENTUyBwZXIgVGFiZWxsZSwgUmlnaGUgZSBDZWxsZSBjaGUgdmVuZ29ubyB1dGlsaXp6YXRlIG5lbGxlIGNhc2VsbGUgY29ycmlzcG9uZGVudGkuIA0KUGVyIGkgY2FtcGkgdnVvdGkgdmVycmFubm8gdXRpbGl6emF0aSBnbGkgc3RpbGkgZ2VuZXJpY2kuJzsKJGxhbmdbJ2Nzc19zdHlsZXNfdGV4dCddID0gJ1N0aWxpJzsKJGxhbmdbJ2FjY2Vzc2RlbmllZCddID0gJ0FjY2Vzc28gTmVnYXRvLiBTaSBwcmVnYSBkaSBjb250cm9sbGFyZSBpIHZvc3RyaSBwZXJtZXNzaS4nOwokbGFuZ1snZXJyb3InXSA9ICdFcnJvcmUhJzsKJGxhbmdbJ3N1Ym1pdCddID0gJ0ludmlhJzsKJGxhbmdbJ3VwZGF0ZSddID0gJ0FnZ2lvcm5hJzsKJGxhbmdbJ3NhdmVzZXR0aW5ncyddID0gJ1NhbHZhIGltcG9zdGF6aW9uaSc7CiRsYW5nWydzZXR0aW5ncyddID0gJ0ltcG9zdGF6aW9uaSc7CiRsYW5nWydzZXR0aW5nc3NhdmVkJ10gPSAnTGUgaW1wb3N0YXppb25pIHNvbm8gc3RhdGUgc2FsdmF0ZSc7CiRsYW5nWydzYXZlYWR2YW5jZWQnXSA9ICdTYWx2YSBpbXBvc3RhemlvbmkgYXZhbnphdGUnOwokbGFuZ1snYWR2YW5jZWRzYXZlZCddID0gJ0ltcG9zdGF6aW9uaSBhdmFuemF0ZSBzYWx2YXRlJzsKJGxhbmdbJ3Rvb2xiYXJzYXZlZCddID0gJ0JhcnJhIGRlZ2xpIHN0cnVtZW50aSBzYWx2YXRhJzsKJGxhbmdbJ3N0eWxlc3NhdmVkJ10gPSAnU3RpbGkgc2FsdmF0aSc7CiRsYW5nWyd0ZXN0YXJlYXRleHQnXSA9ICc8cD5BcmVhIGRpIHRlc3QsIG5lc3N1biBjb250ZW51dG8gdmVyciZhZ3JhdmU7IG1vZGlmaWNhdG8gZmFjZW5kbyBwcm92ZSBxdWkuLi48L3A+JzsKJGxhbmdbJ3Jlc2V0J10gPSAnUmlwcmlzdGluYSB2YWxvcmkgcHJlZGVmaW5pdGknOwokbGFuZ1sncmVzZXRhbGwnXSA9ICdSaXByaXN0aW5hIHR1dHRpIGkgdmFsb3JpIHByZWRlZmluaXRpJzsKJGxhbmdbJ2NvbmZpcm1yZXNldCddID0gJ1NpZXRlIHNpY3VyaSBkaSB2b2xlciByaXByaXN0aW5hcmUgcXVlc3RlIGltcG9zdGF6aW9uaSBhaSB2YWxvcmkgcHJlZGVmaW5pdGk/JzsKJGxhbmdbJ2NvbmZpcm1yZXNldGFsbCddID0gJ1NpZXRlIHNpY3VyaSBkaSB2b2xlciByaXByaXN0aW5hcmUgVFVUVEUgbGUgaW1wb3N0YXppb25pIGFpIHZhbG9yaSBwcmVkZWZpbml0aT8nOwokbGFuZ1snc2V0dGluZ3NyZXNldCddID0gJ1F1ZXN0ZSBpbXBvc3Rhemlvbmkgc29ubyBzdGF0ZSByaXByaXN0aW5hdGUgYWkgdmFsb3JpIHByZWRlZmluaXRpJzsKJGxhbmdbJ2FsbHNldHRpbmdzcmVzZXQnXSA9ICdUdXR0ZSBsZSBpbXBvc3Rhemlvbmkgc29ubyBzdGF0ZSByaXByaXN0aW5hdGUgYWkgdmFsb3JpIHByZWRlZmluaXRpJzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnJmVncmF2ZTsgc3RhdG8gYWdnaW9ybmF0byBhbGxhIHZlcnNpb25lICVzJzsKJGxhbmdbJ2N1c3RvbWRyb3Bkb3duJ10gPSAnTWVudSBhIFRlbmRpbmEgcGVyc29uYWxpenphdG8nOwokbGFuZ1snY21zbXNsaW5rZXInXSA9ICdJbnNlcmlzY2UgdW4gbGluayBhbGxlIHBhZ2luZSBjbXNtcyc7CiRsYW5nWydiYWNrZW5kX3Rvb2xiYXJzJ10gPSAnSW1wb3N0YXppb25pIGRlbCBwcm9maWxvIGxhdG8gYW1taW5pc3RyYXRvcmUnOwokbGFuZ1snZnJvbnRlbmRfdG9vbGJhcnMnXSA9ICdJbXBvc3RhemlvbmkgZGVsIHByb2ZpbG8gbGF0byB1dGVudGUnOwokbGFuZ1sncGx1Z2luc190YWInXSA9ICdQbHVnaW4nOwokbGFuZ1sncGx1Z2luc19oZWxwJ10gPSAnU2NlZ2xpZXRlIGkgcGx1Z2luIGNoZSB2b2xldGUgYXR0aXZhcmUuIExhIGRvY3VtZW50YXppb25lIHB1Jm9ncmF2ZTsgZXNzZXJlIHRyb3ZhdGEgPGEgaHJlZj0iJXMiIHRhcmdldD0iX2JsYW5rIj5xdWk8L2E+JzsKJGxhbmdbJ3BsdWdpbnNfdGV4dCddID0gJ1BsdWdpbic7CiRsYW5nWydzYXZlcGx1Z2lucyddID0gJ1NhbHZhIHBsdWdpbic7CiRsYW5nWydwbHVnaW5zc2F2ZWQnXSA9ICdQbHVnaW5zIHNhbHZhdGknOwokbGFuZ1sncGx1Z2luc19tb2R1bGUnXSA9ICdQbHVnaW4gZGVsIG1vZHVsbyc7CiRsYW5nWydwbHVnaW5zX2NvbW1vbiddID0gJ1BsdWdpbiBjb211bmknOwokbGFuZ1snbW9kdWxlJ10gPSAnTW9kdWxvJzsKJGxhbmdbJ2Rlc2NyaXB0aW9uJ10gPSAnRGVzY3JpemlvbmUnOwokbGFuZ1sncGx1Z2luJ10gPSAnUGx1Z2luICc7CiRsYW5nWyd5b3VhcmVpbnRleHQnXSA9ICdWb2kgc2lldGUgaW4nOwokbGFuZ1snbG9hZHN0eWxlc2hlZXR0ZXh0J10gPSAnQ2FyaWNhIGlsIGZvZ2xpbyBkaSBzdGlsZSBwZXIgaWwgY29udGVudXRvIChyYWNjb21hbmRhdG8pJzsKJGxhbmdbJ2V4dHJhc3R5bGVzdGV4dCddID0gJ0FnZ2l1bnRlIGFsIGZvZ2xpbyBkaSBzdGlsZSc7CiRsYW5nWydleHRyYXN0eWxlc2hlbHAnXSA9ICdTdGlsaSBDU1MgaW5zZXJpdGkgcXVpIHNhcmFubm8gYWdnaXVudGkgYWdsaSBTdGlsaSBDU1MgbGV0dGkgZGEgVGlueU1DRSBkb3BvIHF1ZWxsaSByaWNldnV0aSBkYSBDTVNtcyc7CiRsYW5nWyd1cGxvYWRuZXdmaWxlJ10gPSAnTnVvdm8gZmlsZSc7CiRsYW5nWyd1cGxvYWRmaWxlJ10gPSAnQ2FyaWNhJzsKJGxhbmdbJ2NyZWF0ZW5ld2RpciddID0gJ051b3ZhIGNhcnRlbGxhJzsKJGxhbmdbJ2NyZWF0ZWRpciddID0gJ0NyZWEnOwokbGFuZ1snbm9kaXJuYW1lJ10gPSAnTmVzc3VuIG5vbWUgZGkgY2FydGVsbGEgaW5zZXJpdG8nOwokbGFuZ1snZGlyZXhpc3RzJ10gPSAnSWwgbm9tZSBkZWxsYSBjYXJ0ZWxsYSBlc2lzdGUgZ2kmYWdyYXZlOyc7CiRsYW5nWyduZXdkaXJjcmVhdGVkJ10gPSAnTnVvdmEgY2FydGVsbGEgY3JlYXRhIGNvbiBzdWNjZXNzbyc7CiRsYW5nWyduZXdkaXJmYWlsZWQnXSA9ICdFJiMwMzk7IGF2dmVudXRvIHVuIGVycm9yZSBkdXJhbnRlIGxhIGNyZWF6aW9uZSBkZWxsYSBjYXJ0ZWxsYSc7CiRsYW5nWydub2ZpbGUnXSA9ICdOZXNzdW4gZmlsZSBjYXJpY2F0byc7CiRsYW5nWydmaWxldG9vYmlnJ10gPSAnSWwgZmlsZSBjYXJpY2F0byAmZWdyYXZlOyB0cm9wcG8gZ3JhbmRlJzsKJGxhbmdbJ2NvbnRhaW5zaWxsZWdhbGNoYXJzJ10gPSAnSWwgbm9tZSBkZWwgZmlsZSBjb250aWVuZSB1bm8gbyBwaSZ1Z3JhdmU7IGNhcmF0dGVyaSB2aWV0YXRpICgmIzAzOTssJnF1b3Q7LCssKixcLC8sJmFtcDssJCknOwokbGFuZ1sndXBsb2FkZmFpbGVkJ10gPSAnRXJyb3JlIG5lbGxvIHNwb3N0YW1lbnRvIGEgZGVzdGluYXppb25lIGRlbCBmaWxlIGNhcmljYXRvJzsKJGxhbmdbJ2ZpbGV1cGxvYWRlZCddID0gJ0ZpbGUgY2FyaWNhdG8gY29uIHN1Y2Nlc3NvJzsKJGxhbmdbJ25vdGFuaW1hZ2UnXSA9ICdJbCBmaWxlIGNhcmljYXRvIG5vbiAmZWdyYXZlOyB1biYjMDM5O2ltbWFnaW5lJzsKJGxhbmdbJ2ZpbGVwaWNrZXJ0aXRsZSddID0gJ1NlbGV6aW9uZSBGaWxlIENNU01hZGVTaW1wbGUnOwokbGFuZ1snc3VjY2VzcyddID0gJ1N1Y2Nlc3NvJzsKJGxhbmdbJ2ZpbGVvcGVyYXRpb25zJ10gPSAnT3BlcmF6aW9uaSBzdWkgRmlsZSc7CiRsYW5nWyd0aG91c2FuZGRlbGltaXRlciddID0gJywgJzsKJGxhbmdbJ3NpemUnXSA9ICdEaW1lbnNpb25lJzsKJGxhbmdbJ2RpbWVuc2lvbnMnXSA9ICdMYXJnaGV6emEgeCBBbHRlenphJzsKJGxhbmdbJ2FkdmFuY2VkX3RhYiddID0gJ0F2YW56YXRlJzsKJGxhbmdbJ2hlbHAnXSA9ICcJPGgzPldoYXQgZG9lcyB0aGlzIGRvPzwvaDM+DQoJPHA+RW5hYmxlcyBhIFRpbnlNQ0UgdG8gYmUgdXNlZCBhcyBhIFdZU0lXWUcuPC9wPg0KCTxoMz5Ib3cgZG8gSSB1c2UgaXQ/PC9oMz4NCgk8cD5JbnN0YWxsIGl0LCB0aGVuIGdvIHRvIFVzZXIgUHJlZmVyZW5jZXMgYW5kIFNldCBUaW55TUNFIHRvIGJlIHlvdXIgd3lzaXd5ZyBvZiBjaG9pY2UuPC9wPg0KICA8aDM+U3BlbGxjaGVja2VyPC9oMz4NCiAgPHA+QXMgb2YgdmVyc2lvbiAyLjYuMCwgVGlueU1DRSBpbmNsdWRlcyBhbiBvbmxpbmUgc3BlbGxjaGVja2VyLiBQbGVhc2Ugbm90aWNlIHRoYXQgU1NMIG11c3QgYmUgdHVybmVkIG9uIGluIHlvdXIgc2VydmVyLWNvbmZpZ3VyYXRpb24gaW4gb3JkZXIgZm9yIHRoaXMgdG8gd29yay4gT24gc29tZSBzZXR1cHMgdGhpcyBvcHRpb24gaXMgY2FsbGVkIHBocF9vcGVuc3NsIGJ1dCB0aGF0IG1heSB2YXJ5PC9wPg0KCTxoMz5Ucm91Ymxlc2hvb3Rpbmc8L2gzPg0KCVNvbWUgcGVvcGxlIGhhdmUgdHJvdWJsZSB3aXRoIHRpbnkgbm90IHNob3dpbmcgdXAgdXBvbiBpbnN0YWxsYXRpb24gb3IgdXBncmFkaW5nLiBIZXJlIGlzIGEgY2hlY2tsaXN0IG9mIA0KCXRoaW5ncyB5b3UgY2FuIHRyeSBiZWZvcmUgY29udGFjdGluZyBtZSBmb3IgZnVydGhlciBzdXBwb3J0Lg0KCTxici8+DQoJPHVsPg0KCTxsaT4xLiBQbGVhc2UsIHBsZWFzZSwgdHJ5IHRvIHJldXBsb2FkIHRoZSBtb2R1bGVzL1RpbnlNQ0UgZGlyIHRvIHlvdXIgc2VydmVyLiBZb3UmIzAzOTtkIGJlIGFtYXplZCBob3cgbWFueSB0aW1lcyB0aGlzIGhhcyBoZWxwZWQgcGVvcGxlLjwvbGk+CQ0KCTxsaT4yLiBJZiB1cGdyYWRpbmcsIHBsZWFzZSB0cnkgdG8gcmVzZXQgYWxsIHNldHRpbmdzLiBOb3QgbmljZSBpZiB5b3UmIzAzOTt2ZSBkb25lIGEgbG90IG9mIGN1c3RvbWl6YXRpb24sIEkga25vdywgYnV0IGEgbG90IG9mIHRoaW5ncyBjaGFuZ2VkIGZyb20gMi4zLnggdG8gMi40Lnggc2VyaWVzIG9mIHRoZSBtb2R1bGUuDQoJPGxpPjMuIFRyeSBlbmFibGluZyB0aGUgc3RhdGljIGNvbmZpZyBvcHRpb24gaW4gYWR2YW5jZWQgc2V0dGluZ3MuIFRoaXMgd29ya3MgYmV0dGVyIG9uIHNvbWUgc3lzdGVtcyAobGlrZSBDR0ktYmFzZWQpLCBOb3RlIHRoYXQgdGhpcyByZXF1aXJlcyB5b3VyIC90bXAvLWRpciB0byBiZSB3cml0YWJsZSBieSB0aGUgd2Vic2VydmVyDQoJPC91bD4NCgk8YnIvPg0KICA8aDM+UGx1Z2luIGRldmVsb3BtZW50PC9oMz4NCiAgQXMgb2YgdmVyc2lvbiAyLjcuMCB0aGUgVGlueU1DRS1tb2R1bGUgaGFzIHRoZSBhYmlsaXR5IHRvIGFsbG93IG90aGVyIG1vZHVsZXMgdG8gcmVnaXN0ZXIgZXh0ZW5zaW9ucyBmb3IgaXQuIENvdWxkIGJlIGEgY3VzdG9tIGljb24gYWxsb3dpbmcgeW91IHRvIGluc2VydA0KICBjb250ZW50IGZyb20gc29tZSBtb2R1bGUsIGxpa2UgR2FsbGVyeSBldGMuIEhvdyB0byBkbyB0aGlzIGlzIHByZXR0eSB0ZWNoIHN0dWZmLCBidXQgaWYgeW91IGFyZSBhIG1vZHVsZSBkZXZlbG9wZXIgYW5kIGludGVyZXN0ZWQgaW4gY2hlY2tpbmcgaXQgb3V0DQogIHBsZWFzZSBsb29rIGluIHRoZSBUaW55TUNFL2RvY3MtZGlyIGZvciBmdXJ0aGVyIGluc3RydWN0aW9ucy4nOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My4xMzA5Njg3NDQ3LjEzMjY3MTczMDEuMTMyNjcxNzMwMS4xMzI2NzE3MzAxLjEnOwokbGFuZ1sndXRteiddID0gJzE1Njg2MTM1My4xMzI2NzE3MzAxLjEuMS51dG1jY249KGRpcmVjdCl8dXRtY3NyPShkaXJlY3QpfHV0bWNtZD0obm9uZSknOwokbGFuZ1sncWNhJ10gPSAnUDAtMTIyMjkzNjYzNi0xMzIwMjI0MDI5NDE1JzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/iw_IL.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1RpbnlNQ0UgV1lTSVdZRyAnOwokbGFuZ1sndW5pbnN0YWxsZWQnXSA9ICfXlNee15XXk9eV15wg15TXldeh16guJzsKJGxhbmdbJ2luc3RhbGxlZCddID0gJ9ee15XXk9eV15wgJXMg15TXkteZ16jXodeUINeU157Xldeq16fXoNeqLic7CiRsYW5nWydzdHJpcGJhY2tncm91bmR0YWdzJ10gPSAn16jXpteV16LXqiDXqteS15nXldeqINeU16jXp9eiIENTUyc7CiRsYW5nWydzdGlwdGFnc19oZWxwJ10gPSAn15bXlCDXkNek16nXqNeV15nXldeqINee16DXodeUINec15TXodeZ16gg15DXqiDXlNeS15PXqNeV16og16HXldeSINeU16jXp9eiLCDXntefIHN0eWxlc2hlZXQuJzsKJGxhbmdbJ3NvdXJjZV9mb3JtYXR0aW5nX3RleHQnXSA9ICfXlNeX15wg15TXnten15XXqCDXoteZ16bXldeRINek15zXmCDXlC1IVE1MJzsKJGxhbmdbJ2Ryb3Bkb3duYmxvY2tmb3JtYXRzX3RleHQnXSA9ICdCbG9ja2Zvcm1hdHMg16LXnCDXlNeq16TXqNeZ15gg15TXoNek16rXlywnOwokbGFuZ1snYWxsb3d0YWJsZXMnXSA9ICfXkNek16nXqCDXpNei15XXnNeV16og15jXkdec15QnOwokbGFuZ1snbmV3bGluZXN0eWxlX3RleHQnXSA9ICdOZXdsaW5lLdeh15LXoNeV158nOwokbGFuZ1sncHN0eWxlJ10gPSAnPHA+Ldeh15LXoNeV158nOwokbGFuZ1snYnJzdHlsZSddID0gJzxici8+Ldeh15LXoNeV158nOwokbGFuZ1sndXNlY29tcHJlc3Npb250ZXh0J10gPSAn15TXqdeq157XqSDXk9eX15nXodeUIGd6JzsKJGxhbmdbJ3VzZWNvbXByZXNzaW9uaGVscCddID0gJ9eW15Qg15nXm9eV15wg15zXlteo15Yg15DXqiDXmNei15nXoNeqIFRpbnlNQ0UsINeQ15HXnCDXmdeb15XXnCDXktedINec157XoNeV16Ig16LXldee16Eg16LXnCDXntei16jXm9eV16og157XodeV15nXnteV16ouINeU16nXqtee16kg15HXlteU15nXqNeV16ouJzsKJGxhbmdbJ2ZvcmNlZHJvb3RibG9ja3RleHQnXSA9ICfXl9eZ15wgcm9vdGJsb2NrIDxwPic7CiRsYW5nWydmb3JjZWRyb290YmxvY2toZWxwJ10gPSAn15vXldeX15XXqiDXlNeq15XXm9efINeX15bXqCDXnNek15fXldeqINec15TXmdeV16og157Xlden16Mg16rXki08cD4nOwokbGFuZ1snZmlsZXBpY2tlcnN0eWxlJ10gPSAnRmlsZXBpY2tlciDXodeS16DXldefJzsKJGxhbmdbJ2ZpbGVwaWNrZXJzaXplJ10gPSAnRmlsZXBpY2tlciDXkteV15PXnCc7CiRsYW5nWydhbGxvd3VwbG9hZHRleHQnXSA9ICfXkNek16nXqCDXnNeU16LXnNeV16og15XXmdem15nXqNeqINeq15nXp9eZ15XXqiDXkSBGaWxlUGlja2VyJzsKJGxhbmdbJ2FsbG93c2NhbGluZ3RleHQnXSA9ICfXkNek16nXqCBvbi10aGUtZmx5INep15nXoNeV15kg15LXldeT15wg16nXnCDXqtee15XXoNeV16og16nXlNeV16LXnNeVJzsKJGxhbmdbJ3NjYWxpbmdkaW1lbnNpb25zdGV4dCddID0gJ9eR16jXmdeo16og15TXnteX15PXnCDXqdecINee15nXk9eV16onOwokbGFuZ1sncmVzaXpldG8nXSA9ICfXqdeZ16DXldeZINeS15XXk9ecINecOic7CiRsYW5nWydtYWtldGh1bWJuYWlsJ10gPSAn15HXpteiINeU16rXnteV16DXldeqINeR16LXqiDXlNei15zXkNeqINeq157Xldeg15XXqic7CiRsYW5nWyd1c2VhZHZhbmNlZHByb2ZpbGUnXSA9ICfXqdeZ157XldepINee16rXp9eT150gVGlueU1DRSDXpNeo15XXpNeZ15wnOwokbGFuZ1snc2F2ZXByb2ZpbGUnXSA9ICfXqdee15XXqCDXpNeo15XXpNeZ15wnOwokbGFuZ1sncHJvZmlsZXNhdmVkJ10gPSAn16TXqNeV16TXmdecINeg15nXptecJzsKJGxhbmdbJ3Byb2ZpbGVzX3RhYiddID0gJ9ek16jXldek15nXnNeZ150nOwokbGFuZ1snYWR2YW5jZWRfYmFja2VuZF90b29sYmFycyddID0gJ9ee16rXp9eT150gYmFja2VuZCDXlNeS15PXqNeV16og16TXqNeV16TXmdecJzsKJGxhbmdbJ3NhdmVzdHlsZXMnXSA9ICfXqdee15XXqCDXodeS16DXldeg15XXqic7CiRsYW5nWydhbGxvd2FkdmFuY2VkcHJvZmlsZSddID0gJ9ee15DXpNep16jXmdedINep15nXnteV16kg15HXpNeo15XXpNeZ15wg157Xqten15PXnteZ150gVGlueU1DRSc7CiRsYW5nWydzaG93ZmlsZW1hbmFnZW1lbnQnXSA9ICfXlNem15Ig15TXp9eV15HXpSDXkNek16nXqNeV15nXldeqINeg15nXlNeV15wnOwokbGFuZ1snc2hvd2ZpbGVtYW5hZ2VtZW50aGVscCddID0gJ9eU16bXkiDXlNen15XXkdelINeV16DXmdeU15XXnCDXqdecINeQ16TXqdeo15XXmdeV16og15vXnteVINec15jXoteV158sINec16LXqdeV16ogZGlyINeVINen15XXkdelINeU157Xl9eZ16fXlCDXqdecIEZpbGVQaWNrZXIsINeQ150g15TXntep16rXntepINeo16nXkNeZINec15HXpteiINek16LXldec15XXqiDXkNec15QuJzsKJGxhbmdbJ3Jlc3RyaWN0ZGlycyddID0gJ9eU15LXkdecINeS15nXqdeUINec16rXmden15nXldeqINee16nXqtee16nXmdedJzsKJGxhbmdbJ3Jlc3RyaWN0ZGlyc2hlbHAnXSA9ICfXlteUINeZ15LXkdeZ15wg15DXqiBmaWxlbWFuYWdlbWVudCDXlNeZ15vXldec15XXqiDXqdecINeU157Xqdeq157XqSBzdWJkaXIg15vXk9eZICLXp9eR16bXmdedIiwg15DXqdeoINeZ16kg16nXnSDXlteU15Qg15TXm9eg15nXodeUINep15wg15TXntep16rXntepLiDXkNedIHN1YmRpciDXnNeQINen15nXmdedLCDXlteUINeZ15TXmdeUINec15TXmdeV16og16nXoNeV16bXqC4g16nXmdedINec15EsINeW15Qg16LXldeR15Mg15vXqNeS16Ig16jXpyDXotedIGRpcm5hbWVzINeo15LXmdecLCDXp9eR16bXmdedIC8g16rXnteV16DXldeqLiDXlteUINei16nXldeZINec15TXqdeq16DXldeqINeR16LXqteZ15MnOwokbGFuZ1snZGVsZXRlY29uZmlybWF0aW9uJ10gPSAn15TXkNedINeQ16rXlCDXkdeY15XXlyDXm9eZINen15XXkdelINeW15Qg16bXqNeZ15og15zXlNeZ15XXqiDXoNee15fXpz8nOwokbGFuZ1snZGVsZXRlZmlsZXN1Y2Nlc3MnXSA9ICfXoNee15fXpyDXkdeU16bXnNeX15QnOwokbGFuZ1snZGVsZXRlZmlsZWZhaWxlZCddID0gJ9ec15Ag15nXm9eV15wg15zXlNeZ15XXqiDXqdeg157Xl9en15UnOwokbGFuZ1snZGVsZXRlc3ViZGlyZmFpbGVkJ10gPSAn15zXkCDXmdeb15XXnCDXnNeU15nXldeqINep16DXnteX16fXlSc7CiRsYW5nWydkZWxldGVzdWJkaXJzdWNjZXNzJ10gPSAn16DXnteX16cg15HXlNem15zXl9eUJzsKJGxhbmdbJ2RlbGV0ZWRpcmNvbmZpcm1hdGlvbiddID0gJ9eQ16rXlCDXkdeY15XXlyDXqdeW15Qgc3ViZGlyINeo15nXpyDXpteo15nXmiDXnNeU15nXnteX16c/JzsKJGxhbmdbJ2RlbGV0ZWRpciddID0gJ9ee15fXpyDXqNeZ16cgc3ViZGlyICc7CiRsYW5nWydkZWxldGVmaWxlJ10gPSAn157Xl9eZ16fXqiDXp9eV15HXpSc7CiRsYW5nWydjYW5ub3RyZWFkY29uZmlnJ10gPSAn15DXmdefINeQ16TXqdeo15XXqiDXnNen16jXldeQINeQ16og15TXp9eV15HXpSDXmdep15nXqNeV16ogdGlueWNvbmZpZy5waHAg15vXmiBUaW55TUNFINeb16DXqNeQ15Qg15zXkCDXoteV15HXky4g15DXqteUINem16jXmdeaINec15HXk9eV16cg15DXqiDXlNeU16jXqdeQ15XXqiDXqdecINeU16fXldeR16Ug16nXnCBkaXJzINeU15XXqNeULCDXqdeQ157XldeoINec15TXmdeV16og16fXqNeZ15Ag16LXkdeV16gg15vXldec150sINeQ15HXnCDXnNeb16rXmdeR15Qg16jXpyDXoteR15XXqCDXlNeR16LXnNeZ150uJzsKJGxhbmdbJ2ZpbGVuYW1lb25seSddID0gJ9eU16bXkiDXp9eR16bXmdedJzsKJGxhbmdbJ3RodW1ibmFpbHNvbmx5J10gPSAn15TXpteSINeq157Xldeg15XXqiDXntee15XXltei16jXldeqJzsKJGxhbmdbJ3Nob3d0aHVtYm5haWxmaWxlc3RleHQnXSA9ICfXlNem15Ig15DXqiDXlNeq157Xldeg15XXqiwg16fXkdem15kg15vXnteVINen15HXpteZ150g16jXkteZ15zXmdedJzsKJGxhbmdbJ2ZpbGVuYW1lYW5kdGh1bWJuYWlscyddID0gJ9eU16bXkiDXqdeg15kg16fXkdem15nXnSDXldeq157Xldeg15XXqiDXntee15XXltei16jXldeqJzsKJGxhbmdbJ3NraW5zdGV4dCddID0gJ9ei15XXqCc7CiRsYW5nWydza2ludmFyaWF0aW9udGV4dCddID0gJ9ei15XXqCDXqdeV16DXldeqJzsKJGxhbmdbJ2FkdmFuY2Vkd2FybmluZyddID0gJzxzdHJvbmc+INep15nXnSDXnNeRISA8YnIvPiDXqdeZ16DXldeZINeU15LXk9eo15XXqiDXkNec15Qg15nXm9eV15zXmdedINec15LXqNeV150gVGlueU1DRSDXnNeU16TXodeZ16cg15zXoteR15XXkyDXkNeVINeQ16og15TXp9eV15Mg15zXmNei15XXqiDXkdeT16jXmiDXm9ec16nXlNeZLiDXqNenINec16LXqNeV15og15DXqiDXlteUINeQ150g15DXqteUINeZ15XXk9eiINee15Qg15DXqteUINei15XXqdeUISDXoNeQINec16LXmdeZ158g15HXkNeq16ggVGlueU1DRSDXnNek16DXmSDXntep15fXpyDXotedINeW15QuIDwvc3Ryb25nPic7CiRsYW5nWydlbnRpdHllbmNvZGluZ190ZXh0J10gPSAn16fXmdeT15XXkyDXqdecINeS15XXpNeZ150nOwokbGFuZ1sncmF3ZW5jb2RpbmcnXSA9ICfXp9eZ15PXldeTINeS15zXnSAo15TXnteU15nXqNeUINeR15nXldeq16gsINei15XXkdeTINeR16jXldeRINeU157Xp9eo15nXnSknOwokbGFuZ1snbmFtZWRlbmNvZGluZyddID0gJ9eR16nXnSDXp9eZ15PXldeTIChsaWtlICZuYnNwOyknOwokbGFuZ1snbnVtZXJpY2VuY29kaW5nJ10gPSAn157Xodek16jXmdeZ150g16fXmdeT15XXkyAobGlrZSDCoCknOwokbGFuZ1snc2hvd19wYXRoX3RleHQnXSA9ICfXlNem15Ig15DXqiDXlNeg16rXmdeRINep15wg15DXnNee16DXmCDXkdeq15fXqteZ16og15TXoteV16jXmic7CiRsYW5nWyd0b29sYmFyX3RhYiddID0gJ9eh16jXktecINeU15vXnNeZ150nOwokbGFuZ1sndG9vbGJhcl9oZWxwJ10gPSAn15DXpNep16jXldeZ15XXqiDXkNec15Ug15nXm9eZ15zXlSDXpNeh15nXpyDXqNep15nXnteUINee15XXpNeo15PXqiDXotecINeb16TXqteV16ggLyDXqdec15nXmNeqINep157XldeqINec15TXm9eg15nXoSDXnNeq15XXmiDXodeo15LXnCDXlNeb15zXmdedLiB8IENoYXIg16DXmdeq158g15zXlNep16rXntepINeR157Xp9eV150g15TXnteZ15zXlCDXntek16jXmdeTICInOwokbGFuZ1sndG9vbGJhcl90ZXh0J10gPSAn16HXqNeS15wg15TXm9ec15nXnSc7CiRsYW5nWyd0b29sYmFyaGVscHRleHQnXSA9ICfXnNeX16Ug15vXkNefINeb15PXmSDXnNeU16bXmdeSINeQ16og16HXqNeS15wg15TXm9ec15nXnSDXkS3XlNeV16jXkNeV16ogVGlueU1DRS13aWtpLic7CiRsYW5nWydlZGl0b3Jfd2lkdGhfdGV4dCddID0gJ9eo15XXl9eRINep15wg16LXldeo15og16nXk9eUJzsKJGxhbmdbJ2VkaXRvcl9oZWlnaHRfdGV4dCddID0gJ9eS15XXkdeUINep15wg16LXldeo15og16nXk9eUJzsKJGxhbmdbJ2F1dG8nXSA9ICfXkNeV15jXldee15jXmSc7CiRsYW5nWydvciddID0gJ9eQ15UnOwokbGFuZ1snYWxsb3dyZXNpemluZyddID0gJ9eQ16TXqdeoIGlucGxhY2Ug15LXldeT15wg16nXnCDXoteV16jXmiDXqdeT15QnOwokbGFuZ1sncmVzaXplbm9uZSddID0gJ9eQ15wg16rXkNek16nXqCDXqdeZ16DXldeZINeS15XXk9ecJzsKJGxhbmdbJ3Jlc2l6ZWJvdGgnXSA9ICfXkNek16nXqCDXkteV15PXnCDXkdep16DXmSDXlNeb15nXldeV16DXmdedJzsKJGxhbmdbJ3Jlc2l6ZWhlaWdodCddID0gJ9eQ16TXqdeoINep15nXoNeV15kg15LXldeT15wg16nXnCDXkteV15HXlCDXkdec15HXkyc7CiRsYW5nWydkYXRldGltZWZvcm1hdF90ZXh0J10gPSAn16rXkNeo15nXmiAvINeW157XnyDXnNei16bXkSc7CiRsYW5nWyd0aW1ldGV4dCddID0gJ9eW157Xnyc7CiRsYW5nWydkYXRldGV4dCddID0gJ9eq15DXqNeZ15onOwokbGFuZ1snZGF0ZXRpbWVmb3JtYXRfaGVscCddID0gJ9ec15fXpSDXm9eQ158g15zXoteW16jXlCDXotecINeq15HXoNeZ16og15DXmdeaINeU16rXkNeo15nXmiAvINep16LXlCc7CiRsYW5nWydleHRyYWNvbmZpZ3RleHQnXSA9ICfXqteV16HXpNeqINeq16bXldeo15QnOwokbGFuZ1snZXh0cmFjb25maWdoZWxwMiddID0gJ9ee16nXpNeYINeQ15fXkyDXkdeb15wg16nXldeo15QsINek16HXmden15nXnSDXmdeq15XXldeh16TXlSDXnNek16DXmSDXldeQ15fXqNeZINeq15XXm9efINeW15QuINeR15PXldenIFRpbnlNQ0Utd2lraSDXoteR15XXqCDXlNeU15XXqNeQ15XXqi4nOwokbGFuZ1snY3VzdG9tZHJvcGRvd250ZXh0J10gPSAn15DXmdep15nXqiDXlNeg16TXqteXJzsKJGxhbmdbJ2N1c3RvbWRyb3Bkb3duaGVscCddID0gJ9eU15XXodek16og16fXmNei15kg15zXlNeq15DXnteUINeQ15nXqdeZ16og16nXnCDXlNen15XXkyAvINeY16fXodeYINei15wg15nXk9eZINeR15fXmdeo15Qg157XqteV15og15TXqtek16jXmdeYINeU16DXpNeq15cuCtee16nXqtee16kg157XkNec15nXlSDXlNedINeS15nXqdeUINeg15XXl9eUINep15wg16rXkiDXldeb15Ug15TXqtek16jXmdeYINee15XXm9eg16Eg15zXqteV15og16HXqNeS15wg15TXm9ec15nXnSDXkdeQ157Xptei15XXqiAiY3VzdG9tZHJvcGRvd24iLic7CiRsYW5nWydzdGFydGVuYWJsZWR0ZXh0J10gPSAn15TXlNek16LXnNeUINee15XXpNei15wnOwokbGFuZ1snc3RhcnRlbmFibGVkaGVscCddID0gJ9eR15nXmNeV15wg15TXodeZ157XldefINeU15bXlCDXnteq15fXmdecINeW16LXmdeo15nXnSwg16LXldeo15vXmSDXkdee16bXkSDXnNeQINeW157XmdefLiDXmdepINec15TXqdeq157XqSDXmdeX15Mg16LXnSDXm9ek16rXldeoINec16LXkdeV16guJzsKJGxhbmdbJ2xvYWRjbXNsaW5rZXJ0ZXh0J10gPSAn15jXotefINeV15TXnten16nXqC1DTVMnOwokbGFuZ1snbG9hZGNtc2xpbmtlcmhlbHAnXSA9ICfXlteUINeZ15XXpteoINeULUphdmFTY3JpcHQg15TXp9eV15Mg15TXk9eo15XXqSDXm9eT15kg15zXkNek16nXqCAiY21zbGlua2VyIFwn15vXk9eZINec15TXldeh15nXoyDXnNeh16jXktecINeU15vXnNeZ150uJzsKJGxhbmdbJ2Ntc2xpbmtlcnN0eWxldGV4dCddID0gJ0NNUy1saW5rZXIgbGluay3XodeS16DXldefJzsKJGxhbmdbJ2Ntc3NlbGZsaW5rc3R5bGUnXSA9ICd7Y21zX3NlbGZsaW5rfS3XodeS16DXldefJzsKJGxhbmdbJ2FocmVmc3R5bGUnXSA9ICc8YSBocmVmPi3XodeS16DXldefJzsKJGxhbmdbJ3JlbGF0aXZldXJsc3RleHQnXSA9ICfXkNeq16gg15nXl9eh15nXqiDXpteV16gnOwokbGFuZ1snZm9yY2VjbGVhbnBhc3RldGV4dCddID0gJ9eX15nXnCDXoNen15kg16LXnCDXlNeT15HXpyc7CiRsYW5nWydmb3JjZWNsZWFucGFzdGVoZWxwJ10gPSAn15bXlCDXpteo15nXmiDXnNeU15nXldeqINee15XXpNei15wg15vXk9eZINec15TXodeZ16gg15DXqiDXp9eV15PXmSDXoteZ16bXldeRINee15XXlteoINeb15DXqdeoINeU15TXk9eR16fXlCDXni13b3JkINeV15vXlSBcJyc7CiRsYW5nWydib2R5Y3NzX3RleHQnXSA9ICdCb2R5INeq15IgQ1NTJzsKJGxhbmdbJ2JvZHljc3NfaGVscCddID0gJ9eq16rXldeV16HXoyDXlNeS15PXqNeqIENTUyDXlNeS15XXoy4g16jXnteWOiDXqNen16Ig16bXkdei15nXnSDXoNeZ16rXnyDXnNeU15LXk9eZ16gg15zXkdefINeR15DXntem16LXldeqImJhY2tncm91bmQtY29sb3I6IHdoaXRlIic7CiRsYW5nWydpbmNsdWRlb25seXNjcmVlbmNzc190ZXh0J10gPSAn15vXnNeV15wg15DXqiDXlNee16HXmiDXqNenIENTUyc7CiRsYW5nWydpbmNsdWRlb25seXNjcmVlbmNzc19oZWxwJ10gPSAn15HXl9eZ16jXlCDXlteVINee15DXpNep16jXqiDXkteZ15zXmdeV16DXldeq16HXkteg15XXnyDXlNee16bXldeo16TXqiDXqNenINei150gbWVkaWF0eXBlINeU157XodeaLCDXqdeg15HXl9eo15Ug15zXlNeZ15vXnNecINeh15LXoNeV16DXldeqIFRpbnlNQ0Ug157XmNek15wuJzsKJGxhbmdbJ3VzZXN0YXRpY2NvbmZpZ3RleHQnXSA9ICfXlNep16rXntepINeU16fXldeR16UgY29uZmlnINeh15jXmNeZJzsKJGxhbmdbJ3VzZXN0YXRpY2NvbmZpZ2hlbHAnXSA9ICfXlteUINeZ15vXldecINec16LXlteV16gg15zXlNeS15nXoiDXltei15nXqNeZ150g15zXoteR15XXkyDXkdee16LXqNeb15XXqiDXqdeR15TXnyDXnteq16fXnyDXkNeZ16jXldeXINee15XXodeZ16Mg15PXkdeo15nXnSDXm9ee15Ug16HXmNeY15nXodeY15nXp9eV16og15XXm9eVINek15zXmCDXm9ecLCDXqdeR15nXqNeqIEphdmFTY3JpcHQg16DXldem16gg15HXkNeV16TXnyDXk9eZ16DXnteZINen15XXkdelINeq16bXldeo15QnOwokbGFuZ1sndXNlc3RhdGljY29uZmlnd2FybmluZyddID0gJ9eQ15bXlNeo15QhINeZ16kg15zXmiDXkNeqINeU15DXpNep16jXldeqINeh15jXmNeZINeU16fXldeR16UgY29uZmlnINee15XXpNei15zXqiDXkNeaIHRtcCAvINep15zXmiAvIGRpciDXkNeZ16DXlSDXoNeZ16rXnyDXnNeb16rXmdeR15QuINeW15Qg15nXnteg16Ig15DXqiDXlNee15XXk9eV15wg157XqteV15og16nXnteZ16jXqiDXlNen15XXkdelINeh15jXmNeZLWNvbmZpZyDXldeZ15TXmdeUINeb15vXnCDXlNeg16jXkNeUINec15HXnNeq15kgVGlueU1DRSBpbm9wZXJhdGlvbmFsLic7CiRsYW5nWydpZ25vcmVtb2RpZnlmaWxlc3RleHQnXSA9ICfXlNeq16LXnNedICLXkNeZ16nXldeoINep15nXoNeV15kiINen15HXpteZ150g16LXkdeV16ggRmlsZVBpY2tlcic7CiRsYW5nWydpZ25vcmVtb2RpZnlmaWxlc2hlbHAnXSA9ICfXkNeW15TXqNeUISDXlteUINee15DXpNep16gg15vXnteUINen15HXpteZ150g15zXqdeg15XXqiDXpNei15XXnNeV16og15LXnSDXkNedICLXkNeZ16nXldeoINep15nXoNeV15kiINen15HXpteZ150g15zXkCDXnteV15LXk9eo16og16LXkdeV16gg16fXkdeV16bXqiDXlNee16nXqtee16nXmdedINeU16DXldeb15fXmS4g15bXlCDXmdeb15XXnCDXnNep157XqSDXkdeZ16LXmdec15XXqiDXmdeX15Mg16LXnSDXkNek16nXqNeV16og15zXlNeS15HXmdecINeQ16og15TXkteZ16nXlCDXqdecINeU157Xk9eo15nXmiDXnNee16nXqtee16kuJzsKJGxhbmdbJ3Nob3d0b2dnbGVidXR0b25fdGV4dCddID0gJ9eq15nXkdeqINeU16HXmdee15XXnyDXlNem15Ig15zXlNek15XXmiBXWVNJV1lHIG9uIC8gb2ZmJzsKJGxhbmdbJ3RvZ2dsZXd5c2l3eWcnXSA9ICfXlNek16LXnCBXWVNJV1lHIG9uIC8gb2ZmJzsKJGxhbmdbJ3N0eWxlc190YWInXSA9ICdDU1Mg16HXkteg15XXoNeV16onOwokbGFuZ1snc3R5bGVzX2hlbHAnXSA9ICcgIElmIHlvdSBsZWF2ZSB0aGUgZmllbGQgZW1wdHksIFRpbnlNQ0Ugd2lsbCBwYXJzZSB5b3VyIENTUyBmaWxlIGFuZCBsaXN0IHRoZSBjbGFzcyBzdHlsZXMgY29udGFpbmVkIGluIGl0IHRvIHRoZSB1c2VyLiAKICBJZiB5b3Ugd2FudCBvbmx5IHNvbWUgc3R5bGVzIHByZXNlbnRlZCB0byB0aGUgdXNlciwgc3BlY2lmeSB0aGVtIGluIHRoZSBmb3JtICJDdXN0b21OYW1lMT1zdHlsZTE7IEN1c3RvbU5hbWUyPXN0eWxlMiIsIAogICJzdHlsZTEiIGJlaW5nIGEgY2xhc3MgY2FsbCBpbiB5b3VyIHN0eWxlc2hlZXQgYW5kIHlvdSBkb25cJ3QgcHV0IHRoZSAuIAogIG5vcm1hbGx5IHVzZWQgZm9yIGNsYXNzIGNhbGxzIGFzIGl0IGlzIGFscmVhZHkgaW4geW91ciBDU1MsIGl0IHdpbGwgbG9vayBsaWtlIHRoaXMgPHNwYW4gY2xhc3M9InN0eWxlMSI+dGV4dDwvc3Bhbj4sIAogIGluIHRoZSBmaXJzdCBmaWVsZCBiZWxvdy4gCic7CiRsYW5nWydjc3Nfc3R5bGVzX3RleHQnXSA9ICfXodeS16DXldeg15XXqic7CiRsYW5nWydhY2Nlc3NkZW5pZWQnXSA9ICfXlNeS15nXqdeUINeg15PXl9eq15QuINeQ16DXkCDXkdeT15XXpyDXkNeqINeU15TXqNep15DXldeqINep15zXmi4nOwokbGFuZ1snZXJyb3InXSA9ICfXqdeS15nXkNeUISc7CiRsYW5nWydzdWJtaXQnXSA9ICfXqdec15cnOwokbGFuZ1sndXBkYXRlJ10gPSAn15zXoteT15vXnyc7CiRsYW5nWydzYXZlc2V0dGluZ3MnXSA9ICfXqdee15XXqCDXlNeS15PXqNeV16onOwokbGFuZ1snc2V0dGluZ3MnXSA9ICfXlNeS15PXqNeV16onOwokbGFuZ1snc2V0dGluZ3NzYXZlZCddID0gJ9eU15LXk9eo15XXqiDXoNep157XqNeVJzsKJGxhbmdbJ3NhdmVhZHZhbmNlZCddID0gJ9ep157XldeoINeU15LXk9eo15XXqiDXnteq16fXk9ee15XXqic7CiRsYW5nWydhZHZhbmNlZHNhdmVkJ10gPSAn15TXkteT16jXldeqINee16rXp9eT157XldeqINeg16nXnteo15UnOwokbGFuZ1sndG9vbGJhcnNhdmVkJ10gPSAn16HXqNeS15wg15TXm9ec15nXnSDXoNep157XqCc7CiRsYW5nWydzdHlsZXNzYXZlZCddID0gJ9eh15LXoNeV16DXldeqINeg16nXnteo15UnOwokbGFuZ1sndGVzdGFyZWF0ZXh0J10gPSAn15DXlteV16ggPHA+INee15HXl9efLCDXlNeq15XXm9efINec15Ag15nXmdek15LXoteVINec16nXl9enINei150g15bXlCAuLi48L3A+JzsKJGxhbmdbJ3Jlc2V0J10gPSAn15DXmdek15XXoSDXkdeo15nXqNeV16og157Xl9eT15wnOwokbGFuZ1sncmVzZXRhbGwnXSA9ICfXkNek16Eg15DXqiDXm9ecINeU15LXk9eo15XXqiDXkdeo15nXqNeqINeU157Xl9eT15wnOwokbGFuZ1snY29uZmlybXJlc2V0J10gPSAn15TXkNedINeQ16rXlCDXkdeY15XXlyDXqdeQ16rXlCDXqNeV16bXlCDXnNeQ16TXoSDXkNeqINeU15TXkteT16jXldeqINeU15DXnNeUINeU157Xl9eT15wg16nXnNeU150/JzsKJGxhbmdbJ2NvbmZpcm1yZXNldGFsbCddID0gJ9eU15DXnSDXkNeq15Qg15HXmNeV15cg16nXkNeq15Qg16jXldem15Qg15zXkNek16Eg15DXqiDXm9ecINeU15LXk9eo15XXqiDXkdeo15nXqNeqINeU157Xl9eT15wg16nXnNeU150/JzsKJGxhbmdbJ3NldHRpbmdzcmVzZXQnXSA9ICfXlNeS15PXqNeV16og15DXnNeUINeU15nXlCDXnNeQ16TXoSDXkNeqINeR16jXmdeo16og15TXnteX15PXnCc7CiRsYW5nWydhbGxzZXR0aW5nc3Jlc2V0J10gPSAn15vXnCDXlNeU15LXk9eo15XXqiDXlNeZ15Ug15zXkNek16Eg15DXqiDXkdeo15nXqNeqINeU157Xl9eT15wnOwokbGFuZ1sndXBncmFkZWQnXSA9ICfXqdeV15PXqNeSINec15LXqNeh15QgJXMnOwokbGFuZ1snY3VzdG9tZHJvcGRvd24nXSA9ICfXkNeZ16nXmdeqLCDXlNeq16TXqNeZ15gg15TXoNek16rXlyc7CiRsYW5nWydjbXNtc2xpbmtlciddID0gJ9eU15XXodek16og16fXmdep15XXqCBjbXNtcyDXotee15XXk9eZ150nOwokbGFuZ1snYmFja2VuZF90b29sYmFycyddID0gJ0JhY2tlbmQg15TXkteT16jXldeqINek16jXldek15nXnCc7CiRsYW5nWydmcm9udGVuZF90b29sYmFycyddID0gJ9eU16fXk9ee15kg16nXnCDXlNeS15PXqNeV16og16TXqNeV16TXmdecJzsKJGxhbmdbJ3BsdWdpbnNfdGFiJ10gPSAn16TXnNeS15nXoNeZ150nOwokbGFuZ1sncGx1Z2luc19oZWxwJ10gPSAn15HXl9eoIHBsdWdpbnMg16nXkdeo16bXldeg15og15zXlNek16LXmdecLiDXqteZ16LXldeTINeg15nXqtefINec157XpteV15AgPGEgaHJlZj0iJXMiIHRhcmdldD0iX2JsYW5rIj5oZXJlPC9hPic7CiRsYW5nWydwbHVnaW5zX3RleHQnXSA9ICfXpNec15LXmdeg15nXnSc7CiRsYW5nWydzYXZlcGx1Z2lucyddID0gJ9ep157XldeoINek15zXkteZ16DXmdedJzsKJGxhbmdbJ3BsdWdpbnNfbW9kdWxlJ10gPSAn157XldeT15XXnCDXqteV16HXpNeZ150nOwokbGFuZ1sncGx1Z2luc19jb21tb24nXSA9ICdDb21tb24g16rXldeh16TXmdedJzsKJGxhbmdbJ21vZHVsZSddID0gJ9ee15XXk9eV15wnOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICfXqteQ15XXqCc7CiRsYW5nWydwbHVnaW4nXSA9ICfXpNec15LXmdefJzsKJGxhbmdbJ3lvdWFyZWludGV4dCddID0gJ9eQ16rXlCDXoNee16bXkCDXkSc7CiRsYW5nWydsb2Fkc3R5bGVzaGVldHRleHQnXSA9ICdzdHlsZXNoZWV0INeY16LXnyDXnNeq15XXm9efICjXnteV157XnNelKSc7CiRsYW5nWydleHRyYXN0eWxlc3RleHQnXSA9ICfXqteV16HXpNeV16ogc3R5bGVzaGVldCc7CiRsYW5nWydleHRyYXN0eWxlc2hlbHAnXSA9ICdDU1Mg16DXm9eg16Eg15vXkNefINeZ16rXldeV16HXpNeVIHN0eWxlc2hlZXQg16DXm9eq15Eg16LXnCDXmdeT15kgVGlueU1DRSDXnNeQ15fXqCDXp9eR15zXqiDXodeS16DXldeg15XXqiBDTVNtcyc7CiRsYW5nWyd1cGxvYWRuZXdmaWxlJ10gPSAn16fXldeR16Ug15fXk9epJzsKJGxhbmdbJ3VwbG9hZGZpbGUnXSA9ICfXlNei15zXkNeUJzsKJGxhbmdbJ2NyZWF0ZW5ld2RpciddID0gJ9eq15nXp9eZ15Qg15fXk9ep15QnOwokbGFuZ1snY3JlYXRlZGlyJ10gPSAn16bXldeoJzsKJGxhbmdbJ25vZGlybmFtZSddID0gJ9eQ15nXnyDXqdedINeU16rXmden15nXmdeUJzsKJGxhbmdbJ2RpcmV4aXN0cyddID0gJ2ZvbGRlciBuYW1lIGFscmVhZHkgZXhpc3RzJzsKJGxhbmdbJ25ld2RpcmNyZWF0ZWQnXSA9ICdOZXcgZm9sZGVyIHN1Y2Nlc3NmdWxseSBjcmVhdGVkJzsKJGxhbmdbJ25ld2RpcmZhaWxlZCddID0gJ0FuIGVycm9yIG9jY3VyZWQgdHJ5aW5nIHRvIGNyZWF0ZSBmb2xkZXInOwokbGFuZ1snbm9maWxlJ10gPSAn15TXp9eV15HXpSDXnNeQINeg15jXotefJzsKJGxhbmdbJ2ZpbGV0b29iaWcnXSA9ICfXlNen15XXkdelINep15TXldei15zXlCDXlNeV15Ag15LXk9eV15wg157Xk9eZJzsKJGxhbmdbJ2NvbnRhaW5zaWxsZWdhbGNoYXJzJ10gPSAn15TXp9eV15HXpSDXnteb15nXnCDXkNeX15Mg15DXlSDXmdeV16rXqCDXqteV15XXmdedINec15Ag15fXlden15nXmdedIChcJywiLCssKiwgXFwgLC8sJiwkKSc7CiRsYW5nWyd1cGxvYWRmYWlsZWQnXSA9ICfXqdeS15nXkNeUINeg16Ig15TXp9eV15HXpSDXoNeY16LXnyDXnNeq15XXmiDXlNee16fXldedJzsKJGxhbmdbJ2ZpbGV1cGxvYWRlZCddID0gJ9en15XXkdelINeg15jXotefINeR15TXptec15fXlCc7CiRsYW5nWydmaWxlcGlja2VydGl0bGUnXSA9ICdDTVNNYWRlU2ltcGxlINeR15fXmdeo16og16fXldeR16UnOwokbGFuZ1snc3VjY2VzcyddID0gJ9eU16bXnNeX15QnOwokbGFuZ1snZmlsZW9wZXJhdGlvbnMnXSA9ICfXp9eV15HXpSDXlNek16LXmdec15XXqic7CiRsYW5nWyd0aG91c2FuZGRlbGltaXRlciddID0gJywgJzsKJGxhbmdbJ3NpemUnXSA9ICfXkteV15PXnCc7CiRsYW5nWydkaW1lbnNpb25zJ10gPSAn16h415InOwokbGFuZ1snYWR2YW5jZWRfdGFiJ10gPSAn157Xqten15PXnSc7CiRsYW5nWydoZWxwJ10gPSAnCTxoMz5XaGF0IGRvZXMgdGhpcyBkbz88L2gzPgoJPHA+RW5hYmxlcyBhIFRpbnlNQ0UgdG8gYmUgdXNlZCBhcyBhIFdZU0lXWUcuPC9wPgoJPGgzPkhvdyBkbyBJIHVzZSBpdD88L2gzPgoJPHA+SW5zdGFsbCBpdCwgdGhlbiBnbyB0byBVc2VyIFByZWZlcmVuY2VzIGFuZCBTZXQgVGlueU1DRSB0byBiZSB5b3VyIHd5c2l3eWcgb2YgY2hvaWNlLjwvcD4KICA8aDM+U3BlbGxjaGVja2VyPC9oMz4KICA8cD5BcyBvZiB2ZXJzaW9uIDIuNi4wLCBUaW55TUNFIGluY2x1ZGVzIGFuIG9ubGluZSBzcGVsbGNoZWNrZXIuIFBsZWFzZSBub3RpY2UgdGhhdCBTU0wgbXVzdCBiZSB0dXJuZWQgb24gaW4geW91ciBzZXJ2ZXItY29uZmlndXJhdGlvbiBpbiBvcmRlciBmb3IgdGhpcyB0byB3b3JrLiBPbiBzb21lIHNldHVwcyB0aGlzIG9wdGlvbiBpcyBjYWxsZWQgcGhwX29wZW5zc2wgYnV0IHRoYXQgbWF5IHZhcnk8L3A+Cgk8aDM+VHJvdWJsZXNob290aW5nPC9oMz4KCVNvbWUgcGVvcGxlIGhhdmUgdHJvdWJsZSB3aXRoIHRpbnkgbm90IHNob3dpbmcgdXAgdXBvbiBpbnN0YWxsYXRpb24gb3IgdXBncmFkaW5nLiBIZXJlIGlzIGEgY2hlY2tsaXN0IG9mIAoJdGhpbmdzIHlvdSBjYW4gdHJ5IGJlZm9yZSBjb250YWN0aW5nIG1lIGZvciBmdXJ0aGVyIHN1cHBvcnQuCgk8YnIvPgoJPHVsPgoJPGxpPjEuIFBsZWFzZSwgcGxlYXNlLCB0cnkgdG8gcmV1cGxvYWQgdGhlIG1vZHVsZXMvVGlueU1DRSBkaXIgdG8geW91ciBzZXJ2ZXIuIFlvdVwnZCBiZSBhbWF6ZWQgaG93IG1hbnkgdGltZXMgdGhpcyBoYXMgaGVscGVkIHBlb3BsZS48L2xpPgkKCTxsaT4yLiBJZiB1cGdyYWRpbmcsIHBsZWFzZSB0cnkgdG8gcmVzZXQgYWxsIHNldHRpbmdzLiBOb3QgbmljZSBpZiB5b3VcJ3ZlIGRvbmUgYSBsb3Qgb2YgY3VzdG9taXphdGlvbiwgSSBrbm93LCBidXQgYSBsb3Qgb2YgdGhpbmdzIGNoYW5nZWQgZnJvbSAyLjMueCB0byAyLjQueCBzZXJpZXMgb2YgdGhlIG1vZHVsZS4KCTxsaT4zLiBUcnkgZW5hYmxpbmcgdGhlIHN0YXRpYyBjb25maWcgb3B0aW9uIGluIGFkdmFuY2VkIHNldHRpbmdzLiBUaGlzIHdvcmtzIGJldHRlciBvbiBzb21lIHN5c3RlbXMgKGxpa2UgQ0dJLWJhc2VkKSwgTm90ZSB0aGF0IHRoaXMgcmVxdWlyZXMgeW91ciAvdG1wLy1kaXIgdG8gYmUgd3JpdGFibGUgYnkgdGhlIHdlYnNlcnZlcgoJPC91bD4KCTxici8+CiAgPGgzPlBsdWdpbiBkZXZlbG9wbWVudDwvaDM+CiAgQXMgb2YgdmVyc2lvbiAyLjcuMCB0aGUgVGlueU1DRS1tb2R1bGUgaGFzIHRoZSBhYmlsaXR5IHRvIGFsbG93IG90aGVyIG1vZHVsZXMgdG8gcmVnaXN0ZXIgZXh0ZW5zaW9ucyBmb3IgaXQuIENvdWxkIGJlIGEgY3VzdG9tIGljb24gYWxsb3dpbmcgeW91IHRvIGluc2VydAogIGNvbnRlbnQgZnJvbSBzb21lIG1vZHVsZSwgbGlrZSBHYWxsZXJ5IGV0Yy4gSG93IHRvIGRvIHRoaXMgaXMgcHJldHR5IHRlY2ggc3R1ZmYsIGJ1dCBpZiB5b3UgYXJlIGEgbW9kdWxlIGRldmVsb3BlciBhbmQgaW50ZXJlc3RlZCBpbiBjaGVja2luZyBpdCBvdXQKICBwbGVhc2UgbG9vayBpbiB0aGUgVGlueU1DRS9kb2NzLWRpciBmb3IgZnVydGhlciBpbnN0cnVjdGlvbnMuCgkJCic7CiRsYW5nWydxY2EnXSA9ICdQMC0xMDQ1Njk4Mjk2LTEyNTQ5ODQyMTU4MDInOwokbGFuZ1sndXRteiddID0gJzE1Njg2MTM1My4xMjcyODA2MTQ5LjEzLjYudXRtY3NyPTR4NmhwLm5ldHx1dG1jY249KHJlZmVycmFsKXx1dG1jbWQ9cmVmZXJyYWx8dXRtY2N0PS9tYWluL2FkbWluL2xpc3Rtb2R1bGVzLnBocCc7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjE4Mjg3NDcxMjguMTI1NDk4NDIxNi4xMjczMTU2MjU1LjEyNzM0NzYxNDIuMjInOwokbGFuZ1sndXRtYyddID0gJzE1Njg2MTM1Myc7CiRsYW5nWyd1dG1iJ10gPSAnMTU2ODYxMzUzLjEuMTAuMTI3MzQ3NjE0Mic7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/ja_JP.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ3N0cmlwYmFja2dyb3VuZHRhZ3MnXSA9ICdDU1PjgYvjgonjga7og4zmma/jgr/jgrDjgpLlpJbjgZfjgb7jgZnjgIInOwokbGFuZ1snZmFsc2UnXSA9ICfjgYTjgYTjgYgnOwokbGFuZ1sndHJ1ZSddID0gJ+OBr+OBhCc7CiRsYW5nWydzdWJtaXQnXSA9ICfpgIHkv6EnOwokbGFuZ1snaGVscCddID0gPDw8RU9GCgk8aDM+5L2V44GM44Gn44GN44KL44Gu44Gn44GX44KH44GG44GLPzwvaDM+Cgk8cD5UaW55TUNF44KS44Km44Kj44K444Km44Kj44Kw44Ko44OH44Kj44K/44Go44GX44Gm5Yip55So44Gn44GN44G+44GZ44CCPC9wPgoJPGgzPuS9v+eUqOaWueazlTwvaDM+Cgk8cD7jgqTjg7Pjgrnjg4jjg7zjg6vjgZfjgIHjg6bjg7zjgrbjg7znlLvpnaLoqK3lrprjgYvjgonjgIFUaW55TUNF44KS44Km44Kj44K444Km44Kj44Kw44Ko44OH44Kj44K/44Go44GX44Gm6YG45oqe44GX44G+44GZ44CCPC9wPgpFT0Y7Cj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/lt_LT.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1RpbnlNQ0UgIFdZU0lXWUcnOwokbGFuZ1sndW5pbnN0YWxsZWQnXSA9ICdNb2R1bGlzIGkmc2Nhcm9uO2RpZWd0YXMnOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kdWxpbyAlcyB2ZXJzaWphIMSvZGllZ3RhLic7CiRsYW5nWydzdHJpcGJhY2tncm91bmR0YWdzJ10gPSAnSSZzY2Fyb247aW10aSBCYWNrZ3JvdW5kIMW+eW1lcyBpJnNjYXJvbjsgQ1NTJzsKJGxhbmdbJ3N0aXB0YWdzX2hlbHAnXSA9ICdUaGlzIG9wdGlvbnMgdHJpZXMgdG8gcmVtb3ZlIGJhY2tncm91bmQtdHlwZSBzZXR0aW5ncyBmcm9tIHRoZSBzdHlsZXNoZWV0Lic7CiRsYW5nWydzb3VyY2VfZm9ybWF0dGluZ190ZXh0J10gPSAnUHJpdGFpa3l0aSBrb2RvIGZvcm1hdGF2aW3EhSBIVE1MIHZhaXpkYXZpbXVpJzsKJGxhbmdbJ2Ryb3Bkb3duYmxvY2tmb3JtYXRzX3RleHQnXSA9ICdOZWxlaWTFvmlhbWkgZm9ybWF0YWkgaSZzY2Fyb247JnNjYXJvbjtva2FuxI1pYW0gcGFzaXJlbmthbWFtIG1lbml1JzsKJGxhbmdbJ2FsbG93dGFibGVzJ10gPSAnTGVpc3RpIGxlbnRlbGnFsyBuYXVkb2ppbcSFJzsKJGxhbmdbJ25ld2xpbmVzdHlsZV90ZXh0J10gPSAnTmF1am9zIGVpbHV0xJdzIHN0aWxpdXMnOwokbGFuZ1sncHN0eWxlJ10gPSAncCBzdGlsaXVzJzsKJGxhbmdbJ2Jyc3R5bGUnXSA9ICdiciBzdGlsaXVzJzsKJGxhbmdbJ3VzZWNvbXByZXNzaW9udGV4dCddID0gJ05hdWRvdGkgZ3ogc3VzcGF1ZGltxIUnOwokbGFuZ1sndXNlY29tcHJlc3Npb25oZWxwJ10gPSAnVGFpIGdhbGkgcGFncmVpdGludGkgIFRpbnlNQ0UsIGJldCBrYWkga3VyaW9zZSBzaXN0ZW1vc2UgZ2FsaSBuZXXFvmtyYXV0aS4gTmF1ZG9raXRlIGF0c2FyZ2lhaS4nOwokbGFuZ1snZm9yY2Vkcm9vdGJsb2NrdGV4dCddID0gJ1ByaXZlcnN0aW5pcyA8cD4gbmF1ZG9qaW1hcyc7CiRsYW5nWydmb3JjZWRyb290YmxvY2toZWxwJ10gPSAnUHJpdmVyc3RpIHBhc3RyYWlwYXMgbmF1ZG90aSA8cD4tdGFnJzsKJGxhbmdbJ2ZpbGVwaWNrZXJzdHlsZSddID0gJ0J5bMWzIHBhc2lyaW5raW1vIHN0aWxpdXMnOwokbGFuZ1snZmlsZXBpY2tlcnNpemUnXSA9ICdCeWzFsyBwYXNpcmlua2ltbyBkeWRpcyc7CiRsYW5nWydhbGxvd3VwbG9hZHRleHQnXSA9ICdBbGxvdyB1cGxvYWQgYW5kIGNyZWF0aW5nIGRpcnMgaW4gRmlsZVBpY2tlcic7CiRsYW5nWydhbGxvd3NjYWxpbmd0ZXh0J10gPSAnQWxsb3cgb24tdGhlLWZseSByZXNpemluZyBvZiB1cGxvYWRlZCBpbWFnZXMnOwokbGFuZ1snc2NhbGluZ2RpbWVuc2lvbnN0ZXh0J10gPSAnTnVtYXR5dG9zIGRpbWVuc2lqb3MnOwokbGFuZ1sncmVzaXpldG8nXSA9ICdQYWtlaXN0aSBkeWTEryDEryc7CiRsYW5nWydtYWtldGh1bWJuYWlsJ10gPSAnTWFrZSBhIHRodW1ibmFpbCB3aGVuIHVwbG9hZGluZyBpbWFnZXMnOwokbGFuZ1sndXNlYWR2YW5jZWRwcm9maWxlJ10gPSAnVXNlIGFkdmFuY2VkIFRpbnlNQ0UtcHJvZmlsZSc7CiRsYW5nWydzYXZlcHJvZmlsZSddID0gJ1NhdWdvdGkgcHJvZmlsxK8nOwokbGFuZ1sncHJvZmlsZXNhdmVkJ10gPSAnUHJvZmlsaXMgYnV2byBpJnNjYXJvbjtzYXVnb3Rhcyc7CiRsYW5nWydwcm9maWxlc190YWInXSA9ICdQcm9maWxpYWknOwokbGFuZ1snYWR2YW5jZWRfYmFja2VuZF90b29sYmFycyddID0gJ0FkdmFuY2VkIGJhY2tlbmQgcHJvZmlsZSBzZXR0aW5ncyc7CiRsYW5nWydzYXZlc3R5bGVzJ10gPSAnU2F1Z290aSBzdGlsaXVzJzsKJGxhbmdbJ2FsbG93YWR2YW5jZWRwcm9maWxlJ10gPSAnQWxsb3cgdXNhZ2Ugb2YgYWR2YW5jZWQgcHJvZmlsZSBpbiBUaW55TUNFJzsKJGxhbmdbJ3Nob3dmaWxlbWFuYWdlbWVudCddID0gJ1Nob3cgZmlsZW1hbmFnZW1lbnQgb3B0aW9ucyc7CiRsYW5nWydzaG93ZmlsZW1hbmFnZW1lbnRoZWxwJ10gPSAnU2hvdyBmaWxlbWFuYWdlbWVudCBpbiBvcHRpb25zIGxpa2UgdXBsb2FkLCBtYWtlIGRpciBhbmQgZmlsZSBkZWxldGlvbiBpbiBGaWxlUGlja2VyLCBpZiB0aGUgdXNlciBpcyBhbGxvd2VkIHRvIHBlcmZvcm0gdGhlc2UuJzsKJGxhbmdbJ3Jlc3RyaWN0ZGlycyddID0gJ1Jlc3RyaWN0IHVzZXImIzAzOTtzIGRpciBhY2Nlc3MnOwokbGFuZ1sncmVzdHJpY3RkaXJzaGVscCddID0gJ1RoaXMgd2lsbCByZXN0cmljdCB0aGUgZmlsZW1hbmFnZW1lbnQtY2FwYWJpbGl0aWVzIG9mIHRoZSB1c2VyIHRvIGEgc3ViZGlyIHRvICYjMDM5O3VwbG9hZHMmIzAzOTsgd2hpY2ggaGF2ZSB0aGUgc2FtZSBuYW1lIGFzIHRoZSB1c2VyJiMwMzk7cyBsb2dpbi4gSWYgdGhlIHN1YmRpciBkb2VzIG5vdCBleGlzdCwgaXQgd2lsbCBwb3NzaWJseSBiZSBjcmVhdGVkLiBQbGVhc2Ugbm90ZSwgdGhpcyBjdXJyZW50bHkgb25seSB3b3JrcyB3aXRoIHRoZSBzdGFuZGFyZCBkaXJuYW1lcywgdXBsb2Fkcy9pbWFnZXMuIFRoaXMgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLic7CiRsYW5nWydkZWxldGVjb25maXJtYXRpb24nXSA9ICdBciB0aWtyYWkgbm9yaXRlIGkmc2Nhcm9uO3RyaW50aSAmc2Nhcm9uO8SvIGZhaWzEhT8nOwokbGFuZ1snZGVsZXRlZmlsZXN1Y2Nlc3MnXSA9ICdidXZvIHPEl2ttaW5nYWkgaSZzY2Fyb247dHJpbnRhcyc7CiRsYW5nWydkZWxldGVmaWxlZmFpbGVkJ10gPSAnbmVnYWxpIGLFq3RpIGkmc2Nhcm9uO3RyaW50YXMnOwokbGFuZ1snZGVsZXRlc3ViZGlyZmFpbGVkJ10gPSAnbmVnYWxpIGLFq3RpIGkmc2Nhcm9uO3RyaW50YXMnOwokbGFuZ1snZGVsZXRlc3ViZGlyc3VjY2VzcyddID0gJ2J1dm8gc8SXa21pbmdhaSBpJnNjYXJvbjt0cmludGFzJzsKJGxhbmdbJ2RlbGV0ZWRpcmNvbmZpcm1hdGlvbiddID0gJ0FyZSB5b3Ugc3VyZSB0aGlzIGVtcHR5IHN1YmRpciBzaG91bGQgYmUgZGVsZXRlZD8nOwokbGFuZ1snZGVsZXRlZGlyJ10gPSAnVHJpbnRpIHR1JnNjYXJvbjvEjWnEhSBzdWIta2F0YWxvZ8SFJzsKJGxhbmdbJ2RlbGV0ZWZpbGUnXSA9ICdUcmludGkgZmFpbMSFJzsKJGxhbmdbJ2Nhbm5vdHJlYWRjb25maWcnXSA9ICdDYW5ub3QgcmVhZCB0aGUgZmlsZSB0aW55Y29uZmlnLnBocCBkaXJlY3RseSBzbyBUaW55TUNFIHdpbGwgcHJvYmFibHkgbm90IHdvcmsuIFlvdSBzaG91bGQgY2hlY2sgdGhlIHBlcm1pc3Npb25zIG9mIHRoZSBmaWxlIGFuZCBvZiB0aGUgcGFyZW50IGRpcnMsIHdoaWNoIHNob3VsZCBiZSByZWFkYWJsZSBmb3IgYWxsIGJ1dCBvbmx5IHdyaXRhYmxlIGZvciBvd25lci4nOwokbGFuZ1snZmlsZW5hbWVvbmx5J10gPSAnUm9keXRpIHBhdmFkaW5pbXVzJzsKJGxhbmdbJ3RodW1ibmFpbHNvbmx5J10gPSAnUm9keXRpIG1pbmlhdGnFq3Jhcyc7CiRsYW5nWydzaG93dGh1bWJuYWlsZmlsZXN0ZXh0J10gPSAnU2hvdyB0aHVtYm5haWwtZmlsZXMgaW4gbGlzdHMnOwokbGFuZ1snZmlsZW5hbWVhbmR0aHVtYm5haWxzJ10gPSAnUm9keXRpIHRpZWsgbWluaWF0acWrcmFzIHRpZWsgcGF2YWRpbmltdXMnOwokbGFuZ1snc2tpbnN0ZXh0J10gPSAnT2RhJzsKJGxhbmdbJ3NraW52YXJpYXRpb250ZXh0J10gPSAnT2RvcyB2YXJpYWNpamEnOwokbGFuZ1snYWR2YW5jZWR3YXJuaW5nJ10gPSAnPHN0cm9uZz5QcmEmc2Nhcm9uO29tZSBhdG1pbnRpITxici8+ClBha2Vpc2RhbWkgJnNjYXJvbjtpYXMgbnVvc3RhdGFzIFRpbnlNQ0UgZ2FsaSBuZWJldmVpa3RpIGFyIGdlbmVydW90aSBrb2TEhSBuZXRlaXNpbmdhaS4gxIxpYSByZWRhZ3Vva2l0ZSBqZWkgxb5pbm90ZSBrxIUgZGFyb3RlLiBQcmEmc2Nhcm9uO29tZSBwYXNpa29uc3VsdHVvdGkgVGlueU1DRSBzdmV0YWluxJdqZSBwcmllJnNjYXJvbjsga2VpxI1pYW50Ljwvc3Ryb25nPic7CiRsYW5nWydlbnRpdHllbmNvZGluZ190ZXh0J10gPSAnS29kYXZpbWFzJzsKJGxhbmdbJ3Jhd2VuY29kaW5nJ10gPSAnUGF2aXImc2Nhcm9uO3V0aW5pcyBrb2RhdmltYXMgKGdyZWnEjWlhdXNpYXMsIHZlaWtpYSBkYXVnZWxpdSBhdHZlanUpJzsKJGxhbmdbJ25hbWVkZW5jb2RpbmcnXSA9ICdQYXZhZGludGFzIGtvZGF2aW1hcyAoa2FpcCAmbmJzcDspJzsKJGxhbmdbJ251bWVyaWNlbmNvZGluZyddID0gJ1NrYWl0aW5pcyBrb2RhdmltYXMgKGthaXAgJmFtcDthbXA7IzE2MDspJzsKJGxhbmdbJ3Nob3dfcGF0aF90ZXh0J10gPSAnUm9keXRpIGVsZW1lbnRvIGtlbGlhIHJlZGFrdG9yaWF1cyBhcGHEjWlvamUnOwokbGFuZ1sndG9vbGJhcl90YWInXSA9ICfErnJhbmtpbsSXICc7CiRsYW5nWyd0b29sYmFyX2hlbHAnXSA9ICcmU2Nhcm9uO2lvcyBudW9zdGF0b3MgdHVyxJd0xbMgYsWrdCBzdWRhcnl0b3MgaSZzY2Fyb247IGthYmxlbGl1IGF0c2tpcnTFsyBteWd0dWvFsyBwYXZhZGluaW3Fsy4nOwokbGFuZ1sndG9vbGJhcl90ZXh0J10gPSAnxK5yYW5raW7ElyAnOwokbGFuZ1sndG9vbGJhcmhlbHB0ZXh0J10gPSAnU3BhdXNraXRlIMSNaWEgamVpIG5vcml0ZSBwZXLFvmnFq3LEl3RpIFRpbnlNQ0UgxK9yYW5raW7El3MgaW5zdHJpa2NpamEuJzsKJGxhbmdbJ2VkaXRvcl93aWR0aF90ZXh0J10gPSAnUmVkYWt0b3JpYXVzIGxhdWtvIHBsb3Rpcyc7CiRsYW5nWydlZGl0b3JfaGVpZ2h0X3RleHQnXSA9ICdSZWRha3RvcmlhdXMgbGF1a28gYXVrJnNjYXJvbjt0aXMnOwokbGFuZ1snYXV0byddID0gJ0F1dG9tYXRpbmlzJzsKJGxhbmdbJ29yJ10gPSAnYXInOwokbGFuZ1snYWxsb3dyZXNpemluZyddID0gJ0FsbG93IGlucGxhY2UgcmVzaXppbmcgb2YgZWRpdG9yIGZpZWxkJzsKJGxhbmdbJ3Jlc2l6ZW5vbmUnXSA9ICdEbyBub3QgYWxsb3cgcmVzaXppbmcnOwokbGFuZ1sncmVzaXplYm90aCddID0gJ0FsbG93IHJlc2l6aW5nIGluIGJvdGggZGlyZWN0aW9ucyc7CiRsYW5nWydyZXNpemVoZWlnaHQnXSA9ICdBbGxvdyByZXNpemluZyBvZiBoZWlnaHQgb25seSc7CiRsYW5nWydkYXRldGltZWZvcm1hdF90ZXh0J10gPSAnRGF0b3MvTGFpa28gZm9ybWF0YXMnOwokbGFuZ1sndGltZXRleHQnXSA9ICdMYWlrYXMnOwokbGFuZ1snZGF0ZXRleHQnXSA9ICdEYXRhJzsKJGxhbmdbJ2RhdGV0aW1lZm9ybWF0X2hlbHAnXSA9ICdTcGF1c2tpdGUgxI1pYSBqZWkgbm9yaXRlIHBhZ2FsYm9zIGTEl2wgbGFpa28gZGF0b3MgZm9ybWF0YXZpbW8nOwokbGFuZ1snZXh0cmFjb25maWd0ZXh0J10gPSAnUGFwaWxkb21pIG51c3RhdHltYWknOwokbGFuZ1snZXh0cmFjb25maWdoZWxwMiddID0gJ09uZSBzdGF0ZW1lbnQgcGVyIGxpbmUsIGNvbW1hcyB3aWxsIGJlIGFkZGVkIGJlZm9yZSBhbmQgYWZ0ZXIgdGhpcyBjb250ZW50LiBDaGVjayBUaW55TUNFLXdpa2kgZm9yIGluc3RydWN0aW9ucy4nOwokbGFuZ1snY3VzdG9tZHJvcGRvd250ZXh0J10gPSAnU2F2aXRhcyBpJnNjYXJvbjtza2xlaWTFvmlhbWFzaXMgbWVuaXUnOwokbGFuZ1snY3VzdG9tZHJvcGRvd25oZWxwJ10gPSAnxK50ZXJwaWEgc2F2aXR1cyBrb2RvIHRla3N0byBmcmFnbWVudHVzIMSvIGkmc2Nhcm9uO3NrbGVpZMW+aWFtxIVqxK8gbWVuaXUuIE5hdWRvamFtYSBwYXByYXN0ZXNuaWFtIMW+eW1pxbMgbmF1ZG9qaW11aS4gTWVuaXUgxK90ZXJwaWFtYXMgxK8gxK9yYW5raW7EmSBuYXVkb2phbnQgJiMwMzk7Y3VzdG9tZHJvcGRvd24mIzAzOTsuCic7CiRsYW5nWydzdGFydGVuYWJsZWR0ZXh0J10gPSAnU3RhcnR1cCBlbmFibGVkJzsKJGxhbmdbJ3N0YXJ0ZW5hYmxlZGhlbHAnXSA9ICdVbmNoZWNraW5nIHRoaXMgc3RhcnRzIHVwIFRpbnktZWRpdG9ycyBpbiBhIGRpc2FibGVkIHN0YXRlLiBTaG91bGQgYmUgdXNlZCB0b2dldGhlciB3aXRoIHRoZSB0b2dnbGUgYnV0dG9uLic7CiRsYW5nWydsb2FkY21zbGlua2VydGV4dCddID0gJ1XFvmtyYXV0aSBDTVMtbGlua2VyJzsKJGxhbmdbJ2xvYWRjbXNsaW5rZXJoZWxwJ10gPSAnVGFpIHN1Z2VuZXJ1b2phIGphdmFzY3JpcHQta29kxIUgcmVpa2FsaW5nxIUgcHJpZMSXdGkgxK8gxK9yYW5raW7EmQonOwokbGFuZ1snY21zbGlua2Vyc3R5bGV0ZXh0J10gPSAnQ01TLWxpbmtlciBudW9yb2TFsyBzdGlsaXVzJzsKJGxhbmdbJ2Ntc3NlbGZsaW5rc3R5bGUnXSA9ICd7Y21zX3NlbGZsaW5rfS1zdGlsaXVzIChwYWxhaWtvICZzY2Fyb247dmFyaXVzIHVybCknOwokbGFuZ1snYWhyZWZzdHlsZSddID0gJzxhIGhyZWY+LXN0aWxpdXMgKG5lcGFsYWlrbyAmc2Nhcm9uO3ZhcmnFsyB1cmwpJzsKJGxhbmdbJ3JlbGF0aXZldXJsc3RleHQnXSA9ICdHZW5lcnVvdGkgZ2ltaW5pbmd1cyB1cmwnOwokbGFuZ1snZm9yY2VjbGVhbnBhc3RldGV4dCddID0gJ1ByaXZlcnN0aW5pcyAmc2Nhcm9uO3ZhcnVzIMSvdGVycGltYXMgKHBhc3RlKSc7CiRsYW5nWydmb3JjZWNsZWFucGFzdGVoZWxwJ10gPSAnVGFpIHR1csSXdMWzIGLFq3QgxK9qdW5ndGEgamVpIG5vcml0ZSBwYSZzY2Fyb247YWxpbnRpIGtlaXN0xIUgV29yZCBmb3JtYXRhdmltxIUga2FpIMSvdGVycGlhbWFzIHRla3N0YXMuJzsKJGxhbmdbJ2JvZHljc3NfdGV4dCddID0gJ0JvZHkgdGFnJiMwMzk7YXMgQ1NTJzsKJGxhbmdbJ2JvZHljc3NfaGVscCddID0gJ0J1cyBwcmlkxJd0YXMgxK8gY3NzIGJvZHktYXBpYnLEl8W+aW3EhSc7CiRsYW5nWydpbmNsdWRlb25seXNjcmVlbmNzc190ZXh0J10gPSAnSW5jbHVkZSBvbmx5IHNjcmVlbiBDU1MnOwokbGFuZ1snaW5jbHVkZW9ubHlzY3JlZW5jc3NfaGVscCddID0gJ1NlbGVjdGluZyB0aGlzIGFsbG93cyBvbmx5IGF0dGFjaGVkIHN0eWxlc2hlZXRzIHdpdGggdGhlIHNjcmVlbi1tZWRpYXR5cGUgc2VsZWN0ZWQgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHN0eWxlcyBUaW55TUNFIGhhbmRsZXMuJzsKJGxhbmdbJ3VzZXN0YXRpY2NvbmZpZ3RleHQnXSA9ICdOYXVkb3RpIHN0YXRpbsSZIGtvbmZpZ3VyYWNpam9zIGJ5bMSFJzsKJGxhbmdbJ3VzZXN0YXRpY2NvbmZpZ2hlbHAnXSA9ICdUaGlzIGNhbiBoZWxwIGdldHRpbmcgdGlueSB0byB3b3JrIG9uIHN5c3RlbXMgd2hlcmUgdGhlIGhvc3RpbmcgZmFjaWxpdHkgYWRkcyBzdHVmZiBsaWtlIHN0YXRpc3RpY3MgZXRjLiB0byBhbGwgb3V0cHV0LCBicmVha2luZyBkeW5hbWljYWxseSBjcmVhdGVkIGphdmFzY3JpcHQgY29uZmlnIGZpbGUnOwokbGFuZ1sndXNlc3RhdGljY29uZmlnd2FybmluZyddID0gJ1dhcm5pbmchIFlvdSBoYXZlIHRoZSBzdGF0aWMgY29uZmlnLWZpbGUgb3B0aW9uIGVuYWJsZWQgYnV0IHlvdXIgL3RtcC8gZGlyIGlzIG5vdCB3cml0YWJsZS4gVGhpcyB3aWxsIHByZXZlbnQgdGhlIG1vZHVsZSBmcm9tIHNhdmluZyB0aGUgc3RhdGljIGNvbmZpZy1maWxlIGFuZCB3aWxsIG1vc3QgcHJvYmFibHkgcmVuZGVyIFRpbnlNQ0UgaW5vcGVyYXRpb25hbC4nOwokbGFuZ1snaWdub3JlbW9kaWZ5ZmlsZXN0ZXh0J10gPSAnSWdub3JlIHRoZSAmIzAzOTtNb2RpZnkgRmlsZXMmIzAzOTsgcGVybWlzc2lvbiBmb3IgRmlsZVBpY2tlcic7CiRsYW5nWydpZ25vcmVtb2RpZnlmaWxlc2hlbHAnXSA9ICdXYXJuaW5nISBUaGlzIGFsbG93cyBzb21lIGZpbGUtYWx0ZXJpbmcgb3BlcmF0aW9ucyBldmVuIGlmIHRoZSAmIzAzOTtNb2RpZnkgRmlsZXMmIzAzOTsgcGVybWlzc2lvbiBpcyBub3Qgc2V0IGZvciB0aGUgY3VycmVudCB1c2VyZ3JvdXAuIFRoaXMgY2FuIGVmZmVjdGl2ZWx5IGJlIHVzZWQgdG9nZXRoZXIgd2l0aCB0aGUgb3B0aW9uIHRvIHJlc3RyaWN0IHVzZXImIzAzOTtzIGRpcmVjdG9yeSBhY2Nlc3MuJzsKJGxhbmdbJ3Nob3d0b2dnbGVidXR0b25fdGV4dCddID0gJ1JvZHl0aSDFvnltaW7EhSBsYXVrZWzEryBpJnNjYXJvbjtqdW5ndGkvxK9qdW5ndGkgIFdZU0lXWUcnOwokbGFuZ1sndG9nZ2xld3lzaXd5ZyddID0gJ8SuanVuZ3RpL2kmc2Nhcm9uO2p1bmd0aSBXWVNJV1lHJzsKJGxhbmdbJ3N0eWxlc190YWInXSA9ICdDU1MgU3RpbGlhaSc7CiRsYW5nWydzdHlsZXNfaGVscCddID0gJ0plaSBwYWxpa3NpdGUgdHUmc2Nhcm9uO8SNaWEsIFRpbnlNQ0UgbmF1ZG9zIENTUyBieWzEhSBpciBzdGlsaXVzIGVzYW7EjWl1cyBqb2plLiBKZWkgbm9yaXRlIGxlaXN0aSBuYXJpYW1zIG5hdWRvdGkgdGlrIHRhbSB0aWtydXMgc3RpbGl1cyBudXJvZHlraXRlIGp1b3MgZm9ybWEgJnF1b3Q7U2F2aXRhc1BhdmFkaW5pbWFzMT1zdGlsaXVzMTsgU2F2aXRhc1BhdmFkaW5pbWFzMj10aWxpdXMyJnF1b3Q7IHBpcm1hbWUgbGF1a2VseWplJzsKJGxhbmdbJ2Nzc19zdHlsZXNfdGV4dCddID0gJ1N0aWxpYWknOwokbGFuZ1snYWNjZXNzZGVuaWVkJ10gPSAnUHJpZWlnYSB1xb5kcmF1c3RhLiBQYXNpdGlyaW5raXRlIGxlaWRpbXVzLic7CiRsYW5nWydlcnJvciddID0gJ0tsYWlkYSEnOwokbGFuZ1snc3VibWl0J10gPSAnUGF0ZWlrdGknOwokbGFuZ1sndXBkYXRlJ10gPSAnQXRuYXVqaW50aSc7CiRsYW5nWydzYXZlc2V0dGluZ3MnXSA9ICdTYXVnb3RpIG51c3RhdHltdXMnOwokbGFuZ1snc2V0dGluZ3MnXSA9ICdOdW9zdGF0b3MnOwokbGFuZ1snc2V0dGluZ3NzYXZlZCddID0gJ051b3N0YXRvcyBpJnNjYXJvbjtzYXVnb3Rvcyc7CiRsYW5nWydzYXZlYWR2YW5jZWQnXSA9ICdTYXVnb3RpIGkmc2Nhcm9uO3BsxJdzdHVvc2l1cyBudXN0YXR5bXVzJzsKJGxhbmdbJ2FkdmFuY2Vkc2F2ZWQnXSA9ICdQYcW+YW5nZXNuxJdzIG51b3N0YXRvcyBpJnNjYXJvbjtzYXVnb3Rvcyc7CiRsYW5nWyd0b29sYmFyc2F2ZWQnXSA9ICfErnJhbmtpbsSXIGkmc2Nhcm9uO3NhdWdvdGknOwokbGFuZ1snc3R5bGVzc2F2ZWQnXSA9ICdTdGlsaWFpIGkmc2Nhcm9uO3NhdWdvdGknOwokbGFuZ1sndGVzdGFyZWF0ZXh0J10gPSAnPHA+VGVzdGF2aW1vIGVyZHbElywgam9rcyB0ZWtzdGFzIG5lYnVzIGkmc2Nhcm9uO3NhdWdvdGFzIHRlc3RhdmltbyBtZXR1Li4uPC9wPic7CiRsYW5nWydyZXNldCddID0gJ0F0c3RhdHl0aSDEryBwcmFkaW5pdXMnOwokbGFuZ1sncmVzZXRhbGwnXSA9ICdOdXN0YXR5dGkgdmlzYXMgbnVvc3RhdGFzIMSvIHByYWRpbmVzJzsKJGxhbmdbJ2NvbmZpcm1yZXNldCddID0gJ0FyIHRpa3JhaSBub3JpdGUgYXRzdGF0eXRpIG51b3N0YXRhcyDEryBwcmFkaW5pZXM/JzsKJGxhbmdbJ2NvbmZpcm1yZXNldGFsbCddID0gJ0FyIHRpa3JhaSBub3JpdGUgYXRzdGF0eXRpIFZJU0FTIG51b3N0YXRhcyDEryBwcmFkaW5pZXM/JzsKJGxhbmdbJ3NldHRpbmdzcmVzZXQnXSA9ICdOdW9zdGF0b3MgYXRzdGF0eXRvcyc7CiRsYW5nWydhbGxzZXR0aW5nc3Jlc2V0J10gPSAnVmlzb3MgbnVvc3RhdG9zIGF0c3RhdHl0b3MnOwokbGFuZ1sndXBncmFkZWQnXSA9ICdidXZvIGF0bmF1amludGEgxK8gdmVyc2lqYSc7CiRsYW5nWydjdXN0b21kcm9wZG93biddID0gJ1Nhdml0YXMgaSZzY2Fyb247c2tsZWlkxb5pYW1hc2lzIG1lbml1JzsKJGxhbmdbJ2Ntc21zbGlua2VyJ10gPSAnxK50ZXJwdGkgbnVvcm9kxIUgxK8gY21zbXMtcHVzbGFwxK8nOwokbGFuZ1snYmFja2VuZF90b29sYmFycyddID0gJ0FkbWluaXN0cmF0b3JpYXVzIMSvcmFua2luxJdzIG51b3N0YXRvcyc7CiRsYW5nWydmcm9udGVuZF90b29sYmFycyddID0gJ1ByaWUmc2Nhcm9uO2FraW7El3MgxK9yYW5raW7El3MgbnVvc3RhdG9zJzsKJGxhbmdbJ3BsdWdpbnNfdGFiJ10gPSAnUGzEl3RpbmlhaSc7CiRsYW5nWydwbHVnaW5zX2hlbHAnXSA9ICdQYXNpcmlua2l0ZSBrb2tpdXMgcGzEl3Rpbml1cyBub3JpdGUgYWt0eXZ1b3RpLiBEb2t1bWVudGFjaWphIHJhc2l0ZSA8YSBocmVmPSIlcyIgdGFyZ2V0PSJfYmxhbmsiPsSNaWE8L2E+JzsKJGxhbmdbJ3BsdWdpbnNfdGV4dCddID0gJ1BsxJd0aW5pYWknOwokbGFuZ1snc2F2ZXBsdWdpbnMnXSA9ICdJJnNjYXJvbjtzYXVnb3RpIHBsxJd0aW5pdXMnOwokbGFuZ1sncGx1Z2luc19tb2R1bGUnXSA9ICdNb2R1bGUgUGx1Z2lucyc7CiRsYW5nWydwbHVnaW5zX2NvbW1vbiddID0gJ0NvbW1vbiBQbHVnaW5zJzsKJGxhbmdbJ21vZHVsZSddID0gJ01vZHVsaXMnOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICdBcHJhJnNjYXJvbjt5bWFzJzsKJGxhbmdbJ3BsdWdpbiddID0gJ1BsdWdpbic7CiRsYW5nWyd5b3VhcmVpbnRleHQnXSA9ICdKxatzIGVzYXRlJzsKJGxhbmdbJ2xvYWRzdHlsZXNoZWV0dGV4dCddID0gJ0xvYWQgc3R5bGVzaGVldCBmb3IgY29udGVudCAocmVjb21tZW5kZWQpJzsKJGxhbmdbJ2V4dHJhc3R5bGVzdGV4dCddID0gJ0FkZGl0aW9ucyB0byBzdHlsZXNoZWV0JzsKJGxhbmdbJ2V4dHJhc3R5bGVzaGVscCddID0gJ0NTUyBlbnRlcmVkIGhlcmUgd2lsbCBiZSBhZGRlZCB0byB0aGUgc3R5bGVzaGVldCByZWFkIGJ5IFRpbnlNQ0UgYWZ0ZXIgaXQgcmVjaWV2ZXMgdGhlIENNU21zIHN0eWxlcyc7CiRsYW5nWyd1cGxvYWRuZXdmaWxlJ10gPSAnTmF1amEgYnlsYSc7CiRsYW5nWyd1cGxvYWRmaWxlJ10gPSAnxK5rZWx0aSc7CiRsYW5nWydjcmVhdGVuZXdkaXInXSA9ICdOYXVqYXMga2F0YWxvZ2FzJzsKJGxhbmdbJ2NyZWF0ZWRpciddID0gJ1N1a3VydGknOwokbGFuZ1snbm9kaXJuYW1lJ10gPSAnTmVwYXRlaWt0YXMga2F0YWxvZ28gcGF2YWRpbmltYXMnOwokbGFuZ1snZGlyZXhpc3RzJ10gPSAnS2F0YWxvZ2FzIHRva2l1IHBhdmFkaW51bXUgamF1IGVnemlzdHVvamEnOwokbGFuZ1snbmV3ZGlyY3JlYXRlZCddID0gJ05hdWphcyBrYXRhbG9nYXMgc8SXa21pbmdhaSBzdWt1cnRhcyc7CiRsYW5nWyduZXdkaXJmYWlsZWQnXSA9ICfErnZ5a28ga2xhaWRhIGt1cmlhbnQga2F0YWxvZ8SFJzsKJGxhbmdbJ25vZmlsZSddID0gJ0J5bGEgbmVidXZvIMSva2VsdGEnOwokbGFuZ1snZmlsZXRvb2JpZyddID0gJ8Sua2VsdGEgYnlsYSB5cmEgcGVyIGRpZGVsxJcnOwokbGFuZ1snY29udGFpbnNpbGxlZ2FsY2hhcnMnXSA9ICdGaWxlbmFtZSBjb250YWlucyBvbmUgb3IgbW9yZSBpbGxlZ2FsIGNoYXJhY3RlcnMgKCYjMDM5OywmcXVvdDssKywqLFwsLywmYW1wOywkKSc7CiRsYW5nWyd1cGxvYWRmYWlsZWQnXSA9ICdLbGFpZGEgIHBlcmtlbGlhbnQgxK9rZWx0xIUgYnlsxIUnOwokbGFuZ1snZmlsZXVwbG9hZGVkJ10gPSAnQnlsYSBzxJdrbWluZ2FpIMSva2VsdGEnOwokbGFuZ1snZmlsZXBpY2tlcnRpdGxlJ10gPSAnQ01TTWFkZVNpbXBsZSBCeWzFsyBwYXNpcmlua2ltYXMnOwokbGFuZ1snc3VjY2VzcyddID0gJ1PEl2ttxJcnOwokbGFuZ1snZmlsZW9wZXJhdGlvbnMnXSA9ICdWZWlrc21haSBzdSBieWxvbWlzJzsKJGxhbmdbJ3Rob3VzYW5kZGVsaW1pdGVyJ10gPSAnLCAnOwokbGFuZ1snc2l6ZSddID0gJ0R5ZGlzJzsKJGxhbmdbJ2RpbWVuc2lvbnMnXSA9ICdoeHcnOwokbGFuZ1snYWR2YW5jZWRfdGFiJ10gPSAnUGFwaWxkb21haSc7CiRsYW5nWydoZWxwJ10gPSAnCTxoMz5LxIUgamlzIGRhcm8/PC9oMz4KCTxwPk5hdWRvamEgVGlueU1DRSBrYWlwIFdZU0lXWUcgaHRtbCByZWRha3RvcmnFsy48L3A+Cgk8aDM+S2FpcCBqxK8gbmF1ZG90aT88L2gzPgoJPHA+xK5kaWVnaXRlIGrErywgbnVlaWtpdGUgxK8gVmFydG90b2pvIE51c3RhdHltdXMgaXIgcGHFvnltxJdraXRlLCBrYWQgbm9yaXRlIG5hdWRvdGkgVGlueU1DRSBrYWlwIFdZU0lXWUcgcmVkYWt0b3JpxbMuPC9wPgoKCTxoMz5XaGF0IGRvZXMgdGhpcyBkbz88L2gzPgoJPHA+RW5hYmxlcyBhIFRpbnlNQ0UgdG8gYmUgdXNlZCBhcyBhIFdZU0lXWUcuPC9wPgoJPGgzPkhvdyBkbyBJIHVzZSBpdD88L2gzPgoJPHA+SW5zdGFsbCBpdCwgdGhlbiBnbyB0byBVc2VyIFByZWZlcmVuY2VzIGFuZCBTZXQgVGlueU1DRSB0byBiZSB5b3VyIHd5c2l3eWcgb2YgY2hvaWNlLjwvcD4KCTxoMz5Ucm91Ymxlc2hvb3Rpbmc8L2gzPgoJU29tZSBwZW9wbGUgaGF2ZSB0cm91YmxlIHdpdGggdGlueSBub3Qgc2hvd2luZyB1cCB1cG9uIGluc3RhbGxhdGlvbiBvciB1cGdyYWRpbmcuIEhlcmUgaXMgYSBjaGVja2xpc3Qgb2YgCgl0aGluZ3MgeW91IGNhbiB0cnkgYmVmb3JlIGNvbnRhY3RpbmcgbWUgZm9yIGZ1cnRoZXIgc3VwcG9ydC4KCTxici8+Cgk8dWw+Cgk8bGk+MS4gUGxlYXNlLCBwbGVhc2UsIHRyeSB0byByZXVwbG9hZCB0aGUgbW9kdWxlcy9UaW55TUNFIGRpciB0byB5b3VyIHNlcnZlci4gWW91JiMwMzk7ZCBiZSBhbWF6ZWQgaG93IG1hbnkgdGltZXMgdGhpcyBoYXMgaGVscGVkIHBlb3BsZS48L2xpPgoJPGxpPjIuIFRyeSB0byBzd2l0Y2ggb24gdGhlIFN0YXRpYyBDb25maWcgb3B0aW9uLiBOb3RlIHRoYXQgdGhpcyByZXF1aXJlcyB5b3VyIC90bXAvLWRpciB0byBiZSB3cml0YWJsZSBieSB0aGUgd2Vic2VydmVyPC9saT4KCTxsaT4zLiBJZiB1cGdyYWRpbmcsIHBsZWFzZSB0cnkgdG8gcmVzZXQgYWxsIHNldHRpbmdzLiBOb3QgbmljZSBpZiB5b3UmIzAzOTt2ZSBkb25lIGEgbG90IG9mIGN1c3RvbWl6YXRpb24sIEkga25vdywgYnV0IGEgbG90IG9mIHRoaW5ncyBjaGFuZ2VzIGZyb20gMi4zLnggdG8gMi40Lnggc2VyaWVzIG9mIHRoZSBtb2R1bGUuCgk8bGk+NC4gVHJ5IGVuYWJsaW5nIHRoZSBzdGF0aWMgY29uZmlnIG9wdGlvbiBpbiBhZHZhbmNlZCBzZXR0aW5ncy4gVGhpcyB3b3JrcyBiZXR0ZXIgb24gc29tZSBzeXN0ZW1zIChsaWtlIENHSS1iYXNlZCkKCTwvdWw+Cgk8YnIvPic7CiRsYW5nWydxY2EnXSA9ICdQMC0zOTcwMjEzMTktMTI1OTkyNDQxMDgzMCc7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjQ5OTcxMjM1My4xMjYwMTE2Njg3LjEyNzIxMjU2NTcuMTI3MjkyNTM3MS42NSc7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjEyNzI5MjUzNzEuNjUuNDkudXRtY2NuPShyZWZlcnJhbCl8dXRtY3NyPWZvcnVtLmNtc21hZGVzaW1wbGUub3JnfHV0bWNjdD0vaW5kZXgucGhwfHV0bWNtZD1yZWZlcnJhbCc7CiRsYW5nWyd1dG1iJ10gPSAnMTU2ODYxMzUzJzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/nb_NO.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2FkbWluZGVzY3JpcHRpb24nXSA9ICdEZW5uZSBtb2R1bGVuIHRpbGxhdGVyIGhvdmVkc2FrbGlnIGF0IGlubmhvbGQsIG1lbiBvZ3PDpSBhbmRyZSB0eXBlciBkYXRhLCBrYW4gcmVkaWdlcmVzIHZlZCBicnVrIGF2IGVuIFdZU0lXWUcgcmVkaWdlcmVyIHV0dmlrbGV0IGF2IFRpbnlNQ0UgcHJvc2pla3RldC4nOwokbGFuZ1snYWR2YW5jZWRfbWVudSddID0gJ0F2YW5zZXJ0IG1vZHVzJzsKJGxhbmdbJ2FwcGx5J10gPSAnVXRmw7hyJzsKJGxhbmdbJ2F1dG9yZXNpemUnXSA9ICdBdXRvbWF0aXNrIGVuZHJlIHN0w7hycmVsc2UnOwokbGFuZ1snYmxvY2tfZm9ybWF0cyddID0gJ1RpbGdqZW5nZWxpZ2UgZm9ybWF0ZXInOwokbGFuZ1snYnV0dG9uX25hbWUnXSA9ICdOYXZuIHDDpSBrbmFwcCc7CiRsYW5nWydjYW5jZWwnXSA9ICdBdmJyeXQnOwokbGFuZ1snY21zbXNfbGlua2VyJ10gPSAnTGluayB0aWwgaW5uaG9sZHNzaWRlJzsKJGxhbmdbJ2NvbnRleHRtZW51J10gPSAnS29udGVrc3RtZW55ZW4nOwokbGFuZ1snY29udGV4dG1lbnVfY29udGVudCddID0gJ0tvbnRla3N0bWVueWlubmhvbGQnOwokbGFuZ1snY29weSddID0gJ0tvcGllcic7CiRsYW5nWydjb3B5X3Byb2ZpbGUnXSA9ICdLb3BpZXIgcHJvZmlsJzsKJGxhbmdbJ2Nzc19jbGFzc2VzJ10gPSAnQ1NTIGtsYXNzZXInOwokbGFuZ1snY3VzdG9tX2Ryb3Bkb3duJ10gPSAnVGlscGFzc2V0IHJ1bGxlZ2FyZGluJzsKJGxhbmdbJ2N1c3RvbV9kcm9wZG93bl90aXRsZSddID0gJ1RpbHBhc3NldCBydWxsZWdhcmRpbnN0aXR1dHQnOwokbGFuZ1snZGVmYXVsdCddID0gJ1N0YW5kYXJkJzsKJGxhbmdbJ2RlbGV0ZV9wcm9maWxlJ10gPSAnU2xldHQgcHJvZmlsJzsKJGxhbmdbJ2VkaXRfcHJvZmlsZSddID0gJ0VuZHJlIHByb2ZpbCc7CiRsYW5nWydmaWxlbWFuYWdlciddID0gJ0ZpbGJlaGFuZGxlcic7CiRsYW5nWydmaWxlbWFuYWdlcl9jcmVhdGVfZm9sZGVycyddID0gJ0xhZyBtYXBwZXInOwokbGFuZ1snZmlsZW1hbmFnZXJfY3JlYXRlX3RleHRfZmlsZXMnXSA9ICdMYWcgdGVsc3QgZmlsZXInOwokbGFuZ1snZmlsZW1hbmFnZXJfZGVsZXRlX2ZpbGVzJ10gPSAnU2xldHQgZmlsZXInOwokbGFuZ1snZmlsZW1hbmFnZXJfZGVsZXRlX2ZvbGRlcnMnXSA9ICdTbGV0dCBtYXBwZXInOwokbGFuZ1snZmlsZW1hbmFnZXJfZHVwbGljYXRlX2ZpbGVzJ10gPSAnRHVwbGlrYXQgZmlsZXInOwokbGFuZ1snZmlsZW1hbmFnZXJfZWRpdF90ZXh0X2ZpbGVzJ10gPSAnUmVkaWdlciB0ZWtzdGZpbGVyJzsKJGxhbmdbJ2ZpbGVtYW5hZ2VyX3JlbmFtZV9maWxlcyddID0gJ0dpIG55dHQgbmF2biB0aWwgZmlsZXInOwokbGFuZ1snZmlsZW1hbmFnZXJfcmVuYW1lX2ZvbGRlcnMnXSA9ICdHaSBueXR0IG5hdm4gdGlsIG1hcHBlcic7CiRsYW5nWydmaWxlbWFuYWdlcl91cGxvYWRfZmlsZXMnXSA9ICdMYXN0IG9wcCBmaWxlcic7CiRsYW5nWydmaWxlbWFuYWdlcl9vcHRpb25zJ10gPSAnQWx0ZXJuYXRpdmVyIGZvciBmaWxiZWhhbmRsaW5nJzsKJGxhbmdbJ2ZpbGVtYW5hZ2VyX3VzZSddID0gJ0FrdGl2ZXIgZmlsYmVoYW5kbGVyZW4nOwokbGFuZ1snZnJpZW5kbHluYW1lJ10gPSAnVGlueU1DRSBXWVNJV1lHIHJlZGFrdMO4cic7CiRsYW5nWydmb3JjZWRfcm9vdF9ibG9jayddID0gJ1R2aW5nIGF2c25pdHQgdmVkIGxpbmplc2tpZnQnOwokbGFuZ1snZ2VuZXJhbCddID0gJ0dlbmVyZWxsJzsKJGxhbmdbJ2dsb2JhbF9zZXR0aW5ncyddID0gJ0dsb2JhbGUgaW5uc3RpbGxpbmdlcic7CiRsYW5nWydncm91cF9mcm9udGVuZCddID0gJ0Zyb250ZW5kLWJydWtlcmUnOwokbGFuZ1snaWQnXSA9ICdJRCc7CiRsYW5nWydpbWFnZV9wbHVnaW4nXSA9ICdBbHRlcm5hdGl2ZXIgZm9yIGJpbGRlb3Bwc2V0dCc7CiRsYW5nWydpbnN0YWxsX3Byb2ZpbGVfYWRtaW4nXSA9ICdBZG1pbmlzdHJhdG9yZXInOwokbGFuZ1snaW5zdGFsbF9wcm9maWxlX2FkdmFuY2VkJ10gPSAnQXZhbnNlcnQnOwokbGFuZ1snaW5zdGFsbF9wcm9maWxlX2Zyb250ZW5kJ10gPSAnRnJvbnRlbmQnOwokbGFuZ1snaW5zdGFsbF9wcm9maWxlX21pbmltYWwnXSA9ICdtaW5pbWFsJzsKJGxhbmdbJ2luc3RhbGxfcHJvZmlsZV9zdGFuZGFyZCddID0gJ1N0YW5kYXJkJzsKJGxhbmdbJ2xvYWRpbmdfaW5mbyddID0gJ0xhc3Rlci4uLic7CiRsYW5nWydtZW51YmFyJ10gPSAnTWVueWJhcic7CiRsYW5nWyduYW1lJ10gPSAnTmF2bic7CiRsYW5nWyduZXdfcHJvZmlsZSddID0gJ0xhZyBlbiBueSBwcm9maWwnOwokbGFuZ1snbmV3d2luZG93J10gPSAnTnl0dCB2aW5kdSc7CiRsYW5nWydub19kZXNpZ25fbGlua2VkJ10gPSAnSW5nZW4gZGVzaWduJzsKJGxhbmdbJ25vbmUnXSA9ICdJbmdlbic7CiRsYW5nWydwbHVnaW5zJ10gPSAnUGx1Z2lucyc7CiRsYW5nWydwcmlvcml0eSddID0gJ1ByaW9yaXRldCc7CiRsYW5nWydwcm9maWxlX25hbWUnXSA9ICdQcm9maWwgbmF2bic7CiRsYW5nWydwcm9maWxlcyddID0gJ1Byb2ZpbGVyJzsKJGxhbmdbJ3Byb21wdF9wcm9maWxlcyddID0gJ1Byb2ZpbGVyJzsKJGxhbmdbJ3Byb21wdF9uYW1lJ10gPSAnTmF2bic7CiRsYW5nWydzdWJtaXQnXSA9ICdVdGbDuHInOwokbGFuZ1sndGFiX2dlbmVyYWxfdGl0bGUnXSA9ICdHZW5lcmVsdCc7CiRsYW5nWyd0YWJfYWR2YW5jZWRfdGl0bGUnXSA9ICdBdmFuc2VydCc7CiRsYW5nWyd0eXBlX1RpbnlNQ0UnXSA9ICdUaW55TUNFJzsKJGxhbmdbJ3VzZXJncm91cHMnXSA9ICdCcnVrZXIgZ3J1cHBlcic7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/nl_NL.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2FkbWluZGVzY3JpcHRpb24nXSA9ICdNZXQgZGV6ZSBtb2R1bGUga3VudCB1IGRvb3IgbWlkZGVsIHZhbiBlZW4gV1lTSVdZRyBlZGl0b3IgcGFnaW5hIGluaG91ZCwgbWFhciBtb2dlbGlqayBvb2sgYW5kZXJlIHZvcm1lbiB2YW4gZGF0YSB2ZXJ3ZXJrZW4uIE1ldCBkYW5rIGFhbiBoZXQgVGlueU1DRSBwcm9qZWN0Lic7CiRsYW5nWydhZHZhbmNlZF9tZW51J10gPSAnR2VhdmFuY2VlcmQgTWVudSc7CiRsYW5nWydhcHBseSddID0gJ1RvZXBhc3Nlbic7CiRsYW5nWydhdXRvcmVzaXplJ10gPSAnQXV0b21hdGlzY2ggdmVyc2NoYWxlbic7CiRsYW5nWydibG9ja19mb3JtYXRzJ10gPSAnQmVzY2hpa2JhcmUgZm9ybWF0ZW4nOwokbGFuZ1snYnV0dG9uX25hbWUnXSA9ICdUb2V0cyBOYWFtJzsKJGxhbmdbJ2NhbmNlbCddID0gJ0FubnVsZWVyJzsKJGxhbmdbJ2Ntc21zX2xpbmtlciddID0gJ1ZlcndpanppbmcgbmFhciBwYWdpbmEnOwokbGFuZ1snY29weSddID0gJ2tvcGllZXInOwokbGFuZ1snY29weV9wcm9maWxlJ10gPSAnS29waWVlciBQcm9maWVsJzsKJGxhbmdbJ2Nzc19jbGFzc2VzJ10gPSAnQ1NTIENsYXNzZXMnOwokbGFuZ1snZGVmYXVsdCddID0gJ1N0YW5kYWFyZCc7CiRsYW5nWydkZWxldGVfcHJvZmlsZSddID0gJ1Byb2ZpZWwgVmVyd2lqZGVyZW4nOwokbGFuZ1snZG9jdW1lbnRhdGlvbiddID0gJ0RvY3VtZW50YXRpZSc7CiRsYW5nWydlZGl0X3Byb2ZpbGUnXSA9ICdQcm9maWVsIEFhbnBhc3Nlbic7CiRsYW5nWydleHRlcm5hbF9tb2R1bGVzJ10gPSAnRXh0ZXJuZSBNb2R1bGVzJzsKJGxhbmdbJ2ZpbGVtYW5hZ2VyJ10gPSAnQmVzdGFuZHNiZWhlZXInOwokbGFuZ1snZmlsZW1hbmFnZXJfYXZpYXJ5X2FjdGl2ZSddID0gJ0F2aWFyeSBmb3RvIGVkaXRvciBpbnNjaGFrZWxlbic7CiRsYW5nWydmaWxlbWFuYWdlcl9hdmlhcnlfYXBpS2V5J10gPSAnQXZpYXJ5IEFQSSBzbGV1dGVsJzsKJGxhbmdbJ2ZpbGVtYW5hZ2VyX2NobW9kX2RpcnMnXSA9ICdDSE1PRCBtYXBwZW4nOwokbGFuZ1snZmlsZW1hbmFnZXJfY2htb2RfZmlsZXMnXSA9ICdDSE1PRCBiZXN0YW5kZW4nOwokbGFuZ1snZmlsZW1hbmFnZXJfY29weV9jdXRfZGlycyddID0gJ0tvcGllZXIgZW4ga25pcCBtYXBwZW4nOwokbGFuZ1snZmlsZW1hbmFnZXJfY29weV9jdXRfZmlsZXMnXSA9ICdLb3BpZWVyIGVuIGtuaXAgYmVzdGFuZGVuJzsKJGxhbmdbJ2ZpbGVtYW5hZ2VyX2NyZWF0ZV9mb2xkZXJzJ10gPSAnRm9sZGVycyBhYW5tYWtlbic7CiRsYW5nWydmaWxlbWFuYWdlcl9jcmVhdGVfdGV4dF9maWxlcyddID0gJ1Rla3N0YmVzdGFuZGVuIGFhbm1ha2VuJzsKJGxhbmdbJ2ZpbGVtYW5hZ2VyX2RlbGV0ZV9maWxlcyddID0gJ1ZlcndpamRlciBiZXN0YW5kZW4nOwokbGFuZ1snZmlsZW1hbmFnZXJfZGVsZXRlX2ZvbGRlcnMnXSA9ICdWZXJ3aWpkZXIgbWFwcGVuJzsKJGxhbmdbJ2ZpbGVtYW5hZ2VyX2R1cGxpY2F0ZV9maWxlcyddID0gJ0R1cGxpY2VlciBiZXN0YW5kZW4nOwokbGFuZ1snZmlsZW1hbmFnZXJfZWRpdF90ZXh0X2ZpbGVzJ10gPSAnV2lqemlnIHRla3N0YmVzdGFuZGVuJzsKJGxhbmdbJ2ZpbGVtYW5hZ2VyX2ltYWdlX3Jlc2l6aW5nJ10gPSAnQXV0b21hdGlzY2ggdmVyc2NoYWxlbiB2YW4gYWZiZWVsZGluZ2VuIG5hIGhldCB1cGxvYWRlbic7CiRsYW5nWydmaWxlbWFuYWdlcl9pbWFnZV9yZXNpemluZ190aXRsZSddID0gJ0F1dG9tYXRpc2NoZSBhZmJlZWxkaW5nIHZlcnNjaGFsaW5nJzsKJGxhbmdbJ2ZpbGVtYW5hZ2VyX2ltYWdlX3Jlc2l6aW5nX2hlaWdodCddID0gJ01heGltYWxlIGFmYmVlbGRpbmcgaG9vZ3RlIG5hIHZlcnNjaGFsaW5nJzsKJGxhbmdbJ2ZpbGVtYW5hZ2VyX2ltYWdlX3Jlc2l6aW5nX3dpZHRoJ10gPSAnTWF4aW1hbGUgYWZiZWVsZGluZyBicmVlZHRlIG5hIHZlcnNjaGFsaW5nJzsKJGxhbmdbJ2ZpbGVtYW5hZ2VyX3Bob3RvX2VkaXRvciddID0gJ0F2aWFyeSBmb3RvIGVkaXRvcic7CiRsYW5nWydmaWxlbWFuYWdlcl9wcmV2aWV3X3RleHRfZmlsZXMnXSA9ICdQcmV2aWV3IHRla3N0YmVzdGFuZGVuJzsKJGxhbmdbJ2ZpbGVtYW5hZ2VyX3JlbmFtZV9maWxlcyddID0gJ0Jlc3RhbmRlbiBlZW4gYW5kZXJlIG5hYW0gZ2V2ZW4nOwokbGFuZ1snZmlsZW1hbmFnZXJfcmVuYW1lX2ZvbGRlcnMnXSA9ICdNYXBwZW4gZWVuIGFuZGVyZSBuYWFtIGdldmVuJzsKJGxhbmdbJ2ZpbGVtYW5hZ2VyX3VwbG9hZF9maWxlcyddID0gJ0Jlc3RhbmRlbiB1cGxvYWRlbic7CiRsYW5nWydmaWxlbWFuYWdlcl9vcHRpb25zJ10gPSAnQmVzdGFuZHNiZWhlZXIgb3B0aWVzJzsKJGxhbmdbJ2ZpbGVtYW5hZ2VyX3VzZSddID0gJ0Jlc3RhbmRzYmVoZWVyIGluc2NoYWtlbGVuJzsKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1RpbnlNQ0UgV1lTSVdZRyBFZGl0b3InOwokbGFuZ1snZm9yY2VkX3Jvb3RfYmxvY2snXSA9ICdGb3JjZWVyIFBhcmFncmFhZiBiaWogZWVuIHJlZ2VsZWluZGUnOwokbGFuZ1snZ2VuZXJhbCddID0gJ0FsZ2VtZWVuJzsKJGxhbmdbJ2dsb2JhbF9zZXR0aW5ncyddID0gJ0FsZ2VtZW5lIGluc3RlbGxpbmdlbic7CiRsYW5nWydncm91cF9mcm9udGVuZCddID0gJ0Zyb250ZW5kIGdlYnJ1aWtlcnMnOwokbGFuZ1snaWQnXSA9ICdJZCc7CiRsYW5nWydpbWFnZV9jbGFzc2VzJ10gPSAnQ1NTIGNsYXNzZW4gZGllIGdlYnJ1aWt0IGt1bm5lbiB3b3JkZW4gdm9vciBhZmJlZWxkaW5nZW4nOwokbGFuZ1snaW1hZ2VfY2xhc3Nlc19pbmZvJ10gPSAnRWVuIGNsYXNzIHBlciByZWdlbCwgYmlqdm9vcmJlZWxkOiA8Y29kZT48ZW0+T21saWpuZGUgYWZiZWVsZGluZz1ib3JkZXJlZCBib3JkZXItcm91bmQ8L2VtPjwvY29kZT4nOwokbGFuZ1snaW5zdGFsbF9wcm9maWxlX2FkbWluJ10gPSAnQmVoZWVyZGVycyc7CiRsYW5nWydpbnN0YWxsX3Byb2ZpbGVfYWR2YW5jZWQnXSA9ICdHZWF2YW5jZWVyZCc7CiRsYW5nWydpbnN0YWxsX3Byb2ZpbGVfbWluaW1hbCddID0gJ01pbmltYWFsJzsKJGxhbmdbJ2luc3RhbGxfcHJvZmlsZV9zdGFuZGFyZCddID0gJ1N0YW5kYWFyZCc7CiRsYW5nWydqc190ZW1wbGF0ZSddID0gJ0phdmFTY3JpcHQgU2phYmxvb24nOwokbGFuZ1snbGlua19jbGFzc2VzJ10gPSAnQ1NTIGNsYXNzZW4gZGllIGdlYnJ1aWt0IGt1bm5lbiB3b3JkZW4gdm9vciBsaW5rcyc7CiRsYW5nWydsaW5rX2NsYXNzZXNfaW5mbyddID0gJ0VlbiBjbGFzcyBwZXIgcmVnZWwsIGJpanZvb3JiZWVsZDogPGNvZGU+PGVtPkJsYXV3ZSBrbm9wPWJ0biBidG4tYmx1ZTwvZW0+PC9jb2RlPic7CiRsYW5nWydsb2FkaW5nX2luZm8nXSA9ICdMYWRlbi4uLic7CiRsYW5nWydtZW51YmFyJ10gPSAnTWVudWJhbGsnOwokbGFuZ1snbmFtZSddID0gJ05hYW0nOwokbGFuZ1snbmV3X3Byb2ZpbGUnXSA9ICdFZW4gbmlldXcgcHJvZmllbCBhYW5tYWtlbic7CiRsYW5nWyduZXd3aW5kb3cnXSA9ICdOaWV1dyBzY2hlcm0nOwokbGFuZ1snbm9fZGVzaWduX2xpbmtlZCddID0gJ0dlZW4gZGVzaWduJzsKJGxhbmdbJ25vbmUnXSA9ICdHZWVuJzsKJGxhbmdbJ29yaWdfanNfdGVtcGxhdGVfZmlsZSddID0gJ09yaWdpbmVsZSBzamFibG9vbiB2YW4gZGV6ZSBtb2R1bGUnOwokbGFuZ1sncGx1Z2lucyddID0gJ1BsdWctaW5zJzsKJGxhbmdbJ3ByaW9yaXR5J10gPSAnUHJpb3JpdGVpdCc7CiRsYW5nWydwcm9maWxlX2NvcGllZCddID0gJ0hldCBwcm9maWVsIGlzIGdla29waWVlcmQnOwokbGFuZ1sncHJvZmlsZV9kZWxldGVkJ10gPSAnSGV0IHByb2ZpZWwgaXMgdmVyd2lqZGVyZCc7CiRsYW5nWydwcm9maWxlX25hbWUnXSA9ICdQcm9maWVsbmFhbSc7CiRsYW5nWydwcm9maWxlX3NhdmVkJ10gPSAnUHJvZmllbCBvcGdlc2xhZ2VuJzsKJGxhbmdbJ3Byb2ZpbGVzJ10gPSAnUHJvZmllbGVuJzsKJGxhbmdbJ3Byb21wdF9saW5rZXInXSA9ICdWb29yIGVlbiBwYWdpbmF0aXRlbCBpbic7CiRsYW5nWydwcm9tcHRfcHJvZmlsZXMnXSA9ICdQcm9maWVsZW4nOwokbGFuZ1sncHJvbXB0X3NlbGVjdGVkYWxpYXMnXSA9ICdTZWxlY3RlZXIgZWVuIHBhZ2luYSBhbGlhcyc7CiRsYW5nWydwcm9tcHRfbmFtZSddID0gJ05hYW0nOwokbGFuZ1sncHJvbXB0X3RhcmdldCddID0gJ0RvZWwnOwokbGFuZ1sncHJvbXB0X2NsYXNzJ10gPSAnQ2xhc3MgYXR0cmlidXV0JzsKJGxhbmdbJ3Byb21wdF9yZWwnXSA9ICdSZWwgYXR0cmlidXV0JzsKJGxhbmdbJ3Byb21wdF90ZXh0dG9kaXNwbGF5J10gPSAnVGUgdG9uZW4gdGVrc3QnOwokbGFuZ1sncmVzaXplJ10gPSAnVmVyc2NoYWxlbic7CiRsYW5nWydyZXNpemVfbm8nXSA9ICdWZXJzY2hhbGVuIG5pZXQgdG9lc3RhYW4nOwokbGFuZ1sncmVzaXplX3ZlcnRpY2FsJ10gPSAnVmVydGljYWxlIHZlcnNjaGFsaW5nIHRvZXN0YWFuJzsKJGxhbmdbJ3Jlc2l6ZV9ib3RoJ10gPSAnSG9yaXpvbnRhbGUgZW4gdmVydGljYWxlIHZlcnNjaGFsaW5nIHRvZXN0YWFuJzsKJGxhbmdbJ3Nob3dfbWVudWJhciddID0gJ1Rvb24gbWVudWJhbGsnOwokbGFuZ1snc2hvd19zdGF0dXNiYXInXSA9ICdUb29uIHN0YXR1c2JhbGsnOwokbGFuZ1snc2hvd190b29sYmFyJ10gPSAnVG9vbiBnZXJlZWRzY2hhcHBlbmJhbGsnOwokbGFuZ1snc3R5bGVfZm9ybWF0cyddID0gJ1N0aWpsIGZvcm1hdGVuJzsKJGxhbmdbJ3N1Ym1pdCddID0gJ1ZlcnN0dXJlbic7CiRsYW5nWyd0YWJfZ2VuZXJhbF90aXRsZSddID0gJ0FsZ2VtZWVuJzsKJGxhbmdbJ3RhYl9hZHZhbmNlZF90aXRsZSddID0gJ0dlYXZhbmNlZXJkJzsKJGxhbmdbJ3RlbXBsYXRlJ10gPSAnU2phYmxvb24nOwokbGFuZ1sndGVtcGxhdGVzJ10gPSAnU2phYmxvbmVuJzsKJGxhbmdbJ3RpdGxlX2Ntc21zX2xpbmtlciddID0gJ01hYWsgZWVuIHZlcndpanppbmcgbmFhciBlZW4gcGFnaW5hJzsKJGxhbmdbJ3Rvb2xiYXInXSA9ICdHZXJlZWRzY2hhcHBlbmJhbGsnOwokbGFuZ1sndG9vbGJhcjEnXSA9ICcxZSByZWdlbCc7CiRsYW5nWyd0b29sYmFyMiddID0gJzJlIHJlZ2VsJzsKJGxhbmdbJ3Rvb2x0aXBfc2VsZWN0ZWRhbGlhcyddID0gJ0RpdCB2ZWxkIGthbiBuaWV0IGdld2lqemlnZCB3b3JkZW4nOwokbGFuZ1sndHlwZV91c2VydGVtcGxhdGUnXSA9ICdUaW55TUNFIGdlYnJ1aWtlciBzamFibG9uZW4nOwokbGFuZ1sndXNlX2FkdmFuY2VkX21lbnUnXSA9ICdHZWJydWlrIGVlbiBnZWF2YW5jZWVyZCBtZW51JzsKJGxhbmdbJ3VzZXJncm91cHMnXSA9ICdHZWJydWlrZXJzZ3JvZXBlbic7CiRsYW5nWydnYSddID0gJ0dBMS4yLjIyOTMyNzgzNi4xNDM1Mzk5MzMzJzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/pl_PL.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1RpbnlNQ0UgV1lTSVdZRyBQb2RzdGF3b3d5IChCYXNpYyknOwokbGFuZ1snYWRtaW5kZXNjcmlwdGlvbiddID0gJ1RlbiBtb2R1xYIgcG96d2FsYSwgxbxlYnkgZ8WCJm9hY3V0ZTt3bmllIHRyZcWbY2ksIGFsZSByJm9hY3V0ZTt3bmllxbwgaW5uZSByb2R6YWplIGRhbnljaCAoYmxvayZvYWN1dGU7dyBkYW55Y2gpIC0gYnnFgnkgZWR5dG93YWxuZSBwcnpleiBhcGxpa2FjasSZIFdZU0lXWUcsIGVkeXRvciBkbyDFgmF0d2VnbyB3cGlzeXdhbmlhIC0gcHJvamVrdHUgVGlueU1DRS4nOwokbGFuZ1sndW5pbnN0YWxsZWQnXSA9ICdNb2R1xYIgb2RpbnN0YWxvd2FueSc7CiRsYW5nWydpbnN0YWxsZWQnXSA9ICdXZXJzamEgJXMgbW9kdcWCdSB6YWluc3RhbG93YW5hLic7CiRsYW5nWydzdHJpcGJhY2tncm91bmR0YWdzJ10gPSAnT2N6ecWbxIcgQ1NTIHplIHpuYWN6bmlrJm9hY3V0ZTt3IHTFgmEuJzsKJGxhbmdbJ3N0aXB0YWdzX2hlbHAnXSA9ICdUYSBvcGNqYSBwciZvYWN1dGU7YnVqZSB1c3VuxIXEhyB1c3Rhd2llbmlhIHTFgmEgKGJhY2tncm91bmQpIHogYXJrdXN6YSBzdHlsdSc7CiRsYW5nWydzb3VyY2VfZm9ybWF0dGluZ190ZXh0J10gPSAnWmFzdG9zdWogZm9ybWF0b3dhbmllIGtvZHUgxbpyJm9hY3V0ZTtkxYJvd2VnbyBIVE1MJzsKJGxhbmdbJ2Ryb3Bkb3duYmxvY2tmb3JtYXRzX3RleHQnXSA9ICdGb3JtYXR5IGJsb2tvd2UgdyByb3p3aWphbnltIG1lbnUnOwokbGFuZ1snYWxsb3d0YWJsZXMnXSA9ICdQb3p3Jm9hY3V0ZTtsIG5hIG9wZXJhY2plIG5hIHRhYmVsa2FjaCc7CiRsYW5nWyduZXdsaW5lc3R5bGVfdGV4dCddID0gJ1N0eWwgbm93ZWotbGluaWknOwokbGFuZ1sncHN0eWxlJ10gPSAnU3R5bCBha2FwaXR1IChwKSc7CiRsYW5nWydicnN0eWxlJ10gPSAnU3R5bCBsaW5paSAoYnIpJzsKJGxhbmdbJ3VzZWNvbXByZXNzaW9udGV4dCddID0gJ1XFvHl3YWoga29tcHJlc2ppIGd6JzsKJGxhbmdbJ3VzZWNvbXByZXNzaW9uaGVscCddID0gJ1RvIG1vxbxlIHByenlzcGllc3p5xIcgxYJhZG93YW5pZSBzacSZIFRpbnlNQ0UsIGFsZSByJm9hY3V0ZTt3bmllxbwgbW/FvGUgc3Bvd29kb3dhxIcsIMW8ZSBuYSBuaWVrdCZvYWN1dGU7cnljaCBzeXN0ZW1hY2ggVGlueU1DRSBuaWUgYsSZZHppZSBzacSZIMWCYWRvd2HFgiB3IG9nJm9hY3V0ZTtsZS4gVcW8eXdhaiB6IHV3YWfEhSBpIHVwZXduaWogc2nEmSwgxbzEmSBrb21wcmVzamEgZ3ogamVzdCB3xYLEhWN6b25hLic7CiRsYW5nWydmb3JjZWRyb290YmxvY2t0ZXh0J10gPSAnV3ltdcWbIGJsb2tpIHR5cHUgLXAtICh6bmFjem5payBwYXJhZ3JhZnUpJzsKJGxhbmdbJ2ZvcmNlZHJvb3RibG9ja2hlbHAnXSA9ICdXeW11c3phIHdwcm93YWR6b27EhSB0cmXFm8SHLCDFvGVieSBiecWCYSB6YW1rbmnEmXRhIGNvIG5ham1uaWVqIHcgem5hY3puaWt1IGFrYXBpdHUgLXAtJzsKJGxhbmdbJ2ZpbGVwaWNrZXJzdHlsZSddID0gJ1N0eWwgb2tuYSB6IHd5Ym9yZW0gcGxpayZvYWN1dGU7dyc7CiRsYW5nWydmaWxlcGlja2Vyc2l6ZSddID0gJ1Jvem1pYXIgb2tuYSB6IHd5Ym9yZW0gcGxpayZvYWN1dGU7dyc7CiRsYW5nWydhbGxvd3VwbG9hZHRleHQnXSA9ICdQb3p3Jm9hY3V0ZTtsIG5hIHdncnl3YW5pZSBwbGlrJm9hY3V0ZTt3IGkgdHdvcnplbmllIGthdGFsb2cmb2FjdXRlO3cgdyBGaWxlUGlja2VyIChva2llbmt1IHd5Ym9ydSBwbGlrJm9hY3V0ZTt3KSc7CiRsYW5nWydhbGxvd3NjYWxpbmd0ZXh0J10gPSAnUG96dyZvYWN1dGU7bCBuYSB6bWlhbsSZIHcgbG9jaWUgcm96bWlhciZvYWN1dGU7dyB3Y3p5dHl3YW55Y2ggb2JyYXomb2FjdXRlO3cnOwokbGFuZ1snc2NhbGluZ2RpbWVuc2lvbnN0ZXh0J10gPSAnRG9tecWbbG5lIHd5bWlhcnknOwokbGFuZ1sncmVzaXpldG8nXSA9ICdQcnplc2thbHVqIGRvOic7CiRsYW5nWydtYWtldGh1bWJuYWlsJ10gPSAnVHcmb2FjdXRlO3J6IG1pbmlhdHVyxJkgdyBjemFzaWUgd2N6eXR5d2FuaWEgb2JyYXprYSc7CiRsYW5nWyd1c2VhZHZhbmNlZHByb2ZpbGUnXSA9ICdVxbx5aiB6YWF3YW5zb3dhbmVnbyBwcm9maWx1IFRpbnlNQ0UnOwokbGFuZ1snc2F2ZXByb2ZpbGUnXSA9ICdaYXBpc3ogcHJvZmlsJzsKJGxhbmdbJ3Byb2ZpbGVzYXZlZCddID0gJ1Byb2ZpbCB6b3N0YcWCIHphcGlzYW55JzsKJGxhbmdbJ3Byb2ZpbGVzX3RhYiddID0gJ1Byb2ZpbCc7CiRsYW5nWydhZHZhbmNlZF9iYWNrZW5kX3Rvb2xiYXJzJ10gPSAnWmFhd2Fuc293YW5lIHVzdGF3aWVuaWEgcHJvZmlsdSB1xbx5dGtvd25pa2EgJnF1b3Q7YmFja2VuZCZxdW90Oyc7CiRsYW5nWydzYXZlc3R5bGVzJ10gPSAnWmFwaXN6IHN0eWxlJzsKJGxhbmdbJ2FsbG93YWR2YW5jZWRwcm9maWxlJ10gPSAnUG96dyZvYWN1dGU7bCBuYSB1xbx5d2FuaWUgemFhd2Fuc293YW5lZ28gcHJvZmlsdSB3IFRpbnlNQ0UnOwokbGFuZ1snc2hvd2ZpbGVtYW5hZ2VtZW50J10gPSAnUG9rYcW8IG9wY2plIHphcnrEhWR6YW5pYSBwbGlrYW1pJzsKJGxhbmdbJ3Nob3dmaWxlbWFuYWdlbWVudGhlbHAnXSA9ICdQb2thxbwgb3BjamUgemFyesSFZHphbmlhIHBsaWthbWkgdGFraWUgamFrIHdjenl0eXdhbmllLCB0d29yemVuaWUga2F0YWxvZyZvYWN1dGU7dyBpIGthc293YW5pZSBwbGlrJm9hY3V0ZTt3IHcgb2tuaWUgRmlsZVBpY2tlciwgamXFm2xpIHXFvHl0a293bmlrIG1hIHVwcmF3bmllbmlhIGRvIGljaCB3eWtvbnl3YW5pYS4nOwokbGFuZ1sncmVzdHJpY3RkaXJzJ10gPSAnT2dyYW5pY3ogdcW8eXRrb3duaWtvd2kgZG9zdMSZcCBkbyBrYXRhbG9nJm9hY3V0ZTt3JzsKJGxhbmdbJ3Jlc3RyaWN0ZGlyc2hlbHAnXSA9ICdUaGlzIHdpbGwgcmVzdHJpY3QgdGhlIGZpbGVtYW5hZ2VtZW50LWNhcGFiaWxpdGllcyBvZiB0aGUgdXNlciB0byBhIHN1YmRpciB0byAmIzAzOTt1cGxvYWRzJiMwMzk7IHdoaWNoIGhhdmUgdGhlIHNhbWUgbmFtZSBhcyB0aGUgdXNlciYjMDM5O3MgbG9naW4uIElmIHRoZSBzdWJkaXIgZG9lcyBub3QgZXhpc3QsIGl0IHdpbGwgcG9zc2libHkgYmUgY3JlYXRlZC4gUGxlYXNlIG5vdGUsIHRoaXMgY3VycmVudGx5IG9ubHkgd29ya3Mgd2l0aCB0aGUgc3RhbmRhcmQgZGlybmFtZXMsIHVwbG9hZHMvaW1hZ2VzLiBUaGlzIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4nOwokbGFuZ1snZGVsZXRlY29uZmlybWF0aW9uJ10gPSAnSmVzdGXFmyBwZXdpZW4sIMW8ZSBwbGlrIHBvd2luaWVuIGJ5xIcgc2thc293YW55Pyc7CiRsYW5nWydkZWxldGVmaWxlc3VjY2VzcyddID0gJ3pvc3RhxYIgcG9tecWbbG5pZSB1c3VuacSZdHknOwokbGFuZ1snZGVsZXRlZmlsZWZhaWxlZCddID0gJ25pZSBtb8W8ZSBiecSHIHVzdW5pxJl0eSc7CiRsYW5nWydkZWxldGVzdWJkaXJmYWlsZWQnXSA9ICduaWUgbW/FvGUgYnnEhyB1c3VuacSZdHknOwokbGFuZ1snZGVsZXRlc3ViZGlyc3VjY2VzcyddID0gJ3pvc3RhxYIgcG9tecWbbG5pZSB1c3VuacSZdHknOwokbGFuZ1snZGVsZXRlZGlyY29uZmlybWF0aW9uJ10gPSAnQ3p5IG5hIHBld25vIHRlbiBwdXN0eSBwb2RrYXRhbG9nIHBvd2luaWVuIHpvc3RhxIcgc2thc293YW55Pyc7CiRsYW5nWydkZWxldGVkaXInXSA9ICdTa2FzdWogcHVzdHkgcG9ka2F0YWxvZyc7CiRsYW5nWydkZWxldGVmaWxlJ10gPSAnU2thc3VqIHBsaWsnOwokbGFuZ1snY2Fubm90cmVhZGNvbmZpZyddID0gJ0Nhbm5vdCByZWFkIHRoZSBmaWxlIHRpbnljb25maWcucGhwIGRpcmVjdGx5IHNvIFRpbnlNQ0Ugd2lsbCBwcm9iYWJseSBub3Qgd29yay4gWW91IHNob3VsZCBjaGVjayB0aGUgcGVybWlzc2lvbnMgb2YgdGhlIGZpbGUgYW5kIG9mIHRoZSBwYXJlbnQgZGlycywgd2hpY2ggc2hvdWxkIGJlIHJlYWRhYmxlIGZvciBhbGwgYnV0IG9ubHkgd3JpdGFibGUgZm9yIG93bmVyLic7CiRsYW5nWydmaWxlbmFtZW9ubHknXSA9ICdQb2thxbwgbmF6d3kgcGxpayZvYWN1dGU7dyc7CiRsYW5nWyd0aHVtYm5haWxzb25seSddID0gJ1Bva2HFvCBtaW5pYXR1cmtpJzsKJGxhbmdbJ3Nob3d0aHVtYm5haWxmaWxlc3RleHQnXSA9ICdQb2thxbwgcGxpa2kgbWluaWF0dXJlayB3IGxpxZtjaWUgcGxpayZvYWN1dGU7dyc7CiRsYW5nWydmaWxlbmFtZWFuZHRodW1ibmFpbHMnXSA9ICdQb2thxbwgemFyJm9hY3V0ZTt3bm8gcGxpa2ksIGphayBpIHBsaWtpIG1pbmlhdHVyZWsnOwokbGFuZ1snc2tpbnN0ZXh0J10gPSAnU2smb2FjdXRlO3JrYSc7CiRsYW5nWydza2ludmFyaWF0aW9udGV4dCddID0gJ1dhcmlhbnQgc2smb2FjdXRlO3JraSc7CiRsYW5nWydhZHZhbmNlZHdhcm5pbmcnXSA9ICc8c3Ryb25nPlBsZWFzZSBub3RlITxici8+Q2hhbmdpbmcgdGhlc2Ugc2V0dGluZ3MgY2FuIGNhdXNlIFRpbnlNQ0UgdG8gc3RvcCB3b3JraW5nIG9yIHRoZSBnZW5lcmF0ZWQgY29kZSB0byBiZSB3cm9uZyBpbiBzb21lIHdheS4gT25seSBlZGl0IHRoaXMgaWYgeW91IGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nISBQbGVhc2UgY29uc3VsdCB0aGUgVGlueU1DRSB3ZWJzaXRlIGJlZm9yZSBwbGF5aW5nIHdpdGggdGhpcy48L3N0cm9uZz4nOwokbGFuZ1snZW50aXR5ZW5jb2RpbmdfdGV4dCddID0gJ0tvZG93YW5pZSBlbmNqaSc7CiRsYW5nWydyYXdlbmNvZGluZyddID0gJ0tvZG93YW5pZSBwb2RzdGF3b3dlIChuYWpzenlic3plIHcgd2nEmWtzem/Fm2NpIHByenlwYWRrJm9hY3V0ZTt3KSc7CiRsYW5nWyduYW1lZGVuY29kaW5nJ10gPSAnS29kb3dhbmllIHpuYWsmb2FjdXRlO3cgbmF6d2FtaSAobnAuICZuYnNwOyknOwokbGFuZ1snbnVtZXJpY2VuY29kaW5nJ10gPSAnS29kb3dhbmllIHpuYWsmb2FjdXRlO3cgc3ltYm9sYW1pIG51bWVyeWN6bnltaSAobnAuICZhbXA7IzE2MDspJzsKJGxhbmdbJ3Nob3dfcGF0aF90ZXh0J10gPSAnUG9rYXp1aiDFm2NpZcW8a8SZIGRvIGRhbmVnbyBlbGVtZW50dSBuYSBkb2xlIGVkeXRvcmEuJzsKJGxhbmdbJ3Rvb2xiYXJfdGFiJ10gPSAnUGFzZWsgbmFyesSZZHppJzsKJGxhbmdbJ3Rvb2xiYXJfaGVscCddID0gJ1RlIHBvbGEgcG93aW5ueSB6YXdpZXJhxIcgbGlzdMSZIG5hencgcHJ6eWNpc2smb2FjdXRlO3cva29udHJvbGVrIG9kZHppZWxvbnljaCBtacSZZHp5IHNvYsSFIHByemVjaW5rYW1pLCBrdCZvYWN1dGU7cmUgbWFqxIUgYnnEhyB3xYLEhWN6b25lIHcgZWR5dG9yemUuJzsKJGxhbmdbJ3Rvb2xiYXJfdGV4dCddID0gJ1Bhc2VrIG5hcnrEmWR6aSc7CiRsYW5nWyd0b29sYmFyaGVscHRleHQnXSA9ICdDbGljayBoZXJlIHRvIHZpZXcgdG9vbGJhci1pbnN0cnVjdGlvbnMgaW4gVGlueU1DRS13aWtpLic7CiRsYW5nWydlZGl0b3Jfd2lkdGhfdGV4dCddID0gJ1N6ZXJva2/Fm8SHIHBvbGEgZWR5Y2ppJzsKJGxhbmdbJ2VkaXRvcl9oZWlnaHRfdGV4dCddID0gJ1d5c29rb8WbxIcgcG9sYSBlZHljamknOwokbGFuZ1snYXV0byddID0gJ0F1dG8nOwokbGFuZ1snb3InXSA9ICdsdWInOwokbGFuZ1sndGVzdGFyZWFfdGFiJ10gPSAnxZpyb2Rvd2lza28gdGVzdG93ZSc7CiRsYW5nWydzaG93dGVzdGluZ291dHB1dCddID0gJ1Bva2HFvCBrb2Qgd3lqxZtjaW93eSB0ZXN0b3dlZ28gxZtyb2Rvd2lza2EnOwokbGFuZ1sndGVzdGFyZWFlZGl0b3InXSA9ICdFZHl0b3IgdyDFm3JvZG93aXNrdSB0ZXN0b3d5bSc7CiRsYW5nWyd0ZXN0YXJlYW91dHB1dCddID0gJ1Rlc3RpbmcgYXJlYSBvdXRwdXQnOwokbGFuZ1sndGVzdGFyZWFvdXRwdXRzb3VyY2UnXSA9ICdUZXN0aW5nIGFyZWEgc291cmNlJzsKJGxhbmdbJ2FsbG93cmVzaXppbmcnXSA9ICdBbGxvdyBpbnBsYWNlIHJlc2l6aW5nIG9mIGVkaXRvciBmaWVsZCc7CiRsYW5nWydyZXNpemVub25lJ10gPSAnRG8gbm90IGFsbG93IHJlc2l6aW5nJzsKJGxhbmdbJ3Jlc2l6ZWJvdGgnXSA9ICdBbGxvdyByZXNpemluZyBpbiBib3RoIGRpcmVjdGlvbnMnOwokbGFuZ1sncmVzaXplaGVpZ2h0J10gPSAnQWxsb3cgcmVzaXppbmcgb2YgaGVpZ2h0IG9ubHknOwokbGFuZ1snZGF0ZXRpbWVmb3JtYXRfdGV4dCddID0gJ0Zvcm1hdCBkYXR5L2N6YXN1JzsKJGxhbmdbJ3RpbWV0ZXh0J10gPSAnQ3phcyc7CiRsYW5nWydkYXRldGV4dCddID0gJ0RhdGEnOwokbGFuZ1snZGF0ZXRpbWVmb3JtYXRfaGVscCddID0gJ0NsaWNrIGhlcmUgZm9yIGhlbHAgb24gaG93IHRvIGZvcm1hdCB0aGUgZGF0ZS90aW1lJzsKJGxhbmdbJ2V4dHJhY29uZmlndGV4dCddID0gJ0RvZGF0a293YSBrb25maWd1cmFjamEnOwokbGFuZ1snZXh0cmFjb25maWdoZWxwMiddID0gJ09uZSBzdGF0ZW1lbnQgcGVyIGxpbmUsIGNvbW1hcyB3aWxsIGJlIGFkZGVkIGJlZm9yZSBhbmQgYWZ0ZXIgdGhpcyBjb250ZW50LiBDaGVjayBUaW55TUNFLXdpa2kgZm9yIGluc3RydWN0aW9ucy4nOwokbGFuZ1snY3VzdG9tZHJvcGRvd250ZXh0J10gPSAnQ3VzdG9tIGRyb3Bkb3duJzsKJGxhbmdbJ2N1c3RvbWRyb3Bkb3duaGVscCddID0gJ0luc2VydHMgY3VzdG9taXphYmxlIHNuaXBwZXRzIG9mIGNvZGUvdGV4dCBieSBzZWxlY3Rpb24gaW4gYSBkcm9wZG93biBtZW51LiAKT2J2aW91cyB1c2VzIGFyZSBlYXN5IGFjY2VzcyB0byB0YWcmIzAzOTtzIGV0Yy4gVGhlIG1lbnUgaXMgaW5zZXJ0ZWQgaW50byB0b29sYmFyIHVzaW5nICYjMDM5O2N1c3RvbWRyb3Bkb3duJiMwMzk7Lic7CiRsYW5nWydzdGFydGVuYWJsZWR0ZXh0J10gPSAnU3RhcnR1cCBlbmFibGVkJzsKJGxhbmdbJ3N0YXJ0ZW5hYmxlZGhlbHAnXSA9ICdVbmNoZWNraW5nIHRoaXMgc3RhcnRzIHVwIFRpbnktZWRpdG9ycyBpbiBhIGRpc2FibGVkIHN0YXRlLiBTaG91bGQgYmUgdXNlZCB0b2dldGhlciB3aXRoIHRoZSB0b2dnbGUgYnV0dG9uLic7CiRsYW5nWydsb2FkY21zbGlua2VydGV4dCddID0gJ1phxYJhZHVqIENNUy1MaW5rZXJhJzsKJGxhbmdbJ2xvYWRjbXNsaW5rZXJoZWxwJ10gPSAnVG8gd3lnZW5lcnVqZSBrb2QgamF2YXNjcmlwdCwgcG90cnplYm55IGRvIHVha3R5d25pZW5pYSB3dHljemtpICYjMDM5O2Ntc2xpbmtlciYjMDM5OyB3IHBhc2t1IG5hcnrEmWR6aSc7CiRsYW5nWydjbXNsaW5rZXJzdHlsZXRleHQnXSA9ICdTdHlsIGxpbmsmb2FjdXRlO3cgYSYjMDM5O2xhIENNUy1saW5rZXInOwokbGFuZ1snY21zc2VsZmxpbmtzdHlsZSddID0gJ1N0eWwgbGluayZvYWN1dGU7dyB7Y21zX3NlbGZsaW5rfSc7CiRsYW5nWydhaHJlZnN0eWxlJ10gPSAnU3R5bCAmIzAzOTthIGhyZWYmIzAzOTsnOwokbGFuZ1snY21zbGlua2VyYWRkc3RleHQnXSA9ICdEb2RhdGtpIENNUy1saW5rZXInOwokbGFuZ1snY21zbGlua2VyYWRkc2hlbHAnXSA9ICdUbyBwb3p3YWxhIGRvZGF3YcSHIHJ6ZWN6eSBkbyB6bmFjem5pa2EgLWEgaHJlZi0gbHViIHtjbXNfc2VsZmxpbmt9LCBraWVkeSBnZW5lcnVqZSBzacSZIGtvZCB6IENNUy1saW5rZXJhLic7CiRsYW5nWydhdm9pZGxpbmtjb252ZXJzaW9udGV4dCddID0gJ0F2b2lkIGxpbmsgY29udmVyc2lvbic7CiRsYW5nWydhdm9pZGxpbmtjb252ZXJzaW9uaGVscCddID0gJ1R1cm5zIFRpbnlNQ0UmIzAzOTtzIGJ1aWx0aW4gbGluayBjb252ZXJzaW9uIGxvZ2ljIG9mZi4gTWFrZXMge3NtYXJ0eX0tdXNhZ2UgaW4gdXJscyBwb3NzaWJsZS4nOwokbGFuZ1sncmVsYXRpdmV1cmxzdGV4dCddID0gJ0dlbmVyYXRlIHJlbGF0aXZlIHVybHMnOwokbGFuZ1snZm9yY2VjbGVhbnBhc3RldGV4dCddID0gJ1d5bXVzemFqIGN6eXN6Y3plbmllIHByenkgd2tsZWphbml1IChwYXN0ZSknOwokbGFuZ1snZm9yY2VjbGVhbnBhc3RlaGVscCddID0gJ1RhIG9wY2phIHBvd2lubmEgYnnEhyB6YXpuYWN6b25hLCBieSB1c3VuxIXEhyBkeml3bmUgZm9ybWF0b3dhbmllIGkga29keSwgbnAuIHBvZGN6YXMgd2tsZWphbmlhIHogV29yZC1hIGl0cC4nOwokbGFuZ1snYm9keWNzc190ZXh0J10gPSAnQ1NTIHpuYWN6bmlrYSBib2R5JzsKJGxhbmdbJ2JvZHljc3NfaGVscCddID0gJ3Bvem9zdGF3IHRvIHBvbGUgcHVzdGUgbHViIHdwaXN6IERFRkFVTFQgYWJ5IHXFvHnEhyBhcmt1c3phIHN0eWxpIGJpZcW8xIVjZWogc3Ryb255JzsKJGxhbmdbJ2luY2x1ZGVvbmx5c2NyZWVuY3NzX3RleHQnXSA9ICdEb8WCxIVjeiBqZWR5bmllIGVrcmFub3dlIENTUyc7CiRsYW5nWydpbmNsdWRlb25seXNjcmVlbmNzc19oZWxwJ10gPSAnWmF6bmFjemFqxIVjIHRvLCB0eWxrbyBkb8WCxIVjem9uZSBzdHlsZSB6IHphem5hY3pveW0gdHlwZW0gbWVkaWE6IHNjcmVlbiBixJlkxIUgZG/FgsSFY3phbmUgZG8gc3R5bGksIGt0Jm9hY3V0ZTtyeW1pIHJvenBvcnrEhWR6YSBUaW55TUNFLic7CiRsYW5nWyd1c2VzdGF0aWNjb25maWd0ZXh0J10gPSAnVcW8eWogc3RhdHljem5lZ28gcGxpa3Uga29uZmlndXJhY3lqbmVnbyAoc3RhdGljIGNvbmZpZyknOwokbGFuZ1sndXNlc3RhdGljY29uZmlnaGVscCddID0gJ1RhIG9wY2phIG1vxbxlIHBvbSZvYWN1dGU7YyB3IHVydWNob21pZW5pdSBUaW55TUNFIG5hIHN5c3RlbWFjaCwgZ2R6aWUgb3Byb2dyYW1vd2FuaWUgaG9zdGluZ3UgZG9kYWplIHJ6ZWN6eSB0YWtpZSBqYWsgc3RhdHlzdHlraSBkbyB3c3p5c3RpY2ggc3Ryb24sIHptaWVuaWFqxIVjIGkgcHN1asSFYyBkeW5hbWljem5pZSB0d29yem9uZSBqYXZhc2NyaXB0b3dlIHBsaWtpIGtvbmZpZ3VyYWN5am5lLic7CiRsYW5nWyd1c2VzdGF0aWNjb25maWd3YXJuaW5nJ10gPSAnV2FybmluZyEgWW91IGhhdmUgdGhlIHN0YXRpYyBjb25maWctZmlsZSBvcHRpb24gZW5hYmxlZCBidXQgeW91ciAvdG1wLyBkaXIgaXMgbm90IHdyaXRhYmxlLiBUaGlzIHdpbGwgcHJldmVudCB0aGUgbW9kdWxlIGZyb20gc2F2aW5nIHRoZSBzdGF0aWMgY29uZmlnLWZpbGUgYW5kIHdpbGwgbW9zdCBwcm9iYWJseSByZW5kZXIgVGlueU1DRSBpbm9wZXJhdGlvbmFsLic7CiRsYW5nWydpZ25vcmVtb2RpZnlmaWxlc3RleHQnXSA9ICdaaWdub3J1aiB1cHJhd25pZW5pZSAmIzAzOTtNb2R5Zmlrb3dhbmllIFBsaWsmb2FjdXRlO3cmIzAzOTsgKCYjMDM5O01vZGlmeSBGaWxlcyYjMDM5OykgIGRsYSBkb2RhdGt1IEZpbGVQaWNrZXIgKHd5YmllcmFuaWEgcGxpayZvYWN1dGU7dykuJzsKJGxhbmdbJ2lnbm9yZW1vZGlmeWZpbGVzaGVscCddID0gJ1dhcm5pbmchIFRoaXMgYWxsb3dzIHNvbWUgZmlsZS1hbHRlcmluZyBvcGVyYXRpb25zIGV2ZW4gaWYgdGhlICYjMDM5O01vZGlmeSBGaWxlcyYjMDM5OyBwZXJtaXNzaW9uIGlzIG5vdCBzZXQgZm9yIHRoZSBjdXJyZW50IHVzZXJncm91cC4gVGhpcyBjYW4gZWZmZWN0aXZlbHkgYmUgdXNlZCB0b2dldGhlciB3aXRoIHRoZSBvcHRpb24gdG8gcmVzdHJpY3QgdXNlciYjMDM5O3MgZGlyZWN0b3J5IGFjY2Vzcy4nOwokbGFuZ1snc2hvd3RvZ2dsZWJ1dHRvbl90ZXh0J10gPSAnUG9rYcW8IGNoZWNrYm94IHByemXFgsSFY3phasSFY3kgdHJ5YiBXWVNJV0lHJzsKJGxhbmdbJ3RvZ2dsZXd5c2l3eWcnXSA9ICdQcnplxYLEhWN6IHRyeWIgV1lTSVdZRyc7CiRsYW5nWydzdHlsZXNfdGFiJ10gPSAnU3R5bGUgQ1NTJzsKJGxhbmdbJ3N0eWxlc19oZWxwJ10gPSAnSWYgeW91IGxlYXZlIHRoZSBmaWVsZCBlbXB0eSwgVGlueU1DRSB3aWxsIHBhcnNlIHlvdXIgQ1NTIGZpbGUgYW5kIGxpc3QgdGhlIHN0eWxlcyBjb250YWluZWQgaW4gaXQgdG8gdGhlIHVzZXIuIElmIHlvdSB3YW50IG9ubHkgc29tZSBzdHlsZXMgcHJlc2VudGVkIHRvIHRoZSB1c2VyLCBzcGVjaWZ5IHRoZW0gaW4gdGhlIGZvcm0gJnF1b3Q7U3R5bGUgMT1zdHlsZTE7IFN0eWxlIDI9c3R5bGUyJnF1b3Q7IGluIHRoZSBmaXJzdCBmaWVsZCBiZWxvdy4gSW4gdGhlIHJlbWFpbmluZyBmaWVsZHMsIHlvdSBjYW4gc3BlY2lmeSBDU1Mgc3R5bGVzIGZvciBUYWJsZXMsIFJvd3MgYW5kIENlbGwgd2hpY2ggYXJlIHVzZWQgaW4gdGhlIGNvcnJlcHNvbmRpbmcgZGlhbG9ncy4gRm9yIGFuIGVtcHR5IGZpZWxkLCB0aGUgc3R5bGVzIGZyb20gdGhlIGdlbmVyYWwgc3R5bGVzIGFyZSB1c2VkLic7CiRsYW5nWydjc3Nfc3R5bGVzX3RleHQnXSA9ICdPZyZvYWN1dGU7bG5lJzsKJGxhbmdbJ2FjY2Vzc2RlbmllZCddID0gJ0Rvc3TEmXAgemFicm9uaW9ueS4gU3ByYXdkxbogc3dvamUgdXByYXduaWVuaWEuJzsKJGxhbmdbJ2Vycm9yJ10gPSAnQsWCxIVkISc7CiRsYW5nWydzdWJtaXQnXSA9ICdXecWbbGlqJzsKJGxhbmdbJ3VwZGF0ZSddID0gJ1Vha3R1YWxuaWonOwokbGFuZ1snc2F2ZXNldHRpbmdzJ10gPSAnWmFwaXN6IHVzdGF3aWVuaWEnOwokbGFuZ1snc2V0dGluZ3MnXSA9ICdVc3Rhd2llbmlhJzsKJGxhbmdbJ3NldHRpbmdzc2F2ZWQnXSA9ICdVc3Rhd2llbmlhIHpvc3RhxYJ5IHphcGlzYW5lJzsKJGxhbmdbJ3NhdmVhZHZhbmNlZCddID0gJ1phcGlzeiB6YWF3YW5zb3dhbmUgdXN0YXdpZW5pYSc7CiRsYW5nWydhZHZhbmNlZHNhdmVkJ10gPSAnWmFwaXNhbm8gemFhd2Fuc293YW5lIHVzdGF3aWVuaWEnOwokbGFuZ1sndG9vbGJhcnNhdmVkJ10gPSAnUGFzZWsgbmFyesSZZHppIHpvc3RhxYIgemFwaXNhbnknOwokbGFuZ1snc3R5bGVzc2F2ZWQnXSA9ICdTdHlsZSB6b3N0YcWCeSB6YXBpc2FuZSc7CiRsYW5nWyd0ZXN0YXJlYXRleHQnXSA9ICc8cD5UbyB0ZXN0b3dlIG9raWVua287IHdwaXN1asSFYyB0dXRhaiB0ZWtzdCBuaWUgd3DFgnl3YXN6IG5hIHRyZcWbxIcgc2Vyd2lzdS48L3A+JzsKJGxhbmdbJ3Jlc2V0J10gPSAnV3ljennFm8SHIHdhcnRvxZtjaSBkb215xZtsbmUnOwokbGFuZ1sncmVzZXRhbGwnXSA9ICdXeWN6ecWbxIcgd3N6eXN0a2llIHdhcnRvxZtjaSBkbyBkb215xZtsbnljaCc7CiRsYW5nWydjb25maXJtcmVzZXQnXSA9ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVzZXQgdGhlc2Ugc2V0dGluZ3MgdG8gdGhlaXIgZGVmYXVsdHM/JzsKJGxhbmdbJ2NvbmZpcm1yZXNldGFsbCddID0gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZXNldCBBTEwgc2V0dGluZ3MgdG8gdGhlaXIgZGVmYXVsdHM/JzsKJGxhbmdbJ3NldHRpbmdzcmVzZXQnXSA9ICdUaGVzZSBzZXR0aW5ncyB3YXMgcmVzZXQgdG8gZGVmYXVsdCc7CiRsYW5nWydhbGxzZXR0aW5nc3Jlc2V0J10gPSAnQWxsIHNldHRpbmdzIHdlcmUgcmVzZXQgdG8gZGVmYXVsdCc7CiRsYW5nWyd1cGdyYWRlZCddID0gJ2hhcyBiZWVuIHVwZ3JhZGVkIHRvIHZlcnNpb24gJXMnOwokbGFuZ1snY3VzdG9tZHJvcGRvd24nXSA9ICdDdXN0b20gZHJvcGRvd24tbWVudSc7CiRsYW5nWydjbXNtc2xpbmtlciddID0gJ0luc2VydCBsaW5rIHRvIGNtc21zLXBhZ2UnOwokbGFuZ1snYmFja2VuZF90b29sYmFycyddID0gJ0JhY2tlbmQgcHJvZmlsZSBzZXR0aW5ncyc7CiRsYW5nWydmcm9udGVuZF90b29sYmFycyddID0gJ0Zyb250ZW5kIHByb2ZpbGUgc2V0dGluZ3MnOwokbGFuZ1sncGx1Z2luc190YWInXSA9ICdXdHljemtpJzsKJGxhbmdbJ3BsdWdpbnNfaGVscCddID0gJ0Nob29zZSB0aGUgcGx1Z2lucyB5b3Ugd2FudCB0byBhY3RpdmF0ZS4gRG9jdW1lbnRhdGlvbiBjYW4gYmUgZm91bmQgPGEgaHJlZj0iJXMiIHRhcmdldD0iX2JsYW5rIj5oZXJlPC9hPic7CiRsYW5nWydwbHVnaW5zX3RleHQnXSA9ICdQbHVnaW55JzsKJGxhbmdbJ3NhdmVwbHVnaW5zJ10gPSAnWmFwaXN6IHBsdWdpbnknOwokbGFuZ1sncGx1Z2luc3NhdmVkJ10gPSAnUGx1Z2lueSB6YXBpc2FuZSc7CiRsYW5nWydwbHVnaW5zX21vZHVsZSddID0gJ1BsdWdpbnkgbW9kdcWCdSc7CiRsYW5nWydwbHVnaW5zX2NvbW1vbiddID0gJ1BvcHVsYXJuZSBwbHVnaW55JzsKJGxhbmdbJ21vZHVsZSddID0gJ01vZHXFgic7CiRsYW5nWydkZXNjcmlwdGlvbiddID0gJ09waXMnOwokbGFuZ1sncGx1Z2luJ10gPSAnV3R5Y3prYSAocGx1Z2luKSc7CiRsYW5nWyd5b3VhcmVpbnRleHQnXSA9ICdKZXN0ZcWbIHcnOwokbGFuZ1snbG9hZHN0eWxlc2hlZXR0ZXh0J10gPSAnTG9hZCBzdHlsZXNoZWV0IGZvciBjb250ZW50IChyZWNvbW1lbmRlZCknOwokbGFuZ1snZXh0cmFzdHlsZXN0ZXh0J10gPSAnQWRkaXRpb25zIHRvIHN0eWxlc2hlZXQnOwokbGFuZ1snZXh0cmFzdHlsZXNoZWxwJ10gPSAnQ1NTIGVudGVyZWQgaGVyZSB3aWxsIGJlIGFkZGVkIHRvIHRoZSBzdHlsZXNoZWV0IHJlYWQgYnkgVGlueU1DRSBhZnRlciBpdCByZWNpZXZlcyB0aGUgQ01TbXMgc3R5bGVzJzsKJGxhbmdbJ3VwbG9hZG5ld2ZpbGUnXSA9ICdOb3d5IHBsaWsnOwokbGFuZ1sndXBsb2FkZmlsZSddID0gJ1dncmFqJzsKJGxhbmdbJ2NyZWF0ZW5ld2RpciddID0gJ05vd3kgZm9sZGVyJzsKJGxhbmdbJ2NyZWF0ZWRpciddID0gJ1N0dyZvYWN1dGU7cnonOwokbGFuZ1snbm9kaXJuYW1lJ10gPSAnTmllIHBvZGFubyBuYXp3eSBrYXRhbG9ndSc7CiRsYW5nWydkaXJleGlzdHMnXSA9ICdLYXRhbG9nIGp1xbwgaXN0bmllamUnOwokbGFuZ1snbmV3ZGlyY3JlYXRlZCddID0gJ05vd3kga2F0YWxvZyB6b3N0YcWCIHV0d29yem9ueSc7CiRsYW5nWyduZXdkaXJmYWlsZWQnXSA9ICdXeXN0xIVwacWCIGLFgsSFZCBwcnp5IHR3b3J6ZW5pdSBrYXRhbG9ndSc7CiRsYW5nWydub2ZpbGUnXSA9ICdQbGlrIG5pZSB6b3N0YcWCIHdncmFueSc7CiRsYW5nWydmaWxldG9vYmlnJ10gPSAnV2dyeXdhbnkgcGxpayBqZXN0IHphIGR1xbx5JzsKJGxhbmdbJ2NvbnRhaW5zaWxsZWdhbGNoYXJzJ10gPSAnRmlsZW5hbWUgY29udGFpbnMgb25lIG9yIG1vcmUgaWxsZWdhbCBjaGFyYWN0ZXJzICgmIzAzOTssJnF1b3Q7LCssKixcLC8sJmFtcDssJCknOwokbGFuZ1sndXBsb2FkZmFpbGVkJ10gPSAnRXJyb3IgbW92aW5nIHVwbG9hZGVkIGZpbGUgaW50byBwbGFjZSc7CiRsYW5nWydmaWxldXBsb2FkZWQnXSA9ICdQbGlrIHpvc3RhxYIgcG9wcmF3bmllIHdncmFueSc7CiRsYW5nWydub3RhbmltYWdlJ10gPSAnV2dyeXdhbnkgcGxpayBuaWUgamVzdCBwbGlraWVtIGdyYWZpY3pueW0nOwokbGFuZ1snZmlsZXBpY2tlcnRpdGxlJ10gPSAnQ01TTWFkZVNpbXBsZSB3eWImb2FjdXRlO3IgcGxpayc7CiRsYW5nWydzdWNjZXNzJ10gPSAnU3VrY2VzJzsKJGxhbmdbJ2ZpbGVvcGVyYXRpb25zJ10gPSAnT3BlcmFjamUgbmEgcGxpa2FjaCc7CiRsYW5nWyd0aG91c2FuZGRlbGltaXRlciddID0gJywnOwokbGFuZ1snc2l6ZSddID0gJ1Jvem1pYXInOwokbGFuZ1snZGltZW5zaW9ucyddID0gJ1N6ZXJ4V3lzJzsKJGxhbmdbJ2FkdmFuY2VkX3RhYiddID0gJ1phYXdhbnNvd2FuZSc7CiRsYW5nWydoZWxwJ10gPSAnCTxoMz5EbyBjemVnbyB0byBzxYJ1xbx5PzwvaDM+Cgk8cD5aZXp3YWxhIG5hIHXFvHljaWUgVGlueU1DRSBqYWtvIGVkeXRvcmEgV1lTSVdZRy48L3A+Cgk8aDM+SmFrIHNpxJkgdGVnbyB1xbx5d2E/PC9oMz4KCTxwPlphaW5zdGFsdWogVGlueU1DRSwgcHJ6ZWpkxbogZG8gUHJlZmVyZW5jamkgVcW8eXRrb3duaWthIGkgdXN0YXcgVGlueU1DRSBqYWtvIGVkeXRvciBXWVNJV1lHLiBVc3RhdyBvZHBvd2llZG5pZSB1cHJhd25pZW5pYS48L3A+CgogIDxoMz5TcGVsbGNoZWNrZXIgLSBTxYJvd25pazwvaDM+CiAgPHA+QXMgb2YgdmVyc2lvbiAyLjYuMCwgVGlueU1DRSBpbmNsdWRlcyBhbiBvbmxpbmUgc3BlbGxjaGVja2VyLiBQbGVhc2Ugbm90aWNlIHRoYXQgU1NMIG11c3QgYmUgdHVybmVkIG9uIGluIHlvdXIgc2VydmVyLWNvbmZpZ3VyYXRpb24gaW4gb3JkZXIgZm9yIHRoaXMgdG8gd29yay4gT24gc29tZSBzZXR1cHMgdGhpcyBvcHRpb24gaXMgY2FsbGVkIHBocF9vcGVuc3NsIGJ1dCB0aGF0IG1heSB2YXJ5PC9wPgoJPGgzPlRyb3VibGVzaG9vdGluZzwvaDM+CglTb21lIHBlb3BsZSBoYXZlIHRyb3VibGUgd2l0aCB0aW55IG5vdCBzaG93aW5nIHVwIHVwb24gaW5zdGFsbGF0aW9uIG9yIHVwZ3JhZGluZy4gSGVyZSBpcyBhIGNoZWNrbGlzdCBvZiAKCXRoaW5ncyB5b3UgY2FuIHRyeSBiZWZvcmUgY29udGFjdGluZyBtZSBmb3IgZnVydGhlciBzdXBwb3J0LgoJPGJyLz4KCTx1bD4KCTxsaT4xLiBQbGVhc2UsIHBsZWFzZSwgdHJ5IHRvIHJldXBsb2FkIHRoZSBtb2R1bGVzL1RpbnlNQ0UgZGlyIHRvIHlvdXIgc2VydmVyLiBZb3UmIzAzOTtkIGJlIGFtYXplZCBob3cgbWFueSB0aW1lcyB0aGlzIGhhcyBoZWxwZWQgcGVvcGxlLjwvbGk+CQoJPGxpPjIuIElmIHVwZ3JhZGluZywgcGxlYXNlIHRyeSB0byByZXNldCBhbGwgc2V0dGluZ3MuIE5vdCBuaWNlIGlmIHlvdSYjMDM5O3ZlIGRvbmUgYSBsb3Qgb2YgY3VzdG9taXphdGlvbiwgSSBrbm93LCBidXQgYSBsb3Qgb2YgdGhpbmdzIGNoYW5nZWQgZnJvbSAyLjMueCB0byAyLjQueCBzZXJpZXMgb2YgdGhlIG1vZHVsZS4KCTxsaT4zLiBUcnkgZW5hYmxpbmcgdGhlIHN0YXRpYyBjb25maWcgb3B0aW9uIGluIGFkdmFuY2VkIHNldHRpbmdzLiBUaGlzIHdvcmtzIGJldHRlciBvbiBzb21lIHN5c3RlbXMgKGxpa2UgQ0dJLWJhc2VkKSwgTm90ZSB0aGF0IHRoaXMgcmVxdWlyZXMgeW91ciAvdG1wLy1kaXIgdG8gYmUgd3JpdGFibGUgYnkgdGhlIHdlYnNlcnZlcgoJPC91bD4KCTxici8+CiAgPGgzPlBsdWdpbiBkZXZlbG9wbWVudDwvaDM+CiAgQXMgb2YgdmVyc2lvbiAyLjcuMCB0aGUgVGlueU1DRS1tb2R1bGUgaGFzIHRoZSBhYmlsaXR5IHRvIGFsbG93IG90aGVyIG1vZHVsZXMgdG8gcmVnaXN0ZXIgZXh0ZW5zaW9ucyBmb3IgaXQuIENvdWxkIGJlIGEgY3VzdG9tIGljb24gYWxsb3dpbmcgeW91IHRvIGluc2VydAogIGNvbnRlbnQgZnJvbSBzb21lIG1vZHVsZSwgbGlrZSBHYWxsZXJ5IGV0Yy4gSG93IHRvIGRvIHRoaXMgaXMgcHJldHR5IHRlY2ggc3R1ZmYsIGJ1dCBpZiB5b3UgYXJlIGEgbW9kdWxlIGRldmVsb3BlciBhbmQgaW50ZXJlc3RlZCBpbiBjaGVja2luZyBpdCBvdXQKICBwbGVhc2UgbG9vayBpbiB0aGUgVGlueU1DRS9kb2NzLWRpciBmb3IgZnVydGhlciBpbnN0cnVjdGlvbnMuCic7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjEwODM3NTYwMS4xMjk1NjEwOTUzLjEyOTgxMjgxNTEuMTI5ODM4NDY1OC4xMSc7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjEyOTU2MTA5NTMuMS4xLnV0bWNzcj0oZGlyZWN0KXx1dG1jY249KGRpcmVjdCl8dXRtY21kPShub25lKSc7CiRsYW5nWydxY2EnXSA9ICdQMC0xNDgzNDEzMzU0LTEyOTU2MTA5NTU2MTcnOwokbGFuZ1sndXRtYiddID0gJzE1Njg2MTM1Myc7CiRsYW5nWyd1dG1jJ10gPSAnMTU2ODYxMzUzJzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/pt_PT.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1RpbnlNQ0UgRWRpdG9yJzsKJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAnTSZvYWN1dGU7ZHVsbyBEZXNpbnN0YWxhZG8uJzsKJGxhbmdbJ2luc3RhbGxlZCddID0gJ00mb2FjdXRlO2R1bG8gdmVycyZhdGlsZGU7byAlcyBpbnN0YWxhZG8uJzsKJGxhbmdbJ3N0cmlwYmFja2dyb3VuZHRhZ3MnXSA9ICdTdHJpcCB0YWdzIGZ1bmRvIGRhIENTUyc7CiRsYW5nWydzdGlwdGFnc19oZWxwJ10gPSAnRXN0YSBvcCZjY2VkaWw7JmF0aWxkZTtvIHRlbnRhIHJlbW92ZXIgbyBmdW5kbyBkYXMgY29uZmlndXJhJmNjZWRpbDsmb3RpbGRlO2VzIGEgcGFydGlyIGRhIGZvbGhhIGRlIGVzdGlsby4nOwokbGFuZ1snc291cmNlX2Zvcm1hdHRpbmdfdGV4dCddID0gJ0FwbGljYXIgZm9ybWF0YSZjY2VkaWw7JmF0aWxkZTtvIG5hIHNhJmlhY3V0ZTtkYSBIVE1MJzsKJGxhbmdbJ2Ryb3Bkb3duYmxvY2tmb3JtYXRzX3RleHQnXSA9ICdGb3JtYXRvIEJsb2NvIG5vIG1lbnUtZHJvcGRvd24nOwokbGFuZ1snYWxsb3d0YWJsZXMnXSA9ICdQZXJtaXRpciBvcGVyYSZjY2VkaWw7Jm90aWxkZTtlcyBkZSB0YWJlbGFzICc7CiRsYW5nWyduZXdsaW5lc3R5bGVfdGV4dCddID0gJ05vdmEgbGluaGEgZGUgZXN0aWxvJzsKJGxhbmdbJ3BzdHlsZSddID0gJ2VzdGlsbyBwJzsKJGxhbmdbJ2Jyc3R5bGUnXSA9ICdlc3RpbG8gYnInOwokbGFuZ1sndXNlY29tcHJlc3Npb250ZXh0J10gPSAnVXNlIGNvbXByZXNzJmF0aWxkZTtvIGd6JzsKJGxhbmdbJ3VzZWNvbXByZXNzaW9uaGVscCddID0gJ0lzdG8gcG9kZSBhY2VsZXJhciBhIGNhcnJlZ2FtZW50byBkbyBUaW55TUNFLCBtYXMgdGFtYiZlYWN1dGU7bSBwb2RlIGltcGVkaS1sbyBlbSBhbGd1bnMgc2lzdGVtYXMuIFVzZSBjb20gY3VpZGFkby4nOwokbGFuZ1snZm9yY2Vkcm9vdGJsb2NrdGV4dCddID0gJ0ZvciZjY2VkaWw7YXIgJnF1b3Q7cCZxdW90OyByb290YmxvY2snOwokbGFuZ1snZm9yY2Vkcm9vdGJsb2NraGVscCddID0gJ0ZvciZjY2VkaWw7YXIgbm8gY29udGUmdWFjdXRlO2RvLCBubyBtJmlhY3V0ZTtuaW1vLCBhIHNlciBpbmNsdSZpYWN1dGU7ZGEgZW0gdW0gJnF1b3Q7cC10YWcmcXVvdDsnOwokbGFuZ1snZmlsZXBpY2tlcnN0eWxlJ10gPSAnRXN0aWxvIGRvIEZpbGVwaWNrZXInOwokbGFuZ1snZmlsZXBpY2tlcnNpemUnXSA9ICdGaWxlcGlja2VyIFRhbWFuaG8nOwokbGFuZ1snYWxsb3d1cGxvYWR0ZXh0J10gPSAnUGVybWl0aXIgbyBjYXJyZWdhbWVudG8gZGUgaW1hZ2VucywgYmVtIGNvbW8sIGNyaWFyIG5vdmFzIHBhc3RhcyBubyBHZXN0b3IgZGUgRm90b3MnOwokbGFuZ1snYWxsb3dzY2FsaW5ndGV4dCddID0gJ1Blcm1pdGlyIGF1dG9tJmFhY3V0ZTt0aWNhbWVudGUgcmVkaW1lbnNpb25hbWVudG8gZGUgaW1hZ2Vucyc7CiRsYW5nWydzY2FsaW5nZGltZW5zaW9uc3RleHQnXSA9ICdEaW1lbnMmb3RpbGRlO2VzIHBhZHImYXRpbGRlO28nOwokbGFuZ1sncmVzaXpldG8nXSA9ICdSZWRpbWVuc2lvbmFyIHBhcmE6JzsKJGxhbmdbJ21ha2V0aHVtYm5haWwnXSA9ICdGYXplciB1bWEgbWluaWF0dXJhIHF1YW5kbyBjYXJyZWdhciBpbWFnZW5zJzsKJGxhbmdbJ3VzZWFkdmFuY2VkcHJvZmlsZSddID0gJ1VzYXIgUGVyZmlzIGRvIFRpbnlNQ0UgYXZhbiZjY2VkaWw7YWRvcyc7CiRsYW5nWydzYXZlcHJvZmlsZSddID0gJ0d1YXJkYXIgUGVyZmlsZSc7CiRsYW5nWydwcm9maWxlc2F2ZWQnXSA9ICdPIFBlcmZpbGUgZmlvIGd1YXJkYWRvJzsKJGxhbmdbJ3Byb2ZpbGVzX3RhYiddID0gJ1BlcmZpcyc7CiRsYW5nWydhZHZhbmNlZF9iYWNrZW5kX3Rvb2xiYXJzJ10gPSAnQ29uZmlndXJhJmNjZWRpbDsmb3RpbGRlO2VzIGRlIHBlcmZpbCBhdmFuJmNjZWRpbDthZGFzIG5vIGFkbWluIHBhaW5lbCc7CiRsYW5nWydzYXZlc3R5bGVzJ10gPSAnR3VhcmRhciBlc3RpbG9zJzsKJGxhbmdbJ2FsbG93YWR2YW5jZWRwcm9maWxlJ10gPSAnUGVybWl0aXIgbyB1c28gZGUgcGVyZmlzIGF2YW4mY2NlZGlsO2Fkb3Mgbm8gVGlueU1DRSc7CiRsYW5nWydzaG93ZmlsZW1hbmFnZW1lbnQnXSA9ICdNb3N0cmFyIG9wJmNjZWRpbDsmb3RpbGRlO2VzIG5vIGdlc3RvciBkZSBmaWNoZWlyb3MnOwokbGFuZ1snc2hvd2ZpbGVtYW5hZ2VtZW50aGVscCddID0gJ01vc3RyYXIgbm8gZ2VzdG9yIGRlIGZpY2hlaXJvcyAgb3AmY2NlZGlsOyZvdGlsZGU7ZXMgY29tbyBjYXJyZWdhciBmaWNoZWlyb3MsIGUgZmF6ZXIgYSBlbGltaW5hJmNjZWRpbDsmYXRpbGRlO28gZGUgcGFzdGFzIGUgZmljaGVpcm9zIG5vIEdlc3RvciBkZSBGaWNoZWlyb3MsIHNlIG8gdXRpbGl6YWRvciBlc3RpdmVyIGF1dG9yaXphZG8gYSBleGVjdXRhciBhcyBtZXNtYXMuJzsKJGxhbmdbJ3Jlc3RyaWN0ZGlycyddID0gJ1Jlc3RyaWN0byBvIGFjZXNzbyAmYWdyYXZlOyBkaXJlY3RvcmlhIGRvIHVzZXJuYW1lJzsKJGxhbmdbJ3Jlc3RyaWN0ZGlyc2hlbHAnXSA9ICdJc3RvIHZhaSByZXN0cmluZ2lyIG8gR2VzdG9yIGRlIEZpY2hlaXJvcyAgZG8gdXN1JmFhY3V0ZTtyaW8gcGFyYSB1bSB2ZXIgZGVudHJvIGRvcyAmcXVvdDsvdXBsb2FkcyZxdW90OywgcXVlIHRlbSBvIG1lc21vIG5vbWUgZGUgbG9naW4gZG8gdXNlcm5hbWUuIFNlIG8gc3ViZGlyZXQmb2FjdXRlO3JpbyBuJmF0aWxkZTtvIGV4aXN0aXIsIHNlciZhYWN1dGU7LCBjcmlhZG8uIFBvciBmYXZvciBub3RlIHF1ZSAgdHJhYmFsaGEgYWN0dWFsbWVudGUgYXBlbmFzIGNvbSBvIG5vbWUgZG8gZGlyZWN0Jm9hY3V0ZTtyaW8gcGFkciZhdGlsZGU7bywgdXBsb2Fkcy9pbWFnZW5zLiBJc3RvIHBvZGUgbXVkYXIgbm8gZnV0dXJvLic7CiRsYW5nWydkZWxldGVjb25maXJtYXRpb24nXSA9ICdUZW0gY2VydGV6YSBkZSBxdWUgbyBhcnF1aXZvIGRldmUgc2VyIGFwYWdhZG8/JzsKJGxhbmdbJ2RlbGV0ZWZpbGVzdWNjZXNzJ10gPSAnZm9pIGVsaW1pbmFkbyBjb20gc3VjZXNzbyc7CiRsYW5nWydkZWxldGVmaWxlZmFpbGVkJ10gPSAnbiZhdGlsZGU7byBwJm9jaXJjO2RlIHNlciBleGNsdSZpYWN1dGU7ZG8nOwokbGFuZ1snZGVsZXRlc3ViZGlyZmFpbGVkJ10gPSAnbiZhdGlsZGU7byBwJm9jaXJjO2RlIHNlciBleGNsdSZpYWN1dGU7ZG8nOwokbGFuZ1snZGVsZXRlc3ViZGlyc3VjY2VzcyddID0gJ2ZvaSByZW1vdmlkbyBjb20gc3VjZXNzbyc7CiRsYW5nWydkZWxldGVkaXJjb25maXJtYXRpb24nXSA9ICdUZW0gY2VydGV6YSBxdWUgb3Mgc3ViIGRpcmVjdCZvYWN1dGU7cmlvcyB2YXppb3MgZGV2ZW0gc2VyIGV4Y2x1JmlhY3V0ZTtkb3M/JzsKJGxhbmdbJ2RlbGV0ZWRpciddID0gJ0V4Y2x1aXIgc3ViIGRpcmVjdCZvYWN1dGU7cmlvIHZhemlvJzsKJGxhbmdbJ2RlbGV0ZWZpbGUnXSA9ICdFbGltaW5hciBmaWNoZWlybyc7CiRsYW5nWydjYW5ub3RyZWFkY29uZmlnJ10gPSAnTiZhdGlsZGU7byAmZWFjdXRlOyBwb3NzJmlhY3V0ZTt2ZWwgbGVyIG8gYXJxdWl2byAgdGlueWNvbmZpZy5waHAgZGlyZWN0YW1lbnRlIG8gVGlueU1DRSBwcm92YXZlbG1lbnRlIG4mYXRpbGRlO28gZnVuY2lvbmFyJmFhY3V0ZTsuIERldmUgdmVyaWZpY2FyIGFzIHBlcm1pc3Mmb3RpbGRlO2VzIGRvIGFycXVpdm8gZSBkYSByb290IGRpcnMsIHF1ZSBkZXZlcmlhIHNlciBsaWRvIHBvciB0b2RvcywgbWFzIGFwZW5hcyBwYXJhIG8gcHJvcHJpZXQmYWFjdXRlO3JpbyBkZSBlc2NyaXRhLic7CiRsYW5nWydmaWxlbmFtZW9ubHknXSA9ICdNb3N0cmFyIG5vbWVzIGRvcyBmaWNoZWlyb3MnOwokbGFuZ1sndGh1bWJuYWlsc29ubHknXSA9ICdNb3N0cmFyIG1pbmlhdHVyYXMnOwokbGFuZ1snc2hvd3RodW1ibmFpbGZpbGVzdGV4dCddID0gJ01vc3RyYXIgbWluaWF0dXJhcyBudW1hIGxpc3RhJzsKJGxhbmdbJ2ZpbGVuYW1lYW5kdGh1bWJuYWlscyddID0gJ01vc3RyYXIgYW1ib3MsIG5vbWVzIGRvcyBmaWNoZWlyb3MgZSBtaW5pYXR1cmFzJzsKJGxhbmdbJ3NraW5zdGV4dCddID0gJ1NraW4gKHRlbWEpJzsKJGxhbmdbJ3NraW52YXJpYXRpb250ZXh0J10gPSAnVmFyaWEmY2NlZGlsOyZvdGlsZGU7ZXMgZGUgU2tpbic7CiRsYW5nWydhZHZhbmNlZHdhcm5pbmcnXSA9ICc8c3Ryb25nPiBQb3IgZmF2b3IgTm90ZSEgPGJyLz4gQWx0ZXJhciBlc3NhcyBjb25maWd1cmEmY2NlZGlsOyZvdGlsZGU7ZXMgcG9kZW0gY2F1c2FyIHVtYSBmYWxoYSBubyBUaW55TUNFIGUgZGVpeGFyIGRlIHRyYWJhbGhhciwgb3UsIG8gYyZvYWN1dGU7ZGlnbyBnZXJhZG8gcG9kZSBzZXIgZXJyYWRvLCBkZSBhbGd1bWEgZm9ybWEuIFMmb2FjdXRlOyBlZGl0ZSAgc2Ugc291YmVyIG8gcXVlIGVzdCZhYWN1dGU7IGEgZmF6ZXIhIFBvciBmYXZvciBjb25zdWx0ZSBvIHdlYnNpdGUgVGlueU1DRSBhbnRlcyBkZSBvIGZhemVyLiA8L3N0cm9uZz4nOwokbGFuZ1snZW50aXR5ZW5jb2RpbmdfdGV4dCddID0gJ0NvZGlmaWNhJmNjZWRpbDsmYXRpbGRlO28gZGUgZW50aWRhZGVzJzsKJGxhbmdbJ3Jhd2VuY29kaW5nJ10gPSAnUmF3IGNvZGlmaWNhJmNjZWRpbDsmYXRpbGRlO28gKG1haXMgciZhYWN1dGU7cGlkbywgZnVuY2lvbmEgbmEgbWFpb3JpYSBkb3MgY2Fzb3MpJzsKJGxhbmdbJ25hbWVkZW5jb2RpbmcnXSA9ICdDb2RpZmljYSZjY2VkaWw7JmF0aWxkZTtvIChjb21vOiAmYW1wO2FtcDtuYnNwOyknOwokbGFuZ1snbnVtZXJpY2VuY29kaW5nJ10gPSAnQ29kaWZpY2EmY2NlZGlsOyZhdGlsZGU7byBOdW0mZWFjdXRlO3JpY2EgKGxpa2UgJmFtcDsjMTYwOyknOwokbGFuZ1snc2hvd19wYXRoX3RleHQnXSA9ICdNb3N0cmFyIG8gY2FtaW5obyBkbyBlbGVtZW50byBuYSBwYXJ0ZSBpbmZlcmlvciBkbyBlZGl0b3IuJzsKJGxhbmdbJ3Rvb2xiYXJfdGFiJ10gPSAnQmFycmEgZGUgRmVycmFtZW50YXMnOwokbGFuZ1sndG9vbGJhcl9oZWxwJ10gPSAnRXN0YXMgb3AmY2NlZGlsOyZvdGlsZGU7ZXMgZGV2ZW0gY29udGVyIHVtYSBsaXN0YSBzZXBhcmFkYSBwb3IgdiZpYWN1dGU7cmd1bGFzIGRvIGJvdCZhdGlsZGU7by9jb250cm9sbywgbm9tZXMgcGFyYSBpbnNlcmlyIG5hIGJhcnJhIGRlIGZlcnJhbWVudGFzLic7CiRsYW5nWyd0b29sYmFyX3RleHQnXSA9ICdCYXJyYSBkZSBGZXJyYW1lbnRhcyc7CiRsYW5nWyd0b29sYmFyaGVscHRleHQnXSA9ICdDbGlxdWUgYXF1aSBwYXJhIHZlciBpbnN0cnUmY2NlZGlsOyZvdGlsZGU7ZXMgbmEgQmFycmEtVGlueU1DRS13aWtpLic7CiRsYW5nWydlZGl0b3Jfd2lkdGhfdGV4dCddID0gJ0xhcmd1cmEgZG8gZWRpdG9yJzsKJGxhbmdbJ2VkaXRvcl9oZWlnaHRfdGV4dCddID0gJ0FsdHVyYSBkbyBlZGl0b3InOwokbGFuZ1snYXV0byddID0gJ0F1dG9tJmFhY3V0ZTt0aWNvJzsKJGxhbmdbJ29yJ10gPSAnb3UnOwokbGFuZ1snYWxsb3dyZXNpemluZyddID0gJ1Blcm1pdGlyIHJlZGltZW5zaW9uYW1lbnRvIG5vIGx1Z2FyIGRlIGVkaXRvciBkZSBjYW1wbyc7CiRsYW5nWydyZXNpemVub25lJ10gPSAnTiZhdGlsZGU7byBwZXJtaXRpciBvIHJlZGltZW5zaW9uYW1lbnRvJzsKJGxhbmdbJ3Jlc2l6ZWJvdGgnXSA9ICdQZXJtaXRpciByZWRpbWVuc2lvbmFtZW50byBlbSBhbWJvcyBvcyBzZW50aWRvcyc7CiRsYW5nWydyZXNpemVoZWlnaHQnXSA9ICdQZXJtaXRpciByZWRpbWVuc2lvbmFtZW50byBhcGVuYXMgZGEgYWx0dXJhJzsKJGxhbmdbJ2RhdGV0aW1lZm9ybWF0X3RleHQnXSA9ICdEYXRhL0hvcmEgZm9ybWF0byc7CiRsYW5nWyd0aW1ldGV4dCddID0gJ0hvcmEnOwokbGFuZ1snZGF0ZXRleHQnXSA9ICdEYXRhJzsKJGxhbmdbJ2RhdGV0aW1lZm9ybWF0X2hlbHAnXSA9ICdDbGlxdWUgYXF1aSBwYXJhIG9idGVyIGFqdWRhIHNvYnJlIGNvbW8gZm9ybWF0YXIgYSBkYXRhL2hvcmEnOwokbGFuZ1snZXh0cmFjb25maWd0ZXh0J10gPSAnQ29uZmlndXJhJmNjZWRpbDsmYXRpbGRlO28gZXh0cmEnOwokbGFuZ1snZXh0cmFjb25maWdoZWxwMiddID0gJ1VtYSBkZWNsYXJhJmNjZWRpbDsmYXRpbGRlO28gcG9yIGxpbmhhLCB1bWEgdiZpYWN1dGU7cmd1bGEgc2VyJmFhY3V0ZTsgYWRpY2lvbmFkYSBhbnRlcyBlIGFwJm9hY3V0ZTtzIGVzc2UgY29udGUmdWFjdXRlO2RvLiBWZXJpZmlxdWUgVGlueU1DRS13aWtpIHBhcmEgb2J0ZXIgbWFpcyBpbnN0cnUmY2NlZGlsOyZvdGlsZGU7ZXMuJzsKJGxhbmdbJ2N1c3RvbWRyb3Bkb3dudGV4dCddID0gJ01lbnUgU3VzcGVuc28gUGVyc29uYWxpemFkbyc7CiRsYW5nWydjdXN0b21kcm9wZG93bmhlbHAnXSA9ICdJbnNlcmUgcGVkYSZjY2VkaWw7b3MgZGUgYyZvYWN1dGU7ZGlnby90ZXh0byBwZXJzb25hbGl6JmFhY3V0ZTt2ZWlzIG5hIHNlbGVjJmNjZWRpbDsmYXRpbGRlO28gZW0gdW0gbWVudSBzdXNwZW5zby4KQWNlc3NvIGEgdGFnJiMwMzk7cyBldGMuIE8gbWVudSAmZWFjdXRlOyBpbnNlcmlkbyBuYSBiYXJyYSB1c2FuZG8gJiMwMzk7Y3VzdG9tZHJvcGRvd24mIzAzOTsuJzsKJGxhbmdbJ3N0YXJ0ZW5hYmxlZHRleHQnXSA9ICdBcnJhbnF1ZSBhY3RpdmFkbyc7CiRsYW5nWydzdGFydGVuYWJsZWRoZWxwJ10gPSAnRGVzbWFyY2FyIEFycmFucXVlIG5vIFRpbnkgIGVtIHVtIGVzdGFkbyBkZXNhYmlsaXRhZG8uIERldmUgc2VyIHV0aWxpemFkbyBqdW50YW1lbnRlIGNvbSBvIGJvdCZhdGlsZGU7byBhbHRlcm5hci4nOwokbGFuZ1snbG9hZGNtc2xpbmtlcnRleHQnXSA9ICdDYXJyZWdhIG8gQ01TbXNsaW5rZXInOwokbGFuZ1snbG9hZGNtc2xpbmtlcmhlbHAnXSA9ICdHZXJhIG8gYyZvYWN1dGU7ZGlnbyBqYXZhc2NyaXB0IG5lY2VzcyZhYWN1dGU7cmlvIHBhcmEgcGVybWl0aXIgYSBjbXNtc2xpbmtlciBhIHNlciBhZGljaW9uYWRvIGEgdW1hIGJhcnJhIGRlIGZlcnJhbWVudGFzLic7CiRsYW5nWydjbXNsaW5rZXJzdHlsZXRleHQnXSA9ICdDTVMtbGlua2VyIGxpbmstZXN0aWxvJzsKJGxhbmdbJ2Ntc3NlbGZsaW5rc3R5bGUnXSA9ICd7Y21zX3NlbGZsaW5rfS1lc3RpbG8nOwokbGFuZ1snYWhyZWZzdHlsZSddID0gJ2EgaHJlZi1zdHlsZS1lc3RpbG8gJzsKJGxhbmdbJ3JlbGF0aXZldXJsc3RleHQnXSA9ICdHZXJhciB1cmxzIHJlbGF0aXZhcyc7CiRsYW5nWydmb3JjZWNsZWFucGFzdGV0ZXh0J10gPSAnRm9yJmNjZWRpbDthciBsaW1wZXphIG5hIGNvbGFnZW0nOwokbGFuZ1snZm9yY2VjbGVhbnBhc3RlaGVscCddID0gJ0lzdG8gZGV2ZSBzZXIgYWN0aXZhZG8gcGFyYSByZW1vdmVyIGMmb2FjdXRlO2RpZ28gZXN0cmFuaG8gZGUgZm9ybWF0YSZjY2VkaWw7JmF0aWxkZTtvIGFvIGNvbGFyIGRvIFdvcmQgZXRjLic7CiRsYW5nWydib2R5Y3NzX3RleHQnXSA9ICdCb2R5VGFnIENTUyc7CiRsYW5nWydib2R5Y3NzX2hlbHAnXSA9ICdTZXImYWFjdXRlOyBwYXJhIGFkaWNpb25hciBjc3MgYW8gYm9keS10YWcnOwokbGFuZ1snaW5jbHVkZW9ubHlzY3JlZW5jc3NfdGV4dCddID0gJ0luY2x1aXIgdW5pY2FtZW50ZSBDU1MgcGFyYSBtb25pdG9yZXMgKHNjcmVlbiknOwokbGFuZ1snaW5jbHVkZW9ubHlzY3JlZW5jc3NfaGVscCddID0gJ0VzdGEgc2VsZWMmY2NlZGlsOyZhdGlsZGU7byBzJm9hY3V0ZTsgcGVybWl0ZSBxdWUgYWNvbXBhbmhhciBlc3RlIGVzdGlsbyBjb20gbyBtb25pdG9yLW1lZGlhdHlwZSBzZWxlY2Npb25hZG9zIHBhcmEgc2VyZW0gaW5jbHUmaWFjdXRlO2RvcyBubyBlc3RpbG9zIFRpbnlNQ0UgLic7CiRsYW5nWyd1c2VzdGF0aWNjb25maWd0ZXh0J10gPSAnVXNlIGFycXVpdm8gZXN0JmFhY3V0ZTt0aWNvIGRlIGNvbmZpZyc7CiRsYW5nWyd1c2VzdGF0aWNjb25maWdoZWxwJ10gPSAnSXNzbyBwb2RlIGFqdWRhciBvIFRpbnkgYSB0cmFiYWxoYXIgZW0gc2lzdGVtYXMgb25kZSB0ZW0gYSBpbnN0YWxhJmNjZWRpbDsmYXRpbGRlO28gZGUgaG9zcGVkYWdlbSwgYWNyZXNjZW50YSB2YXJpYXMgcGUmY2NlZGlsO2FzIGNvbW8gIHRvZGFzIGFzIGVzdGF0JmlhY3V0ZTtzdGljYXMgZGUgcHJvZHUmY2NlZGlsOyZhdGlsZGU7byBldGMuLCBxdWVicmFuZG8gZGluYW1pY2FtZW50ZSBvIGNyaWFkbyBhcnF1aXZvIGRlIGNvbmZpZy1qYXZhc2NyaXB0JzsKJGxhbmdbJ3VzZXN0YXRpY2NvbmZpZ3dhcm5pbmcnXSA9ICdBdGVuJmNjZWRpbDsmYXRpbGRlO28hIFRlbSBhIG9wJmNjZWRpbDsmYXRpbGRlO28gZXN0JmFhY3V0ZTt0aWNhIGNvbmZpZy1maWxlIGhhYmlsaXRhZG8gbWFzIHNldSAvdG1wL2RpciBuJmF0aWxkZTtvIHRlbSBwZXJtaXNzJm90aWxkZTtlcyBkZSBlc2NyaXRhLiBJc3NvIGlyJmFhY3V0ZTsgZXZpdGFyIHF1ZSBvIG0mb2FjdXRlO2R1bG8gcG9zc2Egc2FsdmFyIG5vIGFycXVpdm8gY29uZmlnLWVzdCZhYWN1dGU7dGljbyBlIG11aXRvIHByb3ZhdmVsbWVudGUgaXImYWFjdXRlOyB0b3JuYXIgbyBUaW55TUNFIGlub3BlcmFjaW9uYWwuJzsKJGxhbmdbJ2lnbm9yZW1vZGlmeWZpbGVzdGV4dCddID0gJ0lnbm9yYXIgYSAmcXVvdDtwZXJtaXNzJmF0aWxkZTtvIE1vZGlmaWNhciBGaWNoZWlyb3MmcXVvdDsgcGFyYSBvIEZpbGVwaWNrZXInOwokbGFuZ1snaWdub3JlbW9kaWZ5ZmlsZXNoZWxwJ10gPSAnQXRlbiZjY2VkaWw7JmF0aWxkZTtvISBJc3NvIHBlcm1pdGUgcXVlIHNlIGFsdGVyZSBhbGd1bSBhcnF1aXZvLCBtZXNtbyBxdWUgYSAmcXVvdDtwZXJtaXNzJmF0aWxkZTtvIE1vZGlmaWNhciBGaWNoZWlyb3MgJiMwMzk7biZhdGlsZGU7byBlc3RpdmVyIGRlZmluaWRvIHBhcmEgbyBncnVwbyBkZSB1c2VybmFtZXMgYWN0dWFpcy4gSXNzbyBwb2RlIGVmZXRpdmFtZW50ZSBzZXIgdXRpbGl6YWRhIGVtIGNvbmp1bnRvIGNvbSBhIG9wJmNjZWRpbDsmYXRpbGRlO28gZGUgcmVzdHJpbmdpciBvIGFjZXNzbyBkbyB1c3UmYWFjdXRlO3JpbyBkbyBkaXJldCZvYWN1dGU7cmlvLic7CiRsYW5nWydzaG93dG9nZ2xlYnV0dG9uX3RleHQnXSA9ICdNb3N0cmFyIGNoZWNrYm94IHBhcmEgY29sb2NhciB3eXNpd3lnIG9uL29mZic7CiRsYW5nWyd0b2dnbGV3eXNpd3lnJ10gPSAnQ29sb2NhciBFZGl0b3Igb24vb2ZmJzsKJGxhbmdbJ3N0eWxlc190YWInXSA9ICdFc3RpbG9zIENTUyc7CiRsYW5nWydzdHlsZXNfaGVscCddID0gJ1NlIGRlaXhhciBvIGNhbXBvIGVtIGJyYW5jbywgVGlueU1DRSBpciZhYWN1dGU7IGFuYWxpc2FyIHNldSBhcnF1aXZvIENTUyBlIGxpc3RhIG9zIGVzdGlsb3MgY29udGlkb3MgbmVsZSBwYXJhIG8gdXN1JmFhY3V0ZTtyaW8uIFNlIHF1aXNlciBxdWUgYXBlbmFzIGFsZ3VucyBlc3RpbG9zIHNlamFtIGFwcmVzZW50YWRvcyBhbyB1c3UmYWFjdXRlO3JpbywgZXNwZWNpZmlxdWUtb3Mgc29iIGEgZm9ybWEgJnF1b3Q7RXN0aWxvIDEgPSBzdHlsZTE7IEVzdGlsbyAyID0gc3R5bGUyJnF1b3Q7IG5vIHByaW1laXJvIGNhbXBvIGFiYWl4by4gTm9zIHJlc3RhbnRlcyBkb20maWFjdXRlO25pb3MsIHBvZGUgZXNwZWNpZmljYXIgZXN0aWxvcyBDU1MgcGFyYSBhcyB0YWJlbGFzLCBMaW5oYXMgZSBDJmVhY3V0ZTtsdWxhcyBxdWUgcyZhdGlsZGU7byB1dGlsaXphZG9zIG5vIGNvcnJlc3BvbmRlbnRlcyBkaSZhYWN1dGU7bG9nb3MuIFBhcmEgdW0gY2FtcG8gdmF6aW8sIG9zIGVzdGlsb3MgcyZhdGlsZGU7byB1c2Fkb3MgZW0gZ2VyYWwuCgkKCQknOwokbGFuZ1snY3NzX3N0eWxlc190ZXh0J10gPSAnR2VyYWwnOwokbGFuZ1snYWNjZXNzZGVuaWVkJ10gPSAnQWNlc3NvIE5lZ2FkbyEnOwokbGFuZ1snZXJyb3InXSA9ICdFcnJvISc7CiRsYW5nWydzdWJtaXQnXSA9ICdTdWJtZXRlcic7CiRsYW5nWyd1cGRhdGUnXSA9ICdBY3R1YWxpemFyJzsKJGxhbmdbJ3NhdmVzZXR0aW5ncyddID0gJ0d1YXJkYXIgY29uZmlndXJhJmNjZWRpbDsmb3RpbGRlO2VzJzsKJGxhbmdbJ3NldHRpbmdzJ10gPSAnQ29uZmlndXJhJmNjZWRpbDsmb3RpbGRlO2VzJzsKJGxhbmdbJ3NldHRpbmdzc2F2ZWQnXSA9ICdDb25maWd1cmEmY2NlZGlsOyZvdGlsZGU7ZXMgU2FsdmFzJzsKJGxhbmdbJ3NhdmVhZHZhbmNlZCddID0gJ0d1YXJkYXIgY29uZmlndXJhJmNjZWRpbDsmb3RpbGRlO2VzIGF2YW4mY2NlZGlsO2FkYXMnOwokbGFuZ1snYWR2YW5jZWRzYXZlZCddID0gJ0NvbmZpZ3VyYSZjY2VkaWw7Jm90aWxkZTtlcyBhdmFuJmNjZWRpbDthZGFzIGd1YXJkYWRhcyc7CiRsYW5nWyd0b29sYmFyc2F2ZWQnXSA9ICdCYXJyYSBkZSBGZXJyYW1lbnRhcyBndWFyZGFkYSc7CiRsYW5nWydzdHlsZXNzYXZlZCddID0gJ0VzdGlsb3MgZ3VhcmRhZG9zJzsKJGxhbmdbJ3Rlc3RhcmVhdGV4dCddID0gJzxwPlRlc3RlLCBzZW0gY29udGUmdWFjdXRlO2RvLCAmZWFjdXRlOyBzaW1wbGVzbWVudGUgdGVzdGUuLi48L3A+JzsKJGxhbmdbJ3Jlc2V0J10gPSAnUmVkZWZpbmlyIHBhZHImYXRpbGRlO28nOwokbGFuZ1sncmVzZXRhbGwnXSA9ICdSZWRlZmluaXIgdG9kYXMgYXMgY29uZmlndXJhJmNjZWRpbDsmb3RpbGRlO2VzIHBhcmEgYXMgb3JpZ2luYWlzJzsKJGxhbmdbJ2NvbmZpcm1yZXNldCddID0gJ1RlbSBjZXJ0ZXphIGRlIHF1ZSBkZXNlamEgcmVkZWZpbmlyIGVzc2FzIGNvbmZpZ3VyYSZjY2VkaWw7Jm90aWxkZTtlcyBwYXJhIHNldXMgdmFsb3JlcyBwcmVkZWZpbmlkb3M/JzsKJGxhbmdbJ2NvbmZpcm1yZXNldGFsbCddID0gJ1RlbSBjZXJ0ZXphIGRlIHF1ZSBkZXNlamEgcmVkZWZpbmlyIHRvZGFzIGFzIGNvbmZpZ3VyYSZjY2VkaWw7Jm90aWxkZTtlcyBkb3Mgc2V1cyBwYWRyJm90aWxkZTtlcz8nOwokbGFuZ1snc2V0dGluZ3NyZXNldCddID0gJ0VzdGFzIGRlZmluaSZjY2VkaWw7Jm90aWxkZTtlcyBmb3JhbSByZWRlZmluaWRhcyBwYXJhIHBhZHImYXRpbGRlO28nOwokbGFuZ1snYWxsc2V0dGluZ3NyZXNldCddID0gJ1RvZG9zIG9zIGFqdXN0ZXMgZm9yYW0gcmVwb3N0b3MnOwokbGFuZ1sndXBncmFkZWQnXSA9ICdGb2kgYWN0dWFsaXphZG8nOwokbGFuZ1snY3VzdG9tZHJvcGRvd24nXSA9ICdNZW51IHN1c3BlbnNvIHBlcnNvbmFsaXphZG8nOwokbGFuZ1snY21zbXNsaW5rZXInXSA9ICdJbnNlcmlyIGxpbmsgcGFyYSB1bWEgcCZhYWN1dGU7Z2luYSc7CiRsYW5nWydiYWNrZW5kX3Rvb2xiYXJzJ10gPSAnQmFja2VuZCBCYXJyYSBjb25maWd1cmEmY2NlZGlsOyZvdGlsZGU7ZXMnOwokbGFuZ1snZnJvbnRlbmRfdG9vbGJhcnMnXSA9ICdGcm9udGVuZCBCYXJyYSBjb25maWd1cmEmY2NlZGlsOyZvdGlsZGU7ZXMnOwokbGFuZ1sncGx1Z2luc190YWInXSA9ICdQbHVnaW5zIChleHRyYXMpJzsKJGxhbmdbJ3BsdWdpbnNfaGVscCddID0gJ0VzY29saGEgb3MgcGx1Z2lucyBxdWUgcHJldGVuZGUgYWN0aXZhci4gRG9jdW1lbnRhJmNjZWRpbDsmYXRpbGRlO28gcG9kZSBzZXIgZW5jb250cmFkYSBlbSAlcyc7CiRsYW5nWydwbHVnaW5zX3RleHQnXSA9ICdQbHVnaW5zIChleHRyYXMpJzsKJGxhbmdbJ3NhdmVwbHVnaW5zJ10gPSAnU2FsdmFyIFBsdWdpbnMnOwokbGFuZ1sncGx1Z2luc3NhdmVkJ10gPSAnUGx1Z2lucyBndWFyZGFkb3MnOwokbGFuZ1sncGx1Z2luc19tb2R1bGUnXSA9ICdNb2R1bG8gUGx1Z2lucyAnOwokbGFuZ1sncGx1Z2luc19jb21tb24nXSA9ICdQbHVnaW5zIENvbXVucyc7CiRsYW5nWydtb2R1bGUnXSA9ICdNb2R1bG8nOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICdEZXNjcmkmY2NlZGlsOyZhdGlsZGU7byc7CiRsYW5nWydwbHVnaW4nXSA9ICdQbHVnaW4gJzsKJGxhbmdbJ3lvdWFyZWludGV4dCddID0gJ0VzdCZhYWN1dGU7IGxvY2FsaXphZG8gZW0nOwokbGFuZ1snbG9hZHN0eWxlc2hlZXR0ZXh0J10gPSAnQ2FyZ2FyIGNzcyBkbyBjb250ZSZ1YWN1dGU7ZG8gKHJlY29tZW5kYWRvKSc7CiRsYW5nWydleHRyYXN0eWxlc3RleHQnXSA9ICdBZGkmY2NlZGlsOyZvdGlsZGU7ZXMgYW8gZXN0aWxvJzsKJGxhbmdbJ2V4dHJhc3R5bGVzaGVscCddID0gJ0NTUyBhZGljaW9uYWRvcyBhcXVpIHNlciZhdGlsZGU7byBhZGljaW9uYWRvcyBhbyBlc3RpbG8gbGlkbyBwZWxvIFRpbnlNQ0UgZGVwb2lzIGRlIHJlY2ViZXIgb3MgZXN0aWxvcyBkbyBDTVNtcyc7CiRsYW5nWyd1cGxvYWRuZXdmaWxlJ10gPSAnTm92byBmaWNoZWlybyc7CiRsYW5nWyd1cGxvYWRmaWxlJ10gPSAnQ2FycmVnYXInOwokbGFuZ1snY3JlYXRlbmV3ZGlyJ10gPSAnTm92YSBQYXN0YSc7CiRsYW5nWydjcmVhdGVkaXInXSA9ICdDcmlhcic7CiRsYW5nWydub2Rpcm5hbWUnXSA9ICdBIHBhc3RhIG4mYXRpbGRlO28gdGVtIHVtIG5vbWUgdiZhYWN1dGU7bGlkbyc7CiRsYW5nWydkaXJleGlzdHMnXSA9ICdKJmFhY3V0ZTsgZXhpc3RlIHVtIG5vbWUgcGFyYSBlc3RhIHBhc3RhJzsKJGxhbmdbJ25ld2RpcmNyZWF0ZWQnXSA9ICdQYXN0YSBjcmlhZGEgY29tIHN1Y2Vzc28nOwokbGFuZ1snbmV3ZGlyZmFpbGVkJ10gPSAnT2NvcnJldSB1bSBlcnJvIGFvIGNyaWFyIGEgcGFzdGEnOwokbGFuZ1snbm9maWxlJ10gPSAnTiZhdGlsZGU7byBmb2kgY2FycmVnYWRvIG5lbmh1bSBmaWNoZWlybyc7CiRsYW5nWydmaWxldG9vYmlnJ10gPSAnTyB0YW1hbmhvIGRvIGZpY2hlaXJvIHVsdHJhcGFzc2EgbyBwZXJtaXRpZG8nOwokbGFuZ1snY29udGFpbnNpbGxlZ2FsY2hhcnMnXSA9ICdOb21lIGRvIGFycXVpdm8gY29udCZlYWN1dGU7bSB1bSBvdSBtYWlzIGNhcmFjdGVyZXMgaWxlZ2FpcyAoJiMwMzk7LCZxdW90OywrLCosXCwvLCZhbXA7LCQpJzsKJGxhbmdbJ3VwbG9hZGZhaWxlZCddID0gJ0Vycm8gYW8gdGVudGFyIG1vdmVyIHBhcmEgZXN0ZSBsb2NhbCc7CiRsYW5nWydmaWxldXBsb2FkZWQnXSA9ICdGaWNoZWlybyBjYXJyZWdhZG8gY29tIHN1Y2Vzc28nOwokbGFuZ1snZmlsZXBpY2tlcnRpdGxlJ10gPSAnQ01TIFNlbGVjJmNjZWRpbDsmYXRpbGRlO28gZGUgRmljaGVpcm9zJzsKJGxhbmdbJ3N1Y2Nlc3MnXSA9ICdTdWNlc3NvJzsKJGxhbmdbJ2ZpbGVvcGVyYXRpb25zJ10gPSAnT3BlcmEmY2NlZGlsOyZvdGlsZGU7ZXMgZGUgRmljaGVpcm9zJzsKJGxhbmdbJ3Rob3VzYW5kZGVsaW1pdGVyJ10gPSAnLCAnOwokbGFuZ1snc2l6ZSddID0gJ1RhbWFuaG8nOwokbGFuZ1snZGltZW5zaW9ucyddID0gJ0EgeCBMJzsKJGxhbmdbJ2FkdmFuY2VkX3RhYiddID0gJ0F2YW4mY2NlZGlsO2Fkbyc7CiRsYW5nWydoZWxwJ10gPSAnCTxoMz5XaGF0IGRvZXMgdGhpcyBkbz88L2gzPgoJPHA+RW5hYmxlcyBhIFRpbnlNQ0UgdG8gYmUgdXNlZCBhcyBhIFdZU0lXWUcuPC9wPgoJPGgzPkhvdyBkbyBJIHVzZSBpdD88L2gzPgoJPHA+SW5zdGFsbCBpdCwgdGhlbiBnbyB0byBVc2VyIFByZWZlcmVuY2VzIGFuZCBTZXQgVGlueU1DRSB0byBiZSB5b3VyIHd5c2l3eWcgb2YgY2hvaWNlLjwvcD4KICA8aDM+U3BlbGxjaGVja2VyPC9oMz4KICA8cD5BcyBvZiB2ZXJzaW9uIDIuNi4wLCBUaW55TUNFIGluY2x1ZGVzIGFuIG9ubGluZSBzcGVsbGNoZWNrZXIuIFBsZWFzZSBub3RpY2UgdGhhdCBTU0wgbXVzdCBiZSB0dXJuZWQgb24gaW4geW91ciBzZXJ2ZXItY29uZmlndXJhdGlvbiBpbiBvcmRlciBmb3IgdGhpcyB0byB3b3JrLiBPbiBzb21lIHNldHVwcyB0aGlzIG9wdGlvbiBpcyBjYWxsZWQgcGhwX29wZW5zc2wgYnV0IHRoYXQgbWF5IHZhcnk8L3A+Cgk8aDM+VHJvdWJsZXNob290aW5nPC9oMz4KCVNvbWUgcGVvcGxlIGhhdmUgdHJvdWJsZSB3aXRoIHRpbnkgbm90IHNob3dpbmcgdXAgdXBvbiBpbnN0YWxsYXRpb24gb3IgdXBncmFkaW5nLiBIZXJlIGlzIGEgY2hlY2tsaXN0IG9mIAoJdGhpbmdzIHlvdSBjYW4gdHJ5IGJlZm9yZSBjb250YWN0aW5nIG1lIGZvciBmdXJ0aGVyIHN1cHBvcnQuCgk8YnIvPgoJPHVsPgoJPGxpPjEuIFBsZWFzZSwgcGxlYXNlLCB0cnkgdG8gcmV1cGxvYWQgdGhlIG1vZHVsZXMvVGlueU1DRSBkaXIgdG8geW91ciBzZXJ2ZXIuIFlvdSYjMDM5O2QgYmUgYW1hemVkIGhvdyBtYW55IHRpbWVzIHRoaXMgaGFzIGhlbHBlZCBwZW9wbGUuPC9saT4JCgk8bGk+Mi4gSWYgdXBncmFkaW5nLCBwbGVhc2UgdHJ5IHRvIHJlc2V0IGFsbCBzZXR0aW5ncy4gTm90IG5pY2UgaWYgeW91JiMwMzk7dmUgZG9uZSBhIGxvdCBvZiBjdXN0b21pemF0aW9uLCBJIGtub3csIGJ1dCBhIGxvdCBvZiB0aGluZ3MgY2hhbmdlZCBmcm9tIDIuMy54IHRvIDIuNC54IHNlcmllcyBvZiB0aGUgbW9kdWxlLgoJPGxpPjMuIFRyeSBlbmFibGluZyB0aGUgc3RhdGljIGNvbmZpZyBvcHRpb24gaW4gYWR2YW5jZWQgc2V0dGluZ3MuIFRoaXMgd29ya3MgYmV0dGVyIG9uIHNvbWUgc3lzdGVtcyAobGlrZSBDR0ktYmFzZWQpLCBOb3RlIHRoYXQgdGhpcyByZXF1aXJlcyB5b3VyIC90bXAvLWRpciB0byBiZSB3cml0YWJsZSBieSB0aGUgd2Vic2VydmVyCgk8L3VsPgoJPGJyLz4KICA8aDM+UGx1Z2luIGRldmVsb3BtZW50PC9oMz4KICBBcyBvZiB2ZXJzaW9uIDIuNy4wIHRoZSBUaW55TUNFLW1vZHVsZSBoYXMgdGhlIGFiaWxpdHkgdG8gYWxsb3cgb3RoZXIgbW9kdWxlcyB0byByZWdpc3RlciBleHRlbnNpb25zIGZvciBpdC4gQ291bGQgYmUgYSBjdXN0b20gaWNvbiBhbGxvd2luZyB5b3UgdG8gaW5zZXJ0CiAgY29udGVudCBmcm9tIHNvbWUgbW9kdWxlLCBsaWtlIEdhbGxlcnkgZXRjLiBIb3cgdG8gZG8gdGhpcyBpcyBwcmV0dHkgdGVjaCBzdHVmZiwgYnV0IGlmIHlvdSBhcmUgYSBtb2R1bGUgZGV2ZWxvcGVyIGFuZCBpbnRlcmVzdGVkIGluIGNoZWNraW5nIGl0IG91dAogIHBsZWFzZSBsb29rIGluIHRoZSBUaW55TUNFL2RvY3MtZGlyIGZvciBmdXJ0aGVyIGluc3RydWN0aW9ucy4KCgk8YnIvPgoJCQonOwokbGFuZ1sncWNhJ10gPSAnUDAtMTIzNjg0MjAxNi0xMjc2OTc1NTY3MTYzJzsKJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuMTEyNzk2MzM2OS4xMjc3MzExNTk3LjEyNzgwNzIyMjAuMTI3ODE4ODg3Ni4yMyc7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjEyNzc4NTgxNjkuMTcuNS51dG1jc3I9ZmVlZGJ1cm5lcnx1dG1jY249RmVlZDogY21zbWFkZXNpbXBsZS9ibG9nIChDTVMgTWFkZSBTaW1wbGUpfHV0bWNtZD1mZWVkJzsKJGxhbmdbJ3V0bWInXSA9ICcxNTY4NjEzNTMuMS4xMC4xMjc4MTg4ODc2JzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/ro_RO.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0VkaXRvcnVsIFRpbnlNQ0UgV1lTSVdZRyc7CiRsYW5nWydhZG1pbmRlc2NyaXB0aW9uJ10gPSAnQWNlc3QgbW9kdWwgcGVybWl0ZSBlZGl0YXJlYSBpbiBwcmluY2lwYWwgYSBjb250aW51dHVsdWksIHBvc2liaWwgc2kgYSBhbHRvciBmb3JtZSBkZSBkYXRlLCBmb2xvc2luZCB1biBlZGl0b3IgV1lTSVdZRyBUaW55TUNFLic7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsIGEgZm9zdCBkZXppbnN0YWxhdC4nOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kdWwgdmVyc2l1bmVhICVzIGEgZm9zdCBpbnN0YWxhdC4nOwokbGFuZ1snc3RyaXBiYWNrZ3JvdW5kdGFncyddID0gJ1Njb2F0ZXJlIHRhZ3VyaSBiYWNrZ3JvdW5kIGRpbiBDU1MnOwokbGFuZ1snc3RpcHRhZ3NfaGVscCddID0gJ0FjZWFzdGEgb3B0aXVuZSBpbmNlYXJjYSBzYSBpbmxhdHVyZSBzZXRhcmlsZSBwZW50cnUgYmFja2dyb3VuZCBkaW4gc3R5bGVzaGVldC4nOwokbGFuZ1snc291cmNlX2Zvcm1hdHRpbmdfdGV4dCddID0gJ0FwbGljYXJlIGZvcm1hdGFyZSBzdXJzYSBsYSBIVE1MIG91dHB1dCc7CiRsYW5nWydkcm9wZG93bmJsb2NrZm9ybWF0c190ZXh0J10gPSAnRm9ybWF0ZSBibG9jIGluIG1lbml1IGRyb3Bkb3duJzsKJGxhbmdbJ2FsbG93dGFibGVzJ10gPSAnU2UgcGVybWl0IG9wZXJhdGl1bmkgdGFiZWxlJzsKJGxhbmdbJ25ld2xpbmVzdHlsZV90ZXh0J10gPSAnU3RpbCBsaW5pZSBub3VhJzsKJGxhbmdbJ3BzdHlsZSddID0gJ3N0aWwgLSA8cD4nOwokbGFuZ1snYnJzdHlsZSddID0gJ3N0aWwgLSA8YnIvPic7CiRsYW5nWyd1c2Vjb21wcmVzc2lvbnRleHQnXSA9ICdGb2xvc2lyZSBjb21wcmVzaWUgZ3onOwokbGFuZ1sndXNlY29tcHJlc3Npb25oZWxwJ10gPSAnQWNlYXN0YSBzZXRhcmUgcG9hdGUgZ3JhYmkgaW5jYXJjYXJlYSBUaW55TUNFLCBkYXIgcG9hdGUgc2kgc2kgZmFjYSBzYSBudSBzZSBtYWkgaW5jYXJjZSBwZSB1bmVsZSBzaXN0ZW1lLiBGb2xvc2l0aSBjdSBwcmVjYXV0aWUuJzsKJGxhbmdbJ2ZvcmNlZHJvb3RibG9ja3RleHQnXSA9ICdGb3J0YXJlIGJsb2MgcmFkYWNpbmEgPHA+JzsKJGxhbmdbJ2ZvcmNlZHJvb3RibG9ja2hlbHAnXSA9ICdGb3J0ZWF6YSBjYSwgY29udGludXR1bCByZXR1cm5hdCBzYSBmaWUgaW5jYWRyYXQgY2VsIHB1dGluIGludHItdW4gdGFnIDxwPic7CiRsYW5nWydmaWxlcGlja2Vyc3R5bGUnXSA9ICdTdGlsIHNlbGVjdG9yIGZpc2llcmUnOwokbGFuZ1snZmlsZXBpY2tlcnNpemUnXSA9ICdEaW1lbnNpdW5lIHNlbGVjdG9yIGZpc2llcmUnOwokbGFuZ1snYWxsb3d1cGxvYWR0ZXh0J10gPSAnU2UgcGVybWl0ZSB1cGxvYWR1bCBzaSBjcmVhcmVhIGRlIGZvbGRlcmUgaW4gc2VsZWN0b3J1bCBkZSBmaXNpZXJlJzsKJGxhbmdbJ2FsbG93c2NhbGluZ3RleHQnXSA9ICdTZSBwZXJtaXRlIHJlZGltbmVzaW9uYXJlYSBvbi10aGUtZmx5IGEgaW1hZ2luaWxvciB1cGxvYWRhdGUnOwokbGFuZ1snc2NhbGluZ2RpbWVuc2lvbnN0ZXh0J10gPSAnRGltZW5zaXVuaSBpbXBsaWNpdGUnOwokbGFuZ1sncmVzaXpldG8nXSA9ICdSZWRpbWVuc2lvbmFyZSBsYTonOwokbGFuZ1snbWFrZXRodW1ibmFpbCddID0gJ0NyZWFyZSBtaW5pYXR1cmEgbGEgdXBsb2FkdWwgaW1hZ2luaWxvcic7CiRsYW5nWyd1c2VhZHZhbmNlZHByb2ZpbGUnXSA9ICdGb2xvc2lyZSBwcm9maWwgYXZhbnNhdCBUaW55TUNFJzsKJGxhbmdbJ3NhdmVwcm9maWxlJ10gPSAnU2FsdmFyZSBwcm9maWwnOwokbGFuZ1sncHJvZmlsZXNhdmVkJ10gPSAnUHJvZmlsdWwgYSBmb3N0IHNhbHZhdCc7CiRsYW5nWydwcm9maWxlc190YWInXSA9ICdQcm9maWxlJzsKJGxhbmdbJ2FkdmFuY2VkX2JhY2tlbmRfdG9vbGJhcnMnXSA9ICdTZXRhcmkgYXZhbnNhdGUgcHJvZmlsZSBiYWNrZW5kJzsKJGxhbmdbJ3NhdmVzdHlsZXMnXSA9ICdTYWx2YXJlIHN0aWx1cmknOwokbGFuZ1snYWxsb3dhZHZhbmNlZHByb2ZpbGUnXSA9ICdTZSBwZXJtaXRlIGZvbG9zaXJlYSBwcm9maWx1bHVsdWkgYXZhbnNhdCBpbiBUaW55TUNFJzsKJGxhbmdbJ3Nob3dmaWxlbWFuYWdlbWVudCddID0gJ0FmaXNhcmUgb3B0aXVuaSBtYW5hZ2VtZW50IGZpc2llcmUnOwokbGFuZ1snc2hvd2ZpbGVtYW5hZ2VtZW50aGVscCddID0gJ1NlIGFmaXNlYXphIG9wdGl1bmlsZSBkZSBtYW5uYWdlbWVudCBmaXNpZXJlIGN1bSBhciBmaSB1cGxvYWQsIGNyZWFyZSBmb2xkZXIgc2kgc3RlcmdlcmUgZmlzaWVyZSBpbiBTZWxlY3RvciBGaXNpZXJlLCBkYWNhIHV0aWxpemF0b3J1bCBhcmUgcGVybWlzaXVuaWxlIG5lY2VzYXJlIHBlbnRydSBhY2VzdGUgb3BlcmF0aXVuaS4nOwokbGFuZ1sncmVzdHJpY3RkaXJzJ10gPSAnUmVzdHJpY3QgdXNlciYjMDM5O3MgZGlyIGFjY2Vzcyc7CiRsYW5nWydyZXN0cmljdGRpcnNoZWxwJ10gPSAnVGhpcyB3aWxsIHJlc3RyaWN0IHRoZSBmaWxlbWFuYWdlbWVudC1jYXBhYmlsaXRpZXMgb2YgdGhlIHVzZXIgdG8gYSBzdWJkaXIgdG8gJiMwMzk7dXBsb2FkcyYjMDM5OyB3aGljaCBoYXZlIHRoZSBzYW1lIG5hbWUgYXMgdGhlIHVzZXImIzAzOTtzIGxvZ2luLiBJZiB0aGUgc3ViZGlyIGRvZXMgbm90IGV4aXN0LCBpdCB3aWxsIHBvc3NpYmx5IGJlIGNyZWF0ZWQuIFBsZWFzZSBub3RlLCB0aGlzIGN1cnJlbnRseSBvbmx5IHdvcmtzIHdpdGggdGhlIHN0YW5kYXJkIGRpcm5hbWVzLCB1cGxvYWRzL2ltYWdlcy4gVGhpcyBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuJzsKJGxhbmdbJ2RlbGV0ZWNvbmZpcm1hdGlvbiddID0gJ1N1bnRldGkgc2lndXIgY2EgYWNlc3QgZmlzaWVyIHRyZWJ1aWUgc3RlcnM/JzsKJGxhbmdbJ2RlbGV0ZWZpbGVzdWNjZXNzJ10gPSAnYSBmb3N0IHN0ZXJzIGN1IHN1Y2Nlcyc7CiRsYW5nWydkZWxldGVmaWxlZmFpbGVkJ10gPSAnbnUgYSBwdXR1dCBmaSBzdGVycyc7CiRsYW5nWydkZWxldGVzdWJkaXJmYWlsZWQnXSA9ICdudSBhIHB1dHV0IGZpIHN0ZXJzJzsKJGxhbmdbJ2RlbGV0ZXN1YmRpcnN1Y2Nlc3MnXSA9ICdhIGZvc3Qgc3RlcnMgY3Ugc3VjY2VzJzsKJGxhbmdbJ2RlbGV0ZWRpcmNvbmZpcm1hdGlvbiddID0gJ1N1bnRldGkgc2lndXIgY2EgYWNlc3Qgc3ViZm9sZGVyIGdvbCBhciB0cmVidWkgc2EgZmllIHN0ZXJzPyc7CiRsYW5nWydkZWxldGVkaXInXSA9ICdTdGVyZ2VyZSBzdWJmb2xkZXIgZ29sJzsKJGxhbmdbJ2RlbGV0ZWZpbGUnXSA9ICdTdGVyZ2VyZSBmaXNpZXInOwokbGFuZ1snY2Fubm90cmVhZGNvbmZpZyddID0gJ051IHMtYSBwdXR1dCBjaXRpIGZpc2llcnVsIHRpbnljb25maWcucGhwIGRpcmVjdCBhc2EgY2EgVGlueU1DRSBwcm9iYWJpbCBudSB2YSBmdW5jdGlvbmEuIEFyIHRyZWJ1aSBzYSB2ZXJpZmljYXRpIHBlcm1pc2l1bmlsZSBwZW50cnUgZmlzaWVyIHNpIHBlbnRydSBmb2xkZXJlbGUgcGFyaW50ZSwgY2FyZSBhciB0cmVidWkgc2EgZmllIGRlIGNpdGlyZSBwZW50cnUgdG90aSBzaSBjdSBwZXJtaXNpdW5pIGRlIHNjcmllcmUgcGVudHJ1IHByb3ByaWV0YXIuJzsKJGxhbmdbJ2ZpbGVuYW1lb25seSddID0gJ0FmaXNhcmUgbnVtZSBmaXNpZXJlJzsKJGxhbmdbJ3RodW1ibmFpbHNvbmx5J10gPSAnQWZpc2FyZSBtaW5pYXR1cmknOwokbGFuZ1snc2hvd3RodW1ibmFpbGZpbGVzdGV4dCddID0gJ0FmaXNhcmUgZmlzaWVyZSBtaW5pYXR1cmkgaW4gbGlzdGUnOwokbGFuZ1snZmlsZW5hbWVhbmR0aHVtYm5haWxzJ10gPSAnQWZpc2FyZSBzaSBudW1lIGZpc2llcmUgc2kgbWluaWF0dXJpJzsKJGxhbmdbJ3NraW5zdGV4dCddID0gJ1RlbWEnOwokbGFuZ1snc2tpbnZhcmlhdGlvbnRleHQnXSA9ICdWYXJpYXRpZSB0ZW1hJzsKJGxhbmdbJ2FkdmFuY2Vkd2FybmluZyddID0gJzxzdHJvbmc+QXRlbnRpZSE8YnIvPkRhY2Egc2NoaW1iYXRpIGFjZXN0ZSBzZXRhcmkgcHV0ZXRpIGZhY2UgY2EgVGlueU1DRSBzYSBudSBtYWkgbWVhcmdhIHNhdSBjb2R1bCBnZW5lcmF0IHNhIGZpZSBncmVzaXQuIEVkaXRhdGkgbnVtYWkgZGFjYSBzdGl0aSBjZSBmYWNldGkhIENvbnN1bHRhdGkgc2l0ZS11bCBUaW55TUNFIGluYWludGUgZGUgYSB2YSBqdWNhIGN1IGFjZXN0ZSBzZXRhcmkuPC9zdHJvbmc+JzsKJGxhbmdbJ2VudGl0eWVuY29kaW5nX3RleHQnXSA9ICdFbmNvZGFyZSBlbnRpdGF0aSc7CiRsYW5nWydyYXdlbmNvZGluZyddID0gJ0VuY29kYXJlIHJhdyAoY2VhIG1haSByYXBpZGEsIGZ1bmN0aW9uZWF6YSBpbiBjZWxlIG1haSBtdWx0ZSBjYXp1cmkpJzsKJGxhbmdbJ25hbWVkZW5jb2RpbmcnXSA9ICdFbmNvZGFyZSBudW1lIChnZW4gJm5ic3A7KSc7CiRsYW5nWydudW1lcmljZW5jb2RpbmcnXSA9ICdFbmNvZGFyZSBudW1lcmljYSAoZ2VuICZhbXA7IzE2MDspJzsKJGxhbmdbJ3Nob3dfcGF0aF90ZXh0J10gPSAnQWZpc2FyZSBjYWxlIGVsZW1lbnQgaW4gam9zdWwgZWRpdG9ydWx1aSc7CiRsYW5nWyd0b29sYmFyX3RhYiddID0gJ0JhcmEgZGUgdW5lbHRlJzsKJGxhbmdbJ3Rvb2xiYXJfaGVscCddID0gJ0FjZXN0ZSBvcHRpdW5pIGFyIHRyZWJ1aSBzYSBjb250aW5hIG8gbGlzdGEgZGUgYnV0b2FuZSAvIG51bWUgZGUgY29udHJvYWxlIHNlcGFyYXRlIHByaW4gdmlyZ3VsYSBjYXJlIHNlIHZvciBpbnNlcmEgaW4gYmFyYSBkZSB1bmVsdGUuIENhcmFjdGVydWwgfCBwb2F0ZSBmaSBmb2xvc2l0IGluIGxvYyBkZSBjdXZhbnR1bCAmIzAzOTtzZXBhcmF0b3ImIzAzOTsnOwokbGFuZ1sndG9vbGJhcl90ZXh0J10gPSAnQmFyYSBkZSB1bmVsdGUnOwokbGFuZ1sndG9vbGJhcmhlbHB0ZXh0J10gPSAnQ2xpYyBhaWNpIHBlbnRydSBhIHZlZGVhIGluc3RydWN0aXVuaSByZWZlcml0b2FyZSBsYSBiYXJhIGRlIHVuZWx0ZSBpbiBUaW55TUNFLXdpa2kuJzsKJGxhbmdbJ2VkaXRvcl93aWR0aF90ZXh0J10gPSAnTGF0aW1lIGNhbXAgZWRpdG9yJzsKJGxhbmdbJ2VkaXRvcl9oZWlnaHRfdGV4dCddID0gJ0luYWx0aW1lIGNhbXAgZWRpdG9yJzsKJGxhbmdbJ2F1dG8nXSA9ICdBdXRvICc7CiRsYW5nWydvciddID0gJ3NhdSc7CiRsYW5nWyd0ZXN0YXJlYV90YWInXSA9ICdab25hIHBlbnRydSB0ZXN0YXJlJzsKJGxhbmdbJ3Nob3d0ZXN0aW5nb3V0cHV0J10gPSAnQXJhdGEgcmV6dWx0YXR1bCB0ZXN0YXJpaSc7CiRsYW5nWyd0ZXN0YXJlYWVkaXRvciddID0gJ0VkaXRvciBkZSB0ZXN0YXJlJzsKJGxhbmdbJ3Rlc3RhcmVhb3V0cHV0J10gPSAnWm9uYSBpZXNpcmUgdGVzdGFyZSc7CiRsYW5nWyd0ZXN0YXJlYW91dHB1dHNvdXJjZSddID0gJ1N1cnNhIHpvbmVpIHRlc3RhcmlpJzsKJGxhbmdbJ2FsbG93cmVzaXppbmcnXSA9ICdTZSBwZXJtaXRlIHJlZGltZW5zaW9uYXJlYSBjYW1wdWx1aSBlZGl0b3J1bHVpIGluIGxvY3VsIGluIGNhcmUgc2UgYWZsYSc7CiRsYW5nWydyZXNpemVub25lJ10gPSAnTnUgc2UgcGVybWl0ZSByZWRpbWVuc2lvbmFyZWEnOwokbGFuZ1sncmVzaXplYm90aCddID0gJ1NlIHBlcm1pdGUgcmVkaW1lbnNpb25hcmVhIGluIGFtYmVsZSBkaXJlY3RpaSc7CiRsYW5nWydyZXNpemVoZWlnaHQnXSA9ICdTZSBwZXJtaXRlIG51bWFpIHJlZGltZW5zaW9uYXJlYSBpbmFsdGltaWknOwokbGFuZ1snZGF0ZXRpbWVmb3JtYXRfdGV4dCddID0gJ0Zvcm1hdCBkYXRhL3RpbXAnOwokbGFuZ1sndGltZXRleHQnXSA9ICdUaW1wJzsKJGxhbmdbJ2RhdGV0ZXh0J10gPSAnRGF0YSc7CiRsYW5nWydkYXRldGltZWZvcm1hdF9oZWxwJ10gPSAnQ2xpYyBhaWNpIHBlbnRydSBhIHByaW1pIGFqdXRvciBkZXNwcmUgY3VtIHNlIGZvcm1hdGVhemEgZGF0YS90aW1wdWwnOwokbGFuZ1snZXh0cmFjb25maWd0ZXh0J10gPSAnRXh0cmEgY29uZmlndXJhcmUnOwokbGFuZ1snZXh0cmFjb25maWdoZWxwMiddID0gJ08gc2luZ3VyYSBkZWNsYXJhdGllIHBlciBsaW5pZSwgdmlyZ3VsZWxlIHZvciBmaSBhZGF1Z2F0ZSBpbmFpbnRlIHNpIGR1cGEgYWNlc3QgY29udGludXQuIFZlZGV0aSBpbiBUaW55TUNFLXdpa2kgcGVudHJ1IGluc3RydWN0aXVuaS4nOwokbGFuZ1snY3VzdG9tZHJvcGRvd250ZXh0J10gPSAnRHJvcGRvd24gY3VzdG9tJzsKJGxhbmdbJ2N1c3RvbWRyb3Bkb3duaGVscCddID0gJ0luc2VyZWF6YSBidWNhdGkgY3VzdG9taXphYmlsZSBkZSBjb2QvdGV4dCBwcmluIHNlbGVjdGlhIGxvciBkaW50ci11biBtZW5pdSBkcm9wZG93bi4gDQpVdGlsaXphcmkgZXZpZGVudGUgc3VudCBwZW50cnUgYWNjY2VzIGZhY2lsIGxhIHRhZ3VyaSBldGMuIE1lbml1bCBlc3RlIGluc2VyYXQgaW4gYmFyYSBkZSB1bmxldGUgZm9sb3NpbmQgJiMwMzk7Y3VzdG9tZHJvcGRvd24mIzAzOTsuJzsKJGxhbmdbJ3N0YXJ0ZW5hYmxlZHRleHQnXSA9ICdTdGFydHVwIGFjdGl2YXQnOwokbGFuZ1snc3RhcnRlbmFibGVkaGVscCddID0gJ0RlYmlmYW5kIGFjZWFzdGEgY2FzdXRhIHNlIHBvcm5lc2MgZWRpdG9hcmVsZSBUaW55IGludHItbyBzdGFyZSBkZXphY3RpdmF0YS4gQXIgdHJlYnVpIHNhIGZpZSBmb2xvc2l0YSBpbXByZXVuYSBjdSBidXRvbnVsIGRlIHN0YXJlLic7CiRsYW5nWydsb2FkY21zbGlua2VydGV4dCddID0gJ0luY2FyY2FyZSBDTVMtbGlua2VyJzsKJGxhbmdbJ2xvYWRjbXNsaW5rZXJoZWxwJ10gPSAnQWNlYXN0YSBzZXRhcmUgZ2VuZXJlYXphIGNvZHVsIGphdmFzY3JpcHQgZGUgY2FyZSBlc3RlIG5ldm9pZSBwZW50cnUgYSBwZXJtaXRlICYjMDM5O2Ntc2xpbmtlciYjMDM5OyBzYSBmaWUgYWRhdWdhdCBsYSBiYXJhIGRlIHVuZWx0ZS4nOwokbGFuZ1snY21zbGlua2Vyc3R5bGV0ZXh0J10gPSAnU3RpbCBsaW5rIENNUy1saW5rZXInOwokbGFuZ1snY21zc2VsZmxpbmtzdHlsZSddID0gJ1N0aWwge2Ntc19zZWxmbGlua30nOwokbGFuZ1snYWhyZWZzdHlsZSddID0gJ3N0aWwtPGEgaHJlZj4nOwokbGFuZ1snY21zbGlua2VyYWRkc3RleHQnXSA9ICdBZGF1Z2lyaSBwZW50cnUgQ01TLWxpbmtlcic7CiRsYW5nWydjbXNsaW5rZXJhZGRzaGVscCddID0gJ1RoaXMgYWxsb3dzIHlvdSB0byBhZGQgc3R1ZmYgdG8gZWl0aGVyIHRoZSA8YSBocmVmPi10YWcgb3Ige2Ntc19zZWxmbGlua30sIHdoZW4gZ2VuZXJhdGVkIGJ5IENNUy1saW5rZXIuJzsKJGxhbmdbJ2F2b2lkbGlua2NvbnZlcnNpb250ZXh0J10gPSAnRXZpdGFyZSBjb252ZXJ0aXJlIGxlZ2F0dXJpJzsKJGxhbmdbJ2F2b2lkbGlua2NvbnZlcnNpb25oZWxwJ10gPSAnVHVybnMgVGlueU1DRSYjMDM5O3MgYnVpbHRpbiBsaW5rIGNvbnZlcnNpb24gbG9naWMgb2ZmLiBNYWtlcyB7c21hcnR5fS11c2FnZSBpbiB1cmxzIHBvc3NpYmxlLic7CiRsYW5nWydyZWxhdGl2ZXVybHN0ZXh0J10gPSAnR2VuZXJhcmUgdXJsLXVyaSByZWxhdGl2ZSc7CiRsYW5nWydmb3JjZWNsZWFucGFzdGV0ZXh0J10gPSAnRm9ydGFyZSBjdXJhdGFyZSBsYSBsaXBpcmUgKHBhc3RlKSc7CiRsYW5nWydmb3JjZWNsZWFucGFzdGVoZWxwJ10gPSAnQWNlYXN0YSBzZXRhcmUgYXIgdHJlYnVpIHNhIGZpZSBhY3RpdmF0ZSBwZW50cnUgYSBpbmxhdHVyYSBjb2R1cmlsZSBjaXVkYXRlIGRlIGZvcm1hdGFyZSBjYW5kIHNlIGxpcGVzdGUgZGluIFdvcmQgZXRjLic7CiRsYW5nWydib2R5Y3NzX3RleHQnXSA9ICdDU1MgdGFnIGJvZHknOwokbGFuZ1snYm9keWNzc19oZWxwJ10gPSAnVmEgZmkgYWRhdWdhdCBsYSBkZWZpbml0aWEgY3NzIGEgZWxlbWVudHVsdWkgYm9keS4gSGludDogQ3Vsb2FyZWEgZGUgZnVuZGFsIHBvYXRlIGZpIHNldGF0YSBmb2xvc2luZCAmcXVvdDtiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZSZxdW90Oyc7CiRsYW5nWydpbmNsdWRlb25seXNjcmVlbmNzc190ZXh0J10gPSAnSW5jbHVkZSBudW1haSBDU1Mgc2NyZWVuJzsKJGxhbmdbJ2luY2x1ZGVvbmx5c2NyZWVuY3NzX2hlbHAnXSA9ICdEYWNhIHNlIHNlbGVjdGVhemEgYWNlYXN0YSBvcHRpdW5lIG51bWFpIHN0eWxlc2hlZXQtdXJpbGUgYXRhc2F0ZSBjdSBtZWRpYXR5cGU6IHNjcmVlbiB2b3IgZmkgaW5jbHVzZSBpbiBzdGlsdXJpbGUgcGUgY2FyZSBUaW55TUNFIGxlIGdlc3Rpb25lYXphLic7CiRsYW5nWyd1c2VzdGF0aWNjb25maWd0ZXh0J10gPSAnRm9sb3NpcmUgZmlzaWVyIGNvbmZpZ3VyYXJlIHN0YXRpYyc7CiRsYW5nWyd1c2VzdGF0aWNjb25maWdoZWxwJ10gPSAnQWNlYXN0YSBzZXRhcmUgcG9hdGUgYWp1dGEgc2EgbWVhcmdhIFRpbnlNQ0UgcGUgc2lzdGVtZWxlIHVuZGUgaG9zdGluZ3VsIGFkYXVnYSBzdGF0aXN0aWNpIGV0Yy4gbGEgb3JpY2Ugb3V0cHV0LCBzdHJpY2FuZCBmaXNpZXJ1bCBkZSBjb25maWd1cmFyZSBqYXZhc2NyaXB0IGNyZWF0IGRpbmFtaWMnOwokbGFuZ1sndXNlc3RhdGljY29uZmlnd2FybmluZyddID0gJ0F0ZW50aWUhIEF2ZXRpIG9wdGl1bmVhIGRlIGZpc2llciBkZSBjb25maWd1cmFyZSBzdGF0aWMgYWN0aXZhdGEgZGFyIGZvbGRlcnVsIC90bXAvIG51IGFyZSBwZXJtaXNpdW5pIGRlIHNjcmllcmUuIEFjZXN0IGx1Y3J1IHZhIGltcGllZGljYSBtb2R1bHVsIHNhIHNhbHZlemUgZmlzaWVydWwgc3RhdGljIGRlIGNvbmZpZ3VyYXJlIHNpIHN1bnQgc2Fuc2UgZm9hcnRlIG1hcmkgY2EgVGlueU1DRSBzYSBOVSBmaWUgb3BlcmF0aW9uYWwuJzsKJGxhbmdbJ2lnbm9yZW1vZGlmeWZpbGVzdGV4dCddID0gJ0lnbm9yYSAmIzAzOTtNb2RpZmljYSBGaXNpZXJ1bCYjMDM5OyBwZXJtaXNpdW5lIHBlbnRydSBGaWxlUGlja2VyJzsKJGxhbmdbJ2lnbm9yZW1vZGlmeWZpbGVzaGVscCddID0gJ0F0ZW50aWUhIEFjZWFzdGEgcGVybWl0ZSBvIGFudW1pdGEgb3BlcmF0aXVuZSBmaXNpZXItbW9kaWZpY2EgIGNoaWFyIGRhY2EgcGVybWlzaXVuZWEgJiMwMzk7TW9maWNhIEZpc2llciYjMDM5OyBudSBlc3RlIHNldGF0YSBwZW50cnUgZ3J1cHVsIGRlIHV0aWxpemF0b3JpIGN1cmVudC4gQWNlc3RhIHBvYXRlIGZpIGVmZWN0aXYgZm9sb3NpdCBpbXByZXVuYSBjdSBvcHRpdW5lYSBwZW50cnUgcmVzdHJpY3Rpb25hcmVhICBhY2Nlc3VsdWkgYSBkaXJlY3RvcnVsdWkgdW50aWxhemF0b3InOwokbGFuZ1snc2hvd3RvZ2dsZWJ1dHRvbl90ZXh0J10gPSAnQWZpc2FyZSBjaGVja2JveCBwZW50cnUgcG9ybmlyZS9vcHJpcmUgd3lzaXd5Zyc7CiRsYW5nWyd0b2dnbGV3eXNpd3lnJ10gPSAnUG9ybmlyZS9vcHJpcmUgV1lTSVdZRyc7CiRsYW5nWydzdHlsZXNfdGFiJ10gPSAnU3RpbHVyaSBDU1MnOwokbGFuZ1snc3R5bGVzX2hlbHAnXSA9ICcgRGFjYSBsYXNhdGkgY2FtcHVsIGdvbCwgVGlueU1DRSB2YSBwYXJzYSBzdGlsZXNoZWV0LXVyaWxlIENTUyBzaSB2YSBsaXN0YSBjbGFzZWxlIGRlIHN0aWx1cmkgcGUgY2FyZSBsZSBjb250aW4uIA0KICBEYWNhIGRvcml0aSBjYSBudW1haSB1bmVsZSBzdGlsdXJpIHNhIGZpZSBhZmlzYXRlIHV0aWxpemF0b3J1bHVpLCBzcGVjaWZpY2F0aS1sZSBpbiBmb3JtYSAmcXVvdDtDdXN0b21OYW1lMT1zdHlsZTE7IEN1c3RvbU5hbWUyPXN0eWxlMiZxdW90OywgDQogICZxdW90O3N0eWxlMSZxdW90OyBmaWluZCBvIGNsYXNhIGRpbiBzdHlsZXNoZWV0IHNpIG51IHB1bmV0aSAuIChwdW5jdHVsKSBmb2xvc2l0IGluIG1vZCBub3JtYWwgcGVudHJ1IHNlbGVjdG9yaWkgZGUgY2xhc2UgcGVudHJ1IGV4aXN0YSBkZWphIGluIENTUywgdmEgYXJhdGEgYXNhIDxzcGFuIGNsYXNzPSZxdW90O3N0eWxlMSZxdW90Oz50ZXh0PC9zcGFuPiwgaW4gcHJpbXVsIGNhbXAgZGUgbWFpIGpvcy4gDQonOwokbGFuZ1snY3NzX3N0eWxlc190ZXh0J10gPSAnU3RpbHVyaSc7CiRsYW5nWydhY2Nlc3NkZW5pZWQnXSA9ICdBY2NlcyBJbnRlcnppcy4gVmVyaWZpY2F0aSBwZXJtaXNpdW5pbGUuJzsKJGxhbmdbJ2Vycm9yJ10gPSAnRXJvYXJlISc7CiRsYW5nWydzdWJtaXQnXSA9ICdUcmltaXRlcmUnOwokbGFuZ1sndXBkYXRlJ10gPSAnQWN0dWFsaXphcmUnOwokbGFuZ1snc2F2ZXNldHRpbmdzJ10gPSAnU2FsdmFyZSBzZXRhcmknOwokbGFuZ1snc2V0dGluZ3MnXSA9ICdTZXRhcmknOwokbGFuZ1snc2V0dGluZ3NzYXZlZCddID0gJ1NldGFyaWxlIGF1IGZvc3Qgc2FsdmF0ZSc7CiRsYW5nWydzYXZlYWR2YW5jZWQnXSA9ICdTYWx2YXJlIHNldGFyaSBhdmFuc2F0ZSc7CiRsYW5nWydhZHZhbmNlZHNhdmVkJ10gPSAnU2V0YXJpbGUgYXZhbnNhdGUgYXUgZm9zdCBzYWx2YXRlJzsKJGxhbmdbJ3Rvb2xiYXJzYXZlZCddID0gJ0JhcmEgZGUgdW5lbHRlIGEgZm9zdCBzYWx2YXRhJzsKJGxhbmdbJ3N0eWxlc3NhdmVkJ10gPSAnU3RpbHVyaWxlIGF1IGZvc3Qgc2FsdmF0ZSc7CiRsYW5nWyd0ZXN0YXJlYXRleHQnXSA9ICc8cD5BcmllIGRlIHRlc3QsIG5pY2kgdW4gZmVsIGRlIGNvbnRpbnV0IG51IHZhIGZpIHN0cmljYXQgZGFjYSB2YSBqdWNhdGkgYWljaS4uLjwvcD4nOwokbGFuZ1sncmVzZXQnXSA9ICdSZXNldGFyZSBsYSBzZXRhcmlsZSBpbXBsaWNpdGUnOwokbGFuZ1sncmVzZXRhbGwnXSA9ICdSZXNldGF0aSB0b2F0ZSBzZXRhcmlsZSBsYSB2YWxvcmlsZSBpbXBsaWNpdGUnOwokbGFuZ1snY29uZmlybXJlc2V0J10gPSAnU3VudGV0aSBzaWd1ciBjYSBkb3JpdGkgc2EgcmVzZXRhdGkgYWNlc3RlIHNldGFyaSBsYSB2YWxvcmlsZSBsb3IgaW1wbGljaXRlPyc7CiRsYW5nWydjb25maXJtcmVzZXRhbGwnXSA9ICdTdW50ZXRpIHNpZ3VyIGNhIGRvcml0aSBzYSByZXNldGF0aSBUT0FURSBzZXRhcmlsZSBsYSB2YWxvcmlsZSBpbXBsaWNpdGU/JzsKJGxhbmdbJ3NldHRpbmdzcmVzZXQnXSA9ICdBY2VzdGUgc2V0YXJpIGF1IGZvc3QgcmVzZXRhdGUgbGEgdmFsb3JpbGUgaW1wbGljaXRlJzsKJGxhbmdbJ2FsbHNldHRpbmdzcmVzZXQnXSA9ICdUb2F0ZSBzZXRhcmlsZSBhdSBmb3N0IHJlc2V0YXRlIGxhIHZhbG9yaWxlIGltcGxpY2l0ZSc7CiRsYW5nWyd1cGdyYWRlZCddID0gJ2EgZm9zdCBhY3R1YWxpemF0IGxhIHZlcnNpdW5lYSAlcyc7CiRsYW5nWydjdXN0b21kcm9wZG93biddID0gJ01lbml1IGRyb3Bkb3duIGN1c3RvbSc7CiRsYW5nWydjbXNtc2xpbmtlciddID0gJ0luc2VyYXJlIGxpbmsgY2F0cmUgcGFnaW5hIGNtc21zJzsKJGxhbmdbJ2JhY2tlbmRfdG9vbGJhcnMnXSA9ICdTZXRhcmkgcHJvZmlsIGFyaWUgYWRtaW5pc3RyYXJlJzsKJGxhbmdbJ2Zyb250ZW5kX3Rvb2xiYXJzJ10gPSAnU2V0YXJyaSBwcm9maWwgZnJvbnRlbmQnOwokbGFuZ1sncGx1Z2luc190YWInXSA9ICdQbHVnaW4tdXJpJzsKJGxhbmdbJ3BsdWdpbnNfaGVscCddID0gJ0FsZWdldGkgcGx1Z2luLXVyaWxlIHBlIGNhcmUgZG9yaXRpIHNhIGxlIGFjdGl2YXRpLiBEb2N1bWVudGF0aWEgcG9hdGUgZmkgZ2FzaXRhIDxhIGhyZWY9IiVzIiB0YXJnZXQ9Il9ibGFuayI+YWljaTwvYT4nOwokbGFuZ1sncGx1Z2luc190ZXh0J10gPSAnUGx1Z2luLXVyaSc7CiRsYW5nWydzYXZlcGx1Z2lucyddID0gJ1NhbHZhcmUgcGx1Z2luLXVyaSc7CiRsYW5nWydwbHVnaW5zc2F2ZWQnXSA9ICdQbHVnaW4tdXJpbGUgYXUgZm9zdCBzYWx2YXRlJzsKJGxhbmdbJ3BsdWdpbnNfbW9kdWxlJ10gPSAnUGx1Z2luLXVyaSBNb2R1bCc7CiRsYW5nWydwbHVnaW5zX2NvbW1vbiddID0gJ1BsdWdpbi11cmkgQ29tdW5lJzsKJGxhbmdbJ21vZHVsZSddID0gJ01vZHVsJzsKJGxhbmdbJ2Rlc2NyaXB0aW9uJ10gPSAnRGVzY3JpZXJlJzsKJGxhbmdbJ3BsdWdpbiddID0gJ1BsdWdpbiAnOwokbGFuZ1sneW91YXJlaW50ZXh0J10gPSAnU3VudGV0aSBsYSc7CiRsYW5nWydsb2Fkc3R5bGVzaGVldHRleHQnXSA9ICdJbmNhcmNhcmUgc3R5bGVzaGVldCBwZW50cnUgY29udGludXQgKHJlY29tYW5kYXQpJzsKJGxhbmdbJ2V4dHJhc3R5bGVzdGV4dCddID0gJ0FkYXVnaXJpIGxhIHN0eWxlc2hlZXQnOwokbGFuZ1snZXh0cmFzdHlsZXNoZWxwJ10gPSAnQ1NTLXVsIGludHJvZHVzIGFpY2kgdmEgZmkgYWRhdWdhdCBsYSBzdHlsZXNoZWV0LXVsIGNpdGl0IGRlIFRpbnlNQ0UgZHVwYSBjZSBwcmltZXN0ZSBzdGlsdXJpbGUgQ01TbXMnOwokbGFuZ1sndXBsb2FkbmV3ZmlsZSddID0gJ0Zpc2llciBub3UnOwokbGFuZ1sndXBsb2FkZmlsZSddID0gJ1VwbG9hZCAnOwokbGFuZ1snY3JlYXRlbmV3ZGlyJ10gPSAnRm9sZGVyIG5vdSc7CiRsYW5nWydjcmVhdGVkaXInXSA9ICdDcmVhcmUnOwokbGFuZ1snbm9kaXJuYW1lJ10gPSAnTnUgYSBmb3N0IGRhdCB1biBudW1lIGRlIGZvbGRlcic7CiRsYW5nWydkaXJleGlzdHMnXSA9ICdOdW1lbGUgZGUgZm9sZGVyIGV4aXN0YSBkZWphJzsKJGxhbmdbJ25ld2RpcmNyZWF0ZWQnXSA9ICdGb2xkZXJ1bCBub3UgYSBmb3N0IGNyZWF0JzsKJGxhbmdbJ25ld2RpcmZhaWxlZCddID0gJ08gZXJvYXJlIGEgYXBhcnV0IGxhIGNyZWFyZSBmb2xkZXInOwokbGFuZ1snbm9maWxlJ10gPSAnTmljaSB1biBmaXNpZXIgbnUgYSBmb3N0IHVwbG9hZGF0JzsKJGxhbmdbJ2ZpbGV0b29iaWcnXSA9ICdGaXNpZXJ1bCB1cGxvYWRhdCBlc3RlIHByZWEgbWFyZSc7CiRsYW5nWydjb250YWluc2lsbGVnYWxjaGFycyddID0gJ051bWVsZSBmaXNpZXJ1bHVpIGNvbnRpbmUgdW51bCBzYXUgbWFpIG11bHRlIGNhcmFjdGVyZSBpbGVnYWxlICgmIzAzOTssJnF1b3Q7LCssKixcLC8sJmFtcDssJCknOwokbGFuZ1sndXBsb2FkZmFpbGVkJ10gPSAnRXJvYXJlIGxhIG11dGFyZSBmaXNpZXIgdXBsb2FkYXQgbGEgbG9jdWwgbHVpJzsKJGxhbmdbJ2ZpbGV1cGxvYWRlZCddID0gJ0Zpc2llciB1cGxvYWRhdCBjdSBzdWNjZXMnOwokbGFuZ1snbm90YW5pbWFnZSddID0gJ0Zpc2llcnVsIGluY2FyY2F0IG51IGVzdGUgbyBpbWFnaW5lJzsKJGxhbmdbJ2ZpbGVwaWNrZXJ0aXRsZSddID0gJ1NlbGVjdGllIGZpc2llciBDTVNNYWRlU2ltcGxlJzsKJGxhbmdbJ3N1Y2Nlc3MnXSA9ICdTdWNjZXMnOwokbGFuZ1snZmlsZW9wZXJhdGlvbnMnXSA9ICdPcGVyYXRpdW5pIGZpc2llcmUnOwokbGFuZ1sndGhvdXNhbmRkZWxpbWl0ZXInXSA9ICcsICc7CiRsYW5nWydzaXplJ10gPSAnRGltZW5zaXVuZSc7CiRsYW5nWydkaW1lbnNpb25zJ10gPSAnTHhIICc7CiRsYW5nWydhZHZhbmNlZF90YWInXSA9ICdBdmFuc2F0JzsKJGxhbmdbJ2hlbHAnXSA9ICcJPGgzPkNlIGZhY2UgYWNlc3RhPzwvaDM+DQoJPHA+UGVybWl0ZSBmb2xvc2lyZWEgVGlueU1DRSBjYSBlZGl0b3IgV1lTSVdZRy48L3A+DQoJPGgzPkN1bSBzZSBmb2xvc2VzdGU/PC9oMz4NCgk8cD5JbnN0YWxhdGktbCwgYXBvaSBtZXJnZXRpIGxhIFByZWZlcmludGUgdXRpbGl6YXRvciBzaSBzZXRhdGkgVGlueU1DRSBjYSBlZGl0b3Igd3lzaXd5ZyBwcmVmZXJhdC48L3A+DQoJPGgzPlByb2JsZW1lPC9oMz4NCgl1bmlpIHV0aWxpemF0b3JpIGF1IHByb2JsZW1lIGN1IFRpbnkgbGEgbW9kdSBjYSBudSBzZSBhZmlzZWF6YSBkdXBhIGluc3RhbGFyZSBzYXUgYWN0dWFsaXphcmUuIEFpY2kgZXN0ZSB1biBjaGVja2xpc3QgZGUgbHVjcnVyaSBwZSBjYXJlIGxlIHB1dGV0aSBpbmNlcmNhIGluYWludGUgZGUgYSBjZXJlIGFqdXRvciBtYWkgZGVwYXJ0ZS4NCgk8YnIvPg0KCTx1bD4NCgk8bGk+MS4gVmEgcnVnYW0sIFZBIFJVR0FNLCBpbmNlcmNhdGkgc2EgcmUtdXBsb2FkYXRpIGZvbGRlcnVsIG1vZHVsZXMvVGlueU1DRSBwZSBzZXJ2ZXIuIEF0aSBmaSB1aW1pdGkgc2EgYWZsYXRpIGRlIGNhdGUgb3JpIGFjZXN0IGx1Y3J1IGEgc2FsdmF0IHNpdHVhdGlhLjwvbGk+DQoJPGxpPjIuIEluY2VyY2F0aSBzYSBhY3RpdmF0aSBvcHRpdW5lYSBkZSBmaXNpZXIgY29uZmlndXJhcmUgc3RhdGljLiBOb3RhdGkgY2EgYWNlc3QgbHVjcnUgY2VyZSBjYSBmb2xkZXJ1bCAvdG1wLyBzYSBhaWJhIHBlcm1pc2l1bmkgZGUgc2NyaWVyZSBwZW50cnUgd2Vic2VydmVyPC9saT4NCgk8bGk+My4gRGFjYSBhY3R1YWxpemF0aSwgaW5jZXJjYXRpIHNhIHJlc2V0YXRpIHRvYXRlIHNldGFyaWxlLiBOdSBlIGZydW1vcyBkYWNhIGF0aSBmYWN1dCBvIG11bHRpbWUgZGUgbW9kaWZpY2FyaSwgc3RpbSwgZGFyIG8gbXVsdGltZSBkZSBsdWNydXJpIHNlIHBvdCBzY2hpbWJhIGRlIGxhIHZlcnNpdW5lIGxhIHZlcnNpdW5lLjwvbGk+DQoJPC91bD4NCgk8YnIvPg0KCQkNCic7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjg3OTQ1NjMzNy4xMzI4MjU4MjQxLjEzMjgyNTgyNDEuMTMyODI1ODI0MS4xJzsKJGxhbmdbJ3V0bWInXSA9ICcxNTY4NjEzNTMuMS4xMC4xMzI4MjU4MjQxJzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwokbGFuZ1sndXRteiddID0gJzE1Njg2MTM1My4xMzI4MjU4MjQxLjEuMS51dG1jc3I9Z29vZ2xlfHV0bWNjbj0ob3JnYW5pYyl8dXRtY21kPW9yZ2FuaWN8dXRtY3RyPWNtc21zJzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/ru_RU.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1RpbnlNQ0Ug0JLQuNC30YPQsNC70YzQvdGL0Lkg0YDQtdC00LDQutGC0L7RgCc7CiRsYW5nWydhZG1pbmRlc2NyaXB0aW9uJ10gPSAn0K3RgtC+0YIg0LzQvtC00YPQu9GMINC/0L7Qt9Cy0L7Qu9GP0LXRgiDRgNC10LTQsNC60YLQuNGA0L7QstCw0YLRjCDQutC+0L3RgtC10L3RgiDQuNC70Lgg0LTRgNGD0LPQuNC1INCy0LjQtNGLINC00LDQvdC90YvRhS4nOwokbGFuZ1sndW5pbnN0YWxsZWQnXSA9ICfQnNC+0LTRg9C70Ywg0YPQtNCw0LvQtdC9Lic7CiRsYW5nWydpbnN0YWxsZWQnXSA9ICfQnNC+0LTRg9C70Ywg0LLQtdGA0YHQuNC4ICVzINGD0YHRgtCw0L3QvtCy0LvQtdC9Lic7CiRsYW5nWydzdHJpcGJhY2tncm91bmR0YWdzJ10gPSAn0KPQtNCw0LvQuNGC0Ywg0YLQtdCz0Lgg0YTQvtC90LAg0LjQtyBDU1MnOwokbGFuZ1snc3RpcHRhZ3NfaGVscCddID0gJ9Cj0LTQsNC70LjRgtGMINGE0L7QvSDRgdCw0LnRgtCwINC40Lcg0YDQtdC00LDQutGC0L7RgNCwLic7CiRsYW5nWydzb3VyY2VfZm9ybWF0dGluZ190ZXh0J10gPSAn0J/RgNC40LzQtdC90LjRgtGMINGE0L7RgNC80LDRgtC40YDQvtCy0LDQvdC40LUg0LTQu9GPINCy0YvQstC+0LTQsCBIVE1MJzsKJGxhbmdbJ2Ryb3Bkb3duYmxvY2tmb3JtYXRzX3RleHQnXSA9ICfQpNC+0YDQvNCw0YLRiyDQsdC70L7QutC+0LIg0LIg0LLRi9C/0LDQtNCw0Y7RidC10Lwg0LzQtdC90Y4nOwokbGFuZ1snYWxsb3d0YWJsZXMnXSA9ICfQlNC+0LHQsNCy0LjRgtGMINC+0L/QtdGA0LDRhtC40Lgg0YEg0YLQsNCx0LvQuNGG0LDQvNC4JzsKJGxhbmdbJ25ld2xpbmVzdHlsZV90ZXh0J10gPSAn0KHRgtC40LvRjCDQtNC70Y8g0L3QvtCy0L7QuSDRgdGC0YDQvtC60LgnOwokbGFuZ1sncHN0eWxlJ10gPSAn0L/QsNGA0LDQs9GA0LDRhCAoSFRNTCDRgtC10LMgcCknOwokbGFuZ1snYnJzdHlsZSddID0gJ9C/0LXRgNC10L3QvtGBIChIVE1MINGC0LXQsyBiciknOwokbGFuZ1sndXNlY29tcHJlc3Npb250ZXh0J10gPSAn0JjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGMINGB0LbQsNGC0LjQtSBneic7CiRsYW5nWyd1c2Vjb21wcmVzc2lvbmhlbHAnXSA9ICfQrdGC0L4g0L/QvtC30LLQvtC70Y/QtdGCINGD0LLQtdC70LjRh9C40YLRjCDRgdC60L7RgNC+0YHRgtGMINC30LDQs9GA0YPQt9C60LggVGlueU1DRSwg0J3QniDRgtCw0LrQttC1INC80L7QttC10YIg0L/QvtC80LXRiNCw0YLRjCDQtdCz0L4g0LfQsNCz0YDRg9C30LrQtSDQvdCwINC90LXQutC+0YLQvtGA0YvRhSDRgdC40YHRgtC10LzQsNGFLiDQmNGB0L/QvtC70YzQt9GD0LnRgtC1INGBINC+0YHRgtC+0YDQvtC20L3QvtGB0YLRjNGOLic7CiRsYW5nWydmb3JjZWRyb290YmxvY2t0ZXh0J10gPSAn0JLRgdC10LPQtNCwINC00L7QsdCw0LLQu9GP0YLRjCBIVE1MINGC0LXQsyBwLCDQutCw0Log0L/QtdGA0LLRi9C5INC4INC+0YHQvdC+0LLQvdC+0Lkg0LIg0LrQvtC90YLQtdC90YLQtS4nOwokbGFuZ1snZm9yY2Vkcm9vdGJsb2NraGVscCddID0gJ9CS0YHQtdCz0LTQsCDQt9Cw0LrQu9GO0YfQsNGC0Ywg0YLQtdC60YHRgiDQsdC10Lcg0YLQtdCz0L7QsiDQsiBIVE1MINGC0LXQsyBwJzsKJGxhbmdbJ2ZpbGVwaWNrZXJzdHlsZSddID0gJ0PRgtC40LvRjCBGaWxlcGlja2VyJzsKJGxhbmdbJ2ZpbGVwaWNrZXJzaXplJ10gPSAn0KDQsNC30LzQtdGAIEZpbGVwaWNrZXInOwokbGFuZ1snYWxsb3d1cGxvYWR0ZXh0J10gPSAn0KDQsNC30YDQtdGI0LjRgtGMINC30LDQs9GA0YPQt9C60YMg0YTQsNC50LvQvtCyINC4INGB0L7Qt9C00LDQvdC40LUg0L/QsNC/0L7QuiDRh9C10YDQtdC3IEZpbGVQaWNrZXInOwokbGFuZ1snYWxsb3dzY2FsaW5ndGV4dCddID0gJ9Cg0LDQt9GA0LXRiNC40YLRjCDQsNCy0YLQvtC80LDRgtC40YfQtdGB0LrQvtC1INC40LfQvNC10L3QtdC90LjQtSDRgNCw0LfQvNC10YDQvtCyINC30LDQs9GA0YPQttC10L3QvdGL0YUg0LrQsNGA0YLQuNC90L7Quic7CiRsYW5nWydzY2FsaW5nZGltZW5zaW9uc3RleHQnXSA9ICfQoNCw0LfQvNC10YDRiyDQv9C+LdGD0LzQvtC70YfQsNC90LjRjic7CiRsYW5nWydyZXNpemV0byddID0gJ9CY0LfQvNC10L3QuNGC0Ywg0YDQsNC30YDQtdGI0LXQvdC40LUg0L3QsDonOwokbGFuZ1snbWFrZXRodW1ibmFpbCddID0gJ9Ch0L7Qt9C00LDQstCw0YLRjCDRjdGB0LrQuNC3INCy0L4g0LLRgNC10LzRjyDQt9Cw0LPRgNGD0LfQutC4INGE0LDQudC70L7Qsic7CiRsYW5nWyd1c2VhZHZhbmNlZHByb2ZpbGUnXSA9ICfQmNGB0L/QvtC70YzQt9C+0LLQsNGC0Ywg0YPQu9GD0YfRiNC10L3QvdGL0Lkg0L/RgNC+0YTQuNC70YwgVGlueU1DRSc7CiRsYW5nWydzYXZlcHJvZmlsZSddID0gJ9Ch0L7RhdGA0LDQvdC40YLRjCDQv9GA0L7RhNC40LvRjCc7CiRsYW5nWydwcm9maWxlc2F2ZWQnXSA9ICfQn9GA0L7RhNC40LvRjCDRgdC+0YXRgNCw0L3QtdC9JzsKJGxhbmdbJ3Byb2ZpbGVzX3RhYiddID0gJ9Cf0YDQvtGE0LjQu9C4JzsKJGxhbmdbJ2FkdmFuY2VkX2JhY2tlbmRfdG9vbGJhcnMnXSA9ICfQn9Cw0L3QtdC70Ywg0LjQvdGB0YLRgNGD0LzQtdC90YLQvtCyINC00LvRjyDQsNC00LzQuNC90LjRgdGC0YDQsNGC0L7RgNC+0LInOwokbGFuZ1snc2F2ZXN0eWxlcyddID0gJ9Ch0L7RhdGA0LDQvdC40YLRjCDQvdCw0YHRgtGA0L7QudC60LgnOwokbGFuZ1snYWxsb3dhZHZhbmNlZHByb2ZpbGUnXSA9ICfQoNCw0LfRgNC10YjQuNGC0Ywg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LUg0YDQsNGB0YjQuNGA0LXQvdC90L7Qs9C+INC/0YDQvtGE0LjQu9GPIFRpbnlNQ0UnOwokbGFuZ1snc2hvd2ZpbGVtYW5hZ2VtZW50J10gPSAn0J/QvtC60LDQt9Cw0YLRjCDQvtC/0YbQuNC4INGD0L/RgNCw0LLQu9C10L3QuNGPINGE0LDQudC70LDQvNC4JzsKJGxhbmdbJ3Nob3dmaWxlbWFuYWdlbWVudGhlbHAnXSA9ICfQn9C+0LrQsNC30LDRgtGMINGD0L/RgNCw0LLQu9C10L3QuNC1INGE0LDQudC70LDQvNC4ICjQt9Cw0LPRgNGD0LfQutCwLCDRgdC+0LfQtNCw0L3QuNC1INC/0LDQv9C60Lgg0Lgg0YPQtNCw0LvQtdC90LjQtSDRhNCw0LnQu9CwKSAg0LIgRmlsZVBpY2tlciwg0LXRgdC70Lgg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GMINC+0LHQu9Cw0LTQsNC10YIg0LTQvtGB0YLQsNGC0L7Rh9C90YvQvNC4INC/0YDQsNCy0LDQvNC4JzsKJGxhbmdbJ3Jlc3RyaWN0ZGlycyddID0gJ9Ce0LPRgNCw0L3QuNGH0LXQvdC40LUg0LTQvtGB0YLRg9C/0LAg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPJzsKJGxhbmdbJ3Jlc3RyaWN0ZGlyc2hlbHAnXSA9ICfQrdGC0LAg0L3QsNGB0YLRgNC+0LnQutCwINC/0L7Qt9Cy0L7Qu9GP0LXRgiDQvtCz0YDQsNC90LjRh9C40YLRjCDRg9C/0YDQsNCy0LvQtdC90LjRjyDRhNCw0LnQu9Cw0LzQuCDQvdCwINC/0L7QtNC60LDRgtCw0LvQvtCzINCyINC/0LDQv9C60LUgdXBsb2Fkcywg0LrQvtGC0L7RgNGL0Lkg0LjQvNC10LXRgiDRgtC+INC20LUg0L3QsNC30LLQsNC90LjQtSwg0YfRgtC+INC4INC70L7Qs9C40L0g0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPLiDQldGB0LvQuCDRgtCw0LrQvtC5INC/0L7QtNC60LDRgtCw0LvQvtCzINC90LUg0YHRg9GJ0LXRgdGC0LLRg9C10YIsINC+0L0g0LHRg9C00LXRgiDRgdC+0LfQtNCw0L0uINCf0L7QttCw0LvRg9C50YHRgtCwLCDQvtCx0YDQsNGC0LjRgtC1INCy0L3QuNC80LDQvdC40LUsINGN0YLQviDQsiDQvdCw0YHRgtC+0Y/RidC10LUg0LLRgNC10LzRjyDRjdGC0L4g0L7Qs9GA0LDQvdC40YfQtdC90LjQtSDRgNCw0LHQvtGC0LDQtdGCINGC0L7Qu9GM0LrQviDQsiDQutCw0YLQsNC70L7Qs9C1IHVwbG9hZHMvaW1hZ2VzLiDQrdGC0L4g0LzQvtC20LXRgiDQuNC30LzQtdC90LjRgtGM0YHRjyDQsiDQsdGD0LTRg9GJ0LXQvC4nOwokbGFuZ1snZGVsZXRlY29uZmlybWF0aW9uJ10gPSAn0JLRiyDRg9Cy0LXRgNC10L3RiyDRh9GC0L4g0YXQvtGC0LjRgtC1INGD0LTQsNC70LjRgtGMINGN0YLQvtGCINGE0LDQudC7PyAnOwokbGFuZ1snZGVsZXRlZmlsZXN1Y2Nlc3MnXSA9ICfQsdGL0Lsg0YPRgdC/0LXRiNC90L4g0YPQtNCw0LvQtdC9JzsKJGxhbmdbJ2RlbGV0ZWZpbGVmYWlsZWQnXSA9ICfQvdC10LLQvtC30LzQvtC20L3QviDRg9C00LDQu9C40YLRjCc7CiRsYW5nWydkZWxldGVzdWJkaXJmYWlsZWQnXSA9ICfQvdC10LLQvtC30LzQvtC20L3QviDRg9C00LDQu9C40YLRjCc7CiRsYW5nWydkZWxldGVzdWJkaXJzdWNjZXNzJ10gPSAn0YPRgdC/0LXRiNC90L4g0YPQtNCw0LvQtdC90L4nOwokbGFuZ1snZGVsZXRlZGlyY29uZmlybWF0aW9uJ10gPSAn0JLRiyDRg9Cy0LXRgNC10L3Riywg0YfRgtC+INGF0L7RgtC40YLQtSDRg9C00LDQu9C40YLRjCDRjdGC0YMg0L/Rg9GB0YLRg9GOINC/0L7QtNC00LjRgNC10LrRgtC+0YDQuNGOPyc7CiRsYW5nWydkZWxldGVkaXInXSA9ICfQo9C00LDQu9C40YLRjCDQv9GD0YHRgtGD0Y4g0L/QvtC00LTQuNGA0LXQutGC0L7RgNC40Y4nOwokbGFuZ1snZGVsZXRlZmlsZSddID0gJ9Cj0LTQsNC70LjRgtGMINGE0LDQudC7JzsKJGxhbmdbJ2Nhbm5vdHJlYWRjb25maWcnXSA9ICfQndC10LLQvtC30LzQvtC20L3QviDQv9GA0L7Rh9C10YHRgtGMINGE0LDQudC7IHRpbnljb25maWcucGhwLCDQstC+0LfQvNC+0LbQvdC+IFRpbnlNQ0Ug0L3QtSDQsdGD0LTQtdGCINGA0LDQsdC+0YLQsNGC0YwuINCf0YDQvtCy0LXRgNGM0YLQtSDQv9GA0LDQstCwINC90LAg0LTQvtGB0YLRg9C/INC6INGE0LDQudC70YMg0Lgg0LXQs9C+INC/0LDQv9C60LU6INC00L7RgdGC0YPQv9C10L0g0LTQu9GPINCy0YHQtdGFINC90LAg0YfRgtC10L3QuNC1INC4INGC0L7Qu9GM0LrQviDQtNC70Y8g0LLQu9Cw0LTQtdC70YzRhtCwINC90LAg0LfQsNC/0LjRgdGMLiAnOwokbGFuZ1snZmlsZW5hbWVvbmx5J10gPSAn0J/QvtC60LDQt9GL0LLQsNGC0Ywg0LjQvNC10L3QsCDRhNCw0LnQu9C+0LInOwokbGFuZ1sndGh1bWJuYWlsc29ubHknXSA9ICfQn9C+0LrQsNC30YvQstCw0YLRjCDRg9C80LXQvdGM0YjQtdC90L3Ri9C1INC40LfQvtCx0YDQsNC20LXQvdC40Y8nOwokbGFuZ1snc2hvd3RodW1ibmFpbGZpbGVzdGV4dCddID0gJ9Cf0L7QutCw0LfRi9Cy0LDRgtGMINC80LDQu9C10L3RjNC60LjQtSDQuNC30L7QsdGA0LDQttC10L3QuNGPINGE0LDQudC70L7QsiDQsiDRgdC/0LjRgdC60LDRhSc7CiRsYW5nWydmaWxlbmFtZWFuZHRodW1ibmFpbHMnXSA9ICfQn9C+0LrQsNC30YvQstCw0YLRjCDQutCw0Log0LzQsNC70LXQvdGM0LrQuNC1INC40LfQvtCx0YDQsNC20LXQvdC40Y8g0YTQsNC50LvQvtCyINGC0LDQuiDQuCDQuNC80LXQvdCwJzsKJGxhbmdbJ3NraW5zdGV4dCddID0gJ9Ch0LrQuNC9JzsKJGxhbmdbJ3NraW52YXJpYXRpb250ZXh0J10gPSAn0KDQsNC30L3QvtCy0LjQtNC90L7RgdGC0Ywg0YHQutC40L3QsCc7CiRsYW5nWydhZHZhbmNlZHdhcm5pbmcnXSA9ICc8c3Ryb25nPtCS0L3QuNC80LDQvdC40LUhPGJyLz7QmNC30LzQtdC90LXQvdC40LUg0Y3RgtC40YUg0L/QsNGA0LDQvNC10YLRgNC+0LIg0LzQvtC20LXRgiDQv9GA0LjQstC10YHRgtC4INC6INGC0L7QvNGDLCDRh9GC0L4gVGlueU1DRSDQv9C10YDQtdGB0YLQsNC90LXRgiDRgNCw0LHQvtGC0LDRgtGMINC40LvQuCDQs9C10L3QtdGA0LjRgNGD0LXQvNGL0Lkg0LjQvCDQutC+0LQg0LHRg9C00LXRgiDRgdC+0LTQtdGA0LbQsNGC0Ywg0L7RiNC40LHQutC4LiDQoNC10LTQsNC60YLQuNGA0YPQudGC0LUg0Y3RgtC4INC90LDRgdGC0YDQvtC50LrQuCDRgtC+0LvRjNC60L4sINC10YHQu9C4INCS0Ysg0LfQvdCw0LXRgtC1LCDRh9GC0L4g0JLRiyDQtNC10LvQsNC10YLQtSEg0KfQuNGC0LDQudGC0LUg0LTQvtC60YPQvNC10L3RgtCw0YbQuNGOINC6IFRpbnlNQ0Ug0L3QsCDQvtGE0LjRhtC40LDQu9GM0L3QvtC8INGB0LDQudGC0LUsINC/0LXRgNC10LQg0YLQtdC8INC60LDQuiDQv9GA0L7QuNC30LLQvtC00LjRgtGMINC40LfQvNC10L3QtdC90LjRjy4gPC9zdHJvbmc+JzsKJGxhbmdbJ2VudGl0eWVuY29kaW5nX3RleHQnXSA9ICfQmtC+0LTQuNGA0L7QstCw0L3QuNC1INGB0LjQvNCy0L7Qu9C+0LInOwokbGFuZ1sncmF3ZW5jb2RpbmcnXSA9ICfQmtCw0Log0LXRgdGC0YwgKNCx0YvRgdGC0YDQviwg0YDQsNCx0L7RgtCw0LXRgiDQsiDQsdC+0LvRjNGI0LjQvdGB0YLQstC1INGB0LvRg9GH0LDQtdCyKSc7CiRsYW5nWyduYW1lZGVuY29kaW5nJ10gPSAn0JjQvNC10L3QvdC+0LUgKNC/0YDQuNC80LXRgCAgbmJzcDspJzsKJGxhbmdbJ251bWVyaWNlbmNvZGluZyddID0gJ9Cm0LjRhNGA0L7QstC+0LUgKNC/0YDQuNC80LXRgCAjMTYwOyknOwokbGFuZ1snc2hvd19wYXRoX3RleHQnXSA9ICfQn9C+0LrQsNC30LDRgtGMINC/0YPRgtGMINGN0LvQtdC80LXQvdGC0LAg0LIg0L3QuNC20L3QtdC5INGH0LDRgdGC0Lgg0YDQtdC00LDQutGC0L7RgNCwLic7CiRsYW5nWyd0b29sYmFyX3RhYiddID0gJ9Cf0LDQvdC10LvRjCDQuNC90YHRgtGA0YPQvNC10L3RgtC+0LInOwokbGFuZ1sndG9vbGJhcl9oZWxwJ10gPSAn0JfQtNC10YHRjCDQtNC+0LvQttC10L0g0YHRgtC+0Y/RgtGMINGB0L/QuNGB0L7QuiDQutC90L7Qv9C+0Log0YfQtdGA0LXQtyDQt9Cw0L/Rj9GC0YPRjiwg0LrQvtGC0L7RgNGL0LUg0LTQvtC70LbQvdGLINCx0YvRgtGMINCy0LrQu9GO0YfQtdC90Ysg0LIg0L/QsNC90LXQu9GMINC40L3RgdGC0YDRg9C80LXQvdGC0L7Qsi4nOwokbGFuZ1sndG9vbGJhcl90ZXh0J10gPSAn0J/QsNC90LXQu9GMINC40L3RgdGC0YDRg9C80LXQvdGC0L7Qsic7CiRsYW5nWyd0b29sYmFyaGVscHRleHQnXSA9ICfQndCw0LbQvNC40YLQtSDRgdGO0LTQsCwg0YfRgtC+0LHRiyDQv9C+0YHQvNC+0YLRgNC10YLRjCDQuNC90YHRgtGA0YPQutGG0LjQuCDQsiBUaW55TUNFLdCy0LjQutC4INC00LvRjyDQv9Cw0L3QtdC70Lgg0LjQvdGB0YLRgNGD0LzQtdC90YLQvtCyLic7CiRsYW5nWydlZGl0b3Jfd2lkdGhfdGV4dCddID0gJ9Co0LjRgNC40L3QsCDQvtC60L3QsCDRgNC10LTQsNC60YLQuNGA0L7QstCw0L3QuNGPJzsKJGxhbmdbJ2VkaXRvcl9oZWlnaHRfdGV4dCddID0gJ9CS0YvRgdC+0YLQsCDQvtC60L3QsCDRgNC10LTQsNC60YLQuNGA0L7QstCw0L3QuNGPJzsKJGxhbmdbJ2F1dG8nXSA9ICfQn9C+INGD0LzQvtC70YfQsNC90LjRjic7CiRsYW5nWydvciddID0gJ9C40LvQuCc7CiRsYW5nWyd1c2VodG1sNXNjaGVtZXRleHQnXSA9ICfQmNGB0L/QvtC70YzQt9C+0LLQsNGC0YwgSFRNTDUt0YHRhdC10LzRgywg0LLQvNC10YHRgtC+IEhUTUwgNCc7CiRsYW5nWyd0ZXN0YXJlYV90YWInXSA9ICfQotC10YHRgtC+0LLQvtC1INC/0L7Qu9C1JzsKJGxhbmdbJ3Nob3d0ZXN0aW5nb3V0cHV0J10gPSAn0J/QvtC60LDQt9Cw0YLRjCDRgNC10LfRg9C70YzRgtCw0YIg0YLQtdGB0YLQsCc7CiRsYW5nWyd0ZXN0YXJlYWVkaXRvciddID0gJ9Ci0LXRgdGC0L7QstC+0LUg0L/QvtC70Y8g0YDQtdC00LDQutGC0L7RgNCwJzsKJGxhbmdbJ3Rlc3RhcmVhb3V0cHV0J10gPSAn0KLQtdGB0YLQvtCy0L7QtSDQv9C+0LvRjyDQstGL0LTQsNGH0LgnOwokbGFuZ1sndGVzdGFyZWFvdXRwdXRzb3VyY2UnXSA9ICfQotC10YHRgtC+0LLQvtC1INC/0L7Qu9GPINC40YHRhdC+0LTQvdC+0LPQviDQutC+0LTQsCc7CiRsYW5nWydhbGxvd3Jlc2l6aW5nJ10gPSAn0KDQsNC30YDQtdGI0LjRgtGMINC40LfQvNC10L3QtdC90LjQtSDRgNCw0LfQvNC10YDQvtCyINC/0L7Qu9GPINGA0LXQtNCw0LrRgtC+0YDQsCc7CiRsYW5nWydyZXNpemVub25lJ10gPSAn0J3QtSDRgNCw0LfRgNC10YjQsNGC0Ywg0LjQt9C80LXQvdGP0YLRjCc7CiRsYW5nWydyZXNpemVib3RoJ10gPSAn0KDQsNC30YDQtdGI0LDRgtGMINC40LfQvNC10L3Rj9GC0Ywg0LIg0YjQuNGA0LjQvdGDINC4INCy0YvRgdC+0YLRgyc7CiRsYW5nWydyZXNpemVoZWlnaHQnXSA9ICfQoNCw0LfRgNC10YjQsNGC0Ywg0LjQt9C80LXQvdGP0YLRjCDRgtC+0LvRjNC60L4g0LIg0LLRi9GB0L7RgtGDJzsKJGxhbmdbJ2RhdGV0aW1lZm9ybWF0X3RleHQnXSA9ICfQpNC+0YDQvNCw0YIg0LTQsNGC0Ysg0Lgg0LLRgNC10LzQtdC90LgnOwokbGFuZ1sndGltZXRleHQnXSA9ICfQktGA0LXQvNGPJzsKJGxhbmdbJ2RhdGV0ZXh0J10gPSAn0JTQsNGC0LAnOwokbGFuZ1snZGF0ZXRpbWVmb3JtYXRfaGVscCddID0gJ9Cd0LDQttC80LjRgtC1INGB0Y7QtNCwLCDRh9GC0L7QsdGLINC/0L7Qu9GD0YfQuNGC0Ywg0L/QvtC80L7RidGMINC00LvRjyDRhNC+0YDQvNCw0YLQsCDQtNCw0YLRiyDQuNC70Lgg0LLRgNC10LzQtdC90LguJzsKJGxhbmdbJ2V4dHJhY29uZmlndGV4dCddID0gJ9CU0L7Qv9C+0LvQvdC40YLQtdC70YzQvdGL0LUg0L3QsNGB0YLRgNC+0LnQutC4JzsKJGxhbmdbJ2V4dHJhY29uZmlnaGVscDInXSA9ICfQntC00L3QviDQt9C90LDRh9C10L3QuNC1INC90LAg0LrQsNC20LTRg9GOINGB0YLRgNC+0LrRgywg0LfQsNC/0Y/RgtGL0LUg0LHRg9C00YPRgiDQtNC+0LHQsNCy0LvQtdC90Ysg0LTQviDQuCDQv9C+0YHQu9C1INGN0YLQvtCz0L4g0YHQvtC00LXRgNC20LjQvNC+0LPQvi4g0KfQuNGC0LDQudGC0LUg0LjQvdGB0YLRgNGD0LrRhtC40Y4g0LogIFRpbnlNQ0Ug0LIgV2lraS4nOwokbGFuZ1snY3VzdG9tZHJvcGRvd250ZXh0J10gPSAn0JTQvtC/0L7Qu9C90LjRgtC10LvRjNC90L7QtSDQstGL0L/QsNC00LDRjtGJ0LXQtSDQvNC10L3Rjic7CiRsYW5nWydjdXN0b21kcm9wZG93bmhlbHAnXSA9ICfQn9C+0LvRjNC30L7QstCw0YLQtdC70YzRgdC60L7QtSDQstGL0L/QsNC00LDRjtGJ0LXQtSDQvNC10L3Rji4gINCY0YHQv9C+0LvRjNC30L7QstCw0L3QuNC1INC00LvRjyDRg9C/0YDQvtGJ0LXQvdC90L7Qs9C+INC00L7RgdGC0YPQv9CwINC6INGC0LXQs9Cw0Lwg0L3QsNC/0YDQuNC80LXRgDogIlN0YXJ0IGV4cGFuZC9jb2xsYXBzZS1hcmVhfHtzdGFydEV4cGFuZENvbGxhcHNlIGlkPVxcXCdleHBhbmQxXFxcJyB0aXRsZT1cXFwnVGhpcyBpcyBteSBleHBhbmRhYmxlIGFyZWFcXFwnfQ0KDQonOwokbGFuZ1snc3RhcnRlbmFibGVkdGV4dCddID0gJ9Ch0YLQsNGA0YLQvtCy0YvQtSDQvdCw0YHRgtGA0L7QudC60Lgg0YDQsNC30YDQtdGI0LXQvdGLJzsKJGxhbmdbJ3N0YXJ0ZW5hYmxlZGhlbHAnXSA9ICfQn9GA0Lgg0L7RgtC60LvRjtGH0LXQvdC40Lgg0YDQtdC00LDQutGC0L7RgCBUaW55INCx0YPQtNC10YIg0LfQsNCz0YDRg9C20LDRgtGM0YHRjyDQsiDQvtGC0LrQu9GO0YfQtdC90L3QvtC8INGB0L7RgdGC0L7Rj9C90LjQuC4g0KDQtdC60L7QvNC10L3QtNGD0LXRgtGB0Y8g0YLQvtC70YzQutC+INC/0YDQuCDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQuCDRh9C10LrQsdC+0LrRgdCwINC00LvRjyDQstC60LvRjtGH0LXQvdC40Y8gLyDQstGL0LrQu9GO0YfQtdC90LjRjyDRgNC10LTQsNC60YLQvtGA0LAuJzsKJGxhbmdbJ2xvYWRjbXNsaW5rZXJ0ZXh0J10gPSAn0JfQsNCz0YDRg9C30LjRgtGMIENNUy1saW5rZXInOwokbGFuZ1snbG9hZGNtc2xpbmtlcmhlbHAnXSA9ICfQrdGC0L4g0L/QvtC30LLQvtC70Y/QtdGCINGB0LPQtdC90LXRgNC40YDQvtCy0LDRgtGMINGP0LLQsCDRgdC60YDQuNC/0YIg0LrQvtC0LCDQvdC10L7QsdGF0L7QtNC40LzRi9C5INC00LvRjyDQtNC+0LHQsNCy0LvQtdC90LjRjyBcJ2Ntc2xpbmtlclwnLdCwINC90LAg0L/QsNC90LXQu9GMINC40L3RgdGC0YDRg9C80LXQvdGC0L7Qsi4nOwokbGFuZ1snY21zbGlua2Vyc3R5bGV0ZXh0J10gPSAnQ01TLWxpbmtlciDRgdGC0LjQu9GMINGB0YHRi9C70L7Quic7CiRsYW5nWydjbXNzZWxmbGlua3N0eWxlJ10gPSAne2Ntc19zZWxmbGlua30t0YHRgtC40LvRjCAo0YEg0L/QvtC00LTQtdGA0LbQutC+0Lkg0KfQn9CjKSc7CiRsYW5nWydhaHJlZnN0eWxlJ10gPSAnSFRNTCDRgtC10LMgQSAo0LHQtdC3INC/0L7QtNC00LXRgNC20LrQuCDQp9Cf0KMpJzsKJGxhbmdbJ2Ntc2xpbmtlcmFkZHN0ZXh0J10gPSAnQ01TLWxpbmtlciDQtNC+0L/QvtC70L3QtdC90LjRjyc7CiRsYW5nWydjbXNsaW5rZXJhZGRzaGVscCddID0gJ9Ct0YLQviDQv9C+0LfQstC+0LvRj9C10YIg0LTQvtCx0LDQstC70Y/RgtGMINGB0YHRi9C70LrQuCDQsiDQstC40LTQtSBIVE1MINGC0LXQs9CwIEEg0LjQu9C4IHtjbXNfc2VsZmxpbmt9LCDQtdGB0LvQuCDRgdGB0YvQu9C60LAg0YHQvtC30LTQsNC10YLRgdGPINC/0YDQuCDQv9C+0LzQvtGJ0LggQ01TLWxpbmtlci4nOwokbGFuZ1snYXZvaWRsaW5rY29udmVyc2lvbnRleHQnXSA9ICfQmNC30LHQtdCz0LDRgtGMINC/0YDQtdC+0LHRgNCw0LfQvtCy0LDQvdC40Y8g0YHRgdGL0LvQvtC6JzsKJGxhbmdbJ2F2b2lkbGlua2NvbnZlcnNpb25oZWxwJ10gPSAn0JLRi9C60LvRjtGH0LDQtdGCINCy0YHRgtGA0L7QtdC90L3Rg9GOINC70L7Qs9C40LrRgyBUaW55TUNFINC00LvRjyDQv9GA0LXQvtCx0YDQsNC30L7QstCw0L3QuNGPINGB0YHRi9C70L7Qui4g0J/QvtC30LLQvtC70Y/QtdGCINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC1INGC0LXQs9C+0LIgU21hcnR5INCyIFVSTC4nOwokbGFuZ1sncmVsYXRpdmV1cmxzdGV4dCddID0gJ9CT0LXQvdC10YDQuNGA0L7QstCw0YLRjCDQvtGC0L3QvtGB0LjRgtC10LvRjNC90YvQtSDRgdGB0YvQu9C60LgnOwokbGFuZ1snZm9yY2VjbGVhbnBhc3RldGV4dCddID0gJ9Cf0YDQuNC90YPQtNC40YLQtdC70YzQvdCw0Y8g0YfQuNGB0YLQutCwINC60L7QtNCwINC/0YDQuCDQstGB0YLQsNCy0LrQtSc7CiRsYW5nWydmb3JjZWNsZWFucGFzdGVoZWxwJ10gPSAn0K3RgtC+INC00L7Qu9C20L3QviDQsdGL0YLRjCDQstC60LvRjtGH0LXQvdC+INC00LvRjyDRg9C00LDQu9C10L3QuNGPINGB0YLRgNCw0L3QvdGL0YUg0LrQvtC00L7QsiDRhNC+0YDQvNCw0YLQuNGA0L7QstCw0L3QuNGPINC/0YDQuCDQstGB0YLQsNCy0LrQtSDQuNC3INGA0LXQtNCw0LrRgtC+0YDQsCAgV29yZCAg0Lgg0YIu0L8uJzsKJGxhbmdbJ2JvZHljc3NfdGV4dCddID0gJ9Ci0LXQsyBDU1Mg0LTQu9GPIGJvZHkt0Y3Qu9C10LzQtdC90YLQsCc7CiRsYW5nWydib2R5Y3NzX2hlbHAnXSA9ICfQkdGD0LTQtdGCINC00L7QsdCw0LLQu9C10L3QviDQuiBjc3Mg0YHRgtC40LvRjiBib2R5LdGC0Y3Qs9CwLiDQn9C+0LTRgdC60LDQt9C60LA6INGG0LLQtdGCINGE0L7QvdCwINC80L7QttC10YIg0LHRi9GC0Ywg0YPRgdGC0LDQvdC+0LLQu9C10L0g0LIg0LHQtdC70YvQuSDQv9GA0Lgg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LggImJhY2tncm91bmQtY29sb3I6d2hpdGUiJzsKJGxhbmdbJ2luY2x1ZGVvbmx5c2NyZWVuY3NzX3RleHQnXSA9ICfQktC60LvRjtGH0LDRgtGMINGC0L7Qu9GM0LrQviDRjdC60YDQsNC90L3Ri9C5IENTUyc7CiRsYW5nWydpbmNsdWRlb25seXNjcmVlbmNzc19oZWxwJ10gPSAn0JLRi9Cx0LXRgNC40YLQtSDQtdGB0LvQuCDRhdC+0YLQuNGC0LUg0LLQuNC00LXRgtGMINGC0L7Qu9GM0LrQviDRgdGC0LjQu9C4INGBIG1lZGlhPSJzY3JlZW4iINC/0YDQuCDRgNCw0LHQvtGC0LUg0YEg0YDQtdC00LDQutGC0L7RgNC+0LwuJzsKJGxhbmdbJ3VzZXN0YXRpY2NvbmZpZ3RleHQnXSA9ICfQmNGB0L/QvtC70YzQt9C+0LLQsNGC0Ywg0YHRgtCw0YLQuNGH0L3Ri9C5INGE0LDQudC7INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCc7CiRsYW5nWyd1c2VzdGF0aWNjb25maWdoZWxwJ10gPSAn0K3RgtC+INC80L7QttC10YIg0LfQsNGB0YLQsNCy0LjRgtGMINGA0LDQsdC+0YLQsNGC0YwgVGlueSDQvdCwINGB0LjRgdGC0LXQvNCw0YUsINCz0LTQtSDRhdC+0YHRgtC40L3QsyDQsNCy0YLQvtC80LDRgtC40YfQtdGB0LrQuCDQtNC+0LHQsNCy0LvRj9C10YIg0LLRgdGP0LrRg9GOINGH0YPRiNGMINC6INC00LjQvdCw0LzQuNGH0L3QviDQuiDQstGL0LLQvtC00YMsINGC0LjQv9CwINGB0YLQsNGC0LjRgdGC0LjQutC4LCDQvdCw0YDRg9GI0LDRjyDQv9GA0Lgg0Y3RgtC+0Lwg0LTQuNC90LDQvNC40YfQtdGB0LrQuCDRgdC+0LfQtNCw0L3QvdGL0Lkg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdGL0Lkg0YTQsNC50LsgSmF2YVNjcmlwdCc7CiRsYW5nWyd1c2VzdGF0aWNjb25maWd3YXJuaW5nJ10gPSAn0JLQvdC40LzQsNC90LjQtSEg0KMg0JLQsNGBINCy0LrQu9GO0YfQtdC90Ysg0YHRgtCw0YLQuNGH0LXRgdC60LjQtSDRhNCw0LnQu9GLINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCwg0L3QviDQstCw0Ygg0LrQsNGC0LDQu9C+0LMgdG1wINC90LUg0LTQvtGB0YLRg9C/0LXQvSDQtNC70Y8g0LfQsNC/0LjRgdC4LiDQrdGC0L4g0L3QtSDQv9C+0LfQstC+0LvQuNGCINC80L7QtNGD0LvRjiDRgdC+0YXRgNCw0L3QuNGC0Ywg0YHRgtCw0YLQuNGH0L3Ri9C5INGE0LDQudC7INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQuCwg0YHQutC+0YDQtdC5INCy0YHQtdCz0L4sINC/0YDQuNCy0LXQtNC10YIg0Log0L7RgtC60LDQt9GDINGA0LDQsdC+0YLRiyBUaW55TUNFLic7CiRsYW5nWydpZ25vcmVtb2RpZnlmaWxlc3RleHQnXSA9ICfQmNCz0L3QvtGA0LjRgNC+0LLQsNGC0Ywg0L/RgNCw0LLQsCAiTW9kaWZ5IEZpbGVzIiDQtNC70Y8gRmlsZVBpY2tlcic7CiRsYW5nWydpZ25vcmVtb2RpZnlmaWxlc2hlbHAnXSA9ICfQktC90LjQvNCw0L3QuNC1ISDQrdGC0L4g0L/QvtC30LLQvtC70LjRgiDQv9GA0L7QuNC30LLQtdGB0YLQuCDQvdC10LrQvtGC0L7RgNGL0LUg0L7Qv9C10YDQsNGG0LjQuCDQv9C+INC40LfQvNC10L3QtdC90LjRjiDRhNCw0LnQu9C+0LIsINC00LDQttC1INC10YHQu9C4INGDINCz0YDRg9C/0L/RgyDQvtGC0YHRg9GB0YLQstGD0Y7RgiDQv9GA0LDQstCwICJNb2RpZnkgRmlsZXMiLiDQmNGB0L/QvtC70YzQt9GD0LnRgtC1INC00LvRjyDQvtCz0YDQsNC90LjRh9C10L3QuNGPINC00L7RgdGC0YPQv9CwINC6INC60LDRgtCw0LvQvtCz0LDQvCDQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQuS4nOwokbGFuZ1snc2hvd3RvZ2dsZWJ1dHRvbl90ZXh0J10gPSAn0J/QvtC60LDQt9GL0LLQsNGC0Ywg0YTQu9Cw0LbQvtC6INC00LvRjyDQstC60LvRjtGH0LXQvdC40Y8g0Lgg0LLRi9C60LvRjtGH0LXQvdC40Y8g0LLQuNC30YPQsNC70YzQvdC+0LPQviDRgNC10LTQsNC60YLQvtGA0LAnOwokbGFuZ1sndG9nZ2xld3lzaXd5ZyddID0gJ9CS0LrQu9GO0YfQuNGC0YwgLyDQstGL0LrQu9GO0YfQuNGC0Ywg0LLQuNC30YPQsNC70YzQvdGL0Lkg0YDQtdC00LDQutGC0L7RgCc7CiRsYW5nWydzdHlsZXNfdGFiJ10gPSAn0KHRgtC40LvQuCBDU1MnOwokbGFuZ1snc3R5bGVzX2hlbHAnXSA9ICfQldGB0LvQuCDQstGLINC+0YHRgtCw0LLQuNGC0LUg0Y3RgtC+INC/0L7Qu9C1INC/0YPRgdGC0YvQvCwg0YLQviBUaW55TUNFINC/0YDQvtCw0L3QsNC70LjQt9C40YDRg9C10YIg0JLQsNGIIENTUyDRhNCw0LnQuyDQuCDQstGL0LTQsNGB0YIg0YHQv9C40YHQvtC6INGB0L7QtNC10YDQttCw0YnQuNGFINCyINC90LXQvCDRgdGC0LjQu9C10Lkg0LTQu9GPINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjy4g0JXRgdC70Lgg0LLRiyDRhdC+0YLQuNGC0LUsINGH0YLQvtCx0Ysg0YLQvtC70YzQutC+INC90LXQutC+0YLQvtGA0YvQtSDRgdGC0LjQu9C4INCx0YvQu9C4INC00L7RgdGC0YPQv9C90Ysg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GOLCDRgtC+INGD0LrQsNC20LjRgtC1INC40YUg0LIg0YTQvtGA0LzQtSAiQ3VzdG9tTmFtZTEgPSBzdHlsZTE7IEN1c3RvbU5hbWUyID0gc3R5bGUyIiDQsiDQv9C10YDQstC+0Lwg0L/QvtC70LUuJzsKJGxhbmdbJ2Nzc19zdHlsZXNfdGV4dCddID0gJ9Ch0YLQuNC70LgnOwokbGFuZ1snYWNjZXNzZGVuaWVkJ10gPSAn0J3QtdGCINC00L7RgdGC0YPQv9CwLiDQn9GA0L7QstC10YDRjNGC0LUg0L/RgNCw0LLQsCDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8uJzsKJGxhbmdbJ2Vycm9yJ10gPSAn0J7RiNC40LHQutCwISc7CiRsYW5nWydzdWJtaXQnXSA9ICfQntGC0L/RgNCw0LLQuNGC0YwnOwokbGFuZ1sndXBkYXRlJ10gPSAn0JjQt9C80LXQvdC40YLRjCc7CiRsYW5nWydzYXZlc2V0dGluZ3MnXSA9ICfQodC+0YXRgNCw0L3QuNGC0Ywg0L3QsNGB0YLRgNC+0LnQutC4JzsKJGxhbmdbJ3NldHRpbmdzJ10gPSAn0J3QsNGB0YLRgNC+0LnQutC4JzsKJGxhbmdbJ3NldHRpbmdzc2F2ZWQnXSA9ICfQndCw0YHRgtGA0L7QudC60Lgg0YHQvtGF0YDQsNC90LXQvdGLJzsKJGxhbmdbJ3NhdmVhZHZhbmNlZCddID0gJ9Ch0L7RhdGA0LDQvdC40YLRjCDRgNCw0YHRiNC40YDQtdC90L3Ri9C1INC90LDRgdGC0YDQvtC50LrQuCc7CiRsYW5nWydhZHZhbmNlZHNhdmVkJ10gPSAn0KDQsNGB0YjQuNGA0LXQvdC90YvQtSDQvdCw0YHRgtGA0L7QudC60Lgg0YHQvtGF0YDQsNC90LXQvdGLJzsKJGxhbmdbJ3Rvb2xiYXJzYXZlZCddID0gJ9Cf0LDQvdC10LvRjCDQuNC90YHRgtGA0YPQvNC10L3RgtC+0LIg0YHQvtGF0YDQsNC90LXQvdCwJzsKJGxhbmdbJ3N0eWxlc3NhdmVkJ10gPSAn0KHRgtC40LvQuCDRgdC+0YXRgNCw0L3QtdC90YsnOwokbGFuZ1sndGVzdGFyZWF0ZXh0J10gPSAnPHA+0J/QvtC70LUg0LTQu9GPINGC0LXRgdGC0LAuINCi0LXRgdGCINCyINGN0YLQvtC8INC/0L7Qu9C1INC90LjQutCw0Log0L3QtSDQv9C+0LLQu9C40Y/QtdGCINC90LAg0YHQvtC00LXRgNC20LDQvdC40LUg0JLQsNGI0LjRhSDRgdGC0YDQsNC90LjRhiDQuCDQvdC1INC80L7QttC10YIg0LHRi9GC0Ywg0YHQvtGF0YDQsNC90LXQvS4uLjwvcD4nOwokbGFuZ1sncmVzZXQnXSA9ICfQodCx0YDQvtGBINC6INC30L3QsNGH0LXQvdC40Y/QvCDQv9C+INGD0LzQvtC70YfQsNC90LjRjic7CiRsYW5nWydyZXNldGFsbCddID0gJ9Ch0LHRgNC+0YHQuNGC0Ywg0LLRgdC1INC90LDRgdGC0YDQvtC50LrQuCDQuiDQt9C90LDRh9C10L3QuNGP0Lwg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4nOwokbGFuZ1snY29uZmlybXJlc2V0J10gPSAn0JLRiyDRg9Cy0LXRgNC10L3Riywg0YfRgtC+INGF0L7RgtC40YLQtSDRgdCx0YDQvtGB0LjRgtGMINGN0YLQuCDQv9Cw0YDQsNC80LXRgtGA0Ysg0Log0LfQvdCw0YfQtdC90LjRj9C8INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOPyc7CiRsYW5nWydjb25maXJtcmVzZXRhbGwnXSA9ICfQktGLINGD0LLQtdGA0LXQvdGLLCDRh9GC0L4g0YXQvtGC0LjRgtC1INGB0LHRgNC+0YHQuNGC0Ywg0JLQodCVINC90LDRgdGC0YDQvtC50LrQuCDQuiDQt9C90LDRh9C10L3QuNGP0Lwg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4/JzsKJGxhbmdbJ3NldHRpbmdzcmVzZXQnXSA9ICfQndCw0YHRgtGA0L7QudC60Lgg0LHRi9C70Lgg0YHQsdGA0L7RiNC10L3RiyDQuiDQt9C90LDRh9C10L3QuNGP0Lwg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4nOwokbGFuZ1snYWxsc2V0dGluZ3NyZXNldCddID0gJ9CS0YHQtSDQvdCw0YHRgtGA0L7QudC60Lgg0LHRi9C70Lgg0YHQsdGA0L7RiNC10L3RiyDQuiDQt9C90LDRh9C10L3QuNGP0Lwg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4nOwokbGFuZ1sndXBncmFkZWQnXSA9ICfQsdGL0Lsg0L7QsdC90L7QstC70LXQvSDQtNC+INCy0LXRgNGB0LjQuCAlcyc7CiRsYW5nWydjdXN0b21kcm9wZG93biddID0gJ9Cg0LDRgdGI0LjRgNC10L3QvdC+0LUg0LLRi9C/0LDQtNCw0Y7RidC10LUg0LzQtdC90Y4nOwokbGFuZ1snY21zbXNsaW5rZXInXSA9ICfQktGB0YLQsNCy0LjRgtGMINC70LjQvdC6INC90LAg0YHRgtGA0LDQvdC40YbRgyBDTVNNUyc7CiRsYW5nWydiYWNrZW5kX3Rvb2xiYXJzJ10gPSAn0J/QsNC90LXQu9GMINC40L3RgdGC0YDRg9C80LXQvdGC0L7QsiDQtNC70Y8g0YDQtdC00LDQutGC0L7RgNC+0LInOwokbGFuZ1snZnJvbnRlbmRfdG9vbGJhcnMnXSA9ICfQn9Cw0L3QtdC70Ywg0LjQvdGB0YLRgNGD0LzQtdC90YLQvtCyINC00LvRjyDQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQuSDRgdCw0LnRgtCwJzsKJGxhbmdbJ3BsdWdpbnNfdGFiJ10gPSAn0J/Qu9Cw0LPQuNC90YsnOwokbGFuZ1sncGx1Z2luc19oZWxwJ10gPSAn0JLRi9Cx0LXRgNC40YLQtSDQv9C70LDQs9C40L3Riywg0LrQvtGC0L7RgNGL0LUg0JLRiyDRhdC+0YLQuNGC0LUg0LjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGMLiDQlNC+0LrRg9C80LXQvdGC0LDRhtC40Y8g0L/QviDQv9C70LDQs9C40L3QsNC8INC90LDRhdC+0LTQuNGC0YHRjyA8YSBocmVmPSIlcyIgdGFyZ2V0PSJfYmxhbmsiPtC30LTQtdGB0Yw8L2E+JzsKJGxhbmdbJ3BsdWdpbnNfdGV4dCddID0gJ9Cf0LvQsNCz0LjQvdGLJzsKJGxhbmdbJ3NhdmVwbHVnaW5zJ10gPSAn0JfQsNCz0YDRg9C30LjRgtGMINC/0LvQsNCz0LjQvdGLJzsKJGxhbmdbJ3BsdWdpbnNzYXZlZCddID0gJ9CX0LDQs9GA0YPQttC10L3QvdGL0LUg0L/Qu9Cw0LPQuNC90YsnOwokbGFuZ1sncGx1Z2luc19tb2R1bGUnXSA9ICfQnNC+0LTRg9C70YzQvdGL0LUg0L/Qu9Cw0LPQuNC90YsnOwokbGFuZ1sncGx1Z2luc19jb21tb24nXSA9ICfQntCx0YnQuNC1INC/0LvQsNCz0LjQvdGLJzsKJGxhbmdbJ21vZHVsZSddID0gJ9Cc0L7QtNGD0LvQuCc7CiRsYW5nWydkZXNjcmlwdGlvbiddID0gJ9Ce0L/QuNGB0LDQvdC40LUnOwokbGFuZ1sncGx1Z2luJ10gPSAn0J/Qu9Cw0LPQuNC9JzsKJGxhbmdbJ3lvdWFyZWludGV4dCddID0gJ9CS0Ysg0LIgJzsKJGxhbmdbJ2xvYWRzdHlsZXNoZWV0dGV4dCddID0gJ9CX0LDQs9GA0YPQttCw0YLRjCDRgtCw0LHQu9C40YbRgyDRgdGC0LjQu9C10Lkg0LrQvtC90YLQtdC90YLQsCAo0YDQtdC60L7QvNC10L3QtNC+0LLQsNC90L4pJzsKJGxhbmdbJ2V4dHJhc3R5bGVzdGV4dCddID0gJ9CU0L7Qv9C+0LvQvdC10L3QuNGPINC6INGC0LDQsdC70LjRhtC1INGB0YLQuNC70LXQuSc7CiRsYW5nWydleHRyYXN0eWxlc2hlbHAnXSA9ICdDU1Mg0LrQvtC0INCy0LLQtdC00LXQvdC90YvQuSDQt9C00LXRgdGMLCDQsdGD0LTQtdGCINC00L7QsdCw0LLQu9C10L0g0Log0YLQsNCx0LvQuNGG0LUg0YHRgtC40LvQtdC5IFRpbnlNQ0Ug0L/QvtGB0LvQtSDRh9GC0LXQvdC40Y8g0YLQsNCx0LvQuNGGINGB0YLQuNC70LXQuSBDTVNtcyc7CiRsYW5nWyd1cGxvYWRuZXdmaWxlJ10gPSAn0J3QvtCy0YvQuSDRhNCw0LnQuyc7CiRsYW5nWyd1cGxvYWRmaWxlJ10gPSAn0JfQsNCz0YDRg9C30LrQsCc7CiRsYW5nWydjcmVhdGVuZXdkaXInXSA9ICfQndC+0LLQsNGPINC/0LDQv9C60LAnOwokbGFuZ1snY3JlYXRlZGlyJ10gPSAn0KHQvtC30LTQsNGC0YwnOwokbGFuZ1snbm9kaXJuYW1lJ10gPSAn0J3QtSDRg9C60LDQt9Cw0L3QviDQuNC80Y8g0L/QsNC/0LrQuCc7CiRsYW5nWydkaXJleGlzdHMnXSA9ICfQotCw0LrQsNGPINC/0LDQv9C60LAg0YPQttC1INGB0YPRidC10YHRgtCy0YPQtdGCJzsKJGxhbmdbJ25ld2RpcmNyZWF0ZWQnXSA9ICfQndC+0LLQsNGPINC/0LDQv9C60LAg0YPRgdC/0LXRiNC90L4g0YHQvtC30LTQsNC90LAnOwokbGFuZ1snbmV3ZGlyZmFpbGVkJ10gPSAn0J7RiNC40LHQutCwINC/0YDQuCDRgdC+0LfQtNCw0L3QuNC4INC90L7QstC+0Lkg0L/QsNC/0LrQuCc7CiRsYW5nWydub2ZpbGUnXSA9ICfQpNCw0LnQuyDQvdC1INCx0YvQuyDQt9Cw0LPRgNGD0LbQtdC9JzsKJGxhbmdbJ2ZpbGV0b29iaWcnXSA9ICfQl9Cw0LPRgNGD0LbQsNC10LzRi9C5INGE0LDQudC7INGB0LvQuNGI0LrQvtC8INCx0L7Qu9GM0YjQvtC5JzsKJGxhbmdbJ2NvbnRhaW5zaWxsZWdhbGNoYXJzJ10gPSAn0JjQvNGPINGE0LDQudC70LAg0YHQvtC00LXRgNC20LjRgiDQvtC00LjQvSDQuNC70Lgg0L3QtdGB0LrQvtC70YzQutC+INC90LXQtNC+0L/Rg9GB0YLQuNC80YvRhSDRgdC40LzQstC+0LvQvtCyIChcJywiLCssKixcXCwvLCYsJCknOwokbGFuZ1sndXBsb2FkZmFpbGVkJ10gPSAn0J7RiNC40LHQutCwINC/0YDQuCDQv9C10YDQvNC10YnQtdC90LjQuCDRhNCw0LnQu9CwJzsKJGxhbmdbJ2ZpbGV1cGxvYWRlZCddID0gJ9Ck0LDQudC7INGD0YHQv9C10YjQvdC+INC30LDQs9GA0YPQttC10L0nOwokbGFuZ1snbm90YW5pbWFnZSddID0gJ9CX0LDQs9GA0YPQttC10L3QvdGL0Lkg0YTQsNC50Lsg0L3QtSDRj9Cy0LvRj9C10YLRgdGPINC40LfQvtCx0YDQsNC20LXQvdC40LXQvCc7CiRsYW5nWydmaWxlcGlja2VydGl0bGUnXSA9ICdDTVNNYWRlU2ltcGxlINCy0YvQsdC+0YAg0YTQsNC50LvQsCc7CiRsYW5nWydzdWNjZXNzJ10gPSAn0KPRgdC/0LXRiNC90L4nOwokbGFuZ1snZmlsZW9wZXJhdGlvbnMnXSA9ICfQntC/0LXRgNCw0YbQuNC4INGBINGE0LDQudC70LDQvNC4JzsKJGxhbmdbJ3Rob3VzYW5kZGVsaW1pdGVyJ10gPSAnLCAnOwokbGFuZ1snc2l6ZSddID0gJ9Cg0LDQt9C80LXRgCc7CiRsYW5nWydkaW1lbnNpb25zJ10gPSAn0KjRhdCSJzsKJGxhbmdbJ2FkdmFuY2VkX3RhYiddID0gJ9CU0L7Qv9C+0LvQvdC40YLQtdC70YzQvdC+JzsKJGxhbmdbJ2hlbHAnXSA9ICc8aDM+V2hhdCBkb2VzIHRoaXMgZG8/PC9oMz4NCgk8cD5FbmFibGVzIGEgVGlueU1DRSB0byBiZSB1c2VkIGFzIGEgV1lTSVdZRy48L3A+DQoJPGgzPkhvdyBkbyBJIHVzZSBpdD88L2gzPg0KCTxwPkluc3RhbGwgaXQsIHRoZW4gZ28gdG8gVXNlciBQcmVmZXJlbmNlcyBhbmQgU2V0IFRpbnlNQ0UgdG8gYmUgeW91ciB3eXNpd3lnIG9mIGNob2ljZS48L3A+DQogIDxoMz5TcGVsbGNoZWNrZXI8L2gzPg0KICA8cD5BcyBvZiB2ZXJzaW9uIDIuNi4wLCBUaW55TUNFIGluY2x1ZGVzIGFuIG9ubGluZSBzcGVsbGNoZWNrZXIuIFBsZWFzZSBub3RpY2UgdGhhdCBTU0wgbXVzdCBiZSB0dXJuZWQgb24gaW4geW91ciBzZXJ2ZXItY29uZmlndXJhdGlvbiBpbiBvcmRlciBmb3IgdGhpcyB0byB3b3JrLiBPbiBzb21lIHNldHVwcyB0aGlzIG9wdGlvbiBpcyBjYWxsZWQgcGhwX29wZW5zc2wgYnV0IHRoYXQgbWF5IHZhcnk8L3A+DQoJPGgzPlRyb3VibGVzaG9vdGluZzwvaDM+DQoJU29tZSBwZW9wbGUgaGF2ZSB0cm91YmxlIHdpdGggdGlueSBub3Qgc2hvd2luZyB1cCB1cG9uIGluc3RhbGxhdGlvbiBvciB1cGdyYWRpbmcuIEhlcmUgaXMgYSBjaGVja2xpc3Qgb2YgDQoJdGhpbmdzIHlvdSBjYW4gdHJ5IGJlZm9yZSBjb250YWN0aW5nIG1lIGZvciBmdXJ0aGVyIHN1cHBvcnQuDQoJPGJyLz4NCgk8dWw+DQoJPGxpPjEuIFBsZWFzZSwgcGxlYXNlLCB0cnkgdG8gcmV1cGxvYWQgdGhlIG1vZHVsZXMvVGlueU1DRSBkaXIgdG8geW91ciBzZXJ2ZXIuIFlvdVwnZCBiZSBhbWF6ZWQgaG93IG1hbnkgdGltZXMgdGhpcyBoYXMgaGVscGVkIHBlb3BsZS48L2xpPgkNCgk8bGk+Mi4gSWYgdXBncmFkaW5nLCBwbGVhc2UgdHJ5IHRvIHJlc2V0IGFsbCBzZXR0aW5ncy4gTm90IG5pY2UgaWYgeW91XCd2ZSBkb25lIGEgbG90IG9mIGN1c3RvbWl6YXRpb24sIEkga25vdywgYnV0IGEgbG90IG9mIHRoaW5ncyBjaGFuZ2VkIGZyb20gMi4zLnggdG8gMi40Lnggc2VyaWVzIG9mIHRoZSBtb2R1bGUuDQoJPGxpPjMuIFRyeSBlbmFibGluZyB0aGUgc3RhdGljIGNvbmZpZyBvcHRpb24gaW4gYWR2YW5jZWQgc2V0dGluZ3MuIFRoaXMgd29ya3MgYmV0dGVyIG9uIHNvbWUgc3lzdGVtcyAobGlrZSBDR0ktYmFzZWQpLCBOb3RlIHRoYXQgdGhpcyByZXF1aXJlcyB5b3VyIC90bXAvLWRpciB0byBiZSB3cml0YWJsZSBieSB0aGUgd2Vic2VydmVyDQoJPC91bD4NCgk8YnIvPg0KICA8aDM+UGx1Z2luIGRldmVsb3BtZW50PC9oMz4NCiAgQXMgb2YgdmVyc2lvbiAyLjcuMCB0aGUgVGlueU1DRS1tb2R1bGUgaGFzIHRoZSBhYmlsaXR5IHRvIGFsbG93IG90aGVyIG1vZHVsZXMgdG8gcmVnaXN0ZXIgZXh0ZW5zaW9ucyBmb3IgaXQuIENvdWxkIGJlIGEgY3VzdG9tIGljb24gYWxsb3dpbmcgeW91IHRvIGluc2VydA0KICBjb250ZW50IGZyb20gc29tZSBtb2R1bGUsIGxpa2UgR2FsbGVyeSBldGMuIEhvdyB0byBkbyB0aGlzIGlzIHByZXR0eSB0ZWNoIHN0dWZmLCBidXQgaWYgeW91IGFyZSBhIG1vZHVsZSBkZXZlbG9wZXIgYW5kIGludGVyZXN0ZWQgaW4gY2hlY2tpbmcgaXQgb3V0DQogIHBsZWFzZSBsb29rIGluIHRoZSBUaW55TUNFL2RvY3MtZGlyIGZvciBmdXJ0aGVyIGluc3RydWN0aW9ucy4NCic7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjEzNTc2OTUzNTIuMS4xLnV0bWNjbj0oZGlyZWN0KXx1dG1jc3I9KGRpcmVjdCl8dXRtY21kPShub25lKSc7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjIxMTAwMTQ4MjAuMTM1NzY5NTM1Mi4xMzU3NzMwMjMyLjEzNTc3NTI0MjQuNSc7CiRsYW5nWyd1dG1jJ10gPSAnMTU2ODYxMzUzJzsKJGxhbmdbJ3V0bWInXSA9ICcxNTY4NjEzNTMnOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/sk_SK.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1RpbnlNQ0UgV1lTSVdZRyBCYXNpYyBlZGl0b3InOwokbGFuZ1snYWRtaW5kZXNjcmlwdGlvbiddID0gJ01vZHVsIHVtb8W+bnVqZSBobGF2biZ5YWN1dGU7IG9ic2FoLCBwciZpYWN1dGU7cGFkbmUgaW4mZWFjdXRlOyBkJmFhY3V0ZTt0YSBlZGl0b3ZhxaUgcG9tb2NvdSBXeXNpd3lnIGVkaXRvcmEgemFsb8W+ZW5vbSBuYSBwcm9qZWt0ZSBUaW55TUNFLic7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsIG9kaW4mc2Nhcm9uO3RhbG92YW4meWFjdXRlOyc7CiRsYW5nWydpbnN0YWxsZWQnXSA9ICdNb2R1bCB2ZXJ6aWEgJXMgbmFpbiZzY2Fyb247dGFsb3ZhbiZ5YWN1dGU7Lic7CiRsYW5nWydzdHJpcGJhY2tncm91bmR0YWdzJ10gPSAnT3JlemHFpSB0JmFhY3V0ZTtneSBwb3phZGlhIHogQ1NTJzsKJGxhbmdbJ3N0aXB0YWdzX2hlbHAnXSA9ICdOYXN0YXZlbmllIHVtb8W+bnVqZSBvZHN0ciZhYWN1dGU7bmnFpSBiYWNrZ3JvdW4gJnNjYXJvbjt0JnlhY3V0ZTtseSc7CiRsYW5nWydzb3VyY2VfZm9ybWF0dGluZ190ZXh0J10gPSAnUG91xb5pxaUgZm9ybSZhYWN1dGU7dG92JmFhY3V0ZTtuaWUgemRyb2phIHYgIEhUTUwgbmEgdiZ5YWN1dGU7c3R1cGUnOwokbGFuZ1snZHJvcGRvd25ibG9ja2Zvcm1hdHNfdGV4dCddID0gJ0Jsb2tvdiZlYWN1dGU7IGVsZW1lbnR5IHYgZHJvcGRvd24tbWVudSc7CiRsYW5nWydhbGxvd3RhYmxlcyddID0gJ1Bvdm9sacWlIHByJmFhY3V0ZTtjdSBzIHRhYnXEvmthbWknOwokbGFuZ1snbmV3bGluZXN0eWxlX3RleHQnXSA9ICcmU2Nhcm9uO3QmeWFjdXRlO2wgbm92JmVhY3V0ZTtobyByaWFka3UnOwokbGFuZ1sncHN0eWxlJ10gPSAncCAmc2Nhcm9uO3QmeWFjdXRlO2wnOwokbGFuZ1snYnJzdHlsZSddID0gJ2JyICZzY2Fyb247dCZ5YWN1dGU7bCc7CiRsYW5nWyd1c2Vjb21wcmVzc2lvbnRleHQnXSA9ICdQb3XFvmnFpSBneiBrb21wcmVzaXUnOwokbGFuZ1sndXNlY29tcHJlc3Npb25oZWxwJ10gPSAnVG90byBtJm9jaXJjO8W+ZSB6ciZ5YWN1dGU7Y2hsacWlIG5hxI0maWFjdXRlO3RhdmFuaWUgVGlueU1DRSBlZGl0b3JhLCBhbGUgdGFraXN0byBtJm9jaXJjO8W+ZSBzcCZvY2lyYztzb2JpxaUgcHJvYmwmZWFjdXRlO215IG5hIG5pZWt0b3ImeWFjdXRlO2NoIHN5c3QmZWFjdXRlO21vY2guIFBvdcW+JmlhY3V0ZTt2YWp0ZSBvcGF0cm5lLic7CiRsYW5nWydmb3JjZWRyb290YmxvY2t0ZXh0J10gPSAnRm9yY2UgPHA+IHJvb3RibG9jayc7CiRsYW5nWydmb3JjZWRyb290YmxvY2toZWxwJ10gPSAnRm9yY2VzIHRoZSByZXR1cm5lZCBjb250ZW50IHRvIGF0IGxlYXN0IGJlIGVuY2xvc2VkIGluIGEgPHA+LXRhZyc7CiRsYW5nWydmaWxlcGlja2Vyc3R5bGUnXSA9ICdTJnVhY3V0ZTtib3J5IHYgZWRpdG9yZSc7CiRsYW5nWydmaWxlcGlja2Vyc2l6ZSddID0gJ09rbm8gc28gcyZ1YWN1dGU7Ym9ybWknOwokbGFuZ1snYWxsb3d1cGxvYWR0ZXh0J10gPSAnUG92b2xpxaUgdXBsb2FkIGEgdnl0diZhYWN1dGU7cmFuaWUgYWRyZXMmYWFjdXRlO3JvdiB2byBGaWxlUGlja2VyaSAob2tubyBwcmUgc3ByJmFhY3V0ZTt2dSBzJnVhY3V0ZTtib3JvdiknOwokbGFuZ1snYWxsb3dzY2FsaW5ndGV4dCddID0gJ1Bvdm9sacWlIHptZW51IHZlxL5rb3N0aSBvYnImYWFjdXRlO3prb3YgcHJpIG5haHImYWFjdXRlO3ZhbiZpYWN1dGU7ICc7CiRsYW5nWydzY2FsaW5nZGltZW5zaW9uc3RleHQnXSA9ICdQcmVkbmFzdGF2ZW4mZWFjdXRlOyByb3ptZXJ5JzsKJGxhbmdbJ3Jlc2l6ZXRvJ10gPSAnWm1lbmnFpSB2ZcS+a29zxaUgbmE6JzsKJGxhbmdbJ21ha2V0aHVtYm5haWwnXSA9ICdWeXR2b3JpxaUgbmFoxL5hZHkgcHJpIG5haHImYWFjdXRlO3ZhbiZpYWN1dGU7IG9iciZhYWN1dGU7emtvdic7CiRsYW5nWyd1c2VhZHZhbmNlZHByb2ZpbGUnXSA9ICdQb3XFvmnFpSByb3omc2Nhcm9uOyZpYWN1dGU7cmVuJnlhY3V0ZTsgVGlueU1DRSBwcm9maWwnOwokbGFuZ1snc2F2ZXByb2ZpbGUnXSA9ICdVbG/FvmnFpSBwcm9maWwnOwokbGFuZ1sncHJvZmlsZXNhdmVkJ10gPSAnUHJvZmlsIGJvbCB1bG/FvmVuJnlhY3V0ZTsnOwokbGFuZ1sncHJvZmlsZXNfdGFiJ10gPSAnUHJvZmlseSc7CiRsYW5nWydhZHZhbmNlZF9iYWNrZW5kX3Rvb2xiYXJzJ10gPSAnUm96JnNjYXJvbjsmaWFjdXRlO3JlbiZlYWN1dGU7IG5hc3RhdmVuaWEgcHJvZmlsdSB2IGFkbWluaXN0ciZhYWN1dGU7Y2lpJzsKJGxhbmdbJ3NhdmVzdHlsZXMnXSA9ICdVbG/FvmnFpSAmc2Nhcm9uO3QmeWFjdXRlO2x5JzsKJGxhbmdbJ2FsbG93YWR2YW5jZWRwcm9maWxlJ10gPSAnUG92b2xpxaUgcG91xb4maWFjdXRlO3ZhbmllIHJveiZzY2Fyb247JmlhY3V0ZTtyZW4mZWFjdXRlO2hvIHByb2Z1bHUgdiBUaW55TUNFJzsKJGxhbmdbJ3Nob3dmaWxlbWFuYWdlbWVudCddID0gJ1VrJmFhY3V0ZTt6YcWlIG4mYWFjdXRlO3N0cm9qIHByZSBzcHImYWFjdXRlO3Z1IHMmdWFjdXRlO2Jvcm92JzsKJGxhbmdbJ3Nob3dmaWxlbWFuYWdlbWVudGhlbHAnXSA9ICdVayZhYWN1dGU7emHFpSBuYXN0YXZlbmlhIGFrbyBuYWhyYXRpZSwgdnl0dm9yacWlIGFkcmVzJmFhY3V0ZTtyLCBvZHN0ciZhYWN1dGU7bmnFpSBzJnVhY3V0ZTtib3IsIGFrIG0mYWFjdXRlOyB1xb4maWFjdXRlO3ZhdGXEviBwb3ZvbGVuJmVhY3V0ZTsgdGlldG8gbmFzdGF2ZW5pYS4nOwokbGFuZ1sncmVzdHJpY3RkaXJzJ10gPSAnT2JtZWR6acWlIHXFviZpYWN1dGU7dmF0ZcS+b3ZpIHByJmlhY3V0ZTtzdHVwIGxlbiBkbyB2bGFzdG4mZWFjdXRlO2hvIGFkcmVzJmFhY3V0ZTtyYSc7CiRsYW5nWydyZXN0cmljdGRpcnNoZWxwJ10gPSAnVGhpcyB3aWxsIHJlc3RyaWN0IHRoZSBmaWxlbWFuYWdlbWVudC1jYXBhYmlsaXRpZXMgb2YgdGhlIHVzZXIgdG8gYSBzdWJkaXIgdG8gJiMwMzk7dXBsb2FkcyYjMDM5OyB3aGljaCBoYXZlIHRoZSBzYW1lIG5hbWUgYXMgdGhlIHVzZXImIzAzOTtzIGxvZ2luLiBJZiB0aGUgc3ViZGlyIGRvZXMgbm90IGV4aXN0LCBpdCB3aWxsIHBvc3NpYmx5IGJlIGNyZWF0ZWQuIFBsZWFzZSBub3RlLCB0aGlzIGN1cnJlbnRseSBvbmx5IHdvcmtzIHdpdGggdGhlIHN0YW5kYXJkIGRpcm5hbWVzLCB1cGxvYWRzL2ltYWdlcy4gVGhpcyBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuJzsKJGxhbmdbJ2RlbGV0ZWNvbmZpcm1hdGlvbiddID0gJ1N0ZSBzaSBpc3QmeWFjdXRlOywgxb5lIGNoY2V0ZSBvZHN0ciZhYWN1dGU7bmnFpSB0ZW50byBzJnVhY3V0ZTtib3I/ICAnOwokbGFuZ1snZGVsZXRlZmlsZXN1Y2Nlc3MnXSA9ICdib2wgJnVhY3V0ZTtzcGUmc2Nhcm9uO25lIG9kc3RyJmFhY3V0ZTtuZW4meWFjdXRlOyc7CiRsYW5nWydkZWxldGVmaWxlZmFpbGVkJ10gPSAnbmVtb8W+ZSBiecWlIG9kc3RyJmFhY3V0ZTtuZW4meWFjdXRlOyc7CiRsYW5nWydkZWxldGVzdWJkaXJmYWlsZWQnXSA9ICduZW1vxb5lIGJ5xaUgb2RzdHImYWFjdXRlO25lbiZ5YWN1dGU7JzsKJGxhbmdbJ2RlbGV0ZXN1YmRpcnN1Y2Nlc3MnXSA9ICdib2wgJnVhY3V0ZTtzcGUmc2Nhcm9uO25lIG9kc3RyJmFhY3V0ZTtuZW4meWFjdXRlOyc7CiRsYW5nWydkZWxldGVkaXJjb25maXJtYXRpb24nXSA9ICdzdGUgc2kgaXN0JnlhY3V0ZTssIMW+ZSBjaGNldGUgb2RzdHImYWFjdXRlO25pxaUgdGVudG8gcHImYWFjdXRlO3pkbnkgcG9kYWRyZXMmYWFjdXRlO3InOwokbGFuZ1snZGVsZXRlZGlyJ10gPSAnT2RzdHImYWFjdXRlO25pxaUgcHImYWFjdXRlO3pkbnkgcG9kYWRyZXMmYWFjdXRlO3InOwokbGFuZ1snZGVsZXRlZmlsZSddID0gJ09kc3RyJmFhY3V0ZTtuacWlIHMmdWFjdXRlO2Jvcic7CiRsYW5nWydjYW5ub3RyZWFkY29uZmlnJ10gPSAnTmllIGplIG1vxb5uJmVhY3V0ZTsgcHJlxI0maWFjdXRlO3RhxaUgdGlueWNvbmZpZy5waHAgcHJpYW1vLCB0YWvFvmUgVGlueU1DRSBwcmF2ZGVwb2RvYm5lIG5lYnVkZSBwcmFjb3ZhxaUgc3ByJmFhY3V0ZTt2bmUuIE11cyZpYWN1dGU7dGUgc2tvbnRyb2xvdmHFpSBuYXN0YXZlbmlhIHByJmFhY3V0ZTt2IHByZSBhZHJlcyZhYWN1dGU7cmUuJzsKJGxhbmdbJ2ZpbGVuYW1lb25seSddID0gJ1VrJmFhY3V0ZTt6YcWlIG4mYWFjdXRlO3p2eSBzJnVhY3V0ZTtib3Jvdic7CiRsYW5nWyd0aHVtYm5haWxzb25seSddID0gJ1VrJmFhY3V0ZTt6YcWlIG5haMS+YWR5JzsKJGxhbmdbJ3Nob3d0aHVtYm5haWxmaWxlc3RleHQnXSA9ICdVayZhYWN1dGU7emHFpSBuJmFhY3V0ZTtoxL5hZHkgdiB6b3puYW1lIHMmdWFjdXRlO2Jvcm92JzsKJGxhbmdbJ2ZpbGVuYW1lYW5kdGh1bWJuYWlscyddID0gJ1VrJmFhY3V0ZTt6YcWlIGFqIG4mYWFjdXRlO3p2eSBzJnVhY3V0ZTtib3JvdiBhaiBuYWjEvmFkeSc7CiRsYW5nWydza2luc3RleHQnXSA9ICcmU2Nhcm9uO2FibCZvYWN1dGU7bmEnOwokbGFuZ1snc2tpbnZhcmlhdGlvbnRleHQnXSA9ICdWYXJpJmFhY3V0ZTtjaWUgdnpoxL5hZHUnOwokbGFuZ1snYWR2YW5jZWR3YXJuaW5nJ10gPSAnPHN0cm9uZz5Qb3puJmFhY3V0ZTtta2EhPGJyLz4mVWFjdXRlO3ByYXZhIHQmeWFjdXRlO2NodG8gbmFzdGF2ZW4maWFjdXRlOyBtJm9jaXJjO8W+ZSB6bmVmdW7EjW5pxaUgVGlueU1DRS4gVXByYXZ1anRlIGliYSB2IHByJmlhY3V0ZTtwYWRlLCDFvmUgc3RlIHNrJnVhY3V0ZTtzZW4meWFjdXRlOyB1xb4maWFjdXRlO3ZhdGXEvi4gJzsKJGxhbmdbJ2VudGl0eWVuY29kaW5nX3RleHQnXSA9ICdLJm9hY3V0ZTtkb3ZhbmllIGVudCZpYWN1dGU7dCc7CiRsYW5nWydyYXdlbmNvZGluZyddID0gJ1omYWFjdXRlO2tsYWRuJmVhY3V0ZTsgayZvYWN1dGU7ZG92YW5pZSAociZ5YWN1dGU7Y2hsZWomc2Nhcm9uO2llLCBwcmFjdWplIHZvIHYmYXVtbDvEjSZzY2Fyb247aW5lIHByJmlhY3V0ZTtwYWRvY2gpJzsKJGxhbmdbJ25hbWVkZW5jb2RpbmcnXSA9ICdOYW1lZCBlbmNvZGluZyAobGlrZSAmbmJzcDspJzsKJGxhbmdbJ251bWVyaWNlbmNvZGluZyddID0gJ051bWVyaWNrJmVhY3V0ZTsgayZvYWN1dGU7ZG92YW5pZSAobmFwci4gJmFtcDsjMTYwOyknOwokbGFuZ1snc2hvd19wYXRoX3RleHQnXSA9ICdab2JyYXpvdmHFpSBjZXN0dSBrIGVsZW1lbnR1IG5hIHNwb2RuZWogc3RyYW5lIGVkaXRvcnUuJzsKJGxhbmdbJ3Rvb2xiYXJfdGFiJ10gPSAnTiZhYWN1dGU7c3Ryb2pvdiZhYWN1dGU7IGxpJnNjYXJvbjt0YSc7CiRsYW5nWyd0b29sYmFyX2hlbHAnXSA9ICdUaWV0byB2b8S+YnkgYnkgbWFsaSBvYnNhaG92YcWlIHpvem5hbSBtaWVuIHRsYcSNJmlhY3V0ZTt0b2svb3ZsJmFhY3V0ZTtkYWMmaWFjdXRlO2NoIHBydmtvdiBwcmUgdmxvxb5lbmllIGRvIG4mYWFjdXRlO3N0cm9qb3ZlaiBsaSZzY2Fyb247dHkuJzsKJGxhbmdbJ3Rvb2xiYXJfdGV4dCddID0gJ04mYWFjdXRlO3N0cm9qb3YmYWFjdXRlOyBsaSZzY2Fyb247dGEnOwokbGFuZ1sndG9vbGJhcmhlbHB0ZXh0J10gPSAnS2xpa25pdGUgcHJlIG4mYWFjdXRlO3BvdmVkdSBrIHRvb2xiYXJ1IHYgVGlueU1DRS13aWtpLic7CiRsYW5nWydlZGl0b3Jfd2lkdGhfdGV4dCddID0gJyZTY2Fyb247JmlhY3V0ZTtya2EgcG/EvmEgcyBlZGl0b3JvbSAod2lkdGgpJzsKJGxhbmdbJ2VkaXRvcl9oZWlnaHRfdGV4dCddID0gJ1YmeWFjdXRlOyZzY2Fyb247a2EgIHBvxL5hIHMgZWRpdG9yb20gKGhlaWdodCknOwokbGFuZ1snYXV0byddID0gJ0F1dG9tYXRpY2t5JzsKJGxhbmdbJ29yJ10gPSAnYWxlYm8nOwokbGFuZ1sndGVzdGFyZWFfdGFiJ10gPSAnVGVzdG92YWNpYSBvYmxhc8WlJzsKJGxhbmdbJ3Nob3d0ZXN0aW5nb3V0cHV0J10gPSAnVWsmYWFjdXRlO3phxaUgdGVzdG92YWMmaWFjdXRlOyB2JnlhY3V0ZTtzdHVwJzsKJGxhbmdbJ3Rlc3RhcmVhZWRpdG9yJ10gPSAnVGVzdG92YWNpYSBvYmxhc8WlIGVkaXRvcmEnOwokbGFuZ1sndGVzdGFyZWFvdXRwdXQnXSA9ICdUZXN0b3ZhYyZpYWN1dGU7IHYmeWFjdXRlO3N0dXAnOwokbGFuZ1sndGVzdGFyZWFvdXRwdXRzb3VyY2UnXSA9ICdaZHJvaiB0ZXN0b3ZhY2VqIG9ibGFzdGknOwokbGFuZ1snYWxsb3dyZXNpemluZyddID0gJ1Bvdm9sacWlIHZsb8W+ZW5pZSB6bWVueSB2ZcS+a29zdGkgdiBlZGl0b3JlJzsKJGxhbmdbJ3Jlc2l6ZW5vbmUnXSA9ICdOZXBvdm9sacWlIHptZW51IHJvem1lcnUgb2JyJmFhY3V0ZTt6a3UnOwokbGFuZ1sncmVzaXplYm90aCddID0gJ1Bvdm9sacWlIHptZW4mc2Nhcm9uO2VuaWUgb2JyJmFhY3V0ZTt6a3UgIG5hIHYmeWFjdXRlOyZzY2Fyb247a3UgYSAmc2Nhcm9uOyZpYWN1dGU7cmt1JzsKJGxhbmdbJ3Jlc2l6ZWhlaWdodCddID0gJ1Bvdm9sacWlIHptZW4mc2Nhcm9uO2VuaWUgb2JyJmFhY3V0ZTt6a3UgIG5hIHYmeWFjdXRlOyZzY2Fyb247a3UnOwokbGFuZ1snZGF0ZXRpbWVmb3JtYXRfdGV4dCddID0gJ0Zvcm0mYWFjdXRlO3QgZCZhYWN1dGU7dHVtdSBhIMSNYXN1JzsKJGxhbmdbJ3RpbWV0ZXh0J10gPSAnxIxhcyc7CiRsYW5nWydkYXRldGV4dCddID0gJ0QmYWFjdXRlO3R1bSc7CiRsYW5nWydkYXRldGltZWZvcm1hdF9oZWxwJ10gPSAnS2xpa25pdGUgcHJlIMSPYWwmc2Nhcm9uO2llIGluZm9ybSZhYWN1dGU7Y2llIGsgZm9ybSZhYWN1dGU7dG92YW5pdSBkJmFhY3V0ZTt0dW11IGEgxI1hc3UnOwokbGFuZ1snZXh0cmFjb25maWd0ZXh0J10gPSAnRXh0cmEgbmFzdGF2ZW5pYSc7CiRsYW5nWydleHRyYWNvbmZpZ2hlbHAyJ10gPSAnSmVkZW4gcHImaWFjdXRlO2theiBuYSByaWFkb2ssIGJvZGt5IGJ1ZCZ1YWN1dGU7IHByaWRhbiZlYWN1dGU7IHByZWQgYSBwbyBvYnNhaHUuJzsKJGxhbmdbJ2N1c3RvbWRyb3Bkb3dudGV4dCddID0gJ1ZsYXN0biZ5YWN1dGU7IGRyb3Bkb3duJzsKJGxhbmdbJ2N1c3RvbWRyb3Bkb3duaGVscCddID0gJ0luc2VydHMgY3VzdG9taXphYmxlIHNuaXBwZXRzIG9mIGNvZGUvdGV4dCBieSBzZWxlY3Rpb24gaW4gYSBkcm9wZG93biBtZW51LiANCk9idmlvdXMgdXNlcyBhcmUgZWFzeSBhY2Nlc3MgdG8gdGFnJiMwMzk7cyBldGMuIFRoZSBtZW51IGlzIGluc2VydGVkIGludG8gdG9vbGJhciB1c2luZyAmIzAzOTtjdXN0b21kcm9wZG93biYjMDM5Oy4nOwokbGFuZ1snc3RhcnRlbmFibGVkdGV4dCddID0gJ1BvIHNwdXN0ZW4maWFjdXRlOyc7CiRsYW5nWydzdGFydGVuYWJsZWRoZWxwJ10gPSAnT2R6bmHEjWVuJmlhY3V0ZTttIHRvaHRvIG5hc3RhdmVuaWEgYnVkZSBlZGl0b3IgdiBwcmVkYXN0YXZlbm9tIHN0YXZlIGJleiBXeXNpd3lnIGVkaXRvcmEuIFphcG4mdWFjdXRlO8W+IGhvIGJ1ZGUgbW/Fvm4mZWFjdXRlOyBjZXogdiZ5YWN1dGU7YmVyIFphcG4mdWFjdXRlO8WlL1Z5cG4mdWFjdXRlO8WlIHd5c2l3eWcgcHJpIGVkaXRvcmUuJzsKJGxhbmdbJ2xvYWRjbXNsaW5rZXJ0ZXh0J10gPSAnTmFocmHFpSBDTVMtbGlua2VyJzsKJGxhbmdbJ2xvYWRjbXNsaW5rZXJoZWxwJ10gPSAnVG90byBnZW5lcnVqZSBrJm9hY3V0ZTtkIHBvdHJlYm4meWFjdXRlOyBwcmUgcHJpZGFuaWUgQ01TLWxpbmtlcnUgIGRvIG4mYWFjdXRlO3N0cm9qb3ZlaiBsaSZTY2Fyb247dHknOwokbGFuZ1snY21zbGlua2Vyc3R5bGV0ZXh0J10gPSAnQ01TLWxpbmtlciAtIGZvcm0mYWFjdXRlO3Qgb2RrYXpvdic7CiRsYW5nWydjbXNzZWxmbGlua3N0eWxlJ10gPSAne2Ntc19zZWxmbGlua30tZm9ybSZhYWN1dGU7dCAocyBwb2Rwb3JvdSBwcmV0dHkgdXJscyknOwokbGFuZ1snYWhyZWZzdHlsZSddID0gJzxhIGhyZWY+LWZvcm0mYWFjdXRlO3QgKGJleiBwb2Rwb3J5IHByZXR0eSB1cmxzKSc7CiRsYW5nWydjbXNsaW5rZXJhZGRzdGV4dCddID0gJ0NNUy1vZGthem92YcSNIGRvcGxua3knOwokbGFuZ1snY21zbGlua2VyYWRkc2hlbHAnXSA9ICdVbW/Fvm51amUgcHJpZGHFpSAmYW1wO2x0O2EgaHJlZiZhbXA7Z3Q7ICBhbGVibyB7Y21zX3NlbGZsaW5rfSBwcmkgZ2VuZXJvdmFuJmlhY3V0ZTsgQ01TIGxpbmtlcm9tLic7CiRsYW5nWydhdm9pZGxpbmtjb252ZXJzaW9udGV4dCddID0gJ1Z5bmVjaGHFpSBrb252ZXJ6aXUgb2RrYXpvdi4nOwokbGFuZ1snYXZvaWRsaW5rY29udmVyc2lvbmhlbHAnXSA9ICdWeXBuJnVhY3V0ZTvFpSBrb252ZXJ6aXUgb2RrYXpvdi4gVW1vxb5udWplIHBvdcW+JmlhY3V0ZTt2YcWlIHNtYXJ0eSB2IFVSTCc7CiRsYW5nWydyZWxhdGl2ZXVybHN0ZXh0J10gPSAnR2VuZXJvdmHFpSByZWxhdCZpYWN1dGU7dm5lIGFkcmVzeSc7CiRsYW5nWydmb3JjZWNsZWFucGFzdGV0ZXh0J10gPSAnVnnEjWlzdGnFpSBwcmkgdmxvxb5lbiZpYWN1dGU7JzsKJGxhbmdbJ2ZvcmNlY2xlYW5wYXN0ZWhlbHAnXSA9ICdUb3RvIHphcG4maWFjdXRlO25hIG9kc3RyYcWIb3ZhbmllIHBvZGl2biZlYWN1dGU7aG8gZm9ybSZhYWN1dGU7dG92YW5pYSB0ZXh0dSBwcmkgdmtsYWRhbiZpYWN1dGU7IHRleHRvdiB6IHdvcmR1Lic7CiRsYW5nWydib2R5Y3NzX3RleHQnXSA9ICdDU1MgJnNjYXJvbjt0JnlhY3V0ZTtseSBwcmUgdGFnIGJvZHknOwokbGFuZ1snYm9keWNzc19oZWxwJ10gPSAnTmVjaGFqdGUgUFImQWFjdXRlO1pETkUgYWxlYm8gbmFzdGF2dGUgcHJlIHBvdcW+aXRpZSAgdiBlZGl0b3JlLiBQb3puJmFhY3V0ZTtta2E6IFByZSBuYXN0YXZlbmllIGJpZWxlaG8gcG96YWRpYSB2bG/FvnRlOiBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyc7CiRsYW5nWydpbmNsdWRlb25seXNjcmVlbmNzc190ZXh0J10gPSAnVmxvxb5pxaUgbGVuIHNjcmVlbiBDU1MnOwokbGFuZ1snaW5jbHVkZW9ubHlzY3JlZW5jc3NfaGVscCddID0gJ1Z5YnJhdCZpYWN1dGU7bSB0ZWp0byBtb8W+bm9zdGkgcG92b2wmaWFjdXRlO3RlIHByaXAmYWFjdXRlO2phxaUgZG8gZWRpdG9yYSBuYSBzcHJhY292YW5laSBpYmEgJnNjYXJvbjt0JnlhY3V0ZTtsaSB0eXB1IHNjcmVlbi4nOwokbGFuZ1sndXNlc3RhdGljY29uZmlndGV4dCddID0gJ1BvdcW+acWlIHN0YXRpY2smeWFjdXRlOyBrb25maWd1cmHEjW4meWFjdXRlOyBzJnVhY3V0ZTtib3InOwokbGFuZ1sndXNlc3RhdGljY29uZmlnaGVscCddID0gJ1RoaXMgY2FuIGhlbHAgZ2V0dGluZyB0aW55IHRvIHdvcmsgb24gc3lzdGVtcyB3aGVyZSB0aGUgaG9zdGluZyBmYWNpbGl0eSBhZGRzIHN0dWZmIGxpa2Ugc3RhdGlzdGljcyBldGMuIHRvIGFsbCBvdXRwdXQsIGJyZWFraW5nIGR5bmFtaWNjYWxseSBjcmVhdGVkIGphdmFzY3JpcHQgY29uZmlnIGZpbGUnOwokbGFuZ1sndXNlc3RhdGljY29uZmlnd2FybmluZyddID0gJ1dhcm5pbmchIFlvdSBoYXZlIHRoZSBzdGF0aWMgY29uZmlnLWZpbGUgb3B0aW9uIGVuYWJsZWQgYnV0IHlvdXIgL3RtcC8gZGlyIGlzIG5vdCB3cml0YWJsZS4gVGhpcyB3aWxsIHByZXZlbnQgdGhlIG1vZHVsZSBmcm9tIHNhdmluZyB0aGUgc3RhdGlnYyBjb25maWctZmlsZSBhbmQgd2lsbCBtb3N0IHByb2JhYmx5IHJlbmRlciBUaW55TUNFIGlub3BlcmF0aW9uYWwuJzsKJGxhbmdbJ2lnbm9yZW1vZGlmeWZpbGVzdGV4dCddID0gJ0lnbm9yZSB0aGUgJiMwMzk7TW9kaWZ5IEZpbGVzJiMwMzk7IHBlcm1pc3Npb24gZm9yIEZpbGVQaWNrZXInOwokbGFuZ1snaWdub3JlbW9kaWZ5ZmlsZXNoZWxwJ10gPSAnV2FybmluZyEgVGhpcyBhbGxvd3Mgc29tZSBmaWxlLWFsdGVyaW5nIG9wZXJhdGlvbnMgZXZlbiBpZiB0aGUgJiMwMzk7TW9kaWZ5IEZpbGVzJiMwMzk7IHBlcm1pc3Npb24gaXMgbm90IHNldCBmb3IgdGhlIGN1cnJlbnQgdXNlcmdyb3VwLiBUaGlzIGNhbiBlZmZlY3RpdmVseSBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggdGhlIG9wdGlvbiB0byByZXN0cmljdCB1c2VyJiMwMzk7cyBkaXJlY3RvcnkgYWNjZXNzLic7CiRsYW5nWydzaG93dG9nZ2xlYnV0dG9uX3RleHQnXSA9ICdab2JyYXppxaUgY2hlY2tib3ggcHJlIHZ5cG51dGllL3phcG51dGllIFdZU0lXWUcgZWRpdG9yYSc7CiRsYW5nWyd0b2dnbGV3eXNpd3lnJ10gPSAnWmFwbiZ1YWN1dGU7xaUvdnlwbiZ1YWN1dGU7xaUgV1lTSVdZRyBlZGl0b3InOwokbGFuZ1snc3R5bGVzX3RhYiddID0gJ0NTUyAmc2Nhcm9uO3QmeWFjdXRlO2x5JzsKJGxhbmdbJ3N0eWxlc19oZWxwJ10gPSAnUG9raWHEviB0b3RvIHBvbGUgbmVjaCZhYWN1dGU7dGUgcHImYWFjdXRlO3pkbmUsIFRpbnlNQ0Ugc3ByYWN1amUgVmEmc2Nhcm9uO2UgQ1NTIHMmdWFjdXRlO2JvcnkgYSBwb24mdWFjdXRlO2tuZSAmc2Nhcm9uO3QmeWFjdXRlO2x5IHXFviZpYWN1dGU7dmF0ZcS+b3ZpLiBQb2tpYcS+IGNoY2V0ZSB1xb4maWFjdXRlO3ZhdGXEvm92aSBwb24mdWFjdXRlO2tudcWlIGliYSB2eWJyYW4mZWFjdXRlOyAmc2Nhcm9uOyZ5YWN1dGU7bHksICZzY2Fyb247cGVjaWZpa3VqdGUgaWNoIGZvcm1vdSAmcXVvdDtTdHlsZSAxPXN0eWxlMTsgU3R5bGUgMj1zdHlsZTImcXVvdDsgdiBwcnZvbSBuYXNsZWR1aiZ1YWN1dGU7Y29tIHBvbGkuIFYgb3N0YXRuJnlhY3V0ZTtjaCBwb2xpYWNoIGplIG0mb2NpcmM7xb5uJmVhY3V0ZTsgJnNjYXJvbjtwZWNpZmlrb3ZhxaUgQ1NTICZzY2Fyb247dCZ5YWN1dGU7bHkgcHJlIHRhYnXEvmt5LCByaWFka3kgYSBidW5reSwga3RvciZlYWN1dGU7IHMmdWFjdXRlOyBwb3XFvml0JmVhY3V0ZTsgdiBkaWFsJm9hY3V0ZTtnb3YmeWFjdXRlO2NoIG9rbiZhYWN1dGU7Y2guIFByZSBwciZhYWN1dGU7emRuZSBwb2xlIGJ1ZCZ1YWN1dGU7IHBvdcW+aXQmZWFjdXRlOyBwYXJhbWV0cmUgeiBobGF2biZ5YWN1dGU7Y2ggJnNjYXJvbjt0JnlhY3V0ZTtsb3YuJzsKJGxhbmdbJ2Nzc19zdHlsZXNfdGV4dCddID0gJ0hsYXZuJmVhY3V0ZTsnOwokbGFuZ1snYWNjZXNzZGVuaWVkJ10gPSAnUHImaWFjdXRlO3N0dXAgemFrJmFhY3V0ZTt6YW4meWFjdXRlOy4gUHJvcyZpYWN1dGU7bSBza29udHJvbHVqdGUgc2kgc3ZvamUgcHImYWFjdXRlO3ZhLic7CiRsYW5nWydlcnJvciddID0gJ0NoeWJhISc7CiRsYW5nWydzdWJtaXQnXSA9ICdPZG9zbGHFpSc7CiRsYW5nWyd1cGRhdGUnXSA9ICdVcHJhdmnFpSc7CiRsYW5nWydzYXZlc2V0dGluZ3MnXSA9ICdVbG/FvmnFpSBuYXN0YXZlbmlhJzsKJGxhbmdbJ3NldHRpbmdzJ10gPSAnTmFzdGF2ZW5pYSc7CiRsYW5nWydzZXR0aW5nc3NhdmVkJ10gPSAnTmFzdGF2ZW5pYSBib2xpIHVsb8W+ZW4mZWFjdXRlOyc7CiRsYW5nWydzYXZlYWR2YW5jZWQnXSA9ICdVbG/FvmnFpSBwb2tyb8SNaWwmZWFjdXRlOyBuYXN0YXZlbmlhJzsKJGxhbmdbJ2FkdmFuY2Vkc2F2ZWQnXSA9ICdQb2tyb8SNaWwmZWFjdXRlOyBuYXN0YXZlbmlhIHVsb8W+ZW4mZWFjdXRlOyc7CiRsYW5nWyd0b29sYmFyc2F2ZWQnXSA9ICdOJmFhY3V0ZTtzdHJvam92JmFhY3V0ZTsgbGkmc2Nhcm9uO3RhIGJvbGEgdWxvxb5lbiZhYWN1dGU7JzsKJGxhbmdbJ3N0eWxlc3NhdmVkJ10gPSAnJlNjYXJvbjt0JnlhY3V0ZTtseSBib2xpIHVsb8W+ZW4mZWFjdXRlOyc7CiRsYW5nWyd0ZXN0YXJlYXRleHQnXSA9ICc8cD5UZXh0b3YmYWFjdXRlOyBvYmxhc8WlLCBuacSNIG5lYnVkZSBuYXJ1JnNjYXJvbjtlbiZlYWN1dGU7IHptZW5hbWkgdiBuZWouLi48L3A+JzsKJGxhbmdbJ3Jlc2V0J10gPSAnTmFzdGF2ZW5pZSBuYSBwcmVkbmFzdGF2ZW4mZWFjdXRlOyBob2Rub3R5JzsKJGxhbmdbJ3Jlc2V0YWxsJ10gPSAnTmFzdGF2ZW5pZSB2JnNjYXJvbjtldGsmeWFjdXRlO2NoIG5hc3RhdmVuJmlhY3V0ZTsgbmEgcHJlZG5hc3RhdmVuJmVhY3V0ZTsgaG9kbm90eSc7CiRsYW5nWydjb25maXJtcmVzZXQnXSA9ICdTdGUgc2kgaXN0JnlhY3V0ZTssIMW+ZSBjaGNldGUgb2Jub3ZpxaUgdGlldG8gbmFzdGF2ZW5pYSBuYSBwcmVkbmFzdGF2ZW4mZWFjdXRlOyBob2Rub3R5Pyc7CiRsYW5nWydjb25maXJtcmVzZXRhbGwnXSA9ICdTdGUgc2kgaXN0JnlhY3V0ZTssIMW+ZSBjaGNldGUgb2Jub3ZpxaUgdsWbZXRreSBuYXN0YXZlbmlhIG5hIHByZWRuYXN0YXZlbiZlYWN1dGU7IGhvZG5vdHk/JzsKJGxhbmdbJ3NldHRpbmdzcmVzZXQnXSA9ICdUaWV0byBuYXN0YXZlbmlhIGJvbGkgb2Jub3ZlbiZlYWN1dGU7IG5hIHByZWRuYXN0YXZlbiZlYWN1dGU7IGhvZG5vdHkgJzsKJGxhbmdbJ2FsbHNldHRpbmdzcmVzZXQnXSA9ICdWJnNjYXJvbjtldGt5IG5hc3RhdmVuaWEgYm9saSBvYm5vdmVuJmVhY3V0ZTsgbmEgcHJlZG5hc3RhdmVuJmVhY3V0ZTsgaG9kbm90eSc7CiRsYW5nWyd1cGdyYWRlZCddID0gJ2JvbCBha3R1YWxpem92YW4meWFjdXRlOyBuYSB2ZXJ6aXUnOwokbGFuZ1snY3VzdG9tZHJvcGRvd24nXSA9ICdWbGFzdG4mZWFjdXRlOyByb3piYcS+b3ZhY2llIG1lbnUnOwokbGFuZ1snY21zbXNsaW5rZXInXSA9ICdWbG/FvmnFpSBsaW5rIGRvIGNtc21zLXN0ciZhYWN1dGU7bmt5JzsKJGxhbmdbJ2JhY2tlbmRfdG9vbGJhcnMnXSA9ICdOYXN0YXZlbmllIHRvb2xiYXJ1IHByZSBiYWNrLWVuZCc7CiRsYW5nWydmcm9udGVuZF90b29sYmFycyddID0gJ05hc3RhdmVuaWUgdG9vbGJhcnUgcHJlIGZyb250LWVuZCc7CiRsYW5nWydwbHVnaW5zX3RhYiddID0gJ1BsdWdpbnknOwokbGFuZ1sncGx1Z2luc19oZWxwJ10gPSAnVnliZXJ0ZSBzaSBwbGFnaW4gcHJlIGFrdGl2JmFhY3V0ZTtjaXUuIERva3VtZW50JmFhY3V0ZTtjaXUgbSZvY2lyYzvFvmV0ZSBuJmFhY3V0ZTtqc8WlIDxhIGhyZWY9IiVzIiB0YXJnZXQ9Il9ibGFuayI+dHU8L2E+LSc7CiRsYW5nWydwbHVnaW5zX3RleHQnXSA9ICdQbHVnaW55JzsKJGxhbmdbJ3NhdmVwbHVnaW5zJ10gPSAnVWxvxb5pxaUgcGx1Z2lueSc7CiRsYW5nWydwbHVnaW5zc2F2ZWQnXSA9ICdQbHVnaW55IHVsb8W+ZW4mZWFjdXRlOy4nOwokbGFuZ1sncGx1Z2luc19tb2R1bGUnXSA9ICdQbHVnaW55IG1vZHVsdSc7CiRsYW5nWydwbHVnaW5zX2NvbW1vbiddID0gJ1Ymc2Nhcm9uO2VvYmVjbiZlYWN1dGU7IHBsdWdpbnknOwokbGFuZ1snbW9kdWxlJ10gPSAnTW9kdWwnOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICdQb3Bpcyc7CiRsYW5nWydwbHVnaW4nXSA9ICdSb3omc2Nhcm9uOyZpYWN1dGU7cmVuaWUnOwokbGFuZ1sneW91YXJlaW50ZXh0J10gPSAnU3RlIHYnOwokbGFuZ1snbG9hZHN0eWxlc2hlZXR0ZXh0J10gPSAnTmFocmHFpSAmc2Nhcm9uO3QmeWFjdXRlO2x5IHByZSBvYnNhaCAoZG9wb3J1xI11amVtZSknOwokbGFuZ1snZXh0cmFzdHlsZXN0ZXh0J10gPSAnRG9wbG5lbmllIGRvICZzY2Fyb247dCZ5YWN1dGU7bG92JzsKJGxhbmdbJ2V4dHJhc3R5bGVzaGVscCddID0gJ1Zsb8W+ZW5lIENTUyBzcHJhY3VqZSBUaW55TUNFIGHFviBwbyBzcHJhY292YW4maWFjdXRlOyAmc2Nhcm9uO3QmeWFjdXRlO2xvdiB6IENNUyBtYWRlIHNpbXBsZS4nOwokbGFuZ1sndXBsb2FkbmV3ZmlsZSddID0gJ05vdiZ5YWN1dGU7IHMmdWFjdXRlO2Jvcic7CiRsYW5nWyd1cGxvYWRmaWxlJ10gPSAnTmFocmHFpSc7CiRsYW5nWydjcmVhdGVuZXdkaXInXSA9ICdOb3YmeWFjdXRlOyBhZHJlcyZhYWN1dGU7cic7CiRsYW5nWydjcmVhdGVkaXInXSA9ICdWeXR2b3JpxI0nOwokbGFuZ1snbm9kaXJuYW1lJ10gPSAnQmV6IG4mYWFjdXRlO3p2dSBhZHJlcyZhYWN1dGU7cmEnOwokbGFuZ1snZGlyZXhpc3RzJ10gPSAnQWRyZXMmYWFjdXRlO3IgdcW+IGV4aXN0dWplJzsKJGxhbmdbJ25ld2RpcmNyZWF0ZWQnXSA9ICdOb3YmeWFjdXRlOyBhZHJlcyZhYWN1dGU7ciAmdWFjdXRlO3NwZSZzY2Fyb247bmUgdnl0dm9yZW4meWFjdXRlOyc7CiRsYW5nWyduZXdkaXJmYWlsZWQnXSA9ICdDaHliYSBwcmkgdnl0dm9yZW4maWFjdXRlOyBhZHJlcyZhYWN1dGU7cmEnOwokbGFuZ1snbm9maWxlJ10gPSAnUyZ1YWN1dGU7Ym9yIG5lYm9sIG5haHJhdCZ5YWN1dGU7JzsKJGxhbmdbJ2ZpbGV0b29iaWcnXSA9ICdOYWhyJmFhY3V0ZTt2YW4meWFjdXRlOyBzJnVhY3V0ZTtib3IgamUgcHImaWFjdXRlO2xpJnNjYXJvbjsgdmXEvmsmeWFjdXRlOyc7CiRsYW5nWydjb250YWluc2lsbGVnYWxjaGFycyddID0gJ0ZpbGVuYW1lIGNvbnRhaW5zIG9uZSBvciBtb3JlIGlsbGVnYWwgY2hhcmFjdGVycyAoJiMwMzk7LCZxdW90OywrLCosXCwvLCZhbXA7LCQpJzsKJGxhbmdbJ3VwbG9hZGZhaWxlZCddID0gJ0NoeWJhIHByaSBwcmVzJnVhY3V0ZTt2YW4mdWFjdXRlOyBuYWhyYXQmZWFjdXRlO2hvIHMmdWFjdXRlO2JvcnUnOwokbGFuZ1snZmlsZXVwbG9hZGVkJ10gPSAnUyZ1YWN1dGU7Ym9yICZ1YWN1dGU7c3BlJnNjYXJvbjtuZSBuYWluJnNjYXJvbjt0YWxvdmFuJnlhY3V0ZTsnOwokbGFuZ1snbm90YW5pbWFnZSddID0gJ05haHImYWFjdXRlO3ZhbiZ5YWN1dGU7IG9iciZhYWN1dGU7em9rIG5pZSBqZSBvYnImYWFjdXRlO3pvayc7CiRsYW5nWydmaWxlcGlja2VydGl0bGUnXSA9ICdDTVNNYWRlU2ltcGxlIHYmeWFjdXRlO2JlciBzJnVhY3V0ZTtib3J1JzsKJGxhbmdbJ3N1Y2Nlc3MnXSA9ICcmVWFjdXRlO3NwZWNoJzsKJGxhbmdbJ2ZpbGVvcGVyYXRpb25zJ10gPSAnUyZ1YWN1dGU7Ym9yIG9wZXImYWFjdXRlO2NpaSc7CiRsYW5nWyd0aG91c2FuZGRlbGltaXRlciddID0gJywgJzsKJGxhbmdbJ3NpemUnXSA9ICdWZcS+a29zxaUnOwokbGFuZ1snZGltZW5zaW9ucyddID0gJ1YmeWFjdXRlOyZzY2Fyb247a2F4ZMS6xb5rYSc7CiRsYW5nWydhZHZhbmNlZF90YWInXSA9ICdQb2tyb8SNaWwmZWFjdXRlOyc7CiRsYW5nWydoZWxwJ10gPSAnCTxoMz7EjG8gcm9iJmlhY3V0ZTsgdGVudG8gbW9kdWw/PC9oMz4NCgk8cD5VbW/FvsWIdWplIHBvdcW+JmlhY3V0ZTt2YcWlIFRpbnlNQ0UgV1lTSVdZRyBlZGl0b3IgbmEgJnVhY3V0ZTtwcmF2dSBvYnNhaHUuPC9wPg0KCTxoMz5Ba28gc2EgcG91xb4maWFjdXRlO3ZhPzwvaDM+DQoJPHA+TmFpbiZzY2Fyb247dGFsb3ZhxaUsIHBvdG9tICZpYWN1dGU7c8WlIGRvIFXFvml2YXRlxL5zayZ5YWN1dGU7Y2ggbmFzdGF2ZW4maWFjdXRlOyBhIHp2b2xpxaUgVGlueU1DRSBha28gViZhYWN1dGU7JnNjYXJvbjsgd3lzaXd5ZyBlZGl0b3IuPC9wPic7CiRsYW5nWydxY2EnXSA9ICdQMC0xNjcxOTM2MTkxLTEzMjI2NTQ4NTcyMzAnOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My4xNDkzNDcxMTcxLjEzMjc3NTg0MDIuMTMyNzc1ODQwMi4xMzI3NzU4NDAyLjEnOwokbGFuZ1sndXRtYyddID0gJzE1Njg2MTM1Myc7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjEzMjc3NTg0MDIuMS4xLnV0bWNjbj0oZGlyZWN0KXx1dG1jc3I9KGRpcmVjdCl8dXRtY21kPShub25lKSc7CiRsYW5nWyd1dG1iJ10gPSAnMTU2ODYxMzUzJzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/sl_SI.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1RpbnlNQ0UgV1lTSVdZRyB1cmVqZXZhbG5payc7CiRsYW5nWydhZG1pbmRlc2NyaXB0aW9uJ10gPSAnVGEgbW9kdWwgb21vZ2/EjWEgcHJlZHZzZW0gdnNlYmlubywgdmVuZGFyIHBvIG1vxb5ub3N0aSB0dWRpIGRydWdlIHZyc3RlIHBvZGF0a292LCBrYXRlcmUgbGFoa28gc3ByZW1lbml0ZSB6IHVwb3JhYm8gV1lTSVdZRyB1cmVkbmlrYSBrYXRlcmkgamUgZGVsIFRpbnlNQ0UgcHJvamVrdGEuJzsKJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAnTW9kdWwgamUgb2RzdHJhbmplbi4nOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kdWwgcmF6bGnEjWljYSAlcyBqZSBuYW1lJnNjYXJvbjvEjWVuLic7CiRsYW5nWydzdHJpcGJhY2tncm91bmR0YWdzJ10gPSAnUG9yZcW+aSBvem5ha2UgemEgb3phZGplIGl6IENTUyc7CiRsYW5nWydzdGlwdGFnc19oZWxwJ10gPSAnVGEgbW/Fvm5vc3QgcG9za3Umc2Nhcm9uO2Egb2RzdHJhbml0aSBvemFkamUgdGlwYSBuYXN0YXZpdHZlIHN0eWxlc2hlZXQuJzsKJGxhbmdbJ3NvdXJjZV9mb3JtYXR0aW5nX3RleHQnXSA9ICdQcmlwbmkgaXp2b3JubyBvYmxpa292YW5qZSBpemhvZG5lbXUgSFRNTCc7CiRsYW5nWydkcm9wZG93bmJsb2NrZm9ybWF0c190ZXh0J10gPSAnRm9ybWF0aSBibG9rb3YgdiBpenZsZcSNbmVtIG1lbmlqdSc7CiRsYW5nWydhbGxvd3RhYmxlcyddID0gJ0Rvdm9saSBvcGVyYWNpamUgcyB0YWJlbGFtaSc7CiRsYW5nWyduZXdsaW5lc3R5bGVfdGV4dCddID0gJ1RpcCBub3ZlIHZyc3RpY2UnOwokbGFuZ1sncHN0eWxlJ10gPSAncCBzdGlsIChvZHN0YXZlayknOwokbGFuZ1snYnJzdHlsZSddID0gJ2JyIHN0aWwgKG5vdmEgdnJzdGljYSknOwokbGFuZ1sndXNlY29tcHJlc3Npb250ZXh0J10gPSAnVXBvcmFiaSBHWiBrb21wcmVzaWpvJzsKJGxhbmdbJ3VzZWNvbXByZXNzaW9uaGVscCddID0gJ01vxb5ub3N0IGxhaGtvIHBvaGl0cmkgZGVsb3ZhbmplIFRpbnlNQ0UgdXJlamV2YWxuaWthLCB2ZW5kYXIgbGFoa28gcG92enJvxI1pIHRlxb5hdmUgeiBkZWxvdmFuamVtIG5hIG5la2F0ZXJpaCBzaXN0ZW1paC4gVXBvcmFibGphanRlIHMgcHJldmlkbm9zdGpvLic7CiRsYW5nWydmb3JjZWRyb290YmxvY2t0ZXh0J10gPSAnVnNpbGkgPHA+IGJsb2sga29yZW5hJzsKJGxhbmdbJ2ZvcmNlZHJvb3RibG9ja2hlbHAnXSA9ICdWcm5qZW5lIHZzZWJpbmUgb21lamkgeiBvem5ha28gPHA+JzsKJGxhbmdbJ2ZpbGVwaWNrZXJzdHlsZSddID0gJ1N0aWwgaXpiaXJhbGNhIGRhdG90ZWsnOwokbGFuZ1snZmlsZXBpY2tlcnNpemUnXSA9ICdWZWxpa29zdCBpemJpcmFsY2EgZGF0b3Rlayc7CiRsYW5nWydhbGxvd3VwbG9hZHRleHQnXSA9ICdPbW9nb8SNaSBwcmVub3MgaW4gdXN0dmFyamFuamUgbWFwIHYgaXpiaXJhbGN1IGRhdG90ZWsnOwokbGFuZ1snYWxsb3dzY2FsaW5ndGV4dCddID0gJ1B1c3RpdGUsIG9uLXRoZS1mbHkgc3ByZW1pbmphbmplIHZlbGlrb3N0aSBuYWxvxb5lbmloIHNsaWsnOwokbGFuZ1snc2NhbGluZ2RpbWVuc2lvbnN0ZXh0J10gPSAnUHJldnpldGUgZGltZW56aWplcyc7CiRsYW5nWydyZXNpemV0byddID0gJ1NwcmVtZW5pIHZlbGlrb3N0IHY6JzsKJGxhbmdbJ21ha2V0aHVtYm5haWwnXSA9ICdOYXJlZGkgc2xpxI1pY2UsIG9iIG5hbGFnYW5qdSBzbGlrJzsKJGxhbmdbJ3VzZWFkdmFuY2VkcHJvZmlsZSddID0gJ1Vwb3JhYmxqYWogbmFwcmVkZW4gVGlueU1DRS1wcm9maWwnOwokbGFuZ1snc2F2ZXByb2ZpbGUnXSA9ICdTaHJhbmkgcHJvZmlsJzsKJGxhbmdbJ3Byb2ZpbGVzYXZlZCddID0gJ1Byb2ZpbCBqZSBiaWwgc2hyYW5qZW4nOwokbGFuZ1sncHJvZmlsZXNfdGFiJ10gPSAnUHJvZmlsaSc7CiRsYW5nWydhZHZhbmNlZF9iYWNrZW5kX3Rvb2xiYXJzJ10gPSAnTmFwcmVkbmUgbmFzdGF2aXR2ZSBiYWNrZW5kIHByb2ZpbGEnOwokbGFuZ1snc2F2ZXN0eWxlcyddID0gJ1NocmFuaSBzdGlsZSc7CiRsYW5nWydhbGxvd2FkdmFuY2VkcHJvZmlsZSddID0gJ0Rvdm9saSB1cG9yYWJvIG5hcHJlZG5lZ2EgcHJvZmlsYSB2IFRpbnlNQ0UnOwokbGFuZ1snc2hvd2ZpbGVtYW5hZ2VtZW50J10gPSAnUG9rYcW+aSBtb8W+bm9zdGkgdXByYXZsamFuamEgZGF0b3Rlayc7CiRsYW5nWydzaG93ZmlsZW1hbmFnZW1lbnRoZWxwJ10gPSAnUG9rYcW+aSBtb8W+bm9zdGkgdXByYXZsamFuamEgZGF0b3Rlaywga290IHVwbG9hZCwgbmFyZWRpIG1hcG8gaW4gYnJpc2FuamUgZGF0b3RlayB2IEZpbGVQaWNrZXItanUsIMSNZSB1cG9yYWJuaWsgaW1hIGRvdm9samVuamUgemEgb3ByYXZsamFuamUgdGVoLic7CiRsYW5nWydyZXN0cmljdGRpcnMnXSA9ICdPbWVqaSB1cG9yYWJuaWtvdiBkaXIgZG9zdG9wJzsKJGxhbmdbJ3Jlc3RyaWN0ZGlyc2hlbHAnXSA9ICdUbyBibyB6bWFuaiZzY2Fyb247YWxvIHNwb3NvYm5vc3RpIHVwcmF2bGphbmphIGRhdG90ZWsgdXBvcmFibmlrYSBuYSBzdWJkaXIgdiAmcXVvdDt1cGxvYWRzJnF1b3Q7LCBraSBpbWEgZW5ha28gaW1lIGtvdCB6YSBwcmlqYXZvIHVwb3JhYm5pa2EuIMSMZSBzdWJkaXIgbmUgb2JzdGFqYSwgZ2EgYm8gbW9yZGEgdHJlYmEgdXN0dmFyaXRpLiBQcm9zaW1vLCB1cG8mc2Nhcm9uO3RldmFqdGUsIGRhIHRyZW51dG5vIGRlbHVqZSBsZSBzIHN0YW5kYXJkbmltIGRpciBpbWVuaSwgdXBsb2Fkcy9pbWFnZXMuIFRvIHNlIGxhaGtvIHYgcHJpaG9kbm9zdGkgc3ByZW1lbmkuJzsKJGxhbmdbJ2RlbGV0ZWNvbmZpcm1hdGlvbiddID0gJ1N0ZSBwcmVwcmnEjWFuaSwgZGEgamUgdHJlYmEgdG8gZGF0b3Rla28gaXpicmlzYXRpPyc7CiRsYW5nWydkZWxldGVmaWxlc3VjY2VzcyddID0gJ2plIHVzcGUmc2Nhcm9uO25vIGl6YnJpc2FuJzsKJGxhbmdbJ2RlbGV0ZWZpbGVmYWlsZWQnXSA9ICduaSBtb2dsbyBiaXRpIGl6YnJpc2Fubyc7CiRsYW5nWydkZWxldGVzdWJkaXJmYWlsZWQnXSA9ICduaSBtb2dsbyBiaXRpIGl6YnJpc2Fubyc7CiRsYW5nWydkZWxldGVzdWJkaXJzdWNjZXNzJ10gPSAnamUgdXNwZSZzY2Fyb247bm8gaXpicmlzYW4nOwokbGFuZ1snZGVsZXRlZGlyY29uZmlybWF0aW9uJ10gPSAnU3RlIHByZXByacSNYW5pLCBkYSBqZSB0cmViYSBpemJyaXNhdGkgdGEgcHJhemVuIHN1YmRpcj8nOwokbGFuZ1snZGVsZXRlZGlyJ10gPSAnQnJpc2FuamUgcHJhem5paCBzdWJkaXInOwokbGFuZ1snZGVsZXRlZmlsZSddID0gJ0JyaXNhbmplIGRhdG90ZWsnOwokbGFuZ1snY2Fubm90cmVhZGNvbmZpZyddID0gJ05lIG1vcmVtIHByZWJyYXRpIGRhdG90ZWtlIHRpbnljb25maWcucGhwLCB6YXRvIFRpbnlNQ0UgdXJlamV2YWxuaWsgbmFqdmVyamV0bmVqZSBuZSBibyBkZWxvdmFsIHByYXZpbG5vLiBQcm9zaW1vLCBwcmV2ZXJpdGUgcHJhdmljZSBkYXRvdGVrZSBpbiBuYWRyZWplbmloIG1hcCwga2kgbW9yYWpvIGJpdGkgYmVybGppdmUgKG5lIHBhIHphcGlzbGppdmUpIHMgc3RyYW5pIGxhc3RuaWthLic7CiRsYW5nWydmaWxlbmFtZW9ubHknXSA9ICdQcmlrYcW+aSBpbWVuYSBkYXRvdGVrJzsKJGxhbmdbJ3RodW1ibmFpbHNvbmx5J10gPSAnUHJpa2HFvmkgaWtvbmUnOwokbGFuZ1snc2hvd3RodW1ibmFpbGZpbGVzdGV4dCddID0gJ1ByaWthxb5pIGlrb25lIGtvdCBkYXRvdGVrZSc7CiRsYW5nWydmaWxlbmFtZWFuZHRodW1ibmFpbHMnXSA9ICdQcmlrYcW+aSBpbWVuYSBkYXRvdGVrIGluIGlrb25lJzsKJGxhbmdbJ3NraW5zdGV4dCddID0gJ0l6Z2xlZCc7CiRsYW5nWydza2ludmFyaWF0aW9udGV4dCddID0gJ1JhemxpxI1pY2EgaXpnbGVkYSc7CiRsYW5nWydhZHZhbmNlZHdhcm5pbmcnXSA9ICc8c3Ryb25nPk9wb21iYSE8YnIvPlNwcmVtaW5qYW5qZSB0ZWggbmFzdGF2aXRldiBsYWhrbyBwb3Z6cm/EjWkgZGEgVGlueU1DRSBwcmVuZWhhIGRlbG92YXRpLCBhbGkgZGEgamUgZ2VuZXJpcmFuIGtvZCwgbmFwYcSNZW4gbmEgbmVrIG5hxI1pbiAuIFNwcmVtZW5pdGUgbmFzdGF2aXR2ZSBzYW1vLCDEjWUgdmVzdGUsIGthaiBwb8SNbmV0ZSEgUHJvc2ltbywgcG9zdmV0dWp0ZSBUaW55TUNFIHNwbGV0bm8gc3RyYW5vIHByZWQgaWdyYW5qZW0gcyB0ZW0uPC9zdHJvbmc+JzsKJGxhbmdbJ2VudGl0eWVuY29kaW5nX3RleHQnXSA9ICdLb2RpcmFuamUgc3ViamVrdG92JzsKJGxhbmdbJ3Jhd2VuY29kaW5nJ10gPSAnUmF3IGVuY29kaW5nIChOYWpoaXRyZWomc2Nhcm9uO2ksIGRlbHVqZSB2IHZlxI1pbmkgcHJpbWVyb3YpJzsKJGxhbmdbJ25hbWVkZW5jb2RpbmcnXSA9ICdOYW1lZCBlbmNvZGluZyAoa290ICZuYnNwOyknOwokbGFuZ1snbnVtZXJpY2VuY29kaW5nJ10gPSAnTnVtZXJpYyBlbmNvZGluZyAoa290ICZhbXA7IzE2MDspJzsKJGxhbmdbJ3Nob3dfcGF0aF90ZXh0J10gPSAnUG9rYcW+aSBwb3QgZWxlbWVudG92IG5hIGRudSBlZGl0b3JqYSc7CiRsYW5nWyd0b29sYmFyX3RhYiddID0gJ09yb2RuYSB2cnN0aWNhJzsKJGxhbmdbJ3Rvb2xiYXJfaGVscCddID0gJ1RoZXNlIG9wdGlvbnMgc2hvdWxkIGNvbnRhaW4gYSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBidXR0b24vY29udHJvbCBuYW1lcyB0byBpbnNlcnQgaW50byB0aGUgdG9vbGJhci4nOwokbGFuZ1sndG9vbGJhcl90ZXh0J10gPSAnT3JvZG5hIHZyc3RpY2EnOwokbGFuZ1sndG9vbGJhcmhlbHB0ZXh0J10gPSAnS2xpa25pdGUgdHVrYWogemEgb2dsZWQgbmF2b2RpbCB6YSBvcm9kbm8gdnJzdGljbyB2IFRpbnlNQ0Utd2lraS4nOwokbGFuZ1snZWRpdG9yX3dpZHRoX3RleHQnXSA9ICcmU2Nhcm9uO2lyaW5hIGVkaXRvciBwb2xqYSc7CiRsYW5nWydlZGl0b3JfaGVpZ2h0X3RleHQnXSA9ICdWaSZzY2Fyb247aW5hIGVkaXRvciBwb2xqYSc7CiRsYW5nWydhdXRvJ10gPSAnQXV0byc7CiRsYW5nWydvciddID0gJ2FsaSc7CiRsYW5nWyd0ZXN0YXJlYV90YWInXSA9ICdPYm1vxI1qZSBwcmVza3Umc2Nhcm9uO2FuamEnOwokbGFuZ1snc2hvd3Rlc3RpbmdvdXRwdXQnXSA9ICdQcmlrYcW+aSByZXp1bHRhdCBwcmVza3Umc2Nhcm9uO2FuamEnOwokbGFuZ1sndGVzdGFyZWFlZGl0b3InXSA9ICdFZGl0b3IgemEgb2Jtb8SNamUgcHJlc2t1JnNjYXJvbjthbmphJzsKJGxhbmdbJ3Rlc3RhcmVhb3V0cHV0J10gPSAnUmV6dWx0YXQgb2Jtb8SNamEgcHJlc2t1JnNjYXJvbjthbmphJzsKJGxhbmdbJ3Rlc3RhcmVhb3V0cHV0c291cmNlJ10gPSAnVmlyIG9ibW/EjWphIHByZXNrdSZzY2Fyb247YW5qYSc7CiRsYW5nWydhbGxvd3Jlc2l6aW5nJ10gPSAnRG92b2xpIGlucGxhY2Ugc3ByZW1pbmphbmplIHZlbGlrb3N0aSBwb2xqYSBlZGl0b3JqYSc7CiRsYW5nWydyZXNpemVub25lJ10gPSAnTmUgZG92b2xpIHNwcmVtaW5qYW5qZSB2ZWxpa29zdGknOwokbGFuZ1sncmVzaXplYm90aCddID0gJ0Rvdm9saSBzcHJlbWluamFuamUgdmVsaWtvc3RpIHYgb2JlIHNtZXJpJzsKJGxhbmdbJ3Jlc2l6ZWhlaWdodCddID0gJ0Rvdm9saSBzYW1vIHNwcmVtaW5qYW5qZSB2ZWxpa29zdGkgdmkmc2Nhcm9uO2luZSc7CiRsYW5nWydkYXRldGltZWZvcm1hdF90ZXh0J10gPSAnRm9ybWF0IGRhdHVtYS/EjWFzYSc7CiRsYW5nWyd0aW1ldGV4dCddID0gJ8SMYXMnOwokbGFuZ1snZGF0ZXRleHQnXSA9ICdEYXR1bSc7CiRsYW5nWydkYXRldGltZWZvcm1hdF9oZWxwJ10gPSAnS2xpa25pdGUgdHVrYWogemEgcG9tb8SNIG8gdGVtLCBrYWtvIG9ibGlrb3ZhdGkgZGF0dW0vxI1hcyc7CiRsYW5nWydleHRyYWNvbmZpZ3RleHQnXSA9ICdFa3N0cmEgbmFtZXN0aXRldic7CiRsYW5nWydleHRyYWNvbmZpZ2hlbHAyJ10gPSAnRW5vIGl6amF2byBuYSBsaW5pamksIHZlamljZSBib2RvIGRvZGFuZSBwcmVkIGluIHBvIHRlaiB2c2ViaW5pLiBQcmV2ZXJpdGUgVGlueU1DRS13aWtpIHphIG5hdm9kaWxhLic7CiRsYW5nWydjdXN0b21kcm9wZG93bnRleHQnXSA9ICdQcmlrcm9qZW4gZHJvcGRvd24nOwokbGFuZ1snY3VzdG9tZHJvcGRvd25oZWxwJ10gPSAnVnN0YXZpIHByaWtyb2plbmUgZGVsZSBrb2RlL2Jlc2VkaWxhIHogaXpiaXJvIHYgZHJvcGRvd24gbWVuaWp1LgpPxI1pdG5lIHVwb3JhYmUgc28gcHJlcHJvc3QgZG9zdG9wIGRvIHRhZy1vdiBpbiB0YWtvIGRhbGplLiBNZW5pIHNlIHZzdGF2aSB2IHZyc3RpY2kgcyAmIzAzOTtjdXN0b21kcm9wZG93biYjMDM5Oy4nOwokbGFuZ1snc3RhcnRlbmFibGVkdGV4dCddID0gJ1phZ29uIG9tb2dvxI1lbic7CiRsYW5nWydzdGFydGVuYWJsZWRoZWxwJ10gPSAnSXpsb8SNZW5qZSBwb8W+ZW5lIFRpbnktZWRpdG9yIHYgb25lbW9nb8SNZW5vIHN0YW5qZS4gSmUgdHJlYmEgdXBvcmFiaXRpIHNrdXBhaiBzIHByZWtsb3BuaW0gZ3VtYm9tLic7CiRsYW5nWydsb2FkY21zbGlua2VydGV4dCddID0gJ05hbG/FvmkgQ01TLWxpbmtlcic7CiRsYW5nWydsb2FkY21zbGlua2VyaGVscCddID0gJ1RvIHVzdHZhcmphIGphdmFzY3JpcHQga29kbywga2kgamUgcG90cmVibmEgZGEgb21vZ2/EjWkgJnF1b3Q7Y21zbGlua2VyJnF1b3Q7IGRhIHNlIGRvZGEgdiBvcm9kbm8gdnJzdGljby4nOwokbGFuZ1snY21zbGlua2Vyc3R5bGV0ZXh0J10gPSAnQ01TLWxpbmtlciBsaW5rIHN0aWwnOwokbGFuZ1snY21zc2VsZmxpbmtzdHlsZSddID0gJ3tjbXNfc2VsZmxpbmt9LXN0aWwnOwokbGFuZ1snYWhyZWZzdHlsZSddID0gJzxhIGhyZWY+LXN0aWwnOwokbGFuZ1snY21zbGlua2VyYWRkc3RleHQnXSA9ICdDTVMtbGlua2VyIGRvZGF0a2knOwokbGFuZ1snY21zbGlua2VyYWRkc2hlbHAnXSA9ICdUbyB2YW0gb21vZ2/EjWEsIGRhIGRvZGF0ZSBzdHZhcmkgYm9kaXNpIDxhIGhyZWY+LXRhZyBhbGkge2Ntc19zZWxmbGlua30sIMSNZSBqaWggdXN0dmFyaSBDTVMtbGlua2VyLic7CiRsYW5nWydhdm9pZGxpbmtjb252ZXJzaW9udGV4dCddID0gJ0l6b2dpYmFqIHNlIGxpbmsgcHJldXNtZXJpdGV2JzsKJGxhbmdbJ2F2b2lkbGlua2NvbnZlcnNpb25oZWxwJ10gPSAnSXprbGp1xI1pIHZncmFqZW5vIGxpbmsgcHJldXNtZXJpdGV2IHYgVGlueU1DRS1qdS4gT21vZ2/EjWkge3NtYXJ0eX0tdXBvcmFibyB2IHVybC1qaWguJzsKJGxhbmdbJ3JlbGF0aXZldXJsc3RleHQnXSA9ICdVc3R2YXJpIHJlbGF0aXZuZSB1cmwtamUnOwokbGFuZ1snZm9yY2VjbGVhbnBhc3RldGV4dCddID0gJ1ByaXNpbGkgxI1pc8SNZW5qZSBvYiBrb3BpcmFuanUnOwokbGFuZ1snZm9yY2VjbGVhbnBhc3RlaGVscCddID0gJ1RvIGJpIGJpbG8gdHJlYmEgb21vZ2/EjWl0aSwgZGEgc2Ugb2RzdHJhbmkgxI11ZG5vIG9ibGlrb3ZhbiBrb2RlLCBrbyBrb3BpcmF0ZSBpeiBXb3JkYSBpbiB0YWtvIGRhbGplLic7CiRsYW5nWydib2R5Y3NzX3RleHQnXSA9ICdCb2R5IHRhZyBDU1MnOwokbGFuZ1snYm9keWNzc19oZWxwJ10gPSAnQm8gZG9kYW5vIHYgY3NzIGJvZHktZGVmaW5pdGlvbi4gTmFtaWc6IEJhY2tncm91bmQtY29sb3Igc2UgbGFoa28gbmFzdGF2aSB2IGJlbG8geiAmcXVvdDtiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZSZxdW90Oyc7CiRsYW5nWydpbmNsdWRlb25seXNjcmVlbmNzc190ZXh0J10gPSAnVmtsanXEjWl0ZSBzYW1vIENTUyB6YSB6YXNsb24nOwokbGFuZ1snaW5jbHVkZW9ubHlzY3JlZW5jc3NfaGVscCddID0gJ1RhIGl6YmlyYSBvbW9nb8SNYSBzYW1vIHByaXBldGUgc3R5bGVzaGVldGUgeiBpemJyYW5pbSBzY3JlZW4tbWVkaWF0eXBlIGthdGVyaSBib2RvIHZrbGp1xI1lbmkgdiBUaW55TUNFLic7CiRsYW5nWyd1c2VzdGF0aWNjb25maWd0ZXh0J10gPSAnVXBvcmFiaSBzdGF0acSNbm8gY29uZmlnIGRhdG90ZWtvJzsKJGxhbmdbJ3VzZXN0YXRpY2NvbmZpZ2hlbHAnXSA9ICdUbyBsYWhrbyBwb21hZ2EgVGlueU1DRSBkYSBkZWxhIG5hIHNpc3RlbWloLCBramVyIGhvc3RpbmcgZG9kYWphIHN0dmFyaSwga290IGplIHN0YXRpc3Rpa2EgaXRkLCBrYXIgbGFoa28gcG92enJvxI1pIHByb2JsZW1lIHYgZGluYW1uacSNbm8gdXN0dmFyamVuaSBqYXZhc2NyaXB0IGNvbmZpZyBkYXRvdGVraSc7CiRsYW5nWyd1c2VzdGF0aWNjb25maWd3YXJuaW5nJ10gPSAnT3Bvem9yaWxvISBJbWF0ZSBzdGF0acSNbmEgY29uZmlnIGRhdG90ZWthIG1vxb5ub3N0ICBvbW9nb8SNZW5vLCB2IHZhJnNjYXJvbjsgL3RtcC9kaXIgcGEgbmkgbW9nb8SNZSBwaXNhdGkuIFRvIGJvIHByZXByZcSNaWxvIG1vZHVsIG9kIHNocmFuamFuamEgc3RhdGnEjW5lIGNvbmZpZyBkYXRvdGVrZSBpbiBUaW55TUNFIHZlcmpldG5vIG5lYm8gZGVsYWwuJzsKJGxhbmdbJ2lnbm9yZW1vZGlmeWZpbGVzdGV4dCddID0gJ1ByZXpyaSBkb3ZvbGplbmplICZxdW90O1NwcmVtZW5pIGRhdG90ZWtlJnF1b3Q7IHphIEZpbGVQaWNrZXInOwokbGFuZ1snaWdub3JlbW9kaWZ5ZmlsZXNoZWxwJ10gPSAnT3Bvem9yaWxvISBUbyBvbW9nb8SNYSBzcHJlbWluamFuamUgZGF0b3RlaywgdHVkaSDEjWUgZG92b2xqZW5qZSAmcXVvdDtTcHJlbWVuaSBkYXRvdGVrZSZxdW90OyBuaSBkb2xvxI1lbm8gemEgdGVrb8SNZSB1cG9yYWJuaSZzY2Fyb247a2Ugc2t1cGluZS4gVG8gamUgbW9nb8SNZSB1xI1pbmtvdml0byB1cG9yYWJpdGkgc2t1cGFqIHogbW/Fvm5vc3Rqbywgb21laml0dmUgdXBvcmFibmlrb3YgemEgZG9zdG9wIGRvIGltZW5pa292Lic7CiRsYW5nWydzaG93dG9nZ2xlYnV0dG9uX3RleHQnXSA9ICdQb2thxb5pIHBvbGplIHd5c2l3eWcgVmtsb3BpL0l6a2xvcGknOwokbGFuZ1sndG9nZ2xld3lzaXd5ZyddID0gJ1ZrbG9waS9pemtsb3BpIHZpenVhbG5pIHVyZWpldmFsbmlrJzsKJGxhbmdbJ3N0eWxlc190YWInXSA9ICdDU1MgU3RpbGknOwokbGFuZ1snc3R5bGVzX2hlbHAnXSA9ICcgIElmIHlvdSBsZWF2ZSB0aGUgZmllbGQgZW1wdHksIFRpbnlNQ0Ugd2lsbCBwYXJzZSB5b3VyIENTUyBmaWxlIGFuZCBsaXN0IHRoZSBjbGFzcyBzdHlsZXMgY29udGFpbmVkIGluIGl0IHRvIHRoZSB1c2VyLiAKICBJZiB5b3Ugd2FudCBvbmx5IHNvbWUgc3R5bGVzIHByZXNlbnRlZCB0byB0aGUgdXNlciwgc3BlY2lmeSB0aGVtIGluIHRoZSBmb3JtICZxdW90O0N1c3RvbU5hbWUxPXN0eWxlMTsgQ3VzdG9tTmFtZTI9c3R5bGUyJnF1b3Q7LCAKICAmcXVvdDtzdHlsZTEmcXVvdDsgYmVpbmcgYSBjbGFzcyBjYWxsIGluIHlvdXIgc3R5bGVzaGVldCBhbmQgeW91IGRvbiYjMDM5O3QgcHV0IHRoZSAuIAogIG5vcm1hbGx5IHVzZWQgZm9yIGNsYXNzIGNhbGxzIGFzIGl0IGlzIGFscmVhZHkgaW4geW91ciBDU1MsIGl0IHdpbGwgbG9vayBsaWtlIHRoaXMgPHNwYW4gY2xhc3M9JnF1b3Q7c3R5bGUxJnF1b3Q7PnRleHQ8L3NwYW4+LCAKICBpbiB0aGUgZmlyc3QgZmllbGQgYmVsb3cuIAonOwokbGFuZ1snY3NzX3N0eWxlc190ZXh0J10gPSAnU3RpbGknOwokbGFuZ1snYWNjZXNzZGVuaWVkJ10gPSAnRG9zdG9wIHphdnJuamVuLiBQcm9zaW1vLCBwcmV2ZXJpdGUgZG92b2xqZW5qYS4nOwokbGFuZ1snZXJyb3InXSA9ICdOYXBha2EhJzsKJGxhbmdbJ3N1Ym1pdCddID0gJ1BvJnNjYXJvbjtsamknOwokbGFuZ1sndXBkYXRlJ10gPSAnUG9zb2RvYmknOwokbGFuZ1snc2F2ZXNldHRpbmdzJ10gPSAnU2hyYW5pIG5hc3Rhdml0dmUnOwokbGFuZ1snc2V0dGluZ3MnXSA9ICdOYXN0YXZpdHZlJzsKJGxhbmdbJ3NldHRpbmdzc2F2ZWQnXSA9ICdOYXN0YXZpdHZlIHNvIHNocmFuamVuZSc7CiRsYW5nWydzYXZlYWR2YW5jZWQnXSA9ICdTaHJhbmkgZG9kYXRuZSBuYXN0YXZpdGV2JzsKJGxhbmdbJ2FkdmFuY2Vkc2F2ZWQnXSA9ICdEb2RhdG5lIG5hc3Rhdml0dmUgc2hyYW5qZW5lJzsKJGxhbmdbJ3Rvb2xiYXJzYXZlZCddID0gJ09yb2RuYSB2cnN0aWNhIGplIGJpbGEgc2hyYW5qZW5hJzsKJGxhbmdbJ3N0eWxlc3NhdmVkJ10gPSAnU3RpbCBqZSBzaHJhbmplbic7CiRsYW5nWyd0ZXN0YXJlYXRleHQnXSA9ICc8cD5UZXN0IG9ibW/EjWplLCB2c2ViaW5hIG5lIGJvIHBvJnNjYXJvbjtrb2RvdmFuYSwgxI1lIHNlIGlncmF0ZSBzIHRlbS4uLjwvcD4nOwokbGFuZ1sncmVzZXQnXSA9ICdWcm5pIHByaXZ6ZXRlIG5hc3Rhdml0dmUnOwokbGFuZ1sncmVzZXRhbGwnXSA9ICdQb25hc3RhdmkgdnNlIG5hc3Rhdml0dmUgbmEgcHJpdnpldGUnOwokbGFuZ1snY29uZmlybXJlc2V0J10gPSAnQWxpIHN0ZSBwcmVwcmnEjWFuaSwgZGEgxb5lbGl0ZSBwb25hc3Rhdml0aSB0ZSBuYXN0YXZpdHZlIG5hIHByaXZ6ZXRlPyc7CiRsYW5nWydjb25maXJtcmVzZXRhbGwnXSA9ICdBbGkgc3RlIHByZXByacSNYW5pLCBkYSDFvmVsaXRlIHBvbmFzdGF2aXRpIHZzZSBuYXN0YXZpdHZlIG5hIHByaXZ6ZXRlPyc7CiRsYW5nWydzZXR0aW5nc3Jlc2V0J10gPSAnVGUgbmFzdGF2aXR2ZSBzbyBwb25hc3RhdmxqZW5lIG5hIHByaXZ6ZXRlJzsKJGxhbmdbJ2FsbHNldHRpbmdzcmVzZXQnXSA9ICdWc2UgbmFzdGF2aXR2ZSBzbyBwb25hc3RhdmxqZW5lIG5hIHByaXZ6ZXRlJzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnamUgYmlsIG5hZGdyYWplbiBuYSByYXpsacSNaWNvICVzJzsKJGxhbmdbJ2N1c3RvbWRyb3Bkb3duJ10gPSAnUHJpbGFnb2plbmkgaXp2bGXEjW5pIG1lbmknOwokbGFuZ1snY21zbXNsaW5rZXInXSA9ICdWc3RhdmkgcG92ZXphdm8gbmEgQ01TIHN0cmFuJzsKJGxhbmdbJ2JhY2tlbmRfdG9vbGJhcnMnXSA9ICdCYWNrZW5kIHRvb2xiYXIgc2V0dGluZ3MnOwokbGFuZ1snZnJvbnRlbmRfdG9vbGJhcnMnXSA9ICdGcm9udGVuZCB0b29sYmFyIHNldHRpbmdzJzsKJGxhbmdbJ3BsdWdpbnNfdGFiJ10gPSAnUGx1Z2luaSc7CiRsYW5nWydwbHVnaW5zX2hlbHAnXSA9ICdJemJlcml0ZSBwbHVnaW5lIGthdGVyZSDFvmVsaXRlIGFrdGl2aXJhdGkuIERva3VtZW50YWNpam8gamUgbW9nb8SNZSBuYWp0aSA8YSBocmVmPSIlcyIgdGFyZ2V0PSJfYmxhbmsiPnR1a2FqPC9hPic7CiRsYW5nWydwbHVnaW5zX3RleHQnXSA9ICdQbHVnaW5pJzsKJGxhbmdbJ3NhdmVwbHVnaW5zJ10gPSAnU2hyYW5pIHBsdWdpbmUnOwokbGFuZ1sncGx1Z2luc3NhdmVkJ10gPSAnUGx1Z2luaSBzaHJhbmplbmknOwokbGFuZ1sncGx1Z2luc19tb2R1bGUnXSA9ICdNb2R1bCBwbHVnaW5pJzsKJGxhbmdbJ3BsdWdpbnNfY29tbW9uJ10gPSAnTmFqcG9nb3N0ZWomc2Nhcm9uO2kgcGx1Z2luaSc7CiRsYW5nWydtb2R1bGUnXSA9ICdNb2R1bCc7CiRsYW5nWydkZXNjcmlwdGlvbiddID0gJ09waXMnOwokbGFuZ1sncGx1Z2luJ10gPSAnUGx1Z2luJzsKJGxhbmdbJ3lvdWFyZWludGV4dCddID0gJ05haGFqYXRlIHNlIHYnOwokbGFuZ1snbG9hZHN0eWxlc2hlZXR0ZXh0J10gPSAnTmFsb8W+aSBzdGlsIHphIHZzZWJpbm8gKHByaXBvcm/EjWVubyknOwokbGFuZ1snZXh0cmFzdHlsZXN0ZXh0J10gPSAnRG9kYXRraSBrIHN0aWx1JzsKJGxhbmdbJ2V4dHJhc3R5bGVzaGVscCddID0gJ0NTUyBqZSB2bmVzZW4gdHVrYWogYm8gZG9kYW4gdiBzdGlsIGthdGVyZWdhIGJlcmUgVGlueU1DRSBwb3RlbSBrbyBwcmVqbWUgQ01TTVMtb3Ygc3RpbCc7CiRsYW5nWyd1cGxvYWRuZXdmaWxlJ10gPSAnTm92YSBkYXRvdGVrYSc7CiRsYW5nWyd1cGxvYWRmaWxlJ10gPSAnTmFsb8W+aSc7CiRsYW5nWydjcmVhdGVuZXdkaXInXSA9ICdOb3ZhIG1hcGEnOwokbGFuZ1snY3JlYXRlZGlyJ10gPSAnVXN0dmFyaSc7CiRsYW5nWydub2Rpcm5hbWUnXSA9ICdJbWUgbWFwZSBuaSBwb2Rhbm8nOwokbGFuZ1snZGlyZXhpc3RzJ10gPSAnTWFwYSBzIHRlbSBpbWVub20gxb5lIG9ic3RhamEnOwokbGFuZ1snbmV3ZGlyY3JlYXRlZCddID0gJ05vdmEgbWFwYSBqZSBiaWxhIHVzdHZhcmplbmEnOwokbGFuZ1snbmV3ZGlyZmFpbGVkJ10gPSAnTmFwYWthIHByaSB1c3R2YXJqYW5qdSBub3ZlIG1hcGUnOwokbGFuZ1snbm9maWxlJ10gPSAnTm9iZW5hIGRhdG90ZWthIG5pIGJpbGEgbmFsb8W+ZW5hJzsKJGxhbmdbJ2ZpbGV0b29iaWcnXSA9ICdOYWxvxb5lbmEgZGF0b3Rla2EgamUgcHJldmVsaWthJzsKJGxhbmdbJ2NvbnRhaW5zaWxsZWdhbGNoYXJzJ10gPSAnRmlsZW5hbWUgY29udGFpbnMgb25lIG9yIG1vcmUgaWxsZWdhbCBjaGFyYWN0ZXJzICgmIzAzOTssJnF1b3Q7LCssKixcLC8sJmFtcDssJCknOwokbGFuZ1sndXBsb2FkZmFpbGVkJ10gPSAnTmFwYWthIHByaSBwcmVtaWthbmp1IG5hbG/FvmVuZSBkYXRvdGVrZSBuYSBuamVubyBtZXN0byc7CiRsYW5nWydmaWxldXBsb2FkZWQnXSA9ICdEYXRvdGVrYSBqZSBiaWxhIHVzcGUmc2Nhcm9uO25vIG5hbWUmc2Nhcm9uO8SNZW5hJzsKJGxhbmdbJ25vdGFuaW1hZ2UnXSA9ICdOYWxvxb5lbmEgZGF0b3Rla2Egbmkgc2xpZ2EnOwokbGFuZ1snZmlsZXBpY2tlcnRpdGxlJ10gPSAnQ01TIGl6YmlyYSBkYXRvdGVrJzsKJGxhbmdbJ3N1Y2Nlc3MnXSA9ICdVc3BlJnNjYXJvbjtubyc7CiRsYW5nWydmaWxlb3BlcmF0aW9ucyddID0gJ09wZXJhY2lqZSB6IGRhdG90ZWthbWknOwokbGFuZ1sndGhvdXNhbmRkZWxpbWl0ZXInXSA9ICcsJzsKJGxhbmdbJ3NpemUnXSA9ICdWZWxpa29zdCc7CiRsYW5nWydkaW1lbnNpb25zJ10gPSAnJlNjYXJvbjt4Vic7CiRsYW5nWydhZHZhbmNlZF90YWInXSA9ICdOYXByZWRubyc7CiRsYW5nWydoZWxwJ10gPSAnCTxoMz5XaGF0IGRvZXMgdGhpcyBkbz88L2gzPgoJPHA+RW5hYmxlcyBhIFRpbnlNQ0UgdG8gYmUgdXNlZCBhcyBhIFdZU0lXWUcuPC9wPgoJPGgzPkhvdyBkbyBJIHVzZSBpdD88L2gzPgoJPHA+SW5zdGFsbCBpdCwgdGhlbiBnbyB0byBVc2VyIFByZWZlcmVuY2VzIGFuZCBTZXQgVGlueU1DRSB0byBiZSB5b3VyIHd5c2l3eWcgb2YgY2hvaWNlLjwvcD4KCTxoMz5Ucm91Ymxlc2hvb3Rpbmc8L2gzPgoJU29tZSBwZW9wbGUgaGF2ZSB0cm91YmxlIHdpdGggdGlueSBub3Qgc2hvd2luZyB1cCB1cG9uIGluc3RhbGxhdGlvbiBvciB1cGdyYWRpbmcuIEhlcmUgaXMgYSBjaGVja2xpc3Qgb2YgCgl0aGluZ3MgeW91IGNhbiB0cnkgYmVmb3JlIGNvbnRhY3RpbmcgbWUgZm9yIGZ1cnRoZXIgc3VwcG9ydC4KCTxici8+Cgk8dWw+Cgk8bGk+MS4gUGxlYXNlLCBwbGVhc2UsIHRyeSB0byByZXVwbG9hZCB0aGUgbW9kdWxlcy9UaW55TUNFIGRpciB0byB5b3VyIHNlcnZlci4gWW91JiMwMzk7ZCBiZSBhbWF6ZWQgaG93IG1hbnkgdGltZXMgdGhpcyBoYXMgaGVscGVkIHBlb3BsZS48L2xpPgoJPGxpPjIuIFRyeSB0byBzd2l0Y2ggb24gdGhlIFN0YXRpYyBDb25maWcgb3B0aW9uLiBOb3RlIHRoYXQgdGhpcyByZXF1aXJlcyB5b3VyIC90bXAvLWRpciB0byBiZSB3cml0YWJsZSBieSB0aGUgd2Vic2VydmVyPC9saT4KCTxsaT4zLiBJZiB1cGdyYWRpbmcsIHBsZWFzZSB0cnkgdG8gcmVzZXQgYWxsIHNldHRpbmdzLiBOb3QgbmljZSBpZiB5b3UmIzAzOTt2ZSBkb25lIGEgbG90IG9mIGN1c3RvbWl6YXRpb24sIEkga25vdywgYnV0IGEgbG90IG9mIHRoaW5ncyBjaGFuZ2VzIGZyb20gMi4zLnggdG8gMi40Lnggc2VyaWVzIG9mIHRoZSBtb2R1bGUuCgk8L3VsPgoJPGJyLz4KCQkKJzsKJGxhbmdbJ3FjYSddID0gJ1AwLTE0NTg0NTA2NjQtMTI4NDU3MzA4NDkxOCc7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjEyODg2ODk4MDAuMzI2LjI4LnV0bWNzcj1mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZ3x1dG1jY249KHJlZmVycmFsKXx1dG1jbWQ9cmVmZXJyYWx8dXRtY2N0PS9pbmRleC5waHAnOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My4xMTY0MzYxOTA4LjEyODUxNTM3NjguMTI4ODcwMTcyNS4xMjg4NzA0NzA2LjMyOSc7CiRsYW5nWyd1dG1jJ10gPSAnMTU2ODYxMzUzJzsKJGxhbmdbJ3V0bWInXSA9ICcxNTY4NjEzNTMuMS4xMC4xMjg4NzA0NzA2JzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/so_SO.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ3N0cmlwYmFja2dyb3VuZHRhZ3MnXSA9ICdTdHJpcCBCYWNrZ3JvdW5kIFRhZ3MgRnJvbSBDU1MnOwokbGFuZ1sndXNlY29tcHJlc3Npb25fdGV4dCddID0gJ1VzZSBUaW55TUNFIGNvbXByZXNzaW9uIG1vZHVsZSc7CiRsYW5nWydzb3VyY2VfZm9ybWF0dGluZ190ZXh0J10gPSAnQXBwbHkgc291cmNlIGZvcm1hdHRpbmcgdG8gdGhlIG91dHB1dCBIVE1MJzsKJGxhbmdbJ29ubHl4aHRtbGVsZW1lbnRzX3RleHQnXSA9ICdPbmx5IGFsbG93IFhIVE1MLWNvbXBsaWFudCBlbGVtZW50cyc7CiRsYW5nWydkcm9wZG93bmJsb2NrZm9ybWF0c190ZXh0J10gPSAnQmxvY2tmb3JtYXRzIGluIGRyb3Bkb3duLW1lbnUnOwokbGFuZ1snbmV3bGluZXN0eWxlX3RleHQnXSA9ICdOZXdsaW5lLXN0eWxlJzsKJGxhbmdbJ3JlcGxhY2VfY21zX3NlbGZsaW5rX3RleHQnXSA9ICdSZXBsYWNlIHtjbXNfc2VsZmxpbmsgcGFnZT0mIzAzOTt4JiMwMzk7fSB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGxpbmsgZHVyaW5nIGVkaXRpbmcuJzsKJGxhbmdbJ2VuYWJsZV90aHVtYnNfdGV4dCddID0gJ0VuYWJsZSB0aHVtYm5haWwgcHJldmlld3MgaW4gdGhlIGltYWdlIGJyb3dzZXIuPGJyIC8+KE5vdGU6IFlvdSBtYXkgaGF2ZSB0byBzZXQgZmlsZSBjcmVhdGlvbiBtYXNrIHRvIDAwMiAoaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCAwMjIpPGJyIC8+IHRvIGdldCB0aGUgdGh1bWJuYWlscyB3b3JraW5nIChkbyB0aGlzIGluIFNpdGUgQWRtaW4gLT4gR2xvYmFsIFNldHRpbmdzKS4nOwokbGFuZ1snc2hvd19wYXRoX3RleHQnXSA9ICdTaG93IHRoZSBwYXRoIG9mIHRoZSBlbGVtZW50IGF0IHRoZSBib3R0b20gb2YgdGhlIGVkaXRvci4nOwokbGFuZ1sncGx1Z2luc190YWInXSA9ICdQbHVnaW5zL1Rvb2xiYXInOwokbGFuZ1sncGx1Z2luc19oZWxwJ10gPSAnQ2hvb3NlIHRoZSBwbHVnaW5zIHlvdSB3YW50IHRvIGFjdGl2YXRlLiA8YnIgLz5JZiB0aGUgZG9jdW1lbnRhdGlvbiBpcyBpbnN0YWxsZWQsIGNsaWNrIG9uIGFuIHBsdWdpbiBuYW1lIHRvIG9wZW4gdGhlIGhlbHAgcGFnZXMuJzsKJGxhbmdbJ3BsdWdpbnNfdGV4dCddID0gJ1BsdWdpbnMnOwokbGFuZ1sndG9vbGJhcl9oZWxwJ10gPSAnVGhlc2Ugb3B0aW9ucyBzaG91bGQgY29udGFpbiBhIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIGJ1dHRvbi9jb250cm9sIG5hbWVzIHRvIGluc2VydCBpbnRvIHRoZSB0b29sYmFyLic7CiRsYW5nWyd0b29sYmFyX3RleHQnXSA9ICdUb29sYmFyJzsKJGxhbmdbJ2xhbmd1YWdlX3RleHQnXSA9ICdDaG9vc2UgbGFuZ3VhZ2U6JzsKJGxhbmdbJ2VkaXRvcl93aWR0aF90ZXh0J10gPSAnV2lkdGggb2YgZWRpdG9yIGZpZWxkJzsKJGxhbmdbJ2VkaXRvcl9oZWlnaHRfdGV4dCddID0gJ0hlaWdodCBvZiBlZGl0b3IgZmllbGQnOwokbGFuZ1snYXV0byddID0gJ0F1dG8nOwokbGFuZ1snb3InXSA9ICdvcic7CiRsYW5nWydib2R5Y3NzX3RleHQnXSA9ICdCb2R5IHRhZyBDU1MnOwokbGFuZ1snYm9keWNzc19oZWxwJ10gPSAnbGVhdmUgQkxBTksgb3Igc2V0IERFRkFVTFQgZm9yIHVzZSBQQUdFIENTUy4gTm90ZTogVG8gbWFrZSBlZGl0b3IgYmFja2dyb3VuZCBjb2xvciB3aGl0ZSBwdXQgdGhlIGZvbGxvd2luZyBpbiB0aGUgYmxhbms6IGJhY2tncm91bmQtY29sb3I6d2hpdGU7JzsKJGxhbmdbJ3N0eWxlc190YWInXSA9ICdDU1MgU3R5bGVzJzsKJGxhbmdbJ3N0eWxlc19oZWxwJ10gPSAnSWYgeW91IGxlYXZlIHRoZSBmaXJzdCBmaWVsZCBlbXB0eSwgVGlueU1DRSB3aWxsIHBhcnNlIHlvdXIgQ1NTIGZpbGUgYW5kIGxpc3QgdGhlIHN0eWxlcyBjb250YWluZWQgaW4gaXQgdG8gdGhlIHVzZXIuIElmIHlvdSB3YW50IG9ubHkgc29tZSBzdHlsZXMgcHJlc2VudGVkIHRvIHRoZSB1c2VyLCBzcGVjaWZ5IHRoZW0gaW4gdGhlIGZvcm0gJnF1b3Q7U3R5bGUgMT1zdHlsZTE7IFN0eWxlIDI9c3R5bGUyJnF1b3Q7IGluIHRoZSBmaXJzdCBmaWVsZCBiZWxvdy4gSW4gdGhlIHJlbWFpbmluZyBmaWVsZHMsIHlvdSBjYW4gc3BlY2lmeSBDU1Mgc3R5bGVzIGZvciBUYWJsZXMsIFJvd3MgYW5kIENlbGwgd2hpY2ggYXJlIHVzZWQgaW4gdGhlIGNvcnJlcHNvbmRpbmcgZGlhbG9ncy4gRm9yIGFuIGVtcHR5IGZpZWxkLCB0aGUgc3R5bGVzIGZyb20gdGhlIGdlbmVyYWwgc3R5bGVzIGFyZSB1c2VkLic7CiRsYW5nWydjc3Nfc3R5bGVzX3RleHQnXSA9ICdHZW5lcmFsJzsKJGxhbmdbJ3RhYmxlX3N0eWxlc190ZXh0J10gPSAnVGFibGUnOwokbGFuZ1sndGFibGVfcm93X3N0eWxlc190ZXh0J10gPSAnUm93JzsKJGxhbmdbJ3RhYmxlX2NlbGxfc3R5bGVzX3RleHQnXSA9ICdDZWxsJzsKJGxhbmdbJ2FjY2Vzc2RlbmllZCddID0gJ0FjY2VzcyBEZW5pZWQuIFBsZWFzZSBjaGVjayB5b3VyIHBlcm1pc3Npb25zLic7CiRsYW5nWydlcnJvciddID0gJ0Vycm9yISc7CiRsYW5nWydzdWJtaXQnXSA9ICdTdWJtaXQnOwokbGFuZ1sndXBkYXRlJ10gPSAnVXBkYXRlJzsKJGxhbmdbJ3NldHRpbmdzJ10gPSAnU2V0dGluZ3MnOwokbGFuZ1snc2V0dGluZ3NzYXZlZCddID0gJ1NldHRpbmdzIHdhcyBzYXZlZCc7CiRsYW5nWydwbHVnaW5zc2F2ZWQnXSA9ICdQbHVnaW5zIHdhcyBzYXZlZCc7CiRsYW5nWydzdHlsZXNzYXZlZCddID0gJ1N0eWxlcyB3YXMgc2F2ZWQnOwokbGFuZ1sndGVzdGFyZWF0ZXh0J10gPSAnPHA+VGVzdCBhcmVhLCBubyBjb250ZW50IHdpbGwgYmUgaGFybWVkIHBsYXlpbmcgd2l0aCB0aGlzLi4uPC9wPic7CiRsYW5nWydoZWxwJ10gPSAnCTxoMz5XaGF0IGRvZXMgdGhpcyBkbz88L2gzPgoJPHA+RW5hYmxlcyBUaW55TUNFIHRvIGJlIHVzZWQgYXMgYSBXWVNJV1lHLjwvcD4KCTxoMz5Ib3cgZG8gSSB1c2UgaXQ/PC9oMz4KCTxwPkluc3RhbGwgaXQsIHRoZW4gZ28gdG8gVXNlciBQcmVmZXJlbmNlcyBhbmQgU2V0IFRpbnlNQ0UgdG8gYmUgeW91ciB3eXNpd3lnIG9mIGNob2ljZS48L3A+Cgk8cD5TZXQgdGhlIHByb3BlciBwZXJtaXNzaW9uIGZvciBncm91cHMgYWxsb3dlZCB0byBzZXQgcHJlZmVyZW5jZXMgZm9yIFRpbnlNQ0UuPC9wPic7CiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICcJCTx1bD4KCQk8bGk+CgkJPHA+VmVyc2lvbjogMi4wLjU8L3A+CgkJPHA+QWRkZWQgYSB4aHRtbC1lbGVtZW50cyBvbmx5IG9wdGlvbjwvcD4KCQk8cD5Nb3ZlZCBqYXZhc2NyaXB0IGNvbmZpZyBpbnRvIGFuIGV4dGVybmFsIGZpbGU8L3A+CgkJPHA+QWRkZWQgc2VsZWN0aW5nIHAgb3IgYnIvIHN0eWxlIG5ld2xpbmVzPC9wPgoJCTxwPlVwZGF0ZWQgdG8gbmV3IGNvbXByZXNzaW9uIGVuZ2luZS4gU2hvdWxkIGZpeCBzb21lIGJ1Z3MgcmVsYXRlZCB0byB0aGlzPC9wPgoJCTxwPkFkZGVkIHBsdWdpbiBkZXNjcmlwdGlvbnMgZnJvbSBkb2NzPC9wPgoJCTxwPkZpeGVkIHNob3dpbmcgb2YgY29ycmVjdCB0ZXN0YXJlYSBldmVuIGlmIGFub3RoZXIgd3lzaXd5ZyBpcyBjaG9zZW48L3A+CgkJPHA+VXBkYXRlZCB0byBUaW55IDIuMS4wPC9wPgoJCTxwPkFkZGVkIHRodW1ibmFpbCBwcmV2aWV3cyBpbiBpbWFnZSBicm93c2VyLjwvcD4KCQk8L2xpPgoJCTxsaT4KCQk8cD5WZXJzaW9uOiAyLjAuNDwvcD4KCQk8cD5GaXhlZCBjdXN0b21pemVkIHRleHRhcmVhIHdpZHRoPC9wPgoJCTxwPlVwZGF0ZWQgdG8gVGlueSAyLjAuNzwvcD4KCQk8cD5SZXZlcnNlZCBjaGFuZ2Vsb2cgY29udGVudCAoZnJvbSBub3cgb24gYXQgbGVhc3QpIDstKTwvcD4KCQk8cD48L3A+CgkJPC9saT4KCgkJPGxpPgoJCTxwPlZlcnNpb246IDEuMDwvcD4KCQk8cD5PcmlnaW5hbCBtb2R1bGUgY29kZSBmb3IgVGlueU1DRSBXWVNJV1lHIHRleHRhcmVhIHJlcGxhY2VtZW50IHRvb2wuPC9wPgoJCTwvbGk+CgkJPGxpPgoJCTxwPkF1dGhvcjogU2ltb24gQnJvd24gPHNpbW9uQHVwdG9lbGV2ZW4ud3M+PC9wPgoJCTxwPlZlcnNpb246IDEuMTwvcD4KCQk8cD5Db252ZXJ0ZWQgZm9yIHVzZSB3aXRoIG5ldyBDTVMgTW9kdWxlIGFyY2hpdGVjdHVyZS48L3A+CgkJPHA+VXBncmFkZWQgVGlueU1DRSB0byB2ZXJzaW9uIDEuNDIuPC9wPgoJCTwvbGk+CgkJPGxpPgoJCTxwPlZlcnNpb246IDEuMjwvcD4KCQk8cD5GaXhlZCBidWcgd2l0aCBwYXRocyBiZWluZyBjcmVhdGVkIHdyb25nIG9uIGltYWdlIGluc2VydC48L3A+CgkJPC9saT4KCQk8bGk+CgkJPHA+VmVyc2lvbjogMi4wLjA8L3A+CgkJPHA+QXV0aG9yOiBTdGVmYW4gUiZvdW1sO2xsaW48L3A+CgkJPHA+VVBEQVRFRCB0byB2ZXJzaW9uIDIuMC41LjEgb2YgVGlueU1DRSBlZGl0b3IuPC9wPgoJCTxwPkFERCBwbHVnaW5zIHNpbXBsZWJyb3dzZXIsIGNtc21zbGluayA8L3A+CgkJPHA+QUREIHNvbWUgY29uZmlndXJhdGlvbiBvcHRpb25zLjwvcD4KCQk8cD5BREQgcGVybWlzc2lvbiB0byBtb2RpZnkgc2V0dGluZ3MuPC9wPgoJCTwvbGk+CgkJPGxpPgoJCTxwPlZlcnNpb246IDIuMC4xPC9wPgoJCTxwPlVQREFURUQgdG8gdmVyc2lvbiAyLjAuNi4xIG9mIFRpbnlNQ0UgZWRpdG9yLjwvcD4KCQk8cD5BREQgY29uZmlndXJhdGlvbiBvcHRpb25zOiBsYW5ndWFnZSBhbmQgc291cmNlX2Zvcm1hdHRpbmcuPC9wPgoJCTxwPkltcHJvdmVkIHBsdWdpbiBjb25maWd1cmF0aW9uLjwvcD4KCQk8cD5BREQgbW9yZSBsYW5ndWFnZXMuPC9wPgoJCTwvbGk+CgkJPGxpPgoJCTxwPlZlcnNpb246IDIuMC4yPC9wPgoJCTxwPkZJWCBmaWxlYnJvd3NlcjwvcD4KCQk8cD5GSVggc2VjdXJpdHkgZmxhdyBpbiBmaWxlYnJvd3NlcjwvcD4KCQk8L2xpPgoJCTxsaT4KCQk8cD5WZXJzaW9uOiAyLjAuMzwvcD4KCQk8cD5Db252ZXJ0ZWQgdG8gbmV3IGZldGNoLW1ldGhvZCBvZiBjb250ZW50X2FycmF5PC9wPgoJCTxwPkZJWCBzZWN1cml0eSBmbGF3IGluIGZpbGVicm93c2VyPC9wPgoJCTxwPkFkZGVkIGxvY2FsaXphdGlvbiBvZiB0ZXN0YXJlYS10ZXh0PC9wPgoJCTwvbGk+CgkJPC91bD4nOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My4yMDk1MzcwMDM0LjExNzQzMTQ2OTQuMTE3NDMxNDY5NC4xMTc0MzE0Njk0LjEnOwokbGFuZ1sndXRtYyddID0gJzE1Njg2MTM1Myc7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjExNzQzMTQ2OTQuMS4xLnV0bWNjbj0ocmVmZXJyYWwpfHV0bWNzcj1va3Yuc2V8dXRtY2N0PS9BdHRfc2FuZGEvVmVtX2thbl9zYW5kYS98dXRtY21kPXJlZmVycmFsJzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/sr_YU.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1RpbnlNQ0UgZWRpdG9yIHphIHRla3N0JzsKJGxhbmdbJ2FkbWluZGVzY3JpcHRpb24nXSA9ICdPdmFqIG1vZHVsIG9tb2d1xIdhdmEgdW5vcyBpIG9kcsW+YXZhbmplIHNhZHLFvmFqYSwgbW/FvmUgc2Uga29yaXN0aXRpIGkgemEgdW5vcyByYXpuaWggZHJ1Z2loIHZyc3RhIHBvZGF0YWthIGtvamkgc2UgbW9ndSBvZHLFvmF2YXRpIHBvbW/Eh3UgZWRpdG9yYSBrb2ppIHBva3JlxIdlIFRpbnlNQ0UgcHJvamVjdC4nOwokbGFuZ1sndW5pbnN0YWxsZWQnXSA9ICdNb2R1bCB1a2xvbmplbi4nOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kdWwgdmVyemlqZSAlcyBqZSBpbnN0YWxpcmFuLic7CiRsYW5nWydzdHJpcGJhY2tncm91bmR0YWdzJ10gPSAnSXNrbGp1xI1pIEJhY2tncm91bmQgdGFnb3ZlIHUgQ1NTLXUnOwokbGFuZ1snc3RpcHRhZ3NfaGVscCddID0gJ092YSBvcGNpamEgc2x1xb5pIHphIGlza2xqdcSNaXZhbmplIHBvemFkaW5lIHN0cmFuaWNlIHUgQ1NTIHN0aWxvdmltYS4nOwokbGFuZ1snc291cmNlX2Zvcm1hdHRpbmdfdGV4dCddID0gJ1ByaW1lbmEgZm9ybWF0aXJhbmphIGtvZGEgbmEgSFRNTCBpemxhenUnOwokbGFuZ1snZHJvcGRvd25ibG9ja2Zvcm1hdHNfdGV4dCddID0gJ0Jsb2NrZm9ybWF0cyB1IGRyb3Bkb3duLW1lbmlqdSc7CiRsYW5nWydhbGxvd3RhYmxlcyddID0gJ0RvenZvbGkgdGFiZWxlJzsKJGxhbmdbJ25ld2xpbmVzdHlsZV90ZXh0J10gPSAnU3RpbCBub3ZlIGxpbmlqZSc7CiRsYW5nWydwc3R5bGUnXSA9ICc8cD4tc3RpbCc7CiRsYW5nWydicnN0eWxlJ10gPSAnPGJyLz4tc3RpbCc7CiRsYW5nWyd1c2Vjb21wcmVzc2lvbnRleHQnXSA9ICdVcG90cmViaSBneiBjb21wcmVzc2lvbic7CiRsYW5nWyd1c2Vjb21wcmVzc2lvbmhlbHAnXSA9ICdPdm8gbW/FvmUgdWJyemF0aSB1xI1pdGF2YW5qZSBUaW55TUNFLWEsIGFsaSBtb8W+ZSB0YWtvxJFlIHNwcmXEjWl0aSB1xI1pdGF2YW5qZSBuYSBuZWtpbSBzaXN0ZW1pbWEuIEtvcmlzdGl0ZSBzYSBvcHJlem9tLic7CiRsYW5nWydmb3JjZWRyb290YmxvY2t0ZXh0J10gPSAnUHJpbnVkaSA8cD4gcm9vdGJsb2NrJzsKJGxhbmdbJ2ZvcmNlZHJvb3RibG9ja2hlbHAnXSA9ICdQcmludWRpIHZyYcSHZW4gc2FkcsW+YWogZGEgc2UgemF0dm9yaSBzYSA8cD4tdGFnb20nOwokbGFuZ1snZmlsZXBpY2tlcnN0eWxlJ10gPSAnRmlsZXBpY2tlciBzdGlsJzsKJGxhbmdbJ2ZpbGVwaWNrZXJzaXplJ10gPSAnRmlsZXBpY2tlciB2ZWxpxI1pbmEnOwokbGFuZ1snYWxsb3d1cGxvYWR0ZXh0J10gPSAnRG96dm9saSB1cGxvYWQgaSBrcmVpcmFuamUgZGlyZWt0b3JpamEgdSBGaWxlUGlja2VydSc7CiRsYW5nWydhbGxvd3NjYWxpbmd0ZXh0J10gPSAnRG96dm9saSBvbi10aGUtZmx5IHByb21lbnUgdmVsacSNaW5lIG90cHJlbWxqZW5lIHNsaWtlJzsKJGxhbmdbJ3NjYWxpbmdkaW1lbnNpb25zdGV4dCddID0gJ1BvZHJhenVtZXZhbmUgZGltZW56aWplJzsKJGxhbmdbJ3Jlc2l6ZXRvJ10gPSAnUHJvbWVuaSB2ZWxpxI1pbnUgdTonOwokbGFuZ1snbWFrZXRodW1ibmFpbCddID0gJ05hcHJhdmkgc2xpxI1pY3UgdSB0b2t1IG90cHJlbWUgc2xpa2UnOwokbGFuZ1sndXNlYWR2YW5jZWRwcm9maWxlJ10gPSAnS29yaXN0aSBuYXByZWRuaSBUaW55TUNFLXByb2ZpbCc7CiRsYW5nWydzYXZlcHJvZmlsZSddID0gJ1NhxI11dmFqIHByb2ZpbCc7CiRsYW5nWydwcm9maWxlc2F2ZWQnXSA9ICdQcm9maWwgamUgc2HEjXV2YW4nOwokbGFuZ1sncHJvZmlsZXNfdGFiJ10gPSAnUHJvZmlsaSc7CiRsYW5nWydhZHZhbmNlZF9iYWNrZW5kX3Rvb2xiYXJzJ10gPSAnTmFwcmVkbm8gQmFja2VuZCBwb2RlJnNjYXJvbjthdmFuamUgcHJvZmlsYSc7CiRsYW5nWydzYXZlc3R5bGVzJ10gPSAnU2HEjXV2YWogc3RpbG92ZSc7CiRsYW5nWydhbGxvd2FkdmFuY2VkcHJvZmlsZSddID0gJ0RvenZvbGkga29yaSZzY2Fyb247xIdlbmplIG5hcHJlZG5paCBwcm9maWxhIHUgVGlueU1DRSc7CiRsYW5nWydzaG93ZmlsZW1hbmFnZW1lbnQnXSA9ICdQcmlrYcW+aSBmYWpsbWFuYWdlbWVudCBvcGNpamUnOwokbGFuZ1snc2hvd2ZpbGVtYW5hZ2VtZW50aGVscCddID0gJ1ByaWthxb5pIGZhamxtYW5hZ2VtZW50IHUgb3BjaWphbWEga2FvICZzY2Fyb247dG8gc3Ugb3RwcmVtZSwgbmFwcmF2aSBkaXJla3RvcmlqIGkgYnJpc2FuamUgZmFqbG92YSB1dSBGaWxlUGlja2VydSwgYWtvIGltYSBrb3Jpc25payBkb3p2b2x1IHphIHRvLic7CiRsYW5nWydyZXN0cmljdGRpcnMnXSA9ICdaYWJyYW5pIGtvcmlzbmlrb3YgZGlyZWt0b3JpaiBwcmlzdHVwJzsKJGxhbmdbJ3Jlc3RyaWN0ZGlyc2hlbHAnXSA9ICdPdm8gxIdlIG9ncmFuacSNaXRpIGZhamxtYW5hZ2VtZW50LW1vZ3XEh25vc3RpIGtvcmlzbmlrYSBuYSBzdWJkaXIgdSAmcXVvdDt1cGxvYWQmcXVvdDsgZGlyZWt0b3JpanUga29qaSBpbWFqdSBpc3RvIGltZSBrYW8gaSB6YSBwcmlqYXZ1IHRvZyBrb3Jpc25pa2EuIEFrbyBzdWJkaXIgbmUgcG9zdG9qaSwgdGFqIMSHZSB2ZXJvdmF0bm8gYml0aSBrcmVpcmFuLiBJbWFqdGUgbmEgdW11LCBvdm8gc2FkYSByYWRpIHNhbW8gc2Egc3RhbmRhcmRuaW0gZGlyIGltZW5pbWEsIHVwbG9hZC9pbWFnZXMuIFRvIHNlIG1vxb5lIHByb21lbml0aSB1IGJ1ZHXEh25vc3RpLic7CiRsYW5nWydkZWxldGVjb25maXJtYXRpb24nXSA9ICdKZXN0ZSBsaSBzaWd1cm5pIGRhIG92YUogZmFKbCB0cmViYSBkYSBzZSBvYnJpJnNjYXJvbjtlPyc7CiRsYW5nWydkZWxldGVmaWxlc3VjY2VzcyddID0gJ2plIHVzcGUmc2Nhcm9uO25vIG9icmlzYW4nOwokbGFuZ1snZGVsZXRlZmlsZWZhaWxlZCddID0gJ25pc3UgbW9nbGkgYml0aSBvYnJpc2FuaSc7CiRsYW5nWydkZWxldGVzdWJkaXJmYWlsZWQnXSA9ICduaWplIG1vZ2FvIGJpdGkgb2JyaXNhbic7CiRsYW5nWydkZWxldGVzdWJkaXJzdWNjZXNzJ10gPSAnamUgdXNwZSZzY2Fyb247bm8gb2JyaXNhbic7CiRsYW5nWydkZWxldGVkaXJjb25maXJtYXRpb24nXSA9ICdEYSBsaSBzdGUgc2lndXJuaSBkYSBzZSBvdmFqIHByYXphbiBzdWJkaXIgdHJlYmEgZGEgb2JyaSZzY2Fyb247ZT8nOwokbGFuZ1snZGVsZXRlZGlyJ10gPSAnT2JyaSZzY2Fyb247aSBwcmF6YW4gc3ViZGlyJzsKJGxhbmdbJ2RlbGV0ZWZpbGUnXSA9ICdPYnJpJnNjYXJvbjtpIGZhamwnOwokbGFuZ1snY2Fubm90cmVhZGNvbmZpZyddID0gJ05lIG1vxb5lIHNlIHXEjWl0YXRpIHRpbnljb25maWcucGhwIGRpcmVrdG5vIHRha28gZGFUaW55TUNFIHZlcm92YXRubyBuZcSHZSByYWRpdGkuIFRyZWJhbG8gYmkgZGEgcHJvdmVyaXRlIGRvenZvbGUgemEgZmFqbG92ZSBpIGdsYXZuZSBkaXJla3RvcmlqZSwga29qaSBiaSB0cmViYWxpIGRhIGJ1ZHUgcmVhZGFibGUgemEgc3ZlLCBhbGkgc2FtbyB3cml0YWJsZSB6YSB2bGFzbmlrYS4nOwokbGFuZ1snZmlsZW5hbWVvbmx5J10gPSAnUHJpa2HFvmkgaW1lbmEgZmFqbG92YSc7CiRsYW5nWyd0aHVtYm5haWxzb25seSddID0gJ1ByaWthxb5pIHNsacSNaWNlJzsKJGxhbmdbJ3Nob3d0aHVtYm5haWxmaWxlc3RleHQnXSA9ICdQcmlrYcW+aSBzbGnEjWljZSBrYW8gcmVndWxhcm5lIGZhamxvdmUnOwokbGFuZ1snZmlsZW5hbWVhbmR0aHVtYm5haWxzJ10gPSAnUHJpa2HFvmkgaSBpbWVuYSBmYWpsb3ZhIGkgc2xpxI1pY2UnOwokbGFuZ1snc2tpbnN0ZXh0J10gPSAnSXpnbGVkJzsKJGxhbmdbJ3NraW52YXJpYXRpb250ZXh0J10gPSAnVmFyaWFjaWphIGl6Z2xlZGEnOwokbGFuZ1snYWR2YW5jZWR3YXJuaW5nJ10gPSAnPHN0cm9uZz5JbWFKdGUgdSB2aWR1ITxici8+TWVuamFuamUgb3ZpaCBwb3N0YXZraSBtb8W+dSBpemF6dmF0aSBUaW55TUNFIGRhIHByZXN0YW5lIHJhZGl0aSBpbGkgZGEgamUgZ2VuZXJpc2FuaSBrb2QgcG9ncmUmc2Nhcm9uO2FuIG5hIG5la2kgbmHEjWluLiBTYW1vIGl6bWVuaXRlIG92byBha28gem5hdGUgJnNjYXJvbjt0YSByYWRpdGUhIE1vbGltbyBWYXMgZGEgcG9nbGVkYXRlIFRpbnlNQ0Ugc2FqdCBwcmUgaWdyYW5qYSBzYSBvdmltLjwvc3Ryb25nPic7CiRsYW5nWydlbnRpdHllbmNvZGluZ190ZXh0J10gPSAnS29kaXJhbmplIGVudGl0ZXRhJzsKJGxhbmdbJ3Jhd2VuY29kaW5nJ10gPSAnUmF3IGtvZGlyYW5qZSAobmFqYnLFvmksIHJhZGkgdSB2ZcSHaW5pIHNsdcSNYWphKSc7CiRsYW5nWyduYW1lZGVuY29kaW5nJ10gPSAnSW1lbm92YW5vIGtvZGlyYW5qZSAoa2FvICZuYnNwOyknOwokbGFuZ1snbnVtZXJpY2VuY29kaW5nJ10gPSAnTnVtZXJpxI1rbyBrb2RpcmFuamUgKGthbyAmYW1wOyMxNjA7KSc7CiRsYW5nWydzaG93X3BhdGhfdGV4dCddID0gJ1ByaWthxb5pIHB1dCBlbGVtZW50YSBuYSBkbnUgdXJlZG5pa2EnOwokbGFuZ1sndG9vbGJhcl90YWInXSA9ICdUb29sYmFyL2FsYXRrZSc7CiRsYW5nWyd0b29sYmFyX2hlbHAnXSA9ICdPdmUgb3BjaWplIHRyZWJhanUgc2FkcsW+YXZhdGkgc2EgemFyZXpvbSBvZHZvamVudSBsaXN0dSBpbWVuYSB6YSB0YXN0ZXIva29udHJvbGUgdG9vbGJhcnUvYWxhdGthbWEuIFpuYWsgfCBtb8W+ZSBkYSBzZSBrb3Jpc3RpIHVtZXN0byAmIzAzOTtzZXBhcmF0b3JhJiMwMzk7IHJlxI1pJzsKJGxhbmdbJ3Rvb2xiYXJfdGV4dCddID0gJ1Rvb2xiYXIvYWxhdGtlJzsKJGxhbmdbJ3Rvb2xiYXJoZWxwdGV4dCddID0gJ0tsaWtuaSBvdmRlIHphIHByZWdsZWQgdG9vbGJhci1pbnN0cnVrY2lqZSB1IFRpbnlNQ0Utd2lraS4nOwokbGFuZ1snZWRpdG9yX3dpZHRoX3RleHQnXSA9ICcmU2Nhcm9uO2lyaW5hIHBvbGphIGVkaXRvcmEnOwokbGFuZ1snZWRpdG9yX2hlaWdodF90ZXh0J10gPSAnVmlzaW5hIHBvbGp1IGVkaXRvcmEnOwokbGFuZ1snYXV0byddID0gJ0F1dG9tYXRza2knOwokbGFuZ1snb3InXSA9ICdpbGknOwokbGFuZ1sndGVzdGFyZWFfdGFiJ10gPSAnWm9uYSB6YSB0ZXN0aXJhbmplJzsKJGxhbmdbJ3Nob3d0ZXN0aW5nb3V0cHV0J10gPSAnUHJpa2HFvmkgcmV6dWx0YXRlIHRlc3RpcmFuamEnOwokbGFuZ1sndGVzdGFyZWFlZGl0b3InXSA9ICdFZGl0b3Igem9uZSB6YSB0ZXN0aXJhbmplJzsKJGxhbmdbJ3Rlc3RhcmVhb3V0cHV0J10gPSAnSXpsYXogem9uZSB6YSB0ZXN0aXJhbmplJzsKJGxhbmdbJ3Rlc3RhcmVhb3V0cHV0c291cmNlJ10gPSAnSXp2b3JuaSBrb2Qgem9uZSB6YSB0ZXN0aXJhbmplJzsKJGxhbmdbJ2FsbG93cmVzaXppbmcnXSA9ICdEb3p2b2xpIHByb21lbnUgdmVsacSNaW5lIG5hIG1lc3R1IHVyZWRuaWthJzsKJGxhbmdbJ3Jlc2l6ZW5vbmUnXSA9ICdOZSBkb3p2b2xpIHByb21lbnUgdmVsacSNaW5lJzsKJGxhbmdbJ3Jlc2l6ZWJvdGgnXSA9ICdEb3p2b2xpIHByb21lbnUgdmVsacSNaW5lIHUgb2JhIHNtZXJhJzsKJGxhbmdbJ3Jlc2l6ZWhlaWdodCddID0gJ0RvenZvbGkgcHJvbWVudSB2ZWxpxI1pbmUgc2FtbyB1IHZpc2ludSc7CiRsYW5nWydkYXRldGltZWZvcm1hdF90ZXh0J10gPSAnRm9ybWF0IERhdHVtYS9WcmVtZW5hJzsKJGxhbmdbJ3RpbWV0ZXh0J10gPSAnVnJlbWUnOwokbGFuZ1snZGF0ZXRleHQnXSA9ICdEYXR1bSc7CiRsYW5nWydkYXRldGltZWZvcm1hdF9oZWxwJ10gPSAnS2xpa25pdGUgb3ZkZSB6YSBwb21vxIcga2FrbyBkYSBmb3JtYXRpcmF0ZSBkYXR1bS92cmVtZSc7CiRsYW5nWydleHRyYWNvbmZpZ3RleHQnXSA9ICdEb2RhdG5lIGtvbmZpZ3VyYWNpamUnOwokbGFuZ1snZXh0cmFjb25maWdoZWxwMiddID0gJ0plZG5hIGl6amF2YSBwbyByZWR1LCB6YXJlemkgxIdlIGJpdGkgZG9kYWl0IHByZSBpIHBvc2xlIG92b2cgc2FkcsW+YWphLiBQcm92ZXJpdGUgVGlueU1DRS1XaWtpIHphIGluc3RydWtjaWplLic7CiRsYW5nWydjdXN0b21kcm9wZG93bnRleHQnXSA9ICdQcmlsYWdvxJFlbiBkcm9wZG93bic7CiRsYW5nWydjdXN0b21kcm9wZG93bmhlbHAnXSA9ICdVYmFjdWplIHByaWxhZ2/EkWVuZSBzbmlwZXRlIGtvZGEvdGVrc3RhIHMgaXpib3JvbSBpeiBkcm9wZG93biBtZW5pamEuCk/EjWlnbGVkbmUga29yaXN0aSBzdSB6YSBsYWsgcHJpc3R1cCB0YWdvdmEsIGl0ZC4gTWVuaSBzZSB1bWV0bmUgdSB0b2xsYmFyL2FsYXRrYW1hIHMgcG9tb8SHdSAmIzAzOTtjdXN0b21kcm9wZG93biYjMDM5Oy4nOwokbGFuZ1snc3RhcnRlbmFibGVkdGV4dCddID0gJ1Bva3JldGFuamUgc2tyaXB0YSBvbW9ndcSHZW5vJzsKJGxhbmdbJ3N0YXJ0ZW5hYmxlZGhlbHAnXSA9ICdPcG96dmF0aSBpemJvciBwb2tyZcSHZSBUaW55LXVyZWRuaWsgdSBkZWFrdGl2aXJhbm9tIHN0YW5qdS4gVHJlYmEgZGEgc2Uga29yaXN0aSB6YWplZG5vIHNhIHRvZ2dsZSB0YXN0ZXJvbS4nOwokbGFuZ1snbG9hZGNtc2xpbmtlcnRleHQnXSA9ICdVxI1pdGFqIENNUy1saW5rZXInOwokbGFuZ1snbG9hZGNtc2xpbmtlcmhlbHAnXSA9ICdUbyBnZW5lcmkmc2Nhcm9uO2UgSmF2YVNjcmlwdCBrb2Qga29qaSBqZSBwb3RyZWJhbiBkYSBvbW9ndcSHaSAmIzAzOTtjbXNsaW5rZXImIzAzOTsgZGEgc2UgZG9kYSB1IHRvb2xiYXIvYWxhdGtlLic7CiRsYW5nWydjbXNsaW5rZXJzdHlsZXRleHQnXSA9ICdDTVMtbGlua2VyIGxpbmstc3RpbCc7CiRsYW5nWydjbXNzZWxmbGlua3N0eWxlJ10gPSAne2Ntc19zZWxmbGlua30tc3RpbCc7CiRsYW5nWydhaHJlZnN0eWxlJ10gPSAnPGEgaHJlZj4tc3RpbCc7CiRsYW5nWydjbXNsaW5rZXJhZGRzdGV4dCddID0gJ0NNUy1saW5rZXIgZG9kYWNpJzsKJGxhbmdbJ2Ntc2xpbmtlcmFkZHNoZWxwJ10gPSAnVG8gdmFtIG9tb2d1xIdhdmEgZGEgZG9kYXRlIHN0dmFyaSBiaWxvIDxhIGhyZWY+LXRhZ292ZSBpbGkge2Ntc19zZWxmbGlua30sIGthZGEgamUgZ2VuZXJpc2FuIENNUy1saW5rZXIuJzsKJGxhbmdbJ2F2b2lkbGlua2NvbnZlcnNpb250ZXh0J10gPSAnSXpiZWdhdmFqIGxpbmsga29udmVyemlqdSc7CiRsYW5nWydhdm9pZGxpbmtjb252ZXJzaW9uaGVscCddID0gJ2lza2xqdcSNaSBUaW55TUNFJiMwMzk7b3Z1IHVncmHEkWVudSBsb2dpa3UgbGluayBrb252ZXJ6aWplLiBPbW9ndcSHdWplIHtzbWFydHl9LWtvcmkmc2Nhcm9uO3RlbmplIHUgdXJsLWp1Lic7CiRsYW5nWydyZWxhdGl2ZXVybHN0ZXh0J10gPSAnR2VuZXJpcmFqIHJlbGF0aXZuZSB1cmwtb3ZlJzsKJGxhbmdbJ2ZvcmNlY2xlYW5wYXN0ZXRleHQnXSA9ICdQcmludWRpIGNsZWFuIG9uIHBhc3RlJzsKJGxhbmdbJ2ZvcmNlY2xlYW5wYXN0ZWhlbHAnXSA9ICdPdm8gYmkgdHJlYmFsbyBkYSBidWRlIG9tb2d1xIdlbm8gZGEgdWtsb25pdGUgxI11ZG5vIG9ibGlrb3ZhbmplIGtvZG92YSBrYWRhIGtvcGlyYXRlIGl6IHByb2dyYW1hIFdvcmQsIGl0ZCc7CiRsYW5nWydib2R5Y3NzX3RleHQnXSA9ICdDU1MgemEgQm9keSB0YWcnOwokbGFuZ1snYm9keWNzc19oZWxwJ10gPSAnxIZlIGJpdGkgZG9kYXQgdSBjc3MgYm9keSBkZWZpbmljaWp1LiBTYXZldDogYmFja2dyb3VuZC1jb2xvciBzZSBtb8W+ZSBwb2Rlc2l0aSBkYSBrb3Jpc3RpIGJlbGkgJnF1b3Q7YmFja2dyb3VuZC1jb2xvcjogd2hpdGUmcXVvdDsnOwokbGFuZ1snaW5jbHVkZW9ubHlzY3JlZW5jc3NfdGV4dCddID0gJ1VrbGp1xI1pIHNhbW8gc2NyZWVuIENTUyc7CiRsYW5nWydpbmNsdWRlb25seXNjcmVlbmNzc19oZWxwJ10gPSAnSXpib3JvbSBvdm9nIGRvenZvbGphdmEgc2FtbyBwcmlsb2cgc3RpbG92YSBzYSBzY3JlZW4tbWVkaWF0eXBlIGRhIGJ1ZHUgdWtsanXEjWVuaSB1IHN0aWxvdmltYSBUaW55TUNFIGRyJnNjYXJvbjtrZS4nOwokbGFuZ1sndXNlc3RhdGljY29uZmlndGV4dCddID0gJ0tvcnNpdGkgY29uZmlnIGZhamwnOwokbGFuZ1sndXNlc3RhdGljY29uZmlnaGVscCddID0gJ092byBtb8W+ZSBkYSBwb21vZ25lIGRhIHJhZGkgdGlueU1DRSBuYSBzaXN0ZW1pbWEgZ2RlIGhvc3RlciBkb2RhamUgc3R2YXJpIGthbyBzdGF0aXN0aWtlIGl0ZC4gbmEgc3ZpbSBpemxhemltYSwgcmFza2lkYW5qZW0gZGluYW1pxI1raSBzdHZvcmVuaWggSmF2YVNjcmlwdCBrb25maWd1cmFjaW9uaWggZmFqbG92YSc7CiRsYW5nWyd1c2VzdGF0aWNjb25maWd3YXJuaW5nJ10gPSAnVXBvem9yZW5qZSEgSW1hdGUgYWt0aXZudSBvcGNpanUgc3RhdGnEjWtvZyBjb25maWctZmFqbGEgYWxpIHZhJnNjYXJvbjsgL3RtcC9kaXIgbmlqZSB3cml0YWJsZS4gVG8gxIdlIHNwcmXEjWl0aSBtb2R1bCB1IHNhxI11dmFuanUgc3RhdGnEjWtvZyBjb25maWctZmFqbGEgaSBuYWp2ZXJvdmF0bmlqZSDEh2UgVGlueU1DRSBiaXRpIG5ldXBvdHJlYmxqaXYuJzsKJGxhbmdbJ2lnbm9yZW1vZGlmeWZpbGVzdGV4dCddID0gJ0lnbm9yaSZzY2Fyb247aSAmIzAzOTtJem1lbmkgZmFqbCYjMDM5OyBkb3p2b2x1IHphIEZpbGVQaWNrZXInOwokbGFuZ1snaWdub3JlbW9kaWZ5ZmlsZXNoZWxwJ10gPSAnVXBvem9yZW5qZSEgT3ZvIG9tb2d1xIdhdmEgbmVrZSBmYWpsLWl6bWVuZSBvcGVyYWNpamUgxI1hayBpIGFrbyAmcXVvdDtJem1lbmkgZmFqbCZxdW90OyBkb3p2b2xhIG5pamUgcG9kZSZzY2Fyb247ZW5hIHphIHRyZW51dG51IGtvcmlzbmnEjWt1IGdydXB1LiBPdm8gc2UgbW/FvmUgZWZpa2Fzbm8ga29yaXN0aXRpIHphamVkbm8gc2Egb3BjaWpvbSB6YSBvZ3JhbmnEjWF2YW5qZSBwcmlzdHVwYSBkaXJla3RvcmlqYSBrb3Jpc25pa2EuJzsKJGxhbmdbJ3Nob3d0b2dnbGVidXR0b25fdGV4dCddID0gJ1ByaWthxb5pIGNoZWNrYm94IHphIHd5c2l3eWcgb24vb2ZmJzsKJGxhbmdbJ3RvZ2dsZXd5c2l3eWcnXSA9ICdVa2xqdcSNaS9Jc2tsanXEjWkgV1lTSVdZRyc7CiRsYW5nWydzdHlsZXNfdGFiJ10gPSAnQ1NTIFN0aWxvdmknOwokbGFuZ1snc3R5bGVzX2hlbHAnXSA9ICcgVWtvbGlrbyBvdm8gcG9samUgb3N0YXZpdGUgcHJhem5vLCBUaW55TUNFIMSHZSBwYXJzaXJhdGkgVmEmc2Nhcm9uOyBDU1MgZmFqbCBpIGl6bGlzdGHEh2Uga2xhc2Ugc3RpbG92YSBrb2ppIHN1IHVuZXRpIHphIGtvcmlzbmlrYS4KIFVrb2xpa28gxb5lbGl0ZSBkYSBvZHJlxJFlbmkgc3RpbG92aSBidWR1IHZpZGxqaXZpIHNhbW8ga29yaXNuaWt1LCBuYXZlZGl0ZSBpaCB1IGZvcm1pICZxdW90O0N1c3RvbU5hbWUxPXN0eWxlMTsgQ3VzdG9tTmFtZTI9c3R5bGUyJnF1b3Q7LCAKICAmcXVvdDtzdHlsZTEmcXVvdDsgYmVpbmcgYSBjbGFzcyBjYWxsIGluIHlvdXIgc3R5bGVzaGVldCBhbmQgeW91IGRvbiYjMDM5O3QgcHV0IHRoZSAuIAogIG5vcm1hbGx5IHVzZWQgZm9yIGNsYXNzIGNhbGxzIGFzIGl0IGlzIGFscmVhZHkgaW4geW91ciBDU1MsIGl0IHdpbGwgbG9vayBsaWtlIHRoaXMgPHNwYW4gY2xhc3M9JnF1b3Q7c3R5bGUxJnF1b3Q7PnRleHQ8L3NwYW4+LCAKICBpbiB0aGUgZmlyc3QgZmllbGQgYmVsb3cuIAonOwokbGFuZ1snY3NzX3N0eWxlc190ZXh0J10gPSAnU3RpbG92aSc7CiRsYW5nWydhY2Nlc3NkZW5pZWQnXSA9ICdQcmlzdHVwIG5pSmUgZG96dm9samVuLiBNb2xpbW8gcHJvdmVyaXRlIGRvenZvbGUuJzsKJGxhbmdbJ2Vycm9yJ10gPSAnR3JlJnNjYXJvbjtrYSEnOwokbGFuZ1snc3VibWl0J10gPSAnUG9kbmVzaSc7CiRsYW5nWyd1cGRhdGUnXSA9ICdBxb51cmlyYWonOwokbGFuZ1snc2F2ZXNldHRpbmdzJ10gPSAnU2HEjXV2YWogcG9kZSZzY2Fyb247YXZhbmphJzsKJGxhbmdbJ3NldHRpbmdzJ10gPSAnUG9kZSZzY2Fyb247YXZhbmphJzsKJGxhbmdbJ3NldHRpbmdzc2F2ZWQnXSA9ICdQb2RlJnNjYXJvbjthdmFuamEgc3Ugc2HEjXV2YW5hJzsKJGxhbmdbJ3NhdmVhZHZhbmNlZCddID0gJ1NhxI11dmFqIG5hcHJlZG5hIHBvZGUmc2Nhcm9uO2F2YW5qYSc7CiRsYW5nWydhZHZhbmNlZHNhdmVkJ10gPSAnTmFwcmVkbmEgcG9kZSZzY2Fyb247YXZhbmphIHN1IHNhxI11dmFuYSc7CiRsYW5nWyd0b29sYmFyc2F2ZWQnXSA9ICdUb29sYmFyL0FsYXRrZSBqZSBzYcSNdXZhbic7CiRsYW5nWydzdHlsZXNzYXZlZCddID0gJ1N0aWwgamUgc2HEjXV2YW4nOwokbGFuZ1sndGVzdGFyZWF0ZXh0J10gPSAnPHA+VGVzdCBwb2RydcSNamUsIHNhZHLFvmFqIG5lxIdlIGJpdGkgbyZzY2Fyb247dGXEh2VuIGthZCBzZSBpZ3JhdGUgc2Egb3ZpbSAuLi48L3A+JzsKJGxhbmdbJ3Jlc2V0J10gPSAnVnJhdGkgcG9kcmF6dW1ldmFuZSB2cmVkbm9zdGknOwokbGFuZ1sncmVzZXRhbGwnXSA9ICdWcmF0aSBzdmUgcG9zdGF2a2UgbmEgcG9kcmF6dW1ldmFuZSB2cmVkbm9zdGknOwokbGFuZ1snY29uZmlybXJlc2V0J10gPSAnRGEgbGkgc3RlIHNpZ3VybmkgZGEgxb5lbGl0ZSBkYSBwb25pJnNjYXJvbjt0aXRlIG92ZSBwb3N0YXZrZSBuYSBwb2RyYXp1bWV2YW5lIHZyZWRub3N0aT8nOwokbGFuZ1snY29uZmlybXJlc2V0YWxsJ10gPSAnRGEgbGkgc3RlIHNpZ3VybmkgZGEgxb5lbGl0ZSBkYSB2cmF0aXRlIHN2YSBwb2RlJnNjYXJvbjthdmFuamEgbmEgcG9kcmF6dW1ldmFuZSB2cmVkbm9zdGk/JzsKJGxhbmdbJ3NldHRpbmdzcmVzZXQnXSA9ICdPdmUgcG9zdGF2a2Ugc3UgdnJhxIdhZW5lIG5hIHBvZHJhenVtZXZhbmUgdnJlZG5vc3RpJzsKJGxhbmdbJ2FsbHNldHRpbmdzcmVzZXQnXSA9ICdTdmEgcG9kZSZzY2Fyb247YXZhbmphIHN1IHZyYcSHZW5hIG5hIHBvZHJhenVtZXZhbmUgdnJlZG5vc3RpJzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnamUgdW5hcHJlxJFlbiBuYSB2ZXJ6aWp1ICVzJzsKJGxhbmdbJ2N1c3RvbWRyb3Bkb3duJ10gPSAnUHJpbGFnb8SRZW4gZHJvcGRvd24tbWVuaSc7CiRsYW5nWydjbXNtc2xpbmtlciddID0gJ1VuZXNpIGxpbmsgdSBjbXNtcy1zdHJhbmljdSc7CiRsYW5nWydiYWNrZW5kX3Rvb2xiYXJzJ10gPSAnQmFja2VuZCBwb2RlJnNjYXJvbjthdmFuamUgcHJvZmlsYSc7CiRsYW5nWydmcm9udGVuZF90b29sYmFycyddID0gJ0Zyb250ZW5kIHBvZGUmc2Nhcm9uO2F2YW5qZSBwcm9maWxhJzsKJGxhbmdbJ3BsdWdpbnNfdGFiJ10gPSAnUGx1Z2luaSc7CiRsYW5nWydwbHVnaW5zX2hlbHAnXSA9ICdJemFiZXJpdGUgcGx1Z2luZSBrb2plIMW+ZWxpdGUgYWt0aXZpcmF0aS4gRG9rdW1lbnRhY2lqdSBtb8W+ZXRlIG5hxIdpIDxhIGhyZWY9IiVzIiB0YXJnZXQ9Il9ibGFuayI+b3ZkZTwvYT4nOwokbGFuZ1sncGx1Z2luc190ZXh0J10gPSAnUGx1Z2luaSc7CiRsYW5nWydzYXZlcGx1Z2lucyddID0gJ1NhxI11dmFqIHBsdWdpbmUnOwokbGFuZ1sncGx1Z2luc3NhdmVkJ10gPSAnUGx1Z2luaSBzYcSNdXZhbmknOwokbGFuZ1sncGx1Z2luc19tb2R1bGUnXSA9ICdNb2R1bCBwbHVnaW5pJzsKJGxhbmdbJ3BsdWdpbnNfY29tbW9uJ10gPSAnT2JpxI1uaSBwbHVnaW5pJzsKJGxhbmdbJ21vZHVsZSddID0gJ01vZHVsJzsKJGxhbmdbJ2Rlc2NyaXB0aW9uJ10gPSAnT3Bpcyc7CiRsYW5nWydwbHVnaW4nXSA9ICdEb2RhdGFrL3BsdWdpbic7CiRsYW5nWyd5b3VhcmVpbnRleHQnXSA9ICdWaSBzdGUgdSc7CiRsYW5nWydsb2Fkc3R5bGVzaGVldHRleHQnXSA9ICdVxI1pdGFqIHN0aWwgc2FkcsW+YWphIChwcmVwb3J1xI11amUgc2UpJzsKJGxhbmdbJ2V4dHJhc3R5bGVzdGV4dCddID0gJ0RvZGFjaSBzdGlsb3ZhJzsKJGxhbmdbJ2V4dHJhc3R5bGVzaGVscCddID0gJ0NTUyB1cGlzYW4gb3ZkZSDEh2UgYml0aSBkb2RhdCBzdGlsdSB6YSDEjWl0YW5qZSBUaW55TUNFLWEgcG9zbGUgdcSNaXRhdm5qYSBDTVNtcyBzdGlsb3ZhJzsKJGxhbmdbJ3VwbG9hZG5ld2ZpbGUnXSA9ICdOb3ZpIGZhamwnOwokbGFuZ1sndXBsb2FkZmlsZSddID0gJ090cHJlbWknOwokbGFuZ1snY3JlYXRlbmV3ZGlyJ10gPSAnTm92aSBkaXJla3RvcmlqJzsKJGxhbmdbJ2NyZWF0ZWRpciddID0gJ1N0dm9yaSc7CiRsYW5nWydub2Rpcm5hbWUnXSA9ICdJbWUgZGlyZWt0b3JpamEgbmlqZSB1cGlzYW5vJzsKJGxhbmdbJ2RpcmV4aXN0cyddID0gJ0ltZSBkaXJla3RvcmlqYSBwb3N0b2ppJzsKJGxhbmdbJ25ld2RpcmNyZWF0ZWQnXSA9ICdOb3ZpIGRpcmVrdG9yaWogamUgdXNwZSZzY2Fyb247bm8ga3JlaXJhbic7CiRsYW5nWyduZXdkaXJmYWlsZWQnXSA9ICdEbyZzY2Fyb247bG8gamUgZG8gZ3JlJnNjYXJvbjtrZXUgIHBva3Umc2Nhcm9uO2F2anUgc3R2YXJhbmphIGRpcmVrdG9yaWphJzsKJGxhbmdbJ25vZmlsZSddID0gJ0ZhamwgbmlqZSBvdHByZW1samVuJzsKJGxhbmdbJ2ZpbGV0b29iaWcnXSA9ICdPdHByZW1samVuIGZhamwgamUgcHJldmVsaWsnOwokbGFuZ1snY29udGFpbnNpbGxlZ2FsY2hhcnMnXSA9ICdGYWpsIGltZSBzYWRyxb5pIGplZGFuIGlsaSB2aSZzY2Fyb247ZW5lZG96dm9samVuaWggem5ha292YSAoJiMwMzk7LCZxdW90OywrLCosXCwvLCZhbXA7LCQpJzsKJGxhbmdbJ3VwbG9hZGZhaWxlZCddID0gJ0dyZSZzY2Fyb247a2EgcHJpIHByZW1lJnNjYXJvbjt0YW5qdSBvdHByZW1samVub2cgZmFqbGEgbmEgc3ZvamUgbWVzdG8nOwokbGFuZ1snZmlsZXVwbG9hZGVkJ10gPSAnRmFqbCBqZSB1c3BlJnNjYXJvbjtubyBvdHByZW1samVuJzsKJGxhbmdbJ25vdGFuaW1hZ2UnXSA9ICdGYWpsIGtvanUgxb5lbGl0ZSB1bmV0aSBuaWplIHNsaWthJzsKJGxhbmdbJ2ZpbGVwaWNrZXJ0aXRsZSddID0gJ0NNU01hZGVTaW1wbGUgZmFqbCBpemJvcic7CiRsYW5nWydzdWNjZXNzJ10gPSAnVXNwZWgnOwokbGFuZ1snZmlsZW9wZXJhdGlvbnMnXSA9ICdPcGVyYWNpamUgZmFqbG92YSc7CiRsYW5nWyd0aG91c2FuZGRlbGltaXRlciddID0gJy4nOwokbGFuZ1snc2l6ZSddID0gJ1ZlbGnEjWluYSc7CiRsYW5nWydkaW1lbnNpb25zJ10gPSAnJlNjYXJvbjt4Vic7CiRsYW5nWydhZHZhbmNlZF90YWInXSA9ICdOYXByZWRubyc7CiRsYW5nWydoZWxwJ10gPSAnCTxoMz4mU2Nhcm9uO3RhIG92YWogbW9kdWwgcmFkaT88L2gzPgoJPHA+T21vZ3XEh2F2YSBUaW55TUNFIGRhIHNlIGtvcmlzdGkga2FvIFdZU0lXWUcgdXJlZG5pay48L3A+Cgk8aDM+S2FrbyBkYSBnYSBrb3Jpc3RpbT88L2gzPgoJPHA+SW5zdGFsaXJhanRlIGdhLCBhIHphdGltIGlkaXRlIG5hIFBvZGUmc2Nhcm9uO2F2YW5qZSBrb3Jpc25pa2EgaSBwb3N0YXZpdGUgVGlueU1DRSBXWVNJV0lHIGRhIGJ1ZGUgdmEmc2Nhcm9uOyBpemJvci48L3A+CiAgPGgzPlNwZWxsY2hlY2tlcjwvaDM+CiAgPHA+T2QgdmVyemlqZSAyLjYuMCwgVGlueU1DRSB1a2xqdcSNdWplIG9ubGluZSBwcm92ZXJ1IHByYXZvcGlzYS4gTW9saW1vIHZhcyBkYSB6bmF0ZSBkYSBtb3JhIGJpdGkgdWtsanXEjWVuIFNTTCBuYSB2YSZzY2Fyb247b2ogc2VydmVyIGtvbmZpZ3VyYWNpamkgZGEgYmkgdGFqIG1vZ2FvIGRhIHJhZGkuIE5hIG5la2ltIHNlcnZlcmltYSBvdmEgb3BjaWphIHNlIHpvdmUgcGhwX29wZW5zc2wsIGFsaSBtb2d1IGkgZGEgc2UgcmF6bGlrdWp1PC9wPgoJPGgzPlJlJnNjYXJvbjthdmFuamUgcHJvYmxlbWE8L2gzPgoJTmVraSBsanVkaSBpbWFqdSBwcm9ibGVtIHNhIHRpbnkgZGEgc2UgbmUgcHJpa2HFvmUgbmFrb24gaW5zdGFsYWNpamUgaWxpIG5hZG9ncmFkbmplLiBPdmRlIGplIHNwaXNhayBzdHZhcmkga29qZSBtb8W+ZXRlIGRhIGlzcHJvYmF0ZSBwcmUgbmVnbyAmc2Nhcm9uO3RvIG1pIHNlIG9icmF0aXRlIHphIGRhbGp1IHBvZHImc2Nhcm9uO2t1LgoJPGJyLz4KCTx1bD4KCTxsaT4xLiBNb2xpbSwgbW9saW0gdmFzLCBwb2t1JnNjYXJvbjthanRlIHBvbm92byB1xI1pdGF0aSBtb2R1bGVzL1RpbnlNQ0UgZGlyZWt0b3JpaiBuYSBzZXJ2ZXJ1LiBCaWxpIGJpIHphcHJlcGEmc2Nhcm9uO3Rlbmkga29saWtvIHB1dGEgamUgb3ZvIHBvbW9nbG8gbmVraW0gbGp1ZGltYS48L2xpPgkKCTxsaT4yLiBBa28gc3RlIGdhIG5hZG9ncmFkaWxpLCBwb2t1JnNjYXJvbjthanRlIGRhIHZyYXRpdGUgc3ZhIHBvZGUmc2Nhcm9uO2F2YW5qYS4gTmlqZSBsZXBvIGFrbyBzdGUgdXJhZGlsaSBkb3N0YSBwcmlsYWdvxJFhdmFuamEsIHpuYW0sIGFsaSBwdW5vIHN0dmFyaSBzZSBqZSBwcm9tZW5pbG8gb2QgMi4zLnggZG8gMi40Lnggc2VyaWplIG1vZHVsYS4KCTxsaT4zLiBQb2t1JnNjYXJvbjthanRlIGRhIG9tb2d1xIdpdGUgc3RhdGnEjWtpIGNvbmZpZyBvcGNpanUgdSBuYXByZWRuaW5tIHBvZGUmc2Nhcm9uO2F2YW5qaW1hLiBPdm8gcmFkaSBib2xqZSBuYSBuZWtpbSBzaXN0ZW1pbWEgKGthbyBDR0kgYmF6aXJhbmltKSBJbWFqdGUgbmEgdW11IGRhIHRvIHphaHRldmEgdmEmc2Nhcm9uOyAvdG1wLyBkaXJla3RvcmlqIGRhIGplIHdyaXRhYmxlIG5hIHdlYnNlcnZlcnU8L2xpPgoJPC91bD4KCTxici8+CiAgPGgzPlBsdWdpbiByYXp2aWphbmplPC9oMz4KIE9kIHZlcnppamUgMi43LjAgVGlueU1DRSBtb2R1bCBpbWEgbW9ndcSHbm9zdCBkYSBkb3p2b2xpIGRydWdpbSBtb2R1bGltYSBkYSBzZSByZWdpc3RydWplIGVrc3RlbnppamEgemEgdG9nLiBOYXByaW1lciBwcmlsYWdvxJFlbnUgaWtvbnUga29qYSB2YW0gb21vZ3XEh2F2YSBkYSB1bWV0bmV0ZSBzYWRyxb5haiBpeiBuZWtpaCBtb2R1bGEsIGthbyAmc2Nhcm9uO3RvIEplIEdhbGxlcnksIGl0ZCBrYWtvIHNlIHRvIHJhZGkgamUgcHJpbGnEjW5vIHRlaG5vbG9nJnNjYXJvbjtrYSBzdHZhcmEsIGFsaSBha28gc3RlIG1vZHVsIHByb2dyYW1lciBpIHphaW50ZXJlc292YW5pIG1vbGltbyBkYSBwb2dsZWRhdGUgdSBUaW55TUNFIC9kb2NzIGRpcmVrdG9yaWogemEgZGFsamEgdXB1dHN0dmEuCgkJCic7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjQwNzEwNDk3NS4xMjkwNDM1MjE5LjEyOTA0MzUyMTkuMTI5MDQzNTIxOS4xJzsKJGxhbmdbJ3V0bWInXSA9ICcxNTY4NjEzNTMuMi4xMC4xMjkwNDM1MjE5JzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwokbGFuZ1sndXRteiddID0gJzE1Njg2MTM1My4xMjkwNDM1MjE5LjEuMS51dG1jc3I9ZGV2LmNtc21hZGVzaW1wbGUub3JnfHV0bWNjbj0ocmVmZXJyYWwpfHV0bWNtZD1yZWZlcnJhbHx1dG1jY3Q9L3Byb2plY3RzL3RpbnltY2UnOwokbGFuZ1sncWNhJ10gPSAnUDAtMTcxMjE5NDY3LTEyOTA0MzUyMTkyNzQnOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/sv_SE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1RpbnlNQ0UgV1lTSVdZRyBCYXNpYyc7CiRsYW5nWydhZG1pbmRlc2NyaXB0aW9uJ10gPSAnRGVubmEgbW9kdWwgbSZvdW1sO2psaWdnJm91bWw7ciBmciZhdW1sO21zdCBpbm5laCZhcmluZztsbGV0LCBtZW4gZXZlbnR1ZWxsdCAmYXVtbDt2ZW4gYW5kcmEgdHlwZXIgYXYgZGF0YSwgc29tIHNrYSByZWRpZ2VyYXMgbWVkIGVuIFdZU0lXWUcgZWRpdG9yJzsKJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAnTW9kdWxlbiBhdmluc3RhbGxlcmFkLic7CiRsYW5nWydpbnN0YWxsZWQnXSA9ICdNb2R1bHZlcnNpb24gJXMgaW5zdGFsbGVyYWQuJzsKJGxhbmdbJ3N0cmlwYmFja2dyb3VuZHRhZ3MnXSA9ICdUYSBib3J0IGJha2dydW5kc3RhZ2dhciBmciZhcmluZztuIENTUyc7CiRsYW5nWydzdGlwdGFnc19oZWxwJ10gPSAnRGV0IGgmYXVtbDtyIGFsdGVybmF0aXZldCBmJm91bWw7cnMmb3VtbDtrZXIgdGEgYm9ydCBiYWtncnVuZHN0eXAtaW5zdCZhdW1sO2xsbmluZ2FyIGZyJmFyaW5nO24gc3RpbG1hbGxlbic7CiRsYW5nWydzb3VyY2VfZm9ybWF0dGluZ190ZXh0J10gPSAnRm9ybWF0ZXJhIEhUTUwta29kZW4nOwokbGFuZ1snZHJvcGRvd25ibG9ja2Zvcm1hdHNfdGV4dCddID0gJ0Jsb2NrZm9ybWF0IGkgcnVsbGdhcmRpbnNtZW55JzsKJGxhbmdbJ2FsbG93dGFibGVzJ10gPSAnVGlsbCZhcmluZzt0IHRhYmVsbGZ1bmt0aW9uZXInOwokbGFuZ1snbmV3bGluZXN0eWxlX3RleHQnXSA9ICdTdGlsIGYmb3VtbDtyIG55IHJhZCc7CiRsYW5nWydwc3R5bGUnXSA9ICdwLXN0aWwnOwokbGFuZ1snYnJzdHlsZSddID0gJ2JyLXN0aWwnOwokbGFuZ1sndXNlY29tcHJlc3Npb250ZXh0J10gPSAnQW52JmF1bWw7bmQgZ3ota29tcHJpbWVyaW5nJzsKJGxhbmdbJ3VzZWNvbXByZXNzaW9uaGVscCddID0gJ0RldHRhIGthbiBzbmFiYmEgdXBwIGxhZGRuaW5nZW4gYXYgVGlueU1DRSwgbWVuIGRldCBrYW4gb2NrcyZhcmluZzsgZiZvdW1sO3JoaW5kcmEgYXR0IGRlbiBsYWRkYXMgcCZhcmluZzsgdmlzc2Egc3lzdGVtLiBBbnYmYXVtbDtuZCBtZWQgZiZvdW1sO3JzaWt0aWdoZXQuJzsKJGxhbmdbJ2ZvcmNlZHJvb3RibG9ja3RleHQnXSA9ICdUdmluZ2EgPHA+IHJvb3RibG9jayc7CiRsYW5nWydmb3JjZWRyb290YmxvY2toZWxwJ10gPSAnRm9yY2VzIHRoZSByZXR1cm5lZCBjb250ZW50IHRvIGF0IGxlYXN0IGJlIGVuY2xvc2VkIGluIGEgJmFtcDtsdDtwJmFtcDtndDstdGFnZyc7CiRsYW5nWydmaWxlcGlja2Vyc3R5bGUnXSA9ICdTdGlsIGYmb3VtbDtyIGZpbGJsJmF1bWw7ZGRyYXJlJzsKJGxhbmdbJ2ZpbGVwaWNrZXJzaXplJ10gPSAnU3RvcmxlayBwJmFyaW5nOyBmaWxibCZhdW1sO2RkcmFyZSc7CiRsYW5nWydhbGxvd3VwbG9hZHRleHQnXSA9ICdUaWxsJmFyaW5nO3QgdXBwbGFkZG5pbmcgb2NoIHNrYXBhbmRlIGF2IG1hcHBhciBpIEZpbGJsJmF1bWw7ZGRyYXJlbic7CiRsYW5nWydhbGxvd3NjYWxpbmd0ZXh0J10gPSAnQWxsb3cgb24tdGhlLWZseSByZXNpemluZyBvZiB1cGxvYWRlZCBmaWxlcyc7CiRsYW5nWydzY2FsaW5nZGltZW5zaW9uc3RleHQnXSA9ICdTdGFuZGFyZCBkaW1lbnNpb25lcic7CiRsYW5nWydyZXNpemV0byddID0gJyZBdW1sO25kcmEgc3RvcmxlayB0aWxsOic7CiRsYW5nWydtYWtldGh1bWJuYWlsJ10gPSAnU2thcGEgZW4gdHVtbmFnZWxiaWxkIHZpZCB1cHBsYWRkbmluZyBhdiBiaWxkZXInOwokbGFuZ1sndXNlYWR2YW5jZWRwcm9maWxlJ10gPSAnQW52JmF1bWw7bmQgYXZhbmNlcmFkIFRpbnlNQ0UtcHJvZmlsJzsKJGxhbmdbJ3NhdmVwcm9maWxlJ10gPSAnU3BhcmEgcHJvZmlsJzsKJGxhbmdbJ3Byb2ZpbGVzYXZlZCddID0gJ1Byb2ZpbGVuIHNwYXJhZGVzJzsKJGxhbmdbJ3Byb2ZpbGVzX3RhYiddID0gJ1Byb2ZpbGVyJzsKJGxhbmdbJ2FkdmFuY2VkX2JhY2tlbmRfdG9vbGJhcnMnXSA9ICdBdmFuY2VyYWRlIHByb2ZpbGluc3QmYXVtbDtsbG5pbmdhcic7CiRsYW5nWydzYXZlc3R5bGVzJ10gPSAnU3BhcmEgc3RpbGFyJzsKJGxhbmdbJ2FsbG93YWR2YW5jZWRwcm9maWxlJ10gPSAnVGlsbCZhcmluZzt0IGFudiZhdW1sO25kbmluZyBhdiBhdmFuY2VyYWRlIHByb2ZpbGVyIGkgVGlueU1DRSc7CiRsYW5nWydzaG93ZmlsZW1hbmFnZW1lbnQnXSA9ICdWaXNhIGluc3QmYXVtbDtsbG5pbmdhciBmJm91bWw7ciBmaWxoYW50ZXJpbmcnOwokbGFuZ1snc2hvd2ZpbGVtYW5hZ2VtZW50aGVscCddID0gJ1Zpc2EgZmlsaGFudGVyaW5nIGkgdGlsbHZhbGVuIGYmb3VtbDtyIHVwcGxhZGRuaW5nLCBza2FwYSBtYXBwIG9jaCBib3J0dGFnbmluZyBhdiBmaWwgaSBGaWx2JmF1bWw7bGphcmVuLCBvbSBhbnYmYXVtbDtuZGFyZW4gaGFyIHImYXVtbDt0dCBhdHQgZyZvdW1sO3JhIGRldHRhLic7CiRsYW5nWydyZXN0cmljdGRpcnMnXSA9ICdSZXN0cmljdCB1c2VyJiMwMzk7cyBkaXIgYWNjZXNzJzsKJGxhbmdbJ3Jlc3RyaWN0ZGlyc2hlbHAnXSA9ICdUaGlzIHdpbGwgcmVzdHJpY3QgdGhlIGZpbGVtYW5hZ2VtZW50LWNhcGFiaWxpdGllcyBvZiB0aGUgdXNlciB0byBhIHN1YmRpciB0byAmIzAzOTt1cGxvYWRzJiMwMzk7IHdoaWNoIGhhdmUgdGhlIHNhbWUgbmFtZSBhcyB0aGUgdXNlciYjMDM5O3MgbG9naW4uIElmIHRoZSBzdWJkaXIgZG9lcyBub3QgZXhpc3QsIGl0IHdpbGwgcG9zc2libHkgYmUgY3JlYXRlZC4gUGxlYXNlIG5vdGUsIHRoaXMgY3VycmVudGx5IG9ubHkgd29ya3Mgd2l0aCB0aGUgc3RhbmRhcmQgZGlybmFtZXMsIHVwbG9hZHMvaW1hZ2VzLiBUaGlzIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4nOwokbGFuZ1snZGVsZXRlY29uZmlybWF0aW9uJ10gPSAnJkF1bWw7ciBkdSBzJmF1bWw7a2VyIHAmYXJpbmc7IGF0dCBkZW4gaCZhdW1sO3IgZmlsZW4gc2thIHJhZGVyYXM/JzsKJGxhbmdbJ2RlbGV0ZWZpbGVzdWNjZXNzJ10gPSAnQmxldiBmcmFtZyZhcmluZztuZ3NyaWt0IHJhZGVyYWQnOwokbGFuZ1snZGVsZXRlZmlsZWZhaWxlZCddID0gJ2t1bmRlIGludGUgcmFkZXJhcyc7CiRsYW5nWydkZWxldGVzdWJkaXJmYWlsZWQnXSA9ICdrdW5kZSBpbnRlIHJhZGVyYXMnOwokbGFuZ1snZGVsZXRlc3ViZGlyc3VjY2VzcyddID0gJ3JhZGVyYWRlcyc7CiRsYW5nWydkZWxldGVkaXJjb25maXJtYXRpb24nXSA9ICcmQXVtbDtyIGR1IHMmYXVtbDtrZXIgcCZhcmluZzsgYXR0IGR1IHZpbGwgcmFkZXJhIGRlbm5hIHRvbW1hIHN1YmRpcj8nOwokbGFuZ1snZGVsZXRlZGlyJ10gPSAnUmFkZXJhIHRvbSBzdWJkaXInOwokbGFuZ1snZGVsZXRlZmlsZSddID0gJ1JhZGVyYSBmaWwnOwokbGFuZ1snY2Fubm90cmVhZGNvbmZpZyddID0gJ0thbiBpbnRlIGwmYXVtbDtzYSBmaWxlbiB0aW55Y29uZmlnLnBocCBkaXJla3QsIHMmYXJpbmc7IFRpbnlNQ0Uga29tbWVyIGFudGFnbGlnZW4gaW50ZSBhdHQgZnVuZ2VyYS4gRHUgYiZvdW1sO3Iga29udHJvbGxlcmEgciZhdW1sO3R0aWdoZXRlcm5hIGYmb3VtbDtyIGRlbiBmaWxlbiBvY2ggZGVzcyAmb3VtbDt2ZXJsaWdnYW5kZSBtYXBwYXIsIHNvbSBhbGxhIGImb3VtbDtyIHZhcmEgbCZhdW1sO3NiYXJhIGYmb3VtbDtyIGFsbGEgbWVuIGJhcmEgc2tyaXZiYXIgZiZvdW1sO3IgJmF1bWw7Z2FyZW4uJzsKJGxhbmdbJ2ZpbGVuYW1lb25seSddID0gJ1Zpc2EgZmlsbmFtbic7CiRsYW5nWyd0aHVtYm5haWxzb25seSddID0gJ1Zpc2EgdHVtbmFnZWxiaWxkZXInOwokbGFuZ1snc2hvd3RodW1ibmFpbGZpbGVzdGV4dCddID0gJ1Zpc2EgdHVtbmFnZWxiaWxkZXIgaSBsaXN0b3InOwokbGFuZ1snZmlsZW5hbWVhbmR0aHVtYm5haWxzJ10gPSAnVmlzYSBiJmFyaW5nO2RlIGZpbG5hbW4gb2NoIHR1bW5hZ2VsYmlsZGVyJzsKJGxhbmdbJ3NraW5zdGV4dCddID0gJ1NrYWwnOwokbGFuZ1snc2tpbnZhcmlhdGlvbnRleHQnXSA9ICdTa2FsLXZhcmlhbnQnOwokbGFuZ1snYWR2YW5jZWR3YXJuaW5nJ10gPSAnPHN0cm9uZz5PQlMhPGJyLz5PbSBkdSAmYXVtbDtuZHJhciBkZSBoJmF1bWw7ciBpbnN0JmF1bWw7bGxuaW5nYXJuYSBrYW4gZGV0IGcmb3VtbDtyYSBhdHQgVGlueU1DRSBpbnRlIGwmYXVtbDtuZ3JlIGZ1bmdlcmFyIGVsbGVyIGF0dCBkZW4ga29kIHNvbSBnZW5lcmVyYXMga2FuIGJsaSBmZWxha3RpZy4gJkF1bWw7bmRyYSBiYXJhIGRldHRhIG9tIGR1IHZldCB2YWQgZHUgZyZvdW1sO3IhIEtvbGxhIFRpbnlNQ0Utd2ViYnNpZGFuIGlubmFuIGR1IGcmb3VtbDtyIG4mYXJpbmc7Z3JhICZhdW1sO25kcmluZ2FyIGgmYXVtbDtyLjwvc3Ryb25nPic7CiRsYW5nWydlbnRpdHllbmNvZGluZ190ZXh0J10gPSAnS29kbmluZyBhdiBlbnRpdGV0ZXInOwokbGFuZ1sncmF3ZW5jb2RpbmcnXSA9ICdSJmFyaW5nO2tvZG5pbmcgKHNuYWJiYXN0LCBmdW5nZXJhciBpIGRlIGZsZXN0YSBmYWxsKSc7CiRsYW5nWyduYW1lZGVuY29kaW5nJ10gPSAnTmFtbmtvZG5pbmcgKHQuZXguICZuYnNwOyknOwokbGFuZ1snbnVtZXJpY2VuY29kaW5nJ10gPSAnTnVtZXJpc2sga29kbmluZyAodC5leC4mYW1wOyMxNjA7KSc7CiRsYW5nWydzaG93X3BhdGhfdGV4dCddID0gJ1Zpc2EgcyZvdW1sO2t2JmF1bWw7Z2VuIHRpbGwgZWxlbWVudGV0IHVuZGVyIGVkaXRvcm4uJzsKJGxhbmdbJ3Rvb2xiYXJfdGFiJ10gPSAnVmVya3R5Z3NmJmF1bWw7bHQnOwokbGFuZ1sndG9vbGJhcl9oZWxwJ10gPSAnRGUgaCZhdW1sO3IgaW5zdCZhdW1sO2xsbmluZ2FybmEgc2thIHZhcmEgZW4ga29tbWFzZXBhcmVyYWQgbGlzdGEgbWVkIG5hbW4gcCZhcmluZzsga25hcHBhci9rb250cm9sbGVyIHNvbSBza2EgdmFyYSBtZWQgaSB2ZXJrdHlnc2YmYXVtbDtsdGV0Lic7CiRsYW5nWyd0b29sYmFyX3RleHQnXSA9ICdWZXJrdHlnc2YmYXVtbDtsdCc7CiRsYW5nWyd0b29sYmFyaGVscHRleHQnXSA9ICdLbGlja2EgaCZhdW1sO3IgZiZvdW1sO3IgYXR0IHNlIHZlcmt0eWdzZiZhdW1sO2x0c2luc3RydWt0aW9uZXIgaSBUaW55TUNFLXdpa2luJzsKJGxhbmdbJ2VkaXRvcl93aWR0aF90ZXh0J10gPSAnQnJlZGQgcCZhcmluZzsgcmVkaWdlcmluZ3NmJmF1bWw7bHRldCc7CiRsYW5nWydlZGl0b3JfaGVpZ2h0X3RleHQnXSA9ICdIJm91bWw7amQgZiZvdW1sO3IgcmVkaWdlcmluZ3NmJmF1bWw7bHRldCc7CiRsYW5nWydhdXRvJ10gPSAnQXV0b21hdGlza3QnOwokbGFuZ1snb3InXSA9ICdlbGxlcic7CiRsYW5nWyd0ZXN0YXJlYV90YWInXSA9ICdUZXN0b21yJmFyaW5nO2RlJzsKJGxhbmdbJ3Nob3d0ZXN0aW5nb3V0cHV0J10gPSAnVmlzYSB0ZXN0b21yJmFyaW5nO2RldHMgcmVzdWx0YXQnOwokbGFuZ1sndGVzdGFyZWFlZGl0b3InXSA9ICdXWVNJV1lHIHJlZGlnZXJhcmUgZiZvdW1sO3IgdGVzdG9tciZhcmluZztkZSc7CiRsYW5nWyd0ZXN0YXJlYW91dHB1dCddID0gJ1Rlc3RvciZhcmluZztkZXRzIHJlc3VsdGF0JzsKJGxhbmdbJ3Rlc3RhcmVhb3V0cHV0c291cmNlJ10gPSAnVGVzdG9tciZhcmluZztkZXRzIGsmYXVtbDtsbGEnOwokbGFuZ1snYWxsb3dyZXNpemluZyddID0gJ1RpbGwmYXJpbmc7dCAmcXVvdDtpbnBsYWNlJnF1b3Q7IHN0b3JsZWtzJmF1bWw7bmRyaW5nIGF2IHJlZGlnZXJpbmdzZiZhdW1sO2x0ZXQnOwokbGFuZ1sncmVzaXplbm9uZSddID0gJ1RpbGwmYXJpbmc7dCBpbnRlICZhdW1sO25kcmluZyBhdiBzdG9ybGVrJzsKJGxhbmdbJ3Jlc2l6ZWJvdGgnXSA9ICdUaWxsJmFyaW5nO3QgJmF1bWw7bmRyaW5nIGF2IHN0b3JsZWsgaSBiJmFyaW5nO2RhIHJpa3RuaW5nYXJuYSc7CiRsYW5nWydyZXNpemVoZWlnaHQnXSA9ICdUaWxsJmFyaW5nO3QgJmF1bWw7bmRyaW5nIGF2IHN0b3JsZWsgYmFyYSBwJmFyaW5nOyBoJm91bWw7amRlbic7CiRsYW5nWydkYXRldGltZWZvcm1hdF90ZXh0J10gPSAnRm9ybWF0IGYmb3VtbDtyIGRhdHVtL3RpZCc7CiRsYW5nWyd0aW1ldGV4dCddID0gJ1RpZCc7CiRsYW5nWydkYXRldGV4dCddID0gJ0RhdHVtJzsKJGxhbmdbJ2RhdGV0aW1lZm9ybWF0X2hlbHAnXSA9ICdLbGlja2EgaCZhdW1sO3IgZiZvdW1sO3IgaGomYXVtbDtscCBvbSBodXIgZHUgZm9ybWF0dGVyYXIgZGF0dW0vdGlkJzsKJGxhbmdbJ2V4dHJhY29uZmlndGV4dCddID0gJ0V4dHJhaW5zdCZhdW1sO2xsbmluZ2FyJzsKJGxhbmdbJ2V4dHJhY29uZmlnaGVscDInXSA9ICdFbiB1cHBnaWZ0IHBlciByYWQsIGtvbW1hdGVja2VuIGtvbW1lciBhdHQgbCZhdW1sO2dnYXMgdGlsbCBmJm91bWw7cmUgb2NoIGVmdGVyIGRldHRhIGlubmVoJmFyaW5nO2xsLiBTZSBUaW55TUNFLXdpa2kgZiZvdW1sO3IgaW5zdHJ1a3Rpb25lci4nOwokbGFuZ1snY3VzdG9tZHJvcGRvd250ZXh0J10gPSAnQW5wYXNzYWQgZHJvcGRvd24nOwokbGFuZ1snY3VzdG9tZHJvcGRvd25oZWxwJ10gPSAnSW5zZXJ0cyBjdXN0b21pemFibGUgc25pcHBldHMgb2YgY29kZS90ZXh0IGJ5IHNlbGVjdGlvbiBpbiBhIGRyb3Bkb3duIG1lbnUuIApPYnZpb3VzIHVzZXMgYXJlIGVhc3kgYWNjZXNzIHRvIHRhZyYjMDM5O3MgZXRjLiBUaGUgbWVudSBpcyBpbnNlcnRlZCBpbnRvIHRvb2xiYXIgdXNpbmcgJiMwMzk7Y3VzdG9tZHJvcGRvd24mIzAzOTsuJzsKJGxhbmdbJ3N0YXJ0ZW5hYmxlZHRleHQnXSA9ICdTdGFydHVwIGFrdGl2ZXJhdCc7CiRsYW5nWydzdGFydGVuYWJsZWRoZWxwJ10gPSAnT20gZGVubmEgaW50ZSAmYXVtbDtyIGlrcnlzc2FkIGtvbW1lciBUaW55TUNFLXJlZGlnZXJhcmUgYXR0IHN0YXJ0YSBpIGluYWt0aXZ0IGwmYXVtbDtnZS4gQiZvdW1sO3IgYW52JmF1bWw7bmRhcyB0aWxsc2FtbWFucyBtZWQgdG9nZ2xlLWtuYXBwZW4gKGF2L3AmYXJpbmc7KS4nOwokbGFuZ1snbG9hZGNtc2xpbmtlcnRleHQnXSA9ICdMYWRkYSBDTVMtbCZhdW1sO25rYXJlbic7CiRsYW5nWydsb2FkY21zbGlua2VyaGVscCddID0gJ0RldHRhIGdlbmVyZXJhciBkZW4gamF2YXNjcmlwdC1rb2Qgc29tIGJlaCZvdW1sO3ZzIGYmb3VtbDtyIGF0dCB0aWxsJmFyaW5nO3RhICYjMDM5O2Ntc2xpbmtlciYjMDM5OyBhdHQgbCZhdW1sO2dnYXMgdGlsbCBpIGV0dCB2ZXJrdHlnc2YmYXVtbDtsdC4nOwokbGFuZ1snY21zbGlua2Vyc3R5bGV0ZXh0J10gPSAnTCZhdW1sO25rc3RpbCBmJm91bWw7ciBDTVMtbCZhdW1sO25rYXJlbic7CiRsYW5nWydjbXNzZWxmbGlua3N0eWxlJ10gPSAnU3RpbCBmJm91bWw7ciB7Y21zX3NlbGZsaW5rfSc7CiRsYW5nWydhaHJlZnN0eWxlJ10gPSAnU3RpbCBmJm91bWw7ciA8YSBocmVmPic7CiRsYW5nWydjbXNsaW5rZXJhZGRzdGV4dCddID0gJ0NNUy1sJmF1bWw7bmthciAodGlsbCZhdW1sO2dnKSc7CiRsYW5nWydjbXNsaW5rZXJhZGRzaGVscCddID0gJ0RldHRhIGcmb3VtbDtyIGF0dCBkdSBrYW4gbCZhdW1sO2dnYSB0aWxsIHNha2VyIHRpbGwgYW50aW5nZW4gPGEgaHJlZj4tdGFnZ2VuIGVsbGVyIHtjbXNfc2VsZmxpbmt9LCBvbSBkZSBnZW5lcmVyYXMgYXYgQ01TLWwmYXVtbDtua2FyZW4uJzsKJGxhbmdbJ2F2b2lkbGlua2NvbnZlcnNpb250ZXh0J10gPSAnVW5kdmlrIGwmYXVtbDtuayBrb252ZXJ0ZXJpbmcnOwokbGFuZ1snYXZvaWRsaW5rY29udmVyc2lvbmhlbHAnXSA9ICdTJmF1bWw7dHRlciBUaW55TUNFOiBzIGluYnlnZ2RhIGwmYXVtbDtuayBrb252ZXJ0ZXJpbmcgdGlsbCBhdi4gRGV0dGEgZyZvdW1sO3IgYXR0IGR1IGthbiBhbnYmYXVtbDtuZGEge3NtYXJ0eX0gaSBsJmF1bWw7bmthci4nOwokbGFuZ1sncmVsYXRpdmV1cmxzdGV4dCddID0gJ0dlbmVyZXJhIHJlbGF0aXZhIHMmb3VtbDtrdiZhdW1sO2dhcic7CiRsYW5nWydmb3JjZWNsZWFucGFzdGV0ZXh0J10gPSAnVHZpbmdhIHJlbnNuaW5nIHZpZCBrbGlzdHJhIGluJzsKJGxhbmdbJ2ZvcmNlY2xlYW5wYXN0ZWhlbHAnXSA9ICdEZXR0YSBiJm91bWw7ciBha3RpdmVyYXMgZiZvdW1sO3IgYXR0IHRhIGJvcnQga29uc3RpZyBmb3JtYXR0ZXJpbmdza29kIG4mYXVtbDtyIG1hbiBrbGlzdHJhciBpbiBmciZhcmluZztuIHQuZXguIFdvcmQnOwokbGFuZ1snYm9keWNzc190ZXh0J10gPSAnQ1NTIGYmb3VtbDtyIGJvZHktdGFnZ2VuJzsKJGxhbmdbJ2JvZHljc3NfaGVscCddID0gJ2wmYXVtbDttbmEgdG9tdCBlbGxlciBza3JpdiBERUZBVUxUIGYmb3VtbDtyIGF0dCBhbnYmYXVtbDtuZGEgc2lkYW5zIENTUyc7CiRsYW5nWydpbmNsdWRlb25seXNjcmVlbmNzc190ZXh0J10gPSAnSW5rbHVkZXJhIGVuYmFydCBzayZhdW1sO3JtLUNTUyc7CiRsYW5nWydpbmNsdWRlb25seXNjcmVlbmNzc19oZWxwJ10gPSAnT20gZGV0dGEgdiZhdW1sO2xqcyB0aWxsJmFyaW5nO3RzIGVuYmFydCBkZSBrb3BwbGFkZSBzdGlsbWFsbGFyIHNvbSBoYXIgc2NyZWVuLW1lZGlhdHlwZW4gdmFsZCBhdHQgaW5rbHVkZXJhcyBpIGRlIHN0aWxhciBzb20gVGlueU1DRSBoYW50ZXJhci4nOwokbGFuZ1sndXNlc3RhdGljY29uZmlndGV4dCddID0gJ0FudiZhdW1sO25kIHN0YXRpc2sga29uZmlndXJhdGlvbnNmaWwnOwokbGFuZ1sndXNlc3RhdGljY29uZmlnaGVscCddID0gJ0RldHRhIGthbiB2YXJhIGJyYSBmJm91bWw7ciBhdHQgVGlueSBza2EgZnVuZ2VyYSBwJmFyaW5nOyBzeXN0ZW0gZCZhdW1sO3Igd2ViYnNlcnZlcm4gbCZhdW1sO2dnZXIgdGlsbCBzJmFyaW5nO250IHNvbSBzdGF0aXN0aWsgbW0gdGlsbCBhbGwgb3V0cHV0LCB2aWxrZXQgYnJ5dGVyIGRlbiBkeW5hbWlza3Qgc2thcGFkZSBqYXZhc2NyaXB0c2tvbmZpZ3VyYXRpb25zZmlsZW4nOwokbGFuZ1sndXNlc3RhdGljY29uZmlnd2FybmluZyddID0gJ1Zhcm5pbmchIER1IGhhciBha3RpdmVyYXQgc3RhdGlzayBrb25maWd1cmF0aW9uc2ZpbCwgbWVuIGRpbiAvdG1wLy1tYXBwICZhdW1sO3IgaW50ZSBza3JpdmJhci4gRGV0dCBoaW5kcmFyIG1vZHVsZW4gZnImYXJpbmc7biBhdHQgc3BhcmEgZGVuIHN0YXRpc2thIGtvbmZpZ3VyYXRpb25zZmlsZW4gb2NoIGtvbW1lciB0cm9saWdlbiBnJm91bWw7cmEgVGlueU1DRSBvYnJ1a2Jhci4nOwokbGFuZ1snaWdub3JlbW9kaWZ5ZmlsZXN0ZXh0J10gPSAnSWdub3JlcmEgJiMwMzk7TW9kaWZ5IEZpbGVzJiMwMzk7IHImYXVtbDt0dGlnaGV0ZW4gZiZvdW1sO3IgRmlsZVBpY2tlcic7CiRsYW5nWydpZ25vcmVtb2RpZnlmaWxlc2hlbHAnXSA9ICdXYXJuaW5nISBUaGlzIGFsbG93cyBzb21lIGZpbGUtYWx0ZXJpbmcgb3BlcmF0aW9ucyBldmVuIGlmIHRoZSAmIzAzOTtNb2RpZnkgRmlsZXMmIzAzOTsgcGVybWlzc2lvbiBpcyBub3Qgc2V0IGZvciB0aGUgY3VycmVudCB1c2VyZ3JvdXAuIFRoaXMgY2FuIGVmZmVjdGl2ZWx5IGJlIHVzZWQgdG9nZXRoZXIgd2l0aCB0aGUgb3B0aW9uIHRvIHJlc3RyaWN0IHVzZXImIzAzOTtzIGRpcmVjdG9yeSBhY2Nlc3MuJzsKJGxhbmdbJ3Nob3d0b2dnbGVidXR0b25fdGV4dCddID0gJ1Zpc2Ega25hcHAgZiZvdW1sO3IgYXR0IHMmYXVtbDt0dGEgcCZhcmluZzsvc3QmYXVtbDtuZ2EgYXYgV1lTSVdZRyc7CiRsYW5nWyd0b2dnbGV3eXNpd3lnJ10gPSAnUyZhdW1sO3R0IHAmYXJpbmc7L3N0JmF1bWw7bmcgYXYgV1lTSVdZRyc7CiRsYW5nWydzdHlsZXNfdGFiJ10gPSAnQ1NTLXN0aWxhcic7CiRsYW5nWydzdHlsZXNfaGVscCddID0gJ09tIGR1IGwmYXVtbDttbmFyIGRldCBmJm91bWw7cnN0YSBmJmF1bWw7bHRldCB0b210IGtvbW1lciBUaW55TUNFIGF0dCBhbmFseXNlcmEgZGluIENTUy1maWwgb2NoIGxpc3RhIGFsbGEgc3RpbGFyIHNvbSBmaW5ucyBpIGRlbiBmJm91bWw7ciBhbnYmYXVtbDtuZGFyZW4uIE9tIGR1IGJhcmEgdmlsbCBhdHQgbiZhcmluZztncmEgc3RpbGFyIHNrYSB2aXNhcyBmJm91bWw7ciBhbnYmYXVtbDtuZGFyZW4sIGFuZ2UgZGVtIGkgZm9ybWVuICZxdW90O1N0aWwgMT1zdGlsMTsgU3RpbCAyPXN0aWwyJnF1b3Q7IGkgZGV0IGYmb3VtbDtyc3RhIGYmYXVtbDtsdGV0IG5lZGFuLjxiciAvPiBJIGRlICZvdW1sO3ZyaWdhIGYmYXVtbDtsdGVuIGthbiBkdSBhbmdlIENTUy1zdGlsYXIgZiZvdW1sO3IgdGFiZWxsZXIsIHJhZGVyIG9jaCBjZWxsZXIgc29tIGFudiZhdW1sO25kcyBpIG1vdHN2YXJhbmRlIGRpYWxvZ2Ymb3VtbDtuc3Rlci4gT20gZXR0IGYmYXVtbDtsdCAmYXVtbDtyIHRvbXQga29tbWVyIHN0aWxhcm5hIGZyJmFyaW5nO24gZGUgYWxsbSZhdW1sO25uYSBzdGlsYXJuYSBhdHQgYW52JmF1bWw7bmRhcy4nOwokbGFuZ1snY3NzX3N0eWxlc190ZXh0J10gPSAnQWxsbSZhdW1sO25uYSc7CiRsYW5nWydhY2Nlc3NkZW5pZWQnXSA9ICcmQXJpbmc7dGtvbXN0IG5la2FkLiBWYXIgZ29kIGtvbnRyb2xsZXJhIGRpbmEgciZhdW1sO3R0aWdoZXRlci4nOwokbGFuZ1snZXJyb3InXSA9ICdGZWwhJzsKJGxhbmdbJ3N1Ym1pdCddID0gJ1YmYXVtbDtsaic7CiRsYW5nWyd1cGRhdGUnXSA9ICdVcHBkYXRlcmEnOwokbGFuZ1snc2F2ZXNldHRpbmdzJ10gPSAnU3BhcmEgaW5zdCZhdW1sO2xsbmluZ2FyJzsKJGxhbmdbJ3NldHRpbmdzJ10gPSAnSW5zdCZhdW1sO2xsbmluZ2FyJzsKJGxhbmdbJ3NldHRpbmdzc2F2ZWQnXSA9ICdJbnN0JmF1bWw7bGxuaW5nYXIgc3BhcmFkZSc7CiRsYW5nWydzYXZlYWR2YW5jZWQnXSA9ICdTcGFyYSBhbnZhbmNlcmFkZSBpbnN0JmF1bWw7bGxuaW5nYXInOwokbGFuZ1snYWR2YW5jZWRzYXZlZCddID0gJ0F2YW5jZXJhZGUgaW5zdCZhdW1sO2xsbmluZ2FyIHNwYXJhZGUnOwokbGFuZ1sndG9vbGJhcnNhdmVkJ10gPSAnVmVya3R5Z3NmJmF1bWw7bHRldCBzcGFyYWRlcyc7CiRsYW5nWydzdHlsZXNzYXZlZCddID0gJ1N0aWxhciBzcGFyYWRlJzsKJGxhbmdbJ3Rlc3RhcmVhdGV4dCddID0gJzxwPlRlc3RvbXImYXJpbmc7ZGUsIGluZ2V0IGlubmVoJmFyaW5nO2xsIGtvbW1lciBhdHQgcCZhcmluZzt2ZXJrYXMgb20gZHUgbGVrZXIgbWVkIGRldCBoJmF1bWw7ci4uLjwvcD4nOwokbGFuZ1sncmVzZXQnXSA9ICcmQXJpbmc7dGVyc3QmYXVtbDtsbCBzdGFuZGFyZGluc3QmYXVtbDtsbG5pbmdhcic7CiRsYW5nWydyZXNldGFsbCddID0gJyZBcmluZzt0ZXJzdCZhdW1sO2xsIGFsbGEgaW5zdCZhdW1sO2xsbmluZ2FyIHRpbGwgc3RhbmRhcmQnOwokbGFuZ1snY29uZmlybXJlc2V0J10gPSAnJkF1bWw7ciBkdSBzJmF1bWw7a2VyIHAmYXJpbmc7IGF0dCBkdSB2aWxsICZhcmluZzt0ZXJzdCZhdW1sO2xsYSBkZSBoJmF1bWw7ciBpbnN0JmF1bWw7bGxuaW5nYXJuYSB0aWxsIHN0YW5kYXJkaW5zdCZhdW1sO2xsbmluZ2FyPyc7CiRsYW5nWydjb25maXJtcmVzZXRhbGwnXSA9ICcmQXVtbDtyIGR1IHMmYXVtbDtrZXIgcCZhcmluZzsgYXR0IGR1IHZpbGwgJmFyaW5nO3RlcnN0JmF1bWw7bGxhIEFMTEEgaW5zdCZhdW1sO2xsbmluZ2FyIHRpbGwgc3RhbmRhcmRpbnN0JmF1bWw7bGxuaW5nYXI/JzsKJGxhbmdbJ3NldHRpbmdzcmVzZXQnXSA9ICdEZSBoJmF1bWw7ciBpbnN0JmF1bWw7bGxuaW5nYXJuYSAmYXJpbmc7dGVyc3QmYXVtbDtsbGRlcyB0aWxsIHN0YW5kYXJkaW5zdCZhdW1sO2xsbmluZ2FybmEnOwokbGFuZ1snYWxsc2V0dGluZ3NyZXNldCddID0gJ0FsbGEgaW5zdCZhdW1sO2xsbmluZ2FyICZhcmluZzt0ZXJzdCZhdW1sO2xsZGVzIHRpbGwgc3RhbmRhcmRpbnN0JmF1bWw7bGxuaW5nYXInOwokbGFuZ1sndXBncmFkZWQnXSA9ICdoYXIgdXBwZ3JhZGVyYXRzIHRpbGwgdmVyc2lvbiAlcyc7CiRsYW5nWydjdXN0b21kcm9wZG93biddID0gJ0FucGFzc2FkIHJ1bGxnYXJkaW5zbWVueSc7CiRsYW5nWydjbXNtc2xpbmtlciddID0gJ0luZm9nYSBsJmF1bWw7bmsgdGlsbCBDTVNNUy1zaWRhJzsKJGxhbmdbJ2JhY2tlbmRfdG9vbGJhcnMnXSA9ICdJbnN0JmF1bWw7bGxuaW5nYXIgZiZvdW1sO3IgYmFja2VuZC12ZXJrdHlnc2YmYXVtbDtsdCc7CiRsYW5nWydmcm9udGVuZF90b29sYmFycyddID0gJ0luc3QmYXVtbDtsbG5pbmdhciBmJm91bWw7ciBmcm9udGVuZC12ZXJrdHlnc2YmYXVtbDtsdCc7CiRsYW5nWydwbHVnaW5zX3RhYiddID0gJ1RpbGwmYXVtbDtnZyc7CiRsYW5nWydwbHVnaW5zX2hlbHAnXSA9ICdWJmF1bWw7bGogdmlsa2EgdGlsbCZhdW1sO2dnIHNvbSBkdSB2aWxsIGFrdGl2ZXJhLiBEb2t1bWVudGF0aW9uIGZpbm5zIDxhIGhyZWY9IiVzIiB0YXJnZXQ9Il9ibGFuayI+aCZhdW1sO3I8L2E+JzsKJGxhbmdbJ3BsdWdpbnNfdGV4dCddID0gJ1RpbGwmYXVtbDtnZyc7CiRsYW5nWydzYXZlcGx1Z2lucyddID0gJ1NwYXJhIHRpbGwmYXVtbDtnZyc7CiRsYW5nWydwbHVnaW5zc2F2ZWQnXSA9ICdQbHVnaW4gc3BhcmFkJzsKJGxhbmdbJ3BsdWdpbnNfbW9kdWxlJ10gPSAnTW9kdWwgUGx1Z2lucyc7CiRsYW5nWydwbHVnaW5zX2NvbW1vbiddID0gJ1ZhbmxpZ2EgaW5zdGlja3Nwcm9ncmFtJzsKJGxhbmdbJ21vZHVsZSddID0gJ01vZHVsJzsKJGxhbmdbJ2Rlc2NyaXB0aW9uJ10gPSAnQmVza3Jpdm5pbmcnOwokbGFuZ1sncGx1Z2luJ10gPSAnSW5zdGlja3Nwcm9ncmFtJzsKJGxhbmdbJ3lvdWFyZWludGV4dCddID0gJ0R1ICZhdW1sO3IgcCZhcmluZzsnOwokbGFuZ1snbG9hZHN0eWxlc2hlZXR0ZXh0J10gPSAnTGFkZGEgc3RpbG1hbGwgZiZvdW1sO3IgaW5uZWgmYXJpbmc7bGwgKHJla29tbWVuZGVyYXQpJzsKJGxhbmdbJ2V4dHJhc3R5bGVzdGV4dCddID0gJ1RpbGwmYXVtbDtnZyB0aWxsIHN0aWxtYWxsYXInOwokbGFuZ1snZXh0cmFzdHlsZXNoZWxwJ10gPSAnQ1NTIHNvbSBsJmF1bWw7Z2dzIHRpbGwgaCZhdW1sO3Iga29tbWVyIGF0dCBsJmF1bWw7Z2dhcyB0aWxsIHN0aWxtYWxsZW4gc29tIGwmYXVtbDtzZWVzIGF2IFRpbnlNQ0UgZWZ0ZXIgYXR0IGRlbiBoYXIgbCZhdW1sO3N0IENNU01TLXN0aWxhcm5hJzsKJGxhbmdbJ3VwbG9hZG5ld2ZpbGUnXSA9ICdOeSBmaWwnOwokbGFuZ1sndXBsb2FkZmlsZSddID0gJ0xhZGRhIHVwcCc7CiRsYW5nWydjcmVhdGVuZXdkaXInXSA9ICdOeSBtYXBwJzsKJGxhbmdbJ2NyZWF0ZWRpciddID0gJ1NrYXBhJzsKJGxhbmdbJ25vZGlybmFtZSddID0gJ0luZ2V0IG1hcHBuYW1uIGFuZ2l2ZXQnOwokbGFuZ1snZGlyZXhpc3RzJ10gPSAnTWFwcG5hbW5ldCBmaW5ucyByZWRhbic7CiRsYW5nWyduZXdkaXJjcmVhdGVkJ10gPSAnTnkgbWFwcCBza2FwYWQnOwokbGFuZ1snbmV3ZGlyZmFpbGVkJ10gPSAnRXR0IGZlbCBpbnRyJmF1bWw7ZmZhZGUgbiZhdW1sO3IgbWFwcGVuIHNrdWxsZSBza2FwYXMnOwokbGFuZ1snbm9maWxlJ10gPSAnSW5nZW4gZmlsIGxhZGRhZGVzIHVwcCc7CiRsYW5nWydmaWxldG9vYmlnJ10gPSAnRGVuIHVwcGxhZGRhZGUgZmlsZW4gJmF1bWw7ciBmJm91bWw7ciBzdG9yJzsKJGxhbmdbJ2NvbnRhaW5zaWxsZWdhbGNoYXJzJ10gPSAnRmlsbmFtbiBpbm5laCZhcmluZztsbGVyIGV0dCBlbGxlciBmbGVyYSBvdGlsbCZhcmluZzt0bmEgdGVja2VuICgmIzAzOTssJnF1b3Q7LCssKixcLC8sJmFtcDssJCknOwokbGFuZ1sndXBsb2FkZmFpbGVkJ10gPSAnRmVsIHZpZCBmbHl0dCBhdiBkZW4gdXBwbGFkZGFkZSBmaWxlbic7CiRsYW5nWydmaWxldXBsb2FkZWQnXSA9ICdGaWxlbiB1cHBsYWRkYWQnOwokbGFuZ1snbm90YW5pbWFnZSddID0gJ0RlbiB1cHBsYWRkYWRlIGZpbGVuICZhdW1sO3IgaW50ZSBlbiBiaWxkJzsKJGxhbmdbJ2ZpbGVwaWNrZXJ0aXRsZSddID0gJ0ZpbHZhbCBmJm91bWw7ciBDTVMgTWFkZSBTaW1wbGUnOwokbGFuZ1snc3VjY2VzcyddID0gJ0x5Y2thdCc7CiRsYW5nWydmaWxlb3BlcmF0aW9ucyddID0gJ0ZpbG9wZXJhdGlvbmVyJzsKJGxhbmdbJ3Rob3VzYW5kZGVsaW1pdGVyJ10gPSAnLCAnOwokbGFuZ1snc2l6ZSddID0gJ1N0b3JsZWsnOwokbGFuZ1snZGltZW5zaW9ucyddID0gJ0J4SCc7CiRsYW5nWydhZHZhbmNlZF90YWInXSA9ICdBdmFuY2VyYXQnOwokbGFuZ1snaGVscCddID0gJzxoMz5XaGF0IGRvZXMgdGhpcyBkbz88L2gzPgoJPHA+RW5hYmxlcyBhIFRpbnlNQ0UgdG8gYmUgdXNlZCBhcyBhIFdZU0lXWUcuPC9wPgoJPGgzPkhvdyBkbyBJIHVzZSBpdD88L2gzPgoJPHA+SW5zdGFsbCBpdCwgdGhlbiBnbyB0byBVc2VyIFByZWZlcmVuY2VzIGFuZCBTZXQgVGlueU1DRSB0byBiZSB5b3VyIHd5c2l3eWcgb2YgY2hvaWNlLjwvcD4KCTxoMz5Ucm91Ymxlc2hvb3Rpbmc8L2gzPgoJU29tZSBwZW9wbGUgaGF2ZSB0cm91YmxlIHdpdGggdGlueSBub3Qgc2hvd2luZyB1cCB1cG9uIGluc3RhbGxhdGlvbiBvciB1cGdyYWRpbmcuIEhlcmUgaXMgYSBjaGVja2xpc3Qgb2YgCgl0aGluZ3MgeW91IGNhbiB0cnkgYmVmb3JlIGNvbnRhY3RpbmcgbWUgZm9yIGZ1cnRoZXIgc3VwcG9ydC4KCTxici8+Cgk8dWw+Cgk8bGk+MS4gUGxlYXNlLCBwbGVhc2UsIHRyeSB0byByZXVwbG9hZCB0aGUgbW9kdWxlcy9UaW55TUNFIGRpciB0byB5b3VyIHNlcnZlci4gWW91JiMwMzk7ZCBiZSBhbWF6ZWQgaG93IG1hbnkgdGltZXMgdGhpcyBoYXMgaGVscGVkIHBlb3BsZS48L2xpPgoJPGxpPjIuIFRyeSB0byBzd2l0Y2ggb24gdGhlIFN0YXRpYyBDb25maWcgb3B0aW9uLiBOb3RlIHRoYXQgdGhpcyByZXF1aXJlcyB5b3VyIC90bXAvLWRpciB0byBiZSB3cml0YWJsZSBieSB0aGUgd2Vic2VydmVyPC9saT4KCTxsaT4zLiBJZiB1cGdyYWRpbmcsIHBsZWFzZSB0cnkgdG8gcmVzZXQgYWxsIHNldHRpbmdzLiBOb3QgbmljZSBpZiB5b3UmIzAzOTt2ZSBkb25lIGEgbG90IG9mIGN1c3RvbWl6YXRpb24sIEkga25vdywgYnV0IGEgbG90IG9mIHRoaW5ncyBjaGFuZ2VzIGZyb20gMi4zLnggdG8gMi40Lnggc2VyaWVzIG9mIHRoZSBtb2R1bGUuCgk8bGk+NC4gVHJ5IGVuYWJsaW5nIHRoZSBzdGF0aWMgY29uZmlnIG9wdGlvbiBpbiBhZHZhbmNlZCBzZXR0aW5ncy4gVGhpcyB3b3JrcyBiZXR0ZXIgb24gc29tZSBzeXN0ZW1zIChsaWtlIENHSS1iYXNlZCkKCTwvdWw+Cgk8YnIvPic7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjE3MDkwMzQwNDAuMTI5OTA3NjY4NC4xMjk5MDc2Njg0LjEyOTkwNzY2ODQuMSc7CiRsYW5nWyd1dG1iJ10gPSAnMTU2ODYxMzUzLjEuMTAuMTI5OTA3NjY4NCc7CiRsYW5nWyd1dG1jJ10gPSAnMTU2ODYxMzUzJzsKJGxhbmdbJ3V0bXonXSA9ICcxNTY4NjEzNTMuMTI5OTA3NjY4NC4xLjEudXRtY3NyPShkaXJlY3QpfHV0bWNjbj0oZGlyZWN0KXx1dG1jbWQ9KG5vbmUpJzsKJGxhbmdbJ3FjYSddID0gJ1AwLTM2NzA2NDM2Mi0xMjk5MDc2Njg0NDQ1JzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/tr_TR.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1RpbnlNQ0UgV1lTSVdZRyc7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZCZ1dW1sO2wga2FsZMSxcsSxbGTEsS4nOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kJnV1bWw7bCB2ZXJzaXlvbnUgJXMgeSZ1dW1sO2tsZW5kaS4nOwokbGFuZ1snc3RyaXBiYWNrZ3JvdW5kdGFncyddID0gJ1N0cmlwIEJhY2tncm91bmQgVGFncyBGcm9tIENTUyc7CiRsYW5nWydzdGlwdGFnc19oZWxwJ10gPSAnVGhpcyBvcHRpb25zIHRyaWVzIHRvIHJlbW92ZSBiYWNrZ3JvdW5kLXR5cGUgc2V0dGluZ3MgZnJvbSB0aGUgc3R5bGVzaGVldC4nOwokbGFuZ1snc291cmNlX2Zvcm1hdHRpbmdfdGV4dCddID0gJ0FwcGx5IHNvdXJjZSBmb3JtYXR0aW5nIHRvIHRoZSBvdXRwdXQgSFRNTCc7CiRsYW5nWydkcm9wZG93bmJsb2NrZm9ybWF0c190ZXh0J10gPSAnQmxvY2tmb3JtYXRzIGluIGRyb3Bkb3duLW1lbnUnOwokbGFuZ1snYWxsb3d0YWJsZXMnXSA9ICdUYWJsbyBpxZ9sZW1sZXJpbmUgaXppbiB2ZXInOwokbGFuZ1snbmV3bGluZXN0eWxlX3RleHQnXSA9ICdOZXdsaW5lLXN0eWxlJzsKJGxhbmdbJ3BzdHlsZSddID0gJzxwPi1zdHlsZSc7CiRsYW5nWydicnN0eWxlJ10gPSAnPGJyLz4tc3R5bGUnOwokbGFuZ1sndXNlY29tcHJlc3Npb250ZXh0J10gPSAnVXNlIGd6IGNvbXByZXNzaW9uJzsKJGxhbmdbJ3VzZWNvbXByZXNzaW9uaGVscCddID0gJ1RoaXMgY2FuIHNwZWVkIHVwIGxvYWRpbmcgVGlueU1DRSwgYnV0IGNhbiBhbHNvIHByZXZlbnQgaXQgZnJvbSBsb2FkaW5nIG9uIHNvbWUgc3lzdGVtcy4gVXNlIHdpdGggY2F1dGlvbi4nOwokbGFuZ1snZm9yY2Vkcm9vdGJsb2NrdGV4dCddID0gJ0ZvcmNlIDxwPiByb290YmxvY2snOwokbGFuZ1snZm9yY2Vkcm9vdGJsb2NraGVscCddID0gJ0ZvcmNlcyB0aGUgcmV0dXJuZWQgY29udGVudCB0byBhdCBsZWFzdCBiZSBlbmNsb3NlZCBpbiBhIDxwPi10YWcnOwokbGFuZ1snZmlsZXBpY2tlcnN0eWxlJ10gPSAnRmlsZXBpY2tlciBzdHlsZSc7CiRsYW5nWydmaWxlcGlja2Vyc2l6ZSddID0gJ0ZpbGVwaWNrZXIgc2l6ZSc7CiRsYW5nWydhbGxvd3VwbG9hZHRleHQnXSA9ICdBbGxvdyB1cGxvYWQgYW5kIGNyZWF0aW5nIGRpcnMgaW4gRmlsZVBpY2tlcic7CiRsYW5nWydhbGxvd3NjYWxpbmd0ZXh0J10gPSAnQWxsb3cgb24tdGhlLWZseSByZXNpemluZyBvZiB1cGxvYWRlZCBpbWFnZXMnOwokbGFuZ1snc2NhbGluZ2RpbWVuc2lvbnN0ZXh0J10gPSAnVmFyc2F5xLFsYW4gJm91bWw7bCZjY2VkaWw7JnV1bWw7bGVyJzsKJGxhbmdbJ3Jlc2l6ZXRvJ10gPSAnUmVzaXplIHRvOic7CiRsYW5nWydtYWtldGh1bWJuYWlsJ10gPSAnTWFrZSBhIHRodW1ibmFpbCB3aGVuIHVwbG9hZGluZyBpbWFnZXMnOwokbGFuZ1sndXNlYWR2YW5jZWRwcm9maWxlJ10gPSAnVXNlIGFkdmFuY2VkIFRpbnlNQ0UtcHJvZmlsZSc7CiRsYW5nWydzYXZlcHJvZmlsZSddID0gJ1Byb2ZpbCBLYXlkZXQnOwokbGFuZ1sncHJvZmlsZXNhdmVkJ10gPSAnVGhlIHByb2ZpbGUgd2FzIHNhdmVkJzsKJGxhbmdbJ3Byb2ZpbGVzX3RhYiddID0gJ1Byb2ZpbGxlcic7CiRsYW5nWydhZHZhbmNlZF9iYWNrZW5kX3Rvb2xiYXJzJ10gPSAnQWR2YW5jZWQgYmFja2VuZCBwcm9maWxlIHNldHRpbmdzJzsKJGxhbmdbJ3NhdmVzdHlsZXMnXSA9ICdTdGlsbGVyaSBrYXlkZXQnOwokbGFuZ1snYWxsb3dhZHZhbmNlZHByb2ZpbGUnXSA9ICdBbGxvdyB1c2FnZSBvZiBhZHZhbmNlZCBwcm9maWxlIGluIFRpbnlNQ0UnOwokbGFuZ1snc2hvd2ZpbGVtYW5hZ2VtZW50J10gPSAnU2hvdyBmaWxlbWFuYWdlbWVudCBvcHRpb25zJzsKJGxhbmdbJ3Nob3dmaWxlbWFuYWdlbWVudGhlbHAnXSA9ICdTaG93IGZpbGVtYW5hZ2VtZW50IGluIG9wdGlvbnMgbGlrZSB1cGxvYWQsIG1ha2UgZGlyIGFuZCBmaWxlIGRlbGV0aW9uIGluIEZpbGVQaWNrZXIsIGlmIHRoZSB1c2VyIGlzIGFsbG93ZWQgdG8gcGVyZm9ybSB0aGVzZS4nOwokbGFuZ1sncmVzdHJpY3RkaXJzJ10gPSAnUmVzdHJpY3QgdXNlciYjMDM5O3MgZGlyIGFjY2Vzcyc7CiRsYW5nWydyZXN0cmljdGRpcnNoZWxwJ10gPSAnVGhpcyB3aWxsIHJlc3RyaWN0IHRoZSBmaWxlbWFuYWdlbWVudC1jYXBhYmlsaXRpZXMgb2YgdGhlIHVzZXIgdG8gYSBzdWJkaXIgdG8gJiMwMzk7dXBsb2FkcyYjMDM5OyB3aGljaCBoYXZlIHRoZSBzYW1lIG5hbWUgYXMgdGhlIHVzZXImIzAzOTtzIGxvZ2luLiBJZiB0aGUgc3ViZGlyIGRvZXMgbm90IGV4aXN0LCBpdCB3aWxsIHBvc3NpYmx5IGJlIGNyZWF0ZWQuIFBsZWFzZSBub3RlLCB0aGlzIGN1cnJlbnRseSBvbmx5IHdvcmtzIHdpdGggdGhlIHN0YW5kYXJkIGRpcm5hbWVzLCB1cGxvYWRzL2ltYWdlcy4gVGhpcyBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuJzsKJGxhbmdbJ2RlbGV0ZWNvbmZpcm1hdGlvbiddID0gJ0FyZSB5b3Ugc3VyZSB0aGlzIGZpbGUgc2hvdWxkIGJlIGRlbGV0ZWQ/JzsKJGxhbmdbJ2RlbGV0ZWZpbGVzdWNjZXNzJ10gPSAnd2FzIHN1Y2Nlc3NmdWxseSBkZWxldGVkJzsKJGxhbmdbJ2RlbGV0ZWZpbGVmYWlsZWQnXSA9ICdjb3VsZCBub3QgYmUgZGVsZXRlZCc7CiRsYW5nWydkZWxldGVzdWJkaXJmYWlsZWQnXSA9ICdjb3VsZCBub3QgYmUgZGVsZXRlZCc7CiRsYW5nWydkZWxldGVzdWJkaXJzdWNjZXNzJ10gPSAnd2FzIHN1Y2Nlc3NmdWxseSBkZWxldGVkJzsKJGxhbmdbJ2RlbGV0ZWRpcmNvbmZpcm1hdGlvbiddID0gJ0FyZSB5b3Ugc3VyZSB0aGlzIGVtcHR5IHN1YmRpciBzaG91bGQgYmUgZGVsZXRlZD8nOwokbGFuZ1snZGVsZXRlZGlyJ10gPSAnRGVsZXRlIGVtcHR5IHN1YmRpcic7CiRsYW5nWydkZWxldGVmaWxlJ10gPSAnRGVsZXRlIEZpbGUnOwokbGFuZ1snY2Fubm90cmVhZGNvbmZpZyddID0gJ0Nhbm5vdCByZWFkIHRoZSBmaWxlIHRpbnljb25maWcucGhwIGRpcmVjdGx5IHNvIFRpbnlNQ0Ugd2lsbCBwcm9iYWJseSBub3Qgd29yay4gWW91IHNob3VsZCBjaGVjayB0aGUgcGVybWlzc2lvbnMgb2YgdGhlIGZpbGUgYW5kIG9mIHRoZSBwYXJlbnQgZGlycywgd2hpY2ggc2hvdWxkIGJlIHJlYWRhYmxlIGZvciBhbGwgYnV0IG9ubHkgd3JpdGFibGUgZm9yIG93bmVyLic7CiRsYW5nWydmaWxlbmFtZW9ubHknXSA9ICdTaG93IGZpbGVuYW1lcyc7CiRsYW5nWyd0aHVtYm5haWxzb25seSddID0gJ1Nob3cgdGh1bWJuYWlscyc7CiRsYW5nWydzaG93dGh1bWJuYWlsZmlsZXN0ZXh0J10gPSAnU2hvdyB0aHVtYm5haWwtZmlsZXMgYXMgcmVndWxhciBmaWxlcyc7CiRsYW5nWydmaWxlbmFtZWFuZHRodW1ibmFpbHMnXSA9ICdTaG93IGJvdGggZmlsZW5hbWVzIGFuZCB0aHVtYm5haWxzJzsKJGxhbmdbJ3NraW5zdGV4dCddID0gJ1NraW4nOwokbGFuZ1snc2tpbnZhcmlhdGlvbnRleHQnXSA9ICdTa2luIHZhcmlhdGlvbic7CiRsYW5nWydhZHZhbmNlZHdhcm5pbmcnXSA9ICc8c3Ryb25nPlBsZWFzZSBub3RlITxici8+Q2hhbmdpbmcgdGhlc2Ugc2V0dGluZ3MgY2FuIGNhdXNlIFRpbnlNQ0UgdG8gc3RvcCB3b3JraW5nIG9yIHRoZSBnZW5lcmF0ZWQgY29kZSB0byBiZSB3cm9uZyBpbiBzb21lIHdheS4gT25seSBlZGl0IHRoaXMgaWYgeW91IGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nISBQbGVhc2UgY29uc3VsdCB0aGUgVGlueU1DRSB3ZWJzaXRlIGJlZm9yZSBwbGF5aW5nIHdpdGggdGhpcy48L3N0cm9uZz4nOwokbGFuZ1snZW50aXR5ZW5jb2RpbmdfdGV4dCddID0gJ0VuY29kaW5nIG9mIGVudGl0aWVzJzsKJGxhbmdbJ3Jhd2VuY29kaW5nJ10gPSAnUmF3IGVuY29kaW5nIChmYXN0ZXN0LCB3b3JrcyBpbiBtb3N0IGNhc2VzKSc7CiRsYW5nWyduYW1lZGVuY29kaW5nJ10gPSAnTmFtZWQgZW5jb2RpbmcgKGxpa2UgJm5ic3A7KSc7CiRsYW5nWydudW1lcmljZW5jb2RpbmcnXSA9ICdOdW1lcmljIGVuY29kaW5nIChsaWtlICZhbXA7IzE2MDspJzsKJGxhbmdbJ3Nob3dfcGF0aF90ZXh0J10gPSAnU2hvdyB0aGUgcGF0aCBvZiB0aGUgZWxlbWVudCBhdCB0aGUgYm90dG9tIG9mIHRoZSBlZGl0b3InOwokbGFuZ1sndG9vbGJhcl90YWInXSA9ICdUb29sYmFyJzsKJGxhbmdbJ3Rvb2xiYXJfaGVscCddID0gJ1RoZXNlIG9wdGlvbnMgc2hvdWxkIGNvbnRhaW4gYSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBidXR0b24vY29udHJvbCBuYW1lcyB0byBpbnNlcnQgaW50byB0aGUgdG9vbGJhci4gVGhlIGNoYXIgfCBjYW4gYmUgdXNlZCBpbnN0ZWFkIG9mIHRoZSB3b3JkICYjMDM5O3NlcGFyYXRvciYjMDM5Oyc7CiRsYW5nWyd0b29sYmFyX3RleHQnXSA9ICdUb29sYmFyJzsKJGxhbmdbJ3Rvb2xiYXJoZWxwdGV4dCddID0gJ0NsaWNrIGhlcmUgdG8gdmlldyB0b29sYmFyLWluc3RydWN0aW9ucyBpbiBUaW55TUNFLXdpa2kuJzsKJGxhbmdbJ2VkaXRvcl93aWR0aF90ZXh0J10gPSAnV2lkdGggb2YgZWRpdG9yIGZpZWxkJzsKJGxhbmdbJ2VkaXRvcl9oZWlnaHRfdGV4dCddID0gJ0hlaWdodCBvZiBlZGl0b3IgZmllbGQnOwokbGFuZ1snYXV0byddID0gJ0F1dG8nOwokbGFuZ1snb3InXSA9ICdvcic7CiRsYW5nWydhbGxvd3Jlc2l6aW5nJ10gPSAnQWxsb3cgaW5wbGFjZSByZXNpemluZyBvZiBlZGl0b3IgZmllbGQnOwokbGFuZ1sncmVzaXplbm9uZSddID0gJ0RvIG5vdCBhbGxvdyByZXNpemluZyc7CiRsYW5nWydyZXNpemVib3RoJ10gPSAnQWxsb3cgcmVzaXppbmcgaW4gYm90aCBkaXJlY3Rpb25zJzsKJGxhbmdbJ3Jlc2l6ZWhlaWdodCddID0gJ0FsbG93IHJlc2l6aW5nIG9mIGhlaWdodCBvbmx5JzsKJGxhbmdbJ2RhdGV0aW1lZm9ybWF0X3RleHQnXSA9ICdEYXRlL1RpbWUgZm9ybWF0JzsKJGxhbmdbJ3RpbWV0ZXh0J10gPSAnVGltZSc7CiRsYW5nWydkYXRldGV4dCddID0gJ0RhdGUnOwokbGFuZ1snZGF0ZXRpbWVmb3JtYXRfaGVscCddID0gJ0NsaWNrIGhlcmUgZm9yIGhlbHAgb24gaG93IHRvIGZvcm1hdCB0aGUgZGF0ZS90aW1lJzsKJGxhbmdbJ2V4dHJhY29uZmlndGV4dCddID0gJ0V4dHJhIGNvbmZpZ3VyYXRpb24nOwokbGFuZ1snZXh0cmFjb25maWdoZWxwMiddID0gJ09uZSBzdGF0ZW1lbnQgcGVyIGxpbmUsIGNvbW1hcyB3aWxsIGJlIGFkZGVkIGJlZm9yZSBhbmQgYWZ0ZXIgdGhpcyBjb250ZW50LiBDaGVjayBUaW55TUNFLXdpa2kgZm9yIGluc3RydWN0aW9ucy4nOwokbGFuZ1snY3VzdG9tZHJvcGRvd250ZXh0J10gPSAnQ3VzdG9tIGRyb3Bkb3duJzsKJGxhbmdbJ2N1c3RvbWRyb3Bkb3duaGVscCddID0gJ0luc2VydHMgY3VzdG9taXphYmxlIHNuaXBwZXRzIG9mIGNvZGUvdGV4dCBieSBzZWxlY3Rpb24gaW4gYSBkcm9wZG93biBtZW51LiAKT2J2aW91cyB1c2VzIGFyZSBlYXN5IGFjY2VzcyB0byB0YWcmIzAzOTtzIGV0Yy4gVGhlIG1lbnUgaXMgaW5zZXJ0ZWQgaW50byB0b29sYmFyIHVzaW5nICYjMDM5O2N1c3RvbWRyb3Bkb3duJiMwMzk7Lic7CiRsYW5nWydzdGFydGVuYWJsZWR0ZXh0J10gPSAnU3RhcnR1cCBlbmFibGVkJzsKJGxhbmdbJ3N0YXJ0ZW5hYmxlZGhlbHAnXSA9ICdVbmNoZWNraW5nIHRoaXMgc3RhcnRzIHVwIFRpbnktZWRpdG9ycyBpbiBhIGRpc2FibGVkIHN0YXRlLiBTaG91bGQgYmUgdXNlZCB0b2dldGhlciB3aXRoIHRoZSB0b2dnbGUgYnV0dG9uLic7CiRsYW5nWydsb2FkY21zbGlua2VydGV4dCddID0gJ0xvYWQgdGhlIENNUy1saW5rZXInOwokbGFuZ1snbG9hZGNtc2xpbmtlcmhlbHAnXSA9ICdUaGlzIGdlbmVyYXRlcyB0aGUgamF2YXNjcmlwdC1jb2RlIG5lZWRlZCB0byBhbGxvdyAmIzAzOTtjbXNsaW5rZXImIzAzOTsgdG8gYmUgYWRkZWQgdG8gYSB0b29sYmFyLic7CiRsYW5nWydjbXNsaW5rZXJzdHlsZXRleHQnXSA9ICdDTVMtbGlua2VyIGxpbmstc3R5bGUnOwokbGFuZ1snY21zc2VsZmxpbmtzdHlsZSddID0gJ3tjbXNfc2VsZmxpbmt9LXN0eWxlJzsKJGxhbmdbJ2FocmVmc3R5bGUnXSA9ICc8YSBocmVmPi1zdHlsZSc7CiRsYW5nWydyZWxhdGl2ZXVybHN0ZXh0J10gPSAnR2VuZXJhdGUgcmVsYXRpdmUgdXJscyc7CiRsYW5nWydmb3JjZWNsZWFucGFzdGV0ZXh0J10gPSAnRm9yY2UgY2xlYW4gb24gcGFzdGUnOwokbGFuZ1snZm9yY2VjbGVhbnBhc3RlaGVscCddID0gJ1RoaXMgc2hvdWxkIGJlIGVuYWJsZWQgdG8gcmVtb3ZlIHN0cmFuZ2UgZm9ybWF0dGluZyBjb2RlcyB3aGVuIHBhc3RpbmcgZnJvbSBXb3JkIGV0Yy4nOwokbGFuZ1snYm9keWNzc190ZXh0J10gPSAnQm9keSB0YWcgQ1NTJzsKJGxhbmdbJ2JvZHljc3NfaGVscCddID0gJ1dpbGwgYmUgYWRkZWQgdG8gdGhlIGNzcyBib2R5LWRlZmluaXRpb24uIEhpbnQ6IEJhY2tncm91bmQtY29sb3IgY2FuIGJlIHNldCB0byB3aGl0ZSB1c2luZyAmcXVvdDtiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZSZxdW90Oyc7CiRsYW5nWydpbmNsdWRlb25seXNjcmVlbmNzc190ZXh0J10gPSAnSW5jbHVkZSBvbmx5IHNjcmVlbiBDU1MnOwokbGFuZ1snaW5jbHVkZW9ubHlzY3JlZW5jc3NfaGVscCddID0gJ1NlbGVjdGluZyB0aGlzIGFsbG93cyBvbmx5IGF0dGFjaGVkIHN0eWxlc2hlZXRzIHdpdGggdGhlIHNjcmVlbi1tZWRpYXR5cGUgc2VsZWN0ZWQgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHN0eWxlcyBUaW55TUNFIGhhbmRsZXMuJzsKJGxhbmdbJ3VzZXN0YXRpY2NvbmZpZ3RleHQnXSA9ICdVc2Ugc3RhdGljIGNvbmZpZyBmaWxlJzsKJGxhbmdbJ3VzZXN0YXRpY2NvbmZpZ2hlbHAnXSA9ICdUaGlzIGNhbiBoZWxwIGdldHRpbmcgdGlueSB0byB3b3JrIG9uIHN5c3RlbXMgd2hlcmUgdGhlIGhvc3RpbmcgZmFjaWxpdHkgYWRkcyBzdHVmZiBsaWtlIHN0YXRpc3RpY3MgZXRjLiB0byBhbGwgb3V0cHV0LCBicmVha2luZyBkeW5hbWljYWxseSBjcmVhdGVkIGphdmFzY3JpcHQgY29uZmlnIGZpbGUnOwokbGFuZ1sndXNlc3RhdGljY29uZmlnd2FybmluZyddID0gJ1dhcm5pbmchIFlvdSBoYXZlIHRoZSBzdGF0aWMgY29uZmlnLWZpbGUgb3B0aW9uIGVuYWJsZWQgYnV0IHlvdXIgL3RtcC8gZGlyIGlzIG5vdCB3cml0YWJsZS4gVGhpcyB3aWxsIHByZXZlbnQgdGhlIG1vZHVsZSBmcm9tIHNhdmluZyB0aGUgc3RhdGljIGNvbmZpZy1maWxlIGFuZCB3aWxsIG1vc3QgcHJvYmFibHkgcmVuZGVyIFRpbnlNQ0UgaW5vcGVyYXRpb25hbC4nOwokbGFuZ1snaWdub3JlbW9kaWZ5ZmlsZXN0ZXh0J10gPSAnSWdub3JlIHRoZSAmIzAzOTtNb2RpZnkgRmlsZXMmIzAzOTsgcGVybWlzc2lvbiBmb3IgRmlsZVBpY2tlcic7CiRsYW5nWydpZ25vcmVtb2RpZnlmaWxlc2hlbHAnXSA9ICdXYXJuaW5nISBUaGlzIGFsbG93cyBzb21lIGZpbGUtYWx0ZXJpbmcgb3BlcmF0aW9ucyBldmVuIGlmIHRoZSAmIzAzOTtNb2RpZnkgRmlsZXMmIzAzOTsgcGVybWlzc2lvbiBpcyBub3Qgc2V0IGZvciB0aGUgY3VycmVudCB1c2VyZ3JvdXAuIFRoaXMgY2FuIGVmZmVjdGl2ZWx5IGJlIHVzZWQgdG9nZXRoZXIgd2l0aCB0aGUgb3B0aW9uIHRvIHJlc3RyaWN0IHVzZXImIzAzOTtzIGRpcmVjdG9yeSBhY2Nlc3MuJzsKJGxhbmdbJ3Nob3d0b2dnbGVidXR0b25fdGV4dCddID0gJ1Nob3cgY2hlY2tib3ggdG8gdHVybiB3eXNpd3lnIG9uL29mZic7CiRsYW5nWyd0b2dnbGV3eXNpd3lnJ10gPSAnVHVybiBXWVNJV1lHIG9uL29mZic7CiRsYW5nWydzdHlsZXNfdGFiJ10gPSAnQ1NTIFN0eWxlcyc7CiRsYW5nWydzdHlsZXNfaGVscCddID0gJyAgSWYgeW91IGxlYXZlIHRoZSBmaWVsZCBlbXB0eSwgVGlueU1DRSB3aWxsIHBhcnNlIHlvdXIgQ1NTIGZpbGUgYW5kIGxpc3QgdGhlIGNsYXNzIHN0eWxlcyBjb250YWluZWQgaW4gaXQgdG8gdGhlIHVzZXIuIAogIElmIHlvdSB3YW50IG9ubHkgc29tZSBzdHlsZXMgcHJlc2VudGVkIHRvIHRoZSB1c2VyLCBzcGVjaWZ5IHRoZW0gaW4gdGhlIGZvcm0gJnF1b3Q7Q3VzdG9tTmFtZTE9c3R5bGUxOyBDdXN0b21OYW1lMj1zdHlsZTImcXVvdDssIAogICZxdW90O3N0eWxlMSZxdW90OyBiZWluZyBhIGNsYXNzIGNhbGwgaW4geW91ciBzdHlsZXNoZWV0IGFuZCB5b3UgZG9uJiMwMzk7dCBwdXQgdGhlIC4gCiAgbm9ybWFsbHkgdXNlZCBmb3IgY2xhc3MgY2FsbHMgYXMgaXQgaXMgYWxyZWFkeSBpbiB5b3VyIENTUywgaXQgd2lsbCBsb29rIGxpa2UgdGhpcyA8c3BhbiBjbGFzcz0mcXVvdDtzdHlsZTEmcXVvdDs+dGV4dDwvc3Bhbj4sIAogIGluIHRoZSBmaXJzdCBmaWVsZCBiZWxvdy4gCic7CiRsYW5nWydjc3Nfc3R5bGVzX3RleHQnXSA9ICdTdHlsZXMnOwokbGFuZ1snYWNjZXNzZGVuaWVkJ10gPSAnQWNjZXNzIERlbmllZC4gUGxlYXNlIGNoZWNrIHlvdXIgcGVybWlzc2lvbnMuJzsKJGxhbmdbJ2Vycm9yJ10gPSAnRXJyb3IhJzsKJGxhbmdbJ3N1Ym1pdCddID0gJ0cmb3VtbDtuZGVyJzsKJGxhbmdbJ3VwZGF0ZSddID0gJ0cmdXVtbDtuY2VsbGUnOwokbGFuZ1snc2F2ZXNldHRpbmdzJ10gPSAnQXlhcmxhcsSxIGtheWRldCc7CiRsYW5nWydzZXR0aW5ncyddID0gJ0F5YXJsYXInOwokbGFuZ1snc2V0dGluZ3NzYXZlZCddID0gJ1NldHRpbmdzIHdhcyBzYXZlZCc7CiRsYW5nWydzYXZlYWR2YW5jZWQnXSA9ICdTYXZlIGFkdmFuY2VkIHNldHRpbmdzJzsKJGxhbmdbJ2FkdmFuY2Vkc2F2ZWQnXSA9ICdBZHZhbmNlZCBzZXR0aW5ncyBzYXZlZCc7CiRsYW5nWyd0b29sYmFyc2F2ZWQnXSA9ICdUb29sYmFyIHdhcyBzYXZlZCc7CiRsYW5nWydzdHlsZXNzYXZlZCddID0gJ1N0eWxlcyB3YXMgc2F2ZWQnOwokbGFuZ1sndGVzdGFyZWF0ZXh0J10gPSAnPHA+VGVzdCBhcmVhLCBubyBjb250ZW50IHdpbGwgYmUgaGFybWVkIHBsYXlpbmcgd2l0aCB0aGlzLi4uPC9wPic7CiRsYW5nWydyZXNldCddID0gJ1Jlc2V0IGRlZmF1bHRzJzsKJGxhbmdbJ3Jlc2V0YWxsJ10gPSAnUmVzZXQgYWxsIHNldHRpbmdzIHRvIGRlZmF1bHRzJzsKJGxhbmdbJ2NvbmZpcm1yZXNldCddID0gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZXNldCB0aGVzZSBzZXR0aW5ncyB0byB0aGVpciBkZWZhdWx0cz8nOwokbGFuZ1snY29uZmlybXJlc2V0YWxsJ10gPSAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlc2V0IEFMTCBzZXR0aW5ncyB0byB0aGVpciBkZWZhdWx0cz8nOwokbGFuZ1snc2V0dGluZ3NyZXNldCddID0gJ1RoZXNlIHNldHRpbmdzIHdhcyByZXNldCB0byBkZWZhdWx0JzsKJGxhbmdbJ2FsbHNldHRpbmdzcmVzZXQnXSA9ICdBbGwgc2V0dGluZ3Mgd2VyZSByZXNldCB0byBkZWZhdWx0JzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnaGFzIGJlZW4gdXBncmFkZWQgdG8gdmVyc2lvbiAlcyc7CiRsYW5nWydjdXN0b21kcm9wZG93biddID0gJ0N1c3RvbSBkcm9wZG93bi1tZW51JzsKJGxhbmdbJ2Ntc21zbGlua2VyJ10gPSAnSW5zZXJ0IGxpbmsgdG8gY21zbXMtcGFnZSc7CiRsYW5nWydiYWNrZW5kX3Rvb2xiYXJzJ10gPSAnQmFja2VuZCBwcm9maWxlIHNldHRpbmdzJzsKJGxhbmdbJ2Zyb250ZW5kX3Rvb2xiYXJzJ10gPSAnRnJvbnRlbmQgcHJvZmlsZSBzZXR0aW5ncyc7CiRsYW5nWydwbHVnaW5zX3RhYiddID0gJ1BsdWdpbnMnOwokbGFuZ1sncGx1Z2luc19oZWxwJ10gPSAnQ2hvb3NlIHRoZSBwbHVnaW5zIHlvdSB3YW50IHRvIGFjdGl2YXRlLiBEb2N1bWVudGF0aW9uIGNhbiBiZSBmb3VuZCA8YSBocmVmPSIlcyIgdGFyZ2V0PSJfYmxhbmsiPmhlcmU8L2E+JzsKJGxhbmdbJ3BsdWdpbnNfdGV4dCddID0gJ1BsdWdpbnMnOwokbGFuZ1snc2F2ZXBsdWdpbnMnXSA9ICdTYXZlIHBsdWdpbnMnOwokbGFuZ1sncGx1Z2luc19tb2R1bGUnXSA9ICdNb2R1bGUgUGx1Z2lucyc7CiRsYW5nWydwbHVnaW5zX2NvbW1vbiddID0gJ0NvbW1vbiBQbHVnaW5zJzsKJGxhbmdbJ21vZHVsZSddID0gJ01vZHVsZSc7CiRsYW5nWydkZXNjcmlwdGlvbiddID0gJ0Rlc2NyaXB0aW9uJzsKJGxhbmdbJ3BsdWdpbiddID0gJ1BsdWdpbic7CiRsYW5nWyd5b3VhcmVpbnRleHQnXSA9ICdZb3UgYXJlIGluJzsKJGxhbmdbJ2xvYWRzdHlsZXNoZWV0dGV4dCddID0gJ0xvYWQgc3R5bGVzaGVldCBmb3IgY29udGVudCAocmVjb21tZW5kZWQpJzsKJGxhbmdbJ2V4dHJhc3R5bGVzdGV4dCddID0gJ0FkZGl0aW9ucyB0byBzdHlsZXNoZWV0JzsKJGxhbmdbJ2V4dHJhc3R5bGVzaGVscCddID0gJ0NTUyBlbnRlcmVkIGhlcmUgd2lsbCBiZSBhZGRlZCB0byB0aGUgc3R5bGVzaGVldCByZWFkIGJ5IFRpbnlNQ0UgYWZ0ZXIgaXQgcmVjaWV2ZXMgdGhlIENNU21zIHN0eWxlcyc7CiRsYW5nWyd1cGxvYWRuZXdmaWxlJ10gPSAnTmV3IGZpbGUnOwokbGFuZ1sndXBsb2FkZmlsZSddID0gJ1VwbG9hZCc7CiRsYW5nWydjcmVhdGVuZXdkaXInXSA9ICdOZXcgZGlyJzsKJGxhbmdbJ2NyZWF0ZWRpciddID0gJ0NyZWF0ZSc7CiRsYW5nWydub2Rpcm5hbWUnXSA9ICdObyBkaXJuYW1lIHByb3ZpZGVkJzsKJGxhbmdbJ2RpcmV4aXN0cyddID0gJ0Rpcm5hbWUgYWxyZWFkeSBleGlzdHMnOwokbGFuZ1snbmV3ZGlyY3JlYXRlZCddID0gJ05ldyBkaXIgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQnOwokbGFuZ1snbmV3ZGlyZmFpbGVkJ10gPSAnQW4gZXJyb3Igb2NjdXJlZCB0cnlpbmcgdG8gY3JlYXRlIGRpcic7CiRsYW5nWydub2ZpbGUnXSA9ICdObyBmaWxlIHdhcyB1cGxvYWRlZCc7CiRsYW5nWydmaWxldG9vYmlnJ10gPSAnVXBsb2FkZWQgZmlsZSBpcyB0b28gYmlnJzsKJGxhbmdbJ2NvbnRhaW5zaWxsZWdhbGNoYXJzJ10gPSAnRmlsZW5hbWUgY29udGFpbnMgb25lIG9yIG1vcmUgaWxsZWdhbCBjaGFyYWN0ZXJzICgmIzAzOTssJnF1b3Q7LCssKixcLC8sJmFtcDssJCknOwokbGFuZ1sndXBsb2FkZmFpbGVkJ10gPSAnRXJyb3IgbW92aW5nIHVwbG9hZGVkIGZpbGUgaW50byBwbGFjZSc7CiRsYW5nWydmaWxldXBsb2FkZWQnXSA9ICdGaWxlIHN1Y2Nlc3NmdWxseSB1cGxvYWRlZCc7CiRsYW5nWydmaWxlcGlja2VydGl0bGUnXSA9ICdDTVNNYWRlU2ltcGxlIEZpbGUgU2VsZWN0aW9uJzsKJGxhbmdbJ3N1Y2Nlc3MnXSA9ICdTdWNjZXNzJzsKJGxhbmdbJ2ZpbGVvcGVyYXRpb25zJ10gPSAnRmlsZSBvcGVyYXRpb25zJzsKJGxhbmdbJ3Rob3VzYW5kZGVsaW1pdGVyJ10gPSAnLCc7CiRsYW5nWydzaXplJ10gPSAnU2l6ZSc7CiRsYW5nWydkaW1lbnNpb25zJ10gPSAnV3hIJzsKJGxhbmdbJ2FkdmFuY2VkX3RhYiddID0gJ0FkdmFuY2VkJzsKJGxhbmdbJ2hlbHAnXSA9ICcJPGgzPldoYXQgZG9lcyB0aGlzIGRvPzwvaDM+Cgk8cD5FbmFibGVzIGEgVGlueU1DRSB0byBiZSB1c2VkIGFzIGEgV1lTSVdZRy48L3A+Cgk8aDM+SG93IGRvIEkgdXNlIGl0PzwvaDM+Cgk8cD5JbnN0YWxsIGl0LCB0aGVuIGdvIHRvIFVzZXIgUHJlZmVyZW5jZXMgYW5kIFNldCBUaW55TUNFIHRvIGJlIHlvdXIgd3lzaXd5ZyBvZiBjaG9pY2UuPC9wPgogIDxoMz5TcGVsbGNoZWNrZXI8L2gzPgogIDxwPkFzIG9mIHZlcnNpb24gMi42LjAsIFRpbnlNQ0UgaW5jbHVkZXMgYW4gb25saW5lIHNwZWxsY2hlY2tlci4gUGxlYXNlIG5vdGljZSB0aGF0IFNTTCBtdXN0IGJlIHR1cm5lZCBvbiBpbiB5b3VyIHNlcnZlci1jb25maWd1cmF0aW9uIGluIG9yZGVyIGZvciB0aGlzIHRvIHdvcmsuIE9uIHNvbWUgc2V0dXBzIHRoaXMgb3B0aW9uIGlzIGNhbGxlZCBwaHBfb3BlbnNzbCBidXQgdGhhdCBtYXkgdmFyeTwvcD4KCTxoMz5Ucm91Ymxlc2hvb3Rpbmc8L2gzPgoJU29tZSBwZW9wbGUgaGF2ZSB0cm91YmxlIHdpdGggdGlueSBub3Qgc2hvd2luZyB1cCB1cG9uIGluc3RhbGxhdGlvbiBvciB1cGdyYWRpbmcuIEhlcmUgaXMgYSBjaGVja2xpc3Qgb2YgCgl0aGluZ3MgeW91IGNhbiB0cnkgYmVmb3JlIGNvbnRhY3RpbmcgbWUgZm9yIGZ1cnRoZXIgc3VwcG9ydC4KCTxici8+Cgk8dWw+Cgk8bGk+MS4gUGxlYXNlLCBwbGVhc2UsIHRyeSB0byByZXVwbG9hZCB0aGUgbW9kdWxlcy9UaW55TUNFIGRpciB0byB5b3VyIHNlcnZlci4gWW91JiMwMzk7ZCBiZSBhbWF6ZWQgaG93IG1hbnkgdGltZXMgdGhpcyBoYXMgaGVscGVkIHBlb3BsZS48L2xpPgkKCTxsaT4yLiBJZiB1cGdyYWRpbmcsIHBsZWFzZSB0cnkgdG8gcmVzZXQgYWxsIHNldHRpbmdzLiBOb3QgbmljZSBpZiB5b3UmIzAzOTt2ZSBkb25lIGEgbG90IG9mIGN1c3RvbWl6YXRpb24sIEkga25vdywgYnV0IGEgbG90IG9mIHRoaW5ncyBjaGFuZ2VkIGZyb20gMi4zLnggdG8gMi40Lnggc2VyaWVzIG9mIHRoZSBtb2R1bGUuCgk8bGk+My4gVHJ5IGVuYWJsaW5nIHRoZSBzdGF0aWMgY29uZmlnIG9wdGlvbiBpbiBhZHZhbmNlZCBzZXR0aW5ncy4gVGhpcyB3b3JrcyBiZXR0ZXIgb24gc29tZSBzeXN0ZW1zIChsaWtlIENHSS1iYXNlZCksIE5vdGUgdGhhdCB0aGlzIHJlcXVpcmVzIHlvdXIgL3RtcC8tZGlyIHRvIGJlIHdyaXRhYmxlIGJ5IHRoZSB3ZWJzZXJ2ZXIKCTwvdWw+Cgk8YnIvPgogIDxoMz5QbHVnaW4gZGV2ZWxvcG1lbnQ8L2gzPgogIEFzIG9mIHZlcnNpb24gMi43LjAgdGhlIFRpbnlNQ0UtbW9kdWxlIGhhcyB0aGUgYWJpbGl0eSB0byBhbGxvdyBvdGhlciBtb2R1bGVzIHRvIHJlZ2lzdGVyIGV4dGVuc2lvbnMgZm9yIGl0LiBDb3VsZCBiZSBhIGN1c3RvbSBpY29uIGFsbG93aW5nIHlvdSB0byBpbnNlcnQKICBjb250ZW50IGZyb20gc29tZSBtb2R1bGUsIGxpa2UgR2FsbGVyeSBldGMuIEhvdyB0byBkbyB0aGlzIGlzIHByZXR0eSB0ZWNoIHN0dWZmLCBidXQgaWYgeW91IGFyZSBhIG1vZHVsZSBkZXZlbG9wZXIgYW5kIGludGVyZXN0ZWQgaW4gY2hlY2tpbmcgaXQgb3V0CiAgcGxlYXNlIGxvb2sgaW4gdGhlIFRpbnlNQ0UvZG9jcy1kaXIgZm9yIGZ1cnRoZXIgaW5zdHJ1Y3Rpb25zLgoJCQonOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My4xNjY0ODk3NTY1LjEyNzI3NTkxNjMuMTI3MzQ4OTA4OC4xMjczNjE3MDI1LjgnOwokbGFuZ1sndXRteiddID0gJzE1Njg2MTM1My4xMjczMjMxNjkxLjIuMi51dG1jc3I9Z29vZ2xlfHV0bWNjbj0ob3JnYW5pYyl8dXRtY21kPW9yZ2FuaWN8dXRtY3RyPWNtc21zJzsKJGxhbmdbJ3FjYSddID0gJ1AwLTE5NjA3NTYzNjEtMTI3Mjc1OTE2MzM3MCc7CiRsYW5nWyd1dG1iJ10gPSAnMTU2ODYxMzUzLjIuMTAuMTI3MzYxNzAyNSc7CiRsYW5nWyd1dG1jJ10gPSAnMTU2ODYxMzUzJzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/zh_TW.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1RpbnlNQ0UgV1lTSVdZRyc7CiRsYW5nWydhZG1pbmRlc2NyaXB0aW9uJ10gPSAnVGhpcyBtb2R1bGUgYWxsb3dzIG1haW5seSBjb250ZW50LCBidXQgcG9zc2libHkgYWxzbyBvdGhlciBraW5kcyBvZiBkYXRhLCB0byBiZSBlZGl0ZWQgdXNpbmcgYSBXWVNJV1lHIGVkaXRvciBwb3dlcmVkIGJ5IHRoZSBUaW55TUNFIHByb2plY3QuJzsKJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAn5qih57WE6Kej6Zmk5a6J6KOdLic7CiRsYW5nWydpbnN0YWxsZWQnXSA9ICfmqKHntYTniYjmnKwgJXMg5bey57aT6KKr5a6J6KOdLic7CiRsYW5nWydzdHJpcGJhY2tncm91bmR0YWdzJ10gPSAnU3RyaXAgQmFja2dyb3VuZCBUYWdzIEZyb20gQ1NTJzsKJGxhbmdbJ3N0aXB0YWdzX2hlbHAnXSA9ICdUaGlzIG9wdGlvbnMgdHJpZXMgdG8gcmVtb3ZlIGJhY2tncm91bmQtdHlwZSBzZXR0aW5ncyBmcm9tIHRoZSBzdHlsZXNoZWV0Lic7CiRsYW5nWydzb3VyY2VfZm9ybWF0dGluZ190ZXh0J10gPSAnQXBwbHkgc291cmNlIGZvcm1hdHRpbmcgdG8gdGhlIG91dHB1dCBIVE1MJzsKJGxhbmdbJ2Ryb3Bkb3duYmxvY2tmb3JtYXRzX3RleHQnXSA9ICdCbG9ja2Zvcm1hdHMgaW4gZHJvcGRvd24tbWVudSc7CiRsYW5nWydhbGxvd3RhYmxlcyddID0gJ0FsbG93IHRhYmxlIG9wZXJhdGlvbnMnOwokbGFuZ1snbmV3bGluZXN0eWxlX3RleHQnXSA9ICdOZXdsaW5lLXN0eWxlJzsKJGxhbmdbJ3BzdHlsZSddID0gJzxwPi1zdHlsZSc7CiRsYW5nWydicnN0eWxlJ10gPSAnPGJyLz4tc3R5bGUnOwokbGFuZ1sndXNlY29tcHJlc3Npb250ZXh0J10gPSAn5L2/55SoIGd6IOWjk+e4ric7CiRsYW5nWyd1c2Vjb21wcmVzc2lvbmhlbHAnXSA9ICdUaGlzIGNhbiBzcGVlZCB1cCBsb2FkaW5nIFRpbnlNQ0UsIGJ1dCBjYW4gYWxzbyBwcmV2ZW50IGl0IGZyb20gbG9hZGluZyBvbiBzb21lIHN5c3RlbXMuIFVzZSB3aXRoIGNhdXRpb24uJzsKJGxhbmdbJ2ZvcmNlZHJvb3RibG9ja3RleHQnXSA9ICdGb3JjZSA8cD4gcm9vdGJsb2NrJzsKJGxhbmdbJ2ZvcmNlZHJvb3RibG9ja2hlbHAnXSA9ICdGb3JjZXMgdGhlIHJldHVybmVkIGNvbnRlbnQgdG8gYXQgbGVhc3QgYmUgZW5jbG9zZWQgaW4gYSA8cD4tdGFnJzsKJGxhbmdbJ2ZpbGVwaWNrZXJzdHlsZSddID0gJ0ZpbGVwaWNrZXIgc3R5bGUnOwokbGFuZ1snZmlsZXBpY2tlcnNpemUnXSA9ICdGaWxlcGlja2VyIHNpemUnOwokbGFuZ1snYWxsb3d1cGxvYWR0ZXh0J10gPSAnQWxsb3cgdXBsb2FkIGFuZCBjcmVhdGluZyBkaXJzIGluIEZpbGVQaWNrZXInOwokbGFuZ1snYWxsb3dzY2FsaW5ndGV4dCddID0gJ0FsbG93IG9uLXRoZS1mbHkgcmVzaXppbmcgb2YgdXBsb2FkZWQgaW1hZ2VzJzsKJGxhbmdbJ3NjYWxpbmdkaW1lbnNpb25zdGV4dCddID0gJ0RlZmF1bHQgZGltZW5zaW9ucyc7CiRsYW5nWydyZXNpemV0byddID0gJ1Jlc2l6ZSB0bzonOwokbGFuZ1snbWFrZXRodW1ibmFpbCddID0gJ01ha2UgYSB0aHVtYm5haWwgd2hlbiB1cGxvYWRpbmcgaW1hZ2VzJzsKJGxhbmdbJ3VzZWFkdmFuY2VkcHJvZmlsZSddID0gJ1VzZSBhZHZhbmNlZCBUaW55TUNFLXByb2ZpbGUnOwokbGFuZ1snc2F2ZXByb2ZpbGUnXSA9ICdTYXZlIHByb2ZpbGUnOwokbGFuZ1sncHJvZmlsZXNhdmVkJ10gPSAnVGhlIHByb2ZpbGUgd2FzIHNhdmVkJzsKJGxhbmdbJ3Byb2ZpbGVzX3RhYiddID0gJ1Byb2ZpbGVzJzsKJGxhbmdbJ2FkdmFuY2VkX2JhY2tlbmRfdG9vbGJhcnMnXSA9ICdBZHZhbmNlZCBiYWNrZW5kIHByb2ZpbGUgc2V0dGluZ3MnOwokbGFuZ1snc2F2ZXN0eWxlcyddID0gJ1NhdmUgc3R5bGVzJzsKJGxhbmdbJ2FsbG93YWR2YW5jZWRwcm9maWxlJ10gPSAnQWxsb3cgdXNhZ2Ugb2YgYWR2YW5jZWQgcHJvZmlsZSBpbiBUaW55TUNFJzsKJGxhbmdbJ3Nob3dmaWxlbWFuYWdlbWVudCddID0gJ1Nob3cgZmlsZW1hbmFnZW1lbnQgb3B0aW9ucyc7CiRsYW5nWydzaG93ZmlsZW1hbmFnZW1lbnRoZWxwJ10gPSAnU2hvdyBmaWxlbWFuYWdlbWVudCBpbiBvcHRpb25zIGxpa2UgdXBsb2FkLCBtYWtlIGRpciBhbmQgZmlsZSBkZWxldGlvbiBpbiBGaWxlUGlja2VyLCBpZiB0aGUgdXNlciBpcyBhbGxvd2VkIHRvIHBlcmZvcm0gdGhlc2UuJzsKJGxhbmdbJ3Jlc3RyaWN0ZGlycyddID0gJ1Jlc3RyaWN0IHVzZXJcJ3MgZGlyIGFjY2Vzcyc7CiRsYW5nWydyZXN0cmljdGRpcnNoZWxwJ10gPSAnVGhpcyB3aWxsIHJlc3RyaWN0IHRoZSBmaWxlbWFuYWdlbWVudC1jYXBhYmlsaXRpZXMgb2YgdGhlIHVzZXIgdG8gYSBzdWJkaXIgdG8gXCd1cGxvYWRzXCcgd2hpY2ggaGF2ZSB0aGUgc2FtZSBuYW1lIGFzIHRoZSB1c2VyXCdzIGxvZ2luLiBJZiB0aGUgc3ViZGlyIGRvZXMgbm90IGV4aXN0LCBpdCB3aWxsIHBvc3NpYmx5IGJlIGNyZWF0ZWQuIFBsZWFzZSBub3RlLCB0aGlzIGN1cnJlbnRseSBvbmx5IHdvcmtzIHdpdGggdGhlIHN0YW5kYXJkIGRpcm5hbWVzLCB1cGxvYWRzL2ltYWdlcy4gVGhpcyBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuJzsKJGxhbmdbJ2RlbGV0ZWNvbmZpcm1hdGlvbiddID0gJ0FyZSB5b3Ugc3VyZSB0aGlzIGZpbGUgc2hvdWxkIGJlIGRlbGV0ZWQ/JzsKJGxhbmdbJ2RlbGV0ZWZpbGVzdWNjZXNzJ10gPSAnd2FzIHN1Y2Nlc3NmdWxseSBkZWxldGVkJzsKJGxhbmdbJ2RlbGV0ZWZpbGVmYWlsZWQnXSA9ICdjb3VsZCBub3QgYmUgZGVsZXRlZCc7CiRsYW5nWydkZWxldGVzdWJkaXJmYWlsZWQnXSA9ICdjb3VsZCBub3QgYmUgZGVsZXRlZCc7CiRsYW5nWydkZWxldGVzdWJkaXJzdWNjZXNzJ10gPSAnd2FzIHN1Y2Nlc3NmdWxseSBkZWxldGVkJzsKJGxhbmdbJ2RlbGV0ZWRpcmNvbmZpcm1hdGlvbiddID0gJ0FyZSB5b3Ugc3VyZSB0aGlzIGVtcHR5IHN1YmRpciBzaG91bGQgYmUgZGVsZXRlZD8nOwokbGFuZ1snZGVsZXRlZGlyJ10gPSAnRGVsZXRlIGVtcHR5IHN1YmRpcic7CiRsYW5nWydkZWxldGVmaWxlJ10gPSAn5Yiq6Zmk5qqU5qGIJzsKJGxhbmdbJ2Nhbm5vdHJlYWRjb25maWcnXSA9ICdDYW5ub3QgcmVhZCB0aGUgZmlsZSB0aW55Y29uZmlnLnBocCBkaXJlY3RseSBzbyBUaW55TUNFIHdpbGwgcHJvYmFibHkgbm90IHdvcmsuIFlvdSBzaG91bGQgY2hlY2sgdGhlIHBlcm1pc3Npb25zIG9mIHRoZSBmaWxlIGFuZCBvZiB0aGUgcGFyZW50IGRpcnMsIHdoaWNoIHNob3VsZCBiZSByZWFkYWJsZSBmb3IgYWxsIGJ1dCBvbmx5IHdyaXRhYmxlIGZvciBvd25lci4nOwokbGFuZ1snZmlsZW5hbWVvbmx5J10gPSAn6aGv56S65qqU5ZCNJzsKJGxhbmdbJ3RodW1ibmFpbHNvbmx5J10gPSAn6aGv56S657iu5ZyWJzsKJGxhbmdbJ3Nob3d0aHVtYm5haWxmaWxlc3RleHQnXSA9ICdTaG93IHRodW1ibmFpbC1maWxlcyBhcyByZWd1bGFyIGZpbGVzJzsKJGxhbmdbJ2ZpbGVuYW1lYW5kdGh1bWJuYWlscyddID0gJ1Nob3cgYm90aCBmaWxlbmFtZXMgYW5kIHRodW1ibmFpbHMnOwokbGFuZ1snc2tpbnN0ZXh0J10gPSAnU2tpbic7CiRsYW5nWydza2ludmFyaWF0aW9udGV4dCddID0gJ1NraW4gdmFyaWF0aW9uJzsKJGxhbmdbJ2FkdmFuY2Vkd2FybmluZyddID0gJzxzdHJvbmc+UGxlYXNlIG5vdGUhPGJyLz5DaGFuZ2luZyB0aGVzZSBzZXR0aW5ncyBjYW4gY2F1c2UgVGlueU1DRSB0byBzdG9wIHdvcmtpbmcgb3IgdGhlIGdlbmVyYXRlZCBjb2RlIHRvIGJlIHdyb25nIGluIHNvbWUgd2F5LiBPbmx5IGVkaXQgdGhpcyBpZiB5b3Uga25vdyB3aGF0IHlvdSBhcmUgZG9pbmchIFBsZWFzZSBjb25zdWx0IHRoZSBUaW55TUNFIHdlYnNpdGUgYmVmb3JlIHBsYXlpbmcgd2l0aCB0aGlzLjwvc3Ryb25nPic7CiRsYW5nWydlbnRpdHllbmNvZGluZ190ZXh0J10gPSAnRW5jb2Rpbmcgb2YgZW50aXRpZXMnOwokbGFuZ1sncmF3ZW5jb2RpbmcnXSA9ICdSYXcgZW5jb2RpbmcgKGZhc3Rlc3QsIHdvcmtzIGluIG1vc3QgY2FzZXMpJzsKJGxhbmdbJ25hbWVkZW5jb2RpbmcnXSA9ICdOYW1lZCBlbmNvZGluZyAobGlrZSAmbmJzcDspJzsKJGxhbmdbJ251bWVyaWNlbmNvZGluZyddID0gJ051bWVyaWMgZW5jb2RpbmcgKGxpa2UgJiMxNjA7KSc7CiRsYW5nWydzaG93X3BhdGhfdGV4dCddID0gJ1Nob3cgdGhlIHBhdGggb2YgdGhlIGVsZW1lbnQgYXQgdGhlIGJvdHRvbSBvZiB0aGUgZWRpdG9yJzsKJGxhbmdbJ3Rvb2xiYXJfdGFiJ10gPSAnVG9vbGJhcic7CiRsYW5nWyd0b29sYmFyX2hlbHAnXSA9ICdUaGVzZSBvcHRpb25zIHNob3VsZCBjb250YWluIGEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgYnV0dG9uL2NvbnRyb2wgbmFtZXMgdG8gaW5zZXJ0IGludG8gdGhlIHRvb2xiYXIuIFRoZSBjaGFyIHwgY2FuIGJlIHVzZWQgaW5zdGVhZCBvZiB0aGUgd29yZCBcJ3NlcGFyYXRvclwnJzsKJGxhbmdbJ3Rvb2xiYXJfdGV4dCddID0gJ1Rvb2xiYXInOwokbGFuZ1sndG9vbGJhcmhlbHB0ZXh0J10gPSAnQ2xpY2sgaGVyZSB0byB2aWV3IHRvb2xiYXItaW5zdHJ1Y3Rpb25zIGluIFRpbnlNQ0Utd2lraS4nOwokbGFuZ1snZWRpdG9yX3dpZHRoX3RleHQnXSA9ICdXaWR0aCBvZiBlZGl0b3IgZmllbGQnOwokbGFuZ1snZWRpdG9yX2hlaWdodF90ZXh0J10gPSAnSGVpZ2h0IG9mIGVkaXRvciBmaWVsZCc7CiRsYW5nWydhdXRvJ10gPSAn6Ieq5YuVJzsKJGxhbmdbJ29yJ10gPSAn5oiWJzsKJGxhbmdbJ3VzZWh0bWw1c2NoZW1ldGV4dCddID0gJ1VzZSBodG1sNS1zY2hlbWUsIGluc3RlYWQgb2YgaHRtbDQnOwokbGFuZ1sndGVzdGFyZWFfdGFiJ10gPSAn5ris6Kmm5Y2AJzsKJGxhbmdbJ3Nob3d0ZXN0aW5nb3V0cHV0J10gPSAnU2hvdyB0ZXN0aW5nIG91dHB1dCc7CiRsYW5nWyd0ZXN0YXJlYWVkaXRvciddID0gJ1Rlc3RpbmcgYXJlYSBlZGl0b3InOwokbGFuZ1sndGVzdGFyZWFvdXRwdXQnXSA9ICdUZXN0aW5nIGFyZWEgb3V0cHV0JzsKJGxhbmdbJ3Rlc3RhcmVhb3V0cHV0c291cmNlJ10gPSAnVGVzdGluZyBhcmVhIHNvdXJjZSc7CiRsYW5nWydhbGxvd3Jlc2l6aW5nJ10gPSAnQWxsb3cgaW5wbGFjZSByZXNpemluZyBvZiBlZGl0b3IgZmllbGQnOwokbGFuZ1sncmVzaXplbm9uZSddID0gJ0RvIG5vdCBhbGxvdyByZXNpemluZyc7CiRsYW5nWydyZXNpemVib3RoJ10gPSAnQWxsb3cgcmVzaXppbmcgaW4gYm90aCBkaXJlY3Rpb25zJzsKJGxhbmdbJ3Jlc2l6ZWhlaWdodCddID0gJ0FsbG93IHJlc2l6aW5nIG9mIGhlaWdodCBvbmx5JzsKJGxhbmdbJ2RhdGV0aW1lZm9ybWF0X3RleHQnXSA9ICdEYXRlL1RpbWUgZm9ybWF0JzsKJGxhbmdbJ3RpbWV0ZXh0J10gPSAn5pmC6ZaTJzsKJGxhbmdbJ2RhdGV0ZXh0J10gPSAn5pel5pyfJzsKJGxhbmdbJ2RhdGV0aW1lZm9ybWF0X2hlbHAnXSA9ICdDbGljayBoZXJlIGZvciBoZWxwIG9uIGhvdyB0byBmb3JtYXQgdGhlIGRhdGUvdGltZSc7CiRsYW5nWydleHRyYWNvbmZpZ3RleHQnXSA9ICdFeHRyYSBjb25maWd1cmF0aW9uJzsKJGxhbmdbJ2V4dHJhY29uZmlnaGVscDInXSA9ICdPbmUgc3RhdGVtZW50IHBlciBsaW5lLCBjb21tYXMgd2lsbCBiZSBhZGRlZCBiZWZvcmUgYW5kIGFmdGVyIHRoaXMgY29udGVudC4gQ2hlY2sgVGlueU1DRS13aWtpIGZvciBpbnN0cnVjdGlvbnMuJzsKJGxhbmdbJ2N1c3RvbWRyb3Bkb3dudGV4dCddID0gJ0N1c3RvbSBkcm9wZG93bic7CiRsYW5nWydjdXN0b21kcm9wZG93bmhlbHAnXSA9ICdJbnNlcnRzIGN1c3RvbWl6YWJsZSBzbmlwcGV0cyBvZiBjb2RlL3RleHQgYnkgc2VsZWN0aW9uIGluIGEgZHJvcGRvd24gbWVudS4gDQpPYnZpb3VzIHVzZXMgYXJlIGVhc3kgYWNjZXNzIHRvIHRhZ1wncyBldGMuIFRoZSBtZW51IGlzIGluc2VydGVkIGludG8gdG9vbGJhciB1c2luZyBcJ2N1c3RvbWRyb3Bkb3duXCcuJzsKJGxhbmdbJ3N0YXJ0ZW5hYmxlZHRleHQnXSA9ICdTdGFydHVwIGVuYWJsZWQnOwokbGFuZ1snc3RhcnRlbmFibGVkaGVscCddID0gJ1VuY2hlY2tpbmcgdGhpcyBzdGFydHMgdXAgVGlueS1lZGl0b3JzIGluIGEgZGlzYWJsZWQgc3RhdGUuIFNob3VsZCBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggdGhlIHRvZ2dsZSBidXR0b24uJzsKJGxhbmdbJ2xvYWRjbXNsaW5rZXJ0ZXh0J10gPSAnTG9hZCB0aGUgQ01TLWxpbmtlcic7CiRsYW5nWydsb2FkY21zbGlua2VyaGVscCddID0gJ1RoaXMgZ2VuZXJhdGVzIHRoZSBqYXZhc2NyaXB0LWNvZGUgbmVlZGVkIHRvIGFsbG93IFwnY21zbGlua2VyXCcgdG8gYmUgYWRkZWQgdG8gYSB0b29sYmFyLic7CiRsYW5nWydjbXNsaW5rZXJzdHlsZXRleHQnXSA9ICdDTVMtbGlua2VyIGxpbmstc3R5bGUnOwokbGFuZ1snY21zc2VsZmxpbmtzdHlsZSddID0gJ3tjbXNfc2VsZmxpbmt9LXN0eWxlJzsKJGxhbmdbJ2FocmVmc3R5bGUnXSA9ICc8YSBocmVmPi1zdHlsZSc7CiRsYW5nWydjbXNsaW5rZXJhZGRzdGV4dCddID0gJ0NNUy1saW5rZXIgYWRkaXRpb25zJzsKJGxhbmdbJ2Ntc2xpbmtlcmFkZHNoZWxwJ10gPSAnVGhpcyBhbGxvd3MgeW91IHRvIGFkZCBzdHVmZiB0byBlaXRoZXIgdGhlIDxhIGhyZWY+LXRhZyBvciB7Y21zX3NlbGZsaW5rfSwgd2hlbiBnZW5lcmF0ZWQgYnkgQ01TLWxpbmtlci4nOwokbGFuZ1snYXZvaWRsaW5rY29udmVyc2lvbnRleHQnXSA9ICdBdm9pZCBsaW5rIGNvbnZlcnNpb24nOwokbGFuZ1snYXZvaWRsaW5rY29udmVyc2lvbmhlbHAnXSA9ICdUdXJucyBUaW55TUNFXCdzIGJ1aWx0aW4gbGluayBjb252ZXJzaW9uIGxvZ2ljIG9mZi4gTWFrZXMge3NtYXJ0eX0tdXNhZ2UgaW4gdXJscyBwb3NzaWJsZS4nOwokbGFuZ1sncmVsYXRpdmV1cmxzdGV4dCddID0gJ0dlbmVyYXRlIHJlbGF0aXZlIHVybHMnOwokbGFuZ1snZm9yY2VjbGVhbnBhc3RldGV4dCddID0gJ0ZvcmNlIGNsZWFuIG9uIHBhc3RlJzsKJGxhbmdbJ2ZvcmNlY2xlYW5wYXN0ZWhlbHAnXSA9ICdUaGlzIHNob3VsZCBiZSBlbmFibGVkIHRvIHJlbW92ZSBzdHJhbmdlIGZvcm1hdHRpbmcgY29kZXMgd2hlbiBwYXN0aW5nIGZyb20gV29yZCBldGMuJzsKJGxhbmdbJ2JvZHljc3NfdGV4dCddID0gJ0JvZHkgdGFnIENTUyc7CiRsYW5nWydib2R5Y3NzX2hlbHAnXSA9ICdXaWxsIGJlIGFkZGVkIHRvIHRoZSBjc3MgYm9keS1kZWZpbml0aW9uLiBIaW50OiBCYWNrZ3JvdW5kLWNvbG9yIGNhbiBiZSBzZXQgdG8gd2hpdGUgdXNpbmcgImJhY2tncm91bmQtY29sb3I6IHdoaXRlIic7CiRsYW5nWydpbmNsdWRlb25seXNjcmVlbmNzc190ZXh0J10gPSAnSW5jbHVkZSBvbmx5IHNjcmVlbiBDU1MnOwokbGFuZ1snaW5jbHVkZW9ubHlzY3JlZW5jc3NfaGVscCddID0gJ1NlbGVjdGluZyB0aGlzIGFsbG93cyBvbmx5IGF0dGFjaGVkIHN0eWxlc2hlZXRzIHdpdGggdGhlIHNjcmVlbi1tZWRpYXR5cGUgc2VsZWN0ZWQgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHN0eWxlcyBUaW55TUNFIGhhbmRsZXMuJzsKJGxhbmdbJ3VzZXN0YXRpY2NvbmZpZ3RleHQnXSA9ICdVc2Ugc3RhdGljIGNvbmZpZyBmaWxlJzsKJGxhbmdbJ3VzZXN0YXRpY2NvbmZpZ2hlbHAnXSA9ICdUaGlzIGNhbiBoZWxwIGdldHRpbmcgdGlueSB0byB3b3JrIG9uIHN5c3RlbXMgd2hlcmUgdGhlIGhvc3RpbmcgZmFjaWxpdHkgYWRkcyBzdHVmZiBsaWtlIHN0YXRpc3RpY3MgZXRjLiB0byBhbGwgb3V0cHV0LCBicmVha2luZyBkeW5hbWljYWxseSBjcmVhdGVkIGphdmFzY3JpcHQgY29uZmlnIGZpbGUnOwokbGFuZ1sndXNlc3RhdGljY29uZmlnd2FybmluZyddID0gJ1dhcm5pbmchIFlvdSBoYXZlIHRoZSBzdGF0aWMgY29uZmlnLWZpbGUgb3B0aW9uIGVuYWJsZWQgYnV0IHlvdXIgL3RtcC8gZGlyIGlzIG5vdCB3cml0YWJsZS4gVGhpcyB3aWxsIHByZXZlbnQgdGhlIG1vZHVsZSBmcm9tIHNhdmluZyB0aGUgc3RhdGljIGNvbmZpZy1maWxlIGFuZCB3aWxsIG1vc3QgcHJvYmFibHkgcmVuZGVyIFRpbnlNQ0UgaW5vcGVyYXRpb25hbC4nOwokbGFuZ1snaWdub3JlbW9kaWZ5ZmlsZXN0ZXh0J10gPSAnSWdub3JlIHRoZSBcJ01vZGlmeSBGaWxlc1wnIHBlcm1pc3Npb24gZm9yIEZpbGVQaWNrZXInOwokbGFuZ1snaWdub3JlbW9kaWZ5ZmlsZXNoZWxwJ10gPSAnV2FybmluZyEgVGhpcyBhbGxvd3Mgc29tZSBmaWxlLWFsdGVyaW5nIG9wZXJhdGlvbnMgZXZlbiBpZiB0aGUgXCdNb2RpZnkgRmlsZXNcJyBwZXJtaXNzaW9uIGlzIG5vdCBzZXQgZm9yIHRoZSBjdXJyZW50IHVzZXJncm91cC4gVGhpcyBjYW4gZWZmZWN0aXZlbHkgYmUgdXNlZCB0b2dldGhlciB3aXRoIHRoZSBvcHRpb24gdG8gcmVzdHJpY3QgdXNlclwncyBkaXJlY3RvcnkgYWNjZXNzLic7CiRsYW5nWydzaG93dG9nZ2xlYnV0dG9uX3RleHQnXSA9ICdTaG93IGNoZWNrYm94IHRvIHR1cm4gV1lTSVdZRyBvbi9vZmYnOwokbGFuZ1sndG9nZ2xld3lzaXd5ZyddID0gJ1VzZSBXWVNJV1lHIGVkaXRvcic7CiRsYW5nWydzdHlsZXNfdGFiJ10gPSAnQ1NTIFN0eWxlcyc7CiRsYW5nWydzdHlsZXNfaGVscCddID0gJyAgSWYgeW91IGxlYXZlIHRoZSBmaWVsZCBlbXB0eSwgVGlueU1DRSB3aWxsIHBhcnNlIHlvdXIgQ1NTIGZpbGUgYW5kIGxpc3QgdGhlIGNsYXNzIHN0eWxlcyBjb250YWluZWQgaW4gaXQgdG8gdGhlIHVzZXIuIA0KICBJZiB5b3Ugd2FudCBvbmx5IHNvbWUgc3R5bGVzIHByZXNlbnRlZCB0byB0aGUgdXNlciwgc3BlY2lmeSB0aGVtIGluIHRoZSBmb3JtICJDdXN0b21OYW1lMT1zdHlsZTE7IEN1c3RvbU5hbWUyPXN0eWxlMiIsIA0KICAic3R5bGUxIiBiZWluZyBhIGNsYXNzIGNhbGwgaW4geW91ciBzdHlsZXNoZWV0IGFuZCB5b3UgZG9uXCd0IHB1dCB0aGUgLiANCiAgbm9ybWFsbHkgdXNlZCBmb3IgY2xhc3MgY2FsbHMgYXMgaXQgaXMgYWxyZWFkeSBpbiB5b3VyIENTUywgaXQgd2lsbCBsb29rIGxpa2UgdGhpcyA8c3BhbiBjbGFzcz0ic3R5bGUxIj50ZXh0PC9zcGFuPiwgDQogIGluIHRoZSBmaXJzdCBmaWVsZCBiZWxvdy4gDQonOwokbGFuZ1snY3NzX3N0eWxlc190ZXh0J10gPSAnU3R5bGVzJzsKJGxhbmdbJ2FjY2Vzc2RlbmllZCddID0gJ0FjY2VzcyBEZW5pZWQuIFBsZWFzZSBjaGVjayB5b3VyIHBlcm1pc3Npb25zLic7CiRsYW5nWydlcnJvciddID0gJ+mMr+iqpCEnOwokbGFuZ1snc3VibWl0J10gPSAn5o+Q5LqkJzsKJGxhbmdbJ3VwZGF0ZSddID0gJ+abtOaWsCc7CiRsYW5nWydzYXZlc2V0dGluZ3MnXSA9ICflhLLlrZjoqK3lrponOwokbGFuZ1snc2V0dGluZ3MnXSA9ICfoqK3lrponOwokbGFuZ1snc2V0dGluZ3NzYXZlZCddID0gJ+ioreWumuW3sue2k+iiq+WEsuWtmCc7CiRsYW5nWydzYXZlYWR2YW5jZWQnXSA9ICdTYXZlIGFkdmFuY2VkIHNldHRpbmdzJzsKJGxhbmdbJ2FkdmFuY2Vkc2F2ZWQnXSA9ICdBZHZhbmNlZCBzZXR0aW5ncyBzYXZlZCc7CiRsYW5nWyd0b29sYmFyc2F2ZWQnXSA9ICdUb29sYmFyIHdhcyBzYXZlZCc7CiRsYW5nWydzdHlsZXNzYXZlZCddID0gJ1N0eWxlcyB3YXMgc2F2ZWQnOwokbGFuZ1sndGVzdGFyZWF0ZXh0J10gPSAnPHA+VGVzdCBhcmVhLCBubyBjb250ZW50IHdpbGwgYmUgaGFybWVkIHBsYXlpbmcgd2l0aCB0aGlzLi4uPC9wPic7CiRsYW5nWydyZXNldCddID0gJ1Jlc2V0IGRlZmF1bHRzJzsKJGxhbmdbJ3Jlc2V0YWxsJ10gPSAnUmVzZXQgYWxsIHNldHRpbmdzIHRvIGRlZmF1bHRzJzsKJGxhbmdbJ2NvbmZpcm1yZXNldCddID0gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZXNldCB0aGVzZSBzZXR0aW5ncyB0byB0aGVpciBkZWZhdWx0cz8nOwokbGFuZ1snY29uZmlybXJlc2V0YWxsJ10gPSAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlc2V0IEFMTCBzZXR0aW5ncyB0byB0aGVpciBkZWZhdWx0cz8nOwokbGFuZ1snc2V0dGluZ3NyZXNldCddID0gJ1RoZXNlIHNldHRpbmdzIHdhcyByZXNldCB0byBkZWZhdWx0JzsKJGxhbmdbJ2FsbHNldHRpbmdzcmVzZXQnXSA9ICdBbGwgc2V0dGluZ3Mgd2VyZSByZXNldCB0byBkZWZhdWx0JzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnaGFzIGJlZW4gdXBncmFkZWQgdG8gdmVyc2lvbiAlcyc7CiRsYW5nWydjdXN0b21kcm9wZG93biddID0gJ0N1c3RvbSBkcm9wZG93bi1tZW51JzsKJGxhbmdbJ2Ntc21zbGlua2VyJ10gPSAnSW5zZXJ0IGxpbmsgdG8gY21zbXMtcGFnZSc7CiRsYW5nWydiYWNrZW5kX3Rvb2xiYXJzJ10gPSAnQmFja2VuZCBwcm9maWxlIHNldHRpbmdzJzsKJGxhbmdbJ2Zyb250ZW5kX3Rvb2xiYXJzJ10gPSAnRnJvbnRlbmQgcHJvZmlsZSBzZXR0aW5ncyc7CiRsYW5nWydwbHVnaW5zX3RhYiddID0gJ+aPkuS7tic7CiRsYW5nWydwbHVnaW5zX2hlbHAnXSA9ICdDaG9vc2UgdGhlIHBsdWdpbnMgeW91IHdhbnQgdG8gYWN0aXZhdGUuIERvY3VtZW50YXRpb24gY2FuIGJlIGZvdW5kIDxhIGhyZWY9IiVzIiB0YXJnZXQ9Il9ibGFuayI+aGVyZTwvYT4nOwokbGFuZ1sncGx1Z2luc190ZXh0J10gPSAn5o+S5Lu2JzsKJGxhbmdbJ3NhdmVwbHVnaW5zJ10gPSAn5YSy5a2Y5o+S5Lu2JzsKJGxhbmdbJ3BsdWdpbnNzYXZlZCddID0gJ+aPkuS7tuW3suiiq+WEsuWtmCc7CiRsYW5nWydwbHVnaW5zX21vZHVsZSddID0gJ+aooee1hOaPkuS7tic7CiRsYW5nWydwbHVnaW5zX2NvbW1vbiddID0gJ+S4gOiIrOaPkuS7tic7CiRsYW5nWydtb2R1bGUnXSA9ICfmqKHntYQnOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICdEZXNjcmlwdGlvbic7CiRsYW5nWydwbHVnaW4nXSA9ICdQbHVnaW4nOwokbGFuZ1sneW91YXJlaW50ZXh0J10gPSAn5oKo5piv5ZyoJzsKJGxhbmdbJ2xvYWRzdHlsZXNoZWV0dGV4dCddID0gJ0xvYWQgc3R5bGVzaGVldCBmb3IgY29udGVudCAocmVjb21tZW5kZWQpJzsKJGxhbmdbJ2V4dHJhc3R5bGVzdGV4dCddID0gJ0FkZGl0aW9ucyB0byBzdHlsZXNoZWV0JzsKJGxhbmdbJ2V4dHJhc3R5bGVzaGVscCddID0gJ0NTUyBlbnRlcmVkIGhlcmUgd2lsbCBiZSBhZGRlZCB0byB0aGUgc3R5bGVzaGVldCByZWFkIGJ5IFRpbnlNQ0UgYWZ0ZXIgaXQgcmVjaWV2ZXMgdGhlIENNU21zIHN0eWxlcyc7CiRsYW5nWyd1cGxvYWRuZXdmaWxlJ10gPSAn5paw5qqU5qGIJzsKJGxhbmdbJ3VwbG9hZGZpbGUnXSA9ICfkuIrlgrMnOwokbGFuZ1snY3JlYXRlbmV3ZGlyJ10gPSAn5paw55uu6YyEJzsKJGxhbmdbJ2NyZWF0ZWRpciddID0gJ+W7uueriyc7CiRsYW5nWydub2Rpcm5hbWUnXSA9ICdObyBkaXJuYW1lIHByb3ZpZGVkJzsKJGxhbmdbJ2RpcmV4aXN0cyddID0gJ0Rpcm5hbWUgYWxyZWFkeSBleGlzdHMnOwokbGFuZ1snbmV3ZGlyY3JlYXRlZCddID0gJ05ldyBkaXIgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQnOwokbGFuZ1snbmV3ZGlyZmFpbGVkJ10gPSAnQW4gZXJyb3Igb2NjdXJlZCB0cnlpbmcgdG8gY3JlYXRlIGRpcic7CiRsYW5nWydub2ZpbGUnXSA9ICfmspLmnInmqpTmoYjooqvkuIrlgrMnOwokbGFuZ1snZmlsZXRvb2JpZyddID0gJ+S4iuWCs+aqlOahiOWkquWkpyc7CiRsYW5nWydjb250YWluc2lsbGVnYWxjaGFycyddID0gJ0ZpbGVuYW1lIGNvbnRhaW5zIG9uZSBvciBtb3JlIGlsbGVnYWwgY2hhcmFjdGVycyAoXCcsIiwrLCosXFwsLywmLCQpJzsKJGxhbmdbJ3VwbG9hZGZhaWxlZCddID0gJ0Vycm9yIG1vdmluZyB1cGxvYWRlZCBmaWxlIGludG8gcGxhY2UnOwokbGFuZ1snZmlsZXVwbG9hZGVkJ10gPSAn5qqU5qGI5LiK5YKz5oiQ5YqfJzsKJGxhbmdbJ25vdGFuaW1hZ2UnXSA9ICfkuIrlgrPmqpTmoYjkuI3mmK/lnJbmqpQnOwokbGFuZ1snZmlsZXBpY2tlcnRpdGxlJ10gPSAnQ01TTWFkZVNpbXBsZSBGaWxlIFNlbGVjdGlvbic7CiRsYW5nWydzdWNjZXNzJ10gPSAn5oiQ5YqfJzsKJGxhbmdbJ2ZpbGVvcGVyYXRpb25zJ10gPSAn5qqU5qGI5pON5L2cJzsKJGxhbmdbJ3Rob3VzYW5kZGVsaW1pdGVyJ10gPSAnLCc7CiRsYW5nWydzaXplJ10gPSAn5bC65a+4JzsKJGxhbmdbJ2RpbWVuc2lvbnMnXSA9ICflr6zluqZ46auY5bqmJzsKJGxhbmdbJ2FkdmFuY2VkX3RhYiddID0gJ+mAsumajic7CiRsYW5nWydoZWxwJ10gPSAnCTxoMz5XaGF0IGRvZXMgdGhpcyBkbz88L2gzPg0KCTxwPkVuYWJsZXMgYSBUaW55TUNFIHRvIGJlIHVzZWQgYXMgYSBXWVNJV1lHLjwvcD4NCgk8aDM+SG93IGRvIEkgdXNlIGl0PzwvaDM+DQoJPHA+SW5zdGFsbCBpdCwgdGhlbiBnbyB0byBVc2VyIFByZWZlcmVuY2VzIGFuZCBTZXQgVGlueU1DRSB0byBiZSB5b3VyIHd5c2l3eWcgb2YgY2hvaWNlLjwvcD4NCiAgPGgzPlNwZWxsY2hlY2tlcjwvaDM+DQogIDxwPkFzIG9mIHZlcnNpb24gMi42LjAsIFRpbnlNQ0UgaW5jbHVkZXMgYW4gb25saW5lIHNwZWxsY2hlY2tlci4gUGxlYXNlIG5vdGljZSB0aGF0IFNTTCBtdXN0IGJlIHR1cm5lZCBvbiBpbiB5b3VyIHNlcnZlci1jb25maWd1cmF0aW9uIGluIG9yZGVyIGZvciB0aGlzIHRvIHdvcmsuIE9uIHNvbWUgc2V0dXBzIHRoaXMgb3B0aW9uIGlzIGNhbGxlZCBwaHBfb3BlbnNzbCBidXQgdGhhdCBtYXkgdmFyeTwvcD4NCgk8aDM+VHJvdWJsZXNob290aW5nPC9oMz4NCglTb21lIHBlb3BsZSBoYXZlIHRyb3VibGUgd2l0aCB0aW55IG5vdCBzaG93aW5nIHVwIHVwb24gaW5zdGFsbGF0aW9uIG9yIHVwZ3JhZGluZy4gSGVyZSBpcyBhIGNoZWNrbGlzdCBvZiANCgl0aGluZ3MgeW91IGNhbiB0cnkgYmVmb3JlIGNvbnRhY3RpbmcgbWUgZm9yIGZ1cnRoZXIgc3VwcG9ydC4NCgk8YnIvPg0KCTx1bD4NCgk8bGk+MS4gUGxlYXNlLCBwbGVhc2UsIHRyeSB0byByZXVwbG9hZCB0aGUgbW9kdWxlcy9UaW55TUNFIGRpciB0byB5b3VyIHNlcnZlci4gWW91XCdkIGJlIGFtYXplZCBob3cgbWFueSB0aW1lcyB0aGlzIGhhcyBoZWxwZWQgcGVvcGxlLjwvbGk+CQ0KCTxsaT4yLiBJZiB1cGdyYWRpbmcsIHBsZWFzZSB0cnkgdG8gcmVzZXQgYWxsIHNldHRpbmdzLiBOb3QgbmljZSBpZiB5b3VcJ3ZlIGRvbmUgYSBsb3Qgb2YgY3VzdG9taXphdGlvbiwgSSBrbm93LCBidXQgYSBsb3Qgb2YgdGhpbmdzIGNoYW5nZWQgZnJvbSAyLjMueCB0byAyLjQueCBzZXJpZXMgb2YgdGhlIG1vZHVsZS4NCgk8bGk+My4gVHJ5IGVuYWJsaW5nIHRoZSBzdGF0aWMgY29uZmlnIG9wdGlvbiBpbiBhZHZhbmNlZCBzZXR0aW5ncy4gVGhpcyB3b3JrcyBiZXR0ZXIgb24gc29tZSBzeXN0ZW1zIChsaWtlIENHSS1iYXNlZCksIE5vdGUgdGhhdCB0aGlzIHJlcXVpcmVzIHlvdXIgL3RtcC8tZGlyIHRvIGJlIHdyaXRhYmxlIGJ5IHRoZSB3ZWJzZXJ2ZXINCgk8L3VsPg0KCTxici8+DQogIDxoMz5QbHVnaW4gZGV2ZWxvcG1lbnQ8L2gzPg0KICBBcyBvZiB2ZXJzaW9uIDIuNy4wIHRoZSBUaW55TUNFLW1vZHVsZSBoYXMgdGhlIGFiaWxpdHkgdG8gYWxsb3cgb3RoZXIgbW9kdWxlcyB0byByZWdpc3RlciBleHRlbnNpb25zIGZvciBpdC4gQ291bGQgYmUgYSBjdXN0b20gaWNvbiBhbGxvd2luZyB5b3UgdG8gaW5zZXJ0DQogIGNvbnRlbnQgZnJvbSBzb21lIG1vZHVsZSwgbGlrZSBHYWxsZXJ5IGV0Yy4gSG93IHRvIGRvIHRoaXMgaXMgcHJldHR5IHRlY2ggc3R1ZmYsIGJ1dCBpZiB5b3UgYXJlIGEgbW9kdWxlIGRldmVsb3BlciBhbmQgaW50ZXJlc3RlZCBpbiBjaGVja2luZyBpdCBvdXQNCiAgcGxlYXNlIGxvb2sgaW4gdGhlIFRpbnlNQ0UvZG9jcy1kaXIgZm9yIGZ1cnRoZXIgaW5zdHJ1Y3Rpb25zLg0KCQkNCic7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjcyMTQ5MDAwOC4xMzQ4NzQ0MjE1LjEzNDg3NDQyMTUuMTM0ODc0NDIxNS4xJzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwokbGFuZ1sndXRteiddID0gJzE1Njg2MTM1My4xMzQ4NzQ0MjE1LjEuMS51dG1jc3I9Zml2ZXJpY2UubmV0fHV0bWNjbj0ocmVmZXJyYWwpfHV0bWNtZD1yZWZlcnJhbHx1dG1jY3Q9L2FkbWluL2luZGV4LnBocCc7CiRsYW5nWyd1dG1iJ10gPSAnMTU2ODYxMzUzLjEuMTAuMTM0ODc0NDIxNSc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/class.tinymce_modulemenu.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIENsYXNzIHRoYXQgY2FuIGJlIHVzZWQgYnkgZXh0ZXJuYWwgbW9kdWxlcyB0byBnZW5lcmF0ZSBhIGRyb3Bkb3duIG1lbnUgd2l0aCBpdGVtcwoKY2xhc3MgdGlueW1jZV9tb2R1bGVtZW51CnsKICBwdWJsaWMgJG1vZHVsZV9uYW1lPScnOwogIHB1YmxpYyAkYnV0dG9uX25hbWU9Jyc7IC8vIEV4YW1wbGUgOiBtb2R1bGVfZ2FsbGVyeQogIHB1YmxpYyAkdGl0bGU9Jyc7CiAgcHVibGljICR0b29sdGlwPScnOwogIHB1YmxpYyAkaWNvbj0nc3VuJzsKICBwdWJsaWMgJGltYWdlPScnOwogIHB1YmxpYyAkbWVudV9zZWN0aW9uPSdpbnNlcnQnOwogIHB1YmxpYyAkbWVudV9lbnRyaWVzPWFycmF5KCk7CgoKICAvLyAkbWVudV9lbnRyaWVzIGV4YW1wbGUgOgogIC8qCgogICRtZW51X2VudHJpZXMgPSBhcnJheSgKICAgIGFycmF5KAogICAgICAnbWVudV90ZXh0JyA9PiAnR2FsbGVyeSAxJywKICAgICAgJ2NvbnRlbnQnID0+ICJ7R2FsbGVyeSBkaXI9J2RpcjEnfSIsCiAgICAgICdjaGlsZHJlbnMnID0+IGFycmF5KAogICAgICAgIGFycmF5KAogICAgICAgICAgJ21lbnVfdGV4dCcgPT4gJ1N1YkdhbGxlcnkgMS4xJywKICAgICAgICAgICdjb250ZW50JyA9PiAie0dhbGxlcnkgZGlyPSdzdWJkaXIxMSd9IgogICAgICAgICksCiAgICAgICAgYXJyYXkoCiAgICAgICAgICAnbWVudV90ZXh0JyA9PiAnU3ViR2FsbGVyeSAxLjInLAogICAgICAgICAgJ2NvbnRlbnQnID0+ICJ7R2FsbGVyeSBkaXI9J3N1YmRpcjEyJ30iCiAgICAgICAgKSwKICAgICAgICBhcnJheSgKICAgICAgICAgICdtZW51X3RleHQnID0+ICdTdWJHYWxsZXJ5IDEuMycsCiAgICAgICAgICAnY29udGVudCcgPT4gIntHYWxsZXJ5IGRpcj0nc3ViZGlyMTMnfSIKICAgICAgICApCiAgICAgICkKICAgICksCiAgICBhcnJheSgKICAgICAgJ21lbnVfdGV4dCcgPT4gJ0dhbGxlcnkgMicsCiAgICAgICdjb250ZW50JyA9PiAie0dhbGxlcnkgZGlyPSdkaXIyJ30iLAogICAgICAnY2hpbGRyZW5zJyA9PiBhcnJheSgKICAgICAgICBhcnJheSgKICAgICAgICAgICdtZW51X3RleHQnID0+ICdTdWJHYWxsZXJ5IDIuMScsCiAgICAgICAgICAnY29udGVudCcgPT4gIntHYWxsZXJ5IGRpcj0nc3ViZGlyMjEnfSIKICAgICAgICApLAogICAgICAgIGFycmF5KAogICAgICAgICAgJ21lbnVfdGV4dCcgPT4gJ1N1YkdhbGxlcnkgMi4yJywKICAgICAgICAgICdjb250ZW50JyA9PiAie0dhbGxlcnkgZGlyPSdzdWJkaXIyMid9IgogICAgICAgICksCiAgICAgICAgYXJyYXkoCiAgICAgICAgICAnbWVudV90ZXh0JyA9PiAnU3ViR2FsbGVyeSAyLjMnLAogICAgICAgICAgJ2NvbnRlbnQnID0+ICJ7R2FsbGVyeSBkaXI9J3N1YmRpcjIzJ30iCiAgICAgICAgKQogICAgICApCiAgICApCiAgKTsKCiAgKi8KfQo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.tinymce_profile.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCgpjbGFzcyB0aW55bWNlX3Byb2ZpbGUKewogIC8vIEZpZWxkcyBhbmQgZGVmYXVsdCB2YWx1ZXMKICBwcm90ZWN0ZWQgJF9mbGRzID0gYXJyYXkoCiAgICAnaWRfcHJvZmlsZScgPT4gMCwKICAgICdpZF90ZW1wbGF0ZScgPT4gLTEsCiAgICAnbmFtZScgPT4gJycsCiAgICAncHJpb3JpdHknID0+IDUsCiAgICAncmVzaXplJyA9PiB0cnVlLAogICAgJ2F1dG9yZXNpemUnID0+IHRydWUsCgogICAgJ3BsdWdpbnMnID0+ICdhdXRvbGluayBhbmNob3IgY29kZSBmdWxsc2NyZWVuIGltYWdlIGxpbmsgbWVkaWEgcGFzdGUgdGFibGUgdmlzdWFsYmxvY2tzIGxpc3RzJywKICAgICdlbmFibGVfbGlua2VyJyA9PiB0cnVlLAoKICAgICdzaG93X21lbnViYXInID0+IHRydWUsCiAgICAnbWVudWJhcicgPT4gJ2VkaXQgaW5zZXJ0IHZpZXcgZm9ybWF0IHRhYmxlIHRvb2xzJywKICAgICd1c2VfYWR2YW5jZWRfbWVudScgPT4gZmFsc2UsCiAgICAnYWR2YW5jZWRfbWVudScgPT4gInsKICAgICAgICBlZGl0OiB7dGl0bGU6ICdFZGl0JywgaXRlbXM6ICd1bmRvIHJlZG8gfCBjdXQgY29weSBwYXN0ZSBwYXN0ZXRleHQgfCBzZWxlY3RhbGwnfSwKICAgICAgICBpbnNlcnQ6IHt0aXRsZTogJ0luc2VydCcsIGl0ZW1zOiAnbGluayBtZWRpYSB8IHRlbXBsYXRlIGhyJ30sCiAgICAgICAgdmlldzoge3RpdGxlOiAnVmlldycsIGl0ZW1zOiAndmlzdWFsYWlkJ30sCiAgICAgICAgZm9ybWF0OiB7dGl0bGU6ICdGb3JtYXQnLCBpdGVtczogJ2JvbGQgaXRhbGljIHVuZGVybGluZSBzdHJpa2V0aHJvdWdoIHN1cGVyc2NyaXB0IHN1YnNjcmlwdCB8IGZvcm1hdHMgfCByZW1vdmVmb3JtYXQnfSwKICAgICAgICB0YWJsZToge3RpdGxlOiAnVGFibGUnLCBpdGVtczogJ2luc2VydHRhYmxlIHRhYmxlcHJvcHMgZGVsZXRldGFibGUgfCBjZWxsIHJvdyBjb2x1bW4nfSwKICAgICAgICB0b29sczoge3RpdGxlOiAnVG9vbHMnLCBpdGVtczogJ2NvZGUnfQogICAgfSIsCgogICAgJ3Nob3dfdG9vbGJhcicgPT4gdHJ1ZSwKICAgICd0b29sYmFyMScgPT4gJ3VuZG8gcmVkbyB8IGN1dCBjb3B5IHBhc3RlIHwgZm9ybWF0c2VsZWN0IHwgYm9sZCBpdGFsaWMgdW5kZXJsaW5lIHwgYWxpZ25sZWZ0IGFsaWduY2VudGVyIGFsaWducmlnaHQgYWxpZ25qdXN0aWZ5IHwgYnVsbGlzdCBudW1saXN0IHwgY21zbXNfbGlua2VyIGxpbmsgdW5saW5rIHJlc3BvbnNpdmVmaWxlbWFuYWdlciBpbWFnZSB0ZW1wbGF0ZSB8IGZ1bGxzY3JlZW4gY29kZScsCiAgICAndG9vbGJhcjInID0+ICcnLAoKICAgICd1c2VfY3VzdG9tX2Jsb2NrX2Zvcm1hdHMnID0+IGZhbHNlLAogICAgJ2Jsb2NrX2Zvcm1hdHMnID0+ICdQYXJhZ3JhcGg9cDtIZWFkZXIgMT1oMTtIZWFkZXIgMj1oMjtIZWFkZXIgMz1oMztIZWFkZXIgND1oNDtIZWFkZXIgNT1oNTtIZWFkZXIgNj1oNicsCgogICAgJ2NvbnRleHRtZW51JyA9PiAnY21zbXNfbGlua2VyIGxpbmsgaW1hZ2UgaW1hZ2V0b29scyB8IGluc2VydHRhYmxlIHRhYmxlJywKCiAgICAnc2hvd19zdGF0dXNiYXInID0+IGZhbHNlLAoKICAgICdlbmFibGVfY3VzdG9tX2Ryb3Bkb3duJyA9PiBmYWxzZSwKICAgICdjdXN0b21fZHJvcGRvd25fdGl0bGUnID0+ICdFeHRlbnNpb25zJywKICAgICdjdXN0b21fZHJvcGRvd24nID0+ICJSb290IHVybHx7cm9vdF91cmx9XG5TaXRlIG5hbWV8e3NpdGVuYW1lfSIsCgogICAgLy8gRklMRU1BTkFHRVIKICAgICdmaWxlbWFuYWdlcl91c2UnID0+IHRydWUsCiAgICAnZmlsZW1hbmFnZXJfZGVsZXRlX2ZpbGVzJyA9PiB0cnVlLAogICAgJ2ZpbGVtYW5hZ2VyX2NyZWF0ZV9mb2xkZXJzJyA9PiB0cnVlLAogICAgJ2ZpbGVtYW5hZ2VyX2RlbGV0ZV9mb2xkZXJzJyA9PiB0cnVlLAogICAgJ2ZpbGVtYW5hZ2VyX3VwbG9hZF9maWxlcycgPT4gdHJ1ZSwKICAgICdmaWxlbWFuYWdlcl9yZW5hbWVfZmlsZXMnID0+IHRydWUsCiAgICAnZmlsZW1hbmFnZXJfcmVuYW1lX2ZvbGRlcnMnID0+IHRydWUsCiAgICAnZmlsZW1hbmFnZXJfZHVwbGljYXRlX2ZpbGVzJyA9PiB0cnVlLAogICAgJ2ZpbGVtYW5hZ2VyX2NvcHlfY3V0X2ZpbGVzJyA9PiB0cnVlLAogICAgJ2ZpbGVtYW5hZ2VyX2NvcHlfY3V0X2RpcnMnID0+IHRydWUsCiAgICAnZmlsZW1hbmFnZXJfY2htb2RfZmlsZXMnID0+IGZhbHNlLAogICAgJ2ZpbGVtYW5hZ2VyX2NobW9kX2RpcnMnID0+IGZhbHNlLAogICAgJ2ZpbGVtYW5hZ2VyX3ByZXZpZXdfdGV4dF9maWxlcycgPT4gdHJ1ZSwKICAgICdmaWxlbWFuYWdlcl9jcmVhdGVfdGV4dF9maWxlcycgPT4gZmFsc2UsCiAgICAnZmlsZW1hbmFnZXJfZWRpdF90ZXh0X2ZpbGVzJyA9PiBmYWxzZSwKICAgICdmaWxlbWFuYWdlcl9pbWFnZV9yZXNpemluZycgPT4gZmFsc2UsCiAgICAnZmlsZW1hbmFnZXJfaW1hZ2VfcmVzaXppbmdfd2lkdGgnID0+IDAsCiAgICAnZmlsZW1hbmFnZXJfaW1hZ2VfcmVzaXppbmdfaGVpZ2h0JyA9PiAwLAogICAgJ2ZpbGVtYW5hZ2VyX3R1aV9hY3RpdmUnID0+IDEsCgogICAgJ2VuYWJsZV91c2VyX3RlbXBsYXRlcycgPT4gZmFsc2UsCgogICAgLy8gQ1NTIGRlc2lnbgogICAgJ2lkX2Rlc2lnbicgPT4gMCwKICAgICdsaW5rX2NsYXNzZXMnID0+ICcnLAogICAgJ2ltYWdlX2NsYXNzZXMnID0+ICcnLAogICAgJ3N0eWxlX2Zvcm1hdHMnID0+ICcnLAoKICAgIC8vIEVYVFJBIENPTkZJRwogICAgJ2V4dHJhX2pzJyA9PiAicGFzdGVfYXNfdGV4dDogdHJ1ZSxcbmltYWdlX2NhcHRpb246IHRydWUiLAogICAgJ2V4dGVybmFsX21vZHVsZXMnID0+IGZhbHNlLAogICAgJ2V4dGVybmFsX21vZHVsZXNfc2hvd19tZW51dGV4dCcgPT4gdHJ1ZSwKCiAgICAnZm9yY2VkX3Jvb3RfYmxvY2snID0+IDEsCiAgICAncmVsYXRpdmVfdXJscycgPT4gMSwKICAgICdpbWFnZV9hZHZ0YWInID0+IDAsCgogICAgLy8gQ1NTIGZpbGVzCiAgICAnY3NzX2ZpbGVzJyA9PiAnJywKCiAgICAvLyBUZW1wbGF0ZXMgZmlsZXMKICAgICd1c2VyX3RlbXBsYXRlc19maWxlc19kaXInID0+ICcnLAogICk7CgogIHB1YmxpYyAkdXNlcmdyb3Vwc19pZHMgPSBhcnJheSgpOwogIHB1YmxpYyAkdXNlcmdyb3VwcyA9IGFycmF5KCk7IC8vIEdyb3VwcyBvYmpzIGlmIGxvYWRlZCAoc2VlIHNlbGY6OmxvYWRfZ3JvdXBzX2RhdGEoKQoKCiAgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCiAgLyogQXNzaWduIGRlZmF1bHQgZmllbGRzIG9yIGxvYWQgcHJvZmlsZSBmcm9tIGRhdGFiYXNlICovCiAgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCiAgLyogJGlkX3Byb2ZpbGUgPSAoaW50KSBJRCBvZiB0aGUgcHJvZmlsZSB0byBsb2FkLCBmYWxzZSBpZiBuZXcgcHJvZmlsZQogICAgICRkb19sb2FkID0gKGJvb2wpIElmIElEIGlzIHByb3ZpZGVuLCBkZXRlcm1pbmUgaWYgd2Ugc2hvdWxkIGxvYWQgdGhlIGVudGlyZSBwcm9maWxlIGZyb20gREIgKi8KICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGlkX3Byb2ZpbGUgPSBmYWxzZSwgJGRvX2xvYWQ9dHJ1ZSkKICB7CiAgICBpZiAoJGlkX3Byb2ZpbGUpCiAgICB7CiAgICAgIGlmICgkZG9fbG9hZCkKICAgICAgICByZXR1cm4gJHRoaXMtPmxvYWRfcHJvZmlsZV9mcm9tX2RiKCRpZF9wcm9maWxlKTsKICAgICAgZWxzZQogICAgICAgICR0aGlzLT5pZF9wcm9maWxlID0gKGludCkkaWRfcHJvZmlsZTsKICAgIH0KICAgIGVsc2UKICAgICAgcmV0dXJuICR0aGlzLT5sb2FkX3Byb2ZpbGVfZnJvbV9hcnJheSgkdGhpcy0+X2ZsZHMpOwoKICAgIHJldHVybiB0cnVlOwogIH0KCgogIC8vIENsb25lCiAgcHVibGljIGZ1bmN0aW9uIF9fY2xvbmUoKQogIHsKICAgICRtb2QgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ1RpbnlNQ0UnKTsKCiAgICAkdGhpcy0+aWRfcHJvZmlsZSA9IGZhbHNlOwogICAgJHRoaXMtPm5hbWUgPSAkdGhpcy0+bmFtZSAuICcgKCcgLiAkbW9kLT5MYW5nKCdjb3B5JykgLiAnKSc7CiAgICAkdGhpcy0+dXNlcmdyb3Vwc19pZHMgPSBhcnJheSgpOwogICAgJHRoaXMtPnVzZXJncm91cHMgPSBhcnJheSgpOwogIH0KCgogIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwogIC8qIExvYWQgcHJvZmlsZSBmcm9tIGFycmF5ICovCiAgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCiAgcHVibGljIGZ1bmN0aW9uIGxvYWRfcHJvZmlsZV9mcm9tX2FycmF5KCRwcm9maWxlX2FycmF5ID0gYXJyYXkoKSkKICB7CiAgICBpZiAoZW1wdHkoJHByb2ZpbGVfYXJyYXkpKSByZXR1cm4gZmFsc2U7CgogICAgLy8gRGVmYXVsdCBlbXB0eSB2YWx1ZSAtIGlmIGV4dGVybmFsIG1vZHVsZXMgYXJlIGVuYWJsZWQsIGl0IHdpbGwgYmUgbG9hZGVkLCBpZiBub3QgaXQgc3RheXMgZW1wdHkKICAgICR0aGlzLT5leHRlcm5hbF9tb2R1bGVzID0gJyc7CgogICAgZm9yZWFjaCAoJHByb2ZpbGVfYXJyYXkgYXMgJGZsZF9uYW1lID0+ICRmbGRfdmFsdWUpIHsKICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJGZsZF9uYW1lLCAkdGhpcy0+X2ZsZHMpKQogICAgICB7CiAgICAgICAgLy8gU3RyaW5nIHRvIGFycmF5CiAgICAgICAgaWYgKCgkZmxkX25hbWUgPT0gJ2V4dGVybmFsX21vZHVsZXMnKSAmJiAhaXNfYXJyYXkoJGZsZF92YWx1ZSkpCiAgICAgICAgewogICAgICAgICAgaWYgKCFlbXB0eSgkZmxkX3ZhbHVlKSkKICAgICAgICAgIHsKICAgICAgICAgICAgJGZsZF92YWx1ZSA9IGV4cGxvZGUoJywnLCAkZmxkX3ZhbHVlKTsKICAgICAgICAgICAgJGZsZF92YWx1ZSA9IGFycmF5X21hcCgndHJpbScsICRmbGRfdmFsdWUpOwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPiRmbGRfbmFtZSA9ICRmbGRfdmFsdWU7CiAgICAgIH0KICAgIH0KCiAgICAvLyBVc2VyZ3JvdXBzID8KICAgIGlmIChpc3NldCgkcHJvZmlsZV9hcnJheVsndXNlcmdyb3VwcyddKSBhbmQgIWVtcHR5KCRwcm9maWxlX2FycmF5Wyd1c2VyZ3JvdXBzJ10pKQogICAgICAkdGhpcy0+dXNlcmdyb3Vwc19pZHMgPSAkcHJvZmlsZV9hcnJheVsndXNlcmdyb3VwcyddOwoKICAgIHJldHVybiB0cnVlOwogIH0KCgoKICAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KICAvKiBMb2FkIHByb2ZpbGUgZnJvbSBkYiA6IHJldHJpZXZlIGZyb20gZGIgYW5kIHB1dCBpbiBhbiBhcnJheSAqLwogIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwogIC8qICRpZF9wcm9maWxlID0gdGhlIElEIG9mIHRoZSBwcm9maWxlIHRvIGxvYWQgKi8KICBwdWJsaWMgZnVuY3Rpb24gbG9hZF9wcm9maWxlX2Zyb21fZGIoJGlkX3Byb2ZpbGUpCiAgewogICAgaWYgKCEkaWRfcHJvZmlsZSkgcmV0dXJuIGZhbHNlOwoKICAgICRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcuQ01TX0RCX1BSRUZJWC5UaW55TUNFOjpUSU5ZTUNFX1BST0ZJTEVTX1RBQkxFLicgV0hFUkUgaWRfcHJvZmlsZT0/JzsKICAgICRwcm9maWxlX2FycmF5ID0gY21zbXMoKS0+R2V0RGIoKS0+R2V0Um93KCRxdWVyeSwgYXJyYXkoJGlkX3Byb2ZpbGUpKTsKCiAgICBpZiAoISRwcm9maWxlX2FycmF5KSByZXR1cm4gZmFsc2U7CgogICAgLy8gTG9hZCB0aGUgdXNlcnMgZ3JvdXBzCiAgICAkcHJvZmlsZV9hcnJheVsndXNlcmdyb3VwcyddID0gdGlueW1jZV91dGlsczo6bG9hZF9ncm91cHNfZnJvbV9wcm9maWxlKCRpZF9wcm9maWxlKTsKCiAgICByZXR1cm4gJHRoaXMtPmxvYWRfcHJvZmlsZV9mcm9tX2FycmF5KCRwcm9maWxlX2FycmF5KTsKICB9CgoKCgogIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwogIC8qIExvYWQgdXNlciBncm91cHMgZGF0YS9uYW1lcyAqLwogIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwogIC8qICRncm91cHNfYXJyYXkgOiBhbiBhcnJheSBvZiBpZCAvIGdyb3VwcyBvYmpzIGZyb20gdGhlIENNUyAtIHVzZWZ1bCB0byBub3QgbG9hZCBpdCBzZXZlcmFsIHRpbWVzIC0gZm9yIGV4YW1wbGUsIGZvciB0aGUgbGlzdCBvZiBwcm9maWxlcyAqLwogIHB1YmxpYyBmdW5jdGlvbiBsb2FkX2dyb3Vwc19kYXRhKCRncm91cHNfb2Jqcz1mYWxzZSkKICB7CiAgICBpZiAoIWlzX2FycmF5KCR0aGlzLT51c2VyZ3JvdXBzX2lkcykpCiAgICAgIHJldHVybiBmYWxzZTsKCiAgICBpZiAoISRncm91cHNfb2JqcykgLy9Mb2FkIHRoZSBncm91cHMgZnJvbSB0aGUgQ01TCiAgICAgICRncm91cHNfb2JqcyA9IHRpbnltY2VfdXRpbHM6OmdldF91c2VyX2dyb3VwcygpOwoKICAgIGZvcmVhY2ggKCR0aGlzLT51c2VyZ3JvdXBzX2lkcyBhcyAkZ3JvdXBfaWQpCiAgICAgICR0aGlzLT51c2VyZ3JvdXBzWyRncm91cF9pZF0gPSAkZ3JvdXBzX29ianNbJGdyb3VwX2lkXTsKCiAgICByZXR1cm4gdHJ1ZTsKICB9CgoKCiAgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCiAgLyogU2F2ZSBwcm9maWxlIHRvIERCICovCiAgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCiAgcHVibGljIGZ1bmN0aW9uIHNhdmUoKQogIHsKICAgIGlmICgkdGhpcy0+aWRfcHJvZmlsZSkgLy8gRWRpdAogICAgICAkdGhpcy0+ZGVsZXRlX2Zyb21fZGIoKTsgLy8gRGVsZXRlIGJlZm9yZSByZS1hZGRpbmcgaXQKCiAgICAkcXVlcnkgPSAnSU5TRVJUIElOVE8gJy5DTVNfREJfUFJFRklYLlRpbnlNQ0U6OlRJTllNQ0VfUFJPRklMRVNfVEFCTEUuJyAnOwoKICAgICRkYl9mbGRzID0gYXJyYXlfa2V5cygkdGhpcy0+X2ZsZHMpOwoKICAgIC8vIEdlbmVyYXRlIHZhbHVlcyBmb3IgdGhlIHF1ZXJ5CiAgICAkcXVlcnlfdmFsdWVzID0gYXJyYXkoKTsKICAgIGZvcmVhY2ggKCRkYl9mbGRzIGFzICRmbGQpCiAgICB7CiAgICAgIC8vIEFycmF5IG9yIHN0cmluZyA/CiAgICAgIGlmICghaXNfYXJyYXkoJHRoaXMtPiRmbGQpKQogICAgICAgICRxdWVyeV92YWx1ZXNbJGZsZF0gPSAkdGhpcy0+JGZsZDsKICAgICAgZWxzZQogICAgICB7CiAgICAgICAgaWYgKCFlbXB0eSgkdGhpcy0+JGZsZCkpCiAgICAgICAgICAkcXVlcnlfdmFsdWVzWyRmbGRdID0gaW1wbG9kZSgnLCcsICR0aGlzLT4kZmxkKTsKICAgICAgICBlbHNlCiAgICAgICAgICAkcXVlcnlfdmFsdWVzWyRmbGRdID0gJyc7IC8vIEVtcHR5IGFycmF5LCB3ZSBkb24ndCB3YW50IHRvIHN0b3JlIGEgc2ltcGxlIGNvbW1hCiAgICAgIH0KICAgICAgJHF1ZXJ5X21hc2tbXSA9ICc/JzsgLy8gVGhpcyBpcyBmb3IgdGhlICg/LD8sPykgbWFzayBmb3IgdGhlIHF1ZXJ5CiAgICB9CgogICAgJHF1ZXJ5IC49ICcoJyAuIGltcGxvZGUoJywnLCAkZGJfZmxkcykgLiAnKSAnOwogICAgJHF1ZXJ5IC49ICdWQUxVRVMgKCcuaW1wbG9kZSgnLCcsICRxdWVyeV9tYXNrKS4nKSc7CgogICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKCiAgICBpZiAoISRkYi0+RXhlY3V0ZSgkcXVlcnksICRxdWVyeV92YWx1ZXMpKQogICAgICByZXR1cm4gZmFsc2U7CgoKICAgIGlmICghJHRoaXMtPmlkX3Byb2ZpbGUpCiAgICAgICR0aGlzLT5pZF9wcm9maWxlID0gJGRiLT5JbnNlcnRfSUQoKTsKCiAgICAvLyBTYXZlIGdyb3VwcwogICAgaWYgKCFlbXB0eSgkdGhpcy0+dXNlcmdyb3Vwc19pZHMpKQogICAgICB0aW55bWNlX3V0aWxzOjphZGRfZ3JvdXBzX3RvX3Byb2ZpbGUoJHRoaXMtPmlkX3Byb2ZpbGUsICR0aGlzLT51c2VyZ3JvdXBzX2lkcyk7CgogICAgcmV0dXJuIHRydWU7CiAgfQoKCgogIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwogIC8qIFJlbW92ZSBwcm9maWxlIGZyb20gREIgKi8KICAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KICAvKiAkaWRfcHJvZmlsZSAoaW50KSB0aGUgcHJvZmlsZSBpZCAqLwogIHB1YmxpYyBmdW5jdGlvbiBkZWxldGVfZnJvbV9kYigpCiAgewogICAgaWYgKCFpc3NldCgkdGhpcy0+aWRfcHJvZmlsZSkpIHJldHVybiBmYWxzZTsKCiAgICBpZiAodGlueW1jZV91dGlsczo6ZGVsZXRlX3Byb2ZpbGVncm91cHNfZnJvbV9wcm9maWxlKCR0aGlzLT5pZF9wcm9maWxlKSkKICAgIHsKICAgICAgJHF1ZXJ5ID0gJ0RFTEVURSBGUk9NICcuQ01TX0RCX1BSRUZJWC5UaW55TUNFOjpUSU5ZTUNFX1BST0ZJTEVTX1RBQkxFLicgV0hFUkUgaWRfcHJvZmlsZT0/JzsKICAgICAgcmV0dXJuIChjbXNtcygpLT5HZXREYigpLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHRoaXMtPmlkX3Byb2ZpbGUpKSk7CiAgICB9CiAgfQoKCgoKCiAgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCiAgLyogR2VuZXJhdGUgY29uZmlnIDogcmV0dXJuIHRoZSBKUyBzdHJpbmcgKi8KICAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KICAvKiAkZGV2X21vZGUgPSBpZiB0cnVlLCBsb2FkIGZyb20gdGhlIHRlbXBsYXRlcy9vcmlnX2pzX3RlbXBsYXRlLnRwbCBmaWxlIGluc3RlYWQgb2YgdGhlIERlc2lnbk1hbmFnZXIgLSBvbmx5IGZvciBkZXZlbG9wbWVudCBwdXJwb3NlICovCiAgcHVibGljIGZ1bmN0aW9uIGdldF9qc19jb25maWcoJGxhbmd1YWdlLCAkc2VsZWN0b3IgPSBudWxsLCAkY3NzbmFtZSA9IG51bGwpCiAgewogICAgJG1vZCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnVGlueU1DRScpOwogICAgJHNtYXJ0eSA9IGNtc21zKCktPkdldFNtYXJ0eSgpOwoKICAgIC8vIEZST00gTVQKICAgICRhamF4X3VybCA9IGZ1bmN0aW9uKCR1cmwpIHsKICAgICAgICByZXR1cm4gc3RyX3JlcGxhY2UoJyZhbXA7JywnJicsJHVybCkuJyZzaG93dGVtcGxhdGU9ZmFsc2UnOwogICAgfTsKCiAgICAvLyBMb2FkIHRoZSB0ZW1wbGF0ZQogICAgaWYgKCR0aGlzLT5pZF90ZW1wbGF0ZSA+IDApCiAgICB7CiAgICAgIHRyeSB7CiAgICAgICAgJHRwbCA9IENtc0xheW91dFRlbXBsYXRlOjpsb2FkKCR0aGlzLT5pZF90ZW1wbGF0ZSk7CiAgICAgICAgJHRwbF9uYW1lID0gJHRwbC0+Z2V0X25hbWUoKTsKICAgICAgfQogICAgICBjYXRjaCggRXhjZXB0aW9uICRlICkgewogICAgICAgIGlmICghaXNzZXQoJHRwbCkpCiAgICAgICAgICAkdGhpcy0+aWRfdGVtcGxhdGUgPSAtMTsKICAgICAgfQogICAgfQogICAgZWxzZWlmICgkdGhpcy0+aWRfdGVtcGxhdGUgPT0gMCkKICAgIHsKICAgICAgJHRwbCA9IENtc0xheW91dFRlbXBsYXRlOjpsb2FkX2RmbHRfYnlfdHlwZSgnVGlueU1DRTo6anMnKTsgLy8gREVGQVVMVCBGUk9NIERFU0lHTiBNQU5BR0VSCiAgICAgICR0cGxfbmFtZSA9ICR0cGwtPmdldF9uYW1lKCk7CiAgICB9CgogICAgaWYgKCR0aGlzLT5pZF90ZW1wbGF0ZSA9PSAtMSkKICAgICAgJHRwbF9uYW1lID0gJ29yaWdfanNfdGVtcGxhdGUudHBsJzsKCiAgICAkdHBsID0gJHNtYXJ0eS0+Q3JlYXRlVGVtcGxhdGUoJG1vZC0+R2V0VGVtcGxhdGVSZXNvdXJjZSgkdHBsX25hbWUpLCBudWxsLCBudWxsLCAkc21hcnR5KTsKICAgIC8vIEVuZCB0ZW1wbGF0ZSBsb2FkaW5nCgoKICAgICRhc3NpZ25bJ1RpbnlNQ0UnXSA9ICRtb2Q7CiAgICAkYXNzaWduWydwcm9maWxlJ10gPSAkdGhpczsKICAgICRhc3NpZ25bJ2xhbmd1YWdlJ10gPSAkbGFuZ3VhZ2U7CgogICAgaWYgKCRzZWxlY3RvcikgewogICAgICAkYXNzaWduWydzZWxlY3RvciddID0gJHNlbGVjdG9yOwogICAgfQoKICAgIC8vIENTUwogICAgaWYgKCRjc3NuYW1lICYmICFlbXB0eSgkY3NzbmFtZSkpIHsKICAgICAgJGFzc2lnblsnY29udGVudF9jc3MnXSA9IHNtYXJ0eV9jbXNfZnVuY3Rpb25fY21zX3N0eWxlc2hlZXQoWydjc3NuYW1lJz0+JGNzc25hbWUsICdub2xpbmtzJz0+MV0sIGNtc21zKCktPkdldFNtYXJ0eSgpKTsKICAgIH0gZWxzZWlmICgkdGhpcy0+aWRfZGVzaWduID4gMCkgewogICAgICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ3NtYXJ0eV9jbXNfZnVuY3Rpb25fY21zX3N0eWxlc2hlZXQnKSkgewogICAgICAgICAgICAkYXNzaWduWydjb250ZW50X2NzcyddID0gc21hcnR5X2Ntc19mdW5jdGlvbl9jbXNfc3R5bGVzaGVldChbJ2Rlc2lnbmlkJz0+JHRoaXMtPmlkX2Rlc2lnbiwgJ25vbGlua3MnPT4xXSwgY21zbXMoKS0+R2V0U21hcnR5KCkpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRhc3NpZ25bJ2NvbnRlbnRfY3NzJ10gPSAkbW9kLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YSgne2Ntc19zdHlsZXNoZWV0IGRlc2lnbmlkPScgLiAkdGhpcy0+aWRfZGVzaWduIC4gJyBub2xpbmtzPTF9Jyk7CiAgICAgICAgfQogICAgfSBlbHNlaWYgKCh2ZXJzaW9uX2NvbXBhcmUoQ01TX1ZFUlNJT04sICcyLjIuOTknKSA+IDApICYmICR0aGlzLT5jc3NfZmlsZXMgIT0gJycpIHsKICAgICAgICAvLyBDTVNNUyAyLjMrCiAgICAgICAgJGNvbWJpbmVyID0gY21zbXMoKS0+Z2V0X3N0eWxlc2hlZXRfbWFuYWdlcigpOwogICAgICAgIGZvcmVhY2ggKGV4cGxvZGUoIlxuIiwgJHRoaXMtPmNzc19maWxlcykgYXMgJGZpbGVQYXRoKSB7CiAgICAgICAgICAgICRjb21iaW5lci0+cXVldWUoY21zX2pvaW5fcGF0aChDTVNfUk9PVF9QQVRILCB0cmltKCRmaWxlUGF0aCkpLCAxKTsKICAgICAgICB9CiAgICAgICAgJGVudHJvcHkgPSBzaGExKF9fRklMRV9fLmpzb25fZW5jb2RlKCR0aGlzKSk7CiAgICAgICAgJGNvbmZpZyA9IFxjbXNfY29uZmlnOjpnZXRfaW5zdGFuY2UoKTsKICAgICAgICAkZmlsZW5hbWUgPSAkY29tYmluZXItPnJlbmRlcigkY29uZmlnWydjc3NfcGF0aCddLCAkZW50cm9weSk7CiAgICAgICAgJGFzc2lnblsnY29udGVudF9jc3MnXSA9ICRjb25maWdbJ2Nzc191cmwnXSAuICcvJyAuICRmaWxlbmFtZTsKICAgIH0KCgogICAgLy8gU1RZTEVTIEZPUk1BVFMKICAgIGlmICghZW1wdHkoJHRoaXMtPnN0eWxlX2Zvcm1hdHMpKQogICAgewogICAgICAkc3R5bGVzX3JlcyA9IGFycmF5KCk7CiAgICAgICRzdHlsZXMgPSBleHBsb2RlKFBIUF9FT0wsICR0aGlzLT5zdHlsZV9mb3JtYXRzKTsKCiAgICAgIGZvcmVhY2ggKCRzdHlsZXMgYXMgJHN0eWxlX2Zvcm1hdCkKICAgICAgewogICAgICAgICRzdHlsZXNfcmVzW10gPSAkc3R5bGVfZm9ybWF0OwogICAgICB9CiAgICAgICRhc3NpZ25bJ3N0eWxlX2Zvcm1hdHMnXSA9ICRzdHlsZXNfcmVzOwogICAgfQoKICAgIC8vIExJTksgQ0xBU1NFUwogICAgaWYgKCFlbXB0eSgkdGhpcy0+bGlua19jbGFzc2VzKSkKICAgIHsKICAgICAgJGNsYXNzZXNfcmVzID0gYXJyYXkoJG1vZC0+TGFuZygnbm9uZScpID0+ICcnKTsKICAgICAgJGNsYXNzZXMgPSBleHBsb2RlKFBIUF9FT0wsICR0aGlzLT5saW5rX2NsYXNzZXMpOwoKICAgICAgZm9yZWFjaCAoJGNsYXNzZXMgYXMgJGNsYXNzKQogICAgICB7CiAgICAgICAgbGlzdCgkY2xhc3NfdGl0bGUsICRjbGFzc19uYW1lcykgPSBleHBsb2RlKCc9JywgJGNsYXNzKTsKICAgICAgICAkY2xhc3Nlc19yZXNbdHJpbSgkY2xhc3NfdGl0bGUpXSA9ICRjbGFzc19uYW1lczsKICAgICAgfQogICAgICAkYXNzaWduWydsaW5rX2NsYXNzZXMnXSA9ICRjbGFzc2VzX3JlczsKICAgIH0KCiAgICAvLyBJTUFHRSBDTEFTU0VTCiAgICBpZiAoIWVtcHR5KCR0aGlzLT5pbWFnZV9jbGFzc2VzKSkKICAgIHsKICAgICAgJGNsYXNzZXNfcmVzID0gYXJyYXkoJG1vZC0+TGFuZygnbm9uZScpID0+ICcnKTsKICAgICAgJGNsYXNzZXMgPSBleHBsb2RlKFBIUF9FT0wsICR0aGlzLT5pbWFnZV9jbGFzc2VzKTsKCiAgICAgIGZvcmVhY2ggKCRjbGFzc2VzIGFzICRjbGFzcykKICAgICAgewogICAgICAgIGxpc3QoJGNsYXNzX3RpdGxlLCAkY2xhc3NfbmFtZXMpID0gZXhwbG9kZSgnPScsICRjbGFzcyk7CiAgICAgICAgJGNsYXNzZXNfcmVzW3RyaW0oJGNsYXNzX3RpdGxlKV0gPSAkY2xhc3NfbmFtZXM7CiAgICAgIH0KICAgICAgJGFzc2lnblsnaW1hZ2VfY2xhc3NlcyddID0gJGNsYXNzZXNfcmVzOwogICAgfQoKICAgIC8vIExvYWQgdGhlIGNtc21zX2xpbmtlciBwbHVnaW4KICAgICRhc3NpZ25bJ2VuYWJsZV9saW5rZXInXSA9IDA7CiAgICBpZiAoIWNtc21zKCktPmlzX2Zyb250ZW5kX3JlcXVlc3QoKSAmJiAkdGhpcy0+ZW5hYmxlX2xpbmtlcikKICAgIHsKICAgICAgJGFzc2lnblsnZW5hYmxlX2xpbmtlciddID0gMTsKCiAgICAgICR1cmwgPSAkbW9kLT5jcmVhdGVfdXJsKCdtMV8nLCdsaW5rZXInKTsKICAgICAgJGFzc2lnblsnbGlua2VyX3VybCddID0gJGFqYXhfdXJsKCR1cmwpOwogICAgICAkdXJsID0gJG1vZC0+Y3JlYXRlX3VybCgnbTFfJywnYWpheF9nZXRwYWdlcycpOwogICAgICAkYXNzaWduWydnZXRwYWdlc191cmwnXSA9ICRhamF4X3VybCgkdXJsKTsKICAgIH0KCiAgICAvLyBMb2FkIHRoZSBmaWxlIG1hbmFnZXIgPwogICAgaWYgKHRpbnltY2VfdXRpbHM6OmNhbl91c2VyX3VzZV9maWxlbWFuYWdlcigkdGhpcykpCiAgICB7CiAgICAgICRhc3NpZ25bJ2Nhbl91c2VfZmlsZW1hbmFnZXInXSA9IDE7CgogICAgICAvLyBHZXQgdGhlIGFjY2VzcyBrZXkKICAgICAgJHNhbHQgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdmaWxlbWFuYWdlcl9zYWx0Jyk7CiAgICAgICR1c2VyaWQgPSBnZXRfdXNlcmlkKCk7CiAgICAgICRhY2Nlc3Nfa2V5ID0gbWQ1KCR1c2VyaWQuJHNhbHQpOwogICAgICAkYXNzaWduWydhY2Nlc3Nfa2V5J10gPSAkYWNjZXNzX2tleTsKICAgIH0KCiAgICAvLyBMb2FkIHVzZXIgdGVtcGxhdGVzID8KICAgIGlmICgkdGhpcy0+ZW5hYmxlX3VzZXJfdGVtcGxhdGVzKQogICAgewogICAgICAkdXNlcl90ZW1wbGF0ZXMgPSB0aW55bWNlX3V0aWxzOjpsb2FkX3RlbXBsYXRlc19ieV90eXBlKCd1c2VydGVtcGxhdGUnKTsKICAgICAgaWYgKCFlbXB0eSgkdXNlcl90ZW1wbGF0ZXMpKSB7CiAgICAgICAgJGFzc2lnblsndXNlcl90ZW1wbGF0ZXMnXSA9ICR1c2VyX3RlbXBsYXRlczsKICAgICAgfQoKICAgICAgaWYgKCR0aGlzLT51c2VyX3RlbXBsYXRlc19maWxlc19kaXIgIT0gJycpIHsKICAgICAgICAvLyBMaXN0IHRoZSBmaWxlcwogICAgICAgICRmaWxlcyA9IGdsb2IoY21zX2pvaW5fcGF0aChDTVNfUk9PVF9QQVRILCAkdGhpcy0+dXNlcl90ZW1wbGF0ZXNfZmlsZXNfZGlyLCAnKi50cGwnKSk7CiAgICAgICAgaWYgKGNvdW50KCRmaWxlcykpIHsKICAgICAgICAgIGZvcmVhY2goJGZpbGVzIGFzICRmaWxlKSB7CiAgICAgICAgICAgICR0aXRsZSA9IGJhc2VuYW1lKCRmaWxlLCAnLnRwbCcpOwogICAgICAgICAgICAkYXNzaWduWyd1c2VyX3RlbXBsYXRlc19maWxlcyddWyR0aXRsZV0gPSBmaWxlX2dldF9jb250ZW50cygkZmlsZSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgLy8gVXNlIGN1c3RvbSBkcm9wZG93biA/CiAgICBpZiAoJHRoaXMtPmVuYWJsZV9jdXN0b21fZHJvcGRvd24gJiYgIWVtcHR5KCR0aGlzLT5jdXN0b21fZHJvcGRvd24pKQogICAgewogICAgICAkY3VzdG9tX2Ryb3Bkb3duID0gZXhwbG9kZSgiXG4iLCAkdGhpcy0+Y3VzdG9tX2Ryb3Bkb3duKTsKICAgICAgJGN1c3RvbV9kcm9wZG93bl9hcnJheSA9IGZhbHNlOwogICAgICAkaSA9IDA7CgogICAgICBmb3JlYWNoICgkY3VzdG9tX2Ryb3Bkb3duIGFzICRlbnRyeSkKICAgICAgewogICAgICAgIEBsaXN0KCRlbnRyeV90aXRsZSwgJGVudHJ5X3ZhbHVlMSwgJGVudHJ5X3ZhbHVlMikgPSBleHBsb2RlKCd8JywgJGVudHJ5KTsKICAgICAgICAkY3VzdG9tX2Ryb3Bkb3duX2FycmF5WyRpXVsndGl0bGUnXSA9ICRlbnRyeV90aXRsZTsKICAgICAgICAkY3VzdG9tX2Ryb3Bkb3duX2FycmF5WyRpXVsndmFsdWUxJ10gPSAkZW50cnlfdmFsdWUxOwogICAgICAgIGlmICghZW1wdHkoJGVudHJ5X3ZhbHVlMikpCiAgICAgICAgICAkY3VzdG9tX2Ryb3Bkb3duX2FycmF5WyRpXVsndmFsdWUyJ10gPSAkZW50cnlfdmFsdWUyOwoKICAgICAgICAkaSsrOwogICAgICB9CgogICAgICAkYXNzaWduWydjdXN0b21fZHJvcGRvd24nXSA9ICRjdXN0b21fZHJvcGRvd25fYXJyYXk7CiAgICB9CgogICAgLy8gRXh0ZXJuYWwgbW9kdWxlcwogICAgJGV4dGVybmFsX21vZHVsZXMgPSBmYWxzZTsKICAgIGlmICghZW1wdHkoJHRoaXMtPmV4dGVybmFsX21vZHVsZXMpKQogICAgewogICAgICBmb3JlYWNoICgkdGhpcy0+ZXh0ZXJuYWxfbW9kdWxlcyBhcyAkbW9kX25hbWUpCiAgICAgIHsKICAgICAgICAkZXh0X21vZCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgkbW9kX25hbWUpOwoKICAgICAgICBpZiAoJGV4dF9tb2QpCiAgICAgICAgewogICAgICAgICAgJGJ0bl9vYmogPSAkZXh0X21vZC0+R2V0V1lTSVdZR0J0bignVGlueU1DRScpOwoKICAgICAgICAgIGlmICgkYnRuX29iaikKICAgICAgICAgICAgJGV4dGVybmFsX21vZHVsZXNbJG1vZF9uYW1lXSA9ICRidG5fb2JqOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgJGFzc2lnblsnZXh0ZXJuYWxfbW9kdWxlcyddID0gJGV4dGVybmFsX21vZHVsZXM7CgogICAgJHRwbC0+YXNzaWduKCRhc3NpZ24pOwoKICAgIHJldHVybiAkdHBsLT5mZXRjaCgpOwogIH0KCgogIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwogIC8vIExvYWQgdGhlIGZpbGVtYW5hZ2VyIGNvbmZpZyBmb3IgcmVzcG9uc2l2ZWZpbGVtYW5hZ2VyCiAgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCiAgcHVibGljIGZ1bmN0aW9uIGdldF9maWxlbWFuYWdlcl9jb25maWcoJGZpbGVtYW5hZ2VyX2NvbmZpZykKICB7CiAgICAkbW9kID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdUaW55TUNFJyk7CgogICAgLy8gVVJMIHdpdGhvdXQgcHJvdG9jb2wgc2luY2UgMi4yCiAgICAkZmlsZW1hbmFnZXJfY29uZmlnWydiYXNlX3VybCddID0gJy8vJy4kX1NFUlZFUlsnSFRUUF9IT1NUJ107CgogICAgLy8gV2UgZG8gdGhpcyBmb3Igd2Vic2l0ZXMgdGhhdCBhcmUgaW4gYSBzdWJkaXJlY3RvcnkgKGllIHd3dy5teXdlYnNpdGUuY29tL2Ntc21zLykKICAgIC8vIEdldCBzdWJkaXIKICAgIGlmICh2ZXJzaW9uX2NvbXBhcmUoQ01TX1ZFUlNJT04sICcyLjIuOTknKSA+IDApIHsKICAgICAgICAvLyAyLjMrCiAgICAgICAgJGRpciA9ICcvYXNzZXRzLyc7CiAgICAgICAgLy8gUGF0aCBmcm9tIFJGTSB0byB1cGxvYWRzCiAgICAgICAgJGZpbGVtYW5hZ2VyX2NvbmZpZ1snY3VycmVudF9wYXRoJ10gPSAnLi4vLi4vLi4vLi4vLi4vdXBsb2Fkcy8nOwogICAgICAgICRmaWxlbWFuYWdlcl9jb25maWdbJ3RodW1ic19iYXNlX3BhdGgnXSA9ICcuLi8uLi8uLi8uLi8uLi90bXAvdGh1bWJzLyc7CiAgICB9IGVsc2UgewogICAgICAgICRkaXIgPSAnLyc7CiAgICAgICAgJGZpbGVtYW5hZ2VyX2NvbmZpZ1snY3VycmVudF9wYXRoJ10gPSAnLi4vLi4vLi4vLi4vdXBsb2Fkcy8nOwogICAgICAgICRmaWxlbWFuYWdlcl9jb25maWdbJ3RodW1ic19iYXNlX3BhdGgnXSA9ICcuLi8uLi8uLi8uLi90bXAvdGh1bWJzLyc7CiAgICB9CiAgICAkc3ViZGlyID0gc3RyX3JlcGxhY2UoJGRpciAuICdtb2R1bGVzL1RpbnlNQ0UvcmVzcG9uc2l2ZV9maWxlbWFuYWdlci9maWxlbWFuYWdlci9kaWFsb2cucGhwJywgJycsICRfU0VSVkVSWydQSFBfU0VMRiddKTsKICAgICRmaWxlbWFuYWdlcl9jb25maWdbJ3VwbG9hZF9kaXInXSA9ICRzdWJkaXIgLiAnL3VwbG9hZHMvJzsKICAgIAoKICAgIC8vIEFDQ0VTUyBLRVkKICAgICRzYWx0ID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnZmlsZW1hbmFnZXJfc2FsdCcpOwogICAgJHVzZXJpZCA9IGdldF91c2VyaWQoKTsKICAgICRhY2Nlc3Nfa2V5ID0gbWQ1KCR1c2VyaWQuJHNhbHQpOwogICAgJGZpbGVtYW5hZ2VyX2NvbmZpZ1snYWNjZXNzX2tleXMnXSA9IGFycmF5KCRhY2Nlc3Nfa2V5KTsKCiAgICAvLyBDT05GSUdVUkFUSU9OCiAgICAkZmlsZW1hbmFnZXJfb3B0aW9ucyA9IGFycmF5KAogICAgICAnZGVsZXRlX2ZpbGVzJywKICAgICAgJ2NyZWF0ZV9mb2xkZXJzJywKICAgICAgJ2RlbGV0ZV9mb2xkZXJzJywKICAgICAgJ3VwbG9hZF9maWxlcycsCiAgICAgICdyZW5hbWVfZmlsZXMnLAogICAgICAncmVuYW1lX2ZvbGRlcnMnLAogICAgICAnZHVwbGljYXRlX2ZpbGVzJywKICAgICAgJ2NvcHlfY3V0X2ZpbGVzJywKICAgICAgJ2NvcHlfY3V0X2RpcnMnLAogICAgICAnY2htb2RfZmlsZXMnLAogICAgICAnY2htb2RfZGlycycsCiAgICAgICdwcmV2aWV3X3RleHRfZmlsZXMnLAogICAgICAnZWRpdF90ZXh0X2ZpbGVzJywKICAgICAgJ2NyZWF0ZV90ZXh0X2ZpbGVzJywKICAgICAgJ3R1aV9hY3RpdmUnCiAgICApOwogICAgZm9yZWFjaCAoJGZpbGVtYW5hZ2VyX29wdGlvbnMgYXMgJG9wdCkgewogICAgICAkdmFyID0gImZpbGVtYW5hZ2VyXyIuJG9wdDsKICAgICAgJGZpbGVtYW5hZ2VyX2NvbmZpZ1skb3B0XSA9ICR0aGlzLT4kdmFyOwogICAgfQoKICAgIC8vIENvbmZpZ3VyYXRpb24gbmFtZSBlcnJvciBpbiBSRk0KICAgIC8vIGltYWdlX3Jlc2l6aW5nX3dpZHRoIHNob3VsZCBiZSBpbWFnZV9tYXhfd2lkdGgKICAgIC8vIHNhbWUgZm9yIGhlaWdodAogICAgLy8gYnIgIzExMzQ0CiAgICBpZiAoJHRoaXMtPmZpbGVtYW5hZ2VyX2ltYWdlX3Jlc2l6aW5nKQogICAgewogICAgICAkZmlsZW1hbmFnZXJfY29uZmlnWydpbWFnZV9tYXhfd2lkdGgnXSA9ICR0aGlzLT5maWxlbWFuYWdlcl9pbWFnZV9yZXNpemluZ193aWR0aDsKICAgICAgJGZpbGVtYW5hZ2VyX2NvbmZpZ1snaW1hZ2VfbWF4X2hlaWdodCddID0gJHRoaXMtPmZpbGVtYW5hZ2VyX2ltYWdlX3Jlc2l6aW5nX2hlaWdodDsKICAgIH0KCgogICAgLy8gTGFuZ3VhZ2UKICAgICRkZWZhdWx0X2Ntc19sYW5ndWFnZSA9IGNtc191c2VycHJlZnM6OmdldF9mb3JfdXNlcigkdXNlcmlkLCAnZGVmYXVsdF9jbXNfbGFuZ3VhZ2UnKTsKCiAgICBpZiAoIWVtcHR5KCRkZWZhdWx0X2Ntc19sYW5ndWFnZSkgJiYgKCRkZWZhdWx0X2Ntc19sYW5ndWFnZSAhPSAnZW5fVVMnKSAmJiAoJGRlZmF1bHRfY21zX2xhbmd1YWdlICE9ICdlbicpKSB7CiAgICAgICRmaWxlbWFuYWdlcl9jb25maWdbJ2RlZmF1bHRfbGFuZ3VhZ2UnXSA9ICRkZWZhdWx0X2Ntc19sYW5ndWFnZTsKICAgIH0gZWxzZSBpZiAoICgkZGVmYXVsdF9jbXNfbGFuZ3VhZ2UgPT0gJ2VuX1VTJykgfHwgKCRkZWZhdWx0X2Ntc19sYW5ndWFnZSA9PSAnZW4nKSApIHsKICAgICAgICAkZmlsZW1hbmFnZXJfY29uZmlnWydkZWZhdWx0X2xhbmd1YWdlJ10gPSAnZW5fRU4nOwogICAgfQoKICAgIHJldHVybiAkZmlsZW1hbmFnZXJfY29uZmlnOwogIH0KfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/class.tinymce_utils.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0NNUyAtIENNUyBNYWRlIFNpbXBsZQojKGMpMjAwNCBieSBUZWQgS3VscCAodGVkQGNtc21hZGVzaW1wbGUub3JnKQojVmlzaXQgb3VyIGhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKI1RoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiNpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyhhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKI1RoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKI01FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKI0dOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiNZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKI0ZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKIwoKY2xhc3MgdGlueW1jZV91dGlscwp7CiAgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCiAgLyogR2V0IHRoZSBtb2R1bGVzIHRoYXQgY2FuIGJlIGluY2x1ZGVkIGluIHRoZSBXWVNJV1lHICovCiAgLyogUmV0dXJucyBhbiBhcnJheSBvZiBtb2R1bGVzIG5hbWVzICovCiAgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfd3lzaXd5Z2l0ZW1zX21vZHVsZXMoKQogIHsKICAgICRtb2R1bGVzX3JlcyA9IGZhbHNlOwogICAgaWYgKHZlcnNpb25fY29tcGFyZShDTVNfVkVSU0lPTiwgJzIuMi45OScpID4gMCkgewogICAgICAvLyBDTVNNUzIuMyB3aXRoIG5hbWVzcGFjZQogICAgICAkbW9kdWxlcyA9IFxDTVNNU1xpbnRlcm5hbFxtb2R1bGVfbWV0YTo6Z2V0X2luc3RhbmNlKCktPm1vZHVsZV9saXN0X2J5X2NhcGFiaWxpdHkoJ1dZU0lXWUdJdGVtcycpOwogICAgfSBlbHNlIHsKICAgICAgJG1vZHVsZXMgPSBtb2R1bGVfbWV0YTo6Z2V0X2luc3RhbmNlKCktPm1vZHVsZV9saXN0X2J5X2NhcGFiaWxpdHkoJ1dZU0lXWUdJdGVtcycpOwogICAgfQoKICAgIGlmIChjb3VudCgkbW9kdWxlcykgPT0gMCkgcmV0dXJuICRtb2R1bGVzX3JlczsKCiAgICBmb3JlYWNoICgkbW9kdWxlcyBhcyAkbW9kdWxlX25hbWUpCiAgICB7CiAgICAgICRtb2QgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJG1vZHVsZV9uYW1lKTsKICAgICAgaWYgKCRtb2QpCiAgICAgIHsKICAgICAgICAkbW9kdWxlc19yZXNbJG1vZHVsZV9uYW1lXVsnZnJpZW5kbHluYW1lJ10gPSAkbW9kLT5HZXRGcmllbmRseU5hbWUoKTsKICAgICAgICAkbW9kdWxlc19yZXNbJG1vZHVsZV9uYW1lXVsnYnV0dG9uX25hbWUnXSA9ICRtb2QtPkdldFdZU0lXWUdCdG5OYW1lKCk7CiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJG1vZHVsZXNfcmVzOwogIH0KCgoKICAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KICAvKiBSZXR1cm5zIHRoZSBiZXN0IHByb2ZpbGUgZm9yIHRoZSBjdXJyZW50IHVzZXIgKi8KICAvKiBSZXR1cm5zIGEgcHJvZmlsZSBvYmplY3QgKi8KICAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9iZXN0X3Byb2ZpbGUoKQogIHsKCiAgICAvLyBHZXQgdGhlIGN1cnJlbnQgdXNlciBncm91cHMKICAgIGlmIChjbXNtcygpLT5pc19mcm9udGVuZF9yZXF1ZXN0KCkpCiAgICAgICRjdXJyZW50X3VzZXJfZ3JvdXBzID0gYXJyYXkoLTEpOyAvLyBGcm9udGVuZAogICAgZWxzZQogICAgewogICAgICAvLyBCYWNrZW5kCiAgICAgICR1c2VyaWQgPSBnZXRfdXNlcmlkKGZhbHNlKTsKICAgICAgJGN1cnJlbnRfdXNlcl9ncm91cHMgPSBVc2VyT3BlcmF0aW9uczo6Z2V0X2luc3RhbmNlKCktPkdldE1lbWJlckdyb3VwcygkdXNlcmlkKTsKICAgIH0KCiAgICAkcXVlcnkgPSAnU0VMRUNUIHAuaWRfcHJvZmlsZSBGUk9NICcuQ01TX0RCX1BSRUZJWC5USU5ZTUNFOjpUSU5ZTUNFX1BST0ZJTEVTX1RBQkxFLicgcAogICAgSk9JTiAnLkNNU19EQl9QUkVGSVggLiBUSU5ZTUNFOjpUSU5ZTUNFX1BST0ZJTEVHUk9VUF9UQUJMRSAuICcgcGcgT04gKHAuaWRfcHJvZmlsZT1wZy5pZF9wcm9maWxlKSBXSEVSRSBpZF9ncm91cCBJTiAoJy5pbXBsb2RlKCcsJywgJGN1cnJlbnRfdXNlcl9ncm91cHMpLicpIE9SREVSIEJZIHAucHJpb3JpdHknOwoKICAgICRpZF9iZXN0X3Byb2ZpbGUgPSBjbXNtcygpLT5HZXREYigpLT5HZXRPbmUoJHF1ZXJ5KTsKCiAgICBpZiAoISRpZF9iZXN0X3Byb2ZpbGUpCiAgICB7CiAgICAgIC8vIEdldCB0aGUgZGVmYXVsdCBvbmUKICAgICAgJG1vZCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnVGlueU1DRScpOwogICAgICAkaWRfYmVzdF9wcm9maWxlID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnaWRfZGVmYXVsdF9wcm9maWxlJyk7CiAgICB9CgogICAgJGJlc3RfcHJvZmlsZSA9IG5ldyB0aW55bWNlX3Byb2ZpbGUoJGlkX2Jlc3RfcHJvZmlsZSk7CgogICAgcmV0dXJuKCRiZXN0X3Byb2ZpbGUpOwogIH0KCgogIC8qIENhbiB0aGUgY3VycmVudCB1c2VyIChiYWNrZW5kKSB1c2UgdGhlIGZpbGVtYW5hZ2VyID8gLSBVc2VkIGJ5IFJlc3BvbnNpdmVGaWxlTWFuYWdlciB0byBnaXZlIHRoZSBhY2Nlc3MsIG9yIG5vdCAqLwogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY2FuX3VzZXJfdXNlX2ZpbGVtYW5hZ2VyKCRwcm9maWxlKQogIHsKICAgIGlmIChjbXNtcygpLT5pc19mcm9udGVuZF9yZXF1ZXN0KCkpCiAgICAgIHJldHVybiBmYWxzZTsKCiAgICBpZiAoISRwcm9maWxlKQogICAgICByZXR1cm4gZmFsc2U7CgogICAgLy8gQ2hlY2sgaWYgdGhlIGN1cnJlbnQgbG9nZ2VkaW4gdXNlciBjYW4gdXNlIHRoZSBmaWxlbWFuYWdlcgogICAgJG1vZCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnVGlueU1DRScpOwoKICAgIGlmICghJG1vZC0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgRmlsZXMnKSkKICAgICAgcmV0dXJuIGZhbHNlOwoKICAgIGlmICghJHByb2ZpbGUtPmZpbGVtYW5hZ2VyX3VzZSkKICAgICAgcmV0dXJuIGZhbHNlOwoKICAgIHJldHVybiB0cnVlOwogIH0KCgoKCgogIC8qICRpZF9wcm9maWxlID0gdGhlIElEIG9mIHRoZSBwcm9maWxlIGZyb20gd2hpY2ggdGhlIGdyb3VwcyBoYXZlIHRvIGJlIGxvYWRlZCAqLwogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbG9hZF9ncm91cHNfZnJvbV9wcm9maWxlKCRpZF9wcm9maWxlKQogIHsKICAgICRxdWVyeSA9ICdTRUxFQ1QgaWRfZ3JvdXAgRlJPTSAnLkNNU19EQl9QUkVGSVguVGlueU1DRTo6VElOWU1DRV9QUk9GSUxFR1JPVVBfVEFCTEUuJyBXSEVSRSBpZF9wcm9maWxlPT8nOwogICAgJHVzZXJwcm9maWxlcyA9IGNtc21zKCktPkdldERiKCktPkdldENvbCgkcXVlcnksIGFycmF5KCRpZF9wcm9maWxlKSk7CgogICAgcmV0dXJuICR1c2VycHJvZmlsZXM7CiAgfQoKCiAgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCiAgLyogQWRkIGdyb3VwcyBpbiBEQiBmb3IgYSBwcm9maWxlICovCiAgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCiAgLyogJGlkX3Byb2ZpbGUgOiBpZCBwcm9maWxlIHdlIHdhbnQgdG8gbGluayBncm91cHMgdG8gKi8KICAvKiAkaWRfZ3JvdXBzIDogYXJyYXkgb2YgZ3JvdXBzLCBvciBzaW5nbGUgSUQgKi8KICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGFkZF9ncm91cHNfdG9fcHJvZmlsZSgkaWRfcHJvZmlsZSwgJGlkX2dyb3VwcykKICB7CiAgICBpZiAoISRpZF9ncm91cHMpIHJldHVybiBmYWxzZTsKCiAgICBpZiAoaXNfaW50KCRpZF9ncm91cHMpKQogICAgICAkaWRfZ3JvdXBzID0gYXJyYXkoKGludCkkaWRfZ3JvdXBzKTsKCgogICAgLy8gRmlyc3QgcmVtb3ZlIG90aGVyIGFzc29jaWF0aW9ucwogICAgaWYgKCFzZWxmOjpkZWxldGVfcHJvZmlsZWdyb3Vwc19mcm9tX2lkZ3JvdXBzKCRpZF9ncm91cHMpKSByZXR1cm4gZmFsc2U7CgoKICAgIC8vIEFuZCBpbnNlcnQgdG8gREIKICAgICRpbnNlcnRfcXVlcnkgPSAnSU5TRVJUIElOVE8gJy5DTVNfREJfUFJFRklYLlRpbnlNQ0U6OlRJTllNQ0VfUFJPRklMRUdST1VQX1RBQkxFLicgKGlkX3Byb2ZpbGUsIGlkX2dyb3VwKSBWQUxVRVMgKD8sPyknOwogICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKCiAgICBmb3JlYWNoICgkaWRfZ3JvdXBzIGFzICRpZF9ncm91cCkKICAgICAgaWYgKCEkZGItPkV4ZWN1dGUoJGluc2VydF9xdWVyeSwgYXJyYXkoJGlkX3Byb2ZpbGUsICRpZF9ncm91cCkpKQogICAgICAgIHJldHVybiBmYWxzZTsKCiAgICByZXR1cm4gdHJ1ZTsKICB9CgoKCiAgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCiAgLyogRGVsZXRlIGdyb3VwcyBmcm9tIERCIGZvciBhIHByb2ZpbGUgKi8KICAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KICAvKiAkaWRfcHJvZmlsZSA9IHRoZSBJRCBvZiB0aGUgcHJvZmlsZSBmcm9tIHdoaWNoIHRoZSBncm91cHMgaGF2ZSB0byBiZSBkZWxldGVkICovCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkZWxldGVfcHJvZmlsZWdyb3Vwc19mcm9tX3Byb2ZpbGUoJGlkX3Byb2ZpbGUpCiAgewogICAgJHF1ZXJ5ID0gJ0RFTEVURSBGUk9NICcuQ01TX0RCX1BSRUZJWC5UaW55TUNFOjpUSU5ZTUNFX1BST0ZJTEVHUk9VUF9UQUJMRS4nIFdIRVJFIGlkX3Byb2ZpbGU9Pyc7CiAgICByZXR1cm4gKGNtc21zKCktPkdldERiKCktPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaWRfcHJvZmlsZSkpKTsKICB9CgoKCiAgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCiAgLyogRGVsZXRlIHByb2ZpbGVncm91cHMgZnJvbSBJRCBhcnJheSAqLwogIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwogIC8qICRpZF9ncm91cHMgPSAoYXJyYXkpIGdyb3VwcyB0byBkZWxldGUgZnJvbSB0aGUgcHJvZmlsZWdyb3VwcyBhc3NvY2lhdGlvbnMgKi8KICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGRlbGV0ZV9wcm9maWxlZ3JvdXBzX2Zyb21faWRncm91cHMoJGlkX2dyb3VwcykKICB7CiAgICBpZiAoISRpZF9ncm91cHMpIHJldHVybiBmYWxzZTsKCiAgICAkcXVlcnkgPSAnREVMRVRFIEZST00gJy5DTVNfREJfUFJFRklYLlRpbnlNQ0U6OlRJTllNQ0VfUFJPRklMRUdST1VQX1RBQkxFLicgV0hFUkUgaWRfZ3JvdXAgSU4gKCcuaW1wbG9kZSgnLCcsJGlkX2dyb3VwcykuJyknOwogICAgcmV0dXJuIChjbXNtcygpLT5HZXREYigpLT5FeGVjdXRlKCRxdWVyeSkpOwogIH0KCgoKCgogIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwogIC8qIExvYWQgYWxsIHRoZSBwcm9maWxlcyBvYmplY3RzICovCiAgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfYWxsX3Byb2ZpbGVzX2Zvcl9hZG1pbl9saXN0KCkKICB7CiAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwoKICAgICRxdWVyeSA9ICdTRUxFQ1QgaWRfcHJvZmlsZSBGUk9NICcuQ01TX0RCX1BSRUZJWC5UaW55TUNFOjpUSU5ZTUNFX1BST0ZJTEVTX1RBQkxFLiAnIE9SREVSIEJZIHByaW9yaXR5JzsKICAgICRwcm9maWxlcyA9ICRkYi0+R2V0Q29sKCRxdWVyeSk7CgogICAgaWYgKCEkcHJvZmlsZXMpIHJldHVybiBmYWxzZTsKCiAgICAvLyBMb2FkIGFsbCB0aGUgdXNlciBncm91cHMgZnJvbSB0aGUgZ3JvdXBzIG1hbmFnZXIKICAgICRncm91cHNfYXJyYXkgPSBzZWxmOjpnZXRfdXNlcl9ncm91cHMoKTsKCiAgICAkcHJvZmlsZV9vYmpzID0gYXJyYXkoKTsKICAgIGZvcmVhY2ggKCRwcm9maWxlcyBhcyAkaWRfcHJvZmlsZSkKICAgIHsKICAgICAgJHByb2ZpbGVfb2JqID0gbmV3IHRpbnltY2VfcHJvZmlsZSgkaWRfcHJvZmlsZSk7CgogICAgICAvLyBMb2FkIHRoZSBhZG1pbiBncm91cHMgbmFtZXMKICAgICAgJHByb2ZpbGVfb2JqLT5sb2FkX2dyb3Vwc19kYXRhKCRncm91cHNfYXJyYXkpOwoKICAgICAgJHByb2ZpbGVfb2Jqc1tdID0gJHByb2ZpbGVfb2JqOwogICAgfQoKICAgIHJldHVybiAkcHJvZmlsZV9vYmpzOwogIH0KCgoKICAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KICAvKiBMb2FkIHRoZSBDTVMgdXNlciBncm91cHMgdG8gYW4gYXJyYXkgd2l0aCBJRCBhcyBrZXkgYW5kIHRoZSBncm91cCBhcyBvYmogKi8KICAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KICAvKiAkYWRkX2Zyb250ZW5kID0gY3JlYXRlIGEgc3BlY2lhbCBncm91cCB3aXRoIElEIC0xIHRvIGRlZmluZSBmcm9udGVuZCAqLwogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X3VzZXJfZ3JvdXBzKCRhZGRfZnJvbnRlbmQ9dHJ1ZSkKICB7CiAgICAvLyBMb2FkIHRoZSBncm91cE9wcyBjbGFzcwogICAgJGdPcHMgPSBjbXNtcygpLT5HZXRHcm91cE9wZXJhdGlvbnMoKTsKICAgICRncm91cHMgPSAkZ09wcy0+TG9hZEdyb3VwcygpOwogICAgJGdyb3Vwc19vYmpzID0gYXJyYXkoKTsKICAgIGZvcmVhY2ggKCRncm91cHMgYXMgJGdyb3VwKQogICAgICAkZ3JvdXBzX29ianNbJGdyb3VwLT5pZF0gPSAkZ3JvdXA7CgogICAgaWYgKCRhZGRfZnJvbnRlbmQpCiAgICB7CiAgICAgICRtb2QgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ1RpbnlNQ0UnKTsKICAgICAgJGZlX2dyb3VwID0gbmV3IHN0ZGNsYXNzOwogICAgICAkZmVfZ3JvdXAtPmlkID0gLTE7CiAgICAgICRmZV9ncm91cC0+bmFtZSA9ICRtb2QtPkxhbmcoJ2dyb3VwX2Zyb250ZW5kJyk7CiAgICAgICRmZV9ncm91cC0+YWN0aXZlID0gMTsKCiAgICAgICRncm91cHNfb2Jqc1stMV0gPSAkZmVfZ3JvdXA7CiAgICB9CgogICAgcmV0dXJuICRncm91cHNfb2JqczsKICB9CgoKCgogIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwogIC8qIExvYWQgdGhlIHRlbXBsYXRlcyBiYXNlZCBvbiB0eXBlICovCiAgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBsb2FkX3RlbXBsYXRlc19ieV90eXBlKCR0eXBlPSdqcycpCiAgewogICAgJHRwbFR5cGUgPSBDbXNMYXlvdXRUZW1wbGF0ZVR5cGU6OmxvYWQoJ1RpbnlNQ0U6OicuJHR5cGUpOwogICAgJHF1ZXJ5ID0gbmV3IENtc0xheW91dFRlbXBsYXRlUXVlcnkoJ3Q6Jy4kdHBsVHlwZS0+Z2V0X2lkKCkpOwogICAgJHRlbXBsYXRlcyA9ICRxdWVyeS0+R2V0TWF0Y2hlcygpOwoKICAgIHJldHVybiAkdGVtcGxhdGVzOwogIH0KCgoKCiAgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCiAgLyogQ2xlYXIgdGhlIEpTIGNhY2hlICovCiAgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjbGVhcl90aW55bWNlX2NhY2hlKCkKICB7CiAgICAkcGF0aCA9IFBVQkxJQ19DQUNIRV9MT0NBVElPTjsKCiAgICAkZmlsZXMgPSBnbG9iKCRwYXRoIC4gJy90aW55bWNlXyouanMnKTsKICAgIGlmIChpc19hcnJheSgkZmlsZXMpICYmIGNvdW50KCRmaWxlcykpCiAgICAgIGZvcmVhY2ggKCRmaWxlcyBhcyAkZmlsZSkKICAgICAgICB1bmxpbmsoJGZpbGUpOwogIH0KfQoKPz4K]]></data>
	</file>
	<file>
	  <filename>/lib/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/images/cmsmslink.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhFQAVAPeJAP2eNP2eM/yeNPyeNfOVMAkJCfucM/mbNPydM/6eMzMzM/WfP/6eMveeOvafPQMDA/KUMPaYMveZMv2eNfSWMfydNPefPffs3/z59PieOvieOfCuZu/Ts+3UuLx0R/idOPfr3/78+vWWMee3guq+jPeZM/fp2Pfp2/ueNvSXM/6dMe/TtPa7ev+eL++hSvPgy+iydP2aLPrz6+28hfDWuvv17v6dMuqvbPHUs/OVMfju4vTizvLImOqRQfyrUvbl0vGvZvz48/Tu59mQTPTj0PmaMv6eMQ4MCvudNP2zYO+tYvCmUvWgQP6dMPqcNPKgRO7SsvefPPWdOvOnUvbq3fGfRO+nVvSfQVdXV+y/jvqeN/369/LeyPSVMPyrT/DKn/DKoPKoVPz49Oy0dvO8fwwMDOzHnvLUs+6tZP79/Dk5OQkGAvmgPBILBO7Inu/Ss/+eMfigPe+pWu2yceq5gfyfNvmaMfC5fP+dMfq8ePCvaPyfN/qcM/DdyPCmVPueNfudNfekR/PfyvXm1fWXMfOdPcDAwP///wAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAIkALAAAAAAVABUAAAjpABMJHEiwoMGDBlmQQcgwUZg/WjY0NDgFT4QiLfwwBJMIh8AZTQbkEJGhwRuDNwABAIBATyImDFA0gIHQDQIAESAYCHAFCZsFhZYA+WLQAoMAdlJ8EBCgxIEJABKosDGH4B0BAKqQGBElwAACBAxQkEBogheCSawMVGKEAgQpABbwOUDAiY+CXAY6CCChi4s6csZghYMGoZkKAxI8yRInUCI6ezQ0dNCjDaLLHo5cRtRwyBpDh0AjCh36AUNEhjarvmzI9MHRnBMJiJFHIGyEBVKv3pz6NGjRpA2Vmbi5gEAFCtRMXM68YUAAOw==]]></data>
	</file>
	<file>
	  <filename>/lib/images/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/lib/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/lib/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/autosize.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCglBdXRvc2l6ZSAzLjAuMTMKCWxpY2Vuc2U6IE1JVAoJaHR0cDovL3d3dy5qYWNrbG1vb3JlLmNvbS9hdXRvc2l6ZQoqLwohZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kKWRlZmluZShbImV4cG9ydHMiLCJtb2R1bGUiXSx0KTtlbHNlIGlmKCJ1bmRlZmluZWQiIT10eXBlb2YgZXhwb3J0cyYmInVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGUpdChleHBvcnRzLG1vZHVsZSk7ZWxzZXt2YXIgbj17ZXhwb3J0czp7fX07dChuLmV4cG9ydHMsbiksZS5hdXRvc2l6ZT1uLmV4cG9ydHN9fSh0aGlzLGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7ZnVuY3Rpb24gdCgpe3ZhciB0PXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGUsbnVsbCk7Yz10Lm92ZXJmbG93WSwidmVydGljYWwiPT09dC5yZXNpemU/ZS5zdHlsZS5yZXNpemU9Im5vbmUiOiJib3RoIj09PXQucmVzaXplJiYoZS5zdHlsZS5yZXNpemU9Imhvcml6b250YWwiKSxmPSJjb250ZW50LWJveCI9PT10LmJveFNpemluZz8tKHBhcnNlRmxvYXQodC5wYWRkaW5nVG9wKStwYXJzZUZsb2F0KHQucGFkZGluZ0JvdHRvbSkpOnBhcnNlRmxvYXQodC5ib3JkZXJUb3BXaWR0aCkrcGFyc2VGbG9hdCh0LmJvcmRlckJvdHRvbVdpZHRoKSxpc05hTihmKSYmKGY9MCksaSgpfWZ1bmN0aW9uIG4odCl7dmFyIG49ZS5zdHlsZS53aWR0aDtlLnN0eWxlLndpZHRoPSIwcHgiLGUub2Zmc2V0V2lkdGgsZS5zdHlsZS53aWR0aD1uLGM9dCx1JiYoZS5zdHlsZS5vdmVyZmxvd1k9dCksbygpfWZ1bmN0aW9uIG8oKXt2YXIgdD13aW5kb3cucGFnZVlPZmZzZXQsbj1kb2N1bWVudC5ib2R5LnNjcm9sbFRvcCxvPWUuc3R5bGUuaGVpZ2h0O2Uuc3R5bGUuaGVpZ2h0PSJhdXRvIjt2YXIgaT1lLnNjcm9sbEhlaWdodCtmO3JldHVybiAwPT09ZS5zY3JvbGxIZWlnaHQ/dm9pZChlLnN0eWxlLmhlaWdodD1vKTooZS5zdHlsZS5oZWlnaHQ9aSsicHgiLHY9ZS5jbGllbnRXaWR0aCxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wPXQsdm9pZChkb2N1bWVudC5ib2R5LnNjcm9sbFRvcD1uKSl9ZnVuY3Rpb24gaSgpe3ZhciB0PWUuc3R5bGUuaGVpZ2h0O28oKTt2YXIgaT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlLG51bGwpO2lmKGkuaGVpZ2h0IT09ZS5zdHlsZS5oZWlnaHQ/InZpc2libGUiIT09YyYmbigidmlzaWJsZSIpOiJoaWRkZW4iIT09YyYmbigiaGlkZGVuIiksdCE9PWUuc3R5bGUuaGVpZ2h0KXt2YXIgcj1kb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKTtyLmluaXRFdmVudCgiYXV0b3NpemU6cmVzaXplZCIsITAsITEpLGUuZGlzcGF0Y2hFdmVudChyKX19dmFyIGQ9dm9pZCAwPT09YXJndW1lbnRzWzFdP3t9OmFyZ3VtZW50c1sxXSxzPWQuc2V0T3ZlcmZsb3dYLGw9dm9pZCAwPT09cz8hMDpzLGE9ZC5zZXRPdmVyZmxvd1ksdT12b2lkIDA9PT1hPyEwOmE7aWYoZSYmZS5ub2RlTmFtZSYmIlRFWFRBUkVBIj09PWUubm9kZU5hbWUmJiFyLmhhcyhlKSl7dmFyIGY9bnVsbCxjPW51bGwsdj1lLmNsaWVudFdpZHRoLHA9ZnVuY3Rpb24oKXtlLmNsaWVudFdpZHRoIT09diYmaSgpfSxoPWZ1bmN0aW9uKHQpe3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNpemUiLHApLGUucmVtb3ZlRXZlbnRMaXN0ZW5lcigiaW5wdXQiLGkpLGUucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5dXAiLGkpLGUucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYXV0b3NpemU6ZGVzdHJveSIsaCksclsiZGVsZXRlIl0oZSksT2JqZWN0LmtleXModCkuZm9yRWFjaChmdW5jdGlvbihuKXtlLnN0eWxlW25dPXRbbl19KX0uYmluZChlLHtoZWlnaHQ6ZS5zdHlsZS5oZWlnaHQscmVzaXplOmUuc3R5bGUucmVzaXplLG92ZXJmbG93WTplLnN0eWxlLm92ZXJmbG93WSxvdmVyZmxvd1g6ZS5zdHlsZS5vdmVyZmxvd1gsd29yZFdyYXA6ZS5zdHlsZS53b3JkV3JhcH0pO2UuYWRkRXZlbnRMaXN0ZW5lcigiYXV0b3NpemU6ZGVzdHJveSIsaCksIm9ucHJvcGVydHljaGFuZ2UiaW4gZSYmIm9uaW5wdXQiaW4gZSYmZS5hZGRFdmVudExpc3RlbmVyKCJrZXl1cCIsaSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIscCksZS5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsaSksZS5hZGRFdmVudExpc3RlbmVyKCJhdXRvc2l6ZTp1cGRhdGUiLGkpLHIuYWRkKGUpLGwmJihlLnN0eWxlLm92ZXJmbG93WD0iaGlkZGVuIixlLnN0eWxlLndvcmRXcmFwPSJicmVhay13b3JkIiksdCgpfX1mdW5jdGlvbiBvKGUpe2lmKGUmJmUubm9kZU5hbWUmJiJURVhUQVJFQSI9PT1lLm5vZGVOYW1lKXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKTt0LmluaXRFdmVudCgiYXV0b3NpemU6ZGVzdHJveSIsITAsITEpLGUuZGlzcGF0Y2hFdmVudCh0KX19ZnVuY3Rpb24gaShlKXtpZihlJiZlLm5vZGVOYW1lJiYiVEVYVEFSRUEiPT09ZS5ub2RlTmFtZSl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50Iik7dC5pbml0RXZlbnQoImF1dG9zaXplOnVwZGF0ZSIsITAsITEpLGUuZGlzcGF0Y2hFdmVudCh0KX19dmFyIHI9ImZ1bmN0aW9uIj09dHlwZW9mIFNldD9uZXcgU2V0OmZ1bmN0aW9uKCl7dmFyIGU9W107cmV0dXJue2hhczpmdW5jdGlvbih0KXtyZXR1cm4gQm9vbGVhbihlLmluZGV4T2YodCk+LTEpfSxhZGQ6ZnVuY3Rpb24odCl7ZS5wdXNoKHQpfSwiZGVsZXRlIjpmdW5jdGlvbih0KXtlLnNwbGljZShlLmluZGV4T2YodCksMSl9fX0oKSxkPW51bGw7InVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3d8fCJmdW5jdGlvbiIhPXR5cGVvZiB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZT8oZD1mdW5jdGlvbihlKXtyZXR1cm4gZX0sZC5kZXN0cm95PWZ1bmN0aW9uKGUpe3JldHVybiBlfSxkLnVwZGF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gZX0pOihkPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJkFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZS5sZW5ndGg/ZTpbZV0sZnVuY3Rpb24oZSl7cmV0dXJuIG4oZSx0KX0pLGV9LGQuZGVzdHJveT1mdW5jdGlvbihlKXtyZXR1cm4gZSYmQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChlLmxlbmd0aD9lOltlXSxvKSxlfSxkLnVwZGF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gZSYmQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChlLmxlbmd0aD9lOltlXSxpKSxlfSksdC5leHBvcnRzPWR9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/js/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/icons/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/icons/default/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/icons/default/icons.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[dGlueW1jZS5JY29uTWFuYWdlci5hZGQoImRlZmF1bHQiLHtpY29uczp7ImFjY2Vzc2liaWxpdHktY2hlY2siOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZD0iTTEyIDJhMiAyIDAgMDEyIDIgMiAyIDAgMDEtMiAyIDIgMiAwIDAxLTItMmMwLTEuMS45LTIgMi0yem04IDdoLTV2MTJjMCAuNi0uNCAxLTEgMWExIDEgMCAwMS0xLTF2LTVjMC0uNi0uNC0xLTEtMWExIDEgMCAwMC0xIDF2NWMwIC42LS40IDEtMSAxYTEgMSAwIDAxLTEtMVY5SDRhMSAxIDAgMTEwLTJoMTZjLjYgMCAxIC40IDEgMXMtLjQgMS0xIDF6IiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L3N2Zz4nLCJhY3Rpb24tbmV4dCI6Jzxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48cGF0aCBmaWxsLXJ1bGU9Im5vbnplcm8iIGQ9Ik01LjcgNy4zYTEgMSAwIDAwLTEuNCAxLjRsNy43IDcuNyA3LjctNy43YTEgMSAwIDEwLTEuNC0xLjRMMTIgMTMuNiA1LjcgNy4zeiIvPjwvc3ZnPicsImFjdGlvbi1wcmV2IjonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxwYXRoIGZpbGwtcnVsZT0ibm9uemVybyIgZD0iTTE4LjMgMTUuN2ExIDEgMCAwMDEuNC0xLjRMMTIgNi42bC03LjcgNy43YTEgMSAwIDAwMS40IDEuNEwxMiA5LjRsNi4zIDYuM3oiLz48L3N2Zz4nLCJhbGlnbi1jZW50ZXIiOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZD0iTTUgNWgxNGMuNiAwIDEgLjQgMSAxcy0uNCAxLTEgMUg1YTEgMSAwIDExMC0yem0zIDRoOGMuNiAwIDEgLjQgMSAxcy0uNCAxLTEgMUg4YTEgMSAwIDExMC0yem0wIDhoOGMuNiAwIDEgLjQgMSAxcy0uNCAxLTEgMUg4YTEgMSAwIDAxMC0yem0tMy00aDE0Yy42IDAgMSAuNCAxIDFzLS40IDEtMSAxSDVhMSAxIDAgMDEwLTJ6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4nLCJhbGlnbi1qdXN0aWZ5IjonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxwYXRoIGQ9Ik01IDVoMTRjLjYgMCAxIC40IDEgMXMtLjQgMS0xIDFINWExIDEgMCAxMTAtMnptMCA0aDE0Yy42IDAgMSAuNCAxIDFzLS40IDEtMSAxSDVhMSAxIDAgMTEwLTJ6bTAgNGgxNGMuNiAwIDEgLjQgMSAxcy0uNCAxLTEgMUg1YTEgMSAwIDAxMC0yem0wIDRoMTRjLjYgMCAxIC40IDEgMXMtLjQgMS0xIDFINWExIDEgMCAwMTAtMnoiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPicsImFsaWduLWxlZnQiOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZD0iTTUgNWgxNGMuNiAwIDEgLjQgMSAxcy0uNCAxLTEgMUg1YTEgMSAwIDExMC0yem0wIDRoOGMuNiAwIDEgLjQgMSAxcy0uNCAxLTEgMUg1YTEgMSAwIDExMC0yem0wIDhoOGMuNiAwIDEgLjQgMSAxcy0uNCAxLTEgMUg1YTEgMSAwIDAxMC0yem0wLTRoMTRjLjYgMCAxIC40IDEgMXMtLjQgMS0xIDFINWExIDEgMCAwMTAtMnoiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPicsImFsaWduLW5vbmUiOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZD0iTTE0LjIgNUwxMyA3SDVhMSAxIDAgMTEwLTJoOS4yem00IDBoLjhhMSAxIDAgMDEwIDJoLTJsMS4yLTJ6bS02LjQgNGwtMS4yIDJINWExIDEgMCAwMTAtMmg2Ljh6bTQgMEgxOWExIDEgMCAwMTAgMmgtNC40bDEuMi0yem0tNi40IDRsLTEuMiAySDVhMSAxIDAgMDEwLTJoNC40em00IDBIMTlhMSAxIDAgMDEwIDJoLTYuOGwxLjItMnpNNyAxN2wtMS4yIDJINWExIDEgMCAwMTAtMmgyem00IDBoOGExIDEgMCAwMTAgMkg5LjhsMS4yLTJ6bTUuMi0xMy41bDEuMy43LTkuNyAxNi4zLTEuMy0uNyA5LjctMTYuM3oiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPicsImFsaWduLXJpZ2h0IjonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxwYXRoIGQ9Ik01IDVoMTRjLjYgMCAxIC40IDEgMXMtLjQgMS0xIDFINWExIDEgMCAxMTAtMnptNiA0aDhjLjYgMCAxIC40IDEgMXMtLjQgMS0xIDFoLThhMSAxIDAgMDEwLTJ6bTAgOGg4Yy42IDAgMSAuNCAxIDFzLS40IDEtMSAxaC04YTEgMSAwIDAxMC0yem0tNi00aDE0Yy42IDAgMSAuNCAxIDFzLS40IDEtMSAxSDVhMSAxIDAgMDEwLTJ6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4nLCJhcnJvdy1sZWZ0IjonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxwYXRoIGQ9Ik01LjYgMTNsMTIgNmExIDEgMCAwMDEuNC0xVjZhMSAxIDAgMDAtMS40LS45bC0xMiA2YTEgMSAwIDAwMCAxLjh6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4nLCJhcnJvdy1yaWdodCI6Jzxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48cGF0aCBkPSJNMTguNSAxM2wtMTIgNkExIDEgMCAwMTUgMThWNmExIDEgMCAwMTEuNC0uOWwxMiA2YTEgMSAwIDAxMCAxLjh6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4nLGJvbGQ6Jzxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48cGF0aCBkPSJNNy44IDE5Yy0uMyAwLS41IDAtLjYtLjJsLS4yLS41VjUuN2MwLS4yIDAtLjQuMi0uNWwuNi0uMmg1YzEuNSAwIDIuNy4zIDMuNSAxIC43LjYgMS4xIDEuNCAxLjEgMi41YTMgMyAwIDAxLS42IDEuOWMtLjQuNi0xIDEtMS42IDEuMi40LjEuOS4zIDEuMy42cy44LjcgMSAxLjJjLjQuNC41IDEgLjUgMS42IDAgMS4zLS40IDIuMy0xLjMgMy0uOC43LTIuMSAxLTMuOCAxSDcuOHptNS04LjNjLjYgMCAxLjItLjEgMS42LS41LjQtLjMuNi0uNy42LTEuMyAwLTEuMS0uOC0xLjctMi4zLTEuN0g5LjN2My41aDMuNHptLjUgNmMuNyAwIDEuMy0uMSAxLjctLjQuNC0uNC42LS45LjYtMS41cy0uMi0xLS43LTEuNGMtLjQtLjMtMS0uNC0yLS40SDkuNHYzLjhoNHoiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPicsYm9va21hcms6Jzxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48cGF0aCBkPSJNNiA0djE3bDYtNCA2IDRWNGMwLS42LS40LTEtMS0xSDdhMSAxIDAgMDAtMSAxeiIgZmlsbC1ydWxlPSJub256ZXJvIi8+PC9zdmc+JywiYm9yZGVyLXdpZHRoIjonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxwYXRoIGQ9Ik01IDE0LjhoMTRhMSAxIDAgMDEwIDJINWExIDEgMCAwMTAtMnptLS41IDMuN2gxNWMuMyAwIC41LjIuNS41cy0uMi41LS41LjVoLTE1YS41LjUgMCAxMTAtMXptLjUtOC4zaDE0Yy42IDAgMSAuNCAxIDF2MWMwIC41LS40IDEtMSAxSDVhMSAxIDAgMDEtMS0xdi0xYzAtLjYuNC0xIDEtMXptMC01LjdoMTRjLjYgMCAxIC40IDEgMXYyYzAgLjYtLjQgMS0xIDFINWExIDEgMCAwMS0xLTF2LTJjMC0uNi40LTEgMS0xeiIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zdmc+JyxicmlnaHRuZXNzOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZD0iTTEyIDE3Yy4zIDAgLjUuMS43LjMuMi4yLjMuNC4zLjd2MWMwIC4zLS4xLjUtLjMuN2ExIDEgMCAwMS0uNy4zIDEgMSAwIDAxLS43LS4zIDEgMSAwIDAxLS4zLS43di0xYzAtLjMuMS0uNS4zLS43LjItLjIuNC0uMy43LS4zem0wLTEwYTEgMSAwIDAxLS43LS4zQTEgMSAwIDAxMTEgNlY1YzAtLjMuMS0uNS4zLS43LjItLjIuNC0uMy43LS4zLjMgMCAuNS4xLjcuMy4yLjIuMy40LjMuN3YxYzAgLjMtLjEuNS0uMy43YTEgMSAwIDAxLS43LjN6bTcgNGMuMyAwIC41LjEuNy4zLjIuMi4zLjQuMy43IDAgLjMtLjEuNS0uMy43YTEgMSAwIDAxLS43LjNoLTFhMSAxIDAgMDEtLjctLjMgMSAxIDAgMDEtLjMtLjdjMC0uMy4xLS41LjMtLjcuMi0uMi40LS4zLjctLjNoMXpNNyAxMmMwIC4zLS4xLjUtLjMuN2ExIDEgMCAwMS0uNy4zSDVhMSAxIDAgMDEtLjctLjNBMSAxIDAgMDE0IDEyYzAtLjMuMS0uNS4zLS43LjItLjIuNC0uMy43LS4zaDFjLjMgMCAuNS4xLjcuMy4yLjIuMy40LjMuN3ptMTAgMy41bC43LjhjLjIuMS4zLjQuMy42IDAgLjMtLjEuNi0uMy44YTEgMSAwIDAxLS44LjMgMSAxIDAgMDEtLjYtLjNsLS44LS43YTEgMSAwIDAxLS4zLS44YzAtLjIuMS0uNS4zLS43YTEgMSAwIDAxMS40IDB6bS0xMC03bC0uNy0uOGExIDEgMCAwMS0uMy0uNmMwLS4zLjEtLjYuMy0uOC4yLS4yLjUtLjMuOC0uMy4yIDAgLjUuMS43LjNsLjcuN2MuMi4yLjMuNS4zLjggMCAuMi0uMS41LS4zLjdhMSAxIDAgMDEtLjcuMyAxIDEgMCAwMS0uOC0uM3ptMTAgMGExIDEgMCAwMS0uOC4zIDEgMSAwIDAxLS43LS4zIDEgMSAwIDAxLS4zLS43YzAtLjMuMS0uNi4zLS44bC44LS43Yy4xLS4yLjQtLjMuNi0uMy4zIDAgLjYuMS44LjMuMi4yLjMuNS4zLjggMCAuMi0uMS41LS4zLjdsLS43Ljd6bS0xMCA3Yy4yLS4yLjUtLjMuOC0uMy4yIDAgLjUuMS43LjNhMSAxIDAgMDEwIDEuNGwtLjguOGExIDEgMCAwMS0uNi4zIDEgMSAwIDAxLS44LS4zIDEgMSAwIDAxLS4zLS44YzAtLjIuMS0uNS4zLS42bC43LS44ek0xMiA4YTQgNCAwIDAxMy43IDIuNCA0IDQgMCAwMTAgMy4yQTQgNCAwIDAxMTIgMTZhNCA0IDAgMDEtMy43LTIuNCA0IDQgMCAwMTAtMy4yQTQgNCAwIDAxMTIgOHptMCA2LjVjLjcgMCAxLjMtLjIgMS44LS43LjUtLjUuNy0xLjEuNy0xLjhzLS4yLTEuMy0uNy0xLjhjLS41LS41LTEuMS0uNy0xLjgtLjdzLTEuMy4yLTEuOC43Yy0uNS41LS43IDEuMS0uNyAxLjhzLjIgMS4zLjcgMS44Yy41LjUgMS4xLjcgMS44Ljd6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4nLGJyb3dzZTonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxwYXRoIGQ9Ik0xOSA0YTIgMiAwIDAxMiAydjEyYTIgMiAwIDAxLTIgMmgtNHYtMmg0VjhINXYxMGg0djJINWEyIDIgMCAwMS0yLTJWNmMwLTEuMS45LTIgMi0yaDE0em0tOCA5LjRsLTIuMyAyLjNhMSAxIDAgMTEtMS40LTEuNGw0LTRhMSAxIDAgMDExLjQgMGw0IDRhMSAxIDAgMDEtMS40IDEuNEwxMyAxMy40VjIwYTEgMSAwIDAxLTIgMHYtNi42eiIgZmlsbC1ydWxlPSJub256ZXJvIi8+PC9zdmc+JyxjYW5jZWw6Jzxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48cGF0aCBkPSJNMTIgNC42YTcuNCA3LjQgMCAxMTAgMTQuOCA3LjQgNy40IDAgMDEwLTE0Ljh6TTEyIDNhOSA5IDAgMTAwIDE4IDkgOSAwIDAwMC0xOHptMCA4TDE0LjggOGwxIDEuMS0yLjcgMi44IDIuNyAyLjctMS4xIDEuMS0yLjctMi43LTIuNyAyLjctMS0xLjEgMi42LTIuNy0yLjctMi43IDEtMS4xIDIuOCAyLjd6IiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L3N2Zz4nLCJjaGFuZ2UtY2FzZSI6Jzxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48cGF0aCBkPSJNMTguNCAxOC4ydi0uNmMtLjUuOC0xLjMgMS4yLTIuNCAxLjItMi4yIDAtMy4zLTEuNi0zLjMtNC44IDAtMy4xIDEtNC43IDMuMy00LjcgMS4xIDAgMS44LjMgMi40IDEuMXYtLjZjMC0uNS40LS44LjgtLjhzLjguMy44Ljh2OC40YzAgLjUtLjQuOC0uOC44YS44LjggMCAwMS0uOC0uOHptLTItNy40Yy0xLjMgMC0xLjguOS0xLjggMy4yIDAgMi40LjUgMy4zIDEuNyAzLjMgMS4zIDAgMS44LS45IDEuOC0zLjIgMC0yLjQtLjUtMy4zLTEuNy0zLjN6TTEwIDE1LjdINS41bC0uOCAyLjZhMSAxIDAgMDEtMSAuN2gtLjJhLjcuNyAwIDAxLS43LTFsNC0xMmExIDEgMCAwMTIgMGw0IDEyYS43LjcgMCAwMS0uOCAxaC0uMmExIDEgMCAwMS0xLS43bC0uOC0yLjZ6bS0uMy0xLjVsLTItNi41LTEuOSA2LjVoMy45eiIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zdmc+JywiY2hhcmFjdGVyLWNvdW50IjonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxwYXRoIGQ9Ik00IDExLjVoMTZ2MUg0di0xem00LjgtNi44VjEwSDcuN1Y1LjhoLTF2LTFoMnpNMTEgOC4zVjloMnYxaC0zVjcuN2wyLTF2LS45aC0ydi0xaDN2Mi40bC0yIDF6bTYuMy0zLjRWMTBoLTMuMVY5aDIuMVY4aC0yLjFWNi44aDIuMXYtMWgtMi4xdi0xaDMuMXpNNS44IDE2LjRjMC0uNS4yLS44LjUtMSAuMi0uMi42LS4zIDEuMi0uM2wuOC4xYy4yIDAgLjQuMi41LjNsLjQuNHYyLjhsLjIuM0g4LjJ2LS4xLS4ybC0uNi4zSDdjLS40IDAtLjcgMC0xLS4yYTEgMSAwIDAxLS4zLS45YzAtLjMgMC0uNi4zLS44LjMtLjIuNy0uNCAxLjItLjRsLjYtLjJoLjN2LS4ybC0uMS0uMmEuOC44IDAgMDAtLjUtLjEgMSAxIDAgMDAtLjQgMGwtLjMuNGgtMXptMi4zLjhoLS4ybC0uMi4xLS40LjFhMSAxIDAgMDAtLjQuMmwtLjIuMi4xLjMuNS4xaC40bC40LS40di0uNnptMi0zLjRoMS4ydjEuN2wuNS0uM2guNWMuNSAwIC45LjEgMS4yLjUuMy40LjUuOC41IDEuNCAwIC42LS4yIDEuMS0uNSAxLjUtLjMuNC0uNy42LTEuMy42bC0uNi0uMS0uNC0uNHYuNGgtMS4xdi01LjR6bTEuMSAzLjNjMCAuMyAwIC42LjIuOGEuNy43IDAgMDAxLjIgMGwuMi0uOGMwLS40IDAtLjYtLjItLjhhLjcuNyAwIDAwLS42LS4zbC0uNi4zLS4yLjh6bTYuMS0uNWMwLS4yIDAtLjMtLjItLjRhLjguOCAwIDAwLS41LS4yYy0uMyAwLS41LjEtLjYuM2wtLjIuOWMwIC4zIDAgLjYuMi44LjEuMi4zLjMuNi4zLjIgMCAuNCAwIC41LS4ybC4yLS40aDEuMWMwIC41LS4zLjgtLjYgMS4xYTIgMiAwIDAxLTEuMy40Yy0uNSAwLTEtLjItMS4zLS42YTIgMiAwIDAxLS41LTEuNGMwLS42LjEtMS4xLjUtMS41LjMtLjQuOC0uNSAxLjQtLjUuNSAwIDEgMCAxLjIuMy40LjMuNS43LjUgMS4yaC0xdi0uMXoiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPicsImNoZWNrbGlzdC1ydGwiOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZD0iTTUgMTdoOGMuNiAwIDEgLjQgMSAxcy0uNCAxLTEgMUg1YTEgMSAwIDAxMC0yem0wLTZoOGMuNiAwIDEgLjQgMSAxcy0uNCAxLTEgMUg1YTEgMSAwIDAxMC0yem0wLTZoOGMuNiAwIDEgLjQgMSAxcy0uNCAxLTEgMUg1YTEgMSAwIDExMC0yem0xNC4yIDExYy4yLS40LjYtLjUuOS0uMy4zLjIuNC42LjIgMUwxOCAyMGMtLjIuMy0uNy40LTEgMGwtMS4zLTEuM2EuNy43IDAgMDEwLTFjLjMtLjIuNy0uMiAxIDBsLjcuOSAxLjctMi44em0wLTZjLjItLjQuNi0uNS45LS4zLjMuMi40LjYuMiAxTDE4IDE0Yy0uMi4zLS43LjQtMSAwbC0xLjMtMS4zYS43LjcgMCAwMTAtMWMuMy0uMi43LS4yIDEgMGwuNy45IDEuNy0yLjh6bTAtNmMuMi0uNC42LS41LjktLjMuMy4yLjQuNi4yIDFMMTggOGMtLjIuMy0uNy40LTEgMGwtMS4zLTEuM2EuNy43IDAgMDEwLTFjLjMtLjIuNy0uMiAxIDBsLjcuOSAxLjctMi44eiIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zdmc+JyxjaGVja2xpc3Q6Jzxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48cGF0aCBkPSJNMTEgMTdoOGMuNiAwIDEgLjQgMSAxcy0uNCAxLTEgMWgtOGExIDEgMCAwMTAtMnptMC02aDhjLjYgMCAxIC40IDEgMXMtLjQgMS0xIDFoLThhMSAxIDAgMDEwLTJ6bTAtNmg4YTEgMSAwIDAxMCAyaC04YTEgMSAwIDAxMC0yek03LjIgMTZjLjItLjQuNi0uNS45LS4zLjMuMi40LjYuMiAxTDYgMjBjLS4yLjMtLjcuNC0xIDBsLTEuMy0xLjNhLjcuNyAwIDAxMC0xYy4zLS4yLjctLjIgMSAwbC43LjkgMS43LTIuOHptMC02Yy4yLS40LjYtLjUuOS0uMy4zLjIuNC42LjIgMUw2IDE0Yy0uMi4zLS43LjQtMSAwbC0xLjMtMS4zYS43LjcgMCAwMTAtMWMuMy0uMi43LS4yIDEgMGwuNy45IDEuNy0yLjh6bTAtNmMuMi0uNC42LS41LjktLjMuMy4yLjQuNi4yIDFMNiA4Yy0uMi4zLS43LjQtMSAwTDMuOCA2LjlhLjcuNyAwIDAxMC0xYy4zLS4yLjctLjIgMSAwbC43LjkgMS43LTIuOHoiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPicsY2hlY2ttYXJrOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZD0iTTE4LjIgNS40YTEgMSAwIDAxMS42IDEuMmwtOCAxMmExIDEgMCAwMS0xLjUuMWwtNS01YTEgMSAwIDExMS40LTEuNGw0LjEgNC4xIDcuNC0xMXoiIGZpbGwtcnVsZT0ibm9uemVybyIvPjwvc3ZnPicsImNoZXZyb24tZG93biI6Jzxzdmcgd2lkdGg9IjEwIiBoZWlnaHQ9IjEwIj48cGF0aCBkPSJNOC43IDIuMmMuMy0uMy44LS4zIDEgMCAuNC40LjQuOSAwIDEuMkw1LjcgNy44Yy0uMy4zLS45LjMtMS4yIDBMLjIgMy40YS44LjggMCAwMTAtMS4yYy4zLS4zLjgtLjMgMS4xIDBMNSA2bDMuNy0zLjh6IiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L3N2Zz4nLCJjaGV2cm9uLWxlZnQiOic8c3ZnIHdpZHRoPSIxMCIgaGVpZ2h0PSIxMCI+PHBhdGggZD0iTTcuOCAxLjNMNCA1bDMuOCAzLjdjLjMuMy4zLjggMCAxLS40LjQtLjkuNC0xLjIgMEwyLjIgNS43YS44LjggMCAwMTAtMS4yTDYuNi4yQzcgMCA3LjQgMCA3LjguMmMuMy4zLjMuOCAwIDEuMXoiIGZpbGwtcnVsZT0ibm9uemVybyIvPjwvc3ZnPicsImNoZXZyb24tcmlnaHQiOic8c3ZnIHdpZHRoPSIxMCIgaGVpZ2h0PSIxMCI+PHBhdGggZD0iTTIuMiAxLjNhLjguOCAwIDAxMC0xYy40LS40LjktLjQgMS4yIDBsNC40IDQuMWMuMy40LjMuOSAwIDEuMkwzLjQgOS44Yy0uMy4zLS44LjMtMS4yIDBhLjguOCAwIDAxMC0xLjFMNiA1IDIuMiAxLjN6IiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L3N2Zz4nLCJjaGV2cm9uLXVwIjonPHN2ZyB3aWR0aD0iMTAiIGhlaWdodD0iMTAiPjxwYXRoIGQ9Ik04LjcgNy44TDUgNCAxLjMgNy44Yy0uMy4zLS44LjMtMSAwYS44LjggMCAwMTAtMS4ybDQuMS00LjRjLjMtLjMuOS0uMyAxLjIgMGw0LjIgNC40Yy4zLjMuMy45IDAgMS4yLS4zLjMtLjguMy0xLjEgMHoiIGZpbGwtcnVsZT0ibm9uemVybyIvPjwvc3ZnPicsY2xvc2U6Jzxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48cGF0aCBkPSJNMTcuMyA4LjJMMTMuNCAxMmwzLjkgMy44YTEgMSAwIDAxLTEuNSAxLjVMMTIgMTMuNGwtMy44IDMuOWExIDEgMCAwMS0xLjUtMS41bDMuOS0zLjgtMy45LTMuOGExIDEgMCAwMTEuNS0xLjVsMy44IDMuOSAzLjgtMy45YTEgMSAwIDAxMS41IDEuNXoiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPicsImNvZGUtc2FtcGxlIjonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjYiPjxwYXRoIGQ9Ik03LjEgMTFhMi44IDIuOCAwIDAxLS44IDIgMi44IDIuOCAwIDAxLjggMnYxLjdjMCAuMy4xLjYuNC44LjIuMy41LjQuOC40LjMgMCAuNC4yLjQuNHYuOGMwIC4yLS4xLjQtLjQuNC0uNyAwLTEuNC0uMy0yLS44LS41LS42LS44LTEuMy0uOC0yVjE1YzAtLjMtLjEtLjYtLjQtLjgtLjItLjMtLjUtLjQtLjgtLjRhLjQuNCAwIDAxLS40LS40di0uOGMwLS4yLjItLjQuNC0uNC4zIDAgLjYtLjEuOC0uNC4zLS4yLjQtLjUuNC0uOFY5LjNjMC0uNy4zLTEuNC44LTIgLjYtLjUgMS4zLS44IDItLjguMyAwIC40LjIuNC40di44YzAgLjItLjEuNC0uNC40LS4zIDAtLjYuMS0uOC40LS4zLjItLjQuNS0uNC44VjExem05LjggMFY5LjNjMC0uMy0uMS0uNi0uNC0uOC0uMi0uMy0uNS0uNC0uOC0uNGEuNC40IDAgMDEtLjQtLjRWN2MwLS4yLjEtLjQuNC0uNC43IDAgMS40LjMgMiAuOC41LjYuOCAxLjMuOCAyVjExYzAgLjMuMS42LjQuOC4yLjMuNS40LjguNC4yIDAgLjQuMi40LjR2LjhjMCAuMi0uMi40LS40LjQtLjMgMC0uNi4xLS44LjQtLjMuMi0uNC41LS40Ljh2MS43YzAgLjctLjMgMS40LS44IDItLjYuNS0xLjMuOC0yIC44YS40LjQgMCAwMS0uNC0uNHYtLjhjMC0uMi4xLS40LjQtLjQuMyAwIC42LS4xLjgtLjQuMy0uMi40LS41LjQtLjhWMTVhMi44IDIuOCAwIDAxLjgtMiAyLjggMi44IDAgMDEtLjgtMnptLTMuMy0uNGMwIC40LS4xLjgtLjUgMS4xLS4zLjMtLjcuNS0xLjEuNS0uNCAwLS44LS4yLTEuMS0uNS0uNC0uMy0uNS0uNy0uNS0xLjEgMC0uNS4xLS45LjUtMS4yLjMtLjMuNy0uNCAxLjEtLjQuNCAwIC44LjEgMS4xLjQuNC4zLjUuNy41IDEuMnpNMTIgMTNjLjQgMCAuOC4xIDEuMS41LjQuMy41LjcuNSAxLjEgMCAxLS4xIDEuNi0uNSAyYTMgMyAwIDAxLTEuMSAxYy0uNC4zLS44LjQtMS4xLjRhLjUuNSAwIDAxLS41LS41VjE3YTMgMyAwIDAwMS0uMmwuNi0uNmMtLjYgMC0xLS4yLTEuMy0uNS0uMi0uMy0uMy0uNy0uMy0xIDAtLjUuMS0xIC41LTEuMi4zLS40LjctLjUgMS4xLS41eiIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zdmc+JywiY29sb3ItbGV2ZWxzIjonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxwYXRoIGQ9Ik0xNy41IDExLjRBOSA5IDAgMDExOCAxNGMwIC41IDAgMS0uMiAxLjQgMCAuNC0uMy45LS41IDEuM2E2LjIgNi4yIDAgMDEtMy43IDMgNS43IDUuNyAwIDAxLTMuMiAwQTUuOSA1LjkgMCAwMTcuNiAxOGE2LjIgNi4yIDAgMDEtMS40LTIuNiA2LjcgNi43IDAgMDEwLTIuOGMwLS40LjEtLjkuMy0xLjNhMTMuNiAxMy42IDAgMDEyLjMtNEEyMCAyMCAwIDAxMTIgNGEyNi40IDI2LjQgMCAwMTMuMiAzLjQgMTguMiAxOC4yIDAgMDEyLjMgNHptLTIgNC41Yy40LS43LjUtMS40LjUtMmE3LjMgNy4zIDAgMDAtMS0zLjJjLjIuNi4yIDEuMi4yIDEuOWE0LjUgNC41IDAgMDEtMS4zIDMgNS4zIDUuMyAwIDAxLTIuMyAxLjUgNC45IDQuOSAwIDAxLTIgLjEgNC4zIDQuMyAwIDAwMi40LjggNCA0IDAgMDAyLS42IDQgNCAwIDAwMS41LTEuNXoiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPicsImNvbG9yLXBpY2tlciI6Jzxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48cGF0aCBkPSJNMTIgM2E5IDkgMCAwMDAgMTggMS41IDEuNSAwIDAwMS4xLTIuNWMtLjItLjMtLjQtLjYtLjQtMSAwLS44LjctMS41IDEuNS0xLjVIMTZhNSA1IDAgMDA1LTVjMC00LjQtNC04LTktOHptLTUuNSA5YTEuNSAxLjUgMCAxMTAtMyAxLjUgMS41IDAgMDEwIDN6bTMtNGExLjUgMS41IDAgMTEwLTMgMS41IDEuNSAwIDAxMCAzem01IDBhMS41IDEuNSAwIDExMC0zIDEuNSAxLjUgMCAwMTAgM3ptMyA0YTEuNSAxLjUgMCAxMTAtMyAxLjUgMS41IDAgMDEwIDN6IiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L3N2Zz4nLCJjb2xvci1zd2F0Y2gtcmVtb3ZlLWNvbG9yIjonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxwYXRoIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLXdpZHRoPSIyIiBkPSJNMjEgM0wzIDIxIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4nLCJjb2xvci1zd2F0Y2giOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHJlY3QgeD0iMyIgeT0iMyIgd2lkdGg9IjE4IiBoZWlnaHQ9IjE4IiByeD0iMSIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zdmc+JywiY29tbWVudC1hZGQiOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PGcgZmlsbC1ydWxlPSJub256ZXJvIj48cGF0aCBkPSJNOSAxOWwzLTJoN2MuNiAwIDEtLjQgMS0xVjZjMC0uNi0uNC0xLTEtMUg1YTEgMSAwIDAwLTEgMXYxMGMwIC42LjQgMSAxIDFoNHYyem0tMiA0di00SDVhMyAzIDAgMDEtMy0zVjZhMyAzIDAgMDEzLTNoMTRhMyAzIDAgMDEzIDN2MTBhMyAzIDAgMDEtMyAzaC02LjRMNyAyM3oiLz48cGF0aCBkPSJNMTMgMTBoMmExIDEgMCAwMTAgMmgtMnYyYTEgMSAwIDAxLTIgMHYtMkg5YTEgMSAwIDAxMC0yaDJWOGExIDEgMCAwMTIgMHYyeiIvPjwvZz48L3N2Zz4nLGNvbW1lbnQ6Jzxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48cGF0aCBmaWxsLXJ1bGU9Im5vbnplcm8iIGQ9Ik05IDE5bDMtMmg3Yy42IDAgMS0uNCAxLTFWNmMwLS42LS40LTEtMS0xSDVhMSAxIDAgMDAtMSAxdjEwYzAgLjYuNCAxIDEgMWg0djJ6bS0yIDR2LTRINWEzIDMgMCAwMS0zLTNWNmEzIDMgMCAwMTMtM2gxNGEzIDMgMCAwMTMgM3YxMGEzIDMgMCAwMS0zIDNoLTYuNEw3IDIzeiIvPjwvc3ZnPicsY29udHJhc3Q6Jzxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48cGF0aCBkPSJNMTIgNGE3LjggNy44IDAgMDE1LjcgMi4zQTggOCAwIDExMTIgNHptLTYgOGE2IDYgMCAwMDYgNlY2YTYgNiAwIDAwLTYgNnoiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPicsY29weTonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxwYXRoIGQ9Ik0xNiAzSDZhMiAyIDAgMDAtMiAydjExaDJWNWgxMFYzem0xIDRhMiAyIDAgMDEyIDJ2MTBhMiAyIDAgMDEtMiAyaC03YTIgMiAwIDAxLTItMlY5YzAtMS4yLjktMiAyLTJoN3ptMCAxMlY5aC03djEwaDd6IiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L3N2Zz4nLGNyb3A6Jzxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48cGF0aCBkPSJNMTcgOHY3aDJjLjYgMCAxIC40IDEgMXMtLjQgMS0xIDFoLTJ2MmMwIC42LS40IDEtMSAxYTEgMSAwIDAxLTEtMXYtMkg3VjlINWExIDEgMCAxMTAtMmgyVjVjMC0uNi40LTEgMS0xczEgLjQgMSAxdjJoN2wzLTMgMSAxLTMgM3pNOSA5djVsNS01SDl6bTEgNmg1di01bC01IDV6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4nLGN1dDonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxwYXRoIGQ9Ik0xOCAxNWMuNi43IDEgMS40IDEgMi4zIDAgLjgtLjIgMS41LS43IDJsLS44LjUtMSAuMmMtLjQgMC0uOCAwLTEuMi0uM2EzLjkgMy45IDAgMDEtMi4xLTIuMmMtLjItLjUtLjMtMS0uMi0xLjVsLTEtMS0xIDFjMCAuNSAwIDEtLjIgMS41LS4xLjUtLjQgMS0uOSAxLjQtLjMuNC0uNy42LTEuMi44bC0xLjIuM2MtLjQgMC0uNyAwLTEtLjItLjMgMC0uNi0uMy0uOC0uNS0uNS0uNS0uOC0xLjItLjctMiAwLS45LjQtMS42IDEtMi4yQTMuNyAzLjcgMCAwMTguNiAxNEg5bDEtMS00LTQtLjUtMWEzLjMgMy4zIDAgMDEwLTJjMC0uNC4zLS43LjUtMWw2IDYgNi02IC41IDFhMy4zIDMuMyAwIDAxMCAyYzAgLjQtLjMuNy0uNSAxbC00IDQgMSAxaC41Yy40IDAgLjggMCAxLjIuMy41LjIuOS40IDEuMi44em0tOC41IDIuMmwuMS0uNHYtLjMtLjRhMSAxIDAgMDAtLjItLjUgMSAxIDAgMDAtLjQtLjIgMS42IDEuNiAwIDAwLS44IDAgMi42IDIuNiAwIDAwLS44LjMgMi41IDIuNSAwIDAwLS45IDEuMWwtLjEuNHYuN2wuMi41LjUuMmguN2EyLjUgMi41IDAgMDAuOC0uMyAyLjggMi44IDAgMDAxLTF6bTIuNS0yLjhjLjQgMCAuNy0uMSAxLS40LjMtLjMuNC0uNi40LTFzLS4xLS43LS40LTFjLS4zLS4zLS42LS40LTEtLjRzLS43LjEtMSAuNGMtLjMuMy0uNC42LS40IDFzLjEuNy40IDFjLjMuMy42LjQgMSAuNHptNS40IDRsLjItLjV2LS40LS4zYTIuNiAyLjYgMCAwMC0uMy0uOCAyLjQgMi40IDAgMDAtLjctLjcgMi41IDIuNSAwIDAwLS44LS4zIDEuNSAxLjUgMCAwMC0uOCAwIDEgMSAwIDAwLS40LjIgMSAxIDAgMDAtLjIuNSAxLjUgMS41IDAgMDAwIC43di40bC4zLjQuMy40YTIuOCAyLjggMCAwMC44LjVsLjQuMWguN2wuNS0uMnoiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPicsImRvY3VtZW50LXByb3BlcnRpZXMiOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZD0iTTE0LjQgM0g3YTIgMiAwIDAwLTIgMnYxNGMwIDEuMS45IDIgMiAyaDEwYTIgMiAwIDAwMi0yVjcuNkwxNC40IDN6TTE3IDE5SDdWNWg2djRoNHYxMHoiIGZpbGwtcnVsZT0ibm9uemVybyIvPjwvc3ZnPicsZHJhZzonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxwYXRoIGQ9Ik0xMyA1aDJ2MmgtMlY1em0wIDRoMnYyaC0yVjl6TTkgOWgydjJIOVY5em00IDRoMnYyaC0ydi0yem0tNCAwaDJ2Mkg5di0yem0wIDRoMnYySDl2LTJ6bTQgMGgydjJoLTJ2LTJ6TTkgNWgydjJIOVY1eiIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zdmc+JyxkdXBsaWNhdGU6Jzxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48ZyBmaWxsLXJ1bGU9Im5vbnplcm8iPjxwYXRoIGQ9Ik0xNiAzdjJINnYxMUg0VjVjMC0xLjEuOS0yIDItMmgxMHptMyA4aC0yVjloLTd2MTBoOWEyIDIgMCAwMS0yIDJoLTdhMiAyIDAgMDEtMi0yVjljMC0xLjIuOS0yIDItMmg3YTIgMiAwIDAxMiAydjJ6Ii8+PHBhdGggZD0iTTE3IDE0aDFhMSAxIDAgMDEwIDJoLTF2MWExIDEgMCAwMS0yIDB2LTFoLTFhMSAxIDAgMDEwLTJoMXYtMWExIDEgMCAwMTIgMHYxeiIvPjwvZz48L3N2Zz4nLCJlZGl0LWJsb2NrIjonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxwYXRoIGZpbGwtcnVsZT0ibm9uemVybyIgZD0iTTE5LjggOC44bC05LjQgOS40Yy0uMi4yLS41LjQtLjkuNGwtNS40IDEuMiAxLjItNS40LjUtLjggOS40LTkuNGMuNy0uNyAxLjgtLjcgMi41IDBsMi4xIDIuMWMuNy43LjcgMS44IDAgMi41em0tMi0uMmwxLS45di0uM2wtMi4yLTIuMmEuMy4zIDAgMDAtLjMgMGwtMSAxTDE4IDguNXptLTEgMWwtMi41LTIuNC02IDYgMi41IDIuNSA2LTZ6bS03IDcuMWwtMi42LTIuNC0uMy4zLS4xLjItLjcgMyAzLjEtLjZoLjFsLjQtLjV6Ii8+PC9zdmc+JywiZWRpdC1pbWFnZSI6Jzxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48cGF0aCBkPSJNMTggMTZoMlY3YTIgMiAwIDAwLTItMkg3djJoMTF2OXpNNiAxN2gxNWExIDEgMCAwMTAgMmgtMXYxYTEgMSAwIDAxLTIgMHYtMUg2YTIgMiAwIDAxLTItMlY3SDNhMSAxIDAgMTEwLTJoMVY0YTEgMSAwIDExMiAwdjEzem0zLTUuM2wxLjMgMiAzLTQuNyAzLjcgNkg3bDItMy4zeiIgZmlsbC1ydWxlPSJub256ZXJvIi8+PC9zdmc+JywiZW1iZWQtcGFnZSI6Jzxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48cGF0aCBkPSJNMTkgNlY1SDV2MTRoMkExMyAxMyAwIDAxMTkgNnptMCAxLjRjLS44LjgtMS42IDIuNC0yLjIgNC42SDE5VjcuNHptMCA1LjZoLTIuNGMtLjQgMS44LS42IDMuOC0uNiA2aDN2LTZ6bS00IDZjMC0yLjIuMi00LjIuNi02SDEzYy0uNyAxLjgtMS4xIDMuOC0xLjEgNmgzem0tNCAwYzAtMi4yLjQtNC4yIDEtNkg5LjZBMTIgMTIgMCAwMDggMTloM3pNNCAzaDE2Yy42IDAgMSAuNCAxIDF2MTZjMCAuNi0uNCAxLTEgMUg0YTEgMSAwIDAxLTEtMVY0YzAtLjYuNC0xIDEtMXptMTEuOCA5Yy40LTEuOSAxLTMuNCAxLjgtNC41YTkuMiA5LjIgMCAwMC00IDQuNWgyLjJ6bS0zLjQgMGExMiAxMiAwIDAxMi44LTQgMTIgMTIgMCAwMC01IDRoMi4yeiIgZmlsbC1ydWxlPSJub256ZXJvIi8+PC9zdmc+JyxlbWJlZDonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxwYXRoIGQ9Ik00IDNoMTZjLjYgMCAxIC40IDEgMXYxNmMwIC42LS40IDEtMSAxSDRhMSAxIDAgMDEtMS0xVjRjMC0uNi40LTEgMS0xem0xIDJ2MTRoMTRWNUg1em00LjggMi42bDUuNiA0YS41LjUgMCAwMTAgLjhsLTUuNiA0QS41LjUgMCAwMTkgMTZWOGEuNS41IDAgMDEuOC0uNHoiIGZpbGwtcnVsZT0ibm9uemVybyIvPjwvc3ZnPicsZW1vamk6Jzxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48cGF0aCBkPSJNOSAxMWMuNiAwIDEtLjQgMS0xcy0uNC0xLTEtMWExIDEgMCAwMC0xIDFjMCAuNi40IDEgMSAxem02IDBjLjYgMCAxLS40IDEtMXMtLjQtMS0xLTFhMSAxIDAgMDAtMSAxYzAgLjYuNCAxIDEgMXptLTMgNS41YzIuMSAwIDQtMS41IDQuNC0zLjVINy42Yy41IDIgMi4zIDMuNSA0LjQgMy41ek0xMiA0YTggOCAwIDEwMCAxNiA4IDggMCAwMDAtMTZ6bTAgMTQuNWE2LjUgNi41IDAgMTEwLTEzIDYuNSA2LjUgMCAwMTAgMTN6IiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L3N2Zz4nLGZpbGw6Jzxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI2Ij48cGF0aCBkPSJNMTYuNiAxMmwtOS05LTEuNCAxLjQgMi40IDIuNC01LjIgNS4xYy0uNS42LS41IDEuNiAwIDIuMkw5IDE5LjZhMS41IDEuNSAwIDAwMi4yIDBsNS41LTUuNWMuNS0uNi41LTEuNiAwLTIuMnpNNS4yIDEzTDEwIDguMmw0LjggNC44SDUuMnpNMTkgMTQuNXMtMiAyLjItMiAzLjVjMCAxLjEuOSAyIDIgMmEyIDIgMCAwMDItMmMwLTEuMy0yLTMuNS0yLTMuNXoiIGZpbGwtcnVsZT0ibm9uemVybyIvPjwvc3ZnPicsImZsaXAtaG9yaXpvbnRhbGx5IjonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxwYXRoIGQ9Ik0xNCAxOWgydi0yaC0ydjJ6bTQtOGgyVjloLTJ2MnpNNCA3djEwYzAgMS4xLjkgMiAyIDJoM3YtMkg2VjdoM1Y1SDZhMiAyIDAgMDAtMiAyem0xNC0ydjJoMmEyIDIgMCAwMC0yLTJ6bS03IDE2aDJWM2gtMnYxOHptNy02aDJ2LTJoLTJ2MnptLTQtOGgyVjVoLTJ2MnptNCAxMmEyIDIgMCAwMDItMmgtMnYyeiIgZmlsbC1ydWxlPSJub256ZXJvIi8+PC9zdmc+JywiZmxpcC12ZXJ0aWNhbGx5IjonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxwYXRoIGQ9Ik01IDE0djJoMnYtMkg1em04IDR2Mmgydi0yaC0yem00LTE0SDdhMiAyIDAgMDAtMiAydjNoMlY2aDEwdjNoMlY2YTIgMiAwIDAwLTItMnptMiAxNGgtMnYyYTIgMiAwIDAwMi0yek0zIDExdjJoMTh2LTJIM3ptNiA3djJoMnYtMkg5em04LTR2Mmgydi0yaC0yek01IDE4YzAgMS4xLjkgMiAyIDJ2LTJINXoiIGZpbGwtcnVsZT0ibm9uemVybyIvPjwvc3ZnPicsImZvcm1hdC1wYWludGVyIjonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxwYXRoIGQ9Ik0xOCA1VjRjMC0uNS0uNC0xLTEtMUg1YTEgMSAwIDAwLTEgMXY0YzAgLjYuNSAxIDEgMWgxMmMuNiAwIDEtLjQgMS0xVjdoMXY0SDl2OWMwIC42LjQgMSAxIDFoMmMuNiAwIDEtLjQgMS0xdi03aDhWNWgtM3oiIGZpbGwtcnVsZT0ibm9uemVybyIvPjwvc3ZnPicsZm9ybWF0Oic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTcgNWExIDEgMCAwMTAgMmgtNHYxMWExIDEgMCAwMS0yIDBWN0g3YTEgMSAwIDExMC0yaDEweiIvPjwvc3ZnPicsZnVsbHNjcmVlbjonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxwYXRoIGQ9Ik0xNS4zIDEwbC0xLjItMS4zIDIuOS0zaC0yLjNhLjkuOSAwIDExMC0xLjdIMTljLjUgMCAuOS40LjkuOXY0LjRhLjkuOSAwIDExLTEuOCAwVjdsLTIuOSAzem0wIDRsMyAzdi0yLjNhLjkuOSAwIDExMS43IDBWMTljMCAuNS0uNC45LS45LjloLTQuNGEuOS45IDAgMTEwLTEuOEgxN2wtMy0yLjkgMS4zLTEuMnpNMTAgMTUuNGwtMi45IDNoMi4zYS45LjkgMCAxMTAgMS43SDVhLjkuOSAwIDAxLS45LS45di00LjRhLjkuOSAwIDExMS44IDBWMTdsMi45LTMgMS4yIDEuM3pNOC43IDEwTDUuNyA3djIuM2EuOS45IDAgMDEtMS43IDBWNWMwLS41LjQtLjkuOS0uOWg0LjRhLjkuOSAwIDAxMCAxLjhIN2wzIDIuOS0xLjMgMS4yeiIgZmlsbC1ydWxlPSJub256ZXJvIi8+PC9zdmc+JyxnYWxsZXJ5Oic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZmlsbC1ydWxlPSJub256ZXJvIiBkPSJNNSAxNS43bDIuMy0yLjJjLjMtLjMuNy0uMyAxIDBMMTEgMTZsNS4xLTVjLjMtLjQuOC0uNCAxIDBsMiAxLjlWOEg1djcuN3pNNSAxOFYxOWgzbDEuOC0xLjktMi0yTDUgMTcuOXptMTQtM2wtMi41LTIuNC02LjQgNi41SDE5di00ek00IDZoMTZjLjYgMCAxIC40IDEgMXYxM2MwIC42LS40IDEtMSAxSDRhMSAxIDAgMDEtMS0xVjdjMC0uNi40LTEgMS0xem02IDdhMiAyIDAgMTEwLTQgMiAyIDAgMDEwIDR6TTQuNSA0aDE1YS41LjUgMCAxMTAgMWgtMTVhLjUuNSAwIDAxMC0xem0yLTJoMTFhLjUuNSAwIDExMCAxaC0xMWEuNS41IDAgMDEwLTF6Ii8+PC9zdmc+JyxnYW1tYTonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxwYXRoIGQ9Ik00IDNoMTZjLjYgMCAxIC40IDEgMXYxNmMwIC42LS40IDEtMSAxSDRhMSAxIDAgMDEtMS0xVjRjMC0uNi40LTEgMS0xem0xIDJ2MTRoMTRWNUg1em02LjUgMTEuOFYxNEw5LjIgOC43YTUuMSA1LjEgMCAwMC0uNC0uOGwtLjEtLjJIOCA4di0xbC4zLS4xLjMtLjFoLjdhMSAxIDAgMDEuNi41bC4xLjNhOC41IDguNSAwIDAxLjMuNmwxLjkgNC42IDItNS4yYTEgMSAwIDAxMS0uNi41LjUgMCAwMS41LjZMMTMgMTR2Mi44YS43LjcgMCAwMS0xLjQgMHoiIGZpbGwtcnVsZT0ibm9uemVybyIvPjwvc3ZnPicsaGVscDonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxnIGZpbGwtcnVsZT0iZXZlbm9kZCI+PHBhdGggZD0iTTEyIDUuNWE2LjUgNi41IDAgMDAtNiA5IDYuMyA2LjMgMCAwMDEuNCAybDEgMWE2LjMgNi4zIDAgMDAzLjYgMSA2LjUgNi41IDAgMDA2LTkgNi4zIDYuMyAwIDAwLTEuNC0ybC0xLTFhNi4zIDYuMyAwIDAwLTMuNi0xek0xMiA0YTcuOCA3LjggMCAwMTUuNyAyLjNBOCA4IDAgMTExMiA0eiIvPjxwYXRoIGQ9Ik05LjYgOS43YS43LjcgMCAwMS0uNy0uOGMwLTEuMSAxLjUtMS44IDMuMi0xLjggMS44IDAgMy4yLjggMy4yIDIuNCAwIDEuNC0uNCAyLjEtMS41IDIuOC0uMiAwLS4zLjEtLjMuMmEyIDIgMCAwMC0uOC44LjguOCAwIDAxLTEuNC0uNmMuMy0uNy44LTEgMS4zLTEuNWwuNC0uMmMuNy0uNC44LS42LjgtMS41IDAtLjUtLjYtLjktMS43LS45LS41IDAtMSAuMS0xLjQuMy0uMiAwLS4zLjEtLjMuMnYtLjJjMCAuNC0uNC44LS44Ljh6IiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48Y2lyY2xlIGN4PSIxMiIgY3k9IjE2IiByPSIxIi8+PC9nPjwvc3ZnPicsImhpZ2hsaWdodC1iZy1jb2xvciI6Jzxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48ZyBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGlkPSJ0b3gtaWNvbi1oaWdobGlnaHQtYmctY29sb3JfX2NvbG9yIiBkPSJNMyAxOGgxOHYzSDN6Ii8+PHBhdGggZmlsbC1ydWxlPSJub256ZXJvIiBkPSJNNy43IDE2LjdIM2wzLjMtMy4zLS43LS44TDEwLjIgOGw0IDQuMS00IDQuMmMtLjIuMi0uNi4yLS44IDBsLS42LS43LTEuMSAxLjF6bTUtNy41TDExIDcuNGwzLTIuOWEyIDIgMCAwMTIuNiAwTDE4IDZjLjcuNy43IDIgMCAyLjdsLTIuOSAyLjktMS44LTEuOC0uNS0uNiIvPjwvZz48L3N2Zz4nLGhvbWU6Jzxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48cGF0aCBmaWxsLXJ1bGU9Im5vbnplcm8iIGQ9Ik0xMCAyMHYtNmg0djZoNXYtOGgzTDEyIDMgMiAxMmgzdjh6Ii8+PC9zdmc+JywiaG9yaXpvbnRhbC1ydWxlIjonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxwYXRoIGQ9Ik00IDExaDE2djJINHoiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPicsImltYWdlLW9wdGlvbnMiOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZD0iTTYgMTBhMiAyIDAgMDAtMiAyYzAgMS4xLjkgMiAyIDJhMiAyIDAgMDAyLTIgMiAyIDAgMDAtMi0yem0xMiAwYTIgMiAwIDAwLTIgMmMwIDEuMS45IDIgMiAyYTIgMiAwIDAwMi0yIDIgMiAwIDAwLTItMnptLTYgMGEyIDIgMCAwMC0yIDJjMCAxLjEuOSAyIDIgMmEyIDIgMCAwMDItMiAyIDIgMCAwMC0yLTJ6IiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L3N2Zz4nLGltYWdlOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZD0iTTUgMTUuN2wzLjMtMy4yYy4zLS4zLjctLjMgMSAwTDEyIDE1bDQuMS00Yy4zLS40LjgtLjQgMSAwbDIgMS45VjVINXYxMC43ek01IDE4VjE5aDNsMi44LTIuOS0yLTJMNSAxNy45em0xNC0zbC0yLjUtMi40LTYuNCA2LjVIMTl2LTR6TTQgM2gxNmMuNiAwIDEgLjQgMSAxdjE2YzAgLjYtLjQgMS0xIDFINGExIDEgMCAwMS0xLTFWNGMwLS42LjQtMSAxLTF6bTYgOGEyIDIgMCAxMDAtNCAyIDIgMCAwMDAgNHoiIGZpbGwtcnVsZT0ibm9uemVybyIvPjwvc3ZnPicsaW5kZW50Oic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZD0iTTcgNWgxMmMuNiAwIDEgLjQgMSAxcy0uNCAxLTEgMUg3YTEgMSAwIDExMC0yem01IDRoN2MuNiAwIDEgLjQgMSAxcy0uNCAxLTEgMWgtN2ExIDEgMCAwMTAtMnptMCA0aDdjLjYgMCAxIC40IDEgMXMtLjQgMS0xIDFoLTdhMSAxIDAgMDEwLTJ6bS01IDRoMTJhMSAxIDAgMDEwIDJIN2ExIDEgMCAwMTAtMnptLTIuNi0zLjhMNi4yIDEybC0xLjgtMS4yYTEgMSAwIDAxMS4yLTEuNmwzIDJhMSAxIDAgMDEwIDEuNmwtMyAyYTEgMSAwIDExLTEuMi0xLjZ6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4nLGluZm86Jzxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48cGF0aCBkPSJNMTIgNGE3LjggNy44IDAgMDE1LjcgMi4zQTggOCAwIDExMTIgNHptLTEgM3YyaDJWN2gtMnptMyAxMHYtMWgtMXYtNWgtM3YxaDF2NGgtMXYxaDR6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4nLCJpbnNlcnQtY2hhcmFjdGVyIjonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxwYXRoIGQ9Ik0xNSAxOGg0bDEtMnY0aC02di0zLjNsMS40LTFhNiA2IDAgMDAxLjgtMi45IDYuMyA2LjMgMCAwMC0uMS00LjEgNS44IDUuOCAwIDAwLTMtMy4yYy0uNi0uMy0xLjMtLjUtMi4xLS41YTUuMSA1LjEgMCAwMC0zLjkgMS44IDYuMyA2LjMgMCAwMC0xLjMgNiA2LjIgNi4yIDAgMDAxLjggM2wxLjQuOVYyMEg0di00bDEgMmg0di0uNWwtMi0xTDUuNCAxNUE2LjUgNi41IDAgMDE0IDExYzAtMSAuMi0xLjkuNi0yLjdBNyA3IDAgMDE2LjMgNkM3LjEgNS40IDggNSA5IDQuNWMxLS4zIDItLjUgMy4xLS41YTguOCA4LjggMCAwMTUuNyAyIDcgNyAwIDAxMS43IDIuMyA2IDYgMCAwMS4yIDQuOGMtLjIuNy0uNiAxLjMtMSAxLjlhNy42IDcuNiAwIDAxLTMuNiAyLjV2LjV6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4nLCJpbnNlcnQtdGltZSI6Jzxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48ZyBmaWxsLXJ1bGU9Im5vbnplcm8iPjxwYXRoIGQ9Ik0xMiAxOWE3IDcgMCAxMDAtMTQgNyA3IDAgMDAwIDE0em0wIDJhOSA5IDAgMTEwLTE4IDkgOSAwIDAxMCAxOHoiLz48cGF0aCBkPSJNMTYgMTJoLTNWN2MwLS42LS40LTEtMS0xYTEgMSAwIDAwLTEgMXY3aDVjLjYgMCAxLS40IDEtMXMtLjQtMS0xLTF6Ii8+PC9nPjwvc3ZnPicsaW52ZXJ0Oic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZD0iTTE4IDE5LjNMMTYuNSAxOGE1LjggNS44IDAgMDEtMy4xIDEuOSA2LjEgNi4xIDAgMDEtNS41LTEuNkE1LjggNS44IDAgMDE2IDE0di0uM2wuMS0xLjJBMTMuOSAxMy45IDAgMDE3LjcgOWwtMy0zIC43LS44IDIuOCAyLjkgOSA4LjkgMS41IDEuNi0uNy42em0wLTUuNXYuM2wtLjEgMS4xLS40IDEtMS4yLTEuMmE0LjMgNC4zIDAgMDAuMi0xdi0uMmMwLS40IDAtLjgtLjItMS4zbC0uNS0xLjRhMTQuOCAxNC44IDAgMDAtMy00LjJMMTIgNmEyNi4xIDI2LjEgMCAwMC0yLjIgMi41bC0xLTFhMjAuOSAyMC45IDAgMDEyLjktMy4zTDEyIDRsMSAuOGEyMi4yIDIyLjIgMCAwMTQgNS40Yy42IDEuMiAxIDIuNCAxIDMuNnoiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPicsaXRhbGljOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZD0iTTE2LjcgNC43bC0uMS45aC0uM2MtLjYgMC0xIDAtMS40LjMtLjMuMy0uNC42LS41IDEuMWwtMi4xIDkuOHYuNmMwIC41LjQuOCAxLjQuOGguMmwtLjIuOEg4bC4yLS44aC4yYzEuMSAwIDEuOC0uNSAyLTEuNWwyLTkuOC4xLS41YzAtLjYtLjQtLjgtMS40LS44aC0uM2wuMi0uOWg1Ljh6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4nLGxpbmU6Jzxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48cGF0aCBkPSJNMTUgOWwtOCA4SDR2LTNsOC04IDMgM3ptMS0xbC0zLTMgMS0xaDFjLS4yIDAgMCAwIDAgMGwyIDJzMCAuMiAwIDB2MWwtMSAxek00IDE4aDE2djJINHYtMnoiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPicsbGluazonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxwYXRoIGQ9Ik02LjIgMTIuM2ExIDEgMCAwMTEuNCAxLjRsLTIuMSAyYTIgMiAwIDEwMi43IDIuOGw0LjgtNC44YTEgMSAwIDAwMC0xLjQgMSAxIDAgMTExLjQtMS4zIDIuOSAyLjkgMCAwMTAgNEw5LjYgMjBhMy45IDMuOSAwIDAxLTUuNS01LjVsMi0yem0xMS42LS42YTEgMSAwIDAxLTEuNC0xLjRsMi0yYTIgMiAwIDEwLTIuNi0yLjhMMTEgMTAuM2ExIDEgMCAwMDAgMS40QTEgMSAwIDExOS42IDEzYTIuOSAyLjkgMCAwMTAtNEwxNC40IDRhMy45IDMuOSAwIDAxNS41IDUuNWwtMiAyeiIgZmlsbC1ydWxlPSJub256ZXJvIi8+PC9zdmc+JywibGlzdC1idWxsLWNpcmNsZSI6Jzxzdmcgd2lkdGg9IjQ4IiBoZWlnaHQ9IjQ4Ij48ZyBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0xMSAxNmEyIDIgMCAxMDAtNCAyIDIgMCAwMDAgNHptMCAxYTMgMyAwIDExMC02IDMgMyAwIDAxMCA2ek0xMSAyNmEyIDIgMCAxMDAtNCAyIDIgMCAwMDAgNHptMCAxYTMgMyAwIDExMC02IDMgMyAwIDAxMCA2ek0xMSAzNmEyIDIgMCAxMDAtNCAyIDIgMCAwMDAgNHptMCAxYTMgMyAwIDExMC02IDMgMyAwIDAxMCA2eiIgZmlsbC1ydWxlPSJub256ZXJvIi8+PHBhdGggb3BhY2l0eT0iLjIiIGQ9Ik0xOCAxMmgyMnY0SDE4ek0xOCAyMmgyMnY0SDE4ek0xOCAzMmgyMnY0SDE4eiIvPjwvZz48L3N2Zz4nLCJsaXN0LWJ1bGwtZGVmYXVsdCI6Jzxzdmcgd2lkdGg9IjQ4IiBoZWlnaHQ9IjQ4Ij48ZyBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxjaXJjbGUgY3g9IjExIiBjeT0iMTQiIHI9IjMiLz48Y2lyY2xlIGN4PSIxMSIgY3k9IjI0IiByPSIzIi8+PGNpcmNsZSBjeD0iMTEiIGN5PSIzNCIgcj0iMyIvPjxwYXRoIG9wYWNpdHk9Ii4yIiBkPSJNMTggMTJoMjJ2NEgxOHpNMTggMjJoMjJ2NEgxOHpNMTggMzJoMjJ2NEgxOHoiLz48L2c+PC9zdmc+JywibGlzdC1idWxsLXNxdWFyZSI6Jzxzdmcgd2lkdGg9IjQ4IiBoZWlnaHQ9IjQ4Ij48ZyBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik04IDExaDZ2Nkg4ek04IDIxaDZ2Nkg4ek04IDMxaDZ2Nkg4eiIvPjxwYXRoIG9wYWNpdHk9Ii4yIiBkPSJNMTggMTJoMjJ2NEgxOHpNMTggMjJoMjJ2NEgxOHpNMTggMzJoMjJ2NEgxOHoiLz48L2c+PC9zdmc+JywibGlzdC1udW0tZGVmYXVsdC1ydGwiOic8c3ZnIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PGcgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBvcGFjaXR5PSIuMiIgZD0iTTggMTJoMjJ2NEg4ek04IDIyaDIydjRIOHpNOCAzMmgyMnY0SDh6Ii8+PHBhdGggZD0iTTM3LjQgMTd2LTQuOGwtMS42IDF2LTEuMWwxLjYtMWgxLjJWMTd6TTMzLjMgMTcuMWMtLjUgMC0uOC0uMy0uOC0uNyAwLS40LjMtLjcuOC0uNy40IDAgLjcuMy43LjcgMCAuNC0uMy43LS43Ljd6bTEuNyA1LjdjMC0xLjIgMS0yIDIuMi0yIDEuMyAwIDIuMS44IDIuMSAxLjggMCAuNy0uMyAxLjItMS4zIDIuMmwtMS4yIDF2LjJoMi42djFoLTQuM3YtLjlsMi0xLjljLjgtLjggMS0xLjEgMS0xLjUgMC0uNS0uNC0uOC0xLS44LS41IDAtLjkuMy0uOS45SDM1em0tMS43IDQuM2MtLjUgMC0uOC0uMy0uOC0uNyAwLS40LjMtLjcuOC0uNy40IDAgLjcuMy43LjcgMCAuNC0uMy43LS43Ljd6bTMuMiA3LjN2LTFoLjdjLjYgMCAxLS4zIDEtLjggMC0uNC0uNC0uNy0xLS43cy0xIC4zLTEgLjhIMzVjMC0xLjEgMS0xLjggMi4yLTEuOCAxLjIgMCAyLjEuNiAyLjEgMS42IDAgLjctLjQgMS4yLTEgMS4zdi4xYy43LjEgMS4zLjcgMS4zIDEuNCAwIDEtMSAxLjktMi40IDEuOS0xLjMgMC0yLjItLjgtMi4zLTJoMS4yYzAgLjYuNSAxIDEuMSAxIC42IDAgMS0uNCAxLTEgMC0uNS0uMy0uOC0xLS44aC0uN3ptLTMuMyAyLjdjLS40IDAtLjctLjMtLjctLjcgMC0uNC4zLS43LjctLjcuNSAwIC44LjMuOC43IDAgLjQtLjMuNy0uOC43eiIvPjwvZz48L3N2Zz4nLCJsaXN0LW51bS1kZWZhdWx0IjonPHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiPjxnIGZpbGwtcnVsZT0iZXZlbm9kZCI+PHBhdGggb3BhY2l0eT0iLjIiIGQ9Ik0xOCAxMmgyMnY0SDE4ek0xOCAyMmgyMnY0SDE4ek0xOCAzMmgyMnY0SDE4eiIvPjxwYXRoIGQ9Ik0xMCAxN3YtNC44bC0xLjUgMXYtMS4xbDEuNi0xaDEuMlYxN2gtMS4yem0zLjYuMWMtLjQgMC0uNy0uMy0uNy0uNyAwLS40LjMtLjcuNy0uNy41IDAgLjcuMy43LjcgMCAuNC0uMi43LS43Ljd6bS01IDUuN2MwLTEuMi44LTIgMi4xLTJzMi4xLjggMi4xIDEuOGMwIC43LS4zIDEuMi0xLjQgMi4ybC0xLjEgMXYuMmgyLjZ2MUg4LjZ2LS45bDItMS45Yy44LS44IDEtMS4xIDEtMS41IDAtLjUtLjQtLjgtMS0uOC0uNSAwLS45LjMtLjkuOUg4LjV6bTYuMyA0LjNjLS41IDAtLjctLjMtLjctLjcgMC0uNC4yLS43LjctLjcuNCAwIC43LjMuNy43IDAgLjQtLjMuNy0uNy43ek0xMCAzNC40di0xaC43Yy42IDAgMS0uMyAxLS44IDAtLjQtLjQtLjctMS0uN3MtMSAuMy0xIC44SDguNmMwLTEuMSAxLTEuOCAyLjItMS44IDEuMyAwIDIuMS42IDIuMSAxLjYgMCAuNy0uNCAxLjItMSAxLjN2LjFjLjguMSAxLjMuNyAxLjMgMS40IDAgMS0xIDEuOS0yLjQgMS45LTEuMyAwLTIuMi0uOC0yLjMtMmgxLjJjMCAuNi41IDEgMS4xIDEgLjcgMCAxLS40IDEtMSAwLS41LS4zLS44LTEtLjhoLS43em00LjcgMi43Yy0uNCAwLS43LS4zLS43LS43IDAtLjQuMy0uNy43LS43LjUgMCAuOC4zLjguNyAwIC40LS4zLjctLjguN3oiLz48L2c+PC9zdmc+JywibGlzdC1udW0tbG93ZXItYWxwaGEtcnRsIjonPHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiPjxnIGZpbGwtcnVsZT0iZXZlbm9kZCI+PHBhdGggb3BhY2l0eT0iLjIiIGQ9Ik04IDEyaDIydjRIOHpNOCAyMmgyMnY0SDh6TTggMzJoMjJ2NEg4eiIvPjxwYXRoIGQ9Ik0zNi41IDE2Yy0uOSAwLTEuNS0uNS0xLjUtMS4zcy42LTEuMyAxLjgtMS40aDF2LS40YzAtLjQtLjItLjYtLjctLjYtLjQgMC0uNy4xLS44LjRoLTEuMWMwLS44LjgtMS40IDItMS40UzM5IDEyIDM5IDEzVjE2aC0xLjJ2LS42Yy0uMy40LS44LjctMS40Ljd6bS40LS44Yy42IDAgMS0uNCAxLS45VjE0aC0xYy0uNS4xLS43LjMtLjcuNiAwIC40LjMuNi43LjZ6TTMzLjEgMTYuMWMtLjQgMC0uNy0uMy0uNy0uNyAwLS40LjMtLjcuNy0uNy41IDAgLjguMy44LjcgMCAuNC0uMy43LS44Ljd6TTM3LjcgMjZjLS43IDAtMS4yLS4yLTEuNS0uN3YuN0gzNXYtNi4zaDEuMnYyLjVjLjMtLjUuOC0uOSAxLjUtLjkgMS4xIDAgMS44IDEgMS44IDIuNCAwIDEuNS0uNyAyLjQtMS44IDIuNHptLS41LTMuNmMtLjYgMC0xIC41LTEgMS4zcy40IDEuNCAxIDEuNGMuNyAwIDEtLjYgMS0xLjQgMC0uOC0uMy0xLjMtMS0xLjN6TTMzLjIgMjYuMWMtLjQgMC0uNy0uMy0uNy0uNyAwLS40LjMtLjcuNy0uNy41IDAgLjguMy44LjcgMCAuNC0uMy43LS44Ljd6bTYgN2gtMWMtLjEtLjUtLjQtLjgtMS0uOHMtMSAuNS0xIDEuNGMwIDEgLjQgMS40IDEgMS40LjUgMCAuOS0uMiAxLS43aDFjMCAxLS44IDEuNy0yIDEuNy0xLjQgMC0yLjItLjktMi4yLTIuNHMuOC0yLjQgMi4yLTIuNGMxLjIgMCAyIC43IDIgMS43em0tNi4xIDNjLS41IDAtLjctLjMtLjctLjcgMC0uNC4yLS43LjctLjcuNCAwIC43LjMuNy43IDAgLjQtLjMuNy0uNy43eiIvPjwvZz48L3N2Zz4nLCJsaXN0LW51bS1sb3dlci1hbHBoYSI6Jzxzdmcgd2lkdGg9IjQ4IiBoZWlnaHQ9IjQ4Ij48ZyBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIG9wYWNpdHk9Ii4yIiBkPSJNMTggMTJoMjJ2NEgxOHpNMTggMjJoMjJ2NEgxOHpNMTggMzJoMjJ2NEgxOHoiLz48cGF0aCBkPSJNMTAuMyAxNS4yYy41IDAgMS0uNCAxLS45VjE0aC0xYy0uNS4xLS44LjMtLjguNiAwIC40LjMuNi44LjZ6bS0uNC45Yy0xIDAtMS41LS42LTEuNS0xLjQgMC0uOC42LTEuMyAxLjctMS40aDEuMXYtLjRjMC0uNC0uMi0uNi0uNy0uNi0uNSAwLS44LjEtLjkuNGgtMWMwLS44LjgtMS40IDItMS40IDEuMSAwIDEuOC42IDEuOCAxLjZWMTZoLTEuMXYtLjZoLS4xYy0uMi40LS43LjctMS4zLjd6bTQuNiAwYy0uNSAwLS43LS4zLS43LS43IDAtLjQuMi0uNy43LS43LjQgMCAuNy4zLjcuNyAwIC40LS4zLjctLjcuN3ptLTMuMiAxMGMtLjYgMC0xLjItLjMtMS40LS44di43SDguNXYtNi4zSDEwdjIuNWMuMy0uNS44LS45IDEuNC0uOSAxLjIgMCAxLjkgMSAxLjkgMi40IDAgMS41LS43IDIuNC0xLjkgMi40em0tLjQtMy43Yy0uNyAwLTEgLjUtMSAxLjNzLjMgMS40IDEgMS40Yy42IDAgMS0uNiAxLTEuNCAwLS44LS40LTEuMy0xLTEuM3ptNCAzLjdjLS41IDAtLjctLjMtLjctLjcgMC0uNC4yLS43LjctLjcuNCAwIC43LjMuNy43IDAgLjQtLjMuNy0uNy43em0tMi4yIDdoLTEuMmMwLS41LS40LS44LS45LS44LS42IDAtMSAuNS0xIDEuNCAwIDEgLjQgMS40IDEgMS40LjUgMCAuOC0uMiAxLS43aDFjMCAxLS44IDEuNy0yIDEuNy0xLjQgMC0yLjItLjktMi4yLTIuNHMuOC0yLjQgMi4yLTIuNGMxLjIgMCAyIC43IDIgMS43em0xLjggM2MtLjUgMC0uOC0uMy0uOC0uNyAwLS40LjMtLjcuOC0uNy40IDAgLjcuMy43LjcgMCAuNC0uMy43LS43Ljd6Ii8+PC9nPjwvc3ZnPicsImxpc3QtbnVtLWxvd2VyLWdyZWVrLXJ0bCI6Jzxzdmcgd2lkdGg9IjQ4IiBoZWlnaHQ9IjQ4Ij48ZyBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIG9wYWNpdHk9Ii4yIiBkPSJNOCAxMmgyMnY0SDh6TTggMjJoMjJ2NEg4ek04IDMyaDIydjRIOHoiLz48cGF0aCBkPSJNMzcuNCAxNmMtMS4yIDAtMi0uOC0yLTIuMyAwLTEuNS44LTIuNCAyLTIuNC42IDAgMSAuNCAxLjMgMXYtLjlINDB2My4yYzAgLjQuMS41LjQuNWguMnYuOWgtLjZjLS42IDAtMS0uMi0xLS43aC0uMmMtLjIuNC0uNy44LTEuMy44em0uMy0xYy42IDAgMS0uNSAxLTEuM3MtLjQtMS4zLTEtMS4zLTEgLjUtMSAxLjMuNCAxLjQgMSAxLjR6TTMzLjMgMTYuMWMtLjUgMC0uOC0uMy0uOC0uNyAwLS40LjMtLjcuOC0uNy40IDAgLjcuMy43LjcgMCAuNC0uMy43LS43Ljd6TTM2IDIxLjljMC0xLjUuOC0yLjMgMi4xLTIuMyAxLjIgMCAyIC42IDIgMS42IDAgLjYtLjMgMS0uOSAxLjMuOS4zIDEuMy44IDEuMyAxLjcgMCAxLjItLjcgMS45LTEuOCAxLjktLjYgMC0xLjEtLjMtMS40LS44djIuMkgzNlYyMnptMS44IDEuMnYtMWguM2MuNSAwIC45LS4yLjktLjcgMC0uNS0uMy0uOC0uOS0uOC0uNSAwLS44LjMtLjggMXYyLjJjMCAuOC40IDEuMyAxIDEuM3MxLS40IDEtMS0uNC0xLTEuMi0xaC0uM3pNMzMuMyAyNi4xYy0uNSAwLS44LS4zLS44LS43IDAtLjQuMy0uNy44LS43LjQgMCAuNy4zLjcuNyAwIC40LS4zLjctLjcuN3pNMzcuMSAzNC42TDM0LjggMzBoMS40bDEuNyAzLjUgMS43LTMuNWgxLjFsLTIuMiA0LjZ2LjFjLjUuOC43IDEuNC43IDEuOCAwIC40LS4yLjgtLjQgMS0uMi4yLS42LjMtMSAuMy0uOSAwLTEuMy0uNC0xLjMtMS4yIDAtLjUuMi0xIC41LTEuN2wuMS0uMnptLjcgMWEyIDIgMCAwMC0uNC45YzAgLjMuMS40LjQuNC4zIDAgLjQtLjEuNC0uNCAwLS4yLS4xLS42LS40LTF6TTMzLjMgMzYuMWMtLjUgMC0uOC0uMy0uOC0uNyAwLS40LjMtLjcuOC0uNy40IDAgLjcuMy43LjcgMCAuNC0uMy43LS43Ljd6Ii8+PC9nPjwvc3ZnPicsImxpc3QtbnVtLWxvd2VyLWdyZWVrIjonPHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiPjxnIGZpbGwtcnVsZT0iZXZlbm9kZCI+PHBhdGggb3BhY2l0eT0iLjIiIGQ9Ik0xOCAxMmgyMnY0SDE4ek0xOCAyMmgyMnY0SDE4ek0xOCAzMmgyMnY0SDE4eiIvPjxwYXRoIGQ9Ik0xMC41IDE1Yy43IDAgMS0uNSAxLTEuM3MtLjMtMS4zLTEtMS4zYy0uNSAwLS45LjUtLjkgMS4zcy40IDEuNCAxIDEuNHptLS4zIDFjLTEuMSAwLTEuOC0uOC0xLjgtMi4zIDAtMS41LjctMi40IDEuOC0yLjQuNyAwIDEuMS40IDEuMyAxaC4xdi0uOWgxLjJ2My4yYzAgLjQuMS41LjQuNWguMnYuOWgtLjZjLS42IDAtMS0uMi0xLjEtLjdoLS4xYy0uMi40LS43LjgtMS40Ljh6bTUgLjFjLS41IDAtLjgtLjMtLjgtLjcgMC0uNC4zLS43LjctLjcuNSAwIC44LjMuOC43IDAgLjQtLjMuNy0uOC43em0tNC45IDd2LTFoLjNjLjYgMCAxLS4yIDEtLjcgMC0uNS0uNC0uOC0xLS44LS41IDAtLjguMy0uOCAxdjIuMmMwIC44LjQgMS4zIDEuMSAxLjMuNiAwIDEtLjQgMS0xcy0uNS0xLTEuMy0xaC0uM3pNOC42IDIyYzAtMS41LjctMi4zIDItMi4zIDEuMiAwIDIgLjYgMiAxLjYgMCAuNi0uMyAxLS44IDEuMy44LjMgMS4zLjggMS4zIDEuNyAwIDEuMi0uOCAxLjktMS45IDEuOS0uNiAwLTEuMS0uMy0xLjMtLjh2Mi4ySDguNVYyMnptNi4yIDQuMmMtLjQgMC0uNy0uMy0uNy0uNyAwLS40LjMtLjcuNy0uNy41IDAgLjcuMy43LjcgMCAuNC0uMi43LS43Ljd6bS00LjUgOC41TDggMzBoMS40bDEuNyAzLjUgMS43LTMuNWgxLjFsLTIuMiA0LjZ2LjFjLjUuOC43IDEuNC43IDEuOCAwIC40LS4xLjgtLjQgMS0uMi4yLS42LjMtMSAuMy0uOSAwLTEuMy0uNC0xLjMtMS4yIDAtLjUuMi0xIC41LTEuN2wuMS0uMnptLjcgMWEyIDIgMCAwMC0uNC45YzAgLjMuMS40LjQuNC4zIDAgLjQtLjEuNC0uNCAwLS4yLS4xLS42LS40LTF6bTQuNS41Yy0uNSAwLS44LS4zLS44LS43IDAtLjQuMy0uNy44LS43LjQgMCAuNy4zLjcuNyAwIC40LS4zLjctLjcuN3oiLz48L2c+PC9zdmc+JywibGlzdC1udW0tbG93ZXItcm9tYW4tcnRsIjonPHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiPjxnIGZpbGwtcnVsZT0iZXZlbm9kZCI+PHBhdGggb3BhY2l0eT0iLjIiIGQ9Ik04IDEyaDIydjRIOHpNOCAyMmgyMnY0SDh6TTggMzJoMjJ2NEg4eiIvPjxwYXRoIGQ9Ik0zMi45IDE2di0xLjJoLTEuM1YxNkgzM3ptMCAxMHYtMS4yaC0xLjNWMjZIMzN6bTAgMTB2LTEuMmgtMS4zVjM2SDMzeiIvPjxwYXRoIGZpbGwtcnVsZT0ibm9uemVybyIgZD0iTTM2IDIxaC0xLjV2NUgzNnpNMzYgMzFoLTEuNXY1SDM2ek0zOSAyMWgtMS41djVIMzl6TTM5IDMxaC0xLjV2NUgzOXpNNDIgMzFoLTEuNXY1SDQyek0zNiAxMWgtMS41djVIMzZ6TTM2IDE5aC0xLjV2MUgzNnpNMzYgMjloLTEuNXYxSDM2ek0zOSAxOWgtMS41djFIMzl6TTM5IDI5aC0xLjV2MUgzOXpNNDIgMjloLTEuNXYxSDQyek0zNiA5aC0xLjV2MUgzNnoiLz48L2c+PC9zdmc+JywibGlzdC1udW0tbG93ZXItcm9tYW4iOic8c3ZnIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PGcgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBvcGFjaXR5PSIuMiIgZD0iTTE4IDEyaDIydjRIMTh6TTE4IDIyaDIydjRIMTh6TTE4IDMyaDIydjRIMTh6Ii8+PHBhdGggZD0iTTE1LjEgMTZ2LTEuMmgxLjNWMTZIMTV6bTAgMTB2LTEuMmgxLjNWMjZIMTV6bTAgMTB2LTEuMmgxLjNWMzZIMTV6Ii8+PHBhdGggZmlsbC1ydWxlPSJub256ZXJvIiBkPSJNMTIgMjFoMS41djVIMTJ6TTEyIDMxaDEuNXY1SDEyek05IDIxaDEuNXY1SDl6TTkgMzFoMS41djVIOXpNNiAzMWgxLjV2NUg2ek0xMiAxMWgxLjV2NUgxMnpNMTIgMTloMS41djFIMTJ6TTEyIDI5aDEuNXYxSDEyek05IDE5aDEuNXYxSDl6TTkgMjloMS41djFIOXpNNiAyOWgxLjV2MUg2ek0xMiA5aDEuNXYxSDEyeiIvPjwvZz48L3N2Zz4nLCJsaXN0LW51bS11cHBlci1hbHBoYS1ydGwiOic8c3ZnIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PGcgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBvcGFjaXR5PSIuMiIgZD0iTTggMTJoMjJ2NEg4ek04IDIyaDIydjRIOHpNOCAzMmgyMnY0SDh6Ii8+PHBhdGggZD0iTTM5LjMgMTdsLS41LTEuNGgtMmwtLjUgMS40SDM1bDItNmgxLjZsMiA2aC0xLjN6bS0xLjYtNC43bC0uNyAyLjNoMS42bC0uOC0yLjN6TTMzLjQgMTdjLS40IDAtLjctLjMtLjctLjcgMC0uNC4zLS43LjctLjcuNSAwIC43LjMuNy43IDAgLjQtLjIuNy0uNy43em00LjcgOS45aC0yLjd2LTZIMzhjMS4yIDAgMS45LjYgMS45IDEuNSAwIC42LS41IDEuMi0xIDEuMy43LjEgMS4zLjcgMS4zIDEuNSAwIDEtLjggMS43LTIgMS43em0tMS40LTV2MS41aDFjLjYgMCAxLS4zIDEtLjggMC0uNC0uNC0uNy0xLS43aC0xem0wIDRoMS4xYy43IDAgMS4xLS4zIDEuMS0uOCAwLS42LS40LS45LTEuMS0uOWgtMS4xVjI2ek0zMyAyNy4xYy0uNSAwLS44LS4zLS44LS43IDAtLjQuMy0uNy44LS43LjQgMCAuNy4zLjcuNyAwIC40LS4zLjctLjcuN3ptNC45IDEwYy0xLjggMC0yLjgtMS4xLTIuOC0zLjFzMS0zLjEgMi44LTMuMWMxLjQgMCAyLjUuOSAyLjYgMi4yaC0xLjNjMC0uNy0uNi0xLjEtMS4zLTEuMS0xIDAtMS42LjctMS42IDJzLjYgMiAxLjYgMmMuNyAwIDEuMi0uNCAxLjQtMWgxLjJjLS4xIDEuMy0xLjIgMi4yLTIuNiAyLjJ6bS00LjUgMGMtLjUgMC0uOC0uMy0uOC0uNyAwLS40LjMtLjcuOC0uNy40IDAgLjcuMy43LjcgMCAuNC0uMy43LS43Ljd6Ii8+PC9nPjwvc3ZnPicsImxpc3QtbnVtLXVwcGVyLWFscGhhIjonPHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiPjxnIGZpbGwtcnVsZT0iZXZlbm9kZCI+PHBhdGggb3BhY2l0eT0iLjIiIGQ9Ik0xOCAxMmgyMnY0SDE4ek0xOCAyMmgyMnY0SDE4ek0xOCAzMmgyMnY0SDE4eiIvPjxwYXRoIGQ9Ik0xMi42IDE3bC0uNS0xLjRoLTJMOS41IDE3SDguM2wyLTZIMTJsMiA2aC0xLjN6TTExIDEyLjNsLS43IDIuM2gxLjZsLS44LTIuM3ptNC43IDQuOGMtLjQgMC0uNy0uMy0uNy0uNyAwLS40LjMtLjcuNy0uNy41IDAgLjcuMy43LjcgMCAuNC0uMi43LS43Ljd6TTExLjQgMjdIOC43di02aDIuNmMxLjIgMCAxLjkuNiAxLjkgMS41IDAgLjYtLjUgMS4yLTEgMS4zLjcuMSAxLjMuNyAxLjMgMS41IDAgMS0uOCAxLjctMiAxLjd6TTEwIDIydjEuNWgxYy42IDAgMS0uMyAxLS44IDAtLjQtLjQtLjctMS0uN2gtMXptMCA0SDExYy43IDAgMS4xLS4zIDEuMS0uOCAwLS42LS40LS45LTEuMS0uOUgxMFYyNnptNS40IDEuMWMtLjUgMC0uOC0uMy0uOC0uNyAwLS40LjMtLjcuOC0uNy40IDAgLjcuMy43LjcgMCAuNC0uMy43LS43Ljd6bS00LjEgMTBjLTEuOCAwLTIuOC0xLjEtMi44LTMuMXMxLTMuMSAyLjgtMy4xYzEuNCAwIDIuNS45IDIuNiAyLjJoLTEuM2MwLS43LS42LTEuMS0xLjMtMS4xLTEgMC0xLjYuNy0xLjYgMnMuNiAyIDEuNiAyYy43IDAgMS4yLS40IDEuNC0xaDEuMmMtLjEgMS4zLTEuMiAyLjItMi42IDIuMnptNC41IDBjLS41IDAtLjgtLjMtLjgtLjcgMC0uNC4zLS43LjgtLjcuNCAwIC43LjMuNy43IDAgLjQtLjMuNy0uNy43eiIvPjwvZz48L3N2Zz4nLCJsaXN0LW51bS11cHBlci1yb21hbi1ydGwiOic8c3ZnIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PGcgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBvcGFjaXR5PSIuMiIgZD0iTTggMTJoMjJ2NEg4ek04IDIyaDIydjRIOHpNOCAzMmgyMnY0SDh6Ii8+PHBhdGggZD0iTTMxLjYgMTd2LTEuMkgzM1YxN2gtMS4zem0wIDEwdi0xLjJIMzNWMjdoLTEuM3ptMCAxMHYtMS4ySDMzVjM3aC0xLjN6Ii8+PHBhdGggZmlsbC1ydWxlPSJub256ZXJvIiBkPSJNMzQuNSAyMEgzNnY3aC0xLjV6TTM0LjUgMzBIMzZ2N2gtMS41ek0zNy41IDIwSDM5djdoLTEuNXpNMzcuNSAzMEgzOXY3aC0xLjV6TTQwLjUgMzBINDJ2N2gtMS41ek0zNC41IDEwSDM2djdoLTEuNXoiLz48L2c+PC9zdmc+JywibGlzdC1udW0tdXBwZXItcm9tYW4iOic8c3ZnIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PGcgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBvcGFjaXR5PSIuMiIgZD0iTTE4IDEyaDIydjRIMTh6TTE4IDIyaDIydjRIMTh6TTE4IDMyaDIydjRIMTh6Ii8+PHBhdGggZD0iTTE1LjEgMTd2LTEuMmgxLjNWMTdIMTV6bTAgMTB2LTEuMmgxLjNWMjdIMTV6bTAgMTB2LTEuMmgxLjNWMzdIMTV6Ii8+PHBhdGggZmlsbC1ydWxlPSJub256ZXJvIiBkPSJNMTIgMjBoMS41djdIMTJ6TTEyIDMwaDEuNXY3SDEyek05IDIwaDEuNXY3SDl6TTkgMzBoMS41djdIOXpNNiAzMGgxLjV2N0g2ek0xMiAxMGgxLjV2N0gxMnoiLz48L2c+PC9zdmc+Jyxsb2NrOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZD0iTTE2LjMgMTFjLjIgMCAuMyAwIC41LjJsLjIuNnY3LjRjMCAuMyAwIC40LS4yLjZsLS42LjJINy44Yy0uMyAwLS40IDAtLjYtLjJhLjcuNyAwIDAxLS4yLS42di03LjRjMC0uMyAwLS40LjItLjZsLjUtLjJIOFY4YzAtLjguMy0xLjUuOS0yLjEuNi0uNiAxLjMtLjkgMi4xLS45aDJjLjggMCAxLjUuMyAyLjEuOS42LjYuOSAxLjMuOSAyLjF2M2guM3pNMTAgOHYzaDRWOGExIDEgMCAwMC0uMy0uN0ExIDEgMCAwMDEzIDdoLTJhMSAxIDAgMDAtLjcuMyAxIDEgMCAwMC0uMy43eiIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zdmc+JyxsdHI6Jzxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48cGF0aCBkPSJNMTEgNWg3YTEgMSAwIDAxMCAyaC0xdjExYTEgMSAwIDAxLTIgMFY3aC0ydjExYTEgMSAwIDAxLTIgMHYtNmMtLjUgMC0xIDAtMS40LS4zQTMuNCAzLjQgMCAwMTcuOCAxMGEzLjMgMy4zIDAgMDEwLTIuOCAzLjQgMy40IDAgMDExLjgtMS44TDExIDV6TTQuNCAxNi4yTDYuMiAxNWwtMS44LTEuMmExIDEgMCAwMTEuMi0xLjZsMyAyYTEgMSAwIDAxMCAxLjZsLTMgMmExIDEgMCAxMS0xLjItMS42eiIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zdmc+JywibW9yZS1kcmF3ZXIiOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZD0iTTYgMTBhMiAyIDAgMDAtMiAyYzAgMS4xLjkgMiAyIDJhMiAyIDAgMDAyLTIgMiAyIDAgMDAtMi0yem0xMiAwYTIgMiAwIDAwLTIgMmMwIDEuMS45IDIgMiAyYTIgMiAwIDAwMi0yIDIgMiAwIDAwLTItMnptLTYgMGEyIDIgMCAwMC0yIDJjMCAxLjEuOSAyIDIgMmEyIDIgMCAwMDItMiAyIDIgMCAwMC0yLTJ6IiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L3N2Zz4nLCJuZXctZG9jdW1lbnQiOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZD0iTTE0LjQgM0g3YTIgMiAwIDAwLTIgMnYxNGMwIDEuMS45IDIgMiAyaDEwYTIgMiAwIDAwMi0yVjcuNkwxNC40IDN6TTE3IDE5SDdWNWg2djRoNHYxMHoiIGZpbGwtcnVsZT0ibm9uemVybyIvPjwvc3ZnPicsIm5ldy10YWIiOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZD0iTTE1IDEzbDItMnY4SDVWN2g4bC0yIDJIN3Y4aDh2LTR6bTQtOHY1LjVsLTItMi01LjYgNS41SDEwdi0xLjRMMTUuNSA3bC0yLTJIMTl6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4nLCJub24tYnJlYWtpbmciOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZD0iTTExIDExSDhhMSAxIDAgMTEwLTJoM1Y2YzAtLjYuNC0xIDEtMXMxIC40IDEgMXYzaDNjLjYgMCAxIC40IDEgMXMtLjQgMS0xIDFoLTN2M2MwIC42LS40IDEtMSAxYTEgMSAwIDAxLTEtMXYtM3ptMTAgNHY1SDN2LTVjMC0uNi40LTEgMS0xczEgLjQgMSAxdjNoMTR2LTNjMC0uNi40LTEgMS0xczEgLjQgMSAxeiIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zdmc+Jyxub3RpY2U6Jzxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48cGF0aCBkPSJNMTcuOCA5LjhMMTUuNCA0IDIwIDguNXY3TDE1LjUgMjBoLTdMNCAxNS41di03TDguNSA0aDdsMi4zIDUuOHptMCAwbDIuMiA1LjctMi4zLTUuOHpNMTMgMTd2LTJoLTJ2Mmgyem0wLTRWN2gtMnY2aDJ6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4nLCJvcmRlcmVkLWxpc3QtcnRsIjonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxwYXRoIGQ9Ik02IDE3aDhhMSAxIDAgMDEwIDJINmExIDEgMCAwMTAtMnptMC02aDhhMSAxIDAgMDEwIDJINmExIDEgMCAwMTAtMnptMC02aDhhMSAxIDAgMDEwIDJINmExIDEgMCAxMTAtMnptMTMtMXYzLjVhLjUuNSAwIDExLTEgMFY1aC0uNWEuNS41IDAgMTEwLTFIMTl6bS0xIDguOGwuMi4yaDEuM2EuNS41IDAgMTEwIDFoLTEuNmExIDEgMCAwMS0uOS0xVjEzYzAtLjQuMy0uOC42LTFsMS4yLS40LjItLjNhLjIuMiAwIDAwLS4yLS4yaC0xLjNhLjUuNSAwIDAxLS41LS41YzAtLjMuMi0uNS41LS41aDEuNmMuNSAwIC45LjQuOSAxdi4xYzAgLjQtLjMuOC0uNiAxbC0xLjIuNC0uMi4zem0yIDQuMnYyYzAgLjYtLjQgMS0xIDFoLTEuNWEuNS41IDAgMDEwLTFoMS4yYS4zLjMgMCAxMDAtLjZoLTEuM2EuNC40IDAgMTEwLS44aDEuM2EuMy4zIDAgMDAwLS42aC0xLjJhLjUuNSAwIDExMC0xSDE5Yy42IDAgMSAuNCAxIDF6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4nLCJvcmRlcmVkLWxpc3QiOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZD0iTTEwIDE3aDhjLjYgMCAxIC40IDEgMXMtLjQgMS0xIDFoLThhMSAxIDAgMDEwLTJ6bTAtNmg4Yy42IDAgMSAuNCAxIDFzLS40IDEtMSAxaC04YTEgMSAwIDAxMC0yem0wLTZoOGMuNiAwIDEgLjQgMSAxcy0uNCAxLTEgMWgtOGExIDEgMCAxMTAtMnpNNiA0djMuNWMwIC4zLS4yLjUtLjUuNWEuNS41IDAgMDEtLjUtLjVWNWgtLjVhLjUuNSAwIDAxMC0xSDZ6bS0xIDguOGwuMi4yaDEuM2MuMyAwIC41LjIuNS41cy0uMi41LS41LjVINC45YTEgMSAwIDAxLS45LTFWMTNjMC0uNC4zLS44LjYtMWwxLjItLjQuMi0uM2EuMi4yIDAgMDAtLjItLjJINC41YS41LjUgMCAwMS0uNS0uNWMwLS4zLjItLjUuNS0uNWgxLjZjLjUgMCAuOS40LjkgMXYuMWMwIC40LS4zLjgtLjYgMWwtMS4yLjQtLjIuM3pNNyAxN3YyYzAgLjYtLjQgMS0xIDFINC41YS41LjUgMCAwMTAtMWgxLjJjLjIgMCAuMy0uMS4zLS4zIDAtLjItLjEtLjMtLjMtLjNINC40YS40LjQgMCAxMTAtLjhoMS4zYy4yIDAgLjMtLjEuMy0uMyAwLS4yLS4xLS4zLS4zLS4zSDQuNWEuNS41IDAgMTEwLTFINmMuNiAwIDEgLjQgMSAxeiIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zdmc+JyxvcmllbnRhdGlvbjonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxwYXRoIGQ9Ik03LjMgNi40TDEgMTNsNi40IDYuNSA2LjUtNi41LTYuNS02LjV6TTMuNyAxM2wzLjYtMy43TDExIDEzbC0zLjcgMy43LTMuNi0zLjd6TTEyIDZsMi44IDIuN2MuMy4zLjMuOCAwIDEtLjMuNC0uOS40LTEuMiAwTDkuMiA1LjdhLjguOCAwIDAxMC0xLjJMMTMuNi4yYy4zLS4zLjktLjMgMS4yIDAgLjMuMy4zLjggMCAxLjFMMTIgNGgxYTkgOSAwIDExLTQuMyAxNi45bDEuNS0xLjVBNyA3IDAgMTAxMyA2aC0xeiIgZmlsbC1ydWxlPSJub256ZXJvIi8+PC9zdmc+JyxvdXRkZW50Oic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZD0iTTcgNWgxMmMuNiAwIDEgLjQgMSAxcy0uNCAxLTEgMUg3YTEgMSAwIDExMC0yem01IDRoN2MuNiAwIDEgLjQgMSAxcy0uNCAxLTEgMWgtN2ExIDEgMCAwMTAtMnptMCA0aDdjLjYgMCAxIC40IDEgMXMtLjQgMS0xIDFoLTdhMSAxIDAgMDEwLTJ6bS01IDRoMTJhMSAxIDAgMDEwIDJIN2ExIDEgMCAwMTAtMnptMS42LTMuOGExIDEgMCAwMS0xLjIgMS42bC0zLTJhMSAxIDAgMDEwLTEuNmwzLTJhMSAxIDAgMDExLjIgMS42TDYuOCAxMmwxLjggMS4yeiIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zdmc+JywicGFnZS1icmVhayI6Jzxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48ZyBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik01IDExYy42IDAgMSAuNCAxIDFzLS40IDEtMSAxYTEgMSAwIDAxMC0yem0zIDBoMWMuNiAwIDEgLjQgMSAxcy0uNCAxLTEgMUg4YTEgMSAwIDAxMC0yem00IDBjLjYgMCAxIC40IDEgMXMtLjQgMS0xIDFhMSAxIDAgMDEwLTJ6bTMgMGgxYy42IDAgMSAuNCAxIDFzLS40IDEtMSAxaC0xYTEgMSAwIDAxMC0yem00IDBjLjYgMCAxIC40IDEgMXMtLjQgMS0xIDFhMSAxIDAgMDEwLTJ6TTcgM3Y1aDEwVjNjMC0uNi40LTEgMS0xczEgLjQgMSAxdjdINVYzYzAtLjYuNC0xIDEtMXMxIC40IDEgMXpNNiAyMmExIDEgMCAwMS0xLTF2LTdoMTR2N2MwIC42LS40IDEtMSAxYTEgMSAwIDAxLTEtMXYtNUg3djVjMCAuNi0uNCAxLTEgMXoiLz48L2c+PC9zdmc+JyxwYXJhZ3JhcGg6Jzxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMCA1aDdhMSAxIDAgMDEwIDJoLTF2MTFhMSAxIDAgMDEtMiAwVjdoLTJ2MTFhMSAxIDAgMDEtMiAwdi02Yy0uNSAwLTEgMC0xLjQtLjNBMy40IDMuNCAwIDAxNi44IDEwYTMuMyAzLjMgMCAwMTAtMi44IDMuNCAzLjQgMCAwMTEuOC0xLjhMMTAgNXoiLz48L3N2Zz4nLCJwYXN0ZS10ZXh0IjonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxwYXRoIGQ9Ik0xOCA5VjVoLTJ2MWMwIC42LS40IDEtMSAxSDlhMSAxIDAgMDEtMS0xVjVINnYxM2gzVjloOXpNOSAyMEg2YTIgMiAwIDAxLTItMlY1YzAtMS4xLjktMiAyLTJoMy4yQTMgMyAwIDAxMTIgMWEzIDMgMCAwMTIuOCAySDE4YTIgMiAwIDAxMiAydjRoMXYxMkg5di0xem0xLjUtOS41djloOXYtOWgtOXpNMTIgM2ExIDEgMCAwMC0xIDFjMCAuNS40IDEgMSAxczEtLjUgMS0xLS40LTEtMS0xem0wIDloNnYyaC0uNWwtLjUtMWgtMXY0aC44djFoLTMuNnYtMWguOHYtNGgtMWwtLjUgMUgxMnYtMnoiIGZpbGwtcnVsZT0ibm9uemVybyIvPjwvc3ZnPicscGFzdGU6Jzxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48cGF0aCBkPSJNMTggOVY1aC0ydjFjMCAuNi0uNCAxLTEgMUg5YTEgMSAwIDAxLTEtMVY1SDZ2MTNoM1Y5aDl6TTkgMjBINmEyIDIgMCAwMS0yLTJWNWMwLTEuMS45LTIgMi0yaDMuMkEzIDMgMCAwMTEyIDFhMyAzIDAgMDEyLjggMkgxOGEyIDIgMCAwMTIgMnY0aDF2MTJIOXYtMXptMS41LTkuNXY5aDl2LTloLTl6TTEyIDNhMSAxIDAgMDAtMSAxYzAgLjUuNCAxIDEgMXMxLS41IDEtMS0uNC0xLTEtMXoiIGZpbGwtcnVsZT0ibm9uemVybyIvPjwvc3ZnPicsInBlcm1hbmVudC1wZW4iOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZD0iTTEwLjUgMTcuNUw4IDIwSDN2LTNsMy41LTMuNWEyIDIgMCAwMTAtM0wxNCAzbDEgMS03LjMgNy4zYTEgMSAwIDAwMCAxLjRsMy42IDMuNmMuNC40IDEgLjQgMS40IDBMMjAgOWwxIDEtNy42IDcuNmEyIDIgMCAwMS0yLjggMGwtLjEtLjF6IiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L3N2Zz4nLHBsdXM6Jzxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48cGF0aCBkPSJNMTIgNGMuNSAwIDEgLjQgMSAuOVYxMWg2YTEgMSAwIDAxLjEgMkgxM3Y2YTEgMSAwIDAxLTIgLjFWMTNINWExIDEgMCAwMS0uMS0ySDExVjVjMC0uNi40LTEgMS0xeiIvPjwvc3ZnPicscHJlZmVyZW5jZXM6Jzxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48cGF0aCBkPSJNMjAuMSAxMy41bC0xLjkuMmE1LjggNS44IDAgMDEtLjYgMS41bDEuMiAxLjVjLjQuNC4zIDEgMCAxLjRsLS43LjdhMSAxIDAgMDEtMS40IDBsLTEuNS0xLjJhNi4yIDYuMiAwIDAxLTEuNS42bC0uMiAxLjljMCAuNS0uNS45LTEgLjloLTFhMSAxIDAgMDEtMS0uOWwtLjItMS45YTUuOCA1LjggMCAwMS0xLjUtLjZsLTEuNSAxLjJhMSAxIDAgMDEtMS40IDBsLS43LS43YTEgMSAwIDAxMC0xLjRsMS4yLTEuNWE2LjIgNi4yIDAgMDEtLjYtMS41bC0xLjktLjJhMSAxIDAgMDEtLjktMXYtMWMwLS41LjQtMSAuOS0xbDEuOS0uMmE1LjggNS44IDAgMDEuNi0xLjVMNS4yIDcuM2ExIDEgMCAwMTAtMS40bC43LS43YTEgMSAwIDAxMS40IDBsMS41IDEuMmE2LjIgNi4yIDAgMDExLjUtLjZsLjItMS45YzAtLjUuNS0uOSAxLS45aDFjLjUgMCAxIC40IDEgLjlsLjIgMS45YTUuOCA1LjggMCAwMTEuNS42bDEuNS0xLjJhMSAxIDAgMDExLjQgMGwuNy43Yy4zLjQuNCAxIDAgMS40bC0xLjIgMS41YTYuMiA2LjIgMCAwMS42IDEuNWwxLjkuMmMuNSAwIC45LjUuOSAxdjFjMCAuNS0uNCAxLS45IDF6TTEyIDE1YTMgMyAwIDEwMC02IDMgMyAwIDAwMCA2eiIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zdmc+JyxwcmV2aWV3Oic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZD0iTTMuNSAxMi41Yy41LjggMS4xIDEuNiAxLjggMi4zIDIgMiA0LjIgMy4yIDYuNyAzLjJzNC43LTEuMiA2LjctMy4yYTE2LjIgMTYuMiAwIDAwMi4xLTIuOCAxNS43IDE1LjcgMCAwMC0yLjEtMi44Yy0yLTItNC4yLTMuMi02LjctMy4yYTkuMyA5LjMgMCAwMC02LjcgMy4yQTE2LjIgMTYuMiAwIDAwMy4yIDEyYzAgLjIuMi4zLjMuNXptLTIuNC0xbC43LTEuMkw0IDcuOEM2LjIgNS40IDguOSA0IDEyIDRjMyAwIDUuOCAxLjQgOC4xIDMuOGExOC4yIDE4LjIgMCAwMTIuOCAzLjd2MWwtLjcgMS4yLTIuMSAyLjVjLTIuMyAyLjQtNSAzLjgtOC4xIDMuOC0zIDAtNS44LTEuNC04LjEtMy44YTE4LjIgMTguMiAwIDAxLTIuOC0zLjcgMSAxIDAgMDEwLTF6bTEyLTMuM2EyIDIgMCAxMDIuNyAyLjYgNCA0IDAgMTEtMi42LTIuNnoiIGZpbGwtcnVsZT0ibm9uemVybyIvPjwvc3ZnPicscHJpbnQ6Jzxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48cGF0aCBkPSJNMTggOEg2YTMgMyAwIDAwLTMgM3Y2aDJ2M2gxNHYtM2gydi02YTMgMyAwIDAwLTMtM3ptLTEgMTBIN3YtNGgxMHY0em0uNS01Yy0uOCAwLTEuNS0uNy0xLjUtMS41cy43LTEuNSAxLjUtMS41IDEuNS43IDEuNSAxLjUtLjcgMS41LTEuNSAxLjV6bS41LThINnYyaDEyVjV6IiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L3N2Zz4nLHF1b3RlOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZD0iTTcuNSAxN2guOWMuNCAwIC43LS4yLjktLjZMMTEgMTNWOGMwLS42LS40LTEtMS0xSDZhMSAxIDAgMDAtMSAxdjRjMCAuNi40IDEgMSAxaDJsLTEuMyAyLjdhMSAxIDAgMDAuOCAxLjN6bTggMGguOWMuNCAwIC43LS4yLjktLjZMMTkgMTNWOGMwLS42LS40LTEtMS0xaC00YTEgMSAwIDAwLTEgMXY0YzAgLjYuNCAxIDEgMWgybC0xLjMgMi43YTEgMSAwIDAwLjggMS4zeiIgZmlsbC1ydWxlPSJub256ZXJvIi8+PC9zdmc+JyxyZWRvOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZD0iTTE3LjYgMTBIMTJjLTIuOCAwLTQuNCAxLjQtNC45IDMuNS0uNCAyIC4zIDQgMS40IDQuNmExIDEgMCAxMS0xIDEuOGMtMi0xLjItMi45LTQuMS0yLjMtNi44LjYtMyAzLTUuMSA2LjgtNS4xaDUuNmwtMy4zLTMuM2ExIDEgMCAxMTEuNC0xLjRsNSA1YTEgMSAwIDAxMCAxLjRsLTUgNWExIDEgMCAwMS0xLjQtMS40bDMuMy0zLjN6IiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L3N2Zz4nLHJlbG9hZDonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxnIGZpbGwtcnVsZT0ibm9uemVybyI+PHBhdGggZD0iTTUgMjIuMWwtMS4yLTQuN3YtLjJhMSAxIDAgMDExLTFsNSAuNGExIDEgMCAxMS0uMiAybC0yLjItLjJhNy44IDcuOCAwIDAwOC40LjIgNy41IDcuNSAwIDAwMy41LTYuNCAxIDEgMCAxMTIgMCA5LjUgOS41IDAgMDEtNC41IDggOS45IDkuOSAwIDAxLTEwLjIgMGwuNCAxLjRhMSAxIDAgMTEtMiAuNXpNMTMuNiA3LjRjMC0uNS41LTEgMS0uOWwyLjguMmE4IDggMCAwMC05LjUtMSA3LjUgNy41IDAgMDAtMy42IDcgMSAxIDAgMDEtMiAwIDkuNSA5LjUgMCAwMTQuNS04LjYgMTAgMTAgMCAwMTEwLjkuM2wtLjMtMWExIDEgMCAwMTItLjVsMS4xIDQuOGExIDEgMCAwMS0xIDEuMmwtNS0uNGExIDEgMCAwMS0uOS0xeiIvPjwvZz48L3N2Zz4nLCJyZW1vdmUtZm9ybWF0dGluZyI6Jzxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48cGF0aCBkPSJNMTMuMiA2YTEgMSAwIDAxMCAuMmwtMi42IDEwYTEgMSAwIDAxLTEgLjhoLS4yYS44LjggMCAwMS0uOC0xbDIuNi0xMEg4YTEgMSAwIDExMC0yaDlhMSAxIDAgMDEwIDJoLTMuOHpNNSAxOGg3YTEgMSAwIDAxMCAySDVhMSAxIDAgMDEwLTJ6bTEzIDEuNUwxNi41IDE4IDE1IDE5LjVhLjcuNyAwIDAxLTEtMWwxLjUtMS41LTEuNS0xLjVhLjcuNyAwIDAxMS0xbDEuNSAxLjUgMS41LTEuNWEuNy43IDAgMDExIDFMMTcuNSAxN2wxLjUgMS41YS43LjcgMCAwMS0xIDF6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4nLHJlbW92ZTonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxwYXRoIGQ9Ik0xNiA3aDNhMSAxIDAgMDEwIDJoLTF2OWEzIDMgMCAwMS0zIDNIOWEzIDMgMCAwMS0zLTNWOUg1YTEgMSAwIDExMC0yaDNWNmEzIDMgMCAwMTMtM2gyYTMgMyAwIDAxMyAzdjF6bS0yIDBWNmMwLS42LS40LTEtMS0xaC0yYTEgMSAwIDAwLTEgMXYxaDR6bTIgMkg4djljMCAuNi40IDEgMSAxaDZjLjYgMCAxLS40IDEtMVY5em0tNyAzYTEgMSAwIDAxMiAwdjRhMSAxIDAgMDEtMiAwdi00em00IDBhMSAxIDAgMDEyIDB2NGExIDEgMCAwMS0yIDB2LTR6IiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L3N2Zz4nLCJyZXNpemUtaGFuZGxlIjonPHN2ZyB3aWR0aD0iMTAiIGhlaWdodD0iMTAiPjxnIGZpbGwtcnVsZT0ibm9uemVybyI+PHBhdGggZD0iTTguMSAxLjFBLjUuNSAwIDExOSAybC03IDdBLjUuNSAwIDExMSA4bDctN3pNOC4xIDUuMUEuNS41IDAgMTE5IDZsLTMgM0EuNS41IDAgMTE1IDhsMy0zeiIvPjwvZz48L3N2Zz4nLHJlc2l6ZTonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxwYXRoIGQ9Ik00IDVjMC0uMy4xLS41LjMtLjcuMi0uMi40LS4zLjctLjNoNmMuMyAwIC41LjEuNy4zLjIuMi4zLjQuMy43IDAgLjMtLjEuNS0uMy43YTEgMSAwIDAxLS43LjNINy40TDE4IDE2LjZWMTNjMC0uMy4xLS41LjMtLjcuMi0uMi40LS4zLjctLjMuMyAwIC41LjEuNy4zLjIuMi4zLjQuMy43djZjMCAuMy0uMS41LS4zLjdhMSAxIDAgMDEtLjcuM2gtNmExIDEgMCAwMS0uNy0uMyAxIDEgMCAwMS0uMy0uN2MwLS4zLjEtLjUuMy0uNy4yLS4yLjQtLjMuNy0uM2gzLjZMNiA3LjRWMTFjMCAuMy0uMS41LS4zLjdhMSAxIDAgMDEtLjcuMyAxIDEgMCAwMS0uNy0uM0ExIDEgMCAwMTQgMTFWNXoiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPicsInJlc3RvcmUtZHJhZnQiOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PGcgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTcgMTNjMCAuNi0uNCAxLTEgMWgtNFY4YzAtLjYuNC0xIDEtMXMxIC40IDEgMXY0aDJjLjYgMCAxIC40IDEgMXoiLz48cGF0aCBkPSJNNC43IDEwSDlhMSAxIDAgMDEwIDJIM2ExIDEgMCAwMS0xLTFWNWExIDEgMCAxMTIgMHYzbDIuNS0yLjRhOS4yIDkuMiAwIDAxMTAuOC0xLjVBOSA5IDAgMDExMy40IDIxYy0yLjQuMS00LjctLjctNi41LTIuMmExIDEgMCAxMTEuMy0xLjUgNy4yIDcuMiAwIDAwMTEuNi0zLjcgNyA3IDAgMDAtMy41LTcuN0E3LjIgNy4yIDAgMDA4IDdMNC43IDEweiIgZmlsbC1ydWxlPSJub256ZXJvIi8+PC9nPjwvc3ZnPicsInJvdGF0ZS1sZWZ0IjonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxwYXRoIGQ9Ik00LjcgMTBIOWExIDEgMCAwMTAgMkgzYTEgMSAwIDAxLTEtMVY1YTEgMSAwIDExMiAwdjNsMi41LTIuNGE5LjIgOS4yIDAgMDExMC44LTEuNUE5IDkgMCAwMTEzLjQgMjFjLTIuNC4xLTQuNy0uNy02LjUtMi4yYTEgMSAwIDExMS4zLTEuNSA3LjIgNy4yIDAgMDAxMS42LTMuNyA3IDcgMCAwMC0zLjUtNy43QTcuMiA3LjIgMCAwMDggN0w0LjcgMTB6IiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L3N2Zz4nLCJyb3RhdGUtcmlnaHQiOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZD0iTTIwIDhWNWExIDEgMCAwMTIgMHY2YzAgLjYtLjQgMS0xIDFoLTZhMSAxIDAgMDEwLTJoNC4zTDE2IDdBNy4yIDcuMiAwIDAwNy43IDZhNyA3IDAgMDAzIDEzLjFjMS45LjEgMy43LS41IDUtMS43YTEgMSAwIDAxMS40IDEuNUE5LjIgOS4yIDAgMDEyLjIgMTRjLS45LTMuOSAxLTggNC41LTkuOSAzLjUtMS45IDgtMS4zIDEwLjggMS41TDIwIDh6IiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L3N2Zz4nLHJ0bDonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxwYXRoIGQ9Ik04IDVoOHYyaC0ydjEyaC0yVjdoLTJ2MTJIOHYtN2MtLjUgMC0xIDAtMS40LS4zQTMuNCAzLjQgMCAwMTQuOCAxMGEzLjMgMy4zIDAgMDEwLTIuOCAzLjQgMy40IDAgMDExLjgtMS44TDggNXptMTIgMTEuMmExIDEgMCAxMS0xIDEuNmwtMy0yYTEgMSAwIDAxMC0xLjZsMy0yYTEgMSAwIDExMSAxLjZMMTguNCAxNWwxLjggMS4yeiIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zdmc+JyxzYXZlOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZD0iTTUgMTZoMTRhMiAyIDAgMDEyIDJ2MmEyIDIgMCAwMS0yIDJINWEyIDIgMCAwMS0yLTJ2LTJjMC0xLjEuOS0yIDItMnptMCAydjJoMTR2LTJINXptMTAgMGgydjJoLTJ2LTJ6bS00LTYuNEw4LjcgOS4zYTEgMSAwIDEwLTEuNCAxLjRsNCA0Yy40LjQgMSAuNCAxLjQgMGw0LTRhMSAxIDAgMTAtMS40LTEuNEwxMyAxMS42VjRhMSAxIDAgMDAtMiAwdjcuNnoiIGZpbGwtcnVsZT0ibm9uemVybyIvPjwvc3ZnPicsc2VhcmNoOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZD0iTTE2IDE3LjNhOCA4IDAgMTExLjQtMS40bDQuMyA0LjRhMSAxIDAgMDEtMS40IDEuNGwtNC40LTQuM3ptLTUtLjNhNiA2IDAgMTAwLTEyIDYgNiAwIDAwMCAxMnoiIGZpbGwtcnVsZT0ibm9uemVybyIvPjwvc3ZnPicsInNlbGVjdC1hbGwiOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZD0iTTMgNWgyVjNhMiAyIDAgMDAtMiAyem0wIDhoMnYtMkgzdjJ6bTQgOGgydi0ySDd2MnpNMyA5aDJWN0gzdjJ6bTEwLTZoLTJ2MmgyVjN6bTYgMHYyaDJhMiAyIDAgMDAtMi0yek01IDIxdi0ySDNjMCAxLjEuOSAyIDIgMnptLTItNGgydi0ySDN2MnpNOSAzSDd2MmgyVjN6bTIgMThoMnYtMmgtMnYyem04LThoMnYtMmgtMnYyem0wIDhhMiAyIDAgMDAyLTJoLTJ2MnptMC0xMmgyVjdoLTJ2MnptMCA4aDJ2LTJoLTJ2MnptLTQgNGgydi0yaC0ydjJ6bTAtMTZoMlYzaC0ydjJ6TTcgMTdoMTBWN0g3djEwem0yLThoNnY2SDlWOXoiIGZpbGwtcnVsZT0ibm9uemVybyIvPjwvc3ZnPicsc2VsZWN0ZWQ6Jzxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48cGF0aCBmaWxsLXJ1bGU9Im5vbnplcm8iIGQ9Ik02IDRoMTJhMiAyIDAgMDEyIDJ2MTJhMiAyIDAgMDEtMiAySDZhMiAyIDAgMDEtMi0yVjZjMC0xLjEuOS0yIDItMnptMy42IDEwLjlMNyAxMi4zYS43LjcgMCAwMC0xIDFMOS42IDE3IDE4IDguNmEuNy43IDAgMDAwLTEgLjcuNyAwIDAwLTEgMGwtNy40IDcuM3oiLz48L3N2Zz4nLHNldHRpbmdzOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZD0iTTExIDZoOGMuNiAwIDEgLjQgMSAxcy0uNCAxLTEgMWgtOHYuM2MwIC4yIDAgLjMtLjIuNWwtLjYuMkg3LjhjLS4zIDAtLjQgMC0uNi0uMmEuNy43IDAgMDEtLjItLjZWOEg1YTEgMSAwIDExMC0yaDJ2LS4zYzAtLjIgMC0uMy4yLS41bC41LS4yaDIuNWMuMyAwIC40IDAgLjYuMmwuMi41VjZ6TTggOGgyVjZIOHYyem05IDIuOHYuMmgyYy42IDAgMSAuNCAxIDFzLS40IDEtMSAxaC0ydi4zYzAgLjIgMCAuMy0uMi41bC0uNi4yaC0yLjRjLS4zIDAtLjQgMC0uNi0uMmEuNy43IDAgMDEtLjItLjZWMTNINWExIDEgMCAwMTAtMmg4di0uM2MwLS4yIDAtLjMuMi0uNWwuNi0uMmgyLjRjLjMgMCAuNCAwIC42LjJsLjIuNnpNMTQgMTNoMnYtMmgtMnYyem0tMyAyLjh2LjJoOGMuNiAwIDEgLjQgMSAxcy0uNCAxLTEgMWgtOHYuM2MwIC4yIDAgLjMtLjIuNWwtLjYuMkg3LjhjLS4zIDAtLjQgMC0uNi0uMmEuNy43IDAgMDEtLjItLjZWMThINWExIDEgMCAwMTAtMmgydi0uM2MwLS4yIDAtLjMuMi0uNWwuNS0uMmgyLjVjLjMgMCAuNCAwIC42LjJsLjIuNnpNOCAxOGgydi0ySDh2MnoiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPicsc2hhcnBlbjonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxwYXRoIGQ9Ik0xNiA2bDQgNC04IDktOC05IDQtNGg4em0tNCAxMC4ybDUuNS02LjItLjEtLjFIMTJ2LS4zaDUuMWwtLjItLjJIMTJWOWg0LjZsLS4yLS4ySDEydi0uM2g0LjFsLS4yLS4ySDEyVjhoMy42bC0uMi0uMkg4LjdMNi41IDEwbC4xLjFIMTJ2LjNINi45bC4yLjJIMTJ2LjNINy4zbC4yLjJIMTJ2LjNINy43bC4zLjJoNHYuM0g4LjJsLjIuMkgxMnYuM0g4LjZsLjMuMkgxMnYuM0g5bC4zLjJIMTJ2LjNIOS41bC4yLjJIMTJ2LjNoLTJsLjIuMkgxMnYuM2gtMS42bC4yLjJIMTJ2LjNoLTEuMWwuMi4yaC45di4zaC0uN2wuMi4yaC41di4zaC0uM2wuMy4yeiIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zdmc+Jywic29ydC1hc2MiOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PGcgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNNCA4aDVhMSAxIDAgMTEwIDJINGExIDEgMCAxMTAtMnptMCA4aDhhMSAxIDAgMDEwIDJINGExIDEgMCAwMTAtMnptMC00aDdhMSAxIDAgMDEwIDJINGExIDEgMCAwMTAtMnoiLz48cGF0aCBmaWxsLXJ1bGU9Im5vbnplcm8iIGQ9Ik0xNiA4LjRsLTIuMyAyLjNhMSAxIDAgMDEtMS40LTEuNGw0LTRhMSAxIDAgMDExLjQgMGw0IDRhMSAxIDAgMTEtMS40IDEuNEwxOCA4LjRWMThhMSAxIDAgMDEtMiAwVjguNHoiLz48L2c+PC9zdmc+Jywic29ydC1kc2MiOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PGcgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNNCAxNmg1YTEgMSAwIDAwMC0ySDRhMSAxIDAgMDAwIDJ6bTAtOGg4YTEgMSAwIDAwMC0ySDRhMSAxIDAgMTAwIDJ6bTAgNGg3YTEgMSAwIDAwMC0ySDRhMSAxIDAgMDAwIDJ6Ii8+PHBhdGggZmlsbC1ydWxlPSJub256ZXJvIiBkPSJNMTYgMTUuNmwtMi4zLTIuM2ExIDEgMCAwMC0xLjQgMS40bDQgNGMuNC40IDEgLjQgMS40IDBsNC00YTEgMSAwIDAwLTEuNC0xLjRMMTggMTUuNlY2YTEgMSAwIDAwLTIgMHY5LjZ6Ii8+PC9nPjwvc3ZnPicsc291cmNlY29kZTonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxnIGZpbGwtcnVsZT0ibm9uemVybyI+PHBhdGggZD0iTTkuOCAxNS43Yy4zLjMuMy44IDAgMS0uMy40LS45LjQtMS4yIDBsLTQuNC00LjFhLjguOCAwIDAxMC0xLjJsNC40LTQuMmMuMy0uMy45LS4zIDEuMiAwIC4zLjMuMy44IDAgMS4xTDYgMTJsMy44IDMuN3pNMTQuMiAxNS43Yy0uMy4zLS4zLjggMCAxIC40LjQuOS40IDEuMiAwbDQuNC00LjFjLjMtLjMuMy0uOSAwLTEuMmwtNC40LTQuMmEuOC44IDAgMDAtMS4yIDBjLS4zLjMtLjMuOCAwIDEuMUwxOCAxMmwtMy44IDMuN3oiLz48L2c+PC9zdmc+Jywic3BlbGwtY2hlY2siOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZD0iTTYgOHYzSDVWNWMwLS4zLjEtLjUuMy0uNy4yLS4yLjQtLjMuNy0uM2gyYy4zIDAgLjUuMS43LjMuMi4yLjMuNC4zLjd2Nkg4VjhINnptMC0zdjJoMlY1SDZ6bTEzIDBoLTN2NWgzdjFoLTNhMSAxIDAgMDEtLjctLjMgMSAxIDAgMDEtLjMtLjdWNWMwLS4zLjEtLjUuMy0uNy4yLS4yLjQtLjMuNy0uM2gzdjF6bS01IDEuNWwtLjEuN2MtLjEuMi0uMy4zLS42LjMuMyAwIC41LjEuNi4zbC4xLjdWMTBjMCAuMy0uMS41LS4zLjdhMSAxIDAgMDEtLjcuM2gtM1Y0aDNjLjMgMCAuNS4xLjcuMy4yLjIuMy40LjMuN3YxLjV6TTEzIDEwVjhoLTJ2Mmgyem0wLTNWNWgtMnYyaDJ6bTMgNWwxIDEtNi41IDdMNyAxNS41bDEuMy0xIDIuMiAyLjJMMTYgMTJ6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4nLCJzdHJpa2UtdGhyb3VnaCI6Jzxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48ZyBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0xNS42IDguNWMtLjUtLjctMS0xLjEtMS4zLTEuMy0uNi0uNC0xLjMtLjYtMi0uNi0yLjcgMC0yLjggMS43LTIuOCAyLjEgMCAxLjYgMS44IDIgMy4yIDIuMyA0LjQuOSA0LjYgMi44IDQuNiAzLjkgMCAxLjQtLjcgNC4xLTUgNC4xQTYuMiA2LjIgMCAwMTcgMTYuNGwxLjUtMS4xYy40LjYgMS42IDIgMy43IDIgMS42IDAgMi41LS40IDMtMS4yLjQtLjguMy0yLS44LTIuNi0uNy0uNC0xLjYtLjctMi45LTEtMS0uMi0zLjktLjgtMy45LTMuNkM3LjYgNiAxMC4zIDUgMTIuNCA1YzIuOSAwIDQuMiAxLjYgNC43IDIuNGwtMS41IDEuMXoiLz48cGF0aCBkPSJNNSAxMWgxNGExIDEgMCAwMTAgMkg1YTEgMSAwIDAxMC0yeiIgZmlsbC1ydWxlPSJub256ZXJvIi8+PC9nPjwvc3ZnPicsc3Vic2NyaXB0Oic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZD0iTTEwLjQgMTBsNC42IDQuNi0xLjQgMS40TDkgMTEuNCA0LjQgMTYgMyAxNC42IDcuNiAxMCAzIDUuNCA0LjQgNCA5IDguNiAxMy42IDQgMTUgNS40IDEwLjQgMTB6TTIxIDE5aC01di0xbDEtLjggMS43LTEuNmMuMy0uNC41LS44LjUtMS4yIDAtLjMgMC0uNi0uMi0uNy0uMi0uMi0uNS0uMy0uOS0uM2EyIDIgMCAwMC0uOC4ybC0uNy4zLS40LTEuMSAxLS42IDEuMi0uMmMuOCAwIDEuNC4zIDEuOC43LjQuNC42LjkuNiAxLjVzLS4yIDEuMS0uNSAxLjZhOCA4IDAgMDEtMS4zIDEuM2wtLjYuNmgyLjZWMTl6IiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L3N2Zz4nLHN1cGVyc2NyaXB0Oic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZD0iTTE1IDkuNEwxMC40IDE0bDQuNiA0LjYtMS40IDEuNEw5IDE1LjQgNC40IDIwIDMgMTguNiA3LjYgMTQgMyA5LjQgNC40IDggOSAxMi42IDEzLjYgOCAxNSA5LjR6bTUuOSAxLjZoLTV2LTFsMS0uOCAxLjctMS42Yy4zLS41LjUtLjkuNS0xLjMgMC0uMyAwLS41LS4yLS43LS4yLS4yLS41LS4zLS45LS4zbC0uOC4yLS43LjQtLjQtMS4yYy4yLS4yLjUtLjQgMS0uNS4zLS4yLjgtLjIgMS4yLS4yLjggMCAxLjQuMiAxLjguNi40LjQuNiAxIC42IDEuNiAwIC41LS4yIDEtLjUgMS41bC0xLjMgMS40LS42LjVoMi42VjExeiIgZmlsbC1ydWxlPSJub256ZXJvIi8+PC9zdmc+JywidGFibGUtY2VsbC1wcm9wZXJ0aWVzIjonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxwYXRoIGZpbGwtcnVsZT0ibm9uemVybyIgZD0iTTE5IDRhMiAyIDAgMDEyIDJ2MTJhMiAyIDAgMDEtMiAySDVhMiAyIDAgMDEtMi0yVjZjMC0xLjEuOS0yIDItMmgxNHptLTggOUg1djVoNnYtNXptOCAwaC02djVoNnYtNXptLTgtN0g1djVoNlY2eiIvPjwvc3ZnPicsInRhYmxlLWNlbGwtc2VsZWN0LWFsbCI6Jzxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48ZyBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGZpbGwtcnVsZT0ibm9uemVybyIgZD0iTTE5IDRhMiAyIDAgMDEyIDJ2MTJhMiAyIDAgMDEtMiAySDVhMiAyIDAgMDEtMi0yVjZjMC0xLjEuOS0yIDItMmgxNHptMCAySDV2MTJoMTRWNnoiLz48cGF0aCBkPSJNMTMgNnY1aDZ2MmgtNnY1aC0ydi01SDV2LTJoNlY2aDJ6IiBvcGFjaXR5PSIuMiIvPjwvZz48L3N2Zz4nLCJ0YWJsZS1jZWxsLXNlbGVjdC1pbm5lciI6Jzxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48ZyBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGZpbGwtcnVsZT0ibm9uemVybyIgZD0iTTE5IDRhMiAyIDAgMDEyIDJ2MTJhMiAyIDAgMDEtMiAySDVhMiAyIDAgMDEtMi0yVjZjMC0xLjEuOS0yIDItMmgxNHptMCAySDV2MTJoMTRWNnoiIG9wYWNpdHk9Ii4yIi8+PHBhdGggZD0iTTEzIDZ2NWg2djJoLTZ2NWgtMnYtNUg1di0yaDZWNmgyeiIvPjwvZz48L3N2Zz4nLCJ0YWJsZS1kZWxldGUtY29sdW1uIjonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxwYXRoIGZpbGwtcnVsZT0ibm9uemVybyIgZD0iTTE5IDRhMiAyIDAgMDEyIDJ2MTJhMiAyIDAgMDEtMiAySDVhMiAyIDAgMDEtMi0yVjZjMC0xLjEuOS0yIDItMmgxNHptLTQgNGgtMlY2aC0ydjJIOVY2SDV2MTJoNHYtMmgydjJoMnYtMmgydjJoNFY2aC00djJ6bS4zLjVsMSAxLjItMyAyLjMgMyAyLjMtMSAxLjJMMTIgMTNsLTMuMyAyLjYtMS0xLjIgMy0yLjMtMy0yLjMgMS0xLjJMMTIgMTFsMy4zLTIuNXoiLz48L3N2Zz4nLCJ0YWJsZS1kZWxldGUtcm93IjonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxwYXRoIGZpbGwtcnVsZT0ibm9uemVybyIgZD0iTTE5IDRhMiAyIDAgMDEyIDJ2MTJhMiAyIDAgMDEtMiAySDVhMiAyIDAgMDEtMi0yVjZjMC0xLjEuOS0yIDItMmgxNHptMCAySDV2M2gyLjV2Mkg1djJoMi41djJINXYzaDE0di0zaC0yLjV2LTJIMTl2LTJoLTIuNVY5SDE5VjZ6bS00LjcgMS44bDEuMiAxTDEzIDEybDIuNiAzLjMtMS4yIDEtMi4zLTMtMi4zIDMtMS4yLTFMMTEgMTIgOC41IDguN2wxLjItMSAyLjMgMyAyLjMtM3oiLz48L3N2Zz4nLCJ0YWJsZS1kZWxldGUtdGFibGUiOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PGcgZmlsbC1ydWxlPSJub256ZXJvIj48cGF0aCBkPSJNMTkgNGEyIDIgMCAwMTIgMnYxMmEyIDIgMCAwMS0yIDJINWEyIDIgMCAwMS0yLTJWNmMwLTEuMS45LTIgMi0yaDE0ek01IDZ2MTJoMTRWNkg1eiIvPjxwYXRoIGQ9Ik0xNC40IDguNmwxIDEtMi4zIDIuNCAyLjMgMi40LTEgMS0yLjQtMi4zLTIuNCAyLjMtMS0xIDIuMy0yLjQtMi4zLTIuNCAxLTEgMi40IDIuM3oiLz48L2c+PC9zdmc+JywidGFibGUtaW5zZXJ0LWNvbHVtbi1hZnRlciI6Jzxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48cGF0aCBmaWxsLXJ1bGU9Im5vbnplcm8iIGQ9Ik0yMCA0Yy42IDAgMSAuNCAxIDF2MmExIDEgMCAwMS0yIDBWNmgtOHYxMmg4di0xYTEgMSAwIDAxMiAwdjJjMCAuNS0uNCAxLS45IDFINWEyIDIgMCAwMS0yLTJWNmMwLTEuMS45LTIgMi0yaDE1ek05IDEzSDV2NWg0di01em03LTVjLjUgMCAxIC40IDEgLjlWMTFoMmExIDEgMCAwMS4xIDJIMTd2MmExIDEgMCAwMS0yIC4xVjEzaC0yYTEgMSAwIDAxLS4xLTJIMTVWOWMwLS42LjQtMSAxLTF6TTkgNkg1djVoNFY2eiIvPjwvc3ZnPicsInRhYmxlLWluc2VydC1jb2x1bW4tYmVmb3JlIjonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxwYXRoIGZpbGwtcnVsZT0ibm9uemVybyIgZD0iTTE5IDRhMiAyIDAgMDEyIDJ2MTJhMiAyIDAgMDEtMiAySDRhMSAxIDAgMDEtMS0xdi0yYTEgMSAwIDAxMiAwdjFoOFY2SDV2MWExIDEgMCAxMS0yIDBWNWMwLS42LjQtMSAxLTFoMTV6bTAgOWgtNHY1aDR2LTV6TTggOGMuNSAwIDEgLjQgMSAuOVYxMWgyYTEgMSAwIDAxLjEgMkg5djJhMSAxIDAgMDEtMiAuMVYxM0g1YTEgMSAwIDAxLS4xLTJIN1Y5YzAtLjYuNC0xIDEtMXptMTEtMmgtNHY1aDRWNnoiLz48L3N2Zz4nLCJ0YWJsZS1pbnNlcnQtcm93LWFib3ZlIjonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxwYXRoIGZpbGwtcnVsZT0ibm9uemVybyIgZD0iTTYgNGExIDEgMCAxMTAgMkg1djZoMTRWNmgtMWExIDEgMCAwMTAtMmgyYy42IDAgMSAuNCAxIDF2MTNhMiAyIDAgMDEtMiAySDVhMiAyIDAgMDEtMi0yVjVjMC0uNi40LTEgMS0xaDJ6bTUgMTBINXY0aDZ2LTR6bTggMGgtNnY0aDZ2LTR6TTEyIDNjLjUgMCAxIC40IDEgLjlWNmgyYTEgMSAwIDAxMCAyaC0ydjJhMSAxIDAgMDEtMiAuMVY4SDlhMSAxIDAgMDEwLTJoMlY0YzAtLjYuNC0xIDEtMXoiLz48L3N2Zz4nLCJ0YWJsZS1pbnNlcnQtcm93LWFmdGVyIjonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxwYXRoIGZpbGwtcnVsZT0ibm9uemVybyIgZD0iTTEyIDEzYy41IDAgMSAuNCAxIC45VjE2aDJhMSAxIDAgMDEuMSAySDEzdjJhMSAxIDAgMDEtMiAuMVYxOEg5YTEgMSAwIDAxLS4xLTJIMTF2LTJjMC0uNi40LTEgMS0xem02IDdhMSAxIDAgMDEwLTJoMXYtNkg1djZoMWExIDEgMCAwMTAgMkg0YTEgMSAwIDAxLTEtMVY2YzAtMS4xLjktMiAyLTJoMTRhMiAyIDAgMDEyIDJ2MTNjMCAuNS0uNCAxLS45IDFIMTh6TTExIDZINXY0aDZWNnptOCAwaC02djRoNlY2eiIvPjwvc3ZnPicsInRhYmxlLWxlZnQtaGVhZGVyIjonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxwYXRoIGQ9Ik0xOSA0YTIgMiAwIDAxMiAydjEyYTIgMiAwIDAxLTIgMkg1YTIgMiAwIDAxLTItMlY2YzAtMS4xLjktMiAyLTJoMTR6bTAgOWgtNHY1aDR2LTV6bS02IDBIOXY1aDR2LTV6bTAtN0g5djVoNFY2em02IDBoLTR2NWg0VjZ6Ii8+PC9zdmc+JywidGFibGUtbWVyZ2UtY2VsbHMiOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZmlsbC1ydWxlPSJub256ZXJvIiBkPSJNMTkgNGEyIDIgMCAwMTIgMnYxMmEyIDIgMCAwMS0yIDJINWEyIDIgMCAwMS0yLTJWNmMwLTEuMS45LTIgMi0yaDE0ek01IDE1LjVWMThoM3YtMi41SDV6bTE0LTVoLTlWMThoOXYtNy41ek0xOSA2aC00djIuNWg0VjZ6TTggNkg1djIuNWgzVjZ6bTUgMGgtM3YyLjVoM1Y2em0tOCA3LjVoM3YtM0g1djN6Ii8+PC9zdmc+JywidGFibGUtcm93LXByb3BlcnRpZXMiOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZmlsbC1ydWxlPSJub256ZXJvIiBkPSJNMTkgNGEyIDIgMCAwMTIgMnYxMmEyIDIgMCAwMS0yIDJINWEyIDIgMCAwMS0yLTJWNmMwLTEuMS45LTIgMi0yaDE0ek01IDE1djNoNnYtM0g1em0xNCAwaC02djNoNnYtM3ptMC05aC02djNoNlY2ek01IDloNlY2SDV2M3oiLz48L3N2Zz4nLCJ0YWJsZS1zcGxpdC1jZWxscyI6Jzxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48cGF0aCBmaWxsLXJ1bGU9Im5vbnplcm8iIGQ9Ik0xOSA0YTIgMiAwIDAxMiAydjEyYTIgMiAwIDAxLTIgMkg1YTIgMiAwIDAxLTItMlY2YzAtMS4xLjktMiAyLTJoMTR6TTggMTUuNUg1VjE4aDN2LTIuNXptMTEtNWgtOVYxOGg5di03LjV6bS0yLjUgMWwxIDEtMiAyIDIgMi0xIDEtMi0yLTIgMi0xLTEgMi0yLTItMiAxLTEgMiAyIDItMnptLTguNS0xSDV2M2gzdi0zek0xOSA2aC00djIuNWg0VjZ6TTggNkg1djIuNWgzVjZ6bTUgMGgtM3YyLjVoM1Y2eiIvPjwvc3ZnPicsInRhYmxlLXRvcC1oZWFkZXIiOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZD0iTTE5IDRhMiAyIDAgMDEyIDJ2MTJhMiAyIDAgMDEtMiAySDVhMiAyIDAgMDEtMi0yVjZjMC0xLjEuOS0yIDItMmgxNHptLTggMTFINXYzaDZ2LTN6bTggMGgtNnYzaDZ2LTN6bTAtNWgtNnYzaDZ2LTN6TTUgMTNoNnYtM0g1djN6Ii8+PC9zdmc+Jyx0YWJsZTonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxwYXRoIGZpbGwtcnVsZT0ibm9uemVybyIgZD0iTTE5IDRhMiAyIDAgMDEyIDJ2MTJhMiAyIDAgMDEtMiAySDVhMiAyIDAgMDEtMi0yVjZjMC0xLjEuOS0yIDItMmgxNHpNNSAxNHY0aDZ2LTRINXptMTQgMGgtNnY0aDZ2LTR6bTAtNmgtNnY0aDZWOHpNNSAxMmg2VjhINXY0eiIvPjwvc3ZnPicsdGVtcGxhdGU6Jzxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48cGF0aCBkPSJNMTkgMTl2LTFINXYxaDE0ek05IDE2di00YTUgNSAwIDExNiAwdjRoNGEyIDIgMCAwMTIgMnYzSDN2LTNjMC0xLjEuOS0yIDItMmg0em00IDB2LTVsLjgtLjZhMyAzIDAgMTAtMy42IDBsLjguNnY1aDJ6IiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L3N2Zz4nLCJ0ZW1wb3JhcnktcGxhY2Vob2xkZXIiOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PGcgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNOSA3LjZWNmgyLjVWNC41YS41LjUgMCAxMTEgMFY2SDE1djEuNmE4IDggMCAxMS02IDB6bS0yLjYgNS4zYS41LjUgMCAwMC4zLjZjLjMgMCAuNiAwIC42LS4zbC4xLS4yYTUgNSAwIDAxMy4zLTIuOGMuMy0uMS40LS40LjQtLjYtLjEtLjMtLjQtLjUtLjYtLjRhNiA2IDAgMDAtNC4xIDMuN3oiLz48Y2lyY2xlIGN4PSIxNCIgY3k9IjQiIHI9IjEiLz48Y2lyY2xlIGN4PSIxMiIgY3k9IjIiIHI9IjEiLz48Y2lyY2xlIGN4PSIxMCIgY3k9IjQiIHI9IjEiLz48L2c+PC9zdmc+JywidGV4dC1jb2xvciI6Jzxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48ZyBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGlkPSJ0b3gtaWNvbi10ZXh0LWNvbG9yX19jb2xvciIgZD0iTTMgMThoMTh2M0gzeiIvPjxwYXRoIGQ9Ik04LjcgMTZoLS44YS41LjUgMCAwMS0uNS0uNmwyLjctOWMuMS0uMy4zLS40LjUtLjRoMi44Yy4yIDAgLjQuMS41LjRsMi43IDlhLjUuNSAwIDAxLS41LjZoLS44YS41LjUgMCAwMS0uNC0uNGwtLjctMi4yYzAtLjMtLjMtLjQtLjUtLjRoLTMuNGMtLjIgMC0uNC4xLS41LjRsLS43IDIuMmMwIC4zLS4yLjQtLjQuNHptMi42LTcuNmwtLjYgMmEuNS41IDAgMDAuNS42aDEuNmEuNS41IDAgMDAuNS0uNmwtLjYtMmMwLS4zLS4zLS40LS41LS40aC0uNGMtLjIgMC0uNC4xLS41LjR6Ii8+PC9nPjwvc3ZnPicsdG9jOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZD0iTTUgNWMuNiAwIDEgLjQgMSAxcy0uNCAxLTEgMWExIDEgMCAxMTAtMnptMyAwaDExYy42IDAgMSAuNCAxIDFzLS40IDEtMSAxSDhhMSAxIDAgMTEwLTJ6bS0zIDhjLjYgMCAxIC40IDEgMXMtLjQgMS0xIDFhMSAxIDAgMDEwLTJ6bTMgMGgxMWMuNiAwIDEgLjQgMSAxcy0uNCAxLTEgMUg4YTEgMSAwIDAxMC0yem0wLTRjLjYgMCAxIC40IDEgMXMtLjQgMS0xIDFhMSAxIDAgMTEwLTJ6bTMgMGg4Yy42IDAgMSAuNCAxIDFzLS40IDEtMSAxaC04YTEgMSAwIDAxMC0yem0tMyA4Yy42IDAgMSAuNCAxIDFzLS40IDEtMSAxYTEgMSAwIDAxMC0yem0zIDBoOGMuNiAwIDEgLjQgMSAxcy0uNCAxLTEgMWgtOGExIDEgMCAwMTAtMnoiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPicsdHJhbnNsYXRlOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZD0iTTEyLjcgMTQuM2wtLjMuNy0uNC43LTIuMi0yLjItMy4xIDNjLS4zLjQtLjguNC0xIDBhLjcuNyAwIDAxMC0xbDMuMS0zQTEyLjQgMTIuNCAwIDAxNi43IDlIOGExMC4xIDEwLjEgMCAwMDEuNyAyLjRjLjUtLjUgMS0xLjEgMS40LTEuOGwuOS0ySDQuN2EuNy43IDAgMTEwLTEuNWg0LjR2LS43YzAtLjQuMy0uOC43LS44LjQgMCAuNy40LjcuOHYuN0gxNWMuNCAwIC44LjMuOC43IDAgLjQtLjQuOC0uOC44aC0xLjRhMTIuMyAxMi4zIDAgMDEtMSAyLjQgMTMuNSAxMy41IDAgMDEtMS43IDIuM2wxLjkgMS44em00LjMtM2wyLjcgNy4zYS41LjUgMCAwMS0uNC43IDEgMSAwIDAxLTEtLjdsLS42LTEuNWgtMy40bC0uNiAxLjVhMSAxIDAgMDEtMSAuNy41LjUgMCAwMS0uNC0uN2wyLjctNy40YTEgMSAwIDAxMiAwem0tMi4yIDQuNGgyLjRMMTYgMTIuNWwtMS4yIDMuMnoiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPicsdW5kZXJsaW5lOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZD0iTTE2IDVjLjYgMCAxIC40IDEgMXY1LjVhNCA0IDAgMDEtLjQgMS44bC0xIDEuNGE1LjMgNS4zIDAgMDEtNS41IDEgNSA1IDAgMDEtMS42LTFjLS41LS40LS44LS45LTEuMS0xLjRhNCA0IDAgMDEtLjQtMS44VjZjMC0uNi40LTEgMS0xczEgLjQgMSAxdjUuNWMwIC4zIDAgLjYuMiAxbC42LjdhMy4zIDMuMyAwIDAwMi4yLjggMy40IDMuNCAwIDAwMi4yLS44Yy4zLS4yLjQtLjUuNi0uOGwuMi0uOVY2YzAtLjYuNC0xIDEtMXpNOCAxN2g4Yy42IDAgMSAuNCAxIDFzLS40IDEtMSAxSDhhMSAxIDAgMDEwLTJ6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4nLHVuZG86Jzxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48cGF0aCBkPSJNNi40IDhIMTJjMy43IDAgNi4yIDIgNi44IDUuMS42IDIuNy0uNCA1LjYtMi4zIDYuOGExIDEgMCAwMS0xLTEuOGMxLjEtLjYgMS44LTIuNyAxLjQtNC42LS41LTIuMS0yLjEtMy41LTQuOS0zLjVINi40bDMuMyAzLjNhMSAxIDAgMTEtMS40IDEuNGwtNS01YTEgMSAwIDAxMC0xLjRsNS01YTEgMSAwIDAxMS40IDEuNEw2LjQgOHoiIGZpbGwtcnVsZT0ibm9uemVybyIvPjwvc3ZnPicsdW5saW5rOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZD0iTTYuMiAxMi4zYTEgMSAwIDAxMS40IDEuNGwtMiAyYTIgMiAwIDEwMi42IDIuOGw0LjgtNC44YTEgMSAwIDAwMC0xLjQgMSAxIDAgMTExLjQtMS4zIDIuOSAyLjkgMCAwMTAgNEw5LjYgMjBhMy45IDMuOSAwIDAxLTUuNS01LjVsMi0yem0xMS42LS42YTEgMSAwIDAxLTEuNC0xLjRsMi4xLTJhMiAyIDAgMTAtMi43LTIuOEwxMSAxMC4zYTEgMSAwIDAwMCAxLjRBMSAxIDAgMTE5LjYgMTNhMi45IDIuOSAwIDAxMC00TDE0LjQgNGEzLjkgMy45IDAgMDE1LjUgNS41bC0yIDJ6TTcuNiA2LjNhLjguOCAwIDAxLTEgMS4xTDMuMyA0LjJhLjcuNyAwIDExMS0xbDMuMiAzLjF6TTUuMSA4LjZhLjguOCAwIDAxMCAxLjVIM2EuOC44IDAgMDEwLTEuNUg1em01LTMuNWEuOC44IDAgMDEtMS41IDBWM2EuOC44IDAgMDExLjUgMFY1em02IDExLjhhLjguOCAwIDAxMS0xbDMuMiAzLjJhLjguOCAwIDAxLTEgMUwxNiAxN3ptLTIuMiAyYS44LjggMCAwMTEuNSAwVjIxYS44LjggMCAwMS0xLjUgMFYxOXptNS0zLjVhLjcuNyAwIDExMC0xLjVIMjFhLjguOCAwIDAxMCAxLjVIMTl6IiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L3N2Zz4nLHVubG9jazonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxwYXRoIGQ9Ik0xNiA1Yy44IDAgMS41LjMgMi4xLjkuNi42LjkgMS4zLjkgMi4xdjNoLTJWOGExIDEgMCAwMC0uMy0uN0ExIDEgMCAwMDE2IDdoLTJhMSAxIDAgMDAtLjcuMyAxIDEgMCAwMC0uMy43djNoLjNjLjIgMCAuMyAwIC41LjJsLjIuNnY3LjRjMCAuMyAwIC40LS4yLjZsLS42LjJINC44Yy0uMyAwLS40IDAtLjYtLjJhLjcuNyAwIDAxLS4yLS42di03LjRjMC0uMyAwLS40LjItLjZsLjUtLjJIMTFWOGMwLS44LjMtMS41LjktMi4xLjYtLjYgMS4zLS45IDIuMS0uOWgyeiIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zdmc+JywidW5vcmRlcmVkLWxpc3QiOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZD0iTTExIDVoOGMuNiAwIDEgLjQgMSAxcy0uNCAxLTEgMWgtOGExIDEgMCAwMTAtMnptMCA2aDhjLjYgMCAxIC40IDEgMXMtLjQgMS0xIDFoLThhMSAxIDAgMDEwLTJ6bTAgNmg4Yy42IDAgMSAuNCAxIDFzLS40IDEtMSAxaC04YTEgMSAwIDAxMC0yek00LjUgNmMwLS40LjEtLjguNC0xIC4zLS40LjctLjUgMS4xLS41LjQgMCAuOC4xIDEgLjQuNC4zLjUuNy41IDEuMSAwIC40LS4xLjgtLjQgMS0uMy40LS43LjUtMS4xLjUtLjQgMC0uOC0uMS0xLS40LS40LS4zLS41LS43LS41LTEuMXptMCA2YzAtLjQuMS0uOC40LTEgLjMtLjQuNy0uNSAxLjEtLjUuNCAwIC44LjEgMSAuNC40LjMuNS43LjUgMS4xIDAgLjQtLjEuOC0uNCAxLS4zLjQtLjcuNS0xLjEuNS0uNCAwLS44LS4xLTEtLjQtLjQtLjMtLjUtLjctLjUtMS4xem0wIDZjMC0uNC4xLS44LjQtMSAuMy0uNC43LS41IDEuMS0uNS40IDAgLjguMSAxIC40LjQuMy41LjcuNSAxLjEgMCAuNC0uMS44LS40IDEtLjMuNC0uNy41LTEuMS41LS40IDAtLjgtLjEtMS0uNC0uNC0uMy0uNS0uNy0uNS0xLjF6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4nLHVuc2VsZWN0ZWQ6Jzxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48cGF0aCBmaWxsLXJ1bGU9Im5vbnplcm8iIGQ9Ik02IDRoMTJhMiAyIDAgMDEyIDJ2MTJhMiAyIDAgMDEtMiAySDZhMiAyIDAgMDEtMi0yVjZjMC0xLjEuOS0yIDItMnptMCAxYTEgMSAwIDAwLTEgMXYxMmMwIC42LjQgMSAxIDFoMTJjLjYgMCAxLS40IDEtMVY2YzAtLjYtLjQtMS0xLTFINnoiLz48L3N2Zz4nLHVwbG9hZDonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxwYXRoIGQ9Ik0xOCAxOXYtMmExIDEgMCAwMTIgMHYzYzAgLjYtLjQgMS0xIDFINWExIDEgMCAwMS0xLTF2LTNhMSAxIDAgMDEyIDB2MmgxMnpNMTEgNi40TDguNyA4LjdhMSAxIDAgMDEtMS40LTEuNGw0LTRhMSAxIDAgMDExLjQgMGw0IDRhMSAxIDAgMTEtMS40IDEuNEwxMyA2LjRWMTZhMSAxIDAgMDEtMiAwVjYuNHoiIGZpbGwtcnVsZT0ibm9uemVybyIvPjwvc3ZnPicsdXNlcjonPHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxwYXRoIGQ9Ik0xMiAyNGExMiAxMiAwIDExMC0yNCAxMiAxMiAwIDAxMCAyNHptLTguNy01LjNhMTEgMTEgMCAwMDE3LjQgMEMxOS40IDE2LjMgMTQuNiAxNSAxMiAxNWMtMi42IDAtNy40IDEuMy04LjcgMy43ek0xMiAxM2MyLjIgMCA0LTIgNC00LjVTMTQuMiA0IDEyIDQgOCA2IDggOC41IDkuOCAxMyAxMiAxM3oiIGZpbGwtcnVsZT0ibm9uemVybyIvPjwvc3ZnPicsdmlzdWFsYmxvY2tzOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZD0iTTkgMTl2Mkg3di0yaDJ6bS00IDB2MmEyIDIgMCAwMS0yLTJoMnptOCAwdjJoLTJ2LTJoMnptOCAwYTIgMiAwIDAxLTIgMnYtMmgyem0tNCAwdjJoLTJ2LTJoMnpNMTUgN2ExIDEgMCAwMTAgMnY3YTEgMSAwIDAxLTIgMFY5aC0xdjdhMSAxIDAgMDEtMiAwdi00YTIuNSAyLjUgMCAwMS0uMi01SDE1ek01IDE1djJIM3YtMmgyem0xNiAwdjJoLTJ2LTJoMnpNNSAxMXYySDN2LTJoMnptMTYgMHYyaC0ydi0yaDJ6TTUgN3YySDNWN2gyem0xNiAwdjJoLTJWN2gyek01IDN2MkgzYzAtMS4xLjktMiAyLTJ6bTggMHYyaC0yVjNoMnptNiAwYTIgMiAwIDAxMiAyaC0yVjN6TTkgM3YySDdWM2gyem04IDB2MmgtMlYzaDJ6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4nLHZpc3VhbGNoYXJzOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZD0iTTEwIDVoN2ExIDEgMCAwMTAgMmgtMXYxMWExIDEgMCAwMS0yIDBWN2gtMnYxMWExIDEgMCAwMS0yIDB2LTZjLS41IDAtMSAwLTEuNC0uM0EzLjQgMy40IDAgMDE2LjggMTBhMy4zIDMuMyAwIDAxMC0yLjggMy40IDMuNCAwIDAxMS44LTEuOEwxMCA1eiIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zdmc+Jyx3YXJuaW5nOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZD0iTTE5LjggMTguM2MuMi41LjMuOSAwIDEuMi0uMS4zLS41LjUtMSAuNUg1LjJjLS41IDAtLjktLjItMS0uNS0uMy0uMy0uMi0uNyAwLTEuMkwxMSA0LjdsLjUtLjUuNS0uMmMuMiAwIC4zIDAgLjUuMi4yIDAgLjMuMy41LjVsNi44IDEzLjZ6TTEyIDE4Yy4zIDAgLjUtLjEuNy0uMy4yLS4yLjMtLjQuMy0uN2ExIDEgMCAwMC0uMy0uNyAxIDEgMCAwMC0uNy0uMyAxIDEgMCAwMC0uNy4zIDEgMSAwIDAwLS4zLjdjMCAuMy4xLjUuMy43LjIuMi40LjMuNy4zem0uNy0zbC4zLTRhMSAxIDAgMDAtLjMtLjcgMSAxIDAgMDAtLjctLjMgMSAxIDAgMDAtLjcuMyAxIDEgMCAwMC0uMy43bC4zIDRoMS40eiIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zdmc+Jywiem9vbS1pbiI6Jzxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48cGF0aCBkPSJNMTYgMTcuM2E4IDggMCAxMTEuNC0xLjRsNC4zIDQuNGExIDEgMCAwMS0xLjQgMS40bC00LjQtNC4zem0tNS0uM2E2IDYgMCAxMDAtMTIgNiA2IDAgMDAwIDEyem0tMS05YTEgMSAwIDAxMiAwdjZhMSAxIDAgMDEtMiAwVjh6bS0yIDRhMSAxIDAgMDEwLTJoNmExIDEgMCAwMTAgMkg4eiIgZmlsbC1ydWxlPSJub256ZXJvIi8+PC9zdmc+Jywiem9vbS1vdXQiOic8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PHBhdGggZD0iTTE2IDE3LjNhOCA4IDAgMTExLjQtMS40bDQuMyA0LjRhMSAxIDAgMDEtMS40IDEuNGwtNC40LTQuM3ptLTUtLjNhNiA2IDAgMTAwLTEyIDYgNiAwIDAwMCAxMnptLTMtNWExIDEgMCAwMTAtMmg2YTEgMSAwIDAxMCAySDh6IiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L3N2Zz4nfX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/jquery.tinymce.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICovCi8qKgogKiBKcXVlcnkgaW50ZWdyYXRpb24gcGx1Z2luLgogKgogKiBAY2xhc3MgdGlueW1jZS5jb3JlLkpxdWVyeUludGVncmF0aW9uCiAqIEBwcml2YXRlCiAqLwohZnVuY3Rpb24oKXt2YXIgZixjLHUscCxkLHM9W107ZD0idW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6d2luZG93LHA9ZC5qUXVlcnk7dmFyIHY9ZnVuY3Rpb24oKXsKLy8gUmVmZXJlbmNlIHRvIHRpbnltY2UgbmVlZHMgdG8gYmUgbGF6aWx5IGV2YWx1YXRlZCBzaW5jZSB0aW55bWNlCi8vIG1pZ2h0IGJlIGxvYWRlZCB0aHJvdWdoIHRoZSBjb21wcmVzc29yIG9yIG90aGVyIG1lYW5zCnJldHVybiBkLnRpbnltY2V9O3AuZm4udGlueW1jZT1mdW5jdGlvbihvKXt2YXIgZSx0LGksbD10aGlzLHI9IiI7Ci8vIE5vIG1hdGNoIHRoZW4ganVzdCBpZ25vcmUgdGhlIGNhbGwKaWYoIWwubGVuZ3RoKXJldHVybiBsOwovLyBHZXQgZWRpdG9yIGluc3RhbmNlCmlmKCFvKXJldHVybiB2KCk/digpLmdldChsWzBdLmlkKTpudWxsO2wuY3NzKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7Ly8gSGlkZSB0ZXh0YXJlYSB0byBhdm9pZCBmbGlja2VyCnZhciBuPWZ1bmN0aW9uKCl7dmFyIGE9W10sYz0wOwovLyBBcHBseSBwYXRjaGVzIHRvIHRoZSBqUXVlcnkgb2JqZWN0LCBvbmx5IG9uY2UKdXx8KG0oKSx1PSEwKSwKLy8gQ3JlYXRlIGFuIGVkaXRvciBpbnN0YW5jZSBmb3IgZWFjaCBtYXRjaGVkIG5vZGUKbC5lYWNoKGZ1bmN0aW9uKGUsdCl7dmFyIG4saT10LmlkLHI9by5vbmluaXQ7Ci8vIEdlbmVyYXRlIHVuaXF1ZSBpZCBmb3IgdGFyZ2V0IGVsZW1lbnQgaWYgbmVlZGVkCml8fCh0LmlkPWk9digpLkRPTS51bmlxdWVJZCgpKSwKLy8gT25seSBpbml0IHRoZSBlZGl0b3Igb25jZQp2KCkuZ2V0KGkpfHwoCi8vIENyZWF0ZSBlZGl0b3IgaW5zdGFuY2UgYW5kIHJlbmRlciBpdApuPXYoKS5jcmVhdGVFZGl0b3IoaSxvKSxhLnB1c2gobiksbi5vbigiaW5pdCIsZnVuY3Rpb24oKXt2YXIgZSx0PXI7bC5jc3MoInZpc2liaWxpdHkiLCIiKSwKLy8gUnVuIHRoaXMgaWYgdGhlIG9uaW5pdCBzZXR0aW5nIGlzIGRlZmluZWQKLy8gdGhpcyBsb2dpYyB3aWxsIGZpcmUgdGhlIG9uaW5pdCBjYWxsYmFjayBvbmVzIGVhY2gKLy8gbWF0Y2hlZCBlZGl0b3IgaW5zdGFuY2UgaXMgaW5pdGlhbGl6ZWQKciYmKytjPT1hLmxlbmd0aCYmKCJzdHJpbmciPT10eXBlb2YgdCYmKGU9LTE9PT10LmluZGV4T2YoIi4iKT9udWxsOnYoKS5yZXNvbHZlKHQucmVwbGFjZSgvXC5cdyskLywiIikpLHQ9digpLnJlc29sdmUodCkpLAovLyBDYWxsIHRoZSBvbmluaXQgZnVuY3Rpb24gd2l0aCB0aGUgb2JqZWN0CnQuYXBwbHkoZXx8digpLGEpKX0pKX0pLAovLyBSZW5kZXIgdGhlIGVkaXRvciBpbnN0YW5jZXMgaW4gYSBzZXBhcmF0ZSBsb29wIHNpbmNlIHdlCi8vIG5lZWQgdG8gaGF2ZSB0aGUgZnVsbCBlZGl0b3JzIGFycmF5IHVzZWQgaW4gdGhlIG9uSW5pdCBjYWxscwpwLmVhY2goYSxmdW5jdGlvbihlLHQpe3QucmVuZGVyKCl9KX07Ci8vIExvYWQgVGlueU1DRSBvbiBkZW1hbmQsIGlmIHdlIG5lZWQgdG8KaWYoZC50aW55bWNlfHxjfHwhKGU9by5zY3JpcHRfdXJsKSkKLy8gRGVsYXkgdGhlIGluaXQgY2FsbCB1bnRpbCB0aW55bWNlIGlzIGxvYWRlZAoxPT09Yz9zLnB1c2gobik6bigpO2Vsc2V7Yz0xLHQ9ZS5zdWJzdHJpbmcoMCxlLmxhc3RJbmRleE9mKCIvIikpLAovLyBDaGVjayBpZiBpdCdzIGEgZGV2L3NyYyB2ZXJzaW9uIHRoZXkgd2FudCB0byBsb2FkIHRoZW4KLy8gbWFrZSBzdXJlIHRoYXQgYWxsIHBsdWdpbnMsIHRoZW1lcyBldGMgYXJlIGxvYWRlZCBpbiBzb3VyY2UgbW9kZSBhcyB3ZWxsCi0xIT1lLmluZGV4T2YoIi5taW4iKSYmKHI9Ii5taW4iKSwKLy8gU2V0dXAgdGlueU1DRVByZUluaXQgb2JqZWN0IHRoaXMgd2lsbCBsYXRlciBiZSB1c2VkIGJ5IHRoZSBUaW55TUNFCi8vIGNvcmUgc2NyaXB0IHRvIGxvY2F0ZSBvdGhlciByZXNvdXJjZXMgbGlrZSBDU1MgZmlsZXMsIGRpYWxvZ3MgZXRjCi8vIFlvdSBjYW4gYWxzbyBwcmVkZWZpbmVkIGEgdGlueU1DRVByZUluaXQgb2JqZWN0IGFuZCB0aGVuIGl0IHdpbGwgdXNlIHRoYXQgaW5zdGVhZApkLnRpbnltY2U9ZC50aW55TUNFUHJlSW5pdHx8e2Jhc2U6dCxzdWZmaXg6cn0sCi8vIHVybCBjb250YWlucyBnemlwIHRoZW4gd2UgYXNzdW1lIGl0J3MgYSBjb21wcmVzc29yCi0xIT1lLmluZGV4T2YoImd6aXAiKSYmKGk9by5sYW5ndWFnZXx8ImVuIixlPWUrKC9cPy8udGVzdChlKT8iJiI6Ij8iKSsianM9dHJ1ZSZjb3JlPXRydWUmc3VmZml4PSIrZXNjYXBlKHIpKyImdGhlbWVzPSIrZXNjYXBlKG8udGhlbWV8fCJtb2Rlcm4iKSsiJnBsdWdpbnM9Iitlc2NhcGUoby5wbHVnaW5zfHwiIikrIiZsYW5ndWFnZXM9IisoaXx8IiIpLAovLyBDaGVjayBpZiBjb21wcmVzc29yIHNjcmlwdCBpcyBhbHJlYWR5IGxvYWRlZCBvdGhlcndpc2Ugc2V0dXAgYSBiYXNpYyBvbmUKZC50aW55TUNFX0dafHwoZC50aW55TUNFX0daPXtzdGFydDpmdW5jdGlvbigpe3ZhciBuPWZ1bmN0aW9uKGUpe3YoKS5TY3JpcHRMb2FkZXIubWFya0RvbmUodigpLmJhc2VVUkkudG9BYnNvbHV0ZShlKSl9OwovLyBBZGQgY29yZSBsYW5ndWFnZXMKbigibGFuZ3MvIitpKyIuanMiKSwKLy8gQWRkIHRoZW1lcyB3aXRoIGxhbmd1YWdlcwpuKCJ0aGVtZXMvIitvLnRoZW1lKyIvdGhlbWUiK3IrIi5qcyIpLG4oInRoZW1lcy8iK28udGhlbWUrIi9sYW5ncy8iK2krIi5qcyIpLAovLyBBZGQgcGx1Z2lucyB3aXRoIGxhbmd1YWdlcwpwLmVhY2goby5wbHVnaW5zLnNwbGl0KCIsIiksZnVuY3Rpb24oZSx0KXt0JiYobigicGx1Z2lucy8iK3QrIi9wbHVnaW4iK3IrIi5qcyIpLG4oInBsdWdpbnMvIit0KyIvbGFuZ3MvIitpKyIuanMiKSl9KX0sZW5kOmZ1bmN0aW9uKCl7fX0pKTt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTthLnR5cGU9InRleHQvamF2YXNjcmlwdCIsYS5vbmxvYWQ9YS5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oZSl7ZT1lfHx3aW5kb3cuZXZlbnQsMj09PWN8fCJsb2FkIiE9ZS50eXBlJiYhL2NvbXBsZXRlfGxvYWRlZC8udGVzdChhLnJlYWR5U3RhdGUpfHwodigpLmRvbS5FdmVudC5kb21Mb2FkZWQ9MSxjPTIsCi8vIEV4ZWN1dGUgY2FsbGJhY2sgYWZ0ZXIgbWFpbnNjcmlwdCBoYXMgYmVlbiBsb2FkZWQgYW5kIGJlZm9yZSB0aGUgaW5pdGlhbGl6YXRpb24gb2NjdXJzCm8uc2NyaXB0X2xvYWRlZCYmby5zY3JpcHRfbG9hZGVkKCksbigpLHAuZWFjaChzLGZ1bmN0aW9uKGUsdCl7dCgpfSkpfSxhLnNyYz1lLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSl9cmV0dXJuIGx9LAovLyBBZGQgOnRpbnltY2UgcHNldWRvIHNlbGVjdG9yIHRoaXMgd2lsbCBzZWxlY3QgZWxlbWVudHMgdGhhdCBoYXMgYmVlbiBjb252ZXJ0ZWQgaW50byBlZGl0b3IgaW5zdGFuY2VzCi8vIGl0J3Mgbm93IHBvc3NpYmxlIHRvIHVzZSB0aGluZ3MgbGlrZSAkKCcqOnRpbnltY2UnKSB0byBnZXQgYWxsIFRpbnlNQ0UgYm91bmQgZWxlbWVudHMuCnAuZXh0ZW5kKHAuZXhwclsiOiJdLHt0aW55bWNlOmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiEhKGUuaWQmJiJ0aW55bWNlImluIGQmJih0PXYoKS5nZXQoZS5pZCkpJiZ0LmVkaXRvck1hbmFnZXI9PT12KCkpfX0pOwovLyBUaGlzIGZ1bmN0aW9uIHBhdGNoZXMgaW50ZXJuYWwgalF1ZXJ5IGZ1bmN0aW9ucyBzbyB0aGF0IGlmCi8vIHlvdSBmb3IgZXhhbXBsZSByZW1vdmUgYW4gZGl2IGVsZW1lbnQgY29udGFpbmluZyBhbiBlZGl0b3IgaXQncwovLyBhdXRvbWF0aWNhbGx5IGRlc3Ryb3llZCBieSB0aGUgVGlueU1DRSBBUEkKdmFyIG09ZnVuY3Rpb24oKXsKLy8gUmVtb3ZlcyBhbnkgY2hpbGQgZWRpdG9yIGluc3RhbmNlcyBieSBsb29raW5nIGZvciBlZGl0b3Igd3JhcHBlciBlbGVtZW50cwp2YXIgcj1mdW5jdGlvbihlKXsKLy8gSWYgdGhlIGZ1bmN0aW9uIGlzIHJlbW92ZQoicmVtb3ZlIj09PWUmJnRoaXMuZWFjaChmdW5jdGlvbihlLHQpe3ZhciBuPWwodCk7biYmbi5yZW1vdmUoKX0pLHRoaXMuZmluZCgic3Bhbi5tY2VFZGl0b3IsZGl2Lm1jZUVkaXRvciIpLmVhY2goZnVuY3Rpb24oZSx0KXt2YXIgbj12KCkuZ2V0KHQuaWQucmVwbGFjZSgvX3BhcmVudCQvLCIiKSk7biYmbi5yZW1vdmUoKX0pfSxvPWZ1bmN0aW9uKGkpe3ZhciBlLHQ9dGhpczsKLy8gSGFuZGxlIHNldCB2YWx1ZQovKmpzaGludCBlcW51bGw6dHJ1ZSAqL2lmKG51bGwhPWkpci5jYWxsKHQpLAovLyBTYXZlcyB0aGUgY29udGVudHMgYmVmb3JlIGdldC9zZXQgdmFsdWUgb2YgdGV4dGFyZWEvZGl2CnQuZWFjaChmdW5jdGlvbihlLHQpe3ZhciBuOyhuPXYoKS5nZXQodC5pZCkpJiZuLnNldENvbnRlbnQoaSl9KTtlbHNlIGlmKDA8dC5sZW5ndGgmJihlPXYoKS5nZXQodFswXS5pZCkpKXJldHVybiBlLmdldENvbnRlbnQoKX0sbD1mdW5jdGlvbihlKXt2YXIgdD1udWxsO3JldHVybiBlJiZlLmlkJiZkLnRpbnltY2UmJih0PXYoKS5nZXQoZS5pZCkpLHR9LHU9ZnVuY3Rpb24oZSl7cmV0dXJuISEoZSYmZS5sZW5ndGgmJmQudGlueW1jZSYmZS5pcygiOnRpbnltY2UiKSl9LHM9e307Ci8vIExvYWRzIG9yIHNhdmVzIGNvbnRlbnRzIGZyb20vdG8gdGV4dGFyZWEgaWYgdGhlIHZhbHVlCi8vIGFyZ3VtZW50IGlzIGRlZmluZWQgaXQgd2lsbCBzZXQgdGhlIFRpbnlNQ0UgaW50ZXJuYWwgY29udGVudHMKLy8gUGF0Y2ggc29tZSBzZXR0ZXIvZ2V0dGVyIGZ1bmN0aW9ucyB0aGVzZSB3aWxsCi8vIG5vdyBiZSBhYmxlIHRvIHNldC9nZXQgdGhlIGNvbnRlbnRzIG9mIGVkaXRvciBpbnN0YW5jZXMgZm9yCi8vIGV4YW1wbGUgJCgnI2VkaXRvcmlkJykuaHRtbCgnQ29udGVudCcpOyB3aWxsIHVwZGF0ZSB0aGUgVGlueU1DRSBpZnJhbWUgaW5zdGFuY2UKcC5lYWNoKFsidGV4dCIsImh0bWwiLCJ2YWwiXSxmdW5jdGlvbihlLHQpe3ZhciBhPXNbdF09cC5mblt0XSxjPSJ0ZXh0Ij09PXQ7cC5mblt0XT1mdW5jdGlvbihlKXt2YXIgdD10aGlzO2lmKCF1KHQpKXJldHVybiBhLmFwcGx5KHQsYXJndW1lbnRzKTtpZihlIT09ZilyZXR1cm4gby5jYWxsKHQuZmlsdGVyKCI6dGlueW1jZSIpLGUpLGEuYXBwbHkodC5ub3QoIjp0aW55bWNlIiksYXJndW1lbnRzKSx0Oy8vIHJldHVybiBvcmlnaW5hbCBzZXQgZm9yIGNoYWluaW5nCnZhciBpPSIiLHI9YXJndW1lbnRzO3JldHVybihjP3Q6dC5lcSgwKSkuZWFjaChmdW5jdGlvbihlLHQpe3ZhciBuPWwodCk7aSs9bj9jP24uZ2V0Q29udGVudCgpLnJlcGxhY2UoLzwoPzoiW14iXSoifCdbXiddKid8W14nIj5dKSo+L2csIiIpOm4uZ2V0Q29udGVudCh7c2F2ZTohMH0pOmEuYXBwbHkocCh0KSxyKX0pLGl9fSksCi8vIE1ha2VzIGl0IHBvc3NpYmxlIHRvIHVzZSAkKCcjaWQnKS5hcHBlbmQoImNvbnRlbnQiKTsgdG8gYXBwZW5kIGNvbnRlbnRzIHRvIHRoZSBUaW55TUNFIGVkaXRvciBpZnJhbWUKcC5lYWNoKFsiYXBwZW5kIiwicHJlcGVuZCJdLGZ1bmN0aW9uKGUsdCl7dmFyIG49c1t0XT1wLmZuW3RdLHI9InByZXBlbmQiPT09dDtwLmZuW3RdPWZ1bmN0aW9uKGkpe3ZhciBlPXRoaXM7cmV0dXJuIHUoZSk/aSE9PWY/KCJzdHJpbmciPT10eXBlb2YgaSYmZS5maWx0ZXIoIjp0aW55bWNlIikuZWFjaChmdW5jdGlvbihlLHQpe3ZhciBuPWwodCk7biYmbi5zZXRDb250ZW50KHI/aStuLmdldENvbnRlbnQoKTpuLmdldENvbnRlbnQoKStpKX0pLG4uYXBwbHkoZS5ub3QoIjp0aW55bWNlIiksYXJndW1lbnRzKSxlKTp2b2lkIDA6bi5hcHBseShlLGFyZ3VtZW50cyl9fSksCi8vIE1ha2VzIHN1cmUgdGhhdCB0aGUgZWRpdG9yIGluc3RhbmNlIGdldHMgcHJvcGVybHkgZGVzdHJveWVkIHdoZW4gdGhlIHBhcmVudCBlbGVtZW50IGlzIHJlbW92ZWQKcC5lYWNoKFsicmVtb3ZlIiwicmVwbGFjZVdpdGgiLCJyZXBsYWNlQWxsIiwiZW1wdHkiXSxmdW5jdGlvbihlLHQpe3ZhciBuPXNbdF09cC5mblt0XTtwLmZuW3RdPWZ1bmN0aW9uKCl7cmV0dXJuIHIuY2FsbCh0aGlzLHQpLG4uYXBwbHkodGhpcyxhcmd1bWVudHMpfX0pLHMuYXR0cj1wLmZuLmF0dHIsCi8vIE1ha2VzIHN1cmUgdGhhdCAkKCcjdGlueW1jZV9pZCcpLmF0dHIoJ3ZhbHVlJykgZ2V0cyB0aGUgZWRpdG9ycyBjdXJyZW50IEhUTUwgY29udGVudHMKcC5mbi5hdHRyPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcyxpPWFyZ3VtZW50cztpZighZXx8InZhbHVlIiE9PWV8fCF1KG4pKXJldHVybiBzLmF0dHIuYXBwbHkobixpKTtpZih0IT09ZilyZXR1cm4gby5jYWxsKG4uZmlsdGVyKCI6dGlueW1jZSIpLHQpLHMuYXR0ci5hcHBseShuLm5vdCgiOnRpbnltY2UiKSxpKSxuOy8vIHJldHVybiBvcmlnaW5hbCBzZXQgZm9yIGNoYWluaW5nCnZhciByPW5bMF0sYT1sKHIpO3JldHVybiBhP2EuZ2V0Q29udGVudCh7c2F2ZTohMH0pOnMuYXR0ci5hcHBseShwKHIpLGkpfX19KCk7]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/langs/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/langs/readme.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[VGhpcyBpcyB3aGVyZSBsYW5ndWFnZSBmaWxlcyBzaG91bGQgYmUgcGxhY2VkLgoKUGxlYXNlIERPIE5PVCB0cmFuc2xhdGUgdGhlc2UgZGlyZWN0bHkgdXNlIHRoaXMgc2VydmljZTogaHR0cHM6Ly93d3cudHJhbnNpZmV4LmNvbS9wcm9qZWN0cy9wL3RpbnltY2UvCg==]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/license.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ICAgICAgR05VIExFU1NFUiBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFCiAgICAgICAgICAgVmVyc2lvbiAyLjEsIEZlYnJ1YXJ5IDE5OTkKCiBDb3B5cmlnaHQgKEMpIDE5OTEsIDE5OTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKIEV2ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcwogb2YgdGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQgY2hhbmdpbmcgaXQgaXMgbm90IGFsbG93ZWQuCgpbVGhpcyBpcyB0aGUgZmlyc3QgcmVsZWFzZWQgdmVyc2lvbiBvZiB0aGUgTGVzc2VyIEdQTC4gIEl0IGFsc28gY291bnRzCiBhcyB0aGUgc3VjY2Vzc29yIG9mIHRoZSBHTlUgTGlicmFyeSBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLCBoZW5jZQogdGhlIHZlcnNpb24gbnVtYmVyIDIuMS5dCgogICAgICAgICAgUHJlYW1ibGUKCiAgVGhlIGxpY2Vuc2VzIGZvciBtb3N0IHNvZnR3YXJlIGFyZSBkZXNpZ25lZCB0byB0YWtlIGF3YXkgeW91cgpmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgaXQuICBCeSBjb250cmFzdCwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwpMaWNlbnNlcyBhcmUgaW50ZW5kZWQgdG8gZ3VhcmFudGVlIHlvdXIgZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlCmZyZWUgc29mdHdhcmUtLXRvIG1ha2Ugc3VyZSB0aGUgc29mdHdhcmUgaXMgZnJlZSBmb3IgYWxsIGl0cyB1c2Vycy4KCiAgVGhpcyBsaWNlbnNlLCB0aGUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFwcGxpZXMgdG8gc29tZQpzcGVjaWFsbHkgZGVzaWduYXRlZCBzb2Z0d2FyZSBwYWNrYWdlcy0tdHlwaWNhbGx5IGxpYnJhcmllcy0tb2YgdGhlCkZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBhbmQgb3RoZXIgYXV0aG9ycyB3aG8gZGVjaWRlIHRvIHVzZSBpdC4gIFlvdQpjYW4gdXNlIGl0IHRvbywgYnV0IHdlIHN1Z2dlc3QgeW91IGZpcnN0IHRoaW5rIGNhcmVmdWxseSBhYm91dCB3aGV0aGVyCnRoaXMgbGljZW5zZSBvciB0aGUgb3JkaW5hcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyB0aGUgYmV0dGVyCnN0cmF0ZWd5IHRvIHVzZSBpbiBhbnkgcGFydGljdWxhciBjYXNlLCBiYXNlZCBvbiB0aGUgZXhwbGFuYXRpb25zIGJlbG93LgoKICBXaGVuIHdlIHNwZWFrIG9mIGZyZWUgc29mdHdhcmUsIHdlIGFyZSByZWZlcnJpbmcgdG8gZnJlZWRvbSBvZiB1c2UsCm5vdCBwcmljZS4gIE91ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlcyBhcmUgZGVzaWduZWQgdG8gbWFrZSBzdXJlIHRoYXQKeW91IGhhdmUgdGhlIGZyZWVkb20gdG8gZGlzdHJpYnV0ZSBjb3BpZXMgb2YgZnJlZSBzb2Z0d2FyZSAoYW5kIGNoYXJnZQpmb3IgdGhpcyBzZXJ2aWNlIGlmIHlvdSB3aXNoKTsgdGhhdCB5b3UgcmVjZWl2ZSBzb3VyY2UgY29kZSBvciBjYW4gZ2V0Cml0IGlmIHlvdSB3YW50IGl0OyB0aGF0IHlvdSBjYW4gY2hhbmdlIHRoZSBzb2Z0d2FyZSBhbmQgdXNlIHBpZWNlcyBvZgppdCBpbiBuZXcgZnJlZSBwcm9ncmFtczsgYW5kIHRoYXQgeW91IGFyZSBpbmZvcm1lZCB0aGF0IHlvdSBjYW4gZG8KdGhlc2UgdGhpbmdzLgoKICBUbyBwcm90ZWN0IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIG1ha2UgcmVzdHJpY3Rpb25zIHRoYXQgZm9yYmlkCmRpc3RyaWJ1dG9ycyB0byBkZW55IHlvdSB0aGVzZSByaWdodHMgb3IgdG8gYXNrIHlvdSB0byBzdXJyZW5kZXIgdGhlc2UKcmlnaHRzLiAgVGhlc2UgcmVzdHJpY3Rpb25zIHRyYW5zbGF0ZSB0byBjZXJ0YWluIHJlc3BvbnNpYmlsaXRpZXMgZm9yCnlvdSBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIGxpYnJhcnkgb3IgaWYgeW91IG1vZGlmeSBpdC4KCiAgRm9yIGV4YW1wbGUsIGlmIHlvdSBkaXN0cmlidXRlIGNvcGllcyBvZiB0aGUgbGlicmFyeSwgd2hldGhlciBncmF0aXMKb3IgZm9yIGEgZmVlLCB5b3UgbXVzdCBnaXZlIHRoZSByZWNpcGllbnRzIGFsbCB0aGUgcmlnaHRzIHRoYXQgd2UgZ2F2ZQp5b3UuICBZb3UgbXVzdCBtYWtlIHN1cmUgdGhhdCB0aGV5LCB0b28sIHJlY2VpdmUgb3IgY2FuIGdldCB0aGUgc291cmNlCmNvZGUuICBJZiB5b3UgbGluayBvdGhlciBjb2RlIHdpdGggdGhlIGxpYnJhcnksIHlvdSBtdXN0IHByb3ZpZGUKY29tcGxldGUgb2JqZWN0IGZpbGVzIHRvIHRoZSByZWNpcGllbnRzLCBzbyB0aGF0IHRoZXkgY2FuIHJlbGluayB0aGVtCndpdGggdGhlIGxpYnJhcnkgYWZ0ZXIgbWFraW5nIGNoYW5nZXMgdG8gdGhlIGxpYnJhcnkgYW5kIHJlY29tcGlsaW5nCml0LiAgQW5kIHlvdSBtdXN0IHNob3cgdGhlbSB0aGVzZSB0ZXJtcyBzbyB0aGV5IGtub3cgdGhlaXIgcmlnaHRzLgoKICBXZSBwcm90ZWN0IHlvdXIgcmlnaHRzIHdpdGggYSB0d28tc3RlcCBtZXRob2Q6ICgxKSB3ZSBjb3B5cmlnaHQgdGhlCmxpYnJhcnksIGFuZCAoMikgd2Ugb2ZmZXIgeW91IHRoaXMgbGljZW5zZSwgd2hpY2ggZ2l2ZXMgeW91IGxlZ2FsCnBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IHRoZSBsaWJyYXJ5LgoKICBUbyBwcm90ZWN0IGVhY2ggZGlzdHJpYnV0b3IsIHdlIHdhbnQgdG8gbWFrZSBpdCB2ZXJ5IGNsZWFyIHRoYXQKdGhlcmUgaXMgbm8gd2FycmFudHkgZm9yIHRoZSBmcmVlIGxpYnJhcnkuICBBbHNvLCBpZiB0aGUgbGlicmFyeSBpcwptb2RpZmllZCBieSBzb21lb25lIGVsc2UgYW5kIHBhc3NlZCBvbiwgdGhlIHJlY2lwaWVudHMgc2hvdWxkIGtub3cKdGhhdCB3aGF0IHRoZXkgaGF2ZSBpcyBub3QgdGhlIG9yaWdpbmFsIHZlcnNpb24sIHNvIHRoYXQgdGhlIG9yaWdpbmFsCmF1dGhvcidzIHJlcHV0YXRpb24gd2lsbCBub3QgYmUgYWZmZWN0ZWQgYnkgcHJvYmxlbXMgdGhhdCBtaWdodCBiZQppbnRyb2R1Y2VkIGJ5IG90aGVycy4KCiAgRmluYWxseSwgc29mdHdhcmUgcGF0ZW50cyBwb3NlIGEgY29uc3RhbnQgdGhyZWF0IHRvIHRoZSBleGlzdGVuY2Ugb2YKYW55IGZyZWUgcHJvZ3JhbS4gIFdlIHdpc2ggdG8gbWFrZSBzdXJlIHRoYXQgYSBjb21wYW55IGNhbm5vdAplZmZlY3RpdmVseSByZXN0cmljdCB0aGUgdXNlcnMgb2YgYSBmcmVlIHByb2dyYW0gYnkgb2J0YWluaW5nIGEKcmVzdHJpY3RpdmUgbGljZW5zZSBmcm9tIGEgcGF0ZW50IGhvbGRlci4gIFRoZXJlZm9yZSwgd2UgaW5zaXN0IHRoYXQKYW55IHBhdGVudCBsaWNlbnNlIG9idGFpbmVkIGZvciBhIHZlcnNpb24gb2YgdGhlIGxpYnJhcnkgbXVzdCBiZQpjb25zaXN0ZW50IHdpdGggdGhlIGZ1bGwgZnJlZWRvbSBvZiB1c2Ugc3BlY2lmaWVkIGluIHRoaXMgbGljZW5zZS4KCiAgTW9zdCBHTlUgc29mdHdhcmUsIGluY2x1ZGluZyBzb21lIGxpYnJhcmllcywgaXMgY292ZXJlZCBieSB0aGUKb3JkaW5hcnkgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGlzIGxpY2Vuc2UsIHRoZSBHTlUgTGVzc2VyCkdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFwcGxpZXMgdG8gY2VydGFpbiBkZXNpZ25hdGVkIGxpYnJhcmllcywgYW5kCmlzIHF1aXRlIGRpZmZlcmVudCBmcm9tIHRoZSBvcmRpbmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgV2UgdXNlCnRoaXMgbGljZW5zZSBmb3IgY2VydGFpbiBsaWJyYXJpZXMgaW4gb3JkZXIgdG8gcGVybWl0IGxpbmtpbmcgdGhvc2UKbGlicmFyaWVzIGludG8gbm9uLWZyZWUgcHJvZ3JhbXMuCgogIFdoZW4gYSBwcm9ncmFtIGlzIGxpbmtlZCB3aXRoIGEgbGlicmFyeSwgd2hldGhlciBzdGF0aWNhbGx5IG9yIHVzaW5nCmEgc2hhcmVkIGxpYnJhcnksIHRoZSBjb21iaW5hdGlvbiBvZiB0aGUgdHdvIGlzIGxlZ2FsbHkgc3BlYWtpbmcgYQpjb21iaW5lZCB3b3JrLCBhIGRlcml2YXRpdmUgb2YgdGhlIG9yaWdpbmFsIGxpYnJhcnkuICBUaGUgb3JkaW5hcnkKR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB0aGVyZWZvcmUgcGVybWl0cyBzdWNoIGxpbmtpbmcgb25seSBpZiB0aGUKZW50aXJlIGNvbWJpbmF0aW9uIGZpdHMgaXRzIGNyaXRlcmlhIG9mIGZyZWVkb20uICBUaGUgTGVzc2VyIEdlbmVyYWwKUHVibGljIExpY2Vuc2UgcGVybWl0cyBtb3JlIGxheCBjcml0ZXJpYSBmb3IgbGlua2luZyBvdGhlciBjb2RlIHdpdGgKdGhlIGxpYnJhcnkuCgogIFdlIGNhbGwgdGhpcyBsaWNlbnNlIHRoZSAiTGVzc2VyIiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGJlY2F1c2UgaXQKZG9lcyBMZXNzIHRvIHByb3RlY3QgdGhlIHVzZXIncyBmcmVlZG9tIHRoYW4gdGhlIG9yZGluYXJ5IEdlbmVyYWwKUHVibGljIExpY2Vuc2UuICBJdCBhbHNvIHByb3ZpZGVzIG90aGVyIGZyZWUgc29mdHdhcmUgZGV2ZWxvcGVycyBMZXNzCm9mIGFuIGFkdmFudGFnZSBvdmVyIGNvbXBldGluZyBub24tZnJlZSBwcm9ncmFtcy4gIFRoZXNlIGRpc2FkdmFudGFnZXMKYXJlIHRoZSByZWFzb24gd2UgdXNlIHRoZSBvcmRpbmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtYW55CmxpYnJhcmllcy4gIEhvd2V2ZXIsIHRoZSBMZXNzZXIgbGljZW5zZSBwcm92aWRlcyBhZHZhbnRhZ2VzIGluIGNlcnRhaW4Kc3BlY2lhbCBjaXJjdW1zdGFuY2VzLgoKICBGb3IgZXhhbXBsZSwgb24gcmFyZSBvY2Nhc2lvbnMsIHRoZXJlIG1heSBiZSBhIHNwZWNpYWwgbmVlZCB0bwplbmNvdXJhZ2UgdGhlIHdpZGVzdCBwb3NzaWJsZSB1c2Ugb2YgYSBjZXJ0YWluIGxpYnJhcnksIHNvIHRoYXQgaXQgYmVjb21lcwphIGRlLWZhY3RvIHN0YW5kYXJkLiAgVG8gYWNoaWV2ZSB0aGlzLCBub24tZnJlZSBwcm9ncmFtcyBtdXN0IGJlCmFsbG93ZWQgdG8gdXNlIHRoZSBsaWJyYXJ5LiAgQSBtb3JlIGZyZXF1ZW50IGNhc2UgaXMgdGhhdCBhIGZyZWUKbGlicmFyeSBkb2VzIHRoZSBzYW1lIGpvYiBhcyB3aWRlbHkgdXNlZCBub24tZnJlZSBsaWJyYXJpZXMuICBJbiB0aGlzCmNhc2UsIHRoZXJlIGlzIGxpdHRsZSB0byBnYWluIGJ5IGxpbWl0aW5nIHRoZSBmcmVlIGxpYnJhcnkgdG8gZnJlZQpzb2Z0d2FyZSBvbmx5LCBzbyB3ZSB1c2UgdGhlIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgoKICBJbiBvdGhlciBjYXNlcywgcGVybWlzc2lvbiB0byB1c2UgYSBwYXJ0aWN1bGFyIGxpYnJhcnkgaW4gbm9uLWZyZWUKcHJvZ3JhbXMgZW5hYmxlcyBhIGdyZWF0ZXIgbnVtYmVyIG9mIHBlb3BsZSB0byB1c2UgYSBsYXJnZSBib2R5IG9mCmZyZWUgc29mdHdhcmUuICBGb3IgZXhhbXBsZSwgcGVybWlzc2lvbiB0byB1c2UgdGhlIEdOVSBDIExpYnJhcnkgaW4Kbm9uLWZyZWUgcHJvZ3JhbXMgZW5hYmxlcyBtYW55IG1vcmUgcGVvcGxlIHRvIHVzZSB0aGUgd2hvbGUgR05VCm9wZXJhdGluZyBzeXN0ZW0sIGFzIHdlbGwgYXMgaXRzIHZhcmlhbnQsIHRoZSBHTlUvTGludXggb3BlcmF0aW5nCnN5c3RlbS4KCiAgQWx0aG91Z2ggdGhlIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIExlc3MgcHJvdGVjdGl2ZSBvZiB0aGUKdXNlcnMnIGZyZWVkb20sIGl0IGRvZXMgZW5zdXJlIHRoYXQgdGhlIHVzZXIgb2YgYSBwcm9ncmFtIHRoYXQgaXMKbGlua2VkIHdpdGggdGhlIExpYnJhcnkgaGFzIHRoZSBmcmVlZG9tIGFuZCB0aGUgd2hlcmV3aXRoYWwgdG8gcnVuCnRoYXQgcHJvZ3JhbSB1c2luZyBhIG1vZGlmaWVkIHZlcnNpb24gb2YgdGhlIExpYnJhcnkuCgogIFRoZSBwcmVjaXNlIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kCm1vZGlmaWNhdGlvbiBmb2xsb3cuICBQYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYQoid29yayBiYXNlZCBvbiB0aGUgbGlicmFyeSIgYW5kIGEgIndvcmsgdGhhdCB1c2VzIHRoZSBsaWJyYXJ5Ii4gIFRoZQpmb3JtZXIgY29udGFpbnMgY29kZSBkZXJpdmVkIGZyb20gdGhlIGxpYnJhcnksIHdoZXJlYXMgdGhlIGxhdHRlciBtdXN0CmJlIGNvbWJpbmVkIHdpdGggdGhlIGxpYnJhcnkgaW4gb3JkZXIgdG8gcnVuLgoKICAgICAgR05VIExFU1NFUiBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFCiAgIFRFUk1TIEFORCBDT05ESVRJT05TIEZPUiBDT1BZSU5HLCBESVNUUklCVVRJT04gQU5EIE1PRElGSUNBVElPTgoKICAwLiBUaGlzIExpY2Vuc2UgQWdyZWVtZW50IGFwcGxpZXMgdG8gYW55IHNvZnR3YXJlIGxpYnJhcnkgb3Igb3RoZXIKcHJvZ3JhbSB3aGljaCBjb250YWlucyBhIG5vdGljZSBwbGFjZWQgYnkgdGhlIGNvcHlyaWdodCBob2xkZXIgb3IKb3RoZXIgYXV0aG9yaXplZCBwYXJ0eSBzYXlpbmcgaXQgbWF5IGJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZgp0aGlzIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChhbHNvIGNhbGxlZCAidGhpcyBMaWNlbnNlIikuCkVhY2ggbGljZW5zZWUgaXMgYWRkcmVzc2VkIGFzICJ5b3UiLgoKICBBICJsaWJyYXJ5IiBtZWFucyBhIGNvbGxlY3Rpb24gb2Ygc29mdHdhcmUgZnVuY3Rpb25zIGFuZC9vciBkYXRhCnByZXBhcmVkIHNvIGFzIHRvIGJlIGNvbnZlbmllbnRseSBsaW5rZWQgd2l0aCBhcHBsaWNhdGlvbiBwcm9ncmFtcwood2hpY2ggdXNlIHNvbWUgb2YgdGhvc2UgZnVuY3Rpb25zIGFuZCBkYXRhKSB0byBmb3JtIGV4ZWN1dGFibGVzLgoKICBUaGUgIkxpYnJhcnkiLCBiZWxvdywgcmVmZXJzIHRvIGFueSBzdWNoIHNvZnR3YXJlIGxpYnJhcnkgb3Igd29yawp3aGljaCBoYXMgYmVlbiBkaXN0cmlidXRlZCB1bmRlciB0aGVzZSB0ZXJtcy4gIEEgIndvcmsgYmFzZWQgb24gdGhlCkxpYnJhcnkiIG1lYW5zIGVpdGhlciB0aGUgTGlicmFyeSBvciBhbnkgZGVyaXZhdGl2ZSB3b3JrIHVuZGVyCmNvcHlyaWdodCBsYXc6IHRoYXQgaXMgdG8gc2F5LCBhIHdvcmsgY29udGFpbmluZyB0aGUgTGlicmFyeSBvciBhCnBvcnRpb24gb2YgaXQsIGVpdGhlciB2ZXJiYXRpbSBvciB3aXRoIG1vZGlmaWNhdGlvbnMgYW5kL29yIHRyYW5zbGF0ZWQKc3RyYWlnaHRmb3J3YXJkbHkgaW50byBhbm90aGVyIGxhbmd1YWdlLiAgKEhlcmVpbmFmdGVyLCB0cmFuc2xhdGlvbiBpcwppbmNsdWRlZCB3aXRob3V0IGxpbWl0YXRpb24gaW4gdGhlIHRlcm0gIm1vZGlmaWNhdGlvbiIuKQoKICAiU291cmNlIGNvZGUiIGZvciBhIHdvcmsgbWVhbnMgdGhlIHByZWZlcnJlZCBmb3JtIG9mIHRoZSB3b3JrIGZvcgptYWtpbmcgbW9kaWZpY2F0aW9ucyB0byBpdC4gIEZvciBhIGxpYnJhcnksIGNvbXBsZXRlIHNvdXJjZSBjb2RlIG1lYW5zCmFsbCB0aGUgc291cmNlIGNvZGUgZm9yIGFsbCBtb2R1bGVzIGl0IGNvbnRhaW5zLCBwbHVzIGFueSBhc3NvY2lhdGVkCmludGVyZmFjZSBkZWZpbml0aW9uIGZpbGVzLCBwbHVzIHRoZSBzY3JpcHRzIHVzZWQgdG8gY29udHJvbCBjb21waWxhdGlvbgphbmQgaW5zdGFsbGF0aW9uIG9mIHRoZSBsaWJyYXJ5LgoKICBBY3Rpdml0aWVzIG90aGVyIHRoYW4gY29weWluZywgZGlzdHJpYnV0aW9uIGFuZCBtb2RpZmljYXRpb24gYXJlIG5vdApjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZTsgdGhleSBhcmUgb3V0c2lkZSBpdHMgc2NvcGUuICBUaGUgYWN0IG9mCnJ1bm5pbmcgYSBwcm9ncmFtIHVzaW5nIHRoZSBMaWJyYXJ5IGlzIG5vdCByZXN0cmljdGVkLCBhbmQgb3V0cHV0IGZyb20Kc3VjaCBhIHByb2dyYW0gaXMgY292ZXJlZCBvbmx5IGlmIGl0cyBjb250ZW50cyBjb25zdGl0dXRlIGEgd29yayBiYXNlZApvbiB0aGUgTGlicmFyeSAoaW5kZXBlbmRlbnQgb2YgdGhlIHVzZSBvZiB0aGUgTGlicmFyeSBpbiBhIHRvb2wgZm9yCndyaXRpbmcgaXQpLiAgV2hldGhlciB0aGF0IGlzIHRydWUgZGVwZW5kcyBvbiB3aGF0IHRoZSBMaWJyYXJ5IGRvZXMKYW5kIHdoYXQgdGhlIHByb2dyYW0gdGhhdCB1c2VzIHRoZSBMaWJyYXJ5IGRvZXMuCiAgCiAgMS4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcyBvZiB0aGUgTGlicmFyeSdzCmNvbXBsZXRlIHNvdXJjZSBjb2RlIGFzIHlvdSByZWNlaXZlIGl0LCBpbiBhbnkgbWVkaXVtLCBwcm92aWRlZCB0aGF0CnlvdSBjb25zcGljdW91c2x5IGFuZCBhcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuCmFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2UgYW5kIGRpc2NsYWltZXIgb2Ygd2FycmFudHk7IGtlZXAgaW50YWN0CmFsbCB0aGUgbm90aWNlcyB0aGF0IHJlZmVyIHRvIHRoaXMgTGljZW5zZSBhbmQgdG8gdGhlIGFic2VuY2Ugb2YgYW55CndhcnJhbnR5OyBhbmQgZGlzdHJpYnV0ZSBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlIGFsb25nIHdpdGggdGhlCkxpYnJhcnkuCgogIFlvdSBtYXkgY2hhcmdlIGEgZmVlIGZvciB0aGUgcGh5c2ljYWwgYWN0IG9mIHRyYW5zZmVycmluZyBhIGNvcHksCmFuZCB5b3UgbWF5IGF0IHlvdXIgb3B0aW9uIG9mZmVyIHdhcnJhbnR5IHByb3RlY3Rpb24gaW4gZXhjaGFuZ2UgZm9yIGEKZmVlLgoKICAyLiBZb3UgbWF5IG1vZGlmeSB5b3VyIGNvcHkgb3IgY29waWVzIG9mIHRoZSBMaWJyYXJ5IG9yIGFueSBwb3J0aW9uCm9mIGl0LCB0aHVzIGZvcm1pbmcgYSB3b3JrIGJhc2VkIG9uIHRoZSBMaWJyYXJ5LCBhbmQgY29weSBhbmQKZGlzdHJpYnV0ZSBzdWNoIG1vZGlmaWNhdGlvbnMgb3Igd29yayB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbiAxCmFib3ZlLCBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIG1lZXQgYWxsIG9mIHRoZXNlIGNvbmRpdGlvbnM6CgogICAgYSkgVGhlIG1vZGlmaWVkIHdvcmsgbXVzdCBpdHNlbGYgYmUgYSBzb2Z0d2FyZSBsaWJyYXJ5LgoKICAgIGIpIFlvdSBtdXN0IGNhdXNlIHRoZSBmaWxlcyBtb2RpZmllZCB0byBjYXJyeSBwcm9taW5lbnQgbm90aWNlcwogICAgc3RhdGluZyB0aGF0IHlvdSBjaGFuZ2VkIHRoZSBmaWxlcyBhbmQgdGhlIGRhdGUgb2YgYW55IGNoYW5nZS4KCiAgICBjKSBZb3UgbXVzdCBjYXVzZSB0aGUgd2hvbGUgb2YgdGhlIHdvcmsgdG8gYmUgbGljZW5zZWQgYXQgbm8KICAgIGNoYXJnZSB0byBhbGwgdGhpcmQgcGFydGllcyB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLgoKICAgIGQpIElmIGEgZmFjaWxpdHkgaW4gdGhlIG1vZGlmaWVkIExpYnJhcnkgcmVmZXJzIHRvIGEgZnVuY3Rpb24gb3IgYQogICAgdGFibGUgb2YgZGF0YSB0byBiZSBzdXBwbGllZCBieSBhbiBhcHBsaWNhdGlvbiBwcm9ncmFtIHRoYXQgdXNlcwogICAgdGhlIGZhY2lsaXR5LCBvdGhlciB0aGFuIGFzIGFuIGFyZ3VtZW50IHBhc3NlZCB3aGVuIHRoZSBmYWNpbGl0eQogICAgaXMgaW52b2tlZCwgdGhlbiB5b3UgbXVzdCBtYWtlIGEgZ29vZCBmYWl0aCBlZmZvcnQgdG8gZW5zdXJlIHRoYXQsCiAgICBpbiB0aGUgZXZlbnQgYW4gYXBwbGljYXRpb24gZG9lcyBub3Qgc3VwcGx5IHN1Y2ggZnVuY3Rpb24gb3IKICAgIHRhYmxlLCB0aGUgZmFjaWxpdHkgc3RpbGwgb3BlcmF0ZXMsIGFuZCBwZXJmb3JtcyB3aGF0ZXZlciBwYXJ0IG9mCiAgICBpdHMgcHVycG9zZSByZW1haW5zIG1lYW5pbmdmdWwuCgogICAgKEZvciBleGFtcGxlLCBhIGZ1bmN0aW9uIGluIGEgbGlicmFyeSB0byBjb21wdXRlIHNxdWFyZSByb290cyBoYXMKICAgIGEgcHVycG9zZSB0aGF0IGlzIGVudGlyZWx5IHdlbGwtZGVmaW5lZCBpbmRlcGVuZGVudCBvZiB0aGUKICAgIGFwcGxpY2F0aW9uLiAgVGhlcmVmb3JlLCBTdWJzZWN0aW9uIDJkIHJlcXVpcmVzIHRoYXQgYW55CiAgICBhcHBsaWNhdGlvbi1zdXBwbGllZCBmdW5jdGlvbiBvciB0YWJsZSB1c2VkIGJ5IHRoaXMgZnVuY3Rpb24gbXVzdAogICAgYmUgb3B0aW9uYWw6IGlmIHRoZSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBzdXBwbHkgaXQsIHRoZSBzcXVhcmUKICAgIHJvb3QgZnVuY3Rpb24gbXVzdCBzdGlsbCBjb21wdXRlIHNxdWFyZSByb290cy4pCgpUaGVzZSByZXF1aXJlbWVudHMgYXBwbHkgdG8gdGhlIG1vZGlmaWVkIHdvcmsgYXMgYSB3aG9sZS4gIElmCmlkZW50aWZpYWJsZSBzZWN0aW9ucyBvZiB0aGF0IHdvcmsgYXJlIG5vdCBkZXJpdmVkIGZyb20gdGhlIExpYnJhcnksCmFuZCBjYW4gYmUgcmVhc29uYWJseSBjb25zaWRlcmVkIGluZGVwZW5kZW50IGFuZCBzZXBhcmF0ZSB3b3JrcyBpbgp0aGVtc2VsdmVzLCB0aGVuIHRoaXMgTGljZW5zZSwgYW5kIGl0cyB0ZXJtcywgZG8gbm90IGFwcGx5IHRvIHRob3NlCnNlY3Rpb25zIHdoZW4geW91IGRpc3RyaWJ1dGUgdGhlbSBhcyBzZXBhcmF0ZSB3b3Jrcy4gIEJ1dCB3aGVuIHlvdQpkaXN0cmlidXRlIHRoZSBzYW1lIHNlY3Rpb25zIGFzIHBhcnQgb2YgYSB3aG9sZSB3aGljaCBpcyBhIHdvcmsgYmFzZWQKb24gdGhlIExpYnJhcnksIHRoZSBkaXN0cmlidXRpb24gb2YgdGhlIHdob2xlIG11c3QgYmUgb24gdGhlIHRlcm1zIG9mCnRoaXMgTGljZW5zZSwgd2hvc2UgcGVybWlzc2lvbnMgZm9yIG90aGVyIGxpY2Vuc2VlcyBleHRlbmQgdG8gdGhlCmVudGlyZSB3aG9sZSwgYW5kIHRodXMgdG8gZWFjaCBhbmQgZXZlcnkgcGFydCByZWdhcmRsZXNzIG9mIHdobyB3cm90ZQppdC4KClRodXMsIGl0IGlzIG5vdCB0aGUgaW50ZW50IG9mIHRoaXMgc2VjdGlvbiB0byBjbGFpbSByaWdodHMgb3IgY29udGVzdAp5b3VyIHJpZ2h0cyB0byB3b3JrIHdyaXR0ZW4gZW50aXJlbHkgYnkgeW91OyByYXRoZXIsIHRoZSBpbnRlbnQgaXMgdG8KZXhlcmNpc2UgdGhlIHJpZ2h0IHRvIGNvbnRyb2wgdGhlIGRpc3RyaWJ1dGlvbiBvZiBkZXJpdmF0aXZlIG9yCmNvbGxlY3RpdmUgd29ya3MgYmFzZWQgb24gdGhlIExpYnJhcnkuCgpJbiBhZGRpdGlvbiwgbWVyZSBhZ2dyZWdhdGlvbiBvZiBhbm90aGVyIHdvcmsgbm90IGJhc2VkIG9uIHRoZSBMaWJyYXJ5CndpdGggdGhlIExpYnJhcnkgKG9yIHdpdGggYSB3b3JrIGJhc2VkIG9uIHRoZSBMaWJyYXJ5KSBvbiBhIHZvbHVtZSBvZgphIHN0b3JhZ2Ugb3IgZGlzdHJpYnV0aW9uIG1lZGl1bSBkb2VzIG5vdCBicmluZyB0aGUgb3RoZXIgd29yayB1bmRlcgp0aGUgc2NvcGUgb2YgdGhpcyBMaWNlbnNlLgoKICAzLiBZb3UgbWF5IG9wdCB0byBhcHBseSB0aGUgdGVybXMgb2YgdGhlIG9yZGluYXJ5IEdOVSBHZW5lcmFsIFB1YmxpYwpMaWNlbnNlIGluc3RlYWQgb2YgdGhpcyBMaWNlbnNlIHRvIGEgZ2l2ZW4gY29weSBvZiB0aGUgTGlicmFyeS4gIFRvIGRvCnRoaXMsIHlvdSBtdXN0IGFsdGVyIGFsbCB0aGUgbm90aWNlcyB0aGF0IHJlZmVyIHRvIHRoaXMgTGljZW5zZSwgc28KdGhhdCB0aGV5IHJlZmVyIHRvIHRoZSBvcmRpbmFyeSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLAppbnN0ZWFkIG9mIHRvIHRoaXMgTGljZW5zZS4gIChJZiBhIG5ld2VyIHZlcnNpb24gdGhhbiB2ZXJzaW9uIDIgb2YgdGhlCm9yZGluYXJ5IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGhhcyBhcHBlYXJlZCwgdGhlbiB5b3UgY2FuIHNwZWNpZnkKdGhhdCB2ZXJzaW9uIGluc3RlYWQgaWYgeW91IHdpc2guKSAgRG8gbm90IG1ha2UgYW55IG90aGVyIGNoYW5nZSBpbgp0aGVzZSBub3RpY2VzLgoKICBPbmNlIHRoaXMgY2hhbmdlIGlzIG1hZGUgaW4gYSBnaXZlbiBjb3B5LCBpdCBpcyBpcnJldmVyc2libGUgZm9yCnRoYXQgY29weSwgc28gdGhlIG9yZGluYXJ5IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFwcGxpZXMgdG8gYWxsCnN1YnNlcXVlbnQgY29waWVzIGFuZCBkZXJpdmF0aXZlIHdvcmtzIG1hZGUgZnJvbSB0aGF0IGNvcHkuCgogIFRoaXMgb3B0aW9uIGlzIHVzZWZ1bCB3aGVuIHlvdSB3aXNoIHRvIGNvcHkgcGFydCBvZiB0aGUgY29kZSBvZgp0aGUgTGlicmFyeSBpbnRvIGEgcHJvZ3JhbSB0aGF0IGlzIG5vdCBhIGxpYnJhcnkuCgogIDQuIFlvdSBtYXkgY29weSBhbmQgZGlzdHJpYnV0ZSB0aGUgTGlicmFyeSAob3IgYSBwb3J0aW9uIG9yCmRlcml2YXRpdmUgb2YgaXQsIHVuZGVyIFNlY3Rpb24gMikgaW4gb2JqZWN0IGNvZGUgb3IgZXhlY3V0YWJsZSBmb3JtCnVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9ucyAxIGFuZCAyIGFib3ZlIHByb3ZpZGVkIHRoYXQgeW91IGFjY29tcGFueQppdCB3aXRoIHRoZSBjb21wbGV0ZSBjb3JyZXNwb25kaW5nIG1hY2hpbmUtcmVhZGFibGUgc291cmNlIGNvZGUsIHdoaWNoCm11c3QgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zIDEgYW5kIDIgYWJvdmUgb24gYQptZWRpdW0gY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2UuCgogIElmIGRpc3RyaWJ1dGlvbiBvZiBvYmplY3QgY29kZSBpcyBtYWRlIGJ5IG9mZmVyaW5nIGFjY2VzcyB0byBjb3B5CmZyb20gYSBkZXNpZ25hdGVkIHBsYWNlLCB0aGVuIG9mZmVyaW5nIGVxdWl2YWxlbnQgYWNjZXNzIHRvIGNvcHkgdGhlCnNvdXJjZSBjb2RlIGZyb20gdGhlIHNhbWUgcGxhY2Ugc2F0aXNmaWVzIHRoZSByZXF1aXJlbWVudCB0bwpkaXN0cmlidXRlIHRoZSBzb3VyY2UgY29kZSwgZXZlbiB0aG91Z2ggdGhpcmQgcGFydGllcyBhcmUgbm90CmNvbXBlbGxlZCB0byBjb3B5IHRoZSBzb3VyY2UgYWxvbmcgd2l0aCB0aGUgb2JqZWN0IGNvZGUuCgogIDUuIEEgcHJvZ3JhbSB0aGF0IGNvbnRhaW5zIG5vIGRlcml2YXRpdmUgb2YgYW55IHBvcnRpb24gb2YgdGhlCkxpYnJhcnksIGJ1dCBpcyBkZXNpZ25lZCB0byB3b3JrIHdpdGggdGhlIExpYnJhcnkgYnkgYmVpbmcgY29tcGlsZWQgb3IKbGlua2VkIHdpdGggaXQsIGlzIGNhbGxlZCBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgTGlicmFyeSIuICBTdWNoIGEKd29yaywgaW4gaXNvbGF0aW9uLCBpcyBub3QgYSBkZXJpdmF0aXZlIHdvcmsgb2YgdGhlIExpYnJhcnksIGFuZAp0aGVyZWZvcmUgZmFsbHMgb3V0c2lkZSB0aGUgc2NvcGUgb2YgdGhpcyBMaWNlbnNlLgoKICBIb3dldmVyLCBsaW5raW5nIGEgIndvcmsgdGhhdCB1c2VzIHRoZSBMaWJyYXJ5IiB3aXRoIHRoZSBMaWJyYXJ5CmNyZWF0ZXMgYW4gZXhlY3V0YWJsZSB0aGF0IGlzIGEgZGVyaXZhdGl2ZSBvZiB0aGUgTGlicmFyeSAoYmVjYXVzZSBpdApjb250YWlucyBwb3J0aW9ucyBvZiB0aGUgTGlicmFyeSksIHJhdGhlciB0aGFuIGEgIndvcmsgdGhhdCB1c2VzIHRoZQpsaWJyYXJ5Ii4gIFRoZSBleGVjdXRhYmxlIGlzIHRoZXJlZm9yZSBjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZS4KU2VjdGlvbiA2IHN0YXRlcyB0ZXJtcyBmb3IgZGlzdHJpYnV0aW9uIG9mIHN1Y2ggZXhlY3V0YWJsZXMuCgogIFdoZW4gYSAid29yayB0aGF0IHVzZXMgdGhlIExpYnJhcnkiIHVzZXMgbWF0ZXJpYWwgZnJvbSBhIGhlYWRlciBmaWxlCnRoYXQgaXMgcGFydCBvZiB0aGUgTGlicmFyeSwgdGhlIG9iamVjdCBjb2RlIGZvciB0aGUgd29yayBtYXkgYmUgYQpkZXJpdmF0aXZlIHdvcmsgb2YgdGhlIExpYnJhcnkgZXZlbiB0aG91Z2ggdGhlIHNvdXJjZSBjb2RlIGlzIG5vdC4KV2hldGhlciB0aGlzIGlzIHRydWUgaXMgZXNwZWNpYWxseSBzaWduaWZpY2FudCBpZiB0aGUgd29yayBjYW4gYmUKbGlua2VkIHdpdGhvdXQgdGhlIExpYnJhcnksIG9yIGlmIHRoZSB3b3JrIGlzIGl0c2VsZiBhIGxpYnJhcnkuICBUaGUKdGhyZXNob2xkIGZvciB0aGlzIHRvIGJlIHRydWUgaXMgbm90IHByZWNpc2VseSBkZWZpbmVkIGJ5IGxhdy4KCiAgSWYgc3VjaCBhbiBvYmplY3QgZmlsZSB1c2VzIG9ubHkgbnVtZXJpY2FsIHBhcmFtZXRlcnMsIGRhdGEKc3RydWN0dXJlIGxheW91dHMgYW5kIGFjY2Vzc29ycywgYW5kIHNtYWxsIG1hY3JvcyBhbmQgc21hbGwgaW5saW5lCmZ1bmN0aW9ucyAodGVuIGxpbmVzIG9yIGxlc3MgaW4gbGVuZ3RoKSwgdGhlbiB0aGUgdXNlIG9mIHRoZSBvYmplY3QKZmlsZSBpcyB1bnJlc3RyaWN0ZWQsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBpcyBsZWdhbGx5IGEgZGVyaXZhdGl2ZQp3b3JrLiAgKEV4ZWN1dGFibGVzIGNvbnRhaW5pbmcgdGhpcyBvYmplY3QgY29kZSBwbHVzIHBvcnRpb25zIG9mIHRoZQpMaWJyYXJ5IHdpbGwgc3RpbGwgZmFsbCB1bmRlciBTZWN0aW9uIDYuKQoKICBPdGhlcndpc2UsIGlmIHRoZSB3b3JrIGlzIGEgZGVyaXZhdGl2ZSBvZiB0aGUgTGlicmFyeSwgeW91IG1heQpkaXN0cmlidXRlIHRoZSBvYmplY3QgY29kZSBmb3IgdGhlIHdvcmsgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb24gNi4KQW55IGV4ZWN1dGFibGVzIGNvbnRhaW5pbmcgdGhhdCB3b3JrIGFsc28gZmFsbCB1bmRlciBTZWN0aW9uIDYsCndoZXRoZXIgb3Igbm90IHRoZXkgYXJlIGxpbmtlZCBkaXJlY3RseSB3aXRoIHRoZSBMaWJyYXJ5IGl0c2VsZi4KCiAgNi4gQXMgYW4gZXhjZXB0aW9uIHRvIHRoZSBTZWN0aW9ucyBhYm92ZSwgeW91IG1heSBhbHNvIGNvbWJpbmUgb3IKbGluayBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgTGlicmFyeSIgd2l0aCB0aGUgTGlicmFyeSB0byBwcm9kdWNlIGEKd29yayBjb250YWluaW5nIHBvcnRpb25zIG9mIHRoZSBMaWJyYXJ5LCBhbmQgZGlzdHJpYnV0ZSB0aGF0IHdvcmsKdW5kZXIgdGVybXMgb2YgeW91ciBjaG9pY2UsIHByb3ZpZGVkIHRoYXQgdGhlIHRlcm1zIHBlcm1pdAptb2RpZmljYXRpb24gb2YgdGhlIHdvcmsgZm9yIHRoZSBjdXN0b21lcidzIG93biB1c2UgYW5kIHJldmVyc2UKZW5naW5lZXJpbmcgZm9yIGRlYnVnZ2luZyBzdWNoIG1vZGlmaWNhdGlvbnMuCgogIFlvdSBtdXN0IGdpdmUgcHJvbWluZW50IG5vdGljZSB3aXRoIGVhY2ggY29weSBvZiB0aGUgd29yayB0aGF0IHRoZQpMaWJyYXJ5IGlzIHVzZWQgaW4gaXQgYW5kIHRoYXQgdGhlIExpYnJhcnkgYW5kIGl0cyB1c2UgYXJlIGNvdmVyZWQgYnkKdGhpcyBMaWNlbnNlLiAgWW91IG11c3Qgc3VwcGx5IGEgY29weSBvZiB0aGlzIExpY2Vuc2UuICBJZiB0aGUgd29yawpkdXJpbmcgZXhlY3V0aW9uIGRpc3BsYXlzIGNvcHlyaWdodCBub3RpY2VzLCB5b3UgbXVzdCBpbmNsdWRlIHRoZQpjb3B5cmlnaHQgbm90aWNlIGZvciB0aGUgTGlicmFyeSBhbW9uZyB0aGVtLCBhcyB3ZWxsIGFzIGEgcmVmZXJlbmNlCmRpcmVjdGluZyB0aGUgdXNlciB0byB0aGUgY29weSBvZiB0aGlzIExpY2Vuc2UuICBBbHNvLCB5b3UgbXVzdCBkbyBvbmUKb2YgdGhlc2UgdGhpbmdzOgoKICAgIGEpIEFjY29tcGFueSB0aGUgd29yayB3aXRoIHRoZSBjb21wbGV0ZSBjb3JyZXNwb25kaW5nCiAgICBtYWNoaW5lLXJlYWRhYmxlIHNvdXJjZSBjb2RlIGZvciB0aGUgTGlicmFyeSBpbmNsdWRpbmcgd2hhdGV2ZXIKICAgIGNoYW5nZXMgd2VyZSB1c2VkIGluIHRoZSB3b3JrICh3aGljaCBtdXN0IGJlIGRpc3RyaWJ1dGVkIHVuZGVyCiAgICBTZWN0aW9ucyAxIGFuZCAyIGFib3ZlKTsgYW5kLCBpZiB0aGUgd29yayBpcyBhbiBleGVjdXRhYmxlIGxpbmtlZAogICAgd2l0aCB0aGUgTGlicmFyeSwgd2l0aCB0aGUgY29tcGxldGUgbWFjaGluZS1yZWFkYWJsZSAid29yayB0aGF0CiAgICB1c2VzIHRoZSBMaWJyYXJ5IiwgYXMgb2JqZWN0IGNvZGUgYW5kL29yIHNvdXJjZSBjb2RlLCBzbyB0aGF0IHRoZQogICAgdXNlciBjYW4gbW9kaWZ5IHRoZSBMaWJyYXJ5IGFuZCB0aGVuIHJlbGluayB0byBwcm9kdWNlIGEgbW9kaWZpZWQKICAgIGV4ZWN1dGFibGUgY29udGFpbmluZyB0aGUgbW9kaWZpZWQgTGlicmFyeS4gIChJdCBpcyB1bmRlcnN0b29kCiAgICB0aGF0IHRoZSB1c2VyIHdobyBjaGFuZ2VzIHRoZSBjb250ZW50cyBvZiBkZWZpbml0aW9ucyBmaWxlcyBpbiB0aGUKICAgIExpYnJhcnkgd2lsbCBub3QgbmVjZXNzYXJpbHkgYmUgYWJsZSB0byByZWNvbXBpbGUgdGhlIGFwcGxpY2F0aW9uCiAgICB0byB1c2UgdGhlIG1vZGlmaWVkIGRlZmluaXRpb25zLikKCiAgICBiKSBVc2UgYSBzdWl0YWJsZSBzaGFyZWQgbGlicmFyeSBtZWNoYW5pc20gZm9yIGxpbmtpbmcgd2l0aCB0aGUKICAgIExpYnJhcnkuICBBIHN1aXRhYmxlIG1lY2hhbmlzbSBpcyBvbmUgdGhhdCAoMSkgdXNlcyBhdCBydW4gdGltZSBhCiAgICBjb3B5IG9mIHRoZSBsaWJyYXJ5IGFscmVhZHkgcHJlc2VudCBvbiB0aGUgdXNlcidzIGNvbXB1dGVyIHN5c3RlbSwKICAgIHJhdGhlciB0aGFuIGNvcHlpbmcgbGlicmFyeSBmdW5jdGlvbnMgaW50byB0aGUgZXhlY3V0YWJsZSwgYW5kICgyKQogICAgd2lsbCBvcGVyYXRlIHByb3Blcmx5IHdpdGggYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCBpZgogICAgdGhlIHVzZXIgaW5zdGFsbHMgb25lLCBhcyBsb25nIGFzIHRoZSBtb2RpZmllZCB2ZXJzaW9uIGlzCiAgICBpbnRlcmZhY2UtY29tcGF0aWJsZSB3aXRoIHRoZSB2ZXJzaW9uIHRoYXQgdGhlIHdvcmsgd2FzIG1hZGUgd2l0aC4KCiAgICBjKSBBY2NvbXBhbnkgdGhlIHdvcmsgd2l0aCBhIHdyaXR0ZW4gb2ZmZXIsIHZhbGlkIGZvciBhdAogICAgbGVhc3QgdGhyZWUgeWVhcnMsIHRvIGdpdmUgdGhlIHNhbWUgdXNlciB0aGUgbWF0ZXJpYWxzCiAgICBzcGVjaWZpZWQgaW4gU3Vic2VjdGlvbiA2YSwgYWJvdmUsIGZvciBhIGNoYXJnZSBubyBtb3JlCiAgICB0aGFuIHRoZSBjb3N0IG9mIHBlcmZvcm1pbmcgdGhpcyBkaXN0cmlidXRpb24uCgogICAgZCkgSWYgZGlzdHJpYnV0aW9uIG9mIHRoZSB3b3JrIGlzIG1hZGUgYnkgb2ZmZXJpbmcgYWNjZXNzIHRvIGNvcHkKICAgIGZyb20gYSBkZXNpZ25hdGVkIHBsYWNlLCBvZmZlciBlcXVpdmFsZW50IGFjY2VzcyB0byBjb3B5IHRoZSBhYm92ZQogICAgc3BlY2lmaWVkIG1hdGVyaWFscyBmcm9tIHRoZSBzYW1lIHBsYWNlLgoKICAgIGUpIFZlcmlmeSB0aGF0IHRoZSB1c2VyIGhhcyBhbHJlYWR5IHJlY2VpdmVkIGEgY29weSBvZiB0aGVzZQogICAgbWF0ZXJpYWxzIG9yIHRoYXQgeW91IGhhdmUgYWxyZWFkeSBzZW50IHRoaXMgdXNlciBhIGNvcHkuCgogIEZvciBhbiBleGVjdXRhYmxlLCB0aGUgcmVxdWlyZWQgZm9ybSBvZiB0aGUgIndvcmsgdGhhdCB1c2VzIHRoZQpMaWJyYXJ5IiBtdXN0IGluY2x1ZGUgYW55IGRhdGEgYW5kIHV0aWxpdHkgcHJvZ3JhbXMgbmVlZGVkIGZvcgpyZXByb2R1Y2luZyB0aGUgZXhlY3V0YWJsZSBmcm9tIGl0LiAgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwKdGhlIG1hdGVyaWFscyB0byBiZSBkaXN0cmlidXRlZCBuZWVkIG5vdCBpbmNsdWRlIGFueXRoaW5nIHRoYXQgaXMKbm9ybWFsbHkgZGlzdHJpYnV0ZWQgKGluIGVpdGhlciBzb3VyY2Ugb3IgYmluYXJ5IGZvcm0pIHdpdGggdGhlIG1ham9yCmNvbXBvbmVudHMgKGNvbXBpbGVyLCBrZXJuZWwsIGFuZCBzbyBvbikgb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0gb24Kd2hpY2ggdGhlIGV4ZWN1dGFibGUgcnVucywgdW5sZXNzIHRoYXQgY29tcG9uZW50IGl0c2VsZiBhY2NvbXBhbmllcwp0aGUgZXhlY3V0YWJsZS4KCiAgSXQgbWF5IGhhcHBlbiB0aGF0IHRoaXMgcmVxdWlyZW1lbnQgY29udHJhZGljdHMgdGhlIGxpY2Vuc2UKcmVzdHJpY3Rpb25zIG9mIG90aGVyIHByb3ByaWV0YXJ5IGxpYnJhcmllcyB0aGF0IGRvIG5vdCBub3JtYWxseQphY2NvbXBhbnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0uICBTdWNoIGEgY29udHJhZGljdGlvbiBtZWFucyB5b3UgY2Fubm90CnVzZSBib3RoIHRoZW0gYW5kIHRoZSBMaWJyYXJ5IHRvZ2V0aGVyIGluIGFuIGV4ZWN1dGFibGUgdGhhdCB5b3UKZGlzdHJpYnV0ZS4KCiAgNy4gWW91IG1heSBwbGFjZSBsaWJyYXJ5IGZhY2lsaXRpZXMgdGhhdCBhcmUgYSB3b3JrIGJhc2VkIG9uIHRoZQpMaWJyYXJ5IHNpZGUtYnktc2lkZSBpbiBhIHNpbmdsZSBsaWJyYXJ5IHRvZ2V0aGVyIHdpdGggb3RoZXIgbGlicmFyeQpmYWNpbGl0aWVzIG5vdCBjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZSwgYW5kIGRpc3RyaWJ1dGUgc3VjaCBhIGNvbWJpbmVkCmxpYnJhcnksIHByb3ZpZGVkIHRoYXQgdGhlIHNlcGFyYXRlIGRpc3RyaWJ1dGlvbiBvZiB0aGUgd29yayBiYXNlZCBvbgp0aGUgTGlicmFyeSBhbmQgb2YgdGhlIG90aGVyIGxpYnJhcnkgZmFjaWxpdGllcyBpcyBvdGhlcndpc2UKcGVybWl0dGVkLCBhbmQgcHJvdmlkZWQgdGhhdCB5b3UgZG8gdGhlc2UgdHdvIHRoaW5nczoKCiAgICBhKSBBY2NvbXBhbnkgdGhlIGNvbWJpbmVkIGxpYnJhcnkgd2l0aCBhIGNvcHkgb2YgdGhlIHNhbWUgd29yawogICAgYmFzZWQgb24gdGhlIExpYnJhcnksIHVuY29tYmluZWQgd2l0aCBhbnkgb3RoZXIgbGlicmFyeQogICAgZmFjaWxpdGllcy4gIFRoaXMgbXVzdCBiZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlCiAgICBTZWN0aW9ucyBhYm92ZS4KCiAgICBiKSBHaXZlIHByb21pbmVudCBub3RpY2Ugd2l0aCB0aGUgY29tYmluZWQgbGlicmFyeSBvZiB0aGUgZmFjdAogICAgdGhhdCBwYXJ0IG9mIGl0IGlzIGEgd29yayBiYXNlZCBvbiB0aGUgTGlicmFyeSwgYW5kIGV4cGxhaW5pbmcKICAgIHdoZXJlIHRvIGZpbmQgdGhlIGFjY29tcGFueWluZyB1bmNvbWJpbmVkIGZvcm0gb2YgdGhlIHNhbWUgd29yay4KCiAgOC4gWW91IG1heSBub3QgY29weSwgbW9kaWZ5LCBzdWJsaWNlbnNlLCBsaW5rIHdpdGgsIG9yIGRpc3RyaWJ1dGUKdGhlIExpYnJhcnkgZXhjZXB0IGFzIGV4cHJlc3NseSBwcm92aWRlZCB1bmRlciB0aGlzIExpY2Vuc2UuICBBbnkKYXR0ZW1wdCBvdGhlcndpc2UgdG8gY29weSwgbW9kaWZ5LCBzdWJsaWNlbnNlLCBsaW5rIHdpdGgsIG9yCmRpc3RyaWJ1dGUgdGhlIExpYnJhcnkgaXMgdm9pZCwgYW5kIHdpbGwgYXV0b21hdGljYWxseSB0ZXJtaW5hdGUgeW91cgpyaWdodHMgdW5kZXIgdGhpcyBMaWNlbnNlLiAgSG93ZXZlciwgcGFydGllcyB3aG8gaGF2ZSByZWNlaXZlZCBjb3BpZXMsCm9yIHJpZ2h0cywgZnJvbSB5b3UgdW5kZXIgdGhpcyBMaWNlbnNlIHdpbGwgbm90IGhhdmUgdGhlaXIgbGljZW5zZXMKdGVybWluYXRlZCBzbyBsb25nIGFzIHN1Y2ggcGFydGllcyByZW1haW4gaW4gZnVsbCBjb21wbGlhbmNlLgoKICA5LiBZb3UgYXJlIG5vdCByZXF1aXJlZCB0byBhY2NlcHQgdGhpcyBMaWNlbnNlLCBzaW5jZSB5b3UgaGF2ZSBub3QKc2lnbmVkIGl0LiAgSG93ZXZlciwgbm90aGluZyBlbHNlIGdyYW50cyB5b3UgcGVybWlzc2lvbiB0byBtb2RpZnkgb3IKZGlzdHJpYnV0ZSB0aGUgTGlicmFyeSBvciBpdHMgZGVyaXZhdGl2ZSB3b3Jrcy4gIFRoZXNlIGFjdGlvbnMgYXJlCnByb2hpYml0ZWQgYnkgbGF3IGlmIHlvdSBkbyBub3QgYWNjZXB0IHRoaXMgTGljZW5zZS4gIFRoZXJlZm9yZSwgYnkKbW9kaWZ5aW5nIG9yIGRpc3RyaWJ1dGluZyB0aGUgTGlicmFyeSAob3IgYW55IHdvcmsgYmFzZWQgb24gdGhlCkxpYnJhcnkpLCB5b3UgaW5kaWNhdGUgeW91ciBhY2NlcHRhbmNlIG9mIHRoaXMgTGljZW5zZSB0byBkbyBzbywgYW5kCmFsbCBpdHMgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIGNvcHlpbmcsIGRpc3RyaWJ1dGluZyBvciBtb2RpZnlpbmcKdGhlIExpYnJhcnkgb3Igd29ya3MgYmFzZWQgb24gaXQuCgogIDEwLiBFYWNoIHRpbWUgeW91IHJlZGlzdHJpYnV0ZSB0aGUgTGlicmFyeSAob3IgYW55IHdvcmsgYmFzZWQgb24gdGhlCkxpYnJhcnkpLCB0aGUgcmVjaXBpZW50IGF1dG9tYXRpY2FsbHkgcmVjZWl2ZXMgYSBsaWNlbnNlIGZyb20gdGhlCm9yaWdpbmFsIGxpY2Vuc29yIHRvIGNvcHksIGRpc3RyaWJ1dGUsIGxpbmsgd2l0aCBvciBtb2RpZnkgdGhlIExpYnJhcnkKc3ViamVjdCB0byB0aGVzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucy4gIFlvdSBtYXkgbm90IGltcG9zZSBhbnkgZnVydGhlcgpyZXN0cmljdGlvbnMgb24gdGhlIHJlY2lwaWVudHMnIGV4ZXJjaXNlIG9mIHRoZSByaWdodHMgZ3JhbnRlZCBoZXJlaW4uCllvdSBhcmUgbm90IHJlc3BvbnNpYmxlIGZvciBlbmZvcmNpbmcgY29tcGxpYW5jZSBieSB0aGlyZCBwYXJ0aWVzIHdpdGgKdGhpcyBMaWNlbnNlLgoKICAxMS4gSWYsIGFzIGEgY29uc2VxdWVuY2Ugb2YgYSBjb3VydCBqdWRnbWVudCBvciBhbGxlZ2F0aW9uIG9mIHBhdGVudAppbmZyaW5nZW1lbnQgb3IgZm9yIGFueSBvdGhlciByZWFzb24gKG5vdCBsaW1pdGVkIHRvIHBhdGVudCBpc3N1ZXMpLApjb25kaXRpb25zIGFyZSBpbXBvc2VkIG9uIHlvdSAod2hldGhlciBieSBjb3VydCBvcmRlciwgYWdyZWVtZW50IG9yCm90aGVyd2lzZSkgdGhhdCBjb250cmFkaWN0IHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZSwgdGhleSBkbyBub3QKZXhjdXNlIHlvdSBmcm9tIHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZS4gIElmIHlvdSBjYW5ub3QKZGlzdHJpYnV0ZSBzbyBhcyB0byBzYXRpc2Z5IHNpbXVsdGFuZW91c2x5IHlvdXIgb2JsaWdhdGlvbnMgdW5kZXIgdGhpcwpMaWNlbnNlIGFuZCBhbnkgb3RoZXIgcGVydGluZW50IG9ibGlnYXRpb25zLCB0aGVuIGFzIGEgY29uc2VxdWVuY2UgeW91Cm1heSBub3QgZGlzdHJpYnV0ZSB0aGUgTGlicmFyeSBhdCBhbGwuICBGb3IgZXhhbXBsZSwgaWYgYSBwYXRlbnQKbGljZW5zZSB3b3VsZCBub3QgcGVybWl0IHJveWFsdHktZnJlZSByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgTGlicmFyeSBieQphbGwgdGhvc2Ugd2hvIHJlY2VpdmUgY29waWVzIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgdGhyb3VnaCB5b3UsIHRoZW4KdGhlIG9ubHkgd2F5IHlvdSBjb3VsZCBzYXRpc2Z5IGJvdGggaXQgYW5kIHRoaXMgTGljZW5zZSB3b3VsZCBiZSB0bwpyZWZyYWluIGVudGlyZWx5IGZyb20gZGlzdHJpYnV0aW9uIG9mIHRoZSBMaWJyYXJ5LgoKSWYgYW55IHBvcnRpb24gb2YgdGhpcyBzZWN0aW9uIGlzIGhlbGQgaW52YWxpZCBvciB1bmVuZm9yY2VhYmxlIHVuZGVyIGFueQpwYXJ0aWN1bGFyIGNpcmN1bXN0YW5jZSwgdGhlIGJhbGFuY2Ugb2YgdGhlIHNlY3Rpb24gaXMgaW50ZW5kZWQgdG8gYXBwbHksCmFuZCB0aGUgc2VjdGlvbiBhcyBhIHdob2xlIGlzIGludGVuZGVkIHRvIGFwcGx5IGluIG90aGVyIGNpcmN1bXN0YW5jZXMuCgpJdCBpcyBub3QgdGhlIHB1cnBvc2Ugb2YgdGhpcyBzZWN0aW9uIHRvIGluZHVjZSB5b3UgdG8gaW5mcmluZ2UgYW55CnBhdGVudHMgb3Igb3RoZXIgcHJvcGVydHkgcmlnaHQgY2xhaW1zIG9yIHRvIGNvbnRlc3QgdmFsaWRpdHkgb2YgYW55CnN1Y2ggY2xhaW1zOyB0aGlzIHNlY3Rpb24gaGFzIHRoZSBzb2xlIHB1cnBvc2Ugb2YgcHJvdGVjdGluZyB0aGUKaW50ZWdyaXR5IG9mIHRoZSBmcmVlIHNvZnR3YXJlIGRpc3RyaWJ1dGlvbiBzeXN0ZW0gd2hpY2ggaXMKaW1wbGVtZW50ZWQgYnkgcHVibGljIGxpY2Vuc2UgcHJhY3RpY2VzLiAgTWFueSBwZW9wbGUgaGF2ZSBtYWRlCmdlbmVyb3VzIGNvbnRyaWJ1dGlvbnMgdG8gdGhlIHdpZGUgcmFuZ2Ugb2Ygc29mdHdhcmUgZGlzdHJpYnV0ZWQKdGhyb3VnaCB0aGF0IHN5c3RlbSBpbiByZWxpYW5jZSBvbiBjb25zaXN0ZW50IGFwcGxpY2F0aW9uIG9mIHRoYXQKc3lzdGVtOyBpdCBpcyB1cCB0byB0aGUgYXV0aG9yL2Rvbm9yIHRvIGRlY2lkZSBpZiBoZSBvciBzaGUgaXMgd2lsbGluZwp0byBkaXN0cmlidXRlIHNvZnR3YXJlIHRocm91Z2ggYW55IG90aGVyIHN5c3RlbSBhbmQgYSBsaWNlbnNlZSBjYW5ub3QKaW1wb3NlIHRoYXQgY2hvaWNlLgoKVGhpcyBzZWN0aW9uIGlzIGludGVuZGVkIHRvIG1ha2UgdGhvcm91Z2hseSBjbGVhciB3aGF0IGlzIGJlbGlldmVkIHRvCmJlIGEgY29uc2VxdWVuY2Ugb2YgdGhlIHJlc3Qgb2YgdGhpcyBMaWNlbnNlLgoKICAxMi4gSWYgdGhlIGRpc3RyaWJ1dGlvbiBhbmQvb3IgdXNlIG9mIHRoZSBMaWJyYXJ5IGlzIHJlc3RyaWN0ZWQgaW4KY2VydGFpbiBjb3VudHJpZXMgZWl0aGVyIGJ5IHBhdGVudHMgb3IgYnkgY29weXJpZ2h0ZWQgaW50ZXJmYWNlcywgdGhlCm9yaWdpbmFsIGNvcHlyaWdodCBob2xkZXIgd2hvIHBsYWNlcyB0aGUgTGlicmFyeSB1bmRlciB0aGlzIExpY2Vuc2UgbWF5IGFkZAphbiBleHBsaWNpdCBnZW9ncmFwaGljYWwgZGlzdHJpYnV0aW9uIGxpbWl0YXRpb24gZXhjbHVkaW5nIHRob3NlIGNvdW50cmllcywKc28gdGhhdCBkaXN0cmlidXRpb24gaXMgcGVybWl0dGVkIG9ubHkgaW4gb3IgYW1vbmcgY291bnRyaWVzIG5vdCB0aHVzCmV4Y2x1ZGVkLiAgSW4gc3VjaCBjYXNlLCB0aGlzIExpY2Vuc2UgaW5jb3Jwb3JhdGVzIHRoZSBsaW1pdGF0aW9uIGFzIGlmCndyaXR0ZW4gaW4gdGhlIGJvZHkgb2YgdGhpcyBMaWNlbnNlLgoKICAxMy4gVGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBtYXkgcHVibGlzaCByZXZpc2VkIGFuZC9vciBuZXcKdmVyc2lvbnMgb2YgdGhlIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZyb20gdGltZSB0byB0aW1lLgpTdWNoIG5ldyB2ZXJzaW9ucyB3aWxsIGJlIHNpbWlsYXIgaW4gc3Bpcml0IHRvIHRoZSBwcmVzZW50IHZlcnNpb24sCmJ1dCBtYXkgZGlmZmVyIGluIGRldGFpbCB0byBhZGRyZXNzIG5ldyBwcm9ibGVtcyBvciBjb25jZXJucy4KCkVhY2ggdmVyc2lvbiBpcyBnaXZlbiBhIGRpc3Rpbmd1aXNoaW5nIHZlcnNpb24gbnVtYmVyLiAgSWYgdGhlIExpYnJhcnkKc3BlY2lmaWVzIGEgdmVyc2lvbiBudW1iZXIgb2YgdGhpcyBMaWNlbnNlIHdoaWNoIGFwcGxpZXMgdG8gaXQgYW5kCiJhbnkgbGF0ZXIgdmVyc2lvbiIsIHlvdSBoYXZlIHRoZSBvcHRpb24gb2YgZm9sbG93aW5nIHRoZSB0ZXJtcyBhbmQKY29uZGl0aW9ucyBlaXRoZXIgb2YgdGhhdCB2ZXJzaW9uIG9yIG9mIGFueSBsYXRlciB2ZXJzaW9uIHB1Ymxpc2hlZCBieQp0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLiAgSWYgdGhlIExpYnJhcnkgZG9lcyBub3Qgc3BlY2lmeSBhCmxpY2Vuc2UgdmVyc2lvbiBudW1iZXIsIHlvdSBtYXkgY2hvb3NlIGFueSB2ZXJzaW9uIGV2ZXIgcHVibGlzaGVkIGJ5CnRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCgogIDE0LiBJZiB5b3Ugd2lzaCB0byBpbmNvcnBvcmF0ZSBwYXJ0cyBvZiB0aGUgTGlicmFyeSBpbnRvIG90aGVyIGZyZWUKcHJvZ3JhbXMgd2hvc2UgZGlzdHJpYnV0aW9uIGNvbmRpdGlvbnMgYXJlIGluY29tcGF0aWJsZSB3aXRoIHRoZXNlLAp3cml0ZSB0byB0aGUgYXV0aG9yIHRvIGFzayBmb3IgcGVybWlzc2lvbi4gIEZvciBzb2Z0d2FyZSB3aGljaCBpcwpjb3B5cmlnaHRlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3cml0ZSB0byB0aGUgRnJlZQpTb2Z0d2FyZSBGb3VuZGF0aW9uOyB3ZSBzb21ldGltZXMgbWFrZSBleGNlcHRpb25zIGZvciB0aGlzLiAgT3VyCmRlY2lzaW9uIHdpbGwgYmUgZ3VpZGVkIGJ5IHRoZSB0d28gZ29hbHMgb2YgcHJlc2VydmluZyB0aGUgZnJlZSBzdGF0dXMKb2YgYWxsIGRlcml2YXRpdmVzIG9mIG91ciBmcmVlIHNvZnR3YXJlIGFuZCBvZiBwcm9tb3RpbmcgdGhlIHNoYXJpbmcKYW5kIHJldXNlIG9mIHNvZnR3YXJlIGdlbmVyYWxseS4KCiAgICAgICAgICBOTyBXQVJSQU5UWQoKICAxNS4gQkVDQVVTRSBUSEUgTElCUkFSWSBJUyBMSUNFTlNFRCBGUkVFIE9GIENIQVJHRSwgVEhFUkUgSVMgTk8KV0FSUkFOVFkgRk9SIFRIRSBMSUJSQVJZLCBUTyBUSEUgRVhURU5UIFBFUk1JVFRFRCBCWSBBUFBMSUNBQkxFIExBVy4KRVhDRVBUIFdIRU4gT1RIRVJXSVNFIFNUQVRFRCBJTiBXUklUSU5HIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQvT1IKT1RIRVIgUEFSVElFUyBQUk9WSURFIFRIRSBMSUJSQVJZICJBUyBJUyIgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKS0lORCwgRUlUSEVSIEVYUFJFU1NFRCBPUiBJTVBMSUVELCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCklNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgpQVVJQT1NFLiAgVEhFIEVOVElSRSBSSVNLIEFTIFRPIFRIRSBRVUFMSVRZIEFORCBQRVJGT1JNQU5DRSBPRiBUSEUKTElCUkFSWSBJUyBXSVRIIFlPVS4gIFNIT1VMRCBUSEUgTElCUkFSWSBQUk9WRSBERUZFQ1RJVkUsIFlPVSBBU1NVTUUKVEhFIENPU1QgT0YgQUxMIE5FQ0VTU0FSWSBTRVJWSUNJTkcsIFJFUEFJUiBPUiBDT1JSRUNUSU9OLgoKICAxNi4gSU4gTk8gRVZFTlQgVU5MRVNTIFJFUVVJUkVEIEJZIEFQUExJQ0FCTEUgTEFXIE9SIEFHUkVFRCBUTyBJTgpXUklUSU5HIFdJTEwgQU5ZIENPUFlSSUdIVCBIT0xERVIsIE9SIEFOWSBPVEhFUiBQQVJUWSBXSE8gTUFZIE1PRElGWQpBTkQvT1IgUkVESVNUUklCVVRFIFRIRSBMSUJSQVJZIEFTIFBFUk1JVFRFRCBBQk9WRSwgQkUgTElBQkxFIFRPIFlPVQpGT1IgREFNQUdFUywgSU5DTFVESU5HIEFOWSBHRU5FUkFMLCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SCkNPTlNFUVVFTlRJQUwgREFNQUdFUyBBUklTSU5HIE9VVCBPRiBUSEUgVVNFIE9SIElOQUJJTElUWSBUTyBVU0UgVEhFCkxJQlJBUlkgKElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gTE9TUyBPRiBEQVRBIE9SIERBVEEgQkVJTkcKUkVOREVSRUQgSU5BQ0NVUkFURSBPUiBMT1NTRVMgU1VTVEFJTkVEIEJZIFlPVSBPUiBUSElSRCBQQVJUSUVTIE9SIEEKRkFJTFVSRSBPRiBUSEUgTElCUkFSWSBUTyBPUEVSQVRFIFdJVEggQU5ZIE9USEVSIFNPRlRXQVJFKSwgRVZFTiBJRgpTVUNIIEhPTERFUiBPUiBPVEhFUiBQQVJUWSBIQVMgQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICkRBTUFHRVMuCgogICAgICAgICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKCiAgICAgICAgICAgSG93IHRvIEFwcGx5IFRoZXNlIFRlcm1zIHRvIFlvdXIgTmV3IExpYnJhcmllcwoKICBJZiB5b3UgZGV2ZWxvcCBhIG5ldyBsaWJyYXJ5LCBhbmQgeW91IHdhbnQgaXQgdG8gYmUgb2YgdGhlIGdyZWF0ZXN0CnBvc3NpYmxlIHVzZSB0byB0aGUgcHVibGljLCB3ZSByZWNvbW1lbmQgbWFraW5nIGl0IGZyZWUgc29mdHdhcmUgdGhhdApldmVyeW9uZSBjYW4gcmVkaXN0cmlidXRlIGFuZCBjaGFuZ2UuICBZb3UgY2FuIGRvIHNvIGJ5IHBlcm1pdHRpbmcKcmVkaXN0cmlidXRpb24gdW5kZXIgdGhlc2UgdGVybXMgKG9yLCBhbHRlcm5hdGl2ZWx5LCB1bmRlciB0aGUgdGVybXMgb2YgdGhlCm9yZGluYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UpLgoKICBUbyBhcHBseSB0aGVzZSB0ZXJtcywgYXR0YWNoIHRoZSBmb2xsb3dpbmcgbm90aWNlcyB0byB0aGUgbGlicmFyeS4gIEl0IGlzCnNhZmVzdCB0byBhdHRhY2ggdGhlbSB0byB0aGUgc3RhcnQgb2YgZWFjaCBzb3VyY2UgZmlsZSB0byBtb3N0IGVmZmVjdGl2ZWx5CmNvbnZleSB0aGUgZXhjbHVzaW9uIG9mIHdhcnJhbnR5OyBhbmQgZWFjaCBmaWxlIHNob3VsZCBoYXZlIGF0IGxlYXN0IHRoZQoiY29weXJpZ2h0IiBsaW5lIGFuZCBhIHBvaW50ZXIgdG8gd2hlcmUgdGhlIGZ1bGwgbm90aWNlIGlzIGZvdW5kLgoKICAgIDxvbmUgbGluZSB0byBnaXZlIHRoZSBsaWJyYXJ5J3MgbmFtZSBhbmQgYSBicmllZiBpZGVhIG9mIHdoYXQgaXQgZG9lcy4+CiAgICBDb3B5cmlnaHQgKEMpIDx5ZWFyPiAgPG5hbWUgb2YgYXV0aG9yPgoKICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCgogICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCgpBbHNvIGFkZCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY29udGFjdCB5b3UgYnkgZWxlY3Ryb25pYyBhbmQgcGFwZXIgbWFpbC4KCllvdSBzaG91bGQgYWxzbyBnZXQgeW91ciBlbXBsb3llciAoaWYgeW91IHdvcmsgYXMgYSBwcm9ncmFtbWVyKSBvciB5b3VyCnNjaG9vbCwgaWYgYW55LCB0byBzaWduIGEgImNvcHlyaWdodCBkaXNjbGFpbWVyIiBmb3IgdGhlIGxpYnJhcnksIGlmCm5lY2Vzc2FyeS4gIEhlcmUgaXMgYSBzYW1wbGU7IGFsdGVyIHRoZSBuYW1lczoKCiAgWW95b2R5bmUsIEluYy4sIGhlcmVieSBkaXNjbGFpbXMgYWxsIGNvcHlyaWdodCBpbnRlcmVzdCBpbiB0aGUKICBsaWJyYXJ5IGBGcm9iJyAoYSBsaWJyYXJ5IGZvciB0d2Vha2luZyBrbm9icykgd3JpdHRlbiBieSBKYW1lcyBSYW5kb20gSGFja2VyLgoKICA8c2lnbmF0dXJlIG9mIFR5IENvb24+LCAxIEFwcmlsIDE5OTAKICBUeSBDb29uLCBQcmVzaWRlbnQgb2YgVmljZQoKVGhhdCdzIGFsbCB0aGVyZSBpcyB0byBpdCEKCgo=]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/advlist/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/advlist/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIG4sdCxlLHI9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuUGx1Z2luTWFuYWdlciIpLHM9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UudXRpbC5Ub29scyIpLGM9ZnVuY3Rpb24obix0LGUpe3ZhciByPSJVTCI9PT10PyJJbnNlcnRVbm9yZGVyZWRMaXN0IjoiSW5zZXJ0T3JkZXJlZExpc3QiO24uZXhlY0NvbW1hbmQociwhMSwhMT09PWU/bnVsbDp7Imxpc3Qtc3R5bGUtdHlwZSI6ZX0pfSxvPWZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBufX0sdT1vKCExKSxsPW8oITApLGk9ZnVuY3Rpb24oKXtyZXR1cm4gYX0sYT0obj1mdW5jdGlvbihuKXtyZXR1cm4gbi5pc05vbmUoKX0se2ZvbGQ6ZnVuY3Rpb24obix0KXtyZXR1cm4gbigpfSxpczp1LGlzU29tZTp1LGlzTm9uZTpsLGdldE9yOmU9ZnVuY3Rpb24obil7cmV0dXJuIG59LGdldE9yVGh1bms6dD1mdW5jdGlvbihuKXtyZXR1cm4gbigpfSxnZXRPckRpZTpmdW5jdGlvbihuKXt0aHJvdyBuZXcgRXJyb3Iobnx8ImVycm9yOiBnZXRPckRpZSBjYWxsZWQgb24gbm9uZS4iKX0sZ2V0T3JOdWxsOm8obnVsbCksZ2V0T3JVbmRlZmluZWQ6byh1bmRlZmluZWQpLG9yOmUsb3JUaHVuazp0LG1hcDppLGVhY2g6ZnVuY3Rpb24oKXt9LGJpbmQ6aSxleGlzdHM6dSxmb3JhbGw6bCxmaWx0ZXI6aSxlcXVhbHM6bixlcXVhbHNfOm4sdG9BcnJheTpmdW5jdGlvbigpe3JldHVybltdfSx0b1N0cmluZzpvKCJub25lKCkiKX0pLGY9ZnVuY3Rpb24oZSl7dmFyIG49byhlKSx0PWZ1bmN0aW9uKCl7cmV0dXJuIGl9LHI9ZnVuY3Rpb24obil7cmV0dXJuIG4oZSl9LGk9e2ZvbGQ6ZnVuY3Rpb24obix0KXtyZXR1cm4gdChlKX0saXM6ZnVuY3Rpb24obil7cmV0dXJuIGU9PT1ufSxpc1NvbWU6bCxpc05vbmU6dSxnZXRPcjpuLGdldE9yVGh1bms6bixnZXRPckRpZTpuLGdldE9yTnVsbDpuLGdldE9yVW5kZWZpbmVkOm4sb3I6dCxvclRodW5rOnQsbWFwOmZ1bmN0aW9uKG4pe3JldHVybiBmKG4oZSkpfSxlYWNoOmZ1bmN0aW9uKG4pe24oZSl9LGJpbmQ6cixleGlzdHM6cixmb3JhbGw6cixmaWx0ZXI6ZnVuY3Rpb24obil7cmV0dXJuIG4oZSk/aTphfSx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuW2VdfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiJzb21lKCIrZSsiKSJ9LGVxdWFsczpmdW5jdGlvbihuKXtyZXR1cm4gbi5pcyhlKX0sZXF1YWxzXzpmdW5jdGlvbihuLHQpe3JldHVybiBuLmZvbGQodSxmdW5jdGlvbihuKXtyZXR1cm4gdChlLG4pfSl9fTtyZXR1cm4gaX0sZD1mdW5jdGlvbihuKXtyZXR1cm4gbnVsbD09PW58fG49PT11bmRlZmluZWQ/YTpmKG4pfSxnPWZ1bmN0aW9uKG4pe3JldHVybiBuJiYvXihUSHxURCkkLy50ZXN0KG4ubm9kZU5hbWUpfSxwPWZ1bmN0aW9uKHIpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gbiYmL14oT0x8VUx8REwpJC8udGVzdChuLm5vZGVOYW1lKSYmKGU9biwodD1yKS4kLmNvbnRhaW5zKHQuZ2V0Qm9keSgpLGUpKTt2YXIgdCxlfX0sbT1mdW5jdGlvbihuLHQsZSl7dmFyIHI9ZnVuY3Rpb24obix0KXtmb3IodmFyIGU9MDtlPG4ubGVuZ3RoO2UrKyl7aWYodChuW2VdKSlyZXR1cm4gZX1yZXR1cm4tMX0odC5wYXJlbnRzLGcpLGk9LTEhPT1yP3QucGFyZW50cy5zbGljZSgwLHIpOnQucGFyZW50cyxvPXMuZ3JlcChpLHAobikpO3JldHVybiAwPG8ubGVuZ3RoJiZvWzBdLm5vZGVOYW1lPT09ZX0seT1mdW5jdGlvbihpLG4sdCxlLHIsbyl7aS51aS5yZWdpc3RyeS5hZGRTcGxpdEJ1dHRvbihuLHt0b29sdGlwOnQsaWNvbjoiT0wiPT09cj8ib3JkZXJlZC1saXN0IjoidW5vcmRlcmVkLWxpc3QiLHByZXNldHM6Imxpc3RwcmV2aWV3Iixjb2x1bW5zOjMsZmV0Y2g6ZnVuY3Rpb24obil7bihzLm1hcChvLGZ1bmN0aW9uKG4pe3JldHVybnt0eXBlOiJjaG9pY2VpdGVtIix2YWx1ZToiZGVmYXVsdCI9PT1uPyIiOm4saWNvbjoibGlzdC0iKygiT0wiPT09cj8ibnVtIjoiYnVsbCIpKyItIisoImRpc2MiPT09bnx8ImRlY2ltYWwiPT09bj8iZGVmYXVsdCI6biksdGV4dDpuLnJlcGxhY2UoL1wtL2csIiAiKS5yZXBsYWNlKC9cYlx3L2csZnVuY3Rpb24obil7cmV0dXJuIG4udG9VcHBlckNhc2UoKX0pfX0pKX0sb25BY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gaS5leGVjQ29tbWFuZChlKX0sb25JdGVtQWN0aW9uOmZ1bmN0aW9uKG4sdCl7YyhpLHIsdCl9LHNlbGVjdDpmdW5jdGlvbih0KXt2YXIgbixlLHI7cmV0dXJuKGU9KG49aSkuZG9tLmdldFBhcmVudChuLnNlbGVjdGlvbi5nZXROb2RlKCksIm9sLHVsIikscj1uLmRvbS5nZXRTdHlsZShlLCJsaXN0U3R5bGVUeXBlIiksZChyKSkubWFwKGZ1bmN0aW9uKG4pe3JldHVybiB0PT09bn0pLmdldE9yKCExKX0sb25TZXR1cDpmdW5jdGlvbih0KXt2YXIgbj1mdW5jdGlvbihuKXt0LnNldEFjdGl2ZShtKGksbixyKSl9O3JldHVybiBpLm9uKCJOb2RlQ2hhbmdlIixuKSxmdW5jdGlvbigpe3JldHVybiBpLm9mZigiTm9kZUNoYW5nZSIsbil9fX0pfSx2PWZ1bmN0aW9uKG4sdCxlLHIsaSxvKXt2YXIgdSxsLHMsYyxhOzA8by5sZW5ndGg/eShuLHQsZSxyLGksbyk6KGw9dCxzPWUsYz1yLGE9aSwodT1uKS51aS5yZWdpc3RyeS5hZGRUb2dnbGVCdXR0b24obCx7YWN0aXZlOiExLHRvb2x0aXA6cyxpY29uOiJPTCI9PT1hPyJvcmRlcmVkLWxpc3QiOiJ1bm9yZGVyZWQtbGlzdCIsb25TZXR1cDpmdW5jdGlvbih0KXt2YXIgbj1mdW5jdGlvbihuKXt0LnNldEFjdGl2ZShtKHUsbixhKSl9O3JldHVybiB1Lm9uKCJOb2RlQ2hhbmdlIixuKSxmdW5jdGlvbigpe3JldHVybiB1Lm9mZigiTm9kZUNoYW5nZSIsbil9fSxvbkFjdGlvbjpmdW5jdGlvbigpe3JldHVybiB1LmV4ZWNDb21tYW5kKGMpfX0pKX07IWZ1bmN0aW9uIE8oKXtyLmFkZCgiYWR2bGlzdCIsZnVuY3Rpb24obil7dmFyIGUsdCxyLGksbyx1LGw7dT0ibGlzdHMiLGw9KG89bikuc2V0dGluZ3MucGx1Z2lucz9vLnNldHRpbmdzLnBsdWdpbnM6IiIsLTEhPT1zLmluQXJyYXkobC5zcGxpdCgvWyAsXS8pLHUpJiYodih0PW4sIm51bWxpc3QiLCJOdW1iZXJlZCBsaXN0IiwiSW5zZXJ0T3JkZXJlZExpc3QiLCJPTCIsKHI9dC5nZXRQYXJhbSgiYWR2bGlzdF9udW1iZXJfc3R5bGVzIiwiZGVmYXVsdCxsb3dlci1hbHBoYSxsb3dlci1ncmVlayxsb3dlci1yb21hbix1cHBlci1hbHBoYSx1cHBlci1yb21hbiIpKT9yLnNwbGl0KC9bICxdLyk6W10pLHYodCwiYnVsbGlzdCIsIkJ1bGxldCBsaXN0IiwiSW5zZXJ0VW5vcmRlcmVkTGlzdCIsIlVMIiwoaT10LmdldFBhcmFtKCJhZHZsaXN0X2J1bGxldF9zdHlsZXMiLCJkZWZhdWx0LGNpcmNsZSxzcXVhcmUiKSk/aS5zcGxpdCgvWyAsXS8pOltdKSwoZT1uKS5hZGRDb21tYW5kKCJBcHBseVVub3JkZXJlZExpc3RTdHlsZSIsZnVuY3Rpb24obix0KXtjKGUsIlVMIix0WyJsaXN0LXN0eWxlLXR5cGUiXSl9KSxlLmFkZENvbW1hbmQoIkFwcGx5T3JkZXJlZExpc3RTdHlsZSIsZnVuY3Rpb24obix0KXtjKGUsIk9MIix0WyJsaXN0LXN0eWxlLXR5cGUiXSl9KSl9KX0oKX0oKTs=]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/anchor/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/anchor/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIGU9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuUGx1Z2luTWFuYWdlciIpLGE9ZnVuY3Rpb24oZSx0KXtyZXR1cm4iQSI9PT10LnRhZ05hbWUmJiIiPT09ZS5kb20uZ2V0QXR0cmliKHQsImhyZWYiKX0scj1mdW5jdGlvbihlLHQpe3JldHVybi9eW0EtWmEtel1bQS1aYS16MC05XC06Ll9dKiQvLnRlc3QodCk/KG89dCxyPShuPWUpLnNlbGVjdGlvbi5nZXROb2RlKCksYShuLHIpPyhyLnJlbW92ZUF0dHJpYnV0ZSgibmFtZSIpLHIuaWQ9byxuLnVuZG9NYW5hZ2VyLmFkZCgpKToobi5mb2N1cygpLG4uc2VsZWN0aW9uLmNvbGxhcHNlKCEwKSxuLmluc2VydENvbnRlbnQobi5kb20uY3JlYXRlSFRNTCgiYSIse2lkOm99KSkpLCEwKTooZS53aW5kb3dNYW5hZ2VyLmFsZXJ0KCJJZCBzaG91bGQgc3RhcnQgd2l0aCBhIGxldHRlciwgZm9sbG93ZWQgb25seSBieSBsZXR0ZXJzLCBudW1iZXJzLCBkYXNoZXMsIGRvdHMsIGNvbG9ucyBvciB1bmRlcnNjb3Jlcy4iKSwhMSk7dmFyIG4sbyxyfSxpPWZ1bmN0aW9uKHQpe3ZhciBlLG4sbz0obj0oZT10KS5zZWxlY3Rpb24uZ2V0Tm9kZSgpLGEoZSxuKT9uLmdldEF0dHJpYnV0ZSgiaWQiKXx8bi5nZXRBdHRyaWJ1dGUoIm5hbWUiKToiIik7dC53aW5kb3dNYW5hZ2VyLm9wZW4oe3RpdGxlOiJBbmNob3IiLHNpemU6Im5vcm1hbCIsYm9keTp7dHlwZToicGFuZWwiLGl0ZW1zOlt7bmFtZToiaWQiLHR5cGU6ImlucHV0IixsYWJlbDoiSUQiLHBsYWNlaG9sZGVyOiJleGFtcGxlIn1dfSxidXR0b25zOlt7dHlwZToiY2FuY2VsIixuYW1lOiJjYW5jZWwiLHRleHQ6IkNhbmNlbCJ9LHt0eXBlOiJzdWJtaXQiLG5hbWU6InNhdmUiLHRleHQ6IlNhdmUiLHByaW1hcnk6ITB9XSxpbml0aWFsRGF0YTp7aWQ6b30sb25TdWJtaXQ6ZnVuY3Rpb24oZSl7cih0LGUuZ2V0RGF0YSgpLmlkKSYmZS5jbG9zZSgpfX0pfSxjPWZ1bmN0aW9uKG8pe3JldHVybiBmdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKykobj1lW3RdKS5hdHRyKCJocmVmIil8fCFuLmF0dHIoImlkIikmJiFuLmF0dHIoIm5hbWUiKXx8bi5maXJzdENoaWxkfHxlW3RdLmF0dHIoImNvbnRlbnRlZGl0YWJsZSIsbyk7dmFyIG59fTshZnVuY3Rpb24gdCgpe2UuYWRkKCJhbmNob3IiLGZ1bmN0aW9uKGUpe3ZhciB0LG4sbzsodD1lKS5vbigiUHJlSW5pdCIsZnVuY3Rpb24oKXt0LnBhcnNlci5hZGROb2RlRmlsdGVyKCJhIixjKCJmYWxzZSIpKSx0LnNlcmlhbGl6ZXIuYWRkTm9kZUZpbHRlcigiYSIsYyhudWxsKSl9KSwobj1lKS5hZGRDb21tYW5kKCJtY2VBbmNob3IiLGZ1bmN0aW9uKCl7aShuKX0pLChvPWUpLnVpLnJlZ2lzdHJ5LmFkZFRvZ2dsZUJ1dHRvbigiYW5jaG9yIix7aWNvbjoiYm9va21hcmsiLHRvb2x0aXA6IkFuY2hvciIsb25BY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gby5leGVjQ29tbWFuZCgibWNlQW5jaG9yIil9LG9uU2V0dXA6ZnVuY3Rpb24oZSl7cmV0dXJuIG8uc2VsZWN0aW9uLnNlbGVjdG9yQ2hhbmdlZFdpdGhVbmJpbmQoImE6bm90KFtocmVmXSkiLGUuc2V0QWN0aXZlKS51bmJpbmR9fSksby51aS5yZWdpc3RyeS5hZGRNZW51SXRlbSgiYW5jaG9yIix7aWNvbjoiYm9va21hcmsiLHRleHQ6IkFuY2hvci4uLiIsb25BY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gby5leGVjQ29tbWFuZCgibWNlQW5jaG9yIil9fSl9KX0oKX0oKTs=]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/autolink/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/autolink/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIGU9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuUGx1Z2luTWFuYWdlciIpLGk9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuRW52Iiksbz1mdW5jdGlvbihlLHQpe2lmKHQ8MCYmKHQ9MCksMz09PWUubm9kZVR5cGUpe3ZhciBuPWUuZGF0YS5sZW5ndGg7bjx0JiYodD1uKX1yZXR1cm4gdH0seT1mdW5jdGlvbihlLHQsbil7MSE9PXQubm9kZVR5cGV8fHQuaGFzQ2hpbGROb2RlcygpP2Uuc2V0U3RhcnQodCxvKHQsbikpOmUuc2V0U3RhcnRCZWZvcmUodCl9LGs9ZnVuY3Rpb24oZSx0LG4pezEhPT10Lm5vZGVUeXBlfHx0Lmhhc0NoaWxkTm9kZXMoKT9lLnNldEVuZCh0LG8odCxuKSk6ZS5zZXRFbmRBZnRlcih0KX0scj1mdW5jdGlvbihlLHQsbil7dmFyIGksbyxyLGEscyxmLGwsZCxjLGcsdT1lLmdldFBhcmFtKCJhdXRvbGlua19wYXR0ZXJuIiwvXihodHRwcz86XC9cL3xzc2g6XC9cL3xmdHA6XC9cL3xmaWxlOlwvfHd3d1wufCg/Om1haWx0bzopP1tBLVowLTkuXyUrXC1dK0ApKC4rKSQvaSksaD1lLmdldFBhcmFtKCJkZWZhdWx0X2xpbmtfdGFyZ2V0IiwhMSk7aWYoIkEiIT09ZS5zZWxlY3Rpb24uZ2V0Tm9kZSgpLnRhZ05hbWUpe2lmKChpPWUuc2VsZWN0aW9uLmdldFJuZyghMCkuY2xvbmVSYW5nZSgpKS5zdGFydE9mZnNldDw1KXtpZighKGQ9aS5lbmRDb250YWluZXIucHJldmlvdXNTaWJsaW5nKSl7aWYoIWkuZW5kQ29udGFpbmVyLmZpcnN0Q2hpbGR8fCFpLmVuZENvbnRhaW5lci5maXJzdENoaWxkLm5leHRTaWJsaW5nKXJldHVybjtkPWkuZW5kQ29udGFpbmVyLmZpcnN0Q2hpbGQubmV4dFNpYmxpbmd9aWYoYz1kLmxlbmd0aCx5KGksZCxjKSxrKGksZCxjKSxpLmVuZE9mZnNldDw1KXJldHVybjtvPWkuZW5kT2Zmc2V0LGE9ZH1lbHNle2lmKDMhPT0oYT1pLmVuZENvbnRhaW5lcikubm9kZVR5cGUmJmEuZmlyc3RDaGlsZCl7Zm9yKDszIT09YS5ub2RlVHlwZSYmYS5maXJzdENoaWxkOylhPWEuZmlyc3RDaGlsZDszPT09YS5ub2RlVHlwZSYmKHkoaSxhLDApLGsoaSxhLGEubm9kZVZhbHVlLmxlbmd0aCkpfW89MT09PWkuZW5kT2Zmc2V0PzI6aS5lbmRPZmZzZXQtMS10fWZvcihyPW87eShpLGEsMjw9bz9vLTI6MCksayhpLGEsMTw9bz9vLTE6MCksLS1vLCIgIiE9PShnPWkudG9TdHJpbmcoKSkmJiIiIT09ZyYmMTYwIT09Zy5jaGFyQ29kZUF0KDApJiYwPD1vLTImJmchPT1uOyk7dmFyIG07KG09aS50b1N0cmluZygpKT09PW58fCIgIj09PW18fDE2MD09PW0uY2hhckNvZGVBdCgwKT8oeShpLGEsbyksayhpLGEsciksbys9MSk6KDA9PT1pLnN0YXJ0T2Zmc2V0P3koaSxhLDApOnkoaSxhLG8pLGsoaSxhLHIpKSwiLiI9PT0oZj1pLnRvU3RyaW5nKCkpLmNoYXJBdChmLmxlbmd0aC0xKSYmayhpLGEsci0xKSxsPShmPWkudG9TdHJpbmcoKS50cmltKCkpLm1hdGNoKHUpO3ZhciBDPWUuZ2V0UGFyYW0oImxpbmtfZGVmYXVsdF9wcm90b2NvbCIsImh0dHAiLCJzdHJpbmciKTtsJiYoInd3dy4iPT09bFsxXT9sWzFdPUMrIjovL3d3dy4iOi9AJC8udGVzdChsWzFdKSYmIS9ebWFpbHRvOi8udGVzdChsWzFdKSYmKGxbMV09Im1haWx0bzoiK2xbMV0pLHM9ZS5zZWxlY3Rpb24uZ2V0Qm9va21hcmsoKSxlLnNlbGVjdGlvbi5zZXRSbmcoaSksZS5leGVjQ29tbWFuZCgiY3JlYXRlbGluayIsITEsbFsxXStsWzJdKSwhMSE9PWgmJmUuZG9tLnNldEF0dHJpYihlLnNlbGVjdGlvbi5nZXROb2RlKCksInRhcmdldCIsaCksZS5zZWxlY3Rpb24ubW92ZVRvQm9va21hcmsocyksZS5ub2RlQ2hhbmdlZCgpKX19LHQ9ZnVuY3Rpb24odCl7dmFyIG47dC5vbigia2V5ZG93biIsZnVuY3Rpb24oZSl7aWYoMTMhPT1lLmtleUNvZGUpO2Vsc2Ugcih0LC0xLCIiKX0pLGkuYnJvd3Nlci5pc0lFKCk/dC5vbigiZm9jdXMiLGZ1bmN0aW9uKCl7aWYoIW4pe249ITA7dHJ5e3QuZXhlY0NvbW1hbmQoIkF1dG9VcmxEZXRlY3QiLCExLCEwKX1jYXRjaChlKXt9fX0pOih0Lm9uKCJrZXlwcmVzcyIsZnVuY3Rpb24oZSl7aWYoNDEhPT1lLmtleUNvZGUpO2Vsc2Ugcih0LC0xLCIoIil9KSx0Lm9uKCJrZXl1cCIsZnVuY3Rpb24oZSl7aWYoMzIhPT1lLmtleUNvZGUpO2Vsc2Ugcih0LDAsIiIpfSkpfTshZnVuY3Rpb24gbigpe2UuYWRkKCJhdXRvbGluayIsZnVuY3Rpb24oZSl7dChlKX0pfSgpfSgpOw==]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/autoresize/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/autoresize/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIGU9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuUGx1Z2luTWFuYWdlciIpLGg9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuRW52Iikscj10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS51dGlsLkRlbGF5Iiksdj1mdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRQYXJhbSgibWluX2hlaWdodCIsZS5nZXRFbGVtZW50KCkub2Zmc2V0SGVpZ2h0LCJudW1iZXIiKX0scz1mdW5jdGlvbihlLHQsbixpLG8pe3Iuc2V0RWRpdG9yVGltZW91dChlLGZ1bmN0aW9uKCl7YihlLHQpLG4tLT9zKGUsdCxuLGksbyk6byYmbygpfSxpKX0seT1mdW5jdGlvbihlLHQpe3ZhciBuPWUuZ2V0Qm9keSgpO24mJihuLnN0eWxlLm92ZXJmbG93WT10PyIiOiJoaWRkZW4iLHR8fChuLnNjcm9sbFRvcD0wKSl9LHA9ZnVuY3Rpb24oZSx0LG4saSl7dmFyIG89cGFyc2VJbnQoZS5nZXRTdHlsZSh0LG4saSksMTApO3JldHVybiBpc05hTihvKT8wOm99LGI9ZnVuY3Rpb24oZSx0KXt2YXIgbixpLG8scj1lLmRvbSxhPWUuZ2V0RG9jKCk7aWYoYSlpZigocz1lKS5wbHVnaW5zLmZ1bGxzY3JlZW4mJnMucGx1Z2lucy5mdWxsc2NyZWVuLmlzRnVsbHNjcmVlbigpKXkoZSwhMCk7ZWxzZXt2YXIgcyx1PWEuZG9jdW1lbnRFbGVtZW50LGc9ZS5nZXRQYXJhbSgiYXV0b3Jlc2l6ZV9ib3R0b21fbWFyZ2luIiw1MCwibnVtYmVyIik7aT12KGUpO3ZhciBsPXAocix1LCJtYXJnaW4tdG9wIiwhMCksZj1wKHIsdSwibWFyZ2luLWJvdHRvbSIsITApOyhvPXUub2Zmc2V0SGVpZ2h0K2wrZitnKTwwJiYobz0wKTt2YXIgYz1lLmdldENvbnRhaW5lcigpLm9mZnNldEhlaWdodC1lLmdldENvbnRlbnRBcmVhQ29udGFpbmVyKCkub2Zmc2V0SGVpZ2h0O28rYz52KGUpJiYoaT1vK2MpO3ZhciBtPWUuZ2V0UGFyYW0oIm1heF9oZWlnaHQiLDAsIm51bWJlciIpO2lmKG0mJm08aT8oaT1tLHkoZSwhMCkpOnkoZSwhMSksaSE9PXQuZ2V0KCkpe2lmKG49aS10LmdldCgpLHIuc2V0U3R5bGUoZS5nZXRDb250YWluZXIoKSwiaGVpZ2h0IixpKyJweCIpLHQuc2V0KGkpLGUuZmlyZSgiUmVzaXplRWRpdG9yIiksaC5icm93c2VyLmlzU2FmYXJpKCkmJmgubWFjKXt2YXIgZD1lLmdldFdpbigpO2Quc2Nyb2xsVG8oZC5wYWdlWE9mZnNldCxkLnBhZ2VZT2Zmc2V0KX1lLmhhc0ZvY3VzKCkmJmUuc2VsZWN0aW9uLnNjcm9sbEludG9WaWV3KGUuc2VsZWN0aW9uLmdldE5vZGUoKSksaC53ZWJraXQmJm48MCYmYihlLHQpfX19OyFmdW5jdGlvbiB0KCl7ZS5hZGQoImF1dG9yZXNpemUiLGZ1bmN0aW9uKGUpe2lmKGUuc2V0dGluZ3MuaGFzT3duUHJvcGVydHkoInJlc2l6ZSIpfHwoZS5zZXR0aW5ncy5yZXNpemU9ITEpLCFlLmlubGluZSl7dmFyIHQ9KGE9MCx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGF9LHNldDpmdW5jdGlvbihlKXthPWV9fSk7cj10LChvPWUpLmFkZENvbW1hbmQoIm1jZUF1dG9SZXNpemUiLGZ1bmN0aW9uKCl7YihvLHIpfSksaT10LChuPWUpLm9uKCJpbml0IixmdW5jdGlvbigpe3ZhciBlPW4uZ2V0UGFyYW0oImF1dG9yZXNpemVfb3ZlcmZsb3dfcGFkZGluZyIsMSwibnVtYmVyIiksdD1uLmRvbTt0LnNldFN0eWxlcyhuLmdldERvYygpLmRvY3VtZW50RWxlbWVudCx7aGVpZ2h0OiJhdXRvIn0pLHQuc2V0U3R5bGVzKG4uZ2V0Qm9keSgpLHtwYWRkaW5nTGVmdDplLHBhZGRpbmdSaWdodDplLCJtaW4taGVpZ2h0IjowfSl9KSxuLm9uKCJOb2RlQ2hhbmdlIFNldENvbnRlbnQga2V5dXAgRnVsbHNjcmVlblN0YXRlQ2hhbmdlZCBSZXNpemVDb250ZW50IixmdW5jdGlvbigpe2IobixpKX0pLG4uZ2V0UGFyYW0oImF1dG9yZXNpemVfb25faW5pdCIsITAsImJvb2xlYW4iKSYmbi5vbigiaW5pdCIsZnVuY3Rpb24oKXtzKG4saSwyMCwxMDAsZnVuY3Rpb24oKXtzKG4saSw1LDFlMyl9KX0pfXZhciBuLGksbyxyLGF9KX0oKX0oKTs=]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/autosave/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/autosave/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24ocil7InVzZSBzdHJpY3QiO3ZhciB0PXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLlBsdWdpbk1hbmFnZXIiKSxuPXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLnV0aWwuRGVsYXkiKSxvPXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLnV0aWwuTG9jYWxTdG9yYWdlIiksYT10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS51dGlsLlRvb2xzIiksaT1mdW5jdGlvbih0LGUpe3ZhciByPXR8fGUsbj0vXihcZCspKFttc10/KSQvLmV4ZWMoIiIrcik7cmV0dXJuKG5bMl0/e3M6MWUzLG06NmU0fVtuWzJdXToxKSpwYXJzZUludChyLDEwKX0sdT1mdW5jdGlvbih0KXt2YXIgZT1yLmRvY3VtZW50LmxvY2F0aW9uO3JldHVybiB0LmdldFBhcmFtKCJhdXRvc2F2ZV9wcmVmaXgiLCJ0aW55bWNlLWF1dG9zYXZlLXtwYXRofXtxdWVyeX17aGFzaH0te2lkfS0iKS5yZXBsYWNlKC97cGF0aH0vZyxlLnBhdGhuYW1lKS5yZXBsYWNlKC97cXVlcnl9L2csZS5zZWFyY2gpLnJlcGxhY2UoL3toYXNofS9nLGUuaGFzaCkucmVwbGFjZSgve2lkfS9nLHQuaWQpfSxzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5zZXR0aW5ncy5mb3JjZWRfcm9vdF9ibG9jaztyZXR1cm4iIj09PShlPWEudHJpbSh2b2lkIDA9PT1lP3QuZ2V0Qm9keSgpLmlubmVySFRNTDplKSl8fG5ldyBSZWdFeHAoIl48IityKyJbXj5dKj4oKFx4YTB8Jm5ic3A7fFsgXHRdfDxicltePl0qPikrP3wpPC8iK3IrIj58PGJyPiQiLCJpIikudGVzdChlKX0sZj1mdW5jdGlvbih0KXt2YXIgZT1wYXJzZUludChvLmdldEl0ZW0odSh0KSsidGltZSIpLDEwKXx8MDtyZXR1cm4hKChuZXcgRGF0ZSkuZ2V0VGltZSgpLWU+aSh0LnNldHRpbmdzLmF1dG9zYXZlX3JldGVudGlvbiwiMjBtIikpfHwoYyh0LCExKSwhMSl9LGM9ZnVuY3Rpb24odCxlKXt2YXIgcj11KHQpO28ucmVtb3ZlSXRlbShyKyJkcmFmdCIpLG8ucmVtb3ZlSXRlbShyKyJ0aW1lIiksITEhPT1lJiZ0LmZpcmUoIlJlbW92ZURyYWZ0Iil9LG09ZnVuY3Rpb24odCl7dmFyIGU9dSh0KTshcyh0KSYmdC5pc0RpcnR5KCkmJihvLnNldEl0ZW0oZSsiZHJhZnQiLHQuZ2V0Q29udGVudCh7Zm9ybWF0OiJyYXciLG5vX2V2ZW50czohMH0pKSxvLnNldEl0ZW0oZSsidGltZSIsKG5ldyBEYXRlKS5nZXRUaW1lKCkudG9TdHJpbmcoKSksdC5maXJlKCJTdG9yZURyYWZ0IikpfSxsPWZ1bmN0aW9uKHQpe3ZhciBlPXUodCk7Zih0KSYmKHQuc2V0Q29udGVudChvLmdldEl0ZW0oZSsiZHJhZnQiKSx7Zm9ybWF0OiJyYXcifSksdC5maXJlKCJSZXN0b3JlRHJhZnQiKSl9LHY9ZnVuY3Rpb24odCl7dmFyIGU9aSh0LnNldHRpbmdzLmF1dG9zYXZlX2ludGVydmFsLCIzMHMiKTtuLnNldEludGVydmFsKGZ1bmN0aW9uKCl7dC5yZW1vdmVkfHxtKHQpfSxlKX0sZD1mdW5jdGlvbih0KXt0LnVuZG9NYW5hZ2VyLnRyYW5zYWN0KGZ1bmN0aW9uKCl7bCh0KSxjKHQpfSksdC5mb2N1cygpfSxnPXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLkVkaXRvck1hbmFnZXIiKSx5PWZ1bmN0aW9uKHIpe3JldHVybiBmdW5jdGlvbih0KXt0LnNldERpc2FibGVkKCFmKHIpKTt2YXIgZT1mdW5jdGlvbigpe3JldHVybiB0LnNldERpc2FibGVkKCFmKHIpKX07cmV0dXJuIHIub24oIlN0b3JlRHJhZnQgUmVzdG9yZURyYWZ0IFJlbW92ZURyYWZ0IixlKSxmdW5jdGlvbigpe3JldHVybiByLm9mZigiU3RvcmVEcmFmdCBSZXN0b3JlRHJhZnQgUmVtb3ZlRHJhZnQiLGUpfX19OyFmdW5jdGlvbiBlKCl7dC5hZGQoImF1dG9zYXZlIixmdW5jdGlvbih0KXt2YXIgZSxyO3JldHVybiB0LmVkaXRvck1hbmFnZXIub24oIkJlZm9yZVVubG9hZCIsZnVuY3Rpb24odCl7dmFyIGU7YS5lYWNoKGcuZ2V0KCksZnVuY3Rpb24odCl7dC5wbHVnaW5zLmF1dG9zYXZlJiZ0LnBsdWdpbnMuYXV0b3NhdmUuc3RvcmVEcmFmdCgpLCFlJiZ0LmlzRGlydHkoKSYmdC5nZXRQYXJhbSgiYXV0b3NhdmVfYXNrX2JlZm9yZV91bmxvYWQiLCEwKSYmKGU9dC50cmFuc2xhdGUoIllvdSBoYXZlIHVuc2F2ZWQgY2hhbmdlcyBhcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gbmF2aWdhdGUgYXdheT8iKSl9KSxlJiYodC5wcmV2ZW50RGVmYXVsdCgpLHQucmV0dXJuVmFsdWU9ZSl9KSx2KGU9dCksZS51aS5yZWdpc3RyeS5hZGRCdXR0b24oInJlc3RvcmVkcmFmdCIse3Rvb2x0aXA6IlJlc3RvcmUgbGFzdCBkcmFmdCIsaWNvbjoicmVzdG9yZS1kcmFmdCIsb25BY3Rpb246ZnVuY3Rpb24oKXtkKGUpfSxvblNldHVwOnkoZSl9KSxlLnVpLnJlZ2lzdHJ5LmFkZE1lbnVJdGVtKCJyZXN0b3JlZHJhZnQiLHt0ZXh0OiJSZXN0b3JlIGxhc3QgZHJhZnQiLGljb246InJlc3RvcmUtZHJhZnQiLG9uQWN0aW9uOmZ1bmN0aW9uKCl7ZChlKX0sb25TZXR1cDp5KGUpfSksdC5vbigiaW5pdCIsZnVuY3Rpb24oKXt0LmdldFBhcmFtKCJhdXRvc2F2ZV9yZXN0b3JlX3doZW5fZW1wdHkiLCExKSYmdC5kb20uaXNFbXB0eSh0LmdldEJvZHkoKSkmJmwodCl9KSxyPXQse2hhc0RyYWZ0OmZ1bmN0aW9uKCl7cmV0dXJuIGYocil9LHN0b3JlRHJhZnQ6ZnVuY3Rpb24oKXtyZXR1cm4gbShyKX0scmVzdG9yZURyYWZ0OmZ1bmN0aW9uKCl7cmV0dXJuIGwocil9LHJlbW92ZURyYWZ0OmZ1bmN0aW9uKHQpe3JldHVybiBjKHIsdCl9LGlzRW1wdHk6ZnVuY3Rpb24odCl7cmV0dXJuIHMocix0KX19fSl9KCl9KHdpbmRvdyk7]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/bbcode/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/bbcode/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIG89dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuUGx1Z2luTWFuYWdlciIpLGU9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UudXRpbC5Ub29scyIpLHQ9ZnVuY3Rpb24odCl7dD1lLnRyaW0odCk7dmFyIG89ZnVuY3Rpb24obyxlKXt0PXQucmVwbGFjZShvLGUpfTtyZXR1cm4gbygvXG4vZ2ksIjxiciAvPiIpLG8oL1xbYlxdL2dpLCI8c3Ryb25nPiIpLG8oL1xbXC9iXF0vZ2ksIjwvc3Ryb25nPiIpLG8oL1xbaVxdL2dpLCI8ZW0+IiksbygvXFtcL2lcXS9naSwiPC9lbT4iKSxvKC9cW3VcXS9naSwiPHU+IiksbygvXFtcL3VcXS9naSwiPC91PiIpLG8oL1xbdXJsPShbXlxdXSspXF0oLio/KVxbXC91cmxcXS9naSwnPGEgaHJlZj0iJDEiPiQyPC9hPicpLG8oL1xbdXJsXF0oLio/KVxbXC91cmxcXS9naSwnPGEgaHJlZj0iJDEiPiQxPC9hPicpLG8oL1xbaW1nXF0oLio/KVxbXC9pbWdcXS9naSwnPGltZyBzcmM9IiQxIiAvPicpLG8oL1xbY29sb3I9KC4qPylcXSguKj8pXFtcL2NvbG9yXF0vZ2ksJzxmb250IGNvbG9yPSIkMSI+JDI8L2ZvbnQ+JyksbygvXFtjb2RlXF0oLio/KVxbXC9jb2RlXF0vZ2ksJzxzcGFuIGNsYXNzPSJjb2RlU3R5bGUiPiQxPC9zcGFuPiZuYnNwOycpLG8oL1xbcXVvdGUuKj9cXSguKj8pXFtcL3F1b3RlXF0vZ2ksJzxzcGFuIGNsYXNzPSJxdW90ZVN0eWxlIj4kMTwvc3Bhbj4mbmJzcDsnKSx0fTshZnVuY3Rpb24gaSgpe28uYWRkKCJiYmNvZGUiLGZ1bmN0aW9uKG8pe28ub24oIkJlZm9yZVNldENvbnRlbnQiLGZ1bmN0aW9uKG8pe28uY29udGVudD10KG8uY29udGVudCl9KSxvLm9uKCJQb3N0UHJvY2VzcyIsZnVuY3Rpb24obyl7by5zZXQmJihvLmNvbnRlbnQ9dChvLmNvbnRlbnQpKSxvLmdldCYmKG8uY29udGVudD1mdW5jdGlvbih0KXt0PWUudHJpbSh0KTt2YXIgbz1mdW5jdGlvbihvLGUpe3Q9dC5yZXBsYWNlKG8sZSl9O3JldHVybiBvKC88YS4qP2hyZWY9XCIoLio/KVwiLio/PiguKj8pPFwvYT4vZ2ksIlt1cmw9JDFdJDJbL3VybF0iKSxvKC88Zm9udC4qP2NvbG9yPVwiKC4qPylcIi4qP2NsYXNzPVwiY29kZVN0eWxlXCIuKj8+KC4qPyk8XC9mb250Pi9naSwiW2NvZGVdW2NvbG9yPSQxXSQyWy9jb2xvcl1bL2NvZGVdIiksbygvPGZvbnQuKj9jb2xvcj1cIiguKj8pXCIuKj9jbGFzcz1cInF1b3RlU3R5bGVcIi4qPz4oLio/KTxcL2ZvbnQ+L2dpLCJbcXVvdGVdW2NvbG9yPSQxXSQyWy9jb2xvcl1bL3F1b3RlXSIpLG8oLzxmb250Lio/Y2xhc3M9XCJjb2RlU3R5bGVcIi4qP2NvbG9yPVwiKC4qPylcIi4qPz4oLio/KTxcL2ZvbnQ+L2dpLCJbY29kZV1bY29sb3I9JDFdJDJbL2NvbG9yXVsvY29kZV0iKSxvKC88Zm9udC4qP2NsYXNzPVwicXVvdGVTdHlsZVwiLio/Y29sb3I9XCIoLio/KVwiLio/PiguKj8pPFwvZm9udD4vZ2ksIltxdW90ZV1bY29sb3I9JDFdJDJbL2NvbG9yXVsvcXVvdGVdIiksbygvPHNwYW4gc3R5bGU9XCJjb2xvcjogPyguKj8pO1wiPiguKj8pPFwvc3Bhbj4vZ2ksIltjb2xvcj0kMV0kMlsvY29sb3JdIiksbygvPGZvbnQuKj9jb2xvcj1cIiguKj8pXCIuKj8+KC4qPyk8XC9mb250Pi9naSwiW2NvbG9yPSQxXSQyWy9jb2xvcl0iKSxvKC88c3BhbiBzdHlsZT1cImZvbnQtc2l6ZTooLio/KTtcIj4oLio/KTxcL3NwYW4+L2dpLCJbc2l6ZT0kMV0kMlsvc2l6ZV0iKSxvKC88Zm9udD4oLio/KTxcL2ZvbnQ+L2dpLCIkMSIpLG8oLzxpbWcuKj9zcmM9XCIoLio/KVwiLio/XC8+L2dpLCJbaW1nXSQxWy9pbWddIiksbygvPHNwYW4gY2xhc3M9XCJjb2RlU3R5bGVcIj4oLio/KTxcL3NwYW4+L2dpLCJbY29kZV0kMVsvY29kZV0iKSxvKC88c3BhbiBjbGFzcz1cInF1b3RlU3R5bGVcIj4oLio/KTxcL3NwYW4+L2dpLCJbcXVvdGVdJDFbL3F1b3RlXSIpLG8oLzxzdHJvbmcgY2xhc3M9XCJjb2RlU3R5bGVcIj4oLio/KTxcL3N0cm9uZz4vZ2ksIltjb2RlXVtiXSQxWy9iXVsvY29kZV0iKSxvKC88c3Ryb25nIGNsYXNzPVwicXVvdGVTdHlsZVwiPiguKj8pPFwvc3Ryb25nPi9naSwiW3F1b3RlXVtiXSQxWy9iXVsvcXVvdGVdIiksbygvPGVtIGNsYXNzPVwiY29kZVN0eWxlXCI+KC4qPyk8XC9lbT4vZ2ksIltjb2RlXVtpXSQxWy9pXVsvY29kZV0iKSxvKC88ZW0gY2xhc3M9XCJxdW90ZVN0eWxlXCI+KC4qPyk8XC9lbT4vZ2ksIltxdW90ZV1baV0kMVsvaV1bL3F1b3RlXSIpLG8oLzx1IGNsYXNzPVwiY29kZVN0eWxlXCI+KC4qPyk8XC91Pi9naSwiW2NvZGVdW3VdJDFbL3VdWy9jb2RlXSIpLG8oLzx1IGNsYXNzPVwicXVvdGVTdHlsZVwiPiguKj8pPFwvdT4vZ2ksIltxdW90ZV1bdV0kMVsvdV1bL3F1b3RlXSIpLG8oLzxcLyhzdHJvbmd8Yik+L2dpLCJbL2JdIiksbygvPChzdHJvbmd8Yik+L2dpLCJbYl0iKSxvKC88XC8oZW18aSk+L2dpLCJbL2ldIiksbygvPChlbXxpKT4vZ2ksIltpXSIpLG8oLzxcL3U+L2dpLCJbL3VdIiksbygvPHNwYW4gc3R5bGU9XCJ0ZXh0LWRlY29yYXRpb246ID91bmRlcmxpbmU7XCI+KC4qPyk8XC9zcGFuPi9naSwiW3VdJDFbL3VdIiksbygvPHU+L2dpLCJbdV0iKSxvKC88YmxvY2txdW90ZVtePl0qPi9naSwiW3F1b3RlXSIpLG8oLzxcL2Jsb2NrcXVvdGU+L2dpLCJbL3F1b3RlXSIpLG8oLzxiciBcLz4vZ2ksIlxuIiksbygvPGJyXC8+L2dpLCJcbiIpLG8oLzxicj4vZ2ksIlxuIiksbygvPHA+L2dpLCIiKSxvKC88XC9wPi9naSwiXG4iKSxvKC8mbmJzcDt8XHUwMGEwL2dpLCIgIiksbygvJnF1b3Q7L2dpLCciJyksbygvJmx0Oy9naSwiPCIpLG8oLyZndDsvZ2ksIj4iKSxvKC8mYW1wOy9naSwiJiIpLHR9KG8uY29udGVudCkpfSl9KX0oKX0oKTs=]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/charmap/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/charmap/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24ocyl7InVzZSBzdHJpY3QiO3ZhciBlLG4scix0LGE9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuUGx1Z2luTWFuYWdlciIpLGw9ZnVuY3Rpb24oZSxuKXt2YXIgcix0PShyPW4sZS5maXJlKCJpbnNlcnRDdXN0b21DaGFyIix7Y2hyOnJ9KS5jaHIpO2UuZXhlY0NvbW1hbmQoIm1jZUluc2VydENvbnRlbnQiLCExLHQpfSxpPXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLnV0aWwuVG9vbHMiKSxvPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlfX0sYz1vKCExKSx1PW8oITApLGc9ZnVuY3Rpb24oKXtyZXR1cm4gbX0sbT0oZT1mdW5jdGlvbihlKXtyZXR1cm4gZS5pc05vbmUoKX0se2ZvbGQ6ZnVuY3Rpb24oZSxuKXtyZXR1cm4gZSgpfSxpczpjLGlzU29tZTpjLGlzTm9uZTp1LGdldE9yOnI9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGdldE9yVGh1bms6bj1mdW5jdGlvbihlKXtyZXR1cm4gZSgpfSxnZXRPckRpZTpmdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoZXx8ImVycm9yOiBnZXRPckRpZSBjYWxsZWQgb24gbm9uZS4iKX0sZ2V0T3JOdWxsOm8obnVsbCksZ2V0T3JVbmRlZmluZWQ6byh1bmRlZmluZWQpLG9yOnIsb3JUaHVuazpuLG1hcDpnLGVhY2g6ZnVuY3Rpb24oKXt9LGJpbmQ6ZyxleGlzdHM6Yyxmb3JhbGw6dSxmaWx0ZXI6ZyxlcXVhbHM6ZSxlcXVhbHNfOmUsdG9BcnJheTpmdW5jdGlvbigpe3JldHVybltdfSx0b1N0cmluZzpvKCJub25lKCkiKX0pLGY9ZnVuY3Rpb24ocil7dmFyIGU9byhyKSxuPWZ1bmN0aW9uKCl7cmV0dXJuIGF9LHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUocil9LGE9e2ZvbGQ6ZnVuY3Rpb24oZSxuKXtyZXR1cm4gbihyKX0saXM6ZnVuY3Rpb24oZSl7cmV0dXJuIHI9PT1lfSxpc1NvbWU6dSxpc05vbmU6YyxnZXRPcjplLGdldE9yVGh1bms6ZSxnZXRPckRpZTplLGdldE9yTnVsbDplLGdldE9yVW5kZWZpbmVkOmUsb3I6bixvclRodW5rOm4sbWFwOmZ1bmN0aW9uKGUpe3JldHVybiBmKGUocikpfSxlYWNoOmZ1bmN0aW9uKGUpe2Uocil9LGJpbmQ6dCxleGlzdHM6dCxmb3JhbGw6dCxmaWx0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGUocik/YTptfSx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuW3JdfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiJzb21lKCIrcisiKSJ9LGVxdWFsczpmdW5jdGlvbihlKXtyZXR1cm4gZS5pcyhyKX0sZXF1YWxzXzpmdW5jdGlvbihlLG4pe3JldHVybiBlLmZvbGQoYyxmdW5jdGlvbihlKXtyZXR1cm4gbihyLGUpfSl9fTtyZXR1cm4gYX0saD17c29tZTpmLG5vbmU6Zyxmcm9tOmZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT09ZXx8ZT09PXVuZGVmaW5lZD9tOmYoZSl9fSxkPSh0PSJhcnJheSIsZnVuY3Rpb24oZSl7cmV0dXJuIHI9dHlwZW9mKG49ZSksKG51bGw9PT1uPyJudWxsIjoib2JqZWN0Ij09ciYmKEFycmF5LnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKG4pfHxuLmNvbnN0cnVjdG9yJiYiQXJyYXkiPT09bi5jb25zdHJ1Y3Rvci5uYW1lKT8iYXJyYXkiOiJvYmplY3QiPT1yJiYoU3RyaW5nLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKG4pfHxuLmNvbnN0cnVjdG9yJiYiU3RyaW5nIj09PW4uY29uc3RydWN0b3IubmFtZSk/InN0cmluZyI6cik9PT10O3ZhciBuLHJ9KSxwPUFycmF5LnByb3RvdHlwZS5wdXNoLHk9ZnVuY3Rpb24oZSxuKXtmb3IodmFyIHI9ZS5sZW5ndGgsdD1uZXcgQXJyYXkociksYT0wO2E8cjthKyspe3ZhciBpPWVbYV07dFthXT1uKGksYSl9cmV0dXJuIHR9LHY9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gZnVuY3Rpb24oZSxuLHIpe2Zvcih2YXIgdD0wLGE9ZS5sZW5ndGg7dDxhO3QrKyl7dmFyIGk9ZVt0XTtpZihuKGksdCkpcmV0dXJuIGguc29tZShpKTtpZihyKGksdCkpYnJlYWt9cmV0dXJuIGgubm9uZSgpfShlLG4sYyl9LHc9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gZnVuY3Rpb24oZSl7Zm9yKHZhciBuPVtdLHI9MCx0PWUubGVuZ3RoO3I8dDsrK3Ipe2lmKCFkKGVbcl0pKXRocm93IG5ldyBFcnJvcigiQXJyLmZsYXR0ZW4gaXRlbSAiK3IrIiB3YXMgbm90IGFuIGFycmF5LCBpbnB1dDogIitlKTtwLmFwcGx5KG4sZVtyXSl9cmV0dXJuIG59KHkoZSxuKSl9LGI9aS5pc0FycmF5LGs9IlVzZXIgRGVmaW5lZCIsQz1mdW5jdGlvbihlKXtyZXR1cm4gYihlKT9bXS5jb25jYXQoKG49ZSxpLmdyZXAobixmdW5jdGlvbihlKXtyZXR1cm4gYihlKSYmMj09PWUubGVuZ3RofSkpKToiZnVuY3Rpb24iPT10eXBlb2YgZT9lKCk6W107dmFyIG59LHg9ZnVuY3Rpb24oZSl7dmFyIG49ZnVuY3Rpb24oZSxuKXt2YXIgcj1lLnNldHRpbmdzLmNoYXJtYXA7ciYmKG49W3tuYW1lOmssY2hhcmFjdGVyczpDKHIpfV0pO3ZhciB0PWUuc2V0dGluZ3MuY2hhcm1hcF9hcHBlbmQ7aWYodCl7dmFyIGE9aS5ncmVwKG4sZnVuY3Rpb24oZSl7cmV0dXJuIGUubmFtZT09PWt9KTtyZXR1cm4gYS5sZW5ndGg/KGFbMF0uY2hhcmFjdGVycz1bXS5jb25jYXQoYVswXS5jaGFyYWN0ZXJzKS5jb25jYXQoQyh0KSksbik6W10uY29uY2F0KG4pLmNvbmNhdCh7bmFtZTprLGNoYXJhY3RlcnM6Qyh0KX0pfXJldHVybiBufShlLFt7bmFtZToiQ3VycmVuY3kiLGNoYXJhY3RlcnM6W1szNiwiZG9sbGFyIHNpZ24iXSxbMTYyLCJjZW50IHNpZ24iXSxbODM2NCwiZXVybyBzaWduIl0sWzE2MywicG91bmQgc2lnbiJdLFsxNjUsInllbiBzaWduIl0sWzE2NCwiY3VycmVuY3kgc2lnbiJdLFs4MzUyLCJldXJvLWN1cnJlbmN5IHNpZ24iXSxbODM1MywiY29sb24gc2lnbiJdLFs4MzU0LCJjcnV6ZWlybyBzaWduIl0sWzgzNTUsImZyZW5jaCBmcmFuYyBzaWduIl0sWzgzNTYsImxpcmEgc2lnbiJdLFs4MzU3LCJtaWxsIHNpZ24iXSxbODM1OCwibmFpcmEgc2lnbiJdLFs4MzU5LCJwZXNldGEgc2lnbiJdLFs4MzYwLCJydXBlZSBzaWduIl0sWzgzNjEsIndvbiBzaWduIl0sWzgzNjIsIm5ldyBzaGVxZWwgc2lnbiJdLFs4MzYzLCJkb25nIHNpZ24iXSxbODM2NSwia2lwIHNpZ24iXSxbODM2NiwidHVncmlrIHNpZ24iXSxbODM2NywiZHJhY2htYSBzaWduIl0sWzgzNjgsImdlcm1hbiBwZW5ueSBzeW1ib2wiXSxbODM2OSwicGVzbyBzaWduIl0sWzgzNzAsImd1YXJhbmkgc2lnbiJdLFs4MzcxLCJhdXN0cmFsIHNpZ24iXSxbODM3MiwiaHJ5dm5pYSBzaWduIl0sWzgzNzMsImNlZGkgc2lnbiJdLFs4Mzc0LCJsaXZyZSB0b3Vybm9pcyBzaWduIl0sWzgzNzUsInNwZXNtaWxvIHNpZ24iXSxbODM3NiwidGVuZ2Ugc2lnbiJdLFs4Mzc3LCJpbmRpYW4gcnVwZWUgc2lnbiJdLFs4Mzc4LCJ0dXJraXNoIGxpcmEgc2lnbiJdLFs4Mzc5LCJub3JkaWMgbWFyayBzaWduIl0sWzgzODAsIm1hbmF0IHNpZ24iXSxbODM4MSwicnVibGUgc2lnbiJdLFsyMDg3MCwieWVuIGNoYXJhY3RlciJdLFsyMDgwMywieXVhbiBjaGFyYWN0ZXIiXSxbMjIyOTEsInl1YW4gY2hhcmFjdGVyLCBpbiBob25nIGtvbmcgYW5kIHRhaXdhbiJdLFsyMjI3OCwieWVuL3l1YW4gY2hhcmFjdGVyIHZhcmlhbnQgb25lIl1dfSx7bmFtZToiVGV4dCIsY2hhcmFjdGVyczpbWzE2OSwiY29weXJpZ2h0IHNpZ24iXSxbMTc0LCJyZWdpc3RlcmVkIHNpZ24iXSxbODQ4MiwidHJhZGUgbWFyayBzaWduIl0sWzgyNDAsInBlciBtaWxsZSBzaWduIl0sWzE4MSwibWljcm8gc2lnbiJdLFsxODMsIm1pZGRsZSBkb3QiXSxbODIyNiwiYnVsbGV0Il0sWzgyMzAsInRocmVlIGRvdCBsZWFkZXIiXSxbODI0MiwibWludXRlcyAvIGZlZXQiXSxbODI0Mywic2Vjb25kcyAvIGluY2hlcyJdLFsxNjcsInNlY3Rpb24gc2lnbiJdLFsxODIsInBhcmFncmFwaCBzaWduIl0sWzIyMywic2hhcnAgcyAvIGVzcy16ZWQiXV19LHtuYW1lOiJRdW90YXRpb25zIixjaGFyYWN0ZXJzOltbODI0OSwic2luZ2xlIGxlZnQtcG9pbnRpbmcgYW5nbGUgcXVvdGF0aW9uIG1hcmsiXSxbODI1MCwic2luZ2xlIHJpZ2h0LXBvaW50aW5nIGFuZ2xlIHF1b3RhdGlvbiBtYXJrIl0sWzE3MSwibGVmdCBwb2ludGluZyBndWlsbGVtZXQiXSxbMTg3LCJyaWdodCBwb2ludGluZyBndWlsbGVtZXQiXSxbODIxNiwibGVmdCBzaW5nbGUgcXVvdGF0aW9uIG1hcmsiXSxbODIxNywicmlnaHQgc2luZ2xlIHF1b3RhdGlvbiBtYXJrIl0sWzgyMjAsImxlZnQgZG91YmxlIHF1b3RhdGlvbiBtYXJrIl0sWzgyMjEsInJpZ2h0IGRvdWJsZSBxdW90YXRpb24gbWFyayJdLFs4MjE4LCJzaW5nbGUgbG93LTkgcXVvdGF0aW9uIG1hcmsiXSxbODIyMiwiZG91YmxlIGxvdy05IHF1b3RhdGlvbiBtYXJrIl0sWzYwLCJsZXNzLXRoYW4gc2lnbiJdLFs2MiwiZ3JlYXRlci10aGFuIHNpZ24iXSxbODgwNCwibGVzcy10aGFuIG9yIGVxdWFsIHRvIl0sWzg4MDUsImdyZWF0ZXItdGhhbiBvciBlcXVhbCB0byJdLFs4MjExLCJlbiBkYXNoIl0sWzgyMTIsImVtIGRhc2giXSxbMTc1LCJtYWNyb24iXSxbODI1NCwib3ZlcmxpbmUiXSxbMTY0LCJjdXJyZW5jeSBzaWduIl0sWzE2NiwiYnJva2VuIGJhciJdLFsxNjgsImRpYWVyZXNpcyJdLFsxNjEsImludmVydGVkIGV4Y2xhbWF0aW9uIG1hcmsiXSxbMTkxLCJ0dXJuZWQgcXVlc3Rpb24gbWFyayJdLFs3MTAsImNpcmN1bWZsZXggYWNjZW50Il0sWzczMiwic21hbGwgdGlsZGUiXSxbMTc2LCJkZWdyZWUgc2lnbiJdLFs4NzIyLCJtaW51cyBzaWduIl0sWzE3NywicGx1cy1taW51cyBzaWduIl0sWzI0NywiZGl2aXNpb24gc2lnbiJdLFs4MjYwLCJmcmFjdGlvbiBzbGFzaCJdLFsyMTUsIm11bHRpcGxpY2F0aW9uIHNpZ24iXSxbMTg1LCJzdXBlcnNjcmlwdCBvbmUiXSxbMTc4LCJzdXBlcnNjcmlwdCB0d28iXSxbMTc5LCJzdXBlcnNjcmlwdCB0aHJlZSJdLFsxODgsImZyYWN0aW9uIG9uZSBxdWFydGVyIl0sWzE4OSwiZnJhY3Rpb24gb25lIGhhbGYiXSxbMTkwLCJmcmFjdGlvbiB0aHJlZSBxdWFydGVycyJdXX0se25hbWU6Ik1hdGhlbWF0aWNhbCIsY2hhcmFjdGVyczpbWzQwMiwiZnVuY3Rpb24gLyBmbG9yaW4iXSxbODc0NywiaW50ZWdyYWwiXSxbODcyMSwibi1hcnkgc3VtYXRpb24iXSxbODczNCwiaW5maW5pdHkiXSxbODczMCwic3F1YXJlIHJvb3QiXSxbODc2NCwic2ltaWxhciB0byJdLFs4NzczLCJhcHByb3hpbWF0ZWx5IGVxdWFsIHRvIl0sWzg3NzYsImFsbW9zdCBlcXVhbCB0byJdLFs4ODAwLCJub3QgZXF1YWwgdG8iXSxbODgwMSwiaWRlbnRpY2FsIHRvIl0sWzg3MTIsImVsZW1lbnQgb2YiXSxbODcxMywibm90IGFuIGVsZW1lbnQgb2YiXSxbODcxNSwiY29udGFpbnMgYXMgbWVtYmVyIl0sWzg3MTksIm4tYXJ5IHByb2R1Y3QiXSxbODc0MywibG9naWNhbCBhbmQiXSxbODc0NCwibG9naWNhbCBvciJdLFsxNzIsIm5vdCBzaWduIl0sWzg3NDUsImludGVyc2VjdGlvbiJdLFs4NzQ2LCJ1bmlvbiJdLFs4NzA2LCJwYXJ0aWFsIGRpZmZlcmVudGlhbCJdLFs4NzA0LCJmb3IgYWxsIl0sWzg3MDcsInRoZXJlIGV4aXN0cyJdLFs4NzA5LCJkaWFtZXRlciJdLFs4NzExLCJiYWNrd2FyZCBkaWZmZXJlbmNlIl0sWzg3MjcsImFzdGVyaXNrIG9wZXJhdG9yIl0sWzg3MzMsInByb3BvcnRpb25hbCB0byJdLFs4NzM2LCJhbmdsZSJdXX0se25hbWU6IkV4dGVuZGVkIExhdGluIixjaGFyYWN0ZXJzOltbMTkyLCJBIC0gZ3JhdmUiXSxbMTkzLCJBIC0gYWN1dGUiXSxbMTk0LCJBIC0gY2lyY3VtZmxleCJdLFsxOTUsIkEgLSB0aWxkZSJdLFsxOTYsIkEgLSBkaWFlcmVzaXMiXSxbMTk3LCJBIC0gcmluZyBhYm92ZSJdLFsyNTYsIkEgLSBtYWNyb24iXSxbMTk4LCJsaWdhdHVyZSBBRSJdLFsxOTksIkMgLSBjZWRpbGxhIl0sWzIwMCwiRSAtIGdyYXZlIl0sWzIwMSwiRSAtIGFjdXRlIl0sWzIwMiwiRSAtIGNpcmN1bWZsZXgiXSxbMjAzLCJFIC0gZGlhZXJlc2lzIl0sWzI3NCwiRSAtIG1hY3JvbiJdLFsyMDQsIkkgLSBncmF2ZSJdLFsyMDUsIkkgLSBhY3V0ZSJdLFsyMDYsIkkgLSBjaXJjdW1mbGV4Il0sWzIwNywiSSAtIGRpYWVyZXNpcyJdLFsyOTgsIkkgLSBtYWNyb24iXSxbMjA4LCJFVEgiXSxbMjA5LCJOIC0gdGlsZGUiXSxbMjEwLCJPIC0gZ3JhdmUiXSxbMjExLCJPIC0gYWN1dGUiXSxbMjEyLCJPIC0gY2lyY3VtZmxleCJdLFsyMTMsIk8gLSB0aWxkZSJdLFsyMTQsIk8gLSBkaWFlcmVzaXMiXSxbMjE2LCJPIC0gc2xhc2giXSxbMzMyLCJPIC0gbWFjcm9uIl0sWzMzOCwibGlnYXR1cmUgT0UiXSxbMzUyLCJTIC0gY2Fyb24iXSxbMjE3LCJVIC0gZ3JhdmUiXSxbMjE4LCJVIC0gYWN1dGUiXSxbMjE5LCJVIC0gY2lyY3VtZmxleCJdLFsyMjAsIlUgLSBkaWFlcmVzaXMiXSxbMzYyLCJVIC0gbWFjcm9uIl0sWzIyMSwiWSAtIGFjdXRlIl0sWzM3NiwiWSAtIGRpYWVyZXNpcyJdLFs1NjIsIlkgLSBtYWNyb24iXSxbMjIyLCJUSE9STiJdLFsyMjQsImEgLSBncmF2ZSJdLFsyMjUsImEgLSBhY3V0ZSJdLFsyMjYsImEgLSBjaXJjdW1mbGV4Il0sWzIyNywiYSAtIHRpbGRlIl0sWzIyOCwiYSAtIGRpYWVyZXNpcyJdLFsyMjksImEgLSByaW5nIGFib3ZlIl0sWzI1NywiYSAtIG1hY3JvbiJdLFsyMzAsImxpZ2F0dXJlIGFlIl0sWzIzMSwiYyAtIGNlZGlsbGEiXSxbMjMyLCJlIC0gZ3JhdmUiXSxbMjMzLCJlIC0gYWN1dGUiXSxbMjM0LCJlIC0gY2lyY3VtZmxleCJdLFsyMzUsImUgLSBkaWFlcmVzaXMiXSxbMjc1LCJlIC0gbWFjcm9uIl0sWzIzNiwiaSAtIGdyYXZlIl0sWzIzNywiaSAtIGFjdXRlIl0sWzIzOCwiaSAtIGNpcmN1bWZsZXgiXSxbMjM5LCJpIC0gZGlhZXJlc2lzIl0sWzI5OSwiaSAtIG1hY3JvbiJdLFsyNDAsImV0aCJdLFsyNDEsIm4gLSB0aWxkZSJdLFsyNDIsIm8gLSBncmF2ZSJdLFsyNDMsIm8gLSBhY3V0ZSJdLFsyNDQsIm8gLSBjaXJjdW1mbGV4Il0sWzI0NSwibyAtIHRpbGRlIl0sWzI0NiwibyAtIGRpYWVyZXNpcyJdLFsyNDgsIm8gc2xhc2giXSxbMzMzLCJvIG1hY3JvbiJdLFszMzksImxpZ2F0dXJlIG9lIl0sWzM1MywicyAtIGNhcm9uIl0sWzI0OSwidSAtIGdyYXZlIl0sWzI1MCwidSAtIGFjdXRlIl0sWzI1MSwidSAtIGNpcmN1bWZsZXgiXSxbMjUyLCJ1IC0gZGlhZXJlc2lzIl0sWzM2MywidSAtIG1hY3JvbiJdLFsyNTMsInkgLSBhY3V0ZSJdLFsyNTQsInRob3JuIl0sWzI1NSwieSAtIGRpYWVyZXNpcyJdLFs1NjMsInkgLSBtYWNyb24iXSxbOTEzLCJBbHBoYSJdLFs5MTQsIkJldGEiXSxbOTE1LCJHYW1tYSJdLFs5MTYsIkRlbHRhIl0sWzkxNywiRXBzaWxvbiJdLFs5MTgsIlpldGEiXSxbOTE5LCJFdGEiXSxbOTIwLCJUaGV0YSJdLFs5MjEsIklvdGEiXSxbOTIyLCJLYXBwYSJdLFs5MjMsIkxhbWJkYSJdLFs5MjQsIk11Il0sWzkyNSwiTnUiXSxbOTI2LCJYaSJdLFs5MjcsIk9taWNyb24iXSxbOTI4LCJQaSJdLFs5MjksIlJobyJdLFs5MzEsIlNpZ21hIl0sWzkzMiwiVGF1Il0sWzkzMywiVXBzaWxvbiJdLFs5MzQsIlBoaSJdLFs5MzUsIkNoaSJdLFs5MzYsIlBzaSJdLFs5MzcsIk9tZWdhIl0sWzk0NSwiYWxwaGEiXSxbOTQ2LCJiZXRhIl0sWzk0NywiZ2FtbWEiXSxbOTQ4LCJkZWx0YSJdLFs5NDksImVwc2lsb24iXSxbOTUwLCJ6ZXRhIl0sWzk1MSwiZXRhIl0sWzk1MiwidGhldGEiXSxbOTUzLCJpb3RhIl0sWzk1NCwia2FwcGEiXSxbOTU1LCJsYW1iZGEiXSxbOTU2LCJtdSJdLFs5NTcsIm51Il0sWzk1OCwieGkiXSxbOTU5LCJvbWljcm9uIl0sWzk2MCwicGkiXSxbOTYxLCJyaG8iXSxbOTYyLCJmaW5hbCBzaWdtYSJdLFs5NjMsInNpZ21hIl0sWzk2NCwidGF1Il0sWzk2NSwidXBzaWxvbiJdLFs5NjYsInBoaSJdLFs5NjcsImNoaSJdLFs5NjgsInBzaSJdLFs5NjksIm9tZWdhIl1dfSx7bmFtZToiU3ltYm9scyIsY2hhcmFjdGVyczpbWzg1MDEsImFsZWYgc3ltYm9sIl0sWzk4MiwicGkgc3ltYm9sIl0sWzg0NzYsInJlYWwgcGFydCBzeW1ib2wiXSxbOTc4LCJ1cHNpbG9uIC0gaG9vayBzeW1ib2wiXSxbODQ3MiwiV2VpZXJzdHJhc3MgcCJdLFs4NDY1LCJpbWFnaW5hcnkgcGFydCJdXX0se25hbWU6IkFycm93cyIsY2hhcmFjdGVyczpbWzg1OTIsImxlZnR3YXJkcyBhcnJvdyJdLFs4NTkzLCJ1cHdhcmRzIGFycm93Il0sWzg1OTQsInJpZ2h0d2FyZHMgYXJyb3ciXSxbODU5NSwiZG93bndhcmRzIGFycm93Il0sWzg1OTYsImxlZnQgcmlnaHQgYXJyb3ciXSxbODYyOSwiY2FycmlhZ2UgcmV0dXJuIl0sWzg2NTYsImxlZnR3YXJkcyBkb3VibGUgYXJyb3ciXSxbODY1NywidXB3YXJkcyBkb3VibGUgYXJyb3ciXSxbODY1OCwicmlnaHR3YXJkcyBkb3VibGUgYXJyb3ciXSxbODY1OSwiZG93bndhcmRzIGRvdWJsZSBhcnJvdyJdLFs4NjYwLCJsZWZ0IHJpZ2h0IGRvdWJsZSBhcnJvdyJdLFs4NzU2LCJ0aGVyZWZvcmUiXSxbODgzNCwic3Vic2V0IG9mIl0sWzg4MzUsInN1cGVyc2V0IG9mIl0sWzg4MzYsIm5vdCBhIHN1YnNldCBvZiJdLFs4ODM4LCJzdWJzZXQgb2Ygb3IgZXF1YWwgdG8iXSxbODgzOSwic3VwZXJzZXQgb2Ygb3IgZXF1YWwgdG8iXSxbODg1MywiY2lyY2xlZCBwbHVzIl0sWzg4NTUsImNpcmNsZWQgdGltZXMiXSxbODg2OSwicGVycGVuZGljdWxhciJdLFs4OTAxLCJkb3Qgb3BlcmF0b3IiXSxbODk2OCwibGVmdCBjZWlsaW5nIl0sWzg5NjksInJpZ2h0IGNlaWxpbmciXSxbODk3MCwibGVmdCBmbG9vciJdLFs4OTcxLCJyaWdodCBmbG9vciJdLFs5MDAxLCJsZWZ0LXBvaW50aW5nIGFuZ2xlIGJyYWNrZXQiXSxbOTAwMiwicmlnaHQtcG9pbnRpbmcgYW5nbGUgYnJhY2tldCJdLFs5Njc0LCJsb3plbmdlIl0sWzk4MjQsImJsYWNrIHNwYWRlIHN1aXQiXSxbOTgyNywiYmxhY2sgY2x1YiBzdWl0Il0sWzk4MjksImJsYWNrIGhlYXJ0IHN1aXQiXSxbOTgzMCwiYmxhY2sgZGlhbW9uZCBzdWl0Il0sWzgxOTQsImVuIHNwYWNlIl0sWzgxOTUsImVtIHNwYWNlIl0sWzgyMDEsInRoaW4gc3BhY2UiXSxbODIwNCwiemVybyB3aWR0aCBub24tam9pbmVyIl0sWzgyMDUsInplcm8gd2lkdGggam9pbmVyIl0sWzgyMDYsImxlZnQtdG8tcmlnaHQgbWFyayJdLFs4MjA3LCJyaWdodC10by1sZWZ0IG1hcmsiXV19XSk7cmV0dXJuIDE8bi5sZW5ndGg/W3tuYW1lOiJBbGwiLGNoYXJhY3RlcnM6dyhuLGZ1bmN0aW9uKGUpe3JldHVybiBlLmNoYXJhY3RlcnN9KX1dLmNvbmNhdChuKTpufSxBPWZ1bmN0aW9uKGUpe3ZhciBuPWU7cmV0dXJue2dldDpmdW5jdGlvbigpe3JldHVybiBufSxzZXQ6ZnVuY3Rpb24oZSl7bj1lfX19LE89U3RyaW5nLmZyb21Db2RlUG9pbnQscT1mdW5jdGlvbihlLG4pe3JldHVybi0xIT09ZS5pbmRleE9mKG4pfSxTPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLG49MDtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKWVbbl09YXJndW1lbnRzW25dO2lmKE8pcmV0dXJuIE8uYXBwbHkodm9pZCAwLGUpO2Zvcih2YXIgcj1bXSx0PSIiLGE9MCxpPWUubGVuZ3RoO2EhPT1pOysrYSl7dmFyIG89K2VbYV07aWYoIShvPDExMTQxMTEmJm8+Pj4wPT09bykpdGhyb3cgUmFuZ2VFcnJvcigiSW52YWxpZCBjb2RlIHBvaW50OiAiK28pOzE2MzgzPD0obzw9NjU1MzU/ci5wdXNoKG8pOihvLT02NTUzNixyLnB1c2goNTUyOTYrKG8+PjEwKSxvJTEwMjQrNTYzMjApKSkmJih0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsciksci5sZW5ndGg9MCl9cmV0dXJuIHQrU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLHIpfSxUPWZ1bmN0aW9uKGUsbil7dmFyIGE9W10saT1uLnRvTG93ZXJDYXNlKCk7cmV0dXJuIGZ1bmN0aW9uKGUsbil7Zm9yKHZhciByPTAsdD1lLmxlbmd0aDtyPHQ7cisrKXtuKGVbcl0scil9fShlLmNoYXJhY3RlcnMsZnVuY3Rpb24oZSl7dmFyIG4scix0O249ZVswXSxyPWVbMV0sdD1pLChxKFMobikudG9Mb3dlckNhc2UoKSx0KXx8cShyLnRvTG93ZXJDYXNlKCksdCl8fHEoci50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xzKy9nLCIiKSx0KSkmJmEucHVzaChlKX0pLHkoYSxmdW5jdGlvbihlKXtyZXR1cm57dGV4dDplWzFdLHZhbHVlOlMoZVswXSksaWNvbjpTKGVbMF0pfX0pfSxFPSJwYXR0ZXJuIixJPWZ1bmN0aW9uKHIsYSl7dmFyIHQsaSxvLG49ZnVuY3Rpb24oKXtyZXR1cm5be2xhYmVsOiJTZWFyY2giLHR5cGU6ImlucHV0IixuYW1lOkV9LHt0eXBlOiJjb2xsZWN0aW9uIixuYW1lOiJyZXN1bHRzIn1dfSxjPTE9PT1hLmxlbmd0aD9BKGspOkEoIkFsbCIpLHU9KHQ9ZnVuY3Rpb24oZSl7dmFyIHIsdCxuPWUuZ2V0RGF0YSgpLnBhdHRlcm47cj1lLHQ9bix2KGEsZnVuY3Rpb24oZSl7cmV0dXJuIGUubmFtZT09PWMuZ2V0KCl9KS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBuPVQoZSx0KTtyLnNldERhdGEoe3Jlc3VsdHM6bn0pfSl9LGk9NDAsbz1udWxsLHtjYW5jZWw6ZnVuY3Rpb24oKXtudWxsIT09byYmKHMuY2xlYXJUaW1lb3V0KG8pLG89bnVsbCl9LHRocm90dGxlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLG49MDtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKWVbbl09YXJndW1lbnRzW25dO251bGwhPT1vJiZzLmNsZWFyVGltZW91dChvKSxvPXMuc2V0VGltZW91dChmdW5jdGlvbigpe3QuYXBwbHkobnVsbCxlKSxvPW51bGx9LGkpfX0pLGU9e3RpdGxlOiJTcGVjaWFsIENoYXJhY3RlciIsc2l6ZToibm9ybWFsIixib2R5OjE9PT1hLmxlbmd0aD97dHlwZToicGFuZWwiLGl0ZW1zOm4oKX06e3R5cGU6InRhYnBhbmVsIix0YWJzOnkoYSxmdW5jdGlvbihlKXtyZXR1cm57dGl0bGU6ZS5uYW1lLG5hbWU6ZS5uYW1lLGl0ZW1zOm4oKX19KX0sYnV0dG9uczpbe3R5cGU6ImNhbmNlbCIsbmFtZToiY2xvc2UiLHRleHQ6IkNsb3NlIixwcmltYXJ5OiEwfV0saW5pdGlhbERhdGE6e3BhdHRlcm46IiIscmVzdWx0czpUKGFbMF0sIiIpfSxvbkFjdGlvbjpmdW5jdGlvbihlLG4peyJyZXN1bHRzIj09PW4ubmFtZSYmKGwocixuLnZhbHVlKSxlLmNsb3NlKCkpfSxvblRhYkNoYW5nZTpmdW5jdGlvbihlLG4pe2Muc2V0KG4ubmV3VGFiTmFtZSksdS50aHJvdHRsZShlKX0sb25DaGFuZ2U6ZnVuY3Rpb24oZSxuKXtuLm5hbWU9PT1FJiZ1LnRocm90dGxlKGUpfX07ci53aW5kb3dNYW5hZ2VyLm9wZW4oZSkuZm9jdXMoRSl9LE49dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UudXRpbC5Qcm9taXNlIik7IWZ1bmN0aW9uIFUoKXthLmFkZCgiY2hhcm1hcCIsZnVuY3Rpb24oZSl7dmFyIG4scix0LGEsaSxvLGM9eChlKTtyZXR1cm4gcj1jLChuPWUpLmFkZENvbW1hbmQoIm1jZVNob3dDaGFybWFwIixmdW5jdGlvbigpe0kobixyKX0pLCh0PWUpLnVpLnJlZ2lzdHJ5LmFkZEJ1dHRvbigiY2hhcm1hcCIse2ljb246Imluc2VydC1jaGFyYWN0ZXIiLHRvb2x0aXA6IlNwZWNpYWwgY2hhcmFjdGVyIixvbkFjdGlvbjpmdW5jdGlvbigpe3JldHVybiB0LmV4ZWNDb21tYW5kKCJtY2VTaG93Q2hhcm1hcCIpfX0pLHQudWkucmVnaXN0cnkuYWRkTWVudUl0ZW0oImNoYXJtYXAiLHtpY29uOiJpbnNlcnQtY2hhcmFjdGVyIix0ZXh0OiJTcGVjaWFsIGNoYXJhY3Rlci4uLiIsb25BY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gdC5leGVjQ29tbWFuZCgibWNlU2hvd0NoYXJtYXAiKX19KSxhPWUsaT1jWzBdLGEudWkucmVnaXN0cnkuYWRkQXV0b2NvbXBsZXRlcigiY2hhcm1hcCIse2NoOiI6Iixjb2x1bW5zOiJhdXRvIixtaW5DaGFyczoyLGZldGNoOmZ1bmN0aW9uKHIsZSl7cmV0dXJuIG5ldyBOKGZ1bmN0aW9uKGUsbil7ZShUKGkscikpfSl9LG9uQWN0aW9uOmZ1bmN0aW9uKGUsbixyKXthLnNlbGVjdGlvbi5zZXRSbmcobiksYS5pbnNlcnRDb250ZW50KHIpLGUuaGlkZSgpfX0pLG89ZSx7Z2V0Q2hhck1hcDpmdW5jdGlvbigpe3JldHVybiB4KG8pfSxpbnNlcnRDaGFyOmZ1bmN0aW9uKGUpe2wobyxlKX19fSl9KCl9KHdpbmRvdyk7]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/code/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/code/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIGU9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuUGx1Z2luTWFuYWdlciIpLG89ZnVuY3Rpb24obyl7dmFyIGU9by5nZXRDb250ZW50KHtzb3VyY2VfdmlldzohMH0pO28ud2luZG93TWFuYWdlci5vcGVuKHt0aXRsZToiU291cmNlIENvZGUiLHNpemU6ImxhcmdlIixib2R5Ont0eXBlOiJwYW5lbCIsaXRlbXM6W3t0eXBlOiJ0ZXh0YXJlYSIsbmFtZToiY29kZSJ9XX0sYnV0dG9uczpbe3R5cGU6ImNhbmNlbCIsbmFtZToiY2FuY2VsIix0ZXh0OiJDYW5jZWwifSx7dHlwZToic3VibWl0IixuYW1lOiJzYXZlIix0ZXh0OiJTYXZlIixwcmltYXJ5OiEwfV0saW5pdGlhbERhdGE6e2NvZGU6ZX0sb25TdWJtaXQ6ZnVuY3Rpb24oZSl7dmFyIHQsbjt0PW8sbj1lLmdldERhdGEoKS5jb2RlLHQuZm9jdXMoKSx0LnVuZG9NYW5hZ2VyLnRyYW5zYWN0KGZ1bmN0aW9uKCl7dC5zZXRDb250ZW50KG4pfSksdC5zZWxlY3Rpb24uc2V0Q3Vyc29yTG9jYXRpb24oKSx0Lm5vZGVDaGFuZ2VkKCksZS5jbG9zZSgpfX0pfTshZnVuY3Rpb24gdCgpe2UuYWRkKCJjb2RlIixmdW5jdGlvbihlKXt2YXIgdCxuO3JldHVybih0PWUpLmFkZENvbW1hbmQoIm1jZUNvZGVFZGl0b3IiLGZ1bmN0aW9uKCl7byh0KX0pLChuPWUpLnVpLnJlZ2lzdHJ5LmFkZEJ1dHRvbigiY29kZSIse2ljb246InNvdXJjZWNvZGUiLHRvb2x0aXA6IlNvdXJjZSBjb2RlIixvbkFjdGlvbjpmdW5jdGlvbigpe3JldHVybiBvKG4pfX0pLG4udWkucmVnaXN0cnkuYWRkTWVudUl0ZW0oImNvZGUiLHtpY29uOiJzb3VyY2Vjb2RlIix0ZXh0OiJTb3VyY2UgY29kZSIsb25BY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gbyhuKX19KSx7fX0pfSgpfSgpOw==]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/codesample/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/codesample/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO3ZhciBuLHQsYSxyPXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLlBsdWdpbk1hbmFnZXIiKSxpPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlfX0scz1pKCExKSxvPWkoITApLGw9ZnVuY3Rpb24oKXtyZXR1cm4gdX0sdT0obj1mdW5jdGlvbihlKXtyZXR1cm4gZS5pc05vbmUoKX0se2ZvbGQ6ZnVuY3Rpb24oZSxuKXtyZXR1cm4gZSgpfSxpczpzLGlzU29tZTpzLGlzTm9uZTpvLGdldE9yOmE9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGdldE9yVGh1bms6dD1mdW5jdGlvbihlKXtyZXR1cm4gZSgpfSxnZXRPckRpZTpmdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoZXx8ImVycm9yOiBnZXRPckRpZSBjYWxsZWQgb24gbm9uZS4iKX0sZ2V0T3JOdWxsOmkobnVsbCksZ2V0T3JVbmRlZmluZWQ6aSh1bmRlZmluZWQpLG9yOmEsb3JUaHVuazp0LG1hcDpsLGVhY2g6ZnVuY3Rpb24oKXt9LGJpbmQ6bCxleGlzdHM6cyxmb3JhbGw6byxmaWx0ZXI6bCxlcXVhbHM6bixlcXVhbHNfOm4sdG9BcnJheTpmdW5jdGlvbigpe3JldHVybltdfSx0b1N0cmluZzppKCJub25lKCkiKX0pLGM9ZnVuY3Rpb24odCl7dmFyIGU9aSh0KSxuPWZ1bmN0aW9uKCl7cmV0dXJuIHJ9LGE9ZnVuY3Rpb24oZSl7cmV0dXJuIGUodCl9LHI9e2ZvbGQ6ZnVuY3Rpb24oZSxuKXtyZXR1cm4gbih0KX0saXM6ZnVuY3Rpb24oZSl7cmV0dXJuIHQ9PT1lfSxpc1NvbWU6byxpc05vbmU6cyxnZXRPcjplLGdldE9yVGh1bms6ZSxnZXRPckRpZTplLGdldE9yTnVsbDplLGdldE9yVW5kZWZpbmVkOmUsb3I6bixvclRodW5rOm4sbWFwOmZ1bmN0aW9uKGUpe3JldHVybiBjKGUodCkpfSxlYWNoOmZ1bmN0aW9uKGUpe2UodCl9LGJpbmQ6YSxleGlzdHM6YSxmb3JhbGw6YSxmaWx0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGUodCk/cjp1fSx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuW3RdfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiJzb21lKCIrdCsiKSJ9LGVxdWFsczpmdW5jdGlvbihlKXtyZXR1cm4gZS5pcyh0KX0sZXF1YWxzXzpmdW5jdGlvbihlLG4pe3JldHVybiBlLmZvbGQocyxmdW5jdGlvbihlKXtyZXR1cm4gbih0LGUpfSl9fTtyZXR1cm4gcn0sZD17c29tZTpjLG5vbmU6bCxmcm9tOmZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT09ZXx8ZT09PXVuZGVmaW5lZD91OmMoZSl9fSxwPXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLmRvbS5ET01VdGlscyIpO2Z1bmN0aW9uIGcoZSl7cmV0dXJuIGUmJiJQUkUiPT09ZS5ub2RlTmFtZSYmLTEhPT1lLmNsYXNzTmFtZS5pbmRleE9mKCJsYW5ndWFnZS0iKX1mdW5jdGlvbiBtKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3JldHVybiB0KG4pfX12YXIgZj0idW5kZWZpbmVkIiE9dHlwZW9mIGUud2luZG93P2Uud2luZG93OkZ1bmN0aW9uKCJyZXR1cm4gdGhpczsiKSgpLGg9e30sYj17ZXhwb3J0czpofSx5PXt9OyFmdW5jdGlvbihuLHQsYSxkKXt2YXIgZT13aW5kb3cuUHJpc207d2luZG93LlByaXNtPXttYW51YWw6ITB9LGZ1bmN0aW9uKGUpe2lmKCJvYmplY3QiPT10eXBlb2YgdCYmdm9pZCAwIT09YSlhLmV4cG9ydHM9ZSgpO2Vsc2UgaWYoImZ1bmN0aW9uIj09dHlwZW9mIG4mJm4uYW1kKW4oW10sZSk7ZWxzZXsoInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OnZvaWQgMCE9PXk/eToidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjp0aGlzKS5FcGhveENvbnRhY3RXcmFwcGVyPWUoKX19KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIGMoaSxzLG8pe2Z1bmN0aW9uIGwobixlKXtpZighc1tuXSl7aWYoIWlbbl0pe3ZhciB0PSJmdW5jdGlvbiI9PXR5cGVvZiBkJiZkO2lmKCFlJiZ0KXJldHVybiB0KG4sITApO2lmKHUpcmV0dXJuIHUobiwhMCk7dmFyIGE9bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrbisiJyIpO3Rocm93IGEuY29kZT0iTU9EVUxFX05PVF9GT1VORCIsYX12YXIgcj1zW25dPXtleHBvcnRzOnt9fTtpW25dWzBdLmNhbGwoci5leHBvcnRzLGZ1bmN0aW9uKGUpe3JldHVybiBsKGlbbl1bMV1bZV18fGUpfSxyLHIuZXhwb3J0cyxjLGkscyxvKX1yZXR1cm4gc1tuXS5leHBvcnRzfWZvcih2YXIgdT0iZnVuY3Rpb24iPT10eXBlb2YgZCYmZCxlPTA7ZTxvLmxlbmd0aDtlKyspbChvW2VdKTtyZXR1cm4gbH0oezE6W2Z1bmN0aW9uKGUsbix0KXtQcmlzbS5sYW5ndWFnZXMuYz1QcmlzbS5sYW5ndWFnZXMuZXh0ZW5kKCJjbGlrZSIseyJjbGFzcy1uYW1lIjp7cGF0dGVybjovKFxiKD86ZW51bXxzdHJ1Y3QpXHMrKVx3Ky8sbG9va2JlaGluZDohMH0sa2V5d29yZDovXGIoPzpfQWxpZ25hc3xfQWxpZ25vZnxfQXRvbWljfF9Cb29sfF9Db21wbGV4fF9HZW5lcmljfF9JbWFnaW5hcnl8X05vcmV0dXJufF9TdGF0aWNfYXNzZXJ0fF9UaHJlYWRfbG9jYWx8YXNtfHR5cGVvZnxpbmxpbmV8YXV0b3xicmVha3xjYXNlfGNoYXJ8Y29uc3R8Y29udGludWV8ZGVmYXVsdHxkb3xkb3VibGV8ZWxzZXxlbnVtfGV4dGVybnxmbG9hdHxmb3J8Z290b3xpZnxpbnR8bG9uZ3xyZWdpc3RlcnxyZXR1cm58c2hvcnR8c2lnbmVkfHNpemVvZnxzdGF0aWN8c3RydWN0fHN3aXRjaHx0eXBlZGVmfHVuaW9ufHVuc2lnbmVkfHZvaWR8dm9sYXRpbGV8d2hpbGUpXGIvLG9wZXJhdG9yOi8+Pj0/fDw8PT98LT58KFstKyZ8Ol0pXDF8Wz86fl18Wy0rKi8lJnxeIT08Pl09Py8sbnVtYmVyOi8oPzpcYjB4KD86W1xkYS1mXStcLj9bXGRhLWZdKnxcLltcZGEtZl0rKSg/OnBbKy1dP1xkKyk/fCg/OlxiXGQrXC4/XGQqfFxCXC5cZCspKD86ZVsrLV0/XGQrKT8pW2Z1bF0qL2l9KSxQcmlzbS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKCJjIiwic3RyaW5nIix7bWFjcm86e3BhdHRlcm46LyheXHMqKSNccypbYS16XSsoPzpbXlxyXG5cXF18XFwoPzpcclxufFtcc1xTXSkpKi9pbSxsb29rYmVoaW5kOiEwLGFsaWFzOiJwcm9wZXJ0eSIsaW5zaWRlOntzdHJpbmc6e3BhdHRlcm46LygjXHMqaW5jbHVkZVxzKikoPzo8Lis/PnwoInwnKSg/OlxcPy4pKz9cMikvLGxvb2tiZWhpbmQ6ITB9LGRpcmVjdGl2ZTp7cGF0dGVybjovKCNccyopXGIoPzpkZWZpbmV8ZGVmaW5lZHxlbGlmfGVsc2V8ZW5kaWZ8ZXJyb3J8aWZkZWZ8aWZuZGVmfGlmfGltcG9ydHxpbmNsdWRlfGxpbmV8cHJhZ21hfHVuZGVmfHVzaW5nKVxiLyxsb29rYmVoaW5kOiEwLGFsaWFzOiJrZXl3b3JkIn19fSxjb25zdGFudDovXGIoPzpfX0ZJTEVfX3xfX0xJTkVfX3xfX0RBVEVfX3xfX1RJTUVfX3xfX1RJTUVTVEFNUF9ffF9fZnVuY19ffEVPRnxOVUxMfFNFRUtfQ1VSfFNFRUtfRU5EfFNFRUtfU0VUfHN0ZGlufHN0ZG91dHxzdGRlcnIpXGIvfSksZGVsZXRlIFByaXNtLmxhbmd1YWdlcy5jWyJib29sZWFuIl19LHt9XSwyOltmdW5jdGlvbihlLG4sdCl7UHJpc20ubGFuZ3VhZ2VzLmNsaWtlPXtjb21tZW50Olt7cGF0dGVybjovKF58W15cXF0pXC9cKltcc1xTXSo/KD86XCpcL3wkKS8sbG9va2JlaGluZDohMH0se3BhdHRlcm46LyhefFteXFw6XSlcL1wvLiovLGxvb2tiZWhpbmQ6ITAsZ3JlZWR5OiEwfV0sc3RyaW5nOntwYXR0ZXJuOi8oWyInXSkoPzpcXCg/OlxyXG58W1xzXFNdKXwoPyFcMSlbXlxcXHJcbl0pKlwxLyxncmVlZHk6ITB9LCJjbGFzcy1uYW1lIjp7cGF0dGVybjovKFxiKD86Y2xhc3N8aW50ZXJmYWNlfGV4dGVuZHN8aW1wbGVtZW50c3x0cmFpdHxpbnN0YW5jZW9mfG5ldylccyt8XGJjYXRjaFxzK1woKVtcdy5cXF0rL2ksbG9va2JlaGluZDohMCxpbnNpZGU6e3B1bmN0dWF0aW9uOi9bLlxcXS99fSxrZXl3b3JkOi9cYig/OmlmfGVsc2V8d2hpbGV8ZG98Zm9yfHJldHVybnxpbnxpbnN0YW5jZW9mfGZ1bmN0aW9ufG5ld3x0cnl8dGhyb3d8Y2F0Y2h8ZmluYWxseXxudWxsfGJyZWFrfGNvbnRpbnVlKVxiLywiYm9vbGVhbiI6L1xiKD86dHJ1ZXxmYWxzZSlcYi8sImZ1bmN0aW9uIjovXHcrKD89XCgpLyxudW1iZXI6L1xiMHhbXGRhLWZdK1xifCg/OlxiXGQrXC4/XGQqfFxCXC5cZCspKD86ZVsrLV0/XGQrKT8vaSxvcGVyYXRvcjovWzw+XT0/fFshPV09Pz0/fC0tP3xcK1wrP3wmJj98XHxcfD98Wz8qL35eJV0vLHB1bmN0dWF0aW9uOi9be31bXF07KCksLjpdL319LHt9XSwzOltmdW5jdGlvbihlLHQsbil7KGZ1bmN0aW9uKGUpe3ZhciBuPWZ1bmN0aW9uKHUpe3ZhciBjPS9cYmxhbmcoPzp1YWdlKT8tKFtcdy1dKylcYi9pLG49MCxDPXttYW51YWw6dS5QcmlzbSYmdS5QcmlzbS5tYW51YWwsZGlzYWJsZVdvcmtlck1lc3NhZ2VIYW5kbGVyOnUuUHJpc20mJnUuUHJpc20uZGlzYWJsZVdvcmtlck1lc3NhZ2VIYW5kbGVyLHV0aWw6e2VuY29kZTpmdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIE8/bmV3IE8oZS50eXBlLEMudXRpbC5lbmNvZGUoZS5jb250ZW50KSxlLmFsaWFzKTpBcnJheS5pc0FycmF5KGUpP2UubWFwKEMudXRpbC5lbmNvZGUpOmUucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoL1x1MDBhMC9nLCIgIil9LHR5cGU6ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKX0sb2JqSWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19pZHx8T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9faWQiLHt2YWx1ZTorK259KSxlLl9faWR9LGNsb25lOmZ1bmN0aW9uIHMoZSx0KXt2YXIgYSxuLHI9Qy51dGlsLnR5cGUoZSk7c3dpdGNoKHQ9dHx8e30scil7Y2FzZSJPYmplY3QiOmlmKG49Qy51dGlsLm9iaklkKGUpLHRbbl0pcmV0dXJuIHRbbl07Zm9yKHZhciBpIGluIGE9e30sdFtuXT1hLGUpZS5oYXNPd25Qcm9wZXJ0eShpKSYmKGFbaV09cyhlW2ldLHQpKTtyZXR1cm4gYTtjYXNlIkFycmF5IjpyZXR1cm4obj1DLnV0aWwub2JqSWQoZSksdFtuXSk/dFtuXTooYT1bXSx0W25dPWEsZS5mb3JFYWNoKGZ1bmN0aW9uKGUsbil7YVtuXT1zKGUsdCl9KSxhKTtkZWZhdWx0OnJldHVybiBlfX0sZ2V0TGFuZ3VhZ2U6ZnVuY3Rpb24oZSl7Zm9yKDtlJiYhYy50ZXN0KGUuY2xhc3NOYW1lKTspZT1lLnBhcmVudEVsZW1lbnQ7cmV0dXJuIGU/KGUuY2xhc3NOYW1lLm1hdGNoKGMpfHxbLCJub25lIl0pWzFdLnRvTG93ZXJDYXNlKCk6Im5vbmUifSxjdXJyZW50U2NyaXB0OmZ1bmN0aW9uKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBkb2N1bWVudClyZXR1cm4gbnVsbDtpZigiY3VycmVudFNjcmlwdCJpbiBkb2N1bWVudClyZXR1cm4gZG9jdW1lbnQuY3VycmVudFNjcmlwdDt0cnl7dGhyb3cgbmV3IEVycm9yfWNhdGNoKGEpe3ZhciBlPSgvYXQgW14oXHJcbl0qXCgoLiopOi4rOi4rXCkkL2kuZXhlYyhhLnN0YWNrKXx8W10pWzFdO2lmKGUpe3ZhciBuPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKTtmb3IodmFyIHQgaW4gbilpZihuW3RdLnNyYz09ZSlyZXR1cm4gblt0XX1yZXR1cm4gbnVsbH19fSxsYW5ndWFnZXM6e2V4dGVuZDpmdW5jdGlvbihlLG4pe3ZhciB0PUMudXRpbC5jbG9uZShDLmxhbmd1YWdlc1tlXSk7Zm9yKHZhciBhIGluIG4pdFthXT1uW2FdO3JldHVybiB0fSxpbnNlcnRCZWZvcmU6ZnVuY3Rpb24odCxlLG4sYSl7dmFyIHI9KGE9YXx8Qy5sYW5ndWFnZXMpW3RdLGk9e307Zm9yKHZhciBzIGluIHIpaWYoci5oYXNPd25Qcm9wZXJ0eShzKSl7aWYocz09ZSlmb3IodmFyIG8gaW4gbiluLmhhc093blByb3BlcnR5KG8pJiYoaVtvXT1uW29dKTtuLmhhc093blByb3BlcnR5KHMpfHwoaVtzXT1yW3NdKX12YXIgbD1hW3RdO3JldHVybiBhW3RdPWksQy5sYW5ndWFnZXMuREZTKEMubGFuZ3VhZ2VzLGZ1bmN0aW9uKGUsbil7bj09PWwmJmUhPXQmJih0aGlzW2VdPWkpfSksaX0sREZTOmZ1bmN0aW9uIGwoZSxuLHQsYSl7YT1hfHx7fTt2YXIgcj1DLnV0aWwub2JqSWQ7Zm9yKHZhciBpIGluIGUpaWYoZS5oYXNPd25Qcm9wZXJ0eShpKSl7bi5jYWxsKGUsaSxlW2ldLHR8fGkpO3ZhciBzPWVbaV0sbz1DLnV0aWwudHlwZShzKTsiT2JqZWN0IiE9PW98fGFbcihzKV0/IkFycmF5IiE9PW98fGFbcihzKV18fChhW3IocyldPSEwLGwocyxuLGksYSkpOihhW3IocyldPSEwLGwocyxuLG51bGwsYSkpfX19LHBsdWdpbnM6e30saGlnaGxpZ2h0QWxsOmZ1bmN0aW9uKGUsbil7Qy5oaWdobGlnaHRBbGxVbmRlcihkb2N1bWVudCxlLG4pfSxoaWdobGlnaHRBbGxVbmRlcjpmdW5jdGlvbihlLG4sdCl7dmFyIGE9e2NhbGxiYWNrOnQsY29udGFpbmVyOmUsc2VsZWN0b3I6J2NvZGVbY2xhc3MqPSJsYW5ndWFnZS0iXSwgW2NsYXNzKj0ibGFuZ3VhZ2UtIl0gY29kZSwgY29kZVtjbGFzcyo9ImxhbmctIl0sIFtjbGFzcyo9ImxhbmctIl0gY29kZSd9O0MuaG9va3MucnVuKCJiZWZvcmUtaGlnaGxpZ2h0YWxsIixhKSxhLmVsZW1lbnRzPUFycmF5LnByb3RvdHlwZS5zbGljZS5hcHBseShhLmNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKGEuc2VsZWN0b3IpKSxDLmhvb2tzLnJ1bigiYmVmb3JlLWFsbC1lbGVtZW50cy1oaWdobGlnaHQiLGEpO2Zvcih2YXIgcixpPTA7cj1hLmVsZW1lbnRzW2krK107KUMuaGlnaGxpZ2h0RWxlbWVudChyLCEwPT09bixhLmNhbGxiYWNrKX0saGlnaGxpZ2h0RWxlbWVudDpmdW5jdGlvbihlLG4sdCl7dmFyIGE9Qy51dGlsLmdldExhbmd1YWdlKGUpLHI9Qy5sYW5ndWFnZXNbYV07ZS5jbGFzc05hbWU9ZS5jbGFzc05hbWUucmVwbGFjZShjLCIiKS5yZXBsYWNlKC9ccysvZywiICIpKyIgbGFuZ3VhZ2UtIithO3ZhciBpPWUucGFyZW50Tm9kZTtpJiYicHJlIj09PWkubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmKGkuY2xhc3NOYW1lPWkuY2xhc3NOYW1lLnJlcGxhY2UoYywiIikucmVwbGFjZSgvXHMrL2csIiAiKSsiIGxhbmd1YWdlLSIrYSk7dmFyIHM9e2VsZW1lbnQ6ZSxsYW5ndWFnZTphLGdyYW1tYXI6cixjb2RlOmUudGV4dENvbnRlbnR9O2Z1bmN0aW9uIG8oZSl7cy5oaWdobGlnaHRlZENvZGU9ZSxDLmhvb2tzLnJ1bigiYmVmb3JlLWluc2VydCIscykscy5lbGVtZW50LmlubmVySFRNTD1zLmhpZ2hsaWdodGVkQ29kZSxDLmhvb2tzLnJ1bigiYWZ0ZXItaGlnaGxpZ2h0IixzKSxDLmhvb2tzLnJ1bigiY29tcGxldGUiLHMpLHQmJnQuY2FsbChzLmVsZW1lbnQpfWlmKEMuaG9va3MucnVuKCJiZWZvcmUtc2FuaXR5LWNoZWNrIixzKSwhcy5jb2RlKXJldHVybiBDLmhvb2tzLnJ1bigiY29tcGxldGUiLHMpLHZvaWQodCYmdC5jYWxsKHMuZWxlbWVudCkpO2lmKEMuaG9va3MucnVuKCJiZWZvcmUtaGlnaGxpZ2h0IixzKSxzLmdyYW1tYXIpaWYobiYmdS5Xb3JrZXIpe3ZhciBsPW5ldyBXb3JrZXIoQy5maWxlbmFtZSk7bC5vbm1lc3NhZ2U9ZnVuY3Rpb24oZSl7byhlLmRhdGEpfSxsLnBvc3RNZXNzYWdlKEpTT04uc3RyaW5naWZ5KHtsYW5ndWFnZTpzLmxhbmd1YWdlLGNvZGU6cy5jb2RlLGltbWVkaWF0ZUNsb3NlOiEwfSkpfWVsc2UgbyhDLmhpZ2hsaWdodChzLmNvZGUscy5ncmFtbWFyLHMubGFuZ3VhZ2UpKTtlbHNlIG8oQy51dGlsLmVuY29kZShzLmNvZGUpKX0saGlnaGxpZ2h0OmZ1bmN0aW9uKGUsbix0KXt2YXIgYT17Y29kZTplLGdyYW1tYXI6bixsYW5ndWFnZTp0fTtyZXR1cm4gQy5ob29rcy5ydW4oImJlZm9yZS10b2tlbml6ZSIsYSksYS50b2tlbnM9Qy50b2tlbml6ZShhLmNvZGUsYS5ncmFtbWFyKSxDLmhvb2tzLnJ1bigiYWZ0ZXItdG9rZW5pemUiLGEpLE8uc3RyaW5naWZ5KEMudXRpbC5lbmNvZGUoYS50b2tlbnMpLGEubGFuZ3VhZ2UpfSxtYXRjaEdyYW1tYXI6ZnVuY3Rpb24oZSxuLHQsYSxyLGkscyl7Zm9yKHZhciBvIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShvKSYmdFtvXSl7dmFyIGw9dFtvXTtsPUFycmF5LmlzQXJyYXkobCk/bDpbbF07Zm9yKHZhciB1PTA7dTxsLmxlbmd0aDsrK3Upe2lmKHMmJnM9PW8rIiwiK3UpcmV0dXJuO3ZhciBjPWxbdV0sZD1jLmluc2lkZSxwPSEhYy5sb29rYmVoaW5kLGc9ISFjLmdyZWVkeSxtPTAsZj1jLmFsaWFzO2lmKGcmJiFjLnBhdHRlcm4uZ2xvYmFsKXt2YXIgaD1jLnBhdHRlcm4udG9TdHJpbmcoKS5tYXRjaCgvW2ltc3V5XSokLylbMF07Yy5wYXR0ZXJuPVJlZ0V4cChjLnBhdHRlcm4uc291cmNlLGgrImciKX1jPWMucGF0dGVybnx8Yztmb3IodmFyIGI9YSx5PXI7YjxuLmxlbmd0aDt5Kz1uW2JdLmxlbmd0aCwrK2Ipe3ZhciB3PW5bYl07aWYobi5sZW5ndGg+ZS5sZW5ndGgpcmV0dXJuO2lmKCEodyBpbnN0YW5jZW9mIE8pKXtpZihnJiZiIT1uLmxlbmd0aC0xKXtpZihjLmxhc3RJbmRleD15LCEoUD1jLmV4ZWMoZSkpKWJyZWFrO2Zvcih2YXIgdj1QLmluZGV4KyhwJiZQWzFdP1BbMV0ubGVuZ3RoOjApLGs9UC5pbmRleCtQWzBdLmxlbmd0aCx4PWIsXz15LEY9bi5sZW5ndGg7eDxGJiYoXzxrfHwhblt4XS50eXBlJiYhblt4LTFdLmdyZWVkeSk7Kyt4KShfKz1uW3hdLmxlbmd0aCk8PXYmJigrK2IseT1fKTtpZihuW2JdaW5zdGFuY2VvZiBPKWNvbnRpbnVlO0E9eC1iLHc9ZS5zbGljZSh5LF8pLFAuaW5kZXgtPXl9ZWxzZXtjLmxhc3RJbmRleD0wO3ZhciBQPWMuZXhlYyh3KSxBPTF9aWYoUCl7cCYmKG09UFsxXT9QWzFdLmxlbmd0aDowKTtrPSh2PVAuaW5kZXgrbSkrKFA9UFswXS5zbGljZShtKSkubGVuZ3RoO3ZhciBTPXcuc2xpY2UoMCx2KSxqPXcuc2xpY2UoayksJD1bYixBXTtTJiYoKytiLHkrPVMubGVuZ3RoLCQucHVzaChTKSk7dmFyIEU9bmV3IE8obyxkP0MudG9rZW5pemUoUCxkKTpQLGYsUCxnKTtpZigkLnB1c2goRSksaiYmJC5wdXNoKGopLEFycmF5LnByb3RvdHlwZS5zcGxpY2UuYXBwbHkobiwkKSwxIT1BJiZDLm1hdGNoR3JhbW1hcihlLG4sdCxiLHksITAsbysiLCIrdSksaSlicmVha31lbHNlIGlmKGkpYnJlYWt9fX19fSx0b2tlbml6ZTpmdW5jdGlvbihlLG4pe3ZhciB0PVtlXSxhPW4ucmVzdDtpZihhKXtmb3IodmFyIHIgaW4gYSluW3JdPWFbcl07ZGVsZXRlIG4ucmVzdH1yZXR1cm4gQy5tYXRjaEdyYW1tYXIoZSx0LG4sMCwwLCExKSx0fSxob29rczp7YWxsOnt9LGFkZDpmdW5jdGlvbihlLG4pe3ZhciB0PUMuaG9va3MuYWxsO3RbZV09dFtlXXx8W10sdFtlXS5wdXNoKG4pfSxydW46ZnVuY3Rpb24oZSxuKXt2YXIgdD1DLmhvb2tzLmFsbFtlXTtpZih0JiZ0Lmxlbmd0aClmb3IodmFyIGEscj0wO2E9dFtyKytdOylhKG4pfX0sVG9rZW46T307ZnVuY3Rpb24gTyhlLG4sdCxhLHIpe3RoaXMudHlwZT1lLHRoaXMuY29udGVudD1uLHRoaXMuYWxpYXM9dCx0aGlzLmxlbmd0aD0wfChhfHwiIikubGVuZ3RoLHRoaXMuZ3JlZWR5PSEhcn1pZih1LlByaXNtPUMsTy5zdHJpbmdpZnk9ZnVuY3Rpb24oZSxuKXtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIGU7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIE8uc3RyaW5naWZ5KGUsbil9KS5qb2luKCIiKTt2YXIgdD17dHlwZTplLnR5cGUsY29udGVudDpPLnN0cmluZ2lmeShlLmNvbnRlbnQsbiksdGFnOiJzcGFuIixjbGFzc2VzOlsidG9rZW4iLGUudHlwZV0sYXR0cmlidXRlczp7fSxsYW5ndWFnZTpufTtpZihlLmFsaWFzKXt2YXIgYT1BcnJheS5pc0FycmF5KGUuYWxpYXMpP2UuYWxpYXM6W2UuYWxpYXNdO0FycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KHQuY2xhc3NlcyxhKX1DLmhvb2tzLnJ1bigid3JhcCIsdCk7dmFyIHI9T2JqZWN0LmtleXModC5hdHRyaWJ1dGVzKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUrJz0iJysodC5hdHRyaWJ1dGVzW2VdfHwiIikucmVwbGFjZSgvIi9nLCImcXVvdDsiKSsnIid9KS5qb2luKCIgIik7cmV0dXJuIjwiK3QudGFnKycgY2xhc3M9IicrdC5jbGFzc2VzLmpvaW4oIiAiKSsnIicrKHI/IiAiK3I6IiIpKyI+Iit0LmNvbnRlbnQrIjwvIit0LnRhZysiPiJ9LCF1LmRvY3VtZW50KXJldHVybiB1LmFkZEV2ZW50TGlzdGVuZXImJihDLmRpc2FibGVXb3JrZXJNZXNzYWdlSGFuZGxlcnx8dS5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixmdW5jdGlvbihlKXt2YXIgbj1KU09OLnBhcnNlKGUuZGF0YSksdD1uLmxhbmd1YWdlLGE9bi5jb2RlLHI9bi5pbW1lZGlhdGVDbG9zZTt1LnBvc3RNZXNzYWdlKEMuaGlnaGxpZ2h0KGEsQy5sYW5ndWFnZXNbdF0sdCkpLHImJnUuY2xvc2UoKX0sITEpKSxDO3ZhciBlPUMudXRpbC5jdXJyZW50U2NyaXB0KCk7aWYoZSYmKEMuZmlsZW5hbWU9ZS5zcmMsZS5oYXNBdHRyaWJ1dGUoImRhdGEtbWFudWFsIikmJihDLm1hbnVhbD0hMCkpLCFDLm1hbnVhbCl7dmFyIHQ9ZnVuY3Rpb24oKXtDLm1hbnVhbHx8Qy5oaWdobGlnaHRBbGwoKX0sYT1kb2N1bWVudC5yZWFkeVN0YXRlOyJsb2FkaW5nIj09PWF8fCJpbnRlcmFjdGl2ZSI9PT1hJiZlJiZlLmRlZmVyP2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLHQpOndpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU/d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSh0KTp3aW5kb3cuc2V0VGltZW91dCh0LDE2KX1yZXR1cm4gQ30oInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OiJ1bmRlZmluZWQiIT10eXBlb2YgV29ya2VyR2xvYmFsU2NvcGUmJnNlbGYgaW5zdGFuY2VvZiBXb3JrZXJHbG9iYWxTY29wZT9zZWxmOnt9KTt2b2lkIDAhPT10JiZ0LmV4cG9ydHMmJih0LmV4cG9ydHM9biksdm9pZCAwIT09ZSYmKGUuUHJpc209bil9KS5jYWxsKHRoaXMsdm9pZCAwIT09eT95OiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fSl9LHt9XSw0OltmdW5jdGlvbihlLG4sdCl7UHJpc20ubGFuZ3VhZ2VzLmNwcD1QcmlzbS5sYW5ndWFnZXMuZXh0ZW5kKCJjIix7ImNsYXNzLW5hbWUiOntwYXR0ZXJuOi8oXGIoPzpjbGFzc3xlbnVtfHN0cnVjdClccyspXHcrLyxsb29rYmVoaW5kOiEwfSxrZXl3b3JkOi9cYig/OmFsaWduYXN8YWxpZ25vZnxhc218YXV0b3xib29sfGJyZWFrfGNhc2V8Y2F0Y2h8Y2hhcnxjaGFyMTZfdHxjaGFyMzJfdHxjbGFzc3xjb21wbHxjb25zdHxjb25zdGV4cHJ8Y29uc3RfY2FzdHxjb250aW51ZXxkZWNsdHlwZXxkZWZhdWx0fGRlbGV0ZXxkb3xkb3VibGV8ZHluYW1pY19jYXN0fGVsc2V8ZW51bXxleHBsaWNpdHxleHBvcnR8ZXh0ZXJufGZsb2F0fGZvcnxmcmllbmR8Z290b3xpZnxpbmxpbmV8aW50fGludDhfdHxpbnQxNl90fGludDMyX3R8aW50NjRfdHx1aW50OF90fHVpbnQxNl90fHVpbnQzMl90fHVpbnQ2NF90fGxvbmd8bXV0YWJsZXxuYW1lc3BhY2V8bmV3fG5vZXhjZXB0fG51bGxwdHJ8b3BlcmF0b3J8cHJpdmF0ZXxwcm90ZWN0ZWR8cHVibGljfHJlZ2lzdGVyfHJlaW50ZXJwcmV0X2Nhc3R8cmV0dXJufHNob3J0fHNpZ25lZHxzaXplb2Z8c3RhdGljfHN0YXRpY19hc3NlcnR8c3RhdGljX2Nhc3R8c3RydWN0fHN3aXRjaHx0ZW1wbGF0ZXx0aGlzfHRocmVhZF9sb2NhbHx0aHJvd3x0cnl8dHlwZWRlZnx0eXBlaWR8dHlwZW5hbWV8dW5pb258dW5zaWduZWR8dXNpbmd8dmlydHVhbHx2b2lkfHZvbGF0aWxlfHdjaGFyX3R8d2hpbGUpXGIvLG51bWJlcjp7cGF0dGVybjovKD86XGIwYlswMSddK3xcYjB4KD86W1xkYS1mJ10rXC4/W1xkYS1mJ10qfFwuW1xkYS1mJ10rKSg/OnBbKy1dP1tcZCddKyk/fCg/OlxiW1xkJ10rXC4/W1xkJ10qfFxCXC5bXGQnXSspKD86ZVsrLV0/W1xkJ10rKT8pW2Z1bF0qL2ksZ3JlZWR5OiEwfSxvcGVyYXRvcjovPj49P3w8PD0/fC0+fChbLSsmfDpdKVwxfFs/On5dfFstKyovJSZ8XiE9PD5dPT98XGIoPzphbmR8YW5kX2VxfGJpdGFuZHxiaXRvcnxub3R8bm90X2VxfG9yfG9yX2VxfHhvcnx4b3JfZXEpXGIvLCJib29sZWFuIjovXGIoPzp0cnVlfGZhbHNlKVxiL30pLFByaXNtLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoImNwcCIsInN0cmluZyIseyJyYXctc3RyaW5nIjp7cGF0dGVybjovUiIoW14oKVxcIF17MCwxNn0pXChbXHNcU10qP1wpXDEiLyxhbGlhczoic3RyaW5nIixncmVlZHk6ITB9fSl9LHt9XSw1OltmdW5jdGlvbihlLG4sdCl7UHJpc20ubGFuZ3VhZ2VzLmNzaGFycD1QcmlzbS5sYW5ndWFnZXMuZXh0ZW5kKCJjbGlrZSIse2tleXdvcmQ6L1xiKD86YWJzdHJhY3R8YWRkfGFsaWFzfGFzfGFzY2VuZGluZ3xhc3luY3xhd2FpdHxiYXNlfGJvb2x8YnJlYWt8Ynl0ZXxjYXNlfGNhdGNofGNoYXJ8Y2hlY2tlZHxjbGFzc3xjb25zdHxjb250aW51ZXxkZWNpbWFsfGRlZmF1bHR8ZGVsZWdhdGV8ZGVzY2VuZGluZ3xkb3xkb3VibGV8ZHluYW1pY3xlbHNlfGVudW18ZXZlbnR8ZXhwbGljaXR8ZXh0ZXJufGZhbHNlfGZpbmFsbHl8Zml4ZWR8ZmxvYXR8Zm9yfGZvcmVhY2h8ZnJvbXxnZXR8Z2xvYmFsfGdvdG98Z3JvdXB8aWZ8aW1wbGljaXR8aW58aW50fGludGVyZmFjZXxpbnRlcm5hbHxpbnRvfGlzfGpvaW58bGV0fGxvY2t8bG9uZ3xuYW1lc3BhY2V8bmV3fG51bGx8b2JqZWN0fG9wZXJhdG9yfG9yZGVyYnl8b3V0fG92ZXJyaWRlfHBhcmFtc3xwYXJ0aWFsfHByaXZhdGV8cHJvdGVjdGVkfHB1YmxpY3xyZWFkb25seXxyZWZ8cmVtb3ZlfHJldHVybnxzYnl0ZXxzZWFsZWR8c2VsZWN0fHNldHxzaG9ydHxzaXplb2Z8c3RhY2thbGxvY3xzdGF0aWN8c3RyaW5nfHN0cnVjdHxzd2l0Y2h8dGhpc3x0aHJvd3x0cnVlfHRyeXx0eXBlb2Z8dWludHx1bG9uZ3x1bmNoZWNrZWR8dW5zYWZlfHVzaG9ydHx1c2luZ3x2YWx1ZXx2YXJ8dmlydHVhbHx2b2lkfHZvbGF0aWxlfHdoZXJlfHdoaWxlfHlpZWxkKVxiLyxzdHJpbmc6W3twYXR0ZXJuOi9AKCJ8JykoPzpcMVwxfFxcW1xzXFNdfCg/IVwxKVteXFxdKSpcMS8sZ3JlZWR5OiEwfSx7cGF0dGVybjovKCJ8JykoPzpcXC58KD8hXDEpW15cXFxyXG5dKSo/XDEvLGdyZWVkeTohMH1dLCJjbGFzcy1uYW1lIjpbe3BhdHRlcm46L1xiW0EtWl1cdyooPzpcLlx3KykqXGIoPz1ccytcdyspLyxpbnNpZGU6e3B1bmN0dWF0aW9uOi9cLi99fSx7cGF0dGVybjovKFxbKVtBLVpdXHcqKD86XC5cdyspKlxiLyxsb29rYmVoaW5kOiEwLGluc2lkZTp7cHVuY3R1YXRpb246L1wuL319LHtwYXR0ZXJuOi8oXGIoPzpjbGFzc3xpbnRlcmZhY2UpXHMrW0EtWl1cdyooPzpcLlx3KykqXHMqOlxzKilbQS1aXVx3Kig/OlwuXHcrKSpcYi8sbG9va2JlaGluZDohMCxpbnNpZGU6e3B1bmN0dWF0aW9uOi9cLi99fSx7cGF0dGVybjovKCg/OlxiKD86Y2xhc3N8aW50ZXJmYWNlfG5ldylccyspfCg/OmNhdGNoXHMrXCgpKVtBLVpdXHcqKD86XC5cdyspKlxiLyxsb29rYmVoaW5kOiEwLGluc2lkZTp7cHVuY3R1YXRpb246L1wuL319XSxudW1iZXI6L1xiMHhbXGRhLWZdK1xifCg/OlxiXGQrXC4/XGQqfFxCXC5cZCspZj8vaSxvcGVyYXRvcjovPj49P3w8PD0/fFstPV0+fChbLSsmfD9dKVwxfH58Wy0rKi8lJnxeIT08Pl09Py8scHVuY3R1YXRpb246L1w/XC4/fDo6fFt7fVtcXTsoKSwuOl0vfSksUHJpc20ubGFuZ3VhZ2VzLmluc2VydEJlZm9yZSgiY3NoYXJwIiwiY2xhc3MtbmFtZSIseyJnZW5lcmljLW1ldGhvZCI6e3BhdHRlcm46L1x3K1xzKjxbXj5cclxuXSs/PlxzKig/PVwoKS8saW5zaWRlOnsiZnVuY3Rpb24iOi9eXHcrLywiY2xhc3MtbmFtZSI6e3BhdHRlcm46L1xiW0EtWl1cdyooPzpcLlx3KykqXGIvLGluc2lkZTp7cHVuY3R1YXRpb246L1wuL319LGtleXdvcmQ6UHJpc20ubGFuZ3VhZ2VzLmNzaGFycC5rZXl3b3JkLHB1bmN0dWF0aW9uOi9bPD4oKSwuOl0vfX0scHJlcHJvY2Vzc29yOntwYXR0ZXJuOi8oXlxzKikjLiovbSxsb29rYmVoaW5kOiEwLGFsaWFzOiJwcm9wZXJ0eSIsaW5zaWRlOntkaXJlY3RpdmU6e3BhdHRlcm46LyhccyojKVxiKD86ZGVmaW5lfGVsaWZ8ZWxzZXxlbmRpZnxlbmRyZWdpb258ZXJyb3J8aWZ8bGluZXxwcmFnbWF8cmVnaW9ufHVuZGVmfHdhcm5pbmcpXGIvLGxvb2tiZWhpbmQ6ITAsYWxpYXM6ImtleXdvcmQifX19fSksUHJpc20ubGFuZ3VhZ2VzLmRvdG5ldD1QcmlzbS5sYW5ndWFnZXMuY3M9UHJpc20ubGFuZ3VhZ2VzLmNzaGFycH0se31dLDY6W2Z1bmN0aW9uKGUsbix0KXshZnVuY3Rpb24oZSl7dmFyIG49LygifCcpKD86XFwoPzpcclxufFtcc1xTXSl8KD8hXDEpW15cXFxyXG5dKSpcMS87ZS5sYW5ndWFnZXMuY3NzPXtjb21tZW50Oi9cL1wqW1xzXFNdKj9cKlwvLyxhdHJ1bGU6e3BhdHRlcm46L0BbXHctXStbXHNcU10qPyg/Ojt8KD89XHMqXHspKS8saW5zaWRlOntydWxlOi9AW1x3LV0rL319LHVybDp7cGF0dGVybjpSZWdFeHAoInVybFxcKCg/OiIrbi5zb3VyY2UrInxbXlxuXHIoKV0qKVxcKSIsImkiKSxpbnNpZGU6eyJmdW5jdGlvbiI6L151cmwvaSxwdW5jdHVhdGlvbjovXlwofFwpJC99fSxzZWxlY3RvcjpSZWdFeHAoIltee31cXHNdKD86W157fTtcIiddfCIrbi5zb3VyY2UrIikqPyg/PVxccypcXHspIiksc3RyaW5nOntwYXR0ZXJuOm4sZ3JlZWR5OiEwfSxwcm9wZXJ0eTovWy1fYS16XHhBMC1cdUZGRkZdWy1cd1x4QTAtXHVGRkZGXSooPz1ccyo6KS9pLGltcG9ydGFudDovIWltcG9ydGFudFxiL2ksImZ1bmN0aW9uIjovWy1hLXowLTldKyg/PVwoKS9pLHB1bmN0dWF0aW9uOi9bKCl7fTs6LF0vfSxlLmxhbmd1YWdlcy5jc3MuYXRydWxlLmluc2lkZS5yZXN0PWUubGFuZ3VhZ2VzLmNzczt2YXIgdD1lLmxhbmd1YWdlcy5tYXJrdXA7dCYmKHQudGFnLmFkZElubGluZWQoInN0eWxlIiwiY3NzIiksZS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKCJpbnNpZGUiLCJhdHRyLXZhbHVlIix7InN0eWxlLWF0dHIiOntwYXR0ZXJuOi9ccypzdHlsZT0oInwnKSg/OlxcW1xzXFNdfCg/IVwxKVteXFxdKSpcMS9pLGluc2lkZTp7ImF0dHItbmFtZSI6e3BhdHRlcm46L15ccypzdHlsZS9pLGluc2lkZTp0LnRhZy5pbnNpZGV9LHB1bmN0dWF0aW9uOi9eXHMqPVxzKlsnIl18WyciXVxzKiQvLCJhdHRyLXZhbHVlIjp7cGF0dGVybjovLisvaSxpbnNpZGU6ZS5sYW5ndWFnZXMuY3NzfX0sYWxpYXM6Imxhbmd1YWdlLWNzcyJ9fSx0LnRhZykpfShQcmlzbSl9LHt9XSw3OltmdW5jdGlvbihlLG4sdCl7dmFyIGEscixpO2E9UHJpc20scj0vXGIoPzphYnN0cmFjdHxhc3NlcnR8Ym9vbGVhbnxicmVha3xieXRlfGNhc2V8Y2F0Y2h8Y2hhcnxjbGFzc3xjb25zdHxjb250aW51ZXxkZWZhdWx0fGRvfGRvdWJsZXxlbHNlfGVudW18ZXhwb3J0c3xleHRlbmRzfGZpbmFsfGZpbmFsbHl8ZmxvYXR8Zm9yfGdvdG98aWZ8aW1wbGVtZW50c3xpbXBvcnR8aW5zdGFuY2VvZnxpbnR8aW50ZXJmYWNlfGxvbmd8bW9kdWxlfG5hdGl2ZXxuZXd8bnVsbHxvcGVufG9wZW5zfHBhY2thZ2V8cHJpdmF0ZXxwcm90ZWN0ZWR8cHJvdmlkZXN8cHVibGljfHJlcXVpcmVzfHJldHVybnxzaG9ydHxzdGF0aWN8c3RyaWN0ZnB8c3VwZXJ8c3dpdGNofHN5bmNocm9uaXplZHx0aGlzfHRocm93fHRocm93c3x0b3x0cmFuc2llbnR8dHJhbnNpdGl2ZXx0cnl8dXNlc3x2YXJ8dm9pZHx2b2xhdGlsZXx3aGlsZXx3aXRofHlpZWxkKVxiLyxpPS9cYltBLVpdKD86XHcqW2Etel1cdyopP1xiLyxhLmxhbmd1YWdlcy5qYXZhPWEubGFuZ3VhZ2VzLmV4dGVuZCgiY2xpa2UiLHsiY2xhc3MtbmFtZSI6W2ksL1xiW0EtWl1cdyooPz1ccytcdytccypbOyw9KCkpXSkvXSxrZXl3b3JkOnIsImZ1bmN0aW9uIjpbYS5sYW5ndWFnZXMuY2xpa2VbImZ1bmN0aW9uIl0se3BhdHRlcm46LyhcOlw6KVthLXpfXVx3Ki8sbG9va2JlaGluZDohMH1dLG51bWJlcjovXGIwYlswMV1bMDFfXSpMP1xifFxiMHhbXGRhLWZfXSpcLj9bXGRhLWZfcCstXStcYnwoPzpcYlxkW1xkX10qXC4/W1xkX10qfFxCXC5cZFtcZF9dKikoPzplWystXT9cZFtcZF9dKik/W2RmbF0/L2ksb3BlcmF0b3I6e3BhdHRlcm46LyhefFteLl0pKD86PDw9P3w+Pj4/PT98LT58LS18XCtcK3wmJnxcfFx8fDo6fFs/On5dfFstKyovJSZ8XiE9PD5dPT8pL20sbG9va2JlaGluZDohMH19KSxhLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoImphdmEiLCJzdHJpbmciLHsidHJpcGxlLXF1b3RlZC1zdHJpbmciOntwYXR0ZXJuOi8iIiJbIFx0XSpbXHJcbl0oPzooPzoifCIiKT8oPzpcXC58W14iXFxdKSkqIiIiLyxncmVlZHk6ITAsYWxpYXM6InN0cmluZyJ9fSksYS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKCJqYXZhIiwiY2xhc3MtbmFtZSIse2Fubm90YXRpb246e2FsaWFzOiJwdW5jdHVhdGlvbiIscGF0dGVybjovKF58W14uXSlAXHcrLyxsb29rYmVoaW5kOiEwfSxuYW1lc3BhY2U6e3BhdHRlcm46LyhcYig/OmV4cG9ydHN8aW1wb3J0KD86XHMrc3RhdGljKT98bW9kdWxlfG9wZW58b3BlbnN8cGFja2FnZXxwcm92aWRlc3xyZXF1aXJlc3x0b3x0cmFuc2l0aXZlfHVzZXN8d2l0aClccyspW2Etel1cdyooPzpcLlthLXpdXHcqKSsvLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOntwdW5jdHVhdGlvbjovXC4vfX0sZ2VuZXJpY3M6e3BhdHRlcm46LzwoPzpbXHdccywuJj9dfDwoPzpbXHdccywuJj9dfDwoPzpbXHdccywuJj9dfDxbXHdccywuJj9dKj4pKj4pKj4pKj4vLGluc2lkZTp7ImNsYXNzLW5hbWUiOmksa2V5d29yZDpyLHB1bmN0dWF0aW9uOi9bPD4oKSwuOl0vLG9wZXJhdG9yOi9bPyZ8XS99fX0pfSx7fV0sODpbZnVuY3Rpb24oZSxuLHQpe1ByaXNtLmxhbmd1YWdlcy5qYXZhc2NyaXB0PVByaXNtLmxhbmd1YWdlcy5leHRlbmQoImNsaWtlIix7ImNsYXNzLW5hbWUiOltQcmlzbS5sYW5ndWFnZXMuY2xpa2VbImNsYXNzLW5hbWUiXSx7cGF0dGVybjovKF58W14kXHdceEEwLVx1RkZGRl0pW18kQS1aXHhBMC1cdUZGRkZdWyRcd1x4QTAtXHVGRkZGXSooPz1cLig/OnByb3RvdHlwZXxjb25zdHJ1Y3RvcikpLyxsb29rYmVoaW5kOiEwfV0sa2V5d29yZDpbe3BhdHRlcm46LygoPzpefH0pXHMqKSg/OmNhdGNofGZpbmFsbHkpXGIvLGxvb2tiZWhpbmQ6ITB9LHtwYXR0ZXJuOi8oXnxbXi5dfFwuXC5cLlxzKilcYig/OmFzfGFzeW5jKD89XHMqKD86ZnVuY3Rpb25cYnxcKHxbJFx3XHhBMC1cdUZGRkZdfCQpKXxhd2FpdHxicmVha3xjYXNlfGNsYXNzfGNvbnN0fGNvbnRpbnVlfGRlYnVnZ2VyfGRlZmF1bHR8ZGVsZXRlfGRvfGVsc2V8ZW51bXxleHBvcnR8ZXh0ZW5kc3xmb3J8ZnJvbXxmdW5jdGlvbnxnZXR8aWZ8aW1wbGVtZW50c3xpbXBvcnR8aW58aW5zdGFuY2VvZnxpbnRlcmZhY2V8bGV0fG5ld3xudWxsfG9mfHBhY2thZ2V8cHJpdmF0ZXxwcm90ZWN0ZWR8cHVibGljfHJldHVybnxzZXR8c3RhdGljfHN1cGVyfHN3aXRjaHx0aGlzfHRocm93fHRyeXx0eXBlb2Z8dW5kZWZpbmVkfHZhcnx2b2lkfHdoaWxlfHdpdGh8eWllbGQpXGIvLGxvb2tiZWhpbmQ6ITB9XSxudW1iZXI6L1xiKD86KD86MFt4WF0oPzpbXGRBLUZhLWZdKD86X1tcZEEtRmEtZl0pPykrfDBbYkJdKD86WzAxXSg/Ol9bMDFdKT8pK3wwW29PXSg/OlswLTddKD86X1swLTddKT8pKyluP3woPzpcZCg/Ol9cZCk/KStufE5hTnxJbmZpbml0eSlcYnwoPzpcYig/OlxkKD86X1xkKT8pK1wuPyg/OlxkKD86X1xkKT8pKnxcQlwuKD86XGQoPzpfXGQpPykrKSg/OltFZV1bKy1dPyg/OlxkKD86X1xkKT8pKyk/LywiZnVuY3Rpb24iOi8jP1tfJGEtekEtWlx4QTAtXHVGRkZGXVskXHdceEEwLVx1RkZGRl0qKD89XHMqKD86XC5ccyooPzphcHBseXxiaW5kfGNhbGwpXHMqKT9cKCkvLG9wZXJhdG9yOi8tLXxcK1wrfFwqXCo9P3w9PnwmJnxcfFx8fFshPV09PXw8PD0/fD4+Pj89P3xbLSsqLyUmfF4hPTw+XT0/fFwuezN9fFw/Wy4/XT98W346XS99KSxQcmlzbS5sYW5ndWFnZXMuamF2YXNjcmlwdFsiY2xhc3MtbmFtZSJdWzBdLnBhdHRlcm49LyhcYig/OmNsYXNzfGludGVyZmFjZXxleHRlbmRzfGltcGxlbWVudHN8aW5zdGFuY2VvZnxuZXcpXHMrKVtcdy5cXF0rLyxQcmlzbS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKCJqYXZhc2NyaXB0Iiwia2V5d29yZCIse3JlZ2V4OntwYXR0ZXJuOi8oKD86XnxbXiRcd1x4QTAtXHVGRkZGLiInXF0pXHNdKVxzKilcLyg/OlxbKD86W15cXVxcXHJcbl18XFwuKSpdfFxcLnxbXi9cXFxbXHJcbl0pK1wvW2dpbXl1c117MCw2fSg/PSg/OlxzfFwvXCpbXHNcU10qP1wqXC8pKig/OiR8W1xyXG4sLjs6fSlcXV18XC9cLykpLyxsb29rYmVoaW5kOiEwLGdyZWVkeTohMH0sImZ1bmN0aW9uLXZhcmlhYmxlIjp7cGF0dGVybjovIz9bXyRhLXpBLVpceEEwLVx1RkZGRl1bJFx3XHhBMC1cdUZGRkZdKig/PVxzKls9Ol1ccyooPzphc3luY1xzKik/KD86XGJmdW5jdGlvblxifCg/OlwoKD86W14oKV18XChbXigpXSpcKSkqXCl8W18kYS16QS1aXHhBMC1cdUZGRkZdWyRcd1x4QTAtXHVGRkZGXSopXHMqPT4pKS8sYWxpYXM6ImZ1bmN0aW9uIn0scGFyYW1ldGVyOlt7cGF0dGVybjovKGZ1bmN0aW9uKD86XHMrW18kQS1aYS16XHhBMC1cdUZGRkZdWyRcd1x4QTAtXHVGRkZGXSopP1xzKlwoXHMqKSg/IVxzKSg/OlteKCldfFwoW14oKV0qXCkpKz8oPz1ccypcKSkvLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOlByaXNtLmxhbmd1YWdlcy5qYXZhc2NyaXB0fSx7cGF0dGVybjovW18kYS16XHhBMC1cdUZGRkZdWyRcd1x4QTAtXHVGRkZGXSooPz1ccyo9PikvaSxpbnNpZGU6UHJpc20ubGFuZ3VhZ2VzLmphdmFzY3JpcHR9LHtwYXR0ZXJuOi8oXChccyopKD8hXHMpKD86W14oKV18XChbXigpXSpcKSkrPyg/PVxzKlwpXHMqPT4pLyxsb29rYmVoaW5kOiEwLGluc2lkZTpQcmlzbS5sYW5ndWFnZXMuamF2YXNjcmlwdH0se3BhdHRlcm46LygoPzpcYnxcc3xeKSg/ISg/OmFzfGFzeW5jfGF3YWl0fGJyZWFrfGNhc2V8Y2F0Y2h8Y2xhc3N8Y29uc3R8Y29udGludWV8ZGVidWdnZXJ8ZGVmYXVsdHxkZWxldGV8ZG98ZWxzZXxlbnVtfGV4cG9ydHxleHRlbmRzfGZpbmFsbHl8Zm9yfGZyb218ZnVuY3Rpb258Z2V0fGlmfGltcGxlbWVudHN8aW1wb3J0fGlufGluc3RhbmNlb2Z8aW50ZXJmYWNlfGxldHxuZXd8bnVsbHxvZnxwYWNrYWdlfHByaXZhdGV8cHJvdGVjdGVkfHB1YmxpY3xyZXR1cm58c2V0fHN0YXRpY3xzdXBlcnxzd2l0Y2h8dGhpc3x0aHJvd3x0cnl8dHlwZW9mfHVuZGVmaW5lZHx2YXJ8dm9pZHx3aGlsZXx3aXRofHlpZWxkKSg/IVskXHdceEEwLVx1RkZGRl0pKSg/OltfJEEtWmEtelx4QTAtXHVGRkZGXVskXHdceEEwLVx1RkZGRl0qXHMqKVwoXHMqKSg/IVxzKSg/OlteKCldfFwoW14oKV0qXCkpKz8oPz1ccypcKVxzKlx7KS8sbG9va2JlaGluZDohMCxpbnNpZGU6UHJpc20ubGFuZ3VhZ2VzLmphdmFzY3JpcHR9XSxjb25zdGFudDovXGJbQS1aXSg/OltBLVpfXXxcZHg/KSpcYi99KSxQcmlzbS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKCJqYXZhc2NyaXB0Iiwic3RyaW5nIix7InRlbXBsYXRlLXN0cmluZyI6e3BhdHRlcm46L2AoPzpcXFtcc1xTXXxcJHsoPzpbXnt9XXx7KD86W157fV18e1tefV0qfSkqfSkrfXwoPyFcJHspW15cXGBdKSpgLyxncmVlZHk6ITAsaW5zaWRlOnsidGVtcGxhdGUtcHVuY3R1YXRpb24iOntwYXR0ZXJuOi9eYHxgJC8sYWxpYXM6InN0cmluZyJ9LGludGVycG9sYXRpb246e3BhdHRlcm46LygoPzpefFteXFxdKSg/OlxcezJ9KSopXCR7KD86W157fV18eyg/Oltee31dfHtbXn1dKn0pKn0pK30vLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOnsiaW50ZXJwb2xhdGlvbi1wdW5jdHVhdGlvbiI6e3BhdHRlcm46L15cJHt8fSQvLGFsaWFzOiJwdW5jdHVhdGlvbiJ9LHJlc3Q6UHJpc20ubGFuZ3VhZ2VzLmphdmFzY3JpcHR9fSxzdHJpbmc6L1tcc1xTXSsvfX19KSxQcmlzbS5sYW5ndWFnZXMubWFya3VwJiZQcmlzbS5sYW5ndWFnZXMubWFya3VwLnRhZy5hZGRJbmxpbmVkKCJzY3JpcHQiLCJqYXZhc2NyaXB0IiksUHJpc20ubGFuZ3VhZ2VzLmpzPVByaXNtLmxhbmd1YWdlcy5qYXZhc2NyaXB0fSx7fV0sOTpbZnVuY3Rpb24oZSxuLHQpe2Z1bmN0aW9uIGIoZSxuKXtyZXR1cm4iX19fIitlLnRvVXBwZXJDYXNlKCkrbisiX19fIn12YXIgeTt5PVByaXNtLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHkubGFuZ3VhZ2VzWyJtYXJrdXAtdGVtcGxhdGluZyJdPXt9LHtidWlsZFBsYWNlaG9sZGVyczp7dmFsdWU6ZnVuY3Rpb24oYSxyLGUsaSl7aWYoYS5sYW5ndWFnZT09PXIpe3ZhciBzPWEudG9rZW5TdGFjaz1bXTthLmNvZGU9YS5jb2RlLnJlcGxhY2UoZSxmdW5jdGlvbihlKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgaSYmIWkoZSkpcmV0dXJuIGU7Zm9yKHZhciBuLHQ9cy5sZW5ndGg7LTEhPT1hLmNvZGUuaW5kZXhPZihuPWIocix0KSk7KSsrdDtyZXR1cm4gc1t0XT1lLG59KSxhLmdyYW1tYXI9eS5sYW5ndWFnZXMubWFya3VwfX19LHRva2VuaXplUGxhY2Vob2xkZXJzOnt2YWx1ZTpmdW5jdGlvbihwLGcpe2lmKHAubGFuZ3VhZ2U9PT1nJiZwLnRva2VuU3RhY2spe3AuZ3JhbW1hcj15Lmxhbmd1YWdlc1tnXTt2YXIgbT0wLGY9T2JqZWN0LmtleXMocC50b2tlblN0YWNrKTshZnVuY3Rpb24gaChlKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoJiYhKG0+PWYubGVuZ3RoKTtuKyspe3ZhciB0PWVbbl07aWYoInN0cmluZyI9PXR5cGVvZiB0fHx0LmNvbnRlbnQmJiJzdHJpbmciPT10eXBlb2YgdC5jb250ZW50KXt2YXIgYT1mW21dLHI9cC50b2tlblN0YWNrW2FdLGk9InN0cmluZyI9PXR5cGVvZiB0P3Q6dC5jb250ZW50LHM9YihnLGEpLG89aS5pbmRleE9mKHMpO2lmKC0xPG8peysrbTt2YXIgbD1pLnN1YnN0cmluZygwLG8pLHU9bmV3IHkuVG9rZW4oZyx5LnRva2VuaXplKHIscC5ncmFtbWFyKSwibGFuZ3VhZ2UtIitnLHIpLGM9aS5zdWJzdHJpbmcobytzLmxlbmd0aCksZD1bXTtsJiZkLnB1c2guYXBwbHkoZCxoKFtsXSkpLGQucHVzaCh1KSxjJiZkLnB1c2guYXBwbHkoZCxoKFtjXSkpLCJzdHJpbmciPT10eXBlb2YgdD9lLnNwbGljZS5hcHBseShlLFtuLDFdLmNvbmNhdChkKSk6dC5jb250ZW50PWR9fWVsc2UgdC5jb250ZW50JiZoKHQuY29udGVudCl9cmV0dXJuIGV9KHAudG9rZW5zKX19fX0pfSx7fV0sMTA6W2Z1bmN0aW9uKGUsbix0KXtQcmlzbS5sYW5ndWFnZXMubWFya3VwPXtjb21tZW50Oi88IS0tW1xzXFNdKj8tLT4vLHByb2xvZzovPFw/W1xzXFNdKz9cPz4vLGRvY3R5cGU6e3BhdHRlcm46LzwhRE9DVFlQRSg/OltePiInW1xdXXwiW14iXSoifCdbXiddKicpKyg/OlxbKD86KD8hPCEtLSlbXiInXF1dfCJbXiJdKiJ8J1teJ10qJ3w8IS0tW1xzXFNdKj8tLT4pKlxdXHMqKT8+L2ksZ3JlZWR5OiEwfSxjZGF0YTovPCFcW0NEQVRBXFtbXHNcU10qP11dPi9pLHRhZzp7cGF0dGVybjovPFwvPyg/IVxkKVteXHM+XC89JDwlXSsoPzpccyg/OlxzKlteXHM+XC89XSsoPzpccyo9XHMqKD86IlteIl0qInwnW14nXSonfFteXHMnIj49XSsoPz1bXHM+XSkpfCg/PVtccy8+XSkpKSspP1xzKlwvPz4vaSxncmVlZHk6ITAsaW5zaWRlOnt0YWc6e3BhdHRlcm46L148XC8/W15ccz5cL10rL2ksaW5zaWRlOntwdW5jdHVhdGlvbjovXjxcLz8vLG5hbWVzcGFjZTovXlteXHM+XC86XSs6L319LCJhdHRyLXZhbHVlIjp7cGF0dGVybjovPVxzKig/OiJbXiJdKiJ8J1teJ10qJ3xbXlxzJyI+PV0rKS9pLGluc2lkZTp7cHVuY3R1YXRpb246Wy9ePS8se3BhdHRlcm46L14oXHMqKVsiJ118WyInXSQvLGxvb2tiZWhpbmQ6ITB9XX19LHB1bmN0dWF0aW9uOi9cLz8+LywiYXR0ci1uYW1lIjp7cGF0dGVybjovW15ccz5cL10rLyxpbnNpZGU6e25hbWVzcGFjZTovXlteXHM+XC86XSs6L319fX0sZW50aXR5Oi8mIz9bXGRhLXpdezEsOH07L2l9LFByaXNtLmxhbmd1YWdlcy5tYXJrdXAudGFnLmluc2lkZVsiYXR0ci12YWx1ZSJdLmluc2lkZS5lbnRpdHk9UHJpc20ubGFuZ3VhZ2VzLm1hcmt1cC5lbnRpdHksUHJpc20uaG9va3MuYWRkKCJ3cmFwIixmdW5jdGlvbihlKXsiZW50aXR5Ij09PWUudHlwZSYmKGUuYXR0cmlidXRlcy50aXRsZT1lLmNvbnRlbnQucmVwbGFjZSgvJmFtcDsvLCImIikpfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFByaXNtLmxhbmd1YWdlcy5tYXJrdXAudGFnLCJhZGRJbmxpbmVkIix7dmFsdWU6ZnVuY3Rpb24oZSxuKXt2YXIgdD17fTt0WyJsYW5ndWFnZS0iK25dPXtwYXR0ZXJuOi8oXjwhXFtDREFUQVxbKVtcc1xTXSs/KD89XF1cXT4kKS9pLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOlByaXNtLmxhbmd1YWdlc1tuXX0sdC5jZGF0YT0vXjwhXFtDREFUQVxbfFxdXF0+JC9pO3ZhciBhPXsiaW5jbHVkZWQtY2RhdGEiOntwYXR0ZXJuOi88IVxbQ0RBVEFcW1tcc1xTXSo/XF1cXT4vaSxpbnNpZGU6dH19O2FbImxhbmd1YWdlLSIrbl09e3BhdHRlcm46L1tcc1xTXSsvLGluc2lkZTpQcmlzbS5sYW5ndWFnZXNbbl19O3ZhciByPXt9O3JbZV09e3BhdHRlcm46UmVnRXhwKC8oPF9fW1xzXFNdKj8+KSg/OjwhXFtDREFUQVxbW1xzXFNdKj9cXVxdPlxzKnxbXHNcU10pKj8oPz08XC9fXz4pLy5zb3VyY2UucmVwbGFjZSgvX18vZyxlKSwiaSIpLGxvb2tiZWhpbmQ6ITAsZ3JlZWR5OiEwLGluc2lkZTphfSxQcmlzbS5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKCJtYXJrdXAiLCJjZGF0YSIscil9fSksUHJpc20ubGFuZ3VhZ2VzLnhtbD1QcmlzbS5sYW5ndWFnZXMuZXh0ZW5kKCJtYXJrdXAiLHt9KSxQcmlzbS5sYW5ndWFnZXMuaHRtbD1QcmlzbS5sYW5ndWFnZXMubWFya3VwLFByaXNtLmxhbmd1YWdlcy5tYXRobWw9UHJpc20ubGFuZ3VhZ2VzLm1hcmt1cCxQcmlzbS5sYW5ndWFnZXMuc3ZnPVByaXNtLmxhbmd1YWdlcy5tYXJrdXB9LHt9XSwxMTpbZnVuY3Rpb24oZSxuLHQpeyFmdW5jdGlvbihuKXtuLmxhbmd1YWdlcy5waHA9bi5sYW5ndWFnZXMuZXh0ZW5kKCJjbGlrZSIse2tleXdvcmQ6L1xiKD86X19oYWx0X2NvbXBpbGVyfGFic3RyYWN0fGFuZHxhcnJheXxhc3xicmVha3xjYWxsYWJsZXxjYXNlfGNhdGNofGNsYXNzfGNsb25lfGNvbnN0fGNvbnRpbnVlfGRlY2xhcmV8ZGVmYXVsdHxkaWV8ZG98ZWNob3xlbHNlfGVsc2VpZnxlbXB0eXxlbmRkZWNsYXJlfGVuZGZvcnxlbmRmb3JlYWNofGVuZGlmfGVuZHN3aXRjaHxlbmR3aGlsZXxldmFsfGV4aXR8ZXh0ZW5kc3xmaW5hbHxmaW5hbGx5fGZvcnxmb3JlYWNofGZ1bmN0aW9ufGdsb2JhbHxnb3RvfGlmfGltcGxlbWVudHN8aW5jbHVkZXxpbmNsdWRlX29uY2V8aW5zdGFuY2VvZnxpbnN0ZWFkb2Z8aW50ZXJmYWNlfGlzc2V0fGxpc3R8bmFtZXNwYWNlfG5ld3xvcnxwYXJlbnR8cHJpbnR8cHJpdmF0ZXxwcm90ZWN0ZWR8cHVibGljfHJlcXVpcmV8cmVxdWlyZV9vbmNlfHJldHVybnxzdGF0aWN8c3dpdGNofHRocm93fHRyYWl0fHRyeXx1bnNldHx1c2V8dmFyfHdoaWxlfHhvcnx5aWVsZClcYi9pLCJib29sZWFuIjp7cGF0dGVybjovXGIoPzpmYWxzZXx0cnVlKVxiL2ksYWxpYXM6ImNvbnN0YW50In0sY29uc3RhbnQ6Wy9cYltBLVpfXVtBLVowLTlfXSpcYi8sL1xiKD86bnVsbClcYi9pXSxjb21tZW50OntwYXR0ZXJuOi8oXnxbXlxcXSkoPzpcL1wqW1xzXFNdKj9cKlwvfFwvXC8uKikvLGxvb2tiZWhpbmQ6ITB9fSksbi5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKCJwaHAiLCJzdHJpbmciLHsic2hlbGwtY29tbWVudCI6e3BhdHRlcm46LyhefFteXFxdKSMuKi8sbG9va2JlaGluZDohMCxhbGlhczoiY29tbWVudCJ9fSksbi5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKCJwaHAiLCJjb21tZW50Iix7ZGVsaW1pdGVyOntwYXR0ZXJuOi9cPz4kfF48XD8oPzpwaHAoPz1ccyl8PSk/L2ksYWxpYXM6ImltcG9ydGFudCJ9fSksbi5sYW5ndWFnZXMuaW5zZXJ0QmVmb3JlKCJwaHAiLCJrZXl3b3JkIix7dmFyaWFibGU6L1wkKyg/Olx3K1xifCg/PXspKS9pLCJwYWNrYWdlIjp7cGF0dGVybjovKFxcfG5hbWVzcGFjZVxzK3x1c2VccyspW1x3XFxdKy8sbG9va2JlaGluZDohMCxpbnNpZGU6e3B1bmN0dWF0aW9uOi9cXC99fX0pLG4ubGFuZ3VhZ2VzLmluc2VydEJlZm9yZSgicGhwIiwib3BlcmF0b3IiLHtwcm9wZXJ0eTp7cGF0dGVybjovKC0+KVtcd10rLyxsb29rYmVoaW5kOiEwfX0pO3ZhciBlPXtwYXR0ZXJuOi97XCQoPzp7KD86e1tee31dK318W157fV0rKX18W157fV0pK318KF58W15cXHtdKVwkKyg/Olx3Kyg/OlxbLis/XXwtPlx3KykqKS8sbG9va2JlaGluZDohMCxpbnNpZGU6bi5sYW5ndWFnZXMucGhwfTtuLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoInBocCIsInN0cmluZyIseyJub3dkb2Mtc3RyaW5nIjp7cGF0dGVybjovPDw8JyhbXiddKyknKD86XHJcbj98XG4pKD86LiooPzpcclxuP3xcbikpKj9cMTsvLGdyZWVkeTohMCxhbGlhczoic3RyaW5nIixpbnNpZGU6e2RlbGltaXRlcjp7cGF0dGVybjovXjw8PCdbXiddKyd8W2Etel9dXHcqOyQvaSxhbGlhczoic3ltYm9sIixpbnNpZGU6e3B1bmN0dWF0aW9uOi9ePDw8Jz98Wyc7XSQvfX19fSwiaGVyZWRvYy1zdHJpbmciOntwYXR0ZXJuOi88PDwoPzoiKFteIl0rKSIoPzpcclxuP3xcbikoPzouKig/OlxyXG4/fFxuKSkqP1wxO3woW2Etel9dXHcqKSg/OlxyXG4/fFxuKSg/Oi4qKD86XHJcbj98XG4pKSo/XDI7KS9pLGdyZWVkeTohMCxhbGlhczoic3RyaW5nIixpbnNpZGU6e2RlbGltaXRlcjp7cGF0dGVybjovXjw8PCg/OiJbXiJdKyJ8W2Etel9dXHcqKXxbYS16X11cdyo7JC9pLGFsaWFzOiJzeW1ib2wiLGluc2lkZTp7cHVuY3R1YXRpb246L148PDwiP3xbIjtdJC99fSxpbnRlcnBvbGF0aW9uOmV9fSwic2luZ2xlLXF1b3RlZC1zdHJpbmciOntwYXR0ZXJuOi8nKD86XFxbXHNcU118W15cXCddKSonLyxncmVlZHk6ITAsYWxpYXM6InN0cmluZyJ9LCJkb3VibGUtcXVvdGVkLXN0cmluZyI6e3BhdHRlcm46LyIoPzpcXFtcc1xTXXxbXlxcIl0pKiIvLGdyZWVkeTohMCxhbGlhczoic3RyaW5nIixpbnNpZGU6e2ludGVycG9sYXRpb246ZX19fSksZGVsZXRlIG4ubGFuZ3VhZ2VzLnBocC5zdHJpbmcsbi5ob29rcy5hZGQoImJlZm9yZS10b2tlbml6ZSIsZnVuY3Rpb24oZSl7aWYoLzxcPy8udGVzdChlLmNvZGUpKXtuLmxhbmd1YWdlc1sibWFya3VwLXRlbXBsYXRpbmciXS5idWlsZFBsYWNlaG9sZGVycyhlLCJwaHAiLC88XD8oPzpbXiInLyNdfFwvKD8hWyovXSl8KCJ8JykoPzpcXFtcc1xTXXwoPyFcMSlbXlxcXSkqXDF8KD86XC9cL3wjKSg/OlteP1xuXHJdfFw/KD8hPikpKig/PSR8XD8+fFtcclxuXSl8XC9cKltcc1xTXSo/KD86XCpcL3wkKSkqPyg/Olw/PnwkKS9naSl9fSksbi5ob29rcy5hZGQoImFmdGVyLXRva2VuaXplIixmdW5jdGlvbihlKXtuLmxhbmd1YWdlc1sibWFya3VwLXRlbXBsYXRpbmciXS50b2tlbml6ZVBsYWNlaG9sZGVycyhlLCJwaHAiKX0pfShQcmlzbSl9LHt9XSwxMjpbZnVuY3Rpb24oZSxuLHQpe1ByaXNtLmxhbmd1YWdlcy5weXRob249e2NvbW1lbnQ6e3BhdHRlcm46LyhefFteXFxdKSMuKi8sbG9va2JlaGluZDohMH0sInN0cmluZy1pbnRlcnBvbGF0aW9uIjp7cGF0dGVybjovKD86ZnxyZnxmcikoPzooIiIifCcnJylbXHNcU10rP1wxfCgifCcpKD86XFwufCg/IVwyKVteXFxcclxuXSkqXDIpL2ksZ3JlZWR5OiEwLGluc2lkZTp7aW50ZXJwb2xhdGlvbjp7cGF0dGVybjovKCg/Ol58W157XSkoPzp7eykqKXsoPyF7KSg/Oltee31dfHsoPyF7KSg/Oltee31dfHsoPyF7KSg/Oltee31dKSt9KSt9KSt9Lyxsb29rYmVoaW5kOiEwLGluc2lkZTp7ImZvcm1hdC1zcGVjIjp7cGF0dGVybjovKDopW146KCl7fV0rKD89fSQpLyxsb29rYmVoaW5kOiEwfSwiY29udmVyc2lvbi1vcHRpb24iOntwYXR0ZXJuOi8hW3NyYV0oPz1bOn1dJCkvLGFsaWFzOiJwdW5jdHVhdGlvbiJ9LHJlc3Q6bnVsbH19LHN0cmluZzovW1xzXFNdKy99fSwidHJpcGxlLXF1b3RlZC1zdHJpbmciOntwYXR0ZXJuOi8oPzpbcnViXXxyYnxicik/KCIiInwnJycpW1xzXFNdKz9cMS9pLGdyZWVkeTohMCxhbGlhczoic3RyaW5nIn0sc3RyaW5nOntwYXR0ZXJuOi8oPzpbcnViXXxyYnxicik/KCJ8JykoPzpcXC58KD8hXDEpW15cXFxyXG5dKSpcMS9pLGdyZWVkeTohMH0sImZ1bmN0aW9uIjp7cGF0dGVybjovKCg/Ol58XHMpZGVmWyBcdF0rKVthLXpBLVpfXVx3Kig/PVxzKlwoKS9nLGxvb2tiZWhpbmQ6ITB9LCJjbGFzcy1uYW1lIjp7cGF0dGVybjovKFxiY2xhc3NccyspXHcrL2ksbG9va2JlaGluZDohMH0sZGVjb3JhdG9yOntwYXR0ZXJuOi8oXlxzKilAXHcrKD86XC5cdyspKi9pbSxsb29rYmVoaW5kOiEwLGFsaWFzOlsiYW5ub3RhdGlvbiIsInB1bmN0dWF0aW9uIl0saW5zaWRlOntwdW5jdHVhdGlvbjovXC4vfX0sa2V5d29yZDovXGIoPzphbmR8YXN8YXNzZXJ0fGFzeW5jfGF3YWl0fGJyZWFrfGNsYXNzfGNvbnRpbnVlfGRlZnxkZWx8ZWxpZnxlbHNlfGV4Y2VwdHxleGVjfGZpbmFsbHl8Zm9yfGZyb218Z2xvYmFsfGlmfGltcG9ydHxpbnxpc3xsYW1iZGF8bm9ubG9jYWx8bm90fG9yfHBhc3N8cHJpbnR8cmFpc2V8cmV0dXJufHRyeXx3aGlsZXx3aXRofHlpZWxkKVxiLyxidWlsdGluOi9cYig/Ol9faW1wb3J0X198YWJzfGFsbHxhbnl8YXBwbHl8YXNjaWl8YmFzZXN0cmluZ3xiaW58Ym9vbHxidWZmZXJ8Ynl0ZWFycmF5fGJ5dGVzfGNhbGxhYmxlfGNocnxjbGFzc21ldGhvZHxjbXB8Y29lcmNlfGNvbXBpbGV8Y29tcGxleHxkZWxhdHRyfGRpY3R8ZGlyfGRpdm1vZHxlbnVtZXJhdGV8ZXZhbHxleGVjZmlsZXxmaWxlfGZpbHRlcnxmbG9hdHxmb3JtYXR8ZnJvemVuc2V0fGdldGF0dHJ8Z2xvYmFsc3xoYXNhdHRyfGhhc2h8aGVscHxoZXh8aWR8aW5wdXR8aW50fGludGVybnxpc2luc3RhbmNlfGlzc3ViY2xhc3N8aXRlcnxsZW58bGlzdHxsb2NhbHN8bG9uZ3xtYXB8bWF4fG1lbW9yeXZpZXd8bWlufG5leHR8b2JqZWN0fG9jdHxvcGVufG9yZHxwb3d8cHJvcGVydHl8cmFuZ2V8cmF3X2lucHV0fHJlZHVjZXxyZWxvYWR8cmVwcnxyZXZlcnNlZHxyb3VuZHxzZXR8c2V0YXR0cnxzbGljZXxzb3J0ZWR8c3RhdGljbWV0aG9kfHN0cnxzdW18c3VwZXJ8dHVwbGV8dHlwZXx1bmljaHJ8dW5pY29kZXx2YXJzfHhyYW5nZXx6aXApXGIvLCJib29sZWFuIjovXGIoPzpUcnVlfEZhbHNlfE5vbmUpXGIvLG51bWJlcjovKD86XGIoPz1cZCl8XEIoPz1cLikpKD86MFtib10pPyg/Oig/OlxkfDB4W1xkYS1mXSlbXGRhLWZdKlwuP1xkKnxcLlxkKykoPzplWystXT9cZCspP2o/XGIvaSxvcGVyYXRvcjovWy0rJT1dPT98IT18XCpcKj89P3xcL1wvPz0/fDxbPD0+XT98Pls9Pl0/fFsmfF5+XS8scHVuY3R1YXRpb246L1t7fVtcXTsoKSwuOl0vfSxQcmlzbS5sYW5ndWFnZXMucHl0aG9uWyJzdHJpbmctaW50ZXJwb2xhdGlvbiJdLmluc2lkZS5pbnRlcnBvbGF0aW9uLmluc2lkZS5yZXN0PVByaXNtLmxhbmd1YWdlcy5weXRob24sUHJpc20ubGFuZ3VhZ2VzLnB5PVByaXNtLmxhbmd1YWdlcy5weXRob259LHt9XSwxMzpbZnVuY3Rpb24oZSxuLHQpeyFmdW5jdGlvbihlKXtlLmxhbmd1YWdlcy5ydWJ5PWUubGFuZ3VhZ2VzLmV4dGVuZCgiY2xpa2UiLHtjb21tZW50OlsvIy4qLyx7cGF0dGVybjovXj1iZWdpblxzW1xzXFNdKj9ePWVuZC9tLGdyZWVkeTohMH1dLCJjbGFzcy1uYW1lIjp7cGF0dGVybjovKFxiKD86Y2xhc3MpXHMrfFxiY2F0Y2hccytcKClbXHcuXFxdKy9pLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOntwdW5jdHVhdGlvbjovWy5cXF0vfX0sa2V5d29yZDovXGIoPzphbGlhc3xhbmR8QkVHSU58YmVnaW58YnJlYWt8Y2FzZXxjbGFzc3xkZWZ8ZGVmaW5lX21ldGhvZHxkZWZpbmVkfGRvfGVhY2h8ZWxzZXxlbHNpZnxFTkR8ZW5kfGVuc3VyZXxleHRlbmR8Zm9yfGlmfGlufGluY2x1ZGV8bW9kdWxlfG5ld3xuZXh0fG5pbHxub3R8b3J8cHJlcGVuZHxwcm90ZWN0ZWR8cHJpdmF0ZXxwdWJsaWN8cmFpc2V8cmVkb3xyZXF1aXJlfHJlc2N1ZXxyZXRyeXxyZXR1cm58c2VsZnxzdXBlcnx0aGVufHRocm93fHVuZGVmfHVubGVzc3x1bnRpbHx3aGVufHdoaWxlfHlpZWxkKVxiL30pO3ZhciBuPXtwYXR0ZXJuOi8jXHtbXn1dK1x9LyxpbnNpZGU6e2RlbGltaXRlcjp7cGF0dGVybjovXiNce3xcfSQvLGFsaWFzOiJ0YWcifSxyZXN0OmUubGFuZ3VhZ2VzLnJ1Ynl9fTtkZWxldGUgZS5sYW5ndWFnZXMucnVieVsiZnVuY3Rpb24iXSxlLmxhbmd1YWdlcy5pbnNlcnRCZWZvcmUoInJ1YnkiLCJrZXl3b3JkIix7cmVnZXg6W3twYXR0ZXJuOi8lcihbXmEtekEtWjAtOVxzeyhcWzxdKSg/Oig/IVwxKVteXFxdfFxcW1xzXFNdKSpcMVtnaW1dezAsM30vLGdyZWVkeTohMCxpbnNpZGU6e2ludGVycG9sYXRpb246bn19LHtwYXR0ZXJuOi8lclwoKD86W14oKVxcXXxcXFtcc1xTXSkqXClbZ2ltXXswLDN9LyxncmVlZHk6ITAsaW5zaWRlOntpbnRlcnBvbGF0aW9uOm59fSx7cGF0dGVybjovJXJceyg/OlteI3t9XFxdfCMoPzpce1tefV0rXH0pP3xcXFtcc1xTXSkqXH1bZ2ltXXswLDN9LyxncmVlZHk6ITAsaW5zaWRlOntpbnRlcnBvbGF0aW9uOm59fSx7cGF0dGVybjovJXJcWyg/OlteXFtcXVxcXXxcXFtcc1xTXSkqXF1bZ2ltXXswLDN9LyxncmVlZHk6ITAsaW5zaWRlOntpbnRlcnBvbGF0aW9uOm59fSx7cGF0dGVybjovJXI8KD86W148PlxcXXxcXFtcc1xTXSkqPltnaW1dezAsM30vLGdyZWVkeTohMCxpbnNpZGU6e2ludGVycG9sYXRpb246bn19LHtwYXR0ZXJuOi8oXnxbXi9dKVwvKD8hXC8pKD86XFsuKz9dfFxcLnxbXi9cXFxyXG5dKStcL1tnaW1dezAsM30oPz1ccyooPzokfFtcclxuLC47fSldKSkvLGxvb2tiZWhpbmQ6ITAsZ3JlZWR5OiEwfV0sdmFyaWFibGU6L1tAJF0rW2EtekEtWl9dXHcqKD86Wz8hXXxcYikvLHN5bWJvbDp7cGF0dGVybjovKF58W146XSk6W2EtekEtWl9dXHcqKD86Wz8hXXxcYikvLGxvb2tiZWhpbmQ6ITB9LCJtZXRob2QtZGVmaW5pdGlvbiI6e3BhdHRlcm46LyhcYmRlZlxzKylbXHcuXSsvLGxvb2tiZWhpbmQ6ITAsaW5zaWRlOnsiZnVuY3Rpb24iOi9cdyskLyxyZXN0OmUubGFuZ3VhZ2VzLnJ1Ynl9fX0pLGUubGFuZ3VhZ2VzLmluc2VydEJlZm9yZSgicnVieSIsIm51bWJlciIse2J1aWx0aW46L1xiKD86QXJyYXl8QmlnbnVtfEJpbmRpbmd8Q2xhc3N8Q29udGludWF0aW9ufERpcnxFeGNlcHRpb258RmFsc2VDbGFzc3xGaWxlfFN0YXR8Rml4bnVtfEZsb2F0fEhhc2h8SW50ZWdlcnxJT3xNYXRjaERhdGF8TWV0aG9kfE1vZHVsZXxOaWxDbGFzc3xOdW1lcmljfE9iamVjdHxQcm9jfFJhbmdlfFJlZ2V4cHxTdHJpbmd8U3RydWN0fFRNU3xTeW1ib2x8VGhyZWFkR3JvdXB8VGhyZWFkfFRpbWV8VHJ1ZUNsYXNzKVxiLyxjb25zdGFudDovXGJbQS1aXVx3Kig/Ols/IV18XGIpL30pLGUubGFuZ3VhZ2VzLnJ1Ynkuc3RyaW5nPVt7cGF0dGVybjovJVtxUWlJd1d4c10/KFteYS16QS1aMC05XHN7KFxbPF0pKD86KD8hXDEpW15cXF18XFxbXHNcU10pKlwxLyxncmVlZHk6ITAsaW5zaWRlOntpbnRlcnBvbGF0aW9uOm59fSx7cGF0dGVybjovJVtxUWlJd1d4c10/XCgoPzpbXigpXFxdfFxcW1xzXFNdKSpcKS8sZ3JlZWR5OiEwLGluc2lkZTp7aW50ZXJwb2xhdGlvbjpufX0se3BhdHRlcm46LyVbcVFpSXdXeHNdP1x7KD86W14je31cXF18Iyg/Olx7W159XStcfSk/fFxcW1xzXFNdKSpcfS8sZ3JlZWR5OiEwLGluc2lkZTp7aW50ZXJwb2xhdGlvbjpufX0se3BhdHRlcm46LyVbcVFpSXdXeHNdP1xbKD86W15cW1xdXFxdfFxcW1xzXFNdKSpcXS8sZ3JlZWR5OiEwLGluc2lkZTp7aW50ZXJwb2xhdGlvbjpufX0se3BhdHRlcm46LyVbcVFpSXdXeHNdPzwoPzpbXjw+XFxdfFxcW1xzXFNdKSo+LyxncmVlZHk6ITAsaW5zaWRlOntpbnRlcnBvbGF0aW9uOm59fSx7cGF0dGVybjovKCJ8JykoPzojXHtbXn1dK1x9fFxcKD86XHJcbnxbXHNcU10pfCg/IVwxKVteXFxcclxuXSkqXDEvLGdyZWVkeTohMCxpbnNpZGU6e2ludGVycG9sYXRpb246bn19XSxlLmxhbmd1YWdlcy5yYj1lLmxhbmd1YWdlcy5ydWJ5fShQcmlzbSl9LHt9XSwxNDpbZnVuY3Rpb24oZSxuLHQpe3ZhciBhPWUoInByaXNtanMvY29tcG9uZW50cy9wcmlzbS1jb3JlIik7ZSgicHJpc21qcy9jb21wb25lbnRzL3ByaXNtLWNsaWtlIiksZSgicHJpc21qcy9jb21wb25lbnRzL3ByaXNtLW1hcmt1cC10ZW1wbGF0aW5nIiksZSgicHJpc21qcy9jb21wb25lbnRzL3ByaXNtLWMiKSxlKCJwcmlzbWpzL2NvbXBvbmVudHMvcHJpc20tY3BwIiksZSgicHJpc21qcy9jb21wb25lbnRzL3ByaXNtLWNzaGFycCIpLGUoInByaXNtanMvY29tcG9uZW50cy9wcmlzbS1jc3MiKSxlKCJwcmlzbWpzL2NvbXBvbmVudHMvcHJpc20tamF2YSIpLGUoInByaXNtanMvY29tcG9uZW50cy9wcmlzbS1qYXZhc2NyaXB0IiksZSgicHJpc21qcy9jb21wb25lbnRzL3ByaXNtLW1hcmt1cCIpLGUoInByaXNtanMvY29tcG9uZW50cy9wcmlzbS1waHAiKSxlKCJwcmlzbWpzL2NvbXBvbmVudHMvcHJpc20tcHl0aG9uIiksZSgicHJpc21qcy9jb21wb25lbnRzL3ByaXNtLXJ1YnkiKSxuLmV4cG9ydHM9e2JvbHRFeHBvcnQ6YX19LHsicHJpc21qcy9jb21wb25lbnRzL3ByaXNtLWMiOjEsInByaXNtanMvY29tcG9uZW50cy9wcmlzbS1jbGlrZSI6MiwicHJpc21qcy9jb21wb25lbnRzL3ByaXNtLWNvcmUiOjMsInByaXNtanMvY29tcG9uZW50cy9wcmlzbS1jcHAiOjQsInByaXNtanMvY29tcG9uZW50cy9wcmlzbS1jc2hhcnAiOjUsInByaXNtanMvY29tcG9uZW50cy9wcmlzbS1jc3MiOjYsInByaXNtanMvY29tcG9uZW50cy9wcmlzbS1qYXZhIjo3LCJwcmlzbWpzL2NvbXBvbmVudHMvcHJpc20tamF2YXNjcmlwdCI6OCwicHJpc21qcy9jb21wb25lbnRzL3ByaXNtLW1hcmt1cCI6MTAsInByaXNtanMvY29tcG9uZW50cy9wcmlzbS1tYXJrdXAtdGVtcGxhdGluZyI6OSwicHJpc21qcy9jb21wb25lbnRzL3ByaXNtLXBocCI6MTEsInByaXNtanMvY29tcG9uZW50cy9wcmlzbS1weXRob24iOjEyLCJwcmlzbWpzL2NvbXBvbmVudHMvcHJpc20tcnVieSI6MTN9XX0se30sWzE0XSkoMTQpfSk7dmFyIHI9d2luZG93LlByaXNtO3dpbmRvdy5QcmlzbT1lfSh1bmRlZmluZWQsaCxiLHVuZGVmaW5lZCk7dmFyIHc9Yi5leHBvcnRzLmJvbHRFeHBvcnQsdj1mdW5jdGlvbihlKXtyZXR1cm4gZi5QcmlzbSYmZS5nZXRQYXJhbSgiY29kZXNhbXBsZV9nbG9iYWxfcHJpc21qcyIsITEsImJvb2xlYW4iKT9mLlByaXNtOnd9LGs9ZnVuY3Rpb24oZSl7dmFyIG49ZS5zZWxlY3Rpb24/ZS5zZWxlY3Rpb24uZ2V0Tm9kZSgpOm51bGw7cmV0dXJuIGcobik/ZC5zb21lKG4pOmQubm9uZSgpfSx4PWZ1bmN0aW9uKGkpe3ZhciBlLHQsbj1pLmdldFBhcmFtKCJjb2Rlc2FtcGxlX2xhbmd1YWdlcyIpfHxbe3RleHQ6IkhUTUwvWE1MIix2YWx1ZToibWFya3VwIn0se3RleHQ6IkphdmFTY3JpcHQiLHZhbHVlOiJqYXZhc2NyaXB0In0se3RleHQ6IkNTUyIsdmFsdWU6ImNzcyJ9LHt0ZXh0OiJQSFAiLHZhbHVlOiJwaHAifSx7dGV4dDoiUnVieSIsdmFsdWU6InJ1YnkifSx7dGV4dDoiUHl0aG9uIix2YWx1ZToicHl0aG9uIn0se3RleHQ6IkphdmEiLHZhbHVlOiJqYXZhIn0se3RleHQ6IkMiLHZhbHVlOiJjIn0se3RleHQ6IkMjIix2YWx1ZToiY3NoYXJwIn0se3RleHQ6IkMrKyIsdmFsdWU6ImNwcCJ9XSxhPSgwPT09KGU9bikubGVuZ3RoP2Qubm9uZSgpOmQuc29tZShlWzBdKSkuZm9sZChmdW5jdGlvbigpe3JldHVybiIifSxmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZX0pLHI9KHQ9YSxrKGkpLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm4gdH0sZnVuY3Rpb24oZSl7dmFyIG49ZS5jbGFzc05hbWUubWF0Y2goL2xhbmd1YWdlLShcdyspLyk7cmV0dXJuIG4/blsxXTp0fSkpLHM9ayhpKS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIiJ9LGZ1bmN0aW9uKGUpe3JldHVybiBlLnRleHRDb250ZW50fSk7aS53aW5kb3dNYW5hZ2VyLm9wZW4oe3RpdGxlOiJJbnNlcnQvRWRpdCBDb2RlIFNhbXBsZSIsc2l6ZToibGFyZ2UiLGJvZHk6e3R5cGU6InBhbmVsIixpdGVtczpbe3R5cGU6InNlbGVjdGJveCIsbmFtZToibGFuZ3VhZ2UiLGxhYmVsOiJMYW5ndWFnZSIsaXRlbXM6bn0se3R5cGU6InRleHRhcmVhIixuYW1lOiJjb2RlIixsYWJlbDoiQ29kZSB2aWV3In1dfSxidXR0b25zOlt7dHlwZToiY2FuY2VsIixuYW1lOiJjYW5jZWwiLHRleHQ6IkNhbmNlbCJ9LHt0eXBlOiJzdWJtaXQiLG5hbWU6InNhdmUiLHRleHQ6IlNhdmUiLHByaW1hcnk6ITB9XSxpbml0aWFsRGF0YTp7bGFuZ3VhZ2U6cixjb2RlOnN9LG9uU3VibWl0OmZ1bmN0aW9uKGUpe3ZhciBuLHQsYSxyPWUuZ2V0RGF0YSgpO249aSx0PXIubGFuZ3VhZ2UsYT1yLmNvZGUsbi51bmRvTWFuYWdlci50cmFuc2FjdChmdW5jdGlvbigpe3ZhciBlPWsobik7cmV0dXJuIGE9cC5ET00uZW5jb2RlKGEpLGUuZm9sZChmdW5jdGlvbigpe24uaW5zZXJ0Q29udGVudCgnPHByZSBpZD0iX19uZXciIGNsYXNzPSJsYW5ndWFnZS0nK3QrJyI+JythKyI8L3ByZT4iKSxuLnNlbGVjdGlvbi5zZWxlY3Qobi4kKCIjX19uZXciKS5yZW1vdmVBdHRyKCJpZCIpWzBdKX0sZnVuY3Rpb24oZSl7bi5kb20uc2V0QXR0cmliKGUsImNsYXNzIiwibGFuZ3VhZ2UtIit0KSxlLmlubmVySFRNTD1hLHYobikuaGlnaGxpZ2h0RWxlbWVudChlKSxuLnNlbGVjdGlvbi5zZWxlY3QoZSl9KX0pLGUuY2xvc2UoKX19KX0sXz1mdW5jdGlvbihhKXthLnVpLnJlZ2lzdHJ5LmFkZFRvZ2dsZUJ1dHRvbigiY29kZXNhbXBsZSIse2ljb246ImNvZGUtc2FtcGxlIix0b29sdGlwOiJJbnNlcnQvZWRpdCBjb2RlIHNhbXBsZSIsb25BY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4geChhKX0sb25TZXR1cDpmdW5jdGlvbih0KXt2YXIgZT1mdW5jdGlvbigpe3ZhciBlLG47dC5zZXRBY3RpdmUoKG49KGU9YSkuc2VsZWN0aW9uLmdldFN0YXJ0KCksZS5kb20uaXMobiwncHJlW2NsYXNzKj0ibGFuZ3VhZ2UtIl0nKSkpfTtyZXR1cm4gYS5vbigiTm9kZUNoYW5nZSIsZSksZnVuY3Rpb24oKXtyZXR1cm4gYS5vZmYoIk5vZGVDaGFuZ2UiLGUpfX19KSxhLnVpLnJlZ2lzdHJ5LmFkZE1lbnVJdGVtKCJjb2Rlc2FtcGxlIix7dGV4dDoiQ29kZSBzYW1wbGUuLi4iLGljb246ImNvZGUtc2FtcGxlIixvbkFjdGlvbjpmdW5jdGlvbigpe3JldHVybiB4KGEpfX0pfTshZnVuY3Rpb24gRigpe3IuYWRkKCJjb2Rlc2FtcGxlIixmdW5jdGlvbihuKXt2YXIgdCxyLGE7cj0odD1uKS4kLHQub24oIlByZVByb2Nlc3MiLGZ1bmN0aW9uKGUpe3IoInByZVtjb250ZW50ZWRpdGFibGU9ZmFsc2VdIixlLm5vZGUpLmZpbHRlcihtKGcpKS5lYWNoKGZ1bmN0aW9uKGUsbil7dmFyIHQ9cihuKSxhPW4udGV4dENvbnRlbnQ7dC5hdHRyKCJjbGFzcyIsci50cmltKHQuYXR0cigiY2xhc3MiKSkpLHQucmVtb3ZlQXR0cigiY29udGVudEVkaXRhYmxlIiksdC5lbXB0eSgpLmFwcGVuZChyKCI8Y29kZT48L2NvZGU+IikuZWFjaChmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9YX0pKX0pfSksdC5vbigiU2V0Q29udGVudCIsZnVuY3Rpb24oKXt2YXIgZT1yKCJwcmUiKS5maWx0ZXIobShnKSkuZmlsdGVyKGZ1bmN0aW9uKGUsbil7cmV0dXJuImZhbHNlIiE9PW4uY29udGVudEVkaXRhYmxlfSk7ZS5sZW5ndGgmJnQudW5kb01hbmFnZXIudHJhbnNhY3QoZnVuY3Rpb24oKXtlLmVhY2goZnVuY3Rpb24oZSxuKXtyKG4pLmZpbmQoImJyIikuZWFjaChmdW5jdGlvbihlLG4pe24ucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQodC5nZXREb2MoKS5jcmVhdGVUZXh0Tm9kZSgiXG4iKSxuKX0pLG4uY29udGVudEVkaXRhYmxlPSJmYWxzZSIsbi5pbm5lckhUTUw9dC5kb20uZW5jb2RlKG4udGV4dENvbnRlbnQpLHYodCkuaGlnaGxpZ2h0RWxlbWVudChuKSxuLmNsYXNzTmFtZT1yLnRyaW0obi5jbGFzc05hbWUpfSl9KX0pLF8obiksKGE9bikuYWRkQ29tbWFuZCgiY29kZXNhbXBsZSIsZnVuY3Rpb24oKXt2YXIgZT1hLnNlbGVjdGlvbi5nZXROb2RlKCk7YS5zZWxlY3Rpb24uaXNDb2xsYXBzZWQoKXx8ZyhlKT94KGEpOmEuZm9ybWF0dGVyLnRvZ2dsZSgiY29kZSIpfSksbi5vbigiZGJsY2xpY2siLGZ1bmN0aW9uKGUpe2coZS50YXJnZXQpJiZ4KG4pfSl9KX0oKX0od2luZG93KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/colorpicker/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/colorpicker/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24obyl7InVzZSBzdHJpY3QiO3ZhciBpPXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLlBsdWdpbk1hbmFnZXIiKTshZnVuY3Rpb24gbigpe2kuYWRkKCJjb2xvcnBpY2tlciIsZnVuY3Rpb24oKXtvLmNvbnNvbGUud2FybigiQ29sb3IgcGlja2VyIHBsdWdpbiBpcyBub3cgYnVpbHQgaW4gdG8gdGhlIGNvcmUgZWRpdG9yLCBwbGVhc2UgcmVtb3ZlIGl0IGZyb20geW91ciBlZGl0b3IgY29uZmlndXJhdGlvbiIpfSl9KCl9KHdpbmRvdyk7]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/contextmenu/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/contextmenu/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24obil7InVzZSBzdHJpY3QiO3ZhciBvPXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLlBsdWdpbk1hbmFnZXIiKTshZnVuY3Rpb24gZSgpe28uYWRkKCJjb250ZXh0bWVudSIsZnVuY3Rpb24oKXtuLmNvbnNvbGUud2FybigiQ29udGV4dCBtZW51IHBsdWdpbiBpcyBub3cgYnVpbHQgaW4gdG8gdGhlIGNvcmUgZWRpdG9yLCBwbGVhc2UgcmVtb3ZlIGl0IGZyb20geW91ciBlZGl0b3IgY29uZmlndXJhdGlvbiIpfSl9KCl9KHdpbmRvdyk7]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/directionality/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/directionality/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24odSl7InVzZSBzdHJpY3QiO3ZhciBuLHQsZSxyLG8saT10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS5QbHVnaW5NYW5hZ2VyIiksYz10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS51dGlsLlRvb2xzIiksbD1mdW5jdGlvbihuLHQpe3ZhciBlLHI9bi5kb20sbz1uLnNlbGVjdGlvbi5nZXRTZWxlY3RlZEJsb2NrcygpO28ubGVuZ3RoJiYoZT1yLmdldEF0dHJpYihvWzBdLCJkaXIiKSxjLmVhY2gobyxmdW5jdGlvbihuKXtyLmdldFBhcmVudChuLnBhcmVudE5vZGUsJypbZGlyPSInK3QrJyJdJyxyLmdldFJvb3QoKSl8fHIuc2V0QXR0cmliKG4sImRpciIsZSE9PXQ/dDpudWxsKX0pLG4ubm9kZUNoYW5nZWQoKSl9LGQ9ZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG59fSxmPWQoITEpLGE9ZCghMCksbT1mdW5jdGlvbigpe3JldHVybiBzfSxzPShuPWZ1bmN0aW9uKG4pe3JldHVybiBuLmlzTm9uZSgpfSx7Zm9sZDpmdW5jdGlvbihuLHQpe3JldHVybiBuKCl9LGlzOmYsaXNTb21lOmYsaXNOb25lOmEsZ2V0T3I6ZT1mdW5jdGlvbihuKXtyZXR1cm4gbn0sZ2V0T3JUaHVuazp0PWZ1bmN0aW9uKG4pe3JldHVybiBuKCl9LGdldE9yRGllOmZ1bmN0aW9uKG4pe3Rocm93IG5ldyBFcnJvcihufHwiZXJyb3I6IGdldE9yRGllIGNhbGxlZCBvbiBub25lLiIpfSxnZXRPck51bGw6ZChudWxsKSxnZXRPclVuZGVmaW5lZDpkKHVuZGVmaW5lZCksb3I6ZSxvclRodW5rOnQsbWFwOm0sZWFjaDpmdW5jdGlvbigpe30sYmluZDptLGV4aXN0czpmLGZvcmFsbDphLGZpbHRlcjptLGVxdWFsczpuLGVxdWFsc186bix0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuW119LHRvU3RyaW5nOmQoIm5vbmUoKSIpfSksZz1mdW5jdGlvbihlKXt2YXIgbj1kKGUpLHQ9ZnVuY3Rpb24oKXtyZXR1cm4gb30scj1mdW5jdGlvbihuKXtyZXR1cm4gbihlKX0sbz17Zm9sZDpmdW5jdGlvbihuLHQpe3JldHVybiB0KGUpfSxpczpmdW5jdGlvbihuKXtyZXR1cm4gZT09PW59LGlzU29tZTphLGlzTm9uZTpmLGdldE9yOm4sZ2V0T3JUaHVuazpuLGdldE9yRGllOm4sZ2V0T3JOdWxsOm4sZ2V0T3JVbmRlZmluZWQ6bixvcjp0LG9yVGh1bms6dCxtYXA6ZnVuY3Rpb24obil7cmV0dXJuIGcobihlKSl9LGVhY2g6ZnVuY3Rpb24obil7bihlKX0sYmluZDpyLGV4aXN0czpyLGZvcmFsbDpyLGZpbHRlcjpmdW5jdGlvbihuKXtyZXR1cm4gbihlKT9vOnN9LHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm5bZV19LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuInNvbWUoIitlKyIpIn0sZXF1YWxzOmZ1bmN0aW9uKG4pe3JldHVybiBuLmlzKGUpfSxlcXVhbHNfOmZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4uZm9sZChmLGZ1bmN0aW9uKG4pe3JldHVybiB0KGUsbil9KX19O3JldHVybiBvfSxoPWZ1bmN0aW9uKG4pe3JldHVybiBudWxsPT09bnx8bj09PXVuZGVmaW5lZD9zOmcobil9LHk9ZnVuY3Rpb24obil7aWYobnVsbD09PW58fG49PT11bmRlZmluZWQpdGhyb3cgbmV3IEVycm9yKCJOb2RlIGNhbm5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpO3JldHVybntkb206ZChuKX19LFQ9e2Zyb21IdG1sOmZ1bmN0aW9uKG4sdCl7dmFyIGU9KHR8fHUuZG9jdW1lbnQpLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2lmKGUuaW5uZXJIVE1MPW4sIWUuaGFzQ2hpbGROb2RlcygpfHwxPGUuY2hpbGROb2Rlcy5sZW5ndGgpdGhyb3cgdS5jb25zb2xlLmVycm9yKCJIVE1MIGRvZXMgbm90IGhhdmUgYSBzaW5nbGUgcm9vdCBub2RlIixuKSxuZXcgRXJyb3IoIkhUTUwgbXVzdCBoYXZlIGEgc2luZ2xlIHJvb3Qgbm9kZSIpO3JldHVybiB5KGUuY2hpbGROb2Rlc1swXSl9LGZyb21UYWc6ZnVuY3Rpb24obix0KXt2YXIgZT0odHx8dS5kb2N1bWVudCkuY3JlYXRlRWxlbWVudChuKTtyZXR1cm4geShlKX0sZnJvbVRleHQ6ZnVuY3Rpb24obix0KXt2YXIgZT0odHx8dS5kb2N1bWVudCkuY3JlYXRlVGV4dE5vZGUobik7cmV0dXJuIHkoZSl9LGZyb21Eb206eSxmcm9tUG9pbnQ6ZnVuY3Rpb24obix0LGUpe3ZhciByPW4uZG9tKCk7cmV0dXJuIGgoci5lbGVtZW50RnJvbVBvaW50KHQsZSkpLm1hcCh5KX19LHY9KHI9ImZ1bmN0aW9uIixmdW5jdGlvbihuKXtyZXR1cm4gdHlwZW9mIG49PT1yfSkscD0oInVuZGVmaW5lZCIhPXR5cGVvZiB1LndpbmRvdz91LndpbmRvdzpGdW5jdGlvbigicmV0dXJuIHRoaXM7IikoKSxvPTMsZnVuY3Rpb24obil7cmV0dXJuIG4uZG9tKCkubm9kZVR5cGU9PT1vfSksdz1mdW5jdGlvbihuLHQpe3ZhciBlLHIsbz1uLmRvbSgpLGk9dS53aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShvKS5nZXRQcm9wZXJ0eVZhbHVlKHQpO3JldHVybiIiIT09aXx8KHI9cChlPW4pP2UuZG9tKCkucGFyZW50Tm9kZTplLmRvbSgpKSE9PXVuZGVmaW5lZCYmbnVsbCE9PXImJnIub3duZXJEb2N1bWVudC5ib2R5LmNvbnRhaW5zKHIpP2k6TihvLHQpfSxOPWZ1bmN0aW9uKG4sdCl7cmV0dXJuKGU9bikuc3R5bGUhPT11bmRlZmluZWQmJnYoZS5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKT9uLnN0eWxlLmdldFByb3BlcnR5VmFsdWUodCk6IiI7dmFyIGV9LE89ZnVuY3Rpb24odCxyKXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIG49ZnVuY3Rpb24obil7dmFyIHQ9VC5mcm9tRG9tKG4uZWxlbWVudCk7ZS5zZXRBY3RpdmUoKCJydGwiPT09dyh0LCJkaXJlY3Rpb24iKT8icnRsIjoibHRyIik9PT1yKX07cmV0dXJuIHQub24oIk5vZGVDaGFuZ2UiLG4pLGZ1bmN0aW9uKCl7cmV0dXJuIHQub2ZmKCJOb2RlQ2hhbmdlIixuKX19fTshZnVuY3Rpb24gRCgpe2kuYWRkKCJkaXJlY3Rpb25hbGl0eSIsZnVuY3Rpb24obil7dmFyIHQsZTsodD1uKS5hZGRDb21tYW5kKCJtY2VEaXJlY3Rpb25MVFIiLGZ1bmN0aW9uKCl7bCh0LCJsdHIiKX0pLHQuYWRkQ29tbWFuZCgibWNlRGlyZWN0aW9uUlRMIixmdW5jdGlvbigpe2wodCwicnRsIil9KSwoZT1uKS51aS5yZWdpc3RyeS5hZGRUb2dnbGVCdXR0b24oImx0ciIse3Rvb2x0aXA6IkxlZnQgdG8gcmlnaHQiLGljb246Imx0ciIsb25BY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gZS5leGVjQ29tbWFuZCgibWNlRGlyZWN0aW9uTFRSIil9LG9uU2V0dXA6TyhlLCJsdHIiKX0pLGUudWkucmVnaXN0cnkuYWRkVG9nZ2xlQnV0dG9uKCJydGwiLHt0b29sdGlwOiJSaWdodCB0byBsZWZ0IixpY29uOiJydGwiLG9uQWN0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIGUuZXhlY0NvbW1hbmQoIm1jZURpcmVjdGlvblJUTCIpfSxvblNldHVwOk8oZSwicnRsIil9KX0pfSgpfSh3aW5kb3cpOw==]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/emoticons/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/emoticons/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/emoticons/js/emojis.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gTk9URTogU291cmNlOiBucG0gcGFja2FnZTogZW1vamlsaWIsIGZpbGU6ZW1vamlzLmpzb24Kd2luZG93LnRpbnltY2UuUmVzb3VyY2UuYWRkKCJ0aW55bWNlLnBsdWdpbnMuZW1vdGljb25zIiwgewogIGdyaW5uaW5nOiB7CiAgICBrZXl3b3JkczogWyAiZmFjZSIsICJzbWlsZSIsICJoYXBweSIsICJqb3kiLCAiOkQiLCAiZ3JpbiIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGUwMCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIGdyaW1hY2luZzogewogICAga2V5d29yZHM6IFsgImZhY2UiLCAiZ3JpbWFjZSIsICJ0ZWV0aCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGUyYyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIGdyaW46IHsKICAgIGtleXdvcmRzOiBbICJmYWNlIiwgImhhcHB5IiwgInNtaWxlIiwgImpveSIsICJrYXdhaWkiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlMDEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBqb3k6IHsKICAgIGtleXdvcmRzOiBbICJmYWNlIiwgImNyeSIsICJ0ZWFycyIsICJ3ZWVwIiwgImhhcHB5IiwgImhhcHB5dGVhcnMiLCAiaGFoYSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGUwMiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIHJvZmw6IHsKICAgIGtleXdvcmRzOiBbICJmYWNlIiwgInJvbGxpbmciLCAiZmxvb3IiLCAibGF1Z2hpbmciLCAibG9sIiwgImhhaGEiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkMjMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBzbWlsZXk6IHsKICAgIGtleXdvcmRzOiBbICJmYWNlIiwgImhhcHB5IiwgImpveSIsICJoYWhhIiwgIjpEIiwgIjopIiwgInNtaWxlIiwgImZ1bm55IiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZTAzIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgc21pbGU6IHsKICAgIGtleXdvcmRzOiBbICJmYWNlIiwgImhhcHB5IiwgImpveSIsICJmdW5ueSIsICJoYWhhIiwgImxhdWdoIiwgImxpa2UiLCAiOkQiLCAiOikiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlMDQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBzd2VhdF9zbWlsZTogewogICAga2V5d29yZHM6IFsgImZhY2UiLCAiaG90IiwgImhhcHB5IiwgImxhdWdoIiwgInN3ZWF0IiwgInNtaWxlIiwgInJlbGllZiIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGUwNSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIGxhdWdoaW5nOiB7CiAgICBrZXl3b3JkczogWyAiaGFwcHkiLCAiam95IiwgImxvbCIsICJzYXRpc2ZpZWQiLCAiaGFoYSIsICJmYWNlIiwgImdsYWQiLCAiWEQiLCAibGF1Z2giIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlMDYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBpbm5vY2VudDogewogICAga2V5d29yZHM6IFsgImZhY2UiLCAiYW5nZWwiLCAiaGVhdmVuIiwgImhhbG8iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlMDciLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICB3aW5rOiB7CiAgICBrZXl3b3JkczogWyAiZmFjZSIsICJoYXBweSIsICJtaXNjaGlldm91cyIsICJzZWNyZXQiLCAiOykiLCAic21pbGUiLCAiZXllIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZTA5IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgYmx1c2g6IHsKICAgIGtleXdvcmRzOiBbICJmYWNlIiwgInNtaWxlIiwgImhhcHB5IiwgImZsdXNoZWQiLCAiY3J1c2giLCAiZW1iYXJyYXNzZWQiLCAic2h5IiwgImpveSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGUwYSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIHNsaWdodGx5X3NtaWxpbmdfZmFjZTogewogICAga2V5d29yZHM6IFsgImZhY2UiLCAic21pbGUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlNDIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICB1cHNpZGVfZG93bl9mYWNlOiB7CiAgICBrZXl3b3JkczogWyAiZmFjZSIsICJmbGlwcGVkIiwgInNpbGx5IiwgInNtaWxlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZTQzIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgcmVsYXhlZDogewogICAga2V5d29yZHM6IFsgImZhY2UiLCAiYmx1c2giLCAibWFzc2FnZSIsICJoYXBwaW5lc3MiIF0sCiAgICAiY2hhciI6ICJcdTI2M2FcdWZlMGYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICB5dW06IHsKICAgIGtleXdvcmRzOiBbICJoYXBweSIsICJqb3kiLCAidG9uZ3VlIiwgInNtaWxlIiwgImZhY2UiLCAic2lsbHkiLCAieXVtbXkiLCAibm9tIiwgImRlbGljaW91cyIsICJzYXZvdXJpbmciIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlMGIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICByZWxpZXZlZDogewogICAga2V5d29yZHM6IFsgImZhY2UiLCAicmVsYXhlZCIsICJwaGV3IiwgIm1hc3NhZ2UiLCAiaGFwcGluZXNzIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZTBjIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgaGVhcnRfZXllczogewogICAga2V5d29yZHM6IFsgImZhY2UiLCAibG92ZSIsICJsaWtlIiwgImFmZmVjdGlvbiIsICJ2YWxlbnRpbmVzIiwgImluZmF0dWF0aW9uIiwgImNydXNoIiwgImhlYXJ0IiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZTBkIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAga2lzc2luZ19oZWFydDogewogICAga2V5d29yZHM6IFsgImZhY2UiLCAibG92ZSIsICJsaWtlIiwgImFmZmVjdGlvbiIsICJ2YWxlbnRpbmVzIiwgImluZmF0dWF0aW9uIiwgImtpc3MiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlMTgiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBraXNzaW5nOiB7CiAgICBrZXl3b3JkczogWyAibG92ZSIsICJsaWtlIiwgImZhY2UiLCAiMyIsICJ2YWxlbnRpbmVzIiwgImluZmF0dWF0aW9uIiwgImtpc3MiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlMTciLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBraXNzaW5nX3NtaWxpbmdfZXllczogewogICAga2V5d29yZHM6IFsgImZhY2UiLCAiYWZmZWN0aW9uIiwgInZhbGVudGluZXMiLCAiaW5mYXR1YXRpb24iLCAia2lzcyIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGUxOSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIGtpc3NpbmdfY2xvc2VkX2V5ZXM6IHsKICAgIGtleXdvcmRzOiBbICJmYWNlIiwgImxvdmUiLCAibGlrZSIsICJhZmZlY3Rpb24iLCAidmFsZW50aW5lcyIsICJpbmZhdHVhdGlvbiIsICJraXNzIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZTFhIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgc3R1Y2tfb3V0X3Rvbmd1ZV93aW5raW5nX2V5ZTogewogICAga2V5d29yZHM6IFsgImZhY2UiLCAicHJhbmsiLCAiY2hpbGRpc2giLCAicGxheWZ1bCIsICJtaXNjaGlldm91cyIsICJzbWlsZSIsICJ3aW5rIiwgInRvbmd1ZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGUxYyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIHphbnk6IHsKICAgIGtleXdvcmRzOiBbICJmYWNlIiwgImdvb2Z5IiwgImNyYXp5IiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDJhIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgcmFpc2VkX2V5ZWJyb3c6IHsKICAgIGtleXdvcmRzOiBbICJmYWNlIiwgImRpc3RydXN0IiwgInNjZXB0aWNpc20iLCAiZGlzYXBwcm92YWwiLCAiZGlzYmVsaWVmIiwgInN1cnByaXNlIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDI4IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgbW9ub2NsZTogewogICAga2V5d29yZHM6IFsgImZhY2UiLCAic3R1ZmZ5IiwgIndlYWx0aHkiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkZDAiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBzdHVja19vdXRfdG9uZ3VlX2Nsb3NlZF9leWVzOiB7CiAgICBrZXl3b3JkczogWyAiZmFjZSIsICJwcmFuayIsICJwbGF5ZnVsIiwgIm1pc2NoaWV2b3VzIiwgInNtaWxlIiwgInRvbmd1ZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGUxZCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIHN0dWNrX291dF90b25ndWU6IHsKICAgIGtleXdvcmRzOiBbICJmYWNlIiwgInByYW5rIiwgImNoaWxkaXNoIiwgInBsYXlmdWwiLCAibWlzY2hpZXZvdXMiLCAic21pbGUiLCAidG9uZ3VlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZTFiIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgbW9uZXlfbW91dGhfZmFjZTogewogICAga2V5d29yZHM6IFsgImZhY2UiLCAicmljaCIsICJkb2xsYXIiLCAibW9uZXkiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkMTEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBuZXJkX2ZhY2U6IHsKICAgIGtleXdvcmRzOiBbICJmYWNlIiwgIm5lcmR5IiwgImdlZWsiLCAiZG9yayIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGQxMyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIHN1bmdsYXNzZXM6IHsKICAgIGtleXdvcmRzOiBbICJmYWNlIiwgImNvb2wiLCAic21pbGUiLCAic3VtbWVyIiwgImJlYWNoIiwgInN1bmdsYXNzIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZTBlIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgc3Rhcl9zdHJ1Y2s6IHsKICAgIGtleXdvcmRzOiBbICJmYWNlIiwgInNtaWxlIiwgInN0YXJyeSIsICJleWVzIiwgImdyaW5uaW5nIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDI5IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgY2xvd25fZmFjZTogewogICAga2V5d29yZHM6IFsgImZhY2UiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkMjEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBjb3dib3lfaGF0X2ZhY2U6IHsKICAgIGtleXdvcmRzOiBbICJmYWNlIiwgImNvd2dpcmwiLCAiaGF0IiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDIwIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgaHVnczogewogICAga2V5d29yZHM6IFsgImZhY2UiLCAic21pbGUiLCAiaHVnIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDE3IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgc21pcms6IHsKICAgIGtleXdvcmRzOiBbICJmYWNlIiwgInNtaWxlIiwgIm1lYW4iLCAicHJhbmsiLCAic211ZyIsICJzYXJjYXNtIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZTBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgbm9fbW91dGg6IHsKICAgIGtleXdvcmRzOiBbICJmYWNlIiwgImhlbGxva2l0dHkiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlMzYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBuZXV0cmFsX2ZhY2U6IHsKICAgIGtleXdvcmRzOiBbICJpbmRpZmZlcmVuY2UiLCAibWVoIiwgIjp8IiwgIm5ldXRyYWwiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlMTAiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBleHByZXNzaW9ubGVzczogewogICAga2V5d29yZHM6IFsgImZhY2UiLCAiaW5kaWZmZXJlbnQiLCAiLV8tIiwgIm1laCIsICJkZWFkcGFuIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZTExIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgdW5hbXVzZWQ6IHsKICAgIGtleXdvcmRzOiBbICJpbmRpZmZlcmVuY2UiLCAiYm9yZWQiLCAic3RyYWlnaHQgZmFjZSIsICJzZXJpb3VzIiwgInNhcmNhc20iLCAidW5pbXByZXNzZWQiLCAic2tlcHRpY2FsIiwgImR1YmlvdXMiLCAic2lkZV9leWUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlMTIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICByb2xsX2V5ZXM6IHsKICAgIGtleXdvcmRzOiBbICJmYWNlIiwgImV5ZXJvbGwiLCAiZnJ1c3RyYXRlZCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGU0NCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIHRoaW5raW5nOiB7CiAgICBrZXl3b3JkczogWyAiZmFjZSIsICJobW1tIiwgInRoaW5rIiwgImNvbnNpZGVyIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDE0IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgbHlpbmdfZmFjZTogewogICAga2V5d29yZHM6IFsgImZhY2UiLCAibGllIiwgInBpbm9jY2hpbyIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGQyNSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIGhhbmRfb3Zlcl9tb3V0aDogewogICAga2V5d29yZHM6IFsgImZhY2UiLCAid2hvb3BzIiwgInNob2NrIiwgInN1cnByaXNlIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDJkIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgc2h1c2hpbmc6IHsKICAgIGtleXdvcmRzOiBbICJmYWNlIiwgInF1aWV0IiwgInNoaGgiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkMmIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBzeW1ib2xzX292ZXJfbW91dGg6IHsKICAgIGtleXdvcmRzOiBbICJmYWNlIiwgInN3ZWFyaW5nIiwgImN1cnNpbmciLCAiY3Vzc2luZyIsICJwcm9mYW5pdHkiLCAiZXhwbGV0aXZlIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDJjIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgZXhwbG9kaW5nX2hlYWQ6IHsKICAgIGtleXdvcmRzOiBbICJmYWNlIiwgInNob2NrZWQiLCAibWluZCIsICJibG93biIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGQyZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIGZsdXNoZWQ6IHsKICAgIGtleXdvcmRzOiBbICJmYWNlIiwgImJsdXNoIiwgInNoeSIsICJmbGF0dGVyZWQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlMzMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBkaXNhcHBvaW50ZWQ6IHsKICAgIGtleXdvcmRzOiBbICJmYWNlIiwgInNhZCIsICJ1cHNldCIsICJkZXByZXNzZWQiLCAiOigiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlMWUiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICB3b3JyaWVkOiB7CiAgICBrZXl3b3JkczogWyAiZmFjZSIsICJjb25jZXJuIiwgIm5lcnZvdXMiLCAiOigiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlMWYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBhbmdyeTogewogICAga2V5d29yZHM6IFsgIm1hZCIsICJmYWNlIiwgImFubm95ZWQiLCAiZnJ1c3RyYXRlZCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGUyMCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIHJhZ2U6IHsKICAgIGtleXdvcmRzOiBbICJhbmdyeSIsICJtYWQiLCAiaGF0ZSIsICJkZXNwaXNlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZTIxIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgcGVuc2l2ZTogewogICAga2V5d29yZHM6IFsgImZhY2UiLCAic2FkIiwgImRlcHJlc3NlZCIsICJ1cHNldCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGUxNCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIGNvbmZ1c2VkOiB7CiAgICBrZXl3b3JkczogWyAiZmFjZSIsICJpbmRpZmZlcmVuY2UiLCAiaHVoIiwgIndlaXJkIiwgImhtbW0iLCAiOi8iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlMTUiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBzbGlnaHRseV9mcm93bmluZ19mYWNlOiB7CiAgICBrZXl3b3JkczogWyAiZmFjZSIsICJmcm93bmluZyIsICJkaXNhcHBvaW50ZWQiLCAic2FkIiwgInVwc2V0IiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZTQxIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgZnJvd25pbmdfZmFjZTogewogICAga2V5d29yZHM6IFsgImZhY2UiLCAic2FkIiwgInVwc2V0IiwgImZyb3duIiBdLAogICAgImNoYXIiOiAiXHUyNjM5IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgcGVyc2V2ZXJlOiB7CiAgICBrZXl3b3JkczogWyAiZmFjZSIsICJzaWNrIiwgIm5vIiwgInVwc2V0IiwgIm9vcHMiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlMjMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBjb25mb3VuZGVkOiB7CiAgICBrZXl3b3JkczogWyAiZmFjZSIsICJjb25mdXNlZCIsICJzaWNrIiwgInVud2VsbCIsICJvb3BzIiwgIjpTIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZTE2IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgdGlyZWRfZmFjZTogewogICAga2V5d29yZHM6IFsgInNpY2siLCAid2hpbmUiLCAidXBzZXQiLCAiZnJ1c3RyYXRlZCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGUyYiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIHdlYXJ5OiB7CiAgICBrZXl3b3JkczogWyAiZmFjZSIsICJ0aXJlZCIsICJzbGVlcHkiLCAic2FkIiwgImZydXN0cmF0ZWQiLCAidXBzZXQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlMjkiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICB0cml1bXBoOiB7CiAgICBrZXl3b3JkczogWyAiZmFjZSIsICJnYXMiLCAicGhldyIsICJwcm91ZCIsICJwcmlkZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGUyNCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIG9wZW5fbW91dGg6IHsKICAgIGtleXdvcmRzOiBbICJmYWNlIiwgInN1cnByaXNlIiwgImltcHJlc3NlZCIsICJ3b3ciLCAid2hvYSIsICI6TyIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGUyZSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIHNjcmVhbTogewogICAga2V5d29yZHM6IFsgImZhY2UiLCAibXVuY2giLCAic2NhcmVkIiwgIm9tZyIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGUzMSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIGZlYXJmdWw6IHsKICAgIGtleXdvcmRzOiBbICJmYWNlIiwgInNjYXJlZCIsICJ0ZXJyaWZpZWQiLCAibmVydm91cyIsICJvb3BzIiwgImh1aCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGUyOCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIGNvbGRfc3dlYXQ6IHsKICAgIGtleXdvcmRzOiBbICJmYWNlIiwgIm5lcnZvdXMiLCAic3dlYXQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlMzAiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBodXNoZWQ6IHsKICAgIGtleXdvcmRzOiBbICJmYWNlIiwgIndvbyIsICJzaGgiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlMmYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBmcm93bmluZzogewogICAga2V5d29yZHM6IFsgImZhY2UiLCAiYXciLCAid2hhdCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGUyNiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIGFuZ3Vpc2hlZDogewogICAga2V5d29yZHM6IFsgImZhY2UiLCAic3R1bm5lZCIsICJuZXJ2b3VzIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZTI3IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgY3J5OiB7CiAgICBrZXl3b3JkczogWyAiZmFjZSIsICJ0ZWFycyIsICJzYWQiLCAiZGVwcmVzc2VkIiwgInVwc2V0IiwgIjonKCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGUyMiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIGRpc2FwcG9pbnRlZF9yZWxpZXZlZDogewogICAga2V5d29yZHM6IFsgImZhY2UiLCAicGhldyIsICJzd2VhdCIsICJuZXJ2b3VzIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZTI1IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgZHJvb2xpbmdfZmFjZTogewogICAga2V5d29yZHM6IFsgImZhY2UiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkMjQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBzbGVlcHk6IHsKICAgIGtleXdvcmRzOiBbICJmYWNlIiwgInRpcmVkIiwgInJlc3QiLCAibmFwIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZTJhIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgc3dlYXQ6IHsKICAgIGtleXdvcmRzOiBbICJmYWNlIiwgImhvdCIsICJzYWQiLCAidGlyZWQiLCAiZXhlcmNpc2UiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlMTMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBzb2I6IHsKICAgIGtleXdvcmRzOiBbICJmYWNlIiwgImNyeSIsICJ0ZWFycyIsICJzYWQiLCAidXBzZXQiLCAiZGVwcmVzc2VkIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZTJkIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgZGl6enlfZmFjZTogewogICAga2V5d29yZHM6IFsgInNwZW50IiwgInVuY29uc2Npb3VzIiwgInhveCIsICJkaXp6eSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGUzNSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIGFzdG9uaXNoZWQ6IHsKICAgIGtleXdvcmRzOiBbICJmYWNlIiwgInhveCIsICJzdXJwcmlzZWQiLCAicG9pc29uZWQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlMzIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICB6aXBwZXJfbW91dGhfZmFjZTogewogICAga2V5d29yZHM6IFsgImZhY2UiLCAic2VhbGVkIiwgInppcHBlciIsICJzZWNyZXQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkMTAiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBuYXVzZWF0ZWRfZmFjZTogewogICAga2V5d29yZHM6IFsgImZhY2UiLCAidm9taXQiLCAiZ3Jvc3MiLCAiZ3JlZW4iLCAic2ljayIsICJ0aHJvdyB1cCIsICJpbGwiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkMjIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBzbmVlemluZ19mYWNlOiB7CiAgICBrZXl3b3JkczogWyAiZmFjZSIsICJnZXN1bmRoZWl0IiwgInNuZWV6ZSIsICJzaWNrIiwgImFsbGVyZ3kiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkMjciLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICB2b21pdGluZzogewogICAga2V5d29yZHM6IFsgImZhY2UiLCAic2ljayIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGQyZSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIG1hc2s6IHsKICAgIGtleXdvcmRzOiBbICJmYWNlIiwgInNpY2siLCAiaWxsIiwgImRpc2Vhc2UiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlMzciLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBmYWNlX3dpdGhfdGhlcm1vbWV0ZXI6IHsKICAgIGtleXdvcmRzOiBbICJzaWNrIiwgInRlbXBlcmF0dXJlIiwgInRoZXJtb21ldGVyIiwgImNvbGQiLCAiZmV2ZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkMTIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBmYWNlX3dpdGhfaGVhZF9iYW5kYWdlOiB7CiAgICBrZXl3b3JkczogWyAiaW5qdXJlZCIsICJjbHVtc3kiLCAiYmFuZGFnZSIsICJodXJ0IiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDE1IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgc2xlZXBpbmc6IHsKICAgIGtleXdvcmRzOiBbICJmYWNlIiwgInRpcmVkIiwgInNsZWVweSIsICJuaWdodCIsICJ6enoiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlMzQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICB6eno6IHsKICAgIGtleXdvcmRzOiBbICJzbGVlcHkiLCAidGlyZWQiLCAiZHJlYW0iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjYTQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBwb29wOiB7CiAgICBrZXl3b3JkczogWyAiaGFua2V5IiwgInNoaXRmYWNlIiwgImZhaWwiLCAidHVyZCIsICJzaGl0IiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkY2E5IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgc21pbGluZ19pbXA6IHsKICAgIGtleXdvcmRzOiBbICJkZXZpbCIsICJob3JucyIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGUwOCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIGltcDogewogICAga2V5d29yZHM6IFsgImRldmlsIiwgImFuZ3J5IiwgImhvcm5zIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzdmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgamFwYW5lc2Vfb2dyZTogewogICAga2V5d29yZHM6IFsgIm1vbnN0ZXIiLCAicmVkIiwgIm1hc2siLCAiaGFsbG93ZWVuIiwgInNjYXJ5IiwgImNyZWVweSIsICJkZXZpbCIsICJkZW1vbiIsICJqYXBhbmVzZSIsICJvZ3JlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzc5IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgamFwYW5lc2VfZ29ibGluOiB7CiAgICBrZXl3b3JkczogWyAicmVkIiwgImV2aWwiLCAibWFzayIsICJtb25zdGVyIiwgInNjYXJ5IiwgImNyZWVweSIsICJqYXBhbmVzZSIsICJnb2JsaW4iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjN2EiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBza3VsbDogewogICAga2V5d29yZHM6IFsgImRlYWQiLCAic2tlbGV0b24iLCAiY3JlZXB5IiwgImRlYXRoIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzgwIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgZ2hvc3Q6IHsKICAgIGtleXdvcmRzOiBbICJoYWxsb3dlZW4iLCAic3Bvb2t5IiwgInNjYXJ5IiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzdiIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgYWxpZW46IHsKICAgIGtleXdvcmRzOiBbICJVRk8iLCAicGF1bCIsICJ3ZWlyZCIsICJvdXRlcl9zcGFjZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM3ZCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIHJvYm90OiB7CiAgICBrZXl3b3JkczogWyAiY29tcHV0ZXIiLCAibWFjaGluZSIsICJib3QiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkMTYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBzbWlsZXlfY2F0OiB7CiAgICBrZXl3b3JkczogWyAiYW5pbWFsIiwgImNhdHMiLCAiaGFwcHkiLCAic21pbGUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlM2EiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBzbWlsZV9jYXQ6IHsKICAgIGtleXdvcmRzOiBbICJhbmltYWwiLCAiY2F0cyIsICJzbWlsZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGUzOCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIGpveV9jYXQ6IHsKICAgIGtleXdvcmRzOiBbICJhbmltYWwiLCAiY2F0cyIsICJoYWhhIiwgImhhcHB5IiwgInRlYXJzIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZTM5IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgaGVhcnRfZXllc19jYXQ6IHsKICAgIGtleXdvcmRzOiBbICJhbmltYWwiLCAibG92ZSIsICJsaWtlIiwgImFmZmVjdGlvbiIsICJjYXRzIiwgInZhbGVudGluZXMiLCAiaGVhcnQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlM2IiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBzbWlya19jYXQ6IHsKICAgIGtleXdvcmRzOiBbICJhbmltYWwiLCAiY2F0cyIsICJzbWlyayIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGUzYyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIGtpc3NpbmdfY2F0OiB7CiAgICBrZXl3b3JkczogWyAiYW5pbWFsIiwgImNhdHMiLCAia2lzcyIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGUzZCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIHNjcmVhbV9jYXQ6IHsKICAgIGtleXdvcmRzOiBbICJhbmltYWwiLCAiY2F0cyIsICJtdW5jaCIsICJzY2FyZWQiLCAic2NyZWFtIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZTQwIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgY3J5aW5nX2NhdF9mYWNlOiB7CiAgICBrZXl3b3JkczogWyAiYW5pbWFsIiwgInRlYXJzIiwgIndlZXAiLCAic2FkIiwgImNhdHMiLCAidXBzZXQiLCAiY3J5IiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZTNmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgcG91dGluZ19jYXQ6IHsKICAgIGtleXdvcmRzOiBbICJhbmltYWwiLCAiY2F0cyIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGUzZSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIHBhbG1zX3VwOiB7CiAgICBrZXl3b3JkczogWyAiaGFuZHMiLCAiZ2VzdHVyZSIsICJjdXBwZWQiLCAicHJheWVyIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDMyIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICByYWlzZWRfaGFuZHM6IHsKICAgIGtleXdvcmRzOiBbICJnZXN0dXJlIiwgImhvb3JheSIsICJ5ZWEiLCAiY2VsZWJyYXRpb24iLCAiaGFuZHMiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlNGMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IHRydWUsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIGNsYXA6IHsKICAgIGtleXdvcmRzOiBbICJoYW5kcyIsICJwcmFpc2UiLCAiYXBwbGF1c2UiLCAiY29uZ3JhdHMiLCAieWF5IiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzRmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICB3YXZlOiB7CiAgICBrZXl3b3JkczogWyAiaGFuZHMiLCAiZ2VzdHVyZSIsICJnb29kYnllIiwgInNvbG9uZyIsICJmYXJld2VsbCIsICJoZWxsbyIsICJoaSIsICJwYWxtIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzRiIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBjYWxsX21lX2hhbmQ6IHsKICAgIGtleXdvcmRzOiBbICJoYW5kcyIsICJnZXN0dXJlIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDE5IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICAiKzEiOiB7CiAgICBrZXl3b3JkczogWyAidGh1bWJzdXAiLCAieWVzIiwgImF3ZXNvbWUiLCAiZ29vZCIsICJhZ3JlZSIsICJhY2NlcHQiLCAiY29vbCIsICJoYW5kIiwgImxpa2UiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjNGQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IHRydWUsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogICItMSI6IHsKICAgIGtleXdvcmRzOiBbICJ0aHVtYnNkb3duIiwgIm5vIiwgImRpc2xpa2UiLCAiaGFuZCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM0ZSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgZmFjZXB1bmNoOiB7CiAgICBrZXl3b3JkczogWyAiYW5ncnkiLCAidmlvbGVuY2UiLCAiZmlzdCIsICJoaXQiLCAiYXR0YWNrIiwgImhhbmQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjNGEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IHRydWUsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIGZpc3Q6IHsKICAgIGtleXdvcmRzOiBbICJmaW5nZXJzIiwgImhhbmQiLCAiZ3Jhc3AiIF0sCiAgICAiY2hhciI6ICJcdTI3MGEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IHRydWUsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIGZpc3RfbGVmdDogewogICAga2V5d29yZHM6IFsgImhhbmQiLCAiZmlzdGJ1bXAiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkMWIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IHRydWUsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIGZpc3RfcmlnaHQ6IHsKICAgIGtleXdvcmRzOiBbICJoYW5kIiwgImZpc3RidW1wIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDFjIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICB2OiB7CiAgICBrZXl3b3JkczogWyAiZmluZ2VycyIsICJvaHllYWgiLCAiaGFuZCIsICJwZWFjZSIsICJ2aWN0b3J5IiwgInR3byIgXSwKICAgICJjaGFyIjogIlx1MjcwYyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgb2tfaGFuZDogewogICAga2V5d29yZHM6IFsgImZpbmdlcnMiLCAibGltYnMiLCAicGVyZmVjdCIsICJvayIsICJva2F5IiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzRjIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICByYWlzZWRfaGFuZDogewogICAga2V5d29yZHM6IFsgImZpbmdlcnMiLCAic3RvcCIsICJoaWdoZml2ZSIsICJwYWxtIiwgImJhbiIgXSwKICAgICJjaGFyIjogIlx1MjcwYiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgcmFpc2VkX2JhY2tfb2ZfaGFuZDogewogICAga2V5d29yZHM6IFsgImZpbmdlcnMiLCAicmFpc2VkIiwgImJhY2toYW5kIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDFhIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBvcGVuX2hhbmRzOiB7CiAgICBrZXl3b3JkczogWyAiZmluZ2VycyIsICJidXR0ZXJmbHkiLCAiaGFuZHMiLCAib3BlbiIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM1MCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgbXVzY2xlOiB7CiAgICBrZXl3b3JkczogWyAiYXJtIiwgImZsZXgiLCAiaGFuZCIsICJzdW1tZXIiLCAic3Ryb25nIiwgImJpY2VwcyIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGNhYSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgcHJheTogewogICAga2V5d29yZHM6IFsgInBsZWFzZSIsICJob3BlIiwgIndpc2giLCAibmFtYXN0ZSIsICJoaWdoZml2ZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGU0ZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgaGFuZHNoYWtlOiB7CiAgICBrZXl3b3JkczogWyAiYWdyZWVtZW50IiwgInNoYWtlIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDFkIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgcG9pbnRfdXA6IHsKICAgIGtleXdvcmRzOiBbICJoYW5kIiwgImZpbmdlcnMiLCAiZGlyZWN0aW9uIiwgInVwIiBdLAogICAgImNoYXIiOiAiXHUyNjFkIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBwb2ludF91cF8yOiB7CiAgICBrZXl3b3JkczogWyAiZmluZ2VycyIsICJoYW5kIiwgImRpcmVjdGlvbiIsICJ1cCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM0NiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgcG9pbnRfZG93bjogewogICAga2V5d29yZHM6IFsgImZpbmdlcnMiLCAiaGFuZCIsICJkaXJlY3Rpb24iLCAiZG93biIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM0NyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgcG9pbnRfbGVmdDogewogICAga2V5d29yZHM6IFsgImRpcmVjdGlvbiIsICJmaW5nZXJzIiwgImhhbmQiLCAibGVmdCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM0OCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgcG9pbnRfcmlnaHQ6IHsKICAgIGtleXdvcmRzOiBbICJmaW5nZXJzIiwgImhhbmQiLCAiZGlyZWN0aW9uIiwgInJpZ2h0IiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzQ5IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBmdTogewogICAga2V5d29yZHM6IFsgImhhbmQiLCAiZmluZ2VycyIsICJydWRlIiwgIm1pZGRsZSIsICJmbGlwcGluZyIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGQ5NSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgcmFpc2VkX2hhbmRfd2l0aF9maW5nZXJzX3NwbGF5ZWQ6IHsKICAgIGtleXdvcmRzOiBbICJoYW5kIiwgImZpbmdlcnMiLCAicGFsbSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGQ5MCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgbG92ZV95b3U6IHsKICAgIGtleXdvcmRzOiBbICJoYW5kIiwgImZpbmdlcnMiLCAiZ2VzdHVyZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGQxZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgbWV0YWw6IHsKICAgIGtleXdvcmRzOiBbICJoYW5kIiwgImZpbmdlcnMiLCAiZXZpbF9leWUiLCAic2lnbl9vZl9ob3JucyIsICJyb2NrX29uIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDE4IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBjcm9zc2VkX2ZpbmdlcnM6IHsKICAgIGtleXdvcmRzOiBbICJnb29kIiwgImx1Y2t5IiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDFlIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICB2dWxjYW5fc2FsdXRlOiB7CiAgICBrZXl3b3JkczogWyAiaGFuZCIsICJmaW5nZXJzIiwgInNwb2NrIiwgInN0YXIgdHJlayIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGQ5NiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgd3JpdGluZ19oYW5kOiB7CiAgICBrZXl3b3JkczogWyAibG93ZXJfbGVmdF9iYWxscG9pbnRfcGVuIiwgInN0YXRpb25lcnkiLCAid3JpdGUiLCAiY29tcG9zZSIgXSwKICAgICJjaGFyIjogIlx1MjcwZCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgc2VsZmllOiB7CiAgICBrZXl3b3JkczogWyAiY2FtZXJhIiwgInBob25lIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDMzIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBuYWlsX2NhcmU6IHsKICAgIGtleXdvcmRzOiBbICJiZWF1dHkiLCAibWFuaWN1cmUiLCAiZmluZ2VyIiwgImZhc2hpb24iLCAibmFpbCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM4NSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgbGlwczogewogICAga2V5d29yZHM6IFsgIm1vdXRoIiwgImtpc3MiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjNDQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICB0b25ndWU6IHsKICAgIGtleXdvcmRzOiBbICJtb3V0aCIsICJwbGF5ZnVsIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzQ1IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgZWFyOiB7CiAgICBrZXl3b3JkczogWyAiZmFjZSIsICJoZWFyIiwgInNvdW5kIiwgImxpc3RlbiIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM0MiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgbm9zZTogewogICAga2V5d29yZHM6IFsgInNtZWxsIiwgInNuaWZmIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzQzIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBleWU6IHsKICAgIGtleXdvcmRzOiBbICJmYWNlIiwgImxvb2siLCAic2VlIiwgIndhdGNoIiwgInN0YXJlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzQxIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgZXllczogewogICAga2V5d29yZHM6IFsgImxvb2siLCAid2F0Y2giLCAic3RhbGsiLCAicGVlayIsICJzZWUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjNDAiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBicmFpbjogewogICAga2V5d29yZHM6IFsgInNtYXJ0IiwgImludGVsbGlnZW50IiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZGUwIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgYnVzdF9pbl9zaWxob3VldHRlOiB7CiAgICBrZXl3b3JkczogWyAidXNlciIsICJwZXJzb24iLCAiaHVtYW4iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjNjQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBidXN0c19pbl9zaWxob3VldHRlOiB7CiAgICBrZXl3b3JkczogWyAidXNlciIsICJwZXJzb24iLCAiaHVtYW4iLCAiZ3JvdXAiLCAidGVhbSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM2NSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIHNwZWFraW5nX2hlYWQ6IHsKICAgIGtleXdvcmRzOiBbICJ1c2VyIiwgInBlcnNvbiIsICJodW1hbiIsICJzaW5nIiwgInNheSIsICJ0YWxrIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZGUzIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgYmFieTogewogICAga2V5d29yZHM6IFsgImNoaWxkIiwgImJveSIsICJnaXJsIiwgInRvZGRsZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjNzYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IHRydWUsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIGNoaWxkOiB7CiAgICBrZXl3b3JkczogWyAiZ2VuZGVyLW5ldXRyYWwiLCAieW91bmciIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkZDIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IHRydWUsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIGJveTogewogICAga2V5d29yZHM6IFsgIm1hbiIsICJtYWxlIiwgImd1eSIsICJ0ZWVuYWdlciIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM2NiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgZ2lybDogewogICAga2V5d29yZHM6IFsgImZlbWFsZSIsICJ3b21hbiIsICJ0ZWVuYWdlciIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM2NyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgYWR1bHQ6IHsKICAgIGtleXdvcmRzOiBbICJnZW5kZXItbmV1dHJhbCIsICJwZXJzb24iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkZDEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IHRydWUsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIG1hbjogewogICAga2V5d29yZHM6IFsgIm11c3RhY2hlIiwgImZhdGhlciIsICJkYWQiLCAiZ3V5IiwgImNsYXNzeSIsICJzaXIiLCAibW91c3RhY2hlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzY4IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICB3b21hbjogewogICAga2V5d29yZHM6IFsgImZlbWFsZSIsICJnaXJscyIsICJsYWR5IiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzY5IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBibG9uZGVfd29tYW46IHsKICAgIGtleXdvcmRzOiBbICJ3b21hbiIsICJmZW1hbGUiLCAiZ2lybCIsICJibG9uZGUiLCAicGVyc29uIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzcxXHUyMDBkXHUyNjQwXHVmZTBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBibG9uZGVfbWFuOiB7CiAgICBrZXl3b3JkczogWyAibWFuIiwgIm1hbGUiLCAiYm95IiwgImJsb25kZSIsICJndXkiLCAicGVyc29uIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzcxIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBiZWFyZGVkX3BlcnNvbjogewogICAga2V5d29yZHM6IFsgInBlcnNvbiIsICJiZXdoaXNrZXJlZCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGRkNCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgb2xkZXJfYWR1bHQ6IHsKICAgIGtleXdvcmRzOiBbICJodW1hbiIsICJlbGRlciIsICJzZW5pb3IiLCAiZ2VuZGVyLW5ldXRyYWwiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkZDMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IHRydWUsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIG9sZGVyX21hbjogewogICAga2V5d29yZHM6IFsgImh1bWFuIiwgIm1hbGUiLCAibWVuIiwgIm9sZCIsICJlbGRlciIsICJzZW5pb3IiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjNzQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IHRydWUsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIG9sZGVyX3dvbWFuOiB7CiAgICBrZXl3b3JkczogWyAiaHVtYW4iLCAiZmVtYWxlIiwgIndvbWVuIiwgImxhZHkiLCAib2xkIiwgImVsZGVyIiwgInNlbmlvciIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM3NSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgbWFuX3dpdGhfZ3VhX3BpX21hbzogewogICAga2V5d29yZHM6IFsgIm1hbGUiLCAiYm95IiwgImNoaW5lc2UiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjNzIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IHRydWUsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIHdvbWFuX3dpdGhfaGVhZHNjYXJmOiB7CiAgICBrZXl3b3JkczogWyAiZmVtYWxlIiwgImhpamFiIiwgIm1hbnRpbGxhIiwgInRpY2hlbCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGRkNSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgd29tYW5fd2l0aF90dXJiYW46IHsKICAgIGtleXdvcmRzOiBbICJmZW1hbGUiLCAiaW5kaWFuIiwgImhpbmR1aXNtIiwgImFyYWJzIiwgIndvbWFuIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzczXHUyMDBkXHUyNjQwXHVmZTBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBtYW5fd2l0aF90dXJiYW46IHsKICAgIGtleXdvcmRzOiBbICJtYWxlIiwgImluZGlhbiIsICJoaW5kdWlzbSIsICJhcmFicyIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM3MyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgcG9saWNld29tYW46IHsKICAgIGtleXdvcmRzOiBbICJ3b21hbiIsICJwb2xpY2UiLCAibGF3IiwgImxlZ2FsIiwgImVuZm9yY2VtZW50IiwgImFycmVzdCIsICI5MTEiLCAiZmVtYWxlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzZlXHUyMDBkXHUyNjQwXHVmZTBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBwb2xpY2VtYW46IHsKICAgIGtleXdvcmRzOiBbICJtYW4iLCAicG9saWNlIiwgImxhdyIsICJsZWdhbCIsICJlbmZvcmNlbWVudCIsICJhcnJlc3QiLCAiOTExIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzZlIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBjb25zdHJ1Y3Rpb25fd29ya2VyX3dvbWFuOiB7CiAgICBrZXl3b3JkczogWyAiZmVtYWxlIiwgImh1bWFuIiwgIndpcCIsICJidWlsZCIsICJjb25zdHJ1Y3Rpb24iLCAid29ya2VyIiwgImxhYm9yIiwgIndvbWFuIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzc3XHUyMDBkXHUyNjQwXHVmZTBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBjb25zdHJ1Y3Rpb25fd29ya2VyX21hbjogewogICAga2V5d29yZHM6IFsgIm1hbGUiLCAiaHVtYW4iLCAid2lwIiwgImd1eSIsICJidWlsZCIsICJjb25zdHJ1Y3Rpb24iLCAid29ya2VyIiwgImxhYm9yIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzc3IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBndWFyZHN3b21hbjogewogICAga2V5d29yZHM6IFsgInVrIiwgImdiIiwgImJyaXRpc2giLCAiZmVtYWxlIiwgInJveWFsIiwgIndvbWFuIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzgyXHUyMDBkXHUyNjQwXHVmZTBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBndWFyZHNtYW46IHsKICAgIGtleXdvcmRzOiBbICJ1ayIsICJnYiIsICJicml0aXNoIiwgIm1hbGUiLCAiZ3V5IiwgInJveWFsIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzgyIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBmZW1hbGVfZGV0ZWN0aXZlOiB7CiAgICBrZXl3b3JkczogWyAiaHVtYW4iLCAic3B5IiwgImRldGVjdGl2ZSIsICJmZW1hbGUiLCAid29tYW4iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRkNzVcdWZlMGZcdTIwMGRcdTI2NDBcdWZlMGYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IHRydWUsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIG1hbGVfZGV0ZWN0aXZlOiB7CiAgICBrZXl3b3JkczogWyAiaHVtYW4iLCAic3B5IiwgImRldGVjdGl2ZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGQ3NSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgd29tYW5faGVhbHRoX3dvcmtlcjogewogICAga2V5d29yZHM6IFsgImRvY3RvciIsICJudXJzZSIsICJ0aGVyYXBpc3QiLCAiaGVhbHRoY2FyZSIsICJ3b21hbiIsICJodW1hbiIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM2OVx1MjAwZFx1MjY5NVx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgbWFuX2hlYWx0aF93b3JrZXI6IHsKICAgIGtleXdvcmRzOiBbICJkb2N0b3IiLCAibnVyc2UiLCAidGhlcmFwaXN0IiwgImhlYWx0aGNhcmUiLCAibWFuIiwgImh1bWFuIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzY4XHUyMDBkXHUyNjk1XHVmZTBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICB3b21hbl9mYXJtZXI6IHsKICAgIGtleXdvcmRzOiBbICJyYW5jaGVyIiwgImdhcmRlbmVyIiwgIndvbWFuIiwgImh1bWFuIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzY5XHUyMDBkXHVkODNjXHVkZjNlIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBtYW5fZmFybWVyOiB7CiAgICBrZXl3b3JkczogWyAicmFuY2hlciIsICJnYXJkZW5lciIsICJtYW4iLCAiaHVtYW4iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjNjhcdTIwMGRcdWQ4M2NcdWRmM2UiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IHRydWUsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIHdvbWFuX2Nvb2s6IHsKICAgIGtleXdvcmRzOiBbICJjaGVmIiwgIndvbWFuIiwgImh1bWFuIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzY5XHUyMDBkXHVkODNjXHVkZjczIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBtYW5fY29vazogewogICAga2V5d29yZHM6IFsgImNoZWYiLCAibWFuIiwgImh1bWFuIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzY4XHUyMDBkXHVkODNjXHVkZjczIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICB3b21hbl9zdHVkZW50OiB7CiAgICBrZXl3b3JkczogWyAiZ3JhZHVhdGUiLCAid29tYW4iLCAiaHVtYW4iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjNjlcdTIwMGRcdWQ4M2NcdWRmOTMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IHRydWUsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIG1hbl9zdHVkZW50OiB7CiAgICBrZXl3b3JkczogWyAiZ3JhZHVhdGUiLCAibWFuIiwgImh1bWFuIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzY4XHUyMDBkXHVkODNjXHVkZjkzIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICB3b21hbl9zaW5nZXI6IHsKICAgIGtleXdvcmRzOiBbICJyb2Nrc3RhciIsICJlbnRlcnRhaW5lciIsICJ3b21hbiIsICJodW1hbiIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM2OVx1MjAwZFx1ZDgzY1x1ZGZhNCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgbWFuX3NpbmdlcjogewogICAga2V5d29yZHM6IFsgInJvY2tzdGFyIiwgImVudGVydGFpbmVyIiwgIm1hbiIsICJodW1hbiIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM2OFx1MjAwZFx1ZDgzY1x1ZGZhNCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgd29tYW5fdGVhY2hlcjogewogICAga2V5d29yZHM6IFsgImluc3RydWN0b3IiLCAicHJvZmVzc29yIiwgIndvbWFuIiwgImh1bWFuIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzY5XHUyMDBkXHVkODNjXHVkZmViIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBtYW5fdGVhY2hlcjogewogICAga2V5d29yZHM6IFsgImluc3RydWN0b3IiLCAicHJvZmVzc29yIiwgIm1hbiIsICJodW1hbiIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM2OFx1MjAwZFx1ZDgzY1x1ZGZlYiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgd29tYW5fZmFjdG9yeV93b3JrZXI6IHsKICAgIGtleXdvcmRzOiBbICJhc3NlbWJseSIsICJpbmR1c3RyaWFsIiwgIndvbWFuIiwgImh1bWFuIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzY5XHUyMDBkXHVkODNjXHVkZmVkIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBtYW5fZmFjdG9yeV93b3JrZXI6IHsKICAgIGtleXdvcmRzOiBbICJhc3NlbWJseSIsICJpbmR1c3RyaWFsIiwgIm1hbiIsICJodW1hbiIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM2OFx1MjAwZFx1ZDgzY1x1ZGZlZCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgd29tYW5fdGVjaG5vbG9naXN0OiB7CiAgICBrZXl3b3JkczogWyAiY29kZXIiLCAiZGV2ZWxvcGVyIiwgImVuZ2luZWVyIiwgInByb2dyYW1tZXIiLCAic29mdHdhcmUiLCAid29tYW4iLCAiaHVtYW4iLCAibGFwdG9wIiwgImNvbXB1dGVyIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzY5XHUyMDBkXHVkODNkXHVkY2JiIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBtYW5fdGVjaG5vbG9naXN0OiB7CiAgICBrZXl3b3JkczogWyAiY29kZXIiLCAiZGV2ZWxvcGVyIiwgImVuZ2luZWVyIiwgInByb2dyYW1tZXIiLCAic29mdHdhcmUiLCAibWFuIiwgImh1bWFuIiwgImxhcHRvcCIsICJjb21wdXRlciIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM2OFx1MjAwZFx1ZDgzZFx1ZGNiYiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgd29tYW5fb2ZmaWNlX3dvcmtlcjogewogICAga2V5d29yZHM6IFsgImJ1c2luZXNzIiwgIm1hbmFnZXIiLCAid29tYW4iLCAiaHVtYW4iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjNjlcdTIwMGRcdWQ4M2RcdWRjYmMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IHRydWUsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIG1hbl9vZmZpY2Vfd29ya2VyOiB7CiAgICBrZXl3b3JkczogWyAiYnVzaW5lc3MiLCAibWFuYWdlciIsICJtYW4iLCAiaHVtYW4iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjNjhcdTIwMGRcdWQ4M2RcdWRjYmMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IHRydWUsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIHdvbWFuX21lY2hhbmljOiB7CiAgICBrZXl3b3JkczogWyAicGx1bWJlciIsICJ3b21hbiIsICJodW1hbiIsICJ3cmVuY2giIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjNjlcdTIwMGRcdWQ4M2RcdWRkMjciLAogICAgZml0enBhdHJpY2tfc2NhbGU6IHRydWUsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIG1hbl9tZWNoYW5pYzogewogICAga2V5d29yZHM6IFsgInBsdW1iZXIiLCAibWFuIiwgImh1bWFuIiwgIndyZW5jaCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM2OFx1MjAwZFx1ZDgzZFx1ZGQyNyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgd29tYW5fc2NpZW50aXN0OiB7CiAgICBrZXl3b3JkczogWyAiYmlvbG9naXN0IiwgImNoZW1pc3QiLCAiZW5naW5lZXIiLCAicGh5c2ljaXN0IiwgIndvbWFuIiwgImh1bWFuIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzY5XHUyMDBkXHVkODNkXHVkZDJjIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBtYW5fc2NpZW50aXN0OiB7CiAgICBrZXl3b3JkczogWyAiYmlvbG9naXN0IiwgImNoZW1pc3QiLCAiZW5naW5lZXIiLCAicGh5c2ljaXN0IiwgIm1hbiIsICJodW1hbiIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM2OFx1MjAwZFx1ZDgzZFx1ZGQyYyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgd29tYW5fYXJ0aXN0OiB7CiAgICBrZXl3b3JkczogWyAicGFpbnRlciIsICJ3b21hbiIsICJodW1hbiIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM2OVx1MjAwZFx1ZDgzY1x1ZGZhOCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgbWFuX2FydGlzdDogewogICAga2V5d29yZHM6IFsgInBhaW50ZXIiLCAibWFuIiwgImh1bWFuIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzY4XHUyMDBkXHVkODNjXHVkZmE4IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICB3b21hbl9maXJlZmlnaHRlcjogewogICAga2V5d29yZHM6IFsgImZpcmVtYW4iLCAid29tYW4iLCAiaHVtYW4iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjNjlcdTIwMGRcdWQ4M2RcdWRlOTIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IHRydWUsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIG1hbl9maXJlZmlnaHRlcjogewogICAga2V5d29yZHM6IFsgImZpcmVtYW4iLCAibWFuIiwgImh1bWFuIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzY4XHUyMDBkXHVkODNkXHVkZTkyIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICB3b21hbl9waWxvdDogewogICAga2V5d29yZHM6IFsgImF2aWF0b3IiLCAicGxhbmUiLCAid29tYW4iLCAiaHVtYW4iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjNjlcdTIwMGRcdTI3MDhcdWZlMGYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IHRydWUsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIG1hbl9waWxvdDogewogICAga2V5d29yZHM6IFsgImF2aWF0b3IiLCAicGxhbmUiLCAibWFuIiwgImh1bWFuIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzY4XHUyMDBkXHUyNzA4XHVmZTBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICB3b21hbl9hc3Ryb25hdXQ6IHsKICAgIGtleXdvcmRzOiBbICJzcGFjZSIsICJyb2NrZXQiLCAid29tYW4iLCAiaHVtYW4iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjNjlcdTIwMGRcdWQ4M2RcdWRlODAiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IHRydWUsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIG1hbl9hc3Ryb25hdXQ6IHsKICAgIGtleXdvcmRzOiBbICJzcGFjZSIsICJyb2NrZXQiLCAibWFuIiwgImh1bWFuIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzY4XHUyMDBkXHVkODNkXHVkZTgwIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICB3b21hbl9qdWRnZTogewogICAga2V5d29yZHM6IFsgImp1c3RpY2UiLCAiY291cnQiLCAid29tYW4iLCAiaHVtYW4iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjNjlcdTIwMGRcdTI2OTZcdWZlMGYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IHRydWUsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIG1hbl9qdWRnZTogewogICAga2V5d29yZHM6IFsgImp1c3RpY2UiLCAiY291cnQiLCAibWFuIiwgImh1bWFuIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzY4XHUyMDBkXHUyNjk2XHVmZTBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBtcnNfY2xhdXM6IHsKICAgIGtleXdvcmRzOiBbICJ3b21hbiIsICJmZW1hbGUiLCAieG1hcyIsICJtb3RoZXIgY2hyaXN0bWFzIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDM2IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBzYW50YTogewogICAga2V5d29yZHM6IFsgImZlc3RpdmFsIiwgIm1hbiIsICJtYWxlIiwgInhtYXMiLCAiZmF0aGVyIGNocmlzdG1hcyIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGY4NSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgc29yY2VyZXNzOiB7CiAgICBrZXl3b3JkczogWyAid29tYW4iLCAiZmVtYWxlIiwgIm1hZ2UiLCAid2l0Y2giIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkZDlcdTIwMGRcdTI2NDBcdWZlMGYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IHRydWUsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIHdpemFyZDogewogICAga2V5d29yZHM6IFsgIm1hbiIsICJtYWxlIiwgIm1hZ2UiLCAic29yY2VyZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkZDlcdTIwMGRcdTI2NDJcdWZlMGYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IHRydWUsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIHdvbWFuX2VsZjogewogICAga2V5d29yZHM6IFsgIndvbWFuIiwgImZlbWFsZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGRkZFx1MjAwZFx1MjY0MFx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgbWFuX2VsZjogewogICAga2V5d29yZHM6IFsgIm1hbiIsICJtYWxlIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZGRkXHUyMDBkXHUyNjQyXHVmZTBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICB3b21hbl92YW1waXJlOiB7CiAgICBrZXl3b3JkczogWyAid29tYW4iLCAiZmVtYWxlIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZGRiXHUyMDBkXHUyNjQwXHVmZTBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBtYW5fdmFtcGlyZTogewogICAga2V5d29yZHM6IFsgIm1hbiIsICJtYWxlIiwgImRyYWN1bGEiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkZGJcdTIwMGRcdTI2NDJcdWZlMGYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IHRydWUsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIHdvbWFuX3pvbWJpZTogewogICAga2V5d29yZHM6IFsgIndvbWFuIiwgImZlbWFsZSIsICJ1bmRlYWQiLCAid2Fsa2luZyBkZWFkIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZGRmXHUyMDBkXHUyNjQwXHVmZTBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgbWFuX3pvbWJpZTogewogICAga2V5d29yZHM6IFsgIm1hbiIsICJtYWxlIiwgImRyYWN1bGEiLCAidW5kZWFkIiwgIndhbGtpbmcgZGVhZCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGRkZlx1MjAwZFx1MjY0Mlx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIHdvbWFuX2dlbmllOiB7CiAgICBrZXl3b3JkczogWyAid29tYW4iLCAiZmVtYWxlIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZGRlXHUyMDBkXHUyNjQwXHVmZTBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgbWFuX2dlbmllOiB7CiAgICBrZXl3b3JkczogWyAibWFuIiwgIm1hbGUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkZGVcdTIwMGRcdTI2NDJcdWZlMGYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBtZXJtYWlkOiB7CiAgICBrZXl3b3JkczogWyAid29tYW4iLCAiZmVtYWxlIiwgIm1lcndvbWFuIiwgImFyaWVsIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZGRjXHUyMDBkXHUyNjQwXHVmZTBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBtZXJtYW46IHsKICAgIGtleXdvcmRzOiBbICJtYW4iLCAibWFsZSIsICJ0cml0b24iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkZGNcdTIwMGRcdTI2NDJcdWZlMGYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IHRydWUsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIHdvbWFuX2ZhaXJ5OiB7CiAgICBrZXl3b3JkczogWyAid29tYW4iLCAiZmVtYWxlIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZGRhXHUyMDBkXHUyNjQwXHVmZTBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBtYW5fZmFpcnk6IHsKICAgIGtleXdvcmRzOiBbICJtYW4iLCAibWFsZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGRkYVx1MjAwZFx1MjY0Mlx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgYW5nZWw6IHsKICAgIGtleXdvcmRzOiBbICJoZWF2ZW4iLCAid2luZ3MiLCAiaGFsbyIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM3YyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgcHJlZ25hbnRfd29tYW46IHsKICAgIGtleXdvcmRzOiBbICJiYWJ5IiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDMwIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBicmVhc3RmZWVkaW5nOiB7CiAgICBrZXl3b3JkczogWyAibnVyc2luZyIsICJiYWJ5IiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDMxIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBwcmluY2VzczogewogICAga2V5d29yZHM6IFsgImdpcmwiLCAid29tYW4iLCAiZmVtYWxlIiwgImJsb25kIiwgImNyb3duIiwgInJveWFsIiwgInF1ZWVuIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzc4IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBwcmluY2U6IHsKICAgIGtleXdvcmRzOiBbICJib3kiLCAibWFuIiwgIm1hbGUiLCAiY3Jvd24iLCAicm95YWwiLCAia2luZyIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGQzNCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgYnJpZGVfd2l0aF92ZWlsOiB7CiAgICBrZXl3b3JkczogWyAiY291cGxlIiwgIm1hcnJpYWdlIiwgIndlZGRpbmciLCAid29tYW4iLCAiYnJpZGUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjNzAiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IHRydWUsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIG1hbl9pbl90dXhlZG86IHsKICAgIGtleXdvcmRzOiBbICJjb3VwbGUiLCAibWFycmlhZ2UiLCAid2VkZGluZyIsICJncm9vbSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGQzNSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgcnVubmluZ193b21hbjogewogICAga2V5d29yZHM6IFsgIndvbWFuIiwgIndhbGtpbmciLCAiZXhlcmNpc2UiLCAicmFjZSIsICJydW5uaW5nIiwgImZlbWFsZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGZjM1x1MjAwZFx1MjY0MFx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgcnVubmluZ19tYW46IHsKICAgIGtleXdvcmRzOiBbICJtYW4iLCAid2Fsa2luZyIsICJleGVyY2lzZSIsICJyYWNlIiwgInJ1bm5pbmciIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmYzMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IHRydWUsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIHdhbGtpbmdfd29tYW46IHsKICAgIGtleXdvcmRzOiBbICJodW1hbiIsICJmZWV0IiwgInN0ZXBzIiwgIndvbWFuIiwgImZlbWFsZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGViNlx1MjAwZFx1MjY0MFx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgd2Fsa2luZ19tYW46IHsKICAgIGtleXdvcmRzOiBbICJodW1hbiIsICJmZWV0IiwgInN0ZXBzIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZWI2IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBkYW5jZXI6IHsKICAgIGtleXdvcmRzOiBbICJmZW1hbGUiLCAiZ2lybCIsICJ3b21hbiIsICJmdW4iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjODMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IHRydWUsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIG1hbl9kYW5jaW5nOiB7CiAgICBrZXl3b3JkczogWyAibWFsZSIsICJib3kiLCAiZnVuIiwgImRhbmNlciIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGQ3YSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgZGFuY2luZ193b21lbjogewogICAga2V5d29yZHM6IFsgImZlbWFsZSIsICJidW5ueSIsICJ3b21lbiIsICJnaXJscyIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM2ZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIGRhbmNpbmdfbWVuOiB7CiAgICBrZXl3b3JkczogWyAibWFsZSIsICJidW5ueSIsICJtZW4iLCAiYm95cyIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM2Zlx1MjAwZFx1MjY0Mlx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIGNvdXBsZTogewogICAga2V5d29yZHM6IFsgInBhaXIiLCAicGVvcGxlIiwgImh1bWFuIiwgImxvdmUiLCAiZGF0ZSIsICJkYXRpbmciLCAibGlrZSIsICJhZmZlY3Rpb24iLCAidmFsZW50aW5lcyIsICJtYXJyaWFnZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM2YiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIHR3b19tZW5faG9sZGluZ19oYW5kczogewogICAga2V5d29yZHM6IFsgInBhaXIiLCAiY291cGxlIiwgImxvdmUiLCAibGlrZSIsICJicm9tYW5jZSIsICJmcmllbmRzaGlwIiwgInBlb3BsZSIsICJodW1hbiIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM2YyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIHR3b193b21lbl9ob2xkaW5nX2hhbmRzOiB7CiAgICBrZXl3b3JkczogWyAicGFpciIsICJmcmllbmRzaGlwIiwgImNvdXBsZSIsICJsb3ZlIiwgImxpa2UiLCAiZmVtYWxlIiwgInBlb3BsZSIsICJodW1hbiIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM2ZCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIGJvd2luZ193b21hbjogewogICAga2V5d29yZHM6IFsgIndvbWFuIiwgImZlbWFsZSIsICJnaXJsIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZTQ3XHUyMDBkXHUyNjQwXHVmZTBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBib3dpbmdfbWFuOiB7CiAgICBrZXl3b3JkczogWyAibWFuIiwgIm1hbGUiLCAiYm95IiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZTQ3IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBtYW5fZmFjZXBhbG1pbmc6IHsKICAgIGtleXdvcmRzOiBbICJtYW4iLCAibWFsZSIsICJib3kiLCAiZGlzYmVsaWVmIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDI2IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICB3b21hbl9mYWNlcGFsbWluZzogewogICAga2V5d29yZHM6IFsgIndvbWFuIiwgImZlbWFsZSIsICJnaXJsIiwgImRpc2JlbGllZiIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGQyNlx1MjAwZFx1MjY0MFx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgd29tYW5fc2hydWdnaW5nOiB7CiAgICBrZXl3b3JkczogWyAid29tYW4iLCAiZmVtYWxlIiwgImdpcmwiLCAiY29uZnVzZWQiLCAiaW5kaWZmZXJlbnQiLCAiZG91YnQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkMzciLAogICAgZml0enBhdHJpY2tfc2NhbGU6IHRydWUsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIG1hbl9zaHJ1Z2dpbmc6IHsKICAgIGtleXdvcmRzOiBbICJtYW4iLCAibWFsZSIsICJib3kiLCAiY29uZnVzZWQiLCAiaW5kaWZmZXJlbnQiLCAiZG91YnQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkMzdcdTIwMGRcdTI2NDJcdWZlMGYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IHRydWUsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIHRpcHBpbmdfaGFuZF93b21hbjogewogICAga2V5d29yZHM6IFsgImZlbWFsZSIsICJnaXJsIiwgIndvbWFuIiwgImh1bWFuIiwgImluZm9ybWF0aW9uIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzgxIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICB0aXBwaW5nX2hhbmRfbWFuOiB7CiAgICBrZXl3b3JkczogWyAibWFsZSIsICJib3kiLCAibWFuIiwgImh1bWFuIiwgImluZm9ybWF0aW9uIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzgxXHUyMDBkXHUyNjQyXHVmZTBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBub19nb29kX3dvbWFuOiB7CiAgICBrZXl3b3JkczogWyAiZmVtYWxlIiwgImdpcmwiLCAid29tYW4iLCAibm9wZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGU0NSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgbm9fZ29vZF9tYW46IHsKICAgIGtleXdvcmRzOiBbICJtYWxlIiwgImJveSIsICJtYW4iLCAibm9wZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGU0NVx1MjAwZFx1MjY0Mlx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgb2tfd29tYW46IHsKICAgIGtleXdvcmRzOiBbICJ3b21lbiIsICJnaXJsIiwgImZlbWFsZSIsICJwaW5rIiwgImh1bWFuIiwgIndvbWFuIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZTQ2IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBva19tYW46IHsKICAgIGtleXdvcmRzOiBbICJtZW4iLCAiYm95IiwgIm1hbGUiLCAiYmx1ZSIsICJodW1hbiIsICJtYW4iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlNDZcdTIwMGRcdTI2NDJcdWZlMGYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IHRydWUsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIHJhaXNpbmdfaGFuZF93b21hbjogewogICAga2V5d29yZHM6IFsgImZlbWFsZSIsICJnaXJsIiwgIndvbWFuIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZTRiIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICByYWlzaW5nX2hhbmRfbWFuOiB7CiAgICBrZXl3b3JkczogWyAibWFsZSIsICJib3kiLCAibWFuIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZTRiXHUyMDBkXHUyNjQyXHVmZTBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBwb3V0aW5nX3dvbWFuOiB7CiAgICBrZXl3b3JkczogWyAiZmVtYWxlIiwgImdpcmwiLCAid29tYW4iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlNGUiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IHRydWUsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIHBvdXRpbmdfbWFuOiB7CiAgICBrZXl3b3JkczogWyAibWFsZSIsICJib3kiLCAibWFuIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZTRlXHUyMDBkXHUyNjQyXHVmZTBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBmcm93bmluZ193b21hbjogewogICAga2V5d29yZHM6IFsgImZlbWFsZSIsICJnaXJsIiwgIndvbWFuIiwgInNhZCIsICJkZXByZXNzZWQiLCAiZGlzY291cmFnZWQiLCAidW5oYXBweSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGU0ZCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgZnJvd25pbmdfbWFuOiB7CiAgICBrZXl3b3JkczogWyAibWFsZSIsICJib3kiLCAibWFuIiwgInNhZCIsICJkZXByZXNzZWQiLCAiZGlzY291cmFnZWQiLCAidW5oYXBweSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGU0ZFx1MjAwZFx1MjY0Mlx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgaGFpcmN1dF93b21hbjogewogICAga2V5d29yZHM6IFsgImZlbWFsZSIsICJnaXJsIiwgIndvbWFuIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzg3IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBoYWlyY3V0X21hbjogewogICAga2V5d29yZHM6IFsgIm1hbGUiLCAiYm95IiwgIm1hbiIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM4N1x1MjAwZFx1MjY0Mlx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgbWFzc2FnZV93b21hbjogewogICAga2V5d29yZHM6IFsgImZlbWFsZSIsICJnaXJsIiwgIndvbWFuIiwgImhlYWQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjODYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IHRydWUsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIG1hc3NhZ2VfbWFuOiB7CiAgICBrZXl3b3JkczogWyAibWFsZSIsICJib3kiLCAibWFuIiwgImhlYWQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjODZcdTIwMGRcdTI2NDJcdWZlMGYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IHRydWUsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIHdvbWFuX2luX3N0ZWFteV9yb29tOiB7CiAgICBrZXl3b3JkczogWyAiZmVtYWxlIiwgIndvbWFuIiwgInNwYSIsICJzdGVhbXJvb20iLCAic2F1bmEiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkZDZcdTIwMGRcdTI2NDBcdWZlMGYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IHRydWUsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIG1hbl9pbl9zdGVhbXlfcm9vbTogewogICAga2V5d29yZHM6IFsgIm1hbGUiLCAibWFuIiwgInNwYSIsICJzdGVhbXJvb20iLCAic2F1bmEiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkZDZcdTIwMGRcdTI2NDJcdWZlMGYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IHRydWUsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIGNvdXBsZV93aXRoX2hlYXJ0X3dvbWFuX21hbjogewogICAga2V5d29yZHM6IFsgInBhaXIiLCAibG92ZSIsICJsaWtlIiwgImFmZmVjdGlvbiIsICJodW1hbiIsICJkYXRpbmciLCAidmFsZW50aW5lcyIsICJtYXJyaWFnZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM5MSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIGNvdXBsZV93aXRoX2hlYXJ0X3dvbWFuX3dvbWFuOiB7CiAgICBrZXl3b3JkczogWyAicGFpciIsICJsb3ZlIiwgImxpa2UiLCAiYWZmZWN0aW9uIiwgImh1bWFuIiwgImRhdGluZyIsICJ2YWxlbnRpbmVzIiwgIm1hcnJpYWdlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzY5XHUyMDBkXHUyNzY0XHVmZTBmXHUyMDBkXHVkODNkXHVkYzY5IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgY291cGxlX3dpdGhfaGVhcnRfbWFuX21hbjogewogICAga2V5d29yZHM6IFsgInBhaXIiLCAibG92ZSIsICJsaWtlIiwgImFmZmVjdGlvbiIsICJodW1hbiIsICJkYXRpbmciLCAidmFsZW50aW5lcyIsICJtYXJyaWFnZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM2OFx1MjAwZFx1Mjc2NFx1ZmUwZlx1MjAwZFx1ZDgzZFx1ZGM2OCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIGNvdXBsZWtpc3NfbWFuX3dvbWFuOiB7CiAgICBrZXl3b3JkczogWyAicGFpciIsICJ2YWxlbnRpbmVzIiwgImxvdmUiLCAibGlrZSIsICJkYXRpbmciLCAibWFycmlhZ2UiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjOGYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBjb3VwbGVraXNzX3dvbWFuX3dvbWFuOiB7CiAgICBrZXl3b3JkczogWyAicGFpciIsICJ2YWxlbnRpbmVzIiwgImxvdmUiLCAibGlrZSIsICJkYXRpbmciLCAibWFycmlhZ2UiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjNjlcdTIwMGRcdTI3NjRcdWZlMGZcdTIwMGRcdWQ4M2RcdWRjOGJcdTIwMGRcdWQ4M2RcdWRjNjkiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBjb3VwbGVraXNzX21hbl9tYW46IHsKICAgIGtleXdvcmRzOiBbICJwYWlyIiwgInZhbGVudGluZXMiLCAibG92ZSIsICJsaWtlIiwgImRhdGluZyIsICJtYXJyaWFnZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM2OFx1MjAwZFx1Mjc2NFx1ZmUwZlx1MjAwZFx1ZDgzZFx1ZGM4Ylx1MjAwZFx1ZDgzZFx1ZGM2OCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIGZhbWlseV9tYW5fd29tYW5fYm95OiB7CiAgICBrZXl3b3JkczogWyAiaG9tZSIsICJwYXJlbnRzIiwgImNoaWxkIiwgIm1vbSIsICJkYWQiLCAiZmF0aGVyIiwgIm1vdGhlciIsICJwZW9wbGUiLCAiaHVtYW4iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjNmEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBmYW1pbHlfbWFuX3dvbWFuX2dpcmw6IHsKICAgIGtleXdvcmRzOiBbICJob21lIiwgInBhcmVudHMiLCAicGVvcGxlIiwgImh1bWFuIiwgImNoaWxkIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzY4XHUyMDBkXHVkODNkXHVkYzY5XHUyMDBkXHVkODNkXHVkYzY3IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgZmFtaWx5X21hbl93b21hbl9naXJsX2JveTogewogICAga2V5d29yZHM6IFsgImhvbWUiLCAicGFyZW50cyIsICJwZW9wbGUiLCAiaHVtYW4iLCAiY2hpbGRyZW4iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjNjhcdTIwMGRcdWQ4M2RcdWRjNjlcdTIwMGRcdWQ4M2RcdWRjNjdcdTIwMGRcdWQ4M2RcdWRjNjYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBmYW1pbHlfbWFuX3dvbWFuX2JveV9ib3k6IHsKICAgIGtleXdvcmRzOiBbICJob21lIiwgInBhcmVudHMiLCAicGVvcGxlIiwgImh1bWFuIiwgImNoaWxkcmVuIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzY4XHUyMDBkXHVkODNkXHVkYzY5XHUyMDBkXHVkODNkXHVkYzY2XHUyMDBkXHVkODNkXHVkYzY2IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgZmFtaWx5X21hbl93b21hbl9naXJsX2dpcmw6IHsKICAgIGtleXdvcmRzOiBbICJob21lIiwgInBhcmVudHMiLCAicGVvcGxlIiwgImh1bWFuIiwgImNoaWxkcmVuIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzY4XHUyMDBkXHVkODNkXHVkYzY5XHUyMDBkXHVkODNkXHVkYzY3XHUyMDBkXHVkODNkXHVkYzY3IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgZmFtaWx5X3dvbWFuX3dvbWFuX2JveTogewogICAga2V5d29yZHM6IFsgImhvbWUiLCAicGFyZW50cyIsICJwZW9wbGUiLCAiaHVtYW4iLCAiY2hpbGRyZW4iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjNjlcdTIwMGRcdWQ4M2RcdWRjNjlcdTIwMGRcdWQ4M2RcdWRjNjYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBmYW1pbHlfd29tYW5fd29tYW5fZ2lybDogewogICAga2V5d29yZHM6IFsgImhvbWUiLCAicGFyZW50cyIsICJwZW9wbGUiLCAiaHVtYW4iLCAiY2hpbGRyZW4iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjNjlcdTIwMGRcdWQ4M2RcdWRjNjlcdTIwMGRcdWQ4M2RcdWRjNjciLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBmYW1pbHlfd29tYW5fd29tYW5fZ2lybF9ib3k6IHsKICAgIGtleXdvcmRzOiBbICJob21lIiwgInBhcmVudHMiLCAicGVvcGxlIiwgImh1bWFuIiwgImNoaWxkcmVuIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzY5XHUyMDBkXHVkODNkXHVkYzY5XHUyMDBkXHVkODNkXHVkYzY3XHUyMDBkXHVkODNkXHVkYzY2IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgZmFtaWx5X3dvbWFuX3dvbWFuX2JveV9ib3k6IHsKICAgIGtleXdvcmRzOiBbICJob21lIiwgInBhcmVudHMiLCAicGVvcGxlIiwgImh1bWFuIiwgImNoaWxkcmVuIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzY5XHUyMDBkXHVkODNkXHVkYzY5XHUyMDBkXHVkODNkXHVkYzY2XHUyMDBkXHVkODNkXHVkYzY2IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgZmFtaWx5X3dvbWFuX3dvbWFuX2dpcmxfZ2lybDogewogICAga2V5d29yZHM6IFsgImhvbWUiLCAicGFyZW50cyIsICJwZW9wbGUiLCAiaHVtYW4iLCAiY2hpbGRyZW4iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjNjlcdTIwMGRcdWQ4M2RcdWRjNjlcdTIwMGRcdWQ4M2RcdWRjNjdcdTIwMGRcdWQ4M2RcdWRjNjciLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBmYW1pbHlfbWFuX21hbl9ib3k6IHsKICAgIGtleXdvcmRzOiBbICJob21lIiwgInBhcmVudHMiLCAicGVvcGxlIiwgImh1bWFuIiwgImNoaWxkcmVuIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzY4XHUyMDBkXHVkODNkXHVkYzY4XHUyMDBkXHVkODNkXHVkYzY2IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgZmFtaWx5X21hbl9tYW5fZ2lybDogewogICAga2V5d29yZHM6IFsgImhvbWUiLCAicGFyZW50cyIsICJwZW9wbGUiLCAiaHVtYW4iLCAiY2hpbGRyZW4iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjNjhcdTIwMGRcdWQ4M2RcdWRjNjhcdTIwMGRcdWQ4M2RcdWRjNjciLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBmYW1pbHlfbWFuX21hbl9naXJsX2JveTogewogICAga2V5d29yZHM6IFsgImhvbWUiLCAicGFyZW50cyIsICJwZW9wbGUiLCAiaHVtYW4iLCAiY2hpbGRyZW4iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjNjhcdTIwMGRcdWQ4M2RcdWRjNjhcdTIwMGRcdWQ4M2RcdWRjNjdcdTIwMGRcdWQ4M2RcdWRjNjYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBmYW1pbHlfbWFuX21hbl9ib3lfYm95OiB7CiAgICBrZXl3b3JkczogWyAiaG9tZSIsICJwYXJlbnRzIiwgInBlb3BsZSIsICJodW1hbiIsICJjaGlsZHJlbiIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM2OFx1MjAwZFx1ZDgzZFx1ZGM2OFx1MjAwZFx1ZDgzZFx1ZGM2Nlx1MjAwZFx1ZDgzZFx1ZGM2NiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIGZhbWlseV9tYW5fbWFuX2dpcmxfZ2lybDogewogICAga2V5d29yZHM6IFsgImhvbWUiLCAicGFyZW50cyIsICJwZW9wbGUiLCAiaHVtYW4iLCAiY2hpbGRyZW4iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjNjhcdTIwMGRcdWQ4M2RcdWRjNjhcdTIwMGRcdWQ4M2RcdWRjNjdcdTIwMGRcdWQ4M2RcdWRjNjciLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBmYW1pbHlfd29tYW5fYm95OiB7CiAgICBrZXl3b3JkczogWyAiaG9tZSIsICJwYXJlbnQiLCAicGVvcGxlIiwgImh1bWFuIiwgImNoaWxkIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzY5XHUyMDBkXHVkODNkXHVkYzY2IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgZmFtaWx5X3dvbWFuX2dpcmw6IHsKICAgIGtleXdvcmRzOiBbICJob21lIiwgInBhcmVudCIsICJwZW9wbGUiLCAiaHVtYW4iLCAiY2hpbGQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjNjlcdTIwMGRcdWQ4M2RcdWRjNjciLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBmYW1pbHlfd29tYW5fZ2lybF9ib3k6IHsKICAgIGtleXdvcmRzOiBbICJob21lIiwgInBhcmVudCIsICJwZW9wbGUiLCAiaHVtYW4iLCAiY2hpbGRyZW4iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjNjlcdTIwMGRcdWQ4M2RcdWRjNjdcdTIwMGRcdWQ4M2RcdWRjNjYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBmYW1pbHlfd29tYW5fYm95X2JveTogewogICAga2V5d29yZHM6IFsgImhvbWUiLCAicGFyZW50IiwgInBlb3BsZSIsICJodW1hbiIsICJjaGlsZHJlbiIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM2OVx1MjAwZFx1ZDgzZFx1ZGM2Nlx1MjAwZFx1ZDgzZFx1ZGM2NiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIGZhbWlseV93b21hbl9naXJsX2dpcmw6IHsKICAgIGtleXdvcmRzOiBbICJob21lIiwgInBhcmVudCIsICJwZW9wbGUiLCAiaHVtYW4iLCAiY2hpbGRyZW4iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjNjlcdTIwMGRcdWQ4M2RcdWRjNjdcdTIwMGRcdWQ4M2RcdWRjNjciLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBmYW1pbHlfbWFuX2JveTogewogICAga2V5d29yZHM6IFsgImhvbWUiLCAicGFyZW50IiwgInBlb3BsZSIsICJodW1hbiIsICJjaGlsZCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM2OFx1MjAwZFx1ZDgzZFx1ZGM2NiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIGZhbWlseV9tYW5fZ2lybDogewogICAga2V5d29yZHM6IFsgImhvbWUiLCAicGFyZW50IiwgInBlb3BsZSIsICJodW1hbiIsICJjaGlsZCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM2OFx1MjAwZFx1ZDgzZFx1ZGM2NyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIGZhbWlseV9tYW5fZ2lybF9ib3k6IHsKICAgIGtleXdvcmRzOiBbICJob21lIiwgInBhcmVudCIsICJwZW9wbGUiLCAiaHVtYW4iLCAiY2hpbGRyZW4iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjNjhcdTIwMGRcdWQ4M2RcdWRjNjdcdTIwMGRcdWQ4M2RcdWRjNjYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBmYW1pbHlfbWFuX2JveV9ib3k6IHsKICAgIGtleXdvcmRzOiBbICJob21lIiwgInBhcmVudCIsICJwZW9wbGUiLCAiaHVtYW4iLCAiY2hpbGRyZW4iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjNjhcdTIwMGRcdWQ4M2RcdWRjNjZcdTIwMGRcdWQ4M2RcdWRjNjYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBmYW1pbHlfbWFuX2dpcmxfZ2lybDogewogICAga2V5d29yZHM6IFsgImhvbWUiLCAicGFyZW50IiwgInBlb3BsZSIsICJodW1hbiIsICJjaGlsZHJlbiIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM2OFx1MjAwZFx1ZDgzZFx1ZGM2N1x1MjAwZFx1ZDgzZFx1ZGM2NyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIGNvYXQ6IHsKICAgIGtleXdvcmRzOiBbICJqYWNrZXQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkZTUiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICB3b21hbnNfY2xvdGhlczogewogICAga2V5d29yZHM6IFsgImZhc2hpb24iLCAic2hvcHBpbmdfYmFncyIsICJmZW1hbGUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjNWEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICB0c2hpcnQ6IHsKICAgIGtleXdvcmRzOiBbICJmYXNoaW9uIiwgImNsb3RoIiwgImNhc3VhbCIsICJzaGlydCIsICJ0ZWUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjNTUiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBqZWFuczogewogICAga2V5d29yZHM6IFsgImZhc2hpb24iLCAic2hvcHBpbmciIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjNTYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBuZWNrdGllOiB7CiAgICBrZXl3b3JkczogWyAic2hpcnQiLCAic3VpdHVwIiwgImZvcm1hbCIsICJmYXNoaW9uIiwgImNsb3RoIiwgImJ1c2luZXNzIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzU0IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgZHJlc3M6IHsKICAgIGtleXdvcmRzOiBbICJjbG90aGVzIiwgImZhc2hpb24iLCAic2hvcHBpbmciIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjNTciLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBiaWtpbmk6IHsKICAgIGtleXdvcmRzOiBbICJzd2ltbWluZyIsICJmZW1hbGUiLCAid29tYW4iLCAiZ2lybCIsICJmYXNoaW9uIiwgImJlYWNoIiwgInN1bW1lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM1OSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIGtpbW9ubzogewogICAga2V5d29yZHM6IFsgImRyZXNzIiwgImZhc2hpb24iLCAid29tZW4iLCAiZmVtYWxlIiwgImphcGFuZXNlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzU4IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgbGlwc3RpY2s6IHsKICAgIGtleXdvcmRzOiBbICJmZW1hbGUiLCAiZ2lybCIsICJmYXNoaW9uIiwgIndvbWFuIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzg0IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAga2lzczogewogICAga2V5d29yZHM6IFsgImZhY2UiLCAibGlwcyIsICJsb3ZlIiwgImxpa2UiLCAiYWZmZWN0aW9uIiwgInZhbGVudGluZXMiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjOGIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBmb290cHJpbnRzOiB7CiAgICBrZXl3b3JkczogWyAiZmVldCIsICJ0cmFja2luZyIsICJ3YWxraW5nIiwgImJlYWNoIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzYzIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgaGlnaF9oZWVsOiB7CiAgICBrZXl3b3JkczogWyAiZmFzaGlvbiIsICJzaG9lcyIsICJmZW1hbGUiLCAicHVtcHMiLCAic3RpbGV0dG8iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjNjAiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBzYW5kYWw6IHsKICAgIGtleXdvcmRzOiBbICJzaG9lcyIsICJmYXNoaW9uIiwgImZsaXAgZmxvcHMiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjNjEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBib290OiB7CiAgICBrZXl3b3JkczogWyAic2hvZXMiLCAiZmFzaGlvbiIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM2MiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIG1hbnNfc2hvZTogewogICAga2V5d29yZHM6IFsgImZhc2hpb24iLCAibWFsZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM1ZSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIGF0aGxldGljX3Nob2U6IHsKICAgIGtleXdvcmRzOiBbICJzaG9lcyIsICJzcG9ydHMiLCAic25lYWtlcnMiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjNWYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBzb2NrczogewogICAga2V5d29yZHM6IFsgInN0b2NraW5ncyIsICJjbG90aGVzIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZGU2IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgZ2xvdmVzOiB7CiAgICBrZXl3b3JkczogWyAiaGFuZHMiLCAid2ludGVyIiwgImNsb3RoZXMiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkZTQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBzY2FyZjogewogICAga2V5d29yZHM6IFsgIm5lY2siLCAid2ludGVyIiwgImNsb3RoZXMiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkZTMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICB3b21hbnNfaGF0OiB7CiAgICBrZXl3b3JkczogWyAiZmFzaGlvbiIsICJhY2Nlc3NvcmllcyIsICJmZW1hbGUiLCAibGFkeSIsICJzcHJpbmciIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjNTIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICB0b3BoYXQ6IHsKICAgIGtleXdvcmRzOiBbICJtYWdpYyIsICJnZW50bGVtYW4iLCAiY2xhc3N5IiwgImNpcmN1cyIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGZhOSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIGJpbGxlZF9oYXQ6IHsKICAgIGtleXdvcmRzOiBbICJjYXAiLCAiYmFzZWJhbGwiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkZTIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICByZXNjdWVfd29ya2VyX2hlbG1ldDogewogICAga2V5d29yZHM6IFsgImNvbnN0cnVjdGlvbiIsICJidWlsZCIgXSwKICAgICJjaGFyIjogIlx1MjZkMSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIG1vcnRhcl9ib2FyZDogewogICAga2V5d29yZHM6IFsgInNjaG9vbCIsICJjb2xsZWdlIiwgImRlZ3JlZSIsICJ1bml2ZXJzaXR5IiwgImdyYWR1YXRpb24iLCAiY2FwIiwgImhhdCIsICJsZWdhbCIsICJsZWFybiIsICJlZHVjYXRpb24iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmOTMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBjcm93bjogewogICAga2V5d29yZHM6IFsgImtpbmciLCAia29kIiwgImxlYWRlciIsICJyb3lhbHR5IiwgImxvcmQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjNTEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBzY2hvb2xfc2F0Y2hlbDogewogICAga2V5d29yZHM6IFsgInN0dWRlbnQiLCAiZWR1Y2F0aW9uIiwgImJhZyIsICJiYWNrcGFjayIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGY5MiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIHBvdWNoOiB7CiAgICBrZXl3b3JkczogWyAiYmFnIiwgImFjY2Vzc29yaWVzIiwgInNob3BwaW5nIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzVkIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgcHVyc2U6IHsKICAgIGtleXdvcmRzOiBbICJmYXNoaW9uIiwgImFjY2Vzc29yaWVzIiwgIm1vbmV5IiwgInNhbGVzIiwgInNob3BwaW5nIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzViIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgaGFuZGJhZzogewogICAga2V5d29yZHM6IFsgImZhc2hpb24iLCAiYWNjZXNzb3J5IiwgImFjY2Vzc29yaWVzIiwgInNob3BwaW5nIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzVjIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAicGVvcGxlIgogIH0sCiAgYnJpZWZjYXNlOiB7CiAgICBrZXl3b3JkczogWyAiYnVzaW5lc3MiLCAiZG9jdW1lbnRzIiwgIndvcmsiLCAibGF3IiwgImxlZ2FsIiwgImpvYiIsICJjYXJlZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjYmMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBleWVnbGFzc2VzOiB7CiAgICBrZXl3b3JkczogWyAiZmFzaGlvbiIsICJhY2Nlc3NvcmllcyIsICJleWVzaWdodCIsICJuZXJkeSIsICJkb3JrIiwgImdlZWsiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjNTMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBkYXJrX3N1bmdsYXNzZXM6IHsKICAgIGtleXdvcmRzOiBbICJmYWNlIiwgImNvb2wiLCAiYWNjZXNzb3JpZXMiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRkNzYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICByaW5nOiB7CiAgICBrZXl3b3JkczogWyAid2VkZGluZyIsICJwcm9wb3NlIiwgIm1hcnJpYWdlIiwgInZhbGVudGluZXMiLCAiZGlhbW9uZCIsICJmYXNoaW9uIiwgImpld2VscnkiLCAiZ2VtIiwgImVuZ2FnZW1lbnQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjOGQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJwZW9wbGUiCiAgfSwKICBjbG9zZWRfdW1icmVsbGE6IHsKICAgIGtleXdvcmRzOiBbICJ3ZWF0aGVyIiwgInJhaW4iLCAiZHJpenpsZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGYwMiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInBlb3BsZSIKICB9LAogIGRvZzogewogICAga2V5d29yZHM6IFsgImFuaW1hbCIsICJmcmllbmQiLCAibmF0dXJlIiwgIndvb2YiLCAicHVwcHkiLCAicGV0IiwgImZhaXRoZnVsIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzM2IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgY2F0OiB7CiAgICBrZXl3b3JkczogWyAiYW5pbWFsIiwgIm1lb3ciLCAibmF0dXJlIiwgInBldCIsICJraXR0ZW4iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjMzEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBtb3VzZTogewogICAga2V5d29yZHM6IFsgImFuaW1hbCIsICJuYXR1cmUiLCAiY2hlZXNlX3dlZGdlIiwgInJvZGVudCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGMyZCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIGhhbXN0ZXI6IHsKICAgIGtleXdvcmRzOiBbICJhbmltYWwiLCAibmF0dXJlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzM5IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgcmFiYml0OiB7CiAgICBrZXl3b3JkczogWyAiYW5pbWFsIiwgIm5hdHVyZSIsICJwZXQiLCAic3ByaW5nIiwgIm1hZ2ljIiwgImJ1bm55IiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzMwIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgZm94X2ZhY2U6IHsKICAgIGtleXdvcmRzOiBbICJhbmltYWwiLCAibmF0dXJlIiwgImZhY2UiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkOGEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBiZWFyOiB7CiAgICBrZXl3b3JkczogWyAiYW5pbWFsIiwgIm5hdHVyZSIsICJ3aWxkIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzNiIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgcGFuZGFfZmFjZTogewogICAga2V5d29yZHM6IFsgImFuaW1hbCIsICJuYXR1cmUiLCAicGFuZGEiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjM2MiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBrb2FsYTogewogICAga2V5d29yZHM6IFsgImFuaW1hbCIsICJuYXR1cmUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjMjgiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICB0aWdlcjogewogICAga2V5d29yZHM6IFsgImFuaW1hbCIsICJjYXQiLCAiZGFuZ2VyIiwgIndpbGQiLCAibmF0dXJlIiwgInJvYXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjMmYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBsaW9uOiB7CiAgICBrZXl3b3JkczogWyAiYW5pbWFsIiwgIm5hdHVyZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGQ4MSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIGNvdzogewogICAga2V5d29yZHM6IFsgImJlZWYiLCAib3giLCAiYW5pbWFsIiwgIm5hdHVyZSIsICJtb28iLCAibWlsayIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGMyZSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIHBpZzogewogICAga2V5d29yZHM6IFsgImFuaW1hbCIsICJvaW5rIiwgIm5hdHVyZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGMzNyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIHBpZ19ub3NlOiB7CiAgICBrZXl3b3JkczogWyAiYW5pbWFsIiwgIm9pbmsiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjM2QiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBmcm9nOiB7CiAgICBrZXl3b3JkczogWyAiYW5pbWFsIiwgIm5hdHVyZSIsICJjcm9hayIsICJ0b2FkIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzM4IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgc3F1aWQ6IHsKICAgIGtleXdvcmRzOiBbICJhbmltYWwiLCAibmF0dXJlIiwgIm9jZWFuIiwgInNlYSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGQ5MSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIG9jdG9wdXM6IHsKICAgIGtleXdvcmRzOiBbICJhbmltYWwiLCAiY3JlYXR1cmUiLCAib2NlYW4iLCAic2VhIiwgIm5hdHVyZSIsICJiZWFjaCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGMxOSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIHNocmltcDogewogICAga2V5d29yZHM6IFsgImFuaW1hbCIsICJvY2VhbiIsICJuYXR1cmUiLCAic2VhZm9vZCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGQ5MCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIG1vbmtleV9mYWNlOiB7CiAgICBrZXl3b3JkczogWyAiYW5pbWFsIiwgIm5hdHVyZSIsICJjaXJjdXMiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjMzUiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBnb3JpbGxhOiB7CiAgICBrZXl3b3JkczogWyAiYW5pbWFsIiwgIm5hdHVyZSIsICJjaXJjdXMiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkOGQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBzZWVfbm9fZXZpbDogewogICAga2V5d29yZHM6IFsgIm1vbmtleSIsICJhbmltYWwiLCAibmF0dXJlIiwgImhhaGEiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlNDgiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBoZWFyX25vX2V2aWw6IHsKICAgIGtleXdvcmRzOiBbICJhbmltYWwiLCAibW9ua2V5IiwgIm5hdHVyZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGU0OSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIHNwZWFrX25vX2V2aWw6IHsKICAgIGtleXdvcmRzOiBbICJtb25rZXkiLCAiYW5pbWFsIiwgIm5hdHVyZSIsICJvbWciIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlNGEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBtb25rZXk6IHsKICAgIGtleXdvcmRzOiBbICJhbmltYWwiLCAibmF0dXJlIiwgImJhbmFuYSIsICJjaXJjdXMiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjMTIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBjaGlja2VuOiB7CiAgICBrZXl3b3JkczogWyAiYW5pbWFsIiwgImNsdWNrIiwgIm5hdHVyZSIsICJiaXJkIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzE0IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgcGVuZ3VpbjogewogICAga2V5d29yZHM6IFsgImFuaW1hbCIsICJuYXR1cmUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjMjciLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBiaXJkOiB7CiAgICBrZXl3b3JkczogWyAiYW5pbWFsIiwgIm5hdHVyZSIsICJmbHkiLCAidHdlZXQiLCAic3ByaW5nIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzI2IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgYmFieV9jaGljazogewogICAga2V5d29yZHM6IFsgImFuaW1hbCIsICJjaGlja2VuIiwgImJpcmQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjMjQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBoYXRjaGluZ19jaGljazogewogICAga2V5d29yZHM6IFsgImFuaW1hbCIsICJjaGlja2VuIiwgImVnZyIsICJib3JuIiwgImJhYnkiLCAiYmlyZCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGMyMyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIGhhdGNoZWRfY2hpY2s6IHsKICAgIGtleXdvcmRzOiBbICJhbmltYWwiLCAiY2hpY2tlbiIsICJiYWJ5IiwgImJpcmQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjMjUiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBkdWNrOiB7CiAgICBrZXl3b3JkczogWyAiYW5pbWFsIiwgIm5hdHVyZSIsICJiaXJkIiwgIm1hbGxhcmQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkODYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBlYWdsZTogewogICAga2V5d29yZHM6IFsgImFuaW1hbCIsICJuYXR1cmUiLCAiYmlyZCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGQ4NSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIG93bDogewogICAga2V5d29yZHM6IFsgImFuaW1hbCIsICJuYXR1cmUiLCAiYmlyZCIsICJob290IiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDg5IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgYmF0OiB7CiAgICBrZXl3b3JkczogWyAiYW5pbWFsIiwgIm5hdHVyZSIsICJibGluZCIsICJ2YW1waXJlIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDg3IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgd29sZjogewogICAga2V5d29yZHM6IFsgImFuaW1hbCIsICJuYXR1cmUiLCAid2lsZCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGMzYSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIGJvYXI6IHsKICAgIGtleXdvcmRzOiBbICJhbmltYWwiLCAibmF0dXJlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzE3IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgaG9yc2U6IHsKICAgIGtleXdvcmRzOiBbICJhbmltYWwiLCAiYnJvd24iLCAibmF0dXJlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzM0IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgdW5pY29ybjogewogICAga2V5d29yZHM6IFsgImFuaW1hbCIsICJuYXR1cmUiLCAibXlzdGljYWwiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkODQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBob25leWJlZTogewogICAga2V5d29yZHM6IFsgImFuaW1hbCIsICJpbnNlY3QiLCAibmF0dXJlIiwgImJ1ZyIsICJzcHJpbmciLCAiaG9uZXkiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjMWQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBidWc6IHsKICAgIGtleXdvcmRzOiBbICJhbmltYWwiLCAiaW5zZWN0IiwgIm5hdHVyZSIsICJ3b3JtIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzFiIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgYnV0dGVyZmx5OiB7CiAgICBrZXl3b3JkczogWyAiYW5pbWFsIiwgImluc2VjdCIsICJuYXR1cmUiLCAiY2F0ZXJwaWxsYXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkOGIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBzbmFpbDogewogICAga2V5d29yZHM6IFsgInNsb3ciLCAiYW5pbWFsIiwgInNoZWxsIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzBjIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgYmVldGxlOiB7CiAgICBrZXl3b3JkczogWyAiYW5pbWFsIiwgImluc2VjdCIsICJuYXR1cmUiLCAibGFkeWJ1ZyIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGMxZSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIGFudDogewogICAga2V5d29yZHM6IFsgImFuaW1hbCIsICJpbnNlY3QiLCAibmF0dXJlIiwgImJ1ZyIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGMxYyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIGdyYXNzaG9wcGVyOiB7CiAgICBrZXl3b3JkczogWyAiYW5pbWFsIiwgImNyaWNrZXQiLCAiY2hpcnAiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkOTciLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBzcGlkZXI6IHsKICAgIGtleXdvcmRzOiBbICJhbmltYWwiLCAiYXJhY2huaWQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRkNzciLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBzY29ycGlvbjogewogICAga2V5d29yZHM6IFsgImFuaW1hbCIsICJhcmFjaG5pZCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGQ4MiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIGNyYWI6IHsKICAgIGtleXdvcmRzOiBbICJhbmltYWwiLCAiY3J1c3RhY2VhbiIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGQ4MCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIHNuYWtlOiB7CiAgICBrZXl3b3JkczogWyAiYW5pbWFsIiwgImV2aWwiLCAibmF0dXJlIiwgImhpc3MiLCAicHl0aG9uIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzBkIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgbGl6YXJkOiB7CiAgICBrZXl3b3JkczogWyAiYW5pbWFsIiwgIm5hdHVyZSIsICJyZXB0aWxlIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDhlIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgInQtcmV4IjogewogICAga2V5d29yZHM6IFsgImFuaW1hbCIsICJuYXR1cmUiLCAiZGlub3NhdXIiLCAidHlyYW5ub3NhdXJ1cyIsICJleHRpbmN0IiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDk2IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgc2F1cm9wb2Q6IHsKICAgIGtleXdvcmRzOiBbICJhbmltYWwiLCAibmF0dXJlIiwgImRpbm9zYXVyIiwgImJyYWNoaW9zYXVydXMiLCAiYnJvbnRvc2F1cnVzIiwgImRpcGxvZG9jdXMiLCAiZXh0aW5jdCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGQ5NSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIHR1cnRsZTogewogICAga2V5d29yZHM6IFsgImFuaW1hbCIsICJzbG93IiwgIm5hdHVyZSIsICJ0b3J0b2lzZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGMyMiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIHRyb3BpY2FsX2Zpc2g6IHsKICAgIGtleXdvcmRzOiBbICJhbmltYWwiLCAic3dpbSIsICJvY2VhbiIsICJiZWFjaCIsICJuZW1vIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzIwIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgZmlzaDogewogICAga2V5d29yZHM6IFsgImFuaW1hbCIsICJmb29kIiwgIm5hdHVyZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGMxZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIGJsb3dmaXNoOiB7CiAgICBrZXl3b3JkczogWyAiYW5pbWFsIiwgIm5hdHVyZSIsICJmb29kIiwgInNlYSIsICJvY2VhbiIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGMyMSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIGRvbHBoaW46IHsKICAgIGtleXdvcmRzOiBbICJhbmltYWwiLCAibmF0dXJlIiwgImZpc2giLCAic2VhIiwgIm9jZWFuIiwgImZsaXBwZXIiLCAiZmlucyIsICJiZWFjaCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGMyYyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIHNoYXJrOiB7CiAgICBrZXl3b3JkczogWyAiYW5pbWFsIiwgIm5hdHVyZSIsICJmaXNoIiwgInNlYSIsICJvY2VhbiIsICJqYXdzIiwgImZpbnMiLCAiYmVhY2giIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkODgiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICB3aGFsZTogewogICAga2V5d29yZHM6IFsgImFuaW1hbCIsICJuYXR1cmUiLCAic2VhIiwgIm9jZWFuIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzMzIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgd2hhbGUyOiB7CiAgICBrZXl3b3JkczogWyAiYW5pbWFsIiwgIm5hdHVyZSIsICJzZWEiLCAib2NlYW4iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjMGIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBjcm9jb2RpbGU6IHsKICAgIGtleXdvcmRzOiBbICJhbmltYWwiLCAibmF0dXJlIiwgInJlcHRpbGUiLCAibGl6YXJkIiwgImFsbGlnYXRvciIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGMwYSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIGxlb3BhcmQ6IHsKICAgIGtleXdvcmRzOiBbICJhbmltYWwiLCAibmF0dXJlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzA2IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgemVicmE6IHsKICAgIGtleXdvcmRzOiBbICJhbmltYWwiLCAibmF0dXJlIiwgInN0cmlwZXMiLCAic2FmYXJpIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDkzIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgdGlnZXIyOiB7CiAgICBrZXl3b3JkczogWyAiYW5pbWFsIiwgIm5hdHVyZSIsICJyb2FyIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzA1IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgd2F0ZXJfYnVmZmFsbzogewogICAga2V5d29yZHM6IFsgImFuaW1hbCIsICJuYXR1cmUiLCAib3giLCAiY293IiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzAzIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgb3g6IHsKICAgIGtleXdvcmRzOiBbICJhbmltYWwiLCAiY293IiwgImJlZWYiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjMDIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBjb3cyOiB7CiAgICBrZXl3b3JkczogWyAiYmVlZiIsICJveCIsICJhbmltYWwiLCAibmF0dXJlIiwgIm1vbyIsICJtaWxrIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzA0IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgZGVlcjogewogICAga2V5d29yZHM6IFsgImFuaW1hbCIsICJuYXR1cmUiLCAiaG9ybnMiLCAidmVuaXNvbiIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGQ4YyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIGRyb21lZGFyeV9jYW1lbDogewogICAga2V5d29yZHM6IFsgImFuaW1hbCIsICJob3QiLCAiZGVzZXJ0IiwgImh1bXAiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjMmEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBjYW1lbDogewogICAga2V5d29yZHM6IFsgImFuaW1hbCIsICJuYXR1cmUiLCAiaG90IiwgImRlc2VydCIsICJodW1wIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzJiIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgZ2lyYWZmZTogewogICAga2V5d29yZHM6IFsgImFuaW1hbCIsICJuYXR1cmUiLCAic3BvdHMiLCAic2FmYXJpIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDkyIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgZWxlcGhhbnQ6IHsKICAgIGtleXdvcmRzOiBbICJhbmltYWwiLCAibmF0dXJlIiwgIm5vc2UiLCAidGgiLCAiY2lyY3VzIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzE4IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgcmhpbm9jZXJvczogewogICAga2V5d29yZHM6IFsgImFuaW1hbCIsICJuYXR1cmUiLCAiaG9ybiIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGQ4ZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIGdvYXQ6IHsKICAgIGtleXdvcmRzOiBbICJhbmltYWwiLCAibmF0dXJlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzEwIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgcmFtOiB7CiAgICBrZXl3b3JkczogWyAiYW5pbWFsIiwgInNoZWVwIiwgIm5hdHVyZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGMwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIHNoZWVwOiB7CiAgICBrZXl3b3JkczogWyAiYW5pbWFsIiwgIm5hdHVyZSIsICJ3b29sIiwgInNoaXBpdCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGMxMSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIHJhY2Vob3JzZTogewogICAga2V5d29yZHM6IFsgImFuaW1hbCIsICJnYW1ibGUiLCAibHVjayIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGMwZSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIHBpZzI6IHsKICAgIGtleXdvcmRzOiBbICJhbmltYWwiLCAibmF0dXJlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzE2IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgcmF0OiB7CiAgICBrZXl3b3JkczogWyAiYW5pbWFsIiwgIm1vdXNlIiwgInJvZGVudCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGMwMCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIG1vdXNlMjogewogICAga2V5d29yZHM6IFsgImFuaW1hbCIsICJuYXR1cmUiLCAicm9kZW50IiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzAxIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgcm9vc3RlcjogewogICAga2V5d29yZHM6IFsgImFuaW1hbCIsICJuYXR1cmUiLCAiY2hpY2tlbiIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGMxMyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIHR1cmtleTogewogICAga2V5d29yZHM6IFsgImFuaW1hbCIsICJiaXJkIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDgzIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgZG92ZTogewogICAga2V5d29yZHM6IFsgImFuaW1hbCIsICJiaXJkIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZDRhIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgZG9nMjogewogICAga2V5d29yZHM6IFsgImFuaW1hbCIsICJuYXR1cmUiLCAiZnJpZW5kIiwgImRvZ2UiLCAicGV0IiwgImZhaXRoZnVsIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzE1IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgcG9vZGxlOiB7CiAgICBrZXl3b3JkczogWyAiZG9nIiwgImFuaW1hbCIsICIxMDEiLCAibmF0dXJlIiwgInBldCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGMyOSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIGNhdDI6IHsKICAgIGtleXdvcmRzOiBbICJhbmltYWwiLCAibWVvdyIsICJwZXQiLCAiY2F0cyIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGMwOCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIHJhYmJpdDI6IHsKICAgIGtleXdvcmRzOiBbICJhbmltYWwiLCAibmF0dXJlIiwgInBldCIsICJtYWdpYyIsICJzcHJpbmciIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjMDciLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBjaGlwbXVuazogewogICAga2V5d29yZHM6IFsgImFuaW1hbCIsICJuYXR1cmUiLCAicm9kZW50IiwgInNxdWlycmVsIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzNmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgaGVkZ2Vob2c6IHsKICAgIGtleXdvcmRzOiBbICJhbmltYWwiLCAibmF0dXJlIiwgInNwaW55IiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDk0IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgcGF3X3ByaW50czogewogICAga2V5d29yZHM6IFsgImFuaW1hbCIsICJ0cmFja2luZyIsICJmb290cHJpbnRzIiwgImRvZyIsICJjYXQiLCAicGV0IiwgImZlZXQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjM2UiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBkcmFnb246IHsKICAgIGtleXdvcmRzOiBbICJhbmltYWwiLCAibXl0aCIsICJuYXR1cmUiLCAiY2hpbmVzZSIsICJncmVlbiIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGMwOSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIGRyYWdvbl9mYWNlOiB7CiAgICBrZXl3b3JkczogWyAiYW5pbWFsIiwgIm15dGgiLCAibmF0dXJlIiwgImNoaW5lc2UiLCAiZ3JlZW4iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjMzIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBjYWN0dXM6IHsKICAgIGtleXdvcmRzOiBbICJ2ZWdldGFibGUiLCAicGxhbnQiLCAibmF0dXJlIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjM1IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgY2hyaXN0bWFzX3RyZWU6IHsKICAgIGtleXdvcmRzOiBbICJmZXN0aXZhbCIsICJ2YWNhdGlvbiIsICJkZWNlbWJlciIsICJ4bWFzIiwgImNlbGVicmF0aW9uIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjg0IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgZXZlcmdyZWVuX3RyZWU6IHsKICAgIGtleXdvcmRzOiBbICJwbGFudCIsICJuYXR1cmUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmMzIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBkZWNpZHVvdXNfdHJlZTogewogICAga2V5d29yZHM6IFsgInBsYW50IiwgIm5hdHVyZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGYzMyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIHBhbG1fdHJlZTogewogICAga2V5d29yZHM6IFsgInBsYW50IiwgInZlZ2V0YWJsZSIsICJuYXR1cmUiLCAic3VtbWVyIiwgImJlYWNoIiwgIm1vaml0byIsICJ0cm9waWNhbCIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGYzNCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIHNlZWRsaW5nOiB7CiAgICBrZXl3b3JkczogWyAicGxhbnQiLCAibmF0dXJlIiwgImdyYXNzIiwgImxhd24iLCAic3ByaW5nIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjMxIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgaGVyYjogewogICAga2V5d29yZHM6IFsgInZlZ2V0YWJsZSIsICJwbGFudCIsICJtZWRpY2luZSIsICJ3ZWVkIiwgImdyYXNzIiwgImxhd24iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmM2YiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBzaGFtcm9jazogewogICAga2V5d29yZHM6IFsgInZlZ2V0YWJsZSIsICJwbGFudCIsICJuYXR1cmUiLCAiaXJpc2giLCAiY2xvdmVyIiBdLAogICAgImNoYXIiOiAiXHUyNjE4IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgZm91cl9sZWFmX2Nsb3ZlcjogewogICAga2V5d29yZHM6IFsgInZlZ2V0YWJsZSIsICJwbGFudCIsICJuYXR1cmUiLCAibHVja3kiLCAiaXJpc2giIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmNDAiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBiYW1ib286IHsKICAgIGtleXdvcmRzOiBbICJwbGFudCIsICJuYXR1cmUiLCAidmVnZXRhYmxlIiwgInBhbmRhIiwgInBpbmVfZGVjb3JhdGlvbiIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGY4ZCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIHRhbmFiYXRhX3RyZWU6IHsKICAgIGtleXdvcmRzOiBbICJwbGFudCIsICJuYXR1cmUiLCAiYnJhbmNoIiwgInN1bW1lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGY4YiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIGxlYXZlczogewogICAga2V5d29yZHM6IFsgIm5hdHVyZSIsICJwbGFudCIsICJ0cmVlIiwgInZlZ2V0YWJsZSIsICJncmFzcyIsICJsYXduIiwgInNwcmluZyIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGY0MyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIGZhbGxlbl9sZWFmOiB7CiAgICBrZXl3b3JkczogWyAibmF0dXJlIiwgInBsYW50IiwgInZlZ2V0YWJsZSIsICJsZWF2ZXMiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmNDIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBtYXBsZV9sZWFmOiB7CiAgICBrZXl3b3JkczogWyAibmF0dXJlIiwgInBsYW50IiwgInZlZ2V0YWJsZSIsICJjYSIsICJmYWxsIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjQxIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgZWFyX29mX3JpY2U6IHsKICAgIGtleXdvcmRzOiBbICJuYXR1cmUiLCAicGxhbnQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmM2UiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBoaWJpc2N1czogewogICAga2V5d29yZHM6IFsgInBsYW50IiwgInZlZ2V0YWJsZSIsICJmbG93ZXJzIiwgImJlYWNoIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjNhIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgc3VuZmxvd2VyOiB7CiAgICBrZXl3b3JkczogWyAibmF0dXJlIiwgInBsYW50IiwgImZhbGwiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmM2IiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICByb3NlOiB7CiAgICBrZXl3b3JkczogWyAiZmxvd2VycyIsICJ2YWxlbnRpbmVzIiwgImxvdmUiLCAic3ByaW5nIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjM5IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgd2lsdGVkX2Zsb3dlcjogewogICAga2V5d29yZHM6IFsgInBsYW50IiwgIm5hdHVyZSIsICJmbG93ZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkNDAiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICB0dWxpcDogewogICAga2V5d29yZHM6IFsgImZsb3dlcnMiLCAicGxhbnQiLCAibmF0dXJlIiwgInN1bW1lciIsICJzcHJpbmciIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmMzciLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBibG9zc29tOiB7CiAgICBrZXl3b3JkczogWyAibmF0dXJlIiwgImZsb3dlcnMiLCAieWVsbG93IiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjNjIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgY2hlcnJ5X2Jsb3Nzb206IHsKICAgIGtleXdvcmRzOiBbICJuYXR1cmUiLCAicGxhbnQiLCAic3ByaW5nIiwgImZsb3dlciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGYzOCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIGJvdXF1ZXQ6IHsKICAgIGtleXdvcmRzOiBbICJmbG93ZXJzIiwgIm5hdHVyZSIsICJzcHJpbmciIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjOTAiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBtdXNocm9vbTogewogICAga2V5d29yZHM6IFsgInBsYW50IiwgInZlZ2V0YWJsZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGY0NCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIGNoZXN0bnV0OiB7CiAgICBrZXl3b3JkczogWyAiZm9vZCIsICJzcXVpcnJlbCIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGYzMCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIGphY2tfb19sYW50ZXJuOiB7CiAgICBrZXl3b3JkczogWyAiaGFsbG93ZWVuIiwgImxpZ2h0IiwgInB1bXBraW4iLCAiY3JlZXB5IiwgImZhbGwiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmODMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBzaGVsbDogewogICAga2V5d29yZHM6IFsgIm5hdHVyZSIsICJzZWEiLCAiYmVhY2giIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjMWEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBzcGlkZXJfd2ViOiB7CiAgICBrZXl3b3JkczogWyAiYW5pbWFsIiwgImluc2VjdCIsICJhcmFjaG5pZCIsICJzaWxrIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZDc4IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgZWFydGhfYW1lcmljYXM6IHsKICAgIGtleXdvcmRzOiBbICJnbG9iZSIsICJ3b3JsZCIsICJVU0EiLCAiaW50ZXJuYXRpb25hbCIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGYwZSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIGVhcnRoX2FmcmljYTogewogICAga2V5d29yZHM6IFsgImdsb2JlIiwgIndvcmxkIiwgImludGVybmF0aW9uYWwiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmMGQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBlYXJ0aF9hc2lhOiB7CiAgICBrZXl3b3JkczogWyAiZ2xvYmUiLCAid29ybGQiLCAiZWFzdCIsICJpbnRlcm5hdGlvbmFsIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgZnVsbF9tb29uOiB7CiAgICBrZXl3b3JkczogWyAibmF0dXJlIiwgInllbGxvdyIsICJ0d2lsaWdodCIsICJwbGFuZXQiLCAic3BhY2UiLCAibmlnaHQiLCAiZXZlbmluZyIsICJzbGVlcCIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGYxNSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIHdhbmluZ19naWJib3VzX21vb246IHsKICAgIGtleXdvcmRzOiBbICJuYXR1cmUiLCAidHdpbGlnaHQiLCAicGxhbmV0IiwgInNwYWNlIiwgIm5pZ2h0IiwgImV2ZW5pbmciLCAic2xlZXAiLCAid2F4aW5nX2dpYmJvdXNfbW9vbiIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGYxNiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIGxhc3RfcXVhcnRlcl9tb29uOiB7CiAgICBrZXl3b3JkczogWyAibmF0dXJlIiwgInR3aWxpZ2h0IiwgInBsYW5ldCIsICJzcGFjZSIsICJuaWdodCIsICJldmVuaW5nIiwgInNsZWVwIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjE3IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgd2FuaW5nX2NyZXNjZW50X21vb246IHsKICAgIGtleXdvcmRzOiBbICJuYXR1cmUiLCAidHdpbGlnaHQiLCAicGxhbmV0IiwgInNwYWNlIiwgIm5pZ2h0IiwgImV2ZW5pbmciLCAic2xlZXAiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmMTgiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBuZXdfbW9vbjogewogICAga2V5d29yZHM6IFsgIm5hdHVyZSIsICJ0d2lsaWdodCIsICJwbGFuZXQiLCAic3BhY2UiLCAibmlnaHQiLCAiZXZlbmluZyIsICJzbGVlcCIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGYxMSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIHdheGluZ19jcmVzY2VudF9tb29uOiB7CiAgICBrZXl3b3JkczogWyAibmF0dXJlIiwgInR3aWxpZ2h0IiwgInBsYW5ldCIsICJzcGFjZSIsICJuaWdodCIsICJldmVuaW5nIiwgInNsZWVwIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjEyIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgZmlyc3RfcXVhcnRlcl9tb29uOiB7CiAgICBrZXl3b3JkczogWyAibmF0dXJlIiwgInR3aWxpZ2h0IiwgInBsYW5ldCIsICJzcGFjZSIsICJuaWdodCIsICJldmVuaW5nIiwgInNsZWVwIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjEzIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgd2F4aW5nX2dpYmJvdXNfbW9vbjogewogICAga2V5d29yZHM6IFsgIm5hdHVyZSIsICJuaWdodCIsICJza3kiLCAiZ3JheSIsICJ0d2lsaWdodCIsICJwbGFuZXQiLCAic3BhY2UiLCAiZXZlbmluZyIsICJzbGVlcCIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGYxNCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIG5ld19tb29uX3dpdGhfZmFjZTogewogICAga2V5d29yZHM6IFsgIm5hdHVyZSIsICJ0d2lsaWdodCIsICJwbGFuZXQiLCAic3BhY2UiLCAibmlnaHQiLCAiZXZlbmluZyIsICJzbGVlcCIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGYxYSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIGZ1bGxfbW9vbl93aXRoX2ZhY2U6IHsKICAgIGtleXdvcmRzOiBbICJuYXR1cmUiLCAidHdpbGlnaHQiLCAicGxhbmV0IiwgInNwYWNlIiwgIm5pZ2h0IiwgImV2ZW5pbmciLCAic2xlZXAiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmMWQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBmaXJzdF9xdWFydGVyX21vb25fd2l0aF9mYWNlOiB7CiAgICBrZXl3b3JkczogWyAibmF0dXJlIiwgInR3aWxpZ2h0IiwgInBsYW5ldCIsICJzcGFjZSIsICJuaWdodCIsICJldmVuaW5nIiwgInNsZWVwIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjFiIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgbGFzdF9xdWFydGVyX21vb25fd2l0aF9mYWNlOiB7CiAgICBrZXl3b3JkczogWyAibmF0dXJlIiwgInR3aWxpZ2h0IiwgInBsYW5ldCIsICJzcGFjZSIsICJuaWdodCIsICJldmVuaW5nIiwgInNsZWVwIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjFjIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgc3VuX3dpdGhfZmFjZTogewogICAga2V5d29yZHM6IFsgIm5hdHVyZSIsICJtb3JuaW5nIiwgInNreSIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGYxZSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIGNyZXNjZW50X21vb246IHsKICAgIGtleXdvcmRzOiBbICJuaWdodCIsICJzbGVlcCIsICJza3kiLCAiZXZlbmluZyIsICJtYWdpYyIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGYxOSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIHN0YXI6IHsKICAgIGtleXdvcmRzOiBbICJuaWdodCIsICJ5ZWxsb3ciIF0sCiAgICAiY2hhciI6ICJcdTJiNTAiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBzdGFyMjogewogICAga2V5d29yZHM6IFsgIm5pZ2h0IiwgInNwYXJrbGUiLCAiYXdlc29tZSIsICJnb29kIiwgIm1hZ2ljIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjFmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgZGl6enk6IHsKICAgIGtleXdvcmRzOiBbICJzdGFyIiwgInNwYXJrbGUiLCAic2hvb3QiLCAibWFnaWMiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjYWIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBzcGFya2xlczogewogICAga2V5d29yZHM6IFsgInN0YXJzIiwgInNoaW5lIiwgInNoaW55IiwgImNvb2wiLCAiYXdlc29tZSIsICJnb29kIiwgIm1hZ2ljIiBdLAogICAgImNoYXIiOiAiXHUyNzI4IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgY29tZXQ6IHsKICAgIGtleXdvcmRzOiBbICJzcGFjZSIgXSwKICAgICJjaGFyIjogIlx1MjYwNCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIHN1bm55OiB7CiAgICBrZXl3b3JkczogWyAid2VhdGhlciIsICJuYXR1cmUiLCAiYnJpZ2h0bmVzcyIsICJzdW1tZXIiLCAiYmVhY2giLCAic3ByaW5nIiBdLAogICAgImNoYXIiOiAiXHUyNjAwXHVmZTBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgc3VuX2JlaGluZF9zbWFsbF9jbG91ZDogewogICAga2V5d29yZHM6IFsgIndlYXRoZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmMjQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBwYXJ0bHlfc3Vubnk6IHsKICAgIGtleXdvcmRzOiBbICJ3ZWF0aGVyIiwgIm5hdHVyZSIsICJjbG91ZHkiLCAibW9ybmluZyIsICJmYWxsIiwgInNwcmluZyIgXSwKICAgICJjaGFyIjogIlx1MjZjNSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIHN1bl9iZWhpbmRfbGFyZ2VfY2xvdWQ6IHsKICAgIGtleXdvcmRzOiBbICJ3ZWF0aGVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjI1IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgc3VuX2JlaGluZF9yYWluX2Nsb3VkOiB7CiAgICBrZXl3b3JkczogWyAid2VhdGhlciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGYyNiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIGNsb3VkOiB7CiAgICBrZXl3b3JkczogWyAid2VhdGhlciIsICJza3kiIF0sCiAgICAiY2hhciI6ICJcdTI2MDFcdWZlMGYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBjbG91ZF93aXRoX3JhaW46IHsKICAgIGtleXdvcmRzOiBbICJ3ZWF0aGVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjI3IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgY2xvdWRfd2l0aF9saWdodG5pbmdfYW5kX3JhaW46IHsKICAgIGtleXdvcmRzOiBbICJ3ZWF0aGVyIiwgImxpZ2h0bmluZyIgXSwKICAgICJjaGFyIjogIlx1MjZjOCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIGNsb3VkX3dpdGhfbGlnaHRuaW5nOiB7CiAgICBrZXl3b3JkczogWyAid2VhdGhlciIsICJ0aHVuZGVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjI5IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgemFwOiB7CiAgICBrZXl3b3JkczogWyAidGh1bmRlciIsICJ3ZWF0aGVyIiwgImxpZ2h0bmluZyBib2x0IiwgImZhc3QiIF0sCiAgICAiY2hhciI6ICJcdTI2YTEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBmaXJlOiB7CiAgICBrZXl3b3JkczogWyAiaG90IiwgImNvb2siLCAiZmxhbWUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRkMjUiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBib29tOiB7CiAgICBrZXl3b3JkczogWyAiYm9tYiIsICJleHBsb2RlIiwgImV4cGxvc2lvbiIsICJjb2xsaXNpb24iLCAiYmxvd24iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjYTUiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBzbm93Zmxha2U6IHsKICAgIGtleXdvcmRzOiBbICJ3aW50ZXIiLCAic2Vhc29uIiwgImNvbGQiLCAid2VhdGhlciIsICJjaHJpc3RtYXMiLCAieG1hcyIgXSwKICAgICJjaGFyIjogIlx1Mjc0NFx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIGNsb3VkX3dpdGhfc25vdzogewogICAga2V5d29yZHM6IFsgIndlYXRoZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmMjgiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBzbm93bWFuOiB7CiAgICBrZXl3b3JkczogWyAid2ludGVyIiwgInNlYXNvbiIsICJjb2xkIiwgIndlYXRoZXIiLCAiY2hyaXN0bWFzIiwgInhtYXMiLCAiZnJvemVuIiwgIndpdGhvdXRfc25vdyIgXSwKICAgICJjaGFyIjogIlx1MjZjNCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIHNub3dtYW5fd2l0aF9zbm93OiB7CiAgICBrZXl3b3JkczogWyAid2ludGVyIiwgInNlYXNvbiIsICJjb2xkIiwgIndlYXRoZXIiLCAiY2hyaXN0bWFzIiwgInhtYXMiLCAiZnJvemVuIiBdLAogICAgImNoYXIiOiAiXHUyNjAzIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgd2luZF9mYWNlOiB7CiAgICBrZXl3b3JkczogWyAiZ3VzdCIsICJhaXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmMmMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBkYXNoOiB7CiAgICBrZXl3b3JkczogWyAid2luZCIsICJhaXIiLCAiZmFzdCIsICJzaG9vIiwgImZhcnQiLCAic21va2UiLCAicHVmZiIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGNhOCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIHRvcm5hZG86IHsKICAgIGtleXdvcmRzOiBbICJ3ZWF0aGVyIiwgImN5Y2xvbmUiLCAidHdpc3RlciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGYyYSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIGZvZzogewogICAga2V5d29yZHM6IFsgIndlYXRoZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmMmIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICBvcGVuX3VtYnJlbGxhOiB7CiAgICBrZXl3b3JkczogWyAid2VhdGhlciIsICJzcHJpbmciIF0sCiAgICAiY2hhciI6ICJcdTI2MDIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhbmltYWxzX2FuZF9uYXR1cmUiCiAgfSwKICB1bWJyZWxsYTogewogICAga2V5d29yZHM6IFsgInJhaW55IiwgIndlYXRoZXIiLCAic3ByaW5nIiBdLAogICAgImNoYXIiOiAiXHUyNjE0IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgZHJvcGxldDogewogICAga2V5d29yZHM6IFsgIndhdGVyIiwgImRyaXAiLCAiZmF1Y2V0IiwgInNwcmluZyIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGNhNyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIHN3ZWF0X2Ryb3BzOiB7CiAgICBrZXl3b3JkczogWyAid2F0ZXIiLCAiZHJpcCIsICJvb3BzIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkY2E2IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYW5pbWFsc19hbmRfbmF0dXJlIgogIH0sCiAgb2NlYW46IHsKICAgIGtleXdvcmRzOiBbICJzZWEiLCAid2F0ZXIiLCAid2F2ZSIsICJuYXR1cmUiLCAidHN1bmFtaSIsICJkaXNhc3RlciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGYwYSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFuaW1hbHNfYW5kX25hdHVyZSIKICB9LAogIGdyZWVuX2FwcGxlOiB7CiAgICBrZXl3b3JkczogWyAiZnJ1aXQiLCAibmF0dXJlIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjRmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZm9vZF9hbmRfZHJpbmsiCiAgfSwKICBhcHBsZTogewogICAga2V5d29yZHM6IFsgImZydWl0IiwgIm1hYyIsICJzY2hvb2wiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmNGUiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmb29kX2FuZF9kcmluayIKICB9LAogIHBlYXI6IHsKICAgIGtleXdvcmRzOiBbICJmcnVpdCIsICJuYXR1cmUiLCAiZm9vZCIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGY1MCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZvb2RfYW5kX2RyaW5rIgogIH0sCiAgdGFuZ2VyaW5lOiB7CiAgICBrZXl3b3JkczogWyAiZm9vZCIsICJmcnVpdCIsICJuYXR1cmUiLCAib3JhbmdlIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjRhIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZm9vZF9hbmRfZHJpbmsiCiAgfSwKICBsZW1vbjogewogICAga2V5d29yZHM6IFsgImZydWl0IiwgIm5hdHVyZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGY0YiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZvb2RfYW5kX2RyaW5rIgogIH0sCiAgYmFuYW5hOiB7CiAgICBrZXl3b3JkczogWyAiZnJ1aXQiLCAiZm9vZCIsICJtb25rZXkiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmNGMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmb29kX2FuZF9kcmluayIKICB9LAogIHdhdGVybWVsb246IHsKICAgIGtleXdvcmRzOiBbICJmcnVpdCIsICJmb29kIiwgInBpY25pYyIsICJzdW1tZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmNDkiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmb29kX2FuZF9kcmluayIKICB9LAogIGdyYXBlczogewogICAga2V5d29yZHM6IFsgImZydWl0IiwgImZvb2QiLCAid2luZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGY0NyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZvb2RfYW5kX2RyaW5rIgogIH0sCiAgc3RyYXdiZXJyeTogewogICAga2V5d29yZHM6IFsgImZydWl0IiwgImZvb2QiLCAibmF0dXJlIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjUzIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZm9vZF9hbmRfZHJpbmsiCiAgfSwKICBtZWxvbjogewogICAga2V5d29yZHM6IFsgImZydWl0IiwgIm5hdHVyZSIsICJmb29kIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjQ4IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZm9vZF9hbmRfZHJpbmsiCiAgfSwKICBjaGVycmllczogewogICAga2V5d29yZHM6IFsgImZvb2QiLCAiZnJ1aXQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmNTIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmb29kX2FuZF9kcmluayIKICB9LAogIHBlYWNoOiB7CiAgICBrZXl3b3JkczogWyAiZnJ1aXQiLCAibmF0dXJlIiwgImZvb2QiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmNTEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmb29kX2FuZF9kcmluayIKICB9LAogIHBpbmVhcHBsZTogewogICAga2V5d29yZHM6IFsgImZydWl0IiwgIm5hdHVyZSIsICJmb29kIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjRkIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZm9vZF9hbmRfZHJpbmsiCiAgfSwKICBjb2NvbnV0OiB7CiAgICBrZXl3b3JkczogWyAiZnJ1aXQiLCAibmF0dXJlIiwgImZvb2QiLCAicGFsbSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGQ2NSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZvb2RfYW5kX2RyaW5rIgogIH0sCiAga2l3aV9mcnVpdDogewogICAga2V5d29yZHM6IFsgImZydWl0IiwgImZvb2QiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkNWQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmb29kX2FuZF9kcmluayIKICB9LAogIGF2b2NhZG86IHsKICAgIGtleXdvcmRzOiBbICJmcnVpdCIsICJmb29kIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDUxIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZm9vZF9hbmRfZHJpbmsiCiAgfSwKICBicm9jY29saTogewogICAga2V5d29yZHM6IFsgImZydWl0IiwgImZvb2QiLCAidmVnZXRhYmxlIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDY2IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZm9vZF9hbmRfZHJpbmsiCiAgfSwKICB0b21hdG86IHsKICAgIGtleXdvcmRzOiBbICJmcnVpdCIsICJ2ZWdldGFibGUiLCAibmF0dXJlIiwgImZvb2QiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmNDUiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmb29kX2FuZF9kcmluayIKICB9LAogIGVnZ3BsYW50OiB7CiAgICBrZXl3b3JkczogWyAidmVnZXRhYmxlIiwgIm5hdHVyZSIsICJmb29kIiwgImF1YmVyZ2luZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGY0NiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZvb2RfYW5kX2RyaW5rIgogIH0sCiAgY3VjdW1iZXI6IHsKICAgIGtleXdvcmRzOiBbICJmcnVpdCIsICJmb29kIiwgInBpY2tsZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGQ1MiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZvb2RfYW5kX2RyaW5rIgogIH0sCiAgY2Fycm90OiB7CiAgICBrZXl3b3JkczogWyAidmVnZXRhYmxlIiwgImZvb2QiLCAib3JhbmdlIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDU1IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZm9vZF9hbmRfZHJpbmsiCiAgfSwKICBob3RfcGVwcGVyOiB7CiAgICBrZXl3b3JkczogWyAiZm9vZCIsICJzcGljeSIsICJjaGlsbGkiLCAiY2hpbGkiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmMzYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmb29kX2FuZF9kcmluayIKICB9LAogIHBvdGF0bzogewogICAga2V5d29yZHM6IFsgImZvb2QiLCAidHViZXIiLCAidmVnYXRhYmxlIiwgInN0YXJjaCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGQ1NCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZvb2RfYW5kX2RyaW5rIgogIH0sCiAgY29ybjogewogICAga2V5d29yZHM6IFsgImZvb2QiLCAidmVnZXRhYmxlIiwgInBsYW50IiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjNkIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZm9vZF9hbmRfZHJpbmsiCiAgfSwKICBzd2VldF9wb3RhdG86IHsKICAgIGtleXdvcmRzOiBbICJmb29kIiwgIm5hdHVyZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGY2MCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZvb2RfYW5kX2RyaW5rIgogIH0sCiAgcGVhbnV0czogewogICAga2V5d29yZHM6IFsgImZvb2QiLCAibnV0IiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDVjIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZm9vZF9hbmRfZHJpbmsiCiAgfSwKICBob25leV9wb3Q6IHsKICAgIGtleXdvcmRzOiBbICJiZWVzIiwgInN3ZWV0IiwgImtpdGNoZW4iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmNmYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmb29kX2FuZF9kcmluayIKICB9LAogIGNyb2lzc2FudDogewogICAga2V5d29yZHM6IFsgImZvb2QiLCAiYnJlYWQiLCAiZnJlbmNoIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDUwIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZm9vZF9hbmRfZHJpbmsiCiAgfSwKICBicmVhZDogewogICAga2V5d29yZHM6IFsgImZvb2QiLCAid2hlYXQiLCAiYnJlYWtmYXN0IiwgInRvYXN0IiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjVlIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZm9vZF9hbmRfZHJpbmsiCiAgfSwKICBiYWd1ZXR0ZV9icmVhZDogewogICAga2V5d29yZHM6IFsgImZvb2QiLCAiYnJlYWQiLCAiZnJlbmNoIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDU2IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZm9vZF9hbmRfZHJpbmsiCiAgfSwKICBwcmV0emVsOiB7CiAgICBrZXl3b3JkczogWyAiZm9vZCIsICJicmVhZCIsICJ0d2lzdGVkIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDY4IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZm9vZF9hbmRfZHJpbmsiCiAgfSwKICBjaGVlc2U6IHsKICAgIGtleXdvcmRzOiBbICJmb29kIiwgImNoYWRkZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkYzAiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmb29kX2FuZF9kcmluayIKICB9LAogIGVnZzogewogICAga2V5d29yZHM6IFsgImZvb2QiLCAiY2hpY2tlbiIsICJicmVha2Zhc3QiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkNWEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmb29kX2FuZF9kcmluayIKICB9LAogIGJhY29uOiB7CiAgICBrZXl3b3JkczogWyAiZm9vZCIsICJicmVha2Zhc3QiLCAicG9yayIsICJwaWciLCAibWVhdCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGQ1MyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZvb2RfYW5kX2RyaW5rIgogIH0sCiAgc3RlYWs6IHsKICAgIGtleXdvcmRzOiBbICJmb29kIiwgImNvdyIsICJtZWF0IiwgImN1dCIsICJjaG9wIiwgImxhbWJjaG9wIiwgInBvcmtjaG9wIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDY5IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZm9vZF9hbmRfZHJpbmsiCiAgfSwKICBwYW5jYWtlczogewogICAga2V5d29yZHM6IFsgImZvb2QiLCAiYnJlYWtmYXN0IiwgImZsYXBqYWNrcyIsICJob3RjYWtlcyIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGQ1ZSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZvb2RfYW5kX2RyaW5rIgogIH0sCiAgcG91bHRyeV9sZWc6IHsKICAgIGtleXdvcmRzOiBbICJmb29kIiwgIm1lYXQiLCAiZHJ1bXN0aWNrIiwgImJpcmQiLCAiY2hpY2tlbiIsICJ0dXJrZXkiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmNTciLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmb29kX2FuZF9kcmluayIKICB9LAogIG1lYXRfb25fYm9uZTogewogICAga2V5d29yZHM6IFsgImdvb2QiLCAiZm9vZCIsICJkcnVtc3RpY2siIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmNTYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmb29kX2FuZF9kcmluayIKICB9LAogIGZyaWVkX3NocmltcDogewogICAga2V5d29yZHM6IFsgImZvb2QiLCAiYW5pbWFsIiwgImFwcGV0aXplciIsICJzdW1tZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmNjQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmb29kX2FuZF9kcmluayIKICB9LAogIGZyaWVkX2VnZzogewogICAga2V5d29yZHM6IFsgImZvb2QiLCAiYnJlYWtmYXN0IiwgImtpdGNoZW4iLCAiZWdnIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjczIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZm9vZF9hbmRfZHJpbmsiCiAgfSwKICBoYW1idXJnZXI6IHsKICAgIGtleXdvcmRzOiBbICJtZWF0IiwgImZhc3QgZm9vZCIsICJiZWVmIiwgImNoZWVzZWJ1cmdlciIsICJtY2RvbmFsZHMiLCAiYnVyZ2VyIGtpbmciIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmNTQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmb29kX2FuZF9kcmluayIKICB9LAogIGZyaWVzOiB7CiAgICBrZXl3b3JkczogWyAiY2hpcHMiLCAic25hY2siLCAiZmFzdCBmb29kIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjVmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZm9vZF9hbmRfZHJpbmsiCiAgfSwKICBzdHVmZmVkX2ZsYXRicmVhZDogewogICAga2V5d29yZHM6IFsgImZvb2QiLCAiZmxhdGJyZWFkIiwgInN0dWZmZWQiLCAiZ3lybyIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGQ1OSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZvb2RfYW5kX2RyaW5rIgogIH0sCiAgaG90ZG9nOiB7CiAgICBrZXl3b3JkczogWyAiZm9vZCIsICJmcmFua2Z1cnRlciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGYyZCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZvb2RfYW5kX2RyaW5rIgogIH0sCiAgcGl6emE6IHsKICAgIGtleXdvcmRzOiBbICJmb29kIiwgInBhcnR5IiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjU1IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZm9vZF9hbmRfZHJpbmsiCiAgfSwKICBzYW5kd2ljaDogewogICAga2V5d29yZHM6IFsgImZvb2QiLCAibHVuY2giLCAiYnJlYWQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkNmEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmb29kX2FuZF9kcmluayIKICB9LAogIGNhbm5lZF9mb29kOiB7CiAgICBrZXl3b3JkczogWyAiZm9vZCIsICJzb3VwIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDZiIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZm9vZF9hbmRfZHJpbmsiCiAgfSwKICBzcGFnaGV0dGk6IHsKICAgIGtleXdvcmRzOiBbICJmb29kIiwgIml0YWxpYW4iLCAibm9vZGxlIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjVkIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZm9vZF9hbmRfZHJpbmsiCiAgfSwKICB0YWNvOiB7CiAgICBrZXl3b3JkczogWyAiZm9vZCIsICJtZXhpY2FuIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjJlIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZm9vZF9hbmRfZHJpbmsiCiAgfSwKICBidXJyaXRvOiB7CiAgICBrZXl3b3JkczogWyAiZm9vZCIsICJtZXhpY2FuIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjJmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZm9vZF9hbmRfZHJpbmsiCiAgfSwKICBncmVlbl9zYWxhZDogewogICAga2V5d29yZHM6IFsgImZvb2QiLCAiaGVhbHRoeSIsICJsZXR0dWNlIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDU3IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZm9vZF9hbmRfZHJpbmsiCiAgfSwKICBzaGFsbG93X3Bhbl9vZl9mb29kOiB7CiAgICBrZXl3b3JkczogWyAiZm9vZCIsICJjb29raW5nIiwgImNhc3Nlcm9sZSIsICJwYWVsbGEiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkNTgiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmb29kX2FuZF9kcmluayIKICB9LAogIHJhbWVuOiB7CiAgICBrZXl3b3JkczogWyAiZm9vZCIsICJqYXBhbmVzZSIsICJub29kbGUiLCAiY2hvcHN0aWNrcyIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGY1YyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZvb2RfYW5kX2RyaW5rIgogIH0sCiAgc3RldzogewogICAga2V5d29yZHM6IFsgImZvb2QiLCAibWVhdCIsICJzb3VwIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjcyIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZm9vZF9hbmRfZHJpbmsiCiAgfSwKICBmaXNoX2Nha2U6IHsKICAgIGtleXdvcmRzOiBbICJmb29kIiwgImphcGFuIiwgInNlYSIsICJiZWFjaCIsICJuYXJ1dG9tYWtpIiwgInBpbmsiLCAic3dpcmwiLCAia2FtYWJva28iLCAic3VyaW1pIiwgInJhbWVuIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjY1IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZm9vZF9hbmRfZHJpbmsiCiAgfSwKICBmb3J0dW5lX2Nvb2tpZTogewogICAga2V5d29yZHM6IFsgImZvb2QiLCAicHJvcGhlY3kiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkNjAiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmb29kX2FuZF9kcmluayIKICB9LAogIHN1c2hpOiB7CiAgICBrZXl3b3JkczogWyAiZm9vZCIsICJmaXNoIiwgImphcGFuZXNlIiwgInJpY2UiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmNjMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmb29kX2FuZF9kcmluayIKICB9LAogIGJlbnRvOiB7CiAgICBrZXl3b3JkczogWyAiZm9vZCIsICJqYXBhbmVzZSIsICJib3giIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmNzEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmb29kX2FuZF9kcmluayIKICB9LAogIGN1cnJ5OiB7CiAgICBrZXl3b3JkczogWyAiZm9vZCIsICJzcGljeSIsICJob3QiLCAiaW5kaWFuIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjViIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZm9vZF9hbmRfZHJpbmsiCiAgfSwKICByaWNlX2JhbGw6IHsKICAgIGtleXdvcmRzOiBbICJmb29kIiwgImphcGFuZXNlIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjU5IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZm9vZF9hbmRfZHJpbmsiCiAgfSwKICByaWNlOiB7CiAgICBrZXl3b3JkczogWyAiZm9vZCIsICJjaGluYSIsICJhc2lhbiIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGY1YSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZvb2RfYW5kX2RyaW5rIgogIH0sCiAgcmljZV9jcmFja2VyOiB7CiAgICBrZXl3b3JkczogWyAiZm9vZCIsICJqYXBhbmVzZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGY1OCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZvb2RfYW5kX2RyaW5rIgogIH0sCiAgb2RlbjogewogICAga2V5d29yZHM6IFsgImZvb2QiLCAiamFwYW5lc2UiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmNjIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmb29kX2FuZF9kcmluayIKICB9LAogIGRhbmdvOiB7CiAgICBrZXl3b3JkczogWyAiZm9vZCIsICJkZXNzZXJ0IiwgInN3ZWV0IiwgImphcGFuZXNlIiwgImJhcmJlY3VlIiwgIm1lYXQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmNjEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmb29kX2FuZF9kcmluayIKICB9LAogIHNoYXZlZF9pY2U6IHsKICAgIGtleXdvcmRzOiBbICJob3QiLCAiZGVzc2VydCIsICJzdW1tZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmNjciLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmb29kX2FuZF9kcmluayIKICB9LAogIGljZV9jcmVhbTogewogICAga2V5d29yZHM6IFsgImZvb2QiLCAiaG90IiwgImRlc3NlcnQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmNjgiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmb29kX2FuZF9kcmluayIKICB9LAogIGljZWNyZWFtOiB7CiAgICBrZXl3b3JkczogWyAiZm9vZCIsICJob3QiLCAiZGVzc2VydCIsICJzdW1tZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmNjYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmb29kX2FuZF9kcmluayIKICB9LAogIHBpZTogewogICAga2V5d29yZHM6IFsgImZvb2QiLCAiZGVzc2VydCIsICJwYXN0cnkiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkNjciLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmb29kX2FuZF9kcmluayIKICB9LAogIGNha2U6IHsKICAgIGtleXdvcmRzOiBbICJmb29kIiwgImRlc3NlcnQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmNzAiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmb29kX2FuZF9kcmluayIKICB9LAogIGJpcnRoZGF5OiB7CiAgICBrZXl3b3JkczogWyAiZm9vZCIsICJkZXNzZXJ0IiwgImNha2UiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmODIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmb29kX2FuZF9kcmluayIKICB9LAogIGN1c3RhcmQ6IHsKICAgIGtleXdvcmRzOiBbICJkZXNzZXJ0IiwgImZvb2QiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmNmUiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmb29kX2FuZF9kcmluayIKICB9LAogIGNhbmR5OiB7CiAgICBrZXl3b3JkczogWyAic25hY2siLCAiZGVzc2VydCIsICJzd2VldCIsICJsb2xseSIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGY2YyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZvb2RfYW5kX2RyaW5rIgogIH0sCiAgbG9sbGlwb3A6IHsKICAgIGtleXdvcmRzOiBbICJmb29kIiwgInNuYWNrIiwgImNhbmR5IiwgInN3ZWV0IiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjZkIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZm9vZF9hbmRfZHJpbmsiCiAgfSwKICBjaG9jb2xhdGVfYmFyOiB7CiAgICBrZXl3b3JkczogWyAiZm9vZCIsICJzbmFjayIsICJkZXNzZXJ0IiwgInN3ZWV0IiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjZiIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZm9vZF9hbmRfZHJpbmsiCiAgfSwKICBwb3Bjb3JuOiB7CiAgICBrZXl3b3JkczogWyAiZm9vZCIsICJtb3ZpZSB0aGVhdGVyIiwgImZpbG1zIiwgInNuYWNrIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjdmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZm9vZF9hbmRfZHJpbmsiCiAgfSwKICBkdW1wbGluZzogewogICAga2V5d29yZHM6IFsgImZvb2QiLCAiZW1wYW5hZGEiLCAicGllcm9naSIsICJwb3RzdGlja2VyIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDVmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZm9vZF9hbmRfZHJpbmsiCiAgfSwKICBkb3VnaG51dDogewogICAga2V5d29yZHM6IFsgImZvb2QiLCAiZGVzc2VydCIsICJzbmFjayIsICJzd2VldCIsICJkb251dCIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGY2OSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZvb2RfYW5kX2RyaW5rIgogIH0sCiAgY29va2llOiB7CiAgICBrZXl3b3JkczogWyAiZm9vZCIsICJzbmFjayIsICJvcmVvIiwgImNob2NvbGF0ZSIsICJzd2VldCIsICJkZXNzZXJ0IiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjZhIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZm9vZF9hbmRfZHJpbmsiCiAgfSwKICBtaWxrX2dsYXNzOiB7CiAgICBrZXl3b3JkczogWyAiYmV2ZXJhZ2UiLCAiZHJpbmsiLCAiY293IiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDViIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZm9vZF9hbmRfZHJpbmsiCiAgfSwKICBiZWVyOiB7CiAgICBrZXl3b3JkczogWyAicmVsYXgiLCAiYmV2ZXJhZ2UiLCAiZHJpbmsiLCAiZHJ1bmsiLCAicGFydHkiLCAicHViIiwgInN1bW1lciIsICJhbGNvaG9sIiwgImJvb3plIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjdhIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZm9vZF9hbmRfZHJpbmsiCiAgfSwKICBiZWVyczogewogICAga2V5d29yZHM6IFsgInJlbGF4IiwgImJldmVyYWdlIiwgImRyaW5rIiwgImRydW5rIiwgInBhcnR5IiwgInB1YiIsICJzdW1tZXIiLCAiYWxjb2hvbCIsICJib296ZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGY3YiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZvb2RfYW5kX2RyaW5rIgogIH0sCiAgY2xpbmtpbmdfZ2xhc3NlczogewogICAga2V5d29yZHM6IFsgImJldmVyYWdlIiwgImRyaW5rIiwgInBhcnR5IiwgImFsY29ob2wiLCAiY2VsZWJyYXRlIiwgImNoZWVycyIsICJ3aW5lIiwgImNoYW1wYWduZSIsICJ0b2FzdCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGQ0MiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZvb2RfYW5kX2RyaW5rIgogIH0sCiAgd2luZV9nbGFzczogewogICAga2V5d29yZHM6IFsgImRyaW5rIiwgImJldmVyYWdlIiwgImRydW5rIiwgImFsY29ob2wiLCAiYm9vemUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmNzciLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmb29kX2FuZF9kcmluayIKICB9LAogIHR1bWJsZXJfZ2xhc3M6IHsKICAgIGtleXdvcmRzOiBbICJkcmluayIsICJiZXZlcmFnZSIsICJkcnVuayIsICJhbGNvaG9sIiwgImxpcXVvciIsICJib296ZSIsICJib3VyYm9uIiwgInNjb3RjaCIsICJ3aGlza3kiLCAiZ2xhc3MiLCAic2hvdCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGQ0MyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZvb2RfYW5kX2RyaW5rIgogIH0sCiAgY29ja3RhaWw6IHsKICAgIGtleXdvcmRzOiBbICJkcmluayIsICJkcnVuayIsICJhbGNvaG9sIiwgImJldmVyYWdlIiwgImJvb3plIiwgIm1vaml0byIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGY3OCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZvb2RfYW5kX2RyaW5rIgogIH0sCiAgdHJvcGljYWxfZHJpbms6IHsKICAgIGtleXdvcmRzOiBbICJiZXZlcmFnZSIsICJjb2NrdGFpbCIsICJzdW1tZXIiLCAiYmVhY2giLCAiYWxjb2hvbCIsICJib296ZSIsICJtb2ppdG8iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmNzkiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmb29kX2FuZF9kcmluayIKICB9LAogIGNoYW1wYWduZTogewogICAga2V5d29yZHM6IFsgImRyaW5rIiwgIndpbmUiLCAiYm90dGxlIiwgImNlbGVicmF0aW9uIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjdlIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZm9vZF9hbmRfZHJpbmsiCiAgfSwKICBzYWtlOiB7CiAgICBrZXl3b3JkczogWyAid2luZSIsICJkcmluayIsICJkcnVuayIsICJiZXZlcmFnZSIsICJqYXBhbmVzZSIsICJhbGNvaG9sIiwgImJvb3plIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjc2IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZm9vZF9hbmRfZHJpbmsiCiAgfSwKICB0ZWE6IHsKICAgIGtleXdvcmRzOiBbICJkcmluayIsICJib3dsIiwgImJyZWFrZmFzdCIsICJncmVlbiIsICJicml0aXNoIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjc1IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZm9vZF9hbmRfZHJpbmsiCiAgfSwKICBjdXBfd2l0aF9zdHJhdzogewogICAga2V5d29yZHM6IFsgImRyaW5rIiwgInNvZGEiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkNjQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmb29kX2FuZF9kcmluayIKICB9LAogIGNvZmZlZTogewogICAga2V5d29yZHM6IFsgImJldmVyYWdlIiwgImNhZmZlaW5lIiwgImxhdHRlIiwgImVzcHJlc3NvIiBdLAogICAgImNoYXIiOiAiXHUyNjE1IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZm9vZF9hbmRfZHJpbmsiCiAgfSwKICBiYWJ5X2JvdHRsZTogewogICAga2V5d29yZHM6IFsgImZvb2QiLCAiY29udGFpbmVyIiwgIm1pbGsiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmN2MiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmb29kX2FuZF9kcmluayIKICB9LAogIHNwb29uOiB7CiAgICBrZXl3b3JkczogWyAiY3V0bGVyeSIsICJraXRjaGVuIiwgInRhYmxld2FyZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGQ0NCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZvb2RfYW5kX2RyaW5rIgogIH0sCiAgZm9ya19hbmRfa25pZmU6IHsKICAgIGtleXdvcmRzOiBbICJjdXRsZXJ5IiwgImtpdGNoZW4iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmNzQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmb29kX2FuZF9kcmluayIKICB9LAogIHBsYXRlX3dpdGhfY3V0bGVyeTogewogICAga2V5d29yZHM6IFsgImZvb2QiLCAiZWF0IiwgIm1lYWwiLCAibHVuY2giLCAiZGlubmVyIiwgInJlc3RhdXJhbnQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmN2QiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmb29kX2FuZF9kcmluayIKICB9LAogIGJvd2xfd2l0aF9zcG9vbjogewogICAga2V5d29yZHM6IFsgImZvb2QiLCAiYnJlYWtmYXN0IiwgImNlcmVhbCIsICJvYXRtZWFsIiwgInBvcnJpZGdlIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDYzIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZm9vZF9hbmRfZHJpbmsiCiAgfSwKICB0YWtlb3V0X2JveDogewogICAga2V5d29yZHM6IFsgImZvb2QiLCAibGVmdG92ZXJzIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDYxIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZm9vZF9hbmRfZHJpbmsiCiAgfSwKICBjaG9wc3RpY2tzOiB7CiAgICBrZXl3b3JkczogWyAiZm9vZCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGQ2MiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZvb2RfYW5kX2RyaW5rIgogIH0sCiAgc29jY2VyOiB7CiAgICBrZXl3b3JkczogWyAic3BvcnRzIiwgImZvb3RiYWxsIiBdLAogICAgImNoYXIiOiAiXHUyNmJkIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYWN0aXZpdHkiCiAgfSwKICBiYXNrZXRiYWxsOiB7CiAgICBrZXl3b3JkczogWyAic3BvcnRzIiwgImJhbGxzIiwgIk5CQSIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGZjMCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFjdGl2aXR5IgogIH0sCiAgZm9vdGJhbGw6IHsKICAgIGtleXdvcmRzOiBbICJzcG9ydHMiLCAiYmFsbHMiLCAiTkZMIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZmM4IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYWN0aXZpdHkiCiAgfSwKICBiYXNlYmFsbDogewogICAga2V5d29yZHM6IFsgInNwb3J0cyIsICJiYWxscyIgXSwKICAgICJjaGFyIjogIlx1MjZiZSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFjdGl2aXR5IgogIH0sCiAgdGVubmlzOiB7CiAgICBrZXl3b3JkczogWyAic3BvcnRzIiwgImJhbGxzIiwgImdyZWVuIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZmJlIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYWN0aXZpdHkiCiAgfSwKICB2b2xsZXliYWxsOiB7CiAgICBrZXl3b3JkczogWyAic3BvcnRzIiwgImJhbGxzIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZmQwIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYWN0aXZpdHkiCiAgfSwKICBydWdieV9mb290YmFsbDogewogICAga2V5d29yZHM6IFsgInNwb3J0cyIsICJ0ZWFtIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZmM5IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYWN0aXZpdHkiCiAgfSwKICAiOGJhbGwiOiB7CiAgICBrZXl3b3JkczogWyAicG9vbCIsICJob2JieSIsICJnYW1lIiwgImx1Y2siLCAibWFnaWMiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmYjEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhY3Rpdml0eSIKICB9LAogIGdvbGY6IHsKICAgIGtleXdvcmRzOiBbICJzcG9ydHMiLCAiYnVzaW5lc3MiLCAiZmxhZyIsICJob2xlIiwgInN1bW1lciIgXSwKICAgICJjaGFyIjogIlx1MjZmMyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFjdGl2aXR5IgogIH0sCiAgZ29sZmluZ193b21hbjogewogICAga2V5d29yZHM6IFsgInNwb3J0cyIsICJidXNpbmVzcyIsICJ3b21hbiIsICJmZW1hbGUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmY2NcdWZlMGZcdTIwMGRcdTI2NDBcdWZlMGYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhY3Rpdml0eSIKICB9LAogIGdvbGZpbmdfbWFuOiB7CiAgICBrZXl3b3JkczogWyAic3BvcnRzIiwgImJ1c2luZXNzIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZmNjIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJhY3Rpdml0eSIKICB9LAogIHBpbmdfcG9uZzogewogICAga2V5d29yZHM6IFsgInNwb3J0cyIsICJwaW5ncG9uZyIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGZkMyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFjdGl2aXR5IgogIH0sCiAgYmFkbWludG9uOiB7CiAgICBrZXl3b3JkczogWyAic3BvcnRzIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZmY4IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYWN0aXZpdHkiCiAgfSwKICBnb2FsX25ldDogewogICAga2V5d29yZHM6IFsgInNwb3J0cyIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGQ0NSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFjdGl2aXR5IgogIH0sCiAgaWNlX2hvY2tleTogewogICAga2V5d29yZHM6IFsgInNwb3J0cyIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGZkMiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFjdGl2aXR5IgogIH0sCiAgZmllbGRfaG9ja2V5OiB7CiAgICBrZXl3b3JkczogWyAic3BvcnRzIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZmQxIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYWN0aXZpdHkiCiAgfSwKICBjcmlja2V0OiB7CiAgICBrZXl3b3JkczogWyAic3BvcnRzIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZmNmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYWN0aXZpdHkiCiAgfSwKICBza2k6IHsKICAgIGtleXdvcmRzOiBbICJzcG9ydHMiLCAid2ludGVyIiwgImNvbGQiLCAic25vdyIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGZiZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFjdGl2aXR5IgogIH0sCiAgc2tpZXI6IHsKICAgIGtleXdvcmRzOiBbICJzcG9ydHMiLCAid2ludGVyIiwgInNub3ciIF0sCiAgICAiY2hhciI6ICJcdTI2ZjciLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhY3Rpdml0eSIKICB9LAogIHNub3dib2FyZGVyOiB7CiAgICBrZXl3b3JkczogWyAic3BvcnRzIiwgIndpbnRlciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGZjMiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAiYWN0aXZpdHkiCiAgfSwKICBwZXJzb25fZmVuY2luZzogewogICAga2V5d29yZHM6IFsgInNwb3J0cyIsICJmZW5jaW5nIiwgInN3b3JkIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDNhIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYWN0aXZpdHkiCiAgfSwKICB3b21lbl93cmVzdGxpbmc6IHsKICAgIGtleXdvcmRzOiBbICJzcG9ydHMiLCAid3Jlc3RsZXJzIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDNjXHUyMDBkXHUyNjQwXHVmZTBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYWN0aXZpdHkiCiAgfSwKICBtZW5fd3Jlc3RsaW5nOiB7CiAgICBrZXl3b3JkczogWyAic3BvcnRzIiwgIndyZXN0bGVycyIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGQzY1x1MjAwZFx1MjY0Mlx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFjdGl2aXR5IgogIH0sCiAgd29tYW5fY2FydHdoZWVsaW5nOiB7CiAgICBrZXl3b3JkczogWyAiZ3ltbmFzdGljcyIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGQzOFx1MjAwZFx1MjY0MFx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAiYWN0aXZpdHkiCiAgfSwKICBtYW5fY2FydHdoZWVsaW5nOiB7CiAgICBrZXl3b3JkczogWyAiZ3ltbmFzdGljcyIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGQzOFx1MjAwZFx1MjY0Mlx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAiYWN0aXZpdHkiCiAgfSwKICB3b21hbl9wbGF5aW5nX2hhbmRiYWxsOiB7CiAgICBrZXl3b3JkczogWyAic3BvcnRzIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDNlXHUyMDBkXHUyNjQwXHVmZTBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJhY3Rpdml0eSIKICB9LAogIG1hbl9wbGF5aW5nX2hhbmRiYWxsOiB7CiAgICBrZXl3b3JkczogWyAic3BvcnRzIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDNlXHUyMDBkXHUyNjQyXHVmZTBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJhY3Rpdml0eSIKICB9LAogIGljZV9za2F0ZTogewogICAga2V5d29yZHM6IFsgInNwb3J0cyIgXSwKICAgICJjaGFyIjogIlx1MjZmOCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFjdGl2aXR5IgogIH0sCiAgY3VybGluZ19zdG9uZTogewogICAga2V5d29yZHM6IFsgInNwb3J0cyIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGQ0YyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFjdGl2aXR5IgogIH0sCiAgc2xlZDogewogICAga2V5d29yZHM6IFsgInNsZWlnaCIsICJsdWdlIiwgInRvYm9nZ2FuIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZWY3IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYWN0aXZpdHkiCiAgfSwKICBib3dfYW5kX2Fycm93OiB7CiAgICBrZXl3b3JkczogWyAic3BvcnRzIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZmY5IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYWN0aXZpdHkiCiAgfSwKICBmaXNoaW5nX3BvbGVfYW5kX2Zpc2g6IHsKICAgIGtleXdvcmRzOiBbICJmb29kIiwgImhvYmJ5IiwgInN1bW1lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGZhMyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFjdGl2aXR5IgogIH0sCiAgYm94aW5nX2dsb3ZlOiB7CiAgICBrZXl3b3JkczogWyAic3BvcnRzIiwgImZpZ2h0aW5nIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDRhIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYWN0aXZpdHkiCiAgfSwKICBtYXJ0aWFsX2FydHNfdW5pZm9ybTogewogICAga2V5d29yZHM6IFsgImp1ZG8iLCAia2FyYXRlIiwgInRhZWt3b25kbyIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGQ0YiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFjdGl2aXR5IgogIH0sCiAgcm93aW5nX3dvbWFuOiB7CiAgICBrZXl3b3JkczogWyAic3BvcnRzIiwgImhvYmJ5IiwgIndhdGVyIiwgInNoaXAiLCAid29tYW4iLCAiZmVtYWxlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZWEzXHUyMDBkXHUyNjQwXHVmZTBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJhY3Rpdml0eSIKICB9LAogIHJvd2luZ19tYW46IHsKICAgIGtleXdvcmRzOiBbICJzcG9ydHMiLCAiaG9iYnkiLCAid2F0ZXIiLCAic2hpcCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGVhMyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAiYWN0aXZpdHkiCiAgfSwKICBjbGltYmluZ193b21hbjogewogICAga2V5d29yZHM6IFsgInNwb3J0cyIsICJob2JieSIsICJ3b21hbiIsICJmZW1hbGUiLCAicm9jayIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGRkN1x1MjAwZFx1MjY0MFx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAiYWN0aXZpdHkiCiAgfSwKICBjbGltYmluZ19tYW46IHsKICAgIGtleXdvcmRzOiBbICJzcG9ydHMiLCAiaG9iYnkiLCAibWFuIiwgIm1hbGUiLCAicm9jayIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGRkN1x1MjAwZFx1MjY0Mlx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAiYWN0aXZpdHkiCiAgfSwKICBzd2ltbWluZ193b21hbjogewogICAga2V5d29yZHM6IFsgInNwb3J0cyIsICJleGVyY2lzZSIsICJodW1hbiIsICJhdGhsZXRlIiwgIndhdGVyIiwgInN1bW1lciIsICJ3b21hbiIsICJmZW1hbGUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmY2FcdTIwMGRcdTI2NDBcdWZlMGYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IHRydWUsCiAgICBjYXRlZ29yeTogImFjdGl2aXR5IgogIH0sCiAgc3dpbW1pbmdfbWFuOiB7CiAgICBrZXl3b3JkczogWyAic3BvcnRzIiwgImV4ZXJjaXNlIiwgImh1bWFuIiwgImF0aGxldGUiLCAid2F0ZXIiLCAic3VtbWVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZmNhIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJhY3Rpdml0eSIKICB9LAogIHdvbWFuX3BsYXlpbmdfd2F0ZXJfcG9sbzogewogICAga2V5d29yZHM6IFsgInNwb3J0cyIsICJwb29sIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDNkXHUyMDBkXHUyNjQwXHVmZTBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJhY3Rpdml0eSIKICB9LAogIG1hbl9wbGF5aW5nX3dhdGVyX3BvbG86IHsKICAgIGtleXdvcmRzOiBbICJzcG9ydHMiLCAicG9vbCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGQzZFx1MjAwZFx1MjY0Mlx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAiYWN0aXZpdHkiCiAgfSwKICB3b21hbl9pbl9sb3R1c19wb3NpdGlvbjogewogICAga2V5d29yZHM6IFsgIndvbWFuIiwgImZlbWFsZSIsICJtZWRpdGF0aW9uIiwgInlvZ2EiLCAic2VyZW5pdHkiLCAiemVuIiwgIm1pbmRmdWxuZXNzIiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZGQ4XHUyMDBkXHUyNjQwXHVmZTBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJhY3Rpdml0eSIKICB9LAogIG1hbl9pbl9sb3R1c19wb3NpdGlvbjogewogICAga2V5d29yZHM6IFsgIm1hbiIsICJtYWxlIiwgIm1lZGl0YXRpb24iLCAieW9nYSIsICJzZXJlbml0eSIsICJ6ZW4iLCAibWluZGZ1bG5lc3MiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkZDhcdTIwMGRcdTI2NDJcdWZlMGYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IHRydWUsCiAgICBjYXRlZ29yeTogImFjdGl2aXR5IgogIH0sCiAgc3VyZmluZ193b21hbjogewogICAga2V5d29yZHM6IFsgInNwb3J0cyIsICJvY2VhbiIsICJzZWEiLCAic3VtbWVyIiwgImJlYWNoIiwgIndvbWFuIiwgImZlbWFsZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGZjNFx1MjAwZFx1MjY0MFx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAiYWN0aXZpdHkiCiAgfSwKICBzdXJmaW5nX21hbjogewogICAga2V5d29yZHM6IFsgInNwb3J0cyIsICJvY2VhbiIsICJzZWEiLCAic3VtbWVyIiwgImJlYWNoIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZmM0IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJhY3Rpdml0eSIKICB9LAogIGJhdGg6IHsKICAgIGtleXdvcmRzOiBbICJjbGVhbiIsICJzaG93ZXIiLCAiYmF0aHJvb20iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlYzAiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IHRydWUsCiAgICBjYXRlZ29yeTogImFjdGl2aXR5IgogIH0sCiAgYmFza2V0YmFsbF93b21hbjogewogICAga2V5d29yZHM6IFsgInNwb3J0cyIsICJodW1hbiIsICJ3b21hbiIsICJmZW1hbGUiIF0sCiAgICAiY2hhciI6ICJcdTI2ZjlcdWZlMGZcdTIwMGRcdTI2NDBcdWZlMGYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IHRydWUsCiAgICBjYXRlZ29yeTogImFjdGl2aXR5IgogIH0sCiAgYmFza2V0YmFsbF9tYW46IHsKICAgIGtleXdvcmRzOiBbICJzcG9ydHMiLCAiaHVtYW4iIF0sCiAgICAiY2hhciI6ICJcdTI2ZjkiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IHRydWUsCiAgICBjYXRlZ29yeTogImFjdGl2aXR5IgogIH0sCiAgd2VpZ2h0X2xpZnRpbmdfd29tYW46IHsKICAgIGtleXdvcmRzOiBbICJzcG9ydHMiLCAidHJhaW5pbmciLCAiZXhlcmNpc2UiLCAid29tYW4iLCAiZmVtYWxlIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZmNiXHVmZTBmXHUyMDBkXHUyNjQwXHVmZTBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJhY3Rpdml0eSIKICB9LAogIHdlaWdodF9saWZ0aW5nX21hbjogewogICAga2V5d29yZHM6IFsgInNwb3J0cyIsICJ0cmFpbmluZyIsICJleGVyY2lzZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGZjYiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAiYWN0aXZpdHkiCiAgfSwKICBiaWtpbmdfd29tYW46IHsKICAgIGtleXdvcmRzOiBbICJzcG9ydHMiLCAiYmlrZSIsICJleGVyY2lzZSIsICJoaXBzdGVyIiwgIndvbWFuIiwgImZlbWFsZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGViNFx1MjAwZFx1MjY0MFx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAiYWN0aXZpdHkiCiAgfSwKICBiaWtpbmdfbWFuOiB7CiAgICBrZXl3b3JkczogWyAic3BvcnRzIiwgImJpa2UiLCAiZXhlcmNpc2UiLCAiaGlwc3RlciIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGViNCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAiYWN0aXZpdHkiCiAgfSwKICBtb3VudGFpbl9iaWtpbmdfd29tYW46IHsKICAgIGtleXdvcmRzOiBbICJ0cmFuc3BvcnRhdGlvbiIsICJzcG9ydHMiLCAiaHVtYW4iLCAicmFjZSIsICJiaWtlIiwgIndvbWFuIiwgImZlbWFsZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGViNVx1MjAwZFx1MjY0MFx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAiYWN0aXZpdHkiCiAgfSwKICBtb3VudGFpbl9iaWtpbmdfbWFuOiB7CiAgICBrZXl3b3JkczogWyAidHJhbnNwb3J0YXRpb24iLCAic3BvcnRzIiwgImh1bWFuIiwgInJhY2UiLCAiYmlrZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGViNSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAiYWN0aXZpdHkiCiAgfSwKICBob3JzZV9yYWNpbmc6IHsKICAgIGtleXdvcmRzOiBbICJhbmltYWwiLCAiYmV0dGluZyIsICJjb21wZXRpdGlvbiIsICJnYW1ibGluZyIsICJsdWNrIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZmM3IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJhY3Rpdml0eSIKICB9LAogIGJ1c2luZXNzX3N1aXRfbGV2aXRhdGluZzogewogICAga2V5d29yZHM6IFsgInN1aXQiLCAiYnVzaW5lc3MiLCAibGV2aXRhdGUiLCAiaG92ZXIiLCAianVtcCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGQ3NCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAiYWN0aXZpdHkiCiAgfSwKICB0cm9waHk6IHsKICAgIGtleXdvcmRzOiBbICJ3aW4iLCAiYXdhcmQiLCAiY29udGVzdCIsICJwbGFjZSIsICJmdHciLCAiY2VyZW1vbnkiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmYzYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhY3Rpdml0eSIKICB9LAogIHJ1bm5pbmdfc2hpcnRfd2l0aF9zYXNoOiB7CiAgICBrZXl3b3JkczogWyAicGxheSIsICJwYWdlYW50IiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZmJkIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYWN0aXZpdHkiCiAgfSwKICBtZWRhbF9zcG9ydHM6IHsKICAgIGtleXdvcmRzOiBbICJhd2FyZCIsICJ3aW5uaW5nIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZmM1IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYWN0aXZpdHkiCiAgfSwKICBtZWRhbF9taWxpdGFyeTogewogICAga2V5d29yZHM6IFsgImF3YXJkIiwgIndpbm5pbmciLCAiYXJteSIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGY5NiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFjdGl2aXR5IgogIH0sCiAgIjFzdF9wbGFjZV9tZWRhbCI6IHsKICAgIGtleXdvcmRzOiBbICJhd2FyZCIsICJ3aW5uaW5nIiwgImZpcnN0IiBdLAogICAgImNoYXIiOiAiXHVkODNlXHVkZDQ3IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYWN0aXZpdHkiCiAgfSwKICAiMm5kX3BsYWNlX21lZGFsIjogewogICAga2V5d29yZHM6IFsgImF3YXJkIiwgInNlY29uZCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGQ0OCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFjdGl2aXR5IgogIH0sCiAgIjNyZF9wbGFjZV9tZWRhbCI6IHsKICAgIGtleXdvcmRzOiBbICJhd2FyZCIsICJ0aGlyZCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGQ0OSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFjdGl2aXR5IgogIH0sCiAgcmVtaW5kZXJfcmliYm9uOiB7CiAgICBrZXl3b3JkczogWyAic3BvcnRzIiwgImNhdXNlIiwgInN1cHBvcnQiLCAiYXdhcmVuZXNzIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjk3IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYWN0aXZpdHkiCiAgfSwKICByb3NldHRlOiB7CiAgICBrZXl3b3JkczogWyAiZmxvd2VyIiwgImRlY29yYXRpb24iLCAibWlsaXRhcnkiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmZjUiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhY3Rpdml0eSIKICB9LAogIHRpY2tldDogewogICAga2V5d29yZHM6IFsgImV2ZW50IiwgImNvbmNlcnQiLCAicGFzcyIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGZhYiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFjdGl2aXR5IgogIH0sCiAgdGlja2V0czogewogICAga2V5d29yZHM6IFsgInNwb3J0cyIsICJjb25jZXJ0IiwgImVudHJhbmNlIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjlmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYWN0aXZpdHkiCiAgfSwKICBwZXJmb3JtaW5nX2FydHM6IHsKICAgIGtleXdvcmRzOiBbICJhY3RpbmciLCAidGhlYXRlciIsICJkcmFtYSIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGZhZCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFjdGl2aXR5IgogIH0sCiAgYXJ0OiB7CiAgICBrZXl3b3JkczogWyAiZGVzaWduIiwgInBhaW50IiwgImRyYXciLCAiY29sb3JzIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZmE4IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYWN0aXZpdHkiCiAgfSwKICBjaXJjdXNfdGVudDogewogICAga2V5d29yZHM6IFsgImZlc3RpdmFsIiwgImNhcm5pdmFsIiwgInBhcnR5IiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZmFhIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYWN0aXZpdHkiCiAgfSwKICB3b21hbl9qdWdnbGluZzogewogICAga2V5d29yZHM6IFsgImp1Z2dsZSIsICJiYWxhbmNlIiwgInNraWxsIiwgIm11bHRpdGFzayIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGQzOVx1MjAwZFx1MjY0MFx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogdHJ1ZSwKICAgIGNhdGVnb3J5OiAiYWN0aXZpdHkiCiAgfSwKICBtYW5fanVnZ2xpbmc6IHsKICAgIGtleXdvcmRzOiBbICJqdWdnbGUiLCAiYmFsYW5jZSIsICJza2lsbCIsICJtdWx0aXRhc2siIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkMzlcdTIwMGRcdTI2NDJcdWZlMGYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IHRydWUsCiAgICBjYXRlZ29yeTogImFjdGl2aXR5IgogIH0sCiAgbWljcm9waG9uZTogewogICAga2V5d29yZHM6IFsgInNvdW5kIiwgIm11c2ljIiwgIlBBIiwgInNpbmciLCAidGFsa3Nob3ciIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmYTQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhY3Rpdml0eSIKICB9LAogIGhlYWRwaG9uZXM6IHsKICAgIGtleXdvcmRzOiBbICJtdXNpYyIsICJzY29yZSIsICJnYWRnZXRzIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZmE3IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYWN0aXZpdHkiCiAgfSwKICBtdXNpY2FsX3Njb3JlOiB7CiAgICBrZXl3b3JkczogWyAidHJlYmxlIiwgImNsZWYiLCAiY29tcG9zZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGZiYyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFjdGl2aXR5IgogIH0sCiAgbXVzaWNhbF9rZXlib2FyZDogewogICAga2V5d29yZHM6IFsgInBpYW5vIiwgImluc3RydW1lbnQiLCAiY29tcG9zZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGZiOSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFjdGl2aXR5IgogIH0sCiAgZHJ1bTogewogICAga2V5d29yZHM6IFsgIm11c2ljIiwgImluc3RydW1lbnQiLCAiZHJ1bXN0aWNrcyIsICJzbmFyZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZVx1ZGQ0MSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImFjdGl2aXR5IgogIH0sCiAgc2F4b3Bob25lOiB7CiAgICBrZXl3b3JkczogWyAibXVzaWMiLCAiaW5zdHJ1bWVudCIsICJqYXp6IiwgImJsdWVzIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZmI3IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYWN0aXZpdHkiCiAgfSwKICB0cnVtcGV0OiB7CiAgICBrZXl3b3JkczogWyAibXVzaWMiLCAiYnJhc3MiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmYmEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhY3Rpdml0eSIKICB9LAogIGd1aXRhcjogewogICAga2V5d29yZHM6IFsgIm11c2ljIiwgImluc3RydW1lbnQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmYjgiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhY3Rpdml0eSIKICB9LAogIHZpb2xpbjogewogICAga2V5d29yZHM6IFsgIm11c2ljIiwgImluc3RydW1lbnQiLCAib3JjaGVzdHJhIiwgInN5bXBob255IiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZmJiIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYWN0aXZpdHkiCiAgfSwKICBjbGFwcGVyOiB7CiAgICBrZXl3b3JkczogWyAibW92aWUiLCAiZmlsbSIsICJyZWNvcmQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmYWMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhY3Rpdml0eSIKICB9LAogIHZpZGVvX2dhbWU6IHsKICAgIGtleXdvcmRzOiBbICJwbGF5IiwgImNvbnNvbGUiLCAiUFM0IiwgImNvbnRyb2xsZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmYWUiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhY3Rpdml0eSIKICB9LAogIHNwYWNlX2ludmFkZXI6IHsKICAgIGtleXdvcmRzOiBbICJnYW1lIiwgImFyY2FkZSIsICJwbGF5IiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzdlIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYWN0aXZpdHkiCiAgfSwKICBkYXJ0OiB7CiAgICBrZXl3b3JkczogWyAiZ2FtZSIsICJwbGF5IiwgImJhciIsICJ0YXJnZXQiLCAiYnVsbHNleWUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmYWYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhY3Rpdml0eSIKICB9LAogIGdhbWVfZGllOiB7CiAgICBrZXl3b3JkczogWyAiZGljZSIsICJyYW5kb20iLCAidGFibGV0b3AiLCAicGxheSIsICJsdWNrIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZmIyIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiYWN0aXZpdHkiCiAgfSwKICBzbG90X21hY2hpbmU6IHsKICAgIGtleXdvcmRzOiBbICJiZXQiLCAiZ2FtYmxlIiwgInZlZ2FzIiwgImZydWl0IG1hY2hpbmUiLCAibHVjayIsICJjYXNpbm8iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmYjAiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhY3Rpdml0eSIKICB9LAogIGJvd2xpbmc6IHsKICAgIGtleXdvcmRzOiBbICJzcG9ydHMiLCAiZnVuIiwgInBsYXkiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmYjMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJhY3Rpdml0eSIKICB9LAogIHJlZF9jYXI6IHsKICAgIGtleXdvcmRzOiBbICJyZWQiLCAidHJhbnNwb3J0YXRpb24iLCAidmVoaWNsZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGU5NyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInRyYXZlbF9hbmRfcGxhY2VzIgogIH0sCiAgdGF4aTogewogICAga2V5d29yZHM6IFsgInViZXIiLCAidmVoaWNsZSIsICJjYXJzIiwgInRyYW5zcG9ydGF0aW9uIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZTk1IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICBibHVlX2NhcjogewogICAga2V5d29yZHM6IFsgInRyYW5zcG9ydGF0aW9uIiwgInZlaGljbGUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlOTkiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJ0cmF2ZWxfYW5kX3BsYWNlcyIKICB9LAogIGJ1czogewogICAga2V5d29yZHM6IFsgImNhciIsICJ2ZWhpY2xlIiwgInRyYW5zcG9ydGF0aW9uIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZThjIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICB0cm9sbGV5YnVzOiB7CiAgICBrZXl3b3JkczogWyAiYmFydCIsICJ0cmFuc3BvcnRhdGlvbiIsICJ2ZWhpY2xlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZThlIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICByYWNpbmdfY2FyOiB7CiAgICBrZXl3b3JkczogWyAic3BvcnRzIiwgInJhY2UiLCAiZmFzdCIsICJmb3JtdWxhIiwgImYxIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZmNlIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICBwb2xpY2VfY2FyOiB7CiAgICBrZXl3b3JkczogWyAidmVoaWNsZSIsICJjYXJzIiwgInRyYW5zcG9ydGF0aW9uIiwgImxhdyIsICJsZWdhbCIsICJlbmZvcmNlbWVudCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGU5MyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInRyYXZlbF9hbmRfcGxhY2VzIgogIH0sCiAgYW1idWxhbmNlOiB7CiAgICBrZXl3b3JkczogWyAiaGVhbHRoIiwgIjkxMSIsICJob3NwaXRhbCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGU5MSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInRyYXZlbF9hbmRfcGxhY2VzIgogIH0sCiAgZmlyZV9lbmdpbmU6IHsKICAgIGtleXdvcmRzOiBbICJ0cmFuc3BvcnRhdGlvbiIsICJjYXJzIiwgInZlaGljbGUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlOTIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJ0cmF2ZWxfYW5kX3BsYWNlcyIKICB9LAogIG1pbmlidXM6IHsKICAgIGtleXdvcmRzOiBbICJ2ZWhpY2xlIiwgImNhciIsICJ0cmFuc3BvcnRhdGlvbiIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGU5MCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInRyYXZlbF9hbmRfcGxhY2VzIgogIH0sCiAgdHJ1Y2s6IHsKICAgIGtleXdvcmRzOiBbICJjYXJzIiwgInRyYW5zcG9ydGF0aW9uIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZTlhIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICBhcnRpY3VsYXRlZF9sb3JyeTogewogICAga2V5d29yZHM6IFsgInZlaGljbGUiLCAiY2FycyIsICJ0cmFuc3BvcnRhdGlvbiIsICJleHByZXNzIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZTliIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICB0cmFjdG9yOiB7CiAgICBrZXl3b3JkczogWyAidmVoaWNsZSIsICJjYXIiLCAiZmFybWluZyIsICJhZ3JpY3VsdHVyZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGU5YyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInRyYXZlbF9hbmRfcGxhY2VzIgogIH0sCiAga2lja19zY29vdGVyOiB7CiAgICBrZXl3b3JkczogWyAidmVoaWNsZSIsICJraWNrIiwgInJhem9yIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZWY0IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICBtb3RvcmN5Y2xlOiB7CiAgICBrZXl3b3JkczogWyAicmFjZSIsICJzcG9ydHMiLCAiZmFzdCIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGZjZCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInRyYXZlbF9hbmRfcGxhY2VzIgogIH0sCiAgYmlrZTogewogICAga2V5d29yZHM6IFsgInNwb3J0cyIsICJiaWN5Y2xlIiwgImV4ZXJjaXNlIiwgImhpcHN0ZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlYjIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJ0cmF2ZWxfYW5kX3BsYWNlcyIKICB9LAogIG1vdG9yX3Njb290ZXI6IHsKICAgIGtleXdvcmRzOiBbICJ2ZWhpY2xlIiwgInZlc3BhIiwgInNhc2hhIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZWY1IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICByb3RhdGluZ19saWdodDogewogICAga2V5d29yZHM6IFsgInBvbGljZSIsICJhbWJ1bGFuY2UiLCAiOTExIiwgImVtZXJnZW5jeSIsICJhbGVydCIsICJlcnJvciIsICJwaW5nZWQiLCAibGF3IiwgImxlZ2FsIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZWE4IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICBvbmNvbWluZ19wb2xpY2VfY2FyOiB7CiAgICBrZXl3b3JkczogWyAidmVoaWNsZSIsICJsYXciLCAibGVnYWwiLCAiZW5mb3JjZW1lbnQiLCAiOTExIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZTk0IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICBvbmNvbWluZ19idXM6IHsKICAgIGtleXdvcmRzOiBbICJ2ZWhpY2xlIiwgInRyYW5zcG9ydGF0aW9uIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZThkIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICBvbmNvbWluZ19hdXRvbW9iaWxlOiB7CiAgICBrZXl3b3JkczogWyAiY2FyIiwgInZlaGljbGUiLCAidHJhbnNwb3J0YXRpb24iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlOTgiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJ0cmF2ZWxfYW5kX3BsYWNlcyIKICB9LAogIG9uY29taW5nX3RheGk6IHsKICAgIGtleXdvcmRzOiBbICJ2ZWhpY2xlIiwgImNhcnMiLCAidWJlciIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGU5NiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInRyYXZlbF9hbmRfcGxhY2VzIgogIH0sCiAgYWVyaWFsX3RyYW13YXk6IHsKICAgIGtleXdvcmRzOiBbICJ0cmFuc3BvcnRhdGlvbiIsICJ2ZWhpY2xlIiwgInNraSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGVhMSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInRyYXZlbF9hbmRfcGxhY2VzIgogIH0sCiAgbW91bnRhaW5fY2FibGV3YXk6IHsKICAgIGtleXdvcmRzOiBbICJ0cmFuc3BvcnRhdGlvbiIsICJ2ZWhpY2xlIiwgInNraSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGVhMCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInRyYXZlbF9hbmRfcGxhY2VzIgogIH0sCiAgc3VzcGVuc2lvbl9yYWlsd2F5OiB7CiAgICBrZXl3b3JkczogWyAidmVoaWNsZSIsICJ0cmFuc3BvcnRhdGlvbiIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGU5ZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInRyYXZlbF9hbmRfcGxhY2VzIgogIH0sCiAgcmFpbHdheV9jYXI6IHsKICAgIGtleXdvcmRzOiBbICJ0cmFuc3BvcnRhdGlvbiIsICJ2ZWhpY2xlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZTgzIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICB0cmFpbjogewogICAga2V5d29yZHM6IFsgInRyYW5zcG9ydGF0aW9uIiwgInZlaGljbGUiLCAiY2FycmlhZ2UiLCAicHVibGljIiwgInRyYXZlbCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGU4YiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInRyYXZlbF9hbmRfcGxhY2VzIgogIH0sCiAgbW9ub3JhaWw6IHsKICAgIGtleXdvcmRzOiBbICJ0cmFuc3BvcnRhdGlvbiIsICJ2ZWhpY2xlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZTlkIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICBidWxsZXR0cmFpbl9zaWRlOiB7CiAgICBrZXl3b3JkczogWyAidHJhbnNwb3J0YXRpb24iLCAidmVoaWNsZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGU4NCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInRyYXZlbF9hbmRfcGxhY2VzIgogIH0sCiAgYnVsbGV0dHJhaW5fZnJvbnQ6IHsKICAgIGtleXdvcmRzOiBbICJ0cmFuc3BvcnRhdGlvbiIsICJ2ZWhpY2xlIiwgInNwZWVkIiwgImZhc3QiLCAicHVibGljIiwgInRyYXZlbCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGU4NSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInRyYXZlbF9hbmRfcGxhY2VzIgogIH0sCiAgbGlnaHRfcmFpbDogewogICAga2V5d29yZHM6IFsgInRyYW5zcG9ydGF0aW9uIiwgInZlaGljbGUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlODgiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJ0cmF2ZWxfYW5kX3BsYWNlcyIKICB9LAogIG1vdW50YWluX3JhaWx3YXk6IHsKICAgIGtleXdvcmRzOiBbICJ0cmFuc3BvcnRhdGlvbiIsICJ2ZWhpY2xlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZTllIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICBzdGVhbV9sb2NvbW90aXZlOiB7CiAgICBrZXl3b3JkczogWyAidHJhbnNwb3J0YXRpb24iLCAidmVoaWNsZSIsICJ0cmFpbiIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGU4MiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInRyYXZlbF9hbmRfcGxhY2VzIgogIH0sCiAgdHJhaW4yOiB7CiAgICBrZXl3b3JkczogWyAidHJhbnNwb3J0YXRpb24iLCAidmVoaWNsZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGU4NiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInRyYXZlbF9hbmRfcGxhY2VzIgogIH0sCiAgbWV0cm86IHsKICAgIGtleXdvcmRzOiBbICJ0cmFuc3BvcnRhdGlvbiIsICJibHVlLXNxdWFyZSIsICJtcnQiLCAidW5kZXJncm91bmQiLCAidHViZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGU4NyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInRyYXZlbF9hbmRfcGxhY2VzIgogIH0sCiAgdHJhbTogewogICAga2V5d29yZHM6IFsgInRyYW5zcG9ydGF0aW9uIiwgInZlaGljbGUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlOGEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJ0cmF2ZWxfYW5kX3BsYWNlcyIKICB9LAogIHN0YXRpb246IHsKICAgIGtleXdvcmRzOiBbICJ0cmFuc3BvcnRhdGlvbiIsICJ2ZWhpY2xlIiwgInB1YmxpYyIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGU4OSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInRyYXZlbF9hbmRfcGxhY2VzIgogIH0sCiAgZmx5aW5nX3NhdWNlcjogewogICAga2V5d29yZHM6IFsgInRyYW5zcG9ydGF0aW9uIiwgInZlaGljbGUiLCAidWZvIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZWY4IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICBoZWxpY29wdGVyOiB7CiAgICBrZXl3b3JkczogWyAidHJhbnNwb3J0YXRpb24iLCAidmVoaWNsZSIsICJmbHkiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlODEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJ0cmF2ZWxfYW5kX3BsYWNlcyIKICB9LAogIHNtYWxsX2FpcnBsYW5lOiB7CiAgICBrZXl3b3JkczogWyAiZmxpZ2h0IiwgInRyYW5zcG9ydGF0aW9uIiwgImZseSIsICJ2ZWhpY2xlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZWU5IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICBhaXJwbGFuZTogewogICAga2V5d29yZHM6IFsgInZlaGljbGUiLCAidHJhbnNwb3J0YXRpb24iLCAiZmxpZ2h0IiwgImZseSIgXSwKICAgICJjaGFyIjogIlx1MjcwOFx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInRyYXZlbF9hbmRfcGxhY2VzIgogIH0sCiAgZmxpZ2h0X2RlcGFydHVyZTogewogICAga2V5d29yZHM6IFsgImFpcnBvcnQiLCAiZmxpZ2h0IiwgImxhbmRpbmciIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlZWIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJ0cmF2ZWxfYW5kX3BsYWNlcyIKICB9LAogIGZsaWdodF9hcnJpdmFsOiB7CiAgICBrZXl3b3JkczogWyAiYWlycG9ydCIsICJmbGlnaHQiLCAiYm9hcmRpbmciIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlZWMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJ0cmF2ZWxfYW5kX3BsYWNlcyIKICB9LAogIHNhaWxib2F0OiB7CiAgICBrZXl3b3JkczogWyAic2hpcCIsICJzdW1tZXIiLCAidHJhbnNwb3J0YXRpb24iLCAid2F0ZXIiLCAic2FpbGluZyIgXSwKICAgICJjaGFyIjogIlx1MjZmNSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInRyYXZlbF9hbmRfcGxhY2VzIgogIH0sCiAgbW90b3JfYm9hdDogewogICAga2V5d29yZHM6IFsgInNoaXAiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlZTUiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJ0cmF2ZWxfYW5kX3BsYWNlcyIKICB9LAogIHNwZWVkYm9hdDogewogICAga2V5d29yZHM6IFsgInNoaXAiLCAidHJhbnNwb3J0YXRpb24iLCAidmVoaWNsZSIsICJzdW1tZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlYTQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJ0cmF2ZWxfYW5kX3BsYWNlcyIKICB9LAogIGZlcnJ5OiB7CiAgICBrZXl3b3JkczogWyAiYm9hdCIsICJzaGlwIiwgInlhY2h0IiBdLAogICAgImNoYXIiOiAiXHUyNmY0IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICBwYXNzZW5nZXJfc2hpcDogewogICAga2V5d29yZHM6IFsgInlhY2h0IiwgImNydWlzZSIsICJmZXJyeSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGVmMyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInRyYXZlbF9hbmRfcGxhY2VzIgogIH0sCiAgcm9ja2V0OiB7CiAgICBrZXl3b3JkczogWyAibGF1bmNoIiwgInNoaXAiLCAic3RhZmZtb2RlIiwgIk5BU0EiLCAib3V0ZXIgc3BhY2UiLCAib3V0ZXJfc3BhY2UiLCAiZmx5IiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZTgwIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICBhcnRpZmljaWFsX3NhdGVsbGl0ZTogewogICAga2V5d29yZHM6IFsgImNvbW11bmljYXRpb24iLCAiZ3BzIiwgIm9yYml0IiwgInNwYWNlZmxpZ2h0IiwgIk5BU0EiLCAiSVNTIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZWYwIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICBzZWF0OiB7CiAgICBrZXl3b3JkczogWyAic2l0IiwgImFpcnBsYW5lIiwgInRyYW5zcG9ydCIsICJidXMiLCAiZmxpZ2h0IiwgImZseSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGNiYSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInRyYXZlbF9hbmRfcGxhY2VzIgogIH0sCiAgY2Fub2U6IHsKICAgIGtleXdvcmRzOiBbICJib2F0IiwgInBhZGRsZSIsICJ3YXRlciIsICJzaGlwIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZWY2IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICBhbmNob3I6IHsKICAgIGtleXdvcmRzOiBbICJzaGlwIiwgImZlcnJ5IiwgInNlYSIsICJib2F0IiBdLAogICAgImNoYXIiOiAiXHUyNjkzIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICBjb25zdHJ1Y3Rpb246IHsKICAgIGtleXdvcmRzOiBbICJ3aXAiLCAicHJvZ3Jlc3MiLCAiY2F1dGlvbiIsICJ3YXJuaW5nIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZWE3IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICBmdWVscHVtcDogewogICAga2V5d29yZHM6IFsgImdhcyBzdGF0aW9uIiwgInBldHJvbGV1bSIgXSwKICAgICJjaGFyIjogIlx1MjZmZCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInRyYXZlbF9hbmRfcGxhY2VzIgogIH0sCiAgYnVzc3RvcDogewogICAga2V5d29yZHM6IFsgInRyYW5zcG9ydGF0aW9uIiwgIndhaXQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlOGYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJ0cmF2ZWxfYW5kX3BsYWNlcyIKICB9LAogIHZlcnRpY2FsX3RyYWZmaWNfbGlnaHQ6IHsKICAgIGtleXdvcmRzOiBbICJ0cmFuc3BvcnRhdGlvbiIsICJkcml2aW5nIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZWE2IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICB0cmFmZmljX2xpZ2h0OiB7CiAgICBrZXl3b3JkczogWyAidHJhbnNwb3J0YXRpb24iLCAic2lnbmFsIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZWE1IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICBjaGVja2VyZWRfZmxhZzogewogICAga2V5d29yZHM6IFsgImNvbnRlc3QiLCAiZmluaXNobGluZSIsICJyYWNlIiwgImdva2FydCIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGZjMSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInRyYXZlbF9hbmRfcGxhY2VzIgogIH0sCiAgc2hpcDogewogICAga2V5d29yZHM6IFsgInRyYW5zcG9ydGF0aW9uIiwgInRpdGFuaWMiLCAiZGVwbG95IiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZWEyIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICBmZXJyaXNfd2hlZWw6IHsKICAgIGtleXdvcmRzOiBbICJwaG90byIsICJjYXJuaXZhbCIsICJsb25kb25leWUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmYTEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJ0cmF2ZWxfYW5kX3BsYWNlcyIKICB9LAogIHJvbGxlcl9jb2FzdGVyOiB7CiAgICBrZXl3b3JkczogWyAiY2Fybml2YWwiLCAicGxheWdyb3VuZCIsICJwaG90byIsICJmdW4iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmYTIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJ0cmF2ZWxfYW5kX3BsYWNlcyIKICB9LAogIGNhcm91c2VsX2hvcnNlOiB7CiAgICBrZXl3b3JkczogWyAicGhvdG8iLCAiY2Fybml2YWwiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmYTAiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJ0cmF2ZWxfYW5kX3BsYWNlcyIKICB9LAogIGJ1aWxkaW5nX2NvbnN0cnVjdGlvbjogewogICAga2V5d29yZHM6IFsgIndpcCIsICJ3b3JraW5nIiwgInByb2dyZXNzIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZmQ3IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICBmb2dneTogewogICAga2V5d29yZHM6IFsgInBob3RvIiwgIm1vdW50YWluIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjAxIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICB0b2t5b190b3dlcjogewogICAga2V5d29yZHM6IFsgInBob3RvIiwgImphcGFuZXNlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZGZjIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICBmYWN0b3J5OiB7CiAgICBrZXl3b3JkczogWyAiYnVpbGRpbmciLCAiaW5kdXN0cnkiLCAicG9sbHV0aW9uIiwgInNtb2tlIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZmVkIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICBmb3VudGFpbjogewogICAga2V5d29yZHM6IFsgInBob3RvIiwgInN1bW1lciIsICJ3YXRlciIsICJmcmVzaCIgXSwKICAgICJjaGFyIjogIlx1MjZmMiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInRyYXZlbF9hbmRfcGxhY2VzIgogIH0sCiAgcmljZV9zY2VuZTogewogICAga2V5d29yZHM6IFsgInBob3RvIiwgImphcGFuIiwgImFzaWEiLCAidHN1a2ltaSIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGY5MSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInRyYXZlbF9hbmRfcGxhY2VzIgogIH0sCiAgbW91bnRhaW46IHsKICAgIGtleXdvcmRzOiBbICJwaG90byIsICJuYXR1cmUiLCAiZW52aXJvbm1lbnQiIF0sCiAgICAiY2hhciI6ICJcdTI2ZjAiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJ0cmF2ZWxfYW5kX3BsYWNlcyIKICB9LAogIG1vdW50YWluX3Nub3c6IHsKICAgIGtleXdvcmRzOiBbICJwaG90byIsICJuYXR1cmUiLCAiZW52aXJvbm1lbnQiLCAid2ludGVyIiwgImNvbGQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmZDQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJ0cmF2ZWxfYW5kX3BsYWNlcyIKICB9LAogIG1vdW50X2Z1amk6IHsKICAgIGtleXdvcmRzOiBbICJwaG90byIsICJtb3VudGFpbiIsICJuYXR1cmUiLCAiamFwYW5lc2UiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRkZmIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJ0cmF2ZWxfYW5kX3BsYWNlcyIKICB9LAogIHZvbGNhbm86IHsKICAgIGtleXdvcmRzOiBbICJwaG90byIsICJuYXR1cmUiLCAiZGlzYXN0ZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmMGIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJ0cmF2ZWxfYW5kX3BsYWNlcyIKICB9LAogIGphcGFuOiB7CiAgICBrZXl3b3JkczogWyAibmF0aW9uIiwgImNvdW50cnkiLCAiamFwYW5lc2UiLCAiYXNpYSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGRmZSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInRyYXZlbF9hbmRfcGxhY2VzIgogIH0sCiAgY2FtcGluZzogewogICAga2V5d29yZHM6IFsgInBob3RvIiwgIm91dGRvb3JzIiwgInRlbnQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmZDUiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJ0cmF2ZWxfYW5kX3BsYWNlcyIKICB9LAogIHRlbnQ6IHsKICAgIGtleXdvcmRzOiBbICJwaG90byIsICJjYW1waW5nIiwgIm91dGRvb3JzIiBdLAogICAgImNoYXIiOiAiXHUyNmZhIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICBuYXRpb25hbF9wYXJrOiB7CiAgICBrZXl3b3JkczogWyAicGhvdG8iLCAiZW52aXJvbm1lbnQiLCAibmF0dXJlIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZmRlIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICBtb3RvcndheTogewogICAga2V5d29yZHM6IFsgInJvYWQiLCAiY3VwZXJ0aW5vIiwgImludGVyc3RhdGUiLCAiaGlnaHdheSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGVlMyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInRyYXZlbF9hbmRfcGxhY2VzIgogIH0sCiAgcmFpbHdheV90cmFjazogewogICAga2V5d29yZHM6IFsgInRyYWluIiwgInRyYW5zcG9ydGF0aW9uIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZWU0IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICBzdW5yaXNlOiB7CiAgICBrZXl3b3JkczogWyAibW9ybmluZyIsICJ2aWV3IiwgInZhY2F0aW9uIiwgInBob3RvIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjA1IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICBzdW5yaXNlX292ZXJfbW91bnRhaW5zOiB7CiAgICBrZXl3b3JkczogWyAidmlldyIsICJ2YWNhdGlvbiIsICJwaG90byIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGYwNCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInRyYXZlbF9hbmRfcGxhY2VzIgogIH0sCiAgZGVzZXJ0OiB7CiAgICBrZXl3b3JkczogWyAicGhvdG8iLCAid2FybSIsICJzYWhhcmFoIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZmRjIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICBiZWFjaF91bWJyZWxsYTogewogICAga2V5d29yZHM6IFsgIndlYXRoZXIiLCAic3VtbWVyIiwgInN1bm55IiwgInNhbmQiLCAibW9qaXRvIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZmQ2IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICBkZXNlcnRfaXNsYW5kOiB7CiAgICBrZXl3b3JkczogWyAicGhvdG8iLCAidHJvcGljYWwiLCAibW9qaXRvIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZmRkIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICBjaXR5X3N1bnJpc2U6IHsKICAgIGtleXdvcmRzOiBbICJwaG90byIsICJnb29kIG1vcm5pbmciLCAiZGF3biIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGYwNyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInRyYXZlbF9hbmRfcGxhY2VzIgogIH0sCiAgY2l0eV9zdW5zZXQ6IHsKICAgIGtleXdvcmRzOiBbICJwaG90byIsICJldmVuaW5nIiwgInNreSIsICJidWlsZGluZ3MiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmMDYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJ0cmF2ZWxfYW5kX3BsYWNlcyIKICB9LAogIGNpdHlzY2FwZTogewogICAga2V5d29yZHM6IFsgInBob3RvIiwgIm5pZ2h0IGxpZmUiLCAidXJiYW4iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmZDkiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJ0cmF2ZWxfYW5kX3BsYWNlcyIKICB9LAogIG5pZ2h0X3dpdGhfc3RhcnM6IHsKICAgIGtleXdvcmRzOiBbICJldmVuaW5nIiwgImNpdHkiLCAiZG93bnRvd24iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmMDMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJ0cmF2ZWxfYW5kX3BsYWNlcyIKICB9LAogIGJyaWRnZV9hdF9uaWdodDogewogICAga2V5d29yZHM6IFsgInBob3RvIiwgInNhbmZyYW5jaXNjbyIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGYwOSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInRyYXZlbF9hbmRfcGxhY2VzIgogIH0sCiAgbWlsa3lfd2F5OiB7CiAgICBrZXl3b3JkczogWyAicGhvdG8iLCAic3BhY2UiLCAic3RhcnMiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmMGMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJ0cmF2ZWxfYW5kX3BsYWNlcyIKICB9LAogIHN0YXJzOiB7CiAgICBrZXl3b3JkczogWyAibmlnaHQiLCAicGhvdG8iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmMjAiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJ0cmF2ZWxfYW5kX3BsYWNlcyIKICB9LAogIHNwYXJrbGVyOiB7CiAgICBrZXl3b3JkczogWyAic3RhcnMiLCAibmlnaHQiLCAic2hpbmUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmODciLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJ0cmF2ZWxfYW5kX3BsYWNlcyIKICB9LAogIGZpcmV3b3JrczogewogICAga2V5d29yZHM6IFsgInBob3RvIiwgImZlc3RpdmFsIiwgImNhcm5pdmFsIiwgImNvbmdyYXR1bGF0aW9ucyIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGY4NiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInRyYXZlbF9hbmRfcGxhY2VzIgogIH0sCiAgcmFpbmJvdzogewogICAga2V5d29yZHM6IFsgIm5hdHVyZSIsICJoYXBweSIsICJ1bmljb3JuX2ZhY2UiLCAicGhvdG8iLCAic2t5IiwgInNwcmluZyIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGYwOCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInRyYXZlbF9hbmRfcGxhY2VzIgogIH0sCiAgaG91c2VzOiB7CiAgICBrZXl3b3JkczogWyAiYnVpbGRpbmdzIiwgInBob3RvIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZmQ4IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICBldXJvcGVhbl9jYXN0bGU6IHsKICAgIGtleXdvcmRzOiBbICJidWlsZGluZyIsICJyb3lhbHR5IiwgImhpc3RvcnkiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmZjAiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJ0cmF2ZWxfYW5kX3BsYWNlcyIKICB9LAogIGphcGFuZXNlX2Nhc3RsZTogewogICAga2V5d29yZHM6IFsgInBob3RvIiwgImJ1aWxkaW5nIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZmVmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICBzdGFkaXVtOiB7CiAgICBrZXl3b3JkczogWyAicGhvdG8iLCAicGxhY2UiLCAic3BvcnRzIiwgImNvbmNlcnQiLCAidmVudWUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmZGYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJ0cmF2ZWxfYW5kX3BsYWNlcyIKICB9LAogIHN0YXR1ZV9vZl9saWJlcnR5OiB7CiAgICBrZXl3b3JkczogWyAiYW1lcmljYW4iLCAibmV3eW9yayIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGRmZCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInRyYXZlbF9hbmRfcGxhY2VzIgogIH0sCiAgaG91c2U6IHsKICAgIGtleXdvcmRzOiBbICJidWlsZGluZyIsICJob21lIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZmUwIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICBob3VzZV93aXRoX2dhcmRlbjogewogICAga2V5d29yZHM6IFsgImhvbWUiLCAicGxhbnQiLCAibmF0dXJlIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZmUxIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICBkZXJlbGljdF9ob3VzZTogewogICAga2V5d29yZHM6IFsgImFiYW5kb24iLCAiZXZpY3QiLCAiYnJva2VuIiwgImJ1aWxkaW5nIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZmRhIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICBvZmZpY2U6IHsKICAgIGtleXdvcmRzOiBbICJidWlsZGluZyIsICJidXJlYXUiLCAid29yayIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGZlMiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInRyYXZlbF9hbmRfcGxhY2VzIgogIH0sCiAgZGVwYXJ0bWVudF9zdG9yZTogewogICAga2V5d29yZHM6IFsgImJ1aWxkaW5nIiwgInNob3BwaW5nIiwgIm1hbGwiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmZWMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJ0cmF2ZWxfYW5kX3BsYWNlcyIKICB9LAogIHBvc3Rfb2ZmaWNlOiB7CiAgICBrZXl3b3JkczogWyAiYnVpbGRpbmciLCAiZW52ZWxvcGUiLCAiY29tbXVuaWNhdGlvbiIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGZlMyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInRyYXZlbF9hbmRfcGxhY2VzIgogIH0sCiAgZXVyb3BlYW5fcG9zdF9vZmZpY2U6IHsKICAgIGtleXdvcmRzOiBbICJidWlsZGluZyIsICJlbWFpbCIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGZlNCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInRyYXZlbF9hbmRfcGxhY2VzIgogIH0sCiAgaG9zcGl0YWw6IHsKICAgIGtleXdvcmRzOiBbICJidWlsZGluZyIsICJoZWFsdGgiLCAic3VyZ2VyeSIsICJkb2N0b3IiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmZTUiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJ0cmF2ZWxfYW5kX3BsYWNlcyIKICB9LAogIGJhbms6IHsKICAgIGtleXdvcmRzOiBbICJidWlsZGluZyIsICJtb25leSIsICJzYWxlcyIsICJjYXNoIiwgImJ1c2luZXNzIiwgImVudGVycHJpc2UiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmZTYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJ0cmF2ZWxfYW5kX3BsYWNlcyIKICB9LAogIGhvdGVsOiB7CiAgICBrZXl3b3JkczogWyAiYnVpbGRpbmciLCAiYWNjb21vZGF0aW9uIiwgImNoZWNraW4iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmZTgiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJ0cmF2ZWxfYW5kX3BsYWNlcyIKICB9LAogIGNvbnZlbmllbmNlX3N0b3JlOiB7CiAgICBrZXl3b3JkczogWyAiYnVpbGRpbmciLCAic2hvcHBpbmciLCAiZ3JvY2VyaWVzIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZmVhIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICBzY2hvb2w6IHsKICAgIGtleXdvcmRzOiBbICJidWlsZGluZyIsICJzdHVkZW50IiwgImVkdWNhdGlvbiIsICJsZWFybiIsICJ0ZWFjaCIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGZlYiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInRyYXZlbF9hbmRfcGxhY2VzIgogIH0sCiAgbG92ZV9ob3RlbDogewogICAga2V5d29yZHM6IFsgImxpa2UiLCAiYWZmZWN0aW9uIiwgImRhdGluZyIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGZlOSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInRyYXZlbF9hbmRfcGxhY2VzIgogIH0sCiAgd2VkZGluZzogewogICAga2V5d29yZHM6IFsgImxvdmUiLCAibGlrZSIsICJhZmZlY3Rpb24iLCAiY291cGxlIiwgIm1hcnJpYWdlIiwgImJyaWRlIiwgImdyb29tIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzkyIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICBjbGFzc2ljYWxfYnVpbGRpbmc6IHsKICAgIGtleXdvcmRzOiBbICJhcnQiLCAiY3VsdHVyZSIsICJoaXN0b3J5IiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZmRiIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICBjaHVyY2g6IHsKICAgIGtleXdvcmRzOiBbICJidWlsZGluZyIsICJyZWxpZ2lvbiIsICJjaHJpc3QiIF0sCiAgICAiY2hhciI6ICJcdTI2ZWEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJ0cmF2ZWxfYW5kX3BsYWNlcyIKICB9LAogIG1vc3F1ZTogewogICAga2V5d29yZHM6IFsgImlzbGFtIiwgIndvcnNoaXAiLCAibWluYXJldCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGQ0YyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInRyYXZlbF9hbmRfcGxhY2VzIgogIH0sCiAgc3luYWdvZ3VlOiB7CiAgICBrZXl3b3JkczogWyAianVkYWlzbSIsICJ3b3JzaGlwIiwgInRlbXBsZSIsICJqZXdpc2giIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRkNGQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJ0cmF2ZWxfYW5kX3BsYWNlcyIKICB9LAogIGthYWJhOiB7CiAgICBrZXl3b3JkczogWyAibWVjY2EiLCAibW9zcXVlIiwgImlzbGFtIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZDRiIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICBzaGludG9fc2hyaW5lOiB7CiAgICBrZXl3b3JkczogWyAidGVtcGxlIiwgImphcGFuIiwgImt5b3RvIiBdLAogICAgImNoYXIiOiAiXHUyNmU5IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAidHJhdmVsX2FuZF9wbGFjZXMiCiAgfSwKICB3YXRjaDogewogICAga2V5d29yZHM6IFsgInRpbWUiLCAiYWNjZXNzb3JpZXMiIF0sCiAgICAiY2hhciI6ICJcdTIzMWEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgaXBob25lOiB7CiAgICBrZXl3b3JkczogWyAidGVjaG5vbG9neSIsICJhcHBsZSIsICJnYWRnZXRzIiwgImRpYWwiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjZjEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgY2FsbGluZzogewogICAga2V5d29yZHM6IFsgImlwaG9uZSIsICJpbmNvbWluZyIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGNmMiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICBjb21wdXRlcjogewogICAga2V5d29yZHM6IFsgInRlY2hub2xvZ3kiLCAibGFwdG9wIiwgInNjcmVlbiIsICJkaXNwbGF5IiwgIm1vbml0b3IiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjYmIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAga2V5Ym9hcmQ6IHsKICAgIGtleXdvcmRzOiBbICJ0ZWNobm9sb2d5IiwgImNvbXB1dGVyIiwgInR5cGUiLCAiaW5wdXQiLCAidGV4dCIgXSwKICAgICJjaGFyIjogIlx1MjMyOCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICBkZXNrdG9wX2NvbXB1dGVyOiB7CiAgICBrZXl3b3JkczogWyAidGVjaG5vbG9neSIsICJjb21wdXRpbmciLCAic2NyZWVuIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZGE1IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIHByaW50ZXI6IHsKICAgIGtleXdvcmRzOiBbICJwYXBlciIsICJpbmsiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRkYTgiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgY29tcHV0ZXJfbW91c2U6IHsKICAgIGtleXdvcmRzOiBbICJjbGljayIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGRiMSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICB0cmFja2JhbGw6IHsKICAgIGtleXdvcmRzOiBbICJ0ZWNobm9sb2d5IiwgInRyYWNrcGFkIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZGIyIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIGpveXN0aWNrOiB7CiAgICBrZXl3b3JkczogWyAiZ2FtZSIsICJwbGF5IiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZDc5IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIGNsYW1wOiB7CiAgICBrZXl3b3JkczogWyAidG9vbCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGRkYyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICBtaW5pZGlzYzogewogICAga2V5d29yZHM6IFsgInRlY2hub2xvZ3kiLCAicmVjb3JkIiwgImRhdGEiLCAiZGlzayIsICI5MHMiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjYmQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgZmxvcHB5X2Rpc2s6IHsKICAgIGtleXdvcmRzOiBbICJvbGRzY2hvb2wiLCAidGVjaG5vbG9neSIsICJzYXZlIiwgIjkwcyIsICI4MHMiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjYmUiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgY2Q6IHsKICAgIGtleXdvcmRzOiBbICJ0ZWNobm9sb2d5IiwgImR2ZCIsICJkaXNrIiwgImRpc2MiLCAiOTBzIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkY2JmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIGR2ZDogewogICAga2V5d29yZHM6IFsgImNkIiwgImRpc2siLCAiZGlzYyIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGNjMCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICB2aHM6IHsKICAgIGtleXdvcmRzOiBbICJyZWNvcmQiLCAidmlkZW8iLCAib2xkc2Nob29sIiwgIjkwcyIsICI4MHMiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjZmMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgY2FtZXJhOiB7CiAgICBrZXl3b3JkczogWyAiZ2FkZ2V0cyIsICJwaG90b2dyYXBoeSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGNmNyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICBjYW1lcmFfZmxhc2g6IHsKICAgIGtleXdvcmRzOiBbICJwaG90b2dyYXBoeSIsICJnYWRnZXRzIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkY2Y4IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIHZpZGVvX2NhbWVyYTogewogICAga2V5d29yZHM6IFsgImZpbG0iLCAicmVjb3JkIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkY2Y5IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIG1vdmllX2NhbWVyYTogewogICAga2V5d29yZHM6IFsgImZpbG0iLCAicmVjb3JkIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZmE1IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIGZpbG1fcHJvamVjdG9yOiB7CiAgICBrZXl3b3JkczogWyAidmlkZW8iLCAidGFwZSIsICJyZWNvcmQiLCAibW92aWUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjZmQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgZmlsbV9zdHJpcDogewogICAga2V5d29yZHM6IFsgIm1vdmllIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjllIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIHRlbGVwaG9uZV9yZWNlaXZlcjogewogICAga2V5d29yZHM6IFsgInRlY2hub2xvZ3kiLCAiY29tbXVuaWNhdGlvbiIsICJkaWFsIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkY2RlIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIHBob25lOiB7CiAgICBrZXl3b3JkczogWyAidGVjaG5vbG9neSIsICJjb21tdW5pY2F0aW9uIiwgImRpYWwiLCAidGVsZXBob25lIiBdLAogICAgImNoYXIiOiAiXHUyNjBlXHVmZTBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIHBhZ2VyOiB7CiAgICBrZXl3b3JkczogWyAiYmJjYWxsIiwgIm9sZHNjaG9vbCIsICI5MHMiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjZGYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgZmF4OiB7CiAgICBrZXl3b3JkczogWyAiY29tbXVuaWNhdGlvbiIsICJ0ZWNobm9sb2d5IiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkY2UwIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIHR2OiB7CiAgICBrZXl3b3JkczogWyAidGVjaG5vbG9neSIsICJwcm9ncmFtIiwgIm9sZHNjaG9vbCIsICJzaG93IiwgInRlbGV2aXNpb24iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjZmEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgcmFkaW86IHsKICAgIGtleXdvcmRzOiBbICJjb21tdW5pY2F0aW9uIiwgIm11c2ljIiwgInBvZGNhc3QiLCAicHJvZ3JhbSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGNmYiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICBzdHVkaW9fbWljcm9waG9uZTogewogICAga2V5d29yZHM6IFsgInNpbmciLCAicmVjb3JkaW5nIiwgImFydGlzdCIsICJ0YWxrc2hvdyIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGY5OSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICBsZXZlbF9zbGlkZXI6IHsKICAgIGtleXdvcmRzOiBbICJzY2FsZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGY5YSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICBjb250cm9sX2tub2JzOiB7CiAgICBrZXl3b3JkczogWyAiZGlhbCIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGY5YiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICBzdG9wd2F0Y2g6IHsKICAgIGtleXdvcmRzOiBbICJ0aW1lIiwgImRlYWRsaW5lIiBdLAogICAgImNoYXIiOiAiXHUyM2YxIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIHRpbWVyX2Nsb2NrOiB7CiAgICBrZXl3b3JkczogWyAiYWxhcm0iIF0sCiAgICAiY2hhciI6ICJcdTIzZjIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgYWxhcm1fY2xvY2s6IHsKICAgIGtleXdvcmRzOiBbICJ0aW1lIiwgIndha2UiIF0sCiAgICAiY2hhciI6ICJcdTIzZjAiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgbWFudGVscGllY2VfY2xvY2s6IHsKICAgIGtleXdvcmRzOiBbICJ0aW1lIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZDcwIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIGhvdXJnbGFzc19mbG93aW5nX3NhbmQ6IHsKICAgIGtleXdvcmRzOiBbICJvbGRzY2hvb2wiLCAidGltZSIsICJjb3VudGRvd24iIF0sCiAgICAiY2hhciI6ICJcdTIzZjMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgaG91cmdsYXNzOiB7CiAgICBrZXl3b3JkczogWyAidGltZSIsICJjbG9jayIsICJvbGRzY2hvb2wiLCAibGltaXQiLCAiZXhhbSIsICJxdWl6IiwgInRlc3QiIF0sCiAgICAiY2hhciI6ICJcdTIzMWIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgc2F0ZWxsaXRlOiB7CiAgICBrZXl3b3JkczogWyAiY29tbXVuaWNhdGlvbiIsICJmdXR1cmUiLCAicmFkaW8iLCAic3BhY2UiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjZTEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgYmF0dGVyeTogewogICAga2V5d29yZHM6IFsgInBvd2VyIiwgImVuZXJneSIsICJzdXN0YWluIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZDBiIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIGVsZWN0cmljX3BsdWc6IHsKICAgIGtleXdvcmRzOiBbICJjaGFyZ2VyIiwgInBvd2VyIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZDBjIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIGJ1bGI6IHsKICAgIGtleXdvcmRzOiBbICJsaWdodCIsICJlbGVjdHJpY2l0eSIsICJpZGVhIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkY2ExIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIGZsYXNobGlnaHQ6IHsKICAgIGtleXdvcmRzOiBbICJkYXJrIiwgImNhbXBpbmciLCAic2lnaHQiLCAibmlnaHQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRkMjYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgY2FuZGxlOiB7CiAgICBrZXl3b3JkczogWyAiZmlyZSIsICJ3YXgiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRkNmYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgd2FzdGViYXNrZXQ6IHsKICAgIGtleXdvcmRzOiBbICJiaW4iLCAidHJhc2giLCAicnViYmlzaCIsICJnYXJiYWdlIiwgInRvc3MiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRkZDEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgb2lsX2RydW06IHsKICAgIGtleXdvcmRzOiBbICJiYXJyZWxsIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZWUyIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIG1vbmV5X3dpdGhfd2luZ3M6IHsKICAgIGtleXdvcmRzOiBbICJkb2xsYXIiLCAiYmlsbHMiLCAicGF5bWVudCIsICJzYWxlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkY2I4IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIGRvbGxhcjogewogICAga2V5d29yZHM6IFsgIm1vbmV5IiwgInNhbGVzIiwgImJpbGwiLCAiY3VycmVuY3kiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjYjUiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgeWVuOiB7CiAgICBrZXl3b3JkczogWyAibW9uZXkiLCAic2FsZXMiLCAiamFwYW5lc2UiLCAiZG9sbGFyIiwgImN1cnJlbmN5IiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkY2I0IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIGV1cm86IHsKICAgIGtleXdvcmRzOiBbICJtb25leSIsICJzYWxlcyIsICJkb2xsYXIiLCAiY3VycmVuY3kiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjYjYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgcG91bmQ6IHsKICAgIGtleXdvcmRzOiBbICJicml0aXNoIiwgInN0ZXJsaW5nIiwgIm1vbmV5IiwgInNhbGVzIiwgImJpbGxzIiwgInVrIiwgImVuZ2xhbmQiLCAiY3VycmVuY3kiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjYjciLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgbW9uZXliYWc6IHsKICAgIGtleXdvcmRzOiBbICJkb2xsYXIiLCAicGF5bWVudCIsICJjb2lucyIsICJzYWxlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkY2IwIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIGNyZWRpdF9jYXJkOiB7CiAgICBrZXl3b3JkczogWyAibW9uZXkiLCAic2FsZXMiLCAiZG9sbGFyIiwgImJpbGwiLCAicGF5bWVudCIsICJzaG9wcGluZyIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGNiMyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICBnZW06IHsKICAgIGtleXdvcmRzOiBbICJibHVlIiwgInJ1YnkiLCAiZGlhbW9uZCIsICJqZXdlbHJ5IiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzhlIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIGJhbGFuY2Vfc2NhbGU6IHsKICAgIGtleXdvcmRzOiBbICJsYXciLCAiZmFpcm5lc3MiLCAid2VpZ2h0IiBdLAogICAgImNoYXIiOiAiXHUyNjk2IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIHdyZW5jaDogewogICAga2V5d29yZHM6IFsgInRvb2xzIiwgImRpeSIsICJpa2VhIiwgImZpeCIsICJtYWludGFpbmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZDI3IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIGhhbW1lcjogewogICAga2V5d29yZHM6IFsgInRvb2xzIiwgImJ1aWxkIiwgImNyZWF0ZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGQyOCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICBoYW1tZXJfYW5kX3BpY2s6IHsKICAgIGtleXdvcmRzOiBbICJ0b29scyIsICJidWlsZCIsICJjcmVhdGUiIF0sCiAgICAiY2hhciI6ICJcdTI2OTIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgaGFtbWVyX2FuZF93cmVuY2g6IHsKICAgIGtleXdvcmRzOiBbICJ0b29scyIsICJidWlsZCIsICJjcmVhdGUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlZTAiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgcGljazogewogICAga2V5d29yZHM6IFsgInRvb2xzIiwgImRpZyIgXSwKICAgICJjaGFyIjogIlx1MjZjZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICBudXRfYW5kX2JvbHQ6IHsKICAgIGtleXdvcmRzOiBbICJoYW5keSIsICJ0b29scyIsICJmaXgiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRkMjkiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgZ2VhcjogewogICAga2V5d29yZHM6IFsgImNvZyIgXSwKICAgICJjaGFyIjogIlx1MjY5OSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICBjaGFpbnM6IHsKICAgIGtleXdvcmRzOiBbICJsb2NrIiwgImFycmVzdCIgXSwKICAgICJjaGFyIjogIlx1MjZkMyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICBndW46IHsKICAgIGtleXdvcmRzOiBbICJ2aW9sZW5jZSIsICJ3ZWFwb24iLCAicGlzdG9sIiwgInJldm9sdmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZDJiIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIGJvbWI6IHsKICAgIGtleXdvcmRzOiBbICJib29tIiwgImV4cGxvZGUiLCAiZXhwbG9zaW9uIiwgInRlcnJvcmlzbSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGNhMyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICBob2NobzogewogICAga2V5d29yZHM6IFsgImtuaWZlIiwgImJsYWRlIiwgImN1dGxlcnkiLCAia2l0Y2hlbiIsICJ3ZWFwb24iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRkMmEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgZGFnZ2VyOiB7CiAgICBrZXl3b3JkczogWyAid2VhcG9uIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZGUxIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIGNyb3NzZWRfc3dvcmRzOiB7CiAgICBrZXl3b3JkczogWyAid2VhcG9uIiBdLAogICAgImNoYXIiOiAiXHUyNjk0IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIHNoaWVsZDogewogICAga2V5d29yZHM6IFsgInByb3RlY3Rpb24iLCAic2VjdXJpdHkiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlZTEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgc21va2luZzogewogICAga2V5d29yZHM6IFsgImtpbGxzIiwgInRvYmFjY28iLCAiY2lnYXJldHRlIiwgImpvaW50IiwgInNtb2tlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZWFjIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIHNrdWxsX2FuZF9jcm9zc2JvbmVzOiB7CiAgICBrZXl3b3JkczogWyAicG9pc29uIiwgImRhbmdlciIsICJkZWFkbHkiLCAic2NhcnkiLCAiZGVhdGgiLCAicGlyYXRlIiwgImV2aWwiIF0sCiAgICAiY2hhciI6ICJcdTI2MjAiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgY29mZmluOiB7CiAgICBrZXl3b3JkczogWyAidmFtcGlyZSIsICJkZWFkIiwgImRpZSIsICJkZWF0aCIsICJyaXAiLCAiZ3JhdmV5YXJkIiwgImNlbWV0ZXJ5IiwgImNhc2tldCIsICJmdW5lcmFsIiwgImJveCIgXSwKICAgICJjaGFyIjogIlx1MjZiMCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICBmdW5lcmFsX3VybjogewogICAga2V5d29yZHM6IFsgImRlYWQiLCAiZGllIiwgImRlYXRoIiwgInJpcCIsICJhc2hlcyIgXSwKICAgICJjaGFyIjogIlx1MjZiMSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICBhbXBob3JhOiB7CiAgICBrZXl3b3JkczogWyAidmFzZSIsICJqYXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmZmEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgY3J5c3RhbF9iYWxsOiB7CiAgICBrZXl3b3JkczogWyAiZGlzY28iLCAicGFydHkiLCAibWFnaWMiLCAiY2lyY3VzIiwgImZvcnR1bmVfdGVsbGVyIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZDJlIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIHByYXllcl9iZWFkczogewogICAga2V5d29yZHM6IFsgImRoaWtyIiwgInJlbGlnaW91cyIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGNmZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICBiYXJiZXI6IHsKICAgIGtleXdvcmRzOiBbICJoYWlyIiwgInNhbG9uIiwgInN0eWxlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzg4IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIGFsZW1iaWM6IHsKICAgIGtleXdvcmRzOiBbICJkaXN0aWxsaW5nIiwgInNjaWVuY2UiLCAiZXhwZXJpbWVudCIsICJjaGVtaXN0cnkiIF0sCiAgICAiY2hhciI6ICJcdTI2OTciLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgdGVsZXNjb3BlOiB7CiAgICBrZXl3b3JkczogWyAic3RhcnMiLCAic3BhY2UiLCAiem9vbSIsICJzY2llbmNlIiwgImFzdHJvbm9teSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGQyZCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICBtaWNyb3Njb3BlOiB7CiAgICBrZXl3b3JkczogWyAibGFib3JhdG9yeSIsICJleHBlcmltZW50IiwgInpvb21pbiIsICJzY2llbmNlIiwgInN0dWR5IiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZDJjIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIGhvbGU6IHsKICAgIGtleXdvcmRzOiBbICJlbWJhcnJhc3NpbmciIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRkNzMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgcGlsbDogewogICAga2V5d29yZHM6IFsgImhlYWx0aCIsICJtZWRpY2luZSIsICJkb2N0b3IiLCAicGhhcm1hY3kiLCAiZHJ1ZyIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM4YSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICBzeXJpbmdlOiB7CiAgICBrZXl3b3JkczogWyAiaGVhbHRoIiwgImhvc3BpdGFsIiwgImRydWdzIiwgImJsb29kIiwgIm1lZGljaW5lIiwgIm5lZWRsZSIsICJkb2N0b3IiLCAibnVyc2UiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjODkiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgdGhlcm1vbWV0ZXI6IHsKICAgIGtleXdvcmRzOiBbICJ3ZWF0aGVyIiwgInRlbXBlcmF0dXJlIiwgImhvdCIsICJjb2xkIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjIxIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIGxhYmVsOiB7CiAgICBrZXl3b3JkczogWyAic2FsZSIsICJ0YWciIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmZjciLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgYm9va21hcms6IHsKICAgIGtleXdvcmRzOiBbICJmYXZvcml0ZSIsICJsYWJlbCIsICJzYXZlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZDE2IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIHRvaWxldDogewogICAga2V5d29yZHM6IFsgInJlc3Ryb29tIiwgIndjIiwgIndhc2hyb29tIiwgImJhdGhyb29tIiwgInBvdHR5IiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZWJkIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIHNob3dlcjogewogICAga2V5d29yZHM6IFsgImNsZWFuIiwgIndhdGVyIiwgImJhdGhyb29tIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZWJmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIGJhdGh0dWI6IHsKICAgIGtleXdvcmRzOiBbICJjbGVhbiIsICJzaG93ZXIiLCAiYmF0aHJvb20iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlYzEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAga2V5OiB7CiAgICBrZXl3b3JkczogWyAibG9jayIsICJkb29yIiwgInBhc3N3b3JkIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZDExIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIG9sZF9rZXk6IHsKICAgIGtleXdvcmRzOiBbICJsb2NrIiwgImRvb3IiLCAicGFzc3dvcmQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRkZGQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgY291Y2hfYW5kX2xhbXA6IHsKICAgIGtleXdvcmRzOiBbICJyZWFkIiwgImNoaWxsIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZWNiIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIHNsZWVwaW5nX2JlZDogewogICAga2V5d29yZHM6IFsgImJlZCIsICJyZXN0IiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZWNjIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiB0cnVlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgYmVkOiB7CiAgICBrZXl3b3JkczogWyAic2xlZXAiLCAicmVzdCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGVjZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICBkb29yOiB7CiAgICBrZXl3b3JkczogWyAiaG91c2UiLCAiZW50cnkiLCAiZXhpdCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGVhYSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICBiZWxsaG9wX2JlbGw6IHsKICAgIGtleXdvcmRzOiBbICJzZXJ2aWNlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZWNlIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIGZyYW1lZF9waWN0dXJlOiB7CiAgICBrZXl3b3JkczogWyAicGhvdG9ncmFwaHkiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRkYmMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgd29ybGRfbWFwOiB7CiAgICBrZXl3b3JkczogWyAibG9jYXRpb24iLCAiZGlyZWN0aW9uIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZGZhIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIHBhcmFzb2xfb25fZ3JvdW5kOiB7CiAgICBrZXl3b3JkczogWyAid2VhdGhlciIsICJzdW1tZXIiIF0sCiAgICAiY2hhciI6ICJcdTI2ZjEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgbW95YWk6IHsKICAgIGtleXdvcmRzOiBbICJyb2NrIiwgImVhc3RlciBpc2xhbmQiLCAibW9haSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGRmZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICBzaG9wcGluZzogewogICAga2V5d29yZHM6IFsgIm1hbGwiLCAiYnV5IiwgInB1cmNoYXNlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZWNkIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIHNob3BwaW5nX2NhcnQ6IHsKICAgIGtleXdvcmRzOiBbICJ0cm9sbGV5IiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZWQyIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIGJhbGxvb246IHsKICAgIGtleXdvcmRzOiBbICJwYXJ0eSIsICJjZWxlYnJhdGlvbiIsICJiaXJ0aGRheSIsICJjaXJjdXMiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmODgiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgZmxhZ3M6IHsKICAgIGtleXdvcmRzOiBbICJmaXNoIiwgImphcGFuZXNlIiwgImtvaW5vYm9yaSIsICJjYXJwIiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGY4ZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICByaWJib246IHsKICAgIGtleXdvcmRzOiBbICJkZWNvcmF0aW9uIiwgInBpbmsiLCAiZ2lybCIsICJib3d0aWUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmODAiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgZ2lmdDogewogICAga2V5d29yZHM6IFsgInByZXNlbnQiLCAiYmlydGhkYXkiLCAiY2hyaXN0bWFzIiwgInhtYXMiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmODEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgY29uZmV0dGlfYmFsbDogewogICAga2V5d29yZHM6IFsgImZlc3RpdmFsIiwgInBhcnR5IiwgImJpcnRoZGF5IiwgImNpcmN1cyIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGY4YSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICB0YWRhOiB7CiAgICBrZXl3b3JkczogWyAicGFydHkiLCAiY29uZ3JhdHVsYXRpb25zIiwgImJpcnRoZGF5IiwgIm1hZ2ljIiwgImNpcmN1cyIsICJjZWxlYnJhdGlvbiIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGY4OSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICBkb2xsczogewogICAga2V5d29yZHM6IFsgImphcGFuZXNlIiwgInRveSIsICJraW1vbm8iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmOGUiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgd2luZF9jaGltZTogewogICAga2V5d29yZHM6IFsgIm5hdHVyZSIsICJkaW5nIiwgInNwcmluZyIsICJiZWxsIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZjkwIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIGNyb3NzZWRfZmxhZ3M6IHsKICAgIGtleXdvcmRzOiBbICJqYXBhbmVzZSIsICJuYXRpb24iLCAiY291bnRyeSIsICJib3JkZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmOGMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgaXpha2F5YV9sYW50ZXJuOiB7CiAgICBrZXl3b3JkczogWyAibGlnaHQiLCAicGFwZXIiLCAiaGFsbG93ZWVuIiwgInNwb29reSIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGZlZSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICBlbWFpbDogewogICAga2V5d29yZHM6IFsgImxldHRlciIsICJwb3N0YWwiLCAiaW5ib3giLCAiY29tbXVuaWNhdGlvbiIgXSwKICAgICJjaGFyIjogIlx1MjcwOVx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICBlbnZlbG9wZV93aXRoX2Fycm93OiB7CiAgICBrZXl3b3JkczogWyAiZW1haWwiLCAiY29tbXVuaWNhdGlvbiIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGNlOSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICBpbmNvbWluZ19lbnZlbG9wZTogewogICAga2V5d29yZHM6IFsgImVtYWlsIiwgImluYm94IiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkY2U4IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogICJlLW1haWwiOiB7CiAgICBrZXl3b3JkczogWyAiY29tbXVuaWNhdGlvbiIsICJpbmJveCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGNlNyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICBsb3ZlX2xldHRlcjogewogICAga2V5d29yZHM6IFsgImVtYWlsIiwgImxpa2UiLCAiYWZmZWN0aW9uIiwgImVudmVsb3BlIiwgInZhbGVudGluZXMiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjOGMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgcG9zdGJveDogewogICAga2V5d29yZHM6IFsgImVtYWlsIiwgImxldHRlciIsICJlbnZlbG9wZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGNlZSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICBtYWlsYm94X2Nsb3NlZDogewogICAga2V5d29yZHM6IFsgImVtYWlsIiwgImNvbW11bmljYXRpb24iLCAiaW5ib3giIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjZWEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgbWFpbGJveDogewogICAga2V5d29yZHM6IFsgImVtYWlsIiwgImluYm94IiwgImNvbW11bmljYXRpb24iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjZWIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgbWFpbGJveF93aXRoX21haWw6IHsKICAgIGtleXdvcmRzOiBbICJlbWFpbCIsICJpbmJveCIsICJjb21tdW5pY2F0aW9uIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkY2VjIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIG1haWxib3hfd2l0aF9ub19tYWlsOiB7CiAgICBrZXl3b3JkczogWyAiZW1haWwiLCAiaW5ib3giIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjZWQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgInBhY2thZ2UiOiB7CiAgICBrZXl3b3JkczogWyAibWFpbCIsICJnaWZ0IiwgImNhcmRib2FyZCIsICJib3giLCAibW92aW5nIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkY2U2IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIHBvc3RhbF9ob3JuOiB7CiAgICBrZXl3b3JkczogWyAiaW5zdHJ1bWVudCIsICJtdXNpYyIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGNlZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICBpbmJveF90cmF5OiB7CiAgICBrZXl3b3JkczogWyAiZW1haWwiLCAiZG9jdW1lbnRzIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkY2U1IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIG91dGJveF90cmF5OiB7CiAgICBrZXl3b3JkczogWyAiaW5ib3giLCAiZW1haWwiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjZTQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgc2Nyb2xsOiB7CiAgICBrZXl3b3JkczogWyAiZG9jdW1lbnRzIiwgImFuY2llbnQiLCAiaGlzdG9yeSIsICJwYXBlciIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGNkYyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICBwYWdlX3dpdGhfY3VybDogewogICAga2V5d29yZHM6IFsgImRvY3VtZW50cyIsICJvZmZpY2UiLCAicGFwZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjYzMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgYm9va21hcmtfdGFiczogewogICAga2V5d29yZHM6IFsgImZhdm9yaXRlIiwgInNhdmUiLCAib3JkZXIiLCAidGlkeSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGNkMSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICBiYXJfY2hhcnQ6IHsKICAgIGtleXdvcmRzOiBbICJncmFwaCIsICJwcmVzZW50YXRpb24iLCAic3RhdHMiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjY2EiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgY2hhcnRfd2l0aF91cHdhcmRzX3RyZW5kOiB7CiAgICBrZXl3b3JkczogWyAiZ3JhcGgiLCAicHJlc2VudGF0aW9uIiwgInN0YXRzIiwgInJlY292ZXJ5IiwgImJ1c2luZXNzIiwgImVjb25vbWljcyIsICJtb25leSIsICJzYWxlcyIsICJnb29kIiwgInN1Y2Nlc3MiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjYzgiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgY2hhcnRfd2l0aF9kb3dud2FyZHNfdHJlbmQ6IHsKICAgIGtleXdvcmRzOiBbICJncmFwaCIsICJwcmVzZW50YXRpb24iLCAic3RhdHMiLCAicmVjZXNzaW9uIiwgImJ1c2luZXNzIiwgImVjb25vbWljcyIsICJtb25leSIsICJzYWxlcyIsICJiYWQiLCAiZmFpbHVyZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGNjOSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICBwYWdlX2ZhY2luZ191cDogewogICAga2V5d29yZHM6IFsgImRvY3VtZW50cyIsICJvZmZpY2UiLCAicGFwZXIiLCAiaW5mb3JtYXRpb24iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjYzQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgZGF0ZTogewogICAga2V5d29yZHM6IFsgImNhbGVuZGFyIiwgInNjaGVkdWxlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkY2M1IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIGNhbGVuZGFyOiB7CiAgICBrZXl3b3JkczogWyAic2NoZWR1bGUiLCAiZGF0ZSIsICJwbGFubmluZyIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGNjNiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICBzcGlyYWxfY2FsZW5kYXI6IHsKICAgIGtleXdvcmRzOiBbICJkYXRlIiwgInNjaGVkdWxlIiwgInBsYW5uaW5nIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZGQzIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIGNhcmRfaW5kZXg6IHsKICAgIGtleXdvcmRzOiBbICJidXNpbmVzcyIsICJzdGF0aW9uZXJ5IiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkY2M3IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIGNhcmRfZmlsZV9ib3g6IHsKICAgIGtleXdvcmRzOiBbICJidXNpbmVzcyIsICJzdGF0aW9uZXJ5IiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZGMzIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIGJhbGxvdF9ib3g6IHsKICAgIGtleXdvcmRzOiBbICJlbGVjdGlvbiIsICJ2b3RlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZGYzIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIGZpbGVfY2FiaW5ldDogewogICAga2V5d29yZHM6IFsgImZpbGluZyIsICJvcmdhbml6aW5nIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZGM0IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIGNsaXBib2FyZDogewogICAga2V5d29yZHM6IFsgInN0YXRpb25lcnkiLCAiZG9jdW1lbnRzIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkY2NiIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIHNwaXJhbF9ub3RlcGFkOiB7CiAgICBrZXl3b3JkczogWyAibWVtbyIsICJzdGF0aW9uZXJ5IiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZGQyIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIGZpbGVfZm9sZGVyOiB7CiAgICBrZXl3b3JkczogWyAiZG9jdW1lbnRzIiwgImJ1c2luZXNzIiwgIm9mZmljZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGNjMSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICBvcGVuX2ZpbGVfZm9sZGVyOiB7CiAgICBrZXl3b3JkczogWyAiZG9jdW1lbnRzIiwgImxvYWQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjYzIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgY2FyZF9pbmRleF9kaXZpZGVyczogewogICAga2V5d29yZHM6IFsgIm9yZ2FuaXppbmciLCAiYnVzaW5lc3MiLCAic3RhdGlvbmVyeSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGRjMiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICBuZXdzcGFwZXJfcm9sbDogewogICAga2V5d29yZHM6IFsgInByZXNzIiwgImhlYWRsaW5lIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZGRlIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIG5ld3NwYXBlcjogewogICAga2V5d29yZHM6IFsgInByZXNzIiwgImhlYWRsaW5lIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkY2YwIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIG5vdGVib29rOiB7CiAgICBrZXl3b3JkczogWyAic3RhdGlvbmVyeSIsICJyZWNvcmQiLCAibm90ZXMiLCAicGFwZXIiLCAic3R1ZHkiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjZDMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgY2xvc2VkX2Jvb2s6IHsKICAgIGtleXdvcmRzOiBbICJyZWFkIiwgImxpYnJhcnkiLCAia25vd2xlZGdlIiwgInRleHRib29rIiwgImxlYXJuIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkY2Q1IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIGdyZWVuX2Jvb2s6IHsKICAgIGtleXdvcmRzOiBbICJyZWFkIiwgImxpYnJhcnkiLCAia25vd2xlZGdlIiwgInN0dWR5IiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkY2Q3IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIGJsdWVfYm9vazogewogICAga2V5d29yZHM6IFsgInJlYWQiLCAibGlicmFyeSIsICJrbm93bGVkZ2UiLCAibGVhcm4iLCAic3R1ZHkiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjZDgiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgb3JhbmdlX2Jvb2s6IHsKICAgIGtleXdvcmRzOiBbICJyZWFkIiwgImxpYnJhcnkiLCAia25vd2xlZGdlIiwgInRleHRib29rIiwgInN0dWR5IiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkY2Q5IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIG5vdGVib29rX3dpdGhfZGVjb3JhdGl2ZV9jb3ZlcjogewogICAga2V5d29yZHM6IFsgImNsYXNzcm9vbSIsICJub3RlcyIsICJyZWNvcmQiLCAicGFwZXIiLCAic3R1ZHkiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjZDQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgbGVkZ2VyOiB7CiAgICBrZXl3b3JkczogWyAibm90ZXMiLCAicGFwZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjZDIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgYm9va3M6IHsKICAgIGtleXdvcmRzOiBbICJsaXRlcmF0dXJlIiwgImxpYnJhcnkiLCAic3R1ZHkiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjZGEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgb3Blbl9ib29rOiB7CiAgICBrZXl3b3JkczogWyAiYm9vayIsICJyZWFkIiwgImxpYnJhcnkiLCAia25vd2xlZGdlIiwgImxpdGVyYXR1cmUiLCAibGVhcm4iLCAic3R1ZHkiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjZDYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgbGluazogewogICAga2V5d29yZHM6IFsgInJpbmdzIiwgInVybCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGQxNyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICBwYXBlcmNsaXA6IHsKICAgIGtleXdvcmRzOiBbICJkb2N1bWVudHMiLCAic3RhdGlvbmVyeSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGNjZSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICBwYXBlcmNsaXBzOiB7CiAgICBrZXl3b3JkczogWyAiZG9jdW1lbnRzIiwgInN0YXRpb25lcnkiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRkODciLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgc2Npc3NvcnM6IHsKICAgIGtleXdvcmRzOiBbICJzdGF0aW9uZXJ5IiwgImN1dCIgXSwKICAgICJjaGFyIjogIlx1MjcwMlx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICB0cmlhbmd1bGFyX3J1bGVyOiB7CiAgICBrZXl3b3JkczogWyAic3RhdGlvbmVyeSIsICJtYXRoIiwgImFyY2hpdGVjdCIsICJza2V0Y2giIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjZDAiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgc3RyYWlnaHRfcnVsZXI6IHsKICAgIGtleXdvcmRzOiBbICJzdGF0aW9uZXJ5IiwgImNhbGN1bGF0ZSIsICJsZW5ndGgiLCAibWF0aCIsICJzY2hvb2wiLCAiZHJhd2luZyIsICJhcmNoaXRlY3QiLCAic2tldGNoIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkY2NmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIHB1c2hwaW46IHsKICAgIGtleXdvcmRzOiBbICJzdGF0aW9uZXJ5IiwgIm1hcmsiLCAiaGVyZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGNjYyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICByb3VuZF9wdXNocGluOiB7CiAgICBrZXl3b3JkczogWyAic3RhdGlvbmVyeSIsICJsb2NhdGlvbiIsICJtYXAiLCAiaGVyZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGNjZCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICB0cmlhbmd1bGFyX2ZsYWdfb25fcG9zdDogewogICAga2V5d29yZHM6IFsgIm1hcmsiLCAibWlsZXN0b25lIiwgInBsYWNlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZWE5IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIHdoaXRlX2ZsYWc6IHsKICAgIGtleXdvcmRzOiBbICJsb3NpbmciLCAibG9zZXIiLCAibG9zdCIsICJzdXJyZW5kZXIiLCAiZ2l2ZSB1cCIsICJmYWlsIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZmYzIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIGJsYWNrX2ZsYWc6IHsKICAgIGtleXdvcmRzOiBbICJwaXJhdGUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmZjQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgcmFpbmJvd19mbGFnOiB7CiAgICBrZXl3b3JkczogWyAiZmxhZyIsICJyYWluYm93IiwgInByaWRlIiwgImdheSIsICJsZ2J0IiwgImdsYnQiLCAicXVlZXIiLCAiaG9tb3NleHVhbCIsICJsZXNiaWFuIiwgImJpc2V4dWFsIiwgInRyYW5zZ2VuZGVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZmYzXHVmZTBmXHUyMDBkXHVkODNjXHVkZjA4IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIGNsb3NlZF9sb2NrX3dpdGhfa2V5OiB7CiAgICBrZXl3b3JkczogWyAic2VjdXJpdHkiLCAicHJpdmFjeSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGQxMCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICBsb2NrOiB7CiAgICBrZXl3b3JkczogWyAic2VjdXJpdHkiLCAicGFzc3dvcmQiLCAicGFkbG9jayIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGQxMiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICB1bmxvY2s6IHsKICAgIGtleXdvcmRzOiBbICJwcml2YWN5IiwgInNlY3VyaXR5IiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZDEzIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIGxvY2tfd2l0aF9pbmtfcGVuOiB7CiAgICBrZXl3b3JkczogWyAic2VjdXJpdHkiLCAic2VjcmV0IiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZDBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAib2JqZWN0cyIKICB9LAogIHBlbjogewogICAga2V5d29yZHM6IFsgInN0YXRpb25lcnkiLCAid3JpdGluZyIsICJ3cml0ZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGQ4YSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICBmb3VudGFpbl9wZW46IHsKICAgIGtleXdvcmRzOiBbICJzdGF0aW9uZXJ5IiwgIndyaXRpbmciLCAid3JpdGUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRkOGIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgYmxhY2tfbmliOiB7CiAgICBrZXl3b3JkczogWyAicGVuIiwgInN0YXRpb25lcnkiLCAid3JpdGluZyIsICJ3cml0ZSIgXSwKICAgICJjaGFyIjogIlx1MjcxMlx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICBtZW1vOiB7CiAgICBrZXl3b3JkczogWyAid3JpdGUiLCAiZG9jdW1lbnRzIiwgInN0YXRpb25lcnkiLCAicGVuY2lsIiwgInBhcGVyIiwgIndyaXRpbmciLCAibGVnYWwiLCAiZXhhbSIsICJxdWl6IiwgInRlc3QiLCAic3R1ZHkiLCAiY29tcG9zZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGNkZCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICBwZW5jaWwyOiB7CiAgICBrZXl3b3JkczogWyAic3RhdGlvbmVyeSIsICJ3cml0ZSIsICJwYXBlciIsICJ3cml0aW5nIiwgInNjaG9vbCIsICJzdHVkeSIgXSwKICAgICJjaGFyIjogIlx1MjcwZlx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogIm9iamVjdHMiCiAgfSwKICBjcmF5b246IHsKICAgIGtleXdvcmRzOiBbICJkcmF3aW5nIiwgImNyZWF0aXZpdHkiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRkOGQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgcGFpbnRicnVzaDogewogICAga2V5d29yZHM6IFsgImRyYXdpbmciLCAiY3JlYXRpdml0eSIsICJhcnQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRkOGMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgbWFnOiB7CiAgICBrZXl3b3JkczogWyAic2VhcmNoIiwgInpvb20iLCAiZmluZCIsICJkZXRlY3RpdmUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRkMGQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgbWFnX3JpZ2h0OiB7CiAgICBrZXl3b3JkczogWyAic2VhcmNoIiwgInpvb20iLCAiZmluZCIsICJkZXRlY3RpdmUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRkMGUiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJvYmplY3RzIgogIH0sCiAgaGVhcnQ6IHsKICAgIGtleXdvcmRzOiBbICJsb3ZlIiwgImxpa2UiLCAidmFsZW50aW5lcyIgXSwKICAgICJjaGFyIjogIlx1Mjc2NFx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBvcmFuZ2VfaGVhcnQ6IHsKICAgIGtleXdvcmRzOiBbICJsb3ZlIiwgImxpa2UiLCAiYWZmZWN0aW9uIiwgInZhbGVudGluZXMiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2VcdWRkZTEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgeWVsbG93X2hlYXJ0OiB7CiAgICBrZXl3b3JkczogWyAibG92ZSIsICJsaWtlIiwgImFmZmVjdGlvbiIsICJ2YWxlbnRpbmVzIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzliIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGdyZWVuX2hlYXJ0OiB7CiAgICBrZXl3b3JkczogWyAibG92ZSIsICJsaWtlIiwgImFmZmVjdGlvbiIsICJ2YWxlbnRpbmVzIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzlhIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGJsdWVfaGVhcnQ6IHsKICAgIGtleXdvcmRzOiBbICJsb3ZlIiwgImxpa2UiLCAiYWZmZWN0aW9uIiwgInZhbGVudGluZXMiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjOTkiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgcHVycGxlX2hlYXJ0OiB7CiAgICBrZXl3b3JkczogWyAibG92ZSIsICJsaWtlIiwgImFmZmVjdGlvbiIsICJ2YWxlbnRpbmVzIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzljIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGJsYWNrX2hlYXJ0OiB7CiAgICBrZXl3b3JkczogWyAiZXZpbCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGRhNCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBicm9rZW5faGVhcnQ6IHsKICAgIGtleXdvcmRzOiBbICJzYWQiLCAic29ycnkiLCAiYnJlYWsiLCAiaGVhcnQiLCAiaGVhcnRicmVhayIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM5NCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBoZWF2eV9oZWFydF9leGNsYW1hdGlvbjogewogICAga2V5d29yZHM6IFsgImRlY29yYXRpb24iLCAibG92ZSIgXSwKICAgICJjaGFyIjogIlx1Mjc2MyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICB0d29faGVhcnRzOiB7CiAgICBrZXl3b3JkczogWyAibG92ZSIsICJsaWtlIiwgImFmZmVjdGlvbiIsICJ2YWxlbnRpbmVzIiwgImhlYXJ0IiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzk1IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIHJldm9sdmluZ19oZWFydHM6IHsKICAgIGtleXdvcmRzOiBbICJsb3ZlIiwgImxpa2UiLCAiYWZmZWN0aW9uIiwgInZhbGVudGluZXMiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjOWUiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgaGVhcnRiZWF0OiB7CiAgICBrZXl3b3JkczogWyAibG92ZSIsICJsaWtlIiwgImFmZmVjdGlvbiIsICJ2YWxlbnRpbmVzIiwgInBpbmsiLCAiaGVhcnQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjOTMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgaGVhcnRwdWxzZTogewogICAga2V5d29yZHM6IFsgImxpa2UiLCAibG92ZSIsICJhZmZlY3Rpb24iLCAidmFsZW50aW5lcyIsICJwaW5rIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzk3IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIHNwYXJrbGluZ19oZWFydDogewogICAga2V5d29yZHM6IFsgImxvdmUiLCAibGlrZSIsICJhZmZlY3Rpb24iLCAidmFsZW50aW5lcyIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM5NiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBjdXBpZDogewogICAga2V5d29yZHM6IFsgImxvdmUiLCAibGlrZSIsICJoZWFydCIsICJhZmZlY3Rpb24iLCAidmFsZW50aW5lcyIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM5OCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBnaWZ0X2hlYXJ0OiB7CiAgICBrZXl3b3JkczogWyAibG92ZSIsICJ2YWxlbnRpbmVzIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkYzlkIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGhlYXJ0X2RlY29yYXRpb246IHsKICAgIGtleXdvcmRzOiBbICJwdXJwbGUtc3F1YXJlIiwgImxvdmUiLCAibGlrZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGM5ZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBwZWFjZV9zeW1ib2w6IHsKICAgIGtleXdvcmRzOiBbICJoaXBwaWUiIF0sCiAgICAiY2hhciI6ICJcdTI2MmUiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgbGF0aW5fY3Jvc3M6IHsKICAgIGtleXdvcmRzOiBbICJjaHJpc3RpYW5pdHkiIF0sCiAgICAiY2hhciI6ICJcdTI3MWQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgc3Rhcl9hbmRfY3Jlc2NlbnQ6IHsKICAgIGtleXdvcmRzOiBbICJpc2xhbSIgXSwKICAgICJjaGFyIjogIlx1MjYyYSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBvbTogewogICAga2V5d29yZHM6IFsgImhpbmR1aXNtIiwgImJ1ZGRoaXNtIiwgInNpa2hpc20iLCAiamFpbmlzbSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGQ0OSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICB3aGVlbF9vZl9kaGFybWE6IHsKICAgIGtleXdvcmRzOiBbICJoaW5kdWlzbSIsICJidWRkaGlzbSIsICJzaWtoaXNtIiwgImphaW5pc20iIF0sCiAgICAiY2hhciI6ICJcdTI2MzgiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgc3Rhcl9vZl9kYXZpZDogewogICAga2V5d29yZHM6IFsgImp1ZGFpc20iIF0sCiAgICAiY2hhciI6ICJcdTI3MjEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgc2l4X3BvaW50ZWRfc3RhcjogewogICAga2V5d29yZHM6IFsgInB1cnBsZS1zcXVhcmUiLCAicmVsaWdpb24iLCAiamV3aXNoIiwgImhleGFncmFtIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZDJmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIG1lbm9yYWg6IHsKICAgIGtleXdvcmRzOiBbICJoYW51a2thaCIsICJjYW5kbGVzIiwgImpld2lzaCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGQ0ZSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICB5aW5feWFuZzogewogICAga2V5d29yZHM6IFsgImJhbGFuY2UiIF0sCiAgICAiY2hhciI6ICJcdTI2MmYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgb3J0aG9kb3hfY3Jvc3M6IHsKICAgIGtleXdvcmRzOiBbICJzdXBwZWRhbmV1bSIsICJyZWxpZ2lvbiIgXSwKICAgICJjaGFyIjogIlx1MjYyNiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBwbGFjZV9vZl93b3JzaGlwOiB7CiAgICBrZXl3b3JkczogWyAicmVsaWdpb24iLCAiY2h1cmNoIiwgInRlbXBsZSIsICJwcmF5ZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlZDAiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgb3BoaXVjaHVzOiB7CiAgICBrZXl3b3JkczogWyAic2lnbiIsICJwdXJwbGUtc3F1YXJlIiwgImNvbnN0ZWxsYXRpb24iLCAiYXN0cm9sb2d5IiBdLAogICAgImNoYXIiOiAiXHUyNmNlIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGFyaWVzOiB7CiAgICBrZXl3b3JkczogWyAic2lnbiIsICJwdXJwbGUtc3F1YXJlIiwgInpvZGlhYyIsICJhc3Ryb2xvZ3kiIF0sCiAgICAiY2hhciI6ICJcdTI2NDgiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgdGF1cnVzOiB7CiAgICBrZXl3b3JkczogWyAicHVycGxlLXNxdWFyZSIsICJzaWduIiwgInpvZGlhYyIsICJhc3Ryb2xvZ3kiIF0sCiAgICAiY2hhciI6ICJcdTI2NDkiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgZ2VtaW5pOiB7CiAgICBrZXl3b3JkczogWyAic2lnbiIsICJ6b2RpYWMiLCAicHVycGxlLXNxdWFyZSIsICJhc3Ryb2xvZ3kiIF0sCiAgICAiY2hhciI6ICJcdTI2NGEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgY2FuY2VyOiB7CiAgICBrZXl3b3JkczogWyAic2lnbiIsICJ6b2RpYWMiLCAicHVycGxlLXNxdWFyZSIsICJhc3Ryb2xvZ3kiIF0sCiAgICAiY2hhciI6ICJcdTI2NGIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgbGVvOiB7CiAgICBrZXl3b3JkczogWyAic2lnbiIsICJwdXJwbGUtc3F1YXJlIiwgInpvZGlhYyIsICJhc3Ryb2xvZ3kiIF0sCiAgICAiY2hhciI6ICJcdTI2NGMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgdmlyZ286IHsKICAgIGtleXdvcmRzOiBbICJzaWduIiwgInpvZGlhYyIsICJwdXJwbGUtc3F1YXJlIiwgImFzdHJvbG9neSIgXSwKICAgICJjaGFyIjogIlx1MjY0ZCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBsaWJyYTogewogICAga2V5d29yZHM6IFsgInNpZ24iLCAicHVycGxlLXNxdWFyZSIsICJ6b2RpYWMiLCAiYXN0cm9sb2d5IiBdLAogICAgImNoYXIiOiAiXHUyNjRlIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIHNjb3JwaXVzOiB7CiAgICBrZXl3b3JkczogWyAic2lnbiIsICJ6b2RpYWMiLCAicHVycGxlLXNxdWFyZSIsICJhc3Ryb2xvZ3kiLCAic2NvcnBpbyIgXSwKICAgICJjaGFyIjogIlx1MjY0ZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBzYWdpdHRhcml1czogewogICAga2V5d29yZHM6IFsgInNpZ24iLCAiem9kaWFjIiwgInB1cnBsZS1zcXVhcmUiLCAiYXN0cm9sb2d5IiBdLAogICAgImNoYXIiOiAiXHUyNjUwIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGNhcHJpY29ybjogewogICAga2V5d29yZHM6IFsgInNpZ24iLCAiem9kaWFjIiwgInB1cnBsZS1zcXVhcmUiLCAiYXN0cm9sb2d5IiBdLAogICAgImNoYXIiOiAiXHUyNjUxIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGFxdWFyaXVzOiB7CiAgICBrZXl3b3JkczogWyAic2lnbiIsICJwdXJwbGUtc3F1YXJlIiwgInpvZGlhYyIsICJhc3Ryb2xvZ3kiIF0sCiAgICAiY2hhciI6ICJcdTI2NTIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgcGlzY2VzOiB7CiAgICBrZXl3b3JkczogWyAicHVycGxlLXNxdWFyZSIsICJzaWduIiwgInpvZGlhYyIsICJhc3Ryb2xvZ3kiIF0sCiAgICAiY2hhciI6ICJcdTI2NTMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgaWQ6IHsKICAgIGtleXdvcmRzOiBbICJwdXJwbGUtc3F1YXJlIiwgIndvcmRzIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZDk0IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGF0b21fc3ltYm9sOiB7CiAgICBrZXl3b3JkczogWyAic2NpZW5jZSIsICJwaHlzaWNzIiwgImNoZW1pc3RyeSIgXSwKICAgICJjaGFyIjogIlx1MjY5YiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICB1N2E3YTogewogICAga2V5d29yZHM6IFsgImthbmppIiwgImphcGFuZXNlIiwgImNoaW5lc2UiLCAiZW1wdHkiLCAic2t5IiwgImJsdWUtc3F1YXJlIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZTMzIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIHU1MjcyOiB7CiAgICBrZXl3b3JkczogWyAiY3V0IiwgImRpdmlkZSIsICJjaGluZXNlIiwgImthbmppIiwgInBpbmstc3F1YXJlIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZTM5IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIHJhZGlvYWN0aXZlOiB7CiAgICBrZXl3b3JkczogWyAibnVjbGVhciIsICJkYW5nZXIiIF0sCiAgICAiY2hhciI6ICJcdTI2MjIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgYmlvaGF6YXJkOiB7CiAgICBrZXl3b3JkczogWyAiZGFuZ2VyIiBdLAogICAgImNoYXIiOiAiXHUyNjIzIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIG1vYmlsZV9waG9uZV9vZmY6IHsKICAgIGtleXdvcmRzOiBbICJtdXRlIiwgIm9yYW5nZS1zcXVhcmUiLCAic2lsZW5jZSIsICJxdWlldCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGNmNCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICB2aWJyYXRpb25fbW9kZTogewogICAga2V5d29yZHM6IFsgIm9yYW5nZS1zcXVhcmUiLCAicGhvbmUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjZjMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgdTY3MDk6IHsKICAgIGtleXdvcmRzOiBbICJvcmFuZ2Utc3F1YXJlIiwgImNoaW5lc2UiLCAiaGF2ZSIsICJrYW5qaSIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGUzNiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICB1NzEyMTogewogICAga2V5d29yZHM6IFsgIm5vdGhpbmciLCAiY2hpbmVzZSIsICJrYW5qaSIsICJqYXBhbmVzZSIsICJvcmFuZ2Utc3F1YXJlIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZTFhIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIHU3NTMzOiB7CiAgICBrZXl3b3JkczogWyAiY2hpbmVzZSIsICJqYXBhbmVzZSIsICJrYW5qaSIsICJvcmFuZ2Utc3F1YXJlIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZTM4IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIHU1NWI2OiB7CiAgICBrZXl3b3JkczogWyAiamFwYW5lc2UiLCAib3BlbmluZyBob3VycyIsICJvcmFuZ2Utc3F1YXJlIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZTNhIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIHU2NzA4OiB7CiAgICBrZXl3b3JkczogWyAiY2hpbmVzZSIsICJtb250aCIsICJtb29uIiwgImphcGFuZXNlIiwgIm9yYW5nZS1zcXVhcmUiLCAia2FuamkiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRlMzdcdWZlMGYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgZWlnaHRfcG9pbnRlZF9ibGFja19zdGFyOiB7CiAgICBrZXl3b3JkczogWyAib3JhbmdlLXNxdWFyZSIsICJzaGFwZSIsICJwb2x5Z29uIiBdLAogICAgImNoYXIiOiAiXHUyNzM0XHVmZTBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIHZzOiB7CiAgICBrZXl3b3JkczogWyAid29yZHMiLCAib3JhbmdlLXNxdWFyZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGQ5YSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBhY2NlcHQ6IHsKICAgIGtleXdvcmRzOiBbICJvayIsICJnb29kIiwgImNoaW5lc2UiLCAia2FuamkiLCAiYWdyZWUiLCAieWVzIiwgIm9yYW5nZS1jaXJjbGUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRlNTEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgd2hpdGVfZmxvd2VyOiB7CiAgICBrZXl3b3JkczogWyAiamFwYW5lc2UiLCAic3ByaW5nIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkY2FlIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGlkZW9ncmFwaF9hZHZhbnRhZ2U6IHsKICAgIGtleXdvcmRzOiBbICJjaGluZXNlIiwgImthbmppIiwgIm9idGFpbiIsICJnZXQiLCAiY2lyY2xlIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZTUwIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIHNlY3JldDogewogICAga2V5d29yZHM6IFsgInByaXZhY3kiLCAiY2hpbmVzZSIsICJzc2hoIiwgImthbmppIiwgInJlZC1jaXJjbGUiIF0sCiAgICAiY2hhciI6ICJcdTMyOTlcdWZlMGYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgY29uZ3JhdHVsYXRpb25zOiB7CiAgICBrZXl3b3JkczogWyAiY2hpbmVzZSIsICJrYW5qaSIsICJqYXBhbmVzZSIsICJyZWQtY2lyY2xlIiBdLAogICAgImNoYXIiOiAiXHUzMjk3XHVmZTBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIHU1NDA4OiB7CiAgICBrZXl3b3JkczogWyAiamFwYW5lc2UiLCAiY2hpbmVzZSIsICJqb2luIiwgImthbmppIiwgInJlZC1zcXVhcmUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRlMzQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgdTZlODA6IHsKICAgIGtleXdvcmRzOiBbICJmdWxsIiwgImNoaW5lc2UiLCAiamFwYW5lc2UiLCAicmVkLXNxdWFyZSIsICJrYW5qaSIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGUzNSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICB1Nzk4MTogewogICAga2V5d29yZHM6IFsgImthbmppIiwgImphcGFuZXNlIiwgImNoaW5lc2UiLCAiZm9yYmlkZGVuIiwgImxpbWl0IiwgInJlc3RyaWN0ZWQiLCAicmVkLXNxdWFyZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGUzMiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBhOiB7CiAgICBrZXl3b3JkczogWyAicmVkLXNxdWFyZSIsICJhbHBoYWJldCIsICJsZXR0ZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkNzBcdWZlMGYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgYjogewogICAga2V5d29yZHM6IFsgInJlZC1zcXVhcmUiLCAiYWxwaGFiZXQiLCAibGV0dGVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZDcxXHVmZTBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGFiOiB7CiAgICBrZXl3b3JkczogWyAicmVkLXNxdWFyZSIsICJhbHBoYWJldCIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGQ4ZSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBjbDogewogICAga2V5d29yZHM6IFsgImFscGhhYmV0IiwgIndvcmRzIiwgInJlZC1zcXVhcmUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkOTEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgbzI6IHsKICAgIGtleXdvcmRzOiBbICJhbHBoYWJldCIsICJyZWQtc3F1YXJlIiwgImxldHRlciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGQ3ZVx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBzb3M6IHsKICAgIGtleXdvcmRzOiBbICJoZWxwIiwgInJlZC1zcXVhcmUiLCAid29yZHMiLCAiZW1lcmdlbmN5IiwgIjkxMSIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGQ5OCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBub19lbnRyeTogewogICAga2V5d29yZHM6IFsgImxpbWl0IiwgInNlY3VyaXR5IiwgInByaXZhY3kiLCAiYmFkIiwgImRlbmllZCIsICJzdG9wIiwgImNpcmNsZSIgXSwKICAgICJjaGFyIjogIlx1MjZkNCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBuYW1lX2JhZGdlOiB7CiAgICBrZXl3b3JkczogWyAiZmlyZSIsICJmb3JiaWQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjZGIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgbm9fZW50cnlfc2lnbjogewogICAga2V5d29yZHM6IFsgImZvcmJpZCIsICJzdG9wIiwgImxpbWl0IiwgImRlbmllZCIsICJkaXNhbGxvdyIsICJjaXJjbGUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlYWIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgeDogewogICAga2V5d29yZHM6IFsgIm5vIiwgImRlbGV0ZSIsICJyZW1vdmUiLCAiY2FuY2VsIiBdLAogICAgImNoYXIiOiAiXHUyNzRjIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIG86IHsKICAgIGtleXdvcmRzOiBbICJjaXJjbGUiLCAicm91bmQiIF0sCiAgICAiY2hhciI6ICJcdTJiNTUiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgc3RvcF9zaWduOiB7CiAgICBrZXl3b3JkczogWyAic3RvcCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGVkMSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBhbmdlcjogewogICAga2V5d29yZHM6IFsgImFuZ3J5IiwgIm1hZCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGNhMiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBob3RzcHJpbmdzOiB7CiAgICBrZXl3b3JkczogWyAiYmF0aCIsICJ3YXJtIiwgInJlbGF4IiBdLAogICAgImNoYXIiOiAiXHUyNjY4XHVmZTBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIG5vX3BlZGVzdHJpYW5zOiB7CiAgICBrZXl3b3JkczogWyAicnVsZXMiLCAiY3Jvc3NpbmciLCAid2Fsa2luZyIsICJjaXJjbGUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlYjciLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgZG9fbm90X2xpdHRlcjogewogICAga2V5d29yZHM6IFsgInRyYXNoIiwgImJpbiIsICJnYXJiYWdlIiwgImNpcmNsZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGVhZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBub19iaWN5Y2xlczogewogICAga2V5d29yZHM6IFsgImN5Y2xpc3QiLCAicHJvaGliaXRlZCIsICJjaXJjbGUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlYjMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgIm5vbi1wb3RhYmxlX3dhdGVyIjogewogICAga2V5d29yZHM6IFsgImRyaW5rIiwgImZhdWNldCIsICJ0YXAiLCAiY2lyY2xlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZWIxIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIHVuZGVyYWdlOiB7CiAgICBrZXl3b3JkczogWyAiMTgiLCAiZHJpbmsiLCAicHViIiwgIm5pZ2h0IiwgIm1pbm9yIiwgImNpcmNsZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGQxZSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBub19tb2JpbGVfcGhvbmVzOiB7CiAgICBrZXl3b3JkczogWyAiaXBob25lIiwgIm11dGUiLCAiY2lyY2xlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkY2Y1IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGV4Y2xhbWF0aW9uOiB7CiAgICBrZXl3b3JkczogWyAiaGVhdnlfZXhjbGFtYXRpb25fbWFyayIsICJkYW5nZXIiLCAic3VycHJpc2UiLCAicHVuY3R1YXRpb24iLCAid293IiwgIndhcm5pbmciIF0sCiAgICAiY2hhciI6ICJcdTI3NTciLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgZ3JleV9leGNsYW1hdGlvbjogewogICAga2V5d29yZHM6IFsgInN1cnByaXNlIiwgInB1bmN0dWF0aW9uIiwgImdyYXkiLCAid293IiwgIndhcm5pbmciIF0sCiAgICAiY2hhciI6ICJcdTI3NTUiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgcXVlc3Rpb246IHsKICAgIGtleXdvcmRzOiBbICJkb3VidCIsICJjb25mdXNlZCIgXSwKICAgICJjaGFyIjogIlx1Mjc1MyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBncmV5X3F1ZXN0aW9uOiB7CiAgICBrZXl3b3JkczogWyAiZG91YnRzIiwgImdyYXkiLCAiaHVoIiwgImNvbmZ1c2VkIiBdLAogICAgImNoYXIiOiAiXHUyNzU0IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGJhbmdiYW5nOiB7CiAgICBrZXl3b3JkczogWyAiZXhjbGFtYXRpb24iLCAic3VycHJpc2UiIF0sCiAgICAiY2hhciI6ICJcdTIwM2NcdWZlMGYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgaW50ZXJyb2Jhbmc6IHsKICAgIGtleXdvcmRzOiBbICJ3YXQiLCAicHVuY3R1YXRpb24iLCAic3VycHJpc2UiIF0sCiAgICAiY2hhciI6ICJcdTIwNDlcdWZlMGYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgMTAwOiB7CiAgICBrZXl3b3JkczogWyAic2NvcmUiLCAicGVyZmVjdCIsICJudW1iZXJzIiwgImNlbnR1cnkiLCAiZXhhbSIsICJxdWl6IiwgInRlc3QiLCAicGFzcyIsICJodW5kcmVkIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkY2FmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGxvd19icmlnaHRuZXNzOiB7CiAgICBrZXl3b3JkczogWyAic3VuIiwgImFmdGVybm9vbiIsICJ3YXJtIiwgInN1bW1lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGQwNSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBoaWdoX2JyaWdodG5lc3M6IHsKICAgIGtleXdvcmRzOiBbICJzdW4iLCAibGlnaHQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRkMDYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgdHJpZGVudDogewogICAga2V5d29yZHM6IFsgIndlYXBvbiIsICJzcGVhciIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGQzMSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBmbGV1cl9kZV9saXM6IHsKICAgIGtleXdvcmRzOiBbICJkZWNvcmF0aXZlIiwgInNjb3V0IiBdLAogICAgImNoYXIiOiAiXHUyNjljIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIHBhcnRfYWx0ZXJuYXRpb25fbWFyazogewogICAga2V5d29yZHM6IFsgImdyYXBoIiwgInByZXNlbnRhdGlvbiIsICJzdGF0cyIsICJidXNpbmVzcyIsICJlY29ub21pY3MiLCAiYmFkIiBdLAogICAgImNoYXIiOiAiXHUzMDNkXHVmZTBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIHdhcm5pbmc6IHsKICAgIGtleXdvcmRzOiBbICJleGNsYW1hdGlvbiIsICJ3aXAiLCAiYWxlcnQiLCAiZXJyb3IiLCAicHJvYmxlbSIsICJpc3N1ZSIgXSwKICAgICJjaGFyIjogIlx1MjZhMFx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBjaGlsZHJlbl9jcm9zc2luZzogewogICAga2V5d29yZHM6IFsgInNjaG9vbCIsICJ3YXJuaW5nIiwgImRhbmdlciIsICJzaWduIiwgImRyaXZpbmciLCAieWVsbG93LWRpYW1vbmQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlYjgiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgYmVnaW5uZXI6IHsKICAgIGtleXdvcmRzOiBbICJiYWRnZSIsICJzaGllbGQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRkMzAiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgcmVjeWNsZTogewogICAga2V5d29yZHM6IFsgImFycm93IiwgImVudmlyb25tZW50IiwgImdhcmJhZ2UiLCAidHJhc2giIF0sCiAgICAiY2hhciI6ICJcdTI2N2JcdWZlMGYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgdTYzMDc6IHsKICAgIGtleXdvcmRzOiBbICJjaGluZXNlIiwgInBvaW50IiwgImdyZWVuLXNxdWFyZSIsICJrYW5qaSIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGUyZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBjaGFydDogewogICAga2V5d29yZHM6IFsgImdyZWVuLXNxdWFyZSIsICJncmFwaCIsICJwcmVzZW50YXRpb24iLCAic3RhdHMiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjYjkiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgc3BhcmtsZTogewogICAga2V5d29yZHM6IFsgInN0YXJzIiwgImdyZWVuLXNxdWFyZSIsICJhd2Vzb21lIiwgImdvb2QiLCAiZmlyZXdvcmtzIiBdLAogICAgImNoYXIiOiAiXHUyNzQ3XHVmZTBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGVpZ2h0X3Nwb2tlZF9hc3RlcmlzazogewogICAga2V5d29yZHM6IFsgInN0YXIiLCAic3BhcmtsZSIsICJncmVlbi1zcXVhcmUiIF0sCiAgICAiY2hhciI6ICJcdTI3MzNcdWZlMGYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgbmVnYXRpdmVfc3F1YXJlZF9jcm9zc19tYXJrOiB7CiAgICBrZXl3b3JkczogWyAieCIsICJncmVlbi1zcXVhcmUiLCAibm8iLCAiZGVueSIgXSwKICAgICJjaGFyIjogIlx1Mjc0ZSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICB3aGl0ZV9jaGVja19tYXJrOiB7CiAgICBrZXl3b3JkczogWyAiZ3JlZW4tc3F1YXJlIiwgIm9rIiwgImFncmVlIiwgInZvdGUiLCAiZWxlY3Rpb24iLCAiYW5zd2VyIiwgInRpY2siIF0sCiAgICAiY2hhciI6ICJcdTI3MDUiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgZGlhbW9uZF9zaGFwZV93aXRoX2FfZG90X2luc2lkZTogewogICAga2V5d29yZHM6IFsgImpld2VsIiwgImJsdWUiLCAiZ2VtIiwgImNyeXN0YWwiLCAiZmFuY3kiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjYTAiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgY3ljbG9uZTogewogICAga2V5d29yZHM6IFsgIndlYXRoZXIiLCAic3dpcmwiLCAiYmx1ZSIsICJjbG91ZCIsICJ2b3J0ZXgiLCAic3BpcmFsIiwgIndoaXJscG9vbCIsICJzcGluIiwgInRvcm5hZG8iLCAiaHVycmljYW5lIiwgInR5cGhvb24iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmMDAiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgbG9vcDogewogICAga2V5d29yZHM6IFsgInRhcGUiLCAiY2Fzc2V0dGUiIF0sCiAgICAiY2hhciI6ICJcdTI3YmYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgZ2xvYmVfd2l0aF9tZXJpZGlhbnM6IHsKICAgIGtleXdvcmRzOiBbICJlYXJ0aCIsICJpbnRlcm5hdGlvbmFsIiwgIndvcmxkIiwgImludGVybmV0IiwgImludGVyd2ViIiwgImkxOG4iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmMTAiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgbTogewogICAga2V5d29yZHM6IFsgImFscGhhYmV0IiwgImJsdWUtY2lyY2xlIiwgImxldHRlciIgXSwKICAgICJjaGFyIjogIlx1MjRjMlx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBhdG06IHsKICAgIGtleXdvcmRzOiBbICJtb25leSIsICJzYWxlcyIsICJjYXNoIiwgImJsdWUtc3F1YXJlIiwgInBheW1lbnQiLCAiYmFuayIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGZlNyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBzYTogewogICAga2V5d29yZHM6IFsgImphcGFuZXNlIiwgImJsdWUtc3F1YXJlIiwgImthdGFrYW5hIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZTAyXHVmZTBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIHBhc3Nwb3J0X2NvbnRyb2w6IHsKICAgIGtleXdvcmRzOiBbICJjdXN0b20iLCAiYmx1ZS1zcXVhcmUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlYzIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgY3VzdG9tczogewogICAga2V5d29yZHM6IFsgInBhc3Nwb3J0IiwgImJvcmRlciIsICJibHVlLXNxdWFyZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGVjMyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBiYWdnYWdlX2NsYWltOiB7CiAgICBrZXl3b3JkczogWyAiYmx1ZS1zcXVhcmUiLCAiYWlycG9ydCIsICJ0cmFuc3BvcnQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlYzQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgbGVmdF9sdWdnYWdlOiB7CiAgICBrZXl3b3JkczogWyAiYmx1ZS1zcXVhcmUiLCAidHJhdmVsIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZWM1IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIHdoZWVsY2hhaXI6IHsKICAgIGtleXdvcmRzOiBbICJibHVlLXNxdWFyZSIsICJkaXNhYmxlZCIsICJhMTF5IiwgImFjY2Vzc2liaWxpdHkiIF0sCiAgICAiY2hhciI6ICJcdTI2N2YiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgbm9fc21va2luZzogewogICAga2V5d29yZHM6IFsgImNpZ2FyZXR0ZSIsICJibHVlLXNxdWFyZSIsICJzbWVsbCIsICJzbW9rZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGVhZCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICB3YzogewogICAga2V5d29yZHM6IFsgInRvaWxldCIsICJyZXN0cm9vbSIsICJibHVlLXNxdWFyZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGViZSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBwYXJraW5nOiB7CiAgICBrZXl3b3JkczogWyAiY2FycyIsICJibHVlLXNxdWFyZSIsICJhbHBoYWJldCIsICJsZXR0ZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkN2ZcdWZlMGYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgcG90YWJsZV93YXRlcjogewogICAga2V5d29yZHM6IFsgImJsdWUtc3F1YXJlIiwgImxpcXVpZCIsICJyZXN0cm9vbSIsICJjbGVhbmluZyIsICJmYXVjZXQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlYjAiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgbWVuczogewogICAga2V5d29yZHM6IFsgInRvaWxldCIsICJyZXN0cm9vbSIsICJ3YyIsICJibHVlLXNxdWFyZSIsICJnZW5kZXIiLCAibWFsZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGViOSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICB3b21lbnM6IHsKICAgIGtleXdvcmRzOiBbICJwdXJwbGUtc3F1YXJlIiwgIndvbWFuIiwgImZlbWFsZSIsICJ0b2lsZXQiLCAibG9vIiwgInJlc3Ryb29tIiwgImdlbmRlciIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGViYSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBiYWJ5X3N5bWJvbDogewogICAga2V5d29yZHM6IFsgIm9yYW5nZS1zcXVhcmUiLCAiY2hpbGQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlYmMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgcmVzdHJvb206IHsKICAgIGtleXdvcmRzOiBbICJibHVlLXNxdWFyZSIsICJ0b2lsZXQiLCAicmVmcmVzaCIsICJ3YyIsICJnZW5kZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlYmIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgcHV0X2xpdHRlcl9pbl9pdHNfcGxhY2U6IHsKICAgIGtleXdvcmRzOiBbICJibHVlLXNxdWFyZSIsICJzaWduIiwgImh1bWFuIiwgImluZm8iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRlYWUiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgY2luZW1hOiB7CiAgICBrZXl3b3JkczogWyAiYmx1ZS1zcXVhcmUiLCAicmVjb3JkIiwgImZpbG0iLCAibW92aWUiLCAiY3VydGFpbiIsICJzdGFnZSIsICJ0aGVhdGVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZmE2IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIHNpZ25hbF9zdHJlbmd0aDogewogICAga2V5d29yZHM6IFsgImJsdWUtc3F1YXJlIiwgInJlY2VwdGlvbiIsICJwaG9uZSIsICJpbnRlcm5ldCIsICJjb25uZWN0aW9uIiwgIndpZmkiLCAiYmx1ZXRvb3RoIiwgImJhcnMiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjZjYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAga29rbzogewogICAga2V5d29yZHM6IFsgImJsdWUtc3F1YXJlIiwgImhlcmUiLCAia2F0YWthbmEiLCAiamFwYW5lc2UiLCAiZGVzdGluYXRpb24iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRlMDEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgbmc6IHsKICAgIGtleXdvcmRzOiBbICJibHVlLXNxdWFyZSIsICJ3b3JkcyIsICJzaGFwZSIsICJpY29uIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZDk2IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIG9rOiB7CiAgICBrZXl3b3JkczogWyAiZ29vZCIsICJhZ3JlZSIsICJ5ZXMiLCAiYmx1ZS1zcXVhcmUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkOTciLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgdXA6IHsKICAgIGtleXdvcmRzOiBbICJibHVlLXNxdWFyZSIsICJhYm92ZSIsICJoaWdoIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZDk5IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGNvb2w6IHsKICAgIGtleXdvcmRzOiBbICJ3b3JkcyIsICJibHVlLXNxdWFyZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGQ5MiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICAibmV3IjogewogICAga2V5d29yZHM6IFsgImJsdWUtc3F1YXJlIiwgIndvcmRzIiwgInN0YXJ0IiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZDk1IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGZyZWU6IHsKICAgIGtleXdvcmRzOiBbICJibHVlLXNxdWFyZSIsICJ3b3JkcyIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGQ5MyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICB6ZXJvOiB7CiAgICBrZXl3b3JkczogWyAiMCIsICJudW1iZXJzIiwgImJsdWUtc3F1YXJlIiwgIm51bGwiIF0sCiAgICAiY2hhciI6ICIwXHVmZTBmXHUyMGUzIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIG9uZTogewogICAga2V5d29yZHM6IFsgImJsdWUtc3F1YXJlIiwgIm51bWJlcnMiLCAiMSIgXSwKICAgICJjaGFyIjogIjFcdWZlMGZcdTIwZTMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgdHdvOiB7CiAgICBrZXl3b3JkczogWyAibnVtYmVycyIsICIyIiwgInByaW1lIiwgImJsdWUtc3F1YXJlIiBdLAogICAgImNoYXIiOiAiMlx1ZmUwZlx1MjBlMyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICB0aHJlZTogewogICAga2V5d29yZHM6IFsgIjMiLCAibnVtYmVycyIsICJwcmltZSIsICJibHVlLXNxdWFyZSIgXSwKICAgICJjaGFyIjogIjNcdWZlMGZcdTIwZTMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgZm91cjogewogICAga2V5d29yZHM6IFsgIjQiLCAibnVtYmVycyIsICJibHVlLXNxdWFyZSIgXSwKICAgICJjaGFyIjogIjRcdWZlMGZcdTIwZTMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgZml2ZTogewogICAga2V5d29yZHM6IFsgIjUiLCAibnVtYmVycyIsICJibHVlLXNxdWFyZSIsICJwcmltZSIgXSwKICAgICJjaGFyIjogIjVcdWZlMGZcdTIwZTMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgc2l4OiB7CiAgICBrZXl3b3JkczogWyAiNiIsICJudW1iZXJzIiwgImJsdWUtc3F1YXJlIiBdLAogICAgImNoYXIiOiAiNlx1ZmUwZlx1MjBlMyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBzZXZlbjogewogICAga2V5d29yZHM6IFsgIjciLCAibnVtYmVycyIsICJibHVlLXNxdWFyZSIsICJwcmltZSIgXSwKICAgICJjaGFyIjogIjdcdWZlMGZcdTIwZTMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgZWlnaHQ6IHsKICAgIGtleXdvcmRzOiBbICI4IiwgImJsdWUtc3F1YXJlIiwgIm51bWJlcnMiIF0sCiAgICAiY2hhciI6ICI4XHVmZTBmXHUyMGUzIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIG5pbmU6IHsKICAgIGtleXdvcmRzOiBbICJibHVlLXNxdWFyZSIsICJudW1iZXJzIiwgIjkiIF0sCiAgICAiY2hhciI6ICI5XHVmZTBmXHUyMGUzIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGtleWNhcF90ZW46IHsKICAgIGtleXdvcmRzOiBbICJudW1iZXJzIiwgIjEwIiwgImJsdWUtc3F1YXJlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZDFmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGFzdGVyaXNrOiB7CiAgICBrZXl3b3JkczogWyAic3RhciIsICJrZXljYXAiIF0sCiAgICAiY2hhciI6ICIqXHUyMGUzIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIDEyMzQ6IHsKICAgIGtleXdvcmRzOiBbICJudW1iZXJzIiwgImJsdWUtc3F1YXJlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZDIyIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGVqZWN0X2J1dHRvbjogewogICAga2V5d29yZHM6IFsgImJsdWUtc3F1YXJlIiBdLAogICAgImNoYXIiOiAiXHUyM2NmXHVmZTBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGFycm93X2ZvcndhcmQ6IHsKICAgIGtleXdvcmRzOiBbICJibHVlLXNxdWFyZSIsICJyaWdodCIsICJkaXJlY3Rpb24iLCAicGxheSIgXSwKICAgICJjaGFyIjogIlx1MjViNlx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBwYXVzZV9idXR0b246IHsKICAgIGtleXdvcmRzOiBbICJwYXVzZSIsICJibHVlLXNxdWFyZSIgXSwKICAgICJjaGFyIjogIlx1MjNmOCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBuZXh0X3RyYWNrX2J1dHRvbjogewogICAga2V5d29yZHM6IFsgImZvcndhcmQiLCAibmV4dCIsICJibHVlLXNxdWFyZSIgXSwKICAgICJjaGFyIjogIlx1MjNlZCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBzdG9wX2J1dHRvbjogewogICAga2V5d29yZHM6IFsgImJsdWUtc3F1YXJlIiBdLAogICAgImNoYXIiOiAiXHUyM2Y5IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIHJlY29yZF9idXR0b246IHsKICAgIGtleXdvcmRzOiBbICJibHVlLXNxdWFyZSIgXSwKICAgICJjaGFyIjogIlx1MjNmYSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBwbGF5X29yX3BhdXNlX2J1dHRvbjogewogICAga2V5d29yZHM6IFsgImJsdWUtc3F1YXJlIiwgInBsYXkiLCAicGF1c2UiIF0sCiAgICAiY2hhciI6ICJcdTIzZWYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgcHJldmlvdXNfdHJhY2tfYnV0dG9uOiB7CiAgICBrZXl3b3JkczogWyAiYmFja3dhcmQiIF0sCiAgICAiY2hhciI6ICJcdTIzZWUiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgZmFzdF9mb3J3YXJkOiB7CiAgICBrZXl3b3JkczogWyAiYmx1ZS1zcXVhcmUiLCAicGxheSIsICJzcGVlZCIsICJjb250aW51ZSIgXSwKICAgICJjaGFyIjogIlx1MjNlOSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICByZXdpbmQ6IHsKICAgIGtleXdvcmRzOiBbICJwbGF5IiwgImJsdWUtc3F1YXJlIiBdLAogICAgImNoYXIiOiAiXHUyM2VhIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIHR3aXN0ZWRfcmlnaHR3YXJkc19hcnJvd3M6IHsKICAgIGtleXdvcmRzOiBbICJibHVlLXNxdWFyZSIsICJzaHVmZmxlIiwgIm11c2ljIiwgInJhbmRvbSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGQwMCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICByZXBlYXQ6IHsKICAgIGtleXdvcmRzOiBbICJsb29wIiwgInJlY29yZCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGQwMSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICByZXBlYXRfb25lOiB7CiAgICBrZXl3b3JkczogWyAiYmx1ZS1zcXVhcmUiLCAibG9vcCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGQwMiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBhcnJvd19iYWNrd2FyZDogewogICAga2V5d29yZHM6IFsgImJsdWUtc3F1YXJlIiwgImxlZnQiLCAiZGlyZWN0aW9uIiBdLAogICAgImNoYXIiOiAiXHUyNWMwXHVmZTBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGFycm93X3VwX3NtYWxsOiB7CiAgICBrZXl3b3JkczogWyAiYmx1ZS1zcXVhcmUiLCAidHJpYW5nbGUiLCAiZGlyZWN0aW9uIiwgInBvaW50IiwgImZvcndhcmQiLCAidG9wIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZDNjIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGFycm93X2Rvd25fc21hbGw6IHsKICAgIGtleXdvcmRzOiBbICJibHVlLXNxdWFyZSIsICJkaXJlY3Rpb24iLCAiYm90dG9tIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZDNkIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGFycm93X2RvdWJsZV91cDogewogICAga2V5d29yZHM6IFsgImJsdWUtc3F1YXJlIiwgImRpcmVjdGlvbiIsICJ0b3AiIF0sCiAgICAiY2hhciI6ICJcdTIzZWIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgYXJyb3dfZG91YmxlX2Rvd246IHsKICAgIGtleXdvcmRzOiBbICJibHVlLXNxdWFyZSIsICJkaXJlY3Rpb24iLCAiYm90dG9tIiBdLAogICAgImNoYXIiOiAiXHUyM2VjIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGFycm93X3JpZ2h0OiB7CiAgICBrZXl3b3JkczogWyAiYmx1ZS1zcXVhcmUiLCAibmV4dCIgXSwKICAgICJjaGFyIjogIlx1MjdhMVx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBhcnJvd19sZWZ0OiB7CiAgICBrZXl3b3JkczogWyAiYmx1ZS1zcXVhcmUiLCAicHJldmlvdXMiLCAiYmFjayIgXSwKICAgICJjaGFyIjogIlx1MmIwNVx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBhcnJvd191cDogewogICAga2V5d29yZHM6IFsgImJsdWUtc3F1YXJlIiwgImNvbnRpbnVlIiwgInRvcCIsICJkaXJlY3Rpb24iIF0sCiAgICAiY2hhciI6ICJcdTJiMDZcdWZlMGYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgYXJyb3dfZG93bjogewogICAga2V5d29yZHM6IFsgImJsdWUtc3F1YXJlIiwgImRpcmVjdGlvbiIsICJib3R0b20iIF0sCiAgICAiY2hhciI6ICJcdTJiMDdcdWZlMGYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgYXJyb3dfdXBwZXJfcmlnaHQ6IHsKICAgIGtleXdvcmRzOiBbICJibHVlLXNxdWFyZSIsICJwb2ludCIsICJkaXJlY3Rpb24iLCAiZGlhZ29uYWwiLCAibm9ydGhlYXN0IiBdLAogICAgImNoYXIiOiAiXHUyMTk3XHVmZTBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGFycm93X2xvd2VyX3JpZ2h0OiB7CiAgICBrZXl3b3JkczogWyAiYmx1ZS1zcXVhcmUiLCAiZGlyZWN0aW9uIiwgImRpYWdvbmFsIiwgInNvdXRoZWFzdCIgXSwKICAgICJjaGFyIjogIlx1MjE5OFx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBhcnJvd19sb3dlcl9sZWZ0OiB7CiAgICBrZXl3b3JkczogWyAiYmx1ZS1zcXVhcmUiLCAiZGlyZWN0aW9uIiwgImRpYWdvbmFsIiwgInNvdXRod2VzdCIgXSwKICAgICJjaGFyIjogIlx1MjE5OVx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBhcnJvd191cHBlcl9sZWZ0OiB7CiAgICBrZXl3b3JkczogWyAiYmx1ZS1zcXVhcmUiLCAicG9pbnQiLCAiZGlyZWN0aW9uIiwgImRpYWdvbmFsIiwgIm5vcnRod2VzdCIgXSwKICAgICJjaGFyIjogIlx1MjE5Nlx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBhcnJvd191cF9kb3duOiB7CiAgICBrZXl3b3JkczogWyAiYmx1ZS1zcXVhcmUiLCAiZGlyZWN0aW9uIiwgIndheSIsICJ2ZXJ0aWNhbCIgXSwKICAgICJjaGFyIjogIlx1MjE5NVx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBsZWZ0X3JpZ2h0X2Fycm93OiB7CiAgICBrZXl3b3JkczogWyAic2hhcGUiLCAiZGlyZWN0aW9uIiwgImhvcml6b250YWwiLCAic2lkZXdheXMiIF0sCiAgICAiY2hhciI6ICJcdTIxOTRcdWZlMGYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgYXJyb3dzX2NvdW50ZXJjbG9ja3dpc2U6IHsKICAgIGtleXdvcmRzOiBbICJibHVlLXNxdWFyZSIsICJzeW5jIiwgImN5Y2xlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZDA0IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGFycm93X3JpZ2h0X2hvb2s6IHsKICAgIGtleXdvcmRzOiBbICJibHVlLXNxdWFyZSIsICJyZXR1cm4iLCAicm90YXRlIiwgImRpcmVjdGlvbiIgXSwKICAgICJjaGFyIjogIlx1MjFhYVx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBsZWZ0d2FyZHNfYXJyb3dfd2l0aF9ob29rOiB7CiAgICBrZXl3b3JkczogWyAiYmFjayIsICJyZXR1cm4iLCAiYmx1ZS1zcXVhcmUiLCAidW5kbyIsICJlbnRlciIgXSwKICAgICJjaGFyIjogIlx1MjFhOVx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBhcnJvd19oZWFkaW5nX3VwOiB7CiAgICBrZXl3b3JkczogWyAiYmx1ZS1zcXVhcmUiLCAiZGlyZWN0aW9uIiwgInRvcCIgXSwKICAgICJjaGFyIjogIlx1MjkzNFx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBhcnJvd19oZWFkaW5nX2Rvd246IHsKICAgIGtleXdvcmRzOiBbICJibHVlLXNxdWFyZSIsICJkaXJlY3Rpb24iLCAiYm90dG9tIiBdLAogICAgImNoYXIiOiAiXHUyOTM1XHVmZTBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGhhc2g6IHsKICAgIGtleXdvcmRzOiBbICJzeW1ib2wiLCAiYmx1ZS1zcXVhcmUiLCAidHdpdHRlciIgXSwKICAgICJjaGFyIjogIiNcdWZlMGZcdTIwZTMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgaW5mb3JtYXRpb25fc291cmNlOiB7CiAgICBrZXl3b3JkczogWyAiYmx1ZS1zcXVhcmUiLCAiYWxwaGFiZXQiLCAibGV0dGVyIiBdLAogICAgImNoYXIiOiAiXHUyMTM5XHVmZTBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGFiYzogewogICAga2V5d29yZHM6IFsgImJsdWUtc3F1YXJlIiwgImFscGhhYmV0IiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZDI0IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGFiY2Q6IHsKICAgIGtleXdvcmRzOiBbICJibHVlLXNxdWFyZSIsICJhbHBoYWJldCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGQyMSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBjYXBpdGFsX2FiY2Q6IHsKICAgIGtleXdvcmRzOiBbICJhbHBoYWJldCIsICJ3b3JkcyIsICJibHVlLXNxdWFyZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGQyMCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBzeW1ib2xzOiB7CiAgICBrZXl3b3JkczogWyAiYmx1ZS1zcXVhcmUiLCAibXVzaWMiLCAibm90ZSIsICJhbXBlcnNhbmQiLCAicGVyY2VudCIsICJnbHlwaHMiLCAiY2hhcmFjdGVycyIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGQyMyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBtdXNpY2FsX25vdGU6IHsKICAgIGtleXdvcmRzOiBbICJzY29yZSIsICJ0b25lIiwgInNvdW5kIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZmI1IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIG5vdGVzOiB7CiAgICBrZXl3b3JkczogWyAibXVzaWMiLCAic2NvcmUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmYjYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgd2F2eV9kYXNoOiB7CiAgICBrZXl3b3JkczogWyAiZHJhdyIsICJsaW5lIiwgIm1vdXN0YWNoZSIsICJtdXN0YWNoZSIsICJzcXVpZ2dsZSIsICJzY3JpYmJsZSIgXSwKICAgICJjaGFyIjogIlx1MzAzMFx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBjdXJseV9sb29wOiB7CiAgICBrZXl3b3JkczogWyAic2NyaWJibGUiLCAiZHJhdyIsICJzaGFwZSIsICJzcXVpZ2dsZSIgXSwKICAgICJjaGFyIjogIlx1MjdiMCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBoZWF2eV9jaGVja19tYXJrOiB7CiAgICBrZXl3b3JkczogWyAib2siLCAibmlrZSIsICJhbnN3ZXIiLCAieWVzIiwgInRpY2siIF0sCiAgICAiY2hhciI6ICJcdTI3MTRcdWZlMGYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgYXJyb3dzX2Nsb2Nrd2lzZTogewogICAga2V5d29yZHM6IFsgInN5bmMiLCAiY3ljbGUiLCAicm91bmQiLCAicmVwZWF0IiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZDAzIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGhlYXZ5X3BsdXNfc2lnbjogewogICAga2V5d29yZHM6IFsgIm1hdGgiLCAiY2FsY3VsYXRpb24iLCAiYWRkaXRpb24iLCAibW9yZSIsICJpbmNyZWFzZSIgXSwKICAgICJjaGFyIjogIlx1Mjc5NSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBoZWF2eV9taW51c19zaWduOiB7CiAgICBrZXl3b3JkczogWyAibWF0aCIsICJjYWxjdWxhdGlvbiIsICJzdWJ0cmFjdCIsICJsZXNzIiBdLAogICAgImNoYXIiOiAiXHUyNzk2IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGhlYXZ5X2RpdmlzaW9uX3NpZ246IHsKICAgIGtleXdvcmRzOiBbICJkaXZpZGUiLCAibWF0aCIsICJjYWxjdWxhdGlvbiIgXSwKICAgICJjaGFyIjogIlx1Mjc5NyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBoZWF2eV9tdWx0aXBsaWNhdGlvbl94OiB7CiAgICBrZXl3b3JkczogWyAibWF0aCIsICJjYWxjdWxhdGlvbiIgXSwKICAgICJjaGFyIjogIlx1MjcxNlx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBoZWF2eV9kb2xsYXJfc2lnbjogewogICAga2V5d29yZHM6IFsgIm1vbmV5IiwgInNhbGVzIiwgInBheW1lbnQiLCAiY3VycmVuY3kiLCAiYnVjayIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGNiMiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBjdXJyZW5jeV9leGNoYW5nZTogewogICAga2V5d29yZHM6IFsgIm1vbmV5IiwgInNhbGVzIiwgImRvbGxhciIsICJ0cmF2ZWwiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjYjEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgY29weXJpZ2h0OiB7CiAgICBrZXl3b3JkczogWyAiaXAiLCAibGljZW5zZSIsICJjaXJjbGUiLCAibGF3IiwgImxlZ2FsIiBdLAogICAgImNoYXIiOiAiXHhhOVx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICByZWdpc3RlcmVkOiB7CiAgICBrZXl3b3JkczogWyAiYWxwaGFiZXQiLCAiY2lyY2xlIiBdLAogICAgImNoYXIiOiAiXHhhZVx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICB0bTogewogICAga2V5d29yZHM6IFsgInRyYWRlbWFyayIsICJicmFuZCIsICJsYXciLCAibGVnYWwiIF0sCiAgICAiY2hhciI6ICJcdTIxMjJcdWZlMGYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgZW5kOiB7CiAgICBrZXl3b3JkczogWyAid29yZHMiLCAiYXJyb3ciIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRkMWEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgYmFjazogewogICAga2V5d29yZHM6IFsgImFycm93IiwgIndvcmRzIiwgInJldHVybiIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGQxOSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBvbjogewogICAga2V5d29yZHM6IFsgImFycm93IiwgIndvcmRzIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZDFiIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIHRvcDogewogICAga2V5d29yZHM6IFsgIndvcmRzIiwgImJsdWUtc3F1YXJlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZDFkIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIHNvb246IHsKICAgIGtleXdvcmRzOiBbICJhcnJvdyIsICJ3b3JkcyIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGQxYyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBiYWxsb3RfYm94X3dpdGhfY2hlY2s6IHsKICAgIGtleXdvcmRzOiBbICJvayIsICJhZ3JlZSIsICJjb25maXJtIiwgImJsYWNrLXNxdWFyZSIsICJ2b3RlIiwgImVsZWN0aW9uIiwgInllcyIsICJ0aWNrIiBdLAogICAgImNoYXIiOiAiXHUyNjExXHVmZTBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIHJhZGlvX2J1dHRvbjogewogICAga2V5d29yZHM6IFsgImlucHV0IiwgIm9sZCIsICJtdXNpYyIsICJjaXJjbGUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRkMTgiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgd2hpdGVfY2lyY2xlOiB7CiAgICBrZXl3b3JkczogWyAic2hhcGUiLCAicm91bmQiIF0sCiAgICAiY2hhciI6ICJcdTI2YWEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgYmxhY2tfY2lyY2xlOiB7CiAgICBrZXl3b3JkczogWyAic2hhcGUiLCAiYnV0dG9uIiwgInJvdW5kIiBdLAogICAgImNoYXIiOiAiXHUyNmFiIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIHJlZF9jaXJjbGU6IHsKICAgIGtleXdvcmRzOiBbICJzaGFwZSIsICJlcnJvciIsICJkYW5nZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRkMzQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgbGFyZ2VfYmx1ZV9jaXJjbGU6IHsKICAgIGtleXdvcmRzOiBbICJzaGFwZSIsICJpY29uIiwgImJ1dHRvbiIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGQzNSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBzbWFsbF9vcmFuZ2VfZGlhbW9uZDogewogICAga2V5d29yZHM6IFsgInNoYXBlIiwgImpld2VsIiwgImdlbSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGQzOCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBzbWFsbF9ibHVlX2RpYW1vbmQ6IHsKICAgIGtleXdvcmRzOiBbICJzaGFwZSIsICJqZXdlbCIsICJnZW0iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRkMzkiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgbGFyZ2Vfb3JhbmdlX2RpYW1vbmQ6IHsKICAgIGtleXdvcmRzOiBbICJzaGFwZSIsICJqZXdlbCIsICJnZW0iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRkMzYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgbGFyZ2VfYmx1ZV9kaWFtb25kOiB7CiAgICBrZXl3b3JkczogWyAic2hhcGUiLCAiamV3ZWwiLCAiZ2VtIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZDM3IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIHNtYWxsX3JlZF90cmlhbmdsZTogewogICAga2V5d29yZHM6IFsgInNoYXBlIiwgImRpcmVjdGlvbiIsICJ1cCIsICJ0b3AiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRkM2EiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgYmxhY2tfc21hbGxfc3F1YXJlOiB7CiAgICBrZXl3b3JkczogWyAic2hhcGUiLCAiaWNvbiIgXSwKICAgICJjaGFyIjogIlx1MjVhYVx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICB3aGl0ZV9zbWFsbF9zcXVhcmU6IHsKICAgIGtleXdvcmRzOiBbICJzaGFwZSIsICJpY29uIiBdLAogICAgImNoYXIiOiAiXHUyNWFiXHVmZTBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGJsYWNrX2xhcmdlX3NxdWFyZTogewogICAga2V5d29yZHM6IFsgInNoYXBlIiwgImljb24iLCAiYnV0dG9uIiBdLAogICAgImNoYXIiOiAiXHUyYjFiIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIHdoaXRlX2xhcmdlX3NxdWFyZTogewogICAga2V5d29yZHM6IFsgInNoYXBlIiwgImljb24iLCAic3RvbmUiLCAiYnV0dG9uIiBdLAogICAgImNoYXIiOiAiXHUyYjFjIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIHNtYWxsX3JlZF90cmlhbmdsZV9kb3duOiB7CiAgICBrZXl3b3JkczogWyAic2hhcGUiLCAiZGlyZWN0aW9uIiwgImJvdHRvbSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGQzYiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBibGFja19tZWRpdW1fc3F1YXJlOiB7CiAgICBrZXl3b3JkczogWyAic2hhcGUiLCAiYnV0dG9uIiwgImljb24iIF0sCiAgICAiY2hhciI6ICJcdTI1ZmNcdWZlMGYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgd2hpdGVfbWVkaXVtX3NxdWFyZTogewogICAga2V5d29yZHM6IFsgInNoYXBlIiwgInN0b25lIiwgImljb24iIF0sCiAgICAiY2hhciI6ICJcdTI1ZmJcdWZlMGYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgYmxhY2tfbWVkaXVtX3NtYWxsX3NxdWFyZTogewogICAga2V5d29yZHM6IFsgImljb24iLCAic2hhcGUiLCAiYnV0dG9uIiBdLAogICAgImNoYXIiOiAiXHUyNWZlIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIHdoaXRlX21lZGl1bV9zbWFsbF9zcXVhcmU6IHsKICAgIGtleXdvcmRzOiBbICJzaGFwZSIsICJzdG9uZSIsICJpY29uIiwgImJ1dHRvbiIgXSwKICAgICJjaGFyIjogIlx1MjVmZCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBibGFja19zcXVhcmVfYnV0dG9uOiB7CiAgICBrZXl3b3JkczogWyAic2hhcGUiLCAiaW5wdXQiLCAiZnJhbWUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRkMzIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgd2hpdGVfc3F1YXJlX2J1dHRvbjogewogICAga2V5d29yZHM6IFsgInNoYXBlIiwgImlucHV0IiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZDMzIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIHNwZWFrZXI6IHsKICAgIGtleXdvcmRzOiBbICJzb3VuZCIsICJ2b2x1bWUiLCAic2lsZW5jZSIsICJicm9hZGNhc3QiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRkMDgiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgc291bmQ6IHsKICAgIGtleXdvcmRzOiBbICJ2b2x1bWUiLCAic3BlYWtlciIsICJicm9hZGNhc3QiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRkMDkiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgbG91ZF9zb3VuZDogewogICAga2V5d29yZHM6IFsgInZvbHVtZSIsICJub2lzZSIsICJub2lzeSIsICJzcGVha2VyIiwgImJyb2FkY2FzdCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGQwYSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBtdXRlOiB7CiAgICBrZXl3b3JkczogWyAic291bmQiLCAidm9sdW1lIiwgInNpbGVuY2UiLCAicXVpZXQiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRkMDciLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgbWVnYTogewogICAga2V5d29yZHM6IFsgInNvdW5kIiwgInNwZWFrZXIiLCAidm9sdW1lIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkY2UzIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGxvdWRzcGVha2VyOiB7CiAgICBrZXl3b3JkczogWyAidm9sdW1lIiwgInNvdW5kIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkY2UyIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGJlbGw6IHsKICAgIGtleXdvcmRzOiBbICJzb3VuZCIsICJub3RpZmljYXRpb24iLCAiY2hyaXN0bWFzIiwgInhtYXMiLCAiY2hpbWUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRkMTQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgbm9fYmVsbDogewogICAga2V5d29yZHM6IFsgInNvdW5kIiwgInZvbHVtZSIsICJtdXRlIiwgInF1aWV0IiwgInNpbGVudCIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGQxNSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBibGFja19qb2tlcjogewogICAga2V5d29yZHM6IFsgInBva2VyIiwgImNhcmRzIiwgImdhbWUiLCAicGxheSIsICJtYWdpYyIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGNjZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBtYWhqb25nOiB7CiAgICBrZXl3b3JkczogWyAiZ2FtZSIsICJwbGF5IiwgImNoaW5lc2UiLCAia2FuamkiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRjMDQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgc3BhZGVzOiB7CiAgICBrZXl3b3JkczogWyAicG9rZXIiLCAiY2FyZHMiLCAic3VpdHMiLCAibWFnaWMiIF0sCiAgICAiY2hhciI6ICJcdTI2NjBcdWZlMGYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgY2x1YnM6IHsKICAgIGtleXdvcmRzOiBbICJwb2tlciIsICJjYXJkcyIsICJtYWdpYyIsICJzdWl0cyIgXSwKICAgICJjaGFyIjogIlx1MjY2M1x1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBoZWFydHM6IHsKICAgIGtleXdvcmRzOiBbICJwb2tlciIsICJjYXJkcyIsICJtYWdpYyIsICJzdWl0cyIgXSwKICAgICJjaGFyIjogIlx1MjY2NVx1ZmUwZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBkaWFtb25kczogewogICAga2V5d29yZHM6IFsgInBva2VyIiwgImNhcmRzIiwgIm1hZ2ljIiwgInN1aXRzIiBdLAogICAgImNoYXIiOiAiXHUyNjY2XHVmZTBmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGZsb3dlcl9wbGF5aW5nX2NhcmRzOiB7CiAgICBrZXl3b3JkczogWyAiZ2FtZSIsICJzdW5zZXQiLCAicmVkIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZmI0IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIHRob3VnaHRfYmFsbG9vbjogewogICAga2V5d29yZHM6IFsgImJ1YmJsZSIsICJjbG91ZCIsICJzcGVlY2giLCAidGhpbmtpbmciLCAiZHJlYW0iIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRjYWQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgcmlnaHRfYW5nZXJfYnViYmxlOiB7CiAgICBrZXl3b3JkczogWyAiY2FwdGlvbiIsICJzcGVlY2giLCAidGhpbmtpbmciLCAibWFkIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZGVmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIHNwZWVjaF9iYWxsb29uOiB7CiAgICBrZXl3b3JkczogWyAiYnViYmxlIiwgIndvcmRzIiwgIm1lc3NhZ2UiLCAidGFsayIsICJjaGF0dGluZyIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGNhYyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBsZWZ0X3NwZWVjaF9idWJibGU6IHsKICAgIGtleXdvcmRzOiBbICJ3b3JkcyIsICJtZXNzYWdlIiwgInRhbGsiLCAiY2hhdHRpbmciIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRkZTgiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgY2xvY2sxOiB7CiAgICBrZXl3b3JkczogWyAidGltZSIsICJsYXRlIiwgImVhcmx5IiwgInNjaGVkdWxlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZDUwIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGNsb2NrMjogewogICAga2V5d29yZHM6IFsgInRpbWUiLCAibGF0ZSIsICJlYXJseSIsICJzY2hlZHVsZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGQ1MSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBjbG9jazM6IHsKICAgIGtleXdvcmRzOiBbICJ0aW1lIiwgImxhdGUiLCAiZWFybHkiLCAic2NoZWR1bGUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRkNTIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgY2xvY2s0OiB7CiAgICBrZXl3b3JkczogWyAidGltZSIsICJsYXRlIiwgImVhcmx5IiwgInNjaGVkdWxlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZDUzIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGNsb2NrNTogewogICAga2V5d29yZHM6IFsgInRpbWUiLCAibGF0ZSIsICJlYXJseSIsICJzY2hlZHVsZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGQ1NCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBjbG9jazY6IHsKICAgIGtleXdvcmRzOiBbICJ0aW1lIiwgImxhdGUiLCAiZWFybHkiLCAic2NoZWR1bGUiLCAiZGF3biIsICJkdXNrIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZDU1IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGNsb2NrNzogewogICAga2V5d29yZHM6IFsgInRpbWUiLCAibGF0ZSIsICJlYXJseSIsICJzY2hlZHVsZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGQ1NiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBjbG9jazg6IHsKICAgIGtleXdvcmRzOiBbICJ0aW1lIiwgImxhdGUiLCAiZWFybHkiLCAic2NoZWR1bGUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRkNTciLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgY2xvY2s5OiB7CiAgICBrZXl3b3JkczogWyAidGltZSIsICJsYXRlIiwgImVhcmx5IiwgInNjaGVkdWxlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZDU4IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGNsb2NrMTA6IHsKICAgIGtleXdvcmRzOiBbICJ0aW1lIiwgImxhdGUiLCAiZWFybHkiLCAic2NoZWR1bGUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRkNTkiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgY2xvY2sxMTogewogICAga2V5d29yZHM6IFsgInRpbWUiLCAibGF0ZSIsICJlYXJseSIsICJzY2hlZHVsZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGQ1YSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBjbG9jazEyOiB7CiAgICBrZXl3b3JkczogWyAidGltZSIsICJub29uIiwgIm1pZG5pZ2h0IiwgIm1pZGRheSIsICJsYXRlIiwgImVhcmx5IiwgInNjaGVkdWxlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZDViIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGNsb2NrMTMwOiB7CiAgICBrZXl3b3JkczogWyAidGltZSIsICJsYXRlIiwgImVhcmx5IiwgInNjaGVkdWxlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZDVjIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGNsb2NrMjMwOiB7CiAgICBrZXl3b3JkczogWyAidGltZSIsICJsYXRlIiwgImVhcmx5IiwgInNjaGVkdWxlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZDVkIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGNsb2NrMzMwOiB7CiAgICBrZXl3b3JkczogWyAidGltZSIsICJsYXRlIiwgImVhcmx5IiwgInNjaGVkdWxlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZDVlIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGNsb2NrNDMwOiB7CiAgICBrZXl3b3JkczogWyAidGltZSIsICJsYXRlIiwgImVhcmx5IiwgInNjaGVkdWxlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZDVmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGNsb2NrNTMwOiB7CiAgICBrZXl3b3JkczogWyAidGltZSIsICJsYXRlIiwgImVhcmx5IiwgInNjaGVkdWxlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZDYwIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGNsb2NrNjMwOiB7CiAgICBrZXl3b3JkczogWyAidGltZSIsICJsYXRlIiwgImVhcmx5IiwgInNjaGVkdWxlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZDYxIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGNsb2NrNzMwOiB7CiAgICBrZXl3b3JkczogWyAidGltZSIsICJsYXRlIiwgImVhcmx5IiwgInNjaGVkdWxlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZDYyIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGNsb2NrODMwOiB7CiAgICBrZXl3b3JkczogWyAidGltZSIsICJsYXRlIiwgImVhcmx5IiwgInNjaGVkdWxlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZDYzIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGNsb2NrOTMwOiB7CiAgICBrZXl3b3JkczogWyAidGltZSIsICJsYXRlIiwgImVhcmx5IiwgInNjaGVkdWxlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZDY0IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGNsb2NrMTAzMDogewogICAga2V5d29yZHM6IFsgInRpbWUiLCAibGF0ZSIsICJlYXJseSIsICJzY2hlZHVsZSIgXSwKICAgICJjaGFyIjogIlx1ZDgzZFx1ZGQ2NSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogInN5bWJvbHMiCiAgfSwKICBjbG9jazExMzA6IHsKICAgIGtleXdvcmRzOiBbICJ0aW1lIiwgImxhdGUiLCAiZWFybHkiLCAic2NoZWR1bGUiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2RcdWRkNjYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJzeW1ib2xzIgogIH0sCiAgY2xvY2sxMjMwOiB7CiAgICBrZXl3b3JkczogWyAidGltZSIsICJsYXRlIiwgImVhcmx5IiwgInNjaGVkdWxlIiBdLAogICAgImNoYXIiOiAiXHVkODNkXHVkZDY3IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAic3ltYm9scyIKICB9LAogIGFmZ2hhbmlzdGFuOiB7CiAgICBrZXl3b3JkczogWyAiYWYiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZTZcdWQ4M2NcdWRkZWIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIGFsYW5kX2lzbGFuZHM6IHsKICAgIGtleXdvcmRzOiBbICJceGM1bGFuZCIsICJpc2xhbmRzIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGU2XHVkODNjXHVkZGZkIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBhbGJhbmlhOiB7CiAgICBrZXl3b3JkczogWyAiYWwiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZTZcdWQ4M2NcdWRkZjEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIGFsZ2VyaWE6IHsKICAgIGtleXdvcmRzOiBbICJkeiIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRlOVx1ZDgzY1x1ZGRmZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgYW1lcmljYW5fc2Ftb2E6IHsKICAgIGtleXdvcmRzOiBbICJhbWVyaWNhbiIsICJ3cyIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRlNlx1ZDgzY1x1ZGRmOCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgYW5kb3JyYTogewogICAga2V5d29yZHM6IFsgImFkIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGU2XHVkODNjXHVkZGU5IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBhbmdvbGE6IHsKICAgIGtleXdvcmRzOiBbICJhbyIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRlNlx1ZDgzY1x1ZGRmNCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgYW5ndWlsbGE6IHsKICAgIGtleXdvcmRzOiBbICJhaSIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRlNlx1ZDgzY1x1ZGRlZSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgYW50YXJjdGljYTogewogICAga2V5d29yZHM6IFsgImFxIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGU2XHVkODNjXHVkZGY2IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBhbnRpZ3VhX2JhcmJ1ZGE6IHsKICAgIGtleXdvcmRzOiBbICJhbnRpZ3VhIiwgImJhcmJ1ZGEiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZTZcdWQ4M2NcdWRkZWMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIGFyZ2VudGluYTogewogICAga2V5d29yZHM6IFsgImFyIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGU2XHVkODNjXHVkZGY3IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBhcm1lbmlhOiB7CiAgICBrZXl3b3JkczogWyAiYW0iLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZTZcdWQ4M2NcdWRkZjIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIGFydWJhOiB7CiAgICBrZXl3b3JkczogWyAiYXciLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZTZcdWQ4M2NcdWRkZmMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIGF1c3RyYWxpYTogewogICAga2V5d29yZHM6IFsgImF1IiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGU2XHVkODNjXHVkZGZhIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBhdXN0cmlhOiB7CiAgICBrZXl3b3JkczogWyAiYXQiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZTZcdWQ4M2NcdWRkZjkiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIGF6ZXJiYWlqYW46IHsKICAgIGtleXdvcmRzOiBbICJheiIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRlNlx1ZDgzY1x1ZGRmZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgYmFoYW1hczogewogICAga2V5d29yZHM6IFsgImJzIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGU3XHVkODNjXHVkZGY4IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBiYWhyYWluOiB7CiAgICBrZXl3b3JkczogWyAiYmgiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZTdcdWQ4M2NcdWRkZWQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIGJhbmdsYWRlc2g6IHsKICAgIGtleXdvcmRzOiBbICJiZCIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRlN1x1ZDgzY1x1ZGRlOSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgYmFyYmFkb3M6IHsKICAgIGtleXdvcmRzOiBbICJiYiIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRlN1x1ZDgzY1x1ZGRlNyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgYmVsYXJ1czogewogICAga2V5d29yZHM6IFsgImJ5IiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGU3XHVkODNjXHVkZGZlIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBiZWxnaXVtOiB7CiAgICBrZXl3b3JkczogWyAiYmUiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZTdcdWQ4M2NcdWRkZWEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIGJlbGl6ZTogewogICAga2V5d29yZHM6IFsgImJ6IiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGU3XHVkODNjXHVkZGZmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBiZW5pbjogewogICAga2V5d29yZHM6IFsgImJqIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGU3XHVkODNjXHVkZGVmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBiZXJtdWRhOiB7CiAgICBrZXl3b3JkczogWyAiYm0iLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZTdcdWQ4M2NcdWRkZjIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIGJodXRhbjogewogICAga2V5d29yZHM6IFsgImJ0IiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGU3XHVkODNjXHVkZGY5IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBib2xpdmlhOiB7CiAgICBrZXl3b3JkczogWyAiYm8iLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZTdcdWQ4M2NcdWRkZjQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIGNhcmliYmVhbl9uZXRoZXJsYW5kczogewogICAga2V5d29yZHM6IFsgImJvbmFpcmUiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZTdcdWQ4M2NcdWRkZjYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIGJvc25pYV9oZXJ6ZWdvdmluYTogewogICAga2V5d29yZHM6IFsgImJvc25pYSIsICJoZXJ6ZWdvdmluYSIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRlN1x1ZDgzY1x1ZGRlNiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgYm90c3dhbmE6IHsKICAgIGtleXdvcmRzOiBbICJidyIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRlN1x1ZDgzY1x1ZGRmYyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgYnJhemlsOiB7CiAgICBrZXl3b3JkczogWyAiYnIiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZTdcdWQ4M2NcdWRkZjciLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIGJyaXRpc2hfaW5kaWFuX29jZWFuX3RlcnJpdG9yeTogewogICAga2V5d29yZHM6IFsgImJyaXRpc2giLCAiaW5kaWFuIiwgIm9jZWFuIiwgInRlcnJpdG9yeSIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRlZVx1ZDgzY1x1ZGRmNCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgYnJpdGlzaF92aXJnaW5faXNsYW5kczogewogICAga2V5d29yZHM6IFsgImJyaXRpc2giLCAidmlyZ2luIiwgImlzbGFuZHMiLCAiYnZpIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGZiXHVkODNjXHVkZGVjIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBicnVuZWk6IHsKICAgIGtleXdvcmRzOiBbICJibiIsICJkYXJ1c3NhbGFtIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGU3XHVkODNjXHVkZGYzIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBidWxnYXJpYTogewogICAga2V5d29yZHM6IFsgImJnIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGU3XHVkODNjXHVkZGVjIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBidXJraW5hX2Zhc286IHsKICAgIGtleXdvcmRzOiBbICJidXJraW5hIiwgImZhc28iLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZTdcdWQ4M2NcdWRkZWIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIGJ1cnVuZGk6IHsKICAgIGtleXdvcmRzOiBbICJiaSIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRlN1x1ZDgzY1x1ZGRlZSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgY2FwZV92ZXJkZTogewogICAga2V5d29yZHM6IFsgImNhYm8iLCAidmVyZGUiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZThcdWQ4M2NcdWRkZmIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIGNhbWJvZGlhOiB7CiAgICBrZXl3b3JkczogWyAia2giLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZjBcdWQ4M2NcdWRkZWQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIGNhbWVyb29uOiB7CiAgICBrZXl3b3JkczogWyAiY20iLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZThcdWQ4M2NcdWRkZjIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIGNhbmFkYTogewogICAga2V5d29yZHM6IFsgImNhIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGU4XHVkODNjXHVkZGU2IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBjYW5hcnlfaXNsYW5kczogewogICAga2V5d29yZHM6IFsgImNhbmFyeSIsICJpc2xhbmRzIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGVlXHVkODNjXHVkZGU4IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBjYXltYW5faXNsYW5kczogewogICAga2V5d29yZHM6IFsgImNheW1hbiIsICJpc2xhbmRzIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGYwXHVkODNjXHVkZGZlIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBjZW50cmFsX2FmcmljYW5fcmVwdWJsaWM6IHsKICAgIGtleXdvcmRzOiBbICJjZW50cmFsIiwgImFmcmljYW4iLCAicmVwdWJsaWMiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZThcdWQ4M2NcdWRkZWIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIGNoYWQ6IHsKICAgIGtleXdvcmRzOiBbICJ0ZCIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRmOVx1ZDgzY1x1ZGRlOSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgY2hpbGU6IHsKICAgIGtleXdvcmRzOiBbICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRlOFx1ZDgzY1x1ZGRmMSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgY246IHsKICAgIGtleXdvcmRzOiBbICJjaGluYSIsICJjaGluZXNlIiwgInByYyIsICJmbGFnIiwgImNvdW50cnkiLCAibmF0aW9uIiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRlOFx1ZDgzY1x1ZGRmMyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgY2hyaXN0bWFzX2lzbGFuZDogewogICAga2V5d29yZHM6IFsgImNocmlzdG1hcyIsICJpc2xhbmQiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZThcdWQ4M2NcdWRkZmQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIGNvY29zX2lzbGFuZHM6IHsKICAgIGtleXdvcmRzOiBbICJjb2NvcyIsICJrZWVsaW5nIiwgImlzbGFuZHMiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZThcdWQ4M2NcdWRkZTgiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIGNvbG9tYmlhOiB7CiAgICBrZXl3b3JkczogWyAiY28iLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZThcdWQ4M2NcdWRkZjQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIGNvbW9yb3M6IHsKICAgIGtleXdvcmRzOiBbICJrbSIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRmMFx1ZDgzY1x1ZGRmMiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgY29uZ29fYnJhenphdmlsbGU6IHsKICAgIGtleXdvcmRzOiBbICJjb25nbyIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRlOFx1ZDgzY1x1ZGRlYyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgY29uZ29fa2luc2hhc2E6IHsKICAgIGtleXdvcmRzOiBbICJjb25nbyIsICJkZW1vY3JhdGljIiwgInJlcHVibGljIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGU4XHVkODNjXHVkZGU5IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBjb29rX2lzbGFuZHM6IHsKICAgIGtleXdvcmRzOiBbICJjb29rIiwgImlzbGFuZHMiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZThcdWQ4M2NcdWRkZjAiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIGNvc3RhX3JpY2E6IHsKICAgIGtleXdvcmRzOiBbICJjb3N0YSIsICJyaWNhIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGU4XHVkODNjXHVkZGY3IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBjcm9hdGlhOiB7CiAgICBrZXl3b3JkczogWyAiaHIiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZWRcdWQ4M2NcdWRkZjciLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIGN1YmE6IHsKICAgIGtleXdvcmRzOiBbICJjdSIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRlOFx1ZDgzY1x1ZGRmYSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgY3VyYWNhbzogewogICAga2V5d29yZHM6IFsgImN1cmFceGU3YW8iLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZThcdWQ4M2NcdWRkZmMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIGN5cHJ1czogewogICAga2V5d29yZHM6IFsgImN5IiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGU4XHVkODNjXHVkZGZlIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBjemVjaF9yZXB1YmxpYzogewogICAga2V5d29yZHM6IFsgImN6IiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGU4XHVkODNjXHVkZGZmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBkZW5tYXJrOiB7CiAgICBrZXl3b3JkczogWyAiZGsiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZTlcdWQ4M2NcdWRkZjAiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIGRqaWJvdXRpOiB7CiAgICBrZXl3b3JkczogWyAiZGoiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZTlcdWQ4M2NcdWRkZWYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIGRvbWluaWNhOiB7CiAgICBrZXl3b3JkczogWyAiZG0iLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZTlcdWQ4M2NcdWRkZjIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIGRvbWluaWNhbl9yZXB1YmxpYzogewogICAga2V5d29yZHM6IFsgImRvbWluaWNhbiIsICJyZXB1YmxpYyIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRlOVx1ZDgzY1x1ZGRmNCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgZWN1YWRvcjogewogICAga2V5d29yZHM6IFsgImVjIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGVhXHVkODNjXHVkZGU4IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBlZ3lwdDogewogICAga2V5d29yZHM6IFsgImVnIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGVhXHVkODNjXHVkZGVjIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBlbF9zYWx2YWRvcjogewogICAga2V5d29yZHM6IFsgImVsIiwgInNhbHZhZG9yIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGY4XHVkODNjXHVkZGZiIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBlcXVhdG9yaWFsX2d1aW5lYTogewogICAga2V5d29yZHM6IFsgImVxdWF0b3JpYWwiLCAiZ24iLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZWNcdWQ4M2NcdWRkZjYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIGVyaXRyZWE6IHsKICAgIGtleXdvcmRzOiBbICJlciIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRlYVx1ZDgzY1x1ZGRmNyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgZXN0b25pYTogewogICAga2V5d29yZHM6IFsgImVlIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGVhXHVkODNjXHVkZGVhIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBldGhpb3BpYTogewogICAga2V5d29yZHM6IFsgImV0IiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGVhXHVkODNjXHVkZGY5IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBldTogewogICAga2V5d29yZHM6IFsgImV1cm9wZWFuIiwgInVuaW9uIiwgImZsYWciLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGVhXHVkODNjXHVkZGZhIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBmYWxrbGFuZF9pc2xhbmRzOiB7CiAgICBrZXl3b3JkczogWyAiZmFsa2xhbmQiLCAiaXNsYW5kcyIsICJtYWx2aW5hcyIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRlYlx1ZDgzY1x1ZGRmMCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgZmFyb2VfaXNsYW5kczogewogICAga2V5d29yZHM6IFsgImZhcm9lIiwgImlzbGFuZHMiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZWJcdWQ4M2NcdWRkZjQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIGZpamk6IHsKICAgIGtleXdvcmRzOiBbICJmaiIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRlYlx1ZDgzY1x1ZGRlZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgZmlubGFuZDogewogICAga2V5d29yZHM6IFsgImZpIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGViXHVkODNjXHVkZGVlIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBmcjogewogICAga2V5d29yZHM6IFsgImJhbm5lciIsICJmbGFnIiwgIm5hdGlvbiIsICJmcmFuY2UiLCAiZnJlbmNoIiwgImNvdW50cnkiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZWJcdWQ4M2NcdWRkZjciLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIGZyZW5jaF9ndWlhbmE6IHsKICAgIGtleXdvcmRzOiBbICJmcmVuY2giLCAiZ3VpYW5hIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGVjXHVkODNjXHVkZGViIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBmcmVuY2hfcG9seW5lc2lhOiB7CiAgICBrZXl3b3JkczogWyAiZnJlbmNoIiwgInBvbHluZXNpYSIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRmNVx1ZDgzY1x1ZGRlYiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgZnJlbmNoX3NvdXRoZXJuX3RlcnJpdG9yaWVzOiB7CiAgICBrZXl3b3JkczogWyAiZnJlbmNoIiwgInNvdXRoZXJuIiwgInRlcnJpdG9yaWVzIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGY5XHVkODNjXHVkZGViIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBnYWJvbjogewogICAga2V5d29yZHM6IFsgImdhIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGVjXHVkODNjXHVkZGU2IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBnYW1iaWE6IHsKICAgIGtleXdvcmRzOiBbICJnbSIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRlY1x1ZDgzY1x1ZGRmMiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgZ2VvcmdpYTogewogICAga2V5d29yZHM6IFsgImdlIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGVjXHVkODNjXHVkZGVhIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBkZTogewogICAga2V5d29yZHM6IFsgImdlcm1hbiIsICJuYXRpb24iLCAiZmxhZyIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRlOVx1ZDgzY1x1ZGRlYSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgZ2hhbmE6IHsKICAgIGtleXdvcmRzOiBbICJnaCIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRlY1x1ZDgzY1x1ZGRlZCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgZ2licmFsdGFyOiB7CiAgICBrZXl3b3JkczogWyAiZ2kiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZWNcdWQ4M2NcdWRkZWUiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIGdyZWVjZTogewogICAga2V5d29yZHM6IFsgImdyIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGVjXHVkODNjXHVkZGY3IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBncmVlbmxhbmQ6IHsKICAgIGtleXdvcmRzOiBbICJnbCIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRlY1x1ZDgzY1x1ZGRmMSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgZ3JlbmFkYTogewogICAga2V5d29yZHM6IFsgImdkIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGVjXHVkODNjXHVkZGU5IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBndWFkZWxvdXBlOiB7CiAgICBrZXl3b3JkczogWyAiZ3AiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZWNcdWQ4M2NcdWRkZjUiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIGd1YW06IHsKICAgIGtleXdvcmRzOiBbICJndSIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRlY1x1ZDgzY1x1ZGRmYSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgZ3VhdGVtYWxhOiB7CiAgICBrZXl3b3JkczogWyAiZ3QiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZWNcdWQ4M2NcdWRkZjkiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIGd1ZXJuc2V5OiB7CiAgICBrZXl3b3JkczogWyAiZ2ciLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZWNcdWQ4M2NcdWRkZWMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIGd1aW5lYTogewogICAga2V5d29yZHM6IFsgImduIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGVjXHVkODNjXHVkZGYzIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBndWluZWFfYmlzc2F1OiB7CiAgICBrZXl3b3JkczogWyAiZ3ciLCAiYmlzc2F1IiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGVjXHVkODNjXHVkZGZjIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBndXlhbmE6IHsKICAgIGtleXdvcmRzOiBbICJneSIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRlY1x1ZDgzY1x1ZGRmZSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgaGFpdGk6IHsKICAgIGtleXdvcmRzOiBbICJodCIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRlZFx1ZDgzY1x1ZGRmOSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgaG9uZHVyYXM6IHsKICAgIGtleXdvcmRzOiBbICJobiIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRlZFx1ZDgzY1x1ZGRmMyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgaG9uZ19rb25nOiB7CiAgICBrZXl3b3JkczogWyAiaG9uZyIsICJrb25nIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGVkXHVkODNjXHVkZGYwIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBodW5nYXJ5OiB7CiAgICBrZXl3b3JkczogWyAiaHUiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZWRcdWQ4M2NcdWRkZmEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIGljZWxhbmQ6IHsKICAgIGtleXdvcmRzOiBbICJpcyIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRlZVx1ZDgzY1x1ZGRmOCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgaW5kaWE6IHsKICAgIGtleXdvcmRzOiBbICJpbiIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRlZVx1ZDgzY1x1ZGRmMyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgaW5kb25lc2lhOiB7CiAgICBrZXl3b3JkczogWyAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZWVcdWQ4M2NcdWRkZTkiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIGlyYW46IHsKICAgIGtleXdvcmRzOiBbICJpcmFuLCIsICJpc2xhbWljIiwgInJlcHVibGljIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGVlXHVkODNjXHVkZGY3IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBpcmFxOiB7CiAgICBrZXl3b3JkczogWyAiaXEiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZWVcdWQ4M2NcdWRkZjYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIGlyZWxhbmQ6IHsKICAgIGtleXdvcmRzOiBbICJpZSIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRlZVx1ZDgzY1x1ZGRlYSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgaXNsZV9vZl9tYW46IHsKICAgIGtleXdvcmRzOiBbICJpc2xlIiwgIm1hbiIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRlZVx1ZDgzY1x1ZGRmMiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgaXNyYWVsOiB7CiAgICBrZXl3b3JkczogWyAiaWwiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZWVcdWQ4M2NcdWRkZjEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIGl0OiB7CiAgICBrZXl3b3JkczogWyAiaXRhbHkiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZWVcdWQ4M2NcdWRkZjkiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIGNvdGVfZGl2b2lyZTogewogICAga2V5d29yZHM6IFsgIml2b3J5IiwgImNvYXN0IiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGU4XHVkODNjXHVkZGVlIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBqYW1haWNhOiB7CiAgICBrZXl3b3JkczogWyAiam0iLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZWZcdWQ4M2NcdWRkZjIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIGpwOiB7CiAgICBrZXl3b3JkczogWyAiamFwYW5lc2UiLCAibmF0aW9uIiwgImZsYWciLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZWZcdWQ4M2NcdWRkZjUiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIGplcnNleTogewogICAga2V5d29yZHM6IFsgImplIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGVmXHVkODNjXHVkZGVhIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBqb3JkYW46IHsKICAgIGtleXdvcmRzOiBbICJqbyIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRlZlx1ZDgzY1x1ZGRmNCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAga2F6YWtoc3RhbjogewogICAga2V5d29yZHM6IFsgImt6IiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGYwXHVkODNjXHVkZGZmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBrZW55YTogewogICAga2V5d29yZHM6IFsgImtlIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGYwXHVkODNjXHVkZGVhIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBraXJpYmF0aTogewogICAga2V5d29yZHM6IFsgImtpIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGYwXHVkODNjXHVkZGVlIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBrb3Nvdm86IHsKICAgIGtleXdvcmRzOiBbICJ4ayIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRmZFx1ZDgzY1x1ZGRmMCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAga3V3YWl0OiB7CiAgICBrZXl3b3JkczogWyAia3ciLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZjBcdWQ4M2NcdWRkZmMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIGt5cmd5enN0YW46IHsKICAgIGtleXdvcmRzOiBbICJrZyIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRmMFx1ZDgzY1x1ZGRlYyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgbGFvczogewogICAga2V5d29yZHM6IFsgImxhbyIsICJkZW1vY3JhdGljIiwgInJlcHVibGljIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGYxXHVkODNjXHVkZGU2IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBsYXR2aWE6IHsKICAgIGtleXdvcmRzOiBbICJsdiIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRmMVx1ZDgzY1x1ZGRmYiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgbGViYW5vbjogewogICAga2V5d29yZHM6IFsgImxiIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGYxXHVkODNjXHVkZGU3IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBsZXNvdGhvOiB7CiAgICBrZXl3b3JkczogWyAibHMiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZjFcdWQ4M2NcdWRkZjgiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIGxpYmVyaWE6IHsKICAgIGtleXdvcmRzOiBbICJsciIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRmMVx1ZDgzY1x1ZGRmNyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgbGlieWE6IHsKICAgIGtleXdvcmRzOiBbICJseSIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRmMVx1ZDgzY1x1ZGRmZSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgbGllY2h0ZW5zdGVpbjogewogICAga2V5d29yZHM6IFsgImxpIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGYxXHVkODNjXHVkZGVlIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBsaXRodWFuaWE6IHsKICAgIGtleXdvcmRzOiBbICJsdCIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRmMVx1ZDgzY1x1ZGRmOSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgbHV4ZW1ib3VyZzogewogICAga2V5d29yZHM6IFsgImx1IiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGYxXHVkODNjXHVkZGZhIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBtYWNhdTogewogICAga2V5d29yZHM6IFsgIm1hY2FvIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGYyXHVkODNjXHVkZGY0IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBtYWNlZG9uaWE6IHsKICAgIGtleXdvcmRzOiBbICJtYWNlZG9uaWEsIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGYyXHVkODNjXHVkZGYwIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBtYWRhZ2FzY2FyOiB7CiAgICBrZXl3b3JkczogWyAibWciLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZjJcdWQ4M2NcdWRkZWMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIG1hbGF3aTogewogICAga2V5d29yZHM6IFsgIm13IiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGYyXHVkODNjXHVkZGZjIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBtYWxheXNpYTogewogICAga2V5d29yZHM6IFsgIm15IiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGYyXHVkODNjXHVkZGZlIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBtYWxkaXZlczogewogICAga2V5d29yZHM6IFsgIm12IiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGYyXHVkODNjXHVkZGZiIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBtYWxpOiB7CiAgICBrZXl3b3JkczogWyAibWwiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZjJcdWQ4M2NcdWRkZjEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIG1hbHRhOiB7CiAgICBrZXl3b3JkczogWyAibXQiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZjJcdWQ4M2NcdWRkZjkiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIG1hcnNoYWxsX2lzbGFuZHM6IHsKICAgIGtleXdvcmRzOiBbICJtYXJzaGFsbCIsICJpc2xhbmRzIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGYyXHVkODNjXHVkZGVkIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBtYXJ0aW5pcXVlOiB7CiAgICBrZXl3b3JkczogWyAibXEiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZjJcdWQ4M2NcdWRkZjYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIG1hdXJpdGFuaWE6IHsKICAgIGtleXdvcmRzOiBbICJtciIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRmMlx1ZDgzY1x1ZGRmNyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgbWF1cml0aXVzOiB7CiAgICBrZXl3b3JkczogWyAibXUiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZjJcdWQ4M2NcdWRkZmEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIG1heW90dGU6IHsKICAgIGtleXdvcmRzOiBbICJ5dCIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRmZVx1ZDgzY1x1ZGRmOSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgbWV4aWNvOiB7CiAgICBrZXl3b3JkczogWyAibXgiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZjJcdWQ4M2NcdWRkZmQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIG1pY3JvbmVzaWE6IHsKICAgIGtleXdvcmRzOiBbICJtaWNyb25lc2lhLCIsICJmZWRlcmF0ZWQiLCAic3RhdGVzIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGViXHVkODNjXHVkZGYyIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBtb2xkb3ZhOiB7CiAgICBrZXl3b3JkczogWyAibW9sZG92YSwiLCAicmVwdWJsaWMiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZjJcdWQ4M2NcdWRkZTkiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIG1vbmFjbzogewogICAga2V5d29yZHM6IFsgIm1jIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGYyXHVkODNjXHVkZGU4IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBtb25nb2xpYTogewogICAga2V5d29yZHM6IFsgIm1uIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGYyXHVkODNjXHVkZGYzIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBtb250ZW5lZ3JvOiB7CiAgICBrZXl3b3JkczogWyAibWUiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZjJcdWQ4M2NcdWRkZWEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIG1vbnRzZXJyYXQ6IHsKICAgIGtleXdvcmRzOiBbICJtcyIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRmMlx1ZDgzY1x1ZGRmOCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgbW9yb2NjbzogewogICAga2V5d29yZHM6IFsgIm1hIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGYyXHVkODNjXHVkZGU2IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBtb3phbWJpcXVlOiB7CiAgICBrZXl3b3JkczogWyAibXoiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZjJcdWQ4M2NcdWRkZmYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIG15YW5tYXI6IHsKICAgIGtleXdvcmRzOiBbICJtbSIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRmMlx1ZDgzY1x1ZGRmMiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgbmFtaWJpYTogewogICAga2V5d29yZHM6IFsgIm5hIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGYzXHVkODNjXHVkZGU2IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBuYXVydTogewogICAga2V5d29yZHM6IFsgIm5yIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGYzXHVkODNjXHVkZGY3IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBuZXBhbDogewogICAga2V5d29yZHM6IFsgIm5wIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGYzXHVkODNjXHVkZGY1IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBuZXRoZXJsYW5kczogewogICAga2V5d29yZHM6IFsgIm5sIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGYzXHVkODNjXHVkZGYxIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBuZXdfY2FsZWRvbmlhOiB7CiAgICBrZXl3b3JkczogWyAibmV3IiwgImNhbGVkb25pYSIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRmM1x1ZDgzY1x1ZGRlOCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgbmV3X3plYWxhbmQ6IHsKICAgIGtleXdvcmRzOiBbICJuZXciLCAiemVhbGFuZCIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRmM1x1ZDgzY1x1ZGRmZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgbmljYXJhZ3VhOiB7CiAgICBrZXl3b3JkczogWyAibmkiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZjNcdWQ4M2NcdWRkZWUiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIG5pZ2VyOiB7CiAgICBrZXl3b3JkczogWyAibmUiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZjNcdWQ4M2NcdWRkZWEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIG5pZ2VyaWE6IHsKICAgIGtleXdvcmRzOiBbICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRmM1x1ZDgzY1x1ZGRlYyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgbml1ZTogewogICAga2V5d29yZHM6IFsgIm51IiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGYzXHVkODNjXHVkZGZhIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBub3Jmb2xrX2lzbGFuZDogewogICAga2V5d29yZHM6IFsgIm5vcmZvbGsiLCAiaXNsYW5kIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGYzXHVkODNjXHVkZGViIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBub3J0aGVybl9tYXJpYW5hX2lzbGFuZHM6IHsKICAgIGtleXdvcmRzOiBbICJub3J0aGVybiIsICJtYXJpYW5hIiwgImlzbGFuZHMiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZjJcdWQ4M2NcdWRkZjUiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIG5vcnRoX2tvcmVhOiB7CiAgICBrZXl3b3JkczogWyAibm9ydGgiLCAia29yZWEiLCAibmF0aW9uIiwgImZsYWciLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZjBcdWQ4M2NcdWRkZjUiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIG5vcndheTogewogICAga2V5d29yZHM6IFsgIm5vIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGYzXHVkODNjXHVkZGY0IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBvbWFuOiB7CiAgICBrZXl3b3JkczogWyAib21fc3ltYm9sIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGY0XHVkODNjXHVkZGYyIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBwYWtpc3RhbjogewogICAga2V5d29yZHM6IFsgInBrIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGY1XHVkODNjXHVkZGYwIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBwYWxhdTogewogICAga2V5d29yZHM6IFsgInB3IiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGY1XHVkODNjXHVkZGZjIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBwYWxlc3Rpbmlhbl90ZXJyaXRvcmllczogewogICAga2V5d29yZHM6IFsgInBhbGVzdGluZSIsICJwYWxlc3RpbmlhbiIsICJ0ZXJyaXRvcmllcyIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRmNVx1ZDgzY1x1ZGRmOCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgcGFuYW1hOiB7CiAgICBrZXl3b3JkczogWyAicGEiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZjVcdWQ4M2NcdWRkZTYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIHBhcHVhX25ld19ndWluZWE6IHsKICAgIGtleXdvcmRzOiBbICJwYXB1YSIsICJuZXciLCAiZ3VpbmVhIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGY1XHVkODNjXHVkZGVjIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBwYXJhZ3VheTogewogICAga2V5d29yZHM6IFsgInB5IiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGY1XHVkODNjXHVkZGZlIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBwZXJ1OiB7CiAgICBrZXl3b3JkczogWyAicGUiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZjVcdWQ4M2NcdWRkZWEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIHBoaWxpcHBpbmVzOiB7CiAgICBrZXl3b3JkczogWyAicGgiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZjVcdWQ4M2NcdWRkZWQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIHBpdGNhaXJuX2lzbGFuZHM6IHsKICAgIGtleXdvcmRzOiBbICJwaXRjYWlybiIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRmNVx1ZDgzY1x1ZGRmMyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgcG9sYW5kOiB7CiAgICBrZXl3b3JkczogWyAicGwiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZjVcdWQ4M2NcdWRkZjEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIHBvcnR1Z2FsOiB7CiAgICBrZXl3b3JkczogWyAicHQiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZjVcdWQ4M2NcdWRkZjkiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIHB1ZXJ0b19yaWNvOiB7CiAgICBrZXl3b3JkczogWyAicHVlcnRvIiwgInJpY28iLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZjVcdWQ4M2NcdWRkZjciLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIHFhdGFyOiB7CiAgICBrZXl3b3JkczogWyAicWEiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZjZcdWQ4M2NcdWRkZTYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIHJldW5pb246IHsKICAgIGtleXdvcmRzOiBbICJyXHhlOXVuaW9uIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGY3XHVkODNjXHVkZGVhIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICByb21hbmlhOiB7CiAgICBrZXl3b3JkczogWyAicm8iLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZjdcdWQ4M2NcdWRkZjQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIHJ1OiB7CiAgICBrZXl3b3JkczogWyAicnVzc2lhbiIsICJmZWRlcmF0aW9uIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGY3XHVkODNjXHVkZGZhIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICByd2FuZGE6IHsKICAgIGtleXdvcmRzOiBbICJydyIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRmN1x1ZDgzY1x1ZGRmYyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgc3RfYmFydGhlbGVteTogewogICAga2V5d29yZHM6IFsgInNhaW50IiwgImJhcnRoXHhlOWxlbXkiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZTdcdWQ4M2NcdWRkZjEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIHN0X2hlbGVuYTogewogICAga2V5d29yZHM6IFsgInNhaW50IiwgImhlbGVuYSIsICJhc2NlbnNpb24iLCAidHJpc3RhbiIsICJjdW5oYSIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRmOFx1ZDgzY1x1ZGRlZCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgc3Rfa2l0dHNfbmV2aXM6IHsKICAgIGtleXdvcmRzOiBbICJzYWludCIsICJraXR0cyIsICJuZXZpcyIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRmMFx1ZDgzY1x1ZGRmMyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgc3RfbHVjaWE6IHsKICAgIGtleXdvcmRzOiBbICJzYWludCIsICJsdWNpYSIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRmMVx1ZDgzY1x1ZGRlOCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgc3RfcGllcnJlX21pcXVlbG9uOiB7CiAgICBrZXl3b3JkczogWyAic2FpbnQiLCAicGllcnJlIiwgIm1pcXVlbG9uIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGY1XHVkODNjXHVkZGYyIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBzdF92aW5jZW50X2dyZW5hZGluZXM6IHsKICAgIGtleXdvcmRzOiBbICJzYWludCIsICJ2aW5jZW50IiwgImdyZW5hZGluZXMiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZmJcdWQ4M2NcdWRkZTgiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIHNhbW9hOiB7CiAgICBrZXl3b3JkczogWyAid3MiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZmNcdWQ4M2NcdWRkZjgiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIHNhbl9tYXJpbm86IHsKICAgIGtleXdvcmRzOiBbICJzYW4iLCAibWFyaW5vIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGY4XHVkODNjXHVkZGYyIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBzYW9fdG9tZV9wcmluY2lwZTogewogICAga2V5d29yZHM6IFsgInNhbyIsICJ0b21lIiwgInByaW5jaXBlIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGY4XHVkODNjXHVkZGY5IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBzYXVkaV9hcmFiaWE6IHsKICAgIGtleXdvcmRzOiBbICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRmOFx1ZDgzY1x1ZGRlNiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgc2VuZWdhbDogewogICAga2V5d29yZHM6IFsgInNuIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGY4XHVkODNjXHVkZGYzIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBzZXJiaWE6IHsKICAgIGtleXdvcmRzOiBbICJycyIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRmN1x1ZDgzY1x1ZGRmOCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgc2V5Y2hlbGxlczogewogICAga2V5d29yZHM6IFsgInNjIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGY4XHVkODNjXHVkZGU4IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBzaWVycmFfbGVvbmU6IHsKICAgIGtleXdvcmRzOiBbICJzaWVycmEiLCAibGVvbmUiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZjhcdWQ4M2NcdWRkZjEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIHNpbmdhcG9yZTogewogICAga2V5d29yZHM6IFsgInNnIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGY4XHVkODNjXHVkZGVjIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBzaW50X21hYXJ0ZW46IHsKICAgIGtleXdvcmRzOiBbICJzaW50IiwgIm1hYXJ0ZW4iLCAiZHV0Y2giLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZjhcdWQ4M2NcdWRkZmQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIHNsb3Zha2lhOiB7CiAgICBrZXl3b3JkczogWyAic2siLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZjhcdWQ4M2NcdWRkZjAiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIHNsb3ZlbmlhOiB7CiAgICBrZXl3b3JkczogWyAic2kiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZjhcdWQ4M2NcdWRkZWUiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIHNvbG9tb25faXNsYW5kczogewogICAga2V5d29yZHM6IFsgInNvbG9tb24iLCAiaXNsYW5kcyIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRmOFx1ZDgzY1x1ZGRlNyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgc29tYWxpYTogewogICAga2V5d29yZHM6IFsgInNvIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGY4XHVkODNjXHVkZGY0IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBzb3V0aF9hZnJpY2E6IHsKICAgIGtleXdvcmRzOiBbICJzb3V0aCIsICJhZnJpY2EiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZmZcdWQ4M2NcdWRkZTYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIHNvdXRoX2dlb3JnaWFfc291dGhfc2FuZHdpY2hfaXNsYW5kczogewogICAga2V5d29yZHM6IFsgInNvdXRoIiwgImdlb3JnaWEiLCAic2FuZHdpY2giLCAiaXNsYW5kcyIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRlY1x1ZDgzY1x1ZGRmOCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAga3I6IHsKICAgIGtleXdvcmRzOiBbICJzb3V0aCIsICJrb3JlYSIsICJuYXRpb24iLCAiZmxhZyIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRmMFx1ZDgzY1x1ZGRmNyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgc291dGhfc3VkYW46IHsKICAgIGtleXdvcmRzOiBbICJzb3V0aCIsICJzZCIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRmOFx1ZDgzY1x1ZGRmOCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgZXM6IHsKICAgIGtleXdvcmRzOiBbICJzcGFpbiIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRlYVx1ZDgzY1x1ZGRmOCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgc3JpX2xhbmthOiB7CiAgICBrZXl3b3JkczogWyAic3JpIiwgImxhbmthIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGYxXHVkODNjXHVkZGYwIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBzdWRhbjogewogICAga2V5d29yZHM6IFsgInNkIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGY4XHVkODNjXHVkZGU5IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBzdXJpbmFtZTogewogICAga2V5d29yZHM6IFsgInNyIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGY4XHVkODNjXHVkZGY3IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBzd2F6aWxhbmQ6IHsKICAgIGtleXdvcmRzOiBbICJzeiIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRmOFx1ZDgzY1x1ZGRmZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgc3dlZGVuOiB7CiAgICBrZXl3b3JkczogWyAic2UiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZjhcdWQ4M2NcdWRkZWEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIHN3aXR6ZXJsYW5kOiB7CiAgICBrZXl3b3JkczogWyAiY2giLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZThcdWQ4M2NcdWRkZWQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIHN5cmlhOiB7CiAgICBrZXl3b3JkczogWyAic3lyaWFuIiwgImFyYWIiLCAicmVwdWJsaWMiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZjhcdWQ4M2NcdWRkZmUiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIHRhaXdhbjogewogICAga2V5d29yZHM6IFsgInR3IiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGY5XHVkODNjXHVkZGZjIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICB0YWppa2lzdGFuOiB7CiAgICBrZXl3b3JkczogWyAidGoiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZjlcdWQ4M2NcdWRkZWYiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIHRhbnphbmlhOiB7CiAgICBrZXl3b3JkczogWyAidGFuemFuaWEsIiwgInVuaXRlZCIsICJyZXB1YmxpYyIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRmOVx1ZDgzY1x1ZGRmZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgdGhhaWxhbmQ6IHsKICAgIGtleXdvcmRzOiBbICJ0aCIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRmOVx1ZDgzY1x1ZGRlZCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgdGltb3JfbGVzdGU6IHsKICAgIGtleXdvcmRzOiBbICJ0aW1vciIsICJsZXN0ZSIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRmOVx1ZDgzY1x1ZGRmMSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgdG9nbzogewogICAga2V5d29yZHM6IFsgInRnIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGY5XHVkODNjXHVkZGVjIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICB0b2tlbGF1OiB7CiAgICBrZXl3b3JkczogWyAidGsiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZjlcdWQ4M2NcdWRkZjAiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIHRvbmdhOiB7CiAgICBrZXl3b3JkczogWyAidG8iLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZjlcdWQ4M2NcdWRkZjQiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIHRyaW5pZGFkX3RvYmFnbzogewogICAga2V5d29yZHM6IFsgInRyaW5pZGFkIiwgInRvYmFnbyIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRmOVx1ZDgzY1x1ZGRmOSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgdHVuaXNpYTogewogICAga2V5d29yZHM6IFsgInRuIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGY5XHVkODNjXHVkZGYzIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICB0cjogewogICAga2V5d29yZHM6IFsgInR1cmtleSIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRmOVx1ZDgzY1x1ZGRmNyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgdHVya21lbmlzdGFuOiB7CiAgICBrZXl3b3JkczogWyAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZjlcdWQ4M2NcdWRkZjIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIHR1cmtzX2NhaWNvc19pc2xhbmRzOiB7CiAgICBrZXl3b3JkczogWyAidHVya3MiLCAiY2FpY29zIiwgImlzbGFuZHMiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZjlcdWQ4M2NcdWRkZTgiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIHR1dmFsdTogewogICAga2V5d29yZHM6IFsgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGY5XHVkODNjXHVkZGZiIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICB1Z2FuZGE6IHsKICAgIGtleXdvcmRzOiBbICJ1ZyIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRmYVx1ZDgzY1x1ZGRlYyIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgdWtyYWluZTogewogICAga2V5d29yZHM6IFsgInVhIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGZhXHVkODNjXHVkZGU2IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICB1bml0ZWRfYXJhYl9lbWlyYXRlczogewogICAga2V5d29yZHM6IFsgInVuaXRlZCIsICJhcmFiIiwgImVtaXJhdGVzIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGU2XHVkODNjXHVkZGVhIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICB1azogewogICAga2V5d29yZHM6IFsgInVuaXRlZCIsICJraW5nZG9tIiwgImdyZWF0IiwgImJyaXRhaW4iLCAibm9ydGhlcm4iLCAiaXJlbGFuZCIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIsICJicml0aXNoIiwgIlVLIiwgImVuZ2xpc2giLCAiZW5nbGFuZCIsICJ1bmlvbiBqYWNrIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGVjXHVkODNjXHVkZGU3IiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBlbmdsYW5kOiB7CiAgICBrZXl3b3JkczogWyAiZmxhZyIsICJlbmdsaXNoIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZmY0XHVkYjQwXHVkYzY3XHVkYjQwXHVkYzYyXHVkYjQwXHVkYzY1XHVkYjQwXHVkYzZlXHVkYjQwXHVkYzY3XHVkYjQwXHVkYzdmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICBzY290bGFuZDogewogICAga2V5d29yZHM6IFsgImZsYWciLCAic2NvdHRpc2giIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRmZjRcdWRiNDBcdWRjNjdcdWRiNDBcdWRjNjJcdWRiNDBcdWRjNzNcdWRiNDBcdWRjNjNcdWRiNDBcdWRjNzRcdWRiNDBcdWRjN2YiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIHdhbGVzOiB7CiAgICBrZXl3b3JkczogWyAiZmxhZyIsICJ3ZWxzaCIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGZmNFx1ZGI0MFx1ZGM2N1x1ZGI0MFx1ZGM2Mlx1ZGI0MFx1ZGM3N1x1ZGI0MFx1ZGM2Y1x1ZGI0MFx1ZGM3M1x1ZGI0MFx1ZGM3ZiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgdXM6IHsKICAgIGtleXdvcmRzOiBbICJ1bml0ZWQiLCAic3RhdGVzIiwgImFtZXJpY2EiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZmFcdWQ4M2NcdWRkZjgiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIHVzX3Zpcmdpbl9pc2xhbmRzOiB7CiAgICBrZXl3b3JkczogWyAidmlyZ2luIiwgImlzbGFuZHMiLCAidXMiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZmJcdWQ4M2NcdWRkZWUiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIHVydWd1YXk6IHsKICAgIGtleXdvcmRzOiBbICJ1eSIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRmYVx1ZDgzY1x1ZGRmZSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgdXpiZWtpc3RhbjogewogICAga2V5d29yZHM6IFsgInV6IiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGZhXHVkODNjXHVkZGZmIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICB2YW51YXR1OiB7CiAgICBrZXl3b3JkczogWyAidnUiLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZmJcdWQ4M2NcdWRkZmEiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIHZhdGljYW5fY2l0eTogewogICAga2V5d29yZHM6IFsgInZhdGljYW4iLCAiY2l0eSIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRmYlx1ZDgzY1x1ZGRlNiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgdmVuZXp1ZWxhOiB7CiAgICBrZXl3b3JkczogWyAidmUiLCAiYm9saXZhcmlhbiIsICJyZXB1YmxpYyIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRmYlx1ZDgzY1x1ZGRlYSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgdmlldG5hbTogewogICAga2V5d29yZHM6IFsgInZpZXQiLCAibmFtIiwgImZsYWciLCAibmF0aW9uIiwgImNvdW50cnkiLCAiYmFubmVyIiBdLAogICAgImNoYXIiOiAiXHVkODNjXHVkZGZiXHVkODNjXHVkZGYzIiwKICAgIGZpdHpwYXRyaWNrX3NjYWxlOiBmYWxzZSwKICAgIGNhdGVnb3J5OiAiZmxhZ3MiCiAgfSwKICB3YWxsaXNfZnV0dW5hOiB7CiAgICBrZXl3b3JkczogWyAid2FsbGlzIiwgImZ1dHVuYSIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRmY1x1ZDgzY1x1ZGRlYiIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgd2VzdGVybl9zYWhhcmE6IHsKICAgIGtleXdvcmRzOiBbICJ3ZXN0ZXJuIiwgInNhaGFyYSIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRlYVx1ZDgzY1x1ZGRlZCIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgeWVtZW46IHsKICAgIGtleXdvcmRzOiBbICJ5ZSIsICJmbGFnIiwgIm5hdGlvbiIsICJjb3VudHJ5IiwgImJhbm5lciIgXSwKICAgICJjaGFyIjogIlx1ZDgzY1x1ZGRmZVx1ZDgzY1x1ZGRlYSIsCiAgICBmaXR6cGF0cmlja19zY2FsZTogZmFsc2UsCiAgICBjYXRlZ29yeTogImZsYWdzIgogIH0sCiAgemFtYmlhOiB7CiAgICBrZXl3b3JkczogWyAiem0iLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZmZcdWQ4M2NcdWRkZjIiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9LAogIHppbWJhYndlOiB7CiAgICBrZXl3b3JkczogWyAienciLCAiZmxhZyIsICJuYXRpb24iLCAiY291bnRyeSIsICJiYW5uZXIiIF0sCiAgICAiY2hhciI6ICJcdWQ4M2NcdWRkZmZcdWQ4M2NcdWRkZmMiLAogICAgZml0enBhdHJpY2tfc2NhbGU6IGZhbHNlLAogICAgY2F0ZWdvcnk6ICJmbGFncyIKICB9Cn0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/emoticons/js/emojis.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gTk9URTogU291cmNlOiBucG0gcGFja2FnZTogZW1vamlsaWIsIGZpbGU6ZW1vamlzLmpzb24Kd2luZG93LnRpbnltY2UuUmVzb3VyY2UuYWRkKCJ0aW55bWNlLnBsdWdpbnMuZW1vdGljb25zIix7Z3Jpbm5pbmc6e2tleXdvcmRzOlsiZmFjZSIsInNtaWxlIiwiaGFwcHkiLCJqb3kiLCI6RCIsImdyaW4iXSwiY2hhciI6Ilx1ZDgzZFx1ZGUwMCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LGdyaW1hY2luZzp7a2V5d29yZHM6WyJmYWNlIiwiZ3JpbWFjZSIsInRlZXRoIl0sImNoYXIiOiJcdWQ4M2RcdWRlMmMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxncmluOntrZXl3b3JkczpbImZhY2UiLCJoYXBweSIsInNtaWxlIiwiam95Iiwia2F3YWlpIl0sImNoYXIiOiJcdWQ4M2RcdWRlMDEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxqb3k6e2tleXdvcmRzOlsiZmFjZSIsImNyeSIsInRlYXJzIiwid2VlcCIsImhhcHB5IiwiaGFwcHl0ZWFycyIsImhhaGEiXSwiY2hhciI6Ilx1ZDgzZFx1ZGUwMiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LHJvZmw6e2tleXdvcmRzOlsiZmFjZSIsInJvbGxpbmciLCJmbG9vciIsImxhdWdoaW5nIiwibG9sIiwiaGFoYSJdLCJjaGFyIjoiXHVkODNlXHVkZDIzIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sc21pbGV5OntrZXl3b3JkczpbImZhY2UiLCJoYXBweSIsImpveSIsImhhaGEiLCI6RCIsIjopIiwic21pbGUiLCJmdW5ueSJdLCJjaGFyIjoiXHVkODNkXHVkZTAzIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sc21pbGU6e2tleXdvcmRzOlsiZmFjZSIsImhhcHB5Iiwiam95IiwiZnVubnkiLCJoYWhhIiwibGF1Z2giLCJsaWtlIiwiOkQiLCI6KSJdLCJjaGFyIjoiXHVkODNkXHVkZTA0IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sc3dlYXRfc21pbGU6e2tleXdvcmRzOlsiZmFjZSIsImhvdCIsImhhcHB5IiwibGF1Z2giLCJzd2VhdCIsInNtaWxlIiwicmVsaWVmIl0sImNoYXIiOiJcdWQ4M2RcdWRlMDUiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxsYXVnaGluZzp7a2V5d29yZHM6WyJoYXBweSIsImpveSIsImxvbCIsInNhdGlzZmllZCIsImhhaGEiLCJmYWNlIiwiZ2xhZCIsIlhEIiwibGF1Z2giXSwiY2hhciI6Ilx1ZDgzZFx1ZGUwNiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LGlubm9jZW50OntrZXl3b3JkczpbImZhY2UiLCJhbmdlbCIsImhlYXZlbiIsImhhbG8iXSwiY2hhciI6Ilx1ZDgzZFx1ZGUwNyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LHdpbms6e2tleXdvcmRzOlsiZmFjZSIsImhhcHB5IiwibWlzY2hpZXZvdXMiLCJzZWNyZXQiLCI7KSIsInNtaWxlIiwiZXllIl0sImNoYXIiOiJcdWQ4M2RcdWRlMDkiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxibHVzaDp7a2V5d29yZHM6WyJmYWNlIiwic21pbGUiLCJoYXBweSIsImZsdXNoZWQiLCJjcnVzaCIsImVtYmFycmFzc2VkIiwic2h5Iiwiam95Il0sImNoYXIiOiJcdWQ4M2RcdWRlMGEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxzbGlnaHRseV9zbWlsaW5nX2ZhY2U6e2tleXdvcmRzOlsiZmFjZSIsInNtaWxlIl0sImNoYXIiOiJcdWQ4M2RcdWRlNDIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSx1cHNpZGVfZG93bl9mYWNlOntrZXl3b3JkczpbImZhY2UiLCJmbGlwcGVkIiwic2lsbHkiLCJzbWlsZSJdLCJjaGFyIjoiXHVkODNkXHVkZTQzIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0scmVsYXhlZDp7a2V5d29yZHM6WyJmYWNlIiwiYmx1c2giLCJtYXNzYWdlIiwiaGFwcGluZXNzIl0sImNoYXIiOiJcdTI2M2FcdWZlMGYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSx5dW06e2tleXdvcmRzOlsiaGFwcHkiLCJqb3kiLCJ0b25ndWUiLCJzbWlsZSIsImZhY2UiLCJzaWxseSIsInl1bW15Iiwibm9tIiwiZGVsaWNpb3VzIiwic2F2b3VyaW5nIl0sImNoYXIiOiJcdWQ4M2RcdWRlMGIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxyZWxpZXZlZDp7a2V5d29yZHM6WyJmYWNlIiwicmVsYXhlZCIsInBoZXciLCJtYXNzYWdlIiwiaGFwcGluZXNzIl0sImNoYXIiOiJcdWQ4M2RcdWRlMGMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxoZWFydF9leWVzOntrZXl3b3JkczpbImZhY2UiLCJsb3ZlIiwibGlrZSIsImFmZmVjdGlvbiIsInZhbGVudGluZXMiLCJpbmZhdHVhdGlvbiIsImNydXNoIiwiaGVhcnQiXSwiY2hhciI6Ilx1ZDgzZFx1ZGUwZCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LGtpc3NpbmdfaGVhcnQ6e2tleXdvcmRzOlsiZmFjZSIsImxvdmUiLCJsaWtlIiwiYWZmZWN0aW9uIiwidmFsZW50aW5lcyIsImluZmF0dWF0aW9uIiwia2lzcyJdLCJjaGFyIjoiXHVkODNkXHVkZTE4IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sa2lzc2luZzp7a2V5d29yZHM6WyJsb3ZlIiwibGlrZSIsImZhY2UiLCIzIiwidmFsZW50aW5lcyIsImluZmF0dWF0aW9uIiwia2lzcyJdLCJjaGFyIjoiXHVkODNkXHVkZTE3IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sa2lzc2luZ19zbWlsaW5nX2V5ZXM6e2tleXdvcmRzOlsiZmFjZSIsImFmZmVjdGlvbiIsInZhbGVudGluZXMiLCJpbmZhdHVhdGlvbiIsImtpc3MiXSwiY2hhciI6Ilx1ZDgzZFx1ZGUxOSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LGtpc3NpbmdfY2xvc2VkX2V5ZXM6e2tleXdvcmRzOlsiZmFjZSIsImxvdmUiLCJsaWtlIiwiYWZmZWN0aW9uIiwidmFsZW50aW5lcyIsImluZmF0dWF0aW9uIiwia2lzcyJdLCJjaGFyIjoiXHVkODNkXHVkZTFhIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sc3R1Y2tfb3V0X3Rvbmd1ZV93aW5raW5nX2V5ZTp7a2V5d29yZHM6WyJmYWNlIiwicHJhbmsiLCJjaGlsZGlzaCIsInBsYXlmdWwiLCJtaXNjaGlldm91cyIsInNtaWxlIiwid2luayIsInRvbmd1ZSJdLCJjaGFyIjoiXHVkODNkXHVkZTFjIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0semFueTp7a2V5d29yZHM6WyJmYWNlIiwiZ29vZnkiLCJjcmF6eSJdLCJjaGFyIjoiXHVkODNlXHVkZDJhIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0scmFpc2VkX2V5ZWJyb3c6e2tleXdvcmRzOlsiZmFjZSIsImRpc3RydXN0Iiwic2NlcHRpY2lzbSIsImRpc2FwcHJvdmFsIiwiZGlzYmVsaWVmIiwic3VycHJpc2UiXSwiY2hhciI6Ilx1ZDgzZVx1ZGQyOCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LG1vbm9jbGU6e2tleXdvcmRzOlsiZmFjZSIsInN0dWZmeSIsIndlYWx0aHkiXSwiY2hhciI6Ilx1ZDgzZVx1ZGRkMCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LHN0dWNrX291dF90b25ndWVfY2xvc2VkX2V5ZXM6e2tleXdvcmRzOlsiZmFjZSIsInByYW5rIiwicGxheWZ1bCIsIm1pc2NoaWV2b3VzIiwic21pbGUiLCJ0b25ndWUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGUxZCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LHN0dWNrX291dF90b25ndWU6e2tleXdvcmRzOlsiZmFjZSIsInByYW5rIiwiY2hpbGRpc2giLCJwbGF5ZnVsIiwibWlzY2hpZXZvdXMiLCJzbWlsZSIsInRvbmd1ZSJdLCJjaGFyIjoiXHVkODNkXHVkZTFiIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sbW9uZXlfbW91dGhfZmFjZTp7a2V5d29yZHM6WyJmYWNlIiwicmljaCIsImRvbGxhciIsIm1vbmV5Il0sImNoYXIiOiJcdWQ4M2VcdWRkMTEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxuZXJkX2ZhY2U6e2tleXdvcmRzOlsiZmFjZSIsIm5lcmR5IiwiZ2VlayIsImRvcmsiXSwiY2hhciI6Ilx1ZDgzZVx1ZGQxMyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LHN1bmdsYXNzZXM6e2tleXdvcmRzOlsiZmFjZSIsImNvb2wiLCJzbWlsZSIsInN1bW1lciIsImJlYWNoIiwic3VuZ2xhc3MiXSwiY2hhciI6Ilx1ZDgzZFx1ZGUwZSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LHN0YXJfc3RydWNrOntrZXl3b3JkczpbImZhY2UiLCJzbWlsZSIsInN0YXJyeSIsImV5ZXMiLCJncmlubmluZyJdLCJjaGFyIjoiXHVkODNlXHVkZDI5IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sY2xvd25fZmFjZTp7a2V5d29yZHM6WyJmYWNlIl0sImNoYXIiOiJcdWQ4M2VcdWRkMjEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxjb3dib3lfaGF0X2ZhY2U6e2tleXdvcmRzOlsiZmFjZSIsImNvd2dpcmwiLCJoYXQiXSwiY2hhciI6Ilx1ZDgzZVx1ZGQyMCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LGh1Z3M6e2tleXdvcmRzOlsiZmFjZSIsInNtaWxlIiwiaHVnIl0sImNoYXIiOiJcdWQ4M2VcdWRkMTciLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxzbWlyazp7a2V5d29yZHM6WyJmYWNlIiwic21pbGUiLCJtZWFuIiwicHJhbmsiLCJzbXVnIiwic2FyY2FzbSJdLCJjaGFyIjoiXHVkODNkXHVkZTBmIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sbm9fbW91dGg6e2tleXdvcmRzOlsiZmFjZSIsImhlbGxva2l0dHkiXSwiY2hhciI6Ilx1ZDgzZFx1ZGUzNiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LG5ldXRyYWxfZmFjZTp7a2V5d29yZHM6WyJpbmRpZmZlcmVuY2UiLCJtZWgiLCI6fCIsIm5ldXRyYWwiXSwiY2hhciI6Ilx1ZDgzZFx1ZGUxMCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LGV4cHJlc3Npb25sZXNzOntrZXl3b3JkczpbImZhY2UiLCJpbmRpZmZlcmVudCIsIi1fLSIsIm1laCIsImRlYWRwYW4iXSwiY2hhciI6Ilx1ZDgzZFx1ZGUxMSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LHVuYW11c2VkOntrZXl3b3JkczpbImluZGlmZmVyZW5jZSIsImJvcmVkIiwic3RyYWlnaHQgZmFjZSIsInNlcmlvdXMiLCJzYXJjYXNtIiwidW5pbXByZXNzZWQiLCJza2VwdGljYWwiLCJkdWJpb3VzIiwic2lkZV9leWUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGUxMiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LHJvbGxfZXllczp7a2V5d29yZHM6WyJmYWNlIiwiZXllcm9sbCIsImZydXN0cmF0ZWQiXSwiY2hhciI6Ilx1ZDgzZFx1ZGU0NCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LHRoaW5raW5nOntrZXl3b3JkczpbImZhY2UiLCJobW1tIiwidGhpbmsiLCJjb25zaWRlciJdLCJjaGFyIjoiXHVkODNlXHVkZDE0IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sbHlpbmdfZmFjZTp7a2V5d29yZHM6WyJmYWNlIiwibGllIiwicGlub2NjaGlvIl0sImNoYXIiOiJcdWQ4M2VcdWRkMjUiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxoYW5kX292ZXJfbW91dGg6e2tleXdvcmRzOlsiZmFjZSIsIndob29wcyIsInNob2NrIiwic3VycHJpc2UiXSwiY2hhciI6Ilx1ZDgzZVx1ZGQyZCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LHNodXNoaW5nOntrZXl3b3JkczpbImZhY2UiLCJxdWlldCIsInNoaGgiXSwiY2hhciI6Ilx1ZDgzZVx1ZGQyYiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LHN5bWJvbHNfb3Zlcl9tb3V0aDp7a2V5d29yZHM6WyJmYWNlIiwic3dlYXJpbmciLCJjdXJzaW5nIiwiY3Vzc2luZyIsInByb2Zhbml0eSIsImV4cGxldGl2ZSJdLCJjaGFyIjoiXHVkODNlXHVkZDJjIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sZXhwbG9kaW5nX2hlYWQ6e2tleXdvcmRzOlsiZmFjZSIsInNob2NrZWQiLCJtaW5kIiwiYmxvd24iXSwiY2hhciI6Ilx1ZDgzZVx1ZGQyZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LGZsdXNoZWQ6e2tleXdvcmRzOlsiZmFjZSIsImJsdXNoIiwic2h5IiwiZmxhdHRlcmVkIl0sImNoYXIiOiJcdWQ4M2RcdWRlMzMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxkaXNhcHBvaW50ZWQ6e2tleXdvcmRzOlsiZmFjZSIsInNhZCIsInVwc2V0IiwiZGVwcmVzc2VkIiwiOigiXSwiY2hhciI6Ilx1ZDgzZFx1ZGUxZSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LHdvcnJpZWQ6e2tleXdvcmRzOlsiZmFjZSIsImNvbmNlcm4iLCJuZXJ2b3VzIiwiOigiXSwiY2hhciI6Ilx1ZDgzZFx1ZGUxZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LGFuZ3J5OntrZXl3b3JkczpbIm1hZCIsImZhY2UiLCJhbm5veWVkIiwiZnJ1c3RyYXRlZCJdLCJjaGFyIjoiXHVkODNkXHVkZTIwIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0scmFnZTp7a2V5d29yZHM6WyJhbmdyeSIsIm1hZCIsImhhdGUiLCJkZXNwaXNlIl0sImNoYXIiOiJcdWQ4M2RcdWRlMjEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxwZW5zaXZlOntrZXl3b3JkczpbImZhY2UiLCJzYWQiLCJkZXByZXNzZWQiLCJ1cHNldCJdLCJjaGFyIjoiXHVkODNkXHVkZTE0IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sY29uZnVzZWQ6e2tleXdvcmRzOlsiZmFjZSIsImluZGlmZmVyZW5jZSIsImh1aCIsIndlaXJkIiwiaG1tbSIsIjovIl0sImNoYXIiOiJcdWQ4M2RcdWRlMTUiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxzbGlnaHRseV9mcm93bmluZ19mYWNlOntrZXl3b3JkczpbImZhY2UiLCJmcm93bmluZyIsImRpc2FwcG9pbnRlZCIsInNhZCIsInVwc2V0Il0sImNoYXIiOiJcdWQ4M2RcdWRlNDEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxmcm93bmluZ19mYWNlOntrZXl3b3JkczpbImZhY2UiLCJzYWQiLCJ1cHNldCIsImZyb3duIl0sImNoYXIiOiJcdTI2MzkiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxwZXJzZXZlcmU6e2tleXdvcmRzOlsiZmFjZSIsInNpY2siLCJubyIsInVwc2V0Iiwib29wcyJdLCJjaGFyIjoiXHVkODNkXHVkZTIzIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sY29uZm91bmRlZDp7a2V5d29yZHM6WyJmYWNlIiwiY29uZnVzZWQiLCJzaWNrIiwidW53ZWxsIiwib29wcyIsIjpTIl0sImNoYXIiOiJcdWQ4M2RcdWRlMTYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSx0aXJlZF9mYWNlOntrZXl3b3JkczpbInNpY2siLCJ3aGluZSIsInVwc2V0IiwiZnJ1c3RyYXRlZCJdLCJjaGFyIjoiXHVkODNkXHVkZTJiIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sd2Vhcnk6e2tleXdvcmRzOlsiZmFjZSIsInRpcmVkIiwic2xlZXB5Iiwic2FkIiwiZnJ1c3RyYXRlZCIsInVwc2V0Il0sImNoYXIiOiJcdWQ4M2RcdWRlMjkiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSx0cml1bXBoOntrZXl3b3JkczpbImZhY2UiLCJnYXMiLCJwaGV3IiwicHJvdWQiLCJwcmlkZSJdLCJjaGFyIjoiXHVkODNkXHVkZTI0IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sb3Blbl9tb3V0aDp7a2V5d29yZHM6WyJmYWNlIiwic3VycHJpc2UiLCJpbXByZXNzZWQiLCJ3b3ciLCJ3aG9hIiwiOk8iXSwiY2hhciI6Ilx1ZDgzZFx1ZGUyZSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LHNjcmVhbTp7a2V5d29yZHM6WyJmYWNlIiwibXVuY2giLCJzY2FyZWQiLCJvbWciXSwiY2hhciI6Ilx1ZDgzZFx1ZGUzMSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LGZlYXJmdWw6e2tleXdvcmRzOlsiZmFjZSIsInNjYXJlZCIsInRlcnJpZmllZCIsIm5lcnZvdXMiLCJvb3BzIiwiaHVoIl0sImNoYXIiOiJcdWQ4M2RcdWRlMjgiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxjb2xkX3N3ZWF0OntrZXl3b3JkczpbImZhY2UiLCJuZXJ2b3VzIiwic3dlYXQiXSwiY2hhciI6Ilx1ZDgzZFx1ZGUzMCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LGh1c2hlZDp7a2V5d29yZHM6WyJmYWNlIiwid29vIiwic2hoIl0sImNoYXIiOiJcdWQ4M2RcdWRlMmYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxmcm93bmluZzp7a2V5d29yZHM6WyJmYWNlIiwiYXciLCJ3aGF0Il0sImNoYXIiOiJcdWQ4M2RcdWRlMjYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxhbmd1aXNoZWQ6e2tleXdvcmRzOlsiZmFjZSIsInN0dW5uZWQiLCJuZXJ2b3VzIl0sImNoYXIiOiJcdWQ4M2RcdWRlMjciLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxjcnk6e2tleXdvcmRzOlsiZmFjZSIsInRlYXJzIiwic2FkIiwiZGVwcmVzc2VkIiwidXBzZXQiLCI6JygiXSwiY2hhciI6Ilx1ZDgzZFx1ZGUyMiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LGRpc2FwcG9pbnRlZF9yZWxpZXZlZDp7a2V5d29yZHM6WyJmYWNlIiwicGhldyIsInN3ZWF0IiwibmVydm91cyJdLCJjaGFyIjoiXHVkODNkXHVkZTI1IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sZHJvb2xpbmdfZmFjZTp7a2V5d29yZHM6WyJmYWNlIl0sImNoYXIiOiJcdWQ4M2VcdWRkMjQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxzbGVlcHk6e2tleXdvcmRzOlsiZmFjZSIsInRpcmVkIiwicmVzdCIsIm5hcCJdLCJjaGFyIjoiXHVkODNkXHVkZTJhIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sc3dlYXQ6e2tleXdvcmRzOlsiZmFjZSIsImhvdCIsInNhZCIsInRpcmVkIiwiZXhlcmNpc2UiXSwiY2hhciI6Ilx1ZDgzZFx1ZGUxMyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LHNvYjp7a2V5d29yZHM6WyJmYWNlIiwiY3J5IiwidGVhcnMiLCJzYWQiLCJ1cHNldCIsImRlcHJlc3NlZCJdLCJjaGFyIjoiXHVkODNkXHVkZTJkIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sZGl6enlfZmFjZTp7a2V5d29yZHM6WyJzcGVudCIsInVuY29uc2Npb3VzIiwieG94IiwiZGl6enkiXSwiY2hhciI6Ilx1ZDgzZFx1ZGUzNSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LGFzdG9uaXNoZWQ6e2tleXdvcmRzOlsiZmFjZSIsInhveCIsInN1cnByaXNlZCIsInBvaXNvbmVkIl0sImNoYXIiOiJcdWQ4M2RcdWRlMzIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSx6aXBwZXJfbW91dGhfZmFjZTp7a2V5d29yZHM6WyJmYWNlIiwic2VhbGVkIiwiemlwcGVyIiwic2VjcmV0Il0sImNoYXIiOiJcdWQ4M2VcdWRkMTAiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxuYXVzZWF0ZWRfZmFjZTp7a2V5d29yZHM6WyJmYWNlIiwidm9taXQiLCJncm9zcyIsImdyZWVuIiwic2ljayIsInRocm93IHVwIiwiaWxsIl0sImNoYXIiOiJcdWQ4M2VcdWRkMjIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxzbmVlemluZ19mYWNlOntrZXl3b3JkczpbImZhY2UiLCJnZXN1bmRoZWl0Iiwic25lZXplIiwic2ljayIsImFsbGVyZ3kiXSwiY2hhciI6Ilx1ZDgzZVx1ZGQyNyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LHZvbWl0aW5nOntrZXl3b3JkczpbImZhY2UiLCJzaWNrIl0sImNoYXIiOiJcdWQ4M2VcdWRkMmUiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxtYXNrOntrZXl3b3JkczpbImZhY2UiLCJzaWNrIiwiaWxsIiwiZGlzZWFzZSJdLCJjaGFyIjoiXHVkODNkXHVkZTM3IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sZmFjZV93aXRoX3RoZXJtb21ldGVyOntrZXl3b3JkczpbInNpY2siLCJ0ZW1wZXJhdHVyZSIsInRoZXJtb21ldGVyIiwiY29sZCIsImZldmVyIl0sImNoYXIiOiJcdWQ4M2VcdWRkMTIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxmYWNlX3dpdGhfaGVhZF9iYW5kYWdlOntrZXl3b3JkczpbImluanVyZWQiLCJjbHVtc3kiLCJiYW5kYWdlIiwiaHVydCJdLCJjaGFyIjoiXHVkODNlXHVkZDE1IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sc2xlZXBpbmc6e2tleXdvcmRzOlsiZmFjZSIsInRpcmVkIiwic2xlZXB5IiwibmlnaHQiLCJ6enoiXSwiY2hhciI6Ilx1ZDgzZFx1ZGUzNCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LHp6ejp7a2V5d29yZHM6WyJzbGVlcHkiLCJ0aXJlZCIsImRyZWFtIl0sImNoYXIiOiJcdWQ4M2RcdWRjYTQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxwb29wOntrZXl3b3JkczpbImhhbmtleSIsInNoaXRmYWNlIiwiZmFpbCIsInR1cmQiLCJzaGl0Il0sImNoYXIiOiJcdWQ4M2RcdWRjYTkiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxzbWlsaW5nX2ltcDp7a2V5d29yZHM6WyJkZXZpbCIsImhvcm5zIl0sImNoYXIiOiJcdWQ4M2RcdWRlMDgiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxpbXA6e2tleXdvcmRzOlsiZGV2aWwiLCJhbmdyeSIsImhvcm5zIl0sImNoYXIiOiJcdWQ4M2RcdWRjN2YiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxqYXBhbmVzZV9vZ3JlOntrZXl3b3JkczpbIm1vbnN0ZXIiLCJyZWQiLCJtYXNrIiwiaGFsbG93ZWVuIiwic2NhcnkiLCJjcmVlcHkiLCJkZXZpbCIsImRlbW9uIiwiamFwYW5lc2UiLCJvZ3JlIl0sImNoYXIiOiJcdWQ4M2RcdWRjNzkiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxqYXBhbmVzZV9nb2JsaW46e2tleXdvcmRzOlsicmVkIiwiZXZpbCIsIm1hc2siLCJtb25zdGVyIiwic2NhcnkiLCJjcmVlcHkiLCJqYXBhbmVzZSIsImdvYmxpbiJdLCJjaGFyIjoiXHVkODNkXHVkYzdhIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sc2t1bGw6e2tleXdvcmRzOlsiZGVhZCIsInNrZWxldG9uIiwiY3JlZXB5IiwiZGVhdGgiXSwiY2hhciI6Ilx1ZDgzZFx1ZGM4MCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LGdob3N0OntrZXl3b3JkczpbImhhbGxvd2VlbiIsInNwb29reSIsInNjYXJ5Il0sImNoYXIiOiJcdWQ4M2RcdWRjN2IiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxhbGllbjp7a2V5d29yZHM6WyJVRk8iLCJwYXVsIiwid2VpcmQiLCJvdXRlcl9zcGFjZSJdLCJjaGFyIjoiXHVkODNkXHVkYzdkIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0scm9ib3Q6e2tleXdvcmRzOlsiY29tcHV0ZXIiLCJtYWNoaW5lIiwiYm90Il0sImNoYXIiOiJcdWQ4M2VcdWRkMTYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxzbWlsZXlfY2F0OntrZXl3b3JkczpbImFuaW1hbCIsImNhdHMiLCJoYXBweSIsInNtaWxlIl0sImNoYXIiOiJcdWQ4M2RcdWRlM2EiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxzbWlsZV9jYXQ6e2tleXdvcmRzOlsiYW5pbWFsIiwiY2F0cyIsInNtaWxlIl0sImNoYXIiOiJcdWQ4M2RcdWRlMzgiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxqb3lfY2F0OntrZXl3b3JkczpbImFuaW1hbCIsImNhdHMiLCJoYWhhIiwiaGFwcHkiLCJ0ZWFycyJdLCJjaGFyIjoiXHVkODNkXHVkZTM5IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0saGVhcnRfZXllc19jYXQ6e2tleXdvcmRzOlsiYW5pbWFsIiwibG92ZSIsImxpa2UiLCJhZmZlY3Rpb24iLCJjYXRzIiwidmFsZW50aW5lcyIsImhlYXJ0Il0sImNoYXIiOiJcdWQ4M2RcdWRlM2IiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxzbWlya19jYXQ6e2tleXdvcmRzOlsiYW5pbWFsIiwiY2F0cyIsInNtaXJrIl0sImNoYXIiOiJcdWQ4M2RcdWRlM2MiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxraXNzaW5nX2NhdDp7a2V5d29yZHM6WyJhbmltYWwiLCJjYXRzIiwia2lzcyJdLCJjaGFyIjoiXHVkODNkXHVkZTNkIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sc2NyZWFtX2NhdDp7a2V5d29yZHM6WyJhbmltYWwiLCJjYXRzIiwibXVuY2giLCJzY2FyZWQiLCJzY3JlYW0iXSwiY2hhciI6Ilx1ZDgzZFx1ZGU0MCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LGNyeWluZ19jYXRfZmFjZTp7a2V5d29yZHM6WyJhbmltYWwiLCJ0ZWFycyIsIndlZXAiLCJzYWQiLCJjYXRzIiwidXBzZXQiLCJjcnkiXSwiY2hhciI6Ilx1ZDgzZFx1ZGUzZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LHBvdXRpbmdfY2F0OntrZXl3b3JkczpbImFuaW1hbCIsImNhdHMiXSwiY2hhciI6Ilx1ZDgzZFx1ZGUzZSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LHBhbG1zX3VwOntrZXl3b3JkczpbImhhbmRzIiwiZ2VzdHVyZSIsImN1cHBlZCIsInByYXllciJdLCJjaGFyIjoiXHVkODNlXHVkZDMyIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0scmFpc2VkX2hhbmRzOntrZXl3b3JkczpbImdlc3R1cmUiLCJob29yYXkiLCJ5ZWEiLCJjZWxlYnJhdGlvbiIsImhhbmRzIl0sImNoYXIiOiJcdWQ4M2RcdWRlNGMiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSxjbGFwOntrZXl3b3JkczpbImhhbmRzIiwicHJhaXNlIiwiYXBwbGF1c2UiLCJjb25ncmF0cyIsInlheSJdLCJjaGFyIjoiXHVkODNkXHVkYzRmIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0sd2F2ZTp7a2V5d29yZHM6WyJoYW5kcyIsImdlc3R1cmUiLCJnb29kYnllIiwic29sb25nIiwiZmFyZXdlbGwiLCJoZWxsbyIsImhpIiwicGFsbSJdLCJjaGFyIjoiXHVkODNkXHVkYzRiIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0sY2FsbF9tZV9oYW5kOntrZXl3b3JkczpbImhhbmRzIiwiZ2VzdHVyZSJdLCJjaGFyIjoiXHVkODNlXHVkZDE5IixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0sIisxIjp7a2V5d29yZHM6WyJ0aHVtYnN1cCIsInllcyIsImF3ZXNvbWUiLCJnb29kIiwiYWdyZWUiLCJhY2NlcHQiLCJjb29sIiwiaGFuZCIsImxpa2UiXSwiY2hhciI6Ilx1ZDgzZFx1ZGM0ZCIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6InBlb3BsZSJ9LCItMSI6e2tleXdvcmRzOlsidGh1bWJzZG93biIsIm5vIiwiZGlzbGlrZSIsImhhbmQiXSwiY2hhciI6Ilx1ZDgzZFx1ZGM0ZSIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6InBlb3BsZSJ9LGZhY2VwdW5jaDp7a2V5d29yZHM6WyJhbmdyeSIsInZpb2xlbmNlIiwiZmlzdCIsImhpdCIsImF0dGFjayIsImhhbmQiXSwiY2hhciI6Ilx1ZDgzZFx1ZGM0YSIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6InBlb3BsZSJ9LGZpc3Q6e2tleXdvcmRzOlsiZmluZ2VycyIsImhhbmQiLCJncmFzcCJdLCJjaGFyIjoiXHUyNzBhIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0sZmlzdF9sZWZ0OntrZXl3b3JkczpbImhhbmQiLCJmaXN0YnVtcCJdLCJjaGFyIjoiXHVkODNlXHVkZDFiIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0sZmlzdF9yaWdodDp7a2V5d29yZHM6WyJoYW5kIiwiZmlzdGJ1bXAiXSwiY2hhciI6Ilx1ZDgzZVx1ZGQxYyIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6InBlb3BsZSJ9LHY6e2tleXdvcmRzOlsiZmluZ2VycyIsIm9oeWVhaCIsImhhbmQiLCJwZWFjZSIsInZpY3RvcnkiLCJ0d28iXSwiY2hhciI6Ilx1MjcwYyIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6InBlb3BsZSJ9LG9rX2hhbmQ6e2tleXdvcmRzOlsiZmluZ2VycyIsImxpbWJzIiwicGVyZmVjdCIsIm9rIiwib2theSJdLCJjaGFyIjoiXHVkODNkXHVkYzRjIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0scmFpc2VkX2hhbmQ6e2tleXdvcmRzOlsiZmluZ2VycyIsInN0b3AiLCJoaWdoZml2ZSIsInBhbG0iLCJiYW4iXSwiY2hhciI6Ilx1MjcwYiIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6InBlb3BsZSJ9LHJhaXNlZF9iYWNrX29mX2hhbmQ6e2tleXdvcmRzOlsiZmluZ2VycyIsInJhaXNlZCIsImJhY2toYW5kIl0sImNoYXIiOiJcdWQ4M2VcdWRkMWEiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSxvcGVuX2hhbmRzOntrZXl3b3JkczpbImZpbmdlcnMiLCJidXR0ZXJmbHkiLCJoYW5kcyIsIm9wZW4iXSwiY2hhciI6Ilx1ZDgzZFx1ZGM1MCIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6InBlb3BsZSJ9LG11c2NsZTp7a2V5d29yZHM6WyJhcm0iLCJmbGV4IiwiaGFuZCIsInN1bW1lciIsInN0cm9uZyIsImJpY2VwcyJdLCJjaGFyIjoiXHVkODNkXHVkY2FhIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0scHJheTp7a2V5d29yZHM6WyJwbGVhc2UiLCJob3BlIiwid2lzaCIsIm5hbWFzdGUiLCJoaWdoZml2ZSJdLCJjaGFyIjoiXHVkODNkXHVkZTRmIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0saGFuZHNoYWtlOntrZXl3b3JkczpbImFncmVlbWVudCIsInNoYWtlIl0sImNoYXIiOiJcdWQ4M2VcdWRkMWQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxwb2ludF91cDp7a2V5d29yZHM6WyJoYW5kIiwiZmluZ2VycyIsImRpcmVjdGlvbiIsInVwIl0sImNoYXIiOiJcdTI2MWQiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSxwb2ludF91cF8yOntrZXl3b3JkczpbImZpbmdlcnMiLCJoYW5kIiwiZGlyZWN0aW9uIiwidXAiXSwiY2hhciI6Ilx1ZDgzZFx1ZGM0NiIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6InBlb3BsZSJ9LHBvaW50X2Rvd246e2tleXdvcmRzOlsiZmluZ2VycyIsImhhbmQiLCJkaXJlY3Rpb24iLCJkb3duIl0sImNoYXIiOiJcdWQ4M2RcdWRjNDciLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSxwb2ludF9sZWZ0OntrZXl3b3JkczpbImRpcmVjdGlvbiIsImZpbmdlcnMiLCJoYW5kIiwibGVmdCJdLCJjaGFyIjoiXHVkODNkXHVkYzQ4IixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0scG9pbnRfcmlnaHQ6e2tleXdvcmRzOlsiZmluZ2VycyIsImhhbmQiLCJkaXJlY3Rpb24iLCJyaWdodCJdLCJjaGFyIjoiXHVkODNkXHVkYzQ5IixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0sZnU6e2tleXdvcmRzOlsiaGFuZCIsImZpbmdlcnMiLCJydWRlIiwibWlkZGxlIiwiZmxpcHBpbmciXSwiY2hhciI6Ilx1ZDgzZFx1ZGQ5NSIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6InBlb3BsZSJ9LHJhaXNlZF9oYW5kX3dpdGhfZmluZ2Vyc19zcGxheWVkOntrZXl3b3JkczpbImhhbmQiLCJmaW5nZXJzIiwicGFsbSJdLCJjaGFyIjoiXHVkODNkXHVkZDkwIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0sbG92ZV95b3U6e2tleXdvcmRzOlsiaGFuZCIsImZpbmdlcnMiLCJnZXN0dXJlIl0sImNoYXIiOiJcdWQ4M2VcdWRkMWYiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSxtZXRhbDp7a2V5d29yZHM6WyJoYW5kIiwiZmluZ2VycyIsImV2aWxfZXllIiwic2lnbl9vZl9ob3JucyIsInJvY2tfb24iXSwiY2hhciI6Ilx1ZDgzZVx1ZGQxOCIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6InBlb3BsZSJ9LGNyb3NzZWRfZmluZ2Vyczp7a2V5d29yZHM6WyJnb29kIiwibHVja3kiXSwiY2hhciI6Ilx1ZDgzZVx1ZGQxZSIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6InBlb3BsZSJ9LHZ1bGNhbl9zYWx1dGU6e2tleXdvcmRzOlsiaGFuZCIsImZpbmdlcnMiLCJzcG9jayIsInN0YXIgdHJlayJdLCJjaGFyIjoiXHVkODNkXHVkZDk2IixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0sd3JpdGluZ19oYW5kOntrZXl3b3JkczpbImxvd2VyX2xlZnRfYmFsbHBvaW50X3BlbiIsInN0YXRpb25lcnkiLCJ3cml0ZSIsImNvbXBvc2UiXSwiY2hhciI6Ilx1MjcwZCIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6InBlb3BsZSJ9LHNlbGZpZTp7a2V5d29yZHM6WyJjYW1lcmEiLCJwaG9uZSJdLCJjaGFyIjoiXHVkODNlXHVkZDMzIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0sbmFpbF9jYXJlOntrZXl3b3JkczpbImJlYXV0eSIsIm1hbmljdXJlIiwiZmluZ2VyIiwiZmFzaGlvbiIsIm5haWwiXSwiY2hhciI6Ilx1ZDgzZFx1ZGM4NSIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6InBlb3BsZSJ9LGxpcHM6e2tleXdvcmRzOlsibW91dGgiLCJraXNzIl0sImNoYXIiOiJcdWQ4M2RcdWRjNDQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSx0b25ndWU6e2tleXdvcmRzOlsibW91dGgiLCJwbGF5ZnVsIl0sImNoYXIiOiJcdWQ4M2RcdWRjNDUiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxlYXI6e2tleXdvcmRzOlsiZmFjZSIsImhlYXIiLCJzb3VuZCIsImxpc3RlbiJdLCJjaGFyIjoiXHVkODNkXHVkYzQyIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0sbm9zZTp7a2V5d29yZHM6WyJzbWVsbCIsInNuaWZmIl0sImNoYXIiOiJcdWQ4M2RcdWRjNDMiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSxleWU6e2tleXdvcmRzOlsiZmFjZSIsImxvb2siLCJzZWUiLCJ3YXRjaCIsInN0YXJlIl0sImNoYXIiOiJcdWQ4M2RcdWRjNDEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxleWVzOntrZXl3b3JkczpbImxvb2siLCJ3YXRjaCIsInN0YWxrIiwicGVlayIsInNlZSJdLCJjaGFyIjoiXHVkODNkXHVkYzQwIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sYnJhaW46e2tleXdvcmRzOlsic21hcnQiLCJpbnRlbGxpZ2VudCJdLCJjaGFyIjoiXHVkODNlXHVkZGUwIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sYnVzdF9pbl9zaWxob3VldHRlOntrZXl3b3JkczpbInVzZXIiLCJwZXJzb24iLCJodW1hbiJdLCJjaGFyIjoiXHVkODNkXHVkYzY0IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sYnVzdHNfaW5fc2lsaG91ZXR0ZTp7a2V5d29yZHM6WyJ1c2VyIiwicGVyc29uIiwiaHVtYW4iLCJncm91cCIsInRlYW0iXSwiY2hhciI6Ilx1ZDgzZFx1ZGM2NSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LHNwZWFraW5nX2hlYWQ6e2tleXdvcmRzOlsidXNlciIsInBlcnNvbiIsImh1bWFuIiwic2luZyIsInNheSIsInRhbGsiXSwiY2hhciI6Ilx1ZDgzZFx1ZGRlMyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LGJhYnk6e2tleXdvcmRzOlsiY2hpbGQiLCJib3kiLCJnaXJsIiwidG9kZGxlciJdLCJjaGFyIjoiXHVkODNkXHVkYzc2IixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0sY2hpbGQ6e2tleXdvcmRzOlsiZ2VuZGVyLW5ldXRyYWwiLCJ5b3VuZyJdLCJjaGFyIjoiXHVkODNlXHVkZGQyIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0sYm95OntrZXl3b3JkczpbIm1hbiIsIm1hbGUiLCJndXkiLCJ0ZWVuYWdlciJdLCJjaGFyIjoiXHVkODNkXHVkYzY2IixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0sZ2lybDp7a2V5d29yZHM6WyJmZW1hbGUiLCJ3b21hbiIsInRlZW5hZ2VyIl0sImNoYXIiOiJcdWQ4M2RcdWRjNjciLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSxhZHVsdDp7a2V5d29yZHM6WyJnZW5kZXItbmV1dHJhbCIsInBlcnNvbiJdLCJjaGFyIjoiXHVkODNlXHVkZGQxIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0sbWFuOntrZXl3b3JkczpbIm11c3RhY2hlIiwiZmF0aGVyIiwiZGFkIiwiZ3V5IiwiY2xhc3N5Iiwic2lyIiwibW91c3RhY2hlIl0sImNoYXIiOiJcdWQ4M2RcdWRjNjgiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSx3b21hbjp7a2V5d29yZHM6WyJmZW1hbGUiLCJnaXJscyIsImxhZHkiXSwiY2hhciI6Ilx1ZDgzZFx1ZGM2OSIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6InBlb3BsZSJ9LGJsb25kZV93b21hbjp7a2V5d29yZHM6WyJ3b21hbiIsImZlbWFsZSIsImdpcmwiLCJibG9uZGUiLCJwZXJzb24iXSwiY2hhciI6Ilx1ZDgzZFx1ZGM3MVx1MjAwZFx1MjY0MFx1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6InBlb3BsZSJ9LGJsb25kZV9tYW46e2tleXdvcmRzOlsibWFuIiwibWFsZSIsImJveSIsImJsb25kZSIsImd1eSIsInBlcnNvbiJdLCJjaGFyIjoiXHVkODNkXHVkYzcxIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0sYmVhcmRlZF9wZXJzb246e2tleXdvcmRzOlsicGVyc29uIiwiYmV3aGlza2VyZWQiXSwiY2hhciI6Ilx1ZDgzZVx1ZGRkNCIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6InBlb3BsZSJ9LG9sZGVyX2FkdWx0OntrZXl3b3JkczpbImh1bWFuIiwiZWxkZXIiLCJzZW5pb3IiLCJnZW5kZXItbmV1dHJhbCJdLCJjaGFyIjoiXHVkODNlXHVkZGQzIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0sb2xkZXJfbWFuOntrZXl3b3JkczpbImh1bWFuIiwibWFsZSIsIm1lbiIsIm9sZCIsImVsZGVyIiwic2VuaW9yIl0sImNoYXIiOiJcdWQ4M2RcdWRjNzQiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSxvbGRlcl93b21hbjp7a2V5d29yZHM6WyJodW1hbiIsImZlbWFsZSIsIndvbWVuIiwibGFkeSIsIm9sZCIsImVsZGVyIiwic2VuaW9yIl0sImNoYXIiOiJcdWQ4M2RcdWRjNzUiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSxtYW5fd2l0aF9ndWFfcGlfbWFvOntrZXl3b3JkczpbIm1hbGUiLCJib3kiLCJjaGluZXNlIl0sImNoYXIiOiJcdWQ4M2RcdWRjNzIiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSx3b21hbl93aXRoX2hlYWRzY2FyZjp7a2V5d29yZHM6WyJmZW1hbGUiLCJoaWphYiIsIm1hbnRpbGxhIiwidGljaGVsIl0sImNoYXIiOiJcdWQ4M2VcdWRkZDUiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSx3b21hbl93aXRoX3R1cmJhbjp7a2V5d29yZHM6WyJmZW1hbGUiLCJpbmRpYW4iLCJoaW5kdWlzbSIsImFyYWJzIiwid29tYW4iXSwiY2hhciI6Ilx1ZDgzZFx1ZGM3M1x1MjAwZFx1MjY0MFx1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6InBlb3BsZSJ9LG1hbl93aXRoX3R1cmJhbjp7a2V5d29yZHM6WyJtYWxlIiwiaW5kaWFuIiwiaGluZHVpc20iLCJhcmFicyJdLCJjaGFyIjoiXHVkODNkXHVkYzczIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0scG9saWNld29tYW46e2tleXdvcmRzOlsid29tYW4iLCJwb2xpY2UiLCJsYXciLCJsZWdhbCIsImVuZm9yY2VtZW50IiwiYXJyZXN0IiwiOTExIiwiZmVtYWxlIl0sImNoYXIiOiJcdWQ4M2RcdWRjNmVcdTIwMGRcdTI2NDBcdWZlMGYiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSxwb2xpY2VtYW46e2tleXdvcmRzOlsibWFuIiwicG9saWNlIiwibGF3IiwibGVnYWwiLCJlbmZvcmNlbWVudCIsImFycmVzdCIsIjkxMSJdLCJjaGFyIjoiXHVkODNkXHVkYzZlIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0sY29uc3RydWN0aW9uX3dvcmtlcl93b21hbjp7a2V5d29yZHM6WyJmZW1hbGUiLCJodW1hbiIsIndpcCIsImJ1aWxkIiwiY29uc3RydWN0aW9uIiwid29ya2VyIiwibGFib3IiLCJ3b21hbiJdLCJjaGFyIjoiXHVkODNkXHVkYzc3XHUyMDBkXHUyNjQwXHVmZTBmIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0sY29uc3RydWN0aW9uX3dvcmtlcl9tYW46e2tleXdvcmRzOlsibWFsZSIsImh1bWFuIiwid2lwIiwiZ3V5IiwiYnVpbGQiLCJjb25zdHJ1Y3Rpb24iLCJ3b3JrZXIiLCJsYWJvciJdLCJjaGFyIjoiXHVkODNkXHVkYzc3IixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0sZ3VhcmRzd29tYW46e2tleXdvcmRzOlsidWsiLCJnYiIsImJyaXRpc2giLCJmZW1hbGUiLCJyb3lhbCIsIndvbWFuIl0sImNoYXIiOiJcdWQ4M2RcdWRjODJcdTIwMGRcdTI2NDBcdWZlMGYiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSxndWFyZHNtYW46e2tleXdvcmRzOlsidWsiLCJnYiIsImJyaXRpc2giLCJtYWxlIiwiZ3V5Iiwicm95YWwiXSwiY2hhciI6Ilx1ZDgzZFx1ZGM4MiIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6InBlb3BsZSJ9LGZlbWFsZV9kZXRlY3RpdmU6e2tleXdvcmRzOlsiaHVtYW4iLCJzcHkiLCJkZXRlY3RpdmUiLCJmZW1hbGUiLCJ3b21hbiJdLCJjaGFyIjoiXHVkODNkXHVkZDc1XHVmZTBmXHUyMDBkXHUyNjQwXHVmZTBmIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0sbWFsZV9kZXRlY3RpdmU6e2tleXdvcmRzOlsiaHVtYW4iLCJzcHkiLCJkZXRlY3RpdmUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGQ3NSIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6InBlb3BsZSJ9LHdvbWFuX2hlYWx0aF93b3JrZXI6e2tleXdvcmRzOlsiZG9jdG9yIiwibnVyc2UiLCJ0aGVyYXBpc3QiLCJoZWFsdGhjYXJlIiwid29tYW4iLCJodW1hbiJdLCJjaGFyIjoiXHVkODNkXHVkYzY5XHUyMDBkXHUyNjk1XHVmZTBmIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0sbWFuX2hlYWx0aF93b3JrZXI6e2tleXdvcmRzOlsiZG9jdG9yIiwibnVyc2UiLCJ0aGVyYXBpc3QiLCJoZWFsdGhjYXJlIiwibWFuIiwiaHVtYW4iXSwiY2hhciI6Ilx1ZDgzZFx1ZGM2OFx1MjAwZFx1MjY5NVx1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6InBlb3BsZSJ9LHdvbWFuX2Zhcm1lcjp7a2V5d29yZHM6WyJyYW5jaGVyIiwiZ2FyZGVuZXIiLCJ3b21hbiIsImh1bWFuIl0sImNoYXIiOiJcdWQ4M2RcdWRjNjlcdTIwMGRcdWQ4M2NcdWRmM2UiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSxtYW5fZmFybWVyOntrZXl3b3JkczpbInJhbmNoZXIiLCJnYXJkZW5lciIsIm1hbiIsImh1bWFuIl0sImNoYXIiOiJcdWQ4M2RcdWRjNjhcdTIwMGRcdWQ4M2NcdWRmM2UiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSx3b21hbl9jb29rOntrZXl3b3JkczpbImNoZWYiLCJ3b21hbiIsImh1bWFuIl0sImNoYXIiOiJcdWQ4M2RcdWRjNjlcdTIwMGRcdWQ4M2NcdWRmNzMiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSxtYW5fY29vazp7a2V5d29yZHM6WyJjaGVmIiwibWFuIiwiaHVtYW4iXSwiY2hhciI6Ilx1ZDgzZFx1ZGM2OFx1MjAwZFx1ZDgzY1x1ZGY3MyIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6InBlb3BsZSJ9LHdvbWFuX3N0dWRlbnQ6e2tleXdvcmRzOlsiZ3JhZHVhdGUiLCJ3b21hbiIsImh1bWFuIl0sImNoYXIiOiJcdWQ4M2RcdWRjNjlcdTIwMGRcdWQ4M2NcdWRmOTMiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSxtYW5fc3R1ZGVudDp7a2V5d29yZHM6WyJncmFkdWF0ZSIsIm1hbiIsImh1bWFuIl0sImNoYXIiOiJcdWQ4M2RcdWRjNjhcdTIwMGRcdWQ4M2NcdWRmOTMiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSx3b21hbl9zaW5nZXI6e2tleXdvcmRzOlsicm9ja3N0YXIiLCJlbnRlcnRhaW5lciIsIndvbWFuIiwiaHVtYW4iXSwiY2hhciI6Ilx1ZDgzZFx1ZGM2OVx1MjAwZFx1ZDgzY1x1ZGZhNCIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6InBlb3BsZSJ9LG1hbl9zaW5nZXI6e2tleXdvcmRzOlsicm9ja3N0YXIiLCJlbnRlcnRhaW5lciIsIm1hbiIsImh1bWFuIl0sImNoYXIiOiJcdWQ4M2RcdWRjNjhcdTIwMGRcdWQ4M2NcdWRmYTQiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSx3b21hbl90ZWFjaGVyOntrZXl3b3JkczpbImluc3RydWN0b3IiLCJwcm9mZXNzb3IiLCJ3b21hbiIsImh1bWFuIl0sImNoYXIiOiJcdWQ4M2RcdWRjNjlcdTIwMGRcdWQ4M2NcdWRmZWIiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSxtYW5fdGVhY2hlcjp7a2V5d29yZHM6WyJpbnN0cnVjdG9yIiwicHJvZmVzc29yIiwibWFuIiwiaHVtYW4iXSwiY2hhciI6Ilx1ZDgzZFx1ZGM2OFx1MjAwZFx1ZDgzY1x1ZGZlYiIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6InBlb3BsZSJ9LHdvbWFuX2ZhY3Rvcnlfd29ya2VyOntrZXl3b3JkczpbImFzc2VtYmx5IiwiaW5kdXN0cmlhbCIsIndvbWFuIiwiaHVtYW4iXSwiY2hhciI6Ilx1ZDgzZFx1ZGM2OVx1MjAwZFx1ZDgzY1x1ZGZlZCIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6InBlb3BsZSJ9LG1hbl9mYWN0b3J5X3dvcmtlcjp7a2V5d29yZHM6WyJhc3NlbWJseSIsImluZHVzdHJpYWwiLCJtYW4iLCJodW1hbiJdLCJjaGFyIjoiXHVkODNkXHVkYzY4XHUyMDBkXHVkODNjXHVkZmVkIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0sd29tYW5fdGVjaG5vbG9naXN0OntrZXl3b3JkczpbImNvZGVyIiwiZGV2ZWxvcGVyIiwiZW5naW5lZXIiLCJwcm9ncmFtbWVyIiwic29mdHdhcmUiLCJ3b21hbiIsImh1bWFuIiwibGFwdG9wIiwiY29tcHV0ZXIiXSwiY2hhciI6Ilx1ZDgzZFx1ZGM2OVx1MjAwZFx1ZDgzZFx1ZGNiYiIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6InBlb3BsZSJ9LG1hbl90ZWNobm9sb2dpc3Q6e2tleXdvcmRzOlsiY29kZXIiLCJkZXZlbG9wZXIiLCJlbmdpbmVlciIsInByb2dyYW1tZXIiLCJzb2Z0d2FyZSIsIm1hbiIsImh1bWFuIiwibGFwdG9wIiwiY29tcHV0ZXIiXSwiY2hhciI6Ilx1ZDgzZFx1ZGM2OFx1MjAwZFx1ZDgzZFx1ZGNiYiIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6InBlb3BsZSJ9LHdvbWFuX29mZmljZV93b3JrZXI6e2tleXdvcmRzOlsiYnVzaW5lc3MiLCJtYW5hZ2VyIiwid29tYW4iLCJodW1hbiJdLCJjaGFyIjoiXHVkODNkXHVkYzY5XHUyMDBkXHVkODNkXHVkY2JjIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0sbWFuX29mZmljZV93b3JrZXI6e2tleXdvcmRzOlsiYnVzaW5lc3MiLCJtYW5hZ2VyIiwibWFuIiwiaHVtYW4iXSwiY2hhciI6Ilx1ZDgzZFx1ZGM2OFx1MjAwZFx1ZDgzZFx1ZGNiYyIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6InBlb3BsZSJ9LHdvbWFuX21lY2hhbmljOntrZXl3b3JkczpbInBsdW1iZXIiLCJ3b21hbiIsImh1bWFuIiwid3JlbmNoIl0sImNoYXIiOiJcdWQ4M2RcdWRjNjlcdTIwMGRcdWQ4M2RcdWRkMjciLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSxtYW5fbWVjaGFuaWM6e2tleXdvcmRzOlsicGx1bWJlciIsIm1hbiIsImh1bWFuIiwid3JlbmNoIl0sImNoYXIiOiJcdWQ4M2RcdWRjNjhcdTIwMGRcdWQ4M2RcdWRkMjciLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSx3b21hbl9zY2llbnRpc3Q6e2tleXdvcmRzOlsiYmlvbG9naXN0IiwiY2hlbWlzdCIsImVuZ2luZWVyIiwicGh5c2ljaXN0Iiwid29tYW4iLCJodW1hbiJdLCJjaGFyIjoiXHVkODNkXHVkYzY5XHUyMDBkXHVkODNkXHVkZDJjIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0sbWFuX3NjaWVudGlzdDp7a2V5d29yZHM6WyJiaW9sb2dpc3QiLCJjaGVtaXN0IiwiZW5naW5lZXIiLCJwaHlzaWNpc3QiLCJtYW4iLCJodW1hbiJdLCJjaGFyIjoiXHVkODNkXHVkYzY4XHUyMDBkXHVkODNkXHVkZDJjIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0sd29tYW5fYXJ0aXN0OntrZXl3b3JkczpbInBhaW50ZXIiLCJ3b21hbiIsImh1bWFuIl0sImNoYXIiOiJcdWQ4M2RcdWRjNjlcdTIwMGRcdWQ4M2NcdWRmYTgiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSxtYW5fYXJ0aXN0OntrZXl3b3JkczpbInBhaW50ZXIiLCJtYW4iLCJodW1hbiJdLCJjaGFyIjoiXHVkODNkXHVkYzY4XHUyMDBkXHVkODNjXHVkZmE4IixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0sd29tYW5fZmlyZWZpZ2h0ZXI6e2tleXdvcmRzOlsiZmlyZW1hbiIsIndvbWFuIiwiaHVtYW4iXSwiY2hhciI6Ilx1ZDgzZFx1ZGM2OVx1MjAwZFx1ZDgzZFx1ZGU5MiIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6InBlb3BsZSJ9LG1hbl9maXJlZmlnaHRlcjp7a2V5d29yZHM6WyJmaXJlbWFuIiwibWFuIiwiaHVtYW4iXSwiY2hhciI6Ilx1ZDgzZFx1ZGM2OFx1MjAwZFx1ZDgzZFx1ZGU5MiIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6InBlb3BsZSJ9LHdvbWFuX3BpbG90OntrZXl3b3JkczpbImF2aWF0b3IiLCJwbGFuZSIsIndvbWFuIiwiaHVtYW4iXSwiY2hhciI6Ilx1ZDgzZFx1ZGM2OVx1MjAwZFx1MjcwOFx1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6InBlb3BsZSJ9LG1hbl9waWxvdDp7a2V5d29yZHM6WyJhdmlhdG9yIiwicGxhbmUiLCJtYW4iLCJodW1hbiJdLCJjaGFyIjoiXHVkODNkXHVkYzY4XHUyMDBkXHUyNzA4XHVmZTBmIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0sd29tYW5fYXN0cm9uYXV0OntrZXl3b3JkczpbInNwYWNlIiwicm9ja2V0Iiwid29tYW4iLCJodW1hbiJdLCJjaGFyIjoiXHVkODNkXHVkYzY5XHUyMDBkXHVkODNkXHVkZTgwIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0sbWFuX2FzdHJvbmF1dDp7a2V5d29yZHM6WyJzcGFjZSIsInJvY2tldCIsIm1hbiIsImh1bWFuIl0sImNoYXIiOiJcdWQ4M2RcdWRjNjhcdTIwMGRcdWQ4M2RcdWRlODAiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSx3b21hbl9qdWRnZTp7a2V5d29yZHM6WyJqdXN0aWNlIiwiY291cnQiLCJ3b21hbiIsImh1bWFuIl0sImNoYXIiOiJcdWQ4M2RcdWRjNjlcdTIwMGRcdTI2OTZcdWZlMGYiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSxtYW5fanVkZ2U6e2tleXdvcmRzOlsianVzdGljZSIsImNvdXJ0IiwibWFuIiwiaHVtYW4iXSwiY2hhciI6Ilx1ZDgzZFx1ZGM2OFx1MjAwZFx1MjY5Nlx1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6InBlb3BsZSJ9LG1yc19jbGF1czp7a2V5d29yZHM6WyJ3b21hbiIsImZlbWFsZSIsInhtYXMiLCJtb3RoZXIgY2hyaXN0bWFzIl0sImNoYXIiOiJcdWQ4M2VcdWRkMzYiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSxzYW50YTp7a2V5d29yZHM6WyJmZXN0aXZhbCIsIm1hbiIsIm1hbGUiLCJ4bWFzIiwiZmF0aGVyIGNocmlzdG1hcyJdLCJjaGFyIjoiXHVkODNjXHVkZjg1IixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0sc29yY2VyZXNzOntrZXl3b3JkczpbIndvbWFuIiwiZmVtYWxlIiwibWFnZSIsIndpdGNoIl0sImNoYXIiOiJcdWQ4M2VcdWRkZDlcdTIwMGRcdTI2NDBcdWZlMGYiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSx3aXphcmQ6e2tleXdvcmRzOlsibWFuIiwibWFsZSIsIm1hZ2UiLCJzb3JjZXJlciJdLCJjaGFyIjoiXHVkODNlXHVkZGQ5XHUyMDBkXHUyNjQyXHVmZTBmIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0sd29tYW5fZWxmOntrZXl3b3JkczpbIndvbWFuIiwiZmVtYWxlIl0sImNoYXIiOiJcdWQ4M2VcdWRkZGRcdTIwMGRcdTI2NDBcdWZlMGYiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSxtYW5fZWxmOntrZXl3b3JkczpbIm1hbiIsIm1hbGUiXSwiY2hhciI6Ilx1ZDgzZVx1ZGRkZFx1MjAwZFx1MjY0Mlx1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6InBlb3BsZSJ9LHdvbWFuX3ZhbXBpcmU6e2tleXdvcmRzOlsid29tYW4iLCJmZW1hbGUiXSwiY2hhciI6Ilx1ZDgzZVx1ZGRkYlx1MjAwZFx1MjY0MFx1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6InBlb3BsZSJ9LG1hbl92YW1waXJlOntrZXl3b3JkczpbIm1hbiIsIm1hbGUiLCJkcmFjdWxhIl0sImNoYXIiOiJcdWQ4M2VcdWRkZGJcdTIwMGRcdTI2NDJcdWZlMGYiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSx3b21hbl96b21iaWU6e2tleXdvcmRzOlsid29tYW4iLCJmZW1hbGUiLCJ1bmRlYWQiLCJ3YWxraW5nIGRlYWQiXSwiY2hhciI6Ilx1ZDgzZVx1ZGRkZlx1MjAwZFx1MjY0MFx1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LG1hbl96b21iaWU6e2tleXdvcmRzOlsibWFuIiwibWFsZSIsImRyYWN1bGEiLCJ1bmRlYWQiLCJ3YWxraW5nIGRlYWQiXSwiY2hhciI6Ilx1ZDgzZVx1ZGRkZlx1MjAwZFx1MjY0Mlx1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LHdvbWFuX2dlbmllOntrZXl3b3JkczpbIndvbWFuIiwiZmVtYWxlIl0sImNoYXIiOiJcdWQ4M2VcdWRkZGVcdTIwMGRcdTI2NDBcdWZlMGYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxtYW5fZ2VuaWU6e2tleXdvcmRzOlsibWFuIiwibWFsZSJdLCJjaGFyIjoiXHVkODNlXHVkZGRlXHUyMDBkXHUyNjQyXHVmZTBmIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sbWVybWFpZDp7a2V5d29yZHM6WyJ3b21hbiIsImZlbWFsZSIsIm1lcndvbWFuIiwiYXJpZWwiXSwiY2hhciI6Ilx1ZDgzZVx1ZGRkY1x1MjAwZFx1MjY0MFx1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6InBlb3BsZSJ9LG1lcm1hbjp7a2V5d29yZHM6WyJtYW4iLCJtYWxlIiwidHJpdG9uIl0sImNoYXIiOiJcdWQ4M2VcdWRkZGNcdTIwMGRcdTI2NDJcdWZlMGYiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSx3b21hbl9mYWlyeTp7a2V5d29yZHM6WyJ3b21hbiIsImZlbWFsZSJdLCJjaGFyIjoiXHVkODNlXHVkZGRhXHUyMDBkXHUyNjQwXHVmZTBmIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0sbWFuX2ZhaXJ5OntrZXl3b3JkczpbIm1hbiIsIm1hbGUiXSwiY2hhciI6Ilx1ZDgzZVx1ZGRkYVx1MjAwZFx1MjY0Mlx1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6InBlb3BsZSJ9LGFuZ2VsOntrZXl3b3JkczpbImhlYXZlbiIsIndpbmdzIiwiaGFsbyJdLCJjaGFyIjoiXHVkODNkXHVkYzdjIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0scHJlZ25hbnRfd29tYW46e2tleXdvcmRzOlsiYmFieSJdLCJjaGFyIjoiXHVkODNlXHVkZDMwIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0sYnJlYXN0ZmVlZGluZzp7a2V5d29yZHM6WyJudXJzaW5nIiwiYmFieSJdLCJjaGFyIjoiXHVkODNlXHVkZDMxIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0scHJpbmNlc3M6e2tleXdvcmRzOlsiZ2lybCIsIndvbWFuIiwiZmVtYWxlIiwiYmxvbmQiLCJjcm93biIsInJveWFsIiwicXVlZW4iXSwiY2hhciI6Ilx1ZDgzZFx1ZGM3OCIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6InBlb3BsZSJ9LHByaW5jZTp7a2V5d29yZHM6WyJib3kiLCJtYW4iLCJtYWxlIiwiY3Jvd24iLCJyb3lhbCIsImtpbmciXSwiY2hhciI6Ilx1ZDgzZVx1ZGQzNCIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6InBlb3BsZSJ9LGJyaWRlX3dpdGhfdmVpbDp7a2V5d29yZHM6WyJjb3VwbGUiLCJtYXJyaWFnZSIsIndlZGRpbmciLCJ3b21hbiIsImJyaWRlIl0sImNoYXIiOiJcdWQ4M2RcdWRjNzAiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSxtYW5faW5fdHV4ZWRvOntrZXl3b3JkczpbImNvdXBsZSIsIm1hcnJpYWdlIiwid2VkZGluZyIsImdyb29tIl0sImNoYXIiOiJcdWQ4M2VcdWRkMzUiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSxydW5uaW5nX3dvbWFuOntrZXl3b3JkczpbIndvbWFuIiwid2Fsa2luZyIsImV4ZXJjaXNlIiwicmFjZSIsInJ1bm5pbmciLCJmZW1hbGUiXSwiY2hhciI6Ilx1ZDgzY1x1ZGZjM1x1MjAwZFx1MjY0MFx1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6InBlb3BsZSJ9LHJ1bm5pbmdfbWFuOntrZXl3b3JkczpbIm1hbiIsIndhbGtpbmciLCJleGVyY2lzZSIsInJhY2UiLCJydW5uaW5nIl0sImNoYXIiOiJcdWQ4M2NcdWRmYzMiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSx3YWxraW5nX3dvbWFuOntrZXl3b3JkczpbImh1bWFuIiwiZmVldCIsInN0ZXBzIiwid29tYW4iLCJmZW1hbGUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGViNlx1MjAwZFx1MjY0MFx1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6InBlb3BsZSJ9LHdhbGtpbmdfbWFuOntrZXl3b3JkczpbImh1bWFuIiwiZmVldCIsInN0ZXBzIl0sImNoYXIiOiJcdWQ4M2RcdWRlYjYiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSxkYW5jZXI6e2tleXdvcmRzOlsiZmVtYWxlIiwiZ2lybCIsIndvbWFuIiwiZnVuIl0sImNoYXIiOiJcdWQ4M2RcdWRjODMiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSxtYW5fZGFuY2luZzp7a2V5d29yZHM6WyJtYWxlIiwiYm95IiwiZnVuIiwiZGFuY2VyIl0sImNoYXIiOiJcdWQ4M2RcdWRkN2EiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSxkYW5jaW5nX3dvbWVuOntrZXl3b3JkczpbImZlbWFsZSIsImJ1bm55Iiwid29tZW4iLCJnaXJscyJdLCJjaGFyIjoiXHVkODNkXHVkYzZmIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sZGFuY2luZ19tZW46e2tleXdvcmRzOlsibWFsZSIsImJ1bm55IiwibWVuIiwiYm95cyJdLCJjaGFyIjoiXHVkODNkXHVkYzZmXHUyMDBkXHUyNjQyXHVmZTBmIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sY291cGxlOntrZXl3b3JkczpbInBhaXIiLCJwZW9wbGUiLCJodW1hbiIsImxvdmUiLCJkYXRlIiwiZGF0aW5nIiwibGlrZSIsImFmZmVjdGlvbiIsInZhbGVudGluZXMiLCJtYXJyaWFnZSJdLCJjaGFyIjoiXHVkODNkXHVkYzZiIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sdHdvX21lbl9ob2xkaW5nX2hhbmRzOntrZXl3b3JkczpbInBhaXIiLCJjb3VwbGUiLCJsb3ZlIiwibGlrZSIsImJyb21hbmNlIiwiZnJpZW5kc2hpcCIsInBlb3BsZSIsImh1bWFuIl0sImNoYXIiOiJcdWQ4M2RcdWRjNmMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSx0d29fd29tZW5faG9sZGluZ19oYW5kczp7a2V5d29yZHM6WyJwYWlyIiwiZnJpZW5kc2hpcCIsImNvdXBsZSIsImxvdmUiLCJsaWtlIiwiZmVtYWxlIiwicGVvcGxlIiwiaHVtYW4iXSwiY2hhciI6Ilx1ZDgzZFx1ZGM2ZCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LGJvd2luZ193b21hbjp7a2V5d29yZHM6WyJ3b21hbiIsImZlbWFsZSIsImdpcmwiXSwiY2hhciI6Ilx1ZDgzZFx1ZGU0N1x1MjAwZFx1MjY0MFx1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6InBlb3BsZSJ9LGJvd2luZ19tYW46e2tleXdvcmRzOlsibWFuIiwibWFsZSIsImJveSJdLCJjaGFyIjoiXHVkODNkXHVkZTQ3IixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0sbWFuX2ZhY2VwYWxtaW5nOntrZXl3b3JkczpbIm1hbiIsIm1hbGUiLCJib3kiLCJkaXNiZWxpZWYiXSwiY2hhciI6Ilx1ZDgzZVx1ZGQyNiIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6InBlb3BsZSJ9LHdvbWFuX2ZhY2VwYWxtaW5nOntrZXl3b3JkczpbIndvbWFuIiwiZmVtYWxlIiwiZ2lybCIsImRpc2JlbGllZiJdLCJjaGFyIjoiXHVkODNlXHVkZDI2XHUyMDBkXHUyNjQwXHVmZTBmIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0sd29tYW5fc2hydWdnaW5nOntrZXl3b3JkczpbIndvbWFuIiwiZmVtYWxlIiwiZ2lybCIsImNvbmZ1c2VkIiwiaW5kaWZmZXJlbnQiLCJkb3VidCJdLCJjaGFyIjoiXHVkODNlXHVkZDM3IixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0sbWFuX3NocnVnZ2luZzp7a2V5d29yZHM6WyJtYW4iLCJtYWxlIiwiYm95IiwiY29uZnVzZWQiLCJpbmRpZmZlcmVudCIsImRvdWJ0Il0sImNoYXIiOiJcdWQ4M2VcdWRkMzdcdTIwMGRcdTI2NDJcdWZlMGYiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSx0aXBwaW5nX2hhbmRfd29tYW46e2tleXdvcmRzOlsiZmVtYWxlIiwiZ2lybCIsIndvbWFuIiwiaHVtYW4iLCJpbmZvcm1hdGlvbiJdLCJjaGFyIjoiXHVkODNkXHVkYzgxIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0sdGlwcGluZ19oYW5kX21hbjp7a2V5d29yZHM6WyJtYWxlIiwiYm95IiwibWFuIiwiaHVtYW4iLCJpbmZvcm1hdGlvbiJdLCJjaGFyIjoiXHVkODNkXHVkYzgxXHUyMDBkXHUyNjQyXHVmZTBmIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0sbm9fZ29vZF93b21hbjp7a2V5d29yZHM6WyJmZW1hbGUiLCJnaXJsIiwid29tYW4iLCJub3BlIl0sImNoYXIiOiJcdWQ4M2RcdWRlNDUiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSxub19nb29kX21hbjp7a2V5d29yZHM6WyJtYWxlIiwiYm95IiwibWFuIiwibm9wZSJdLCJjaGFyIjoiXHVkODNkXHVkZTQ1XHUyMDBkXHUyNjQyXHVmZTBmIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0sb2tfd29tYW46e2tleXdvcmRzOlsid29tZW4iLCJnaXJsIiwiZmVtYWxlIiwicGluayIsImh1bWFuIiwid29tYW4iXSwiY2hhciI6Ilx1ZDgzZFx1ZGU0NiIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6InBlb3BsZSJ9LG9rX21hbjp7a2V5d29yZHM6WyJtZW4iLCJib3kiLCJtYWxlIiwiYmx1ZSIsImh1bWFuIiwibWFuIl0sImNoYXIiOiJcdWQ4M2RcdWRlNDZcdTIwMGRcdTI2NDJcdWZlMGYiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSxyYWlzaW5nX2hhbmRfd29tYW46e2tleXdvcmRzOlsiZmVtYWxlIiwiZ2lybCIsIndvbWFuIl0sImNoYXIiOiJcdWQ4M2RcdWRlNGIiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSxyYWlzaW5nX2hhbmRfbWFuOntrZXl3b3JkczpbIm1hbGUiLCJib3kiLCJtYW4iXSwiY2hhciI6Ilx1ZDgzZFx1ZGU0Ylx1MjAwZFx1MjY0Mlx1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6InBlb3BsZSJ9LHBvdXRpbmdfd29tYW46e2tleXdvcmRzOlsiZmVtYWxlIiwiZ2lybCIsIndvbWFuIl0sImNoYXIiOiJcdWQ4M2RcdWRlNGUiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSxwb3V0aW5nX21hbjp7a2V5d29yZHM6WyJtYWxlIiwiYm95IiwibWFuIl0sImNoYXIiOiJcdWQ4M2RcdWRlNGVcdTIwMGRcdTI2NDJcdWZlMGYiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSxmcm93bmluZ193b21hbjp7a2V5d29yZHM6WyJmZW1hbGUiLCJnaXJsIiwid29tYW4iLCJzYWQiLCJkZXByZXNzZWQiLCJkaXNjb3VyYWdlZCIsInVuaGFwcHkiXSwiY2hhciI6Ilx1ZDgzZFx1ZGU0ZCIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6InBlb3BsZSJ9LGZyb3duaW5nX21hbjp7a2V5d29yZHM6WyJtYWxlIiwiYm95IiwibWFuIiwic2FkIiwiZGVwcmVzc2VkIiwiZGlzY291cmFnZWQiLCJ1bmhhcHB5Il0sImNoYXIiOiJcdWQ4M2RcdWRlNGRcdTIwMGRcdTI2NDJcdWZlMGYiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSxoYWlyY3V0X3dvbWFuOntrZXl3b3JkczpbImZlbWFsZSIsImdpcmwiLCJ3b21hbiJdLCJjaGFyIjoiXHVkODNkXHVkYzg3IixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0saGFpcmN1dF9tYW46e2tleXdvcmRzOlsibWFsZSIsImJveSIsIm1hbiJdLCJjaGFyIjoiXHVkODNkXHVkYzg3XHUyMDBkXHUyNjQyXHVmZTBmIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0sbWFzc2FnZV93b21hbjp7a2V5d29yZHM6WyJmZW1hbGUiLCJnaXJsIiwid29tYW4iLCJoZWFkIl0sImNoYXIiOiJcdWQ4M2RcdWRjODYiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJwZW9wbGUifSxtYXNzYWdlX21hbjp7a2V5d29yZHM6WyJtYWxlIiwiYm95IiwibWFuIiwiaGVhZCJdLCJjaGFyIjoiXHVkODNkXHVkYzg2XHUyMDBkXHUyNjQyXHVmZTBmIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0sd29tYW5faW5fc3RlYW15X3Jvb206e2tleXdvcmRzOlsiZmVtYWxlIiwid29tYW4iLCJzcGEiLCJzdGVhbXJvb20iLCJzYXVuYSJdLCJjaGFyIjoiXHVkODNlXHVkZGQ2XHUyMDBkXHUyNjQwXHVmZTBmIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0sbWFuX2luX3N0ZWFteV9yb29tOntrZXl3b3JkczpbIm1hbGUiLCJtYW4iLCJzcGEiLCJzdGVhbXJvb20iLCJzYXVuYSJdLCJjaGFyIjoiXHVkODNlXHVkZGQ2XHUyMDBkXHUyNjQyXHVmZTBmIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToicGVvcGxlIn0sY291cGxlX3dpdGhfaGVhcnRfd29tYW5fbWFuOntrZXl3b3JkczpbInBhaXIiLCJsb3ZlIiwibGlrZSIsImFmZmVjdGlvbiIsImh1bWFuIiwiZGF0aW5nIiwidmFsZW50aW5lcyIsIm1hcnJpYWdlIl0sImNoYXIiOiJcdWQ4M2RcdWRjOTEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxjb3VwbGVfd2l0aF9oZWFydF93b21hbl93b21hbjp7a2V5d29yZHM6WyJwYWlyIiwibG92ZSIsImxpa2UiLCJhZmZlY3Rpb24iLCJodW1hbiIsImRhdGluZyIsInZhbGVudGluZXMiLCJtYXJyaWFnZSJdLCJjaGFyIjoiXHVkODNkXHVkYzY5XHUyMDBkXHUyNzY0XHVmZTBmXHUyMDBkXHVkODNkXHVkYzY5IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sY291cGxlX3dpdGhfaGVhcnRfbWFuX21hbjp7a2V5d29yZHM6WyJwYWlyIiwibG92ZSIsImxpa2UiLCJhZmZlY3Rpb24iLCJodW1hbiIsImRhdGluZyIsInZhbGVudGluZXMiLCJtYXJyaWFnZSJdLCJjaGFyIjoiXHVkODNkXHVkYzY4XHUyMDBkXHUyNzY0XHVmZTBmXHUyMDBkXHVkODNkXHVkYzY4IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sY291cGxla2lzc19tYW5fd29tYW46e2tleXdvcmRzOlsicGFpciIsInZhbGVudGluZXMiLCJsb3ZlIiwibGlrZSIsImRhdGluZyIsIm1hcnJpYWdlIl0sImNoYXIiOiJcdWQ4M2RcdWRjOGYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxjb3VwbGVraXNzX3dvbWFuX3dvbWFuOntrZXl3b3JkczpbInBhaXIiLCJ2YWxlbnRpbmVzIiwibG92ZSIsImxpa2UiLCJkYXRpbmciLCJtYXJyaWFnZSJdLCJjaGFyIjoiXHVkODNkXHVkYzY5XHUyMDBkXHUyNzY0XHVmZTBmXHUyMDBkXHVkODNkXHVkYzhiXHUyMDBkXHVkODNkXHVkYzY5IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sY291cGxla2lzc19tYW5fbWFuOntrZXl3b3JkczpbInBhaXIiLCJ2YWxlbnRpbmVzIiwibG92ZSIsImxpa2UiLCJkYXRpbmciLCJtYXJyaWFnZSJdLCJjaGFyIjoiXHVkODNkXHVkYzY4XHUyMDBkXHUyNzY0XHVmZTBmXHUyMDBkXHVkODNkXHVkYzhiXHUyMDBkXHVkODNkXHVkYzY4IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sZmFtaWx5X21hbl93b21hbl9ib3k6e2tleXdvcmRzOlsiaG9tZSIsInBhcmVudHMiLCJjaGlsZCIsIm1vbSIsImRhZCIsImZhdGhlciIsIm1vdGhlciIsInBlb3BsZSIsImh1bWFuIl0sImNoYXIiOiJcdWQ4M2RcdWRjNmEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxmYW1pbHlfbWFuX3dvbWFuX2dpcmw6e2tleXdvcmRzOlsiaG9tZSIsInBhcmVudHMiLCJwZW9wbGUiLCJodW1hbiIsImNoaWxkIl0sImNoYXIiOiJcdWQ4M2RcdWRjNjhcdTIwMGRcdWQ4M2RcdWRjNjlcdTIwMGRcdWQ4M2RcdWRjNjciLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxmYW1pbHlfbWFuX3dvbWFuX2dpcmxfYm95OntrZXl3b3JkczpbImhvbWUiLCJwYXJlbnRzIiwicGVvcGxlIiwiaHVtYW4iLCJjaGlsZHJlbiJdLCJjaGFyIjoiXHVkODNkXHVkYzY4XHUyMDBkXHVkODNkXHVkYzY5XHUyMDBkXHVkODNkXHVkYzY3XHUyMDBkXHVkODNkXHVkYzY2IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sZmFtaWx5X21hbl93b21hbl9ib3lfYm95OntrZXl3b3JkczpbImhvbWUiLCJwYXJlbnRzIiwicGVvcGxlIiwiaHVtYW4iLCJjaGlsZHJlbiJdLCJjaGFyIjoiXHVkODNkXHVkYzY4XHUyMDBkXHVkODNkXHVkYzY5XHUyMDBkXHVkODNkXHVkYzY2XHUyMDBkXHVkODNkXHVkYzY2IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sZmFtaWx5X21hbl93b21hbl9naXJsX2dpcmw6e2tleXdvcmRzOlsiaG9tZSIsInBhcmVudHMiLCJwZW9wbGUiLCJodW1hbiIsImNoaWxkcmVuIl0sImNoYXIiOiJcdWQ4M2RcdWRjNjhcdTIwMGRcdWQ4M2RcdWRjNjlcdTIwMGRcdWQ4M2RcdWRjNjdcdTIwMGRcdWQ4M2RcdWRjNjciLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxmYW1pbHlfd29tYW5fd29tYW5fYm95OntrZXl3b3JkczpbImhvbWUiLCJwYXJlbnRzIiwicGVvcGxlIiwiaHVtYW4iLCJjaGlsZHJlbiJdLCJjaGFyIjoiXHVkODNkXHVkYzY5XHUyMDBkXHVkODNkXHVkYzY5XHUyMDBkXHVkODNkXHVkYzY2IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sZmFtaWx5X3dvbWFuX3dvbWFuX2dpcmw6e2tleXdvcmRzOlsiaG9tZSIsInBhcmVudHMiLCJwZW9wbGUiLCJodW1hbiIsImNoaWxkcmVuIl0sImNoYXIiOiJcdWQ4M2RcdWRjNjlcdTIwMGRcdWQ4M2RcdWRjNjlcdTIwMGRcdWQ4M2RcdWRjNjciLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxmYW1pbHlfd29tYW5fd29tYW5fZ2lybF9ib3k6e2tleXdvcmRzOlsiaG9tZSIsInBhcmVudHMiLCJwZW9wbGUiLCJodW1hbiIsImNoaWxkcmVuIl0sImNoYXIiOiJcdWQ4M2RcdWRjNjlcdTIwMGRcdWQ4M2RcdWRjNjlcdTIwMGRcdWQ4M2RcdWRjNjdcdTIwMGRcdWQ4M2RcdWRjNjYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxmYW1pbHlfd29tYW5fd29tYW5fYm95X2JveTp7a2V5d29yZHM6WyJob21lIiwicGFyZW50cyIsInBlb3BsZSIsImh1bWFuIiwiY2hpbGRyZW4iXSwiY2hhciI6Ilx1ZDgzZFx1ZGM2OVx1MjAwZFx1ZDgzZFx1ZGM2OVx1MjAwZFx1ZDgzZFx1ZGM2Nlx1MjAwZFx1ZDgzZFx1ZGM2NiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LGZhbWlseV93b21hbl93b21hbl9naXJsX2dpcmw6e2tleXdvcmRzOlsiaG9tZSIsInBhcmVudHMiLCJwZW9wbGUiLCJodW1hbiIsImNoaWxkcmVuIl0sImNoYXIiOiJcdWQ4M2RcdWRjNjlcdTIwMGRcdWQ4M2RcdWRjNjlcdTIwMGRcdWQ4M2RcdWRjNjdcdTIwMGRcdWQ4M2RcdWRjNjciLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxmYW1pbHlfbWFuX21hbl9ib3k6e2tleXdvcmRzOlsiaG9tZSIsInBhcmVudHMiLCJwZW9wbGUiLCJodW1hbiIsImNoaWxkcmVuIl0sImNoYXIiOiJcdWQ4M2RcdWRjNjhcdTIwMGRcdWQ4M2RcdWRjNjhcdTIwMGRcdWQ4M2RcdWRjNjYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxmYW1pbHlfbWFuX21hbl9naXJsOntrZXl3b3JkczpbImhvbWUiLCJwYXJlbnRzIiwicGVvcGxlIiwiaHVtYW4iLCJjaGlsZHJlbiJdLCJjaGFyIjoiXHVkODNkXHVkYzY4XHUyMDBkXHVkODNkXHVkYzY4XHUyMDBkXHVkODNkXHVkYzY3IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sZmFtaWx5X21hbl9tYW5fZ2lybF9ib3k6e2tleXdvcmRzOlsiaG9tZSIsInBhcmVudHMiLCJwZW9wbGUiLCJodW1hbiIsImNoaWxkcmVuIl0sImNoYXIiOiJcdWQ4M2RcdWRjNjhcdTIwMGRcdWQ4M2RcdWRjNjhcdTIwMGRcdWQ4M2RcdWRjNjdcdTIwMGRcdWQ4M2RcdWRjNjYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxmYW1pbHlfbWFuX21hbl9ib3lfYm95OntrZXl3b3JkczpbImhvbWUiLCJwYXJlbnRzIiwicGVvcGxlIiwiaHVtYW4iLCJjaGlsZHJlbiJdLCJjaGFyIjoiXHVkODNkXHVkYzY4XHUyMDBkXHVkODNkXHVkYzY4XHUyMDBkXHVkODNkXHVkYzY2XHUyMDBkXHVkODNkXHVkYzY2IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sZmFtaWx5X21hbl9tYW5fZ2lybF9naXJsOntrZXl3b3JkczpbImhvbWUiLCJwYXJlbnRzIiwicGVvcGxlIiwiaHVtYW4iLCJjaGlsZHJlbiJdLCJjaGFyIjoiXHVkODNkXHVkYzY4XHUyMDBkXHVkODNkXHVkYzY4XHUyMDBkXHVkODNkXHVkYzY3XHUyMDBkXHVkODNkXHVkYzY3IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sZmFtaWx5X3dvbWFuX2JveTp7a2V5d29yZHM6WyJob21lIiwicGFyZW50IiwicGVvcGxlIiwiaHVtYW4iLCJjaGlsZCJdLCJjaGFyIjoiXHVkODNkXHVkYzY5XHUyMDBkXHVkODNkXHVkYzY2IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sZmFtaWx5X3dvbWFuX2dpcmw6e2tleXdvcmRzOlsiaG9tZSIsInBhcmVudCIsInBlb3BsZSIsImh1bWFuIiwiY2hpbGQiXSwiY2hhciI6Ilx1ZDgzZFx1ZGM2OVx1MjAwZFx1ZDgzZFx1ZGM2NyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LGZhbWlseV93b21hbl9naXJsX2JveTp7a2V5d29yZHM6WyJob21lIiwicGFyZW50IiwicGVvcGxlIiwiaHVtYW4iLCJjaGlsZHJlbiJdLCJjaGFyIjoiXHVkODNkXHVkYzY5XHUyMDBkXHVkODNkXHVkYzY3XHUyMDBkXHVkODNkXHVkYzY2IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sZmFtaWx5X3dvbWFuX2JveV9ib3k6e2tleXdvcmRzOlsiaG9tZSIsInBhcmVudCIsInBlb3BsZSIsImh1bWFuIiwiY2hpbGRyZW4iXSwiY2hhciI6Ilx1ZDgzZFx1ZGM2OVx1MjAwZFx1ZDgzZFx1ZGM2Nlx1MjAwZFx1ZDgzZFx1ZGM2NiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LGZhbWlseV93b21hbl9naXJsX2dpcmw6e2tleXdvcmRzOlsiaG9tZSIsInBhcmVudCIsInBlb3BsZSIsImh1bWFuIiwiY2hpbGRyZW4iXSwiY2hhciI6Ilx1ZDgzZFx1ZGM2OVx1MjAwZFx1ZDgzZFx1ZGM2N1x1MjAwZFx1ZDgzZFx1ZGM2NyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LGZhbWlseV9tYW5fYm95OntrZXl3b3JkczpbImhvbWUiLCJwYXJlbnQiLCJwZW9wbGUiLCJodW1hbiIsImNoaWxkIl0sImNoYXIiOiJcdWQ4M2RcdWRjNjhcdTIwMGRcdWQ4M2RcdWRjNjYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxmYW1pbHlfbWFuX2dpcmw6e2tleXdvcmRzOlsiaG9tZSIsInBhcmVudCIsInBlb3BsZSIsImh1bWFuIiwiY2hpbGQiXSwiY2hhciI6Ilx1ZDgzZFx1ZGM2OFx1MjAwZFx1ZDgzZFx1ZGM2NyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LGZhbWlseV9tYW5fZ2lybF9ib3k6e2tleXdvcmRzOlsiaG9tZSIsInBhcmVudCIsInBlb3BsZSIsImh1bWFuIiwiY2hpbGRyZW4iXSwiY2hhciI6Ilx1ZDgzZFx1ZGM2OFx1MjAwZFx1ZDgzZFx1ZGM2N1x1MjAwZFx1ZDgzZFx1ZGM2NiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LGZhbWlseV9tYW5fYm95X2JveTp7a2V5d29yZHM6WyJob21lIiwicGFyZW50IiwicGVvcGxlIiwiaHVtYW4iLCJjaGlsZHJlbiJdLCJjaGFyIjoiXHVkODNkXHVkYzY4XHUyMDBkXHVkODNkXHVkYzY2XHUyMDBkXHVkODNkXHVkYzY2IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sZmFtaWx5X21hbl9naXJsX2dpcmw6e2tleXdvcmRzOlsiaG9tZSIsInBhcmVudCIsInBlb3BsZSIsImh1bWFuIiwiY2hpbGRyZW4iXSwiY2hhciI6Ilx1ZDgzZFx1ZGM2OFx1MjAwZFx1ZDgzZFx1ZGM2N1x1MjAwZFx1ZDgzZFx1ZGM2NyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LGNvYXQ6e2tleXdvcmRzOlsiamFja2V0Il0sImNoYXIiOiJcdWQ4M2VcdWRkZTUiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSx3b21hbnNfY2xvdGhlczp7a2V5d29yZHM6WyJmYXNoaW9uIiwic2hvcHBpbmdfYmFncyIsImZlbWFsZSJdLCJjaGFyIjoiXHVkODNkXHVkYzVhIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sdHNoaXJ0OntrZXl3b3JkczpbImZhc2hpb24iLCJjbG90aCIsImNhc3VhbCIsInNoaXJ0IiwidGVlIl0sImNoYXIiOiJcdWQ4M2RcdWRjNTUiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxqZWFuczp7a2V5d29yZHM6WyJmYXNoaW9uIiwic2hvcHBpbmciXSwiY2hhciI6Ilx1ZDgzZFx1ZGM1NiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LG5lY2t0aWU6e2tleXdvcmRzOlsic2hpcnQiLCJzdWl0dXAiLCJmb3JtYWwiLCJmYXNoaW9uIiwiY2xvdGgiLCJidXNpbmVzcyJdLCJjaGFyIjoiXHVkODNkXHVkYzU0IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sZHJlc3M6e2tleXdvcmRzOlsiY2xvdGhlcyIsImZhc2hpb24iLCJzaG9wcGluZyJdLCJjaGFyIjoiXHVkODNkXHVkYzU3IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sYmlraW5pOntrZXl3b3JkczpbInN3aW1taW5nIiwiZmVtYWxlIiwid29tYW4iLCJnaXJsIiwiZmFzaGlvbiIsImJlYWNoIiwic3VtbWVyIl0sImNoYXIiOiJcdWQ4M2RcdWRjNTkiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxraW1vbm86e2tleXdvcmRzOlsiZHJlc3MiLCJmYXNoaW9uIiwid29tZW4iLCJmZW1hbGUiLCJqYXBhbmVzZSJdLCJjaGFyIjoiXHVkODNkXHVkYzU4IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sbGlwc3RpY2s6e2tleXdvcmRzOlsiZmVtYWxlIiwiZ2lybCIsImZhc2hpb24iLCJ3b21hbiJdLCJjaGFyIjoiXHVkODNkXHVkYzg0IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sa2lzczp7a2V5d29yZHM6WyJmYWNlIiwibGlwcyIsImxvdmUiLCJsaWtlIiwiYWZmZWN0aW9uIiwidmFsZW50aW5lcyJdLCJjaGFyIjoiXHVkODNkXHVkYzhiIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sZm9vdHByaW50czp7a2V5d29yZHM6WyJmZWV0IiwidHJhY2tpbmciLCJ3YWxraW5nIiwiYmVhY2giXSwiY2hhciI6Ilx1ZDgzZFx1ZGM2MyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LGhpZ2hfaGVlbDp7a2V5d29yZHM6WyJmYXNoaW9uIiwic2hvZXMiLCJmZW1hbGUiLCJwdW1wcyIsInN0aWxldHRvIl0sImNoYXIiOiJcdWQ4M2RcdWRjNjAiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxzYW5kYWw6e2tleXdvcmRzOlsic2hvZXMiLCJmYXNoaW9uIiwiZmxpcCBmbG9wcyJdLCJjaGFyIjoiXHVkODNkXHVkYzYxIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sYm9vdDp7a2V5d29yZHM6WyJzaG9lcyIsImZhc2hpb24iXSwiY2hhciI6Ilx1ZDgzZFx1ZGM2MiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LG1hbnNfc2hvZTp7a2V5d29yZHM6WyJmYXNoaW9uIiwibWFsZSJdLCJjaGFyIjoiXHVkODNkXHVkYzVlIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sYXRobGV0aWNfc2hvZTp7a2V5d29yZHM6WyJzaG9lcyIsInNwb3J0cyIsInNuZWFrZXJzIl0sImNoYXIiOiJcdWQ4M2RcdWRjNWYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxzb2Nrczp7a2V5d29yZHM6WyJzdG9ja2luZ3MiLCJjbG90aGVzIl0sImNoYXIiOiJcdWQ4M2VcdWRkZTYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxnbG92ZXM6e2tleXdvcmRzOlsiaGFuZHMiLCJ3aW50ZXIiLCJjbG90aGVzIl0sImNoYXIiOiJcdWQ4M2VcdWRkZTQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxzY2FyZjp7a2V5d29yZHM6WyJuZWNrIiwid2ludGVyIiwiY2xvdGhlcyJdLCJjaGFyIjoiXHVkODNlXHVkZGUzIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sd29tYW5zX2hhdDp7a2V5d29yZHM6WyJmYXNoaW9uIiwiYWNjZXNzb3JpZXMiLCJmZW1hbGUiLCJsYWR5Iiwic3ByaW5nIl0sImNoYXIiOiJcdWQ4M2RcdWRjNTIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSx0b3BoYXQ6e2tleXdvcmRzOlsibWFnaWMiLCJnZW50bGVtYW4iLCJjbGFzc3kiLCJjaXJjdXMiXSwiY2hhciI6Ilx1ZDgzY1x1ZGZhOSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LGJpbGxlZF9oYXQ6e2tleXdvcmRzOlsiY2FwIiwiYmFzZWJhbGwiXSwiY2hhciI6Ilx1ZDgzZVx1ZGRlMiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LHJlc2N1ZV93b3JrZXJfaGVsbWV0OntrZXl3b3JkczpbImNvbnN0cnVjdGlvbiIsImJ1aWxkIl0sImNoYXIiOiJcdTI2ZDEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxtb3J0YXJfYm9hcmQ6e2tleXdvcmRzOlsic2Nob29sIiwiY29sbGVnZSIsImRlZ3JlZSIsInVuaXZlcnNpdHkiLCJncmFkdWF0aW9uIiwiY2FwIiwiaGF0IiwibGVnYWwiLCJsZWFybiIsImVkdWNhdGlvbiJdLCJjaGFyIjoiXHVkODNjXHVkZjkzIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sY3Jvd246e2tleXdvcmRzOlsia2luZyIsImtvZCIsImxlYWRlciIsInJveWFsdHkiLCJsb3JkIl0sImNoYXIiOiJcdWQ4M2RcdWRjNTEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxzY2hvb2xfc2F0Y2hlbDp7a2V5d29yZHM6WyJzdHVkZW50IiwiZWR1Y2F0aW9uIiwiYmFnIiwiYmFja3BhY2siXSwiY2hhciI6Ilx1ZDgzY1x1ZGY5MiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LHBvdWNoOntrZXl3b3JkczpbImJhZyIsImFjY2Vzc29yaWVzIiwic2hvcHBpbmciXSwiY2hhciI6Ilx1ZDgzZFx1ZGM1ZCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LHB1cnNlOntrZXl3b3JkczpbImZhc2hpb24iLCJhY2Nlc3NvcmllcyIsIm1vbmV5Iiwic2FsZXMiLCJzaG9wcGluZyJdLCJjaGFyIjoiXHVkODNkXHVkYzViIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0saGFuZGJhZzp7a2V5d29yZHM6WyJmYXNoaW9uIiwiYWNjZXNzb3J5IiwiYWNjZXNzb3JpZXMiLCJzaG9wcGluZyJdLCJjaGFyIjoiXHVkODNkXHVkYzVjIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sYnJpZWZjYXNlOntrZXl3b3JkczpbImJ1c2luZXNzIiwiZG9jdW1lbnRzIiwid29yayIsImxhdyIsImxlZ2FsIiwiam9iIiwiY2FyZWVyIl0sImNoYXIiOiJcdWQ4M2RcdWRjYmMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxleWVnbGFzc2VzOntrZXl3b3JkczpbImZhc2hpb24iLCJhY2Nlc3NvcmllcyIsImV5ZXNpZ2h0IiwibmVyZHkiLCJkb3JrIiwiZ2VlayJdLCJjaGFyIjoiXHVkODNkXHVkYzUzIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToicGVvcGxlIn0sZGFya19zdW5nbGFzc2VzOntrZXl3b3JkczpbImZhY2UiLCJjb29sIiwiYWNjZXNzb3JpZXMiXSwiY2hhciI6Ilx1ZDgzZFx1ZGQ3NiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InBlb3BsZSJ9LHJpbmc6e2tleXdvcmRzOlsid2VkZGluZyIsInByb3Bvc2UiLCJtYXJyaWFnZSIsInZhbGVudGluZXMiLCJkaWFtb25kIiwiZmFzaGlvbiIsImpld2VscnkiLCJnZW0iLCJlbmdhZ2VtZW50Il0sImNoYXIiOiJcdWQ4M2RcdWRjOGQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxjbG9zZWRfdW1icmVsbGE6e2tleXdvcmRzOlsid2VhdGhlciIsInJhaW4iLCJkcml6emxlIl0sImNoYXIiOiJcdWQ4M2NcdWRmMDIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJwZW9wbGUifSxkb2c6e2tleXdvcmRzOlsiYW5pbWFsIiwiZnJpZW5kIiwibmF0dXJlIiwid29vZiIsInB1cHB5IiwicGV0IiwiZmFpdGhmdWwiXSwiY2hhciI6Ilx1ZDgzZFx1ZGMzNiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LGNhdDp7a2V5d29yZHM6WyJhbmltYWwiLCJtZW93IiwibmF0dXJlIiwicGV0Iiwia2l0dGVuIl0sImNoYXIiOiJcdWQ4M2RcdWRjMzEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxtb3VzZTp7a2V5d29yZHM6WyJhbmltYWwiLCJuYXR1cmUiLCJjaGVlc2Vfd2VkZ2UiLCJyb2RlbnQiXSwiY2hhciI6Ilx1ZDgzZFx1ZGMyZCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LGhhbXN0ZXI6e2tleXdvcmRzOlsiYW5pbWFsIiwibmF0dXJlIl0sImNoYXIiOiJcdWQ4M2RcdWRjMzkiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxyYWJiaXQ6e2tleXdvcmRzOlsiYW5pbWFsIiwibmF0dXJlIiwicGV0Iiwic3ByaW5nIiwibWFnaWMiLCJidW5ueSJdLCJjaGFyIjoiXHVkODNkXHVkYzMwIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sZm94X2ZhY2U6e2tleXdvcmRzOlsiYW5pbWFsIiwibmF0dXJlIiwiZmFjZSJdLCJjaGFyIjoiXHVkODNlXHVkZDhhIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sYmVhcjp7a2V5d29yZHM6WyJhbmltYWwiLCJuYXR1cmUiLCJ3aWxkIl0sImNoYXIiOiJcdWQ4M2RcdWRjM2IiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxwYW5kYV9mYWNlOntrZXl3b3JkczpbImFuaW1hbCIsIm5hdHVyZSIsInBhbmRhIl0sImNoYXIiOiJcdWQ4M2RcdWRjM2MiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxrb2FsYTp7a2V5d29yZHM6WyJhbmltYWwiLCJuYXR1cmUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGMyOCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LHRpZ2VyOntrZXl3b3JkczpbImFuaW1hbCIsImNhdCIsImRhbmdlciIsIndpbGQiLCJuYXR1cmUiLCJyb2FyIl0sImNoYXIiOiJcdWQ4M2RcdWRjMmYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxsaW9uOntrZXl3b3JkczpbImFuaW1hbCIsIm5hdHVyZSJdLCJjaGFyIjoiXHVkODNlXHVkZDgxIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sY293OntrZXl3b3JkczpbImJlZWYiLCJveCIsImFuaW1hbCIsIm5hdHVyZSIsIm1vbyIsIm1pbGsiXSwiY2hhciI6Ilx1ZDgzZFx1ZGMyZSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LHBpZzp7a2V5d29yZHM6WyJhbmltYWwiLCJvaW5rIiwibmF0dXJlIl0sImNoYXIiOiJcdWQ4M2RcdWRjMzciLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxwaWdfbm9zZTp7a2V5d29yZHM6WyJhbmltYWwiLCJvaW5rIl0sImNoYXIiOiJcdWQ4M2RcdWRjM2QiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxmcm9nOntrZXl3b3JkczpbImFuaW1hbCIsIm5hdHVyZSIsImNyb2FrIiwidG9hZCJdLCJjaGFyIjoiXHVkODNkXHVkYzM4IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sc3F1aWQ6e2tleXdvcmRzOlsiYW5pbWFsIiwibmF0dXJlIiwib2NlYW4iLCJzZWEiXSwiY2hhciI6Ilx1ZDgzZVx1ZGQ5MSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LG9jdG9wdXM6e2tleXdvcmRzOlsiYW5pbWFsIiwiY3JlYXR1cmUiLCJvY2VhbiIsInNlYSIsIm5hdHVyZSIsImJlYWNoIl0sImNoYXIiOiJcdWQ4M2RcdWRjMTkiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxzaHJpbXA6e2tleXdvcmRzOlsiYW5pbWFsIiwib2NlYW4iLCJuYXR1cmUiLCJzZWFmb29kIl0sImNoYXIiOiJcdWQ4M2VcdWRkOTAiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxtb25rZXlfZmFjZTp7a2V5d29yZHM6WyJhbmltYWwiLCJuYXR1cmUiLCJjaXJjdXMiXSwiY2hhciI6Ilx1ZDgzZFx1ZGMzNSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LGdvcmlsbGE6e2tleXdvcmRzOlsiYW5pbWFsIiwibmF0dXJlIiwiY2lyY3VzIl0sImNoYXIiOiJcdWQ4M2VcdWRkOGQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxzZWVfbm9fZXZpbDp7a2V5d29yZHM6WyJtb25rZXkiLCJhbmltYWwiLCJuYXR1cmUiLCJoYWhhIl0sImNoYXIiOiJcdWQ4M2RcdWRlNDgiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxoZWFyX25vX2V2aWw6e2tleXdvcmRzOlsiYW5pbWFsIiwibW9ua2V5IiwibmF0dXJlIl0sImNoYXIiOiJcdWQ4M2RcdWRlNDkiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxzcGVha19ub19ldmlsOntrZXl3b3JkczpbIm1vbmtleSIsImFuaW1hbCIsIm5hdHVyZSIsIm9tZyJdLCJjaGFyIjoiXHVkODNkXHVkZTRhIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sbW9ua2V5OntrZXl3b3JkczpbImFuaW1hbCIsIm5hdHVyZSIsImJhbmFuYSIsImNpcmN1cyJdLCJjaGFyIjoiXHVkODNkXHVkYzEyIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sY2hpY2tlbjp7a2V5d29yZHM6WyJhbmltYWwiLCJjbHVjayIsIm5hdHVyZSIsImJpcmQiXSwiY2hhciI6Ilx1ZDgzZFx1ZGMxNCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LHBlbmd1aW46e2tleXdvcmRzOlsiYW5pbWFsIiwibmF0dXJlIl0sImNoYXIiOiJcdWQ4M2RcdWRjMjciLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxiaXJkOntrZXl3b3JkczpbImFuaW1hbCIsIm5hdHVyZSIsImZseSIsInR3ZWV0Iiwic3ByaW5nIl0sImNoYXIiOiJcdWQ4M2RcdWRjMjYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxiYWJ5X2NoaWNrOntrZXl3b3JkczpbImFuaW1hbCIsImNoaWNrZW4iLCJiaXJkIl0sImNoYXIiOiJcdWQ4M2RcdWRjMjQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxoYXRjaGluZ19jaGljazp7a2V5d29yZHM6WyJhbmltYWwiLCJjaGlja2VuIiwiZWdnIiwiYm9ybiIsImJhYnkiLCJiaXJkIl0sImNoYXIiOiJcdWQ4M2RcdWRjMjMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxoYXRjaGVkX2NoaWNrOntrZXl3b3JkczpbImFuaW1hbCIsImNoaWNrZW4iLCJiYWJ5IiwiYmlyZCJdLCJjaGFyIjoiXHVkODNkXHVkYzI1IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sZHVjazp7a2V5d29yZHM6WyJhbmltYWwiLCJuYXR1cmUiLCJiaXJkIiwibWFsbGFyZCJdLCJjaGFyIjoiXHVkODNlXHVkZDg2IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sZWFnbGU6e2tleXdvcmRzOlsiYW5pbWFsIiwibmF0dXJlIiwiYmlyZCJdLCJjaGFyIjoiXHVkODNlXHVkZDg1IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sb3dsOntrZXl3b3JkczpbImFuaW1hbCIsIm5hdHVyZSIsImJpcmQiLCJob290Il0sImNoYXIiOiJcdWQ4M2VcdWRkODkiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxiYXQ6e2tleXdvcmRzOlsiYW5pbWFsIiwibmF0dXJlIiwiYmxpbmQiLCJ2YW1waXJlIl0sImNoYXIiOiJcdWQ4M2VcdWRkODciLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSx3b2xmOntrZXl3b3JkczpbImFuaW1hbCIsIm5hdHVyZSIsIndpbGQiXSwiY2hhciI6Ilx1ZDgzZFx1ZGMzYSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LGJvYXI6e2tleXdvcmRzOlsiYW5pbWFsIiwibmF0dXJlIl0sImNoYXIiOiJcdWQ4M2RcdWRjMTciLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxob3JzZTp7a2V5d29yZHM6WyJhbmltYWwiLCJicm93biIsIm5hdHVyZSJdLCJjaGFyIjoiXHVkODNkXHVkYzM0IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sdW5pY29ybjp7a2V5d29yZHM6WyJhbmltYWwiLCJuYXR1cmUiLCJteXN0aWNhbCJdLCJjaGFyIjoiXHVkODNlXHVkZDg0IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0saG9uZXliZWU6e2tleXdvcmRzOlsiYW5pbWFsIiwiaW5zZWN0IiwibmF0dXJlIiwiYnVnIiwic3ByaW5nIiwiaG9uZXkiXSwiY2hhciI6Ilx1ZDgzZFx1ZGMxZCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LGJ1Zzp7a2V5d29yZHM6WyJhbmltYWwiLCJpbnNlY3QiLCJuYXR1cmUiLCJ3b3JtIl0sImNoYXIiOiJcdWQ4M2RcdWRjMWIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxidXR0ZXJmbHk6e2tleXdvcmRzOlsiYW5pbWFsIiwiaW5zZWN0IiwibmF0dXJlIiwiY2F0ZXJwaWxsYXIiXSwiY2hhciI6Ilx1ZDgzZVx1ZGQ4YiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LHNuYWlsOntrZXl3b3JkczpbInNsb3ciLCJhbmltYWwiLCJzaGVsbCJdLCJjaGFyIjoiXHVkODNkXHVkYzBjIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sYmVldGxlOntrZXl3b3JkczpbImFuaW1hbCIsImluc2VjdCIsIm5hdHVyZSIsImxhZHlidWciXSwiY2hhciI6Ilx1ZDgzZFx1ZGMxZSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LGFudDp7a2V5d29yZHM6WyJhbmltYWwiLCJpbnNlY3QiLCJuYXR1cmUiLCJidWciXSwiY2hhciI6Ilx1ZDgzZFx1ZGMxYyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LGdyYXNzaG9wcGVyOntrZXl3b3JkczpbImFuaW1hbCIsImNyaWNrZXQiLCJjaGlycCJdLCJjaGFyIjoiXHVkODNlXHVkZDk3IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sc3BpZGVyOntrZXl3b3JkczpbImFuaW1hbCIsImFyYWNobmlkIl0sImNoYXIiOiJcdWQ4M2RcdWRkNzciLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxzY29ycGlvbjp7a2V5d29yZHM6WyJhbmltYWwiLCJhcmFjaG5pZCJdLCJjaGFyIjoiXHVkODNlXHVkZDgyIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sY3JhYjp7a2V5d29yZHM6WyJhbmltYWwiLCJjcnVzdGFjZWFuIl0sImNoYXIiOiJcdWQ4M2VcdWRkODAiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxzbmFrZTp7a2V5d29yZHM6WyJhbmltYWwiLCJldmlsIiwibmF0dXJlIiwiaGlzcyIsInB5dGhvbiJdLCJjaGFyIjoiXHVkODNkXHVkYzBkIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sbGl6YXJkOntrZXl3b3JkczpbImFuaW1hbCIsIm5hdHVyZSIsInJlcHRpbGUiXSwiY2hhciI6Ilx1ZDgzZVx1ZGQ4ZSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LCJ0LXJleCI6e2tleXdvcmRzOlsiYW5pbWFsIiwibmF0dXJlIiwiZGlub3NhdXIiLCJ0eXJhbm5vc2F1cnVzIiwiZXh0aW5jdCJdLCJjaGFyIjoiXHVkODNlXHVkZDk2IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sc2F1cm9wb2Q6e2tleXdvcmRzOlsiYW5pbWFsIiwibmF0dXJlIiwiZGlub3NhdXIiLCJicmFjaGlvc2F1cnVzIiwiYnJvbnRvc2F1cnVzIiwiZGlwbG9kb2N1cyIsImV4dGluY3QiXSwiY2hhciI6Ilx1ZDgzZVx1ZGQ5NSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LHR1cnRsZTp7a2V5d29yZHM6WyJhbmltYWwiLCJzbG93IiwibmF0dXJlIiwidG9ydG9pc2UiXSwiY2hhciI6Ilx1ZDgzZFx1ZGMyMiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LHRyb3BpY2FsX2Zpc2g6e2tleXdvcmRzOlsiYW5pbWFsIiwic3dpbSIsIm9jZWFuIiwiYmVhY2giLCJuZW1vIl0sImNoYXIiOiJcdWQ4M2RcdWRjMjAiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxmaXNoOntrZXl3b3JkczpbImFuaW1hbCIsImZvb2QiLCJuYXR1cmUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGMxZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LGJsb3dmaXNoOntrZXl3b3JkczpbImFuaW1hbCIsIm5hdHVyZSIsImZvb2QiLCJzZWEiLCJvY2VhbiJdLCJjaGFyIjoiXHVkODNkXHVkYzIxIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sZG9scGhpbjp7a2V5d29yZHM6WyJhbmltYWwiLCJuYXR1cmUiLCJmaXNoIiwic2VhIiwib2NlYW4iLCJmbGlwcGVyIiwiZmlucyIsImJlYWNoIl0sImNoYXIiOiJcdWQ4M2RcdWRjMmMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxzaGFyazp7a2V5d29yZHM6WyJhbmltYWwiLCJuYXR1cmUiLCJmaXNoIiwic2VhIiwib2NlYW4iLCJqYXdzIiwiZmlucyIsImJlYWNoIl0sImNoYXIiOiJcdWQ4M2VcdWRkODgiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSx3aGFsZTp7a2V5d29yZHM6WyJhbmltYWwiLCJuYXR1cmUiLCJzZWEiLCJvY2VhbiJdLCJjaGFyIjoiXHVkODNkXHVkYzMzIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sd2hhbGUyOntrZXl3b3JkczpbImFuaW1hbCIsIm5hdHVyZSIsInNlYSIsIm9jZWFuIl0sImNoYXIiOiJcdWQ4M2RcdWRjMGIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxjcm9jb2RpbGU6e2tleXdvcmRzOlsiYW5pbWFsIiwibmF0dXJlIiwicmVwdGlsZSIsImxpemFyZCIsImFsbGlnYXRvciJdLCJjaGFyIjoiXHVkODNkXHVkYzBhIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sbGVvcGFyZDp7a2V5d29yZHM6WyJhbmltYWwiLCJuYXR1cmUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGMwNiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LHplYnJhOntrZXl3b3JkczpbImFuaW1hbCIsIm5hdHVyZSIsInN0cmlwZXMiLCJzYWZhcmkiXSwiY2hhciI6Ilx1ZDgzZVx1ZGQ5MyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LHRpZ2VyMjp7a2V5d29yZHM6WyJhbmltYWwiLCJuYXR1cmUiLCJyb2FyIl0sImNoYXIiOiJcdWQ4M2RcdWRjMDUiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSx3YXRlcl9idWZmYWxvOntrZXl3b3JkczpbImFuaW1hbCIsIm5hdHVyZSIsIm94IiwiY293Il0sImNoYXIiOiJcdWQ4M2RcdWRjMDMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxveDp7a2V5d29yZHM6WyJhbmltYWwiLCJjb3ciLCJiZWVmIl0sImNoYXIiOiJcdWQ4M2RcdWRjMDIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxjb3cyOntrZXl3b3JkczpbImJlZWYiLCJveCIsImFuaW1hbCIsIm5hdHVyZSIsIm1vbyIsIm1pbGsiXSwiY2hhciI6Ilx1ZDgzZFx1ZGMwNCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LGRlZXI6e2tleXdvcmRzOlsiYW5pbWFsIiwibmF0dXJlIiwiaG9ybnMiLCJ2ZW5pc29uIl0sImNoYXIiOiJcdWQ4M2VcdWRkOGMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxkcm9tZWRhcnlfY2FtZWw6e2tleXdvcmRzOlsiYW5pbWFsIiwiaG90IiwiZGVzZXJ0IiwiaHVtcCJdLCJjaGFyIjoiXHVkODNkXHVkYzJhIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sY2FtZWw6e2tleXdvcmRzOlsiYW5pbWFsIiwibmF0dXJlIiwiaG90IiwiZGVzZXJ0IiwiaHVtcCJdLCJjaGFyIjoiXHVkODNkXHVkYzJiIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sZ2lyYWZmZTp7a2V5d29yZHM6WyJhbmltYWwiLCJuYXR1cmUiLCJzcG90cyIsInNhZmFyaSJdLCJjaGFyIjoiXHVkODNlXHVkZDkyIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sZWxlcGhhbnQ6e2tleXdvcmRzOlsiYW5pbWFsIiwibmF0dXJlIiwibm9zZSIsInRoIiwiY2lyY3VzIl0sImNoYXIiOiJcdWQ4M2RcdWRjMTgiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxyaGlub2Nlcm9zOntrZXl3b3JkczpbImFuaW1hbCIsIm5hdHVyZSIsImhvcm4iXSwiY2hhciI6Ilx1ZDgzZVx1ZGQ4ZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LGdvYXQ6e2tleXdvcmRzOlsiYW5pbWFsIiwibmF0dXJlIl0sImNoYXIiOiJcdWQ4M2RcdWRjMTAiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxyYW06e2tleXdvcmRzOlsiYW5pbWFsIiwic2hlZXAiLCJuYXR1cmUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGMwZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LHNoZWVwOntrZXl3b3JkczpbImFuaW1hbCIsIm5hdHVyZSIsIndvb2wiLCJzaGlwaXQiXSwiY2hhciI6Ilx1ZDgzZFx1ZGMxMSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LHJhY2Vob3JzZTp7a2V5d29yZHM6WyJhbmltYWwiLCJnYW1ibGUiLCJsdWNrIl0sImNoYXIiOiJcdWQ4M2RcdWRjMGUiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxwaWcyOntrZXl3b3JkczpbImFuaW1hbCIsIm5hdHVyZSJdLCJjaGFyIjoiXHVkODNkXHVkYzE2IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0scmF0OntrZXl3b3JkczpbImFuaW1hbCIsIm1vdXNlIiwicm9kZW50Il0sImNoYXIiOiJcdWQ4M2RcdWRjMDAiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxtb3VzZTI6e2tleXdvcmRzOlsiYW5pbWFsIiwibmF0dXJlIiwicm9kZW50Il0sImNoYXIiOiJcdWQ4M2RcdWRjMDEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxyb29zdGVyOntrZXl3b3JkczpbImFuaW1hbCIsIm5hdHVyZSIsImNoaWNrZW4iXSwiY2hhciI6Ilx1ZDgzZFx1ZGMxMyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LHR1cmtleTp7a2V5d29yZHM6WyJhbmltYWwiLCJiaXJkIl0sImNoYXIiOiJcdWQ4M2VcdWRkODMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxkb3ZlOntrZXl3b3JkczpbImFuaW1hbCIsImJpcmQiXSwiY2hhciI6Ilx1ZDgzZFx1ZGQ0YSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LGRvZzI6e2tleXdvcmRzOlsiYW5pbWFsIiwibmF0dXJlIiwiZnJpZW5kIiwiZG9nZSIsInBldCIsImZhaXRoZnVsIl0sImNoYXIiOiJcdWQ4M2RcdWRjMTUiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxwb29kbGU6e2tleXdvcmRzOlsiZG9nIiwiYW5pbWFsIiwiMTAxIiwibmF0dXJlIiwicGV0Il0sImNoYXIiOiJcdWQ4M2RcdWRjMjkiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxjYXQyOntrZXl3b3JkczpbImFuaW1hbCIsIm1lb3ciLCJwZXQiLCJjYXRzIl0sImNoYXIiOiJcdWQ4M2RcdWRjMDgiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxyYWJiaXQyOntrZXl3b3JkczpbImFuaW1hbCIsIm5hdHVyZSIsInBldCIsIm1hZ2ljIiwic3ByaW5nIl0sImNoYXIiOiJcdWQ4M2RcdWRjMDciLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxjaGlwbXVuazp7a2V5d29yZHM6WyJhbmltYWwiLCJuYXR1cmUiLCJyb2RlbnQiLCJzcXVpcnJlbCJdLCJjaGFyIjoiXHVkODNkXHVkYzNmIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0saGVkZ2Vob2c6e2tleXdvcmRzOlsiYW5pbWFsIiwibmF0dXJlIiwic3BpbnkiXSwiY2hhciI6Ilx1ZDgzZVx1ZGQ5NCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LHBhd19wcmludHM6e2tleXdvcmRzOlsiYW5pbWFsIiwidHJhY2tpbmciLCJmb290cHJpbnRzIiwiZG9nIiwiY2F0IiwicGV0IiwiZmVldCJdLCJjaGFyIjoiXHVkODNkXHVkYzNlIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sZHJhZ29uOntrZXl3b3JkczpbImFuaW1hbCIsIm15dGgiLCJuYXR1cmUiLCJjaGluZXNlIiwiZ3JlZW4iXSwiY2hhciI6Ilx1ZDgzZFx1ZGMwOSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LGRyYWdvbl9mYWNlOntrZXl3b3JkczpbImFuaW1hbCIsIm15dGgiLCJuYXR1cmUiLCJjaGluZXNlIiwiZ3JlZW4iXSwiY2hhciI6Ilx1ZDgzZFx1ZGMzMiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LGNhY3R1czp7a2V5d29yZHM6WyJ2ZWdldGFibGUiLCJwbGFudCIsIm5hdHVyZSJdLCJjaGFyIjoiXHVkODNjXHVkZjM1IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sY2hyaXN0bWFzX3RyZWU6e2tleXdvcmRzOlsiZmVzdGl2YWwiLCJ2YWNhdGlvbiIsImRlY2VtYmVyIiwieG1hcyIsImNlbGVicmF0aW9uIl0sImNoYXIiOiJcdWQ4M2NcdWRmODQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxldmVyZ3JlZW5fdHJlZTp7a2V5d29yZHM6WyJwbGFudCIsIm5hdHVyZSJdLCJjaGFyIjoiXHVkODNjXHVkZjMyIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sZGVjaWR1b3VzX3RyZWU6e2tleXdvcmRzOlsicGxhbnQiLCJuYXR1cmUiXSwiY2hhciI6Ilx1ZDgzY1x1ZGYzMyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LHBhbG1fdHJlZTp7a2V5d29yZHM6WyJwbGFudCIsInZlZ2V0YWJsZSIsIm5hdHVyZSIsInN1bW1lciIsImJlYWNoIiwibW9qaXRvIiwidHJvcGljYWwiXSwiY2hhciI6Ilx1ZDgzY1x1ZGYzNCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LHNlZWRsaW5nOntrZXl3b3JkczpbInBsYW50IiwibmF0dXJlIiwiZ3Jhc3MiLCJsYXduIiwic3ByaW5nIl0sImNoYXIiOiJcdWQ4M2NcdWRmMzEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxoZXJiOntrZXl3b3JkczpbInZlZ2V0YWJsZSIsInBsYW50IiwibWVkaWNpbmUiLCJ3ZWVkIiwiZ3Jhc3MiLCJsYXduIl0sImNoYXIiOiJcdWQ4M2NcdWRmM2YiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxzaGFtcm9jazp7a2V5d29yZHM6WyJ2ZWdldGFibGUiLCJwbGFudCIsIm5hdHVyZSIsImlyaXNoIiwiY2xvdmVyIl0sImNoYXIiOiJcdTI2MTgiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxmb3VyX2xlYWZfY2xvdmVyOntrZXl3b3JkczpbInZlZ2V0YWJsZSIsInBsYW50IiwibmF0dXJlIiwibHVja3kiLCJpcmlzaCJdLCJjaGFyIjoiXHVkODNjXHVkZjQwIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sYmFtYm9vOntrZXl3b3JkczpbInBsYW50IiwibmF0dXJlIiwidmVnZXRhYmxlIiwicGFuZGEiLCJwaW5lX2RlY29yYXRpb24iXSwiY2hhciI6Ilx1ZDgzY1x1ZGY4ZCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LHRhbmFiYXRhX3RyZWU6e2tleXdvcmRzOlsicGxhbnQiLCJuYXR1cmUiLCJicmFuY2giLCJzdW1tZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGY4YiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LGxlYXZlczp7a2V5d29yZHM6WyJuYXR1cmUiLCJwbGFudCIsInRyZWUiLCJ2ZWdldGFibGUiLCJncmFzcyIsImxhd24iLCJzcHJpbmciXSwiY2hhciI6Ilx1ZDgzY1x1ZGY0MyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LGZhbGxlbl9sZWFmOntrZXl3b3JkczpbIm5hdHVyZSIsInBsYW50IiwidmVnZXRhYmxlIiwibGVhdmVzIl0sImNoYXIiOiJcdWQ4M2NcdWRmNDIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxtYXBsZV9sZWFmOntrZXl3b3JkczpbIm5hdHVyZSIsInBsYW50IiwidmVnZXRhYmxlIiwiY2EiLCJmYWxsIl0sImNoYXIiOiJcdWQ4M2NcdWRmNDEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxlYXJfb2ZfcmljZTp7a2V5d29yZHM6WyJuYXR1cmUiLCJwbGFudCJdLCJjaGFyIjoiXHVkODNjXHVkZjNlIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0saGliaXNjdXM6e2tleXdvcmRzOlsicGxhbnQiLCJ2ZWdldGFibGUiLCJmbG93ZXJzIiwiYmVhY2giXSwiY2hhciI6Ilx1ZDgzY1x1ZGYzYSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LHN1bmZsb3dlcjp7a2V5d29yZHM6WyJuYXR1cmUiLCJwbGFudCIsImZhbGwiXSwiY2hhciI6Ilx1ZDgzY1x1ZGYzYiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LHJvc2U6e2tleXdvcmRzOlsiZmxvd2VycyIsInZhbGVudGluZXMiLCJsb3ZlIiwic3ByaW5nIl0sImNoYXIiOiJcdWQ4M2NcdWRmMzkiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSx3aWx0ZWRfZmxvd2VyOntrZXl3b3JkczpbInBsYW50IiwibmF0dXJlIiwiZmxvd2VyIl0sImNoYXIiOiJcdWQ4M2VcdWRkNDAiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSx0dWxpcDp7a2V5d29yZHM6WyJmbG93ZXJzIiwicGxhbnQiLCJuYXR1cmUiLCJzdW1tZXIiLCJzcHJpbmciXSwiY2hhciI6Ilx1ZDgzY1x1ZGYzNyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LGJsb3Nzb206e2tleXdvcmRzOlsibmF0dXJlIiwiZmxvd2VycyIsInllbGxvdyJdLCJjaGFyIjoiXHVkODNjXHVkZjNjIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sY2hlcnJ5X2Jsb3Nzb206e2tleXdvcmRzOlsibmF0dXJlIiwicGxhbnQiLCJzcHJpbmciLCJmbG93ZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGYzOCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LGJvdXF1ZXQ6e2tleXdvcmRzOlsiZmxvd2VycyIsIm5hdHVyZSIsInNwcmluZyJdLCJjaGFyIjoiXHVkODNkXHVkYzkwIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sbXVzaHJvb206e2tleXdvcmRzOlsicGxhbnQiLCJ2ZWdldGFibGUiXSwiY2hhciI6Ilx1ZDgzY1x1ZGY0NCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LGNoZXN0bnV0OntrZXl3b3JkczpbImZvb2QiLCJzcXVpcnJlbCJdLCJjaGFyIjoiXHVkODNjXHVkZjMwIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0samFja19vX2xhbnRlcm46e2tleXdvcmRzOlsiaGFsbG93ZWVuIiwibGlnaHQiLCJwdW1wa2luIiwiY3JlZXB5IiwiZmFsbCJdLCJjaGFyIjoiXHVkODNjXHVkZjgzIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sc2hlbGw6e2tleXdvcmRzOlsibmF0dXJlIiwic2VhIiwiYmVhY2giXSwiY2hhciI6Ilx1ZDgzZFx1ZGMxYSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LHNwaWRlcl93ZWI6e2tleXdvcmRzOlsiYW5pbWFsIiwiaW5zZWN0IiwiYXJhY2huaWQiLCJzaWxrIl0sImNoYXIiOiJcdWQ4M2RcdWRkNzgiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxlYXJ0aF9hbWVyaWNhczp7a2V5d29yZHM6WyJnbG9iZSIsIndvcmxkIiwiVVNBIiwiaW50ZXJuYXRpb25hbCJdLCJjaGFyIjoiXHVkODNjXHVkZjBlIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sZWFydGhfYWZyaWNhOntrZXl3b3JkczpbImdsb2JlIiwid29ybGQiLCJpbnRlcm5hdGlvbmFsIl0sImNoYXIiOiJcdWQ4M2NcdWRmMGQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxlYXJ0aF9hc2lhOntrZXl3b3JkczpbImdsb2JlIiwid29ybGQiLCJlYXN0IiwiaW50ZXJuYXRpb25hbCJdLCJjaGFyIjoiXHVkODNjXHVkZjBmIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sZnVsbF9tb29uOntrZXl3b3JkczpbIm5hdHVyZSIsInllbGxvdyIsInR3aWxpZ2h0IiwicGxhbmV0Iiwic3BhY2UiLCJuaWdodCIsImV2ZW5pbmciLCJzbGVlcCJdLCJjaGFyIjoiXHVkODNjXHVkZjE1IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sd2FuaW5nX2dpYmJvdXNfbW9vbjp7a2V5d29yZHM6WyJuYXR1cmUiLCJ0d2lsaWdodCIsInBsYW5ldCIsInNwYWNlIiwibmlnaHQiLCJldmVuaW5nIiwic2xlZXAiLCJ3YXhpbmdfZ2liYm91c19tb29uIl0sImNoYXIiOiJcdWQ4M2NcdWRmMTYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxsYXN0X3F1YXJ0ZXJfbW9vbjp7a2V5d29yZHM6WyJuYXR1cmUiLCJ0d2lsaWdodCIsInBsYW5ldCIsInNwYWNlIiwibmlnaHQiLCJldmVuaW5nIiwic2xlZXAiXSwiY2hhciI6Ilx1ZDgzY1x1ZGYxNyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LHdhbmluZ19jcmVzY2VudF9tb29uOntrZXl3b3JkczpbIm5hdHVyZSIsInR3aWxpZ2h0IiwicGxhbmV0Iiwic3BhY2UiLCJuaWdodCIsImV2ZW5pbmciLCJzbGVlcCJdLCJjaGFyIjoiXHVkODNjXHVkZjE4IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sbmV3X21vb246e2tleXdvcmRzOlsibmF0dXJlIiwidHdpbGlnaHQiLCJwbGFuZXQiLCJzcGFjZSIsIm5pZ2h0IiwiZXZlbmluZyIsInNsZWVwIl0sImNoYXIiOiJcdWQ4M2NcdWRmMTEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSx3YXhpbmdfY3Jlc2NlbnRfbW9vbjp7a2V5d29yZHM6WyJuYXR1cmUiLCJ0d2lsaWdodCIsInBsYW5ldCIsInNwYWNlIiwibmlnaHQiLCJldmVuaW5nIiwic2xlZXAiXSwiY2hhciI6Ilx1ZDgzY1x1ZGYxMiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LGZpcnN0X3F1YXJ0ZXJfbW9vbjp7a2V5d29yZHM6WyJuYXR1cmUiLCJ0d2lsaWdodCIsInBsYW5ldCIsInNwYWNlIiwibmlnaHQiLCJldmVuaW5nIiwic2xlZXAiXSwiY2hhciI6Ilx1ZDgzY1x1ZGYxMyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LHdheGluZ19naWJib3VzX21vb246e2tleXdvcmRzOlsibmF0dXJlIiwibmlnaHQiLCJza3kiLCJncmF5IiwidHdpbGlnaHQiLCJwbGFuZXQiLCJzcGFjZSIsImV2ZW5pbmciLCJzbGVlcCJdLCJjaGFyIjoiXHVkODNjXHVkZjE0IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sbmV3X21vb25fd2l0aF9mYWNlOntrZXl3b3JkczpbIm5hdHVyZSIsInR3aWxpZ2h0IiwicGxhbmV0Iiwic3BhY2UiLCJuaWdodCIsImV2ZW5pbmciLCJzbGVlcCJdLCJjaGFyIjoiXHVkODNjXHVkZjFhIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sZnVsbF9tb29uX3dpdGhfZmFjZTp7a2V5d29yZHM6WyJuYXR1cmUiLCJ0d2lsaWdodCIsInBsYW5ldCIsInNwYWNlIiwibmlnaHQiLCJldmVuaW5nIiwic2xlZXAiXSwiY2hhciI6Ilx1ZDgzY1x1ZGYxZCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LGZpcnN0X3F1YXJ0ZXJfbW9vbl93aXRoX2ZhY2U6e2tleXdvcmRzOlsibmF0dXJlIiwidHdpbGlnaHQiLCJwbGFuZXQiLCJzcGFjZSIsIm5pZ2h0IiwiZXZlbmluZyIsInNsZWVwIl0sImNoYXIiOiJcdWQ4M2NcdWRmMWIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxsYXN0X3F1YXJ0ZXJfbW9vbl93aXRoX2ZhY2U6e2tleXdvcmRzOlsibmF0dXJlIiwidHdpbGlnaHQiLCJwbGFuZXQiLCJzcGFjZSIsIm5pZ2h0IiwiZXZlbmluZyIsInNsZWVwIl0sImNoYXIiOiJcdWQ4M2NcdWRmMWMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxzdW5fd2l0aF9mYWNlOntrZXl3b3JkczpbIm5hdHVyZSIsIm1vcm5pbmciLCJza3kiXSwiY2hhciI6Ilx1ZDgzY1x1ZGYxZSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LGNyZXNjZW50X21vb246e2tleXdvcmRzOlsibmlnaHQiLCJzbGVlcCIsInNreSIsImV2ZW5pbmciLCJtYWdpYyJdLCJjaGFyIjoiXHVkODNjXHVkZjE5IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sc3Rhcjp7a2V5d29yZHM6WyJuaWdodCIsInllbGxvdyJdLCJjaGFyIjoiXHUyYjUwIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sc3RhcjI6e2tleXdvcmRzOlsibmlnaHQiLCJzcGFya2xlIiwiYXdlc29tZSIsImdvb2QiLCJtYWdpYyJdLCJjaGFyIjoiXHVkODNjXHVkZjFmIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sZGl6enk6e2tleXdvcmRzOlsic3RhciIsInNwYXJrbGUiLCJzaG9vdCIsIm1hZ2ljIl0sImNoYXIiOiJcdWQ4M2RcdWRjYWIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxzcGFya2xlczp7a2V5d29yZHM6WyJzdGFycyIsInNoaW5lIiwic2hpbnkiLCJjb29sIiwiYXdlc29tZSIsImdvb2QiLCJtYWdpYyJdLCJjaGFyIjoiXHUyNzI4IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sY29tZXQ6e2tleXdvcmRzOlsic3BhY2UiXSwiY2hhciI6Ilx1MjYwNCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LHN1bm55OntrZXl3b3JkczpbIndlYXRoZXIiLCJuYXR1cmUiLCJicmlnaHRuZXNzIiwic3VtbWVyIiwiYmVhY2giLCJzcHJpbmciXSwiY2hhciI6Ilx1MjYwMFx1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LHN1bl9iZWhpbmRfc21hbGxfY2xvdWQ6e2tleXdvcmRzOlsid2VhdGhlciJdLCJjaGFyIjoiXHVkODNjXHVkZjI0IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0scGFydGx5X3N1bm55OntrZXl3b3JkczpbIndlYXRoZXIiLCJuYXR1cmUiLCJjbG91ZHkiLCJtb3JuaW5nIiwiZmFsbCIsInNwcmluZyJdLCJjaGFyIjoiXHUyNmM1IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sc3VuX2JlaGluZF9sYXJnZV9jbG91ZDp7a2V5d29yZHM6WyJ3ZWF0aGVyIl0sImNoYXIiOiJcdWQ4M2NcdWRmMjUiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxzdW5fYmVoaW5kX3JhaW5fY2xvdWQ6e2tleXdvcmRzOlsid2VhdGhlciJdLCJjaGFyIjoiXHVkODNjXHVkZjI2IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sY2xvdWQ6e2tleXdvcmRzOlsid2VhdGhlciIsInNreSJdLCJjaGFyIjoiXHUyNjAxXHVmZTBmIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sY2xvdWRfd2l0aF9yYWluOntrZXl3b3JkczpbIndlYXRoZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGYyNyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LGNsb3VkX3dpdGhfbGlnaHRuaW5nX2FuZF9yYWluOntrZXl3b3JkczpbIndlYXRoZXIiLCJsaWdodG5pbmciXSwiY2hhciI6Ilx1MjZjOCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LGNsb3VkX3dpdGhfbGlnaHRuaW5nOntrZXl3b3JkczpbIndlYXRoZXIiLCJ0aHVuZGVyIl0sImNoYXIiOiJcdWQ4M2NcdWRmMjkiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSx6YXA6e2tleXdvcmRzOlsidGh1bmRlciIsIndlYXRoZXIiLCJsaWdodG5pbmcgYm9sdCIsImZhc3QiXSwiY2hhciI6Ilx1MjZhMSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LGZpcmU6e2tleXdvcmRzOlsiaG90IiwiY29vayIsImZsYW1lIl0sImNoYXIiOiJcdWQ4M2RcdWRkMjUiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxib29tOntrZXl3b3JkczpbImJvbWIiLCJleHBsb2RlIiwiZXhwbG9zaW9uIiwiY29sbGlzaW9uIiwiYmxvd24iXSwiY2hhciI6Ilx1ZDgzZFx1ZGNhNSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LHNub3dmbGFrZTp7a2V5d29yZHM6WyJ3aW50ZXIiLCJzZWFzb24iLCJjb2xkIiwid2VhdGhlciIsImNocmlzdG1hcyIsInhtYXMiXSwiY2hhciI6Ilx1Mjc0NFx1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LGNsb3VkX3dpdGhfc25vdzp7a2V5d29yZHM6WyJ3ZWF0aGVyIl0sImNoYXIiOiJcdWQ4M2NcdWRmMjgiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxzbm93bWFuOntrZXl3b3JkczpbIndpbnRlciIsInNlYXNvbiIsImNvbGQiLCJ3ZWF0aGVyIiwiY2hyaXN0bWFzIiwieG1hcyIsImZyb3plbiIsIndpdGhvdXRfc25vdyJdLCJjaGFyIjoiXHUyNmM0IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sc25vd21hbl93aXRoX3Nub3c6e2tleXdvcmRzOlsid2ludGVyIiwic2Vhc29uIiwiY29sZCIsIndlYXRoZXIiLCJjaHJpc3RtYXMiLCJ4bWFzIiwiZnJvemVuIl0sImNoYXIiOiJcdTI2MDMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSx3aW5kX2ZhY2U6e2tleXdvcmRzOlsiZ3VzdCIsImFpciJdLCJjaGFyIjoiXHVkODNjXHVkZjJjIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sZGFzaDp7a2V5d29yZHM6WyJ3aW5kIiwiYWlyIiwiZmFzdCIsInNob28iLCJmYXJ0Iiwic21va2UiLCJwdWZmIl0sImNoYXIiOiJcdWQ4M2RcdWRjYTgiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSx0b3JuYWRvOntrZXl3b3JkczpbIndlYXRoZXIiLCJjeWNsb25lIiwidHdpc3RlciJdLCJjaGFyIjoiXHVkODNjXHVkZjJhIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sZm9nOntrZXl3b3JkczpbIndlYXRoZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGYyYiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFuaW1hbHNfYW5kX25hdHVyZSJ9LG9wZW5fdW1icmVsbGE6e2tleXdvcmRzOlsid2VhdGhlciIsInNwcmluZyJdLCJjaGFyIjoiXHUyNjAyIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sdW1icmVsbGE6e2tleXdvcmRzOlsicmFpbnkiLCJ3ZWF0aGVyIiwic3ByaW5nIl0sImNoYXIiOiJcdTI2MTQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxkcm9wbGV0OntrZXl3b3JkczpbIndhdGVyIiwiZHJpcCIsImZhdWNldCIsInNwcmluZyJdLCJjaGFyIjoiXHVkODNkXHVkY2E3IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sc3dlYXRfZHJvcHM6e2tleXdvcmRzOlsid2F0ZXIiLCJkcmlwIiwib29wcyJdLCJjaGFyIjoiXHVkODNkXHVkY2E2IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYW5pbWFsc19hbmRfbmF0dXJlIn0sb2NlYW46e2tleXdvcmRzOlsic2VhIiwid2F0ZXIiLCJ3YXZlIiwibmF0dXJlIiwidHN1bmFtaSIsImRpc2FzdGVyIl0sImNoYXIiOiJcdWQ4M2NcdWRmMGEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhbmltYWxzX2FuZF9uYXR1cmUifSxncmVlbl9hcHBsZTp7a2V5d29yZHM6WyJmcnVpdCIsIm5hdHVyZSJdLCJjaGFyIjoiXHVkODNjXHVkZjRmIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZm9vZF9hbmRfZHJpbmsifSxhcHBsZTp7a2V5d29yZHM6WyJmcnVpdCIsIm1hYyIsInNjaG9vbCJdLCJjaGFyIjoiXHVkODNjXHVkZjRlIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZm9vZF9hbmRfZHJpbmsifSxwZWFyOntrZXl3b3JkczpbImZydWl0IiwibmF0dXJlIiwiZm9vZCJdLCJjaGFyIjoiXHVkODNjXHVkZjUwIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZm9vZF9hbmRfZHJpbmsifSx0YW5nZXJpbmU6e2tleXdvcmRzOlsiZm9vZCIsImZydWl0IiwibmF0dXJlIiwib3JhbmdlIl0sImNoYXIiOiJcdWQ4M2NcdWRmNGEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmb29kX2FuZF9kcmluayJ9LGxlbW9uOntrZXl3b3JkczpbImZydWl0IiwibmF0dXJlIl0sImNoYXIiOiJcdWQ4M2NcdWRmNGIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmb29kX2FuZF9kcmluayJ9LGJhbmFuYTp7a2V5d29yZHM6WyJmcnVpdCIsImZvb2QiLCJtb25rZXkiXSwiY2hhciI6Ilx1ZDgzY1x1ZGY0YyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZvb2RfYW5kX2RyaW5rIn0sd2F0ZXJtZWxvbjp7a2V5d29yZHM6WyJmcnVpdCIsImZvb2QiLCJwaWNuaWMiLCJzdW1tZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGY0OSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZvb2RfYW5kX2RyaW5rIn0sZ3JhcGVzOntrZXl3b3JkczpbImZydWl0IiwiZm9vZCIsIndpbmUiXSwiY2hhciI6Ilx1ZDgzY1x1ZGY0NyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZvb2RfYW5kX2RyaW5rIn0sc3RyYXdiZXJyeTp7a2V5d29yZHM6WyJmcnVpdCIsImZvb2QiLCJuYXR1cmUiXSwiY2hhciI6Ilx1ZDgzY1x1ZGY1MyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZvb2RfYW5kX2RyaW5rIn0sbWVsb246e2tleXdvcmRzOlsiZnJ1aXQiLCJuYXR1cmUiLCJmb29kIl0sImNoYXIiOiJcdWQ4M2NcdWRmNDgiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmb29kX2FuZF9kcmluayJ9LGNoZXJyaWVzOntrZXl3b3JkczpbImZvb2QiLCJmcnVpdCJdLCJjaGFyIjoiXHVkODNjXHVkZjUyIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZm9vZF9hbmRfZHJpbmsifSxwZWFjaDp7a2V5d29yZHM6WyJmcnVpdCIsIm5hdHVyZSIsImZvb2QiXSwiY2hhciI6Ilx1ZDgzY1x1ZGY1MSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZvb2RfYW5kX2RyaW5rIn0scGluZWFwcGxlOntrZXl3b3JkczpbImZydWl0IiwibmF0dXJlIiwiZm9vZCJdLCJjaGFyIjoiXHVkODNjXHVkZjRkIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZm9vZF9hbmRfZHJpbmsifSxjb2NvbnV0OntrZXl3b3JkczpbImZydWl0IiwibmF0dXJlIiwiZm9vZCIsInBhbG0iXSwiY2hhciI6Ilx1ZDgzZVx1ZGQ2NSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZvb2RfYW5kX2RyaW5rIn0sa2l3aV9mcnVpdDp7a2V5d29yZHM6WyJmcnVpdCIsImZvb2QiXSwiY2hhciI6Ilx1ZDgzZVx1ZGQ1ZCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZvb2RfYW5kX2RyaW5rIn0sYXZvY2Fkbzp7a2V5d29yZHM6WyJmcnVpdCIsImZvb2QiXSwiY2hhciI6Ilx1ZDgzZVx1ZGQ1MSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZvb2RfYW5kX2RyaW5rIn0sYnJvY2NvbGk6e2tleXdvcmRzOlsiZnJ1aXQiLCJmb29kIiwidmVnZXRhYmxlIl0sImNoYXIiOiJcdWQ4M2VcdWRkNjYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmb29kX2FuZF9kcmluayJ9LHRvbWF0bzp7a2V5d29yZHM6WyJmcnVpdCIsInZlZ2V0YWJsZSIsIm5hdHVyZSIsImZvb2QiXSwiY2hhciI6Ilx1ZDgzY1x1ZGY0NSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZvb2RfYW5kX2RyaW5rIn0sZWdncGxhbnQ6e2tleXdvcmRzOlsidmVnZXRhYmxlIiwibmF0dXJlIiwiZm9vZCIsImF1YmVyZ2luZSJdLCJjaGFyIjoiXHVkODNjXHVkZjQ2IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZm9vZF9hbmRfZHJpbmsifSxjdWN1bWJlcjp7a2V5d29yZHM6WyJmcnVpdCIsImZvb2QiLCJwaWNrbGUiXSwiY2hhciI6Ilx1ZDgzZVx1ZGQ1MiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZvb2RfYW5kX2RyaW5rIn0sY2Fycm90OntrZXl3b3JkczpbInZlZ2V0YWJsZSIsImZvb2QiLCJvcmFuZ2UiXSwiY2hhciI6Ilx1ZDgzZVx1ZGQ1NSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZvb2RfYW5kX2RyaW5rIn0saG90X3BlcHBlcjp7a2V5d29yZHM6WyJmb29kIiwic3BpY3kiLCJjaGlsbGkiLCJjaGlsaSJdLCJjaGFyIjoiXHVkODNjXHVkZjM2IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZm9vZF9hbmRfZHJpbmsifSxwb3RhdG86e2tleXdvcmRzOlsiZm9vZCIsInR1YmVyIiwidmVnYXRhYmxlIiwic3RhcmNoIl0sImNoYXIiOiJcdWQ4M2VcdWRkNTQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmb29kX2FuZF9kcmluayJ9LGNvcm46e2tleXdvcmRzOlsiZm9vZCIsInZlZ2V0YWJsZSIsInBsYW50Il0sImNoYXIiOiJcdWQ4M2NcdWRmM2QiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmb29kX2FuZF9kcmluayJ9LHN3ZWV0X3BvdGF0bzp7a2V5d29yZHM6WyJmb29kIiwibmF0dXJlIl0sImNoYXIiOiJcdWQ4M2NcdWRmNjAiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmb29kX2FuZF9kcmluayJ9LHBlYW51dHM6e2tleXdvcmRzOlsiZm9vZCIsIm51dCJdLCJjaGFyIjoiXHVkODNlXHVkZDVjIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZm9vZF9hbmRfZHJpbmsifSxob25leV9wb3Q6e2tleXdvcmRzOlsiYmVlcyIsInN3ZWV0Iiwia2l0Y2hlbiJdLCJjaGFyIjoiXHVkODNjXHVkZjZmIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZm9vZF9hbmRfZHJpbmsifSxjcm9pc3NhbnQ6e2tleXdvcmRzOlsiZm9vZCIsImJyZWFkIiwiZnJlbmNoIl0sImNoYXIiOiJcdWQ4M2VcdWRkNTAiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmb29kX2FuZF9kcmluayJ9LGJyZWFkOntrZXl3b3JkczpbImZvb2QiLCJ3aGVhdCIsImJyZWFrZmFzdCIsInRvYXN0Il0sImNoYXIiOiJcdWQ4M2NcdWRmNWUiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmb29kX2FuZF9kcmluayJ9LGJhZ3VldHRlX2JyZWFkOntrZXl3b3JkczpbImZvb2QiLCJicmVhZCIsImZyZW5jaCJdLCJjaGFyIjoiXHVkODNlXHVkZDU2IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZm9vZF9hbmRfZHJpbmsifSxwcmV0emVsOntrZXl3b3JkczpbImZvb2QiLCJicmVhZCIsInR3aXN0ZWQiXSwiY2hhciI6Ilx1ZDgzZVx1ZGQ2OCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZvb2RfYW5kX2RyaW5rIn0sY2hlZXNlOntrZXl3b3JkczpbImZvb2QiLCJjaGFkZGVyIl0sImNoYXIiOiJcdWQ4M2VcdWRkYzAiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmb29kX2FuZF9kcmluayJ9LGVnZzp7a2V5d29yZHM6WyJmb29kIiwiY2hpY2tlbiIsImJyZWFrZmFzdCJdLCJjaGFyIjoiXHVkODNlXHVkZDVhIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZm9vZF9hbmRfZHJpbmsifSxiYWNvbjp7a2V5d29yZHM6WyJmb29kIiwiYnJlYWtmYXN0IiwicG9yayIsInBpZyIsIm1lYXQiXSwiY2hhciI6Ilx1ZDgzZVx1ZGQ1MyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZvb2RfYW5kX2RyaW5rIn0sc3RlYWs6e2tleXdvcmRzOlsiZm9vZCIsImNvdyIsIm1lYXQiLCJjdXQiLCJjaG9wIiwibGFtYmNob3AiLCJwb3JrY2hvcCJdLCJjaGFyIjoiXHVkODNlXHVkZDY5IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZm9vZF9hbmRfZHJpbmsifSxwYW5jYWtlczp7a2V5d29yZHM6WyJmb29kIiwiYnJlYWtmYXN0IiwiZmxhcGphY2tzIiwiaG90Y2FrZXMiXSwiY2hhciI6Ilx1ZDgzZVx1ZGQ1ZSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZvb2RfYW5kX2RyaW5rIn0scG91bHRyeV9sZWc6e2tleXdvcmRzOlsiZm9vZCIsIm1lYXQiLCJkcnVtc3RpY2siLCJiaXJkIiwiY2hpY2tlbiIsInR1cmtleSJdLCJjaGFyIjoiXHVkODNjXHVkZjU3IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZm9vZF9hbmRfZHJpbmsifSxtZWF0X29uX2JvbmU6e2tleXdvcmRzOlsiZ29vZCIsImZvb2QiLCJkcnVtc3RpY2siXSwiY2hhciI6Ilx1ZDgzY1x1ZGY1NiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZvb2RfYW5kX2RyaW5rIn0sZnJpZWRfc2hyaW1wOntrZXl3b3JkczpbImZvb2QiLCJhbmltYWwiLCJhcHBldGl6ZXIiLCJzdW1tZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGY2NCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZvb2RfYW5kX2RyaW5rIn0sZnJpZWRfZWdnOntrZXl3b3JkczpbImZvb2QiLCJicmVha2Zhc3QiLCJraXRjaGVuIiwiZWdnIl0sImNoYXIiOiJcdWQ4M2NcdWRmNzMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmb29kX2FuZF9kcmluayJ9LGhhbWJ1cmdlcjp7a2V5d29yZHM6WyJtZWF0IiwiZmFzdCBmb29kIiwiYmVlZiIsImNoZWVzZWJ1cmdlciIsIm1jZG9uYWxkcyIsImJ1cmdlciBraW5nIl0sImNoYXIiOiJcdWQ4M2NcdWRmNTQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmb29kX2FuZF9kcmluayJ9LGZyaWVzOntrZXl3b3JkczpbImNoaXBzIiwic25hY2siLCJmYXN0IGZvb2QiXSwiY2hhciI6Ilx1ZDgzY1x1ZGY1ZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZvb2RfYW5kX2RyaW5rIn0sc3R1ZmZlZF9mbGF0YnJlYWQ6e2tleXdvcmRzOlsiZm9vZCIsImZsYXRicmVhZCIsInN0dWZmZWQiLCJneXJvIl0sImNoYXIiOiJcdWQ4M2VcdWRkNTkiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmb29kX2FuZF9kcmluayJ9LGhvdGRvZzp7a2V5d29yZHM6WyJmb29kIiwiZnJhbmtmdXJ0ZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGYyZCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZvb2RfYW5kX2RyaW5rIn0scGl6emE6e2tleXdvcmRzOlsiZm9vZCIsInBhcnR5Il0sImNoYXIiOiJcdWQ4M2NcdWRmNTUiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmb29kX2FuZF9kcmluayJ9LHNhbmR3aWNoOntrZXl3b3JkczpbImZvb2QiLCJsdW5jaCIsImJyZWFkIl0sImNoYXIiOiJcdWQ4M2VcdWRkNmEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmb29kX2FuZF9kcmluayJ9LGNhbm5lZF9mb29kOntrZXl3b3JkczpbImZvb2QiLCJzb3VwIl0sImNoYXIiOiJcdWQ4M2VcdWRkNmIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmb29kX2FuZF9kcmluayJ9LHNwYWdoZXR0aTp7a2V5d29yZHM6WyJmb29kIiwiaXRhbGlhbiIsIm5vb2RsZSJdLCJjaGFyIjoiXHVkODNjXHVkZjVkIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZm9vZF9hbmRfZHJpbmsifSx0YWNvOntrZXl3b3JkczpbImZvb2QiLCJtZXhpY2FuIl0sImNoYXIiOiJcdWQ4M2NcdWRmMmUiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmb29kX2FuZF9kcmluayJ9LGJ1cnJpdG86e2tleXdvcmRzOlsiZm9vZCIsIm1leGljYW4iXSwiY2hhciI6Ilx1ZDgzY1x1ZGYyZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZvb2RfYW5kX2RyaW5rIn0sZ3JlZW5fc2FsYWQ6e2tleXdvcmRzOlsiZm9vZCIsImhlYWx0aHkiLCJsZXR0dWNlIl0sImNoYXIiOiJcdWQ4M2VcdWRkNTciLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmb29kX2FuZF9kcmluayJ9LHNoYWxsb3dfcGFuX29mX2Zvb2Q6e2tleXdvcmRzOlsiZm9vZCIsImNvb2tpbmciLCJjYXNzZXJvbGUiLCJwYWVsbGEiXSwiY2hhciI6Ilx1ZDgzZVx1ZGQ1OCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZvb2RfYW5kX2RyaW5rIn0scmFtZW46e2tleXdvcmRzOlsiZm9vZCIsImphcGFuZXNlIiwibm9vZGxlIiwiY2hvcHN0aWNrcyJdLCJjaGFyIjoiXHVkODNjXHVkZjVjIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZm9vZF9hbmRfZHJpbmsifSxzdGV3OntrZXl3b3JkczpbImZvb2QiLCJtZWF0Iiwic291cCJdLCJjaGFyIjoiXHVkODNjXHVkZjcyIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZm9vZF9hbmRfZHJpbmsifSxmaXNoX2Nha2U6e2tleXdvcmRzOlsiZm9vZCIsImphcGFuIiwic2VhIiwiYmVhY2giLCJuYXJ1dG9tYWtpIiwicGluayIsInN3aXJsIiwia2FtYWJva28iLCJzdXJpbWkiLCJyYW1lbiJdLCJjaGFyIjoiXHVkODNjXHVkZjY1IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZm9vZF9hbmRfZHJpbmsifSxmb3J0dW5lX2Nvb2tpZTp7a2V5d29yZHM6WyJmb29kIiwicHJvcGhlY3kiXSwiY2hhciI6Ilx1ZDgzZVx1ZGQ2MCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZvb2RfYW5kX2RyaW5rIn0sc3VzaGk6e2tleXdvcmRzOlsiZm9vZCIsImZpc2giLCJqYXBhbmVzZSIsInJpY2UiXSwiY2hhciI6Ilx1ZDgzY1x1ZGY2MyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZvb2RfYW5kX2RyaW5rIn0sYmVudG86e2tleXdvcmRzOlsiZm9vZCIsImphcGFuZXNlIiwiYm94Il0sImNoYXIiOiJcdWQ4M2NcdWRmNzEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmb29kX2FuZF9kcmluayJ9LGN1cnJ5OntrZXl3b3JkczpbImZvb2QiLCJzcGljeSIsImhvdCIsImluZGlhbiJdLCJjaGFyIjoiXHVkODNjXHVkZjViIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZm9vZF9hbmRfZHJpbmsifSxyaWNlX2JhbGw6e2tleXdvcmRzOlsiZm9vZCIsImphcGFuZXNlIl0sImNoYXIiOiJcdWQ4M2NcdWRmNTkiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmb29kX2FuZF9kcmluayJ9LHJpY2U6e2tleXdvcmRzOlsiZm9vZCIsImNoaW5hIiwiYXNpYW4iXSwiY2hhciI6Ilx1ZDgzY1x1ZGY1YSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZvb2RfYW5kX2RyaW5rIn0scmljZV9jcmFja2VyOntrZXl3b3JkczpbImZvb2QiLCJqYXBhbmVzZSJdLCJjaGFyIjoiXHVkODNjXHVkZjU4IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZm9vZF9hbmRfZHJpbmsifSxvZGVuOntrZXl3b3JkczpbImZvb2QiLCJqYXBhbmVzZSJdLCJjaGFyIjoiXHVkODNjXHVkZjYyIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZm9vZF9hbmRfZHJpbmsifSxkYW5nbzp7a2V5d29yZHM6WyJmb29kIiwiZGVzc2VydCIsInN3ZWV0IiwiamFwYW5lc2UiLCJiYXJiZWN1ZSIsIm1lYXQiXSwiY2hhciI6Ilx1ZDgzY1x1ZGY2MSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZvb2RfYW5kX2RyaW5rIn0sc2hhdmVkX2ljZTp7a2V5d29yZHM6WyJob3QiLCJkZXNzZXJ0Iiwic3VtbWVyIl0sImNoYXIiOiJcdWQ4M2NcdWRmNjciLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmb29kX2FuZF9kcmluayJ9LGljZV9jcmVhbTp7a2V5d29yZHM6WyJmb29kIiwiaG90IiwiZGVzc2VydCJdLCJjaGFyIjoiXHVkODNjXHVkZjY4IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZm9vZF9hbmRfZHJpbmsifSxpY2VjcmVhbTp7a2V5d29yZHM6WyJmb29kIiwiaG90IiwiZGVzc2VydCIsInN1bW1lciJdLCJjaGFyIjoiXHVkODNjXHVkZjY2IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZm9vZF9hbmRfZHJpbmsifSxwaWU6e2tleXdvcmRzOlsiZm9vZCIsImRlc3NlcnQiLCJwYXN0cnkiXSwiY2hhciI6Ilx1ZDgzZVx1ZGQ2NyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZvb2RfYW5kX2RyaW5rIn0sY2FrZTp7a2V5d29yZHM6WyJmb29kIiwiZGVzc2VydCJdLCJjaGFyIjoiXHVkODNjXHVkZjcwIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZm9vZF9hbmRfZHJpbmsifSxiaXJ0aGRheTp7a2V5d29yZHM6WyJmb29kIiwiZGVzc2VydCIsImNha2UiXSwiY2hhciI6Ilx1ZDgzY1x1ZGY4MiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZvb2RfYW5kX2RyaW5rIn0sY3VzdGFyZDp7a2V5d29yZHM6WyJkZXNzZXJ0IiwiZm9vZCJdLCJjaGFyIjoiXHVkODNjXHVkZjZlIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZm9vZF9hbmRfZHJpbmsifSxjYW5keTp7a2V5d29yZHM6WyJzbmFjayIsImRlc3NlcnQiLCJzd2VldCIsImxvbGx5Il0sImNoYXIiOiJcdWQ4M2NcdWRmNmMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmb29kX2FuZF9kcmluayJ9LGxvbGxpcG9wOntrZXl3b3JkczpbImZvb2QiLCJzbmFjayIsImNhbmR5Iiwic3dlZXQiXSwiY2hhciI6Ilx1ZDgzY1x1ZGY2ZCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZvb2RfYW5kX2RyaW5rIn0sY2hvY29sYXRlX2Jhcjp7a2V5d29yZHM6WyJmb29kIiwic25hY2siLCJkZXNzZXJ0Iiwic3dlZXQiXSwiY2hhciI6Ilx1ZDgzY1x1ZGY2YiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZvb2RfYW5kX2RyaW5rIn0scG9wY29ybjp7a2V5d29yZHM6WyJmb29kIiwibW92aWUgdGhlYXRlciIsImZpbG1zIiwic25hY2siXSwiY2hhciI6Ilx1ZDgzY1x1ZGY3ZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZvb2RfYW5kX2RyaW5rIn0sZHVtcGxpbmc6e2tleXdvcmRzOlsiZm9vZCIsImVtcGFuYWRhIiwicGllcm9naSIsInBvdHN0aWNrZXIiXSwiY2hhciI6Ilx1ZDgzZVx1ZGQ1ZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZvb2RfYW5kX2RyaW5rIn0sZG91Z2hudXQ6e2tleXdvcmRzOlsiZm9vZCIsImRlc3NlcnQiLCJzbmFjayIsInN3ZWV0IiwiZG9udXQiXSwiY2hhciI6Ilx1ZDgzY1x1ZGY2OSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZvb2RfYW5kX2RyaW5rIn0sY29va2llOntrZXl3b3JkczpbImZvb2QiLCJzbmFjayIsIm9yZW8iLCJjaG9jb2xhdGUiLCJzd2VldCIsImRlc3NlcnQiXSwiY2hhciI6Ilx1ZDgzY1x1ZGY2YSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZvb2RfYW5kX2RyaW5rIn0sbWlsa19nbGFzczp7a2V5d29yZHM6WyJiZXZlcmFnZSIsImRyaW5rIiwiY293Il0sImNoYXIiOiJcdWQ4M2VcdWRkNWIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmb29kX2FuZF9kcmluayJ9LGJlZXI6e2tleXdvcmRzOlsicmVsYXgiLCJiZXZlcmFnZSIsImRyaW5rIiwiZHJ1bmsiLCJwYXJ0eSIsInB1YiIsInN1bW1lciIsImFsY29ob2wiLCJib296ZSJdLCJjaGFyIjoiXHVkODNjXHVkZjdhIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZm9vZF9hbmRfZHJpbmsifSxiZWVyczp7a2V5d29yZHM6WyJyZWxheCIsImJldmVyYWdlIiwiZHJpbmsiLCJkcnVuayIsInBhcnR5IiwicHViIiwic3VtbWVyIiwiYWxjb2hvbCIsImJvb3plIl0sImNoYXIiOiJcdWQ4M2NcdWRmN2IiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmb29kX2FuZF9kcmluayJ9LGNsaW5raW5nX2dsYXNzZXM6e2tleXdvcmRzOlsiYmV2ZXJhZ2UiLCJkcmluayIsInBhcnR5IiwiYWxjb2hvbCIsImNlbGVicmF0ZSIsImNoZWVycyIsIndpbmUiLCJjaGFtcGFnbmUiLCJ0b2FzdCJdLCJjaGFyIjoiXHVkODNlXHVkZDQyIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZm9vZF9hbmRfZHJpbmsifSx3aW5lX2dsYXNzOntrZXl3b3JkczpbImRyaW5rIiwiYmV2ZXJhZ2UiLCJkcnVuayIsImFsY29ob2wiLCJib296ZSJdLCJjaGFyIjoiXHVkODNjXHVkZjc3IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZm9vZF9hbmRfZHJpbmsifSx0dW1ibGVyX2dsYXNzOntrZXl3b3JkczpbImRyaW5rIiwiYmV2ZXJhZ2UiLCJkcnVuayIsImFsY29ob2wiLCJsaXF1b3IiLCJib296ZSIsImJvdXJib24iLCJzY290Y2giLCJ3aGlza3kiLCJnbGFzcyIsInNob3QiXSwiY2hhciI6Ilx1ZDgzZVx1ZGQ0MyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZvb2RfYW5kX2RyaW5rIn0sY29ja3RhaWw6e2tleXdvcmRzOlsiZHJpbmsiLCJkcnVuayIsImFsY29ob2wiLCJiZXZlcmFnZSIsImJvb3plIiwibW9qaXRvIl0sImNoYXIiOiJcdWQ4M2NcdWRmNzgiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmb29kX2FuZF9kcmluayJ9LHRyb3BpY2FsX2RyaW5rOntrZXl3b3JkczpbImJldmVyYWdlIiwiY29ja3RhaWwiLCJzdW1tZXIiLCJiZWFjaCIsImFsY29ob2wiLCJib296ZSIsIm1vaml0byJdLCJjaGFyIjoiXHVkODNjXHVkZjc5IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZm9vZF9hbmRfZHJpbmsifSxjaGFtcGFnbmU6e2tleXdvcmRzOlsiZHJpbmsiLCJ3aW5lIiwiYm90dGxlIiwiY2VsZWJyYXRpb24iXSwiY2hhciI6Ilx1ZDgzY1x1ZGY3ZSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZvb2RfYW5kX2RyaW5rIn0sc2FrZTp7a2V5d29yZHM6WyJ3aW5lIiwiZHJpbmsiLCJkcnVuayIsImJldmVyYWdlIiwiamFwYW5lc2UiLCJhbGNvaG9sIiwiYm9vemUiXSwiY2hhciI6Ilx1ZDgzY1x1ZGY3NiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZvb2RfYW5kX2RyaW5rIn0sdGVhOntrZXl3b3JkczpbImRyaW5rIiwiYm93bCIsImJyZWFrZmFzdCIsImdyZWVuIiwiYnJpdGlzaCJdLCJjaGFyIjoiXHVkODNjXHVkZjc1IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZm9vZF9hbmRfZHJpbmsifSxjdXBfd2l0aF9zdHJhdzp7a2V5d29yZHM6WyJkcmluayIsInNvZGEiXSwiY2hhciI6Ilx1ZDgzZVx1ZGQ2NCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZvb2RfYW5kX2RyaW5rIn0sY29mZmVlOntrZXl3b3JkczpbImJldmVyYWdlIiwiY2FmZmVpbmUiLCJsYXR0ZSIsImVzcHJlc3NvIl0sImNoYXIiOiJcdTI2MTUiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmb29kX2FuZF9kcmluayJ9LGJhYnlfYm90dGxlOntrZXl3b3JkczpbImZvb2QiLCJjb250YWluZXIiLCJtaWxrIl0sImNoYXIiOiJcdWQ4M2NcdWRmN2MiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmb29kX2FuZF9kcmluayJ9LHNwb29uOntrZXl3b3JkczpbImN1dGxlcnkiLCJraXRjaGVuIiwidGFibGV3YXJlIl0sImNoYXIiOiJcdWQ4M2VcdWRkNDQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmb29kX2FuZF9kcmluayJ9LGZvcmtfYW5kX2tuaWZlOntrZXl3b3JkczpbImN1dGxlcnkiLCJraXRjaGVuIl0sImNoYXIiOiJcdWQ4M2NcdWRmNzQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmb29kX2FuZF9kcmluayJ9LHBsYXRlX3dpdGhfY3V0bGVyeTp7a2V5d29yZHM6WyJmb29kIiwiZWF0IiwibWVhbCIsImx1bmNoIiwiZGlubmVyIiwicmVzdGF1cmFudCJdLCJjaGFyIjoiXHVkODNjXHVkZjdkIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZm9vZF9hbmRfZHJpbmsifSxib3dsX3dpdGhfc3Bvb246e2tleXdvcmRzOlsiZm9vZCIsImJyZWFrZmFzdCIsImNlcmVhbCIsIm9hdG1lYWwiLCJwb3JyaWRnZSJdLCJjaGFyIjoiXHVkODNlXHVkZDYzIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZm9vZF9hbmRfZHJpbmsifSx0YWtlb3V0X2JveDp7a2V5d29yZHM6WyJmb29kIiwibGVmdG92ZXJzIl0sImNoYXIiOiJcdWQ4M2VcdWRkNjEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmb29kX2FuZF9kcmluayJ9LGNob3BzdGlja3M6e2tleXdvcmRzOlsiZm9vZCJdLCJjaGFyIjoiXHVkODNlXHVkZDYyIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZm9vZF9hbmRfZHJpbmsifSxzb2NjZXI6e2tleXdvcmRzOlsic3BvcnRzIiwiZm9vdGJhbGwiXSwiY2hhciI6Ilx1MjZiZCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFjdGl2aXR5In0sYmFza2V0YmFsbDp7a2V5d29yZHM6WyJzcG9ydHMiLCJiYWxscyIsIk5CQSJdLCJjaGFyIjoiXHVkODNjXHVkZmMwIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYWN0aXZpdHkifSxmb290YmFsbDp7a2V5d29yZHM6WyJzcG9ydHMiLCJiYWxscyIsIk5GTCJdLCJjaGFyIjoiXHVkODNjXHVkZmM4IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYWN0aXZpdHkifSxiYXNlYmFsbDp7a2V5d29yZHM6WyJzcG9ydHMiLCJiYWxscyJdLCJjaGFyIjoiXHUyNmJlIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYWN0aXZpdHkifSx0ZW5uaXM6e2tleXdvcmRzOlsic3BvcnRzIiwiYmFsbHMiLCJncmVlbiJdLCJjaGFyIjoiXHVkODNjXHVkZmJlIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYWN0aXZpdHkifSx2b2xsZXliYWxsOntrZXl3b3JkczpbInNwb3J0cyIsImJhbGxzIl0sImNoYXIiOiJcdWQ4M2NcdWRmZDAiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhY3Rpdml0eSJ9LHJ1Z2J5X2Zvb3RiYWxsOntrZXl3b3JkczpbInNwb3J0cyIsInRlYW0iXSwiY2hhciI6Ilx1ZDgzY1x1ZGZjOSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFjdGl2aXR5In0sIjhiYWxsIjp7a2V5d29yZHM6WyJwb29sIiwiaG9iYnkiLCJnYW1lIiwibHVjayIsIm1hZ2ljIl0sImNoYXIiOiJcdWQ4M2NcdWRmYjEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhY3Rpdml0eSJ9LGdvbGY6e2tleXdvcmRzOlsic3BvcnRzIiwiYnVzaW5lc3MiLCJmbGFnIiwiaG9sZSIsInN1bW1lciJdLCJjaGFyIjoiXHUyNmYzIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYWN0aXZpdHkifSxnb2xmaW5nX3dvbWFuOntrZXl3b3JkczpbInNwb3J0cyIsImJ1c2luZXNzIiwid29tYW4iLCJmZW1hbGUiXSwiY2hhciI6Ilx1ZDgzY1x1ZGZjY1x1ZmUwZlx1MjAwZFx1MjY0MFx1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFjdGl2aXR5In0sZ29sZmluZ19tYW46e2tleXdvcmRzOlsic3BvcnRzIiwiYnVzaW5lc3MiXSwiY2hhciI6Ilx1ZDgzY1x1ZGZjYyIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6ImFjdGl2aXR5In0scGluZ19wb25nOntrZXl3b3JkczpbInNwb3J0cyIsInBpbmdwb25nIl0sImNoYXIiOiJcdWQ4M2NcdWRmZDMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhY3Rpdml0eSJ9LGJhZG1pbnRvbjp7a2V5d29yZHM6WyJzcG9ydHMiXSwiY2hhciI6Ilx1ZDgzY1x1ZGZmOCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFjdGl2aXR5In0sZ29hbF9uZXQ6e2tleXdvcmRzOlsic3BvcnRzIl0sImNoYXIiOiJcdWQ4M2VcdWRkNDUiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhY3Rpdml0eSJ9LGljZV9ob2NrZXk6e2tleXdvcmRzOlsic3BvcnRzIl0sImNoYXIiOiJcdWQ4M2NcdWRmZDIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhY3Rpdml0eSJ9LGZpZWxkX2hvY2tleTp7a2V5d29yZHM6WyJzcG9ydHMiXSwiY2hhciI6Ilx1ZDgzY1x1ZGZkMSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFjdGl2aXR5In0sY3JpY2tldDp7a2V5d29yZHM6WyJzcG9ydHMiXSwiY2hhciI6Ilx1ZDgzY1x1ZGZjZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFjdGl2aXR5In0sc2tpOntrZXl3b3JkczpbInNwb3J0cyIsIndpbnRlciIsImNvbGQiLCJzbm93Il0sImNoYXIiOiJcdWQ4M2NcdWRmYmYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhY3Rpdml0eSJ9LHNraWVyOntrZXl3b3JkczpbInNwb3J0cyIsIndpbnRlciIsInNub3ciXSwiY2hhciI6Ilx1MjZmNyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFjdGl2aXR5In0sc25vd2JvYXJkZXI6e2tleXdvcmRzOlsic3BvcnRzIiwid2ludGVyIl0sImNoYXIiOiJcdWQ4M2NcdWRmYzIiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJhY3Rpdml0eSJ9LHBlcnNvbl9mZW5jaW5nOntrZXl3b3JkczpbInNwb3J0cyIsImZlbmNpbmciLCJzd29yZCJdLCJjaGFyIjoiXHVkODNlXHVkZDNhIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYWN0aXZpdHkifSx3b21lbl93cmVzdGxpbmc6e2tleXdvcmRzOlsic3BvcnRzIiwid3Jlc3RsZXJzIl0sImNoYXIiOiJcdWQ4M2VcdWRkM2NcdTIwMGRcdTI2NDBcdWZlMGYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhY3Rpdml0eSJ9LG1lbl93cmVzdGxpbmc6e2tleXdvcmRzOlsic3BvcnRzIiwid3Jlc3RsZXJzIl0sImNoYXIiOiJcdWQ4M2VcdWRkM2NcdTIwMGRcdTI2NDJcdWZlMGYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhY3Rpdml0eSJ9LHdvbWFuX2NhcnR3aGVlbGluZzp7a2V5d29yZHM6WyJneW1uYXN0aWNzIl0sImNoYXIiOiJcdWQ4M2VcdWRkMzhcdTIwMGRcdTI2NDBcdWZlMGYiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJhY3Rpdml0eSJ9LG1hbl9jYXJ0d2hlZWxpbmc6e2tleXdvcmRzOlsiZ3ltbmFzdGljcyJdLCJjaGFyIjoiXHVkODNlXHVkZDM4XHUyMDBkXHUyNjQyXHVmZTBmIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToiYWN0aXZpdHkifSx3b21hbl9wbGF5aW5nX2hhbmRiYWxsOntrZXl3b3JkczpbInNwb3J0cyJdLCJjaGFyIjoiXHVkODNlXHVkZDNlXHUyMDBkXHUyNjQwXHVmZTBmIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToiYWN0aXZpdHkifSxtYW5fcGxheWluZ19oYW5kYmFsbDp7a2V5d29yZHM6WyJzcG9ydHMiXSwiY2hhciI6Ilx1ZDgzZVx1ZGQzZVx1MjAwZFx1MjY0Mlx1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6ImFjdGl2aXR5In0saWNlX3NrYXRlOntrZXl3b3JkczpbInNwb3J0cyJdLCJjaGFyIjoiXHUyNmY4IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYWN0aXZpdHkifSxjdXJsaW5nX3N0b25lOntrZXl3b3JkczpbInNwb3J0cyJdLCJjaGFyIjoiXHVkODNlXHVkZDRjIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYWN0aXZpdHkifSxzbGVkOntrZXl3b3JkczpbInNsZWlnaCIsImx1Z2UiLCJ0b2JvZ2dhbiJdLCJjaGFyIjoiXHVkODNkXHVkZWY3IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYWN0aXZpdHkifSxib3dfYW5kX2Fycm93OntrZXl3b3JkczpbInNwb3J0cyJdLCJjaGFyIjoiXHVkODNjXHVkZmY5IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYWN0aXZpdHkifSxmaXNoaW5nX3BvbGVfYW5kX2Zpc2g6e2tleXdvcmRzOlsiZm9vZCIsImhvYmJ5Iiwic3VtbWVyIl0sImNoYXIiOiJcdWQ4M2NcdWRmYTMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhY3Rpdml0eSJ9LGJveGluZ19nbG92ZTp7a2V5d29yZHM6WyJzcG9ydHMiLCJmaWdodGluZyJdLCJjaGFyIjoiXHVkODNlXHVkZDRhIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYWN0aXZpdHkifSxtYXJ0aWFsX2FydHNfdW5pZm9ybTp7a2V5d29yZHM6WyJqdWRvIiwia2FyYXRlIiwidGFla3dvbmRvIl0sImNoYXIiOiJcdWQ4M2VcdWRkNGIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhY3Rpdml0eSJ9LHJvd2luZ193b21hbjp7a2V5d29yZHM6WyJzcG9ydHMiLCJob2JieSIsIndhdGVyIiwic2hpcCIsIndvbWFuIiwiZmVtYWxlIl0sImNoYXIiOiJcdWQ4M2RcdWRlYTNcdTIwMGRcdTI2NDBcdWZlMGYiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJhY3Rpdml0eSJ9LHJvd2luZ19tYW46e2tleXdvcmRzOlsic3BvcnRzIiwiaG9iYnkiLCJ3YXRlciIsInNoaXAiXSwiY2hhciI6Ilx1ZDgzZFx1ZGVhMyIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6ImFjdGl2aXR5In0sY2xpbWJpbmdfd29tYW46e2tleXdvcmRzOlsic3BvcnRzIiwiaG9iYnkiLCJ3b21hbiIsImZlbWFsZSIsInJvY2siXSwiY2hhciI6Ilx1ZDgzZVx1ZGRkN1x1MjAwZFx1MjY0MFx1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6ImFjdGl2aXR5In0sY2xpbWJpbmdfbWFuOntrZXl3b3JkczpbInNwb3J0cyIsImhvYmJ5IiwibWFuIiwibWFsZSIsInJvY2siXSwiY2hhciI6Ilx1ZDgzZVx1ZGRkN1x1MjAwZFx1MjY0Mlx1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6ImFjdGl2aXR5In0sc3dpbW1pbmdfd29tYW46e2tleXdvcmRzOlsic3BvcnRzIiwiZXhlcmNpc2UiLCJodW1hbiIsImF0aGxldGUiLCJ3YXRlciIsInN1bW1lciIsIndvbWFuIiwiZmVtYWxlIl0sImNoYXIiOiJcdWQ4M2NcdWRmY2FcdTIwMGRcdTI2NDBcdWZlMGYiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJhY3Rpdml0eSJ9LHN3aW1taW5nX21hbjp7a2V5d29yZHM6WyJzcG9ydHMiLCJleGVyY2lzZSIsImh1bWFuIiwiYXRobGV0ZSIsIndhdGVyIiwic3VtbWVyIl0sImNoYXIiOiJcdWQ4M2NcdWRmY2EiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJhY3Rpdml0eSJ9LHdvbWFuX3BsYXlpbmdfd2F0ZXJfcG9sbzp7a2V5d29yZHM6WyJzcG9ydHMiLCJwb29sIl0sImNoYXIiOiJcdWQ4M2VcdWRkM2RcdTIwMGRcdTI2NDBcdWZlMGYiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJhY3Rpdml0eSJ9LG1hbl9wbGF5aW5nX3dhdGVyX3BvbG86e2tleXdvcmRzOlsic3BvcnRzIiwicG9vbCJdLCJjaGFyIjoiXHVkODNlXHVkZDNkXHUyMDBkXHUyNjQyXHVmZTBmIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToiYWN0aXZpdHkifSx3b21hbl9pbl9sb3R1c19wb3NpdGlvbjp7a2V5d29yZHM6WyJ3b21hbiIsImZlbWFsZSIsIm1lZGl0YXRpb24iLCJ5b2dhIiwic2VyZW5pdHkiLCJ6ZW4iLCJtaW5kZnVsbmVzcyJdLCJjaGFyIjoiXHVkODNlXHVkZGQ4XHUyMDBkXHUyNjQwXHVmZTBmIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToiYWN0aXZpdHkifSxtYW5faW5fbG90dXNfcG9zaXRpb246e2tleXdvcmRzOlsibWFuIiwibWFsZSIsIm1lZGl0YXRpb24iLCJ5b2dhIiwic2VyZW5pdHkiLCJ6ZW4iLCJtaW5kZnVsbmVzcyJdLCJjaGFyIjoiXHVkODNlXHVkZGQ4XHUyMDBkXHUyNjQyXHVmZTBmIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToiYWN0aXZpdHkifSxzdXJmaW5nX3dvbWFuOntrZXl3b3JkczpbInNwb3J0cyIsIm9jZWFuIiwic2VhIiwic3VtbWVyIiwiYmVhY2giLCJ3b21hbiIsImZlbWFsZSJdLCJjaGFyIjoiXHVkODNjXHVkZmM0XHUyMDBkXHUyNjQwXHVmZTBmIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToiYWN0aXZpdHkifSxzdXJmaW5nX21hbjp7a2V5d29yZHM6WyJzcG9ydHMiLCJvY2VhbiIsInNlYSIsInN1bW1lciIsImJlYWNoIl0sImNoYXIiOiJcdWQ4M2NcdWRmYzQiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJhY3Rpdml0eSJ9LGJhdGg6e2tleXdvcmRzOlsiY2xlYW4iLCJzaG93ZXIiLCJiYXRocm9vbSJdLCJjaGFyIjoiXHVkODNkXHVkZWMwIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToiYWN0aXZpdHkifSxiYXNrZXRiYWxsX3dvbWFuOntrZXl3b3JkczpbInNwb3J0cyIsImh1bWFuIiwid29tYW4iLCJmZW1hbGUiXSwiY2hhciI6Ilx1MjZmOVx1ZmUwZlx1MjAwZFx1MjY0MFx1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6ImFjdGl2aXR5In0sYmFza2V0YmFsbF9tYW46e2tleXdvcmRzOlsic3BvcnRzIiwiaHVtYW4iXSwiY2hhciI6Ilx1MjZmOSIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6ImFjdGl2aXR5In0sd2VpZ2h0X2xpZnRpbmdfd29tYW46e2tleXdvcmRzOlsic3BvcnRzIiwidHJhaW5pbmciLCJleGVyY2lzZSIsIndvbWFuIiwiZmVtYWxlIl0sImNoYXIiOiJcdWQ4M2NcdWRmY2JcdWZlMGZcdTIwMGRcdTI2NDBcdWZlMGYiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJhY3Rpdml0eSJ9LHdlaWdodF9saWZ0aW5nX21hbjp7a2V5d29yZHM6WyJzcG9ydHMiLCJ0cmFpbmluZyIsImV4ZXJjaXNlIl0sImNoYXIiOiJcdWQ4M2NcdWRmY2IiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJhY3Rpdml0eSJ9LGJpa2luZ193b21hbjp7a2V5d29yZHM6WyJzcG9ydHMiLCJiaWtlIiwiZXhlcmNpc2UiLCJoaXBzdGVyIiwid29tYW4iLCJmZW1hbGUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGViNFx1MjAwZFx1MjY0MFx1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6ImFjdGl2aXR5In0sYmlraW5nX21hbjp7a2V5d29yZHM6WyJzcG9ydHMiLCJiaWtlIiwiZXhlcmNpc2UiLCJoaXBzdGVyIl0sImNoYXIiOiJcdWQ4M2RcdWRlYjQiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJhY3Rpdml0eSJ9LG1vdW50YWluX2Jpa2luZ193b21hbjp7a2V5d29yZHM6WyJ0cmFuc3BvcnRhdGlvbiIsInNwb3J0cyIsImh1bWFuIiwicmFjZSIsImJpa2UiLCJ3b21hbiIsImZlbWFsZSJdLCJjaGFyIjoiXHVkODNkXHVkZWI1XHUyMDBkXHUyNjQwXHVmZTBmIixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToiYWN0aXZpdHkifSxtb3VudGFpbl9iaWtpbmdfbWFuOntrZXl3b3JkczpbInRyYW5zcG9ydGF0aW9uIiwic3BvcnRzIiwiaHVtYW4iLCJyYWNlIiwiYmlrZSJdLCJjaGFyIjoiXHVkODNkXHVkZWI1IixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToiYWN0aXZpdHkifSxob3JzZV9yYWNpbmc6e2tleXdvcmRzOlsiYW5pbWFsIiwiYmV0dGluZyIsImNvbXBldGl0aW9uIiwiZ2FtYmxpbmciLCJsdWNrIl0sImNoYXIiOiJcdWQ4M2NcdWRmYzciLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJhY3Rpdml0eSJ9LGJ1c2luZXNzX3N1aXRfbGV2aXRhdGluZzp7a2V5d29yZHM6WyJzdWl0IiwiYnVzaW5lc3MiLCJsZXZpdGF0ZSIsImhvdmVyIiwianVtcCJdLCJjaGFyIjoiXHVkODNkXHVkZDc0IixmaXR6cGF0cmlja19zY2FsZTohMCxjYXRlZ29yeToiYWN0aXZpdHkifSx0cm9waHk6e2tleXdvcmRzOlsid2luIiwiYXdhcmQiLCJjb250ZXN0IiwicGxhY2UiLCJmdHciLCJjZXJlbW9ueSJdLCJjaGFyIjoiXHVkODNjXHVkZmM2IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYWN0aXZpdHkifSxydW5uaW5nX3NoaXJ0X3dpdGhfc2FzaDp7a2V5d29yZHM6WyJwbGF5IiwicGFnZWFudCJdLCJjaGFyIjoiXHVkODNjXHVkZmJkIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYWN0aXZpdHkifSxtZWRhbF9zcG9ydHM6e2tleXdvcmRzOlsiYXdhcmQiLCJ3aW5uaW5nIl0sImNoYXIiOiJcdWQ4M2NcdWRmYzUiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhY3Rpdml0eSJ9LG1lZGFsX21pbGl0YXJ5OntrZXl3b3JkczpbImF3YXJkIiwid2lubmluZyIsImFybXkiXSwiY2hhciI6Ilx1ZDgzY1x1ZGY5NiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFjdGl2aXR5In0sIjFzdF9wbGFjZV9tZWRhbCI6e2tleXdvcmRzOlsiYXdhcmQiLCJ3aW5uaW5nIiwiZmlyc3QiXSwiY2hhciI6Ilx1ZDgzZVx1ZGQ0NyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFjdGl2aXR5In0sIjJuZF9wbGFjZV9tZWRhbCI6e2tleXdvcmRzOlsiYXdhcmQiLCJzZWNvbmQiXSwiY2hhciI6Ilx1ZDgzZVx1ZGQ0OCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFjdGl2aXR5In0sIjNyZF9wbGFjZV9tZWRhbCI6e2tleXdvcmRzOlsiYXdhcmQiLCJ0aGlyZCJdLCJjaGFyIjoiXHVkODNlXHVkZDQ5IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYWN0aXZpdHkifSxyZW1pbmRlcl9yaWJib246e2tleXdvcmRzOlsic3BvcnRzIiwiY2F1c2UiLCJzdXBwb3J0IiwiYXdhcmVuZXNzIl0sImNoYXIiOiJcdWQ4M2NcdWRmOTciLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhY3Rpdml0eSJ9LHJvc2V0dGU6e2tleXdvcmRzOlsiZmxvd2VyIiwiZGVjb3JhdGlvbiIsIm1pbGl0YXJ5Il0sImNoYXIiOiJcdWQ4M2NcdWRmZjUiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhY3Rpdml0eSJ9LHRpY2tldDp7a2V5d29yZHM6WyJldmVudCIsImNvbmNlcnQiLCJwYXNzIl0sImNoYXIiOiJcdWQ4M2NcdWRmYWIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhY3Rpdml0eSJ9LHRpY2tldHM6e2tleXdvcmRzOlsic3BvcnRzIiwiY29uY2VydCIsImVudHJhbmNlIl0sImNoYXIiOiJcdWQ4M2NcdWRmOWYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhY3Rpdml0eSJ9LHBlcmZvcm1pbmdfYXJ0czp7a2V5d29yZHM6WyJhY3RpbmciLCJ0aGVhdGVyIiwiZHJhbWEiXSwiY2hhciI6Ilx1ZDgzY1x1ZGZhZCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFjdGl2aXR5In0sYXJ0OntrZXl3b3JkczpbImRlc2lnbiIsInBhaW50IiwiZHJhdyIsImNvbG9ycyJdLCJjaGFyIjoiXHVkODNjXHVkZmE4IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYWN0aXZpdHkifSxjaXJjdXNfdGVudDp7a2V5d29yZHM6WyJmZXN0aXZhbCIsImNhcm5pdmFsIiwicGFydHkiXSwiY2hhciI6Ilx1ZDgzY1x1ZGZhYSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFjdGl2aXR5In0sd29tYW5fanVnZ2xpbmc6e2tleXdvcmRzOlsianVnZ2xlIiwiYmFsYW5jZSIsInNraWxsIiwibXVsdGl0YXNrIl0sImNoYXIiOiJcdWQ4M2VcdWRkMzlcdTIwMGRcdTI2NDBcdWZlMGYiLGZpdHpwYXRyaWNrX3NjYWxlOiEwLGNhdGVnb3J5OiJhY3Rpdml0eSJ9LG1hbl9qdWdnbGluZzp7a2V5d29yZHM6WyJqdWdnbGUiLCJiYWxhbmNlIiwic2tpbGwiLCJtdWx0aXRhc2siXSwiY2hhciI6Ilx1ZDgzZVx1ZGQzOVx1MjAwZFx1MjY0Mlx1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6ImFjdGl2aXR5In0sbWljcm9waG9uZTp7a2V5d29yZHM6WyJzb3VuZCIsIm11c2ljIiwiUEEiLCJzaW5nIiwidGFsa3Nob3ciXSwiY2hhciI6Ilx1ZDgzY1x1ZGZhNCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFjdGl2aXR5In0saGVhZHBob25lczp7a2V5d29yZHM6WyJtdXNpYyIsInNjb3JlIiwiZ2FkZ2V0cyJdLCJjaGFyIjoiXHVkODNjXHVkZmE3IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYWN0aXZpdHkifSxtdXNpY2FsX3Njb3JlOntrZXl3b3JkczpbInRyZWJsZSIsImNsZWYiLCJjb21wb3NlIl0sImNoYXIiOiJcdWQ4M2NcdWRmYmMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhY3Rpdml0eSJ9LG11c2ljYWxfa2V5Ym9hcmQ6e2tleXdvcmRzOlsicGlhbm8iLCJpbnN0cnVtZW50IiwiY29tcG9zZSJdLCJjaGFyIjoiXHVkODNjXHVkZmI5IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYWN0aXZpdHkifSxkcnVtOntrZXl3b3JkczpbIm11c2ljIiwiaW5zdHJ1bWVudCIsImRydW1zdGlja3MiLCJzbmFyZSJdLCJjaGFyIjoiXHVkODNlXHVkZDQxIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYWN0aXZpdHkifSxzYXhvcGhvbmU6e2tleXdvcmRzOlsibXVzaWMiLCJpbnN0cnVtZW50IiwiamF6eiIsImJsdWVzIl0sImNoYXIiOiJcdWQ4M2NcdWRmYjciLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhY3Rpdml0eSJ9LHRydW1wZXQ6e2tleXdvcmRzOlsibXVzaWMiLCJicmFzcyJdLCJjaGFyIjoiXHVkODNjXHVkZmJhIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYWN0aXZpdHkifSxndWl0YXI6e2tleXdvcmRzOlsibXVzaWMiLCJpbnN0cnVtZW50Il0sImNoYXIiOiJcdWQ4M2NcdWRmYjgiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhY3Rpdml0eSJ9LHZpb2xpbjp7a2V5d29yZHM6WyJtdXNpYyIsImluc3RydW1lbnQiLCJvcmNoZXN0cmEiLCJzeW1waG9ueSJdLCJjaGFyIjoiXHVkODNjXHVkZmJiIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYWN0aXZpdHkifSxjbGFwcGVyOntrZXl3b3JkczpbIm1vdmllIiwiZmlsbSIsInJlY29yZCJdLCJjaGFyIjoiXHVkODNjXHVkZmFjIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYWN0aXZpdHkifSx2aWRlb19nYW1lOntrZXl3b3JkczpbInBsYXkiLCJjb25zb2xlIiwiUFM0IiwiY29udHJvbGxlciJdLCJjaGFyIjoiXHVkODNjXHVkZmFlIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYWN0aXZpdHkifSxzcGFjZV9pbnZhZGVyOntrZXl3b3JkczpbImdhbWUiLCJhcmNhZGUiLCJwbGF5Il0sImNoYXIiOiJcdWQ4M2RcdWRjN2UiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJhY3Rpdml0eSJ9LGRhcnQ6e2tleXdvcmRzOlsiZ2FtZSIsInBsYXkiLCJiYXIiLCJ0YXJnZXQiLCJidWxsc2V5ZSJdLCJjaGFyIjoiXHVkODNjXHVkZmFmIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYWN0aXZpdHkifSxnYW1lX2RpZTp7a2V5d29yZHM6WyJkaWNlIiwicmFuZG9tIiwidGFibGV0b3AiLCJwbGF5IiwibHVjayJdLCJjaGFyIjoiXHVkODNjXHVkZmIyIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYWN0aXZpdHkifSxzbG90X21hY2hpbmU6e2tleXdvcmRzOlsiYmV0IiwiZ2FtYmxlIiwidmVnYXMiLCJmcnVpdCBtYWNoaW5lIiwibHVjayIsImNhc2lubyJdLCJjaGFyIjoiXHVkODNjXHVkZmIwIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiYWN0aXZpdHkifSxib3dsaW5nOntrZXl3b3JkczpbInNwb3J0cyIsImZ1biIsInBsYXkiXSwiY2hhciI6Ilx1ZDgzY1x1ZGZiMyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImFjdGl2aXR5In0scmVkX2Nhcjp7a2V5d29yZHM6WyJyZWQiLCJ0cmFuc3BvcnRhdGlvbiIsInZlaGljbGUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGU5NyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InRyYXZlbF9hbmRfcGxhY2VzIn0sdGF4aTp7a2V5d29yZHM6WyJ1YmVyIiwidmVoaWNsZSIsImNhcnMiLCJ0cmFuc3BvcnRhdGlvbiJdLCJjaGFyIjoiXHVkODNkXHVkZTk1IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSxibHVlX2Nhcjp7a2V5d29yZHM6WyJ0cmFuc3BvcnRhdGlvbiIsInZlaGljbGUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGU5OSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InRyYXZlbF9hbmRfcGxhY2VzIn0sYnVzOntrZXl3b3JkczpbImNhciIsInZlaGljbGUiLCJ0cmFuc3BvcnRhdGlvbiJdLCJjaGFyIjoiXHVkODNkXHVkZThjIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSx0cm9sbGV5YnVzOntrZXl3b3JkczpbImJhcnQiLCJ0cmFuc3BvcnRhdGlvbiIsInZlaGljbGUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGU4ZSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InRyYXZlbF9hbmRfcGxhY2VzIn0scmFjaW5nX2Nhcjp7a2V5d29yZHM6WyJzcG9ydHMiLCJyYWNlIiwiZmFzdCIsImZvcm11bGEiLCJmMSJdLCJjaGFyIjoiXHVkODNjXHVkZmNlIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSxwb2xpY2VfY2FyOntrZXl3b3JkczpbInZlaGljbGUiLCJjYXJzIiwidHJhbnNwb3J0YXRpb24iLCJsYXciLCJsZWdhbCIsImVuZm9yY2VtZW50Il0sImNoYXIiOiJcdWQ4M2RcdWRlOTMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJ0cmF2ZWxfYW5kX3BsYWNlcyJ9LGFtYnVsYW5jZTp7a2V5d29yZHM6WyJoZWFsdGgiLCI5MTEiLCJob3NwaXRhbCJdLCJjaGFyIjoiXHVkODNkXHVkZTkxIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSxmaXJlX2VuZ2luZTp7a2V5d29yZHM6WyJ0cmFuc3BvcnRhdGlvbiIsImNhcnMiLCJ2ZWhpY2xlIl0sImNoYXIiOiJcdWQ4M2RcdWRlOTIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJ0cmF2ZWxfYW5kX3BsYWNlcyJ9LG1pbmlidXM6e2tleXdvcmRzOlsidmVoaWNsZSIsImNhciIsInRyYW5zcG9ydGF0aW9uIl0sImNoYXIiOiJcdWQ4M2RcdWRlOTAiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJ0cmF2ZWxfYW5kX3BsYWNlcyJ9LHRydWNrOntrZXl3b3JkczpbImNhcnMiLCJ0cmFuc3BvcnRhdGlvbiJdLCJjaGFyIjoiXHVkODNkXHVkZTlhIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSxhcnRpY3VsYXRlZF9sb3JyeTp7a2V5d29yZHM6WyJ2ZWhpY2xlIiwiY2FycyIsInRyYW5zcG9ydGF0aW9uIiwiZXhwcmVzcyJdLCJjaGFyIjoiXHVkODNkXHVkZTliIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSx0cmFjdG9yOntrZXl3b3JkczpbInZlaGljbGUiLCJjYXIiLCJmYXJtaW5nIiwiYWdyaWN1bHR1cmUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGU5YyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InRyYXZlbF9hbmRfcGxhY2VzIn0sa2lja19zY29vdGVyOntrZXl3b3JkczpbInZlaGljbGUiLCJraWNrIiwicmF6b3IiXSwiY2hhciI6Ilx1ZDgzZFx1ZGVmNCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InRyYXZlbF9hbmRfcGxhY2VzIn0sbW90b3JjeWNsZTp7a2V5d29yZHM6WyJyYWNlIiwic3BvcnRzIiwiZmFzdCJdLCJjaGFyIjoiXHVkODNjXHVkZmNkIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSxiaWtlOntrZXl3b3JkczpbInNwb3J0cyIsImJpY3ljbGUiLCJleGVyY2lzZSIsImhpcHN0ZXIiXSwiY2hhciI6Ilx1ZDgzZFx1ZGViMiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InRyYXZlbF9hbmRfcGxhY2VzIn0sbW90b3Jfc2Nvb3Rlcjp7a2V5d29yZHM6WyJ2ZWhpY2xlIiwidmVzcGEiLCJzYXNoYSJdLCJjaGFyIjoiXHVkODNkXHVkZWY1IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSxyb3RhdGluZ19saWdodDp7a2V5d29yZHM6WyJwb2xpY2UiLCJhbWJ1bGFuY2UiLCI5MTEiLCJlbWVyZ2VuY3kiLCJhbGVydCIsImVycm9yIiwicGluZ2VkIiwibGF3IiwibGVnYWwiXSwiY2hhciI6Ilx1ZDgzZFx1ZGVhOCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InRyYXZlbF9hbmRfcGxhY2VzIn0sb25jb21pbmdfcG9saWNlX2Nhcjp7a2V5d29yZHM6WyJ2ZWhpY2xlIiwibGF3IiwibGVnYWwiLCJlbmZvcmNlbWVudCIsIjkxMSJdLCJjaGFyIjoiXHVkODNkXHVkZTk0IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSxvbmNvbWluZ19idXM6e2tleXdvcmRzOlsidmVoaWNsZSIsInRyYW5zcG9ydGF0aW9uIl0sImNoYXIiOiJcdWQ4M2RcdWRlOGQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJ0cmF2ZWxfYW5kX3BsYWNlcyJ9LG9uY29taW5nX2F1dG9tb2JpbGU6e2tleXdvcmRzOlsiY2FyIiwidmVoaWNsZSIsInRyYW5zcG9ydGF0aW9uIl0sImNoYXIiOiJcdWQ4M2RcdWRlOTgiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJ0cmF2ZWxfYW5kX3BsYWNlcyJ9LG9uY29taW5nX3RheGk6e2tleXdvcmRzOlsidmVoaWNsZSIsImNhcnMiLCJ1YmVyIl0sImNoYXIiOiJcdWQ4M2RcdWRlOTYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJ0cmF2ZWxfYW5kX3BsYWNlcyJ9LGFlcmlhbF90cmFtd2F5OntrZXl3b3JkczpbInRyYW5zcG9ydGF0aW9uIiwidmVoaWNsZSIsInNraSJdLCJjaGFyIjoiXHVkODNkXHVkZWExIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSxtb3VudGFpbl9jYWJsZXdheTp7a2V5d29yZHM6WyJ0cmFuc3BvcnRhdGlvbiIsInZlaGljbGUiLCJza2kiXSwiY2hhciI6Ilx1ZDgzZFx1ZGVhMCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InRyYXZlbF9hbmRfcGxhY2VzIn0sc3VzcGVuc2lvbl9yYWlsd2F5OntrZXl3b3JkczpbInZlaGljbGUiLCJ0cmFuc3BvcnRhdGlvbiJdLCJjaGFyIjoiXHVkODNkXHVkZTlmIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSxyYWlsd2F5X2Nhcjp7a2V5d29yZHM6WyJ0cmFuc3BvcnRhdGlvbiIsInZlaGljbGUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGU4MyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InRyYXZlbF9hbmRfcGxhY2VzIn0sdHJhaW46e2tleXdvcmRzOlsidHJhbnNwb3J0YXRpb24iLCJ2ZWhpY2xlIiwiY2FycmlhZ2UiLCJwdWJsaWMiLCJ0cmF2ZWwiXSwiY2hhciI6Ilx1ZDgzZFx1ZGU4YiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InRyYXZlbF9hbmRfcGxhY2VzIn0sbW9ub3JhaWw6e2tleXdvcmRzOlsidHJhbnNwb3J0YXRpb24iLCJ2ZWhpY2xlIl0sImNoYXIiOiJcdWQ4M2RcdWRlOWQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJ0cmF2ZWxfYW5kX3BsYWNlcyJ9LGJ1bGxldHRyYWluX3NpZGU6e2tleXdvcmRzOlsidHJhbnNwb3J0YXRpb24iLCJ2ZWhpY2xlIl0sImNoYXIiOiJcdWQ4M2RcdWRlODQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJ0cmF2ZWxfYW5kX3BsYWNlcyJ9LGJ1bGxldHRyYWluX2Zyb250OntrZXl3b3JkczpbInRyYW5zcG9ydGF0aW9uIiwidmVoaWNsZSIsInNwZWVkIiwiZmFzdCIsInB1YmxpYyIsInRyYXZlbCJdLCJjaGFyIjoiXHVkODNkXHVkZTg1IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSxsaWdodF9yYWlsOntrZXl3b3JkczpbInRyYW5zcG9ydGF0aW9uIiwidmVoaWNsZSJdLCJjaGFyIjoiXHVkODNkXHVkZTg4IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSxtb3VudGFpbl9yYWlsd2F5OntrZXl3b3JkczpbInRyYW5zcG9ydGF0aW9uIiwidmVoaWNsZSJdLCJjaGFyIjoiXHVkODNkXHVkZTllIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSxzdGVhbV9sb2NvbW90aXZlOntrZXl3b3JkczpbInRyYW5zcG9ydGF0aW9uIiwidmVoaWNsZSIsInRyYWluIl0sImNoYXIiOiJcdWQ4M2RcdWRlODIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJ0cmF2ZWxfYW5kX3BsYWNlcyJ9LHRyYWluMjp7a2V5d29yZHM6WyJ0cmFuc3BvcnRhdGlvbiIsInZlaGljbGUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGU4NiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InRyYXZlbF9hbmRfcGxhY2VzIn0sbWV0cm86e2tleXdvcmRzOlsidHJhbnNwb3J0YXRpb24iLCJibHVlLXNxdWFyZSIsIm1ydCIsInVuZGVyZ3JvdW5kIiwidHViZSJdLCJjaGFyIjoiXHVkODNkXHVkZTg3IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSx0cmFtOntrZXl3b3JkczpbInRyYW5zcG9ydGF0aW9uIiwidmVoaWNsZSJdLCJjaGFyIjoiXHVkODNkXHVkZThhIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSxzdGF0aW9uOntrZXl3b3JkczpbInRyYW5zcG9ydGF0aW9uIiwidmVoaWNsZSIsInB1YmxpYyJdLCJjaGFyIjoiXHVkODNkXHVkZTg5IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSxmbHlpbmdfc2F1Y2VyOntrZXl3b3JkczpbInRyYW5zcG9ydGF0aW9uIiwidmVoaWNsZSIsInVmbyJdLCJjaGFyIjoiXHVkODNkXHVkZWY4IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSxoZWxpY29wdGVyOntrZXl3b3JkczpbInRyYW5zcG9ydGF0aW9uIiwidmVoaWNsZSIsImZseSJdLCJjaGFyIjoiXHVkODNkXHVkZTgxIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSxzbWFsbF9haXJwbGFuZTp7a2V5d29yZHM6WyJmbGlnaHQiLCJ0cmFuc3BvcnRhdGlvbiIsImZseSIsInZlaGljbGUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGVlOSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InRyYXZlbF9hbmRfcGxhY2VzIn0sYWlycGxhbmU6e2tleXdvcmRzOlsidmVoaWNsZSIsInRyYW5zcG9ydGF0aW9uIiwiZmxpZ2h0IiwiZmx5Il0sImNoYXIiOiJcdTI3MDhcdWZlMGYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJ0cmF2ZWxfYW5kX3BsYWNlcyJ9LGZsaWdodF9kZXBhcnR1cmU6e2tleXdvcmRzOlsiYWlycG9ydCIsImZsaWdodCIsImxhbmRpbmciXSwiY2hhciI6Ilx1ZDgzZFx1ZGVlYiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InRyYXZlbF9hbmRfcGxhY2VzIn0sZmxpZ2h0X2Fycml2YWw6e2tleXdvcmRzOlsiYWlycG9ydCIsImZsaWdodCIsImJvYXJkaW5nIl0sImNoYXIiOiJcdWQ4M2RcdWRlZWMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJ0cmF2ZWxfYW5kX3BsYWNlcyJ9LHNhaWxib2F0OntrZXl3b3JkczpbInNoaXAiLCJzdW1tZXIiLCJ0cmFuc3BvcnRhdGlvbiIsIndhdGVyIiwic2FpbGluZyJdLCJjaGFyIjoiXHUyNmY1IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSxtb3Rvcl9ib2F0OntrZXl3b3JkczpbInNoaXAiXSwiY2hhciI6Ilx1ZDgzZFx1ZGVlNSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InRyYXZlbF9hbmRfcGxhY2VzIn0sc3BlZWRib2F0OntrZXl3b3JkczpbInNoaXAiLCJ0cmFuc3BvcnRhdGlvbiIsInZlaGljbGUiLCJzdW1tZXIiXSwiY2hhciI6Ilx1ZDgzZFx1ZGVhNCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InRyYXZlbF9hbmRfcGxhY2VzIn0sZmVycnk6e2tleXdvcmRzOlsiYm9hdCIsInNoaXAiLCJ5YWNodCJdLCJjaGFyIjoiXHUyNmY0IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSxwYXNzZW5nZXJfc2hpcDp7a2V5d29yZHM6WyJ5YWNodCIsImNydWlzZSIsImZlcnJ5Il0sImNoYXIiOiJcdWQ4M2RcdWRlZjMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJ0cmF2ZWxfYW5kX3BsYWNlcyJ9LHJvY2tldDp7a2V5d29yZHM6WyJsYXVuY2giLCJzaGlwIiwic3RhZmZtb2RlIiwiTkFTQSIsIm91dGVyIHNwYWNlIiwib3V0ZXJfc3BhY2UiLCJmbHkiXSwiY2hhciI6Ilx1ZDgzZFx1ZGU4MCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InRyYXZlbF9hbmRfcGxhY2VzIn0sYXJ0aWZpY2lhbF9zYXRlbGxpdGU6e2tleXdvcmRzOlsiY29tbXVuaWNhdGlvbiIsImdwcyIsIm9yYml0Iiwic3BhY2VmbGlnaHQiLCJOQVNBIiwiSVNTIl0sImNoYXIiOiJcdWQ4M2RcdWRlZjAiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJ0cmF2ZWxfYW5kX3BsYWNlcyJ9LHNlYXQ6e2tleXdvcmRzOlsic2l0IiwiYWlycGxhbmUiLCJ0cmFuc3BvcnQiLCJidXMiLCJmbGlnaHQiLCJmbHkiXSwiY2hhciI6Ilx1ZDgzZFx1ZGNiYSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InRyYXZlbF9hbmRfcGxhY2VzIn0sY2Fub2U6e2tleXdvcmRzOlsiYm9hdCIsInBhZGRsZSIsIndhdGVyIiwic2hpcCJdLCJjaGFyIjoiXHVkODNkXHVkZWY2IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSxhbmNob3I6e2tleXdvcmRzOlsic2hpcCIsImZlcnJ5Iiwic2VhIiwiYm9hdCJdLCJjaGFyIjoiXHUyNjkzIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSxjb25zdHJ1Y3Rpb246e2tleXdvcmRzOlsid2lwIiwicHJvZ3Jlc3MiLCJjYXV0aW9uIiwid2FybmluZyJdLCJjaGFyIjoiXHVkODNkXHVkZWE3IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSxmdWVscHVtcDp7a2V5d29yZHM6WyJnYXMgc3RhdGlvbiIsInBldHJvbGV1bSJdLCJjaGFyIjoiXHUyNmZkIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSxidXNzdG9wOntrZXl3b3JkczpbInRyYW5zcG9ydGF0aW9uIiwid2FpdCJdLCJjaGFyIjoiXHVkODNkXHVkZThmIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSx2ZXJ0aWNhbF90cmFmZmljX2xpZ2h0OntrZXl3b3JkczpbInRyYW5zcG9ydGF0aW9uIiwiZHJpdmluZyJdLCJjaGFyIjoiXHVkODNkXHVkZWE2IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSx0cmFmZmljX2xpZ2h0OntrZXl3b3JkczpbInRyYW5zcG9ydGF0aW9uIiwic2lnbmFsIl0sImNoYXIiOiJcdWQ4M2RcdWRlYTUiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJ0cmF2ZWxfYW5kX3BsYWNlcyJ9LGNoZWNrZXJlZF9mbGFnOntrZXl3b3JkczpbImNvbnRlc3QiLCJmaW5pc2hsaW5lIiwicmFjZSIsImdva2FydCJdLCJjaGFyIjoiXHVkODNjXHVkZmMxIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSxzaGlwOntrZXl3b3JkczpbInRyYW5zcG9ydGF0aW9uIiwidGl0YW5pYyIsImRlcGxveSJdLCJjaGFyIjoiXHVkODNkXHVkZWEyIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSxmZXJyaXNfd2hlZWw6e2tleXdvcmRzOlsicGhvdG8iLCJjYXJuaXZhbCIsImxvbmRvbmV5ZSJdLCJjaGFyIjoiXHVkODNjXHVkZmExIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSxyb2xsZXJfY29hc3Rlcjp7a2V5d29yZHM6WyJjYXJuaXZhbCIsInBsYXlncm91bmQiLCJwaG90byIsImZ1biJdLCJjaGFyIjoiXHVkODNjXHVkZmEyIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSxjYXJvdXNlbF9ob3JzZTp7a2V5d29yZHM6WyJwaG90byIsImNhcm5pdmFsIl0sImNoYXIiOiJcdWQ4M2NcdWRmYTAiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJ0cmF2ZWxfYW5kX3BsYWNlcyJ9LGJ1aWxkaW5nX2NvbnN0cnVjdGlvbjp7a2V5d29yZHM6WyJ3aXAiLCJ3b3JraW5nIiwicHJvZ3Jlc3MiXSwiY2hhciI6Ilx1ZDgzY1x1ZGZkNyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InRyYXZlbF9hbmRfcGxhY2VzIn0sZm9nZ3k6e2tleXdvcmRzOlsicGhvdG8iLCJtb3VudGFpbiJdLCJjaGFyIjoiXHVkODNjXHVkZjAxIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSx0b2t5b190b3dlcjp7a2V5d29yZHM6WyJwaG90byIsImphcGFuZXNlIl0sImNoYXIiOiJcdWQ4M2RcdWRkZmMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJ0cmF2ZWxfYW5kX3BsYWNlcyJ9LGZhY3Rvcnk6e2tleXdvcmRzOlsiYnVpbGRpbmciLCJpbmR1c3RyeSIsInBvbGx1dGlvbiIsInNtb2tlIl0sImNoYXIiOiJcdWQ4M2NcdWRmZWQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJ0cmF2ZWxfYW5kX3BsYWNlcyJ9LGZvdW50YWluOntrZXl3b3JkczpbInBob3RvIiwic3VtbWVyIiwid2F0ZXIiLCJmcmVzaCJdLCJjaGFyIjoiXHUyNmYyIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSxyaWNlX3NjZW5lOntrZXl3b3JkczpbInBob3RvIiwiamFwYW4iLCJhc2lhIiwidHN1a2ltaSJdLCJjaGFyIjoiXHVkODNjXHVkZjkxIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSxtb3VudGFpbjp7a2V5d29yZHM6WyJwaG90byIsIm5hdHVyZSIsImVudmlyb25tZW50Il0sImNoYXIiOiJcdTI2ZjAiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJ0cmF2ZWxfYW5kX3BsYWNlcyJ9LG1vdW50YWluX3Nub3c6e2tleXdvcmRzOlsicGhvdG8iLCJuYXR1cmUiLCJlbnZpcm9ubWVudCIsIndpbnRlciIsImNvbGQiXSwiY2hhciI6Ilx1ZDgzY1x1ZGZkNCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InRyYXZlbF9hbmRfcGxhY2VzIn0sbW91bnRfZnVqaTp7a2V5d29yZHM6WyJwaG90byIsIm1vdW50YWluIiwibmF0dXJlIiwiamFwYW5lc2UiXSwiY2hhciI6Ilx1ZDgzZFx1ZGRmYiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InRyYXZlbF9hbmRfcGxhY2VzIn0sdm9sY2Fubzp7a2V5d29yZHM6WyJwaG90byIsIm5hdHVyZSIsImRpc2FzdGVyIl0sImNoYXIiOiJcdWQ4M2NcdWRmMGIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJ0cmF2ZWxfYW5kX3BsYWNlcyJ9LGphcGFuOntrZXl3b3JkczpbIm5hdGlvbiIsImNvdW50cnkiLCJqYXBhbmVzZSIsImFzaWEiXSwiY2hhciI6Ilx1ZDgzZFx1ZGRmZSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InRyYXZlbF9hbmRfcGxhY2VzIn0sY2FtcGluZzp7a2V5d29yZHM6WyJwaG90byIsIm91dGRvb3JzIiwidGVudCJdLCJjaGFyIjoiXHVkODNjXHVkZmQ1IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSx0ZW50OntrZXl3b3JkczpbInBob3RvIiwiY2FtcGluZyIsIm91dGRvb3JzIl0sImNoYXIiOiJcdTI2ZmEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJ0cmF2ZWxfYW5kX3BsYWNlcyJ9LG5hdGlvbmFsX3Bhcms6e2tleXdvcmRzOlsicGhvdG8iLCJlbnZpcm9ubWVudCIsIm5hdHVyZSJdLCJjaGFyIjoiXHVkODNjXHVkZmRlIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSxtb3RvcndheTp7a2V5d29yZHM6WyJyb2FkIiwiY3VwZXJ0aW5vIiwiaW50ZXJzdGF0ZSIsImhpZ2h3YXkiXSwiY2hhciI6Ilx1ZDgzZFx1ZGVlMyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InRyYXZlbF9hbmRfcGxhY2VzIn0scmFpbHdheV90cmFjazp7a2V5d29yZHM6WyJ0cmFpbiIsInRyYW5zcG9ydGF0aW9uIl0sImNoYXIiOiJcdWQ4M2RcdWRlZTQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJ0cmF2ZWxfYW5kX3BsYWNlcyJ9LHN1bnJpc2U6e2tleXdvcmRzOlsibW9ybmluZyIsInZpZXciLCJ2YWNhdGlvbiIsInBob3RvIl0sImNoYXIiOiJcdWQ4M2NcdWRmMDUiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJ0cmF2ZWxfYW5kX3BsYWNlcyJ9LHN1bnJpc2Vfb3Zlcl9tb3VudGFpbnM6e2tleXdvcmRzOlsidmlldyIsInZhY2F0aW9uIiwicGhvdG8iXSwiY2hhciI6Ilx1ZDgzY1x1ZGYwNCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InRyYXZlbF9hbmRfcGxhY2VzIn0sZGVzZXJ0OntrZXl3b3JkczpbInBob3RvIiwid2FybSIsInNhaGFyYWgiXSwiY2hhciI6Ilx1ZDgzY1x1ZGZkYyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InRyYXZlbF9hbmRfcGxhY2VzIn0sYmVhY2hfdW1icmVsbGE6e2tleXdvcmRzOlsid2VhdGhlciIsInN1bW1lciIsInN1bm55Iiwic2FuZCIsIm1vaml0byJdLCJjaGFyIjoiXHVkODNjXHVkZmQ2IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSxkZXNlcnRfaXNsYW5kOntrZXl3b3JkczpbInBob3RvIiwidHJvcGljYWwiLCJtb2ppdG8iXSwiY2hhciI6Ilx1ZDgzY1x1ZGZkZCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InRyYXZlbF9hbmRfcGxhY2VzIn0sY2l0eV9zdW5yaXNlOntrZXl3b3JkczpbInBob3RvIiwiZ29vZCBtb3JuaW5nIiwiZGF3biJdLCJjaGFyIjoiXHVkODNjXHVkZjA3IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSxjaXR5X3N1bnNldDp7a2V5d29yZHM6WyJwaG90byIsImV2ZW5pbmciLCJza3kiLCJidWlsZGluZ3MiXSwiY2hhciI6Ilx1ZDgzY1x1ZGYwNiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InRyYXZlbF9hbmRfcGxhY2VzIn0sY2l0eXNjYXBlOntrZXl3b3JkczpbInBob3RvIiwibmlnaHQgbGlmZSIsInVyYmFuIl0sImNoYXIiOiJcdWQ4M2NcdWRmZDkiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJ0cmF2ZWxfYW5kX3BsYWNlcyJ9LG5pZ2h0X3dpdGhfc3RhcnM6e2tleXdvcmRzOlsiZXZlbmluZyIsImNpdHkiLCJkb3dudG93biJdLCJjaGFyIjoiXHVkODNjXHVkZjAzIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSxicmlkZ2VfYXRfbmlnaHQ6e2tleXdvcmRzOlsicGhvdG8iLCJzYW5mcmFuY2lzY28iXSwiY2hhciI6Ilx1ZDgzY1x1ZGYwOSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InRyYXZlbF9hbmRfcGxhY2VzIn0sbWlsa3lfd2F5OntrZXl3b3JkczpbInBob3RvIiwic3BhY2UiLCJzdGFycyJdLCJjaGFyIjoiXHVkODNjXHVkZjBjIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSxzdGFyczp7a2V5d29yZHM6WyJuaWdodCIsInBob3RvIl0sImNoYXIiOiJcdWQ4M2NcdWRmMjAiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJ0cmF2ZWxfYW5kX3BsYWNlcyJ9LHNwYXJrbGVyOntrZXl3b3JkczpbInN0YXJzIiwibmlnaHQiLCJzaGluZSJdLCJjaGFyIjoiXHVkODNjXHVkZjg3IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSxmaXJld29ya3M6e2tleXdvcmRzOlsicGhvdG8iLCJmZXN0aXZhbCIsImNhcm5pdmFsIiwiY29uZ3JhdHVsYXRpb25zIl0sImNoYXIiOiJcdWQ4M2NcdWRmODYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJ0cmF2ZWxfYW5kX3BsYWNlcyJ9LHJhaW5ib3c6e2tleXdvcmRzOlsibmF0dXJlIiwiaGFwcHkiLCJ1bmljb3JuX2ZhY2UiLCJwaG90byIsInNreSIsInNwcmluZyJdLCJjaGFyIjoiXHVkODNjXHVkZjA4IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSxob3VzZXM6e2tleXdvcmRzOlsiYnVpbGRpbmdzIiwicGhvdG8iXSwiY2hhciI6Ilx1ZDgzY1x1ZGZkOCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InRyYXZlbF9hbmRfcGxhY2VzIn0sZXVyb3BlYW5fY2FzdGxlOntrZXl3b3JkczpbImJ1aWxkaW5nIiwicm95YWx0eSIsImhpc3RvcnkiXSwiY2hhciI6Ilx1ZDgzY1x1ZGZmMCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InRyYXZlbF9hbmRfcGxhY2VzIn0samFwYW5lc2VfY2FzdGxlOntrZXl3b3JkczpbInBob3RvIiwiYnVpbGRpbmciXSwiY2hhciI6Ilx1ZDgzY1x1ZGZlZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InRyYXZlbF9hbmRfcGxhY2VzIn0sc3RhZGl1bTp7a2V5d29yZHM6WyJwaG90byIsInBsYWNlIiwic3BvcnRzIiwiY29uY2VydCIsInZlbnVlIl0sImNoYXIiOiJcdWQ4M2NcdWRmZGYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJ0cmF2ZWxfYW5kX3BsYWNlcyJ9LHN0YXR1ZV9vZl9saWJlcnR5OntrZXl3b3JkczpbImFtZXJpY2FuIiwibmV3eW9yayJdLCJjaGFyIjoiXHVkODNkXHVkZGZkIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSxob3VzZTp7a2V5d29yZHM6WyJidWlsZGluZyIsImhvbWUiXSwiY2hhciI6Ilx1ZDgzY1x1ZGZlMCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InRyYXZlbF9hbmRfcGxhY2VzIn0saG91c2Vfd2l0aF9nYXJkZW46e2tleXdvcmRzOlsiaG9tZSIsInBsYW50IiwibmF0dXJlIl0sImNoYXIiOiJcdWQ4M2NcdWRmZTEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJ0cmF2ZWxfYW5kX3BsYWNlcyJ9LGRlcmVsaWN0X2hvdXNlOntrZXl3b3JkczpbImFiYW5kb24iLCJldmljdCIsImJyb2tlbiIsImJ1aWxkaW5nIl0sImNoYXIiOiJcdWQ4M2NcdWRmZGEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJ0cmF2ZWxfYW5kX3BsYWNlcyJ9LG9mZmljZTp7a2V5d29yZHM6WyJidWlsZGluZyIsImJ1cmVhdSIsIndvcmsiXSwiY2hhciI6Ilx1ZDgzY1x1ZGZlMiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InRyYXZlbF9hbmRfcGxhY2VzIn0sZGVwYXJ0bWVudF9zdG9yZTp7a2V5d29yZHM6WyJidWlsZGluZyIsInNob3BwaW5nIiwibWFsbCJdLCJjaGFyIjoiXHVkODNjXHVkZmVjIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSxwb3N0X29mZmljZTp7a2V5d29yZHM6WyJidWlsZGluZyIsImVudmVsb3BlIiwiY29tbXVuaWNhdGlvbiJdLCJjaGFyIjoiXHVkODNjXHVkZmUzIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSxldXJvcGVhbl9wb3N0X29mZmljZTp7a2V5d29yZHM6WyJidWlsZGluZyIsImVtYWlsIl0sImNoYXIiOiJcdWQ4M2NcdWRmZTQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJ0cmF2ZWxfYW5kX3BsYWNlcyJ9LGhvc3BpdGFsOntrZXl3b3JkczpbImJ1aWxkaW5nIiwiaGVhbHRoIiwic3VyZ2VyeSIsImRvY3RvciJdLCJjaGFyIjoiXHVkODNjXHVkZmU1IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSxiYW5rOntrZXl3b3JkczpbImJ1aWxkaW5nIiwibW9uZXkiLCJzYWxlcyIsImNhc2giLCJidXNpbmVzcyIsImVudGVycHJpc2UiXSwiY2hhciI6Ilx1ZDgzY1x1ZGZlNiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InRyYXZlbF9hbmRfcGxhY2VzIn0saG90ZWw6e2tleXdvcmRzOlsiYnVpbGRpbmciLCJhY2NvbW9kYXRpb24iLCJjaGVja2luIl0sImNoYXIiOiJcdWQ4M2NcdWRmZTgiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJ0cmF2ZWxfYW5kX3BsYWNlcyJ9LGNvbnZlbmllbmNlX3N0b3JlOntrZXl3b3JkczpbImJ1aWxkaW5nIiwic2hvcHBpbmciLCJncm9jZXJpZXMiXSwiY2hhciI6Ilx1ZDgzY1x1ZGZlYSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InRyYXZlbF9hbmRfcGxhY2VzIn0sc2Nob29sOntrZXl3b3JkczpbImJ1aWxkaW5nIiwic3R1ZGVudCIsImVkdWNhdGlvbiIsImxlYXJuIiwidGVhY2giXSwiY2hhciI6Ilx1ZDgzY1x1ZGZlYiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InRyYXZlbF9hbmRfcGxhY2VzIn0sbG92ZV9ob3RlbDp7a2V5d29yZHM6WyJsaWtlIiwiYWZmZWN0aW9uIiwiZGF0aW5nIl0sImNoYXIiOiJcdWQ4M2NcdWRmZTkiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJ0cmF2ZWxfYW5kX3BsYWNlcyJ9LHdlZGRpbmc6e2tleXdvcmRzOlsibG92ZSIsImxpa2UiLCJhZmZlY3Rpb24iLCJjb3VwbGUiLCJtYXJyaWFnZSIsImJyaWRlIiwiZ3Jvb20iXSwiY2hhciI6Ilx1ZDgzZFx1ZGM5MiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InRyYXZlbF9hbmRfcGxhY2VzIn0sY2xhc3NpY2FsX2J1aWxkaW5nOntrZXl3b3JkczpbImFydCIsImN1bHR1cmUiLCJoaXN0b3J5Il0sImNoYXIiOiJcdWQ4M2NcdWRmZGIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJ0cmF2ZWxfYW5kX3BsYWNlcyJ9LGNodXJjaDp7a2V5d29yZHM6WyJidWlsZGluZyIsInJlbGlnaW9uIiwiY2hyaXN0Il0sImNoYXIiOiJcdTI2ZWEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJ0cmF2ZWxfYW5kX3BsYWNlcyJ9LG1vc3F1ZTp7a2V5d29yZHM6WyJpc2xhbSIsIndvcnNoaXAiLCJtaW5hcmV0Il0sImNoYXIiOiJcdWQ4M2RcdWRkNGMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJ0cmF2ZWxfYW5kX3BsYWNlcyJ9LHN5bmFnb2d1ZTp7a2V5d29yZHM6WyJqdWRhaXNtIiwid29yc2hpcCIsInRlbXBsZSIsImpld2lzaCJdLCJjaGFyIjoiXHVkODNkXHVkZDRkIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSxrYWFiYTp7a2V5d29yZHM6WyJtZWNjYSIsIm1vc3F1ZSIsImlzbGFtIl0sImNoYXIiOiJcdWQ4M2RcdWRkNGIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJ0cmF2ZWxfYW5kX3BsYWNlcyJ9LHNoaW50b19zaHJpbmU6e2tleXdvcmRzOlsidGVtcGxlIiwiamFwYW4iLCJreW90byJdLCJjaGFyIjoiXHUyNmU5IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToidHJhdmVsX2FuZF9wbGFjZXMifSx3YXRjaDp7a2V5d29yZHM6WyJ0aW1lIiwiYWNjZXNzb3JpZXMiXSwiY2hhciI6Ilx1MjMxYSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxpcGhvbmU6e2tleXdvcmRzOlsidGVjaG5vbG9neSIsImFwcGxlIiwiZ2FkZ2V0cyIsImRpYWwiXSwiY2hhciI6Ilx1ZDgzZFx1ZGNmMSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxjYWxsaW5nOntrZXl3b3JkczpbImlwaG9uZSIsImluY29taW5nIl0sImNoYXIiOiJcdWQ4M2RcdWRjZjIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sY29tcHV0ZXI6e2tleXdvcmRzOlsidGVjaG5vbG9neSIsImxhcHRvcCIsInNjcmVlbiIsImRpc3BsYXkiLCJtb25pdG9yIl0sImNoYXIiOiJcdWQ4M2RcdWRjYmIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sa2V5Ym9hcmQ6e2tleXdvcmRzOlsidGVjaG5vbG9neSIsImNvbXB1dGVyIiwidHlwZSIsImlucHV0IiwidGV4dCJdLCJjaGFyIjoiXHUyMzI4IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LGRlc2t0b3BfY29tcHV0ZXI6e2tleXdvcmRzOlsidGVjaG5vbG9neSIsImNvbXB1dGluZyIsInNjcmVlbiJdLCJjaGFyIjoiXHVkODNkXHVkZGE1IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LHByaW50ZXI6e2tleXdvcmRzOlsicGFwZXIiLCJpbmsiXSwiY2hhciI6Ilx1ZDgzZFx1ZGRhOCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxjb21wdXRlcl9tb3VzZTp7a2V5d29yZHM6WyJjbGljayJdLCJjaGFyIjoiXHVkODNkXHVkZGIxIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LHRyYWNrYmFsbDp7a2V5d29yZHM6WyJ0ZWNobm9sb2d5IiwidHJhY2twYWQiXSwiY2hhciI6Ilx1ZDgzZFx1ZGRiMiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxqb3lzdGljazp7a2V5d29yZHM6WyJnYW1lIiwicGxheSJdLCJjaGFyIjoiXHVkODNkXHVkZDc5IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LGNsYW1wOntrZXl3b3JkczpbInRvb2wiXSwiY2hhciI6Ilx1ZDgzZFx1ZGRkYyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxtaW5pZGlzYzp7a2V5d29yZHM6WyJ0ZWNobm9sb2d5IiwicmVjb3JkIiwiZGF0YSIsImRpc2siLCI5MHMiXSwiY2hhciI6Ilx1ZDgzZFx1ZGNiZCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxmbG9wcHlfZGlzazp7a2V5d29yZHM6WyJvbGRzY2hvb2wiLCJ0ZWNobm9sb2d5Iiwic2F2ZSIsIjkwcyIsIjgwcyJdLCJjaGFyIjoiXHVkODNkXHVkY2JlIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LGNkOntrZXl3b3JkczpbInRlY2hub2xvZ3kiLCJkdmQiLCJkaXNrIiwiZGlzYyIsIjkwcyJdLCJjaGFyIjoiXHVkODNkXHVkY2JmIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LGR2ZDp7a2V5d29yZHM6WyJjZCIsImRpc2siLCJkaXNjIl0sImNoYXIiOiJcdWQ4M2RcdWRjYzAiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sdmhzOntrZXl3b3JkczpbInJlY29yZCIsInZpZGVvIiwib2xkc2Nob29sIiwiOTBzIiwiODBzIl0sImNoYXIiOiJcdWQ4M2RcdWRjZmMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sY2FtZXJhOntrZXl3b3JkczpbImdhZGdldHMiLCJwaG90b2dyYXBoeSJdLCJjaGFyIjoiXHVkODNkXHVkY2Y3IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LGNhbWVyYV9mbGFzaDp7a2V5d29yZHM6WyJwaG90b2dyYXBoeSIsImdhZGdldHMiXSwiY2hhciI6Ilx1ZDgzZFx1ZGNmOCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSx2aWRlb19jYW1lcmE6e2tleXdvcmRzOlsiZmlsbSIsInJlY29yZCJdLCJjaGFyIjoiXHVkODNkXHVkY2Y5IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LG1vdmllX2NhbWVyYTp7a2V5d29yZHM6WyJmaWxtIiwicmVjb3JkIl0sImNoYXIiOiJcdWQ4M2NcdWRmYTUiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sZmlsbV9wcm9qZWN0b3I6e2tleXdvcmRzOlsidmlkZW8iLCJ0YXBlIiwicmVjb3JkIiwibW92aWUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGNmZCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxmaWxtX3N0cmlwOntrZXl3b3JkczpbIm1vdmllIl0sImNoYXIiOiJcdWQ4M2NcdWRmOWUiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sdGVsZXBob25lX3JlY2VpdmVyOntrZXl3b3JkczpbInRlY2hub2xvZ3kiLCJjb21tdW5pY2F0aW9uIiwiZGlhbCJdLCJjaGFyIjoiXHVkODNkXHVkY2RlIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LHBob25lOntrZXl3b3JkczpbInRlY2hub2xvZ3kiLCJjb21tdW5pY2F0aW9uIiwiZGlhbCIsInRlbGVwaG9uZSJdLCJjaGFyIjoiXHUyNjBlXHVmZTBmIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LHBhZ2VyOntrZXl3b3JkczpbImJiY2FsbCIsIm9sZHNjaG9vbCIsIjkwcyJdLCJjaGFyIjoiXHVkODNkXHVkY2RmIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LGZheDp7a2V5d29yZHM6WyJjb21tdW5pY2F0aW9uIiwidGVjaG5vbG9neSJdLCJjaGFyIjoiXHVkODNkXHVkY2UwIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LHR2OntrZXl3b3JkczpbInRlY2hub2xvZ3kiLCJwcm9ncmFtIiwib2xkc2Nob29sIiwic2hvdyIsInRlbGV2aXNpb24iXSwiY2hhciI6Ilx1ZDgzZFx1ZGNmYSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxyYWRpbzp7a2V5d29yZHM6WyJjb21tdW5pY2F0aW9uIiwibXVzaWMiLCJwb2RjYXN0IiwicHJvZ3JhbSJdLCJjaGFyIjoiXHVkODNkXHVkY2ZiIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LHN0dWRpb19taWNyb3Bob25lOntrZXl3b3JkczpbInNpbmciLCJyZWNvcmRpbmciLCJhcnRpc3QiLCJ0YWxrc2hvdyJdLCJjaGFyIjoiXHVkODNjXHVkZjk5IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LGxldmVsX3NsaWRlcjp7a2V5d29yZHM6WyJzY2FsZSJdLCJjaGFyIjoiXHVkODNjXHVkZjlhIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LGNvbnRyb2xfa25vYnM6e2tleXdvcmRzOlsiZGlhbCJdLCJjaGFyIjoiXHVkODNjXHVkZjliIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LHN0b3B3YXRjaDp7a2V5d29yZHM6WyJ0aW1lIiwiZGVhZGxpbmUiXSwiY2hhciI6Ilx1MjNmMSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSx0aW1lcl9jbG9jazp7a2V5d29yZHM6WyJhbGFybSJdLCJjaGFyIjoiXHUyM2YyIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LGFsYXJtX2Nsb2NrOntrZXl3b3JkczpbInRpbWUiLCJ3YWtlIl0sImNoYXIiOiJcdTIzZjAiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sbWFudGVscGllY2VfY2xvY2s6e2tleXdvcmRzOlsidGltZSJdLCJjaGFyIjoiXHVkODNkXHVkZDcwIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LGhvdXJnbGFzc19mbG93aW5nX3NhbmQ6e2tleXdvcmRzOlsib2xkc2Nob29sIiwidGltZSIsImNvdW50ZG93biJdLCJjaGFyIjoiXHUyM2YzIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LGhvdXJnbGFzczp7a2V5d29yZHM6WyJ0aW1lIiwiY2xvY2siLCJvbGRzY2hvb2wiLCJsaW1pdCIsImV4YW0iLCJxdWl6IiwidGVzdCJdLCJjaGFyIjoiXHUyMzFiIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LHNhdGVsbGl0ZTp7a2V5d29yZHM6WyJjb21tdW5pY2F0aW9uIiwiZnV0dXJlIiwicmFkaW8iLCJzcGFjZSJdLCJjaGFyIjoiXHVkODNkXHVkY2UxIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LGJhdHRlcnk6e2tleXdvcmRzOlsicG93ZXIiLCJlbmVyZ3kiLCJzdXN0YWluIl0sImNoYXIiOiJcdWQ4M2RcdWRkMGIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sZWxlY3RyaWNfcGx1Zzp7a2V5d29yZHM6WyJjaGFyZ2VyIiwicG93ZXIiXSwiY2hhciI6Ilx1ZDgzZFx1ZGQwYyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxidWxiOntrZXl3b3JkczpbImxpZ2h0IiwiZWxlY3RyaWNpdHkiLCJpZGVhIl0sImNoYXIiOiJcdWQ4M2RcdWRjYTEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sZmxhc2hsaWdodDp7a2V5d29yZHM6WyJkYXJrIiwiY2FtcGluZyIsInNpZ2h0IiwibmlnaHQiXSwiY2hhciI6Ilx1ZDgzZFx1ZGQyNiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxjYW5kbGU6e2tleXdvcmRzOlsiZmlyZSIsIndheCJdLCJjaGFyIjoiXHVkODNkXHVkZDZmIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LHdhc3RlYmFza2V0OntrZXl3b3JkczpbImJpbiIsInRyYXNoIiwicnViYmlzaCIsImdhcmJhZ2UiLCJ0b3NzIl0sImNoYXIiOiJcdWQ4M2RcdWRkZDEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sb2lsX2RydW06e2tleXdvcmRzOlsiYmFycmVsbCJdLCJjaGFyIjoiXHVkODNkXHVkZWUyIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LG1vbmV5X3dpdGhfd2luZ3M6e2tleXdvcmRzOlsiZG9sbGFyIiwiYmlsbHMiLCJwYXltZW50Iiwic2FsZSJdLCJjaGFyIjoiXHVkODNkXHVkY2I4IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LGRvbGxhcjp7a2V5d29yZHM6WyJtb25leSIsInNhbGVzIiwiYmlsbCIsImN1cnJlbmN5Il0sImNoYXIiOiJcdWQ4M2RcdWRjYjUiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0seWVuOntrZXl3b3JkczpbIm1vbmV5Iiwic2FsZXMiLCJqYXBhbmVzZSIsImRvbGxhciIsImN1cnJlbmN5Il0sImNoYXIiOiJcdWQ4M2RcdWRjYjQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sZXVybzp7a2V5d29yZHM6WyJtb25leSIsInNhbGVzIiwiZG9sbGFyIiwiY3VycmVuY3kiXSwiY2hhciI6Ilx1ZDgzZFx1ZGNiNiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxwb3VuZDp7a2V5d29yZHM6WyJicml0aXNoIiwic3RlcmxpbmciLCJtb25leSIsInNhbGVzIiwiYmlsbHMiLCJ1ayIsImVuZ2xhbmQiLCJjdXJyZW5jeSJdLCJjaGFyIjoiXHVkODNkXHVkY2I3IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LG1vbmV5YmFnOntrZXl3b3JkczpbImRvbGxhciIsInBheW1lbnQiLCJjb2lucyIsInNhbGUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGNiMCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxjcmVkaXRfY2FyZDp7a2V5d29yZHM6WyJtb25leSIsInNhbGVzIiwiZG9sbGFyIiwiYmlsbCIsInBheW1lbnQiLCJzaG9wcGluZyJdLCJjaGFyIjoiXHVkODNkXHVkY2IzIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LGdlbTp7a2V5d29yZHM6WyJibHVlIiwicnVieSIsImRpYW1vbmQiLCJqZXdlbHJ5Il0sImNoYXIiOiJcdWQ4M2RcdWRjOGUiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sYmFsYW5jZV9zY2FsZTp7a2V5d29yZHM6WyJsYXciLCJmYWlybmVzcyIsIndlaWdodCJdLCJjaGFyIjoiXHUyNjk2IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LHdyZW5jaDp7a2V5d29yZHM6WyJ0b29scyIsImRpeSIsImlrZWEiLCJmaXgiLCJtYWludGFpbmVyIl0sImNoYXIiOiJcdWQ4M2RcdWRkMjciLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0saGFtbWVyOntrZXl3b3JkczpbInRvb2xzIiwiYnVpbGQiLCJjcmVhdGUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGQyOCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxoYW1tZXJfYW5kX3BpY2s6e2tleXdvcmRzOlsidG9vbHMiLCJidWlsZCIsImNyZWF0ZSJdLCJjaGFyIjoiXHUyNjkyIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LGhhbW1lcl9hbmRfd3JlbmNoOntrZXl3b3JkczpbInRvb2xzIiwiYnVpbGQiLCJjcmVhdGUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGVlMCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxwaWNrOntrZXl3b3JkczpbInRvb2xzIiwiZGlnIl0sImNoYXIiOiJcdTI2Y2YiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sbnV0X2FuZF9ib2x0OntrZXl3b3JkczpbImhhbmR5IiwidG9vbHMiLCJmaXgiXSwiY2hhciI6Ilx1ZDgzZFx1ZGQyOSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxnZWFyOntrZXl3b3JkczpbImNvZyJdLCJjaGFyIjoiXHUyNjk5IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LGNoYWluczp7a2V5d29yZHM6WyJsb2NrIiwiYXJyZXN0Il0sImNoYXIiOiJcdTI2ZDMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sZ3VuOntrZXl3b3JkczpbInZpb2xlbmNlIiwid2VhcG9uIiwicGlzdG9sIiwicmV2b2x2ZXIiXSwiY2hhciI6Ilx1ZDgzZFx1ZGQyYiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxib21iOntrZXl3b3JkczpbImJvb20iLCJleHBsb2RlIiwiZXhwbG9zaW9uIiwidGVycm9yaXNtIl0sImNoYXIiOiJcdWQ4M2RcdWRjYTMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0saG9jaG86e2tleXdvcmRzOlsia25pZmUiLCJibGFkZSIsImN1dGxlcnkiLCJraXRjaGVuIiwid2VhcG9uIl0sImNoYXIiOiJcdWQ4M2RcdWRkMmEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sZGFnZ2VyOntrZXl3b3JkczpbIndlYXBvbiJdLCJjaGFyIjoiXHVkODNkXHVkZGUxIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LGNyb3NzZWRfc3dvcmRzOntrZXl3b3JkczpbIndlYXBvbiJdLCJjaGFyIjoiXHUyNjk0IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LHNoaWVsZDp7a2V5d29yZHM6WyJwcm90ZWN0aW9uIiwic2VjdXJpdHkiXSwiY2hhciI6Ilx1ZDgzZFx1ZGVlMSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxzbW9raW5nOntrZXl3b3JkczpbImtpbGxzIiwidG9iYWNjbyIsImNpZ2FyZXR0ZSIsImpvaW50Iiwic21va2UiXSwiY2hhciI6Ilx1ZDgzZFx1ZGVhYyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxza3VsbF9hbmRfY3Jvc3Nib25lczp7a2V5d29yZHM6WyJwb2lzb24iLCJkYW5nZXIiLCJkZWFkbHkiLCJzY2FyeSIsImRlYXRoIiwicGlyYXRlIiwiZXZpbCJdLCJjaGFyIjoiXHUyNjIwIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LGNvZmZpbjp7a2V5d29yZHM6WyJ2YW1waXJlIiwiZGVhZCIsImRpZSIsImRlYXRoIiwicmlwIiwiZ3JhdmV5YXJkIiwiY2VtZXRlcnkiLCJjYXNrZXQiLCJmdW5lcmFsIiwiYm94Il0sImNoYXIiOiJcdTI2YjAiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sZnVuZXJhbF91cm46e2tleXdvcmRzOlsiZGVhZCIsImRpZSIsImRlYXRoIiwicmlwIiwiYXNoZXMiXSwiY2hhciI6Ilx1MjZiMSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxhbXBob3JhOntrZXl3b3JkczpbInZhc2UiLCJqYXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGZmYSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxjcnlzdGFsX2JhbGw6e2tleXdvcmRzOlsiZGlzY28iLCJwYXJ0eSIsIm1hZ2ljIiwiY2lyY3VzIiwiZm9ydHVuZV90ZWxsZXIiXSwiY2hhciI6Ilx1ZDgzZFx1ZGQyZSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxwcmF5ZXJfYmVhZHM6e2tleXdvcmRzOlsiZGhpa3IiLCJyZWxpZ2lvdXMiXSwiY2hhciI6Ilx1ZDgzZFx1ZGNmZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxiYXJiZXI6e2tleXdvcmRzOlsiaGFpciIsInNhbG9uIiwic3R5bGUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGM4OCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxhbGVtYmljOntrZXl3b3JkczpbImRpc3RpbGxpbmciLCJzY2llbmNlIiwiZXhwZXJpbWVudCIsImNoZW1pc3RyeSJdLCJjaGFyIjoiXHUyNjk3IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LHRlbGVzY29wZTp7a2V5d29yZHM6WyJzdGFycyIsInNwYWNlIiwiem9vbSIsInNjaWVuY2UiLCJhc3Ryb25vbXkiXSwiY2hhciI6Ilx1ZDgzZFx1ZGQyZCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxtaWNyb3Njb3BlOntrZXl3b3JkczpbImxhYm9yYXRvcnkiLCJleHBlcmltZW50Iiwiem9vbWluIiwic2NpZW5jZSIsInN0dWR5Il0sImNoYXIiOiJcdWQ4M2RcdWRkMmMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0saG9sZTp7a2V5d29yZHM6WyJlbWJhcnJhc3NpbmciXSwiY2hhciI6Ilx1ZDgzZFx1ZGQ3MyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxwaWxsOntrZXl3b3JkczpbImhlYWx0aCIsIm1lZGljaW5lIiwiZG9jdG9yIiwicGhhcm1hY3kiLCJkcnVnIl0sImNoYXIiOiJcdWQ4M2RcdWRjOGEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sc3lyaW5nZTp7a2V5d29yZHM6WyJoZWFsdGgiLCJob3NwaXRhbCIsImRydWdzIiwiYmxvb2QiLCJtZWRpY2luZSIsIm5lZWRsZSIsImRvY3RvciIsIm51cnNlIl0sImNoYXIiOiJcdWQ4M2RcdWRjODkiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sdGhlcm1vbWV0ZXI6e2tleXdvcmRzOlsid2VhdGhlciIsInRlbXBlcmF0dXJlIiwiaG90IiwiY29sZCJdLCJjaGFyIjoiXHVkODNjXHVkZjIxIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LGxhYmVsOntrZXl3b3JkczpbInNhbGUiLCJ0YWciXSwiY2hhciI6Ilx1ZDgzY1x1ZGZmNyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxib29rbWFyazp7a2V5d29yZHM6WyJmYXZvcml0ZSIsImxhYmVsIiwic2F2ZSJdLCJjaGFyIjoiXHVkODNkXHVkZDE2IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LHRvaWxldDp7a2V5d29yZHM6WyJyZXN0cm9vbSIsIndjIiwid2FzaHJvb20iLCJiYXRocm9vbSIsInBvdHR5Il0sImNoYXIiOiJcdWQ4M2RcdWRlYmQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sc2hvd2VyOntrZXl3b3JkczpbImNsZWFuIiwid2F0ZXIiLCJiYXRocm9vbSJdLCJjaGFyIjoiXHVkODNkXHVkZWJmIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LGJhdGh0dWI6e2tleXdvcmRzOlsiY2xlYW4iLCJzaG93ZXIiLCJiYXRocm9vbSJdLCJjaGFyIjoiXHVkODNkXHVkZWMxIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LGtleTp7a2V5d29yZHM6WyJsb2NrIiwiZG9vciIsInBhc3N3b3JkIl0sImNoYXIiOiJcdWQ4M2RcdWRkMTEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sb2xkX2tleTp7a2V5d29yZHM6WyJsb2NrIiwiZG9vciIsInBhc3N3b3JkIl0sImNoYXIiOiJcdWQ4M2RcdWRkZGQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sY291Y2hfYW5kX2xhbXA6e2tleXdvcmRzOlsicmVhZCIsImNoaWxsIl0sImNoYXIiOiJcdWQ4M2RcdWRlY2IiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sc2xlZXBpbmdfYmVkOntrZXl3b3JkczpbImJlZCIsInJlc3QiXSwiY2hhciI6Ilx1ZDgzZFx1ZGVjYyIsZml0enBhdHJpY2tfc2NhbGU6ITAsY2F0ZWdvcnk6Im9iamVjdHMifSxiZWQ6e2tleXdvcmRzOlsic2xlZXAiLCJyZXN0Il0sImNoYXIiOiJcdWQ4M2RcdWRlY2YiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sZG9vcjp7a2V5d29yZHM6WyJob3VzZSIsImVudHJ5IiwiZXhpdCJdLCJjaGFyIjoiXHVkODNkXHVkZWFhIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LGJlbGxob3BfYmVsbDp7a2V5d29yZHM6WyJzZXJ2aWNlIl0sImNoYXIiOiJcdWQ4M2RcdWRlY2UiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sZnJhbWVkX3BpY3R1cmU6e2tleXdvcmRzOlsicGhvdG9ncmFwaHkiXSwiY2hhciI6Ilx1ZDgzZFx1ZGRiYyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSx3b3JsZF9tYXA6e2tleXdvcmRzOlsibG9jYXRpb24iLCJkaXJlY3Rpb24iXSwiY2hhciI6Ilx1ZDgzZFx1ZGRmYSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxwYXJhc29sX29uX2dyb3VuZDp7a2V5d29yZHM6WyJ3ZWF0aGVyIiwic3VtbWVyIl0sImNoYXIiOiJcdTI2ZjEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sbW95YWk6e2tleXdvcmRzOlsicm9jayIsImVhc3RlciBpc2xhbmQiLCJtb2FpIl0sImNoYXIiOiJcdWQ4M2RcdWRkZmYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sc2hvcHBpbmc6e2tleXdvcmRzOlsibWFsbCIsImJ1eSIsInB1cmNoYXNlIl0sImNoYXIiOiJcdWQ4M2RcdWRlY2QiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sc2hvcHBpbmdfY2FydDp7a2V5d29yZHM6WyJ0cm9sbGV5Il0sImNoYXIiOiJcdWQ4M2RcdWRlZDIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sYmFsbG9vbjp7a2V5d29yZHM6WyJwYXJ0eSIsImNlbGVicmF0aW9uIiwiYmlydGhkYXkiLCJjaXJjdXMiXSwiY2hhciI6Ilx1ZDgzY1x1ZGY4OCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxmbGFnczp7a2V5d29yZHM6WyJmaXNoIiwiamFwYW5lc2UiLCJrb2lub2JvcmkiLCJjYXJwIiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRmOGYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0scmliYm9uOntrZXl3b3JkczpbImRlY29yYXRpb24iLCJwaW5rIiwiZ2lybCIsImJvd3RpZSJdLCJjaGFyIjoiXHVkODNjXHVkZjgwIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LGdpZnQ6e2tleXdvcmRzOlsicHJlc2VudCIsImJpcnRoZGF5IiwiY2hyaXN0bWFzIiwieG1hcyJdLCJjaGFyIjoiXHVkODNjXHVkZjgxIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LGNvbmZldHRpX2JhbGw6e2tleXdvcmRzOlsiZmVzdGl2YWwiLCJwYXJ0eSIsImJpcnRoZGF5IiwiY2lyY3VzIl0sImNoYXIiOiJcdWQ4M2NcdWRmOGEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sdGFkYTp7a2V5d29yZHM6WyJwYXJ0eSIsImNvbmdyYXR1bGF0aW9ucyIsImJpcnRoZGF5IiwibWFnaWMiLCJjaXJjdXMiLCJjZWxlYnJhdGlvbiJdLCJjaGFyIjoiXHVkODNjXHVkZjg5IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LGRvbGxzOntrZXl3b3JkczpbImphcGFuZXNlIiwidG95Iiwia2ltb25vIl0sImNoYXIiOiJcdWQ4M2NcdWRmOGUiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sd2luZF9jaGltZTp7a2V5d29yZHM6WyJuYXR1cmUiLCJkaW5nIiwic3ByaW5nIiwiYmVsbCJdLCJjaGFyIjoiXHVkODNjXHVkZjkwIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LGNyb3NzZWRfZmxhZ3M6e2tleXdvcmRzOlsiamFwYW5lc2UiLCJuYXRpb24iLCJjb3VudHJ5IiwiYm9yZGVyIl0sImNoYXIiOiJcdWQ4M2NcdWRmOGMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0saXpha2F5YV9sYW50ZXJuOntrZXl3b3JkczpbImxpZ2h0IiwicGFwZXIiLCJoYWxsb3dlZW4iLCJzcG9va3kiXSwiY2hhciI6Ilx1ZDgzY1x1ZGZlZSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxlbWFpbDp7a2V5d29yZHM6WyJsZXR0ZXIiLCJwb3N0YWwiLCJpbmJveCIsImNvbW11bmljYXRpb24iXSwiY2hhciI6Ilx1MjcwOVx1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxlbnZlbG9wZV93aXRoX2Fycm93OntrZXl3b3JkczpbImVtYWlsIiwiY29tbXVuaWNhdGlvbiJdLCJjaGFyIjoiXHVkODNkXHVkY2U5IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LGluY29taW5nX2VudmVsb3BlOntrZXl3b3JkczpbImVtYWlsIiwiaW5ib3giXSwiY2hhciI6Ilx1ZDgzZFx1ZGNlOCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSwiZS1tYWlsIjp7a2V5d29yZHM6WyJjb21tdW5pY2F0aW9uIiwiaW5ib3giXSwiY2hhciI6Ilx1ZDgzZFx1ZGNlNyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxsb3ZlX2xldHRlcjp7a2V5d29yZHM6WyJlbWFpbCIsImxpa2UiLCJhZmZlY3Rpb24iLCJlbnZlbG9wZSIsInZhbGVudGluZXMiXSwiY2hhciI6Ilx1ZDgzZFx1ZGM4YyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxwb3N0Ym94OntrZXl3b3JkczpbImVtYWlsIiwibGV0dGVyIiwiZW52ZWxvcGUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGNlZSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxtYWlsYm94X2Nsb3NlZDp7a2V5d29yZHM6WyJlbWFpbCIsImNvbW11bmljYXRpb24iLCJpbmJveCJdLCJjaGFyIjoiXHVkODNkXHVkY2VhIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LG1haWxib3g6e2tleXdvcmRzOlsiZW1haWwiLCJpbmJveCIsImNvbW11bmljYXRpb24iXSwiY2hhciI6Ilx1ZDgzZFx1ZGNlYiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxtYWlsYm94X3dpdGhfbWFpbDp7a2V5d29yZHM6WyJlbWFpbCIsImluYm94IiwiY29tbXVuaWNhdGlvbiJdLCJjaGFyIjoiXHVkODNkXHVkY2VjIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LG1haWxib3hfd2l0aF9ub19tYWlsOntrZXl3b3JkczpbImVtYWlsIiwiaW5ib3giXSwiY2hhciI6Ilx1ZDgzZFx1ZGNlZCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSwicGFja2FnZSI6e2tleXdvcmRzOlsibWFpbCIsImdpZnQiLCJjYXJkYm9hcmQiLCJib3giLCJtb3ZpbmciXSwiY2hhciI6Ilx1ZDgzZFx1ZGNlNiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxwb3N0YWxfaG9ybjp7a2V5d29yZHM6WyJpbnN0cnVtZW50IiwibXVzaWMiXSwiY2hhciI6Ilx1ZDgzZFx1ZGNlZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxpbmJveF90cmF5OntrZXl3b3JkczpbImVtYWlsIiwiZG9jdW1lbnRzIl0sImNoYXIiOiJcdWQ4M2RcdWRjZTUiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sb3V0Ym94X3RyYXk6e2tleXdvcmRzOlsiaW5ib3giLCJlbWFpbCJdLCJjaGFyIjoiXHVkODNkXHVkY2U0IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LHNjcm9sbDp7a2V5d29yZHM6WyJkb2N1bWVudHMiLCJhbmNpZW50IiwiaGlzdG9yeSIsInBhcGVyIl0sImNoYXIiOiJcdWQ4M2RcdWRjZGMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0scGFnZV93aXRoX2N1cmw6e2tleXdvcmRzOlsiZG9jdW1lbnRzIiwib2ZmaWNlIiwicGFwZXIiXSwiY2hhciI6Ilx1ZDgzZFx1ZGNjMyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxib29rbWFya190YWJzOntrZXl3b3JkczpbImZhdm9yaXRlIiwic2F2ZSIsIm9yZGVyIiwidGlkeSJdLCJjaGFyIjoiXHVkODNkXHVkY2QxIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LGJhcl9jaGFydDp7a2V5d29yZHM6WyJncmFwaCIsInByZXNlbnRhdGlvbiIsInN0YXRzIl0sImNoYXIiOiJcdWQ4M2RcdWRjY2EiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sY2hhcnRfd2l0aF91cHdhcmRzX3RyZW5kOntrZXl3b3JkczpbImdyYXBoIiwicHJlc2VudGF0aW9uIiwic3RhdHMiLCJyZWNvdmVyeSIsImJ1c2luZXNzIiwiZWNvbm9taWNzIiwibW9uZXkiLCJzYWxlcyIsImdvb2QiLCJzdWNjZXNzIl0sImNoYXIiOiJcdWQ4M2RcdWRjYzgiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sY2hhcnRfd2l0aF9kb3dud2FyZHNfdHJlbmQ6e2tleXdvcmRzOlsiZ3JhcGgiLCJwcmVzZW50YXRpb24iLCJzdGF0cyIsInJlY2Vzc2lvbiIsImJ1c2luZXNzIiwiZWNvbm9taWNzIiwibW9uZXkiLCJzYWxlcyIsImJhZCIsImZhaWx1cmUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGNjOSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxwYWdlX2ZhY2luZ191cDp7a2V5d29yZHM6WyJkb2N1bWVudHMiLCJvZmZpY2UiLCJwYXBlciIsImluZm9ybWF0aW9uIl0sImNoYXIiOiJcdWQ4M2RcdWRjYzQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sZGF0ZTp7a2V5d29yZHM6WyJjYWxlbmRhciIsInNjaGVkdWxlIl0sImNoYXIiOiJcdWQ4M2RcdWRjYzUiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sY2FsZW5kYXI6e2tleXdvcmRzOlsic2NoZWR1bGUiLCJkYXRlIiwicGxhbm5pbmciXSwiY2hhciI6Ilx1ZDgzZFx1ZGNjNiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxzcGlyYWxfY2FsZW5kYXI6e2tleXdvcmRzOlsiZGF0ZSIsInNjaGVkdWxlIiwicGxhbm5pbmciXSwiY2hhciI6Ilx1ZDgzZFx1ZGRkMyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxjYXJkX2luZGV4OntrZXl3b3JkczpbImJ1c2luZXNzIiwic3RhdGlvbmVyeSJdLCJjaGFyIjoiXHVkODNkXHVkY2M3IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LGNhcmRfZmlsZV9ib3g6e2tleXdvcmRzOlsiYnVzaW5lc3MiLCJzdGF0aW9uZXJ5Il0sImNoYXIiOiJcdWQ4M2RcdWRkYzMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sYmFsbG90X2JveDp7a2V5d29yZHM6WyJlbGVjdGlvbiIsInZvdGUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGRmMyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxmaWxlX2NhYmluZXQ6e2tleXdvcmRzOlsiZmlsaW5nIiwib3JnYW5pemluZyJdLCJjaGFyIjoiXHVkODNkXHVkZGM0IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LGNsaXBib2FyZDp7a2V5d29yZHM6WyJzdGF0aW9uZXJ5IiwiZG9jdW1lbnRzIl0sImNoYXIiOiJcdWQ4M2RcdWRjY2IiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sc3BpcmFsX25vdGVwYWQ6e2tleXdvcmRzOlsibWVtbyIsInN0YXRpb25lcnkiXSwiY2hhciI6Ilx1ZDgzZFx1ZGRkMiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxmaWxlX2ZvbGRlcjp7a2V5d29yZHM6WyJkb2N1bWVudHMiLCJidXNpbmVzcyIsIm9mZmljZSJdLCJjaGFyIjoiXHVkODNkXHVkY2MxIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LG9wZW5fZmlsZV9mb2xkZXI6e2tleXdvcmRzOlsiZG9jdW1lbnRzIiwibG9hZCJdLCJjaGFyIjoiXHVkODNkXHVkY2MyIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LGNhcmRfaW5kZXhfZGl2aWRlcnM6e2tleXdvcmRzOlsib3JnYW5pemluZyIsImJ1c2luZXNzIiwic3RhdGlvbmVyeSJdLCJjaGFyIjoiXHVkODNkXHVkZGMyIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LG5ld3NwYXBlcl9yb2xsOntrZXl3b3JkczpbInByZXNzIiwiaGVhZGxpbmUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGRkZSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxuZXdzcGFwZXI6e2tleXdvcmRzOlsicHJlc3MiLCJoZWFkbGluZSJdLCJjaGFyIjoiXHVkODNkXHVkY2YwIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LG5vdGVib29rOntrZXl3b3JkczpbInN0YXRpb25lcnkiLCJyZWNvcmQiLCJub3RlcyIsInBhcGVyIiwic3R1ZHkiXSwiY2hhciI6Ilx1ZDgzZFx1ZGNkMyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxjbG9zZWRfYm9vazp7a2V5d29yZHM6WyJyZWFkIiwibGlicmFyeSIsImtub3dsZWRnZSIsInRleHRib29rIiwibGVhcm4iXSwiY2hhciI6Ilx1ZDgzZFx1ZGNkNSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxncmVlbl9ib29rOntrZXl3b3JkczpbInJlYWQiLCJsaWJyYXJ5Iiwia25vd2xlZGdlIiwic3R1ZHkiXSwiY2hhciI6Ilx1ZDgzZFx1ZGNkNyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxibHVlX2Jvb2s6e2tleXdvcmRzOlsicmVhZCIsImxpYnJhcnkiLCJrbm93bGVkZ2UiLCJsZWFybiIsInN0dWR5Il0sImNoYXIiOiJcdWQ4M2RcdWRjZDgiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sb3JhbmdlX2Jvb2s6e2tleXdvcmRzOlsicmVhZCIsImxpYnJhcnkiLCJrbm93bGVkZ2UiLCJ0ZXh0Ym9vayIsInN0dWR5Il0sImNoYXIiOiJcdWQ4M2RcdWRjZDkiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sbm90ZWJvb2tfd2l0aF9kZWNvcmF0aXZlX2NvdmVyOntrZXl3b3JkczpbImNsYXNzcm9vbSIsIm5vdGVzIiwicmVjb3JkIiwicGFwZXIiLCJzdHVkeSJdLCJjaGFyIjoiXHVkODNkXHVkY2Q0IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LGxlZGdlcjp7a2V5d29yZHM6WyJub3RlcyIsInBhcGVyIl0sImNoYXIiOiJcdWQ4M2RcdWRjZDIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sYm9va3M6e2tleXdvcmRzOlsibGl0ZXJhdHVyZSIsImxpYnJhcnkiLCJzdHVkeSJdLCJjaGFyIjoiXHVkODNkXHVkY2RhIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LG9wZW5fYm9vazp7a2V5d29yZHM6WyJib29rIiwicmVhZCIsImxpYnJhcnkiLCJrbm93bGVkZ2UiLCJsaXRlcmF0dXJlIiwibGVhcm4iLCJzdHVkeSJdLCJjaGFyIjoiXHVkODNkXHVkY2Q2IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LGxpbms6e2tleXdvcmRzOlsicmluZ3MiLCJ1cmwiXSwiY2hhciI6Ilx1ZDgzZFx1ZGQxNyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxwYXBlcmNsaXA6e2tleXdvcmRzOlsiZG9jdW1lbnRzIiwic3RhdGlvbmVyeSJdLCJjaGFyIjoiXHVkODNkXHVkY2NlIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LHBhcGVyY2xpcHM6e2tleXdvcmRzOlsiZG9jdW1lbnRzIiwic3RhdGlvbmVyeSJdLCJjaGFyIjoiXHVkODNkXHVkZDg3IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LHNjaXNzb3JzOntrZXl3b3JkczpbInN0YXRpb25lcnkiLCJjdXQiXSwiY2hhciI6Ilx1MjcwMlx1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSx0cmlhbmd1bGFyX3J1bGVyOntrZXl3b3JkczpbInN0YXRpb25lcnkiLCJtYXRoIiwiYXJjaGl0ZWN0Iiwic2tldGNoIl0sImNoYXIiOiJcdWQ4M2RcdWRjZDAiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sc3RyYWlnaHRfcnVsZXI6e2tleXdvcmRzOlsic3RhdGlvbmVyeSIsImNhbGN1bGF0ZSIsImxlbmd0aCIsIm1hdGgiLCJzY2hvb2wiLCJkcmF3aW5nIiwiYXJjaGl0ZWN0Iiwic2tldGNoIl0sImNoYXIiOiJcdWQ4M2RcdWRjY2YiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0scHVzaHBpbjp7a2V5d29yZHM6WyJzdGF0aW9uZXJ5IiwibWFyayIsImhlcmUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGNjYyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxyb3VuZF9wdXNocGluOntrZXl3b3JkczpbInN0YXRpb25lcnkiLCJsb2NhdGlvbiIsIm1hcCIsImhlcmUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGNjZCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSx0cmlhbmd1bGFyX2ZsYWdfb25fcG9zdDp7a2V5d29yZHM6WyJtYXJrIiwibWlsZXN0b25lIiwicGxhY2UiXSwiY2hhciI6Ilx1ZDgzZFx1ZGVhOSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSx3aGl0ZV9mbGFnOntrZXl3b3JkczpbImxvc2luZyIsImxvc2VyIiwibG9zdCIsInN1cnJlbmRlciIsImdpdmUgdXAiLCJmYWlsIl0sImNoYXIiOiJcdWQ4M2NcdWRmZjMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sYmxhY2tfZmxhZzp7a2V5d29yZHM6WyJwaXJhdGUiXSwiY2hhciI6Ilx1ZDgzY1x1ZGZmNCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxyYWluYm93X2ZsYWc6e2tleXdvcmRzOlsiZmxhZyIsInJhaW5ib3ciLCJwcmlkZSIsImdheSIsImxnYnQiLCJnbGJ0IiwicXVlZXIiLCJob21vc2V4dWFsIiwibGVzYmlhbiIsImJpc2V4dWFsIiwidHJhbnNnZW5kZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGZmM1x1ZmUwZlx1MjAwZFx1ZDgzY1x1ZGYwOCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxjbG9zZWRfbG9ja193aXRoX2tleTp7a2V5d29yZHM6WyJzZWN1cml0eSIsInByaXZhY3kiXSwiY2hhciI6Ilx1ZDgzZFx1ZGQxMCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxsb2NrOntrZXl3b3JkczpbInNlY3VyaXR5IiwicGFzc3dvcmQiLCJwYWRsb2NrIl0sImNoYXIiOiJcdWQ4M2RcdWRkMTIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sdW5sb2NrOntrZXl3b3JkczpbInByaXZhY3kiLCJzZWN1cml0eSJdLCJjaGFyIjoiXHVkODNkXHVkZDEzIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LGxvY2tfd2l0aF9pbmtfcGVuOntrZXl3b3JkczpbInNlY3VyaXR5Iiwic2VjcmV0Il0sImNoYXIiOiJcdWQ4M2RcdWRkMGYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0scGVuOntrZXl3b3JkczpbInN0YXRpb25lcnkiLCJ3cml0aW5nIiwid3JpdGUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGQ4YSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxmb3VudGFpbl9wZW46e2tleXdvcmRzOlsic3RhdGlvbmVyeSIsIndyaXRpbmciLCJ3cml0ZSJdLCJjaGFyIjoiXHVkODNkXHVkZDhiIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LGJsYWNrX25pYjp7a2V5d29yZHM6WyJwZW4iLCJzdGF0aW9uZXJ5Iiwid3JpdGluZyIsIndyaXRlIl0sImNoYXIiOiJcdTI3MTJcdWZlMGYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sbWVtbzp7a2V5d29yZHM6WyJ3cml0ZSIsImRvY3VtZW50cyIsInN0YXRpb25lcnkiLCJwZW5jaWwiLCJwYXBlciIsIndyaXRpbmciLCJsZWdhbCIsImV4YW0iLCJxdWl6IiwidGVzdCIsInN0dWR5IiwiY29tcG9zZSJdLCJjaGFyIjoiXHVkODNkXHVkY2RkIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToib2JqZWN0cyJ9LHBlbmNpbDI6e2tleXdvcmRzOlsic3RhdGlvbmVyeSIsIndyaXRlIiwicGFwZXIiLCJ3cml0aW5nIiwic2Nob29sIiwic3R1ZHkiXSwiY2hhciI6Ilx1MjcwZlx1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxjcmF5b246e2tleXdvcmRzOlsiZHJhd2luZyIsImNyZWF0aXZpdHkiXSwiY2hhciI6Ilx1ZDgzZFx1ZGQ4ZCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6Im9iamVjdHMifSxwYWludGJydXNoOntrZXl3b3JkczpbImRyYXdpbmciLCJjcmVhdGl2aXR5IiwiYXJ0Il0sImNoYXIiOiJcdWQ4M2RcdWRkOGMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sbWFnOntrZXl3b3JkczpbInNlYXJjaCIsInpvb20iLCJmaW5kIiwiZGV0ZWN0aXZlIl0sImNoYXIiOiJcdWQ4M2RcdWRkMGQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0sbWFnX3JpZ2h0OntrZXl3b3JkczpbInNlYXJjaCIsInpvb20iLCJmaW5kIiwiZGV0ZWN0aXZlIl0sImNoYXIiOiJcdWQ4M2RcdWRkMGUiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJvYmplY3RzIn0saGVhcnQ6e2tleXdvcmRzOlsibG92ZSIsImxpa2UiLCJ2YWxlbnRpbmVzIl0sImNoYXIiOiJcdTI3NjRcdWZlMGYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sb3JhbmdlX2hlYXJ0OntrZXl3b3JkczpbImxvdmUiLCJsaWtlIiwiYWZmZWN0aW9uIiwidmFsZW50aW5lcyJdLCJjaGFyIjoiXHVkODNlXHVkZGUxIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LHllbGxvd19oZWFydDp7a2V5d29yZHM6WyJsb3ZlIiwibGlrZSIsImFmZmVjdGlvbiIsInZhbGVudGluZXMiXSwiY2hhciI6Ilx1ZDgzZFx1ZGM5YiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxncmVlbl9oZWFydDp7a2V5d29yZHM6WyJsb3ZlIiwibGlrZSIsImFmZmVjdGlvbiIsInZhbGVudGluZXMiXSwiY2hhciI6Ilx1ZDgzZFx1ZGM5YSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxibHVlX2hlYXJ0OntrZXl3b3JkczpbImxvdmUiLCJsaWtlIiwiYWZmZWN0aW9uIiwidmFsZW50aW5lcyJdLCJjaGFyIjoiXHVkODNkXHVkYzk5IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LHB1cnBsZV9oZWFydDp7a2V5d29yZHM6WyJsb3ZlIiwibGlrZSIsImFmZmVjdGlvbiIsInZhbGVudGluZXMiXSwiY2hhciI6Ilx1ZDgzZFx1ZGM5YyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxibGFja19oZWFydDp7a2V5d29yZHM6WyJldmlsIl0sImNoYXIiOiJcdWQ4M2RcdWRkYTQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sYnJva2VuX2hlYXJ0OntrZXl3b3JkczpbInNhZCIsInNvcnJ5IiwiYnJlYWsiLCJoZWFydCIsImhlYXJ0YnJlYWsiXSwiY2hhciI6Ilx1ZDgzZFx1ZGM5NCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxoZWF2eV9oZWFydF9leGNsYW1hdGlvbjp7a2V5d29yZHM6WyJkZWNvcmF0aW9uIiwibG92ZSJdLCJjaGFyIjoiXHUyNzYzIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LHR3b19oZWFydHM6e2tleXdvcmRzOlsibG92ZSIsImxpa2UiLCJhZmZlY3Rpb24iLCJ2YWxlbnRpbmVzIiwiaGVhcnQiXSwiY2hhciI6Ilx1ZDgzZFx1ZGM5NSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxyZXZvbHZpbmdfaGVhcnRzOntrZXl3b3JkczpbImxvdmUiLCJsaWtlIiwiYWZmZWN0aW9uIiwidmFsZW50aW5lcyJdLCJjaGFyIjoiXHVkODNkXHVkYzllIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LGhlYXJ0YmVhdDp7a2V5d29yZHM6WyJsb3ZlIiwibGlrZSIsImFmZmVjdGlvbiIsInZhbGVudGluZXMiLCJwaW5rIiwiaGVhcnQiXSwiY2hhciI6Ilx1ZDgzZFx1ZGM5MyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxoZWFydHB1bHNlOntrZXl3b3JkczpbImxpa2UiLCJsb3ZlIiwiYWZmZWN0aW9uIiwidmFsZW50aW5lcyIsInBpbmsiXSwiY2hhciI6Ilx1ZDgzZFx1ZGM5NyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxzcGFya2xpbmdfaGVhcnQ6e2tleXdvcmRzOlsibG92ZSIsImxpa2UiLCJhZmZlY3Rpb24iLCJ2YWxlbnRpbmVzIl0sImNoYXIiOiJcdWQ4M2RcdWRjOTYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sY3VwaWQ6e2tleXdvcmRzOlsibG92ZSIsImxpa2UiLCJoZWFydCIsImFmZmVjdGlvbiIsInZhbGVudGluZXMiXSwiY2hhciI6Ilx1ZDgzZFx1ZGM5OCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxnaWZ0X2hlYXJ0OntrZXl3b3JkczpbImxvdmUiLCJ2YWxlbnRpbmVzIl0sImNoYXIiOiJcdWQ4M2RcdWRjOWQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0saGVhcnRfZGVjb3JhdGlvbjp7a2V5d29yZHM6WyJwdXJwbGUtc3F1YXJlIiwibG92ZSIsImxpa2UiXSwiY2hhciI6Ilx1ZDgzZFx1ZGM5ZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxwZWFjZV9zeW1ib2w6e2tleXdvcmRzOlsiaGlwcGllIl0sImNoYXIiOiJcdTI2MmUiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sbGF0aW5fY3Jvc3M6e2tleXdvcmRzOlsiY2hyaXN0aWFuaXR5Il0sImNoYXIiOiJcdTI3MWQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sc3Rhcl9hbmRfY3Jlc2NlbnQ6e2tleXdvcmRzOlsiaXNsYW0iXSwiY2hhciI6Ilx1MjYyYSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxvbTp7a2V5d29yZHM6WyJoaW5kdWlzbSIsImJ1ZGRoaXNtIiwic2lraGlzbSIsImphaW5pc20iXSwiY2hhciI6Ilx1ZDgzZFx1ZGQ0OSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSx3aGVlbF9vZl9kaGFybWE6e2tleXdvcmRzOlsiaGluZHVpc20iLCJidWRkaGlzbSIsInNpa2hpc20iLCJqYWluaXNtIl0sImNoYXIiOiJcdTI2MzgiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sc3Rhcl9vZl9kYXZpZDp7a2V5d29yZHM6WyJqdWRhaXNtIl0sImNoYXIiOiJcdTI3MjEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sc2l4X3BvaW50ZWRfc3Rhcjp7a2V5d29yZHM6WyJwdXJwbGUtc3F1YXJlIiwicmVsaWdpb24iLCJqZXdpc2giLCJoZXhhZ3JhbSJdLCJjaGFyIjoiXHVkODNkXHVkZDJmIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LG1lbm9yYWg6e2tleXdvcmRzOlsiaGFudWtrYWgiLCJjYW5kbGVzIiwiamV3aXNoIl0sImNoYXIiOiJcdWQ4M2RcdWRkNGUiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0seWluX3lhbmc6e2tleXdvcmRzOlsiYmFsYW5jZSJdLCJjaGFyIjoiXHUyNjJmIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LG9ydGhvZG94X2Nyb3NzOntrZXl3b3JkczpbInN1cHBlZGFuZXVtIiwicmVsaWdpb24iXSwiY2hhciI6Ilx1MjYyNiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxwbGFjZV9vZl93b3JzaGlwOntrZXl3b3JkczpbInJlbGlnaW9uIiwiY2h1cmNoIiwidGVtcGxlIiwicHJheWVyIl0sImNoYXIiOiJcdWQ4M2RcdWRlZDAiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sb3BoaXVjaHVzOntrZXl3b3JkczpbInNpZ24iLCJwdXJwbGUtc3F1YXJlIiwiY29uc3RlbGxhdGlvbiIsImFzdHJvbG9neSJdLCJjaGFyIjoiXHUyNmNlIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LGFyaWVzOntrZXl3b3JkczpbInNpZ24iLCJwdXJwbGUtc3F1YXJlIiwiem9kaWFjIiwiYXN0cm9sb2d5Il0sImNoYXIiOiJcdTI2NDgiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sdGF1cnVzOntrZXl3b3JkczpbInB1cnBsZS1zcXVhcmUiLCJzaWduIiwiem9kaWFjIiwiYXN0cm9sb2d5Il0sImNoYXIiOiJcdTI2NDkiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sZ2VtaW5pOntrZXl3b3JkczpbInNpZ24iLCJ6b2RpYWMiLCJwdXJwbGUtc3F1YXJlIiwiYXN0cm9sb2d5Il0sImNoYXIiOiJcdTI2NGEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sY2FuY2VyOntrZXl3b3JkczpbInNpZ24iLCJ6b2RpYWMiLCJwdXJwbGUtc3F1YXJlIiwiYXN0cm9sb2d5Il0sImNoYXIiOiJcdTI2NGIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sbGVvOntrZXl3b3JkczpbInNpZ24iLCJwdXJwbGUtc3F1YXJlIiwiem9kaWFjIiwiYXN0cm9sb2d5Il0sImNoYXIiOiJcdTI2NGMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sdmlyZ286e2tleXdvcmRzOlsic2lnbiIsInpvZGlhYyIsInB1cnBsZS1zcXVhcmUiLCJhc3Ryb2xvZ3kiXSwiY2hhciI6Ilx1MjY0ZCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxsaWJyYTp7a2V5d29yZHM6WyJzaWduIiwicHVycGxlLXNxdWFyZSIsInpvZGlhYyIsImFzdHJvbG9neSJdLCJjaGFyIjoiXHUyNjRlIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LHNjb3JwaXVzOntrZXl3b3JkczpbInNpZ24iLCJ6b2RpYWMiLCJwdXJwbGUtc3F1YXJlIiwiYXN0cm9sb2d5Iiwic2NvcnBpbyJdLCJjaGFyIjoiXHUyNjRmIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LHNhZ2l0dGFyaXVzOntrZXl3b3JkczpbInNpZ24iLCJ6b2RpYWMiLCJwdXJwbGUtc3F1YXJlIiwiYXN0cm9sb2d5Il0sImNoYXIiOiJcdTI2NTAiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sY2Fwcmljb3JuOntrZXl3b3JkczpbInNpZ24iLCJ6b2RpYWMiLCJwdXJwbGUtc3F1YXJlIiwiYXN0cm9sb2d5Il0sImNoYXIiOiJcdTI2NTEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sYXF1YXJpdXM6e2tleXdvcmRzOlsic2lnbiIsInB1cnBsZS1zcXVhcmUiLCJ6b2RpYWMiLCJhc3Ryb2xvZ3kiXSwiY2hhciI6Ilx1MjY1MiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxwaXNjZXM6e2tleXdvcmRzOlsicHVycGxlLXNxdWFyZSIsInNpZ24iLCJ6b2RpYWMiLCJhc3Ryb2xvZ3kiXSwiY2hhciI6Ilx1MjY1MyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxpZDp7a2V5d29yZHM6WyJwdXJwbGUtc3F1YXJlIiwid29yZHMiXSwiY2hhciI6Ilx1ZDgzY1x1ZGQ5NCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxhdG9tX3N5bWJvbDp7a2V5d29yZHM6WyJzY2llbmNlIiwicGh5c2ljcyIsImNoZW1pc3RyeSJdLCJjaGFyIjoiXHUyNjliIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LHU3YTdhOntrZXl3b3JkczpbImthbmppIiwiamFwYW5lc2UiLCJjaGluZXNlIiwiZW1wdHkiLCJza3kiLCJibHVlLXNxdWFyZSJdLCJjaGFyIjoiXHVkODNjXHVkZTMzIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LHU1MjcyOntrZXl3b3JkczpbImN1dCIsImRpdmlkZSIsImNoaW5lc2UiLCJrYW5qaSIsInBpbmstc3F1YXJlIl0sImNoYXIiOiJcdWQ4M2NcdWRlMzkiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0scmFkaW9hY3RpdmU6e2tleXdvcmRzOlsibnVjbGVhciIsImRhbmdlciJdLCJjaGFyIjoiXHUyNjIyIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LGJpb2hhemFyZDp7a2V5d29yZHM6WyJkYW5nZXIiXSwiY2hhciI6Ilx1MjYyMyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxtb2JpbGVfcGhvbmVfb2ZmOntrZXl3b3JkczpbIm11dGUiLCJvcmFuZ2Utc3F1YXJlIiwic2lsZW5jZSIsInF1aWV0Il0sImNoYXIiOiJcdWQ4M2RcdWRjZjQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sdmlicmF0aW9uX21vZGU6e2tleXdvcmRzOlsib3JhbmdlLXNxdWFyZSIsInBob25lIl0sImNoYXIiOiJcdWQ4M2RcdWRjZjMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sdTY3MDk6e2tleXdvcmRzOlsib3JhbmdlLXNxdWFyZSIsImNoaW5lc2UiLCJoYXZlIiwia2FuamkiXSwiY2hhciI6Ilx1ZDgzY1x1ZGUzNiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSx1NzEyMTp7a2V5d29yZHM6WyJub3RoaW5nIiwiY2hpbmVzZSIsImthbmppIiwiamFwYW5lc2UiLCJvcmFuZ2Utc3F1YXJlIl0sImNoYXIiOiJcdWQ4M2NcdWRlMWEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sdTc1MzM6e2tleXdvcmRzOlsiY2hpbmVzZSIsImphcGFuZXNlIiwia2FuamkiLCJvcmFuZ2Utc3F1YXJlIl0sImNoYXIiOiJcdWQ4M2NcdWRlMzgiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sdTU1YjY6e2tleXdvcmRzOlsiamFwYW5lc2UiLCJvcGVuaW5nIGhvdXJzIiwib3JhbmdlLXNxdWFyZSJdLCJjaGFyIjoiXHVkODNjXHVkZTNhIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LHU2NzA4OntrZXl3b3JkczpbImNoaW5lc2UiLCJtb250aCIsIm1vb24iLCJqYXBhbmVzZSIsIm9yYW5nZS1zcXVhcmUiLCJrYW5qaSJdLCJjaGFyIjoiXHVkODNjXHVkZTM3XHVmZTBmIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LGVpZ2h0X3BvaW50ZWRfYmxhY2tfc3Rhcjp7a2V5d29yZHM6WyJvcmFuZ2Utc3F1YXJlIiwic2hhcGUiLCJwb2x5Z29uIl0sImNoYXIiOiJcdTI3MzRcdWZlMGYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sdnM6e2tleXdvcmRzOlsid29yZHMiLCJvcmFuZ2Utc3F1YXJlIl0sImNoYXIiOiJcdWQ4M2NcdWRkOWEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sYWNjZXB0OntrZXl3b3JkczpbIm9rIiwiZ29vZCIsImNoaW5lc2UiLCJrYW5qaSIsImFncmVlIiwieWVzIiwib3JhbmdlLWNpcmNsZSJdLCJjaGFyIjoiXHVkODNjXHVkZTUxIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LHdoaXRlX2Zsb3dlcjp7a2V5d29yZHM6WyJqYXBhbmVzZSIsInNwcmluZyJdLCJjaGFyIjoiXHVkODNkXHVkY2FlIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LGlkZW9ncmFwaF9hZHZhbnRhZ2U6e2tleXdvcmRzOlsiY2hpbmVzZSIsImthbmppIiwib2J0YWluIiwiZ2V0IiwiY2lyY2xlIl0sImNoYXIiOiJcdWQ4M2NcdWRlNTAiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sc2VjcmV0OntrZXl3b3JkczpbInByaXZhY3kiLCJjaGluZXNlIiwic3NoaCIsImthbmppIiwicmVkLWNpcmNsZSJdLCJjaGFyIjoiXHUzMjk5XHVmZTBmIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LGNvbmdyYXR1bGF0aW9uczp7a2V5d29yZHM6WyJjaGluZXNlIiwia2FuamkiLCJqYXBhbmVzZSIsInJlZC1jaXJjbGUiXSwiY2hhciI6Ilx1MzI5N1x1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSx1NTQwODp7a2V5d29yZHM6WyJqYXBhbmVzZSIsImNoaW5lc2UiLCJqb2luIiwia2FuamkiLCJyZWQtc3F1YXJlIl0sImNoYXIiOiJcdWQ4M2NcdWRlMzQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sdTZlODA6e2tleXdvcmRzOlsiZnVsbCIsImNoaW5lc2UiLCJqYXBhbmVzZSIsInJlZC1zcXVhcmUiLCJrYW5qaSJdLCJjaGFyIjoiXHVkODNjXHVkZTM1IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LHU3OTgxOntrZXl3b3JkczpbImthbmppIiwiamFwYW5lc2UiLCJjaGluZXNlIiwiZm9yYmlkZGVuIiwibGltaXQiLCJyZXN0cmljdGVkIiwicmVkLXNxdWFyZSJdLCJjaGFyIjoiXHVkODNjXHVkZTMyIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LGE6e2tleXdvcmRzOlsicmVkLXNxdWFyZSIsImFscGhhYmV0IiwibGV0dGVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkNzBcdWZlMGYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sYjp7a2V5d29yZHM6WyJyZWQtc3F1YXJlIiwiYWxwaGFiZXQiLCJsZXR0ZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGQ3MVx1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxhYjp7a2V5d29yZHM6WyJyZWQtc3F1YXJlIiwiYWxwaGFiZXQiXSwiY2hhciI6Ilx1ZDgzY1x1ZGQ4ZSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxjbDp7a2V5d29yZHM6WyJhbHBoYWJldCIsIndvcmRzIiwicmVkLXNxdWFyZSJdLCJjaGFyIjoiXHVkODNjXHVkZDkxIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LG8yOntrZXl3b3JkczpbImFscGhhYmV0IiwicmVkLXNxdWFyZSIsImxldHRlciJdLCJjaGFyIjoiXHVkODNjXHVkZDdlXHVmZTBmIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LHNvczp7a2V5d29yZHM6WyJoZWxwIiwicmVkLXNxdWFyZSIsIndvcmRzIiwiZW1lcmdlbmN5IiwiOTExIl0sImNoYXIiOiJcdWQ4M2NcdWRkOTgiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sbm9fZW50cnk6e2tleXdvcmRzOlsibGltaXQiLCJzZWN1cml0eSIsInByaXZhY3kiLCJiYWQiLCJkZW5pZWQiLCJzdG9wIiwiY2lyY2xlIl0sImNoYXIiOiJcdTI2ZDQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sbmFtZV9iYWRnZTp7a2V5d29yZHM6WyJmaXJlIiwiZm9yYmlkIl0sImNoYXIiOiJcdWQ4M2RcdWRjZGIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sbm9fZW50cnlfc2lnbjp7a2V5d29yZHM6WyJmb3JiaWQiLCJzdG9wIiwibGltaXQiLCJkZW5pZWQiLCJkaXNhbGxvdyIsImNpcmNsZSJdLCJjaGFyIjoiXHVkODNkXHVkZWFiIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LHg6e2tleXdvcmRzOlsibm8iLCJkZWxldGUiLCJyZW1vdmUiLCJjYW5jZWwiXSwiY2hhciI6Ilx1Mjc0YyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxvOntrZXl3b3JkczpbImNpcmNsZSIsInJvdW5kIl0sImNoYXIiOiJcdTJiNTUiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sc3RvcF9zaWduOntrZXl3b3JkczpbInN0b3AiXSwiY2hhciI6Ilx1ZDgzZFx1ZGVkMSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxhbmdlcjp7a2V5d29yZHM6WyJhbmdyeSIsIm1hZCJdLCJjaGFyIjoiXHVkODNkXHVkY2EyIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LGhvdHNwcmluZ3M6e2tleXdvcmRzOlsiYmF0aCIsIndhcm0iLCJyZWxheCJdLCJjaGFyIjoiXHUyNjY4XHVmZTBmIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LG5vX3BlZGVzdHJpYW5zOntrZXl3b3JkczpbInJ1bGVzIiwiY3Jvc3NpbmciLCJ3YWxraW5nIiwiY2lyY2xlIl0sImNoYXIiOiJcdWQ4M2RcdWRlYjciLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sZG9fbm90X2xpdHRlcjp7a2V5d29yZHM6WyJ0cmFzaCIsImJpbiIsImdhcmJhZ2UiLCJjaXJjbGUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGVhZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxub19iaWN5Y2xlczp7a2V5d29yZHM6WyJjeWNsaXN0IiwicHJvaGliaXRlZCIsImNpcmNsZSJdLCJjaGFyIjoiXHVkODNkXHVkZWIzIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LCJub24tcG90YWJsZV93YXRlciI6e2tleXdvcmRzOlsiZHJpbmsiLCJmYXVjZXQiLCJ0YXAiLCJjaXJjbGUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGViMSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSx1bmRlcmFnZTp7a2V5d29yZHM6WyIxOCIsImRyaW5rIiwicHViIiwibmlnaHQiLCJtaW5vciIsImNpcmNsZSJdLCJjaGFyIjoiXHVkODNkXHVkZDFlIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LG5vX21vYmlsZV9waG9uZXM6e2tleXdvcmRzOlsiaXBob25lIiwibXV0ZSIsImNpcmNsZSJdLCJjaGFyIjoiXHVkODNkXHVkY2Y1IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LGV4Y2xhbWF0aW9uOntrZXl3b3JkczpbImhlYXZ5X2V4Y2xhbWF0aW9uX21hcmsiLCJkYW5nZXIiLCJzdXJwcmlzZSIsInB1bmN0dWF0aW9uIiwid293Iiwid2FybmluZyJdLCJjaGFyIjoiXHUyNzU3IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LGdyZXlfZXhjbGFtYXRpb246e2tleXdvcmRzOlsic3VycHJpc2UiLCJwdW5jdHVhdGlvbiIsImdyYXkiLCJ3b3ciLCJ3YXJuaW5nIl0sImNoYXIiOiJcdTI3NTUiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0scXVlc3Rpb246e2tleXdvcmRzOlsiZG91YnQiLCJjb25mdXNlZCJdLCJjaGFyIjoiXHUyNzUzIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LGdyZXlfcXVlc3Rpb246e2tleXdvcmRzOlsiZG91YnRzIiwiZ3JheSIsImh1aCIsImNvbmZ1c2VkIl0sImNoYXIiOiJcdTI3NTQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sYmFuZ2Jhbmc6e2tleXdvcmRzOlsiZXhjbGFtYXRpb24iLCJzdXJwcmlzZSJdLCJjaGFyIjoiXHUyMDNjXHVmZTBmIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LGludGVycm9iYW5nOntrZXl3b3JkczpbIndhdCIsInB1bmN0dWF0aW9uIiwic3VycHJpc2UiXSwiY2hhciI6Ilx1MjA0OVx1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSwxMDA6e2tleXdvcmRzOlsic2NvcmUiLCJwZXJmZWN0IiwibnVtYmVycyIsImNlbnR1cnkiLCJleGFtIiwicXVpeiIsInRlc3QiLCJwYXNzIiwiaHVuZHJlZCJdLCJjaGFyIjoiXHVkODNkXHVkY2FmIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LGxvd19icmlnaHRuZXNzOntrZXl3b3JkczpbInN1biIsImFmdGVybm9vbiIsIndhcm0iLCJzdW1tZXIiXSwiY2hhciI6Ilx1ZDgzZFx1ZGQwNSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxoaWdoX2JyaWdodG5lc3M6e2tleXdvcmRzOlsic3VuIiwibGlnaHQiXSwiY2hhciI6Ilx1ZDgzZFx1ZGQwNiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSx0cmlkZW50OntrZXl3b3JkczpbIndlYXBvbiIsInNwZWFyIl0sImNoYXIiOiJcdWQ4M2RcdWRkMzEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sZmxldXJfZGVfbGlzOntrZXl3b3JkczpbImRlY29yYXRpdmUiLCJzY291dCJdLCJjaGFyIjoiXHUyNjljIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LHBhcnRfYWx0ZXJuYXRpb25fbWFyazp7a2V5d29yZHM6WyJncmFwaCIsInByZXNlbnRhdGlvbiIsInN0YXRzIiwiYnVzaW5lc3MiLCJlY29ub21pY3MiLCJiYWQiXSwiY2hhciI6Ilx1MzAzZFx1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSx3YXJuaW5nOntrZXl3b3JkczpbImV4Y2xhbWF0aW9uIiwid2lwIiwiYWxlcnQiLCJlcnJvciIsInByb2JsZW0iLCJpc3N1ZSJdLCJjaGFyIjoiXHUyNmEwXHVmZTBmIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LGNoaWxkcmVuX2Nyb3NzaW5nOntrZXl3b3JkczpbInNjaG9vbCIsIndhcm5pbmciLCJkYW5nZXIiLCJzaWduIiwiZHJpdmluZyIsInllbGxvdy1kaWFtb25kIl0sImNoYXIiOiJcdWQ4M2RcdWRlYjgiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sYmVnaW5uZXI6e2tleXdvcmRzOlsiYmFkZ2UiLCJzaGllbGQiXSwiY2hhciI6Ilx1ZDgzZFx1ZGQzMCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxyZWN5Y2xlOntrZXl3b3JkczpbImFycm93IiwiZW52aXJvbm1lbnQiLCJnYXJiYWdlIiwidHJhc2giXSwiY2hhciI6Ilx1MjY3Ylx1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSx1NjMwNzp7a2V5d29yZHM6WyJjaGluZXNlIiwicG9pbnQiLCJncmVlbi1zcXVhcmUiLCJrYW5qaSJdLCJjaGFyIjoiXHVkODNjXHVkZTJmIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LGNoYXJ0OntrZXl3b3JkczpbImdyZWVuLXNxdWFyZSIsImdyYXBoIiwicHJlc2VudGF0aW9uIiwic3RhdHMiXSwiY2hhciI6Ilx1ZDgzZFx1ZGNiOSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxzcGFya2xlOntrZXl3b3JkczpbInN0YXJzIiwiZ3JlZW4tc3F1YXJlIiwiYXdlc29tZSIsImdvb2QiLCJmaXJld29ya3MiXSwiY2hhciI6Ilx1Mjc0N1x1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxlaWdodF9zcG9rZWRfYXN0ZXJpc2s6e2tleXdvcmRzOlsic3RhciIsInNwYXJrbGUiLCJncmVlbi1zcXVhcmUiXSwiY2hhciI6Ilx1MjczM1x1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxuZWdhdGl2ZV9zcXVhcmVkX2Nyb3NzX21hcms6e2tleXdvcmRzOlsieCIsImdyZWVuLXNxdWFyZSIsIm5vIiwiZGVueSJdLCJjaGFyIjoiXHUyNzRlIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LHdoaXRlX2NoZWNrX21hcms6e2tleXdvcmRzOlsiZ3JlZW4tc3F1YXJlIiwib2siLCJhZ3JlZSIsInZvdGUiLCJlbGVjdGlvbiIsImFuc3dlciIsInRpY2siXSwiY2hhciI6Ilx1MjcwNSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxkaWFtb25kX3NoYXBlX3dpdGhfYV9kb3RfaW5zaWRlOntrZXl3b3JkczpbImpld2VsIiwiYmx1ZSIsImdlbSIsImNyeXN0YWwiLCJmYW5jeSJdLCJjaGFyIjoiXHVkODNkXHVkY2EwIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LGN5Y2xvbmU6e2tleXdvcmRzOlsid2VhdGhlciIsInN3aXJsIiwiYmx1ZSIsImNsb3VkIiwidm9ydGV4Iiwic3BpcmFsIiwid2hpcmxwb29sIiwic3BpbiIsInRvcm5hZG8iLCJodXJyaWNhbmUiLCJ0eXBob29uIl0sImNoYXIiOiJcdWQ4M2NcdWRmMDAiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sbG9vcDp7a2V5d29yZHM6WyJ0YXBlIiwiY2Fzc2V0dGUiXSwiY2hhciI6Ilx1MjdiZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxnbG9iZV93aXRoX21lcmlkaWFuczp7a2V5d29yZHM6WyJlYXJ0aCIsImludGVybmF0aW9uYWwiLCJ3b3JsZCIsImludGVybmV0IiwiaW50ZXJ3ZWIiLCJpMThuIl0sImNoYXIiOiJcdWQ4M2NcdWRmMTAiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sbTp7a2V5d29yZHM6WyJhbHBoYWJldCIsImJsdWUtY2lyY2xlIiwibGV0dGVyIl0sImNoYXIiOiJcdTI0YzJcdWZlMGYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sYXRtOntrZXl3b3JkczpbIm1vbmV5Iiwic2FsZXMiLCJjYXNoIiwiYmx1ZS1zcXVhcmUiLCJwYXltZW50IiwiYmFuayJdLCJjaGFyIjoiXHVkODNjXHVkZmU3IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LHNhOntrZXl3b3JkczpbImphcGFuZXNlIiwiYmx1ZS1zcXVhcmUiLCJrYXRha2FuYSJdLCJjaGFyIjoiXHVkODNjXHVkZTAyXHVmZTBmIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LHBhc3Nwb3J0X2NvbnRyb2w6e2tleXdvcmRzOlsiY3VzdG9tIiwiYmx1ZS1zcXVhcmUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGVjMiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxjdXN0b21zOntrZXl3b3JkczpbInBhc3Nwb3J0IiwiYm9yZGVyIiwiYmx1ZS1zcXVhcmUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGVjMyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxiYWdnYWdlX2NsYWltOntrZXl3b3JkczpbImJsdWUtc3F1YXJlIiwiYWlycG9ydCIsInRyYW5zcG9ydCJdLCJjaGFyIjoiXHVkODNkXHVkZWM0IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LGxlZnRfbHVnZ2FnZTp7a2V5d29yZHM6WyJibHVlLXNxdWFyZSIsInRyYXZlbCJdLCJjaGFyIjoiXHVkODNkXHVkZWM1IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LHdoZWVsY2hhaXI6e2tleXdvcmRzOlsiYmx1ZS1zcXVhcmUiLCJkaXNhYmxlZCIsImExMXkiLCJhY2Nlc3NpYmlsaXR5Il0sImNoYXIiOiJcdTI2N2YiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sbm9fc21va2luZzp7a2V5d29yZHM6WyJjaWdhcmV0dGUiLCJibHVlLXNxdWFyZSIsInNtZWxsIiwic21va2UiXSwiY2hhciI6Ilx1ZDgzZFx1ZGVhZCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSx3Yzp7a2V5d29yZHM6WyJ0b2lsZXQiLCJyZXN0cm9vbSIsImJsdWUtc3F1YXJlIl0sImNoYXIiOiJcdWQ4M2RcdWRlYmUiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0scGFya2luZzp7a2V5d29yZHM6WyJjYXJzIiwiYmx1ZS1zcXVhcmUiLCJhbHBoYWJldCIsImxldHRlciJdLCJjaGFyIjoiXHVkODNjXHVkZDdmXHVmZTBmIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LHBvdGFibGVfd2F0ZXI6e2tleXdvcmRzOlsiYmx1ZS1zcXVhcmUiLCJsaXF1aWQiLCJyZXN0cm9vbSIsImNsZWFuaW5nIiwiZmF1Y2V0Il0sImNoYXIiOiJcdWQ4M2RcdWRlYjAiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sbWVuczp7a2V5d29yZHM6WyJ0b2lsZXQiLCJyZXN0cm9vbSIsIndjIiwiYmx1ZS1zcXVhcmUiLCJnZW5kZXIiLCJtYWxlIl0sImNoYXIiOiJcdWQ4M2RcdWRlYjkiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sd29tZW5zOntrZXl3b3JkczpbInB1cnBsZS1zcXVhcmUiLCJ3b21hbiIsImZlbWFsZSIsInRvaWxldCIsImxvbyIsInJlc3Ryb29tIiwiZ2VuZGVyIl0sImNoYXIiOiJcdWQ4M2RcdWRlYmEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sYmFieV9zeW1ib2w6e2tleXdvcmRzOlsib3JhbmdlLXNxdWFyZSIsImNoaWxkIl0sImNoYXIiOiJcdWQ4M2RcdWRlYmMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0scmVzdHJvb206e2tleXdvcmRzOlsiYmx1ZS1zcXVhcmUiLCJ0b2lsZXQiLCJyZWZyZXNoIiwid2MiLCJnZW5kZXIiXSwiY2hhciI6Ilx1ZDgzZFx1ZGViYiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxwdXRfbGl0dGVyX2luX2l0c19wbGFjZTp7a2V5d29yZHM6WyJibHVlLXNxdWFyZSIsInNpZ24iLCJodW1hbiIsImluZm8iXSwiY2hhciI6Ilx1ZDgzZFx1ZGVhZSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxjaW5lbWE6e2tleXdvcmRzOlsiYmx1ZS1zcXVhcmUiLCJyZWNvcmQiLCJmaWxtIiwibW92aWUiLCJjdXJ0YWluIiwic3RhZ2UiLCJ0aGVhdGVyIl0sImNoYXIiOiJcdWQ4M2NcdWRmYTYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sc2lnbmFsX3N0cmVuZ3RoOntrZXl3b3JkczpbImJsdWUtc3F1YXJlIiwicmVjZXB0aW9uIiwicGhvbmUiLCJpbnRlcm5ldCIsImNvbm5lY3Rpb24iLCJ3aWZpIiwiYmx1ZXRvb3RoIiwiYmFycyJdLCJjaGFyIjoiXHVkODNkXHVkY2Y2IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LGtva286e2tleXdvcmRzOlsiYmx1ZS1zcXVhcmUiLCJoZXJlIiwia2F0YWthbmEiLCJqYXBhbmVzZSIsImRlc3RpbmF0aW9uIl0sImNoYXIiOiJcdWQ4M2NcdWRlMDEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sbmc6e2tleXdvcmRzOlsiYmx1ZS1zcXVhcmUiLCJ3b3JkcyIsInNoYXBlIiwiaWNvbiJdLCJjaGFyIjoiXHVkODNjXHVkZDk2IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LG9rOntrZXl3b3JkczpbImdvb2QiLCJhZ3JlZSIsInllcyIsImJsdWUtc3F1YXJlIl0sImNoYXIiOiJcdWQ4M2NcdWRkOTciLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sdXA6e2tleXdvcmRzOlsiYmx1ZS1zcXVhcmUiLCJhYm92ZSIsImhpZ2giXSwiY2hhciI6Ilx1ZDgzY1x1ZGQ5OSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxjb29sOntrZXl3b3JkczpbIndvcmRzIiwiYmx1ZS1zcXVhcmUiXSwiY2hhciI6Ilx1ZDgzY1x1ZGQ5MiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSwibmV3Ijp7a2V5d29yZHM6WyJibHVlLXNxdWFyZSIsIndvcmRzIiwic3RhcnQiXSwiY2hhciI6Ilx1ZDgzY1x1ZGQ5NSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxmcmVlOntrZXl3b3JkczpbImJsdWUtc3F1YXJlIiwid29yZHMiXSwiY2hhciI6Ilx1ZDgzY1x1ZGQ5MyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSx6ZXJvOntrZXl3b3JkczpbIjAiLCJudW1iZXJzIiwiYmx1ZS1zcXVhcmUiLCJudWxsIl0sImNoYXIiOiIwXHVmZTBmXHUyMGUzIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LG9uZTp7a2V5d29yZHM6WyJibHVlLXNxdWFyZSIsIm51bWJlcnMiLCIxIl0sImNoYXIiOiIxXHVmZTBmXHUyMGUzIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LHR3bzp7a2V5d29yZHM6WyJudW1iZXJzIiwiMiIsInByaW1lIiwiYmx1ZS1zcXVhcmUiXSwiY2hhciI6IjJcdWZlMGZcdTIwZTMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sdGhyZWU6e2tleXdvcmRzOlsiMyIsIm51bWJlcnMiLCJwcmltZSIsImJsdWUtc3F1YXJlIl0sImNoYXIiOiIzXHVmZTBmXHUyMGUzIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LGZvdXI6e2tleXdvcmRzOlsiNCIsIm51bWJlcnMiLCJibHVlLXNxdWFyZSJdLCJjaGFyIjoiNFx1ZmUwZlx1MjBlMyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxmaXZlOntrZXl3b3JkczpbIjUiLCJudW1iZXJzIiwiYmx1ZS1zcXVhcmUiLCJwcmltZSJdLCJjaGFyIjoiNVx1ZmUwZlx1MjBlMyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxzaXg6e2tleXdvcmRzOlsiNiIsIm51bWJlcnMiLCJibHVlLXNxdWFyZSJdLCJjaGFyIjoiNlx1ZmUwZlx1MjBlMyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxzZXZlbjp7a2V5d29yZHM6WyI3IiwibnVtYmVycyIsImJsdWUtc3F1YXJlIiwicHJpbWUiXSwiY2hhciI6IjdcdWZlMGZcdTIwZTMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sZWlnaHQ6e2tleXdvcmRzOlsiOCIsImJsdWUtc3F1YXJlIiwibnVtYmVycyJdLCJjaGFyIjoiOFx1ZmUwZlx1MjBlMyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxuaW5lOntrZXl3b3JkczpbImJsdWUtc3F1YXJlIiwibnVtYmVycyIsIjkiXSwiY2hhciI6IjlcdWZlMGZcdTIwZTMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sa2V5Y2FwX3Rlbjp7a2V5d29yZHM6WyJudW1iZXJzIiwiMTAiLCJibHVlLXNxdWFyZSJdLCJjaGFyIjoiXHVkODNkXHVkZDFmIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LGFzdGVyaXNrOntrZXl3b3JkczpbInN0YXIiLCJrZXljYXAiXSwiY2hhciI6IipcdTIwZTMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sMTIzNDp7a2V5d29yZHM6WyJudW1iZXJzIiwiYmx1ZS1zcXVhcmUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGQyMiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxlamVjdF9idXR0b246e2tleXdvcmRzOlsiYmx1ZS1zcXVhcmUiXSwiY2hhciI6Ilx1MjNjZlx1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxhcnJvd19mb3J3YXJkOntrZXl3b3JkczpbImJsdWUtc3F1YXJlIiwicmlnaHQiLCJkaXJlY3Rpb24iLCJwbGF5Il0sImNoYXIiOiJcdTI1YjZcdWZlMGYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0scGF1c2VfYnV0dG9uOntrZXl3b3JkczpbInBhdXNlIiwiYmx1ZS1zcXVhcmUiXSwiY2hhciI6Ilx1MjNmOCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxuZXh0X3RyYWNrX2J1dHRvbjp7a2V5d29yZHM6WyJmb3J3YXJkIiwibmV4dCIsImJsdWUtc3F1YXJlIl0sImNoYXIiOiJcdTIzZWQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sc3RvcF9idXR0b246e2tleXdvcmRzOlsiYmx1ZS1zcXVhcmUiXSwiY2hhciI6Ilx1MjNmOSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxyZWNvcmRfYnV0dG9uOntrZXl3b3JkczpbImJsdWUtc3F1YXJlIl0sImNoYXIiOiJcdTIzZmEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0scGxheV9vcl9wYXVzZV9idXR0b246e2tleXdvcmRzOlsiYmx1ZS1zcXVhcmUiLCJwbGF5IiwicGF1c2UiXSwiY2hhciI6Ilx1MjNlZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxwcmV2aW91c190cmFja19idXR0b246e2tleXdvcmRzOlsiYmFja3dhcmQiXSwiY2hhciI6Ilx1MjNlZSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxmYXN0X2ZvcndhcmQ6e2tleXdvcmRzOlsiYmx1ZS1zcXVhcmUiLCJwbGF5Iiwic3BlZWQiLCJjb250aW51ZSJdLCJjaGFyIjoiXHUyM2U5IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LHJld2luZDp7a2V5d29yZHM6WyJwbGF5IiwiYmx1ZS1zcXVhcmUiXSwiY2hhciI6Ilx1MjNlYSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSx0d2lzdGVkX3JpZ2h0d2FyZHNfYXJyb3dzOntrZXl3b3JkczpbImJsdWUtc3F1YXJlIiwic2h1ZmZsZSIsIm11c2ljIiwicmFuZG9tIl0sImNoYXIiOiJcdWQ4M2RcdWRkMDAiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0scmVwZWF0OntrZXl3b3JkczpbImxvb3AiLCJyZWNvcmQiXSwiY2hhciI6Ilx1ZDgzZFx1ZGQwMSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxyZXBlYXRfb25lOntrZXl3b3JkczpbImJsdWUtc3F1YXJlIiwibG9vcCJdLCJjaGFyIjoiXHVkODNkXHVkZDAyIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LGFycm93X2JhY2t3YXJkOntrZXl3b3JkczpbImJsdWUtc3F1YXJlIiwibGVmdCIsImRpcmVjdGlvbiJdLCJjaGFyIjoiXHUyNWMwXHVmZTBmIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LGFycm93X3VwX3NtYWxsOntrZXl3b3JkczpbImJsdWUtc3F1YXJlIiwidHJpYW5nbGUiLCJkaXJlY3Rpb24iLCJwb2ludCIsImZvcndhcmQiLCJ0b3AiXSwiY2hhciI6Ilx1ZDgzZFx1ZGQzYyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxhcnJvd19kb3duX3NtYWxsOntrZXl3b3JkczpbImJsdWUtc3F1YXJlIiwiZGlyZWN0aW9uIiwiYm90dG9tIl0sImNoYXIiOiJcdWQ4M2RcdWRkM2QiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sYXJyb3dfZG91YmxlX3VwOntrZXl3b3JkczpbImJsdWUtc3F1YXJlIiwiZGlyZWN0aW9uIiwidG9wIl0sImNoYXIiOiJcdTIzZWIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sYXJyb3dfZG91YmxlX2Rvd246e2tleXdvcmRzOlsiYmx1ZS1zcXVhcmUiLCJkaXJlY3Rpb24iLCJib3R0b20iXSwiY2hhciI6Ilx1MjNlYyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxhcnJvd19yaWdodDp7a2V5d29yZHM6WyJibHVlLXNxdWFyZSIsIm5leHQiXSwiY2hhciI6Ilx1MjdhMVx1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxhcnJvd19sZWZ0OntrZXl3b3JkczpbImJsdWUtc3F1YXJlIiwicHJldmlvdXMiLCJiYWNrIl0sImNoYXIiOiJcdTJiMDVcdWZlMGYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sYXJyb3dfdXA6e2tleXdvcmRzOlsiYmx1ZS1zcXVhcmUiLCJjb250aW51ZSIsInRvcCIsImRpcmVjdGlvbiJdLCJjaGFyIjoiXHUyYjA2XHVmZTBmIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LGFycm93X2Rvd246e2tleXdvcmRzOlsiYmx1ZS1zcXVhcmUiLCJkaXJlY3Rpb24iLCJib3R0b20iXSwiY2hhciI6Ilx1MmIwN1x1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxhcnJvd191cHBlcl9yaWdodDp7a2V5d29yZHM6WyJibHVlLXNxdWFyZSIsInBvaW50IiwiZGlyZWN0aW9uIiwiZGlhZ29uYWwiLCJub3J0aGVhc3QiXSwiY2hhciI6Ilx1MjE5N1x1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxhcnJvd19sb3dlcl9yaWdodDp7a2V5d29yZHM6WyJibHVlLXNxdWFyZSIsImRpcmVjdGlvbiIsImRpYWdvbmFsIiwic291dGhlYXN0Il0sImNoYXIiOiJcdTIxOThcdWZlMGYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sYXJyb3dfbG93ZXJfbGVmdDp7a2V5d29yZHM6WyJibHVlLXNxdWFyZSIsImRpcmVjdGlvbiIsImRpYWdvbmFsIiwic291dGh3ZXN0Il0sImNoYXIiOiJcdTIxOTlcdWZlMGYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sYXJyb3dfdXBwZXJfbGVmdDp7a2V5d29yZHM6WyJibHVlLXNxdWFyZSIsInBvaW50IiwiZGlyZWN0aW9uIiwiZGlhZ29uYWwiLCJub3J0aHdlc3QiXSwiY2hhciI6Ilx1MjE5Nlx1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxhcnJvd191cF9kb3duOntrZXl3b3JkczpbImJsdWUtc3F1YXJlIiwiZGlyZWN0aW9uIiwid2F5IiwidmVydGljYWwiXSwiY2hhciI6Ilx1MjE5NVx1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxsZWZ0X3JpZ2h0X2Fycm93OntrZXl3b3JkczpbInNoYXBlIiwiZGlyZWN0aW9uIiwiaG9yaXpvbnRhbCIsInNpZGV3YXlzIl0sImNoYXIiOiJcdTIxOTRcdWZlMGYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sYXJyb3dzX2NvdW50ZXJjbG9ja3dpc2U6e2tleXdvcmRzOlsiYmx1ZS1zcXVhcmUiLCJzeW5jIiwiY3ljbGUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGQwNCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxhcnJvd19yaWdodF9ob29rOntrZXl3b3JkczpbImJsdWUtc3F1YXJlIiwicmV0dXJuIiwicm90YXRlIiwiZGlyZWN0aW9uIl0sImNoYXIiOiJcdTIxYWFcdWZlMGYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sbGVmdHdhcmRzX2Fycm93X3dpdGhfaG9vazp7a2V5d29yZHM6WyJiYWNrIiwicmV0dXJuIiwiYmx1ZS1zcXVhcmUiLCJ1bmRvIiwiZW50ZXIiXSwiY2hhciI6Ilx1MjFhOVx1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxhcnJvd19oZWFkaW5nX3VwOntrZXl3b3JkczpbImJsdWUtc3F1YXJlIiwiZGlyZWN0aW9uIiwidG9wIl0sImNoYXIiOiJcdTI5MzRcdWZlMGYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sYXJyb3dfaGVhZGluZ19kb3duOntrZXl3b3JkczpbImJsdWUtc3F1YXJlIiwiZGlyZWN0aW9uIiwiYm90dG9tIl0sImNoYXIiOiJcdTI5MzVcdWZlMGYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0saGFzaDp7a2V5d29yZHM6WyJzeW1ib2wiLCJibHVlLXNxdWFyZSIsInR3aXR0ZXIiXSwiY2hhciI6IiNcdWZlMGZcdTIwZTMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0saW5mb3JtYXRpb25fc291cmNlOntrZXl3b3JkczpbImJsdWUtc3F1YXJlIiwiYWxwaGFiZXQiLCJsZXR0ZXIiXSwiY2hhciI6Ilx1MjEzOVx1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxhYmM6e2tleXdvcmRzOlsiYmx1ZS1zcXVhcmUiLCJhbHBoYWJldCJdLCJjaGFyIjoiXHVkODNkXHVkZDI0IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LGFiY2Q6e2tleXdvcmRzOlsiYmx1ZS1zcXVhcmUiLCJhbHBoYWJldCJdLCJjaGFyIjoiXHVkODNkXHVkZDIxIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LGNhcGl0YWxfYWJjZDp7a2V5d29yZHM6WyJhbHBoYWJldCIsIndvcmRzIiwiYmx1ZS1zcXVhcmUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGQyMCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxzeW1ib2xzOntrZXl3b3JkczpbImJsdWUtc3F1YXJlIiwibXVzaWMiLCJub3RlIiwiYW1wZXJzYW5kIiwicGVyY2VudCIsImdseXBocyIsImNoYXJhY3RlcnMiXSwiY2hhciI6Ilx1ZDgzZFx1ZGQyMyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxtdXNpY2FsX25vdGU6e2tleXdvcmRzOlsic2NvcmUiLCJ0b25lIiwic291bmQiXSwiY2hhciI6Ilx1ZDgzY1x1ZGZiNSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxub3Rlczp7a2V5d29yZHM6WyJtdXNpYyIsInNjb3JlIl0sImNoYXIiOiJcdWQ4M2NcdWRmYjYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sd2F2eV9kYXNoOntrZXl3b3JkczpbImRyYXciLCJsaW5lIiwibW91c3RhY2hlIiwibXVzdGFjaGUiLCJzcXVpZ2dsZSIsInNjcmliYmxlIl0sImNoYXIiOiJcdTMwMzBcdWZlMGYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sY3VybHlfbG9vcDp7a2V5d29yZHM6WyJzY3JpYmJsZSIsImRyYXciLCJzaGFwZSIsInNxdWlnZ2xlIl0sImNoYXIiOiJcdTI3YjAiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0saGVhdnlfY2hlY2tfbWFyazp7a2V5d29yZHM6WyJvayIsIm5pa2UiLCJhbnN3ZXIiLCJ5ZXMiLCJ0aWNrIl0sImNoYXIiOiJcdTI3MTRcdWZlMGYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sYXJyb3dzX2Nsb2Nrd2lzZTp7a2V5d29yZHM6WyJzeW5jIiwiY3ljbGUiLCJyb3VuZCIsInJlcGVhdCJdLCJjaGFyIjoiXHVkODNkXHVkZDAzIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LGhlYXZ5X3BsdXNfc2lnbjp7a2V5d29yZHM6WyJtYXRoIiwiY2FsY3VsYXRpb24iLCJhZGRpdGlvbiIsIm1vcmUiLCJpbmNyZWFzZSJdLCJjaGFyIjoiXHUyNzk1IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LGhlYXZ5X21pbnVzX3NpZ246e2tleXdvcmRzOlsibWF0aCIsImNhbGN1bGF0aW9uIiwic3VidHJhY3QiLCJsZXNzIl0sImNoYXIiOiJcdTI3OTYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0saGVhdnlfZGl2aXNpb25fc2lnbjp7a2V5d29yZHM6WyJkaXZpZGUiLCJtYXRoIiwiY2FsY3VsYXRpb24iXSwiY2hhciI6Ilx1Mjc5NyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxoZWF2eV9tdWx0aXBsaWNhdGlvbl94OntrZXl3b3JkczpbIm1hdGgiLCJjYWxjdWxhdGlvbiJdLCJjaGFyIjoiXHUyNzE2XHVmZTBmIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LGhlYXZ5X2RvbGxhcl9zaWduOntrZXl3b3JkczpbIm1vbmV5Iiwic2FsZXMiLCJwYXltZW50IiwiY3VycmVuY3kiLCJidWNrIl0sImNoYXIiOiJcdWQ4M2RcdWRjYjIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sY3VycmVuY3lfZXhjaGFuZ2U6e2tleXdvcmRzOlsibW9uZXkiLCJzYWxlcyIsImRvbGxhciIsInRyYXZlbCJdLCJjaGFyIjoiXHVkODNkXHVkY2IxIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LGNvcHlyaWdodDp7a2V5d29yZHM6WyJpcCIsImxpY2Vuc2UiLCJjaXJjbGUiLCJsYXciLCJsZWdhbCJdLCJjaGFyIjoiXHhhOVx1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxyZWdpc3RlcmVkOntrZXl3b3JkczpbImFscGhhYmV0IiwiY2lyY2xlIl0sImNoYXIiOiJceGFlXHVmZTBmIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LHRtOntrZXl3b3JkczpbInRyYWRlbWFyayIsImJyYW5kIiwibGF3IiwibGVnYWwiXSwiY2hhciI6Ilx1MjEyMlx1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxlbmQ6e2tleXdvcmRzOlsid29yZHMiLCJhcnJvdyJdLCJjaGFyIjoiXHVkODNkXHVkZDFhIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LGJhY2s6e2tleXdvcmRzOlsiYXJyb3ciLCJ3b3JkcyIsInJldHVybiJdLCJjaGFyIjoiXHVkODNkXHVkZDE5IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LG9uOntrZXl3b3JkczpbImFycm93Iiwid29yZHMiXSwiY2hhciI6Ilx1ZDgzZFx1ZGQxYiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSx0b3A6e2tleXdvcmRzOlsid29yZHMiLCJibHVlLXNxdWFyZSJdLCJjaGFyIjoiXHVkODNkXHVkZDFkIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LHNvb246e2tleXdvcmRzOlsiYXJyb3ciLCJ3b3JkcyJdLCJjaGFyIjoiXHVkODNkXHVkZDFjIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LGJhbGxvdF9ib3hfd2l0aF9jaGVjazp7a2V5d29yZHM6WyJvayIsImFncmVlIiwiY29uZmlybSIsImJsYWNrLXNxdWFyZSIsInZvdGUiLCJlbGVjdGlvbiIsInllcyIsInRpY2siXSwiY2hhciI6Ilx1MjYxMVx1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxyYWRpb19idXR0b246e2tleXdvcmRzOlsiaW5wdXQiLCJvbGQiLCJtdXNpYyIsImNpcmNsZSJdLCJjaGFyIjoiXHVkODNkXHVkZDE4IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LHdoaXRlX2NpcmNsZTp7a2V5d29yZHM6WyJzaGFwZSIsInJvdW5kIl0sImNoYXIiOiJcdTI2YWEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sYmxhY2tfY2lyY2xlOntrZXl3b3JkczpbInNoYXBlIiwiYnV0dG9uIiwicm91bmQiXSwiY2hhciI6Ilx1MjZhYiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxyZWRfY2lyY2xlOntrZXl3b3JkczpbInNoYXBlIiwiZXJyb3IiLCJkYW5nZXIiXSwiY2hhciI6Ilx1ZDgzZFx1ZGQzNCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxsYXJnZV9ibHVlX2NpcmNsZTp7a2V5d29yZHM6WyJzaGFwZSIsImljb24iLCJidXR0b24iXSwiY2hhciI6Ilx1ZDgzZFx1ZGQzNSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxzbWFsbF9vcmFuZ2VfZGlhbW9uZDp7a2V5d29yZHM6WyJzaGFwZSIsImpld2VsIiwiZ2VtIl0sImNoYXIiOiJcdWQ4M2RcdWRkMzgiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sc21hbGxfYmx1ZV9kaWFtb25kOntrZXl3b3JkczpbInNoYXBlIiwiamV3ZWwiLCJnZW0iXSwiY2hhciI6Ilx1ZDgzZFx1ZGQzOSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxsYXJnZV9vcmFuZ2VfZGlhbW9uZDp7a2V5d29yZHM6WyJzaGFwZSIsImpld2VsIiwiZ2VtIl0sImNoYXIiOiJcdWQ4M2RcdWRkMzYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sbGFyZ2VfYmx1ZV9kaWFtb25kOntrZXl3b3JkczpbInNoYXBlIiwiamV3ZWwiLCJnZW0iXSwiY2hhciI6Ilx1ZDgzZFx1ZGQzNyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxzbWFsbF9yZWRfdHJpYW5nbGU6e2tleXdvcmRzOlsic2hhcGUiLCJkaXJlY3Rpb24iLCJ1cCIsInRvcCJdLCJjaGFyIjoiXHVkODNkXHVkZDNhIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LGJsYWNrX3NtYWxsX3NxdWFyZTp7a2V5d29yZHM6WyJzaGFwZSIsImljb24iXSwiY2hhciI6Ilx1MjVhYVx1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSx3aGl0ZV9zbWFsbF9zcXVhcmU6e2tleXdvcmRzOlsic2hhcGUiLCJpY29uIl0sImNoYXIiOiJcdTI1YWJcdWZlMGYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sYmxhY2tfbGFyZ2Vfc3F1YXJlOntrZXl3b3JkczpbInNoYXBlIiwiaWNvbiIsImJ1dHRvbiJdLCJjaGFyIjoiXHUyYjFiIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LHdoaXRlX2xhcmdlX3NxdWFyZTp7a2V5d29yZHM6WyJzaGFwZSIsImljb24iLCJzdG9uZSIsImJ1dHRvbiJdLCJjaGFyIjoiXHUyYjFjIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LHNtYWxsX3JlZF90cmlhbmdsZV9kb3duOntrZXl3b3JkczpbInNoYXBlIiwiZGlyZWN0aW9uIiwiYm90dG9tIl0sImNoYXIiOiJcdWQ4M2RcdWRkM2IiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sYmxhY2tfbWVkaXVtX3NxdWFyZTp7a2V5d29yZHM6WyJzaGFwZSIsImJ1dHRvbiIsImljb24iXSwiY2hhciI6Ilx1MjVmY1x1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSx3aGl0ZV9tZWRpdW1fc3F1YXJlOntrZXl3b3JkczpbInNoYXBlIiwic3RvbmUiLCJpY29uIl0sImNoYXIiOiJcdTI1ZmJcdWZlMGYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sYmxhY2tfbWVkaXVtX3NtYWxsX3NxdWFyZTp7a2V5d29yZHM6WyJpY29uIiwic2hhcGUiLCJidXR0b24iXSwiY2hhciI6Ilx1MjVmZSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSx3aGl0ZV9tZWRpdW1fc21hbGxfc3F1YXJlOntrZXl3b3JkczpbInNoYXBlIiwic3RvbmUiLCJpY29uIiwiYnV0dG9uIl0sImNoYXIiOiJcdTI1ZmQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sYmxhY2tfc3F1YXJlX2J1dHRvbjp7a2V5d29yZHM6WyJzaGFwZSIsImlucHV0IiwiZnJhbWUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGQzMiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSx3aGl0ZV9zcXVhcmVfYnV0dG9uOntrZXl3b3JkczpbInNoYXBlIiwiaW5wdXQiXSwiY2hhciI6Ilx1ZDgzZFx1ZGQzMyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxzcGVha2VyOntrZXl3b3JkczpbInNvdW5kIiwidm9sdW1lIiwic2lsZW5jZSIsImJyb2FkY2FzdCJdLCJjaGFyIjoiXHVkODNkXHVkZDA4IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LHNvdW5kOntrZXl3b3JkczpbInZvbHVtZSIsInNwZWFrZXIiLCJicm9hZGNhc3QiXSwiY2hhciI6Ilx1ZDgzZFx1ZGQwOSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxsb3VkX3NvdW5kOntrZXl3b3JkczpbInZvbHVtZSIsIm5vaXNlIiwibm9pc3kiLCJzcGVha2VyIiwiYnJvYWRjYXN0Il0sImNoYXIiOiJcdWQ4M2RcdWRkMGEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sbXV0ZTp7a2V5d29yZHM6WyJzb3VuZCIsInZvbHVtZSIsInNpbGVuY2UiLCJxdWlldCJdLCJjaGFyIjoiXHVkODNkXHVkZDA3IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LG1lZ2E6e2tleXdvcmRzOlsic291bmQiLCJzcGVha2VyIiwidm9sdW1lIl0sImNoYXIiOiJcdWQ4M2RcdWRjZTMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sbG91ZHNwZWFrZXI6e2tleXdvcmRzOlsidm9sdW1lIiwic291bmQiXSwiY2hhciI6Ilx1ZDgzZFx1ZGNlMiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxiZWxsOntrZXl3b3JkczpbInNvdW5kIiwibm90aWZpY2F0aW9uIiwiY2hyaXN0bWFzIiwieG1hcyIsImNoaW1lIl0sImNoYXIiOiJcdWQ4M2RcdWRkMTQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sbm9fYmVsbDp7a2V5d29yZHM6WyJzb3VuZCIsInZvbHVtZSIsIm11dGUiLCJxdWlldCIsInNpbGVudCJdLCJjaGFyIjoiXHVkODNkXHVkZDE1IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LGJsYWNrX2pva2VyOntrZXl3b3JkczpbInBva2VyIiwiY2FyZHMiLCJnYW1lIiwicGxheSIsIm1hZ2ljIl0sImNoYXIiOiJcdWQ4M2NcdWRjY2YiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sbWFoam9uZzp7a2V5d29yZHM6WyJnYW1lIiwicGxheSIsImNoaW5lc2UiLCJrYW5qaSJdLCJjaGFyIjoiXHVkODNjXHVkYzA0IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LHNwYWRlczp7a2V5d29yZHM6WyJwb2tlciIsImNhcmRzIiwic3VpdHMiLCJtYWdpYyJdLCJjaGFyIjoiXHUyNjYwXHVmZTBmIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LGNsdWJzOntrZXl3b3JkczpbInBva2VyIiwiY2FyZHMiLCJtYWdpYyIsInN1aXRzIl0sImNoYXIiOiJcdTI2NjNcdWZlMGYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0saGVhcnRzOntrZXl3b3JkczpbInBva2VyIiwiY2FyZHMiLCJtYWdpYyIsInN1aXRzIl0sImNoYXIiOiJcdTI2NjVcdWZlMGYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sZGlhbW9uZHM6e2tleXdvcmRzOlsicG9rZXIiLCJjYXJkcyIsIm1hZ2ljIiwic3VpdHMiXSwiY2hhciI6Ilx1MjY2Nlx1ZmUwZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxmbG93ZXJfcGxheWluZ19jYXJkczp7a2V5d29yZHM6WyJnYW1lIiwic3Vuc2V0IiwicmVkIl0sImNoYXIiOiJcdWQ4M2NcdWRmYjQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sdGhvdWdodF9iYWxsb29uOntrZXl3b3JkczpbImJ1YmJsZSIsImNsb3VkIiwic3BlZWNoIiwidGhpbmtpbmciLCJkcmVhbSJdLCJjaGFyIjoiXHVkODNkXHVkY2FkIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LHJpZ2h0X2FuZ2VyX2J1YmJsZTp7a2V5d29yZHM6WyJjYXB0aW9uIiwic3BlZWNoIiwidGhpbmtpbmciLCJtYWQiXSwiY2hhciI6Ilx1ZDgzZFx1ZGRlZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxzcGVlY2hfYmFsbG9vbjp7a2V5d29yZHM6WyJidWJibGUiLCJ3b3JkcyIsIm1lc3NhZ2UiLCJ0YWxrIiwiY2hhdHRpbmciXSwiY2hhciI6Ilx1ZDgzZFx1ZGNhYyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxsZWZ0X3NwZWVjaF9idWJibGU6e2tleXdvcmRzOlsid29yZHMiLCJtZXNzYWdlIiwidGFsayIsImNoYXR0aW5nIl0sImNoYXIiOiJcdWQ4M2RcdWRkZTgiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sY2xvY2sxOntrZXl3b3JkczpbInRpbWUiLCJsYXRlIiwiZWFybHkiLCJzY2hlZHVsZSJdLCJjaGFyIjoiXHVkODNkXHVkZDUwIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LGNsb2NrMjp7a2V5d29yZHM6WyJ0aW1lIiwibGF0ZSIsImVhcmx5Iiwic2NoZWR1bGUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGQ1MSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxjbG9jazM6e2tleXdvcmRzOlsidGltZSIsImxhdGUiLCJlYXJseSIsInNjaGVkdWxlIl0sImNoYXIiOiJcdWQ4M2RcdWRkNTIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sY2xvY2s0OntrZXl3b3JkczpbInRpbWUiLCJsYXRlIiwiZWFybHkiLCJzY2hlZHVsZSJdLCJjaGFyIjoiXHVkODNkXHVkZDUzIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LGNsb2NrNTp7a2V5d29yZHM6WyJ0aW1lIiwibGF0ZSIsImVhcmx5Iiwic2NoZWR1bGUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGQ1NCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxjbG9jazY6e2tleXdvcmRzOlsidGltZSIsImxhdGUiLCJlYXJseSIsInNjaGVkdWxlIiwiZGF3biIsImR1c2siXSwiY2hhciI6Ilx1ZDgzZFx1ZGQ1NSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxjbG9jazc6e2tleXdvcmRzOlsidGltZSIsImxhdGUiLCJlYXJseSIsInNjaGVkdWxlIl0sImNoYXIiOiJcdWQ4M2RcdWRkNTYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sY2xvY2s4OntrZXl3b3JkczpbInRpbWUiLCJsYXRlIiwiZWFybHkiLCJzY2hlZHVsZSJdLCJjaGFyIjoiXHVkODNkXHVkZDU3IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LGNsb2NrOTp7a2V5d29yZHM6WyJ0aW1lIiwibGF0ZSIsImVhcmx5Iiwic2NoZWR1bGUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGQ1OCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxjbG9jazEwOntrZXl3b3JkczpbInRpbWUiLCJsYXRlIiwiZWFybHkiLCJzY2hlZHVsZSJdLCJjaGFyIjoiXHVkODNkXHVkZDU5IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LGNsb2NrMTE6e2tleXdvcmRzOlsidGltZSIsImxhdGUiLCJlYXJseSIsInNjaGVkdWxlIl0sImNoYXIiOiJcdWQ4M2RcdWRkNWEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sY2xvY2sxMjp7a2V5d29yZHM6WyJ0aW1lIiwibm9vbiIsIm1pZG5pZ2h0IiwibWlkZGF5IiwibGF0ZSIsImVhcmx5Iiwic2NoZWR1bGUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGQ1YiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxjbG9jazEzMDp7a2V5d29yZHM6WyJ0aW1lIiwibGF0ZSIsImVhcmx5Iiwic2NoZWR1bGUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGQ1YyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxjbG9jazIzMDp7a2V5d29yZHM6WyJ0aW1lIiwibGF0ZSIsImVhcmx5Iiwic2NoZWR1bGUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGQ1ZCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxjbG9jazMzMDp7a2V5d29yZHM6WyJ0aW1lIiwibGF0ZSIsImVhcmx5Iiwic2NoZWR1bGUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGQ1ZSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxjbG9jazQzMDp7a2V5d29yZHM6WyJ0aW1lIiwibGF0ZSIsImVhcmx5Iiwic2NoZWR1bGUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGQ1ZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxjbG9jazUzMDp7a2V5d29yZHM6WyJ0aW1lIiwibGF0ZSIsImVhcmx5Iiwic2NoZWR1bGUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGQ2MCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxjbG9jazYzMDp7a2V5d29yZHM6WyJ0aW1lIiwibGF0ZSIsImVhcmx5Iiwic2NoZWR1bGUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGQ2MSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxjbG9jazczMDp7a2V5d29yZHM6WyJ0aW1lIiwibGF0ZSIsImVhcmx5Iiwic2NoZWR1bGUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGQ2MiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxjbG9jazgzMDp7a2V5d29yZHM6WyJ0aW1lIiwibGF0ZSIsImVhcmx5Iiwic2NoZWR1bGUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGQ2MyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxjbG9jazkzMDp7a2V5d29yZHM6WyJ0aW1lIiwibGF0ZSIsImVhcmx5Iiwic2NoZWR1bGUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGQ2NCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxjbG9jazEwMzA6e2tleXdvcmRzOlsidGltZSIsImxhdGUiLCJlYXJseSIsInNjaGVkdWxlIl0sImNoYXIiOiJcdWQ4M2RcdWRkNjUiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJzeW1ib2xzIn0sY2xvY2sxMTMwOntrZXl3b3JkczpbInRpbWUiLCJsYXRlIiwiZWFybHkiLCJzY2hlZHVsZSJdLCJjaGFyIjoiXHVkODNkXHVkZDY2IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToic3ltYm9scyJ9LGNsb2NrMTIzMDp7a2V5d29yZHM6WyJ0aW1lIiwibGF0ZSIsImVhcmx5Iiwic2NoZWR1bGUiXSwiY2hhciI6Ilx1ZDgzZFx1ZGQ2NyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6InN5bWJvbHMifSxhZmdoYW5pc3Rhbjp7a2V5d29yZHM6WyJhZiIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZTZcdWQ4M2NcdWRkZWIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGFsYW5kX2lzbGFuZHM6e2tleXdvcmRzOlsiXHhjNWxhbmQiLCJpc2xhbmRzIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRlNlx1ZDgzY1x1ZGRmZCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sYWxiYW5pYTp7a2V5d29yZHM6WyJhbCIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZTZcdWQ4M2NcdWRkZjEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGFsZ2VyaWE6e2tleXdvcmRzOlsiZHoiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGU5XHVkODNjXHVkZGZmIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxhbWVyaWNhbl9zYW1vYTp7a2V5d29yZHM6WyJhbWVyaWNhbiIsIndzIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRlNlx1ZDgzY1x1ZGRmOCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sYW5kb3JyYTp7a2V5d29yZHM6WyJhZCIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZTZcdWQ4M2NcdWRkZTkiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGFuZ29sYTp7a2V5d29yZHM6WyJhbyIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZTZcdWQ4M2NcdWRkZjQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGFuZ3VpbGxhOntrZXl3b3JkczpbImFpIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRlNlx1ZDgzY1x1ZGRlZSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sYW50YXJjdGljYTp7a2V5d29yZHM6WyJhcSIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZTZcdWQ4M2NcdWRkZjYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGFudGlndWFfYmFyYnVkYTp7a2V5d29yZHM6WyJhbnRpZ3VhIiwiYmFyYnVkYSIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZTZcdWQ4M2NcdWRkZWMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGFyZ2VudGluYTp7a2V5d29yZHM6WyJhciIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZTZcdWQ4M2NcdWRkZjciLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGFybWVuaWE6e2tleXdvcmRzOlsiYW0iLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGU2XHVkODNjXHVkZGYyIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxhcnViYTp7a2V5d29yZHM6WyJhdyIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZTZcdWQ4M2NcdWRkZmMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGF1c3RyYWxpYTp7a2V5d29yZHM6WyJhdSIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZTZcdWQ4M2NcdWRkZmEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGF1c3RyaWE6e2tleXdvcmRzOlsiYXQiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGU2XHVkODNjXHVkZGY5IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxhemVyYmFpamFuOntrZXl3b3JkczpbImF6IiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRlNlx1ZDgzY1x1ZGRmZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sYmFoYW1hczp7a2V5d29yZHM6WyJicyIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZTdcdWQ4M2NcdWRkZjgiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGJhaHJhaW46e2tleXdvcmRzOlsiYmgiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGU3XHVkODNjXHVkZGVkIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxiYW5nbGFkZXNoOntrZXl3b3JkczpbImJkIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRlN1x1ZDgzY1x1ZGRlOSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sYmFyYmFkb3M6e2tleXdvcmRzOlsiYmIiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGU3XHVkODNjXHVkZGU3IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxiZWxhcnVzOntrZXl3b3JkczpbImJ5IiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRlN1x1ZDgzY1x1ZGRmZSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sYmVsZ2l1bTp7a2V5d29yZHM6WyJiZSIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZTdcdWQ4M2NcdWRkZWEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGJlbGl6ZTp7a2V5d29yZHM6WyJieiIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZTdcdWQ4M2NcdWRkZmYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGJlbmluOntrZXl3b3JkczpbImJqIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRlN1x1ZDgzY1x1ZGRlZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sYmVybXVkYTp7a2V5d29yZHM6WyJibSIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZTdcdWQ4M2NcdWRkZjIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGJodXRhbjp7a2V5d29yZHM6WyJidCIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZTdcdWQ4M2NcdWRkZjkiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGJvbGl2aWE6e2tleXdvcmRzOlsiYm8iLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGU3XHVkODNjXHVkZGY0IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxjYXJpYmJlYW5fbmV0aGVybGFuZHM6e2tleXdvcmRzOlsiYm9uYWlyZSIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZTdcdWQ4M2NcdWRkZjYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGJvc25pYV9oZXJ6ZWdvdmluYTp7a2V5d29yZHM6WyJib3NuaWEiLCJoZXJ6ZWdvdmluYSIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZTdcdWQ4M2NcdWRkZTYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGJvdHN3YW5hOntrZXl3b3JkczpbImJ3IiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRlN1x1ZDgzY1x1ZGRmYyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sYnJhemlsOntrZXl3b3JkczpbImJyIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRlN1x1ZDgzY1x1ZGRmNyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sYnJpdGlzaF9pbmRpYW5fb2NlYW5fdGVycml0b3J5OntrZXl3b3JkczpbImJyaXRpc2giLCJpbmRpYW4iLCJvY2VhbiIsInRlcnJpdG9yeSIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZWVcdWQ4M2NcdWRkZjQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGJyaXRpc2hfdmlyZ2luX2lzbGFuZHM6e2tleXdvcmRzOlsiYnJpdGlzaCIsInZpcmdpbiIsImlzbGFuZHMiLCJidmkiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGZiXHVkODNjXHVkZGVjIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxicnVuZWk6e2tleXdvcmRzOlsiYm4iLCJkYXJ1c3NhbGFtIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRlN1x1ZDgzY1x1ZGRmMyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sYnVsZ2FyaWE6e2tleXdvcmRzOlsiYmciLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGU3XHVkODNjXHVkZGVjIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxidXJraW5hX2Zhc286e2tleXdvcmRzOlsiYnVya2luYSIsImZhc28iLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGU3XHVkODNjXHVkZGViIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxidXJ1bmRpOntrZXl3b3JkczpbImJpIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRlN1x1ZDgzY1x1ZGRlZSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sY2FwZV92ZXJkZTp7a2V5d29yZHM6WyJjYWJvIiwidmVyZGUiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGU4XHVkODNjXHVkZGZiIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxjYW1ib2RpYTp7a2V5d29yZHM6WyJraCIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZjBcdWQ4M2NcdWRkZWQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGNhbWVyb29uOntrZXl3b3JkczpbImNtIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRlOFx1ZDgzY1x1ZGRmMiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sY2FuYWRhOntrZXl3b3JkczpbImNhIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRlOFx1ZDgzY1x1ZGRlNiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sY2FuYXJ5X2lzbGFuZHM6e2tleXdvcmRzOlsiY2FuYXJ5IiwiaXNsYW5kcyIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZWVcdWQ4M2NcdWRkZTgiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGNheW1hbl9pc2xhbmRzOntrZXl3b3JkczpbImNheW1hbiIsImlzbGFuZHMiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGYwXHVkODNjXHVkZGZlIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxjZW50cmFsX2FmcmljYW5fcmVwdWJsaWM6e2tleXdvcmRzOlsiY2VudHJhbCIsImFmcmljYW4iLCJyZXB1YmxpYyIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZThcdWQ4M2NcdWRkZWIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGNoYWQ6e2tleXdvcmRzOlsidGQiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGY5XHVkODNjXHVkZGU5IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxjaGlsZTp7a2V5d29yZHM6WyJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGU4XHVkODNjXHVkZGYxIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxjbjp7a2V5d29yZHM6WyJjaGluYSIsImNoaW5lc2UiLCJwcmMiLCJmbGFnIiwiY291bnRyeSIsIm5hdGlvbiIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGU4XHVkODNjXHVkZGYzIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxjaHJpc3RtYXNfaXNsYW5kOntrZXl3b3JkczpbImNocmlzdG1hcyIsImlzbGFuZCIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZThcdWQ4M2NcdWRkZmQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGNvY29zX2lzbGFuZHM6e2tleXdvcmRzOlsiY29jb3MiLCJrZWVsaW5nIiwiaXNsYW5kcyIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZThcdWQ4M2NcdWRkZTgiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGNvbG9tYmlhOntrZXl3b3JkczpbImNvIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRlOFx1ZDgzY1x1ZGRmNCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sY29tb3Jvczp7a2V5d29yZHM6WyJrbSIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZjBcdWQ4M2NcdWRkZjIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGNvbmdvX2JyYXp6YXZpbGxlOntrZXl3b3JkczpbImNvbmdvIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRlOFx1ZDgzY1x1ZGRlYyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sY29uZ29fa2luc2hhc2E6e2tleXdvcmRzOlsiY29uZ28iLCJkZW1vY3JhdGljIiwicmVwdWJsaWMiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGU4XHVkODNjXHVkZGU5IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxjb29rX2lzbGFuZHM6e2tleXdvcmRzOlsiY29vayIsImlzbGFuZHMiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGU4XHVkODNjXHVkZGYwIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxjb3N0YV9yaWNhOntrZXl3b3JkczpbImNvc3RhIiwicmljYSIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZThcdWQ4M2NcdWRkZjciLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGNyb2F0aWE6e2tleXdvcmRzOlsiaHIiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGVkXHVkODNjXHVkZGY3IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxjdWJhOntrZXl3b3JkczpbImN1IiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRlOFx1ZDgzY1x1ZGRmYSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sY3VyYWNhbzp7a2V5d29yZHM6WyJjdXJhXHhlN2FvIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRlOFx1ZDgzY1x1ZGRmYyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sY3lwcnVzOntrZXl3b3JkczpbImN5IiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRlOFx1ZDgzY1x1ZGRmZSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sY3plY2hfcmVwdWJsaWM6e2tleXdvcmRzOlsiY3oiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGU4XHVkODNjXHVkZGZmIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxkZW5tYXJrOntrZXl3b3JkczpbImRrIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRlOVx1ZDgzY1x1ZGRmMCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sZGppYm91dGk6e2tleXdvcmRzOlsiZGoiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGU5XHVkODNjXHVkZGVmIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxkb21pbmljYTp7a2V5d29yZHM6WyJkbSIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZTlcdWQ4M2NcdWRkZjIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGRvbWluaWNhbl9yZXB1YmxpYzp7a2V5d29yZHM6WyJkb21pbmljYW4iLCJyZXB1YmxpYyIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZTlcdWQ4M2NcdWRkZjQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGVjdWFkb3I6e2tleXdvcmRzOlsiZWMiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGVhXHVkODNjXHVkZGU4IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxlZ3lwdDp7a2V5d29yZHM6WyJlZyIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZWFcdWQ4M2NcdWRkZWMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGVsX3NhbHZhZG9yOntrZXl3b3JkczpbImVsIiwic2FsdmFkb3IiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGY4XHVkODNjXHVkZGZiIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxlcXVhdG9yaWFsX2d1aW5lYTp7a2V5d29yZHM6WyJlcXVhdG9yaWFsIiwiZ24iLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGVjXHVkODNjXHVkZGY2IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxlcml0cmVhOntrZXl3b3JkczpbImVyIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRlYVx1ZDgzY1x1ZGRmNyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sZXN0b25pYTp7a2V5d29yZHM6WyJlZSIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZWFcdWQ4M2NcdWRkZWEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGV0aGlvcGlhOntrZXl3b3JkczpbImV0IiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRlYVx1ZDgzY1x1ZGRmOSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sZXU6e2tleXdvcmRzOlsiZXVyb3BlYW4iLCJ1bmlvbiIsImZsYWciLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRlYVx1ZDgzY1x1ZGRmYSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sZmFsa2xhbmRfaXNsYW5kczp7a2V5d29yZHM6WyJmYWxrbGFuZCIsImlzbGFuZHMiLCJtYWx2aW5hcyIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZWJcdWQ4M2NcdWRkZjAiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGZhcm9lX2lzbGFuZHM6e2tleXdvcmRzOlsiZmFyb2UiLCJpc2xhbmRzIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRlYlx1ZDgzY1x1ZGRmNCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sZmlqaTp7a2V5d29yZHM6WyJmaiIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZWJcdWQ4M2NcdWRkZWYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGZpbmxhbmQ6e2tleXdvcmRzOlsiZmkiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGViXHVkODNjXHVkZGVlIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxmcjp7a2V5d29yZHM6WyJiYW5uZXIiLCJmbGFnIiwibmF0aW9uIiwiZnJhbmNlIiwiZnJlbmNoIiwiY291bnRyeSJdLCJjaGFyIjoiXHVkODNjXHVkZGViXHVkODNjXHVkZGY3IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxmcmVuY2hfZ3VpYW5hOntrZXl3b3JkczpbImZyZW5jaCIsImd1aWFuYSIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZWNcdWQ4M2NcdWRkZWIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGZyZW5jaF9wb2x5bmVzaWE6e2tleXdvcmRzOlsiZnJlbmNoIiwicG9seW5lc2lhIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRmNVx1ZDgzY1x1ZGRlYiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sZnJlbmNoX3NvdXRoZXJuX3RlcnJpdG9yaWVzOntrZXl3b3JkczpbImZyZW5jaCIsInNvdXRoZXJuIiwidGVycml0b3JpZXMiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGY5XHVkODNjXHVkZGViIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxnYWJvbjp7a2V5d29yZHM6WyJnYSIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZWNcdWQ4M2NcdWRkZTYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGdhbWJpYTp7a2V5d29yZHM6WyJnbSIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZWNcdWQ4M2NcdWRkZjIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGdlb3JnaWE6e2tleXdvcmRzOlsiZ2UiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGVjXHVkODNjXHVkZGVhIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxkZTp7a2V5d29yZHM6WyJnZXJtYW4iLCJuYXRpb24iLCJmbGFnIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGU5XHVkODNjXHVkZGVhIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxnaGFuYTp7a2V5d29yZHM6WyJnaCIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZWNcdWQ4M2NcdWRkZWQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGdpYnJhbHRhcjp7a2V5d29yZHM6WyJnaSIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZWNcdWQ4M2NcdWRkZWUiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGdyZWVjZTp7a2V5d29yZHM6WyJnciIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZWNcdWQ4M2NcdWRkZjciLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGdyZWVubGFuZDp7a2V5d29yZHM6WyJnbCIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZWNcdWQ4M2NcdWRkZjEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGdyZW5hZGE6e2tleXdvcmRzOlsiZ2QiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGVjXHVkODNjXHVkZGU5IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxndWFkZWxvdXBlOntrZXl3b3JkczpbImdwIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRlY1x1ZDgzY1x1ZGRmNSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sZ3VhbTp7a2V5d29yZHM6WyJndSIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZWNcdWQ4M2NcdWRkZmEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGd1YXRlbWFsYTp7a2V5d29yZHM6WyJndCIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZWNcdWQ4M2NcdWRkZjkiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGd1ZXJuc2V5OntrZXl3b3JkczpbImdnIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRlY1x1ZDgzY1x1ZGRlYyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sZ3VpbmVhOntrZXl3b3JkczpbImduIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRlY1x1ZDgzY1x1ZGRmMyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sZ3VpbmVhX2Jpc3NhdTp7a2V5d29yZHM6WyJndyIsImJpc3NhdSIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZWNcdWQ4M2NcdWRkZmMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGd1eWFuYTp7a2V5d29yZHM6WyJneSIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZWNcdWQ4M2NcdWRkZmUiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGhhaXRpOntrZXl3b3JkczpbImh0IiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRlZFx1ZDgzY1x1ZGRmOSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0saG9uZHVyYXM6e2tleXdvcmRzOlsiaG4iLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGVkXHVkODNjXHVkZGYzIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxob25nX2tvbmc6e2tleXdvcmRzOlsiaG9uZyIsImtvbmciLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGVkXHVkODNjXHVkZGYwIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxodW5nYXJ5OntrZXl3b3JkczpbImh1IiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRlZFx1ZDgzY1x1ZGRmYSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0saWNlbGFuZDp7a2V5d29yZHM6WyJpcyIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZWVcdWQ4M2NcdWRkZjgiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGluZGlhOntrZXl3b3JkczpbImluIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRlZVx1ZDgzY1x1ZGRmMyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0saW5kb25lc2lhOntrZXl3b3JkczpbImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZWVcdWQ4M2NcdWRkZTkiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGlyYW46e2tleXdvcmRzOlsiaXJhbiwiLCJpc2xhbWljIiwicmVwdWJsaWMiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGVlXHVkODNjXHVkZGY3IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxpcmFxOntrZXl3b3JkczpbImlxIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRlZVx1ZDgzY1x1ZGRmNiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0saXJlbGFuZDp7a2V5d29yZHM6WyJpZSIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZWVcdWQ4M2NcdWRkZWEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGlzbGVfb2ZfbWFuOntrZXl3b3JkczpbImlzbGUiLCJtYW4iLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGVlXHVkODNjXHVkZGYyIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxpc3JhZWw6e2tleXdvcmRzOlsiaWwiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGVlXHVkODNjXHVkZGYxIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxpdDp7a2V5d29yZHM6WyJpdGFseSIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZWVcdWQ4M2NcdWRkZjkiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGNvdGVfZGl2b2lyZTp7a2V5d29yZHM6WyJpdm9yeSIsImNvYXN0IiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRlOFx1ZDgzY1x1ZGRlZSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0samFtYWljYTp7a2V5d29yZHM6WyJqbSIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZWZcdWQ4M2NcdWRkZjIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGpwOntrZXl3b3JkczpbImphcGFuZXNlIiwibmF0aW9uIiwiZmxhZyIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRlZlx1ZDgzY1x1ZGRmNSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0samVyc2V5OntrZXl3b3JkczpbImplIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRlZlx1ZDgzY1x1ZGRlYSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sam9yZGFuOntrZXl3b3JkczpbImpvIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRlZlx1ZDgzY1x1ZGRmNCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sa2F6YWtoc3Rhbjp7a2V5d29yZHM6WyJreiIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZjBcdWQ4M2NcdWRkZmYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGtlbnlhOntrZXl3b3JkczpbImtlIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRmMFx1ZDgzY1x1ZGRlYSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sa2lyaWJhdGk6e2tleXdvcmRzOlsia2kiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGYwXHVkODNjXHVkZGVlIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxrb3Nvdm86e2tleXdvcmRzOlsieGsiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGZkXHVkODNjXHVkZGYwIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxrdXdhaXQ6e2tleXdvcmRzOlsia3ciLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGYwXHVkODNjXHVkZGZjIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxreXJneXpzdGFuOntrZXl3b3JkczpbImtnIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRmMFx1ZDgzY1x1ZGRlYyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sbGFvczp7a2V5d29yZHM6WyJsYW8iLCJkZW1vY3JhdGljIiwicmVwdWJsaWMiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGYxXHVkODNjXHVkZGU2IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxsYXR2aWE6e2tleXdvcmRzOlsibHYiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGYxXHVkODNjXHVkZGZiIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxsZWJhbm9uOntrZXl3b3JkczpbImxiIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRmMVx1ZDgzY1x1ZGRlNyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sbGVzb3Robzp7a2V5d29yZHM6WyJscyIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZjFcdWQ4M2NcdWRkZjgiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGxpYmVyaWE6e2tleXdvcmRzOlsibHIiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGYxXHVkODNjXHVkZGY3IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxsaWJ5YTp7a2V5d29yZHM6WyJseSIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZjFcdWQ4M2NcdWRkZmUiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGxpZWNodGVuc3RlaW46e2tleXdvcmRzOlsibGkiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGYxXHVkODNjXHVkZGVlIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxsaXRodWFuaWE6e2tleXdvcmRzOlsibHQiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGYxXHVkODNjXHVkZGY5IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxsdXhlbWJvdXJnOntrZXl3b3JkczpbImx1IiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRmMVx1ZDgzY1x1ZGRmYSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sbWFjYXU6e2tleXdvcmRzOlsibWFjYW8iLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGYyXHVkODNjXHVkZGY0IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxtYWNlZG9uaWE6e2tleXdvcmRzOlsibWFjZWRvbmlhLCIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZjJcdWQ4M2NcdWRkZjAiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LG1hZGFnYXNjYXI6e2tleXdvcmRzOlsibWciLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGYyXHVkODNjXHVkZGVjIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxtYWxhd2k6e2tleXdvcmRzOlsibXciLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGYyXHVkODNjXHVkZGZjIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxtYWxheXNpYTp7a2V5d29yZHM6WyJteSIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZjJcdWQ4M2NcdWRkZmUiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LG1hbGRpdmVzOntrZXl3b3JkczpbIm12IiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRmMlx1ZDgzY1x1ZGRmYiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sbWFsaTp7a2V5d29yZHM6WyJtbCIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZjJcdWQ4M2NcdWRkZjEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LG1hbHRhOntrZXl3b3JkczpbIm10IiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRmMlx1ZDgzY1x1ZGRmOSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sbWFyc2hhbGxfaXNsYW5kczp7a2V5d29yZHM6WyJtYXJzaGFsbCIsImlzbGFuZHMiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGYyXHVkODNjXHVkZGVkIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxtYXJ0aW5pcXVlOntrZXl3b3JkczpbIm1xIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRmMlx1ZDgzY1x1ZGRmNiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sbWF1cml0YW5pYTp7a2V5d29yZHM6WyJtciIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZjJcdWQ4M2NcdWRkZjciLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LG1hdXJpdGl1czp7a2V5d29yZHM6WyJtdSIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZjJcdWQ4M2NcdWRkZmEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LG1heW90dGU6e2tleXdvcmRzOlsieXQiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGZlXHVkODNjXHVkZGY5IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxtZXhpY286e2tleXdvcmRzOlsibXgiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGYyXHVkODNjXHVkZGZkIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxtaWNyb25lc2lhOntrZXl3b3JkczpbIm1pY3JvbmVzaWEsIiwiZmVkZXJhdGVkIiwic3RhdGVzIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRlYlx1ZDgzY1x1ZGRmMiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sbW9sZG92YTp7a2V5d29yZHM6WyJtb2xkb3ZhLCIsInJlcHVibGljIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRmMlx1ZDgzY1x1ZGRlOSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sbW9uYWNvOntrZXl3b3JkczpbIm1jIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRmMlx1ZDgzY1x1ZGRlOCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sbW9uZ29saWE6e2tleXdvcmRzOlsibW4iLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGYyXHVkODNjXHVkZGYzIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxtb250ZW5lZ3JvOntrZXl3b3JkczpbIm1lIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRmMlx1ZDgzY1x1ZGRlYSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sbW9udHNlcnJhdDp7a2V5d29yZHM6WyJtcyIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZjJcdWQ4M2NcdWRkZjgiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LG1vcm9jY286e2tleXdvcmRzOlsibWEiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGYyXHVkODNjXHVkZGU2IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxtb3phbWJpcXVlOntrZXl3b3JkczpbIm16IiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRmMlx1ZDgzY1x1ZGRmZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sbXlhbm1hcjp7a2V5d29yZHM6WyJtbSIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZjJcdWQ4M2NcdWRkZjIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LG5hbWliaWE6e2tleXdvcmRzOlsibmEiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGYzXHVkODNjXHVkZGU2IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxuYXVydTp7a2V5d29yZHM6WyJuciIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZjNcdWQ4M2NcdWRkZjciLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LG5lcGFsOntrZXl3b3JkczpbIm5wIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRmM1x1ZDgzY1x1ZGRmNSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sbmV0aGVybGFuZHM6e2tleXdvcmRzOlsibmwiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGYzXHVkODNjXHVkZGYxIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxuZXdfY2FsZWRvbmlhOntrZXl3b3JkczpbIm5ldyIsImNhbGVkb25pYSIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZjNcdWQ4M2NcdWRkZTgiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LG5ld196ZWFsYW5kOntrZXl3b3JkczpbIm5ldyIsInplYWxhbmQiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGYzXHVkODNjXHVkZGZmIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxuaWNhcmFndWE6e2tleXdvcmRzOlsibmkiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGYzXHVkODNjXHVkZGVlIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxuaWdlcjp7a2V5d29yZHM6WyJuZSIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZjNcdWQ4M2NcdWRkZWEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LG5pZ2VyaWE6e2tleXdvcmRzOlsiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRmM1x1ZDgzY1x1ZGRlYyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sbml1ZTp7a2V5d29yZHM6WyJudSIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZjNcdWQ4M2NcdWRkZmEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LG5vcmZvbGtfaXNsYW5kOntrZXl3b3JkczpbIm5vcmZvbGsiLCJpc2xhbmQiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGYzXHVkODNjXHVkZGViIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxub3J0aGVybl9tYXJpYW5hX2lzbGFuZHM6e2tleXdvcmRzOlsibm9ydGhlcm4iLCJtYXJpYW5hIiwiaXNsYW5kcyIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZjJcdWQ4M2NcdWRkZjUiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LG5vcnRoX2tvcmVhOntrZXl3b3JkczpbIm5vcnRoIiwia29yZWEiLCJuYXRpb24iLCJmbGFnIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGYwXHVkODNjXHVkZGY1IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxub3J3YXk6e2tleXdvcmRzOlsibm8iLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGYzXHVkODNjXHVkZGY0IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxvbWFuOntrZXl3b3JkczpbIm9tX3N5bWJvbCIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZjRcdWQ4M2NcdWRkZjIiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LHBha2lzdGFuOntrZXl3b3JkczpbInBrIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRmNVx1ZDgzY1x1ZGRmMCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0scGFsYXU6e2tleXdvcmRzOlsicHciLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGY1XHVkODNjXHVkZGZjIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxwYWxlc3Rpbmlhbl90ZXJyaXRvcmllczp7a2V5d29yZHM6WyJwYWxlc3RpbmUiLCJwYWxlc3RpbmlhbiIsInRlcnJpdG9yaWVzIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRmNVx1ZDgzY1x1ZGRmOCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0scGFuYW1hOntrZXl3b3JkczpbInBhIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRmNVx1ZDgzY1x1ZGRlNiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0scGFwdWFfbmV3X2d1aW5lYTp7a2V5d29yZHM6WyJwYXB1YSIsIm5ldyIsImd1aW5lYSIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZjVcdWQ4M2NcdWRkZWMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LHBhcmFndWF5OntrZXl3b3JkczpbInB5IiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRmNVx1ZDgzY1x1ZGRmZSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0scGVydTp7a2V5d29yZHM6WyJwZSIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZjVcdWQ4M2NcdWRkZWEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LHBoaWxpcHBpbmVzOntrZXl3b3JkczpbInBoIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRmNVx1ZDgzY1x1ZGRlZCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0scGl0Y2Fpcm5faXNsYW5kczp7a2V5d29yZHM6WyJwaXRjYWlybiIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZjVcdWQ4M2NcdWRkZjMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LHBvbGFuZDp7a2V5d29yZHM6WyJwbCIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZjVcdWQ4M2NcdWRkZjEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LHBvcnR1Z2FsOntrZXl3b3JkczpbInB0IiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRmNVx1ZDgzY1x1ZGRmOSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0scHVlcnRvX3JpY286e2tleXdvcmRzOlsicHVlcnRvIiwicmljbyIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZjVcdWQ4M2NcdWRkZjciLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LHFhdGFyOntrZXl3b3JkczpbInFhIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRmNlx1ZDgzY1x1ZGRlNiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0scmV1bmlvbjp7a2V5d29yZHM6WyJyXHhlOXVuaW9uIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRmN1x1ZDgzY1x1ZGRlYSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0scm9tYW5pYTp7a2V5d29yZHM6WyJybyIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZjdcdWQ4M2NcdWRkZjQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LHJ1OntrZXl3b3JkczpbInJ1c3NpYW4iLCJmZWRlcmF0aW9uIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRmN1x1ZDgzY1x1ZGRmYSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0scndhbmRhOntrZXl3b3JkczpbInJ3IiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRmN1x1ZDgzY1x1ZGRmYyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sc3RfYmFydGhlbGVteTp7a2V5d29yZHM6WyJzYWludCIsImJhcnRoXHhlOWxlbXkiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGU3XHVkODNjXHVkZGYxIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxzdF9oZWxlbmE6e2tleXdvcmRzOlsic2FpbnQiLCJoZWxlbmEiLCJhc2NlbnNpb24iLCJ0cmlzdGFuIiwiY3VuaGEiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGY4XHVkODNjXHVkZGVkIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxzdF9raXR0c19uZXZpczp7a2V5d29yZHM6WyJzYWludCIsImtpdHRzIiwibmV2aXMiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGYwXHVkODNjXHVkZGYzIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxzdF9sdWNpYTp7a2V5d29yZHM6WyJzYWludCIsImx1Y2lhIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRmMVx1ZDgzY1x1ZGRlOCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sc3RfcGllcnJlX21pcXVlbG9uOntrZXl3b3JkczpbInNhaW50IiwicGllcnJlIiwibWlxdWVsb24iLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGY1XHVkODNjXHVkZGYyIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxzdF92aW5jZW50X2dyZW5hZGluZXM6e2tleXdvcmRzOlsic2FpbnQiLCJ2aW5jZW50IiwiZ3JlbmFkaW5lcyIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZmJcdWQ4M2NcdWRkZTgiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LHNhbW9hOntrZXl3b3JkczpbIndzIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRmY1x1ZDgzY1x1ZGRmOCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sc2FuX21hcmlubzp7a2V5d29yZHM6WyJzYW4iLCJtYXJpbm8iLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGY4XHVkODNjXHVkZGYyIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxzYW9fdG9tZV9wcmluY2lwZTp7a2V5d29yZHM6WyJzYW8iLCJ0b21lIiwicHJpbmNpcGUiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGY4XHVkODNjXHVkZGY5IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxzYXVkaV9hcmFiaWE6e2tleXdvcmRzOlsiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRmOFx1ZDgzY1x1ZGRlNiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sc2VuZWdhbDp7a2V5d29yZHM6WyJzbiIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZjhcdWQ4M2NcdWRkZjMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LHNlcmJpYTp7a2V5d29yZHM6WyJycyIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZjdcdWQ4M2NcdWRkZjgiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LHNleWNoZWxsZXM6e2tleXdvcmRzOlsic2MiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGY4XHVkODNjXHVkZGU4IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxzaWVycmFfbGVvbmU6e2tleXdvcmRzOlsic2llcnJhIiwibGVvbmUiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGY4XHVkODNjXHVkZGYxIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxzaW5nYXBvcmU6e2tleXdvcmRzOlsic2ciLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGY4XHVkODNjXHVkZGVjIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxzaW50X21hYXJ0ZW46e2tleXdvcmRzOlsic2ludCIsIm1hYXJ0ZW4iLCJkdXRjaCIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZjhcdWQ4M2NcdWRkZmQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LHNsb3Zha2lhOntrZXl3b3JkczpbInNrIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRmOFx1ZDgzY1x1ZGRmMCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sc2xvdmVuaWE6e2tleXdvcmRzOlsic2kiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGY4XHVkODNjXHVkZGVlIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxzb2xvbW9uX2lzbGFuZHM6e2tleXdvcmRzOlsic29sb21vbiIsImlzbGFuZHMiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGY4XHVkODNjXHVkZGU3IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxzb21hbGlhOntrZXl3b3JkczpbInNvIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRmOFx1ZDgzY1x1ZGRmNCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sc291dGhfYWZyaWNhOntrZXl3b3JkczpbInNvdXRoIiwiYWZyaWNhIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRmZlx1ZDgzY1x1ZGRlNiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sc291dGhfZ2VvcmdpYV9zb3V0aF9zYW5kd2ljaF9pc2xhbmRzOntrZXl3b3JkczpbInNvdXRoIiwiZ2VvcmdpYSIsInNhbmR3aWNoIiwiaXNsYW5kcyIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZWNcdWQ4M2NcdWRkZjgiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LGtyOntrZXl3b3JkczpbInNvdXRoIiwia29yZWEiLCJuYXRpb24iLCJmbGFnIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGYwXHVkODNjXHVkZGY3IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxzb3V0aF9zdWRhbjp7a2V5d29yZHM6WyJzb3V0aCIsInNkIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRmOFx1ZDgzY1x1ZGRmOCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sZXM6e2tleXdvcmRzOlsic3BhaW4iLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGVhXHVkODNjXHVkZGY4IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxzcmlfbGFua2E6e2tleXdvcmRzOlsic3JpIiwibGFua2EiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGYxXHVkODNjXHVkZGYwIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxzdWRhbjp7a2V5d29yZHM6WyJzZCIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZjhcdWQ4M2NcdWRkZTkiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LHN1cmluYW1lOntrZXl3b3JkczpbInNyIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRmOFx1ZDgzY1x1ZGRmNyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sc3dhemlsYW5kOntrZXl3b3JkczpbInN6IiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRmOFx1ZDgzY1x1ZGRmZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sc3dlZGVuOntrZXl3b3JkczpbInNlIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRmOFx1ZDgzY1x1ZGRlYSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sc3dpdHplcmxhbmQ6e2tleXdvcmRzOlsiY2giLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGU4XHVkODNjXHVkZGVkIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxzeXJpYTp7a2V5d29yZHM6WyJzeXJpYW4iLCJhcmFiIiwicmVwdWJsaWMiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGY4XHVkODNjXHVkZGZlIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSx0YWl3YW46e2tleXdvcmRzOlsidHciLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGY5XHVkODNjXHVkZGZjIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSx0YWppa2lzdGFuOntrZXl3b3JkczpbInRqIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRmOVx1ZDgzY1x1ZGRlZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sdGFuemFuaWE6e2tleXdvcmRzOlsidGFuemFuaWEsIiwidW5pdGVkIiwicmVwdWJsaWMiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGY5XHVkODNjXHVkZGZmIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSx0aGFpbGFuZDp7a2V5d29yZHM6WyJ0aCIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZjlcdWQ4M2NcdWRkZWQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LHRpbW9yX2xlc3RlOntrZXl3b3JkczpbInRpbW9yIiwibGVzdGUiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGY5XHVkODNjXHVkZGYxIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSx0b2dvOntrZXl3b3JkczpbInRnIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRmOVx1ZDgzY1x1ZGRlYyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sdG9rZWxhdTp7a2V5d29yZHM6WyJ0ayIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZjlcdWQ4M2NcdWRkZjAiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LHRvbmdhOntrZXl3b3JkczpbInRvIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRmOVx1ZDgzY1x1ZGRmNCIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sdHJpbmlkYWRfdG9iYWdvOntrZXl3b3JkczpbInRyaW5pZGFkIiwidG9iYWdvIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRmOVx1ZDgzY1x1ZGRmOSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sdHVuaXNpYTp7a2V5d29yZHM6WyJ0biIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZjlcdWQ4M2NcdWRkZjMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LHRyOntrZXl3b3JkczpbInR1cmtleSIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZjlcdWQ4M2NcdWRkZjciLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LHR1cmttZW5pc3Rhbjp7a2V5d29yZHM6WyJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGY5XHVkODNjXHVkZGYyIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSx0dXJrc19jYWljb3NfaXNsYW5kczp7a2V5d29yZHM6WyJ0dXJrcyIsImNhaWNvcyIsImlzbGFuZHMiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGY5XHVkODNjXHVkZGU4IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSx0dXZhbHU6e2tleXdvcmRzOlsiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRmOVx1ZDgzY1x1ZGRmYiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sdWdhbmRhOntrZXl3b3JkczpbInVnIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRmYVx1ZDgzY1x1ZGRlYyIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sdWtyYWluZTp7a2V5d29yZHM6WyJ1YSIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZmFcdWQ4M2NcdWRkZTYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LHVuaXRlZF9hcmFiX2VtaXJhdGVzOntrZXl3b3JkczpbInVuaXRlZCIsImFyYWIiLCJlbWlyYXRlcyIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZTZcdWQ4M2NcdWRkZWEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LHVrOntrZXl3b3JkczpbInVuaXRlZCIsImtpbmdkb20iLCJncmVhdCIsImJyaXRhaW4iLCJub3J0aGVybiIsImlyZWxhbmQiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciIsImJyaXRpc2giLCJVSyIsImVuZ2xpc2giLCJlbmdsYW5kIiwidW5pb24gamFjayJdLCJjaGFyIjoiXHVkODNjXHVkZGVjXHVkODNjXHVkZGU3IixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSxlbmdsYW5kOntrZXl3b3JkczpbImZsYWciLCJlbmdsaXNoIl0sImNoYXIiOiJcdWQ4M2NcdWRmZjRcdWRiNDBcdWRjNjdcdWRiNDBcdWRjNjJcdWRiNDBcdWRjNjVcdWRiNDBcdWRjNmVcdWRiNDBcdWRjNjdcdWRiNDBcdWRjN2YiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LHNjb3RsYW5kOntrZXl3b3JkczpbImZsYWciLCJzY290dGlzaCJdLCJjaGFyIjoiXHVkODNjXHVkZmY0XHVkYjQwXHVkYzY3XHVkYjQwXHVkYzYyXHVkYjQwXHVkYzczXHVkYjQwXHVkYzYzXHVkYjQwXHVkYzc0XHVkYjQwXHVkYzdmIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSx3YWxlczp7a2V5d29yZHM6WyJmbGFnIiwid2Vsc2giXSwiY2hhciI6Ilx1ZDgzY1x1ZGZmNFx1ZGI0MFx1ZGM2N1x1ZGI0MFx1ZGM2Mlx1ZGI0MFx1ZGM3N1x1ZGI0MFx1ZGM2Y1x1ZGI0MFx1ZGM3M1x1ZGI0MFx1ZGM3ZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sdXM6e2tleXdvcmRzOlsidW5pdGVkIiwic3RhdGVzIiwiYW1lcmljYSIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZmFcdWQ4M2NcdWRkZjgiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LHVzX3Zpcmdpbl9pc2xhbmRzOntrZXl3b3JkczpbInZpcmdpbiIsImlzbGFuZHMiLCJ1cyIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZmJcdWQ4M2NcdWRkZWUiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LHVydWd1YXk6e2tleXdvcmRzOlsidXkiLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGZhXHVkODNjXHVkZGZlIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifSx1emJla2lzdGFuOntrZXl3b3JkczpbInV6IiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRmYVx1ZDgzY1x1ZGRmZiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sdmFudWF0dTp7a2V5d29yZHM6WyJ2dSIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZmJcdWQ4M2NcdWRkZmEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LHZhdGljYW5fY2l0eTp7a2V5d29yZHM6WyJ2YXRpY2FuIiwiY2l0eSIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZmJcdWQ4M2NcdWRkZTYiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LHZlbmV6dWVsYTp7a2V5d29yZHM6WyJ2ZSIsImJvbGl2YXJpYW4iLCJyZXB1YmxpYyIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZmJcdWQ4M2NcdWRkZWEiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LHZpZXRuYW06e2tleXdvcmRzOlsidmlldCIsIm5hbSIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZmJcdWQ4M2NcdWRkZjMiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LHdhbGxpc19mdXR1bmE6e2tleXdvcmRzOlsid2FsbGlzIiwiZnV0dW5hIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRmY1x1ZDgzY1x1ZGRlYiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0sd2VzdGVybl9zYWhhcmE6e2tleXdvcmRzOlsid2VzdGVybiIsInNhaGFyYSIsImZsYWciLCJuYXRpb24iLCJjb3VudHJ5IiwiYmFubmVyIl0sImNoYXIiOiJcdWQ4M2NcdWRkZWFcdWQ4M2NcdWRkZWQiLGZpdHpwYXRyaWNrX3NjYWxlOiExLGNhdGVnb3J5OiJmbGFncyJ9LHllbWVuOntrZXl3b3JkczpbInllIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRmZVx1ZDgzY1x1ZGRlYSIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0semFtYmlhOntrZXl3b3JkczpbInptIiwiZmxhZyIsIm5hdGlvbiIsImNvdW50cnkiLCJiYW5uZXIiXSwiY2hhciI6Ilx1ZDgzY1x1ZGRmZlx1ZDgzY1x1ZGRmMiIsZml0enBhdHJpY2tfc2NhbGU6ITEsY2F0ZWdvcnk6ImZsYWdzIn0semltYmFid2U6e2tleXdvcmRzOlsienciLCJmbGFnIiwibmF0aW9uIiwiY291bnRyeSIsImJhbm5lciJdLCJjaGFyIjoiXHVkODNjXHVkZGZmXHVkODNjXHVkZGZjIixmaXR6cGF0cmlja19zY2FsZTohMSxjYXRlZ29yeToiZmxhZ3MifX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/emoticons/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24obSl7InVzZSBzdHJpY3QiO3ZhciBuLHQsZSx1LG89dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuUGx1Z2luTWFuYWdlciIpLGk9ZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG59fSxhPWkoITEpLGM9aSghMCkscj1mdW5jdGlvbigpe3JldHVybiBsfSxsPShuPWZ1bmN0aW9uKG4pe3JldHVybiBuLmlzTm9uZSgpfSx7Zm9sZDpmdW5jdGlvbihuLHQpe3JldHVybiBuKCl9LGlzOmEsaXNTb21lOmEsaXNOb25lOmMsZ2V0T3I6ZT1mdW5jdGlvbihuKXtyZXR1cm4gbn0sZ2V0T3JUaHVuazp0PWZ1bmN0aW9uKG4pe3JldHVybiBuKCl9LGdldE9yRGllOmZ1bmN0aW9uKG4pe3Rocm93IG5ldyBFcnJvcihufHwiZXJyb3I6IGdldE9yRGllIGNhbGxlZCBvbiBub25lLiIpfSxnZXRPck51bGw6aShudWxsKSxnZXRPclVuZGVmaW5lZDppKHVuZGVmaW5lZCksb3I6ZSxvclRodW5rOnQsbWFwOnIsZWFjaDpmdW5jdGlvbigpe30sYmluZDpyLGV4aXN0czphLGZvcmFsbDpjLGZpbHRlcjpyLGVxdWFsczpuLGVxdWFsc186bix0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuW119LHRvU3RyaW5nOmkoIm5vbmUoKSIpfSkscz1mdW5jdGlvbihlKXt2YXIgbj1pKGUpLHQ9ZnVuY3Rpb24oKXtyZXR1cm4gcn0sbz1mdW5jdGlvbihuKXtyZXR1cm4gbihlKX0scj17Zm9sZDpmdW5jdGlvbihuLHQpe3JldHVybiB0KGUpfSxpczpmdW5jdGlvbihuKXtyZXR1cm4gZT09PW59LGlzU29tZTpjLGlzTm9uZTphLGdldE9yOm4sZ2V0T3JUaHVuazpuLGdldE9yRGllOm4sZ2V0T3JOdWxsOm4sZ2V0T3JVbmRlZmluZWQ6bixvcjp0LG9yVGh1bms6dCxtYXA6ZnVuY3Rpb24obil7cmV0dXJuIHMobihlKSl9LGVhY2g6ZnVuY3Rpb24obil7bihlKX0sYmluZDpvLGV4aXN0czpvLGZvcmFsbDpvLGZpbHRlcjpmdW5jdGlvbihuKXtyZXR1cm4gbihlKT9yOmx9LHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm5bZV19LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuInNvbWUoIitlKyIpIn0sZXF1YWxzOmZ1bmN0aW9uKG4pe3JldHVybiBuLmlzKGUpfSxlcXVhbHNfOmZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4uZm9sZChhLGZ1bmN0aW9uKG4pe3JldHVybiB0KGUsbil9KX19O3JldHVybiByfSxnPXtzb21lOnMsbm9uZTpyLGZyb206ZnVuY3Rpb24obil7cmV0dXJuIG51bGw9PT1ufHxuPT09dW5kZWZpbmVkP2w6cyhuKX19LGY9ZnVuY3Rpb24obix0KXtyZXR1cm4tMSE9PW4uaW5kZXhPZih0KX0sZD1mdW5jdGlvbihuLHQpe3JldHVybiBmKG4udGl0bGUudG9Mb3dlckNhc2UoKSx0KXx8ZnVuY3Rpb24obix0KXtmb3IodmFyIGU9MCxvPW4ubGVuZ3RoO2U8bztlKyspe2lmKHQobltlXSxlKSlyZXR1cm4hMH1yZXR1cm4hMX0obi5rZXl3b3JkcyxmdW5jdGlvbihuKXtyZXR1cm4gZihuLnRvTG93ZXJDYXNlKCksdCl9KX0seT1mdW5jdGlvbihuLHQsZSl7Zm9yKHZhciBvPVtdLHI9dC50b0xvd2VyQ2FzZSgpLGk9ZS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIGF9LGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdDw9bn19KSx1PTA7dTxuLmxlbmd0aCYmKDAhPT10Lmxlbmd0aCYmIWQoblt1XSxyKXx8KG8ucHVzaCh7dmFsdWU6blt1XVsiY2hhciJdLHRleHQ6blt1XS50aXRsZSxpY29uOm5bdV1bImNoYXIiXX0pLCFpKG8ubGVuZ3RoKSkpO3UrKyk7cmV0dXJuIG99LGg9ZnVuY3Rpb24obil7dmFyIHQ9bjtyZXR1cm57Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHR9LHNldDpmdW5jdGlvbihuKXt0PW59fX0sdj1mdW5jdGlvbigpe3JldHVybih2PU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKG4pe2Zvcih2YXIgdCxlPTEsbz1hcmd1bWVudHMubGVuZ3RoO2U8bztlKyspZm9yKHZhciByIGluIHQ9YXJndW1lbnRzW2VdKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LHIpJiYobltyXT10W3JdKTtyZXR1cm4gbn0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0scD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LGI9KHU9ZnVuY3Rpb24obix0KXtyZXR1cm4gdH0sZnVuY3Rpb24oKXtmb3IodmFyIG49bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpLHQ9MDt0PG4ubGVuZ3RoO3QrKyluW3RdPWFyZ3VtZW50c1t0XTtpZigwPT09bi5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJDYW4ndCBtZXJnZSB6ZXJvIG9iamVjdHMiKTtmb3IodmFyIGU9e30sbz0wO288bi5sZW5ndGg7bysrKXt2YXIgcj1uW29dO2Zvcih2YXIgaSBpbiByKXAuY2FsbChyLGkpJiYoZVtpXT11KGVbaV0scltpXSkpfXJldHVybiBlfSksdz1PYmplY3Qua2V5cyxPPU9iamVjdC5oYXNPd25Qcm9wZXJ0eSxDPWZ1bmN0aW9uKG4sdCl7Zm9yKHZhciBlPXcobiksbz0wLHI9ZS5sZW5ndGg7bzxyO28rKyl7dmFyIGk9ZVtvXTt0KG5baV0saSl9fSxrPWZ1bmN0aW9uKG4sbyl7dmFyIHI9e307cmV0dXJuIEMobixmdW5jdGlvbihuLHQpe3ZhciBlPW8obix0KTtyW2Uua109ZS52fSkscn0saj10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS5SZXNvdXJjZSIpLEE9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UudXRpbC5EZWxheSIpLFQ9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UudXRpbC5Qcm9taXNlIiksXz0iQWxsIixEPXtzeW1ib2xzOiJTeW1ib2xzIixwZW9wbGU6IlBlb3BsZSIsYW5pbWFsc19hbmRfbmF0dXJlOiJBbmltYWxzIGFuZCBOYXR1cmUiLGZvb2RfYW5kX2RyaW5rOiJGb29kIGFuZCBEcmluayIsYWN0aXZpdHk6IkFjdGl2aXR5Iix0cmF2ZWxfYW5kX3BsYWNlczoiVHJhdmVsIGFuZCBQbGFjZXMiLG9iamVjdHM6Ik9iamVjdHMiLGZsYWdzOiJGbGFncyIsdXNlcjoiVXNlciBEZWZpbmVkIn0sUD1mdW5jdGlvbihuLHQpe3JldHVybiBlPW4sbz10LE8uY2FsbChlLG8pP25bdF06dDt2YXIgZSxvfSx4PWZ1bmN0aW9uKG4pe3ZhciBlLHQ9bi5nZXRQYXJhbSgiZW1vdGljb25zX2FwcGVuZCIse30sIm9iamVjdCIpO3JldHVybiBlPWZ1bmN0aW9uKG4pe3JldHVybiB2KHtrZXl3b3JkczpbXSxjYXRlZ29yeToidXNlciJ9LG4pfSxrKHQsZnVuY3Rpb24obix0KXtyZXR1cm57azp0LHY6ZShuLHQpfX0pfSxMPWZ1bmN0aW9uKG8scixuKXt2YXIgdT1oKGcubm9uZSgpKSxhPWgoZy5ub25lKCkpO28ub24oImluaXQiLGZ1bmN0aW9uKCl7ai5sb2FkKG4scikudGhlbihmdW5jdGlvbihuKXt2YXIgdCxyLGksZT14KG8pO3Q9YihuLGUpLHI9e30saT1bXSxDKHQsZnVuY3Rpb24obix0KXt2YXIgZT17dGl0bGU6dCxrZXl3b3JkczpuLmtleXdvcmRzLCJjaGFyIjpuWyJjaGFyIl0sY2F0ZWdvcnk6UChELG4uY2F0ZWdvcnkpfSxvPXJbZS5jYXRlZ29yeV0hPT11bmRlZmluZWQ/cltlLmNhdGVnb3J5XTpbXTtyW2UuY2F0ZWdvcnldPW8uY29uY2F0KFtlXSksaS5wdXNoKGUpfSksdS5zZXQoZy5zb21lKHIpKSxhLnNldChnLnNvbWUoaSkpfSxmdW5jdGlvbihuKXttLmNvbnNvbGUubG9nKCJGYWlsZWQgdG8gbG9hZCBlbW90aWNvbnM6ICIrbiksdS5zZXQoZy5zb21lKHt9KSksYS5zZXQoZy5zb21lKFtdKSl9KX0pO3ZhciBlPWZ1bmN0aW9uKCl7cmV0dXJuIGEuZ2V0KCkuZ2V0T3IoW10pfSxpPWZ1bmN0aW9uKCl7cmV0dXJuIHUuZ2V0KCkuaXNTb21lKCkmJmEuZ2V0KCkuaXNTb21lKCl9O3JldHVybntsaXN0Q2F0ZWdvcmllczpmdW5jdGlvbigpe3JldHVybltfXS5jb25jYXQodyh1LmdldCgpLmdldE9yKHt9KSkpfSxoYXNMb2FkZWQ6aSx3YWl0Rm9yTG9hZDpmdW5jdGlvbigpe3JldHVybiBpKCk/VC5yZXNvbHZlKCEwKTpuZXcgVChmdW5jdGlvbihuLHQpe3ZhciBlPTE1LG89QS5zZXRJbnRlcnZhbChmdW5jdGlvbigpe2koKT8oQS5jbGVhckludGVydmFsKG8pLG4oITApKTotLWU8MCYmKG0uY29uc29sZS5sb2coIkNvdWxkIG5vdCBsb2FkIGVtb2ppcyBmcm9tIHVybDogIityKSxBLmNsZWFySW50ZXJ2YWwobyksdCghMSkpfSwxMDApfSl9LGxpc3RBbGw6ZSxsaXN0Q2F0ZWdvcnk6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1fP2UoKTp1LmdldCgpLmJpbmQoZnVuY3Rpb24obil7cmV0dXJuIGcuZnJvbShuW3RdKX0pLmdldE9yKFtdKX19fSxTPSJwYXR0ZXJuIixOPWZ1bmN0aW9uKHIsdSl7dmFyIGUsbyxpLG49e3BhdHRlcm46IiIscmVzdWx0czp5KHUubGlzdEFsbCgpLCIiLGcuc29tZSgzMDApKX0sYT1oKF8pLGM9KGU9ZnVuY3Rpb24obil7dmFyIHQsZSxvLHIsaTtlPSh0PW4pLmdldERhdGEoKSxvPWEuZ2V0KCkscj11Lmxpc3RDYXRlZ29yeShvKSxpPXkocixlW1NdLG89PT1fP2cuc29tZSgzMDApOmcubm9uZSgpKSx0LnNldERhdGEoe3Jlc3VsdHM6aX0pfSxvPTIwMCxpPW51bGwse2NhbmNlbDpmdW5jdGlvbigpe251bGwhPT1pJiYobS5jbGVhclRpbWVvdXQoaSksaT1udWxsKX0sdGhyb3R0bGU6ZnVuY3Rpb24oKXtmb3IodmFyIG49W10sdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspblt0XT1hcmd1bWVudHNbdF07bnVsbCE9PWkmJm0uY2xlYXJUaW1lb3V0KGkpLGk9bS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZS5hcHBseShudWxsLG4pLGk9bnVsbH0sbyl9fSksdD17bGFiZWw6IlNlYXJjaCIsdHlwZToiaW5wdXQiLG5hbWU6U30sbD17dHlwZToiY29sbGVjdGlvbiIsbmFtZToicmVzdWx0cyJ9LHM9ZnVuY3Rpb24oKXtyZXR1cm57dGl0bGU6IkVtb3RpY29ucyIsc2l6ZToibm9ybWFsIixib2R5Ont0eXBlOiJ0YWJwYW5lbCIsdGFiczpmdW5jdGlvbihuLHQpe2Zvcih2YXIgZT1uLmxlbmd0aCxvPW5ldyBBcnJheShlKSxyPTA7cjxlO3IrKyl7dmFyIGk9bltyXTtvW3JdPXQoaSxyKX1yZXR1cm4gb30odS5saXN0Q2F0ZWdvcmllcygpLGZ1bmN0aW9uKG4pe3JldHVybnt0aXRsZTpuLG5hbWU6bixpdGVtczpbdCxsXX19KX0saW5pdGlhbERhdGE6bixvblRhYkNoYW5nZTpmdW5jdGlvbihuLHQpe2Euc2V0KHQubmV3VGFiTmFtZSksYy50aHJvdHRsZShuKX0sb25DaGFuZ2U6Yy50aHJvdHRsZSxvbkFjdGlvbjpmdW5jdGlvbihuLHQpe3ZhciBlLG87InJlc3VsdHMiPT09dC5uYW1lJiYoZT1yLG89dC52YWx1ZSxlLmluc2VydENvbnRlbnQobyksbi5jbG9zZSgpKX0sYnV0dG9uczpbe3R5cGU6ImNhbmNlbCIsdGV4dDoiQ2xvc2UiLHByaW1hcnk6ITB9XX19LGY9ci53aW5kb3dNYW5hZ2VyLm9wZW4ocygpKTtmLmZvY3VzKFMpLHUuaGFzTG9hZGVkKCl8fChmLmJsb2NrKCJMb2FkaW5nIGVtb3RpY29ucy4uLiIpLHUud2FpdEZvckxvYWQoKS50aGVuKGZ1bmN0aW9uKCl7Zi5yZWRpYWwocygpKSxjLnRocm90dGxlKGYpLGYuZm9jdXMoUyksZi51bmJsb2NrKCl9KVsiY2F0Y2giXShmdW5jdGlvbihuKXtmLnJlZGlhbCh7dGl0bGU6IkVtb3RpY29ucyIsYm9keTp7dHlwZToicGFuZWwiLGl0ZW1zOlt7dHlwZToiYWxlcnRiYW5uZXIiLGxldmVsOiJlcnJvciIsaWNvbjoid2FybmluZyIsdGV4dDoiPHA+Q291bGQgbm90IGxvYWQgZW1vdGljb25zPC9wPiJ9XX0sYnV0dG9uczpbe3R5cGU6ImNhbmNlbCIsdGV4dDoiQ2xvc2UiLHByaW1hcnk6ITB9XSxpbml0aWFsRGF0YTp7cGF0dGVybjoiIixyZXN1bHRzOltdfX0pLGYuZm9jdXMoUyksZi51bmJsb2NrKCl9KSl9OyFmdW5jdGlvbiBFKCl7by5hZGQoImVtb3RpY29ucyIsZnVuY3Rpb24obix0KXt2YXIgZSxvLHIsaSx1LGEsYyxsPShvPXQsKGU9bikuZ2V0UGFyYW0oImVtb3RpY29uc19kYXRhYmFzZV91cmwiLG8rIi9qcy9lbW9qaXMiK2Uuc3VmZml4KyIuanMiKSkscz1uLmdldFBhcmFtKCJlbW90aWNvbnNfZGF0YWJhc2VfaWQiLCJ0aW55bWNlLnBsdWdpbnMuZW1vdGljb25zIiwic3RyaW5nIiksZj1MKG4sbCxzKTtpPWYsdT1mdW5jdGlvbigpe3JldHVybiBOKHIsaSl9LChyPW4pLnVpLnJlZ2lzdHJ5LmFkZEJ1dHRvbigiZW1vdGljb25zIix7dG9vbHRpcDoiRW1vdGljb25zIixpY29uOiJlbW9qaSIsb25BY3Rpb246dX0pLHIudWkucmVnaXN0cnkuYWRkTWVudUl0ZW0oImVtb3RpY29ucyIse3RleHQ6IkVtb3RpY29ucy4uLiIsaWNvbjoiZW1vamkiLG9uQWN0aW9uOnV9KSxjPWYsKGE9bikudWkucmVnaXN0cnkuYWRkQXV0b2NvbXBsZXRlcigiZW1vdGljb25zIix7Y2g6IjoiLGNvbHVtbnM6ImF1dG8iLG1pbkNoYXJzOjIsZmV0Y2g6ZnVuY3Rpb24odCxlKXtyZXR1cm4gYy53YWl0Rm9yTG9hZCgpLnRoZW4oZnVuY3Rpb24oKXt2YXIgbj1jLmxpc3RBbGwoKTtyZXR1cm4geShuLHQsZy5zb21lKGUpKX0pfSxvbkFjdGlvbjpmdW5jdGlvbihuLHQsZSl7YS5zZWxlY3Rpb24uc2V0Um5nKHQpLGEuaW5zZXJ0Q29udGVudChlKSxuLmhpZGUoKX19KX0pfSgpfSh3aW5kb3cpOw==]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/fullpage/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/fullpage/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24ocCl7InVzZSBzdHJpY3QiO3ZhciBzPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJue2dldDpmdW5jdGlvbigpe3JldHVybiB0fSxzZXQ6ZnVuY3Rpb24oZSl7dD1lfX19LGU9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuUGx1Z2luTWFuYWdlciIpLHU9ZnVuY3Rpb24oKXtyZXR1cm4odT1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQsbj0xLGw9YXJndW1lbnRzLmxlbmd0aDtuPGw7bisrKWZvcih2YXIgaSBpbiB0PWFyZ3VtZW50c1tuXSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxpKSYmKGVbaV09dFtpXSk7cmV0dXJuIGV9KS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LHk9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UudXRpbC5Ub29scyIpLHQ9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuaHRtbC5Eb21QYXJzZXIiKSxtPXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLmh0bWwuTm9kZSIpLGY9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuaHRtbC5TZXJpYWxpemVyIiksaD1mdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRQYXJhbSgiZnVsbHBhZ2VfaGlkZV9pbl9zb3VyY2VfdmlldyIpfSxvPWZ1bmN0aW9uKGUpe3JldHVybiBlLmdldFBhcmFtKCJmdWxscGFnZV9kZWZhdWx0X2VuY29kaW5nIil9LGc9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0UGFyYW0oImZ1bGxwYWdlX2RlZmF1bHRfZm9udF9mYW1pbHkiKX0sdj1mdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRQYXJhbSgiZnVsbHBhZ2VfZGVmYXVsdF9mb250X3NpemUiKX0sXz1mdW5jdGlvbihlKXtyZXR1cm4gdCh7dmFsaWRhdGU6ITEscm9vdF9uYW1lOiIjZG9jdW1lbnQifSkucGFyc2UoZSx7Zm9ybWF0OiJ4aHRtbCJ9KX0sZD1mdW5jdGlvbihsLGkpe3ZhciBlLHQsbixvLHIsYSxjPShlPWwsdD1pLmdldCgpLHI9Xyh0KSwoYT17fSkuZm9udGZhY2U9ZyhlKSxhLmZvbnRzaXplPXYoZSksNz09PShuPXIuZmlyc3RDaGlsZCkudHlwZSYmKGEueG1sX3BpPSEwLChvPS9lbmNvZGluZz0iKFteIl0rKSIvLmV4ZWMobi52YWx1ZSkpJiYoYS5kb2NlbmNvZGluZz1vWzFdKSksKG49ci5nZXRBbGwoIiNkb2N0eXBlIilbMF0pJiYoYS5kb2N0eXBlPSI8IURPQ1RZUEUiK24udmFsdWUrIj4iKSwobj1yLmdldEFsbCgidGl0bGUiKVswXSkmJm4uZmlyc3RDaGlsZCYmKGEudGl0bGU9bi5maXJzdENoaWxkLnZhbHVlKSx5LmVhY2goci5nZXRBbGwoIm1ldGEiKSxmdW5jdGlvbihlKXt2YXIgdCxuPWUuYXR0cigibmFtZSIpLGw9ZS5hdHRyKCJodHRwLWVxdWl2Iik7bj9hW24udG9Mb3dlckNhc2UoKV09ZS5hdHRyKCJjb250ZW50Iik6IkNvbnRlbnQtVHlwZSI9PT1sJiYodD0vY2hhcnNldFxzKj1ccyooLiopXHMqL2dpLmV4ZWMoZS5hdHRyKCJjb250ZW50IikpKSYmKGEuZG9jZW5jb2Rpbmc9dFsxXSl9KSwobj1yLmdldEFsbCgiaHRtbCIpWzBdKSYmKGEubGFuZ2NvZGU9cyhuLCJsYW5nIil8fHMobiwieG1sOmxhbmciKSksYS5zdHlsZXNoZWV0cz1bXSx5LmVhY2goci5nZXRBbGwoImxpbmsiKSxmdW5jdGlvbihlKXsic3R5bGVzaGVldCI9PT1lLmF0dHIoInJlbCIpJiZhLnN0eWxlc2hlZXRzLnB1c2goZS5hdHRyKCJocmVmIikpfSksKG49ci5nZXRBbGwoImJvZHkiKVswXSkmJihhLmxhbmdkaXI9cyhuLCJkaXIiKSxhLnN0eWxlPXMobiwic3R5bGUiKSxhLnZpc2l0ZWRfY29sb3I9cyhuLCJ2bGluayIpLGEubGlua19jb2xvcj1zKG4sImxpbmsiKSxhLmFjdGl2ZV9jb2xvcj1zKG4sImFsaW5rIikpLGEpO2Z1bmN0aW9uIHMoZSx0KXtyZXR1cm4gZS5hdHRyKHQpfHwiIn12YXIgZD11KHUoe30se3RpdGxlOiIiLGtleXdvcmRzOiIiLGRlc2NyaXB0aW9uOiIiLHJvYm90czoiIixhdXRob3I6IiIsZG9jZW5jb2Rpbmc6IiJ9KSxjKTtsLndpbmRvd01hbmFnZXIub3Blbih7dGl0bGU6Ik1ldGFkYXRhIGFuZCBEb2N1bWVudCBQcm9wZXJ0aWVzIixzaXplOiJub3JtYWwiLGJvZHk6e3R5cGU6InBhbmVsIixpdGVtczpbe25hbWU6InRpdGxlIix0eXBlOiJpbnB1dCIsbGFiZWw6IlRpdGxlIn0se25hbWU6ImtleXdvcmRzIix0eXBlOiJpbnB1dCIsbGFiZWw6IktleXdvcmRzIn0se25hbWU6ImRlc2NyaXB0aW9uIix0eXBlOiJpbnB1dCIsbGFiZWw6IkRlc2NyaXB0aW9uIn0se25hbWU6InJvYm90cyIsdHlwZToiaW5wdXQiLGxhYmVsOiJSb2JvdHMifSx7bmFtZToiYXV0aG9yIix0eXBlOiJpbnB1dCIsbGFiZWw6IkF1dGhvciJ9LHtuYW1lOiJkb2NlbmNvZGluZyIsdHlwZToiaW5wdXQiLGxhYmVsOiJFbmNvZGluZyJ9XX0sYnV0dG9uczpbe3R5cGU6ImNhbmNlbCIsbmFtZToiY2FuY2VsIix0ZXh0OiJDYW5jZWwifSx7dHlwZToic3VibWl0IixuYW1lOiJzYXZlIix0ZXh0OiJTYXZlIixwcmltYXJ5OiEwfV0saW5pdGlhbERhdGE6ZCxvblN1Ym1pdDpmdW5jdGlvbihlKXt2YXIgdD1lLmdldERhdGEoKSxuPWZ1bmN0aW9uKGUsbyx0KXt2YXIgcixuLGwsYSxpLGM9ZS5kb207ZnVuY3Rpb24gcyhlLHQsbil7ZS5hdHRyKHQsbnx8dW5kZWZpbmVkKX1mdW5jdGlvbiBkKGUpe24uZmlyc3RDaGlsZD9uLmluc2VydChlLG4uZmlyc3RDaGlsZCk6bi5hcHBlbmQoZSl9cj1fKHQpLChuPXIuZ2V0QWxsKCJoZWFkIilbMF0pfHwoYT1yLmdldEFsbCgiaHRtbCIpWzBdLG49bmV3IG0oImhlYWQiLDEpLGEuZmlyc3RDaGlsZD9hLmluc2VydChuLGEuZmlyc3RDaGlsZCwhMCk6YS5hcHBlbmQobikpLGE9ci5maXJzdENoaWxkLG8ueG1sX3BpPyhpPSd2ZXJzaW9uPSIxLjAiJyxvLmRvY2VuY29kaW5nJiYoaSs9JyBlbmNvZGluZz0iJytvLmRvY2VuY29kaW5nKyciJyksNyE9PWEudHlwZSYmKGE9bmV3IG0oInhtbCIsNyksci5pbnNlcnQoYSxyLmZpcnN0Q2hpbGQsITApKSxhLnZhbHVlPWkpOmEmJjc9PT1hLnR5cGUmJmEucmVtb3ZlKCksYT1yLmdldEFsbCgiI2RvY3R5cGUiKVswXSxvLmRvY3R5cGU/KGF8fChhPW5ldyBtKCIjZG9jdHlwZSIsMTApLG8ueG1sX3BpP3IuaW5zZXJ0KGEsci5maXJzdENoaWxkKTpkKGEpKSxhLnZhbHVlPW8uZG9jdHlwZS5zdWJzdHJpbmcoOSxvLmRvY3R5cGUubGVuZ3RoLTEpKTphJiZhLnJlbW92ZSgpLGE9bnVsbCx5LmVhY2goci5nZXRBbGwoIm1ldGEiKSxmdW5jdGlvbihlKXsiQ29udGVudC1UeXBlIj09PWUuYXR0cigiaHR0cC1lcXVpdiIpJiYoYT1lKX0pLG8uZG9jZW5jb2Rpbmc/KGF8fCgoYT1uZXcgbSgibWV0YSIsMSkpLmF0dHIoImh0dHAtZXF1aXYiLCJDb250ZW50LVR5cGUiKSxhLnNob3J0RW5kZWQ9ITAsZChhKSksYS5hdHRyKCJjb250ZW50IiwidGV4dC9odG1sOyBjaGFyc2V0PSIrby5kb2NlbmNvZGluZykpOmEmJmEucmVtb3ZlKCksYT1yLmdldEFsbCgidGl0bGUiKVswXSxvLnRpdGxlPyhhP2EuZW1wdHkoKTpkKGE9bmV3IG0oInRpdGxlIiwxKSksYS5hcHBlbmQobmV3IG0oIiN0ZXh0IiwzKSkudmFsdWU9by50aXRsZSk6YSYmYS5yZW1vdmUoKSx5LmVhY2goImtleXdvcmRzLGRlc2NyaXB0aW9uLGF1dGhvcixjb3B5cmlnaHQscm9ib3RzIi5zcGxpdCgiLCIpLGZ1bmN0aW9uKGUpe3ZhciB0LG4sbD1yLmdldEFsbCgibWV0YSIpLGk9b1tlXTtmb3IodD0wO3Q8bC5sZW5ndGg7dCsrKWlmKChuPWxbdF0pLmF0dHIoIm5hbWUiKT09PWUpcmV0dXJuIHZvaWQoaT9uLmF0dHIoImNvbnRlbnQiLGkpOm4ucmVtb3ZlKCkpO2kmJigoYT1uZXcgbSgibWV0YSIsMSkpLmF0dHIoIm5hbWUiLGUpLGEuYXR0cigiY29udGVudCIsaSksYS5zaG9ydEVuZGVkPSEwLGQoYSkpfSk7dmFyIHU9e307cmV0dXJuIHkuZWFjaChyLmdldEFsbCgibGluayIpLGZ1bmN0aW9uKGUpeyJzdHlsZXNoZWV0Ij09PWUuYXR0cigicmVsIikmJih1W2UuYXR0cigiaHJlZiIpXT1lKX0pLHkuZWFjaChvLnN0eWxlc2hlZXRzLGZ1bmN0aW9uKGUpe3VbZV18fCgoYT1uZXcgbSgibGluayIsMSkpLmF0dHIoe3JlbDoic3R5bGVzaGVldCIsdGV4dDoidGV4dC9jc3MiLGhyZWY6ZX0pLGEuc2hvcnRFbmRlZD0hMCxkKGEpKSxkZWxldGUgdVtlXX0pLHkuZWFjaCh1LGZ1bmN0aW9uKGUpe2UucmVtb3ZlKCl9KSwoYT1yLmdldEFsbCgiYm9keSIpWzBdKSYmKHMoYSwiZGlyIixvLmxhbmdkaXIpLHMoYSwic3R5bGUiLG8uc3R5bGUpLHMoYSwidmxpbmsiLG8udmlzaXRlZF9jb2xvcikscyhhLCJsaW5rIixvLmxpbmtfY29sb3IpLHMoYSwiYWxpbmsiLG8uYWN0aXZlX2NvbG9yKSxjLnNldEF0dHJpYnMoZS5nZXRCb2R5KCkse3N0eWxlOm8uc3R5bGUsZGlyOm8uZGlyLHZMaW5rOm8udmlzaXRlZF9jb2xvcixsaW5rOm8ubGlua19jb2xvcixhTGluazpvLmFjdGl2ZV9jb2xvcn0pKSwoYT1yLmdldEFsbCgiaHRtbCIpWzBdKSYmKHMoYSwibGFuZyIsby5sYW5nY29kZSkscyhhLCJ4bWw6bGFuZyIsby5sYW5nY29kZSkpLG4uZmlyc3RDaGlsZHx8bi5yZW1vdmUoKSwobD1mKHt2YWxpZGF0ZTohMSxpbmRlbnQ6ITAsaW5kZW50X2JlZm9yZToiaGVhZCxodG1sLGJvZHksbWV0YSx0aXRsZSxzY3JpcHQsbGluayxzdHlsZSIsaW5kZW50X2FmdGVyOiJoZWFkLGh0bWwsYm9keSxtZXRhLHRpdGxlLHNjcmlwdCxsaW5rLHN0eWxlIn0pLnNlcmlhbGl6ZShyKSkuc3Vic3RyaW5nKDAsbC5pbmRleE9mKCI8L2JvZHk+IikpfShsLHkuZXh0ZW5kKGMsdCksaS5nZXQoKSk7aS5zZXQobiksZS5jbG9zZSgpfX0pfSxiPXkuZWFjaCx4PWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoLzxcLz9bQS1aXSsvZyxmdW5jdGlvbihlKXtyZXR1cm4gZS50b0xvd2VyQ2FzZSgpfSl9LGs9ZnVuY3Rpb24oZSx0LG4sbCl7dmFyIGksbyxyLGEsYyxzLGQ9IiIsdT1lLmRvbTtpZighbC5zZWxlY3Rpb24mJihjPWUuc2V0dGluZ3MucHJvdGVjdCxzPWwuY29udGVudCx5LmVhY2goYyxmdW5jdGlvbihlKXtzPXMucmVwbGFjZShlLGZ1bmN0aW9uKGUpe3JldHVybiJceDNjIS0tbWNlOnByb3RlY3RlZCAiK2VzY2FwZShlKSsiLS1ceDNlIn0pfSkscj1zLCEoInJhdyI9PT1sLmZvcm1hdCYmdC5nZXQoKXx8bC5zb3VyY2VfdmlldyYmaChlKSkpKXswIT09ci5sZW5ndGh8fGwuc291cmNlX3ZpZXd8fChyPXkudHJpbSh0LmdldCgpKSsiXG4iK3kudHJpbShyKSsiXG4iK3kudHJpbShuLmdldCgpKSksLTEhPT0oaT0ocj1yLnJlcGxhY2UoLzwoXC8/KUJPRFkvZ2ksIjwkMWJvZHkiKSkuaW5kZXhPZigiPGJvZHkiKSk/KGk9ci5pbmRleE9mKCI+IixpKSx0LnNldCh4KHIuc3Vic3RyaW5nKDAsaSsxKSkpLC0xPT09KG89ci5pbmRleE9mKCI8L2JvZHkiLGkpKSYmKG89ci5sZW5ndGgpLGwuY29udGVudD15LnRyaW0oci5zdWJzdHJpbmcoaSsxLG8pKSxuLnNldCh4KHIuc3Vic3RyaW5nKG8pKSkpOih0LnNldChDKGUpKSxuLnNldCgiXG48L2JvZHk+XG48L2h0bWw+IikpLGE9Xyh0LmdldCgpKSxiKGEuZ2V0QWxsKCJzdHlsZSIpLGZ1bmN0aW9uKGUpe2UuZmlyc3RDaGlsZCYmKGQrPWUuZmlyc3RDaGlsZC52YWx1ZSl9KTt2YXIgbT1hLmdldEFsbCgiYm9keSIpWzBdO20mJnUuc2V0QXR0cmlicyhlLmdldEJvZHkoKSx7c3R5bGU6bS5hdHRyKCJzdHlsZSIpfHwiIixkaXI6bS5hdHRyKCJkaXIiKXx8IiIsdkxpbms6bS5hdHRyKCJ2bGluayIpfHwiIixsaW5rOm0uYXR0cigibGluayIpfHwiIixhTGluazptLmF0dHIoImFsaW5rIil8fCIifSksdS5yZW1vdmUoImZ1bGxwYWdlX3N0eWxlcyIpO3ZhciBmPWUuZ2V0RG9jKCkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXTtpZihkKXUuYWRkKGYsInN0eWxlIix7aWQ6ImZ1bGxwYWdlX3N0eWxlcyJ9KS5hcHBlbmRDaGlsZChwLmRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGQpKTt2YXIgZz17fTt5LmVhY2goZi5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpLGZ1bmN0aW9uKGUpeyJzdHlsZXNoZWV0Ij09PWUucmVsJiZlLmdldEF0dHJpYnV0ZSgiZGF0YS1tY2UtZnVsbHBhZ2UiKSYmKGdbZS5ocmVmXT1lKX0pLHkuZWFjaChhLmdldEFsbCgibGluayIpLGZ1bmN0aW9uKGUpe3ZhciB0PWUuYXR0cigiaHJlZiIpO2lmKCF0KXJldHVybiEwO2dbdF18fCJzdHlsZXNoZWV0IiE9PWUuYXR0cigicmVsIil8fHUuYWRkKGYsImxpbmsiLHtyZWw6InN0eWxlc2hlZXQiLHRleHQ6InRleHQvY3NzIixocmVmOnQsImRhdGEtbWNlLWZ1bGxwYWdlIjoiMSJ9KSxkZWxldGUgZ1t0XX0pLHkuZWFjaChnLGZ1bmN0aW9uKGUpe2UucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKX0pfX0sQz1mdW5jdGlvbihlKXt2YXIgdCxuPSIiLGw9IiI7aWYoZS5nZXRQYXJhbSgiZnVsbHBhZ2VfZGVmYXVsdF94bWxfcGkiKSl7dmFyIGk9byhlKTtuKz0nPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iJysoaXx8IklTTy04ODU5LTEiKSsnIiA/PlxuJ31yZXR1cm4gbis9ZS5nZXRQYXJhbSgiZnVsbHBhZ2VfZGVmYXVsdF9kb2N0eXBlIiwiPCFET0NUWVBFIGh0bWw+Iiksbis9IlxuPGh0bWw+XG48aGVhZD5cbiIsKHQ9ZS5nZXRQYXJhbSgiZnVsbHBhZ2VfZGVmYXVsdF90aXRsZSIpKSYmKG4rPSI8dGl0bGU+Iit0KyI8L3RpdGxlPlxuIiksKHQ9byhlKSkmJihuKz0nPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9Jyt0KyciIC8+XG4nKSwodD1nKGUpKSYmKGwrPSJmb250LWZhbWlseTogIit0KyI7IiksKHQ9dihlKSkmJihsKz0iZm9udC1zaXplOiAiK3QrIjsiKSwodD1lLmdldFBhcmFtKCJmdWxscGFnZV9kZWZhdWx0X3RleHRfY29sb3IiKSkmJihsKz0iY29sb3I6ICIrdCsiOyIpLG4rPSI8L2hlYWQ+XG48Ym9keSIrKGw/JyBzdHlsZT0iJytsKyciJzoiIikrIj5cbiJ9LEE9ZnVuY3Rpb24oZSx0LG4sbCl7bC5zZWxlY3Rpb258fGwuc291cmNlX3ZpZXcmJmgoZSl8fChsLmNvbnRlbnQ9KHkudHJpbSh0KSsiXG4iK3kudHJpbShsLmNvbnRlbnQpKyJcbiIreS50cmltKG4pKS5yZXBsYWNlKC88IS0tbWNlOnByb3RlY3RlZCAoW1xzXFNdKj8pLS0+L2csZnVuY3Rpb24oZSx0KXtyZXR1cm4gdW5lc2NhcGUodCl9KSl9OyFmdW5jdGlvbiBuKCl7ZS5hZGQoImZ1bGxwYWdlIixmdW5jdGlvbihlKXt2YXIgdCxuLGwsaSxvLHIsYT1zKCIiKSxjPXMoIiIpO249YSwodD1lKS5hZGRDb21tYW5kKCJtY2VGdWxsUGFnZVByb3BlcnRpZXMiLGZ1bmN0aW9uKCl7ZCh0LG4pfSksKGw9ZSkudWkucmVnaXN0cnkuYWRkQnV0dG9uKCJmdWxscGFnZSIse3Rvb2x0aXA6Ik1ldGFkYXRhIGFuZCBkb2N1bWVudCBwcm9wZXJ0aWVzIixpY29uOiJkb2N1bWVudC1wcm9wZXJ0aWVzIixvbkFjdGlvbjpmdW5jdGlvbigpe2wuZXhlY0NvbW1hbmQoIm1jZUZ1bGxQYWdlUHJvcGVydGllcyIpfX0pLGwudWkucmVnaXN0cnkuYWRkTWVudUl0ZW0oImZ1bGxwYWdlIix7dGV4dDoiTWV0YWRhdGEgYW5kIGRvY3VtZW50IHByb3BlcnRpZXMiLGljb246ImRvY3VtZW50LXByb3BlcnRpZXMiLG9uQWN0aW9uOmZ1bmN0aW9uKCl7bC5leGVjQ29tbWFuZCgibWNlRnVsbFBhZ2VQcm9wZXJ0aWVzIil9fSksbz1hLHI9YywoaT1lKS5vbigiQmVmb3JlU2V0Q29udGVudCIsZnVuY3Rpb24oZSl7ayhpLG8scixlKX0pLGkub24oIkdldENvbnRlbnQiLGZ1bmN0aW9uKGUpe0EoaSxvLmdldCgpLHIuZ2V0KCksZSl9KX0pfSgpfSh3aW5kb3cpOw==]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/fullscreen/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/fullscreen/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24oZyl7InVzZSBzdHJpY3QiO3ZhciBuLHQsZSxyLGM9ZnVuY3Rpb24obil7dmFyIHQ9bjtyZXR1cm57Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHR9LHNldDpmdW5jdGlvbihuKXt0PW59fX0sbz10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS5QbHVnaW5NYW5hZ2VyIiksdT1mdW5jdGlvbihuKXtyZXR1cm57aXNGdWxsc2NyZWVuOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPT1uLmdldCgpfX19LGk9ZnVuY3Rpb24oKXt9LGE9ZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG59fSxsPWEoITEpLGY9YSghMCksZD1mdW5jdGlvbigpe3JldHVybiBzfSxzPShuPWZ1bmN0aW9uKG4pe3JldHVybiBuLmlzTm9uZSgpfSx7Zm9sZDpmdW5jdGlvbihuLHQpe3JldHVybiBuKCl9LGlzOmwsaXNTb21lOmwsaXNOb25lOmYsZ2V0T3I6ZT1mdW5jdGlvbihuKXtyZXR1cm4gbn0sZ2V0T3JUaHVuazp0PWZ1bmN0aW9uKG4pe3JldHVybiBuKCl9LGdldE9yRGllOmZ1bmN0aW9uKG4pe3Rocm93IG5ldyBFcnJvcihufHwiZXJyb3I6IGdldE9yRGllIGNhbGxlZCBvbiBub25lLiIpfSxnZXRPck51bGw6YShudWxsKSxnZXRPclVuZGVmaW5lZDphKHVuZGVmaW5lZCksb3I6ZSxvclRodW5rOnQsbWFwOmQsZWFjaDppLGJpbmQ6ZCxleGlzdHM6bCxmb3JhbGw6ZixmaWx0ZXI6ZCxlcXVhbHM6bixlcXVhbHNfOm4sdG9BcnJheTpmdW5jdGlvbigpe3JldHVybltdfSx0b1N0cmluZzphKCJub25lKCkiKX0pLG09ZnVuY3Rpb24oZSl7dmFyIG49YShlKSx0PWZ1bmN0aW9uKCl7cmV0dXJuIG99LHI9ZnVuY3Rpb24obil7cmV0dXJuIG4oZSl9LG89e2ZvbGQ6ZnVuY3Rpb24obix0KXtyZXR1cm4gdChlKX0saXM6ZnVuY3Rpb24obil7cmV0dXJuIGU9PT1ufSxpc1NvbWU6Zixpc05vbmU6bCxnZXRPcjpuLGdldE9yVGh1bms6bixnZXRPckRpZTpuLGdldE9yTnVsbDpuLGdldE9yVW5kZWZpbmVkOm4sb3I6dCxvclRodW5rOnQsbWFwOmZ1bmN0aW9uKG4pe3JldHVybiBtKG4oZSkpfSxlYWNoOmZ1bmN0aW9uKG4pe24oZSl9LGJpbmQ6cixleGlzdHM6cixmb3JhbGw6cixmaWx0ZXI6ZnVuY3Rpb24obil7cmV0dXJuIG4oZSk/bzpzfSx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuW2VdfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiJzb21lKCIrZSsiKSJ9LGVxdWFsczpmdW5jdGlvbihuKXtyZXR1cm4gbi5pcyhlKX0sZXF1YWxzXzpmdW5jdGlvbihuLHQpe3JldHVybiBuLmZvbGQobCxmdW5jdGlvbihuKXtyZXR1cm4gdChlLG4pfSl9fTtyZXR1cm4gb30saD17c29tZTptLG5vbmU6ZCxmcm9tOmZ1bmN0aW9uKG4pe3JldHVybiBudWxsPT09bnx8bj09PXVuZGVmaW5lZD9zOm0obil9fSxwPWZ1bmN0aW9uKCl7cmV0dXJuIG49ZnVuY3Rpb24obil7bi51bmJpbmQoKX0sdD1jKGgubm9uZSgpKSxlPWZ1bmN0aW9uKCl7dC5nZXQoKS5lYWNoKG4pfSx7Y2xlYXI6ZnVuY3Rpb24oKXtlKCksdC5zZXQoaC5ub25lKCkpfSxpc1NldDpmdW5jdGlvbigpe3JldHVybiB0LmdldCgpLmlzU29tZSgpfSxzZXQ6ZnVuY3Rpb24obil7ZSgpLHQuc2V0KGguc29tZShuKSl9fTt2YXIgbix0LGV9LHY9ZnVuY3Rpb24ocil7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBlPXR5cGVvZih0PW4pLChudWxsPT09dD8ibnVsbCI6Im9iamVjdCI9PWUmJihBcnJheS5wcm90b3R5cGUuaXNQcm90b3R5cGVPZih0KXx8dC5jb25zdHJ1Y3RvciYmIkFycmF5Ij09PXQuY29uc3RydWN0b3IubmFtZSk/ImFycmF5Ijoib2JqZWN0Ij09ZSYmKFN0cmluZy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZih0KXx8dC5jb25zdHJ1Y3RvciYmIlN0cmluZyI9PT10LmNvbnN0cnVjdG9yLm5hbWUpPyJzdHJpbmciOmUpPT09cjt2YXIgdCxlfX0seT1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHR5cGVvZiBuPT09dH19LHc9digic3RyaW5nIiksYj12KCJhcnJheSIpLFM9eSgiYm9vbGVhbiIpLFQ9eSgiZnVuY3Rpb24iKSx4PXkoIm51bWJlciIpLEM9QXJyYXkucHJvdG90eXBlLnB1c2gsQT1mdW5jdGlvbihuLHQpe2Zvcih2YXIgZT1uLmxlbmd0aCxyPW5ldyBBcnJheShlKSxvPTA7bzxlO28rKyl7dmFyIGk9bltvXTtyW29dPXQoaSxvKX1yZXR1cm4gcn0sRT1mdW5jdGlvbihuLHQpe2Zvcih2YXIgZT0wLHI9bi5sZW5ndGg7ZTxyO2UrKyl7dChuW2VdLGUpfX0sTz1mdW5jdGlvbihuLHQpe2Zvcih2YXIgZT1bXSxyPTAsbz1uLmxlbmd0aDtyPG87cisrKXt2YXIgaT1uW3JdO3QoaSxyKSYmZS5wdXNoKGkpfXJldHVybiBlfSxEPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIGZ1bmN0aW9uKG4pe2Zvcih2YXIgdD1bXSxlPTAscj1uLmxlbmd0aDtlPHI7KytlKXtpZighYihuW2VdKSl0aHJvdyBuZXcgRXJyb3IoIkFyci5mbGF0dGVuIGl0ZW0gIitlKyIgd2FzIG5vdCBhbiBhcnJheSwgaW5wdXQ6ICIrbik7Qy5hcHBseSh0LG5bZV0pfXJldHVybiB0fShBKG4sdCkpfSxNPU9iamVjdC5rZXlzLE49ZnVuY3Rpb24obil7cmV0dXJuIG4uc3R5bGUhPT11bmRlZmluZWQmJlQobi5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKX0saz1mdW5jdGlvbihuKXtpZihudWxsPT09bnx8bj09PXVuZGVmaW5lZCl0aHJvdyBuZXcgRXJyb3IoIk5vZGUgY2Fubm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7cmV0dXJue2RvbTphKG4pfX0sRj17ZnJvbUh0bWw6ZnVuY3Rpb24obix0KXt2YXIgZT0odHx8Zy5kb2N1bWVudCkuY3JlYXRlRWxlbWVudCgiZGl2Iik7aWYoZS5pbm5lckhUTUw9biwhZS5oYXNDaGlsZE5vZGVzKCl8fDE8ZS5jaGlsZE5vZGVzLmxlbmd0aCl0aHJvdyBnLmNvbnNvbGUuZXJyb3IoIkhUTUwgZG9lcyBub3QgaGF2ZSBhIHNpbmdsZSByb290IG5vZGUiLG4pLG5ldyBFcnJvcigiSFRNTCBtdXN0IGhhdmUgYSBzaW5nbGUgcm9vdCBub2RlIik7cmV0dXJuIGsoZS5jaGlsZE5vZGVzWzBdKX0sZnJvbVRhZzpmdW5jdGlvbihuLHQpe3ZhciBlPSh0fHxnLmRvY3VtZW50KS5jcmVhdGVFbGVtZW50KG4pO3JldHVybiBrKGUpfSxmcm9tVGV4dDpmdW5jdGlvbihuLHQpe3ZhciBlPSh0fHxnLmRvY3VtZW50KS5jcmVhdGVUZXh0Tm9kZShuKTtyZXR1cm4gayhlKX0sZnJvbURvbTprLGZyb21Qb2ludDpmdW5jdGlvbihuLHQsZSl7dmFyIHI9bi5kb20oKTtyZXR1cm4gaC5mcm9tKHIuZWxlbWVudEZyb21Qb2ludCh0LGUpKS5tYXAoayl9fSxQPSgidW5kZWZpbmVkIiE9dHlwZW9mIGcud2luZG93P2cud2luZG93OkZ1bmN0aW9uKCJyZXR1cm4gdGhpczsiKSgpLHI9MyxmdW5jdGlvbihuKXtyZXR1cm4gbi5kb20oKS5ub2RlVHlwZT09PXJ9KSxMPWZ1bmN0aW9uKG4sdCxlKXshZnVuY3Rpb24obix0LGUpe2lmKCEodyhlKXx8UyhlKXx8eChlKSkpdGhyb3cgZy5jb25zb2xlLmVycm9yKCJJbnZhbGlkIGNhbGwgdG8gQXR0ci5zZXQuIEtleSAiLHQsIjo6IFZhbHVlICIsZSwiOjogRWxlbWVudCAiLG4pLG5ldyBFcnJvcigiQXR0cmlidXRlIHZhbHVlIHdhcyBub3Qgc2ltcGxlIik7bi5zZXRBdHRyaWJ1dGUodCxlKyIiKX0obi5kb20oKSx0LGUpfSxIPWZ1bmN0aW9uKG4sdCl7dmFyIGU9bi5kb20oKS5nZXRBdHRyaWJ1dGUodCk7cmV0dXJuIG51bGw9PT1lP3VuZGVmaW5lZDplfSxxPWZ1bmN0aW9uKG4sdCl7bi5kb20oKS5yZW1vdmVBdHRyaWJ1dGUodCl9LFY9ZnVuY3Rpb24obix0KXt2YXIgZT1uLmRvbSgpOyFmdW5jdGlvbihuLHQpe2Zvcih2YXIgZT1NKG4pLHI9MCxvPWUubGVuZ3RoO3I8bztyKyspe3ZhciBpPWVbcl07dChuW2ldLGkpfX0odCxmdW5jdGlvbihuLHQpeyFmdW5jdGlvbihuLHQsZSl7aWYoIXcoZSkpdGhyb3cgZy5jb25zb2xlLmVycm9yKCJJbnZhbGlkIGNhbGwgdG8gQ1NTLnNldC4gUHJvcGVydHkgIix0LCI6OiBWYWx1ZSAiLGUsIjo6IEVsZW1lbnQgIixuKSxuZXcgRXJyb3IoIkNTUyB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nOiAiK2UpO04obikmJm4uc3R5bGUuc2V0UHJvcGVydHkodCxlKX0oZSx0LG4pfSl9LFc9ZnVuY3Rpb24obix0KXt2YXIgZSxyLG89bi5kb20oKSxpPWcud2luZG93LmdldENvbXB1dGVkU3R5bGUobykuZ2V0UHJvcGVydHlWYWx1ZSh0KTtyZXR1cm4iIiE9PWl8fChyPVAoZT1uKT9lLmRvbSgpLnBhcmVudE5vZGU6ZS5kb20oKSkhPT11bmRlZmluZWQmJm51bGwhPT1yJiZyLm93bmVyRG9jdW1lbnQuYm9keS5jb250YWlucyhyKT9pOmoobyx0KX0saj1mdW5jdGlvbihuLHQpe3JldHVybiBOKG4pP24uc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSh0KToiIn0sej1mdW5jdGlvbihuKXt2YXIgZSxyLHQsbyxpLHU9Ri5mcm9tRG9tKG4udGFyZ2V0KSxjPWZ1bmN0aW9uKCl7cmV0dXJuIG4uc3RvcFByb3BhZ2F0aW9uKCl9LGw9ZnVuY3Rpb24oKXtyZXR1cm4gbi5wcmV2ZW50RGVmYXVsdCgpfSxmPShlPWwscj1jLGZ1bmN0aW9uKCl7Zm9yKHZhciBuPVtdLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKW5bdF09YXJndW1lbnRzW3RdO3JldHVybiBlKHIuYXBwbHkobnVsbCxuKSl9KTtyZXR1cm4gdD11LG89bi5jbGllbnRYLGk9bi5jbGllbnRZLHt0YXJnZXQ6YSh0KSx4OmEobykseTphKGkpLHN0b3A6YyxwcmV2ZW50Omwsa2lsbDpmLHJhdzphKG4pfX0sQj1mdW5jdGlvbihuLHQpe3ZhciBlPW4uZG9tKCk7aWYoMSE9PWUubm9kZVR5cGUpcmV0dXJuITE7dmFyIHI9ZTtpZihyLm1hdGNoZXMhPT11bmRlZmluZWQpcmV0dXJuIHIubWF0Y2hlcyh0KTtpZihyLm1zTWF0Y2hlc1NlbGVjdG9yIT09dW5kZWZpbmVkKXJldHVybiByLm1zTWF0Y2hlc1NlbGVjdG9yKHQpO2lmKHIud2Via2l0TWF0Y2hlc1NlbGVjdG9yIT09dW5kZWZpbmVkKXJldHVybiByLndlYmtpdE1hdGNoZXNTZWxlY3Rvcih0KTtpZihyLm1vek1hdGNoZXNTZWxlY3RvciE9PXVuZGVmaW5lZClyZXR1cm4gci5tb3pNYXRjaGVzU2VsZWN0b3IodCk7dGhyb3cgbmV3IEVycm9yKCJCcm93c2VyIGxhY2tzIG5hdGl2ZSBzZWxlY3RvcnMiKX0sST1mdW5jdGlvbihlKXt2YXIgbjtyZXR1cm4gbj1lLGguZnJvbShuLmRvbSgpLnBhcmVudE5vZGUpLm1hcChGLmZyb21Eb20pLm1hcChVKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIE8obixmdW5jdGlvbihuKXtyZXR1cm4gdD1uLGUuZG9tKCkhPT10LmRvbSgpO3ZhciB0fSl9KS5nZXRPcihbXSl9LFU9ZnVuY3Rpb24obil7cmV0dXJuIEEobi5kb20oKS5jaGlsZE5vZGVzLEYuZnJvbURvbSl9LF89ZnVuY3Rpb24oZSxyKXtyZXR1cm57bGVmdDphKGUpLHRvcDphKHIpLHRyYW5zbGF0ZTpmdW5jdGlvbihuLHQpe3JldHVybiBfKGUrbixyK3QpfX19LEs9XyxYPWZ1bmN0aW9uKG4pe3ZhciB0PW49PT11bmRlZmluZWQ/Zy53aW5kb3c6bjtyZXR1cm4gaC5mcm9tKHQudmlzdWFsVmlld3BvcnQpfSxZPWZ1bmN0aW9uKG4sdCxlLHIpe3JldHVybnt4Om4seTp0LHdpZHRoOmUsaGVpZ2h0OnIscmlnaHQ6bitlLGJvdHRvbTp0K3J9fSxHPWZ1bmN0aW9uKG4pe3ZhciB0LGUscixvLGk9bj09PXVuZGVmaW5lZD9nLndpbmRvdzpuLHU9aS5kb2N1bWVudCxjPSh0PUYuZnJvbURvbSh1KSxlPXQhPT11bmRlZmluZWQ/dC5kb20oKTpnLmRvY3VtZW50LHI9ZS5ib2R5LnNjcm9sbExlZnR8fGUuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQsbz1lLmJvZHkuc2Nyb2xsVG9wfHxlLmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AsSyhyLG8pKTtyZXR1cm4gWChpKS5mb2xkKGZ1bmN0aW9uKCl7dmFyIG49aS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsdD1uLmNsaWVudFdpZHRoLGU9bi5jbGllbnRIZWlnaHQ7cmV0dXJuIFkoYy5sZWZ0KCksYy50b3AoKSx0LGUpfSxmdW5jdGlvbihuKXtyZXR1cm4gWShNYXRoLm1heChuLnBhZ2VMZWZ0LGMubGVmdCgpKSxNYXRoLm1heChuLnBhZ2VUb3AsYy50b3AoKSksbi53aWR0aCxuLmhlaWdodCl9KX0sSj1mdW5jdGlvbihlLG4sdCl7cmV0dXJuIFgodCkubWFwKGZ1bmN0aW9uKG4pe3ZhciB0PWZ1bmN0aW9uKG4pe3JldHVybiB6KG4pfTtyZXR1cm4gbi5hZGRFdmVudExpc3RlbmVyKGUsdCkse3VuYmluZDpmdW5jdGlvbigpe3JldHVybiBuLnJlbW92ZUV2ZW50TGlzdGVuZXIoZSx0KX19fSkuZ2V0T3JUaHVuayhmdW5jdGlvbigpe3JldHVybnt1bmJpbmQ6aX19KX0sUT10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS5kb20uRE9NVXRpbHMiKSxSPXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLkVudiIpLFo9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UudXRpbC5EZWxheSIpLCQ9ZnVuY3Rpb24obix0KXtuLmZpcmUoIkZ1bGxzY3JlZW5TdGF0ZUNoYW5nZWQiLHtzdGF0ZTp0fSl9LG5uPWZ1bmN0aW9uKG4sdCxlKXtyZXR1cm4gTyhmdW5jdGlvbihuLHQpe2Zvcih2YXIgZT1UKHQpP3Q6bCxyPW4uZG9tKCksbz1bXTtudWxsIT09ci5wYXJlbnROb2RlJiZyLnBhcmVudE5vZGUhPT11bmRlZmluZWQ7KXt2YXIgaT1yLnBhcmVudE5vZGUsdT1GLmZyb21Eb20oaSk7aWYoby5wdXNoKHUpLCEwPT09ZSh1KSlicmVhaztyPWl9cmV0dXJuIG99KG4sZSksdCl9LHRuPWZ1bmN0aW9uKG4pe3JldHVybiB0PW4sbz1lPT09dW5kZWZpbmVkP2cuZG9jdW1lbnQ6ZS5kb20oKSwxIT09KHI9bykubm9kZVR5cGUmJjkhPT1yLm5vZGVUeXBlfHwwPT09ci5jaGlsZEVsZW1lbnRDb3VudD9bXTpBKG8ucXVlcnlTZWxlY3RvckFsbCh0KSxGLmZyb21Eb20pO3ZhciB0LGUscixvfSxlbj1mdW5jdGlvbihuLHQpe3JldHVybiBlPWZ1bmN0aW9uKG4pe3JldHVybiBCKG4sdCl9LE8oSShuKSxlKTt2YXIgZX0scm49ImRhdGEtZXBob3gtbW9iaWxlLWZ1bGxzY3JlZW4tc3R5bGUiLG9uPSJwb3NpdGlvbjphYnNvbHV0ZSFpbXBvcnRhbnQ7Iix1bj0idG9wOjAhaW1wb3J0YW50O2xlZnQ6MCFpbXBvcnRhbnQ7bWFyZ2luOjAhaW1wb3J0YW50O3BhZGRpbmc6MCFpbXBvcnRhbnQ7d2lkdGg6MTAwJSFpbXBvcnRhbnQ7aGVpZ2h0OjEwMCUhaW1wb3J0YW50O292ZXJmbG93OnZpc2libGUhaW1wb3J0YW50OyIsY249Ui5vcy5pc0FuZHJvaWQoKSxsbj1mdW5jdGlvbihvLG4sdCl7dmFyIGUscixpLHU9ZnVuY3Rpb24ocil7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciB0PUgobiwic3R5bGUiKSxlPXQ9PT11bmRlZmluZWQ/Im5vLXN0eWxlcyI6dC50cmltKCk7ZSE9PXImJihMKG4scm4sZSksVihuLG8ucGFyc2VTdHlsZShyKSkpfX0sYz0oZT0iKiIsbm4obixmdW5jdGlvbihuKXtyZXR1cm4gQihuLGUpfSxyKSksbD1EKGMsZnVuY3Rpb24obil7cmV0dXJuIGVuKG4sIio6bm90KC50b3gtc2lsdmVyLXNpbmspIil9KSxmPShpPVcodCwiYmFja2dyb3VuZC1jb2xvciIpKSE9PXVuZGVmaW5lZCYmIiIhPT1pPyJiYWNrZ3JvdW5kLWNvbG9yOiIraSsiIWltcG9ydGFudCI6ImJhY2tncm91bmQtY29sb3I6cmdiKDI1NSwyNTUsMjU1KSFpbXBvcnRhbnQ7IjtFKGwsdSgiZGlzcGxheTpub25lIWltcG9ydGFudDsiKSksRShjLHUob24rdW4rZikpLHUoKCEwPT09Y24/IiI6b24pK3VuK2YpKG4pfSxmbj1RLkRPTSxhbj1YKCkuZm9sZChmdW5jdGlvbigpe3JldHVybntiaW5kOmksdW5iaW5kOml9fSxmdW5jdGlvbih0KXt2YXIgZSxyPShlPWMoaC5ub25lKCkpLHtjbGVhcjpmdW5jdGlvbigpe2Uuc2V0KGgubm9uZSgpKX0sc2V0OmZ1bmN0aW9uKG4pe2Uuc2V0KGguc29tZShuKSl9LGlzU2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuZ2V0KCkuaXNTb21lKCl9LG9uOmZ1bmN0aW9uKG4pe2UuZ2V0KCkuZWFjaChuKX19KSxvPXAoKSxpPXAoKSx1PVoudGhyb3R0bGUoZnVuY3Rpb24oKXtnLmRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wPTAsZy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wPTAsZy53aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCl7ci5vbihmdW5jdGlvbihuKXtyZXR1cm4gVihuLHt0b3A6dC5vZmZzZXRUb3ArInB4IixsZWZ0OnQub2Zmc2V0TGVmdCsicHgiLGhlaWdodDp0LmhlaWdodCsicHgiLHdpZHRoOnQud2lkdGgrInB4In0pfSl9KX0sNTApO3JldHVybntiaW5kOmZ1bmN0aW9uKG4pe3Iuc2V0KG4pLHUoKSxvLnNldChKKCJyZXNpemUiKSksaS5zZXQoSigic2Nyb2xsIikpfSx1bmJpbmQ6ZnVuY3Rpb24oKXtyLm9uKGZ1bmN0aW9uKCl7by5jbGVhcigpLGkuY2xlYXIoKX0pLHIuY2xlYXIoKX19fSksZG49ZnVuY3Rpb24obix0KXt2YXIgZSxyLG8saT1nLmRvY3VtZW50LmJvZHksdT1nLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtyPW4uZ2V0Q29udGFpbmVyKCk7dmFyIGMsbCxmLGEsZD1GLmZyb21Eb20ocikscz10LmdldCgpLG09Ri5mcm9tRG9tKG4uZ2V0Qm9keSgpKSxoPVIuZGV2aWNlVHlwZS5pc1RvdWNoKCk7aWYoZT1yLnN0eWxlLG89bi5nZXRDb250ZW50QXJlYUNvbnRhaW5lcigpLmZpcnN0Q2hpbGQuc3R5bGUscylvLndpZHRoPXMuaWZyYW1lV2lkdGgsby5oZWlnaHQ9cy5pZnJhbWVIZWlnaHQsZS53aWR0aD1zLmNvbnRhaW5lcldpZHRoLGUuaGVpZ2h0PXMuY29udGFpbmVySGVpZ2h0LGUudG9wPXMuY29udGFpbmVyVG9wLGUubGVmdD1zLmNvbnRhaW5lckxlZnQsaCYmKGw9bi5kb20sZj10bigiWyIrcm4rIl0iKSxFKGYsZnVuY3Rpb24obil7dmFyIHQ9SChuLHJuKTsibm8tc3R5bGVzIiE9PXQ/VihuLGwucGFyc2VTdHlsZSh0KSk6cShuLCJzdHlsZSIpLHEobixybil9KSksZm4ucmVtb3ZlQ2xhc3MoaSwidG94LWZ1bGxzY3JlZW4iKSxmbi5yZW1vdmVDbGFzcyh1LCJ0b3gtZnVsbHNjcmVlbiIpLGZuLnJlbW92ZUNsYXNzKHIsInRveC1mdWxsc2NyZWVuIiksYz1zLnNjcm9sbFBvcyxnLndpbmRvdy5zY3JvbGxUbyhjLngsYy55KSx0LnNldChudWxsKSwkKG4sITEpLGFuLnVuYmluZCgpLG4ub2ZmKCJyZW1vdmUiLGFuLnVuYmluZCk7ZWxzZXt2YXIgcD17c2Nyb2xsUG9zOnt4OihhPUcoZy53aW5kb3cpKS54LHk6YS55fSxjb250YWluZXJXaWR0aDplLndpZHRoLGNvbnRhaW5lckhlaWdodDplLmhlaWdodCxjb250YWluZXJUb3A6ZS50b3AsY29udGFpbmVyTGVmdDplLmxlZnQsaWZyYW1lV2lkdGg6by53aWR0aCxpZnJhbWVIZWlnaHQ6by5oZWlnaHR9O2gmJmxuKG4uZG9tLGQsbSksby53aWR0aD1vLmhlaWdodD0iMTAwJSIsZS53aWR0aD1lLmhlaWdodD0iIixmbi5hZGRDbGFzcyhpLCJ0b3gtZnVsbHNjcmVlbiIpLGZuLmFkZENsYXNzKHUsInRveC1mdWxsc2NyZWVuIiksZm4uYWRkQ2xhc3MociwidG94LWZ1bGxzY3JlZW4iKSxhbi5iaW5kKGQpLG4ub24oInJlbW92ZSIsYW4udW5iaW5kKSx0LnNldChwKSwkKG4sITApfX0sc249ZnVuY3Rpb24oZSxyKXtyZXR1cm4gZnVuY3Rpb24odCl7dC5zZXRBY3RpdmUobnVsbCE9PXIuZ2V0KCkpO3ZhciBuPWZ1bmN0aW9uKG4pe3JldHVybiB0LnNldEFjdGl2ZShuLnN0YXRlKX07cmV0dXJuIGUub24oIkZ1bGxzY3JlZW5TdGF0ZUNoYW5nZWQiLG4pLGZ1bmN0aW9uKCl7cmV0dXJuIGUub2ZmKCJGdWxsc2NyZWVuU3RhdGVDaGFuZ2VkIixuKX19fTshZnVuY3Rpb24gbW4oKXtvLmFkZCgiZnVsbHNjcmVlbiIsZnVuY3Rpb24obil7dmFyIHQsZSxyLG8saT1jKG51bGwpO3JldHVybiBuLnNldHRpbmdzLmlubGluZXx8KGU9aSwodD1uKS5hZGRDb21tYW5kKCJtY2VGdWxsU2NyZWVuIixmdW5jdGlvbigpe2RuKHQsZSl9KSxvPWksKHI9bikudWkucmVnaXN0cnkuYWRkVG9nZ2xlTWVudUl0ZW0oImZ1bGxzY3JlZW4iLHt0ZXh0OiJGdWxsc2NyZWVuIixpY29uOiJmdWxsc2NyZWVuIixzaG9ydGN1dDoiTWV0YStTaGlmdCtGIixvbkFjdGlvbjpmdW5jdGlvbigpe3JldHVybiByLmV4ZWNDb21tYW5kKCJtY2VGdWxsU2NyZWVuIil9LG9uU2V0dXA6c24ocixvKX0pLHIudWkucmVnaXN0cnkuYWRkVG9nZ2xlQnV0dG9uKCJmdWxsc2NyZWVuIix7dG9vbHRpcDoiRnVsbHNjcmVlbiIsaWNvbjoiZnVsbHNjcmVlbiIsb25BY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gci5leGVjQ29tbWFuZCgibWNlRnVsbFNjcmVlbiIpfSxvblNldHVwOnNuKHIsbyl9KSxuLmFkZFNob3J0Y3V0KCJNZXRhK1NoaWZ0K0YiLCIiLCJtY2VGdWxsU2NyZWVuIikpLHUoaSl9KX0oKX0od2luZG93KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/help/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/help/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIGUsdCxuLGE9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuUGx1Z2luTWFuYWdlciIpLG09ZnVuY3Rpb24oKXtyZXR1cm4obT1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQsbj0xLGE9YXJndW1lbnRzLmxlbmd0aDtuPGE7bisrKWZvcih2YXIgbyBpbiB0PWFyZ3VtZW50c1tuXSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxvKSYmKGVbb109dFtvXSk7cmV0dXJuIGV9KS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGk9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGV9fSxyPWkoITEpLHM9aSghMCksbz1mdW5jdGlvbigpe3JldHVybiBjfSxjPShlPWZ1bmN0aW9uKGUpe3JldHVybiBlLmlzTm9uZSgpfSx7Zm9sZDpmdW5jdGlvbihlLHQpe3JldHVybiBlKCl9LGlzOnIsaXNTb21lOnIsaXNOb25lOnMsZ2V0T3I6bj1mdW5jdGlvbihlKXtyZXR1cm4gZX0sZ2V0T3JUaHVuazp0PWZ1bmN0aW9uKGUpe3JldHVybiBlKCl9LGdldE9yRGllOmZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcihlfHwiZXJyb3I6IGdldE9yRGllIGNhbGxlZCBvbiBub25lLiIpfSxnZXRPck51bGw6aShudWxsKSxnZXRPclVuZGVmaW5lZDppKHVuZGVmaW5lZCksb3I6bixvclRodW5rOnQsbWFwOm8sZWFjaDpmdW5jdGlvbigpe30sYmluZDpvLGV4aXN0czpyLGZvcmFsbDpzLGZpbHRlcjpvLGVxdWFsczplLGVxdWFsc186ZSx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuW119LHRvU3RyaW5nOmkoIm5vbmUoKSIpfSksbD1mdW5jdGlvbihuKXt2YXIgZT1pKG4pLHQ9ZnVuY3Rpb24oKXtyZXR1cm4gb30sYT1mdW5jdGlvbihlKXtyZXR1cm4gZShuKX0sbz17Zm9sZDpmdW5jdGlvbihlLHQpe3JldHVybiB0KG4pfSxpczpmdW5jdGlvbihlKXtyZXR1cm4gbj09PWV9LGlzU29tZTpzLGlzTm9uZTpyLGdldE9yOmUsZ2V0T3JUaHVuazplLGdldE9yRGllOmUsZ2V0T3JOdWxsOmUsZ2V0T3JVbmRlZmluZWQ6ZSxvcjp0LG9yVGh1bms6dCxtYXA6ZnVuY3Rpb24oZSl7cmV0dXJuIGwoZShuKSl9LGVhY2g6ZnVuY3Rpb24oZSl7ZShuKX0sYmluZDphLGV4aXN0czphLGZvcmFsbDphLGZpbHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gZShuKT9vOmN9LHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm5bbl19LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuInNvbWUoIituKyIpIn0sZXF1YWxzOmZ1bmN0aW9uKGUpe3JldHVybiBlLmlzKG4pfSxlcXVhbHNfOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuZm9sZChyLGZ1bmN0aW9uKGUpe3JldHVybiB0KG4sZSl9KX19O3JldHVybiBvfSxkPXtzb21lOmwsbm9uZTpvLGZyb206ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PT1lfHxlPT09dW5kZWZpbmVkP2M6bChlKX19LHU9QXJyYXkucHJvdG90eXBlLmluZGV4T2YsaD1mdW5jdGlvbihlLHQpe3JldHVybiBuPWUsYT10LC0xPHUuY2FsbChuLGEpO3ZhciBuLGF9LHA9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49ZS5sZW5ndGgsYT1uZXcgQXJyYXkobiksbz0wO288bjtvKyspe3ZhciBpPWVbb107YVtvXT10KGksbyl9cmV0dXJuIGF9LGc9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgYT0wLG89ZS5sZW5ndGg7YTxvO2ErKyl7dmFyIGk9ZVthXTtpZih0KGksYSkpcmV0dXJuIGQuc29tZShpKTtpZihuKGksYSkpYnJlYWt9cmV0dXJuIGQubm9uZSgpfShlLHQscil9LGY9T2JqZWN0LmtleXMsYj1PYmplY3QuaGFzT3duUHJvcGVydHkseT1mdW5jdGlvbihlLHQpe3JldHVybiBiLmNhbGwoZSx0KX0saz1be3Nob3J0Y3V0czpbIk1ldGEgKyBCIl0sYWN0aW9uOiJCb2xkIn0se3Nob3J0Y3V0czpbIk1ldGEgKyBJIl0sYWN0aW9uOiJJdGFsaWMifSx7c2hvcnRjdXRzOlsiTWV0YSArIFUiXSxhY3Rpb246IlVuZGVybGluZSJ9LHtzaG9ydGN1dHM6WyJNZXRhICsgQSJdLGFjdGlvbjoiU2VsZWN0IGFsbCJ9LHtzaG9ydGN1dHM6WyJNZXRhICsgWSIsIk1ldGEgKyBTaGlmdCArIFoiXSxhY3Rpb246IlJlZG8ifSx7c2hvcnRjdXRzOlsiTWV0YSArIFoiXSxhY3Rpb246IlVuZG8ifSx7c2hvcnRjdXRzOlsiQWNjZXNzICsgMSJdLGFjdGlvbjoiSGVhZGVyIDEifSx7c2hvcnRjdXRzOlsiQWNjZXNzICsgMiJdLGFjdGlvbjoiSGVhZGVyIDIifSx7c2hvcnRjdXRzOlsiQWNjZXNzICsgMyJdLGFjdGlvbjoiSGVhZGVyIDMifSx7c2hvcnRjdXRzOlsiQWNjZXNzICsgNCJdLGFjdGlvbjoiSGVhZGVyIDQifSx7c2hvcnRjdXRzOlsiQWNjZXNzICsgNSJdLGFjdGlvbjoiSGVhZGVyIDUifSx7c2hvcnRjdXRzOlsiQWNjZXNzICsgNiJdLGFjdGlvbjoiSGVhZGVyIDYifSx7c2hvcnRjdXRzOlsiQWNjZXNzICsgNyJdLGFjdGlvbjoiUGFyYWdyYXBoIn0se3Nob3J0Y3V0czpbIkFjY2VzcyArIDgiXSxhY3Rpb246IkRpdiJ9LHtzaG9ydGN1dHM6WyJBY2Nlc3MgKyA5Il0sYWN0aW9uOiJBZGRyZXNzIn0se3Nob3J0Y3V0czpbIkFsdCArIDAiXSxhY3Rpb246Ik9wZW4gaGVscCBkaWFsb2cifSx7c2hvcnRjdXRzOlsiQWx0ICsgRjkiXSxhY3Rpb246IkZvY3VzIHRvIG1lbnViYXIifSx7c2hvcnRjdXRzOlsiQWx0ICsgRjEwIl0sYWN0aW9uOiJGb2N1cyB0byB0b29sYmFyIn0se3Nob3J0Y3V0czpbIkFsdCArIEYxMSJdLGFjdGlvbjoiRm9jdXMgdG8gZWxlbWVudCBwYXRoIn0se3Nob3J0Y3V0czpbIkN0cmwgKyBGOSJdLGFjdGlvbjoiRm9jdXMgdG8gY29udGV4dHVhbCB0b29sYmFyIn0se3Nob3J0Y3V0czpbIlNoaWZ0ICsgRW50ZXIiXSxhY3Rpb246Ik9wZW4gcG9wdXAgbWVudSBmb3Igc3BsaXQgYnV0dG9ucyJ9LHtzaG9ydGN1dHM6WyJNZXRhICsgSyJdLGFjdGlvbjoiSW5zZXJ0IGxpbmsgKGlmIGxpbmsgcGx1Z2luIGFjdGl2YXRlZCkifSx7c2hvcnRjdXRzOlsiTWV0YSArIFMiXSxhY3Rpb246IlNhdmUgKGlmIHNhdmUgcGx1Z2luIGFjdGl2YXRlZCkifSx7c2hvcnRjdXRzOlsiTWV0YSArIEYiXSxhY3Rpb246IkZpbmQgKGlmIHNlYXJjaHJlcGxhY2UgcGx1Z2luIGFjdGl2YXRlZCkifSx7c2hvcnRjdXRzOlsiTWV0YSArIFNoaWZ0ICsgRiJdLGFjdGlvbjoiU3dpdGNoIHRvIG9yIGZyb20gZnVsbHNjcmVlbiBtb2RlIn1dLHY9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuRW52Iiksdz1mdW5jdGlvbihlKXt2YXIgbj12Lm1hYz97YWx0OiImI3gyMzI1OyIsY3RybDoiJiN4MjMwMzsiLHNoaWZ0OiImI3gyMUU3OyIsbWV0YToiJiN4MjMxODsiLGFjY2VzczoiJiN4MjMwMzsmI3gyMzI1OyJ9OnttZXRhOiJDdHJsICIsYWNjZXNzOiJTaGlmdCArIEFsdCAifSx0PWUuc3BsaXQoIisiKSxhPXAodCxmdW5jdGlvbihlKXt2YXIgdD1lLnRvTG93ZXJDYXNlKCkudHJpbSgpO3JldHVybiB5KG4sdCk/blt0XTplfSk7cmV0dXJuIHYubWFjP2Euam9pbigiIikucmVwbGFjZSgvXHMvLCIiKTphLmpvaW4oIisiKX0sQT10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS51dGlsLkkxOG4iKSxDPVt7a2V5OiJhZHZsaXN0IixuYW1lOiJBZHZhbmNlZCBMaXN0In0se2tleToiYW5jaG9yIixuYW1lOiJBbmNob3IifSx7a2V5OiJhdXRvbGluayIsbmFtZToiQXV0b2xpbmsifSx7a2V5OiJhdXRvcmVzaXplIixuYW1lOiJBdXRvcmVzaXplIn0se2tleToiYXV0b3NhdmUiLG5hbWU6IkF1dG9zYXZlIn0se2tleToiYmJjb2RlIixuYW1lOiJCQkNvZGUifSx7a2V5OiJjaGFybWFwIixuYW1lOiJDaGFyYWN0ZXIgTWFwIn0se2tleToiY29kZSIsbmFtZToiQ29kZSJ9LHtrZXk6ImNvZGVzYW1wbGUiLG5hbWU6IkNvZGUgU2FtcGxlIn0se2tleToiY29sb3JwaWNrZXIiLG5hbWU6IkNvbG9yIFBpY2tlciJ9LHtrZXk6ImRpcmVjdGlvbmFsaXR5IixuYW1lOiJEaXJlY3Rpb25hbGl0eSJ9LHtrZXk6ImVtb3RpY29ucyIsbmFtZToiRW1vdGljb25zIn0se2tleToiZnVsbHBhZ2UiLG5hbWU6IkZ1bGwgUGFnZSJ9LHtrZXk6ImZ1bGxzY3JlZW4iLG5hbWU6IkZ1bGwgU2NyZWVuIn0se2tleToiaGVscCIsbmFtZToiSGVscCJ9LHtrZXk6ImhyIixuYW1lOiJIb3Jpem9udGFsIFJ1bGUifSx7a2V5OiJpbWFnZSIsbmFtZToiSW1hZ2UifSx7a2V5OiJpbWFnZXRvb2xzIixuYW1lOiJJbWFnZSBUb29scyJ9LHtrZXk6ImltcG9ydGNzcyIsbmFtZToiSW1wb3J0IENTUyJ9LHtrZXk6Imluc2VydGRhdGV0aW1lIixuYW1lOiJJbnNlcnQgRGF0ZS9UaW1lIn0se2tleToibGVnYWN5b3V0cHV0IixuYW1lOiJMZWdhY3kgT3V0cHV0In0se2tleToibGluayIsbmFtZToiTGluayJ9LHtrZXk6Imxpc3RzIixuYW1lOiJMaXN0cyJ9LHtrZXk6Im1lZGlhIixuYW1lOiJNZWRpYSJ9LHtrZXk6Im5vbmJyZWFraW5nIixuYW1lOiJOb25icmVha2luZyJ9LHtrZXk6Im5vbmVkaXRhYmxlIixuYW1lOiJOb25lZGl0YWJsZSJ9LHtrZXk6InBhZ2VicmVhayIsbmFtZToiUGFnZSBCcmVhayJ9LHtrZXk6InBhc3RlIixuYW1lOiJQYXN0ZSJ9LHtrZXk6InByZXZpZXciLG5hbWU6IlByZXZpZXcifSx7a2V5OiJwcmludCIsbmFtZToiUHJpbnQifSx7a2V5OiJzYXZlIixuYW1lOiJTYXZlIn0se2tleToic2VhcmNocmVwbGFjZSIsbmFtZToiU2VhcmNoIGFuZCBSZXBsYWNlIn0se2tleToic3BlbGxjaGVja2VyIixuYW1lOiJTcGVsbCBDaGVja2VyIn0se2tleToidGFiZm9jdXMiLG5hbWU6IlRhYiBGb2N1cyJ9LHtrZXk6InRhYmxlIixuYW1lOiJUYWJsZSJ9LHtrZXk6InRlbXBsYXRlIixuYW1lOiJUZW1wbGF0ZSJ9LHtrZXk6InRleHRjb2xvciIsbmFtZToiVGV4dCBDb2xvciJ9LHtrZXk6InRleHRwYXR0ZXJuIixuYW1lOiJUZXh0IFBhdHRlcm4ifSx7a2V5OiJ0b2MiLG5hbWU6IlRhYmxlIG9mIENvbnRlbnRzIn0se2tleToidmlzdWFsYmxvY2tzIixuYW1lOiJWaXN1YWwgQmxvY2tzIn0se2tleToidmlzdWFsY2hhcnMiLG5hbWU6IlZpc3VhbCBDaGFyYWN0ZXJzIn0se2tleToid29yZGNvdW50IixuYW1lOiJXb3JkIENvdW50In0se2tleToiYWR2Y29kZSIsbmFtZToiQWR2YW5jZWQgQ29kZSBFZGl0b3IqIn0se2tleToiZm9ybWF0cGFpbnRlciIsbmFtZToiRm9ybWF0IFBhaW50ZXIqIn0se2tleToicG93ZXJwYXN0ZSIsbmFtZToiUG93ZXJQYXN0ZSoifSx7a2V5OiJ0aW55ZHJpdmUiLG5hbWU6IlRpbnkgRHJpdmUqIn0se2tleToidGlueW1jZXNwZWxsY2hlY2tlciIsbmFtZToiU3BlbGwgQ2hlY2tlciBQcm8qIn0se2tleToiYTExeWNoZWNrZXIiLG5hbWU6IkFjY2Vzc2liaWxpdHkgQ2hlY2tlcioifSx7a2V5OiJsaW5rY2hlY2tlciIsbmFtZToiTGluayBDaGVja2VyKiJ9LHtrZXk6Im1lbnRpb25zIixuYW1lOiJNZW50aW9ucyoifSx7a2V5OiJtZWRpYWVtYmVkIixuYW1lOiJFbmhhbmNlZCBNZWRpYSBFbWJlZCoifSx7a2V5OiJjaGVja2xpc3QiLG5hbWU6IkNoZWNrbGlzdCoifSx7a2V5OiJjYXNlY2hhbmdlIixuYW1lOiJDYXNlIENoYW5nZSoifSx7a2V5OiJwZXJtYW5lbnRwZW4iLG5hbWU6IlBlcm1hbmVudCBQZW4qIn0se2tleToicGFnZWVtYmVkIixuYW1lOiJQYWdlIEVtYmVkKiJ9LHtrZXk6InRpbnljb21tZW50cyIsbmFtZToiVGlueSBDb21tZW50cyoifSx7a2V5OiJhZHZ0YWJsZSIsbmFtZToiQWR2YW5jZWQgVGFibGVzKiJ9LHtrZXk6ImF1dG9jb3JyZWN0IixuYW1lOiJBdXRvY29ycmVjdCoifV0sVD1mdW5jdGlvbihlKXt2YXIgdCxuLHM9ZnVuY3Rpb24oZSl7cmV0dXJuJzxhIGhyZWY9IicrZS51cmwrJyIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPicrZS5uYW1lKyI8L2E+In07cmV0dXJue25hbWU6InBsdWdpbnMiLHRpdGxlOiJQbHVnaW5zIixpdGVtczpbe3R5cGU6Imh0bWxwYW5lbCIscHJlc2V0czoiZG9jdW1lbnQiLGh0bWw6W251bGw9PShuPWUpPyIiOic8ZGl2IGRhdGEtbWNlLXRhYnN0b3A9IjEiIHRhYmluZGV4PSItMSI+JytmdW5jdGlvbihhKXt2YXIgdCxlLG49KGU9ZigodD1hKS5wbHVnaW5zKSx0LnNldHRpbmdzLmZvcmNlZF9wbHVnaW5zPT09dW5kZWZpbmVkP2U6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49W10sYT0wLG89ZS5sZW5ndGg7YTxvO2ErKyl7dmFyIGk9ZVthXTt0KGksYSkmJm4ucHVzaChpKX1yZXR1cm4gbn0oZSxmdW5jdGlvbihlKXtyZXR1cm4haCh0LnNldHRpbmdzLmZvcmNlZF9wbHVnaW5zLGUpfSkpLG89cChuLGZ1bmN0aW9uKGUpe3JldHVybiI8bGk+IisodD1hLG49ZSxnKEMsZnVuY3Rpb24oZSl7cmV0dXJuIGUua2V5PT09bn0pLmZvbGQoZnVuY3Rpb24oKXt2YXIgZT10LnBsdWdpbnNbbl0uZ2V0TWV0YWRhdGE7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGU/cyhlKCkpOm59LGZ1bmN0aW9uKGUpe3JldHVybiBzKHtuYW1lOmUubmFtZSx1cmw6Imh0dHBzOi8vd3d3LnRpbnkuY2xvdWQvZG9jcy9wbHVnaW5zLyIrZS5rZXl9KX0pKSsiPC9saT4iO3ZhciB0LG59KSxpPW8ubGVuZ3RoLHI9by5qb2luKCIiKTtyZXR1cm4iPHA+PGI+IitBLnRyYW5zbGF0ZShbIlBsdWdpbnMgaW5zdGFsbGVkICh7MH0pOiIsaV0pKyI8L2I+PC9wPjx1bD4iK3IrIjwvdWw+In0obikrIjwvZGl2PiIsKHQ9cChbIkFjY2Vzc2liaWxpdHkgQ2hlY2tlciIsIkFkdmFuY2VkIENvZGUgRWRpdG9yIiwiQWR2YW5jZWQgVGFibGVzIiwiQ2FzZSBDaGFuZ2UiLCJDaGVja2xpc3QiLCJUaW55IENvbW1lbnRzIiwiVGlueSBEcml2ZSIsIkVuaGFuY2VkIE1lZGlhIEVtYmVkIiwiRm9ybWF0IFBhaW50ZXIiLCJMaW5rIENoZWNrZXIiLCJNZW50aW9ucyIsIk1veGllTWFuYWdlciIsIlBhZ2UgRW1iZWQiLCJQZXJtYW5lbnQgUGVuIiwiUG93ZXJQYXN0ZSIsIlNwZWxsIENoZWNrZXIgUHJvIl0sZnVuY3Rpb24oZSl7cmV0dXJuIjxsaT4iK0EudHJhbnNsYXRlKGUpKyI8L2xpPiJ9KS5qb2luKCIiKSwnPGRpdiBkYXRhLW1jZS10YWJzdG9wPSIxIiB0YWJpbmRleD0iLTEiPjxwPjxiPicrQS50cmFuc2xhdGUoIlByZW1pdW0gcGx1Z2luczoiKSsiPC9iPjwvcD48dWw+Iit0Kyc8bGkgY2xhc3M9InRveC1oZWxwX19tb3JlLWxpbmsiICI+PGEgaHJlZj0iaHR0cHM6Ly93d3cudGlueS5jbG91ZC9wcmljaW5nLz91dG1fY2FtcGFpZ249ZWRpdG9yX3JlZmVycmFsJnV0bV9tZWRpdW09aGVscF9kaWFsb2cmdXRtX3NvdXJjZT10aW55bWNlIiB0YXJnZXQ9Il9ibGFuayI+JytBLnRyYW5zbGF0ZSgiTGVhcm4gbW9yZS4uLiIpKyI8L2E+PC9saT48L3VsPjwvZGl2PiIpXS5qb2luKCIiKX1dfX0seD10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS5FZGl0b3JNYW5hZ2VyIiksTT1mdW5jdGlvbihlLHQpe3ZhciBuLGEsbyxpLHIscz17bmFtZToic2hvcnRjdXRzIix0aXRsZToiSGFuZHkgU2hvcnRjdXRzIixpdGVtczpbe3R5cGU6InRhYmxlIixoZWFkZXI6WyJBY3Rpb24iLCJTaG9ydGN1dCJdLGNlbGxzOnAoayxmdW5jdGlvbihlKXt2YXIgdD1wKGUuc2hvcnRjdXRzLHcpLmpvaW4oIiBvciAiKTtyZXR1cm5bZS5hY3Rpb24sdF19KX1dfSxjPXtuYW1lOiJrZXlib2FyZG5hdiIsdGl0bGU6IktleWJvYXJkIE5hdmlnYXRpb24iLGl0ZW1zOlt7dHlwZToiaHRtbHBhbmVsIixwcmVzZXRzOiJkb2N1bWVudCIsaHRtbDoiPGgxPkVkaXRvciBVSSBrZXlib2FyZCBuYXZpZ2F0aW9uPC9oMT5cblxuPGgyPkFjdGl2YXRpbmcga2V5Ym9hcmQgbmF2aWdhdGlvbjwvaDI+XG5cbjxwPlRoZSBzZWN0aW9ucyBvZiB0aGUgb3V0ZXIgVUkgb2YgdGhlIGVkaXRvciAtIHRoZSBtZW51YmFyLCB0b29sYmFyLCBzaWRlYmFyIGFuZCBmb290ZXIgLSBhcmUgYWxsIGtleWJvYXJkIG5hdmlnYWJsZS4gQXMgc3VjaCwgdGhlcmUgYXJlIG11bHRpcGxlIHdheXMgdG8gYWN0aXZhdGUga2V5Ym9hcmQgbmF2aWdhdGlvbjo8L3A+XG48dWw+XG4gIDxsaT5Gb2N1cyB0aGUgbWVudWJhcjogQWx0ICsgRjkgKFdpbmRvd3MpIG9yICYjeDIzMjU7RjkgKE1hY09TKTwvbGk+XG4gIDxsaT5Gb2N1cyB0aGUgdG9vbGJhcjogQWx0ICsgRjEwIChXaW5kb3dzKSBvciAmI3gyMzI1O0YxMCAoTWFjT1MpPC9saT5cbiAgPGxpPkZvY3VzIHRoZSBmb290ZXI6IEFsdCArIEYxMSAoV2luZG93cykgb3IgJiN4MjMyNTtGMTEgKE1hY09TKTwvbGk+XG48L3VsPlxuXG48cD5Gb2N1c2luZyB0aGUgbWVudWJhciBvciB0b29sYmFyIHdpbGwgc3RhcnQga2V5Ym9hcmQgbmF2aWdhdGlvbiBhdCB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgbWVudWJhciBvciB0b29sYmFyLCB3aGljaCB3aWxsIGJlIGhpZ2hsaWdodGVkIHdpdGggYSBncmF5IGJhY2tncm91bmQuIEZvY3VzaW5nIHRoZSBmb290ZXIgd2lsbCBzdGFydCBrZXlib2FyZCBuYXZpZ2F0aW9uIGF0IHRoZSBmaXJzdCBpdGVtIGluIHRoZSBlbGVtZW50IHBhdGgsIHdoaWNoIHdpbGwgYmUgaGlnaGxpZ2h0ZWQgd2l0aCBhbiB1bmRlcmxpbmUuIDwvcD5cblxuPGgyPk1vdmluZyBiZXR3ZWVuIFVJIHNlY3Rpb25zPC9oMj5cblxuPHA+V2hlbiBrZXlib2FyZCBuYXZpZ2F0aW9uIGlzIGFjdGl2ZSwgcHJlc3NpbmcgdGFiIHdpbGwgbW92ZSB0aGUgZm9jdXMgdG8gdGhlIG5leHQgbWFqb3Igc2VjdGlvbiBvZiB0aGUgVUksIHdoZXJlIGFwcGxpY2FibGUuIFRoZXNlIHNlY3Rpb25zIGFyZTo8L3A+XG48dWw+XG4gIDxsaT50aGUgbWVudWJhcjwvbGk+XG4gIDxsaT5lYWNoIGdyb3VwIG9mIHRoZSB0b29sYmFyIDwvbGk+XG4gIDxsaT50aGUgc2lkZWJhcjwvbGk+XG4gIDxsaT50aGUgZWxlbWVudCBwYXRoIGluIHRoZSBmb290ZXIgPC9saT5cbiAgPGxpPnRoZSB3b3JkY291bnQgdG9nZ2xlIGJ1dHRvbiBpbiB0aGUgZm9vdGVyIDwvbGk+XG4gIDxsaT50aGUgYnJhbmRpbmcgbGluayBpbiB0aGUgZm9vdGVyIDwvbGk+XG48L3VsPlxuXG48cD5QcmVzc2luZyBzaGlmdCArIHRhYiB3aWxsIG1vdmUgYmFja3dhcmRzIHRocm91Z2ggdGhlIHNhbWUgc2VjdGlvbnMsIGV4Y2VwdCB3aGVuIG1vdmluZyBmcm9tIHRoZSBmb290ZXIgdG8gdGhlIHRvb2xiYXIuIEZvY3VzaW5nIHRoZSBlbGVtZW50IHBhdGggdGhlbiBwcmVzc2luZyBzaGlmdCArIHRhYiB3aWxsIG1vdmUgZm9jdXMgdG8gdGhlIGZpcnN0IHRvb2xiYXIgZ3JvdXAsIG5vdCB0aGUgbGFzdC48L3A+XG5cbjxoMj5Nb3Zpbmcgd2l0aGluIFVJIHNlY3Rpb25zPC9oMj5cblxuPHA+S2V5Ym9hcmQgbmF2aWdhdGlvbiB3aXRoaW4gVUkgc2VjdGlvbnMgY2FuIHVzdWFsbHkgYmUgYWNoaWV2ZWQgdXNpbmcgdGhlIGxlZnQgYW5kIHJpZ2h0IGFycm93IGtleXMuIFRoaXMgaW5jbHVkZXM6PC9wPlxuPHVsPlxuICA8bGk+bW92aW5nIGJldHdlZW4gbWVudXMgaW4gdGhlIG1lbnViYXI8L2xpPlxuICA8bGk+bW92aW5nIGJldHdlZW4gYnV0dG9ucyBpbiBhIHRvb2xiYXIgZ3JvdXA8L2xpPlxuICA8bGk+bW92aW5nIGJldHdlZW4gaXRlbXMgaW4gdGhlIGVsZW1lbnQgcGF0aDwvbGk+XG48L3VsPlxuXG48cD5JbiBhbGwgdGhlc2UgVUkgc2VjdGlvbnMsIGtleWJvYXJkIG5hdmlnYXRpb24gd2lsbCBjeWNsZSB3aXRoaW4gdGhlIHNlY3Rpb24uIEZvciBleGFtcGxlLCBmb2N1c2luZyB0aGUgbGFzdCBidXR0b24gaW4gYSB0b29sYmFyIGdyb3VwIHRoZW4gcHJlc3NpbmcgcmlnaHQgYXJyb3cgd2lsbCBtb3ZlIGZvY3VzIHRvIHRoZSBmaXJzdCBpdGVtIGluIHRoZSBzYW1lIHRvb2xiYXIgZ3JvdXAuIDwvcD5cblxuPGgxPkV4ZWN1dGluZyBidXR0b25zPC9oMT5cblxuPHA+VG8gZXhlY3V0ZSBhIGJ1dHRvbiwgbmF2aWdhdGUgdGhlIHNlbGVjdGlvbiB0byB0aGUgZGVzaXJlZCBidXR0b24gYW5kIGhpdCBzcGFjZSBvciBlbnRlci48L3A+XG5cbjxoMT5PcGVuaW5nLCBuYXZpZ2F0aW5nIGFuZCBjbG9zaW5nIG1lbnVzPC9oMT5cblxuPHA+V2hlbiBmb2N1c2luZyBhIG1lbnViYXIgYnV0dG9uIG9yIGEgdG9vbGJhciBidXR0b24gd2l0aCBhIG1lbnUsIHByZXNzaW5nIHNwYWNlLCBlbnRlciBvciBkb3duIGFycm93IHdpbGwgb3BlbiB0aGUgbWVudS4gV2hlbiB0aGUgbWVudSBvcGVucyB0aGUgZmlyc3QgaXRlbSB3aWxsIGJlIHNlbGVjdGVkLiBUbyBtb3ZlIHVwIG9yIGRvd24gdGhlIG1lbnUsIHByZXNzIHRoZSB1cCBvciBkb3duIGFycm93IGtleSByZXNwZWN0aXZlbHkuIFRoaXMgaXMgdGhlIHNhbWUgZm9yIHN1Ym1lbnVzLCB3aGljaCBjYW4gYWxzbyBiZSBvcGVuZWQgYW5kIGNsb3NlZCB1c2luZyB0aGUgbGVmdCBhbmQgcmlnaHQgYXJyb3cga2V5cy48L3A+XG5cbjxwPlRvIGNsb3NlIGFueSBhY3RpdmUgbWVudSwgaGl0IHRoZSBlc2NhcGUga2V5LiBXaGVuIGEgbWVudSBpcyBjbG9zZWQgdGhlIHNlbGVjdGlvbiB3aWxsIGJlIHJlc3RvcmVkIHRvIGl0cyBwcmV2aW91cyBzZWxlY3Rpb24uIFRoaXMgYWxzbyB3b3JrcyBmb3IgY2xvc2luZyBzdWJtZW51cy48L3A+XG5cbjxoMT5Db250ZXh0IHRvb2xiYXJzIGFuZCBtZW51czwvaDE+XG5cbjxwPlRvIGZvY3VzIGFuIG9wZW4gY29udGV4dCB0b29sYmFyIHN1Y2ggYXMgdGhlIHRhYmxlIGNvbnRleHQgdG9vbGJhciwgcHJlc3MgQ3RybCArIEY5IChXaW5kb3dzKSBvciAmI3gyMzAzO0Y5IChNYWNPUykuPC9wPlxuXG48cD5Db250ZXh0IHRvb2xiYXIgbmF2aWdhdGlvbiBpcyB0aGUgc2FtZSBhcyB0b29sYmFyIG5hdmlnYXRpb24sIGFuZCBjb250ZXh0IG1lbnUgbmF2aWdhdGlvbiBpcyB0aGUgc2FtZSBhcyBzdGFuZGFyZCBtZW51IG5hdmlnYXRpb24uPC9wPlxuXG48aDE+RGlhbG9nIG5hdmlnYXRpb248L2gxPlxuXG48cD5UaGVyZSBhcmUgdHdvIHR5cGVzIG9mIGRpYWxvZyBVSXMgaW4gVGlueU1DRTogdGFiYmVkIGRpYWxvZ3MgYW5kIG5vbi10YWJiZWQgZGlhbG9ncy48L3A+XG5cbjxwPldoZW4gYSBub24tdGFiYmVkIGRpYWxvZyBpcyBvcGVuZWQsIHRoZSBmaXJzdCBpbnRlcmFjdGl2ZSBjb21wb25lbnQgaW4gdGhlIGRpYWxvZyB3aWxsIGJlIGZvY3VzZWQuIFVzZXJzIGNhbiBuYXZpZ2F0ZSBiZXR3ZWVuIGludGVyYWN0aXZlIGNvbXBvbmVudHMgYnkgcHJlc3NpbmcgdGFiLiBUaGlzIGluY2x1ZGVzIGFueSBmb290ZXIgYnV0dG9ucy4gTmF2aWdhdGlvbiB3aWxsIGN5Y2xlIGJhY2sgdG8gdGhlIGZpcnN0IGRpYWxvZyBjb21wb25lbnQgaWYgdGFiIGlzIHByZXNzZWQgd2hpbGUgZm9jdXNpbmcgdGhlIGxhc3QgY29tcG9uZW50IGluIHRoZSBkaWFsb2cuIFByZXNzaW5nIHNoaWZ0ICsgdGFiIHdpbGwgbmF2aWdhdGUgYmFja3dhcmRzLjwvcD5cblxuPHA+V2hlbiBhIHRhYmJlZCBkaWFsb2cgaXMgb3BlbmVkLCB0aGUgZmlyc3QgYnV0dG9uIGluIHRoZSB0YWIgbWVudSBpcyBmb2N1c2VkLiBQcmVzc2luZyB0YWIgd2lsbCBuYXZpZ2F0ZSB0byB0aGUgZmlyc3QgaW50ZXJhY3RpdmUgY29tcG9uZW50IGluIHRoYXQgdGFiLCBhbmQgd2lsbCBjeWNsZSB0aHJvdWdoIHRoZSB0YWJcdTIwMTlzIGNvbXBvbmVudHMsIHRoZSBmb290ZXIgYnV0dG9ucywgdGhlbiBiYWNrIHRvIHRoZSB0YWIgYnV0dG9uLiBUbyBzd2l0Y2ggdG8gYW5vdGhlciB0YWIsIGZvY3VzIHRoZSB0YWIgYnV0dG9uIGZvciB0aGUgY3VycmVudCB0YWIsIHRoZW4gdXNlIHRoZSBhcnJvdyBrZXlzIHRvIGN5Y2xlIHRocm91Z2ggdGhlIHRhYiBidXR0b25zLjwvcD4ifV19LGw9VChlKSx1PShpPSc8YSBocmVmPSJodHRwczovL3d3dy50aW55bWNlLmNvbS9kb2NzL2NoYW5nZWxvZy8/dXRtX2NhbXBhaWduPWVkaXRvcl9yZWZlcnJhbCZ1dG1fbWVkaXVtPWhlbHBfZGlhbG9nJnV0bV9zb3VyY2U9dGlueW1jZSIgdGFyZ2V0PSJfYmxhbmsiPlRpbnlNQ0UgJysoYT14Lm1ham9yVmVyc2lvbixvPXgubWlub3JWZXJzaW9uLDA9PT1hLmluZGV4T2YoIkAiKT8iWC5YLlgiOmErIi4iK28pKyI8L2E+Iix7bmFtZToidmVyc2lvbnMiLHRpdGxlOiJWZXJzaW9uIixpdGVtczpbe3R5cGU6Imh0bWxwYW5lbCIsaHRtbDoiPHA+IitBLnRyYW5zbGF0ZShbIllvdSBhcmUgdXNpbmcgezB9IixpXSkrIjwvcD4iLHByZXNldHM6ImRvY3VtZW50In1dfSksaD1tKCgobj17fSlbcy5uYW1lXT1zLG5bYy5uYW1lXT1jLG5bbC5uYW1lXT1sLG5bdS5uYW1lXT11LG4pLHQuZ2V0KCkpO3JldHVybiByPWUsZC5mcm9tKHIuZ2V0UGFyYW0oImhlbHBfdGFicyIpKS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIHQ9ZihlPWgpLC0xIT09KG49dC5pbmRleE9mKCJ2ZXJzaW9ucyIpKSYmKHQuc3BsaWNlKG4sMSksdC5wdXNoKCJ2ZXJzaW9ucyIpKSx7dGFiczplLG5hbWVzOnR9O3ZhciBlLHQsbn0sZnVuY3Rpb24oZSl7cmV0dXJuIHQ9aCxuPXt9LGE9cChlLGZ1bmN0aW9uKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZT8oeSh0LGUpJiYobltlXT10W2VdKSxlKToobltlLm5hbWVdPWUpLm5hbWV9KSx7dGFiczpuLG5hbWVzOmF9O3ZhciB0LG4sYX0pfSxQPWZ1bmN0aW9uKG8saSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9TShvLGkpLGE9ZS50YWJzLHQ9ZS5uYW1lcyxuPXt0eXBlOiJ0YWJwYW5lbCIsdGFiczpmdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sbj1mdW5jdGlvbihlKXt0LnB1c2goZSl9LGE9MDthPGUubGVuZ3RoO2ErKyllW2FdLmVhY2gobik7cmV0dXJuIHR9KHAodCxmdW5jdGlvbihlKXtyZXR1cm4geSh0PWEsbj1lKT9kLmZyb20odFtuXSk6ZC5ub25lKCk7dmFyIHQsbn0pKX07by53aW5kb3dNYW5hZ2VyLm9wZW4oe3RpdGxlOiJIZWxwIixzaXplOiJtZWRpdW0iLGJvZHk6bixidXR0b25zOlt7dHlwZToiY2FuY2VsIixuYW1lOiJjbG9zZSIsdGV4dDoiQ2xvc2UiLHByaW1hcnk6ITB9XSxpbml0aWFsRGF0YTp7fX0pfX07IWZ1bmN0aW9uIEYoKXthLmFkZCgiaGVscCIsZnVuY3Rpb24oZSl7dmFyIHQsbixhLG8saSxyPSh0PXt9LHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdH0sc2V0OmZ1bmN0aW9uKGUpe3Q9ZX19KSxzPXthZGRUYWI6ZnVuY3Rpb24oZSl7dmFyIHQ9bi5nZXQoKTt0W2UubmFtZV09ZSxuLnNldCh0KX19LGM9UChlLG49cik7cmV0dXJuIG89YywoYT1lKS51aS5yZWdpc3RyeS5hZGRCdXR0b24oImhlbHAiLHtpY29uOiJoZWxwIix0b29sdGlwOiJIZWxwIixvbkFjdGlvbjpvfSksYS51aS5yZWdpc3RyeS5hZGRNZW51SXRlbSgiaGVscCIse3RleHQ6IkhlbHAiLGljb246ImhlbHAiLHNob3J0Y3V0OiJBbHQrMCIsb25BY3Rpb246b30pLGk9YyxlLmFkZENvbW1hbmQoIm1jZUhlbHAiLGkpLGUuc2hvcnRjdXRzLmFkZCgiQWx0KzAiLCJPcGVuIGhlbHAgZGlhbG9nIiwibWNlSGVscCIpLHN9KX0oKX0oKTs=]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/hr/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/hr/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIG49dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuUGx1Z2luTWFuYWdlciIpOyFmdW5jdGlvbiBvKCl7bi5hZGQoImhyIixmdW5jdGlvbihuKXt2YXIgbyx0OyhvPW4pLmFkZENvbW1hbmQoIkluc2VydEhvcml6b250YWxSdWxlIixmdW5jdGlvbigpe28uZXhlY0NvbW1hbmQoIm1jZUluc2VydENvbnRlbnQiLCExLCI8aHIgLz4iKX0pLCh0PW4pLnVpLnJlZ2lzdHJ5LmFkZEJ1dHRvbigiaHIiLHtpY29uOiJob3Jpem9udGFsLXJ1bGUiLHRvb2x0aXA6Ikhvcml6b250YWwgbGluZSIsb25BY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gdC5leGVjQ29tbWFuZCgiSW5zZXJ0SG9yaXpvbnRhbFJ1bGUiKX19KSx0LnVpLnJlZ2lzdHJ5LmFkZE1lbnVJdGVtKCJociIse2ljb246Imhvcml6b250YWwtcnVsZSIsdGV4dDoiSG9yaXpvbnRhbCBsaW5lIixvbkFjdGlvbjpmdW5jdGlvbigpe3JldHVybiB0LmV4ZWNDb21tYW5kKCJJbnNlcnRIb3Jpem9udGFsUnVsZSIpfX0pfSl9KCl9KCk7]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/image/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/image/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24obSl7InVzZSBzdHJpY3QiO3ZhciBlLHQsbixyLG8sYT10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS5QbHVnaW5NYW5hZ2VyIiksaT1mdW5jdGlvbigpe30sbD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZX19LHM9bCghMSksdT1sKCEwKSxjPWZ1bmN0aW9uKCl7cmV0dXJuIGR9LGQ9KGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuaXNOb25lKCl9LHtmb2xkOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUoKX0saXM6cyxpc1NvbWU6cyxpc05vbmU6dSxnZXRPcjpuPWZ1bmN0aW9uKGUpe3JldHVybiBlfSxnZXRPclRodW5rOnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUoKX0sZ2V0T3JEaWU6ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKGV8fCJlcnJvcjogZ2V0T3JEaWUgY2FsbGVkIG9uIG5vbmUuIil9LGdldE9yTnVsbDpsKG51bGwpLGdldE9yVW5kZWZpbmVkOmwodW5kZWZpbmVkKSxvcjpuLG9yVGh1bms6dCxtYXA6YyxlYWNoOmksYmluZDpjLGV4aXN0czpzLGZvcmFsbDp1LGZpbHRlcjpjLGVxdWFsczplLGVxdWFsc186ZSx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuW119LHRvU3RyaW5nOmwoIm5vbmUoKSIpfSksZz1mdW5jdGlvbihuKXt2YXIgZT1sKG4pLHQ9ZnVuY3Rpb24oKXtyZXR1cm4gYX0scj1mdW5jdGlvbihlKXtyZXR1cm4gZShuKX0sYT17Zm9sZDpmdW5jdGlvbihlLHQpe3JldHVybiB0KG4pfSxpczpmdW5jdGlvbihlKXtyZXR1cm4gbj09PWV9LGlzU29tZTp1LGlzTm9uZTpzLGdldE9yOmUsZ2V0T3JUaHVuazplLGdldE9yRGllOmUsZ2V0T3JOdWxsOmUsZ2V0T3JVbmRlZmluZWQ6ZSxvcjp0LG9yVGh1bms6dCxtYXA6ZnVuY3Rpb24oZSl7cmV0dXJuIGcoZShuKSl9LGVhY2g6ZnVuY3Rpb24oZSl7ZShuKX0sYmluZDpyLGV4aXN0czpyLGZvcmFsbDpyLGZpbHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gZShuKT9hOmR9LHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm5bbl19LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuInNvbWUoIituKyIpIn0sZXF1YWxzOmZ1bmN0aW9uKGUpe3JldHVybiBlLmlzKG4pfSxlcXVhbHNfOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuZm9sZChzLGZ1bmN0aW9uKGUpe3JldHVybiB0KG4sZSl9KX19O3JldHVybiBhfSxBPXtzb21lOmcsbm9uZTpjLGZyb206ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PT1lfHxlPT09dW5kZWZpbmVkP2Q6ZyhlKX19LGY9ZnVuY3Rpb24ocil7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBuPXR5cGVvZih0PWUpLChudWxsPT09dD8ibnVsbCI6Im9iamVjdCI9PW4mJihBcnJheS5wcm90b3R5cGUuaXNQcm90b3R5cGVPZih0KXx8dC5jb25zdHJ1Y3RvciYmIkFycmF5Ij09PXQuY29uc3RydWN0b3IubmFtZSk/ImFycmF5Ijoib2JqZWN0Ij09biYmKFN0cmluZy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZih0KXx8dC5jb25zdHJ1Y3RvciYmIlN0cmluZyI9PT10LmNvbnN0cnVjdG9yLm5hbWUpPyJzdHJpbmciOm4pPT09cjt2YXIgdCxufX0scD1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlPT09dH19LFM9Zigic3RyaW5nIiksaD1mKCJvYmplY3QiKSxiPWYoImFycmF5Iiksdj0ocj1udWxsLGZ1bmN0aW9uKGUpe3JldHVybiByPT09ZX0pLHk9cCgiYm9vbGVhbiIpLHc9cCgibnVtYmVyIiksRD1BcnJheS5wcm90b3R5cGUucHVzaCx4PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxuPTAscj1lLmxlbmd0aDtuPHI7KytuKXtpZighYihlW25dKSl0aHJvdyBuZXcgRXJyb3IoIkFyci5mbGF0dGVuIGl0ZW0gIituKyIgd2FzIG5vdCBhbiBhcnJheSwgaW5wdXQ6ICIrZSk7RC5hcHBseSh0LGVbbl0pfXJldHVybiB0fSxUPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksQz0obz1mdW5jdGlvbihlLHQpe3JldHVybiBoKGUpJiZoKHQpP0MoZSx0KTp0fSxmdW5jdGlvbigpe2Zvcih2YXIgZT1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCksdD0wO3Q8ZS5sZW5ndGg7dCsrKWVbdF09YXJndW1lbnRzW3RdO2lmKDA9PT1lLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkNhbid0IG1lcmdlIHplcm8gb2JqZWN0cyIpO2Zvcih2YXIgbj17fSxyPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBhPWVbcl07Zm9yKHZhciBpIGluIGEpVC5jYWxsKGEsaSkmJihuW2ldPW8obltpXSxhW2ldKSl9cmV0dXJuIG59KSxVPWZ1bmN0aW9uKCl7cmV0dXJuKFU9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG49MSxyPWFyZ3VtZW50cy5sZW5ndGg7bjxyO24rKylmb3IodmFyIGEgaW4gdD1hcmd1bWVudHNbbl0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsYSkmJihlW2FdPXRbYV0pO3JldHVybiBlfSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxPPSgidW5kZWZpbmVkIiE9dHlwZW9mIG0ud2luZG93P20ud2luZG93OkZ1bmN0aW9uKCJyZXR1cm4gdGhpczsiKSgpLGZ1bmN0aW9uKGUsdCxuKXshZnVuY3Rpb24oZSx0LG4pe2lmKCEoUyhuKXx8eShuKXx8dyhuKSkpdGhyb3cgbS5jb25zb2xlLmVycm9yKCJJbnZhbGlkIGNhbGwgdG8gQXR0ci5zZXQuIEtleSAiLHQsIjo6IFZhbHVlICIsbiwiOjogRWxlbWVudCAiLGUpLG5ldyBFcnJvcigiQXR0cmlidXRlIHZhbHVlIHdhcyBub3Qgc2ltcGxlIik7ZS5zZXRBdHRyaWJ1dGUodCxuKyIiKX0oZS5kb20oKSx0LG4pfSksST1mdW5jdGlvbihlKXtpZihudWxsPT09ZXx8ZT09PXVuZGVmaW5lZCl0aHJvdyBuZXcgRXJyb3IoIk5vZGUgY2Fubm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7cmV0dXJue2RvbTpsKGUpfX0sTj17ZnJvbUh0bWw6ZnVuY3Rpb24oZSx0KXt2YXIgbj0odHx8bS5kb2N1bWVudCkuY3JlYXRlRWxlbWVudCgiZGl2Iik7aWYobi5pbm5lckhUTUw9ZSwhbi5oYXNDaGlsZE5vZGVzKCl8fDE8bi5jaGlsZE5vZGVzLmxlbmd0aCl0aHJvdyBtLmNvbnNvbGUuZXJyb3IoIkhUTUwgZG9lcyBub3QgaGF2ZSBhIHNpbmdsZSByb290IG5vZGUiLGUpLG5ldyBFcnJvcigiSFRNTCBtdXN0IGhhdmUgYSBzaW5nbGUgcm9vdCBub2RlIik7cmV0dXJuIEkobi5jaGlsZE5vZGVzWzBdKX0sZnJvbVRhZzpmdW5jdGlvbihlLHQpe3ZhciBuPSh0fHxtLmRvY3VtZW50KS5jcmVhdGVFbGVtZW50KGUpO3JldHVybiBJKG4pfSxmcm9tVGV4dDpmdW5jdGlvbihlLHQpe3ZhciBuPSh0fHxtLmRvY3VtZW50KS5jcmVhdGVUZXh0Tm9kZShlKTtyZXR1cm4gSShuKX0sZnJvbURvbTpJLGZyb21Qb2ludDpmdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5kb20oKTtyZXR1cm4gQS5mcm9tKHIuZWxlbWVudEZyb21Qb2ludCh0LG4pKS5tYXAoSSl9fSxQPXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLmRvbS5ET01VdGlscyIpLEw9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UudXRpbC5Qcm9taXNlIiksXz10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS51dGlsLlhIUiIpLEU9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0UGFyYW0oImltYWdlX2RpbWVuc2lvbnMiLCEwLCJib29sZWFuIil9LE09ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0UGFyYW0oImltYWdlc191cGxvYWRfdXJsIiwiIiwic3RyaW5nIil9LFI9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0UGFyYW0oImltYWdlc191cGxvYWRfaGFuZGxlciIsdW5kZWZpbmVkLCJmdW5jdGlvbiIpfSx6PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIE1hdGgubWF4KHBhcnNlSW50KGUsMTApLHBhcnNlSW50KHQsMTApKX0sSD1mdW5jdGlvbihlKXtyZXR1cm4gZT1lJiZlLnJlcGxhY2UoL3B4JC8sIiIpfSxrPWZ1bmN0aW9uKGUpe3JldHVybiAwPGUubGVuZ3RoJiYvXlswLTldKyQvLnRlc3QoZSkmJihlKz0icHgiKSxlfSxqPWZ1bmN0aW9uKGUpe2lmKGUubWFyZ2luKXt2YXIgdD1TdHJpbmcoZS5tYXJnaW4pLnNwbGl0KCIgIik7c3dpdGNoKHQubGVuZ3RoKXtjYXNlIDE6ZVsibWFyZ2luLXRvcCJdPWVbIm1hcmdpbi10b3AiXXx8dFswXSxlWyJtYXJnaW4tcmlnaHQiXT1lWyJtYXJnaW4tcmlnaHQiXXx8dFswXSxlWyJtYXJnaW4tYm90dG9tIl09ZVsibWFyZ2luLWJvdHRvbSJdfHx0WzBdLGVbIm1hcmdpbi1sZWZ0Il09ZVsibWFyZ2luLWxlZnQiXXx8dFswXTticmVhaztjYXNlIDI6ZVsibWFyZ2luLXRvcCJdPWVbIm1hcmdpbi10b3AiXXx8dFswXSxlWyJtYXJnaW4tcmlnaHQiXT1lWyJtYXJnaW4tcmlnaHQiXXx8dFsxXSxlWyJtYXJnaW4tYm90dG9tIl09ZVsibWFyZ2luLWJvdHRvbSJdfHx0WzBdLGVbIm1hcmdpbi1sZWZ0Il09ZVsibWFyZ2luLWxlZnQiXXx8dFsxXTticmVhaztjYXNlIDM6ZVsibWFyZ2luLXRvcCJdPWVbIm1hcmdpbi10b3AiXXx8dFswXSxlWyJtYXJnaW4tcmlnaHQiXT1lWyJtYXJnaW4tcmlnaHQiXXx8dFsxXSxlWyJtYXJnaW4tYm90dG9tIl09ZVsibWFyZ2luLWJvdHRvbSJdfHx0WzJdLGVbIm1hcmdpbi1sZWZ0Il09ZVsibWFyZ2luLWxlZnQiXXx8dFsxXTticmVhaztjYXNlIDQ6ZVsibWFyZ2luLXRvcCJdPWVbIm1hcmdpbi10b3AiXXx8dFswXSxlWyJtYXJnaW4tcmlnaHQiXT1lWyJtYXJnaW4tcmlnaHQiXXx8dFsxXSxlWyJtYXJnaW4tYm90dG9tIl09ZVsibWFyZ2luLWJvdHRvbSJdfHx0WzJdLGVbIm1hcmdpbi1sZWZ0Il09ZVsibWFyZ2luLWxlZnQiXXx8dFszXX1kZWxldGUgZS5tYXJnaW59cmV0dXJuIGV9LEI9ZnVuY3Rpb24oZSl7cmV0dXJuIklNRyI9PT1lLm5vZGVOYW1lJiYoZS5oYXNBdHRyaWJ1dGUoImRhdGEtbWNlLW9iamVjdCIpfHxlLmhhc0F0dHJpYnV0ZSgiZGF0YS1tY2UtcGxhY2Vob2xkZXIiKSl9LEY9UC5ET00sRz1mdW5jdGlvbihlKXtyZXR1cm4gZS5zdHlsZS5tYXJnaW5MZWZ0JiZlLnN0eWxlLm1hcmdpblJpZ2h0JiZlLnN0eWxlLm1hcmdpbkxlZnQ9PT1lLnN0eWxlLm1hcmdpblJpZ2h0P0goZS5zdHlsZS5tYXJnaW5MZWZ0KToiIn0sVz1mdW5jdGlvbihlKXtyZXR1cm4gZS5zdHlsZS5tYXJnaW5Ub3AmJmUuc3R5bGUubWFyZ2luQm90dG9tJiZlLnN0eWxlLm1hcmdpblRvcD09PWUuc3R5bGUubWFyZ2luQm90dG9tP0goZS5zdHlsZS5tYXJnaW5Ub3ApOiIifSxxPWZ1bmN0aW9uKGUpe3JldHVybiBlLnN0eWxlLmJvcmRlcldpZHRoP0goZS5zdHlsZS5ib3JkZXJXaWR0aCk6IiJ9LCQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5oYXNBdHRyaWJ1dGUodCk/ZS5nZXRBdHRyaWJ1dGUodCk6IiJ9LEo9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5zdHlsZVt0XT9lLnN0eWxlW3RdOiIifSxYPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT09ZS5wYXJlbnROb2RlJiYiRklHVVJFIj09PWUucGFyZW50Tm9kZS5ub2RlTmFtZX0sVj1mdW5jdGlvbihlLHQsbil7IiI9PT1uP2UucmVtb3ZlQXR0cmlidXRlKHQpOmUuc2V0QXR0cmlidXRlKHQsbil9LEs9ZnVuY3Rpb24oZSl7dmFyIHQsbixyLGE7WChlKT8oYT0ocj1lKS5wYXJlbnROb2RlLEYuaW5zZXJ0QWZ0ZXIocixhKSxGLnJlbW92ZShhKSk6KHQ9ZSxuPUYuY3JlYXRlKCJmaWd1cmUiLHsiY2xhc3MiOiJpbWFnZSJ9KSxGLmluc2VydEFmdGVyKG4sdCksbi5hcHBlbmRDaGlsZCh0KSxuLmFwcGVuZENoaWxkKEYuY3JlYXRlKCJmaWdjYXB0aW9uIix7Y29udGVudEVkaXRhYmxlOiJ0cnVlIn0sIkNhcHRpb24iKSksbi5jb250ZW50RWRpdGFibGU9ImZhbHNlIil9LFo9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmdldEF0dHJpYnV0ZSgic3R5bGUiKSxyPXQobnVsbCE9PW4/bjoiIik7MDxyLmxlbmd0aD8oZS5zZXRBdHRyaWJ1dGUoInN0eWxlIixyKSxlLnNldEF0dHJpYnV0ZSgiZGF0YS1tY2Utc3R5bGUiLHIpKTplLnJlbW92ZUF0dHJpYnV0ZSgic3R5bGUiKX0sUT1mdW5jdGlvbihlLHIpe3JldHVybiBmdW5jdGlvbihlLHQsbil7ZS5zdHlsZVt0XT8oZS5zdHlsZVt0XT1rKG4pLFooZSxyKSk6VihlLHQsbil9fSxZPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuc3R5bGVbdF0/SChlLnN0eWxlW3RdKTokKGUsdCl9LGVlPWZ1bmN0aW9uKGUsdCl7dmFyIG49ayh0KTtlLnN0eWxlLm1hcmdpbkxlZnQ9bixlLnN0eWxlLm1hcmdpblJpZ2h0PW59LHRlPWZ1bmN0aW9uKGUsdCl7dmFyIG49ayh0KTtlLnN0eWxlLm1hcmdpblRvcD1uLGUuc3R5bGUubWFyZ2luQm90dG9tPW59LG5lPWZ1bmN0aW9uKGUsdCl7dmFyIG49ayh0KTtlLnN0eWxlLmJvcmRlcldpZHRoPW59LHJlPWZ1bmN0aW9uKGUsdCl7ZS5zdHlsZS5ib3JkZXJTdHlsZT10fSxhZT1mdW5jdGlvbihlKXtyZXR1cm4iRklHVVJFIj09PWUubm9kZU5hbWV9LGllPWZ1bmN0aW9uKGUpe3JldHVybiAwPT09Ri5nZXRBdHRyaWIoZSwiYWx0IikubGVuZ3RoJiYicHJlc2VudGF0aW9uIj09PUYuZ2V0QXR0cmliKGUsInJvbGUiKX0sb2U9ZnVuY3Rpb24oKXtyZXR1cm57c3JjOiIiLGFsdDoiIix0aXRsZToiIix3aWR0aDoiIixoZWlnaHQ6IiIsImNsYXNzIjoiIixzdHlsZToiIixjYXB0aW9uOiExLGhzcGFjZToiIix2c3BhY2U6IiIsYm9yZGVyOiIiLGJvcmRlclN0eWxlOiIiLGlzRGVjb3JhdGl2ZTohMX19LGxlPWZ1bmN0aW9uKGUsdCl7dmFyIG49bS5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTtyZXR1cm4gVihuLCJzdHlsZSIsdC5zdHlsZSksIUcobikmJiIiPT09dC5oc3BhY2V8fGVlKG4sdC5oc3BhY2UpLCFXKG4pJiYiIj09PXQudnNwYWNlfHx0ZShuLHQudnNwYWNlKSwhcShuKSYmIiI9PT10LmJvcmRlcnx8bmUobix0LmJvcmRlciksIUoobiwiYm9yZGVyU3R5bGUiKSYmIiI9PT10LmJvcmRlclN0eWxlfHxyZShuLHQuYm9yZGVyU3R5bGUpLGUobi5nZXRBdHRyaWJ1dGUoInN0eWxlIikpfSxzZT1mdW5jdGlvbihlLHQpe3JldHVybntzcmM6JCh0LCJzcmMiKSxhbHQ6aWUobj10KT8iIjokKG4sImFsdCIpLHRpdGxlOiQodCwidGl0bGUiKSx3aWR0aDpZKHQsIndpZHRoIiksaGVpZ2h0OlkodCwiaGVpZ2h0IiksImNsYXNzIjokKHQsImNsYXNzIiksc3R5bGU6ZSgkKHQsInN0eWxlIikpLGNhcHRpb246WCh0KSxoc3BhY2U6Ryh0KSx2c3BhY2U6Vyh0KSxib3JkZXI6cSh0KSxib3JkZXJTdHlsZTpKKHQsImJvcmRlclN0eWxlIiksaXNEZWNvcmF0aXZlOmllKHQpfTt2YXIgbn0sdWU9ZnVuY3Rpb24oZSx0LG4scixhKXtuW3JdIT09dFtyXSYmYShlLHIsbltyXSl9LGNlPWZ1bmN0aW9uKGUsdCxuKXtpZihuKXtGLnNldEF0dHJpYihlLCJyb2xlIiwicHJlc2VudGF0aW9uIik7dmFyIHI9Ti5mcm9tRG9tKGUpO08ociwiYWx0IiwiIil9ZWxzZXtpZih2KHQpKXtyPU4uZnJvbURvbShlKTthPSJhbHQiLHIuZG9tKCkucmVtb3ZlQXR0cmlidXRlKGEpfWVsc2V7cj1OLmZyb21Eb20oZSk7TyhyLCJhbHQiLHQpfSJwcmVzZW50YXRpb24iPT09Ri5nZXRBdHRyaWIoZSwicm9sZSIpJiZGLnNldEF0dHJpYihlLCJyb2xlIiwiIil9dmFyIGF9LG1lPWZ1bmN0aW9uKHIsYSl7cmV0dXJuIGZ1bmN0aW9uKGUsdCxuKXtyKGUsbiksWihlLGEpfX0sZGU9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGEsaSxvPXNlKGUsbik7dWUobixvLHQsImNhcHRpb24iLGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gSyhlKX0pLHVlKG4sbyx0LCJzcmMiLFYpLHVlKG4sbyx0LCJ0aXRsZSIsViksdWUobixvLHQsIndpZHRoIixRKDAsZSkpLHVlKG4sbyx0LCJoZWlnaHQiLFEoMCxlKSksdWUobixvLHQsImNsYXNzIixWKSx1ZShuLG8sdCwic3R5bGUiLG1lKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIFYoZSwic3R5bGUiLHQpfSxlKSksdWUobixvLHQsImhzcGFjZSIsbWUoZWUsZSkpLHVlKG4sbyx0LCJ2c3BhY2UiLG1lKHRlLGUpKSx1ZShuLG8sdCwiYm9yZGVyIixtZShuZSxlKSksdWUobixvLHQsImJvcmRlclN0eWxlIixtZShyZSxlKSkscj1uLGE9bywoaT10KS5hbHQ9PT1hLmFsdCYmaS5pc0RlY29yYXRpdmU9PT1hLmlzRGVjb3JhdGl2ZXx8Y2UocixpLmFsdCxpLmlzRGVjb3JhdGl2ZSl9LGdlPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5kb20uc3R5bGVzLnBhcnNlKHQpLHI9aihuKSxhPWUuZG9tLnN0eWxlcy5wYXJzZShlLmRvbS5zdHlsZXMuc2VyaWFsaXplKHIpKTtyZXR1cm4gZS5kb20uc3R5bGVzLnNlcmlhbGl6ZShhKX0sZmU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zZWxlY3Rpb24uZ2V0Tm9kZSgpLG49ZS5kb20uZ2V0UGFyZW50KHQsImZpZ3VyZS5pbWFnZSIpO3JldHVybiBuP2UuZG9tLnNlbGVjdCgiaW1nIixuKVswXTp0JiYoIklNRyIhPT10Lm5vZGVOYW1lfHxCKHQpKT9udWxsOnR9LHBlPWZ1bmN0aW9uKHQsZSl7dmFyIG49dC5kb20scj1uLmdldFBhcmVudChlLnBhcmVudE5vZGUsZnVuY3Rpb24oZSl7cmV0dXJuISF0LnNjaGVtYS5nZXRUZXh0QmxvY2tFbGVtZW50cygpW2Uubm9kZU5hbWVdfSx0LmdldEJvZHkoKSk7cmV0dXJuIHI/bi5zcGxpdChyLGUpOmV9LGhlPWZ1bmN0aW9uKHQsZSl7dmFyIG49ZnVuY3Rpb24oZSx0KXt2YXIgbj1tLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpO2lmKGRlKGUsVShVKHt9LHQpLHtjYXB0aW9uOiExfSksbiksY2Uobix0LmFsdCx0LmlzRGVjb3JhdGl2ZSksdC5jYXB0aW9uKXt2YXIgcj1GLmNyZWF0ZSgiZmlndXJlIix7ImNsYXNzIjoiaW1hZ2UifSk7cmV0dXJuIHIuYXBwZW5kQ2hpbGQobiksci5hcHBlbmRDaGlsZChGLmNyZWF0ZSgiZmlnY2FwdGlvbiIse2NvbnRlbnRFZGl0YWJsZToidHJ1ZSJ9LCJDYXB0aW9uIikpLHIuY29udGVudEVkaXRhYmxlPSJmYWxzZSIscn1yZXR1cm4gbn0oZnVuY3Rpb24oZSl7cmV0dXJuIGdlKHQsZSl9LGUpO3QuZG9tLnNldEF0dHJpYihuLCJkYXRhLW1jZS1pZCIsIl9fbWNlbmV3IiksdC5mb2N1cygpLHQuc2VsZWN0aW9uLnNldENvbnRlbnQobi5vdXRlckhUTUwpO3ZhciByPXQuZG9tLnNlbGVjdCgnKltkYXRhLW1jZS1pZD0iX19tY2VuZXciXScpWzBdO2lmKHQuZG9tLnNldEF0dHJpYihyLCJkYXRhLW1jZS1pZCIsbnVsbCksYWUocikpe3ZhciBhPXBlKHQscik7dC5zZWxlY3Rpb24uc2VsZWN0KGEpfWVsc2UgdC5zZWxlY3Rpb24uc2VsZWN0KHIpfSxiZT1mdW5jdGlvbih0LGUpe3ZhciBuLHIsYSxpLG8sbD1mZSh0KTtpZihkZShmdW5jdGlvbihlKXtyZXR1cm4gZ2UodCxlKX0sZSxsKSxuPWwsdC5kb20uc2V0QXR0cmliKG4sInNyYyIsbi5nZXRBdHRyaWJ1dGUoInNyYyIpKSxhZShsLnBhcmVudE5vZGUpKXt2YXIgcz1sLnBhcmVudE5vZGU7cGUodCxzKSx0LnNlbGVjdGlvbi5zZWxlY3QobC5wYXJlbnROb2RlKX1lbHNlIHQuc2VsZWN0aW9uLnNlbGVjdChsKSxyPXQsYT1lLG89ZnVuY3Rpb24oKXtpLm9ubG9hZD1pLm9uZXJyb3I9bnVsbCxyLnNlbGVjdGlvbiYmKHIuc2VsZWN0aW9uLnNlbGVjdChpKSxyLm5vZGVDaGFuZ2VkKCkpfSwoaT1sKS5vbmxvYWQ9ZnVuY3Rpb24oKXthLndpZHRofHxhLmhlaWdodHx8IUUocil8fHIuZG9tLnNldEF0dHJpYnMoaSx7d2lkdGg6U3RyaW5nKGkuY2xpZW50V2lkdGgpLGhlaWdodDpTdHJpbmcoaS5jbGllbnRIZWlnaHQpfSksbygpfSxpLm9uZXJyb3I9b30sdmU9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UudXRpbC5Ub29scyIpLHllPWZ1bmN0aW9uKGUpe3JldHVybiBTKGUudmFsdWUpP2UudmFsdWU6IiJ9LHdlPWZ1bmN0aW9uKGUsYSl7dmFyIGk9W107cmV0dXJuIHZlLmVhY2goZSxmdW5jdGlvbihlKXt2YXIgdD1TKGUudGV4dCk/ZS50ZXh0OlMoZS50aXRsZSk/ZS50aXRsZToiIjtpZihlLm1lbnUhPT11bmRlZmluZWQpe3ZhciBuPXdlKGUubWVudSxhKTtpLnB1c2goe3RleHQ6dCxpdGVtczpufSl9ZWxzZXt2YXIgcj1hKGUpO2kucHVzaCh7dGV4dDp0LHZhbHVlOnJ9KX19KSxpfSxEZT1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9eWUpLGZ1bmN0aW9uKGUpe3JldHVybiBlP0EuZnJvbShlKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHdlKGUsdCl9KTpBLm5vbmUoKX19LEFlPWZ1bmN0aW9uKGUsbil7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciByPXQoZVtuXSxuKTtpZihyLmlzU29tZSgpKXJldHVybiByfXJldHVybiBBLm5vbmUoKX0oZSxmdW5jdGlvbihlKXtyZXR1cm4gdD1lLE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LCJpdGVtcyIpP0FlKGUuaXRlbXMsbik6ZS52YWx1ZT09PW4/QS5zb21lKGUpOkEubm9uZSgpO3ZhciB0fSl9LFNlPURlLHhlPWZ1bmN0aW9uKGUpe3JldHVybiBEZSh5ZSkoZSl9LFRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuYmluZChmdW5jdGlvbihlKXtyZXR1cm4gQWUoZSx0KX0pfTtmdW5jdGlvbiBDZShvKXt2YXIgdD1mdW5jdGlvbihlLHIsYSx0KXt2YXIgaSxuOyhpPW5ldyBtLlhNTEh0dHBSZXF1ZXN0KS5vcGVuKCJQT1NUIixvLnVybCksaS53aXRoQ3JlZGVudGlhbHM9by5jcmVkZW50aWFscyxpLnVwbG9hZC5vbnByb2dyZXNzPWZ1bmN0aW9uKGUpe3QoZS5sb2FkZWQvZS50b3RhbCoxMDApfSxpLm9uZXJyb3I9ZnVuY3Rpb24oKXthKCJJbWFnZSB1cGxvYWQgZmFpbGVkIGR1ZSB0byBhIFhIUiBUcmFuc3BvcnQgZXJyb3IuIENvZGU6ICIraS5zdGF0dXMpfSxpLm9ubG9hZD1mdW5jdGlvbigpe3ZhciBlLHQsbjtpLnN0YXR1czwyMDB8fDMwMDw9aS5zdGF0dXM/YSgiSFRUUCBFcnJvcjogIitpLnN0YXR1cyk6KGU9SlNPTi5wYXJzZShpLnJlc3BvbnNlVGV4dCkpJiYic3RyaW5nIj09dHlwZW9mIGUubG9jYXRpb24/cigodD1vLmJhc2VQYXRoLG49ZS5sb2NhdGlvbix0P3QucmVwbGFjZSgvXC8kLywiIikrIi8iK24ucmVwbGFjZSgvXlwvLywiIik6bikpOmEoIkludmFsaWQgSlNPTjogIitpLnJlc3BvbnNlVGV4dCl9LChuPW5ldyBtLkZvcm1EYXRhKS5hcHBlbmQoImZpbGUiLGUuYmxvYigpLGUuZmlsZW5hbWUoKSksaS5zZW5kKG4pfTtyZXR1cm4gbz12ZS5leHRlbmQoe2NyZWRlbnRpYWxzOiExLGhhbmRsZXI6dH0sbykse3VwbG9hZDpmdW5jdGlvbihlKXtyZXR1cm4gby51cmx8fG8uaGFuZGxlciE9PXQ/KHI9ZSxhPW8uaGFuZGxlcixuZXcgTChmdW5jdGlvbihlLHQpe3RyeXthKHIsZSx0LGkpfWNhdGNoKG4pe3Qobi5tZXNzYWdlKX19KSk6TC5yZWplY3QoIlVwbG9hZCB1cmwgbWlzc2luZyBmcm9tIHRoZSBzZXR0aW5ncy4iKTt2YXIgcixhfX19dmFyIFVlPWZ1bmN0aW9uKGUpe3JldHVybnt0aXRsZToiQWR2YW5jZWQiLG5hbWU6ImFkdmFuY2VkIixpdGVtczpbe3R5cGU6ImlucHV0IixsYWJlbDoiU3R5bGUiLG5hbWU6InN0eWxlIn0se3R5cGU6ImdyaWQiLGNvbHVtbnM6MixpdGVtczpbe3R5cGU6ImlucHV0IixsYWJlbDoiVmVydGljYWwgc3BhY2UiLG5hbWU6InZzcGFjZSIsaW5wdXRNb2RlOiJudW1lcmljIn0se3R5cGU6ImlucHV0IixsYWJlbDoiSG9yaXpvbnRhbCBzcGFjZSIsbmFtZToiaHNwYWNlIixpbnB1dE1vZGU6Im51bWVyaWMifSx7dHlwZToiaW5wdXQiLGxhYmVsOiJCb3JkZXIgd2lkdGgiLG5hbWU6ImJvcmRlciIsaW5wdXRNb2RlOiJudW1lcmljIn0se3R5cGU6InNlbGVjdGJveCIsbmFtZToiYm9yZGVyc3R5bGUiLGxhYmVsOiJCb3JkZXIgc3R5bGUiLGl0ZW1zOlt7dGV4dDoiU2VsZWN0Li4uIix2YWx1ZToiIn0se3RleHQ6IlNvbGlkIix2YWx1ZToic29saWQifSx7dGV4dDoiRG90dGVkIix2YWx1ZToiZG90dGVkIn0se3RleHQ6IkRhc2hlZCIsdmFsdWU6ImRhc2hlZCJ9LHt0ZXh0OiJEb3VibGUiLHZhbHVlOiJkb3VibGUifSx7dGV4dDoiR3Jvb3ZlIix2YWx1ZToiZ3Jvb3ZlIn0se3RleHQ6IlJpZGdlIix2YWx1ZToicmlkZ2UifSx7dGV4dDoiSW5zZXQiLHZhbHVlOiJpbnNldCJ9LHt0ZXh0OiJPdXRzZXQiLHZhbHVlOiJvdXRzZXQifSx7dGV4dDoiTm9uZSIsdmFsdWU6Im5vbmUifSx7dGV4dDoiSGlkZGVuIix2YWx1ZToiaGlkZGVuIn1dfV19XX19LE9lPWZ1bmN0aW9uKHIpe3ZhciB0LGUsYT1TZShmdW5jdGlvbihlKXtyZXR1cm4gci5jb252ZXJ0VVJMKGUudmFsdWV8fGUudXJsLCJzcmMiKX0pLG49bmV3IEwoZnVuY3Rpb24odCl7dmFyIG4sZTtuPWZ1bmN0aW9uKGUpe3QoYShlKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHgoW1t7dGV4dDoiTm9uZSIsdmFsdWU6IiJ9XSxlXSl9KSl9LCJzdHJpbmciPT10eXBlb2YoZT1yLmdldFBhcmFtKCJpbWFnZV9saXN0IiwhMSkpP18uc2VuZCh7dXJsOmUsc3VjY2VzczpmdW5jdGlvbihlKXtuKEpTT04ucGFyc2UoZSkpfX0pOiJmdW5jdGlvbiI9PXR5cGVvZiBlP2Uobik6bihlKX0pLGk9eGUoci5nZXRQYXJhbSgiaW1hZ2VfY2xhc3NfbGlzdCIpKSxvPXIuZ2V0UGFyYW0oImltYWdlX2FkdnRhYiIsITEsImJvb2xlYW4iKSxsPXIuZ2V0UGFyYW0oImltYWdlX3VwbG9hZHRhYiIsITAsImJvb2xlYW4iKSxzPSEhTShyKSx1PSEhUihyKSxjPShlPWZlKHQ9cikpP3NlKGZ1bmN0aW9uKGUpe3JldHVybiBnZSh0LGUpfSxlKTpvZSgpLG09ci5nZXRQYXJhbSgiaW1hZ2VfZGVzY3JpcHRpb24iLCEwLCJib29sZWFuIiksZD1yLmdldFBhcmFtKCJpbWFnZV90aXRsZSIsITEsImJvb2xlYW4iKSxnPUUociksZj1yLmdldFBhcmFtKCJpbWFnZV9jYXB0aW9uIiwhMSwiYm9vbGVhbiIpLHA9ci5nZXRQYXJhbSgiYTExeV9hZHZhbmNlZF9vcHRpb25zIiwhMSwiYm9vbGVhbiIpLGg9TShyKSxiPXIuZ2V0UGFyYW0oImltYWdlc191cGxvYWRfYmFzZV9wYXRoIix1bmRlZmluZWQsInN0cmluZyIpLHY9ci5nZXRQYXJhbSgiaW1hZ2VzX3VwbG9hZF9jcmVkZW50aWFscyIsITEsImJvb2xlYW4iKSx5PVIociksdz1yLmdldFBhcmFtKCJhdXRvbWF0aWNfdXBsb2FkcyIsITAsImJvb2xlYW4iKSxEPUEuc29tZShyLmdldFBhcmFtKCJpbWFnZV9wcmVwZW5kX3VybCIsIiIsInN0cmluZyIpKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIFMoZSkmJjA8ZS5sZW5ndGh9KTtyZXR1cm4gbi50aGVuKGZ1bmN0aW9uKGUpe3JldHVybntpbWFnZTpjLGltYWdlTGlzdDplLGNsYXNzTGlzdDppLGhhc0FkdlRhYjpvLGhhc1VwbG9hZFRhYjpsLGhhc1VwbG9hZFVybDpzLGhhc1VwbG9hZEhhbmRsZXI6dSxoYXNEZXNjcmlwdGlvbjptLGhhc0ltYWdlVGl0bGU6ZCxoYXNEaW1lbnNpb25zOmcsaGFzSW1hZ2VDYXB0aW9uOmYsdXJsOmgsYmFzZVBhdGg6YixjcmVkZW50aWFsczp2LGhhbmRsZXI6eSxwcmVwZW5kVVJMOkQsaGFzQWNjZXNzaWJpbGl0eU9wdGlvbnM6cCxhdXRvbWF0aWNVcGxvYWRzOnd9fSl9LEllPWZ1bmN0aW9uKGUpe3ZhciB0PWUuaW1hZ2VMaXN0Lm1hcChmdW5jdGlvbihlKXtyZXR1cm57bmFtZToiaW1hZ2VzIix0eXBlOiJzZWxlY3Rib3giLGxhYmVsOiJJbWFnZSBsaXN0IixpdGVtczplfX0pLG49e25hbWU6ImFsdCIsdHlwZToiaW5wdXQiLGxhYmVsOiJBbHRlcm5hdGl2ZSBkZXNjcmlwdGlvbiIsZGlzYWJsZWQ6ZS5oYXNBY2Nlc3NpYmlsaXR5T3B0aW9ucyYmZS5pbWFnZS5pc0RlY29yYXRpdmV9LHI9ZS5jbGFzc0xpc3QubWFwKGZ1bmN0aW9uKGUpe3JldHVybntuYW1lOiJjbGFzc2VzIix0eXBlOiJzZWxlY3Rib3giLGxhYmVsOiJDbGFzcyIsaXRlbXM6ZX19KTtyZXR1cm4geChbW3tuYW1lOiJzcmMiLHR5cGU6InVybGlucHV0IixmaWxldHlwZToiaW1hZ2UiLGxhYmVsOiJTb3VyY2UifV0sdC50b0FycmF5KCksZS5oYXNBY2Nlc3NpYmlsaXR5T3B0aW9ucyYmZS5oYXNEZXNjcmlwdGlvbj9be3R5cGU6ImxhYmVsIixsYWJlbDoiQWNjZXNzaWJpbGl0eSIsaXRlbXM6W3tuYW1lOiJpc0RlY29yYXRpdmUiLHR5cGU6ImNoZWNrYm94IixsYWJlbDoiSW1hZ2UgaXMgZGVjb3JhdGl2ZSJ9XX1dOltdLGUuaGFzRGVzY3JpcHRpb24/W25dOltdLGUuaGFzSW1hZ2VUaXRsZT9be25hbWU6InRpdGxlIix0eXBlOiJpbnB1dCIsbGFiZWw6IkltYWdlIHRpdGxlIn1dOltdLGUuaGFzRGltZW5zaW9ucz9be25hbWU6ImRpbWVuc2lvbnMiLHR5cGU6InNpemVpbnB1dCJ9XTpbXSxbe3R5cGU6ImdyaWQiLGNvbHVtbnM6MixpdGVtczp4KFtyLnRvQXJyYXkoKSxlLmhhc0ltYWdlQ2FwdGlvbj9be3R5cGU6ImxhYmVsIixsYWJlbDoiQ2FwdGlvbiIsaXRlbXM6W3t0eXBlOiJjaGVja2JveCIsbmFtZToiY2FwdGlvbiIsbGFiZWw6IlNob3cgY2FwdGlvbiJ9XX1dOltdXSl9XV0pfSxOZT1mdW5jdGlvbihlKXtyZXR1cm57dGl0bGU6IkdlbmVyYWwiLG5hbWU6ImdlbmVyYWwiLGl0ZW1zOkllKGUpfX0sUGU9SWUsTGU9ZnVuY3Rpb24oZSl7cmV0dXJue3RpdGxlOiJVcGxvYWQiLG5hbWU6InVwbG9hZCIsaXRlbXM6W3t0eXBlOiJkcm9wem9uZSIsbmFtZToiZmlsZWlucHV0In1dfX0sX2U9ZnVuY3Rpb24oZSl7cmV0dXJue3NyYzp7dmFsdWU6ZS5zcmMsbWV0YTp7fX0saW1hZ2VzOmUuc3JjLGFsdDplLmFsdCx0aXRsZTplLnRpdGxlLGRpbWVuc2lvbnM6e3dpZHRoOmUud2lkdGgsaGVpZ2h0OmUuaGVpZ2h0fSxjbGFzc2VzOmVbImNsYXNzIl0sY2FwdGlvbjplLmNhcHRpb24sc3R5bGU6ZS5zdHlsZSx2c3BhY2U6ZS52c3BhY2UsYm9yZGVyOmUuYm9yZGVyLGhzcGFjZTplLmhzcGFjZSxib3JkZXJzdHlsZTplLmJvcmRlclN0eWxlLGZpbGVpbnB1dDpbXSxpc0RlY29yYXRpdmU6ZS5pc0RlY29yYXRpdmV9fSxFZT1mdW5jdGlvbihlLHQpe3JldHVybntzcmM6ZS5zcmMudmFsdWUsYWx0OjA9PT1lLmFsdC5sZW5ndGgmJnQ/bnVsbDplLmFsdCx0aXRsZTplLnRpdGxlLHdpZHRoOmUuZGltZW5zaW9ucy53aWR0aCxoZWlnaHQ6ZS5kaW1lbnNpb25zLmhlaWdodCwiY2xhc3MiOmUuY2xhc3NlcyxzdHlsZTplLnN0eWxlLGNhcHRpb246ZS5jYXB0aW9uLGhzcGFjZTplLmhzcGFjZSx2c3BhY2U6ZS52c3BhY2UsYm9yZGVyOmUuYm9yZGVyLGJvcmRlclN0eWxlOmUuYm9yZGVyc3R5bGUsaXNEZWNvcmF0aXZlOmUuaXNEZWNvcmF0aXZlfX0sTWU9ZnVuY3Rpb24oZSx0KXt2YXIgbixyLGE9dC5nZXREYXRhKCk7bj1lLHI9YS5zcmMudmFsdWUsKC9eKD86W2EtekEtWl0rOik/XC9cLy8udGVzdChyKT9BLm5vbmUoKTpuLnByZXBlbmRVUkwuYmluZChmdW5jdGlvbihlKXtyZXR1cm4gci5zdWJzdHJpbmcoMCxlLmxlbmd0aCkhPT1lP0Euc29tZShlK3IpOkEubm9uZSgpfSkpLmVhY2goZnVuY3Rpb24oZSl7dC5zZXREYXRhKHtzcmM6e3ZhbHVlOmUsbWV0YTphLnNyYy5tZXRhfX0pfSl9LFJlPWZ1bmN0aW9uKGUsdCl7dmFyIG4scixhLGk9dC5nZXREYXRhKCksbz1pLnNyYy5tZXRhO2lmKG8hPT11bmRlZmluZWQpe3ZhciBsPUMoe30saSk7cj1sLGE9bywobj1lKS5oYXNEZXNjcmlwdGlvbiYmUyhhLmFsdCkmJihyLmFsdD1hLmFsdCksbi5oYXNBY2Nlc3NpYmlsaXR5T3B0aW9ucyYmKHIuaXNEZWNvcmF0aXZlPWEuaXNEZWNvcmF0aXZlfHxyLmlzRGVjb3JhdGl2ZXx8ITEpLG4uaGFzSW1hZ2VUaXRsZSYmUyhhLnRpdGxlKSYmKHIudGl0bGU9YS50aXRsZSksbi5oYXNEaW1lbnNpb25zJiYoUyhhLndpZHRoKSYmKHIuZGltZW5zaW9ucy53aWR0aD1hLndpZHRoKSxTKGEuaGVpZ2h0KSYmKHIuZGltZW5zaW9ucy5oZWlnaHQ9YS5oZWlnaHQpKSxTKGFbImNsYXNzIl0pJiZUZShuLmNsYXNzTGlzdCxhWyJjbGFzcyJdKS5lYWNoKGZ1bmN0aW9uKGUpe3IuY2xhc3Nlcz1lLnZhbHVlfSksbi5oYXNJbWFnZUNhcHRpb24mJnkoYS5jYXB0aW9uKSYmKHIuY2FwdGlvbj1hLmNhcHRpb24pLG4uaGFzQWR2VGFiJiYoUyhhLnN0eWxlKSYmKHIuc3R5bGU9YS5zdHlsZSksUyhhLnZzcGFjZSkmJihyLnZzcGFjZT1hLnZzcGFjZSksUyhhLmJvcmRlcikmJihyLmJvcmRlcj1hLmJvcmRlciksUyhhLmhzcGFjZSkmJihyLmhzcGFjZT1hLmhzcGFjZSksUyhhLmJvcmRlcnN0eWxlKSYmKHIuYm9yZGVyc3R5bGU9YS5ib3JkZXJzdHlsZSkpLHQuc2V0RGF0YShsKX19LHplPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBhLGksbyxsLHMsdSxjLG0sZCxnLGYscDtNZSh0LHIpLFJlKHQsciksYT1lLGk9dCxvPW4scz0obD1yKS5nZXREYXRhKCksdT1zLnNyYy52YWx1ZSwoYz1zLnNyYy5tZXRhfHx7fSkud2lkdGh8fGMuaGVpZ2h0fHwhaS5oYXNEaW1lbnNpb25zfHxhLmltYWdlU2l6ZSh1KS50aGVuKGZ1bmN0aW9uKGUpe28ub3BlbiYmbC5zZXREYXRhKHtkaW1lbnNpb25zOmV9KX0pLG09dCxkPW4sZj0oZz1yKS5nZXREYXRhKCkscD1UZShtLmltYWdlTGlzdCxmLnNyYy52YWx1ZSksZC5wcmV2SW1hZ2U9cCxnLnNldERhdGEoe2ltYWdlczpwLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZX0pLmdldE9yKCIiKX0pfSxIZT1mdW5jdGlvbihlLHQsbil7dmFyIHIsYSxpLG8sbCxzPWooZShuLnN0eWxlKSksdT1DKHt9LG4pO3JldHVybiB1LnZzcGFjZT0ocj1zKVsibWFyZ2luLXRvcCJdJiZyWyJtYXJnaW4tYm90dG9tIl0mJnJbIm1hcmdpbi10b3AiXT09PXJbIm1hcmdpbi1ib3R0b20iXT9IKFN0cmluZyhyWyJtYXJnaW4tdG9wIl0pKToiIix1LmhzcGFjZT0oYT1zKVsibWFyZ2luLXJpZ2h0Il0mJmFbIm1hcmdpbi1sZWZ0Il0mJmFbIm1hcmdpbi1yaWdodCJdPT09YVsibWFyZ2luLWxlZnQiXT9IKFN0cmluZyhhWyJtYXJnaW4tcmlnaHQiXSkpOiIiLHUuYm9yZGVyPShpPXMpWyJib3JkZXItd2lkdGgiXT9IKFN0cmluZyhpWyJib3JkZXItd2lkdGgiXSkpOiIiLHUuYm9yZGVyc3R5bGU9KG89cylbImJvcmRlci1zdHlsZSJdP1N0cmluZyhvWyJib3JkZXItc3R5bGUiXSk6IiIsdS5zdHlsZT0obD10KShlKGwocykpKSx1fSxrZT1mdW5jdGlvbihzLHUsdCxjKXt2YXIgZSxuPWMuZ2V0RGF0YSgpO2MuYmxvY2soIlVwbG9hZGluZyBpbWFnZSIpLCgwPT09KGU9bi5maWxlaW5wdXQpLmxlbmd0aD9BLm5vbmUoKTpBLnNvbWUoZVswXSkpLmZvbGQoZnVuY3Rpb24oKXtjLnVuYmxvY2soKX0sZnVuY3Rpb24obil7dmFyIHIsYT1tLlVSTC5jcmVhdGVPYmplY3RVUkwobiksaT1DZSh7dXJsOnUudXJsLGJhc2VQYXRoOnUuYmFzZVBhdGgsY3JlZGVudGlhbHM6dS5jcmVkZW50aWFscyxoYW5kbGVyOnUuaGFuZGxlcn0pLG89ZnVuY3Rpb24oKXtjLnVuYmxvY2soKSxtLlVSTC5yZXZva2VPYmplY3RVUkwoYSl9LGw9ZnVuY3Rpb24oZSl7Yy5zZXREYXRhKHtzcmM6e3ZhbHVlOmUsbWV0YTp7fX19KSxjLnNob3dUYWIoImdlbmVyYWwiKSx6ZShzLHUsdCxjKX07cj1uLG5ldyBMKGZ1bmN0aW9uKGUsdCl7dmFyIG49bmV3IG0uRmlsZVJlYWRlcjtuLm9ubG9hZD1mdW5jdGlvbigpe2Uobi5yZXN1bHQpfSxuLm9uZXJyb3I9ZnVuY3Rpb24oKXt0KG4uZXJyb3IubWVzc2FnZSl9LG4ucmVhZEFzRGF0YVVSTChyKX0pLnRoZW4oZnVuY3Rpb24oZSl7dmFyIHQ9cy5jcmVhdGVCbG9iQ2FjaGUobixhLGUpO3UuYXV0b21hdGljVXBsb2Fkcz9pLnVwbG9hZCh0KS50aGVuKGZ1bmN0aW9uKGUpe2woZSksbygpfSlbImNhdGNoIl0oZnVuY3Rpb24oZSl7bygpLHMuYWxlcnRFcnIoZSl9KToocy5hZGRUb0Jsb2JDYWNoZSh0KSxsKHQuYmxvYlVyaSgpKSxjLnVuYmxvY2soKSl9KX0pfSxqZT1mdW5jdGlvbihoLGIsdil7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7dmFyIG4scixhLGksbyxsLHMsdSxjLG0sZCxnLGYscDsic3JjIj09PXQubmFtZT96ZShoLGIsdixlKToiaW1hZ2VzIj09PXQubmFtZT8oYz1oLG09YixkPXYsZj0oZz1lKS5nZXREYXRhKCksKHA9VGUobS5pbWFnZUxpc3QsZi5pbWFnZXMpKS5lYWNoKGZ1bmN0aW9uKGUpeyIiPT09Zi5hbHR8fGQucHJldkltYWdlLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS50ZXh0PT09Zi5hbHR9KS5nZXRPcighMSk/IiI9PT1lLnZhbHVlP2cuc2V0RGF0YSh7c3JjOmUsYWx0OmQucHJldkFsdH0pOmcuc2V0RGF0YSh7c3JjOmUsYWx0OmUudGV4dH0pOmcuc2V0RGF0YSh7c3JjOmV9KX0pLGQucHJldkltYWdlPXAsemUoYyxtLGQsZykpOiJhbHQiPT09dC5uYW1lP3YucHJldkFsdD1lLmdldERhdGEoKS5hbHQ6InN0eWxlIj09PXQubmFtZT8obz1oLHM9KGw9ZSkuZ2V0RGF0YSgpLHU9SGUoby5wYXJzZVN0eWxlLG8uc2VyaWFsaXplU3R5bGUscyksbC5zZXREYXRhKHUpKToidnNwYWNlIj09PXQubmFtZXx8ImhzcGFjZSI9PT10Lm5hbWV8fCJib3JkZXIiPT09dC5uYW1lfHwiYm9yZGVyc3R5bGUiPT09dC5uYW1lPyhuPWgscj1lLGE9QyhfZShiLmltYWdlKSxyLmdldERhdGEoKSksaT1sZShuLm5vcm1hbGl6ZUNzcyxFZShhLCExKSksci5zZXREYXRhKHtzdHlsZTppfSkpOiJmaWxlaW5wdXQiPT09dC5uYW1lP2tlKGgsYix2LGUpOiJpc0RlY29yYXRpdmUiPT09dC5uYW1lJiYoZS5nZXREYXRhKCkuaXNEZWNvcmF0aXZlP2UuZGlzYWJsZSgiYWx0Iik6ZS5lbmFibGUoImFsdCIpKX19LEJlPWZ1bmN0aW9uKGkpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgdCxuLHIsYT17cHJldkltYWdlOlRlKCh0PWUpLmltYWdlTGlzdCx0LmltYWdlLnNyYykscHJldkFsdDp0LmltYWdlLmFsdCxvcGVuOiEwfTtyZXR1cm57dGl0bGU6Ikluc2VydC9FZGl0IEltYWdlIixzaXplOiJub3JtYWwiLGJvZHk6KHI9ZSkuaGFzQWR2VGFifHxyLmhhc1VwbG9hZFVybHx8ci5oYXNVcGxvYWRIYW5kbGVyP3t0eXBlOiJ0YWJwYW5lbCIsdGFiczp4KFtbTmUocildLHIuaGFzQWR2VGFiP1tVZShyKV06W10sci5oYXNVcGxvYWRUYWImJihyLmhhc1VwbG9hZFVybHx8ci5oYXNVcGxvYWRIYW5kbGVyKT9bTGUocildOltdXSl9Ont0eXBlOiJwYW5lbCIsaXRlbXM6UGUocil9LGJ1dHRvbnM6W3t0eXBlOiJjYW5jZWwiLG5hbWU6ImNhbmNlbCIsdGV4dDoiQ2FuY2VsIn0se3R5cGU6InN1Ym1pdCIsbmFtZToic2F2ZSIsdGV4dDoiU2F2ZSIscHJpbWFyeTohMH1dLGluaXRpYWxEYXRhOl9lKGUuaW1hZ2UpLG9uU3VibWl0Omkub25TdWJtaXQoZSksb25DaGFuZ2U6amUoaSxlLGEpLG9uQ2xvc2U6KG49YSxmdW5jdGlvbigpe24ub3Blbj0hMX0pfX19LEZlPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gYT10LmRvY3VtZW50QmFzZVVSSS50b0Fic29sdXRlKGUpLG5ldyBMKGZ1bmN0aW9uKHQpe3ZhciBuPW0uZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIikscj1mdW5jdGlvbihlKXtuLnBhcmVudE5vZGUmJm4ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChuKSx0KGUpfTtuLm9ubG9hZD1mdW5jdGlvbigpe3ZhciBlPXt3aWR0aDp6KG4ud2lkdGgsbi5jbGllbnRXaWR0aCksaGVpZ2h0Onoobi5oZWlnaHQsbi5jbGllbnRIZWlnaHQpfTtyKEwucmVzb2x2ZShlKSl9LG4ub25lcnJvcj1mdW5jdGlvbigpe3IoTC5yZWplY3QoIkZhaWxlZCB0byBnZXQgaW1hZ2UgZGltZW5zaW9ucyBmb3I6ICIrYSkpfTt2YXIgZT1uLnN0eWxlO2UudmlzaWJpbGl0eT0iaGlkZGVuIixlLnBvc2l0aW9uPSJmaXhlZCIsZS5ib3R0b209ZS5sZWZ0PSIwcHgiLGUud2lkdGg9ZS5oZWlnaHQ9ImF1dG8iLG0uZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChuKSxuLnNyYz1hfSkudGhlbihmdW5jdGlvbihlKXtyZXR1cm57d2lkdGg6U3RyaW5nKGUud2lkdGgpLGhlaWdodDpTdHJpbmcoZS5oZWlnaHQpfX0pO3ZhciBhfX0sR2U9ZnVuY3Rpb24odCl7dmFyIG4scixhLGksbyxsLHMsZT17b25TdWJtaXQ6ZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0PUMoX2Uobi5pbWFnZSksZS5nZXREYXRhKCkpO3MuZXhlY0NvbW1hbmQoIm1jZVVwZGF0ZUltYWdlIiwhMSxFZSh0LG4uaGFzQWNjZXNzaWJpbGl0eU9wdGlvbnMpKSxzLmVkaXRvclVwbG9hZC51cGxvYWRJbWFnZXNBdXRvKCksZS5jbG9zZSgpfX0saW1hZ2VTaXplOkZlKHM9dCksYWRkVG9CbG9iQ2FjaGU6ZnVuY3Rpb24oZSl7bC5lZGl0b3JVcGxvYWQuYmxvYkNhY2hlLmFkZChlKX0sY3JlYXRlQmxvYkNhY2hlOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gby5lZGl0b3JVcGxvYWQuYmxvYkNhY2hlLmNyZWF0ZSh7YmxvYjplLGJsb2JVcmk6dCxuYW1lOmUubmFtZT9lLm5hbWUucmVwbGFjZSgvXC5bXlwuXSskLywiIik6bnVsbCxiYXNlNjQ6bi5zcGxpdCgiLCIpWzFdfSl9LGFsZXJ0RXJyOmZ1bmN0aW9uKGUpe2kud2luZG93TWFuYWdlci5hbGVydChlKX0sbm9ybWFsaXplQ3NzOmZ1bmN0aW9uKGUpe3JldHVybiBnZShhLGUpfSxwYXJzZVN0eWxlOmZ1bmN0aW9uKGUpe3JldHVybiByLmRvbS5wYXJzZVN0eWxlKGUpfSxzZXJpYWxpemVTdHlsZToobj1yPWE9aT1vPWw9dCxmdW5jdGlvbihlLHQpe3JldHVybiBuLmRvbS5zZXJpYWxpemVTdHlsZShlLHQpfSl9LHU9ZnVuY3Rpb24oKXtyZXR1cm4gT2UodCkudGhlbihCZShlKSkudGhlbihmdW5jdGlvbihlKXtyZXR1cm4gdC53aW5kb3dNYW5hZ2VyLm9wZW4oZSl9KX07cmV0dXJue29wZW46dSxvcGVuTGF0ZXI6ZnVuY3Rpb24oKXt1KCl9fX0sV2U9ZnVuY3Rpb24obil7bi5hZGRDb21tYW5kKCJtY2VJbWFnZSIsR2Uobikub3BlbkxhdGVyKSxuLmFkZENvbW1hbmQoIm1jZVVwZGF0ZUltYWdlIixmdW5jdGlvbihlLHQpe24udW5kb01hbmFnZXIudHJhbnNhY3QoZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCxlKXt2YXIgbj1mZSh0KTtpZihuKXt2YXIgcj1zZShmdW5jdGlvbihlKXtyZXR1cm4gZ2UodCxlKX0sbiksYT1VKFUoe30sciksZSk7YS5zcmM/YmUodCxhKTpmdW5jdGlvbihlLHQpe2lmKHQpe3ZhciBuPWUuZG9tLmlzKHQucGFyZW50Tm9kZSwiZmlndXJlLmltYWdlIik/dC5wYXJlbnROb2RlOnQ7ZS5kb20ucmVtb3ZlKG4pLGUuZm9jdXMoKSxlLm5vZGVDaGFuZ2VkKCksZS5kb20uaXNFbXB0eShlLmdldEJvZHkoKSkmJihlLnNldENvbnRlbnQoIiIpLGUuc2VsZWN0aW9uLnNldEN1cnNvckxvY2F0aW9uKCkpfX0odCxuKX1lbHNlIGUuc3JjJiZoZSh0LFUoVSh7fSxvZSgpKSxlKSl9KG4sdCl9KX0pfSxxZT1mdW5jdGlvbihpKXtyZXR1cm4gZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG49ZS5sZW5ndGgscj1mdW5jdGlvbihlKXtlLmF0dHIoImNvbnRlbnRlZGl0YWJsZSIsaT8idHJ1ZSI6bnVsbCl9O24tLTspe3ZhciBhPWVbbl07KHQ9YS5hdHRyKCJjbGFzcyIpKSYmL1xiaW1hZ2VcYi8udGVzdCh0KSYmKGEuYXR0cigiY29udGVudGVkaXRhYmxlIixpPyJmYWxzZSI6bnVsbCksdmUuZWFjaChhLmdldEFsbCgiZmlnY2FwdGlvbiIpLHIpKX19fTshZnVuY3Rpb24gJGUoKXthLmFkZCgiaW1hZ2UiLGZ1bmN0aW9uKGUpe3ZhciB0LG47KHQ9ZSkub24oIlByZUluaXQiLGZ1bmN0aW9uKCl7dC5wYXJzZXIuYWRkTm9kZUZpbHRlcigiZmlndXJlIixxZSghMCkpLHQuc2VyaWFsaXplci5hZGROb2RlRmlsdGVyKCJmaWd1cmUiLHFlKCExKSl9KSwobj1lKS51aS5yZWdpc3RyeS5hZGRUb2dnbGVCdXR0b24oImltYWdlIix7aWNvbjoiaW1hZ2UiLHRvb2x0aXA6Ikluc2VydC9lZGl0IGltYWdlIixvbkFjdGlvbjpHZShuKS5vcGVuTGF0ZXIsb25TZXR1cDpmdW5jdGlvbihlKXtyZXR1cm4gbi5zZWxlY3Rpb24uc2VsZWN0b3JDaGFuZ2VkV2l0aFVuYmluZCgiaW1nOm5vdChbZGF0YS1tY2Utb2JqZWN0XSxbZGF0YS1tY2UtcGxhY2Vob2xkZXJdKSxmaWd1cmUuaW1hZ2UiLGUuc2V0QWN0aXZlKS51bmJpbmR9fSksbi51aS5yZWdpc3RyeS5hZGRNZW51SXRlbSgiaW1hZ2UiLHtpY29uOiJpbWFnZSIsdGV4dDoiSW1hZ2UuLi4iLG9uQWN0aW9uOkdlKG4pLm9wZW5MYXRlcn0pLG4udWkucmVnaXN0cnkuYWRkQ29udGV4dE1lbnUoImltYWdlIix7dXBkYXRlOmZ1bmN0aW9uKGUpe3JldHVybiBhZShlKXx8IklNRyI9PT1lLm5vZGVOYW1lJiYhQihlKT9bImltYWdlIl06W119fSksV2UoZSl9KX0oKX0od2luZG93KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/imagetools/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/imagetools/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24ocCl7InVzZSBzdHJpY3QiO3ZhciB0LGUsbixsPWZ1bmN0aW9uKHQpe3ZhciBlPXQ7cmV0dXJue2dldDpmdW5jdGlvbigpe3JldHVybiBlfSxzZXQ6ZnVuY3Rpb24odCl7ZT10fX19LHI9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuUGx1Z2luTWFuYWdlciIpLGQ9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UudXRpbC5Ub29scyIpLG89ZnVuY3Rpb24oKXt9LGY9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fSxpPWYoITEpLHU9ZighMCksYT1mdW5jdGlvbigpe3JldHVybiBjfSxjPSh0PWZ1bmN0aW9uKHQpe3JldHVybiB0LmlzTm9uZSgpfSx7Zm9sZDpmdW5jdGlvbih0LGUpe3JldHVybiB0KCl9LGlzOmksaXNTb21lOmksaXNOb25lOnUsZ2V0T3I6bj1mdW5jdGlvbih0KXtyZXR1cm4gdH0sZ2V0T3JUaHVuazplPWZ1bmN0aW9uKHQpe3JldHVybiB0KCl9LGdldE9yRGllOmZ1bmN0aW9uKHQpe3Rocm93IG5ldyBFcnJvcih0fHwiZXJyb3I6IGdldE9yRGllIGNhbGxlZCBvbiBub25lLiIpfSxnZXRPck51bGw6ZihudWxsKSxnZXRPclVuZGVmaW5lZDpmKHVuZGVmaW5lZCksb3I6bixvclRodW5rOmUsbWFwOmEsZWFjaDpvLGJpbmQ6YSxleGlzdHM6aSxmb3JhbGw6dSxmaWx0ZXI6YSxlcXVhbHM6dCxlcXVhbHNfOnQsdG9BcnJheTpmdW5jdGlvbigpe3JldHVybltdfSx0b1N0cmluZzpmKCJub25lKCkiKX0pLHM9ZnVuY3Rpb24obil7dmFyIHQ9ZihuKSxlPWZ1bmN0aW9uKCl7cmV0dXJuIG99LHI9ZnVuY3Rpb24odCl7cmV0dXJuIHQobil9LG89e2ZvbGQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZShuKX0saXM6ZnVuY3Rpb24odCl7cmV0dXJuIG49PT10fSxpc1NvbWU6dSxpc05vbmU6aSxnZXRPcjp0LGdldE9yVGh1bms6dCxnZXRPckRpZTp0LGdldE9yTnVsbDp0LGdldE9yVW5kZWZpbmVkOnQsb3I6ZSxvclRodW5rOmUsbWFwOmZ1bmN0aW9uKHQpe3JldHVybiBzKHQobikpfSxlYWNoOmZ1bmN0aW9uKHQpe3Qobil9LGJpbmQ6cixleGlzdHM6cixmb3JhbGw6cixmaWx0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQobik/bzpjfSx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuW25dfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiJzb21lKCIrbisiKSJ9LGVxdWFsczpmdW5jdGlvbih0KXtyZXR1cm4gdC5pcyhuKX0sZXF1YWxzXzpmdW5jdGlvbih0LGUpe3JldHVybiB0LmZvbGQoaSxmdW5jdGlvbih0KXtyZXR1cm4gZShuLHQpfSl9fTtyZXR1cm4gb30sdj17c29tZTpzLG5vbmU6YSxmcm9tOmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT09dHx8dD09PXVuZGVmaW5lZD9jOnModCl9fTtmdW5jdGlvbiBtKHQsZSl7cmV0dXJuIHkocC5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSx0LGUpfWZ1bmN0aW9uIGgodCl7dmFyIGU9bSh0LndpZHRoLHQuaGVpZ2h0KTtyZXR1cm4gZyhlKS5kcmF3SW1hZ2UodCwwLDApLGV9ZnVuY3Rpb24gZyh0KXtyZXR1cm4gdC5nZXRDb250ZXh0KCIyZCIpfWZ1bmN0aW9uIHkodCxlLG4pe3JldHVybiB0LndpZHRoPWUsdC5oZWlnaHQ9bix0fXZhciB3LGIsSSxUPXdpbmRvdy5Qcm9taXNlP3dpbmRvdy5Qcm9taXNlOihiPSh3PWZ1bmN0aW9uKHQpe2lmKCJvYmplY3QiIT10eXBlb2YgdGhpcyl0aHJvdyBuZXcgVHlwZUVycm9yKCJQcm9taXNlcyBtdXN0IGJlIGNvbnN0cnVjdGVkIHZpYSBuZXciKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJub3QgYSBmdW5jdGlvbiIpO3RoaXMuX3N0YXRlPW51bGwsdGhpcy5fdmFsdWU9bnVsbCx0aGlzLl9kZWZlcnJlZHM9W10sTCh0LF8oVSx0aGlzKSxfKEEsdGhpcykpfSkuaW1tZWRpYXRlRm58fCJmdW5jdGlvbiI9PXR5cGVvZiB3aW5kb3cuc2V0SW1tZWRpYXRlJiZ3aW5kb3cuc2V0SW1tZWRpYXRlfHxmdW5jdGlvbih0KXtwLnNldFRpbWVvdXQodCwxKX0sST1BcnJheS5pc0FycmF5fHxmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBBcnJheV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSx3LnByb3RvdHlwZVsiY2F0Y2giXT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50aGVuKG51bGwsdCl9LHcucHJvdG90eXBlLnRoZW49ZnVuY3Rpb24obixyKXt2YXIgbz10aGlzO3JldHVybiBuZXcgdyhmdW5jdGlvbih0LGUpe1IuY2FsbChvLG5ldyBFKG4scix0LGUpKX0pfSx3LmFsbD1mdW5jdGlvbigpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2VdPWFyZ3VtZW50c1tlXTt2YXIgYz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCgxPT09dC5sZW5ndGgmJkkodFswXSk/dFswXTp0KTtyZXR1cm4gbmV3IHcoZnVuY3Rpb24obyxpKXtpZigwPT09Yy5sZW5ndGgpcmV0dXJuIG8oW10pO3ZhciB1PWMubGVuZ3RoO2Z1bmN0aW9uIGEoZSx0KXt0cnl7aWYodCYmKCJvYmplY3QiPT10eXBlb2YgdHx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpKXt2YXIgbj10LnRoZW47aWYoImZ1bmN0aW9uIj09dHlwZW9mIG4pcmV0dXJuIHZvaWQgbi5jYWxsKHQsZnVuY3Rpb24odCl7YShlLHQpfSxpKX1jW2VdPXQsMD09LS11JiZvKGMpfWNhdGNoKHIpe2kocil9fWZvcih2YXIgdD0wO3Q8Yy5sZW5ndGg7dCsrKWEodCxjW3RdKX0pfSx3LnJlc29sdmU9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJvYmplY3QiPT10eXBlb2YgZSYmZS5jb25zdHJ1Y3Rvcj09PXc/ZTpuZXcgdyhmdW5jdGlvbih0KXt0KGUpfSl9LHcucmVqZWN0PWZ1bmN0aW9uKG4pe3JldHVybiBuZXcgdyhmdW5jdGlvbih0LGUpe2Uobil9KX0sdy5yYWNlPWZ1bmN0aW9uKG8pe3JldHVybiBuZXcgdyhmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj0wLHI9bztuPHIubGVuZ3RoO24rKylyW25dLnRoZW4odCxlKX0pfSx3KTtmdW5jdGlvbiBfKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBwbHkoZSxhcmd1bWVudHMpfX1mdW5jdGlvbiBSKHIpe3ZhciBvPXRoaXM7bnVsbCE9PXRoaXMuX3N0YXRlP2IoZnVuY3Rpb24oKXt2YXIgdD1vLl9zdGF0ZT9yLm9uRnVsZmlsbGVkOnIub25SZWplY3RlZDtpZihudWxsIT09dCl7dmFyIGU7dHJ5e2U9dChvLl92YWx1ZSl9Y2F0Y2gobil7cmV0dXJuIHZvaWQgci5yZWplY3Qobil9ci5yZXNvbHZlKGUpfWVsc2Uoby5fc3RhdGU/ci5yZXNvbHZlOnIucmVqZWN0KShvLl92YWx1ZSl9KTp0aGlzLl9kZWZlcnJlZHMucHVzaChyKX1mdW5jdGlvbiBVKHQpe3RyeXtpZih0PT09dGhpcyl0aHJvdyBuZXcgVHlwZUVycm9yKCJBIHByb21pc2UgY2Fubm90IGJlIHJlc29sdmVkIHdpdGggaXRzZWxmLiIpO2lmKHQmJigib2JqZWN0Ij09dHlwZW9mIHR8fCJmdW5jdGlvbiI9PXR5cGVvZiB0KSl7dmFyIGU9dC50aGVuO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlKXJldHVybiB2b2lkIEwoXyhlLHQpLF8oVSx0aGlzKSxfKEEsdGhpcykpfXRoaXMuX3N0YXRlPSEwLHRoaXMuX3ZhbHVlPXQseC5jYWxsKHRoaXMpfWNhdGNoKG4pe0EuY2FsbCh0aGlzLG4pfX1mdW5jdGlvbiBBKHQpe3RoaXMuX3N0YXRlPSExLHRoaXMuX3ZhbHVlPXQseC5jYWxsKHRoaXMpfWZ1bmN0aW9uIHgoKXtmb3IodmFyIHQ9MCxlPXRoaXMuX2RlZmVycmVkczt0PGUubGVuZ3RoO3QrKyl7dmFyIG49ZVt0XTtSLmNhbGwodGhpcyxuKX10aGlzLl9kZWZlcnJlZHM9W119ZnVuY3Rpb24gRSh0LGUsbixyKXt0aGlzLm9uRnVsZmlsbGVkPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6bnVsbCx0aGlzLm9uUmVqZWN0ZWQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpudWxsLHRoaXMucmVzb2x2ZT1uLHRoaXMucmVqZWN0PXJ9ZnVuY3Rpb24gTCh0LGUsbil7dmFyIHI9ITE7dHJ5e3QoZnVuY3Rpb24odCl7cnx8KHI9ITAsZSh0KSl9LGZ1bmN0aW9uKHQpe3J8fChyPSEwLG4odCkpfSl9Y2F0Y2gobyl7aWYocilyZXR1cm47cj0hMCxuKG8pfX1mdW5jdGlvbiBqKHQpe3ZhciBlPXQuc3JjO3JldHVybigwPT09ZS5pbmRleE9mKCJkYXRhOiIpP2s6ZnVuY3Rpb24gbihyKXtyZXR1cm4gbmV3IFQoZnVuY3Rpb24odCxuKXt2YXIgZT1uZXcgcC5YTUxIdHRwUmVxdWVzdDtlLm9wZW4oIkdFVCIsciwhMCksZS5yZXNwb25zZVR5cGU9ImJsb2IiLGUub25sb2FkPWZ1bmN0aW9uKCl7MjAwPT09dGhpcy5zdGF0dXMmJnQodGhpcy5yZXNwb25zZSl9LGUub25lcnJvcj1mdW5jdGlvbigpe3ZhciB0LGU9dGhpcztuKDA9PT10aGlzLnN0YXR1cz8oKHQ9bmV3IEVycm9yKCJObyBhY2Nlc3MgdG8gZG93bmxvYWQgaW1hZ2UiKSkuY29kZT0xOCx0Lm5hbWU9IlNlY3VyaXR5RXJyb3IiLHQpOm5ldyBFcnJvcigiRXJyb3IgIitlLnN0YXR1cysiIGRvd25sb2FkaW5nIGltYWdlIikpfSxlLnNlbmQoKX0pfSkoZSl9ZnVuY3Rpb24gQyhhKXtyZXR1cm4gbmV3IFQoZnVuY3Rpb24odCxlKXt2YXIgbj1wLlVSTC5jcmVhdGVPYmplY3RVUkwoYSkscj1uZXcgcC5JbWFnZSxvPWZ1bmN0aW9uKCl7ci5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixpKSxyLnJlbW92ZUV2ZW50TGlzdGVuZXIoImVycm9yIix1KX07ZnVuY3Rpb24gaSgpe28oKSx0KHIpfWZ1bmN0aW9uIHUoKXtvKCksZSgiVW5hYmxlIHRvIGxvYWQgZGF0YSBvZiB0eXBlICIrYS50eXBlKyI6ICIrbil9ci5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixpKSxyLmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIix1KSxyLnNyYz1uLHIuY29tcGxldGUmJmkoKX0pfWZ1bmN0aW9uIGsobil7cmV0dXJuIG5ldyBUKGZ1bmN0aW9uKHQsZSl7KGZ1bmN0aW9uIGcodCl7dmFyIGU9dC5zcGxpdCgiLCIpLG49L2RhdGE6KFteO10rKS8uZXhlYyhlWzBdKTtpZighbilyZXR1cm4gdi5ub25lKCk7Zm9yKHZhciByPW5bMV0sbz1lWzFdLGk9cC5hdG9iKG8pLHU9aS5sZW5ndGgsYT1NYXRoLmNlaWwodS8xMDI0KSxjPW5ldyBBcnJheShhKSxzPTA7czxhOysrcyl7Zm9yKHZhciBmPTEwMjQqcyxsPU1hdGgubWluKDEwMjQrZix1KSxkPW5ldyBBcnJheShsLWYpLG09ZixoPTA7bTxsOysraCwrK20pZFtoXT1pW21dLmNoYXJDb2RlQXQoMCk7Y1tzXT1uZXcgVWludDhBcnJheShkKX1yZXR1cm4gdi5zb21lKG5ldyBwLkJsb2IoYyx7dHlwZTpyfSkpfSkobikuZm9sZChmdW5jdGlvbigpe2UoInVyaSBpcyBub3QgYmFzZTY0OiAiK24pfSx0KX0pfWZ1bmN0aW9uIE8odCxyLG8pe3JldHVybiByPXJ8fCJpbWFnZS9wbmciLHAuSFRNTENhbnZhc0VsZW1lbnQucHJvdG90eXBlLnRvQmxvYj9uZXcgVChmdW5jdGlvbihlLG4pe3QudG9CbG9iKGZ1bmN0aW9uKHQpe3Q/ZSh0KTpuKCl9LHIsbyl9KTprKHQudG9EYXRhVVJMKHIsbykpfWZ1bmN0aW9uIFAodCl7cmV0dXJuIEModCkudGhlbihmdW5jdGlvbih0KXshZnVuY3Rpb24gbih0KXtwLlVSTC5yZXZva2VPYmplY3RVUkwodC5zcmMpfSh0KTt2YXIgZT1tKGZ1bmN0aW9uIHIodCl7cmV0dXJuIHQubmF0dXJhbFdpZHRofHx0LndpZHRofSh0KSxmdW5jdGlvbiBvKHQpe3JldHVybiB0Lm5hdHVyYWxIZWlnaHR8fHQuaGVpZ2h0fSh0KSk7cmV0dXJuIGcoZSkuZHJhd0ltYWdlKHQsMCwwKSxlfSl9ZnVuY3Rpb24gUyh0LGUsbil7dmFyIHI9ZS50eXBlO2Z1bmN0aW9uIG8oZSxuKXtyZXR1cm4gdC50aGVuKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbiByKHQsZSxuKXtyZXR1cm4gZT1lfHwiaW1hZ2UvcG5nIix0LnRvRGF0YVVSTChlLG4pfSh0LGUsbil9KX1yZXR1cm57Z2V0VHlwZTpmKHIpLHRvQmxvYjpmdW5jdGlvbiBpKCl7cmV0dXJuIFQucmVzb2x2ZShlKX0sdG9EYXRhVVJMOmYobiksdG9CYXNlNjQ6ZnVuY3Rpb24gdSgpe3JldHVybiBuLnNwbGl0KCIsIilbMV19LHRvQWRqdXN0ZWRCbG9iOmZ1bmN0aW9uIGEoZSxuKXtyZXR1cm4gdC50aGVuKGZ1bmN0aW9uKHQpe3JldHVybiBPKHQsZSxuKX0pfSx0b0FkanVzdGVkRGF0YVVSTDpvLHRvQWRqdXN0ZWRCYXNlNjQ6ZnVuY3Rpb24gYyh0LGUpe3JldHVybiBvKHQsZSkudGhlbihmdW5jdGlvbih0KXtyZXR1cm4gdC5zcGxpdCgiLCIpWzFdfSl9LHRvQ2FudmFzOmZ1bmN0aW9uIHMoKXtyZXR1cm4gdC50aGVuKGgpfX19ZnVuY3Rpb24gTShlKXtyZXR1cm4gZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3IFQoZnVuY3Rpb24odCl7dmFyIGU9bmV3IHAuRmlsZVJlYWRlcjtlLm9ubG9hZGVuZD1mdW5jdGlvbigpe3QoZS5yZXN1bHQpfSxlLnJlYWRBc0RhdGFVUkwobil9KX0oZSkudGhlbihmdW5jdGlvbih0KXtyZXR1cm4gUyhQKGUpLGUsdCl9KX1mdW5jdGlvbiBCKGUsdCl7cmV0dXJuIE8oZSx0KS50aGVuKGZ1bmN0aW9uKHQpe3JldHVybiBTKFQucmVzb2x2ZShlKSx0LGUudG9EYXRhVVJMKCkpfSl9ZnVuY3Rpb24gTihlLG4pe3JldHVybiBlLnRvQ2FudmFzKCkudGhlbihmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24gYSh0LGUsbil7dmFyIHI9bSh0LndpZHRoLHQuaGVpZ2h0KSxvPWcociksaT0wLHU9MDs5MCE9PShuPW48MD8zNjArbjpuKSYmMjcwIT09bnx8eShyLHIuaGVpZ2h0LHIud2lkdGgpOzkwIT09biYmMTgwIT09bnx8KGk9ci53aWR0aCk7MjcwIT09biYmMTgwIT09bnx8KHU9ci5oZWlnaHQpO3JldHVybiBvLnRyYW5zbGF0ZShpLHUpLG8ucm90YXRlKG4qTWF0aC5QSS8xODApLG8uZHJhd0ltYWdlKHQsMCwwKSxCKHIsZSl9KHQsZS5nZXRUeXBlKCksbil9KX1mdW5jdGlvbiBEKGUsbil7cmV0dXJuIGUudG9DYW52YXMoKS50aGVuKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbiBpKHQsZSxuKXt2YXIgcj1tKHQud2lkdGgsdC5oZWlnaHQpLG89ZyhyKTsidiI9PT1uPyhvLnNjYWxlKDEsLTEpLG8uZHJhd0ltYWdlKHQsMCwtci5oZWlnaHQpKTooby5zY2FsZSgtMSwxKSxvLmRyYXdJbWFnZSh0LC1yLndpZHRoLDApKTtyZXR1cm4gQihyLGUpfSh0LGUuZ2V0VHlwZSgpLG4pfSl9dmFyIEY9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgcj0wLG89dC5sZW5ndGg7cjxvO3IrKyl7dmFyIGk9dFtyXTtpZihlKGkscikpcmV0dXJuIHYuc29tZShpKTtpZihuKGkscikpYnJlYWt9cmV0dXJuIHYubm9uZSgpfSh0LGUsaSl9LEg9ZnVuY3Rpb24odCl7cmV0dXJuIE0odCl9LHE9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UudXRpbC5EZWxheSIpLHo9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UudXRpbC5Qcm9taXNlIiksJD10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS51dGlsLlVSSSIpO2Z1bmN0aW9uIEcodCl7dmFyIGUsbjtmdW5jdGlvbiByKHQpe3JldHVybi9eWzAtOVwuXStweCQvLnRlc3QodCl9cmV0dXJuIGU9dC5zdHlsZS53aWR0aCxuPXQuc3R5bGUuaGVpZ2h0LGV8fG4/cihlKSYmcihuKT97dzpwYXJzZUludChlLDEwKSxoOnBhcnNlSW50KG4sMTApfTpudWxsOihlPXQud2lkdGgsbj10LmhlaWdodCxlJiZuP3t3OnBhcnNlSW50KGUsMTApLGg6cGFyc2VJbnQobiwxMCl9Om51bGwpfWZ1bmN0aW9uIEoodCl7cmV0dXJue3c6dC5uYXR1cmFsV2lkdGgsaDp0Lm5hdHVyYWxIZWlnaHR9fXZhciBLPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT09dCYmdCE9PXVuZGVmaW5lZH0sVj1mdW5jdGlvbihlLHIsbyl7cmV0dXJuIG5ldyB6KGZ1bmN0aW9uKHQpe3ZhciBuOyhuPW5ldyBwLlhNTEh0dHBSZXF1ZXN0KS5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXs0PT09bi5yZWFkeVN0YXRlJiZ0KHtzdGF0dXM6bi5zdGF0dXMsYmxvYjp0aGlzLnJlc3BvbnNlfSl9LG4ub3BlbigiR0VUIixlLCEwKSxuLndpdGhDcmVkZW50aWFscz1vLGQuZWFjaChyLGZ1bmN0aW9uKHQsZSl7bi5zZXRSZXF1ZXN0SGVhZGVyKGUsdCl9KSxuLnJlc3BvbnNlVHlwZT0iYmxvYiIsbi5zZW5kKCl9KX0sVz1be2NvZGU6NDA0LG1lc3NhZ2U6IkNvdWxkIG5vdCBmaW5kIEltYWdlIFByb3h5In0se2NvZGU6NDAzLG1lc3NhZ2U6IlJlamVjdGVkIHJlcXVlc3QifSx7Y29kZTowLG1lc3NhZ2U6IkluY29ycmVjdCBJbWFnZSBQcm94eSBVUkwifV0sWD1be3R5cGU6ImtleV9taXNzaW5nIixtZXNzYWdlOiJUaGUgcmVxdWVzdCBkaWQgbm90IGluY2x1ZGUgYW4gYXBpIGtleS4ifSx7dHlwZToia2V5X25vdF9mb3VuZCIsbWVzc2FnZToiVGhlIHByb3ZpZGVkIGFwaSBrZXkgY291bGQgbm90IGJlIGZvdW5kLiJ9LHt0eXBlOiJkb21haW5fbm90X3RydXN0ZWQiLG1lc3NhZ2U6IlRoZSBhcGkga2V5IGlzIG5vdCB2YWxpZCBmb3IgdGhlIHJlcXVlc3Qgb3JpZ2lucy4ifV0sUT1mdW5jdGlvbih0KXt2YXIgZSxuPShlPXQsIkltYWdlUHJveHkgSFRUUCBlcnJvcjogIitGKFcsZnVuY3Rpb24odCl7cmV0dXJuIGU9PT10LmNvZGV9KS5mb2xkKGYoIlVua25vd24gSW1hZ2VQcm94eSBlcnJvciIpLGZ1bmN0aW9uKHQpe3JldHVybiB0Lm1lc3NhZ2V9KSk7cmV0dXJuIHoucmVqZWN0KG4pfSxZPWZ1bmN0aW9uKHQpe3ZhciBlLG4scj1mdW5jdGlvbih0KXt2YXIgZTt0cnl7ZT1KU09OLnBhcnNlKHQpfWNhdGNoKG4pe31yZXR1cm4gZX0odCksbz0oZT1bImVycm9yIiwidHlwZSJdLnJlZHVjZShmdW5jdGlvbih0LGUpe3JldHVybiBLKHQpP3RbZV06dW5kZWZpbmVkfSxyKSxLKGUpP2U6bnVsbCk7cmV0dXJuIkltYWdlUHJveHkgU2VydmljZSBlcnJvcjogIisobz8obj1vLEYoWCxmdW5jdGlvbih0KXtyZXR1cm4gdC50eXBlPT09bn0pLmZvbGQoZigiVW5rbm93biBzZXJ2aWNlIGVycm9yIiksZnVuY3Rpb24odCl7cmV0dXJuIHQubWVzc2FnZX0pKToiSW52YWxpZCBKU09OIGluIHNlcnZpY2UgZXJyb3IgbWVzc2FnZSIpfSxaPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHI9ZSxuZXcgeihmdW5jdGlvbihuKXt2YXIgdD1uZXcgcC5GaWxlUmVhZGVyO3Qub25sb2FkPWZ1bmN0aW9uKHQpe3ZhciBlPXQudGFyZ2V0O24oZS5yZXN1bHQpfSx0LnJlYWRBc1RleHQocil9KS50aGVuKGZ1bmN0aW9uKHQpe3ZhciBlPVkodCk7cmV0dXJuIHoucmVqZWN0KGUpfSk7dmFyIHJ9LHR0PWZ1bmN0aW9uKHQsZSl7dmFyIG4scixvLGk9eyJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9VVRGLTgiLCJ0aW55LWFwaS1rZXkiOmV9O3JldHVybiBWKChyPWUsbz0tMT09PShuPXQpLmluZGV4T2YoIj8iKT8iPyI6IiYiLC9bPyZdYXBpS2V5PS8udGVzdChuKXx8IXI/bjpuK28rImFwaUtleT0iK2VuY29kZVVSSUNvbXBvbmVudChyKSksaSwhMSkudGhlbihmdW5jdGlvbih0KXtyZXR1cm4gdC5zdGF0dXM8MjAwfHwzMDA8PXQuc3RhdHVzPyhlPXQuc3RhdHVzLG49dC5ibG9iLDQwMD09PShyPWUpfHw0MDM9PT1yfHw1MDA9PT1yP1ooMCxuKTpRKGUpKTp6LnJlc29sdmUodC5ibG9iKTt2YXIgZSxuLHJ9KX07dmFyIGV0PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gZT90dCh0LGUpOmZ1bmN0aW9uIHIodCxlKXtyZXR1cm4gVih0LHt9LGUpLnRoZW4oZnVuY3Rpb24odCl7cmV0dXJuIHQuc3RhdHVzPDIwMHx8MzAwPD10LnN0YXR1cz9RKHQuc3RhdHVzKTp6LnJlc29sdmUodC5ibG9iKX0pfSh0LG4pfSxudD1mdW5jdGlvbih0KXtpZihudWxsPT09dHx8dD09PXVuZGVmaW5lZCl0aHJvdyBuZXcgRXJyb3IoIk5vZGUgY2Fubm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7cmV0dXJue2RvbTpmKHQpfX0scnQ9e2Zyb21IdG1sOmZ1bmN0aW9uKHQsZSl7dmFyIG49KGV8fHAuZG9jdW1lbnQpLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2lmKG4uaW5uZXJIVE1MPXQsIW4uaGFzQ2hpbGROb2RlcygpfHwxPG4uY2hpbGROb2Rlcy5sZW5ndGgpdGhyb3cgcC5jb25zb2xlLmVycm9yKCJIVE1MIGRvZXMgbm90IGhhdmUgYSBzaW5nbGUgcm9vdCBub2RlIix0KSxuZXcgRXJyb3IoIkhUTUwgbXVzdCBoYXZlIGEgc2luZ2xlIHJvb3Qgbm9kZSIpO3JldHVybiBudChuLmNoaWxkTm9kZXNbMF0pfSxmcm9tVGFnOmZ1bmN0aW9uKHQsZSl7dmFyIG49KGV8fHAuZG9jdW1lbnQpLmNyZWF0ZUVsZW1lbnQodCk7cmV0dXJuIG50KG4pfSxmcm9tVGV4dDpmdW5jdGlvbih0LGUpe3ZhciBuPShlfHxwLmRvY3VtZW50KS5jcmVhdGVUZXh0Tm9kZSh0KTtyZXR1cm4gbnQobil9LGZyb21Eb206bnQsZnJvbVBvaW50OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj10LmRvbSgpO3JldHVybiB2LmZyb20oci5lbGVtZW50RnJvbVBvaW50KGUsbikpLm1hcChudCl9fSxvdD0oInVuZGVmaW5lZCIhPXR5cGVvZiBwLndpbmRvdz9wLndpbmRvdzpGdW5jdGlvbigicmV0dXJuIHRoaXM7IikoKSxmdW5jdGlvbih0LGUpe3JldHVybiBuPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbih0LGUpe3ZhciBuPXQuZG9tKCk7aWYoMSE9PW4ubm9kZVR5cGUpcmV0dXJuITE7dmFyIHI9bjtpZihyLm1hdGNoZXMhPT11bmRlZmluZWQpcmV0dXJuIHIubWF0Y2hlcyhlKTtpZihyLm1zTWF0Y2hlc1NlbGVjdG9yIT09dW5kZWZpbmVkKXJldHVybiByLm1zTWF0Y2hlc1NlbGVjdG9yKGUpO2lmKHIud2Via2l0TWF0Y2hlc1NlbGVjdG9yIT09dW5kZWZpbmVkKXJldHVybiByLndlYmtpdE1hdGNoZXNTZWxlY3RvcihlKTtpZihyLm1vek1hdGNoZXNTZWxlY3RvciE9PXVuZGVmaW5lZClyZXR1cm4gci5tb3pNYXRjaGVzU2VsZWN0b3IoZSk7dGhyb3cgbmV3IEVycm9yKCJCcm93c2VyIGxhY2tzIG5hdGl2ZSBzZWxlY3RvcnMiKX0odCxlKX0sRih0LmRvbSgpLmNoaWxkTm9kZXMsZnVuY3Rpb24odCl7cmV0dXJuIG4ocnQuZnJvbURvbSh0KSl9KS5tYXAocnQuZnJvbURvbSk7dmFyIG59KSxpdD0wLHV0PWZ1bmN0aW9uKHQpe3JldHVybiBvdChydC5mcm9tRG9tKHQpLCJpbWciKX0sYXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5kb20uaXMoZSwiZmlndXJlIil9LGN0PWZ1bmN0aW9uKG4sdCl7dmFyIGU9ZnVuY3Rpb24odCl7cmV0dXJuIGU9dCxuLmRvbS5pcyhlLCJpbWc6bm90KFtkYXRhLW1jZS1vYmplY3RdLFtkYXRhLW1jZS1wbGFjZWhvbGRlcl0pIikmJihsdChuLHQpfHxkdChuLHQpfHxuLnNldHRpbmdzLmltYWdldG9vbHNfcHJveHkpO3ZhciBlfTtyZXR1cm4gYXQobix0KT91dCh0KS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIGUodC5kb20oKSk/di5zb21lKHQuZG9tKCkpOnYubm9uZSgpfSk6ZSh0KT92LnNvbWUodCk6di5ub25lKCl9LHN0PWZ1bmN0aW9uKHQsZSl7dC5ub3RpZmljYXRpb25NYW5hZ2VyLm9wZW4oe3RleHQ6ZSx0eXBlOiJlcnJvciJ9KX0sZnQ9ZnVuY3Rpb24odCl7dmFyIGU9dC5zZWxlY3Rpb24uZ2V0Tm9kZSgpO3JldHVybiBhdCh0LGUpP3V0KGUpOnYuc29tZShydC5mcm9tRG9tKGUpKX0sbHQ9ZnVuY3Rpb24odCxlKXt2YXIgbj1lLnNyYztyZXR1cm4gMD09PW4uaW5kZXhPZigiZGF0YToiKXx8MD09PW4uaW5kZXhPZigiYmxvYjoiKXx8bmV3ICQobikuaG9zdD09PXQuZG9jdW1lbnRCYXNlVVJJLmhvc3R9LGR0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuLTEhPT1kLmluQXJyYXkodC5nZXRQYXJhbSgiaW1hZ2V0b29sc19jb3JzX2hvc3RzIixbXSwic3RyaW5nW10iKSxuZXcgJChlLnNyYykuaG9zdCl9LG10PWZ1bmN0aW9uKHQsZSl7dmFyIG4scixvLGksdT1lLnNyYztyZXR1cm4gZHQodCxlKT9ldChlLnNyYyxudWxsLChyPXQsbz1lLC0xIT09ZC5pbkFycmF5KHIuZ2V0UGFyYW0oImltYWdldG9vbHNfY3JlZGVudGlhbHNfaG9zdHMiLFtdLCJzdHJpbmdbXSIpLG5ldyAkKG8uc3JjKS5ob3N0KSkpOmx0KHQsZSk/aihlKToodT10LmdldFBhcmFtKCJpbWFnZXRvb2xzX3Byb3h5IiksdSs9KC0xPT09dS5pbmRleE9mKCI/Iik/Ij8iOiImIikrInVybD0iK2VuY29kZVVSSUNvbXBvbmVudChlLnNyYyksbj0oaT10KS5nZXRQYXJhbSgiYXBpX2tleSIsaS5nZXRQYXJhbSgiaW1hZ2V0b29sc19hcGlfa2V5IiwiIiwic3RyaW5nIiksInN0cmluZyIpLGV0KHUsbiwhMSkpfSxodD1mdW5jdGlvbih0LGUpe3JldHVybiBuPXQsdi5mcm9tKG4uZ2V0UGFyYW0oImltYWdldG9vbHNfZmV0Y2hfaW1hZ2UiLG51bGwsImZ1bmN0aW9uIikpLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm4gbXQodCxlKX0sZnVuY3Rpb24odCl7cmV0dXJuIHQoZSl9KTt2YXIgbn0sZ3Q9ZnVuY3Rpb24odCxlKXt2YXIgbjtyZXR1cm4obj10LmVkaXRvclVwbG9hZC5ibG9iQ2FjaGUuZ2V0QnlVcmkoZS5zcmMpKT96LnJlc29sdmUobi5ibG9iKCkpOmh0KHQsZSl9LHB0PWZ1bmN0aW9uKHQpe3EuY2xlYXJUaW1lb3V0KHQuZ2V0KCkpfSx2dD1mdW5jdGlvbihhLGMscyxmLGwsZCl7cmV0dXJuIGMudG9CbG9iKCkudGhlbihmdW5jdGlvbih0KXt2YXIgZSxuLHIsbyxpLHU7cmV0dXJuIHI9YS5lZGl0b3JVcGxvYWQuYmxvYkNhY2hlLGU9bC5zcmMsYS5nZXRQYXJhbSgiaW1hZ2VzX3JldXNlX2ZpbGVuYW1lIiwhMSwiYm9vbGVhbiIpJiYobj0obz1yLmdldEJ5VXJpKGUpKT8oZT1vLnVyaSgpLG8ubmFtZSgpKTooaT1hLCh1PWUubWF0Y2goL1wvKFteXC9cP10rKT9cLig/OmpwZWd8anBnfHBuZ3xnaWYpKD86XD98JCkvaSkpP2kuZG9tLmVuY29kZSh1WzFdKTpudWxsKSksbz1yLmNyZWF0ZSh7aWQ6ImltYWdldG9vbHMiK2l0KyssYmxvYjp0LGJhc2U2NDpjLnRvQmFzZTY0KCksdXJpOmUsbmFtZTpufSksci5hZGQobyksYS51bmRvTWFuYWdlci50cmFuc2FjdChmdW5jdGlvbigpe2EuJChsKS5vbigibG9hZCIsZnVuY3Rpb24gcigpe3ZhciB0LGUsbjthLiQobCkub2ZmKCJsb2FkIixyKSxhLm5vZGVDaGFuZ2VkKCkscz9hLmVkaXRvclVwbG9hZC51cGxvYWRJbWFnZXNBdXRvKCk6KHB0KGYpLHQ9YSxlPWYsbj1xLnNldEVkaXRvclRpbWVvdXQodCxmdW5jdGlvbigpe3QuZWRpdG9yVXBsb2FkLnVwbG9hZEltYWdlc0F1dG8oKX0sdC5nZXRQYXJhbSgiaW1hZ2VzX3VwbG9hZF90aW1lb3V0IiwzZTQsIm51bWJlciIpKSxlLnNldChuKSl9KSxkJiZhLiQobCkuYXR0cih7d2lkdGg6ZC53LGhlaWdodDpkLmh9KSxhLiQobCkuYXR0cih7c3JjOm8uYmxvYlVyaSgpfSkucmVtb3ZlQXR0cigiZGF0YS1tY2Utc3JjIil9KSxvfSl9LHl0PWZ1bmN0aW9uKG4scix0LG8pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBmdChuKS5mb2xkKGZ1bmN0aW9uKCl7c3QobiwiQ291bGQgbm90IGZpbmQgc2VsZWN0ZWQgaW1hZ2UiKX0sZnVuY3Rpb24oZSl7cmV0dXJuIG4uX3NjYW5Gb3JJbWFnZXMoKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIGd0KG4sZS5kb20oKSl9KS50aGVuKEgpLnRoZW4odCkudGhlbihmdW5jdGlvbih0KXtyZXR1cm4gdnQobix0LCExLHIsZS5kb20oKSxvKX0sZnVuY3Rpb24odCl7c3Qobix0KX0pfSl9fSx3dD1mdW5jdGlvbihlLG4scil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9ZnQoZSkuZm9sZChmdW5jdGlvbigpe3JldHVybiBudWxsfSxmdW5jdGlvbih0KXt2YXIgZT1HKHQuZG9tKCkpO3JldHVybiBlP3t3OmUuaCxoOmUud306bnVsbH0pO3JldHVybiB5dChlLG4sZnVuY3Rpb24odCl7cmV0dXJuIE4odCxyKX0sdCkoKX19LGJ0PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4geXQodCxlLGZ1bmN0aW9uKHQpe3JldHVybiBEKHQsbil9KSgpfX0sSXQ9ZnVuY3Rpb24oZSxuLHIsaSx1KXtyZXR1cm4gQyh1KS50aGVuKGZ1bmN0aW9uKHQpe3ZhciBlPUoodCk7cmV0dXJuIGkudz09PWUudyYmaS5oPT09ZS5ofHxHKHIpJiZmdW5jdGlvbiBvKHQsZSl7dmFyIG4scjtlJiYobj10LnN0eWxlLndpZHRoLHI9dC5zdHlsZS5oZWlnaHQsKG58fHIpJiYodC5zdHlsZS53aWR0aD1lLncrInB4Iix0LnN0eWxlLmhlaWdodD1lLmgrInB4Iix0LnJlbW92ZUF0dHJpYnV0ZSgiZGF0YS1tY2Utc3R5bGUiKSksbj10LndpZHRoLHI9dC5oZWlnaHQsKG58fHIpJiYodC5zZXRBdHRyaWJ1dGUoIndpZHRoIixlLncpLHQuc2V0QXR0cmlidXRlKCJoZWlnaHQiLGUuaCkpKX0ocixlKSxwLlVSTC5yZXZva2VPYmplY3RVUkwodC5zcmMpLHV9KS50aGVuKEgpLnRoZW4oZnVuY3Rpb24odCl7cmV0dXJuIHZ0KGUsdCwhMCxuLHIpfSxmdW5jdGlvbigpe30pfSxUdD1mdW5jdGlvbihpLHUpe3JldHVybiBmdW5jdGlvbigpe3ZhciByPWZ0KGkpLG89ci5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIEoodC5kb20oKSl9KTtmdChpKS5lYWNoKGZ1bmN0aW9uKGUpe2N0KGksZS5kb20oKSkuZWFjaChmdW5jdGlvbih0KXtndChpLGUuZG9tKCkpLnRoZW4oZnVuY3Rpb24odCl7dmFyIGUsbj17YmxvYjplPXQsdXJsOnAuVVJMLmNyZWF0ZU9iamVjdFVSTChlKX07aS53aW5kb3dNYW5hZ2VyLm9wZW4oe3RpdGxlOiJFZGl0IEltYWdlIixzaXplOiJsYXJnZSIsYm9keTp7dHlwZToicGFuZWwiLGl0ZW1zOlt7dHlwZToiaW1hZ2V0b29scyIsbmFtZToiaW1hZ2V0b29scyIsbGFiZWw6IkVkaXQgSW1hZ2UiLGN1cnJlbnRTdGF0ZTpufV19LGJ1dHRvbnM6W3t0eXBlOiJjYW5jZWwiLG5hbWU6ImNhbmNlbCIsdGV4dDoiQ2FuY2VsIn0se3R5cGU6InN1Ym1pdCIsbmFtZToic2F2ZSIsdGV4dDoiU2F2ZSIscHJpbWFyeTohMCxkaXNhYmxlZDohMH1dLG9uU3VibWl0OmZ1bmN0aW9uKHQpe3ZhciBuPXQuZ2V0RGF0YSgpLmltYWdldG9vbHMuYmxvYjtyLmVhY2goZnVuY3Rpb24oZSl7by5lYWNoKGZ1bmN0aW9uKHQpe0l0KGksdSxlLmRvbSgpLHQsbil9KX0pLHQuY2xvc2UoKX0sb25DYW5jZWw6ZnVuY3Rpb24oKXt9LG9uQWN0aW9uOmZ1bmN0aW9uKHQsZSl7c3dpdGNoKGUubmFtZSl7Y2FzZSJzYXZlLXN0YXRlIjplLnZhbHVlP3QuZW5hYmxlKCJzYXZlIik6dC5kaXNhYmxlKCJzYXZlIik7YnJlYWs7Y2FzZSJkaXNhYmxlIjp0LmRpc2FibGUoInNhdmUiKSx0LmRpc2FibGUoImNhbmNlbCIpO2JyZWFrO2Nhc2UiZW5hYmxlIjp0LmVuYWJsZSgiY2FuY2VsIil9fX0pfSl9KX0pfX07IWZ1bmN0aW9uIF90KCl7ci5hZGQoImltYWdldG9vbHMiLGZ1bmN0aW9uKHQpe3ZhciBuLGUscixvLGksdSxhLGMscz1sKDApLGY9bChudWxsKTtuPXQsZT1zLGQuZWFjaCh7bWNlSW1hZ2VSb3RhdGVMZWZ0Ond0KG4sZSwtOTApLG1jZUltYWdlUm90YXRlUmlnaHQ6d3QobixlLDkwKSxtY2VJbWFnZUZsaXBWZXJ0aWNhbDpidChuLGUsInYiKSxtY2VJbWFnZUZsaXBIb3Jpem9udGFsOmJ0KG4sZSwiaCIpLG1jZUVkaXRJbWFnZTpUdChuLGUpfSxmdW5jdGlvbih0LGUpe24uYWRkQ29tbWFuZChlLHQpfSksbz1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gci5leGVjQ29tbWFuZCh0KX19LChyPXQpLnVpLnJlZ2lzdHJ5LmFkZEJ1dHRvbigicm90YXRlbGVmdCIse3Rvb2x0aXA6IlJvdGF0ZSBjb3VudGVyY2xvY2t3aXNlIixpY29uOiJyb3RhdGUtbGVmdCIsb25BY3Rpb246bygibWNlSW1hZ2VSb3RhdGVMZWZ0Iil9KSxyLnVpLnJlZ2lzdHJ5LmFkZEJ1dHRvbigicm90YXRlcmlnaHQiLHt0b29sdGlwOiJSb3RhdGUgY2xvY2t3aXNlIixpY29uOiJyb3RhdGUtcmlnaHQiLG9uQWN0aW9uOm8oIm1jZUltYWdlUm90YXRlUmlnaHQiKX0pLHIudWkucmVnaXN0cnkuYWRkQnV0dG9uKCJmbGlwdiIse3Rvb2x0aXA6IkZsaXAgdmVydGljYWxseSIsaWNvbjoiZmxpcC12ZXJ0aWNhbGx5IixvbkFjdGlvbjpvKCJtY2VJbWFnZUZsaXBWZXJ0aWNhbCIpfSksci51aS5yZWdpc3RyeS5hZGRCdXR0b24oImZsaXBoIix7dG9vbHRpcDoiRmxpcCBob3Jpem9udGFsbHkiLGljb246ImZsaXAtaG9yaXpvbnRhbGx5IixvbkFjdGlvbjpvKCJtY2VJbWFnZUZsaXBIb3Jpem9udGFsIil9KSxyLnVpLnJlZ2lzdHJ5LmFkZEJ1dHRvbigiZWRpdGltYWdlIix7dG9vbHRpcDoiRWRpdCBpbWFnZSIsaWNvbjoiZWRpdC1pbWFnZSIsb25BY3Rpb246bygibWNlRWRpdEltYWdlIiksb25TZXR1cDpmdW5jdGlvbihuKXt2YXIgdD1mdW5jdGlvbigpe2Z0KHIpLmVhY2goZnVuY3Rpb24odCl7dmFyIGU9Y3Qocix0LmRvbSgpKS5pc05vbmUoKTtuLnNldERpc2FibGVkKGUpfSl9O3JldHVybiByLm9uKCJOb2RlQ2hhbmdlIix0KSxmdW5jdGlvbigpe3Iub2ZmKCJOb2RlQ2hhbmdlIix0KX19fSksci51aS5yZWdpc3RyeS5hZGRCdXR0b24oImltYWdlb3B0aW9ucyIse3Rvb2x0aXA6IkltYWdlIG9wdGlvbnMiLGljb246ImltYWdlLW9wdGlvbnMiLG9uQWN0aW9uOm8oIm1jZUltYWdlIil9KSxyLnVpLnJlZ2lzdHJ5LmFkZENvbnRleHRNZW51KCJpbWFnZXRvb2xzIix7dXBkYXRlOmZ1bmN0aW9uKHQpe3JldHVybiBjdChyLHQpLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm5bXX0sZnVuY3Rpb24odCl7cmV0dXJuW3t0ZXh0OiJFZGl0IGltYWdlIixpY29uOiJlZGl0LWltYWdlIixvbkFjdGlvbjpvKCJtY2VFZGl0SW1hZ2UiKX1dfSl9fSksKGk9dCkudWkucmVnaXN0cnkuYWRkQ29udGV4dFRvb2xiYXIoImltYWdldG9vbHMiLHtpdGVtczppLmdldFBhcmFtKCJpbWFnZXRvb2xzX3Rvb2xiYXIiLCJyb3RhdGVsZWZ0IHJvdGF0ZXJpZ2h0IGZsaXB2IGZsaXBoIGVkaXRpbWFnZSBpbWFnZW9wdGlvbnMiKSxwcmVkaWNhdGU6ZnVuY3Rpb24odCl7cmV0dXJuIGN0KGksdCkuaXNTb21lKCl9LHBvc2l0aW9uOiJub2RlIixzY29wZToibm9kZSJ9KSxhPXMsYz1mLCh1PXQpLm9uKCJOb2RlQ2hhbmdlIixmdW5jdGlvbih0KXt2YXIgZT1jLmdldCgpO2UmJmUuc3JjIT09dC5lbGVtZW50LnNyYyYmKHB0KGEpLHUuZWRpdG9yVXBsb2FkLnVwbG9hZEltYWdlc0F1dG8oKSxjLnNldChudWxsKSksY3QodSx0LmVsZW1lbnQpLmVhY2goYy5zZXQpfSl9KX0oKX0od2luZG93KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/importcss/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/importcss/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIG4sdD10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS5QbHVnaW5NYW5hZ2VyIiksZz10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS5kb20uRE9NVXRpbHMiKSxmPXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLkVkaXRvck1hbmFnZXIiKSxtPXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLkVudiIpLGg9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UudXRpbC5Ub29scyIpLGQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0UGFyYW0oImltcG9ydGNzc19zZWxlY3Rvcl9jb252ZXJ0ZXIiKX0saT0obj0iYXJyYXkiLGZ1bmN0aW9uKHQpe3JldHVybiByPXR5cGVvZihlPXQpLChudWxsPT09ZT8ibnVsbCI6Im9iamVjdCI9PXImJihBcnJheS5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihlKXx8ZS5jb25zdHJ1Y3RvciYmIkFycmF5Ij09PWUuY29uc3RydWN0b3IubmFtZSk/ImFycmF5Ijoib2JqZWN0Ij09ciYmKFN0cmluZy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihlKXx8ZS5jb25zdHJ1Y3RvciYmIlN0cmluZyI9PT1lLmNvbnN0cnVjdG9yLm5hbWUpPyJzdHJpbmciOnIpPT09bjt2YXIgZSxyfSksbz1BcnJheS5wcm90b3R5cGUucHVzaCxsPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1bXSxyPTAsbj10Lmxlbmd0aDtyPG47KytyKXtpZighaSh0W3JdKSl0aHJvdyBuZXcgRXJyb3IoIkFyci5mbGF0dGVuIGl0ZW0gIityKyIgd2FzIG5vdCBhbiBhcnJheSwgaW5wdXQ6ICIrdCk7by5hcHBseShlLHRbcl0pfXJldHVybiBlfShmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj10Lmxlbmd0aCxuPW5ldyBBcnJheShyKSxpPTA7aTxyO2krKyl7dmFyIG89dFtpXTtuW2ldPWUobyxpKX1yZXR1cm4gbn0odCxlKSl9LHA9ZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP2Z1bmN0aW9uKHQpe3JldHVybi0xIT09dC5pbmRleE9mKGUpfTplIGluc3RhbmNlb2YgUmVnRXhwP2Z1bmN0aW9uKHQpe3JldHVybiBlLnRlc3QodCl9OmV9LF89ZnVuY3Rpb24oYyx0LGEpe3ZhciB1PVtdLHI9e307ZnVuY3Rpb24gbCh0LGUpe3ZhciByLG4saSxvPXQuaHJlZjtpZihuPW8saT1tLmNhY2hlU3VmZml4LCJzdHJpbmciPT10eXBlb2YgbiYmKG49bi5yZXBsYWNlKCI/IitpLCIiKS5yZXBsYWNlKCImIitpLCIiKSksKG89bikmJmEobyxlKSYmIWZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5zZXR0aW5ncyxuPSExIT09ci5za2luJiYoci5za2lufHwib3hpZGUiKTtpZihuKXt2YXIgaT1yLnNraW5fdXJsP3QuZG9jdW1lbnRCYXNlVVJJLnRvQWJzb2x1dGUoci5za2luX3VybCk6Zi5iYXNlVVJMKyIvc2tpbnMvdWkvIituLG89Zi5iYXNlVVJMKyIvc2tpbnMvY29udGVudC8iO3JldHVybiBlPT09aSsiL2NvbnRlbnQiKyh0LmlubGluZT8iLmlubGluZSI6IiIpKyIubWluLmNzcyJ8fC0xIT09ZS5pbmRleE9mKG8pfXJldHVybiExfShjLG8pKXtoLmVhY2godC5pbXBvcnRzLGZ1bmN0aW9uKHQpe2wodCwhMCl9KTt0cnl7cj10LmNzc1J1bGVzfHx0LnJ1bGVzfWNhdGNoKHMpe31oLmVhY2gocixmdW5jdGlvbih0KXt0LnN0eWxlU2hlZXQ/bCh0LnN0eWxlU2hlZXQsITApOnQuc2VsZWN0b3JUZXh0JiZoLmVhY2godC5zZWxlY3RvclRleHQuc3BsaXQoIiwiKSxmdW5jdGlvbih0KXt1LnB1c2goaC50cmltKHQpKX0pfSl9fWguZWFjaChjLmNvbnRlbnRDU1MsZnVuY3Rpb24odCl7clt0XT0hMH0pLGE9YXx8ZnVuY3Rpb24odCxlKXtyZXR1cm4gZXx8clt0XX07dHJ5e2guZWFjaCh0LnN0eWxlU2hlZXRzLGZ1bmN0aW9uKHQpe2wodCl9KX1jYXRjaChlKXt9cmV0dXJuIHV9LHg9ZnVuY3Rpb24odCxlKXt2YXIgcixuPS9eKD86KFthLXowLTlcLV9dKykpPyhcLlthLXowLTlfXC1cLl0rKSQvaS5leGVjKGUpO2lmKG4pe3ZhciBpPW5bMV0sbz1uWzJdLnN1YnN0cigxKS5zcGxpdCgiLiIpLmpvaW4oIiAiKSxzPWgubWFrZU1hcCgiYSxpbWciKTtyZXR1cm4gblsxXT8ocj17dGl0bGU6ZX0sdC5zY2hlbWEuZ2V0VGV4dEJsb2NrRWxlbWVudHMoKVtpXT9yLmJsb2NrPWk6dC5zY2hlbWEuZ2V0QmxvY2tFbGVtZW50cygpW2ldfHxzW2kudG9Mb3dlckNhc2UoKV0/ci5zZWxlY3Rvcj1pOnIuaW5saW5lPWkpOm5bMl0mJihyPXtpbmxpbmU6InNwYW4iLHRpdGxlOmUuc3Vic3RyKDEpLGNsYXNzZXM6b30pLCExIT09dC5nZXRQYXJhbSgiaW1wb3J0Y3NzX21lcmdlX2NsYXNzZXMiKT9yLmNsYXNzZXM9bzpyLmF0dHJpYnV0ZXM9eyJjbGFzcyI6b30scn19LFQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09PWV8fCExIT09dC5nZXRQYXJhbSgiaW1wb3J0Y3NzX2V4Y2x1c2l2ZSIpfSxyPWZ1bmN0aW9uKHkpe3kub24oImluaXQiLGZ1bmN0aW9uKHQpe3ZhciBlLHIsbixpLG89KGU9W10scj1bXSxuPXt9LHthZGRJdGVtVG9Hcm91cDpmdW5jdGlvbih0LGUpe25bdF0/blt0XS5wdXNoKGUpOihyLnB1c2godCksblt0XT1bZV0pfSxhZGRJdGVtOmZ1bmN0aW9uKHQpe2UucHVzaCh0KX0sdG9Gb3JtYXRzOmZ1bmN0aW9uKCl7cmV0dXJuIGwocixmdW5jdGlvbih0KXt2YXIgZT1uW3RdO3JldHVybiAwPT09ZS5sZW5ndGg/W106W3t0aXRsZTp0LGl0ZW1zOmV9XX0pLmNvbmNhdChlKX19KSx2PXt9LHM9cCh5LmdldFBhcmFtKCJpbXBvcnRjc3Nfc2VsZWN0b3JfZmlsdGVyIikpLGM9KGk9eS5nZXRQYXJhbSgiaW1wb3J0Y3NzX2dyb3VwcyIpLGgubWFwKGksZnVuY3Rpb24odCl7cmV0dXJuIGguZXh0ZW5kKHt9LHQse29yaWdpbmFsOnQsc2VsZWN0b3JzOnt9LGZpbHRlcjpwKHQuZmlsdGVyKSxpdGVtOnt0ZXh0OnQudGl0bGUsbWVudTpbXX19KX0pKSxhPWZ1bmN0aW9uKHQsZSl7aWYoZj10LHA9diwhKFQoeSxtPWUpP2YgaW4gcDpmIGluIG0uc2VsZWN0b3JzKSl7YT10LGw9dixUKHksdT1lKT9sW2FdPSEwOnUuc2VsZWN0b3JzW2FdPSEwO3ZhciByPShvPShpPXkpLnBsdWdpbnMuaW1wb3J0Y3NzLHM9dCwoKGM9ZSkmJmMuc2VsZWN0b3JfY29udmVydGVyP2Muc2VsZWN0b3JfY29udmVydGVyOmQoaSk/ZChpKTpmdW5jdGlvbigpe3JldHVybiB4KGkscyl9KS5jYWxsKG8scyxjKSk7aWYocil7dmFyIG49ci5uYW1lfHxnLkRPTS51bmlxdWVJZCgpO3JldHVybiB5LmZvcm1hdHRlci5yZWdpc3RlcihuLHIpLGguZXh0ZW5kKHt9LHt0aXRsZTpyLnRpdGxlLGZvcm1hdDpufSl9fXZhciBpLG8scyxjLGEsdSxsLGYsbSxwO3JldHVybiBudWxsfTtoLmVhY2goXyh5LHkuZ2V0RG9jKCkscCh5LmdldFBhcmFtKCJpbXBvcnRjc3NfZmlsZV9maWx0ZXIiKSkpLGZ1bmN0aW9uKHIpe2lmKC0xPT09ci5pbmRleE9mKCIubWNlLSIpJiYoIXN8fHMocikpKXt2YXIgdD0obj1jLGk9cixoLmdyZXAobixmdW5jdGlvbih0KXtyZXR1cm4hdC5maWx0ZXJ8fHQuZmlsdGVyKGkpfSkpO2lmKDA8dC5sZW5ndGgpaC5lYWNoKHQsZnVuY3Rpb24odCl7dmFyIGU9YShyLHQpO2UmJm8uYWRkSXRlbVRvR3JvdXAodC50aXRsZSxlKX0pO2Vsc2V7dmFyIGU9YShyLG51bGwpO2UmJm8uYWRkSXRlbShlKX19dmFyIG4saX0pO3ZhciB1PW8udG9Gb3JtYXRzKCk7eS5maXJlKCJhZGRTdHlsZU1vZGlmaWNhdGlvbnMiLHtpdGVtczp1LHJlcGxhY2U6IXkuZ2V0UGFyYW0oImltcG9ydGNzc19hcHBlbmQiKX0pfSl9OyFmdW5jdGlvbiBlKCl7dC5hZGQoImltcG9ydGNzcyIsZnVuY3Rpb24odCl7cmV0dXJuIHIodCksZT10LHtjb252ZXJ0U2VsZWN0b3JUb0Zvcm1hdDpmdW5jdGlvbih0KXtyZXR1cm4geChlLHQpfX07dmFyIGV9KX0oKX0oKTs=]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/insertdatetime/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/insertdatetime/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIGU9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuUGx1Z2luTWFuYWdlciIpLHU9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0UGFyYW0oImluc2VydGRhdGV0aW1lX3RpbWVmb3JtYXQiLGUudHJhbnNsYXRlKCIlSDolTTolUyIpKX0sYz1mdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRQYXJhbSgiaW5zZXJ0ZGF0ZXRpbWVfZm9ybWF0cyIsWyIlSDolTTolUyIsIiVZLSVtLSVkIiwiJUk6JU06JVMgJXAiLCIlRCJdKX0scj0iU3VuIE1vbiBUdWUgV2VkIFRodSBGcmkgU2F0IFN1biIuc3BsaXQoIiAiKSxhPSJTdW5kYXkgTW9uZGF5IFR1ZXNkYXkgV2VkbmVzZGF5IFRodXJzZGF5IEZyaWRheSBTYXR1cmRheSBTdW5kYXkiLnNwbGl0KCIgIiksaT0iSmFuIEZlYiBNYXIgQXByIE1heSBKdW4gSnVsIEF1ZyBTZXAgT2N0IE5vdiBEZWMiLnNwbGl0KCIgIiksbz0iSmFudWFyeSBGZWJydWFyeSBNYXJjaCBBcHJpbCBNYXkgSnVuZSBKdWx5IEF1Z3VzdCBTZXB0ZW1iZXIgT2N0b2JlciBOb3ZlbWJlciBEZWNlbWJlciIuc3BsaXQoIiAiKSxtPWZ1bmN0aW9uKGUsdCl7aWYoKGU9IiIrZSkubGVuZ3RoPHQpZm9yKHZhciBuPTA7bjx0LWUubGVuZ3RoO24rKyllPSIwIitlO3JldHVybiBlfSxzPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbj1ufHxuZXcgRGF0ZSx0PSh0PSh0PSh0PSh0PSh0PSh0PSh0PSh0PSh0PSh0PSh0PSh0PSh0PSh0PSh0PXQucmVwbGFjZSgiJUQiLCIlbS8lZC8lWSIpKS5yZXBsYWNlKCIlciIsIiVJOiVNOiVTICVwIikpLnJlcGxhY2UoIiVZIiwiIituLmdldEZ1bGxZZWFyKCkpKS5yZXBsYWNlKCIleSIsIiIrbi5nZXRZZWFyKCkpKS5yZXBsYWNlKCIlbSIsbShuLmdldE1vbnRoKCkrMSwyKSkpLnJlcGxhY2UoIiVkIixtKG4uZ2V0RGF0ZSgpLDIpKSkucmVwbGFjZSgiJUgiLCIiK20obi5nZXRIb3VycygpLDIpKSkucmVwbGFjZSgiJU0iLCIiK20obi5nZXRNaW51dGVzKCksMikpKS5yZXBsYWNlKCIlUyIsIiIrbShuLmdldFNlY29uZHMoKSwyKSkpLnJlcGxhY2UoIiVJIiwiIisoKG4uZ2V0SG91cnMoKSsxMSklMTIrMSkpKS5yZXBsYWNlKCIlcCIsbi5nZXRIb3VycygpPDEyPyJBTSI6IlBNIikpLnJlcGxhY2UoIiVCIiwiIitlLnRyYW5zbGF0ZShvW24uZ2V0TW9udGgoKV0pKSkucmVwbGFjZSgiJWIiLCIiK2UudHJhbnNsYXRlKGlbbi5nZXRNb250aCgpXSkpKS5yZXBsYWNlKCIlQSIsIiIrZS50cmFuc2xhdGUoYVtuLmdldERheSgpXSkpKS5yZXBsYWNlKCIlYSIsIiIrZS50cmFuc2xhdGUocltuLmdldERheSgpXSkpKS5yZXBsYWNlKCIlJSIsIiUiKX0sbD1mdW5jdGlvbihlLHQpe2lmKGUuZ2V0UGFyYW0oImluc2VydGRhdGV0aW1lX2VsZW1lbnQiLCExKSl7dmFyIG49cyhlLHQpLHI9dm9pZCAwO3I9LyVbSE1TSXBdLy50ZXN0KHQpP3MoZSwiJVktJW0tJWRUJUg6JU0iKTpzKGUsIiVZLSVtLSVkIik7dmFyIGE9ZS5kb20uZ2V0UGFyZW50KGUuc2VsZWN0aW9uLmdldFN0YXJ0KCksInRpbWUiKTthPyhvPWEsdT1yLGM9bixtPShpPWUpLmRvbS5jcmVhdGUoInRpbWUiLHtkYXRldGltZTp1fSxjKSxvLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG0sbyksaS5kb20ucmVtb3ZlKG8pLGkuc2VsZWN0aW9uLnNlbGVjdChtLCEwKSxpLnNlbGVjdGlvbi5jb2xsYXBzZSghMSkpOmUuaW5zZXJ0Q29udGVudCgnPHRpbWUgZGF0ZXRpbWU9IicrcisnIj4nK24rIjwvdGltZT4iKX1lbHNlIGUuaW5zZXJ0Q29udGVudChzKGUsdCkpO3ZhciBpLG8sdSxjLG19LHQ9ZnVuY3Rpb24odCl7dC5hZGRDb21tYW5kKCJtY2VJbnNlcnREYXRlIixmdW5jdGlvbigpe3ZhciBlO2wodCwoZT10KS5nZXRQYXJhbSgiaW5zZXJ0ZGF0ZXRpbWVfZGF0ZWZvcm1hdCIsZS50cmFuc2xhdGUoIiVZLSVtLSVkIikpKX0pLHQuYWRkQ29tbWFuZCgibWNlSW5zZXJ0VGltZSIsZnVuY3Rpb24oKXtsKHQsdSh0KSl9KX0sZD10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS51dGlsLlRvb2xzIiksbj1mdW5jdGlvbihuKXt2YXIgZSx0LHIsYSxpPWMobiksbz0oYT1jKHI9biksZT0wPGEubGVuZ3RoP2FbMF06dShyKSx0PWUse2dldDpmdW5jdGlvbigpe3JldHVybiB0fSxzZXQ6ZnVuY3Rpb24oZSl7dD1lfX0pO24udWkucmVnaXN0cnkuYWRkU3BsaXRCdXR0b24oImluc2VydGRhdGV0aW1lIix7aWNvbjoiaW5zZXJ0LXRpbWUiLHRvb2x0aXA6Ikluc2VydCBkYXRlL3RpbWUiLHNlbGVjdDpmdW5jdGlvbihlKXtyZXR1cm4gZT09PW8uZ2V0KCl9LGZldGNoOmZ1bmN0aW9uKGUpe2UoZC5tYXAoaSxmdW5jdGlvbihlKXtyZXR1cm57dHlwZToiY2hvaWNlaXRlbSIsdGV4dDpzKG4sZSksdmFsdWU6ZX19KSl9LG9uQWN0aW9uOmZ1bmN0aW9uKGUpe2wobixvLmdldCgpKX0sb25JdGVtQWN0aW9uOmZ1bmN0aW9uKGUsdCl7by5zZXQodCksbChuLHQpfX0pO24udWkucmVnaXN0cnkuYWRkTmVzdGVkTWVudUl0ZW0oImluc2VydGRhdGV0aW1lIix7aWNvbjoiaW5zZXJ0LXRpbWUiLHRleHQ6IkRhdGUvdGltZSIsZ2V0U3VibWVudUl0ZW1zOmZ1bmN0aW9uKCl7cmV0dXJuIGQubWFwKGksZnVuY3Rpb24oZSl7cmV0dXJue3R5cGU6Im1lbnVpdGVtIix0ZXh0OnMobixlKSxvbkFjdGlvbjoodD1lLGZ1bmN0aW9uKCl7by5zZXQodCksbChuLHQpfSl9O3ZhciB0fSl9fSl9OyFmdW5jdGlvbiBwKCl7ZS5hZGQoImluc2VydGRhdGV0aW1lIixmdW5jdGlvbihlKXt0KGUpLG4oZSl9KX0oKX0oKTs=]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/legacyoutput/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/legacyoutput/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIGU9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuUGx1Z2luTWFuYWdlciIpLGw9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UudXRpbC5Ub29scyIpLHQ9ZnVuY3Rpb24ocyl7dmFyIGUsdCxpLGE7dD0hMSwoZT1zKS5zZXR0aW5ncy5pbmxpbmVfc3R5bGVzPXQsZS5nZXRQYXJhbSgiZm9udHNpemVfZm9ybWF0cyIpfHwoaT0iOHB0PTEgMTBwdD0yIDEycHQ9MyAxNHB0PTQgMThwdD01IDI0cHQ9NiAzNnB0PTciLGUuc2V0dGluZ3MuZm9udHNpemVfZm9ybWF0cz1pKSxlLmdldFBhcmFtKCJmb250X2Zvcm1hdHMiKXx8KGE9IkFuZGFsZSBNb25vPWFuZGFsZSBtb25vLG1vbm9zcGFjZTtBcmlhbD1hcmlhbCxoZWx2ZXRpY2Esc2Fucy1zZXJpZjtBcmlhbCBCbGFjaz1hcmlhbCBibGFjayxzYW5zLXNlcmlmO0Jvb2sgQW50aXF1YT1ib29rIGFudGlxdWEscGFsYXRpbm8sc2VyaWY7Q29taWMgU2FucyBNUz1jb21pYyBzYW5zIG1zLHNhbnMtc2VyaWY7Q291cmllciBOZXc9Y291cmllciBuZXcsY291cmllcixtb25vc3BhY2U7R2VvcmdpYT1nZW9yZ2lhLHBhbGF0aW5vLHNlcmlmO0hlbHZldGljYT1oZWx2ZXRpY2EsYXJpYWwsc2Fucy1zZXJpZjtJbXBhY3Q9aW1wYWN0LHNhbnMtc2VyaWY7U3ltYm9sPXN5bWJvbDtUYWhvbWE9dGFob21hLGFyaWFsLGhlbHZldGljYSxzYW5zLXNlcmlmO1Rlcm1pbmFsPXRlcm1pbmFsLG1vbmFjbyxtb25vc3BhY2U7VGltZXMgTmV3IFJvbWFuPXRpbWVzIG5ldyByb21hbix0aW1lcyxzZXJpZjtUcmVidWNoZXQgTVM9dHJlYnVjaGV0IG1zLGdlbmV2YSxzYW5zLXNlcmlmO1ZlcmRhbmE9dmVyZGFuYSxnZW5ldmEsc2Fucy1zZXJpZjtXZWJkaW5ncz13ZWJkaW5ncztXaW5nZGluZ3M9d2luZ2RpbmdzLHphcGYgZGluZ2JhdHMiLGUuc2V0dGluZ3MuZm9udF9mb3JtYXRzPWEpLHMub24oIlByZUluaXQiLGZ1bmN0aW9uKCl7cmV0dXJuIGU9cyx0PSJwLGgxLGgyLGgzLGg0LGg1LGg2LHRkLHRoLGRpdix1bCxvbCxsaSx0YWJsZSIsaT1sLmV4cGxvZGUoZS5nZXRQYXJhbSgiZm9udF9zaXplX3N0eWxlX3ZhbHVlcyIsInh4LXNtYWxsLHgtc21hbGwsc21hbGwsbWVkaXVtLGxhcmdlLHgtbGFyZ2UseHgtbGFyZ2UiKSksYT1lLnNjaGVtYSxlLmZvcm1hdHRlci5yZWdpc3Rlcih7YWxpZ25sZWZ0OntzZWxlY3Rvcjp0LGF0dHJpYnV0ZXM6e2FsaWduOiJsZWZ0In19LGFsaWduY2VudGVyOntzZWxlY3Rvcjp0LGF0dHJpYnV0ZXM6e2FsaWduOiJjZW50ZXIifX0sYWxpZ25yaWdodDp7c2VsZWN0b3I6dCxhdHRyaWJ1dGVzOnthbGlnbjoicmlnaHQifX0sYWxpZ25qdXN0aWZ5OntzZWxlY3Rvcjp0LGF0dHJpYnV0ZXM6e2FsaWduOiJqdXN0aWZ5In19LGJvbGQ6W3tpbmxpbmU6ImIiLHJlbW92ZToiYWxsIixwcmVzZXJ2ZV9hdHRyaWJ1dGVzOlsiY2xhc3MiLCJzdHlsZSJdfSx7aW5saW5lOiJzdHJvbmciLHJlbW92ZToiYWxsIixwcmVzZXJ2ZV9hdHRyaWJ1dGVzOlsiY2xhc3MiLCJzdHlsZSJdfSx7aW5saW5lOiJzcGFuIixzdHlsZXM6e2ZvbnRXZWlnaHQ6ImJvbGQifX1dLGl0YWxpYzpbe2lubGluZToiaSIscmVtb3ZlOiJhbGwiLHByZXNlcnZlX2F0dHJpYnV0ZXM6WyJjbGFzcyIsInN0eWxlIl19LHtpbmxpbmU6ImVtIixyZW1vdmU6ImFsbCIscHJlc2VydmVfYXR0cmlidXRlczpbImNsYXNzIiwic3R5bGUiXX0se2lubGluZToic3BhbiIsc3R5bGVzOntmb250U3R5bGU6Iml0YWxpYyJ9fV0sdW5kZXJsaW5lOlt7aW5saW5lOiJ1IixyZW1vdmU6ImFsbCIscHJlc2VydmVfYXR0cmlidXRlczpbImNsYXNzIiwic3R5bGUiXX0se2lubGluZToic3BhbiIsc3R5bGVzOnt0ZXh0RGVjb3JhdGlvbjoidW5kZXJsaW5lIn0sZXhhY3Q6ITB9XSxzdHJpa2V0aHJvdWdoOlt7aW5saW5lOiJzdHJpa2UiLHJlbW92ZToiYWxsIixwcmVzZXJ2ZV9hdHRyaWJ1dGVzOlsiY2xhc3MiLCJzdHlsZSJdfSx7aW5saW5lOiJzcGFuIixzdHlsZXM6e3RleHREZWNvcmF0aW9uOiJsaW5lLXRocm91Z2gifSxleGFjdDohMH1dLGZvbnRuYW1lOntpbmxpbmU6ImZvbnQiLHRvZ2dsZTohMSxhdHRyaWJ1dGVzOntmYWNlOiIldmFsdWUifX0sZm9udHNpemU6e2lubGluZToiZm9udCIsdG9nZ2xlOiExLGF0dHJpYnV0ZXM6e3NpemU6ZnVuY3Rpb24oZSl7cmV0dXJuIFN0cmluZyhsLmluQXJyYXkoaSxlLnZhbHVlKSsxKX19fSxmb3JlY29sb3I6e2lubGluZToiZm9udCIsYXR0cmlidXRlczp7Y29sb3I6IiV2YWx1ZSJ9LGxpbmtzOiEwLHJlbW92ZV9zaW1pbGFyOiEwLGNsZWFyX2NoaWxkX3N0eWxlczohMH0saGlsaXRlY29sb3I6e2lubGluZToiZm9udCIsc3R5bGVzOntiYWNrZ3JvdW5kQ29sb3I6IiV2YWx1ZSJ9LGxpbmtzOiEwLHJlbW92ZV9zaW1pbGFyOiEwLGNsZWFyX2NoaWxkX3N0eWxlczohMH19KSxsLmVhY2goImIsaSx1LHN0cmlrZSIuc3BsaXQoIiwiKSxmdW5jdGlvbihlKXthLmFkZFZhbGlkRWxlbWVudHMoZSsiWypdIil9KSxhLmdldEVsZW1lbnRSdWxlKCJmb250Iil8fGEuYWRkVmFsaWRFbGVtZW50cygiZm9udFtmYWNlfHNpemV8Y29sb3J8c3R5bGVdIiksdm9pZCBsLmVhY2godC5zcGxpdCgiLCIpLGZ1bmN0aW9uKGUpe3ZhciB0PWEuZ2V0RWxlbWVudFJ1bGUoZSk7dCYmKHQuYXR0cmlidXRlcy5hbGlnbnx8KHQuYXR0cmlidXRlcy5hbGlnbj17fSx0LmF0dHJpYnV0ZXNPcmRlci5wdXNoKCJhbGlnbiIpKSl9KTt2YXIgZSx0LGksYX0pfTshZnVuY3Rpb24gaSgpe2UuYWRkKCJsZWdhY3lvdXRwdXQiLGZ1bmN0aW9uKGUpe3QoZSl9KX0oKX0oKTs=]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/link/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/link/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24oaSl7InVzZSBzdHJpY3QiO3ZhciBuLHQsZSxyLG89dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuUGx1Z2luTWFuYWdlciIpLHU9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UudXRpbC5WSyIpLGE9ZnVuY3Rpb24ocil7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlPXR5cGVvZihuPXQpLChudWxsPT09bj8ibnVsbCI6Im9iamVjdCI9PWUmJihBcnJheS5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihuKXx8bi5jb25zdHJ1Y3RvciYmIkFycmF5Ij09PW4uY29uc3RydWN0b3IubmFtZSk/ImFycmF5Ijoib2JqZWN0Ij09ZSYmKFN0cmluZy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihuKXx8bi5jb25zdHJ1Y3RvciYmIlN0cmluZyI9PT1uLmNvbnN0cnVjdG9yLm5hbWUpPyJzdHJpbmciOmUpPT09cjt2YXIgbixlfX0sbD1mdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0PT09bn19LGM9YSgic3RyaW5nIiksZj1hKCJhcnJheSIpLHM9ZnVuY3Rpb24odCl7cmV0dXJuIG49PT10fSxtPWwoImJvb2xlYW4iKSxnPWwoImZ1bmN0aW9uIiksZD1mdW5jdGlvbih0KXt2YXIgbj10LmdldFBhcmFtKCJsaW5rX2Fzc3VtZV9leHRlcm5hbF90YXJnZXRzIiwhMSk7cmV0dXJuIG0obikmJm4/MTohYyhuKXx8Imh0dHAiIT09biYmImh0dHBzIiE9PW4/MDpufSxoPWZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFBhcmFtKCJkZWZhdWx0X2xpbmtfdGFyZ2V0Iil9LHY9ZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0UGFyYW0oInRhcmdldF9saXN0IiwhMCl9LHA9ZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0UGFyYW0oInJlbF9saXN0IixbXSwiYXJyYXkiKX0seT1mdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRQYXJhbSgiYWxsb3dfdW5zYWZlX2xpbmtfdGFyZ2V0IiwhMSwiYm9vbGVhbiIpfSxrPWZ1bmN0aW9uKHQpe3ZhciBuPWkuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpO24udGFyZ2V0PSJfYmxhbmsiLG4uaHJlZj10LG4ucmVsPSJub3JlZmVycmVyIG5vb3BlbmVyIjt2YXIgZSxyLG89aS5kb2N1bWVudC5jcmVhdGVFdmVudCgiTW91c2VFdmVudHMiKTtvLmluaXRNb3VzZUV2ZW50KCJjbGljayIsITAsITAsaS53aW5kb3csMCwwLDAsMCwwLCExLCExLCExLCExLDAsbnVsbCksZT1uLHI9byxpLmRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZSksZS5kaXNwYXRjaEV2ZW50KHIpLGkuZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChlKX0seD1mdW5jdGlvbigpe3JldHVybih4PU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKHQpe2Zvcih2YXIgbixlPTEscj1hcmd1bWVudHMubGVuZ3RoO2U8cjtlKyspZm9yKHZhciBvIGluIG49YXJndW1lbnRzW2VdKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLG8pJiYodFtvXT1uW29dKTtyZXR1cm4gdH0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sYj1mdW5jdGlvbigpe30sTz1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19LHc9TyghMSksQz1PKCEobj1udWxsKSksQT1mdW5jdGlvbigpe3JldHVybiBOfSxOPSh0PWZ1bmN0aW9uKHQpe3JldHVybiB0LmlzTm9uZSgpfSx7Zm9sZDpmdW5jdGlvbih0LG4pe3JldHVybiB0KCl9LGlzOncsaXNTb21lOncsaXNOb25lOkMsZ2V0T3I6cj1mdW5jdGlvbih0KXtyZXR1cm4gdH0sZ2V0T3JUaHVuazplPWZ1bmN0aW9uKHQpe3JldHVybiB0KCl9LGdldE9yRGllOmZ1bmN0aW9uKHQpe3Rocm93IG5ldyBFcnJvcih0fHwiZXJyb3I6IGdldE9yRGllIGNhbGxlZCBvbiBub25lLiIpfSxnZXRPck51bGw6TyhudWxsKSxnZXRPclVuZGVmaW5lZDpPKHVuZGVmaW5lZCksb3I6cixvclRodW5rOmUsbWFwOkEsZWFjaDpiLGJpbmQ6QSxleGlzdHM6dyxmb3JhbGw6QyxmaWx0ZXI6QSxlcXVhbHM6dCxlcXVhbHNfOnQsdG9BcnJheTpmdW5jdGlvbigpe3JldHVybltdfSx0b1N0cmluZzpPKCJub25lKCkiKX0pLF89ZnVuY3Rpb24oZSl7dmFyIHQ9TyhlKSxuPWZ1bmN0aW9uKCl7cmV0dXJuIG99LHI9ZnVuY3Rpb24odCl7cmV0dXJuIHQoZSl9LG89e2ZvbGQ6ZnVuY3Rpb24odCxuKXtyZXR1cm4gbihlKX0saXM6ZnVuY3Rpb24odCl7cmV0dXJuIGU9PT10fSxpc1NvbWU6Qyxpc05vbmU6dyxnZXRPcjp0LGdldE9yVGh1bms6dCxnZXRPckRpZTp0LGdldE9yTnVsbDp0LGdldE9yVW5kZWZpbmVkOnQsb3I6bixvclRodW5rOm4sbWFwOmZ1bmN0aW9uKHQpe3JldHVybiBfKHQoZSkpfSxlYWNoOmZ1bmN0aW9uKHQpe3QoZSl9LGJpbmQ6cixleGlzdHM6cixmb3JhbGw6cixmaWx0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQoZSk/bzpOfSx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuW2VdfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiJzb21lKCIrZSsiKSJ9LGVxdWFsczpmdW5jdGlvbih0KXtyZXR1cm4gdC5pcyhlKX0sZXF1YWxzXzpmdW5jdGlvbih0LG4pe3JldHVybiB0LmZvbGQodyxmdW5jdGlvbih0KXtyZXR1cm4gbihlLHQpfSl9fTtyZXR1cm4gb30sUD17c29tZTpfLG5vbmU6QSxmcm9tOmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT09dHx8dD09PXVuZGVmaW5lZD9OOl8odCl9fSxTPUFycmF5LnByb3RvdHlwZS5pbmRleE9mLFQ9QXJyYXkucHJvdG90eXBlLnB1c2gsRD1mdW5jdGlvbih0LG4pe3JldHVybiBlPXQscj1uLC0xPFMuY2FsbChlLHIpO3ZhciBlLHJ9LEw9ZnVuY3Rpb24odCl7Zm9yKHZhciBuPVtdLGU9MCxyPXQubGVuZ3RoO2U8cjsrK2Upe2lmKCFmKHRbZV0pKXRocm93IG5ldyBFcnJvcigiQXJyLmZsYXR0ZW4gaXRlbSAiK2UrIiB3YXMgbm90IGFuIGFycmF5LCBpbnB1dDogIit0KTtULmFwcGx5KG4sdFtlXSl9cmV0dXJuIG59LE09ZnVuY3Rpb24odCxuKXtyZXR1cm4gTChmdW5jdGlvbih0LG4pe2Zvcih2YXIgZT10Lmxlbmd0aCxyPW5ldyBBcnJheShlKSxvPTA7bzxlO28rKyl7dmFyIGk9dFtvXTtyW29dPW4oaSxvKX1yZXR1cm4gcn0odCxuKSl9LEU9ZnVuY3Rpb24odCxuKXtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKyl7dmFyIHI9bih0W2VdLGUpO2lmKHIuaXNTb21lKCkpcmV0dXJuIHJ9cmV0dXJuIFAubm9uZSgpfSxSPU9iamVjdC5rZXlzLFU9ZnVuY3Rpb24odCxlLHIsbyl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7Zm9yKHZhciBlPVIodCkscj0wLG89ZS5sZW5ndGg7cjxvO3IrKyl7dmFyIGk9ZVtyXTtuKHRbaV0saSl9fSh0LGZ1bmN0aW9uKHQsbil7KGUodCxuKT9yOm8pKHQsbil9KSx7fX0scT1mdW5jdGlvbih0LG4pe3ZhciBlLHI9e307cmV0dXJuIFUodCxuLChlPXIsZnVuY3Rpb24odCxuKXtlW25dPXR9KSxiKSxyfSxLPXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLnV0aWwuVG9vbHMiKSx6PWZ1bmN0aW9uKHQpe3JldHVybiEoIS8oXnxbICxdKXJ0YyhbLCBdfCQpLy50ZXN0KHQuc2V0dGluZ3MucGx1Z2lucyl8fCFvLmdldCgicnRjIikpfSxJPWZ1bmN0aW9uKHQpe3JldHVybi9eXHcrOi9pLnRlc3QodCl9LGo9ZnVuY3Rpb24odCl7dmFyIG49dC5nZXRBdHRyaWJ1dGUoImRhdGEtbWNlLWhyZWYiKTtyZXR1cm4gbnx8dC5nZXRBdHRyaWJ1dGUoImhyZWYiKX0sQj1mdW5jdGlvbih0LG4pe3ZhciBlLHIsbz1bIm5vb3BlbmVyIl0saT10P3Quc3BsaXQoL1xzKy8pOltdLHU9ZnVuY3Rpb24odCl7cmV0dXJuIHQuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybi0xPT09Sy5pbkFycmF5KG8sdCl9KX0sYT1uPzA8KGU9dShlPWkpKS5sZW5ndGg/ZS5jb25jYXQobyk6bzp1KGkpO3JldHVybiAwPGEubGVuZ3RoPyhyPWEsSy50cmltKHIuc29ydCgpLmpvaW4oIiAiKSkpOiIifSxWPWZ1bmN0aW9uKHQsbil7cmV0dXJuIG49bnx8dC5zZWxlY3Rpb24uZ2V0Tm9kZSgpLEcobik/dC5kb20uc2VsZWN0KCJhW2hyZWZdIixuKVswXTp0LmRvbS5nZXRQYXJlbnQobiwiYVtocmVmXSIpfSxGPWZ1bmN0aW9uKHQsbil7dmFyIGU9bj9uLmlubmVyVGV4dHx8bi50ZXh0Q29udGVudDp0LmdldENvbnRlbnQoe2Zvcm1hdDoidGV4dCJ9KTtyZXR1cm4gZS5yZXBsYWNlKC9cdUZFRkYvZywiIil9LFc9ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJBIj09PXQubm9kZU5hbWUmJiEhaih0KX0sJD1mdW5jdGlvbih0KXtyZXR1cm4gMDxLLmdyZXAodCxXKS5sZW5ndGh9LEg9ZnVuY3Rpb24odCl7cmV0dXJuISgvPC8udGVzdCh0KSYmKCEvXjxhIFtePl0rPltePF0rPFwvYT4kLy50ZXN0KHQpfHwtMT09PXQuaW5kZXhPZigiaHJlZj0iKSkpfSxHPWZ1bmN0aW9uKHQpe3JldHVybiB0JiYiRklHVVJFIj09PXQubm9kZU5hbWUmJi9cYmltYWdlXGIvaS50ZXN0KHQuY2xhc3NOYW1lKX0sSj1mdW5jdGlvbih0KXtyZXR1cm4gbj1bInRpdGxlIiwicmVsIiwiY2xhc3MiLCJ0YXJnZXQiXSxlPWZ1bmN0aW9uKG4sZSl7cmV0dXJuIHRbZV0uZWFjaChmdW5jdGlvbih0KXtuW2VdPTA8dC5sZW5ndGg/dDpudWxsfSksbn0scj17aHJlZjp0LmhyZWZ9LGZ1bmN0aW9uKHQsbil7Zm9yKHZhciBlPTAscj10Lmxlbmd0aDtlPHI7ZSsrKW4odFtlXSxlKX0obixmdW5jdGlvbih0KXtyPWUocix0KX0pLHI7dmFyIG4sZSxyfSxYPWZ1bmN0aW9uKHQsbil7dmFyIGUscixvPXgoe30sbik7aWYoISgwPHAodCkubGVuZ3RoKSYmITE9PT15KHQpKXt2YXIgaT1CKG8ucmVsLCJfYmxhbmsiPT09by50YXJnZXQpO28ucmVsPWl8fG51bGx9cmV0dXJuIFAuZnJvbShvLnRhcmdldCkuaXNOb25lKCkmJiExPT09dih0KSYmKG8udGFyZ2V0PWgodCkpLG8uaHJlZj0oZT1vLmhyZWYsImh0dHAiIT09KHI9ZCh0KSkmJiJodHRwcyIhPT1yfHxJKGUpP2U6cisiOi8vIitlKSxvfSxRPWZ1bmN0aW9uKGwsYyxmKXt2YXIgcz1sLnNlbGVjdGlvbi5nZXROb2RlKCksbT1WKGwscyksZz1YKGwsSihmKSk7bC51bmRvTWFuYWdlci50cmFuc2FjdChmdW5jdGlvbigpe3ZhciBuLHQsZSxyLG8saSx1LGE7Zi5ocmVmPT09Yy5ocmVmJiZjLmF0dGFjaCgpLG0/KGwuZm9jdXMoKSxvPWwsaT1tLHU9Zi50ZXh0LGE9Zyx1LmVhY2goZnVuY3Rpb24odCl7aS5oYXNPd25Qcm9wZXJ0eSgiaW5uZXJUZXh0Iik/aS5pbm5lclRleHQ9dDppLnRleHRDb250ZW50PXR9KSxvLmRvbS5zZXRBdHRyaWJzKGksYSksby5zZWxlY3Rpb24uc2VsZWN0KGkpKToobj1sLHQ9cyxlPWYudGV4dCxyPWcsRyh0KT9udChuLHQscik6ZS5mb2xkKGZ1bmN0aW9uKCl7bi5leGVjQ29tbWFuZCgibWNlSW5zZXJ0TGluayIsITEscil9LGZ1bmN0aW9uKHQpe24uaW5zZXJ0Q29udGVudChuLmRvbS5jcmVhdGVIVE1MKCJhIixyLG4uZG9tLmVuY29kZSh0KSkpfSkpfSl9LFk9ZnVuY3Rpb24odCxuLGUpe3ZhciByLG8saSx1LGEsbCxjO3oodCk/dC5leGVjQ29tbWFuZCgiY3JlYXRlbGluayIsITEsKG89KHI9ZSlbImNsYXNzIl0saT1yLmhyZWYsdT1yLnJlbCxhPXIudGFyZ2V0LGw9ci50ZXh0LGM9ci50aXRsZSxxKHsiY2xhc3MiOm8uZ2V0T3JOdWxsKCksaHJlZjppLHJlbDp1LmdldE9yTnVsbCgpLHRhcmdldDphLmdldE9yTnVsbCgpLHRleHQ6bC5nZXRPck51bGwoKSx0aXRsZTpjLmdldE9yTnVsbCgpfSxmdW5jdGlvbih0LG4pe3JldHVybiExPT09cyh0KX0pKSk6USh0LG4sZSl9LFo9ZnVuY3Rpb24odCl7dmFyIGU7eih0KT90LmV4ZWNDb21tYW5kKCJ1bmxpbmsiKTooZT10KS51bmRvTWFuYWdlci50cmFuc2FjdChmdW5jdGlvbigpe3ZhciB0PWUuc2VsZWN0aW9uLmdldE5vZGUoKTtpZihHKHQpKXR0KGUsdCk7ZWxzZXt2YXIgbj1lLmRvbS5nZXRQYXJlbnQodCwiYVtocmVmXSIsZS5nZXRCb2R5KCkpO24mJmUuZG9tLnJlbW92ZShuLCEwKX1lLmZvY3VzKCl9KX0sdHQ9ZnVuY3Rpb24odCxuKXt2YXIgZT10LmRvbS5zZWxlY3QoImltZyIsbilbMF07aWYoZSl7dmFyIHI9dC5kb20uZ2V0UGFyZW50cyhlLCJhW2hyZWZdIixuKVswXTtyJiYoci5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlLHIpLHQuZG9tLnJlbW92ZShyKSl9fSxudD1mdW5jdGlvbih0LG4sZSl7dmFyIHI9dC5kb20uc2VsZWN0KCJpbWciLG4pWzBdO2lmKHIpe3ZhciBvPXQuZG9tLmNyZWF0ZSgiYSIsZSk7ci5wYXJlbnROb2RlLmluc2VydEJlZm9yZShvLHIpLG8uYXBwZW5kQ2hpbGQocil9fSxldD1mdW5jdGlvbih0KXtyZXR1cm4gYyh0LnZhbHVlKT90LnZhbHVlOiIifSxydD1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ZXQpLGZ1bmN0aW9uKHQpe3JldHVybiBQLmZyb20odCkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBuPXQscj1lLG89W10sSy5lYWNoKG4sZnVuY3Rpb24odCl7dmFyIG49Yyh0LnRleHQpP3QudGV4dDpjKHQudGl0bGUpP3QudGl0bGU6IiI7aWYodC5tZW51PT09dW5kZWZpbmVkKXt2YXIgZT1yKHQpO28ucHVzaCh7dGV4dDpuLHZhbHVlOmV9KX19KSxvO3ZhciBuLHIsb30pfX0sb3Q9e3Nhbml0aXplOmZ1bmN0aW9uKHQpe3JldHVybiBydChldCkodCl9LHNhbml0aXplV2l0aDpydCxjcmVhdGVVaTpmdW5jdGlvbihuLGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm57bmFtZTpuLHR5cGU6InNlbGVjdGJveCIsbGFiZWw6ZSxpdGVtczp0fX19LGdldFZhbHVlOmV0fSxpdD1mdW5jdGlvbihuLHQsZSxyKXt2YXIgbyxpPXJbdF0sdT0wPG4ubGVuZ3RoO3JldHVybiBpIT09dW5kZWZpbmVkPyhvPWksRShlLGZ1bmN0aW9uKHQpe3JldHVybiBQLnNvbWUodCkuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0LnZhbHVlPT09b30pfSkubWFwKGZ1bmN0aW9uKHQpe3JldHVybnt1cmw6e3ZhbHVlOnQudmFsdWUsbWV0YTp7dGV4dDp1P246dC50ZXh0LGF0dGFjaDpifX0sdGV4dDp1P246dC50ZXh0fX0pKTpQLm5vbmUoKX0sdXQ9ZnVuY3Rpb24odCxpKXt2YXIgbixlLHU9KG49dC50ZXh0LGU9bix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGV9LHNldDpmdW5jdGlvbih0KXtlPXR9fSkscj1mdW5jdGlvbih0LG4pe3ZhciBlLHIsbz0oZT1pLCgibGluayI9PT0ocj1uLm5hbWUpP2UuY2F0YWxvZ3MubGluazoiYW5jaG9yIj09PXI/ZS5jYXRhbG9ncy5hbmNob3I6UC5ub25lKCkpLmdldE9yKFtdKSk7cmV0dXJuIGl0KHUuZ2V0KCksbi5uYW1lLG8sdCl9O3JldHVybntvbkNoYW5nZTpmdW5jdGlvbih0LG4pe3JldHVybiJ1cmwiPT09bi5uYW1lP2Z1bmN0aW9uKHQpe2lmKHUuZ2V0KCkubGVuZ3RoPD0wKXt2YXIgbj10LnVybC5tZXRhLnRleHQhPT11bmRlZmluZWQ/dC51cmwubWV0YS50ZXh0OnQudXJsLnZhbHVlLGU9dC51cmwubWV0YS50aXRsZSE9PXVuZGVmaW5lZD90LnVybC5tZXRhLnRpdGxlOiIiO3JldHVybiBQLnNvbWUoe3RleHQ6bix0aXRsZTplfSl9cmV0dXJuIFAubm9uZSgpfSh0KCkpOkQoWyJhbmNob3IiLCJsaW5rIl0sbi5uYW1lKT9yKHQoKSxuKTooInRleHQiPT09bi5uYW1lJiZ1LnNldCh0KCkudGV4dCksUC5ub25lKCkpfX19LGF0PXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLnV0aWwuRGVsYXkiKSxsdD10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS51dGlsLlByb21pc2UiKSxjdD1mdW5jdGlvbih0KXt2YXIgbj10LmhyZWY7cmV0dXJuIDA8bi5pbmRleE9mKCJAIikmJi0xPT09bi5pbmRleE9mKCIvLyIpJiYtMT09PW4uaW5kZXhPZigibWFpbHRvOiIpP1Auc29tZSh7bWVzc2FnZToiVGhlIFVSTCB5b3UgZW50ZXJlZCBzZWVtcyB0byBiZSBhbiBlbWFpbCBhZGRyZXNzLiBEbyB5b3Ugd2FudCB0byBhZGQgdGhlIHJlcXVpcmVkIG1haWx0bzogcHJlZml4PyIscHJlcHJvY2VzczpmdW5jdGlvbih0KXtyZXR1cm4geCh4KHt9LHQpLHtocmVmOiJtYWlsdG86IitufSl9fSk6UC5ub25lKCl9LGZ0PWZ1bmN0aW9uKHUsYSl7cmV0dXJuIEUoW2N0LChlPWQodSkscj11LmdldFBhcmFtKCJsaW5rX2RlZmF1bHRfcHJvdG9jb2wiLCJodHRwIiwic3RyaW5nIiksZnVuY3Rpb24odCl7dmFyIG49dC5ocmVmO3JldHVybiAxPT09ZSYmIUkobil8fDA9PT1lJiYvXlxzKnd3d1tcLnxcZFwuXS9pLnRlc3Qobik/UC5zb21lKHttZXNzYWdlOiJUaGUgVVJMIHlvdSBlbnRlcmVkIHNlZW1zIHRvIGJlIGFuIGV4dGVybmFsIGxpbmsuIERvIHlvdSB3YW50IHRvIGFkZCB0aGUgcmVxdWlyZWQgIityKyI6Ly8gcHJlZml4PyIscHJlcHJvY2VzczpmdW5jdGlvbih0KXtyZXR1cm4geCh4KHt9LHQpLHtocmVmOnIrIjovLyIrbn0pfX0pOlAubm9uZSgpfSldLGZ1bmN0aW9uKHQpe3JldHVybiB0KGEpfSkuZm9sZChmdW5jdGlvbigpe3JldHVybiBsdC5yZXNvbHZlKGEpfSxmdW5jdGlvbihpKXtyZXR1cm4gbmV3IGx0KGZ1bmN0aW9uKG4pe3ZhciBlLHQscixvO2U9dSx0PWkubWVzc2FnZSxyPWZ1bmN0aW9uKHQpe24odD9pLnByZXByb2Nlc3MoYSk6YSl9LG89ZS5zZWxlY3Rpb24uZ2V0Um5nKCksYXQuc2V0RWRpdG9yVGltZW91dChlLGZ1bmN0aW9uKCl7ZS53aW5kb3dNYW5hZ2VyLmNvbmZpcm0odCxmdW5jdGlvbih0KXtlLnNlbGVjdGlvbi5zZXRSbmcobykscih0KX0pfSl9KX0pO3ZhciBlLHJ9LHN0PWZ1bmN0aW9uKHQpe3ZhciBuPXQuZG9tLnNlbGVjdCgiYTpub3QoW2hyZWZdKSIpLGU9TShuLGZ1bmN0aW9uKHQpe3ZhciBuPXQubmFtZXx8dC5pZDtyZXR1cm4gbj9be3RleHQ6bix2YWx1ZToiIyIrbn1dOltdfSk7cmV0dXJuIDA8ZS5sZW5ndGg/UC5zb21lKFt7dGV4dDoiTm9uZSIsdmFsdWU6IiJ9XS5jb25jYXQoZSkpOlAubm9uZSgpfSxtdD1mdW5jdGlvbih0KXt2YXIgbj10LmdldFBhcmFtKCJsaW5rX2NsYXNzX2xpc3QiLFtdLCJhcnJheSIpO3JldHVybiAwPG4ubGVuZ3RoP290LnNhbml0aXplKG4pOlAubm9uZSgpfSxndD10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS51dGlsLlhIUiIpLGR0PWZ1bmN0aW9uKG4pe3ZhciBlPWZ1bmN0aW9uKHQpe3JldHVybiBuLmNvbnZlcnRVUkwodC52YWx1ZXx8dC51cmwsImhyZWYiKX0sdD1uLmdldFBhcmFtKCJsaW5rX2xpc3QiKTtyZXR1cm4gbmV3IGx0KGZ1bmN0aW9uKG4pe2ModCk/Z3Quc2VuZCh7dXJsOnQsc3VjY2VzczpmdW5jdGlvbih0KXtyZXR1cm4gbihmdW5jdGlvbih0KXt0cnl7cmV0dXJuIFAuc29tZShKU09OLnBhcnNlKHQpKX1jYXRjaChuKXtyZXR1cm4gUC5ub25lKCl9fSh0KSl9LGVycm9yOmZ1bmN0aW9uKHQpe3JldHVybiBuKFAubm9uZSgpKX19KTpnKHQpP3QoZnVuY3Rpb24odCl7cmV0dXJuIG4oUC5zb21lKHQpKX0pOm4oUC5mcm9tKHQpKX0pLnRoZW4oZnVuY3Rpb24odCl7cmV0dXJuIHQuYmluZChvdC5zYW5pdGl6ZVdpdGgoZSkpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gMDx0Lmxlbmd0aD9be3RleHQ6Ik5vbmUiLHZhbHVlOiIifV0uY29uY2F0KHQpOnR9KX0pfSxodD1mdW5jdGlvbih0LG4pe3ZhciBlPXAodCk7aWYoMDxlLmxlbmd0aCl7dmFyIHI9bi5pcygiX2JsYW5rIik7cmV0dXJuKCExPT09eSh0KT9vdC5zYW5pdGl6ZVdpdGgoZnVuY3Rpb24odCl7cmV0dXJuIEIob3QuZ2V0VmFsdWUodCkscil9KTpvdC5zYW5pdGl6ZSkoZSl9cmV0dXJuIFAubm9uZSgpfSx2dD1be3RleHQ6IkN1cnJlbnQgd2luZG93Iix2YWx1ZToiIn0se3RleHQ6Ik5ldyB3aW5kb3ciLHZhbHVlOiJfYmxhbmsifV0scHQ9ZnVuY3Rpb24odCl7dmFyIG49dih0KTtyZXR1cm4gZihuKT9vdC5zYW5pdGl6ZShuKS5vclRodW5rKGZ1bmN0aW9uKCl7cmV0dXJuIFAuc29tZSh2dCl9KTohMT09PW4/UC5ub25lKCk6UC5zb21lKHZ0KX0seXQ9ZnVuY3Rpb24odCxuLGUpe3ZhciByPXQuZ2V0QXR0cmliKG4sZSk7cmV0dXJuIG51bGwhPT1yJiYwPHIubGVuZ3RoP1Auc29tZShyKTpQLm5vbmUoKX0sa3Q9ZnVuY3Rpb24oZixzKXtyZXR1cm4gZHQoZikudGhlbihmdW5jdGlvbih0KXt2YXIgbixlLHIsbyxpLHUsYSxsLGM9KGU9cyxyPShuPWYpLmRvbSxvPUgobi5zZWxlY3Rpb24uZ2V0Q29udGVudCgpKT9QLnNvbWUoRihuLnNlbGVjdGlvbixlKSk6UC5ub25lKCksaT1lP1Auc29tZShyLmdldEF0dHJpYihlLCJocmVmIikpOlAubm9uZSgpLHU9ZT9QLmZyb20oci5nZXRBdHRyaWIoZSwidGFyZ2V0IikpOlAubm9uZSgpLGE9eXQocixlLCJyZWwiKSxsPXl0KHIsZSwiY2xhc3MiKSx7dXJsOmksdGV4dDpvLHRpdGxlOnl0KHIsZSwidGl0bGUiKSx0YXJnZXQ6dSxyZWw6YSxsaW5rQ2xhc3M6bH0pO3JldHVybnthbmNob3I6YyxjYXRhbG9nczp7dGFyZ2V0czpwdChmKSxyZWxzOmh0KGYsYy50YXJnZXQpLGNsYXNzZXM6bXQoZiksYW5jaG9yOnN0KGYpLGxpbms6dH0sb3B0Tm9kZTpQLmZyb20ocyksZmxhZ3M6e3RpdGxlRW5hYmxlZDpmLmdldFBhcmFtKCJsaW5rX3RpdGxlIiwhMCwiYm9vbGVhbiIpfX19KX0seHQ9ZnVuY3Rpb24oZCl7dmFyIHQsbjsobj1WKHQ9ZCksa3QodCxuKSkudGhlbihmdW5jdGlvbih0KXt2YXIgaSx1LG4sZSxyLG8sYSxsLGMsZixzLG0sZztyZXR1cm4gZT1mdW5jdGlvbih0KXt2YXIgZT10LmdldERhdGEoKTtpZighZS51cmwudmFsdWUpcmV0dXJuIFooaSksdm9pZCB0LmNsb3NlKCk7dmFyIG49ZnVuY3Rpb24obil7cmV0dXJuIFAuZnJvbShlW25dKS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIXUuYW5jaG9yW25dLmlzKHQpfSl9LHI9e2hyZWY6ZS51cmwudmFsdWUsdGV4dDpuKCJ0ZXh0IiksdGFyZ2V0Om4oInRhcmdldCIpLHJlbDpuKCJyZWwiKSwiY2xhc3MiOm4oImxpbmtDbGFzcyIpLHRpdGxlOm4oInRpdGxlIil9LG89e2hyZWY6ZS51cmwudmFsdWUsYXR0YWNoOmUudXJsLm1ldGEhPT11bmRlZmluZWQmJmUudXJsLm1ldGEuYXR0YWNoP2UudXJsLm1ldGEuYXR0YWNoOmZ1bmN0aW9uKCl7fX07ZnQoaSxyKS50aGVuKGZ1bmN0aW9uKHQpe1koaSxvLHQpfSksdC5jbG9zZSgpfSxyPWk9ZCxsPShuPXU9dCkuYW5jaG9yLnRleHQubWFwKGZ1bmN0aW9uKCl7cmV0dXJue25hbWU6InRleHQiLHR5cGU6ImlucHV0IixsYWJlbDoiVGV4dCB0byBkaXNwbGF5In19KS50b0FycmF5KCksYz1uLmZsYWdzLnRpdGxlRW5hYmxlZD9be25hbWU6InRpdGxlIix0eXBlOiJpbnB1dCIsbGFiZWw6IlRpdGxlIn1dOltdLGY9UC5mcm9tKGgocikpLGE9ZixzPXt1cmw6e3ZhbHVlOihvPW4pLmFuY2hvci51cmwuZ2V0T3IoIiIpLG1ldGE6e2F0dGFjaDpmdW5jdGlvbigpe30sdGV4dDpvLmFuY2hvci51cmwuZm9sZChmdW5jdGlvbigpe3JldHVybiIifSxmdW5jdGlvbigpe3JldHVybiBvLmFuY2hvci50ZXh0LmdldE9yKCIiKX0pLG9yaWdpbmFsOnt2YWx1ZTpvLmFuY2hvci51cmwuZ2V0T3IoIiIpfX19LHRleHQ6by5hbmNob3IudGV4dC5nZXRPcigiIiksdGl0bGU6by5hbmNob3IudGl0bGUuZ2V0T3IoIiIpLGFuY2hvcjpvLmFuY2hvci51cmwuZ2V0T3IoIiIpLGxpbms6by5hbmNob3IudXJsLmdldE9yKCIiKSxyZWw6by5hbmNob3IucmVsLmdldE9yKCIiKSx0YXJnZXQ6by5hbmNob3IudGFyZ2V0Lm9yKGEpLmdldE9yKCIiKSxsaW5rQ2xhc3M6by5hbmNob3IubGlua0NsYXNzLmdldE9yKCIiKX0sbT11dChzLG4pLGc9bi5jYXRhbG9ncyx7dGl0bGU6Ikluc2VydC9FZGl0IExpbmsiLHNpemU6Im5vcm1hbCIsYm9keTp7dHlwZToicGFuZWwiLGl0ZW1zOkwoW1t7bmFtZToidXJsIix0eXBlOiJ1cmxpbnB1dCIsZmlsZXR5cGU6ImZpbGUiLGxhYmVsOiJVUkwifV0sbCxjLGZ1bmN0aW9uKHQpe2Zvcih2YXIgbj1bXSxlPWZ1bmN0aW9uKHQpe24ucHVzaCh0KX0scj0wO3I8dC5sZW5ndGg7cisrKXRbcl0uZWFjaChlKTtyZXR1cm4gbn0oW2cuYW5jaG9yLm1hcChvdC5jcmVhdGVVaSgiYW5jaG9yIiwiQW5jaG9ycyIpKSxnLnJlbHMubWFwKG90LmNyZWF0ZVVpKCJyZWwiLCJSZWwiKSksZy50YXJnZXRzLm1hcChvdC5jcmVhdGVVaSgidGFyZ2V0IiwiT3BlbiBsaW5rIGluLi4uIikpLGcubGluay5tYXAob3QuY3JlYXRlVWkoImxpbmsiLCJMaW5rIGxpc3QiKSksZy5jbGFzc2VzLm1hcChvdC5jcmVhdGVVaSgibGlua0NsYXNzIiwiQ2xhc3MiKSldKV0pfSxidXR0b25zOlt7dHlwZToiY2FuY2VsIixuYW1lOiJjYW5jZWwiLHRleHQ6IkNhbmNlbCJ9LHt0eXBlOiJzdWJtaXQiLG5hbWU6InNhdmUiLHRleHQ6IlNhdmUiLHByaW1hcnk6ITB9XSxpbml0aWFsRGF0YTpzLG9uQ2hhbmdlOmZ1bmN0aW9uKG4sdCl7dmFyIGU9dC5uYW1lO20ub25DaGFuZ2Uobi5nZXREYXRhLHtuYW1lOmV9KS5lYWNoKGZ1bmN0aW9uKHQpe24uc2V0RGF0YSh0KX0pfSxvblN1Ym1pdDplfX0pLnRoZW4oZnVuY3Rpb24odCl7ZC53aW5kb3dNYW5hZ2VyLm9wZW4odCl9KX0sYnQ9ZnVuY3Rpb24odCxuKXtyZXR1cm4gdC5kb20uZ2V0UGFyZW50KG4sImFbaHJlZl0iKX0sT3Q9ZnVuY3Rpb24odCl7cmV0dXJuIGJ0KHQsdC5zZWxlY3Rpb24uZ2V0U3RhcnQoKSl9LHd0PWZ1bmN0aW9uKHQsbil7aWYobil7dmFyIGU9aihuKTtpZigvXiMvLnRlc3QoZSkpe3ZhciByPXQuJChlKTtyLmxlbmd0aCYmdC5zZWxlY3Rpb24uc2Nyb2xsSW50b1ZpZXcoclswXSwhMCl9ZWxzZSBrKG4uaHJlZil9fSxDdD1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXt4dCh0KX19LEF0PWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3d0KHQsT3QodCkpfX0sTnQ9ZnVuY3Rpb24ocil7ci5vbigiY2xpY2siLGZ1bmN0aW9uKHQpe3ZhciBuPWJ0KHIsdC50YXJnZXQpO24mJnUubWV0YUtleVByZXNzZWQodCkmJih0LnByZXZlbnREZWZhdWx0KCksd3QocixuKSl9KSxyLm9uKCJrZXlkb3duIixmdW5jdGlvbih0KXt2YXIgbixlPU90KHIpO2UmJjEzPT09dC5rZXlDb2RlJiYoITA9PT0obj10KS5hbHRLZXkmJiExPT09bi5zaGlmdEtleSYmITE9PT1uLmN0cmxLZXkmJiExPT09bi5tZXRhS2V5KSYmKHQucHJldmVudERlZmF1bHQoKSx3dChyLGUpKX0pfSxfdD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIHQ9ZnVuY3Rpb24odCl7cmV0dXJuIG4uc2V0QWN0aXZlKCFlLm1vZGUuaXNSZWFkT25seSgpJiYhIVYoZSx0LmVsZW1lbnQpKX07cmV0dXJuIGUub24oIk5vZGVDaGFuZ2UiLHQpLGZ1bmN0aW9uKCl7cmV0dXJuIGUub2ZmKCJOb2RlQ2hhbmdlIix0KX19fSxQdD1mdW5jdGlvbihyKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIHQ9ci5kb20uZ2V0UGFyZW50cyhyLnNlbGVjdGlvbi5nZXRTdGFydCgpKTtuLnNldERpc2FibGVkKCEkKHQpKTt2YXIgZT1mdW5jdGlvbih0KXtyZXR1cm4gbi5zZXREaXNhYmxlZCghJCh0LnBhcmVudHMpKX07cmV0dXJuIHIub24oIk5vZGVDaGFuZ2UiLGUpLGZ1bmN0aW9uKCl7cmV0dXJuIHIub2ZmKCJOb2RlQ2hhbmdlIixlKX19fTshZnVuY3Rpb24gU3QoKXtvLmFkZCgibGluayIsZnVuY3Rpb24odCl7dmFyIG4sZSxyLGksbyx1LGE7KG49dCkudWkucmVnaXN0cnkuYWRkVG9nZ2xlQnV0dG9uKCJsaW5rIix7aWNvbjoibGluayIsdG9vbHRpcDoiSW5zZXJ0L2VkaXQgbGluayIsb25BY3Rpb246Q3Qobiksb25TZXR1cDpfdChuKX0pLG4udWkucmVnaXN0cnkuYWRkQnV0dG9uKCJvcGVubGluayIse2ljb246Im5ldy10YWIiLHRvb2x0aXA6Ik9wZW4gbGluayIsb25BY3Rpb246QXQobiksb25TZXR1cDpQdChuKX0pLG4udWkucmVnaXN0cnkuYWRkQnV0dG9uKCJ1bmxpbmsiLHtpY29uOiJ1bmxpbmsiLHRvb2x0aXA6IlJlbW92ZSBsaW5rIixvbkFjdGlvbjpmdW5jdGlvbigpe3JldHVybiBaKG4pfSxvblNldHVwOlB0KG4pfSksKGU9dCkudWkucmVnaXN0cnkuYWRkTWVudUl0ZW0oIm9wZW5saW5rIix7dGV4dDoiT3BlbiBsaW5rIixpY29uOiJuZXctdGFiIixvbkFjdGlvbjpBdChlKSxvblNldHVwOlB0KGUpfSksZS51aS5yZWdpc3RyeS5hZGRNZW51SXRlbSgibGluayIse2ljb246ImxpbmsiLHRleHQ6IkxpbmsuLi4iLHNob3J0Y3V0OiJNZXRhK0siLG9uQWN0aW9uOkN0KGUpfSksZS51aS5yZWdpc3RyeS5hZGRNZW51SXRlbSgidW5saW5rIix7aWNvbjoidW5saW5rIix0ZXh0OiJSZW1vdmUgbGluayIsb25BY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gWihlKX0sb25TZXR1cDpQdChlKX0pLChyPXQpLnVpLnJlZ2lzdHJ5LmFkZENvbnRleHRNZW51KCJsaW5rIix7dXBkYXRlOmZ1bmN0aW9uKHQpe3JldHVybiAkKHIuZG9tLmdldFBhcmVudHModCwiYSIpKT8ibGluayB1bmxpbmsgb3BlbmxpbmsiOiJsaW5rIn19KSxvPWZ1bmN0aW9uKHQpe3ZhciBuPWkuc2VsZWN0aW9uLmdldE5vZGUoKTtyZXR1cm4gdC5zZXREaXNhYmxlZCghVihpLG4pKSxmdW5jdGlvbigpe319LChpPXQpLnVpLnJlZ2lzdHJ5LmFkZENvbnRleHRGb3JtKCJxdWlja2xpbmsiLHtsYXVuY2g6e3R5cGU6ImNvbnRleHRmb3JtdG9nZ2xlYnV0dG9uIixpY29uOiJsaW5rIix0b29sdGlwOiJMaW5rIixvblNldHVwOl90KGkpfSxsYWJlbDoiTGluayIscHJlZGljYXRlOmZ1bmN0aW9uKHQpe3JldHVybiEhVihpLHQpJiZpLmdldFBhcmFtKCJsaW5rX2NvbnRleHRfdG9vbGJhciIsITEsImJvb2xlYW4iKX0saW5pdFZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9VihpKTtyZXR1cm4gdD9qKHQpOiIifSxjb21tYW5kczpbe3R5cGU6ImNvbnRleHRmb3JtdG9nZ2xlYnV0dG9uIixpY29uOiJsaW5rIix0b29sdGlwOiJMaW5rIixwcmltYXJ5OiEwLG9uU2V0dXA6ZnVuY3Rpb24odCl7dmFyIG49aS5zZWxlY3Rpb24uZ2V0Tm9kZSgpO3JldHVybiB0LnNldEFjdGl2ZSghIVYoaSxuKSksX3QoaSkodCl9LG9uQWN0aW9uOmZ1bmN0aW9uKHQpe3ZhciBuPVYoaSksZT10LmdldFZhbHVlKCk7aWYobilpLmRvbS5zZXRBdHRyaWIobiwiaHJlZiIsZSksaS5zZWxlY3Rpb24uY29sbGFwc2UoITEpLHQuaGlkZSgpO2Vsc2V7dmFyIHI9e2hyZWY6ZSxhdHRhY2g6ZnVuY3Rpb24oKXt9fSxvPUgoaS5zZWxlY3Rpb24uZ2V0Q29udGVudCgpKT9QLnNvbWUoRihpLnNlbGVjdGlvbixuKSkuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiAwPHQubGVuZ3RofSkub3IoUC5mcm9tKGUpKTpQLm5vbmUoKTtZKGkscix7aHJlZjplLHRleHQ6byx0aXRsZTpQLm5vbmUoKSxyZWw6UC5ub25lKCksdGFyZ2V0OlAubm9uZSgpLCJjbGFzcyI6UC5ub25lKCl9KSx0LmhpZGUoKX19fSx7dHlwZToiY29udGV4dGZvcm1idXR0b24iLGljb246InVubGluayIsdG9vbHRpcDoiUmVtb3ZlIGxpbmsiLG9uU2V0dXA6byxvbkFjdGlvbjpmdW5jdGlvbih0KXtaKGkpLHQuaGlkZSgpfX0se3R5cGU6ImNvbnRleHRmb3JtYnV0dG9uIixpY29uOiJuZXctdGFiIix0b29sdGlwOiJPcGVuIGxpbmsiLG9uU2V0dXA6byxvbkFjdGlvbjpmdW5jdGlvbih0KXtBdChpKSgpLHQuaGlkZSgpfX1dfSksTnQodCksKHU9dCkuYWRkQ29tbWFuZCgibWNlTGluayIsZnVuY3Rpb24oKXt1LmdldFBhcmFtKCJsaW5rX3F1aWNrbGluayIsITEsImJvb2xlYW4iKT91LmZpcmUoImNvbnRleHR0b29sYmFyLXNob3ciLHt0b29sYmFyS2V5OiJxdWlja2xpbmsifSk6Q3QodSkoKX0pLChhPXQpLmFkZFNob3J0Y3V0KCJNZXRhK0siLCIiLGZ1bmN0aW9uKCl7YS5leGVjQ29tbWFuZCgibWNlTGluayIpfSl9KX0oKX0od2luZG93KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/lists/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/lists/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO3ZhciBlLG4sdCxyLG8saSx1LGY9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuUGx1Z2luTWFuYWdlciIpLHM9ZnVuY3Rpb24oKXt9LHk9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGV9fSxjPWZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4hbihlKX19LGQ9eSghMSksbD15KCEwKSxtPWZ1bmN0aW9uKCl7cmV0dXJuIHB9LHA9KGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuaXNOb25lKCl9LHtmb2xkOmZ1bmN0aW9uKGUsbil7cmV0dXJuIGUoKX0saXM6ZCxpc1NvbWU6ZCxpc05vbmU6bCxnZXRPcjp0PWZ1bmN0aW9uKGUpe3JldHVybiBlfSxnZXRPclRodW5rOm49ZnVuY3Rpb24oZSl7cmV0dXJuIGUoKX0sZ2V0T3JEaWU6ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKGV8fCJlcnJvcjogZ2V0T3JEaWUgY2FsbGVkIG9uIG5vbmUuIil9LGdldE9yTnVsbDp5KG51bGwpLGdldE9yVW5kZWZpbmVkOnkodW5kZWZpbmVkKSxvcjp0LG9yVGh1bms6bixtYXA6bSxlYWNoOnMsYmluZDptLGV4aXN0czpkLGZvcmFsbDpsLGZpbHRlcjptLGVxdWFsczplLGVxdWFsc186ZSx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuW119LHRvU3RyaW5nOnkoIm5vbmUoKSIpfSksZz1mdW5jdGlvbih0KXt2YXIgZT15KHQpLG49ZnVuY3Rpb24oKXtyZXR1cm4gb30scj1mdW5jdGlvbihlKXtyZXR1cm4gZSh0KX0sbz17Zm9sZDpmdW5jdGlvbihlLG4pe3JldHVybiBuKHQpfSxpczpmdW5jdGlvbihlKXtyZXR1cm4gdD09PWV9LGlzU29tZTpsLGlzTm9uZTpkLGdldE9yOmUsZ2V0T3JUaHVuazplLGdldE9yRGllOmUsZ2V0T3JOdWxsOmUsZ2V0T3JVbmRlZmluZWQ6ZSxvcjpuLG9yVGh1bms6bixtYXA6ZnVuY3Rpb24oZSl7cmV0dXJuIGcoZSh0KSl9LGVhY2g6ZnVuY3Rpb24oZSl7ZSh0KX0sYmluZDpyLGV4aXN0czpyLGZvcmFsbDpyLGZpbHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gZSh0KT9vOnB9LHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm5bdF19LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuInNvbWUoIit0KyIpIn0sZXF1YWxzOmZ1bmN0aW9uKGUpe3JldHVybiBlLmlzKHQpfSxlcXVhbHNfOmZ1bmN0aW9uKGUsbil7cmV0dXJuIGUuZm9sZChkLGZ1bmN0aW9uKGUpe3JldHVybiBuKHQsZSl9KX19O3JldHVybiBvfSx2PXtzb21lOmcsbm9uZTptLGZyb206ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PT1lfHxlPT09dW5kZWZpbmVkP3A6ZyhlKX19LGg9ZnVuY3Rpb24ocil7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0PXR5cGVvZihuPWUpLChudWxsPT09bj8ibnVsbCI6Im9iamVjdCI9PXQmJihBcnJheS5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihuKXx8bi5jb25zdHJ1Y3RvciYmIkFycmF5Ij09PW4uY29uc3RydWN0b3IubmFtZSk/ImFycmF5Ijoib2JqZWN0Ij09dCYmKFN0cmluZy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihuKXx8bi5jb25zdHJ1Y3RvciYmIlN0cmluZyI9PT1uLmNvbnN0cnVjdG9yLm5hbWUpPyJzdHJpbmciOnQpPT09cjt2YXIgbix0fX0sUz1mdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlPT09bn19LGI9aCgic3RyaW5nIiksQz1oKCJhcnJheSIpLE89UygiYm9vbGVhbiIpLE49UygiZnVuY3Rpb24iKSxMPVMoIm51bWJlciIpLFQ9QXJyYXkucHJvdG90eXBlLnNsaWNlLHc9QXJyYXkucHJvdG90eXBlLnB1c2gsRD1mdW5jdGlvbihlLG4pe2Zvcih2YXIgdD1lLmxlbmd0aCxyPW5ldyBBcnJheSh0KSxvPTA7bzx0O28rKyl7dmFyIGk9ZVtvXTtyW29dPW4oaSxvKX1yZXR1cm4gcn0saz1mdW5jdGlvbihlLG4pe2Zvcih2YXIgdD0wLHI9ZS5sZW5ndGg7dDxyO3QrKyl7bihlW3RdLHQpfX0seD1mdW5jdGlvbihlLG4pe2Zvcih2YXIgdD1bXSxyPTAsbz1lLmxlbmd0aDtyPG87cisrKXt2YXIgaT1lW3JdO24oaSxyKSYmdC5wdXNoKGkpfXJldHVybiB0fSxBPWZ1bmN0aW9uKGUsbix0KXtyZXR1cm4gayhlLGZ1bmN0aW9uKGUpe3Q9bih0LGUpfSksdH0sRT1mdW5jdGlvbihlLG4sdCl7Zm9yKHZhciByPTAsbz1lLmxlbmd0aDtyPG87cisrKXt2YXIgaT1lW3JdO2lmKG4oaSxyKSlyZXR1cm4gdi5zb21lKGkpO2lmKHQoaSxyKSlicmVha31yZXR1cm4gdi5ub25lKCl9LEI9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gRShlLG4sZCl9LEk9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gZnVuY3Rpb24oZSl7Zm9yKHZhciBuPVtdLHQ9MCxyPWUubGVuZ3RoO3Q8cjsrK3Qpe2lmKCFDKGVbdF0pKXRocm93IG5ldyBFcnJvcigiQXJyLmZsYXR0ZW4gaXRlbSAiK3QrIiB3YXMgbm90IGFuIGFycmF5LCBpbnB1dDogIitlKTt3LmFwcGx5KG4sZVt0XSl9cmV0dXJuIG59KEQoZSxuKSl9LFI9ZnVuY3Rpb24oZSl7dmFyIG49VC5jYWxsKGUsMCk7cmV0dXJuIG4ucmV2ZXJzZSgpLG59LFA9ZnVuY3Rpb24oZSl7cmV0dXJuIDA9PT1lLmxlbmd0aD92Lm5vbmUoKTp2LnNvbWUoZVswXSl9LE09ZnVuY3Rpb24oZSl7cmV0dXJuIDA9PT1lLmxlbmd0aD92Lm5vbmUoKTp2LnNvbWUoZVtlLmxlbmd0aC0xXSl9LFU9ZnVuY3Rpb24oKXtyZXR1cm4oVT1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIG4sdD0xLHI9YXJndW1lbnRzLmxlbmd0aDt0PHI7dCsrKWZvcih2YXIgbyBpbiBuPWFyZ3VtZW50c1t0XSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixvKSYmKGVbb109bltvXSk7cmV0dXJuIGV9KS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LF89ZnVuY3Rpb24oZSxuKXt2YXIgdD1mdW5jdGlvbihlLG4pe2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKXt2YXIgcj1lW3RdO2lmKHIudGVzdChuKSlyZXR1cm4gcn1yZXR1cm4gdW5kZWZpbmVkfShlLG4pO2lmKCF0KXJldHVybnttYWpvcjowLG1pbm9yOjB9O3ZhciByPWZ1bmN0aW9uKGUpe3JldHVybiBOdW1iZXIobi5yZXBsYWNlKHQsIiQiK2UpKX07cmV0dXJuICQocigxKSxyKDIpKX0sRj1mdW5jdGlvbigpe3JldHVybiAkKDAsMCl9LCQ9ZnVuY3Rpb24oZSxuKXtyZXR1cm57bWFqb3I6ZSxtaW5vcjpufX0sSD17bnU6JCxkZXRlY3Q6ZnVuY3Rpb24oZSxuKXt2YXIgdD1TdHJpbmcobikudG9Mb3dlckNhc2UoKTtyZXR1cm4gMD09PWUubGVuZ3RoP0YoKTpfKGUsdCl9LHVua25vd246Rn0saj0iRWRnZSIscT0iQ2hyb21lIixLPSJPcGVyYSIsVj0iRmlyZWZveCIsVz0iU2FmYXJpIixRPWZ1bmN0aW9uKGUpe3ZhciBuPWUuY3VycmVudCx0PWUudmVyc2lvbixyPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBuPT09ZX19O3JldHVybntjdXJyZW50Om4sdmVyc2lvbjp0LGlzRWRnZTpyKGopLGlzQ2hyb21lOnIocSksaXNJRTpyKCJJRSIpLGlzT3BlcmE6cihLKSxpc0ZpcmVmb3g6cihWKSxpc1NhZmFyaTpyKFcpfX0sWD17dW5rbm93bjpmdW5jdGlvbigpe3JldHVybiBRKHtjdXJyZW50OnVuZGVmaW5lZCx2ZXJzaW9uOkgudW5rbm93bigpfSl9LG51OlEsZWRnZTp5KGopLGNocm9tZTp5KHEpLGllOnkoIklFIiksb3BlcmE6eShLKSxmaXJlZm94OnkoViksc2FmYXJpOnkoVyl9LHo9IldpbmRvd3MiLFk9IkFuZHJvaWQiLEc9IlNvbGFyaXMiLEo9IkZyZWVCU0QiLFo9IkNocm9tZU9TIixlZT1mdW5jdGlvbihlKXt2YXIgbj1lLmN1cnJlbnQsdD1lLnZlcnNpb24scj1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbj09PWV9fTtyZXR1cm57Y3VycmVudDpuLHZlcnNpb246dCxpc1dpbmRvd3M6cih6KSxpc2lPUzpyKCJpT1MiKSxpc0FuZHJvaWQ6cihZKSxpc09TWDpyKCJPU1giKSxpc0xpbnV4OnIoIkxpbnV4IiksaXNTb2xhcmlzOnIoRyksaXNGcmVlQlNEOnIoSiksaXNDaHJvbWVPUzpyKFopfX0sbmU9e3Vua25vd246ZnVuY3Rpb24oKXtyZXR1cm4gZWUoe2N1cnJlbnQ6dW5kZWZpbmVkLHZlcnNpb246SC51bmtub3duKCl9KX0sbnU6ZWUsd2luZG93czp5KHopLGlvczp5KCJpT1MiKSxhbmRyb2lkOnkoWSksbGludXg6eSgiTGludXgiKSxvc3g6eSgiT1NYIiksc29sYXJpczp5KEcpLGZyZWVic2Q6eShKKSxjaHJvbWVvczp5KFopfSx0ZT1mdW5jdGlvbihlLG4pe3ZhciB0PVN0cmluZyhuKS50b0xvd2VyQ2FzZSgpO3JldHVybiBCKGUsZnVuY3Rpb24oZSl7cmV0dXJuIGUuc2VhcmNoKHQpfSl9LHJlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRlKGUsdCkubWFwKGZ1bmN0aW9uKGUpe3ZhciBuPUguZGV0ZWN0KGUudmVyc2lvblJlZ2V4ZXMsdCk7cmV0dXJue2N1cnJlbnQ6ZS5uYW1lLHZlcnNpb246bn19KX0sb2U9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGUoZSx0KS5tYXAoZnVuY3Rpb24oZSl7dmFyIG49SC5kZXRlY3QoZS52ZXJzaW9uUmVnZXhlcyx0KTtyZXR1cm57Y3VycmVudDplLm5hbWUsdmVyc2lvbjpufX0pfSxpZT1mdW5jdGlvbihlLG4pe3JldHVybi0xIT09ZS5pbmRleE9mKG4pfSx1ZT0vLio/dmVyc2lvblwvXCA/KFswLTldKylcLihbMC05XSspLiovLGFlPWZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gaWUoZSxuKX19LHNlPVt7bmFtZToiRWRnZSIsdmVyc2lvblJlZ2V4ZXM6Wy8uKj9lZGdlXC8gPyhbMC05XSspXC4oWzAtOV0rKSQvXSxzZWFyY2g6ZnVuY3Rpb24oZSl7cmV0dXJuIGllKGUsImVkZ2UvIikmJmllKGUsImNocm9tZSIpJiZpZShlLCJzYWZhcmkiKSYmaWUoZSwiYXBwbGV3ZWJraXQiKX19LHtuYW1lOiJDaHJvbWUiLHZlcnNpb25SZWdleGVzOlsvLio/Y2hyb21lXC8oWzAtOV0rKVwuKFswLTldKykuKi8sdWVdLHNlYXJjaDpmdW5jdGlvbihlKXtyZXR1cm4gaWUoZSwiY2hyb21lIikmJiFpZShlLCJjaHJvbWVmcmFtZSIpfX0se25hbWU6IklFIix2ZXJzaW9uUmVnZXhlczpbLy4qP21zaWVcID8oWzAtOV0rKVwuKFswLTldKykuKi8sLy4qP3J2OihbMC05XSspXC4oWzAtOV0rKS4qL10sc2VhcmNoOmZ1bmN0aW9uKGUpe3JldHVybiBpZShlLCJtc2llIil8fGllKGUsInRyaWRlbnQiKX19LHtuYW1lOiJPcGVyYSIsdmVyc2lvblJlZ2V4ZXM6W3VlLC8uKj9vcGVyYVwvKFswLTldKylcLihbMC05XSspLiovXSxzZWFyY2g6YWUoIm9wZXJhIil9LHtuYW1lOiJGaXJlZm94Iix2ZXJzaW9uUmVnZXhlczpbLy4qP2ZpcmVmb3hcL1wgPyhbMC05XSspXC4oWzAtOV0rKS4qL10sc2VhcmNoOmFlKCJmaXJlZm94Iil9LHtuYW1lOiJTYWZhcmkiLHZlcnNpb25SZWdleGVzOlt1ZSwvLio/Y3B1IG9zIChbMC05XSspXyhbMC05XSspLiovXSxzZWFyY2g6ZnVuY3Rpb24oZSl7cmV0dXJuKGllKGUsInNhZmFyaSIpfHxpZShlLCJtb2JpbGUvIikpJiZpZShlLCJhcHBsZXdlYmtpdCIpfX1dLGNlPVt7bmFtZToiV2luZG93cyIsc2VhcmNoOmFlKCJ3aW4iKSx2ZXJzaW9uUmVnZXhlczpbLy4qP3dpbmRvd3NcIG50XCA/KFswLTldKylcLihbMC05XSspLiovXX0se25hbWU6ImlPUyIsc2VhcmNoOmZ1bmN0aW9uKGUpe3JldHVybiBpZShlLCJpcGhvbmUiKXx8aWUoZSwiaXBhZCIpfSx2ZXJzaW9uUmVnZXhlczpbLy4qP3ZlcnNpb25cL1wgPyhbMC05XSspXC4oWzAtOV0rKS4qLywvLipjcHUgb3MgKFswLTldKylfKFswLTldKykuKi8sLy4qY3B1IGlwaG9uZSBvcyAoWzAtOV0rKV8oWzAtOV0rKS4qL119LHtuYW1lOiJBbmRyb2lkIixzZWFyY2g6YWUoImFuZHJvaWQiKSx2ZXJzaW9uUmVnZXhlczpbLy4qP2FuZHJvaWRcID8oWzAtOV0rKVwuKFswLTldKykuKi9dfSx7bmFtZToiT1NYIixzZWFyY2g6YWUoIm1hYyBvcyB4IiksdmVyc2lvblJlZ2V4ZXM6Wy8uKj9tYWNcIG9zXCB4XCA/KFswLTldKylfKFswLTldKykuKi9dfSx7bmFtZToiTGludXgiLHNlYXJjaDphZSgibGludXgiKSx2ZXJzaW9uUmVnZXhlczpbXX0se25hbWU6IlNvbGFyaXMiLHNlYXJjaDphZSgic3Vub3MiKSx2ZXJzaW9uUmVnZXhlczpbXX0se25hbWU6IkZyZWVCU0QiLHNlYXJjaDphZSgiZnJlZWJzZCIpLHZlcnNpb25SZWdleGVzOltdfSx7bmFtZToiQ2hyb21lT1MiLHNlYXJjaDphZSgiY3JvcyIpLHZlcnNpb25SZWdleGVzOlsvLio/Y2hyb21lXC8oWzAtOV0rKVwuKFswLTldKykuKi9dfV0sZmU9e2Jyb3dzZXJzOnkoc2UpLG9zZXM6eShjZSl9LGRlPWZ1bmN0aW9uKGUsbil7dmFyIHQscixvLGksdSxhLHMsYyxmLGQsbCxtLHA9ZmUuYnJvd3NlcnMoKSxnPWZlLm9zZXMoKSx2PXJlKHAsZSkuZm9sZChYLnVua25vd24sWC5udSksaD1vZShnLGUpLmZvbGQobmUudW5rbm93bixuZS5udSk7cmV0dXJue2Jyb3dzZXI6dixvczpoLGRldmljZVR5cGU6KHI9dixvPWUsaT1uLHU9KHQ9aCkuaXNpT1MoKSYmITA9PT0vaXBhZC9pLnRlc3QobyksYT10LmlzaU9TKCkmJiF1LHM9dC5pc2lPUygpfHx0LmlzQW5kcm9pZCgpLGM9c3x8aSgiKHBvaW50ZXI6Y29hcnNlKSIpLGY9dXx8IWEmJnMmJmkoIihtaW4tZGV2aWNlLXdpZHRoOjc2OHB4KSIpLGQ9YXx8cyYmIWYsbD1yLmlzU2FmYXJpKCkmJnQuaXNpT1MoKSYmITE9PT0vc2FmYXJpL2kudGVzdChvKSxtPSFkJiYhZiYmIWwse2lzaVBhZDp5KHUpLGlzaVBob25lOnkoYSksaXNUYWJsZXQ6eShmKSxpc1Bob25lOnkoZCksaXNUb3VjaDp5KGMpLGlzQW5kcm9pZDp0LmlzQW5kcm9pZCxpc2lPUzp0LmlzaU9TLGlzV2ViVmlldzp5KGwpLGlzRGVza3RvcDp5KG0pfSl9fSxsZT1mdW5jdGlvbihlKXtyZXR1cm4gYS53aW5kb3cubWF0Y2hNZWRpYShlKS5tYXRjaGVzfSxtZT0oaT0hKHI9ZnVuY3Rpb24oKXtyZXR1cm4gZGUoYS5uYXZpZ2F0b3IudXNlckFnZW50LGxlKX0pLGZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLG49MDtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKWVbbl09YXJndW1lbnRzW25dO3JldHVybiBpfHwoaT0hMCxvPXIuYXBwbHkobnVsbCxlKSksb30pLHBlPWZ1bmN0aW9uKGUpe2lmKG51bGw9PT1lfHxlPT09dW5kZWZpbmVkKXRocm93IG5ldyBFcnJvcigiTm9kZSBjYW5ub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTtyZXR1cm57ZG9tOnkoZSl9fSxnZT17ZnJvbUh0bWw6ZnVuY3Rpb24oZSxuKXt2YXIgdD0obnx8YS5kb2N1bWVudCkuY3JlYXRlRWxlbWVudCgiZGl2Iik7aWYodC5pbm5lckhUTUw9ZSwhdC5oYXNDaGlsZE5vZGVzKCl8fDE8dC5jaGlsZE5vZGVzLmxlbmd0aCl0aHJvdyBhLmNvbnNvbGUuZXJyb3IoIkhUTUwgZG9lcyBub3QgaGF2ZSBhIHNpbmdsZSByb290IG5vZGUiLGUpLG5ldyBFcnJvcigiSFRNTCBtdXN0IGhhdmUgYSBzaW5nbGUgcm9vdCBub2RlIik7cmV0dXJuIHBlKHQuY2hpbGROb2Rlc1swXSl9LGZyb21UYWc6ZnVuY3Rpb24oZSxuKXt2YXIgdD0obnx8YS5kb2N1bWVudCkuY3JlYXRlRWxlbWVudChlKTtyZXR1cm4gcGUodCl9LGZyb21UZXh0OmZ1bmN0aW9uKGUsbil7dmFyIHQ9KG58fGEuZG9jdW1lbnQpLmNyZWF0ZVRleHROb2RlKGUpO3JldHVybiBwZSh0KX0sZnJvbURvbTpwZSxmcm9tUG9pbnQ6ZnVuY3Rpb24oZSxuLHQpe3ZhciByPWUuZG9tKCk7cmV0dXJuIHYuZnJvbShyLmVsZW1lbnRGcm9tUG9pbnQobix0KSkubWFwKHBlKX19LHZlPWZ1bmN0aW9uKGUsbil7cmV0dXJuIGUuZG9tKCk9PT1uLmRvbSgpfSxoZT1mdW5jdGlvbihlLG4pe3JldHVybiB0PWUuZG9tKCkscj1uLmRvbSgpLG89dCxpPXIsdT1hLk5vZGUuRE9DVU1FTlRfUE9TSVRJT05fQ09OVEFJTkVEX0JZLDAhPShvLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGkpJnUpO3ZhciB0LHIsbyxpLHV9LHllPWZ1bmN0aW9uKGUsbil7cmV0dXJuIG1lKCkuYnJvd3Nlci5pc0lFKCk/aGUoZSxuKToodD1uLHI9ZS5kb20oKSxvPXQuZG9tKCksciE9PW8mJnIuY29udGFpbnMobykpO3ZhciB0LHIsb30sU2U9ZnVuY3Rpb24oZSxuKXt2YXIgdD1lLmRvbSgpO2lmKDEhPT10Lm5vZGVUeXBlKXJldHVybiExO3ZhciByPXQ7aWYoci5tYXRjaGVzIT09dW5kZWZpbmVkKXJldHVybiByLm1hdGNoZXMobik7aWYoci5tc01hdGNoZXNTZWxlY3RvciE9PXVuZGVmaW5lZClyZXR1cm4gci5tc01hdGNoZXNTZWxlY3RvcihuKTtpZihyLndlYmtpdE1hdGNoZXNTZWxlY3RvciE9PXVuZGVmaW5lZClyZXR1cm4gci53ZWJraXRNYXRjaGVzU2VsZWN0b3Iobik7aWYoci5tb3pNYXRjaGVzU2VsZWN0b3IhPT11bmRlZmluZWQpcmV0dXJuIHIubW96TWF0Y2hlc1NlbGVjdG9yKG4pO3Rocm93IG5ldyBFcnJvcigiQnJvd3NlciBsYWNrcyBuYXRpdmUgc2VsZWN0b3JzIil9LGJlPXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLmRvbS5SYW5nZVV0aWxzIiksQ2U9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuZG9tLlRyZWVXYWxrZXIiKSxPZT10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS51dGlsLlZLIiksTmU9ZnVuY3Rpb24oZSxuLHQpe3JldHVybiBlLmlzU29tZSgpJiZuLmlzU29tZSgpP3Yuc29tZSh0KGUuZ2V0T3JEaWUoKSxuLmdldE9yRGllKCkpKTp2Lm5vbmUoKX0sTGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHYuZnJvbShlLmRvbSgpLnBhcmVudE5vZGUpLm1hcChnZS5mcm9tRG9tKX0sVGU9ZnVuY3Rpb24oZSl7cmV0dXJuIEQoZS5kb20oKS5jaGlsZE5vZGVzLGdlLmZyb21Eb20pfSx3ZT1mdW5jdGlvbihlLG4pe3ZhciB0PWUuZG9tKCkuY2hpbGROb2RlcztyZXR1cm4gdi5mcm9tKHRbbl0pLm1hcChnZS5mcm9tRG9tKX0sRGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHdlKGUsMCl9LGtlPWZ1bmN0aW9uKGUpe3JldHVybiB3ZShlLGUuZG9tKCkuY2hpbGROb2Rlcy5sZW5ndGgtMSl9LHhlPWZ1bmN0aW9uKG4sdCl7TGUobikuZWFjaChmdW5jdGlvbihlKXtlLmRvbSgpLmluc2VydEJlZm9yZSh0LmRvbSgpLG4uZG9tKCkpfSl9LEFlPWZ1bmN0aW9uKGUsbil7ZS5kb20oKS5hcHBlbmRDaGlsZChuLmRvbSgpKX0sRWU9ZnVuY3Rpb24obixlKXtrKGUsZnVuY3Rpb24oZSl7QWUobixlKX0pfSxCZT1mdW5jdGlvbihlKXt2YXIgbj1lLmRvbSgpO251bGwhPT1uLnBhcmVudE5vZGUmJm4ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChuKX0sSWU9ZnVuY3Rpb24oZSxuLHQpe3JldHVybiBlLmZpcmUoIkxpc3RNdXRhdGlvbiIse2FjdGlvbjpuLGVsZW1lbnQ6dH0pfSxSZT0oInVuZGVmaW5lZCIhPXR5cGVvZiBhLndpbmRvdz9hLndpbmRvdzpGdW5jdGlvbigicmV0dXJuIHRoaXM7IikoKSx0aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS5kb20uRG9tUXVlcnkiKSksUGU9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UudXRpbC5Ub29scyIpLE1lPWZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09bn19LFVlPWZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZSYmbi50ZXN0KGUubm9kZU5hbWUpfX0sX2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJjM9PT1lLm5vZGVUeXBlfSxGZT1VZSgvXihPTHxVTHxETCkkLyksJGU9VWUoL14oT0x8VUwpJC8pLEhlPU1lKCJvbCIpLGplPVVlKC9eKExJfERUfEREKSQvKSxxZT1VZSgvXihEVHxERCkkLyksS2U9VWUoL14oVEh8VEQpJC8pLFZlPU1lKCJiciIpLFdlPWZ1bmN0aW9uKGUsbil7cmV0dXJuIG4mJiEhZS5zY2hlbWEuZ2V0VGV4dEJsb2NrRWxlbWVudHMoKVtuLm5vZGVOYW1lXX0sUWU9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gZSYmZS5ub2RlTmFtZSBpbiBufSxYZT1mdW5jdGlvbihlLG4sdCl7dmFyIHI9ZS5pc0VtcHR5KG4pO3JldHVybiEodCYmMDxlLnNlbGVjdCgic3BhbltkYXRhLW1jZS10eXBlPWJvb2ttYXJrXSIsbikubGVuZ3RoKSYmcn0semU9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gZS5pc0NoaWxkT2YobixlLmdldFJvb3QoKSl9LFllPWZ1bmN0aW9uKGUsbil7dmFyIHQ9bnx8ZS5zZWxlY3Rpb24uZ2V0U3RhcnQoITApO3JldHVybiBlLmRvbS5nZXRQYXJlbnQodCwiT0wsVUwsREwiLFplKGUsdCkpfSxHZT1mdW5jdGlvbihlKXt2YXIgbix0LHIsbz1ZZShlKSxpPWUuc2VsZWN0aW9uLmdldFNlbGVjdGVkQmxvY2tzKCk7cmV0dXJuIHI9aSwodD1vKSYmMT09PXIubGVuZ3RoJiZyWzBdPT09dD8obj1vLFBlLmdyZXAobi5xdWVyeVNlbGVjdG9yQWxsKCJvbCx1bCxkbCIpLGZ1bmN0aW9uKGUpe3JldHVybiBGZShlKX0pKTpQZS5ncmVwKGksZnVuY3Rpb24oZSl7cmV0dXJuIEZlKGUpJiZvIT09ZX0pfSxKZT1mdW5jdGlvbihlKXt2YXIgdCxuLHIsbz1lLnNlbGVjdGlvbi5nZXRTZWxlY3RlZEJsb2NrcygpO3JldHVybiBQZS5ncmVwKCh0PWUsbj1vLHI9UGUubWFwKG4sZnVuY3Rpb24oZSl7dmFyIG49dC5kb20uZ2V0UGFyZW50KGUsImxpLGRkLGR0IixaZSh0LGUpKTtyZXR1cm4gbnx8ZX0pLFJlLnVuaXF1ZShyKSksZnVuY3Rpb24oZSl7cmV0dXJuIGplKGUpfSl9LFplPWZ1bmN0aW9uKGUsbil7dmFyIHQ9ZS5kb20uZ2V0UGFyZW50cyhuLCJURCxUSCIpO3JldHVybiAwPHQubGVuZ3RoP3RbMF06ZS5nZXRCb2R5KCl9LGVuPWZ1bmN0aW9uKGUsbil7dmFyIHQ9ZS5kb20uZ2V0UGFyZW50cyhuLCJvbCx1bCIsWmUoZSxuKSk7cmV0dXJuIE0odCl9LG5uPWZ1bmN0aW9uKGUpe3ZhciBuLHQscixvPSh0PWVuKG49ZSxuLnNlbGVjdGlvbi5nZXRTdGFydCgpKSxyPXgobi5zZWxlY3Rpb24uZ2V0U2VsZWN0ZWRCbG9ja3MoKSwkZSksdC50b0FycmF5KCkuY29uY2F0KHIpKTtyZXR1cm4gdG4oZSxvKX0sdG49ZnVuY3Rpb24obixlKXt2YXIgdD1EKGUsZnVuY3Rpb24oZSl7cmV0dXJuIGVuKG4sZSkuZ2V0T3IoZSl9KTtyZXR1cm4gUmUudW5pcXVlKHQpfSxybj1mdW5jdGlvbihlLG4pe3ZhciB0LHIsbyxpLHU9ZS5kb20sYT1lLnNjaGVtYS5nZXRCbG9ja0VsZW1lbnRzKCkscz11LmNyZWF0ZUZyYWdtZW50KCksYz0hMT09PSh0PWUuZ2V0UGFyYW0oImZvcmNlZF9yb290X2Jsb2NrIiwicCIpKT8iIjohMD09PXQ/InAiOnQ7aWYoYyYmKChvPXUuY3JlYXRlKGMpKS50YWdOYW1lPT09Yy50b1VwcGVyQ2FzZSgpJiZ1LnNldEF0dHJpYnMobyxlLmdldFBhcmFtKCJmb3JjZWRfcm9vdF9ibG9ja19hdHRycyIse30pKSxRZShuLmZpcnN0Q2hpbGQsYSl8fHMuYXBwZW5kQ2hpbGQobykpLG4pZm9yKDtyPW4uZmlyc3RDaGlsZDspe3ZhciBmPXIubm9kZU5hbWU7aXx8IlNQQU4iPT09ZiYmImJvb2ttYXJrIj09PXIuZ2V0QXR0cmlidXRlKCJkYXRhLW1jZS10eXBlIil8fChpPSEwKSxRZShyLGEpPyhzLmFwcGVuZENoaWxkKHIpLG89bnVsbCk6Yz8ob3x8KG89dS5jcmVhdGUoYykscy5hcHBlbmRDaGlsZChvKSksby5hcHBlbmRDaGlsZChyKSk6cy5hcHBlbmRDaGlsZChyKX1yZXR1cm4gYz9pfHxvLmFwcGVuZENoaWxkKHUuY3JlYXRlKCJiciIseyJkYXRhLW1jZS1ib2d1cyI6IjEifSkpOnMuYXBwZW5kQ2hpbGQodS5jcmVhdGUoImJyIikpLHN9LG9uPU9iamVjdC5rZXlzLHVuPWZ1bmN0aW9uKGUsbil7Zm9yKHZhciB0PW9uKGUpLHI9MCxvPXQubGVuZ3RoO3I8bztyKyspe3ZhciBpPXRbcl07bihlW2ldLGkpfX0sYW49ZnVuY3Rpb24oZSxuKXt2YXIgdCxyLG8saSx1PXt9O3JldHVybiB0PW4saT11LHI9ZnVuY3Rpb24oZSxuKXtpW25dPWV9LG89cyx1bihlLGZ1bmN0aW9uKGUsbil7KHQoZSxuKT9yOm8pKGUsbil9KSx1fSxzbj1mdW5jdGlvbihlKXtyZXR1cm4gZS5kb20oKS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpfSxjbj0odT0xLGZ1bmN0aW9uKGUpe3JldHVybiBlLmRvbSgpLm5vZGVUeXBlPT09dX0pLGZuPWZ1bmN0aW9uKGUsbil7dmFyIHQ9ZS5kb20oKTt1bihuLGZ1bmN0aW9uKGUsbil7IWZ1bmN0aW9uKGUsbix0KXtpZighKGIodCl8fE8odCl8fEwodCkpKXRocm93IGEuY29uc29sZS5lcnJvcigiSW52YWxpZCBjYWxsIHRvIEF0dHIuc2V0LiBLZXkgIixuLCI6OiBWYWx1ZSAiLHQsIjo6IEVsZW1lbnQgIixlKSxuZXcgRXJyb3IoIkF0dHJpYnV0ZSB2YWx1ZSB3YXMgbm90IHNpbXBsZSIpO2Uuc2V0QXR0cmlidXRlKG4sdCsiIil9KHQsbixlKX0pfSxkbj1mdW5jdGlvbihlKXtyZXR1cm4gQShlLmRvbSgpLmF0dHJpYnV0ZXMsZnVuY3Rpb24oZSxuKXtyZXR1cm4gZVtuLm5hbWVdPW4udmFsdWUsZX0se30pfSxsbj1mdW5jdGlvbihlLG4sdCl7aWYoIWIodCkpdGhyb3cgYS5jb25zb2xlLmVycm9yKCJJbnZhbGlkIGNhbGwgdG8gQ1NTLnNldC4gUHJvcGVydHkgIixuLCI6OiBWYWx1ZSAiLHQsIjo6IEVsZW1lbnQgIixlKSxuZXcgRXJyb3IoIkNTUyB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nOiAiK3QpO3ZhciByOyhyPWUpLnN0eWxlIT09dW5kZWZpbmVkJiZOKHIuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSkmJmUuc3R5bGUuc2V0UHJvcGVydHkobix0KX0sbW49ZnVuY3Rpb24oZSl7cmV0dXJuIG49ZSx0PSEwLGdlLmZyb21Eb20obi5kb20oKS5jbG9uZU5vZGUodCkpO3ZhciBuLHR9LHBuPWZ1bmN0aW9uKGUsbil7dmFyIHQscixvLGksdT0odD1lLHI9bixvPWdlLmZyb21UYWcociksaT1kbih0KSxmbihvLGkpLG8pO3hlKGUsdSk7dmFyIGE9VGUoZSk7cmV0dXJuIEVlKHUsYSksQmUoZSksdX0sZ249ZnVuY3Rpb24oZSxuKXtBZShlLml0ZW0sbi5saXN0KX0sdm49ZnVuY3Rpb24oZixlLGQpe3ZhciBuPWUuc2xpY2UoMCxkLmRlcHRoKTtyZXR1cm4gTShuKS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBuLHQscixvLGksdSxhLHMsYz0obj1mLHQ9ZC5pdGVtQXR0cmlidXRlcyxyPWQuY29udGVudCxvPWdlLmZyb21UYWcoImxpIixuKSxmbihvLHQpLEVlKG8sciksbyk7dT1jLEFlKChpPWUpLmxpc3QsdSksaS5pdGVtPXUscz1kLHNuKChhPWUpLmxpc3QpIT09cy5saXN0VHlwZSYmKGEubGlzdD1wbihhLmxpc3Qscy5saXN0VHlwZSkpLGZuKGEubGlzdCxzLmxpc3RBdHRyaWJ1dGVzKX0pLG59LGhuPWZ1bmN0aW9uKGUsbix0KXt2YXIgcixvPWZ1bmN0aW9uKGUsbix0KXtmb3IodmFyIHIsbyxpLHU9W10sYT0wO2E8dDthKyspdS5wdXNoKChyPWUsbz1uLmxpc3RUeXBlLGk9e2xpc3Q6Z2UuZnJvbVRhZyhvLHIpLGl0ZW06Z2UuZnJvbVRhZygibGkiLHIpfSxBZShpLmxpc3QsaS5pdGVtKSxpKSk7cmV0dXJuIHV9KGUsdCx0LmRlcHRoLW4ubGVuZ3RoKTtyZXR1cm4gZnVuY3Rpb24oZSl7Zm9yKHZhciBuPTE7bjxlLmxlbmd0aDtuKyspZ24oZVtuLTFdLGVbbl0pfShvKSxmdW5jdGlvbihlLG4pe2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGgtMTt0Kyspcj1lW3RdLml0ZW0sbz0ibGlzdC1zdHlsZS10eXBlIixpPSJub25lIix1PXIuZG9tKCksbG4odSxvLGkpO3ZhciByLG8saSx1O00oZSkuZWFjaChmdW5jdGlvbihlKXtmbihlLmxpc3Qsbi5saXN0QXR0cmlidXRlcyksZm4oZS5pdGVtLG4uaXRlbUF0dHJpYnV0ZXMpLEVlKGUuaXRlbSxuLmNvbnRlbnQpfSl9KG8sdCkscj1vLE5lKE0obiksUChyKSxnbiksbi5jb25jYXQobyl9LHluPWZ1bmN0aW9uKGUpe3JldHVybiBTZShlLCJPTCxVTCIpfSxTbj1mdW5jdGlvbihlKXtyZXR1cm4gRGUoZSkubWFwKHluKS5nZXRPcighMSl9LGJuPWZ1bmN0aW9uKGUpe3JldHVybiAwPGUuZGVwdGh9LENuPWZ1bmN0aW9uKGUpe3JldHVybiBlLmlzU2VsZWN0ZWR9LE9uPWZ1bmN0aW9uKGUpe3ZhciBuPVRlKGUpLHQ9a2UoZSkubWFwKHluKS5nZXRPcighMSk/bi5zbGljZSgwLC0xKTpuO3JldHVybiBEKHQsbW4pfSxObj1mdW5jdGlvbihhKXtyZXR1cm4gayhhLGZ1bmN0aW9uKHIsZSl7dmFyIG4sdCxvLGksdTtvPShuPWEpW3Q9ZV0uZGVwdGgsaT1mdW5jdGlvbihlKXtyZXR1cm4gZS5kZXB0aD09PW8mJiFlLmRpcnR5fSx1PWZ1bmN0aW9uKGUpe3JldHVybiBlLmRlcHRoPG99LEUoUihuLnNsaWNlKDAsdCkpLGksdSkub3JUaHVuayhmdW5jdGlvbigpe3JldHVybiBFKG4uc2xpY2UodCsxKSxpLHUpfSkuZm9sZChmdW5jdGlvbigpe3ZhciBlO3IuZGlydHkmJigoZT1yKS5saXN0QXR0cmlidXRlcz1hbihlLmxpc3RBdHRyaWJ1dGVzLGZ1bmN0aW9uKGUsbil7cmV0dXJuInN0YXJ0IiE9PW59KSl9LGZ1bmN0aW9uKGUpe3JldHVybiB0PWUsKG49cikubGlzdFR5cGU9dC5saXN0VHlwZSx2b2lkKG4ubGlzdEF0dHJpYnV0ZXM9VSh7fSx0Lmxpc3RBdHRyaWJ1dGVzKSk7dmFyIG4sdH0pfSksYX0sTG49ZnVuY3Rpb24oaSx1LGEscyl7cmV0dXJuIERlKHMpLmZpbHRlcih5bikuZm9sZChmdW5jdGlvbigpe3UuZWFjaChmdW5jdGlvbihlKXt2ZShlLnN0YXJ0LHMpJiZhLnNldCghMCl9KTt2YXIgbix0LHIsZT0obj1zLHQ9aSxyPWEuZ2V0KCksTGUobikuZmlsdGVyKGNuKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJue2RlcHRoOnQsZGlydHk6ITEsaXNTZWxlY3RlZDpyLGNvbnRlbnQ6T24obiksaXRlbUF0dHJpYnV0ZXM6ZG4obiksbGlzdEF0dHJpYnV0ZXM6ZG4oZSksbGlzdFR5cGU6c24oZSl9fSkpO3UuZWFjaChmdW5jdGlvbihlKXt2ZShlLmVuZCxzKSYmYS5zZXQoITEpfSk7dmFyIG89a2UocykuZmlsdGVyKHluKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIFRuKGksdSxhLGUpfSkuZ2V0T3IoW10pO3JldHVybiBlLnRvQXJyYXkoKS5jb25jYXQobyl9LGZ1bmN0aW9uKGUpe3JldHVybiBUbihpLHUsYSxlKX0pfSxUbj1mdW5jdGlvbihuLHQscixlKXtyZXR1cm4gSShUZShlKSxmdW5jdGlvbihlKXtyZXR1cm4oeW4oZSk/VG46TG4pKG4rMSx0LHIsZSl9KX0sd249ZnVuY3Rpb24oZSxuKXt2YXIgdCxyPSh0PSExLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdH0sc2V0OmZ1bmN0aW9uKGUpe3Q9ZX19KTtyZXR1cm4gRChlLGZ1bmN0aW9uKGUpe3JldHVybntzb3VyY2VMaXN0OmUsZW50cmllczpUbigwLG4scixlKX19KX0sRG49ZnVuY3Rpb24oaSxlKXt2YXIgbj1ObihlKTtyZXR1cm4gRChuLGZ1bmN0aW9uKGUpe3ZhciBuLHQscixvPShuPWUuY29udGVudCxyPSh0fHxhLmRvY3VtZW50KS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksayhuLGZ1bmN0aW9uKGUpe3IuYXBwZW5kQ2hpbGQoZS5kb20oKSl9KSxnZS5mcm9tRG9tKHIpKTtyZXR1cm4gZ2UuZnJvbURvbShybihpLG8uZG9tKCkpKX0pfSxrbj1mdW5jdGlvbihlLG4pe3ZhciB0LHIsbz1ObihuKTtyZXR1cm4gdD1lLmNvbnRlbnREb2N1bWVudCxyPUEobyxmdW5jdGlvbihlLG4pe3JldHVybihuLmRlcHRoPmUubGVuZ3RoP2huOnZuKSh0LGUsbil9LFtdKSxQKHIpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5saXN0fSkudG9BcnJheSgpfSx4bj1mdW5jdGlvbihhLGUscyl7dmFyIG4sdD13bihlLChuPUQoSmUoYSksZ2UuZnJvbURvbSksTmUoQihuLGMoU24pKSxCKFIobiksYyhTbikpLGZ1bmN0aW9uKGUsbil7cmV0dXJue3N0YXJ0OmUsZW5kOm59fSkpKTtrKHQsZnVuY3Rpb24oZSl7dmFyIG4sdDtuPWUuZW50cmllcyx0PXMsayh4KG4sQ24pLGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihlLG4pe3N3aXRjaChlKXtjYXNlIkluZGVudCI6bi5kZXB0aCsrO2JyZWFrO2Nhc2UiT3V0ZGVudCI6bi5kZXB0aC0tO2JyZWFrO2Nhc2UiRmxhdHRlbiI6bi5kZXB0aD0wfW4uZGlydHk9ITB9KHQsZSl9KTt2YXIgcixvLGksdT0ocj1hLG89ZS5lbnRyaWVzLEkoZnVuY3Rpb24oZSxuKXtpZigwPT09ZS5sZW5ndGgpcmV0dXJuW107Zm9yKHZhciB0PW4oZVswXSkscj1bXSxvPVtdLGk9MCx1PWUubGVuZ3RoO2k8dTtpKyspe3ZhciBhPWVbaV0scz1uKGEpO3MhPT10JiYoci5wdXNoKG8pLG89W10pLHQ9cyxvLnB1c2goYSl9cmV0dXJuIDAhPT1vLmxlbmd0aCYmci5wdXNoKG8pLHJ9KG8sYm4pLGZ1bmN0aW9uKGUpe3JldHVybihQKGUpLm1hcChibikuZ2V0T3IoITEpP2tuOkRuKShyLGUpfSkpO2sodSxmdW5jdGlvbihlKXtJZShhLCJJbmRlbnQiPT09cz8iSW5kZW50TGlzdCI6Ik91dGRlbnRMaXN0IixlLmRvbSgpKX0pLGk9ZS5zb3VyY2VMaXN0LGsodSxmdW5jdGlvbihlKXt4ZShpLGUpfSksQmUoZS5zb3VyY2VMaXN0KX0pfSxBbj10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS5kb20uRE9NVXRpbHMiKSxFbj1Bbi5ET00sQm49ZnVuY3Rpb24obix0KXtTZSh0LCJkZCIpP3BuKHQsImR0Iik6U2UodCwiZHQiKSYmTGUodCkuZWFjaChmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oZSxuLHQpe3ZhciByLG8saSx1LGEscztmb3IoaT1Fbi5zZWxlY3QoJ3NwYW5bZGF0YS1tY2UtdHlwZT0iYm9va21hcmsiXScsbiksYT1ybihlLHQpLChyPUVuLmNyZWF0ZVJuZygpKS5zZXRTdGFydEFmdGVyKHQpLHIuc2V0RW5kQWZ0ZXIobiksdT0obz1yLmV4dHJhY3RDb250ZW50cygpKS5maXJzdENoaWxkO3U7dT11LmZpcnN0Q2hpbGQpaWYoIkxJIj09PXUubm9kZU5hbWUmJmUuZG9tLmlzRW1wdHkodSkpe0VuLnJlbW92ZSh1KTticmVha31lLmRvbS5pc0VtcHR5KG8pfHxFbi5pbnNlcnRBZnRlcihvLG4pLEVuLmluc2VydEFmdGVyKGEsbiksWGUoZS5kb20sdC5wYXJlbnROb2RlKSYmKHM9dC5wYXJlbnROb2RlLFBlLmVhY2goaSxmdW5jdGlvbihlKXtzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGUsdC5wYXJlbnROb2RlKX0pLEVuLnJlbW92ZShzKSksRW4ucmVtb3ZlKHQpLFhlKGUuZG9tLG4pJiZFbi5yZW1vdmUobil9KG4sZS5kb20oKSx0LmRvbSgpKX0pfSxJbj1mdW5jdGlvbihlKXtTZShlLCJkdCIpJiZwbihlLCJkZCIpfSxSbj1mdW5jdGlvbihlLG4pe2lmKF9lKGUpKXJldHVybntjb250YWluZXI6ZSxvZmZzZXQ6bn07dmFyIHQ9YmUuZ2V0Tm9kZShlLG4pO3JldHVybiBfZSh0KT97Y29udGFpbmVyOnQsb2Zmc2V0Om4+PWUuY2hpbGROb2Rlcy5sZW5ndGg/dC5kYXRhLmxlbmd0aDowfTp0LnByZXZpb3VzU2libGluZyYmX2UodC5wcmV2aW91c1NpYmxpbmcpP3tjb250YWluZXI6dC5wcmV2aW91c1NpYmxpbmcsb2Zmc2V0OnQucHJldmlvdXNTaWJsaW5nLmRhdGEubGVuZ3RofTp0Lm5leHRTaWJsaW5nJiZfZSh0Lm5leHRTaWJsaW5nKT97Y29udGFpbmVyOnQubmV4dFNpYmxpbmcsb2Zmc2V0OjB9Ontjb250YWluZXI6ZSxvZmZzZXQ6bn19LFBuPWZ1bmN0aW9uKGUpe3ZhciBuPWUuY2xvbmVSYW5nZSgpLHQ9Um4oZS5zdGFydENvbnRhaW5lcixlLnN0YXJ0T2Zmc2V0KTtuLnNldFN0YXJ0KHQuY29udGFpbmVyLHQub2Zmc2V0KTt2YXIgcj1SbihlLmVuZENvbnRhaW5lcixlLmVuZE9mZnNldCk7cmV0dXJuIG4uc2V0RW5kKHIuY29udGFpbmVyLHIub2Zmc2V0KSxufSxNbj1mdW5jdGlvbihlLG4pe3ZhciB0LHI9RChubihlKSxnZS5mcm9tRG9tKSxvPUQoeChKZShlKSxxZSksZ2UuZnJvbURvbSksaT0hMTtpZihyLmxlbmd0aHx8by5sZW5ndGgpe3ZhciB1PWUuc2VsZWN0aW9uLmdldEJvb2ttYXJrKCk7eG4oZSxyLG4pLHQ9ZSxrKG8sIkluZGVudCI9PT1uP0luOmZ1bmN0aW9uKGUpe3JldHVybiBCbih0LGUpfSksZS5zZWxlY3Rpb24ubW92ZVRvQm9va21hcmsodSksZS5zZWxlY3Rpb24uc2V0Um5nKFBuKGUuc2VsZWN0aW9uLmdldFJuZygpKSksZS5ub2RlQ2hhbmdlZCgpLGk9ITB9cmV0dXJuIGl9LFVuPWZ1bmN0aW9uKGUpe3JldHVybiBNbihlLCJJbmRlbnQiKX0sX249ZnVuY3Rpb24oZSl7cmV0dXJuIE1uKGUsIk91dGRlbnQiKX0sRm49ZnVuY3Rpb24oZSl7cmV0dXJuIE1uKGUsIkZsYXR0ZW4iKX0sJG49dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuZG9tLkJvb2ttYXJrTWFuYWdlciIpLEhuPUFuLkRPTSxqbj1mdW5jdGlvbihvKXt2YXIgaT17fSxlPWZ1bmN0aW9uKGUpe3ZhciBuLHQscjt0PW9bZT8ic3RhcnRDb250YWluZXIiOiJlbmRDb250YWluZXIiXSxyPW9bZT8ic3RhcnRPZmZzZXQiOiJlbmRPZmZzZXQiXSwxPT09dC5ub2RlVHlwZSYmKG49SG4uY3JlYXRlKCJzcGFuIix7ImRhdGEtbWNlLXR5cGUiOiJib29rbWFyayJ9KSx0Lmhhc0NoaWxkTm9kZXMoKT8ocj1NYXRoLm1pbihyLHQuY2hpbGROb2Rlcy5sZW5ndGgtMSksZT90Lmluc2VydEJlZm9yZShuLHQuY2hpbGROb2Rlc1tyXSk6SG4uaW5zZXJ0QWZ0ZXIobix0LmNoaWxkTm9kZXNbcl0pKTp0LmFwcGVuZENoaWxkKG4pLHQ9bixyPTApLGlbZT8ic3RhcnRDb250YWluZXIiOiJlbmRDb250YWluZXIiXT10LGlbZT8ic3RhcnRPZmZzZXQiOiJlbmRPZmZzZXQiXT1yfTtyZXR1cm4gZSghMCksby5jb2xsYXBzZWR8fGUoKSxpfSxxbj1mdW5jdGlvbihvKXtmdW5jdGlvbiBlKGUpe3ZhciBuLHQscjtuPXI9b1tlPyJzdGFydENvbnRhaW5lciI6ImVuZENvbnRhaW5lciJdLHQ9b1tlPyJzdGFydE9mZnNldCI6ImVuZE9mZnNldCJdLG4mJigxPT09bi5ub2RlVHlwZSYmKHQ9ZnVuY3Rpb24oZSl7Zm9yKHZhciBuPWUucGFyZW50Tm9kZS5maXJzdENoaWxkLHQ9MDtuOyl7aWYobj09PWUpcmV0dXJuIHQ7MT09PW4ubm9kZVR5cGUmJiJib29rbWFyayI9PT1uLmdldEF0dHJpYnV0ZSgiZGF0YS1tY2UtdHlwZSIpfHx0Kyssbj1uLm5leHRTaWJsaW5nfXJldHVybi0xfShuKSxuPW4ucGFyZW50Tm9kZSxIbi5yZW1vdmUociksIW4uaGFzQ2hpbGROb2RlcygpJiZIbi5pc0Jsb2NrKG4pJiZuLmFwcGVuZENoaWxkKEhuLmNyZWF0ZSgiYnIiKSkpLG9bZT8ic3RhcnRDb250YWluZXIiOiJlbmRDb250YWluZXIiXT1uLG9bZT8ic3RhcnRPZmZzZXQiOiJlbmRPZmZzZXQiXT10KX1lKCEwKSxlKCk7dmFyIG49SG4uY3JlYXRlUm5nKCk7cmV0dXJuIG4uc2V0U3RhcnQoby5zdGFydENvbnRhaW5lcixvLnN0YXJ0T2Zmc2V0KSxvLmVuZENvbnRhaW5lciYmbi5zZXRFbmQoby5lbmRDb250YWluZXIsby5lbmRPZmZzZXQpLFBuKG4pfSxLbj1mdW5jdGlvbihlKXtyZXR1cm4vXGJ0b3hcLS8udGVzdChlLmNsYXNzTmFtZSl9LFZuPWZ1bmN0aW9uKG4sdCxyKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT1mdW5jdGlvbihlKXt2YXIgbj1FKGUucGFyZW50cyxGZSxLZSkuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLm5vZGVOYW1lPT09dCYmIUtuKGUpfSkuaXNTb21lKCk7cihuKX07cmV0dXJuIG4ub24oIk5vZGVDaGFuZ2UiLGUpLGZ1bmN0aW9uKCl7cmV0dXJuIG4ub2ZmKCJOb2RlQ2hhbmdlIixlKX19fSxXbj1mdW5jdGlvbihlKXtzd2l0Y2goZSl7Y2FzZSJVTCI6cmV0dXJuIlRvZ2dsZVVsTGlzdCI7Y2FzZSJPTCI6cmV0dXJuIlRvZ2dsZU9sTGlzdCI7Y2FzZSJETCI6cmV0dXJuIlRvZ2dsZURMTGlzdCJ9fSxRbj1mdW5jdGlvbih0LGUpe1BlLmVhY2goZSxmdW5jdGlvbihlLG4pe3Quc2V0QXR0cmlidXRlKG4sZSl9KX0sWG49ZnVuY3Rpb24oZSxuLHQpe3ZhciByLG8saSx1LGEscyxjO3I9ZSxvPW4sdT0oaT10KVsibGlzdC1zdHlsZS10eXBlIl0/aVsibGlzdC1zdHlsZS10eXBlIl06bnVsbCxyLnNldFN0eWxlKG8sImxpc3Qtc3R5bGUtdHlwZSIsdSksYT1lLFFuKHM9biwoYz10KVsibGlzdC1hdHRyaWJ1dGVzIl0pLFBlLmVhY2goYS5zZWxlY3QoImxpIixzKSxmdW5jdGlvbihlKXtRbihlLGNbImxpc3QtaXRlbS1hdHRyaWJ1dGVzIl0pfSl9LHpuPWZ1bmN0aW9uKGUsbix0LHIpe3ZhciBvLGk7Zm9yKG89blt0PyJzdGFydENvbnRhaW5lciI6ImVuZENvbnRhaW5lciJdLGk9blt0PyJzdGFydE9mZnNldCI6ImVuZE9mZnNldCJdLDE9PT1vLm5vZGVUeXBlJiYobz1vLmNoaWxkTm9kZXNbTWF0aC5taW4oaSxvLmNoaWxkTm9kZXMubGVuZ3RoLTEpXXx8byksIXQmJlZlKG8ubmV4dFNpYmxpbmcpJiYobz1vLm5leHRTaWJsaW5nKTtvLnBhcmVudE5vZGUhPT1yOyl7aWYoV2UoZSxvKSlyZXR1cm4gbztpZigvXihURHxUSCkkLy50ZXN0KG8ucGFyZW50Tm9kZS5ub2RlTmFtZSkpcmV0dXJuIG87bz1vLnBhcmVudE5vZGV9cmV0dXJuIG99LFluPWZ1bmN0aW9uKGYsZCxsKXt2b2lkIDA9PT1sJiYobD17fSk7dmFyIGUsbj1mLnNlbGVjdGlvbi5nZXRSbmcoITApLG09IkxJIix0PVplKGYsZi5zZWxlY3Rpb24uZ2V0U3RhcnQoITApKSxwPWYuZG9tOyJmYWxzZSIhPT1wLmdldENvbnRlbnRFZGl0YWJsZShmLnNlbGVjdGlvbi5nZXROb2RlKCkpJiYoIkRMIj09PShkPWQudG9VcHBlckNhc2UoKSkmJihtPSJEVCIpLGU9am4obiksUGUuZWFjaChmdW5jdGlvbih0LGUscil7Zm9yKHZhciBvLGk9W10sdT10LmRvbSxuPXpuKHQsZSwhMCxyKSxhPXpuKHQsZSwhMSxyKSxzPVtdLGM9bjtjJiYocy5wdXNoKGMpLGMhPT1hKTtjPWMubmV4dFNpYmxpbmcpO3JldHVybiBQZS5lYWNoKHMsZnVuY3Rpb24oZSl7aWYoV2UodCxlKSlyZXR1cm4gaS5wdXNoKGUpLHZvaWQobz1udWxsKTtpZih1LmlzQmxvY2soZSl8fFZlKGUpKXJldHVybiBWZShlKSYmdS5yZW1vdmUoZSksdm9pZChvPW51bGwpO3ZhciBuPWUubmV4dFNpYmxpbmc7JG4uaXNCb29rbWFya05vZGUoZSkmJihXZSh0LG4pfHwhbiYmZS5wYXJlbnROb2RlPT09cik/bz1udWxsOihvfHwobz11LmNyZWF0ZSgicCIpLGUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobyxlKSxpLnB1c2gobykpLG8uYXBwZW5kQ2hpbGQoZSkpfSksaX0oZixuLHQpLGZ1bmN0aW9uKGUpe3ZhciBuLHQscixvLGksdSxhLHMsYzsodD1lLnByZXZpb3VzU2libGluZykmJkZlKHQpJiZ0Lm5vZGVOYW1lPT09ZCYmKHI9dCxvPWwsaT1wLmdldFN0eWxlKHIsImxpc3Qtc3R5bGUtdHlwZSIpLHU9bz9vWyJsaXN0LXN0eWxlLXR5cGUiXToiIixpPT09KHU9bnVsbD09PXU/IiI6dSkpPyhuPXQsZT1wLnJlbmFtZShlLG0pLHQuYXBwZW5kQ2hpbGQoZSkpOihuPXAuY3JlYXRlKGQpLGUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobixlKSxuLmFwcGVuZENoaWxkKGUpLGU9cC5yZW5hbWUoZSxtKSksYT1wLHM9ZSxjPVsibWFyZ2luIiwibWFyZ2luLXJpZ2h0IiwibWFyZ2luLWJvdHRvbSIsIm1hcmdpbi1sZWZ0IiwibWFyZ2luLXRvcCIsInBhZGRpbmciLCJwYWRkaW5nLXJpZ2h0IiwicGFkZGluZy1ib3R0b20iLCJwYWRkaW5nLWxlZnQiLCJwYWRkaW5nLXRvcCJdLFBlLmVhY2goYyxmdW5jdGlvbihlKXt2YXIgbjtyZXR1cm4gYS5zZXRTdHlsZShzLCgobj17fSlbZV09IiIsbikpfSksWG4ocCxuLGwpLEpuKGYuZG9tLG4pfSksZi5zZWxlY3Rpb24uc2V0Um5nKHFuKGUpKSl9LEduPWZ1bmN0aW9uKGUsbix0KXtyZXR1cm4gcz10LChhPW4pJiZzJiZGZShhKSYmYS5ub2RlTmFtZT09PXMubm9kZU5hbWUmJihpPW4sdT10LChvPWUpLmdldFN0eWxlKGksImxpc3Qtc3R5bGUtdHlwZSIsITApPT09by5nZXRTdHlsZSh1LCJsaXN0LXN0eWxlLXR5cGUiLCEwKSkmJihyPXQsbi5jbGFzc05hbWU9PT1yLmNsYXNzTmFtZSk7dmFyIHIsbyxpLHUsYSxzfSxKbj1mdW5jdGlvbihlLG4pe3ZhciB0LHI7aWYodD1uLm5leHRTaWJsaW5nLEduKGUsbix0KSl7Zm9yKDtyPXQuZmlyc3RDaGlsZDspbi5hcHBlbmRDaGlsZChyKTtlLnJlbW92ZSh0KX1pZih0PW4ucHJldmlvdXNTaWJsaW5nLEduKGUsbix0KSl7Zm9yKDtyPXQubGFzdENoaWxkOyluLmluc2VydEJlZm9yZShyLG4uZmlyc3RDaGlsZCk7ZS5yZW1vdmUodCl9fSxabj1mdW5jdGlvbihuLGUsdCxyLG8pe2lmKGUubm9kZU5hbWUhPT1yfHxldChvKSl7dmFyIGk9am4obi5zZWxlY3Rpb24uZ2V0Um5nKCEwKSk7UGUuZWFjaChbZV0uY29uY2F0KHQpLGZ1bmN0aW9uKGUpeyFmdW5jdGlvbihlLG4sdCxyKXtpZihuLm5vZGVOYW1lIT09dCl7dmFyIG89ZS5kb20ucmVuYW1lKG4sdCk7WG4oZS5kb20sbyxyKSxJZShlLFduKHQpLG8pfWVsc2UgWG4oZS5kb20sbixyKSxJZShlLFduKHQpLG4pfShuLGUscixvKX0pLG4uc2VsZWN0aW9uLnNldFJuZyhxbihpKSl9ZWxzZSBGbihuKX0sZXQ9ZnVuY3Rpb24oZSl7cmV0dXJuImxpc3Qtc3R5bGUtdHlwZSJpbiBlfSxudD1mdW5jdGlvbihlLG4sdCl7dmFyIHI9WWUoZSksbz1HZShlKTt0PXR8fHt9LHImJjA8by5sZW5ndGg/Wm4oZSxyLG8sbix0KTpmdW5jdGlvbihlLG4sdCxyKXtpZihuIT09ZS5nZXRCb2R5KCkpaWYobilpZihuLm5vZGVOYW1lIT09dHx8ZXQocil8fEtuKG4pKXt2YXIgbz1qbihlLnNlbGVjdGlvbi5nZXRSbmcoITApKTtYbihlLmRvbSxuLHIpO3ZhciBpPWUuZG9tLnJlbmFtZShuLHQpO0puKGUuZG9tLGkpLGUuc2VsZWN0aW9uLnNldFJuZyhxbihvKSksSWUoZSxXbih0KSxpKX1lbHNlIEZuKGUpO2Vsc2UgWW4oZSx0LHIpLEllKGUsV24odCksbil9KGUscixuLHQpfSx0dD1Bbi5ET00scnQ9ZnVuY3Rpb24oaSxlKXtQZS5lYWNoKFBlLmdyZXAoaS5zZWxlY3QoIm9sLHVsIixlKSksZnVuY3Rpb24oZSl7dmFyIG4sdCxyLG87bj1pLCJMSSI9PT0obz0odD1lKS5wYXJlbnROb2RlKS5ub2RlTmFtZSYmby5maXJzdENoaWxkPT09dCYmKChyPW8ucHJldmlvdXNTaWJsaW5nKSYmIkxJIj09PXIubm9kZU5hbWU/KHIuYXBwZW5kQ2hpbGQodCksWGUobixvKSYmdHQucmVtb3ZlKG8pKTp0dC5zZXRTdHlsZShvLCJsaXN0U3R5bGVUeXBlIiwibm9uZSIpKSxGZShvKSYmKHI9by5wcmV2aW91c1NpYmxpbmcpJiYiTEkiPT09ci5ub2RlTmFtZSYmci5hcHBlbmRDaGlsZCh0KX0pfSxvdD1mdW5jdGlvbihlLG4sdCxyKXt2YXIgbz1uLnN0YXJ0Q29udGFpbmVyLGk9bi5zdGFydE9mZnNldDtpZihfZShvKSYmKHQ/aTxvLmRhdGEubGVuZ3RoOjA8aSkpcmV0dXJuIG87dmFyIHU9ZS5zY2hlbWEuZ2V0Tm9uRW1wdHlFbGVtZW50cygpOzE9PT1vLm5vZGVUeXBlJiYobz1iZS5nZXROb2RlKG8saSkpO3ZhciBhLHMsYz1uZXcgQ2UobyxyKTtmb3IodCYmKGE9ZS5kb20sVmUocz1vKSYmYS5pc0Jsb2NrKHMubmV4dFNpYmxpbmcpJiYhVmUocy5wcmV2aW91c1NpYmxpbmcpJiZjLm5leHQoKSk7bz1jW3Q/Im5leHQiOiJwcmV2MiJdKCk7KXtpZigiTEkiPT09by5ub2RlTmFtZSYmIW8uaGFzQ2hpbGROb2RlcygpKXJldHVybiBvO2lmKHVbby5ub2RlTmFtZV0pcmV0dXJuIG87aWYoX2UobykmJjA8by5kYXRhLmxlbmd0aClyZXR1cm4gb319LGl0PWZ1bmN0aW9uKGUsbil7dmFyIHQ9bi5jaGlsZE5vZGVzO3JldHVybiAxPT09dC5sZW5ndGgmJiFGZSh0WzBdKSYmZS5pc0Jsb2NrKHRbMF0pfSx1dD1mdW5jdGlvbihlLG4sdCl7dmFyIHIsbyxpLHU7aWYobz1pdChlLHQpP3QuZmlyc3RDaGlsZDp0LGl0KGk9ZSx1PW4pJiZpLnJlbW92ZSh1LmZpcnN0Q2hpbGQsITApLCFYZShlLG4sITApKWZvcig7cj1uLmZpcnN0Q2hpbGQ7KW8uYXBwZW5kQ2hpbGQocil9LGF0PWZ1bmN0aW9uKG4sZSx0KXt2YXIgcixvLGk9ZS5wYXJlbnROb2RlO2lmKHplKG4sZSkmJnplKG4sdCkpe0ZlKHQubGFzdENoaWxkKSYmKG89dC5sYXN0Q2hpbGQpLGk9PT10Lmxhc3RDaGlsZCYmVmUoaS5wcmV2aW91c1NpYmxpbmcpJiZuLnJlbW92ZShpLnByZXZpb3VzU2libGluZyksKHI9dC5sYXN0Q2hpbGQpJiZWZShyKSYmZS5oYXNDaGlsZE5vZGVzKCkmJm4ucmVtb3ZlKHIpLFhlKG4sdCwhMCkmJm4uJCh0KS5lbXB0eSgpLHV0KG4sZSx0KSxvJiZ0LmFwcGVuZENoaWxkKG8pO3ZhciB1PXllKGdlLmZyb21Eb20odCksZ2UuZnJvbURvbShlKSk/bi5nZXRQYXJlbnRzKGUsRmUsdCk6W107bi5yZW1vdmUoZSksayh1LGZ1bmN0aW9uKGUpe1hlKG4sZSkmJmUhPT1uLmdldFJvb3QoKSYmbi5yZW1vdmUoZSl9KX19LHN0PWZ1bmN0aW9uKGUsbix0LHIpe3ZhciBvLGksdSxhPWUuZG9tO2lmKGEuaXNFbXB0eShyKSlpPXQsdT1yLChvPWUpLmRvbS4kKHUpLmVtcHR5KCksYXQoby5kb20saSx1KSxvLnNlbGVjdGlvbi5zZXRDdXJzb3JMb2NhdGlvbih1KTtlbHNle3ZhciBzPWpuKG4pO2F0KGEsdCxyKSxlLnNlbGVjdGlvbi5zZXRSbmcocW4ocykpfX0sY3Q9ZnVuY3Rpb24obix0KXt2YXIgZT1uLmRvbSxyPW4uc2VsZWN0aW9uLG89ci5nZXRTdGFydCgpLGk9WmUobixvKSx1PWUuZ2V0UGFyZW50KHIuZ2V0U3RhcnQoKSwiTEkiLGkpO2lmKHUpe3ZhciBhPXUucGFyZW50Tm9kZTtpZihhPT09bi5nZXRCb2R5KCkmJlhlKGUsYSkpcmV0dXJuITA7dmFyIHM9UG4oci5nZXRSbmcoKSksYz1lLmdldFBhcmVudChvdChuLHMsdCxpKSwiTEkiLGkpO2lmKGMmJmMhPT11KXJldHVybiBuLnVuZG9NYW5hZ2VyLnRyYW5zYWN0KGZ1bmN0aW9uKCl7dmFyIGU7dD9zdChuLHMsYyx1KTooZT11KS5wYXJlbnROb2RlLmZpcnN0Q2hpbGQ9PT1lP19uKG4pOmZ1bmN0aW9uKGUsbix0LHIpe3ZhciBvPWpuKG4pO2F0KGUuZG9tLHQscik7dmFyIGk9cW4obyk7ZS5zZWxlY3Rpb24uc2V0Um5nKGkpfShuLHMsdSxjKX0pLCEwO2lmKCFjJiYhdCYmMD09PXMuc3RhcnRPZmZzZXQmJjA9PT1zLmVuZE9mZnNldClyZXR1cm4gbi51bmRvTWFuYWdlci50cmFuc2FjdChmdW5jdGlvbigpe0ZuKG4pfSksITB9cmV0dXJuITF9LGZ0PWZ1bmN0aW9uKG8saSl7dmFyIHU9by5kb20sZT1vLnNlbGVjdGlvbi5nZXRTdGFydCgpLGE9WmUobyxlKSxzPXUuZ2V0UGFyZW50KGUsdS5pc0Jsb2NrLGEpO2lmKHMmJnUuaXNFbXB0eShzKSl7dmFyIG49UG4oby5zZWxlY3Rpb24uZ2V0Um5nKCkpLGM9dS5nZXRQYXJlbnQob3QobyxuLGksYSksIkxJIixhKTtpZihjKXJldHVybiBvLnVuZG9NYW5hZ2VyLnRyYW5zYWN0KGZ1bmN0aW9uKCl7dmFyIGUsbix0LHI7bj1zLHQ9YSxyPShlPXUpLmdldFBhcmVudChuLnBhcmVudE5vZGUsZS5pc0Jsb2NrLHQpLGUucmVtb3ZlKG4pLHImJmUuaXNFbXB0eShyKSYmZS5yZW1vdmUociksSm4odSxjLnBhcmVudE5vZGUpLG8uc2VsZWN0aW9uLnNlbGVjdChjLCEwKSxvLnNlbGVjdGlvbi5jb2xsYXBzZShpKX0pLCEwfXJldHVybiExfSxkdD1mdW5jdGlvbihlLG4pe3JldHVybiBlLnNlbGVjdGlvbi5pc0NvbGxhcHNlZCgpP2N0KGk9ZSx1PW4pfHxmdChpLHUpOihyPSh0PWUpLnNlbGVjdGlvbi5nZXRTdGFydCgpLG89WmUodCxyKSwhISh0LmRvbS5nZXRQYXJlbnQociwiTEksRFQsREQiLG8pfHwwPEplKHQpLmxlbmd0aCkmJih0LnVuZG9NYW5hZ2VyLnRyYW5zYWN0KGZ1bmN0aW9uKCl7dC5leGVjQ29tbWFuZCgiRGVsZXRlIikscnQodC5kb20sdC5nZXRCb2R5KCkpfSksITApKTt2YXIgdCxyLG8saSx1fSxsdD1mdW5jdGlvbih0KXt2YXIgcj10LmRvbSxlPVllKHQpO0hlKGUpJiZ0LndpbmRvd01hbmFnZXIub3Blbih7dGl0bGU6Ikxpc3QgUHJvcGVydGllcyIsYm9keTp7dHlwZToicGFuZWwiLGl0ZW1zOlt7dHlwZToiaW5wdXQiLG5hbWU6InN0YXJ0IixsYWJlbDoiU3RhcnQgbGlzdCBhdCBudW1iZXIiLGlucHV0TW9kZToibnVtZXJpYyJ9XX0saW5pdGlhbERhdGE6e3N0YXJ0OnIuZ2V0QXR0cmliKGUsInN0YXJ0Iil8fCIxIn0sYnV0dG9uczpbe3R5cGU6ImNhbmNlbCIsbmFtZToiY2FuY2VsIix0ZXh0OiJDYW5jZWwifSx7dHlwZToic3VibWl0IixuYW1lOiJzYXZlIix0ZXh0OiJTYXZlIixwcmltYXJ5OiEwfV0sb25TdWJtaXQ6ZnVuY3Rpb24oZSl7dmFyIG49ZS5nZXREYXRhKCk7dC51bmRvTWFuYWdlci50cmFuc2FjdChmdW5jdGlvbigpe3Iuc2V0QXR0cmliKFllKHQpLCJzdGFydCIsIjEiPT09bi5zdGFydD8iIjpuLnN0YXJ0KX0pLGUuY2xvc2UoKX19KX0sbXQ9ZnVuY3Rpb24obix0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT1uLmRvbS5nZXRQYXJlbnQobi5zZWxlY3Rpb24uZ2V0U3RhcnQoKSwiVUwsT0wsREwiKTtyZXR1cm4gZSYmZS5ub2RlTmFtZT09PXR9fSxwdD1mdW5jdGlvbihlKXt2YXIgbix0O2UuZ2V0UGFyYW0oImxpc3RzX2luZGVudF9vbl90YWIiLCEwKSYmKG49ZSkub24oImtleWRvd24iLGZ1bmN0aW9uKGUpe2Uua2V5Q29kZSE9PU9lLlRBQnx8T2UubWV0YUtleVByZXNzZWQoZSl8fG4udW5kb01hbmFnZXIudHJhbnNhY3QoZnVuY3Rpb24oKXsoZS5zaGlmdEtleT9fbjpVbikobikmJmUucHJldmVudERlZmF1bHQoKX0pfSksKHQ9ZSkub24oImtleWRvd24iLGZ1bmN0aW9uKGUpe2Uua2V5Q29kZT09PU9lLkJBQ0tTUEFDRT9kdCh0LCExKSYmZS5wcmV2ZW50RGVmYXVsdCgpOmUua2V5Q29kZT09PU9lLkRFTEVURSYmZHQodCwhMCkmJmUucHJldmVudERlZmF1bHQoKX0pfTshZnVuY3Rpb24gZ3QoKXtmLmFkZCgibGlzdHMiLGZ1bmN0aW9uKGUpe3ZhciB0LG4scixvLGksdSxhLHMsYztyZXR1cm4hMT09ISghLyhefFsgLF0pcnRjKFssIF18JCkvLnRlc3QoZS5zZXR0aW5ncy5wbHVnaW5zKXx8IWYuZ2V0KCJydGMiKSkmJihwdChlKSwodD1lKS5vbigiQmVmb3JlRXhlY0NvbW1hbmQiLGZ1bmN0aW9uKGUpe3ZhciBuPWUuY29tbWFuZC50b0xvd2VyQ2FzZSgpOyJpbmRlbnQiPT09bj9Vbih0KToib3V0ZGVudCI9PT1uJiZfbih0KX0pLHQuYWRkQ29tbWFuZCgiSW5zZXJ0VW5vcmRlcmVkTGlzdCIsZnVuY3Rpb24oZSxuKXtudCh0LCJVTCIsbil9KSx0LmFkZENvbW1hbmQoIkluc2VydE9yZGVyZWRMaXN0IixmdW5jdGlvbihlLG4pe250KHQsIk9MIixuKX0pLHQuYWRkQ29tbWFuZCgiSW5zZXJ0RGVmaW5pdGlvbkxpc3QiLGZ1bmN0aW9uKGUsbil7bnQodCwiREwiLG4pfSksdC5hZGRDb21tYW5kKCJSZW1vdmVMaXN0IixmdW5jdGlvbigpe0ZuKHQpfSksdC5hZGRDb21tYW5kKCJtY2VMaXN0UHJvcHMiLGZ1bmN0aW9uKCl7bHQodCl9KSx0LmFkZFF1ZXJ5U3RhdGVIYW5kbGVyKCJJbnNlcnRVbm9yZGVyZWRMaXN0IixtdCh0LCJVTCIpKSx0LmFkZFF1ZXJ5U3RhdGVIYW5kbGVyKCJJbnNlcnRPcmRlcmVkTGlzdCIsbXQodCwiT0wiKSksdC5hZGRRdWVyeVN0YXRlSGFuZGxlcigiSW5zZXJ0RGVmaW5pdGlvbkxpc3QiLG10KHQsIkRMIikpKSx1PWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBuLmV4ZWNDb21tYW5kKGUpfX0sbz0iYWR2bGlzdCIsaT0ocj1uPWUpLnNldHRpbmdzLnBsdWdpbnM/ci5zZXR0aW5ncy5wbHVnaW5zOiIiLC0xPT09UGUuaW5BcnJheShpLnNwbGl0KC9bICxdLyksbykmJihuLnVpLnJlZ2lzdHJ5LmFkZFRvZ2dsZUJ1dHRvbigibnVtbGlzdCIse2ljb246Im9yZGVyZWQtbGlzdCIsYWN0aXZlOiExLHRvb2x0aXA6Ik51bWJlcmVkIGxpc3QiLG9uQWN0aW9uOnUoIkluc2VydE9yZGVyZWRMaXN0Iiksb25TZXR1cDpmdW5jdGlvbihlKXtyZXR1cm4gVm4obiwiT0wiLGUuc2V0QWN0aXZlKX19KSxuLnVpLnJlZ2lzdHJ5LmFkZFRvZ2dsZUJ1dHRvbigiYnVsbGlzdCIse2ljb246InVub3JkZXJlZC1saXN0IixhY3RpdmU6ITEsdG9vbHRpcDoiQnVsbGV0IGxpc3QiLG9uQWN0aW9uOnUoIkluc2VydFVub3JkZXJlZExpc3QiKSxvblNldHVwOmZ1bmN0aW9uKGUpe3JldHVybiBWbihuLCJVTCIsZS5zZXRBY3RpdmUpfX0pKSxzPXt0ZXh0OiJMaXN0IHByb3BlcnRpZXMuLi4iLGljb246Im9yZGVyZWQtbGlzdCIsb25BY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gbHQoYSl9LG9uU2V0dXA6ZnVuY3Rpb24obil7cmV0dXJuIFZuKGEsIk9MIixmdW5jdGlvbihlKXtyZXR1cm4gbi5zZXREaXNhYmxlZCghZSl9KX19LChhPWUpLnVpLnJlZ2lzdHJ5LmFkZE1lbnVJdGVtKCJsaXN0cHJvcHMiLHMpLGEudWkucmVnaXN0cnkuYWRkQ29udGV4dE1lbnUoImxpc3RzIix7dXBkYXRlOmZ1bmN0aW9uKGUpe3ZhciBuPVllKGEsZSk7cmV0dXJuIEhlKG4pP1sibGlzdHByb3BzIl06W119fSksYz1lLHtiYWNrc3BhY2VEZWxldGU6ZnVuY3Rpb24oZSl7ZHQoYyxlKX19fSl9KCl9KHdpbmRvdyk7]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/media/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/media/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIGUsdCxyLG49dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuUGx1Z2luTWFuYWdlciIpLHA9ZnVuY3Rpb24oKXtyZXR1cm4ocD1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQscj0xLG49YXJndW1lbnRzLmxlbmd0aDtyPG47cisrKWZvcih2YXIgaSBpbiB0PWFyZ3VtZW50c1tyXSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxpKSYmKGVbaV09dFtpXSk7cmV0dXJuIGV9KS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGE9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGV9fSxvPWEoITEpLGM9YSghMCksaT1mdW5jdGlvbigpe3JldHVybiB1fSx1PShlPWZ1bmN0aW9uKGUpe3JldHVybiBlLmlzTm9uZSgpfSx7Zm9sZDpmdW5jdGlvbihlLHQpe3JldHVybiBlKCl9LGlzOm8saXNTb21lOm8saXNOb25lOmMsZ2V0T3I6cj1mdW5jdGlvbihlKXtyZXR1cm4gZX0sZ2V0T3JUaHVuazp0PWZ1bmN0aW9uKGUpe3JldHVybiBlKCl9LGdldE9yRGllOmZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcihlfHwiZXJyb3I6IGdldE9yRGllIGNhbGxlZCBvbiBub25lLiIpfSxnZXRPck51bGw6YShudWxsKSxnZXRPclVuZGVmaW5lZDphKHVuZGVmaW5lZCksb3I6cixvclRodW5rOnQsbWFwOmksZWFjaDpmdW5jdGlvbigpe30sYmluZDppLGV4aXN0czpvLGZvcmFsbDpjLGZpbHRlcjppLGVxdWFsczplLGVxdWFsc186ZSx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuW119LHRvU3RyaW5nOmEoIm5vbmUoKSIpfSkscz1mdW5jdGlvbihyKXt2YXIgZT1hKHIpLHQ9ZnVuY3Rpb24oKXtyZXR1cm4gaX0sbj1mdW5jdGlvbihlKXtyZXR1cm4gZShyKX0saT17Zm9sZDpmdW5jdGlvbihlLHQpe3JldHVybiB0KHIpfSxpczpmdW5jdGlvbihlKXtyZXR1cm4gcj09PWV9LGlzU29tZTpjLGlzTm9uZTpvLGdldE9yOmUsZ2V0T3JUaHVuazplLGdldE9yRGllOmUsZ2V0T3JOdWxsOmUsZ2V0T3JVbmRlZmluZWQ6ZSxvcjp0LG9yVGh1bms6dCxtYXA6ZnVuY3Rpb24oZSl7cmV0dXJuIHMoZShyKSl9LGVhY2g6ZnVuY3Rpb24oZSl7ZShyKX0sYmluZDpuLGV4aXN0czpuLGZvcmFsbDpuLGZpbHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gZShyKT9pOnV9LHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm5bcl19LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuInNvbWUoIityKyIpIn0sZXF1YWxzOmZ1bmN0aW9uKGUpe3JldHVybiBlLmlzKHIpfSxlcXVhbHNfOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuZm9sZChvLGZ1bmN0aW9uKGUpe3JldHVybiB0KHIsZSl9KX19O3JldHVybiBpfSxsPXtzb21lOnMsbm9uZTppLGZyb206ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PT1lfHxlPT09dW5kZWZpbmVkP3U6cyhlKX19LG09ZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiByPXR5cGVvZih0PWUpLChudWxsPT09dD8ibnVsbCI6Im9iamVjdCI9PXImJihBcnJheS5wcm90b3R5cGUuaXNQcm90b3R5cGVPZih0KXx8dC5jb25zdHJ1Y3RvciYmIkFycmF5Ij09PXQuY29uc3RydWN0b3IubmFtZSk/ImFycmF5Ijoib2JqZWN0Ij09ciYmKFN0cmluZy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZih0KXx8dC5jb25zdHJ1Y3RvciYmIlN0cmluZyI9PT10LmNvbnN0cnVjdG9yLm5hbWUpPyJzdHJpbmciOnIpPT09bjt2YXIgdCxyfX0sZD1tKCJzdHJpbmciKSxoPW0oIm9iamVjdCIpLGc9bSgiYXJyYXkiKSx2PUFycmF5LnByb3RvdHlwZS5wdXNoLGY9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9MCxuPWUubGVuZ3RoO3I8bjtyKyspe3QoZVtyXSxyKX19LHc9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm57Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHR9LHNldDpmdW5jdGlvbihlKXt0PWV9fX0sYj1PYmplY3Qua2V5cyx5PU9iamVjdC5oYXNPd25Qcm9wZXJ0eSx4PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGooZSx0KT9sLmZyb20oZVt0XSk6bC5ub25lKCl9LGo9ZnVuY3Rpb24oZSx0KXtyZXR1cm4geS5jYWxsKGUsdCl9LE89ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0UGFyYW0oIm1lZGlhX3NjcmlwdHMiKX0sUz10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS51dGlsLlRvb2xzIiksXz10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS5kb20uRE9NVXRpbHMiKSxrPXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLmh0bWwuU2F4UGFyc2VyIiksQT1mdW5jdGlvbihlLHQpe2lmKGUpZm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspaWYoLTEhPT10LmluZGV4T2YoZVtyXS5maWx0ZXIpKXJldHVybiBlW3JdfSxUPV8uRE9NLEM9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvcHgkLywiIil9LFA9ZnVuY3Rpb24obyxlKXt2YXIgYz13KCExKSx1PXt9O3JldHVybiBrKHt2YWxpZGF0ZTohMSxhbGxvd19jb25kaXRpb25hbF9jb21tZW50czohMCxzdGFydDpmdW5jdGlvbihlLHQpe2lmKCFjLmdldCgpKWlmKGoodC5tYXAsImRhdGEtZXBob3gtZW1iZWQtaXJpIikpYy5zZXQoITApLGk9KG49dCkubWFwLnN0eWxlLGE9aT9ULnBhcnNlU3R5bGUoaSk6e30sdT17dHlwZToiZXBob3gtZW1iZWQtaXJpIixzb3VyY2U6bi5tYXBbImRhdGEtZXBob3gtZW1iZWQtaXJpIl0sYWx0c291cmNlOiIiLHBvc3RlcjoiIix3aWR0aDp4KGEsIm1heC13aWR0aCIpLm1hcChDKS5nZXRPcigiIiksaGVpZ2h0OngoYSwibWF4LWhlaWdodCIpLm1hcChDKS5nZXRPcigiIil9O2Vsc2V7aWYodS5zb3VyY2V8fCJwYXJhbSIhPT1lfHwodS5zb3VyY2U9dC5tYXAubW92aWUpLCJpZnJhbWUiIT09ZSYmIm9iamVjdCIhPT1lJiYiZW1iZWQiIT09ZSYmInZpZGVvIiE9PWUmJiJhdWRpbyIhPT1lfHwodS50eXBlfHwodS50eXBlPWUpLHU9Uy5leHRlbmQodC5tYXAsdSkpLCJzY3JpcHQiPT09ZSl7dmFyIHI9QShvLHQubWFwLnNyYyk7aWYoIXIpcmV0dXJuO3U9e3R5cGU6InNjcmlwdCIsc291cmNlOnQubWFwLnNyYyx3aWR0aDpTdHJpbmcoci53aWR0aCksaGVpZ2h0OlN0cmluZyhyLmhlaWdodCl9fSJzb3VyY2UiPT09ZSYmKHUuc291cmNlP3UuYWx0c291cmNlfHwodS5hbHRzb3VyY2U9dC5tYXAuc3JjKTp1LnNvdXJjZT10Lm1hcC5zcmMpLCJpbWciIT09ZXx8dS5wb3N0ZXJ8fCh1LnBvc3Rlcj10Lm1hcC5zcmMpfXZhciBuLGksYX19KS5wYXJzZShlKSx1LnNvdXJjZT11LnNvdXJjZXx8dS5zcmN8fHUuZGF0YSx1LmFsdHNvdXJjZT11LmFsdHNvdXJjZXx8IiIsdS5wb3N0ZXI9dS5wb3N0ZXJ8fCIiLHV9LEQ9ZnVuY3Rpb24oZSl7dmFyIHQ9e21wMzoiYXVkaW8vbXBlZyIsbTRhOiJhdWRpby94LW00YSIsd2F2OiJhdWRpby93YXYiLG1wNDoidmlkZW8vbXA0Iix3ZWJtOiJ2aWRlby93ZWJtIixvZ2c6InZpZGVvL29nZyIsc3dmOiJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCJ9W2UudG9Mb3dlckNhc2UoKS5zcGxpdCgiLiIpLnBvcCgpXTtyZXR1cm4gdHx8IiJ9LCQ9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuaHRtbC5TY2hlbWEiKSxGPXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLmh0bWwuV3JpdGVyIiksTT1fLkRPTSx6PWZ1bmN0aW9uKGUpe3JldHVybi9eWzAtOS5dKyQvLnRlc3QoZSk/ZSsicHgiOmV9LE49ZnVuY3Rpb24oYSxlKXshZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9YihlKSxuPTAsaT1yLmxlbmd0aDtuPGk7bisrKXt2YXIgYT1yW25dO3QoZVthXSxhKX19KGUsZnVuY3Rpb24oZSx0KXt2YXIgcj0iIitlO2lmKGEubWFwW3RdKWZvcih2YXIgbj1hLmxlbmd0aDtuLS07KXt2YXIgaT1hW25dO2kubmFtZT09PXQmJihyPyhhLm1hcFt0XT1yLGkudmFsdWU9cik6KGRlbGV0ZSBhLm1hcFt0XSxhLnNwbGljZShuLDEpKSl9ZWxzZSByJiYoYS5wdXNoKHtuYW1lOnQsdmFsdWU6cn0pLGEubWFwW3RdPXIpfSl9LFU9WyJzb3VyY2UiLCJhbHRzb3VyY2UiXSxFPWZ1bmN0aW9uKGUsYyx1KXt2YXIgcyxsPUYoKSxtPXcoITEpLGQ9MDtyZXR1cm4gayh7dmFsaWRhdGU6ITEsYWxsb3dfY29uZGl0aW9uYWxfY29tbWVudHM6ITAsY29tbWVudDpmdW5jdGlvbihlKXtsLmNvbW1lbnQoZSl9LGNkYXRhOmZ1bmN0aW9uKGUpe2wuY2RhdGEoZSl9LHRleHQ6ZnVuY3Rpb24oZSx0KXtsLnRleHQoZSx0KX0sc3RhcnQ6ZnVuY3Rpb24oZSx0LHIpe2lmKCFtLmdldCgpKWlmKGoodC5tYXAsImRhdGEtZXBob3gtZW1iZWQtaXJpIikpbS5zZXQoITApLG49YyxhPShpPXQpLm1hcC5zdHlsZSwobz1hP00ucGFyc2VTdHlsZShhKTp7fSlbIm1heC13aWR0aCJdPXoobi53aWR0aCksb1sibWF4LWhlaWdodCJdPXoobi5oZWlnaHQpLE4oaSx7c3R5bGU6TS5zZXJpYWxpemVTdHlsZShvKX0pO2Vsc2V7c3dpdGNoKGUpe2Nhc2UidmlkZW8iOmNhc2Uib2JqZWN0IjpjYXNlImVtYmVkIjpjYXNlImltZyI6Y2FzZSJpZnJhbWUiOmMuaGVpZ2h0IT09dW5kZWZpbmVkJiZjLndpZHRoIT09dW5kZWZpbmVkJiZOKHQse3dpZHRoOmMud2lkdGgsaGVpZ2h0OmMuaGVpZ2h0fSl9aWYodSlzd2l0Y2goZSl7Y2FzZSJ2aWRlbyI6Tih0LHtwb3N0ZXI6Yy5wb3N0ZXIsc3JjOiIifSksYy5hbHRzb3VyY2UmJk4odCx7c3JjOiIifSk7YnJlYWs7Y2FzZSJpZnJhbWUiOk4odCx7c3JjOmMuc291cmNlfSk7YnJlYWs7Y2FzZSJzb3VyY2UiOmlmKGQ8MiYmKE4odCx7c3JjOmNbVVtkXV0sdHlwZTpjW1VbZF0rIm1pbWUiXX0pLCFjW1VbZF1dKSlyZXR1cm47ZCsrO2JyZWFrO2Nhc2UiaW1nIjppZighYy5wb3N0ZXIpcmV0dXJuO3M9ITB9fXZhciBuLGksYSxvO2wuc3RhcnQoZSx0LHIpfSxlbmQ6ZnVuY3Rpb24oZSl7aWYoIW0uZ2V0KCkpe2lmKCJ2aWRlbyI9PT1lJiZ1KWZvcih2YXIgdD0wO3Q8Mjt0KyspaWYoY1tVW3RdXSl7dmFyIHI9W107ci5tYXA9e30sZDx0JiYoTihyLHtzcmM6Y1tVW3RdXSx0eXBlOmNbVVt0XSsibWltZSJdfSksbC5zdGFydCgic291cmNlIixyLCEwKSl9aWYoYy5wb3N0ZXImJiJvYmplY3QiPT09ZSYmdSYmIXMpe3ZhciBuPVtdO24ubWFwPXt9LE4obix7c3JjOmMucG9zdGVyLHdpZHRoOmMud2lkdGgsaGVpZ2h0OmMuaGVpZ2h0fSksbC5zdGFydCgiaW1nIixuLCEwKX19bC5lbmQoZSl9fSwkKHt9KSkucGFyc2UoZSksbC5nZXRDb250ZW50KCl9LFI9W3tyZWdleDoveW91dHVcLmJlXC8oW1x3XC1fXD8mPS5dKykvaSx0eXBlOiJpZnJhbWUiLHc6NTYwLGg6MzE0LHVybDoid3d3LnlvdXR1YmUuY29tL2VtYmVkLyQxIixhbGxvd0Z1bGxzY3JlZW46ITB9LHtyZWdleDoveW91dHViZVwuY29tKC4rKXY9KFteJl0rKSgmKFthLXowLTkmPVwtX10rKSk/L2ksdHlwZToiaWZyYW1lIix3OjU2MCxoOjMxNCx1cmw6Ind3dy55b3V0dWJlLmNvbS9lbWJlZC8kMj8kNCIsYWxsb3dGdWxsc2NyZWVuOiEwfSx7cmVnZXg6L3lvdXR1YmUuY29tXC9lbWJlZFwvKFthLXowLTlcPyY9XC1fXSspL2ksdHlwZToiaWZyYW1lIix3OjU2MCxoOjMxNCx1cmw6Ind3dy55b3V0dWJlLmNvbS9lbWJlZC8kMSIsYWxsb3dGdWxsc2NyZWVuOiEwfSx7cmVnZXg6L3ZpbWVvXC5jb21cLyhbMC05XSspLyx0eXBlOiJpZnJhbWUiLHc6NDI1LGg6MzUwLHVybDoicGxheWVyLnZpbWVvLmNvbS92aWRlby8kMT90aXRsZT0wJmJ5bGluZT0wJnBvcnRyYWl0PTAmY29sb3I9OGRjN2RjIixhbGxvd0Z1bGxzY3JlZW46ITB9LHtyZWdleDovdmltZW9cLmNvbVwvKC4qKVwvKFswLTldKykvLHR5cGU6ImlmcmFtZSIsdzo0MjUsaDozNTAsdXJsOiJwbGF5ZXIudmltZW8uY29tL3ZpZGVvLyQyP3RpdGxlPTAmYW1wO2J5bGluZT0wIixhbGxvd0Z1bGxzY3JlZW46ITB9LHtyZWdleDovbWFwc1wuZ29vZ2xlXC4oW2Etel17MiwzfSlcL21hcHNcLyguKyltc2lkPSguKykvLHR5cGU6ImlmcmFtZSIsdzo0MjUsaDozNTAsdXJsOidtYXBzLmdvb2dsZS5jb20vbWFwcy9tcz9tc2lkPSQyJm91dHB1dD1lbWJlZCInLGFsbG93RnVsbHNjcmVlbjohMX0se3JlZ2V4Oi9kYWlseW1vdGlvblwuY29tXC92aWRlb1wvKFteX10rKS8sdHlwZToiaWZyYW1lIix3OjQ4MCxoOjI3MCx1cmw6Ind3dy5kYWlseW1vdGlvbi5jb20vZW1iZWQvdmlkZW8vJDEiLGFsbG93RnVsbHNjcmVlbjohMH0se3JlZ2V4Oi9kYWlcLmx5XC8oW15fXSspLyx0eXBlOiJpZnJhbWUiLHc6NDgwLGg6MjcwLHVybDoid3d3LmRhaWx5bW90aW9uLmNvbS9lbWJlZC92aWRlby8kMSIsYWxsb3dGdWxsc2NyZWVuOiEwfV0sTD1mdW5jdGlvbih0KXt2YXIgZT1SLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS5yZWdleC50ZXN0KHQpfSk7cmV0dXJuIDA8ZS5sZW5ndGg/Uy5leHRlbmQoe30sZVswXSx7dXJsOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByLG49KHI9dC5tYXRjaCgvXihodHRwcz86XC9cL3x3d3dcLikoLispJC9pKSkmJjE8ci5sZW5ndGgmJiJ3d3cuIiE9PXJbMV0/clsxXToiaHR0cHM6Ly8iLGk9ZS5yZWdleC5leGVjKHQpLGE9bitlLnVybCxvPWZ1bmN0aW9uKGUpe2E9YS5yZXBsYWNlKCIkIitlLGZ1bmN0aW9uKCl7cmV0dXJuIGlbZV0/aVtlXToiIn0pfSxjPTA7YzxpLmxlbmd0aDtjKyspbyhjKTtyZXR1cm4gYS5yZXBsYWNlKC9cPyQvLCIiKX0oZVswXSx0KX0pOm51bGx9LEk9ZnVuY3Rpb24ocixlKXt2YXIgbj1TLmV4dGVuZCh7fSxlKTtpZighbi5zb3VyY2UmJihTLmV4dGVuZChuLFAoTyhyKSxuLmVtYmVkKSksIW4uc291cmNlKSlyZXR1cm4iIjtuLmFsdHNvdXJjZXx8KG4uYWx0c291cmNlPSIiKSxuLnBvc3Rlcnx8KG4ucG9zdGVyPSIiKSxuLnNvdXJjZT1yLmNvbnZlcnRVUkwobi5zb3VyY2UsInNvdXJjZSIpLG4uYWx0c291cmNlPXIuY29udmVydFVSTChuLmFsdHNvdXJjZSwic291cmNlIiksbi5zb3VyY2VtaW1lPUQobi5zb3VyY2UpLG4uYWx0c291cmNlbWltZT1EKG4uYWx0c291cmNlKSxuLnBvc3Rlcj1yLmNvbnZlcnRVUkwobi5wb3N0ZXIsInBvc3RlciIpO3ZhciB0PUwobi5zb3VyY2UpO2lmKHQmJihuLnNvdXJjZT10LnVybCxuLnR5cGU9dC50eXBlLG4uYWxsb3dGdWxsc2NyZWVuPXQuYWxsb3dGdWxsc2NyZWVuLG4ud2lkdGg9bi53aWR0aHx8U3RyaW5nKHQudyksbi5oZWlnaHQ9bi5oZWlnaHR8fFN0cmluZyh0LmgpKSxuLmVtYmVkKXJldHVybiBFKG4uZW1iZWQsbiwhMCk7dmFyIGk9QShPKHIpLG4uc291cmNlKTtpJiYobi50eXBlPSJzY3JpcHQiLG4ud2lkdGg9U3RyaW5nKGkud2lkdGgpLG4uaGVpZ2h0PVN0cmluZyhpLmhlaWdodCkpO3ZhciBhLG8sYyx1LHMsbCxtLGQsaD1yLmdldFBhcmFtKCJhdWRpb190ZW1wbGF0ZV9jYWxsYmFjayIpLGY9ci5nZXRQYXJhbSgidmlkZW9fdGVtcGxhdGVfY2FsbGJhY2siKTtyZXR1cm4gbi53aWR0aD1uLndpZHRofHwiMzAwIixuLmhlaWdodD1uLmhlaWdodHx8IjE1MCIsUy5lYWNoKG4sZnVuY3Rpb24oZSx0KXtuW3RdPXIuZG9tLmVuY29kZSgiIitlKX0pLCJpZnJhbWUiPT09bi50eXBlPyhkPShtPW4pLmFsbG93RnVsbHNjcmVlbj8nIGFsbG93RnVsbHNjcmVlbj0iMSInOiIiLCc8aWZyYW1lIHNyYz0iJyttLnNvdXJjZSsnIiB3aWR0aD0iJyttLndpZHRoKyciIGhlaWdodD0iJyttLmhlaWdodCsnIicrZCsiPjwvaWZyYW1lPiIpOiJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCI9PT1uLnNvdXJjZW1pbWU/KGw9JzxvYmplY3QgZGF0YT0iJysocz1uKS5zb3VyY2UrJyIgd2lkdGg9Iicrcy53aWR0aCsnIiBoZWlnaHQ9Iicrcy5oZWlnaHQrJyIgdHlwZT0iYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giPicscy5wb3N0ZXImJihsKz0nPGltZyBzcmM9Iicrcy5wb3N0ZXIrJyIgd2lkdGg9Iicrcy53aWR0aCsnIiBoZWlnaHQ9Iicrcy5oZWlnaHQrJyIgLz4nKSxsKz0iPC9vYmplY3Q+Iik6LTEhPT1uLnNvdXJjZW1pbWUuaW5kZXhPZigiYXVkaW8iKT8oYz1uLCh1PWgpP3UoYyk6JzxhdWRpbyBjb250cm9scz0iY29udHJvbHMiIHNyYz0iJytjLnNvdXJjZSsnIj4nKyhjLmFsdHNvdXJjZT8nXG48c291cmNlIHNyYz0iJytjLmFsdHNvdXJjZSsnIicrKGMuYWx0c291cmNlbWltZT8nIHR5cGU9IicrYy5hbHRzb3VyY2VtaW1lKyciJzoiIikrIiAvPlxuIjoiIikrIjwvYXVkaW8+Iik6InNjcmlwdCI9PT1uLnR5cGU/JzxzY3JpcHQgc3JjPSInK24uc291cmNlKyciPjxcL3NjcmlwdD4nOihhPW4sKG89Zik/byhhKTonPHZpZGVvIHdpZHRoPSInK2Eud2lkdGgrJyIgaGVpZ2h0PSInK2EuaGVpZ2h0KyciJysoYS5wb3N0ZXI/JyBwb3N0ZXI9IicrYS5wb3N0ZXIrJyInOiIiKSsnIGNvbnRyb2xzPSJjb250cm9scyI+XG48c291cmNlIHNyYz0iJythLnNvdXJjZSsnIicrKGEuc291cmNlbWltZT8nIHR5cGU9IicrYS5zb3VyY2VtaW1lKyciJzoiIikrIiAvPlxuIisoYS5hbHRzb3VyY2U/Jzxzb3VyY2Ugc3JjPSInK2EuYWx0c291cmNlKyciJysoYS5hbHRzb3VyY2VtaW1lPycgdHlwZT0iJythLmFsdHNvdXJjZW1pbWUrJyInOiIiKSsiIC8+XG4iOiIiKSsiPC92aWRlbz4iKX0scT10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS51dGlsLlByb21pc2UiKSxCPXt9LFc9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBJKHQsZSl9fSxHPWZ1bmN0aW9uKGUsdCl7dmFyIHIsbixpLGEsbyxjPWUuZ2V0UGFyYW0oIm1lZGlhX3VybF9yZXNvbHZlciIpO3JldHVybiBjPyhpPXQsYT1XKGUpLG89YyxuZXcgcShmdW5jdGlvbih0LGUpe3ZhciByPWZ1bmN0aW9uKGUpe3JldHVybiBlLmh0bWwmJihCW2kuc291cmNlXT1lKSx0KHt1cmw6aS5zb3VyY2UsaHRtbDplLmh0bWw/ZS5odG1sOmEoaSl9KX07QltpLnNvdXJjZV0/cihCW2kuc291cmNlXSk6byh7dXJsOmkuc291cmNlfSxyLGUpfSkpOihyPXQsbj1XKGUpLG5ldyBxKGZ1bmN0aW9uKGUpe2Uoe2h0bWw6bihyKSx1cmw6ci5zb3VyY2V9KX0pKX0sSD1mdW5jdGlvbihhLG8sYyl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0LHI9ZnVuY3Rpb24oKXtyZXR1cm4geChhLGUpfSxuPWZ1bmN0aW9uKCl7cmV0dXJuIHgobyxlKX0saT1mdW5jdGlvbihlKXtyZXR1cm4geChlLCJ2YWx1ZSIpLmJpbmQoZnVuY3Rpb24oZSl7cmV0dXJuIDA8ZS5sZW5ndGg/bC5zb21lKGUpOmwubm9uZSgpfSl9O3JldHVybih0PXt9KVtlXT0oZT09PWM/cigpLmJpbmQoZnVuY3Rpb24oZSl7cmV0dXJuIGgoZSk/aShlKS5vclRodW5rKG4pOm4oKS5vclRodW5rKGZ1bmN0aW9uKCl7cmV0dXJuIGwuZnJvbShlKX0pfSk6bigpLm9yVGh1bmsoZnVuY3Rpb24oKXtyZXR1cm4gcigpLmJpbmQoZnVuY3Rpb24oZSl7cmV0dXJuIGgoZSk/aShlKTpsLmZyb20oZSl9KX0pKS5nZXRPcigiIiksdH19LEo9ZnVuY3Rpb24oZSx0KXt2YXIgcixuLGk9dD94KGUsdCkuYmluZChmdW5jdGlvbihlKXtyZXR1cm4geChlLCJtZXRhIil9KS5nZXRPcih7fSk6e30sYT1IKGUsaSx0KTtyZXR1cm4gcChwKHAocChwKHt9LGEoInNvdXJjZSIpKSxhKCJhbHRzb3VyY2UiKSksYSgicG9zdGVyIikpLGEoImVtYmVkIikpLChyPWksbj17fSx4KGUsImRpbWVuc2lvbnMiKS5lYWNoKGZ1bmN0aW9uKGUpe2YoWyJ3aWR0aCIsImhlaWdodCJdLGZ1bmN0aW9uKHQpe3gocix0KS5vclRodW5rKGZ1bmN0aW9uKCl7cmV0dXJuIHgoZSx0KX0pLmVhY2goZnVuY3Rpb24oZSl7cmV0dXJuIG5bdF09ZX0pfSl9KSxuKSl9LEs9ZnVuY3Rpb24oZSl7dmFyIG49cChwKHt9LGUpLHtzb3VyY2U6e3ZhbHVlOngoZSwic291cmNlIikuZ2V0T3IoIiIpfSxhbHRzb3VyY2U6e3ZhbHVlOngoZSwiYWx0c291cmNlIikuZ2V0T3IoIiIpfSxwb3N0ZXI6e3ZhbHVlOngoZSwicG9zdGVyIikuZ2V0T3IoIiIpfX0pO3JldHVybiBmKFsid2lkdGgiLCJoZWlnaHQiXSxmdW5jdGlvbihyKXt4KGUscikuZWFjaChmdW5jdGlvbihlKXt2YXIgdD1uLmRpbWVuc2lvbnN8fHt9O3Rbcl09ZSxuLmRpbWVuc2lvbnM9dH0pfSksbn0sUT1mdW5jdGlvbihyKXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9ZSYmZS5tc2c/Ik1lZGlhIGVtYmVkIGhhbmRsZXIgZXJyb3I6ICIrZS5tc2c6Ik1lZGlhIGVtYmVkIGhhbmRsZXIgdGhyZXcgdW5rbm93biBlcnJvci4iO3Iubm90aWZpY2F0aW9uTWFuYWdlci5vcGVuKHt0eXBlOiJlcnJvciIsdGV4dDp0fSl9fSxWPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIFAoTyhlKSx0KX0sWD1mdW5jdGlvbihpLGEpe3JldHVybiBmdW5jdGlvbihlKXtpZihkKGUudXJsKSYmMDxlLnVybC50cmltKCkubGVuZ3RoKXt2YXIgdD1lLmh0bWwscj1WKGEsdCksbj1wKHAoe30scikse3NvdXJjZTplLnVybCxlbWJlZDp0fSk7aS5zZXREYXRhKEsobikpfX19LFk9ZnVuY3Rpb24oZSx0KXt2YXIgcj1lLmRvbS5zZWxlY3QoImltZ1tkYXRhLW1jZS1vYmplY3RdIik7ZS5pbnNlcnRDb250ZW50KHQpLGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPWUuZG9tLnNlbGVjdCgiaW1nW2RhdGEtbWNlLW9iamVjdF0iKSxuPTA7bjx0Lmxlbmd0aDtuKyspZm9yKHZhciBpPXIubGVuZ3RoLTE7MDw9aTtpLS0pdFtuXT09PXJbaV0mJnIuc3BsaWNlKGksMSk7ZS5zZWxlY3Rpb24uc2VsZWN0KHJbMF0pfShlLHIpLGUubm9kZUNoYW5nZWQoKX0sWj1mdW5jdGlvbihlLHQscil7dmFyIG47dC5lbWJlZD1FKHQuZW1iZWQsdCksdC5lbWJlZCYmKGUuc291cmNlPT09dC5zb3VyY2V8fChuPXQuc291cmNlLEIuaGFzT3duUHJvcGVydHkobikpKT9ZKHIsdC5lbWJlZCk6RyhyLHQpLnRoZW4oZnVuY3Rpb24oZSl7WShyLGUuaHRtbCl9KVsiY2F0Y2giXShRKHIpKX0sZWU9ZnVuY3Rpb24obSl7dmFyIGUsdCxyLG4saT0ocj0oZT1tKS5zZWxlY3Rpb24uZ2V0Tm9kZSgpLG49KHQ9cikuZ2V0QXR0cmlidXRlKCJkYXRhLW1jZS1vYmplY3QiKXx8dC5nZXRBdHRyaWJ1dGUoImRhdGEtZXBob3gtZW1iZWQtaXJpIik/ZS5zZXJpYWxpemVyLnNlcmlhbGl6ZShyLHtzZWxlY3Rpb246ITB9KToiIixwKHtlbWJlZDpufSxQKE8oZSksbikpKSxkPXcoaSksYT1LKGkpLG89e3RpdGxlOiJHZW5lcmFsIixuYW1lOiJnZW5lcmFsIixpdGVtczpmdW5jdGlvbihlKXtmb3IodmFyIHQ9W10scj0wLG49ZS5sZW5ndGg7cjxuOysrcil7aWYoIWcoZVtyXSkpdGhyb3cgbmV3IEVycm9yKCJBcnIuZmxhdHRlbiBpdGVtICIrcisiIHdhcyBub3QgYW4gYXJyYXksIGlucHV0OiAiK2UpO3YuYXBwbHkodCxlW3JdKX1yZXR1cm4gdH0oW1t7bmFtZToic291cmNlIix0eXBlOiJ1cmxpbnB1dCIsZmlsZXR5cGU6Im1lZGlhIixsYWJlbDoiU291cmNlIn1dLG0uZ2V0UGFyYW0oIm1lZGlhX2RpbWVuc2lvbnMiLCEwKT9be3R5cGU6InNpemVpbnB1dCIsbmFtZToiZGltZW5zaW9ucyIsbGFiZWw6IkNvbnN0cmFpbiBwcm9wb3J0aW9ucyIsY29uc3RyYWluOiEwfV06W11dKX0sYz17dGl0bGU6IkVtYmVkIixpdGVtczpbe3R5cGU6InRleHRhcmVhIixuYW1lOiJlbWJlZCIsbGFiZWw6IlBhc3RlIHlvdXIgZW1iZWQgY29kZSBiZWxvdzoifV19LHU9W107bS5nZXRQYXJhbSgibWVkaWFfYWx0X3NvdXJjZSIsITApJiZ1LnB1c2goe25hbWU6ImFsdHNvdXJjZSIsdHlwZToidXJsaW5wdXQiLGZpbGV0eXBlOiJtZWRpYSIsbGFiZWw6IkFsdGVybmF0aXZlIHNvdXJjZSBVUkwifSksbS5nZXRQYXJhbSgibWVkaWFfcG9zdGVyIiwhMCkmJnUucHVzaCh7bmFtZToicG9zdGVyIix0eXBlOiJ1cmxpbnB1dCIsZmlsZXR5cGU6ImltYWdlIixsYWJlbDoiTWVkaWEgcG9zdGVyIChJbWFnZSBVUkwpIn0pO3ZhciBzPXt0aXRsZToiQWR2YW5jZWQiLG5hbWU6ImFkdmFuY2VkIixpdGVtczp1fSxsPVtvLGNdOzA8dS5sZW5ndGgmJmwucHVzaChzKTt2YXIgaD17dHlwZToidGFicGFuZWwiLHRhYnM6bH0sZj1tLndpbmRvd01hbmFnZXIub3Blbih7dGl0bGU6Ikluc2VydC9FZGl0IE1lZGlhIixzaXplOiJub3JtYWwiLGJvZHk6aCxidXR0b25zOlt7dHlwZToiY2FuY2VsIixuYW1lOiJjYW5jZWwiLHRleHQ6IkNhbmNlbCJ9LHt0eXBlOiJzdWJtaXQiLG5hbWU6InNhdmUiLHRleHQ6IlNhdmUiLHByaW1hcnk6ITB9XSxvblN1Ym1pdDpmdW5jdGlvbihlKXt2YXIgdD1KKGUuZ2V0RGF0YSgpKTtaKGQuZ2V0KCksdCxtKSxlLmNsb3NlKCl9LG9uQ2hhbmdlOmZ1bmN0aW9uKGUsdCl7c3dpdGNoKHQubmFtZSl7Y2FzZSJzb3VyY2UiOnM9ZC5nZXQoKSxsPUooZS5nZXREYXRhKCksInNvdXJjZSIpLHMuc291cmNlIT09bC5zb3VyY2UmJihYKGYsbSkoe3VybDpsLnNvdXJjZSxodG1sOiIifSksRyhtLGwpLnRoZW4oWChmLG0pKVsiY2F0Y2giXShRKG0pKSk7YnJlYWs7Y2FzZSJlbWJlZCI6Yz1KKChvPWUpLmdldERhdGEoKSksdT1WKG0sYy5lbWJlZCksby5zZXREYXRhKEsodSkpO2JyZWFrO2Nhc2UiZGltZW5zaW9ucyI6Y2FzZSJhbHRzb3VyY2UiOmNhc2UicG9zdGVyIjpyPWUsbj10Lm5hbWUsaT1KKHIuZ2V0RGF0YSgpLG4pLGE9SShtLGkpLHIuc2V0RGF0YShLKHAocCh7fSxpKSx7ZW1iZWQ6YX0pKSl9dmFyIHIsbixpLGEsbyxjLHUscyxsO2Quc2V0KEooZS5nZXREYXRhKCkpKX0saW5pdGlhbERhdGE6YX0pfSx0ZT10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS5odG1sLk5vZGUiKSxyZT10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS5FbnYiKSxuZT1mdW5jdGlvbihhLGUpe2lmKCExPT09YS5nZXRQYXJhbSgibWVkaWFfZmlsdGVyX2h0bWwiLCEwKSlyZXR1cm4gZTt2YXIgbyxjPUYoKTtyZXR1cm4gayh7dmFsaWRhdGU6ITEsYWxsb3dfY29uZGl0aW9uYWxfY29tbWVudHM6ITEsY29tbWVudDpmdW5jdGlvbihlKXtjLmNvbW1lbnQoZSl9LGNkYXRhOmZ1bmN0aW9uKGUpe2MuY2RhdGEoZSl9LHRleHQ6ZnVuY3Rpb24oZSx0KXtjLnRleHQoZSx0KX0sc3RhcnQ6ZnVuY3Rpb24oZSx0LHIpe2lmKG89ITAsInNjcmlwdCIhPT1lJiYibm9zY3JpcHQiIT09ZSYmInN2ZyIhPT1lKXtmb3IodmFyIG49dC5sZW5ndGgtMTswPD1uO24tLSl7dmFyIGk9dFtuXS5uYW1lOzA9PT1pLmluZGV4T2YoIm9uIikmJihkZWxldGUgdC5tYXBbaV0sdC5zcGxpY2UobiwxKSksInN0eWxlIj09PWkmJih0W25dLnZhbHVlPWEuZG9tLnNlcmlhbGl6ZVN0eWxlKGEuZG9tLnBhcnNlU3R5bGUodFtuXS52YWx1ZSksZSkpfWMuc3RhcnQoZSx0LHIpLG89ITF9fSxlbmQ6ZnVuY3Rpb24oZSl7b3x8Yy5lbmQoZSl9fSwkKHt9KSkucGFyc2UoZSksYy5nZXRDb250ZW50KCl9LGllPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbixpLGEsbyxjO2ZvcihvPShhPXQuYXR0cmlidXRlcykubGVuZ3RoO28tLTspbj1hW29dLm5hbWUsaT1hW29dLnZhbHVlLCJ3aWR0aCIhPT1uJiYiaGVpZ2h0IiE9PW4mJiJzdHlsZSIhPT1uJiYoImRhdGEiIT09biYmInNyYyIhPT1ufHwoaT1lLmNvbnZlcnRVUkwoaSxuKSksci5hdHRyKCJkYXRhLW1jZS1wLSIrbixpKSk7KGM9dC5maXJzdENoaWxkJiZ0LmZpcnN0Q2hpbGQudmFsdWUpJiYoci5hdHRyKCJkYXRhLW1jZS1odG1sIixlc2NhcGUobmUoZSxjKSkpLHIuZmlyc3RDaGlsZD1udWxsKX0sYWU9ZnVuY3Rpb24oZSl7Zm9yKDtlPWUucGFyZW50OylpZihlLmF0dHIoImRhdGEtZXBob3gtZW1iZWQtaXJpIil8fCh0PWUuYXR0cigiY2xhc3MiKSkmJi9cYnRpbnktcGFnZWVtYmVkXGIvLnRlc3QodCkpcmV0dXJuITA7dmFyIHQ7cmV0dXJuITF9LG9lPWZ1bmN0aW9uKGYpe3JldHVybiBmdW5jdGlvbihlKXtmb3IodmFyIHQscixuLGksYSxvLGMsdSxzLGwsbSxkLGg9ZS5sZW5ndGg7aC0tOykodD1lW2hdKS5wYXJlbnQmJih0LnBhcmVudC5hdHRyKCJkYXRhLW1jZS1vYmplY3QiKXx8InNjcmlwdCI9PT10Lm5hbWUmJiEocj1BKE8oZiksdC5hdHRyKCJzcmMiKSkpfHwociYmKHIud2lkdGgmJnQuYXR0cigid2lkdGgiLHIud2lkdGgudG9TdHJpbmcoKSksci5oZWlnaHQmJnQuYXR0cigiaGVpZ2h0IixyLmhlaWdodC50b1N0cmluZygpKSksImlmcmFtZSI9PT10Lm5hbWUmJmYuZ2V0UGFyYW0oIm1lZGlhX2xpdmVfZW1iZWRzIiwhMCkmJnJlLmNlRmFsc2U/YWUodCl8fHQucmVwbGFjZSgoYz1mLG09bD1zPXZvaWQgMCxkPSh1PXQpLm5hbWUsKHM9bmV3IHRlKCJzcGFuIiwxKSkuYXR0cih7Y29udGVudEVkaXRhYmxlOiJmYWxzZSIsc3R5bGU6dS5hdHRyKCJzdHlsZSIpLCJkYXRhLW1jZS1vYmplY3QiOmQsImNsYXNzIjoibWNlLXByZXZpZXctb2JqZWN0IG1jZS1vYmplY3QtIitkfSksaWUoYyx1LHMpLChsPW5ldyB0ZShkLDEpKS5hdHRyKHtzcmM6dS5hdHRyKCJzcmMiKSxhbGxvd2Z1bGxzY3JlZW46dS5hdHRyKCJhbGxvd2Z1bGxzY3JlZW4iKSxzdHlsZTp1LmF0dHIoInN0eWxlIiksImNsYXNzIjp1LmF0dHIoImNsYXNzIiksd2lkdGg6dS5hdHRyKCJ3aWR0aCIpLGhlaWdodDp1LmF0dHIoImhlaWdodCIpLGZyYW1lYm9yZGVyOiIwIn0pLChtPW5ldyB0ZSgic3BhbiIsMSkpLmF0dHIoImNsYXNzIiwibWNlLXNoaW0iKSxzLmFwcGVuZChsKSxzLmFwcGVuZChtKSxzKSk6YWUodCl8fHQucmVwbGFjZSgobj1mLGE9dm9pZCAwLG89KGk9dCkubmFtZSwoYT1uZXcgdGUoImltZyIsMSkpLnNob3J0RW5kZWQ9ITAsaWUobixpLGEpLGEuYXR0cih7d2lkdGg6aS5hdHRyKCJ3aWR0aCIpfHwiMzAwIixoZWlnaHQ6aS5hdHRyKCJoZWlnaHQiKXx8KCJhdWRpbyI9PT1vPyIzMCI6IjE1MCIpLHN0eWxlOmkuYXR0cigic3R5bGUiKSxzcmM6cmUudHJhbnNwYXJlbnRTcmMsImRhdGEtbWNlLW9iamVjdCI6bywiY2xhc3MiOiJtY2Utb2JqZWN0IG1jZS1vYmplY3QtIitvfSksYSkpKSl9fSxjZT1mdW5jdGlvbihlKXt2YXIgdCxyO2UudWkucmVnaXN0cnkuYWRkVG9nZ2xlQnV0dG9uKCJtZWRpYSIse3Rvb2x0aXA6Ikluc2VydC9lZGl0IG1lZGlhIixpY29uOiJlbWJlZCIsb25BY3Rpb246ZnVuY3Rpb24oKXtlLmV4ZWNDb21tYW5kKCJtY2VNZWRpYSIpfSxvblNldHVwOih0PWUscj1bImltZ1tkYXRhLW1jZS1vYmplY3RdIiwic3BhbltkYXRhLW1jZS1vYmplY3RdIiwiZGl2W2RhdGEtZXBob3gtZW1iZWQtaXJpXSJdLGZ1bmN0aW9uKGUpe3JldHVybiB0LnNlbGVjdGlvbi5zZWxlY3RvckNoYW5nZWRXaXRoVW5iaW5kKHIuam9pbigiLCIpLGUuc2V0QWN0aXZlKS51bmJpbmR9KX0pLGUudWkucmVnaXN0cnkuYWRkTWVudUl0ZW0oIm1lZGlhIix7aWNvbjoiZW1iZWQiLHRleHQ6Ik1lZGlhLi4uIixvbkFjdGlvbjpmdW5jdGlvbigpe2UuZXhlY0NvbW1hbmQoIm1jZU1lZGlhIil9fSl9OyFmdW5jdGlvbiB1ZSgpe24uYWRkKCJtZWRpYSIsZnVuY3Rpb24oZSl7dmFyIHQsZCxyLG47cmV0dXJuKHQ9ZSkuYWRkQ29tbWFuZCgibWNlTWVkaWEiLGZ1bmN0aW9uKCl7ZWUodCl9KSxjZShlKSxlLm9uKCJSZXNvbHZlTmFtZSIsZnVuY3Rpb24oZSl7dmFyIHQ7MT09PWUudGFyZ2V0Lm5vZGVUeXBlJiYodD1lLnRhcmdldC5nZXRBdHRyaWJ1dGUoImRhdGEtbWNlLW9iamVjdCIpKSYmKGUubmFtZT10KX0pLChkPWUpLm9uKCJwcmVJbml0IixmdW5jdGlvbigpe3ZhciB0PWQuc2NoZW1hLmdldFNwZWNpYWxFbGVtZW50cygpO1MuZWFjaCgidmlkZW8gYXVkaW8gaWZyYW1lIG9iamVjdCIuc3BsaXQoIiAiKSxmdW5jdGlvbihlKXt0W2VdPW5ldyBSZWdFeHAoIjwvIitlKyJbXj5dKj4iLCJnaSIpfSk7dmFyIHI9ZC5zY2hlbWEuZ2V0Qm9vbEF0dHJzKCk7Uy5lYWNoKCJ3ZWJraXRhbGxvd2Z1bGxzY3JlZW4gbW96YWxsb3dmdWxsc2NyZWVuIGFsbG93ZnVsbHNjcmVlbiIuc3BsaXQoIiAiKSxmdW5jdGlvbihlKXtyW2VdPXt9fSksZC5wYXJzZXIuYWRkTm9kZUZpbHRlcigiaWZyYW1lLHZpZGVvLGF1ZGlvLG9iamVjdCxlbWJlZCxzY3JpcHQiLG9lKGQpKSxkLnNlcmlhbGl6ZXIuYWRkQXR0cmlidXRlRmlsdGVyKCJkYXRhLW1jZS1vYmplY3QiLGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByLG4saSxhLG8sYyx1LHMsbD1lLmxlbmd0aDtsLS07KWlmKChyPWVbbF0pLnBhcmVudCl7Zm9yKHU9ci5hdHRyKHQpLG49bmV3IHRlKHUsMSksImF1ZGlvIiE9PXUmJiJzY3JpcHQiIT09dSYmKChzPXIuYXR0cigiY2xhc3MiKSkmJi0xIT09cy5pbmRleE9mKCJtY2UtcHJldmlldy1vYmplY3QiKT9uLmF0dHIoe3dpZHRoOnIuZmlyc3RDaGlsZC5hdHRyKCJ3aWR0aCIpLGhlaWdodDpyLmZpcnN0Q2hpbGQuYXR0cigiaGVpZ2h0Iil9KTpuLmF0dHIoe3dpZHRoOnIuYXR0cigid2lkdGgiKSxoZWlnaHQ6ci5hdHRyKCJoZWlnaHQiKX0pKSxuLmF0dHIoe3N0eWxlOnIuYXR0cigic3R5bGUiKX0pLGk9KGE9ci5hdHRyaWJ1dGVzKS5sZW5ndGg7aS0tOyl7dmFyIG09YVtpXS5uYW1lOzA9PT1tLmluZGV4T2YoImRhdGEtbWNlLXAtIikmJm4uYXR0cihtLnN1YnN0cigxMSksYVtpXS52YWx1ZSl9InNjcmlwdCI9PT11JiZuLmF0dHIoInR5cGUiLCJ0ZXh0L2phdmFzY3JpcHQiKSwobz1yLmF0dHIoImRhdGEtbWNlLWh0bWwiKSkmJigoYz1uZXcgdGUoIiN0ZXh0IiwzKSkucmF3PSEwLGMudmFsdWU9bmUoZCx1bmVzY2FwZShvKSksbi5hcHBlbmQoYykpLHIucmVwbGFjZShuKX19KX0pLGQub24oIlNldENvbnRlbnQiLGZ1bmN0aW9uKCl7ZC4kKCJzcGFuLm1jZS1wcmV2aWV3LW9iamVjdCIpLmVhY2goZnVuY3Rpb24oZSx0KXt2YXIgcj1kLiQodCk7MD09PXIuZmluZCgic3Bhbi5tY2Utc2hpbSIpLmxlbmd0aCYmci5hcHBlbmQoJzxzcGFuIGNsYXNzPSJtY2Utc2hpbSI+PC9zcGFuPicpfSl9KSwocj1lKS5vbigiY2xpY2sga2V5dXAgdG91Y2hlbmQiLGZ1bmN0aW9uKCl7dmFyIGU9ci5zZWxlY3Rpb24uZ2V0Tm9kZSgpO2UmJnIuZG9tLmhhc0NsYXNzKGUsIm1jZS1wcmV2aWV3LW9iamVjdCIpJiZyLmRvbS5nZXRBdHRyaWIoZSwiZGF0YS1tY2Utc2VsZWN0ZWQiKSYmZS5zZXRBdHRyaWJ1dGUoImRhdGEtbWNlLXNlbGVjdGVkIiwiMiIpfSksci5vbigiT2JqZWN0U2VsZWN0ZWQiLGZ1bmN0aW9uKGUpe3ZhciB0PWUudGFyZ2V0LmdldEF0dHJpYnV0ZSgiZGF0YS1tY2Utb2JqZWN0Iik7ImF1ZGlvIiE9PXQmJiJzY3JpcHQiIT09dHx8ZS5wcmV2ZW50RGVmYXVsdCgpfSksci5vbigiT2JqZWN0UmVzaXplZCIsZnVuY3Rpb24oZSl7dmFyIHQscj1lLnRhcmdldDtyLmdldEF0dHJpYnV0ZSgiZGF0YS1tY2Utb2JqZWN0IikmJih0PXIuZ2V0QXR0cmlidXRlKCJkYXRhLW1jZS1odG1sIikpJiYodD11bmVzY2FwZSh0KSxyLnNldEF0dHJpYnV0ZSgiZGF0YS1tY2UtaHRtbCIsZXNjYXBlKEUodCx7d2lkdGg6U3RyaW5nKGUud2lkdGgpLGhlaWdodDpTdHJpbmcoZS5oZWlnaHQpfSkpKSl9KSxuPWUse3Nob3dEaWFsb2c6ZnVuY3Rpb24oKXtlZShuKX19fSl9KCl9KCk7]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/nonbreaking/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/nonbreaking/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIG49dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuUGx1Z2luTWFuYWdlciIpLGk9ZnVuY3Rpb24obixlKXtmb3IodmFyIGE9IiIsbz0wO288ZTtvKyspYSs9bjtyZXR1cm4gYX0scj1mdW5jdGlvbihuLGUpe3ZhciBhLG89bi5nZXRQYXJhbSgibm9uYnJlYWtpbmdfd3JhcCIsITAsImJvb2xlYW4iKXx8bi5wbHVnaW5zLnZpc3VhbGNoYXJzPyc8c3BhbiBjbGFzcz0iJysoKGE9bikucGx1Z2lucy52aXN1YWxjaGFycyYmYS5wbHVnaW5zLnZpc3VhbGNoYXJzLmlzRW5hYmxlZCgpPyJtY2UtbmJzcC13cmFwIG1jZS1uYnNwIjoibWNlLW5ic3Atd3JhcCIpKyciIGNvbnRlbnRlZGl0YWJsZT0iZmFsc2UiPicraSgiJm5ic3A7IixlKSsiPC9zcGFuPiI6aSgiJm5ic3A7IixlKTtuLnVuZG9NYW5hZ2VyLnRyYW5zYWN0KGZ1bmN0aW9uKCl7cmV0dXJuIG4uaW5zZXJ0Q29udGVudChvKX0pfSxjPXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLnV0aWwuVksiKTshZnVuY3Rpb24gZSgpe24uYWRkKCJub25icmVha2luZyIsZnVuY3Rpb24obil7dmFyIGUsYSxvLGksdDsoZT1uKS5hZGRDb21tYW5kKCJtY2VOb25CcmVha2luZyIsZnVuY3Rpb24oKXtyKGUsMSl9KSwoYT1uKS51aS5yZWdpc3RyeS5hZGRCdXR0b24oIm5vbmJyZWFraW5nIix7aWNvbjoibm9uLWJyZWFraW5nIix0b29sdGlwOiJOb25icmVha2luZyBzcGFjZSIsb25BY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gYS5leGVjQ29tbWFuZCgibWNlTm9uQnJlYWtpbmciKX19KSxhLnVpLnJlZ2lzdHJ5LmFkZE1lbnVJdGVtKCJub25icmVha2luZyIse2ljb246Im5vbi1icmVha2luZyIsdGV4dDoiTm9uYnJlYWtpbmcgc3BhY2UiLG9uQWN0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIGEuZXhlY0NvbW1hbmQoIm1jZU5vbkJyZWFraW5nIil9fSksMDwodD0iYm9vbGVhbiI9PXR5cGVvZihpPShvPW4pLmdldFBhcmFtKCJub25icmVha2luZ19mb3JjZV90YWIiLDApKT8hMD09PWk/MzowOmkpJiZvLm9uKCJrZXlkb3duIixmdW5jdGlvbihuKXtpZihuLmtleUNvZGU9PT1jLlRBQiYmIW4uaXNEZWZhdWx0UHJldmVudGVkKCkpe2lmKG4uc2hpZnRLZXkpcmV0dXJuO24ucHJldmVudERlZmF1bHQoKSxuLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLHIobyx0KX19KX0pfSgpfSgpOw==]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/noneditable/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/noneditable/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIHQ9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuUGx1Z2luTWFuYWdlciIpLGw9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UudXRpbC5Ub29scyIpLHU9ZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0UGFyYW0oIm5vbmVkaXRhYmxlX25vbmVkaXRhYmxlX2NsYXNzIiwibWNlTm9uRWRpdGFibGUiKX0sZj1mdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuLTEhPT0oIiAiK3QuYXR0cigiY2xhc3MiKSsiICIpLmluZGV4T2Yobil9fSxzPWZ1bmN0aW9uKGksbyxjKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIG49YXJndW1lbnRzLGU9bltuLmxlbmd0aC0yXSxyPTA8ZT9vLmNoYXJBdChlLTEpOiIiO2lmKCciJz09PXIpcmV0dXJuIHQ7aWYoIj4iPT09cil7dmFyIGE9by5sYXN0SW5kZXhPZigiPCIsZSk7aWYoLTEhPT1hKWlmKC0xIT09by5zdWJzdHJpbmcoYSxlKS5pbmRleE9mKCdjb250ZW50ZWRpdGFibGU9ImZhbHNlIicpKXJldHVybiB0fXJldHVybic8c3BhbiBjbGFzcz0iJytjKyciIGRhdGEtbWNlLWNvbnRlbnQ9IicraS5kb20uZW5jb2RlKG5bMF0pKyciPicraS5kb20uZW5jb2RlKCJzdHJpbmciPT10eXBlb2YgblsxXT9uWzFdOm5bMF0pKyI8L3NwYW4+In19LG49ZnVuY3Rpb24obil7dmFyIHQsZSxyPSJjb250ZW50ZWRpdGFibGUiO3Q9IiAiK2wudHJpbShuLmdldFBhcmFtKCJub25lZGl0YWJsZV9lZGl0YWJsZV9jbGFzcyIsIm1jZUVkaXRhYmxlIikpKyIgIixlPSIgIitsLnRyaW0odShuKSkrIiAiO3ZhciBhLGk9Zih0KSxvPWYoZSksYz0oYT1uLmdldFBhcmFtKCJub25lZGl0YWJsZV9yZWdleHAiLFtdKSkmJmEuY29uc3RydWN0b3I9PT1SZWdFeHA/W2FdOmE7bi5vbigiUHJlSW5pdCIsZnVuY3Rpb24oKXswPGMubGVuZ3RoJiZuLm9uKCJCZWZvcmVTZXRDb250ZW50IixmdW5jdGlvbih0KXshZnVuY3Rpb24odCxuLGUpe3ZhciByPW4ubGVuZ3RoLGE9ZS5jb250ZW50O2lmKCJyYXciIT09ZS5mb3JtYXQpe2Zvcig7ci0tOylhPWEucmVwbGFjZShuW3JdLHModCxhLHUodCkpKTtlLmNvbnRlbnQ9YX19KG4sYyx0KX0pLG4ucGFyc2VyLmFkZEF0dHJpYnV0ZUZpbHRlcigiY2xhc3MiLGZ1bmN0aW9uKHQpe2Zvcih2YXIgbixlPXQubGVuZ3RoO2UtLTspbj10W2VdLGkobik/bi5hdHRyKHIsInRydWUiKTpvKG4pJiZuLmF0dHIociwiZmFsc2UiKX0pLG4uc2VyaWFsaXplci5hZGRBdHRyaWJ1dGVGaWx0ZXIocixmdW5jdGlvbih0KXtmb3IodmFyIG4sZT10Lmxlbmd0aDtlLS07KW49dFtlXSwoaShuKXx8byhuKSkmJigwPGMubGVuZ3RoJiZuLmF0dHIoImRhdGEtbWNlLWNvbnRlbnQiKT8obi5uYW1lPSIjdGV4dCIsbi50eXBlPTMsbi5yYXc9ITAsbi52YWx1ZT1uLmF0dHIoImRhdGEtbWNlLWNvbnRlbnQiKSk6bi5hdHRyKHIsbnVsbCkpfSl9KX07IWZ1bmN0aW9uIGUoKXt0LmFkZCgibm9uZWRpdGFibGUiLGZ1bmN0aW9uKHQpe24odCl9KX0oKX0oKTs=]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/pagebreak/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/pagebreak/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIGU9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuUGx1Z2luTWFuYWdlciIpLGE9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuRW52IiksYz1mdW5jdGlvbigpe3JldHVybiJtY2UtcGFnZWJyZWFrIn0sZz1mdW5jdGlvbigpe3JldHVybic8aW1nIHNyYz0iJythLnRyYW5zcGFyZW50U3JjKyciIGNsYXNzPSInK2MoKSsnIiBkYXRhLW1jZS1yZXNpemU9ImZhbHNlIiBkYXRhLW1jZS1wbGFjZWhvbGRlciAvPid9OyFmdW5jdGlvbiBuKCl7ZS5hZGQoInBhZ2VicmVhayIsZnVuY3Rpb24oZSl7dmFyIGEsbixvLGksdCxyOyhhPWUpLmFkZENvbW1hbmQoIm1jZVBhZ2VCcmVhayIsZnVuY3Rpb24oKXthLnNldHRpbmdzLnBhZ2VicmVha19zcGxpdF9ibG9jaz9hLmluc2VydENvbnRlbnQoIjxwPiIrZygpKyI8L3A+Iik6YS5pbnNlcnRDb250ZW50KGcoKSl9KSwobj1lKS51aS5yZWdpc3RyeS5hZGRCdXR0b24oInBhZ2VicmVhayIse2ljb246InBhZ2UtYnJlYWsiLHRvb2x0aXA6IlBhZ2UgYnJlYWsiLG9uQWN0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIG4uZXhlY0NvbW1hbmQoIm1jZVBhZ2VCcmVhayIpfX0pLG4udWkucmVnaXN0cnkuYWRkTWVudUl0ZW0oInBhZ2VicmVhayIse3RleHQ6IlBhZ2UgYnJlYWsiLGljb246InBhZ2UtYnJlYWsiLG9uQWN0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIG4uZXhlY0NvbW1hbmQoIm1jZVBhZ2VCcmVhayIpfX0pLGk9KG89ZSkuZ2V0UGFyYW0oInBhZ2VicmVha19zZXBhcmF0b3IiLCJceDNjIS0tIHBhZ2VicmVhayAtLVx4M2UiKSx0PW5ldyBSZWdFeHAoaS5yZXBsYWNlKC9bXD9cLlwqXFtcXVwoXClce1x9XCtcXlwkXDpdL2csZnVuY3Rpb24oZSl7cmV0dXJuIlxcIitlfSksImdpIiksby5vbigiQmVmb3JlU2V0Q29udGVudCIsZnVuY3Rpb24oZSl7ZS5jb250ZW50PWUuY29udGVudC5yZXBsYWNlKHQsZygpKX0pLG8ub24oIlByZUluaXQiLGZ1bmN0aW9uKCl7by5zZXJpYWxpemVyLmFkZE5vZGVGaWx0ZXIoImltZyIsZnVuY3Rpb24oZSl7Zm9yKHZhciBhLG4sdD1lLmxlbmd0aDt0LS07KWlmKChuPShhPWVbdF0pLmF0dHIoImNsYXNzIikpJiYtMSE9PW4uaW5kZXhPZigibWNlLXBhZ2VicmVhayIpKXt2YXIgcj1hLnBhcmVudDtpZihvLnNjaGVtYS5nZXRCbG9ja0VsZW1lbnRzKClbci5uYW1lXSYmby5nZXRQYXJhbSgicGFnZWJyZWFrX3NwbGl0X2Jsb2NrIiwhMSkpe3IudHlwZT0zLHIudmFsdWU9aSxyLnJhdz0hMCxhLnJlbW92ZSgpO2NvbnRpbnVlfWEudHlwZT0zLGEudmFsdWU9aSxhLnJhdz0hMH19KX0pLChyPWUpLm9uKCJSZXNvbHZlTmFtZSIsZnVuY3Rpb24oZSl7IklNRyI9PT1lLnRhcmdldC5ub2RlTmFtZSYmci5kb20uaGFzQ2xhc3MoZS50YXJnZXQsYygpKSYmKGUubmFtZT0icGFnZWJyZWFrIil9KX0pfSgpfSgpOw==]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/paste/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/paste/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24oeSl7InVzZSBzdHJpY3QiO3ZhciBlLHQsbixyLHA9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm57Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHR9LHNldDpmdW5jdGlvbihlKXt0PWV9fX0sYz10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS5QbHVnaW5NYW5hZ2VyIiksaT1mdW5jdGlvbihlLHQpe3JldHVybiBlLmZpcmUoIlBhc3RlUGxhaW5UZXh0VG9nZ2xlIix7c3RhdGU6dH0pfSxmPWZ1bmN0aW9uKG4scil7bi5hZGRDb21tYW5kKCJtY2VUb2dnbGVQbGFpblRleHRQYXN0ZSIsZnVuY3Rpb24oKXt2YXIgZSx0O2U9biwidGV4dCI9PT0odD1yKS5wYXN0ZUZvcm1hdC5nZXQoKT8odC5wYXN0ZUZvcm1hdC5zZXQoImh0bWwiKSxpKGUsITEpKToodC5wYXN0ZUZvcm1hdC5zZXQoInRleHQiKSxpKGUsITApKSxlLmZvY3VzKCl9KSxuLmFkZENvbW1hbmQoIm1jZUluc2VydENsaXBib2FyZENvbnRlbnQiLGZ1bmN0aW9uKGUsdCl7dC5jb250ZW50JiZyLnBhc3RlSHRtbCh0LmNvbnRlbnQsdC5pbnRlcm5hbCksdC50ZXh0JiZyLnBhc3RlVGV4dCh0LnRleHQpfSl9LG89ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGV9fSxhPW8oITEpLHM9byghMCksdT1mdW5jdGlvbigpe3JldHVybiBsfSxsPShlPWZ1bmN0aW9uKGUpe3JldHVybiBlLmlzTm9uZSgpfSx7Zm9sZDpmdW5jdGlvbihlLHQpe3JldHVybiBlKCl9LGlzOmEsaXNTb21lOmEsaXNOb25lOnMsZ2V0T3I6bj1mdW5jdGlvbihlKXtyZXR1cm4gZX0sZ2V0T3JUaHVuazp0PWZ1bmN0aW9uKGUpe3JldHVybiBlKCl9LGdldE9yRGllOmZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcihlfHwiZXJyb3I6IGdldE9yRGllIGNhbGxlZCBvbiBub25lLiIpfSxnZXRPck51bGw6byhudWxsKSxnZXRPclVuZGVmaW5lZDpvKHVuZGVmaW5lZCksb3I6bixvclRodW5rOnQsbWFwOnUsZWFjaDpmdW5jdGlvbigpe30sYmluZDp1LGV4aXN0czphLGZvcmFsbDpzLGZpbHRlcjp1LGVxdWFsczplLGVxdWFsc186ZSx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuW119LHRvU3RyaW5nOm8oIm5vbmUoKSIpfSksZD1mdW5jdGlvbihuKXt2YXIgZT1vKG4pLHQ9ZnVuY3Rpb24oKXtyZXR1cm4gaX0scj1mdW5jdGlvbihlKXtyZXR1cm4gZShuKX0saT17Zm9sZDpmdW5jdGlvbihlLHQpe3JldHVybiB0KG4pfSxpczpmdW5jdGlvbihlKXtyZXR1cm4gbj09PWV9LGlzU29tZTpzLGlzTm9uZTphLGdldE9yOmUsZ2V0T3JUaHVuazplLGdldE9yRGllOmUsZ2V0T3JOdWxsOmUsZ2V0T3JVbmRlZmluZWQ6ZSxvcjp0LG9yVGh1bms6dCxtYXA6ZnVuY3Rpb24oZSl7cmV0dXJuIGQoZShuKSl9LGVhY2g6ZnVuY3Rpb24oZSl7ZShuKX0sYmluZDpyLGV4aXN0czpyLGZvcmFsbDpyLGZpbHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gZShuKT9pOmx9LHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm5bbl19LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuInNvbWUoIituKyIpIn0sZXF1YWxzOmZ1bmN0aW9uKGUpe3JldHVybiBlLmlzKG4pfSxlcXVhbHNfOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuZm9sZChhLGZ1bmN0aW9uKGUpe3JldHVybiB0KG4sZSl9KX19O3JldHVybiBpfSxnPXtzb21lOmQsbm9uZTp1LGZyb206ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PT1lfHxlPT09dW5kZWZpbmVkP2w6ZChlKX19LG09KHI9ImZ1bmN0aW9uIixmdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGU9PT1yfSksdj1BcnJheS5wcm90b3R5cGUuc2xpY2UsaD1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1lLmxlbmd0aCxyPW5ldyBBcnJheShuKSxpPTA7aTxuO2krKyl7dmFyIG89ZVtpXTtyW2ldPXQobyxpKX1yZXR1cm4gcn0sYj1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wLHI9ZS5sZW5ndGg7bjxyO24rKyl7dChlW25dLG4pfX0seD1tKEFycmF5LmZyb20pP0FycmF5LmZyb206ZnVuY3Rpb24oZSl7cmV0dXJuIHYuY2FsbChlKX0sdz10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS5FbnYiKSxQPXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLnV0aWwuRGVsYXkiKSxfPXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLnV0aWwuUHJvbWlzZSIpLFQ9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UudXRpbC5Ub29scyIpLEM9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UudXRpbC5WSyIpLEQ9IngtdGlueW1jZS9odG1sIixrPSJceDNjIS0tICIrRCsiIC0tXHgzZSIsUz1mdW5jdGlvbihlKXtyZXR1cm4tMSE9PWUuaW5kZXhPZihrKX0sTz10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS5odG1sLkVudGl0aWVzIiksUj1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5zcGxpdCgvXG5cbi8pLGk9ZnVuY3Rpb24oZSx0KXt2YXIgbixyPVtdLGk9IjwiK2U7aWYoIm9iamVjdCI9PXR5cGVvZiB0KXtmb3IobiBpbiB0KXQuaGFzT3duUHJvcGVydHkobikmJnIucHVzaChuKyc9IicrTy5lbmNvZGVBbGxSYXcodFtuXSkrJyInKTtyLmxlbmd0aCYmKGkrPSIgIityLmpvaW4oIiAiKSl9cmV0dXJuIGkrIj4ifSh0LG4pLG89IjwvIit0KyI+IixhPVQubWFwKHIsZnVuY3Rpb24oZSl7cmV0dXJuIGUuc3BsaXQoL1xuLykuam9pbigiPGJyIC8+Iil9KTtyZXR1cm4gMT09PWEubGVuZ3RoP2FbMF06VC5tYXAoYSxmdW5jdGlvbihlKXtyZXR1cm4gaStlK299KS5qb2luKCIiKX0sQT10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS5odG1sLkRvbVBhcnNlciIpLEk9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuaHRtbC5TZXJpYWxpemVyIiksRT10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS5odG1sLk5vZGUiKSxGPXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLmh0bWwuU2NoZW1hIiksTT1mdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRQYXJhbSgicGFzdGVfZGF0YV9pbWFnZXMiLCExKX0sTj1mdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRQYXJhbSgicGFzdGVfcmV0YWluX3N0eWxlX3Byb3BlcnRpZXMiKX0sQj0iXHhhMCI7ZnVuY3Rpb24gJCh0LGUpe3JldHVybiBULmVhY2goZSxmdW5jdGlvbihlKXt0PWUuY29uc3RydWN0b3I9PT1SZWdFeHA/dC5yZXBsYWNlKGUsIiIpOnQucmVwbGFjZShlWzBdLGVbMV0pfSksdH1mdW5jdGlvbiBIKGUpe3ZhciB0PUYoKSxuPUEoe30sdCkscj0iIixpPXQuZ2V0U2hvcnRFbmRlZEVsZW1lbnRzKCksbz1ULm1ha2VNYXAoInNjcmlwdCBub3NjcmlwdCBzdHlsZSB0ZXh0YXJlYSB2aWRlbyBhdWRpbyBpZnJhbWUgb2JqZWN0IiwiICIpLGE9dC5nZXRCbG9ja0VsZW1lbnRzKCk7cmV0dXJuIGU9JChlLFsvPCFcW1teXF1dK1xdPi9nXSksZnVuY3Rpb24gcyhlKXt2YXIgdD1lLm5hbWUsbj1lO2lmKCJiciIhPT10KXtpZigid2JyIiE9PXQpaWYoaVt0XSYmKHIrPSIgIiksb1t0XSlyKz0iICI7ZWxzZXtpZigzPT09ZS50eXBlJiYocis9ZS52YWx1ZSksIWUuc2hvcnRFbmRlZCYmKGU9ZS5maXJzdENoaWxkKSlmb3IoO3MoZSksZT1lLm5leHQ7KTthW3RdJiZuLm5leHQmJihyKz0iXG4iLCJwIj09PXQmJihyKz0iXG4iKSl9fWVsc2Ugcis9IlxuIn0obi5wYXJzZShlKSkscn1mdW5jdGlvbiBqKGUpe3JldHVybiBlPSQoZSxbL15bXHNcU10qPGJvZHlbXj5dKj5ccyp8XHMqPFwvYm9keVtePl0qPltcc1xTXSokL2dpLC88IS0tU3RhcnRGcmFnbWVudC0tPnw8IS0tRW5kRnJhZ21lbnQtLT4vZyxbLyggPyk8c3BhbiBjbGFzcz0iQXBwbGUtY29udmVydGVkLXNwYWNlIj5cdTAwYTA8XC9zcGFuPiggPykvZyxmdW5jdGlvbiByKGUsdCxuKXtyZXR1cm4gdHx8bj9COiIgIn1dLC88YnIgY2xhc3M9IkFwcGxlLWludGVyY2hhbmdlLW5ld2xpbmUiPi9nLC88YnI+JC9pXSl9dmFyIEw9ZnVuY3Rpb24oKXtyZXR1cm4tMSE9PXkubmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCIgRWRnZS8iKX07ZnVuY3Rpb24geihlKXtyZXR1cm4vPGZvbnQgZmFjZT0iVGltZXMgTmV3IFJvbWFuInxjbGFzcz0iP01zb3xzdHlsZT0iW14iXSpcYm1zby18c3R5bGU9J1teJyddKlxibXNvLXx3OldvcmREb2N1bWVudC9pLnRlc3QoZSl8fC9jbGFzcz0iT3V0bGluZUVsZW1lbnQvLnRlc3QoZSl8fC9pZD0iP2RvY3NcLWludGVybmFsXC1ndWlkXC0vLnRlc3QoZSl9ZnVuY3Rpb24gVSh0KXt2YXIgbixlO3JldHVybiBlPVsvXltJVlhMTUNEXXsxLDJ9XC5bIFx1MDBhMF0vLC9eW2l2eGxtY2RdezEsMn1cLlsgXHUwMGEwXS8sL15bYS16XXsxLDJ9W1wuXCldWyBcdTAwYTBdLywvXltBLVpdezEsMn1bXC5cKV1bIFx1MDBhMF0vLC9eWzAtOV0rXC5bIFx1MDBhMF0vLC9eW1x1MzAwN1x1NGUwMFx1NGU4Y1x1NGUwOVx1NTZkYlx1NGU5NFx1NTE2ZFx1NGUwM1x1NTE2Ylx1NGU1ZF0rXC5bIFx1MDBhMF0vLC9eW1x1NThmMVx1NWYxMFx1NTNjMlx1NTZkYlx1NGYwZFx1NTE2ZFx1NGUwM1x1NTE2Ylx1NGU1ZFx1NjJmZV0rXC5bIFx1MDBhMF0vXSx0PXQucmVwbGFjZSgvXltcdTAwYTAgXSsvLCIiKSxULmVhY2goZSxmdW5jdGlvbihlKXtpZihlLnRlc3QodCkpcmV0dXJuIShuPSEwKX0pLG59ZnVuY3Rpb24gcShlKXt2YXIgbyxhLHM9MTtmdW5jdGlvbiBuKGUpe3ZhciB0PSIiO2lmKDM9PT1lLnR5cGUpcmV0dXJuIGUudmFsdWU7aWYoZT1lLmZpcnN0Q2hpbGQpZm9yKDt0Kz1uKGUpLGU9ZS5uZXh0Oyk7cmV0dXJuIHR9ZnVuY3Rpb24gdShlLHQpe2lmKDMhPT1lLnR5cGV8fCF0LnRlc3QoZS52YWx1ZSkpe2lmKGU9ZS5maXJzdENoaWxkKWRve2lmKCF1KGUsdCkpcmV0dXJufXdoaWxlKGU9ZS5uZXh0KTtyZXR1cm4gMX1lLnZhbHVlPWUudmFsdWUucmVwbGFjZSh0LCIiKX1mdW5jdGlvbiB0KGUsdCxuKXt2YXIgcj1lLl9saXN0TGV2ZWx8fHM7ciE9PXMmJihvPXI8cz9vJiZvLnBhcmVudC5wYXJlbnQ6KGE9byxudWxsKSksbyYmby5uYW1lPT09dD9vLmFwcGVuZChlKTooYT1hfHxvLG89bmV3IEUodCwxKSwxPG4mJm8uYXR0cigic3RhcnQiLCIiK24pLGUud3JhcChvKSksZS5uYW1lPSJsaSIsczxyJiZhJiZhLmxhc3RDaGlsZC5hcHBlbmQobykscz1yLGZ1bmN0aW9uIGkoZSl7aWYoZS5fbGlzdElnbm9yZSllLnJlbW92ZSgpO2Vsc2UgaWYoZT1lLmZpcnN0Q2hpbGQpZm9yKDtpKGUpLGU9ZS5uZXh0Oyk7fShlKSx1KGUsL15cdTAwYTArLyksdShlLC9eXHMqKFtcdTIwMjJcdTAwYjdcdTAwYTdcdTI1Q0ZdfFx3K1wuKS8pLHUoZSwvXlx1MDBhMCsvKX1mb3IodmFyIHI9W10saT1lLmZpcnN0Q2hpbGQ7bnVsbCE9aTspaWYoci5wdXNoKGkpLG51bGwhPT0oaT1pLndhbGsoKSkpZm9yKDt2b2lkIDAhPT1pJiZpLnBhcmVudCE9PWU7KWk9aS53YWxrKCk7Zm9yKHZhciBsPTA7bDxyLmxlbmd0aDtsKyspaWYoInAiPT09KGU9cltsXSkubmFtZSYmZS5maXJzdENoaWxkKXt2YXIgYz1uKGUpO2lmKC9eW1xzXHUwMGEwXSpbXHUyMDIyXHUwMGI3XHUwMGE3XHUyNUNGXVxzKi8udGVzdChjKSl7dChlLCJ1bCIpO2NvbnRpbnVlfWlmKFUoYykpe3ZhciBmPS8oWzAtOV0rKVwuLy5leGVjKGMpLGQ9MTtmJiYoZD1wYXJzZUludChmWzFdLDEwKSksdChlLCJvbCIsZCk7Y29udGludWV9aWYoZS5fbGlzdExldmVsKXt0KGUsInVsIiwxKTtjb250aW51ZX1vPW51bGx9ZWxzZSBhPW8sbz1udWxsfWZ1bmN0aW9uIFYobixyLGksbyl7dmFyIGEscz17fSxlPW4uZG9tLnBhcnNlU3R5bGUobyk7cmV0dXJuIFQuZWFjaChlLGZ1bmN0aW9uKGUsdCl7c3dpdGNoKHQpe2Nhc2UibXNvLWxpc3QiOihhPS9cdysgXHcrKFswLTldKykvaS5leGVjKG8pKSYmKGkuX2xpc3RMZXZlbD1wYXJzZUludChhWzFdLDEwKSksL0lnbm9yZS9pLnRlc3QoZSkmJmkuZmlyc3RDaGlsZCYmKGkuX2xpc3RJZ25vcmU9ITAsaS5maXJzdENoaWxkLl9saXN0SWdub3JlPSEwKTticmVhaztjYXNlImhvcml6LWFsaWduIjp0PSJ0ZXh0LWFsaWduIjticmVhaztjYXNlInZlcnQtYWxpZ24iOnQ9InZlcnRpY2FsLWFsaWduIjticmVhaztjYXNlImZvbnQtY29sb3IiOmNhc2UibXNvLWZvcmVncm91bmQiOnQ9ImNvbG9yIjticmVhaztjYXNlIm1zby1iYWNrZ3JvdW5kIjpjYXNlIm1zby1oaWdobGlnaHQiOnQ9ImJhY2tncm91bmQiO2JyZWFrO2Nhc2UiZm9udC13ZWlnaHQiOmNhc2UiZm9udC1zdHlsZSI6cmV0dXJuIHZvaWQoIm5vcm1hbCIhPT1lJiYoc1t0XT1lKSk7Y2FzZSJtc28tZWxlbWVudCI6aWYoL14oY29tbWVudHxjb21tZW50LWxpc3QpJC9pLnRlc3QoZSkpcmV0dXJuIHZvaWQgaS5yZW1vdmUoKX0wIT09dC5pbmRleE9mKCJtc28tY29tbWVudCIpPzAhPT10LmluZGV4T2YoIm1zby0iKSYmKCJhbGwiPT09TihuKXx8ciYmclt0XSkmJihzW3RdPWUpOmkucmVtb3ZlKCl9KSwvKGJvbGQpL2kudGVzdChzWyJmb250LXdlaWdodCJdKSYmKGRlbGV0ZSBzWyJmb250LXdlaWdodCJdLGkud3JhcChuZXcgRSgiYiIsMSkpKSwvKGl0YWxpYykvaS50ZXN0KHNbImZvbnQtc3R5bGUiXSkmJihkZWxldGUgc1siZm9udC1zdHlsZSJdLGkud3JhcChuZXcgRSgiaSIsMSkpKSwocz1uLmRvbS5zZXJpYWxpemVTdHlsZShzLGkubmFtZSkpfHxudWxsfXZhciBLPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuZ2V0UGFyYW0oInBhc3RlX2VuYWJsZV9kZWZhdWx0X2ZpbHRlcnMiLCEwKT9mdW5jdGlvbihyLGUpe3ZhciB0LGk7KHQ9TihyKSkmJihpPVQubWFrZU1hcCh0LnNwbGl0KC9bLCBdLykpKSxlPSQoZSxbLzxiciBjbGFzcz0iP0FwcGxlLWludGVyY2hhbmdlLW5ld2xpbmUiPz4vZ2ksLzxiW14+XStpZD0iP2RvY3MtaW50ZXJuYWwtW14+XSo+L2dpLC88IS0tW1xzXFNdKz8tLT4vZ2ksLzwoIXxzY3JpcHRbXj5dKj4uKj88XC9zY3JpcHQoPz1bPlxzXSl8XC8/KFw/eG1sKDpcdyspP3xpbWd8bWV0YXxsaW5rfHN0eWxlfFx3Olx3KykoPz1bXHNcLz5dKSlbXj5dKj4vZ2ksWy88KFwvPylzPi9naSwiPCQxc3RyaWtlPiJdLFsvJm5ic3A7L2dpLEJdLFsvPHNwYW5ccytzdHlsZVxzKj1ccyoiXHMqbXNvLXNwYWNlcnVuXHMqOlxzKnllc1xzKjs/XHMqIlxzKj4oW1xzXHUwMGEwXSopPFwvc3Bhbj4vZ2ksZnVuY3Rpb24oZSx0KXtyZXR1cm4gMDx0Lmxlbmd0aD90LnJlcGxhY2UoLy4vLCIgIikuc2xpY2UoTWF0aC5mbG9vcih0Lmxlbmd0aC8yKSkuc3BsaXQoIiIpLmpvaW4oQik6IiJ9XV0pO3ZhciBuPXIuZ2V0UGFyYW0oInBhc3RlX3dvcmRfdmFsaWRfZWxlbWVudHMiLCItc3Ryb25nL2IsLWVtL2ksLXUsLXNwYW4sLXAsLW9sLC11bCwtbGksLWgxLC1oMiwtaDMsLWg0LC1oNSwtaDYsLXAvZGl2LC1hW2hyZWZ8bmFtZV0sc3ViLHN1cCxzdHJpa2UsYnIsZGVsLHRhYmxlW3dpZHRoXSx0cix0ZFtjb2xzcGFufHJvd3NwYW58d2lkdGhdLHRoW2NvbHNwYW58cm93c3Bhbnx3aWR0aF0sdGhlYWQsdGZvb3QsdGJvZHkiKSxvPUYoe3ZhbGlkX2VsZW1lbnRzOm4sdmFsaWRfY2hpbGRyZW46Ii1saVtwXSJ9KTtULmVhY2goby5lbGVtZW50cyxmdW5jdGlvbihlKXtlLmF0dHJpYnV0ZXNbImNsYXNzIl18fChlLmF0dHJpYnV0ZXNbImNsYXNzIl09e30sZS5hdHRyaWJ1dGVzT3JkZXIucHVzaCgiY2xhc3MiKSksZS5hdHRyaWJ1dGVzLnN0eWxlfHwoZS5hdHRyaWJ1dGVzLnN0eWxlPXt9LGUuYXR0cmlidXRlc09yZGVyLnB1c2goInN0eWxlIikpfSk7dmFyIGE9QSh7fSxvKTthLmFkZEF0dHJpYnV0ZUZpbHRlcigic3R5bGUiLGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxuPWUubGVuZ3RoO24tLTspKHQ9ZVtuXSkuYXR0cigic3R5bGUiLFYocixpLHQsdC5hdHRyKCJzdHlsZSIpKSksInNwYW4iPT09dC5uYW1lJiZ0LnBhcmVudCYmIXQuYXR0cmlidXRlcy5sZW5ndGgmJnQudW53cmFwKCl9KSxhLmFkZEF0dHJpYnV0ZUZpbHRlcigiY2xhc3MiLGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxuLHI9ZS5sZW5ndGg7ci0tOyluPSh0PWVbcl0pLmF0dHIoImNsYXNzIiksL14oTXNvQ29tbWVudFJlZmVyZW5jZXxNc29Db21tZW50VGV4dHxtc29EZWwpJC9pLnRlc3QobikmJnQucmVtb3ZlKCksdC5hdHRyKCJjbGFzcyIsbnVsbCl9KSxhLmFkZE5vZGVGaWx0ZXIoImRlbCIsZnVuY3Rpb24oZSl7Zm9yKHZhciB0PWUubGVuZ3RoO3QtLTspZVt0XS5yZW1vdmUoKX0pLGEuYWRkTm9kZUZpbHRlcigiYSIsZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG4scixpPWUubGVuZ3RoO2ktLTspaWYobj0odD1lW2ldKS5hdHRyKCJocmVmIikscj10LmF0dHIoIm5hbWUiKSxuJiYtMSE9PW4uaW5kZXhPZigiI19tc29jb21fIikpdC5yZW1vdmUoKTtlbHNlIGlmKG4mJjA9PT1uLmluZGV4T2YoImZpbGU6Ly8iKSYmKG49KG49bi5zcGxpdCgiIyIpWzFdKSYmIiMiK24pLG58fHIpe2lmKHImJiEvXl8/KD86dG9jfGVkbnxmdG4pL2kudGVzdChyKSl7dC51bndyYXAoKTtjb250aW51ZX10LmF0dHIoe2hyZWY6bixuYW1lOnJ9KX1lbHNlIHQudW53cmFwKCl9KTt2YXIgcz1hLnBhcnNlKGUpO3JldHVybiByLmdldFBhcmFtKCJwYXN0ZV9jb252ZXJ0X3dvcmRfZmFrZV9saXN0cyIsITApJiZxKHMpLGU9SSh7dmFsaWRhdGU6ci5zZXR0aW5ncy52YWxpZGF0ZX0sbykuc2VyaWFsaXplKHMpfShlLHQpOnR9LFg9ZnVuY3Rpb24oZSx0KXtyZXR1cm57Y29udGVudDplLGNhbmNlbGxlZDp0fX0sVz1mdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvLGEscyx1LGwsYyxmLGQsbSxwLGcsdj0oaT10LG89bixhPXIsZS5maXJlKCJQYXN0ZVByZVByb2Nlc3MiLHtjb250ZW50OmksaW50ZXJuYWw6byx3b3JkQ29udGVudDphfSkpLGg9ZnVuY3Rpb24oZSx0KXt2YXIgbj1BKHt9LGUuc2NoZW1hKTtuLmFkZE5vZGVGaWx0ZXIoIm1ldGEiLGZ1bmN0aW9uKGUpe1QuZWFjaChlLGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlbW92ZSgpfSl9KTt2YXIgcj1uLnBhcnNlKHQse2ZvcmNlZF9yb290X2Jsb2NrOiExLGlzUm9vdENvbnRlbnQ6ITB9KTtyZXR1cm4gSSh7dmFsaWRhdGU6ZS5zZXR0aW5ncy52YWxpZGF0ZX0sZS5zY2hlbWEpLnNlcmlhbGl6ZShyKX0oZSx2LmNvbnRlbnQpO3JldHVybiBlLmhhc0V2ZW50TGlzdGVuZXJzKCJQYXN0ZVBvc3RQcm9jZXNzIikmJiF2LmlzRGVmYXVsdFByZXZlbnRlZCgpPyh1PWgsbD1uLGM9cixwPShzPWUpLmRvbS5jcmVhdGUoImRpdiIse3N0eWxlOiJkaXNwbGF5Om5vbmUifSx1KSxmPXAsZD1sLG09YyxnPXMuZmlyZSgiUGFzdGVQb3N0UHJvY2VzcyIse25vZGU6ZixpbnRlcm5hbDpkLHdvcmRDb250ZW50Om19KSxYKGcubm9kZS5pbm5lckhUTUwsZy5pc0RlZmF1bHRQcmV2ZW50ZWQoKSkpOlgoaCx2LmlzRGVmYXVsdFByZXZlbnRlZCgpKX0sWT1mdW5jdGlvbihlLHQpe3JldHVybiBlLmluc2VydENvbnRlbnQodCx7bWVyZ2U6ZS5nZXRQYXJhbSgicGFzdGVfbWVyZ2VfZm9ybWF0cyIsITApLHBhc3RlOiEwfSksITB9LFo9ZnVuY3Rpb24oZSl7cmV0dXJuL15odHRwcz86XC9cL1tcd1w/XC1cLys9LiYlQH4jXSskL2kudGVzdChlKX0sRz1mdW5jdGlvbihlKXtyZXR1cm4gWihlKSYmLy4oZ2lmfGpwZT9nfHBuZykkLy50ZXN0KGUpfSxKPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4hKCExIT09ZS5zZWxlY3Rpb24uaXNDb2xsYXBzZWQoKXx8IVoodCkpJiYoaT10LG89biwocj1lKS51bmRvTWFuYWdlci5leHRyYShmdW5jdGlvbigpe28ocixpKX0sZnVuY3Rpb24oKXtyLmV4ZWNDb21tYW5kKCJtY2VJbnNlcnRMaW5rIiwhMSxpKX0pLCEwKTt2YXIgcixpLG99LFE9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiEhRyh0KSYmKGk9dCxvPW4sKHI9ZSkudW5kb01hbmFnZXIuZXh0cmEoZnVuY3Rpb24oKXtvKHIsaSl9LGZ1bmN0aW9uKCl7ci5pbnNlcnRDb250ZW50KCc8aW1nIHNyYz0iJytpKyciPicpfSksITApO3ZhciByLGksb30sZWU9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGk7bnx8ITE9PT1lLmdldFBhcmFtKCJzbWFydF9wYXN0ZSIsITApP1koZSx0KToocj1lLGk9dCxULmVhY2goW0osUSxZXSxmdW5jdGlvbihlKXtyZXR1cm4hMCE9PWUocixpLFkpfSkpfSx0ZT1mdW5jdGlvbihlKXtyZXR1cm4iXG4iPT09ZXx8IlxyIj09PWV9LG5lPWZ1bmN0aW9uKGkpe3ZhciB0LG47cmV0dXJuKG49e3BjSXNTcGFjZTohKHQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4tMSE9PSIgXGZcdFx4MEIiLmluZGV4T2YodCl8fHQ9PT1CP2UucGNJc1NwYWNlfHwiIj09PWUuc3RyfHxlLnN0ci5sZW5ndGg9PT1pLmxlbmd0aC0xfHwobj1pLChyPWUuc3RyLmxlbmd0aCsxKTxuLmxlbmd0aCYmMDw9ciYmdGUobltyXSkpP3twY0lzU3BhY2U6ITEsc3RyOmUuc3RyK0J9OntwY0lzU3BhY2U6ITAsc3RyOmUuc3RyKyIgIn06e3BjSXNTcGFjZTp0ZSh0KSxzdHI6ZS5zdHIrdH07dmFyIG4scn0pLHN0cjoiIn0sYihpLGZ1bmN0aW9uKGUpe249dChuLGUpfSksbikuc3RyfSxyZT1mdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvLGEscyx1LGw9KGk9ZSxhPW4scz16KG89dCksdT1zP0soaSxvKTpvLFcoaSx1LGEscykpOyExPT09bC5jYW5jZWxsZWQmJmVlKGUsbC5jb250ZW50LHIpfSxpZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9bnx8Uyh0KTtyZShlLHQucmVwbGFjZShrLCIiKSxyLCExKX0sb2U9ZnVuY3Rpb24oZSx0KXt2YXIgbixyLGksbz1lLmRvbS5lbmNvZGUodCkucmVwbGFjZSgvXHJcbi9nLCJcbiIpLGE9bmUobykscz0obj1hLHI9ZS5zZXR0aW5ncy5mb3JjZWRfcm9vdF9ibG9jayxpPWUuc2V0dGluZ3MuZm9yY2VkX3Jvb3RfYmxvY2tfYXR0cnMscj9SKG4sITA9PT1yPyJwIjpyLGkpOm4ucmVwbGFjZSgvXHI/XG4vZywiPGJyPiIpKTtyZShlLHMsITEsITApfSxhZT1mdW5jdGlvbihlKXt2YXIgdD17fTtpZihlKXtpZihlLmdldERhdGEpe3ZhciBuPWUuZ2V0RGF0YSgiVGV4dCIpO24mJjA8bi5sZW5ndGgmJi0xPT09bi5pbmRleE9mKCJkYXRhOnRleHQvbWNlLWludGVybmFsLCIpJiYodFsidGV4dC9wbGFpbiJdPW4pfWlmKGUudHlwZXMpZm9yKHZhciByPTA7cjxlLnR5cGVzLmxlbmd0aDtyKyspe3ZhciBpPWUudHlwZXNbcl07dHJ5e3RbaV09ZS5nZXREYXRhKGkpfWNhdGNoKG8pe3RbaV09IiJ9fX1yZXR1cm4gdH0sc2U9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdCBpbiBlJiYwPGVbdF0ubGVuZ3RofSx1ZT1mdW5jdGlvbihlKXtyZXR1cm4gc2UoZSwidGV4dC9odG1sIil8fHNlKGUsInRleHQvcGxhaW4iKX0sbGU9ZnVuY3Rpb24gQmUoZSl7dmFyIHQ9MDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZSt0Kyt9fSgibWNlY2xpcCIpLGNlPWZ1bmN0aW9uKGUsdCl7dmFyIG4scixpLG8sYSxzLHUsbD0obj10LnVyaSwocj0vZGF0YTooW147XSspO2Jhc2U2NCwoW2EtejAtOVwrXC89XSspL2kuZXhlYyhuKSk/e3R5cGU6clsxXSxkYXRhOmRlY29kZVVSSUNvbXBvbmVudChyWzJdKX06e3R5cGU6bnVsbCxkYXRhOm51bGx9KSxjPWwuZGF0YSxmPWwudHlwZSxkPWxlKCksbT1lLnNldHRpbmdzLmltYWdlc19yZXVzZV9maWxlbmFtZSYmdC5ibG9iLm5hbWU/KGk9ZSxvPXQuYmxvYi5uYW1lLChhPW8ubWF0Y2goLyhbXHNcU10rPylcLig/OmpwZWd8anBnfHBuZ3xnaWYpJC9pKSk/aS5kb20uZW5jb2RlKGFbMV0pOm51bGwpOmQscD1uZXcgeS5JbWFnZTtpZihwLnNyYz10LnVyaSxzPWUuc2V0dGluZ3MsdT1wLCFzLmltYWdlc19kYXRhaW1nX2ZpbHRlcnx8cy5pbWFnZXNfZGF0YWltZ19maWx0ZXIodSkpe3ZhciBnPWUuZWRpdG9yVXBsb2FkLmJsb2JDYWNoZSx2PXZvaWQgMCxoPWcuZ2V0QnlEYXRhKGMsZik7aD92PWg6KHY9Zy5jcmVhdGUoZCx0LmJsb2IsYyxtKSxnLmFkZCh2KSksaWUoZSwnPGltZyBzcmM9Iicrdi5ibG9iVXJpKCkrJyI+JywhMSl9ZWxzZSBpZShlLCc8aW1nIHNyYz0iJyt0LnVyaSsnIj4nLCExKX0sZmU9ZnVuY3Rpb24odCxlLG4pe3ZhciByLGksbyxhLHM9InBhc3RlIj09PWUudHlwZT9lLmNsaXBib2FyZERhdGE6ZS5kYXRhVHJhbnNmZXI7aWYodC5zZXR0aW5ncy5wYXN0ZV9kYXRhX2ltYWdlcyYmcyl7dmFyIHU9KG89KGk9cykuaXRlbXM/aCh4KGkuaXRlbXMpLGZ1bmN0aW9uKGUpe3JldHVybiBlLmdldEFzRmlsZSgpfSk6W10sYT1pLmZpbGVzP3goaS5maWxlcyk6W10sZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49W10scj0wLGk9ZS5sZW5ndGg7cjxpO3IrKyl7dmFyIG89ZVtyXTt0KG8scikmJm4ucHVzaChvKX1yZXR1cm4gbn0oMDxvLmxlbmd0aD9vOmEsZnVuY3Rpb24oZSl7cmV0dXJuL15pbWFnZVwvKGpwZWd8cG5nfGdpZnxibXApJC8udGVzdChlLnR5cGUpfSkpO2lmKDA8dS5sZW5ndGgpcmV0dXJuIGUucHJldmVudERlZmF1bHQoKSxyPXUsXy5hbGwoaChyLGZ1bmN0aW9uKHIpe3JldHVybiBuZXcgXyhmdW5jdGlvbihlKXt2YXIgdD1yLmdldEFzRmlsZT9yLmdldEFzRmlsZSgpOnIsbj1uZXcgd2luZG93LkZpbGVSZWFkZXI7bi5vbmxvYWQ9ZnVuY3Rpb24oKXtlKHtibG9iOnQsdXJpOm4ucmVzdWx0fSl9LG4ucmVhZEFzRGF0YVVSTCh0KX0pfSkpLnRoZW4oZnVuY3Rpb24oZSl7biYmdC5zZWxlY3Rpb24uc2V0Um5nKG4pLGIoZSxmdW5jdGlvbihlKXtjZSh0LGUpfSl9KSwhMH1yZXR1cm4hMX0sZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIEMubWV0YUtleVByZXNzZWQoZSkmJjg2PT09ZS5rZXlDb2RlfHxlLnNoaWZ0S2V5JiY0NT09PWUua2V5Q29kZX0sbWU9ZnVuY3Rpb24odSxsLGMpe3ZhciB0LGYsZD0odD1wKGcubm9uZSgpKSx7Y2xlYXI6ZnVuY3Rpb24oKXt0LnNldChnLm5vbmUoKSl9LHNldDpmdW5jdGlvbihlKXt0LnNldChnLnNvbWUoZSkpfSxpc1NldDpmdW5jdGlvbigpe3JldHVybiB0LmdldCgpLmlzU29tZSgpfSxvbjpmdW5jdGlvbihlKXt0LmdldCgpLmVhY2goZSl9fSk7ZnVuY3Rpb24gbShlLHQsbixyKXt2YXIgaSxvLGE7c2UoZSwidGV4dC9odG1sIik/aT1lWyJ0ZXh0L2h0bWwiXTooaT1sLmdldEh0bWwoKSxyPXJ8fFMoaSksbC5pc0RlZmF1bHRDb250ZW50KGkpJiYobj0hMCkpLGk9aihpKSxsLnJlbW92ZSgpLG89ITE9PT1yJiYhLzwoPzpcLz8oPyEoPzpkaXZ8cHxicnxzcGFuKT4pXHcrfCg/Oig/ISg/OnNwYW4gc3R5bGU9IndoaXRlLXNwYWNlOlxzP3ByZTs/Ij4pfGJyXHM/XC8+KSlcdytcc1tePl0rKT4vaS50ZXN0KGkpLGE9RyhpKSxpLmxlbmd0aCYmKCFvfHxhKXx8KG49ITApLChufHxhKSYmKGk9c2UoZSwidGV4dC9wbGFpbiIpJiZvP2VbInRleHQvcGxhaW4iXTpIKGkpKSxsLmlzRGVmYXVsdENvbnRlbnQoaSk/dHx8dS53aW5kb3dNYW5hZ2VyLmFsZXJ0KCJQbGVhc2UgdXNlIEN0cmwrVi9DbWQrViBrZXlib2FyZCBzaG9ydGN1dHMgdG8gcGFzdGUgY29udGVudHMuIik6bj9vZSh1LGkpOmllKHUsaSxyKX11Lm9uKCJrZXlkb3duIixmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe2RlKGUpJiYhZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmbC5yZW1vdmUoKX1pZihkZShlKSYmIWUuaXNEZWZhdWx0UHJldmVudGVkKCkpe2lmKChmPWUuc2hpZnRLZXkmJjg2PT09ZS5rZXlDb2RlKSYmdy53ZWJraXQmJi0xIT09eS5uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIlZlcnNpb24vIikpcmV0dXJuO2lmKGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksZC5zZXQoZSksd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtkLmNsZWFyKCl9LDEwMCksdy5pZSYmZilyZXR1cm4gZS5wcmV2ZW50RGVmYXVsdCgpLG49ITAsdm9pZCB1LmZpcmUoInBhc3RlIix7aWVGYWtlOm59KTtsLnJlbW92ZSgpLGwuY3JlYXRlKCksdS5vbmNlKCJrZXl1cCIsdCksdS5vbmNlKCJwYXN0ZSIsZnVuY3Rpb24oKXt1Lm9mZigia2V5dXAiLHQpfSl9dmFyIG59KTt1Lm9uKCJwYXN0ZSIsZnVuY3Rpb24oZSl7dmFyIHQsbixyLGk9ZC5pc1NldCgpLG89KHQ9dSxuPWFlKGUuY2xpcGJvYXJkRGF0YXx8dC5nZXREb2MoKS5kYXRhVHJhbnNmZXIpLEwoKT9ULmV4dGVuZChuLHsidGV4dC9odG1sIjoiIn0pOm4pLGE9InRleHQiPT09Yy5nZXQoKXx8ZixzPXNlKG8sRCk7KGY9ITEsZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8KHI9ZS5jbGlwYm9hcmREYXRhLC0xIT09eS5uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIkFuZHJvaWQiKSYmciYmci5pdGVtcyYmMD09PXIuaXRlbXMubGVuZ3RoKSk/bC5yZW1vdmUoKTp1ZShvKXx8IWZlKHUsZSxsLmdldExhc3RSbmcoKXx8dS5zZWxlY3Rpb24uZ2V0Um5nKCkpPyhpfHxlLnByZXZlbnREZWZhdWx0KCksIXcuaWV8fGkmJiFlLmllRmFrZXx8c2UobywidGV4dC9odG1sIil8fChsLmNyZWF0ZSgpLHUuZG9tLmJpbmQobC5nZXRFbCgpLCJwYXN0ZSIsZnVuY3Rpb24oZSl7ZS5zdG9wUHJvcGFnYXRpb24oKX0pLHUuZ2V0RG9jKCkuZXhlY0NvbW1hbmQoIlBhc3RlIiwhMSxudWxsKSxvWyJ0ZXh0L2h0bWwiXT1sLmdldEh0bWwoKSksc2UobywidGV4dC9odG1sIik/KGUucHJldmVudERlZmF1bHQoKSxzPXN8fFMob1sidGV4dC9odG1sIl0pLG0obyxpLGEscykpOlAuc2V0RWRpdG9yVGltZW91dCh1LGZ1bmN0aW9uKCl7bShvLGksYSxzKX0sMCkpOmwucmVtb3ZlKCl9KX0scGU9ZnVuY3Rpb24oYSxlLHQpe3ZhciBzO21lKGEsZSx0KSxhLnBhcnNlci5hZGROb2RlRmlsdGVyKCJpbWciLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpPWZ1bmN0aW9uKGUpe2UuYXR0cigiZGF0YS1tY2Utb2JqZWN0Iil8fHM9PT13LnRyYW5zcGFyZW50U3JjfHxlLnJlbW92ZSgpfTtpZighYS5zZXR0aW5ncy5wYXN0ZV9kYXRhX2ltYWdlcyYmKChyPW4pLmRhdGEmJiEwPT09ci5kYXRhLnBhc3RlKSlmb3IodmFyIG89ZS5sZW5ndGg7by0tOykocz1lW29dLmF0dHIoInNyYyIpKSYmKDAhPT1zLmluZGV4T2YoIndlYmtpdC1mYWtlLXVybCIpJiYoYS5zZXR0aW5ncy5hbGxvd19odG1sX2RhdGFfdXJsc3x8MCE9PXMuaW5kZXhPZigiZGF0YToiKSl8fGkoZVtvXSkpfSl9LGdlPWZ1bmN0aW9uKGUpe3JldHVybiB3LmllJiZlLmlubGluZT95LmRvY3VtZW50LmJvZHk6ZS5nZXRCb2R5KCl9LHZlPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcjtnZShyPXQpIT09ci5nZXRCb2R5KCkmJnQuZG9tLmJpbmQoZSwicGFzdGUga2V5dXAiLGZ1bmN0aW9uKGUpe2JlKHQsbil8fHQuZmlyZSgicGFzdGUiKX0pfSxoZT1mdW5jdGlvbihlKXtyZXR1cm4gZS5kb20uZ2V0KCJtY2VwYXN0ZWJpbiIpfSx5ZT1mdW5jdGlvbihlLHQpe3JldHVybiB0PT09ZX0sYmU9ZnVuY3Rpb24oZSx0KXt2YXIgbixyPWhlKGUpO3JldHVybihuPXIpJiYibWNlcGFzdGViaW4iPT09bi5pZCYmeWUodCxyLmlubmVySFRNTCl9LHhlPWZ1bmN0aW9uKGEpe3ZhciBzPXAobnVsbCksdT0iJU1DRVBBU1RFQklOJSI7cmV0dXJue2NyZWF0ZTpmdW5jdGlvbigpe3JldHVybiB0PXMsbj11LGk9KGU9YSkuZG9tLG89ZS5nZXRCb2R5KCksdC5zZXQoZS5zZWxlY3Rpb24uZ2V0Um5nKCkpLHI9ZS5kb20uYWRkKGdlKGUpLCJkaXYiLHtpZDoibWNlcGFzdGViaW4iLCJjbGFzcyI6Im1jZS1wYXN0ZWJpbiIsY29udGVudEVkaXRhYmxlOiEwLCJkYXRhLW1jZS1ib2d1cyI6ImFsbCIsc3R5bGU6InBvc2l0aW9uOiBmaXhlZDsgdG9wOiA1MCU7IHdpZHRoOiAxMHB4OyBoZWlnaHQ6IDEwcHg7IG92ZXJmbG93OiBoaWRkZW47IG9wYWNpdHk6IDAifSxuKSwody5pZXx8dy5nZWNrbykmJmkuc2V0U3R5bGUociwibGVmdCIsInJ0bCI9PT1pLmdldFN0eWxlKG8sImRpcmVjdGlvbiIsITApPzY1NTM1Oi02NTUzNSksaS5iaW5kKHIsImJlZm9yZWRlYWN0aXZhdGUgZm9jdXNpbiBmb2N1c291dCIsZnVuY3Rpb24oZSl7ZS5zdG9wUHJvcGFnYXRpb24oKX0pLHZlKGUscixuKSxyLmZvY3VzKCksdm9pZCBlLnNlbGVjdGlvbi5zZWxlY3QociwhMCk7dmFyIGUsdCxuLHIsaSxvfSxyZW1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZihoZShlKSl7Zm9yKHZhciBuPXZvaWQgMCxyPXQuZ2V0KCk7bj1lLmRvbS5nZXQoIm1jZXBhc3RlYmluIik7KWUuZG9tLnJlbW92ZShuKSxlLmRvbS51bmJpbmQobik7ciYmZS5zZWxlY3Rpb24uc2V0Um5nKHIpfXQuc2V0KG51bGwpfShhLHMpfSxnZXRFbDpmdW5jdGlvbigpe3JldHVybiBoZShhKX0sZ2V0SHRtbDpmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihuKXt2YXIgdCxlLHIsaSxvLGE9ZnVuY3Rpb24oZSx0KXtlLmFwcGVuZENoaWxkKHQpLG4uZG9tLnJlbW92ZSh0LCEwKX07Zm9yKGU9VC5ncmVwKGdlKG4pLmNoaWxkTm9kZXMsZnVuY3Rpb24oZSl7cmV0dXJuIm1jZXBhc3RlYmluIj09PWUuaWR9KSx0PWUuc2hpZnQoKSxULmVhY2goZSxmdW5jdGlvbihlKXthKHQsZSl9KSxyPShpPW4uZG9tLnNlbGVjdCgiZGl2W2lkPW1jZXBhc3RlYmluXSIsdCkpLmxlbmd0aC0xOzA8PXI7ci0tKW89bi5kb20uY3JlYXRlKCJkaXYiKSx0Lmluc2VydEJlZm9yZShvLGlbcl0pLGEobyxpW3JdKTtyZXR1cm4gdD90LmlubmVySFRNTDoiIn0oYSl9LGdldExhc3RSbmc6ZnVuY3Rpb24oKXtyZXR1cm4gcy5nZXQoKX0saXNEZWZhdWx0OmZ1bmN0aW9uKCl7cmV0dXJuIGJlKGEsdSl9LGlzRGVmYXVsdENvbnRlbnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT11fX19LHdlPWZ1bmN0aW9uKGUsdCxuKXtpZihyPWUsITEhPT13LmlPU3x8cj09PXVuZGVmaW5lZHx8ImZ1bmN0aW9uIiE9dHlwZW9mIHIuc2V0RGF0YXx8ITA9PT1MKCkpcmV0dXJuITE7dHJ5e3JldHVybiBlLmNsZWFyRGF0YSgpLGUuc2V0RGF0YSgidGV4dC9odG1sIix0KSxlLnNldERhdGEoInRleHQvcGxhaW4iLG4pLGUuc2V0RGF0YShELHQpLCEwfWNhdGNoKGkpe3JldHVybiExfXZhciByfSxQZT1mdW5jdGlvbihlLHQsbixyKXt3ZShlLmNsaXBib2FyZERhdGEsdC5odG1sLHQudGV4dCk/KGUucHJldmVudERlZmF1bHQoKSxyKCkpOm4odC5odG1sLHIpfSxfZT1mdW5jdGlvbihzKXtyZXR1cm4gZnVuY3Rpb24oZSx0KXt2YXIgbj1rK2Uscj1zLmRvbS5jcmVhdGUoImRpdiIse2NvbnRlbnRlZGl0YWJsZToiZmFsc2UiLCJkYXRhLW1jZS1ib2d1cyI6ImFsbCJ9KSxpPXMuZG9tLmNyZWF0ZSgiZGl2Iix7Y29udGVudGVkaXRhYmxlOiJ0cnVlIn0sbik7cy5kb20uc2V0U3R5bGVzKHIse3Bvc2l0aW9uOiJmaXhlZCIsdG9wOiIwIixsZWZ0OiItMzAwMHB4Iix3aWR0aDoiMTAwMHB4IixvdmVyZmxvdzoiaGlkZGVuIn0pLHIuYXBwZW5kQ2hpbGQoaSkscy5kb20uYWRkKHMuZ2V0Qm9keSgpLHIpO3ZhciBvPXMuc2VsZWN0aW9uLmdldFJuZygpO2kuZm9jdXMoKTt2YXIgYT1zLmRvbS5jcmVhdGVSbmcoKTthLnNlbGVjdE5vZGVDb250ZW50cyhpKSxzLnNlbGVjdGlvbi5zZXRSbmcoYSksUC5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cy5zZWxlY3Rpb24uc2V0Um5nKG8pLHIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChyKSx0KCl9LDApfX0sVGU9ZnVuY3Rpb24oZSl7cmV0dXJue2h0bWw6ZS5zZWxlY3Rpb24uZ2V0Q29udGVudCh7Y29udGV4dHVhbDohMH0pLHRleHQ6ZS5zZWxlY3Rpb24uZ2V0Q29udGVudCh7Zm9ybWF0OiJ0ZXh0In0pfX0sQ2U9ZnVuY3Rpb24oZSl7cmV0dXJuIWUuc2VsZWN0aW9uLmlzQ29sbGFwc2VkKCl8fCEhKHQ9ZSkuZG9tLmdldFBhcmVudCh0LnNlbGVjdGlvbi5nZXRTdGFydCgpLCJ0ZFtkYXRhLW1jZS1zZWxlY3RlZF0sdGhbZGF0YS1tY2Utc2VsZWN0ZWRdIix0LmdldEJvZHkoKSk7dmFyIHR9LERlPWZ1bmN0aW9uKGUpe3ZhciB0LG47ZS5vbigiY3V0IiwodD1lLGZ1bmN0aW9uKGUpe0NlKHQpJiZQZShlLFRlKHQpLF9lKHQpLGZ1bmN0aW9uKCl7aWYody5icm93c2VyLmlzQ2hyb21lKCkpe3ZhciBlPXQuc2VsZWN0aW9uLmdldFJuZygpO1Auc2V0RWRpdG9yVGltZW91dCh0LGZ1bmN0aW9uKCl7dC5zZWxlY3Rpb24uc2V0Um5nKGUpLHQuZXhlY0NvbW1hbmQoIkRlbGV0ZSIpfSwwKX1lbHNlIHQuZXhlY0NvbW1hbmQoIkRlbGV0ZSIpfSl9KSksZS5vbigiY29weSIsKG49ZSxmdW5jdGlvbihlKXtDZShuKSYmUGUoZSxUZShuKSxfZShuKSxmdW5jdGlvbigpe30pfSkpfSxrZT10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS5kb20uUmFuZ2VVdGlscyIpLFNlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGtlLmdldENhcmV0UmFuZ2VGcm9tUG9pbnQodC5jbGllbnRYLHQuY2xpZW50WSxlLmdldERvYygpKX0sT2U9ZnVuY3Rpb24oZSx0KXtlLmZvY3VzKCksZS5zZWxlY3Rpb24uc2V0Um5nKHQpfSxSZT1mdW5jdGlvbihhLHMsdSl7YS5nZXRQYXJhbSgicGFzdGVfYmxvY2tfZHJvcCIsITEpJiZhLm9uKCJkcmFnZW5kIGRyYWdvdmVyIGRyYWdnZXN0dXJlIGRyYWdkcm9wIGRyb3AgZHJhZyIsZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCl9KSxNKGEpfHxhLm9uKCJkcm9wIixmdW5jdGlvbihlKXt2YXIgdD1lLmRhdGFUcmFuc2Zlcjt0JiZ0LmZpbGVzJiYwPHQuZmlsZXMubGVuZ3RoJiZlLnByZXZlbnREZWZhdWx0KCl9KSxhLm9uKCJkcm9wIixmdW5jdGlvbihlKXt2YXIgdCxuO2lmKG49U2UoYSxlKSwhZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmIXUuZ2V0KCkpe3Q9cy5nZXREYXRhVHJhbnNmZXJJdGVtcyhlLmRhdGFUcmFuc2Zlcik7dmFyIHIsaT1zLmhhc0NvbnRlbnRUeXBlKHQsRCk7aWYocy5oYXNIdG1sT3JUZXh0KHQpJiYoIShyPXRbInRleHQvcGxhaW4iXSl8fDAhPT1yLmluZGV4T2YoImZpbGU6Ly8iKSl8fCFzLnBhc3RlSW1hZ2VEYXRhKGUsbikpaWYobiYmYS5nZXRQYXJhbSgicGFzdGVfZmlsdGVyX2Ryb3AiLCEwKSl7dmFyIG89dFsibWNlLWludGVybmFsIl18fHRbInRleHQvaHRtbCJdfHx0WyJ0ZXh0L3BsYWluIl07byYmKGUucHJldmVudERlZmF1bHQoKSxQLnNldEVkaXRvclRpbWVvdXQoYSxmdW5jdGlvbigpe2EudW5kb01hbmFnZXIudHJhbnNhY3QoZnVuY3Rpb24oKXt0WyJtY2UtaW50ZXJuYWwiXSYmYS5leGVjQ29tbWFuZCgiRGVsZXRlIiksT2UoYSxuKSxvPWoobyksdFsidGV4dC9odG1sIl0/cy5wYXN0ZUh0bWwobyxpKTpzLnBhc3RlVGV4dChvKX0pfSkpfX19KSxhLm9uKCJkcmFnc3RhcnQiLGZ1bmN0aW9uKGUpe3Uuc2V0KCEwKX0pLGEub24oImRyYWdvdmVyIGRyYWdlbmQiLGZ1bmN0aW9uKGUpe00oYSkmJiExPT09dS5nZXQoKSYmKGUucHJldmVudERlZmF1bHQoKSxPZShhLFNlKGEsZSkpKSwiZHJhZ2VuZCI9PT1lLnR5cGUmJnUuc2V0KCExKX0pfTtmdW5jdGlvbiBBZSh0LG4pe3Qub24oIlBhc3RlUHJlUHJvY2VzcyIsZnVuY3Rpb24oZSl7ZS5jb250ZW50PW4odCxlLmNvbnRlbnQsZS5pbnRlcm5hbCxlLndvcmRDb250ZW50KX0pfWZ1bmN0aW9uIEllKGUsdCl7aWYoIXoodCkpcmV0dXJuIHQ7dmFyIG49W107cmV0dXJuIFQuZWFjaChlLnNjaGVtYS5nZXRCbG9ja0VsZW1lbnRzKCksZnVuY3Rpb24oZSx0KXtuLnB1c2godCl9KSx0PSQodCxbW25ldyBSZWdFeHAoIig/Ojxicj4mbmJzcDtbXFxzXFxyXFxuXSt8PGJyPikqKDxcXC8/KCIrbi5qb2luKCJ8IikrIilbXj5dKj4pKD86PGJyPiZuYnNwO1tcXHNcXHJcXG5dK3w8YnI+KSoiLCJnIiksIiQxIl1dKSx0PSQodCxbWy88YnI+PGJyPi9nLCI8QlI+PEJSPiJdLFsvPGJyPi9nLCIgIl0sWy88QlI+PEJSPi9nLCI8YnI+Il1dKX1mdW5jdGlvbiBFZShlLHQsbixyKXtpZihyfHxuKXJldHVybiB0O3ZhciBsLGk9ZS5nZXRQYXJhbSgicGFzdGVfd2Via2l0X3N0eWxlcyIpO2lmKCExPT09ZS5nZXRQYXJhbSgicGFzdGVfcmVtb3ZlX3N0eWxlc19pZl93ZWJraXQiLCEwKXx8ImFsbCI9PT1pKXJldHVybiB0O2lmKGkmJihsPWkuc3BsaXQoL1ssIF0vKSksbCl7dmFyIGM9ZS5kb20sZj1lLnNlbGVjdGlvbi5nZXROb2RlKCk7dD10LnJlcGxhY2UoLyg8W14+XSspIHN0eWxlPSIoW14iXSopIihbXj5dKj4pL2dpLGZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPWMucGFyc2VTdHlsZShjLmRlY29kZShuKSksbz17fTtpZigibm9uZSI9PT1sKXJldHVybiB0K3I7Zm9yKHZhciBhPTA7YTxsLmxlbmd0aDthKyspe3ZhciBzPWlbbFthXV0sdT1jLmdldFN0eWxlKGYsbFthXSwhMCk7L2NvbG9yLy50ZXN0KGxbYV0pJiYocz1jLnRvSGV4KHMpLHU9Yy50b0hleCh1KSksdSE9PXMmJihvW2xbYV1dPXMpfXJldHVybihvPWMuc2VyaWFsaXplU3R5bGUobywic3BhbiIpKT90Kycgc3R5bGU9IicrbysnIicrcjp0K3J9KX1lbHNlIHQ9dC5yZXBsYWNlKC8oPFtePl0rKSBzdHlsZT0iKFteIl0qKSIoW14+XSo+KS9naSwiJDEkMyIpO3JldHVybiB0PXQucmVwbGFjZSgvKDxbXj5dKykgZGF0YS1tY2Utc3R5bGU9IihbXiJdKykiKFtePl0qPikvZ2ksZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIHQrJyBzdHlsZT0iJytuKyciJytyfSl9ZnVuY3Rpb24gRmUobixlKXtuLiQoImEiLGUpLmZpbmQoImZvbnQsdSIpLmVhY2goZnVuY3Rpb24oZSx0KXtuLmRvbS5yZW1vdmUodCwhMCl9KX12YXIgTWU9ZnVuY3Rpb24oZSl7dy53ZWJraXQmJkFlKGUsRWUpLHcuaWUmJihBZShlLEllKSxmdW5jdGlvbiByKHQsbil7dC5vbigiUGFzdGVQb3N0UHJvY2VzcyIsZnVuY3Rpb24oZSl7bih0LGUubm9kZSl9KX0oZSxGZSkpfSxOZT1mdW5jdGlvbihuLHIpe3JldHVybiBmdW5jdGlvbih0KXt0LnNldEFjdGl2ZSgidGV4dCI9PT1yLnBhc3RlRm9ybWF0LmdldCgpKTt2YXIgZT1mdW5jdGlvbihlKXtyZXR1cm4gdC5zZXRBY3RpdmUoZS5zdGF0ZSl9O3JldHVybiBuLm9uKCJQYXN0ZVBsYWluVGV4dFRvZ2dsZSIsZSksZnVuY3Rpb24oKXtyZXR1cm4gbi5vZmYoIlBhc3RlUGxhaW5UZXh0VG9nZ2xlIixlKX19fTshZnVuY3Rpb24gJGUoKXtjLmFkZCgicGFzdGUiLGZ1bmN0aW9uKGUpe2lmKCExPT0hKCEvKF58WyAsXSlwb3dlcnBhc3RlKFssIF18JCkvLnRlc3QoZS5zZXR0aW5ncy5wbHVnaW5zKXx8IWMuZ2V0KCJwb3dlcnBhc3RlIil8fCgidW5kZWZpbmVkIiE9dHlwZW9mIHkud2luZG93LmNvbnNvbGUmJnkud2luZG93LmNvbnNvbGUubG9nJiZ5LndpbmRvdy5jb25zb2xlLmxvZygiUG93ZXJQYXN0ZSBpcyBpbmNvbXBhdGlibGUgd2l0aCBQYXN0ZSBwbHVnaW4hIFJlbW92ZSAncGFzdGUnIGZyb20gdGhlICdwbHVnaW5zJyBvcHRpb24uIiksMCkpKXt2YXIgdD1wKCExKSxuPXAoZS5nZXRQYXJhbSgicGFzdGVfYXNfdGV4dCIsITEpPyJ0ZXh0IjoiaHRtbCIpLHI9KHU9bixsPXhlKHM9ZSkscy5vbigiUHJlSW5pdCIsZnVuY3Rpb24oKXtyZXR1cm4gcGUocyxsLHUpfSkse3Bhc3RlRm9ybWF0OnUscGFzdGVIdG1sOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGllKHMsZSx0KX0scGFzdGVUZXh0OmZ1bmN0aW9uKGUpe3JldHVybiBvZShzLGUpfSxwYXN0ZUltYWdlRGF0YTpmdW5jdGlvbihlLHQpe3JldHVybiBmZShzLGUsdCl9LGdldERhdGFUcmFuc2Zlckl0ZW1zOmFlLGhhc0h0bWxPclRleHQ6dWUsaGFzQ29udGVudFR5cGU6c2V9KSxpPU1lKGUpO3JldHVybiBhPXIsKG89ZSkudWkucmVnaXN0cnkuYWRkVG9nZ2xlQnV0dG9uKCJwYXN0ZXRleHQiLHthY3RpdmU6ITEsaWNvbjoicGFzdGUtdGV4dCIsdG9vbHRpcDoiUGFzdGUgYXMgdGV4dCIsb25BY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gby5leGVjQ29tbWFuZCgibWNlVG9nZ2xlUGxhaW5UZXh0UGFzdGUiKX0sb25TZXR1cDpOZShvLGEpfSksby51aS5yZWdpc3RyeS5hZGRUb2dnbGVNZW51SXRlbSgicGFzdGV0ZXh0Iix7dGV4dDoiUGFzdGUgYXMgdGV4dCIsaWNvbjoicGFzdGUtdGV4dCIsb25BY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gby5leGVjQ29tbWFuZCgibWNlVG9nZ2xlUGxhaW5UZXh0UGFzdGUiKX0sb25TZXR1cDpOZShvLGEpfSksZihlLHIpLGZ1bmN0aW9uKGUpe3ZhciB0PWUucGx1Z2lucy5wYXN0ZSxuPWUuZ2V0UGFyYW0oInBhc3RlX3ByZXByb2Nlc3MiKTtuJiZlLm9uKCJQYXN0ZVByZVByb2Nlc3MiLGZ1bmN0aW9uKGUpe24uY2FsbCh0LHQsZSl9KTt2YXIgcj1lLmdldFBhcmFtKCJwYXN0ZV9wb3N0cHJvY2VzcyIpO3ImJmUub24oIlBhc3RlUG9zdFByb2Nlc3MiLGZ1bmN0aW9uKGUpe3IuY2FsbCh0LHQsZSl9KX0oZSksRGUoZSksUmUoZSxyLHQpLHtjbGlwYm9hcmQ6cixxdWlya3M6aX19dmFyIG8sYSxzLHUsbH0pfSgpfSh3aW5kb3cpOw==]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/preview/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/preview/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIGU9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuUGx1Z2luTWFuYWdlciIpLGw9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UudXRpbC5Ub29scyIpLG09dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuRW52IiksaT1mdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbih0KXt2YXIgbj0iIixpPXQuZG9tLmVuY29kZSxlPXQuZ2V0UGFyYW0oImNvbnRlbnRfc3R5bGUiLCIiKTtuKz0nPGJhc2UgaHJlZj0iJytpKHQuZG9jdW1lbnRCYXNlVVJJLmdldFVSSSgpKSsnIj4nLGUmJihuKz0nPHN0eWxlIHR5cGU9InRleHQvY3NzIj4nK2UrIjwvc3R5bGU+Iik7dmFyIG89dC5nZXRQYXJhbSgiY29udGVudF9jc3NfY29ycyIsITEsImJvb2xlYW4iKT8nIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiJzoiIjtsLmVhY2godC5jb250ZW50Q1NTLGZ1bmN0aW9uKGUpe24rPSc8bGluayB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSInK2kodC5kb2N1bWVudEJhc2VVUkkudG9BYnNvbHV0ZShlKSkrJyInK28rIj4ifSk7dmFyIHI9dC5zZXR0aW5ncy5ib2R5X2lkfHwidGlueW1jZSI7LTEhPT1yLmluZGV4T2YoIj0iKSYmKHI9KHI9dC5nZXRQYXJhbSgiYm9keV9pZCIsIiIsImhhc2giKSlbdC5pZF18fHIpO3ZhciBhPXQuc2V0dGluZ3MuYm9keV9jbGFzc3x8IiI7LTEhPT1hLmluZGV4T2YoIj0iKSYmKGE9KGE9dC5nZXRQYXJhbSgiYm9keV9jbGFzcyIsIiIsImhhc2giKSlbdC5pZF18fCIiKTt2YXIgYz0nPHNjcmlwdD5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyICYmIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oZSkge2ZvciAodmFyIGVsbSA9IGUudGFyZ2V0OyBlbG07IGVsbSA9IGVsbS5wYXJlbnROb2RlKSB7aWYgKGVsbS5ub2RlTmFtZSA9PT0gIkEiICYmICEoJysobS5tYWM/ImUubWV0YUtleSI6ImUuY3RybEtleSAmJiAhZS5hbHRLZXkiKSsiKSkge2UucHJldmVudERlZmF1bHQoKTt9fX0sIGZhbHNlKTs8XC9zY3JpcHQ+ICIscz10LmdldEJvZHkoKS5kaXIsZD1zPycgZGlyPSInK2kocykrJyInOiIiO3JldHVybiI8IURPQ1RZUEUgaHRtbD48aHRtbD48aGVhZD4iK24rJzwvaGVhZD48Ym9keSBpZD0iJytpKHIpKyciIGNsYXNzPSJtY2UtY29udGVudC1ib2R5ICcraShhKSsnIicrZCsiPiIrdC5nZXRDb250ZW50KCkrYysiPC9ib2R5PjwvaHRtbD4ifShlKTtlLndpbmRvd01hbmFnZXIub3Blbih7dGl0bGU6IlByZXZpZXciLHNpemU6ImxhcmdlIixib2R5Ont0eXBlOiJwYW5lbCIsaXRlbXM6W3tuYW1lOiJwcmV2aWV3Iix0eXBlOiJpZnJhbWUiLHNhbmRib3hlZDohMH1dfSxidXR0b25zOlt7dHlwZToiY2FuY2VsIixuYW1lOiJjbG9zZSIsdGV4dDoiQ2xvc2UiLHByaW1hcnk6ITB9XSxpbml0aWFsRGF0YTp7cHJldmlldzp0fX0pLmZvY3VzKCJjbG9zZSIpfTshZnVuY3Rpb24gdCgpe2UuYWRkKCJwcmV2aWV3IixmdW5jdGlvbihlKXt2YXIgdCxuOyh0PWUpLmFkZENvbW1hbmQoIm1jZVByZXZpZXciLGZ1bmN0aW9uKCl7aSh0KX0pLChuPWUpLnVpLnJlZ2lzdHJ5LmFkZEJ1dHRvbigicHJldmlldyIse2ljb246InByZXZpZXciLHRvb2x0aXA6IlByZXZpZXciLG9uQWN0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIG4uZXhlY0NvbW1hbmQoIm1jZVByZXZpZXciKX19KSxuLnVpLnJlZ2lzdHJ5LmFkZE1lbnVJdGVtKCJwcmV2aWV3Iix7aWNvbjoicHJldmlldyIsdGV4dDoiUHJldmlldyIsb25BY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gbi5leGVjQ29tbWFuZCgibWNlUHJldmlldyIpfX0pfSl9KCl9KCk7]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/print/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/print/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIG49dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuUGx1Z2luTWFuYWdlciIpLGU9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuRW52Iik7IWZ1bmN0aW9uIHQoKXtuLmFkZCgicHJpbnQiLGZ1bmN0aW9uKG4pe3ZhciB0LGk7KHQ9bikuYWRkQ29tbWFuZCgibWNlUHJpbnQiLGZ1bmN0aW9uKCl7ZS5icm93c2VyLmlzSUUoKT90LmdldERvYygpLmV4ZWNDb21tYW5kKCJwcmludCIsITEsbnVsbCk6dC5nZXRXaW4oKS5wcmludCgpfSksKGk9bikudWkucmVnaXN0cnkuYWRkQnV0dG9uKCJwcmludCIse2ljb246InByaW50Iix0b29sdGlwOiJQcmludCIsb25BY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gaS5leGVjQ29tbWFuZCgibWNlUHJpbnQiKX19KSxpLnVpLnJlZ2lzdHJ5LmFkZE1lbnVJdGVtKCJwcmludCIse3RleHQ6IlByaW50Li4uIixpY29uOiJwcmludCIsb25BY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gaS5leGVjQ29tbWFuZCgibWNlUHJpbnQiKX19KSxuLmFkZFNob3J0Y3V0KCJNZXRhK1AiLCIiLCJtY2VQcmludCIpfSl9KCl9KCk7]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/quickbars/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/quickbars/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24oYyl7InVzZSBzdHJpY3QiO3ZhciBlLHQsbixyLG89dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuUGx1Z2luTWFuYWdlciIpLGE9MCxsPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixvLGksdTtvPShyPWUuZWRpdG9yVXBsb2FkLmJsb2JDYWNoZSkuY3JlYXRlKChpPSJtY2V1Iix1PShuZXcgRGF0ZSkuZ2V0VGltZSgpLGkrIl8iK01hdGguZmxvb3IoMWU5Kk1hdGgucmFuZG9tKCkpKyArK2ErU3RyaW5nKHUpKSxuLHQpLHIuYWRkKG8pLGUuaW5zZXJ0Q29udGVudChlLmRvbS5jcmVhdGVIVE1MKCJpbWciLHtzcmM6by5ibG9iVXJpKCl9KSl9LGY9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UudXRpbC5Qcm9taXNlIikscz10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS5FbnYiKSxkPXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLnV0aWwuRGVsYXkiKSxpPWZ1bmN0aW9uKHUpe3UudWkucmVnaXN0cnkuYWRkQnV0dG9uKCJxdWlja2ltYWdlIix7aWNvbjoiaW1hZ2UiLHRvb2x0aXA6Ikluc2VydCBpbWFnZSIsb25BY3Rpb246ZnVuY3Rpb24oKXt2YXIgaTtpPXUsbmV3IGYoZnVuY3Rpb24obil7dmFyIHI9Yy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO3IudHlwZT0iZmlsZSIsci5hY2NlcHQ9ImltYWdlLyoiLHIuc3R5bGUucG9zaXRpb249ImZpeGVkIixyLnN0eWxlLmxlZnQ9IjAiLHIuc3R5bGUudG9wPSIwIixyLnN0eWxlLm9wYWNpdHk9IjAuMDAxIixjLmRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQociksci5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLGZ1bmN0aW9uKGUpe24oQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZS50YXJnZXQuZmlsZXMpKX0pO3ZhciBvPWZ1bmN0aW9uKGUpe3ZhciB0PWZ1bmN0aW9uKCl7bihbXSksci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHIpfTtzLm9zLmlzQW5kcm9pZCgpJiYicmVtb3ZlIiE9PWUudHlwZT9kLnNldEVkaXRvclRpbWVvdXQoaSx0LDApOnQoKSxpLm9mZigiZm9jdXNpbiByZW1vdmUiLG8pfTtpLm9uKCJmb2N1c2luIHJlbW92ZSIsbyksci5jbGljaygpfSkudGhlbihmdW5jdGlvbihlKXtpZigwPGUubGVuZ3RoKXt2YXIgdD1lWzBdO249dCxuZXcgZihmdW5jdGlvbihlKXt2YXIgdD1uZXcgYy5GaWxlUmVhZGVyO3Qub25sb2FkZW5kPWZ1bmN0aW9uKCl7ZSh0LnJlc3VsdC5zcGxpdCgiLCIpWzFdKX0sdC5yZWFkQXNEYXRhVVJMKG4pfSkudGhlbihmdW5jdGlvbihlKXtsKHUsZSx0KX0pfXZhciBufSl9fSksdS51aS5yZWdpc3RyeS5hZGRCdXR0b24oInF1aWNrdGFibGUiLHtpY29uOiJ0YWJsZSIsdG9vbHRpcDoiSW5zZXJ0IHRhYmxlIixvbkFjdGlvbjpmdW5jdGlvbigpe3ZhciBlLHQsbixyLG8saTtuPXQ9MiwoZT11KS5wbHVnaW5zLnRhYmxlP2UucGx1Z2lucy50YWJsZS5pbnNlcnRUYWJsZSh0LG4pOihvPXQsaT1uLChyPWUpLnVuZG9NYW5hZ2VyLnRyYW5zYWN0KGZ1bmN0aW9uKCl7dmFyIGUsdDtyLmluc2VydENvbnRlbnQoZnVuY3Rpb24oZSx0KXt2YXIgbixyLG87Zm9yKG89Jzx0YWJsZSBkYXRhLW1jZS1pZD0ibWNlIiBzdHlsZT0id2lkdGg6IDEwMCUiPicsbys9Ijx0Ym9keT4iLHI9MDtyPHQ7cisrKXtmb3Iobys9Ijx0cj4iLG49MDtuPGU7bisrKW8rPSI8dGQ+PGJyPjwvdGQ+IjtvKz0iPC90cj4ifXJldHVybiBvKz0iPC90Ym9keT4iLG8rPSI8L3RhYmxlPiJ9KG8saSkpLChlPXIuZG9tLnNlbGVjdCgiKltkYXRhLW1jZS1pZF0iKVswXSkucmVtb3ZlQXR0cmlidXRlKCJkYXRhLW1jZS1pZCIpLHQ9ci5kb20uc2VsZWN0KCJ0ZCx0aCIsZSksci5zZWxlY3Rpb24uc2V0Q3Vyc29yTG9jYXRpb24odFswXSwwKX0pKX19KX0sdT1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZX19LG09dSghMSksZz11KCEwKSxoPWZ1bmN0aW9uKCl7cmV0dXJuIHB9LHA9KGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuaXNOb25lKCl9LHtmb2xkOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUoKX0saXM6bSxpc1NvbWU6bSxpc05vbmU6ZyxnZXRPcjpuPWZ1bmN0aW9uKGUpe3JldHVybiBlfSxnZXRPclRodW5rOnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUoKX0sZ2V0T3JEaWU6ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKGV8fCJlcnJvcjogZ2V0T3JEaWUgY2FsbGVkIG9uIG5vbmUuIil9LGdldE9yTnVsbDp1KG51bGwpLGdldE9yVW5kZWZpbmVkOnUodW5kZWZpbmVkKSxvcjpuLG9yVGh1bms6dCxtYXA6aCxlYWNoOmZ1bmN0aW9uKCl7fSxiaW5kOmgsZXhpc3RzOm0sZm9yYWxsOmcsZmlsdGVyOmgsZXF1YWxzOmUsZXF1YWxzXzplLHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm5bXX0sdG9TdHJpbmc6dSgibm9uZSgpIil9KSxiPWZ1bmN0aW9uKG4pe3ZhciBlPXUobiksdD1mdW5jdGlvbigpe3JldHVybiBvfSxyPWZ1bmN0aW9uKGUpe3JldHVybiBlKG4pfSxvPXtmb2xkOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQobil9LGlzOmZ1bmN0aW9uKGUpe3JldHVybiBuPT09ZX0saXNTb21lOmcsaXNOb25lOm0sZ2V0T3I6ZSxnZXRPclRodW5rOmUsZ2V0T3JEaWU6ZSxnZXRPck51bGw6ZSxnZXRPclVuZGVmaW5lZDplLG9yOnQsb3JUaHVuazp0LG1hcDpmdW5jdGlvbihlKXtyZXR1cm4gYihlKG4pKX0sZWFjaDpmdW5jdGlvbihlKXtlKG4pfSxiaW5kOnIsZXhpc3RzOnIsZm9yYWxsOnIsZmlsdGVyOmZ1bmN0aW9uKGUpe3JldHVybiBlKG4pP286cH0sdG9BcnJheTpmdW5jdGlvbigpe3JldHVybltuXX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4ic29tZSgiK24rIikifSxlcXVhbHM6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuaXMobil9LGVxdWFsc186ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5mb2xkKG0sZnVuY3Rpb24oZSl7cmV0dXJuIHQobixlKX0pfX07cmV0dXJuIG99LHY9e3NvbWU6Yixub25lOmgsZnJvbTpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09PWV8fGU9PT11bmRlZmluZWQ/cDpiKGUpfX0seT1mdW5jdGlvbihlKXtpZihudWxsPT09ZXx8ZT09PXVuZGVmaW5lZCl0aHJvdyBuZXcgRXJyb3IoIk5vZGUgY2Fubm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7cmV0dXJue2RvbTp1KGUpfX0sdz17ZnJvbUh0bWw6ZnVuY3Rpb24oZSx0KXt2YXIgbj0odHx8Yy5kb2N1bWVudCkuY3JlYXRlRWxlbWVudCgiZGl2Iik7aWYobi5pbm5lckhUTUw9ZSwhbi5oYXNDaGlsZE5vZGVzKCl8fDE8bi5jaGlsZE5vZGVzLmxlbmd0aCl0aHJvdyBjLmNvbnNvbGUuZXJyb3IoIkhUTUwgZG9lcyBub3QgaGF2ZSBhIHNpbmdsZSByb290IG5vZGUiLGUpLG5ldyBFcnJvcigiSFRNTCBtdXN0IGhhdmUgYSBzaW5nbGUgcm9vdCBub2RlIik7cmV0dXJuIHkobi5jaGlsZE5vZGVzWzBdKX0sZnJvbVRhZzpmdW5jdGlvbihlLHQpe3ZhciBuPSh0fHxjLmRvY3VtZW50KS5jcmVhdGVFbGVtZW50KGUpO3JldHVybiB5KG4pfSxmcm9tVGV4dDpmdW5jdGlvbihlLHQpe3ZhciBuPSh0fHxjLmRvY3VtZW50KS5jcmVhdGVUZXh0Tm9kZShlKTtyZXR1cm4geShuKX0sZnJvbURvbTp5LGZyb21Qb2ludDpmdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5kb20oKTtyZXR1cm4gdi5mcm9tKHIuZWxlbWVudEZyb21Qb2ludCh0LG4pKS5tYXAoeSl9fSxrPSgidW5kZWZpbmVkIiE9dHlwZW9mIGMud2luZG93P2Mud2luZG93OkZ1bmN0aW9uKCJyZXR1cm4gdGhpczsiKSgpLGZ1bmN0aW9uKHIpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gbj10eXBlb2YodD1lKSwobnVsbD09PXQ/Im51bGwiOiJvYmplY3QiPT1uJiYoQXJyYXkucHJvdG90eXBlLmlzUHJvdG90eXBlT2YodCl8fHQuY29uc3RydWN0b3ImJiJBcnJheSI9PT10LmNvbnN0cnVjdG9yLm5hbWUpPyJhcnJheSI6Im9iamVjdCI9PW4mJihTdHJpbmcucHJvdG90eXBlLmlzUHJvdG90eXBlT2YodCl8fHQuY29uc3RydWN0b3ImJiJTdHJpbmciPT09dC5jb25zdHJ1Y3Rvci5uYW1lKT8ic3RyaW5nIjpuKT09PXI7dmFyIHQsbn19KSxUPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGU9PT10fX0sTj1rKCJzdHJpbmciKSxxPWsoIm9iamVjdCIpLEU9aygiYXJyYXkiKSxNPVQoImJvb2xlYW4iKSxTPShyPXVuZGVmaW5lZCxmdW5jdGlvbihlKXtyZXR1cm4gcj09PWV9KSxDPVQoImZ1bmN0aW9uIik7ZnVuY3Rpb24gTyhlLHQsbixyLG8pe3JldHVybiBlKG4scik/di5zb21lKG4pOkMobykmJm8obik/di5ub25lKCk6dChuLHIsbyl9dmFyIHgsQT1mdW5jdGlvbihlLHQpe3ZhciBuPWUuZG9tKCk7aWYoMSE9PW4ubm9kZVR5cGUpcmV0dXJuITE7dmFyIHI9bjtpZihyLm1hdGNoZXMhPT11bmRlZmluZWQpcmV0dXJuIHIubWF0Y2hlcyh0KTtpZihyLm1zTWF0Y2hlc1NlbGVjdG9yIT09dW5kZWZpbmVkKXJldHVybiByLm1zTWF0Y2hlc1NlbGVjdG9yKHQpO2lmKHIud2Via2l0TWF0Y2hlc1NlbGVjdG9yIT09dW5kZWZpbmVkKXJldHVybiByLndlYmtpdE1hdGNoZXNTZWxlY3Rvcih0KTtpZihyLm1vek1hdGNoZXNTZWxlY3RvciE9PXVuZGVmaW5lZClyZXR1cm4gci5tb3pNYXRjaGVzU2VsZWN0b3IodCk7dGhyb3cgbmV3IEVycm9yKCJCcm93c2VyIGxhY2tzIG5hdGl2ZSBzZWxlY3RvcnMiKX0sRD1mdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPWUuZG9tKCksbz1DKG4pP246dSghMSk7ci5wYXJlbnROb2RlOyl7cj1yLnBhcmVudE5vZGU7dmFyIGk9dy5mcm9tRG9tKHIpO2lmKHQoaSkpcmV0dXJuIHYuc29tZShpKTtpZihvKGkpKWJyZWFrfXJldHVybiB2Lm5vbmUoKX0sXz1mdW5jdGlvbihlLHQsbil7cmV0dXJuIEQoZSxmdW5jdGlvbihlKXtyZXR1cm4gQShlLHQpfSxuKX0sTD0oeD1OLGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZighdChlKSl0aHJvdyBuZXcgRXJyb3IoIkRlZmF1bHQgdmFsdWUgZG9lc24ndCBtYXRjaCByZXF1ZXN0ZWQgdHlwZS4iKX0obix4KSxmdW5jdGlvbihlLHQpe2lmKEUoZSl8fHEoZSkpdGhyb3cgbmV3IEVycm9yKCJleHBlY3RlZCBhIHN0cmluZyBidXQgZm91bmQ6ICIrZSk7cmV0dXJuIFMoZSk/dDpNKGUpPyExPT09ZT8iIjp0OmV9KGUuZ2V0UGFyYW0odCxuKSxuKX0pLFA9ZnVuY3Rpb24obyl7dmFyIGU9TChvLCJxdWlja2JhcnNfaW5zZXJ0X3Rvb2xiYXIiLCJxdWlja2ltYWdlIHF1aWNrdGFibGUiKTswPGUudHJpbSgpLmxlbmd0aCYmby51aS5yZWdpc3RyeS5hZGRDb250ZXh0VG9vbGJhcigicXVpY2tibG9jayIse3ByZWRpY2F0ZTpmdW5jdGlvbihlKXt2YXIgdD13LmZyb21Eb20oZSksbj1vLnNjaGVtYS5nZXRUZXh0QmxvY2tFbGVtZW50cygpLHI9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZG9tKCk9PT1vLmdldEJvZHkoKX07cmV0dXJuIE8oZnVuY3Rpb24oZSx0KXtyZXR1cm4gQShlLHQpfSxfLHQsInRhYmxlIixyKS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIE8oZnVuY3Rpb24oZSx0KXtyZXR1cm4gdChlKX0sRCx0LGZ1bmN0aW9uKGUpe3JldHVybiBlLmRvbSgpLm5vZGVOYW1lLnRvTG93ZXJDYXNlKClpbiBuJiZvLmRvbS5pc0VtcHR5KGUuZG9tKCkpfSxyKS5pc1NvbWUoKX0sZnVuY3Rpb24oKXtyZXR1cm4hMX0pfSxpdGVtczplLHBvc2l0aW9uOiJsaW5lIixzY29wZToiZWRpdG9yIn0pfSxVPWZ1bmN0aW9uKG4pe3ZhciByPWZ1bmN0aW9uKGUpe3JldHVybiJJTUciPT09ZS5ub2RlTmFtZXx8IkZJR1VSRSI9PT1lLm5vZGVOYW1lJiYvaW1hZ2UvaS50ZXN0KGUuY2xhc3NOYW1lKX0sZT1MKG4sInF1aWNrYmFyc19pbWFnZV90b29sYmFyIiwiYWxpZ25sZWZ0IGFsaWduY2VudGVyIGFsaWducmlnaHQiKTswPGUudHJpbSgpLmxlbmd0aCYmbi51aS5yZWdpc3RyeS5hZGRDb250ZXh0VG9vbGJhcigiaW1hZ2VzZWxlY3Rpb24iLHtwcmVkaWNhdGU6cixpdGVtczplLHBvc2l0aW9uOiJub2RlIn0pO3ZhciB0PUwobiwicXVpY2tiYXJzX3NlbGVjdGlvbl90b29sYmFyIiwiYm9sZCBpdGFsaWMgfCBxdWlja2xpbmsgaDIgaDMgYmxvY2txdW90ZSIpOzA8dC50cmltKCkubGVuZ3RoJiZuLnVpLnJlZ2lzdHJ5LmFkZENvbnRleHRUb29sYmFyKCJ0ZXh0c2VsZWN0aW9uIix7cHJlZGljYXRlOmZ1bmN0aW9uKGUpe3JldHVybiFyKGUpJiYhbi5zZWxlY3Rpb24uaXNDb2xsYXBzZWQoKSYmKHQ9ZSwiZmFsc2UiIT09bi5kb20uZ2V0Q29udGVudEVkaXRhYmxlUGFyZW50KHQpKTt2YXIgdH0saXRlbXM6dCxwb3NpdGlvbjoic2VsZWN0aW9uIixzY29wZToiZWRpdG9yIn0pfTshZnVuY3Rpb24gQigpe28uYWRkKCJxdWlja2JhcnMiLGZ1bmN0aW9uKGUpe2koZSksUChlKSxVKGUpfSl9KCl9KHdpbmRvdyk7]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/save/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/save/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIGU9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuUGx1Z2luTWFuYWdlciIpLG89dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuZG9tLkRPTVV0aWxzIiksYT10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS51dGlsLlRvb2xzIiksaT1mdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRQYXJhbSgic2F2ZV9lbmFibGV3aGVuZGlydHkiLCEwKX0sYz1mdW5jdGlvbihlLG4pe2Uubm90aWZpY2F0aW9uTWFuYWdlci5vcGVuKHt0ZXh0Om4sdHlwZToiZXJyb3IifSl9LHQ9ZnVuY3Rpb24odCl7dC5hZGRDb21tYW5kKCJtY2VTYXZlIixmdW5jdGlvbigpeyFmdW5jdGlvbihlKXt2YXIgbjtpZihuPW8uRE9NLmdldFBhcmVudChlLmlkLCJmb3JtIiksIWkoZSl8fGUuaXNEaXJ0eSgpKXtpZihlLnNhdmUoKSxlLmdldFBhcmFtKCJzYXZlX29uc2F2ZWNhbGxiYWNrIikpcmV0dXJuIGUuZXhlY0NhbGxiYWNrKCJzYXZlX29uc2F2ZWNhbGxiYWNrIixlKSxlLm5vZGVDaGFuZ2VkKCk7bj8oZS5zZXREaXJ0eSghMSksbi5vbnN1Ym1pdCYmIW4ub25zdWJtaXQoKXx8KCJmdW5jdGlvbiI9PXR5cGVvZiBuLnN1Ym1pdD9uLnN1Ym1pdCgpOmMoZSwiRXJyb3I6IEZvcm0gc3VibWl0IGZpZWxkIGNvbGxpc2lvbi4iKSksZS5ub2RlQ2hhbmdlZCgpKTpjKGUsIkVycm9yOiBObyBmb3JtIGVsZW1lbnQgZm91bmQuIil9fSh0KX0pLHQuYWRkQ29tbWFuZCgibWNlQ2FuY2VsIixmdW5jdGlvbigpe3ZhciBlLG47ZT10LG49YS50cmltKGUuc3RhcnRDb250ZW50KSxlLmdldFBhcmFtKCJzYXZlX29uY2FuY2VsY2FsbGJhY2siKT9lLmV4ZWNDYWxsYmFjaygic2F2ZV9vbmNhbmNlbGNhbGxiYWNrIixlKTplLnJlc2V0Q29udGVudChuKX0pfSxyPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgbj1mdW5jdGlvbigpe2Uuc2V0RGlzYWJsZWQoaSh0KSYmIXQuaXNEaXJ0eSgpKX07cmV0dXJuIHQub24oIk5vZGVDaGFuZ2UgZGlydHkiLG4pLGZ1bmN0aW9uKCl7cmV0dXJuIHQub2ZmKCJOb2RlQ2hhbmdlIGRpcnR5IixuKX19fTshZnVuY3Rpb24gbigpe2UuYWRkKCJzYXZlIixmdW5jdGlvbihlKXt2YXIgbjsobj1lKS51aS5yZWdpc3RyeS5hZGRCdXR0b24oInNhdmUiLHtpY29uOiJzYXZlIix0b29sdGlwOiJTYXZlIixkaXNhYmxlZDohMCxvbkFjdGlvbjpmdW5jdGlvbigpe3JldHVybiBuLmV4ZWNDb21tYW5kKCJtY2VTYXZlIil9LG9uU2V0dXA6cihuKX0pLG4udWkucmVnaXN0cnkuYWRkQnV0dG9uKCJjYW5jZWwiLHtpY29uOiJjYW5jZWwiLHRvb2x0aXA6IkNhbmNlbCIsZGlzYWJsZWQ6ITAsb25BY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gbi5leGVjQ29tbWFuZCgibWNlQ2FuY2VsIil9LG9uU2V0dXA6cihuKX0pLG4uYWRkU2hvcnRjdXQoIk1ldGErUyIsIiIsIm1jZVNhdmUiKSx0KGUpfSl9KCl9KCk7]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/searchreplace/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/searchreplace/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24oYyl7InVzZSBzdHJpY3QiO3ZhciBlLHQsbixyLGQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm57Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHR9LHNldDpmdW5jdGlvbihlKXt0PWV9fX0sbz10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS5QbHVnaW5NYW5hZ2VyIiksaD1mdW5jdGlvbigpe3JldHVybihoPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxuPTEscj1hcmd1bWVudHMubGVuZ3RoO248cjtuKyspZm9yKHZhciBvIGluIHQ9YXJndW1lbnRzW25dKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG8pJiYoZVtvXT10W29dKTtyZXR1cm4gZX0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0saT1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZX19LGE9aSghMSksbT1pKCEwKSx1PWkoIlshLSMlLSosLVxcLzo7P0BcXFstXFxdX3t9XHhhMVx4YWJceGI3XHhiYlx4YmY7XHhiN1x1MDU1YS1cdTA1NWZcdTA1ODlcdTA1OGFcdTA1YmVcdTA1YzBcdTA1YzNcdTA1YzZcdTA1ZjNcdTA1ZjRcdTA2MDlcdTA2MGFcdTA2MGNcdTA2MGRcdTA2MWJcdTA2MWVcdTA2MWZcdTA2NmEtXHUwNjZkXHUwNmQ0XHUwNzAwLVx1MDcwZFx1MDdmNy1cdTA3ZjlcdTA4MzAtXHUwODNlXHUwODVlXHUwOTY0XHUwOTY1XHUwOTcwXHUwZGY0XHUwZTRmXHUwZTVhXHUwZTViXHUwZjA0LVx1MGYxMlx1MGYzYS1cdTBmM2RcdTBmODVcdTBmZDAtXHUwZmQ0XHUwZmQ5XHUwZmRhXHUxMDRhLVx1MTA0Zlx1MTBmYlx1MTM2MS1cdTEzNjhcdTE0MDBcdTE2NmRcdTE2NmVcdTE2OWJcdTE2OWNcdTE2ZWItXHUxNmVkXHUxNzM1XHUxNzM2XHUxN2Q0LVx1MTdkNlx1MTdkOC1cdTE3ZGFcdTE4MDAtXHUxODBhXHUxOTQ0XHUxOTQ1XHUxYTFlXHUxYTFmXHUxYWEwLVx1MWFhNlx1MWFhOC1cdTFhYWRcdTFiNWEtXHUxYjYwXHUxYmZjLVx1MWJmZlx1MWMzYi1cdTFjM2ZcdTFjN2VcdTFjN2ZcdTFjZDNcdTIwMTAtXHUyMDI3XHUyMDMwLVx1MjA0M1x1MjA0NS1cdTIwNTFcdTIwNTMtXHUyMDVlXHUyMDdkXHUyMDdlXHUyMDhkXHUyMDhlXHUzMDA4XHUzMDA5XHUyNzY4LVx1Mjc3NVx1MjdjNVx1MjdjNlx1MjdlNi1cdTI3ZWZcdTI5ODMtXHUyOTk4XHUyOWQ4LVx1MjlkYlx1MjlmY1x1MjlmZFx1MmNmOS1cdTJjZmNcdTJjZmVcdTJjZmZcdTJkNzBcdTJlMDAtXHUyZTJlXHUyZTMwXHUyZTMxXHUzMDAxLVx1MzAwM1x1MzAwOC1cdTMwMTFcdTMwMTQtXHUzMDFmXHUzMDMwXHUzMDNkXHUzMGEwXHUzMGZiXHVhNGZlXHVhNGZmXHVhNjBkLVx1YTYwZlx1YTY3M1x1YTY3ZVx1YTZmMi1cdWE2ZjdcdWE4NzQtXHVhODc3XHVhOGNlXHVhOGNmXHVhOGY4LVx1YThmYVx1YTkyZVx1YTkyZlx1YTk1Zlx1YTljMS1cdWE5Y2RcdWE5ZGVcdWE5ZGZcdWFhNWMtXHVhYTVmXHVhYWRlXHVhYWRmXHVhYmViXHVmZDNlXHVmZDNmXHVmZTEwLVx1ZmUxOVx1ZmUzMC1cdWZlNTJcdWZlNTQtXHVmZTYxXHVmZTYzXHVmZTY4XHVmZTZhXHVmZTZiXHVmZjAxLVx1ZmYwM1x1ZmYwNS1cdWZmMGFcdWZmMGMtXHVmZjBmXHVmZjFhXHVmZjFiXHVmZjFmXHVmZjIwXHVmZjNiLVx1ZmYzZFx1ZmYzZlx1ZmY1Ylx1ZmY1ZFx1ZmY1Zi1cdWZmNjVdIiksbD1mdW5jdGlvbigpe3JldHVybiBmfSxmPShlPWZ1bmN0aW9uKGUpe3JldHVybiBlLmlzTm9uZSgpfSx7Zm9sZDpmdW5jdGlvbihlLHQpe3JldHVybiBlKCl9LGlzOmEsaXNTb21lOmEsaXNOb25lOm0sZ2V0T3I6bj1mdW5jdGlvbihlKXtyZXR1cm4gZX0sZ2V0T3JUaHVuazp0PWZ1bmN0aW9uKGUpe3JldHVybiBlKCl9LGdldE9yRGllOmZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcihlfHwiZXJyb3I6IGdldE9yRGllIGNhbGxlZCBvbiBub25lLiIpfSxnZXRPck51bGw6aShudWxsKSxnZXRPclVuZGVmaW5lZDppKHVuZGVmaW5lZCksb3I6bixvclRodW5rOnQsbWFwOmwsZWFjaDpmdW5jdGlvbigpe30sYmluZDpsLGV4aXN0czphLGZvcmFsbDptLGZpbHRlcjpsLGVxdWFsczplLGVxdWFsc186ZSx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuW119LHRvU3RyaW5nOmkoIm5vbmUoKSIpfSkscz1mdW5jdGlvbihuKXt2YXIgZT1pKG4pLHQ9ZnVuY3Rpb24oKXtyZXR1cm4gb30scj1mdW5jdGlvbihlKXtyZXR1cm4gZShuKX0sbz17Zm9sZDpmdW5jdGlvbihlLHQpe3JldHVybiB0KG4pfSxpczpmdW5jdGlvbihlKXtyZXR1cm4gbj09PWV9LGlzU29tZTptLGlzTm9uZTphLGdldE9yOmUsZ2V0T3JUaHVuazplLGdldE9yRGllOmUsZ2V0T3JOdWxsOmUsZ2V0T3JVbmRlZmluZWQ6ZSxvcjp0LG9yVGh1bms6dCxtYXA6ZnVuY3Rpb24oZSl7cmV0dXJuIHMoZShuKSl9LGVhY2g6ZnVuY3Rpb24oZSl7ZShuKX0sYmluZDpyLGV4aXN0czpyLGZvcmFsbDpyLGZpbHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gZShuKT9vOmZ9LHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm5bbl19LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuInNvbWUoIituKyIpIn0sZXF1YWxzOmZ1bmN0aW9uKGUpe3JldHVybiBlLmlzKG4pfSxlcXVhbHNfOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuZm9sZChhLGZ1bmN0aW9uKGUpe3JldHVybiB0KG4sZSl9KX19O3JldHVybiBvfSxnPXtzb21lOnMsbm9uZTpsLGZyb206ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PT1lfHxlPT09dW5kZWZpbmVkP2Y6cyhlKX19LHA9dSx2PXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLnV0aWwuVG9vbHMiKSx5PWZ1bmN0aW9uKHIpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gbj10eXBlb2YodD1lKSwobnVsbD09PXQ/Im51bGwiOiJvYmplY3QiPT1uJiYoQXJyYXkucHJvdG90eXBlLmlzUHJvdG90eXBlT2YodCl8fHQuY29uc3RydWN0b3ImJiJBcnJheSI9PT10LmNvbnN0cnVjdG9yLm5hbWUpPyJhcnJheSI6Im9iamVjdCI9PW4mJihTdHJpbmcucHJvdG90eXBlLmlzUHJvdG90eXBlT2YodCl8fHQuY29uc3RydWN0b3ImJiJTdHJpbmciPT09dC5jb25zdHJ1Y3Rvci5uYW1lKT8ic3RyaW5nIjpuKT09PXI7dmFyIHQsbn19LHg9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZT09PXR9fSx3PXkoInN0cmluZyIpLGI9eSgiYXJyYXkiKSxPPXgoImJvb2xlYW4iKSxDPXgoIm51bWJlciIpLFQ9QXJyYXkucHJvdG90eXBlLnNsaWNlLE49QXJyYXkucHJvdG90eXBlLnB1c2gsRT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1lLmxlbmd0aCxyPW5ldyBBcnJheShuKSxvPTA7bzxuO28rKyl7dmFyIGk9ZVtvXTtyW29dPXQoaSxvKX1yZXR1cm4gcn0saz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wLHI9ZS5sZW5ndGg7bjxyO24rKyl7dChlW25dLG4pfX0sUz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1lLmxlbmd0aC0xOzA8PW47bi0tKXt0KGVbbl0sbil9fSxBPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxuPTAscj1lLmxlbmd0aDtuPHI7KytuKXtpZighYihlW25dKSl0aHJvdyBuZXcgRXJyb3IoIkFyci5mbGF0dGVuIGl0ZW0gIituKyIgd2FzIG5vdCBhbiBhcnJheSwgaW5wdXQ6ICIrZSk7Ti5hcHBseSh0LGVbbl0pfXJldHVybiB0fShFKGUsdCkpfSxEPU9iamVjdC5oYXNPd25Qcm9wZXJ0eSxNPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIEQuY2FsbChlLHQpfSxCPSgidW5kZWZpbmVkIiE9dHlwZW9mIGMud2luZG93P2Mud2luZG93OkZ1bmN0aW9uKCJyZXR1cm4gdGhpczsiKSgpLHI9MyxmdW5jdGlvbihlKXtyZXR1cm4gZS5kb20oKS5ub2RlVHlwZT09PXJ9KSxJPWZ1bmN0aW9uKGUsdCxuKXshZnVuY3Rpb24oZSx0LG4pe2lmKCEodyhuKXx8TyhuKXx8QyhuKSkpdGhyb3cgYy5jb25zb2xlLmVycm9yKCJJbnZhbGlkIGNhbGwgdG8gQXR0ci5zZXQuIEtleSAiLHQsIjo6IFZhbHVlICIsbiwiOjogRWxlbWVudCAiLGUpLG5ldyBFcnJvcigiQXR0cmlidXRlIHZhbHVlIHdhcyBub3Qgc2ltcGxlIik7ZS5zZXRBdHRyaWJ1dGUodCxuKyIiKX0oZS5kb20oKSx0LG4pfSxQPWZ1bmN0aW9uKGUpe2lmKG51bGw9PT1lfHxlPT09dW5kZWZpbmVkKXRocm93IG5ldyBFcnJvcigiTm9kZSBjYW5ub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTtyZXR1cm57ZG9tOmkoZSl9fSxGPXtmcm9tSHRtbDpmdW5jdGlvbihlLHQpe3ZhciBuPSh0fHxjLmRvY3VtZW50KS5jcmVhdGVFbGVtZW50KCJkaXYiKTtpZihuLmlubmVySFRNTD1lLCFuLmhhc0NoaWxkTm9kZXMoKXx8MTxuLmNoaWxkTm9kZXMubGVuZ3RoKXRocm93IGMuY29uc29sZS5lcnJvcigiSFRNTCBkb2VzIG5vdCBoYXZlIGEgc2luZ2xlIHJvb3Qgbm9kZSIsZSksbmV3IEVycm9yKCJIVE1MIG11c3QgaGF2ZSBhIHNpbmdsZSByb290IG5vZGUiKTtyZXR1cm4gUChuLmNoaWxkTm9kZXNbMF0pfSxmcm9tVGFnOmZ1bmN0aW9uKGUsdCl7dmFyIG49KHR8fGMuZG9jdW1lbnQpLmNyZWF0ZUVsZW1lbnQoZSk7cmV0dXJuIFAobil9LGZyb21UZXh0OmZ1bmN0aW9uKGUsdCl7dmFyIG49KHR8fGMuZG9jdW1lbnQpLmNyZWF0ZVRleHROb2RlKGUpO3JldHVybiBQKG4pfSxmcm9tRG9tOlAsZnJvbVBvaW50OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLmRvbSgpO3JldHVybiBnLmZyb20oci5lbGVtZW50RnJvbVBvaW50KHQsbikpLm1hcChQKX19LFI9ZnVuY3Rpb24oZSx0KXtyZXR1cm57ZWxlbWVudDppKGUpLG9mZnNldDppKHQpfX0sVz1mdW5jdGlvbihlLHQpe3ZhciBuPUUoZS5kb20oKS5jaGlsZE5vZGVzLEYuZnJvbURvbSk7cmV0dXJuIDA8bi5sZW5ndGgmJnQ8bi5sZW5ndGg/UihuW3RdLDApOlIoZSx0KX0saj1mdW5jdGlvbih0LG4pe3ZhciBlOyhlPXQsZy5mcm9tKGUuZG9tKCkucGFyZW50Tm9kZSkubWFwKEYuZnJvbURvbSkpLmVhY2goZnVuY3Rpb24oZSl7ZS5kb20oKS5pbnNlcnRCZWZvcmUobi5kb20oKSx0LmRvbSgpKX0pfSxxPWZ1bmN0aW9uKGUsdCl7dmFyIG47aihlLHQpLG49ZSx0LmRvbSgpLmFwcGVuZENoaWxkKG4uZG9tKCkpfTt2YXIgVj1mdW5jdGlvbiB3ZShuLHIpe3ZhciB0PWZ1bmN0aW9uKGUpe3JldHVybiBuKGUpP2cuZnJvbShlLmRvbSgpLm5vZGVWYWx1ZSk6Zy5ub25lKCl9O3JldHVybntnZXQ6ZnVuY3Rpb24oZSl7aWYoIW4oZSkpdGhyb3cgbmV3IEVycm9yKCJDYW4gb25seSBnZXQgIityKyIgdmFsdWUgb2YgYSAiK3IrIiBub2RlIik7cmV0dXJuIHQoZSkuZ2V0T3IoIiIpfSxnZXRPcHRpb246dCxzZXQ6ZnVuY3Rpb24oZSx0KXtpZighbihlKSl0aHJvdyBuZXcgRXJyb3IoIkNhbiBvbmx5IHNldCByYXcgIityKyIgdmFsdWUgb2YgYSAiK3IrIiBub2RlIik7ZS5kb20oKS5ub2RlVmFsdWU9dH19fShCLCJ0ZXh0IiksXz1mdW5jdGlvbihlKXtyZXR1cm4gVi5nZXQoZSl9LEg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbj10LGk9KHI9ZSk9PT11bmRlZmluZWQ/Yy5kb2N1bWVudDpyLmRvbSgpLDEhPT0obz1pKS5ub2RlVHlwZSYmOSE9PW8ubm9kZVR5cGV8fDA9PT1vLmNoaWxkRWxlbWVudENvdW50P1tdOkUoaS5xdWVyeVNlbGVjdG9yQWxsKG4pLEYuZnJvbURvbSk7dmFyIG4scixvLGl9LEw9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuZG9tLlRyZWVXYWxrZXIiKSxVPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuaXNCbG9jayh0KXx8TShlLnNjaGVtYS5nZXRTaG9ydEVuZGVkRWxlbWVudHMoKSx0Lm5vZGVOYW1lKX0sJD1mdW5jdGlvbihlLHQpe3JldHVybiJmYWxzZSI9PT1lLmdldENvbnRlbnRFZGl0YWJsZSh0KX0sej1mdW5jdGlvbihlLHQpe3JldHVybiFlLmlzQmxvY2sodCkmJk0oZS5zY2hlbWEuZ2V0V2hpdGVTcGFjZUVsZW1lbnRzKCksdC5ub2RlTmFtZSl9LEc9ZnVuY3Rpb24oKXtyZXR1cm57c09mZnNldDowLGZPZmZzZXQ6MCxlbGVtZW50czpbXX19LEs9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gVyhGLmZyb21Eb20oZSksdCl9LEo9ZnVuY3Rpb24oZSx0LG4scixvLGkpe3ZvaWQgMD09PWkmJihpPSEwKTtmb3IodmFyIGE9aT90KCExKTpuO2E7KXt2YXIgYz0kKGUsYSk7aWYoY3x8eihlLGEpKXtpZihjP3IuY2VmKGEpOnIuYm91bmRhcnkoYSkpYnJlYWs7YT10KCEwKX1lbHNle2lmKFUoZSxhKSl7aWYoci5ib3VuZGFyeShhKSlicmVha31lbHNlIDM9PT1hLm5vZGVUeXBlJiZyLnRleHQoYSk7aWYoYT09PW8pYnJlYWs7YT10KCExKX19fSxRPWZ1bmN0aW9uKGUsdCxuLHIsbyl7aWYoIShVKGk9ZSxhPW4pfHwkKGksYSl8fHooaSxhKXx8KHU9YSwidHJ1ZSI9PT0oYz1pKS5nZXRDb250ZW50RWRpdGFibGUodSkmJiJmYWxzZSI9PT1jLmdldENvbnRlbnRFZGl0YWJsZVBhcmVudCh1LnBhcmVudE5vZGUpKSkpe3ZhciBpLGEsYyx1LGw9ZS5nZXRQYXJlbnQocixlLmlzQmxvY2spLGY9bmV3IEwobixsKSxzPW8/Zi5uZXh0OmYucHJldjtKKGUscyxuLHtib3VuZGFyeTptLGNlZjptLHRleHQ6ZnVuY3Rpb24oZSl7bz90LmZPZmZzZXQrPWUubGVuZ3RoOnQuc09mZnNldCs9ZS5sZW5ndGgsdC5lbGVtZW50cy5wdXNoKEYuZnJvbURvbShlKSl9fSl9fSxYPWZ1bmN0aW9uKGUsdCxuLHIsbyxpKXt2b2lkIDA9PT1pJiYoaT0hMCk7dmFyIGE9bmV3IEwobix0KSxjPVtdLHU9RygpO1EoZSx1LG4sdCwhMSk7dmFyIGw9ZnVuY3Rpb24oKXtyZXR1cm4gMDx1LmVsZW1lbnRzLmxlbmd0aCYmKGMucHVzaCh1KSx1PUcoKSksITF9O3JldHVybiBKKGUsYS5uZXh0LG4se2JvdW5kYXJ5OmwsY2VmOmZ1bmN0aW9uKGUpe3JldHVybiBsKCksbyYmYy5wdXNoLmFwcGx5KGMsby5jZWYoZSkpLCExfSx0ZXh0OmZ1bmN0aW9uKGUpe3UuZWxlbWVudHMucHVzaChGLmZyb21Eb20oZSkpLG8mJm8udGV4dChlLHUpfX0scixpKSxyJiZRKGUsdSxyLHQsITApLGwoKSxjfSxZPWZ1bmN0aW9uKGksZSl7dmFyIG49SyhlLnN0YXJ0Q29udGFpbmVyLGUuc3RhcnRPZmZzZXQpLHI9bi5lbGVtZW50KCkuZG9tKCksbz1LKGUuZW5kQ29udGFpbmVyLGUuZW5kT2Zmc2V0KSxhPW8uZWxlbWVudCgpLmRvbSgpO3JldHVybiBYKGksZS5jb21tb25BbmNlc3RvckNvbnRhaW5lcixyLGEse3RleHQ6ZnVuY3Rpb24oZSx0KXtlPT09YT90LmZPZmZzZXQrPWUubGVuZ3RoLW8ub2Zmc2V0KCk6ZT09PXImJih0LnNPZmZzZXQrPW4ub2Zmc2V0KCkpfSxjZWY6ZnVuY3Rpb24oZSl7dmFyIHQsbixyLG89QShIKEYuZnJvbURvbShlKSwiKltjb250ZW50ZWRpdGFibGU9dHJ1ZV0iKSxmdW5jdGlvbihlKXt2YXIgdD1lLmRvbSgpO3JldHVybiBYKGksdCx0KX0pO3JldHVybiB0PW8sbj1mdW5jdGlvbihlLHQpe3JldHVybiBuPWUuZWxlbWVudHNbMF0uZG9tKCkscj10LmVsZW1lbnRzWzBdLmRvbSgpLG89bixpPXIsYT1jLk5vZGUuRE9DVU1FTlRfUE9TSVRJT05fUFJFQ0VESU5HLDAhPShvLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGkpJmEpPzE6LTE7dmFyIG4scixvLGksYX0sKHI9VC5jYWxsKHQsMCkpLnNvcnQobikscn19LCExKX0sWj1mdW5jdGlvbihlLHQpe3JldHVybiB0LmNvbGxhcHNlZD9bXTpZKGUsdCl9LGVlPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5jcmVhdGVSbmcoKTtyZXR1cm4gbi5zZWxlY3ROb2RlKHQpLFooZSxuKX0sdGU9ZnVuY3Rpb24oZSxhKXt2YXIgdCxuO3JldHVybiBmdW5jdGlvbihlLHQpe2lmKDA9PT1lLmxlbmd0aClyZXR1cm5bXTtmb3IodmFyIG49dChlWzBdKSxyPVtdLG89W10saT0wLGE9ZS5sZW5ndGg7aTxhO2krKyl7dmFyIGM9ZVtpXSx1PXQoYyk7dSE9PW4mJihyLnB1c2gobyksbz1bXSksbj11LG8ucHVzaChjKX1yZXR1cm4gMCE9PW8ubGVuZ3RoJiZyLnB1c2gobykscn0oKHQ9ZnVuY3Rpb24oZSxuKXt2YXIgdD1fKG4pLHI9ZS5sYXN0LG89cit0Lmxlbmd0aCxpPUEoYSxmdW5jdGlvbihlLHQpe3JldHVybiBlLnN0YXJ0PG8mJmUuZmluaXNoPnI/W3tlbGVtZW50Om4sc3RhcnQ6TWF0aC5tYXgocixlLnN0YXJ0KS1yLGZpbmlzaDpNYXRoLm1pbihvLGUuZmluaXNoKS1yLG1hdGNoSWQ6dH1dOltdfSk7cmV0dXJue3Jlc3VsdHM6ZS5yZXN1bHRzLmNvbmNhdChpKSxsYXN0Om99fSxuPXtyZXN1bHRzOltdLGxhc3Q6MH0sayhlLGZ1bmN0aW9uKGUpe249dChuLGUpfSksbi5yZXN1bHRzKSxmdW5jdGlvbihlKXtyZXR1cm4gZS5tYXRjaElkfSl9LG5lPWZ1bmN0aW9uKG8sZSl7cmV0dXJuIEEoZSxmdW5jdGlvbihlKXt2YXIgdD1lLmVsZW1lbnRzLG49RSh0LF8pLmpvaW4oIiIpLHI9ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09biYmKG49MCksdm9pZCAwPT09ciYmKHI9ZS5sZW5ndGgpO3ZhciBvPXQucmVnZXg7by5sYXN0SW5kZXg9bjtmb3IodmFyIGksYT1bXTtpPW8uZXhlYyhlKTspe3ZhciBjPWlbdC5tYXRjaEluZGV4XSx1PWkuaW5kZXgraVswXS5pbmRleE9mKGMpLGw9dStjLmxlbmd0aDtpZihyPGwpYnJlYWs7YS5wdXNoKHtzdGFydDp1LGZpbmlzaDpsfSksby5sYXN0SW5kZXg9bH1yZXR1cm4gYX0obixvLGUuc09mZnNldCxuLmxlbmd0aC1lLmZPZmZzZXQpO3JldHVybiB0ZSh0LHIpfSl9LHJlPWZ1bmN0aW9uKGUsaSl7UyhlLGZ1bmN0aW9uKGUsbyl7UyhlLGZ1bmN0aW9uKGUpe3ZhciB0PUYuZnJvbURvbShpLmNsb25lTm9kZSghMSkpO0kodCwiZGF0YS1tY2UtaW5kZXgiLG8pO3ZhciBuPWUuZWxlbWVudC5kb20oKTtpZihuLmxlbmd0aD09PWUuZmluaXNoJiYwPT09ZS5zdGFydClxKGUuZWxlbWVudCx0KTtlbHNle24ubGVuZ3RoIT09ZS5maW5pc2gmJm4uc3BsaXRUZXh0KGUuZmluaXNoKTt2YXIgcj1uLnNwbGl0VGV4dChlLnN0YXJ0KTtxKEYuZnJvbURvbShyKSx0KX19KX0pfSxvZT1mdW5jdGlvbihlLHQsbixyKXt2YXIgbyxpPW4uZ2V0Qm9va21hcmsoKSxhPWUuc2VsZWN0KCJ0ZFtkYXRhLW1jZS1zZWxlY3RlZF0sdGhbZGF0YS1tY2Utc2VsZWN0ZWRdIiksYz0wPGEubGVuZ3RoPyhvPWUsQShhLGZ1bmN0aW9uKGUpe3JldHVybiBlZShvLGUpfSkpOlooZSxuLmdldFJuZygpKSx1PW5lKHQsYyk7cmV0dXJuIHJlKHUsciksbi5tb3ZlVG9Cb29rbWFyayhpKSx1Lmxlbmd0aH0saWU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5nZXRBdHRyaWJ1dGUoImRhdGEtbWNlLWluZGV4Iik7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0PyIiK3Q6dH0sYWU9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG8saSxhLGMsdSxsLGY7cmV0dXJuKGk9ZS5kb20uY3JlYXRlKCJzcGFuIix7ImRhdGEtbWNlLWJvZ3VzIjoxfSkpLmNsYXNzTmFtZT0ibWNlLW1hdGNoLW1hcmtlciIsbz1lLmdldEJvZHkoKSxwZShlLHQsITEpLHI/b2UoZS5kb20sbixlLnNlbGVjdGlvbixpKTooYT1lLmRvbSxjPW4sdT1pLGw9ZWUoYSxvKSxmPW5lKGMsbCkscmUoZix1KSxmLmxlbmd0aCl9LGNlPWZ1bmN0aW9uKGUpe3ZhciB0PWUucGFyZW50Tm9kZTtlLmZpcnN0Q2hpbGQmJnQuaW5zZXJ0QmVmb3JlKGUuZmlyc3RDaGlsZCxlKSxlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZSl9LHVlPWZ1bmN0aW9uKGUsdCl7dmFyIG4scj1bXTtpZigobj12LnRvQXJyYXkoZS5nZXRCb2R5KCkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNwYW4iKSkpLmxlbmd0aClmb3IodmFyIG89MDtvPG4ubGVuZ3RoO28rKyl7dmFyIGk9aWUobltvXSk7bnVsbCE9PWkmJmkubGVuZ3RoJiZpPT09dC50b1N0cmluZygpJiZyLnB1c2gobltvXSl9cmV0dXJuIHJ9LGxlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10LmdldCgpLG89ci5pbmRleCxpPWUuZG9tOyhuPSExIT09bik/bysxPT09ci5jb3VudD9vPTA6bysrOm8tMT09LTE/bz1yLmNvdW50LTE6by0tLGkucmVtb3ZlQ2xhc3ModWUoZSxyLmluZGV4KSwibWNlLW1hdGNoLW1hcmtlci1zZWxlY3RlZCIpO3ZhciBhPXVlKGUsbyk7cmV0dXJuIGEubGVuZ3RoPyhpLmFkZENsYXNzKHVlKGUsbyksIm1jZS1tYXRjaC1tYXJrZXItc2VsZWN0ZWQiKSxlLnNlbGVjdGlvbi5zY3JvbGxJbnRvVmlldyhhWzBdKSxvKTotMX0sZmU9ZnVuY3Rpb24oZSx0KXt2YXIgbj10LnBhcmVudE5vZGU7ZS5yZW1vdmUodCksZS5pc0VtcHR5KG4pJiZlLnJlbW92ZShuKX0sc2U9ZnVuY3Rpb24oZSx0LG4scixvLGkpe3ZhciBhLGMsdT0oYT1vLGM9IigiK24ucmVwbGFjZSgvW1wtXFtcXVwvXHtcfVwoXClcKlwrXD9cLlxcXF5cJFx8XS9nLCJcXCQmIikucmVwbGFjZSgvXHMvZywiW15cXFNcXHJcXG5dIikrIikiLGE/Iig/Ol58XFxzfCIrcCgpKyIpIitjKyIoPz0kfFxcc3wiK3AoKSsiKSI6YyksbD17cmVnZXg6bmV3IFJlZ0V4cCh1LHI/ImciOiJnaSIpLG1hdGNoSW5kZXg6MX0sZj1hZShlLHQsbCxpKTtpZihmKXt2YXIgcz1sZShlLHQsITApO3Quc2V0KHtpbmRleDpzLGNvdW50OmYsdGV4dDpuLG1hdGNoQ2FzZTpyLHdob2xlV29yZDpvLGluU2VsZWN0aW9uOml9KX1yZXR1cm4gZn0sZGU9ZnVuY3Rpb24oZSx0KXt2YXIgbj1sZShlLHQsITApO3Quc2V0KGgoaCh7fSx0LmdldCgpKSx7aW5kZXg6bn0pKX0sbWU9ZnVuY3Rpb24oZSx0KXt2YXIgbj1sZShlLHQsITEpO3Quc2V0KGgoaCh7fSx0LmdldCgpKSx7aW5kZXg6bn0pKX0saGU9ZnVuY3Rpb24oZSl7dmFyIHQ9aWUoZSk7cmV0dXJuIG51bGwhPT10JiYwPHQubGVuZ3RofSxnZT1mdW5jdGlvbihlLHQsbixyLG8pe3ZhciBpLGEsYyx1LGwsZj10LmdldCgpLHM9Zi5pbmRleCxkPXM7Zm9yKHI9ITEhPT1yLGM9ZS5nZXRCb2R5KCksYT12LmdyZXAodi50b0FycmF5KGMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNwYW4iKSksaGUpLGk9MDtpPGEubGVuZ3RoO2krKyl7dmFyIG09aWUoYVtpXSk7aWYodT1sPXBhcnNlSW50KG0sMTApLG98fHU9PT1mLmluZGV4KXtmb3Iobi5sZW5ndGg/KGFbaV0uZmlyc3RDaGlsZC5ub2RlVmFsdWU9bixjZShhW2ldKSk6ZmUoZS5kb20sYVtpXSk7YVsrK2ldOyl7aWYoKHU9cGFyc2VJbnQoaWUoYVtpXSksMTApKSE9PWwpe2ktLTticmVha31mZShlLmRvbSxhW2ldKX1yJiZkLS19ZWxzZSBzPGwmJmFbaV0uc2V0QXR0cmlidXRlKCJkYXRhLW1jZS1pbmRleCIsU3RyaW5nKGwtMSkpfXJldHVybiB0LnNldChoKGgoe30sZikse2NvdW50Om8/MDpmLmNvdW50LTEsaW5kZXg6ZH0pKSwocj9kZTptZSkoZSx0KSwhbyYmMDx0LmdldCgpLmNvdW50fSxwZT1mdW5jdGlvbihlLHQsbil7dmFyIHIsbyxpLGEsYz10LmdldCgpO2ZvcihvPXYudG9BcnJheShlLmdldEJvZHkoKS5nZXRFbGVtZW50c0J5VGFnTmFtZSgic3BhbiIpKSxyPTA7cjxvLmxlbmd0aDtyKyspe3ZhciB1PWllKG9bcl0pO251bGwhPT11JiZ1Lmxlbmd0aCYmKHU9PT1jLmluZGV4LnRvU3RyaW5nKCkmJihpPWl8fG9bcl0uZmlyc3RDaGlsZCxhPW9bcl0uZmlyc3RDaGlsZCksY2Uob1tyXSkpfWlmKHQuc2V0KGgoaCh7fSxjKSx7aW5kZXg6LTEsY291bnQ6MCx0ZXh0OiIifSkpLGkmJmEpe3ZhciBsPWUuZG9tLmNyZWF0ZVJuZygpO3JldHVybiBsLnNldFN0YXJ0KGksMCksbC5zZXRFbmQoYSxhLmRhdGEubGVuZ3RoKSwhMSE9PW4mJmUuc2VsZWN0aW9uLnNldFJuZyhsKSxsfX0sdmU9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuRW52IikseWU9ZnVuY3Rpb24oaSxhKXt2YXIgdCxlPSh0PWQoZy5ub25lKCkpLHtjbGVhcjpmdW5jdGlvbigpe3Quc2V0KGcubm9uZSgpKX0sc2V0OmZ1bmN0aW9uKGUpe3Quc2V0KGcuc29tZShlKSl9LGlzU2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHQuZ2V0KCkuaXNTb21lKCl9LG9uOmZ1bmN0aW9uKGUpe3QuZ2V0KCkuZWFjaChlKX19KTtpLnVuZG9NYW5hZ2VyLmFkZCgpO3ZhciBuPXYudHJpbShpLnNlbGVjdGlvbi5nZXRDb250ZW50KHtmb3JtYXQ6InRleHQifSkpO2Z1bmN0aW9uIGMoZSl7KDE8YS5nZXQoKS5jb3VudD9lLmVuYWJsZTplLmRpc2FibGUpKCJuZXh0IiksKDE8YS5nZXQoKS5jb3VudD9lLmVuYWJsZTplLmRpc2FibGUpKCJwcmV2Iil9dmFyIHU9ZnVuY3Rpb24oZSx0KXt2YXIgbj10P2UuZGlzYWJsZTplLmVuYWJsZTtrKFsicmVwbGFjZSIsInJlcGxhY2VhbGwiLCJwcmV2IiwibmV4dCJdLG4pfTt2YXIgbD1mdW5jdGlvbihlLHQpe3ZlLmJyb3dzZXIuaXNTYWZhcmkoKSYmdmUuZGV2aWNlVHlwZS5pc1RvdWNoKCkmJigiZmluZCI9PT10fHwicmVwbGFjZSI9PT10fHwicmVwbGFjZWFsbCI9PT10KSYmZS5mb2N1cyh0KX0sZj1mdW5jdGlvbihlKXtwZShpLGEsITEpLHUoZSwhMCksYyhlKX0scz1mdW5jdGlvbihlKXt2YXIgdD1lLmdldERhdGEoKSxuPWEuZ2V0KCk7aWYodC5maW5kdGV4dC5sZW5ndGgpe2lmKG4udGV4dD09PXQuZmluZHRleHQmJm4ubWF0Y2hDYXNlPT09dC5tYXRjaGNhc2UmJm4ud2hvbGVXb3JkPT09dC53aG9sZXdvcmRzKWRlKGksYSk7ZWxzZXt2YXIgcj1zZShpLGEsdC5maW5kdGV4dCx0Lm1hdGNoY2FzZSx0Lndob2xld29yZHMsdC5pbnNlbGVjdGlvbik7cjw9MCYmIWZ1bmN0aW9uIG8oZSl7aS53aW5kb3dNYW5hZ2VyLmFsZXJ0KCJDb3VsZCBub3QgZmluZCB0aGUgc3BlY2lmaWVkIHN0cmluZy4iLGZ1bmN0aW9uKCl7ZS5mb2N1cygiZmluZHRleHQiKX0pfShlKSx1KGUsMD09PXIpfWMoZSl9ZWxzZSBmKGUpfSxyPWEuZ2V0KCksbz17dGl0bGU6IkZpbmQgYW5kIFJlcGxhY2UiLHNpemU6Im5vcm1hbCIsYm9keTp7dHlwZToicGFuZWwiLGl0ZW1zOlt7dHlwZToiYmFyIixpdGVtczpbe3R5cGU6ImlucHV0IixuYW1lOiJmaW5kdGV4dCIscGxhY2Vob2xkZXI6IkZpbmQiLG1heGltaXplZDohMCxpbnB1dE1vZGU6InNlYXJjaCJ9LHt0eXBlOiJidXR0b24iLG5hbWU6InByZXYiLHRleHQ6IlByZXZpb3VzIixpY29uOiJhY3Rpb24tcHJldiIsZGlzYWJsZWQ6ITAsYm9yZGVybGVzczohMH0se3R5cGU6ImJ1dHRvbiIsbmFtZToibmV4dCIsdGV4dDoiTmV4dCIsaWNvbjoiYWN0aW9uLW5leHQiLGRpc2FibGVkOiEwLGJvcmRlcmxlc3M6ITB9XX0se3R5cGU6ImlucHV0IixuYW1lOiJyZXBsYWNldGV4dCIscGxhY2Vob2xkZXI6IlJlcGxhY2Ugd2l0aCIsaW5wdXRNb2RlOiJzZWFyY2gifV19LGJ1dHRvbnM6W3t0eXBlOiJtZW51IixuYW1lOiJvcHRpb25zIixpY29uOiJwcmVmZXJlbmNlcyIsdG9vbHRpcDoiUHJlZmVyZW5jZXMiLGFsaWduOiJzdGFydCIsaXRlbXM6W3t0eXBlOiJ0b2dnbGVtZW51aXRlbSIsbmFtZToibWF0Y2hjYXNlIix0ZXh0OiJNYXRjaCBjYXNlIn0se3R5cGU6InRvZ2dsZW1lbnVpdGVtIixuYW1lOiJ3aG9sZXdvcmRzIix0ZXh0OiJGaW5kIHdob2xlIHdvcmRzIG9ubHkifSx7dHlwZToidG9nZ2xlbWVudWl0ZW0iLG5hbWU6Imluc2VsZWN0aW9uIix0ZXh0OiJGaW5kIGluIHNlbGVjdGlvbiJ9XX0se3R5cGU6ImN1c3RvbSIsbmFtZToiZmluZCIsdGV4dDoiRmluZCIscHJpbWFyeTohMH0se3R5cGU6ImN1c3RvbSIsbmFtZToicmVwbGFjZSIsdGV4dDoiUmVwbGFjZSIsZGlzYWJsZWQ6ITB9LHt0eXBlOiJjdXN0b20iLG5hbWU6InJlcGxhY2VhbGwiLHRleHQ6IlJlcGxhY2UgQWxsIixkaXNhYmxlZDohMH1dLGluaXRpYWxEYXRhOntmaW5kdGV4dDpuLHJlcGxhY2V0ZXh0OiIiLHdob2xld29yZHM6ci53aG9sZVdvcmQsbWF0Y2hjYXNlOnIubWF0Y2hDYXNlLGluc2VsZWN0aW9uOnIuaW5TZWxlY3Rpb259LG9uQ2hhbmdlOmZ1bmN0aW9uKGUsdCl7ImZpbmR0ZXh0Ij09PXQubmFtZSYmMDxhLmdldCgpLmNvdW50JiZmKGUpfSxvbkFjdGlvbjpmdW5jdGlvbihlLHQpe3ZhciBuLHIsbz1lLmdldERhdGEoKTtzd2l0Y2godC5uYW1lKXtjYXNlImZpbmQiOnMoZSk7YnJlYWs7Y2FzZSJyZXBsYWNlIjooZ2UoaSxhLG8ucmVwbGFjZXRleHQpP2M6ZikoZSk7YnJlYWs7Y2FzZSJyZXBsYWNlYWxsIjpnZShpLGEsby5yZXBsYWNldGV4dCwhMCwhMCksZihlKTticmVhaztjYXNlInByZXYiOm1lKGksYSksYyhlKTticmVhaztjYXNlIm5leHQiOmRlKGksYSksYyhlKTticmVhaztjYXNlIm1hdGNoY2FzZSI6Y2FzZSJ3aG9sZXdvcmRzIjpjYXNlImluc2VsZWN0aW9uIjpuPWUuZ2V0RGF0YSgpLHI9YS5nZXQoKSxhLnNldChoKGgoe30scikse21hdGNoQ2FzZTpuLm1hdGNoY2FzZSx3aG9sZVdvcmQ6bi53aG9sZXdvcmRzLGluU2VsZWN0aW9uOm4uaW5zZWxlY3Rpb259KSksZihlKX1sKGUsdC5uYW1lKX0sb25TdWJtaXQ6ZnVuY3Rpb24oZSl7cyhlKSxsKGUsImZpbmQiKX0sb25DbG9zZTpmdW5jdGlvbigpe2kuZm9jdXMoKSxwZShpLGEpLGkudW5kb01hbmFnZXIuYWRkKCl9fTtlLnNldChpLndpbmRvd01hbmFnZXIub3BlbihvLHtpbmxpbmU6InRvb2xiYXIifSkpfSx4ZT1mdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbigpe3llKGUsdCl9fTshZnVuY3Rpb24gYmUoKXtvLmFkZCgic2VhcmNocmVwbGFjZSIsZnVuY3Rpb24oZSl7dmFyIHQsbixyLG8saSxhLGM9ZCh7aW5kZXg6LTEsY291bnQ6MCx0ZXh0OiIiLG1hdGNoQ2FzZTohMSx3aG9sZVdvcmQ6ITEsaW5TZWxlY3Rpb246ITF9KTtyZXR1cm4gbj1jLCh0PWUpLmFkZENvbW1hbmQoIlNlYXJjaFJlcGxhY2UiLGZ1bmN0aW9uKCl7eWUodCxuKX0pLG89Yywocj1lKS51aS5yZWdpc3RyeS5hZGRNZW51SXRlbSgic2VhcmNocmVwbGFjZSIse3RleHQ6IkZpbmQgYW5kIHJlcGxhY2UuLi4iLHNob3J0Y3V0OiJNZXRhK0YiLG9uQWN0aW9uOnhlKHIsbyksaWNvbjoic2VhcmNoIn0pLHIudWkucmVnaXN0cnkuYWRkQnV0dG9uKCJzZWFyY2hyZXBsYWNlIix7dG9vbHRpcDoiRmluZCBhbmQgcmVwbGFjZSIsb25BY3Rpb246eGUocixvKSxpY29uOiJzZWFyY2gifSksci5zaG9ydGN1dHMuYWRkKCJNZXRhK0YiLCIiLHhlKHIsbykpLGk9ZSxhPWMse2RvbmU6ZnVuY3Rpb24oZSl7cmV0dXJuIHBlKGksYSxlKX0sZmluZDpmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gdm9pZCAwPT09ciYmKHI9ITEpLHNlKGksYSxlLHQsbixyKX0sbmV4dDpmdW5jdGlvbigpe3JldHVybiBkZShpLGEpfSxwcmV2OmZ1bmN0aW9uKCl7cmV0dXJuIG1lKGksYSl9LHJlcGxhY2U6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBnZShpLGEsZSx0LG4pfX19KX0oKX0od2luZG93KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/spellchecker/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/spellchecker/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24oTil7InVzZSBzdHJpY3QiO3ZhciBrPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJue2dldDpmdW5jdGlvbigpe3JldHVybiB0fSxzZXQ6ZnVuY3Rpb24oZSl7dD1lfX19LHk9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuUGx1Z2luTWFuYWdlciIpLGg9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UudXRpbC5Ub29scyIpLGQ9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UudXRpbC5VUkkiKSxmPXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLnV0aWwuWEhSIiksZz1mdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRQYXJhbSgic3BlbGxjaGVja2VyX3JwY191cmwiKX0sUz1mdW5jdGlvbihlKXt2YXIgdD1uZXcgUmVnRXhwKCdbXlxccyEiIyQlJigpKissLS4vOjs8PT4/QFtcXF1eX3t8fWBceGE3XHhhOVx4YWJceGFlXHhiMVx4YjZceGI3XHhiOFx4YmJceGJjXHhiZFx4YmVceGJmXHhkN1x4ZjdceGE0XHUyMDFkXHUyMDFjXHUyMDFlXHhhMFx1MjAwMlx1MjAwM1x1MjAwOV0rJywiZyIpO3JldHVybiBlLmdldFBhcmFtKCJzcGVsbGNoZWNrZXJfd29yZGNoYXJfcGF0dGVybiIsdCl9O2Z1bmN0aW9uIFQoZSl7cmV0dXJuIGUmJjE9PT1lLm5vZGVUeXBlJiYiZmFsc2UiPT09ZS5jb250ZW50RWRpdGFibGV9dmFyIHI9ZnVuY3Rpb24oYSxyKXt2YXIgbixvLGcsaCxwLGk9W10sdj1yLmRvbTtmdW5jdGlvbiBjKGUsdCl7aWYoIWVbMF0pdGhyb3cgbmV3IEVycm9yKCJmaW5kQW5kUmVwbGFjZURPTVRleHQgY2Fubm90IGhhbmRsZSB6ZXJvLWxlbmd0aCBtYXRjaGVzIik7cmV0dXJue3N0YXJ0OmUuaW5kZXgsZW5kOmUuaW5kZXgrZVswXS5sZW5ndGgsdGV4dDplWzBdLGRhdGE6dH19ZnVuY3Rpb24gcyhlKXtmb3IodmFyIHQ9ZS5wYXJlbnROb2RlOzA8ZS5jaGlsZE5vZGVzLmxlbmd0aDspdC5pbnNlcnRCZWZvcmUoZS5jaGlsZE5vZGVzWzBdLGUpO3QucmVtb3ZlQ2hpbGQoZSl9ZnVuY3Rpb24gbChlKXt2YXIgdD1hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIiksbj1bXTtlPSJudW1iZXIiPT10eXBlb2YgZT8iIitlOm51bGw7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBvPXRbcl0saT1vLmdldEF0dHJpYnV0ZSgiZGF0YS1tY2UtaW5kZXgiKTtudWxsIT09aSYmaS5sZW5ndGgmJi0xIT09by5jbGFzc05hbWUuaW5kZXhPZigibWNlLXNwZWxsY2hlY2tlci13b3JkIikmJihpIT09ZSYmbnVsbCE9PWV8fG4ucHVzaChvKSl9cmV0dXJuIG59ZnVuY3Rpb24gdShlKXtmb3IodmFyIHQ9aS5sZW5ndGg7dC0tOylpZihpW3RdPT09ZSlyZXR1cm4gdDtyZXR1cm4tMX1mdW5jdGlvbiBlKGUpe2Zvcih2YXIgdD0wLG49aS5sZW5ndGg7dDxuJiYhMSE9PWUoaVt0XSx0KTt0KyspO3JldHVybiB0aGlzfWZ1bmN0aW9uIHQoZSl7dmFyIHQsbj1sKGU/dShlKTpudWxsKTtmb3IodD1uLmxlbmd0aDt0LS07KXMoblt0XSk7cmV0dXJuIHRoaXN9ZnVuY3Rpb24gZChlKXt2YXIgdD1sKHUoZSkpLG49ci5kb20uY3JlYXRlUm5nKCk7cmV0dXJuIG4uc2V0U3RhcnRCZWZvcmUodFswXSksbi5zZXRFbmRBZnRlcih0W3QubGVuZ3RoLTFdKSxufXJldHVybiBnPXIuc2NoZW1hLmdldEJsb2NrRWxlbWVudHMoKSxoPXIuc2NoZW1hLmdldFdoaXRlU3BhY2VFbGVtZW50cygpLHA9ci5zY2hlbWEuZ2V0U2hvcnRFbmRlZEVsZW1lbnRzKCkse3RleHQ6bz1mdW5jdGlvbiBmKGUpe3ZhciB0O2lmKDM9PT1lLm5vZGVUeXBlKXJldHVybiBlLmRhdGE7aWYoaFtlLm5vZGVOYW1lXSYmIWdbZS5ub2RlTmFtZV0pcmV0dXJuIiI7aWYoVChlKSlyZXR1cm4iXG4iO2lmKHQ9IiIsKGdbZS5ub2RlTmFtZV18fHBbZS5ub2RlTmFtZV0pJiYodCs9IlxuIiksZT1lLmZpcnN0Q2hpbGQpZm9yKDt0Kz1mKGUpLGU9ZS5uZXh0U2libGluZzspO3JldHVybiB0fShhKSxtYXRjaGVzOmksZWFjaDplLGZpbHRlcjpmdW5jdGlvbiBtKG4pe3ZhciByPVtdO3JldHVybiBlKGZ1bmN0aW9uKGUsdCl7bihlLHQpJiZyLnB1c2goZSl9KSxpPXIsdGhpc30scmVzZXQ6ZnVuY3Rpb24geCgpe3JldHVybiBpLnNwbGljZSgwLGkubGVuZ3RoKSx0KCksdGhpc30sbWF0Y2hGcm9tRWxlbWVudDpmdW5jdGlvbiBOKGUpe3JldHVybiBpW2UuZ2V0QXR0cmlidXRlKCJkYXRhLW1jZS1pbmRleCIpXX0sZWxlbWVudEZyb21NYXRjaDpmdW5jdGlvbiBrKGUpe3JldHVybiBsKHUoZSkpWzBdfSxmaW5kOmZ1bmN0aW9uIHkoZSx0KXtpZihvJiZlLmdsb2JhbClmb3IoO249ZS5leGVjKG8pOylpLnB1c2goYyhuLHQpKTtyZXR1cm4gdGhpc30sYWRkOmZ1bmN0aW9uIFMoZSx0LG4pe3JldHVybiBpLnB1c2goe3N0YXJ0OmUsZW5kOmUrdCx0ZXh0Om8uc3Vic3RyKGUsdCksZGF0YTpufSksdGhpc30sd3JhcDpmdW5jdGlvbiB3KGUpe3JldHVybiBpLmxlbmd0aCYmZnVuY3Rpb24gZihlLHQsbil7dmFyIHIsbyxpLGEsYyxzPVtdLGw9MCx1PWUsZD0wOyh0PXQuc2xpY2UoMCkpLnNvcnQoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5zdGFydC10LnN0YXJ0fSksYz10LnNoaWZ0KCk7ZTpmb3IoOzspe2lmKChnW3Uubm9kZU5hbWVdfHxwW3Uubm9kZU5hbWVdfHxUKHUpKSYmbCsrLDM9PT11Lm5vZGVUeXBlJiYoIW8mJnUubGVuZ3RoK2w+PWMuZW5kPyhvPXUsYT1jLmVuZC1sKTpyJiZzLnB1c2godSksIXImJnUubGVuZ3RoK2w+Yy5zdGFydCYmKHI9dSxpPWMuc3RhcnQtbCksbCs9dS5sZW5ndGgpLHImJm8pe2lmKHU9bih7c3RhcnROb2RlOnIsc3RhcnROb2RlSW5kZXg6aSxlbmROb2RlOm8sZW5kTm9kZUluZGV4OmEsaW5uZXJOb2RlczpzLG1hdGNoOmMudGV4dCxtYXRjaEluZGV4OmR9KSxsLT1vLmxlbmd0aC1hLG89cj1udWxsLHM9W10sZCsrLCEoYz10LnNoaWZ0KCkpKWJyZWFrfWVsc2UgaWYoaFt1Lm5vZGVOYW1lXSYmIWdbdS5ub2RlTmFtZV18fCF1LmZpcnN0Q2hpbGQpe2lmKHUubmV4dFNpYmxpbmcpe3U9dS5uZXh0U2libGluZztjb250aW51ZX19ZWxzZSBpZighVCh1KSl7dT11LmZpcnN0Q2hpbGQ7Y29udGludWV9Zm9yKDs7KXtpZih1Lm5leHRTaWJsaW5nKXt1PXUubmV4dFNpYmxpbmc7YnJlYWt9aWYodS5wYXJlbnROb2RlPT09ZSlicmVhayBlO3U9dS5wYXJlbnROb2RlfX19KGEsaSxmdW5jdGlvbiB0KG8pe2Z1bmN0aW9uIG0oZSx0KXt2YXIgbj1pW3RdO24uc3RlbmNpbHx8KG4uc3RlbmNpbD1vKG4pKTt2YXIgcj1uLnN0ZW5jaWwuY2xvbmVOb2RlKCExKTtyZXR1cm4gci5zZXRBdHRyaWJ1dGUoImRhdGEtbWNlLWluZGV4Iix0KSxlJiZyLmFwcGVuZENoaWxkKHYuZG9jLmNyZWF0ZVRleHROb2RlKGUpKSxyfXJldHVybiBmdW5jdGlvbihlKXt2YXIgdCxuLHIsbz1lLnN0YXJ0Tm9kZSxpPWUuZW5kTm9kZSxhPWUubWF0Y2hJbmRleCxjPXYuZG9jO2lmKG89PT1pKXt2YXIgcz1vO3I9cy5wYXJlbnROb2RlLDA8ZS5zdGFydE5vZGVJbmRleCYmKHQ9Yy5jcmVhdGVUZXh0Tm9kZShzLmRhdGEuc3Vic3RyaW5nKDAsZS5zdGFydE5vZGVJbmRleCkpLHIuaW5zZXJ0QmVmb3JlKHQscykpO3ZhciBsPW0oZS5tYXRjaCxhKTtyZXR1cm4gci5pbnNlcnRCZWZvcmUobCxzKSxlLmVuZE5vZGVJbmRleDxzLmxlbmd0aCYmKG49Yy5jcmVhdGVUZXh0Tm9kZShzLmRhdGEuc3Vic3RyaW5nKGUuZW5kTm9kZUluZGV4KSksci5pbnNlcnRCZWZvcmUobixzKSkscy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHMpLGx9dD1jLmNyZWF0ZVRleHROb2RlKG8uZGF0YS5zdWJzdHJpbmcoMCxlLnN0YXJ0Tm9kZUluZGV4KSksbj1jLmNyZWF0ZVRleHROb2RlKGkuZGF0YS5zdWJzdHJpbmcoZS5lbmROb2RlSW5kZXgpKTtmb3IodmFyIHU9bShvLmRhdGEuc3Vic3RyaW5nKGUuc3RhcnROb2RlSW5kZXgpLGEpLGQ9MCxmPWUuaW5uZXJOb2Rlcy5sZW5ndGg7ZDxmOysrZCl7dmFyIGc9ZS5pbm5lck5vZGVzW2RdLGg9bShnLmRhdGEsYSk7Zy5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChoLGcpfXZhciBwPW0oaS5kYXRhLnN1YnN0cmluZygwLGUuZW5kTm9kZUluZGV4KSxhKTtyZXR1cm4ocj1vLnBhcmVudE5vZGUpLmluc2VydEJlZm9yZSh0LG8pLHIuaW5zZXJ0QmVmb3JlKHUsbyksci5yZW1vdmVDaGlsZChvKSwocj1pLnBhcmVudE5vZGUpLmluc2VydEJlZm9yZShwLGkpLHIuaW5zZXJ0QmVmb3JlKG4saSksci5yZW1vdmVDaGlsZChpKSxwfX0oZSkpLHRoaXN9LHVud3JhcDp0LHJlcGxhY2U6ZnVuY3Rpb24gYihlLHQpe3ZhciBuPWQoZSk7cmV0dXJuIG4uZGVsZXRlQ29udGVudHMoKSwwPHQubGVuZ3RoJiZuLmluc2VydE5vZGUoci5kb20uZG9jLmNyZWF0ZVRleHROb2RlKHQpKSxufSxyYW5nZUZyb21NYXRjaDpkLGluZGV4T2Y6dX19LGw9T2JqZWN0Lmhhc093blByb3BlcnR5LHU9ZnVuY3Rpb24oZSx0KXtpZighdC5nZXQoKSl7dmFyIG49cihlLmdldEJvZHkoKSxlKTt0LnNldChuKX1yZXR1cm4gdC5nZXQoKX0scD1mdW5jdGlvbihlLHQsbixyLG8saSxhKXt2YXIgYyxzLGwsdT1lLmdldFBhcmFtKCJzcGVsbGNoZWNrZXJfY2FsbGJhY2siKTsodXx8KGM9ZSxzPXQsbD1uLGZ1bmN0aW9uKGUsdCxyLG8pe3ZhciBuPXttZXRob2Q6ZSxsYW5nOmwuZ2V0KCl9LGk9IiI7blsiYWRkVG9EaWN0aW9uYXJ5Ij09PWU/IndvcmQiOiJ0ZXh0Il09dCxoLmVhY2gobixmdW5jdGlvbihlLHQpe2kmJihpKz0iJiIpLGkrPXQrIj0iK2VuY29kZVVSSUNvbXBvbmVudChlKX0pLGYuc2VuZCh7dXJsOm5ldyBkKHMpLnRvQWJzb2x1dGUoZyhjKSksdHlwZToicG9zdCIsY29udGVudF90eXBlOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiLGRhdGE6aSxzdWNjZXNzOmZ1bmN0aW9uKGUpe3ZhciB0PUpTT04ucGFyc2UoZSk7aWYodCl0LmVycm9yP28odC5lcnJvcik6cih0KTtlbHNle3ZhciBuPWMudHJhbnNsYXRlKCJTZXJ2ZXIgcmVzcG9uc2Ugd2Fzbid0IHByb3BlciBKU09OLiIpO28obil9fSxlcnJvcjpmdW5jdGlvbigpe3ZhciBlPWMudHJhbnNsYXRlKCJUaGUgc3BlbGxpbmcgc2VydmljZSB3YXMgbm90IGZvdW5kOiAoIikrZyhjKStjLnRyYW5zbGF0ZSgiKSIpO28oZSl9fSl9KSkuY2FsbChlLnBsdWdpbnMuc3BlbGxjaGVja2VyLHIsbyxpLGEpfSx3PWZ1bmN0aW9uKHQsZSxuLHIsbyxpKXtpZighYSh0LG4scikpe3Quc2V0UHJvZ3Jlc3NTdGF0ZSghMCkscCh0LGUsaSwic3BlbGxjaGVjayIsdSh0LHIpLnRleHQsZnVuY3Rpb24oZSl7Yih0LG4scixvLGUpfSxmdW5jdGlvbihlKXt0Lm5vdGlmaWNhdGlvbk1hbmFnZXIub3Blbih7dGV4dDplLHR5cGU6ImVycm9yIn0pLHQuc2V0UHJvZ3Jlc3NTdGF0ZSghMSksYSh0LG4scil9KSx0LmZvY3VzKCl9fSxtPWZ1bmN0aW9uKGUsdCxuKXtlLmRvbS5zZWxlY3QoInNwYW4ubWNlLXNwZWxsY2hlY2tlci13b3JkIikubGVuZ3RofHxhKGUsdCxuKX0sbz1mdW5jdGlvbih0LGUsbixyLG8saSl7dC5zZWxlY3Rpb24uY29sbGFwc2UoKSxpP2guZWFjaCh0LmRvbS5zZWxlY3QoInNwYW4ubWNlLXNwZWxsY2hlY2tlci13b3JkIiksZnVuY3Rpb24oZSl7ZS5nZXRBdHRyaWJ1dGUoImRhdGEtbWNlLXdvcmQiKT09PXImJnQuZG9tLnJlbW92ZShlLCEwKX0pOnQuZG9tLnJlbW92ZShvLCEwKSxtKHQsZSxuKX0sYT1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5zZWxlY3Rpb24uZ2V0Qm9va21hcmsoKTtpZih1KGUsbikucmVzZXQoKSxlLnNlbGVjdGlvbi5tb3ZlVG9Cb29rbWFyayhyKSxuLnNldChudWxsKSx0LmdldCgpKXJldHVybiB0LnNldCghMSksZS5maXJlKCJTcGVsbGNoZWNrRW5kIiksITB9LHY9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5nZXRBdHRyaWJ1dGUoImRhdGEtbWNlLWluZGV4Iik7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0PyIiK3Q6dH0sYj1mdW5jdGlvbih0LGUsbixyLG8pe3ZhciBpPSEhby5kaWN0aW9uYXJ5LGE9by53b3JkcztpZih0LnNldFByb2dyZXNzU3RhdGUoITEpLGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCBpbiBlKWlmKGwuY2FsbChlLHQpKXJldHVybiExO3JldHVybiEwfShhKSl7dmFyIGM9dC50cmFuc2xhdGUoIk5vIG1pc3NwZWxsaW5ncyBmb3VuZC4iKTtyZXR1cm4gdC5ub3RpZmljYXRpb25NYW5hZ2VyLm9wZW4oe3RleHQ6Yyx0eXBlOiJpbmZvIn0pLHZvaWQgZS5zZXQoITEpfXIuc2V0KHtzdWdnZXN0aW9uczphLGhhc0RpY3Rpb25hcnlTdXBwb3J0Oml9KTt2YXIgcz10LnNlbGVjdGlvbi5nZXRCb29rbWFyaygpO3UodCxuKS5maW5kKFModCkpLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hIWFbZS50ZXh0XX0pLndyYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHQuZG9tLmNyZWF0ZSgic3BhbiIseyJjbGFzcyI6Im1jZS1zcGVsbGNoZWNrZXItd29yZCIsImFyaWEtaW52YWxpZCI6InNwZWxsaW5nIiwiZGF0YS1tY2UtYm9ndXMiOjEsImRhdGEtbWNlLXdvcmQiOmUudGV4dH0pfSksdC5zZWxlY3Rpb24ubW92ZVRvQm9va21hcmsocyksZS5zZXQoITApLHQuZmlyZSgiU3BlbGxjaGVja1N0YXJ0Iil9LHg9ZnVuY3Rpb24oKXtyZXR1cm4oeD1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQsbj0xLHI9YXJndW1lbnRzLmxlbmd0aDtuPHI7bisrKWZvcih2YXIgbyBpbiB0PWFyZ3VtZW50c1tuXSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxvKSYmKGVbb109dFtvXSk7cmV0dXJuIGV9KS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LEE9IlNwZWxsY2hlY2tTdGFydCBTcGVsbGNoZWNrRW5kIixCPWZ1bmN0aW9uKG4sZSxyLHQsbyxpKXt2YXIgYSxjLHMsbD0ocz1uLGE9aC5tYXAocy5nZXRQYXJhbSgic3BlbGxjaGVja2VyX2xhbmd1YWdlcyIsIkVuZ2xpc2g9ZW4sRGFuaXNoPWRhLER1dGNoPW5sLEZpbm5pc2g9ZmksRnJlbmNoPWZyX0ZSLEdlcm1hbj1kZSxJdGFsaWFuPWl0LFBvbGlzaD1wbCxQb3J0dWd1ZXNlPXB0X0JSLFNwYW5pc2g9ZXMsU3dlZGlzaD1zdiIpLnNwbGl0KCIsIiksZnVuY3Rpb24oZSl7cmV0dXJue25hbWU6KGU9ZS5zcGxpdCgiPSIpKVswXSx2YWx1ZTplWzFdfX0pLGM9W10saC5lYWNoKGEsZnVuY3Rpb24oZSl7Yy5wdXNoKHtzZWxlY3RhYmxlOiEwLHRleHQ6ZS5uYW1lLGRhdGE6ZS52YWx1ZX0pfSksYyksdT1mdW5jdGlvbigpe3cobixlLHIsdCxpLG8pfSxkPXt0b29sdGlwOiJTcGVsbGNoZWNrIixvbkFjdGlvbjp1LGljb246InNwZWxsLWNoZWNrIixvblNldHVwOmZ1bmN0aW9uKGUpe3ZhciB0PWZ1bmN0aW9uKCl7ZS5zZXRBY3RpdmUoci5nZXQoKSl9O3JldHVybiBuLm9uKEEsdCksZnVuY3Rpb24oKXtuLm9mZihBLHQpfX19LGY9eCh4KHt9LGQpLHt0eXBlOiJzcGxpdGJ1dHRvbiIsc2VsZWN0OmZ1bmN0aW9uKGUpe3JldHVybiBlPT09by5nZXQoKX0sZmV0Y2g6ZnVuY3Rpb24oZSl7ZShoLm1hcChsLGZ1bmN0aW9uKGUpe3JldHVybnt0eXBlOiJjaG9pY2VpdGVtIix2YWx1ZTplLmRhdGEsdGV4dDplLnRleHR9fSkpfSxvbkl0ZW1BY3Rpb246ZnVuY3Rpb24oZSx0KXtvLnNldCh0KX19KTsxPGwubGVuZ3RoP24udWkucmVnaXN0cnkuYWRkU3BsaXRCdXR0b24oInNwZWxsY2hlY2tlciIsZik6bi51aS5yZWdpc3RyeS5hZGRUb2dnbGVCdXR0b24oInNwZWxsY2hlY2tlciIsZCksbi51aS5yZWdpc3RyeS5hZGRUb2dnbGVNZW51SXRlbSgic3BlbGxjaGVja2VyIix7dGV4dDoiU3BlbGxjaGVjayIsaWNvbjoic3BlbGwtY2hlY2siLG9uU2V0dXA6ZnVuY3Rpb24oZSl7ZS5zZXRBY3RpdmUoci5nZXQoKSk7dmFyIHQ9ZnVuY3Rpb24oKXtlLnNldEFjdGl2ZShyLmdldCgpKX07cmV0dXJuIG4ub24oQSx0KSxmdW5jdGlvbigpe24ub2ZmKEEsdCl9fSxvbkFjdGlvbjp1fSl9LEk9ZnVuY3Rpb24oYyxzLGUsbCx1LGQsZixnKXt2YXIgdD1bXSxuPWUuZ2V0KCkuc3VnZ2VzdGlvbnNbZl07cmV0dXJuIGguZWFjaChuLGZ1bmN0aW9uKGUpe3QucHVzaCh7dGV4dDplLG9uQWN0aW9uOmZ1bmN0aW9uKCl7Yy5pbnNlcnRDb250ZW50KGMuZG9tLmVuY29kZShlKSksYy5kb20ucmVtb3ZlKGcpLG0oYyxsLHUpfX0pfSksZS5nZXQoKS5oYXNEaWN0aW9uYXJ5U3VwcG9ydCYmKHQucHVzaCh7dHlwZToic2VwYXJhdG9yIn0pLHQucHVzaCh7dGV4dDoiQWRkIHRvIGRpY3Rpb25hcnkiLG9uQWN0aW9uOmZ1bmN0aW9uKCl7dmFyIHQsZSxuLHIsbyxpLGE7ZT1zLG49bCxyPXUsbz1kLGk9ZixhPWcsKHQ9Yykuc2V0UHJvZ3Jlc3NTdGF0ZSghMCkscCh0LGUsbywiYWRkVG9EaWN0aW9uYXJ5IixpLGZ1bmN0aW9uKCl7dC5zZXRQcm9ncmVzc1N0YXRlKCExKSx0LmRvbS5yZW1vdmUoYSwhMCksbSh0LG4scil9LGZ1bmN0aW9uKGUpe3Qubm90aWZpY2F0aW9uTWFuYWdlci5vcGVuKHt0ZXh0OmUsdHlwZToiZXJyb3IifSksdC5zZXRQcm9ncmVzc1N0YXRlKCExKX0pfX0pKSx0LnB1c2guYXBwbHkodCxbe3R5cGU6InNlcGFyYXRvciJ9LHt0ZXh0OiJJZ25vcmUiLG9uQWN0aW9uOmZ1bmN0aW9uKCl7byhjLGwsdSxmLGcpfX0se3RleHQ6Iklnbm9yZSBhbGwiLG9uQWN0aW9uOmZ1bmN0aW9uKCl7byhjLGwsdSxmLGcsITApfX1dKSx0fSxQPWZ1bmN0aW9uKG8saSxhLGMscyxsKXtvLnVpLnJlZ2lzdHJ5LmFkZENvbnRleHRNZW51KCJzcGVsbGNoZWNrZXIiLHt1cGRhdGU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtpZigibWNlLXNwZWxsY2hlY2tlci13b3JkIiE9PXQuY2xhc3NOYW1lKXJldHVybltdO3ZhciBuPWZ1bmN0aW9uKGUsdCl7dmFyIG4scj1bXTtpZigobj1oLnRvQXJyYXkoZS5nZXRCb2R5KCkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNwYW4iKSkpLmxlbmd0aClmb3IodmFyIG89MDtvPG4ubGVuZ3RoO28rKyl7dmFyIGk9dihuW29dKTtudWxsIT09aSYmaS5sZW5ndGgmJmk9PT10LnRvU3RyaW5nKCkmJnIucHVzaChuW29dKX1yZXR1cm4gcn0obyx2KHQpKTtpZigwPG4ubGVuZ3RoKXt2YXIgcj1vLmRvbS5jcmVhdGVSbmcoKTtyZXR1cm4gci5zZXRTdGFydEJlZm9yZShuWzBdKSxyLnNldEVuZEFmdGVyKG5bbi5sZW5ndGgtMV0pLG8uc2VsZWN0aW9uLnNldFJuZyhyKSxJKG8saSxhLGMscyxsLHQuZ2V0QXR0cmlidXRlKCJkYXRhLW1jZS13b3JkIiksbil9fX0pfTshZnVuY3Rpb24gZSgpe3kuYWRkKCJzcGVsbGNoZWNrZXIiLGZ1bmN0aW9uKGUsdCl7aWYoITE9PSEoIS8oXnxbICxdKXRpbnltY2VzcGVsbGNoZWNrZXIoWywgXXwkKS8udGVzdChlLnNldHRpbmdzLnBsdWdpbnMpfHwheS5nZXQoInRpbnltY2VzcGVsbGNoZWNrZXIiKXx8KCJ1bmRlZmluZWQiIT10eXBlb2YgTi53aW5kb3cuY29uc29sZSYmTi53aW5kb3cuY29uc29sZS5sb2cmJk4ud2luZG93LmNvbnNvbGUubG9nKCJTcGVsbCBDaGVja2VyIFBybyBpcyBpbmNvbXBhdGlibGUgd2l0aCBTcGVsbCBDaGVja2VyIHBsdWdpbiEgUmVtb3ZlICdzcGVsbGNoZWNrZXInIGZyb20gdGhlICdwbHVnaW5zJyBvcHRpb24uIiksMCkpKXt2YXIgbj1rKCExKSxyPWsoKHg9KHY9ZSkuZ2V0UGFyYW0oImxhbmd1YWdlIiwiZW4iKSx2LmdldFBhcmFtKCJzcGVsbGNoZWNrZXJfbGFuZ3VhZ2UiLHgpKSksbz1rKG51bGwpLGk9ayhudWxsKTtyZXR1cm4gQihlLHQsbixvLHIsaSksUChlLHQsaSxuLG8sciksZj10LGc9bixoPW8scD1pLG09ciwoZD1lKS5hZGRDb21tYW5kKCJtY2VTcGVsbENoZWNrIixmdW5jdGlvbigpe3coZCxmLGcsaCxwLG0pfSksYT1lLGM9bixzPWksbD1vLHU9cix7Z2V0VGV4dE1hdGNoZXI6ZnVuY3Rpb24oKXtyZXR1cm4gbC5nZXQoKX0sZ2V0V29yZENoYXJQYXR0ZXJuOmZ1bmN0aW9uKCl7cmV0dXJuIFMoYSl9LG1hcmtFcnJvcnM6ZnVuY3Rpb24oZSl7YihhLGMsbCxzLGUpfSxnZXRMYW5ndWFnZTpmdW5jdGlvbigpe3JldHVybiB1LmdldCgpfX19dmFyIGEsYyxzLGwsdSxkLGYsZyxoLHAsbSx2LHh9KX0oKX0od2luZG93KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/tabfocus/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/tabfocus/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24ocyl7InVzZSBzdHJpY3QiO3ZhciBlPXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLlBsdWdpbk1hbmFnZXIiKSx0PXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLmRvbS5ET01VdGlscyIpLGE9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuRWRpdG9yTWFuYWdlciIpLHk9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuRW52IiksZj10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS51dGlsLkRlbGF5IiksZD10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS51dGlsLlRvb2xzIiksbT10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS51dGlsLlZLIiksdj10LkRPTSxuPWZ1bmN0aW9uKGUpe2Uua2V5Q29kZSE9PW0uVEFCfHxlLmN0cmxLZXl8fGUuYWx0S2V5fHxlLm1ldGFLZXl8fGUucHJldmVudERlZmF1bHQoKX0saT1mdW5jdGlvbihjKXtmdW5jdGlvbiBlKG4pe3ZhciBpLG8sZSxsLHQ7aWYoIShuLmtleUNvZGUhPT1tLlRBQnx8bi5jdHJsS2V5fHxuLmFsdEtleXx8bi5tZXRhS2V5fHxuLmlzRGVmYXVsdFByZXZlbnRlZCgpKSYmKDE9PT0oZT1kLmV4cGxvZGUoKHQ9YykuZ2V0UGFyYW0oInRhYl9mb2N1cyIsdC5nZXRQYXJhbSgidGFiZm9jdXNfZWxlbWVudHMiLCI6cHJldiw6bmV4dCIpKSkpLmxlbmd0aCYmKGVbMV09ZVswXSxlWzBdPSI6cHJldiIpLG89bi5zaGlmdEtleT8iOnByZXYiPT09ZVswXT9yKC0xKTp2LmdldChlWzBdKToiOm5leHQiPT09ZVsxXT9yKDEpOnYuZ2V0KGVbMV0pKSl7dmFyIHU9YS5nZXQoby5pZHx8by5uYW1lKTtvLmlkJiZ1P3UuZm9jdXMoKTpmLnNldFRpbWVvdXQoZnVuY3Rpb24oKXt5LndlYmtpdHx8cy53aW5kb3cuZm9jdXMoKSxvLmZvY3VzKCl9LDEwKSxuLnByZXZlbnREZWZhdWx0KCl9ZnVuY3Rpb24gcihlKXtmdW5jdGlvbiB0KGUpe3JldHVybi9JTlBVVHxURVhUQVJFQXxCVVRUT04vLnRlc3QoZS50YWdOYW1lKSYmYS5nZXQobi5pZCkmJi0xIT09ZS50YWJJbmRleCYmZnVuY3Rpb24gdChlKXtyZXR1cm4iQk9EWSI9PT1lLm5vZGVOYW1lfHwiaGlkZGVuIiE9PWUudHlwZSYmIm5vbmUiIT09ZS5zdHlsZS5kaXNwbGF5JiYiaGlkZGVuIiE9PWUuc3R5bGUudmlzaWJpbGl0eSYmdChlLnBhcmVudE5vZGUpfShlKX1pZihvPXYuc2VsZWN0KCI6aW5wdXQ6ZW5hYmxlZCwqW3RhYmluZGV4XTpub3QoaWZyYW1lKSIpLGQuZWFjaChvLGZ1bmN0aW9uKGUsdCl7aWYoZS5pZD09PWMuaWQpcmV0dXJuIGk9dCwhMX0pLDA8ZSl7Zm9yKGw9aSsxO2w8by5sZW5ndGg7bCsrKWlmKHQob1tsXSkpcmV0dXJuIG9bbF19ZWxzZSBmb3IobD1pLTE7MDw9bDtsLS0paWYodChvW2xdKSlyZXR1cm4gb1tsXTtyZXR1cm4gbnVsbH19Yy5vbigiaW5pdCIsZnVuY3Rpb24oKXtjLmlubGluZSYmdi5zZXRBdHRyaWIoYy5nZXRCb2R5KCksInRhYkluZGV4IixudWxsKSxjLm9uKCJrZXl1cCIsbikseS5nZWNrbz9jLm9uKCJrZXlwcmVzcyBrZXlkb3duIixlKTpjLm9uKCJrZXlkb3duIixlKX0pfTshZnVuY3Rpb24gbygpe2UuYWRkKCJ0YWJmb2N1cyIsZnVuY3Rpb24oZSl7aShlKX0pfSgpfSh3aW5kb3cpOw==]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/table/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/table/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24ocCl7InVzZSBzdHJpY3QiO3ZhciBTPWZ1bmN0aW9uKGUpe3ZhciBuPWU7cmV0dXJue2dldDpmdW5jdGlvbigpe3JldHVybiBufSxzZXQ6ZnVuY3Rpb24oZSl7bj1lfX19LHg9ZnVuY3Rpb24oKXt9LGI9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGV9fSxvPWZ1bmN0aW9uKGUpe3JldHVybiBlfTtmdW5jdGlvbiB5KHIpe2Zvcih2YXIgbz1bXSxlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKylvW2UtMV09YXJndW1lbnRzW2VdO3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgZT1bXSxuPTA7bjxhcmd1bWVudHMubGVuZ3RoO24rKyllW25dPWFyZ3VtZW50c1tuXTt2YXIgdD1vLmNvbmNhdChlKTtyZXR1cm4gci5hcHBseShudWxsLHQpfX12YXIgZSxuLHQscixhPWZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4hbihlKX19LGY9YighMSksaT1iKCEwKSx1PWZ1bmN0aW9uKCl7cmV0dXJuIGN9LGM9KGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuaXNOb25lKCl9LHtmb2xkOmZ1bmN0aW9uKGUsbil7cmV0dXJuIGUoKX0saXM6Zixpc1NvbWU6Zixpc05vbmU6aSxnZXRPcjp0PWZ1bmN0aW9uKGUpe3JldHVybiBlfSxnZXRPclRodW5rOm49ZnVuY3Rpb24oZSl7cmV0dXJuIGUoKX0sZ2V0T3JEaWU6ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKGV8fCJlcnJvcjogZ2V0T3JEaWUgY2FsbGVkIG9uIG5vbmUuIil9LGdldE9yTnVsbDpiKG51bGwpLGdldE9yVW5kZWZpbmVkOmIodW5kZWZpbmVkKSxvcjp0LG9yVGh1bms6bixtYXA6dSxlYWNoOngsYmluZDp1LGV4aXN0czpmLGZvcmFsbDppLGZpbHRlcjp1LGVxdWFsczplLGVxdWFsc186ZSx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuW119LHRvU3RyaW5nOmIoIm5vbmUoKSIpfSksbD1mdW5jdGlvbih0KXt2YXIgZT1iKHQpLG49ZnVuY3Rpb24oKXtyZXR1cm4gb30scj1mdW5jdGlvbihlKXtyZXR1cm4gZSh0KX0sbz17Zm9sZDpmdW5jdGlvbihlLG4pe3JldHVybiBuKHQpfSxpczpmdW5jdGlvbihlKXtyZXR1cm4gdD09PWV9LGlzU29tZTppLGlzTm9uZTpmLGdldE9yOmUsZ2V0T3JUaHVuazplLGdldE9yRGllOmUsZ2V0T3JOdWxsOmUsZ2V0T3JVbmRlZmluZWQ6ZSxvcjpuLG9yVGh1bms6bixtYXA6ZnVuY3Rpb24oZSl7cmV0dXJuIGwoZSh0KSl9LGVhY2g6ZnVuY3Rpb24oZSl7ZSh0KX0sYmluZDpyLGV4aXN0czpyLGZvcmFsbDpyLGZpbHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gZSh0KT9vOmN9LHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm5bdF19LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuInNvbWUoIit0KyIpIn0sZXF1YWxzOmZ1bmN0aW9uKGUpe3JldHVybiBlLmlzKHQpfSxlcXVhbHNfOmZ1bmN0aW9uKGUsbil7cmV0dXJuIGUuZm9sZChmLGZ1bmN0aW9uKGUpe3JldHVybiBuKHQsZSl9KX19O3JldHVybiBvfSxDPXtzb21lOmwsbm9uZTp1LGZyb206ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PT1lfHxlPT09dW5kZWZpbmVkP2M6bChlKX19LHM9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuUGx1Z2luTWFuYWdlciIpLGQ9ZnVuY3Rpb24ocil7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0PXR5cGVvZihuPWUpLChudWxsPT09bj8ibnVsbCI6Im9iamVjdCI9PXQmJihBcnJheS5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihuKXx8bi5jb25zdHJ1Y3RvciYmIkFycmF5Ij09PW4uY29uc3RydWN0b3IubmFtZSk/ImFycmF5Ijoib2JqZWN0Ij09dCYmKFN0cmluZy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihuKXx8bi5jb25zdHJ1Y3RvciYmIlN0cmluZyI9PT1uLmNvbnN0cnVjdG9yLm5hbWUpPyJzdHJpbmciOnQpPT09cjt2YXIgbix0fX0sbT1mdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlPT09bn19LGc9ZCgic3RyaW5nIiksaD1kKCJhcnJheSIpLHY9bSgiYm9vbGVhbiIpLHc9bSgiZnVuY3Rpb24iKSxSPW0oIm51bWJlciIpLFQ9QXJyYXkucHJvdG90eXBlLnNsaWNlLE89QXJyYXkucHJvdG90eXBlLmluZGV4T2YsRD1BcnJheS5wcm90b3R5cGUucHVzaCxBPWZ1bmN0aW9uKGUsbil7cmV0dXJuIHQ9ZSxyPW4sLTE8Ty5jYWxsKHQscik7dmFyIHQscn0sRT1mdW5jdGlvbihlLG4pe2Zvcih2YXIgdD0wLHI9ZS5sZW5ndGg7dDxyO3QrKyl7aWYobihlW3RdLHQpKXJldHVybiEwfXJldHVybiExfSxrPWZ1bmN0aW9uKGUsbil7Zm9yKHZhciB0PWUubGVuZ3RoLHI9bmV3IEFycmF5KHQpLG89MDtvPHQ7bysrKXt2YXIgaT1lW29dO3Jbb109bihpLG8pfXJldHVybiByfSxCPWZ1bmN0aW9uKGUsbil7Zm9yKHZhciB0PTAscj1lLmxlbmd0aDt0PHI7dCsrKXtuKGVbdF0sdCl9fSxOPWZ1bmN0aW9uKGUsbil7Zm9yKHZhciB0PVtdLHI9MCxvPWUubGVuZ3RoO3I8bztyKyspe3ZhciBpPWVbcl07bihpLHIpJiZ0LnB1c2goaSl9cmV0dXJuIHR9LEk9ZnVuY3Rpb24oZSxuLHQpe3JldHVybiBmdW5jdGlvbihlLG4pe2Zvcih2YXIgdD1lLmxlbmd0aC0xOzA8PXQ7dC0tKXtuKGVbdF0sdCl9fShlLGZ1bmN0aW9uKGUpe3Q9bih0LGUpfSksdH0sUD1mdW5jdGlvbihlLG4sdCl7cmV0dXJuIEIoZSxmdW5jdGlvbihlKXt0PW4odCxlKX0pLHR9LE09ZnVuY3Rpb24oZSxuKXtyZXR1cm4gZnVuY3Rpb24oZSxuLHQpe2Zvcih2YXIgcj0wLG89ZS5sZW5ndGg7cjxvO3IrKyl7dmFyIGk9ZVtyXTtpZihuKGkscikpcmV0dXJuIEMuc29tZShpKTtpZih0KGkscikpYnJlYWt9cmV0dXJuIEMubm9uZSgpfShlLG4sZil9LF89ZnVuY3Rpb24oZSxuKXtmb3IodmFyIHQ9MCxyPWUubGVuZ3RoO3Q8cjt0Kyspe2lmKG4oZVt0XSx0KSlyZXR1cm4gQy5zb21lKHQpfXJldHVybiBDLm5vbmUoKX0sVz1mdW5jdGlvbihlKXtmb3IodmFyIG49W10sdD0wLHI9ZS5sZW5ndGg7dDxyOysrdCl7aWYoIWgoZVt0XSkpdGhyb3cgbmV3IEVycm9yKCJBcnIuZmxhdHRlbiBpdGVtICIrdCsiIHdhcyBub3QgYW4gYXJyYXksIGlucHV0OiAiK2UpO0QuYXBwbHkobixlW3RdKX1yZXR1cm4gbn0saj1mdW5jdGlvbihlLG4pe3JldHVybiBXKGsoZSxuKSl9LHo9ZnVuY3Rpb24oZSxuKXtmb3IodmFyIHQ9MCxyPWUubGVuZ3RoO3Q8cjsrK3Qpe2lmKCEwIT09bihlW3RdLHQpKXJldHVybiExfXJldHVybiEwfSxMPWZ1bmN0aW9uKGUsbil7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0Kyspe3ZhciByPW4oZVt0XSx0KTtpZihyLmlzU29tZSgpKXJldHVybiByfXJldHVybiBDLm5vbmUoKX0sRj1PYmplY3Qua2V5cyxIPU9iamVjdC5oYXNPd25Qcm9wZXJ0eSxxPWZ1bmN0aW9uKGUsbil7Zm9yKHZhciB0PUYoZSkscj0wLG89dC5sZW5ndGg7cjxvO3IrKyl7dmFyIGk9dFtyXTtuKGVbaV0saSl9fSxVPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIFYoZSxmdW5jdGlvbihlLG4pe3JldHVybntrOm4sdjp0KGUsbil9fSl9LFY9ZnVuY3Rpb24oZSxyKXt2YXIgbz17fTtyZXR1cm4gcShlLGZ1bmN0aW9uKGUsbil7dmFyIHQ9cihlLG4pO29bdC5rXT10LnZ9KSxvfSxLPWZ1bmN0aW9uKGUsbil7cmV0dXJuIFgoZSxuKT9DLmZyb20oZVtuXSk6Qy5ub25lKCl9LFg9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gSC5jYWxsKGUsbil9LCQ9KCJ1bmRlZmluZWQiIT10eXBlb2YgcC53aW5kb3c/cC53aW5kb3c6RnVuY3Rpb24oInJldHVybiB0aGlzOyIpKCksZnVuY3Rpb24oZSl7cmV0dXJuIGUuZG9tKCkubm9kZU5hbWUudG9Mb3dlckNhc2UoKX0pLEc9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZG9tKCkubm9kZVR5cGV9LFk9ZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBHKGUpPT09bn19LEo9ZnVuY3Rpb24oZSl7cmV0dXJuIDg9PT1HKGUpfHwiI2NvbW1lbnQiPT09JChlKX0sUT1ZKDEpLFo9WSgzKSxlZT1mdW5jdGlvbihlLG4sdCl7aWYoIShnKHQpfHx2KHQpfHxSKHQpKSl0aHJvdyBwLmNvbnNvbGUuZXJyb3IoIkludmFsaWQgY2FsbCB0byBBdHRyLnNldC4gS2V5ICIsbiwiOjogVmFsdWUgIix0LCI6OiBFbGVtZW50ICIsZSksbmV3IEVycm9yKCJBdHRyaWJ1dGUgdmFsdWUgd2FzIG5vdCBzaW1wbGUiKTtlLnNldEF0dHJpYnV0ZShuLHQrIiIpfSxuZT1mdW5jdGlvbihlLG4sdCl7ZWUoZS5kb20oKSxuLHQpfSx0ZT1mdW5jdGlvbihlLG4pe3ZhciB0PWUuZG9tKCk7cShuLGZ1bmN0aW9uKGUsbil7ZWUodCxuLGUpfSl9LHJlPWZ1bmN0aW9uKGUsbil7dmFyIHQ9ZS5kb20oKS5nZXRBdHRyaWJ1dGUobik7cmV0dXJuIG51bGw9PT10P3VuZGVmaW5lZDp0fSxvZT1mdW5jdGlvbihlLG4pe3JldHVybiBDLmZyb20ocmUoZSxuKSl9LGllPWZ1bmN0aW9uKGUsbil7dmFyIHQ9ZS5kb20oKTtyZXR1cm4hKCF0fHwhdC5oYXNBdHRyaWJ1dGUpJiZ0Lmhhc0F0dHJpYnV0ZShuKX0sdWU9ZnVuY3Rpb24oZSxuKXtlLmRvbSgpLnJlbW92ZUF0dHJpYnV0ZShuKX0sY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIFAoZS5kb20oKS5hdHRyaWJ1dGVzLGZ1bmN0aW9uKGUsbil7cmV0dXJuIGVbbi5uYW1lXT1uLnZhbHVlLGV9LHt9KX0sYWU9ZnVuY3Rpb24oZSxuLHQpe3JldHVybiIiPT09bnx8ZS5sZW5ndGg+PW4ubGVuZ3RoJiZlLnN1YnN0cih0LHQrbi5sZW5ndGgpPT09bn0sbGU9ZnVuY3Rpb24oZSxuKXtyZXR1cm4tMSE9PWUuaW5kZXhPZihuKX0sZmU9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gYWUoZSxuLDApfSxzZT0ocj0vXlxzK3xccyskL2csZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZShyLCIiKX0pLGRlPWZ1bmN0aW9uKGUpe3JldHVybiBlLnN0eWxlIT09dW5kZWZpbmVkJiZ3KGUuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSl9LG1lPWZ1bmN0aW9uKGUpe2lmKG51bGw9PT1lfHxlPT09dW5kZWZpbmVkKXRocm93IG5ldyBFcnJvcigiTm9kZSBjYW5ub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTtyZXR1cm57ZG9tOmIoZSl9fSxnZT17ZnJvbUh0bWw6ZnVuY3Rpb24oZSxuKXt2YXIgdD0obnx8cC5kb2N1bWVudCkuY3JlYXRlRWxlbWVudCgiZGl2Iik7aWYodC5pbm5lckhUTUw9ZSwhdC5oYXNDaGlsZE5vZGVzKCl8fDE8dC5jaGlsZE5vZGVzLmxlbmd0aCl0aHJvdyBwLmNvbnNvbGUuZXJyb3IoIkhUTUwgZG9lcyBub3QgaGF2ZSBhIHNpbmdsZSByb290IG5vZGUiLGUpLG5ldyBFcnJvcigiSFRNTCBtdXN0IGhhdmUgYSBzaW5nbGUgcm9vdCBub2RlIik7cmV0dXJuIG1lKHQuY2hpbGROb2Rlc1swXSl9LGZyb21UYWc6ZnVuY3Rpb24oZSxuKXt2YXIgdD0obnx8cC5kb2N1bWVudCkuY3JlYXRlRWxlbWVudChlKTtyZXR1cm4gbWUodCl9LGZyb21UZXh0OmZ1bmN0aW9uKGUsbil7dmFyIHQ9KG58fHAuZG9jdW1lbnQpLmNyZWF0ZVRleHROb2RlKGUpO3JldHVybiBtZSh0KX0sZnJvbURvbTptZSxmcm9tUG9pbnQ6ZnVuY3Rpb24oZSxuLHQpe3ZhciByPWUuZG9tKCk7cmV0dXJuIEMuZnJvbShyLmVsZW1lbnRGcm9tUG9pbnQobix0KSkubWFwKG1lKX19LHBlPWZ1bmN0aW9uKGUpe3ZhciBuPVooZSk/ZS5kb20oKS5wYXJlbnROb2RlOmUuZG9tKCk7cmV0dXJuIG4hPT11bmRlZmluZWQmJm51bGwhPT1uJiZuLm93bmVyRG9jdW1lbnQuYm9keS5jb250YWlucyhuKX0saGU9ZnVuY3Rpb24oZSl7dmFyIG49ZS5kb20oKS5ib2R5O2lmKG51bGw9PT1ufHxuPT09dW5kZWZpbmVkKXRocm93IG5ldyBFcnJvcigiQm9keSBpcyBub3QgYXZhaWxhYmxlIHlldCIpO3JldHVybiBnZS5mcm9tRG9tKG4pfSx2ZT1mdW5jdGlvbihlLG4sdCl7aWYoIWcodCkpdGhyb3cgcC5jb25zb2xlLmVycm9yKCJJbnZhbGlkIGNhbGwgdG8gQ1NTLnNldC4gUHJvcGVydHkgIixuLCI6OiBWYWx1ZSAiLHQsIjo6IEVsZW1lbnQgIixlKSxuZXcgRXJyb3IoIkNTUyB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nOiAiK3QpO2RlKGUpJiZlLnN0eWxlLnNldFByb3BlcnR5KG4sdCl9LGJlPWZ1bmN0aW9uKGUsbix0KXt2YXIgcj1lLmRvbSgpO3ZlKHIsbix0KX0sd2U9ZnVuY3Rpb24oZSxuKXt2YXIgdD1lLmRvbSgpO3EobixmdW5jdGlvbihlLG4pe3ZlKHQsbixlKX0pfSx5ZT1mdW5jdGlvbihlLG4pe3ZhciB0PWUuZG9tKCkscj1wLndpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpLmdldFByb3BlcnR5VmFsdWUobik7cmV0dXJuIiIhPT1yfHxwZShlKT9yOlNlKHQsbil9LFNlPWZ1bmN0aW9uKGUsbil7cmV0dXJuIGRlKGUpP2Uuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShuKToiIn0seGU9ZnVuY3Rpb24oZSxuKXt2YXIgdD1lLmRvbSgpLHI9U2UodCxuKTtyZXR1cm4gQy5mcm9tKHIpLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gMDxlLmxlbmd0aH0pfSxDZT1mdW5jdGlvbihlLG4pe3ZhciB0LHIsbz1lLmRvbSgpO3I9bixkZSh0PW8pJiZ0LnN0eWxlLnJlbW92ZVByb3BlcnR5KHIpLG9lKGUsInN0eWxlIikubWFwKHNlKS5pcygiIikmJnVlKGUsInN0eWxlIil9LFJlPWZ1bmN0aW9uKCl7cmV0dXJuKFJlPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgbix0PTEscj1hcmd1bWVudHMubGVuZ3RoO3Q8cjt0KyspZm9yKHZhciBvIGluIG49YXJndW1lbnRzW3RdKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLG8pJiYoZVtvXT1uW29dKTtyZXR1cm4gZX0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sVGU9ZnVuY3Rpb24odCl7dmFyIHIsbz0hMTtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIGU9W10sbj0wO248YXJndW1lbnRzLmxlbmd0aDtuKyspZVtuXT1hcmd1bWVudHNbbl07cmV0dXJuIG98fChvPSEwLHI9dC5hcHBseShudWxsLGUpKSxyfX0sT2U9ZnVuY3Rpb24oZSxuKXt2YXIgdD1mdW5jdGlvbihlLG4pe2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKXt2YXIgcj1lW3RdO2lmKHIudGVzdChuKSlyZXR1cm4gcn1yZXR1cm4gdW5kZWZpbmVkfShlLG4pO2lmKCF0KXJldHVybnttYWpvcjowLG1pbm9yOjB9O3ZhciByPWZ1bmN0aW9uKGUpe3JldHVybiBOdW1iZXIobi5yZXBsYWNlKHQsIiQiK2UpKX07cmV0dXJuIEFlKHIoMSkscigyKSl9LERlPWZ1bmN0aW9uKCl7cmV0dXJuIEFlKDAsMCl9LEFlPWZ1bmN0aW9uKGUsbil7cmV0dXJue21ham9yOmUsbWlub3I6bn19LEVlPXtudTpBZSxkZXRlY3Q6ZnVuY3Rpb24oZSxuKXt2YXIgdD1TdHJpbmcobikudG9Mb3dlckNhc2UoKTtyZXR1cm4gMD09PWUubGVuZ3RoP0RlKCk6T2UoZSx0KX0sdW5rbm93bjpEZX0sa2U9IkZpcmVmb3giLEJlPWZ1bmN0aW9uKGUpe3ZhciBuPWUuY3VycmVudCx0PWUudmVyc2lvbixyPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBuPT09ZX19O3JldHVybntjdXJyZW50Om4sdmVyc2lvbjp0LGlzRWRnZTpyKCJFZGdlIiksaXNDaHJvbWU6cigiQ2hyb21lIiksaXNJRTpyKCJJRSIpLGlzT3BlcmE6cigiT3BlcmEiKSxpc0ZpcmVmb3g6cihrZSksaXNTYWZhcmk6cigiU2FmYXJpIil9fSxOZT17dW5rbm93bjpmdW5jdGlvbigpe3JldHVybiBCZSh7Y3VycmVudDp1bmRlZmluZWQsdmVyc2lvbjpFZS51bmtub3duKCl9KX0sbnU6QmUsZWRnZTpiKCJFZGdlIiksY2hyb21lOmIoIkNocm9tZSIpLGllOmIoIklFIiksb3BlcmE6YigiT3BlcmEiKSxmaXJlZm94OmIoa2UpLHNhZmFyaTpiKCJTYWZhcmkiKX0sSWU9IldpbmRvd3MiLFBlPSJBbmRyb2lkIixNZT0iU29sYXJpcyIsX2U9IkZyZWVCU0QiLFdlPSJDaHJvbWVPUyIsamU9ZnVuY3Rpb24oZSl7dmFyIG49ZS5jdXJyZW50LHQ9ZS52ZXJzaW9uLHI9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG49PT1lfX07cmV0dXJue2N1cnJlbnQ6bix2ZXJzaW9uOnQsaXNXaW5kb3dzOnIoSWUpLGlzaU9TOnIoImlPUyIpLGlzQW5kcm9pZDpyKFBlKSxpc09TWDpyKCJPU1giKSxpc0xpbnV4OnIoIkxpbnV4IiksaXNTb2xhcmlzOnIoTWUpLGlzRnJlZUJTRDpyKF9lKSxpc0Nocm9tZU9TOnIoV2UpfX0semU9e3Vua25vd246ZnVuY3Rpb24oKXtyZXR1cm4gamUoe2N1cnJlbnQ6dW5kZWZpbmVkLHZlcnNpb246RWUudW5rbm93bigpfSl9LG51OmplLHdpbmRvd3M6YihJZSksaW9zOmIoImlPUyIpLGFuZHJvaWQ6YihQZSksbGludXg6YigiTGludXgiKSxvc3g6YigiT1NYIiksc29sYXJpczpiKE1lKSxmcmVlYnNkOmIoX2UpLGNocm9tZW9zOmIoV2UpfSxMZT1mdW5jdGlvbihlLG4pe3ZhciB0PVN0cmluZyhuKS50b0xvd2VyQ2FzZSgpO3JldHVybiBNKGUsZnVuY3Rpb24oZSl7cmV0dXJuIGUuc2VhcmNoKHQpfSl9LEZlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIExlKGUsdCkubWFwKGZ1bmN0aW9uKGUpe3ZhciBuPUVlLmRldGVjdChlLnZlcnNpb25SZWdleGVzLHQpO3JldHVybntjdXJyZW50OmUubmFtZSx2ZXJzaW9uOm59fSl9LEhlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIExlKGUsdCkubWFwKGZ1bmN0aW9uKGUpe3ZhciBuPUVlLmRldGVjdChlLnZlcnNpb25SZWdleGVzLHQpO3JldHVybntjdXJyZW50OmUubmFtZSx2ZXJzaW9uOm59fSl9LHFlPS8uKj92ZXJzaW9uXC9cID8oWzAtOV0rKVwuKFswLTldKykuKi8sVWU9ZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBsZShlLG4pfX0sVmU9W3tuYW1lOiJFZGdlIix2ZXJzaW9uUmVnZXhlczpbLy4qP2VkZ2VcLyA/KFswLTldKylcLihbMC05XSspJC9dLHNlYXJjaDpmdW5jdGlvbihlKXtyZXR1cm4gbGUoZSwiZWRnZS8iKSYmbGUoZSwiY2hyb21lIikmJmxlKGUsInNhZmFyaSIpJiZsZShlLCJhcHBsZXdlYmtpdCIpfX0se25hbWU6IkNocm9tZSIsdmVyc2lvblJlZ2V4ZXM6Wy8uKj9jaHJvbWVcLyhbMC05XSspXC4oWzAtOV0rKS4qLyxxZV0sc2VhcmNoOmZ1bmN0aW9uKGUpe3JldHVybiBsZShlLCJjaHJvbWUiKSYmIWxlKGUsImNocm9tZWZyYW1lIil9fSx7bmFtZToiSUUiLHZlcnNpb25SZWdleGVzOlsvLio/bXNpZVwgPyhbMC05XSspXC4oWzAtOV0rKS4qLywvLio/cnY6KFswLTldKylcLihbMC05XSspLiovXSxzZWFyY2g6ZnVuY3Rpb24oZSl7cmV0dXJuIGxlKGUsIm1zaWUiKXx8bGUoZSwidHJpZGVudCIpfX0se25hbWU6Ik9wZXJhIix2ZXJzaW9uUmVnZXhlczpbcWUsLy4qP29wZXJhXC8oWzAtOV0rKVwuKFswLTldKykuKi9dLHNlYXJjaDpVZSgib3BlcmEiKX0se25hbWU6IkZpcmVmb3giLHZlcnNpb25SZWdleGVzOlsvLio/ZmlyZWZveFwvXCA/KFswLTldKylcLihbMC05XSspLiovXSxzZWFyY2g6VWUoImZpcmVmb3giKX0se25hbWU6IlNhZmFyaSIsdmVyc2lvblJlZ2V4ZXM6W3FlLC8uKj9jcHUgb3MgKFswLTldKylfKFswLTldKykuKi9dLHNlYXJjaDpmdW5jdGlvbihlKXtyZXR1cm4obGUoZSwic2FmYXJpIil8fGxlKGUsIm1vYmlsZS8iKSkmJmxlKGUsImFwcGxld2Via2l0Iil9fV0sS2U9W3tuYW1lOiJXaW5kb3dzIixzZWFyY2g6VWUoIndpbiIpLHZlcnNpb25SZWdleGVzOlsvLio/d2luZG93c1wgbnRcID8oWzAtOV0rKVwuKFswLTldKykuKi9dfSx7bmFtZToiaU9TIixzZWFyY2g6ZnVuY3Rpb24oZSl7cmV0dXJuIGxlKGUsImlwaG9uZSIpfHxsZShlLCJpcGFkIil9LHZlcnNpb25SZWdleGVzOlsvLio/dmVyc2lvblwvXCA/KFswLTldKylcLihbMC05XSspLiovLC8uKmNwdSBvcyAoWzAtOV0rKV8oWzAtOV0rKS4qLywvLipjcHUgaXBob25lIG9zIChbMC05XSspXyhbMC05XSspLiovXX0se25hbWU6IkFuZHJvaWQiLHNlYXJjaDpVZSgiYW5kcm9pZCIpLHZlcnNpb25SZWdleGVzOlsvLio/YW5kcm9pZFwgPyhbMC05XSspXC4oWzAtOV0rKS4qL119LHtuYW1lOiJPU1giLHNlYXJjaDpVZSgibWFjIG9zIHgiKSx2ZXJzaW9uUmVnZXhlczpbLy4qP21hY1wgb3NcIHhcID8oWzAtOV0rKV8oWzAtOV0rKS4qL119LHtuYW1lOiJMaW51eCIsc2VhcmNoOlVlKCJsaW51eCIpLHZlcnNpb25SZWdleGVzOltdfSx7bmFtZToiU29sYXJpcyIsc2VhcmNoOlVlKCJzdW5vcyIpLHZlcnNpb25SZWdleGVzOltdfSx7bmFtZToiRnJlZUJTRCIsc2VhcmNoOlVlKCJmcmVlYnNkIiksdmVyc2lvblJlZ2V4ZXM6W119LHtuYW1lOiJDaHJvbWVPUyIsc2VhcmNoOlVlKCJjcm9zIiksdmVyc2lvblJlZ2V4ZXM6Wy8uKj9jaHJvbWVcLyhbMC05XSspXC4oWzAtOV0rKS4qL119XSxYZT17YnJvd3NlcnM6YihWZSksb3NlczpiKEtlKX0sJGU9ZnVuY3Rpb24oZSxuKXt2YXIgdCxyLG8saSx1LGMsYSxsLGYscyxkLG0sZz1YZS5icm93c2VycygpLHA9WGUub3NlcygpLGg9RmUoZyxlKS5mb2xkKE5lLnVua25vd24sTmUubnUpLHY9SGUocCxlKS5mb2xkKHplLnVua25vd24semUubnUpO3JldHVybnticm93c2VyOmgsb3M6dixkZXZpY2VUeXBlOihyPWgsbz1lLGk9bix1PSh0PXYpLmlzaU9TKCkmJiEwPT09L2lwYWQvaS50ZXN0KG8pLGM9dC5pc2lPUygpJiYhdSxhPXQuaXNpT1MoKXx8dC5pc0FuZHJvaWQoKSxsPWF8fGkoIihwb2ludGVyOmNvYXJzZSkiKSxmPXV8fCFjJiZhJiZpKCIobWluLWRldmljZS13aWR0aDo3NjhweCkiKSxzPWN8fGEmJiFmLGQ9ci5pc1NhZmFyaSgpJiZ0LmlzaU9TKCkmJiExPT09L3NhZmFyaS9pLnRlc3QobyksbT0hcyYmIWYmJiFkLHtpc2lQYWQ6Yih1KSxpc2lQaG9uZTpiKGMpLGlzVGFibGV0OmIoZiksaXNQaG9uZTpiKHMpLGlzVG91Y2g6YihsKSxpc0FuZHJvaWQ6dC5pc0FuZHJvaWQsaXNpT1M6dC5pc2lPUyxpc1dlYlZpZXc6YihkKSxpc0Rlc2t0b3A6YihtKX0pfX0sR2U9ZnVuY3Rpb24oZSl7cmV0dXJuIHAud2luZG93Lm1hdGNoTWVkaWEoZSkubWF0Y2hlc30sWWU9VGUoZnVuY3Rpb24oKXtyZXR1cm4gJGUocC5uYXZpZ2F0b3IudXNlckFnZW50LEdlKX0pLEplPWZ1bmN0aW9uKCl7cmV0dXJuIFllKCl9LFFlPWZ1bmN0aW9uKGUsbil7dmFyIHQ9ZS5kb20oKTtpZigxIT09dC5ub2RlVHlwZSlyZXR1cm4hMTt2YXIgcj10O2lmKHIubWF0Y2hlcyE9PXVuZGVmaW5lZClyZXR1cm4gci5tYXRjaGVzKG4pO2lmKHIubXNNYXRjaGVzU2VsZWN0b3IhPT11bmRlZmluZWQpcmV0dXJuIHIubXNNYXRjaGVzU2VsZWN0b3Iobik7aWYoci53ZWJraXRNYXRjaGVzU2VsZWN0b3IhPT11bmRlZmluZWQpcmV0dXJuIHIud2Via2l0TWF0Y2hlc1NlbGVjdG9yKG4pO2lmKHIubW96TWF0Y2hlc1NlbGVjdG9yIT09dW5kZWZpbmVkKXJldHVybiByLm1vek1hdGNoZXNTZWxlY3RvcihuKTt0aHJvdyBuZXcgRXJyb3IoIkJyb3dzZXIgbGFja3MgbmF0aXZlIHNlbGVjdG9ycyIpfSxaZT1mdW5jdGlvbihlKXtyZXR1cm4gMSE9PWUubm9kZVR5cGUmJjkhPT1lLm5vZGVUeXBlfHwwPT09ZS5jaGlsZEVsZW1lbnRDb3VudH0sZW49ZnVuY3Rpb24oZSxuKXtyZXR1cm4gZS5kb20oKT09PW4uZG9tKCl9LG5uPWZ1bmN0aW9uKGUsbil7cmV0dXJuIHQ9ZS5kb20oKSxyPW4uZG9tKCksbz10LGk9cix1PXAuTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9DT05UQUlORURfQlksMCE9KG8uY29tcGFyZURvY3VtZW50UG9zaXRpb24oaSkmdSk7dmFyIHQscixvLGksdX0sdG49ZnVuY3Rpb24oZSxuKXtyZXR1cm4gSmUoKS5icm93c2VyLmlzSUUoKT9ubihlLG4pOih0PW4scj1lLmRvbSgpLG89dC5kb20oKSxyIT09byYmci5jb250YWlucyhvKSk7dmFyIHQscixvfSxybj1RZSxvbj1mdW5jdGlvbihlKXtyZXR1cm4gZ2UuZnJvbURvbShlLmRvbSgpLm93bmVyRG9jdW1lbnQpfSx1bj1mdW5jdGlvbihlKXtyZXR1cm4gQy5mcm9tKGUuZG9tKCkucGFyZW50Tm9kZSkubWFwKGdlLmZyb21Eb20pfSxjbj1mdW5jdGlvbihlLG4pe2Zvcih2YXIgdD13KG4pP246ZixyPWUuZG9tKCksbz1bXTtudWxsIT09ci5wYXJlbnROb2RlJiZyLnBhcmVudE5vZGUhPT11bmRlZmluZWQ7KXt2YXIgaT1yLnBhcmVudE5vZGUsdT1nZS5mcm9tRG9tKGkpO2lmKG8ucHVzaCh1KSwhMD09PXQodSkpYnJlYWs7cj1pfXJldHVybiBvfSxhbj1mdW5jdGlvbihlKXtyZXR1cm4gQy5mcm9tKGUuZG9tKCkucHJldmlvdXNTaWJsaW5nKS5tYXAoZ2UuZnJvbURvbSl9LGxuPWZ1bmN0aW9uKGUpe3JldHVybiBDLmZyb20oZS5kb20oKS5uZXh0U2libGluZykubWFwKGdlLmZyb21Eb20pfSxmbj1mdW5jdGlvbihlKXtyZXR1cm4gayhlLmRvbSgpLmNoaWxkTm9kZXMsZ2UuZnJvbURvbSl9LHNuPWZ1bmN0aW9uKGUsbil7dmFyIHQ9ZS5kb20oKS5jaGlsZE5vZGVzO3JldHVybiBDLmZyb20odFtuXSkubWFwKGdlLmZyb21Eb20pfSxkbj1mdW5jdGlvbihuLHQpe3VuKG4pLmVhY2goZnVuY3Rpb24oZSl7ZS5kb20oKS5pbnNlcnRCZWZvcmUodC5kb20oKSxuLmRvbSgpKX0pfSxtbj1mdW5jdGlvbihlLG4pe2xuKGUpLmZvbGQoZnVuY3Rpb24oKXt1bihlKS5lYWNoKGZ1bmN0aW9uKGUpe3BuKGUsbil9KX0sZnVuY3Rpb24oZSl7ZG4oZSxuKX0pfSxnbj1mdW5jdGlvbihuLHQpe3NuKG4sMCkuZm9sZChmdW5jdGlvbigpe3BuKG4sdCl9LGZ1bmN0aW9uKGUpe24uZG9tKCkuaW5zZXJ0QmVmb3JlKHQuZG9tKCksZS5kb20oKSl9KX0scG49ZnVuY3Rpb24oZSxuKXtlLmRvbSgpLmFwcGVuZENoaWxkKG4uZG9tKCkpfSxobj1mdW5jdGlvbihlLG4pe2RuKGUsbikscG4obixlKX0sdm49ZnVuY3Rpb24ocixvKXtCKG8sZnVuY3Rpb24oZSxuKXt2YXIgdD0wPT09bj9yOm9bbi0xXTttbih0LGUpfSl9LGJuPWZ1bmN0aW9uKG4sZSl7QihlLGZ1bmN0aW9uKGUpe3BuKG4sZSl9KX0sd249ZnVuY3Rpb24oZSl7ZS5kb20oKS50ZXh0Q29udGVudD0iIixCKGZuKGUpLGZ1bmN0aW9uKGUpe3luKGUpfSl9LHluPWZ1bmN0aW9uKGUpe3ZhciBuPWUuZG9tKCk7bnVsbCE9PW4ucGFyZW50Tm9kZSYmbi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG4pfSxTbj1mdW5jdGlvbihlKXt2YXIgbix0PWZuKGUpOzA8dC5sZW5ndGgmJihuPWUsQih0LGZ1bmN0aW9uKGUpe2RuKG4sZSl9KSkseW4oZSl9LHhuPWZ1bmN0aW9uKGUsbix0KXtyZXR1cm57ZWxlbWVudDpiKGUpLHJvd3NwYW46YihuKSxjb2xzcGFuOmIodCl9fSxDbj1mdW5jdGlvbihlLG4sdCl7cmV0dXJue2VsZW1lbnQ6YihlKSxjZWxsczpiKG4pLHNlY3Rpb246Yih0KX19LFJuPWZ1bmN0aW9uKGUsbil7cmV0dXJue2VsZW1lbnQ6YihlKSxpc05ldzpiKG4pfX0sVG49ZnVuY3Rpb24oZSxuKXtyZXR1cm57Y2VsbHM6YihlKSxzZWN0aW9uOmIobil9fSxPbj1mdW5jdGlvbihlLG4pe3ZhciB0PVtdO3JldHVybiBCKGZuKGUpLGZ1bmN0aW9uKGUpe24oZSkmJih0PXQuY29uY2F0KFtlXSkpLHQ9dC5jb25jYXQoT24oZSxuKSl9KSx0fSxEbj1mdW5jdGlvbihlLG4sdCl7cmV0dXJuIHI9ZnVuY3Rpb24oZSl7cmV0dXJuIFFlKGUsbil9LE4oY24oZSx0KSxyKTt2YXIgcn0sQW49ZnVuY3Rpb24oZSxuKXtyZXR1cm4gdD1mdW5jdGlvbihlKXtyZXR1cm4gUWUoZSxuKX0sTihmbihlKSx0KTt2YXIgdH0sRW49ZnVuY3Rpb24oZSxuKXtyZXR1cm4gdD1uLG89KHI9ZSk9PT11bmRlZmluZWQ/cC5kb2N1bWVudDpyLmRvbSgpLFplKG8pP1tdOmsoby5xdWVyeVNlbGVjdG9yQWxsKHQpLGdlLmZyb21Eb20pO3ZhciB0LHIsb307ZnVuY3Rpb24ga24oZSxuLHQscixvKXtyZXR1cm4gZSh0LHIpP0Muc29tZSh0KTp3KG8pJiZvKHQpP0Mubm9uZSgpOm4odCxyLG8pfXZhciBCbj1mdW5jdGlvbihlLG4sdCl7Zm9yKHZhciByPWUuZG9tKCksbz13KHQpP3Q6YighMSk7ci5wYXJlbnROb2RlOyl7cj1yLnBhcmVudE5vZGU7dmFyIGk9Z2UuZnJvbURvbShyKTtpZihuKGkpKXJldHVybiBDLnNvbWUoaSk7aWYobyhpKSlicmVha31yZXR1cm4gQy5ub25lKCl9LE5uPWZ1bmN0aW9uKGUsbix0KXtyZXR1cm4gQm4oZSxmdW5jdGlvbihlKXtyZXR1cm4gUWUoZSxuKX0sdCl9LEluPWZ1bmN0aW9uKGUsbil7cmV0dXJuIHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIFFlKGUsbil9LE0oZS5kb20oKS5jaGlsZE5vZGVzLGZ1bmN0aW9uKGUpe3JldHVybiB0KGdlLmZyb21Eb20oZSkpfSkubWFwKGdlLmZyb21Eb20pO3ZhciB0fSxQbj1mdW5jdGlvbihlLG4pe3JldHVybiB0PW4sbz0ocj1lKT09PXVuZGVmaW5lZD9wLmRvY3VtZW50OnIuZG9tKCksWmUobyk/Qy5ub25lKCk6Qy5mcm9tKG8ucXVlcnlTZWxlY3Rvcih0KSkubWFwKGdlLmZyb21Eb20pO3ZhciB0LHIsb30sTW49ZnVuY3Rpb24oZSxuLHQpe3JldHVybiBrbihmdW5jdGlvbihlLG4pe3JldHVybiBRZShlLG4pfSxObixlLG4sdCl9LF9uPWZ1bmN0aW9uKGUsbix0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9MCksb2UoZSxuKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHBhcnNlSW50KGUsMTApfSkuZ2V0T3IodCl9LFduPWZ1bmN0aW9uKGUsbil7cmV0dXJuIF9uKGUsbiwxKX0sam49ZnVuY3Rpb24oZSl7cmV0dXJuIDE8V24oZSwiY29sc3BhbiIpfSx6bj1mdW5jdGlvbihlKXtyZXR1cm4gMTxXbihlLCJyb3dzcGFuIil9LExuPWZ1bmN0aW9uKGUsbil7cmV0dXJuIHBhcnNlSW50KHllKGUsbiksMTApfSxGbj1iKDEwKSxIbj1iKDEwKSxxbj1mdW5jdGlvbihlLG4pe3JldHVybiBVbihlLG4sYighMCkpfSxVbj1mdW5jdGlvbihlLG4sdCl7cmV0dXJuIGooZm4oZSksZnVuY3Rpb24oZSl7cmV0dXJuIFFlKGUsbik/dChlKT9bZV06W106VW4oZSxuLHQpfSl9LFZuPWZ1bmN0aW9uKGUsbil7cmV0dXJuIGZ1bmN0aW9uKGUsbix0KXtpZih2b2lkIDA9PT10JiYodD1mKSx0KG4pKXJldHVybiBDLm5vbmUoKTtpZihBKGUsJChuKSkpcmV0dXJuIEMuc29tZShuKTtyZXR1cm4gTm4obixlLmpvaW4oIiwiKSxmdW5jdGlvbihlKXtyZXR1cm4gUWUoZSwidGFibGUiKXx8dChlKX0pfShbInRkIiwidGgiXSxlLG4pfSxLbj1mdW5jdGlvbihlKXtyZXR1cm4gcW4oZSwidGgsdGQiKX0sWG49ZnVuY3Rpb24obixlKXtyZXR1cm4gdW4oZSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBBbihlLG4pfSl9LCRuPSh5KFhuLCJ0aCx0ZCIpLHkoWG4sInRyIiksZnVuY3Rpb24oZSxuKXtyZXR1cm4gTW4oZSwidGFibGUiLG4pfSksR249ZnVuY3Rpb24oZSl7dmFyIG49cW4oZSwidHIiKTtyZXR1cm4gayhuLGZ1bmN0aW9uKGUpe3ZhciBuPWUsdD11bihuKS5tYXAoZnVuY3Rpb24oZSl7dmFyIG49JChlKTtyZXR1cm4idGZvb3QiPT09bnx8InRoZWFkIj09PW58fCJ0Ym9keSI9PT1uP246InRib2R5In0pLmdldE9yKCJ0Ym9keSIpLHI9ayhLbihlKSxmdW5jdGlvbihlKXt2YXIgbj1fbihlLCJyb3dzcGFuIiwxKSx0PV9uKGUsImNvbHNwYW4iLDEpO3JldHVybiB4bihlLG4sdCl9KTtyZXR1cm4gQ24obixyLHQpfSl9LFluPWZ1bmN0aW9uKGUsbil7cmV0dXJuIGUrIiwiK259LEpuPWZ1bmN0aW9uKGUsbil7dmFyIHQ9aihlLmFsbCxmdW5jdGlvbihlKXtyZXR1cm4gZS5jZWxscygpfSk7cmV0dXJuIE4odCxuKX0sUW49e2dlbmVyYXRlOmZ1bmN0aW9uKGUpe3ZhciBkPXt9LG49W10sdD1lLmxlbmd0aCxtPTA7cmV0dXJuIEIoZSxmdW5jdGlvbihlLGYpe3ZhciBzPVtdO0IoZS5jZWxscygpLGZ1bmN0aW9uKGUpe2Zvcih2YXIgbj0wO2RbWW4oZixuKV0hPT11bmRlZmluZWQ7KW4rKztmb3IodmFyIHQscixvLGk9KHQ9ZS5lbGVtZW50KCkscj1lLnJvd3NwYW4oKSxvPWUuY29sc3BhbigpLHtlbGVtZW50OmIodCkscm93c3BhbjpiKHIpLGNvbHNwYW46YihvKSxyb3c6YihmKSxjb2x1bW46YihuKX0pLHU9MDt1PGUuY29sc3BhbigpO3UrKylmb3IodmFyIGM9MDtjPGUucm93c3BhbigpO2MrKyl7dmFyIGE9bit1LGw9WW4oZitjLGEpO2RbbF09aSxtPU1hdGgubWF4KG0sYSsxKX1zLnB1c2goaSl9KSxuLnB1c2goQ24oZS5lbGVtZW50KCkscyxlLnNlY3Rpb24oKSkpfSkse2dyaWQ6e3Jvd3M6Yih0KSxjb2x1bW5zOmIobSl9LGFjY2VzczpkLGFsbDpufX0sZ2V0QXQ6ZnVuY3Rpb24oZSxuLHQpe3ZhciByPWUuYWNjZXNzW1luKG4sdCldO3JldHVybiByIT09dW5kZWZpbmVkP0Muc29tZShyKTpDLm5vbmUoKX0sZmluZEl0ZW06ZnVuY3Rpb24oZSxuLHQpe3ZhciByPUpuKGUsZnVuY3Rpb24oZSl7cmV0dXJuIHQobixlLmVsZW1lbnQoKSl9KTtyZXR1cm4gMDxyLmxlbmd0aD9DLnNvbWUoclswXSk6Qy5ub25lKCl9LGZpbHRlckl0ZW1zOkpuLGp1c3RDZWxsczpmdW5jdGlvbihlKXt2YXIgbj1rKGUuYWxsLGZ1bmN0aW9uKGUpe3JldHVybiBlLmNlbGxzKCl9KTtyZXR1cm4gVyhuKX19LFpuPWZ1bmN0aW9uKGUsbil7dmFyIHQsaSxyLHUsYyxhLGwsbyxmLHMsZD1mdW5jdGlvbihlKXtyZXR1cm4gUWUoZS5lbGVtZW50KCksbil9LG09R24oZSksZz1Rbi5nZW5lcmF0ZShtKSxwPShpPWQscj0odD1nKS5ncmlkLmNvbHVtbnMoKSx1PXQuZ3JpZC5yb3dzKCksYz1yLGw9YT0wLHEodC5hY2Nlc3MsZnVuY3Rpb24oZSl7aWYoaShlKSl7dmFyIG49ZS5yb3coKSx0PW4rZS5yb3dzcGFuKCktMSxyPWUuY29sdW1uKCksbz1yK2UuY29sc3BhbigpLTE7bjx1P3U9bjphPHQmJihhPXQpLHI8Yz9jPXI6bDxvJiYobD1vKX19KSx7bWluUm93OnUsbWluQ29sOmMsbWF4Um93OmEsbWF4Q29sOmx9KSxoPSJ0aDpub3QoIituKyIpLHRkOm5vdCgiK24rIikiLHY9VW4oZSwidGgsdGQiLGZ1bmN0aW9uKGUpe3JldHVybiBRZShlLGgpfSk7cmV0dXJuIEIodix5biksZnVuY3Rpb24oZSxuLHQscil7Zm9yKHZhciBvLGksdSxjPW4uZ3JpZC5jb2x1bW5zKCksYT1uLmdyaWQucm93cygpLGw9MDtsPGE7bCsrKWZvcih2YXIgZj0hMSxzPTA7czxjO3MrKyl7aWYoIShsPHQubWluUm93fHxsPnQubWF4Um93fHxzPHQubWluQ29sfHxzPnQubWF4Q29sKSlRbi5nZXRBdChuLGwscykuZmlsdGVyKHIpLmlzTm9uZSgpPyhvPWYsMCxpPWVbbF0uZWxlbWVudCgpLHU9Z2UuZnJvbVRhZygidGQiKSxwbih1LGdlLmZyb21UYWcoImJyIikpLChvP3BuOmduKShpLHUpKTpmPSEwfX0obSxnLHAsZCksZj1wLHM9TihxbihvPWUsInRyIiksZnVuY3Rpb24oZSl7cmV0dXJuIDA9PT1lLmRvbSgpLmNoaWxkRWxlbWVudENvdW50fSksQihzLHluKSxmLm1pbkNvbCE9PWYubWF4Q29sJiZmLm1pblJvdyE9PWYubWF4Um93fHxCKHFuKG8sInRoLHRkIiksZnVuY3Rpb24oZSl7dWUoZSwicm93c3BhbiIpLHVlKGUsImNvbHNwYW4iKX0pLHVlKG8sIndpZHRoIiksdWUobywiaGVpZ2h0IiksQ2Uobywid2lkdGgiKSxDZShvLCJoZWlnaHQiKSxlfTt2YXIgZXQ9ZnVuY3Rpb24gYmYodCxyKXt2YXIgbj1mdW5jdGlvbihlKXtyZXR1cm4gdChlKT9DLmZyb20oZS5kb20oKS5ub2RlVmFsdWUpOkMubm9uZSgpfTtyZXR1cm57Z2V0OmZ1bmN0aW9uKGUpe2lmKCF0KGUpKXRocm93IG5ldyBFcnJvcigiQ2FuIG9ubHkgZ2V0ICIrcisiIHZhbHVlIG9mIGEgIityKyIgbm9kZSIpO3JldHVybiBuKGUpLmdldE9yKCIiKX0sZ2V0T3B0aW9uOm4sc2V0OmZ1bmN0aW9uKGUsbil7aWYoIXQoZSkpdGhyb3cgbmV3IEVycm9yKCJDYW4gb25seSBzZXQgcmF3ICIrcisiIHZhbHVlIG9mIGEgIityKyIgbm9kZSIpO2UuZG9tKCkubm9kZVZhbHVlPW59fX0oWiwidGV4dCIpLG50PWZ1bmN0aW9uKGUpe3JldHVybiBldC5nZXQoZSl9LHR0PWZ1bmN0aW9uKGUpe3JldHVybiBldC5nZXRPcHRpb24oZSl9LHJ0PWZ1bmN0aW9uKGUsbil7cmV0dXJuIGV0LnNldChlLG4pfSxvdD1mdW5jdGlvbihlKXtyZXR1cm4iaW1nIj09PSQoZSk/MTp0dChlKS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIGZuKGUpLmxlbmd0aH0sZnVuY3Rpb24oZSl7cmV0dXJuIGUubGVuZ3RofSl9LGl0PVsiaW1nIiwiYnIiXSx1dD1mdW5jdGlvbihlKXtyZXR1cm4gdHQoZSkuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiAwIT09ZS50cmltKCkubGVuZ3RofHwtMTxlLmluZGV4T2YoIlx4YTAiKX0pLmlzU29tZSgpfHxBKGl0LCQoZSkpfSxjdD1mdW5jdGlvbihlKXtyZXR1cm4gbz11dCwoaT1mdW5jdGlvbihlKXtmb3IodmFyIG49MDtuPGUuY2hpbGROb2Rlcy5sZW5ndGg7bisrKXt2YXIgdD1nZS5mcm9tRG9tKGUuY2hpbGROb2Rlc1tuXSk7aWYobyh0KSlyZXR1cm4gQy5zb21lKHQpO3ZhciByPWkoZS5jaGlsZE5vZGVzW25dKTtpZihyLmlzU29tZSgpKXJldHVybiByfXJldHVybiBDLm5vbmUoKX0pKGUuZG9tKCkpO3ZhciBvLGl9LGF0PWZ1bmN0aW9uKGUpe3JldHVybiBsdChlLHV0KX0sbHQ9ZnVuY3Rpb24oZSxpKXt2YXIgdT1mdW5jdGlvbihlKXtmb3IodmFyIG49Zm4oZSksdD1uLmxlbmd0aC0xOzA8PXQ7dC0tKXt2YXIgcj1uW3RdO2lmKGkocikpcmV0dXJuIEMuc29tZShyKTt2YXIgbz11KHIpO2lmKG8uaXNTb21lKCkpcmV0dXJuIG99cmV0dXJuIEMubm9uZSgpfTtyZXR1cm4gdShlKX0sZnQ9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gZ2UuZnJvbURvbShlLmRvbSgpLmNsb25lTm9kZShuKSl9LHN0PWZ1bmN0aW9uKGUpe3JldHVybiBmdChlLCExKX0sZHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ0KGUsITApfSxtdD1mdW5jdGlvbihlLG4pe3ZhciB0LHIsbyxpLHU9KHQ9ZSxyPW4sbz1nZS5mcm9tVGFnKHIpLGk9Y2UodCksdGUobyxpKSxvKSxjPWZuKGR0KGUpKTtyZXR1cm4gYm4odSxjKSx1fSxndD1mdW5jdGlvbigpe3ZhciBlPWdlLmZyb21UYWcoInRkIik7cmV0dXJuIHBuKGUsZ2UuZnJvbVRhZygiYnIiKSksZX0scHQ9ZnVuY3Rpb24oZSxuLHQpe3ZhciByPW10KGUsbik7cmV0dXJuIHEodCxmdW5jdGlvbihlLG4pe251bGw9PT1lP3VlKHIsbik6bmUocixuLGUpfSkscn0saHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LHZ0PWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBnZS5mcm9tVGFnKCJ0ciIsZS5kb20oKSl9fSxidD1mdW5jdGlvbihkLGUsbSl7cmV0dXJue3Jvdzp2dChlKSxjZWxsOmZ1bmN0aW9uKGUpe3ZhciByLG8saSxuLHQsdSxjLGE9b24oZS5lbGVtZW50KCkpLGw9Z2UuZnJvbVRhZygkKGUuZWxlbWVudCgpKSxhLmRvbSgpKSxmPW0uZ2V0T3IoWyJzdHJvbmciLCJlbSIsImIiLCJpIiwic3BhbiIsImZvbnQiLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJwIiwiZGl2Il0pLHM9MDxmLmxlbmd0aD8ocj1lLmVsZW1lbnQoKSxvPWwsaT1mLGN0KHIpLm1hcChmdW5jdGlvbihlKXt2YXIgbj1pLmpvaW4oIiwiKSx0PURuKGUsbixmdW5jdGlvbihlKXtyZXR1cm4gZW4oZSxyKX0pO3JldHVybiBJKHQsZnVuY3Rpb24oZSxuKXt2YXIgdD1zdChuKTtyZXR1cm4gdWUodCwiY29udGVudGVkaXRhYmxlIikscG4oZSx0KSx0fSxvKX0pLmdldE9yKG8pKTpsO3JldHVybiBwbihzLGdlLmZyb21UYWcoImJyIikpLG49ZS5lbGVtZW50KCksdD1sLHU9bi5kb20oKSxjPXQuZG9tKCksZGUodSkmJmRlKGMpJiYoYy5zdHlsZS5jc3NUZXh0PXUuc3R5bGUuY3NzVGV4dCksQ2UobCwiaGVpZ2h0IiksMSE9PWUuY29sc3BhbigpJiZDZShlLmVsZW1lbnQoKSwid2lkdGgiKSxkKGUuZWxlbWVudCgpLGwpLGx9LHJlcGxhY2U6cHQsZ2FwOmd0fX0sd3Q9ZnVuY3Rpb24oZSl7cmV0dXJue3Jvdzp2dChlKSxjZWxsOmd0LHJlcGxhY2U6aHQsZ2FwOmd0fX0seXQ9ZnVuY3Rpb24oZSxuKXt2YXIgdD1uLmNvbHVtbigpLHI9bi5jb2x1bW4oKStuLmNvbHNwYW4oKS0xLG89bi5yb3coKSxpPW4ucm93KCkrbi5yb3dzcGFuKCktMTtyZXR1cm4gdDw9ZS5maW5pc2hDb2woKSYmcj49ZS5zdGFydENvbCgpJiZvPD1lLmZpbmlzaFJvdygpJiZpPj1lLnN0YXJ0Um93KCl9LFN0PWZ1bmN0aW9uKGUsbil7cmV0dXJuIG4uY29sdW1uKCk+PWUuc3RhcnRDb2woKSYmbi5jb2x1bW4oKStuLmNvbHNwYW4oKS0xPD1lLmZpbmlzaENvbCgpJiZuLnJvdygpPj1lLnN0YXJ0Um93KCkmJm4ucm93KCkrbi5yb3dzcGFuKCktMTw9ZS5maW5pc2hSb3coKX0seHQ9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gdD1NYXRoLm1pbihlLnJvdygpLG4ucm93KCkpLHI9TWF0aC5taW4oZS5jb2x1bW4oKSxuLmNvbHVtbigpKSxvPU1hdGgubWF4KGUucm93KCkrZS5yb3dzcGFuKCktMSxuLnJvdygpK24ucm93c3BhbigpLTEpLGk9TWF0aC5tYXgoZS5jb2x1bW4oKStlLmNvbHNwYW4oKS0xLG4uY29sdW1uKCkrbi5jb2xzcGFuKCktMSkse3N0YXJ0Um93OmIodCksc3RhcnRDb2w6YihyKSxmaW5pc2hSb3c6YihvKSxmaW5pc2hDb2w6YihpKX07dmFyIHQscixvLGl9LEN0PWZ1bmN0aW9uKGUsbix0KXt2YXIgcj1Rbi5maW5kSXRlbShlLG4sZW4pLG89UW4uZmluZEl0ZW0oZSx0LGVuKTtyZXR1cm4gci5iaW5kKGZ1bmN0aW9uKG4pe3JldHVybiBvLm1hcChmdW5jdGlvbihlKXtyZXR1cm4geHQobixlKX0pfSl9LFJ0PWZ1bmN0aW9uKG4sZSx0KXtyZXR1cm4gQ3QobixlLHQpLmJpbmQoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7Zm9yKHZhciB0PSEwLHI9eShTdCxuKSxvPW4uc3RhcnRSb3coKTtvPD1uLmZpbmlzaFJvdygpO28rKylmb3IodmFyIGk9bi5zdGFydENvbCgpO2k8PW4uZmluaXNoQ29sKCk7aSsrKXQ9dCYmUW4uZ2V0QXQoZSxvLGkpLmV4aXN0cyhyKTtyZXR1cm4gdD9DLnNvbWUobik6Qy5ub25lKCl9KG4sZSl9KX0sVHQ9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBDdCh0LGUsbikubWFwKGZ1bmN0aW9uKGUpe3ZhciBuPVFuLmZpbHRlckl0ZW1zKHQseSh5dCxlKSk7cmV0dXJuIGsobixmdW5jdGlvbihlKXtyZXR1cm4gZS5lbGVtZW50KCl9KX0pfSxPdD1mdW5jdGlvbihlLG4pe3JldHVybiBRbi5maW5kSXRlbShlLG4sZnVuY3Rpb24oZSxuKXtyZXR1cm4gdG4obixlKX0pLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5lbGVtZW50KCl9KX0sRHQ9ZnVuY3Rpb24odSxjLGEpe3JldHVybiAkbih1KS5iaW5kKGZ1bmN0aW9uKGUpe3ZhciByLG4sbyxpLHQ9RXQoZSk7cmV0dXJuIHI9dCxuPXUsbz1jLGk9YSxRbi5maW5kSXRlbShyLG4sZW4pLmJpbmQoZnVuY3Rpb24oZSl7dmFyIG49MDxvP2Uucm93KCkrZS5yb3dzcGFuKCktMTplLnJvdygpLHQ9MDxpP2UuY29sdW1uKCkrZS5jb2xzcGFuKCktMTplLmNvbHVtbigpO3JldHVybiBRbi5nZXRBdChyLG4rbyx0K2kpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5lbGVtZW50KCl9KX0pfSl9LEF0PWZ1bmN0aW9uKGUsbix0LHIsbyl7dmFyIGk9RXQoZSksdT1lbihlLHQpP0Muc29tZShuKTpPdChpLG4pLGM9ZW4oZSxvKT9DLnNvbWUocik6T3QoaSxyKTtyZXR1cm4gdS5iaW5kKGZ1bmN0aW9uKG4pe3JldHVybiBjLmJpbmQoZnVuY3Rpb24oZSl7cmV0dXJuIFR0KGksbixlKX0pfSl9LEV0PWZ1bmN0aW9uKGUpe3ZhciBuPUduKGUpO3JldHVybiBRbi5nZW5lcmF0ZShuKX0sa3Q9WyJib2R5IiwicCIsImRpdiIsImFydGljbGUiLCJhc2lkZSIsImZpZ2NhcHRpb24iLCJmaWd1cmUiLCJmb290ZXIiLCJoZWFkZXIiLCJuYXYiLCJzZWN0aW9uIiwib2wiLCJ1bCIsImxpIiwidGFibGUiLCJ0aGVhZCIsInRib2R5IiwidGZvb3QiLCJjYXB0aW9uIiwidHIiLCJ0ZCIsInRoIiwiaDEiLCJoMiIsImgzIiwiaDQiLCJoNSIsImg2IiwiYmxvY2txdW90ZSIsInByZSIsImFkZHJlc3MiXTtmdW5jdGlvbiBCdCgpe3JldHVybnt1cDpiKHtzZWxlY3RvcjpObixjbG9zZXN0Ok1uLHByZWRpY2F0ZTpCbixhbGw6Y259KSxkb3duOmIoe3NlbGVjdG9yOkVuLHByZWRpY2F0ZTpPbn0pLHN0eWxlczpiKHtnZXQ6eWUsZ2V0UmF3OnhlLHNldDpiZSxyZW1vdmU6Q2V9KSxhdHRyczpiKHtnZXQ6cmUsc2V0Om5lLHJlbW92ZTp1ZSxjb3B5VG86ZnVuY3Rpb24oZSxuKXt2YXIgdD1jZShlKTt0ZShuLHQpfX0pLGluc2VydDpiKHtiZWZvcmU6ZG4sYWZ0ZXI6bW4sYWZ0ZXJBbGw6dm4sYXBwZW5kOnBuLGFwcGVuZEFsbDpibixwcmVwZW5kOmduLHdyYXA6aG59KSxyZW1vdmU6Yih7dW53cmFwOlNuLHJlbW92ZTp5bn0pLGNyZWF0ZTpiKHtudTpnZS5mcm9tVGFnLGNsb25lOmZ1bmN0aW9uKGUpe3JldHVybiBnZS5mcm9tRG9tKGUuZG9tKCkuY2xvbmVOb2RlKCExKSl9LHRleHQ6Z2UuZnJvbVRleHR9KSxxdWVyeTpiKHtjb21wYXJlUG9zaXRpb246ZnVuY3Rpb24oZSxuKXtyZXR1cm4gZS5kb20oKS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihuLmRvbSgpKX0scHJldlNpYmxpbmc6YW4sbmV4dFNpYmxpbmc6bG59KSxwcm9wZXJ0eTpiKHtjaGlsZHJlbjpmbixuYW1lOiQscGFyZW50OnVuLGRvY3VtZW50OmZ1bmN0aW9uKGUpe3JldHVybiBlLmRvbSgpLm93bmVyRG9jdW1lbnR9LGlzVGV4dDpaLGlzQ29tbWVudDpKLGlzRWxlbWVudDpRLGdldFRleHQ6bnQsc2V0VGV4dDpydCxpc0JvdW5kYXJ5OmZ1bmN0aW9uKGUpe3JldHVybiEhUShlKSYmKCJib2R5Ij09PSQoZSl8fEEoa3QsJChlKSkpfSxpc0VtcHR5VGFnOmZ1bmN0aW9uKGUpe3JldHVybiEhUShlKSYmQShbImJyIiwiaW1nIiwiaHIiLCJpbnB1dCJdLCQoZSkpfSxpc05vbkVkaXRhYmxlOmZ1bmN0aW9uKGUpe3JldHVybiBRKGUpJiYiZmFsc2UiPT09cmUoZSwiY29udGVudGVkaXRhYmxlIil9fSksZXE6ZW4saXM6cm59fXZhciBOdD1mdW5jdGlvbihyLG8sZSxuKXt2YXIgdD1vKHIsZSk7cmV0dXJuIEkobixmdW5jdGlvbihlLG4pe3ZhciB0PW8ocixuKTtyZXR1cm4gSXQocixlLHQpfSx0KX0sSXQ9ZnVuY3Rpb24obixlLHQpe3JldHVybiBlLmJpbmQoZnVuY3Rpb24oZSl7cmV0dXJuIHQuZmlsdGVyKHkobi5lcSxlKSl9KX0sUHQ9ZnVuY3Rpb24oZSxuLHQpe3JldHVybiAwPHQubGVuZ3RoP050KGUsbiwocj10KVswXSxyLnNsaWNlKDEpKTpDLm5vbmUoKTt2YXIgcn0sTXQ9ZnVuY3Rpb24odCxlLG4scil7dm9pZCAwPT09ciYmKHI9Zik7dmFyIG89W2VdLmNvbmNhdCh0LnVwKCkuYWxsKGUpKSxpPVtuXS5jb25jYXQodC51cCgpLmFsbChuKSksdT1mdW5jdGlvbihuKXtyZXR1cm4gXyhuLHIpLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm4gbn0sZnVuY3Rpb24oZSl7cmV0dXJuIG4uc2xpY2UoMCxlKzEpfSl9LGM9dShvKSxhPXUoaSksbD1NKGMsZnVuY3Rpb24oZSl7cmV0dXJuIEUoYSwobj1lLHkodC5lcSxuKSkpO3ZhciBufSk7cmV0dXJue2ZpcnN0cGF0aDpiKGMpLHNlY29uZHBhdGg6YihhKSxzaGFyZWQ6YihsKX19LF90PUJ0KCksV3Q9ZnVuY3Rpb24odCxlKXtyZXR1cm4gUHQoX3QsZnVuY3Rpb24oZSxuKXtyZXR1cm4gdChuKX0sZSl9LGp0PWZ1bmN0aW9uKGUpe3JldHVybiBObihlLCJ0YWJsZSIpfSx6dD1mdW5jdGlvbihsLGYscyl7dmFyIGQ9ZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBzIT09dW5kZWZpbmVkJiZzKGUpfHxlbihlLG4pfX07cmV0dXJuIGVuKGwsZik/Qy5zb21lKHtib3hlczpDLnNvbWUoW2xdKSxzdGFydDpsLGZpbmlzaDpmfSk6anQobCkuYmluZChmdW5jdGlvbihhKXtyZXR1cm4ganQoZikuYmluZChmdW5jdGlvbihpKXtpZihlbihhLGkpKXJldHVybiBDLnNvbWUoe2JveGVzOihvPWwsdT1mLGM9RXQoYSksVHQoYyxvLHUpKSxzdGFydDpsLGZpbmlzaDpmfSk7aWYodG4oYSxpKSl7dmFyIGU9MDwobj1EbihmLCJ0ZCx0aCIsZChhKSkpLmxlbmd0aD9uW24ubGVuZ3RoLTFdOmY7cmV0dXJuIEMuc29tZSh7Ym94ZXM6QXQoYSxsLGEsZixpKSxzdGFydDpsLGZpbmlzaDplfSl9aWYodG4oaSxhKSl7dmFyIG4sdD0wPChuPURuKGwsInRkLHRoIixkKGkpKSkubGVuZ3RoP25bbi5sZW5ndGgtMV06bDtyZXR1cm4gQy5zb21lKHtib3hlczpBdChpLGwsYSxmLGkpLHN0YXJ0OmwsZmluaXNoOnR9KX1yZXR1cm4gTXQoX3QsbCxmLHIpLnNoYXJlZCgpLmJpbmQoZnVuY3Rpb24oZSl7cmV0dXJuIE1uKGUsInRhYmxlIixzKS5iaW5kKGZ1bmN0aW9uKGUpe3ZhciBuPURuKGYsInRkLHRoIixkKGUpKSx0PTA8bi5sZW5ndGg/bltuLmxlbmd0aC0xXTpmLHI9RG4obCwidGQsdGgiLGQoZSkpLG89MDxyLmxlbmd0aD9yW3IubGVuZ3RoLTFdOmw7cmV0dXJuIEMuc29tZSh7Ym94ZXM6QXQoZSxsLGEsZixpKSxzdGFydDpvLGZpbmlzaDp0fSl9KX0pO3ZhciByLG8sdSxjfSl9KX0sTHQ9ZnVuY3Rpb24oZSxuKXt2YXIgdD1FbihlLG4pO3JldHVybiAwPHQubGVuZ3RoP0Muc29tZSh0KTpDLm5vbmUoKX0sRnQ9ZnVuY3Rpb24oZSxuLHIpe3JldHVybiBQbihlLG4pLmJpbmQoZnVuY3Rpb24odCl7cmV0dXJuIFBuKGUscikuYmluZChmdW5jdGlvbihuKXtyZXR1cm4gV3QoanQsW3Qsbl0pLm1hcChmdW5jdGlvbihlKXtyZXR1cm57Zmlyc3Q6Yih0KSxsYXN0OmIobiksdGFibGU6YihlKX19KX0pfSl9LEh0PWZ1bmN0aW9uKGUsbix0LHIsbyl7cmV0dXJuIGk9byxNKGUsZnVuY3Rpb24oZSl7cmV0dXJuIFFlKGUsaSl9KS5iaW5kKGZ1bmN0aW9uKGUpe3JldHVybiBEdChlLG4sdCkuYmluZChmdW5jdGlvbihlKXtyZXR1cm4gdD1yLE5uKG49ZSwidGFibGUiKS5iaW5kKGZ1bmN0aW9uKGUpe3JldHVybiBQbihlLHQpLmJpbmQoZnVuY3Rpb24oZSl7cmV0dXJuIHp0KGUsbikuYmluZChmdW5jdGlvbihuKXtyZXR1cm4gbi5ib3hlcy5tYXAoZnVuY3Rpb24oZSl7cmV0dXJue2JveGVzOmUsc3RhcnQ6bi5zdGFydCxmaW5pc2g6bi5maW5pc2h9fSl9KX0pfSk7dmFyIG4sdH0pfSk7dmFyIGl9LHF0PWZ1bmN0aW9uKHIsZSxuKXtyZXR1cm4gRnQocixlLG4pLmJpbmQoZnVuY3Rpb24odSl7dmFyIGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGVuKHIsZSl9LG49Tm4odS5maXJzdCgpLCJ0aGVhZCx0Zm9vdCx0Ym9keSx0YWJsZSIsZSksdD1Obih1Lmxhc3QoKSwidGhlYWQsdGZvb3QsdGJvZHksdGFibGUiLGUpO3JldHVybiBuLmJpbmQoZnVuY3Rpb24oaSl7cmV0dXJuIHQuYmluZChmdW5jdGlvbihlKXtyZXR1cm4gZW4oaSxlKT8obj11LnRhYmxlKCksdD11LmZpcnN0KCkscj11Lmxhc3QoKSxvPUV0KG4pLFJ0KG8sdCxyKSk6Qy5ub25lKCk7dmFyIG4sdCxyLG99KX0pfSl9LFV0PSJkYXRhLW1jZS1maXJzdC1zZWxlY3RlZCIsVnQ9ImRhdGEtbWNlLWxhc3Qtc2VsZWN0ZWQiLEt0PSJ0ZFtkYXRhLW1jZS1zZWxlY3RlZF0sdGhbZGF0YS1tY2Utc2VsZWN0ZWRdIixYdD0iW2RhdGEtbWNlLXNlbGVjdGVkXSIsJHQ9VXQsR3Q9InRkW2RhdGEtbWNlLWZpcnN0LXNlbGVjdGVkXSx0aFtkYXRhLW1jZS1maXJzdC1zZWxlY3RlZF0iLFl0PVZ0LEp0PSJ0ZFtkYXRhLW1jZS1sYXN0LXNlbGVjdGVkXSx0aFtkYXRhLW1jZS1sYXN0LXNlbGVjdGVkXSIsUXQ9LyogKi9PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxzZWxlY3RlZDoiZGF0YS1tY2Utc2VsZWN0ZWQiLHNlbGVjdGVkU2VsZWN0b3I6S3QsYXR0cmlidXRlU2VsZWN0b3I6WHQsZmlyc3RTZWxlY3RlZDokdCxmaXJzdFNlbGVjdGVkU2VsZWN0b3I6R3QsbGFzdFNlbGVjdGVkOll0LGxhc3RTZWxlY3RlZFNlbGVjdG9yOkp0fSksWnQ9ZnVuY3Rpb24odSl7aWYoIWgodSkpdGhyb3cgbmV3IEVycm9yKCJjYXNlcyBtdXN0IGJlIGFuIGFycmF5Iik7aWYoMD09PXUubGVuZ3RoKXRocm93IG5ldyBFcnJvcigidGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBvbmUgY2FzZSIpO3ZhciBjPVtdLHQ9e307cmV0dXJuIEIodSxmdW5jdGlvbihlLHIpe3ZhciBuPUYoZSk7aWYoMSE9PW4ubGVuZ3RoKXRocm93IG5ldyBFcnJvcigib25lIGFuZCBvbmx5IG9uZSBuYW1lIHBlciBjYXNlIik7dmFyIG89blswXSxpPWVbb107aWYodFtvXSE9PXVuZGVmaW5lZCl0aHJvdyBuZXcgRXJyb3IoImR1cGxpY2F0ZSBrZXkgZGV0ZWN0ZWQ6IitvKTtpZigiY2F0YSI9PT1vKXRocm93IG5ldyBFcnJvcigiY2Fubm90IGhhdmUgYSBjYXNlIG5hbWVkIGNhdGEgKHNvcnJ5KSIpO2lmKCFoKGkpKXRocm93IG5ldyBFcnJvcigiY2FzZSBhcmd1bWVudHMgbXVzdCBiZSBhbiBhcnJheSIpO2MucHVzaChvKSx0W29dPWZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aDtpZihlIT09aS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJXcm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIHRvIGNhc2UgIitvKyIuIEV4cGVjdGVkICIraS5sZW5ndGgrIiAoIitpKyIpLCBnb3QgIitlKTtmb3IodmFyIHQ9bmV3IEFycmF5KGUpLG49MDtuPHQubGVuZ3RoO24rKyl0W25dPWFyZ3VtZW50c1tuXTtyZXR1cm57Zm9sZDpmdW5jdGlvbigpe2lmKGFyZ3VtZW50cy5sZW5ndGghPT11Lmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMgdG8gZm9sZC4gRXhwZWN0ZWQgIit1Lmxlbmd0aCsiLCBnb3QgIithcmd1bWVudHMubGVuZ3RoKTtyZXR1cm4gYXJndW1lbnRzW3JdLmFwcGx5KG51bGwsdCl9LG1hdGNoOmZ1bmN0aW9uKGUpe3ZhciBuPUYoZSk7aWYoYy5sZW5ndGghPT1uLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMgdG8gbWF0Y2guIEV4cGVjdGVkOiAiK2Muam9pbigiLCIpKyJcbkFjdHVhbDogIituLmpvaW4oIiwiKSk7aWYoIXooYyxmdW5jdGlvbihlKXtyZXR1cm4gQShuLGUpfSkpdGhyb3cgbmV3IEVycm9yKCJOb3QgYWxsIGJyYW5jaGVzIHdlcmUgc3BlY2lmaWVkIHdoZW4gdXNpbmcgbWF0Y2guIFNwZWNpZmllZDogIituLmpvaW4oIiwgIikrIlxuUmVxdWlyZWQ6ICIrYy5qb2luKCIsICIpKTtyZXR1cm4gZVtvXS5hcHBseShudWxsLHQpfSxsb2c6ZnVuY3Rpb24oZSl7cC5jb25zb2xlLmxvZyhlLHtjb25zdHJ1Y3RvcnM6Yyxjb25zdHJ1Y3RvcjpvLHBhcmFtczp0fSl9fX19KSx0fSxlcj1adChbe25vbmU6W119LHttdWx0aXBsZTpbImVsZW1lbnRzIl19LHtzaW5nbGU6WyJzZWxlY3Rpb24iXX1dKSxucj1mdW5jdGlvbihlLG4sdCxyKXtyZXR1cm4gZS5mb2xkKG4sdCxyKX0sdHI9ZXIubm9uZSxycj1lci5tdWx0aXBsZSxvcj1lci5zaW5nbGUsaXI9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gbnIobi5nZXQoKSxiKFtdKSxvLGIoW2VdKSl9LHVyPWZ1bmN0aW9uKGUpe3JldHVybntlbGVtZW50OmIoZSksbWVyZ2FibGU6Qy5ub25lLHVubWVyZ2FibGU6Qy5ub25lLHNlbGVjdGlvbjpiKFtlXSl9fSxjcj1mdW5jdGlvbihlLG4sdCl7cmV0dXJue2VsZW1lbnQ6Yih0KSxtZXJnYWJsZTpiKChvPW4sbnIoZS5nZXQoKSxDLm5vbmUsZnVuY3Rpb24obixlKXtyZXR1cm4gMD09PW4ubGVuZ3RoP0Mubm9uZSgpOnF0KG8sR3QsSnQpLmJpbmQoZnVuY3Rpb24oZSl7cmV0dXJuIDE8bi5sZW5ndGg/Qy5zb21lKHtib3VuZHM6YihlKSxjZWxsczpiKG4pfSk6Qy5ub25lKCl9KX0sQy5ub25lKSkpLHVubWVyZ2FibGU6YigwPChyPWlyKHQsZSkpLmxlbmd0aCYmeihyLGZ1bmN0aW9uKGUpe3JldHVybiBpZShlLCJyb3dzcGFuIikmJjE8cGFyc2VJbnQocmUoZSwicm93c3BhbiIpLDEwKXx8aWUoZSwiY29sc3BhbiIpJiYxPHBhcnNlSW50KHJlKGUsImNvbHNwYW4iKSwxMCl9KT9DLnNvbWUocik6Qy5ub25lKCkpLHNlbGVjdGlvbjpiKGlyKHQsZSkpfTt2YXIgcixvfSxhcj1mdW5jdGlvbihkLGUsbSxnKXtkLm9uKCJCZWZvcmVHZXRDb250ZW50IixmdW5jdGlvbih0KXshMD09PXQuc2VsZWN0aW9uJiZucihlLmdldCgpLHgsZnVuY3Rpb24oZSl7dC5wcmV2ZW50RGVmYXVsdCgpLCRuKGVbMF0pLm1hcChkdCkubWFwKGZ1bmN0aW9uKGUpe3JldHVybltabihlLFh0KV19KS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBuO3QuY29udGVudD0idGV4dCI9PT10LmZvcm1hdD9rKGUsZnVuY3Rpb24oZSl7cmV0dXJuIGUuZG9tKCkuaW5uZXJUZXh0fSkuam9pbigiIik6KG49ZCxrKGUsZnVuY3Rpb24oZSl7cmV0dXJuIG4uc2VsZWN0aW9uLnNlcmlhbGl6ZXIuc2VyaWFsaXplKGUuZG9tKCkse30pfSkuam9pbigiIikpfSl9LHgpfSksZC5vbigiQmVmb3JlU2V0Q29udGVudCIsZnVuY3Rpb24ocyl7ITA9PT1zLnNlbGVjdGlvbiYmITA9PT1zLnBhc3RlJiZDLmZyb20oZC5kb20uZ2V0UGFyZW50KGQuc2VsZWN0aW9uLmdldFN0YXJ0KCksInRoLHRkIikpLmVhY2goZnVuY3Rpb24oZSl7dmFyIGY9Z2UuZnJvbURvbShlKTskbihmKS5lYWNoKGZ1bmN0aW9uKG4pe3ZhciBlLHQscixvLGksdT1OKChlPXMuY29udGVudCwocj0odHx8cC5kb2N1bWVudCkuY3JlYXRlRWxlbWVudCgiZGl2IikpLmlubmVySFRNTD1lLGZuKGdlLmZyb21Eb20ocikpKSxmdW5jdGlvbihlKXtyZXR1cm4ibWV0YSIhPT0kKGUpfSk7aWYoMT09PXUubGVuZ3RoJiYidGFibGUiPT09JCh1WzBdKSl7cy5wcmV2ZW50RGVmYXVsdCgpO3ZhciBjPWdlLmZyb21Eb20oZC5nZXREb2MoKSksYT13dChjKSxsPShvPWYsaT11WzBdLHtlbGVtZW50OmIobyksY2xpcGJvYXJkOmIoaSksZ2VuZXJhdG9yczpiKGEpfSk7bS5wYXN0ZUNlbGxzKG4sbCkuZWFjaChmdW5jdGlvbihlKXtkLnNlbGVjdGlvbi5zZXRSbmcoZSksZC5mb2N1cygpLGcuY2xlYXIobil9KX19KX0pfSl9O2Z1bmN0aW9uIGxyKHIsbyl7dmFyIGU9ZnVuY3Rpb24oZSl7dmFyIG49byhlKTtpZihuPD0wfHxudWxsPT09bil7dmFyIHQ9eWUoZSxyKTtyZXR1cm4gcGFyc2VGbG9hdCh0KXx8MH1yZXR1cm4gbn0saT1mdW5jdGlvbihvLGUpe3JldHVybiBQKGUsZnVuY3Rpb24oZSxuKXt2YXIgdD15ZShvLG4pLHI9dD09PXVuZGVmaW5lZD8wOnBhcnNlSW50KHQsMTApO3JldHVybiBpc05hTihyKT9lOmUrcn0sMCl9O3JldHVybntzZXQ6ZnVuY3Rpb24oZSxuKXtpZighUihuKSYmIW4ubWF0Y2goL15bMC05XSskLykpdGhyb3cgbmV3IEVycm9yKHIrIi5zZXQgYWNjZXB0cyBvbmx5IHBvc2l0aXZlIGludGVnZXIgdmFsdWVzLiBWYWx1ZSB3YXMgIituKTt2YXIgdD1lLmRvbSgpO2RlKHQpJiYodC5zdHlsZVtyXT1uKyJweCIpfSxnZXQ6ZSxnZXRPdXRlcjplLGFnZ3JlZ2F0ZTppLG1heDpmdW5jdGlvbihlLG4sdCl7dmFyIHI9aShlLHQpO3JldHVybiByPG4/bi1yOjB9fX12YXIgZnI9bHIoImhlaWdodCIsZnVuY3Rpb24oZSl7dmFyIG49ZS5kb20oKTtyZXR1cm4gcGUoZSk/bi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ6bi5vZmZzZXRIZWlnaHR9KSxzcj1mdW5jdGlvbihlKXtyZXR1cm4gZnIuZ2V0KGUpfSxkcj1mdW5jdGlvbihlKXtyZXR1cm4gZnIuZ2V0T3V0ZXIoZSl9LG1yPWxyKCJ3aWR0aCIsZnVuY3Rpb24oZSl7cmV0dXJuIGUuZG9tKCkub2Zmc2V0V2lkdGh9KSxncj1mdW5jdGlvbihlKXtyZXR1cm4gbXIuZ2V0KGUpfSxwcj1mdW5jdGlvbihlKXtyZXR1cm4gbXIuZ2V0T3V0ZXIoZSl9LGhyPWZ1bmN0aW9uKGUsbix0KXtyZXR1cm4gcj15ZShlLG4pLG89dCxpPXBhcnNlRmxvYXQociksaXNOYU4oaSk/bzppO3ZhciByLG8saX0sdnI9ZnVuY3Rpb24oZSl7cmV0dXJuKGM9SmUoKSkuYnJvd3Nlci5pc0lFKCl8fGMuYnJvd3Nlci5pc0VkZ2UoKT8odD1ocihuPWUsInBhZGRpbmctdG9wIiwwKSxyPWhyKG4sInBhZGRpbmctYm90dG9tIiwwKSxvPWhyKG4sImJvcmRlci10b3Atd2lkdGgiLDApLGk9aHIobiwiYm9yZGVyLWJvdHRvbS13aWR0aCIsMCksdT1uLmRvbSgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCwiYm9yZGVyLWJveCI9PT15ZShuLCJib3gtc2l6aW5nIik/dTp1LXQtci0obytpKSk6aHIoZSwiaGVpZ2h0IixzcihlKSk7dmFyIG4sdCxyLG8saSx1LGN9LGJyPS8oXGQrKFwuXGQrKT8pKFx3fCUpKi8sd3I9LyhcZCsoXC5cZCspPyklLyx5cj0vKFxkKyhcLlxkKyk/KXB4fGVtLyxTcj1mdW5jdGlvbihlLG4pe2JlKGUsIndpZHRoIixuKyJweCIpfSx4cj1mdW5jdGlvbihlLG4pe2JlKGUsIndpZHRoIixuKyIlIil9LENyPWZ1bmN0aW9uKGUsbil7YmUoZSwiaGVpZ2h0IixuKyJweCIpfSxScj1mdW5jdGlvbihlLG4sdCxyKXt2YXIgbyxpLHUsYyxhLGwsZixzPXBhcnNlSW50KGUsMTApO3JldHVybiBhZShsPWUsZj0iJSIsbC5sZW5ndGgtZi5sZW5ndGgpJiYidGFibGUiIT09JChuKT8oaT1zLHU9dCxjPXIsYT0kbihvPW4pLm1hcChmdW5jdGlvbihlKXt2YXIgbj11KGUpO3JldHVybiBNYXRoLmZsb29yKGkvMTAwKm4pfSkuZ2V0T3IoaSksYyhvLGEpLGEpOnN9LFRyPWZ1bmN0aW9uKGUpe3ZhciBuLHQ9eGUobj1lLCJoZWlnaHQiKS5nZXRPclRodW5rKGZ1bmN0aW9uKCl7cmV0dXJuIHZyKG4pKyJweCJ9KTtyZXR1cm4gdD9Scih0LGUsc3IsQ3IpOnNyKGUpfSxPcj1mdW5jdGlvbihlKXtyZXR1cm4geGUoZSwid2lkdGgiKS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIEMuZnJvbShyZShlLCJ3aWR0aCIpKX0sZnVuY3Rpb24oZSl7cmV0dXJuIEMuc29tZShlKX0pfSxEcj1mdW5jdGlvbihlLG4pe3JldHVybiBlL24ucGl4ZWxXaWR0aCgpKjEwMH0sQXI9ZnVuY3Rpb24obix0KXtyZXR1cm4gT3IobikuZm9sZChmdW5jdGlvbigpe3ZhciBlPWdyKG4pO3JldHVybiBEcihlLHQpfSxmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oZSxuLHQpe3ZhciByPXdyLmV4ZWMobik7aWYobnVsbCE9PXIpcmV0dXJuIHBhcnNlRmxvYXQoclsxXSk7dmFyIG89Z3IoZSk7cmV0dXJuIERyKG8sdCl9KG4sZSx0KX0pfSxFcj1mdW5jdGlvbihuLHQpe3JldHVybiBPcihuKS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIGdyKG4pfSxmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oZSxuLHQpe3ZhciByPXlyLmV4ZWMobik7aWYobnVsbCE9PXIpcmV0dXJuIHBhcnNlSW50KHJbMV0sMTApO3ZhciBvPXdyLmV4ZWMobik7aWYobnVsbD09PW8pcmV0dXJuIGdyKGUpO3ZhciBpPXBhcnNlRmxvYXQob1sxXSk7cmV0dXJuIGkvMTAwKnQucGl4ZWxXaWR0aCgpfShuLGUsdCl9KX0sa3I9ZnVuY3Rpb24oZSl7cmV0dXJuIHQ9InJvd3NwYW4iLFRyKG49ZSkvV24obix0KTt2YXIgbix0fSxCcj1mdW5jdGlvbihlLG4sdCl7YmUoZSwid2lkdGgiLG4rdCl9LE5yPWIod3IpLElyPWIoeXIpLFByPWZ1bmN0aW9uKHQscil7T3IodCkuYmluZChmdW5jdGlvbihlKXt2YXIgbj1ici5leGVjKGUpO3JldHVybiBudWxsIT09bj9DLnNvbWUoe3dpZHRoOmIocGFyc2VGbG9hdChuWzFdKSksdW5pdDpiKG5bM10pfSk6Qy5ub25lKCl9KS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBuPWUud2lkdGgoKS8yO0JyKHQsbixlLnVuaXQoKSksQnIocixuLGUudW5pdCgpKX0pfSxNcj1mdW5jdGlvbih0LHIpe3JldHVybntsZWZ0OmIodCksdG9wOmIociksdHJhbnNsYXRlOmZ1bmN0aW9uKGUsbil7cmV0dXJuIE1yKHQrZSxyK24pfX19LF9yPU1yLFdyPWZ1bmN0aW9uKGUsbil7cmV0dXJuIGUhPT11bmRlZmluZWQ/ZTpuIT09dW5kZWZpbmVkP246MH0sanI9ZnVuY3Rpb24oZSl7dmFyIG49ZS5kb20oKS5vd25lckRvY3VtZW50LHQ9bi5ib2R5LHI9bi5kZWZhdWx0VmlldyxvPW4uZG9jdW1lbnRFbGVtZW50O2lmKHQ9PT1lLmRvbSgpKXJldHVybiBfcih0Lm9mZnNldExlZnQsdC5vZmZzZXRUb3ApO3ZhciBpPVdyKHIucGFnZVlPZmZzZXQsby5zY3JvbGxUb3ApLHU9V3Ioci5wYWdlWE9mZnNldCxvLnNjcm9sbExlZnQpLGM9V3Ioby5jbGllbnRUb3AsdC5jbGllbnRUb3ApLGE9V3Ioby5jbGllbnRMZWZ0LHQuY2xpZW50TGVmdCk7cmV0dXJuIHpyKGUpLnRyYW5zbGF0ZSh1LWEsaS1jKX0senI9ZnVuY3Rpb24oZSl7dmFyIG4sdD1lLmRvbSgpLHI9dC5vd25lckRvY3VtZW50LmJvZHk7cmV0dXJuIHI9PT10P19yKHIub2Zmc2V0TGVmdCxyLm9mZnNldFRvcCk6cGUoZSk/KG49dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxfcihuLmxlZnQsbi50b3ApKTpfcigwLDApfSxMcj1mdW5jdGlvbihlLG4pe3JldHVybntyb3c6ZSx5Om59fSxGcj1mdW5jdGlvbihlLG4pe3JldHVybntjb2w6ZSx4Om59fSxIcj1mdW5jdGlvbihlKXtyZXR1cm4ganIoZSkubGVmdCgpK3ByKGUpfSxxcj1mdW5jdGlvbihlKXtyZXR1cm4ganIoZSkubGVmdCgpfSxVcj1mdW5jdGlvbihlLG4pe3JldHVybiBGcihlLHFyKG4pKX0sVnI9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gRnIoZSxIcihuKSl9LEtyPWZ1bmN0aW9uKGUpe3JldHVybiBqcihlKS50b3AoKX0sWHI9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gTHIoZSxLcihuKSl9LCRyPWZ1bmN0aW9uKGUsbil7cmV0dXJuIExyKGUsS3IobikrZHIobikpfSxHcj1mdW5jdGlvbih0LG4scil7aWYoMD09PXIubGVuZ3RoKXJldHVybltdO3ZhciBlPWsoci5zbGljZSgxKSxmdW5jdGlvbihlLG4pe3JldHVybiBlLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gdChuLGUpfSl9KSxvPXJbci5sZW5ndGgtMV0ubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBuKHIubGVuZ3RoLTEsZSl9KTtyZXR1cm4gZS5jb25jYXQoW29dKX0sWXI9e2RlbHRhOm8scG9zaXRpb25zOmZ1bmN0aW9uKGUpe3JldHVybiBHcihYciwkcixlKX0sZWRnZTpLcn0sSnI9e2x0cjp7ZGVsdGE6byxlZGdlOnFyLHBvc2l0aW9uczpmdW5jdGlvbihlKXtyZXR1cm4gR3IoVXIsVnIsZSl9fSxydGw6e2RlbHRhOmZ1bmN0aW9uKGUpe3JldHVybi1lfSxlZGdlOkhyLHBvc2l0aW9uczpmdW5jdGlvbihlKXtyZXR1cm4gR3IoVnIsVXIsZSl9fX07ZnVuY3Rpb24gUXIobil7dmFyIHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIG4oZSkuaXNSdGwoKT9Kci5ydGw6SnIubHRyfTtyZXR1cm57ZGVsdGE6ZnVuY3Rpb24oZSxuKXtyZXR1cm4gdChuKS5kZWx0YShlLG4pfSxlZGdlOmZ1bmN0aW9uKGUpe3JldHVybiB0KGUpLmVkZ2UoZSl9LHBvc2l0aW9uczpmdW5jdGlvbihlLG4pe3JldHVybiB0KG4pLnBvc2l0aW9ucyhlLG4pfX19dmFyIFpyPWZ1bmN0aW9uKGUpe3ZhciBuPUduKGUpO3JldHVybiBRbi5nZW5lcmF0ZShuKS5ncmlkfSxlbz1mdW5jdGlvbihlKXtmb3IodmFyIG49W10sdD1mdW5jdGlvbihlKXtuLnB1c2goZSl9LHI9MDtyPGUubGVuZ3RoO3IrKyllW3JdLmVhY2godCk7cmV0dXJuIG59LG5vPWZ1bmN0aW9uKGUsbix0LHIpe3Q9PT1yP3VlKGUsbik6bmUoZSxuLHQpfSx0bz1mdW5jdGlvbihvLGUpe3ZhciBpPVtdLHU9W10sbj1mdW5jdGlvbihlLG4pezA8ZS5sZW5ndGg/ZnVuY3Rpb24oZSxuKXt2YXIgdD1JbihvLG4pLmdldE9yVGh1bmsoZnVuY3Rpb24oKXt2YXIgZT1nZS5mcm9tVGFnKG4sb24obykuZG9tKCkpO3JldHVybiBwbihvLGUpLGV9KTt3bih0KTt2YXIgcj1rKGUsZnVuY3Rpb24oZSl7ZS5pc05ldygpJiZpLnB1c2goZS5lbGVtZW50KCkpO3ZhciBuPWUuZWxlbWVudCgpO3JldHVybiB3bihuKSxCKGUuY2VsbHMoKSxmdW5jdGlvbihlKXtlLmlzTmV3KCkmJnUucHVzaChlLmVsZW1lbnQoKSksbm8oZS5lbGVtZW50KCksImNvbHNwYW4iLGUuY29sc3BhbigpLDEpLG5vKGUuZWxlbWVudCgpLCJyb3dzcGFuIixlLnJvd3NwYW4oKSwxKSxwbihuLGUuZWxlbWVudCgpKX0pLG59KTtibih0LHIpfShlLG4pOkluKG8sbikuZWFjaCh5bil9LHQ9W10scj1bXSxjPVtdO3JldHVybiBCKGUsZnVuY3Rpb24oZSl7c3dpdGNoKGUuc2VjdGlvbigpKXtjYXNlInRoZWFkIjp0LnB1c2goZSk7YnJlYWs7Y2FzZSJ0Ym9keSI6ci5wdXNoKGUpO2JyZWFrO2Nhc2UidGZvb3QiOmMucHVzaChlKX19KSxuKHQsInRoZWFkIiksbihyLCJ0Ym9keSIpLG4oYywidGZvb3QiKSx7bmV3Um93czppLG5ld0NlbGxzOnV9fSxybz1mdW5jdGlvbihlLG4pe3ZhciB0PXJlKGUsbik7cmV0dXJuIHQ9PT11bmRlZmluZWR8fCIiPT09dD9bXTp0LnNwbGl0KCIgIil9LG9vPWZ1bmN0aW9uKGUpe3JldHVybiBlLmRvbSgpLmNsYXNzTGlzdCE9PXVuZGVmaW5lZH0saW89ZnVuY3Rpb24oZSxuKXtyZXR1cm4gbz1uLGk9cm8odD1lLHI9ImNsYXNzIikuY29uY2F0KFtvXSksbmUodCxyLGkuam9pbigiICIpKSwhMDt2YXIgdCxyLG8saX0sdW89ZnVuY3Rpb24oZSxuKXtyZXR1cm4gbz1uLDA8KGk9Tihybyh0PWUscj0iY2xhc3MiKSxmdW5jdGlvbihlKXtyZXR1cm4gZSE9PW99KSkubGVuZ3RoP25lKHQscixpLmpvaW4oIiAiKSk6dWUodCxyKSwhMTt2YXIgdCxyLG8saX0sY289ZnVuY3Rpb24oZSxuKXtvbyhlKT9lLmRvbSgpLmNsYXNzTGlzdC5hZGQobik6aW8oZSxuKX0sYW89ZnVuY3Rpb24oZSl7MD09PShvbyhlKT9lLmRvbSgpLmNsYXNzTGlzdDpybyhlLCJjbGFzcyIpKS5sZW5ndGgmJnVlKGUsImNsYXNzIil9LGxvPWZ1bmN0aW9uKGUsbil7cmV0dXJuIG9vKGUpJiZlLmRvbSgpLmNsYXNzTGlzdC5jb250YWlucyhuKX0sZm89ZnVuY3Rpb24oZSxuKXtmb3IodmFyIHQ9W10scj1lO3I8bjtyKyspdC5wdXNoKHIpO3JldHVybiB0fSxzbz1mdW5jdGlvbihyLG8pe2lmKG88MHx8bz49ci5sZW5ndGgtMSlyZXR1cm4gQy5ub25lKCk7dmFyIGU9cltvXS5mb2xkKGZ1bmN0aW9uKCl7dmFyIGUsbix0PShlPXIuc2xpY2UoMCxvKSwobj1ULmNhbGwoZSwwKSkucmV2ZXJzZSgpLG4pO3JldHVybiBMKHQsZnVuY3Rpb24oZSxuKXtyZXR1cm4gZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJue3ZhbHVlOmUsZGVsdGE6bisxfX0pfSl9LGZ1bmN0aW9uKGUpe3JldHVybiBDLnNvbWUoe3ZhbHVlOmUsZGVsdGE6MH0pfSksbj1yW28rMV0uZm9sZChmdW5jdGlvbigpe3ZhciBlPXIuc2xpY2UobysxKTtyZXR1cm4gTChlLGZ1bmN0aW9uKGUsbil7cmV0dXJuIGUubWFwKGZ1bmN0aW9uKGUpe3JldHVybnt2YWx1ZTplLGRlbHRhOm4rMX19KX0pfSxmdW5jdGlvbihlKXtyZXR1cm4gQy5zb21lKHt2YWx1ZTplLGRlbHRhOjF9KX0pO3JldHVybiBlLmJpbmQoZnVuY3Rpb24odCl7cmV0dXJuIG4ubWFwKGZ1bmN0aW9uKGUpe3ZhciBuPWUuZGVsdGErdC5kZWx0YTtyZXR1cm4gTWF0aC5hYnMoZS52YWx1ZS10LnZhbHVlKS9ufSl9KX0sbW89ZnVuY3Rpb24odCl7dmFyIGU9dC5ncmlkLG49Zm8oMCxlLmNvbHVtbnMoKSkscj1mbygwLGUucm93cygpKTtyZXR1cm4gayhuLGZ1bmN0aW9uKG4pe3JldHVybiBnbyhmdW5jdGlvbigpe3JldHVybiBqKHIsZnVuY3Rpb24oZSl7cmV0dXJuIFFuLmdldEF0KHQsZSxuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY29sdW1uKCk9PT1ufSkuZm9sZChiKFtdKSxmdW5jdGlvbihlKXtyZXR1cm5bZV19KX0pfSxmdW5jdGlvbihlKXtyZXR1cm4gMT09PWUuY29sc3BhbigpfSxmdW5jdGlvbigpe3JldHVybiBRbi5nZXRBdCh0LDAsbil9KX0pfSxnbz1mdW5jdGlvbihlLG4sdCl7dmFyIHI9ZSgpO3JldHVybiBNKHIsbikub3JUaHVuayhmdW5jdGlvbigpe3JldHVybiBDLmZyb20oclswXSkub3JUaHVuayh0KX0pLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5lbGVtZW50KCl9KX0scG89ZnVuY3Rpb24odCl7dmFyIGU9dC5ncmlkLG49Zm8oMCxlLnJvd3MoKSkscj1mbygwLGUuY29sdW1ucygpKTtyZXR1cm4gayhuLGZ1bmN0aW9uKG4pe3JldHVybiBnbyhmdW5jdGlvbigpe3JldHVybiBqKHIsZnVuY3Rpb24oZSl7cmV0dXJuIFFuLmdldEF0KHQsbixlKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUucm93KCk9PT1ufSkuZm9sZChiKFtdKSxmdW5jdGlvbihlKXtyZXR1cm5bZV19KX0pfSxmdW5jdGlvbihlKXtyZXR1cm4gMT09PWUucm93c3BhbigpfSxmdW5jdGlvbigpe3JldHVybiBRbi5nZXRBdCh0LG4sMCl9KX0pfSxobz1mdW5jdGlvbihlKXt2YXIgbj1lLnJlcGxhY2UoL1wuL2csIi0iKTtyZXR1cm57cmVzb2x2ZTpmdW5jdGlvbihlKXtyZXR1cm4gbisiLSIrZX19fSx2bz1obygiZXBob3gtc25vb2tlciIpLnJlc29sdmUsYm89dm8oInJlc2l6ZXItYmFyIiksd289dm8oInJlc2l6ZXItcm93cyIpLHlvPXZvKCJyZXNpemVyLWNvbHMiKSxTbz1mdW5jdGlvbihlKXt2YXIgbj1FbihlLnBhcmVudCgpLCIuIitibyk7QihuLHluKX0seG89ZnVuY3Rpb24odCxlLHIpe3ZhciBvPXQub3JpZ2luKCk7QihlLGZ1bmN0aW9uKGUpe2UuZWFjaChmdW5jdGlvbihlKXt2YXIgbj1yKG8sZSk7Y28obixibykscG4odC5wYXJlbnQoKSxuKX0pfSl9LENvPWZ1bmN0aW9uKGUsbixsLGYpe3hvKGUsbixmdW5jdGlvbihlLG4pe3ZhciB0LHIsbyxpLHUsYyxhPSh0PW4uY29sLHI9bi54LWUubGVmdCgpLG89bC50b3AoKS1lLnRvcCgpLGk9Nyx1PWYsYz1nZS5mcm9tVGFnKCJkaXYiKSx3ZShjLHtwb3NpdGlvbjoiYWJzb2x1dGUiLGxlZnQ6ci1pLzIrInB4Iix0b3A6bysicHgiLGhlaWdodDp1KyJweCIsd2lkdGg6aSsicHgifSksdGUoYyx7ImRhdGEtY29sdW1uIjp0LHJvbGU6InByZXNlbnRhdGlvbiJ9KSxjKTtyZXR1cm4gY28oYSx5byksYX0pfSxSbz1mdW5jdGlvbihlLG4sbCxmKXt4byhlLG4sZnVuY3Rpb24oZSxuKXt2YXIgdCxyLG8saSx1LGMsYT0odD1uLnJvdyxyPWwubGVmdCgpLWUubGVmdCgpLG89bi55LWUudG9wKCksaT1mLHU9NyxjPWdlLmZyb21UYWcoImRpdiIpLHdlKGMse3Bvc2l0aW9uOiJhYnNvbHV0ZSIsbGVmdDpyKyJweCIsdG9wOm8tdS8yKyJweCIsaGVpZ2h0OnUrInB4Iix3aWR0aDppKyJweCJ9KSx0ZShjLHsiZGF0YS1yb3ciOnQscm9sZToicHJlc2VudGF0aW9uIn0pLGMpO3JldHVybiBjbyhhLHdvKSxhfSl9LFRvPWZ1bmN0aW9uKGUsbix0LHIpe1NvKGUpO3ZhciBvPUduKG4pLGk9UW4uZ2VuZXJhdGUobyk7IWZ1bmN0aW9uKGUsbix0LHIsbyxpKXt2YXIgdT1qcihuKSxjPTA8dC5sZW5ndGg/by5wb3NpdGlvbnModCxuKTpbXTtSbyhlLGMsdSxwcihuKSk7dmFyIGE9MDxyLmxlbmd0aD9pLnBvc2l0aW9ucyhyLG4pOltdO0NvKGUsYSx1LGRyKG4pKX0oZSxuLHBvKGkpLG1vKGkpLHQscil9LE9vPWZ1bmN0aW9uKGUsbil7dmFyIHQ9RW4oZS5wYXJlbnQoKSwiLiIrYm8pO0IodCxuKX0sRG89ZnVuY3Rpb24oZSl7T28oZSxmdW5jdGlvbihlKXtiZShlLCJkaXNwbGF5Iiwibm9uZSIpfSl9LEFvPWZ1bmN0aW9uKGUpe09vKGUsZnVuY3Rpb24oZSl7YmUoZSwiZGlzcGxheSIsImJsb2NrIil9KX0sRW89ZnVuY3Rpb24oZSxuLHQpe2UuY2VsbHMoKVtuXT10fSxrbz1mdW5jdGlvbihlLG4pe3JldHVybiBUbihuLGUuc2VjdGlvbigpKX0sQm89ZnVuY3Rpb24oZSxuKXt2YXIgdD1lLmNlbGxzKCkscj1rKHQsbik7cmV0dXJuIFRuKHIsZS5zZWN0aW9uKCkpfSxObz1mdW5jdGlvbihlLG4pe3JldHVybiBlLmNlbGxzKClbbl19LElvPWZ1bmN0aW9uKGUsbil7cmV0dXJuIE5vKGUsbikuZWxlbWVudCgpfSxQbz1mdW5jdGlvbihlKXtyZXR1cm4gZS5jZWxscygpLmxlbmd0aH0sTW89ZnVuY3Rpb24oZSxuKXtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIDA7dmFyIHQ9ZVswXTtyZXR1cm4gXyhlLGZ1bmN0aW9uKGUpe3JldHVybiFuKHQuZWxlbWVudCgpLGUuZWxlbWVudCgpKX0pLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm4gZS5sZW5ndGh9LGZ1bmN0aW9uKGUpe3JldHVybiBlfSl9LF9vPWZ1bmN0aW9uKGUsbix0LHIpe3ZhciBvLGk9ZVtuXS5jZWxscygpLnNsaWNlKHQpLHU9TW8oaSxyKSxjPShvPXQsayhlLGZ1bmN0aW9uKGUpe3JldHVybiBObyhlLG8pfSkuc2xpY2UobikpO3JldHVybntjb2xzcGFuOnUscm93c3BhbjpNbyhjLHIpfX0sV289ZnVuY3Rpb24oYSxsKXt2YXIgZj1rKGEsZnVuY3Rpb24oZSl7cmV0dXJuIGsoZS5jZWxscygpLGZ1bmN0aW9uKCl7cmV0dXJuITF9KX0pO3JldHVybiBrKGEsZnVuY3Rpb24oZSxjKXt2YXIgbix0LHI9aihlLmNlbGxzKCksZnVuY3Rpb24oZSxuKXtpZighMSE9PWZbY11bbl0pcmV0dXJuW107dmFyIHQscixvLGksdT1fbyhhLGMsbixsKTtyZXR1cm4gZnVuY3Rpb24oZSxuLHQscil7Zm9yKHZhciBvPWU7bzxlK3Q7bysrKWZvcih2YXIgaT1uO2k8bityO2krKylmW29dW2ldPSEwfShjLG4sdS5yb3dzcGFuLHUuY29sc3BhbiksWyh0PWUuZWxlbWVudCgpLHI9dS5yb3dzcGFuLG89dS5jb2xzcGFuLGk9ZS5pc05ldygpLHtlbGVtZW50OmIodCkscm93c3BhbjpiKHIpLGNvbHNwYW46YihvKSxpc05ldzpiKGkpfSldfSk7cmV0dXJuIG49cix0PWUuc2VjdGlvbigpLHtkZXRhaWxzOmIobiksc2VjdGlvbjpiKHQpfX0pfSxqbz1mdW5jdGlvbihlLG4sdCl7Zm9yKHZhciByPVtdLG89MDtvPGUuZ3JpZC5yb3dzKCk7bysrKXtmb3IodmFyIGk9W10sdT0wO3U8ZS5ncmlkLmNvbHVtbnMoKTt1Kyspe3ZhciBjPVFuLmdldEF0KGUsbyx1KS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIFJuKGUuZWxlbWVudCgpLHQpfSkuZ2V0T3JUaHVuayhmdW5jdGlvbigpe3JldHVybiBSbihuLmdhcCgpLCEwKX0pO2kucHVzaChjKX12YXIgYT1UbihpLGUuYWxsW29dLnNlY3Rpb24oKSk7ci5wdXNoKGEpfXJldHVybiByfSx6bz1mdW5jdGlvbihlLGMpe3JldHVybiBrKGUsZnVuY3Rpb24oZSl7dmFyIG4sdCxyLG8saSx1PShuPWUuZGV0YWlscygpLEwobixmdW5jdGlvbihlKXtyZXR1cm4gdW4oZS5lbGVtZW50KCkpLm1hcChmdW5jdGlvbihlKXt2YXIgbj11bihlKS5pc05vbmUoKTtyZXR1cm4gUm4oZSxuKX0pfSkuZ2V0T3JUaHVuayhmdW5jdGlvbigpe3JldHVybiBSbihjLnJvdygpLCEwKX0pKTtyZXR1cm4gdD11LmVsZW1lbnQoKSxyPWUuZGV0YWlscygpLG89ZS5zZWN0aW9uKCksaT11LmlzTmV3KCkse2VsZW1lbnQ6Yih0KSxjZWxsczpiKHIpLHNlY3Rpb246YihvKSxpc05ldzpiKGkpfX0pfSxMbz1mdW5jdGlvbihlLG4pe3ZhciB0PVdvKGUsZW4pO3JldHVybiB6byh0LG4pfSxGbz1mdW5jdGlvbihlLG4pe3JldHVybiBMKGUuYWxsLGZ1bmN0aW9uKGUpe3JldHVybiBNKGUuY2VsbHMoKSxmdW5jdGlvbihlKXtyZXR1cm4gZW4obixlLmVsZW1lbnQoKSl9KX0pfSxIbz1mdW5jdGlvbihjLGEsbCxmLHMpe3JldHVybiBmdW5jdGlvbih0LHIsZSxvLGkpe3ZhciBuPUduKHIpLHU9UW4uZ2VuZXJhdGUobik7cmV0dXJuIGEodSxlKS5tYXAoZnVuY3Rpb24oZSl7dmFyIG49am8odSxvLCExKSx0PWMobixlLGVuLHMobykpLHI9TG8odC5ncmlkKCksbyk7cmV0dXJue2dyaWQ6YihyKSxjdXJzb3I6dC5jdXJzb3J9fSkuZm9sZChmdW5jdGlvbigpe3JldHVybiBDLm5vbmUoKX0sZnVuY3Rpb24oZSl7dmFyIG49dG8ocixlLmdyaWQoKSk7cmV0dXJuIGwocixlLmdyaWQoKSxpKSxmKHIpLFRvKHQscixZcixpKSxDLnNvbWUoe2N1cnNvcjplLmN1cnNvcixuZXdSb3dzOmIobi5uZXdSb3dzKSxuZXdDZWxsczpiKG4ubmV3Q2VsbHMpfSl9KX19LHFvPWZ1bmN0aW9uKG4sZSl7cmV0dXJuIFZuKGUuZWxlbWVudCgpKS5iaW5kKGZ1bmN0aW9uKGUpe3JldHVybiBGbyhuLGUpfSl9LFVvPWZ1bmN0aW9uKG4sZSl7dmFyIHQ9ayhlLnNlbGVjdGlvbigpLGZ1bmN0aW9uKGUpe3JldHVybiBWbihlKS5iaW5kKGZ1bmN0aW9uKGUpe3JldHVybiBGbyhuLGUpfSl9KSxyPWVvKHQpO3JldHVybiAwPHIubGVuZ3RoP0Muc29tZSh7Y2VsbHM6cixnZW5lcmF0b3JzOmUuZ2VuZXJhdG9ycyxjbGlwYm9hcmQ6ZS5jbGlwYm9hcmR9KTpDLm5vbmUoKX0sVm89ZnVuY3Rpb24obixlKXt2YXIgdD1rKGUuc2VsZWN0aW9uKCksZnVuY3Rpb24oZSl7cmV0dXJuIFZuKGUpLmJpbmQoZnVuY3Rpb24oZSl7cmV0dXJuIEZvKG4sZSl9KX0pLHI9ZW8odCk7cmV0dXJuIDA8ci5sZW5ndGg/Qy5zb21lKHIpOkMubm9uZSgpfSxLbz1mdW5jdGlvbih0KXtyZXR1cm57aXM6ZnVuY3Rpb24oZSl7cmV0dXJuIHQ9PT1lfSxpc1ZhbHVlOmksaXNFcnJvcjpmLGdldE9yOmIodCksZ2V0T3JUaHVuazpiKHQpLGdldE9yRGllOmIodCksb3I6ZnVuY3Rpb24oZSl7cmV0dXJuIEtvKHQpfSxvclRodW5rOmZ1bmN0aW9uKGUpe3JldHVybiBLbyh0KX0sZm9sZDpmdW5jdGlvbihlLG4pe3JldHVybiBuKHQpfSxtYXA6ZnVuY3Rpb24oZSl7cmV0dXJuIEtvKGUodCkpfSxtYXBFcnJvcjpmdW5jdGlvbihlKXtyZXR1cm4gS28odCl9LGVhY2g6ZnVuY3Rpb24oZSl7ZSh0KX0sYmluZDpmdW5jdGlvbihlKXtyZXR1cm4gZSh0KX0sZXhpc3RzOmZ1bmN0aW9uKGUpe3JldHVybiBlKHQpfSxmb3JhbGw6ZnVuY3Rpb24oZSl7cmV0dXJuIGUodCl9LHRvT3B0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIEMuc29tZSh0KX19fSxYbz1mdW5jdGlvbih0KXtyZXR1cm57aXM6Zixpc1ZhbHVlOmYsaXNFcnJvcjppLGdldE9yOm8sZ2V0T3JUaHVuazpmdW5jdGlvbihlKXtyZXR1cm4gZSgpfSxnZXRPckRpZTpmdW5jdGlvbigpe3JldHVybiBlPVN0cmluZyh0KSxmdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcihlKX0oKTt2YXIgZX0sb3I6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LG9yVGh1bms6ZnVuY3Rpb24oZSl7cmV0dXJuIGUoKX0sZm9sZDpmdW5jdGlvbihlLG4pe3JldHVybiBlKHQpfSxtYXA6ZnVuY3Rpb24oZSl7cmV0dXJuIFhvKHQpfSxtYXBFcnJvcjpmdW5jdGlvbihlKXtyZXR1cm4gWG8oZSh0KSl9LGVhY2g6eCxiaW5kOmZ1bmN0aW9uKGUpe3JldHVybiBYbyh0KX0sZXhpc3RzOmYsZm9yYWxsOmksdG9PcHRpb246Qy5ub25lfX0sJG89e3ZhbHVlOktvLGVycm9yOlhvLGZyb21PcHRpb246ZnVuY3Rpb24oZSxuKXtyZXR1cm4gZS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIFhvKG4pfSxLbyl9fSxHbz1mdW5jdGlvbihlLG4pe3JldHVybntyb3dEZWx0YTowLGNvbERlbHRhOlBvKGVbMF0pLVBvKG5bMF0pfX0sWW89ZnVuY3Rpb24oZSxuKXtyZXR1cm4gayhlLGZ1bmN0aW9uKCl7cmV0dXJuIFJuKG4uY2VsbCgpLCEwKX0pfSxKbz1mdW5jdGlvbihuLGUsdCl7cmV0dXJuIG4uY29uY2F0KGZ1bmN0aW9uKGUsbil7Zm9yKHZhciB0PVtdLHI9MDtyPGU7cisrKXQucHVzaChuKHIpKTtyZXR1cm4gdH0oZSxmdW5jdGlvbihlKXtyZXR1cm4ga28obltuLmxlbmd0aC0xXSxZbyhuW24ubGVuZ3RoLTFdLmNlbGxzKCksdCkpfSkpfSxRbz1mdW5jdGlvbihlLG4sdCl7cmV0dXJuIGsoZSxmdW5jdGlvbihlKXtyZXR1cm4ga28oZSxlLmNlbGxzKCkuY29uY2F0KFlvKGZvKDAsbiksdCkpKX0pfSxabz1mdW5jdGlvbihlLG4sdCl7dmFyIHI9bi5jb2xEZWx0YTwwP1FvOm87cmV0dXJuKG4ucm93RGVsdGE8MD9KbzpvKShyKGUsTWF0aC5hYnMobi5jb2xEZWx0YSksdCksTWF0aC5hYnMobi5yb3dEZWx0YSksdCl9LGVpPWZ1bmN0aW9uKGUsbix0LHIpe2Zvcih2YXIgbz0hMCxpPTA7aTxlLmxlbmd0aDtpKyspZm9yKHZhciB1PTA7dTxQbyhlWzBdKTt1Kyspe3ZhciBjPXQoSW8oZVtpXSx1KSxuKTshMD09PWMmJiExPT09bz9FbyhlW2ldLHUsUm4ocigpLCEwKSk6ITA9PT1jJiYobz0hMSl9cmV0dXJuIGV9LG5pPWZ1bmN0aW9uKGksdCx1LGMpe2lmKDA8dCYmdDxpLmxlbmd0aCl7dmFyIGU9aVt0LTFdLmNlbGxzKCksbj0ocj11LFAoZSxmdW5jdGlvbihlLG4pe3JldHVybiBFKGUsZnVuY3Rpb24oZSl7cmV0dXJuIHIoZS5lbGVtZW50KCksbi5lbGVtZW50KCkpfSk/ZTplLmNvbmNhdChbbl0pfSxbXSkpO0IobixmdW5jdGlvbihyKXtmb3IodmFyIG89Qy5ub25lKCksZT1mdW5jdGlvbih0KXtmb3IodmFyIGU9ZnVuY3Rpb24obil7dmFyIGU9aVt0XS5jZWxscygpW25dO3UoZS5lbGVtZW50KCksci5lbGVtZW50KCkpJiYoby5pc05vbmUoKSYmKG89Qy5zb21lKGMoKSkpLG8uZWFjaChmdW5jdGlvbihlKXtFbyhpW3RdLG4sUm4oZSwhMCkpfSkpfSxuPTA7bjxQbyhpWzBdKTtuKyspZShuKX0sbj10O248aS5sZW5ndGg7bisrKWUobil9KX12YXIgcjtyZXR1cm4gaX0sdGk9ZnVuY3Rpb24odCxyLG8saSx1KXtyZXR1cm4gZnVuY3Rpb24oZSxuLHQpe2lmKGUucm93KCk+PW4ubGVuZ3RofHxlLmNvbHVtbigpPlBvKG5bMF0pKXJldHVybiAkby5lcnJvcigiaW52YWxpZCBzdGFydCBhZGRyZXNzIG91dCBvZiB0YWJsZSBib3VuZHMsIHJvdzogIitlLnJvdygpKyIsIGNvbHVtbjogIitlLmNvbHVtbigpKTt2YXIgcj1uLnNsaWNlKGUucm93KCkpLG89clswXS5jZWxscygpLnNsaWNlKGUuY29sdW1uKCkpLGk9UG8odFswXSksdT10Lmxlbmd0aDtyZXR1cm4gJG8udmFsdWUoe3Jvd0RlbHRhOnIubGVuZ3RoLXUsY29sRGVsdGE6by5sZW5ndGgtaX0pfSh0LHIsbykubWFwKGZ1bmN0aW9uKGUpe3ZhciBuPVpvKHIsZSxpKTtyZXR1cm4gZnVuY3Rpb24oZSxuLHQscixvKXtmb3IodmFyIGksdSxjLGEsbCxmPWUucm93KCkscz1lLmNvbHVtbigpLGQ9Zit0Lmxlbmd0aCxtPXMrUG8odFswXSksZz1mO2c8ZDtnKyspZm9yKHZhciBwPXM7cDxtO3ArKyl7Yz1wLGw9YT12b2lkIDAsYT15KG8sTm8oKGk9bilbdT1nXSxjKS5lbGVtZW50KCkpLGw9aVt1XSwxPGkubGVuZ3RoJiYxPFBvKGwpJiYoMDxjJiZhKElvKGwsYy0xKSl8fGM8bC5jZWxscygpLmxlbmd0aC0xJiZhKElvKGwsYysxKSl8fDA8dSYmYShJbyhpW3UtMV0sYykpfHx1PGkubGVuZ3RoLTEmJmEoSW8oaVt1KzFdLGMpKSkmJmVpKG4sSW8obltnXSxwKSxvLHIuY2VsbCk7dmFyIGg9SW8odFtnLWZdLHAtcyksdj1yLnJlcGxhY2UoaCk7RW8obltnXSxwLFJuKHYsITApKX1yZXR1cm4gbn0odCxuLG8saSx1KX0pfSxyaT1mdW5jdGlvbihlLG4sdCxyLG8pe25pKG4sZSxvLHIuY2VsbCk7dmFyIGk9R28odCxuKSx1PVpvKHQsaSxyKSxjPUdvKG4sdSksYT1abyhuLGMscik7cmV0dXJuIGEuc2xpY2UoMCxlKS5jb25jYXQodSkuY29uY2F0KGEuc2xpY2UoZSxhLmxlbmd0aCkpfSxvaT1mdW5jdGlvbih0LHIsZSxvLGkpe3ZhciBuPXQuc2xpY2UoMCxyKSx1PXQuc2xpY2UociksYz1Cbyh0W2VdLGZ1bmN0aW9uKGUsbil7cmV0dXJuIDA8ciYmcjx0Lmxlbmd0aCYmbyhJbyh0W3ItMV0sbiksSW8odFtyXSxuKSk/Tm8odFtyXSxuKTpSbihpKGUuZWxlbWVudCgpLG8pLCEwKX0pO3JldHVybiBuLmNvbmNhdChbY10pLmNvbmNhdCh1KX0saWk9ZnVuY3Rpb24oZSxsLGYscyxkKXtyZXR1cm4gayhlLGZ1bmN0aW9uKGUpe3ZhciBuLHQscixvLGksdSxjLGE9MDxsJiZsPFBvKGUpJiZzKElvKGUsbC0xKSxJbyhlLGwpKT9ObyhlLGwpOlJuKGQoSW8oZSxmKSxzKSwhMCk7cmV0dXJuIHQ9bCxyPWEsbz0obj1lKS5jZWxscygpLGk9by5zbGljZSgwLHQpLHU9by5zbGljZSh0KSxjPWkuY29uY2F0KFtyXSkuY29uY2F0KHUpLGtvKG4sYyl9KX0sdWk9ZnVuY3Rpb24oZSx0LHIsbyl7cmV0dXJuIGsoZSxmdW5jdGlvbihlKXtyZXR1cm4gQm8oZSxmdW5jdGlvbihlKXtyZXR1cm4gbj1lLEUodCxmdW5jdGlvbihlKXtyZXR1cm4gcihuLmVsZW1lbnQoKSxlLmVsZW1lbnQoKSl9KT9SbihvKGUuZWxlbWVudCgpLHIpLCEwKTplO3ZhciBufSl9KX0sY2k9ZnVuY3Rpb24oZSxuLHQscil7cmV0dXJuIElvKGVbbl0sdCkhPT11bmRlZmluZWQmJjA8biYmcihJbyhlW24tMV0sdCksSW8oZVtuXSx0KSl9LGFpPWZ1bmN0aW9uKGUsbix0KXtyZXR1cm4gMDxuJiZ0KElvKGUsbi0xKSxJbyhlLG4pKX0sbGk9ZnVuY3Rpb24odCxyLG8sZSl7dmFyIG49aih0LGZ1bmN0aW9uKGUsbil7cmV0dXJuIGNpKHQsbixyLG8pfHxhaShlLHIsbyk/W106W05vKGUscildfSk7cmV0dXJuIHVpKHQsbixvLGUpfSxmaT1mdW5jdGlvbih0LHIsbyxlKXt2YXIgaT10W3JdLG49aihpLmNlbGxzKCksZnVuY3Rpb24oZSxuKXtyZXR1cm4gY2kodCxyLG4sbyl8fGFpKGksbixvKT9bXTpbZV19KTtyZXR1cm4gdWkodCxuLG8sZSl9LHNpPVp0KFt7bm9uZTpbXX0se29ubHk6WyJpbmRleCJdfSx7bGVmdDpbImluZGV4IiwibmV4dCJdfSx7bWlkZGxlOlsicHJldiIsImluZGV4IiwibmV4dCJdfSx7cmlnaHQ6WyJwcmV2IiwiaW5kZXgiXX1dKSxkaT1SZSh7fSxzaSksbWk9ZnVuY3Rpb24oZSxuLGksdSl7dmFyIHQscixjPWUuc2xpY2UoMCksbz0ocj1uLDA9PT0odD1lKS5sZW5ndGg/ZGkubm9uZSgpOjE9PT10Lmxlbmd0aD9kaS5vbmx5KDApOjA9PT1yP2RpLmxlZnQoMCwxKTpyPT09dC5sZW5ndGgtMT9kaS5yaWdodChyLTEscik6MDxyJiZyPHQubGVuZ3RoLTE/ZGkubWlkZGxlKHItMSxyLHIrMSk6ZGkubm9uZSgpKSxhPWZ1bmN0aW9uKGUpe3JldHVybiBrKGUsYigwKSl9LGw9YihhKGMpKSxmPWZ1bmN0aW9uKGUsbil7aWYoMDw9aSl7dmFyIHQ9TWF0aC5tYXgodS5taW5DZWxsV2lkdGgoKSxjW25dLWkpO3JldHVybiBhKGMuc2xpY2UoMCxlKSkuY29uY2F0KFtpLHQtY1tuXV0pLmNvbmNhdChhKGMuc2xpY2UobisxKSkpfXZhciByPU1hdGgubWF4KHUubWluQ2VsbFdpZHRoKCksY1tlXStpKSxvPWNbZV0tcjtyZXR1cm4gYShjLnNsaWNlKDAsZSkpLmNvbmNhdChbci1jW2VdLG9dKS5jb25jYXQoYShjLnNsaWNlKG4rMSkpKX0scz1mO3JldHVybiBvLmZvbGQobCxmdW5jdGlvbihlKXtyZXR1cm4gdS5zaW5nbGVDb2x1bW5XaWR0aChjW2VdLGkpfSxzLGZ1bmN0aW9uKGUsbix0KXtyZXR1cm4gZihuLHQpfSxmdW5jdGlvbihlLG4pe2lmKDA8PWkpcmV0dXJuIGEoYy5zbGljZSgwLG4pKS5jb25jYXQoW2ldKTt2YXIgdD1NYXRoLm1heCh1Lm1pbkNlbGxXaWR0aCgpLGNbbl0raSk7cmV0dXJuIGEoYy5zbGljZSgwLG4pKS5jb25jYXQoW3QtY1tuXV0pfSl9LGdpPWZ1bmN0aW9uKGUsbix0LHIsbyl7dmFyIGk9bW8oZSksdT1rKGksZnVuY3Rpb24oZSl7cmV0dXJuIGUubWFwKG4uZWRnZSl9KTtyZXR1cm4gayhpLGZ1bmN0aW9uKGUsbil7cmV0dXJuIGUuZmlsdGVyKGEoam4pKS5mb2xkKGZ1bmN0aW9uKCl7dmFyIGU9c28odSxuKTtyZXR1cm4gcihlKX0sZnVuY3Rpb24oZSl7cmV0dXJuIHQoZSxvKX0pfSl9LHBpPWZ1bmN0aW9uKGUsbix0KXtyZXR1cm4gZ2koZSxuLEFyLGZ1bmN0aW9uKGUpe3JldHVybiBlLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm4gdC5taW5DZWxsV2lkdGgoKX0sZnVuY3Rpb24oZSl7cmV0dXJuIGUvdC5waXhlbFdpZHRoKCkqMTAwfSl9LHQpfSxoaT1mdW5jdGlvbihlLG4sdCl7cmV0dXJuIGdpKGUsbixFcixmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRPclRodW5rKHQubWluQ2VsbFdpZHRoKX0sdCl9LHZpPWZ1bmN0aW9uKGUsbil7cmV0dXJuIHQ9bixyPWtyLG89ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0T3JUaHVuayhIbil9LGk9cG8oZSksdT1rKGksZnVuY3Rpb24oZSl7cmV0dXJuIGUubWFwKHQuZWRnZSl9KSxrKGksZnVuY3Rpb24oZSxuKXtyZXR1cm4gZS5maWx0ZXIoYSh6bikpLmZvbGQoZnVuY3Rpb24oKXt2YXIgZT1zbyh1LG4pO3JldHVybiBvKGUpfSxmdW5jdGlvbihlKXtyZXR1cm4gcihlKX0pfSk7dmFyIHQscixvLGksdX0sYmk9ZnVuY3Rpb24oZSxuLHQpe2Zvcih2YXIgcj0wLG89ZTtvPG47bysrKXIrPXRbb10hPT11bmRlZmluZWQ/dFtvXTowO3JldHVybiByfSx3aT1mdW5jdGlvbihlLHQpe3ZhciBuPVFuLmp1c3RDZWxscyhlKTtyZXR1cm4gayhuLGZ1bmN0aW9uKGUpe3ZhciBuPWJpKGUuY29sdW1uKCksZS5jb2x1bW4oKStlLmNvbHNwYW4oKSx0KTtyZXR1cm57ZWxlbWVudDplLmVsZW1lbnQoKSx3aWR0aDpuLGNvbHNwYW46ZS5jb2xzcGFuKCl9fSl9LHlpPWZ1bmN0aW9uKGUpe3JldHVybnt3aWR0aDpiKGUpLHBpeGVsV2lkdGg6YihlKSxnZXRXaWR0aHM6aGksZ2V0Q2VsbERlbHRhOm8sc2luZ2xlQ29sdW1uV2lkdGg6ZnVuY3Rpb24oZSxuKXtyZXR1cm5bTWF0aC5tYXgoRm4oKSxlK24pLWVdfSxtaW5DZWxsV2lkdGg6Rm4sc2V0RWxlbWVudFdpZHRoOlNyLHNldFRhYmxlV2lkdGg6ZnVuY3Rpb24oZSxuLHQpe3ZhciByPUkobixmdW5jdGlvbihlLG4pe3JldHVybiBlK259LDApO1NyKGUscil9fX0sU2k9ZnVuY3Rpb24oZSxuKXt2YXIgdCxyLG8saSx1PU5yKCkuZXhlYyhuKTtpZihudWxsIT09dSlyZXR1cm4gdD11WzFdLHI9ZSxvPXBhcnNlRmxvYXQodCksaT1ncihyKSx7d2lkdGg6YihvKSxwaXhlbFdpZHRoOmIoaSksZ2V0V2lkdGhzOnBpLGdldENlbGxEZWx0YTpmdW5jdGlvbihlKXtyZXR1cm4gZS9pKjEwMH0sc2luZ2xlQ29sdW1uV2lkdGg6ZnVuY3Rpb24oZSxuKXtyZXR1cm5bMTAwLWVdfSxtaW5DZWxsV2lkdGg6ZnVuY3Rpb24oKXtyZXR1cm4gRm4oKS9pKjEwMH0sc2V0RWxlbWVudFdpZHRoOnhyLHNldFRhYmxlV2lkdGg6ZnVuY3Rpb24oZSxuLHQpe3hyKGUsbyt0LzEwMCpvKX19O3ZhciBjPUlyKCkuZXhlYyhuKTtpZihudWxsIT09Yyl7dmFyIGE9cGFyc2VJbnQoY1sxXSwxMCk7cmV0dXJuIHlpKGEpfXZhciBsPWdyKGUpO3JldHVybiB5aShsKX0seGk9ZnVuY3Rpb24obil7cmV0dXJuIE9yKG4pLmZvbGQoZnVuY3Rpb24oKXt2YXIgZT1ncihuKTtyZXR1cm4geWkoZSl9LGZ1bmN0aW9uKGUpe3JldHVybiBTaShuLGUpfSl9LENpPWZ1bmN0aW9uKGUpe3JldHVybiBRbi5nZW5lcmF0ZShlKX0sUmk9ZnVuY3Rpb24oZSl7dmFyIG49R24oZSk7cmV0dXJuIENpKG4pfSxUaT1mdW5jdGlvbihlLHQscixuKXt2YXIgbyxpLHUsYyxhPVJpKGUpLGw9dmkoYSxuKSxmPWsobCxmdW5jdGlvbihlLG4pe3JldHVybiByPT09bj9NYXRoLm1heCh0K2UsSG4oKSk6ZX0pLHM9KG89YSxpPWYsdT1Rbi5qdXN0Q2VsbHMobyksayh1LGZ1bmN0aW9uKGUpe3ZhciBuPWJpKGUucm93KCksZS5yb3coKStlLnJvd3NwYW4oKSxpKTtyZXR1cm57ZWxlbWVudDplLmVsZW1lbnQsaGVpZ2h0OmIobikscm93c3BhbjplLnJvd3NwYW59fSkpLGQ9KGM9ZixrKGEuYWxsLGZ1bmN0aW9uKGUsbil7cmV0dXJue2VsZW1lbnQ6ZS5lbGVtZW50LGhlaWdodDpiKGNbbl0pfX0pKTtCKGQsZnVuY3Rpb24oZSl7Q3IoZS5lbGVtZW50KCksZS5oZWlnaHQoKSl9KSxCKHMsZnVuY3Rpb24oZSl7Q3IoZS5lbGVtZW50KCksZS5oZWlnaHQoKSl9KTt2YXIgbT1JKGYsZnVuY3Rpb24oZSxuKXtyZXR1cm4gZStufSwwKTtDcihlLG0pfSxPaT1mdW5jdGlvbihlKXtyZXR1cm4gZS5zbGljZSgwKS5zb3J0KCl9LERpPWZ1bmN0aW9uKHIsbyxpKXtpZigwPT09by5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJZb3UgbXVzdCBzcGVjaWZ5IGF0IGxlYXN0IG9uZSByZXF1aXJlZCBmaWVsZC4iKTt2YXIgdDtyZXR1cm4gZnVuY3Rpb24obixlKXtpZighaChlKSl0aHJvdyBuZXcgRXJyb3IoIlRoZSAiK24rIiBmaWVsZHMgbXVzdCBiZSBhbiBhcnJheS4gV2FzOiAiK2UrIi4iKTtCKGUsZnVuY3Rpb24oZSl7aWYoIWcoZSkpdGhyb3cgbmV3IEVycm9yKCJUaGUgdmFsdWUgIitlKyIgaW4gdGhlICIrbisiIGZpZWxkcyB3YXMgbm90IGEgc3RyaW5nLiIpfSl9KCJyZXF1aXJlZCIsbyksdD1PaShvKSxNKHQsZnVuY3Rpb24oZSxuKXtyZXR1cm4gbjx0Lmxlbmd0aC0xJiZlPT09dFtuKzFdfSkuZWFjaChmdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoIlRoZSBmaWVsZDogIitlKyIgb2NjdXJzIG1vcmUgdGhhbiBvbmNlIGluIHRoZSBjb21iaW5lZCBmaWVsZHM6IFsiK3Quam9pbigiLCAiKSsiXS4iKX0pLGZ1bmN0aW9uKG4pe3ZhciB0PUYobik7eihvLGZ1bmN0aW9uKGUpe3JldHVybiBBKHQsZSl9KXx8ZnVuY3Rpb24oZSxuKXt0aHJvdyBuZXcgRXJyb3IoIkFsbCByZXF1aXJlZCBrZXlzICgiK09pKGUpLmpvaW4oIiwgIikrIikgd2VyZSBub3Qgc3BlY2lmaWVkLiBTcGVjaWZpZWQga2V5cyB3ZXJlOiAiK09pKG4pLmpvaW4oIiwgIikrIi4iKX0obyx0KSxyKG8sdCk7dmFyIGU9TihvLGZ1bmN0aW9uKGUpe3JldHVybiFpLnZhbGlkYXRlKG5bZV0sZSl9KTtyZXR1cm4gMDxlLmxlbmd0aCYmZnVuY3Rpb24oZSxuKXt0aHJvdyBuZXcgRXJyb3IoIkFsbCB2YWx1ZXMgbmVlZCB0byBiZSBvZiB0eXBlOiAiK24rIi4gS2V5cyAoIitPaShlKS5qb2luKCIsICIpKyIpIHdlcmUgbm90LiIpfShlLGkubGFiZWwpLG59fSxBaT1mdW5jdGlvbihuLGUpe3ZhciB0PU4oZSxmdW5jdGlvbihlKXtyZXR1cm4hQShuLGUpfSk7MDx0Lmxlbmd0aCYmZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBrZXlzIGZvciBvYmplY3Q6ICIrT2koZSkuam9pbigiLCAiKSl9KHQpfSxFaT1mdW5jdGlvbihlKXtyZXR1cm4gRGkoQWksZSx7dmFsaWRhdGU6dyxsYWJlbDoiZnVuY3Rpb24ifSl9LGtpPUVpKFsiY2VsbCIsInJvdyIsInJlcGxhY2UiLCJnYXAiXSksQmk9ZnVuY3Rpb24oZSl7dmFyIG49X24oZSwiY29sc3BhbiIsMSksdD1fbihlLCJyb3dzcGFuIiwxKTtyZXR1cm57ZWxlbWVudDpiKGUpLGNvbHNwYW46YihuKSxyb3dzcGFuOmIodCl9fSxOaT1mdW5jdGlvbihyLG8pe3ZvaWQgMD09PW8mJihvPUJpKSxraShyKTt2YXIgdD1TKEMubm9uZSgpKSxpPWZ1bmN0aW9uKGUpe3ZhciBuLHQ9byhlKTtyZXR1cm4gbj10LHIuY2VsbChuKX0sdT1mdW5jdGlvbihlKXt2YXIgbj1pKGUpO3JldHVybiB0LmdldCgpLmlzTm9uZSgpJiZ0LnNldChDLnNvbWUobikpLGM9Qy5zb21lKHtpdGVtOmUscmVwbGFjZW1lbnQ6bn0pLG59LGM9Qy5ub25lKCk7cmV0dXJue2dldE9ySW5pdDpmdW5jdGlvbihuLHQpe3JldHVybiBjLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm4gdShuKX0sZnVuY3Rpb24oZSl7cmV0dXJuIHQobixlLml0ZW0pP2UucmVwbGFjZW1lbnQ6dShuKX0pfSxjdXJzb3I6dC5nZXR9fSxJaT1mdW5jdGlvbihjLGEpe3JldHVybiBmdW5jdGlvbihyKXt2YXIgbz1TKEMubm9uZSgpKTtraShyKTt2YXIgaT1bXSx1PWZ1bmN0aW9uKGUpe3ZhciBuPXtzY29wZTpjfSx0PXIucmVwbGFjZShlLGEsbik7cmV0dXJuIGkucHVzaCh7aXRlbTplLHN1Yjp0fSksby5nZXQoKS5pc05vbmUoKSYmby5zZXQoQy5zb21lKHQpKSx0fTtyZXR1cm57cmVwbGFjZU9ySW5pdDpmdW5jdGlvbihuLHQpe3JldHVybiByPW4sbz10LE0oaSxmdW5jdGlvbihlKXtyZXR1cm4gbyhlLml0ZW0scil9KS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIHUobil9LGZ1bmN0aW9uKGUpe3JldHVybiB0KG4sZS5pdGVtKT9lLnN1Yjp1KG4pfSk7dmFyIHIsb30sY3Vyc29yOm8uZ2V0fX19LFBpPWZ1bmN0aW9uKHQpe2tpKHQpO3ZhciBlPVMoQy5ub25lKCkpO3JldHVybntjb21iaW5lOmZ1bmN0aW9uKG4pe3JldHVybiBlLmdldCgpLmlzTm9uZSgpJiZlLnNldChDLnNvbWUobikpLGZ1bmN0aW9uKCl7dmFyIGU9dC5jZWxsKHtlbGVtZW50OmIobiksY29sc3BhbjpiKDEpLHJvd3NwYW46YigxKX0pO3JldHVybiBDZShlLCJ3aWR0aCIpLENlKG4sIndpZHRoIiksZX19LGN1cnNvcjplLmdldH19LE1pPVsiYm9keSIsInAiLCJkaXYiLCJhcnRpY2xlIiwiYXNpZGUiLCJmaWdjYXB0aW9uIiwiZmlndXJlIiwiZm9vdGVyIiwiaGVhZGVyIiwibmF2Iiwic2VjdGlvbiIsIm9sIiwidWwiLCJ0YWJsZSIsInRoZWFkIiwidGZvb3QiLCJ0Ym9keSIsImNhcHRpb24iLCJ0ciIsInRkIiwidGgiLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJibG9ja3F1b3RlIiwicHJlIiwiYWRkcmVzcyJdLF9pPUJ0KCksV2k9ZnVuY3Rpb24oZSl7cmV0dXJuIG49ZSx0PV9pLnByb3BlcnR5KCkubmFtZShuKSxBKE1pLHQpO3ZhciBuLHR9LGppPWZ1bmN0aW9uKGUpe3JldHVybiBuPWUsdD1faS5wcm9wZXJ0eSgpLm5hbWUobiksQShbIm9sIiwidWwiXSx0KTt2YXIgbix0fSx6aT1mdW5jdGlvbihlKXtyZXR1cm4gbj1lLEEoWyJiciIsImltZyIsImhyIiwiaW5wdXQiXSxfaS5wcm9wZXJ0eSgpLm5hbWUobikpO3ZhciBufSxMaT1mdW5jdGlvbihlKXt2YXIgbixpPWZ1bmN0aW9uKGUpe3JldHVybiJiciI9PT0kKGUpfSx0PWZ1bmN0aW9uKG8pe3JldHVybiBhdChvKS5iaW5kKGZ1bmN0aW9uKHQpe3ZhciByPWxuKHQpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4hIVdpKGUpfHwhIXppKGUpJiYiaW1nIiE9PSQoZSl9KS5nZXRPcighMSk7cmV0dXJuIHVuKHQpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4hMD09PXJ8fCgibGkiPT09JChuPWUpfHxCbihuLGppKS5pc1NvbWUoKSl8fGkodCl8fFdpKGUpJiYhZW4obyxlKT9bXTpbZ2UuZnJvbVRhZygiYnIiKV07dmFyIG59KX0pLmdldE9yKFtdKX0scj0wPT09KG49aihlLGZ1bmN0aW9uKGUpe3ZhciBuPWZuKGUpO3JldHVybiB6KG4sZnVuY3Rpb24oZSl7cmV0dXJuIGkoZSl8fFooZSkmJjA9PT1udChlKS50cmltKCkubGVuZ3RofSk/W106bi5jb25jYXQodChlKSl9KSkubGVuZ3RoP1tnZS5mcm9tVGFnKCJiciIpXTpuO3duKGVbMF0pLGJuKGVbMF0scil9LEZpPWZ1bmN0aW9uKGUpezA9PT1LbihlKS5sZW5ndGgmJnluKGUpfSxIaT1mdW5jdGlvbihlLG4pe3JldHVybntncmlkOmIoZSksY3Vyc29yOmIobil9fSxxaT1mdW5jdGlvbihlLG4sdCl7cmV0dXJuIFVpKGUsbix0KS5vclRodW5rKGZ1bmN0aW9uKCl7cmV0dXJuIFVpKGUsMCwwKX0pfSxVaT1mdW5jdGlvbihlLG4sdCl7cmV0dXJuIEMuZnJvbShlW25dKS5iaW5kKGZ1bmN0aW9uKGUpe3JldHVybiBDLmZyb20oZS5jZWxscygpW3RdKS5iaW5kKGZ1bmN0aW9uKGUpe3JldHVybiBDLmZyb20oZS5lbGVtZW50KCkpfSl9KX0sVmk9ZnVuY3Rpb24oZSxuLHQpe3JldHVybiBIaShlLFVpKGUsbix0KSl9LEtpPWZ1bmN0aW9uKGUpe3JldHVybiBQKGUsZnVuY3Rpb24oZSxuKXtyZXR1cm4gRShlLGZ1bmN0aW9uKGUpe3JldHVybiBlLnJvdygpPT09bi5yb3coKX0pP2U6ZS5jb25jYXQoW25dKX0sW10pLnNvcnQoZnVuY3Rpb24oZSxuKXtyZXR1cm4gZS5yb3coKS1uLnJvdygpfSl9LFhpPWZ1bmN0aW9uKGUpe3JldHVybiBQKGUsZnVuY3Rpb24oZSxuKXtyZXR1cm4gRShlLGZ1bmN0aW9uKGUpe3JldHVybiBlLmNvbHVtbigpPT09bi5jb2x1bW4oKX0pP2U6ZS5jb25jYXQoW25dKX0sW10pLnNvcnQoZnVuY3Rpb24oZSxuKXtyZXR1cm4gZS5jb2x1bW4oKS1uLmNvbHVtbigpfSl9LCRpPWZ1bmN0aW9uKGUsbix0KXt2YXIgcixvPShyPXQsayhlLGZ1bmN0aW9uKGUpe3ZhciBuPWsoS24oZSksZnVuY3Rpb24oZSl7dmFyIG49X24oZSwicm93c3BhbiIsMSksdD1fbihlLCJjb2xzcGFuIiwxKTtyZXR1cm4geG4oZSxuLHQpfSk7cmV0dXJuIENuKGUsbixyLnNlY3Rpb24oKSl9KSksaT1Rbi5nZW5lcmF0ZShvKTtyZXR1cm4gam8oaSxuLCEwKX0sR2k9ZnVuY3Rpb24oZSxuLHQpe3ZhciByPXhpKGUpLG89Q2kobiksaT1yLmdldFdpZHRocyhvLHQsciksdT13aShvLGkpO0IodSxmdW5jdGlvbihlKXtyLnNldEVsZW1lbnRXaWR0aChlLmVsZW1lbnQsZS53aWR0aCl9KSwwPHUubGVuZ3RoJiZyLnNldFRhYmxlV2lkdGgoZSxpLHIuZ2V0Q2VsbERlbHRhKDApKX0sWWk9SG8oZnVuY3Rpb24oZSxuLHQscil7dmFyIG89blswXS5yb3coKSxpPW5bMF0ucm93KCksdT1LaShuKSxjPVAodSxmdW5jdGlvbihlLG4pe3JldHVybiBvaShlLGksbyx0LHIuZ2V0T3JJbml0KX0sZSk7cmV0dXJuIFZpKGMsaSxuWzBdLmNvbHVtbigpKX0sVm8seCx4LE5pKSxKaT1IbyhmdW5jdGlvbihlLG4sdCxyKXt2YXIgbz1LaShuKSxpPW9bby5sZW5ndGgtMV0ucm93KCksdT1vW28ubGVuZ3RoLTFdLnJvdygpK29bby5sZW5ndGgtMV0ucm93c3BhbigpLGM9UChvLGZ1bmN0aW9uKGUsbil7cmV0dXJuIG9pKGUsdSxpLHQsci5nZXRPckluaXQpfSxlKTtyZXR1cm4gVmkoYyx1LG5bMF0uY29sdW1uKCkpfSxWbyx4LHgsTmkpLFFpPUhvKGZ1bmN0aW9uKGUsbix0LHIpe3ZhciBvPVhpKG4pLGk9b1swXS5jb2x1bW4oKSx1PW9bMF0uY29sdW1uKCksYz1QKG8sZnVuY3Rpb24oZSxuKXtyZXR1cm4gaWkoZSx1LGksdCxyLmdldE9ySW5pdCl9LGUpO3JldHVybiBWaShjLG5bMF0ucm93KCksdSl9LFZvLEdpLHgsTmkpLFppPUhvKGZ1bmN0aW9uKGUsbix0LHIpe3ZhciBvPW5bbi5sZW5ndGgtMV0uY29sdW1uKCksaT1uW24ubGVuZ3RoLTFdLmNvbHVtbigpK25bbi5sZW5ndGgtMV0uY29sc3BhbigpLHU9WGkobiksYz1QKHUsZnVuY3Rpb24oZSxuKXtyZXR1cm4gaWkoZSxpLG8sdCxyLmdldE9ySW5pdCl9LGUpO3JldHVybiBWaShjLG5bMF0ucm93KCksaSl9LFZvLEdpLHgsTmkpLGV1PUhvKGZ1bmN0aW9uKGUsbix0LHIpe3ZhciBvLGksdSxjLGE9WGkobiksbD0obz1lLGk9YVswXS5jb2x1bW4oKSx1PWFbYS5sZW5ndGgtMV0uY29sdW1uKCksYz1rKG8sZnVuY3Rpb24oZSl7dmFyIG49ZS5jZWxscygpLnNsaWNlKDAsaSkuY29uY2F0KGUuY2VsbHMoKS5zbGljZSh1KzEpKTtyZXR1cm4gVG4obixlLnNlY3Rpb24oKSl9KSxOKGMsZnVuY3Rpb24oZSl7cmV0dXJuIDA8ZS5jZWxscygpLmxlbmd0aH0pKSxmPXFpKGwsblswXS5yb3coKSxuWzBdLmNvbHVtbigpKTtyZXR1cm4gSGkobCxmKX0sVm8sR2ksRmksTmkpLG51PUhvKGZ1bmN0aW9uKGUsbix0LHIpe3ZhciBvLGksdSxjPUtpKG4pLGE9KG89ZSxpPWNbMF0ucm93KCksdT1jW2MubGVuZ3RoLTFdLnJvdygpLG8uc2xpY2UoMCxpKS5jb25jYXQoby5zbGljZSh1KzEpKSksbD1xaShhLG5bMF0ucm93KCksblswXS5jb2x1bW4oKSk7cmV0dXJuIEhpKGEsbCl9LFZvLHgsRmksTmkpLHR1PShIbyhmdW5jdGlvbihlLG4sdCxyKXt2YXIgbz1saShlLG4uY29sdW1uKCksdCxyLnJlcGxhY2VPckluaXQpO3JldHVybiBWaShvLG4ucm93KCksbi5jb2x1bW4oKSl9LHFvLHgseCxJaSgicm93IiwidGgiKSksSG8oZnVuY3Rpb24oZSxuLHQscil7dmFyIG89bGkoZSxuLmNvbHVtbigpLHQsci5yZXBsYWNlT3JJbml0KTtyZXR1cm4gVmkobyxuLnJvdygpLG4uY29sdW1uKCkpfSxxbyx4LHgsSWkobnVsbCwidGQiKSksSG8oZnVuY3Rpb24oZSxuLHQscil7dmFyIG89ZmkoZSxuLnJvdygpLHQsci5yZXBsYWNlT3JJbml0KTtyZXR1cm4gVmkobyxuLnJvdygpLG4uY29sdW1uKCkpfSxxbyx4LHgsSWkoImNvbCIsInRoIikpLEhvKGZ1bmN0aW9uKGUsbix0LHIpe3ZhciBvPWZpKGUsbi5yb3coKSx0LHIucmVwbGFjZU9ySW5pdCk7cmV0dXJuIFZpKG8sbi5yb3coKSxuLmNvbHVtbigpKX0scW8seCx4LElpKG51bGwsInRkIikpLEhvKGZ1bmN0aW9uKGUsbix0LHIpe3ZhciBvPW4uY2VsbHMoKTtMaShvKTt2YXIgaT1mdW5jdGlvbihlLG4sdCl7aWYoMD09PWUubGVuZ3RoKXJldHVybiBlO2Zvcih2YXIgcj1uLnN0YXJ0Um93KCk7cjw9bi5maW5pc2hSb3coKTtyKyspZm9yKHZhciBvPW4uc3RhcnRDb2woKTtvPD1uLmZpbmlzaENvbCgpO28rKylFbyhlW3JdLG8sUm4odCgpLCExKSk7cmV0dXJuIGV9KGUsbi5ib3VuZHMoKSxiKG9bMF0pKTtyZXR1cm4gSGkoaSxDLmZyb20ob1swXSkpfSxmdW5jdGlvbihlLG4pe3JldHVybiBuLm1lcmdhYmxlKCl9LHgseCxQaSkpLHJ1PUhvKGZ1bmN0aW9uKGUsbix0LHIpe3ZhciBvPUkobixmdW5jdGlvbihlLG4pe3JldHVybiBlaShlLG4sdCxyLmNvbWJpbmUobikpfSxlKTtyZXR1cm4gSGkobyxDLmZyb20oblswXSkpfSxmdW5jdGlvbihlLG4pe3JldHVybiBuLnVubWVyZ2FibGUoKX0sR2kseCxQaSksb3U9SG8oZnVuY3Rpb24oZSx0LG4scil7dmFyIG8saSx1LGMsYSxsLGY9KG89dC5jbGlwYm9hcmQoKSxpPXQuZ2VuZXJhdG9ycygpLHU9R24obyksYz1Rbi5nZW5lcmF0ZSh1KSxqbyhjLGksITApKSxzPShhPXQucm93KCksbD10LmNvbHVtbigpLHtyb3c6YihhKSxjb2x1bW46YihsKX0pO3JldHVybiB0aShzLGUsZix0LmdlbmVyYXRvcnMoKSxuKS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIEhpKGUsQy5zb21lKHQuZWxlbWVudCgpKSl9LGZ1bmN0aW9uKGUpe3ZhciBuPXFpKGUsdC5yb3coKSx0LmNvbHVtbigpKTtyZXR1cm4gSGkoZSxuKX0pfSxmdW5jdGlvbihuLHQpe3JldHVybiBWbih0LmVsZW1lbnQoKSkuYmluZChmdW5jdGlvbihlKXtyZXR1cm4gRm8obixlKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIFJlKFJlKHt9LGUpLHtnZW5lcmF0b3JzOnQuZ2VuZXJhdG9ycyxjbGlwYm9hcmQ6dC5jbGlwYm9hcmR9KX0pfSl9LEdpLHgsTmkpLGl1PUhvKGZ1bmN0aW9uKGUsbix0LHIpe3ZhciBvPWVbbi5jZWxsc1swXS5yb3coKV0saT1uLmNlbGxzWzBdLnJvdygpLHU9JGkobi5jbGlwYm9hcmQoKSxuLmdlbmVyYXRvcnMoKSxvKSxjPXJpKGksZSx1LG4uZ2VuZXJhdG9ycygpLHQpLGE9cWkoYyxuLmNlbGxzWzBdLnJvdygpLG4uY2VsbHNbMF0uY29sdW1uKCkpO3JldHVybiBIaShjLGEpfSxVbyx4LHgsTmkpLHV1PUhvKGZ1bmN0aW9uKGUsbix0LHIpe3ZhciBvPWVbbi5jZWxsc1swXS5yb3coKV0saT1uLmNlbGxzW24uY2VsbHMubGVuZ3RoLTFdLnJvdygpK24uY2VsbHNbbi5jZWxscy5sZW5ndGgtMV0ucm93c3BhbigpLHU9JGkobi5jbGlwYm9hcmQoKSxuLmdlbmVyYXRvcnMoKSxvKSxjPXJpKGksZSx1LG4uZ2VuZXJhdG9ycygpLHQpLGE9cWkoYyxuLmNlbGxzWzBdLnJvdygpLG4uY2VsbHNbMF0uY29sdW1uKCkpO3JldHVybiBIaShjLGEpfSxVbyx4LHgsTmkpLGN1PWZ1bmN0aW9uKGUpe3JldHVybiBnZS5mcm9tRG9tKGUuZ2V0Qm9keSgpKX0sYXU9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGh9LGx1PWZ1bmN0aW9uKGUpe3JldHVybiBlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodH0sZnU9ZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBlbihlLGN1KG4pKX19LHN1PWZ1bmN0aW9uKGUpe3JldHVybi9eWzAtOV0rJC8udGVzdChlKSYmKGUrPSJweCIpLGV9LGR1PWZ1bmN0aW9uKGUpe3ZhciBuPUVuKGUsInRkW2RhdGEtbWNlLXN0eWxlXSx0aFtkYXRhLW1jZS1zdHlsZV0iKTt1ZShlLCJkYXRhLW1jZS1zdHlsZSIpLEIobixmdW5jdGlvbihlKXt1ZShlLCJkYXRhLW1jZS1zdHlsZSIpfSl9LG11PXtpc1J0bDpiKCExKX0sZ3U9e2lzUnRsOmIoITApfSxwdT1mdW5jdGlvbihlKXtyZXR1cm4icnRsIj09KCJydGwiPT09eWUoZSwiZGlyZWN0aW9uIik/InJ0bCI6Imx0ciIpP2d1Om11fSxodT17ImJvcmRlci1jb2xsYXBzZSI6ImNvbGxhcHNlIix3aWR0aDoiMTAwJSJ9LHZ1PXtib3JkZXI6IjEifSxidT1mdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRQYXJhbSgidGFibGVfZGVmYXVsdF9hdHRyaWJ1dGVzIix2dSwib2JqZWN0Iil9LHd1PWZ1bmN0aW9uKGUpe3JldHVybiBlLmdldFBhcmFtKCJ0YWJsZV9kZWZhdWx0X3N0eWxlcyIsaHUsIm9iamVjdCIpfSx5dT1mdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRQYXJhbSgidGFibGVfdGFiX25hdmlnYXRpb24iLCEwLCJib29sZWFuIil9LFN1PWZ1bmN0aW9uKGUpe3JldHVybiBlLmdldFBhcmFtKCJ0YWJsZV9jZWxsX2FkdnRhYiIsITAsImJvb2xlYW4iKX0seHU9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0UGFyYW0oInRhYmxlX3Jvd19hZHZ0YWIiLCEwLCJib29sZWFuIil9LEN1PWZ1bmN0aW9uKGUpe3JldHVybiBlLmdldFBhcmFtKCJ0YWJsZV9hZHZ0YWIiLCEwLCJib29sZWFuIil9LFJ1PWZ1bmN0aW9uKGUpe3JldHVybiBlLmdldFBhcmFtKCJ0YWJsZV9zdHlsZV9ieV9jc3MiLCExLCJib29sZWFuIil9LFR1PWZ1bmN0aW9uKGUpe3JldHVybiBlLmdldFBhcmFtKCJ0YWJsZV9jbGFzc19saXN0IixbXSwiYXJyYXkiKX0sT3U9ZnVuY3Rpb24oZSl7cmV0dXJuITE9PT1lLmdldFBhcmFtKCJ0YWJsZV9yZXNwb25zaXZlX3dpZHRoIil9LER1PWZ1bmN0aW9uKGUpe3ZhciBuPWUuZ2V0UGFyYW0oInRhYmxlX2Nsb25lX2VsZW1lbnRzIik7cmV0dXJuIGcobik/Qy5zb21lKG4uc3BsaXQoL1sgLF0vKSk6QXJyYXkuaXNBcnJheShuKT9DLnNvbWUobik6Qy5ub25lKCl9LEF1PWZ1bmN0aW9uKGUsbil7cmV0dXJuIGUuZmlyZSgibmV3cm93Iix7bm9kZTpufSl9LEV1PWZ1bmN0aW9uKGUsbil7cmV0dXJuIGUuZmlyZSgibmV3Y2VsbCIse25vZGU6bn0pfSxrdT1mdW5jdGlvbihlLG4sdCxyLG8pe2UuZmlyZSgiVGFibGVTZWxlY3Rpb25DaGFuZ2UiLHtjZWxsczpuLHN0YXJ0OnQsZmluaXNoOnIsb3RoZXJDZWxsczpvfSl9LEJ1PWZ1bmN0aW9uKGUpe2UuZmlyZSgiVGFibGVTZWxlY3Rpb25DbGVhciIpfSxOdT1mdW5jdGlvbihlLG4pe3JldHVybntlbGVtZW50OmIoZSksb2Zmc2V0OmIobil9fSxJdT1mdW5jdGlvbihuLGUsdCl7cmV0dXJuIG4ucHJvcGVydHkoKS5pc1RleHQoZSkmJjA9PT1uLnByb3BlcnR5KCkuZ2V0VGV4dChlKS50cmltKCkubGVuZ3RofHxuLnByb3BlcnR5KCkuaXNDb21tZW50KGUpP3QoZSkuYmluZChmdW5jdGlvbihlKXtyZXR1cm4gSXUobixlLHQpLm9yVGh1bmsoZnVuY3Rpb24oKXtyZXR1cm4gQy5zb21lKGUpfSl9KTpDLm5vbmUoKX0sUHU9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gZS5wcm9wZXJ0eSgpLmlzVGV4dChuKT9lLnByb3BlcnR5KCkuZ2V0VGV4dChuKS5sZW5ndGg6ZS5wcm9wZXJ0eSgpLmNoaWxkcmVuKG4pLmxlbmd0aH0sTXU9ZnVuY3Rpb24oZSxuKXt2YXIgdD1JdShlLG4sZS5xdWVyeSgpLnByZXZTaWJsaW5nKS5nZXRPcihuKTtpZihlLnByb3BlcnR5KCkuaXNUZXh0KHQpKXJldHVybiBOdSh0LFB1KGUsdCkpO3ZhciByPWUucHJvcGVydHkoKS5jaGlsZHJlbih0KTtyZXR1cm4gMDxyLmxlbmd0aD9NdShlLHJbci5sZW5ndGgtMV0pOk51KHQsUHUoZSx0KSl9LF91PU11LFd1PUJ0KCksanU9ZnVuY3Rpb24oZixlKXt2YXIgdD1mdW5jdGlvbihlKXtyZXR1cm4idGFibGUiPT09JChjdShlKSl9LHM9RHUoZiksbj1mdW5jdGlvbih1LGMsYSxsKXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtkdShlKTt2YXIgdD1sKCkscj1nZS5mcm9tRG9tKGYuZ2V0RG9jKCkpLG89UXIocHUpLGk9YnQoYSxyLHMpO3JldHVybiBjKGUpP3UodCxlLG4saSxvKS5iaW5kKGZ1bmN0aW9uKGUpe3JldHVybiBCKGUubmV3Um93cygpLGZ1bmN0aW9uKGUpe0F1KGYsZS5kb20oKSl9KSxCKGUubmV3Q2VsbHMoKSxmdW5jdGlvbihlKXtFdShmLGUuZG9tKCkpfSksZS5jdXJzb3IoKS5tYXAoZnVuY3Rpb24oZSl7dmFyIG49X3UoV3UsZSksdD1mLmRvbS5jcmVhdGVSbmcoKTtyZXR1cm4gdC5zZXRTdGFydChuLmVsZW1lbnQoKS5kb20oKSxuLm9mZnNldCgpKSx0LnNldEVuZChuLmVsZW1lbnQoKS5kb20oKSxuLm9mZnNldCgpKSx0fSl9KTpDLm5vbmUoKX19O3JldHVybntkZWxldGVSb3c6bihudSxmdW5jdGlvbihlKXt2YXIgbj1acihlKTtyZXR1cm4hMT09PXQoZil8fDE8bi5yb3dzKCl9LHgsZSksZGVsZXRlQ29sdW1uOm4oZXUsZnVuY3Rpb24oZSl7dmFyIG49WnIoZSk7cmV0dXJuITE9PT10KGYpfHwxPG4uY29sdW1ucygpfSx4LGUpLGluc2VydFJvd3NCZWZvcmU6bihZaSxpLHgsZSksaW5zZXJ0Um93c0FmdGVyOm4oSmksaSx4LGUpLGluc2VydENvbHVtbnNCZWZvcmU6bihRaSxpLFByLGUpLGluc2VydENvbHVtbnNBZnRlcjpuKFppLGksUHIsZSksbWVyZ2VDZWxsczpuKHR1LGkseCxlKSx1bm1lcmdlQ2VsbHM6bihydSxpLHgsZSkscGFzdGVSb3dzQmVmb3JlOm4oaXUsaSx4LGUpLHBhc3RlUm93c0FmdGVyOm4odXUsaSx4LGUpLHBhc3RlQ2VsbHM6bihvdSxpLHgsZSl9fSx6dT1mdW5jdGlvbihlLG4scil7dmFyIHQ9R24oZSksbz1Rbi5nZW5lcmF0ZSh0KTtyZXR1cm4gVm8obyxuKS5tYXAoZnVuY3Rpb24oZSl7dmFyIG49am8obyxyLCExKS5zbGljZShlWzBdLnJvdygpLGVbZS5sZW5ndGgtMV0ucm93KCkrZVtlLmxlbmd0aC0xXS5yb3dzcGFuKCkpLHQ9TG8obixyKTtyZXR1cm4gayh0LGZ1bmN0aW9uKGUpe3ZhciB0PXN0KGUuZWxlbWVudCgpKTtyZXR1cm4gQihlLmNlbGxzKCksZnVuY3Rpb24oZSl7dmFyIG49ZHQoZS5lbGVtZW50KCkpO25vKG4sImNvbHNwYW4iLGUuY29sc3BhbigpLDEpLG5vKG4sInJvd3NwYW4iLGUucm93c3BhbigpLDEpLHBuKHQsbil9KSx0fSl9KX0sTHU9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UudXRpbC5Ub29scyIpLEZ1PWZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gQy5mcm9tKGUuZG9tLmdldFBhcmVudChlLnNlbGVjdGlvbi5nZXRTdGFydCgpLG4pKS5tYXAoZ2UuZnJvbURvbSl9fSxIdT1GdSgidGgsdGQiKSxxdT1GdSgidGgsdGQsY2FwdGlvbiIpLFV1PWZ1bmN0aW9uKG8sZSxpKXt2YXIgbjtyZXR1cm4gbj1mdW5jdGlvbihlLG4pe2Zvcih2YXIgdD0wO3Q8bi5sZW5ndGg7dCsrKXt2YXIgcj1vLmdldFN0eWxlKG5bdF0saSk7aWYodm9pZCAwPT09ZSYmKGU9ciksZSE9PXIpcmV0dXJuIiJ9cmV0dXJuIGV9KG4sby5zZWxlY3QoInRkLHRoIixlKSl9LFZ1PWZ1bmN0aW9uKGUsbix0KXt0JiZlLmZvcm1hdHRlci5hcHBseSgiYWxpZ24iK3Qse30sbil9LEt1PWZ1bmN0aW9uKGUsbix0KXt0JiZlLmZvcm1hdHRlci5hcHBseSgidmFsaWduIit0LHt9LG4pfSxYdT1mdW5jdGlvbihuLHQpe0x1LmVhY2goImxlZnQgY2VudGVyIHJpZ2h0Ii5zcGxpdCgiICIpLGZ1bmN0aW9uKGUpe24uZm9ybWF0dGVyLnJlbW92ZSgiYWxpZ24iK2Use30sdCl9KX0sJHU9ZnVuY3Rpb24oZSxyLG4pe3ZhciBvPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ9dHx8W10sTHUuZWFjaChlLGZ1bmN0aW9uKGUpe3ZhciBuPXt0ZXh0OmUudGV4dHx8ZS50aXRsZX07ZS5tZW51P24ubWVudT1vKGUubWVudSk6KG4udmFsdWU9ZS52YWx1ZSxyJiZyKG4pKSx0LnB1c2gobil9KSx0fTtyZXR1cm4gbyhlLG58fFtdKX0sR3U9ZnVuY3Rpb24obixlKXt2YXIgdD1mdW5jdGlvbihlKXtyZXR1cm4gZmUoZSwicmdiIik/bi50b0hleChlKTplfTtyZXR1cm57Ym9yZGVyd2lkdGg6eGUoZ2UuZnJvbURvbShlKSwiYm9yZGVyLXdpZHRoIikuZ2V0T3IoIiIpLGJvcmRlcnN0eWxlOnhlKGdlLmZyb21Eb20oZSksImJvcmRlci1zdHlsZSIpLmdldE9yKCIiKSxib3JkZXJjb2xvcjp4ZShnZS5mcm9tRG9tKGUpLCJib3JkZXItY29sb3IiKS5tYXAodCkuZ2V0T3IoIiIpLGJhY2tncm91bmRjb2xvcjp4ZShnZS5mcm9tRG9tKGUpLCJiYWNrZ3JvdW5kLWNvbG9yIikubWFwKHQpLmdldE9yKCIiKX19LFl1PWZ1bmN0aW9uKGUpe3ZhciBvPWVbMF0sbj1lLnNsaWNlKDEpLHQ9RihvKTtyZXR1cm4gQihuLGZ1bmN0aW9uKGUpe0IodCxmdW5jdGlvbihyKXtxKGUsZnVuY3Rpb24oZSxuKXt2YXIgdD1vW3JdOyIiIT09dCYmcj09PW4mJnQhPT1lJiYob1tyXT0iIil9KX0pfSksb30sSnU9ZnVuY3Rpb24oZSl7dmFyIG49W3tuYW1lOiJib3JkZXJzdHlsZSIsdHlwZToic2VsZWN0Ym94IixsYWJlbDoiQm9yZGVyIHN0eWxlIixpdGVtczpbe3RleHQ6IlNlbGVjdC4uLiIsdmFsdWU6IiJ9LHt0ZXh0OiJTb2xpZCIsdmFsdWU6InNvbGlkIn0se3RleHQ6IkRvdHRlZCIsdmFsdWU6ImRvdHRlZCJ9LHt0ZXh0OiJEYXNoZWQiLHZhbHVlOiJkYXNoZWQifSx7dGV4dDoiRG91YmxlIix2YWx1ZToiZG91YmxlIn0se3RleHQ6Ikdyb292ZSIsdmFsdWU6Imdyb292ZSJ9LHt0ZXh0OiJSaWRnZSIsdmFsdWU6InJpZGdlIn0se3RleHQ6Ikluc2V0Iix2YWx1ZToiaW5zZXQifSx7dGV4dDoiT3V0c2V0Iix2YWx1ZToib3V0c2V0In0se3RleHQ6Ik5vbmUiLHZhbHVlOiJub25lIn0se3RleHQ6IkhpZGRlbiIsdmFsdWU6ImhpZGRlbiJ9XX0se25hbWU6ImJvcmRlcmNvbG9yIix0eXBlOiJjb2xvcmlucHV0IixsYWJlbDoiQm9yZGVyIGNvbG9yIn0se25hbWU6ImJhY2tncm91bmRjb2xvciIsdHlwZToiY29sb3JpbnB1dCIsbGFiZWw6IkJhY2tncm91bmQgY29sb3IifV07cmV0dXJue3RpdGxlOiJBZHZhbmNlZCIsbmFtZToiYWR2YW5jZWQiLGl0ZW1zOiJjZWxsIj09PWU/W3tuYW1lOiJib3JkZXJ3aWR0aCIsdHlwZToiaW5wdXQiLGxhYmVsOiJCb3JkZXIgd2lkdGgifV0uY29uY2F0KG4pOm59fSxRdT1mdW5jdGlvbihlLG4sdCxyLG8pe3ZhciBpPXt9O3JldHVybiBMdS5lYWNoKGUuc3BsaXQoIiAiKSxmdW5jdGlvbihlKXtyLmZvcm1hdHRlci5tYXRjaE5vZGUobyxuK2UpJiYoaVt0XT1lKX0pLGlbdF18fChpW3RdPSIiKSxpfSxadT15KFF1LCJsZWZ0IGNlbnRlciByaWdodCIpLGVjPXkoUXUsInRvcCBtaWRkbGUgYm90dG9tIiksbmM9ZnVuY3Rpb24oZSxuKXt2YXIgdCxyLG8saSx1LGMsYSxsLGY9d3UoZSkscz1idShlKSxkPWUuZG9tLG09bj8odD1kLHI9ZnVuY3Rpb24oZSl7cmV0dXJuIGZlKGUsInJnYiIpP3QudG9IZXgoZSk6ZX0sbz1LKGYsImJvcmRlci1zdHlsZSIpLmdldE9yKCIiKSxpPUsoZiwiYm9yZGVyLWNvbG9yIikuZ2V0T3IoIiIpLHU9SyhmLCJiYWNrZ3JvdW5kLWNvbG9yIikuZ2V0T3IoIiIpLHtib3JkZXJzdHlsZTpvLGJvcmRlcmNvbG9yOnIoaSksYmFja2dyb3VuZGNvbG9yOnIodSl9KTp7fTtyZXR1cm4gUmUoUmUoUmUoUmUoUmUoUmUoe30se2hlaWdodDoiIix3aWR0aDoiMTAwJSIsY2VsbHNwYWNpbmc6IiIsY2VsbHBhZGRpbmc6IiIsY2FwdGlvbjohMSwiY2xhc3MiOiIiLGFsaWduOiIiLGJvcmRlcjoiIn0pLGYpLHMpLG0pLChsPWZbImJvcmRlci13aWR0aCJdLFJ1KGUpJiZsP3tib3JkZXI6bH06SyhzLCJib3JkZXIiKS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJue319LGZ1bmN0aW9uKGUpe3JldHVybntib3JkZXI6ZX19KSkpLChjPUsoZiwiYm9yZGVyLXNwYWNpbmciKS5vcihLKHMsImNlbGxzcGFjaW5nIikpLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm57fX0sZnVuY3Rpb24oZSl7cmV0dXJue2NlbGxzcGFjaW5nOmV9fSksYT1LKGYsImJvcmRlci1wYWRkaW5nIikub3IoSyhzLCJjZWxscGFkZGluZyIpKS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJue319LGZ1bmN0aW9uKGUpe3JldHVybntjZWxscGFkZGluZzplfX0pLFJlKFJlKHt9LGMpLGEpKSl9LHRjPVt7bmFtZToid2lkdGgiLHR5cGU6ImlucHV0IixsYWJlbDoiV2lkdGgifSx7bmFtZToiaGVpZ2h0Iix0eXBlOiJpbnB1dCIsbGFiZWw6IkhlaWdodCJ9LHtuYW1lOiJjZWxsdHlwZSIsdHlwZToic2VsZWN0Ym94IixsYWJlbDoiQ2VsbCB0eXBlIixpdGVtczpbe3RleHQ6IkNlbGwiLHZhbHVlOiJ0ZCJ9LHt0ZXh0OiJIZWFkZXIgY2VsbCIsdmFsdWU6InRoIn1dfSx7bmFtZToic2NvcGUiLHR5cGU6InNlbGVjdGJveCIsbGFiZWw6IlNjb3BlIixpdGVtczpbe3RleHQ6Ik5vbmUiLHZhbHVlOiIifSx7dGV4dDoiUm93Iix2YWx1ZToicm93In0se3RleHQ6IkNvbHVtbiIsdmFsdWU6ImNvbCJ9LHt0ZXh0OiJSb3cgZ3JvdXAiLHZhbHVlOiJyb3dncm91cCJ9LHt0ZXh0OiJDb2x1bW4gZ3JvdXAiLHZhbHVlOiJjb2xncm91cCJ9XX0se25hbWU6ImhhbGlnbiIsdHlwZToic2VsZWN0Ym94IixsYWJlbDoiSCBBbGlnbiIsaXRlbXM6W3t0ZXh0OiJOb25lIix2YWx1ZToiIn0se3RleHQ6IkxlZnQiLHZhbHVlOiJsZWZ0In0se3RleHQ6IkNlbnRlciIsdmFsdWU6ImNlbnRlciJ9LHt0ZXh0OiJSaWdodCIsdmFsdWU6InJpZ2h0In1dfSx7bmFtZToidmFsaWduIix0eXBlOiJzZWxlY3Rib3giLGxhYmVsOiJWIEFsaWduIixpdGVtczpbe3RleHQ6Ik5vbmUiLHZhbHVlOiIifSx7dGV4dDoiVG9wIix2YWx1ZToidG9wIn0se3RleHQ6Ik1pZGRsZSIsdmFsdWU6Im1pZGRsZSJ9LHt0ZXh0OiJCb3R0b20iLHZhbHVlOiJib3R0b20ifV19XSxyYz1mdW5jdGlvbihlKXtyZXR1cm4gdD0obj1lKS5nZXRQYXJhbSgidGFibGVfY2VsbF9jbGFzc19saXN0IixbXSwiYXJyYXkiKSxyPSR1KHQsZnVuY3Rpb24oZSl7ZS52YWx1ZSYmKGUudGV4dFN0eWxlPWZ1bmN0aW9uKCl7cmV0dXJuIG4uZm9ybWF0dGVyLmdldENzc1RleHQoe2Jsb2NrOiJ0ciIsY2xhc3NlczpbZS52YWx1ZV19KX0pfSksKDA8dC5sZW5ndGg/Qy5zb21lKHtuYW1lOiJjbGFzcyIsdHlwZToic2VsZWN0Ym94IixsYWJlbDoiQ2xhc3MiLGl0ZW1zOnJ9KTpDLm5vbmUoKSkuZm9sZChmdW5jdGlvbigpe3JldHVybiB0Y30sZnVuY3Rpb24oZSl7cmV0dXJuIHRjLmNvbmNhdChlKX0pO3ZhciBuLHQscn0sb2M9e25vcm1hbDpmdW5jdGlvbih0LHIpe3JldHVybntzZXRBdHRyaWI6ZnVuY3Rpb24oZSxuKXt0LnNldEF0dHJpYihyLGUsbil9LHNldFN0eWxlOmZ1bmN0aW9uKGUsbil7dC5zZXRTdHlsZShyLGUsbil9fX0saWZUcnV0aHk6ZnVuY3Rpb24odCxyKXtyZXR1cm57c2V0QXR0cmliOmZ1bmN0aW9uKGUsbil7biYmdC5zZXRBdHRyaWIocixlLG4pfSxzZXRTdHlsZTpmdW5jdGlvbihlLG4pe24mJnQuc2V0U3R5bGUocixlLG4pfX19fSxpYz1mdW5jdGlvbihlLG4pe2Uuc2V0QXR0cmliKCJzY29wZSIsbi5zY29wZSksZS5zZXRBdHRyaWIoImNsYXNzIixuWyJjbGFzcyJdKSxlLnNldFN0eWxlKCJ3aWR0aCIsc3Uobi53aWR0aCkpLGUuc2V0U3R5bGUoImhlaWdodCIsc3Uobi5oZWlnaHQpKX0sdWM9ZnVuY3Rpb24oZSxuKXtlLnNldFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIixuLmJhY2tncm91bmRjb2xvciksZS5zZXRTdHlsZSgiYm9yZGVyLWNvbG9yIixuLmJvcmRlcmNvbG9yKSxlLnNldFN0eWxlKCJib3JkZXItc3R5bGUiLG4uYm9yZGVyc3R5bGUpLGUuc2V0U3R5bGUoImJvcmRlci13aWR0aCIsc3Uobi5ib3JkZXJ3aWR0aCkpfSxjYz1mdW5jdGlvbihlLG4sdCl7dmFyIHIsbyxpPWUuZG9tLHU9dC5jZWxsdHlwZSYmblswXS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIT09dC5jZWxsdHlwZT9pLnJlbmFtZShuWzBdLHQuY2VsbHR5cGUpOm5bMF0sYz1vYy5ub3JtYWwoaSx1KTtpYyhjLHQpLFN1KGUpJiZ1YyhjLHQpLFh1KGUsdSkscj1lLG89dSxMdS5lYWNoKCJ0b3AgbWlkZGxlIGJvdHRvbSIuc3BsaXQoIiAiKSxmdW5jdGlvbihlKXtyLmZvcm1hdHRlci5yZW1vdmUoInZhbGlnbiIrZSx7fSxvKX0pLHQuaGFsaWduJiZWdShlLHUsdC5oYWxpZ24pLHQudmFsaWduJiZLdShlLHUsdC52YWxpZ24pfSxhYz1mdW5jdGlvbih0LGUscil7dmFyIG89dC5kb207THUuZWFjaChlLGZ1bmN0aW9uKGUpe3IuY2VsbHR5cGUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSE9PXIuY2VsbHR5cGUmJihlPW8ucmVuYW1lKGUsci5jZWxsdHlwZSkpO3ZhciBuPW9jLmlmVHJ1dGh5KG8sZSk7aWMobixyKSxTdSh0KSYmdWMobixyKSxyLmhhbGlnbiYmVnUodCxlLHIuaGFsaWduKSxyLnZhbGlnbiYmS3UodCxlLHIudmFsaWduKX0pfSxsYz1mdW5jdGlvbihlLG4sdCl7dmFyIHI9dC5nZXREYXRhKCk7dC5jbG9zZSgpLGUudW5kb01hbmFnZXIudHJhbnNhY3QoZnVuY3Rpb24oKXsoMT09PW4ubGVuZ3RoP2NjOmFjKShlLG4sciksZS5mb2N1cygpfSl9LGZjPWZ1bmN0aW9uKGkpe3ZhciBlLG49W107aWYobj1pLmRvbS5zZWxlY3QoInRkW2RhdGEtbWNlLXNlbGVjdGVkXSx0aFtkYXRhLW1jZS1zZWxlY3RlZF0iKSxlPWkuZG9tLmdldFBhcmVudChpLnNlbGVjdGlvbi5nZXRTdGFydCgpLCJ0ZCx0aCIpLCFuLmxlbmd0aCYmZSYmbi5wdXNoKGUpLGU9ZXx8blswXSl7dmFyIHQ9THUubWFwKG4sZnVuY3Rpb24oZSl7cmV0dXJuIHQ9ZSxyPVN1KG49aSksbz1uLmRvbSxSZShSZShSZSh7d2lkdGg6by5nZXRTdHlsZSh0LCJ3aWR0aCIpfHxvLmdldEF0dHJpYih0LCJ3aWR0aCIpLGhlaWdodDpvLmdldFN0eWxlKHQsImhlaWdodCIpfHxvLmdldEF0dHJpYih0LCJoZWlnaHQiKSxzY29wZTpvLmdldEF0dHJpYih0LCJzY29wZSIpLGNlbGx0eXBlOnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSwiY2xhc3MiOm8uZ2V0QXR0cmliKHQsImNsYXNzIiwiIil9LFp1KCJhbGlnbiIsImhhbGlnbiIsbix0KSksZWMoInZhbGlnbiIsInZhbGlnbiIsbix0KSkscj9HdShvLHQpOnt9KTt2YXIgbix0LHIsb30pLHI9WXUodCksbz17dHlwZToidGFicGFuZWwiLHRhYnM6W3t0aXRsZToiR2VuZXJhbCIsbmFtZToiZ2VuZXJhbCIsaXRlbXM6cmMoaSl9LEp1KCJjZWxsIildfSx1PXt0eXBlOiJwYW5lbCIsaXRlbXM6W3t0eXBlOiJncmlkIixjb2x1bW5zOjIsaXRlbXM6cmMoaSl9XX07aS53aW5kb3dNYW5hZ2VyLm9wZW4oe3RpdGxlOiJDZWxsIFByb3BlcnRpZXMiLHNpemU6Im5vcm1hbCIsYm9keTpTdShpKT9vOnUsYnV0dG9uczpbe3R5cGU6ImNhbmNlbCIsbmFtZToiY2FuY2VsIix0ZXh0OiJDYW5jZWwifSx7dHlwZToic3VibWl0IixuYW1lOiJzYXZlIix0ZXh0OiJTYXZlIixwcmltYXJ5OiEwfV0saW5pdGlhbERhdGE6cixvblN1Ym1pdDp5KGxjLGksbil9KX19LHNjPVt7dHlwZToic2VsZWN0Ym94IixuYW1lOiJ0eXBlIixsYWJlbDoiUm93IHR5cGUiLGl0ZW1zOlt7dGV4dDoiSGVhZGVyIix2YWx1ZToidGhlYWQifSx7dGV4dDoiQm9keSIsdmFsdWU6InRib2R5In0se3RleHQ6IkZvb3RlciIsdmFsdWU6InRmb290In1dfSx7dHlwZToic2VsZWN0Ym94IixuYW1lOiJhbGlnbiIsbGFiZWw6IkFsaWdubWVudCIsaXRlbXM6W3t0ZXh0OiJOb25lIix2YWx1ZToiIn0se3RleHQ6IkxlZnQiLHZhbHVlOiJsZWZ0In0se3RleHQ6IkNlbnRlciIsdmFsdWU6ImNlbnRlciJ9LHt0ZXh0OiJSaWdodCIsdmFsdWU6InJpZ2h0In1dfSx7bGFiZWw6IkhlaWdodCIsbmFtZToiaGVpZ2h0Iix0eXBlOiJpbnB1dCJ9XSxkYz1mdW5jdGlvbihlKXtyZXR1cm4gdD0obj1lKS5nZXRQYXJhbSgidGFibGVfcm93X2NsYXNzX2xpc3QiLFtdLCJhcnJheSIpLHI9JHUodCxmdW5jdGlvbihlKXtlLnZhbHVlJiYoZS50ZXh0U3R5bGU9ZnVuY3Rpb24oKXtyZXR1cm4gbi5mb3JtYXR0ZXIuZ2V0Q3NzVGV4dCh7YmxvY2s6InRyIixjbGFzc2VzOltlLnZhbHVlXX0pfSl9KSwoMDx0Lmxlbmd0aD9DLnNvbWUoe25hbWU6ImNsYXNzIix0eXBlOiJzZWxlY3Rib3giLGxhYmVsOiJDbGFzcyIsaXRlbXM6cn0pOkMubm9uZSgpKS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIHNjfSxmdW5jdGlvbihlKXtyZXR1cm4gc2MuY29uY2F0KGUpfSk7dmFyIG4sdCxyfSxtYz1mdW5jdGlvbihmLGUscyxuKXt2YXIgZD1mLmRvbSxtPW4uZ2V0RGF0YSgpO24uY2xvc2UoKTt2YXIgZz0xPT09ZS5sZW5ndGg/b2Mubm9ybWFsOm9jLmlmVHJ1dGh5O2YudW5kb01hbmFnZXIudHJhbnNhY3QoZnVuY3Rpb24oKXtMdS5lYWNoKGUsZnVuY3Rpb24oZSl7dmFyIG4sdCxyLG8saSx1O20udHlwZSE9PWUucGFyZW50Tm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiYobj1mLmRvbSx0PWUscj1tLnR5cGUsbz1uLmdldFBhcmVudCh0LCJ0YWJsZSIpLGk9dC5wYXJlbnROb2RlLCh1PW4uc2VsZWN0KHIsbylbMF0pfHwodT1uLmNyZWF0ZShyKSxvLmZpcnN0Q2hpbGQ/IkNBUFRJT04iPT09by5maXJzdENoaWxkLm5vZGVOYW1lP24uaW5zZXJ0QWZ0ZXIodSxvLmZpcnN0Q2hpbGQpOm8uaW5zZXJ0QmVmb3JlKHUsby5maXJzdENoaWxkKTpvLmFwcGVuZENoaWxkKHUpKSwidGJvZHkiPT09ciYmIlRIRUFEIj09PWkubm9kZU5hbWUmJnUuZmlyc3RDaGlsZD91Lmluc2VydEJlZm9yZSh0LHUuZmlyc3RDaGlsZCk6dS5hcHBlbmRDaGlsZCh0KSxpLmhhc0NoaWxkTm9kZXMoKXx8bi5yZW1vdmUoaSkpO3ZhciBjLGEsbD1nKGQsZSk7bC5zZXRBdHRyaWIoInNjb3BlIixtLnNjb3BlKSxsLnNldEF0dHJpYigiY2xhc3MiLG1bImNsYXNzIl0pLGwuc2V0U3R5bGUoImhlaWdodCIsc3UobS5oZWlnaHQpKSx4dShmKSYmKGE9bSwoYz1sKS5zZXRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsYS5iYWNrZ3JvdW5kY29sb3IpLGMuc2V0U3R5bGUoImJvcmRlci1jb2xvciIsYS5ib3JkZXJjb2xvciksYy5zZXRTdHlsZSgiYm9yZGVyLXN0eWxlIixhLmJvcmRlcnN0eWxlKSksbS5hbGlnbiE9PXMuYWxpZ24mJihYdShmLGUpLFZ1KGYsZSxtLmFsaWduKSl9KSxmLmZvY3VzKCl9KX0sZ2M9ZnVuY3Rpb24oaSl7dmFyIGUsdCxyPWkuZG9tLG89W107aWYoKGU9ci5nZXRQYXJlbnQoaS5zZWxlY3Rpb24uZ2V0U3RhcnQoKSwidGFibGUiKSkmJih0PXIuZ2V0UGFyZW50KGkuc2VsZWN0aW9uLmdldFN0YXJ0KCksInRkLHRoIiksTHUuZWFjaChlLnJvd3MsZnVuY3Rpb24obil7THUuZWFjaChuLmNlbGxzLGZ1bmN0aW9uKGUpe2lmKChyLmdldEF0dHJpYihlLCJkYXRhLW1jZS1zZWxlY3RlZCIpfHxlPT09dCkmJm8uaW5kZXhPZihuKTwwKXJldHVybiBvLnB1c2gobiksITF9KX0pLG9bMF0pKXt2YXIgbj1MdS5tYXAobyxmdW5jdGlvbihlKXtyZXR1cm4gdD1lLHI9eHUobj1pKSxvPW4uZG9tLFJlKFJlKHtoZWlnaHQ6by5nZXRTdHlsZSh0LCJoZWlnaHQiKXx8by5nZXRBdHRyaWIodCwiaGVpZ2h0Iiksc2NvcGU6by5nZXRBdHRyaWIodCwic2NvcGUiKSwiY2xhc3MiOm8uZ2V0QXR0cmliKHQsImNsYXNzIiwiIiksYWxpZ246IiIsdHlwZTp0LnBhcmVudE5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKX0sWnUoImFsaWduIiwiYWxpZ24iLG4sdCkpLHI/R3Uobyx0KTp7fSk7dmFyIG4sdCxyLG99KSx1PVl1KG4pLGM9e3R5cGU6InRhYnBhbmVsIix0YWJzOlt7dGl0bGU6IkdlbmVyYWwiLG5hbWU6ImdlbmVyYWwiLGl0ZW1zOmRjKGkpfSxKdSgicm93IildfSxhPXt0eXBlOiJwYW5lbCIsaXRlbXM6W3t0eXBlOiJncmlkIixjb2x1bW5zOjIsaXRlbXM6ZGMoaSl9XX07aS53aW5kb3dNYW5hZ2VyLm9wZW4oe3RpdGxlOiJSb3cgUHJvcGVydGllcyIsc2l6ZToibm9ybWFsIixib2R5Onh1KGkpP2M6YSxidXR0b25zOlt7dHlwZToiY2FuY2VsIixuYW1lOiJjYW5jZWwiLHRleHQ6IkNhbmNlbCJ9LHt0eXBlOiJzdWJtaXQiLG5hbWU6InNhdmUiLHRleHQ6IlNhdmUiLHByaW1hcnk6ITB9XSxpbml0aWFsRGF0YTp1LG9uU3VibWl0OnkobWMsaSxvLHUpfSl9fSxwYz10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS5FbnYiKSxoYz17c3R5bGVzOnsiYm9yZGVyLWNvbGxhcHNlIjoiY29sbGFwc2UiLHdpZHRoOiIxMDAlIn0sYXR0cmlidXRlczp7Ym9yZGVyOiIxIn0scGVyY2VudGFnZXM6ITB9LHZjPWZ1bmN0aW9uKGUsbix0LHIsbyl7dm9pZCAwPT09byYmKG89aGMpO3ZhciBpPWdlLmZyb21UYWcoInRhYmxlIik7d2UoaSxvLnN0eWxlcyksdGUoaSxvLmF0dHJpYnV0ZXMpO3ZhciB1PWdlLmZyb21UYWcoInRib2R5Iik7cG4oaSx1KTtmb3IodmFyIGM9W10sYT0wO2E8ZTthKyspe2Zvcih2YXIgbD1nZS5mcm9tVGFnKCJ0ciIpLGY9MDtmPG47ZisrKXt2YXIgcz1hPHR8fGY8cj9nZS5mcm9tVGFnKCJ0aCIpOmdlLmZyb21UYWcoInRkIik7ZjxyJiZuZShzLCJzY29wZSIsInJvdyIpLGE8dCYmbmUocywic2NvcGUiLCJjb2wiKSxwbihzLGdlLmZyb21UYWcoImJyIikpLG8ucGVyY2VudGFnZXMmJmJlKHMsIndpZHRoIiwxMDAvbisiJSIpLHBuKGwscyl9Yy5wdXNoKGwpfXJldHVybiBibih1LGMpLGl9LGJjPWZ1bmN0aW9uKGUsbil7ZS5zZWxlY3Rpb24uc2VsZWN0KG4uZG9tKCksITApLGUuc2VsZWN0aW9uLmNvbGxhcHNlKCEwKX0sd2M9ZnVuY3Rpb24ocixlLG4pe3ZhciB0LG89d3UociksaT17c3R5bGVzOm8sYXR0cmlidXRlczpidShyKSxwZXJjZW50YWdlczoodD1vLndpZHRoLGcodCkmJi0xIT09dC5pbmRleE9mKCIlIikmJiFPdShyKSl9LHU9dmMobixlLDAsMCxpKTtuZSh1LCJkYXRhLW1jZS1pZCIsIl9fbWNlIik7dmFyIGMsYSxsLGY9KGM9dSxhPWdlLmZyb21UYWcoImRpdiIpLGw9Z2UuZnJvbURvbShjLmRvbSgpLmNsb25lTm9kZSghMCkpLHBuKGEsbCksYS5kb20oKS5pbm5lckhUTUwpO3JldHVybiByLmluc2VydENvbnRlbnQoZiksUG4oY3UociksJ3RhYmxlW2RhdGEtbWNlLWlkPSJfX21jZSJdJykubWFwKGZ1bmN0aW9uKGUpe3ZhciBuLHQ7cmV0dXJuIE91KHIpJiZiZShlLCJ3aWR0aCIseWUoZSwid2lkdGgiKSksdWUoZSwiZGF0YS1tY2UtaWQiKSxuPXIsQihFbihlLCJ0ciIpLGZ1bmN0aW9uKGUpe0F1KG4sZS5kb20oKSksQihFbihlLCJ0aCx0ZCIpLGZ1bmN0aW9uKGUpe0V1KG4sZS5kb20oKSl9KX0pLHQ9cixQbihlLCJ0ZCx0aCIpLmVhY2goeShiYyx0KSksZS5kb20oKX0pLmdldE9yKG51bGwpfSx5Yz1mdW5jdGlvbihlLG4sdCxyKXtpZigiVEQiPT09bi50YWdOYW1lfHwiVEgiPT09bi50YWdOYW1lKWcodCk/ZS5zZXRTdHlsZShuLHQscik6ZS5zZXRTdHlsZShuLHQpO2Vsc2UgaWYobi5jaGlsZHJlbilmb3IodmFyIG89MDtvPG4uY2hpbGRyZW4ubGVuZ3RoO28rKyl5YyhlLG4uY2hpbGRyZW5bb10sdCxyKX0sU2M9ZnVuY3Rpb24odCxyLGUpe3ZhciBvLGk9dC5kb20sdT1lLmdldERhdGEoKTtlLmNsb3NlKCksIiI9PT11WyJjbGFzcyJdJiZkZWxldGUgdVsiY2xhc3MiXSx0LnVuZG9NYW5hZ2VyLnRyYW5zYWN0KGZ1bmN0aW9uKCl7aWYoIXIpe3ZhciBlPXBhcnNlSW50KHUuY29scywxMCl8fDEsbj1wYXJzZUludCh1LnJvd3MsMTApfHwxO3I9d2ModCxlLG4pfSFmdW5jdGlvbihlLG4sdCl7dmFyIHIsbz1lLmRvbSxpPXt9LHU9e307aWYoaVsiY2xhc3MiXT10WyJjbGFzcyJdLHUuaGVpZ2h0PXN1KHQuaGVpZ2h0KSxvLmdldEF0dHJpYihuLCJ3aWR0aCIpJiYhUnUoZSk/aS53aWR0aD0ocj10LndpZHRoKT9yLnJlcGxhY2UoL3B4JC8sIiIpOiIiOnUud2lkdGg9c3UodC53aWR0aCksUnUoZSk/KHVbImJvcmRlci13aWR0aCJdPXN1KHQuYm9yZGVyKSx1WyJib3JkZXItc3BhY2luZyJdPXN1KHQuY2VsbHNwYWNpbmcpKTooaS5ib3JkZXI9dC5ib3JkZXIsaS5jZWxscGFkZGluZz10LmNlbGxwYWRkaW5nLGkuY2VsbHNwYWNpbmc9dC5jZWxsc3BhY2luZyksUnUoZSkmJm4uY2hpbGRyZW4pZm9yKHZhciBjPTA7YzxuLmNoaWxkcmVuLmxlbmd0aDtjKyspeWMobyxuLmNoaWxkcmVuW2NdLHsiYm9yZGVyLXdpZHRoIjpzdSh0LmJvcmRlcikscGFkZGluZzpzdSh0LmNlbGxwYWRkaW5nKX0pLEN1KGUpJiZ5YyhvLG4uY2hpbGRyZW5bY10seyJib3JkZXItY29sb3IiOnQuYm9yZGVyY29sb3J9KTtDdShlKSYmKHVbImJhY2tncm91bmQtY29sb3IiXT10LmJhY2tncm91bmRjb2xvcix1WyJib3JkZXItY29sb3IiXT10LmJvcmRlcmNvbG9yLHVbImJvcmRlci1zdHlsZSJdPXQuYm9yZGVyc3R5bGUpLGkuc3R5bGU9by5zZXJpYWxpemVTdHlsZShSZShSZSh7fSx3dShlKSksdSkpLG8uc2V0QXR0cmlicyhuLFJlKFJlKHt9LGJ1KGUpKSxpKSl9KHQscix1KSwobz1pLnNlbGVjdCgiY2FwdGlvbiIscilbMF0pJiYhdS5jYXB0aW9uJiZpLnJlbW92ZShvKSwhbyYmdS5jYXB0aW9uJiYoKG89aS5jcmVhdGUoImNhcHRpb24iKSkuaW5uZXJIVE1MPXBjLmllPyJceGEwIjonPGJyIGRhdGEtbWNlLWJvZ3VzPSIxIi8+JyxyLmluc2VydEJlZm9yZShvLHIuZmlyc3RDaGlsZCkpLCIiPT09dS5hbGlnbj9YdSh0LHIpOlZ1KHQscix1LmFsaWduKSx0LmZvY3VzKCksdC5hZGRWaXN1YWwoKX0pfSx4Yz1mdW5jdGlvbihlLG4pe3ZhciB0LHIsbyxpLHUsYyxhLGwsZj1lLmRvbSxzPW5jKGUsQ3UoZSkpOyExPT09bj8odD1mLmdldFBhcmVudChlLnNlbGVjdGlvbi5nZXRTdGFydCgpLCJ0YWJsZSIpKT8obz10LGk9Q3Uocj1lKSxsPXIuZG9tLHM9UmUoUmUoe3dpZHRoOmwuZ2V0U3R5bGUobywid2lkdGgiKXx8bC5nZXRBdHRyaWIobywid2lkdGgiKSxoZWlnaHQ6bC5nZXRTdHlsZShvLCJoZWlnaHQiKXx8bC5nZXRBdHRyaWIobywiaGVpZ2h0IiksY2VsbHNwYWNpbmc6bC5nZXRTdHlsZShvLCJib3JkZXItc3BhY2luZyIpfHxsLmdldEF0dHJpYihvLCJjZWxsc3BhY2luZyIpLGNlbGxwYWRkaW5nOmwuZ2V0QXR0cmliKG8sImNlbGxwYWRkaW5nIil8fFV1KHIuZG9tLG8sInBhZGRpbmciKSxib3JkZXI6KHU9bCxjPW8sYT14ZShnZS5mcm9tRG9tKGMpLCJib3JkZXItd2lkdGgiKSxSdShyKSYmYS5pc1NvbWUoKT9hLmdldE9yKCIiKTp1LmdldEF0dHJpYihjLCJib3JkZXIiKXx8VXUoci5kb20sYywiYm9yZGVyLXdpZHRoIil8fFV1KHIuZG9tLGMsImJvcmRlciIpKSxjYXB0aW9uOiEhbC5zZWxlY3QoImNhcHRpb24iLG8pWzBdLCJjbGFzcyI6bC5nZXRBdHRyaWIobywiY2xhc3MiLCIiKX0sWnUoImFsaWduIiwiYWxpZ24iLHIsbykpLGk/R3UobCxvKTp7fSkpOkN1KGUpJiYocy5ib3JkZXJzdHlsZT0iIixzLmJvcmRlcmNvbG9yPSIiLHMuYmFja2dyb3VuZGNvbG9yPSIiKToocy5jb2xzPSIxIixzLnJvd3M9IjEiLEN1KGUpJiYocy5ib3JkZXJzdHlsZT0iIixzLmJvcmRlcmNvbG9yPSIiLHMuYmFja2dyb3VuZGNvbG9yPSIiKSk7dmFyIGQ9MDxUdShlKS5sZW5ndGg7ZCYmc1siY2xhc3MiXSYmKHNbImNsYXNzIl09c1siY2xhc3MiXS5yZXBsYWNlKC9ccyptY2VcLWl0ZW1cLXRhYmxlXHMqL2csIiIpKTt2YXIgbSxnLHAsaCx2LGI9e3R5cGU6ImdyaWQiLGNvbHVtbnM6MixpdGVtczooZz1kLHA9bj9be3R5cGU6ImlucHV0IixuYW1lOiJjb2xzIixsYWJlbDoiQ29scyIsaW5wdXRNb2RlOiJudW1lcmljIn0se3R5cGU6ImlucHV0IixuYW1lOiJyb3dzIixsYWJlbDoiUm93cyIsaW5wdXRNb2RlOiJudW1lcmljIn1dOltdLGg9KG09ZSkuZ2V0UGFyYW0oInRhYmxlX2FwcGVhcmFuY2Vfb3B0aW9ucyIsITAsImJvb2xlYW4iKT9be3R5cGU6ImlucHV0IixuYW1lOiJjZWxsc3BhY2luZyIsbGFiZWw6IkNlbGwgc3BhY2luZyIsaW5wdXRNb2RlOiJudW1lcmljIn0se3R5cGU6ImlucHV0IixuYW1lOiJjZWxscGFkZGluZyIsbGFiZWw6IkNlbGwgcGFkZGluZyIsaW5wdXRNb2RlOiJudW1lcmljIn0se3R5cGU6ImlucHV0IixuYW1lOiJib3JkZXIiLGxhYmVsOiJCb3JkZXIgd2lkdGgifSx7dHlwZToibGFiZWwiLGxhYmVsOiJDYXB0aW9uIixpdGVtczpbe3R5cGU6ImNoZWNrYm94IixuYW1lOiJjYXB0aW9uIixsYWJlbDoiU2hvdyBjYXB0aW9uIn1dfV06W10sdj1nP1t7dHlwZToic2VsZWN0Ym94IixuYW1lOiJjbGFzcyIsbGFiZWw6IkNsYXNzIixpdGVtczokdShUdShtKSxmdW5jdGlvbihlKXtlLnZhbHVlJiYoZS50ZXh0U3R5bGU9ZnVuY3Rpb24oKXtyZXR1cm4gbS5mb3JtYXR0ZXIuZ2V0Q3NzVGV4dCh7YmxvY2s6InRhYmxlIixjbGFzc2VzOltlLnZhbHVlXX0pfSl9KX1dOltdLHAuY29uY2F0KFt7dHlwZToiaW5wdXQiLG5hbWU6IndpZHRoIixsYWJlbDoiV2lkdGgifSx7dHlwZToiaW5wdXQiLG5hbWU6ImhlaWdodCIsbGFiZWw6IkhlaWdodCJ9XSkuY29uY2F0KGgpLmNvbmNhdChbe3R5cGU6InNlbGVjdGJveCIsbmFtZToiYWxpZ24iLGxhYmVsOiJBbGlnbm1lbnQiLGl0ZW1zOlt7dGV4dDoiTm9uZSIsdmFsdWU6IiJ9LHt0ZXh0OiJMZWZ0Iix2YWx1ZToibGVmdCJ9LHt0ZXh0OiJDZW50ZXIiLHZhbHVlOiJjZW50ZXIifSx7dGV4dDoiUmlnaHQiLHZhbHVlOiJyaWdodCJ9XX1dKS5jb25jYXQodikpfSx3PUN1KGUpP3t0eXBlOiJ0YWJwYW5lbCIsdGFiczpbe3RpdGxlOiJHZW5lcmFsIixuYW1lOiJnZW5lcmFsIixpdGVtczpbYl19LEp1KCJ0YWJsZSIpXX06e3R5cGU6InBhbmVsIixpdGVtczpbYl19O2Uud2luZG93TWFuYWdlci5vcGVuKHt0aXRsZToiVGFibGUgUHJvcGVydGllcyIsc2l6ZToibm9ybWFsIixib2R5Oncsb25TdWJtaXQ6eShTYyxlLHQpLGJ1dHRvbnM6W3t0eXBlOiJjYW5jZWwiLG5hbWU6ImNhbmNlbCIsdGV4dDoiQ2FuY2VsIn0se3R5cGU6InN1Ym1pdCIsbmFtZToic2F2ZSIsdGV4dDoiU2F2ZSIscHJpbWFyeTohMH1dLGluaXRpYWxEYXRhOnN9KX0sQ2M9THUuZWFjaCxSYz1mdW5jdGlvbihzLG4sZCxtLHQpe3ZhciByPWZ1KHMpLGk9ZnVuY3Rpb24oZSl7cmV0dXJuICRuKGUscil9LG89ZnVuY3Rpb24ocil7SHUocykuZWFjaChmdW5jdGlvbih0KXtpKHQpLmVhY2goZnVuY3Rpb24obil7dmFyIGU9Y3IobSxuLHQpO3IobixlKS5lYWNoKGZ1bmN0aW9uKGUpe3Muc2VsZWN0aW9uLnNldFJuZyhlKSxzLmZvY3VzKCksZC5jbGVhcihuKSxkdShuKX0pfSl9KX0sdT1mdW5jdGlvbihlKXtyZXR1cm4gSHUocykubWFwKGZ1bmN0aW9uKG8pe3JldHVybiBpKG8pLmJpbmQoZnVuY3Rpb24oZSl7dmFyIG49Z2UuZnJvbURvbShzLmdldERvYygpKSx0PWNyKG0sZSxvKSxyPWJ0KHgsbixDLm5vbmUoKSk7cmV0dXJuIHp1KGUsdCxyKX0pfSl9LGM9ZnVuY3Rpb24oZil7dC5nZXQoKS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBsPWsoZSxmdW5jdGlvbihlKXtyZXR1cm4gZHQoZSl9KTtIdShzKS5lYWNoKGZ1bmN0aW9uKGEpe2koYSkuZWFjaChmdW5jdGlvbihuKXt2YXIgZSx0LHIsbyxpPWdlLmZyb21Eb20ocy5nZXREb2MoKSksdT13dChpKSxjPShlPW0scj1sLG89dSx7ZWxlbWVudDpiKHQ9YSksbWVyZ2FibGU6Qy5ub25lLHVubWVyZ2FibGU6Qy5ub25lLHNlbGVjdGlvbjpiKGlyKHQsZSkpLGNsaXBib2FyZDpiKHIpLGdlbmVyYXRvcnM6YihvKX0pO2YobixjKS5lYWNoKGZ1bmN0aW9uKGUpe3Muc2VsZWN0aW9uLnNldFJuZyhlKSxzLmZvY3VzKCksZC5jbGVhcihuKX0pfSl9KX0pfTtDYyh7bWNlVGFibGVTcGxpdENlbGxzOmZ1bmN0aW9uKCl7byhuLnVubWVyZ2VDZWxscyl9LG1jZVRhYmxlTWVyZ2VDZWxsczpmdW5jdGlvbigpe28obi5tZXJnZUNlbGxzKX0sbWNlVGFibGVJbnNlcnRSb3dCZWZvcmU6ZnVuY3Rpb24oKXtvKG4uaW5zZXJ0Um93c0JlZm9yZSl9LG1jZVRhYmxlSW5zZXJ0Um93QWZ0ZXI6ZnVuY3Rpb24oKXtvKG4uaW5zZXJ0Um93c0FmdGVyKX0sbWNlVGFibGVJbnNlcnRDb2xCZWZvcmU6ZnVuY3Rpb24oKXtvKG4uaW5zZXJ0Q29sdW1uc0JlZm9yZSl9LG1jZVRhYmxlSW5zZXJ0Q29sQWZ0ZXI6ZnVuY3Rpb24oKXtvKG4uaW5zZXJ0Q29sdW1uc0FmdGVyKX0sbWNlVGFibGVEZWxldGVDb2w6ZnVuY3Rpb24oKXtvKG4uZGVsZXRlQ29sdW1uKX0sbWNlVGFibGVEZWxldGVSb3c6ZnVuY3Rpb24oKXtvKG4uZGVsZXRlUm93KX0sbWNlVGFibGVDdXRSb3c6ZnVuY3Rpb24oZSl7dSgpLmVhY2goZnVuY3Rpb24oZSl7dC5zZXQoZSksbyhuLmRlbGV0ZVJvdyl9KX0sbWNlVGFibGVDb3B5Um93OmZ1bmN0aW9uKGUpe3UoKS5lYWNoKGZ1bmN0aW9uKGUpe3Quc2V0KGUpfSl9LG1jZVRhYmxlUGFzdGVSb3dCZWZvcmU6ZnVuY3Rpb24oZSl7YyhuLnBhc3RlUm93c0JlZm9yZSl9LG1jZVRhYmxlUGFzdGVSb3dBZnRlcjpmdW5jdGlvbihlKXtjKG4ucGFzdGVSb3dzQWZ0ZXIpfSxtY2VUYWJsZURlbGV0ZTpmdW5jdGlvbigpe3F1KHMpLmVhY2goZnVuY3Rpb24oZSl7JG4oZSxyKS5maWx0ZXIoYShyKSkuZWFjaChmdW5jdGlvbihlKXt2YXIgbj1nZS5mcm9tVGV4dCgiIik7aWYobW4oZSxuKSx5bihlKSxzLmRvbS5pc0VtcHR5KHMuZ2V0Qm9keSgpKSlzLnNldENvbnRlbnQoIiIpLHMuc2VsZWN0aW9uLnNldEN1cnNvckxvY2F0aW9uKCk7ZWxzZXt2YXIgdD1zLmRvbS5jcmVhdGVSbmcoKTt0LnNldFN0YXJ0KG4uZG9tKCksMCksdC5zZXRFbmQobi5kb20oKSwwKSxzLnNlbGVjdGlvbi5zZXRSbmcodCkscy5ub2RlQ2hhbmdlZCgpfX0pfSl9fSxmdW5jdGlvbihlLG4pe3MuYWRkQ29tbWFuZChuLGUpfSksQ2Moe21jZUluc2VydFRhYmxlOnkoeGMscywhMCksbWNlVGFibGVQcm9wczp5KHhjLHMsITEpLG1jZVRhYmxlUm93UHJvcHM6eShnYyxzKSxtY2VUYWJsZUNlbGxQcm9wczp5KGZjLHMpfSxmdW5jdGlvbihlLG4pe3MuYWRkQ29tbWFuZChuLGZ1bmN0aW9uKCl7ZSgpfSl9KX0sVGM9ZnVuY3Rpb24oZSl7dmFyIG49Qy5mcm9tKGUuZG9tKCkuZG9jdW1lbnRFbGVtZW50KS5tYXAoZ2UuZnJvbURvbSkuZ2V0T3IoZSk7cmV0dXJue3BhcmVudDpiKG4pLHZpZXc6YihlKSxvcmlnaW46YihfcigwLDApKX19LE9jPWZ1bmN0aW9uKGUsbil7cmV0dXJue3BhcmVudDpiKG4pLHZpZXc6YihlKSxvcmlnaW46YihfcigwLDApKX19LERjPWZ1bmN0aW9uKGUpe3ZhciByPWZ1bmN0aW9uKCl7Zm9yKHZhciBuPVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKW5bZV09YXJndW1lbnRzW2VdO3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2VdPWFyZ3VtZW50c1tlXTtpZihuLmxlbmd0aCE9PXQubGVuZ3RoKXRocm93IG5ldyBFcnJvcignV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyB0byBzdHJ1Y3QuIEV4cGVjdGVkICJbJytuLmxlbmd0aCsnXSIsIGdvdCAnK3QubGVuZ3RoKyIgYXJndW1lbnRzIik7dmFyIHI9e307cmV0dXJuIEIobixmdW5jdGlvbihlLG4pe3JbZV09Yih0W25dKX0pLHJ9fS5hcHBseShudWxsLGUpLG89W107cmV0dXJue2JpbmQ6ZnVuY3Rpb24oZSl7aWYoZT09PXVuZGVmaW5lZCl0aHJvdyBuZXcgRXJyb3IoIkV2ZW50IGJpbmQgZXJyb3I6IHVuZGVmaW5lZCBoYW5kbGVyIik7by5wdXNoKGUpfSx1bmJpbmQ6ZnVuY3Rpb24obil7bz1OKG8sZnVuY3Rpb24oZSl7cmV0dXJuIGUhPT1ufSl9LHRyaWdnZXI6ZnVuY3Rpb24oKXtmb3IodmFyIGU9W10sbj0wO248YXJndW1lbnRzLmxlbmd0aDtuKyspZVtuXT1hcmd1bWVudHNbbl07dmFyIHQ9ci5hcHBseShudWxsLGUpO0IobyxmdW5jdGlvbihlKXtlKHQpfSl9fX0sQWM9ZnVuY3Rpb24oZSl7cmV0dXJue3JlZ2lzdHJ5OlUoZSxmdW5jdGlvbihlKXtyZXR1cm57YmluZDplLmJpbmQsdW5iaW5kOmUudW5iaW5kfX0pLHRyaWdnZXI6VShlLGZ1bmN0aW9uKGUpe3JldHVybiBlLnRyaWdnZXJ9KX19LEVjPWZ1bmN0aW9uKGUpe3ZhciB0LHIsbixvLGksdT1nZS5mcm9tRG9tKGUudGFyZ2V0KSxjPWZ1bmN0aW9uKCl7cmV0dXJuIGUuc3RvcFByb3BhZ2F0aW9uKCl9LGE9ZnVuY3Rpb24oKXtyZXR1cm4gZS5wcmV2ZW50RGVmYXVsdCgpfSxsPSh0PWEscj1jLGZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLG49MDtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKWVbbl09YXJndW1lbnRzW25dO3JldHVybiB0KHIuYXBwbHkobnVsbCxlKSl9KTtyZXR1cm4gbj11LG89ZS5jbGllbnRYLGk9ZS5jbGllbnRZLHt0YXJnZXQ6YihuKSx4OmIobykseTpiKGkpLHN0b3A6YyxwcmV2ZW50OmEsa2lsbDpsLHJhdzpiKGUpfX0sa2M9ZnVuY3Rpb24oZSxuLHQscixvKXt2YXIgaSx1LGM9KGk9dCx1PXIsZnVuY3Rpb24oZSl7aShlKSYmdShFYyhlKSl9KTtyZXR1cm4gZS5kb20oKS5hZGRFdmVudExpc3RlbmVyKG4sYyxvKSx7dW5iaW5kOnkoQmMsZSxuLGMsbyl9fSxCYz1mdW5jdGlvbihlLG4sdCxyKXtlLmRvbSgpLnJlbW92ZUV2ZW50TGlzdGVuZXIobix0LHIpfSxOYz1iKCEwKSxJYz1mdW5jdGlvbihlLG4sdCl7cmV0dXJuIGtjKGUsbixOYyx0LCExKX0sUGM9RWMsTWM9aG8oImVwaG94LWRyYWdzdGVyIikucmVzb2x2ZSxfYz1FaShbImNvbXBhcmUiLCJleHRyYWN0IiwibXV0YXRlIiwic2luayJdKSxXYz1FaShbImVsZW1lbnQiLCJzdGFydCIsInN0b3AiLCJkZXN0cm95Il0pLGpjPUVpKFsiZm9yY2VEcm9wIiwiZHJvcCIsIm1vdmUiLCJkZWxheURyb3AiXSksemM9X2Moe2NvbXBhcmU6ZnVuY3Rpb24oZSxuKXtyZXR1cm4gX3Iobi5sZWZ0KCktZS5sZWZ0KCksbi50b3AoKS1lLnRvcCgpKX0sZXh0cmFjdDpmdW5jdGlvbihlKXtyZXR1cm4gQy5zb21lKF9yKGUueCgpLGUueSgpKSl9LHNpbms6ZnVuY3Rpb24oZSxuKXt2YXIgdD1mdW5jdGlvbihlKXt2YXIgbj1SZSh7bGF5ZXJDbGFzczpNYygiYmxvY2tlciIpfSxlKSx0PWdlLmZyb21UYWcoImRpdiIpO25lKHQsInJvbGUiLCJwcmVzZW50YXRpb24iKSx3ZSh0LHtwb3NpdGlvbjoiZml4ZWQiLGxlZnQ6IjBweCIsdG9wOiIwcHgiLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifSksY28odCxNYygiYmxvY2tlciIpKSxjbyh0LG4ubGF5ZXJDbGFzcyk7cmV0dXJue2VsZW1lbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdH0sZGVzdHJveTpmdW5jdGlvbigpe3luKHQpfX19KG4pLHI9SWModC5lbGVtZW50KCksIm1vdXNlZG93biIsZS5mb3JjZURyb3ApLG89SWModC5lbGVtZW50KCksIm1vdXNldXAiLGUuZHJvcCksaT1JYyh0LmVsZW1lbnQoKSwibW91c2Vtb3ZlIixlLm1vdmUpLHU9SWModC5lbGVtZW50KCksIm1vdXNlb3V0IixlLmRlbGF5RHJvcCk7cmV0dXJuIFdjKHtlbGVtZW50OnQuZWxlbWVudCxzdGFydDpmdW5jdGlvbihlKXtwbihlLHQuZWxlbWVudCgpKX0sc3RvcDpmdW5jdGlvbigpe3luKHQuZWxlbWVudCgpKX0sZGVzdHJveTpmdW5jdGlvbigpe3QuZGVzdHJveSgpLG8udW5iaW5kKCksaS51bmJpbmQoKSx1LnVuYmluZCgpLHIudW5iaW5kKCl9fSl9LG11dGF0ZTpmdW5jdGlvbihlLG4pe2UubXV0YXRlKG4ubGVmdCgpLG4udG9wKCkpfX0pO2Z1bmN0aW9uIExjKCl7dmFyIGk9Qy5ub25lKCksdT1BYyh7bW92ZTpEYyhbImluZm8iXSl9KTtyZXR1cm57b25FdmVudDpmdW5jdGlvbihlLG8pe28uZXh0cmFjdChlKS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBuLHQscjsobj1vLHQ9ZSxyPWkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBuLmNvbXBhcmUoZSx0KX0pLGk9Qy5zb21lKHQpLHIpLmVhY2goZnVuY3Rpb24oZSl7dS50cmlnZ2VyLm1vdmUoZSl9KX0pfSxyZXNldDpmdW5jdGlvbigpe2k9Qy5ub25lKCl9LGV2ZW50czp1LnJlZ2lzdHJ5fX1mdW5jdGlvbiBGYygpe3ZhciBlPWZ1bmN0aW9uIHIoKXtyZXR1cm57b25FdmVudDp4LHJlc2V0Onh9fSgpLG49TGMoKSx0PWU7cmV0dXJue29uOmZ1bmN0aW9uKCl7dC5yZXNldCgpLHQ9bn0sb2ZmOmZ1bmN0aW9uKCl7dC5yZXNldCgpLHQ9ZX0saXNPbjpmdW5jdGlvbigpe3JldHVybiB0PT09bn0sb25FdmVudDpmdW5jdGlvbihlLG4pe3Qub25FdmVudChlLG4pfSxldmVudHM6bi5ldmVudHN9fXZhciBIYz1mdW5jdGlvbihuLHQsZSl7dmFyIHIsbyxpLHU9ITEsYz1BYyh7c3RhcnQ6RGMoW10pLHN0b3A6RGMoW10pfSksYT1GYygpLGw9ZnVuY3Rpb24oKXtkLnN0b3AoKSxhLmlzT24oKSYmKGEub2ZmKCksYy50cmlnZ2VyLnN0b3AoKSl9LGY9KHI9bCxvPTIwMCxpPW51bGwse2NhbmNlbDpmdW5jdGlvbigpe251bGwhPT1pJiYocC5jbGVhclRpbWVvdXQoaSksaT1udWxsKX0sdGhyb3R0bGU6ZnVuY3Rpb24oKXtmb3IodmFyIGU9W10sbj0wO248YXJndW1lbnRzLmxlbmd0aDtuKyspZVtuXT1hcmd1bWVudHNbbl07bnVsbCE9PWkmJnAuY2xlYXJUaW1lb3V0KGkpLGk9cC5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ci5hcHBseShudWxsLGUpLGk9bnVsbH0sbyl9fSk7YS5ldmVudHMubW92ZS5iaW5kKGZ1bmN0aW9uKGUpe3QubXV0YXRlKG4sZS5pbmZvKCkpfSk7dmFyIHM9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLG49MDtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKWVbbl09YXJndW1lbnRzW25dO3UmJnQuYXBwbHkobnVsbCxlKX19LGQ9dC5zaW5rKGpjKHtmb3JjZURyb3A6bCxkcm9wOnMobCksbW92ZTpzKGZ1bmN0aW9uKGUpe2YuY2FuY2VsKCksYS5vbkV2ZW50KGUsdCl9KSxkZWxheURyb3A6cyhmLnRocm90dGxlKX0pLGUpO3JldHVybntlbGVtZW50OmQuZWxlbWVudCxnbzpmdW5jdGlvbihlKXtkLnN0YXJ0KGUpLGEub24oKSxjLnRyaWdnZXIuc3RhcnQoKX0sb246ZnVuY3Rpb24oKXt1PSEwfSxvZmY6ZnVuY3Rpb24oKXt1PSExfSxkZXN0cm95OmZ1bmN0aW9uKCl7ZC5kZXN0cm95KCl9LGV2ZW50czpjLnJlZ2lzdHJ5fX0scWM9ZnVuY3Rpb24oZSl7cmV0dXJuInRydWUiPT09cmUoZSwiY29udGVudGVkaXRhYmxlIil9LFVjPWZ1bmN0aW9uKCl7dmFyIHQscj1BYyh7ZHJhZzpEYyhbInhEZWx0YSIsInlEZWx0YSIsInRhcmdldCJdKX0pLG89Qy5ub25lKCksZT17bXV0YXRlOmZ1bmN0aW9uKGUsbil7dC50cmlnZ2VyLmRyYWcoZSxuKX0sZXZlbnRzOih0PUFjKHtkcmFnOkRjKFsieERlbHRhIiwieURlbHRhIl0pfSkpLnJlZ2lzdHJ5fTtlLmV2ZW50cy5kcmFnLmJpbmQoZnVuY3Rpb24obil7by5lYWNoKGZ1bmN0aW9uKGUpe3IudHJpZ2dlci5kcmFnKG4ueERlbHRhKCksbi55RGVsdGEoKSxlKX0pfSk7cmV0dXJue2Fzc2lnbjpmdW5jdGlvbihlKXtvPUMuc29tZShlKX0sZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG99LG11dGF0ZTplLm11dGF0ZSxldmVudHM6ci5yZWdpc3RyeX19LFZjPXZvKCJyZXNpemVyLWJhci1kcmFnZ2luZyIpLEtjPWZ1bmN0aW9uKG8sbixpKXt2YXIgdD1VYygpLHI9ZnVuY3Rpb24oZSxuKXt2b2lkIDA9PT1uJiYobj17fSk7dmFyIHQ9bi5tb2RlIT09dW5kZWZpbmVkP24ubW9kZTp6YztyZXR1cm4gSGMoZSx0LG4pfSh0LHt9KSx1PUMubm9uZSgpLGU9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gQy5mcm9tKHJlKGUsbikpfTt0LmV2ZW50cy5kcmFnLmJpbmQoZnVuY3Rpb24odCl7ZSh0LnRhcmdldCgpLCJkYXRhLXJvdyIpLmVhY2goZnVuY3Rpb24oZSl7dmFyIG49TG4odC50YXJnZXQoKSwidG9wIik7YmUodC50YXJnZXQoKSwidG9wIixuK3QueURlbHRhKCkrInB4Iil9KSxlKHQudGFyZ2V0KCksImRhdGEtY29sdW1uIikuZWFjaChmdW5jdGlvbihlKXt2YXIgbj1Mbih0LnRhcmdldCgpLCJsZWZ0Iik7YmUodC50YXJnZXQoKSwibGVmdCIsbit0LnhEZWx0YSgpKyJweCIpfSl9KTt2YXIgYz1mdW5jdGlvbihlLG4pe3JldHVybiBMbihlLG4pLV9uKGUsImRhdGEtaW5pdGlhbC0iK24sMCl9O3IuZXZlbnRzLnN0b3AuYmluZChmdW5jdGlvbigpe3QuZ2V0KCkuZWFjaChmdW5jdGlvbihyKXt1LmVhY2goZnVuY3Rpb24odCl7ZShyLCJkYXRhLXJvdyIpLmVhY2goZnVuY3Rpb24oZSl7dmFyIG49YyhyLCJ0b3AiKTt1ZShyLCJkYXRhLWluaXRpYWwtdG9wIiksbS50cmlnZ2VyLmFkanVzdEhlaWdodCh0LG4scGFyc2VJbnQoZSwxMCkpfSksZShyLCJkYXRhLWNvbHVtbiIpLmVhY2goZnVuY3Rpb24oZSl7dmFyIG49YyhyLCJsZWZ0Iik7dWUociwiZGF0YS1pbml0aWFsLWxlZnQiKSxtLnRyaWdnZXIuYWRqdXN0V2lkdGgodCxuLHBhcnNlSW50KGUsMTApKX0pLFRvKG8sdCxpLG4pfSl9KX0pO3ZhciBhPWZ1bmN0aW9uKGUsbil7bS50cmlnZ2VyLnN0YXJ0QWRqdXN0KCksdC5hc3NpZ24oZSksbmUoZSwiZGF0YS1pbml0aWFsLSIrbixMbihlLG4pKSxjbyhlLFZjKSxiZShlLCJvcGFjaXR5IiwiMC4yIiksci5nbyhvLnBhcmVudCgpKX0sbD1JYyhvLnBhcmVudCgpLCJtb3VzZWRvd24iLGZ1bmN0aW9uKGUpe3ZhciBuLHQ7bj1lLnRhcmdldCgpLGxvKG4sd28pJiZhKGUudGFyZ2V0KCksInRvcCIpLHQ9ZS50YXJnZXQoKSxsbyh0LHlvKSYmYShlLnRhcmdldCgpLCJsZWZ0Iil9KSxmPWZ1bmN0aW9uKGUpe3JldHVybiBlbihlLG8udmlldygpKX0scz1mdW5jdGlvbihlKXtyZXR1cm4gTW4oZSwidGFibGUiLGYpLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gTW4oZSwiW2NvbnRlbnRlZGl0YWJsZV0iLGYpLmV4aXN0cyhxYyl9KX0sZD1JYyhvLnZpZXcoKSwibW91c2VvdmVyIixmdW5jdGlvbihlKXtzKGUudGFyZ2V0KCkpLmZvbGQoZnVuY3Rpb24oKXtwZShlLnRhcmdldCgpKSYmU28obyl9LGZ1bmN0aW9uKGUpe3U9Qy5zb21lKGUpLFRvKG8sZSxpLG4pfSl9KSxtPUFjKHthZGp1c3RIZWlnaHQ6RGMoWyJ0YWJsZSIsImRlbHRhIiwicm93Il0pLGFkanVzdFdpZHRoOkRjKFsidGFibGUiLCJkZWx0YSIsImNvbHVtbiJdKSxzdGFydEFkanVzdDpEYyhbXSl9KTtyZXR1cm57ZGVzdHJveTpmdW5jdGlvbigpe2wudW5iaW5kKCksZC51bmJpbmQoKSxyLmRlc3Ryb3koKSxTbyhvKX0scmVmcmVzaDpmdW5jdGlvbihlKXtUbyhvLGUsaSxuKX0sb246ci5vbixvZmY6ci5vZmYsaGlkZUJhcnM6eShEbyxvKSxzaG93QmFyczp5KEFvLG8pLGV2ZW50czptLnJlZ2lzdHJ5fX0sWGM9ZnVuY3Rpb24oZSxtKXt2YXIgdD1ZcixuPUtjKGUsbSx0KSxnPUFjKHtiZWZvcmVSZXNpemU6RGMoWyJ0YWJsZSJdKSxhZnRlclJlc2l6ZTpEYyhbInRhYmxlIl0pLHN0YXJ0RHJhZzpEYyhbXSl9KTtyZXR1cm4gbi5ldmVudHMuYWRqdXN0SGVpZ2h0LmJpbmQoZnVuY3Rpb24oZSl7Zy50cmlnZ2VyLmJlZm9yZVJlc2l6ZShlLnRhYmxlKCkpO3ZhciBuPXQuZGVsdGEoZS5kZWx0YSgpLGUudGFibGUoKSk7VGkoZS50YWJsZSgpLG4sZS5yb3coKSx0KSxnLnRyaWdnZXIuYWZ0ZXJSZXNpemUoZS50YWJsZSgpKX0pLG4uZXZlbnRzLnN0YXJ0QWRqdXN0LmJpbmQoZnVuY3Rpb24oZSl7Zy50cmlnZ2VyLnN0YXJ0RHJhZygpfSksbi5ldmVudHMuYWRqdXN0V2lkdGguYmluZChmdW5jdGlvbihlKXtnLnRyaWdnZXIuYmVmb3JlUmVzaXplKGUudGFibGUoKSk7dmFyIG4sdCxyLG8saSx1LGMsYSxsLGYscyxkPW0uZGVsdGEoZS5kZWx0YSgpLGUudGFibGUoKSk7bj1lLnRhYmxlKCksdD1kLHI9ZS5jb2x1bW4oKSxvPW0saT14aShuKSx1PWkuZ2V0Q2VsbERlbHRhKHQpLGM9UmkobiksYT1pLmdldFdpZHRocyhjLG8saSksbD1taShhLHIsdSxpKSxmPWsobCxmdW5jdGlvbihlLG4pe3JldHVybiBlK2Fbbl19KSxzPXdpKGMsZiksQihzLGZ1bmN0aW9uKGUpe2kuc2V0RWxlbWVudFdpZHRoKGUuZWxlbWVudCxlLndpZHRoKX0pLHI9PT1jLmdyaWQuY29sdW1ucygpLTEmJmkuc2V0VGFibGVXaWR0aChuLGYsdSksZy50cmlnZ2VyLmFmdGVyUmVzaXplKGUudGFibGUoKSl9KSx7b246bi5vbixvZmY6bi5vZmYsaGlkZUJhcnM6bi5oaWRlQmFycyxzaG93QmFyczpuLnNob3dCYXJzLGRlc3Ryb3k6bi5kZXN0cm95LGV2ZW50czpnLnJlZ2lzdHJ5fX0sJGM9ZnVuY3Rpb24oKXt2YXIgZT1nZS5mcm9tVGFnKCJkaXYiKTtyZXR1cm4gd2UoZSx7cG9zaXRpb246InN0YXRpYyIsaGVpZ2h0OiIwIix3aWR0aDoiMCIscGFkZGluZzoiMCIsbWFyZ2luOiIwIixib3JkZXI6IjAifSkscG4oaGUoZ2UuZnJvbURvbShwLmRvY3VtZW50KSksZSksZX0sR2M9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gYXUoZS5kb20oKSkvYXUobi5kb20oKSkqMTAwKyIlIn0sWWM9ZnVuY3Rpb24oYyl7dmFyIHUsYSxsPUMubm9uZSgpLGk9Qy5ub25lKCksZj1DLm5vbmUoKSxzPS8oXGQrKFwuXGQrKT8pJS8sZD1mdW5jdGlvbihlKXtyZXR1cm4iVEFCTEUiPT09ZS5ub2RlTmFtZX0sbT1mdW5jdGlvbihlKXt2YXIgbj1jLmRvbS5nZXRTdHlsZShlLCJ3aWR0aCIpfHxjLmRvbS5nZXRBdHRyaWIoZSwid2lkdGgiKTtyZXR1cm4gQy5mcm9tKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gMDxlLmxlbmd0aH0pfSxlPWZ1bmN0aW9uKCl7cmV0dXJuIGl9O3JldHVybiBjLm9uKCJpbml0IixmdW5jdGlvbigpe3ZhciBlLG4sdD1RcihwdSkscj0oZT1jKS5pbmxpbmU/T2MoY3UoZSksJGMoKSk6VGMoZ2UuZnJvbURvbShlLmdldERvYygpKSk7aWYoZj1DLnNvbWUociksbj1jLmdldFBhcmFtKCJvYmplY3RfcmVzaXppbmciLCEwKSwoZyhuKT8idGFibGUiPT09bjpuKSYmYy5nZXRQYXJhbSgidGFibGVfcmVzaXplX2JhcnMiLCEwLCJib29sZWFuIikpe3ZhciBvPVhjKHIsdCk7by5vbigpLG8uZXZlbnRzLnN0YXJ0RHJhZy5iaW5kKGZ1bmN0aW9uKGUpe2w9Qy5zb21lKGMuc2VsZWN0aW9uLmdldFJuZygpKX0pLG8uZXZlbnRzLmJlZm9yZVJlc2l6ZS5iaW5kKGZ1bmN0aW9uKGUpe3ZhciBuLHQscixvLGk9ZS50YWJsZSgpLmRvbSgpO249YyxyPWF1KHQ9aSksbz1sdShpKSxuLmZpcmUoIk9iamVjdFJlc2l6ZVN0YXJ0Iix7dGFyZ2V0OnQsd2lkdGg6cixoZWlnaHQ6b30pfSksby5ldmVudHMuYWZ0ZXJSZXNpemUuYmluZChmdW5jdGlvbihlKXt2YXIgbix0LHIsbyxpPWUudGFibGUoKSx1PWkuZG9tKCk7ZHUoaSksbC5lYWNoKGZ1bmN0aW9uKGUpe2Muc2VsZWN0aW9uLnNldFJuZyhlKSxjLmZvY3VzKCl9KSxuPWMscj1hdSh0PXUpLG89bHUodSksbi5maXJlKCJPYmplY3RSZXNpemVkIix7dGFyZ2V0OnQsd2lkdGg6cixoZWlnaHQ6b30pLGMudW5kb01hbmFnZXIuYWRkKCl9KSxpPUMuc29tZShvKX19KSxjLm9uKCJPYmplY3RSZXNpemVTdGFydCIsZnVuY3Rpb24oZSl7dmFyIG4sdCxyLG89ZS50YXJnZXQ7aWYoZChvKSl7dmFyIGk9bShvKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHMudGVzdChlKX0pLmdldE9yKCExKTtpJiZPdShjKT8ocj1vLGJlKGdlLmZyb21Eb20ociksIndpZHRoIixhdShyKS50b1N0cmluZygpKyJweCIpKTppfHwhMCE9PWMuZ2V0UGFyYW0oInRhYmxlX3Jlc3BvbnNpdmVfd2lkdGgiKXx8KG49byx0PWdlLmZyb21Eb20obiksdW4odCkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBHYyh0LGUpfSkuZWFjaChmdW5jdGlvbihlKXtiZSh0LCJ3aWR0aCIsZSksQihFbih0LCJ0ciIpLGZ1bmN0aW9uKG4pe0IoZm4obiksZnVuY3Rpb24oZSl7YmUoZSwid2lkdGgiLEdjKGUsbikpfSl9KX0pKSx1PWUud2lkdGgsYT1tKG8pLmdldE9yKCIiKX19KSxjLm9uKCJPYmplY3RSZXNpemVkIixmdW5jdGlvbihlKXt2YXIgbj1lLnRhcmdldDtpZihkKG4pKXt2YXIgdD1uO2lmKHMudGVzdChhKSl7dmFyIHI9cGFyc2VGbG9hdChzLmV4ZWMoYSlbMV0pLG89ZS53aWR0aCpyL3U7Yy5kb20uc2V0U3R5bGUodCwid2lkdGgiLG8rIiUiKX1lbHNle3ZhciBpPVtdO0x1LmVhY2godC5yb3dzLGZ1bmN0aW9uKGUpe0x1LmVhY2goZS5jZWxscyxmdW5jdGlvbihlKXt2YXIgbj1jLmRvbS5nZXRTdHlsZShlLCJ3aWR0aCIsITApO2kucHVzaCh7Y2VsbDplLHdpZHRoOm59KX0pfSksTHUuZWFjaChpLGZ1bmN0aW9uKGUpe2MuZG9tLnNldFN0eWxlKGUuY2VsbCwid2lkdGgiLGUud2lkdGgpLGMuZG9tLnNldEF0dHJpYihlLmNlbGwsIndpZHRoIixudWxsKX0pfX19KSxjLm9uKCJTd2l0Y2hNb2RlIixmdW5jdGlvbigpe2kuZWFjaChmdW5jdGlvbihlKXtjLm1vZGUuaXNSZWFkT25seSgpP2UuaGlkZUJhcnMoKTplLnNob3dCYXJzKCl9KX0pLHtsYXp5UmVzaXplOmUsbGF6eVdpcmU6ZnVuY3Rpb24oKXtyZXR1cm4gZi5nZXRPcihUYyhnZS5mcm9tRG9tKGMuZ2V0Qm9keSgpKSkpfSxkZXN0cm95OmZ1bmN0aW9uKCl7aS5lYWNoKGZ1bmN0aW9uKGUpe2UuZGVzdHJveSgpfSksZi5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBuO249ZSxjLmlubGluZSYmeW4obi5wYXJlbnQoKSl9KX19fSxKYz1adChbe25vbmU6WyJjdXJyZW50Il19LHtmaXJzdDpbImN1cnJlbnQiXX0se21pZGRsZTpbImN1cnJlbnQiLCJ0YXJnZXQiXX0se2xhc3Q6WyJjdXJyZW50Il19XSksUWM9UmUoUmUoe30sSmMpLHtub25lOmZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT11bmRlZmluZWQpLEpjLm5vbmUoZSl9fSksWmM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gJG4odCxlKS5iaW5kKGZ1bmN0aW9uKGUpe3ZhciBuPUtuKGUpO3JldHVybiBfKG4sZnVuY3Rpb24oZSl7cmV0dXJuIGVuKHQsZSl9KS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJue2luZGV4OmUsYWxsOm59fSl9KX0sZWE9ZnVuY3Rpb24oZSxuLHQscil7cmV0dXJue3N0YXJ0OmIoZSksc29mZnNldDpiKG4pLGZpbmlzaDpiKHQpLGZvZmZzZXQ6YihyKX19LG5hPVp0KFt7YmVmb3JlOlsiZWxlbWVudCJdfSx7b246WyJlbGVtZW50Iiwib2Zmc2V0Il19LHthZnRlcjpbImVsZW1lbnQiXX1dKSx0YT17YmVmb3JlOm5hLmJlZm9yZSxvbjpuYS5vbixhZnRlcjpuYS5hZnRlcixjYXRhOmZ1bmN0aW9uKGUsbix0LHIpe3JldHVybiBlLmZvbGQobix0LHIpfSxnZXRTdGFydDpmdW5jdGlvbihlKXtyZXR1cm4gZS5mb2xkKG8sbyxvKX19LHJhPVp0KFt7ZG9tUmFuZ2U6WyJybmciXX0se3JlbGF0aXZlOlsic3RhcnRTaXR1IiwiZmluaXNoU2l0dSJdfSx7ZXhhY3Q6WyJzdGFydCIsInNvZmZzZXQiLCJmaW5pc2giLCJmb2Zmc2V0Il19XSksb2E9e2RvbVJhbmdlOnJhLmRvbVJhbmdlLHJlbGF0aXZlOnJhLnJlbGF0aXZlLGV4YWN0OnJhLmV4YWN0LGV4YWN0RnJvbVJhbmdlOmZ1bmN0aW9uKGUpe3JldHVybiByYS5leGFjdChlLnN0YXJ0KCksZS5zb2Zmc2V0KCksZS5maW5pc2goKSxlLmZvZmZzZXQoKSl9LGdldFdpbjpmdW5jdGlvbihlKXt2YXIgbix0PWUubWF0Y2goe2RvbVJhbmdlOmZ1bmN0aW9uKGUpe3JldHVybiBnZS5mcm9tRG9tKGUuc3RhcnRDb250YWluZXIpfSxyZWxhdGl2ZTpmdW5jdGlvbihlLG4pe3JldHVybiB0YS5nZXRTdGFydChlKX0sZXhhY3Q6ZnVuY3Rpb24oZSxuLHQscil7cmV0dXJuIGV9fSk7cmV0dXJuIG49dCxnZS5mcm9tRG9tKG4uZG9tKCkub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldyl9LHJhbmdlOmVhfSxpYT1mdW5jdGlvbihlLG4pe3JldHVybiBlLnNlbGVjdE5vZGVDb250ZW50cyhuLmRvbSgpKX0sdWE9ZnVuY3Rpb24oZSxuLHQpe3ZhciByLG8saT1lLmRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7cmV0dXJuIHI9aSxuLmZvbGQoZnVuY3Rpb24oZSl7ci5zZXRTdGFydEJlZm9yZShlLmRvbSgpKX0sZnVuY3Rpb24oZSxuKXtyLnNldFN0YXJ0KGUuZG9tKCksbil9LGZ1bmN0aW9uKGUpe3Iuc2V0U3RhcnRBZnRlcihlLmRvbSgpKX0pLG89aSx0LmZvbGQoZnVuY3Rpb24oZSl7by5zZXRFbmRCZWZvcmUoZS5kb20oKSl9LGZ1bmN0aW9uKGUsbil7by5zZXRFbmQoZS5kb20oKSxuKX0sZnVuY3Rpb24oZSl7by5zZXRFbmRBZnRlcihlLmRvbSgpKX0pLGl9LGNhPWZ1bmN0aW9uKGUsbix0LHIsbyl7dmFyIGk9ZS5kb2N1bWVudC5jcmVhdGVSYW5nZSgpO3JldHVybiBpLnNldFN0YXJ0KG4uZG9tKCksdCksaS5zZXRFbmQoci5kb20oKSxvKSxpfSxhYT1mdW5jdGlvbihlKXtyZXR1cm57bGVmdDpiKGUubGVmdCksdG9wOmIoZS50b3ApLHJpZ2h0OmIoZS5yaWdodCksYm90dG9tOmIoZS5ib3R0b20pLHdpZHRoOmIoZS53aWR0aCksaGVpZ2h0OmIoZS5oZWlnaHQpfX0sbGE9WnQoW3tsdHI6WyJzdGFydCIsInNvZmZzZXQiLCJmaW5pc2giLCJmb2Zmc2V0Il19LHtydGw6WyJzdGFydCIsInNvZmZzZXQiLCJmaW5pc2giLCJmb2Zmc2V0Il19XSksZmE9ZnVuY3Rpb24oZSxuLHQpe3JldHVybiBuKGdlLmZyb21Eb20odC5zdGFydENvbnRhaW5lciksdC5zdGFydE9mZnNldCxnZS5mcm9tRG9tKHQuZW5kQ29udGFpbmVyKSx0LmVuZE9mZnNldCl9LHNhPWZ1bmN0aW9uKGUsbil7dmFyIG8sdCxyLGk9KG89ZSxuLm1hdGNoKHtkb21SYW5nZTpmdW5jdGlvbihlKXtyZXR1cm57bHRyOmIoZSkscnRsOkMubm9uZX19LHJlbGF0aXZlOmZ1bmN0aW9uKGUsbil7cmV0dXJue2x0cjpUZShmdW5jdGlvbigpe3JldHVybiB1YShvLGUsbil9KSxydGw6VGUoZnVuY3Rpb24oKXtyZXR1cm4gQy5zb21lKHVhKG8sbixlKSl9KX19LGV4YWN0OmZ1bmN0aW9uKGUsbix0LHIpe3JldHVybntsdHI6VGUoZnVuY3Rpb24oKXtyZXR1cm4gY2EobyxlLG4sdCxyKX0pLHJ0bDpUZShmdW5jdGlvbigpe3JldHVybiBDLnNvbWUoY2Eobyx0LHIsZSxuKSl9KX19fSkpO3JldHVybihyPSh0PWkpLmx0cigpKS5jb2xsYXBzZWQ/dC5ydGwoKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuITE9PT1lLmNvbGxhcHNlZH0pLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gbGEucnRsKGdlLmZyb21Eb20oZS5lbmRDb250YWluZXIpLGUuZW5kT2Zmc2V0LGdlLmZyb21Eb20oZS5zdGFydENvbnRhaW5lciksZS5zdGFydE9mZnNldCl9KS5nZXRPclRodW5rKGZ1bmN0aW9uKCl7cmV0dXJuIGZhKDAsbGEubHRyLHIpfSk6ZmEoMCxsYS5sdHIscil9LGRhPWZ1bmN0aW9uKGksZSl7cmV0dXJuIHNhKGksZSkubWF0Y2goe2x0cjpmdW5jdGlvbihlLG4sdCxyKXt2YXIgbz1pLmRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7cmV0dXJuIG8uc2V0U3RhcnQoZS5kb20oKSxuKSxvLnNldEVuZCh0LmRvbSgpLHIpLG99LHJ0bDpmdW5jdGlvbihlLG4sdCxyKXt2YXIgbz1pLmRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7cmV0dXJuIG8uc2V0U3RhcnQodC5kb20oKSxyKSxvLnNldEVuZChlLmRvbSgpLG4pLG99fSl9LG1hPShsYS5sdHIsbGEucnRsLGZ1bmN0aW9uKGUsbix0KXtyZXR1cm4gbj49ZS5sZWZ0JiZuPD1lLnJpZ2h0JiZ0Pj1lLnRvcCYmdDw9ZS5ib3R0b219KSxnYT1mdW5jdGlvbih0LHIsZSxuLG8pe3ZhciBpPWZ1bmN0aW9uKGUpe3ZhciBuPXQuZG9tKCkuY3JlYXRlUmFuZ2UoKTtyZXR1cm4gbi5zZXRTdGFydChyLmRvbSgpLGUpLG4uY29sbGFwc2UoITApLG59LHU9bnQocikubGVuZ3RoLGM9ZnVuY3Rpb24oZSxuLHQscixvKXtpZigwPT09bylyZXR1cm4gMDtpZihuPT09cilyZXR1cm4gby0xO2Zvcih2YXIgaT1yLHU9MTt1PG87dSsrKXt2YXIgYz1lKHUpLGE9TWF0aC5hYnMobi1jLmxlZnQpO2lmKHQ8PWMuYm90dG9tKXtpZih0PGMudG9wfHxpPGEpcmV0dXJuIHUtMTtpPWF9fXJldHVybiAwfShmdW5jdGlvbihlKXtyZXR1cm4gaShlKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX0sZSxuLG8ucmlnaHQsdSk7cmV0dXJuIGkoYyl9LHBhPWZ1bmN0aW9uKGUsbix0LHIpe3JldHVybiBaKG4pP2Z1bmN0aW9uKG4sdCxyLG8pe3ZhciBlPW4uZG9tKCkuY3JlYXRlUmFuZ2UoKTtlLnNlbGVjdE5vZGUodC5kb20oKSk7dmFyIGk9ZS5nZXRDbGllbnRSZWN0cygpO3JldHVybiBMKGksZnVuY3Rpb24oZSl7cmV0dXJuIG1hKGUscixvKT9DLnNvbWUoZSk6Qy5ub25lKCl9KS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGdhKG4sdCxyLG8sZSl9KX0oZSxuLHQscik6KGk9bix1PXQsYz1yLGE9KG89ZSkuZG9tKCkuY3JlYXRlUmFuZ2UoKSxsPWZuKGkpLEwobCxmdW5jdGlvbihlKXtyZXR1cm4gYS5zZWxlY3ROb2RlKGUuZG9tKCkpLG1hKGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdSxjKT9wYShvLGUsdSxjKTpDLm5vbmUoKX0pKTt2YXIgbyxpLHUsYyxhLGx9LGhhPWZ1bmN0aW9uKGUsbil7cmV0dXJuIG4tZS5sZWZ0PGUucmlnaHQtbn0sdmE9ZnVuY3Rpb24oZSxuLHQpe3ZhciByPWUuZG9tKCkuY3JlYXRlUmFuZ2UoKTtyZXR1cm4gci5zZWxlY3ROb2RlKG4uZG9tKCkpLHIuY29sbGFwc2UodCkscn0sYmE9ZnVuY3Rpb24obixlLHQpe3ZhciByPW4uZG9tKCkuY3JlYXRlUmFuZ2UoKTtyLnNlbGVjdE5vZGUoZS5kb20oKSk7dmFyIG89ci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxpPWhhKG8sdCk7cmV0dXJuKCEwPT09aT9jdDphdCkoZSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiB2YShuLGUsaSl9KX0sd2E9ZnVuY3Rpb24oZSxuLHQpe3ZhciByPW4uZG9tKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbz1oYShyLHQpO3JldHVybiBDLnNvbWUodmEoZSxuLG8pKX0seWE9ZnVuY3Rpb24oZSxuLHQscil7dmFyIG89ZS5kb20oKS5jcmVhdGVSYW5nZSgpO28uc2VsZWN0Tm9kZShuLmRvbSgpKTt2YXIgaT1vLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybiBmdW5jdGlvbihlLG4sdCxyKXt2YXIgbz1lLmRvbSgpLmNyZWF0ZVJhbmdlKCk7by5zZWxlY3ROb2RlKG4uZG9tKCkpO3ZhciBpPW8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdT1NYXRoLm1heChpLmxlZnQsTWF0aC5taW4oaS5yaWdodCx0KSksYz1NYXRoLm1heChpLnRvcCxNYXRoLm1pbihpLmJvdHRvbSxyKSk7cmV0dXJuIHBhKGUsbix1LGMpfShlLG4sTWF0aC5tYXgoaS5sZWZ0LE1hdGgubWluKGkucmlnaHQsdCkpLE1hdGgubWF4KGkudG9wLE1hdGgubWluKGkuYm90dG9tLHIpKSl9LFNhPWRvY3VtZW50LmNhcmV0UG9zaXRpb25Gcm9tUG9pbnQ/ZnVuY3Rpb24odCxlLG4pe3JldHVybiBDLmZyb20odC5kb20oKS5jYXJldFBvc2l0aW9uRnJvbVBvaW50KGUsbikpLmJpbmQoZnVuY3Rpb24oZSl7aWYobnVsbD09PWUub2Zmc2V0Tm9kZSlyZXR1cm4gQy5ub25lKCk7dmFyIG49dC5kb20oKS5jcmVhdGVSYW5nZSgpO3JldHVybiBuLnNldFN0YXJ0KGUub2Zmc2V0Tm9kZSxlLm9mZnNldCksbi5jb2xsYXBzZSgpLEMuc29tZShuKX0pfTpkb2N1bWVudC5jYXJldFJhbmdlRnJvbVBvaW50P2Z1bmN0aW9uKGUsbix0KXtyZXR1cm4gQy5mcm9tKGUuZG9tKCkuY2FyZXRSYW5nZUZyb21Qb2ludChuLHQpKX06ZnVuY3Rpb24obyxpLG4pe3JldHVybiBnZS5mcm9tUG9pbnQobyxpLG4pLmJpbmQoZnVuY3Rpb24ocil7dmFyIGU9ZnVuY3Rpb24oKXtyZXR1cm4gZT1vLHQ9aSwoMD09PWZuKG49cikubGVuZ3RoP3dhOmJhKShlLG4sdCk7dmFyIGUsbix0fTtyZXR1cm4gMD09PWZuKHIpLmxlbmd0aD9lKCk6eWEobyxyLGksbikub3JUaHVuayhlKX0pfSx4YT1mdW5jdGlvbihlLG4pe3ZhciB0PSQoZSk7cmV0dXJuImlucHV0Ij09PXQ/dGEuYWZ0ZXIoZSk6QShbImJyIiwiaW1nIl0sdCk/MD09PW4/dGEuYmVmb3JlKGUpOnRhLmFmdGVyKGUpOnRhLm9uKGUsbil9LENhPWZ1bmN0aW9uKGUsbil7dmFyIHQ9ZS5mb2xkKHRhLmJlZm9yZSx4YSx0YS5hZnRlcikscj1uLmZvbGQodGEuYmVmb3JlLHhhLHRhLmFmdGVyKTtyZXR1cm4gb2EucmVsYXRpdmUodCxyKX0sUmE9ZnVuY3Rpb24oZSxuLHQscil7dmFyIG89eGEoZSxuKSxpPXhhKHQscik7cmV0dXJuIG9hLnJlbGF0aXZlKG8saSl9LFRhPWZ1bmN0aW9uKGUsbix0LHIpe3ZhciBvLGksdSxjLGEsbD0oaT1uLHU9dCxjPXIsKGE9b24obz1lKS5kb20oKS5jcmVhdGVSYW5nZSgpKS5zZXRTdGFydChvLmRvbSgpLGkpLGEuc2V0RW5kKHUuZG9tKCksYyksYSksZj1lbihlLHQpJiZuPT09cjtyZXR1cm4gbC5jb2xsYXBzZWQmJiFmfSxPYT1mdW5jdGlvbihlLG4pe0MuZnJvbShlLmdldFNlbGVjdGlvbigpKS5lYWNoKGZ1bmN0aW9uKGUpe2UucmVtb3ZlQWxsUmFuZ2VzKCksZS5hZGRSYW5nZShuKX0pfSxEYT1mdW5jdGlvbihlLG4sdCxyLG8pe3ZhciBpPWNhKGUsbix0LHIsbyk7T2EoZSxpKX0sQWE9ZnVuY3Rpb24ocyxlKXtyZXR1cm4gc2EocyxlKS5tYXRjaCh7bHRyOmZ1bmN0aW9uKGUsbix0LHIpe0RhKHMsZSxuLHQscil9LHJ0bDpmdW5jdGlvbihlLG4sdCxyKXt2YXIgbyxpLHUsYyxhLGw9cy5nZXRTZWxlY3Rpb24oKTtpZihsLnNldEJhc2VBbmRFeHRlbnQpbC5zZXRCYXNlQW5kRXh0ZW50KGUuZG9tKCksbix0LmRvbSgpLHIpO2Vsc2UgaWYobC5leHRlbmQpdHJ5e2k9ZSx1PW4sYz10LGE9ciwobz1sKS5jb2xsYXBzZShpLmRvbSgpLHUpLG8uZXh0ZW5kKGMuZG9tKCksYSl9Y2F0Y2goZil7RGEocyx0LHIsZSxuKX1lbHNlIERhKHMsdCxyLGUsbil9fSl9LEVhPWZ1bmN0aW9uKGUsbix0LHIsbyl7dmFyIGk9UmEobix0LHIsbyk7QWEoZSxpKX0sa2E9ZnVuY3Rpb24oZSxuLHQpe3ZhciByPUNhKG4sdCk7QWEoZSxyKX0sQmE9ZnVuY3Rpb24oZSl7dmFyIG89b2EuZ2V0V2luKGUpLmRvbSgpLG49ZnVuY3Rpb24oZSxuLHQscil7cmV0dXJuIGNhKG8sZSxuLHQscil9LHQ9ZS5tYXRjaCh7ZG9tUmFuZ2U6ZnVuY3Rpb24oZSl7dmFyIG49Z2UuZnJvbURvbShlLnN0YXJ0Q29udGFpbmVyKSx0PWdlLmZyb21Eb20oZS5lbmRDb250YWluZXIpO3JldHVybiBSYShuLGUuc3RhcnRPZmZzZXQsdCxlLmVuZE9mZnNldCl9LHJlbGF0aXZlOkNhLGV4YWN0OlJhfSk7cmV0dXJuIHNhKG8sdCkubWF0Y2goe2x0cjpuLHJ0bDpufSl9LE5hPWZ1bmN0aW9uKGUpe3ZhciBuPWdlLmZyb21Eb20oZS5hbmNob3JOb2RlKSx0PWdlLmZyb21Eb20oZS5mb2N1c05vZGUpO3JldHVybiBUYShuLGUuYW5jaG9yT2Zmc2V0LHQsZS5mb2N1c09mZnNldCk/Qy5zb21lKGVhKG4sZS5hbmNob3JPZmZzZXQsdCxlLmZvY3VzT2Zmc2V0KSk6ZnVuY3Rpb24oZSl7aWYoMDxlLnJhbmdlQ291bnQpe3ZhciBuPWUuZ2V0UmFuZ2VBdCgwKSx0PWUuZ2V0UmFuZ2VBdChlLnJhbmdlQ291bnQtMSk7cmV0dXJuIEMuc29tZShlYShnZS5mcm9tRG9tKG4uc3RhcnRDb250YWluZXIpLG4uc3RhcnRPZmZzZXQsZ2UuZnJvbURvbSh0LmVuZENvbnRhaW5lciksdC5lbmRPZmZzZXQpKX1yZXR1cm4gQy5ub25lKCl9KGUpfSxJYT1mdW5jdGlvbihlLG4pe3ZhciB0LHIsbz0odD1uLHI9ZS5kb2N1bWVudC5jcmVhdGVSYW5nZSgpLGlhKHIsdCkscik7T2EoZSxvKX0sUGE9ZnVuY3Rpb24oZSl7cmV0dXJuIG49ZSxDLmZyb20obi5nZXRTZWxlY3Rpb24oKSkuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiAwPGUucmFuZ2VDb3VudH0pLmJpbmQoTmEpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gb2EuZXhhY3QoZS5zdGFydCgpLGUuc29mZnNldCgpLGUuZmluaXNoKCksZS5mb2Zmc2V0KCkpfSk7dmFyIG59LE1hPWZ1bmN0aW9uKGUsbil7dmFyIHQscixvLGk9ZGEoZSxuKTtyZXR1cm4gcj0odD1pKS5nZXRDbGllbnRSZWN0cygpLDA8KG89MDxyLmxlbmd0aD9yWzBdOnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpLndpZHRofHwwPG8uaGVpZ2h0P0Muc29tZShvKS5tYXAoYWEpOkMubm9uZSgpfSxfYT1mdW5jdGlvbihlLG4sdCl7cmV0dXJuIHI9ZSxvPW4saT10LHU9Z2UuZnJvbURvbShyLmRvY3VtZW50KSxTYSh1LG8saSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlYShnZS5mcm9tRG9tKGUuc3RhcnRDb250YWluZXIpLGUuc3RhcnRPZmZzZXQsZ2UuZnJvbURvbShlLmVuZENvbnRhaW5lciksZS5lbmRPZmZzZXQpfSk7dmFyIHIsbyxpLHV9LFdhPXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLnV0aWwuVksiKSxqYT1mdW5jdGlvbihlLG4sdCxyKXtyZXR1cm4gSGEoZSxuLFpjKG89dCxpKS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIFFjLm5vbmUobyl9LGZ1bmN0aW9uKGUpe3JldHVybiBlLmluZGV4KzE8ZS5hbGwubGVuZ3RoP1FjLm1pZGRsZShvLGUuYWxsW2UuaW5kZXgrMV0pOlFjLmxhc3Qobyl9KSxyKTt2YXIgbyxpfSx6YT1mdW5jdGlvbihlLG4sdCxyKXtyZXR1cm4gSGEoZSxuLFpjKG89dCxpKS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIFFjLm5vbmUoKX0sZnVuY3Rpb24oZSl7cmV0dXJuIDA8PWUuaW5kZXgtMT9RYy5taWRkbGUobyxlLmFsbFtlLmluZGV4LTFdKTpRYy5maXJzdChvKX0pLHIpO3ZhciBvLGl9LExhPWZ1bmN0aW9uKGUsbil7dmFyIHQ9b2EuZXhhY3QobiwwLG4sMCk7cmV0dXJuIEJhKHQpfSxGYT1mdW5jdGlvbihlLG4pe3ZhciB0LHI9RW4obiwidHIiKTtyZXR1cm4oMD09PSh0PXIpLmxlbmd0aD9DLm5vbmUoKTpDLnNvbWUodFt0Lmxlbmd0aC0xXSkpLmJpbmQoZnVuY3Rpb24oZSl7cmV0dXJuIFBuKGUsInRkLHRoIikubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBMYSgwLGUpfSl9KX0sSGE9ZnVuY3Rpb24ocixlLG4sbyx0KXtyZXR1cm4gbi5mb2xkKEMubm9uZSxDLm5vbmUsZnVuY3Rpb24oZSxuKXtyZXR1cm4gY3QobikubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBMYSgwLGUpfSl9LGZ1bmN0aW9uKHQpe3JldHVybiAkbih0LGUpLmJpbmQoZnVuY3Rpb24oZSl7dmFyIG49dXIodCk7cmV0dXJuIHIudW5kb01hbmFnZXIudHJhbnNhY3QoZnVuY3Rpb24oKXtvLmluc2VydFJvd3NBZnRlcihlLG4pfSksRmEoMCxlKX0pfSl9LHFhPVsidGFibGUiLCJsaSIsImRsIl0sVWE9ZnVuY3Rpb24obix0LHIsbyl7aWYobi5rZXlDb2RlPT09V2EuVEFCKXt2YXIgaT1jdSh0KSx1PWZ1bmN0aW9uKGUpe3ZhciBuPSQoZSk7cmV0dXJuIGVuKGUsaSl8fEEocWEsbil9LGU9dC5zZWxlY3Rpb24uZ2V0Um5nKCk7aWYoZS5jb2xsYXBzZWQpe3ZhciBjPWdlLmZyb21Eb20oZS5zdGFydENvbnRhaW5lcik7Vm4oYyx1KS5lYWNoKGZ1bmN0aW9uKGUpe24ucHJldmVudERlZmF1bHQoKSwobi5zaGlmdEtleT96YTpqYSkodCx1LGUscixvKS5lYWNoKGZ1bmN0aW9uKGUpe3Quc2VsZWN0aW9uLnNldFJuZyhlKX0pfSl9fX0sVmE9ZnVuY3Rpb24oZSxuKXtyZXR1cm57c2VsZWN0aW9uOmIoZSksa2lsbDpiKG4pfX0sS2E9ZnVuY3Rpb24oZSxuLHQscil7cmV0dXJue3N0YXJ0OmIodGEub24oZSxuKSksZmluaXNoOmIodGEub24odCxyKSl9fSxYYT1mdW5jdGlvbihlLG4pe3ZhciB0PWRhKGUsbik7cmV0dXJuIGVhKGdlLmZyb21Eb20odC5zdGFydENvbnRhaW5lciksdC5zdGFydE9mZnNldCxnZS5mcm9tRG9tKHQuZW5kQ29udGFpbmVyKSx0LmVuZE9mZnNldCl9LCRhPUthLEdhPWZ1bmN0aW9uKHQsZSxyLG4sbyl7cmV0dXJuIGVuKHIsbik/Qy5ub25lKCk6enQocixuLGUpLmJpbmQoZnVuY3Rpb24oZSl7dmFyIG49ZS5ib3hlcy5nZXRPcihbXSk7cmV0dXJuIDA8bi5sZW5ndGg/KG8odCxuLGUuc3RhcnQsZS5maW5pc2gpLEMuc29tZShWYShDLnNvbWUoJGEociwwLHIsb3QocikpKSwhMCkpKTpDLm5vbmUoKX0pfSxZYT1mdW5jdGlvbihlLG4pe3JldHVybntpdGVtOmIoZSksbW9kZTpiKG4pfX0sSmE9ZnVuY3Rpb24oZSxuLHQscil7cmV0dXJuIHZvaWQgMD09PXImJihyPVFhKSxlLnByb3BlcnR5KCkucGFyZW50KG4pLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gWWEoZSxyKX0pfSxRYT1mdW5jdGlvbihlLG4sdCxyKXtyZXR1cm4gdm9pZCAwPT09ciYmKHI9WmEpLHQuc2libGluZyhlLG4pLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gWWEoZSxyKX0pfSxaYT1mdW5jdGlvbihlLG4sdCxyKXt2b2lkIDA9PT1yJiYocj1aYSk7dmFyIG89ZS5wcm9wZXJ0eSgpLmNoaWxkcmVuKG4pO3JldHVybiB0LmZpcnN0KG8pLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gWWEoZSxyKX0pfSxlbD1be2N1cnJlbnQ6SmEsbmV4dDpRYSxmYWxsYmFjazpDLm5vbmUoKX0se2N1cnJlbnQ6UWEsbmV4dDpaYSxmYWxsYmFjazpDLnNvbWUoSmEpfSx7Y3VycmVudDpaYSxuZXh0OlphLGZhbGxiYWNrOkMuc29tZShRYSl9XSxubD1mdW5jdGlvbihuLHQscixvLGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT1lbCksTShlLGZ1bmN0aW9uKGUpe3JldHVybiBlLmN1cnJlbnQ9PT1yfSkuYmluZChmdW5jdGlvbihlKXtyZXR1cm4gZS5jdXJyZW50KG4sdCxvLGUubmV4dCkub3JUaHVuayhmdW5jdGlvbigpe3JldHVybiBlLmZhbGxiYWNrLmJpbmQoZnVuY3Rpb24oZSl7cmV0dXJuIG5sKG4sdCxlLG8pfSl9KX0pfSx0bD1mdW5jdGlvbigpe3JldHVybntzaWJsaW5nOmZ1bmN0aW9uKGUsbil7cmV0dXJuIGUucXVlcnkoKS5wcmV2U2libGluZyhuKX0sZmlyc3Q6ZnVuY3Rpb24oZSl7cmV0dXJuIDA8ZS5sZW5ndGg/Qy5zb21lKGVbZS5sZW5ndGgtMV0pOkMubm9uZSgpfX19LHJsPWZ1bmN0aW9uKCl7cmV0dXJue3NpYmxpbmc6ZnVuY3Rpb24oZSxuKXtyZXR1cm4gZS5xdWVyeSgpLm5leHRTaWJsaW5nKG4pfSxmaXJzdDpmdW5jdGlvbihlKXtyZXR1cm4gMDxlLmxlbmd0aD9DLnNvbWUoZVswXSk6Qy5ub25lKCl9fX0sb2w9ZnVuY3Rpb24obixlLHQscixvLGkpe3JldHVybiBubChuLGUscixvKS5iaW5kKGZ1bmN0aW9uKGUpe3JldHVybiBpKGUuaXRlbSgpKT9DLm5vbmUoKTp0KGUuaXRlbSgpKT9DLnNvbWUoZS5pdGVtKCkpOm9sKG4sZS5pdGVtKCksdCxlLm1vZGUoKSxvLGkpfSl9LGlsPWZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gMD09PW4ucHJvcGVydHkoKS5jaGlsZHJlbihlKS5sZW5ndGh9fSx1bD1mdW5jdGlvbihlLG4sdCxyKXtyZXR1cm4gb2woZSxuLHQsUWEsdGwoKSxyKX0sY2w9ZnVuY3Rpb24oZSxuLHQscil7cmV0dXJuIG9sKGUsbix0LFFhLHJsKCkscil9LGFsPUJ0KCksbGw9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gdWwodD1hbCxlLGlsKHQpLG4pO3ZhciB0fSxmbD1mdW5jdGlvbihlLG4pe3JldHVybiBjbCh0PWFsLGUsaWwodCksbik7dmFyIHR9LHNsPVp0KFt7bm9uZTpbIm1lc3NhZ2UiXX0se3N1Y2Nlc3M6W119LHtmYWlsZWRVcDpbImNlbGwiXX0se2ZhaWxlZERvd246WyJjZWxsIl19XSksZGw9ZnVuY3Rpb24oZSl7cmV0dXJuIE1uKGUsInRyIil9LG1sPVJlKFJlKHt9LHNsKSx7dmVyaWZ5OmZ1bmN0aW9uKGMsZSxuLHQscixhLG8pe3JldHVybiBNbih0LCJ0ZCx0aCIsbykuYmluZChmdW5jdGlvbih1KXtyZXR1cm4gTW4oZSwidGQsdGgiLG8pLm1hcChmdW5jdGlvbihpKXtyZXR1cm4gZW4odSxpKT9lbih0LHUpJiZvdCh1KT09PXI/YShpKTpzbC5ub25lKCJpbiBzYW1lIGNlbGwiKTpXdChkbCxbdSxpXSkuZm9sZChmdW5jdGlvbigpe3JldHVybiBuPWksdD11LHI9KGU9YykuZ2V0UmVjdChuKSwobz1lLmdldFJlY3QodCkpLnJpZ2h0PnIubGVmdCYmby5sZWZ0PHIucmlnaHQ/c2wuc3VjY2VzcygpOmEoaSk7dmFyIGUsbix0LHIsb30sZnVuY3Rpb24oZSl7cmV0dXJuIGEoaSl9KX0pfSkuZ2V0T3Ioc2wubm9uZSgiZGVmYXVsdCIpKX0sY2F0YTpmdW5jdGlvbihlLG4sdCxyLG8pe3JldHVybiBlLmZvbGQobix0LHIsbyl9fSksZ2w9ZnVuY3Rpb24ocil7cmV0dXJuIHVuKHIpLmJpbmQoZnVuY3Rpb24obil7dmFyIHQ9Zm4obik7cmV0dXJuIHBsKHQscikubWFwKGZ1bmN0aW9uKGUpe3JldHVybntwYXJlbnQ6YihuKSxjaGlsZHJlbjpiKHQpLGVsZW1lbnQ6YihyKSxpbmRleDpiKGUpfX0pfSl9LHBsPWZ1bmN0aW9uKGUsbil7cmV0dXJuIF8oZSx5KGVuLG4pKX0saGw9ZnVuY3Rpb24oZSl7cmV0dXJuImJyIj09PSQoZSl9LHZsPWZ1bmN0aW9uKGUsbix0KXtyZXR1cm4gbihlLHQpLmJpbmQoZnVuY3Rpb24oZSl7cmV0dXJuIFooZSkmJjA9PT1udChlKS50cmltKCkubGVuZ3RoP3ZsKGUsbix0KTpDLnNvbWUoZSl9KX0sYmw9ZnVuY3Rpb24obixlLHQscil7cmV0dXJuIHNuKG89ZSxpPXQpLmZpbHRlcihobCkub3JUaHVuayhmdW5jdGlvbigpe3JldHVybiBzbihvLGktMSkuZmlsdGVyKGhsKX0pLmJpbmQoZnVuY3Rpb24oZSl7cmV0dXJuIHIudHJhdmVyc2UoZSkuZm9sZChmdW5jdGlvbigpe3JldHVybiB2bChlLHIuZ2F0aGVyLG4pLm1hcChyLnJlbGF0aXZlKX0sZnVuY3Rpb24oZSl7cmV0dXJuIGdsKGUpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gdGEub24oZS5wYXJlbnQoKSxlLmluZGV4KCkpfSl9KX0pO3ZhciBvLGl9LHdsPWZ1bmN0aW9uKGUsbix0LHIpe3ZhciBvLGksdTtyZXR1cm4oaGwobik/KG89ZSxpPW4sKHU9cikudHJhdmVyc2UoaSkub3JUaHVuayhmdW5jdGlvbigpe3JldHVybiB2bChpLHUuZ2F0aGVyLG8pfSkubWFwKHUucmVsYXRpdmUpKTpibChlLG4sdCxyKSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybntzdGFydDpiKGUpLGZpbmlzaDpiKGUpfX0pfSx5bD1mdW5jdGlvbihlLG4pe3JldHVybntsZWZ0OmUubGVmdCx0b3A6ZS50b3ArbixyaWdodDplLnJpZ2h0LGJvdHRvbTplLmJvdHRvbStufX0sU2w9ZnVuY3Rpb24oZSxuKXtyZXR1cm57bGVmdDplLmxlZnQsdG9wOmUudG9wLW4scmlnaHQ6ZS5yaWdodCxib3R0b206ZS5ib3R0b20tbn19LHhsPWZ1bmN0aW9uKGUsbix0KXtyZXR1cm57bGVmdDplLmxlZnQrbix0b3A6ZS50b3ArdCxyaWdodDplLnJpZ2h0K24sYm90dG9tOmUuYm90dG9tK3R9fSxDbD1mdW5jdGlvbihlKXtyZXR1cm57bGVmdDplLmxlZnQsdG9wOmUudG9wLHJpZ2h0OmUucmlnaHQsYm90dG9tOmUuYm90dG9tfX0sUmw9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gQy5zb21lKGUuZ2V0UmVjdChuKSl9LFRsPWZ1bmN0aW9uKGUsbix0KXtyZXR1cm4gUShuKT9SbChlLG4pLm1hcChDbCk6WihuKT8ocj1lLG89biwoMDw9KGk9dCkmJmk8b3Qobyk/ci5nZXRSYW5nZWRSZWN0KG8saSxvLGkrMSk6MDxpP3IuZ2V0UmFuZ2VkUmVjdChvLGktMSxvLGkpOkMubm9uZSgpKS5tYXAoQ2wpKTpDLm5vbmUoKTt2YXIgcixvLGl9LE9sPWZ1bmN0aW9uKGUsbil7cmV0dXJuIFEobik/UmwoZSxuKS5tYXAoQ2wpOloobik/ZS5nZXRSYW5nZWRSZWN0KG4sMCxuLG90KG4pKS5tYXAoQ2wpOkMubm9uZSgpfSxEbD1adChbe25vbmU6W119LHtyZXRyeTpbImNhcmV0Il19XSksQWw9ZnVuY3Rpb24obixlLHIpe3JldHVybiBrbihmdW5jdGlvbihlLG4pe3JldHVybiBuKGUpfSxCbixlLFdpLHQpLmZvbGQoYighMSksZnVuY3Rpb24oZSl7cmV0dXJuIE9sKG4sZSkuZXhpc3RzKGZ1bmN0aW9uKGUpe3JldHVybiB0PWUsKG49cikubGVmdDx0LmxlZnR8fE1hdGguYWJzKHQucmlnaHQtbi5sZWZ0KTwxfHxuLmxlZnQ+dC5yaWdodDt2YXIgbix0fSl9KTt2YXIgdH0sRWw9e3BvaW50OmZ1bmN0aW9uKGUpe3JldHVybiBlLmJvdHRvbX0sYWRqdXN0ZXI6ZnVuY3Rpb24oZSxuLHQscixvKXt2YXIgaT15bChvLDUpO3JldHVybiBNYXRoLmFicyh0LmJvdHRvbS1yLmJvdHRvbSk8MXx8dC50b3A+by5ib3R0b20/RGwucmV0cnkoaSk6dC50b3A9PT1vLmJvdHRvbT9EbC5yZXRyeSh5bChvLDEpKTpBbChlLG4sbyk/RGwucmV0cnkoeGwoaSw1LDApKTpEbC5ub25lKCl9LG1vdmU6eWwsZ2F0aGVyOmZsfSxrbD1mdW5jdGlvbih0LHIsbyxpLHUpe3JldHVybiAwPT09dT9DLnNvbWUoaSk6KGE9dCxsPWkubGVmdCxmPXIucG9pbnQoaSksYS5lbGVtZW50RnJvbVBvaW50KGwsZikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiJ0YWJsZSI9PT0kKGUpfSkuaXNTb21lKCk/KG49aSxjPXUtMSxrbCh0LGU9cixvLGUubW92ZShuLDUpLGMpKTp0LnNpdHVzRnJvbVBvaW50KGkubGVmdCxyLnBvaW50KGkpKS5iaW5kKGZ1bmN0aW9uKGUpe3JldHVybiBlLnN0YXJ0KCkuZm9sZChDLm5vbmUsZnVuY3Rpb24obil7cmV0dXJuIE9sKHQsbikuYmluZChmdW5jdGlvbihlKXtyZXR1cm4gci5hZGp1c3Rlcih0LG4sZSxvLGkpLmZvbGQoQy5ub25lLGZ1bmN0aW9uKGUpe3JldHVybiBrbCh0LHIsbyxlLHUtMSl9KX0pLm9yVGh1bmsoZnVuY3Rpb24oKXtyZXR1cm4gQy5zb21lKGkpfSl9LEMubm9uZSl9KSk7dmFyIGUsbixjLGEsbCxmfSxCbD1mdW5jdGlvbihuLHQsZSl7dmFyIHIsbyxpLHU9bi5tb3ZlKGUsNSksYz1rbCh0LG4sZSx1LDEwMCkuZ2V0T3IodSk7cmV0dXJuIG89YyxpPXQsKChyPW4pLnBvaW50KG8pPmkuZ2V0SW5uZXJIZWlnaHQoKT9DLnNvbWUoci5wb2ludChvKS1pLmdldElubmVySGVpZ2h0KCkpOnIucG9pbnQobyk8MD9DLnNvbWUoLXIucG9pbnQobykpOkMubm9uZSgpKS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIHQuc2l0dXNGcm9tUG9pbnQoYy5sZWZ0LG4ucG9pbnQoYykpfSxmdW5jdGlvbihlKXtyZXR1cm4gdC5zY3JvbGxCeSgwLGUpLHQuc2l0dXNGcm9tUG9pbnQoYy5sZWZ0LG4ucG9pbnQoYyktZSl9KX0sTmw9e3RyeVVwOnkoQmwse3BvaW50OmZ1bmN0aW9uKGUpe3JldHVybiBlLnRvcH0sYWRqdXN0ZXI6ZnVuY3Rpb24oZSxuLHQscixvKXt2YXIgaT1TbChvLDUpO3JldHVybiBNYXRoLmFicyh0LnRvcC1yLnRvcCk8MXx8dC5ib3R0b208by50b3A/RGwucmV0cnkoaSk6dC5ib3R0b209PT1vLnRvcD9EbC5yZXRyeShTbChvLDEpKTpBbChlLG4sbyk/RGwucmV0cnkoeGwoaSw1LDApKTpEbC5ub25lKCl9LG1vdmU6U2wsZ2F0aGVyOmxsfSksdHJ5RG93bjp5KEJsLEVsKSxpZVRyeVVwOmZ1bmN0aW9uKGUsbil7cmV0dXJuIGUuc2l0dXNGcm9tUG9pbnQobi5sZWZ0LG4udG9wLTUpfSxpZVRyeURvd246ZnVuY3Rpb24oZSxuKXtyZXR1cm4gZS5zaXR1c0Zyb21Qb2ludChuLmxlZnQsbi5ib3R0b20rNSl9LGdldEp1bXBTaXplOmIoNSl9LElsPWZ1bmN0aW9uKGksdSxjKXtyZXR1cm4gaS5nZXRTZWxlY3Rpb24oKS5iaW5kKGZ1bmN0aW9uKG8pe3JldHVybiB3bCh1LG8uZmluaXNoKCksby5mb2Zmc2V0KCksYykuZm9sZChmdW5jdGlvbigpe3JldHVybiBDLnNvbWUoTnUoby5maW5pc2goKSxvLmZvZmZzZXQoKSkpfSxmdW5jdGlvbihlKXt2YXIgbix0PWkuZnJvbVNpdHVzKGUpLHI9bWwudmVyaWZ5KGksby5maW5pc2goKSxvLmZvZmZzZXQoKSx0LmZpbmlzaCgpLHQuZm9mZnNldCgpLGMuZmFpbHVyZSx1KTtyZXR1cm4gbj1yLG1sLmNhdGEobixmdW5jdGlvbihlKXtyZXR1cm4gQy5ub25lKCl9LGZ1bmN0aW9uKCl7cmV0dXJuIEMubm9uZSgpfSxmdW5jdGlvbihlKXtyZXR1cm4gQy5zb21lKE51KGUsMCkpfSxmdW5jdGlvbihlKXtyZXR1cm4gQy5zb21lKE51KGUsb3QoZSkpKX0pfSl9KX0sUGw9ZnVuY3Rpb24ocixvLGksdSxjLGEpe3JldHVybiAwPT09YT9DLm5vbmUoKTpXbChyLG8saSx1LGMpLmJpbmQoZnVuY3Rpb24oZSl7dmFyIG49ci5mcm9tU2l0dXMoZSksdD1tbC52ZXJpZnkocixpLHUsbi5maW5pc2goKSxuLmZvZmZzZXQoKSxjLmZhaWx1cmUsbyk7cmV0dXJuIG1sLmNhdGEodCxmdW5jdGlvbigpe3JldHVybiBDLm5vbmUoKX0sZnVuY3Rpb24oKXtyZXR1cm4gQy5zb21lKGUpfSxmdW5jdGlvbihlKXtyZXR1cm4gZW4oaSxlKSYmMD09PXU/TWwocixpLHUsU2wsYyk6UGwocixvLGUsMCxjLGEtMSl9LGZ1bmN0aW9uKGUpe3JldHVybiBlbihpLGUpJiZ1PT09b3QoZSk/TWwocixpLHUseWwsYyk6UGwocixvLGUsb3QoZSksYyxhLTEpfSl9KX0sTWw9ZnVuY3Rpb24obixlLHQscixvKXtyZXR1cm4gVGwobixlLHQpLmJpbmQoZnVuY3Rpb24oZSl7cmV0dXJuIF9sKG4sbyxyKGUsTmwuZ2V0SnVtcFNpemUoKSkpfSl9LF9sPWZ1bmN0aW9uKGUsbix0KXt2YXIgcj1KZSgpLmJyb3dzZXI7cmV0dXJuIHIuaXNDaHJvbWUoKXx8ci5pc1NhZmFyaSgpfHxyLmlzRmlyZWZveCgpfHxyLmlzRWRnZSgpP24ub3RoZXJSZXRyeShlLHQpOnIuaXNJRSgpP24uaWVSZXRyeShlLHQpOkMubm9uZSgpfSxXbD1mdW5jdGlvbihuLGUsdCxyLG8pe3JldHVybiBUbChuLHQscikuYmluZChmdW5jdGlvbihlKXtyZXR1cm4gX2wobixvLGUpfSl9LGpsPWZ1bmN0aW9uKGUsbil7cmV0dXJuIEJuKGUsZnVuY3Rpb24oZSl7cmV0dXJuIHVuKGUpLmV4aXN0cyhmdW5jdGlvbihlKXtyZXR1cm4gZW4oZSxuKX0pfSx0KS5pc1NvbWUoKTt2YXIgdH0semw9ZnVuY3Rpb24oaSx1LGMsZSxhKXtyZXR1cm4gTW4oZSwidGQsdGgiLHUpLmJpbmQoZnVuY3Rpb24obyl7cmV0dXJuIE1uKG8sInRhYmxlIix1KS5iaW5kKGZ1bmN0aW9uKGUpe3JldHVybiBqbChhLGUpP0lsKG49aSx0PXUscj1jKS5iaW5kKGZ1bmN0aW9uKGUpe3JldHVybiBQbChuLHQsZS5lbGVtZW50KCksZS5vZmZzZXQoKSxyLDIwKS5tYXAobi5mcm9tU2l0dXMpfSkuYmluZChmdW5jdGlvbihuKXtyZXR1cm4gTW4obi5maW5pc2goKSwidGQsdGgiLHUpLm1hcChmdW5jdGlvbihlKXtyZXR1cm57c3RhcnQ6YihvKSxmaW5pc2g6YihlKSxyYW5nZTpiKG4pfX0pfSk6Qy5ub25lKCk7dmFyIG4sdCxyfSl9KX0sTGw9ZnVuY3Rpb24oZSxuLHQscixvLGkpe3JldHVybiBKZSgpLmJyb3dzZXIuaXNJRSgpP0Mubm9uZSgpOmkocixuKS5vclRodW5rKGZ1bmN0aW9uKCl7cmV0dXJuIHpsKGUsbix0LHIsbykubWFwKGZ1bmN0aW9uKGUpe3ZhciBuPWUucmFuZ2UoKTtyZXR1cm4gVmEoQy5zb21lKCRhKG4uc3RhcnQoKSxuLnNvZmZzZXQoKSxuLmZpbmlzaCgpLG4uZm9mZnNldCgpKSksITApfSl9KX0sRmw9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gTW4oZSwidHIiLHIpLmJpbmQoZnVuY3Rpb24odCl7cmV0dXJuIE1uKHQsInRhYmxlIixyKS5iaW5kKGZ1bmN0aW9uKGUpe3ZhciBuPUVuKGUsInRyIik7cmV0dXJuIGVuKHQsblswXSk/dWwoYWwsZSxmdW5jdGlvbihlKXtyZXR1cm4gYXQoZSkuaXNTb21lKCl9LHIpLm1hcChmdW5jdGlvbihlKXt2YXIgbj1vdChlKTtyZXR1cm4gVmEoQy5zb21lKCRhKGUsbixlLG4pKSwhMCl9KTpDLm5vbmUoKX0pfSl9LEhsPWZ1bmN0aW9uKGUscil7cmV0dXJuIE1uKGUsInRyIixyKS5iaW5kKGZ1bmN0aW9uKHQpe3JldHVybiBNbih0LCJ0YWJsZSIscikuYmluZChmdW5jdGlvbihlKXt2YXIgbj1FbihlLCJ0ciIpO3JldHVybiBlbih0LG5bbi5sZW5ndGgtMV0pP2NsKGFsLGUsZnVuY3Rpb24oZSl7cmV0dXJuIGN0KGUpLmlzU29tZSgpfSxyKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIFZhKEMuc29tZSgkYShlLDAsZSwwKSksITApfSk6Qy5ub25lKCl9KX0pfSxxbD1mdW5jdGlvbihlLG4sdCxyLG8saSx1KXtyZXR1cm4gemwoZSx0LHIsbyxpKS5iaW5kKGZ1bmN0aW9uKGUpe3JldHVybiBHYShuLHQsZS5zdGFydCgpLGUuZmluaXNoKCksdSl9KX0sVWw9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gTW4oZSwidGQsdGgiLG4pfTt2YXIgVmw9e3RyYXZlcnNlOmxuLGdhdGhlcjpmbCxyZWxhdGl2ZTp0YS5iZWZvcmUsb3RoZXJSZXRyeTpObC50cnlEb3duLGllUmV0cnk6TmwuaWVUcnlEb3duLGZhaWx1cmU6bWwuZmFpbGVkRG93bn0sS2w9e3RyYXZlcnNlOmFuLGdhdGhlcjpsbCxyZWxhdGl2ZTp0YS5iZWZvcmUsb3RoZXJSZXRyeTpObC50cnlVcCxpZVJldHJ5Ok5sLmllVHJ5VXAsZmFpbHVyZTptbC5mYWlsZWRVcH0sWGw9ZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBlPT09bn19LCRsPVhsKDM4KSxHbD1YbCg0MCksWWw9ZnVuY3Rpb24oZSl7cmV0dXJuIDM3PD1lJiZlPD00MH0sSmw9e2lzQmFja3dhcmQ6WGwoMzcpLGlzRm9yd2FyZDpYbCgzOSl9LFFsPXtpc0JhY2t3YXJkOlhsKDM5KSxpc0ZvcndhcmQ6WGwoMzcpfSxabD1mdW5jdGlvbihlKXtyZXR1cm57bGVmdDplLmxlZnQoKSx0b3A6ZS50b3AoKSxyaWdodDplLnJpZ2h0KCksYm90dG9tOmUuYm90dG9tKCksd2lkdGg6ZS53aWR0aCgpLGhlaWdodDplLmhlaWdodCgpfX0sZWY9ZnVuY3Rpb24oYyl7cmV0dXJue2VsZW1lbnRGcm9tUG9pbnQ6ZnVuY3Rpb24oZSxuKXtyZXR1cm4gZ2UuZnJvbVBvaW50KGdlLmZyb21Eb20oYy5kb2N1bWVudCksZSxuKX0sZ2V0UmVjdDpmdW5jdGlvbihlKXtyZXR1cm4gZS5kb20oKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX0sZ2V0UmFuZ2VkUmVjdDpmdW5jdGlvbihlLG4sdCxyKXt2YXIgbz1vYS5leGFjdChlLG4sdCxyKTtyZXR1cm4gTWEoYyxvKS5tYXAoWmwpfSxnZXRTZWxlY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gUGEoYykubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBYYShjLGUpfSl9LGZyb21TaXR1czpmdW5jdGlvbihlKXt2YXIgbj1vYS5yZWxhdGl2ZShlLnN0YXJ0KCksZS5maW5pc2goKSk7cmV0dXJuIFhhKGMsbil9LHNpdHVzRnJvbVBvaW50OmZ1bmN0aW9uKGUsbil7cmV0dXJuIF9hKGMsZSxuKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIEthKGUuc3RhcnQoKSxlLnNvZmZzZXQoKSxlLmZpbmlzaCgpLGUuZm9mZnNldCgpKX0pfSxjbGVhclNlbGVjdGlvbjpmdW5jdGlvbigpe2MuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCl9LGNvbGxhcHNlU2VsZWN0aW9uOmZ1bmN0aW9uKHUpe3ZvaWQgMD09PXUmJih1PSExKSxQYShjKS5lYWNoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmZvbGQoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY29sbGFwc2UodSl9LGZ1bmN0aW9uKGUsbil7dmFyIHQ9dT9lOm47a2EoYyx0LHQpfSxmdW5jdGlvbihlLG4sdCxyKXt2YXIgbz11P2U6dCxpPXU/bjpyO0VhKGMsbyxpLG8saSl9KX0pfSxzZXRTZWxlY3Rpb246ZnVuY3Rpb24oZSl7RWEoYyxlLnN0YXJ0KCksZS5zb2Zmc2V0KCksZS5maW5pc2goKSxlLmZvZmZzZXQoKSl9LHNldFJlbGF0aXZlU2VsZWN0aW9uOmZ1bmN0aW9uKGUsbil7a2EoYyxlLG4pfSxzZWxlY3RDb250ZW50czpmdW5jdGlvbihlKXtJYShjLGUpfSxnZXRJbm5lckhlaWdodDpmdW5jdGlvbigpe3JldHVybiBjLmlubmVySGVpZ2h0fSxnZXRTY3JvbGxZOmZ1bmN0aW9uKCl7dmFyIGUsbix0LHI7cmV0dXJuKGU9Z2UuZnJvbURvbShjLmRvY3VtZW50KSxuPWUhPT11bmRlZmluZWQ/ZS5kb20oKTpwLmRvY3VtZW50LHQ9bi5ib2R5LnNjcm9sbExlZnR8fG4uZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQscj1uLmJvZHkuc2Nyb2xsVG9wfHxuLmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AsX3IodCxyKSkudG9wKCl9LHNjcm9sbEJ5OmZ1bmN0aW9uKGUsbil7dmFyIHQscixvO3Q9ZSxyPW4sKChvPWdlLmZyb21Eb20oYy5kb2N1bWVudCkpIT09dW5kZWZpbmVkP28uZG9tKCk6cC5kb2N1bWVudCkuZGVmYXVsdFZpZXcuc2Nyb2xsQnkodCxyKX19fSxuZj1mdW5jdGlvbihlLG4pe3JldHVybntyb3dzOmUsY29sczpufX0sdGY9ZnVuY3Rpb24oZSxuLHQscil7dmFyIG89ZnVuY3Rpb24gYyhvLGksbix1KXt2YXIgdD1DLm5vbmUoKSxyPWZ1bmN0aW9uKCl7dD1DLm5vbmUoKX07cmV0dXJue21vdXNlZG93bjpmdW5jdGlvbihlKXt1LmNsZWFyKGkpLHQ9VWwoZS50YXJnZXQoKSxuKX0sbW91c2VvdmVyOmZ1bmN0aW9uKGUpe3QuZWFjaChmdW5jdGlvbihyKXt1LmNsZWFyQmVmb3JlVXBkYXRlKGkpLFVsKGUudGFyZ2V0KCksbikuZWFjaChmdW5jdGlvbih0KXt6dChyLHQsbikuZWFjaChmdW5jdGlvbihlKXt2YXIgbj1lLmJveGVzLmdldE9yKFtdKTsoMTxuLmxlbmd0aHx8MT09PW4ubGVuZ3RoJiYhZW4ocix0KSkmJih1LnNlbGVjdFJhbmdlKGksbixlLnN0YXJ0LGUuZmluaXNoKSxvLnNlbGVjdENvbnRlbnRzKHQpKX0pfSl9KX0sbW91c2V1cDpmdW5jdGlvbihlKXt0LmVhY2gocil9fX0oZWYoZSksbix0LHIpO3JldHVybnttb3VzZWRvd246by5tb3VzZWRvd24sbW91c2VvdmVyOm8ubW91c2VvdmVyLG1vdXNldXA6by5tb3VzZXVwfX0scmY9ZnVuY3Rpb24oZSxnLHAsaCl7dmFyIGw9ZWYoZSksZj1mdW5jdGlvbigpe3JldHVybiBoLmNsZWFyKGcpLEMubm9uZSgpfTtyZXR1cm57a2V5ZG93bjpmdW5jdGlvbihlLG4sdCxyLG8sdSl7dmFyIGk9ZS5yYXcoKSxjPWkud2hpY2gsYT0hMD09PWkuc2hpZnRLZXk7cmV0dXJuIEx0KGcsaC5zZWxlY3RlZFNlbGVjdG9yKS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIEdsKGMpJiZhP3kocWwsbCxnLHAsVmwscixuLGguc2VsZWN0UmFuZ2UpOiRsKGMpJiZhP3kocWwsbCxnLHAsS2wscixuLGguc2VsZWN0UmFuZ2UpOkdsKGMpP3koTGwsbCxwLFZsLHIsbixIbCk6JGwoYyk/eShMbCxsLHAsS2wscixuLEZsKTpDLm5vbmV9LGZ1bmN0aW9uKGkpe3ZhciBlPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBMKGUsZnVuY3Rpb24oZSl7cmV0dXJuIG49ZS5yb3dzLHQ9ZS5jb2xzLHI9ZyxIdChpLG4sdCwobz1oKS5maXJzdFNlbGVjdGVkU2VsZWN0b3Isby5sYXN0U2VsZWN0ZWRTZWxlY3RvcikubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBvLmNsZWFyQmVmb3JlVXBkYXRlKHIpLG8uc2VsZWN0UmFuZ2UocixlLmJveGVzLGUuc3RhcnQsZS5maW5pc2gpLGUuYm94ZXN9KTt2YXIgbix0LHIsb30pLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm4gRnQoZyxoLmZpcnN0U2VsZWN0ZWRTZWxlY3RvcixoLmxhc3RTZWxlY3RlZFNlbGVjdG9yKS5tYXAoZnVuY3Rpb24oZSl7dmFyIG49R2woYyl8fHUuaXNGb3J3YXJkKGMpP3RhLmFmdGVyOnRhLmJlZm9yZTtyZXR1cm4gbC5zZXRSZWxhdGl2ZVNlbGVjdGlvbih0YS5vbihlLmZpcnN0KCksMCksbihlLnRhYmxlKCkpKSxoLmNsZWFyKGcpLFZhKEMubm9uZSgpLCEwKX0pfSxmdW5jdGlvbihlKXtyZXR1cm4gQy5zb21lKFZhKEMubm9uZSgpLCEwKSl9KX19O3JldHVybiBHbChjKSYmYT9lKFtuZigxLDApXSk6JGwoYykmJmE/ZShbbmYoLTEsMCldKTp1LmlzQmFja3dhcmQoYykmJmE/ZShbbmYoMCwtMSksbmYoLTEsMCldKTp1LmlzRm9yd2FyZChjKSYmYT9lKFtuZigwLDEpLG5mKDEsMCldKTpZbChjKSYmITE9PWE/ZjpDLm5vbmV9KSgpfSxrZXl1cDpmdW5jdGlvbihsLGYscyxkLG0pe3JldHVybiBMdChnLGguc2VsZWN0ZWRTZWxlY3RvcikuZm9sZChmdW5jdGlvbigpe3ZhciB0LHIsZSxuLG8saSx1LGM9bC5yYXcoKSxhPWMud2hpY2g7cmV0dXJuITEhPSghMD09PWMuc2hpZnRLZXkpJiZZbChhKT8odD1nLHI9cCxlPWYsbj1zLG89ZCxpPW0sdT1oLnNlbGVjdFJhbmdlLGVuKGUsbykmJm49PT1pP0Mubm9uZSgpOk1uKGUsInRkLHRoIixyKS5iaW5kKGZ1bmN0aW9uKG4pe3JldHVybiBNbihvLCJ0ZCx0aCIscikuYmluZChmdW5jdGlvbihlKXtyZXR1cm4gR2EodCxyLG4sZSx1KX0pfSkpOkMubm9uZSgpfSxDLm5vbmUpfX19LG9mPWZ1bmN0aW9uKGUscixuLG8pe3ZhciBpPWVmKGUpO3JldHVybiBmdW5jdGlvbihlLHQpe28uY2xlYXJCZWZvcmVVcGRhdGUociksenQoZSx0LG4pLmVhY2goZnVuY3Rpb24oZSl7dmFyIG49ZS5ib3hlcy5nZXRPcihbXSk7by5zZWxlY3RSYW5nZShyLG4sZS5zdGFydCxlLmZpbmlzaCksaS5zZWxlY3RDb250ZW50cyh0KSxpLmNvbGxhcHNlU2VsZWN0aW9uKCl9KX19LHVmPWZ1bmN0aW9uKG4sZSl7QihlLGZ1bmN0aW9uKGUpeyFmdW5jdGlvbihlLG4pe29vKGUpP2UuZG9tKCkuY2xhc3NMaXN0LnJlbW92ZShuKTp1byhlLG4pO2FvKGUpfShuLGUpfSl9LGNmPXtieUNsYXNzOmZ1bmN0aW9uKG8pe3ZhciBuLHQsaT0obj1vLnNlbGVjdGVkLGZ1bmN0aW9uKGUpe2NvKGUsbil9KSxyPSh0PVtvLnNlbGVjdGVkLG8ubGFzdFNlbGVjdGVkLG8uZmlyc3RTZWxlY3RlZF0sZnVuY3Rpb24oZSl7dWYoZSx0KX0pLHU9ZnVuY3Rpb24oZSl7dmFyIG49RW4oZSxvLnNlbGVjdGVkU2VsZWN0b3IpO0IobixyKX07cmV0dXJue2NsZWFyQmVmb3JlVXBkYXRlOnUsY2xlYXI6dSxzZWxlY3RSYW5nZTpmdW5jdGlvbihlLG4sdCxyKXt1KGUpLEIobixpKSxjbyh0LG8uZmlyc3RTZWxlY3RlZCksY28ocixvLmxhc3RTZWxlY3RlZCl9LHNlbGVjdGVkU2VsZWN0b3I6by5zZWxlY3RlZFNlbGVjdG9yLGZpcnN0U2VsZWN0ZWRTZWxlY3RvcjpvLmZpcnN0U2VsZWN0ZWRTZWxlY3RvcixsYXN0U2VsZWN0ZWRTZWxlY3RvcjpvLmxhc3RTZWxlY3RlZFNlbGVjdG9yfX0sYnlBdHRyOmZ1bmN0aW9uKG8saSxuKXt2YXIgdD1mdW5jdGlvbihlKXt1ZShlLG8uc2VsZWN0ZWQpLHVlKGUsby5maXJzdFNlbGVjdGVkKSx1ZShlLG8ubGFzdFNlbGVjdGVkKX0sdT1mdW5jdGlvbihlKXtuZShlLG8uc2VsZWN0ZWQsIjEiKX0sYz1mdW5jdGlvbihlKXtyKGUpLG4oKX0scj1mdW5jdGlvbihlKXt2YXIgbj1FbihlLG8uc2VsZWN0ZWRTZWxlY3Rvcik7QihuLHQpfTtyZXR1cm57Y2xlYXJCZWZvcmVVcGRhdGU6cixjbGVhcjpjLHNlbGVjdFJhbmdlOmZ1bmN0aW9uKGUsbix0LHIpe2MoZSksQihuLHUpLG5lKHQsby5maXJzdFNlbGVjdGVkLCIxIiksbmUocixvLmxhc3RTZWxlY3RlZCwiMSIpLGkobix0LHIpfSxzZWxlY3RlZFNlbGVjdG9yOm8uc2VsZWN0ZWRTZWxlY3RvcixmaXJzdFNlbGVjdGVkU2VsZWN0b3I6by5maXJzdFNlbGVjdGVkU2VsZWN0b3IsbGFzdFNlbGVjdGVkU2VsZWN0b3I6by5sYXN0U2VsZWN0ZWRTZWxlY3Rvcn19fSxhZj1mdW5jdGlvbihlLG4scyl7dmFyIHQ9R24oZSksZD1Rbi5nZW5lcmF0ZSh0KTtyZXR1cm4gVm8oZCxuKS5tYXAoZnVuY3Rpb24oZSl7dmFyIHQsbixyLG8saSx1LGMsYSxsLGY9am8oZCxzLCExKTtyZXR1cm57dXBPckxlZnRDZWxsczoodD1lLG49cyxyPWYuc2xpY2UoMCx0W3QubGVuZ3RoLTFdLnJvdygpKzEpLG89TG8ocixuKSxqKG8sZnVuY3Rpb24oZSl7dmFyIG49ZS5jZWxscygpLnNsaWNlKDAsdFt0Lmxlbmd0aC0xXS5jb2x1bW4oKSsxKTtyZXR1cm4gayhuLGZ1bmN0aW9uKGUpe3JldHVybiBlLmVsZW1lbnQoKX0pfSkpLGRvd25PclJpZ2h0Q2VsbHM6KHU9ZSxjPXMsYT0oaT1mKS5zbGljZSh1WzBdLnJvdygpK3VbMF0ucm93c3BhbigpLTEsaS5sZW5ndGgpLGw9TG8oYSxjKSxqKGwsZnVuY3Rpb24oZSl7dmFyIG49ZS5jZWxscygpLnNsaWNlKHVbMF0uY29sdW1uKCkrdVswXS5jb2xzcGFuKCktMSwrZS5jZWxscygpLmxlbmd0aCk7cmV0dXJuIGsobixmdW5jdGlvbihlKXtyZXR1cm4gZS5lbGVtZW50KCl9KX0pKX19KX0sbGY9ZnVuY3Rpb24oZSl7cmV0dXJuITE9PT1sbyhnZS5mcm9tRG9tKGUudGFyZ2V0KSwiZXBob3gtc25vb2tlci1yZXNpemVyLWJhciIpfTtmdW5jdGlvbiBmZih2LGIsZSl7dmFyIHc9Qy5ub25lKCksYT1EdSh2KSx5PWNmLmJ5QXR0cihRdCxmdW5jdGlvbihpLHUsYyl7ZS50YXJnZXRzKCkuZWFjaChmdW5jdGlvbihvKXskbih1KS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBuPWdlLmZyb21Eb20odi5nZXREb2MoKSksdD1idCh4LG4sYSkscj1hZihlLG8sdCk7a3UodixpLHUsYyxyKX0pfSl9LGZ1bmN0aW9uKCl7QnUodil9KTt2Lm9uKCJpbml0IixmdW5jdGlvbihlKXt2YXIgcj12LmdldFdpbigpLG89Y3Uodiksbj1mdSh2KSx0PXRmKHIsbyxuLHkpLGM9cmYocixvLG4seSksaT1vZihyLG8sbix5KTt2Lm9uKCJUYWJsZVNlbGVjdG9yQ2hhbmdlIixmdW5jdGlvbihlKXtpKGUuc3RhcnQsZS5maW5pc2gpfSk7dmFyIHUsYSxsPWZ1bmN0aW9uKGUsbil7ITA9PT1lLnJhdygpLnNoaWZ0S2V5JiYobi5raWxsKCkmJmUua2lsbCgpLG4uc2VsZWN0aW9uKCkuZWFjaChmdW5jdGlvbihlKXt2YXIgbj1vYS5yZWxhdGl2ZShlLnN0YXJ0KCksZS5maW5pc2goKSksdD1kYShyLG4pO3Yuc2VsZWN0aW9uLnNldFJuZyh0KX0pKX0sZj1mdW5jdGlvbihlKXt2YXIgbj1QYyhlKTtpZihuLnJhdygpLnNoaWZ0S2V5JiZZbChuLnJhdygpLndoaWNoKSl7dmFyIHQ9di5zZWxlY3Rpb24uZ2V0Um5nKCkscj1nZS5mcm9tRG9tKHQuc3RhcnRDb250YWluZXIpLG89Z2UuZnJvbURvbSh0LmVuZENvbnRhaW5lcik7Yy5rZXl1cChuLHIsdC5zdGFydE9mZnNldCxvLHQuZW5kT2Zmc2V0KS5lYWNoKGZ1bmN0aW9uKGUpe2wobixlKX0pfX0scz1mdW5jdGlvbihlKXt2YXIgbj1QYyhlKTtiKCkuZWFjaChmdW5jdGlvbihlKXtlLmhpZGVCYXJzKCl9KTt2YXIgdD12LnNlbGVjdGlvbi5nZXRSbmcoKSxyPWdlLmZyb21Eb20odi5zZWxlY3Rpb24uZ2V0U3RhcnQoKSksbz1nZS5mcm9tRG9tKHQuc3RhcnRDb250YWluZXIpLGk9Z2UuZnJvbURvbSh0LmVuZENvbnRhaW5lciksdT1wdShyKS5pc1J0bCgpP1FsOkpsO2Mua2V5ZG93bihuLG8sdC5zdGFydE9mZnNldCxpLHQuZW5kT2Zmc2V0LHUpLmVhY2goZnVuY3Rpb24oZSl7bChuLGUpfSksYigpLmVhY2goZnVuY3Rpb24oZSl7ZS5zaG93QmFycygpfSl9LGQ9ZnVuY3Rpb24oZSl7cmV0dXJuIDA9PT1lLmJ1dHRvbn0sbT1mdW5jdGlvbihlKXtkKGUpJiZsZihlKSYmdC5tb3VzZWRvd24oUGMoZSkpfSxnPWZ1bmN0aW9uKGUpe3ZhciBuOygobj1lKS5idXR0b25zPT09dW5kZWZpbmVkfHxwYy5icm93c2VyLmlzRWRnZSgpJiYwPT09bi5idXR0b25zfHwwIT0oMSZuLmJ1dHRvbnMpKSYmbGYoZSkmJnQubW91c2VvdmVyKFBjKGUpKX0scD1mdW5jdGlvbihlKXtkKGUpJiZsZihlKSYmdC5tb3VzZXVwKFBjKGUpKX0saD0odT1TKGdlLmZyb21Eb20obykpLGE9UygwKSx7dG91Y2hFbmQ6ZnVuY3Rpb24oZSl7dmFyIG49Z2UuZnJvbURvbShlLnRhcmdldCk7aWYoInRkIj09PSQobil8fCJ0aCI9PT0kKG4pKXt2YXIgdD11LmdldCgpLHI9YS5nZXQoKTtlbih0LG4pJiZlLnRpbWVTdGFtcC1yPDMwMCYmKGUucHJldmVudERlZmF1bHQoKSxpKG4sbikpfXUuc2V0KG4pLGEuc2V0KGUudGltZVN0YW1wKX19KTt2Lm9uKCJtb3VzZWRvd24iLG0pLHYub24oIm1vdXNlb3ZlciIsZyksdi5vbigibW91c2V1cCIscCksdi5vbigidG91Y2hlbmQiLGgudG91Y2hFbmQpLHYub24oImtleXVwIixmKSx2Lm9uKCJrZXlkb3duIixzKSx2Lm9uKCJOb2RlQ2hhbmdlIixmdW5jdGlvbigpe3ZhciBlPXYuc2VsZWN0aW9uLG49Z2UuZnJvbURvbShlLmdldFN0YXJ0KCkpLHQ9Z2UuZnJvbURvbShlLmdldEVuZCgpKTtXdCgkbixbbix0XSkuZm9sZChmdW5jdGlvbigpe3kuY2xlYXIobyl9LHgpfSksdz1DLnNvbWUoe21vdXNlZG93bjptLG1vdXNlb3ZlcjpnLG1vdXNldXA6cCxrZXl1cDpmLGtleWRvd246c30pfSk7cmV0dXJue2NsZWFyOnkuY2xlYXIsZGVzdHJveTpmdW5jdGlvbigpe3cuZWFjaChmdW5jdGlvbihlKXt9KX19fXZhciBzZj1mdW5jdGlvbihuKXtyZXR1cm57Z2V0OmZ1bmN0aW9uKCl7dmFyIGU9Y3Uobik7cmV0dXJuIEx0KGUsS3QpLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm4gbi5zZWxlY3Rpb24uZ2V0U3RhcnQoKT09PXVuZGVmaW5lZD90cigpOm9yKG4uc2VsZWN0aW9uKX0sZnVuY3Rpb24oZSl7cmV0dXJuIHJyKGUpfSl9fX0sZGY9ZnVuY3Rpb24oZSx0KXt2YXIgbz1TKEMubm9uZSgpKSxpPVMoW10pLG49ZnVuY3Rpb24oKXtyZXR1cm4gcXUoZSkuYmluZChmdW5jdGlvbihuKXtyZXR1cm4gJG4obikubWFwKGZ1bmN0aW9uKGUpe3JldHVybiJjYXB0aW9uIj09PSQobik/dXIobik6Y3IodCxlLG4pfSl9KX0scj1mdW5jdGlvbigpe28uc2V0KFRlKG4pKCkpLEIoaS5nZXQoKSxmdW5jdGlvbihlKXtyZXR1cm4gZSgpfSl9LHU9ZnVuY3Rpb24obix0KXt2YXIgcj1mdW5jdGlvbigpe3JldHVybiBvLmdldCgpLmZvbGQoZnVuY3Rpb24oKXtuLnNldERpc2FibGVkKCEwKX0sZnVuY3Rpb24oZSl7bi5zZXREaXNhYmxlZCh0KGUpKX0pfTtyZXR1cm4gcigpLGkuc2V0KGkuZ2V0KCkuY29uY2F0KFtyXSkpLGZ1bmN0aW9uKCl7aS5zZXQoTihpLmdldCgpLGZ1bmN0aW9uKGUpe3JldHVybiBlIT09cn0pKX19O3JldHVybiBlLm9uKCJOb2RlQ2hhbmdlIFRhYmxlU2VsZWN0b3JDaGFuZ2UiLHIpLHtvblNldHVwVGFibGU6ZnVuY3Rpb24oZSl7cmV0dXJuIHUoZSxmdW5jdGlvbihlKXtyZXR1cm4hMX0pfSxvblNldHVwQ2VsbE9yUm93OmZ1bmN0aW9uKGUpe3JldHVybiB1KGUsZnVuY3Rpb24oZSl7cmV0dXJuImNhcHRpb24iPT09JChlLmVsZW1lbnQoKSl9KX0sb25TZXR1cE1lcmdlYWJsZTpmdW5jdGlvbihlKXtyZXR1cm4gdShlLGZ1bmN0aW9uKGUpe3JldHVybiBlLm1lcmdhYmxlKCkuaXNOb25lKCl9KX0sb25TZXR1cFVubWVyZ2VhYmxlOmZ1bmN0aW9uKGUpe3JldHVybiB1KGUsZnVuY3Rpb24oZSl7cmV0dXJuIGUudW5tZXJnYWJsZSgpLmlzTm9uZSgpfSl9LHJlc2V0VGFyZ2V0czpyLHRhcmdldHM6ZnVuY3Rpb24oKXtyZXR1cm4gby5nZXQoKX19fSxtZj1mdW5jdGlvbihuLGUpe24udWkucmVnaXN0cnkuYWRkTWVudUJ1dHRvbigidGFibGUiLHt0b29sdGlwOiJUYWJsZSIsaWNvbjoidGFibGUiLGZldGNoOmZ1bmN0aW9uKGUpe3JldHVybiBlKCJpbnNlcnR0YWJsZSB8IGNlbGwgcm93IGNvbHVtbiB8IGFkdnRhYmxlc29ydCB8IHRhYmxlcHJvcHMgZGVsZXRldGFibGUiKX19KTt2YXIgdD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbi5leGVjQ29tbWFuZChlKX19O24udWkucmVnaXN0cnkuYWRkQnV0dG9uKCJ0YWJsZXByb3BzIix7dG9vbHRpcDoiVGFibGUgcHJvcGVydGllcyIsb25BY3Rpb246dCgibWNlVGFibGVQcm9wcyIpLGljb246InRhYmxlIixvblNldHVwOmUub25TZXR1cFRhYmxlfSksbi51aS5yZWdpc3RyeS5hZGRCdXR0b24oInRhYmxlZGVsZXRlIix7dG9vbHRpcDoiRGVsZXRlIHRhYmxlIixvbkFjdGlvbjp0KCJtY2VUYWJsZURlbGV0ZSIpLGljb246InRhYmxlLWRlbGV0ZS10YWJsZSIsb25TZXR1cDplLm9uU2V0dXBUYWJsZX0pLG4udWkucmVnaXN0cnkuYWRkQnV0dG9uKCJ0YWJsZWNlbGxwcm9wcyIse3Rvb2x0aXA6IkNlbGwgcHJvcGVydGllcyIsb25BY3Rpb246dCgibWNlVGFibGVDZWxsUHJvcHMiKSxpY29uOiJ0YWJsZS1jZWxsLXByb3BlcnRpZXMiLG9uU2V0dXA6ZS5vblNldHVwQ2VsbE9yUm93fSksbi51aS5yZWdpc3RyeS5hZGRCdXR0b24oInRhYmxlbWVyZ2VjZWxscyIse3Rvb2x0aXA6Ik1lcmdlIGNlbGxzIixvbkFjdGlvbjp0KCJtY2VUYWJsZU1lcmdlQ2VsbHMiKSxpY29uOiJ0YWJsZS1tZXJnZS1jZWxscyIsb25TZXR1cDplLm9uU2V0dXBNZXJnZWFibGV9KSxuLnVpLnJlZ2lzdHJ5LmFkZEJ1dHRvbigidGFibGVzcGxpdGNlbGxzIix7dG9vbHRpcDoiU3BsaXQgY2VsbCIsb25BY3Rpb246dCgibWNlVGFibGVTcGxpdENlbGxzIiksaWNvbjoidGFibGUtc3BsaXQtY2VsbHMiLG9uU2V0dXA6ZS5vblNldHVwVW5tZXJnZWFibGV9KSxuLnVpLnJlZ2lzdHJ5LmFkZEJ1dHRvbigidGFibGVpbnNlcnRyb3diZWZvcmUiLHt0b29sdGlwOiJJbnNlcnQgcm93IGJlZm9yZSIsb25BY3Rpb246dCgibWNlVGFibGVJbnNlcnRSb3dCZWZvcmUiKSxpY29uOiJ0YWJsZS1pbnNlcnQtcm93LWFib3ZlIixvblNldHVwOmUub25TZXR1cENlbGxPclJvd30pLG4udWkucmVnaXN0cnkuYWRkQnV0dG9uKCJ0YWJsZWluc2VydHJvd2FmdGVyIix7dG9vbHRpcDoiSW5zZXJ0IHJvdyBhZnRlciIsb25BY3Rpb246dCgibWNlVGFibGVJbnNlcnRSb3dBZnRlciIpLGljb246InRhYmxlLWluc2VydC1yb3ctYWZ0ZXIiLG9uU2V0dXA6ZS5vblNldHVwQ2VsbE9yUm93fSksbi51aS5yZWdpc3RyeS5hZGRCdXR0b24oInRhYmxlZGVsZXRlcm93Iix7dG9vbHRpcDoiRGVsZXRlIHJvdyIsb25BY3Rpb246dCgibWNlVGFibGVEZWxldGVSb3ciKSxpY29uOiJ0YWJsZS1kZWxldGUtcm93IixvblNldHVwOmUub25TZXR1cENlbGxPclJvd30pLG4udWkucmVnaXN0cnkuYWRkQnV0dG9uKCJ0YWJsZXJvd3Byb3BzIix7dG9vbHRpcDoiUm93IHByb3BlcnRpZXMiLG9uQWN0aW9uOnQoIm1jZVRhYmxlUm93UHJvcHMiKSxpY29uOiJ0YWJsZS1yb3ctcHJvcGVydGllcyIsb25TZXR1cDplLm9uU2V0dXBDZWxsT3JSb3d9KSxuLnVpLnJlZ2lzdHJ5LmFkZEJ1dHRvbigidGFibGVpbnNlcnRjb2xiZWZvcmUiLHt0b29sdGlwOiJJbnNlcnQgY29sdW1uIGJlZm9yZSIsb25BY3Rpb246dCgibWNlVGFibGVJbnNlcnRDb2xCZWZvcmUiKSxpY29uOiJ0YWJsZS1pbnNlcnQtY29sdW1uLWJlZm9yZSIsb25TZXR1cDplLm9uU2V0dXBDZWxsT3JSb3d9KSxuLnVpLnJlZ2lzdHJ5LmFkZEJ1dHRvbigidGFibGVpbnNlcnRjb2xhZnRlciIse3Rvb2x0aXA6Ikluc2VydCBjb2x1bW4gYWZ0ZXIiLG9uQWN0aW9uOnQoIm1jZVRhYmxlSW5zZXJ0Q29sQWZ0ZXIiKSxpY29uOiJ0YWJsZS1pbnNlcnQtY29sdW1uLWFmdGVyIixvblNldHVwOmUub25TZXR1cENlbGxPclJvd30pLG4udWkucmVnaXN0cnkuYWRkQnV0dG9uKCJ0YWJsZWRlbGV0ZWNvbCIse3Rvb2x0aXA6IkRlbGV0ZSBjb2x1bW4iLG9uQWN0aW9uOnQoIm1jZVRhYmxlRGVsZXRlQ29sIiksaWNvbjoidGFibGUtZGVsZXRlLWNvbHVtbiIsb25TZXR1cDplLm9uU2V0dXBDZWxsT3JSb3d9KSxuLnVpLnJlZ2lzdHJ5LmFkZEJ1dHRvbigidGFibGVjdXRyb3ciLHt0b29sdGlwOiJDdXQgcm93IixvbkFjdGlvbjp0KCJtY2VUYWJsZUN1dFJvdyIpLGljb246InRlbXBvcmFyeS1wbGFjZWhvbGRlciIsb25TZXR1cDplLm9uU2V0dXBDZWxsT3JSb3d9KSxuLnVpLnJlZ2lzdHJ5LmFkZEJ1dHRvbigidGFibGVjb3B5cm93Iix7dG9vbHRpcDoiQ29weSByb3ciLG9uQWN0aW9uOnQoIm1jZVRhYmxlQ29weVJvdyIpLGljb246InRlbXBvcmFyeS1wbGFjZWhvbGRlciIsb25TZXR1cDplLm9uU2V0dXBDZWxsT3JSb3d9KSxuLnVpLnJlZ2lzdHJ5LmFkZEJ1dHRvbigidGFibGVwYXN0ZXJvd2JlZm9yZSIse3Rvb2x0aXA6IlBhc3RlIHJvdyBiZWZvcmUiLG9uQWN0aW9uOnQoIm1jZVRhYmxlUGFzdGVSb3dCZWZvcmUiKSxpY29uOiJ0ZW1wb3JhcnktcGxhY2Vob2xkZXIiLG9uU2V0dXA6ZS5vblNldHVwQ2VsbE9yUm93fSksbi51aS5yZWdpc3RyeS5hZGRCdXR0b24oInRhYmxlcGFzdGVyb3dhZnRlciIse3Rvb2x0aXA6IlBhc3RlIHJvdyBhZnRlciIsb25BY3Rpb246dCgibWNlVGFibGVQYXN0ZVJvd0FmdGVyIiksaWNvbjoidGVtcG9yYXJ5LXBsYWNlaG9sZGVyIixvblNldHVwOmUub25TZXR1cENlbGxPclJvd30pLG4udWkucmVnaXN0cnkuYWRkQnV0dG9uKCJ0YWJsZWluc2VydGRpYWxvZyIse3Rvb2x0aXA6Ikluc2VydCB0YWJsZSIsb25BY3Rpb246dCgibWNlSW5zZXJ0VGFibGUiKSxpY29uOiJ0YWJsZSJ9KX0sZ2Y9ZnVuY3Rpb24obil7dmFyIGU9bi5nZXRQYXJhbSgidGFibGVfdG9vbGJhciIsInRhYmxlcHJvcHMgdGFibGVkZWxldGUgfCB0YWJsZWluc2VydHJvd2JlZm9yZSB0YWJsZWluc2VydHJvd2FmdGVyIHRhYmxlZGVsZXRlcm93IHwgdGFibGVpbnNlcnRjb2xiZWZvcmUgdGFibGVpbnNlcnRjb2xhZnRlciB0YWJsZWRlbGV0ZWNvbCIpOzA8ZS5sZW5ndGgmJm4udWkucmVnaXN0cnkuYWRkQ29udGV4dFRvb2xiYXIoInRhYmxlIix7cHJlZGljYXRlOmZ1bmN0aW9uKGUpe3JldHVybiBuLmRvbS5pcyhlLCJ0YWJsZSIpJiZuLmdldEJvZHkoKS5jb250YWlucyhlKX0saXRlbXM6ZSxzY29wZToibm9kZSIscG9zaXRpb246Im5vZGUifSl9LHBmPWZ1bmN0aW9uKHIsZSl7dmFyIG49ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHIuZXhlY0NvbW1hbmQoZSl9fSx0PWZ1bmN0aW9uKGUpe3ZhciBuPWUubnVtUm93cyx0PWUubnVtQ29sdW1ucztyLnVuZG9NYW5hZ2VyLnRyYW5zYWN0KGZ1bmN0aW9uKCl7d2Mocix0LG4pfSksci5hZGRWaXN1YWwoKX0sbz17dGV4dDoiVGFibGUgcHJvcGVydGllcyIsb25TZXR1cDplLm9uU2V0dXBUYWJsZSxvbkFjdGlvbjpuKCJtY2VUYWJsZVByb3BzIil9LGk9e3RleHQ6IkRlbGV0ZSB0YWJsZSIsaWNvbjoidGFibGUtZGVsZXRlLXRhYmxlIixvblNldHVwOmUub25TZXR1cFRhYmxlLG9uQWN0aW9uOm4oIm1jZVRhYmxlRGVsZXRlIil9LHU9W3t0eXBlOiJtZW51aXRlbSIsdGV4dDoiSW5zZXJ0IHJvdyBiZWZvcmUiLGljb246InRhYmxlLWluc2VydC1yb3ctYWJvdmUiLG9uQWN0aW9uOm4oIm1jZVRhYmxlSW5zZXJ0Um93QmVmb3JlIiksb25TZXR1cDplLm9uU2V0dXBDZWxsT3JSb3d9LHt0eXBlOiJtZW51aXRlbSIsdGV4dDoiSW5zZXJ0IHJvdyBhZnRlciIsaWNvbjoidGFibGUtaW5zZXJ0LXJvdy1hZnRlciIsb25BY3Rpb246bigibWNlVGFibGVJbnNlcnRSb3dBZnRlciIpLG9uU2V0dXA6ZS5vblNldHVwQ2VsbE9yUm93fSx7dHlwZToibWVudWl0ZW0iLHRleHQ6IkRlbGV0ZSByb3ciLGljb246InRhYmxlLWRlbGV0ZS1yb3ciLG9uQWN0aW9uOm4oIm1jZVRhYmxlRGVsZXRlUm93Iiksb25TZXR1cDplLm9uU2V0dXBDZWxsT3JSb3d9LHt0eXBlOiJtZW51aXRlbSIsdGV4dDoiUm93IHByb3BlcnRpZXMiLGljb246InRhYmxlLXJvdy1wcm9wZXJ0aWVzIixvbkFjdGlvbjpuKCJtY2VUYWJsZVJvd1Byb3BzIiksb25TZXR1cDplLm9uU2V0dXBDZWxsT3JSb3d9LHt0eXBlOiJzZXBhcmF0b3IifSx7dHlwZToibWVudWl0ZW0iLHRleHQ6IkN1dCByb3ciLG9uQWN0aW9uOm4oIm1jZVRhYmxlQ3V0Um93Iiksb25TZXR1cDplLm9uU2V0dXBDZWxsT3JSb3d9LHt0eXBlOiJtZW51aXRlbSIsdGV4dDoiQ29weSByb3ciLG9uQWN0aW9uOm4oIm1jZVRhYmxlQ29weVJvdyIpLG9uU2V0dXA6ZS5vblNldHVwQ2VsbE9yUm93fSx7dHlwZToibWVudWl0ZW0iLHRleHQ6IlBhc3RlIHJvdyBiZWZvcmUiLG9uQWN0aW9uOm4oIm1jZVRhYmxlUGFzdGVSb3dCZWZvcmUiKSxvblNldHVwOmUub25TZXR1cENlbGxPclJvd30se3R5cGU6Im1lbnVpdGVtIix0ZXh0OiJQYXN0ZSByb3cgYWZ0ZXIiLG9uQWN0aW9uOm4oIm1jZVRhYmxlUGFzdGVSb3dBZnRlciIpLG9uU2V0dXA6ZS5vblNldHVwQ2VsbE9yUm93fV0sYz17dHlwZToibmVzdGVkbWVudWl0ZW0iLHRleHQ6IlJvdyIsZ2V0U3VibWVudUl0ZW1zOmZ1bmN0aW9uKCl7cmV0dXJuIHV9fSxhPVt7dHlwZToibWVudWl0ZW0iLHRleHQ6Ikluc2VydCBjb2x1bW4gYmVmb3JlIixpY29uOiJ0YWJsZS1pbnNlcnQtY29sdW1uLWJlZm9yZSIsb25BY3Rpb246bigibWNlVGFibGVJbnNlcnRDb2xCZWZvcmUiKSxvblNldHVwOmUub25TZXR1cENlbGxPclJvd30se3R5cGU6Im1lbnVpdGVtIix0ZXh0OiJJbnNlcnQgY29sdW1uIGFmdGVyIixpY29uOiJ0YWJsZS1pbnNlcnQtY29sdW1uLWFmdGVyIixvbkFjdGlvbjpuKCJtY2VUYWJsZUluc2VydENvbEFmdGVyIiksb25TZXR1cDplLm9uU2V0dXBDZWxsT3JSb3d9LHt0eXBlOiJtZW51aXRlbSIsdGV4dDoiRGVsZXRlIGNvbHVtbiIsaWNvbjoidGFibGUtZGVsZXRlLWNvbHVtbiIsb25BY3Rpb246bigibWNlVGFibGVEZWxldGVDb2wiKSxvblNldHVwOmUub25TZXR1cENlbGxPclJvd31dLGw9e3R5cGU6Im5lc3RlZG1lbnVpdGVtIix0ZXh0OiJDb2x1bW4iLGdldFN1Ym1lbnVJdGVtczpmdW5jdGlvbigpe3JldHVybiBhfX0sZj1be3R5cGU6Im1lbnVpdGVtIix0ZXh0OiJDZWxsIHByb3BlcnRpZXMiLGljb246InRhYmxlLWNlbGwtcHJvcGVydGllcyIsb25BY3Rpb246bigibWNlVGFibGVDZWxsUHJvcHMiKSxvblNldHVwOmUub25TZXR1cENlbGxPclJvd30se3R5cGU6Im1lbnVpdGVtIix0ZXh0OiJNZXJnZSBjZWxscyIsaWNvbjoidGFibGUtbWVyZ2UtY2VsbHMiLG9uQWN0aW9uOm4oIm1jZVRhYmxlTWVyZ2VDZWxscyIpLG9uU2V0dXA6ZS5vblNldHVwTWVyZ2VhYmxlfSx7dHlwZToibWVudWl0ZW0iLHRleHQ6IlNwbGl0IGNlbGwiLGljb246InRhYmxlLXNwbGl0LWNlbGxzIixvbkFjdGlvbjpuKCJtY2VUYWJsZVNwbGl0Q2VsbHMiKSxvblNldHVwOmUub25TZXR1cFVubWVyZ2VhYmxlfV0scz17dHlwZToibmVzdGVkbWVudWl0ZW0iLHRleHQ6IkNlbGwiLGdldFN1Ym1lbnVJdGVtczpmdW5jdGlvbigpe3JldHVybiBmfX07ITE9PT1yLmdldFBhcmFtKCJ0YWJsZV9ncmlkIiwhMCwiYm9vbGVhbiIpP3IudWkucmVnaXN0cnkuYWRkTWVudUl0ZW0oImluc2VydHRhYmxlIix7dGV4dDoiVGFibGUiLGljb246InRhYmxlIixvbkFjdGlvbjpuKCJtY2VJbnNlcnRUYWJsZSIpfSk6ci51aS5yZWdpc3RyeS5hZGROZXN0ZWRNZW51SXRlbSgiaW5zZXJ0dGFibGUiLHt0ZXh0OiJUYWJsZSIsaWNvbjoidGFibGUiLGdldFN1Ym1lbnVJdGVtczpmdW5jdGlvbigpe3JldHVyblt7dHlwZToiZmFuY3ltZW51aXRlbSIsZmFuY3l0eXBlOiJpbnNlcnR0YWJsZSIsb25BY3Rpb246dH1dfX0pLHIudWkucmVnaXN0cnkuYWRkTWVudUl0ZW0oImluc2VydHRhYmxlZGlhbG9nIix7dGV4dDoiSW5zZXJ0IHRhYmxlIixpY29uOiJ0YWJsZSIsb25BY3Rpb246bigibWNlSW5zZXJ0VGFibGUiKX0pLHIudWkucmVnaXN0cnkuYWRkTWVudUl0ZW0oInRhYmxlcHJvcHMiLG8pLHIudWkucmVnaXN0cnkuYWRkTWVudUl0ZW0oImRlbGV0ZXRhYmxlIixpKSxyLnVpLnJlZ2lzdHJ5LmFkZE5lc3RlZE1lbnVJdGVtKCJyb3ciLGMpLHIudWkucmVnaXN0cnkuYWRkTmVzdGVkTWVudUl0ZW0oImNvbHVtbiIsbCksci51aS5yZWdpc3RyeS5hZGROZXN0ZWRNZW51SXRlbSgiY2VsbCIscyksci51aS5yZWdpc3RyeS5hZGRDb250ZXh0TWVudSgidGFibGUiLHt1cGRhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gZS5yZXNldFRhcmdldHMoKSxlLnRhcmdldHMoKS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIiJ9LGZ1bmN0aW9uKGUpe3JldHVybiJjYXB0aW9uIj09PSQoZS5lbGVtZW50KCkpPyJ0YWJsZXByb3BzIGRlbGV0ZXRhYmxlIjoiY2VsbCByb3cgY29sdW1uIHwgYWR2dGFibGVzb3J0IHwgdGFibGVwcm9wcyBkZWxldGV0YWJsZSJ9KX19KX0saGY9ZnVuY3Rpb24odCxyLGUsbil7cmV0dXJue2luc2VydFRhYmxlOmZ1bmN0aW9uKGUsbil7cmV0dXJuIHdjKHQsZSxuKX0sc2V0Q2xpcGJvYXJkUm93czpmdW5jdGlvbihlKXtyZXR1cm4gbj1yLHQ9ayhlLGdlLmZyb21Eb20pLHZvaWQgbi5zZXQoQy5mcm9tKHQpKTt2YXIgbix0fSxnZXRDbGlwYm9hcmRSb3dzOmZ1bmN0aW9uKCl7cmV0dXJuIHIuZ2V0KCkuZm9sZChmdW5jdGlvbigpe30sZnVuY3Rpb24oZSl7cmV0dXJuIGsoZSxmdW5jdGlvbihlKXtyZXR1cm4gZS5kb20oKX0pfSl9LHJlc2l6ZUhhbmRsZXI6ZSxzZWxlY3Rpb25UYXJnZXRzOm59fTtmdW5jdGlvbiB2ZihuKXt2YXIgZT1zZihuKSx0PWRmKG4sZSkscj1ZYyhuKSxvPWZmKG4sci5sYXp5UmVzaXplLHQpLGk9anUobixyLmxhenlXaXJlKSx1PVMoQy5ub25lKCkpO3JldHVybiBSYyhuLGksbyxlLHUpLGFyKG4sZSxpLG8pLHBmKG4sdCksbWYobix0KSxnZihuKSxuLm9uKCJQcmVJbml0IixmdW5jdGlvbigpe24uc2VyaWFsaXplci5hZGRUZW1wQXR0cigkdCksbi5zZXJpYWxpemVyLmFkZFRlbXBBdHRyKFl0KX0pLHl1KG4pJiZuLm9uKCJrZXlkb3duIixmdW5jdGlvbihlKXtVYShlLG4saSxyLmxhenlXaXJlKX0pLG4ub24oInJlbW92ZSIsZnVuY3Rpb24oKXtyLmRlc3Ryb3koKSxvLmRlc3Ryb3koKX0pLGhmKG4sdSxyLHQpfSFmdW5jdGlvbiB3Zigpe3MuYWRkKCJ0YWJsZSIsdmYpfSgpfSh3aW5kb3cpOw==]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/template/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/template/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIGU9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuUGx1Z2luTWFuYWdlciIpLHQ9ZnVuY3Rpb24oKXt9LG89ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGV9fTt2YXIgbixyLGEsdT1vKCExKSxpPW8oITApLHA9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UudXRpbC5Ub29scyIpLGM9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UudXRpbC5YSFIiKSxsPWZ1bmN0aW9uKGUpe3JldHVybiBlLmdldFBhcmFtKCJ0ZW1wbGF0ZV9yZXBsYWNlX3ZhbHVlcyIpfSxzPWZ1bmN0aW9uKGUpe3JldHVybiBlLmdldFBhcmFtKCJ0ZW1wbGF0ZV9tZGF0ZV9mb3JtYXQiLGUudHJhbnNsYXRlKCIlWS0lbS0lZCIpKX0sZj1mdW5jdGlvbihlLHQpe2lmKChlPSIiK2UpLmxlbmd0aDx0KWZvcih2YXIgbj0wO248dC1lLmxlbmd0aDtuKyspZT0iMCIrZTtyZXR1cm4gZX0sbT1mdW5jdGlvbihlLHQsbil7dmFyIHI9IlN1biBNb24gVHVlIFdlZCBUaHUgRnJpIFNhdCBTdW4iLnNwbGl0KCIgIiksYT0iU3VuZGF5IE1vbmRheSBUdWVzZGF5IFdlZG5lc2RheSBUaHVyc2RheSBGcmlkYXkgU2F0dXJkYXkgU3VuZGF5Ii5zcGxpdCgiICIpLG89IkphbiBGZWIgTWFyIEFwciBNYXkgSnVuIEp1bCBBdWcgU2VwIE9jdCBOb3YgRGVjIi5zcGxpdCgiICIpLHU9IkphbnVhcnkgRmVicnVhcnkgTWFyY2ggQXByaWwgTWF5IEp1bmUgSnVseSBBdWd1c3QgU2VwdGVtYmVyIE9jdG9iZXIgTm92ZW1iZXIgRGVjZW1iZXIiLnNwbGl0KCIgIik7cmV0dXJuIG49bnx8bmV3IERhdGUsdD0odD0odD0odD0odD0odD0odD0odD0odD0odD0odD0odD0odD0odD0odD0odD10LnJlcGxhY2UoIiVEIiwiJW0vJWQvJVkiKSkucmVwbGFjZSgiJXIiLCIlSTolTTolUyAlcCIpKS5yZXBsYWNlKCIlWSIsIiIrbi5nZXRGdWxsWWVhcigpKSkucmVwbGFjZSgiJXkiLCIiK24uZ2V0WWVhcigpKSkucmVwbGFjZSgiJW0iLGYobi5nZXRNb250aCgpKzEsMikpKS5yZXBsYWNlKCIlZCIsZihuLmdldERhdGUoKSwyKSkpLnJlcGxhY2UoIiVIIiwiIitmKG4uZ2V0SG91cnMoKSwyKSkpLnJlcGxhY2UoIiVNIiwiIitmKG4uZ2V0TWludXRlcygpLDIpKSkucmVwbGFjZSgiJVMiLCIiK2Yobi5nZXRTZWNvbmRzKCksMikpKS5yZXBsYWNlKCIlSSIsIiIrKChuLmdldEhvdXJzKCkrMTEpJTEyKzEpKSkucmVwbGFjZSgiJXAiLG4uZ2V0SG91cnMoKTwxMj8iQU0iOiJQTSIpKS5yZXBsYWNlKCIlQiIsIiIrZS50cmFuc2xhdGUodVtuLmdldE1vbnRoKCldKSkpLnJlcGxhY2UoIiViIiwiIitlLnRyYW5zbGF0ZShvW24uZ2V0TW9udGgoKV0pKSkucmVwbGFjZSgiJUEiLCIiK2UudHJhbnNsYXRlKGFbbi5nZXREYXkoKV0pKSkucmVwbGFjZSgiJWEiLCIiK2UudHJhbnNsYXRlKHJbbi5nZXREYXkoKV0pKSkucmVwbGFjZSgiJSUiLCIlIil9LGQ9ZnVuY3Rpb24odCxuKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10LnRlbXBsYXRlczsiZnVuY3Rpb24iIT10eXBlb2YgZT8ic3RyaW5nIj09dHlwZW9mIGU/Yy5zZW5kKHt1cmw6ZSxzdWNjZXNzOmZ1bmN0aW9uKGUpe24oSlNPTi5wYXJzZShlKSl9fSk6bihlKTplKG4pfX0sZz1mdW5jdGlvbihuLGUpe3JldHVybiBwLmVhY2goZSxmdW5jdGlvbihlLHQpeyJmdW5jdGlvbiI9PXR5cGVvZiBlJiYoZT1lKHQpKSxuPW4ucmVwbGFjZShuZXcgUmVnRXhwKCJcXHtcXCQiK3QrIlxcfSIsImciKSxlKX0pLG59LHY9ZnVuY3Rpb24oZSx0KXt2YXIgcj1lLmRvbSxhPWwoZSk7cC5lYWNoKHIuc2VsZWN0KCIqIix0KSxmdW5jdGlvbihuKXtwLmVhY2goYSxmdW5jdGlvbihlLHQpe3IuaGFzQ2xhc3Mobix0KSYmImZ1bmN0aW9uIj09dHlwZW9mIGFbdF0mJmFbdF0obil9KX0pfSxoPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBSZWdFeHAoIlxcYiIrdCsiXFxiIiwiZyIpLnRlc3QoZS5jbGFzc05hbWUpfSx5PWZ1bmN0aW9uKG4sZSx0KXt2YXIgcixhLG89bi5kb20sdT1uLnNlbGVjdGlvbi5nZXRDb250ZW50KCk7dD1nKHQsbChuKSkscj1vLmNyZWF0ZSgiZGl2IixudWxsLHQpLChhPW8uc2VsZWN0KCIubWNlVG1wbCIscikpJiYwPGEubGVuZ3RoJiYocj1vLmNyZWF0ZSgiZGl2IixudWxsKSkuYXBwZW5kQ2hpbGQoYVswXS5jbG9uZU5vZGUoITApKSxwLmVhY2goby5zZWxlY3QoIioiLHIpLGZ1bmN0aW9uKGUpe3ZhciB0O2goZSxuLmdldFBhcmFtKCJ0ZW1wbGF0ZV9jZGF0ZV9jbGFzc2VzIiwiY2RhdGUiKS5yZXBsYWNlKC9ccysvZywifCIpKSYmKGUuaW5uZXJIVE1MPW0obiwodD1uKS5nZXRQYXJhbSgidGVtcGxhdGVfY2RhdGVfZm9ybWF0Iix0LnRyYW5zbGF0ZSgiJVktJW0tJWQiKSkpKSxoKGUsbi5nZXRQYXJhbSgidGVtcGxhdGVfbWRhdGVfY2xhc3NlcyIsIm1kYXRlIikucmVwbGFjZSgvXHMrL2csInwiKSkmJihlLmlubmVySFRNTD1tKG4scyhuKSkpLGgoZSxuLmdldFBhcmFtKCJ0ZW1wbGF0ZV9zZWxlY3RlZF9jb250ZW50X2NsYXNzZXMiLCJzZWxjb250ZW50IikucmVwbGFjZSgvXHMrL2csInwiKSkmJihlLmlubmVySFRNTD11KX0pLHYobixyKSxuLmV4ZWNDb21tYW5kKCJtY2VJbnNlcnRDb250ZW50IiwhMSxyLmlubmVySFRNTCksbi5hZGRWaXN1YWwoKX0sYj1mdW5jdGlvbihlKXtlLmFkZENvbW1hbmQoIm1jZUluc2VydFRlbXBsYXRlIixmdW5jdGlvbiB0KHIpe2Zvcih2YXIgYT1bXSxlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKylhW2UtMV09YXJndW1lbnRzW2VdO3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgZT1bXSx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyllW3RdPWFyZ3VtZW50c1t0XTt2YXIgbj1hLmNvbmNhdChlKTtyZXR1cm4gci5hcHBseShudWxsLG4pfX0oeSxlKSl9LE09ZnVuY3Rpb24oKXtyZXR1cm4gVH0sVD0obj1mdW5jdGlvbihlKXtyZXR1cm4gZS5pc05vbmUoKX0se2ZvbGQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSgpfSxpczp1LGlzU29tZTp1LGlzTm9uZTppLGdldE9yOmE9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGdldE9yVGh1bms6cj1mdW5jdGlvbihlKXtyZXR1cm4gZSgpfSxnZXRPckRpZTpmdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoZXx8ImVycm9yOiBnZXRPckRpZSBjYWxsZWQgb24gbm9uZS4iKX0sZ2V0T3JOdWxsOm8obnVsbCksZ2V0T3JVbmRlZmluZWQ6byh1bmRlZmluZWQpLG9yOmEsb3JUaHVuazpyLG1hcDpNLGVhY2g6dCxiaW5kOk0sZXhpc3RzOnUsZm9yYWxsOmksZmlsdGVyOk0sZXF1YWxzOm4sZXF1YWxzXzpuLHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm5bXX0sdG9TdHJpbmc6bygibm9uZSgpIil9KSxfPWZ1bmN0aW9uKG4pe3ZhciBlPW8obiksdD1mdW5jdGlvbigpe3JldHVybiBhfSxyPWZ1bmN0aW9uKGUpe3JldHVybiBlKG4pfSxhPXtmb2xkOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQobil9LGlzOmZ1bmN0aW9uKGUpe3JldHVybiBuPT09ZX0saXNTb21lOmksaXNOb25lOnUsZ2V0T3I6ZSxnZXRPclRodW5rOmUsZ2V0T3JEaWU6ZSxnZXRPck51bGw6ZSxnZXRPclVuZGVmaW5lZDplLG9yOnQsb3JUaHVuazp0LG1hcDpmdW5jdGlvbihlKXtyZXR1cm4gXyhlKG4pKX0sZWFjaDpmdW5jdGlvbihlKXtlKG4pfSxiaW5kOnIsZXhpc3RzOnIsZm9yYWxsOnIsZmlsdGVyOmZ1bmN0aW9uKGUpe3JldHVybiBlKG4pP2E6VH0sdG9BcnJheTpmdW5jdGlvbigpe3JldHVybltuXX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4ic29tZSgiK24rIikifSxlcXVhbHM6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuaXMobil9LGVxdWFsc186ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5mb2xkKHUsZnVuY3Rpb24oZSl7cmV0dXJuIHQobixlKX0pfX07cmV0dXJuIGF9LE89e3NvbWU6Xyxub25lOk0sZnJvbTpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09PWV8fGU9PT11bmRlZmluZWQ/VDpfKGUpfX0seD1mdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPTAsYT1lLmxlbmd0aDtyPGE7cisrKXt2YXIgbz1lW3JdO2lmKHQobyxyKSlyZXR1cm4gTy5zb21lKG8pO2lmKG4obyxyKSlicmVha31yZXR1cm4gTy5ub25lKCl9KGUsdCx1KX0sUz10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS51dGlsLlByb21pc2UiKSx3PU9iamVjdC5oYXNPd25Qcm9wZXJ0eSxQPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHcuY2FsbChlLHQpfSxEPXsnIic6IiZxdW90OyIsIjwiOiImbHQ7IiwiPiI6IiZndDsiLCImIjoiJmFtcDsiLCInIjoiJiMwMzk7In0sQz1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC9bIic8PiZdL2csZnVuY3Rpb24oZSl7cmV0dXJuKFAodD1ELG49ZSk/Ty5mcm9tKHRbbl0pOk8ubm9uZSgpKS5nZXRPcihlKTt2YXIgdCxufSl9LEE9ZnVuY3Rpb24obCx0KXt2YXIgZT1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49ZS5sZW5ndGgscj1uZXcgQXJyYXkobiksYT0wO2E8bjthKyspe3ZhciBvPWVbYV07clthXT10KG8sYSl9cmV0dXJuIHJ9KGUsZnVuY3Rpb24oZSl7cmV0dXJue3RleHQ6ZS50ZXh0LHZhbHVlOmUudGV4dH19KX0scz1mdW5jdGlvbihlLHQpe3JldHVybiB4KGUsZnVuY3Rpb24oZSl7cmV0dXJuIGUudGV4dD09PXR9KX0sZj1mdW5jdGlvbihlKXtsLndpbmRvd01hbmFnZXIuYWxlcnQoIkNvdWxkIG5vdCBsb2FkIHRoZSBzcGVjaWZpZWQgdGVtcGxhdGUuIixmdW5jdGlvbigpe3JldHVybiBlLmZvY3VzKCJ0ZW1wbGF0ZSIpfSl9LG09ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBTKGZ1bmN0aW9uKHQsbil7ZS52YWx1ZS51cmwuZm9sZChmdW5jdGlvbigpe3JldHVybiB0KGUudmFsdWUuY29udGVudC5nZXRPcigiIikpfSxmdW5jdGlvbihlKXtyZXR1cm4gYy5zZW5kKHt1cmw6ZSxzdWNjZXNzOmZ1bmN0aW9uKGUpe3QoZSl9LGVycm9yOmZ1bmN0aW9uKGUpe24oZSl9fSl9KX0pfTsoZnVuY3Rpb24oKXtpZih0JiYwIT09dC5sZW5ndGgpcmV0dXJuIE8uZnJvbShwLm1hcCh0LGZ1bmN0aW9uKGUsdCl7dmFyIG49ZnVuY3Rpb24oZSl7cmV0dXJuIGUudXJsIT09dW5kZWZpbmVkfTtyZXR1cm57c2VsZWN0ZWQ6MD09PXQsdGV4dDplLnRpdGxlLHZhbHVlOnt1cmw6bihlKT9PLmZyb20oZS51cmwpOk8ubm9uZSgpLGNvbnRlbnQ6bihlKT9PLm5vbmUoKTpPLmZyb20oZS5jb250ZW50KSxkZXNjcmlwdGlvbjplLmRlc2NyaXB0aW9ufX19KSk7dmFyIGU9bC50cmFuc2xhdGUoIk5vIHRlbXBsYXRlcyBkZWZpbmVkLiIpO3JldHVybiBsLm5vdGlmaWNhdGlvbk1hbmFnZXIub3Blbih7dGV4dDplLHR5cGU6ImluZm8ifSksTy5ub25lKCl9KSgpLmVhY2goZnVuY3Rpb24obyl7dmFyIHU9ZShvKSxpPWZ1bmN0aW9uKGUsdCl7cmV0dXJue3RpdGxlOiJJbnNlcnQgVGVtcGxhdGUiLHNpemU6ImxhcmdlIixib2R5Ont0eXBlOiJwYW5lbCIsaXRlbXM6ZX0saW5pdGlhbERhdGE6dCxidXR0b25zOlt7dHlwZToiY2FuY2VsIixuYW1lOiJjYW5jZWwiLHRleHQ6IkNhbmNlbCJ9LHt0eXBlOiJzdWJtaXQiLG5hbWU6InNhdmUiLHRleHQ6IlNhdmUiLHByaW1hcnk6ITB9XSxvblN1Ym1pdDpmdW5jdGlvbih0KXt2YXIgZT10LmdldERhdGEoKTtzKG4sZS50ZW1wbGF0ZSkuZWFjaChmdW5jdGlvbihlKXttKGUpLnRoZW4oZnVuY3Rpb24oZSl7eShsLDAsZSksdC5jbG9zZSgpfSlbImNhdGNoIl0oZnVuY3Rpb24oKXt0LmRpc2FibGUoInNhdmUiKSxmKHQpfSl9KX0sb25DaGFuZ2U6KHI9bj1vLGE9YyxmdW5jdGlvbihuLGUpe2lmKCJ0ZW1wbGF0ZSI9PT1lLm5hbWUpe3ZhciB0PW4uZ2V0RGF0YSgpLnRlbXBsYXRlO3Mocix0KS5lYWNoKGZ1bmN0aW9uKHQpe24uYmxvY2soIkxvYWRpbmcuLi4iKSxtKHQpLnRoZW4oZnVuY3Rpb24oZSl7YShuLHQsZSl9KVsiY2F0Y2giXShmdW5jdGlvbigpe2Eobix0LCIiKSxuLmRpc2FibGUoInNhdmUiKSxmKG4pfSl9KX19KX07dmFyIHIsYSxufSxjPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1mdW5jdGlvbih0LGUpe2lmKC0xPT09ZS5pbmRleE9mKCI8aHRtbD4iKSl7dmFyIG49IiI7cC5lYWNoKHQuY29udGVudENTUyxmdW5jdGlvbihlKXtuKz0nPGxpbmsgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iJyt0LmRvY3VtZW50QmFzZVVSSS50b0Fic29sdXRlKGUpKyciPid9KTt2YXIgcj10LnNldHRpbmdzLmJvZHlfY2xhc3N8fCIiOy0xIT09ci5pbmRleE9mKCI9IikmJihyPShyPXQuZ2V0UGFyYW0oImJvZHlfY2xhc3MiLCIiLCJoYXNoIikpW3QuaWRdfHwiIik7dmFyIGE9dC5kb20uZW5jb2RlLG89dC5nZXRCb2R5KCkuZGlyLHU9bz8nIGRpcj0iJythKG8pKyciJzoiIjtlPSI8IURPQ1RZUEUgaHRtbD48aHRtbD48aGVhZD4iK24rJzwvaGVhZD48Ym9keSBjbGFzcz0iJythKHIpKyciJyt1KyI+IitlKyI8L2JvZHk+PC9odG1sPiJ9cmV0dXJuIGcoZSx0LmdldFBhcmFtKCJ0ZW1wbGF0ZV9wcmV2aWV3X3JlcGxhY2VfdmFsdWVzIikpfShsLG4pLGE9W3t0eXBlOiJzZWxlY3Rib3giLG5hbWU6InRlbXBsYXRlIixsYWJlbDoiVGVtcGxhdGVzIixpdGVtczp1fSx7dHlwZToiaHRtbHBhbmVsIixodG1sOic8cCBhcmlhLWxpdmU9InBvbGl0ZSI+JytDKHQudmFsdWUuZGVzY3JpcHRpb24pKyI8L3A+In0se2xhYmVsOiJQcmV2aWV3Iix0eXBlOiJpZnJhbWUiLG5hbWU6InByZXZpZXciLHNhbmRib3hlZDohMX1dLG89e3RlbXBsYXRlOnQudGV4dCxwcmV2aWV3OnJ9O2UudW5ibG9jaygpLGUucmVkaWFsKGkoYSxvKSksZS5mb2N1cygidGVtcGxhdGUiKX0sdD1sLndpbmRvd01hbmFnZXIub3BlbihpKFtdLHt0ZW1wbGF0ZToiIixwcmV2aWV3OiIifSkpO3QuYmxvY2soIkxvYWRpbmcuLi4iKSxtKG9bMF0pLnRoZW4oZnVuY3Rpb24oZSl7Yyh0LG9bMF0sZSl9KVsiY2F0Y2giXShmdW5jdGlvbigpe2ModCxvWzBdLCIiKSx0LmRpc2FibGUoInNhdmUiKSxmKHQpfSl9KX0sTj1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7QSh0LGUpfX07IWZ1bmN0aW9uIEgoKXtlLmFkZCgidGVtcGxhdGUiLGZ1bmN0aW9uKGUpe3ZhciB0LHI7KHQ9ZSkudWkucmVnaXN0cnkuYWRkQnV0dG9uKCJ0ZW1wbGF0ZSIse2ljb246InRlbXBsYXRlIix0b29sdGlwOiJJbnNlcnQgdGVtcGxhdGUiLG9uQWN0aW9uOmQodC5zZXR0aW5ncyxOKHQpKX0pLHQudWkucmVnaXN0cnkuYWRkTWVudUl0ZW0oInRlbXBsYXRlIix7aWNvbjoidGVtcGxhdGUiLHRleHQ6Ikluc2VydCB0ZW1wbGF0ZS4uLiIsb25BY3Rpb246ZCh0LnNldHRpbmdzLE4odCkpfSksYihlKSwocj1lKS5vbigiUHJlUHJvY2VzcyIsZnVuY3Rpb24oZSl7dmFyIHQ9ci5kb20sbj1zKHIpO3AuZWFjaCh0LnNlbGVjdCgiZGl2IixlLm5vZGUpLGZ1bmN0aW9uKGUpe3QuaGFzQ2xhc3MoZSwibWNlVG1wbCIpJiYocC5lYWNoKHQuc2VsZWN0KCIqIixlKSxmdW5jdGlvbihlKXt0Lmhhc0NsYXNzKGUsci5nZXRQYXJhbSgidGVtcGxhdGVfbWRhdGVfY2xhc3NlcyIsIm1kYXRlIikucmVwbGFjZSgvXHMrL2csInwiKSkmJihlLmlubmVySFRNTD1tKHIsbikpfSksdihyLGUpKX0pfSl9KX0oKX0oKTs=]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/textcolor/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/textcolor/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24obyl7InVzZSBzdHJpY3QiO3ZhciBpPXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLlBsdWdpbk1hbmFnZXIiKTshZnVuY3Rpb24gbigpe2kuYWRkKCJ0ZXh0Y29sb3IiLGZ1bmN0aW9uKCl7by5jb25zb2xlLndhcm4oIlRleHQgY29sb3IgcGx1Z2luIGlzIG5vdyBidWlsdCBpbiB0byB0aGUgY29yZSBlZGl0b3IsIHBsZWFzZSByZW1vdmUgaXQgZnJvbSB5b3VyIGVkaXRvciBjb25maWd1cmF0aW9uIil9KX0oKX0od2luZG93KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/textpattern/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/textpattern/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24oZil7InVzZSBzdHJpY3QiO3ZhciB0PXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLlBsdWdpbk1hbmFnZXIiKSx1PWZ1bmN0aW9uKCl7cmV0dXJuKHU9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24odCl7Zm9yKHZhciBuLHI9MSxlPWFyZ3VtZW50cy5sZW5ndGg7cjxlO3IrKylmb3IodmFyIG8gaW4gbj1hcmd1bWVudHNbcl0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4sbykmJih0W29dPW5bb10pO3JldHVybiB0fSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfTt2YXIgbixyLGUsbz1mdW5jdGlvbigpe30sYT1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19LGk9ZnVuY3Rpb24odCl7cmV0dXJuIHR9LGM9YSghMSkscz1hKCEwKSxsPWZ1bmN0aW9uKCl7cmV0dXJuIGR9LGQ9KG49ZnVuY3Rpb24odCl7cmV0dXJuIHQuaXNOb25lKCl9LHtmb2xkOmZ1bmN0aW9uKHQsbil7cmV0dXJuIHQoKX0saXM6Yyxpc1NvbWU6Yyxpc05vbmU6cyxnZXRPcjplPWZ1bmN0aW9uKHQpe3JldHVybiB0fSxnZXRPclRodW5rOnI9ZnVuY3Rpb24odCl7cmV0dXJuIHQoKX0sZ2V0T3JEaWU6ZnVuY3Rpb24odCl7dGhyb3cgbmV3IEVycm9yKHR8fCJlcnJvcjogZ2V0T3JEaWUgY2FsbGVkIG9uIG5vbmUuIil9LGdldE9yTnVsbDphKG51bGwpLGdldE9yVW5kZWZpbmVkOmEodW5kZWZpbmVkKSxvcjplLG9yVGh1bms6cixtYXA6bCxlYWNoOm8sYmluZDpsLGV4aXN0czpjLGZvcmFsbDpzLGZpbHRlcjpsLGVxdWFsczpuLGVxdWFsc186bix0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuW119LHRvU3RyaW5nOmEoIm5vbmUoKSIpfSksbT1mdW5jdGlvbihyKXt2YXIgdD1hKHIpLG49ZnVuY3Rpb24oKXtyZXR1cm4gb30sZT1mdW5jdGlvbih0KXtyZXR1cm4gdChyKX0sbz17Zm9sZDpmdW5jdGlvbih0LG4pe3JldHVybiBuKHIpfSxpczpmdW5jdGlvbih0KXtyZXR1cm4gcj09PXR9LGlzU29tZTpzLGlzTm9uZTpjLGdldE9yOnQsZ2V0T3JUaHVuazp0LGdldE9yRGllOnQsZ2V0T3JOdWxsOnQsZ2V0T3JVbmRlZmluZWQ6dCxvcjpuLG9yVGh1bms6bixtYXA6ZnVuY3Rpb24odCl7cmV0dXJuIG0odChyKSl9LGVhY2g6ZnVuY3Rpb24odCl7dChyKX0sYmluZDplLGV4aXN0czplLGZvcmFsbDplLGZpbHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdChyKT9vOmR9LHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm5bcl19LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuInNvbWUoIityKyIpIn0sZXF1YWxzOmZ1bmN0aW9uKHQpe3JldHVybiB0LmlzKHIpfSxlcXVhbHNfOmZ1bmN0aW9uKHQsbil7cmV0dXJuIHQuZm9sZChjLGZ1bmN0aW9uKHQpe3JldHVybiBuKHIsdCl9KX19O3JldHVybiBvfSx5PXtzb21lOm0sbm9uZTpsLGZyb206ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PT10fHx0PT09dW5kZWZpbmVkP2Q6bSh0KX19LGc9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiByPXR5cGVvZihuPXQpLChudWxsPT09bj8ibnVsbCI6Im9iamVjdCI9PXImJihBcnJheS5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihuKXx8bi5jb25zdHJ1Y3RvciYmIkFycmF5Ij09PW4uY29uc3RydWN0b3IubmFtZSk/ImFycmF5Ijoib2JqZWN0Ij09ciYmKFN0cmluZy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihuKXx8bi5jb25zdHJ1Y3RvciYmIlN0cmluZyI9PT1uLmNvbnN0cnVjdG9yLm5hbWUpPyJzdHJpbmciOnIpPT09ZTt2YXIgbixyfX0scD1nKCJzdHJpbmciKSxoPWcoIm9iamVjdCIpLHY9ZygiYXJyYXkiKSxiPUFycmF5LnByb3RvdHlwZS5zbGljZSxrPUFycmF5LnByb3RvdHlwZS5pbmRleE9mLE89ZnVuY3Rpb24odCxuKXtyZXR1cm4gcj10LGU9biwtMTxrLmNhbGwocixlKTt2YXIgcixlfSx3PWZ1bmN0aW9uKHQsbil7Zm9yKHZhciByPXQubGVuZ3RoLGU9bmV3IEFycmF5KHIpLG89MDtvPHI7bysrKXt2YXIgYT10W29dO2Vbb109bihhLG8pfXJldHVybiBlfSxDPWZ1bmN0aW9uKHQsbil7Zm9yKHZhciByPTAsZT10Lmxlbmd0aDtyPGU7cisrKXtuKHRbcl0scil9fSxFPWZ1bmN0aW9uKHQsbil7Zm9yKHZhciByPVtdLGU9MCxvPXQubGVuZ3RoO2U8bztlKyspe3ZhciBhPXRbZV07bihhLGUpJiZyLnB1c2goYSl9cmV0dXJuIHJ9LHg9ZnVuY3Rpb24odCxuLHIpe3JldHVybiBmdW5jdGlvbih0LG4pe2Zvcih2YXIgcj10Lmxlbmd0aC0xOzA8PXI7ci0tKXtuKHRbcl0scil9fSh0LGZ1bmN0aW9uKHQpe3I9bihyLHQpfSkscn0sUj1mdW5jdGlvbih0LG4pe3JldHVybiBmdW5jdGlvbih0LG4scil7Zm9yKHZhciBlPTAsbz10Lmxlbmd0aDtlPG87ZSsrKXt2YXIgYT10W2VdO2lmKG4oYSxlKSlyZXR1cm4geS5zb21lKGEpO2lmKHIoYSxlKSlicmVha31yZXR1cm4geS5ub25lKCl9KHQsbixjKX0sVD1mdW5jdGlvbih0LG4pe2Zvcih2YXIgcj0wLGU9dC5sZW5ndGg7cjxlOysrcil7aWYoITAhPT1uKHRbcl0scikpcmV0dXJuITF9cmV0dXJuITB9LE49T2JqZWN0LmtleXMsUD1PYmplY3QuaGFzT3duUHJvcGVydHksUz1mdW5jdGlvbih0LG4pe3JldHVybiBQLmNhbGwodCxuKX0sTT0oZnVuY3Rpb24oaSl7aWYoIXYoaSkpdGhyb3cgbmV3IEVycm9yKCJjYXNlcyBtdXN0IGJlIGFuIGFycmF5Iik7aWYoMD09PWkubGVuZ3RoKXRocm93IG5ldyBFcnJvcigidGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBvbmUgY2FzZSIpO3ZhciB1PVtdLHI9e307QyhpLGZ1bmN0aW9uKHQsZSl7dmFyIG49Tih0KTtpZigxIT09bi5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJvbmUgYW5kIG9ubHkgb25lIG5hbWUgcGVyIGNhc2UiKTt2YXIgbz1uWzBdLGE9dFtvXTtpZihyW29dIT09dW5kZWZpbmVkKXRocm93IG5ldyBFcnJvcigiZHVwbGljYXRlIGtleSBkZXRlY3RlZDoiK28pO2lmKCJjYXRhIj09PW8pdGhyb3cgbmV3IEVycm9yKCJjYW5ub3QgaGF2ZSBhIGNhc2UgbmFtZWQgY2F0YSAoc29ycnkpIik7aWYoIXYoYSkpdGhyb3cgbmV3IEVycm9yKCJjYXNlIGFyZ3VtZW50cyBtdXN0IGJlIGFuIGFycmF5Iik7dS5wdXNoKG8pLHJbb109ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoO2lmKHQhPT1hLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMgdG8gY2FzZSAiK28rIi4gRXhwZWN0ZWQgIithLmxlbmd0aCsiICgiK2ErIiksIGdvdCAiK3QpO2Zvcih2YXIgcj1uZXcgQXJyYXkodCksbj0wO248ci5sZW5ndGg7bisrKXJbbl09YXJndW1lbnRzW25dO3JldHVybntmb2xkOmZ1bmN0aW9uKCl7aWYoYXJndW1lbnRzLmxlbmd0aCE9PWkubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyB0byBmb2xkLiBFeHBlY3RlZCAiK2kubGVuZ3RoKyIsIGdvdCAiK2FyZ3VtZW50cy5sZW5ndGgpO3JldHVybiBhcmd1bWVudHNbZV0uYXBwbHkobnVsbCxyKX0sbWF0Y2g6ZnVuY3Rpb24odCl7dmFyIG49Tih0KTtpZih1Lmxlbmd0aCE9PW4ubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyB0byBtYXRjaC4gRXhwZWN0ZWQ6ICIrdS5qb2luKCIsIikrIlxuQWN0dWFsOiAiK24uam9pbigiLCIpKTtpZighVCh1LGZ1bmN0aW9uKHQpe3JldHVybiBPKG4sdCl9KSl0aHJvdyBuZXcgRXJyb3IoIk5vdCBhbGwgYnJhbmNoZXMgd2VyZSBzcGVjaWZpZWQgd2hlbiB1c2luZyBtYXRjaC4gU3BlY2lmaWVkOiAiK24uam9pbigiLCAiKSsiXG5SZXF1aXJlZDogIit1LmpvaW4oIiwgIikpO3JldHVybiB0W29dLmFwcGx5KG51bGwscil9LGxvZzpmdW5jdGlvbih0KXtmLmNvbnNvbGUubG9nKHQse2NvbnN0cnVjdG9yczp1LGNvbnN0cnVjdG9yOm8scGFyYW1zOnJ9KX19fX0pfShbe2JvdGhFcnJvcnM6WyJlcnJvcjEiLCJlcnJvcjIiXX0se2ZpcnN0RXJyb3I6WyJlcnJvcjEiLCJ2YWx1ZTIiXX0se3NlY29uZEVycm9yOlsidmFsdWUxIiwiZXJyb3IyIl19LHtib3RoVmFsdWVzOlsidmFsdWUxIiwidmFsdWUyIl19XSksZnVuY3Rpb24odCl7dmFyIG49W10scj1bXTtyZXR1cm4gQyh0LGZ1bmN0aW9uKHQpe3QuZm9sZChmdW5jdGlvbih0KXtuLnB1c2godCl9LGZ1bmN0aW9uKHQpe3IucHVzaCh0KX0pfSkse2Vycm9yczpuLHZhbHVlczpyfX0pLEE9ZnVuY3Rpb24ocil7cmV0dXJue2lzOmZ1bmN0aW9uKHQpe3JldHVybiByPT09dH0saXNWYWx1ZTpzLGlzRXJyb3I6YyxnZXRPcjphKHIpLGdldE9yVGh1bms6YShyKSxnZXRPckRpZTphKHIpLG9yOmZ1bmN0aW9uKHQpe3JldHVybiBBKHIpfSxvclRodW5rOmZ1bmN0aW9uKHQpe3JldHVybiBBKHIpfSxmb2xkOmZ1bmN0aW9uKHQsbil7cmV0dXJuIG4ocil9LG1hcDpmdW5jdGlvbih0KXtyZXR1cm4gQSh0KHIpKX0sbWFwRXJyb3I6ZnVuY3Rpb24odCl7cmV0dXJuIEEocil9LGVhY2g6ZnVuY3Rpb24odCl7dChyKX0sYmluZDpmdW5jdGlvbih0KXtyZXR1cm4gdChyKX0sZXhpc3RzOmZ1bmN0aW9uKHQpe3JldHVybiB0KHIpfSxmb3JhbGw6ZnVuY3Rpb24odCl7cmV0dXJuIHQocil9LHRvT3B0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIHkuc29tZShyKX19fSxCPWZ1bmN0aW9uKHIpe3JldHVybntpczpjLGlzVmFsdWU6Yyxpc0Vycm9yOnMsZ2V0T3I6aSxnZXRPclRodW5rOmZ1bmN0aW9uKHQpe3JldHVybiB0KCl9LGdldE9yRGllOmZ1bmN0aW9uKCl7cmV0dXJuIHQ9U3RyaW5nKHIpLGZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKHQpfSgpO3ZhciB0fSxvcjpmdW5jdGlvbih0KXtyZXR1cm4gdH0sb3JUaHVuazpmdW5jdGlvbih0KXtyZXR1cm4gdCgpfSxmb2xkOmZ1bmN0aW9uKHQsbil7cmV0dXJuIHQocil9LG1hcDpmdW5jdGlvbih0KXtyZXR1cm4gQihyKX0sbWFwRXJyb3I6ZnVuY3Rpb24odCl7cmV0dXJuIEIodChyKSl9LGVhY2g6byxiaW5kOmZ1bmN0aW9uKHQpe3JldHVybiBCKHIpfSxleGlzdHM6Yyxmb3JhbGw6cyx0b09wdGlvbjp5Lm5vbmV9fSxEPXt2YWx1ZTpBLGVycm9yOkIsZnJvbU9wdGlvbjpmdW5jdGlvbih0LG4pe3JldHVybiB0LmZvbGQoZnVuY3Rpb24oKXtyZXR1cm4gQihuKX0sQSl9fSxJPWZ1bmN0aW9uKHQpe3JldHVybiJpbmxpbmUtY29tbWFuZCI9PT10LnR5cGV8fCJpbmxpbmUtZm9ybWF0Ij09PXQudHlwZX0saj1mdW5jdGlvbih0KXtyZXR1cm4iYmxvY2stY29tbWFuZCI9PT10LnR5cGV8fCJibG9jay1mb3JtYXQiPT09dC50eXBlfSxfPWZ1bmN0aW9uKHQpe3JldHVybiBuPXQscj1mdW5jdGlvbih0LG4pe3JldHVybiB0LnN0YXJ0Lmxlbmd0aD09PW4uc3RhcnQubGVuZ3RoPzA6dC5zdGFydC5sZW5ndGg+bi5zdGFydC5sZW5ndGg/LTE6MX0sKGU9Yi5jYWxsKG4sMCkpLnNvcnQociksZTt2YXIgbixyLGV9LFU9ZnVuY3Rpb24obyl7dmFyIGE9ZnVuY3Rpb24odCl7cmV0dXJuIEQuZXJyb3Ioe21lc3NhZ2U6dCxwYXR0ZXJuOm99KX0sdD1mdW5jdGlvbih0LG4scil7aWYoby5mb3JtYXQ9PT11bmRlZmluZWQpcmV0dXJuIG8uY21kIT09dW5kZWZpbmVkP3Aoby5jbWQpP0QudmFsdWUocihvLmNtZCxvLnZhbHVlKSk6YSh0KyIgcGF0dGVybiBoYXMgbm9uLXN0cmluZyBgY21kYCBwYXJhbWV0ZXIiKTphKHQrIiBwYXR0ZXJuIGlzIG1pc3NpbmcgYm90aCBgZm9ybWF0YCBhbmQgYGNtZGAgcGFyYW1ldGVycyIpO3ZhciBlPXZvaWQgMDtpZih2KG8uZm9ybWF0KSl7aWYoIVQoby5mb3JtYXQscCkpcmV0dXJuIGEodCsiIHBhdHRlcm4gaGFzIG5vbi1zdHJpbmcgaXRlbXMgaW4gdGhlIGBmb3JtYXRgIGFycmF5Iik7ZT1vLmZvcm1hdH1lbHNle2lmKCFwKG8uZm9ybWF0KSlyZXR1cm4gYSh0KyIgcGF0dGVybiBoYXMgbm9uLXN0cmluZyBgZm9ybWF0YCBwYXJhbWV0ZXIiKTtlPVtvLmZvcm1hdF19cmV0dXJuIEQudmFsdWUobihlKSl9O2lmKCFoKG8pKXJldHVybiBhKCJSYXcgcGF0dGVybiBpcyBub3QgYW4gb2JqZWN0Iik7aWYoIXAoby5zdGFydCkpcmV0dXJuIGEoIlJhdyBwYXR0ZXJuIGlzIG1pc3NpbmcgYHN0YXJ0YCBwYXJhbWV0ZXIiKTtpZihvLmVuZD09PXVuZGVmaW5lZClyZXR1cm4gby5yZXBsYWNlbWVudCE9PXVuZGVmaW5lZD9wKG8ucmVwbGFjZW1lbnQpPzA9PT1vLnN0YXJ0Lmxlbmd0aD9hKCJSZXBsYWNlbWVudCBwYXR0ZXJuIGhhcyBlbXB0eSBgc3RhcnRgIHBhcmFtZXRlciIpOkQudmFsdWUoe3R5cGU6ImlubGluZS1jb21tYW5kIixzdGFydDoiIixlbmQ6by5zdGFydCxjbWQ6Im1jZUluc2VydENvbnRlbnQiLHZhbHVlOm8ucmVwbGFjZW1lbnR9KTphKCJSZXBsYWNlbWVudCBwYXR0ZXJuIGhhcyBub24tc3RyaW5nIGByZXBsYWNlbWVudGAgcGFyYW1ldGVyIik6MD09PW8uc3RhcnQubGVuZ3RoP2EoIkJsb2NrIHBhdHRlcm4gaGFzIGVtcHR5IGBzdGFydGAgcGFyYW1ldGVyIik6dCgiQmxvY2siLGZ1bmN0aW9uKHQpe3JldHVybnt0eXBlOiJibG9jay1mb3JtYXQiLHN0YXJ0Om8uc3RhcnQsZm9ybWF0OnRbMF19fSxmdW5jdGlvbih0LG4pe3JldHVybnt0eXBlOiJibG9jay1jb21tYW5kIixzdGFydDpvLnN0YXJ0LGNtZDp0LHZhbHVlOm59fSk7aWYoIXAoby5lbmQpKXJldHVybiBhKCJJbmxpbmUgcGF0dGVybiBoYXMgbm9uLXN0cmluZyBgZW5kYCBwYXJhbWV0ZXIiKTtpZigwPT09by5zdGFydC5sZW5ndGgmJjA9PT1vLmVuZC5sZW5ndGgpcmV0dXJuIGEoIklubGluZSBwYXR0ZXJuIGhhcyBlbXB0eSBgc3RhcnRgIGFuZCBgZW5kYCBwYXJhbWV0ZXJzIik7dmFyIHI9by5zdGFydCxlPW8uZW5kO3JldHVybiAwPT09ZS5sZW5ndGgmJihlPXIscj0iIiksdCgiSW5saW5lIixmdW5jdGlvbih0KXtyZXR1cm57dHlwZToiaW5saW5lLWZvcm1hdCIsc3RhcnQ6cixlbmQ6ZSxmb3JtYXQ6dH19LGZ1bmN0aW9uKHQsbil7cmV0dXJue3R5cGU6ImlubGluZS1jb21tYW5kIixzdGFydDpyLGVuZDplLGNtZDp0LHZhbHVlOm59fSl9LHE9ZnVuY3Rpb24odCl7cmV0dXJuImJsb2NrLWNvbW1hbmQiPT09dC50eXBlP3tzdGFydDp0LnN0YXJ0LGNtZDp0LmNtZCx2YWx1ZTp0LnZhbHVlfToiYmxvY2stZm9ybWF0Ij09PXQudHlwZT97c3RhcnQ6dC5zdGFydCxmb3JtYXQ6dC5mb3JtYXR9OiJpbmxpbmUtY29tbWFuZCI9PT10LnR5cGU/Im1jZUluc2VydENvbnRlbnQiPT09dC5jbWQmJiIiPT09dC5zdGFydD97c3RhcnQ6dC5lbmQscmVwbGFjZW1lbnQ6dC52YWx1ZX06e3N0YXJ0OnQuc3RhcnQsZW5kOnQuZW5kLGNtZDp0LmNtZCx2YWx1ZTp0LnZhbHVlfToiaW5saW5lLWZvcm1hdCI9PT10LnR5cGU/e3N0YXJ0OnQuc3RhcnQsZW5kOnQuZW5kLGZvcm1hdDoxPT09dC5mb3JtYXQubGVuZ3RoP3QuZm9ybWF0WzBdOnQuZm9ybWF0fTp2b2lkIDB9LEw9ZnVuY3Rpb24odCl7cmV0dXJue2lubGluZVBhdHRlcm5zOkUodCxJKSxibG9ja1BhdHRlcm5zOl8oRSh0LGopKX19LFY9ZnVuY3Rpb24oZSl7cmV0dXJue3NldFBhdHRlcm5zOmZ1bmN0aW9uKHQpe3ZhciBuPU0odyh0LFUpKTtpZigwPG4uZXJyb3JzLmxlbmd0aCl7dmFyIHI9bi5lcnJvcnNbMF07dGhyb3cgbmV3IEVycm9yKHIubWVzc2FnZSsiOlxuIitKU09OLnN0cmluZ2lmeShyLnBhdHRlcm4sbnVsbCwyKSl9ZS5zZXQoTChuLnZhbHVlcykpfSxnZXRQYXR0ZXJuczpmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBmKCl7Zm9yKHZhciB0PTAsbj0wLHI9YXJndW1lbnRzLmxlbmd0aDtuPHI7bisrKXQrPWFyZ3VtZW50c1tuXS5sZW5ndGg7dmFyIGU9QXJyYXkodCksbz0wO2ZvcihuPTA7bjxyO24rKylmb3IodmFyIGE9YXJndW1lbnRzW25dLGk9MCx1PWEubGVuZ3RoO2k8dTtpKyssbysrKWVbb109YVtpXTtyZXR1cm4gZX0odyhlLmdldCgpLmlubGluZVBhdHRlcm5zLHEpLHcoZS5nZXQoKS5ibG9ja1BhdHRlcm5zLHEpKX19fSxXPSJ1bmRlZmluZWQiIT10eXBlb2YgZi53aW5kb3c/Zi53aW5kb3c6RnVuY3Rpb24oInJldHVybiB0aGlzOyIpKCksRj1mdW5jdGlvbigpe2Zvcih2YXIgdD1bXSxuPTA7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl0W25dPWFyZ3VtZW50c1tuXTt2YXIgcj1XLmNvbnNvbGU7ciYmKHIuZXJyb3I/ci5lcnJvci5hcHBseShyLHQpOnIubG9nLmFwcGx5KHIsdCkpfSxHPVt7c3RhcnQ6IioiLGVuZDoiKiIsZm9ybWF0OiJpdGFsaWMifSx7c3RhcnQ6IioqIixlbmQ6IioqIixmb3JtYXQ6ImJvbGQifSx7c3RhcnQ6IiMiLGZvcm1hdDoiaDEifSx7c3RhcnQ6IiMjIixmb3JtYXQ6ImgyIn0se3N0YXJ0OiIjIyMiLGZvcm1hdDoiaDMifSx7c3RhcnQ6IiMjIyMiLGZvcm1hdDoiaDQifSx7c3RhcnQ6IiMjIyMjIixmb3JtYXQ6Img1In0se3N0YXJ0OiIjIyMjIyMiLGZvcm1hdDoiaDYifSx7c3RhcnQ6IjEuICIsY21kOiJJbnNlcnRPcmRlcmVkTGlzdCJ9LHtzdGFydDoiKiAiLGNtZDoiSW5zZXJ0VW5vcmRlcmVkTGlzdCJ9LHtzdGFydDoiLSAiLGNtZDoiSW5zZXJ0VW5vcmRlcmVkTGlzdCJ9XSxIPWZ1bmN0aW9uKHQpe3ZhciBuLHIsZT0oUyhuPXQscj0idGV4dHBhdHRlcm5fcGF0dGVybnMiKT95LmZyb20obltyXSk6eS5ub25lKCkpLmdldE9yKEcpO2lmKCF2KGUpKXJldHVybiBGKCJUaGUgc2V0dGluZyB0ZXh0cGF0dGVybl9wYXR0ZXJucyBzaG91bGQgYmUgYW4gYXJyYXkiKSx7aW5saW5lUGF0dGVybnM6W10sYmxvY2tQYXR0ZXJuczpbXX07dmFyIG89TSh3KGUsVSkpO3JldHVybiBDKG8uZXJyb3JzLGZ1bmN0aW9uKHQpe3JldHVybiBGKHQubWVzc2FnZSx0LnBhdHRlcm4pfSksTChvLnZhbHVlcyl9LEo9ZnVuY3Rpb24odCl7dmFyIG49dC5nZXRQYXJhbSgiZm9yY2VkX3Jvb3RfYmxvY2siLCJwIik7cmV0dXJuITE9PT1uPyIiOiEwPT09bj8icCI6bn0sSz10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS51dGlsLkRlbGF5IiksWD10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS51dGlsLlZLIiksej10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS51dGlsLlRvb2xzIiksUT10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS5kb20uRE9NVXRpbHMiKSxZPXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLmRvbS5UZXh0U2Vla2VyIiksWj1mdW5jdGlvbih0LG4pe3JldHVybntjb250YWluZXI6dCxvZmZzZXQ6bn19LCQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQubm9kZVR5cGU9PT1mLk5vZGUuVEVYVF9OT0RFfSx0dD1mdW5jdGlvbih0LG4scil7aWYobiYmdC5pc0VtcHR5KG4pJiYhcihuKSl7dmFyIGU9bi5wYXJlbnROb2RlO3QucmVtb3ZlKG4pLHR0KHQsZSxyKX19LG50PWZ1bmN0aW9uKHQsbixyLGUpe3ZvaWQgMD09PWUmJihlPSEwKTt2YXIgbz1uLnN0YXJ0Q29udGFpbmVyLnBhcmVudE5vZGUsYT1uLmVuZENvbnRhaW5lci5wYXJlbnROb2RlO24uZGVsZXRlQ29udGVudHMoKSxlJiYhcihuLnN0YXJ0Q29udGFpbmVyKSYmKCQobi5zdGFydENvbnRhaW5lcikmJjA9PT1uLnN0YXJ0Q29udGFpbmVyLmRhdGEubGVuZ3RoJiZ0LnJlbW92ZShuLnN0YXJ0Q29udGFpbmVyKSwkKG4uZW5kQ29udGFpbmVyKSYmMD09PW4uZW5kQ29udGFpbmVyLmRhdGEubGVuZ3RoJiZ0LnJlbW92ZShuLmVuZENvbnRhaW5lciksdHQodCxvLHIpLG8hPT1hJiZ0dCh0LGEscikpfSxydD1mdW5jdGlvbih0LG4pe3ZhciByLGU9bi5nZXQodCk7cmV0dXJuIHYoZSkmJigwPT09KHI9ZSkubGVuZ3RoP3kubm9uZSgpOnkuc29tZShyWzBdKSkuZXhpc3RzKGZ1bmN0aW9uKHQpe3JldHVybiBTKHQsImJsb2NrIil9KX0sZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIDA9PT10LnN0YXJ0Lmxlbmd0aH0sb3Q9ZnVuY3Rpb24odCxuKXt2YXIgcj15LmZyb20odC5kb20uZ2V0UGFyZW50KG4uc3RhcnRDb250YWluZXIsdC5kb20uaXNCbG9jaykpO3JldHVybiIiPT09Sih0KT9yLm9yVGh1bmsoZnVuY3Rpb24oKXtyZXR1cm4geS5zb21lKHQuZ2V0Qm9keSgpKX0pOnJ9LGF0PVEuRE9NLGl0PWZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gbj09PXQ/LTE6MH19LHV0PWZ1bmN0aW9uKHQsbixyKXtpZigkKHQpJiYwPD1uKXJldHVybiB5LnNvbWUoWih0LG4pKTt2YXIgZT1ZKGF0KTtyZXR1cm4geS5mcm9tKGUuYmFja3dhcmRzKHQsbixpdCh0KSxyKSkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBaKHQuY29udGFpbmVyLHQuY29udGFpbmVyLmRhdGEubGVuZ3RoKX0pfSxmdD1mdW5jdGlvbih0LHIsZSl7aWYoISQodCkpcmV0dXJuIHkubm9uZSgpO3ZhciBuPXQudGV4dENvbnRlbnQ7aWYoMDw9ciYmcjw9bi5sZW5ndGgpcmV0dXJuIHkuc29tZShaKHQscikpO3ZhciBvPVkoYXQpO3JldHVybiB5LmZyb20oby5iYWNrd2FyZHModCxyLGl0KHQpLGUpKS5iaW5kKGZ1bmN0aW9uKHQpe3ZhciBuPXQuY29udGFpbmVyLmRhdGE7cmV0dXJuIGZ0KHQuY29udGFpbmVyLHIrbi5sZW5ndGgsZSl9KX0sY3Q9ZnVuY3Rpb24odCxuLHIpe2lmKCEkKHQpKXJldHVybiB5Lm5vbmUoKTt2YXIgZT10LnRleHRDb250ZW50O2lmKG48PWUubGVuZ3RoKXJldHVybiB5LnNvbWUoWih0LG4pKTt2YXIgbz1ZKGF0KTtyZXR1cm4geS5mcm9tKG8uZm9yd2FyZHModCxuLGl0KHQpLHIpKS5iaW5kKGZ1bmN0aW9uKHQpe3JldHVybiBjdCh0LmNvbnRhaW5lcixuLWUubGVuZ3RoLHIpfSl9LHN0PWZ1bmN0aW9uKHQsbixyLGUsbyl7dmFyIGEsaT1ZKHQsKGE9dCxmdW5jdGlvbih0KXtyZXR1cm4gYS5pc0Jsb2NrKHQpfHxPKFsiQlIiLCJJTUciLCJIUiIsIklOUFVUIl0sdC5ub2RlTmFtZSl8fCJmYWxzZSI9PT1hLmdldENvbnRlbnRFZGl0YWJsZSh0KX0pKTtyZXR1cm4geS5mcm9tKGkuYmFja3dhcmRzKG4scixlLG8pKX0sbHQ9ZnVuY3Rpb24odCxuLHIpe2lmKCQobikmJihyPDB8fHI+bi5kYXRhLmxlbmd0aCkpcmV0dXJuW107Zm9yKHZhciBlPVtyXSxvPW47byE9PXQmJm8ucGFyZW50Tm9kZTspe2Zvcih2YXIgYT1vLnBhcmVudE5vZGUsaT0wO2k8YS5jaGlsZE5vZGVzLmxlbmd0aDtpKyspaWYoYS5jaGlsZE5vZGVzW2ldPT09byl7ZS5wdXNoKGkpO2JyZWFrfW89YX1yZXR1cm4gbz09PXQ/ZS5yZXZlcnNlKCk6W119LGR0PWZ1bmN0aW9uKHQsbixyLGUsbyl7cmV0dXJue3N0YXJ0Omx0KHQsbixyKSxlbmQ6bHQodCxlLG8pfX0sbXQ9ZnVuY3Rpb24odCxuKXt2YXIgcixlLG8sYT1uLnNsaWNlKCksaT1hLnBvcCgpO3JldHVybiByPWEsZT1mdW5jdGlvbih0LG4pe3JldHVybiB0LmJpbmQoZnVuY3Rpb24odCl7cmV0dXJuIHkuZnJvbSh0LmNoaWxkTm9kZXNbbl0pfSl9LG89eS5zb21lKHQpLEMocixmdW5jdGlvbih0KXtvPWUobyx0KX0pLG8uYmluZChmdW5jdGlvbih0KXtyZXR1cm4gJCh0KSYmMDw9aSYmdC5kYXRhLmxlbmd0aCx5LnNvbWUoe25vZGU6dCxvZmZzZXQ6aX0pfSl9LGd0PWZ1bmN0aW9uKG4scil7cmV0dXJuIG10KG4sci5zdGFydCkuYmluZChmdW5jdGlvbih0KXt2YXIgbz10Lm5vZGUsYT10Lm9mZnNldDtyZXR1cm4gbXQobixyLmVuZCkubWFwKGZ1bmN0aW9uKHQpe3ZhciBuPXQubm9kZSxyPXQub2Zmc2V0LGU9Zi5kb2N1bWVudC5jcmVhdGVSYW5nZSgpO3JldHVybiBlLnNldFN0YXJ0KG8sYSksZS5zZXRFbmQobixyKSxlfSl9KX0scHQ9ZnVuY3Rpb24oZSxvLG4peyhmdW5jdGlvbih0LG4scil7aWYoJCh0KSYmbj49dC5sZW5ndGgpcmV0dXJuIHkuc29tZShaKHQsbikpO3ZhciBlPVkoYXQpO3JldHVybiB5LmZyb20oZS5mb3J3YXJkcyh0LG4saXQodCkscikpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gWih0LmNvbnRhaW5lciwwKX0pfSkobywwLG8pLmVhY2goZnVuY3Rpb24odCl7dmFyIHI9dC5jb250YWluZXI7Y3QocixuLnN0YXJ0Lmxlbmd0aCxvKS5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBuPWUuY3JlYXRlUm5nKCk7bi5zZXRTdGFydChyLDApLG4uc2V0RW5kKHQuY29udGFpbmVyLHQub2Zmc2V0KSxudChlLG4sZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1vfSl9KX0pfSxodD1mdW5jdGlvbihlLGEpe3ZhciBpPWUuZG9tLHQ9ZS5zZWxlY3Rpb24uZ2V0Um5nKCk7cmV0dXJuIG90KGUsdCkuZmlsdGVyKGZ1bmN0aW9uKHQpe3ZhciBuPUooZSkscj0iIj09PW4mJmkuaXModCwiYm9keSIpfHxpLmlzKHQsbik7cmV0dXJuIG51bGwhPT10JiZyfSkuYmluZChmdW5jdGlvbihuKXt2YXIgdCxyLGUsbz1uLnRleHRDb250ZW50O3JldHVybih0PWEsZT0ocj1vKS5yZXBsYWNlKCJceGEwIiwiICIpLFIodCxmdW5jdGlvbih0KXtyZXR1cm4gMD09PXIuaW5kZXhPZih0LnN0YXJ0KXx8MD09PWUuaW5kZXhPZih0LnN0YXJ0KX0pKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHoudHJpbShvKS5sZW5ndGg9PT10LnN0YXJ0Lmxlbmd0aD9bXTpbe3BhdHRlcm46dCxyYW5nZTpkdChpLmdldFJvb3QoKSxuLDAsbiwwKX1dfSl9KS5nZXRPcihbXSl9LHZ0PWZ1bmN0aW9uKGksdCl7aWYoMCE9PXQubGVuZ3RoKXt2YXIgbj1pLnNlbGVjdGlvbi5nZXRCb29rbWFyaygpO0ModCxmdW5jdGlvbih0KXtyZXR1cm4gcj10LGU9KG49aSkuZG9tLG89ci5wYXR0ZXJuLGE9Z3QoZS5nZXRSb290KCksci5yYW5nZSkuZ2V0T3JEaWUoIlVuYWJsZSB0byByZXNvbHZlIHBhdGggcmFuZ2UiKSxvdChuLGEpLmVhY2goZnVuY3Rpb24odCl7ImJsb2NrLWZvcm1hdCI9PT1vLnR5cGU/cnQoby5mb3JtYXQsbi5mb3JtYXR0ZXIpJiZuLnVuZG9NYW5hZ2VyLnRyYW5zYWN0KGZ1bmN0aW9uKCl7cHQobi5kb20sdCxvKSxuLmZvcm1hdHRlci5hcHBseShvLmZvcm1hdCl9KToiYmxvY2stY29tbWFuZCI9PT1vLnR5cGUmJm4udW5kb01hbmFnZXIudHJhbnNhY3QoZnVuY3Rpb24oKXtwdChuLmRvbSx0LG8pLG4uZXhlY0NvbW1hbmQoby5jbWQsITEsby52YWx1ZSl9KX0pLDE7dmFyIG4scixlLG8sYX0pLGkuc2VsZWN0aW9uLm1vdmVUb0Jvb2ttYXJrKG4pfX0seXQ9MCxidD1mdW5jdGlvbih0LG4pe3JldHVybiB0LmNyZWF0ZSgic3BhbiIseyJkYXRhLW1jZS10eXBlIjoiYm9va21hcmsiLGlkOm59KX0sa3Q9ZnVuY3Rpb24odCxuKXt2YXIgcj10LmNyZWF0ZVJuZygpO3JldHVybiByLnNldFN0YXJ0QWZ0ZXIobi5zdGFydCksci5zZXRFbmRCZWZvcmUobi5lbmQpLHJ9LE90PWZ1bmN0aW9uKHQsbixyKXt2YXIgZT1ndCh0LmdldFJvb3QoKSxyKS5nZXRPckRpZSgiVW5hYmxlIHRvIHJlc29sdmUgcGF0aCByYW5nZSIpLG89ZS5zdGFydENvbnRhaW5lcixhPWUuZW5kQ29udGFpbmVyLGk9MD09PWUuZW5kT2Zmc2V0P2E6YS5zcGxpdFRleHQoZS5lbmRPZmZzZXQpLHU9MD09PWUuc3RhcnRPZmZzZXQ/bzpvLnNwbGl0VGV4dChlLnN0YXJ0T2Zmc2V0KTtyZXR1cm57cHJlZml4Om4sZW5kOmkucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYnQodCxuKyItZW5kIiksaSksc3RhcnQ6dS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShidCh0LG4rIi1zdGFydCIpLHUpfX0sd3Q9ZnVuY3Rpb24odCxuLHIpe3R0KHQsdC5nZXQobi5wcmVmaXgrIi1lbmQiKSxyKSx0dCh0LHQuZ2V0KG4ucHJlZml4KyItc3RhcnQiKSxyKX0sQ3Q9ZnVuY3Rpb24oZSxvLGEsdCl7dmFyIGksdT1vLnN0YXJ0O3JldHVybiBzdChlLHQuY29udGFpbmVyLHQub2Zmc2V0LChpPXUsZnVuY3Rpb24odCxuKXt2YXIgcj10LmRhdGEuc3Vic3RyaW5nKDAsbiksZT1yLmxhc3RJbmRleE9mKGkuY2hhckF0KGkubGVuZ3RoLTEpKSxvPXIubGFzdEluZGV4T2YoaSk7cmV0dXJuLTEhPT1vP28raS5sZW5ndGg6LTEhPT1lP2UrMTotMX0pLGEpLmJpbmQoZnVuY3Rpb24ocil7aWYoci5vZmZzZXQ+PXUubGVuZ3RoKXt2YXIgdD1lLmNyZWF0ZVJuZygpO3JldHVybiB0LnNldFN0YXJ0KHIuY29udGFpbmVyLHIub2Zmc2V0LXUubGVuZ3RoKSx0LnNldEVuZChyLmNvbnRhaW5lcixyLm9mZnNldCkseS5zb21lKHQpfXZhciBuPXIub2Zmc2V0LXUubGVuZ3RoO3JldHVybiBmdChyLmNvbnRhaW5lcixuLGEpLm1hcChmdW5jdGlvbih0KXt2YXIgbj1lLmNyZWF0ZVJuZygpO3JldHVybiBuLnNldFN0YXJ0KHQuY29udGFpbmVyLHQub2Zmc2V0KSxuLnNldEVuZChyLmNvbnRhaW5lcixyLm9mZnNldCksbn0pLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gdC50b1N0cmluZygpPT09dX0pLm9yVGh1bmsoZnVuY3Rpb24oKXtyZXR1cm4gQ3QoZSxvLGEsWihyLmNvbnRhaW5lciwwKSl9KX0pfSxFdD1mdW5jdGlvbihhLGksdSl7dmFyIGY9YS5kb20sYz1mLmdldFJvb3QoKSxzPXUucGF0dGVybixsPXUucG9zaXRpb24uY29udGFpbmVyLGQ9dS5wb3NpdGlvbi5vZmZzZXQ7cmV0dXJuIGZ0KGwsZC11LnBhdHRlcm4uZW5kLmxlbmd0aCxpKS5iaW5kKGZ1bmN0aW9uKHQpe3ZhciBlPWR0KGMsdC5jb250YWluZXIsdC5vZmZzZXQsbCxkKTtpZihldChzKSlyZXR1cm4geS5zb21lKHttYXRjaGVzOlt7cGF0dGVybjpzLHN0YXJ0Um5nOmUsZW5kUm5nOmV9XSxwb3NpdGlvbjp0fSk7dmFyIG49eHQoYSx1LnJlbWFpbmluZ1BhdHRlcm5zLHQuY29udGFpbmVyLHQub2Zmc2V0LGkpLG89bi5nZXRPcih7bWF0Y2hlczpbXSxwb3NpdGlvbjp0fSkscj1vLnBvc2l0aW9uO3JldHVybiBmdW5jdGlvbih0LHIsbixlLG8sYSl7aWYodm9pZCAwPT09YSYmKGE9ITEpLDAhPT1yLnN0YXJ0Lmxlbmd0aHx8YSlyZXR1cm4gdXQobixlLG8pLmJpbmQoZnVuY3Rpb24obil7cmV0dXJuIEN0KHQscixvLG4pLmJpbmQoZnVuY3Rpb24odCl7aWYoYSl7aWYodC5lbmRDb250YWluZXI9PT1uLmNvbnRhaW5lciYmdC5lbmRPZmZzZXQ9PT1uLm9mZnNldClyZXR1cm4geS5ub25lKCk7aWYoMD09PW4ub2Zmc2V0JiZ0LmVuZENvbnRhaW5lci50ZXh0Q29udGVudC5sZW5ndGg9PT10LmVuZE9mZnNldClyZXR1cm4geS5ub25lKCl9cmV0dXJuIHkuc29tZSh0KX0pfSk7dmFyIGk9dC5jcmVhdGVSbmcoKTtyZXR1cm4gaS5zZXRTdGFydChuLGUpLGkuc2V0RW5kKG4sZSkseS5zb21lKGkpfShmLHMsci5jb250YWluZXIsci5vZmZzZXQsaSxuLmlzTm9uZSgpKS5tYXAoZnVuY3Rpb24odCl7dmFyIG4scj1kdChjLChuPXQpLnN0YXJ0Q29udGFpbmVyLG4uc3RhcnRPZmZzZXQsbi5lbmRDb250YWluZXIsbi5lbmRPZmZzZXQpO3JldHVybnttYXRjaGVzOm8ubWF0Y2hlcy5jb25jYXQoW3twYXR0ZXJuOnMsc3RhcnRSbmc6cixlbmRSbmc6ZX1dKSxwb3NpdGlvbjpaKHQuc3RhcnRDb250YWluZXIsdC5zdGFydE9mZnNldCl9fSl9KX0seHQ9ZnVuY3Rpb24oZCxtLGcscCxoKXt2YXIgdj1kLmRvbTtyZXR1cm4gdXQoZyxwLHYuZ2V0Um9vdCgpKS5iaW5kKGZ1bmN0aW9uKHQpe3ZhciBuPXYuY3JlYXRlUm5nKCk7bi5zZXRTdGFydChoLDApLG4uc2V0RW5kKGcscCk7Zm9yKHZhciByLGUsbyxhLGksdT1uLnRvU3RyaW5nKCksZj0wO2Y8bS5sZW5ndGg7ZisrKXt2YXIgYz1tW2ZdO2lmKHI9dSxlPWMuZW5kLGk9YT1vPXZvaWQgMCxhPWUsaT0obz1yKS5sZW5ndGgtZS5sZW5ndGgsIiI9PT1hfHxvLmxlbmd0aD49YS5sZW5ndGgmJm8uc3Vic3RyKGksaSthLmxlbmd0aCk9PT1hKXt2YXIgcz1tLnNsaWNlKCk7cy5zcGxpY2UoZiwxKTt2YXIgbD1FdChkLGgse3BhdHRlcm46YyxyZW1haW5pbmdQYXR0ZXJuczpzLHBvc2l0aW9uOnR9KTtpZihsLmlzU29tZSgpKXJldHVybiBsfX1yZXR1cm4geS5ub25lKCl9KX0sUnQ9ZnVuY3Rpb24obix0LHIpe24uc2VsZWN0aW9uLnNldFJuZyhyKSwiaW5saW5lLWZvcm1hdCI9PT10LnR5cGU/Qyh0LmZvcm1hdCxmdW5jdGlvbih0KXtuLmZvcm1hdHRlci5hcHBseSh0KX0pOm4uZXhlY0NvbW1hbmQodC5jbWQsITEsdC52YWx1ZSl9LFR0PWZ1bmN0aW9uKG8sdCl7dmFyIG4scixhPShuPSJtY2VfdGV4dHBhdHRlcm4iLHI9KG5ldyBEYXRlKS5nZXRUaW1lKCksbisiXyIrTWF0aC5mbG9vcigxZTkqTWF0aC5yYW5kb20oKSkrICsreXQrU3RyaW5nKHIpKSxpPXgodCxmdW5jdGlvbih0LG4pe3ZhciByPU90KG8sYSsiX2VuZCIrdC5sZW5ndGgsbi5lbmRSbmcpO3JldHVybiB0LmNvbmNhdChbdSh1KHt9LG4pLHtlbmRNYXJrZXI6cn0pXSl9LFtdKTtyZXR1cm4geChpLGZ1bmN0aW9uKHQsbil7dmFyIHI9aS5sZW5ndGgtdC5sZW5ndGgtMSxlPWV0KG4ucGF0dGVybik/bi5lbmRNYXJrZXI6T3QobyxhKyJfc3RhcnQiK3Isbi5zdGFydFJuZyk7cmV0dXJuIHQuY29uY2F0KFt1KHUoe30sbikse3N0YXJ0TWFya2VyOmV9KV0pfSxbXSl9LE50PWZ1bmN0aW9uKHIsZSxvKXt2YXIgYT1yLnNlbGVjdGlvbi5nZXRSbmcoKTtyZXR1cm4hMT09PWEuY29sbGFwc2VkP1tdOm90KHIsYSkuYmluZChmdW5jdGlvbih0KXt2YXIgbj1hLnN0YXJ0T2Zmc2V0LShvPzE6MCk7cmV0dXJuIHh0KHIsZSxhLnN0YXJ0Q29udGFpbmVyLG4sdCl9KS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuW119LGZ1bmN0aW9uKHQpe3JldHVybiB0Lm1hdGNoZXN9KX0sUHQ9ZnVuY3Rpb24oZix0KXtpZigwIT09dC5sZW5ndGgpe3ZhciBjPWYuZG9tLG49Zi5zZWxlY3Rpb24uZ2V0Qm9va21hcmsoKSxyPVR0KGMsdCk7QyhyLGZ1bmN0aW9uKHQpe3ZhciBuLHIsZSxvLGEsaT1jLmdldFBhcmVudCh0LnN0YXJ0TWFya2VyLnN0YXJ0LGMuaXNCbG9jayksdT1mdW5jdGlvbih0KXtyZXR1cm4gdD09PWl9O2V0KHQucGF0dGVybik/KG49ZixyPXQucGF0dGVybixlPXQuZW5kTWFya2VyLG89dSxhPWt0KG4uZG9tLGUpLG50KG4uZG9tLGEsbyksUnQobixyLGEpKTpmdW5jdGlvbih0LG4scixlLG8pe3ZhciBhPXQuZG9tLGk9a3QoYSxlKSx1PWt0KGEscik7bnQoYSx1LG8pLG50KGEsaSxvKTt2YXIgZj17cHJlZml4OnIucHJlZml4LHN0YXJ0OnIuZW5kLGVuZDplLnN0YXJ0fSxjPWt0KGEsZik7UnQodCxuLGMpfShmLHQucGF0dGVybix0LnN0YXJ0TWFya2VyLHQuZW5kTWFya2VyLHUpLHd0KGMsdC5lbmRNYXJrZXIsdSksd3QoYyx0LnN0YXJ0TWFya2VyLHUpfSksZi5zZWxlY3Rpb24ubW92ZVRvQm9va21hcmsobil9fSxTdD1mdW5jdGlvbih0LG4pe3ZhciByPU50KHQsbi5pbmxpbmVQYXR0ZXJucywhMCk7MDxyLmxlbmd0aCYmdC51bmRvTWFuYWdlci50cmFuc2FjdChmdW5jdGlvbigpe1B0KHQscil9KX0sTXQ9ZnVuY3Rpb24odCxuLHIpe2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKWlmKHIodFtlXSxuKSlyZXR1cm4hMH0sQXQ9ZnVuY3Rpb24obixyKXt2YXIgZT1bIiwiLCIuIiwiOyIsIjoiLCIhIiwiPyJdLG89WzMyXTtuLm9uKCJrZXlkb3duIixmdW5jdGlvbih0KXsxMyE9PXQua2V5Q29kZXx8WC5tb2RpZmllclByZXNzZWQodCl8fCFmdW5jdGlvbihyLHQpe2lmKCFyLnNlbGVjdGlvbi5pc0NvbGxhcHNlZCgpKXJldHVybiExO3ZhciBlPU50KHIsdC5pbmxpbmVQYXR0ZXJucywhMSksbz1odChyLHQuYmxvY2tQYXR0ZXJucyk7cmV0dXJuKDA8by5sZW5ndGh8fDA8ZS5sZW5ndGgpJiYoci51bmRvTWFuYWdlci5hZGQoKSxyLnVuZG9NYW5hZ2VyLmV4dHJhKGZ1bmN0aW9uKCl7ci5leGVjQ29tbWFuZCgibWNlSW5zZXJ0TmV3TGluZSIpfSxmdW5jdGlvbigpe3IuaW5zZXJ0Q29udGVudCgiXHVmZWZmIiksUHQocixlKSx2dChyLG8pO3ZhciB0PXIuc2VsZWN0aW9uLmdldFJuZygpLG49dXQodC5zdGFydENvbnRhaW5lcix0LnN0YXJ0T2Zmc2V0LHIuZG9tLmdldFJvb3QoKSk7ci5leGVjQ29tbWFuZCgibWNlSW5zZXJ0TmV3TGluZSIpLG4uZWFjaChmdW5jdGlvbih0KXt2YXIgbj10LmNvbnRhaW5lcjsiXHVmZWZmIj09PW4uZGF0YS5jaGFyQXQodC5vZmZzZXQtMSkmJihuLmRlbGV0ZURhdGEodC5vZmZzZXQtMSwxKSx0dChyLmRvbSxuLnBhcmVudE5vZGUsZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1yLmRvbS5nZXRSb290KCl9KSl9KX0pLCEwKX0obixyLmdldCgpKXx8dC5wcmV2ZW50RGVmYXVsdCgpfSwhMCksbi5vbigia2V5dXAiLGZ1bmN0aW9uKHQpe010KG8sdCxmdW5jdGlvbih0LG4pe3JldHVybiB0PT09bi5rZXlDb2RlJiYhMT09PVgubW9kaWZpZXJQcmVzc2VkKG4pfSkmJlN0KG4sci5nZXQoKSl9KSxuLm9uKCJrZXlwcmVzcyIsZnVuY3Rpb24odCl7TXQoZSx0LGZ1bmN0aW9uKHQsbil7cmV0dXJuIHQuY2hhckNvZGVBdCgwKT09PW4uY2hhckNvZGV9KSYmSy5zZXRFZGl0b3JUaW1lb3V0KG4sZnVuY3Rpb24oKXtTdChuLHIuZ2V0KCkpfSl9KX07IWZ1bmN0aW9uIEJ0KCl7dC5hZGQoInRleHRwYXR0ZXJuIixmdW5jdGlvbih0KXt2YXIgbixyLGU9KG49SCh0LnNldHRpbmdzKSxyPW4se2dldDpmdW5jdGlvbigpe3JldHVybiByfSxzZXQ6ZnVuY3Rpb24odCl7cj10fX0pO3JldHVybiBBdCh0LGUpLFYoZSl9KX0oKX0od2luZG93KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/toc/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/toc/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIGUsbix0PXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLlBsdWdpbk1hbmFnZXIiKSxzPXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLmRvbS5ET01VdGlscyIpLGY9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UudXRpbC5JMThuIiksYz10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS51dGlsLlRvb2xzIiksbD1mdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRQYXJhbSgidG9jX2NsYXNzIiwibWNlLXRvYyIpfSxtPWZ1bmN0aW9uKHQpe3ZhciBlPXQuZ2V0UGFyYW0oInRvY19oZWFkZXIiLCJoMiIpO3JldHVybi9eaFsxLTZdJC8udGVzdChlKT9lOiJoMiJ9LGE9KGU9Im1jZXRvY18iLG49MCxmdW5jdGlvbigpe3ZhciB0PShuZXcgRGF0ZSkuZ2V0VGltZSgpLnRvU3RyaW5nKDMyKTtyZXR1cm4gZSt0KyhuKyspLnRvU3RyaW5nKDMyKX0pLHU9ZnVuY3Rpb24gdSh0KXt2YXIgZSxuPVtdO2ZvcihlPTE7ZTw9dDtlKyspbi5wdXNoKCJoIitlKTtyZXR1cm4gbi5qb2luKCIsIil9LHY9ZnVuY3Rpb24obil7dmFyIHQsbz1sKG4pLGU9bShuKSxpPXUoMTw9KHQ9cGFyc2VJbnQobi5nZXRQYXJhbSgidG9jX2RlcHRoIiwiMyIpLDEwKSkmJnQ8PTk/dDozKSxyPW4uJChpKTtyZXR1cm4gci5sZW5ndGgmJi9eaFsxLTldJC9pLnRlc3QoZSkmJihyPXIuZmlsdGVyKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIW4uZG9tLmhhc0NsYXNzKGUucGFyZW50Tm9kZSxvKX0pKSxjLm1hcChyLGZ1bmN0aW9uKHQpe3JldHVybntpZDp0LmlkP3QuaWQ6YSgpLGxldmVsOnBhcnNlSW50KHQubm9kZU5hbWUucmVwbGFjZSgvXkgvaSwiIiksMTApLHRpdGxlOm4uJC50ZXh0KHQpLGVsZW1lbnQ6dH19KX0sZD1mdW5jdGlvbih0KXt2YXIgZSxuLG8saSxyLGMsbCxhPSIiLHU9dih0KSxkPWZ1bmN0aW9uKHQpe3ZhciBlLG49OTtmb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKWlmKHRbZV0ubGV2ZWw8biYmKG49dFtlXS5sZXZlbCksMT09PW4pcmV0dXJuIG47cmV0dXJuIG59KHUpLTE7aWYoIXUubGVuZ3RoKXJldHVybiIiO2ZvcihhKz0ocj1tKHQpLGM9Zi50cmFuc2xhdGUoIlRhYmxlIG9mIENvbnRlbnRzIiksbD0iPC8iK3IrIj4iLCI8IityKycgY29udGVudGVkaXRhYmxlPSJ0cnVlIj4nK3MuRE9NLmVuY29kZShjKStsKSxlPTA7ZTx1Lmxlbmd0aDtlKyspe2lmKChvPXVbZV0pLmVsZW1lbnQuaWQ9by5pZCxpPXVbZSsxXSYmdVtlKzFdLmxldmVsLGQ9PT1vLmxldmVsKWErPSI8bGk+IjtlbHNlIGZvcihuPWQ7bjxvLmxldmVsO24rKylhKz0iPHVsPjxsaT4iO2lmKGErPSc8YSBocmVmPSIjJytvLmlkKyciPicrby50aXRsZSsiPC9hPiIsaSE9PW8ubGV2ZWwmJmkpZm9yKG49by5sZXZlbDtpPG47bi0tKWErPSI8L2xpPjwvdWw+PGxpPiI7ZWxzZSBhKz0iPC9saT4iLGl8fChhKz0iPC91bD4iKTtkPW8ubGV2ZWx9cmV0dXJuIGF9LHI9ZnVuY3Rpb24odCl7dmFyIGUsbixvLGkscj1sKHQpLGM9dC4kKCIuIityKTtvPXQsIShpPWMpLmxlbmd0aHx8MDxvLmRvbS5nZXRQYXJlbnRzKGlbMF0sIi5tY2Utb2Zmc2NyZWVuLXNlbGVjdGlvbiIpLmxlbmd0aD90Lmluc2VydENvbnRlbnQoKG49ZChlPXQpLCc8ZGl2IGNsYXNzPSInK2UuZG9tLmVuY29kZShsKGUpKSsnIiBjb250ZW50ZWRpdGFibGU9ImZhbHNlIj4nK24rIjwvZGl2PiIpKTpnKHQpfSxnPWZ1bmN0aW9uKHQpe3ZhciBlPWwodCksbj10LiQoIi4iK2UpO24ubGVuZ3RoJiZ0LnVuZG9NYW5hZ2VyLnRyYW5zYWN0KGZ1bmN0aW9uKCl7bi5odG1sKGQodCkpfSl9LG89ZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBlPWZ1bmN0aW9uKCl7cmV0dXJuIHQuc2V0RGlzYWJsZWQobi5tb2RlLmlzUmVhZE9ubHkoKXx8ISgwPHYobikubGVuZ3RoKSl9O3JldHVybiBlKCksbi5vbigiTG9hZENvbnRlbnQgU2V0Q29udGVudCBjaGFuZ2UiLGUpLGZ1bmN0aW9uKCl7cmV0dXJuIG4ub24oIkxvYWRDb250ZW50IFNldENvbnRlbnQgY2hhbmdlIixlKX19fSxoPWZ1bmN0aW9uKHQpe3ZhciBlO3QudWkucmVnaXN0cnkuYWRkQnV0dG9uKCJ0b2MiLHtpY29uOiJ0b2MiLHRvb2x0aXA6IlRhYmxlIG9mIGNvbnRlbnRzIixvbkFjdGlvbjpmdW5jdGlvbigpe3JldHVybiB0LmV4ZWNDb21tYW5kKCJtY2VJbnNlcnRUb2MiKX0sb25TZXR1cDpvKHQpfSksdC51aS5yZWdpc3RyeS5hZGRCdXR0b24oInRvY3VwZGF0ZSIse2ljb246InJlbG9hZCIsdG9vbHRpcDoiVXBkYXRlIixvbkFjdGlvbjpmdW5jdGlvbigpe3JldHVybiB0LmV4ZWNDb21tYW5kKCJtY2VVcGRhdGVUb2MiKX19KSx0LnVpLnJlZ2lzdHJ5LmFkZE1lbnVJdGVtKCJ0b2MiLHtpY29uOiJ0b2MiLHRleHQ6IlRhYmxlIG9mIGNvbnRlbnRzIixvbkFjdGlvbjpmdW5jdGlvbigpe3JldHVybiB0LmV4ZWNDb21tYW5kKCJtY2VJbnNlcnRUb2MiKX0sb25TZXR1cDpvKHQpfSksdC51aS5yZWdpc3RyeS5hZGRDb250ZXh0VG9vbGJhcigidG9jIix7aXRlbXM6InRvY3VwZGF0ZSIscHJlZGljYXRlOihlPXQsZnVuY3Rpb24odCl7cmV0dXJuIHQmJmUuZG9tLmlzKHQsIi4iK2woZSkpJiZlLmdldEJvZHkoKS5jb250YWlucyh0KX0pLHNjb3BlOiJub2RlIixwb3NpdGlvbjoibm9kZSJ9KX07IWZ1bmN0aW9uIGkoKXt0LmFkZCgidG9jIixmdW5jdGlvbih0KXt2YXIgZSxuLG8saTsoZT10KS5hZGRDb21tYW5kKCJtY2VJbnNlcnRUb2MiLGZ1bmN0aW9uKCl7cihlKX0pLGUuYWRkQ29tbWFuZCgibWNlVXBkYXRlVG9jIixmdW5jdGlvbigpe2coZSl9KSxoKHQpLG89KG49dCkuJCxpPWwobiksbi5vbigiUHJlUHJvY2VzcyIsZnVuY3Rpb24odCl7dmFyIGU9bygiLiIraSx0Lm5vZGUpO2UubGVuZ3RoJiYoZS5yZW1vdmVBdHRyKCJjb250ZW50RWRpdGFibGUiKSxlLmZpbmQoIltjb250ZW50ZWRpdGFibGVdIikucmVtb3ZlQXR0cigiY29udGVudEVkaXRhYmxlIikpfSksbi5vbigiU2V0Q29udGVudCIsZnVuY3Rpb24oKXt2YXIgdD1vKCIuIitpKTt0Lmxlbmd0aCYmKHQuYXR0cigiY29udGVudEVkaXRhYmxlIiwhMSksdC5jaGlsZHJlbigiOmZpcnN0LWNoaWxkIikuYXR0cigiY29udGVudEVkaXRhYmxlIiwhMCkpfSl9KX0oKX0oKTs=]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/visualblocks/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/visualblocks/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIG89dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuUGx1Z2luTWFuYWdlciIpLHI9ZnVuY3Rpb24obyx0LGUpe3ZhciBuLHM7by5kb20udG9nZ2xlQ2xhc3Moby5nZXRCb2R5KCksIm1jZS12aXN1YWxibG9ja3MiKSxlLnNldCghZS5nZXQoKSksbj1vLHM9ZS5nZXQoKSxuLmZpcmUoIlZpc3VhbEJsb2NrcyIse3N0YXRlOnN9KX0sbT1mdW5jdGlvbihlLG4pe3JldHVybiBmdW5jdGlvbih0KXt0LnNldEFjdGl2ZShuLmdldCgpKTt2YXIgbz1mdW5jdGlvbihvKXtyZXR1cm4gdC5zZXRBY3RpdmUoby5zdGF0ZSl9O3JldHVybiBlLm9uKCJWaXN1YWxCbG9ja3MiLG8pLGZ1bmN0aW9uKCl7cmV0dXJuIGUub2ZmKCJWaXN1YWxCbG9ja3MiLG8pfX19OyFmdW5jdGlvbiB0KCl7by5hZGQoInZpc3VhbGJsb2NrcyIsZnVuY3Rpb24obyx0KXt2YXIgZSxuLHMsaSxjLHUsbCxhPShlPSExLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZX0sc2V0OmZ1bmN0aW9uKG8pe2U9b319KTtzPWEsKG49bykuYWRkQ29tbWFuZCgibWNlVmlzdWFsQmxvY2tzIixmdW5jdGlvbigpe3IobiwwLHMpfSksYz1hLChpPW8pLnVpLnJlZ2lzdHJ5LmFkZFRvZ2dsZUJ1dHRvbigidmlzdWFsYmxvY2tzIix7aWNvbjoidmlzdWFsYmxvY2tzIix0b29sdGlwOiJTaG93IGJsb2NrcyIsb25BY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gaS5leGVjQ29tbWFuZCgibWNlVmlzdWFsQmxvY2tzIil9LG9uU2V0dXA6bShpLGMpfSksaS51aS5yZWdpc3RyeS5hZGRUb2dnbGVNZW51SXRlbSgidmlzdWFsYmxvY2tzIix7dGV4dDoiU2hvdyBibG9ja3MiLGljb246InZpc3VhbGJsb2NrcyIsb25BY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gaS5leGVjQ29tbWFuZCgibWNlVmlzdWFsQmxvY2tzIil9LG9uU2V0dXA6bShpLGMpfSksbD1hLCh1PW8pLm9uKCJQcmV2aWV3Rm9ybWF0cyBBZnRlclByZXZpZXdGb3JtYXRzIixmdW5jdGlvbihvKXtsLmdldCgpJiZ1LmRvbS50b2dnbGVDbGFzcyh1LmdldEJvZHkoKSwibWNlLXZpc3VhbGJsb2NrcyIsImFmdGVycHJldmlld2Zvcm1hdHMiPT09by50eXBlKX0pLHUub24oImluaXQiLGZ1bmN0aW9uKCl7dS5nZXRQYXJhbSgidmlzdWFsYmxvY2tzX2RlZmF1bHRfc3RhdGUiLCExLCJib29sZWFuIikmJnIodSwwLGwpfSksdS5vbigicmVtb3ZlIixmdW5jdGlvbigpe3UuZG9tLnJlbW92ZUNsYXNzKHUuZ2V0Qm9keSgpLCJtY2UtdmlzdWFsYmxvY2tzIil9KX0pfSgpfSgpOw==]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/visualchars/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/visualchars/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24ocil7InVzZSBzdHJpY3QiO3ZhciBuLHQsZSxvLHUsaSxjPXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLlBsdWdpbk1hbmFnZXIiKSxhPWZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBufX0scz1hKCExKSxmPWEoITApLGw9ZnVuY3Rpb24oKXtyZXR1cm4gZH0sZD0obj1mdW5jdGlvbihuKXtyZXR1cm4gbi5pc05vbmUoKX0se2ZvbGQ6ZnVuY3Rpb24obix0KXtyZXR1cm4gbigpfSxpczpzLGlzU29tZTpzLGlzTm9uZTpmLGdldE9yOmU9ZnVuY3Rpb24obil7cmV0dXJuIG59LGdldE9yVGh1bms6dD1mdW5jdGlvbihuKXtyZXR1cm4gbigpfSxnZXRPckRpZTpmdW5jdGlvbihuKXt0aHJvdyBuZXcgRXJyb3Iobnx8ImVycm9yOiBnZXRPckRpZSBjYWxsZWQgb24gbm9uZS4iKX0sZ2V0T3JOdWxsOmEobnVsbCksZ2V0T3JVbmRlZmluZWQ6YSh1bmRlZmluZWQpLG9yOmUsb3JUaHVuazp0LG1hcDpsLGVhY2g6ZnVuY3Rpb24oKXt9LGJpbmQ6bCxleGlzdHM6cyxmb3JhbGw6ZixmaWx0ZXI6bCxlcXVhbHM6bixlcXVhbHNfOm4sdG9BcnJheTpmdW5jdGlvbigpe3JldHVybltdfSx0b1N0cmluZzphKCJub25lKCkiKX0pLG09ZnVuY3Rpb24oZSl7dmFyIG49YShlKSx0PWZ1bmN0aW9uKCl7cmV0dXJuIG99LHI9ZnVuY3Rpb24obil7cmV0dXJuIG4oZSl9LG89e2ZvbGQ6ZnVuY3Rpb24obix0KXtyZXR1cm4gdChlKX0saXM6ZnVuY3Rpb24obil7cmV0dXJuIGU9PT1ufSxpc1NvbWU6Zixpc05vbmU6cyxnZXRPcjpuLGdldE9yVGh1bms6bixnZXRPckRpZTpuLGdldE9yTnVsbDpuLGdldE9yVW5kZWZpbmVkOm4sb3I6dCxvclRodW5rOnQsbWFwOmZ1bmN0aW9uKG4pe3JldHVybiBtKG4oZSkpfSxlYWNoOmZ1bmN0aW9uKG4pe24oZSl9LGJpbmQ6cixleGlzdHM6cixmb3JhbGw6cixmaWx0ZXI6ZnVuY3Rpb24obil7cmV0dXJuIG4oZSk/bzpkfSx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuW2VdfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiJzb21lKCIrZSsiKSJ9LGVxdWFsczpmdW5jdGlvbihuKXtyZXR1cm4gbi5pcyhlKX0sZXF1YWxzXzpmdW5jdGlvbihuLHQpe3JldHVybiBuLmZvbGQocyxmdW5jdGlvbihuKXtyZXR1cm4gdChlLG4pfSl9fTtyZXR1cm4gb30sdj1mdW5jdGlvbihuKXtyZXR1cm4gbnVsbD09PW58fG49PT11bmRlZmluZWQ/ZDptKG4pfSxnPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdHlwZW9mIG49PT10fX0saD0obz0ic3RyaW5nIixmdW5jdGlvbihuKXtyZXR1cm4gZT10eXBlb2YodD1uKSwobnVsbD09PXQ/Im51bGwiOiJvYmplY3QiPT1lJiYoQXJyYXkucHJvdG90eXBlLmlzUHJvdG90eXBlT2YodCl8fHQuY29uc3RydWN0b3ImJiJBcnJheSI9PT10LmNvbnN0cnVjdG9yLm5hbWUpPyJhcnJheSI6Im9iamVjdCI9PWUmJihTdHJpbmcucHJvdG90eXBlLmlzUHJvdG90eXBlT2YodCl8fHQuY29uc3RydWN0b3ImJiJTdHJpbmciPT09dC5jb25zdHJ1Y3Rvci5uYW1lKT8ic3RyaW5nIjplKT09PW87dmFyIHQsZX0pLHA9ZygiYm9vbGVhbiIpLHk9ZygibnVtYmVyIiksdz1mdW5jdGlvbihuLHQpe2Zvcih2YXIgZT0wLHI9bi5sZW5ndGg7ZTxyO2UrKyl7dChuW2VdLGUpfX0sYj1PYmplY3Qua2V5cyxOPWZ1bmN0aW9uKG4sdCl7Zm9yKHZhciBlPWIobikscj0wLG89ZS5sZW5ndGg7cjxvO3IrKyl7dmFyIHU9ZVtyXTt0KG5bdV0sdSl9fSxUPSgidW5kZWZpbmVkIiE9dHlwZW9mIHIud2luZG93P3Iud2luZG93OkZ1bmN0aW9uKCJyZXR1cm4gdGhpczsiKSgpLGZ1bmN0aW9uKG4pe3JldHVybiBuLmRvbSgpLm5vZGVWYWx1ZX0pLGs9KHU9MyxmdW5jdGlvbihuKXtyZXR1cm4gbi5kb20oKS5ub2RlVHlwZT09PXV9KSxBPWZ1bmN0aW9uKG4sdCxlKXshZnVuY3Rpb24obix0LGUpe2lmKCEoaChlKXx8cChlKXx8eShlKSkpdGhyb3cgci5jb25zb2xlLmVycm9yKCJJbnZhbGlkIGNhbGwgdG8gQXR0ci5zZXQuIEtleSAiLHQsIjo6IFZhbHVlICIsZSwiOjogRWxlbWVudCAiLG4pLG5ldyBFcnJvcigiQXR0cmlidXRlIHZhbHVlIHdhcyBub3Qgc2ltcGxlIik7bi5zZXRBdHRyaWJ1dGUodCxlKyIiKX0obi5kb20oKSx0LGUpfSxPPWZ1bmN0aW9uKG4sdCl7bi5kb20oKS5yZW1vdmVBdHRyaWJ1dGUodCl9LEM9ZnVuY3Rpb24obix0KXt2YXIgZSxyLG89KGU9dCxudWxsPT09KHI9bi5kb20oKS5nZXRBdHRyaWJ1dGUoZSkpP3VuZGVmaW5lZDpyKTtyZXR1cm4gbz09PXVuZGVmaW5lZHx8IiI9PT1vP1tdOm8uc3BsaXQoIiAiKX0sUz1mdW5jdGlvbihuKXtyZXR1cm4gbi5kb20oKS5jbGFzc0xpc3QhPT11bmRlZmluZWR9LEQ9ZnVuY3Rpb24obix0KXtyZXR1cm4gbz10LHU9QyhlPW4scj0iY2xhc3MiKS5jb25jYXQoW29dKSxBKGUscix1LmpvaW4oIiAiKSksITA7dmFyIGUscixvLHV9LEU9ZnVuY3Rpb24obix0KXtyZXR1cm4gbz10LDA8KHU9ZnVuY3Rpb24obix0KXtmb3IodmFyIGU9W10scj0wLG89bi5sZW5ndGg7cjxvO3IrKyl7dmFyIHU9bltyXTt0KHUscikmJmUucHVzaCh1KX1yZXR1cm4gZX0oQyhlPW4scj0iY2xhc3MiKSxmdW5jdGlvbihuKXtyZXR1cm4gbiE9PW99KSkubGVuZ3RoP0EoZSxyLHUuam9pbigiICIpKTpPKGUsciksITE7dmFyIGUscixvLHV9LEw9ZnVuY3Rpb24obil7MD09PShTKG4pP24uZG9tKCkuY2xhc3NMaXN0OkMobiwiY2xhc3MiKSkubGVuZ3RoJiZPKG4sImNsYXNzIil9LHg9ZnVuY3Rpb24obil7aWYobnVsbD09PW58fG49PT11bmRlZmluZWQpdGhyb3cgbmV3IEVycm9yKCJOb2RlIGNhbm5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpO3JldHVybntkb206YShuKX19LFY9e2Zyb21IdG1sOmZ1bmN0aW9uKG4sdCl7dmFyIGU9KHR8fHIuZG9jdW1lbnQpLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2lmKGUuaW5uZXJIVE1MPW4sIWUuaGFzQ2hpbGROb2RlcygpfHwxPGUuY2hpbGROb2Rlcy5sZW5ndGgpdGhyb3cgci5jb25zb2xlLmVycm9yKCJIVE1MIGRvZXMgbm90IGhhdmUgYSBzaW5nbGUgcm9vdCBub2RlIixuKSxuZXcgRXJyb3IoIkhUTUwgbXVzdCBoYXZlIGEgc2luZ2xlIHJvb3Qgbm9kZSIpO3JldHVybiB4KGUuY2hpbGROb2Rlc1swXSl9LGZyb21UYWc6ZnVuY3Rpb24obix0KXt2YXIgZT0odHx8ci5kb2N1bWVudCkuY3JlYXRlRWxlbWVudChuKTtyZXR1cm4geChlKX0sZnJvbVRleHQ6ZnVuY3Rpb24obix0KXt2YXIgZT0odHx8ci5kb2N1bWVudCkuY3JlYXRlVGV4dE5vZGUobik7cmV0dXJuIHgoZSl9LGZyb21Eb206eCxmcm9tUG9pbnQ6ZnVuY3Rpb24obix0LGUpe3ZhciByPW4uZG9tKCk7cmV0dXJuIHYoci5lbGVtZW50RnJvbVBvaW50KHQsZSkpLm1hcCh4KX19LEI9eyJceGEwIjoibmJzcCIsIlx4YWQiOiJzaHkifSxQPWZ1bmN0aW9uKG4sdCl7dmFyIGU9IiI7cmV0dXJuIE4obixmdW5jdGlvbihuLHQpe2UrPXR9KSxuZXcgUmVnRXhwKCJbIitlKyJdIix0PyJnIjoiIil9LF89UChCKSxqPVAoQiwhMCksTT0oaT0iIixOKEIsZnVuY3Rpb24obil7aSYmKGkrPSIsIiksaSs9InNwYW4ubWNlLSIrbn0pLGkpLHE9Im1jZS1uYnNwIixIPWZ1bmN0aW9uKG4pe3JldHVybic8c3BhbiBkYXRhLW1jZS1ib2d1cz0iMSIgY2xhc3M9Im1jZS0nK0Jbbl0rJyI+JytuKyI8L3NwYW4+In0sRj1mdW5jdGlvbihuKXt2YXIgdD1UKG4pO3JldHVybiBrKG4pJiZ0IT09dW5kZWZpbmVkJiZfLnRlc3QodCl9LEk9ZnVuY3Rpb24obix0KXt2YXIgZT1bXSxyPWZ1bmN0aW9uKG4sdCl7Zm9yKHZhciBlPW4ubGVuZ3RoLHI9bmV3IEFycmF5KGUpLG89MDtvPGU7bysrKXt2YXIgdT1uW29dO3Jbb109dCh1LG8pfXJldHVybiByfShuLmRvbSgpLmNoaWxkTm9kZXMsVi5mcm9tRG9tKTtyZXR1cm4gdyhyLGZ1bmN0aW9uKG4pe3QobikmJihlPWUuY29uY2F0KFtuXSkpLGU9ZS5jb25jYXQoSShuLHQpKX0pLGV9LFU9ZnVuY3Rpb24obil7cmV0dXJuInNwYW4iPT09bi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiZuLmNsYXNzTGlzdC5jb250YWlucygibWNlLW5ic3Atd3JhcCIpfSxLPWZ1bmN0aW9uKGMsbil7dmFyIHQ9SShWLmZyb21Eb20obiksRik7dyh0LGZ1bmN0aW9uKG4pe3ZhciB0LGUscj1uLmRvbSgpLnBhcmVudE5vZGU7aWYoVShyKSl0PVYuZnJvbURvbShyKSxlPXEsUyh0KT90LmRvbSgpLmNsYXNzTGlzdC5hZGQoZSk6RCh0LGUpO2Vsc2V7Zm9yKHZhciBvPWMuZG9tLmVuY29kZShUKG4pKS5yZXBsYWNlKGosSCksdT1jLmRvbS5jcmVhdGUoImRpdiIsbnVsbCxvKSxpPXZvaWQgMDtpPXUubGFzdENoaWxkOyljLmRvbS5pbnNlcnRBZnRlcihpLG4uZG9tKCkpO2MuZG9tLnJlbW92ZShuLmRvbSgpKX19KX0sUj1mdW5jdGlvbih0LG4pe3ZhciBlPXQuZG9tLnNlbGVjdChNLG4pO3coZSxmdW5jdGlvbihuKXtVKG4pP2Z1bmN0aW9uKG4sdCl7UyhuKT9uLmRvbSgpLmNsYXNzTGlzdC5yZW1vdmUodCk6RShuLHQpO0wobil9KFYuZnJvbURvbShuKSxxKTp0LmRvbS5yZW1vdmUobiwhMCl9KX0sej1mdW5jdGlvbihuKXt2YXIgdD1uLmdldEJvZHkoKSxlPW4uc2VsZWN0aW9uLmdldEJvb2ttYXJrKCkscj1mdW5jdGlvbihuLHQpe2Zvcig7bi5wYXJlbnROb2RlOyl7aWYobi5wYXJlbnROb2RlPT09dClyZXR1cm4gbjtuPW4ucGFyZW50Tm9kZX19KG4uc2VsZWN0aW9uLmdldE5vZGUoKSx0KTtyPXIhPT11bmRlZmluZWQ/cjp0LFIobixyKSxLKG4sciksbi5zZWxlY3Rpb24ubW92ZVRvQm9va21hcmsoZSl9LEc9ZnVuY3Rpb24obix0KXt2YXIgZSxyLG8sdT1uLmdldEJvZHkoKSxpPW4uc2VsZWN0aW9uO3Quc2V0KCF0LmdldCgpKSxyPW4sbz10LmdldCgpLHIuZmlyZSgiVmlzdWFsQ2hhcnMiLHtzdGF0ZTpvfSksZT1pLmdldEJvb2ttYXJrKCksKCEwPT09dC5nZXQoKT9LOlIpKG4sdSksaS5tb3ZlVG9Cb29rbWFyayhlKX0sSj10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS51dGlsLkRlbGF5IiksUT1mdW5jdGlvbihlLHIpe3JldHVybiBmdW5jdGlvbih0KXt0LnNldEFjdGl2ZShyLmdldCgpKTt2YXIgbj1mdW5jdGlvbihuKXtyZXR1cm4gdC5zZXRBY3RpdmUobi5zdGF0ZSl9O3JldHVybiBlLm9uKCJWaXN1YWxDaGFycyIsbiksZnVuY3Rpb24oKXtyZXR1cm4gZS5vZmYoIlZpc3VhbENoYXJzIixuKX19fTshZnVuY3Rpb24gVygpe2MuYWRkKCJ2aXN1YWxjaGFycyIsZnVuY3Rpb24obil7dmFyIHQsZSxyLG8sdSxpLGMsYSxzLGYsbCxkPSh0PSExLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdH0sc2V0OmZ1bmN0aW9uKG4pe3Q9bn19KTtyZXR1cm4gcj1kLChlPW4pLmFkZENvbW1hbmQoIm1jZVZpc3VhbENoYXJzIixmdW5jdGlvbigpe0coZSxyKX0pLHU9ZCwobz1uKS51aS5yZWdpc3RyeS5hZGRUb2dnbGVCdXR0b24oInZpc3VhbGNoYXJzIix7dG9vbHRpcDoiU2hvdyBpbnZpc2libGUgY2hhcmFjdGVycyIsaWNvbjoidmlzdWFsY2hhcnMiLG9uQWN0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIG8uZXhlY0NvbW1hbmQoIm1jZVZpc3VhbENoYXJzIil9LG9uU2V0dXA6UShvLHUpfSksby51aS5yZWdpc3RyeS5hZGRUb2dnbGVNZW51SXRlbSgidmlzdWFsY2hhcnMiLHt0ZXh0OiJTaG93IGludmlzaWJsZSBjaGFyYWN0ZXJzIixpY29uOiJ2aXN1YWxjaGFycyIsb25BY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gby5leGVjQ29tbWFuZCgibWNlVmlzdWFsQ2hhcnMiKX0sb25TZXR1cDpRKG8sdSl9KSxpPW4sYz1kLGE9Si5kZWJvdW5jZShmdW5jdGlvbigpe3ooaSl9LDMwMCksITEhPT1pLnNldHRpbmdzLmZvcmNlZF9yb290X2Jsb2NrJiZpLm9uKCJrZXlkb3duIixmdW5jdGlvbihuKXshMD09PWMuZ2V0KCkmJigxMz09PW4ua2V5Q29kZT96KGkpOmEoKSl9KSxmPWQsKHM9bikub24oImluaXQiLGZ1bmN0aW9uKCl7dmFyIG49IXMuZ2V0UGFyYW0oInZpc3VhbGNoYXJzX2RlZmF1bHRfc3RhdGUiLCExKTtmLnNldChuKSxHKHMsZil9KSxsPWQse2lzRW5hYmxlZDpmdW5jdGlvbigpe3JldHVybiBsLmdldCgpfX19KX0oKX0od2luZG93KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/wordcount/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/plugins/wordcount/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIHQ9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UuUGx1Z2luTWFuYWdlciIpLHI9ZnVuY3Rpb24odCl7cmV0dXJuIHR9LGk9ZnVuY3Rpb24oKXtyZXR1cm4oaT1PYmplY3QuYXNzaWdufHxmdW5jdGlvbih0KXtmb3IodmFyIGUsbj0xLHI9YXJndW1lbnRzLmxlbmd0aDtuPHI7bisrKWZvcih2YXIgbyBpbiBlPWFyZ3VtZW50c1tuXSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxvKSYmKHRbb109ZVtvXSk7cmV0dXJuIHR9KS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGU9IlstJ1xcLlx1MjAxOFx1MjAxOVx1MjAyNFx1ZmU1Mlx1ZmYwN1x1ZmYwZV0iLG49Ils6XHhiN1x4YjdcdTA1ZjRcdTIwMjdcdWZlMTNcdWZlNTVcdWZmMWFdIixvPSJbXHhiMSsqLyw7O1x1MDU4OVx1MDYwY1x1MDYwZFx1MDY2Y1x1MDdmOFx1MjA0NFx1ZmUxMFx1ZmUxNFx1ZmU1MFx1ZmU1NFx1ZmYwY1x1ZmYxYl0iLHU9IlswLTlcdTA2NjAtXHUwNjY5XHUwNjZiXHUwNmYwLVx1MDZmOVx1MDdjMC1cdTA3YzlcdTA5NjYtXHUwOTZmXHUwOWU2LVx1MDllZlx1MGE2Ni1cdTBhNmZcdTBhZTYtXHUwYWVmXHUwYjY2LVx1MGI2Zlx1MGJlNi1cdTBiZWZcdTBjNjYtXHUwYzZmXHUwY2U2LVx1MGNlZlx1MGQ2Ni1cdTBkNmZcdTBlNTAtXHUwZTU5XHUwZWQwLVx1MGVkOVx1MGYyMC1cdTBmMjlcdTEwNDAtXHUxMDQ5XHUxMDkwLVx1MTA5OVx1MTdlMC1cdTE3ZTlcdTE4MTAtXHUxODE5XHUxOTQ2LVx1MTk0Zlx1MTlkMC1cdTE5ZDlcdTFhODAtXHUxYTg5XHUxYTkwLVx1MWE5OVx1MWI1MC1cdTFiNTlcdTFiYjAtXHUxYmI5XHUxYzQwLVx1MWM0OVx1MWM1MC1cdTFjNTlcdWE2MjAtXHVhNjI5XHVhOGQwLVx1YThkOVx1YTkwMC1cdWE5MDlcdWE5ZDAtXHVhOWQ5XHVhYTUwLVx1YWE1OVx1YWJmMC1cdWFiZjldIixjPSJcXHIiLGE9IlxcbiIscz0iW1x4MEJcZlx4ODVcdTIwMjhcdTIwMjldIixnPSJbXHUwMzAwLVx1MDM2Zlx1MDQ4My1cdTA0ODlcdTA1OTEtXHUwNWJkXHUwNWJmXHUwNWMxXHUwNWMyXHUwNWM0XHUwNWM1XHUwNWM3XHUwNjEwLVx1MDYxYVx1MDY0Yi1cdTA2NWZcdTA2NzBcdTA2ZDYtXHUwNmRjXHUwNmRmLVx1MDZlNFx1MDZlN1x1MDZlOFx1MDZlYS1cdTA2ZWRcdTA3MTFcdTA3MzAtXHUwNzRhXHUwN2E2LVx1MDdiMFx1MDdlYi1cdTA3ZjNcdTA4MTYtXHUwODE5XHUwODFiLVx1MDgyM1x1MDgyNS1cdTA4MjdcdTA4MjktXHUwODJkXHUwODU5LVx1MDg1Ylx1MDkwMC1cdTA5MDNcdTA5M2EtXHUwOTNjXHUwOTNlLVx1MDk0Zlx1MDk1MS1cdTA5NTdcdTA5NjJcdTA5NjNcdTA5ODEtXHUwOTgzXHUwOWJjXHUwOWJlLVx1MDljNFx1MDljN1x1MDljOFx1MDljYi1cdTA5Y2RcdTA5ZDdcdTA5ZTJcdTA5ZTNcdTBhMDEtXHUwYTAzXHUwYTNjXHUwYTNlLVx1MGE0Mlx1MGE0N1x1MGE0OFx1MGE0Yi1cdTBhNGRcdTBhNTFcdTBhNzBcdTBhNzFcdTBhNzVcdTBhODEtXHUwYTgzXHUwYWJjXHUwYWJlLVx1MGFjNVx1MGFjNy1cdTBhYzlcdTBhY2ItXHUwYWNkXHUwYWUyXHUwYWUzXHUwYjAxLVx1MGIwM1x1MGIzY1x1MGIzZS1cdTBiNDRcdTBiNDdcdTBiNDhcdTBiNGItXHUwYjRkXHUwYjU2XHUwYjU3XHUwYjYyXHUwYjYzXHUwYjgyXHUwYmJlLVx1MGJjMlx1MGJjNi1cdTBiYzhcdTBiY2EtXHUwYmNkXHUwYmQ3XHUwYzAxLVx1MGMwM1x1MGMzZS1cdTBjNDRcdTBjNDYtXHUwYzQ4XHUwYzRhLVx1MGM0ZFx1MGM1NVx1MGM1Nlx1MGM2Mlx1MGM2M1x1MGM4Mlx1MGM4M1x1MGNiY1x1MGNiZS1cdTBjYzRcdTBjYzYtXHUwY2M4XHUwY2NhLVx1MGNjZFx1MGNkNVx1MGNkNlx1MGNlMlx1MGNlM1x1MGQwMlx1MGQwM1x1MGQzZS1cdTBkNDRcdTBkNDYtXHUwZDQ4XHUwZDRhLVx1MGQ0ZFx1MGQ1N1x1MGQ2Mlx1MGQ2M1x1MGQ4Mlx1MGQ4M1x1MGRjYVx1MGRjZi1cdTBkZDRcdTBkZDZcdTBkZDgtXHUwZGRmXHUwZGYyXHUwZGYzXHUwZTMxXHUwZTM0LVx1MGUzYVx1MGU0Ny1cdTBlNGVcdTBlYjFcdTBlYjQtXHUwZWI5XHUwZWJiXHUwZWJjXHUwZWM4LVx1MGVjZFx1MGYxOFx1MGYxOVx1MGYzNVx1MGYzN1x1MGYzOVx1MGYzZVx1MGYzZlx1MGY3MS1cdTBmODRcdTBmODZcdTBmODdcdTBmOGQtXHUwZjk3XHUwZjk5LVx1MGZiY1x1MGZjNlx1MTAyYi1cdTEwM2VcdTEwNTYtXHUxMDU5XHUxMDVlLVx1MTA2MFx1MTA2Mi1cdTEwNjRcdTEwNjctXHUxMDZkXHUxMDcxLVx1MTA3NFx1MTA4Mi1cdTEwOGRcdTEwOGZcdTEwOWEtXHUxMDlkXHUxMzVkLVx1MTM1Zlx1MTcxMi1cdTE3MTRcdTE3MzItXHUxNzM0XHUxNzUyXHUxNzUzXHUxNzcyXHUxNzczXHUxN2I2LVx1MTdkM1x1MTdkZFx1MTgwYi1cdTE4MGRcdTE4YTlcdTE5MjAtXHUxOTJiXHUxOTMwLVx1MTkzYlx1MTliMC1cdTE5YzBcdTE5YzhcdTE5YzlcdTFhMTctXHUxYTFiXHUxYTU1LVx1MWE1ZVx1MWE2MC1cdTFhN2NcdTFhN2ZcdTFiMDAtXHUxYjA0XHUxYjM0LVx1MWI0NFx1MWI2Yi1cdTFiNzNcdTFiODAtXHUxYjgyXHUxYmExLVx1MWJhYVx1MWJlNi1cdTFiZjNcdTFjMjQtXHUxYzM3XHUxY2QwLVx1MWNkMlx1MWNkNC1cdTFjZThcdTFjZWRcdTFjZjJcdTFkYzAtXHUxZGU2XHUxZGZjLVx1MWRmZlx1MjAwY1x1MjAwZFx1MjBkMC1cdTIwZjBcdTJjZWYtXHUyY2YxXHUyZDdmXHUyZGUwLVx1MmRmZlx1MzAyYS1cdTMwMmZcdTMwOTlcdTMwOWFcdWE2NmYtXHVhNjcyXHVhNjdjXHVhNjdkXHVhNmYwXHVhNmYxXHVhODAyXHVhODA2XHVhODBiXHVhODIzLVx1YTgyN1x1YTg4MFx1YTg4MVx1YThiNC1cdWE4YzRcdWE4ZTAtXHVhOGYxXHVhOTI2LVx1YTkyZFx1YTk0Ny1cdWE5NTNcdWE5ODAtXHVhOTgzXHVhOWIzLVx1YTljMFx1YWEyOS1cdWFhMzZcdWFhNDNcdWFhNGNcdWFhNGRcdWFhN2JcdWFhYjBcdWFhYjItXHVhYWI0XHVhYWI3XHVhYWI4XHVhYWJlXHVhYWJmXHVhYWMxXHVhYmUzLVx1YWJlYVx1YWJlY1x1YWJlZFx1ZmIxZVx1ZmUwMC1cdWZlMGZcdWZlMjAtXHVmZTI2XHVmZjllXHVmZjlmXSIsbD0iW1x4YWRcdTA2MDAtXHUwNjAzXHUwNmRkXHUwNzBmXHUxN2I0XHUxN2I1XHUyMDBlXHUyMDBmXHUyMDJhLVx1MjAyZVx1MjA2MC1cdTIwNjRcdTIwNmEtXHUyMDZmXHVmZWZmXHVmZmY5LVx1ZmZmYl0iLHA9IltcdTMwMzEtXHUzMDM1XHUzMDliXHUzMDljXHUzMGEwLVx1MzBmYVx1MzBmYy1cdTMwZmZcdTMxZjAtXHUzMWZmXHUzMmQwLVx1MzJmZVx1MzMwMC1cdTMzNTdcdWZmNjYtXHVmZjlkXSIsZD0iWz1fXHUyMDNmXHUyMDQwXHUyMDU0XHVmZTMzXHVmZTM0XHVmZTRkLVx1ZmU0Zlx1ZmYzZlx1MjIwMC1cdTIyZmY8Pl0iLGY9IlshLSMlLSosLVxcLzo7P0BcXFstXFxdX3t9XHhhMVx4YWJceGI3XHhiYlx4YmY7XHhiN1x1MDU1YS1cdTA1NWZcdTA1ODlcdTA1OGFcdTA1YmVcdTA1YzBcdTA1YzNcdTA1YzZcdTA1ZjNcdTA1ZjRcdTA2MDlcdTA2MGFcdTA2MGNcdTA2MGRcdTA2MWJcdTA2MWVcdTA2MWZcdTA2NmEtXHUwNjZkXHUwNmQ0XHUwNzAwLVx1MDcwZFx1MDdmNy1cdTA3ZjlcdTA4MzAtXHUwODNlXHUwODVlXHUwOTY0XHUwOTY1XHUwOTcwXHUwZGY0XHUwZTRmXHUwZTVhXHUwZTViXHUwZjA0LVx1MGYxMlx1MGYzYS1cdTBmM2RcdTBmODVcdTBmZDAtXHUwZmQ0XHUwZmQ5XHUwZmRhXHUxMDRhLVx1MTA0Zlx1MTBmYlx1MTM2MS1cdTEzNjhcdTE0MDBcdTE2NmRcdTE2NmVcdTE2OWJcdTE2OWNcdTE2ZWItXHUxNmVkXHUxNzM1XHUxNzM2XHUxN2Q0LVx1MTdkNlx1MTdkOC1cdTE3ZGFcdTE4MDAtXHUxODBhXHUxOTQ0XHUxOTQ1XHUxYTFlXHUxYTFmXHUxYWEwLVx1MWFhNlx1MWFhOC1cdTFhYWRcdTFiNWEtXHUxYjYwXHUxYmZjLVx1MWJmZlx1MWMzYi1cdTFjM2ZcdTFjN2VcdTFjN2ZcdTFjZDNcdTIwMTAtXHUyMDI3XHUyMDMwLVx1MjA0M1x1MjA0NS1cdTIwNTFcdTIwNTMtXHUyMDVlXHUyMDdkXHUyMDdlXHUyMDhkXHUyMDhlXHUzMDA4XHUzMDA5XHUyNzY4LVx1Mjc3NVx1MjdjNVx1MjdjNlx1MjdlNi1cdTI3ZWZcdTI5ODMtXHUyOTk4XHUyOWQ4LVx1MjlkYlx1MjlmY1x1MjlmZFx1MmNmOS1cdTJjZmNcdTJjZmVcdTJjZmZcdTJkNzBcdTJlMDAtXHUyZTJlXHUyZTMwXHUyZTMxXHUzMDAxLVx1MzAwM1x1MzAwOC1cdTMwMTFcdTMwMTQtXHUzMDFmXHUzMDMwXHUzMDNkXHUzMGEwXHUzMGZiXHVhNGZlXHVhNGZmXHVhNjBkLVx1YTYwZlx1YTY3M1x1YTY3ZVx1YTZmMi1cdWE2ZjdcdWE4NzQtXHVhODc3XHVhOGNlXHVhOGNmXHVhOGY4LVx1YThmYVx1YTkyZVx1YTkyZlx1YTk1Zlx1YTljMS1cdWE5Y2RcdWE5ZGVcdWE5ZGZcdWFhNWMtXHVhYTVmXHVhYWRlXHVhYWRmXHVhYmViXHVmZDNlXHVmZDNmXHVmZTEwLVx1ZmUxOVx1ZmUzMC1cdWZlNTJcdWZlNTQtXHVmZTYxXHVmZTYzXHVmZTY4XHVmZTZhXHVmZTZiXHVmZjAxLVx1ZmYwM1x1ZmYwNS1cdWZmMGFcdWZmMGMtXHVmZjBmXHVmZjFhXHVmZjFiXHVmZjFmXHVmZjIwXHVmZjNiLVx1ZmYzZFx1ZmYzZlx1ZmY1Ylx1ZmY1ZFx1ZmY1Zi1cdWZmNjVdIixtPTAsRT0xLFc9Mix4PTMsUj00LGI9NSxTPTYsRj03LGo9OCxBPTksRD0xMCxUPTExLEI9MTIsaD0xMyxDPVtuZXcgUmVnRXhwKCJbQS1aYS16XHhhYVx4YjVceGJhXHhjMC1ceGQ2XHhkOC1ceGY2XHhmOC1cdTAyYzFcdTAyYzYtXHUwMmQxXHUwMmUwLVx1MDJlNFx1MDJlY1x1MDJlZVx1MDM3MC1cdTAzNzRcdTAzNzZcdTAzNzdcdTAzN2EtXHUwMzdkXHUwMzg2XHUwMzg4LVx1MDM4YVx1MDM4Y1x1MDM4ZS1cdTAzYTFcdTAzYTMtXHUwM2Y1XHUwM2Y3LVx1MDQ4MVx1MDQ4YS1cdTA1MjdcdTA1MzEtXHUwNTU2XHUwNTU5XHUwNTYxLVx1MDU4N1x1MDVkMC1cdTA1ZWFcdTA1ZjAtXHUwNWYzXHUwNjIwLVx1MDY0YVx1MDY2ZVx1MDY2Zlx1MDY3MS1cdTA2ZDNcdTA2ZDVcdTA2ZTVcdTA2ZTZcdTA2ZWVcdTA2ZWZcdTA2ZmEtXHUwNmZjXHUwNmZmXHUwNzEwXHUwNzEyLVx1MDcyZlx1MDc0ZC1cdTA3YTVcdTA3YjFcdTA3Y2EtXHUwN2VhXHUwN2Y0XHUwN2Y1XHUwN2ZhXHUwODAwLVx1MDgxNVx1MDgxYVx1MDgyNFx1MDgyOFx1MDg0MC1cdTA4NThcdTA5MDQtXHUwOTM5XHUwOTNkXHUwOTUwXHUwOTU4LVx1MDk2MVx1MDk3MS1cdTA5NzdcdTA5NzktXHUwOTdmXHUwOTg1LVx1MDk4Y1x1MDk4Zlx1MDk5MFx1MDk5My1cdTA5YThcdTA5YWEtXHUwOWIwXHUwOWIyXHUwOWI2LVx1MDliOVx1MDliZFx1MDljZVx1MDlkY1x1MDlkZFx1MDlkZi1cdTA5ZTFcdTA5ZjBcdTA5ZjFcdTBhMDUtXHUwYTBhXHUwYTBmXHUwYTEwXHUwYTEzLVx1MGEyOFx1MGEyYS1cdTBhMzBcdTBhMzJcdTBhMzNcdTBhMzVcdTBhMzZcdTBhMzhcdTBhMzlcdTBhNTktXHUwYTVjXHUwYTVlXHUwYTcyLVx1MGE3NFx1MGE4NS1cdTBhOGRcdTBhOGYtXHUwYTkxXHUwYTkzLVx1MGFhOFx1MGFhYS1cdTBhYjBcdTBhYjJcdTBhYjNcdTBhYjUtXHUwYWI5XHUwYWJkXHUwYWQwXHUwYWUwXHUwYWUxXHUwYjA1LVx1MGIwY1x1MGIwZlx1MGIxMFx1MGIxMy1cdTBiMjhcdTBiMmEtXHUwYjMwXHUwYjMyXHUwYjMzXHUwYjM1LVx1MGIzOVx1MGIzZFx1MGI1Y1x1MGI1ZFx1MGI1Zi1cdTBiNjFcdTBiNzFcdTBiODNcdTBiODUtXHUwYjhhXHUwYjhlLVx1MGI5MFx1MGI5Mi1cdTBiOTVcdTBiOTlcdTBiOWFcdTBiOWNcdTBiOWVcdTBiOWZcdTBiYTNcdTBiYTRcdTBiYTgtXHUwYmFhXHUwYmFlLVx1MGJiOVx1MGJkMFx1MGMwNS1cdTBjMGNcdTBjMGUtXHUwYzEwXHUwYzEyLVx1MGMyOFx1MGMyYS1cdTBjMzNcdTBjMzUtXHUwYzM5XHUwYzNkXHUwYzU4XHUwYzU5XHUwYzYwXHUwYzYxXHUwYzg1LVx1MGM4Y1x1MGM4ZS1cdTBjOTBcdTBjOTItXHUwY2E4XHUwY2FhLVx1MGNiM1x1MGNiNS1cdTBjYjlcdTBjYmRcdTBjZGVcdTBjZTBcdTBjZTFcdTBjZjFcdTBjZjJcdTBkMDUtXHUwZDBjXHUwZDBlLVx1MGQxMFx1MGQxMi1cdTBkM2FcdTBkM2RcdTBkNGVcdTBkNjBcdTBkNjFcdTBkN2EtXHUwZDdmXHUwZDg1LVx1MGQ5Nlx1MGQ5YS1cdTBkYjFcdTBkYjMtXHUwZGJiXHUwZGJkXHUwZGMwLVx1MGRjNlx1MGYwMFx1MGY0MC1cdTBmNDdcdTBmNDktXHUwZjZjXHUwZjg4LVx1MGY4Y1x1MTBhMC1cdTEwYzVcdTEwZDAtXHUxMGZhXHUxMGZjXHUxMTAwLVx1MTI0OFx1MTI0YS1cdTEyNGRcdTEyNTAtXHUxMjU2XHUxMjU4XHUxMjVhLVx1MTI1ZFx1MTI2MC1cdTEyODhcdTEyOGEtXHUxMjhkXHUxMjkwLVx1MTJiMFx1MTJiMi1cdTEyYjVcdTEyYjgtXHUxMmJlXHUxMmMwXHUxMmMyLVx1MTJjNVx1MTJjOC1cdTEyZDZcdTEyZDgtXHUxMzEwXHUxMzEyLVx1MTMxNVx1MTMxOC1cdTEzNWFcdTEzODAtXHUxMzhmXHUxM2EwLVx1MTNmNFx1MTQwMS1cdTE2NmNcdTE2NmYtXHUxNjdmXHUxNjgxLVx1MTY5YVx1MTZhMC1cdTE2ZWFcdTE2ZWUtXHUxNmYwXHUxNzAwLVx1MTcwY1x1MTcwZS1cdTE3MTFcdTE3MjAtXHUxNzMxXHUxNzQwLVx1MTc1MVx1MTc2MC1cdTE3NmNcdTE3NmUtXHUxNzcwXHUxODIwLVx1MTg3N1x1MTg4MC1cdTE4YThcdTE4YWFcdTE4YjAtXHUxOGY1XHUxOTAwLVx1MTkxY1x1MWEwMC1cdTFhMTZcdTFiMDUtXHUxYjMzXHUxYjQ1LVx1MWI0Ylx1MWI4My1cdTFiYTBcdTFiYWVcdTFiYWZcdTFiYzAtXHUxYmU1XHUxYzAwLVx1MWMyM1x1MWM0ZC1cdTFjNGZcdTFjNWEtXHUxYzdkXHUxY2U5LVx1MWNlY1x1MWNlZS1cdTFjZjFcdTFkMDAtXHUxZGJmXHUxZTAwLVx1MWYxNVx1MWYxOC1cdTFmMWRcdTFmMjAtXHUxZjQ1XHUxZjQ4LVx1MWY0ZFx1MWY1MC1cdTFmNTdcdTFmNTlcdTFmNWJcdTFmNWRcdTFmNWYtXHUxZjdkXHUxZjgwLVx1MWZiNFx1MWZiNi1cdTFmYmNcdTFmYmVcdTFmYzItXHUxZmM0XHUxZmM2LVx1MWZjY1x1MWZkMC1cdTFmZDNcdTFmZDYtXHUxZmRiXHUxZmUwLVx1MWZlY1x1MWZmMi1cdTFmZjRcdTFmZjYtXHUxZmZjXHUyMDcxXHUyMDdmXHUyMDkwLVx1MjA5Y1x1MjEwMlx1MjEwN1x1MjEwYS1cdTIxMTNcdTIxMTVcdTIxMTktXHUyMTFkXHUyMTI0XHUyMTI2XHUyMTI4XHUyMTJhLVx1MjEyZFx1MjEyZi1cdTIxMzlcdTIxM2MtXHUyMTNmXHUyMTQ1LVx1MjE0OVx1MjE0ZVx1MjE2MC1cdTIxODhcdTI0YjYtXHUyNGU5XHUyYzAwLVx1MmMyZVx1MmMzMC1cdTJjNWVcdTJjNjAtXHUyY2U0XHUyY2ViLVx1MmNlZVx1MmQwMC1cdTJkMjVcdTJkMzAtXHUyZDY1XHUyZDZmXHUyZDgwLVx1MmQ5Nlx1MmRhMC1cdTJkYTZcdTJkYTgtXHUyZGFlXHUyZGIwLVx1MmRiNlx1MmRiOC1cdTJkYmVcdTJkYzAtXHUyZGM2XHUyZGM4LVx1MmRjZVx1MmRkMC1cdTJkZDZcdTJkZDgtXHUyZGRlXHUyZTJmXHUzMDA1XHUzMDNiXHUzMDNjXHUzMTA1LVx1MzEyZFx1MzEzMS1cdTMxOGVcdTMxYTAtXHUzMWJhXHVhMDAwLVx1YTQ4Y1x1YTRkMC1cdWE0ZmRcdWE1MDAtXHVhNjBjXHVhNjEwLVx1YTYxZlx1YTYyYVx1YTYyYlx1YTY0MC1cdWE2NmVcdWE2N2YtXHVhNjk3XHVhNmEwLVx1YTZlZlx1YTcxNy1cdWE3MWZcdWE3MjItXHVhNzg4XHVhNzhiLVx1YTc4ZVx1YTc5MFx1YTc5MVx1YTdhMC1cdWE3YTlcdWE3ZmEtXHVhODAxXHVhODAzLVx1YTgwNVx1YTgwNy1cdWE4MGFcdWE4MGMtXHVhODIyXHVhODQwLVx1YTg3M1x1YTg4Mi1cdWE4YjNcdWE4ZjItXHVhOGY3XHVhOGZiXHVhOTBhLVx1YTkyNVx1YTkzMC1cdWE5NDZcdWE5NjAtXHVhOTdjXHVhOTg0LVx1YTliMlx1YTljZlx1YWEwMC1cdWFhMjhcdWFhNDAtXHVhYTQyXHVhYTQ0LVx1YWE0Ylx1YWIwMS1cdWFiMDZcdWFiMDktXHVhYjBlXHVhYjExLVx1YWIxNlx1YWIyMC1cdWFiMjZcdWFiMjgtXHVhYjJlXHVhYmMwLVx1YWJlMlx1YWMwMC1cdWQ3YTNcdWQ3YjAtXHVkN2M2XHVkN2NiLVx1ZDdmYlx1ZmIwMC1cdWZiMDZcdWZiMTMtXHVmYjE3XHVmYjFkXHVmYjFmLVx1ZmIyOFx1ZmIyYS1cdWZiMzZcdWZiMzgtXHVmYjNjXHVmYjNlXHVmYjQwXHVmYjQxXHVmYjQzXHVmYjQ0XHVmYjQ2LVx1ZmJiMVx1ZmJkMy1cdWZkM2RcdWZkNTAtXHVmZDhmXHVmZDkyLVx1ZmRjN1x1ZmRmMC1cdWZkZmJcdWZlNzAtXHVmZTc0XHVmZTc2LVx1ZmVmY1x1ZmYyMS1cdWZmM2FcdWZmNDEtXHVmZjVhXHVmZmEwLVx1ZmZiZVx1ZmZjMi1cdWZmYzdcdWZmY2EtXHVmZmNmXHVmZmQyLVx1ZmZkN1x1ZmZkYS1cdWZmZGNdIiksbmV3IFJlZ0V4cChlKSxuZXcgUmVnRXhwKG4pLG5ldyBSZWdFeHAobyksbmV3IFJlZ0V4cCh1KSxuZXcgUmVnRXhwKGMpLG5ldyBSZWdFeHAoYSksbmV3IFJlZ0V4cChzKSxuZXcgUmVnRXhwKGcpLG5ldyBSZWdFeHAobCksbmV3IFJlZ0V4cChwKSxuZXcgUmVnRXhwKGQpLG5ldyBSZWdFeHAoIkAiKV0seT1uZXcgUmVnRXhwKCJeIitmKyIkIiksdj1DLHc9aCxrPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT13LG49di5sZW5ndGgscj0wO3I8bjsrK3Ipe3ZhciBvPXZbcl07aWYobyYmby50ZXN0KHQpKXtlPXI7YnJlYWt9fXJldHVybiBlfSxQPWZ1bmN0aW9uKHQpe3ZhciBuLHI7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQubGVuZ3RoLHI9bmV3IEFycmF5KG4pLG89MDtvPG47bysrKXt2YXIgdT10W29dO3Jbb109ZSh1LG8pfXJldHVybiByfSh0LChuPWsscj17fSxmdW5jdGlvbih0KXtpZihyW3RdKXJldHVybiByW3RdO3ZhciBlPW4odCk7cmV0dXJuIHJbdF09ZX0pKX0sTT0vXlxzKyQvLE89eSxVPWZ1bmN0aW9uKHQsZSl7dmFyIG49ZnVuY3Rpb24odCxlKXt2YXIgbjtmb3Iobj1lO248dC5sZW5ndGgmJiFNLnRlc3QodFtuXSk7bisrKTtyZXR1cm4gbn0odCxlKzEpO3JldHVybiI6Ly8iPT09dC5zbGljZShlKzEsbikuam9pbigiIikuc3Vic3RyKDAsMyk/bjplfSxfPWZ1bmN0aW9uKHQsZSxuKXtuPWkoaSh7fSx7aW5jbHVkZVdoaXRlc3BhY2U6ITEsaW5jbHVkZVB1bmN0dWF0aW9uOiExfSksbik7Zm9yKHZhciByPVtdLG89W10sdT0wO3U8dC5sZW5ndGg7dSsrKXt2YXIgYz1lKHRbdV0pOyJcdWZlZmYiIT09YyYmKHIucHVzaCh0W3VdKSxvLnB1c2goYykpfXJldHVybiBmdW5jdGlvbih0LGUsbixyKXtmb3IodmFyIG8sdSxjLGksYSxzLGcsbD1bXSxwPVtdLGQ9MDtkPG4ubGVuZ3RoOysrZClpZihwLnB1c2godFtkXSksYT1pPXZvaWQgMCxzPSh1PW4pW2M9ZF0sZz11W2MrMV0sIShjPDB8fGM+dS5sZW5ndGgtMSYmMCE9PWN8fHM9PT1tJiZnPT09bXx8KGE9dVtjKzJdLHM9PT1tJiYoZz09PVd8fGc9PT1FfHxnPT09QikmJmE9PT1tfHwoaT11W2MtMV0sKHM9PT1XfHxzPT09RXx8Zz09PUIpJiZnPT09bSYmaT09PW18fCEocyE9PVImJnMhPT1tfHxnIT09UiYmZyE9PW0pfHwocz09PXh8fHM9PT1FKSYmZz09PVImJmk9PT1SfHxzPT09UiYmKGc9PT14fHxnPT09RSkmJmE9PT1SfHxzPT09anx8cz09PUF8fGk9PT1qfHxpPT09QXx8Zz09PWp8fGc9PT1BfHxzPT09YiYmZz09PVN8fHMhPT1GJiZzIT09YiYmcyE9PVMmJmchPT1GJiZnIT09YiYmZyE9PVMmJihzPT09RCYmZz09PUR8fGc9PT1UJiYocz09PW18fHM9PT1SfHxzPT09RHx8cz09PVQpfHxzPT09VCYmKGc9PT1tfHxnPT09Unx8Zz09PUQpfHxzPT09QikpKSkpe3ZhciBmPWVbZF07aWYoKHIuaW5jbHVkZVdoaXRlc3BhY2V8fCFNLnRlc3QoZikpJiYoci5pbmNsdWRlUHVuY3R1YXRpb258fCFPLnRlc3QoZikpKXt2YXIgaD1kLXAubGVuZ3RoKzEsQz1kKzEseT1lLnNsaWNlKGgsQykuam9pbigiIik7aWYoImh0dHAiPT09KG89eSl8fCJodHRwcyI9PT1vKXt2YXIgdj1VKGUsZCksdz10LnNsaWNlKEMsdik7QXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkocCx3KSxkPXZ9bC5wdXNoKHApfXA9W119cmV0dXJuIGx9KHIsbyxQKG8pLG4pfSxOPXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLmRvbS5UcmVlV2Fsa2VyIiksJD1mdW5jdGlvbih0LGUpe2Zvcih2YXIgbixyPWUuZ2V0QmxvY2tFbGVtZW50cygpLG89ZS5nZXRTaG9ydEVuZGVkRWxlbWVudHMoKSx1PVtdLGM9IiIsaT1uZXcgTih0LHQpO3Q9aS5uZXh0KCk7KTM9PT10Lm5vZGVUeXBlP2MrPXQuZGF0YS5yZXBsYWNlKC9cdUZFRkYvZywiIik6KHJbKG49dCkubm9kZU5hbWVdfHxvW24ubm9kZU5hbWVdKSYmYy5sZW5ndGgmJih1LnB1c2goYyksYz0iIik7cmV0dXJuIGMubGVuZ3RoJiZ1LnB1c2goYyksdX0sej1mdW5jdGlvbih0KXtyZXR1cm4gdC5yZXBsYWNlKC9bXHVEODAwLVx1REJGRl1bXHVEQzAwLVx1REZGRl0vZywiXyIpLmxlbmd0aH0sST1mdW5jdGlvbih0LGUpe3ZhciBuPSQodCxlKS5qb2luKCJcbiIpO3JldHVybiBfKG4uc3BsaXQoIiIpLHIpLmxlbmd0aH0sWj1mdW5jdGlvbih0LGUpe3ZhciBuPSQodCxlKS5qb2luKCIiKTtyZXR1cm4geihuKX0scT1mdW5jdGlvbih0LGUpe3ZhciBuPSQodCxlKS5qb2luKCIiKS5yZXBsYWNlKC9ccy9nLCIiKTtyZXR1cm4geihuKX0sRz1mdW5jdGlvbih0LGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlKHQuZ2V0Qm9keSgpLHQuc2NoZW1hKX19LEg9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZSh0LnNlbGVjdGlvbi5nZXRSbmcoKS5jbG9uZUNvbnRlbnRzKCksdC5zY2hlbWEpfX0sSj1mdW5jdGlvbih0KXtyZXR1cm4gRyh0LEkpfSxLPXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLnV0aWwuRGVsYXkiKSxMPWZ1bmN0aW9uKHQsZSl7dmFyIG47bj1lLHQuZmlyZSgid29yZENvdW50VXBkYXRlIix7d29yZENvdW50Ont3b3JkczpuLmJvZHkuZ2V0V29yZENvdW50KCksY2hhcmFjdGVyczpuLmJvZHkuZ2V0Q2hhcmFjdGVyQ291bnQoKSxjaGFyYWN0ZXJzV2l0aG91dFNwYWNlczpuLmJvZHkuZ2V0Q2hhcmFjdGVyQ291bnRXaXRob3V0U3BhY2VzKCl9fSl9LFE9ZnVuY3Rpb24odCxlKXt0LndpbmRvd01hbmFnZXIub3Blbih7dGl0bGU6IldvcmQgQ291bnQiLGJvZHk6e3R5cGU6InBhbmVsIixpdGVtczpbe3R5cGU6InRhYmxlIixoZWFkZXI6WyJDb3VudCIsIkRvY3VtZW50IiwiU2VsZWN0aW9uIl0sY2VsbHM6W1siV29yZHMiLFN0cmluZyhlLmJvZHkuZ2V0V29yZENvdW50KCkpLFN0cmluZyhlLnNlbGVjdGlvbi5nZXRXb3JkQ291bnQoKSldLFsiQ2hhcmFjdGVycyAobm8gc3BhY2VzKSIsU3RyaW5nKGUuYm9keS5nZXRDaGFyYWN0ZXJDb3VudFdpdGhvdXRTcGFjZXMoKSksU3RyaW5nKGUuc2VsZWN0aW9uLmdldENoYXJhY3RlckNvdW50V2l0aG91dFNwYWNlcygpKV0sWyJDaGFyYWN0ZXJzIixTdHJpbmcoZS5ib2R5LmdldENoYXJhY3RlckNvdW50KCkpLFN0cmluZyhlLnNlbGVjdGlvbi5nZXRDaGFyYWN0ZXJDb3VudCgpKV1dfV19LGJ1dHRvbnM6W3t0eXBlOiJjYW5jZWwiLG5hbWU6ImNsb3NlIix0ZXh0OiJDbG9zZSIscHJpbWFyeTohMH1dfSl9OyFmdW5jdGlvbiBWKHMpe3ZvaWQgMD09PXMmJihzPTMwMCksdC5hZGQoIndvcmRjb3VudCIsZnVuY3Rpb24odCl7dmFyIGUsbixyLG8sdSxjLGksYT17Ym9keTp7Z2V0V29yZENvdW50OkooZT10KSxnZXRDaGFyYWN0ZXJDb3VudDpHKGUsWiksZ2V0Q2hhcmFjdGVyQ291bnRXaXRob3V0U3BhY2VzOkcoZSxxKX0sc2VsZWN0aW9uOntnZXRXb3JkQ291bnQ6SChlLEkpLGdldENoYXJhY3RlckNvdW50OkgoZSxaKSxnZXRDaGFyYWN0ZXJDb3VudFdpdGhvdXRTcGFjZXM6SChlLHEpfSxnZXRDb3VudDpKKGUpfTtyZXR1cm4gcj1hLChuPXQpLnVpLnJlZ2lzdHJ5LmFkZEJ1dHRvbigid29yZGNvdW50Iix7dG9vbHRpcDoiV29yZCBjb3VudCIsaWNvbjoiY2hhcmFjdGVyLWNvdW50IixvbkFjdGlvbjpmdW5jdGlvbigpe3JldHVybiBRKG4scil9fSksbi51aS5yZWdpc3RyeS5hZGRNZW51SXRlbSgid29yZGNvdW50Iix7dGV4dDoiV29yZCBjb3VudCIsaWNvbjoiY2hhcmFjdGVyLWNvdW50IixvbkFjdGlvbjpmdW5jdGlvbigpe3JldHVybiBRKG4scil9fSksbz10LHU9YSxjPXMsaT1LLmRlYm91bmNlKGZ1bmN0aW9uKCl7cmV0dXJuIEwobyx1KX0sYyksby5vbigiaW5pdCIsZnVuY3Rpb24oKXtMKG8sdSksSy5zZXRFZGl0b3JUaW1lb3V0KG8sZnVuY3Rpb24oKXtvLm9uKCJTZXRDb250ZW50IEJlZm9yZUFkZFVuZG8gVW5kbyBSZWRvIGtleXVwIixpKX0sMCl9KSxhfSl9KCl9KCk7]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/skins/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/skins/content/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/skins/content/dark/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/skins/content/dark/content.min.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICovCmJvZHl7YmFja2dyb3VuZC1jb2xvcjojMmYzNzQyO2NvbG9yOiNkZmUwZTQ7Zm9udC1mYW1pbHk6LWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsJ1NlZ29lIFVJJyxSb2JvdG8sT3h5Z2VuLFVidW50dSxDYW50YXJlbGwsJ09wZW4gU2FucycsJ0hlbHZldGljYSBOZXVlJyxzYW5zLXNlcmlmO2xpbmUtaGVpZ2h0OjEuNDttYXJnaW46MXJlbX1he2NvbG9yOiM0MDk5ZmZ9dGFibGV7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlfXRhYmxlIHRkLHRhYmxlIHRoe2JvcmRlcjoxcHggc29saWQgIzZkNzM3YjtwYWRkaW5nOi40cmVtfWZpZ3VyZXtkaXNwbGF5OnRhYmxlO21hcmdpbjoxcmVtIGF1dG99ZmlndXJlIGZpZ2NhcHRpb257Y29sb3I6IzhhOGY5NztkaXNwbGF5OmJsb2NrO21hcmdpbi10b3A6LjI1cmVtO3RleHQtYWxpZ246Y2VudGVyfWhye2JvcmRlci1jb2xvcjojNmQ3MzdiO2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6MXB4IDAgMCAwfWNvZGV7YmFja2dyb3VuZC1jb2xvcjojNmQ3MzdiO2JvcmRlci1yYWRpdXM6M3B4O3BhZGRpbmc6LjFyZW0gLjJyZW19dGRbZGF0YS1tY2Utc2VsZWN0ZWRdLHRoW2RhdGEtbWNlLXNlbGVjdGVkXXtjb2xvcjojMzMzfS5tY2UtY29udGVudC1ib2R5Om5vdChbZGlyPXJ0bF0pIGJsb2NrcXVvdGV7Ym9yZGVyLWxlZnQ6MnB4IHNvbGlkICM2ZDczN2I7bWFyZ2luLWxlZnQ6MS41cmVtO3BhZGRpbmctbGVmdDoxcmVtfS5tY2UtY29udGVudC1ib2R5W2Rpcj1ydGxdIGJsb2NrcXVvdGV7Ym9yZGVyLXJpZ2h0OjJweCBzb2xpZCAjNmQ3MzdiO21hcmdpbi1yaWdodDoxLjVyZW07cGFkZGluZy1yaWdodDoxcmVtfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/skins/content/default/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/skins/content/default/content.min.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICovCmJvZHl7Zm9udC1mYW1pbHk6LWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsJ1NlZ29lIFVJJyxSb2JvdG8sT3h5Z2VuLFVidW50dSxDYW50YXJlbGwsJ09wZW4gU2FucycsJ0hlbHZldGljYSBOZXVlJyxzYW5zLXNlcmlmO2xpbmUtaGVpZ2h0OjEuNDttYXJnaW46MXJlbX10YWJsZXtib3JkZXItY29sbGFwc2U6Y29sbGFwc2V9dGFibGUgdGQsdGFibGUgdGh7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO3BhZGRpbmc6LjRyZW19ZmlndXJle2Rpc3BsYXk6dGFibGU7bWFyZ2luOjFyZW0gYXV0b31maWd1cmUgZmlnY2FwdGlvbntjb2xvcjojOTk5O2Rpc3BsYXk6YmxvY2s7bWFyZ2luLXRvcDouMjVyZW07dGV4dC1hbGlnbjpjZW50ZXJ9aHJ7Ym9yZGVyLWNvbG9yOiNjY2M7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDoxcHggMCAwIDB9Y29kZXtiYWNrZ3JvdW5kLWNvbG9yOiNlOGU4ZTg7Ym9yZGVyLXJhZGl1czozcHg7cGFkZGluZzouMXJlbSAuMnJlbX0ubWNlLWNvbnRlbnQtYm9keTpub3QoW2Rpcj1ydGxdKSBibG9ja3F1b3Rle2JvcmRlci1sZWZ0OjJweCBzb2xpZCAjY2NjO21hcmdpbi1sZWZ0OjEuNXJlbTtwYWRkaW5nLWxlZnQ6MXJlbX0ubWNlLWNvbnRlbnQtYm9keVtkaXI9cnRsXSBibG9ja3F1b3Rle2JvcmRlci1yaWdodDoycHggc29saWQgI2NjYzttYXJnaW4tcmlnaHQ6MS41cmVtO3BhZGRpbmctcmlnaHQ6MXJlbX0K]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/skins/content/document/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/skins/content/document/content.min.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICovCkBtZWRpYSBzY3JlZW57aHRtbHtiYWNrZ3JvdW5kOiNmNGY0ZjQ7bWluLWhlaWdodDoxMDAlfX1ib2R5e2ZvbnQtZmFtaWx5Oi1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCdTZWdvZSBVSScsUm9ib3RvLE94eWdlbixVYnVudHUsQ2FudGFyZWxsLCdPcGVuIFNhbnMnLCdIZWx2ZXRpY2EgTmV1ZScsc2Fucy1zZXJpZn1AbWVkaWEgc2NyZWVue2JvZHl7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JveC1zaGFkb3c6MCAwIDRweCByZ2JhKDAsMCwwLC4xNSk7Ym94LXNpemluZzpib3JkZXItYm94O21hcmdpbjoxcmVtIGF1dG8gMDttYXgtd2lkdGg6ODIwcHg7bWluLWhlaWdodDpjYWxjKDEwMHZoIC0gMXJlbSk7cGFkZGluZzo0cmVtIDZyZW0gNnJlbSA2cmVtfX10YWJsZXtib3JkZXItY29sbGFwc2U6Y29sbGFwc2V9dGFibGUgdGQsdGFibGUgdGh7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO3BhZGRpbmc6LjRyZW19ZmlndXJlIGZpZ2NhcHRpb257Y29sb3I6Izk5OTttYXJnaW4tdG9wOi4yNXJlbTt0ZXh0LWFsaWduOmNlbnRlcn1ocntib3JkZXItY29sb3I6I2NjYztib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOjFweCAwIDAgMH0ubWNlLWNvbnRlbnQtYm9keTpub3QoW2Rpcj1ydGxdKSBibG9ja3F1b3Rle2JvcmRlci1sZWZ0OjJweCBzb2xpZCAjY2NjO21hcmdpbi1sZWZ0OjEuNXJlbTtwYWRkaW5nLWxlZnQ6MXJlbX0ubWNlLWNvbnRlbnQtYm9keVtkaXI9cnRsXSBibG9ja3F1b3Rle2JvcmRlci1yaWdodDoycHggc29saWQgI2NjYzttYXJnaW4tcmlnaHQ6MS41cmVtO3BhZGRpbmctcmlnaHQ6MXJlbX0K]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/skins/content/writer/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/skins/content/writer/content.min.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICovCmJvZHl7Zm9udC1mYW1pbHk6LWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsJ1NlZ29lIFVJJyxSb2JvdG8sT3h5Z2VuLFVidW50dSxDYW50YXJlbGwsJ09wZW4gU2FucycsJ0hlbHZldGljYSBOZXVlJyxzYW5zLXNlcmlmO2xpbmUtaGVpZ2h0OjEuNDttYXJnaW46MXJlbSBhdXRvO21heC13aWR0aDo5MDBweH10YWJsZXtib3JkZXItY29sbGFwc2U6Y29sbGFwc2V9dGFibGUgdGQsdGFibGUgdGh7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO3BhZGRpbmc6LjRyZW19ZmlndXJle2Rpc3BsYXk6dGFibGU7bWFyZ2luOjFyZW0gYXV0b31maWd1cmUgZmlnY2FwdGlvbntjb2xvcjojOTk5O2Rpc3BsYXk6YmxvY2s7bWFyZ2luLXRvcDouMjVyZW07dGV4dC1hbGlnbjpjZW50ZXJ9aHJ7Ym9yZGVyLWNvbG9yOiNjY2M7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDoxcHggMCAwIDB9Y29kZXtiYWNrZ3JvdW5kLWNvbG9yOiNlOGU4ZTg7Ym9yZGVyLXJhZGl1czozcHg7cGFkZGluZzouMXJlbSAuMnJlbX0ubWNlLWNvbnRlbnQtYm9keTpub3QoW2Rpcj1ydGxdKSBibG9ja3F1b3Rle2JvcmRlci1sZWZ0OjJweCBzb2xpZCAjY2NjO21hcmdpbi1sZWZ0OjEuNXJlbTtwYWRkaW5nLWxlZnQ6MXJlbX0ubWNlLWNvbnRlbnQtYm9keVtkaXI9cnRsXSBibG9ja3F1b3Rle2JvcmRlci1yaWdodDoycHggc29saWQgI2NjYzttYXJnaW4tcmlnaHQ6MS41cmVtO3BhZGRpbmctcmlnaHQ6MXJlbX0K]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/skins/ui/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/skins/ui/oxide-dark/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/skins/ui/oxide-dark/content.inline.min.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICovCi5tY2UtY29udGVudC1ib2R5IC5tY2UtaXRlbS1hbmNob3J7YmFja2dyb3VuZDp0cmFuc3BhcmVudCB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVURi04LCUzQ3N2ZyUyMHdpZHRoJTNEJzgnJTIwaGVpZ2h0JTNEJzEyJyUyMHhtbG5zJTNEJ2h0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyclM0UlM0NwYXRoJTIwZCUzRCdNMCUyMDBMOCUyMDAlMjA4JTIwMTIlMjA0LjA5MTE3ODIxJTIwOSUyMDAlMjAxMnonJTJGJTNFJTNDJTJGc3ZnJTNFJTBBIikgbm8tcmVwZWF0IGNlbnRlcjtjdXJzb3I6ZGVmYXVsdDtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MTJweCFpbXBvcnRhbnQ7cGFkZGluZzowIDJweDstd2Via2l0LXVzZXItbW9kaWZ5OnJlYWQtb25seTstbW96LXVzZXItbW9kaWZ5OnJlYWQtb25seTstd2Via2l0LXVzZXItc2VsZWN0OmFsbDstbW96LXVzZXItc2VsZWN0OmFsbDstbXMtdXNlci1zZWxlY3Q6YWxsO3VzZXItc2VsZWN0OmFsbDt3aWR0aDo4cHghaW1wb3J0YW50fS5tY2UtY29udGVudC1ib2R5IC5tY2UtaXRlbS1hbmNob3JbZGF0YS1tY2Utc2VsZWN0ZWRde291dGxpbmUtb2Zmc2V0OjFweH0udG94LWNvbW1lbnRzLXZpc2libGUgLnRveC1jb21tZW50e2JhY2tncm91bmQtY29sb3I6I2ZmZjBiN30udG94LWNvbW1lbnRzLXZpc2libGUgLnRveC1jb21tZW50LS1hY3RpdmV7YmFja2dyb3VuZC1jb2xvcjojZmZlMTY4fS50b3gtY2hlY2tsaXN0PmxpOm5vdCgudG94LWNoZWNrbGlzdC0taGlkZGVuKXtsaXN0LXN0eWxlOm5vbmU7bWFyZ2luOi4yNWVtIDB9LnRveC1jaGVja2xpc3Q+bGk6bm90KC50b3gtY2hlY2tsaXN0LS1oaWRkZW4pOjpiZWZvcmV7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVURi04LCUzQ3N2ZyUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTIwd2lkdGglM0QlMjIxNiUyMiUyMGhlaWdodCUzRCUyMjE2JTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTYlMjAxNiUyMiUzRSUzQ2clMjBpZCUzRCUyMmNoZWNrbGlzdC11bmNoZWNrZWQlMjIlMjBmaWxsJTNEJTIybm9uZSUyMiUyMGZpbGwtcnVsZSUzRCUyMmV2ZW5vZGQlMjIlM0UlM0NyZWN0JTIwaWQlM0QlMjJSZWN0YW5nbGUlMjIlMjB3aWR0aCUzRCUyMjE1JTIyJTIwaGVpZ2h0JTNEJTIyMTUlMjIlMjB4JTNEJTIyLjUlMjIlMjB5JTNEJTIyLjUlMjIlMjBmaWxsLXJ1bGUlM0QlMjJub256ZXJvJTIyJTIwc3Ryb2tlJTNEJTIyJTIzNEM0QzRDJTIyJTIwcnglM0QlMjIyJTIyJTJGJTNFJTNDJTJGZyUzRSUzQyUyRnN2ZyUzRSUwQSIpO2JhY2tncm91bmQtc2l6ZToxMDAlO2NvbnRlbnQ6Jyc7Y3Vyc29yOnBvaW50ZXI7aGVpZ2h0OjFlbTttYXJnaW4tbGVmdDotMS41ZW07bWFyZ2luLXRvcDouMTI1ZW07cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MWVtfS50b3gtY2hlY2tsaXN0IGxpOm5vdCgudG94LWNoZWNrbGlzdC0taGlkZGVuKS50b3gtY2hlY2tsaXN0LS1jaGVja2VkOjpiZWZvcmV7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVURi04LCUzQ3N2ZyUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTIwd2lkdGglM0QlMjIxNiUyMiUyMGhlaWdodCUzRCUyMjE2JTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTYlMjAxNiUyMiUzRSUzQ2clMjBpZCUzRCUyMmNoZWNrbGlzdC1jaGVja2VkJTIyJTIwZmlsbCUzRCUyMm5vbmUlMjIlMjBmaWxsLXJ1bGUlM0QlMjJldmVub2RkJTIyJTNFJTNDcmVjdCUyMGlkJTNEJTIyUmVjdGFuZ2xlJTIyJTIwd2lkdGglM0QlMjIxNiUyMiUyMGhlaWdodCUzRCUyMjE2JTIyJTIwZmlsbCUzRCUyMiUyMzQwOTlGRiUyMiUyMGZpbGwtcnVsZSUzRCUyMm5vbnplcm8lMjIlMjByeCUzRCUyMjIlMjIlMkYlM0UlM0NwYXRoJTIwaWQlM0QlMjJQYXRoJTIyJTIwZmlsbCUzRCUyMiUyM0ZGRiUyMiUyMGZpbGwtcnVsZSUzRCUyMm5vbnplcm8lMjIlMjBkJTNEJTIyTTExLjU3MDMxODYlMkMzLjE0NDE3MzA5JTIwQzExLjg1MTYyMzglMkMyLjczNzI0NjAzJTIwMTIuNDE2NDc4MSUyQzIuNjI4Mjk5MzMlMjAxMi44MzU1OCUyQzIuODk3NzQ3OTclMjBDMTMuMjYwMTIxJTJDMy4xNzA2OTM1NSUyMDEzLjM3NTk3MzYlMkMzLjcyOTMyMjYyJTIwMTMuMDkwOTEwNSUyQzQuMTQxNjg1ODIlMjBMNy43NTgwNTg3JTJDMTEuODU2MDE5NSUyMEM3LjQzNzc2ODk2JTJDMTIuMzE5MzQwNCUyMDYuNzY0ODM5ODMlMkMxMi4zODUyMTQyJTIwNi4zNTYwNzMyMiUyQzExLjk5NDg3MjUlMjBMMy4wMjQ5MTY5NyUyQzguODEzODY2MiUyMEMyLjY2MDkwMTQzJTJDOC40NjYyNTg0NSUyMDIuNjU3OTg4NzElMkM3Ljg5NTk0Njk4JTIwMy4wMTg1MDIzNCUyQzcuNTQ0ODMzNTQlMjBDMy4zNzM5NDIlMkM3LjE5ODY2MTc3JTIwMy45NDk0MDAwNiUyQzcuMTk1OTI4NDElMjA0LjMwODI5NjA4JTJDNy41Mzg2NDc0JTIwTDYuODUyNzY5MjMlMkM5Ljk2ODQyOTklMjBMMTEuNTcwMzE4NiUyQzMuMTQ0MTczMDklMjBaJTIyJTJGJTNFJTNDJTJGZyUzRSUzQyUyRnN2ZyUzRSUwQSIpfVtkaXI9cnRsXSAudG94LWNoZWNrbGlzdD5saTpub3QoLnRveC1jaGVja2xpc3QtLWhpZGRlbik6OmJlZm9yZXttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDotMS41ZW19Y29kZVtjbGFzcyo9bGFuZ3VhZ2UtXSxwcmVbY2xhc3MqPWxhbmd1YWdlLV17Y29sb3I6IzAwMDtiYWNrZ3JvdW5kOjAgMDt0ZXh0LXNoYWRvdzowIDFweCAjZmZmO2ZvbnQtZmFtaWx5OkNvbnNvbGFzLE1vbmFjbywnQW5kYWxlIE1vbm8nLCdVYnVudHUgTW9ubycsbW9ub3NwYWNlO2ZvbnQtc2l6ZToxZW07dGV4dC1hbGlnbjpsZWZ0O3doaXRlLXNwYWNlOnByZTt3b3JkLXNwYWNpbmc6bm9ybWFsO3dvcmQtYnJlYWs6bm9ybWFsO3dvcmQtd3JhcDpub3JtYWw7bGluZS1oZWlnaHQ6MS41Oy1tb3otdGFiLXNpemU6NDt0YWItc2l6ZTo0Oy13ZWJraXQtaHlwaGVuczpub25lOy1tcy1oeXBoZW5zOm5vbmU7aHlwaGVuczpub25lfWNvZGVbY2xhc3MqPWxhbmd1YWdlLV0gOjotbW96LXNlbGVjdGlvbixjb2RlW2NsYXNzKj1sYW5ndWFnZS1dOjotbW96LXNlbGVjdGlvbixwcmVbY2xhc3MqPWxhbmd1YWdlLV0gOjotbW96LXNlbGVjdGlvbixwcmVbY2xhc3MqPWxhbmd1YWdlLV06Oi1tb3otc2VsZWN0aW9ue3RleHQtc2hhZG93Om5vbmU7YmFja2dyb3VuZDojYjNkNGZjfWNvZGVbY2xhc3MqPWxhbmd1YWdlLV0gOjpzZWxlY3Rpb24sY29kZVtjbGFzcyo9bGFuZ3VhZ2UtXTo6c2VsZWN0aW9uLHByZVtjbGFzcyo9bGFuZ3VhZ2UtXSA6OnNlbGVjdGlvbixwcmVbY2xhc3MqPWxhbmd1YWdlLV06OnNlbGVjdGlvbnt0ZXh0LXNoYWRvdzpub25lO2JhY2tncm91bmQ6I2IzZDRmY31AbWVkaWEgcHJpbnR7Y29kZVtjbGFzcyo9bGFuZ3VhZ2UtXSxwcmVbY2xhc3MqPWxhbmd1YWdlLV17dGV4dC1zaGFkb3c6bm9uZX19cHJlW2NsYXNzKj1sYW5ndWFnZS1de3BhZGRpbmc6MWVtO21hcmdpbjouNWVtIDA7b3ZlcmZsb3c6YXV0b306bm90KHByZSk+Y29kZVtjbGFzcyo9bGFuZ3VhZ2UtXSxwcmVbY2xhc3MqPWxhbmd1YWdlLV17YmFja2dyb3VuZDojZjVmMmYwfTpub3QocHJlKT5jb2RlW2NsYXNzKj1sYW5ndWFnZS1de3BhZGRpbmc6LjFlbTtib3JkZXItcmFkaXVzOi4zZW07d2hpdGUtc3BhY2U6bm9ybWFsfS50b2tlbi5jZGF0YSwudG9rZW4uY29tbWVudCwudG9rZW4uZG9jdHlwZSwudG9rZW4ucHJvbG9ne2NvbG9yOiM3MDgwOTB9LnRva2VuLnB1bmN0dWF0aW9ue2NvbG9yOiM5OTl9Lm5hbWVzcGFjZXtvcGFjaXR5Oi43fS50b2tlbi5ib29sZWFuLC50b2tlbi5jb25zdGFudCwudG9rZW4uZGVsZXRlZCwudG9rZW4ubnVtYmVyLC50b2tlbi5wcm9wZXJ0eSwudG9rZW4uc3ltYm9sLC50b2tlbi50YWd7Y29sb3I6IzkwNX0udG9rZW4uYXR0ci1uYW1lLC50b2tlbi5idWlsdGluLC50b2tlbi5jaGFyLC50b2tlbi5pbnNlcnRlZCwudG9rZW4uc2VsZWN0b3IsLnRva2VuLnN0cmluZ3tjb2xvcjojNjkwfS5sYW5ndWFnZS1jc3MgLnRva2VuLnN0cmluZywuc3R5bGUgLnRva2VuLnN0cmluZywudG9rZW4uZW50aXR5LC50b2tlbi5vcGVyYXRvciwudG9rZW4udXJse2NvbG9yOiM5YTZlM2E7YmFja2dyb3VuZDpoc2xhKDAsMCUsMTAwJSwuNSl9LnRva2VuLmF0cnVsZSwudG9rZW4uYXR0ci12YWx1ZSwudG9rZW4ua2V5d29yZHtjb2xvcjojMDdhfS50b2tlbi5jbGFzcy1uYW1lLC50b2tlbi5mdW5jdGlvbntjb2xvcjojZGQ0YTY4fS50b2tlbi5pbXBvcnRhbnQsLnRva2VuLnJlZ2V4LC50b2tlbi52YXJpYWJsZXtjb2xvcjojZTkwfS50b2tlbi5ib2xkLC50b2tlbi5pbXBvcnRhbnR7Zm9udC13ZWlnaHQ6NzAwfS50b2tlbi5pdGFsaWN7Zm9udC1zdHlsZTppdGFsaWN9LnRva2VuLmVudGl0eXtjdXJzb3I6aGVscH0ubWNlLWNvbnRlbnQtYm9keXtvdmVyZmxvdy13cmFwOmJyZWFrLXdvcmQ7d29yZC13cmFwOmJyZWFrLXdvcmR9Lm1jZS1jb250ZW50LWJvZHkgLm1jZS12aXN1YWwtY2FyZXR7YmFja2dyb3VuZC1jb2xvcjojMDAwO2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yO3Bvc2l0aW9uOmFic29sdXRlfS5tY2UtY29udGVudC1ib2R5IC5tY2UtdmlzdWFsLWNhcmV0LWhpZGRlbntkaXNwbGF5Om5vbmV9Lm1jZS1jb250ZW50LWJvZHkgW2RhdGEtbWNlLWNhcmV0XXtsZWZ0Oi0xMDAwcHg7bWFyZ2luOjA7cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OmF1dG87dG9wOjB9Lm1jZS1jb250ZW50LWJvZHkgLm1jZS1vZmZzY3JlZW4tc2VsZWN0aW9ue2xlZnQ6LTIwMDAwMDBweDttYXgtd2lkdGg6MTAwMDAwMHB4O3Bvc2l0aW9uOmFic29sdXRlfS5tY2UtY29udGVudC1ib2R5IFtjb250ZW50RWRpdGFibGU9ZmFsc2Vde2N1cnNvcjpkZWZhdWx0fS5tY2UtY29udGVudC1ib2R5IFtjb250ZW50RWRpdGFibGU9dHJ1ZV17Y3Vyc29yOnRleHR9LnRveC1jdXJzb3ItZm9ybWF0LXBhaW50ZXJ7Y3Vyc29yOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9VVRGLTgsJTNDc3ZnJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlMjB3aWR0aCUzRCUyMjI0JTIyJTIwaGVpZ2h0JTNEJTIyMjQlMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAyNCUyMDI0JTIyJTNFJTBBJTIwJTIwJTNDZyUyMGZpbGwlM0QlMjJub25lJTIyJTIwZmlsbC1ydWxlJTNEJTIyZXZlbm9kZCUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQ3BhdGglMjBmaWxsJTNEJTIyJTIzMDAwJTIyJTIwZmlsbC1ydWxlJTNEJTIybm9uemVybyUyMiUyMGQlM0QlMjJNMTUlMkM2JTIwQzE1JTJDNS40NSUyMDE0LjU1JTJDNSUyMDE0JTJDNSUyMEw2JTJDNSUyMEM1LjQ1JTJDNSUyMDUlMkM1LjQ1JTIwNSUyQzYlMjBMNSUyQzEwJTIwQzUlMkMxMC41NSUyMDUuNDUlMkMxMSUyMDYlMkMxMSUyMEwxNCUyQzExJTIwQzE0LjU1JTJDMTElMjAxNSUyQzEwLjU1JTIwMTUlMkMxMCUyMEwxNSUyQzklMjBMMTYlMkM5JTIwTDE2JTJDMTIlMjBMOSUyQzEyJTIwTDklMkMxOSUyMEM5JTJDMTkuNTUlMjA5LjQ1JTJDMjAlMjAxMCUyQzIwJTIwTDExJTJDMjAlMjBDMTEuNTUlMkMyMCUyMDEyJTJDMTkuNTUlMjAxMiUyQzE5JTIwTDEyJTJDMTQlMjBMMTglMkMxNCUyMEwxOCUyQzclMjBMMTUlMkM3JTIwTDE1JTJDNiUyMFolMjIlMkYlM0UlMEElMjAlMjAlMjAlMjAlM0NwYXRoJTIwZmlsbCUzRCUyMiUyMzAwMCUyMiUyMGZpbGwtcnVsZSUzRCUyMm5vbnplcm8lMjIlMjBkJTNEJTIyTTElMkMxJTIwTDguMjUlMkMxJTIwQzguNjY0MjEzNTYlMkMxJTIwOSUyQzEuMzM1Nzg2NDQlMjA5JTJDMS43NSUyMEw5JTJDMS43NSUyMEM5JTJDMi4xNjQyMTM1NiUyMDguNjY0MjEzNTYlMkMyLjUlMjA4LjI1JTJDMi41JTIwTDIuNSUyQzIuNSUyMEwyLjUlMkM4LjI1JTIwQzIuNSUyQzguNjY0MjEzNTYlMjAyLjE2NDIxMzU2JTJDOSUyMDEuNzUlMkM5JTIwTDEuNzUlMkM5JTIwQzEuMzM1Nzg2NDQlMkM5JTIwMSUyQzguNjY0MjEzNTYlMjAxJTJDOC4yNSUyMEwxJTJDMSUyMFolMjIlMkYlM0UlMEElMjAlMjAlM0MlMkZnJTNFJTBBJTNDJTJGc3ZnJTNFJTBBIiksZGVmYXVsdH0ubWNlLWNvbnRlbnQtYm9keSBmaWd1cmUuYWxpZ24tbGVmdHtmbG9hdDpsZWZ0fS5tY2UtY29udGVudC1ib2R5IGZpZ3VyZS5hbGlnbi1yaWdodHtmbG9hdDpyaWdodH0ubWNlLWNvbnRlbnQtYm9keSBmaWd1cmUuaW1hZ2UuYWxpZ24tY2VudGVye2Rpc3BsYXk6dGFibGU7bWFyZ2luLWxlZnQ6YXV0bzttYXJnaW4tcmlnaHQ6YXV0b30ubWNlLXByZXZpZXctb2JqZWN0e2JvcmRlcjoxcHggc29saWQgZ3JheTtkaXNwbGF5OmlubGluZS1ibG9jaztsaW5lLWhlaWdodDowO21hcmdpbjowIDJweCAwIDJweDtwb3NpdGlvbjpyZWxhdGl2ZX0ubWNlLXByZXZpZXctb2JqZWN0IC5tY2Utc2hpbXtiYWNrZ3JvdW5kOnVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhBUUFCQUlBQUFBQUFBUC8vL3lINUJBRUFBQUFBTEFBQUFBQUJBQUVBQUFJQlJBQTcpO2hlaWdodDoxMDAlO2xlZnQ6MDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDt3aWR0aDoxMDAlfS5tY2UtcHJldmlldy1vYmplY3RbZGF0YS1tY2Utc2VsZWN0ZWQ9IjIiXSAubWNlLXNoaW17ZGlzcGxheTpub25lfS5tY2Utb2JqZWN0e2JhY2tncm91bmQ6dHJhbnNwYXJlbnQgdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD1VVEYtOCwlM0NzdmclMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUyMHdpZHRoJTNEJTIyMjQlMjIlMjBoZWlnaHQlM0QlMjIyNCUyMiUzRSUzQ3BhdGglMjBkJTNEJTIyTTQlMjAzaDE2YTElMjAxJTIwMCUyMDAlMjAxJTIwMSUyMDF2MTZhMSUyMDElMjAwJTIwMCUyMDEtMSUyMDFINGExJTIwMSUyMDAlMjAwJTIwMS0xLTFWNGExJTIwMSUyMDAlMjAwJTIwMSUyMDEtMXptMSUyMDJ2MTRoMTRWNUg1em00Ljc5JTIwMi41NjVsNS42NCUyMDQuMDI4YS41LjUlMjAwJTIwMCUyMDElMjAwJTIwLjgxNGwtNS42NCUyMDQuMDI4YS41LjUlMjAwJTIwMCUyMDEtLjc5LS40MDdWNy45NzJhLjUuNSUyMDAlMjAwJTIwMSUyMC43OS0uNDA3eiUyMiUyRiUzRSUzQyUyRnN2ZyUzRSUwQSIpIG5vLXJlcGVhdCBjZW50ZXI7Ym9yZGVyOjFweCBkYXNoZWQgI2FhYX0ubWNlLXBhZ2VicmVha3tib3JkZXI6MXB4IGRhc2hlZCAjYWFhO2N1cnNvcjpkZWZhdWx0O2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjVweDttYXJnaW4tdG9wOjE1cHg7cGFnZS1icmVhay1iZWZvcmU6YWx3YXlzO3dpZHRoOjEwMCV9QG1lZGlhIHByaW50ey5tY2UtcGFnZWJyZWFre2JvcmRlcjowfX0udGlueS1wYWdlZW1iZWQgLm1jZS1zaGlte2JhY2tncm91bmQ6dXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEFRQUJBSUFBQUFBQUFQLy8veUg1QkFFQUFBQUFMQUFBQUFBQkFBRUFBQUlCUkFBNyk7aGVpZ2h0OjEwMCU7bGVmdDowO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3dpZHRoOjEwMCV9LnRpbnktcGFnZWVtYmVkW2RhdGEtbWNlLXNlbGVjdGVkPSIyIl0gLm1jZS1zaGlte2Rpc3BsYXk6bm9uZX0udGlueS1wYWdlZW1iZWR7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRpdmV9LnRpbnktcGFnZWVtYmVkLS0xNmJ5OSwudGlueS1wYWdlZW1iZWQtLTFieTEsLnRpbnktcGFnZWVtYmVkLS0yMWJ5OSwudGlueS1wYWdlZW1iZWQtLTRieTN7ZGlzcGxheTpibG9jaztvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCV9LnRpbnktcGFnZWVtYmVkLS0yMWJ5OXtwYWRkaW5nLXRvcDo0Mi44NTcxNDMlfS50aW55LXBhZ2VlbWJlZC0tMTZieTl7cGFkZGluZy10b3A6NTYuMjUlfS50aW55LXBhZ2VlbWJlZC0tNGJ5M3twYWRkaW5nLXRvcDo3NSV9LnRpbnktcGFnZWVtYmVkLS0xYnkxe3BhZGRpbmctdG9wOjEwMCV9LnRpbnktcGFnZWVtYmVkLS0xNmJ5OSBpZnJhbWUsLnRpbnktcGFnZWVtYmVkLS0xYnkxIGlmcmFtZSwudGlueS1wYWdlZW1iZWQtLTIxYnk5IGlmcmFtZSwudGlueS1wYWdlZW1iZWQtLTRieTMgaWZyYW1le2JvcmRlcjowO2hlaWdodDoxMDAlO2xlZnQ6MDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDt3aWR0aDoxMDAlfS5tY2UtY29udGVudC1ib2R5W2RhdGEtbWNlLXBsYWNlaG9sZGVyXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWNlLWNvbnRlbnQtYm9keVtkYXRhLW1jZS1wbGFjZWhvbGRlcl06bm90KC5tY2UtdmlzdWFsYmxvY2tzKTo6YmVmb3Jle2NvbG9yOnJnYmEoMzQsNDcsNjIsLjcpO2NvbnRlbnQ6YXR0cihkYXRhLW1jZS1wbGFjZWhvbGRlcik7cG9zaXRpb246YWJzb2x1dGV9Lm1jZS1jb250ZW50LWJvZHk6bm90KFtkaXI9cnRsXSlbZGF0YS1tY2UtcGxhY2Vob2xkZXJdOm5vdCgubWNlLXZpc3VhbGJsb2Nrcyk6OmJlZm9yZXtsZWZ0OjFweH0ubWNlLWNvbnRlbnQtYm9keVtkaXI9cnRsXVtkYXRhLW1jZS1wbGFjZWhvbGRlcl06bm90KC5tY2UtdmlzdWFsYmxvY2tzKTo6YmVmb3Jle3JpZ2h0OjFweH0ubWNlLWNvbnRlbnQtYm9keSBkaXYubWNlLXJlc2l6ZWhhbmRsZXtiYWNrZ3JvdW5kLWNvbG9yOiM0MDk5ZmY7Ym9yZGVyLWNvbG9yOiM0MDk5ZmY7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDoxcHg7Ym94LXNpemluZzpib3JkZXItYm94O2hlaWdodDoxMHB4O3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjEwcHg7ei1pbmRleDoxMDAwMH0ubWNlLWNvbnRlbnQtYm9keSBkaXYubWNlLXJlc2l6ZWhhbmRsZTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiM0MDk5ZmZ9Lm1jZS1jb250ZW50LWJvZHkgZGl2Lm1jZS1yZXNpemVoYW5kbGU6bnRoLW9mLXR5cGUoMSl7Y3Vyc29yOm53c2UtcmVzaXplfS5tY2UtY29udGVudC1ib2R5IGRpdi5tY2UtcmVzaXplaGFuZGxlOm50aC1vZi10eXBlKDIpe2N1cnNvcjpuZXN3LXJlc2l6ZX0ubWNlLWNvbnRlbnQtYm9keSBkaXYubWNlLXJlc2l6ZWhhbmRsZTpudGgtb2YtdHlwZSgzKXtjdXJzb3I6bndzZS1yZXNpemV9Lm1jZS1jb250ZW50LWJvZHkgZGl2Lm1jZS1yZXNpemVoYW5kbGU6bnRoLW9mLXR5cGUoNCl7Y3Vyc29yOm5lc3ctcmVzaXplfS5tY2UtY29udGVudC1ib2R5IC5tY2UtY2xvbmVkcmVzaXphYmxle29wYWNpdHk6LjU7b3V0bGluZToxcHggZGFzaGVkICMwMDA7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwMH0ubWNlLWNvbnRlbnQtYm9keSAubWNlLXJlc2l6ZS1oZWxwZXJ7YmFja2dyb3VuZDojNTU1O2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuNzUpO2JvcmRlcjoxcHg7Ym9yZGVyLXJhZGl1czozcHg7Y29sb3I6I2ZmZjtkaXNwbGF5Om5vbmU7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoxNHB4O21hcmdpbjo1cHggMTBweDtwYWRkaW5nOjVweDtwb3NpdGlvbjphYnNvbHV0ZTt3aGl0ZS1zcGFjZTpub3dyYXA7ei1pbmRleDoxMDAwMX0udG94LXJ0Yy11c2VyLXNlbGVjdGlvbntwb3NpdGlvbjpyZWxhdGl2ZX0udG94LXJ0Yy11c2VyLWN1cnNvcntib3R0b206MDtjdXJzb3I6ZGVmYXVsdDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDt3aWR0aDoycHh9LnRveC1ydGMtdXNlci1jdXJzb3I6OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOmluaGVyaXQ7Ym9yZGVyLXJhZGl1czo1MCU7Y29udGVudDonJztkaXNwbGF5OmJsb2NrO2hlaWdodDo4cHg7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6LTNweDt0b3A6LTNweDt3aWR0aDo4cHh9LnRveC1ydGMtdXNlci1jdXJzb3I6aG92ZXI6OmFmdGVye2JhY2tncm91bmQtY29sb3I6aW5oZXJpdDtib3JkZXItcmFkaXVzOjEwMHB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjojZmZmO2NvbnRlbnQ6YXR0cihkYXRhLXVzZXIpO2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NzAwO2xlZnQ6LTVweDttaW4taGVpZ2h0OjhweDttaW4td2lkdGg6OHB4O3BhZGRpbmc6MCAxMnB4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDotMTFweDt3aGl0ZS1zcGFjZTpub3dyYXA7ei1pbmRleDoxMDAwfS50b3gtcnRjLXVzZXItc2VsZWN0aW9uLS0xIC50b3gtcnRjLXVzZXItY3Vyc29ye2JhY2tncm91bmQtY29sb3I6IzJkYzI2Yn0udG94LXJ0Yy11c2VyLXNlbGVjdGlvbi0tMiAudG94LXJ0Yy11c2VyLWN1cnNvcntiYWNrZ3JvdW5kLWNvbG9yOiNlMDNlMmR9LnRveC1ydGMtdXNlci1zZWxlY3Rpb24tLTMgLnRveC1ydGMtdXNlci1jdXJzb3J7YmFja2dyb3VuZC1jb2xvcjojZjFjNDBmfS50b3gtcnRjLXVzZXItc2VsZWN0aW9uLS00IC50b3gtcnRjLXVzZXItY3Vyc29ye2JhY2tncm91bmQtY29sb3I6IzM1OThkYn0udG94LXJ0Yy11c2VyLXNlbGVjdGlvbi0tNSAudG94LXJ0Yy11c2VyLWN1cnNvcntiYWNrZ3JvdW5kLWNvbG9yOiNiOTZhZDl9LnRveC1ydGMtdXNlci1zZWxlY3Rpb24tLTYgLnRveC1ydGMtdXNlci1jdXJzb3J7YmFja2dyb3VuZC1jb2xvcjojZTY3ZTIzfS50b3gtcnRjLXVzZXItc2VsZWN0aW9uLS03IC50b3gtcnRjLXVzZXItY3Vyc29ye2JhY2tncm91bmQtY29sb3I6I2FhYTY5ZH0udG94LXJ0Yy11c2VyLXNlbGVjdGlvbi0tOCAudG94LXJ0Yy11c2VyLWN1cnNvcntiYWNrZ3JvdW5kLWNvbG9yOiNmMzY4ZTB9LnRveC1ydGMtcmVtb3RlLWltYWdle2JhY2tncm91bmQ6I2VhZWFlYSB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVURi04LCUzQ3N2ZyUyMHdpZHRoJTNEJTIyMzYlMjIlMjBoZWlnaHQlM0QlMjIxMiUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDM2JTIwMTIlMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUzRSUwQSUyMCUyMCUzQ2NpcmNsZSUyMGN4JTNEJTIyNiUyMiUyMGN5JTNEJTIyNiUyMiUyMHIlM0QlMjIzJTIyJTIwZmlsbCUzRCUyMnJnYmEoMCUyQyUyMDAlMkMlMjAwJTJDJTIwLjIpJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTNDYW5pbWF0ZSUyMGF0dHJpYnV0ZU5hbWUlM0QlMjJyJTIyJTIwdmFsdWVzJTNEJTIyMyUzQjUlM0IzJTIyJTIwY2FsY01vZGUlM0QlMjJsaW5lYXIlMjIlMjBkdXIlM0QlMjIxcyUyMiUyMHJlcGVhdENvdW50JTNEJTIyaW5kZWZpbml0ZSUyMiUyMCUyRiUzRSUwQSUyMCUyMCUzQyUyRmNpcmNsZSUzRSUwQSUyMCUyMCUzQ2NpcmNsZSUyMGN4JTNEJTIyMTglMjIlMjBjeSUzRCUyMjYlMjIlMjByJTNEJTIyMyUyMiUyMGZpbGwlM0QlMjJyZ2JhKDAlMkMlMjAwJTJDJTIwMCUyQyUyMC4yKSUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQ2FuaW1hdGUlMjBhdHRyaWJ1dGVOYW1lJTNEJTIyciUyMiUyMHZhbHVlcyUzRCUyMjMlM0I1JTNCMyUyMiUyMGNhbGNNb2RlJTNEJTIybGluZWFyJTIyJTIwYmVnaW4lM0QlMjIuMzNzJTIyJTIwZHVyJTNEJTIyMXMlMjIlMjByZXBlYXRDb3VudCUzRCUyMmluZGVmaW5pdGUlMjIlMjAlMkYlM0UlMEElMjAlMjAlM0MlMkZjaXJjbGUlM0UlMEElMjAlMjAlM0NjaXJjbGUlMjBjeCUzRCUyMjMwJTIyJTIwY3klM0QlMjI2JTIyJTIwciUzRCUyMjMlMjIlMjBmaWxsJTNEJTIycmdiYSgwJTJDJTIwMCUyQyUyMDAlMkMlMjAuMiklMjIlM0UlMEElMjAlMjAlMjAlMjAlM0NhbmltYXRlJTIwYXR0cmlidXRlTmFtZSUzRCUyMnIlMjIlMjB2YWx1ZXMlM0QlMjIzJTNCNSUzQjMlMjIlMjBjYWxjTW9kZSUzRCUyMmxpbmVhciUyMiUyMGJlZ2luJTNEJTIyLjY2cyUyMiUyMGR1ciUzRCUyMjFzJTIyJTIwcmVwZWF0Q291bnQlM0QlMjJpbmRlZmluaXRlJTIyJTIwJTJGJTNFJTBBJTIwJTIwJTNDJTJGY2lyY2xlJTNFJTBBJTNDJTJGc3ZnJTNFJTBBIikgbm8tcmVwZWF0IGNlbnRlciBjZW50ZXI7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO21pbi1oZWlnaHQ6MjQwcHg7bWluLXdpZHRoOjMyMHB4fS5tY2UtbWF0Y2gtbWFya2Vye2JhY2tncm91bmQ6I2FhYTtjb2xvcjojZmZmfS5tY2UtbWF0Y2gtbWFya2VyLXNlbGVjdGVke2JhY2tncm91bmQ6IzM5Zjtjb2xvcjojZmZmfS5tY2UtbWF0Y2gtbWFya2VyLXNlbGVjdGVkOjotbW96LXNlbGVjdGlvbntiYWNrZ3JvdW5kOiMzOWY7Y29sb3I6I2ZmZn0ubWNlLW1hdGNoLW1hcmtlci1zZWxlY3RlZDo6c2VsZWN0aW9ue2JhY2tncm91bmQ6IzM5Zjtjb2xvcjojZmZmfS5tY2UtY29udGVudC1ib2R5IGltZ1tkYXRhLW1jZS1zZWxlY3RlZF0sLm1jZS1jb250ZW50LWJvZHkgdGFibGVbZGF0YS1tY2Utc2VsZWN0ZWRde291dGxpbmU6M3B4IHNvbGlkICNiNGQ3ZmZ9Lm1jZS1jb250ZW50LWJvZHkgaHJbZGF0YS1tY2Utc2VsZWN0ZWRde291dGxpbmU6M3B4IHNvbGlkICNiNGQ3ZmY7b3V0bGluZS1vZmZzZXQ6MXB4fS5tY2UtY29udGVudC1ib2R5IFtjb250ZW50RWRpdGFibGU9ZmFsc2VdIFtjb250ZW50RWRpdGFibGU9dHJ1ZV06Zm9jdXN7b3V0bGluZTozcHggc29saWQgI2I0ZDdmZn0ubWNlLWNvbnRlbnQtYm9keSBbY29udGVudEVkaXRhYmxlPWZhbHNlXSBbY29udGVudEVkaXRhYmxlPXRydWVdOmhvdmVye291dGxpbmU6M3B4IHNvbGlkICNiNGQ3ZmZ9Lm1jZS1jb250ZW50LWJvZHkgW2NvbnRlbnRFZGl0YWJsZT1mYWxzZV1bZGF0YS1tY2Utc2VsZWN0ZWRde2N1cnNvcjpub3QtYWxsb3dlZDtvdXRsaW5lOjNweCBzb2xpZCAjYjRkN2ZmfS5tY2UtY29udGVudC1ib2R5Lm1jZS1jb250ZW50LXJlYWRvbmx5IFtjb250ZW50RWRpdGFibGU9dHJ1ZV06Zm9jdXMsLm1jZS1jb250ZW50LWJvZHkubWNlLWNvbnRlbnQtcmVhZG9ubHkgW2NvbnRlbnRFZGl0YWJsZT10cnVlXTpob3ZlcntvdXRsaW5lOjB9Lm1jZS1jb250ZW50LWJvZHkgW2RhdGEtbWNlLXNlbGVjdGVkPWlubGluZS1ib3VuZGFyeV17YmFja2dyb3VuZC1jb2xvcjojYjRkN2ZmfS5tY2UtY29udGVudC1ib2R5IC5tY2UtZWRpdC1mb2N1c3tvdXRsaW5lOjNweCBzb2xpZCAjYjRkN2ZmfS5tY2UtY29udGVudC1ib2R5IHRkW2RhdGEtbWNlLXNlbGVjdGVkXSwubWNlLWNvbnRlbnQtYm9keSB0aFtkYXRhLW1jZS1zZWxlY3RlZF17YmFja2dyb3VuZC1jb2xvcjojYjRkN2ZmIWltcG9ydGFudH0ubWNlLWNvbnRlbnQtYm9keSB0ZFtkYXRhLW1jZS1zZWxlY3RlZF06Oi1tb3otc2VsZWN0aW9uLC5tY2UtY29udGVudC1ib2R5IHRoW2RhdGEtbWNlLXNlbGVjdGVkXTo6LW1vei1zZWxlY3Rpb257YmFja2dyb3VuZDowIDB9Lm1jZS1jb250ZW50LWJvZHkgdGRbZGF0YS1tY2Utc2VsZWN0ZWRdOjpzZWxlY3Rpb24sLm1jZS1jb250ZW50LWJvZHkgdGhbZGF0YS1tY2Utc2VsZWN0ZWRdOjpzZWxlY3Rpb257YmFja2dyb3VuZDowIDB9Lm1jZS1jb250ZW50LWJvZHkgdGRbZGF0YS1tY2Utc2VsZWN0ZWRdICosLm1jZS1jb250ZW50LWJvZHkgdGhbZGF0YS1tY2Utc2VsZWN0ZWRdICp7LXdlYmtpdC10b3VjaC1jYWxsb3V0Om5vbmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lfS5tY2UtY29udGVudC1ib2R5IGltZzo6LW1vei1zZWxlY3Rpb257YmFja2dyb3VuZDowIDB9Lm1jZS1jb250ZW50LWJvZHkgaW1nOjpzZWxlY3Rpb257YmFja2dyb3VuZDowIDB9LmVwaG94LXNub29rZXItcmVzaXplci1iYXJ7YmFja2dyb3VuZC1jb2xvcjojYjRkN2ZmO29wYWNpdHk6MDstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmV9LmVwaG94LXNub29rZXItcmVzaXplci1jb2xze2N1cnNvcjpjb2wtcmVzaXplfS5lcGhveC1zbm9va2VyLXJlc2l6ZXItcm93c3tjdXJzb3I6cm93LXJlc2l6ZX0uZXBob3gtc25vb2tlci1yZXNpemVyLWJhci5lcGhveC1zbm9va2VyLXJlc2l6ZXItYmFyLWRyYWdnaW5ne29wYWNpdHk6MX0ubWNlLXNwZWxsY2hlY2tlci13b3Jke2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD1VVEYtOCwlM0NzdmclMjB3aWR0aCUzRCc0JyUyMGhlaWdodCUzRCc0JyUyMHhtbG5zJTNEJ2h0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyclM0UlM0NwYXRoJTIwc3Ryb2tlJTNEJyUyM2ZmMDAwMCclMjBmaWxsJTNEJ25vbmUnJTIwc3Ryb2tlLWxpbmVjYXAlM0Qncm91bmQnJTIwc3Ryb2tlLW9wYWNpdHklM0QnLjc1JyUyMGQlM0QnTTAlMjAzTDIlMjAxJTIwNCUyMDMnJTJGJTNFJTNDJTJGc3ZnJTNFJTBBIik7YmFja2dyb3VuZC1wb3NpdGlvbjowIGNhbGMoMTAwJSArIDFweCk7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXg7YmFja2dyb3VuZC1zaXplOmF1dG8gNnB4O2N1cnNvcjpkZWZhdWx0O2hlaWdodDoycmVtfS5tY2Utc3BlbGxjaGVja2VyLWdyYW1tYXJ7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVURi04LCUzQ3N2ZyUyMHdpZHRoJTNEJzQnJTIwaGVpZ2h0JTNEJzQnJTIweG1sbnMlM0QnaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJyUzRSUzQ3BhdGglMjBzdHJva2UlM0QnJTIzMDBBODM1JyUyMGZpbGwlM0Qnbm9uZSclMjBzdHJva2UtbGluZWNhcCUzRCdyb3VuZCclMjBkJTNEJ00wJTIwM0wyJTIwMSUyMDQlMjAzJyUyRiUzRSUzQyUyRnN2ZyUzRSUwQSIpO2JhY2tncm91bmQtcG9zaXRpb246MCBjYWxjKDEwMCUgKyAxcHgpO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14O2JhY2tncm91bmQtc2l6ZTphdXRvIDZweDtjdXJzb3I6ZGVmYXVsdH0ubWNlLXRvY3tib3JkZXI6MXB4IHNvbGlkIGdyYXl9Lm1jZS10b2MgaDJ7bWFyZ2luOjRweH0ubWNlLXRvYyBsaXtsaXN0LXN0eWxlLXR5cGU6bm9uZX0ubWNlLWl0ZW0tdGFibGUsLm1jZS1pdGVtLXRhYmxlIGNhcHRpb24sLm1jZS1pdGVtLXRhYmxlIHRkLC5tY2UtaXRlbS10YWJsZSB0aHtib3JkZXI6MXB4IGRhc2hlZCAjYmJifS5tY2UtdmlzdWFsYmxvY2tzIGFkZHJlc3MsLm1jZS12aXN1YWxibG9ja3MgYXJ0aWNsZSwubWNlLXZpc3VhbGJsb2NrcyBhc2lkZSwubWNlLXZpc3VhbGJsb2NrcyBibG9ja3F1b3RlLC5tY2UtdmlzdWFsYmxvY2tzIGRpdjpub3QoW2RhdGEtbWNlLWJvZ3VzXSksLm1jZS12aXN1YWxibG9ja3MgZGwsLm1jZS12aXN1YWxibG9ja3MgZmlnY2FwdGlvbiwubWNlLXZpc3VhbGJsb2NrcyBmaWd1cmUsLm1jZS12aXN1YWxibG9ja3MgaDEsLm1jZS12aXN1YWxibG9ja3MgaDIsLm1jZS12aXN1YWxibG9ja3MgaDMsLm1jZS12aXN1YWxibG9ja3MgaDQsLm1jZS12aXN1YWxibG9ja3MgaDUsLm1jZS12aXN1YWxibG9ja3MgaDYsLm1jZS12aXN1YWxibG9ja3MgaGdyb3VwLC5tY2UtdmlzdWFsYmxvY2tzIG9sLC5tY2UtdmlzdWFsYmxvY2tzIHAsLm1jZS12aXN1YWxibG9ja3MgcHJlLC5tY2UtdmlzdWFsYmxvY2tzIHNlY3Rpb24sLm1jZS12aXN1YWxibG9ja3MgdWx7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JvcmRlcjoxcHggZGFzaGVkICNiYmI7bWFyZ2luLWxlZnQ6M3B4O3BhZGRpbmctdG9wOjEwcHh9Lm1jZS12aXN1YWxibG9ja3MgcHtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhDUUFKQUpFQUFBQUFBUC8vLzd1N3UvLy8veUg1QkFFQUFBTUFMQUFBQUFBSkFBa0FBQUlRbkcrQ3FDTi9tbHl2c1JVcFRoRzZBZ0E3KX0ubWNlLXZpc3VhbGJsb2NrcyBoMXtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhEUUFLQUlBQkFMdTd1Ly8vL3lINUJBRUFBQUVBTEFBQUFBQU5BQW9BQUFJWGpJOEd5Ykd1MUp1eEhvQWZSTlJXM1RXWHlGMllpUlVBT3c9PSl9Lm1jZS12aXN1YWxibG9ja3MgaDJ7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoRGdBS0FJQUJBTHU3dS8vLy95SDVCQUVBQUFFQUxBQUFBQUFPQUFvQUFBSWFqSThIeWJieDRvT3VxZ1R5bkpkNmJHbFdnM0RrSnpvYVVBQUFPdz09KX0ubWNlLXZpc3VhbGJsb2NrcyBoM3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhEZ0FLQUlBQkFMdTd1Ly8vL3lINUJBRUFBQUVBTEFBQUFBQU9BQW9BQUFJWmpJOEh5YmJ4NG9PdXFnVHluSmYyTG4yTk9IcFFwbWhBQVFBNyl9Lm1jZS12aXN1YWxibG9ja3MgaDR7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoRGdBS0FJQUJBTHU3dS8vLy95SDVCQUVBQUFFQUxBQUFBQUFPQUFvQUFBSWFqSThIeWJieEluUjB6cWVBZGh0SmxYd1Yxb0NsbDJIYVdnQUFPdz09KX0ubWNlLXZpc3VhbGJsb2NrcyBoNXtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhEZ0FLQUlBQkFMdTd1Ly8vL3lINUJBRUFBQUVBTEFBQUFBQU9BQW9BQUFJYWpJOEh5YmJ4SW9pdXdqYW5lNGlxNUdsVzA1R2dJa0laVUFBQU93PT0pfS5tY2UtdmlzdWFsYmxvY2tzIGg2e2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaERnQUtBSUFCQUx1N3UvLy8veUg1QkFFQUFBRUFMQUFBQUFBT0FBb0FBQUlhakk4SHliYnhJb2l1d2phbjA0amVwMWlaMVhSbEFvNWJWZ0FBT3c9PSl9Lm1jZS12aXN1YWxibG9ja3MgZGl2Om5vdChbZGF0YS1tY2UtYm9ndXNdKXtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhFZ0FLQUlBQkFMdTd1Ly8vL3lINUJBRUFBQUVBTEFBQUFBQVNBQW9BQUFJZmpJOXBvSTBjZ0R5d3JodXhmYnJ6REViUU0yRWk1YVJqbW95U1c0cEFBUUE3KX0ubWNlLXZpc3VhbGJsb2NrcyBzZWN0aW9ue2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEtBQUtBSUFCQUx1N3UvLy8veUg1QkFFQUFBRUFMQUFBQUFBb0FBb0FBQUk1akkrcHl3Y05ZM3NCV0hkTnJwbHl0RDJlbGxEZVNWYnArR21XcWFEcURNZXBjOHQxN1k0dkJzSzVoRHlKTWNJNktrdVlVK2pwakxvS0FEcz0pfS5tY2UtdmlzdWFsYmxvY2tzIGFydGljbGV7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoS2dBS0FJQUJBTHU3dS8vLy95SDVCQUVBQUFFQUxBQUFBQUFxQUFvQUFBSTZqSStweXdrTlkzd0cwR0J2cnNkMnRYR1lTR25maUY3aWtwWGVtVHBPaUpTY2FzWW9ESkpyanNHOWdrQ0owYWc2S2htYUllM3BqRFlCQlFBNyl9Lm1jZS12aXN1YWxibG9ja3MgYmxvY2txdW90ZXtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhQZ0FLQUlBQkFMdTd1Ly8vL3lINUJBRUFBQUVBTEFBQUFBQStBQW9BQUFKUGpJK3B5KzBLbnB6MHhRRHl1VWh2Zm9HZ0lYNWlTS1pZZ3E1dU5MNXE2OWFzWjhzNXJyZjB5Wm1wTmtKWnpGZXNCVHU4VE9sRFZBYWJVeWF0Z3VWaFdkdXVkM0V5aVVrNDV4aFRUZ01CQlFBNyl9Lm1jZS12aXN1YWxibG9ja3MgYWRkcmVzc3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhMUUFLQUlBQkFMdTd1Ly8vL3lINUJBRUFBQUVBTEFBQUFBQXRBQW9BQUFJL2pJK3B5d3dOb3pTUDFnRHl5WmNqYjNVYVJwWGtXYVhtWlc0T3FLTGhCbUxzK0syNjNEa0pLN09KZWlmaDdGaWNLRDlBMS9JcEdkS2t5RnBObUNrQUFEcz0pfS5tY2UtdmlzdWFsYmxvY2tzIHByZXtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhGUUFLQUlBQkFMdTd1d0FBQUNINUJBRUFBQUVBTEFBQUFBQVZBQW9BQUFJampJK1pvTjBjZ0R3U21ucHoxTkN1ZVlFUmhuaWJaVktMTm5iT3E4SXZLcEp0VlFBQU93PT0pfS5tY2UtdmlzdWFsYmxvY2tzIGZpZ3VyZXtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhKQUFLQUlBQUFMdTd1Ly8vL3lINUJBRUFBQUVBTEFBQUFBQWtBQW9BQUFJMGpJK3B5KzJmd0FIVVNGdkQzUmx2RzRISXA0blg1SkZTcG5aVUo2TGxyTTUyT0U3dVNXb3NCSFNjZ2tTWmo3ZERLbldBQWdBNyl9Lm1jZS12aXN1YWxibG9ja3MgZmlnY2FwdGlvbntib3JkZXI6MXB4IGRhc2hlZCAjYmJifS5tY2UtdmlzdWFsYmxvY2tzIGhncm91cHtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhKd0FLQUlBQkFMdTd1d0FBQUNINUJBRUFBQUVBTEFBQUFBQW5BQW9BQUFJM2pJK3B5d1lOSTN1QjBncHNSdHQ1ZkZuZk5aYVZTWUppbDRXbzAzSHY2WjYydU9DZ2lYSDFrWklJSjhOaUl4UnJBWk5NWkF0UUFBQTcpfS5tY2UtdmlzdWFsYmxvY2tzIGFzaWRle2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEhnQUtBSUFCQUtxcXF2Ly8veUg1QkFFQUFBRUFMQUFBQUFBZUFBb0FBQUl0akkrcEc4QVBqWk9Uemd0cXk3STNmMXllaG1RY0ZZNFdLWmJxQnl1dG1XNGFIVWQ2dmZjVmJndWRncFlDQURzPSl9Lm1jZS12aXN1YWxibG9ja3MgdWx7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoRFFBS0FJQUFBTHU3dS8vLy95SDVCQUVBQUFFQUxBQUFBQUFOQUFvQUFBSVhqSThHeWJHdVlucVVWU2p2dzI2RHp6WGlxSURsVndBQU93PT0pfS5tY2UtdmlzdWFsYmxvY2tzIG9se2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaERRQUtBSUFCQUx1N3UvLy8veUg1QkFFQUFBRUFMQUFBQUFBTkFBb0FBQUlYakk4R3liSDZISHQwcW91cnhDNkN2elhpZUh5ZVdRQUFPdz09KX0ubWNlLXZpc3VhbGJsb2NrcyBkbHtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhEUUFLQUlBQkFMdTd1Ly8vL3lINUJBRUFBQUVBTEFBQUFBQU5BQW9BQUFJWGpJOEd5YkVPbm1PdlVvV3puVHFldUVqTlNDcWVHUlVBT3c9PSl9Lm1jZS12aXN1YWxibG9ja3M6bm90KFtkaXI9cnRsXSkgYWRkcmVzcywubWNlLXZpc3VhbGJsb2Nrczpub3QoW2Rpcj1ydGxdKSBhcnRpY2xlLC5tY2UtdmlzdWFsYmxvY2tzOm5vdChbZGlyPXJ0bF0pIGFzaWRlLC5tY2UtdmlzdWFsYmxvY2tzOm5vdChbZGlyPXJ0bF0pIGJsb2NrcXVvdGUsLm1jZS12aXN1YWxibG9ja3M6bm90KFtkaXI9cnRsXSkgZGl2Om5vdChbZGF0YS1tY2UtYm9ndXNdKSwubWNlLXZpc3VhbGJsb2Nrczpub3QoW2Rpcj1ydGxdKSBkbCwubWNlLXZpc3VhbGJsb2Nrczpub3QoW2Rpcj1ydGxdKSBmaWdjYXB0aW9uLC5tY2UtdmlzdWFsYmxvY2tzOm5vdChbZGlyPXJ0bF0pIGZpZ3VyZSwubWNlLXZpc3VhbGJsb2Nrczpub3QoW2Rpcj1ydGxdKSBoMSwubWNlLXZpc3VhbGJsb2Nrczpub3QoW2Rpcj1ydGxdKSBoMiwubWNlLXZpc3VhbGJsb2Nrczpub3QoW2Rpcj1ydGxdKSBoMywubWNlLXZpc3VhbGJsb2Nrczpub3QoW2Rpcj1ydGxdKSBoNCwubWNlLXZpc3VhbGJsb2Nrczpub3QoW2Rpcj1ydGxdKSBoNSwubWNlLXZpc3VhbGJsb2Nrczpub3QoW2Rpcj1ydGxdKSBoNiwubWNlLXZpc3VhbGJsb2Nrczpub3QoW2Rpcj1ydGxdKSBoZ3JvdXAsLm1jZS12aXN1YWxibG9ja3M6bm90KFtkaXI9cnRsXSkgb2wsLm1jZS12aXN1YWxibG9ja3M6bm90KFtkaXI9cnRsXSkgcCwubWNlLXZpc3VhbGJsb2Nrczpub3QoW2Rpcj1ydGxdKSBwcmUsLm1jZS12aXN1YWxibG9ja3M6bm90KFtkaXI9cnRsXSkgc2VjdGlvbiwubWNlLXZpc3VhbGJsb2Nrczpub3QoW2Rpcj1ydGxdKSB1bHttYXJnaW4tbGVmdDozcHh9Lm1jZS12aXN1YWxibG9ja3NbZGlyPXJ0bF0gYWRkcmVzcywubWNlLXZpc3VhbGJsb2Nrc1tkaXI9cnRsXSBhcnRpY2xlLC5tY2UtdmlzdWFsYmxvY2tzW2Rpcj1ydGxdIGFzaWRlLC5tY2UtdmlzdWFsYmxvY2tzW2Rpcj1ydGxdIGJsb2NrcXVvdGUsLm1jZS12aXN1YWxibG9ja3NbZGlyPXJ0bF0gZGl2Om5vdChbZGF0YS1tY2UtYm9ndXNdKSwubWNlLXZpc3VhbGJsb2Nrc1tkaXI9cnRsXSBkbCwubWNlLXZpc3VhbGJsb2Nrc1tkaXI9cnRsXSBmaWdjYXB0aW9uLC5tY2UtdmlzdWFsYmxvY2tzW2Rpcj1ydGxdIGZpZ3VyZSwubWNlLXZpc3VhbGJsb2Nrc1tkaXI9cnRsXSBoMSwubWNlLXZpc3VhbGJsb2Nrc1tkaXI9cnRsXSBoMiwubWNlLXZpc3VhbGJsb2Nrc1tkaXI9cnRsXSBoMywubWNlLXZpc3VhbGJsb2Nrc1tkaXI9cnRsXSBoNCwubWNlLXZpc3VhbGJsb2Nrc1tkaXI9cnRsXSBoNSwubWNlLXZpc3VhbGJsb2Nrc1tkaXI9cnRsXSBoNiwubWNlLXZpc3VhbGJsb2Nrc1tkaXI9cnRsXSBoZ3JvdXAsLm1jZS12aXN1YWxibG9ja3NbZGlyPXJ0bF0gb2wsLm1jZS12aXN1YWxibG9ja3NbZGlyPXJ0bF0gcCwubWNlLXZpc3VhbGJsb2Nrc1tkaXI9cnRsXSBwcmUsLm1jZS12aXN1YWxibG9ja3NbZGlyPXJ0bF0gc2VjdGlvbiwubWNlLXZpc3VhbGJsb2Nrc1tkaXI9cnRsXSB1bHtiYWNrZ3JvdW5kLXBvc2l0aW9uLXg6cmlnaHQ7bWFyZ2luLXJpZ2h0OjNweH0ubWNlLW5ic3AsLm1jZS1zaHl7YmFja2dyb3VuZDojYWFhfS5tY2Utc2h5OjphZnRlcntjb250ZW50OictJ30K]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/skins/ui/oxide-dark/content.min.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICovCi5tY2UtY29udGVudC1ib2R5IC5tY2UtaXRlbS1hbmNob3J7YmFja2dyb3VuZDp0cmFuc3BhcmVudCB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVURi04LCUzQ3N2ZyUyMHdpZHRoJTNEJzgnJTIwaGVpZ2h0JTNEJzEyJyUyMHhtbG5zJTNEJ2h0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyclM0UlM0NwYXRoJTIwZCUzRCdNMCUyMDBMOCUyMDAlMjA4JTIwMTIlMjA0LjA5MTE3ODIxJTIwOSUyMDAlMjAxMnonJTIwZmlsbCUzRCUyMiUyM2NjY2NjYyUyMiUyRiUzRSUzQyUyRnN2ZyUzRSUwQSIpIG5vLXJlcGVhdCBjZW50ZXI7Y3Vyc29yOmRlZmF1bHQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjEycHghaW1wb3J0YW50O3BhZGRpbmc6MCAycHg7LXdlYmtpdC11c2VyLW1vZGlmeTpyZWFkLW9ubHk7LW1vei11c2VyLW1vZGlmeTpyZWFkLW9ubHk7LXdlYmtpdC11c2VyLXNlbGVjdDphbGw7LW1vei11c2VyLXNlbGVjdDphbGw7LW1zLXVzZXItc2VsZWN0OmFsbDt1c2VyLXNlbGVjdDphbGw7d2lkdGg6OHB4IWltcG9ydGFudH0ubWNlLWNvbnRlbnQtYm9keSAubWNlLWl0ZW0tYW5jaG9yW2RhdGEtbWNlLXNlbGVjdGVkXXtvdXRsaW5lLW9mZnNldDoxcHh9LnRveC1jb21tZW50cy12aXNpYmxlIC50b3gtY29tbWVudHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmYwYjd9LnRveC1jb21tZW50cy12aXNpYmxlIC50b3gtY29tbWVudC0tYWN0aXZle2JhY2tncm91bmQtY29sb3I6I2ZmZTE2OH0udG94LWNoZWNrbGlzdD5saTpub3QoLnRveC1jaGVja2xpc3QtLWhpZGRlbil7bGlzdC1zdHlsZTpub25lO21hcmdpbjouMjVlbSAwfS50b3gtY2hlY2tsaXN0PmxpOm5vdCgudG94LWNoZWNrbGlzdC0taGlkZGVuKTo6YmVmb3Jle2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD1VVEYtOCwlM0NzdmclMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUyMHdpZHRoJTNEJTIyMTYlMjIlMjBoZWlnaHQlM0QlMjIxNiUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDE2JTIwMTYlMjIlM0UlM0NnJTIwaWQlM0QlMjJjaGVja2xpc3QtdW5jaGVja2VkJTIyJTIwZmlsbCUzRCUyMm5vbmUlMjIlMjBmaWxsLXJ1bGUlM0QlMjJldmVub2RkJTIyJTNFJTNDcmVjdCUyMGlkJTNEJTIyUmVjdGFuZ2xlJTIyJTIwd2lkdGglM0QlMjIxNSUyMiUyMGhlaWdodCUzRCUyMjE1JTIyJTIweCUzRCUyMi41JTIyJTIweSUzRCUyMi41JTIyJTIwZmlsbC1ydWxlJTNEJTIybm9uemVybyUyMiUyMHN0cm9rZSUzRCUyMiUyMzZkNzM3YiUyMiUyMHJ4JTNEJTIyMiUyMiUyRiUzRSUzQyUyRmclM0UlM0MlMkZzdmclM0UlMEEiKTtiYWNrZ3JvdW5kLXNpemU6MTAwJTtjb250ZW50OicnO2N1cnNvcjpwb2ludGVyO2hlaWdodDoxZW07bWFyZ2luLWxlZnQ6LTEuNWVtO21hcmdpbi10b3A6LjEyNWVtO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFlbX0udG94LWNoZWNrbGlzdCBsaTpub3QoLnRveC1jaGVja2xpc3QtLWhpZGRlbikudG94LWNoZWNrbGlzdC0tY2hlY2tlZDo6YmVmb3Jle2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD1VVEYtOCwlM0NzdmclMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUyMHdpZHRoJTNEJTIyMTYlMjIlMjBoZWlnaHQlM0QlMjIxNiUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDE2JTIwMTYlMjIlM0UlM0NnJTIwaWQlM0QlMjJjaGVja2xpc3QtY2hlY2tlZCUyMiUyMGZpbGwlM0QlMjJub25lJTIyJTIwZmlsbC1ydWxlJTNEJTIyZXZlbm9kZCUyMiUzRSUzQ3JlY3QlMjBpZCUzRCUyMlJlY3RhbmdsZSUyMiUyMHdpZHRoJTNEJTIyMTYlMjIlMjBoZWlnaHQlM0QlMjIxNiUyMiUyMGZpbGwlM0QlMjIlMjM0MDk5RkYlMjIlMjBmaWxsLXJ1bGUlM0QlMjJub256ZXJvJTIyJTIwcnglM0QlMjIyJTIyJTJGJTNFJTNDcGF0aCUyMGlkJTNEJTIyUGF0aCUyMiUyMGZpbGwlM0QlMjIlMjNGRkYlMjIlMjBmaWxsLXJ1bGUlM0QlMjJub256ZXJvJTIyJTIwZCUzRCUyMk0xMS41NzAzMTg2JTJDMy4xNDQxNzMwOSUyMEMxMS44NTE2MjM4JTJDMi43MzcyNDYwMyUyMDEyLjQxNjQ3ODElMkMyLjYyODI5OTMzJTIwMTIuODM1NTglMkMyLjg5Nzc0Nzk3JTIwQzEzLjI2MDEyMSUyQzMuMTcwNjkzNTUlMjAxMy4zNzU5NzM2JTJDMy43MjkzMjI2MiUyMDEzLjA5MDkxMDUlMkM0LjE0MTY4NTgyJTIwTDcuNzU4MDU4NyUyQzExLjg1NjAxOTUlMjBDNy40Mzc3Njg5NiUyQzEyLjMxOTM0MDQlMjA2Ljc2NDgzOTgzJTJDMTIuMzg1MjE0MiUyMDYuMzU2MDczMjIlMkMxMS45OTQ4NzI1JTIwTDMuMDI0OTE2OTclMkM4LjgxMzg2NjIlMjBDMi42NjA5MDE0MyUyQzguNDY2MjU4NDUlMjAyLjY1Nzk4ODcxJTJDNy44OTU5NDY5OCUyMDMuMDE4NTAyMzQlMkM3LjU0NDgzMzU0JTIwQzMuMzczOTQyJTJDNy4xOTg2NjE3NyUyMDMuOTQ5NDAwMDYlMkM3LjE5NTkyODQxJTIwNC4zMDgyOTYwOCUyQzcuNTM4NjQ3NCUyMEw2Ljg1Mjc2OTIzJTJDOS45Njg0Mjk5JTIwTDExLjU3MDMxODYlMkMzLjE0NDE3MzA5JTIwWiUyMiUyRiUzRSUzQyUyRmclM0UlM0MlMkZzdmclM0UlMEEiKX1bZGlyPXJ0bF0gLnRveC1jaGVja2xpc3Q+bGk6bm90KC50b3gtY2hlY2tsaXN0LS1oaWRkZW4pOjpiZWZvcmV7bWFyZ2luLWxlZnQ6MDttYXJnaW4tcmlnaHQ6LTEuNWVtfWNvZGVbY2xhc3MqPWxhbmd1YWdlLV0scHJlW2NsYXNzKj1sYW5ndWFnZS1de2NvbG9yOiNmOGY4ZjI7YmFja2dyb3VuZDowIDA7dGV4dC1zaGFkb3c6MCAxcHggcmdiYSgwLDAsMCwuMyk7Zm9udC1mYW1pbHk6Q29uc29sYXMsTW9uYWNvLCdBbmRhbGUgTW9ubycsJ1VidW50dSBNb25vJyxtb25vc3BhY2U7dGV4dC1hbGlnbjpsZWZ0O3doaXRlLXNwYWNlOnByZTt3b3JkLXNwYWNpbmc6bm9ybWFsO3dvcmQtYnJlYWs6bm9ybWFsO3dvcmQtd3JhcDpub3JtYWw7bGluZS1oZWlnaHQ6MS41Oy1tb3otdGFiLXNpemU6NDt0YWItc2l6ZTo0Oy13ZWJraXQtaHlwaGVuczpub25lOy1tcy1oeXBoZW5zOm5vbmU7aHlwaGVuczpub25lfXByZVtjbGFzcyo9bGFuZ3VhZ2UtXXtwYWRkaW5nOjFlbTttYXJnaW46LjVlbSAwO292ZXJmbG93OmF1dG87Ym9yZGVyLXJhZGl1czouM2VtfTpub3QocHJlKT5jb2RlW2NsYXNzKj1sYW5ndWFnZS1dLHByZVtjbGFzcyo9bGFuZ3VhZ2UtXXtiYWNrZ3JvdW5kOiMyODJhMzZ9Om5vdChwcmUpPmNvZGVbY2xhc3MqPWxhbmd1YWdlLV17cGFkZGluZzouMWVtO2JvcmRlci1yYWRpdXM6LjNlbTt3aGl0ZS1zcGFjZTpub3JtYWx9LnRva2VuLmNkYXRhLC50b2tlbi5jb21tZW50LC50b2tlbi5kb2N0eXBlLC50b2tlbi5wcm9sb2d7Y29sb3I6IzYyNzJhNH0udG9rZW4ucHVuY3R1YXRpb257Y29sb3I6I2Y4ZjhmMn0ubmFtZXNwYWNle29wYWNpdHk6Ljd9LnRva2VuLmNvbnN0YW50LC50b2tlbi5kZWxldGVkLC50b2tlbi5wcm9wZXJ0eSwudG9rZW4uc3ltYm9sLC50b2tlbi50YWd7Y29sb3I6I2ZmNzljNn0udG9rZW4uYm9vbGVhbiwudG9rZW4ubnVtYmVye2NvbG9yOiNiZDkzZjl9LnRva2VuLmF0dHItbmFtZSwudG9rZW4uYnVpbHRpbiwudG9rZW4uY2hhciwudG9rZW4uaW5zZXJ0ZWQsLnRva2VuLnNlbGVjdG9yLC50b2tlbi5zdHJpbmd7Y29sb3I6IzUwZmE3Yn0ubGFuZ3VhZ2UtY3NzIC50b2tlbi5zdHJpbmcsLnN0eWxlIC50b2tlbi5zdHJpbmcsLnRva2VuLmVudGl0eSwudG9rZW4ub3BlcmF0b3IsLnRva2VuLnVybCwudG9rZW4udmFyaWFibGV7Y29sb3I6I2Y4ZjhmMn0udG9rZW4uYXRydWxlLC50b2tlbi5hdHRyLXZhbHVlLC50b2tlbi5jbGFzcy1uYW1lLC50b2tlbi5mdW5jdGlvbntjb2xvcjojZjFmYThjfS50b2tlbi5rZXl3b3Jke2NvbG9yOiM4YmU5ZmR9LnRva2VuLmltcG9ydGFudCwudG9rZW4ucmVnZXh7Y29sb3I6I2ZmYjg2Y30udG9rZW4uYm9sZCwudG9rZW4uaW1wb3J0YW50e2ZvbnQtd2VpZ2h0OjcwMH0udG9rZW4uaXRhbGlje2ZvbnQtc3R5bGU6aXRhbGljfS50b2tlbi5lbnRpdHl7Y3Vyc29yOmhlbHB9Lm1jZS1jb250ZW50LWJvZHl7b3ZlcmZsb3ctd3JhcDpicmVhay13b3JkO3dvcmQtd3JhcDpicmVhay13b3JkfS5tY2UtY29udGVudC1ib2R5IC5tY2UtdmlzdWFsLWNhcmV0e2JhY2tncm91bmQtY29sb3I6IzAwMDtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcjtwb3NpdGlvbjphYnNvbHV0ZX0ubWNlLWNvbnRlbnQtYm9keSAubWNlLXZpc3VhbC1jYXJldC1oaWRkZW57ZGlzcGxheTpub25lfS5tY2UtY29udGVudC1ib2R5IFtkYXRhLW1jZS1jYXJldF17bGVmdDotMTAwMHB4O21hcmdpbjowO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDphdXRvO3RvcDowfS5tY2UtY29udGVudC1ib2R5IC5tY2Utb2Zmc2NyZWVuLXNlbGVjdGlvbntsZWZ0Oi0yMDAwMDAwcHg7bWF4LXdpZHRoOjEwMDAwMDBweDtwb3NpdGlvbjphYnNvbHV0ZX0ubWNlLWNvbnRlbnQtYm9keSBbY29udGVudEVkaXRhYmxlPWZhbHNlXXtjdXJzb3I6ZGVmYXVsdH0ubWNlLWNvbnRlbnQtYm9keSBbY29udGVudEVkaXRhYmxlPXRydWVde2N1cnNvcjp0ZXh0fS50b3gtY3Vyc29yLWZvcm1hdC1wYWludGVye2N1cnNvcjp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVURi04LCUzQ3N2ZyUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTIwd2lkdGglM0QlMjIyNCUyMiUyMGhlaWdodCUzRCUyMjI0JTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMjQlMjAyNCUyMiUzRSUwQSUyMCUyMCUzQ2clMjBmaWxsJTNEJTIybm9uZSUyMiUyMGZpbGwtcnVsZSUzRCUyMmV2ZW5vZGQlMjIlM0UlMEElMjAlMjAlMjAlMjAlM0NwYXRoJTIwZmlsbCUzRCUyMiUyMzAwMCUyMiUyMGZpbGwtcnVsZSUzRCUyMm5vbnplcm8lMjIlMjBkJTNEJTIyTTE1JTJDNiUyMEMxNSUyQzUuNDUlMjAxNC41NSUyQzUlMjAxNCUyQzUlMjBMNiUyQzUlMjBDNS40NSUyQzUlMjA1JTJDNS40NSUyMDUlMkM2JTIwTDUlMkMxMCUyMEM1JTJDMTAuNTUlMjA1LjQ1JTJDMTElMjA2JTJDMTElMjBMMTQlMkMxMSUyMEMxNC41NSUyQzExJTIwMTUlMkMxMC41NSUyMDE1JTJDMTAlMjBMMTUlMkM5JTIwTDE2JTJDOSUyMEwxNiUyQzEyJTIwTDklMkMxMiUyMEw5JTJDMTklMjBDOSUyQzE5LjU1JTIwOS40NSUyQzIwJTIwMTAlMkMyMCUyMEwxMSUyQzIwJTIwQzExLjU1JTJDMjAlMjAxMiUyQzE5LjU1JTIwMTIlMkMxOSUyMEwxMiUyQzE0JTIwTDE4JTJDMTQlMjBMMTglMkM3JTIwTDE1JTJDNyUyMEwxNSUyQzYlMjBaJTIyJTJGJTNFJTBBJTIwJTIwJTIwJTIwJTNDcGF0aCUyMGZpbGwlM0QlMjIlMjMwMDAlMjIlMjBmaWxsLXJ1bGUlM0QlMjJub256ZXJvJTIyJTIwZCUzRCUyMk0xJTJDMSUyMEw4LjI1JTJDMSUyMEM4LjY2NDIxMzU2JTJDMSUyMDklMkMxLjMzNTc4NjQ0JTIwOSUyQzEuNzUlMjBMOSUyQzEuNzUlMjBDOSUyQzIuMTY0MjEzNTYlMjA4LjY2NDIxMzU2JTJDMi41JTIwOC4yNSUyQzIuNSUyMEwyLjUlMkMyLjUlMjBMMi41JTJDOC4yNSUyMEMyLjUlMkM4LjY2NDIxMzU2JTIwMi4xNjQyMTM1NiUyQzklMjAxLjc1JTJDOSUyMEwxLjc1JTJDOSUyMEMxLjMzNTc4NjQ0JTJDOSUyMDElMkM4LjY2NDIxMzU2JTIwMSUyQzguMjUlMjBMMSUyQzElMjBaJTIyJTJGJTNFJTBBJTIwJTIwJTNDJTJGZyUzRSUwQSUzQyUyRnN2ZyUzRSUwQSIpLGRlZmF1bHR9Lm1jZS1jb250ZW50LWJvZHkgZmlndXJlLmFsaWduLWxlZnR7ZmxvYXQ6bGVmdH0ubWNlLWNvbnRlbnQtYm9keSBmaWd1cmUuYWxpZ24tcmlnaHR7ZmxvYXQ6cmlnaHR9Lm1jZS1jb250ZW50LWJvZHkgZmlndXJlLmltYWdlLmFsaWduLWNlbnRlcntkaXNwbGF5OnRhYmxlO21hcmdpbi1sZWZ0OmF1dG87bWFyZ2luLXJpZ2h0OmF1dG99Lm1jZS1wcmV2aWV3LW9iamVjdHtib3JkZXI6MXB4IHNvbGlkIGdyYXk7ZGlzcGxheTppbmxpbmUtYmxvY2s7bGluZS1oZWlnaHQ6MDttYXJnaW46MCAycHggMCAycHg7cG9zaXRpb246cmVsYXRpdmV9Lm1jZS1wcmV2aWV3LW9iamVjdCAubWNlLXNoaW17YmFja2dyb3VuZDp1cmwoZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoQVFBQkFJQUFBQUFBQVAvLy95SDVCQUVBQUFBQUxBQUFBQUFCQUFFQUFBSUJSQUE3KTtoZWlnaHQ6MTAwJTtsZWZ0OjA7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7d2lkdGg6MTAwJX0ubWNlLXByZXZpZXctb2JqZWN0W2RhdGEtbWNlLXNlbGVjdGVkPSIyIl0gLm1jZS1zaGlte2Rpc3BsYXk6bm9uZX0ubWNlLW9iamVjdHtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9VVRGLTgsJTNDc3ZnJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlMjB3aWR0aCUzRCUyMjI0JTIyJTIwaGVpZ2h0JTNEJTIyMjQlMjIlM0UlM0NwYXRoJTIwZCUzRCUyMk00JTIwM2gxNmExJTIwMSUyMDAlMjAwJTIwMSUyMDElMjAxdjE2YTElMjAxJTIwMCUyMDAlMjAxLTElMjAxSDRhMSUyMDElMjAwJTIwMCUyMDEtMS0xVjRhMSUyMDElMjAwJTIwMCUyMDElMjAxLTF6bTElMjAydjE0aDE0VjVINXptNC43OSUyMDIuNTY1bDUuNjQlMjA0LjAyOGEuNS41JTIwMCUyMDAlMjAxJTIwMCUyMC44MTRsLTUuNjQlMjA0LjAyOGEuNS41JTIwMCUyMDAlMjAxLS43OS0uNDA3VjcuOTcyYS41LjUlMjAwJTIwMCUyMDElMjAuNzktLjQwN3olMjIlMjBmaWxsJTNEJTIyJTIzY2NjY2NjJTIyJTJGJTNFJTNDJTJGc3ZnJTNFJTBBIikgbm8tcmVwZWF0IGNlbnRlcjtib3JkZXI6MXB4IGRhc2hlZCAjYWFhfS5tY2UtcGFnZWJyZWFre2JvcmRlcjoxcHggZGFzaGVkICNhYWE7Y3Vyc29yOmRlZmF1bHQ7ZGlzcGxheTpibG9jaztoZWlnaHQ6NXB4O21hcmdpbi10b3A6MTVweDtwYWdlLWJyZWFrLWJlZm9yZTphbHdheXM7d2lkdGg6MTAwJX1AbWVkaWEgcHJpbnR7Lm1jZS1wYWdlYnJlYWt7Ym9yZGVyOjB9fS50aW55LXBhZ2VlbWJlZCAubWNlLXNoaW17YmFja2dyb3VuZDp1cmwoZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoQVFBQkFJQUFBQUFBQVAvLy95SDVCQUVBQUFBQUxBQUFBQUFCQUFFQUFBSUJSQUE3KTtoZWlnaHQ6MTAwJTtsZWZ0OjA7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7d2lkdGg6MTAwJX0udGlueS1wYWdlZW1iZWRbZGF0YS1tY2Utc2VsZWN0ZWQ9IjIiXSAubWNlLXNoaW17ZGlzcGxheTpub25lfS50aW55LXBhZ2VlbWJlZHtkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZX0udGlueS1wYWdlZW1iZWQtLTE2Ynk5LC50aW55LXBhZ2VlbWJlZC0tMWJ5MSwudGlueS1wYWdlZW1iZWQtLTIxYnk5LC50aW55LXBhZ2VlbWJlZC0tNGJ5M3tkaXNwbGF5OmJsb2NrO292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTAwJX0udGlueS1wYWdlZW1iZWQtLTIxYnk5e3BhZGRpbmctdG9wOjQyLjg1NzE0MyV9LnRpbnktcGFnZWVtYmVkLS0xNmJ5OXtwYWRkaW5nLXRvcDo1Ni4yNSV9LnRpbnktcGFnZWVtYmVkLS00Ynkze3BhZGRpbmctdG9wOjc1JX0udGlueS1wYWdlZW1iZWQtLTFieTF7cGFkZGluZy10b3A6MTAwJX0udGlueS1wYWdlZW1iZWQtLTE2Ynk5IGlmcmFtZSwudGlueS1wYWdlZW1iZWQtLTFieTEgaWZyYW1lLC50aW55LXBhZ2VlbWJlZC0tMjFieTkgaWZyYW1lLC50aW55LXBhZ2VlbWJlZC0tNGJ5MyBpZnJhbWV7Ym9yZGVyOjA7aGVpZ2h0OjEwMCU7bGVmdDowO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3dpZHRoOjEwMCV9Lm1jZS1jb250ZW50LWJvZHlbZGF0YS1tY2UtcGxhY2Vob2xkZXJde3Bvc2l0aW9uOnJlbGF0aXZlfS5tY2UtY29udGVudC1ib2R5W2RhdGEtbWNlLXBsYWNlaG9sZGVyXTpub3QoLm1jZS12aXN1YWxibG9ja3MpOjpiZWZvcmV7Y29sb3I6cmdiYSgzNCw0Nyw2MiwuNyk7Y29udGVudDphdHRyKGRhdGEtbWNlLXBsYWNlaG9sZGVyKTtwb3NpdGlvbjphYnNvbHV0ZX0ubWNlLWNvbnRlbnQtYm9keTpub3QoW2Rpcj1ydGxdKVtkYXRhLW1jZS1wbGFjZWhvbGRlcl06bm90KC5tY2UtdmlzdWFsYmxvY2tzKTo6YmVmb3Jle2xlZnQ6MXB4fS5tY2UtY29udGVudC1ib2R5W2Rpcj1ydGxdW2RhdGEtbWNlLXBsYWNlaG9sZGVyXTpub3QoLm1jZS12aXN1YWxibG9ja3MpOjpiZWZvcmV7cmlnaHQ6MXB4fS5tY2UtY29udGVudC1ib2R5IGRpdi5tY2UtcmVzaXplaGFuZGxle2JhY2tncm91bmQtY29sb3I6IzQwOTlmZjtib3JkZXItY29sb3I6IzQwOTlmZjtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOjFweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7aGVpZ2h0OjEwcHg7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTBweDt6LWluZGV4OjEwMDAwfS5tY2UtY29udGVudC1ib2R5IGRpdi5tY2UtcmVzaXplaGFuZGxlOmhvdmVye2JhY2tncm91bmQtY29sb3I6IzQwOTlmZn0ubWNlLWNvbnRlbnQtYm9keSBkaXYubWNlLXJlc2l6ZWhhbmRsZTpudGgtb2YtdHlwZSgxKXtjdXJzb3I6bndzZS1yZXNpemV9Lm1jZS1jb250ZW50LWJvZHkgZGl2Lm1jZS1yZXNpemVoYW5kbGU6bnRoLW9mLXR5cGUoMil7Y3Vyc29yOm5lc3ctcmVzaXplfS5tY2UtY29udGVudC1ib2R5IGRpdi5tY2UtcmVzaXplaGFuZGxlOm50aC1vZi10eXBlKDMpe2N1cnNvcjpud3NlLXJlc2l6ZX0ubWNlLWNvbnRlbnQtYm9keSBkaXYubWNlLXJlc2l6ZWhhbmRsZTpudGgtb2YtdHlwZSg0KXtjdXJzb3I6bmVzdy1yZXNpemV9Lm1jZS1jb250ZW50LWJvZHkgLm1jZS1jbG9uZWRyZXNpemFibGV7b3BhY2l0eTouNTtvdXRsaW5lOjFweCBkYXNoZWQgIzAwMDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDAwfS5tY2UtY29udGVudC1ib2R5IC5tY2UtcmVzaXplLWhlbHBlcntiYWNrZ3JvdW5kOiM1NTU7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC43NSk7Ym9yZGVyOjFweDtib3JkZXItcmFkaXVzOjNweDtjb2xvcjojZmZmO2Rpc3BsYXk6bm9uZTtmb250LWZhbWlseTpzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2xpbmUtaGVpZ2h0OjE0cHg7bWFyZ2luOjVweCAxMHB4O3BhZGRpbmc6NXB4O3Bvc2l0aW9uOmFic29sdXRlO3doaXRlLXNwYWNlOm5vd3JhcDt6LWluZGV4OjEwMDAxfS50b3gtcnRjLXVzZXItc2VsZWN0aW9ue3Bvc2l0aW9uOnJlbGF0aXZlfS50b3gtcnRjLXVzZXItY3Vyc29ye2JvdHRvbTowO2N1cnNvcjpkZWZhdWx0O3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3dpZHRoOjJweH0udG94LXJ0Yy11c2VyLWN1cnNvcjo6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6aW5oZXJpdDtib3JkZXItcmFkaXVzOjUwJTtjb250ZW50OicnO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjhweDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDotM3B4O3RvcDotM3B4O3dpZHRoOjhweH0udG94LXJ0Yy11c2VyLWN1cnNvcjpob3Zlcjo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjppbmhlcml0O2JvcmRlci1yYWRpdXM6MTAwcHg7Ym94LXNpemluZzpib3JkZXItYm94O2NvbG9yOiNmZmY7Y29udGVudDphdHRyKGRhdGEtdXNlcik7ZGlzcGxheTpibG9jaztmb250LXNpemU6MTJweDtmb250LXdlaWdodDo3MDA7bGVmdDotNXB4O21pbi1oZWlnaHQ6OHB4O21pbi13aWR0aDo4cHg7cGFkZGluZzowIDEycHg7cG9zaXRpb246YWJzb2x1dGU7dG9wOi0xMXB4O3doaXRlLXNwYWNlOm5vd3JhcDt6LWluZGV4OjEwMDB9LnRveC1ydGMtdXNlci1zZWxlY3Rpb24tLTEgLnRveC1ydGMtdXNlci1jdXJzb3J7YmFja2dyb3VuZC1jb2xvcjojMmRjMjZifS50b3gtcnRjLXVzZXItc2VsZWN0aW9uLS0yIC50b3gtcnRjLXVzZXItY3Vyc29ye2JhY2tncm91bmQtY29sb3I6I2UwM2UyZH0udG94LXJ0Yy11c2VyLXNlbGVjdGlvbi0tMyAudG94LXJ0Yy11c2VyLWN1cnNvcntiYWNrZ3JvdW5kLWNvbG9yOiNmMWM0MGZ9LnRveC1ydGMtdXNlci1zZWxlY3Rpb24tLTQgLnRveC1ydGMtdXNlci1jdXJzb3J7YmFja2dyb3VuZC1jb2xvcjojMzU5OGRifS50b3gtcnRjLXVzZXItc2VsZWN0aW9uLS01IC50b3gtcnRjLXVzZXItY3Vyc29ye2JhY2tncm91bmQtY29sb3I6I2I5NmFkOX0udG94LXJ0Yy11c2VyLXNlbGVjdGlvbi0tNiAudG94LXJ0Yy11c2VyLWN1cnNvcntiYWNrZ3JvdW5kLWNvbG9yOiNlNjdlMjN9LnRveC1ydGMtdXNlci1zZWxlY3Rpb24tLTcgLnRveC1ydGMtdXNlci1jdXJzb3J7YmFja2dyb3VuZC1jb2xvcjojYWFhNjlkfS50b3gtcnRjLXVzZXItc2VsZWN0aW9uLS04IC50b3gtcnRjLXVzZXItY3Vyc29ye2JhY2tncm91bmQtY29sb3I6I2YzNjhlMH0udG94LXJ0Yy1yZW1vdGUtaW1hZ2V7YmFja2dyb3VuZDojZWFlYWVhIHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9VVRGLTgsJTNDc3ZnJTIwd2lkdGglM0QlMjIzNiUyMiUyMGhlaWdodCUzRCUyMjEyJTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMzYlMjAxMiUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTNFJTBBJTIwJTIwJTNDY2lyY2xlJTIwY3glM0QlMjI2JTIyJTIwY3klM0QlMjI2JTIyJTIwciUzRCUyMjMlMjIlMjBmaWxsJTNEJTIycmdiYSgwJTJDJTIwMCUyQyUyMDAlMkMlMjAuMiklMjIlM0UlMEElMjAlMjAlMjAlMjAlM0NhbmltYXRlJTIwYXR0cmlidXRlTmFtZSUzRCUyMnIlMjIlMjB2YWx1ZXMlM0QlMjIzJTNCNSUzQjMlMjIlMjBjYWxjTW9kZSUzRCUyMmxpbmVhciUyMiUyMGR1ciUzRCUyMjFzJTIyJTIwcmVwZWF0Q291bnQlM0QlMjJpbmRlZmluaXRlJTIyJTIwJTJGJTNFJTBBJTIwJTIwJTNDJTJGY2lyY2xlJTNFJTBBJTIwJTIwJTNDY2lyY2xlJTIwY3glM0QlMjIxOCUyMiUyMGN5JTNEJTIyNiUyMiUyMHIlM0QlMjIzJTIyJTIwZmlsbCUzRCUyMnJnYmEoMCUyQyUyMDAlMkMlMjAwJTJDJTIwLjIpJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTNDYW5pbWF0ZSUyMGF0dHJpYnV0ZU5hbWUlM0QlMjJyJTIyJTIwdmFsdWVzJTNEJTIyMyUzQjUlM0IzJTIyJTIwY2FsY01vZGUlM0QlMjJsaW5lYXIlMjIlMjBiZWdpbiUzRCUyMi4zM3MlMjIlMjBkdXIlM0QlMjIxcyUyMiUyMHJlcGVhdENvdW50JTNEJTIyaW5kZWZpbml0ZSUyMiUyMCUyRiUzRSUwQSUyMCUyMCUzQyUyRmNpcmNsZSUzRSUwQSUyMCUyMCUzQ2NpcmNsZSUyMGN4JTNEJTIyMzAlMjIlMjBjeSUzRCUyMjYlMjIlMjByJTNEJTIyMyUyMiUyMGZpbGwlM0QlMjJyZ2JhKDAlMkMlMjAwJTJDJTIwMCUyQyUyMC4yKSUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQ2FuaW1hdGUlMjBhdHRyaWJ1dGVOYW1lJTNEJTIyciUyMiUyMHZhbHVlcyUzRCUyMjMlM0I1JTNCMyUyMiUyMGNhbGNNb2RlJTNEJTIybGluZWFyJTIyJTIwYmVnaW4lM0QlMjIuNjZzJTIyJTIwZHVyJTNEJTIyMXMlMjIlMjByZXBlYXRDb3VudCUzRCUyMmluZGVmaW5pdGUlMjIlMjAlMkYlM0UlMEElMjAlMjAlM0MlMkZjaXJjbGUlM0UlMEElM0MlMkZzdmclM0UlMEEiKSBuby1yZXBlYXQgY2VudGVyIGNlbnRlcjtib3JkZXI6MXB4IHNvbGlkICNjY2M7bWluLWhlaWdodDoyNDBweDttaW4td2lkdGg6MzIwcHh9Lm1jZS1tYXRjaC1tYXJrZXJ7YmFja2dyb3VuZDojYWFhO2NvbG9yOiNmZmZ9Lm1jZS1tYXRjaC1tYXJrZXItc2VsZWN0ZWR7YmFja2dyb3VuZDojMzlmO2NvbG9yOiNmZmZ9Lm1jZS1tYXRjaC1tYXJrZXItc2VsZWN0ZWQ6Oi1tb3otc2VsZWN0aW9ue2JhY2tncm91bmQ6IzM5Zjtjb2xvcjojZmZmfS5tY2UtbWF0Y2gtbWFya2VyLXNlbGVjdGVkOjpzZWxlY3Rpb257YmFja2dyb3VuZDojMzlmO2NvbG9yOiNmZmZ9Lm1jZS1jb250ZW50LWJvZHkgaW1nW2RhdGEtbWNlLXNlbGVjdGVkXSwubWNlLWNvbnRlbnQtYm9keSB0YWJsZVtkYXRhLW1jZS1zZWxlY3RlZF17b3V0bGluZTozcHggc29saWQgIzQwOTlmZn0ubWNlLWNvbnRlbnQtYm9keSBocltkYXRhLW1jZS1zZWxlY3RlZF17b3V0bGluZTozcHggc29saWQgIzQwOTlmZjtvdXRsaW5lLW9mZnNldDoxcHh9Lm1jZS1jb250ZW50LWJvZHkgW2NvbnRlbnRFZGl0YWJsZT1mYWxzZV0gW2NvbnRlbnRFZGl0YWJsZT10cnVlXTpmb2N1c3tvdXRsaW5lOjNweCBzb2xpZCAjNDA5OWZmfS5tY2UtY29udGVudC1ib2R5IFtjb250ZW50RWRpdGFibGU9ZmFsc2VdIFtjb250ZW50RWRpdGFibGU9dHJ1ZV06aG92ZXJ7b3V0bGluZTozcHggc29saWQgIzQwOTlmZn0ubWNlLWNvbnRlbnQtYm9keSBbY29udGVudEVkaXRhYmxlPWZhbHNlXVtkYXRhLW1jZS1zZWxlY3RlZF17Y3Vyc29yOm5vdC1hbGxvd2VkO291dGxpbmU6M3B4IHNvbGlkICM0MDk5ZmZ9Lm1jZS1jb250ZW50LWJvZHkubWNlLWNvbnRlbnQtcmVhZG9ubHkgW2NvbnRlbnRFZGl0YWJsZT10cnVlXTpmb2N1cywubWNlLWNvbnRlbnQtYm9keS5tY2UtY29udGVudC1yZWFkb25seSBbY29udGVudEVkaXRhYmxlPXRydWVdOmhvdmVye291dGxpbmU6MH0ubWNlLWNvbnRlbnQtYm9keSBbZGF0YS1tY2Utc2VsZWN0ZWQ9aW5saW5lLWJvdW5kYXJ5XXtiYWNrZ3JvdW5kLWNvbG9yOiM0MDk5ZmZ9Lm1jZS1jb250ZW50LWJvZHkgLm1jZS1lZGl0LWZvY3Vze291dGxpbmU6M3B4IHNvbGlkICM0MDk5ZmZ9Lm1jZS1jb250ZW50LWJvZHkgdGRbZGF0YS1tY2Utc2VsZWN0ZWRdLC5tY2UtY29udGVudC1ib2R5IHRoW2RhdGEtbWNlLXNlbGVjdGVkXXtiYWNrZ3JvdW5kLWNvbG9yOiNiNGQ3ZmYhaW1wb3J0YW50fS5tY2UtY29udGVudC1ib2R5IHRkW2RhdGEtbWNlLXNlbGVjdGVkXTo6LW1vei1zZWxlY3Rpb24sLm1jZS1jb250ZW50LWJvZHkgdGhbZGF0YS1tY2Utc2VsZWN0ZWRdOjotbW96LXNlbGVjdGlvbntiYWNrZ3JvdW5kOjAgMH0ubWNlLWNvbnRlbnQtYm9keSB0ZFtkYXRhLW1jZS1zZWxlY3RlZF06OnNlbGVjdGlvbiwubWNlLWNvbnRlbnQtYm9keSB0aFtkYXRhLW1jZS1zZWxlY3RlZF06OnNlbGVjdGlvbntiYWNrZ3JvdW5kOjAgMH0ubWNlLWNvbnRlbnQtYm9keSB0ZFtkYXRhLW1jZS1zZWxlY3RlZF0gKiwubWNlLWNvbnRlbnQtYm9keSB0aFtkYXRhLW1jZS1zZWxlY3RlZF0gKnstd2Via2l0LXRvdWNoLWNhbGxvdXQ6bm9uZTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmV9Lm1jZS1jb250ZW50LWJvZHkgaW1nOjotbW96LXNlbGVjdGlvbntiYWNrZ3JvdW5kOjAgMH0ubWNlLWNvbnRlbnQtYm9keSBpbWc6OnNlbGVjdGlvbntiYWNrZ3JvdW5kOjAgMH0uZXBob3gtc25vb2tlci1yZXNpemVyLWJhcntiYWNrZ3JvdW5kLWNvbG9yOiM0MDk5ZmY7b3BhY2l0eTowOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZX0uZXBob3gtc25vb2tlci1yZXNpemVyLWNvbHN7Y3Vyc29yOmNvbC1yZXNpemV9LmVwaG94LXNub29rZXItcmVzaXplci1yb3dze2N1cnNvcjpyb3ctcmVzaXplfS5lcGhveC1zbm9va2VyLXJlc2l6ZXItYmFyLmVwaG94LXNub29rZXItcmVzaXplci1iYXItZHJhZ2dpbmd7b3BhY2l0eToxfS5tY2Utc3BlbGxjaGVja2VyLXdvcmR7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVURi04LCUzQ3N2ZyUyMHdpZHRoJTNEJzQnJTIwaGVpZ2h0JTNEJzQnJTIweG1sbnMlM0QnaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJyUzRSUzQ3BhdGglMjBzdHJva2UlM0QnJTIzZmYwMDAwJyUyMGZpbGwlM0Qnbm9uZSclMjBzdHJva2UtbGluZWNhcCUzRCdyb3VuZCclMjBzdHJva2Utb3BhY2l0eSUzRCcuNzUnJTIwZCUzRCdNMCUyMDNMMiUyMDElMjA0JTIwMyclMkYlM0UlM0MlMkZzdmclM0UlMEEiKTtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgY2FsYygxMDAlICsgMXB4KTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteDtiYWNrZ3JvdW5kLXNpemU6YXV0byA2cHg7Y3Vyc29yOmRlZmF1bHQ7aGVpZ2h0OjJyZW19Lm1jZS1zcGVsbGNoZWNrZXItZ3JhbW1hcntiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9VVRGLTgsJTNDc3ZnJTIwd2lkdGglM0QnNCclMjBoZWlnaHQlM0QnNCclMjB4bWxucyUzRCdodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmcnJTNFJTNDcGF0aCUyMHN0cm9rZSUzRCclMjMwMEE4MzUnJTIwZmlsbCUzRCdub25lJyUyMHN0cm9rZS1saW5lY2FwJTNEJ3JvdW5kJyUyMGQlM0QnTTAlMjAzTDIlMjAxJTIwNCUyMDMnJTJGJTNFJTNDJTJGc3ZnJTNFJTBBIik7YmFja2dyb3VuZC1wb3NpdGlvbjowIGNhbGMoMTAwJSArIDFweCk7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXg7YmFja2dyb3VuZC1zaXplOmF1dG8gNnB4O2N1cnNvcjpkZWZhdWx0fS5tY2UtdG9je2JvcmRlcjoxcHggc29saWQgZ3JheX0ubWNlLXRvYyBoMnttYXJnaW46NHB4fS5tY2UtdG9jIGxpe2xpc3Qtc3R5bGUtdHlwZTpub25lfS5tY2UtaXRlbS10YWJsZSwubWNlLWl0ZW0tdGFibGUgY2FwdGlvbiwubWNlLWl0ZW0tdGFibGUgdGQsLm1jZS1pdGVtLXRhYmxlIHRoe2JvcmRlcjoxcHggZGFzaGVkICNiYmJ9Lm1jZS12aXN1YWxibG9ja3MgYWRkcmVzcywubWNlLXZpc3VhbGJsb2NrcyBhcnRpY2xlLC5tY2UtdmlzdWFsYmxvY2tzIGFzaWRlLC5tY2UtdmlzdWFsYmxvY2tzIGJsb2NrcXVvdGUsLm1jZS12aXN1YWxibG9ja3MgZGl2Om5vdChbZGF0YS1tY2UtYm9ndXNdKSwubWNlLXZpc3VhbGJsb2NrcyBkbCwubWNlLXZpc3VhbGJsb2NrcyBmaWdjYXB0aW9uLC5tY2UtdmlzdWFsYmxvY2tzIGZpZ3VyZSwubWNlLXZpc3VhbGJsb2NrcyBoMSwubWNlLXZpc3VhbGJsb2NrcyBoMiwubWNlLXZpc3VhbGJsb2NrcyBoMywubWNlLXZpc3VhbGJsb2NrcyBoNCwubWNlLXZpc3VhbGJsb2NrcyBoNSwubWNlLXZpc3VhbGJsb2NrcyBoNiwubWNlLXZpc3VhbGJsb2NrcyBoZ3JvdXAsLm1jZS12aXN1YWxibG9ja3Mgb2wsLm1jZS12aXN1YWxibG9ja3MgcCwubWNlLXZpc3VhbGJsb2NrcyBwcmUsLm1jZS12aXN1YWxibG9ja3Mgc2VjdGlvbiwubWNlLXZpc3VhbGJsb2NrcyB1bHtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7Ym9yZGVyOjFweCBkYXNoZWQgI2JiYjttYXJnaW4tbGVmdDozcHg7cGFkZGluZy10b3A6MTBweH0ubWNlLXZpc3VhbGJsb2NrcyBwe2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaENRQUpBSkVBQUFBQUFQLy8vN3U3dS8vLy95SDVCQUVBQUFNQUxBQUFBQUFKQUFrQUFBSVFuRytDcUNOL21seXZzUlVwVGhHNkFnQTcpfS5tY2UtdmlzdWFsYmxvY2tzIGgxe2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaERRQUtBSUFCQUx1N3UvLy8veUg1QkFFQUFBRUFMQUFBQUFBTkFBb0FBQUlYakk4R3liR3UxSnV4SG9BZlJOUlczVFdYeUYyWWlSVUFPdz09KX0ubWNlLXZpc3VhbGJsb2NrcyBoMntiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhEZ0FLQUlBQkFMdTd1Ly8vL3lINUJBRUFBQUVBTEFBQUFBQU9BQW9BQUFJYWpJOEh5YmJ4NG9PdXFnVHluSmQ2YkdsV2czRGtKem9hVUFBQU93PT0pfS5tY2UtdmlzdWFsYmxvY2tzIGgze2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaERnQUtBSUFCQUx1N3UvLy8veUg1QkFFQUFBRUFMQUFBQUFBT0FBb0FBQUlaakk4SHliYng0b091cWdUeW5KZjJMbjJOT0hwUXBtaEFBUUE3KX0ubWNlLXZpc3VhbGJsb2NrcyBoNHtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhEZ0FLQUlBQkFMdTd1Ly8vL3lINUJBRUFBQUVBTEFBQUFBQU9BQW9BQUFJYWpJOEh5YmJ4SW5SMHpxZUFkaHRKbFh3VjFvQ2xsMkhhV2dBQU93PT0pfS5tY2UtdmlzdWFsYmxvY2tzIGg1e2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaERnQUtBSUFCQUx1N3UvLy8veUg1QkFFQUFBRUFMQUFBQUFBT0FBb0FBQUlhakk4SHliYnhJb2l1d2phbmU0aXE1R2xXMDVHZ0lrSVpVQUFBT3c9PSl9Lm1jZS12aXN1YWxibG9ja3MgaDZ7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoRGdBS0FJQUJBTHU3dS8vLy95SDVCQUVBQUFFQUxBQUFBQUFPQUFvQUFBSWFqSThIeWJieElvaXV3amFuMDRqZXAxaVoxWFJsQW81YlZnQUFPdz09KX0ubWNlLXZpc3VhbGJsb2NrcyBkaXY6bm90KFtkYXRhLW1jZS1ib2d1c10pe2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEVnQUtBSUFCQUx1N3UvLy8veUg1QkFFQUFBRUFMQUFBQUFBU0FBb0FBQUlmakk5cG9JMGNnRHl3cmh1eGZicnpERWJRTTJFaTVhUmptb3lTVzRwQUFRQTcpfS5tY2UtdmlzdWFsYmxvY2tzIHNlY3Rpb257YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoS0FBS0FJQUJBTHU3dS8vLy95SDVCQUVBQUFFQUxBQUFBQUFvQUFvQUFBSTVqSStweXdjTlkzc0JXSGROcnBseXREMmVsbERlU1ZicCtHbVdxYURxRE1lcGM4dDE3WTR2QnNLNWhEeUpNY0k2S2t1WVUranBqTG9LQURzPSl9Lm1jZS12aXN1YWxibG9ja3MgYXJ0aWNsZXtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhLZ0FLQUlBQkFMdTd1Ly8vL3lINUJBRUFBQUVBTEFBQUFBQXFBQW9BQUFJNmpJK3B5d2tOWTN3RzBHQnZyc2QydFhHWVNHbmZpRjdpa3BYZW1UcE9pSlNjYXNZb0RKSnJqc0c5Z2tDSjBhZzZLaG1hSWUzcGpEWUJCUUE3KX0ubWNlLXZpc3VhbGJsb2NrcyBibG9ja3F1b3Rle2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaFBnQUtBSUFCQUx1N3UvLy8veUg1QkFFQUFBRUFMQUFBQUFBK0FBb0FBQUpQakkrcHkrMEtucHoweFFEeXVVaHZmb0dnSVg1aVNLWllncTV1Tkw1cTY5YXNaOHM1cnJmMHlabXBOa0paekZlc0JUdThUT2xEVkFhYlV5YXRndVZoV2R1dWQzRXlpVWs0NXhoVFRnTUJCUUE3KX0ubWNlLXZpc3VhbGJsb2NrcyBhZGRyZXNze2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaExRQUtBSUFCQUx1N3UvLy8veUg1QkFFQUFBRUFMQUFBQUFBdEFBb0FBQUkvakkrcHl3d05velNQMWdEeXlaY2piM1VhUnBYa1dhWG1aVzRPcUtMaEJtTHMrSzI2M0RrSks3T0plaWZoN0ZpY0tEOUExL0lwR2RLa3lGcE5tQ2tBQURzPSl9Lm1jZS12aXN1YWxibG9ja3MgcHJle2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEZRQUtBSUFCQUx1N3V3QUFBQ0g1QkFFQUFBRUFMQUFBQUFBVkFBb0FBQUlqakkrWm9OMGNnRHdTbW5wejFOQ3VlWUVSaG5pYlpWS0xObmJPcThJdktwSnRWUUFBT3c9PSl9Lm1jZS12aXN1YWxibG9ja3MgZmlndXJle2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEpBQUtBSUFBQUx1N3UvLy8veUg1QkFFQUFBRUFMQUFBQUFBa0FBb0FBQUkwakkrcHkrMmZ3QUhVU0Z2RDNSbHZHNEhJcDRuWDVKRlNwblpVSjZMbHJNNTJPRTd1U1dvc0JIU2Nna1NaajdkREtuV0FBZ0E3KX0ubWNlLXZpc3VhbGJsb2NrcyBmaWdjYXB0aW9ue2JvcmRlcjoxcHggZGFzaGVkICNiYmJ9Lm1jZS12aXN1YWxibG9ja3MgaGdyb3Vwe2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEp3QUtBSUFCQUx1N3V3QUFBQ0g1QkFFQUFBRUFMQUFBQUFBbkFBb0FBQUkzakkrcHl3WU5JM3VCMGdwc1J0dDVmRm5mTlphVlNZSmlsNFdvMDNIdjZaNjJ1T0NnaVhIMWtaSUlKOE5pSXhSckFaTk1aQXRRQUFBNyl9Lm1jZS12aXN1YWxibG9ja3MgYXNpZGV7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoSGdBS0FJQUJBS3FxcXYvLy95SDVCQUVBQUFFQUxBQUFBQUFlQUFvQUFBSXRqSStwRzhBUGpaT1R6Z3RxeTdJM2YxeWVobVFjRlk0V0taYnFCeXV0bVc0YUhVZDZ2ZmNWYmd1ZGdwWUNBRHM9KX0ubWNlLXZpc3VhbGJsb2NrcyB1bHtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhEUUFLQUlBQUFMdTd1Ly8vL3lINUJBRUFBQUVBTEFBQUFBQU5BQW9BQUFJWGpJOEd5Ykd1WW5xVVZTanZ3MjZEenpYaXFJRGxWd0FBT3c9PSl9Lm1jZS12aXN1YWxibG9ja3Mgb2x7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoRFFBS0FJQUJBTHU3dS8vLy95SDVCQUVBQUFFQUxBQUFBQUFOQUFvQUFBSVhqSThHeWJINkhIdDBxb3VyeEM2Q3Z6WGllSHllV1FBQU93PT0pfS5tY2UtdmlzdWFsYmxvY2tzIGRse2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaERRQUtBSUFCQUx1N3UvLy8veUg1QkFFQUFBRUFMQUFBQUFBTkFBb0FBQUlYakk4R3liRU9ubU92VW9Xem5UcWV1RWpOU0NxZUdSVUFPdz09KX0ubWNlLXZpc3VhbGJsb2Nrczpub3QoW2Rpcj1ydGxdKSBhZGRyZXNzLC5tY2UtdmlzdWFsYmxvY2tzOm5vdChbZGlyPXJ0bF0pIGFydGljbGUsLm1jZS12aXN1YWxibG9ja3M6bm90KFtkaXI9cnRsXSkgYXNpZGUsLm1jZS12aXN1YWxibG9ja3M6bm90KFtkaXI9cnRsXSkgYmxvY2txdW90ZSwubWNlLXZpc3VhbGJsb2Nrczpub3QoW2Rpcj1ydGxdKSBkaXY6bm90KFtkYXRhLW1jZS1ib2d1c10pLC5tY2UtdmlzdWFsYmxvY2tzOm5vdChbZGlyPXJ0bF0pIGRsLC5tY2UtdmlzdWFsYmxvY2tzOm5vdChbZGlyPXJ0bF0pIGZpZ2NhcHRpb24sLm1jZS12aXN1YWxibG9ja3M6bm90KFtkaXI9cnRsXSkgZmlndXJlLC5tY2UtdmlzdWFsYmxvY2tzOm5vdChbZGlyPXJ0bF0pIGgxLC5tY2UtdmlzdWFsYmxvY2tzOm5vdChbZGlyPXJ0bF0pIGgyLC5tY2UtdmlzdWFsYmxvY2tzOm5vdChbZGlyPXJ0bF0pIGgzLC5tY2UtdmlzdWFsYmxvY2tzOm5vdChbZGlyPXJ0bF0pIGg0LC5tY2UtdmlzdWFsYmxvY2tzOm5vdChbZGlyPXJ0bF0pIGg1LC5tY2UtdmlzdWFsYmxvY2tzOm5vdChbZGlyPXJ0bF0pIGg2LC5tY2UtdmlzdWFsYmxvY2tzOm5vdChbZGlyPXJ0bF0pIGhncm91cCwubWNlLXZpc3VhbGJsb2Nrczpub3QoW2Rpcj1ydGxdKSBvbCwubWNlLXZpc3VhbGJsb2Nrczpub3QoW2Rpcj1ydGxdKSBwLC5tY2UtdmlzdWFsYmxvY2tzOm5vdChbZGlyPXJ0bF0pIHByZSwubWNlLXZpc3VhbGJsb2Nrczpub3QoW2Rpcj1ydGxdKSBzZWN0aW9uLC5tY2UtdmlzdWFsYmxvY2tzOm5vdChbZGlyPXJ0bF0pIHVse21hcmdpbi1sZWZ0OjNweH0ubWNlLXZpc3VhbGJsb2Nrc1tkaXI9cnRsXSBhZGRyZXNzLC5tY2UtdmlzdWFsYmxvY2tzW2Rpcj1ydGxdIGFydGljbGUsLm1jZS12aXN1YWxibG9ja3NbZGlyPXJ0bF0gYXNpZGUsLm1jZS12aXN1YWxibG9ja3NbZGlyPXJ0bF0gYmxvY2txdW90ZSwubWNlLXZpc3VhbGJsb2Nrc1tkaXI9cnRsXSBkaXY6bm90KFtkYXRhLW1jZS1ib2d1c10pLC5tY2UtdmlzdWFsYmxvY2tzW2Rpcj1ydGxdIGRsLC5tY2UtdmlzdWFsYmxvY2tzW2Rpcj1ydGxdIGZpZ2NhcHRpb24sLm1jZS12aXN1YWxibG9ja3NbZGlyPXJ0bF0gZmlndXJlLC5tY2UtdmlzdWFsYmxvY2tzW2Rpcj1ydGxdIGgxLC5tY2UtdmlzdWFsYmxvY2tzW2Rpcj1ydGxdIGgyLC5tY2UtdmlzdWFsYmxvY2tzW2Rpcj1ydGxdIGgzLC5tY2UtdmlzdWFsYmxvY2tzW2Rpcj1ydGxdIGg0LC5tY2UtdmlzdWFsYmxvY2tzW2Rpcj1ydGxdIGg1LC5tY2UtdmlzdWFsYmxvY2tzW2Rpcj1ydGxdIGg2LC5tY2UtdmlzdWFsYmxvY2tzW2Rpcj1ydGxdIGhncm91cCwubWNlLXZpc3VhbGJsb2Nrc1tkaXI9cnRsXSBvbCwubWNlLXZpc3VhbGJsb2Nrc1tkaXI9cnRsXSBwLC5tY2UtdmlzdWFsYmxvY2tzW2Rpcj1ydGxdIHByZSwubWNlLXZpc3VhbGJsb2Nrc1tkaXI9cnRsXSBzZWN0aW9uLC5tY2UtdmlzdWFsYmxvY2tzW2Rpcj1ydGxdIHVse2JhY2tncm91bmQtcG9zaXRpb24teDpyaWdodDttYXJnaW4tcmlnaHQ6M3B4fS5tY2UtbmJzcCwubWNlLXNoeXtiYWNrZ3JvdW5kOiNhYWF9Lm1jZS1zaHk6OmFmdGVye2NvbnRlbnQ6Jy0nfWJvZHl7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZn10YWJsZXtib3JkZXItY29sbGFwc2U6Y29sbGFwc2V9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/skins/ui/oxide-dark/content.mobile.min.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICovCi50aW55bWNlLW1vYmlsZS11bmZvY3VzZWQtc2VsZWN0aW9ucyAudGlueW1jZS1tb2JpbGUtdW5mb2N1c2VkLXNlbGVjdGlvbntiYWNrZ3JvdW5kLWNvbG9yOmdyZWVuO2Rpc3BsYXk6aW5saW5lLWJsb2NrO29wYWNpdHk6LjU7cG9zaXRpb246YWJzb2x1dGV9Ym9keXstd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6bm9uZX1ib2R5IGltZ3ttYXgtd2lkdGg6OTZ2d31ib2R5IHRhYmxlIGltZ3ttYXgtd2lkdGg6OTUlfWJvZHl7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZn10YWJsZXtib3JkZXItY29sbGFwc2U6Y29sbGFwc2V9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/skins/ui/oxide-dark/fonts/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/skins/ui/oxide-dark/skin.min.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICovCi50b3h7Ym94LXNpemluZzpjb250ZW50LWJveDtjb2xvcjojMmEzNzQ2O2N1cnNvcjphdXRvO2ZvbnQtZmFtaWx5Oi1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCJTZWdvZSBVSSIsUm9ib3RvLE94eWdlbi1TYW5zLFVidW50dSxDYW50YXJlbGwsIkhlbHZldGljYSBOZXVlIixzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4O2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDpub3JtYWw7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RleHQtZGVjb3JhdGlvbjpub25lO3RleHQtc2hhZG93Om5vbmU7dGV4dC10cmFuc2Zvcm06bm9uZTt2ZXJ0aWNhbC1hbGlnbjppbml0aWFsO3doaXRlLXNwYWNlOm5vcm1hbH0udG94IDpub3Qoc3ZnKTpub3QocmVjdCl7Ym94LXNpemluZzppbmhlcml0O2NvbG9yOmluaGVyaXQ7Y3Vyc29yOmluaGVyaXQ7ZGlyZWN0aW9uOmluaGVyaXQ7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXN0eWxlOmluaGVyaXQ7Zm9udC13ZWlnaHQ6aW5oZXJpdDtsaW5lLWhlaWdodDppbmhlcml0Oy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjppbmhlcml0O3RleHQtYWxpZ246aW5oZXJpdDt0ZXh0LWRlY29yYXRpb246aW5oZXJpdDt0ZXh0LXNoYWRvdzppbmhlcml0O3RleHQtdHJhbnNmb3JtOmluaGVyaXQ7dmVydGljYWwtYWxpZ246aW5oZXJpdDt3aGl0ZS1zcGFjZTppbmhlcml0fS50b3ggOm5vdChzdmcpOm5vdChyZWN0KXtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MDtmbG9hdDpub25lO2hlaWdodDphdXRvO21hcmdpbjowO21heC13aWR0aDpub25lO291dGxpbmU6MDtwYWRkaW5nOjA7cG9zaXRpb246c3RhdGljO3dpZHRoOmF1dG99LnRveDpub3QoW2Rpcj1ydGxdKXtkaXJlY3Rpb246bHRyO3RleHQtYWxpZ246bGVmdH0udG94W2Rpcj1ydGxde2RpcmVjdGlvbjpydGw7dGV4dC1hbGlnbjpyaWdodH0udG94LXRpbnltY2V7Ym9yZGVyOjFweCBzb2xpZCAjMDAwO2JvcmRlci1yYWRpdXM6MDtib3gtc2hhZG93Om5vbmU7Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Zm9udC1mYW1pbHk6LWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsIlNlZ29lIFVJIixSb2JvdG8sT3h5Z2VuLVNhbnMsVWJ1bnR1LENhbnRhcmVsbCwiSGVsdmV0aWNhIE5ldWUiLHNhbnMtc2VyaWY7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlO3Zpc2liaWxpdHk6aW5oZXJpdCFpbXBvcnRhbnR9LnRveC10aW55bWNlLWlubGluZXtib3JkZXI6bm9uZTtib3gtc2hhZG93Om5vbmV9LnRveC10aW55bWNlLWlubGluZSAudG94LWVkaXRvci1oZWFkZXJ7Ym9yZGVyOjFweCBzb2xpZCAjMDAwO2JvcmRlci1yYWRpdXM6MDtib3gtc2hhZG93Om5vbmV9LnRveC10aW55bWNlLWF1eHtmb250LWZhbWlseTotYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwiU2Vnb2UgVUkiLFJvYm90byxPeHlnZW4tU2FucyxVYnVudHUsQ2FudGFyZWxsLCJIZWx2ZXRpY2EgTmV1ZSIsc2Fucy1zZXJpZjt6LWluZGV4OjEzMDB9LnRveC10aW55bWNlIDpmb2N1cywudG94LXRpbnltY2UtYXV4IDpmb2N1c3tvdXRsaW5lOjB9YnV0dG9uOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS50b3ggLmFjY2Vzc2liaWxpdHktaXNzdWVfX2hlYWRlcnthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O21hcmdpbi1ib3R0b206NHB4fS50b3ggLmFjY2Vzc2liaWxpdHktaXNzdWVfX2Rlc2NyaXB0aW9ue2FsaWduLWl0ZW1zOnN0cmV0Y2g7Ym9yZGVyOjFweCBzb2xpZCAjMDAwO2JvcmRlci1yYWRpdXM6M3B4O2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn0udG94IC5hY2Nlc3NpYmlsaXR5LWlzc3VlX19kZXNjcmlwdGlvbj5kaXZ7cGFkZGluZy1ib3R0b206NHB4fS50b3ggLmFjY2Vzc2liaWxpdHktaXNzdWVfX2Rlc2NyaXB0aW9uPmRpdj5kaXZ7YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDttYXJnaW4tYm90dG9tOjRweH0udG94IC5hY2Nlc3NpYmlsaXR5LWlzc3VlX19kZXNjcmlwdGlvbj46bGFzdC1jaGlsZDpub3QoOm9ubHktY2hpbGQpe2JvcmRlci1jb2xvcjojMDAwO2JvcmRlci1zdHlsZTpzb2xpZH0udG94IC5hY2Nlc3NpYmlsaXR5LWlzc3VlX19yZXBhaXJ7bWFyZ2luLXRvcDoxNnB4fS50b3ggLmFjY2Vzc2liaWxpdHktaXNzdWUtLWluZm8gLmFjY2Vzc2liaWxpdHktaXNzdWVfX2Rlc2NyaXB0aW9ue2JhY2tncm91bmQtY29sb3I6cmdiYSgzMiwxMjIsMTgzLC41KTtib3JkZXItY29sb3I6IzIwN2FiNztjb2xvcjojZmZmfS50b3ggLmFjY2Vzc2liaWxpdHktaXNzdWUtLWluZm8gLmFjY2Vzc2liaWxpdHktaXNzdWVfX2Rlc2NyaXB0aW9uPjpsYXN0LWNoaWxke2JvcmRlci1jb2xvcjojMjA3YWI3fS50b3ggLmFjY2Vzc2liaWxpdHktaXNzdWUtLWluZm8gaDJ7Y29sb3I6I2ZmZn0udG94IC5hY2Nlc3NpYmlsaXR5LWlzc3VlLS1pbmZvIC50b3gtaWNvbiBzdmd7ZmlsbDojZmZmfS50b3ggLmFjY2Vzc2liaWxpdHktaXNzdWUtLWluZm8gYSAudG94LWljb257Y29sb3I6I2ZmZn0udG94IC5hY2Nlc3NpYmlsaXR5LWlzc3VlLS13YXJuIC5hY2Nlc3NpYmlsaXR5LWlzc3VlX19kZXNjcmlwdGlvbntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE2NSwwLC41KTtib3JkZXItY29sb3I6cmdiYSgyNTUsMTY1LDAsLjgpO2NvbG9yOiNmZmZ9LnRveCAuYWNjZXNzaWJpbGl0eS1pc3N1ZS0td2FybiAuYWNjZXNzaWJpbGl0eS1pc3N1ZV9fZGVzY3JpcHRpb24+Omxhc3QtY2hpbGR7Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDE2NSwwLC44KX0udG94IC5hY2Nlc3NpYmlsaXR5LWlzc3VlLS13YXJuIGgye2NvbG9yOiNmZmZ9LnRveCAuYWNjZXNzaWJpbGl0eS1pc3N1ZS0td2FybiAudG94LWljb24gc3Zne2ZpbGw6I2ZmZn0udG94IC5hY2Nlc3NpYmlsaXR5LWlzc3VlLS13YXJuIGEgLnRveC1pY29ue2NvbG9yOiNmZmZ9LnRveCAuYWNjZXNzaWJpbGl0eS1pc3N1ZS0tZXJyb3IgLmFjY2Vzc2liaWxpdHktaXNzdWVfX2Rlc2NyaXB0aW9ue2JhY2tncm91bmQtY29sb3I6cmdiYSgyMDQsMCwwLC41KTtib3JkZXItY29sb3I6cmdiYSgyMDQsMCwwLC44KTtjb2xvcjojZmZmfS50b3ggLmFjY2Vzc2liaWxpdHktaXNzdWUtLWVycm9yIC5hY2Nlc3NpYmlsaXR5LWlzc3VlX19kZXNjcmlwdGlvbj46bGFzdC1jaGlsZHtib3JkZXItY29sb3I6cmdiYSgyMDQsMCwwLC44KX0udG94IC5hY2Nlc3NpYmlsaXR5LWlzc3VlLS1lcnJvciBoMntjb2xvcjojZmZmfS50b3ggLmFjY2Vzc2liaWxpdHktaXNzdWUtLWVycm9yIC50b3gtaWNvbiBzdmd7ZmlsbDojZmZmfS50b3ggLmFjY2Vzc2liaWxpdHktaXNzdWUtLWVycm9yIGEgLnRveC1pY29ue2NvbG9yOiNmZmZ9LnRveCAuYWNjZXNzaWJpbGl0eS1pc3N1ZS0tc3VjY2VzcyAuYWNjZXNzaWJpbGl0eS1pc3N1ZV9fZGVzY3JpcHRpb257YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDEyMCwxNzEsNzAsLjUpO2JvcmRlci1jb2xvcjpyZ2JhKDEyMCwxNzEsNzAsLjgpO2NvbG9yOiNmZmZ9LnRveCAuYWNjZXNzaWJpbGl0eS1pc3N1ZS0tc3VjY2VzcyAuYWNjZXNzaWJpbGl0eS1pc3N1ZV9fZGVzY3JpcHRpb24+Omxhc3QtY2hpbGR7Ym9yZGVyLWNvbG9yOnJnYmEoMTIwLDE3MSw3MCwuOCl9LnRveCAuYWNjZXNzaWJpbGl0eS1pc3N1ZS0tc3VjY2VzcyBoMntjb2xvcjojZmZmfS50b3ggLmFjY2Vzc2liaWxpdHktaXNzdWUtLXN1Y2Nlc3MgLnRveC1pY29uIHN2Z3tmaWxsOiNmZmZ9LnRveCAuYWNjZXNzaWJpbGl0eS1pc3N1ZS0tc3VjY2VzcyBhIC50b3gtaWNvbntjb2xvcjojZmZmfS50b3ggLnRveC1kaWFsb2dfX2JvZHktY29udGVudCAuYWNjZXNzaWJpbGl0eS1pc3N1ZV9faGVhZGVyIGgxLC50b3ggLnRveC1kaWFsb2dfX2JvZHktY29udGVudCAudG94LWZvcm1fX2dyb3VwIC5hY2Nlc3NpYmlsaXR5LWlzc3VlX19kZXNjcmlwdGlvbiBoMnttYXJnaW4tdG9wOjB9LnRveDpub3QoW2Rpcj1ydGxdKSAuYWNjZXNzaWJpbGl0eS1pc3N1ZV9faGVhZGVyIC50b3gtYnV0dG9ue21hcmdpbi1sZWZ0OjRweH0udG94Om5vdChbZGlyPXJ0bF0pIC5hY2Nlc3NpYmlsaXR5LWlzc3VlX19oZWFkZXI+Om50aC1sYXN0LWNoaWxkKDIpe21hcmdpbi1sZWZ0OmF1dG99LnRveDpub3QoW2Rpcj1ydGxdKSAuYWNjZXNzaWJpbGl0eS1pc3N1ZV9fZGVzY3JpcHRpb257cGFkZGluZzo0cHggNHB4IDRweCA4cHh9LnRveDpub3QoW2Rpcj1ydGxdKSAuYWNjZXNzaWJpbGl0eS1pc3N1ZV9fZGVzY3JpcHRpb24+Omxhc3QtY2hpbGR7Ym9yZGVyLWxlZnQtd2lkdGg6MXB4O3BhZGRpbmctbGVmdDo0cHh9LnRveFtkaXI9cnRsXSAuYWNjZXNzaWJpbGl0eS1pc3N1ZV9faGVhZGVyIC50b3gtYnV0dG9ue21hcmdpbi1yaWdodDo0cHh9LnRveFtkaXI9cnRsXSAuYWNjZXNzaWJpbGl0eS1pc3N1ZV9faGVhZGVyPjpudGgtbGFzdC1jaGlsZCgyKXttYXJnaW4tcmlnaHQ6YXV0b30udG94W2Rpcj1ydGxdIC5hY2Nlc3NpYmlsaXR5LWlzc3VlX19kZXNjcmlwdGlvbntwYWRkaW5nOjRweCA4cHggNHB4IDRweH0udG94W2Rpcj1ydGxdIC5hY2Nlc3NpYmlsaXR5LWlzc3VlX19kZXNjcmlwdGlvbj46bGFzdC1jaGlsZHtib3JkZXItcmlnaHQtd2lkdGg6MXB4O3BhZGRpbmctcmlnaHQ6NHB4fS50b3ggLnRveC1hbmNob3JiYXJ7ZGlzcGxheTpmbGV4O2ZsZXg6MCAwIGF1dG99LnRveCAudG94LWJhcntkaXNwbGF5OmZsZXg7ZmxleDowIDAgYXV0b30udG94IC50b3gtYnV0dG9ue2JhY2tncm91bmQtY29sb3I6IzIwN2FiNztiYWNrZ3JvdW5kLWltYWdlOm5vbmU7YmFja2dyb3VuZC1wb3NpdGlvbjowIDA7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0O2JvcmRlci1jb2xvcjojMjA3YWI3O2JvcmRlci1yYWRpdXM6M3B4O2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6MXB4O2JveC1zaGFkb3c6bm9uZTtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y29sb3I6I2ZmZjtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jaztmb250LWZhbWlseTotYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwiU2Vnb2UgVUkiLFJvYm90byxPeHlnZW4tU2FucyxVYnVudHUsQ2FudGFyZWxsLCJIZWx2ZXRpY2EgTmV1ZSIsc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo3MDA7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO2xpbmUtaGVpZ2h0OjI0cHg7bWFyZ2luOjA7b3V0bGluZTowO3BhZGRpbmc6NHB4IDE2cHg7dGV4dC1hbGlnbjpjZW50ZXI7dGV4dC1kZWNvcmF0aW9uOm5vbmU7dGV4dC10cmFuc2Zvcm06Y2FwaXRhbGl6ZTt3aGl0ZS1zcGFjZTpub3dyYXB9LnRveCAudG94LWJ1dHRvbltkaXNhYmxlZF17YmFja2dyb3VuZC1jb2xvcjojMjA3YWI3O2JhY2tncm91bmQtaW1hZ2U6bm9uZTtib3JkZXItY29sb3I6IzIwN2FiNztib3gtc2hhZG93Om5vbmU7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSk7Y3Vyc29yOm5vdC1hbGxvd2VkfS50b3ggLnRveC1idXR0b246Zm9jdXM6bm90KDpkaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjojMWM2Y2ExO2JhY2tncm91bmQtaW1hZ2U6bm9uZTtib3JkZXItY29sb3I6IzFjNmNhMTtib3gtc2hhZG93Om5vbmU7Y29sb3I6I2ZmZn0udG94IC50b3gtYnV0dG9uOmhvdmVyOm5vdCg6ZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6IzFjNmNhMTtiYWNrZ3JvdW5kLWltYWdlOm5vbmU7Ym9yZGVyLWNvbG9yOiMxYzZjYTE7Ym94LXNoYWRvdzpub25lO2NvbG9yOiNmZmZ9LnRveCAudG94LWJ1dHRvbjphY3RpdmU6bm90KDpkaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjojMTg1ZDhjO2JhY2tncm91bmQtaW1hZ2U6bm9uZTtib3JkZXItY29sb3I6IzE4NWQ4Yztib3gtc2hhZG93Om5vbmU7Y29sb3I6I2ZmZn0udG94IC50b3gtYnV0dG9uLS1zZWNvbmRhcnl7YmFja2dyb3VuZC1jb2xvcjojM2Q1NDZmO2JhY2tncm91bmQtaW1hZ2U6bm9uZTtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgMDtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQ7Ym9yZGVyLWNvbG9yOiMzZDU0NmY7Ym9yZGVyLXJhZGl1czozcHg7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDoxcHg7Ym94LXNoYWRvdzpub25lO2NvbG9yOiNmZmY7b3V0bGluZTowO3BhZGRpbmc6NHB4IDE2cHg7dGV4dC1kZWNvcmF0aW9uOm5vbmU7dGV4dC10cmFuc2Zvcm06Y2FwaXRhbGl6ZX0udG94IC50b3gtYnV0dG9uLS1zZWNvbmRhcnlbZGlzYWJsZWRde2JhY2tncm91bmQtY29sb3I6IzNkNTQ2ZjtiYWNrZ3JvdW5kLWltYWdlOm5vbmU7Ym9yZGVyLWNvbG9yOiMzZDU0NmY7Ym94LXNoYWRvdzpub25lO2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfS50b3ggLnRveC1idXR0b24tLXNlY29uZGFyeTpmb2N1czpub3QoOmRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOiMzNDQ4NWY7YmFja2dyb3VuZC1pbWFnZTpub25lO2JvcmRlci1jb2xvcjojMzQ0ODVmO2JveC1zaGFkb3c6bm9uZTtjb2xvcjojZmZmfS50b3ggLnRveC1idXR0b24tLXNlY29uZGFyeTpob3Zlcjpub3QoOmRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOiMzNDQ4NWY7YmFja2dyb3VuZC1pbWFnZTpub25lO2JvcmRlci1jb2xvcjojMzQ0ODVmO2JveC1zaGFkb3c6bm9uZTtjb2xvcjojZmZmfS50b3ggLnRveC1idXR0b24tLXNlY29uZGFyeTphY3RpdmU6bm90KDpkaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjojMmIzYjRlO2JhY2tncm91bmQtaW1hZ2U6bm9uZTtib3JkZXItY29sb3I6IzJiM2I0ZTtib3gtc2hhZG93Om5vbmU7Y29sb3I6I2ZmZn0udG94IC50b3gtYnV0dG9uLS1pY29uLC50b3ggLnRveC1idXR0b24udG94LWJ1dHRvbi0taWNvbiwudG94IC50b3gtYnV0dG9uLnRveC1idXR0b24tLXNlY29uZGFyeS50b3gtYnV0dG9uLS1pY29ue3BhZGRpbmc6NHB4fS50b3ggLnRveC1idXR0b24tLWljb24gLnRveC1pY29uIHN2ZywudG94IC50b3gtYnV0dG9uLnRveC1idXR0b24tLWljb24gLnRveC1pY29uIHN2ZywudG94IC50b3gtYnV0dG9uLnRveC1idXR0b24tLXNlY29uZGFyeS50b3gtYnV0dG9uLS1pY29uIC50b3gtaWNvbiBzdmd7ZGlzcGxheTpibG9jaztmaWxsOmN1cnJlbnRDb2xvcn0udG94IC50b3gtYnV0dG9uLWxpbmt7YmFja2dyb3VuZDowO2JvcmRlcjpub25lO2JveC1zaXppbmc6Ym9yZGVyLWJveDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jaztmb250LWZhbWlseTotYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwiU2Vnb2UgVUkiLFJvYm90byxPeHlnZW4tU2FucyxVYnVudHUsQ2FudGFyZWxsLCJIZWx2ZXRpY2EgTmV1ZSIsc2Fucy1zZXJpZjtmb250LXNpemU6MTZweDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4zO21hcmdpbjowO3BhZGRpbmc6MDt3aGl0ZS1zcGFjZTpub3dyYXB9LnRveCAudG94LWJ1dHRvbi1saW5rLS1zbXtmb250LXNpemU6MTRweH0udG94IC50b3gtYnV0dG9uLS1uYWtlZHtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudDtib3gtc2hhZG93OnVuc2V0O2NvbG9yOiNmZmZ9LnRveCAudG94LWJ1dHRvbi0tbmFrZWRbZGlzYWJsZWRde2JhY2tncm91bmQtY29sb3I6IzNkNTQ2Zjtib3JkZXItY29sb3I6IzNkNTQ2Zjtib3gtc2hhZG93Om5vbmU7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9LnRveCAudG94LWJ1dHRvbi0tbmFrZWQ6aG92ZXI6bm90KDpkaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjojMzQ0ODVmO2JvcmRlci1jb2xvcjojMzQ0ODVmO2JveC1zaGFkb3c6bm9uZTtjb2xvcjojZmZmfS50b3ggLnRveC1idXR0b24tLW5ha2VkOmZvY3VzOm5vdCg6ZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6IzM0NDg1Zjtib3JkZXItY29sb3I6IzM0NDg1Zjtib3gtc2hhZG93Om5vbmU7Y29sb3I6I2ZmZn0udG94IC50b3gtYnV0dG9uLS1uYWtlZDphY3RpdmU6bm90KDpkaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjojMmIzYjRlO2JvcmRlci1jb2xvcjojMmIzYjRlO2JveC1zaGFkb3c6bm9uZTtjb2xvcjojZmZmfS50b3ggLnRveC1idXR0b24tLW5ha2VkIC50b3gtaWNvbiBzdmd7ZmlsbDpjdXJyZW50Q29sb3J9LnRveCAudG94LWJ1dHRvbi0tbmFrZWQudG94LWJ1dHRvbi0taWNvbjpob3Zlcjpub3QoOmRpc2FibGVkKXtjb2xvcjojZmZmfS50b3ggLnRveC1jaGVja2JveHthbGlnbi1pdGVtczpjZW50ZXI7Ym9yZGVyLXJhZGl1czozcHg7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpmbGV4O2hlaWdodDozNnB4O21pbi13aWR0aDozNnB4fS50b3ggLnRveC1jaGVja2JveF9faW5wdXR7aGVpZ2h0OjFweDtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246YWJzb2x1dGU7dG9wOmF1dG87d2lkdGg6MXB4fS50b3ggLnRveC1jaGVja2JveF9faWNvbnN7YWxpZ24taXRlbXM6Y2VudGVyO2JvcmRlci1yYWRpdXM6M3B4O2JveC1zaGFkb3c6MCAwIDAgMnB4IHRyYW5zcGFyZW50O2JveC1zaXppbmc6Y29udGVudC1ib3g7ZGlzcGxheTpmbGV4O2hlaWdodDoyNHB4O2p1c3RpZnktY29udGVudDpjZW50ZXI7cGFkZGluZzpjYWxjKDRweCAtIDFweCk7d2lkdGg6MjRweH0udG94IC50b3gtY2hlY2tib3hfX2ljb25zIC50b3gtY2hlY2tib3gtaWNvbl9fdW5jaGVja2VkIHN2Z3tkaXNwbGF5OmJsb2NrO2ZpbGw6cmdiYSgyNTUsMjU1LDI1NSwuMil9LnRveCAudG94LWNoZWNrYm94X19pY29ucyAudG94LWNoZWNrYm94LWljb25fX2luZGV0ZXJtaW5hdGUgc3Zne2Rpc3BsYXk6bm9uZTtmaWxsOiMyMDdhYjd9LnRveCAudG94LWNoZWNrYm94X19pY29ucyAudG94LWNoZWNrYm94LWljb25fX2NoZWNrZWQgc3Zne2Rpc3BsYXk6bm9uZTtmaWxsOiMyMDdhYjd9LnRveCAudG94LWNoZWNrYm94LS1kaXNhYmxlZHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KTtjdXJzb3I6bm90LWFsbG93ZWR9LnRveCAudG94LWNoZWNrYm94LS1kaXNhYmxlZCAudG94LWNoZWNrYm94X19pY29ucyAudG94LWNoZWNrYm94LWljb25fX2NoZWNrZWQgc3Zne2ZpbGw6cmdiYSgyNTUsMjU1LDI1NSwuNSl9LnRveCAudG94LWNoZWNrYm94LS1kaXNhYmxlZCAudG94LWNoZWNrYm94X19pY29ucyAudG94LWNoZWNrYm94LWljb25fX3VuY2hlY2tlZCBzdmd7ZmlsbDpyZ2JhKDI1NSwyNTUsMjU1LC41KX0udG94IC50b3gtY2hlY2tib3gtLWRpc2FibGVkIC50b3gtY2hlY2tib3hfX2ljb25zIC50b3gtY2hlY2tib3gtaWNvbl9faW5kZXRlcm1pbmF0ZSBzdmd7ZmlsbDpyZ2JhKDI1NSwyNTUsMjU1LC41KX0udG94IGlucHV0LnRveC1jaGVja2JveF9faW5wdXQ6Y2hlY2tlZCsudG94LWNoZWNrYm94X19pY29ucyAudG94LWNoZWNrYm94LWljb25fX3VuY2hlY2tlZCBzdmd7ZGlzcGxheTpub25lfS50b3ggaW5wdXQudG94LWNoZWNrYm94X19pbnB1dDpjaGVja2VkKy50b3gtY2hlY2tib3hfX2ljb25zIC50b3gtY2hlY2tib3gtaWNvbl9fY2hlY2tlZCBzdmd7ZGlzcGxheTpibG9ja30udG94IGlucHV0LnRveC1jaGVja2JveF9faW5wdXQ6aW5kZXRlcm1pbmF0ZSsudG94LWNoZWNrYm94X19pY29ucyAudG94LWNoZWNrYm94LWljb25fX3VuY2hlY2tlZCBzdmd7ZGlzcGxheTpub25lfS50b3ggaW5wdXQudG94LWNoZWNrYm94X19pbnB1dDppbmRldGVybWluYXRlKy50b3gtY2hlY2tib3hfX2ljb25zIC50b3gtY2hlY2tib3gtaWNvbl9faW5kZXRlcm1pbmF0ZSBzdmd7ZGlzcGxheTpibG9ja30udG94IGlucHV0LnRveC1jaGVja2JveF9faW5wdXQ6Zm9jdXMrLnRveC1jaGVja2JveF9faWNvbnN7Ym9yZGVyLXJhZGl1czozcHg7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggIzIwN2FiNztwYWRkaW5nOmNhbGMoNHB4IC0gMXB4KX0udG94Om5vdChbZGlyPXJ0bF0pIC50b3gtY2hlY2tib3hfX2xhYmVse21hcmdpbi1sZWZ0OjRweH0udG94Om5vdChbZGlyPXJ0bF0pIC50b3gtY2hlY2tib3hfX2lucHV0e2xlZnQ6LTEwMDAwcHh9LnRveDpub3QoW2Rpcj1ydGxdKSAudG94LWJhciAudG94LWNoZWNrYm94e21hcmdpbi1sZWZ0OjRweH0udG94W2Rpcj1ydGxdIC50b3gtY2hlY2tib3hfX2xhYmVse21hcmdpbi1yaWdodDo0cHh9LnRveFtkaXI9cnRsXSAudG94LWNoZWNrYm94X19pbnB1dHtyaWdodDotMTAwMDBweH0udG94W2Rpcj1ydGxdIC50b3gtYmFyIC50b3gtY2hlY2tib3h7bWFyZ2luLXJpZ2h0OjRweH0udG94IC50b3gtY29sbGVjdGlvbi0tdG9vbGJhciAudG94LWNvbGxlY3Rpb25fX2dyb3Vwe2Rpc3BsYXk6ZmxleDtwYWRkaW5nOjB9LnRveCAudG94LWNvbGxlY3Rpb24tLWdyaWQgLnRveC1jb2xsZWN0aW9uX19ncm91cHtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7bWF4LWhlaWdodDoyMDhweDtvdmVyZmxvdy14OmhpZGRlbjtvdmVyZmxvdy15OmF1dG87cGFkZGluZzowfS50b3ggLnRveC1jb2xsZWN0aW9uLS1saXN0IC50b3gtY29sbGVjdGlvbl9fZ3JvdXB7Ym9yZGVyLWJvdHRvbS13aWR0aDowO2JvcmRlci1jb2xvcjojMWExYTFhO2JvcmRlci1sZWZ0LXdpZHRoOjA7Ym9yZGVyLXJpZ2h0LXdpZHRoOjA7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci10b3Atd2lkdGg6MXB4O3BhZGRpbmc6NHB4IDB9LnRveCAudG94LWNvbGxlY3Rpb24tLWxpc3QgLnRveC1jb2xsZWN0aW9uX19ncm91cDpmaXJzdC1jaGlsZHtib3JkZXItdG9wLXdpZHRoOjB9LnRveCAudG94LWNvbGxlY3Rpb25fX2dyb3VwLWhlYWRpbmd7YmFja2dyb3VuZC1jb2xvcjojMzMzO2NvbG9yOiNmZmY7Y3Vyc29yOmRlZmF1bHQ7Zm9udC1zaXplOjEycHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6NDAwO21hcmdpbi1ib3R0b206NHB4O21hcmdpbi10b3A6LTRweDtwYWRkaW5nOjRweCA4cHg7dGV4dC10cmFuc2Zvcm06bm9uZTstd2Via2l0LXRvdWNoLWNhbGxvdXQ6bm9uZTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmV9LnRveCAudG94LWNvbGxlY3Rpb25fX2l0ZW17YWxpZ24taXRlbXM6Y2VudGVyO2NvbG9yOiNmZmY7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpmbGV4Oy13ZWJraXQtdG91Y2gtY2FsbG91dDpub25lOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZX0udG94IC50b3gtY29sbGVjdGlvbi0tbGlzdCAudG94LWNvbGxlY3Rpb25fX2l0ZW17cGFkZGluZzo0cHggOHB4fS50b3ggLnRveC1jb2xsZWN0aW9uLS10b29sYmFyIC50b3gtY29sbGVjdGlvbl9faXRlbXtib3JkZXItcmFkaXVzOjNweDtwYWRkaW5nOjRweH0udG94IC50b3gtY29sbGVjdGlvbi0tZ3JpZCAudG94LWNvbGxlY3Rpb25fX2l0ZW17Ym9yZGVyLXJhZGl1czozcHg7cGFkZGluZzo0cHh9LnRveCAudG94LWNvbGxlY3Rpb24tLWxpc3QgLnRveC1jb2xsZWN0aW9uX19pdGVtLS1lbmFibGVke2JhY2tncm91bmQtY29sb3I6IzJiM2I0ZTtjb2xvcjojZmZmfS50b3ggLnRveC1jb2xsZWN0aW9uLS1saXN0IC50b3gtY29sbGVjdGlvbl9faXRlbS0tYWN0aXZle2JhY2tncm91bmQtY29sb3I6IzRhNTU2Mn0udG94IC50b3gtY29sbGVjdGlvbi0tdG9vbGJhciAudG94LWNvbGxlY3Rpb25fX2l0ZW0tLWVuYWJsZWR7YmFja2dyb3VuZC1jb2xvcjojNzU3ZDg3O2NvbG9yOiNmZmZ9LnRveCAudG94LWNvbGxlY3Rpb24tLXRvb2xiYXIgLnRveC1jb2xsZWN0aW9uX19pdGVtLS1hY3RpdmV7YmFja2dyb3VuZC1jb2xvcjojNGE1NTYyfS50b3ggLnRveC1jb2xsZWN0aW9uLS1ncmlkIC50b3gtY29sbGVjdGlvbl9faXRlbS0tZW5hYmxlZHtiYWNrZ3JvdW5kLWNvbG9yOiM3NTdkODc7Y29sb3I6I2ZmZn0udG94IC50b3gtY29sbGVjdGlvbi0tZ3JpZCAudG94LWNvbGxlY3Rpb25fX2l0ZW0tLWFjdGl2ZTpub3QoLnRveC1jb2xsZWN0aW9uX19pdGVtLS1zdGF0ZS1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjojNGE1NTYyO2NvbG9yOiNmZmZ9LnRveCAudG94LWNvbGxlY3Rpb24tLWxpc3QgLnRveC1jb2xsZWN0aW9uX19pdGVtLS1hY3RpdmU6bm90KC50b3gtY29sbGVjdGlvbl9faXRlbS0tc3RhdGUtZGlzYWJsZWQpe2NvbG9yOiNmZmZ9LnRveCAudG94LWNvbGxlY3Rpb24tLXRvb2xiYXIgLnRveC1jb2xsZWN0aW9uX19pdGVtLS1hY3RpdmU6bm90KC50b3gtY29sbGVjdGlvbl9faXRlbS0tc3RhdGUtZGlzYWJsZWQpe2NvbG9yOiNmZmZ9LnRveCAudG94LWNvbGxlY3Rpb25fX2l0ZW0tLXN0YXRlLWRpc2FibGVke2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSk7Y3Vyc29yOm5vdC1hbGxvd2VkfS50b3ggLnRveC1jb2xsZWN0aW9uX19pdGVtLWNoZWNrbWFyaywudG94IC50b3gtY29sbGVjdGlvbl9faXRlbS1pY29ue2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7aGVpZ2h0OjI0cHg7anVzdGlmeS1jb250ZW50OmNlbnRlcjt3aWR0aDoyNHB4fS50b3ggLnRveC1jb2xsZWN0aW9uX19pdGVtLWNoZWNrbWFyayBzdmcsLnRveCAudG94LWNvbGxlY3Rpb25fX2l0ZW0taWNvbiBzdmd7ZmlsbDpjdXJyZW50Q29sb3J9LnRveCAudG94LWNvbGxlY3Rpb24tLXRvb2xiYXItbGcgLnRveC1jb2xsZWN0aW9uX19pdGVtLWljb257aGVpZ2h0OjQ4cHg7d2lkdGg6NDhweH0udG94IC50b3gtY29sbGVjdGlvbl9faXRlbS1sYWJlbHtjb2xvcjpjdXJyZW50Q29sb3I7ZGlzcGxheTppbmxpbmUtYmxvY2s7ZmxleDoxOy1tcy1mbGV4LXByZWZlcnJlZC1zaXplOmF1dG87Zm9udC1zaXplOjE0cHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjI0cHg7dGV4dC10cmFuc2Zvcm06bm9uZTt3b3JkLWJyZWFrOmJyZWFrLWFsbH0udG94IC50b3gtY29sbGVjdGlvbl9faXRlbS1hY2Nlc3Nvcnl7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSk7ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC1zaXplOjE0cHg7aGVpZ2h0OjI0cHg7bGluZS1oZWlnaHQ6MjRweDt0ZXh0LXRyYW5zZm9ybTpub25lfS50b3ggLnRveC1jb2xsZWN0aW9uX19pdGVtLWNhcmV0e2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7bWluLWhlaWdodDoyNHB4fS50b3ggLnRveC1jb2xsZWN0aW9uX19pdGVtLWNhcmV0OjphZnRlcntjb250ZW50OicnO2ZvbnQtc2l6ZTowO21pbi1oZWlnaHQ6aW5oZXJpdH0udG94IC50b3gtY29sbGVjdGlvbl9faXRlbS1jYXJldCBzdmd7ZmlsbDojZmZmfS50b3ggLnRveC1jb2xsZWN0aW9uLS1saXN0IC50b3gtY29sbGVjdGlvbl9faXRlbTpub3QoLnRveC1jb2xsZWN0aW9uX19pdGVtLS1lbmFibGVkKSAudG94LWNvbGxlY3Rpb25fX2l0ZW0tY2hlY2ttYXJrIHN2Z3tkaXNwbGF5Om5vbmV9LnRveCAudG94LWNvbGxlY3Rpb24tLWxpc3QgLnRveC1jb2xsZWN0aW9uX19pdGVtOm5vdCgudG94LWNvbGxlY3Rpb25fX2l0ZW0tLWVuYWJsZWQpIC50b3gtY29sbGVjdGlvbl9faXRlbS1hY2Nlc3NvcnkrLnRveC1jb2xsZWN0aW9uX19pdGVtLWNoZWNrbWFya3tkaXNwbGF5Om5vbmV9LnRveCAudG94LWNvbGxlY3Rpb24tLWhvcml6b250YWx7YmFja2dyb3VuZC1jb2xvcjojMmIzYjRlO2JvcmRlcjoxcHggc29saWQgIzFhMWExYTtib3JkZXItcmFkaXVzOjNweDtib3gtc2hhZG93OjAgMXB4IDNweCByZ2JhKDAsMCwwLC4xNSk7ZGlzcGxheTpmbGV4O2ZsZXg6MCAwIGF1dG87ZmxleC1zaHJpbms6MDtmbGV4LXdyYXA6bm93cmFwO21hcmdpbi1ib3R0b206MDtvdmVyZmxvdy14OmF1dG87cGFkZGluZzowfS50b3ggLnRveC1jb2xsZWN0aW9uLS1ob3Jpem9udGFsIC50b3gtY29sbGVjdGlvbl9fZ3JvdXB7YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6bm93cmFwO21hcmdpbjowO3BhZGRpbmc6MCA0cHh9LnRveCAudG94LWNvbGxlY3Rpb24tLWhvcml6b250YWwgLnRveC1jb2xsZWN0aW9uX19pdGVte2hlaWdodDozNHB4O21hcmdpbjoycHggMCAzcHggMDtwYWRkaW5nOjAgNHB4fS50b3ggLnRveC1jb2xsZWN0aW9uLS1ob3Jpem9udGFsIC50b3gtY29sbGVjdGlvbl9faXRlbS1sYWJlbHt3aGl0ZS1zcGFjZTpub3dyYXB9LnRveCAudG94LWNvbGxlY3Rpb24tLWhvcml6b250YWwgLnRveC1jb2xsZWN0aW9uX19pdGVtLWNhcmV0e21hcmdpbi1sZWZ0OjRweH0udG94Om5vdChbZGlyPXJ0bF0pIC50b3gtY29sbGVjdGlvbi0taG9yaXpvbnRhbCAudG94LWNvbGxlY3Rpb25fX2dyb3VwOm5vdCg6bGFzdC1vZi10eXBlKXtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICMwMDB9LnRveDpub3QoW2Rpcj1ydGxdKSAudG94LWNvbGxlY3Rpb24tLWxpc3QgLnRveC1jb2xsZWN0aW9uX19pdGVtPjpub3QoOmZpcnN0LWNoaWxkKXttYXJnaW4tbGVmdDo4cHh9LnRveDpub3QoW2Rpcj1ydGxdKSAudG94LWNvbGxlY3Rpb24tLWxpc3QgLnRveC1jb2xsZWN0aW9uX19pdGVtLWxhYmVsOmZpcnN0LWNoaWxke21hcmdpbi1sZWZ0OjRweH0udG94Om5vdChbZGlyPXJ0bF0pIC50b3gtY29sbGVjdGlvbl9faXRlbS1hY2Nlc3Nvcnl7bWFyZ2luLWxlZnQ6MTZweDt0ZXh0LWFsaWduOnJpZ2h0fS50b3g6bm90KFtkaXI9cnRsXSkgLnRveC1jb2xsZWN0aW9uIC50b3gtY29sbGVjdGlvbl9faXRlbS1jYXJldHttYXJnaW4tbGVmdDoxNnB4fS50b3hbZGlyPXJ0bF0gLnRveC1jb2xsZWN0aW9uLS1ob3Jpem9udGFsIC50b3gtY29sbGVjdGlvbl9fZ3JvdXA6bm90KDpsYXN0LW9mLXR5cGUpe2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjMDAwfS50b3hbZGlyPXJ0bF0gLnRveC1jb2xsZWN0aW9uLS1saXN0IC50b3gtY29sbGVjdGlvbl9faXRlbT46bm90KDpmaXJzdC1jaGlsZCl7bWFyZ2luLXJpZ2h0OjhweH0udG94W2Rpcj1ydGxdIC50b3gtY29sbGVjdGlvbi0tbGlzdCAudG94LWNvbGxlY3Rpb25fX2l0ZW0tbGFiZWw6Zmlyc3QtY2hpbGR7bWFyZ2luLXJpZ2h0OjRweH0udG94W2Rpcj1ydGxdIC50b3gtY29sbGVjdGlvbl9faXRlbS1pY29uLXJ0bCAudG94LWNvbGxlY3Rpb25fX2l0ZW0taWNvbiBzdmd7dHJhbnNmb3JtOnJvdGF0ZVkoMTgwZGVnKX0udG94W2Rpcj1ydGxdIC50b3gtY29sbGVjdGlvbl9faXRlbS1hY2Nlc3Nvcnl7bWFyZ2luLXJpZ2h0OjE2cHg7dGV4dC1hbGlnbjpsZWZ0fS50b3hbZGlyPXJ0bF0gLnRveC1jb2xsZWN0aW9uIC50b3gtY29sbGVjdGlvbl9faXRlbS1jYXJldHttYXJnaW4tcmlnaHQ6MTZweDt0cmFuc2Zvcm06cm90YXRlWSgxODBkZWcpfS50b3hbZGlyPXJ0bF0gLnRveC1jb2xsZWN0aW9uLS1ob3Jpem9udGFsIC50b3gtY29sbGVjdGlvbl9faXRlbS1jYXJldHttYXJnaW4tcmlnaHQ6NHB4fS50b3ggLnRveC1jb2xvci1waWNrZXItY29udGFpbmVye2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3c7aGVpZ2h0OjIyNXB4O21hcmdpbjowfS50b3ggLnRveC1zdi1wYWxldHRle2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmZsZXg7aGVpZ2h0OjEwMCV9LnRveCAudG94LXN2LXBhbGV0dGUtc3BlY3RydW17aGVpZ2h0OjEwMCV9LnRveCAudG94LXN2LXBhbGV0dGUsLnRveCAudG94LXN2LXBhbGV0dGUtc3BlY3RydW17d2lkdGg6MjI1cHh9LnRveCAudG94LXN2LXBhbGV0dGUtdGh1bWJ7YmFja2dyb3VuZDowIDA7Ym9yZGVyOjFweCBzb2xpZCAjMDAwO2JvcmRlci1yYWRpdXM6NTAlO2JveC1zaXppbmc6Y29udGVudC1ib3g7aGVpZ2h0OjEycHg7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTJweH0udG94IC50b3gtc3YtcGFsZXR0ZS1pbm5lci10aHVtYntib3JkZXI6MXB4IHNvbGlkICNmZmY7Ym9yZGVyLXJhZGl1czo1MCU7aGVpZ2h0OjEwcHg7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTBweH0udG94IC50b3gtaHVlLXNsaWRlcntib3gtc2l6aW5nOmJvcmRlci1ib3g7aGVpZ2h0OjEwMCU7d2lkdGg6MjVweH0udG94IC50b3gtaHVlLXNsaWRlci1zcGVjdHJ1bXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBib3R0b20scmVkLCNmZjAwODAsI2YwZiwjODAwMGZmLCMwMGYsIzAwODBmZiwjMGZmLCMwMGZmODAsIzBmMCwjODBmZjAwLCNmZjAsI2ZmODAwMCxyZWQpO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LnRveCAudG94LWh1ZS1zbGlkZXIsLnRveCAudG94LWh1ZS1zbGlkZXItc3BlY3RydW17d2lkdGg6MjBweH0udG94IC50b3gtaHVlLXNsaWRlci10aHVtYntiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjMDAwO2JveC1zaXppbmc6Y29udGVudC1ib3g7aGVpZ2h0OjRweDt3aWR0aDoxMDAlfS50b3ggLnRveC1yZ2ItZm9ybXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufS50b3ggLnRveC1yZ2ItZm9ybSBkaXZ7YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjttYXJnaW4tYm90dG9tOjVweDt3aWR0aDppbmhlcml0fS50b3ggLnRveC1yZ2ItZm9ybSBpbnB1dHt3aWR0aDo2ZW19LnRveCAudG94LXJnYi1mb3JtIGlucHV0LnRveC1pbnZhbGlke2JvcmRlcjoxcHggc29saWQgcmVkIWltcG9ydGFudH0udG94IC50b3gtcmdiLWZvcm0gLnRveC1yZ2JhLXByZXZpZXd7Ym9yZGVyOjFweCBzb2xpZCAjMDAwO2ZsZXgtZ3JvdzoyO21hcmdpbi1ib3R0b206MH0udG94Om5vdChbZGlyPXJ0bF0pIC50b3gtc3YtcGFsZXR0ZXttYXJnaW4tcmlnaHQ6MTVweH0udG94Om5vdChbZGlyPXJ0bF0pIC50b3gtaHVlLXNsaWRlcnttYXJnaW4tcmlnaHQ6MTVweH0udG94Om5vdChbZGlyPXJ0bF0pIC50b3gtaHVlLXNsaWRlci10aHVtYnttYXJnaW4tbGVmdDotMXB4fS50b3g6bm90KFtkaXI9cnRsXSkgLnRveC1yZ2ItZm9ybSBsYWJlbHttYXJnaW4tcmlnaHQ6LjVlbX0udG94W2Rpcj1ydGxdIC50b3gtc3YtcGFsZXR0ZXttYXJnaW4tbGVmdDoxNXB4fS50b3hbZGlyPXJ0bF0gLnRveC1odWUtc2xpZGVye21hcmdpbi1sZWZ0OjE1cHh9LnRveFtkaXI9cnRsXSAudG94LWh1ZS1zbGlkZXItdGh1bWJ7bWFyZ2luLXJpZ2h0Oi0xcHh9LnRveFtkaXI9cnRsXSAudG94LXJnYi1mb3JtIGxhYmVse21hcmdpbi1sZWZ0Oi41ZW19LnRveCAudG94LXRvb2xiYXIgLnRveC1zd2F0Y2hlcywudG94IC50b3gtdG9vbGJhcl9fb3ZlcmZsb3cgLnRveC1zd2F0Y2hlcywudG94IC50b3gtdG9vbGJhcl9fcHJpbWFyeSAudG94LXN3YXRjaGVze21hcmdpbjoycHggMCAzcHggNHB4fS50b3ggLnRveC1jb2xsZWN0aW9uLS1saXN0IC50b3gtY29sbGVjdGlvbl9fZ3JvdXAgLnRveC1zd2F0Y2hlcy1tZW51e2JvcmRlcjowO21hcmdpbjotNHB4IDB9LnRveCAudG94LXN3YXRjaGVzX19yb3d7ZGlzcGxheTpmbGV4fS50b3ggLnRveC1zd2F0Y2h7aGVpZ2h0OjMwcHg7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjE1cyxib3gtc2hhZG93IC4xNXM7d2lkdGg6MzBweH0udG94IC50b3gtc3dhdGNoOmZvY3VzLC50b3ggLnRveC1zd2F0Y2g6aG92ZXJ7Ym94LXNoYWRvdzowIDAgMCAxcHggcmdiYSgxMjcsMTI3LDEyNywuMykgaW5zZXQ7dHJhbnNmb3JtOnNjYWxlKC44KX0udG94IC50b3gtc3dhdGNoLS1yZW1vdmV7YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS50b3ggLnRveC1zd2F0Y2gtLXJlbW92ZSBzdmcgcGF0aHtzdHJva2U6I2U3NGMzY30udG94IC50b3gtc3dhdGNoZXNfX3BpY2tlci1idG57YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyOjA7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpmbGV4O2hlaWdodDozMHB4O2p1c3RpZnktY29udGVudDpjZW50ZXI7b3V0bGluZTowO3BhZGRpbmc6MDt3aWR0aDozMHB4fS50b3ggLnRveC1zd2F0Y2hlc19fcGlja2VyLWJ0biBzdmd7aGVpZ2h0OjI0cHg7d2lkdGg6MjRweH0udG94IC50b3gtc3dhdGNoZXNfX3BpY2tlci1idG46aG92ZXJ7YmFja2dyb3VuZDojNGE1NTYyfS50b3g6bm90KFtkaXI9cnRsXSkgLnRveC1zd2F0Y2hlc19fcGlja2VyLWJ0bnttYXJnaW4tbGVmdDphdXRvfS50b3hbZGlyPXJ0bF0gLnRveC1zd2F0Y2hlc19fcGlja2VyLWJ0bnttYXJnaW4tcmlnaHQ6YXV0b30udG94IC50b3gtY29tbWVudC10aHJlYWR7YmFja2dyb3VuZDojMmIzYjRlO3Bvc2l0aW9uOnJlbGF0aXZlfS50b3ggLnRveC1jb21tZW50LXRocmVhZD46bm90KDpmaXJzdC1jaGlsZCl7bWFyZ2luLXRvcDo4cHh9LnRveCAudG94LWNvbW1lbnR7YmFja2dyb3VuZDojMmIzYjRlO2JvcmRlcjoxcHggc29saWQgIzAwMDtib3JkZXItcmFkaXVzOjNweDtib3gtc2hhZG93OjAgNHB4IDhweCAwIHJnYmEoNDIsNTUsNzAsLjEpO3BhZGRpbmc6OHB4IDhweCAxNnB4IDhweDtwb3NpdGlvbjpyZWxhdGl2ZX0udG94IC50b3gtY29tbWVudF9faGVhZGVye2FsaWduLWl0ZW1zOmNlbnRlcjtjb2xvcjojZmZmO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn0udG94IC50b3gtY29tbWVudF9fZGF0ZXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KTtmb250LXNpemU6MTJweH0udG94IC50b3gtY29tbWVudF9fYm9keXtjb2xvcjojZmZmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjM7bWFyZ2luLXRvcDo4cHg7cG9zaXRpb246cmVsYXRpdmU7dGV4dC10cmFuc2Zvcm06aW5pdGlhbH0udG94IC50b3gtY29tbWVudF9fYm9keSB0ZXh0YXJlYXtyZXNpemU6bm9uZTt3aGl0ZS1zcGFjZTpub3JtYWw7d2lkdGg6MTAwJX0udG94IC50b3gtY29tbWVudF9fZXhwYW5kZXJ7cGFkZGluZy10b3A6OHB4fS50b3ggLnRveC1jb21tZW50X19leHBhbmRlciBwe2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtc3R5bGU6bm9ybWFsfS50b3ggLnRveC1jb21tZW50X19ib2R5IHB7bWFyZ2luOjB9LnRveCAudG94LWNvbW1lbnRfX2J1dHRvbnNwYWNpbmd7cGFkZGluZy10b3A6MTZweDt0ZXh0LWFsaWduOmNlbnRlcn0udG94IC50b3gtY29tbWVudC10aHJlYWRfX292ZXJsYXk6OmFmdGVye2JhY2tncm91bmQ6IzJiM2I0ZTtib3R0b206MDtjb250ZW50OiIiO2Rpc3BsYXk6ZmxleDtsZWZ0OjA7b3BhY2l0eTouOTtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3RvcDowO3otaW5kZXg6NX0udG94IC50b3gtY29tbWVudF9fcmVwbHl7ZGlzcGxheTpmbGV4O2ZsZXgtc2hyaW5rOjA7ZmxleC13cmFwOndyYXA7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO21hcmdpbi10b3A6OHB4fS50b3ggLnRveC1jb21tZW50X19yZXBseT46Zmlyc3QtY2hpbGR7bWFyZ2luLWJvdHRvbTo4cHg7d2lkdGg6MTAwJX0udG94IC50b3gtY29tbWVudF9fZWRpdHtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO21hcmdpbi10b3A6MTZweH0udG94IC50b3gtY29tbWVudF9fZ3JhZGllbnQ6OmFmdGVye2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHJnYmEoNDMsNTksNzgsMCksIzJiM2I0ZSk7Ym90dG9tOjA7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO2hlaWdodDo1ZW07bWFyZ2luLXRvcDotNDBweDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxMDAlfS50b3ggLnRveC1jb21tZW50X19vdmVybGF5e2JhY2tncm91bmQ6IzJiM2I0ZTtib3R0b206MDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZsZXgtZ3JvdzoxO2xlZnQ6MDtvcGFjaXR5Oi45O3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7dGV4dC1hbGlnbjpjZW50ZXI7dG9wOjA7ei1pbmRleDo1fS50b3ggLnRveC1jb21tZW50X19sb2FkaW5nLXRleHR7YWxpZ24taXRlbXM6Y2VudGVyO2NvbG9yOiNmZmY7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtwb3NpdGlvbjpyZWxhdGl2ZX0udG94IC50b3gtY29tbWVudF9fbG9hZGluZy10ZXh0PmRpdntwYWRkaW5nLWJvdHRvbToxNnB4fS50b3ggLnRveC1jb21tZW50X19vdmVybGF5dGV4dHtib3R0b206MDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Zm9udC1zaXplOjE0cHg7bGVmdDowO3BhZGRpbmc6MWVtO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7dG9wOjA7ei1pbmRleDoxMH0udG94IC50b3gtY29tbWVudF9fb3ZlcmxheXRleHQgcHtiYWNrZ3JvdW5kLWNvbG9yOiMyYjNiNGU7Ym94LXNoYWRvdzowIDAgOHB4IDhweCAjMmIzYjRlO2NvbG9yOiNmZmY7dGV4dC1hbGlnbjpjZW50ZXJ9LnRveCAudG94LWNvbW1lbnRfX292ZXJsYXl0ZXh0IGRpdjpudGgtb2YtdHlwZSgyKXtmb250LXNpemU6LjhlbX0udG94IC50b3gtY29tbWVudF9fYnVzeS1zcGlubmVye2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiMyYjNiNGU7Ym90dG9tOjA7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7bGVmdDowO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7dG9wOjA7ei1pbmRleDoyMH0udG94IC50b3gtY29tbWVudF9fc2Nyb2xse2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47ZmxleC1zaHJpbms6MTtvdmVyZmxvdzphdXRvfS50b3ggLnRveC1jb252ZXJzYXRpb25ze21hcmdpbjo4cHh9LnRveDpub3QoW2Rpcj1ydGxdKSAudG94LWNvbW1lbnRfX2VkaXR7bWFyZ2luLWxlZnQ6OHB4fS50b3g6bm90KFtkaXI9cnRsXSkgLnRveC1jb21tZW50X19idXR0b25zcGFjaW5nPjpsYXN0LWNoaWxkLC50b3g6bm90KFtkaXI9cnRsXSkgLnRveC1jb21tZW50X19lZGl0PjpsYXN0LWNoaWxkLC50b3g6bm90KFtkaXI9cnRsXSkgLnRveC1jb21tZW50X19yZXBseT46bGFzdC1jaGlsZHttYXJnaW4tbGVmdDo4cHh9LnRveFtkaXI9cnRsXSAudG94LWNvbW1lbnRfX2VkaXR7bWFyZ2luLXJpZ2h0OjhweH0udG94W2Rpcj1ydGxdIC50b3gtY29tbWVudF9fYnV0dG9uc3BhY2luZz46bGFzdC1jaGlsZCwudG94W2Rpcj1ydGxdIC50b3gtY29tbWVudF9fZWRpdD46bGFzdC1jaGlsZCwudG94W2Rpcj1ydGxdIC50b3gtY29tbWVudF9fcmVwbHk+Omxhc3QtY2hpbGR7bWFyZ2luLXJpZ2h0OjhweH0udG94IC50b3gtdXNlcnthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4fS50b3ggLnRveC11c2VyX19hdmF0YXIgc3Zne2ZpbGw6cmdiYSgyNTUsMjU1LDI1NSwuNSl9LnRveCAudG94LXVzZXJfX25hbWV7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSk7Zm9udC1zaXplOjEycHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6NzAwO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0udG94Om5vdChbZGlyPXJ0bF0pIC50b3gtdXNlcl9fYXZhdGFyIHN2Z3ttYXJnaW4tcmlnaHQ6OHB4fS50b3g6bm90KFtkaXI9cnRsXSkgLnRveC11c2VyX19hdmF0YXIrLnRveC11c2VyX19uYW1le21hcmdpbi1sZWZ0OjhweH0udG94W2Rpcj1ydGxdIC50b3gtdXNlcl9fYXZhdGFyIHN2Z3ttYXJnaW4tbGVmdDo4cHh9LnRveFtkaXI9cnRsXSAudG94LXVzZXJfX2F2YXRhcisudG94LXVzZXJfX25hbWV7bWFyZ2luLXJpZ2h0OjhweH0udG94IC50b3gtZGlhbG9nLXdyYXB7YWxpZ24taXRlbXM6Y2VudGVyO2JvdHRvbTowO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2xlZnQ6MDtwb3NpdGlvbjpmaXhlZDtyaWdodDowO3RvcDowO3otaW5kZXg6MTEwMH0udG94IC50b3gtZGlhbG9nLXdyYXBfX2JhY2tkcm9we2JhY2tncm91bmQtY29sb3I6cmdiYSgzNCw0Nyw2MiwuNzUpO2JvdHRvbTowO2xlZnQ6MDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3RvcDowO3otaW5kZXg6MX0udG94IC50b3gtZGlhbG9nLXdyYXBfX2JhY2tkcm9wLS1vcGFxdWV7YmFja2dyb3VuZC1jb2xvcjojMjIyZjNlfS50b3ggLnRveC1kaWFsb2d7YmFja2dyb3VuZC1jb2xvcjojMmIzYjRlO2JvcmRlci1jb2xvcjojMDAwO2JvcmRlci1yYWRpdXM6M3B4O2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6MXB4O2JveC1zaGFkb3c6MCAxNnB4IDE2cHggLTEwcHggcmdiYSg0Miw1NSw3MCwuMTUpLDAgMCA0MHB4IDFweCByZ2JhKDQyLDU1LDcwLC4xNSk7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttYXgtaGVpZ2h0OjEwMCU7bWF4LXdpZHRoOjQ4MHB4O292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDo5NXZ3O3otaW5kZXg6Mn1AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NzY3cHgpe2JvZHk6bm90KC50b3gtZm9yY2UtZGVza3RvcCkgLnRveCAudG94LWRpYWxvZ3thbGlnbi1zZWxmOmZsZXgtc3RhcnQ7bWFyZ2luOjhweCBhdXRvO3dpZHRoOmNhbGMoMTAwdncgLSAxNnB4KX19LnRveCAudG94LWRpYWxvZy1pbmxpbmV7ei1pbmRleDoxMTAwfS50b3ggLnRveC1kaWFsb2dfX2hlYWRlcnthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZC1jb2xvcjojMmIzYjRlO2JvcmRlci1ib3R0b206bm9uZTtjb2xvcjojZmZmO2Rpc3BsYXk6ZmxleDtmb250LXNpemU6MTZweDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtwYWRkaW5nOjhweCAxNnB4IDAgMTZweDtwb3NpdGlvbjpyZWxhdGl2ZX0udG94IC50b3gtZGlhbG9nX19oZWFkZXIgLnRveC1idXR0b257ei1pbmRleDoxfS50b3ggLnRveC1kaWFsb2dfX2RyYWdoYW5kbGV7Y3Vyc29yOmdyYWI7aGVpZ2h0OjEwMCU7bGVmdDowO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3dpZHRoOjEwMCV9LnRveCAudG94LWRpYWxvZ19fZHJhZ2hhbmRsZTphY3RpdmV7Y3Vyc29yOmdyYWJiaW5nfS50b3ggLnRveC1kaWFsb2dfX2Rpc21pc3N7bWFyZ2luLWxlZnQ6YXV0b30udG94IC50b3gtZGlhbG9nX190aXRsZXtmb250LWZhbWlseTotYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwiU2Vnb2UgVUkiLFJvYm90byxPeHlnZW4tU2FucyxVYnVudHUsQ2FudGFyZWxsLCJIZWx2ZXRpY2EgTmV1ZSIsc2Fucy1zZXJpZjtmb250LXNpemU6MjBweDtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4zO21hcmdpbjowO3RleHQtdHJhbnNmb3JtOm5vbmV9LnRveCAudG94LWRpYWxvZ19fYm9keXtjb2xvcjojZmZmO2Rpc3BsYXk6ZmxleDtmbGV4OjE7LW1zLWZsZXgtcHJlZmVycmVkLXNpemU6YXV0bztmb250LXNpemU6MTZweDtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4zO21pbi13aWR0aDowO3RleHQtYWxpZ246bGVmdDt0ZXh0LXRyYW5zZm9ybTpub25lfUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDo3NjdweCl7Ym9keTpub3QoLnRveC1mb3JjZS1kZXNrdG9wKSAudG94IC50b3gtZGlhbG9nX19ib2R5e2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn19LnRveCAudG94LWRpYWxvZ19fYm9keS1uYXZ7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO3BhZGRpbmc6MTZweCAxNnB4fUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDo3NjdweCl7Ym9keTpub3QoLnRveC1mb3JjZS1kZXNrdG9wKSAudG94IC50b3gtZGlhbG9nX19ib2R5LW5hdntmbGV4LWRpcmVjdGlvbjpyb3c7LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7b3ZlcmZsb3cteDphdXRvO3BhZGRpbmctYm90dG9tOjB9fS50b3ggLnRveC1kaWFsb2dfX2JvZHktbmF2LWl0ZW17Ym9yZGVyLWJvdHRvbToycHggc29saWQgdHJhbnNwYXJlbnQ7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSk7ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MS4zO21hcmdpbi1ib3R0b206OHB4O3RleHQtZGVjb3JhdGlvbjpub25lO3doaXRlLXNwYWNlOm5vd3JhcH0udG94IC50b3gtZGlhbG9nX19ib2R5LW5hdi1pdGVtOmZvY3Vze2JhY2tncm91bmQtY29sb3I6cmdiYSgzMiwxMjIsMTgzLC4xKX0udG94IC50b3gtZGlhbG9nX19ib2R5LW5hdi1pdGVtLS1hY3RpdmV7Ym9yZGVyLWJvdHRvbToycHggc29saWQgIzIwN2FiNztjb2xvcjojMjA3YWI3fS50b3ggLnRveC1kaWFsb2dfX2JvZHktY29udGVudHtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTpmbGV4O2ZsZXg6MTtmbGV4LWRpcmVjdGlvbjpjb2x1bW47LW1zLWZsZXgtcHJlZmVycmVkLXNpemU6YXV0bzttYXgtaGVpZ2h0OjY1MHB4O292ZXJmbG93OmF1dG87LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7cGFkZGluZzoxNnB4IDE2cHh9LnRveCAudG94LWRpYWxvZ19fYm9keS1jb250ZW50Pip7bWFyZ2luLWJvdHRvbTowO21hcmdpbi10b3A6MTZweH0udG94IC50b3gtZGlhbG9nX19ib2R5LWNvbnRlbnQ+OmZpcnN0LWNoaWxke21hcmdpbi10b3A6MH0udG94IC50b3gtZGlhbG9nX19ib2R5LWNvbnRlbnQ+Omxhc3QtY2hpbGR7bWFyZ2luLWJvdHRvbTowfS50b3ggLnRveC1kaWFsb2dfX2JvZHktY29udGVudD46b25seS1jaGlsZHttYXJnaW4tYm90dG9tOjA7bWFyZ2luLXRvcDowfS50b3ggLnRveC1kaWFsb2dfX2JvZHktY29udGVudCBhe2NvbG9yOiMyMDdhYjc7Y3Vyc29yOnBvaW50ZXI7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnRveCAudG94LWRpYWxvZ19fYm9keS1jb250ZW50IGE6Zm9jdXMsLnRveCAudG94LWRpYWxvZ19fYm9keS1jb250ZW50IGE6aG92ZXJ7Y29sb3I6IzE4NWQ4Yzt0ZXh0LWRlY29yYXRpb246bm9uZX0udG94IC50b3gtZGlhbG9nX19ib2R5LWNvbnRlbnQgYTphY3RpdmV7Y29sb3I6IzE4NWQ4Yzt0ZXh0LWRlY29yYXRpb246bm9uZX0udG94IC50b3gtZGlhbG9nX19ib2R5LWNvbnRlbnQgc3Zne2ZpbGw6I2ZmZn0udG94IC50b3gtZGlhbG9nX19ib2R5LWNvbnRlbnQgdWx7ZGlzcGxheTpibG9jaztsaXN0LXN0eWxlLXR5cGU6ZGlzYzttYXJnaW4tYm90dG9tOjE2cHg7LXdlYmtpdC1tYXJnaW4tZW5kOjA7bWFyZ2luLWlubGluZS1lbmQ6MDstd2Via2l0LW1hcmdpbi1zdGFydDowO21hcmdpbi1pbmxpbmUtc3RhcnQ6MDstd2Via2l0LXBhZGRpbmctc3RhcnQ6Mi41cmVtO3BhZGRpbmctaW5saW5lLXN0YXJ0OjIuNXJlbX0udG94IC50b3gtZGlhbG9nX19ib2R5LWNvbnRlbnQgLnRveC1mb3JtX19ncm91cCBoMXtmb250LXNpemU6MjBweDtmb250LXdlaWdodDo3MDA7bWFyZ2luLWJvdHRvbToxNnB4O21hcmdpbi10b3A6MnJlbX0udG94IC50b3gtZGlhbG9nX19ib2R5LWNvbnRlbnQgLnRveC1mb3JtX19ncm91cCBoMntmb250LXNpemU6MTZweDtmb250LXdlaWdodDo3MDA7bWFyZ2luLWJvdHRvbToxNnB4O21hcmdpbi10b3A6MnJlbX0udG94IC50b3gtZGlhbG9nX19ib2R5LWNvbnRlbnQgLnRveC1mb3JtX19ncm91cCBwe21hcmdpbi1ib3R0b206MTZweH0udG94IC50b3gtZGlhbG9nX19ib2R5LWNvbnRlbnQgLnRveC1mb3JtX19ncm91cCBoMTpmaXJzdC1jaGlsZCwudG94IC50b3gtZGlhbG9nX19ib2R5LWNvbnRlbnQgLnRveC1mb3JtX19ncm91cCBoMjpmaXJzdC1jaGlsZCwudG94IC50b3gtZGlhbG9nX19ib2R5LWNvbnRlbnQgLnRveC1mb3JtX19ncm91cCBwOmZpcnN0LWNoaWxke21hcmdpbi10b3A6MH0udG94IC50b3gtZGlhbG9nX19ib2R5LWNvbnRlbnQgLnRveC1mb3JtX19ncm91cCBoMTpsYXN0LWNoaWxkLC50b3ggLnRveC1kaWFsb2dfX2JvZHktY29udGVudCAudG94LWZvcm1fX2dyb3VwIGgyOmxhc3QtY2hpbGQsLnRveCAudG94LWRpYWxvZ19fYm9keS1jb250ZW50IC50b3gtZm9ybV9fZ3JvdXAgcDpsYXN0LWNoaWxke21hcmdpbi1ib3R0b206MH0udG94IC50b3gtZGlhbG9nX19ib2R5LWNvbnRlbnQgLnRveC1mb3JtX19ncm91cCBoMTpvbmx5LWNoaWxkLC50b3ggLnRveC1kaWFsb2dfX2JvZHktY29udGVudCAudG94LWZvcm1fX2dyb3VwIGgyOm9ubHktY2hpbGQsLnRveCAudG94LWRpYWxvZ19fYm9keS1jb250ZW50IC50b3gtZm9ybV9fZ3JvdXAgcDpvbmx5LWNoaWxke21hcmdpbi1ib3R0b206MDttYXJnaW4tdG9wOjB9LnRveCAudG94LWRpYWxvZy0td2lkdGgtbGd7aGVpZ2h0OjY1MHB4O21heC13aWR0aDoxMjAwcHh9LnRveCAudG94LWRpYWxvZy0td2lkdGgtbWR7bWF4LXdpZHRoOjgwMHB4fS50b3ggLnRveC1kaWFsb2ctLXdpZHRoLW1kIC50b3gtZGlhbG9nX19ib2R5LWNvbnRlbnR7b3ZlcmZsb3c6YXV0b30udG94IC50b3gtZGlhbG9nX19ib2R5LWNvbnRlbnQtLWNlbnRlcmVke3RleHQtYWxpZ246Y2VudGVyfS50b3ggLnRveC1kaWFsb2dfX2Zvb3RlcnthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZC1jb2xvcjojMmIzYjRlO2JvcmRlci10b3A6MXB4IHNvbGlkICMwMDA7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO3BhZGRpbmc6OHB4IDE2cHh9LnRveCAudG94LWRpYWxvZ19fZm9vdGVyLWVuZCwudG94IC50b3gtZGlhbG9nX19mb290ZXItc3RhcnR7ZGlzcGxheTpmbGV4fS50b3ggLnRveC1kaWFsb2dfX2J1c3ktc3Bpbm5lcnthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDM0LDQ3LDYyLC43NSk7Ym90dG9tOjA7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7bGVmdDowO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7dG9wOjA7ei1pbmRleDozfS50b3ggLnRveC1kaWFsb2dfX3RhYmxle2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTt3aWR0aDoxMDAlfS50b3ggLnRveC1kaWFsb2dfX3RhYmxlIHRoZWFkIHRoe2ZvbnQtd2VpZ2h0OjcwMDtwYWRkaW5nLWJvdHRvbTo4cHh9LnRveCAudG94LWRpYWxvZ19fdGFibGUgdGJvZHkgdHJ7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzAwMH0udG94IC50b3gtZGlhbG9nX190YWJsZSB0Ym9keSB0cjpsYXN0LWNoaWxke2JvcmRlci1ib3R0b206bm9uZX0udG94IC50b3gtZGlhbG9nX190YWJsZSB0ZHtwYWRkaW5nLWJvdHRvbTo4cHg7cGFkZGluZy10b3A6OHB4fS50b3ggLnRveC1kaWFsb2dfX3BvcHVwc3twb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxMDAlO3otaW5kZXg6MTEwMH0udG94IC50b3gtZGlhbG9nX19ib2R5LWlmcmFtZXtkaXNwbGF5OmZsZXg7ZmxleDoxO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjstbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTphdXRvfS50b3ggLnRveC1kaWFsb2dfX2JvZHktaWZyYW1lIC50b3gtbmF2b2Jqe2Rpc3BsYXk6ZmxleDtmbGV4OjE7LW1zLWZsZXgtcHJlZmVycmVkLXNpemU6YXV0b30udG94IC50b3gtZGlhbG9nX19ib2R5LWlmcmFtZSAudG94LW5hdm9iaiA6bnRoLWNoaWxkKDIpe2ZsZXg6MTstbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTphdXRvO2hlaWdodDoxMDAlfS50b3ggLnRveC1kaWFsb2ctZG9jay1mYWRlb3V0e29wYWNpdHk6MDt2aXNpYmlsaXR5OmhpZGRlbn0udG94IC50b3gtZGlhbG9nLWRvY2stZmFkZWlue29wYWNpdHk6MTt2aXNpYmlsaXR5OnZpc2libGV9LnRveCAudG94LWRpYWxvZy1kb2NrLXRyYW5zaXRpb257dHJhbnNpdGlvbjp2aXNpYmlsaXR5IDBzIGxpbmVhciAuM3Msb3BhY2l0eSAuM3MgZWFzZX0udG94IC50b3gtZGlhbG9nLWRvY2stdHJhbnNpdGlvbi50b3gtZGlhbG9nLWRvY2stZmFkZWlue3RyYW5zaXRpb24tZGVsYXk6MHN9Ym9keS50b3gtZGlhbG9nX19kaXNhYmxlLXNjcm9sbHtvdmVyZmxvdzpoaWRkZW59LnRveC50b3gtcGxhdGZvcm0taWUgLnRveC1kaWFsb2ctd3JhcHtwb3NpdGlvbjotbXMtZGV2aWNlLWZpeGVkfUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDo3NjdweCl7Ym9keTpub3QoLnRveC1mb3JjZS1kZXNrdG9wKSAudG94Om5vdChbZGlyPXJ0bF0pIC50b3gtZGlhbG9nX19ib2R5LW5hdnttYXJnaW4tcmlnaHQ6MH19QG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjc2N3B4KXtib2R5Om5vdCgudG94LWZvcmNlLWRlc2t0b3ApIC50b3g6bm90KFtkaXI9cnRsXSkgLnRveC1kaWFsb2dfX2JvZHktbmF2LWl0ZW06bm90KDpmaXJzdC1jaGlsZCl7bWFyZ2luLWxlZnQ6OHB4fX0udG94Om5vdChbZGlyPXJ0bF0pIC50b3gtZGlhbG9nX19mb290ZXIgLnRveC1kaWFsb2dfX2Zvb3Rlci1lbmQ+KiwudG94Om5vdChbZGlyPXJ0bF0pIC50b3gtZGlhbG9nX19mb290ZXIgLnRveC1kaWFsb2dfX2Zvb3Rlci1zdGFydD4qe21hcmdpbi1sZWZ0OjhweH0udG94W2Rpcj1ydGxdIC50b3gtZGlhbG9nX19ib2R5e3RleHQtYWxpZ246cmlnaHR9QG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjc2N3B4KXtib2R5Om5vdCgudG94LWZvcmNlLWRlc2t0b3ApIC50b3hbZGlyPXJ0bF0gLnRveC1kaWFsb2dfX2JvZHktbmF2e21hcmdpbi1sZWZ0OjB9fUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDo3NjdweCl7Ym9keTpub3QoLnRveC1mb3JjZS1kZXNrdG9wKSAudG94W2Rpcj1ydGxdIC50b3gtZGlhbG9nX19ib2R5LW5hdi1pdGVtOm5vdCg6Zmlyc3QtY2hpbGQpe21hcmdpbi1yaWdodDo4cHh9fS50b3hbZGlyPXJ0bF0gLnRveC1kaWFsb2dfX2Zvb3RlciAudG94LWRpYWxvZ19fZm9vdGVyLWVuZD4qLC50b3hbZGlyPXJ0bF0gLnRveC1kaWFsb2dfX2Zvb3RlciAudG94LWRpYWxvZ19fZm9vdGVyLXN0YXJ0Pip7bWFyZ2luLXJpZ2h0OjhweH0udG94IC50b3gtZHJvcHpvbmUtY29udGFpbmVye2Rpc3BsYXk6ZmxleDtmbGV4OjE7LW1zLWZsZXgtcHJlZmVycmVkLXNpemU6YXV0b30udG94IC50b3gtZHJvcHpvbmV7YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MnB4IGRhc2hlZCAjMDAwO2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZsZXgtZ3JvdzoxO2p1c3RpZnktY29udGVudDpjZW50ZXI7bWluLWhlaWdodDoxMDBweDtwYWRkaW5nOjEwcHh9LnRveCAudG94LWRyb3B6b25lIHB7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSk7bWFyZ2luOjAgMCAxNnB4IDB9LnRveCAudG94LWVkaXQtYXJlYXtkaXNwbGF5OmZsZXg7ZmxleDoxOy1tcy1mbGV4LXByZWZlcnJlZC1zaXplOmF1dG87b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS50b3ggLnRveC1lZGl0LWFyZWFfX2lmcmFtZXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyOjA7Ym94LXNpemluZzpib3JkZXItYm94O2ZsZXg6MTstbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTphdXRvO2hlaWdodDoxMDAlO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjEwMCV9LnRveC50b3gtaW5saW5lLWVkaXQtYXJlYXtib3JkZXI6MXB4IGRvdHRlZCAjMDAwfS50b3ggLnRveC1lZGl0b3ItY29udGFpbmVye2Rpc3BsYXk6ZmxleDtmbGV4OjEgMSBhdXRvO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtvdmVyZmxvdzpoaWRkZW59LnRveCAudG94LWVkaXRvci1oZWFkZXJ7ei1pbmRleDoxfS50b3g6bm90KC50b3gtdGlueW1jZS1pbmxpbmUpIC50b3gtZWRpdG9yLWhlYWRlcntib3gtc2hhZG93Om5vbmU7dHJhbnNpdGlvbjpib3gtc2hhZG93IC41c30udG94LnRveC10aW55bWNlLS10b29sYmFyLWJvdHRvbSAudG94LWVkaXRvci1oZWFkZXIsLnRveC50b3gtdGlueW1jZS1pbmxpbmUgLnRveC1lZGl0b3ItaGVhZGVye21hcmdpbi1ib3R0b206LTFweH0udG94LnRveC10aW55bWNlLS10b29sYmFyLXN0aWNreS1vbiAudG94LWVkaXRvci1oZWFkZXJ7Ym94LXNoYWRvdzowIDRweCA0cHggLTNweCByZ2JhKDAsMCwwLC4yNSl9LnRveC1lZGl0b3ItZG9jay1mYWRlb3V0e29wYWNpdHk6MDt2aXNpYmlsaXR5OmhpZGRlbn0udG94LWVkaXRvci1kb2NrLWZhZGVpbntvcGFjaXR5OjE7dmlzaWJpbGl0eTp2aXNpYmxlfS50b3gtZWRpdG9yLWRvY2stdHJhbnNpdGlvbnt0cmFuc2l0aW9uOnZpc2liaWxpdHkgMHMgbGluZWFyIC4yNXMsb3BhY2l0eSAuMjVzIGVhc2V9LnRveC1lZGl0b3ItZG9jay10cmFuc2l0aW9uLnRveC1lZGl0b3ItZG9jay1mYWRlaW57dHJhbnNpdGlvbi1kZWxheTowc30udG94IC50b3gtY29udHJvbC13cmFwe2ZsZXg6MTtwb3NpdGlvbjpyZWxhdGl2ZX0udG94IC50b3gtY29udHJvbC13cmFwOm5vdCgudG94LWNvbnRyb2wtd3JhcC0tc3RhdHVzLWludmFsaWQpIC50b3gtY29udHJvbC13cmFwX19zdGF0dXMtaWNvbi1pbnZhbGlkLC50b3ggLnRveC1jb250cm9sLXdyYXA6bm90KC50b3gtY29udHJvbC13cmFwLS1zdGF0dXMtdW5rbm93bikgLnRveC1jb250cm9sLXdyYXBfX3N0YXR1cy1pY29uLXVua25vd24sLnRveCAudG94LWNvbnRyb2wtd3JhcDpub3QoLnRveC1jb250cm9sLXdyYXAtLXN0YXR1cy12YWxpZCkgLnRveC1jb250cm9sLXdyYXBfX3N0YXR1cy1pY29uLXZhbGlke2Rpc3BsYXk6bm9uZX0udG94IC50b3gtY29udHJvbC13cmFwIHN2Z3tkaXNwbGF5OmJsb2NrfS50b3ggLnRveC1jb250cm9sLXdyYXBfX3N0YXR1cy1pY29uLXdyYXB7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKX0udG94IC50b3gtY29udHJvbC13cmFwX19zdGF0dXMtaWNvbi1pbnZhbGlkIHN2Z3tmaWxsOiNjMDB9LnRveCAudG94LWNvbnRyb2wtd3JhcF9fc3RhdHVzLWljb24tdW5rbm93biBzdmd7ZmlsbDpvcmFuZ2V9LnRveCAudG94LWNvbnRyb2wtd3JhcF9fc3RhdHVzLWljb24tdmFsaWQgc3Zne2ZpbGw6Z3JlZW59LnRveDpub3QoW2Rpcj1ydGxdKSAudG94LWNvbnRyb2wtd3JhcC0tc3RhdHVzLWludmFsaWQgLnRveC10ZXh0ZmllbGQsLnRveDpub3QoW2Rpcj1ydGxdKSAudG94LWNvbnRyb2wtd3JhcC0tc3RhdHVzLXVua25vd24gLnRveC10ZXh0ZmllbGQsLnRveDpub3QoW2Rpcj1ydGxdKSAudG94LWNvbnRyb2wtd3JhcC0tc3RhdHVzLXZhbGlkIC50b3gtdGV4dGZpZWxke3BhZGRpbmctcmlnaHQ6MzJweH0udG94Om5vdChbZGlyPXJ0bF0pIC50b3gtY29udHJvbC13cmFwX19zdGF0dXMtaWNvbi13cmFwe3JpZ2h0OjRweH0udG94W2Rpcj1ydGxdIC50b3gtY29udHJvbC13cmFwLS1zdGF0dXMtaW52YWxpZCAudG94LXRleHRmaWVsZCwudG94W2Rpcj1ydGxdIC50b3gtY29udHJvbC13cmFwLS1zdGF0dXMtdW5rbm93biAudG94LXRleHRmaWVsZCwudG94W2Rpcj1ydGxdIC50b3gtY29udHJvbC13cmFwLS1zdGF0dXMtdmFsaWQgLnRveC10ZXh0ZmllbGR7cGFkZGluZy1sZWZ0OjMycHh9LnRveFtkaXI9cnRsXSAudG94LWNvbnRyb2wtd3JhcF9fc3RhdHVzLWljb24td3JhcHtsZWZ0OjRweH0udG94IC50b3gtYXV0b2NvbXBsZXRlcnttYXgtd2lkdGg6MjVlbX0udG94IC50b3gtYXV0b2NvbXBsZXRlciAudG94LW1lbnV7bWF4LXdpZHRoOjI1ZW19LnRveCAudG94LWF1dG9jb21wbGV0ZXIgLnRveC1hdXRvY29tcGxldGVyLWhpZ2hsaWdodHtmb250LXdlaWdodDo3MDB9LnRveCAudG94LWNvbG9yLWlucHV0e2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjF9LnRveCAudG94LWNvbG9yLWlucHV0IC50b3gtdGV4dGZpZWxke3otaW5kZXg6LTF9LnRveCAudG94LWNvbG9yLWlucHV0IHNwYW57Ym9yZGVyLWNvbG9yOnJnYmEoNDIsNTUsNzAsLjIpO2JvcmRlci1yYWRpdXM6M3B4O2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6MXB4O2JveC1zaGFkb3c6bm9uZTtib3gtc2l6aW5nOmJvcmRlci1ib3g7aGVpZ2h0OjI0cHg7cG9zaXRpb246YWJzb2x1dGU7dG9wOjZweDt3aWR0aDoyNHB4fS50b3ggLnRveC1jb2xvci1pbnB1dCBzcGFuOmZvY3VzOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSksLnRveCAudG94LWNvbG9yLWlucHV0IHNwYW46aG92ZXI6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKXtib3JkZXItY29sb3I6IzIwN2FiNztjdXJzb3I6cG9pbnRlcn0udG94IC50b3gtY29sb3ItaW5wdXQgc3Bhbjo6YmVmb3Jle2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDQ1ZGVnLHJnYmEoMjU1LDI1NSwyNTUsLjI1KSAyNSUsdHJhbnNwYXJlbnQgMjUlKSxsaW5lYXItZ3JhZGllbnQoLTQ1ZGVnLHJnYmEoMjU1LDI1NSwyNTUsLjI1KSAyNSUsdHJhbnNwYXJlbnQgMjUlKSxsaW5lYXItZ3JhZGllbnQoNDVkZWcsdHJhbnNwYXJlbnQgNzUlLHJnYmEoMjU1LDI1NSwyNTUsLjI1KSA3NSUpLGxpbmVhci1ncmFkaWVudCgtNDVkZWcsdHJhbnNwYXJlbnQgNzUlLHJnYmEoMjU1LDI1NSwyNTUsLjI1KSA3NSUpO2JhY2tncm91bmQtcG9zaXRpb246MCAwLDAgNnB4LDZweCAtNnB4LC02cHggMDtiYWNrZ3JvdW5kLXNpemU6MTJweCAxMnB4O2JvcmRlcjoxcHggc29saWQgIzJiM2I0ZTtib3JkZXItcmFkaXVzOjNweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y29udGVudDonJztoZWlnaHQ6MjRweDtsZWZ0Oi0xcHg7cG9zaXRpb246YWJzb2x1dGU7dG9wOi0xcHg7d2lkdGg6MjRweDt6LWluZGV4Oi0xfS50b3ggLnRveC1jb2xvci1pbnB1dCBzcGFuW2FyaWEtZGlzYWJsZWQ9dHJ1ZV17Y3Vyc29yOm5vdC1hbGxvd2VkfS50b3g6bm90KFtkaXI9cnRsXSkgLnRveC1jb2xvci1pbnB1dCAudG94LXRleHRmaWVsZHtwYWRkaW5nLWxlZnQ6MzZweH0udG94Om5vdChbZGlyPXJ0bF0pIC50b3gtY29sb3ItaW5wdXQgc3BhbntsZWZ0OjZweH0udG94W2Rpcj1ydGxdIC50b3gtY29sb3ItaW5wdXQgLnRveC10ZXh0ZmllbGR7cGFkZGluZy1yaWdodDozNnB4fS50b3hbZGlyPXJ0bF0gLnRveC1jb2xvci1pbnB1dCBzcGFue3JpZ2h0OjZweH0udG94IC50b3gtbGFiZWwsLnRveCAudG94LXRvb2xiYXItbGFiZWx7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSk7ZGlzcGxheTpibG9jaztmb250LXNpemU6MTRweDtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4zO3BhZGRpbmc6MCA4cHggMCAwO3RleHQtdHJhbnNmb3JtOm5vbmU7d2hpdGUtc3BhY2U6bm93cmFwfS50b3ggLnRveC10b29sYmFyLWxhYmVse3BhZGRpbmc6MCA4cHh9LnRveFtkaXI9cnRsXSAudG94LWxhYmVse3BhZGRpbmc6MCAwIDAgOHB4fS50b3ggLnRveC1mb3Jte2Rpc3BsYXk6ZmxleDtmbGV4OjE7ZmxleC1kaXJlY3Rpb246Y29sdW1uOy1tcy1mbGV4LXByZWZlcnJlZC1zaXplOmF1dG99LnRveCAudG94LWZvcm1fX2dyb3Vwe2JveC1zaXppbmc6Ym9yZGVyLWJveDttYXJnaW4tYm90dG9tOjRweH0udG94IC50b3gtZm9ybS1ncm91cC0tbWF4aW1pemV7ZmxleDoxfS50b3ggLnRveC1mb3JtX19ncm91cC0tZXJyb3J7Y29sb3I6I2MwMH0udG94IC50b3gtZm9ybV9fZ3JvdXAtLWNvbGxlY3Rpb257ZGlzcGxheTpmbGV4fS50b3ggLnRveC1mb3JtX19ncmlke2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3c7ZmxleC13cmFwOndyYXA7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59LnRveCAudG94LWZvcm1fX2dyaWQtLTJjb2w+LnRveC1mb3JtX19ncm91cHt3aWR0aDpjYWxjKDUwJSAtICg4cHggLyAyKSl9LnRveCAudG94LWZvcm1fX2dyaWQtLTNjb2w+LnRveC1mb3JtX19ncm91cHt3aWR0aDpjYWxjKDEwMCUgLyAzIC0gKDhweCAvIDIpKX0udG94IC50b3gtZm9ybV9fZ3JpZC0tNGNvbD4udG94LWZvcm1fX2dyb3Vwe3dpZHRoOmNhbGMoMjUlIC0gKDhweCAvIDIpKX0udG94IC50b3gtZm9ybV9fY29udHJvbHMtaC1zdGFja3thbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4fS50b3ggLnRveC1mb3JtX19ncm91cC0taW5saW5le2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXh9LnRveCAudG94LWZvcm1fX2dyb3VwLS1zdHJldGNoZWR7ZGlzcGxheTpmbGV4O2ZsZXg6MTtmbGV4LWRpcmVjdGlvbjpjb2x1bW47LW1zLWZsZXgtcHJlZmVycmVkLXNpemU6YXV0b30udG94IC50b3gtZm9ybV9fZ3JvdXAtLXN0cmV0Y2hlZCAudG94LXRleHRhcmVhe2ZsZXg6MTstbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTphdXRvfS50b3ggLnRveC1mb3JtX19ncm91cC0tc3RyZXRjaGVkIC50b3gtbmF2b2Jqe2Rpc3BsYXk6ZmxleDtmbGV4OjE7LW1zLWZsZXgtcHJlZmVycmVkLXNpemU6YXV0b30udG94IC50b3gtZm9ybV9fZ3JvdXAtLXN0cmV0Y2hlZCAudG94LW5hdm9iaiA6bnRoLWNoaWxkKDIpe2ZsZXg6MTstbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTphdXRvO2hlaWdodDoxMDAlfS50b3g6bm90KFtkaXI9cnRsXSkgLnRveC1mb3JtX19jb250cm9scy1oLXN0YWNrPjpub3QoOmZpcnN0LWNoaWxkKXttYXJnaW4tbGVmdDo0cHh9LnRveFtkaXI9cnRsXSAudG94LWZvcm1fX2NvbnRyb2xzLWgtc3RhY2s+Om5vdCg6Zmlyc3QtY2hpbGQpe21hcmdpbi1yaWdodDo0cHh9LnRveCAudG94LWxvY2sudG94LWxvY2tlZCAudG94LWxvY2staWNvbl9fdW5sb2NrLC50b3ggLnRveC1sb2NrOm5vdCgudG94LWxvY2tlZCkgLnRveC1sb2NrLWljb25fX2xvY2t7ZGlzcGxheTpub25lfS50b3ggLnRveC1zZWxlY3RmaWVsZCBzZWxlY3QsLnRveCAudG94LXRleHRhcmVhLC50b3ggLnRveC10ZXh0ZmllbGQsLnRveCAudG94LXRvb2xiYXItdGV4dGZpZWxkey13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lO2FwcGVhcmFuY2U6bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiMyYjNiNGU7Ym9yZGVyLWNvbG9yOiMwMDA7Ym9yZGVyLXJhZGl1czozcHg7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDoxcHg7Ym94LXNoYWRvdzpub25lO2JveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjojZmZmO2ZvbnQtZmFtaWx5Oi1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCJTZWdvZSBVSSIsUm9ib3RvLE94eWdlbi1TYW5zLFVidW50dSxDYW50YXJlbGwsIkhlbHZldGljYSBOZXVlIixzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4O2xpbmUtaGVpZ2h0OjI0cHg7bWFyZ2luOjA7bWluLWhlaWdodDozNHB4O291dGxpbmU6MDtwYWRkaW5nOjVweCA0Ljc1cHg7cmVzaXplOm5vbmU7d2lkdGg6MTAwJX0udG94IC50b3gtdGV4dGFyZWFbZGlzYWJsZWRdLC50b3ggLnRveC10ZXh0ZmllbGRbZGlzYWJsZWRde2JhY2tncm91bmQtY29sb3I6IzIyMmYzZTtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC44NSk7Y3Vyc29yOm5vdC1hbGxvd2VkfS50b3ggLnRveC1zZWxlY3RmaWVsZCBzZWxlY3Q6Zm9jdXMsLnRveCAudG94LXRleHRhcmVhOmZvY3VzLC50b3ggLnRveC10ZXh0ZmllbGQ6Zm9jdXN7Ym9yZGVyLWNvbG9yOiMyMDdhYjc7Ym94LXNoYWRvdzpub25lO291dGxpbmU6MH0udG94IC50b3gtdG9vbGJhci10ZXh0ZmllbGR7Ym9yZGVyLXdpZHRoOjA7bWFyZ2luLWJvdHRvbTozcHg7bWFyZ2luLXRvcDoycHg7bWF4LXdpZHRoOjI1MHB4fS50b3ggLnRveC1uYWtlZC1idG57YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXI6MDtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7Ym94LXNoYWRvdzp1bnNldDtjb2xvcjojMjA3YWI3O2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjA7cGFkZGluZzowfS50b3ggLnRveC1uYWtlZC1idG4gc3Zne2Rpc3BsYXk6YmxvY2s7ZmlsbDojZmZmfS50b3g6bm90KFtkaXI9cnRsXSkgLnRveC10b29sYmFyLXRleHRmaWVsZCsqe21hcmdpbi1sZWZ0OjRweH0udG94W2Rpcj1ydGxdIC50b3gtdG9vbGJhci10ZXh0ZmllbGQrKnttYXJnaW4tcmlnaHQ6NHB4fS50b3ggLnRveC1zZWxlY3RmaWVsZHtjdXJzb3I6cG9pbnRlcjtwb3NpdGlvbjpyZWxhdGl2ZX0udG94IC50b3gtc2VsZWN0ZmllbGQgc2VsZWN0W2Rpc2FibGVkXXtiYWNrZ3JvdW5kLWNvbG9yOiMxOTIzMmU7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuODUpO2N1cnNvcjpub3QtYWxsb3dlZH0udG94IC50b3gtc2VsZWN0ZmllbGQgc2VsZWN0OjotbXMtZXhwYW5ke2Rpc3BsYXk6bm9uZX0udG94IC50b3gtc2VsZWN0ZmllbGQgc3Zne3BvaW50ZXItZXZlbnRzOm5vbmU7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKX0udG94Om5vdChbZGlyPXJ0bF0pIC50b3gtc2VsZWN0ZmllbGQgc2VsZWN0W3NpemU9IjAiXSwudG94Om5vdChbZGlyPXJ0bF0pIC50b3gtc2VsZWN0ZmllbGQgc2VsZWN0W3NpemU9IjEiXXtwYWRkaW5nLXJpZ2h0OjI0cHh9LnRveDpub3QoW2Rpcj1ydGxdKSAudG94LXNlbGVjdGZpZWxkIHN2Z3tyaWdodDo4cHh9LnRveFtkaXI9cnRsXSAudG94LXNlbGVjdGZpZWxkIHNlbGVjdFtzaXplPSIwIl0sLnRveFtkaXI9cnRsXSAudG94LXNlbGVjdGZpZWxkIHNlbGVjdFtzaXplPSIxIl17cGFkZGluZy1sZWZ0OjI0cHh9LnRveFtkaXI9cnRsXSAudG94LXNlbGVjdGZpZWxkIHN2Z3tsZWZ0OjhweH0udG94IC50b3gtdGV4dGFyZWF7LXdlYmtpdC1hcHBlYXJhbmNlOnRleHRhcmVhOy1tb3otYXBwZWFyYW5jZTp0ZXh0YXJlYTthcHBlYXJhbmNlOnRleHRhcmVhO3doaXRlLXNwYWNlOnByZS13cmFwfS50b3gtZnVsbHNjcmVlbntib3JkZXI6MDtoZWlnaHQ6MTAwJTtsZWZ0OjA7bWFyZ2luOjA7b3ZlcmZsb3c6aGlkZGVuOy1tcy1zY3JvbGwtY2hhaW5pbmc6bm9uZTtvdmVyc2Nyb2xsLWJlaGF2aW9yOm5vbmU7cGFkZGluZzowO3Bvc2l0aW9uOmZpeGVkO3RvcDowO3RvdWNoLWFjdGlvbjpwaW5jaC16b29tO3dpZHRoOjEwMCV9LnRveC1mdWxsc2NyZWVuIC50b3gudG94LXRpbnltY2UudG94LWZ1bGxzY3JlZW4gLnRveC1zdGF0dXNiYXJfX3Jlc2l6ZS1oYW5kbGV7ZGlzcGxheTpub25lfS50b3gtZnVsbHNjcmVlbiAudG94LnRveC10aW55bWNlLnRveC1mdWxsc2NyZWVue3otaW5kZXg6MTIwMH0udG94LWZ1bGxzY3JlZW4gLnRveC50b3gtdGlueW1jZS1hdXh7ei1pbmRleDoxMjAxfS50b3ggLnRveC1oZWxwX19tb3JlLWxpbmt7bGlzdC1zdHlsZTpub25lO21hcmdpbi10b3A6MWVtfS50b3ggLnRveC1pbWFnZS10b29sc3t3aWR0aDoxMDAlfS50b3ggLnRveC1pbWFnZS10b29sc19fdG9vbGJhcnthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXJ9LnRveCAudG94LWltYWdlLXRvb2xzX19pbWFnZXtiYWNrZ3JvdW5kLWNvbG9yOiM2NjY7aGVpZ2h0OjM4MHB4O292ZXJmbG93OmF1dG87cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTAwJX0udG94IC50b3gtaW1hZ2UtdG9vbHNfX2ltYWdlLC50b3ggLnRveC1pbWFnZS10b29sc19faW1hZ2UrLnRveC1pbWFnZS10b29sc19fdG9vbGJhcnttYXJnaW4tdG9wOjhweH0udG94IC50b3gtaW1hZ2UtdG9vbHNfX2ltYWdlLWJne2JhY2tncm91bmQ6dXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RkaERBQU1BSUFCQU16TXpQLy8veXdBQUFBQURBQU1BQUFDRm9RZnFZZWFiTnlETWtCUWI4MVVhdDg1bnhndVVBRUFPdz09KX0udG94IC50b3gtaW1hZ2UtdG9vbHNfX3Rvb2xiYXI+LnRveC1zcGFjZXJ7ZmxleDoxOy1tcy1mbGV4LXByZWZlcnJlZC1zaXplOmF1dG99LnRveCAudG94LWNyb3ByZWN0LWJsb2Nre2JhY2tncm91bmQ6IzAwMDtvcGFjaXR5Oi41O3Bvc2l0aW9uOmFic29sdXRlO3pvb206MX0udG94IC50b3gtY3JvcHJlY3QtaGFuZGxle2JvcmRlcjoycHggc29saWQgI2ZmZjtoZWlnaHQ6MjBweDtsZWZ0OjA7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7d2lkdGg6MjBweH0udG94IC50b3gtY3JvcHJlY3QtaGFuZGxlLW1vdmV7Ym9yZGVyOjA7Y3Vyc29yOm1vdmU7cG9zaXRpb246YWJzb2x1dGV9LnRveCAudG94LWNyb3ByZWN0LWhhbmRsZS1ud3tib3JkZXItd2lkdGg6MnB4IDAgMCAycHg7Y3Vyc29yOm53LXJlc2l6ZTtsZWZ0OjEwMHB4O21hcmdpbjotMnB4IDAgMCAtMnB4O3RvcDoxMDBweH0udG94IC50b3gtY3JvcHJlY3QtaGFuZGxlLW5le2JvcmRlci13aWR0aDoycHggMnB4IDAgMDtjdXJzb3I6bmUtcmVzaXplO2xlZnQ6MjAwcHg7bWFyZ2luOi0ycHggMCAwIC0yMHB4O3RvcDoxMDBweH0udG94IC50b3gtY3JvcHJlY3QtaGFuZGxlLXN3e2JvcmRlci13aWR0aDowIDAgMnB4IDJweDtjdXJzb3I6c3ctcmVzaXplO2xlZnQ6MTAwcHg7bWFyZ2luOi0yMHB4IDJweCAwIC0ycHg7dG9wOjIwMHB4fS50b3ggLnRveC1jcm9wcmVjdC1oYW5kbGUtc2V7Ym9yZGVyLXdpZHRoOjAgMnB4IDJweCAwO2N1cnNvcjpzZS1yZXNpemU7bGVmdDoyMDBweDttYXJnaW46LTIwcHggMCAwIC0yMHB4O3RvcDoyMDBweH0udG94Om5vdChbZGlyPXJ0bF0pIC50b3gtaW1hZ2UtdG9vbHNfX3Rvb2xiYXI+LnRveC1zbGlkZXI6bm90KDpmaXJzdC1vZi10eXBlKXttYXJnaW4tbGVmdDo4cHh9LnRveDpub3QoW2Rpcj1ydGxdKSAudG94LWltYWdlLXRvb2xzX190b29sYmFyPi50b3gtYnV0dG9uKy50b3gtc2xpZGVye21hcmdpbi1sZWZ0OjMycHh9LnRveDpub3QoW2Rpcj1ydGxdKSAudG94LWltYWdlLXRvb2xzX190b29sYmFyPi50b3gtc2xpZGVyKy50b3gtYnV0dG9ue21hcmdpbi1sZWZ0OjMycHh9LnRveFtkaXI9cnRsXSAudG94LWltYWdlLXRvb2xzX190b29sYmFyPi50b3gtc2xpZGVyOm5vdCg6Zmlyc3Qtb2YtdHlwZSl7bWFyZ2luLXJpZ2h0OjhweH0udG94W2Rpcj1ydGxdIC50b3gtaW1hZ2UtdG9vbHNfX3Rvb2xiYXI+LnRveC1idXR0b24rLnRveC1zbGlkZXJ7bWFyZ2luLXJpZ2h0OjMycHh9LnRveFtkaXI9cnRsXSAudG94LWltYWdlLXRvb2xzX190b29sYmFyPi50b3gtc2xpZGVyKy50b3gtYnV0dG9ue21hcmdpbi1yaWdodDozMnB4fS50b3ggLnRveC1pbnNlcnQtdGFibGUtcGlja2Vye2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDt3aWR0aDoxNzBweH0udG94IC50b3gtaW5zZXJ0LXRhYmxlLXBpY2tlcj5kaXZ7Ym9yZGVyLWNvbG9yOiMwMDA7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDowIDFweCAxcHggMDtib3gtc2l6aW5nOmJvcmRlci1ib3g7aGVpZ2h0OjE3cHg7d2lkdGg6MTdweH0udG94IC50b3gtY29sbGVjdGlvbi0tbGlzdCAudG94LWNvbGxlY3Rpb25fX2dyb3VwIC50b3gtaW5zZXJ0LXRhYmxlLXBpY2tlcnttYXJnaW46LTRweCAwfS50b3ggLnRveC1pbnNlcnQtdGFibGUtcGlja2VyIC50b3gtaW5zZXJ0LXRhYmxlLXBpY2tlcl9fc2VsZWN0ZWR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDMyLDEyMiwxODMsLjUpO2JvcmRlci1jb2xvcjpyZ2JhKDMyLDEyMiwxODMsLjUpfS50b3ggLnRveC1pbnNlcnQtdGFibGUtcGlja2VyX19sYWJlbHtjb2xvcjojZmZmO2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjE0cHg7cGFkZGluZzo0cHg7dGV4dC1hbGlnbjpjZW50ZXI7d2lkdGg6MTAwJX0udG94Om5vdChbZGlyPXJ0bF0pIC50b3gtaW5zZXJ0LXRhYmxlLXBpY2tlcj5kaXY6bnRoLWNoaWxkKDEwbil7Ym9yZGVyLXJpZ2h0OjB9LnRveFtkaXI9cnRsXSAudG94LWluc2VydC10YWJsZS1waWNrZXI+ZGl2Om50aC1jaGlsZCgxMG4rMSl7Ym9yZGVyLXJpZ2h0OjB9LnRveCAudG94LW1lbnV7YmFja2dyb3VuZC1jb2xvcjojMmIzYjRlO2JvcmRlcjoxcHggc29saWQgIzAwMDtib3JkZXItcmFkaXVzOjNweDtib3gtc2hhZG93OjAgNHB4IDhweCAwIHJnYmEoNDIsNTUsNzAsLjEpO2Rpc3BsYXk6aW5saW5lLWJsb2NrO292ZXJmbG93OmhpZGRlbjt2ZXJ0aWNhbC1hbGlnbjp0b3A7ei1pbmRleDoxMTUwfS50b3ggLnRveC1tZW51LnRveC1jb2xsZWN0aW9uLnRveC1jb2xsZWN0aW9uLS1saXN0e3BhZGRpbmc6MH0udG94IC50b3gtbWVudS50b3gtY29sbGVjdGlvbi50b3gtY29sbGVjdGlvbi0tdG9vbGJhcntwYWRkaW5nOjRweH0udG94IC50b3gtbWVudS50b3gtY29sbGVjdGlvbi50b3gtY29sbGVjdGlvbi0tZ3JpZHtwYWRkaW5nOjRweH0udG94IC50b3gtbWVudV9fbGFiZWwgYmxvY2txdW90ZSwudG94IC50b3gtbWVudV9fbGFiZWwgY29kZSwudG94IC50b3gtbWVudV9fbGFiZWwgaDEsLnRveCAudG94LW1lbnVfX2xhYmVsIGgyLC50b3ggLnRveC1tZW51X19sYWJlbCBoMywudG94IC50b3gtbWVudV9fbGFiZWwgaDQsLnRveCAudG94LW1lbnVfX2xhYmVsIGg1LC50b3ggLnRveC1tZW51X19sYWJlbCBoNiwudG94IC50b3gtbWVudV9fbGFiZWwgcHttYXJnaW46MH0udG94IC50b3gtbWVudWJhcntiYWNrZ3JvdW5kOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgaGVpZ2h0PSczOXB4JyB2aWV3Qm94PScwIDAgNDAgMzlweCcgd2lkdGg9JzQwJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcmVjdCB4PScwJyB5PSczOHB4JyB3aWR0aD0nMTAwJyBoZWlnaHQ9JzEnIGZpbGw9JyUyMzAwMDAwMCcvJTNFJTNDL3N2ZyUzRSIpIGxlZnQgMCB0b3AgMCAjMjIyZjNlO2JhY2tncm91bmQtY29sb3I6IzIyMmYzZTtkaXNwbGF5OmZsZXg7ZmxleDowIDAgYXV0bztmbGV4LXNocmluazowO2ZsZXgtd3JhcDp3cmFwO3BhZGRpbmc6MCA0cHggMCA0cHh9LnRveC50b3gtdGlueW1jZTpub3QoLnRveC10aW55bWNlLWlubGluZSkgLnRveC1lZGl0b3ItaGVhZGVyOm5vdCg6Zmlyc3QtY2hpbGQpIC50b3gtbWVudWJhcntib3JkZXItdG9wOjFweCBzb2xpZCAjMDAwfS50b3ggLnRveC1tYnRue2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MDtib3JkZXItcmFkaXVzOjNweDtib3gtc2hhZG93Om5vbmU7Y29sb3I6I2ZmZjtkaXNwbGF5OmZsZXg7ZmxleDowIDAgYXV0bztmb250LXNpemU6MTRweDtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDo0MDA7aGVpZ2h0OjM0cHg7anVzdGlmeS1jb250ZW50OmNlbnRlcjttYXJnaW46MnB4IDAgM3B4IDA7b3V0bGluZTowO292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjAgNHB4O3RleHQtdHJhbnNmb3JtOm5vbmU7d2lkdGg6YXV0b30udG94IC50b3gtbWJ0bltkaXNhYmxlZF17YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXI6MDtib3gtc2hhZG93Om5vbmU7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSk7Y3Vyc29yOm5vdC1hbGxvd2VkfS50b3ggLnRveC1tYnRuOmZvY3VzOm5vdCg6ZGlzYWJsZWQpe2JhY2tncm91bmQ6IzRhNTU2Mjtib3JkZXI6MDtib3gtc2hhZG93Om5vbmU7Y29sb3I6I2ZmZn0udG94IC50b3gtbWJ0bi0tYWN0aXZle2JhY2tncm91bmQ6Izc1N2Q4Nztib3JkZXI6MDtib3gtc2hhZG93Om5vbmU7Y29sb3I6I2ZmZn0udG94IC50b3gtbWJ0bjpob3Zlcjpub3QoOmRpc2FibGVkKTpub3QoLnRveC1tYnRuLS1hY3RpdmUpe2JhY2tncm91bmQ6IzRhNTU2Mjtib3JkZXI6MDtib3gtc2hhZG93Om5vbmU7Y29sb3I6I2ZmZn0udG94IC50b3gtbWJ0bl9fc2VsZWN0LWxhYmVse2N1cnNvcjpkZWZhdWx0O2ZvbnQtd2VpZ2h0OjQwMDttYXJnaW46MCA0cHh9LnRveCAudG94LW1idG5bZGlzYWJsZWRdIC50b3gtbWJ0bl9fc2VsZWN0LWxhYmVse2N1cnNvcjpub3QtYWxsb3dlZH0udG94IC50b3gtbWJ0bl9fc2VsZWN0LWNoZXZyb257YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3dpZHRoOjE2cHg7ZGlzcGxheTpub25lfS50b3ggLnRveC1ub3RpZmljYXRpb257Ym9yZGVyLXJhZGl1czozcHg7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDoxcHg7Ym94LXNoYWRvdzpub25lO2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5Oi1tcy1ncmlkO2Rpc3BsYXk6Z3JpZDtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDA7LW1zLWdyaWQtY29sdW1uczptaW5tYXgoNDBweCwxZnIpIGF1dG8gbWlubWF4KDQwcHgsMWZyKTtncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDQwcHgsMWZyKSBhdXRvIG1pbm1heCg0MHB4LDFmcik7bWFyZ2luLXRvcDo0cHg7b3BhY2l0eTowO3BhZGRpbmc6NHB4O3RyYW5zaXRpb246dHJhbnNmb3JtIC4xcyBlYXNlLWluLG9wYWNpdHkgMTUwbXMgZWFzZS1pbn0udG94IC50b3gtbm90aWZpY2F0aW9uIHB7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS50b3ggLnRveC1ub3RpZmljYXRpb24gYXt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS50b3ggLnRveC1ub3RpZmljYXRpb24tLWlue29wYWNpdHk6MX0udG94IC50b3gtbm90aWZpY2F0aW9uLS1zdWNjZXNze2JhY2tncm91bmQtY29sb3I6I2U0ZWVkYTtib3JkZXItY29sb3I6I2Q3ZTZjODtjb2xvcjojZmZmfS50b3ggLnRveC1ub3RpZmljYXRpb24tLXN1Y2Nlc3MgcHtjb2xvcjojZmZmfS50b3ggLnRveC1ub3RpZmljYXRpb24tLXN1Y2Nlc3MgYXtjb2xvcjojNTQ3ODMxfS50b3ggLnRveC1ub3RpZmljYXRpb24tLXN1Y2Nlc3Mgc3Zne2ZpbGw6I2ZmZn0udG94IC50b3gtbm90aWZpY2F0aW9uLS1lcnJvcntiYWNrZ3JvdW5kLWNvbG9yOiNmOGRlZGU7Ym9yZGVyLWNvbG9yOiNmMmJmYmY7Y29sb3I6I2ZmZn0udG94IC50b3gtbm90aWZpY2F0aW9uLS1lcnJvciBwe2NvbG9yOiNmZmZ9LnRveCAudG94LW5vdGlmaWNhdGlvbi0tZXJyb3IgYXtjb2xvcjojYzAwfS50b3ggLnRveC1ub3RpZmljYXRpb24tLWVycm9yIHN2Z3tmaWxsOiNmZmZ9LnRveCAudG94LW5vdGlmaWNhdGlvbi0td2FybiwudG94IC50b3gtbm90aWZpY2F0aW9uLS13YXJuaW5ne2JhY2tncm91bmQtY29sb3I6I2ZmZmFlYTtib3JkZXItY29sb3I6I2ZmZTg5ZDtjb2xvcjojZmZmfS50b3ggLnRveC1ub3RpZmljYXRpb24tLXdhcm4gcCwudG94IC50b3gtbm90aWZpY2F0aW9uLS13YXJuaW5nIHB7Y29sb3I6I2ZmZn0udG94IC50b3gtbm90aWZpY2F0aW9uLS13YXJuIGEsLnRveCAudG94LW5vdGlmaWNhdGlvbi0td2FybmluZyBhe2NvbG9yOiNmZmZ9LnRveCAudG94LW5vdGlmaWNhdGlvbi0td2FybiBzdmcsLnRveCAudG94LW5vdGlmaWNhdGlvbi0td2FybmluZyBzdmd7ZmlsbDojZmZmfS50b3ggLnRveC1ub3RpZmljYXRpb24tLWluZm97YmFja2dyb3VuZC1jb2xvcjojZDllZGY3O2JvcmRlci1jb2xvcjojNzc5ZWNiO2NvbG9yOiNmZmZ9LnRveCAudG94LW5vdGlmaWNhdGlvbi0taW5mbyBwe2NvbG9yOiNmZmZ9LnRveCAudG94LW5vdGlmaWNhdGlvbi0taW5mbyBhe2NvbG9yOiNmZmZ9LnRveCAudG94LW5vdGlmaWNhdGlvbi0taW5mbyBzdmd7ZmlsbDojZmZmfS50b3ggLnRveC1ub3RpZmljYXRpb25fX2JvZHl7LW1zLWdyaWQtcm93LWFsaWduOmNlbnRlcjthbGlnbi1zZWxmOmNlbnRlcjtjb2xvcjojZmZmO2ZvbnQtc2l6ZToxNHB4Oy1tcy1ncmlkLWNvbHVtbi1zcGFuOjE7Z3JpZC1jb2x1bW4tZW5kOjM7LW1zLWdyaWQtY29sdW1uOjI7Z3JpZC1jb2x1bW4tc3RhcnQ6MjstbXMtZ3JpZC1yb3ctc3BhbjoxO2dyaWQtcm93LWVuZDoyOy1tcy1ncmlkLXJvdzoxO2dyaWQtcm93LXN0YXJ0OjE7dGV4dC1hbGlnbjpjZW50ZXI7d2hpdGUtc3BhY2U6bm9ybWFsO3dvcmQtYnJlYWs6YnJlYWstYWxsO3dvcmQtYnJlYWs6YnJlYWstd29yZH0udG94IC50b3gtbm90aWZpY2F0aW9uX19ib2R5Pip7bWFyZ2luOjB9LnRveCAudG94LW5vdGlmaWNhdGlvbl9fYm9keT4qKyp7bWFyZ2luLXRvcDoxcmVtfS50b3ggLnRveC1ub3RpZmljYXRpb25fX2ljb257LW1zLWdyaWQtcm93LWFsaWduOmNlbnRlcjthbGlnbi1zZWxmOmNlbnRlcjstbXMtZ3JpZC1jb2x1bW4tc3BhbjoxO2dyaWQtY29sdW1uLWVuZDoyOy1tcy1ncmlkLWNvbHVtbjoxO2dyaWQtY29sdW1uLXN0YXJ0OjE7LW1zLWdyaWQtcm93LXNwYW46MTtncmlkLXJvdy1lbmQ6MjstbXMtZ3JpZC1yb3c6MTtncmlkLXJvdy1zdGFydDoxOy1tcy1ncmlkLWNvbHVtbi1hbGlnbjplbmQ7anVzdGlmeS1zZWxmOmVuZH0udG94IC50b3gtbm90aWZpY2F0aW9uX19pY29uIHN2Z3tkaXNwbGF5OmJsb2NrfS50b3ggLnRveC1ub3RpZmljYXRpb25fX2Rpc21pc3N7LW1zLWdyaWQtcm93LWFsaWduOnN0YXJ0O2FsaWduLXNlbGY6c3RhcnQ7LW1zLWdyaWQtY29sdW1uLXNwYW46MTtncmlkLWNvbHVtbi1lbmQ6NDstbXMtZ3JpZC1jb2x1bW46MztncmlkLWNvbHVtbi1zdGFydDozOy1tcy1ncmlkLXJvdy1zcGFuOjE7Z3JpZC1yb3ctZW5kOjI7LW1zLWdyaWQtcm93OjE7Z3JpZC1yb3ctc3RhcnQ6MTstbXMtZ3JpZC1jb2x1bW4tYWxpZ246ZW5kO2p1c3RpZnktc2VsZjplbmR9LnRveCAudG94LW5vdGlmaWNhdGlvbiAudG94LXByb2dyZXNzLWJhcnstbXMtZ3JpZC1jb2x1bW4tc3BhbjozO2dyaWQtY29sdW1uLWVuZDo0Oy1tcy1ncmlkLWNvbHVtbjoxO2dyaWQtY29sdW1uLXN0YXJ0OjE7LW1zLWdyaWQtcm93LXNwYW46MTtncmlkLXJvdy1lbmQ6MzstbXMtZ3JpZC1yb3c6MjtncmlkLXJvdy1zdGFydDoyOy1tcy1ncmlkLWNvbHVtbi1hbGlnbjpjZW50ZXI7anVzdGlmeS1zZWxmOmNlbnRlcn0udG94IC50b3gtcG9we2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlfS50b3ggLnRveC1wb3AtLXJlc2l6aW5ne3RyYW5zaXRpb246d2lkdGggLjFzIGVhc2V9LnRveCAudG94LXBvcC0tcmVzaXppbmcgLnRveC10b29sYmFye2ZsZXgtd3JhcDpub3dyYXB9LnRveCAudG94LXBvcF9fZGlhbG9ne2JhY2tncm91bmQtY29sb3I6IzIyMmYzZTtib3JkZXI6MXB4IHNvbGlkICMwMDA7Ym9yZGVyLXJhZGl1czozcHg7Ym94LXNoYWRvdzowIDFweCAzcHggcmdiYSgwLDAsMCwuMTUpO21pbi13aWR0aDowO292ZXJmbG93OmhpZGRlbn0udG94IC50b3gtcG9wX19kaWFsb2c+Om5vdCgudG94LXRvb2xiYXIpe21hcmdpbjo0cHggNHB4IDRweCA4cHh9LnRveCAudG94LXBvcF9fZGlhbG9nIC50b3gtdG9vbGJhcntiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O21hcmdpbi1ib3R0b206LTFweH0udG94IC50b3gtcG9wOjphZnRlciwudG94IC50b3gtcG9wOjpiZWZvcmV7Ym9yZGVyLXN0eWxlOnNvbGlkO2NvbnRlbnQ6Jyc7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDowfS50b3ggLnRveC1wb3AudG94LXBvcC0tYm90dG9tOjphZnRlciwudG94IC50b3gtcG9wLnRveC1wb3AtLWJvdHRvbTo6YmVmb3Jle2xlZnQ6NTAlO3RvcDoxMDAlfS50b3ggLnRveC1wb3AudG94LXBvcC0tYm90dG9tOjphZnRlcntib3JkZXItY29sb3I6IzIyMmYzZSB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtib3JkZXItd2lkdGg6OHB4O21hcmdpbi1sZWZ0Oi04cHg7bWFyZ2luLXRvcDotMXB4fS50b3ggLnRveC1wb3AudG94LXBvcC0tYm90dG9tOjpiZWZvcmV7Ym9yZGVyLWNvbG9yOiMwMDAgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXdpZHRoOjlweDttYXJnaW4tbGVmdDotOXB4fS50b3ggLnRveC1wb3AudG94LXBvcC0tdG9wOjphZnRlciwudG94IC50b3gtcG9wLnRveC1wb3AtLXRvcDo6YmVmb3Jle2xlZnQ6NTAlO3RvcDowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xMDAlKX0udG94IC50b3gtcG9wLnRveC1wb3AtLXRvcDo6YWZ0ZXJ7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICMyMjJmM2UgdHJhbnNwYXJlbnQ7Ym9yZGVyLXdpZHRoOjhweDttYXJnaW4tbGVmdDotOHB4O21hcmdpbi10b3A6MXB4fS50b3ggLnRveC1wb3AudG94LXBvcC0tdG9wOjpiZWZvcmV7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICMwMDAgdHJhbnNwYXJlbnQ7Ym9yZGVyLXdpZHRoOjlweDttYXJnaW4tbGVmdDotOXB4fS50b3ggLnRveC1wb3AudG94LXBvcC0tbGVmdDo6YWZ0ZXIsLnRveCAudG94LXBvcC50b3gtcG9wLS1sZWZ0OjpiZWZvcmV7bGVmdDowO3RvcDpjYWxjKDUwJSAtIDFweCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSl9LnRveCAudG94LXBvcC50b3gtcG9wLS1sZWZ0OjphZnRlcntib3JkZXItY29sb3I6dHJhbnNwYXJlbnQgIzIyMmYzZSB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtib3JkZXItd2lkdGg6OHB4O21hcmdpbi1sZWZ0Oi0xNXB4fS50b3ggLnRveC1wb3AudG94LXBvcC0tbGVmdDo6YmVmb3Jle2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudCAjMDAwIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O2JvcmRlci13aWR0aDoxMHB4O21hcmdpbi1sZWZ0Oi0xOXB4fS50b3ggLnRveC1wb3AudG94LXBvcC0tcmlnaHQ6OmFmdGVyLC50b3ggLnRveC1wb3AudG94LXBvcC0tcmlnaHQ6OmJlZm9yZXtsZWZ0OjEwMCU7dG9wOmNhbGMoNTAlICsgMXB4KTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKX0udG94IC50b3gtcG9wLnRveC1wb3AtLXJpZ2h0OjphZnRlcntib3JkZXItY29sb3I6dHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzIyMmYzZTtib3JkZXItd2lkdGg6OHB4O21hcmdpbi1sZWZ0Oi0xcHh9LnRveCAudG94LXBvcC50b3gtcG9wLS1yaWdodDo6YmVmb3Jle2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjMDAwO2JvcmRlci13aWR0aDoxMHB4O21hcmdpbi1sZWZ0Oi0xcHh9LnRveCAudG94LXBvcC50b3gtcG9wLS1hbGlnbi1sZWZ0OjphZnRlciwudG94IC50b3gtcG9wLnRveC1wb3AtLWFsaWduLWxlZnQ6OmJlZm9yZXtsZWZ0OjIwcHh9LnRveCAudG94LXBvcC50b3gtcG9wLS1hbGlnbi1yaWdodDo6YWZ0ZXIsLnRveCAudG94LXBvcC50b3gtcG9wLS1hbGlnbi1yaWdodDo6YmVmb3Jle2xlZnQ6Y2FsYygxMDAlIC0gMjBweCl9LnRveCAudG94LXNpZGViYXItd3JhcHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93O2ZsZXgtZ3JvdzoxOy1tcy1mbGV4LXByZWZlcnJlZC1zaXplOjA7bWluLWhlaWdodDowfS50b3ggLnRveC1zaWRlYmFye2JhY2tncm91bmQtY29sb3I6IzIyMmYzZTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93O2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0udG94IC50b3gtc2lkZWJhcl9fc2xpZGVye2Rpc3BsYXk6ZmxleDtvdmVyZmxvdzpoaWRkZW59LnRveCAudG94LXNpZGViYXJfX3BhbmUtY29udGFpbmVye2Rpc3BsYXk6ZmxleH0udG94IC50b3gtc2lkZWJhcl9fcGFuZXtkaXNwbGF5OmZsZXh9LnRveCAudG94LXNpZGViYXItLXNsaWRpbmctY2xvc2Vke29wYWNpdHk6MH0udG94IC50b3gtc2lkZWJhci0tc2xpZGluZy1vcGVue29wYWNpdHk6MX0udG94IC50b3gtc2lkZWJhci0tc2xpZGluZy1ncm93aW5nLC50b3ggLnRveC1zaWRlYmFyLS1zbGlkaW5nLXNocmlua2luZ3t0cmFuc2l0aW9uOndpZHRoIC41cyBlYXNlLG9wYWNpdHkgLjVzIGVhc2V9LnRveCAudG94LXNlbGVjdG9ye2JhY2tncm91bmQtY29sb3I6IzQwOTlmZjtib3JkZXItY29sb3I6IzQwOTlmZjtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOjFweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjEwcHg7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTBweH0udG94LnRveC1wbGF0Zm9ybS10b3VjaCAudG94LXNlbGVjdG9ye2hlaWdodDoxMnB4O3dpZHRoOjEycHh9LnRveCAudG94LXNsaWRlcnthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2ZsZXg6MTstbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTphdXRvO2hlaWdodDoyNHB4O2p1c3RpZnktY29udGVudDpjZW50ZXI7cG9zaXRpb246cmVsYXRpdmV9LnRveCAudG94LXNsaWRlcl9fcmFpbHtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlcjoxcHggc29saWQgIzAwMDtib3JkZXItcmFkaXVzOjNweDtoZWlnaHQ6MTBweDttaW4td2lkdGg6MTIwcHg7d2lkdGg6MTAwJX0udG94IC50b3gtc2xpZGVyX19oYW5kbGV7YmFja2dyb3VuZC1jb2xvcjojMjA3YWI3O2JvcmRlcjoycHggc29saWQgIzE4NWQ4Yztib3JkZXItcmFkaXVzOjNweDtib3gtc2hhZG93Om5vbmU7aGVpZ2h0OjI0cHg7bGVmdDo1MCU7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVZKC01MCUpO3dpZHRoOjE0cHh9LnRveCAudG94LXNvdXJjZS1jb2Rle292ZXJmbG93OmF1dG99LnRveCAudG94LXNwaW5uZXJ7ZGlzcGxheTpmbGV4fS50b3ggLnRveC1zcGlubmVyPmRpdnthbmltYXRpb246dGFtLWJvdW5jaW5nLWRvdHMgMS41cyBlYXNlLWluLW91dCAwcyBpbmZpbml0ZSBib3RoO2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSk7Ym9yZGVyLXJhZGl1czoxMDAlO2hlaWdodDo4cHg7d2lkdGg6OHB4fS50b3ggLnRveC1zcGlubmVyPmRpdjpudGgtY2hpbGQoMSl7YW5pbWF0aW9uLWRlbGF5Oi0uMzJzfS50b3ggLnRveC1zcGlubmVyPmRpdjpudGgtY2hpbGQoMil7YW5pbWF0aW9uLWRlbGF5Oi0uMTZzfUBrZXlmcmFtZXMgdGFtLWJvdW5jaW5nLWRvdHN7MCUsMTAwJSw4MCV7dHJhbnNmb3JtOnNjYWxlKDApfTQwJXt0cmFuc2Zvcm06c2NhbGUoMSl9fS50b3g6bm90KFtkaXI9cnRsXSkgLnRveC1zcGlubmVyPmRpdjpub3QoOmZpcnN0LWNoaWxkKXttYXJnaW4tbGVmdDo0cHh9LnRveFtkaXI9cnRsXSAudG94LXNwaW5uZXI+ZGl2Om5vdCg6Zmlyc3QtY2hpbGQpe21hcmdpbi1yaWdodDo0cHh9LnRveCAudG94LXN0YXR1c2JhcnthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZC1jb2xvcjojMjIyZjNlO2JvcmRlci10b3A6MXB4IHNvbGlkICMwMDA7Y29sb3I6I2ZmZjtkaXNwbGF5OmZsZXg7ZmxleDowIDAgYXV0bztmb250LXNpemU6MTJweDtmb250LXdlaWdodDo0MDA7aGVpZ2h0OjE4cHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MCA4cHg7cG9zaXRpb246cmVsYXRpdmU7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfS50b3ggLnRveC1zdGF0dXNiYXJfX3RleHQtY29udGFpbmVye2Rpc3BsYXk6ZmxleDtmbGV4OjEgMSBhdXRvO2p1c3RpZnktY29udGVudDpmbGV4LWVuZDtvdmVyZmxvdzpoaWRkZW59LnRveCAudG94LXN0YXR1c2Jhcl9fcGF0aHtkaXNwbGF5OmZsZXg7ZmxleDoxIDEgYXV0bzttYXJnaW4tcmlnaHQ6YXV0bztvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXB9LnRveCAudG94LXN0YXR1c2Jhcl9fcGF0aD4qe2Rpc3BsYXk6aW5saW5lO3doaXRlLXNwYWNlOm5vd3JhcH0udG94IC50b3gtc3RhdHVzYmFyX193b3JkY291bnR7ZmxleDowIDAgYXV0bzttYXJnaW4tbGVmdDoxY2h9LnRveCAudG94LXN0YXR1c2JhciBhLC50b3ggLnRveC1zdGF0dXNiYXJfX3BhdGgtaXRlbSwudG94IC50b3gtc3RhdHVzYmFyX193b3JkY291bnR7Y29sb3I6I2ZmZjt0ZXh0LWRlY29yYXRpb246bm9uZX0udG94IC50b3gtc3RhdHVzYmFyIGE6Zm9jdXM6bm90KDpkaXNhYmxlZCk6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSwudG94IC50b3gtc3RhdHVzYmFyIGE6aG92ZXI6bm90KDpkaXNhYmxlZCk6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSwudG94IC50b3gtc3RhdHVzYmFyX19wYXRoLWl0ZW06Zm9jdXM6bm90KDpkaXNhYmxlZCk6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSwudG94IC50b3gtc3RhdHVzYmFyX19wYXRoLWl0ZW06aG92ZXI6bm90KDpkaXNhYmxlZCk6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSwudG94IC50b3gtc3RhdHVzYmFyX193b3JkY291bnQ6Zm9jdXM6bm90KDpkaXNhYmxlZCk6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSwudG94IC50b3gtc3RhdHVzYmFyX193b3JkY291bnQ6aG92ZXI6bm90KDpkaXNhYmxlZCk6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKXtjdXJzb3I6cG9pbnRlcjt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS50b3ggLnRveC1zdGF0dXNiYXJfX3Jlc2l6ZS1oYW5kbGV7YWxpZ24taXRlbXM6ZmxleC1lbmQ7YWxpZ24tc2VsZjpzdHJldGNoO2N1cnNvcjpud3NlLXJlc2l6ZTtkaXNwbGF5OmZsZXg7ZmxleDowIDAgYXV0bztqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7bWFyZ2luLWxlZnQ6YXV0bzttYXJnaW4tcmlnaHQ6LThweDtwYWRkaW5nLWxlZnQ6MWNofS50b3ggLnRveC1zdGF0dXNiYXJfX3Jlc2l6ZS1oYW5kbGUgc3Zne2Rpc3BsYXk6YmxvY2s7ZmlsbDojZmZmfS50b3g6bm90KFtkaXI9cnRsXSkgLnRveC1zdGF0dXNiYXJfX3BhdGg+KnttYXJnaW4tcmlnaHQ6NHB4fS50b3g6bm90KFtkaXI9cnRsXSkgLnRveC1zdGF0dXNiYXJfX2JyYW5kaW5ne21hcmdpbi1sZWZ0OjFjaH0udG94W2Rpcj1ydGxdIC50b3gtc3RhdHVzYmFye2ZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlfS50b3hbZGlyPXJ0bF0gLnRveC1zdGF0dXNiYXJfX3BhdGg+KnttYXJnaW4tbGVmdDo0cHh9LnRveCAudG94LXRocm9iYmVye3otaW5kZXg6MTQwMH0udG94IC50b3gtdGhyb2JiZXJfX2J1c3ktc3Bpbm5lcnthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDM0LDQ3LDYyLC42KTtib3R0b206MDtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjtsZWZ0OjA7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDt0b3A6MH0udG94IC50b3gtdGJ0bnthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZDowIDA7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czozcHg7Ym94LXNoYWRvdzpub25lO2NvbG9yOiNmZmY7ZGlzcGxheTpmbGV4O2ZsZXg6MCAwIGF1dG87Zm9udC1zaXplOjE0cHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6NDAwO2hlaWdodDozNHB4O2p1c3RpZnktY29udGVudDpjZW50ZXI7bWFyZ2luOjJweCAwIDNweCAwO291dGxpbmU6MDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3RleHQtdHJhbnNmb3JtOm5vbmU7d2lkdGg6MzRweH0udG94IC50b3gtdGJ0biBzdmd7ZGlzcGxheTpibG9jaztmaWxsOiNmZmZ9LnRveCAudG94LXRidG4udG94LXRidG4tbW9yZXtwYWRkaW5nLWxlZnQ6NXB4O3BhZGRpbmctcmlnaHQ6NXB4O3dpZHRoOmluaGVyaXR9LnRveCAudG94LXRidG46Zm9jdXN7YmFja2dyb3VuZDojNGE1NTYyO2JvcmRlcjowO2JveC1zaGFkb3c6bm9uZX0udG94IC50b3gtdGJ0bjpob3ZlcntiYWNrZ3JvdW5kOiM0YTU1NjI7Ym9yZGVyOjA7Ym94LXNoYWRvdzpub25lO2NvbG9yOiNmZmZ9LnRveCAudG94LXRidG46aG92ZXIgc3Zne2ZpbGw6I2ZmZn0udG94IC50b3gtdGJ0bjphY3RpdmV7YmFja2dyb3VuZDojNzU3ZDg3O2JvcmRlcjowO2JveC1zaGFkb3c6bm9uZTtjb2xvcjojZmZmfS50b3ggLnRveC10YnRuOmFjdGl2ZSBzdmd7ZmlsbDojZmZmfS50b3ggLnRveC10YnRuLS1kaXNhYmxlZCwudG94IC50b3gtdGJ0bi0tZGlzYWJsZWQ6aG92ZXIsLnRveCAudG94LXRidG46ZGlzYWJsZWQsLnRveCAudG94LXRidG46ZGlzYWJsZWQ6aG92ZXJ7YmFja2dyb3VuZDowIDA7Ym9yZGVyOjA7Ym94LXNoYWRvdzpub25lO2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpO2N1cnNvcjpub3QtYWxsb3dlZH0udG94IC50b3gtdGJ0bi0tZGlzYWJsZWQgc3ZnLC50b3ggLnRveC10YnRuLS1kaXNhYmxlZDpob3ZlciBzdmcsLnRveCAudG94LXRidG46ZGlzYWJsZWQgc3ZnLC50b3ggLnRveC10YnRuOmRpc2FibGVkOmhvdmVyIHN2Z3tmaWxsOnJnYmEoMjU1LDI1NSwyNTUsLjUpfS50b3ggLnRveC10YnRuLS1lbmFibGVkLC50b3ggLnRveC10YnRuLS1lbmFibGVkOmhvdmVye2JhY2tncm91bmQ6Izc1N2Q4Nztib3JkZXI6MDtib3gtc2hhZG93Om5vbmU7Y29sb3I6I2ZmZn0udG94IC50b3gtdGJ0bi0tZW5hYmxlZDpob3Zlcj4qLC50b3ggLnRveC10YnRuLS1lbmFibGVkPip7dHJhbnNmb3JtOm5vbmV9LnRveCAudG94LXRidG4tLWVuYWJsZWQgc3ZnLC50b3ggLnRveC10YnRuLS1lbmFibGVkOmhvdmVyIHN2Z3tmaWxsOiNmZmZ9LnRveCAudG94LXRidG46Zm9jdXM6bm90KC50b3gtdGJ0bi0tZGlzYWJsZWQpe2NvbG9yOiNmZmZ9LnRveCAudG94LXRidG46Zm9jdXM6bm90KC50b3gtdGJ0bi0tZGlzYWJsZWQpIHN2Z3tmaWxsOiNmZmZ9LnRveCAudG94LXRidG46YWN0aXZlPip7dHJhbnNmb3JtOm5vbmV9LnRveCAudG94LXRidG4tLW1ke2hlaWdodDo1MXB4O3dpZHRoOjUxcHh9LnRveCAudG94LXRidG4tLWxne2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtoZWlnaHQ6NjhweDt3aWR0aDo2OHB4fS50b3ggLnRveC10YnRuLS1yZXR1cm57LW1zLWdyaWQtcm93LWFsaWduOnN0cmV0Y2g7YWxpZ24tc2VsZjpzdHJldGNoO2hlaWdodDp1bnNldDt3aWR0aDoxNnB4fS50b3ggLnRveC10YnRuLS1sYWJlbGVke3BhZGRpbmc6MCA0cHg7d2lkdGg6dW5zZXR9LnRveCAudG94LXRidG5fX3ZsYWJlbHtkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZToxMHB4O2ZvbnQtd2VpZ2h0OjQwMDtsZXR0ZXItc3BhY2luZzotLjAyNWVtO21hcmdpbi1ib3R0b206NHB4O3doaXRlLXNwYWNlOm5vd3JhcH0udG94IC50b3gtdGJ0bi0tc2VsZWN0e21hcmdpbjoycHggMCAzcHggMDtwYWRkaW5nOjAgNHB4O3dpZHRoOmF1dG99LnRveCAudG94LXRidG5fX3NlbGVjdC1sYWJlbHtjdXJzb3I6ZGVmYXVsdDtmb250LXdlaWdodDo0MDA7bWFyZ2luOjAgNHB4fS50b3ggLnRveC10YnRuX19zZWxlY3QtY2hldnJvbnthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7d2lkdGg6MTZweH0udG94IC50b3gtdGJ0bl9fc2VsZWN0LWNoZXZyb24gc3Zne2ZpbGw6cmdiYSgyNTUsMjU1LDI1NSwuNSl9LnRveCAudG94LXRidG4tLWJlc3Bva2UgLnRveC10YnRuX19zZWxlY3QtbGFiZWx7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwO3dpZHRoOjdlbX0udG94IC50b3gtc3BsaXQtYnV0dG9ue2JvcmRlcjowO2JvcmRlci1yYWRpdXM6M3B4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmZsZXg7bWFyZ2luOjJweCAwIDNweCAwO292ZXJmbG93OmhpZGRlbn0udG94IC50b3gtc3BsaXQtYnV0dG9uOmhvdmVye2JveC1zaGFkb3c6MCAwIDAgMXB4ICM0YTU1NjIgaW5zZXR9LnRveCAudG94LXNwbGl0LWJ1dHRvbjpmb2N1c3tiYWNrZ3JvdW5kOiM0YTU1NjI7Ym94LXNoYWRvdzpub25lO2NvbG9yOiNmZmZ9LnRveCAudG94LXNwbGl0LWJ1dHRvbj4qe2JvcmRlci1yYWRpdXM6MH0udG94IC50b3gtc3BsaXQtYnV0dG9uX19jaGV2cm9ue3dpZHRoOjE2cHh9LnRveCAudG94LXNwbGl0LWJ1dHRvbl9fY2hldnJvbiBzdmd7ZmlsbDpyZ2JhKDI1NSwyNTUsMjU1LC41KX0udG94IC50b3gtc3BsaXQtYnV0dG9uIC50b3gtdGJ0bnttYXJnaW46MH0udG94LnRveC1wbGF0Zm9ybS10b3VjaCAudG94LXNwbGl0LWJ1dHRvbiAudG94LXRidG46Zmlyc3QtY2hpbGR7d2lkdGg6MzBweH0udG94LnRveC1wbGF0Zm9ybS10b3VjaCAudG94LXNwbGl0LWJ1dHRvbl9fY2hldnJvbnt3aWR0aDoyMHB4fS50b3ggLnRveC1zcGxpdC1idXR0b24udG94LXRidG4tLWRpc2FibGVkIC50b3gtdGJ0bjpmb2N1cywudG94IC50b3gtc3BsaXQtYnV0dG9uLnRveC10YnRuLS1kaXNhYmxlZCAudG94LXRidG46aG92ZXIsLnRveCAudG94LXNwbGl0LWJ1dHRvbi50b3gtdGJ0bi0tZGlzYWJsZWQ6Zm9jdXMsLnRveCAudG94LXNwbGl0LWJ1dHRvbi50b3gtdGJ0bi0tZGlzYWJsZWQ6aG92ZXJ7YmFja2dyb3VuZDowIDA7Ym94LXNoYWRvdzpub25lO2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfS50b3ggLnRveC10b29sYmFyLW92ZXJsb3Jke2JhY2tncm91bmQtY29sb3I6IzIyMmYzZX0udG94IC50b3gtdG9vbGJhciwudG94IC50b3gtdG9vbGJhcl9fb3ZlcmZsb3csLnRveCAudG94LXRvb2xiYXJfX3ByaW1hcnl7YmFja2dyb3VuZDp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnIGhlaWdodD0nMzlweCcgdmlld0JveD0nMCAwIDQwIDM5cHgnIHdpZHRoPSc0MCcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3JlY3QgeD0nMCcgeT0nMzhweCcgd2lkdGg9JzEwMCcgaGVpZ2h0PScxJyBmaWxsPSclMjMwMDAwMDAnLyUzRSUzQy9zdmclM0UiKSBsZWZ0IDAgdG9wIDAgIzIyMmYzZTtiYWNrZ3JvdW5kLWNvbG9yOiMyMjJmM2U7ZGlzcGxheTpmbGV4O2ZsZXg6MCAwIGF1dG87ZmxleC1zaHJpbms6MDtmbGV4LXdyYXA6d3JhcDtwYWRkaW5nOjAgMH0udG94IC50b3gtdG9vbGJhcl9fb3ZlcmZsb3cudG94LXRvb2xiYXJfX292ZXJmbG93LS1jbG9zZWR7aGVpZ2h0OjA7b3BhY2l0eTowO3BhZGRpbmctYm90dG9tOjA7cGFkZGluZy10b3A6MDt2aXNpYmlsaXR5OmhpZGRlbn0udG94IC50b3gtdG9vbGJhcl9fb3ZlcmZsb3ctLWdyb3dpbmd7dHJhbnNpdGlvbjpoZWlnaHQgLjNzIGVhc2Usb3BhY2l0eSAuMnMgbGluZWFyIC4xc30udG94IC50b3gtdG9vbGJhcl9fb3ZlcmZsb3ctLXNocmlua2luZ3t0cmFuc2l0aW9uOm9wYWNpdHkgLjNzIGVhc2UsaGVpZ2h0IC4ycyBsaW5lYXIgLjFzLHZpc2liaWxpdHkgMHMgbGluZWFyIC4zc30udG94IC50b3gtbWVudWJhcisudG94LXRvb2xiYXIsLnRveCAudG94LW1lbnViYXIrLnRveC10b29sYmFyLW92ZXJsb3JkIC50b3gtdG9vbGJhcl9fcHJpbWFyeXtib3JkZXItdG9wOjFweCBzb2xpZCAjMDAwO21hcmdpbi10b3A6LTFweH0udG94IC50b3gtdG9vbGJhci0tc2Nyb2xsaW5ne2ZsZXgtd3JhcDpub3dyYXA7b3ZlcmZsb3cteDphdXRvfS50b3ggLnRveC1wb3AgLnRveC10b29sYmFye2JvcmRlci13aWR0aDowfS50b3ggLnRveC10b29sYmFyLS1uby1kaXZpZGVye2JhY2tncm91bmQtaW1hZ2U6bm9uZX0udG94LXRpbnltY2U6bm90KC50b3gtdGlueW1jZS1pbmxpbmUpIC50b3gtZWRpdG9yLWhlYWRlcjpub3QoOmZpcnN0LWNoaWxkKSAudG94LXRvb2xiYXItb3ZlcmxvcmQ6Zmlyc3QtY2hpbGQgLnRveC10b29sYmFyX19wcmltYXJ5LC50b3gtdGlueW1jZTpub3QoLnRveC10aW55bWNlLWlubGluZSkgLnRveC1lZGl0b3ItaGVhZGVyOm5vdCg6Zmlyc3QtY2hpbGQpIC50b3gtdG9vbGJhcjpmaXJzdC1jaGlsZHtib3JkZXItdG9wOjFweCBzb2xpZCAjMDAwfS50b3gudG94LXRpbnltY2UtYXV4IC50b3gtdG9vbGJhcl9fb3ZlcmZsb3d7YmFja2dyb3VuZC1jb2xvcjojMjIyZjNlO2JvcmRlcjoxcHggc29saWQgIzAwMDtib3JkZXItcmFkaXVzOjNweDtib3gtc2hhZG93OjAgMXB4IDNweCByZ2JhKDAsMCwwLC4xNSl9LnRveFtkaXI9cnRsXSAudG94LXRidG5fX2ljb24tcnRsIHN2Z3t0cmFuc2Zvcm06cm90YXRlWSgxODBkZWcpfS50b3ggLnRveC10b29sYmFyX19ncm91cHthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO21hcmdpbjowIDA7cGFkZGluZzowIDRweCAwIDRweH0udG94IC50b3gtdG9vbGJhcl9fZ3JvdXAtLXB1bGwtcmlnaHR7bWFyZ2luLWxlZnQ6YXV0b30udG94IC50b3gtdG9vbGJhci0tc2Nyb2xsaW5nIC50b3gtdG9vbGJhcl9fZ3JvdXB7ZmxleC1zaHJpbms6MDtmbGV4LXdyYXA6bm93cmFwfS50b3g6bm90KFtkaXI9cnRsXSkgLnRveC10b29sYmFyX19ncm91cDpub3QoOmxhc3Qtb2YtdHlwZSl7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjMDAwfS50b3hbZGlyPXJ0bF0gLnRveC10b29sYmFyX19ncm91cDpub3QoOmxhc3Qtb2YtdHlwZSl7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICMwMDB9LnRveCAudG94LXRvb2x0aXB7ZGlzcGxheTppbmxpbmUtYmxvY2s7cGFkZGluZzo4cHg7cG9zaXRpb246cmVsYXRpdmV9LnRveCAudG94LXRvb2x0aXBfX2JvZHl7YmFja2dyb3VuZC1jb2xvcjojM2Q1NDZmO2JvcmRlci1yYWRpdXM6M3B4O2JveC1zaGFkb3c6MCAycHggNHB4IHJnYmEoNDIsNTUsNzAsLjMpO2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjc1KTtmb250LXNpemU6MTRweDtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDo0MDA7cGFkZGluZzo0cHggOHB4O3RleHQtdHJhbnNmb3JtOm5vbmV9LnRveCAudG94LXRvb2x0aXBfX2Fycm93e3Bvc2l0aW9uOmFic29sdXRlfS50b3ggLnRveC10b29sdGlwLS1kb3duIC50b3gtdG9vbHRpcF9fYXJyb3d7Ym9yZGVyLWxlZnQ6OHB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodDo4cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXRvcDo4cHggc29saWQgIzNkNTQ2Zjtib3R0b206MDtsZWZ0OjUwJTtwb3NpdGlvbjphYnNvbHV0ZTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKX0udG94IC50b3gtdG9vbHRpcC0tdXAgLnRveC10b29sdGlwX19hcnJvd3tib3JkZXItYm90dG9tOjhweCBzb2xpZCAjM2Q1NDZmO2JvcmRlci1sZWZ0OjhweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQ6OHB4IHNvbGlkIHRyYW5zcGFyZW50O2xlZnQ6NTAlO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpfS50b3ggLnRveC10b29sdGlwLS1yaWdodCAudG94LXRvb2x0aXBfX2Fycm93e2JvcmRlci1ib3R0b206OHB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1sZWZ0OjhweCBzb2xpZCAjM2Q1NDZmO2JvcmRlci10b3A6OHB4IHNvbGlkIHRyYW5zcGFyZW50O3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7dG9wOjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKX0udG94IC50b3gtdG9vbHRpcC0tbGVmdCAudG94LXRvb2x0aXBfX2Fycm93e2JvcmRlci1ib3R0b206OHB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodDo4cHggc29saWQgIzNkNTQ2Zjtib3JkZXItdG9wOjhweCBzb2xpZCB0cmFuc3BhcmVudDtsZWZ0OjA7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKX0udG94IC50b3gtd2VsbHtib3JkZXI6MXB4IHNvbGlkICMwMDA7Ym9yZGVyLXJhZGl1czozcHg7cGFkZGluZzo4cHg7d2lkdGg6MTAwJX0udG94IC50b3gtd2VsbD46Zmlyc3QtY2hpbGR7bWFyZ2luLXRvcDowfS50b3ggLnRveC13ZWxsPjpsYXN0LWNoaWxke21hcmdpbi1ib3R0b206MH0udG94IC50b3gtd2VsbD46b25seS1jaGlsZHttYXJnaW46MH0udG94IC50b3gtY3VzdG9tLWVkaXRvcntib3JkZXI6MXB4IHNvbGlkICMwMDA7Ym9yZGVyLXJhZGl1czozcHg7ZGlzcGxheTpmbGV4O2ZsZXg6MTtwb3NpdGlvbjpyZWxhdGl2ZX0udG94IC50b3gtZGlhbG9nLWxvYWRpbmc6OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjUpO2NvbnRlbnQ6IiI7aGVpZ2h0OjEwMCU7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwJTt6LWluZGV4OjEwMDB9LnRveCAudG94LXRhYntjdXJzb3I6cG9pbnRlcn0udG94IC50b3gtZGlhbG9nX19jb250ZW50LWpze2Rpc3BsYXk6ZmxleDtmbGV4OjE7LW1zLWZsZXgtcHJlZmVycmVkLXNpemU6YXV0b30udG94IC50b3gtZGlhbG9nX19ib2R5LWNvbnRlbnQgLnRveC1jb2xsZWN0aW9ue2Rpc3BsYXk6ZmxleDtmbGV4OjE7LW1zLWZsZXgtcHJlZmVycmVkLXNpemU6YXV0b30udG94IC50b3gtaW1hZ2UtdG9vbHMtZWRpdC1wYW5lbHtoZWlnaHQ6NjBweH0udG94IC50b3gtaW1hZ2UtdG9vbHNfX3NpZGViYXJ7aGVpZ2h0OjYwcHh9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/skins/ui/oxide-dark/skin.mobile.min.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICovCi50aW55bWNlLW1vYmlsZS1vdXRlci1jb250YWluZXJ7YWxsOmluaXRpYWw7ZGlzcGxheTpibG9ja30udGlueW1jZS1tb2JpbGUtb3V0ZXItY29udGFpbmVyICp7Ym9yZGVyOjA7Ym94LXNpemluZzppbml0aWFsO2N1cnNvcjppbmhlcml0O2Zsb2F0Om5vbmU7bGluZS1oZWlnaHQ6MTttYXJnaW46MDtvdXRsaW5lOjA7cGFkZGluZzowOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0ZXh0LXNoYWRvdzpub25lO3doaXRlLXNwYWNlOm5vd3JhcH0udGlueW1jZS1tb2JpbGUtaWNvbi1hcnJvdy1iYWNrOjpiZWZvcmV7Y29udGVudDoiXGU1Y2QifS50aW55bWNlLW1vYmlsZS1pY29uLWltYWdlOjpiZWZvcmV7Y29udGVudDoiXGU0MTIifS50aW55bWNlLW1vYmlsZS1pY29uLWNhbmNlbC1jaXJjbGU6OmJlZm9yZXtjb250ZW50OiJcZTVjOSJ9LnRpbnltY2UtbW9iaWxlLWljb24tZnVsbC1kb3Q6OmJlZm9yZXtjb250ZW50OiJcZTA2MSJ9LnRpbnltY2UtbW9iaWxlLWljb24tYWxpZ24tY2VudGVyOjpiZWZvcmV7Y29udGVudDoiXGUyMzQifS50aW55bWNlLW1vYmlsZS1pY29uLWFsaWduLWxlZnQ6OmJlZm9yZXtjb250ZW50OiJcZTIzNiJ9LnRpbnltY2UtbW9iaWxlLWljb24tYWxpZ24tcmlnaHQ6OmJlZm9yZXtjb250ZW50OiJcZTIzNyJ9LnRpbnltY2UtbW9iaWxlLWljb24tYm9sZDo6YmVmb3Jle2NvbnRlbnQ6IlxlMjM4In0udGlueW1jZS1tb2JpbGUtaWNvbi1pdGFsaWM6OmJlZm9yZXtjb250ZW50OiJcZTIzZiJ9LnRpbnltY2UtbW9iaWxlLWljb24tdW5vcmRlcmVkLWxpc3Q6OmJlZm9yZXtjb250ZW50OiJcZTI0MSJ9LnRpbnltY2UtbW9iaWxlLWljb24tb3JkZXJlZC1saXN0OjpiZWZvcmV7Y29udGVudDoiXGUyNDIifS50aW55bWNlLW1vYmlsZS1pY29uLWZvbnQtc2l6ZTo6YmVmb3Jle2NvbnRlbnQ6IlxlMjQ1In0udGlueW1jZS1tb2JpbGUtaWNvbi11bmRlcmxpbmU6OmJlZm9yZXtjb250ZW50OiJcZTI0OSJ9LnRpbnltY2UtbW9iaWxlLWljb24tbGluazo6YmVmb3Jle2NvbnRlbnQ6IlxlMTU3In0udGlueW1jZS1tb2JpbGUtaWNvbi11bmxpbms6OmJlZm9yZXtjb250ZW50OiJcZWNhMiJ9LnRpbnltY2UtbW9iaWxlLWljb24tY29sb3I6OmJlZm9yZXtjb250ZW50OiJcZTg5MSJ9LnRpbnltY2UtbW9iaWxlLWljb24tcHJldmlvdXM6OmJlZm9yZXtjb250ZW50OiJcZTMxNCJ9LnRpbnltY2UtbW9iaWxlLWljb24tbmV4dDo6YmVmb3Jle2NvbnRlbnQ6IlxlMzE1In0udGlueW1jZS1tb2JpbGUtaWNvbi1sYXJnZS1mb250OjpiZWZvcmUsLnRpbnltY2UtbW9iaWxlLWljb24tc3R5bGUtZm9ybWF0czo6YmVmb3Jle2NvbnRlbnQ6IlxlMjY0In0udGlueW1jZS1tb2JpbGUtaWNvbi11bmRvOjpiZWZvcmV7Y29udGVudDoiXGUxNjYifS50aW55bWNlLW1vYmlsZS1pY29uLXJlZG86OmJlZm9yZXtjb250ZW50OiJcZTE1YSJ9LnRpbnltY2UtbW9iaWxlLWljb24tcmVtb3ZlZm9ybWF0OjpiZWZvcmV7Y29udGVudDoiXGUyMzkifS50aW55bWNlLW1vYmlsZS1pY29uLXNtYWxsLWZvbnQ6OmJlZm9yZXtjb250ZW50OiJcZTkwNiJ9LnRpbnltY2UtbW9iaWxlLWZvcm1hdC1tYXRjaGVzOjphZnRlciwudGlueW1jZS1tb2JpbGUtaWNvbi1yZWFkb25seS1iYWNrOjpiZWZvcmV7Y29udGVudDoiXGU1Y2EifS50aW55bWNlLW1vYmlsZS1pY29uLXNtYWxsLWhlYWRpbmc6OmJlZm9yZXtjb250ZW50OiJzbWFsbCJ9LnRpbnltY2UtbW9iaWxlLWljb24tbGFyZ2UtaGVhZGluZzo6YmVmb3Jle2NvbnRlbnQ6ImxhcmdlIn0udGlueW1jZS1tb2JpbGUtaWNvbi1sYXJnZS1oZWFkaW5nOjpiZWZvcmUsLnRpbnltY2UtbW9iaWxlLWljb24tc21hbGwtaGVhZGluZzo6YmVmb3Jle2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7Zm9udC1zaXplOjgwJX0udGlueW1jZS1tb2JpbGUtbWFzay1lZGl0LWljb246OmJlZm9yZXtjb250ZW50OiJcZTI1NCJ9LnRpbnltY2UtbW9iaWxlLWljb24tYmFjazo6YmVmb3Jle2NvbnRlbnQ6IlxlNWM0In0udGlueW1jZS1tb2JpbGUtaWNvbi1oZWFkaW5nOjpiZWZvcmV7Y29udGVudDoiSGVhZGluZ3MiO2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7Zm9udC1zaXplOjgwJTtmb250LXdlaWdodDo3MDB9LnRpbnltY2UtbW9iaWxlLWljb24taDE6OmJlZm9yZXtjb250ZW50OiJIMSI7Zm9udC13ZWlnaHQ6NzAwfS50aW55bWNlLW1vYmlsZS1pY29uLWgyOjpiZWZvcmV7Y29udGVudDoiSDIiO2ZvbnQtd2VpZ2h0OjcwMH0udGlueW1jZS1tb2JpbGUtaWNvbi1oMzo6YmVmb3Jle2NvbnRlbnQ6IkgzIjtmb250LXdlaWdodDo3MDB9LnRpbnltY2UtbW9iaWxlLW91dGVyLWNvbnRhaW5lciAudGlueW1jZS1tb2JpbGUtZGlzYWJsZWQtbWFza3thbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YmFja2dyb3VuZDpyZ2JhKDUxLDUxLDUxLC41KTtoZWlnaHQ6MTAwJTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDt3aWR0aDoxMDAlfS50aW55bWNlLW1vYmlsZS1vdXRlci1jb250YWluZXIgLnRpbnltY2UtbW9iaWxlLWRpc2FibGVkLW1hc2sgLnRpbnltY2UtbW9iaWxlLWNvbnRlbnQtY29udGFpbmVye2FsaWduLWl0ZW1zOmNlbnRlcjtib3JkZXItcmFkaXVzOjUwJTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7Zm9udC1zaXplOjFlbTtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn0udGlueW1jZS1tb2JpbGUtb3V0ZXItY29udGFpbmVyIC50aW55bWNlLW1vYmlsZS1kaXNhYmxlZC1tYXNrIC50aW55bWNlLW1vYmlsZS1jb250ZW50LWNvbnRhaW5lciAubWl4aW4tbWVudS1pdGVte2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjtib3JkZXItcmFkaXVzOjUwJTtoZWlnaHQ6Mi4xZW07d2lkdGg6Mi4xZW19LnRpbnltY2UtbW9iaWxlLW91dGVyLWNvbnRhaW5lciAudGlueW1jZS1tb2JpbGUtZGlzYWJsZWQtbWFzayAudGlueW1jZS1tb2JpbGUtY29udGVudC1jb250YWluZXIgLnRpbnltY2UtbW9iaWxlLWNvbnRlbnQtdGFwLXNlY3Rpb257YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmb250LXNpemU6MWVtfUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi1kZXZpY2Utd2lkdGg6NzAwcHgpey50aW55bWNlLW1vYmlsZS1vdXRlci1jb250YWluZXIgLnRpbnltY2UtbW9iaWxlLWRpc2FibGVkLW1hc2sgLnRpbnltY2UtbW9iaWxlLWNvbnRlbnQtY29udGFpbmVyIC50aW55bWNlLW1vYmlsZS1jb250ZW50LXRhcC1zZWN0aW9ue2ZvbnQtc2l6ZToxLjJlbX19LnRpbnltY2UtbW9iaWxlLW91dGVyLWNvbnRhaW5lciAudGlueW1jZS1tb2JpbGUtZGlzYWJsZWQtbWFzayAudGlueW1jZS1tb2JpbGUtY29udGVudC1jb250YWluZXIgLnRpbnltY2UtbW9iaWxlLWNvbnRlbnQtdGFwLXNlY3Rpb24gLnRpbnltY2UtbW9iaWxlLW1hc2stdGFwLWljb257YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2JvcmRlci1yYWRpdXM6NTAlO2hlaWdodDoyLjFlbTt3aWR0aDoyLjFlbTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6IzIwN2FiN30udGlueW1jZS1tb2JpbGUtb3V0ZXItY29udGFpbmVyIC50aW55bWNlLW1vYmlsZS1kaXNhYmxlZC1tYXNrIC50aW55bWNlLW1vYmlsZS1jb250ZW50LWNvbnRhaW5lciAudGlueW1jZS1tb2JpbGUtY29udGVudC10YXAtc2VjdGlvbiAudGlueW1jZS1tb2JpbGUtbWFzay10YXAtaWNvbjo6YmVmb3Jle2NvbnRlbnQ6IlxlOTAwIjtmb250LWZhbWlseTp0aW55bWNlLW1vYmlsZSxzYW5zLXNlcmlmfS50aW55bWNlLW1vYmlsZS1vdXRlci1jb250YWluZXIgLnRpbnltY2UtbW9iaWxlLWRpc2FibGVkLW1hc2sgLnRpbnltY2UtbW9iaWxlLWNvbnRlbnQtY29udGFpbmVyIC50aW55bWNlLW1vYmlsZS1jb250ZW50LXRhcC1zZWN0aW9uOm5vdCgudGlueW1jZS1tb2JpbGUtbWFzay10YXAtaWNvbi1zZWxlY3RlZCkgLnRpbnltY2UtbW9iaWxlLW1hc2stdGFwLWljb257ei1pbmRleDoyfS50aW55bWNlLW1vYmlsZS1hbmRyb2lkLWNvbnRhaW5lci50aW55bWNlLW1vYmlsZS1hbmRyb2lkLW1heGltaXplZHtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOm5vbmU7Ym90dG9tOjA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtsZWZ0OjA7cG9zaXRpb246Zml4ZWQ7cmlnaHQ6MDt0b3A6MH0udGlueW1jZS1tb2JpbGUtYW5kcm9pZC1jb250YWluZXI6bm90KC50aW55bWNlLW1vYmlsZS1hbmRyb2lkLW1heGltaXplZCl7cG9zaXRpb246cmVsYXRpdmV9LnRpbnltY2UtbW9iaWxlLWFuZHJvaWQtY29udGFpbmVyIC50aW55bWNlLW1vYmlsZS1lZGl0b3Itc29ja2V0e2Rpc3BsYXk6ZmxleDtmbGV4LWdyb3c6MX0udGlueW1jZS1tb2JpbGUtYW5kcm9pZC1jb250YWluZXIgLnRpbnltY2UtbW9iaWxlLWVkaXRvci1zb2NrZXQgaWZyYW1le2Rpc3BsYXk6ZmxleCFpbXBvcnRhbnQ7ZmxleC1ncm93OjE7aGVpZ2h0OmF1dG8haW1wb3J0YW50fS50aW55bWNlLW1vYmlsZS1hbmRyb2lkLXNjcm9sbC1yZWxvYWR7b3ZlcmZsb3c6aGlkZGVufTpub3QoLnRpbnltY2UtbW9iaWxlLXJlYWRvbmx5LW1vZGUpPi50aW55bWNlLW1vYmlsZS1hbmRyb2lkLXNlbGVjdGlvbi1jb250ZXh0LXRvb2xiYXJ7bWFyZ2luLXRvcDoyM3B4fS50aW55bWNlLW1vYmlsZS10b29sc3RyaXB7YmFja2dyb3VuZDojZmZmO2Rpc3BsYXk6ZmxleDtmbGV4OjAgMCBhdXRvO3otaW5kZXg6MX0udGlueW1jZS1tb2JpbGUtdG9vbHN0cmlwIC50aW55bWNlLW1vYmlsZS10b29sYmFye2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2NjYztkaXNwbGF5OmZsZXg7ZmxleDoxO2hlaWdodDoyLjVlbTt3aWR0aDoxMDAlfS50aW55bWNlLW1vYmlsZS10b29sc3RyaXAgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXI6bm90KC50aW55bWNlLW1vYmlsZS1jb250ZXh0LXRvb2xiYXIpIC50aW55bWNlLW1vYmlsZS10b29sYmFyLWdyb3Vwe2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7aGVpZ2h0OjEwMCU7ZmxleC1zaHJpbms6MX0udGlueW1jZS1tb2JpbGUtdG9vbHN0cmlwIC50aW55bWNlLW1vYmlsZS10b29sYmFyOm5vdCgudGlueW1jZS1tb2JpbGUtY29udGV4dC10b29sYmFyKSAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cD5kaXZ7YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtoZWlnaHQ6MTAwJTtmbGV4OjF9LnRpbnltY2UtbW9iaWxlLXRvb2xzdHJpcCAudGlueW1jZS1tb2JpbGUtdG9vbGJhcjpub3QoLnRpbnltY2UtbW9iaWxlLWNvbnRleHQtdG9vbGJhcikgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXItZ3JvdXAudGlueW1jZS1tb2JpbGUtZXhpdC1jb250YWluZXJ7YmFja2dyb3VuZDojZjQ0MzM2fS50aW55bWNlLW1vYmlsZS10b29sc3RyaXAgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXI6bm90KC50aW55bWNlLW1vYmlsZS1jb250ZXh0LXRvb2xiYXIpIC50aW55bWNlLW1vYmlsZS10b29sYmFyLWdyb3VwLnRpbnltY2UtbW9iaWxlLXRvb2xiYXItc2Nyb2xsYWJsZS1ncm91cHtmbGV4LWdyb3c6MX0udGlueW1jZS1tb2JpbGUtdG9vbHN0cmlwIC50aW55bWNlLW1vYmlsZS10b29sYmFyOm5vdCgudGlueW1jZS1tb2JpbGUtY29udGV4dC10b29sYmFyKSAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cCAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cC1pdGVte3BhZGRpbmctbGVmdDouNWVtO3BhZGRpbmctcmlnaHQ6LjVlbX0udGlueW1jZS1tb2JpbGUtdG9vbHN0cmlwIC50aW55bWNlLW1vYmlsZS10b29sYmFyOm5vdCgudGlueW1jZS1tb2JpbGUtY29udGV4dC10b29sYmFyKSAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cCAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cC1pdGVtLnRpbnltY2UtbW9iaWxlLXRvb2xiYXItYnV0dG9ue2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7aGVpZ2h0OjgwJTttYXJnaW4tbGVmdDoycHg7bWFyZ2luLXJpZ2h0OjJweH0udGlueW1jZS1tb2JpbGUtdG9vbHN0cmlwIC50aW55bWNlLW1vYmlsZS10b29sYmFyOm5vdCgudGlueW1jZS1tb2JpbGUtY29udGV4dC10b29sYmFyKSAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cCAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cC1pdGVtLnRpbnltY2UtbW9iaWxlLXRvb2xiYXItYnV0dG9uLnRpbnltY2UtbW9iaWxlLXRvb2xiYXItYnV0dG9uLXNlbGVjdGVke2JhY2tncm91bmQ6I2M4Y2JjZjtjb2xvcjojY2NjfS50aW55bWNlLW1vYmlsZS10b29sc3RyaXAgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXI6bm90KC50aW55bWNlLW1vYmlsZS1jb250ZXh0LXRvb2xiYXIpIC50aW55bWNlLW1vYmlsZS10b29sYmFyLWdyb3VwOmZpcnN0LW9mLXR5cGUsLnRpbnltY2UtbW9iaWxlLXRvb2xzdHJpcCAudGlueW1jZS1tb2JpbGUtdG9vbGJhcjpub3QoLnRpbnltY2UtbW9iaWxlLWNvbnRleHQtdG9vbGJhcikgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXItZ3JvdXA6bGFzdC1vZi10eXBle2JhY2tncm91bmQ6IzIwN2FiNztjb2xvcjojZWNlZmYxfS50aW55bWNlLW1vYmlsZS10b29sc3RyaXAgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXIudGlueW1jZS1tb2JpbGUtY29udGV4dC10b29sYmFyIC50aW55bWNlLW1vYmlsZS10b29sYmFyLWdyb3Vwe2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7aGVpZ2h0OjEwMCU7ZmxleDoxO3BhZGRpbmctYm90dG9tOi40ZW07cGFkZGluZy10b3A6LjRlbX0udGlueW1jZS1tb2JpbGUtdG9vbHN0cmlwIC50aW55bWNlLW1vYmlsZS10b29sYmFyLnRpbnltY2UtbW9iaWxlLWNvbnRleHQtdG9vbGJhciAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cCAudGlueW1jZS1tb2JpbGUtc2VyaWFsaXNlZC1kaWFsb2d7ZGlzcGxheTpmbGV4O21pbi1oZWlnaHQ6MS41ZW07b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmctbGVmdDowO3BhZGRpbmctcmlnaHQ6MDtwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlfS50aW55bWNlLW1vYmlsZS10b29sc3RyaXAgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXIudGlueW1jZS1tb2JpbGUtY29udGV4dC10b29sYmFyIC50aW55bWNlLW1vYmlsZS10b29sYmFyLWdyb3VwIC50aW55bWNlLW1vYmlsZS1zZXJpYWxpc2VkLWRpYWxvZyAudGlueW1jZS1tb2JpbGUtc2VyaWFsaXNlZC1kaWFsb2ctY2hhaW57ZGlzcGxheTpmbGV4O2hlaWdodDoxMDAlO3RyYW5zaXRpb246bGVmdCBjdWJpYy1iZXppZXIoLjQsMCwxLDEpIC4xNXM7d2lkdGg6MTAwJX0udGlueW1jZS1tb2JpbGUtdG9vbHN0cmlwIC50aW55bWNlLW1vYmlsZS10b29sYmFyLnRpbnltY2UtbW9iaWxlLWNvbnRleHQtdG9vbGJhciAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cCAudGlueW1jZS1tb2JpbGUtc2VyaWFsaXNlZC1kaWFsb2cgLnRpbnltY2UtbW9iaWxlLXNlcmlhbGlzZWQtZGlhbG9nLWNoYWluIC50aW55bWNlLW1vYmlsZS1zZXJpYWxpc2VkLWRpYWxvZy1zY3JlZW57ZGlzcGxheTpmbGV4O2ZsZXg6MCAwIGF1dG87anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47d2lkdGg6MTAwJX0udGlueW1jZS1tb2JpbGUtdG9vbHN0cmlwIC50aW55bWNlLW1vYmlsZS10b29sYmFyLnRpbnltY2UtbW9iaWxlLWNvbnRleHQtdG9vbGJhciAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cCAudGlueW1jZS1tb2JpbGUtc2VyaWFsaXNlZC1kaWFsb2cgLnRpbnltY2UtbW9iaWxlLXNlcmlhbGlzZWQtZGlhbG9nLWNoYWluIC50aW55bWNlLW1vYmlsZS1zZXJpYWxpc2VkLWRpYWxvZy1zY3JlZW4gaW5wdXR7Zm9udC1mYW1pbHk6U2Fucy1zZXJpZn0udGlueW1jZS1tb2JpbGUtdG9vbHN0cmlwIC50aW55bWNlLW1vYmlsZS10b29sYmFyLnRpbnltY2UtbW9iaWxlLWNvbnRleHQtdG9vbGJhciAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cCAudGlueW1jZS1tb2JpbGUtc2VyaWFsaXNlZC1kaWFsb2cgLnRpbnltY2UtbW9iaWxlLXNlcmlhbGlzZWQtZGlhbG9nLWNoYWluIC50aW55bWNlLW1vYmlsZS1zZXJpYWxpc2VkLWRpYWxvZy1zY3JlZW4gLnRpbnltY2UtbW9iaWxlLWlucHV0LWNvbnRhaW5lcntkaXNwbGF5OmZsZXg7ZmxleC1ncm93OjE7cG9zaXRpb246cmVsYXRpdmV9LnRpbnltY2UtbW9iaWxlLXRvb2xzdHJpcCAudGlueW1jZS1tb2JpbGUtdG9vbGJhci50aW55bWNlLW1vYmlsZS1jb250ZXh0LXRvb2xiYXIgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXItZ3JvdXAgLnRpbnltY2UtbW9iaWxlLXNlcmlhbGlzZWQtZGlhbG9nIC50aW55bWNlLW1vYmlsZS1zZXJpYWxpc2VkLWRpYWxvZy1jaGFpbiAudGlueW1jZS1tb2JpbGUtc2VyaWFsaXNlZC1kaWFsb2ctc2NyZWVuIC50aW55bWNlLW1vYmlsZS1pbnB1dC1jb250YWluZXIgLnRpbnltY2UtbW9iaWxlLWlucHV0LWNvbnRhaW5lci14ey1tcy1ncmlkLXJvdy1hbGlnbjpjZW50ZXI7YWxpZ24tc2VsZjpjZW50ZXI7YmFja2dyb3VuZDppbmhlcml0O2JvcmRlcjpub25lO2JvcmRlci1yYWRpdXM6NTAlO2NvbG9yOiM4ODg7Zm9udC1zaXplOi42ZW07Zm9udC13ZWlnaHQ6NzAwO2hlaWdodDoxMDAlO3BhZGRpbmctcmlnaHQ6MnB4O3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjB9LnRpbnltY2UtbW9iaWxlLXRvb2xzdHJpcCAudGlueW1jZS1tb2JpbGUtdG9vbGJhci50aW55bWNlLW1vYmlsZS1jb250ZXh0LXRvb2xiYXIgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXItZ3JvdXAgLnRpbnltY2UtbW9iaWxlLXNlcmlhbGlzZWQtZGlhbG9nIC50aW55bWNlLW1vYmlsZS1zZXJpYWxpc2VkLWRpYWxvZy1jaGFpbiAudGlueW1jZS1tb2JpbGUtc2VyaWFsaXNlZC1kaWFsb2ctc2NyZWVuIC50aW55bWNlLW1vYmlsZS1pbnB1dC1jb250YWluZXIudGlueW1jZS1tb2JpbGUtaW5wdXQtY29udGFpbmVyLWVtcHR5IC50aW55bWNlLW1vYmlsZS1pbnB1dC1jb250YWluZXIteHtkaXNwbGF5Om5vbmV9LnRpbnltY2UtbW9iaWxlLXRvb2xzdHJpcCAudGlueW1jZS1tb2JpbGUtdG9vbGJhci50aW55bWNlLW1vYmlsZS1jb250ZXh0LXRvb2xiYXIgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXItZ3JvdXAgLnRpbnltY2UtbW9iaWxlLXNlcmlhbGlzZWQtZGlhbG9nIC50aW55bWNlLW1vYmlsZS1zZXJpYWxpc2VkLWRpYWxvZy1jaGFpbiAudGlueW1jZS1tb2JpbGUtc2VyaWFsaXNlZC1kaWFsb2ctc2NyZWVuIC50aW55bWNlLW1vYmlsZS1pY29uLW5leHQsLnRpbnltY2UtbW9iaWxlLXRvb2xzdHJpcCAudGlueW1jZS1tb2JpbGUtdG9vbGJhci50aW55bWNlLW1vYmlsZS1jb250ZXh0LXRvb2xiYXIgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXItZ3JvdXAgLnRpbnltY2UtbW9iaWxlLXNlcmlhbGlzZWQtZGlhbG9nIC50aW55bWNlLW1vYmlsZS1zZXJpYWxpc2VkLWRpYWxvZy1jaGFpbiAudGlueW1jZS1tb2JpbGUtc2VyaWFsaXNlZC1kaWFsb2ctc2NyZWVuIC50aW55bWNlLW1vYmlsZS1pY29uLXByZXZpb3Vze2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXh9LnRpbnltY2UtbW9iaWxlLXRvb2xzdHJpcCAudGlueW1jZS1tb2JpbGUtdG9vbGJhci50aW55bWNlLW1vYmlsZS1jb250ZXh0LXRvb2xiYXIgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXItZ3JvdXAgLnRpbnltY2UtbW9iaWxlLXNlcmlhbGlzZWQtZGlhbG9nIC50aW55bWNlLW1vYmlsZS1zZXJpYWxpc2VkLWRpYWxvZy1jaGFpbiAudGlueW1jZS1tb2JpbGUtc2VyaWFsaXNlZC1kaWFsb2ctc2NyZWVuIC50aW55bWNlLW1vYmlsZS1pY29uLW5leHQ6OmJlZm9yZSwudGlueW1jZS1tb2JpbGUtdG9vbHN0cmlwIC50aW55bWNlLW1vYmlsZS10b29sYmFyLnRpbnltY2UtbW9iaWxlLWNvbnRleHQtdG9vbGJhciAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cCAudGlueW1jZS1tb2JpbGUtc2VyaWFsaXNlZC1kaWFsb2cgLnRpbnltY2UtbW9iaWxlLXNlcmlhbGlzZWQtZGlhbG9nLWNoYWluIC50aW55bWNlLW1vYmlsZS1zZXJpYWxpc2VkLWRpYWxvZy1zY3JlZW4gLnRpbnltY2UtbW9iaWxlLWljb24tcHJldmlvdXM6OmJlZm9yZXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2ZvbnQtd2VpZ2h0OjcwMDtoZWlnaHQ6MTAwJTtwYWRkaW5nLWxlZnQ6LjVlbTtwYWRkaW5nLXJpZ2h0Oi41ZW19LnRpbnltY2UtbW9iaWxlLXRvb2xzdHJpcCAudGlueW1jZS1tb2JpbGUtdG9vbGJhci50aW55bWNlLW1vYmlsZS1jb250ZXh0LXRvb2xiYXIgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXItZ3JvdXAgLnRpbnltY2UtbW9iaWxlLXNlcmlhbGlzZWQtZGlhbG9nIC50aW55bWNlLW1vYmlsZS1zZXJpYWxpc2VkLWRpYWxvZy1jaGFpbiAudGlueW1jZS1tb2JpbGUtc2VyaWFsaXNlZC1kaWFsb2ctc2NyZWVuIC50aW55bWNlLW1vYmlsZS1pY29uLW5leHQudGlueW1jZS1tb2JpbGUtdG9vbGJhci1uYXZpZ2F0aW9uLWRpc2FibGVkOjpiZWZvcmUsLnRpbnltY2UtbW9iaWxlLXRvb2xzdHJpcCAudGlueW1jZS1tb2JpbGUtdG9vbGJhci50aW55bWNlLW1vYmlsZS1jb250ZXh0LXRvb2xiYXIgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXItZ3JvdXAgLnRpbnltY2UtbW9iaWxlLXNlcmlhbGlzZWQtZGlhbG9nIC50aW55bWNlLW1vYmlsZS1zZXJpYWxpc2VkLWRpYWxvZy1jaGFpbiAudGlueW1jZS1tb2JpbGUtc2VyaWFsaXNlZC1kaWFsb2ctc2NyZWVuIC50aW55bWNlLW1vYmlsZS1pY29uLXByZXZpb3VzLnRpbnltY2UtbW9iaWxlLXRvb2xiYXItbmF2aWdhdGlvbi1kaXNhYmxlZDo6YmVmb3Jle3Zpc2liaWxpdHk6aGlkZGVufS50aW55bWNlLW1vYmlsZS10b29sc3RyaXAgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXIudGlueW1jZS1tb2JpbGUtY29udGV4dC10b29sYmFyIC50aW55bWNlLW1vYmlsZS10b29sYmFyLWdyb3VwIC50aW55bWNlLW1vYmlsZS1kb3QtaXRlbXtjb2xvcjojY2NjO2ZvbnQtc2l6ZToxMHB4O2xpbmUtaGVpZ2h0OjEwcHg7bWFyZ2luOjAgMnB4O3BhZGRpbmctdG9wOjNweH0udGlueW1jZS1tb2JpbGUtdG9vbHN0cmlwIC50aW55bWNlLW1vYmlsZS10b29sYmFyLnRpbnltY2UtbW9iaWxlLWNvbnRleHQtdG9vbGJhciAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cCAudGlueW1jZS1tb2JpbGUtZG90LWl0ZW0udGlueW1jZS1tb2JpbGUtZG90LWFjdGl2ZXtjb2xvcjojYzhjYmNmfS50aW55bWNlLW1vYmlsZS10b29sc3RyaXAgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXIudGlueW1jZS1tb2JpbGUtY29udGV4dC10b29sYmFyIC50aW55bWNlLW1vYmlsZS10b29sYmFyLWdyb3VwIC50aW55bWNlLW1vYmlsZS1pY29uLWxhcmdlLWZvbnQ6OmJlZm9yZSwudGlueW1jZS1tb2JpbGUtdG9vbHN0cmlwIC50aW55bWNlLW1vYmlsZS10b29sYmFyLnRpbnltY2UtbW9iaWxlLWNvbnRleHQtdG9vbGJhciAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cCAudGlueW1jZS1tb2JpbGUtaWNvbi1sYXJnZS1oZWFkaW5nOjpiZWZvcmV7bWFyZ2luLWxlZnQ6LjVlbTttYXJnaW4tcmlnaHQ6LjllbX0udGlueW1jZS1tb2JpbGUtdG9vbHN0cmlwIC50aW55bWNlLW1vYmlsZS10b29sYmFyLnRpbnltY2UtbW9iaWxlLWNvbnRleHQtdG9vbGJhciAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cCAudGlueW1jZS1tb2JpbGUtaWNvbi1zbWFsbC1mb250OjpiZWZvcmUsLnRpbnltY2UtbW9iaWxlLXRvb2xzdHJpcCAudGlueW1jZS1tb2JpbGUtdG9vbGJhci50aW55bWNlLW1vYmlsZS1jb250ZXh0LXRvb2xiYXIgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXItZ3JvdXAgLnRpbnltY2UtbW9iaWxlLWljb24tc21hbGwtaGVhZGluZzo6YmVmb3Jle21hcmdpbi1sZWZ0Oi45ZW07bWFyZ2luLXJpZ2h0Oi41ZW19LnRpbnltY2UtbW9iaWxlLXRvb2xzdHJpcCAudGlueW1jZS1tb2JpbGUtdG9vbGJhci50aW55bWNlLW1vYmlsZS1jb250ZXh0LXRvb2xiYXIgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXItZ3JvdXAgLnRpbnltY2UtbW9iaWxlLXNsaWRlcntkaXNwbGF5OmZsZXg7ZmxleDoxO21hcmdpbi1sZWZ0OjA7bWFyZ2luLXJpZ2h0OjA7cGFkZGluZzouMjhlbSAwO3Bvc2l0aW9uOnJlbGF0aXZlfS50aW55bWNlLW1vYmlsZS10b29sc3RyaXAgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXIudGlueW1jZS1tb2JpbGUtY29udGV4dC10b29sYmFyIC50aW55bWNlLW1vYmlsZS10b29sYmFyLWdyb3VwIC50aW55bWNlLW1vYmlsZS1zbGlkZXIgLnRpbnltY2UtbW9iaWxlLXNsaWRlci1zaXplLWNvbnRhaW5lcnthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2ZsZXgtZ3JvdzoxO2hlaWdodDoxMDAlfS50aW55bWNlLW1vYmlsZS10b29sc3RyaXAgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXIudGlueW1jZS1tb2JpbGUtY29udGV4dC10b29sYmFyIC50aW55bWNlLW1vYmlsZS10b29sYmFyLWdyb3VwIC50aW55bWNlLW1vYmlsZS1zbGlkZXIgLnRpbnltY2UtbW9iaWxlLXNsaWRlci1zaXplLWNvbnRhaW5lciAudGlueW1jZS1tb2JpbGUtc2xpZGVyLXNpemUtbGluZXtiYWNrZ3JvdW5kOiNjY2M7ZGlzcGxheTpmbGV4O2ZsZXg6MTtoZWlnaHQ6LjJlbTttYXJnaW4tYm90dG9tOi4zZW07bWFyZ2luLXRvcDouM2VtfS50aW55bWNlLW1vYmlsZS10b29sc3RyaXAgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXIudGlueW1jZS1tb2JpbGUtY29udGV4dC10b29sYmFyIC50aW55bWNlLW1vYmlsZS10b29sYmFyLWdyb3VwIC50aW55bWNlLW1vYmlsZS1zbGlkZXIudGlueW1jZS1tb2JpbGUtaHVlLXNsaWRlci1jb250YWluZXJ7cGFkZGluZy1sZWZ0OjJlbTtwYWRkaW5nLXJpZ2h0OjJlbX0udGlueW1jZS1tb2JpbGUtdG9vbHN0cmlwIC50aW55bWNlLW1vYmlsZS10b29sYmFyLnRpbnltY2UtbW9iaWxlLWNvbnRleHQtdG9vbGJhciAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cCAudGlueW1jZS1tb2JpbGUtc2xpZGVyLnRpbnltY2UtbW9iaWxlLWh1ZS1zbGlkZXItY29udGFpbmVyIC50aW55bWNlLW1vYmlsZS1zbGlkZXItZ3JhZGllbnQtY29udGFpbmVye2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7ZmxleC1ncm93OjE7aGVpZ2h0OjEwMCV9LnRpbnltY2UtbW9iaWxlLXRvb2xzdHJpcCAudGlueW1jZS1tb2JpbGUtdG9vbGJhci50aW55bWNlLW1vYmlsZS1jb250ZXh0LXRvb2xiYXIgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXItZ3JvdXAgLnRpbnltY2UtbW9iaWxlLXNsaWRlci50aW55bWNlLW1vYmlsZS1odWUtc2xpZGVyLWNvbnRhaW5lciAudGlueW1jZS1tb2JpbGUtc2xpZGVyLWdyYWRpZW50LWNvbnRhaW5lciAudGlueW1jZS1tb2JpbGUtc2xpZGVyLWdyYWRpZW50e2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LHJlZCAwLCNmZWZmMDAgMTclLCMwZjAgMzMlLCMwMGZlZmYgNTAlLCMwMGYgNjclLCNmZjAwZmUgODMlLHJlZCAxMDAlKTtkaXNwbGF5OmZsZXg7ZmxleDoxO2hlaWdodDouMmVtO21hcmdpbi1ib3R0b206LjNlbTttYXJnaW4tdG9wOi4zZW19LnRpbnltY2UtbW9iaWxlLXRvb2xzdHJpcCAudGlueW1jZS1tb2JpbGUtdG9vbGJhci50aW55bWNlLW1vYmlsZS1jb250ZXh0LXRvb2xiYXIgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXItZ3JvdXAgLnRpbnltY2UtbW9iaWxlLXNsaWRlci50aW55bWNlLW1vYmlsZS1odWUtc2xpZGVyLWNvbnRhaW5lciAudGlueW1jZS1tb2JpbGUtaHVlLXNsaWRlci1ibGFja3tiYWNrZ3JvdW5kOiMwMDA7aGVpZ2h0Oi4yZW07bWFyZ2luLWJvdHRvbTouM2VtO21hcmdpbi10b3A6LjNlbTt3aWR0aDoxLjJlbX0udGlueW1jZS1tb2JpbGUtdG9vbHN0cmlwIC50aW55bWNlLW1vYmlsZS10b29sYmFyLnRpbnltY2UtbW9iaWxlLWNvbnRleHQtdG9vbGJhciAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cCAudGlueW1jZS1tb2JpbGUtc2xpZGVyLnRpbnltY2UtbW9iaWxlLWh1ZS1zbGlkZXItY29udGFpbmVyIC50aW55bWNlLW1vYmlsZS1odWUtc2xpZGVyLXdoaXRle2JhY2tncm91bmQ6I2ZmZjtoZWlnaHQ6LjJlbTttYXJnaW4tYm90dG9tOi4zZW07bWFyZ2luLXRvcDouM2VtO3dpZHRoOjEuMmVtfS50aW55bWNlLW1vYmlsZS10b29sc3RyaXAgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXIudGlueW1jZS1tb2JpbGUtY29udGV4dC10b29sYmFyIC50aW55bWNlLW1vYmlsZS10b29sYmFyLWdyb3VwIC50aW55bWNlLW1vYmlsZS1zbGlkZXIgLnRpbnltY2UtbW9iaWxlLXNsaWRlci10aHVtYnthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZC1jbGlwOnBhZGRpbmctYm94O2JhY2tncm91bmQtY29sb3I6IzQ1NWE2NDtib3JkZXI6LjVlbSBzb2xpZCByZ2JhKDEzNiwxMzYsMTM2LDApO2JvcmRlci1yYWRpdXM6M2VtO2JvdHRvbTowO2NvbG9yOiNmZmY7ZGlzcGxheTpmbGV4O2hlaWdodDouNWVtO2p1c3RpZnktY29udGVudDpjZW50ZXI7bGVmdDotMTBweDttYXJnaW46YXV0bztwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDt0cmFuc2l0aW9uOmJvcmRlciAxMjBtcyBjdWJpYy1iZXppZXIoLjM5LC41OCwuNTcsMSk7d2lkdGg6LjVlbX0udGlueW1jZS1tb2JpbGUtdG9vbHN0cmlwIC50aW55bWNlLW1vYmlsZS10b29sYmFyLnRpbnltY2UtbW9iaWxlLWNvbnRleHQtdG9vbGJhciAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cCAudGlueW1jZS1tb2JpbGUtc2xpZGVyIC50aW55bWNlLW1vYmlsZS1zbGlkZXItdGh1bWIudGlueW1jZS1tb2JpbGUtdGh1bWItYWN0aXZle2JvcmRlcjouNWVtIHNvbGlkIHJnYmEoMTM2LDEzNiwxMzYsLjM5KX0udGlueW1jZS1tb2JpbGUtdG9vbHN0cmlwIC50aW55bWNlLW1vYmlsZS10b29sYmFyLnRpbnltY2UtbW9iaWxlLWNvbnRleHQtdG9vbGJhciAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cCAudGlueW1jZS1tb2JpbGUtc2VyaWFsaXplci13cmFwcGVyLC50aW55bWNlLW1vYmlsZS10b29sc3RyaXAgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXIudGlueW1jZS1tb2JpbGUtY29udGV4dC10b29sYmFyIC50aW55bWNlLW1vYmlsZS10b29sYmFyLWdyb3VwPmRpdnthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2hlaWdodDoxMDAlO2ZsZXg6MX0udGlueW1jZS1tb2JpbGUtdG9vbHN0cmlwIC50aW55bWNlLW1vYmlsZS10b29sYmFyLnRpbnltY2UtbW9iaWxlLWNvbnRleHQtdG9vbGJhciAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cCAudGlueW1jZS1tb2JpbGUtc2VyaWFsaXplci13cmFwcGVye2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS50aW55bWNlLW1vYmlsZS10b29sc3RyaXAgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXIudGlueW1jZS1tb2JpbGUtY29udGV4dC10b29sYmFyIC50aW55bWNlLW1vYmlsZS10b29sYmFyLWdyb3VwIC50aW55bWNlLW1vYmlsZS10b29sYmFyLWdyb3VwLWl0ZW17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleH0udGlueW1jZS1tb2JpbGUtdG9vbHN0cmlwIC50aW55bWNlLW1vYmlsZS10b29sYmFyLnRpbnltY2UtbW9iaWxlLWNvbnRleHQtdG9vbGJhciAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cCAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cC1pdGVtOm5vdCgudGlueW1jZS1tb2JpbGUtc2VyaWFsaXNlZC1kaWFsb2cpe2hlaWdodDoxMDAlfS50aW55bWNlLW1vYmlsZS10b29sc3RyaXAgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXIudGlueW1jZS1tb2JpbGUtY29udGV4dC10b29sYmFyIC50aW55bWNlLW1vYmlsZS10b29sYmFyLWdyb3VwIC50aW55bWNlLW1vYmlsZS1kb3QtY29udGFpbmVye2Rpc3BsYXk6ZmxleH0udGlueW1jZS1tb2JpbGUtdG9vbHN0cmlwIC50aW55bWNlLW1vYmlsZS10b29sYmFyLnRpbnltY2UtbW9iaWxlLWNvbnRleHQtdG9vbGJhciAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cCBpbnB1dHtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOm5vbmU7Ym9yZGVyLXJhZGl1czowO2NvbG9yOiM0NTVhNjQ7ZmxleC1ncm93OjE7Zm9udC1zaXplOi44NWVtO3BhZGRpbmctYm90dG9tOi4xZW07cGFkZGluZy1sZWZ0OjVweDtwYWRkaW5nLXRvcDouMWVtfS50aW55bWNlLW1vYmlsZS10b29sc3RyaXAgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXIudGlueW1jZS1tb2JpbGUtY29udGV4dC10b29sYmFyIC50aW55bWNlLW1vYmlsZS10b29sYmFyLWdyb3VwIGlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOiM4ODh9LnRpbnltY2UtbW9iaWxlLXRvb2xzdHJpcCAudGlueW1jZS1tb2JpbGUtdG9vbGJhci50aW55bWNlLW1vYmlsZS1jb250ZXh0LXRvb2xiYXIgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXItZ3JvdXAgaW5wdXQ6OnBsYWNlaG9sZGVye2NvbG9yOiM4ODh9LnRpbnltY2UtbW9iaWxlLWRyb3B1cHtiYWNrZ3JvdW5kOiNmZmY7ZGlzcGxheTpmbGV4O292ZXJmbG93OmhpZGRlbjt3aWR0aDoxMDAlfS50aW55bWNlLW1vYmlsZS1kcm9wdXAudGlueW1jZS1tb2JpbGUtZHJvcHVwLXNocmlua2luZ3t0cmFuc2l0aW9uOmhlaWdodCAuM3MgZWFzZS1vdXR9LnRpbnltY2UtbW9iaWxlLWRyb3B1cC50aW55bWNlLW1vYmlsZS1kcm9wdXAtZ3Jvd2luZ3t0cmFuc2l0aW9uOmhlaWdodCAuM3MgZWFzZS1pbn0udGlueW1jZS1tb2JpbGUtZHJvcHVwLnRpbnltY2UtbW9iaWxlLWRyb3B1cC1jbG9zZWR7ZmxleC1ncm93OjB9LnRpbnltY2UtbW9iaWxlLWRyb3B1cC50aW55bWNlLW1vYmlsZS1kcm9wdXAtb3Blbjpub3QoLnRpbnltY2UtbW9iaWxlLWRyb3B1cC1ncm93aW5nKXtmbGV4LWdyb3c6MX0udGlueW1jZS1tb2JpbGUtaW9zLWNvbnRhaW5lciAudGlueW1jZS1tb2JpbGUtZHJvcHVwOm5vdCgudGlueW1jZS1tb2JpbGUtZHJvcHVwLWNsb3NlZCl7bWluLWhlaWdodDoyMDBweH1AbWVkaWEgb25seSBzY3JlZW4gYW5kIChvcmllbnRhdGlvbjpsYW5kc2NhcGUpey50aW55bWNlLW1vYmlsZS1kcm9wdXA6bm90KC50aW55bWNlLW1vYmlsZS1kcm9wdXAtY2xvc2VkKXttaW4taGVpZ2h0OjIwMHB4fX1AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4tZGV2aWNlLXdpZHRoIDozMjBweCkgYW5kIChtYXgtZGV2aWNlLXdpZHRoIDo1NjhweCkgYW5kIChvcmllbnRhdGlvbiA6bGFuZHNjYXBlKXsudGlueW1jZS1tb2JpbGUtaW9zLWNvbnRhaW5lciAudGlueW1jZS1tb2JpbGUtZHJvcHVwOm5vdCgudGlueW1jZS1tb2JpbGUtZHJvcHVwLWNsb3NlZCl7bWluLWhlaWdodDoxNTBweH19LnRpbnltY2UtbW9iaWxlLXN0eWxlcy1tZW51e2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7b3V0bGluZTo0cHggc29saWQgIzAwMDtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTAwJX0udGlueW1jZS1tb2JpbGUtc3R5bGVzLW1lbnUgW3JvbGU9bWVudV17ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtoZWlnaHQ6MTAwJTtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxMDAlfS50aW55bWNlLW1vYmlsZS1zdHlsZXMtbWVudSBbcm9sZT1tZW51XS50cmFuc2l0aW9uaW5ne3RyYW5zaXRpb246dHJhbnNmb3JtIC41cyBlYXNlLWluLW91dH0udGlueW1jZS1tb2JpbGUtc3R5bGVzLW1lbnUgLnRpbnltY2UtbW9iaWxlLXN0eWxlcy1pdGVte2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNkZGQ7Y29sb3I6IzQ1NWE2NDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmZsZXg7cGFkZGluZzoxZW0gMWVtO3Bvc2l0aW9uOnJlbGF0aXZlfS50aW55bWNlLW1vYmlsZS1zdHlsZXMtbWVudSAudGlueW1jZS1tb2JpbGUtc3R5bGVzLWNvbGxhcHNlciAudGlueW1jZS1tb2JpbGUtc3R5bGVzLWNvbGxhcHNlLWljb246OmJlZm9yZXtjb2xvcjojNDU1YTY0O2NvbnRlbnQ6IlxlMzE0Ijtmb250LWZhbWlseTp0aW55bWNlLW1vYmlsZSxzYW5zLXNlcmlmfS50aW55bWNlLW1vYmlsZS1zdHlsZXMtbWVudSAudGlueW1jZS1tb2JpbGUtc3R5bGVzLWl0ZW0udGlueW1jZS1tb2JpbGUtc3R5bGVzLWl0ZW0taXMtbWVudTo6YWZ0ZXJ7Y29sb3I6IzQ1NWE2NDtjb250ZW50OiJcZTMxNSI7Zm9udC1mYW1pbHk6dGlueW1jZS1tb2JpbGUsc2Fucy1zZXJpZjtwYWRkaW5nLWxlZnQ6MWVtO3BhZGRpbmctcmlnaHQ6MWVtO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjB9LnRpbnltY2UtbW9iaWxlLXN0eWxlcy1tZW51IC50aW55bWNlLW1vYmlsZS1zdHlsZXMtaXRlbS50aW55bWNlLW1vYmlsZS1mb3JtYXQtbWF0Y2hlczo6YWZ0ZXJ7Zm9udC1mYW1pbHk6dGlueW1jZS1tb2JpbGUsc2Fucy1zZXJpZjtwYWRkaW5nLWxlZnQ6MWVtO3BhZGRpbmctcmlnaHQ6MWVtO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjB9LnRpbnltY2UtbW9iaWxlLXN0eWxlcy1tZW51IC50aW55bWNlLW1vYmlsZS1zdHlsZXMtY29sbGFwc2VyLC50aW55bWNlLW1vYmlsZS1zdHlsZXMtbWVudSAudGlueW1jZS1tb2JpbGUtc3R5bGVzLXNlcGFyYXRvcnthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZDojZmZmO2JvcmRlci10b3A6IzQ1NWE2NDtjb2xvcjojNDU1YTY0O2Rpc3BsYXk6ZmxleDttaW4taGVpZ2h0OjIuNWVtO3BhZGRpbmctbGVmdDoxZW07cGFkZGluZy1yaWdodDoxZW19LnRpbnltY2UtbW9iaWxlLXN0eWxlcy1tZW51IFtkYXRhLXRyYW5zaXRpb25pbmctZGVzdGluYXRpb249YmVmb3JlXVtkYXRhLXRyYW5zaXRpb25pbmctc3RhdGVdLC50aW55bWNlLW1vYmlsZS1zdHlsZXMtbWVudSBbZGF0YS10cmFuc2l0aW9uaW5nLXN0YXRlPWJlZm9yZV17dHJhbnNmb3JtOnRyYW5zbGF0ZSgtMTAwJSl9LnRpbnltY2UtbW9iaWxlLXN0eWxlcy1tZW51IFtkYXRhLXRyYW5zaXRpb25pbmctZGVzdGluYXRpb249Y3VycmVudF1bZGF0YS10cmFuc2l0aW9uaW5nLXN0YXRlXSwudGlueW1jZS1tb2JpbGUtc3R5bGVzLW1lbnUgW2RhdGEtdHJhbnNpdGlvbmluZy1zdGF0ZT1jdXJyZW50XXt0cmFuc2Zvcm06dHJhbnNsYXRlKDApfS50aW55bWNlLW1vYmlsZS1zdHlsZXMtbWVudSBbZGF0YS10cmFuc2l0aW9uaW5nLWRlc3RpbmF0aW9uPWFmdGVyXVtkYXRhLXRyYW5zaXRpb25pbmctc3RhdGVdLC50aW55bWNlLW1vYmlsZS1zdHlsZXMtbWVudSBbZGF0YS10cmFuc2l0aW9uaW5nLXN0YXRlPWFmdGVyXXt0cmFuc2Zvcm06dHJhbnNsYXRlKDEwMCUpfUBmb250LWZhY2V7Zm9udC1mYW1pbHk6dGlueW1jZS1tb2JpbGU7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6NDAwO3NyYzp1cmwoZm9udHMvdGlueW1jZS1tb2JpbGUud29mZj84eDkydzMpIGZvcm1hdCgnd29mZicpfUBtZWRpYSAobWluLWRldmljZS13aWR0aDo3MDBweCl7LnRpbnltY2UtbW9iaWxlLW91dGVyLWNvbnRhaW5lciwudGlueW1jZS1tb2JpbGUtb3V0ZXItY29udGFpbmVyIGlucHV0e2ZvbnQtc2l6ZToyNXB4fX1AbWVkaWEgKG1heC1kZXZpY2Utd2lkdGg6NzAwcHgpey50aW55bWNlLW1vYmlsZS1vdXRlci1jb250YWluZXIsLnRpbnltY2UtbW9iaWxlLW91dGVyLWNvbnRhaW5lciBpbnB1dHtmb250LXNpemU6MThweH19LnRpbnltY2UtbW9iaWxlLWljb257Zm9udC1mYW1pbHk6dGlueW1jZS1tb2JpbGUsc2Fucy1zZXJpZn0ubWl4aW4tZmxleC1hbmQtY2VudHJle2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcn0ubWl4aW4tZmxleC1iYXJ7YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtoZWlnaHQ6MTAwJX0udGlueW1jZS1tb2JpbGUtb3V0ZXItY29udGFpbmVyIC50aW55bWNlLW1vYmlsZS1lZGl0b3Itc29ja2V0IGlmcmFtZXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7d2lkdGg6MTAwJX0udGlueW1jZS1tb2JpbGUtZWRpdG9yLXNvY2tldCAudGlueW1jZS1tb2JpbGUtbWFzay1lZGl0LWljb257YmFja2dyb3VuZC1jb2xvcjojMjA3YWI3O2JvcmRlci1yYWRpdXM6NTAlO2JvdHRvbToxZW07Y29sb3I6I2ZmZjtmb250LXNpemU6MWVtO2hlaWdodDoyLjFlbTtwb3NpdGlvbjpmaXhlZDtyaWdodDoyZW07d2lkdGg6Mi4xZW07YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi1kZXZpY2Utd2lkdGg6NzAwcHgpey50aW55bWNlLW1vYmlsZS1lZGl0b3Itc29ja2V0IC50aW55bWNlLW1vYmlsZS1tYXNrLWVkaXQtaWNvbntmb250LXNpemU6MS4yZW19fS50aW55bWNlLW1vYmlsZS1vdXRlci1jb250YWluZXI6bm90KC50aW55bWNlLW1vYmlsZS1mdWxsc2NyZWVuLW1heGltaXplZCkgLnRpbnltY2UtbW9iaWxlLWVkaXRvci1zb2NrZXR7aGVpZ2h0OjMwMHB4O292ZXJmbG93OmhpZGRlbn0udGlueW1jZS1tb2JpbGUtb3V0ZXItY29udGFpbmVyOm5vdCgudGlueW1jZS1tb2JpbGUtZnVsbHNjcmVlbi1tYXhpbWl6ZWQpIC50aW55bWNlLW1vYmlsZS1lZGl0b3Itc29ja2V0IGlmcmFtZXtoZWlnaHQ6MTAwJX0udGlueW1jZS1tb2JpbGUtb3V0ZXItY29udGFpbmVyOm5vdCgudGlueW1jZS1tb2JpbGUtZnVsbHNjcmVlbi1tYXhpbWl6ZWQpIC50aW55bWNlLW1vYmlsZS10b29sc3RyaXB7ZGlzcGxheTpub25lfWlucHV0W3R5cGU9ZmlsZV06Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9ue2Rpc3BsYXk6bm9uZX1AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4tZGV2aWNlLXdpZHRoIDozMjBweCkgYW5kIChtYXgtZGV2aWNlLXdpZHRoIDo1NjhweCkgYW5kIChvcmllbnRhdGlvbiA6bGFuZHNjYXBlKXsudGlueW1jZS1tb2JpbGUtaW9zLWNvbnRhaW5lciAudGlueW1jZS1tb2JpbGUtZWRpdG9yLXNvY2tldCAudGlueW1jZS1tb2JpbGUtbWFzay1lZGl0LWljb257Ym90dG9tOjUwJX19Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/skins/ui/oxide/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/skins/ui/oxide/content.inline.min.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICovCi5tY2UtY29udGVudC1ib2R5IC5tY2UtaXRlbS1hbmNob3J7YmFja2dyb3VuZDp0cmFuc3BhcmVudCB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVURi04LCUzQ3N2ZyUyMHdpZHRoJTNEJzgnJTIwaGVpZ2h0JTNEJzEyJyUyMHhtbG5zJTNEJ2h0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyclM0UlM0NwYXRoJTIwZCUzRCdNMCUyMDBMOCUyMDAlMjA4JTIwMTIlMjA0LjA5MTE3ODIxJTIwOSUyMDAlMjAxMnonJTJGJTNFJTNDJTJGc3ZnJTNFJTBBIikgbm8tcmVwZWF0IGNlbnRlcjtjdXJzb3I6ZGVmYXVsdDtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MTJweCFpbXBvcnRhbnQ7cGFkZGluZzowIDJweDstd2Via2l0LXVzZXItbW9kaWZ5OnJlYWQtb25seTstbW96LXVzZXItbW9kaWZ5OnJlYWQtb25seTstd2Via2l0LXVzZXItc2VsZWN0OmFsbDstbW96LXVzZXItc2VsZWN0OmFsbDstbXMtdXNlci1zZWxlY3Q6YWxsO3VzZXItc2VsZWN0OmFsbDt3aWR0aDo4cHghaW1wb3J0YW50fS5tY2UtY29udGVudC1ib2R5IC5tY2UtaXRlbS1hbmNob3JbZGF0YS1tY2Utc2VsZWN0ZWRde291dGxpbmUtb2Zmc2V0OjFweH0udG94LWNvbW1lbnRzLXZpc2libGUgLnRveC1jb21tZW50e2JhY2tncm91bmQtY29sb3I6I2ZmZjBiN30udG94LWNvbW1lbnRzLXZpc2libGUgLnRveC1jb21tZW50LS1hY3RpdmV7YmFja2dyb3VuZC1jb2xvcjojZmZlMTY4fS50b3gtY2hlY2tsaXN0PmxpOm5vdCgudG94LWNoZWNrbGlzdC0taGlkZGVuKXtsaXN0LXN0eWxlOm5vbmU7bWFyZ2luOi4yNWVtIDB9LnRveC1jaGVja2xpc3Q+bGk6bm90KC50b3gtY2hlY2tsaXN0LS1oaWRkZW4pOjpiZWZvcmV7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVURi04LCUzQ3N2ZyUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTIwd2lkdGglM0QlMjIxNiUyMiUyMGhlaWdodCUzRCUyMjE2JTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTYlMjAxNiUyMiUzRSUzQ2clMjBpZCUzRCUyMmNoZWNrbGlzdC11bmNoZWNrZWQlMjIlMjBmaWxsJTNEJTIybm9uZSUyMiUyMGZpbGwtcnVsZSUzRCUyMmV2ZW5vZGQlMjIlM0UlM0NyZWN0JTIwaWQlM0QlMjJSZWN0YW5nbGUlMjIlMjB3aWR0aCUzRCUyMjE1JTIyJTIwaGVpZ2h0JTNEJTIyMTUlMjIlMjB4JTNEJTIyLjUlMjIlMjB5JTNEJTIyLjUlMjIlMjBmaWxsLXJ1bGUlM0QlMjJub256ZXJvJTIyJTIwc3Ryb2tlJTNEJTIyJTIzNEM0QzRDJTIyJTIwcnglM0QlMjIyJTIyJTJGJTNFJTNDJTJGZyUzRSUzQyUyRnN2ZyUzRSUwQSIpO2JhY2tncm91bmQtc2l6ZToxMDAlO2NvbnRlbnQ6Jyc7Y3Vyc29yOnBvaW50ZXI7aGVpZ2h0OjFlbTttYXJnaW4tbGVmdDotMS41ZW07bWFyZ2luLXRvcDouMTI1ZW07cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MWVtfS50b3gtY2hlY2tsaXN0IGxpOm5vdCgudG94LWNoZWNrbGlzdC0taGlkZGVuKS50b3gtY2hlY2tsaXN0LS1jaGVja2VkOjpiZWZvcmV7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVURi04LCUzQ3N2ZyUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTIwd2lkdGglM0QlMjIxNiUyMiUyMGhlaWdodCUzRCUyMjE2JTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTYlMjAxNiUyMiUzRSUzQ2clMjBpZCUzRCUyMmNoZWNrbGlzdC1jaGVja2VkJTIyJTIwZmlsbCUzRCUyMm5vbmUlMjIlMjBmaWxsLXJ1bGUlM0QlMjJldmVub2RkJTIyJTNFJTNDcmVjdCUyMGlkJTNEJTIyUmVjdGFuZ2xlJTIyJTIwd2lkdGglM0QlMjIxNiUyMiUyMGhlaWdodCUzRCUyMjE2JTIyJTIwZmlsbCUzRCUyMiUyMzQwOTlGRiUyMiUyMGZpbGwtcnVsZSUzRCUyMm5vbnplcm8lMjIlMjByeCUzRCUyMjIlMjIlMkYlM0UlM0NwYXRoJTIwaWQlM0QlMjJQYXRoJTIyJTIwZmlsbCUzRCUyMiUyM0ZGRiUyMiUyMGZpbGwtcnVsZSUzRCUyMm5vbnplcm8lMjIlMjBkJTNEJTIyTTExLjU3MDMxODYlMkMzLjE0NDE3MzA5JTIwQzExLjg1MTYyMzglMkMyLjczNzI0NjAzJTIwMTIuNDE2NDc4MSUyQzIuNjI4Mjk5MzMlMjAxMi44MzU1OCUyQzIuODk3NzQ3OTclMjBDMTMuMjYwMTIxJTJDMy4xNzA2OTM1NSUyMDEzLjM3NTk3MzYlMkMzLjcyOTMyMjYyJTIwMTMuMDkwOTEwNSUyQzQuMTQxNjg1ODIlMjBMNy43NTgwNTg3JTJDMTEuODU2MDE5NSUyMEM3LjQzNzc2ODk2JTJDMTIuMzE5MzQwNCUyMDYuNzY0ODM5ODMlMkMxMi4zODUyMTQyJTIwNi4zNTYwNzMyMiUyQzExLjk5NDg3MjUlMjBMMy4wMjQ5MTY5NyUyQzguODEzODY2MiUyMEMyLjY2MDkwMTQzJTJDOC40NjYyNTg0NSUyMDIuNjU3OTg4NzElMkM3Ljg5NTk0Njk4JTIwMy4wMTg1MDIzNCUyQzcuNTQ0ODMzNTQlMjBDMy4zNzM5NDIlMkM3LjE5ODY2MTc3JTIwMy45NDk0MDAwNiUyQzcuMTk1OTI4NDElMjA0LjMwODI5NjA4JTJDNy41Mzg2NDc0JTIwTDYuODUyNzY5MjMlMkM5Ljk2ODQyOTklMjBMMTEuNTcwMzE4NiUyQzMuMTQ0MTczMDklMjBaJTIyJTJGJTNFJTNDJTJGZyUzRSUzQyUyRnN2ZyUzRSUwQSIpfVtkaXI9cnRsXSAudG94LWNoZWNrbGlzdD5saTpub3QoLnRveC1jaGVja2xpc3QtLWhpZGRlbik6OmJlZm9yZXttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDotMS41ZW19Y29kZVtjbGFzcyo9bGFuZ3VhZ2UtXSxwcmVbY2xhc3MqPWxhbmd1YWdlLV17Y29sb3I6IzAwMDtiYWNrZ3JvdW5kOjAgMDt0ZXh0LXNoYWRvdzowIDFweCAjZmZmO2ZvbnQtZmFtaWx5OkNvbnNvbGFzLE1vbmFjbywnQW5kYWxlIE1vbm8nLCdVYnVudHUgTW9ubycsbW9ub3NwYWNlO2ZvbnQtc2l6ZToxZW07dGV4dC1hbGlnbjpsZWZ0O3doaXRlLXNwYWNlOnByZTt3b3JkLXNwYWNpbmc6bm9ybWFsO3dvcmQtYnJlYWs6bm9ybWFsO3dvcmQtd3JhcDpub3JtYWw7bGluZS1oZWlnaHQ6MS41Oy1tb3otdGFiLXNpemU6NDt0YWItc2l6ZTo0Oy13ZWJraXQtaHlwaGVuczpub25lOy1tcy1oeXBoZW5zOm5vbmU7aHlwaGVuczpub25lfWNvZGVbY2xhc3MqPWxhbmd1YWdlLV0gOjotbW96LXNlbGVjdGlvbixjb2RlW2NsYXNzKj1sYW5ndWFnZS1dOjotbW96LXNlbGVjdGlvbixwcmVbY2xhc3MqPWxhbmd1YWdlLV0gOjotbW96LXNlbGVjdGlvbixwcmVbY2xhc3MqPWxhbmd1YWdlLV06Oi1tb3otc2VsZWN0aW9ue3RleHQtc2hhZG93Om5vbmU7YmFja2dyb3VuZDojYjNkNGZjfWNvZGVbY2xhc3MqPWxhbmd1YWdlLV0gOjpzZWxlY3Rpb24sY29kZVtjbGFzcyo9bGFuZ3VhZ2UtXTo6c2VsZWN0aW9uLHByZVtjbGFzcyo9bGFuZ3VhZ2UtXSA6OnNlbGVjdGlvbixwcmVbY2xhc3MqPWxhbmd1YWdlLV06OnNlbGVjdGlvbnt0ZXh0LXNoYWRvdzpub25lO2JhY2tncm91bmQ6I2IzZDRmY31AbWVkaWEgcHJpbnR7Y29kZVtjbGFzcyo9bGFuZ3VhZ2UtXSxwcmVbY2xhc3MqPWxhbmd1YWdlLV17dGV4dC1zaGFkb3c6bm9uZX19cHJlW2NsYXNzKj1sYW5ndWFnZS1de3BhZGRpbmc6MWVtO21hcmdpbjouNWVtIDA7b3ZlcmZsb3c6YXV0b306bm90KHByZSk+Y29kZVtjbGFzcyo9bGFuZ3VhZ2UtXSxwcmVbY2xhc3MqPWxhbmd1YWdlLV17YmFja2dyb3VuZDojZjVmMmYwfTpub3QocHJlKT5jb2RlW2NsYXNzKj1sYW5ndWFnZS1de3BhZGRpbmc6LjFlbTtib3JkZXItcmFkaXVzOi4zZW07d2hpdGUtc3BhY2U6bm9ybWFsfS50b2tlbi5jZGF0YSwudG9rZW4uY29tbWVudCwudG9rZW4uZG9jdHlwZSwudG9rZW4ucHJvbG9ne2NvbG9yOiM3MDgwOTB9LnRva2VuLnB1bmN0dWF0aW9ue2NvbG9yOiM5OTl9Lm5hbWVzcGFjZXtvcGFjaXR5Oi43fS50b2tlbi5ib29sZWFuLC50b2tlbi5jb25zdGFudCwudG9rZW4uZGVsZXRlZCwudG9rZW4ubnVtYmVyLC50b2tlbi5wcm9wZXJ0eSwudG9rZW4uc3ltYm9sLC50b2tlbi50YWd7Y29sb3I6IzkwNX0udG9rZW4uYXR0ci1uYW1lLC50b2tlbi5idWlsdGluLC50b2tlbi5jaGFyLC50b2tlbi5pbnNlcnRlZCwudG9rZW4uc2VsZWN0b3IsLnRva2VuLnN0cmluZ3tjb2xvcjojNjkwfS5sYW5ndWFnZS1jc3MgLnRva2VuLnN0cmluZywuc3R5bGUgLnRva2VuLnN0cmluZywudG9rZW4uZW50aXR5LC50b2tlbi5vcGVyYXRvciwudG9rZW4udXJse2NvbG9yOiM5YTZlM2E7YmFja2dyb3VuZDpoc2xhKDAsMCUsMTAwJSwuNSl9LnRva2VuLmF0cnVsZSwudG9rZW4uYXR0ci12YWx1ZSwudG9rZW4ua2V5d29yZHtjb2xvcjojMDdhfS50b2tlbi5jbGFzcy1uYW1lLC50b2tlbi5mdW5jdGlvbntjb2xvcjojZGQ0YTY4fS50b2tlbi5pbXBvcnRhbnQsLnRva2VuLnJlZ2V4LC50b2tlbi52YXJpYWJsZXtjb2xvcjojZTkwfS50b2tlbi5ib2xkLC50b2tlbi5pbXBvcnRhbnR7Zm9udC13ZWlnaHQ6NzAwfS50b2tlbi5pdGFsaWN7Zm9udC1zdHlsZTppdGFsaWN9LnRva2VuLmVudGl0eXtjdXJzb3I6aGVscH0ubWNlLWNvbnRlbnQtYm9keXtvdmVyZmxvdy13cmFwOmJyZWFrLXdvcmQ7d29yZC13cmFwOmJyZWFrLXdvcmR9Lm1jZS1jb250ZW50LWJvZHkgLm1jZS12aXN1YWwtY2FyZXR7YmFja2dyb3VuZC1jb2xvcjojMDAwO2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yO3Bvc2l0aW9uOmFic29sdXRlfS5tY2UtY29udGVudC1ib2R5IC5tY2UtdmlzdWFsLWNhcmV0LWhpZGRlbntkaXNwbGF5Om5vbmV9Lm1jZS1jb250ZW50LWJvZHkgW2RhdGEtbWNlLWNhcmV0XXtsZWZ0Oi0xMDAwcHg7bWFyZ2luOjA7cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OmF1dG87dG9wOjB9Lm1jZS1jb250ZW50LWJvZHkgLm1jZS1vZmZzY3JlZW4tc2VsZWN0aW9ue2xlZnQ6LTIwMDAwMDBweDttYXgtd2lkdGg6MTAwMDAwMHB4O3Bvc2l0aW9uOmFic29sdXRlfS5tY2UtY29udGVudC1ib2R5IFtjb250ZW50RWRpdGFibGU9ZmFsc2Vde2N1cnNvcjpkZWZhdWx0fS5tY2UtY29udGVudC1ib2R5IFtjb250ZW50RWRpdGFibGU9dHJ1ZV17Y3Vyc29yOnRleHR9LnRveC1jdXJzb3ItZm9ybWF0LXBhaW50ZXJ7Y3Vyc29yOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9VVRGLTgsJTNDc3ZnJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlMjB3aWR0aCUzRCUyMjI0JTIyJTIwaGVpZ2h0JTNEJTIyMjQlMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAyNCUyMDI0JTIyJTNFJTBBJTIwJTIwJTNDZyUyMGZpbGwlM0QlMjJub25lJTIyJTIwZmlsbC1ydWxlJTNEJTIyZXZlbm9kZCUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQ3BhdGglMjBmaWxsJTNEJTIyJTIzMDAwJTIyJTIwZmlsbC1ydWxlJTNEJTIybm9uemVybyUyMiUyMGQlM0QlMjJNMTUlMkM2JTIwQzE1JTJDNS40NSUyMDE0LjU1JTJDNSUyMDE0JTJDNSUyMEw2JTJDNSUyMEM1LjQ1JTJDNSUyMDUlMkM1LjQ1JTIwNSUyQzYlMjBMNSUyQzEwJTIwQzUlMkMxMC41NSUyMDUuNDUlMkMxMSUyMDYlMkMxMSUyMEwxNCUyQzExJTIwQzE0LjU1JTJDMTElMjAxNSUyQzEwLjU1JTIwMTUlMkMxMCUyMEwxNSUyQzklMjBMMTYlMkM5JTIwTDE2JTJDMTIlMjBMOSUyQzEyJTIwTDklMkMxOSUyMEM5JTJDMTkuNTUlMjA5LjQ1JTJDMjAlMjAxMCUyQzIwJTIwTDExJTJDMjAlMjBDMTEuNTUlMkMyMCUyMDEyJTJDMTkuNTUlMjAxMiUyQzE5JTIwTDEyJTJDMTQlMjBMMTglMkMxNCUyMEwxOCUyQzclMjBMMTUlMkM3JTIwTDE1JTJDNiUyMFolMjIlMkYlM0UlMEElMjAlMjAlMjAlMjAlM0NwYXRoJTIwZmlsbCUzRCUyMiUyMzAwMCUyMiUyMGZpbGwtcnVsZSUzRCUyMm5vbnplcm8lMjIlMjBkJTNEJTIyTTElMkMxJTIwTDguMjUlMkMxJTIwQzguNjY0MjEzNTYlMkMxJTIwOSUyQzEuMzM1Nzg2NDQlMjA5JTJDMS43NSUyMEw5JTJDMS43NSUyMEM5JTJDMi4xNjQyMTM1NiUyMDguNjY0MjEzNTYlMkMyLjUlMjA4LjI1JTJDMi41JTIwTDIuNSUyQzIuNSUyMEwyLjUlMkM4LjI1JTIwQzIuNSUyQzguNjY0MjEzNTYlMjAyLjE2NDIxMzU2JTJDOSUyMDEuNzUlMkM5JTIwTDEuNzUlMkM5JTIwQzEuMzM1Nzg2NDQlMkM5JTIwMSUyQzguNjY0MjEzNTYlMjAxJTJDOC4yNSUyMEwxJTJDMSUyMFolMjIlMkYlM0UlMEElMjAlMjAlM0MlMkZnJTNFJTBBJTNDJTJGc3ZnJTNFJTBBIiksZGVmYXVsdH0ubWNlLWNvbnRlbnQtYm9keSBmaWd1cmUuYWxpZ24tbGVmdHtmbG9hdDpsZWZ0fS5tY2UtY29udGVudC1ib2R5IGZpZ3VyZS5hbGlnbi1yaWdodHtmbG9hdDpyaWdodH0ubWNlLWNvbnRlbnQtYm9keSBmaWd1cmUuaW1hZ2UuYWxpZ24tY2VudGVye2Rpc3BsYXk6dGFibGU7bWFyZ2luLWxlZnQ6YXV0bzttYXJnaW4tcmlnaHQ6YXV0b30ubWNlLXByZXZpZXctb2JqZWN0e2JvcmRlcjoxcHggc29saWQgZ3JheTtkaXNwbGF5OmlubGluZS1ibG9jaztsaW5lLWhlaWdodDowO21hcmdpbjowIDJweCAwIDJweDtwb3NpdGlvbjpyZWxhdGl2ZX0ubWNlLXByZXZpZXctb2JqZWN0IC5tY2Utc2hpbXtiYWNrZ3JvdW5kOnVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhBUUFCQUlBQUFBQUFBUC8vL3lINUJBRUFBQUFBTEFBQUFBQUJBQUVBQUFJQlJBQTcpO2hlaWdodDoxMDAlO2xlZnQ6MDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDt3aWR0aDoxMDAlfS5tY2UtcHJldmlldy1vYmplY3RbZGF0YS1tY2Utc2VsZWN0ZWQ9IjIiXSAubWNlLXNoaW17ZGlzcGxheTpub25lfS5tY2Utb2JqZWN0e2JhY2tncm91bmQ6dHJhbnNwYXJlbnQgdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD1VVEYtOCwlM0NzdmclMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUyMHdpZHRoJTNEJTIyMjQlMjIlMjBoZWlnaHQlM0QlMjIyNCUyMiUzRSUzQ3BhdGglMjBkJTNEJTIyTTQlMjAzaDE2YTElMjAxJTIwMCUyMDAlMjAxJTIwMSUyMDF2MTZhMSUyMDElMjAwJTIwMCUyMDEtMSUyMDFINGExJTIwMSUyMDAlMjAwJTIwMS0xLTFWNGExJTIwMSUyMDAlMjAwJTIwMSUyMDEtMXptMSUyMDJ2MTRoMTRWNUg1em00Ljc5JTIwMi41NjVsNS42NCUyMDQuMDI4YS41LjUlMjAwJTIwMCUyMDElMjAwJTIwLjgxNGwtNS42NCUyMDQuMDI4YS41LjUlMjAwJTIwMCUyMDEtLjc5LS40MDdWNy45NzJhLjUuNSUyMDAlMjAwJTIwMSUyMC43OS0uNDA3eiUyMiUyRiUzRSUzQyUyRnN2ZyUzRSUwQSIpIG5vLXJlcGVhdCBjZW50ZXI7Ym9yZGVyOjFweCBkYXNoZWQgI2FhYX0ubWNlLXBhZ2VicmVha3tib3JkZXI6MXB4IGRhc2hlZCAjYWFhO2N1cnNvcjpkZWZhdWx0O2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjVweDttYXJnaW4tdG9wOjE1cHg7cGFnZS1icmVhay1iZWZvcmU6YWx3YXlzO3dpZHRoOjEwMCV9QG1lZGlhIHByaW50ey5tY2UtcGFnZWJyZWFre2JvcmRlcjowfX0udGlueS1wYWdlZW1iZWQgLm1jZS1zaGlte2JhY2tncm91bmQ6dXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEFRQUJBSUFBQUFBQUFQLy8veUg1QkFFQUFBQUFMQUFBQUFBQkFBRUFBQUlCUkFBNyk7aGVpZ2h0OjEwMCU7bGVmdDowO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3dpZHRoOjEwMCV9LnRpbnktcGFnZWVtYmVkW2RhdGEtbWNlLXNlbGVjdGVkPSIyIl0gLm1jZS1zaGlte2Rpc3BsYXk6bm9uZX0udGlueS1wYWdlZW1iZWR7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRpdmV9LnRpbnktcGFnZWVtYmVkLS0xNmJ5OSwudGlueS1wYWdlZW1iZWQtLTFieTEsLnRpbnktcGFnZWVtYmVkLS0yMWJ5OSwudGlueS1wYWdlZW1iZWQtLTRieTN7ZGlzcGxheTpibG9jaztvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCV9LnRpbnktcGFnZWVtYmVkLS0yMWJ5OXtwYWRkaW5nLXRvcDo0Mi44NTcxNDMlfS50aW55LXBhZ2VlbWJlZC0tMTZieTl7cGFkZGluZy10b3A6NTYuMjUlfS50aW55LXBhZ2VlbWJlZC0tNGJ5M3twYWRkaW5nLXRvcDo3NSV9LnRpbnktcGFnZWVtYmVkLS0xYnkxe3BhZGRpbmctdG9wOjEwMCV9LnRpbnktcGFnZWVtYmVkLS0xNmJ5OSBpZnJhbWUsLnRpbnktcGFnZWVtYmVkLS0xYnkxIGlmcmFtZSwudGlueS1wYWdlZW1iZWQtLTIxYnk5IGlmcmFtZSwudGlueS1wYWdlZW1iZWQtLTRieTMgaWZyYW1le2JvcmRlcjowO2hlaWdodDoxMDAlO2xlZnQ6MDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDt3aWR0aDoxMDAlfS5tY2UtY29udGVudC1ib2R5W2RhdGEtbWNlLXBsYWNlaG9sZGVyXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWNlLWNvbnRlbnQtYm9keVtkYXRhLW1jZS1wbGFjZWhvbGRlcl06bm90KC5tY2UtdmlzdWFsYmxvY2tzKTo6YmVmb3Jle2NvbG9yOnJnYmEoMzQsNDcsNjIsLjcpO2NvbnRlbnQ6YXR0cihkYXRhLW1jZS1wbGFjZWhvbGRlcik7cG9zaXRpb246YWJzb2x1dGV9Lm1jZS1jb250ZW50LWJvZHk6bm90KFtkaXI9cnRsXSlbZGF0YS1tY2UtcGxhY2Vob2xkZXJdOm5vdCgubWNlLXZpc3VhbGJsb2Nrcyk6OmJlZm9yZXtsZWZ0OjFweH0ubWNlLWNvbnRlbnQtYm9keVtkaXI9cnRsXVtkYXRhLW1jZS1wbGFjZWhvbGRlcl06bm90KC5tY2UtdmlzdWFsYmxvY2tzKTo6YmVmb3Jle3JpZ2h0OjFweH0ubWNlLWNvbnRlbnQtYm9keSBkaXYubWNlLXJlc2l6ZWhhbmRsZXtiYWNrZ3JvdW5kLWNvbG9yOiM0MDk5ZmY7Ym9yZGVyLWNvbG9yOiM0MDk5ZmY7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDoxcHg7Ym94LXNpemluZzpib3JkZXItYm94O2hlaWdodDoxMHB4O3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjEwcHg7ei1pbmRleDoxMDAwMH0ubWNlLWNvbnRlbnQtYm9keSBkaXYubWNlLXJlc2l6ZWhhbmRsZTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiM0MDk5ZmZ9Lm1jZS1jb250ZW50LWJvZHkgZGl2Lm1jZS1yZXNpemVoYW5kbGU6bnRoLW9mLXR5cGUoMSl7Y3Vyc29yOm53c2UtcmVzaXplfS5tY2UtY29udGVudC1ib2R5IGRpdi5tY2UtcmVzaXplaGFuZGxlOm50aC1vZi10eXBlKDIpe2N1cnNvcjpuZXN3LXJlc2l6ZX0ubWNlLWNvbnRlbnQtYm9keSBkaXYubWNlLXJlc2l6ZWhhbmRsZTpudGgtb2YtdHlwZSgzKXtjdXJzb3I6bndzZS1yZXNpemV9Lm1jZS1jb250ZW50LWJvZHkgZGl2Lm1jZS1yZXNpemVoYW5kbGU6bnRoLW9mLXR5cGUoNCl7Y3Vyc29yOm5lc3ctcmVzaXplfS5tY2UtY29udGVudC1ib2R5IC5tY2UtY2xvbmVkcmVzaXphYmxle29wYWNpdHk6LjU7b3V0bGluZToxcHggZGFzaGVkICMwMDA7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwMH0ubWNlLWNvbnRlbnQtYm9keSAubWNlLXJlc2l6ZS1oZWxwZXJ7YmFja2dyb3VuZDojNTU1O2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuNzUpO2JvcmRlcjoxcHg7Ym9yZGVyLXJhZGl1czozcHg7Y29sb3I6I2ZmZjtkaXNwbGF5Om5vbmU7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoxNHB4O21hcmdpbjo1cHggMTBweDtwYWRkaW5nOjVweDtwb3NpdGlvbjphYnNvbHV0ZTt3aGl0ZS1zcGFjZTpub3dyYXA7ei1pbmRleDoxMDAwMX0udG94LXJ0Yy11c2VyLXNlbGVjdGlvbntwb3NpdGlvbjpyZWxhdGl2ZX0udG94LXJ0Yy11c2VyLWN1cnNvcntib3R0b206MDtjdXJzb3I6ZGVmYXVsdDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDt3aWR0aDoycHh9LnRveC1ydGMtdXNlci1jdXJzb3I6OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOmluaGVyaXQ7Ym9yZGVyLXJhZGl1czo1MCU7Y29udGVudDonJztkaXNwbGF5OmJsb2NrO2hlaWdodDo4cHg7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6LTNweDt0b3A6LTNweDt3aWR0aDo4cHh9LnRveC1ydGMtdXNlci1jdXJzb3I6aG92ZXI6OmFmdGVye2JhY2tncm91bmQtY29sb3I6aW5oZXJpdDtib3JkZXItcmFkaXVzOjEwMHB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjojZmZmO2NvbnRlbnQ6YXR0cihkYXRhLXVzZXIpO2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NzAwO2xlZnQ6LTVweDttaW4taGVpZ2h0OjhweDttaW4td2lkdGg6OHB4O3BhZGRpbmc6MCAxMnB4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDotMTFweDt3aGl0ZS1zcGFjZTpub3dyYXA7ei1pbmRleDoxMDAwfS50b3gtcnRjLXVzZXItc2VsZWN0aW9uLS0xIC50b3gtcnRjLXVzZXItY3Vyc29ye2JhY2tncm91bmQtY29sb3I6IzJkYzI2Yn0udG94LXJ0Yy11c2VyLXNlbGVjdGlvbi0tMiAudG94LXJ0Yy11c2VyLWN1cnNvcntiYWNrZ3JvdW5kLWNvbG9yOiNlMDNlMmR9LnRveC1ydGMtdXNlci1zZWxlY3Rpb24tLTMgLnRveC1ydGMtdXNlci1jdXJzb3J7YmFja2dyb3VuZC1jb2xvcjojZjFjNDBmfS50b3gtcnRjLXVzZXItc2VsZWN0aW9uLS00IC50b3gtcnRjLXVzZXItY3Vyc29ye2JhY2tncm91bmQtY29sb3I6IzM1OThkYn0udG94LXJ0Yy11c2VyLXNlbGVjdGlvbi0tNSAudG94LXJ0Yy11c2VyLWN1cnNvcntiYWNrZ3JvdW5kLWNvbG9yOiNiOTZhZDl9LnRveC1ydGMtdXNlci1zZWxlY3Rpb24tLTYgLnRveC1ydGMtdXNlci1jdXJzb3J7YmFja2dyb3VuZC1jb2xvcjojZTY3ZTIzfS50b3gtcnRjLXVzZXItc2VsZWN0aW9uLS03IC50b3gtcnRjLXVzZXItY3Vyc29ye2JhY2tncm91bmQtY29sb3I6I2FhYTY5ZH0udG94LXJ0Yy11c2VyLXNlbGVjdGlvbi0tOCAudG94LXJ0Yy11c2VyLWN1cnNvcntiYWNrZ3JvdW5kLWNvbG9yOiNmMzY4ZTB9LnRveC1ydGMtcmVtb3RlLWltYWdle2JhY2tncm91bmQ6I2VhZWFlYSB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVURi04LCUzQ3N2ZyUyMHdpZHRoJTNEJTIyMzYlMjIlMjBoZWlnaHQlM0QlMjIxMiUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDM2JTIwMTIlMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUzRSUwQSUyMCUyMCUzQ2NpcmNsZSUyMGN4JTNEJTIyNiUyMiUyMGN5JTNEJTIyNiUyMiUyMHIlM0QlMjIzJTIyJTIwZmlsbCUzRCUyMnJnYmEoMCUyQyUyMDAlMkMlMjAwJTJDJTIwLjIpJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTNDYW5pbWF0ZSUyMGF0dHJpYnV0ZU5hbWUlM0QlMjJyJTIyJTIwdmFsdWVzJTNEJTIyMyUzQjUlM0IzJTIyJTIwY2FsY01vZGUlM0QlMjJsaW5lYXIlMjIlMjBkdXIlM0QlMjIxcyUyMiUyMHJlcGVhdENvdW50JTNEJTIyaW5kZWZpbml0ZSUyMiUyMCUyRiUzRSUwQSUyMCUyMCUzQyUyRmNpcmNsZSUzRSUwQSUyMCUyMCUzQ2NpcmNsZSUyMGN4JTNEJTIyMTglMjIlMjBjeSUzRCUyMjYlMjIlMjByJTNEJTIyMyUyMiUyMGZpbGwlM0QlMjJyZ2JhKDAlMkMlMjAwJTJDJTIwMCUyQyUyMC4yKSUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQ2FuaW1hdGUlMjBhdHRyaWJ1dGVOYW1lJTNEJTIyciUyMiUyMHZhbHVlcyUzRCUyMjMlM0I1JTNCMyUyMiUyMGNhbGNNb2RlJTNEJTIybGluZWFyJTIyJTIwYmVnaW4lM0QlMjIuMzNzJTIyJTIwZHVyJTNEJTIyMXMlMjIlMjByZXBlYXRDb3VudCUzRCUyMmluZGVmaW5pdGUlMjIlMjAlMkYlM0UlMEElMjAlMjAlM0MlMkZjaXJjbGUlM0UlMEElMjAlMjAlM0NjaXJjbGUlMjBjeCUzRCUyMjMwJTIyJTIwY3klM0QlMjI2JTIyJTIwciUzRCUyMjMlMjIlMjBmaWxsJTNEJTIycmdiYSgwJTJDJTIwMCUyQyUyMDAlMkMlMjAuMiklMjIlM0UlMEElMjAlMjAlMjAlMjAlM0NhbmltYXRlJTIwYXR0cmlidXRlTmFtZSUzRCUyMnIlMjIlMjB2YWx1ZXMlM0QlMjIzJTNCNSUzQjMlMjIlMjBjYWxjTW9kZSUzRCUyMmxpbmVhciUyMiUyMGJlZ2luJTNEJTIyLjY2cyUyMiUyMGR1ciUzRCUyMjFzJTIyJTIwcmVwZWF0Q291bnQlM0QlMjJpbmRlZmluaXRlJTIyJTIwJTJGJTNFJTBBJTIwJTIwJTNDJTJGY2lyY2xlJTNFJTBBJTNDJTJGc3ZnJTNFJTBBIikgbm8tcmVwZWF0IGNlbnRlciBjZW50ZXI7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO21pbi1oZWlnaHQ6MjQwcHg7bWluLXdpZHRoOjMyMHB4fS5tY2UtbWF0Y2gtbWFya2Vye2JhY2tncm91bmQ6I2FhYTtjb2xvcjojZmZmfS5tY2UtbWF0Y2gtbWFya2VyLXNlbGVjdGVke2JhY2tncm91bmQ6IzM5Zjtjb2xvcjojZmZmfS5tY2UtbWF0Y2gtbWFya2VyLXNlbGVjdGVkOjotbW96LXNlbGVjdGlvbntiYWNrZ3JvdW5kOiMzOWY7Y29sb3I6I2ZmZn0ubWNlLW1hdGNoLW1hcmtlci1zZWxlY3RlZDo6c2VsZWN0aW9ue2JhY2tncm91bmQ6IzM5Zjtjb2xvcjojZmZmfS5tY2UtY29udGVudC1ib2R5IGltZ1tkYXRhLW1jZS1zZWxlY3RlZF0sLm1jZS1jb250ZW50LWJvZHkgdGFibGVbZGF0YS1tY2Utc2VsZWN0ZWRde291dGxpbmU6M3B4IHNvbGlkICNiNGQ3ZmZ9Lm1jZS1jb250ZW50LWJvZHkgaHJbZGF0YS1tY2Utc2VsZWN0ZWRde291dGxpbmU6M3B4IHNvbGlkICNiNGQ3ZmY7b3V0bGluZS1vZmZzZXQ6MXB4fS5tY2UtY29udGVudC1ib2R5IFtjb250ZW50RWRpdGFibGU9ZmFsc2VdIFtjb250ZW50RWRpdGFibGU9dHJ1ZV06Zm9jdXN7b3V0bGluZTozcHggc29saWQgI2I0ZDdmZn0ubWNlLWNvbnRlbnQtYm9keSBbY29udGVudEVkaXRhYmxlPWZhbHNlXSBbY29udGVudEVkaXRhYmxlPXRydWVdOmhvdmVye291dGxpbmU6M3B4IHNvbGlkICNiNGQ3ZmZ9Lm1jZS1jb250ZW50LWJvZHkgW2NvbnRlbnRFZGl0YWJsZT1mYWxzZV1bZGF0YS1tY2Utc2VsZWN0ZWRde2N1cnNvcjpub3QtYWxsb3dlZDtvdXRsaW5lOjNweCBzb2xpZCAjYjRkN2ZmfS5tY2UtY29udGVudC1ib2R5Lm1jZS1jb250ZW50LXJlYWRvbmx5IFtjb250ZW50RWRpdGFibGU9dHJ1ZV06Zm9jdXMsLm1jZS1jb250ZW50LWJvZHkubWNlLWNvbnRlbnQtcmVhZG9ubHkgW2NvbnRlbnRFZGl0YWJsZT10cnVlXTpob3ZlcntvdXRsaW5lOjB9Lm1jZS1jb250ZW50LWJvZHkgW2RhdGEtbWNlLXNlbGVjdGVkPWlubGluZS1ib3VuZGFyeV17YmFja2dyb3VuZC1jb2xvcjojYjRkN2ZmfS5tY2UtY29udGVudC1ib2R5IC5tY2UtZWRpdC1mb2N1c3tvdXRsaW5lOjNweCBzb2xpZCAjYjRkN2ZmfS5tY2UtY29udGVudC1ib2R5IHRkW2RhdGEtbWNlLXNlbGVjdGVkXSwubWNlLWNvbnRlbnQtYm9keSB0aFtkYXRhLW1jZS1zZWxlY3RlZF17YmFja2dyb3VuZC1jb2xvcjojYjRkN2ZmIWltcG9ydGFudH0ubWNlLWNvbnRlbnQtYm9keSB0ZFtkYXRhLW1jZS1zZWxlY3RlZF06Oi1tb3otc2VsZWN0aW9uLC5tY2UtY29udGVudC1ib2R5IHRoW2RhdGEtbWNlLXNlbGVjdGVkXTo6LW1vei1zZWxlY3Rpb257YmFja2dyb3VuZDowIDB9Lm1jZS1jb250ZW50LWJvZHkgdGRbZGF0YS1tY2Utc2VsZWN0ZWRdOjpzZWxlY3Rpb24sLm1jZS1jb250ZW50LWJvZHkgdGhbZGF0YS1tY2Utc2VsZWN0ZWRdOjpzZWxlY3Rpb257YmFja2dyb3VuZDowIDB9Lm1jZS1jb250ZW50LWJvZHkgdGRbZGF0YS1tY2Utc2VsZWN0ZWRdICosLm1jZS1jb250ZW50LWJvZHkgdGhbZGF0YS1tY2Utc2VsZWN0ZWRdICp7LXdlYmtpdC10b3VjaC1jYWxsb3V0Om5vbmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lfS5tY2UtY29udGVudC1ib2R5IGltZzo6LW1vei1zZWxlY3Rpb257YmFja2dyb3VuZDowIDB9Lm1jZS1jb250ZW50LWJvZHkgaW1nOjpzZWxlY3Rpb257YmFja2dyb3VuZDowIDB9LmVwaG94LXNub29rZXItcmVzaXplci1iYXJ7YmFja2dyb3VuZC1jb2xvcjojYjRkN2ZmO29wYWNpdHk6MDstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmV9LmVwaG94LXNub29rZXItcmVzaXplci1jb2xze2N1cnNvcjpjb2wtcmVzaXplfS5lcGhveC1zbm9va2VyLXJlc2l6ZXItcm93c3tjdXJzb3I6cm93LXJlc2l6ZX0uZXBob3gtc25vb2tlci1yZXNpemVyLWJhci5lcGhveC1zbm9va2VyLXJlc2l6ZXItYmFyLWRyYWdnaW5ne29wYWNpdHk6MX0ubWNlLXNwZWxsY2hlY2tlci13b3Jke2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD1VVEYtOCwlM0NzdmclMjB3aWR0aCUzRCc0JyUyMGhlaWdodCUzRCc0JyUyMHhtbG5zJTNEJ2h0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyclM0UlM0NwYXRoJTIwc3Ryb2tlJTNEJyUyM2ZmMDAwMCclMjBmaWxsJTNEJ25vbmUnJTIwc3Ryb2tlLWxpbmVjYXAlM0Qncm91bmQnJTIwc3Ryb2tlLW9wYWNpdHklM0QnLjc1JyUyMGQlM0QnTTAlMjAzTDIlMjAxJTIwNCUyMDMnJTJGJTNFJTNDJTJGc3ZnJTNFJTBBIik7YmFja2dyb3VuZC1wb3NpdGlvbjowIGNhbGMoMTAwJSArIDFweCk7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXg7YmFja2dyb3VuZC1zaXplOmF1dG8gNnB4O2N1cnNvcjpkZWZhdWx0O2hlaWdodDoycmVtfS5tY2Utc3BlbGxjaGVja2VyLWdyYW1tYXJ7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVURi04LCUzQ3N2ZyUyMHdpZHRoJTNEJzQnJTIwaGVpZ2h0JTNEJzQnJTIweG1sbnMlM0QnaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJyUzRSUzQ3BhdGglMjBzdHJva2UlM0QnJTIzMDBBODM1JyUyMGZpbGwlM0Qnbm9uZSclMjBzdHJva2UtbGluZWNhcCUzRCdyb3VuZCclMjBkJTNEJ00wJTIwM0wyJTIwMSUyMDQlMjAzJyUyRiUzRSUzQyUyRnN2ZyUzRSUwQSIpO2JhY2tncm91bmQtcG9zaXRpb246MCBjYWxjKDEwMCUgKyAxcHgpO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14O2JhY2tncm91bmQtc2l6ZTphdXRvIDZweDtjdXJzb3I6ZGVmYXVsdH0ubWNlLXRvY3tib3JkZXI6MXB4IHNvbGlkIGdyYXl9Lm1jZS10b2MgaDJ7bWFyZ2luOjRweH0ubWNlLXRvYyBsaXtsaXN0LXN0eWxlLXR5cGU6bm9uZX0ubWNlLWl0ZW0tdGFibGUsLm1jZS1pdGVtLXRhYmxlIGNhcHRpb24sLm1jZS1pdGVtLXRhYmxlIHRkLC5tY2UtaXRlbS10YWJsZSB0aHtib3JkZXI6MXB4IGRhc2hlZCAjYmJifS5tY2UtdmlzdWFsYmxvY2tzIGFkZHJlc3MsLm1jZS12aXN1YWxibG9ja3MgYXJ0aWNsZSwubWNlLXZpc3VhbGJsb2NrcyBhc2lkZSwubWNlLXZpc3VhbGJsb2NrcyBibG9ja3F1b3RlLC5tY2UtdmlzdWFsYmxvY2tzIGRpdjpub3QoW2RhdGEtbWNlLWJvZ3VzXSksLm1jZS12aXN1YWxibG9ja3MgZGwsLm1jZS12aXN1YWxibG9ja3MgZmlnY2FwdGlvbiwubWNlLXZpc3VhbGJsb2NrcyBmaWd1cmUsLm1jZS12aXN1YWxibG9ja3MgaDEsLm1jZS12aXN1YWxibG9ja3MgaDIsLm1jZS12aXN1YWxibG9ja3MgaDMsLm1jZS12aXN1YWxibG9ja3MgaDQsLm1jZS12aXN1YWxibG9ja3MgaDUsLm1jZS12aXN1YWxibG9ja3MgaDYsLm1jZS12aXN1YWxibG9ja3MgaGdyb3VwLC5tY2UtdmlzdWFsYmxvY2tzIG9sLC5tY2UtdmlzdWFsYmxvY2tzIHAsLm1jZS12aXN1YWxibG9ja3MgcHJlLC5tY2UtdmlzdWFsYmxvY2tzIHNlY3Rpb24sLm1jZS12aXN1YWxibG9ja3MgdWx7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JvcmRlcjoxcHggZGFzaGVkICNiYmI7bWFyZ2luLWxlZnQ6M3B4O3BhZGRpbmctdG9wOjEwcHh9Lm1jZS12aXN1YWxibG9ja3MgcHtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhDUUFKQUpFQUFBQUFBUC8vLzd1N3UvLy8veUg1QkFFQUFBTUFMQUFBQUFBSkFBa0FBQUlRbkcrQ3FDTi9tbHl2c1JVcFRoRzZBZ0E3KX0ubWNlLXZpc3VhbGJsb2NrcyBoMXtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhEUUFLQUlBQkFMdTd1Ly8vL3lINUJBRUFBQUVBTEFBQUFBQU5BQW9BQUFJWGpJOEd5Ykd1MUp1eEhvQWZSTlJXM1RXWHlGMllpUlVBT3c9PSl9Lm1jZS12aXN1YWxibG9ja3MgaDJ7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoRGdBS0FJQUJBTHU3dS8vLy95SDVCQUVBQUFFQUxBQUFBQUFPQUFvQUFBSWFqSThIeWJieDRvT3VxZ1R5bkpkNmJHbFdnM0RrSnpvYVVBQUFPdz09KX0ubWNlLXZpc3VhbGJsb2NrcyBoM3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhEZ0FLQUlBQkFMdTd1Ly8vL3lINUJBRUFBQUVBTEFBQUFBQU9BQW9BQUFJWmpJOEh5YmJ4NG9PdXFnVHluSmYyTG4yTk9IcFFwbWhBQVFBNyl9Lm1jZS12aXN1YWxibG9ja3MgaDR7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoRGdBS0FJQUJBTHU3dS8vLy95SDVCQUVBQUFFQUxBQUFBQUFPQUFvQUFBSWFqSThIeWJieEluUjB6cWVBZGh0SmxYd1Yxb0NsbDJIYVdnQUFPdz09KX0ubWNlLXZpc3VhbGJsb2NrcyBoNXtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhEZ0FLQUlBQkFMdTd1Ly8vL3lINUJBRUFBQUVBTEFBQUFBQU9BQW9BQUFJYWpJOEh5YmJ4SW9pdXdqYW5lNGlxNUdsVzA1R2dJa0laVUFBQU93PT0pfS5tY2UtdmlzdWFsYmxvY2tzIGg2e2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaERnQUtBSUFCQUx1N3UvLy8veUg1QkFFQUFBRUFMQUFBQUFBT0FBb0FBQUlhakk4SHliYnhJb2l1d2phbjA0amVwMWlaMVhSbEFvNWJWZ0FBT3c9PSl9Lm1jZS12aXN1YWxibG9ja3MgZGl2Om5vdChbZGF0YS1tY2UtYm9ndXNdKXtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhFZ0FLQUlBQkFMdTd1Ly8vL3lINUJBRUFBQUVBTEFBQUFBQVNBQW9BQUFJZmpJOXBvSTBjZ0R5d3JodXhmYnJ6REViUU0yRWk1YVJqbW95U1c0cEFBUUE3KX0ubWNlLXZpc3VhbGJsb2NrcyBzZWN0aW9ue2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEtBQUtBSUFCQUx1N3UvLy8veUg1QkFFQUFBRUFMQUFBQUFBb0FBb0FBQUk1akkrcHl3Y05ZM3NCV0hkTnJwbHl0RDJlbGxEZVNWYnArR21XcWFEcURNZXBjOHQxN1k0dkJzSzVoRHlKTWNJNktrdVlVK2pwakxvS0FEcz0pfS5tY2UtdmlzdWFsYmxvY2tzIGFydGljbGV7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoS2dBS0FJQUJBTHU3dS8vLy95SDVCQUVBQUFFQUxBQUFBQUFxQUFvQUFBSTZqSStweXdrTlkzd0cwR0J2cnNkMnRYR1lTR25maUY3aWtwWGVtVHBPaUpTY2FzWW9ESkpyanNHOWdrQ0owYWc2S2htYUllM3BqRFlCQlFBNyl9Lm1jZS12aXN1YWxibG9ja3MgYmxvY2txdW90ZXtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhQZ0FLQUlBQkFMdTd1Ly8vL3lINUJBRUFBQUVBTEFBQUFBQStBQW9BQUFKUGpJK3B5KzBLbnB6MHhRRHl1VWh2Zm9HZ0lYNWlTS1pZZ3E1dU5MNXE2OWFzWjhzNXJyZjB5Wm1wTmtKWnpGZXNCVHU4VE9sRFZBYWJVeWF0Z3VWaFdkdXVkM0V5aVVrNDV4aFRUZ01CQlFBNyl9Lm1jZS12aXN1YWxibG9ja3MgYWRkcmVzc3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhMUUFLQUlBQkFMdTd1Ly8vL3lINUJBRUFBQUVBTEFBQUFBQXRBQW9BQUFJL2pJK3B5d3dOb3pTUDFnRHl5WmNqYjNVYVJwWGtXYVhtWlc0T3FLTGhCbUxzK0syNjNEa0pLN09KZWlmaDdGaWNLRDlBMS9JcEdkS2t5RnBObUNrQUFEcz0pfS5tY2UtdmlzdWFsYmxvY2tzIHByZXtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhGUUFLQUlBQkFMdTd1d0FBQUNINUJBRUFBQUVBTEFBQUFBQVZBQW9BQUFJampJK1pvTjBjZ0R3U21ucHoxTkN1ZVlFUmhuaWJaVktMTm5iT3E4SXZLcEp0VlFBQU93PT0pfS5tY2UtdmlzdWFsYmxvY2tzIGZpZ3VyZXtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhKQUFLQUlBQUFMdTd1Ly8vL3lINUJBRUFBQUVBTEFBQUFBQWtBQW9BQUFJMGpJK3B5KzJmd0FIVVNGdkQzUmx2RzRISXA0blg1SkZTcG5aVUo2TGxyTTUyT0U3dVNXb3NCSFNjZ2tTWmo3ZERLbldBQWdBNyl9Lm1jZS12aXN1YWxibG9ja3MgZmlnY2FwdGlvbntib3JkZXI6MXB4IGRhc2hlZCAjYmJifS5tY2UtdmlzdWFsYmxvY2tzIGhncm91cHtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhKd0FLQUlBQkFMdTd1d0FBQUNINUJBRUFBQUVBTEFBQUFBQW5BQW9BQUFJM2pJK3B5d1lOSTN1QjBncHNSdHQ1ZkZuZk5aYVZTWUppbDRXbzAzSHY2WjYydU9DZ2lYSDFrWklJSjhOaUl4UnJBWk5NWkF0UUFBQTcpfS5tY2UtdmlzdWFsYmxvY2tzIGFzaWRle2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEhnQUtBSUFCQUtxcXF2Ly8veUg1QkFFQUFBRUFMQUFBQUFBZUFBb0FBQUl0akkrcEc4QVBqWk9Uemd0cXk3STNmMXllaG1RY0ZZNFdLWmJxQnl1dG1XNGFIVWQ2dmZjVmJndWRncFlDQURzPSl9Lm1jZS12aXN1YWxibG9ja3MgdWx7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoRFFBS0FJQUFBTHU3dS8vLy95SDVCQUVBQUFFQUxBQUFBQUFOQUFvQUFBSVhqSThHeWJHdVlucVVWU2p2dzI2RHp6WGlxSURsVndBQU93PT0pfS5tY2UtdmlzdWFsYmxvY2tzIG9se2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaERRQUtBSUFCQUx1N3UvLy8veUg1QkFFQUFBRUFMQUFBQUFBTkFBb0FBQUlYakk4R3liSDZISHQwcW91cnhDNkN2elhpZUh5ZVdRQUFPdz09KX0ubWNlLXZpc3VhbGJsb2NrcyBkbHtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhEUUFLQUlBQkFMdTd1Ly8vL3lINUJBRUFBQUVBTEFBQUFBQU5BQW9BQUFJWGpJOEd5YkVPbm1PdlVvV3puVHFldUVqTlNDcWVHUlVBT3c9PSl9Lm1jZS12aXN1YWxibG9ja3M6bm90KFtkaXI9cnRsXSkgYWRkcmVzcywubWNlLXZpc3VhbGJsb2Nrczpub3QoW2Rpcj1ydGxdKSBhcnRpY2xlLC5tY2UtdmlzdWFsYmxvY2tzOm5vdChbZGlyPXJ0bF0pIGFzaWRlLC5tY2UtdmlzdWFsYmxvY2tzOm5vdChbZGlyPXJ0bF0pIGJsb2NrcXVvdGUsLm1jZS12aXN1YWxibG9ja3M6bm90KFtkaXI9cnRsXSkgZGl2Om5vdChbZGF0YS1tY2UtYm9ndXNdKSwubWNlLXZpc3VhbGJsb2Nrczpub3QoW2Rpcj1ydGxdKSBkbCwubWNlLXZpc3VhbGJsb2Nrczpub3QoW2Rpcj1ydGxdKSBmaWdjYXB0aW9uLC5tY2UtdmlzdWFsYmxvY2tzOm5vdChbZGlyPXJ0bF0pIGZpZ3VyZSwubWNlLXZpc3VhbGJsb2Nrczpub3QoW2Rpcj1ydGxdKSBoMSwubWNlLXZpc3VhbGJsb2Nrczpub3QoW2Rpcj1ydGxdKSBoMiwubWNlLXZpc3VhbGJsb2Nrczpub3QoW2Rpcj1ydGxdKSBoMywubWNlLXZpc3VhbGJsb2Nrczpub3QoW2Rpcj1ydGxdKSBoNCwubWNlLXZpc3VhbGJsb2Nrczpub3QoW2Rpcj1ydGxdKSBoNSwubWNlLXZpc3VhbGJsb2Nrczpub3QoW2Rpcj1ydGxdKSBoNiwubWNlLXZpc3VhbGJsb2Nrczpub3QoW2Rpcj1ydGxdKSBoZ3JvdXAsLm1jZS12aXN1YWxibG9ja3M6bm90KFtkaXI9cnRsXSkgb2wsLm1jZS12aXN1YWxibG9ja3M6bm90KFtkaXI9cnRsXSkgcCwubWNlLXZpc3VhbGJsb2Nrczpub3QoW2Rpcj1ydGxdKSBwcmUsLm1jZS12aXN1YWxibG9ja3M6bm90KFtkaXI9cnRsXSkgc2VjdGlvbiwubWNlLXZpc3VhbGJsb2Nrczpub3QoW2Rpcj1ydGxdKSB1bHttYXJnaW4tbGVmdDozcHh9Lm1jZS12aXN1YWxibG9ja3NbZGlyPXJ0bF0gYWRkcmVzcywubWNlLXZpc3VhbGJsb2Nrc1tkaXI9cnRsXSBhcnRpY2xlLC5tY2UtdmlzdWFsYmxvY2tzW2Rpcj1ydGxdIGFzaWRlLC5tY2UtdmlzdWFsYmxvY2tzW2Rpcj1ydGxdIGJsb2NrcXVvdGUsLm1jZS12aXN1YWxibG9ja3NbZGlyPXJ0bF0gZGl2Om5vdChbZGF0YS1tY2UtYm9ndXNdKSwubWNlLXZpc3VhbGJsb2Nrc1tkaXI9cnRsXSBkbCwubWNlLXZpc3VhbGJsb2Nrc1tkaXI9cnRsXSBmaWdjYXB0aW9uLC5tY2UtdmlzdWFsYmxvY2tzW2Rpcj1ydGxdIGZpZ3VyZSwubWNlLXZpc3VhbGJsb2Nrc1tkaXI9cnRsXSBoMSwubWNlLXZpc3VhbGJsb2Nrc1tkaXI9cnRsXSBoMiwubWNlLXZpc3VhbGJsb2Nrc1tkaXI9cnRsXSBoMywubWNlLXZpc3VhbGJsb2Nrc1tkaXI9cnRsXSBoNCwubWNlLXZpc3VhbGJsb2Nrc1tkaXI9cnRsXSBoNSwubWNlLXZpc3VhbGJsb2Nrc1tkaXI9cnRsXSBoNiwubWNlLXZpc3VhbGJsb2Nrc1tkaXI9cnRsXSBoZ3JvdXAsLm1jZS12aXN1YWxibG9ja3NbZGlyPXJ0bF0gb2wsLm1jZS12aXN1YWxibG9ja3NbZGlyPXJ0bF0gcCwubWNlLXZpc3VhbGJsb2Nrc1tkaXI9cnRsXSBwcmUsLm1jZS12aXN1YWxibG9ja3NbZGlyPXJ0bF0gc2VjdGlvbiwubWNlLXZpc3VhbGJsb2Nrc1tkaXI9cnRsXSB1bHtiYWNrZ3JvdW5kLXBvc2l0aW9uLXg6cmlnaHQ7bWFyZ2luLXJpZ2h0OjNweH0ubWNlLW5ic3AsLm1jZS1zaHl7YmFja2dyb3VuZDojYWFhfS5tY2Utc2h5OjphZnRlcntjb250ZW50OictJ30K]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/skins/ui/oxide/content.min.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICovCi5tY2UtY29udGVudC1ib2R5IC5tY2UtaXRlbS1hbmNob3J7YmFja2dyb3VuZDp0cmFuc3BhcmVudCB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVURi04LCUzQ3N2ZyUyMHdpZHRoJTNEJzgnJTIwaGVpZ2h0JTNEJzEyJyUyMHhtbG5zJTNEJ2h0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyclM0UlM0NwYXRoJTIwZCUzRCdNMCUyMDBMOCUyMDAlMjA4JTIwMTIlMjA0LjA5MTE3ODIxJTIwOSUyMDAlMjAxMnonJTJGJTNFJTNDJTJGc3ZnJTNFJTBBIikgbm8tcmVwZWF0IGNlbnRlcjtjdXJzb3I6ZGVmYXVsdDtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MTJweCFpbXBvcnRhbnQ7cGFkZGluZzowIDJweDstd2Via2l0LXVzZXItbW9kaWZ5OnJlYWQtb25seTstbW96LXVzZXItbW9kaWZ5OnJlYWQtb25seTstd2Via2l0LXVzZXItc2VsZWN0OmFsbDstbW96LXVzZXItc2VsZWN0OmFsbDstbXMtdXNlci1zZWxlY3Q6YWxsO3VzZXItc2VsZWN0OmFsbDt3aWR0aDo4cHghaW1wb3J0YW50fS5tY2UtY29udGVudC1ib2R5IC5tY2UtaXRlbS1hbmNob3JbZGF0YS1tY2Utc2VsZWN0ZWRde291dGxpbmUtb2Zmc2V0OjFweH0udG94LWNvbW1lbnRzLXZpc2libGUgLnRveC1jb21tZW50e2JhY2tncm91bmQtY29sb3I6I2ZmZjBiN30udG94LWNvbW1lbnRzLXZpc2libGUgLnRveC1jb21tZW50LS1hY3RpdmV7YmFja2dyb3VuZC1jb2xvcjojZmZlMTY4fS50b3gtY2hlY2tsaXN0PmxpOm5vdCgudG94LWNoZWNrbGlzdC0taGlkZGVuKXtsaXN0LXN0eWxlOm5vbmU7bWFyZ2luOi4yNWVtIDB9LnRveC1jaGVja2xpc3Q+bGk6bm90KC50b3gtY2hlY2tsaXN0LS1oaWRkZW4pOjpiZWZvcmV7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVURi04LCUzQ3N2ZyUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTIwd2lkdGglM0QlMjIxNiUyMiUyMGhlaWdodCUzRCUyMjE2JTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTYlMjAxNiUyMiUzRSUzQ2clMjBpZCUzRCUyMmNoZWNrbGlzdC11bmNoZWNrZWQlMjIlMjBmaWxsJTNEJTIybm9uZSUyMiUyMGZpbGwtcnVsZSUzRCUyMmV2ZW5vZGQlMjIlM0UlM0NyZWN0JTIwaWQlM0QlMjJSZWN0YW5nbGUlMjIlMjB3aWR0aCUzRCUyMjE1JTIyJTIwaGVpZ2h0JTNEJTIyMTUlMjIlMjB4JTNEJTIyLjUlMjIlMjB5JTNEJTIyLjUlMjIlMjBmaWxsLXJ1bGUlM0QlMjJub256ZXJvJTIyJTIwc3Ryb2tlJTNEJTIyJTIzNEM0QzRDJTIyJTIwcnglM0QlMjIyJTIyJTJGJTNFJTNDJTJGZyUzRSUzQyUyRnN2ZyUzRSUwQSIpO2JhY2tncm91bmQtc2l6ZToxMDAlO2NvbnRlbnQ6Jyc7Y3Vyc29yOnBvaW50ZXI7aGVpZ2h0OjFlbTttYXJnaW4tbGVmdDotMS41ZW07bWFyZ2luLXRvcDouMTI1ZW07cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MWVtfS50b3gtY2hlY2tsaXN0IGxpOm5vdCgudG94LWNoZWNrbGlzdC0taGlkZGVuKS50b3gtY2hlY2tsaXN0LS1jaGVja2VkOjpiZWZvcmV7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVURi04LCUzQ3N2ZyUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTIwd2lkdGglM0QlMjIxNiUyMiUyMGhlaWdodCUzRCUyMjE2JTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTYlMjAxNiUyMiUzRSUzQ2clMjBpZCUzRCUyMmNoZWNrbGlzdC1jaGVja2VkJTIyJTIwZmlsbCUzRCUyMm5vbmUlMjIlMjBmaWxsLXJ1bGUlM0QlMjJldmVub2RkJTIyJTNFJTNDcmVjdCUyMGlkJTNEJTIyUmVjdGFuZ2xlJTIyJTIwd2lkdGglM0QlMjIxNiUyMiUyMGhlaWdodCUzRCUyMjE2JTIyJTIwZmlsbCUzRCUyMiUyMzQwOTlGRiUyMiUyMGZpbGwtcnVsZSUzRCUyMm5vbnplcm8lMjIlMjByeCUzRCUyMjIlMjIlMkYlM0UlM0NwYXRoJTIwaWQlM0QlMjJQYXRoJTIyJTIwZmlsbCUzRCUyMiUyM0ZGRiUyMiUyMGZpbGwtcnVsZSUzRCUyMm5vbnplcm8lMjIlMjBkJTNEJTIyTTExLjU3MDMxODYlMkMzLjE0NDE3MzA5JTIwQzExLjg1MTYyMzglMkMyLjczNzI0NjAzJTIwMTIuNDE2NDc4MSUyQzIuNjI4Mjk5MzMlMjAxMi44MzU1OCUyQzIuODk3NzQ3OTclMjBDMTMuMjYwMTIxJTJDMy4xNzA2OTM1NSUyMDEzLjM3NTk3MzYlMkMzLjcyOTMyMjYyJTIwMTMuMDkwOTEwNSUyQzQuMTQxNjg1ODIlMjBMNy43NTgwNTg3JTJDMTEuODU2MDE5NSUyMEM3LjQzNzc2ODk2JTJDMTIuMzE5MzQwNCUyMDYuNzY0ODM5ODMlMkMxMi4zODUyMTQyJTIwNi4zNTYwNzMyMiUyQzExLjk5NDg3MjUlMjBMMy4wMjQ5MTY5NyUyQzguODEzODY2MiUyMEMyLjY2MDkwMTQzJTJDOC40NjYyNTg0NSUyMDIuNjU3OTg4NzElMkM3Ljg5NTk0Njk4JTIwMy4wMTg1MDIzNCUyQzcuNTQ0ODMzNTQlMjBDMy4zNzM5NDIlMkM3LjE5ODY2MTc3JTIwMy45NDk0MDAwNiUyQzcuMTk1OTI4NDElMjA0LjMwODI5NjA4JTJDNy41Mzg2NDc0JTIwTDYuODUyNzY5MjMlMkM5Ljk2ODQyOTklMjBMMTEuNTcwMzE4NiUyQzMuMTQ0MTczMDklMjBaJTIyJTJGJTNFJTNDJTJGZyUzRSUzQyUyRnN2ZyUzRSUwQSIpfVtkaXI9cnRsXSAudG94LWNoZWNrbGlzdD5saTpub3QoLnRveC1jaGVja2xpc3QtLWhpZGRlbik6OmJlZm9yZXttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDotMS41ZW19Y29kZVtjbGFzcyo9bGFuZ3VhZ2UtXSxwcmVbY2xhc3MqPWxhbmd1YWdlLV17Y29sb3I6IzAwMDtiYWNrZ3JvdW5kOjAgMDt0ZXh0LXNoYWRvdzowIDFweCAjZmZmO2ZvbnQtZmFtaWx5OkNvbnNvbGFzLE1vbmFjbywnQW5kYWxlIE1vbm8nLCdVYnVudHUgTW9ubycsbW9ub3NwYWNlO2ZvbnQtc2l6ZToxZW07dGV4dC1hbGlnbjpsZWZ0O3doaXRlLXNwYWNlOnByZTt3b3JkLXNwYWNpbmc6bm9ybWFsO3dvcmQtYnJlYWs6bm9ybWFsO3dvcmQtd3JhcDpub3JtYWw7bGluZS1oZWlnaHQ6MS41Oy1tb3otdGFiLXNpemU6NDt0YWItc2l6ZTo0Oy13ZWJraXQtaHlwaGVuczpub25lOy1tcy1oeXBoZW5zOm5vbmU7aHlwaGVuczpub25lfWNvZGVbY2xhc3MqPWxhbmd1YWdlLV0gOjotbW96LXNlbGVjdGlvbixjb2RlW2NsYXNzKj1sYW5ndWFnZS1dOjotbW96LXNlbGVjdGlvbixwcmVbY2xhc3MqPWxhbmd1YWdlLV0gOjotbW96LXNlbGVjdGlvbixwcmVbY2xhc3MqPWxhbmd1YWdlLV06Oi1tb3otc2VsZWN0aW9ue3RleHQtc2hhZG93Om5vbmU7YmFja2dyb3VuZDojYjNkNGZjfWNvZGVbY2xhc3MqPWxhbmd1YWdlLV0gOjpzZWxlY3Rpb24sY29kZVtjbGFzcyo9bGFuZ3VhZ2UtXTo6c2VsZWN0aW9uLHByZVtjbGFzcyo9bGFuZ3VhZ2UtXSA6OnNlbGVjdGlvbixwcmVbY2xhc3MqPWxhbmd1YWdlLV06OnNlbGVjdGlvbnt0ZXh0LXNoYWRvdzpub25lO2JhY2tncm91bmQ6I2IzZDRmY31AbWVkaWEgcHJpbnR7Y29kZVtjbGFzcyo9bGFuZ3VhZ2UtXSxwcmVbY2xhc3MqPWxhbmd1YWdlLV17dGV4dC1zaGFkb3c6bm9uZX19cHJlW2NsYXNzKj1sYW5ndWFnZS1de3BhZGRpbmc6MWVtO21hcmdpbjouNWVtIDA7b3ZlcmZsb3c6YXV0b306bm90KHByZSk+Y29kZVtjbGFzcyo9bGFuZ3VhZ2UtXSxwcmVbY2xhc3MqPWxhbmd1YWdlLV17YmFja2dyb3VuZDojZjVmMmYwfTpub3QocHJlKT5jb2RlW2NsYXNzKj1sYW5ndWFnZS1de3BhZGRpbmc6LjFlbTtib3JkZXItcmFkaXVzOi4zZW07d2hpdGUtc3BhY2U6bm9ybWFsfS50b2tlbi5jZGF0YSwudG9rZW4uY29tbWVudCwudG9rZW4uZG9jdHlwZSwudG9rZW4ucHJvbG9ne2NvbG9yOiM3MDgwOTB9LnRva2VuLnB1bmN0dWF0aW9ue2NvbG9yOiM5OTl9Lm5hbWVzcGFjZXtvcGFjaXR5Oi43fS50b2tlbi5ib29sZWFuLC50b2tlbi5jb25zdGFudCwudG9rZW4uZGVsZXRlZCwudG9rZW4ubnVtYmVyLC50b2tlbi5wcm9wZXJ0eSwudG9rZW4uc3ltYm9sLC50b2tlbi50YWd7Y29sb3I6IzkwNX0udG9rZW4uYXR0ci1uYW1lLC50b2tlbi5idWlsdGluLC50b2tlbi5jaGFyLC50b2tlbi5pbnNlcnRlZCwudG9rZW4uc2VsZWN0b3IsLnRva2VuLnN0cmluZ3tjb2xvcjojNjkwfS5sYW5ndWFnZS1jc3MgLnRva2VuLnN0cmluZywuc3R5bGUgLnRva2VuLnN0cmluZywudG9rZW4uZW50aXR5LC50b2tlbi5vcGVyYXRvciwudG9rZW4udXJse2NvbG9yOiM5YTZlM2E7YmFja2dyb3VuZDpoc2xhKDAsMCUsMTAwJSwuNSl9LnRva2VuLmF0cnVsZSwudG9rZW4uYXR0ci12YWx1ZSwudG9rZW4ua2V5d29yZHtjb2xvcjojMDdhfS50b2tlbi5jbGFzcy1uYW1lLC50b2tlbi5mdW5jdGlvbntjb2xvcjojZGQ0YTY4fS50b2tlbi5pbXBvcnRhbnQsLnRva2VuLnJlZ2V4LC50b2tlbi52YXJpYWJsZXtjb2xvcjojZTkwfS50b2tlbi5ib2xkLC50b2tlbi5pbXBvcnRhbnR7Zm9udC13ZWlnaHQ6NzAwfS50b2tlbi5pdGFsaWN7Zm9udC1zdHlsZTppdGFsaWN9LnRva2VuLmVudGl0eXtjdXJzb3I6aGVscH0ubWNlLWNvbnRlbnQtYm9keXtvdmVyZmxvdy13cmFwOmJyZWFrLXdvcmQ7d29yZC13cmFwOmJyZWFrLXdvcmR9Lm1jZS1jb250ZW50LWJvZHkgLm1jZS12aXN1YWwtY2FyZXR7YmFja2dyb3VuZC1jb2xvcjojMDAwO2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yO3Bvc2l0aW9uOmFic29sdXRlfS5tY2UtY29udGVudC1ib2R5IC5tY2UtdmlzdWFsLWNhcmV0LWhpZGRlbntkaXNwbGF5Om5vbmV9Lm1jZS1jb250ZW50LWJvZHkgW2RhdGEtbWNlLWNhcmV0XXtsZWZ0Oi0xMDAwcHg7bWFyZ2luOjA7cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OmF1dG87dG9wOjB9Lm1jZS1jb250ZW50LWJvZHkgLm1jZS1vZmZzY3JlZW4tc2VsZWN0aW9ue2xlZnQ6LTIwMDAwMDBweDttYXgtd2lkdGg6MTAwMDAwMHB4O3Bvc2l0aW9uOmFic29sdXRlfS5tY2UtY29udGVudC1ib2R5IFtjb250ZW50RWRpdGFibGU9ZmFsc2Vde2N1cnNvcjpkZWZhdWx0fS5tY2UtY29udGVudC1ib2R5IFtjb250ZW50RWRpdGFibGU9dHJ1ZV17Y3Vyc29yOnRleHR9LnRveC1jdXJzb3ItZm9ybWF0LXBhaW50ZXJ7Y3Vyc29yOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9VVRGLTgsJTNDc3ZnJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlMjB3aWR0aCUzRCUyMjI0JTIyJTIwaGVpZ2h0JTNEJTIyMjQlMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAyNCUyMDI0JTIyJTNFJTBBJTIwJTIwJTNDZyUyMGZpbGwlM0QlMjJub25lJTIyJTIwZmlsbC1ydWxlJTNEJTIyZXZlbm9kZCUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQ3BhdGglMjBmaWxsJTNEJTIyJTIzMDAwJTIyJTIwZmlsbC1ydWxlJTNEJTIybm9uemVybyUyMiUyMGQlM0QlMjJNMTUlMkM2JTIwQzE1JTJDNS40NSUyMDE0LjU1JTJDNSUyMDE0JTJDNSUyMEw2JTJDNSUyMEM1LjQ1JTJDNSUyMDUlMkM1LjQ1JTIwNSUyQzYlMjBMNSUyQzEwJTIwQzUlMkMxMC41NSUyMDUuNDUlMkMxMSUyMDYlMkMxMSUyMEwxNCUyQzExJTIwQzE0LjU1JTJDMTElMjAxNSUyQzEwLjU1JTIwMTUlMkMxMCUyMEwxNSUyQzklMjBMMTYlMkM5JTIwTDE2JTJDMTIlMjBMOSUyQzEyJTIwTDklMkMxOSUyMEM5JTJDMTkuNTUlMjA5LjQ1JTJDMjAlMjAxMCUyQzIwJTIwTDExJTJDMjAlMjBDMTEuNTUlMkMyMCUyMDEyJTJDMTkuNTUlMjAxMiUyQzE5JTIwTDEyJTJDMTQlMjBMMTglMkMxNCUyMEwxOCUyQzclMjBMMTUlMkM3JTIwTDE1JTJDNiUyMFolMjIlMkYlM0UlMEElMjAlMjAlMjAlMjAlM0NwYXRoJTIwZmlsbCUzRCUyMiUyMzAwMCUyMiUyMGZpbGwtcnVsZSUzRCUyMm5vbnplcm8lMjIlMjBkJTNEJTIyTTElMkMxJTIwTDguMjUlMkMxJTIwQzguNjY0MjEzNTYlMkMxJTIwOSUyQzEuMzM1Nzg2NDQlMjA5JTJDMS43NSUyMEw5JTJDMS43NSUyMEM5JTJDMi4xNjQyMTM1NiUyMDguNjY0MjEzNTYlMkMyLjUlMjA4LjI1JTJDMi41JTIwTDIuNSUyQzIuNSUyMEwyLjUlMkM4LjI1JTIwQzIuNSUyQzguNjY0MjEzNTYlMjAyLjE2NDIxMzU2JTJDOSUyMDEuNzUlMkM5JTIwTDEuNzUlMkM5JTIwQzEuMzM1Nzg2NDQlMkM5JTIwMSUyQzguNjY0MjEzNTYlMjAxJTJDOC4yNSUyMEwxJTJDMSUyMFolMjIlMkYlM0UlMEElMjAlMjAlM0MlMkZnJTNFJTBBJTNDJTJGc3ZnJTNFJTBBIiksZGVmYXVsdH0ubWNlLWNvbnRlbnQtYm9keSBmaWd1cmUuYWxpZ24tbGVmdHtmbG9hdDpsZWZ0fS5tY2UtY29udGVudC1ib2R5IGZpZ3VyZS5hbGlnbi1yaWdodHtmbG9hdDpyaWdodH0ubWNlLWNvbnRlbnQtYm9keSBmaWd1cmUuaW1hZ2UuYWxpZ24tY2VudGVye2Rpc3BsYXk6dGFibGU7bWFyZ2luLWxlZnQ6YXV0bzttYXJnaW4tcmlnaHQ6YXV0b30ubWNlLXByZXZpZXctb2JqZWN0e2JvcmRlcjoxcHggc29saWQgZ3JheTtkaXNwbGF5OmlubGluZS1ibG9jaztsaW5lLWhlaWdodDowO21hcmdpbjowIDJweCAwIDJweDtwb3NpdGlvbjpyZWxhdGl2ZX0ubWNlLXByZXZpZXctb2JqZWN0IC5tY2Utc2hpbXtiYWNrZ3JvdW5kOnVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhBUUFCQUlBQUFBQUFBUC8vL3lINUJBRUFBQUFBTEFBQUFBQUJBQUVBQUFJQlJBQTcpO2hlaWdodDoxMDAlO2xlZnQ6MDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDt3aWR0aDoxMDAlfS5tY2UtcHJldmlldy1vYmplY3RbZGF0YS1tY2Utc2VsZWN0ZWQ9IjIiXSAubWNlLXNoaW17ZGlzcGxheTpub25lfS5tY2Utb2JqZWN0e2JhY2tncm91bmQ6dHJhbnNwYXJlbnQgdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD1VVEYtOCwlM0NzdmclMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUyMHdpZHRoJTNEJTIyMjQlMjIlMjBoZWlnaHQlM0QlMjIyNCUyMiUzRSUzQ3BhdGglMjBkJTNEJTIyTTQlMjAzaDE2YTElMjAxJTIwMCUyMDAlMjAxJTIwMSUyMDF2MTZhMSUyMDElMjAwJTIwMCUyMDEtMSUyMDFINGExJTIwMSUyMDAlMjAwJTIwMS0xLTFWNGExJTIwMSUyMDAlMjAwJTIwMSUyMDEtMXptMSUyMDJ2MTRoMTRWNUg1em00Ljc5JTIwMi41NjVsNS42NCUyMDQuMDI4YS41LjUlMjAwJTIwMCUyMDElMjAwJTIwLjgxNGwtNS42NCUyMDQuMDI4YS41LjUlMjAwJTIwMCUyMDEtLjc5LS40MDdWNy45NzJhLjUuNSUyMDAlMjAwJTIwMSUyMC43OS0uNDA3eiUyMiUyRiUzRSUzQyUyRnN2ZyUzRSUwQSIpIG5vLXJlcGVhdCBjZW50ZXI7Ym9yZGVyOjFweCBkYXNoZWQgI2FhYX0ubWNlLXBhZ2VicmVha3tib3JkZXI6MXB4IGRhc2hlZCAjYWFhO2N1cnNvcjpkZWZhdWx0O2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjVweDttYXJnaW4tdG9wOjE1cHg7cGFnZS1icmVhay1iZWZvcmU6YWx3YXlzO3dpZHRoOjEwMCV9QG1lZGlhIHByaW50ey5tY2UtcGFnZWJyZWFre2JvcmRlcjowfX0udGlueS1wYWdlZW1iZWQgLm1jZS1zaGlte2JhY2tncm91bmQ6dXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEFRQUJBSUFBQUFBQUFQLy8veUg1QkFFQUFBQUFMQUFBQUFBQkFBRUFBQUlCUkFBNyk7aGVpZ2h0OjEwMCU7bGVmdDowO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3dpZHRoOjEwMCV9LnRpbnktcGFnZWVtYmVkW2RhdGEtbWNlLXNlbGVjdGVkPSIyIl0gLm1jZS1zaGlte2Rpc3BsYXk6bm9uZX0udGlueS1wYWdlZW1iZWR7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRpdmV9LnRpbnktcGFnZWVtYmVkLS0xNmJ5OSwudGlueS1wYWdlZW1iZWQtLTFieTEsLnRpbnktcGFnZWVtYmVkLS0yMWJ5OSwudGlueS1wYWdlZW1iZWQtLTRieTN7ZGlzcGxheTpibG9jaztvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCV9LnRpbnktcGFnZWVtYmVkLS0yMWJ5OXtwYWRkaW5nLXRvcDo0Mi44NTcxNDMlfS50aW55LXBhZ2VlbWJlZC0tMTZieTl7cGFkZGluZy10b3A6NTYuMjUlfS50aW55LXBhZ2VlbWJlZC0tNGJ5M3twYWRkaW5nLXRvcDo3NSV9LnRpbnktcGFnZWVtYmVkLS0xYnkxe3BhZGRpbmctdG9wOjEwMCV9LnRpbnktcGFnZWVtYmVkLS0xNmJ5OSBpZnJhbWUsLnRpbnktcGFnZWVtYmVkLS0xYnkxIGlmcmFtZSwudGlueS1wYWdlZW1iZWQtLTIxYnk5IGlmcmFtZSwudGlueS1wYWdlZW1iZWQtLTRieTMgaWZyYW1le2JvcmRlcjowO2hlaWdodDoxMDAlO2xlZnQ6MDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDt3aWR0aDoxMDAlfS5tY2UtY29udGVudC1ib2R5W2RhdGEtbWNlLXBsYWNlaG9sZGVyXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWNlLWNvbnRlbnQtYm9keVtkYXRhLW1jZS1wbGFjZWhvbGRlcl06bm90KC5tY2UtdmlzdWFsYmxvY2tzKTo6YmVmb3Jle2NvbG9yOnJnYmEoMzQsNDcsNjIsLjcpO2NvbnRlbnQ6YXR0cihkYXRhLW1jZS1wbGFjZWhvbGRlcik7cG9zaXRpb246YWJzb2x1dGV9Lm1jZS1jb250ZW50LWJvZHk6bm90KFtkaXI9cnRsXSlbZGF0YS1tY2UtcGxhY2Vob2xkZXJdOm5vdCgubWNlLXZpc3VhbGJsb2Nrcyk6OmJlZm9yZXtsZWZ0OjFweH0ubWNlLWNvbnRlbnQtYm9keVtkaXI9cnRsXVtkYXRhLW1jZS1wbGFjZWhvbGRlcl06bm90KC5tY2UtdmlzdWFsYmxvY2tzKTo6YmVmb3Jle3JpZ2h0OjFweH0ubWNlLWNvbnRlbnQtYm9keSBkaXYubWNlLXJlc2l6ZWhhbmRsZXtiYWNrZ3JvdW5kLWNvbG9yOiM0MDk5ZmY7Ym9yZGVyLWNvbG9yOiM0MDk5ZmY7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDoxcHg7Ym94LXNpemluZzpib3JkZXItYm94O2hlaWdodDoxMHB4O3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjEwcHg7ei1pbmRleDoxMDAwMH0ubWNlLWNvbnRlbnQtYm9keSBkaXYubWNlLXJlc2l6ZWhhbmRsZTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiM0MDk5ZmZ9Lm1jZS1jb250ZW50LWJvZHkgZGl2Lm1jZS1yZXNpemVoYW5kbGU6bnRoLW9mLXR5cGUoMSl7Y3Vyc29yOm53c2UtcmVzaXplfS5tY2UtY29udGVudC1ib2R5IGRpdi5tY2UtcmVzaXplaGFuZGxlOm50aC1vZi10eXBlKDIpe2N1cnNvcjpuZXN3LXJlc2l6ZX0ubWNlLWNvbnRlbnQtYm9keSBkaXYubWNlLXJlc2l6ZWhhbmRsZTpudGgtb2YtdHlwZSgzKXtjdXJzb3I6bndzZS1yZXNpemV9Lm1jZS1jb250ZW50LWJvZHkgZGl2Lm1jZS1yZXNpemVoYW5kbGU6bnRoLW9mLXR5cGUoNCl7Y3Vyc29yOm5lc3ctcmVzaXplfS5tY2UtY29udGVudC1ib2R5IC5tY2UtY2xvbmVkcmVzaXphYmxle29wYWNpdHk6LjU7b3V0bGluZToxcHggZGFzaGVkICMwMDA7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwMH0ubWNlLWNvbnRlbnQtYm9keSAubWNlLXJlc2l6ZS1oZWxwZXJ7YmFja2dyb3VuZDojNTU1O2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuNzUpO2JvcmRlcjoxcHg7Ym9yZGVyLXJhZGl1czozcHg7Y29sb3I6I2ZmZjtkaXNwbGF5Om5vbmU7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoxNHB4O21hcmdpbjo1cHggMTBweDtwYWRkaW5nOjVweDtwb3NpdGlvbjphYnNvbHV0ZTt3aGl0ZS1zcGFjZTpub3dyYXA7ei1pbmRleDoxMDAwMX0udG94LXJ0Yy11c2VyLXNlbGVjdGlvbntwb3NpdGlvbjpyZWxhdGl2ZX0udG94LXJ0Yy11c2VyLWN1cnNvcntib3R0b206MDtjdXJzb3I6ZGVmYXVsdDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDt3aWR0aDoycHh9LnRveC1ydGMtdXNlci1jdXJzb3I6OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOmluaGVyaXQ7Ym9yZGVyLXJhZGl1czo1MCU7Y29udGVudDonJztkaXNwbGF5OmJsb2NrO2hlaWdodDo4cHg7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6LTNweDt0b3A6LTNweDt3aWR0aDo4cHh9LnRveC1ydGMtdXNlci1jdXJzb3I6aG92ZXI6OmFmdGVye2JhY2tncm91bmQtY29sb3I6aW5oZXJpdDtib3JkZXItcmFkaXVzOjEwMHB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjojZmZmO2NvbnRlbnQ6YXR0cihkYXRhLXVzZXIpO2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NzAwO2xlZnQ6LTVweDttaW4taGVpZ2h0OjhweDttaW4td2lkdGg6OHB4O3BhZGRpbmc6MCAxMnB4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDotMTFweDt3aGl0ZS1zcGFjZTpub3dyYXA7ei1pbmRleDoxMDAwfS50b3gtcnRjLXVzZXItc2VsZWN0aW9uLS0xIC50b3gtcnRjLXVzZXItY3Vyc29ye2JhY2tncm91bmQtY29sb3I6IzJkYzI2Yn0udG94LXJ0Yy11c2VyLXNlbGVjdGlvbi0tMiAudG94LXJ0Yy11c2VyLWN1cnNvcntiYWNrZ3JvdW5kLWNvbG9yOiNlMDNlMmR9LnRveC1ydGMtdXNlci1zZWxlY3Rpb24tLTMgLnRveC1ydGMtdXNlci1jdXJzb3J7YmFja2dyb3VuZC1jb2xvcjojZjFjNDBmfS50b3gtcnRjLXVzZXItc2VsZWN0aW9uLS00IC50b3gtcnRjLXVzZXItY3Vyc29ye2JhY2tncm91bmQtY29sb3I6IzM1OThkYn0udG94LXJ0Yy11c2VyLXNlbGVjdGlvbi0tNSAudG94LXJ0Yy11c2VyLWN1cnNvcntiYWNrZ3JvdW5kLWNvbG9yOiNiOTZhZDl9LnRveC1ydGMtdXNlci1zZWxlY3Rpb24tLTYgLnRveC1ydGMtdXNlci1jdXJzb3J7YmFja2dyb3VuZC1jb2xvcjojZTY3ZTIzfS50b3gtcnRjLXVzZXItc2VsZWN0aW9uLS03IC50b3gtcnRjLXVzZXItY3Vyc29ye2JhY2tncm91bmQtY29sb3I6I2FhYTY5ZH0udG94LXJ0Yy11c2VyLXNlbGVjdGlvbi0tOCAudG94LXJ0Yy11c2VyLWN1cnNvcntiYWNrZ3JvdW5kLWNvbG9yOiNmMzY4ZTB9LnRveC1ydGMtcmVtb3RlLWltYWdle2JhY2tncm91bmQ6I2VhZWFlYSB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVURi04LCUzQ3N2ZyUyMHdpZHRoJTNEJTIyMzYlMjIlMjBoZWlnaHQlM0QlMjIxMiUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDM2JTIwMTIlMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUzRSUwQSUyMCUyMCUzQ2NpcmNsZSUyMGN4JTNEJTIyNiUyMiUyMGN5JTNEJTIyNiUyMiUyMHIlM0QlMjIzJTIyJTIwZmlsbCUzRCUyMnJnYmEoMCUyQyUyMDAlMkMlMjAwJTJDJTIwLjIpJTIyJTNFJTBBJTIwJTIwJTIwJTIwJTNDYW5pbWF0ZSUyMGF0dHJpYnV0ZU5hbWUlM0QlMjJyJTIyJTIwdmFsdWVzJTNEJTIyMyUzQjUlM0IzJTIyJTIwY2FsY01vZGUlM0QlMjJsaW5lYXIlMjIlMjBkdXIlM0QlMjIxcyUyMiUyMHJlcGVhdENvdW50JTNEJTIyaW5kZWZpbml0ZSUyMiUyMCUyRiUzRSUwQSUyMCUyMCUzQyUyRmNpcmNsZSUzRSUwQSUyMCUyMCUzQ2NpcmNsZSUyMGN4JTNEJTIyMTglMjIlMjBjeSUzRCUyMjYlMjIlMjByJTNEJTIyMyUyMiUyMGZpbGwlM0QlMjJyZ2JhKDAlMkMlMjAwJTJDJTIwMCUyQyUyMC4yKSUyMiUzRSUwQSUyMCUyMCUyMCUyMCUzQ2FuaW1hdGUlMjBhdHRyaWJ1dGVOYW1lJTNEJTIyciUyMiUyMHZhbHVlcyUzRCUyMjMlM0I1JTNCMyUyMiUyMGNhbGNNb2RlJTNEJTIybGluZWFyJTIyJTIwYmVnaW4lM0QlMjIuMzNzJTIyJTIwZHVyJTNEJTIyMXMlMjIlMjByZXBlYXRDb3VudCUzRCUyMmluZGVmaW5pdGUlMjIlMjAlMkYlM0UlMEElMjAlMjAlM0MlMkZjaXJjbGUlM0UlMEElMjAlMjAlM0NjaXJjbGUlMjBjeCUzRCUyMjMwJTIyJTIwY3klM0QlMjI2JTIyJTIwciUzRCUyMjMlMjIlMjBmaWxsJTNEJTIycmdiYSgwJTJDJTIwMCUyQyUyMDAlMkMlMjAuMiklMjIlM0UlMEElMjAlMjAlMjAlMjAlM0NhbmltYXRlJTIwYXR0cmlidXRlTmFtZSUzRCUyMnIlMjIlMjB2YWx1ZXMlM0QlMjIzJTNCNSUzQjMlMjIlMjBjYWxjTW9kZSUzRCUyMmxpbmVhciUyMiUyMGJlZ2luJTNEJTIyLjY2cyUyMiUyMGR1ciUzRCUyMjFzJTIyJTIwcmVwZWF0Q291bnQlM0QlMjJpbmRlZmluaXRlJTIyJTIwJTJGJTNFJTBBJTIwJTIwJTNDJTJGY2lyY2xlJTNFJTBBJTNDJTJGc3ZnJTNFJTBBIikgbm8tcmVwZWF0IGNlbnRlciBjZW50ZXI7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO21pbi1oZWlnaHQ6MjQwcHg7bWluLXdpZHRoOjMyMHB4fS5tY2UtbWF0Y2gtbWFya2Vye2JhY2tncm91bmQ6I2FhYTtjb2xvcjojZmZmfS5tY2UtbWF0Y2gtbWFya2VyLXNlbGVjdGVke2JhY2tncm91bmQ6IzM5Zjtjb2xvcjojZmZmfS5tY2UtbWF0Y2gtbWFya2VyLXNlbGVjdGVkOjotbW96LXNlbGVjdGlvbntiYWNrZ3JvdW5kOiMzOWY7Y29sb3I6I2ZmZn0ubWNlLW1hdGNoLW1hcmtlci1zZWxlY3RlZDo6c2VsZWN0aW9ue2JhY2tncm91bmQ6IzM5Zjtjb2xvcjojZmZmfS5tY2UtY29udGVudC1ib2R5IGltZ1tkYXRhLW1jZS1zZWxlY3RlZF0sLm1jZS1jb250ZW50LWJvZHkgdGFibGVbZGF0YS1tY2Utc2VsZWN0ZWRde291dGxpbmU6M3B4IHNvbGlkICNiNGQ3ZmZ9Lm1jZS1jb250ZW50LWJvZHkgaHJbZGF0YS1tY2Utc2VsZWN0ZWRde291dGxpbmU6M3B4IHNvbGlkICNiNGQ3ZmY7b3V0bGluZS1vZmZzZXQ6MXB4fS5tY2UtY29udGVudC1ib2R5IFtjb250ZW50RWRpdGFibGU9ZmFsc2VdIFtjb250ZW50RWRpdGFibGU9dHJ1ZV06Zm9jdXN7b3V0bGluZTozcHggc29saWQgI2I0ZDdmZn0ubWNlLWNvbnRlbnQtYm9keSBbY29udGVudEVkaXRhYmxlPWZhbHNlXSBbY29udGVudEVkaXRhYmxlPXRydWVdOmhvdmVye291dGxpbmU6M3B4IHNvbGlkICNiNGQ3ZmZ9Lm1jZS1jb250ZW50LWJvZHkgW2NvbnRlbnRFZGl0YWJsZT1mYWxzZV1bZGF0YS1tY2Utc2VsZWN0ZWRde2N1cnNvcjpub3QtYWxsb3dlZDtvdXRsaW5lOjNweCBzb2xpZCAjYjRkN2ZmfS5tY2UtY29udGVudC1ib2R5Lm1jZS1jb250ZW50LXJlYWRvbmx5IFtjb250ZW50RWRpdGFibGU9dHJ1ZV06Zm9jdXMsLm1jZS1jb250ZW50LWJvZHkubWNlLWNvbnRlbnQtcmVhZG9ubHkgW2NvbnRlbnRFZGl0YWJsZT10cnVlXTpob3ZlcntvdXRsaW5lOjB9Lm1jZS1jb250ZW50LWJvZHkgW2RhdGEtbWNlLXNlbGVjdGVkPWlubGluZS1ib3VuZGFyeV17YmFja2dyb3VuZC1jb2xvcjojYjRkN2ZmfS5tY2UtY29udGVudC1ib2R5IC5tY2UtZWRpdC1mb2N1c3tvdXRsaW5lOjNweCBzb2xpZCAjYjRkN2ZmfS5tY2UtY29udGVudC1ib2R5IHRkW2RhdGEtbWNlLXNlbGVjdGVkXSwubWNlLWNvbnRlbnQtYm9keSB0aFtkYXRhLW1jZS1zZWxlY3RlZF17YmFja2dyb3VuZC1jb2xvcjojYjRkN2ZmIWltcG9ydGFudH0ubWNlLWNvbnRlbnQtYm9keSB0ZFtkYXRhLW1jZS1zZWxlY3RlZF06Oi1tb3otc2VsZWN0aW9uLC5tY2UtY29udGVudC1ib2R5IHRoW2RhdGEtbWNlLXNlbGVjdGVkXTo6LW1vei1zZWxlY3Rpb257YmFja2dyb3VuZDowIDB9Lm1jZS1jb250ZW50LWJvZHkgdGRbZGF0YS1tY2Utc2VsZWN0ZWRdOjpzZWxlY3Rpb24sLm1jZS1jb250ZW50LWJvZHkgdGhbZGF0YS1tY2Utc2VsZWN0ZWRdOjpzZWxlY3Rpb257YmFja2dyb3VuZDowIDB9Lm1jZS1jb250ZW50LWJvZHkgdGRbZGF0YS1tY2Utc2VsZWN0ZWRdICosLm1jZS1jb250ZW50LWJvZHkgdGhbZGF0YS1tY2Utc2VsZWN0ZWRdICp7LXdlYmtpdC10b3VjaC1jYWxsb3V0Om5vbmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lfS5tY2UtY29udGVudC1ib2R5IGltZzo6LW1vei1zZWxlY3Rpb257YmFja2dyb3VuZDowIDB9Lm1jZS1jb250ZW50LWJvZHkgaW1nOjpzZWxlY3Rpb257YmFja2dyb3VuZDowIDB9LmVwaG94LXNub29rZXItcmVzaXplci1iYXJ7YmFja2dyb3VuZC1jb2xvcjojYjRkN2ZmO29wYWNpdHk6MDstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmV9LmVwaG94LXNub29rZXItcmVzaXplci1jb2xze2N1cnNvcjpjb2wtcmVzaXplfS5lcGhveC1zbm9va2VyLXJlc2l6ZXItcm93c3tjdXJzb3I6cm93LXJlc2l6ZX0uZXBob3gtc25vb2tlci1yZXNpemVyLWJhci5lcGhveC1zbm9va2VyLXJlc2l6ZXItYmFyLWRyYWdnaW5ne29wYWNpdHk6MX0ubWNlLXNwZWxsY2hlY2tlci13b3Jke2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD1VVEYtOCwlM0NzdmclMjB3aWR0aCUzRCc0JyUyMGhlaWdodCUzRCc0JyUyMHhtbG5zJTNEJ2h0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyclM0UlM0NwYXRoJTIwc3Ryb2tlJTNEJyUyM2ZmMDAwMCclMjBmaWxsJTNEJ25vbmUnJTIwc3Ryb2tlLWxpbmVjYXAlM0Qncm91bmQnJTIwc3Ryb2tlLW9wYWNpdHklM0QnLjc1JyUyMGQlM0QnTTAlMjAzTDIlMjAxJTIwNCUyMDMnJTJGJTNFJTNDJTJGc3ZnJTNFJTBBIik7YmFja2dyb3VuZC1wb3NpdGlvbjowIGNhbGMoMTAwJSArIDFweCk7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXg7YmFja2dyb3VuZC1zaXplOmF1dG8gNnB4O2N1cnNvcjpkZWZhdWx0O2hlaWdodDoycmVtfS5tY2Utc3BlbGxjaGVja2VyLWdyYW1tYXJ7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVURi04LCUzQ3N2ZyUyMHdpZHRoJTNEJzQnJTIwaGVpZ2h0JTNEJzQnJTIweG1sbnMlM0QnaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJyUzRSUzQ3BhdGglMjBzdHJva2UlM0QnJTIzMDBBODM1JyUyMGZpbGwlM0Qnbm9uZSclMjBzdHJva2UtbGluZWNhcCUzRCdyb3VuZCclMjBkJTNEJ00wJTIwM0wyJTIwMSUyMDQlMjAzJyUyRiUzRSUzQyUyRnN2ZyUzRSUwQSIpO2JhY2tncm91bmQtcG9zaXRpb246MCBjYWxjKDEwMCUgKyAxcHgpO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14O2JhY2tncm91bmQtc2l6ZTphdXRvIDZweDtjdXJzb3I6ZGVmYXVsdH0ubWNlLXRvY3tib3JkZXI6MXB4IHNvbGlkIGdyYXl9Lm1jZS10b2MgaDJ7bWFyZ2luOjRweH0ubWNlLXRvYyBsaXtsaXN0LXN0eWxlLXR5cGU6bm9uZX0ubWNlLWl0ZW0tdGFibGUsLm1jZS1pdGVtLXRhYmxlIGNhcHRpb24sLm1jZS1pdGVtLXRhYmxlIHRkLC5tY2UtaXRlbS10YWJsZSB0aHtib3JkZXI6MXB4IGRhc2hlZCAjYmJifS5tY2UtdmlzdWFsYmxvY2tzIGFkZHJlc3MsLm1jZS12aXN1YWxibG9ja3MgYXJ0aWNsZSwubWNlLXZpc3VhbGJsb2NrcyBhc2lkZSwubWNlLXZpc3VhbGJsb2NrcyBibG9ja3F1b3RlLC5tY2UtdmlzdWFsYmxvY2tzIGRpdjpub3QoW2RhdGEtbWNlLWJvZ3VzXSksLm1jZS12aXN1YWxibG9ja3MgZGwsLm1jZS12aXN1YWxibG9ja3MgZmlnY2FwdGlvbiwubWNlLXZpc3VhbGJsb2NrcyBmaWd1cmUsLm1jZS12aXN1YWxibG9ja3MgaDEsLm1jZS12aXN1YWxibG9ja3MgaDIsLm1jZS12aXN1YWxibG9ja3MgaDMsLm1jZS12aXN1YWxibG9ja3MgaDQsLm1jZS12aXN1YWxibG9ja3MgaDUsLm1jZS12aXN1YWxibG9ja3MgaDYsLm1jZS12aXN1YWxibG9ja3MgaGdyb3VwLC5tY2UtdmlzdWFsYmxvY2tzIG9sLC5tY2UtdmlzdWFsYmxvY2tzIHAsLm1jZS12aXN1YWxibG9ja3MgcHJlLC5tY2UtdmlzdWFsYmxvY2tzIHNlY3Rpb24sLm1jZS12aXN1YWxibG9ja3MgdWx7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JvcmRlcjoxcHggZGFzaGVkICNiYmI7bWFyZ2luLWxlZnQ6M3B4O3BhZGRpbmctdG9wOjEwcHh9Lm1jZS12aXN1YWxibG9ja3MgcHtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhDUUFKQUpFQUFBQUFBUC8vLzd1N3UvLy8veUg1QkFFQUFBTUFMQUFBQUFBSkFBa0FBQUlRbkcrQ3FDTi9tbHl2c1JVcFRoRzZBZ0E3KX0ubWNlLXZpc3VhbGJsb2NrcyBoMXtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhEUUFLQUlBQkFMdTd1Ly8vL3lINUJBRUFBQUVBTEFBQUFBQU5BQW9BQUFJWGpJOEd5Ykd1MUp1eEhvQWZSTlJXM1RXWHlGMllpUlVBT3c9PSl9Lm1jZS12aXN1YWxibG9ja3MgaDJ7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoRGdBS0FJQUJBTHU3dS8vLy95SDVCQUVBQUFFQUxBQUFBQUFPQUFvQUFBSWFqSThIeWJieDRvT3VxZ1R5bkpkNmJHbFdnM0RrSnpvYVVBQUFPdz09KX0ubWNlLXZpc3VhbGJsb2NrcyBoM3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhEZ0FLQUlBQkFMdTd1Ly8vL3lINUJBRUFBQUVBTEFBQUFBQU9BQW9BQUFJWmpJOEh5YmJ4NG9PdXFnVHluSmYyTG4yTk9IcFFwbWhBQVFBNyl9Lm1jZS12aXN1YWxibG9ja3MgaDR7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoRGdBS0FJQUJBTHU3dS8vLy95SDVCQUVBQUFFQUxBQUFBQUFPQUFvQUFBSWFqSThIeWJieEluUjB6cWVBZGh0SmxYd1Yxb0NsbDJIYVdnQUFPdz09KX0ubWNlLXZpc3VhbGJsb2NrcyBoNXtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhEZ0FLQUlBQkFMdTd1Ly8vL3lINUJBRUFBQUVBTEFBQUFBQU9BQW9BQUFJYWpJOEh5YmJ4SW9pdXdqYW5lNGlxNUdsVzA1R2dJa0laVUFBQU93PT0pfS5tY2UtdmlzdWFsYmxvY2tzIGg2e2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaERnQUtBSUFCQUx1N3UvLy8veUg1QkFFQUFBRUFMQUFBQUFBT0FBb0FBQUlhakk4SHliYnhJb2l1d2phbjA0amVwMWlaMVhSbEFvNWJWZ0FBT3c9PSl9Lm1jZS12aXN1YWxibG9ja3MgZGl2Om5vdChbZGF0YS1tY2UtYm9ndXNdKXtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhFZ0FLQUlBQkFMdTd1Ly8vL3lINUJBRUFBQUVBTEFBQUFBQVNBQW9BQUFJZmpJOXBvSTBjZ0R5d3JodXhmYnJ6REViUU0yRWk1YVJqbW95U1c0cEFBUUE3KX0ubWNlLXZpc3VhbGJsb2NrcyBzZWN0aW9ue2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEtBQUtBSUFCQUx1N3UvLy8veUg1QkFFQUFBRUFMQUFBQUFBb0FBb0FBQUk1akkrcHl3Y05ZM3NCV0hkTnJwbHl0RDJlbGxEZVNWYnArR21XcWFEcURNZXBjOHQxN1k0dkJzSzVoRHlKTWNJNktrdVlVK2pwakxvS0FEcz0pfS5tY2UtdmlzdWFsYmxvY2tzIGFydGljbGV7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoS2dBS0FJQUJBTHU3dS8vLy95SDVCQUVBQUFFQUxBQUFBQUFxQUFvQUFBSTZqSStweXdrTlkzd0cwR0J2cnNkMnRYR1lTR25maUY3aWtwWGVtVHBPaUpTY2FzWW9ESkpyanNHOWdrQ0owYWc2S2htYUllM3BqRFlCQlFBNyl9Lm1jZS12aXN1YWxibG9ja3MgYmxvY2txdW90ZXtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhQZ0FLQUlBQkFMdTd1Ly8vL3lINUJBRUFBQUVBTEFBQUFBQStBQW9BQUFKUGpJK3B5KzBLbnB6MHhRRHl1VWh2Zm9HZ0lYNWlTS1pZZ3E1dU5MNXE2OWFzWjhzNXJyZjB5Wm1wTmtKWnpGZXNCVHU4VE9sRFZBYWJVeWF0Z3VWaFdkdXVkM0V5aVVrNDV4aFRUZ01CQlFBNyl9Lm1jZS12aXN1YWxibG9ja3MgYWRkcmVzc3tiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhMUUFLQUlBQkFMdTd1Ly8vL3lINUJBRUFBQUVBTEFBQUFBQXRBQW9BQUFJL2pJK3B5d3dOb3pTUDFnRHl5WmNqYjNVYVJwWGtXYVhtWlc0T3FLTGhCbUxzK0syNjNEa0pLN09KZWlmaDdGaWNLRDlBMS9JcEdkS2t5RnBObUNrQUFEcz0pfS5tY2UtdmlzdWFsYmxvY2tzIHByZXtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhGUUFLQUlBQkFMdTd1d0FBQUNINUJBRUFBQUVBTEFBQUFBQVZBQW9BQUFJampJK1pvTjBjZ0R3U21ucHoxTkN1ZVlFUmhuaWJaVktMTm5iT3E4SXZLcEp0VlFBQU93PT0pfS5tY2UtdmlzdWFsYmxvY2tzIGZpZ3VyZXtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhKQUFLQUlBQUFMdTd1Ly8vL3lINUJBRUFBQUVBTEFBQUFBQWtBQW9BQUFJMGpJK3B5KzJmd0FIVVNGdkQzUmx2RzRISXA0blg1SkZTcG5aVUo2TGxyTTUyT0U3dVNXb3NCSFNjZ2tTWmo3ZERLbldBQWdBNyl9Lm1jZS12aXN1YWxibG9ja3MgZmlnY2FwdGlvbntib3JkZXI6MXB4IGRhc2hlZCAjYmJifS5tY2UtdmlzdWFsYmxvY2tzIGhncm91cHtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhKd0FLQUlBQkFMdTd1d0FBQUNINUJBRUFBQUVBTEFBQUFBQW5BQW9BQUFJM2pJK3B5d1lOSTN1QjBncHNSdHQ1ZkZuZk5aYVZTWUppbDRXbzAzSHY2WjYydU9DZ2lYSDFrWklJSjhOaUl4UnJBWk5NWkF0UUFBQTcpfS5tY2UtdmlzdWFsYmxvY2tzIGFzaWRle2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEhnQUtBSUFCQUtxcXF2Ly8veUg1QkFFQUFBRUFMQUFBQUFBZUFBb0FBQUl0akkrcEc4QVBqWk9Uemd0cXk3STNmMXllaG1RY0ZZNFdLWmJxQnl1dG1XNGFIVWQ2dmZjVmJndWRncFlDQURzPSl9Lm1jZS12aXN1YWxibG9ja3MgdWx7YmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoRFFBS0FJQUFBTHU3dS8vLy95SDVCQUVBQUFFQUxBQUFBQUFOQUFvQUFBSVhqSThHeWJHdVlucVVWU2p2dzI2RHp6WGlxSURsVndBQU93PT0pfS5tY2UtdmlzdWFsYmxvY2tzIG9se2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaERRQUtBSUFCQUx1N3UvLy8veUg1QkFFQUFBRUFMQUFBQUFBTkFBb0FBQUlYakk4R3liSDZISHQwcW91cnhDNkN2elhpZUh5ZVdRQUFPdz09KX0ubWNlLXZpc3VhbGJsb2NrcyBkbHtiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhEUUFLQUlBQkFMdTd1Ly8vL3lINUJBRUFBQUVBTEFBQUFBQU5BQW9BQUFJWGpJOEd5YkVPbm1PdlVvV3puVHFldUVqTlNDcWVHUlVBT3c9PSl9Lm1jZS12aXN1YWxibG9ja3M6bm90KFtkaXI9cnRsXSkgYWRkcmVzcywubWNlLXZpc3VhbGJsb2Nrczpub3QoW2Rpcj1ydGxdKSBhcnRpY2xlLC5tY2UtdmlzdWFsYmxvY2tzOm5vdChbZGlyPXJ0bF0pIGFzaWRlLC5tY2UtdmlzdWFsYmxvY2tzOm5vdChbZGlyPXJ0bF0pIGJsb2NrcXVvdGUsLm1jZS12aXN1YWxibG9ja3M6bm90KFtkaXI9cnRsXSkgZGl2Om5vdChbZGF0YS1tY2UtYm9ndXNdKSwubWNlLXZpc3VhbGJsb2Nrczpub3QoW2Rpcj1ydGxdKSBkbCwubWNlLXZpc3VhbGJsb2Nrczpub3QoW2Rpcj1ydGxdKSBmaWdjYXB0aW9uLC5tY2UtdmlzdWFsYmxvY2tzOm5vdChbZGlyPXJ0bF0pIGZpZ3VyZSwubWNlLXZpc3VhbGJsb2Nrczpub3QoW2Rpcj1ydGxdKSBoMSwubWNlLXZpc3VhbGJsb2Nrczpub3QoW2Rpcj1ydGxdKSBoMiwubWNlLXZpc3VhbGJsb2Nrczpub3QoW2Rpcj1ydGxdKSBoMywubWNlLXZpc3VhbGJsb2Nrczpub3QoW2Rpcj1ydGxdKSBoNCwubWNlLXZpc3VhbGJsb2Nrczpub3QoW2Rpcj1ydGxdKSBoNSwubWNlLXZpc3VhbGJsb2Nrczpub3QoW2Rpcj1ydGxdKSBoNiwubWNlLXZpc3VhbGJsb2Nrczpub3QoW2Rpcj1ydGxdKSBoZ3JvdXAsLm1jZS12aXN1YWxibG9ja3M6bm90KFtkaXI9cnRsXSkgb2wsLm1jZS12aXN1YWxibG9ja3M6bm90KFtkaXI9cnRsXSkgcCwubWNlLXZpc3VhbGJsb2Nrczpub3QoW2Rpcj1ydGxdKSBwcmUsLm1jZS12aXN1YWxibG9ja3M6bm90KFtkaXI9cnRsXSkgc2VjdGlvbiwubWNlLXZpc3VhbGJsb2Nrczpub3QoW2Rpcj1ydGxdKSB1bHttYXJnaW4tbGVmdDozcHh9Lm1jZS12aXN1YWxibG9ja3NbZGlyPXJ0bF0gYWRkcmVzcywubWNlLXZpc3VhbGJsb2Nrc1tkaXI9cnRsXSBhcnRpY2xlLC5tY2UtdmlzdWFsYmxvY2tzW2Rpcj1ydGxdIGFzaWRlLC5tY2UtdmlzdWFsYmxvY2tzW2Rpcj1ydGxdIGJsb2NrcXVvdGUsLm1jZS12aXN1YWxibG9ja3NbZGlyPXJ0bF0gZGl2Om5vdChbZGF0YS1tY2UtYm9ndXNdKSwubWNlLXZpc3VhbGJsb2Nrc1tkaXI9cnRsXSBkbCwubWNlLXZpc3VhbGJsb2Nrc1tkaXI9cnRsXSBmaWdjYXB0aW9uLC5tY2UtdmlzdWFsYmxvY2tzW2Rpcj1ydGxdIGZpZ3VyZSwubWNlLXZpc3VhbGJsb2Nrc1tkaXI9cnRsXSBoMSwubWNlLXZpc3VhbGJsb2Nrc1tkaXI9cnRsXSBoMiwubWNlLXZpc3VhbGJsb2Nrc1tkaXI9cnRsXSBoMywubWNlLXZpc3VhbGJsb2Nrc1tkaXI9cnRsXSBoNCwubWNlLXZpc3VhbGJsb2Nrc1tkaXI9cnRsXSBoNSwubWNlLXZpc3VhbGJsb2Nrc1tkaXI9cnRsXSBoNiwubWNlLXZpc3VhbGJsb2Nrc1tkaXI9cnRsXSBoZ3JvdXAsLm1jZS12aXN1YWxibG9ja3NbZGlyPXJ0bF0gb2wsLm1jZS12aXN1YWxibG9ja3NbZGlyPXJ0bF0gcCwubWNlLXZpc3VhbGJsb2Nrc1tkaXI9cnRsXSBwcmUsLm1jZS12aXN1YWxibG9ja3NbZGlyPXJ0bF0gc2VjdGlvbiwubWNlLXZpc3VhbGJsb2Nrc1tkaXI9cnRsXSB1bHtiYWNrZ3JvdW5kLXBvc2l0aW9uLXg6cmlnaHQ7bWFyZ2luLXJpZ2h0OjNweH0ubWNlLW5ic3AsLm1jZS1zaHl7YmFja2dyb3VuZDojYWFhfS5tY2Utc2h5OjphZnRlcntjb250ZW50OictJ31ib2R5e2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWZ9dGFibGV7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/skins/ui/oxide/content.mobile.min.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICovCi50aW55bWNlLW1vYmlsZS11bmZvY3VzZWQtc2VsZWN0aW9ucyAudGlueW1jZS1tb2JpbGUtdW5mb2N1c2VkLXNlbGVjdGlvbntiYWNrZ3JvdW5kLWNvbG9yOmdyZWVuO2Rpc3BsYXk6aW5saW5lLWJsb2NrO29wYWNpdHk6LjU7cG9zaXRpb246YWJzb2x1dGV9Ym9keXstd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6bm9uZX1ib2R5IGltZ3ttYXgtd2lkdGg6OTZ2d31ib2R5IHRhYmxlIGltZ3ttYXgtd2lkdGg6OTUlfWJvZHl7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZn10YWJsZXtib3JkZXItY29sbGFwc2U6Y29sbGFwc2V9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/skins/ui/oxide/fonts/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/skins/ui/oxide/skin.min.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICovCi50b3h7Ym94LXNpemluZzpjb250ZW50LWJveDtjb2xvcjojMjIyZjNlO2N1cnNvcjphdXRvO2ZvbnQtZmFtaWx5Oi1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCJTZWdvZSBVSSIsUm9ib3RvLE94eWdlbi1TYW5zLFVidW50dSxDYW50YXJlbGwsIkhlbHZldGljYSBOZXVlIixzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4O2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDpub3JtYWw7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RleHQtZGVjb3JhdGlvbjpub25lO3RleHQtc2hhZG93Om5vbmU7dGV4dC10cmFuc2Zvcm06bm9uZTt2ZXJ0aWNhbC1hbGlnbjppbml0aWFsO3doaXRlLXNwYWNlOm5vcm1hbH0udG94IDpub3Qoc3ZnKTpub3QocmVjdCl7Ym94LXNpemluZzppbmhlcml0O2NvbG9yOmluaGVyaXQ7Y3Vyc29yOmluaGVyaXQ7ZGlyZWN0aW9uOmluaGVyaXQ7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXN0eWxlOmluaGVyaXQ7Zm9udC13ZWlnaHQ6aW5oZXJpdDtsaW5lLWhlaWdodDppbmhlcml0Oy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjppbmhlcml0O3RleHQtYWxpZ246aW5oZXJpdDt0ZXh0LWRlY29yYXRpb246aW5oZXJpdDt0ZXh0LXNoYWRvdzppbmhlcml0O3RleHQtdHJhbnNmb3JtOmluaGVyaXQ7dmVydGljYWwtYWxpZ246aW5oZXJpdDt3aGl0ZS1zcGFjZTppbmhlcml0fS50b3ggOm5vdChzdmcpOm5vdChyZWN0KXtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MDtmbG9hdDpub25lO2hlaWdodDphdXRvO21hcmdpbjowO21heC13aWR0aDpub25lO291dGxpbmU6MDtwYWRkaW5nOjA7cG9zaXRpb246c3RhdGljO3dpZHRoOmF1dG99LnRveDpub3QoW2Rpcj1ydGxdKXtkaXJlY3Rpb246bHRyO3RleHQtYWxpZ246bGVmdH0udG94W2Rpcj1ydGxde2RpcmVjdGlvbjpydGw7dGV4dC1hbGlnbjpyaWdodH0udG94LXRpbnltY2V7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2JvcmRlci1yYWRpdXM6MDtib3gtc2hhZG93Om5vbmU7Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Zm9udC1mYW1pbHk6LWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsIlNlZ29lIFVJIixSb2JvdG8sT3h5Z2VuLVNhbnMsVWJ1bnR1LENhbnRhcmVsbCwiSGVsdmV0aWNhIE5ldWUiLHNhbnMtc2VyaWY7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlO3Zpc2liaWxpdHk6aW5oZXJpdCFpbXBvcnRhbnR9LnRveC10aW55bWNlLWlubGluZXtib3JkZXI6bm9uZTtib3gtc2hhZG93Om5vbmV9LnRveC10aW55bWNlLWlubGluZSAudG94LWVkaXRvci1oZWFkZXJ7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2JvcmRlci1yYWRpdXM6MDtib3gtc2hhZG93Om5vbmV9LnRveC10aW55bWNlLWF1eHtmb250LWZhbWlseTotYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwiU2Vnb2UgVUkiLFJvYm90byxPeHlnZW4tU2FucyxVYnVudHUsQ2FudGFyZWxsLCJIZWx2ZXRpY2EgTmV1ZSIsc2Fucy1zZXJpZjt6LWluZGV4OjEzMDB9LnRveC10aW55bWNlIDpmb2N1cywudG94LXRpbnltY2UtYXV4IDpmb2N1c3tvdXRsaW5lOjB9YnV0dG9uOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS50b3ggLmFjY2Vzc2liaWxpdHktaXNzdWVfX2hlYWRlcnthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O21hcmdpbi1ib3R0b206NHB4fS50b3ggLmFjY2Vzc2liaWxpdHktaXNzdWVfX2Rlc2NyaXB0aW9ue2FsaWduLWl0ZW1zOnN0cmV0Y2g7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2JvcmRlci1yYWRpdXM6M3B4O2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn0udG94IC5hY2Nlc3NpYmlsaXR5LWlzc3VlX19kZXNjcmlwdGlvbj5kaXZ7cGFkZGluZy1ib3R0b206NHB4fS50b3ggLmFjY2Vzc2liaWxpdHktaXNzdWVfX2Rlc2NyaXB0aW9uPmRpdj5kaXZ7YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDttYXJnaW4tYm90dG9tOjRweH0udG94IC5hY2Nlc3NpYmlsaXR5LWlzc3VlX19kZXNjcmlwdGlvbj46bGFzdC1jaGlsZDpub3QoOm9ubHktY2hpbGQpe2JvcmRlci1jb2xvcjojY2NjO2JvcmRlci1zdHlsZTpzb2xpZH0udG94IC5hY2Nlc3NpYmlsaXR5LWlzc3VlX19yZXBhaXJ7bWFyZ2luLXRvcDoxNnB4fS50b3ggLmFjY2Vzc2liaWxpdHktaXNzdWUtLWluZm8gLmFjY2Vzc2liaWxpdHktaXNzdWVfX2Rlc2NyaXB0aW9ue2JhY2tncm91bmQtY29sb3I6cmdiYSgzMiwxMjIsMTgzLC4xKTtib3JkZXItY29sb3I6cmdiYSgzMiwxMjIsMTgzLC40KTtjb2xvcjojMjIyZjNlfS50b3ggLmFjY2Vzc2liaWxpdHktaXNzdWUtLWluZm8gLmFjY2Vzc2liaWxpdHktaXNzdWVfX2Rlc2NyaXB0aW9uPjpsYXN0LWNoaWxke2JvcmRlci1jb2xvcjpyZ2JhKDMyLDEyMiwxODMsLjQpfS50b3ggLmFjY2Vzc2liaWxpdHktaXNzdWUtLWluZm8gaDJ7Y29sb3I6IzIwN2FiN30udG94IC5hY2Nlc3NpYmlsaXR5LWlzc3VlLS1pbmZvIC50b3gtaWNvbiBzdmd7ZmlsbDojMjA3YWI3fS50b3ggLmFjY2Vzc2liaWxpdHktaXNzdWUtLWluZm8gYSAudG94LWljb257Y29sb3I6IzIwN2FiN30udG94IC5hY2Nlc3NpYmlsaXR5LWlzc3VlLS13YXJuIC5hY2Nlc3NpYmlsaXR5LWlzc3VlX19kZXNjcmlwdGlvbntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE2NSwwLC4xKTtib3JkZXItY29sb3I6cmdiYSgyNTUsMTY1LDAsLjUpO2NvbG9yOiMyMjJmM2V9LnRveCAuYWNjZXNzaWJpbGl0eS1pc3N1ZS0td2FybiAuYWNjZXNzaWJpbGl0eS1pc3N1ZV9fZGVzY3JpcHRpb24+Omxhc3QtY2hpbGR7Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDE2NSwwLC41KX0udG94IC5hY2Nlc3NpYmlsaXR5LWlzc3VlLS13YXJuIGgye2NvbG9yOiNjYzg1MDB9LnRveCAuYWNjZXNzaWJpbGl0eS1pc3N1ZS0td2FybiAudG94LWljb24gc3Zne2ZpbGw6I2NjODUwMH0udG94IC5hY2Nlc3NpYmlsaXR5LWlzc3VlLS13YXJuIGEgLnRveC1pY29ue2NvbG9yOiNjYzg1MDB9LnRveCAuYWNjZXNzaWJpbGl0eS1pc3N1ZS0tZXJyb3IgLmFjY2Vzc2liaWxpdHktaXNzdWVfX2Rlc2NyaXB0aW9ue2JhY2tncm91bmQtY29sb3I6cmdiYSgyMDQsMCwwLC4xKTtib3JkZXItY29sb3I6cmdiYSgyMDQsMCwwLC40KTtjb2xvcjojMjIyZjNlfS50b3ggLmFjY2Vzc2liaWxpdHktaXNzdWUtLWVycm9yIC5hY2Nlc3NpYmlsaXR5LWlzc3VlX19kZXNjcmlwdGlvbj46bGFzdC1jaGlsZHtib3JkZXItY29sb3I6cmdiYSgyMDQsMCwwLC40KX0udG94IC5hY2Nlc3NpYmlsaXR5LWlzc3VlLS1lcnJvciBoMntjb2xvcjojYzAwfS50b3ggLmFjY2Vzc2liaWxpdHktaXNzdWUtLWVycm9yIC50b3gtaWNvbiBzdmd7ZmlsbDojYzAwfS50b3ggLmFjY2Vzc2liaWxpdHktaXNzdWUtLWVycm9yIGEgLnRveC1pY29ue2NvbG9yOiNjMDB9LnRveCAuYWNjZXNzaWJpbGl0eS1pc3N1ZS0tc3VjY2VzcyAuYWNjZXNzaWJpbGl0eS1pc3N1ZV9fZGVzY3JpcHRpb257YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDEyMCwxNzEsNzAsLjEpO2JvcmRlci1jb2xvcjpyZ2JhKDEyMCwxNzEsNzAsLjQpO2NvbG9yOiMyMjJmM2V9LnRveCAuYWNjZXNzaWJpbGl0eS1pc3N1ZS0tc3VjY2VzcyAuYWNjZXNzaWJpbGl0eS1pc3N1ZV9fZGVzY3JpcHRpb24+Omxhc3QtY2hpbGR7Ym9yZGVyLWNvbG9yOnJnYmEoMTIwLDE3MSw3MCwuNCl9LnRveCAuYWNjZXNzaWJpbGl0eS1pc3N1ZS0tc3VjY2VzcyBoMntjb2xvcjojNzhhYjQ2fS50b3ggLmFjY2Vzc2liaWxpdHktaXNzdWUtLXN1Y2Nlc3MgLnRveC1pY29uIHN2Z3tmaWxsOiM3OGFiNDZ9LnRveCAuYWNjZXNzaWJpbGl0eS1pc3N1ZS0tc3VjY2VzcyBhIC50b3gtaWNvbntjb2xvcjojNzhhYjQ2fS50b3ggLnRveC1kaWFsb2dfX2JvZHktY29udGVudCAuYWNjZXNzaWJpbGl0eS1pc3N1ZV9faGVhZGVyIGgxLC50b3ggLnRveC1kaWFsb2dfX2JvZHktY29udGVudCAudG94LWZvcm1fX2dyb3VwIC5hY2Nlc3NpYmlsaXR5LWlzc3VlX19kZXNjcmlwdGlvbiBoMnttYXJnaW4tdG9wOjB9LnRveDpub3QoW2Rpcj1ydGxdKSAuYWNjZXNzaWJpbGl0eS1pc3N1ZV9faGVhZGVyIC50b3gtYnV0dG9ue21hcmdpbi1sZWZ0OjRweH0udG94Om5vdChbZGlyPXJ0bF0pIC5hY2Nlc3NpYmlsaXR5LWlzc3VlX19oZWFkZXI+Om50aC1sYXN0LWNoaWxkKDIpe21hcmdpbi1sZWZ0OmF1dG99LnRveDpub3QoW2Rpcj1ydGxdKSAuYWNjZXNzaWJpbGl0eS1pc3N1ZV9fZGVzY3JpcHRpb257cGFkZGluZzo0cHggNHB4IDRweCA4cHh9LnRveDpub3QoW2Rpcj1ydGxdKSAuYWNjZXNzaWJpbGl0eS1pc3N1ZV9fZGVzY3JpcHRpb24+Omxhc3QtY2hpbGR7Ym9yZGVyLWxlZnQtd2lkdGg6MXB4O3BhZGRpbmctbGVmdDo0cHh9LnRveFtkaXI9cnRsXSAuYWNjZXNzaWJpbGl0eS1pc3N1ZV9faGVhZGVyIC50b3gtYnV0dG9ue21hcmdpbi1yaWdodDo0cHh9LnRveFtkaXI9cnRsXSAuYWNjZXNzaWJpbGl0eS1pc3N1ZV9faGVhZGVyPjpudGgtbGFzdC1jaGlsZCgyKXttYXJnaW4tcmlnaHQ6YXV0b30udG94W2Rpcj1ydGxdIC5hY2Nlc3NpYmlsaXR5LWlzc3VlX19kZXNjcmlwdGlvbntwYWRkaW5nOjRweCA4cHggNHB4IDRweH0udG94W2Rpcj1ydGxdIC5hY2Nlc3NpYmlsaXR5LWlzc3VlX19kZXNjcmlwdGlvbj46bGFzdC1jaGlsZHtib3JkZXItcmlnaHQtd2lkdGg6MXB4O3BhZGRpbmctcmlnaHQ6NHB4fS50b3ggLnRveC1hbmNob3JiYXJ7ZGlzcGxheTpmbGV4O2ZsZXg6MCAwIGF1dG99LnRveCAudG94LWJhcntkaXNwbGF5OmZsZXg7ZmxleDowIDAgYXV0b30udG94IC50b3gtYnV0dG9ue2JhY2tncm91bmQtY29sb3I6IzIwN2FiNztiYWNrZ3JvdW5kLWltYWdlOm5vbmU7YmFja2dyb3VuZC1wb3NpdGlvbjowIDA7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0O2JvcmRlci1jb2xvcjojMjA3YWI3O2JvcmRlci1yYWRpdXM6M3B4O2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6MXB4O2JveC1zaGFkb3c6bm9uZTtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y29sb3I6I2ZmZjtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jaztmb250LWZhbWlseTotYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwiU2Vnb2UgVUkiLFJvYm90byxPeHlnZW4tU2FucyxVYnVudHUsQ2FudGFyZWxsLCJIZWx2ZXRpY2EgTmV1ZSIsc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo3MDA7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO2xpbmUtaGVpZ2h0OjI0cHg7bWFyZ2luOjA7b3V0bGluZTowO3BhZGRpbmc6NHB4IDE2cHg7dGV4dC1hbGlnbjpjZW50ZXI7dGV4dC1kZWNvcmF0aW9uOm5vbmU7dGV4dC10cmFuc2Zvcm06Y2FwaXRhbGl6ZTt3aGl0ZS1zcGFjZTpub3dyYXB9LnRveCAudG94LWJ1dHRvbltkaXNhYmxlZF17YmFja2dyb3VuZC1jb2xvcjojMjA3YWI3O2JhY2tncm91bmQtaW1hZ2U6bm9uZTtib3JkZXItY29sb3I6IzIwN2FiNztib3gtc2hhZG93Om5vbmU7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSk7Y3Vyc29yOm5vdC1hbGxvd2VkfS50b3ggLnRveC1idXR0b246Zm9jdXM6bm90KDpkaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjojMWM2Y2ExO2JhY2tncm91bmQtaW1hZ2U6bm9uZTtib3JkZXItY29sb3I6IzFjNmNhMTtib3gtc2hhZG93Om5vbmU7Y29sb3I6I2ZmZn0udG94IC50b3gtYnV0dG9uOmhvdmVyOm5vdCg6ZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6IzFjNmNhMTtiYWNrZ3JvdW5kLWltYWdlOm5vbmU7Ym9yZGVyLWNvbG9yOiMxYzZjYTE7Ym94LXNoYWRvdzpub25lO2NvbG9yOiNmZmZ9LnRveCAudG94LWJ1dHRvbjphY3RpdmU6bm90KDpkaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjojMTg1ZDhjO2JhY2tncm91bmQtaW1hZ2U6bm9uZTtib3JkZXItY29sb3I6IzE4NWQ4Yztib3gtc2hhZG93Om5vbmU7Y29sb3I6I2ZmZn0udG94IC50b3gtYnV0dG9uLS1zZWNvbmRhcnl7YmFja2dyb3VuZC1jb2xvcjojZjBmMGYwO2JhY2tncm91bmQtaW1hZ2U6bm9uZTtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgMDtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQ7Ym9yZGVyLWNvbG9yOiNmMGYwZjA7Ym9yZGVyLXJhZGl1czozcHg7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDoxcHg7Ym94LXNoYWRvdzpub25lO2NvbG9yOiMyMjJmM2U7b3V0bGluZTowO3BhZGRpbmc6NHB4IDE2cHg7dGV4dC1kZWNvcmF0aW9uOm5vbmU7dGV4dC10cmFuc2Zvcm06Y2FwaXRhbGl6ZX0udG94IC50b3gtYnV0dG9uLS1zZWNvbmRhcnlbZGlzYWJsZWRde2JhY2tncm91bmQtY29sb3I6I2YwZjBmMDtiYWNrZ3JvdW5kLWltYWdlOm5vbmU7Ym9yZGVyLWNvbG9yOiNmMGYwZjA7Ym94LXNoYWRvdzpub25lO2NvbG9yOnJnYmEoMzQsNDcsNjIsLjUpfS50b3ggLnRveC1idXR0b24tLXNlY29uZGFyeTpmb2N1czpub3QoOmRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOiNlM2UzZTM7YmFja2dyb3VuZC1pbWFnZTpub25lO2JvcmRlci1jb2xvcjojZTNlM2UzO2JveC1zaGFkb3c6bm9uZTtjb2xvcjojMjIyZjNlfS50b3ggLnRveC1idXR0b24tLXNlY29uZGFyeTpob3Zlcjpub3QoOmRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOiNlM2UzZTM7YmFja2dyb3VuZC1pbWFnZTpub25lO2JvcmRlci1jb2xvcjojZTNlM2UzO2JveC1zaGFkb3c6bm9uZTtjb2xvcjojMjIyZjNlfS50b3ggLnRveC1idXR0b24tLXNlY29uZGFyeTphY3RpdmU6bm90KDpkaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjojZDZkNmQ2O2JhY2tncm91bmQtaW1hZ2U6bm9uZTtib3JkZXItY29sb3I6I2Q2ZDZkNjtib3gtc2hhZG93Om5vbmU7Y29sb3I6IzIyMmYzZX0udG94IC50b3gtYnV0dG9uLS1pY29uLC50b3ggLnRveC1idXR0b24udG94LWJ1dHRvbi0taWNvbiwudG94IC50b3gtYnV0dG9uLnRveC1idXR0b24tLXNlY29uZGFyeS50b3gtYnV0dG9uLS1pY29ue3BhZGRpbmc6NHB4fS50b3ggLnRveC1idXR0b24tLWljb24gLnRveC1pY29uIHN2ZywudG94IC50b3gtYnV0dG9uLnRveC1idXR0b24tLWljb24gLnRveC1pY29uIHN2ZywudG94IC50b3gtYnV0dG9uLnRveC1idXR0b24tLXNlY29uZGFyeS50b3gtYnV0dG9uLS1pY29uIC50b3gtaWNvbiBzdmd7ZGlzcGxheTpibG9jaztmaWxsOmN1cnJlbnRDb2xvcn0udG94IC50b3gtYnV0dG9uLWxpbmt7YmFja2dyb3VuZDowO2JvcmRlcjpub25lO2JveC1zaXppbmc6Ym9yZGVyLWJveDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jaztmb250LWZhbWlseTotYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwiU2Vnb2UgVUkiLFJvYm90byxPeHlnZW4tU2FucyxVYnVudHUsQ2FudGFyZWxsLCJIZWx2ZXRpY2EgTmV1ZSIsc2Fucy1zZXJpZjtmb250LXNpemU6MTZweDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4zO21hcmdpbjowO3BhZGRpbmc6MDt3aGl0ZS1zcGFjZTpub3dyYXB9LnRveCAudG94LWJ1dHRvbi1saW5rLS1zbXtmb250LXNpemU6MTRweH0udG94IC50b3gtYnV0dG9uLS1uYWtlZHtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudDtib3gtc2hhZG93OnVuc2V0O2NvbG9yOiMyMjJmM2V9LnRveCAudG94LWJ1dHRvbi0tbmFrZWRbZGlzYWJsZWRde2JhY2tncm91bmQtY29sb3I6I2YwZjBmMDtib3JkZXItY29sb3I6I2YwZjBmMDtib3gtc2hhZG93Om5vbmU7Y29sb3I6cmdiYSgzNCw0Nyw2MiwuNSl9LnRveCAudG94LWJ1dHRvbi0tbmFrZWQ6aG92ZXI6bm90KDpkaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjojZTNlM2UzO2JvcmRlci1jb2xvcjojZTNlM2UzO2JveC1zaGFkb3c6bm9uZTtjb2xvcjojMjIyZjNlfS50b3ggLnRveC1idXR0b24tLW5ha2VkOmZvY3VzOm5vdCg6ZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6I2UzZTNlMztib3JkZXItY29sb3I6I2UzZTNlMztib3gtc2hhZG93Om5vbmU7Y29sb3I6IzIyMmYzZX0udG94IC50b3gtYnV0dG9uLS1uYWtlZDphY3RpdmU6bm90KDpkaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjojZDZkNmQ2O2JvcmRlci1jb2xvcjojZDZkNmQ2O2JveC1zaGFkb3c6bm9uZTtjb2xvcjojMjIyZjNlfS50b3ggLnRveC1idXR0b24tLW5ha2VkIC50b3gtaWNvbiBzdmd7ZmlsbDpjdXJyZW50Q29sb3J9LnRveCAudG94LWJ1dHRvbi0tbmFrZWQudG94LWJ1dHRvbi0taWNvbjpob3Zlcjpub3QoOmRpc2FibGVkKXtjb2xvcjojMjIyZjNlfS50b3ggLnRveC1jaGVja2JveHthbGlnbi1pdGVtczpjZW50ZXI7Ym9yZGVyLXJhZGl1czozcHg7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpmbGV4O2hlaWdodDozNnB4O21pbi13aWR0aDozNnB4fS50b3ggLnRveC1jaGVja2JveF9faW5wdXR7aGVpZ2h0OjFweDtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246YWJzb2x1dGU7dG9wOmF1dG87d2lkdGg6MXB4fS50b3ggLnRveC1jaGVja2JveF9faWNvbnN7YWxpZ24taXRlbXM6Y2VudGVyO2JvcmRlci1yYWRpdXM6M3B4O2JveC1zaGFkb3c6MCAwIDAgMnB4IHRyYW5zcGFyZW50O2JveC1zaXppbmc6Y29udGVudC1ib3g7ZGlzcGxheTpmbGV4O2hlaWdodDoyNHB4O2p1c3RpZnktY29udGVudDpjZW50ZXI7cGFkZGluZzpjYWxjKDRweCAtIDFweCk7d2lkdGg6MjRweH0udG94IC50b3gtY2hlY2tib3hfX2ljb25zIC50b3gtY2hlY2tib3gtaWNvbl9fdW5jaGVja2VkIHN2Z3tkaXNwbGF5OmJsb2NrO2ZpbGw6cmdiYSgzNCw0Nyw2MiwuMyl9LnRveCAudG94LWNoZWNrYm94X19pY29ucyAudG94LWNoZWNrYm94LWljb25fX2luZGV0ZXJtaW5hdGUgc3Zne2Rpc3BsYXk6bm9uZTtmaWxsOiMyMDdhYjd9LnRveCAudG94LWNoZWNrYm94X19pY29ucyAudG94LWNoZWNrYm94LWljb25fX2NoZWNrZWQgc3Zne2Rpc3BsYXk6bm9uZTtmaWxsOiMyMDdhYjd9LnRveCAudG94LWNoZWNrYm94LS1kaXNhYmxlZHtjb2xvcjpyZ2JhKDM0LDQ3LDYyLC41KTtjdXJzb3I6bm90LWFsbG93ZWR9LnRveCAudG94LWNoZWNrYm94LS1kaXNhYmxlZCAudG94LWNoZWNrYm94X19pY29ucyAudG94LWNoZWNrYm94LWljb25fX2NoZWNrZWQgc3Zne2ZpbGw6cmdiYSgzNCw0Nyw2MiwuNSl9LnRveCAudG94LWNoZWNrYm94LS1kaXNhYmxlZCAudG94LWNoZWNrYm94X19pY29ucyAudG94LWNoZWNrYm94LWljb25fX3VuY2hlY2tlZCBzdmd7ZmlsbDpyZ2JhKDM0LDQ3LDYyLC41KX0udG94IC50b3gtY2hlY2tib3gtLWRpc2FibGVkIC50b3gtY2hlY2tib3hfX2ljb25zIC50b3gtY2hlY2tib3gtaWNvbl9faW5kZXRlcm1pbmF0ZSBzdmd7ZmlsbDpyZ2JhKDM0LDQ3LDYyLC41KX0udG94IGlucHV0LnRveC1jaGVja2JveF9faW5wdXQ6Y2hlY2tlZCsudG94LWNoZWNrYm94X19pY29ucyAudG94LWNoZWNrYm94LWljb25fX3VuY2hlY2tlZCBzdmd7ZGlzcGxheTpub25lfS50b3ggaW5wdXQudG94LWNoZWNrYm94X19pbnB1dDpjaGVja2VkKy50b3gtY2hlY2tib3hfX2ljb25zIC50b3gtY2hlY2tib3gtaWNvbl9fY2hlY2tlZCBzdmd7ZGlzcGxheTpibG9ja30udG94IGlucHV0LnRveC1jaGVja2JveF9faW5wdXQ6aW5kZXRlcm1pbmF0ZSsudG94LWNoZWNrYm94X19pY29ucyAudG94LWNoZWNrYm94LWljb25fX3VuY2hlY2tlZCBzdmd7ZGlzcGxheTpub25lfS50b3ggaW5wdXQudG94LWNoZWNrYm94X19pbnB1dDppbmRldGVybWluYXRlKy50b3gtY2hlY2tib3hfX2ljb25zIC50b3gtY2hlY2tib3gtaWNvbl9faW5kZXRlcm1pbmF0ZSBzdmd7ZGlzcGxheTpibG9ja30udG94IGlucHV0LnRveC1jaGVja2JveF9faW5wdXQ6Zm9jdXMrLnRveC1jaGVja2JveF9faWNvbnN7Ym9yZGVyLXJhZGl1czozcHg7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggIzIwN2FiNztwYWRkaW5nOmNhbGMoNHB4IC0gMXB4KX0udG94Om5vdChbZGlyPXJ0bF0pIC50b3gtY2hlY2tib3hfX2xhYmVse21hcmdpbi1sZWZ0OjRweH0udG94Om5vdChbZGlyPXJ0bF0pIC50b3gtY2hlY2tib3hfX2lucHV0e2xlZnQ6LTEwMDAwcHh9LnRveDpub3QoW2Rpcj1ydGxdKSAudG94LWJhciAudG94LWNoZWNrYm94e21hcmdpbi1sZWZ0OjRweH0udG94W2Rpcj1ydGxdIC50b3gtY2hlY2tib3hfX2xhYmVse21hcmdpbi1yaWdodDo0cHh9LnRveFtkaXI9cnRsXSAudG94LWNoZWNrYm94X19pbnB1dHtyaWdodDotMTAwMDBweH0udG94W2Rpcj1ydGxdIC50b3gtYmFyIC50b3gtY2hlY2tib3h7bWFyZ2luLXJpZ2h0OjRweH0udG94IC50b3gtY29sbGVjdGlvbi0tdG9vbGJhciAudG94LWNvbGxlY3Rpb25fX2dyb3Vwe2Rpc3BsYXk6ZmxleDtwYWRkaW5nOjB9LnRveCAudG94LWNvbGxlY3Rpb24tLWdyaWQgLnRveC1jb2xsZWN0aW9uX19ncm91cHtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7bWF4LWhlaWdodDoyMDhweDtvdmVyZmxvdy14OmhpZGRlbjtvdmVyZmxvdy15OmF1dG87cGFkZGluZzowfS50b3ggLnRveC1jb2xsZWN0aW9uLS1saXN0IC50b3gtY29sbGVjdGlvbl9fZ3JvdXB7Ym9yZGVyLWJvdHRvbS13aWR0aDowO2JvcmRlci1jb2xvcjojY2NjO2JvcmRlci1sZWZ0LXdpZHRoOjA7Ym9yZGVyLXJpZ2h0LXdpZHRoOjA7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci10b3Atd2lkdGg6MXB4O3BhZGRpbmc6NHB4IDB9LnRveCAudG94LWNvbGxlY3Rpb24tLWxpc3QgLnRveC1jb2xsZWN0aW9uX19ncm91cDpmaXJzdC1jaGlsZHtib3JkZXItdG9wLXdpZHRoOjB9LnRveCAudG94LWNvbGxlY3Rpb25fX2dyb3VwLWhlYWRpbmd7YmFja2dyb3VuZC1jb2xvcjojZTZlNmU2O2NvbG9yOnJnYmEoMzQsNDcsNjIsLjcpO2N1cnNvcjpkZWZhdWx0O2ZvbnQtc2l6ZToxMnB4O2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjQwMDttYXJnaW4tYm90dG9tOjRweDttYXJnaW4tdG9wOi00cHg7cGFkZGluZzo0cHggOHB4O3RleHQtdHJhbnNmb3JtOm5vbmU7LXdlYmtpdC10b3VjaC1jYWxsb3V0Om5vbmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lfS50b3ggLnRveC1jb2xsZWN0aW9uX19pdGVte2FsaWduLWl0ZW1zOmNlbnRlcjtjb2xvcjojMjIyZjNlO2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6ZmxleDstd2Via2l0LXRvdWNoLWNhbGxvdXQ6bm9uZTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmV9LnRveCAudG94LWNvbGxlY3Rpb24tLWxpc3QgLnRveC1jb2xsZWN0aW9uX19pdGVte3BhZGRpbmc6NHB4IDhweH0udG94IC50b3gtY29sbGVjdGlvbi0tdG9vbGJhciAudG94LWNvbGxlY3Rpb25fX2l0ZW17Ym9yZGVyLXJhZGl1czozcHg7cGFkZGluZzo0cHh9LnRveCAudG94LWNvbGxlY3Rpb24tLWdyaWQgLnRveC1jb2xsZWN0aW9uX19pdGVte2JvcmRlci1yYWRpdXM6M3B4O3BhZGRpbmc6NHB4fS50b3ggLnRveC1jb2xsZWN0aW9uLS1saXN0IC50b3gtY29sbGVjdGlvbl9faXRlbS0tZW5hYmxlZHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6IzIyMmYzZX0udG94IC50b3gtY29sbGVjdGlvbi0tbGlzdCAudG94LWNvbGxlY3Rpb25fX2l0ZW0tLWFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOiNkZWUwZTJ9LnRveCAudG94LWNvbGxlY3Rpb24tLXRvb2xiYXIgLnRveC1jb2xsZWN0aW9uX19pdGVtLS1lbmFibGVke2JhY2tncm91bmQtY29sb3I6I2M4Y2JjZjtjb2xvcjojMjIyZjNlfS50b3ggLnRveC1jb2xsZWN0aW9uLS10b29sYmFyIC50b3gtY29sbGVjdGlvbl9faXRlbS0tYWN0aXZle2JhY2tncm91bmQtY29sb3I6I2RlZTBlMn0udG94IC50b3gtY29sbGVjdGlvbi0tZ3JpZCAudG94LWNvbGxlY3Rpb25fX2l0ZW0tLWVuYWJsZWR7YmFja2dyb3VuZC1jb2xvcjojYzhjYmNmO2NvbG9yOiMyMjJmM2V9LnRveCAudG94LWNvbGxlY3Rpb24tLWdyaWQgLnRveC1jb2xsZWN0aW9uX19pdGVtLS1hY3RpdmU6bm90KC50b3gtY29sbGVjdGlvbl9faXRlbS0tc3RhdGUtZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6I2RlZTBlMjtjb2xvcjojMjIyZjNlfS50b3ggLnRveC1jb2xsZWN0aW9uLS1saXN0IC50b3gtY29sbGVjdGlvbl9faXRlbS0tYWN0aXZlOm5vdCgudG94LWNvbGxlY3Rpb25fX2l0ZW0tLXN0YXRlLWRpc2FibGVkKXtjb2xvcjojMjIyZjNlfS50b3ggLnRveC1jb2xsZWN0aW9uLS10b29sYmFyIC50b3gtY29sbGVjdGlvbl9faXRlbS0tYWN0aXZlOm5vdCgudG94LWNvbGxlY3Rpb25fX2l0ZW0tLXN0YXRlLWRpc2FibGVkKXtjb2xvcjojMjIyZjNlfS50b3ggLnRveC1jb2xsZWN0aW9uX19pdGVtLS1zdGF0ZS1kaXNhYmxlZHtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2NvbG9yOnJnYmEoMzQsNDcsNjIsLjUpO2N1cnNvcjpub3QtYWxsb3dlZH0udG94IC50b3gtY29sbGVjdGlvbl9faXRlbS1jaGVja21hcmssLnRveCAudG94LWNvbGxlY3Rpb25fX2l0ZW0taWNvbnthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2hlaWdodDoyNHB4O2p1c3RpZnktY29udGVudDpjZW50ZXI7d2lkdGg6MjRweH0udG94IC50b3gtY29sbGVjdGlvbl9faXRlbS1jaGVja21hcmsgc3ZnLC50b3ggLnRveC1jb2xsZWN0aW9uX19pdGVtLWljb24gc3Zne2ZpbGw6Y3VycmVudENvbG9yfS50b3ggLnRveC1jb2xsZWN0aW9uLS10b29sYmFyLWxnIC50b3gtY29sbGVjdGlvbl9faXRlbS1pY29ue2hlaWdodDo0OHB4O3dpZHRoOjQ4cHh9LnRveCAudG94LWNvbGxlY3Rpb25fX2l0ZW0tbGFiZWx7Y29sb3I6Y3VycmVudENvbG9yO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZsZXg6MTstbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTphdXRvO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoyNHB4O3RleHQtdHJhbnNmb3JtOm5vbmU7d29yZC1icmVhazpicmVhay1hbGx9LnRveCAudG94LWNvbGxlY3Rpb25fX2l0ZW0tYWNjZXNzb3J5e2NvbG9yOnJnYmEoMzQsNDcsNjIsLjcpO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZvbnQtc2l6ZToxNHB4O2hlaWdodDoyNHB4O2xpbmUtaGVpZ2h0OjI0cHg7dGV4dC10cmFuc2Zvcm06bm9uZX0udG94IC50b3gtY29sbGVjdGlvbl9faXRlbS1jYXJldHthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O21pbi1oZWlnaHQ6MjRweH0udG94IC50b3gtY29sbGVjdGlvbl9faXRlbS1jYXJldDo6YWZ0ZXJ7Y29udGVudDonJztmb250LXNpemU6MDttaW4taGVpZ2h0OmluaGVyaXR9LnRveCAudG94LWNvbGxlY3Rpb25fX2l0ZW0tY2FyZXQgc3Zne2ZpbGw6IzIyMmYzZX0udG94IC50b3gtY29sbGVjdGlvbi0tbGlzdCAudG94LWNvbGxlY3Rpb25fX2l0ZW06bm90KC50b3gtY29sbGVjdGlvbl9faXRlbS0tZW5hYmxlZCkgLnRveC1jb2xsZWN0aW9uX19pdGVtLWNoZWNrbWFyayBzdmd7ZGlzcGxheTpub25lfS50b3ggLnRveC1jb2xsZWN0aW9uLS1saXN0IC50b3gtY29sbGVjdGlvbl9faXRlbTpub3QoLnRveC1jb2xsZWN0aW9uX19pdGVtLS1lbmFibGVkKSAudG94LWNvbGxlY3Rpb25fX2l0ZW0tYWNjZXNzb3J5Ky50b3gtY29sbGVjdGlvbl9faXRlbS1jaGVja21hcmt7ZGlzcGxheTpub25lfS50b3ggLnRveC1jb2xsZWN0aW9uLS1ob3Jpem9udGFse2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNjY2M7Ym9yZGVyLXJhZGl1czozcHg7Ym94LXNoYWRvdzowIDFweCAzcHggcmdiYSgwLDAsMCwuMTUpO2Rpc3BsYXk6ZmxleDtmbGV4OjAgMCBhdXRvO2ZsZXgtc2hyaW5rOjA7ZmxleC13cmFwOm5vd3JhcDttYXJnaW4tYm90dG9tOjA7b3ZlcmZsb3cteDphdXRvO3BhZGRpbmc6MH0udG94IC50b3gtY29sbGVjdGlvbi0taG9yaXpvbnRhbCAudG94LWNvbGxlY3Rpb25fX2dyb3Vwe2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOm5vd3JhcDttYXJnaW46MDtwYWRkaW5nOjAgNHB4fS50b3ggLnRveC1jb2xsZWN0aW9uLS1ob3Jpem9udGFsIC50b3gtY29sbGVjdGlvbl9faXRlbXtoZWlnaHQ6MzRweDttYXJnaW46MnB4IDAgM3B4IDA7cGFkZGluZzowIDRweH0udG94IC50b3gtY29sbGVjdGlvbi0taG9yaXpvbnRhbCAudG94LWNvbGxlY3Rpb25fX2l0ZW0tbGFiZWx7d2hpdGUtc3BhY2U6bm93cmFwfS50b3ggLnRveC1jb2xsZWN0aW9uLS1ob3Jpem9udGFsIC50b3gtY29sbGVjdGlvbl9faXRlbS1jYXJldHttYXJnaW4tbGVmdDo0cHh9LnRveDpub3QoW2Rpcj1ydGxdKSAudG94LWNvbGxlY3Rpb24tLWhvcml6b250YWwgLnRveC1jb2xsZWN0aW9uX19ncm91cDpub3QoOmxhc3Qtb2YtdHlwZSl7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjY2NjfS50b3g6bm90KFtkaXI9cnRsXSkgLnRveC1jb2xsZWN0aW9uLS1saXN0IC50b3gtY29sbGVjdGlvbl9faXRlbT46bm90KDpmaXJzdC1jaGlsZCl7bWFyZ2luLWxlZnQ6OHB4fS50b3g6bm90KFtkaXI9cnRsXSkgLnRveC1jb2xsZWN0aW9uLS1saXN0IC50b3gtY29sbGVjdGlvbl9faXRlbS1sYWJlbDpmaXJzdC1jaGlsZHttYXJnaW4tbGVmdDo0cHh9LnRveDpub3QoW2Rpcj1ydGxdKSAudG94LWNvbGxlY3Rpb25fX2l0ZW0tYWNjZXNzb3J5e21hcmdpbi1sZWZ0OjE2cHg7dGV4dC1hbGlnbjpyaWdodH0udG94Om5vdChbZGlyPXJ0bF0pIC50b3gtY29sbGVjdGlvbiAudG94LWNvbGxlY3Rpb25fX2l0ZW0tY2FyZXR7bWFyZ2luLWxlZnQ6MTZweH0udG94W2Rpcj1ydGxdIC50b3gtY29sbGVjdGlvbi0taG9yaXpvbnRhbCAudG94LWNvbGxlY3Rpb25fX2dyb3VwOm5vdCg6bGFzdC1vZi10eXBlKXtib3JkZXItbGVmdDoxcHggc29saWQgI2NjY30udG94W2Rpcj1ydGxdIC50b3gtY29sbGVjdGlvbi0tbGlzdCAudG94LWNvbGxlY3Rpb25fX2l0ZW0+Om5vdCg6Zmlyc3QtY2hpbGQpe21hcmdpbi1yaWdodDo4cHh9LnRveFtkaXI9cnRsXSAudG94LWNvbGxlY3Rpb24tLWxpc3QgLnRveC1jb2xsZWN0aW9uX19pdGVtLWxhYmVsOmZpcnN0LWNoaWxke21hcmdpbi1yaWdodDo0cHh9LnRveFtkaXI9cnRsXSAudG94LWNvbGxlY3Rpb25fX2l0ZW0taWNvbi1ydGwgLnRveC1jb2xsZWN0aW9uX19pdGVtLWljb24gc3Zne3RyYW5zZm9ybTpyb3RhdGVZKDE4MGRlZyl9LnRveFtkaXI9cnRsXSAudG94LWNvbGxlY3Rpb25fX2l0ZW0tYWNjZXNzb3J5e21hcmdpbi1yaWdodDoxNnB4O3RleHQtYWxpZ246bGVmdH0udG94W2Rpcj1ydGxdIC50b3gtY29sbGVjdGlvbiAudG94LWNvbGxlY3Rpb25fX2l0ZW0tY2FyZXR7bWFyZ2luLXJpZ2h0OjE2cHg7dHJhbnNmb3JtOnJvdGF0ZVkoMTgwZGVnKX0udG94W2Rpcj1ydGxdIC50b3gtY29sbGVjdGlvbi0taG9yaXpvbnRhbCAudG94LWNvbGxlY3Rpb25fX2l0ZW0tY2FyZXR7bWFyZ2luLXJpZ2h0OjRweH0udG94IC50b3gtY29sb3ItcGlja2VyLWNvbnRhaW5lcntkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93O2hlaWdodDoyMjVweDttYXJnaW46MH0udG94IC50b3gtc3YtcGFsZXR0ZXtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTpmbGV4O2hlaWdodDoxMDAlfS50b3ggLnRveC1zdi1wYWxldHRlLXNwZWN0cnVte2hlaWdodDoxMDAlfS50b3ggLnRveC1zdi1wYWxldHRlLC50b3ggLnRveC1zdi1wYWxldHRlLXNwZWN0cnVte3dpZHRoOjIyNXB4fS50b3ggLnRveC1zdi1wYWxldHRlLXRodW1ie2JhY2tncm91bmQ6MCAwO2JvcmRlcjoxcHggc29saWQgIzAwMDtib3JkZXItcmFkaXVzOjUwJTtib3gtc2l6aW5nOmNvbnRlbnQtYm94O2hlaWdodDoxMnB4O3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjEycHh9LnRveCAudG94LXN2LXBhbGV0dGUtaW5uZXItdGh1bWJ7Ym9yZGVyOjFweCBzb2xpZCAjZmZmO2JvcmRlci1yYWRpdXM6NTAlO2hlaWdodDoxMHB4O3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjEwcHh9LnRveCAudG94LWh1ZS1zbGlkZXJ7Ym94LXNpemluZzpib3JkZXItYm94O2hlaWdodDoxMDAlO3dpZHRoOjI1cHh9LnRveCAudG94LWh1ZS1zbGlkZXItc3BlY3RydW17YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLHJlZCwjZmYwMDgwLCNmMGYsIzgwMDBmZiwjMDBmLCMwMDgwZmYsIzBmZiwjMDBmZjgwLCMwZjAsIzgwZmYwMCwjZmYwLCNmZjgwMDAscmVkKTtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS50b3ggLnRveC1odWUtc2xpZGVyLC50b3ggLnRveC1odWUtc2xpZGVyLXNwZWN0cnVte3dpZHRoOjIwcHh9LnRveCAudG94LWh1ZS1zbGlkZXItdGh1bWJ7YmFja2dyb3VuZDojZmZmO2JvcmRlcjoxcHggc29saWQgIzAwMDtib3gtc2l6aW5nOmNvbnRlbnQtYm94O2hlaWdodDo0cHg7d2lkdGg6MTAwJX0udG94IC50b3gtcmdiLWZvcm17ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn0udG94IC50b3gtcmdiLWZvcm0gZGl2e2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47bWFyZ2luLWJvdHRvbTo1cHg7d2lkdGg6aW5oZXJpdH0udG94IC50b3gtcmdiLWZvcm0gaW5wdXR7d2lkdGg6NmVtfS50b3ggLnRveC1yZ2ItZm9ybSBpbnB1dC50b3gtaW52YWxpZHtib3JkZXI6MXB4IHNvbGlkIHJlZCFpbXBvcnRhbnR9LnRveCAudG94LXJnYi1mb3JtIC50b3gtcmdiYS1wcmV2aWV3e2JvcmRlcjoxcHggc29saWQgIzAwMDtmbGV4LWdyb3c6MjttYXJnaW4tYm90dG9tOjB9LnRveDpub3QoW2Rpcj1ydGxdKSAudG94LXN2LXBhbGV0dGV7bWFyZ2luLXJpZ2h0OjE1cHh9LnRveDpub3QoW2Rpcj1ydGxdKSAudG94LWh1ZS1zbGlkZXJ7bWFyZ2luLXJpZ2h0OjE1cHh9LnRveDpub3QoW2Rpcj1ydGxdKSAudG94LWh1ZS1zbGlkZXItdGh1bWJ7bWFyZ2luLWxlZnQ6LTFweH0udG94Om5vdChbZGlyPXJ0bF0pIC50b3gtcmdiLWZvcm0gbGFiZWx7bWFyZ2luLXJpZ2h0Oi41ZW19LnRveFtkaXI9cnRsXSAudG94LXN2LXBhbGV0dGV7bWFyZ2luLWxlZnQ6MTVweH0udG94W2Rpcj1ydGxdIC50b3gtaHVlLXNsaWRlcnttYXJnaW4tbGVmdDoxNXB4fS50b3hbZGlyPXJ0bF0gLnRveC1odWUtc2xpZGVyLXRodW1ie21hcmdpbi1yaWdodDotMXB4fS50b3hbZGlyPXJ0bF0gLnRveC1yZ2ItZm9ybSBsYWJlbHttYXJnaW4tbGVmdDouNWVtfS50b3ggLnRveC10b29sYmFyIC50b3gtc3dhdGNoZXMsLnRveCAudG94LXRvb2xiYXJfX292ZXJmbG93IC50b3gtc3dhdGNoZXMsLnRveCAudG94LXRvb2xiYXJfX3ByaW1hcnkgLnRveC1zd2F0Y2hlc3ttYXJnaW46MnB4IDAgM3B4IDRweH0udG94IC50b3gtY29sbGVjdGlvbi0tbGlzdCAudG94LWNvbGxlY3Rpb25fX2dyb3VwIC50b3gtc3dhdGNoZXMtbWVudXtib3JkZXI6MDttYXJnaW46LTRweCAwfS50b3ggLnRveC1zd2F0Y2hlc19fcm93e2Rpc3BsYXk6ZmxleH0udG94IC50b3gtc3dhdGNoe2hlaWdodDozMHB4O3RyYW5zaXRpb246dHJhbnNmb3JtIC4xNXMsYm94LXNoYWRvdyAuMTVzO3dpZHRoOjMwcHh9LnRveCAudG94LXN3YXRjaDpmb2N1cywudG94IC50b3gtc3dhdGNoOmhvdmVye2JveC1zaGFkb3c6MCAwIDAgMXB4IHJnYmEoMTI3LDEyNywxMjcsLjMpIGluc2V0O3RyYW5zZm9ybTpzY2FsZSguOCl9LnRveCAudG94LXN3YXRjaC0tcmVtb3Zle2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcn0udG94IC50b3gtc3dhdGNoLS1yZW1vdmUgc3ZnIHBhdGh7c3Ryb2tlOiNlNzRjM2N9LnRveCAudG94LXN3YXRjaGVzX19waWNrZXItYnRue2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlcjowO2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6ZmxleDtoZWlnaHQ6MzBweDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO291dGxpbmU6MDtwYWRkaW5nOjA7d2lkdGg6MzBweH0udG94IC50b3gtc3dhdGNoZXNfX3BpY2tlci1idG4gc3Zne2hlaWdodDoyNHB4O3dpZHRoOjI0cHh9LnRveCAudG94LXN3YXRjaGVzX19waWNrZXItYnRuOmhvdmVye2JhY2tncm91bmQ6I2RlZTBlMn0udG94Om5vdChbZGlyPXJ0bF0pIC50b3gtc3dhdGNoZXNfX3BpY2tlci1idG57bWFyZ2luLWxlZnQ6YXV0b30udG94W2Rpcj1ydGxdIC50b3gtc3dhdGNoZXNfX3BpY2tlci1idG57bWFyZ2luLXJpZ2h0OmF1dG99LnRveCAudG94LWNvbW1lbnQtdGhyZWFke2JhY2tncm91bmQ6I2ZmZjtwb3NpdGlvbjpyZWxhdGl2ZX0udG94IC50b3gtY29tbWVudC10aHJlYWQ+Om5vdCg6Zmlyc3QtY2hpbGQpe21hcmdpbi10b3A6OHB4fS50b3ggLnRveC1jb21tZW50e2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNjY2M7Ym9yZGVyLXJhZGl1czozcHg7Ym94LXNoYWRvdzowIDRweCA4cHggMCByZ2JhKDM0LDQ3LDYyLC4xKTtwYWRkaW5nOjhweCA4cHggMTZweCA4cHg7cG9zaXRpb246cmVsYXRpdmV9LnRveCAudG94LWNvbW1lbnRfX2hlYWRlcnthbGlnbi1pdGVtczpjZW50ZXI7Y29sb3I6IzIyMmYzZTtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59LnRveCAudG94LWNvbW1lbnRfX2RhdGV7Y29sb3I6cmdiYSgzNCw0Nyw2MiwuNyk7Zm9udC1zaXplOjEycHh9LnRveCAudG94LWNvbW1lbnRfX2JvZHl7Y29sb3I6IzIyMmYzZTtmb250LXNpemU6MTRweDtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4zO21hcmdpbi10b3A6OHB4O3Bvc2l0aW9uOnJlbGF0aXZlO3RleHQtdHJhbnNmb3JtOmluaXRpYWx9LnRveCAudG94LWNvbW1lbnRfX2JvZHkgdGV4dGFyZWF7cmVzaXplOm5vbmU7d2hpdGUtc3BhY2U6bm9ybWFsO3dpZHRoOjEwMCV9LnRveCAudG94LWNvbW1lbnRfX2V4cGFuZGVye3BhZGRpbmctdG9wOjhweH0udG94IC50b3gtY29tbWVudF9fZXhwYW5kZXIgcHtjb2xvcjpyZ2JhKDM0LDQ3LDYyLC43KTtmb250LXNpemU6MTRweDtmb250LXN0eWxlOm5vcm1hbH0udG94IC50b3gtY29tbWVudF9fYm9keSBwe21hcmdpbjowfS50b3ggLnRveC1jb21tZW50X19idXR0b25zcGFjaW5ne3BhZGRpbmctdG9wOjE2cHg7dGV4dC1hbGlnbjpjZW50ZXJ9LnRveCAudG94LWNvbW1lbnQtdGhyZWFkX19vdmVybGF5OjphZnRlcntiYWNrZ3JvdW5kOiNmZmY7Ym90dG9tOjA7Y29udGVudDoiIjtkaXNwbGF5OmZsZXg7bGVmdDowO29wYWNpdHk6Ljk7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDt0b3A6MDt6LWluZGV4OjV9LnRveCAudG94LWNvbW1lbnRfX3JlcGx5e2Rpc3BsYXk6ZmxleDtmbGV4LXNocmluazowO2ZsZXgtd3JhcDp3cmFwO2p1c3RpZnktY29udGVudDpmbGV4LWVuZDttYXJnaW4tdG9wOjhweH0udG94IC50b3gtY29tbWVudF9fcmVwbHk+OmZpcnN0LWNoaWxke21hcmdpbi1ib3R0b206OHB4O3dpZHRoOjEwMCV9LnRveCAudG94LWNvbW1lbnRfX2VkaXR7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2p1c3RpZnktY29udGVudDpmbGV4LWVuZDttYXJnaW4tdG9wOjE2cHh9LnRveCAudG94LWNvbW1lbnRfX2dyYWRpZW50OjphZnRlcntiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudChyZ2JhKDI1NSwyNTUsMjU1LDApLCNmZmYpO2JvdHRvbTowO2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztoZWlnaHQ6NWVtO21hcmdpbi10b3A6LTQwcHg7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwJX0udG94IC50b3gtY29tbWVudF9fb3ZlcmxheXtiYWNrZ3JvdW5kOiNmZmY7Ym90dG9tOjA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4LWdyb3c6MTtsZWZ0OjA7b3BhY2l0eTouOTtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3RleHQtYWxpZ246Y2VudGVyO3RvcDowO3otaW5kZXg6NX0udG94IC50b3gtY29tbWVudF9fbG9hZGluZy10ZXh0e2FsaWduLWl0ZW1zOmNlbnRlcjtjb2xvcjojMjIyZjNlO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47cG9zaXRpb246cmVsYXRpdmV9LnRveCAudG94LWNvbW1lbnRfX2xvYWRpbmctdGV4dD5kaXZ7cGFkZGluZy1ib3R0b206MTZweH0udG94IC50b3gtY29tbWVudF9fb3ZlcmxheXRleHR7Ym90dG9tOjA7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZvbnQtc2l6ZToxNHB4O2xlZnQ6MDtwYWRkaW5nOjFlbTtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3RvcDowO3otaW5kZXg6MTB9LnRveCAudG94LWNvbW1lbnRfX292ZXJsYXl0ZXh0IHB7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JveC1zaGFkb3c6MCAwIDhweCA4cHggI2ZmZjtjb2xvcjojMjIyZjNlO3RleHQtYWxpZ246Y2VudGVyfS50b3ggLnRveC1jb21tZW50X19vdmVybGF5dGV4dCBkaXY6bnRoLW9mLXR5cGUoMil7Zm9udC1zaXplOi44ZW19LnRveCAudG94LWNvbW1lbnRfX2J1c3ktc3Bpbm5lcnthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvdHRvbTowO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2xlZnQ6MDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3RvcDowO3otaW5kZXg6MjB9LnRveCAudG94LWNvbW1lbnRfX3Njcm9sbHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZsZXgtc2hyaW5rOjE7b3ZlcmZsb3c6YXV0b30udG94IC50b3gtY29udmVyc2F0aW9uc3ttYXJnaW46OHB4fS50b3g6bm90KFtkaXI9cnRsXSkgLnRveC1jb21tZW50X19lZGl0e21hcmdpbi1sZWZ0OjhweH0udG94Om5vdChbZGlyPXJ0bF0pIC50b3gtY29tbWVudF9fYnV0dG9uc3BhY2luZz46bGFzdC1jaGlsZCwudG94Om5vdChbZGlyPXJ0bF0pIC50b3gtY29tbWVudF9fZWRpdD46bGFzdC1jaGlsZCwudG94Om5vdChbZGlyPXJ0bF0pIC50b3gtY29tbWVudF9fcmVwbHk+Omxhc3QtY2hpbGR7bWFyZ2luLWxlZnQ6OHB4fS50b3hbZGlyPXJ0bF0gLnRveC1jb21tZW50X19lZGl0e21hcmdpbi1yaWdodDo4cHh9LnRveFtkaXI9cnRsXSAudG94LWNvbW1lbnRfX2J1dHRvbnNwYWNpbmc+Omxhc3QtY2hpbGQsLnRveFtkaXI9cnRsXSAudG94LWNvbW1lbnRfX2VkaXQ+Omxhc3QtY2hpbGQsLnRveFtkaXI9cnRsXSAudG94LWNvbW1lbnRfX3JlcGx5PjpsYXN0LWNoaWxke21hcmdpbi1yaWdodDo4cHh9LnRveCAudG94LXVzZXJ7YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleH0udG94IC50b3gtdXNlcl9fYXZhdGFyIHN2Z3tmaWxsOnJnYmEoMzQsNDcsNjIsLjcpfS50b3ggLnRveC11c2VyX19uYW1le2NvbG9yOnJnYmEoMzQsNDcsNjIsLjcpO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjcwMDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9LnRveDpub3QoW2Rpcj1ydGxdKSAudG94LXVzZXJfX2F2YXRhciBzdmd7bWFyZ2luLXJpZ2h0OjhweH0udG94Om5vdChbZGlyPXJ0bF0pIC50b3gtdXNlcl9fYXZhdGFyKy50b3gtdXNlcl9fbmFtZXttYXJnaW4tbGVmdDo4cHh9LnRveFtkaXI9cnRsXSAudG94LXVzZXJfX2F2YXRhciBzdmd7bWFyZ2luLWxlZnQ6OHB4fS50b3hbZGlyPXJ0bF0gLnRveC11c2VyX19hdmF0YXIrLnRveC11c2VyX19uYW1le21hcmdpbi1yaWdodDo4cHh9LnRveCAudG94LWRpYWxvZy13cmFwe2FsaWduLWl0ZW1zOmNlbnRlcjtib3R0b206MDtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjtsZWZ0OjA7cG9zaXRpb246Zml4ZWQ7cmlnaHQ6MDt0b3A6MDt6LWluZGV4OjExMDB9LnRveCAudG94LWRpYWxvZy13cmFwX19iYWNrZHJvcHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjc1KTtib3R0b206MDtsZWZ0OjA7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDt0b3A6MDt6LWluZGV4OjF9LnRveCAudG94LWRpYWxvZy13cmFwX19iYWNrZHJvcC0tb3BhcXVle2JhY2tncm91bmQtY29sb3I6I2ZmZn0udG94IC50b3gtZGlhbG9ne2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXItY29sb3I6I2NjYztib3JkZXItcmFkaXVzOjNweDtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOjFweDtib3gtc2hhZG93OjAgMTZweCAxNnB4IC0xMHB4IHJnYmEoMzQsNDcsNjIsLjE1KSwwIDAgNDBweCAxcHggcmdiYSgzNCw0Nyw2MiwuMTUpO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWF4LWhlaWdodDoxMDAlO21heC13aWR0aDo0ODBweDtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6OTV2dzt6LWluZGV4OjJ9QG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjc2N3B4KXtib2R5Om5vdCgudG94LWZvcmNlLWRlc2t0b3ApIC50b3ggLnRveC1kaWFsb2d7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0O21hcmdpbjo4cHggYXV0bzt3aWR0aDpjYWxjKDEwMHZ3IC0gMTZweCl9fS50b3ggLnRveC1kaWFsb2ctaW5saW5le3otaW5kZXg6MTEwMH0udG94IC50b3gtZGlhbG9nX19oZWFkZXJ7YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXItYm90dG9tOm5vbmU7Y29sb3I6IzIyMmYzZTtkaXNwbGF5OmZsZXg7Zm9udC1zaXplOjE2cHg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47cGFkZGluZzo4cHggMTZweCAwIDE2cHg7cG9zaXRpb246cmVsYXRpdmV9LnRveCAudG94LWRpYWxvZ19faGVhZGVyIC50b3gtYnV0dG9ue3otaW5kZXg6MX0udG94IC50b3gtZGlhbG9nX19kcmFnaGFuZGxle2N1cnNvcjpncmFiO2hlaWdodDoxMDAlO2xlZnQ6MDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDt3aWR0aDoxMDAlfS50b3ggLnRveC1kaWFsb2dfX2RyYWdoYW5kbGU6YWN0aXZle2N1cnNvcjpncmFiYmluZ30udG94IC50b3gtZGlhbG9nX19kaXNtaXNze21hcmdpbi1sZWZ0OmF1dG99LnRveCAudG94LWRpYWxvZ19fdGl0bGV7Zm9udC1mYW1pbHk6LWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsIlNlZ29lIFVJIixSb2JvdG8sT3h5Z2VuLVNhbnMsVWJ1bnR1LENhbnRhcmVsbCwiSGVsdmV0aWNhIE5ldWUiLHNhbnMtc2VyaWY7Zm9udC1zaXplOjIwcHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMzttYXJnaW46MDt0ZXh0LXRyYW5zZm9ybTpub25lfS50b3ggLnRveC1kaWFsb2dfX2JvZHl7Y29sb3I6IzIyMmYzZTtkaXNwbGF5OmZsZXg7ZmxleDoxOy1tcy1mbGV4LXByZWZlcnJlZC1zaXplOmF1dG87Zm9udC1zaXplOjE2cHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMzttaW4td2lkdGg6MDt0ZXh0LWFsaWduOmxlZnQ7dGV4dC10cmFuc2Zvcm06bm9uZX1AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NzY3cHgpe2JvZHk6bm90KC50b3gtZm9yY2UtZGVza3RvcCkgLnRveCAudG94LWRpYWxvZ19fYm9keXtmbGV4LWRpcmVjdGlvbjpjb2x1bW59fS50b3ggLnRveC1kaWFsb2dfX2JvZHktbmF2e2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtwYWRkaW5nOjE2cHggMTZweH1AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NzY3cHgpe2JvZHk6bm90KC50b3gtZm9yY2UtZGVza3RvcCkgLnRveCAudG94LWRpYWxvZ19fYm9keS1uYXZ7ZmxleC1kaXJlY3Rpb246cm93Oy13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNoO292ZXJmbG93LXg6YXV0bztwYWRkaW5nLWJvdHRvbTowfX0udG94IC50b3gtZGlhbG9nX19ib2R5LW5hdi1pdGVte2JvcmRlci1ib3R0b206MnB4IHNvbGlkIHRyYW5zcGFyZW50O2NvbG9yOnJnYmEoMzQsNDcsNjIsLjcpO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjEuMzttYXJnaW4tYm90dG9tOjhweDt0ZXh0LWRlY29yYXRpb246bm9uZTt3aGl0ZS1zcGFjZTpub3dyYXB9LnRveCAudG94LWRpYWxvZ19fYm9keS1uYXYtaXRlbTpmb2N1c3tiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMzIsMTIyLDE4MywuMSl9LnRveCAudG94LWRpYWxvZ19fYm9keS1uYXYtaXRlbS0tYWN0aXZle2JvcmRlci1ib3R0b206MnB4IHNvbGlkICMyMDdhYjc7Y29sb3I6IzIwN2FiN30udG94IC50b3gtZGlhbG9nX19ib2R5LWNvbnRlbnR7Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6ZmxleDtmbGV4OjE7ZmxleC1kaXJlY3Rpb246Y29sdW1uOy1tcy1mbGV4LXByZWZlcnJlZC1zaXplOmF1dG87bWF4LWhlaWdodDo2NTBweDtvdmVyZmxvdzphdXRvOy13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNoO3BhZGRpbmc6MTZweCAxNnB4fS50b3ggLnRveC1kaWFsb2dfX2JvZHktY29udGVudD4qe21hcmdpbi1ib3R0b206MDttYXJnaW4tdG9wOjE2cHh9LnRveCAudG94LWRpYWxvZ19fYm9keS1jb250ZW50PjpmaXJzdC1jaGlsZHttYXJnaW4tdG9wOjB9LnRveCAudG94LWRpYWxvZ19fYm9keS1jb250ZW50PjpsYXN0LWNoaWxke21hcmdpbi1ib3R0b206MH0udG94IC50b3gtZGlhbG9nX19ib2R5LWNvbnRlbnQ+Om9ubHktY2hpbGR7bWFyZ2luLWJvdHRvbTowO21hcmdpbi10b3A6MH0udG94IC50b3gtZGlhbG9nX19ib2R5LWNvbnRlbnQgYXtjb2xvcjojMjA3YWI3O2N1cnNvcjpwb2ludGVyO3RleHQtZGVjb3JhdGlvbjpub25lfS50b3ggLnRveC1kaWFsb2dfX2JvZHktY29udGVudCBhOmZvY3VzLC50b3ggLnRveC1kaWFsb2dfX2JvZHktY29udGVudCBhOmhvdmVye2NvbG9yOiMxODVkOGM7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnRveCAudG94LWRpYWxvZ19fYm9keS1jb250ZW50IGE6YWN0aXZle2NvbG9yOiMxODVkOGM7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnRveCAudG94LWRpYWxvZ19fYm9keS1jb250ZW50IHN2Z3tmaWxsOiMyMjJmM2V9LnRveCAudG94LWRpYWxvZ19fYm9keS1jb250ZW50IHVse2Rpc3BsYXk6YmxvY2s7bGlzdC1zdHlsZS10eXBlOmRpc2M7bWFyZ2luLWJvdHRvbToxNnB4Oy13ZWJraXQtbWFyZ2luLWVuZDowO21hcmdpbi1pbmxpbmUtZW5kOjA7LXdlYmtpdC1tYXJnaW4tc3RhcnQ6MDttYXJnaW4taW5saW5lLXN0YXJ0OjA7LXdlYmtpdC1wYWRkaW5nLXN0YXJ0OjIuNXJlbTtwYWRkaW5nLWlubGluZS1zdGFydDoyLjVyZW19LnRveCAudG94LWRpYWxvZ19fYm9keS1jb250ZW50IC50b3gtZm9ybV9fZ3JvdXAgaDF7Zm9udC1zaXplOjIwcHg7Zm9udC13ZWlnaHQ6NzAwO21hcmdpbi1ib3R0b206MTZweDttYXJnaW4tdG9wOjJyZW19LnRveCAudG94LWRpYWxvZ19fYm9keS1jb250ZW50IC50b3gtZm9ybV9fZ3JvdXAgaDJ7Zm9udC1zaXplOjE2cHg7Zm9udC13ZWlnaHQ6NzAwO21hcmdpbi1ib3R0b206MTZweDttYXJnaW4tdG9wOjJyZW19LnRveCAudG94LWRpYWxvZ19fYm9keS1jb250ZW50IC50b3gtZm9ybV9fZ3JvdXAgcHttYXJnaW4tYm90dG9tOjE2cHh9LnRveCAudG94LWRpYWxvZ19fYm9keS1jb250ZW50IC50b3gtZm9ybV9fZ3JvdXAgaDE6Zmlyc3QtY2hpbGQsLnRveCAudG94LWRpYWxvZ19fYm9keS1jb250ZW50IC50b3gtZm9ybV9fZ3JvdXAgaDI6Zmlyc3QtY2hpbGQsLnRveCAudG94LWRpYWxvZ19fYm9keS1jb250ZW50IC50b3gtZm9ybV9fZ3JvdXAgcDpmaXJzdC1jaGlsZHttYXJnaW4tdG9wOjB9LnRveCAudG94LWRpYWxvZ19fYm9keS1jb250ZW50IC50b3gtZm9ybV9fZ3JvdXAgaDE6bGFzdC1jaGlsZCwudG94IC50b3gtZGlhbG9nX19ib2R5LWNvbnRlbnQgLnRveC1mb3JtX19ncm91cCBoMjpsYXN0LWNoaWxkLC50b3ggLnRveC1kaWFsb2dfX2JvZHktY29udGVudCAudG94LWZvcm1fX2dyb3VwIHA6bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9LnRveCAudG94LWRpYWxvZ19fYm9keS1jb250ZW50IC50b3gtZm9ybV9fZ3JvdXAgaDE6b25seS1jaGlsZCwudG94IC50b3gtZGlhbG9nX19ib2R5LWNvbnRlbnQgLnRveC1mb3JtX19ncm91cCBoMjpvbmx5LWNoaWxkLC50b3ggLnRveC1kaWFsb2dfX2JvZHktY29udGVudCAudG94LWZvcm1fX2dyb3VwIHA6b25seS1jaGlsZHttYXJnaW4tYm90dG9tOjA7bWFyZ2luLXRvcDowfS50b3ggLnRveC1kaWFsb2ctLXdpZHRoLWxne2hlaWdodDo2NTBweDttYXgtd2lkdGg6MTIwMHB4fS50b3ggLnRveC1kaWFsb2ctLXdpZHRoLW1ke21heC13aWR0aDo4MDBweH0udG94IC50b3gtZGlhbG9nLS13aWR0aC1tZCAudG94LWRpYWxvZ19fYm9keS1jb250ZW50e292ZXJmbG93OmF1dG99LnRveCAudG94LWRpYWxvZ19fYm9keS1jb250ZW50LS1jZW50ZXJlZHt0ZXh0LWFsaWduOmNlbnRlcn0udG94IC50b3gtZGlhbG9nX19mb290ZXJ7YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXItdG9wOjFweCBzb2xpZCAjY2NjO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtwYWRkaW5nOjhweCAxNnB4fS50b3ggLnRveC1kaWFsb2dfX2Zvb3Rlci1lbmQsLnRveCAudG94LWRpYWxvZ19fZm9vdGVyLXN0YXJ0e2Rpc3BsYXk6ZmxleH0udG94IC50b3gtZGlhbG9nX19idXN5LXNwaW5uZXJ7YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNzUpO2JvdHRvbTowO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2xlZnQ6MDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3RvcDowO3otaW5kZXg6M30udG94IC50b3gtZGlhbG9nX190YWJsZXtib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7d2lkdGg6MTAwJX0udG94IC50b3gtZGlhbG9nX190YWJsZSB0aGVhZCB0aHtmb250LXdlaWdodDo3MDA7cGFkZGluZy1ib3R0b206OHB4fS50b3ggLnRveC1kaWFsb2dfX3RhYmxlIHRib2R5IHRye2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNjY2N9LnRveCAudG94LWRpYWxvZ19fdGFibGUgdGJvZHkgdHI6bGFzdC1jaGlsZHtib3JkZXItYm90dG9tOm5vbmV9LnRveCAudG94LWRpYWxvZ19fdGFibGUgdGR7cGFkZGluZy1ib3R0b206OHB4O3BhZGRpbmctdG9wOjhweH0udG94IC50b3gtZGlhbG9nX19wb3B1cHN7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwJTt6LWluZGV4OjExMDB9LnRveCAudG94LWRpYWxvZ19fYm9keS1pZnJhbWV7ZGlzcGxheTpmbGV4O2ZsZXg6MTtmbGV4LWRpcmVjdGlvbjpjb2x1bW47LW1zLWZsZXgtcHJlZmVycmVkLXNpemU6YXV0b30udG94IC50b3gtZGlhbG9nX19ib2R5LWlmcmFtZSAudG94LW5hdm9iantkaXNwbGF5OmZsZXg7ZmxleDoxOy1tcy1mbGV4LXByZWZlcnJlZC1zaXplOmF1dG99LnRveCAudG94LWRpYWxvZ19fYm9keS1pZnJhbWUgLnRveC1uYXZvYmogOm50aC1jaGlsZCgyKXtmbGV4OjE7LW1zLWZsZXgtcHJlZmVycmVkLXNpemU6YXV0bztoZWlnaHQ6MTAwJX0udG94IC50b3gtZGlhbG9nLWRvY2stZmFkZW91dHtvcGFjaXR5OjA7dmlzaWJpbGl0eTpoaWRkZW59LnRveCAudG94LWRpYWxvZy1kb2NrLWZhZGVpbntvcGFjaXR5OjE7dmlzaWJpbGl0eTp2aXNpYmxlfS50b3ggLnRveC1kaWFsb2ctZG9jay10cmFuc2l0aW9ue3RyYW5zaXRpb246dmlzaWJpbGl0eSAwcyBsaW5lYXIgLjNzLG9wYWNpdHkgLjNzIGVhc2V9LnRveCAudG94LWRpYWxvZy1kb2NrLXRyYW5zaXRpb24udG94LWRpYWxvZy1kb2NrLWZhZGVpbnt0cmFuc2l0aW9uLWRlbGF5OjBzfWJvZHkudG94LWRpYWxvZ19fZGlzYWJsZS1zY3JvbGx7b3ZlcmZsb3c6aGlkZGVufS50b3gudG94LXBsYXRmb3JtLWllIC50b3gtZGlhbG9nLXdyYXB7cG9zaXRpb246LW1zLWRldmljZS1maXhlZH1AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NzY3cHgpe2JvZHk6bm90KC50b3gtZm9yY2UtZGVza3RvcCkgLnRveDpub3QoW2Rpcj1ydGxdKSAudG94LWRpYWxvZ19fYm9keS1uYXZ7bWFyZ2luLXJpZ2h0OjB9fUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDo3NjdweCl7Ym9keTpub3QoLnRveC1mb3JjZS1kZXNrdG9wKSAudG94Om5vdChbZGlyPXJ0bF0pIC50b3gtZGlhbG9nX19ib2R5LW5hdi1pdGVtOm5vdCg6Zmlyc3QtY2hpbGQpe21hcmdpbi1sZWZ0OjhweH19LnRveDpub3QoW2Rpcj1ydGxdKSAudG94LWRpYWxvZ19fZm9vdGVyIC50b3gtZGlhbG9nX19mb290ZXItZW5kPiosLnRveDpub3QoW2Rpcj1ydGxdKSAudG94LWRpYWxvZ19fZm9vdGVyIC50b3gtZGlhbG9nX19mb290ZXItc3RhcnQ+KnttYXJnaW4tbGVmdDo4cHh9LnRveFtkaXI9cnRsXSAudG94LWRpYWxvZ19fYm9keXt0ZXh0LWFsaWduOnJpZ2h0fUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDo3NjdweCl7Ym9keTpub3QoLnRveC1mb3JjZS1kZXNrdG9wKSAudG94W2Rpcj1ydGxdIC50b3gtZGlhbG9nX19ib2R5LW5hdnttYXJnaW4tbGVmdDowfX1AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NzY3cHgpe2JvZHk6bm90KC50b3gtZm9yY2UtZGVza3RvcCkgLnRveFtkaXI9cnRsXSAudG94LWRpYWxvZ19fYm9keS1uYXYtaXRlbTpub3QoOmZpcnN0LWNoaWxkKXttYXJnaW4tcmlnaHQ6OHB4fX0udG94W2Rpcj1ydGxdIC50b3gtZGlhbG9nX19mb290ZXIgLnRveC1kaWFsb2dfX2Zvb3Rlci1lbmQ+KiwudG94W2Rpcj1ydGxdIC50b3gtZGlhbG9nX19mb290ZXIgLnRveC1kaWFsb2dfX2Zvb3Rlci1zdGFydD4qe21hcmdpbi1yaWdodDo4cHh9LnRveCAudG94LWRyb3B6b25lLWNvbnRhaW5lcntkaXNwbGF5OmZsZXg7ZmxleDoxOy1tcy1mbGV4LXByZWZlcnJlZC1zaXplOmF1dG99LnRveCAudG94LWRyb3B6b25le2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjJweCBkYXNoZWQgI2NjYztib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4LWdyb3c6MTtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21pbi1oZWlnaHQ6MTAwcHg7cGFkZGluZzoxMHB4fS50b3ggLnRveC1kcm9wem9uZSBwe2NvbG9yOnJnYmEoMzQsNDcsNjIsLjcpO21hcmdpbjowIDAgMTZweCAwfS50b3ggLnRveC1lZGl0LWFyZWF7ZGlzcGxheTpmbGV4O2ZsZXg6MTstbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTphdXRvO292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0udG94IC50b3gtZWRpdC1hcmVhX19pZnJhbWV7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjowO2JveC1zaXppbmc6Ym9yZGVyLWJveDtmbGV4OjE7LW1zLWZsZXgtcHJlZmVycmVkLXNpemU6YXV0bztoZWlnaHQ6MTAwJTtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxMDAlfS50b3gudG94LWlubGluZS1lZGl0LWFyZWF7Ym9yZGVyOjFweCBkb3R0ZWQgI2NjY30udG94IC50b3gtZWRpdG9yLWNvbnRhaW5lcntkaXNwbGF5OmZsZXg7ZmxleDoxIDEgYXV0bztmbGV4LWRpcmVjdGlvbjpjb2x1bW47b3ZlcmZsb3c6aGlkZGVufS50b3ggLnRveC1lZGl0b3ItaGVhZGVye3otaW5kZXg6MX0udG94Om5vdCgudG94LXRpbnltY2UtaW5saW5lKSAudG94LWVkaXRvci1oZWFkZXJ7Ym94LXNoYWRvdzpub25lO3RyYW5zaXRpb246Ym94LXNoYWRvdyAuNXN9LnRveC50b3gtdGlueW1jZS0tdG9vbGJhci1ib3R0b20gLnRveC1lZGl0b3ItaGVhZGVyLC50b3gudG94LXRpbnltY2UtaW5saW5lIC50b3gtZWRpdG9yLWhlYWRlcnttYXJnaW4tYm90dG9tOi0xcHh9LnRveC50b3gtdGlueW1jZS0tdG9vbGJhci1zdGlja3ktb24gLnRveC1lZGl0b3ItaGVhZGVye2JveC1zaGFkb3c6MCA0cHggNHB4IC0zcHggcmdiYSgwLDAsMCwuMjUpfS50b3gtZWRpdG9yLWRvY2stZmFkZW91dHtvcGFjaXR5OjA7dmlzaWJpbGl0eTpoaWRkZW59LnRveC1lZGl0b3ItZG9jay1mYWRlaW57b3BhY2l0eToxO3Zpc2liaWxpdHk6dmlzaWJsZX0udG94LWVkaXRvci1kb2NrLXRyYW5zaXRpb257dHJhbnNpdGlvbjp2aXNpYmlsaXR5IDBzIGxpbmVhciAuMjVzLG9wYWNpdHkgLjI1cyBlYXNlfS50b3gtZWRpdG9yLWRvY2stdHJhbnNpdGlvbi50b3gtZWRpdG9yLWRvY2stZmFkZWlue3RyYW5zaXRpb24tZGVsYXk6MHN9LnRveCAudG94LWNvbnRyb2wtd3JhcHtmbGV4OjE7cG9zaXRpb246cmVsYXRpdmV9LnRveCAudG94LWNvbnRyb2wtd3JhcDpub3QoLnRveC1jb250cm9sLXdyYXAtLXN0YXR1cy1pbnZhbGlkKSAudG94LWNvbnRyb2wtd3JhcF9fc3RhdHVzLWljb24taW52YWxpZCwudG94IC50b3gtY29udHJvbC13cmFwOm5vdCgudG94LWNvbnRyb2wtd3JhcC0tc3RhdHVzLXVua25vd24pIC50b3gtY29udHJvbC13cmFwX19zdGF0dXMtaWNvbi11bmtub3duLC50b3ggLnRveC1jb250cm9sLXdyYXA6bm90KC50b3gtY29udHJvbC13cmFwLS1zdGF0dXMtdmFsaWQpIC50b3gtY29udHJvbC13cmFwX19zdGF0dXMtaWNvbi12YWxpZHtkaXNwbGF5Om5vbmV9LnRveCAudG94LWNvbnRyb2wtd3JhcCBzdmd7ZGlzcGxheTpibG9ja30udG94IC50b3gtY29udHJvbC13cmFwX19zdGF0dXMtaWNvbi13cmFwe3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSl9LnRveCAudG94LWNvbnRyb2wtd3JhcF9fc3RhdHVzLWljb24taW52YWxpZCBzdmd7ZmlsbDojYzAwfS50b3ggLnRveC1jb250cm9sLXdyYXBfX3N0YXR1cy1pY29uLXVua25vd24gc3Zne2ZpbGw6b3JhbmdlfS50b3ggLnRveC1jb250cm9sLXdyYXBfX3N0YXR1cy1pY29uLXZhbGlkIHN2Z3tmaWxsOmdyZWVufS50b3g6bm90KFtkaXI9cnRsXSkgLnRveC1jb250cm9sLXdyYXAtLXN0YXR1cy1pbnZhbGlkIC50b3gtdGV4dGZpZWxkLC50b3g6bm90KFtkaXI9cnRsXSkgLnRveC1jb250cm9sLXdyYXAtLXN0YXR1cy11bmtub3duIC50b3gtdGV4dGZpZWxkLC50b3g6bm90KFtkaXI9cnRsXSkgLnRveC1jb250cm9sLXdyYXAtLXN0YXR1cy12YWxpZCAudG94LXRleHRmaWVsZHtwYWRkaW5nLXJpZ2h0OjMycHh9LnRveDpub3QoW2Rpcj1ydGxdKSAudG94LWNvbnRyb2wtd3JhcF9fc3RhdHVzLWljb24td3JhcHtyaWdodDo0cHh9LnRveFtkaXI9cnRsXSAudG94LWNvbnRyb2wtd3JhcC0tc3RhdHVzLWludmFsaWQgLnRveC10ZXh0ZmllbGQsLnRveFtkaXI9cnRsXSAudG94LWNvbnRyb2wtd3JhcC0tc3RhdHVzLXVua25vd24gLnRveC10ZXh0ZmllbGQsLnRveFtkaXI9cnRsXSAudG94LWNvbnRyb2wtd3JhcC0tc3RhdHVzLXZhbGlkIC50b3gtdGV4dGZpZWxke3BhZGRpbmctbGVmdDozMnB4fS50b3hbZGlyPXJ0bF0gLnRveC1jb250cm9sLXdyYXBfX3N0YXR1cy1pY29uLXdyYXB7bGVmdDo0cHh9LnRveCAudG94LWF1dG9jb21wbGV0ZXJ7bWF4LXdpZHRoOjI1ZW19LnRveCAudG94LWF1dG9jb21wbGV0ZXIgLnRveC1tZW51e21heC13aWR0aDoyNWVtfS50b3ggLnRveC1hdXRvY29tcGxldGVyIC50b3gtYXV0b2NvbXBsZXRlci1oaWdobGlnaHR7Zm9udC13ZWlnaHQ6NzAwfS50b3ggLnRveC1jb2xvci1pbnB1dHtkaXNwbGF5OmZsZXg7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoxfS50b3ggLnRveC1jb2xvci1pbnB1dCAudG94LXRleHRmaWVsZHt6LWluZGV4Oi0xfS50b3ggLnRveC1jb2xvci1pbnB1dCBzcGFue2JvcmRlci1jb2xvcjpyZ2JhKDM0LDQ3LDYyLC4yKTtib3JkZXItcmFkaXVzOjNweDtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOjFweDtib3gtc2hhZG93Om5vbmU7Ym94LXNpemluZzpib3JkZXItYm94O2hlaWdodDoyNHB4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDo2cHg7d2lkdGg6MjRweH0udG94IC50b3gtY29sb3ItaW5wdXQgc3Bhbjpmb2N1czpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pLC50b3ggLnRveC1jb2xvci1pbnB1dCBzcGFuOmhvdmVyOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSl7Ym9yZGVyLWNvbG9yOiMyMDdhYjc7Y3Vyc29yOnBvaW50ZXJ9LnRveCAudG94LWNvbG9yLWlucHV0IHNwYW46OmJlZm9yZXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCg0NWRlZyxyZ2JhKDAsMCwwLC4yNSkgMjUlLHRyYW5zcGFyZW50IDI1JSksbGluZWFyLWdyYWRpZW50KC00NWRlZyxyZ2JhKDAsMCwwLC4yNSkgMjUlLHRyYW5zcGFyZW50IDI1JSksbGluZWFyLWdyYWRpZW50KDQ1ZGVnLHRyYW5zcGFyZW50IDc1JSxyZ2JhKDAsMCwwLC4yNSkgNzUlKSxsaW5lYXItZ3JhZGllbnQoLTQ1ZGVnLHRyYW5zcGFyZW50IDc1JSxyZ2JhKDAsMCwwLC4yNSkgNzUlKTtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgMCwwIDZweCw2cHggLTZweCwtNnB4IDA7YmFja2dyb3VuZC1zaXplOjEycHggMTJweDtib3JkZXI6MXB4IHNvbGlkICNmZmY7Ym9yZGVyLXJhZGl1czozcHg7Ym94LXNpemluZzpib3JkZXItYm94O2NvbnRlbnQ6Jyc7aGVpZ2h0OjI0cHg7bGVmdDotMXB4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDotMXB4O3dpZHRoOjI0cHg7ei1pbmRleDotMX0udG94IC50b3gtY29sb3ItaW5wdXQgc3BhblthcmlhLWRpc2FibGVkPXRydWVde2N1cnNvcjpub3QtYWxsb3dlZH0udG94Om5vdChbZGlyPXJ0bF0pIC50b3gtY29sb3ItaW5wdXQgLnRveC10ZXh0ZmllbGR7cGFkZGluZy1sZWZ0OjM2cHh9LnRveDpub3QoW2Rpcj1ydGxdKSAudG94LWNvbG9yLWlucHV0IHNwYW57bGVmdDo2cHh9LnRveFtkaXI9cnRsXSAudG94LWNvbG9yLWlucHV0IC50b3gtdGV4dGZpZWxke3BhZGRpbmctcmlnaHQ6MzZweH0udG94W2Rpcj1ydGxdIC50b3gtY29sb3ItaW5wdXQgc3BhbntyaWdodDo2cHh9LnRveCAudG94LWxhYmVsLC50b3ggLnRveC10b29sYmFyLWxhYmVse2NvbG9yOnJnYmEoMzQsNDcsNjIsLjcpO2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjE0cHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMztwYWRkaW5nOjAgOHB4IDAgMDt0ZXh0LXRyYW5zZm9ybTpub25lO3doaXRlLXNwYWNlOm5vd3JhcH0udG94IC50b3gtdG9vbGJhci1sYWJlbHtwYWRkaW5nOjAgOHB4fS50b3hbZGlyPXJ0bF0gLnRveC1sYWJlbHtwYWRkaW5nOjAgMCAwIDhweH0udG94IC50b3gtZm9ybXtkaXNwbGF5OmZsZXg7ZmxleDoxO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjstbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTphdXRvfS50b3ggLnRveC1mb3JtX19ncm91cHtib3gtc2l6aW5nOmJvcmRlci1ib3g7bWFyZ2luLWJvdHRvbTo0cHh9LnRveCAudG94LWZvcm0tZ3JvdXAtLW1heGltaXple2ZsZXg6MX0udG94IC50b3gtZm9ybV9fZ3JvdXAtLWVycm9ye2NvbG9yOiNjMDB9LnRveCAudG94LWZvcm1fX2dyb3VwLS1jb2xsZWN0aW9ue2Rpc3BsYXk6ZmxleH0udG94IC50b3gtZm9ybV9fZ3JpZHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93O2ZsZXgtd3JhcDp3cmFwO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufS50b3ggLnRveC1mb3JtX19ncmlkLS0yY29sPi50b3gtZm9ybV9fZ3JvdXB7d2lkdGg6Y2FsYyg1MCUgLSAoOHB4IC8gMikpfS50b3ggLnRveC1mb3JtX19ncmlkLS0zY29sPi50b3gtZm9ybV9fZ3JvdXB7d2lkdGg6Y2FsYygxMDAlIC8gMyAtICg4cHggLyAyKSl9LnRveCAudG94LWZvcm1fX2dyaWQtLTRjb2w+LnRveC1mb3JtX19ncm91cHt3aWR0aDpjYWxjKDI1JSAtICg4cHggLyAyKSl9LnRveCAudG94LWZvcm1fX2NvbnRyb2xzLWgtc3RhY2t7YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleH0udG94IC50b3gtZm9ybV9fZ3JvdXAtLWlubGluZXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4fS50b3ggLnRveC1mb3JtX19ncm91cC0tc3RyZXRjaGVke2Rpc3BsYXk6ZmxleDtmbGV4OjE7ZmxleC1kaXJlY3Rpb246Y29sdW1uOy1tcy1mbGV4LXByZWZlcnJlZC1zaXplOmF1dG99LnRveCAudG94LWZvcm1fX2dyb3VwLS1zdHJldGNoZWQgLnRveC10ZXh0YXJlYXtmbGV4OjE7LW1zLWZsZXgtcHJlZmVycmVkLXNpemU6YXV0b30udG94IC50b3gtZm9ybV9fZ3JvdXAtLXN0cmV0Y2hlZCAudG94LW5hdm9iantkaXNwbGF5OmZsZXg7ZmxleDoxOy1tcy1mbGV4LXByZWZlcnJlZC1zaXplOmF1dG99LnRveCAudG94LWZvcm1fX2dyb3VwLS1zdHJldGNoZWQgLnRveC1uYXZvYmogOm50aC1jaGlsZCgyKXtmbGV4OjE7LW1zLWZsZXgtcHJlZmVycmVkLXNpemU6YXV0bztoZWlnaHQ6MTAwJX0udG94Om5vdChbZGlyPXJ0bF0pIC50b3gtZm9ybV9fY29udHJvbHMtaC1zdGFjaz46bm90KDpmaXJzdC1jaGlsZCl7bWFyZ2luLWxlZnQ6NHB4fS50b3hbZGlyPXJ0bF0gLnRveC1mb3JtX19jb250cm9scy1oLXN0YWNrPjpub3QoOmZpcnN0LWNoaWxkKXttYXJnaW4tcmlnaHQ6NHB4fS50b3ggLnRveC1sb2NrLnRveC1sb2NrZWQgLnRveC1sb2NrLWljb25fX3VubG9jaywudG94IC50b3gtbG9jazpub3QoLnRveC1sb2NrZWQpIC50b3gtbG9jay1pY29uX19sb2Nre2Rpc3BsYXk6bm9uZX0udG94IC50b3gtc2VsZWN0ZmllbGQgc2VsZWN0LC50b3ggLnRveC10ZXh0YXJlYSwudG94IC50b3gtdGV4dGZpZWxkLC50b3ggLnRveC10b29sYmFyLXRleHRmaWVsZHstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJhbmNlOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1jb2xvcjojY2NjO2JvcmRlci1yYWRpdXM6M3B4O2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6MXB4O2JveC1zaGFkb3c6bm9uZTtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y29sb3I6IzIyMmYzZTtmb250LWZhbWlseTotYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwiU2Vnb2UgVUkiLFJvYm90byxPeHlnZW4tU2FucyxVYnVudHUsQ2FudGFyZWxsLCJIZWx2ZXRpY2EgTmV1ZSIsc2Fucy1zZXJpZjtmb250LXNpemU6MTZweDtsaW5lLWhlaWdodDoyNHB4O21hcmdpbjowO21pbi1oZWlnaHQ6MzRweDtvdXRsaW5lOjA7cGFkZGluZzo1cHggNC43NXB4O3Jlc2l6ZTpub25lO3dpZHRoOjEwMCV9LnRveCAudG94LXRleHRhcmVhW2Rpc2FibGVkXSwudG94IC50b3gtdGV4dGZpZWxkW2Rpc2FibGVkXXtiYWNrZ3JvdW5kLWNvbG9yOiNmMmYyZjI7Y29sb3I6cmdiYSgzNCw0Nyw2MiwuODUpO2N1cnNvcjpub3QtYWxsb3dlZH0udG94IC50b3gtc2VsZWN0ZmllbGQgc2VsZWN0OmZvY3VzLC50b3ggLnRveC10ZXh0YXJlYTpmb2N1cywudG94IC50b3gtdGV4dGZpZWxkOmZvY3Vze2JvcmRlci1jb2xvcjojMjA3YWI3O2JveC1zaGFkb3c6bm9uZTtvdXRsaW5lOjB9LnRveCAudG94LXRvb2xiYXItdGV4dGZpZWxke2JvcmRlci13aWR0aDowO21hcmdpbi1ib3R0b206M3B4O21hcmdpbi10b3A6MnB4O21heC13aWR0aDoyNTBweH0udG94IC50b3gtbmFrZWQtYnRue2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyOjA7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O2JveC1zaGFkb3c6dW5zZXQ7Y29sb3I6IzIwN2FiNztjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmJsb2NrO21hcmdpbjowO3BhZGRpbmc6MH0udG94IC50b3gtbmFrZWQtYnRuIHN2Z3tkaXNwbGF5OmJsb2NrO2ZpbGw6IzIyMmYzZX0udG94Om5vdChbZGlyPXJ0bF0pIC50b3gtdG9vbGJhci10ZXh0ZmllbGQrKnttYXJnaW4tbGVmdDo0cHh9LnRveFtkaXI9cnRsXSAudG94LXRvb2xiYXItdGV4dGZpZWxkKyp7bWFyZ2luLXJpZ2h0OjRweH0udG94IC50b3gtc2VsZWN0ZmllbGR7Y3Vyc29yOnBvaW50ZXI7cG9zaXRpb246cmVsYXRpdmV9LnRveCAudG94LXNlbGVjdGZpZWxkIHNlbGVjdFtkaXNhYmxlZF17YmFja2dyb3VuZC1jb2xvcjojZjJmMmYyO2NvbG9yOnJnYmEoMzQsNDcsNjIsLjg1KTtjdXJzb3I6bm90LWFsbG93ZWR9LnRveCAudG94LXNlbGVjdGZpZWxkIHNlbGVjdDo6LW1zLWV4cGFuZHtkaXNwbGF5Om5vbmV9LnRveCAudG94LXNlbGVjdGZpZWxkIHN2Z3twb2ludGVyLWV2ZW50czpub25lO3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSl9LnRveDpub3QoW2Rpcj1ydGxdKSAudG94LXNlbGVjdGZpZWxkIHNlbGVjdFtzaXplPSIwIl0sLnRveDpub3QoW2Rpcj1ydGxdKSAudG94LXNlbGVjdGZpZWxkIHNlbGVjdFtzaXplPSIxIl17cGFkZGluZy1yaWdodDoyNHB4fS50b3g6bm90KFtkaXI9cnRsXSkgLnRveC1zZWxlY3RmaWVsZCBzdmd7cmlnaHQ6OHB4fS50b3hbZGlyPXJ0bF0gLnRveC1zZWxlY3RmaWVsZCBzZWxlY3Rbc2l6ZT0iMCJdLC50b3hbZGlyPXJ0bF0gLnRveC1zZWxlY3RmaWVsZCBzZWxlY3Rbc2l6ZT0iMSJde3BhZGRpbmctbGVmdDoyNHB4fS50b3hbZGlyPXJ0bF0gLnRveC1zZWxlY3RmaWVsZCBzdmd7bGVmdDo4cHh9LnRveCAudG94LXRleHRhcmVhey13ZWJraXQtYXBwZWFyYW5jZTp0ZXh0YXJlYTstbW96LWFwcGVhcmFuY2U6dGV4dGFyZWE7YXBwZWFyYW5jZTp0ZXh0YXJlYTt3aGl0ZS1zcGFjZTpwcmUtd3JhcH0udG94LWZ1bGxzY3JlZW57Ym9yZGVyOjA7aGVpZ2h0OjEwMCU7bGVmdDowO21hcmdpbjowO292ZXJmbG93OmhpZGRlbjstbXMtc2Nyb2xsLWNoYWluaW5nOm5vbmU7b3ZlcnNjcm9sbC1iZWhhdmlvcjpub25lO3BhZGRpbmc6MDtwb3NpdGlvbjpmaXhlZDt0b3A6MDt0b3VjaC1hY3Rpb246cGluY2gtem9vbTt3aWR0aDoxMDAlfS50b3gtZnVsbHNjcmVlbiAudG94LnRveC10aW55bWNlLnRveC1mdWxsc2NyZWVuIC50b3gtc3RhdHVzYmFyX19yZXNpemUtaGFuZGxle2Rpc3BsYXk6bm9uZX0udG94LWZ1bGxzY3JlZW4gLnRveC50b3gtdGlueW1jZS50b3gtZnVsbHNjcmVlbnt6LWluZGV4OjEyMDB9LnRveC1mdWxsc2NyZWVuIC50b3gudG94LXRpbnltY2UtYXV4e3otaW5kZXg6MTIwMX0udG94IC50b3gtaGVscF9fbW9yZS1saW5re2xpc3Qtc3R5bGU6bm9uZTttYXJnaW4tdG9wOjFlbX0udG94IC50b3gtaW1hZ2UtdG9vbHN7d2lkdGg6MTAwJX0udG94IC50b3gtaW1hZ2UtdG9vbHNfX3Rvb2xiYXJ7YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS50b3ggLnRveC1pbWFnZS10b29sc19faW1hZ2V7YmFja2dyb3VuZC1jb2xvcjojNjY2O2hlaWdodDozODBweDtvdmVyZmxvdzphdXRvO3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCV9LnRveCAudG94LWltYWdlLXRvb2xzX19pbWFnZSwudG94IC50b3gtaW1hZ2UtdG9vbHNfX2ltYWdlKy50b3gtaW1hZ2UtdG9vbHNfX3Rvb2xiYXJ7bWFyZ2luLXRvcDo4cHh9LnRveCAudG94LWltYWdlLXRvb2xzX19pbWFnZS1iZ3tiYWNrZ3JvdW5kOnVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EZGhEQUFNQUlBQkFNek16UC8vL3l3QUFBQUFEQUFNQUFBQ0ZvUWZxWWVhYk55RE1rQlFiODFVYXQ4NW54Z3VVQUVBT3c9PSl9LnRveCAudG94LWltYWdlLXRvb2xzX190b29sYmFyPi50b3gtc3BhY2Vye2ZsZXg6MTstbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTphdXRvfS50b3ggLnRveC1jcm9wcmVjdC1ibG9ja3tiYWNrZ3JvdW5kOiMwMDA7b3BhY2l0eTouNTtwb3NpdGlvbjphYnNvbHV0ZTt6b29tOjF9LnRveCAudG94LWNyb3ByZWN0LWhhbmRsZXtib3JkZXI6MnB4IHNvbGlkICNmZmY7aGVpZ2h0OjIwcHg7bGVmdDowO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3dpZHRoOjIwcHh9LnRveCAudG94LWNyb3ByZWN0LWhhbmRsZS1tb3Zle2JvcmRlcjowO2N1cnNvcjptb3ZlO3Bvc2l0aW9uOmFic29sdXRlfS50b3ggLnRveC1jcm9wcmVjdC1oYW5kbGUtbnd7Ym9yZGVyLXdpZHRoOjJweCAwIDAgMnB4O2N1cnNvcjpudy1yZXNpemU7bGVmdDoxMDBweDttYXJnaW46LTJweCAwIDAgLTJweDt0b3A6MTAwcHh9LnRveCAudG94LWNyb3ByZWN0LWhhbmRsZS1uZXtib3JkZXItd2lkdGg6MnB4IDJweCAwIDA7Y3Vyc29yOm5lLXJlc2l6ZTtsZWZ0OjIwMHB4O21hcmdpbjotMnB4IDAgMCAtMjBweDt0b3A6MTAwcHh9LnRveCAudG94LWNyb3ByZWN0LWhhbmRsZS1zd3tib3JkZXItd2lkdGg6MCAwIDJweCAycHg7Y3Vyc29yOnN3LXJlc2l6ZTtsZWZ0OjEwMHB4O21hcmdpbjotMjBweCAycHggMCAtMnB4O3RvcDoyMDBweH0udG94IC50b3gtY3JvcHJlY3QtaGFuZGxlLXNle2JvcmRlci13aWR0aDowIDJweCAycHggMDtjdXJzb3I6c2UtcmVzaXplO2xlZnQ6MjAwcHg7bWFyZ2luOi0yMHB4IDAgMCAtMjBweDt0b3A6MjAwcHh9LnRveDpub3QoW2Rpcj1ydGxdKSAudG94LWltYWdlLXRvb2xzX190b29sYmFyPi50b3gtc2xpZGVyOm5vdCg6Zmlyc3Qtb2YtdHlwZSl7bWFyZ2luLWxlZnQ6OHB4fS50b3g6bm90KFtkaXI9cnRsXSkgLnRveC1pbWFnZS10b29sc19fdG9vbGJhcj4udG94LWJ1dHRvbisudG94LXNsaWRlcnttYXJnaW4tbGVmdDozMnB4fS50b3g6bm90KFtkaXI9cnRsXSkgLnRveC1pbWFnZS10b29sc19fdG9vbGJhcj4udG94LXNsaWRlcisudG94LWJ1dHRvbnttYXJnaW4tbGVmdDozMnB4fS50b3hbZGlyPXJ0bF0gLnRveC1pbWFnZS10b29sc19fdG9vbGJhcj4udG94LXNsaWRlcjpub3QoOmZpcnN0LW9mLXR5cGUpe21hcmdpbi1yaWdodDo4cHh9LnRveFtkaXI9cnRsXSAudG94LWltYWdlLXRvb2xzX190b29sYmFyPi50b3gtYnV0dG9uKy50b3gtc2xpZGVye21hcmdpbi1yaWdodDozMnB4fS50b3hbZGlyPXJ0bF0gLnRveC1pbWFnZS10b29sc19fdG9vbGJhcj4udG94LXNsaWRlcisudG94LWJ1dHRvbnttYXJnaW4tcmlnaHQ6MzJweH0udG94IC50b3gtaW5zZXJ0LXRhYmxlLXBpY2tlcntkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7d2lkdGg6MTcwcHh9LnRveCAudG94LWluc2VydC10YWJsZS1waWNrZXI+ZGl2e2JvcmRlci1jb2xvcjojY2NjO2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6MCAxcHggMXB4IDA7Ym94LXNpemluZzpib3JkZXItYm94O2hlaWdodDoxN3B4O3dpZHRoOjE3cHh9LnRveCAudG94LWNvbGxlY3Rpb24tLWxpc3QgLnRveC1jb2xsZWN0aW9uX19ncm91cCAudG94LWluc2VydC10YWJsZS1waWNrZXJ7bWFyZ2luOi00cHggMH0udG94IC50b3gtaW5zZXJ0LXRhYmxlLXBpY2tlciAudG94LWluc2VydC10YWJsZS1waWNrZXJfX3NlbGVjdGVke2JhY2tncm91bmQtY29sb3I6cmdiYSgzMiwxMjIsMTgzLC41KTtib3JkZXItY29sb3I6cmdiYSgzMiwxMjIsMTgzLC41KX0udG94IC50b3gtaW5zZXJ0LXRhYmxlLXBpY2tlcl9fbGFiZWx7Y29sb3I6cmdiYSgzNCw0Nyw2MiwuNyk7ZGlzcGxheTpibG9jaztmb250LXNpemU6MTRweDtwYWRkaW5nOjRweDt0ZXh0LWFsaWduOmNlbnRlcjt3aWR0aDoxMDAlfS50b3g6bm90KFtkaXI9cnRsXSkgLnRveC1pbnNlcnQtdGFibGUtcGlja2VyPmRpdjpudGgtY2hpbGQoMTBuKXtib3JkZXItcmlnaHQ6MH0udG94W2Rpcj1ydGxdIC50b3gtaW5zZXJ0LXRhYmxlLXBpY2tlcj5kaXY6bnRoLWNoaWxkKDEwbisxKXtib3JkZXItcmlnaHQ6MH0udG94IC50b3gtbWVudXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2JvcmRlci1yYWRpdXM6M3B4O2JveC1zaGFkb3c6MCA0cHggOHB4IDAgcmdiYSgzNCw0Nyw2MiwuMSk7ZGlzcGxheTppbmxpbmUtYmxvY2s7b3ZlcmZsb3c6aGlkZGVuO3ZlcnRpY2FsLWFsaWduOnRvcDt6LWluZGV4OjExNTB9LnRveCAudG94LW1lbnUudG94LWNvbGxlY3Rpb24udG94LWNvbGxlY3Rpb24tLWxpc3R7cGFkZGluZzowfS50b3ggLnRveC1tZW51LnRveC1jb2xsZWN0aW9uLnRveC1jb2xsZWN0aW9uLS10b29sYmFye3BhZGRpbmc6NHB4fS50b3ggLnRveC1tZW51LnRveC1jb2xsZWN0aW9uLnRveC1jb2xsZWN0aW9uLS1ncmlke3BhZGRpbmc6NHB4fS50b3ggLnRveC1tZW51X19sYWJlbCBibG9ja3F1b3RlLC50b3ggLnRveC1tZW51X19sYWJlbCBjb2RlLC50b3ggLnRveC1tZW51X19sYWJlbCBoMSwudG94IC50b3gtbWVudV9fbGFiZWwgaDIsLnRveCAudG94LW1lbnVfX2xhYmVsIGgzLC50b3ggLnRveC1tZW51X19sYWJlbCBoNCwudG94IC50b3gtbWVudV9fbGFiZWwgaDUsLnRveCAudG94LW1lbnVfX2xhYmVsIGg2LC50b3ggLnRveC1tZW51X19sYWJlbCBwe21hcmdpbjowfS50b3ggLnRveC1tZW51YmFye2JhY2tncm91bmQ6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyBoZWlnaHQ9JzM5cHgnIHZpZXdCb3g9JzAgMCA0MCAzOXB4JyB3aWR0aD0nNDAnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NyZWN0IHg9JzAnIHk9JzM4cHgnIHdpZHRoPScxMDAnIGhlaWdodD0nMScgZmlsbD0nJTIzY2NjY2NjJy8lM0UlM0Mvc3ZnJTNFIikgbGVmdCAwIHRvcCAwICNmZmY7YmFja2dyb3VuZC1jb2xvcjojZmZmO2Rpc3BsYXk6ZmxleDtmbGV4OjAgMCBhdXRvO2ZsZXgtc2hyaW5rOjA7ZmxleC13cmFwOndyYXA7cGFkZGluZzowIDRweCAwIDRweH0udG94LnRveC10aW55bWNlOm5vdCgudG94LXRpbnltY2UtaW5saW5lKSAudG94LWVkaXRvci1oZWFkZXI6bm90KDpmaXJzdC1jaGlsZCkgLnRveC1tZW51YmFye2JvcmRlci10b3A6MXB4IHNvbGlkICNjY2N9LnRveCAudG94LW1idG57YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQ6MCAwO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6M3B4O2JveC1zaGFkb3c6bm9uZTtjb2xvcjojMjIyZjNlO2Rpc3BsYXk6ZmxleDtmbGV4OjAgMCBhdXRvO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjQwMDtoZWlnaHQ6MzRweDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21hcmdpbjoycHggMCAzcHggMDtvdXRsaW5lOjA7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MCA0cHg7dGV4dC10cmFuc2Zvcm06bm9uZTt3aWR0aDphdXRvfS50b3ggLnRveC1tYnRuW2Rpc2FibGVkXXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlcjowO2JveC1zaGFkb3c6bm9uZTtjb2xvcjpyZ2JhKDM0LDQ3LDYyLC41KTtjdXJzb3I6bm90LWFsbG93ZWR9LnRveCAudG94LW1idG46Zm9jdXM6bm90KDpkaXNhYmxlZCl7YmFja2dyb3VuZDojZGVlMGUyO2JvcmRlcjowO2JveC1zaGFkb3c6bm9uZTtjb2xvcjojMjIyZjNlfS50b3ggLnRveC1tYnRuLS1hY3RpdmV7YmFja2dyb3VuZDojYzhjYmNmO2JvcmRlcjowO2JveC1zaGFkb3c6bm9uZTtjb2xvcjojMjIyZjNlfS50b3ggLnRveC1tYnRuOmhvdmVyOm5vdCg6ZGlzYWJsZWQpOm5vdCgudG94LW1idG4tLWFjdGl2ZSl7YmFja2dyb3VuZDojZGVlMGUyO2JvcmRlcjowO2JveC1zaGFkb3c6bm9uZTtjb2xvcjojMjIyZjNlfS50b3ggLnRveC1tYnRuX19zZWxlY3QtbGFiZWx7Y3Vyc29yOmRlZmF1bHQ7Zm9udC13ZWlnaHQ6NDAwO21hcmdpbjowIDRweH0udG94IC50b3gtbWJ0bltkaXNhYmxlZF0gLnRveC1tYnRuX19zZWxlY3QtbGFiZWx7Y3Vyc29yOm5vdC1hbGxvd2VkfS50b3ggLnRveC1tYnRuX19zZWxlY3QtY2hldnJvbnthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7d2lkdGg6MTZweDtkaXNwbGF5Om5vbmV9LnRveCAudG94LW5vdGlmaWNhdGlvbntib3JkZXItcmFkaXVzOjNweDtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOjFweDtib3gtc2hhZG93Om5vbmU7Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6LW1zLWdyaWQ7ZGlzcGxheTpncmlkO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMDstbXMtZ3JpZC1jb2x1bW5zOm1pbm1heCg0MHB4LDFmcikgYXV0byBtaW5tYXgoNDBweCwxZnIpO2dyaWQtdGVtcGxhdGUtY29sdW1uczptaW5tYXgoNDBweCwxZnIpIGF1dG8gbWlubWF4KDQwcHgsMWZyKTttYXJnaW4tdG9wOjRweDtvcGFjaXR5OjA7cGFkZGluZzo0cHg7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjFzIGVhc2UtaW4sb3BhY2l0eSAxNTBtcyBlYXNlLWlufS50b3ggLnRveC1ub3RpZmljYXRpb24gcHtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9LnRveCAudG94LW5vdGlmaWNhdGlvbiBhe3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9LnRveCAudG94LW5vdGlmaWNhdGlvbi0taW57b3BhY2l0eToxfS50b3ggLnRveC1ub3RpZmljYXRpb24tLXN1Y2Nlc3N7YmFja2dyb3VuZC1jb2xvcjojZTRlZWRhO2JvcmRlci1jb2xvcjojZDdlNmM4O2NvbG9yOiMyMjJmM2V9LnRveCAudG94LW5vdGlmaWNhdGlvbi0tc3VjY2VzcyBwe2NvbG9yOiMyMjJmM2V9LnRveCAudG94LW5vdGlmaWNhdGlvbi0tc3VjY2VzcyBhe2NvbG9yOiM1NDc4MzF9LnRveCAudG94LW5vdGlmaWNhdGlvbi0tc3VjY2VzcyBzdmd7ZmlsbDojMjIyZjNlfS50b3ggLnRveC1ub3RpZmljYXRpb24tLWVycm9ye2JhY2tncm91bmQtY29sb3I6I2Y4ZGVkZTtib3JkZXItY29sb3I6I2YyYmZiZjtjb2xvcjojMjIyZjNlfS50b3ggLnRveC1ub3RpZmljYXRpb24tLWVycm9yIHB7Y29sb3I6IzIyMmYzZX0udG94IC50b3gtbm90aWZpY2F0aW9uLS1lcnJvciBhe2NvbG9yOiNjMDB9LnRveCAudG94LW5vdGlmaWNhdGlvbi0tZXJyb3Igc3Zne2ZpbGw6IzIyMmYzZX0udG94IC50b3gtbm90aWZpY2F0aW9uLS13YXJuLC50b3ggLnRveC1ub3RpZmljYXRpb24tLXdhcm5pbmd7YmFja2dyb3VuZC1jb2xvcjojZmZmYWVhO2JvcmRlci1jb2xvcjojZmZlODlkO2NvbG9yOiMyMjJmM2V9LnRveCAudG94LW5vdGlmaWNhdGlvbi0td2FybiBwLC50b3ggLnRveC1ub3RpZmljYXRpb24tLXdhcm5pbmcgcHtjb2xvcjojMjIyZjNlfS50b3ggLnRveC1ub3RpZmljYXRpb24tLXdhcm4gYSwudG94IC50b3gtbm90aWZpY2F0aW9uLS13YXJuaW5nIGF7Y29sb3I6IzIyMmYzZX0udG94IC50b3gtbm90aWZpY2F0aW9uLS13YXJuIHN2ZywudG94IC50b3gtbm90aWZpY2F0aW9uLS13YXJuaW5nIHN2Z3tmaWxsOiMyMjJmM2V9LnRveCAudG94LW5vdGlmaWNhdGlvbi0taW5mb3tiYWNrZ3JvdW5kLWNvbG9yOiNkOWVkZjc7Ym9yZGVyLWNvbG9yOiM3NzllY2I7Y29sb3I6IzIyMmYzZX0udG94IC50b3gtbm90aWZpY2F0aW9uLS1pbmZvIHB7Y29sb3I6IzIyMmYzZX0udG94IC50b3gtbm90aWZpY2F0aW9uLS1pbmZvIGF7Y29sb3I6IzIyMmYzZX0udG94IC50b3gtbm90aWZpY2F0aW9uLS1pbmZvIHN2Z3tmaWxsOiMyMjJmM2V9LnRveCAudG94LW5vdGlmaWNhdGlvbl9fYm9keXstbXMtZ3JpZC1yb3ctYWxpZ246Y2VudGVyO2FsaWduLXNlbGY6Y2VudGVyO2NvbG9yOiMyMjJmM2U7Zm9udC1zaXplOjE0cHg7LW1zLWdyaWQtY29sdW1uLXNwYW46MTtncmlkLWNvbHVtbi1lbmQ6MzstbXMtZ3JpZC1jb2x1bW46MjtncmlkLWNvbHVtbi1zdGFydDoyOy1tcy1ncmlkLXJvdy1zcGFuOjE7Z3JpZC1yb3ctZW5kOjI7LW1zLWdyaWQtcm93OjE7Z3JpZC1yb3ctc3RhcnQ6MTt0ZXh0LWFsaWduOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3JtYWw7d29yZC1icmVhazpicmVhay1hbGw7d29yZC1icmVhazpicmVhay13b3JkfS50b3ggLnRveC1ub3RpZmljYXRpb25fX2JvZHk+KnttYXJnaW46MH0udG94IC50b3gtbm90aWZpY2F0aW9uX19ib2R5PiorKnttYXJnaW4tdG9wOjFyZW19LnRveCAudG94LW5vdGlmaWNhdGlvbl9faWNvbnstbXMtZ3JpZC1yb3ctYWxpZ246Y2VudGVyO2FsaWduLXNlbGY6Y2VudGVyOy1tcy1ncmlkLWNvbHVtbi1zcGFuOjE7Z3JpZC1jb2x1bW4tZW5kOjI7LW1zLWdyaWQtY29sdW1uOjE7Z3JpZC1jb2x1bW4tc3RhcnQ6MTstbXMtZ3JpZC1yb3ctc3BhbjoxO2dyaWQtcm93LWVuZDoyOy1tcy1ncmlkLXJvdzoxO2dyaWQtcm93LXN0YXJ0OjE7LW1zLWdyaWQtY29sdW1uLWFsaWduOmVuZDtqdXN0aWZ5LXNlbGY6ZW5kfS50b3ggLnRveC1ub3RpZmljYXRpb25fX2ljb24gc3Zne2Rpc3BsYXk6YmxvY2t9LnRveCAudG94LW5vdGlmaWNhdGlvbl9fZGlzbWlzc3stbXMtZ3JpZC1yb3ctYWxpZ246c3RhcnQ7YWxpZ24tc2VsZjpzdGFydDstbXMtZ3JpZC1jb2x1bW4tc3BhbjoxO2dyaWQtY29sdW1uLWVuZDo0Oy1tcy1ncmlkLWNvbHVtbjozO2dyaWQtY29sdW1uLXN0YXJ0OjM7LW1zLWdyaWQtcm93LXNwYW46MTtncmlkLXJvdy1lbmQ6MjstbXMtZ3JpZC1yb3c6MTtncmlkLXJvdy1zdGFydDoxOy1tcy1ncmlkLWNvbHVtbi1hbGlnbjplbmQ7anVzdGlmeS1zZWxmOmVuZH0udG94IC50b3gtbm90aWZpY2F0aW9uIC50b3gtcHJvZ3Jlc3MtYmFyey1tcy1ncmlkLWNvbHVtbi1zcGFuOjM7Z3JpZC1jb2x1bW4tZW5kOjQ7LW1zLWdyaWQtY29sdW1uOjE7Z3JpZC1jb2x1bW4tc3RhcnQ6MTstbXMtZ3JpZC1yb3ctc3BhbjoxO2dyaWQtcm93LWVuZDozOy1tcy1ncmlkLXJvdzoyO2dyaWQtcm93LXN0YXJ0OjI7LW1zLWdyaWQtY29sdW1uLWFsaWduOmNlbnRlcjtqdXN0aWZ5LXNlbGY6Y2VudGVyfS50b3ggLnRveC1wb3B7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRpdmV9LnRveCAudG94LXBvcC0tcmVzaXppbmd7dHJhbnNpdGlvbjp3aWR0aCAuMXMgZWFzZX0udG94IC50b3gtcG9wLS1yZXNpemluZyAudG94LXRvb2xiYXJ7ZmxleC13cmFwOm5vd3JhcH0udG94IC50b3gtcG9wX19kaWFsb2d7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgI2NjYztib3JkZXItcmFkaXVzOjNweDtib3gtc2hhZG93OjAgMXB4IDNweCByZ2JhKDAsMCwwLC4xNSk7bWluLXdpZHRoOjA7b3ZlcmZsb3c6aGlkZGVufS50b3ggLnRveC1wb3BfX2RpYWxvZz46bm90KC50b3gtdG9vbGJhcil7bWFyZ2luOjRweCA0cHggNHB4IDhweH0udG94IC50b3gtcG9wX19kaWFsb2cgLnRveC10b29sYmFye2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7bWFyZ2luLWJvdHRvbTotMXB4fS50b3ggLnRveC1wb3A6OmFmdGVyLC50b3ggLnRveC1wb3A6OmJlZm9yZXtib3JkZXItc3R5bGU6c29saWQ7Y29udGVudDonJztkaXNwbGF5OmJsb2NrO2hlaWdodDowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjB9LnRveCAudG94LXBvcC50b3gtcG9wLS1ib3R0b206OmFmdGVyLC50b3ggLnRveC1wb3AudG94LXBvcC0tYm90dG9tOjpiZWZvcmV7bGVmdDo1MCU7dG9wOjEwMCV9LnRveCAudG94LXBvcC50b3gtcG9wLS1ib3R0b206OmFmdGVye2JvcmRlci1jb2xvcjojZmZmIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O2JvcmRlci13aWR0aDo4cHg7bWFyZ2luLWxlZnQ6LThweDttYXJnaW4tdG9wOi0xcHh9LnRveCAudG94LXBvcC50b3gtcG9wLS1ib3R0b206OmJlZm9yZXtib3JkZXItY29sb3I6I2NjYyB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtib3JkZXItd2lkdGg6OXB4O21hcmdpbi1sZWZ0Oi05cHh9LnRveCAudG94LXBvcC50b3gtcG9wLS10b3A6OmFmdGVyLC50b3ggLnRveC1wb3AudG94LXBvcC0tdG9wOjpiZWZvcmV7bGVmdDo1MCU7dG9wOjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEwMCUpfS50b3ggLnRveC1wb3AudG94LXBvcC0tdG9wOjphZnRlcntib3JkZXItY29sb3I6dHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgI2ZmZiB0cmFuc3BhcmVudDtib3JkZXItd2lkdGg6OHB4O21hcmdpbi1sZWZ0Oi04cHg7bWFyZ2luLXRvcDoxcHh9LnRveCAudG94LXBvcC50b3gtcG9wLS10b3A6OmJlZm9yZXtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgI2NjYyB0cmFuc3BhcmVudDtib3JkZXItd2lkdGg6OXB4O21hcmdpbi1sZWZ0Oi05cHh9LnRveCAudG94LXBvcC50b3gtcG9wLS1sZWZ0OjphZnRlciwudG94IC50b3gtcG9wLnRveC1wb3AtLWxlZnQ6OmJlZm9yZXtsZWZ0OjA7dG9wOmNhbGMoNTAlIC0gMXB4KTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKX0udG94IC50b3gtcG9wLnRveC1wb3AtLWxlZnQ6OmFmdGVye2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudCAjZmZmIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O2JvcmRlci13aWR0aDo4cHg7bWFyZ2luLWxlZnQ6LTE1cHh9LnRveCAudG94LXBvcC50b3gtcG9wLS1sZWZ0OjpiZWZvcmV7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50ICNjY2MgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXdpZHRoOjEwcHg7bWFyZ2luLWxlZnQ6LTE5cHh9LnRveCAudG94LXBvcC50b3gtcG9wLS1yaWdodDo6YWZ0ZXIsLnRveCAudG94LXBvcC50b3gtcG9wLS1yaWdodDo6YmVmb3Jle2xlZnQ6MTAwJTt0b3A6Y2FsYyg1MCUgKyAxcHgpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpfS50b3ggLnRveC1wb3AudG94LXBvcC0tcmlnaHQ6OmFmdGVye2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjZmZmO2JvcmRlci13aWR0aDo4cHg7bWFyZ2luLWxlZnQ6LTFweH0udG94IC50b3gtcG9wLnRveC1wb3AtLXJpZ2h0OjpiZWZvcmV7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICNjY2M7Ym9yZGVyLXdpZHRoOjEwcHg7bWFyZ2luLWxlZnQ6LTFweH0udG94IC50b3gtcG9wLnRveC1wb3AtLWFsaWduLWxlZnQ6OmFmdGVyLC50b3ggLnRveC1wb3AudG94LXBvcC0tYWxpZ24tbGVmdDo6YmVmb3Jle2xlZnQ6MjBweH0udG94IC50b3gtcG9wLnRveC1wb3AtLWFsaWduLXJpZ2h0OjphZnRlciwudG94IC50b3gtcG9wLnRveC1wb3AtLWFsaWduLXJpZ2h0OjpiZWZvcmV7bGVmdDpjYWxjKDEwMCUgLSAyMHB4KX0udG94IC50b3gtc2lkZWJhci13cmFwe2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3c7ZmxleC1ncm93OjE7LW1zLWZsZXgtcHJlZmVycmVkLXNpemU6MDttaW4taGVpZ2h0OjB9LnRveCAudG94LXNpZGViYXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3c7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS50b3ggLnRveC1zaWRlYmFyX19zbGlkZXJ7ZGlzcGxheTpmbGV4O292ZXJmbG93OmhpZGRlbn0udG94IC50b3gtc2lkZWJhcl9fcGFuZS1jb250YWluZXJ7ZGlzcGxheTpmbGV4fS50b3ggLnRveC1zaWRlYmFyX19wYW5le2Rpc3BsYXk6ZmxleH0udG94IC50b3gtc2lkZWJhci0tc2xpZGluZy1jbG9zZWR7b3BhY2l0eTowfS50b3ggLnRveC1zaWRlYmFyLS1zbGlkaW5nLW9wZW57b3BhY2l0eToxfS50b3ggLnRveC1zaWRlYmFyLS1zbGlkaW5nLWdyb3dpbmcsLnRveCAudG94LXNpZGViYXItLXNsaWRpbmctc2hyaW5raW5ne3RyYW5zaXRpb246d2lkdGggLjVzIGVhc2Usb3BhY2l0eSAuNXMgZWFzZX0udG94IC50b3gtc2VsZWN0b3J7YmFja2dyb3VuZC1jb2xvcjojNDA5OWZmO2JvcmRlci1jb2xvcjojNDA5OWZmO2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6MXB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MTBweDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxMHB4fS50b3gudG94LXBsYXRmb3JtLXRvdWNoIC50b3gtc2VsZWN0b3J7aGVpZ2h0OjEycHg7d2lkdGg6MTJweH0udG94IC50b3gtc2xpZGVye2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7ZmxleDoxOy1tcy1mbGV4LXByZWZlcnJlZC1zaXplOmF1dG87aGVpZ2h0OjI0cHg7anVzdGlmeS1jb250ZW50OmNlbnRlcjtwb3NpdGlvbjpyZWxhdGl2ZX0udG94IC50b3gtc2xpZGVyX19yYWlse2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2JvcmRlci1yYWRpdXM6M3B4O2hlaWdodDoxMHB4O21pbi13aWR0aDoxMjBweDt3aWR0aDoxMDAlfS50b3ggLnRveC1zbGlkZXJfX2hhbmRsZXtiYWNrZ3JvdW5kLWNvbG9yOiMyMDdhYjc7Ym9yZGVyOjJweCBzb2xpZCAjMTg1ZDhjO2JvcmRlci1yYWRpdXM6M3B4O2JveC1zaGFkb3c6bm9uZTtoZWlnaHQ6MjRweDtsZWZ0OjUwJTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoLTUwJSk7d2lkdGg6MTRweH0udG94IC50b3gtc291cmNlLWNvZGV7b3ZlcmZsb3c6YXV0b30udG94IC50b3gtc3Bpbm5lcntkaXNwbGF5OmZsZXh9LnRveCAudG94LXNwaW5uZXI+ZGl2e2FuaW1hdGlvbjp0YW0tYm91bmNpbmctZG90cyAxLjVzIGVhc2UtaW4tb3V0IDBzIGluZmluaXRlIGJvdGg7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDM0LDQ3LDYyLC43KTtib3JkZXItcmFkaXVzOjEwMCU7aGVpZ2h0OjhweDt3aWR0aDo4cHh9LnRveCAudG94LXNwaW5uZXI+ZGl2Om50aC1jaGlsZCgxKXthbmltYXRpb24tZGVsYXk6LS4zMnN9LnRveCAudG94LXNwaW5uZXI+ZGl2Om50aC1jaGlsZCgyKXthbmltYXRpb24tZGVsYXk6LS4xNnN9QGtleWZyYW1lcyB0YW0tYm91bmNpbmctZG90c3swJSwxMDAlLDgwJXt0cmFuc2Zvcm06c2NhbGUoMCl9NDAle3RyYW5zZm9ybTpzY2FsZSgxKX19LnRveDpub3QoW2Rpcj1ydGxdKSAudG94LXNwaW5uZXI+ZGl2Om5vdCg6Zmlyc3QtY2hpbGQpe21hcmdpbi1sZWZ0OjRweH0udG94W2Rpcj1ydGxdIC50b3gtc3Bpbm5lcj5kaXY6bm90KDpmaXJzdC1jaGlsZCl7bWFyZ2luLXJpZ2h0OjRweH0udG94IC50b3gtc3RhdHVzYmFye2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyLXRvcDoxcHggc29saWQgI2NjYztjb2xvcjpyZ2JhKDM0LDQ3LDYyLC43KTtkaXNwbGF5OmZsZXg7ZmxleDowIDAgYXV0bztmb250LXNpemU6MTJweDtmb250LXdlaWdodDo0MDA7aGVpZ2h0OjE4cHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MCA4cHg7cG9zaXRpb246cmVsYXRpdmU7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfS50b3ggLnRveC1zdGF0dXNiYXJfX3RleHQtY29udGFpbmVye2Rpc3BsYXk6ZmxleDtmbGV4OjEgMSBhdXRvO2p1c3RpZnktY29udGVudDpmbGV4LWVuZDtvdmVyZmxvdzpoaWRkZW59LnRveCAudG94LXN0YXR1c2Jhcl9fcGF0aHtkaXNwbGF5OmZsZXg7ZmxleDoxIDEgYXV0bzttYXJnaW4tcmlnaHQ6YXV0bztvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXB9LnRveCAudG94LXN0YXR1c2Jhcl9fcGF0aD4qe2Rpc3BsYXk6aW5saW5lO3doaXRlLXNwYWNlOm5vd3JhcH0udG94IC50b3gtc3RhdHVzYmFyX193b3JkY291bnR7ZmxleDowIDAgYXV0bzttYXJnaW4tbGVmdDoxY2h9LnRveCAudG94LXN0YXR1c2JhciBhLC50b3ggLnRveC1zdGF0dXNiYXJfX3BhdGgtaXRlbSwudG94IC50b3gtc3RhdHVzYmFyX193b3JkY291bnR7Y29sb3I6cmdiYSgzNCw0Nyw2MiwuNyk7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnRveCAudG94LXN0YXR1c2JhciBhOmZvY3VzOm5vdCg6ZGlzYWJsZWQpOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSksLnRveCAudG94LXN0YXR1c2JhciBhOmhvdmVyOm5vdCg6ZGlzYWJsZWQpOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSksLnRveCAudG94LXN0YXR1c2Jhcl9fcGF0aC1pdGVtOmZvY3VzOm5vdCg6ZGlzYWJsZWQpOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSksLnRveCAudG94LXN0YXR1c2Jhcl9fcGF0aC1pdGVtOmhvdmVyOm5vdCg6ZGlzYWJsZWQpOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSksLnRveCAudG94LXN0YXR1c2Jhcl9fd29yZGNvdW50OmZvY3VzOm5vdCg6ZGlzYWJsZWQpOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSksLnRveCAudG94LXN0YXR1c2Jhcl9fd29yZGNvdW50OmhvdmVyOm5vdCg6ZGlzYWJsZWQpOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSl7Y3Vyc29yOnBvaW50ZXI7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX0udG94IC50b3gtc3RhdHVzYmFyX19yZXNpemUtaGFuZGxle2FsaWduLWl0ZW1zOmZsZXgtZW5kO2FsaWduLXNlbGY6c3RyZXRjaDtjdXJzb3I6bndzZS1yZXNpemU7ZGlzcGxheTpmbGV4O2ZsZXg6MCAwIGF1dG87anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO21hcmdpbi1sZWZ0OmF1dG87bWFyZ2luLXJpZ2h0Oi04cHg7cGFkZGluZy1sZWZ0OjFjaH0udG94IC50b3gtc3RhdHVzYmFyX19yZXNpemUtaGFuZGxlIHN2Z3tkaXNwbGF5OmJsb2NrO2ZpbGw6cmdiYSgzNCw0Nyw2MiwuNyl9LnRveDpub3QoW2Rpcj1ydGxdKSAudG94LXN0YXR1c2Jhcl9fcGF0aD4qe21hcmdpbi1yaWdodDo0cHh9LnRveDpub3QoW2Rpcj1ydGxdKSAudG94LXN0YXR1c2Jhcl9fYnJhbmRpbmd7bWFyZ2luLWxlZnQ6MWNofS50b3hbZGlyPXJ0bF0gLnRveC1zdGF0dXNiYXJ7ZmxleC1kaXJlY3Rpb246cm93LXJldmVyc2V9LnRveFtkaXI9cnRsXSAudG94LXN0YXR1c2Jhcl9fcGF0aD4qe21hcmdpbi1sZWZ0OjRweH0udG94IC50b3gtdGhyb2JiZXJ7ei1pbmRleDoxNDAwfS50b3ggLnRveC10aHJvYmJlcl9fYnVzeS1zcGlubmVye2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjYpO2JvdHRvbTowO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2xlZnQ6MDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3RvcDowfS50b3ggLnRveC10YnRue2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MDtib3JkZXItcmFkaXVzOjNweDtib3gtc2hhZG93Om5vbmU7Y29sb3I6IzIyMmYzZTtkaXNwbGF5OmZsZXg7ZmxleDowIDAgYXV0bztmb250LXNpemU6MTRweDtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDo0MDA7aGVpZ2h0OjM0cHg7anVzdGlmeS1jb250ZW50OmNlbnRlcjttYXJnaW46MnB4IDAgM3B4IDA7b3V0bGluZTowO292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7dGV4dC10cmFuc2Zvcm06bm9uZTt3aWR0aDozNHB4fS50b3ggLnRveC10YnRuIHN2Z3tkaXNwbGF5OmJsb2NrO2ZpbGw6IzIyMmYzZX0udG94IC50b3gtdGJ0bi50b3gtdGJ0bi1tb3Jle3BhZGRpbmctbGVmdDo1cHg7cGFkZGluZy1yaWdodDo1cHg7d2lkdGg6aW5oZXJpdH0udG94IC50b3gtdGJ0bjpmb2N1c3tiYWNrZ3JvdW5kOiNkZWUwZTI7Ym9yZGVyOjA7Ym94LXNoYWRvdzpub25lfS50b3ggLnRveC10YnRuOmhvdmVye2JhY2tncm91bmQ6I2RlZTBlMjtib3JkZXI6MDtib3gtc2hhZG93Om5vbmU7Y29sb3I6IzIyMmYzZX0udG94IC50b3gtdGJ0bjpob3ZlciBzdmd7ZmlsbDojMjIyZjNlfS50b3ggLnRveC10YnRuOmFjdGl2ZXtiYWNrZ3JvdW5kOiNjOGNiY2Y7Ym9yZGVyOjA7Ym94LXNoYWRvdzpub25lO2NvbG9yOiMyMjJmM2V9LnRveCAudG94LXRidG46YWN0aXZlIHN2Z3tmaWxsOiMyMjJmM2V9LnRveCAudG94LXRidG4tLWRpc2FibGVkLC50b3ggLnRveC10YnRuLS1kaXNhYmxlZDpob3ZlciwudG94IC50b3gtdGJ0bjpkaXNhYmxlZCwudG94IC50b3gtdGJ0bjpkaXNhYmxlZDpob3ZlcntiYWNrZ3JvdW5kOjAgMDtib3JkZXI6MDtib3gtc2hhZG93Om5vbmU7Y29sb3I6cmdiYSgzNCw0Nyw2MiwuNSk7Y3Vyc29yOm5vdC1hbGxvd2VkfS50b3ggLnRveC10YnRuLS1kaXNhYmxlZCBzdmcsLnRveCAudG94LXRidG4tLWRpc2FibGVkOmhvdmVyIHN2ZywudG94IC50b3gtdGJ0bjpkaXNhYmxlZCBzdmcsLnRveCAudG94LXRidG46ZGlzYWJsZWQ6aG92ZXIgc3Zne2ZpbGw6cmdiYSgzNCw0Nyw2MiwuNSl9LnRveCAudG94LXRidG4tLWVuYWJsZWQsLnRveCAudG94LXRidG4tLWVuYWJsZWQ6aG92ZXJ7YmFja2dyb3VuZDojYzhjYmNmO2JvcmRlcjowO2JveC1zaGFkb3c6bm9uZTtjb2xvcjojMjIyZjNlfS50b3ggLnRveC10YnRuLS1lbmFibGVkOmhvdmVyPiosLnRveCAudG94LXRidG4tLWVuYWJsZWQ+Knt0cmFuc2Zvcm06bm9uZX0udG94IC50b3gtdGJ0bi0tZW5hYmxlZCBzdmcsLnRveCAudG94LXRidG4tLWVuYWJsZWQ6aG92ZXIgc3Zne2ZpbGw6IzIyMmYzZX0udG94IC50b3gtdGJ0bjpmb2N1czpub3QoLnRveC10YnRuLS1kaXNhYmxlZCl7Y29sb3I6IzIyMmYzZX0udG94IC50b3gtdGJ0bjpmb2N1czpub3QoLnRveC10YnRuLS1kaXNhYmxlZCkgc3Zne2ZpbGw6IzIyMmYzZX0udG94IC50b3gtdGJ0bjphY3RpdmU+Knt0cmFuc2Zvcm06bm9uZX0udG94IC50b3gtdGJ0bi0tbWR7aGVpZ2h0OjUxcHg7d2lkdGg6NTFweH0udG94IC50b3gtdGJ0bi0tbGd7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2hlaWdodDo2OHB4O3dpZHRoOjY4cHh9LnRveCAudG94LXRidG4tLXJldHVybnstbXMtZ3JpZC1yb3ctYWxpZ246c3RyZXRjaDthbGlnbi1zZWxmOnN0cmV0Y2g7aGVpZ2h0OnVuc2V0O3dpZHRoOjE2cHh9LnRveCAudG94LXRidG4tLWxhYmVsZWR7cGFkZGluZzowIDRweDt3aWR0aDp1bnNldH0udG94IC50b3gtdGJ0bl9fdmxhYmVse2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjEwcHg7Zm9udC13ZWlnaHQ6NDAwO2xldHRlci1zcGFjaW5nOi0uMDI1ZW07bWFyZ2luLWJvdHRvbTo0cHg7d2hpdGUtc3BhY2U6bm93cmFwfS50b3ggLnRveC10YnRuLS1zZWxlY3R7bWFyZ2luOjJweCAwIDNweCAwO3BhZGRpbmc6MCA0cHg7d2lkdGg6YXV0b30udG94IC50b3gtdGJ0bl9fc2VsZWN0LWxhYmVse2N1cnNvcjpkZWZhdWx0O2ZvbnQtd2VpZ2h0OjQwMDttYXJnaW46MCA0cHh9LnRveCAudG94LXRidG5fX3NlbGVjdC1jaGV2cm9ue2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjt3aWR0aDoxNnB4fS50b3ggLnRveC10YnRuX19zZWxlY3QtY2hldnJvbiBzdmd7ZmlsbDpyZ2JhKDM0LDQ3LDYyLC41KX0udG94IC50b3gtdGJ0bi0tYmVzcG9rZSAudG94LXRidG5fX3NlbGVjdC1sYWJlbHtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXA7d2lkdGg6N2VtfS50b3ggLnRveC1zcGxpdC1idXR0b257Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czozcHg7Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6ZmxleDttYXJnaW46MnB4IDAgM3B4IDA7b3ZlcmZsb3c6aGlkZGVufS50b3ggLnRveC1zcGxpdC1idXR0b246aG92ZXJ7Ym94LXNoYWRvdzowIDAgMCAxcHggI2RlZTBlMiBpbnNldH0udG94IC50b3gtc3BsaXQtYnV0dG9uOmZvY3Vze2JhY2tncm91bmQ6I2RlZTBlMjtib3gtc2hhZG93Om5vbmU7Y29sb3I6IzIyMmYzZX0udG94IC50b3gtc3BsaXQtYnV0dG9uPip7Ym9yZGVyLXJhZGl1czowfS50b3ggLnRveC1zcGxpdC1idXR0b25fX2NoZXZyb257d2lkdGg6MTZweH0udG94IC50b3gtc3BsaXQtYnV0dG9uX19jaGV2cm9uIHN2Z3tmaWxsOnJnYmEoMzQsNDcsNjIsLjUpfS50b3ggLnRveC1zcGxpdC1idXR0b24gLnRveC10YnRue21hcmdpbjowfS50b3gudG94LXBsYXRmb3JtLXRvdWNoIC50b3gtc3BsaXQtYnV0dG9uIC50b3gtdGJ0bjpmaXJzdC1jaGlsZHt3aWR0aDozMHB4fS50b3gudG94LXBsYXRmb3JtLXRvdWNoIC50b3gtc3BsaXQtYnV0dG9uX19jaGV2cm9ue3dpZHRoOjIwcHh9LnRveCAudG94LXNwbGl0LWJ1dHRvbi50b3gtdGJ0bi0tZGlzYWJsZWQgLnRveC10YnRuOmZvY3VzLC50b3ggLnRveC1zcGxpdC1idXR0b24udG94LXRidG4tLWRpc2FibGVkIC50b3gtdGJ0bjpob3ZlciwudG94IC50b3gtc3BsaXQtYnV0dG9uLnRveC10YnRuLS1kaXNhYmxlZDpmb2N1cywudG94IC50b3gtc3BsaXQtYnV0dG9uLnRveC10YnRuLS1kaXNhYmxlZDpob3ZlcntiYWNrZ3JvdW5kOjAgMDtib3gtc2hhZG93Om5vbmU7Y29sb3I6cmdiYSgzNCw0Nyw2MiwuNSl9LnRveCAudG94LXRvb2xiYXItb3ZlcmxvcmR7YmFja2dyb3VuZC1jb2xvcjojZmZmfS50b3ggLnRveC10b29sYmFyLC50b3ggLnRveC10b29sYmFyX19vdmVyZmxvdywudG94IC50b3gtdG9vbGJhcl9fcHJpbWFyeXtiYWNrZ3JvdW5kOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgaGVpZ2h0PSczOXB4JyB2aWV3Qm94PScwIDAgNDAgMzlweCcgd2lkdGg9JzQwJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcmVjdCB4PScwJyB5PSczOHB4JyB3aWR0aD0nMTAwJyBoZWlnaHQ9JzEnIGZpbGw9JyUyM2NjY2NjYycvJTNFJTNDL3N2ZyUzRSIpIGxlZnQgMCB0b3AgMCAjZmZmO2JhY2tncm91bmQtY29sb3I6I2ZmZjtkaXNwbGF5OmZsZXg7ZmxleDowIDAgYXV0bztmbGV4LXNocmluazowO2ZsZXgtd3JhcDp3cmFwO3BhZGRpbmc6MCAwfS50b3ggLnRveC10b29sYmFyX19vdmVyZmxvdy50b3gtdG9vbGJhcl9fb3ZlcmZsb3ctLWNsb3NlZHtoZWlnaHQ6MDtvcGFjaXR5OjA7cGFkZGluZy1ib3R0b206MDtwYWRkaW5nLXRvcDowO3Zpc2liaWxpdHk6aGlkZGVufS50b3ggLnRveC10b29sYmFyX19vdmVyZmxvdy0tZ3Jvd2luZ3t0cmFuc2l0aW9uOmhlaWdodCAuM3MgZWFzZSxvcGFjaXR5IC4ycyBsaW5lYXIgLjFzfS50b3ggLnRveC10b29sYmFyX19vdmVyZmxvdy0tc2hyaW5raW5ne3RyYW5zaXRpb246b3BhY2l0eSAuM3MgZWFzZSxoZWlnaHQgLjJzIGxpbmVhciAuMXMsdmlzaWJpbGl0eSAwcyBsaW5lYXIgLjNzfS50b3ggLnRveC1tZW51YmFyKy50b3gtdG9vbGJhciwudG94IC50b3gtbWVudWJhcisudG94LXRvb2xiYXItb3ZlcmxvcmQgLnRveC10b29sYmFyX19wcmltYXJ5e2JvcmRlci10b3A6MXB4IHNvbGlkICNjY2M7bWFyZ2luLXRvcDotMXB4fS50b3ggLnRveC10b29sYmFyLS1zY3JvbGxpbmd7ZmxleC13cmFwOm5vd3JhcDtvdmVyZmxvdy14OmF1dG99LnRveCAudG94LXBvcCAudG94LXRvb2xiYXJ7Ym9yZGVyLXdpZHRoOjB9LnRveCAudG94LXRvb2xiYXItLW5vLWRpdmlkZXJ7YmFja2dyb3VuZC1pbWFnZTpub25lfS50b3gtdGlueW1jZTpub3QoLnRveC10aW55bWNlLWlubGluZSkgLnRveC1lZGl0b3ItaGVhZGVyOm5vdCg6Zmlyc3QtY2hpbGQpIC50b3gtdG9vbGJhci1vdmVybG9yZDpmaXJzdC1jaGlsZCAudG94LXRvb2xiYXJfX3ByaW1hcnksLnRveC10aW55bWNlOm5vdCgudG94LXRpbnltY2UtaW5saW5lKSAudG94LWVkaXRvci1oZWFkZXI6bm90KDpmaXJzdC1jaGlsZCkgLnRveC10b29sYmFyOmZpcnN0LWNoaWxke2JvcmRlci10b3A6MXB4IHNvbGlkICNjY2N9LnRveC50b3gtdGlueW1jZS1hdXggLnRveC10b29sYmFyX19vdmVyZmxvd3tiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2JvcmRlci1yYWRpdXM6M3B4O2JveC1zaGFkb3c6MCAxcHggM3B4IHJnYmEoMCwwLDAsLjE1KX0udG94W2Rpcj1ydGxdIC50b3gtdGJ0bl9faWNvbi1ydGwgc3Zne3RyYW5zZm9ybTpyb3RhdGVZKDE4MGRlZyl9LnRveCAudG94LXRvb2xiYXJfX2dyb3Vwe2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7bWFyZ2luOjAgMDtwYWRkaW5nOjAgNHB4IDAgNHB4fS50b3ggLnRveC10b29sYmFyX19ncm91cC0tcHVsbC1yaWdodHttYXJnaW4tbGVmdDphdXRvfS50b3ggLnRveC10b29sYmFyLS1zY3JvbGxpbmcgLnRveC10b29sYmFyX19ncm91cHtmbGV4LXNocmluazowO2ZsZXgtd3JhcDpub3dyYXB9LnRveDpub3QoW2Rpcj1ydGxdKSAudG94LXRvb2xiYXJfX2dyb3VwOm5vdCg6bGFzdC1vZi10eXBlKXtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNjY2N9LnRveFtkaXI9cnRsXSAudG94LXRvb2xiYXJfX2dyb3VwOm5vdCg6bGFzdC1vZi10eXBlKXtib3JkZXItbGVmdDoxcHggc29saWQgI2NjY30udG94IC50b3gtdG9vbHRpcHtkaXNwbGF5OmlubGluZS1ibG9jaztwYWRkaW5nOjhweDtwb3NpdGlvbjpyZWxhdGl2ZX0udG94IC50b3gtdG9vbHRpcF9fYm9keXtiYWNrZ3JvdW5kLWNvbG9yOiMyMjJmM2U7Ym9yZGVyLXJhZGl1czozcHg7Ym94LXNoYWRvdzowIDJweCA0cHggcmdiYSgzNCw0Nyw2MiwuMyk7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNzUpO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjQwMDtwYWRkaW5nOjRweCA4cHg7dGV4dC10cmFuc2Zvcm06bm9uZX0udG94IC50b3gtdG9vbHRpcF9fYXJyb3d7cG9zaXRpb246YWJzb2x1dGV9LnRveCAudG94LXRvb2x0aXAtLWRvd24gLnRveC10b29sdGlwX19hcnJvd3tib3JkZXItbGVmdDo4cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJpZ2h0OjhweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItdG9wOjhweCBzb2xpZCAjMjIyZjNlO2JvdHRvbTowO2xlZnQ6NTAlO3Bvc2l0aW9uOmFic29sdXRlO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpfS50b3ggLnRveC10b29sdGlwLS11cCAudG94LXRvb2x0aXBfX2Fycm93e2JvcmRlci1ib3R0b206OHB4IHNvbGlkICMyMjJmM2U7Ym9yZGVyLWxlZnQ6OHB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodDo4cHggc29saWQgdHJhbnNwYXJlbnQ7bGVmdDo1MCU7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSl9LnRveCAudG94LXRvb2x0aXAtLXJpZ2h0IC50b3gtdG9vbHRpcF9fYXJyb3d7Ym9yZGVyLWJvdHRvbTo4cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWxlZnQ6OHB4IHNvbGlkICMyMjJmM2U7Ym9yZGVyLXRvcDo4cHggc29saWQgdHJhbnNwYXJlbnQ7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDt0b3A6NTAlO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpfS50b3ggLnRveC10b29sdGlwLS1sZWZ0IC50b3gtdG9vbHRpcF9fYXJyb3d7Ym9yZGVyLWJvdHRvbTo4cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJpZ2h0OjhweCBzb2xpZCAjMjIyZjNlO2JvcmRlci10b3A6OHB4IHNvbGlkIHRyYW5zcGFyZW50O2xlZnQ6MDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpfS50b3ggLnRveC13ZWxse2JvcmRlcjoxcHggc29saWQgI2NjYztib3JkZXItcmFkaXVzOjNweDtwYWRkaW5nOjhweDt3aWR0aDoxMDAlfS50b3ggLnRveC13ZWxsPjpmaXJzdC1jaGlsZHttYXJnaW4tdG9wOjB9LnRveCAudG94LXdlbGw+Omxhc3QtY2hpbGR7bWFyZ2luLWJvdHRvbTowfS50b3ggLnRveC13ZWxsPjpvbmx5LWNoaWxke21hcmdpbjowfS50b3ggLnRveC1jdXN0b20tZWRpdG9ye2JvcmRlcjoxcHggc29saWQgI2NjYztib3JkZXItcmFkaXVzOjNweDtkaXNwbGF5OmZsZXg7ZmxleDoxO3Bvc2l0aW9uOnJlbGF0aXZlfS50b3ggLnRveC1kaWFsb2ctbG9hZGluZzo6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNSk7Y29udGVudDoiIjtoZWlnaHQ6MTAwJTtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxMDAlO3otaW5kZXg6MTAwMH0udG94IC50b3gtdGFie2N1cnNvcjpwb2ludGVyfS50b3ggLnRveC1kaWFsb2dfX2NvbnRlbnQtanN7ZGlzcGxheTpmbGV4O2ZsZXg6MTstbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTphdXRvfS50b3ggLnRveC1kaWFsb2dfX2JvZHktY29udGVudCAudG94LWNvbGxlY3Rpb257ZGlzcGxheTpmbGV4O2ZsZXg6MTstbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTphdXRvfS50b3ggLnRveC1pbWFnZS10b29scy1lZGl0LXBhbmVse2hlaWdodDo2MHB4fS50b3ggLnRveC1pbWFnZS10b29sc19fc2lkZWJhcntoZWlnaHQ6NjBweH0K]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/skins/ui/oxide/skin.mobile.min.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICovCi50aW55bWNlLW1vYmlsZS1vdXRlci1jb250YWluZXJ7YWxsOmluaXRpYWw7ZGlzcGxheTpibG9ja30udGlueW1jZS1tb2JpbGUtb3V0ZXItY29udGFpbmVyICp7Ym9yZGVyOjA7Ym94LXNpemluZzppbml0aWFsO2N1cnNvcjppbmhlcml0O2Zsb2F0Om5vbmU7bGluZS1oZWlnaHQ6MTttYXJnaW46MDtvdXRsaW5lOjA7cGFkZGluZzowOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0ZXh0LXNoYWRvdzpub25lO3doaXRlLXNwYWNlOm5vd3JhcH0udGlueW1jZS1tb2JpbGUtaWNvbi1hcnJvdy1iYWNrOjpiZWZvcmV7Y29udGVudDoiXGU1Y2QifS50aW55bWNlLW1vYmlsZS1pY29uLWltYWdlOjpiZWZvcmV7Y29udGVudDoiXGU0MTIifS50aW55bWNlLW1vYmlsZS1pY29uLWNhbmNlbC1jaXJjbGU6OmJlZm9yZXtjb250ZW50OiJcZTVjOSJ9LnRpbnltY2UtbW9iaWxlLWljb24tZnVsbC1kb3Q6OmJlZm9yZXtjb250ZW50OiJcZTA2MSJ9LnRpbnltY2UtbW9iaWxlLWljb24tYWxpZ24tY2VudGVyOjpiZWZvcmV7Y29udGVudDoiXGUyMzQifS50aW55bWNlLW1vYmlsZS1pY29uLWFsaWduLWxlZnQ6OmJlZm9yZXtjb250ZW50OiJcZTIzNiJ9LnRpbnltY2UtbW9iaWxlLWljb24tYWxpZ24tcmlnaHQ6OmJlZm9yZXtjb250ZW50OiJcZTIzNyJ9LnRpbnltY2UtbW9iaWxlLWljb24tYm9sZDo6YmVmb3Jle2NvbnRlbnQ6IlxlMjM4In0udGlueW1jZS1tb2JpbGUtaWNvbi1pdGFsaWM6OmJlZm9yZXtjb250ZW50OiJcZTIzZiJ9LnRpbnltY2UtbW9iaWxlLWljb24tdW5vcmRlcmVkLWxpc3Q6OmJlZm9yZXtjb250ZW50OiJcZTI0MSJ9LnRpbnltY2UtbW9iaWxlLWljb24tb3JkZXJlZC1saXN0OjpiZWZvcmV7Y29udGVudDoiXGUyNDIifS50aW55bWNlLW1vYmlsZS1pY29uLWZvbnQtc2l6ZTo6YmVmb3Jle2NvbnRlbnQ6IlxlMjQ1In0udGlueW1jZS1tb2JpbGUtaWNvbi11bmRlcmxpbmU6OmJlZm9yZXtjb250ZW50OiJcZTI0OSJ9LnRpbnltY2UtbW9iaWxlLWljb24tbGluazo6YmVmb3Jle2NvbnRlbnQ6IlxlMTU3In0udGlueW1jZS1tb2JpbGUtaWNvbi11bmxpbms6OmJlZm9yZXtjb250ZW50OiJcZWNhMiJ9LnRpbnltY2UtbW9iaWxlLWljb24tY29sb3I6OmJlZm9yZXtjb250ZW50OiJcZTg5MSJ9LnRpbnltY2UtbW9iaWxlLWljb24tcHJldmlvdXM6OmJlZm9yZXtjb250ZW50OiJcZTMxNCJ9LnRpbnltY2UtbW9iaWxlLWljb24tbmV4dDo6YmVmb3Jle2NvbnRlbnQ6IlxlMzE1In0udGlueW1jZS1tb2JpbGUtaWNvbi1sYXJnZS1mb250OjpiZWZvcmUsLnRpbnltY2UtbW9iaWxlLWljb24tc3R5bGUtZm9ybWF0czo6YmVmb3Jle2NvbnRlbnQ6IlxlMjY0In0udGlueW1jZS1tb2JpbGUtaWNvbi11bmRvOjpiZWZvcmV7Y29udGVudDoiXGUxNjYifS50aW55bWNlLW1vYmlsZS1pY29uLXJlZG86OmJlZm9yZXtjb250ZW50OiJcZTE1YSJ9LnRpbnltY2UtbW9iaWxlLWljb24tcmVtb3ZlZm9ybWF0OjpiZWZvcmV7Y29udGVudDoiXGUyMzkifS50aW55bWNlLW1vYmlsZS1pY29uLXNtYWxsLWZvbnQ6OmJlZm9yZXtjb250ZW50OiJcZTkwNiJ9LnRpbnltY2UtbW9iaWxlLWZvcm1hdC1tYXRjaGVzOjphZnRlciwudGlueW1jZS1tb2JpbGUtaWNvbi1yZWFkb25seS1iYWNrOjpiZWZvcmV7Y29udGVudDoiXGU1Y2EifS50aW55bWNlLW1vYmlsZS1pY29uLXNtYWxsLWhlYWRpbmc6OmJlZm9yZXtjb250ZW50OiJzbWFsbCJ9LnRpbnltY2UtbW9iaWxlLWljb24tbGFyZ2UtaGVhZGluZzo6YmVmb3Jle2NvbnRlbnQ6ImxhcmdlIn0udGlueW1jZS1tb2JpbGUtaWNvbi1sYXJnZS1oZWFkaW5nOjpiZWZvcmUsLnRpbnltY2UtbW9iaWxlLWljb24tc21hbGwtaGVhZGluZzo6YmVmb3Jle2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7Zm9udC1zaXplOjgwJX0udGlueW1jZS1tb2JpbGUtbWFzay1lZGl0LWljb246OmJlZm9yZXtjb250ZW50OiJcZTI1NCJ9LnRpbnltY2UtbW9iaWxlLWljb24tYmFjazo6YmVmb3Jle2NvbnRlbnQ6IlxlNWM0In0udGlueW1jZS1tb2JpbGUtaWNvbi1oZWFkaW5nOjpiZWZvcmV7Y29udGVudDoiSGVhZGluZ3MiO2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7Zm9udC1zaXplOjgwJTtmb250LXdlaWdodDo3MDB9LnRpbnltY2UtbW9iaWxlLWljb24taDE6OmJlZm9yZXtjb250ZW50OiJIMSI7Zm9udC13ZWlnaHQ6NzAwfS50aW55bWNlLW1vYmlsZS1pY29uLWgyOjpiZWZvcmV7Y29udGVudDoiSDIiO2ZvbnQtd2VpZ2h0OjcwMH0udGlueW1jZS1tb2JpbGUtaWNvbi1oMzo6YmVmb3Jle2NvbnRlbnQ6IkgzIjtmb250LXdlaWdodDo3MDB9LnRpbnltY2UtbW9iaWxlLW91dGVyLWNvbnRhaW5lciAudGlueW1jZS1tb2JpbGUtZGlzYWJsZWQtbWFza3thbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YmFja2dyb3VuZDpyZ2JhKDUxLDUxLDUxLC41KTtoZWlnaHQ6MTAwJTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDt3aWR0aDoxMDAlfS50aW55bWNlLW1vYmlsZS1vdXRlci1jb250YWluZXIgLnRpbnltY2UtbW9iaWxlLWRpc2FibGVkLW1hc2sgLnRpbnltY2UtbW9iaWxlLWNvbnRlbnQtY29udGFpbmVye2FsaWduLWl0ZW1zOmNlbnRlcjtib3JkZXItcmFkaXVzOjUwJTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7Zm9udC1zaXplOjFlbTtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn0udGlueW1jZS1tb2JpbGUtb3V0ZXItY29udGFpbmVyIC50aW55bWNlLW1vYmlsZS1kaXNhYmxlZC1tYXNrIC50aW55bWNlLW1vYmlsZS1jb250ZW50LWNvbnRhaW5lciAubWl4aW4tbWVudS1pdGVte2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjtib3JkZXItcmFkaXVzOjUwJTtoZWlnaHQ6Mi4xZW07d2lkdGg6Mi4xZW19LnRpbnltY2UtbW9iaWxlLW91dGVyLWNvbnRhaW5lciAudGlueW1jZS1tb2JpbGUtZGlzYWJsZWQtbWFzayAudGlueW1jZS1tb2JpbGUtY29udGVudC1jb250YWluZXIgLnRpbnltY2UtbW9iaWxlLWNvbnRlbnQtdGFwLXNlY3Rpb257YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmb250LXNpemU6MWVtfUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi1kZXZpY2Utd2lkdGg6NzAwcHgpey50aW55bWNlLW1vYmlsZS1vdXRlci1jb250YWluZXIgLnRpbnltY2UtbW9iaWxlLWRpc2FibGVkLW1hc2sgLnRpbnltY2UtbW9iaWxlLWNvbnRlbnQtY29udGFpbmVyIC50aW55bWNlLW1vYmlsZS1jb250ZW50LXRhcC1zZWN0aW9ue2ZvbnQtc2l6ZToxLjJlbX19LnRpbnltY2UtbW9iaWxlLW91dGVyLWNvbnRhaW5lciAudGlueW1jZS1tb2JpbGUtZGlzYWJsZWQtbWFzayAudGlueW1jZS1tb2JpbGUtY29udGVudC1jb250YWluZXIgLnRpbnltY2UtbW9iaWxlLWNvbnRlbnQtdGFwLXNlY3Rpb24gLnRpbnltY2UtbW9iaWxlLW1hc2stdGFwLWljb257YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2JvcmRlci1yYWRpdXM6NTAlO2hlaWdodDoyLjFlbTt3aWR0aDoyLjFlbTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6IzIwN2FiN30udGlueW1jZS1tb2JpbGUtb3V0ZXItY29udGFpbmVyIC50aW55bWNlLW1vYmlsZS1kaXNhYmxlZC1tYXNrIC50aW55bWNlLW1vYmlsZS1jb250ZW50LWNvbnRhaW5lciAudGlueW1jZS1tb2JpbGUtY29udGVudC10YXAtc2VjdGlvbiAudGlueW1jZS1tb2JpbGUtbWFzay10YXAtaWNvbjo6YmVmb3Jle2NvbnRlbnQ6IlxlOTAwIjtmb250LWZhbWlseTp0aW55bWNlLW1vYmlsZSxzYW5zLXNlcmlmfS50aW55bWNlLW1vYmlsZS1vdXRlci1jb250YWluZXIgLnRpbnltY2UtbW9iaWxlLWRpc2FibGVkLW1hc2sgLnRpbnltY2UtbW9iaWxlLWNvbnRlbnQtY29udGFpbmVyIC50aW55bWNlLW1vYmlsZS1jb250ZW50LXRhcC1zZWN0aW9uOm5vdCgudGlueW1jZS1tb2JpbGUtbWFzay10YXAtaWNvbi1zZWxlY3RlZCkgLnRpbnltY2UtbW9iaWxlLW1hc2stdGFwLWljb257ei1pbmRleDoyfS50aW55bWNlLW1vYmlsZS1hbmRyb2lkLWNvbnRhaW5lci50aW55bWNlLW1vYmlsZS1hbmRyb2lkLW1heGltaXplZHtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOm5vbmU7Ym90dG9tOjA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtsZWZ0OjA7cG9zaXRpb246Zml4ZWQ7cmlnaHQ6MDt0b3A6MH0udGlueW1jZS1tb2JpbGUtYW5kcm9pZC1jb250YWluZXI6bm90KC50aW55bWNlLW1vYmlsZS1hbmRyb2lkLW1heGltaXplZCl7cG9zaXRpb246cmVsYXRpdmV9LnRpbnltY2UtbW9iaWxlLWFuZHJvaWQtY29udGFpbmVyIC50aW55bWNlLW1vYmlsZS1lZGl0b3Itc29ja2V0e2Rpc3BsYXk6ZmxleDtmbGV4LWdyb3c6MX0udGlueW1jZS1tb2JpbGUtYW5kcm9pZC1jb250YWluZXIgLnRpbnltY2UtbW9iaWxlLWVkaXRvci1zb2NrZXQgaWZyYW1le2Rpc3BsYXk6ZmxleCFpbXBvcnRhbnQ7ZmxleC1ncm93OjE7aGVpZ2h0OmF1dG8haW1wb3J0YW50fS50aW55bWNlLW1vYmlsZS1hbmRyb2lkLXNjcm9sbC1yZWxvYWR7b3ZlcmZsb3c6aGlkZGVufTpub3QoLnRpbnltY2UtbW9iaWxlLXJlYWRvbmx5LW1vZGUpPi50aW55bWNlLW1vYmlsZS1hbmRyb2lkLXNlbGVjdGlvbi1jb250ZXh0LXRvb2xiYXJ7bWFyZ2luLXRvcDoyM3B4fS50aW55bWNlLW1vYmlsZS10b29sc3RyaXB7YmFja2dyb3VuZDojZmZmO2Rpc3BsYXk6ZmxleDtmbGV4OjAgMCBhdXRvO3otaW5kZXg6MX0udGlueW1jZS1tb2JpbGUtdG9vbHN0cmlwIC50aW55bWNlLW1vYmlsZS10b29sYmFye2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2NjYztkaXNwbGF5OmZsZXg7ZmxleDoxO2hlaWdodDoyLjVlbTt3aWR0aDoxMDAlfS50aW55bWNlLW1vYmlsZS10b29sc3RyaXAgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXI6bm90KC50aW55bWNlLW1vYmlsZS1jb250ZXh0LXRvb2xiYXIpIC50aW55bWNlLW1vYmlsZS10b29sYmFyLWdyb3Vwe2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7aGVpZ2h0OjEwMCU7ZmxleC1zaHJpbms6MX0udGlueW1jZS1tb2JpbGUtdG9vbHN0cmlwIC50aW55bWNlLW1vYmlsZS10b29sYmFyOm5vdCgudGlueW1jZS1tb2JpbGUtY29udGV4dC10b29sYmFyKSAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cD5kaXZ7YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtoZWlnaHQ6MTAwJTtmbGV4OjF9LnRpbnltY2UtbW9iaWxlLXRvb2xzdHJpcCAudGlueW1jZS1tb2JpbGUtdG9vbGJhcjpub3QoLnRpbnltY2UtbW9iaWxlLWNvbnRleHQtdG9vbGJhcikgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXItZ3JvdXAudGlueW1jZS1tb2JpbGUtZXhpdC1jb250YWluZXJ7YmFja2dyb3VuZDojZjQ0MzM2fS50aW55bWNlLW1vYmlsZS10b29sc3RyaXAgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXI6bm90KC50aW55bWNlLW1vYmlsZS1jb250ZXh0LXRvb2xiYXIpIC50aW55bWNlLW1vYmlsZS10b29sYmFyLWdyb3VwLnRpbnltY2UtbW9iaWxlLXRvb2xiYXItc2Nyb2xsYWJsZS1ncm91cHtmbGV4LWdyb3c6MX0udGlueW1jZS1tb2JpbGUtdG9vbHN0cmlwIC50aW55bWNlLW1vYmlsZS10b29sYmFyOm5vdCgudGlueW1jZS1tb2JpbGUtY29udGV4dC10b29sYmFyKSAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cCAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cC1pdGVte3BhZGRpbmctbGVmdDouNWVtO3BhZGRpbmctcmlnaHQ6LjVlbX0udGlueW1jZS1tb2JpbGUtdG9vbHN0cmlwIC50aW55bWNlLW1vYmlsZS10b29sYmFyOm5vdCgudGlueW1jZS1tb2JpbGUtY29udGV4dC10b29sYmFyKSAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cCAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cC1pdGVtLnRpbnltY2UtbW9iaWxlLXRvb2xiYXItYnV0dG9ue2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7aGVpZ2h0OjgwJTttYXJnaW4tbGVmdDoycHg7bWFyZ2luLXJpZ2h0OjJweH0udGlueW1jZS1tb2JpbGUtdG9vbHN0cmlwIC50aW55bWNlLW1vYmlsZS10b29sYmFyOm5vdCgudGlueW1jZS1tb2JpbGUtY29udGV4dC10b29sYmFyKSAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cCAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cC1pdGVtLnRpbnltY2UtbW9iaWxlLXRvb2xiYXItYnV0dG9uLnRpbnltY2UtbW9iaWxlLXRvb2xiYXItYnV0dG9uLXNlbGVjdGVke2JhY2tncm91bmQ6I2M4Y2JjZjtjb2xvcjojY2NjfS50aW55bWNlLW1vYmlsZS10b29sc3RyaXAgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXI6bm90KC50aW55bWNlLW1vYmlsZS1jb250ZXh0LXRvb2xiYXIpIC50aW55bWNlLW1vYmlsZS10b29sYmFyLWdyb3VwOmZpcnN0LW9mLXR5cGUsLnRpbnltY2UtbW9iaWxlLXRvb2xzdHJpcCAudGlueW1jZS1tb2JpbGUtdG9vbGJhcjpub3QoLnRpbnltY2UtbW9iaWxlLWNvbnRleHQtdG9vbGJhcikgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXItZ3JvdXA6bGFzdC1vZi10eXBle2JhY2tncm91bmQ6IzIwN2FiNztjb2xvcjojZWNlZmYxfS50aW55bWNlLW1vYmlsZS10b29sc3RyaXAgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXIudGlueW1jZS1tb2JpbGUtY29udGV4dC10b29sYmFyIC50aW55bWNlLW1vYmlsZS10b29sYmFyLWdyb3Vwe2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7aGVpZ2h0OjEwMCU7ZmxleDoxO3BhZGRpbmctYm90dG9tOi40ZW07cGFkZGluZy10b3A6LjRlbX0udGlueW1jZS1tb2JpbGUtdG9vbHN0cmlwIC50aW55bWNlLW1vYmlsZS10b29sYmFyLnRpbnltY2UtbW9iaWxlLWNvbnRleHQtdG9vbGJhciAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cCAudGlueW1jZS1tb2JpbGUtc2VyaWFsaXNlZC1kaWFsb2d7ZGlzcGxheTpmbGV4O21pbi1oZWlnaHQ6MS41ZW07b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmctbGVmdDowO3BhZGRpbmctcmlnaHQ6MDtwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlfS50aW55bWNlLW1vYmlsZS10b29sc3RyaXAgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXIudGlueW1jZS1tb2JpbGUtY29udGV4dC10b29sYmFyIC50aW55bWNlLW1vYmlsZS10b29sYmFyLWdyb3VwIC50aW55bWNlLW1vYmlsZS1zZXJpYWxpc2VkLWRpYWxvZyAudGlueW1jZS1tb2JpbGUtc2VyaWFsaXNlZC1kaWFsb2ctY2hhaW57ZGlzcGxheTpmbGV4O2hlaWdodDoxMDAlO3RyYW5zaXRpb246bGVmdCBjdWJpYy1iZXppZXIoLjQsMCwxLDEpIC4xNXM7d2lkdGg6MTAwJX0udGlueW1jZS1tb2JpbGUtdG9vbHN0cmlwIC50aW55bWNlLW1vYmlsZS10b29sYmFyLnRpbnltY2UtbW9iaWxlLWNvbnRleHQtdG9vbGJhciAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cCAudGlueW1jZS1tb2JpbGUtc2VyaWFsaXNlZC1kaWFsb2cgLnRpbnltY2UtbW9iaWxlLXNlcmlhbGlzZWQtZGlhbG9nLWNoYWluIC50aW55bWNlLW1vYmlsZS1zZXJpYWxpc2VkLWRpYWxvZy1zY3JlZW57ZGlzcGxheTpmbGV4O2ZsZXg6MCAwIGF1dG87anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47d2lkdGg6MTAwJX0udGlueW1jZS1tb2JpbGUtdG9vbHN0cmlwIC50aW55bWNlLW1vYmlsZS10b29sYmFyLnRpbnltY2UtbW9iaWxlLWNvbnRleHQtdG9vbGJhciAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cCAudGlueW1jZS1tb2JpbGUtc2VyaWFsaXNlZC1kaWFsb2cgLnRpbnltY2UtbW9iaWxlLXNlcmlhbGlzZWQtZGlhbG9nLWNoYWluIC50aW55bWNlLW1vYmlsZS1zZXJpYWxpc2VkLWRpYWxvZy1zY3JlZW4gaW5wdXR7Zm9udC1mYW1pbHk6U2Fucy1zZXJpZn0udGlueW1jZS1tb2JpbGUtdG9vbHN0cmlwIC50aW55bWNlLW1vYmlsZS10b29sYmFyLnRpbnltY2UtbW9iaWxlLWNvbnRleHQtdG9vbGJhciAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cCAudGlueW1jZS1tb2JpbGUtc2VyaWFsaXNlZC1kaWFsb2cgLnRpbnltY2UtbW9iaWxlLXNlcmlhbGlzZWQtZGlhbG9nLWNoYWluIC50aW55bWNlLW1vYmlsZS1zZXJpYWxpc2VkLWRpYWxvZy1zY3JlZW4gLnRpbnltY2UtbW9iaWxlLWlucHV0LWNvbnRhaW5lcntkaXNwbGF5OmZsZXg7ZmxleC1ncm93OjE7cG9zaXRpb246cmVsYXRpdmV9LnRpbnltY2UtbW9iaWxlLXRvb2xzdHJpcCAudGlueW1jZS1tb2JpbGUtdG9vbGJhci50aW55bWNlLW1vYmlsZS1jb250ZXh0LXRvb2xiYXIgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXItZ3JvdXAgLnRpbnltY2UtbW9iaWxlLXNlcmlhbGlzZWQtZGlhbG9nIC50aW55bWNlLW1vYmlsZS1zZXJpYWxpc2VkLWRpYWxvZy1jaGFpbiAudGlueW1jZS1tb2JpbGUtc2VyaWFsaXNlZC1kaWFsb2ctc2NyZWVuIC50aW55bWNlLW1vYmlsZS1pbnB1dC1jb250YWluZXIgLnRpbnltY2UtbW9iaWxlLWlucHV0LWNvbnRhaW5lci14ey1tcy1ncmlkLXJvdy1hbGlnbjpjZW50ZXI7YWxpZ24tc2VsZjpjZW50ZXI7YmFja2dyb3VuZDppbmhlcml0O2JvcmRlcjpub25lO2JvcmRlci1yYWRpdXM6NTAlO2NvbG9yOiM4ODg7Zm9udC1zaXplOi42ZW07Zm9udC13ZWlnaHQ6NzAwO2hlaWdodDoxMDAlO3BhZGRpbmctcmlnaHQ6MnB4O3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjB9LnRpbnltY2UtbW9iaWxlLXRvb2xzdHJpcCAudGlueW1jZS1tb2JpbGUtdG9vbGJhci50aW55bWNlLW1vYmlsZS1jb250ZXh0LXRvb2xiYXIgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXItZ3JvdXAgLnRpbnltY2UtbW9iaWxlLXNlcmlhbGlzZWQtZGlhbG9nIC50aW55bWNlLW1vYmlsZS1zZXJpYWxpc2VkLWRpYWxvZy1jaGFpbiAudGlueW1jZS1tb2JpbGUtc2VyaWFsaXNlZC1kaWFsb2ctc2NyZWVuIC50aW55bWNlLW1vYmlsZS1pbnB1dC1jb250YWluZXIudGlueW1jZS1tb2JpbGUtaW5wdXQtY29udGFpbmVyLWVtcHR5IC50aW55bWNlLW1vYmlsZS1pbnB1dC1jb250YWluZXIteHtkaXNwbGF5Om5vbmV9LnRpbnltY2UtbW9iaWxlLXRvb2xzdHJpcCAudGlueW1jZS1tb2JpbGUtdG9vbGJhci50aW55bWNlLW1vYmlsZS1jb250ZXh0LXRvb2xiYXIgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXItZ3JvdXAgLnRpbnltY2UtbW9iaWxlLXNlcmlhbGlzZWQtZGlhbG9nIC50aW55bWNlLW1vYmlsZS1zZXJpYWxpc2VkLWRpYWxvZy1jaGFpbiAudGlueW1jZS1tb2JpbGUtc2VyaWFsaXNlZC1kaWFsb2ctc2NyZWVuIC50aW55bWNlLW1vYmlsZS1pY29uLW5leHQsLnRpbnltY2UtbW9iaWxlLXRvb2xzdHJpcCAudGlueW1jZS1tb2JpbGUtdG9vbGJhci50aW55bWNlLW1vYmlsZS1jb250ZXh0LXRvb2xiYXIgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXItZ3JvdXAgLnRpbnltY2UtbW9iaWxlLXNlcmlhbGlzZWQtZGlhbG9nIC50aW55bWNlLW1vYmlsZS1zZXJpYWxpc2VkLWRpYWxvZy1jaGFpbiAudGlueW1jZS1tb2JpbGUtc2VyaWFsaXNlZC1kaWFsb2ctc2NyZWVuIC50aW55bWNlLW1vYmlsZS1pY29uLXByZXZpb3Vze2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXh9LnRpbnltY2UtbW9iaWxlLXRvb2xzdHJpcCAudGlueW1jZS1tb2JpbGUtdG9vbGJhci50aW55bWNlLW1vYmlsZS1jb250ZXh0LXRvb2xiYXIgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXItZ3JvdXAgLnRpbnltY2UtbW9iaWxlLXNlcmlhbGlzZWQtZGlhbG9nIC50aW55bWNlLW1vYmlsZS1zZXJpYWxpc2VkLWRpYWxvZy1jaGFpbiAudGlueW1jZS1tb2JpbGUtc2VyaWFsaXNlZC1kaWFsb2ctc2NyZWVuIC50aW55bWNlLW1vYmlsZS1pY29uLW5leHQ6OmJlZm9yZSwudGlueW1jZS1tb2JpbGUtdG9vbHN0cmlwIC50aW55bWNlLW1vYmlsZS10b29sYmFyLnRpbnltY2UtbW9iaWxlLWNvbnRleHQtdG9vbGJhciAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cCAudGlueW1jZS1tb2JpbGUtc2VyaWFsaXNlZC1kaWFsb2cgLnRpbnltY2UtbW9iaWxlLXNlcmlhbGlzZWQtZGlhbG9nLWNoYWluIC50aW55bWNlLW1vYmlsZS1zZXJpYWxpc2VkLWRpYWxvZy1zY3JlZW4gLnRpbnltY2UtbW9iaWxlLWljb24tcHJldmlvdXM6OmJlZm9yZXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2ZvbnQtd2VpZ2h0OjcwMDtoZWlnaHQ6MTAwJTtwYWRkaW5nLWxlZnQ6LjVlbTtwYWRkaW5nLXJpZ2h0Oi41ZW19LnRpbnltY2UtbW9iaWxlLXRvb2xzdHJpcCAudGlueW1jZS1tb2JpbGUtdG9vbGJhci50aW55bWNlLW1vYmlsZS1jb250ZXh0LXRvb2xiYXIgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXItZ3JvdXAgLnRpbnltY2UtbW9iaWxlLXNlcmlhbGlzZWQtZGlhbG9nIC50aW55bWNlLW1vYmlsZS1zZXJpYWxpc2VkLWRpYWxvZy1jaGFpbiAudGlueW1jZS1tb2JpbGUtc2VyaWFsaXNlZC1kaWFsb2ctc2NyZWVuIC50aW55bWNlLW1vYmlsZS1pY29uLW5leHQudGlueW1jZS1tb2JpbGUtdG9vbGJhci1uYXZpZ2F0aW9uLWRpc2FibGVkOjpiZWZvcmUsLnRpbnltY2UtbW9iaWxlLXRvb2xzdHJpcCAudGlueW1jZS1tb2JpbGUtdG9vbGJhci50aW55bWNlLW1vYmlsZS1jb250ZXh0LXRvb2xiYXIgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXItZ3JvdXAgLnRpbnltY2UtbW9iaWxlLXNlcmlhbGlzZWQtZGlhbG9nIC50aW55bWNlLW1vYmlsZS1zZXJpYWxpc2VkLWRpYWxvZy1jaGFpbiAudGlueW1jZS1tb2JpbGUtc2VyaWFsaXNlZC1kaWFsb2ctc2NyZWVuIC50aW55bWNlLW1vYmlsZS1pY29uLXByZXZpb3VzLnRpbnltY2UtbW9iaWxlLXRvb2xiYXItbmF2aWdhdGlvbi1kaXNhYmxlZDo6YmVmb3Jle3Zpc2liaWxpdHk6aGlkZGVufS50aW55bWNlLW1vYmlsZS10b29sc3RyaXAgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXIudGlueW1jZS1tb2JpbGUtY29udGV4dC10b29sYmFyIC50aW55bWNlLW1vYmlsZS10b29sYmFyLWdyb3VwIC50aW55bWNlLW1vYmlsZS1kb3QtaXRlbXtjb2xvcjojY2NjO2ZvbnQtc2l6ZToxMHB4O2xpbmUtaGVpZ2h0OjEwcHg7bWFyZ2luOjAgMnB4O3BhZGRpbmctdG9wOjNweH0udGlueW1jZS1tb2JpbGUtdG9vbHN0cmlwIC50aW55bWNlLW1vYmlsZS10b29sYmFyLnRpbnltY2UtbW9iaWxlLWNvbnRleHQtdG9vbGJhciAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cCAudGlueW1jZS1tb2JpbGUtZG90LWl0ZW0udGlueW1jZS1tb2JpbGUtZG90LWFjdGl2ZXtjb2xvcjojYzhjYmNmfS50aW55bWNlLW1vYmlsZS10b29sc3RyaXAgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXIudGlueW1jZS1tb2JpbGUtY29udGV4dC10b29sYmFyIC50aW55bWNlLW1vYmlsZS10b29sYmFyLWdyb3VwIC50aW55bWNlLW1vYmlsZS1pY29uLWxhcmdlLWZvbnQ6OmJlZm9yZSwudGlueW1jZS1tb2JpbGUtdG9vbHN0cmlwIC50aW55bWNlLW1vYmlsZS10b29sYmFyLnRpbnltY2UtbW9iaWxlLWNvbnRleHQtdG9vbGJhciAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cCAudGlueW1jZS1tb2JpbGUtaWNvbi1sYXJnZS1oZWFkaW5nOjpiZWZvcmV7bWFyZ2luLWxlZnQ6LjVlbTttYXJnaW4tcmlnaHQ6LjllbX0udGlueW1jZS1tb2JpbGUtdG9vbHN0cmlwIC50aW55bWNlLW1vYmlsZS10b29sYmFyLnRpbnltY2UtbW9iaWxlLWNvbnRleHQtdG9vbGJhciAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cCAudGlueW1jZS1tb2JpbGUtaWNvbi1zbWFsbC1mb250OjpiZWZvcmUsLnRpbnltY2UtbW9iaWxlLXRvb2xzdHJpcCAudGlueW1jZS1tb2JpbGUtdG9vbGJhci50aW55bWNlLW1vYmlsZS1jb250ZXh0LXRvb2xiYXIgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXItZ3JvdXAgLnRpbnltY2UtbW9iaWxlLWljb24tc21hbGwtaGVhZGluZzo6YmVmb3Jle21hcmdpbi1sZWZ0Oi45ZW07bWFyZ2luLXJpZ2h0Oi41ZW19LnRpbnltY2UtbW9iaWxlLXRvb2xzdHJpcCAudGlueW1jZS1tb2JpbGUtdG9vbGJhci50aW55bWNlLW1vYmlsZS1jb250ZXh0LXRvb2xiYXIgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXItZ3JvdXAgLnRpbnltY2UtbW9iaWxlLXNsaWRlcntkaXNwbGF5OmZsZXg7ZmxleDoxO21hcmdpbi1sZWZ0OjA7bWFyZ2luLXJpZ2h0OjA7cGFkZGluZzouMjhlbSAwO3Bvc2l0aW9uOnJlbGF0aXZlfS50aW55bWNlLW1vYmlsZS10b29sc3RyaXAgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXIudGlueW1jZS1tb2JpbGUtY29udGV4dC10b29sYmFyIC50aW55bWNlLW1vYmlsZS10b29sYmFyLWdyb3VwIC50aW55bWNlLW1vYmlsZS1zbGlkZXIgLnRpbnltY2UtbW9iaWxlLXNsaWRlci1zaXplLWNvbnRhaW5lcnthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2ZsZXgtZ3JvdzoxO2hlaWdodDoxMDAlfS50aW55bWNlLW1vYmlsZS10b29sc3RyaXAgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXIudGlueW1jZS1tb2JpbGUtY29udGV4dC10b29sYmFyIC50aW55bWNlLW1vYmlsZS10b29sYmFyLWdyb3VwIC50aW55bWNlLW1vYmlsZS1zbGlkZXIgLnRpbnltY2UtbW9iaWxlLXNsaWRlci1zaXplLWNvbnRhaW5lciAudGlueW1jZS1tb2JpbGUtc2xpZGVyLXNpemUtbGluZXtiYWNrZ3JvdW5kOiNjY2M7ZGlzcGxheTpmbGV4O2ZsZXg6MTtoZWlnaHQ6LjJlbTttYXJnaW4tYm90dG9tOi4zZW07bWFyZ2luLXRvcDouM2VtfS50aW55bWNlLW1vYmlsZS10b29sc3RyaXAgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXIudGlueW1jZS1tb2JpbGUtY29udGV4dC10b29sYmFyIC50aW55bWNlLW1vYmlsZS10b29sYmFyLWdyb3VwIC50aW55bWNlLW1vYmlsZS1zbGlkZXIudGlueW1jZS1tb2JpbGUtaHVlLXNsaWRlci1jb250YWluZXJ7cGFkZGluZy1sZWZ0OjJlbTtwYWRkaW5nLXJpZ2h0OjJlbX0udGlueW1jZS1tb2JpbGUtdG9vbHN0cmlwIC50aW55bWNlLW1vYmlsZS10b29sYmFyLnRpbnltY2UtbW9iaWxlLWNvbnRleHQtdG9vbGJhciAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cCAudGlueW1jZS1tb2JpbGUtc2xpZGVyLnRpbnltY2UtbW9iaWxlLWh1ZS1zbGlkZXItY29udGFpbmVyIC50aW55bWNlLW1vYmlsZS1zbGlkZXItZ3JhZGllbnQtY29udGFpbmVye2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7ZmxleC1ncm93OjE7aGVpZ2h0OjEwMCV9LnRpbnltY2UtbW9iaWxlLXRvb2xzdHJpcCAudGlueW1jZS1tb2JpbGUtdG9vbGJhci50aW55bWNlLW1vYmlsZS1jb250ZXh0LXRvb2xiYXIgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXItZ3JvdXAgLnRpbnltY2UtbW9iaWxlLXNsaWRlci50aW55bWNlLW1vYmlsZS1odWUtc2xpZGVyLWNvbnRhaW5lciAudGlueW1jZS1tb2JpbGUtc2xpZGVyLWdyYWRpZW50LWNvbnRhaW5lciAudGlueW1jZS1tb2JpbGUtc2xpZGVyLWdyYWRpZW50e2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LHJlZCAwLCNmZWZmMDAgMTclLCMwZjAgMzMlLCMwMGZlZmYgNTAlLCMwMGYgNjclLCNmZjAwZmUgODMlLHJlZCAxMDAlKTtkaXNwbGF5OmZsZXg7ZmxleDoxO2hlaWdodDouMmVtO21hcmdpbi1ib3R0b206LjNlbTttYXJnaW4tdG9wOi4zZW19LnRpbnltY2UtbW9iaWxlLXRvb2xzdHJpcCAudGlueW1jZS1tb2JpbGUtdG9vbGJhci50aW55bWNlLW1vYmlsZS1jb250ZXh0LXRvb2xiYXIgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXItZ3JvdXAgLnRpbnltY2UtbW9iaWxlLXNsaWRlci50aW55bWNlLW1vYmlsZS1odWUtc2xpZGVyLWNvbnRhaW5lciAudGlueW1jZS1tb2JpbGUtaHVlLXNsaWRlci1ibGFja3tiYWNrZ3JvdW5kOiMwMDA7aGVpZ2h0Oi4yZW07bWFyZ2luLWJvdHRvbTouM2VtO21hcmdpbi10b3A6LjNlbTt3aWR0aDoxLjJlbX0udGlueW1jZS1tb2JpbGUtdG9vbHN0cmlwIC50aW55bWNlLW1vYmlsZS10b29sYmFyLnRpbnltY2UtbW9iaWxlLWNvbnRleHQtdG9vbGJhciAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cCAudGlueW1jZS1tb2JpbGUtc2xpZGVyLnRpbnltY2UtbW9iaWxlLWh1ZS1zbGlkZXItY29udGFpbmVyIC50aW55bWNlLW1vYmlsZS1odWUtc2xpZGVyLXdoaXRle2JhY2tncm91bmQ6I2ZmZjtoZWlnaHQ6LjJlbTttYXJnaW4tYm90dG9tOi4zZW07bWFyZ2luLXRvcDouM2VtO3dpZHRoOjEuMmVtfS50aW55bWNlLW1vYmlsZS10b29sc3RyaXAgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXIudGlueW1jZS1tb2JpbGUtY29udGV4dC10b29sYmFyIC50aW55bWNlLW1vYmlsZS10b29sYmFyLWdyb3VwIC50aW55bWNlLW1vYmlsZS1zbGlkZXIgLnRpbnltY2UtbW9iaWxlLXNsaWRlci10aHVtYnthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZC1jbGlwOnBhZGRpbmctYm94O2JhY2tncm91bmQtY29sb3I6IzQ1NWE2NDtib3JkZXI6LjVlbSBzb2xpZCByZ2JhKDEzNiwxMzYsMTM2LDApO2JvcmRlci1yYWRpdXM6M2VtO2JvdHRvbTowO2NvbG9yOiNmZmY7ZGlzcGxheTpmbGV4O2hlaWdodDouNWVtO2p1c3RpZnktY29udGVudDpjZW50ZXI7bGVmdDotMTBweDttYXJnaW46YXV0bztwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDt0cmFuc2l0aW9uOmJvcmRlciAxMjBtcyBjdWJpYy1iZXppZXIoLjM5LC41OCwuNTcsMSk7d2lkdGg6LjVlbX0udGlueW1jZS1tb2JpbGUtdG9vbHN0cmlwIC50aW55bWNlLW1vYmlsZS10b29sYmFyLnRpbnltY2UtbW9iaWxlLWNvbnRleHQtdG9vbGJhciAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cCAudGlueW1jZS1tb2JpbGUtc2xpZGVyIC50aW55bWNlLW1vYmlsZS1zbGlkZXItdGh1bWIudGlueW1jZS1tb2JpbGUtdGh1bWItYWN0aXZle2JvcmRlcjouNWVtIHNvbGlkIHJnYmEoMTM2LDEzNiwxMzYsLjM5KX0udGlueW1jZS1tb2JpbGUtdG9vbHN0cmlwIC50aW55bWNlLW1vYmlsZS10b29sYmFyLnRpbnltY2UtbW9iaWxlLWNvbnRleHQtdG9vbGJhciAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cCAudGlueW1jZS1tb2JpbGUtc2VyaWFsaXplci13cmFwcGVyLC50aW55bWNlLW1vYmlsZS10b29sc3RyaXAgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXIudGlueW1jZS1tb2JpbGUtY29udGV4dC10b29sYmFyIC50aW55bWNlLW1vYmlsZS10b29sYmFyLWdyb3VwPmRpdnthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2hlaWdodDoxMDAlO2ZsZXg6MX0udGlueW1jZS1tb2JpbGUtdG9vbHN0cmlwIC50aW55bWNlLW1vYmlsZS10b29sYmFyLnRpbnltY2UtbW9iaWxlLWNvbnRleHQtdG9vbGJhciAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cCAudGlueW1jZS1tb2JpbGUtc2VyaWFsaXplci13cmFwcGVye2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS50aW55bWNlLW1vYmlsZS10b29sc3RyaXAgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXIudGlueW1jZS1tb2JpbGUtY29udGV4dC10b29sYmFyIC50aW55bWNlLW1vYmlsZS10b29sYmFyLWdyb3VwIC50aW55bWNlLW1vYmlsZS10b29sYmFyLWdyb3VwLWl0ZW17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleH0udGlueW1jZS1tb2JpbGUtdG9vbHN0cmlwIC50aW55bWNlLW1vYmlsZS10b29sYmFyLnRpbnltY2UtbW9iaWxlLWNvbnRleHQtdG9vbGJhciAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cCAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cC1pdGVtOm5vdCgudGlueW1jZS1tb2JpbGUtc2VyaWFsaXNlZC1kaWFsb2cpe2hlaWdodDoxMDAlfS50aW55bWNlLW1vYmlsZS10b29sc3RyaXAgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXIudGlueW1jZS1tb2JpbGUtY29udGV4dC10b29sYmFyIC50aW55bWNlLW1vYmlsZS10b29sYmFyLWdyb3VwIC50aW55bWNlLW1vYmlsZS1kb3QtY29udGFpbmVye2Rpc3BsYXk6ZmxleH0udGlueW1jZS1tb2JpbGUtdG9vbHN0cmlwIC50aW55bWNlLW1vYmlsZS10b29sYmFyLnRpbnltY2UtbW9iaWxlLWNvbnRleHQtdG9vbGJhciAudGlueW1jZS1tb2JpbGUtdG9vbGJhci1ncm91cCBpbnB1dHtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOm5vbmU7Ym9yZGVyLXJhZGl1czowO2NvbG9yOiM0NTVhNjQ7ZmxleC1ncm93OjE7Zm9udC1zaXplOi44NWVtO3BhZGRpbmctYm90dG9tOi4xZW07cGFkZGluZy1sZWZ0OjVweDtwYWRkaW5nLXRvcDouMWVtfS50aW55bWNlLW1vYmlsZS10b29sc3RyaXAgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXIudGlueW1jZS1tb2JpbGUtY29udGV4dC10b29sYmFyIC50aW55bWNlLW1vYmlsZS10b29sYmFyLWdyb3VwIGlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOiM4ODh9LnRpbnltY2UtbW9iaWxlLXRvb2xzdHJpcCAudGlueW1jZS1tb2JpbGUtdG9vbGJhci50aW55bWNlLW1vYmlsZS1jb250ZXh0LXRvb2xiYXIgLnRpbnltY2UtbW9iaWxlLXRvb2xiYXItZ3JvdXAgaW5wdXQ6OnBsYWNlaG9sZGVye2NvbG9yOiM4ODh9LnRpbnltY2UtbW9iaWxlLWRyb3B1cHtiYWNrZ3JvdW5kOiNmZmY7ZGlzcGxheTpmbGV4O292ZXJmbG93OmhpZGRlbjt3aWR0aDoxMDAlfS50aW55bWNlLW1vYmlsZS1kcm9wdXAudGlueW1jZS1tb2JpbGUtZHJvcHVwLXNocmlua2luZ3t0cmFuc2l0aW9uOmhlaWdodCAuM3MgZWFzZS1vdXR9LnRpbnltY2UtbW9iaWxlLWRyb3B1cC50aW55bWNlLW1vYmlsZS1kcm9wdXAtZ3Jvd2luZ3t0cmFuc2l0aW9uOmhlaWdodCAuM3MgZWFzZS1pbn0udGlueW1jZS1tb2JpbGUtZHJvcHVwLnRpbnltY2UtbW9iaWxlLWRyb3B1cC1jbG9zZWR7ZmxleC1ncm93OjB9LnRpbnltY2UtbW9iaWxlLWRyb3B1cC50aW55bWNlLW1vYmlsZS1kcm9wdXAtb3Blbjpub3QoLnRpbnltY2UtbW9iaWxlLWRyb3B1cC1ncm93aW5nKXtmbGV4LWdyb3c6MX0udGlueW1jZS1tb2JpbGUtaW9zLWNvbnRhaW5lciAudGlueW1jZS1tb2JpbGUtZHJvcHVwOm5vdCgudGlueW1jZS1tb2JpbGUtZHJvcHVwLWNsb3NlZCl7bWluLWhlaWdodDoyMDBweH1AbWVkaWEgb25seSBzY3JlZW4gYW5kIChvcmllbnRhdGlvbjpsYW5kc2NhcGUpey50aW55bWNlLW1vYmlsZS1kcm9wdXA6bm90KC50aW55bWNlLW1vYmlsZS1kcm9wdXAtY2xvc2VkKXttaW4taGVpZ2h0OjIwMHB4fX1AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4tZGV2aWNlLXdpZHRoIDozMjBweCkgYW5kIChtYXgtZGV2aWNlLXdpZHRoIDo1NjhweCkgYW5kIChvcmllbnRhdGlvbiA6bGFuZHNjYXBlKXsudGlueW1jZS1tb2JpbGUtaW9zLWNvbnRhaW5lciAudGlueW1jZS1tb2JpbGUtZHJvcHVwOm5vdCgudGlueW1jZS1tb2JpbGUtZHJvcHVwLWNsb3NlZCl7bWluLWhlaWdodDoxNTBweH19LnRpbnltY2UtbW9iaWxlLXN0eWxlcy1tZW51e2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7b3V0bGluZTo0cHggc29saWQgIzAwMDtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTAwJX0udGlueW1jZS1tb2JpbGUtc3R5bGVzLW1lbnUgW3JvbGU9bWVudV17ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtoZWlnaHQ6MTAwJTtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxMDAlfS50aW55bWNlLW1vYmlsZS1zdHlsZXMtbWVudSBbcm9sZT1tZW51XS50cmFuc2l0aW9uaW5ne3RyYW5zaXRpb246dHJhbnNmb3JtIC41cyBlYXNlLWluLW91dH0udGlueW1jZS1tb2JpbGUtc3R5bGVzLW1lbnUgLnRpbnltY2UtbW9iaWxlLXN0eWxlcy1pdGVte2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNkZGQ7Y29sb3I6IzQ1NWE2NDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmZsZXg7cGFkZGluZzoxZW0gMWVtO3Bvc2l0aW9uOnJlbGF0aXZlfS50aW55bWNlLW1vYmlsZS1zdHlsZXMtbWVudSAudGlueW1jZS1tb2JpbGUtc3R5bGVzLWNvbGxhcHNlciAudGlueW1jZS1tb2JpbGUtc3R5bGVzLWNvbGxhcHNlLWljb246OmJlZm9yZXtjb2xvcjojNDU1YTY0O2NvbnRlbnQ6IlxlMzE0Ijtmb250LWZhbWlseTp0aW55bWNlLW1vYmlsZSxzYW5zLXNlcmlmfS50aW55bWNlLW1vYmlsZS1zdHlsZXMtbWVudSAudGlueW1jZS1tb2JpbGUtc3R5bGVzLWl0ZW0udGlueW1jZS1tb2JpbGUtc3R5bGVzLWl0ZW0taXMtbWVudTo6YWZ0ZXJ7Y29sb3I6IzQ1NWE2NDtjb250ZW50OiJcZTMxNSI7Zm9udC1mYW1pbHk6dGlueW1jZS1tb2JpbGUsc2Fucy1zZXJpZjtwYWRkaW5nLWxlZnQ6MWVtO3BhZGRpbmctcmlnaHQ6MWVtO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjB9LnRpbnltY2UtbW9iaWxlLXN0eWxlcy1tZW51IC50aW55bWNlLW1vYmlsZS1zdHlsZXMtaXRlbS50aW55bWNlLW1vYmlsZS1mb3JtYXQtbWF0Y2hlczo6YWZ0ZXJ7Zm9udC1mYW1pbHk6dGlueW1jZS1tb2JpbGUsc2Fucy1zZXJpZjtwYWRkaW5nLWxlZnQ6MWVtO3BhZGRpbmctcmlnaHQ6MWVtO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjB9LnRpbnltY2UtbW9iaWxlLXN0eWxlcy1tZW51IC50aW55bWNlLW1vYmlsZS1zdHlsZXMtY29sbGFwc2VyLC50aW55bWNlLW1vYmlsZS1zdHlsZXMtbWVudSAudGlueW1jZS1tb2JpbGUtc3R5bGVzLXNlcGFyYXRvcnthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZDojZmZmO2JvcmRlci10b3A6IzQ1NWE2NDtjb2xvcjojNDU1YTY0O2Rpc3BsYXk6ZmxleDttaW4taGVpZ2h0OjIuNWVtO3BhZGRpbmctbGVmdDoxZW07cGFkZGluZy1yaWdodDoxZW19LnRpbnltY2UtbW9iaWxlLXN0eWxlcy1tZW51IFtkYXRhLXRyYW5zaXRpb25pbmctZGVzdGluYXRpb249YmVmb3JlXVtkYXRhLXRyYW5zaXRpb25pbmctc3RhdGVdLC50aW55bWNlLW1vYmlsZS1zdHlsZXMtbWVudSBbZGF0YS10cmFuc2l0aW9uaW5nLXN0YXRlPWJlZm9yZV17dHJhbnNmb3JtOnRyYW5zbGF0ZSgtMTAwJSl9LnRpbnltY2UtbW9iaWxlLXN0eWxlcy1tZW51IFtkYXRhLXRyYW5zaXRpb25pbmctZGVzdGluYXRpb249Y3VycmVudF1bZGF0YS10cmFuc2l0aW9uaW5nLXN0YXRlXSwudGlueW1jZS1tb2JpbGUtc3R5bGVzLW1lbnUgW2RhdGEtdHJhbnNpdGlvbmluZy1zdGF0ZT1jdXJyZW50XXt0cmFuc2Zvcm06dHJhbnNsYXRlKDApfS50aW55bWNlLW1vYmlsZS1zdHlsZXMtbWVudSBbZGF0YS10cmFuc2l0aW9uaW5nLWRlc3RpbmF0aW9uPWFmdGVyXVtkYXRhLXRyYW5zaXRpb25pbmctc3RhdGVdLC50aW55bWNlLW1vYmlsZS1zdHlsZXMtbWVudSBbZGF0YS10cmFuc2l0aW9uaW5nLXN0YXRlPWFmdGVyXXt0cmFuc2Zvcm06dHJhbnNsYXRlKDEwMCUpfUBmb250LWZhY2V7Zm9udC1mYW1pbHk6dGlueW1jZS1tb2JpbGU7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6NDAwO3NyYzp1cmwoZm9udHMvdGlueW1jZS1tb2JpbGUud29mZj84eDkydzMpIGZvcm1hdCgnd29mZicpfUBtZWRpYSAobWluLWRldmljZS13aWR0aDo3MDBweCl7LnRpbnltY2UtbW9iaWxlLW91dGVyLWNvbnRhaW5lciwudGlueW1jZS1tb2JpbGUtb3V0ZXItY29udGFpbmVyIGlucHV0e2ZvbnQtc2l6ZToyNXB4fX1AbWVkaWEgKG1heC1kZXZpY2Utd2lkdGg6NzAwcHgpey50aW55bWNlLW1vYmlsZS1vdXRlci1jb250YWluZXIsLnRpbnltY2UtbW9iaWxlLW91dGVyLWNvbnRhaW5lciBpbnB1dHtmb250LXNpemU6MThweH19LnRpbnltY2UtbW9iaWxlLWljb257Zm9udC1mYW1pbHk6dGlueW1jZS1tb2JpbGUsc2Fucy1zZXJpZn0ubWl4aW4tZmxleC1hbmQtY2VudHJle2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcn0ubWl4aW4tZmxleC1iYXJ7YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtoZWlnaHQ6MTAwJX0udGlueW1jZS1tb2JpbGUtb3V0ZXItY29udGFpbmVyIC50aW55bWNlLW1vYmlsZS1lZGl0b3Itc29ja2V0IGlmcmFtZXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7d2lkdGg6MTAwJX0udGlueW1jZS1tb2JpbGUtZWRpdG9yLXNvY2tldCAudGlueW1jZS1tb2JpbGUtbWFzay1lZGl0LWljb257YmFja2dyb3VuZC1jb2xvcjojMjA3YWI3O2JvcmRlci1yYWRpdXM6NTAlO2JvdHRvbToxZW07Y29sb3I6I2ZmZjtmb250LXNpemU6MWVtO2hlaWdodDoyLjFlbTtwb3NpdGlvbjpmaXhlZDtyaWdodDoyZW07d2lkdGg6Mi4xZW07YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi1kZXZpY2Utd2lkdGg6NzAwcHgpey50aW55bWNlLW1vYmlsZS1lZGl0b3Itc29ja2V0IC50aW55bWNlLW1vYmlsZS1tYXNrLWVkaXQtaWNvbntmb250LXNpemU6MS4yZW19fS50aW55bWNlLW1vYmlsZS1vdXRlci1jb250YWluZXI6bm90KC50aW55bWNlLW1vYmlsZS1mdWxsc2NyZWVuLW1heGltaXplZCkgLnRpbnltY2UtbW9iaWxlLWVkaXRvci1zb2NrZXR7aGVpZ2h0OjMwMHB4O292ZXJmbG93OmhpZGRlbn0udGlueW1jZS1tb2JpbGUtb3V0ZXItY29udGFpbmVyOm5vdCgudGlueW1jZS1tb2JpbGUtZnVsbHNjcmVlbi1tYXhpbWl6ZWQpIC50aW55bWNlLW1vYmlsZS1lZGl0b3Itc29ja2V0IGlmcmFtZXtoZWlnaHQ6MTAwJX0udGlueW1jZS1tb2JpbGUtb3V0ZXItY29udGFpbmVyOm5vdCgudGlueW1jZS1tb2JpbGUtZnVsbHNjcmVlbi1tYXhpbWl6ZWQpIC50aW55bWNlLW1vYmlsZS10b29sc3RyaXB7ZGlzcGxheTpub25lfWlucHV0W3R5cGU9ZmlsZV06Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9ue2Rpc3BsYXk6bm9uZX1AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4tZGV2aWNlLXdpZHRoIDozMjBweCkgYW5kIChtYXgtZGV2aWNlLXdpZHRoIDo1NjhweCkgYW5kIChvcmllbnRhdGlvbiA6bGFuZHNjYXBlKXsudGlueW1jZS1tb2JpbGUtaW9zLWNvbnRhaW5lciAudGlueW1jZS1tb2JpbGUtZWRpdG9yLXNvY2tldCAudGlueW1jZS1tb2JpbGUtbWFzay1lZGl0LWljb257Ym90dG9tOjUwJX19Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/themes/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/themes/mobile/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/themes/mobile/theme.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24odil7InVzZSBzdHJpY3QiO3ZhciB4PWZ1bmN0aW9uKCl7cmV0dXJuKHg9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24obil7Zm9yKHZhciBlLHQ9MSxyPWFyZ3VtZW50cy5sZW5ndGg7dDxyO3QrKylmb3IodmFyIG8gaW4gZT1hcmd1bWVudHNbdF0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbykmJihuW29dPWVbb10pO3JldHVybiBufSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtmdW5jdGlvbiBjKG4sZSl7dmFyIHQ9e307Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJmUuaW5kZXhPZihyKTwwJiYodFtyXT1uW3JdKTtpZihudWxsIT1uJiYiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pO288ci5sZW5ndGg7bysrKWUuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwobixyW29dKSYmKHRbcltvXV09bltyW29dXSl9cmV0dXJuIHR9ZnVuY3Rpb24gdSgpe2Zvcih2YXIgbj0wLGU9MCx0PWFyZ3VtZW50cy5sZW5ndGg7ZTx0O2UrKyluKz1hcmd1bWVudHNbZV0ubGVuZ3RoO3ZhciByPUFycmF5KG4pLG89MDtmb3IoZT0wO2U8dDtlKyspZm9yKHZhciBpPWFyZ3VtZW50c1tlXSx1PTAsYz1pLmxlbmd0aDt1PGM7dSsrLG8rKylyW29dPWlbdV07cmV0dXJuIHJ9dmFyIHc9ZnVuY3Rpb24oKXt9LGQ9ZnVuY3Rpb24odCxyKXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIG49W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspbltlXT1hcmd1bWVudHNbZV07cmV0dXJuIHQoci5hcHBseShudWxsLG4pKX19LHk9ZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG59fSxiPWZ1bmN0aW9uKG4pe3JldHVybiBufTtmdW5jdGlvbiBTKHIpe2Zvcih2YXIgbz1bXSxuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKylvW24tMV09YXJndW1lbnRzW25dO3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgbj1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyluW2VdPWFyZ3VtZW50c1tlXTt2YXIgdD1vLmNvbmNhdChuKTtyZXR1cm4gci5hcHBseShudWxsLHQpfX12YXIgbixlLHQscixvLGksbT1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIWUobil9fSxhPWZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcihuKX19LGY9ZnVuY3Rpb24obil7cmV0dXJuIG4oKX0scz15KCExKSxsPXkoITApLGc9ZnVuY3Rpb24oKXtyZXR1cm4gcH0scD0obj1mdW5jdGlvbihuKXtyZXR1cm4gbi5pc05vbmUoKX0se2ZvbGQ6ZnVuY3Rpb24obixlKXtyZXR1cm4gbigpfSxpczpzLGlzU29tZTpzLGlzTm9uZTpsLGdldE9yOnQ9ZnVuY3Rpb24obil7cmV0dXJuIG59LGdldE9yVGh1bms6ZT1mdW5jdGlvbihuKXtyZXR1cm4gbigpfSxnZXRPckRpZTpmdW5jdGlvbihuKXt0aHJvdyBuZXcgRXJyb3Iobnx8ImVycm9yOiBnZXRPckRpZSBjYWxsZWQgb24gbm9uZS4iKX0sZ2V0T3JOdWxsOnkobnVsbCksZ2V0T3JVbmRlZmluZWQ6eSh1bmRlZmluZWQpLG9yOnQsb3JUaHVuazplLG1hcDpnLGVhY2g6dyxiaW5kOmcsZXhpc3RzOnMsZm9yYWxsOmwsZmlsdGVyOmcsZXF1YWxzOm4sZXF1YWxzXzpuLHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm5bXX0sdG9TdHJpbmc6eSgibm9uZSgpIil9KSxoPWZ1bmN0aW9uKHQpe3ZhciBuPXkodCksZT1mdW5jdGlvbigpe3JldHVybiBvfSxyPWZ1bmN0aW9uKG4pe3JldHVybiBuKHQpfSxvPXtmb2xkOmZ1bmN0aW9uKG4sZSl7cmV0dXJuIGUodCl9LGlzOmZ1bmN0aW9uKG4pe3JldHVybiB0PT09bn0saXNTb21lOmwsaXNOb25lOnMsZ2V0T3I6bixnZXRPclRodW5rOm4sZ2V0T3JEaWU6bixnZXRPck51bGw6bixnZXRPclVuZGVmaW5lZDpuLG9yOmUsb3JUaHVuazplLG1hcDpmdW5jdGlvbihuKXtyZXR1cm4gaChuKHQpKX0sZWFjaDpmdW5jdGlvbihuKXtuKHQpfSxiaW5kOnIsZXhpc3RzOnIsZm9yYWxsOnIsZmlsdGVyOmZ1bmN0aW9uKG4pe3JldHVybiBuKHQpP286cH0sdG9BcnJheTpmdW5jdGlvbigpe3JldHVyblt0XX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4ic29tZSgiK3QrIikifSxlcXVhbHM6ZnVuY3Rpb24obil7cmV0dXJuIG4uaXModCl9LGVxdWFsc186ZnVuY3Rpb24obixlKXtyZXR1cm4gbi5mb2xkKHMsZnVuY3Rpb24obil7cmV0dXJuIGUodCxuKX0pfX07cmV0dXJuIG99LE89e3NvbWU6aCxub25lOmcsZnJvbTpmdW5jdGlvbihuKXtyZXR1cm4gbnVsbD09PW58fG49PT11bmRlZmluZWQ/cDpoKG4pfX0sVD1PYmplY3Qua2V5cyxrPU9iamVjdC5oYXNPd25Qcm9wZXJ0eSxFPWZ1bmN0aW9uKG4sZSl7Zm9yKHZhciB0PVQobikscj0wLG89dC5sZW5ndGg7cjxvO3IrKyl7dmFyIGk9dFtyXTtlKG5baV0saSl9fSxDPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIE0obixmdW5jdGlvbihuLGUpe3JldHVybntrOmUsdjp0KG4sZSl9fSl9LE09ZnVuY3Rpb24obixyKXt2YXIgbz17fTtyZXR1cm4gRShuLGZ1bmN0aW9uKG4sZSl7dmFyIHQ9cihuLGUpO29bdC5rXT10LnZ9KSxvfSxfPWZ1bmN0aW9uKG4sZSl7dmFyIHQscixvLGksdT17fTtyZXR1cm4gdD1lLGk9dSxyPWZ1bmN0aW9uKG4sZSl7aVtlXT1ufSxvPXcsRShuLGZ1bmN0aW9uKG4sZSl7KHQobixlKT9yOm8pKG4sZSl9KSx1fSxEPWZ1bmN0aW9uKG4sdCl7dmFyIHI9W107cmV0dXJuIEUobixmdW5jdGlvbihuLGUpe3IucHVzaCh0KG4sZSkpfSkscn0sST1mdW5jdGlvbihuLGUpe3JldHVybiBGKG4sZSk/Ty5mcm9tKG5bZV0pOk8ubm9uZSgpfSxGPWZ1bmN0aW9uKG4sZSl7cmV0dXJuIGsuY2FsbChuLGUpfSxSPWZ1bmN0aW9uKG4sZSl7cmV0dXJuIEYobixlKSYmbltlXSE9PXVuZGVmaW5lZCYmbnVsbCE9PW5bZV19LFY9ZnVuY3Rpb24odCl7dmFyIHIsbz0hMTtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIG49W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspbltlXT1hcmd1bWVudHNbZV07cmV0dXJuIG98fChvPSEwLHI9dC5hcHBseShudWxsLG4pKSxyfX0sQj1mdW5jdGlvbihuLGUpe3ZhciB0PWZ1bmN0aW9uKG4sZSl7Zm9yKHZhciB0PTA7dDxuLmxlbmd0aDt0Kyspe3ZhciByPW5bdF07aWYoci50ZXN0KGUpKXJldHVybiByfXJldHVybiB1bmRlZmluZWR9KG4sZSk7aWYoIXQpcmV0dXJue21ham9yOjAsbWlub3I6MH07dmFyIHI9ZnVuY3Rpb24obil7cmV0dXJuIE51bWJlcihlLnJlcGxhY2UodCwiJCIrbikpfTtyZXR1cm4gaihyKDEpLHIoMikpfSxBPWZ1bmN0aW9uKCl7cmV0dXJuIGooMCwwKX0saj1mdW5jdGlvbihuLGUpe3JldHVybnttYWpvcjpuLG1pbm9yOmV9fSxIPXtudTpqLGRldGVjdDpmdW5jdGlvbihuLGUpe3ZhciB0PVN0cmluZyhlKS50b0xvd2VyQ2FzZSgpO3JldHVybiAwPT09bi5sZW5ndGg/QSgpOkIobix0KX0sdW5rbm93bjpBfSxOPSJFZGdlIixQPSJDaHJvbWUiLHo9Ik9wZXJhIixMPSJGaXJlZm94IixHPSJTYWZhcmkiLCQ9ZnVuY3Rpb24obil7dmFyIGU9bi5jdXJyZW50LHQ9bi52ZXJzaW9uLHI9ZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGU9PT1ufX07cmV0dXJue2N1cnJlbnQ6ZSx2ZXJzaW9uOnQsaXNFZGdlOnIoTiksaXNDaHJvbWU6cihQKSxpc0lFOnIoIklFIiksaXNPcGVyYTpyKHopLGlzRmlyZWZveDpyKEwpLGlzU2FmYXJpOnIoRyl9fSxVPXt1bmtub3duOmZ1bmN0aW9uKCl7cmV0dXJuICQoe2N1cnJlbnQ6dW5kZWZpbmVkLHZlcnNpb246SC51bmtub3duKCl9KX0sbnU6JCxlZGdlOnkoTiksY2hyb21lOnkoUCksaWU6eSgiSUUiKSxvcGVyYTp5KHopLGZpcmVmb3g6eShMKSxzYWZhcmk6eShHKX0sVz0iV2luZG93cyIsWD0iQW5kcm9pZCIscT0iTGludXgiLFk9IlNvbGFyaXMiLEs9IkZyZWVCU0QiLEo9IkNocm9tZU9TIixRPWZ1bmN0aW9uKG4pe3ZhciBlPW4uY3VycmVudCx0PW4udmVyc2lvbixyPWZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlPT09bn19O3JldHVybntjdXJyZW50OmUsdmVyc2lvbjp0LGlzV2luZG93czpyKFcpLGlzaU9TOnIoImlPUyIpLGlzQW5kcm9pZDpyKFgpLGlzT1NYOnIoIk9TWCIpLGlzTGludXg6cihxKSxpc1NvbGFyaXM6cihZKSxpc0ZyZWVCU0Q6cihLKSxpc0Nocm9tZU9TOnIoSil9fSxaPXt1bmtub3duOmZ1bmN0aW9uKCl7cmV0dXJuIFEoe2N1cnJlbnQ6dW5kZWZpbmVkLHZlcnNpb246SC51bmtub3duKCl9KX0sbnU6USx3aW5kb3dzOnkoVyksaW9zOnkoImlPUyIpLGFuZHJvaWQ6eShYKSxsaW51eDp5KHEpLG9zeDp5KCJPU1giKSxzb2xhcmlzOnkoWSksZnJlZWJzZDp5KEspLGNocm9tZW9zOnkoSil9LG5uPWZ1bmN0aW9uKHIpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdD10eXBlb2YoZT1uKSwobnVsbD09PWU/Im51bGwiOiJvYmplY3QiPT10JiYoQXJyYXkucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoZSl8fGUuY29uc3RydWN0b3ImJiJBcnJheSI9PT1lLmNvbnN0cnVjdG9yLm5hbWUpPyJhcnJheSI6Im9iamVjdCI9PXQmJihTdHJpbmcucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoZSl8fGUuY29uc3RydWN0b3ImJiJTdHJpbmciPT09ZS5jb25zdHJ1Y3Rvci5uYW1lKT8ic3RyaW5nIjp0KT09PXI7dmFyIGUsdH19LGVuPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdHlwZW9mIG49PT1lfX0sdG49bm4oInN0cmluZyIpLHJuPW5uKCJvYmplY3QiKSxvbj1ubigiYXJyYXkiKSx1bj1lbigiYm9vbGVhbiIpLGNuPWVuKCJmdW5jdGlvbiIpLGFuPWVuKCJudW1iZXIiKSxmbj1BcnJheS5wcm90b3R5cGUuc2xpY2Usc249QXJyYXkucHJvdG90eXBlLmluZGV4T2YsbG49QXJyYXkucHJvdG90eXBlLnB1c2gsZG49ZnVuY3Rpb24obixlKXtyZXR1cm4gdD1uLHI9ZSwtMTxzbi5jYWxsKHQscik7dmFyIHQscn0sbW49ZnVuY3Rpb24obixlKXtmb3IodmFyIHQ9MCxyPW4ubGVuZ3RoO3Q8cjt0Kyspe2lmKGUoblt0XSx0KSlyZXR1cm4hMH1yZXR1cm4hMX0sZ249ZnVuY3Rpb24obixlKXtmb3IodmFyIHQ9bi5sZW5ndGgscj1uZXcgQXJyYXkodCksbz0wO288dDtvKyspe3ZhciBpPW5bb107cltvXT1lKGksbyl9cmV0dXJuIHJ9LHBuPWZ1bmN0aW9uKG4sZSl7Zm9yKHZhciB0PTAscj1uLmxlbmd0aDt0PHI7dCsrKXtlKG5bdF0sdCl9fSxobj1mdW5jdGlvbihuLGUpe2Zvcih2YXIgdD1bXSxyPTAsbz1uLmxlbmd0aDtyPG87cisrKXt2YXIgaT1uW3JdO2UoaSxyKSYmdC5wdXNoKGkpfXJldHVybiB0fSx2bj1mdW5jdGlvbihuLGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4sZSl7Zm9yKHZhciB0PW4ubGVuZ3RoLTE7MDw9dDt0LS0pe2Uoblt0XSx0KX19KG4sZnVuY3Rpb24obil7dD1lKHQsbil9KSx0fSx5bj1mdW5jdGlvbihuLGUsdCl7cmV0dXJuIHBuKG4sZnVuY3Rpb24obil7dD1lKHQsbil9KSx0fSxibj1mdW5jdGlvbihuLGUpe3JldHVybiBmdW5jdGlvbihuLGUsdCl7Zm9yKHZhciByPTAsbz1uLmxlbmd0aDtyPG87cisrKXt2YXIgaT1uW3JdO2lmKGUoaSxyKSlyZXR1cm4gTy5zb21lKGkpO2lmKHQoaSxyKSlicmVha31yZXR1cm4gTy5ub25lKCl9KG4sZSxzKX0seG49ZnVuY3Rpb24obixlKXtmb3IodmFyIHQ9MCxyPW4ubGVuZ3RoO3Q8cjt0Kyspe2lmKGUoblt0XSx0KSlyZXR1cm4gTy5zb21lKHQpfXJldHVybiBPLm5vbmUoKX0sd249ZnVuY3Rpb24obil7Zm9yKHZhciBlPVtdLHQ9MCxyPW4ubGVuZ3RoO3Q8cjsrK3Qpe2lmKCFvbihuW3RdKSl0aHJvdyBuZXcgRXJyb3IoIkFyci5mbGF0dGVuIGl0ZW0gIit0KyIgd2FzIG5vdCBhbiBhcnJheSwgaW5wdXQ6ICIrbik7bG4uYXBwbHkoZSxuW3RdKX1yZXR1cm4gZX0sU249ZnVuY3Rpb24obixlKXtyZXR1cm4gd24oZ24obixlKSl9LE9uPWZ1bmN0aW9uKG4sZSl7Zm9yKHZhciB0PTAscj1uLmxlbmd0aDt0PHI7Kyt0KXtpZighMCE9PWUoblt0XSx0KSlyZXR1cm4hMX1yZXR1cm4hMH0sVG49ZnVuY3Rpb24obil7dmFyIGU9Zm4uY2FsbChuLDApO3JldHVybiBlLnJldmVyc2UoKSxlfSxrbj1mdW5jdGlvbihuLGUpe3JldHVybiBobihuLGZ1bmN0aW9uKG4pe3JldHVybiFkbihlLG4pfSl9LEVuPWZ1bmN0aW9uKG4pe3JldHVybltuXX0sQ249ZnVuY3Rpb24obixlKXtmb3IodmFyIHQ9MDt0PG4ubGVuZ3RoO3QrKyl7dmFyIHI9ZShuW3RdLHQpO2lmKHIuaXNTb21lKCkpcmV0dXJuIHJ9cmV0dXJuIE8ubm9uZSgpfSxNbj1mdW5jdGlvbihuLGUpe3ZhciB0PVN0cmluZyhlKS50b0xvd2VyQ2FzZSgpO3JldHVybiBibihuLGZ1bmN0aW9uKG4pe3JldHVybiBuLnNlYXJjaCh0KX0pfSxfbj1mdW5jdGlvbihuLHQpe3JldHVybiBNbihuLHQpLm1hcChmdW5jdGlvbihuKXt2YXIgZT1ILmRldGVjdChuLnZlcnNpb25SZWdleGVzLHQpO3JldHVybntjdXJyZW50Om4ubmFtZSx2ZXJzaW9uOmV9fSl9LERuPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIE1uKG4sdCkubWFwKGZ1bmN0aW9uKG4pe3ZhciBlPUguZGV0ZWN0KG4udmVyc2lvblJlZ2V4ZXMsdCk7cmV0dXJue2N1cnJlbnQ6bi5uYW1lLHZlcnNpb246ZX19KX0sSW49ZnVuY3Rpb24obixvKXtyZXR1cm4gbi5yZXBsYWNlKC9cJFx7KFtee31dKilcfS9nLGZ1bmN0aW9uKG4sZSl7dmFyIHQscj1vW2VdO3JldHVybiJzdHJpbmciPT0odD10eXBlb2Ygcil8fCJudW1iZXIiPT10P3IudG9TdHJpbmcoKTpufSl9LEZuPWZ1bmN0aW9uKG4sZSl7cmV0dXJuLTEhPT1uLmluZGV4T2YoZSl9LFJuPShyPS9eXHMrfFxzKyQvZyxmdW5jdGlvbihuKXtyZXR1cm4gbi5yZXBsYWNlKHIsIiIpfSksVm49Ly4qP3ZlcnNpb25cL1wgPyhbMC05XSspXC4oWzAtOV0rKS4qLyxCbj1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIEZuKG4sZSl9fSxBbj1be25hbWU6IkVkZ2UiLHZlcnNpb25SZWdleGVzOlsvLio/ZWRnZVwvID8oWzAtOV0rKVwuKFswLTldKykkL10sc2VhcmNoOmZ1bmN0aW9uKG4pe3JldHVybiBGbihuLCJlZGdlLyIpJiZGbihuLCJjaHJvbWUiKSYmRm4obiwic2FmYXJpIikmJkZuKG4sImFwcGxld2Via2l0Iil9fSx7bmFtZToiQ2hyb21lIix2ZXJzaW9uUmVnZXhlczpbLy4qP2Nocm9tZVwvKFswLTldKylcLihbMC05XSspLiovLFZuXSxzZWFyY2g6ZnVuY3Rpb24obil7cmV0dXJuIEZuKG4sImNocm9tZSIpJiYhRm4obiwiY2hyb21lZnJhbWUiKX19LHtuYW1lOiJJRSIsdmVyc2lvblJlZ2V4ZXM6Wy8uKj9tc2llXCA/KFswLTldKylcLihbMC05XSspLiovLC8uKj9ydjooWzAtOV0rKVwuKFswLTldKykuKi9dLHNlYXJjaDpmdW5jdGlvbihuKXtyZXR1cm4gRm4obiwibXNpZSIpfHxGbihuLCJ0cmlkZW50Iil9fSx7bmFtZToiT3BlcmEiLHZlcnNpb25SZWdleGVzOltWbiwvLio/b3BlcmFcLyhbMC05XSspXC4oWzAtOV0rKS4qL10sc2VhcmNoOkJuKCJvcGVyYSIpfSx7bmFtZToiRmlyZWZveCIsdmVyc2lvblJlZ2V4ZXM6Wy8uKj9maXJlZm94XC9cID8oWzAtOV0rKVwuKFswLTldKykuKi9dLHNlYXJjaDpCbigiZmlyZWZveCIpfSx7bmFtZToiU2FmYXJpIix2ZXJzaW9uUmVnZXhlczpbVm4sLy4qP2NwdSBvcyAoWzAtOV0rKV8oWzAtOV0rKS4qL10sc2VhcmNoOmZ1bmN0aW9uKG4pe3JldHVybihGbihuLCJzYWZhcmkiKXx8Rm4obiwibW9iaWxlLyIpKSYmRm4obiwiYXBwbGV3ZWJraXQiKX19XSxqbj1be25hbWU6IldpbmRvd3MiLHNlYXJjaDpCbigid2luIiksdmVyc2lvblJlZ2V4ZXM6Wy8uKj93aW5kb3dzXCBudFwgPyhbMC05XSspXC4oWzAtOV0rKS4qL119LHtuYW1lOiJpT1MiLHNlYXJjaDpmdW5jdGlvbihuKXtyZXR1cm4gRm4obiwiaXBob25lIil8fEZuKG4sImlwYWQiKX0sdmVyc2lvblJlZ2V4ZXM6Wy8uKj92ZXJzaW9uXC9cID8oWzAtOV0rKVwuKFswLTldKykuKi8sLy4qY3B1IG9zIChbMC05XSspXyhbMC05XSspLiovLC8uKmNwdSBpcGhvbmUgb3MgKFswLTldKylfKFswLTldKykuKi9dfSx7bmFtZToiQW5kcm9pZCIsc2VhcmNoOkJuKCJhbmRyb2lkIiksdmVyc2lvblJlZ2V4ZXM6Wy8uKj9hbmRyb2lkXCA/KFswLTldKylcLihbMC05XSspLiovXX0se25hbWU6Ik9TWCIsc2VhcmNoOkJuKCJtYWMgb3MgeCIpLHZlcnNpb25SZWdleGVzOlsvLio/bWFjXCBvc1wgeFwgPyhbMC05XSspXyhbMC05XSspLiovXX0se25hbWU6IkxpbnV4IixzZWFyY2g6Qm4oImxpbnV4IiksdmVyc2lvblJlZ2V4ZXM6W119LHtuYW1lOiJTb2xhcmlzIixzZWFyY2g6Qm4oInN1bm9zIiksdmVyc2lvblJlZ2V4ZXM6W119LHtuYW1lOiJGcmVlQlNEIixzZWFyY2g6Qm4oImZyZWVic2QiKSx2ZXJzaW9uUmVnZXhlczpbXX0se25hbWU6IkNocm9tZU9TIixzZWFyY2g6Qm4oImNyb3MiKSx2ZXJzaW9uUmVnZXhlczpbLy4qP2Nocm9tZVwvKFswLTldKylcLihbMC05XSspLiovXX1dLEhuPXticm93c2Vyczp5KEFuKSxvc2VzOnkoam4pfSxObj1mdW5jdGlvbihuLGUpe3ZhciB0LHIsbyxpLHUsYyxhLGYscyxsLGQsbSxnPUhuLmJyb3dzZXJzKCkscD1Ibi5vc2VzKCksaD1fbihnLG4pLmZvbGQoVS51bmtub3duLFUubnUpLHY9RG4ocCxuKS5mb2xkKFoudW5rbm93bixaLm51KTtyZXR1cm57YnJvd3NlcjpoLG9zOnYsZGV2aWNlVHlwZToocj1oLG89bixpPWUsdT0odD12KS5pc2lPUygpJiYhMD09PS9pcGFkL2kudGVzdChvKSxjPXQuaXNpT1MoKSYmIXUsYT10LmlzaU9TKCl8fHQuaXNBbmRyb2lkKCksZj1hfHxpKCIocG9pbnRlcjpjb2Fyc2UpIikscz11fHwhYyYmYSYmaSgiKG1pbi1kZXZpY2Utd2lkdGg6NzY4cHgpIiksbD1jfHxhJiYhcyxkPXIuaXNTYWZhcmkoKSYmdC5pc2lPUygpJiYhMT09PS9zYWZhcmkvaS50ZXN0KG8pLG09IWwmJiFzJiYhZCx7aXNpUGFkOnkodSksaXNpUGhvbmU6eShjKSxpc1RhYmxldDp5KHMpLGlzUGhvbmU6eShsKSxpc1RvdWNoOnkoZiksaXNBbmRyb2lkOnQuaXNBbmRyb2lkLGlzaU9TOnQuaXNpT1MsaXNXZWJWaWV3OnkoZCksaXNEZXNrdG9wOnkobSl9KX19LFBuPWZ1bmN0aW9uKG4pe3JldHVybiB2LndpbmRvdy5tYXRjaE1lZGlhKG4pLm1hdGNoZXN9LHpuPVYoZnVuY3Rpb24oKXtyZXR1cm4gTm4odi5uYXZpZ2F0b3IudXNlckFnZW50LFBuKX0pLExuPWZ1bmN0aW9uKCl7cmV0dXJuIHpuKCl9LEduPXkoInRvdWNoc3RhcnQiKSwkbj15KCJ0b3VjaG1vdmUiKSxVbj15KCJ0b3VjaGVuZCIpLFduPXkoIm1vdXNlZG93biIpLFhuPXkoIm1vdXNlbW92ZSIpLHFuPXkoIm1vdXNldXAiKSxZbj15KCJtb3VzZW92ZXIiKSxLbj15KCJrZXlkb3duIiksSm49eSgia2V5dXAiKSxRbj15KCJpbnB1dCIpLFpuPXkoImNoYW5nZSIpLG5lPXkoImNsaWNrIiksZWU9eSgidHJhbnNpdGlvbmVuZCIpLHRlPXkoInNlbGVjdHN0YXJ0IikscmU9e3RhcDp5KCJhbGxveS50YXAiKX0sb2U9eSgiYWxsb3kuZm9jdXMiKSxpZT15KCJhbGxveS5ibHVyLnBvc3QiKSx1ZT15KCJhbGxveS5wYXN0ZS5wb3N0IiksY2U9eSgiYWxsb3kucmVjZWl2ZSIpLGFlPXkoImFsbG95LmV4ZWN1dGUiKSxmZT15KCJhbGxveS5mb2N1cy5pdGVtIiksc2U9cmUudGFwLGxlPXkoImFsbG95LmxvbmdwcmVzcyIpLGRlPXkoImFsbG95LnN5c3RlbS5pbml0IiksbWU9eSgiYWxsb3kuc3lzdGVtLmF0dGFjaGVkIiksZ2U9eSgiYWxsb3kuc3lzdGVtLmRldGFjaGVkIikscGU9eSgiYWxsb3kuZm9jdXNtYW5hZ2VyLnNoaWZ0ZWQiKSxoZT15KCJhbGxveS5oaWdobGlnaHQiKSx2ZT15KCJhbGxveS5kZWhpZ2hsaWdodCIpLHllPWZ1bmN0aW9uKG4sZSl7U2UobixuLmVsZW1lbnQoKSxlLHt9KX0sYmU9ZnVuY3Rpb24obixlLHQpe1NlKG4sbi5lbGVtZW50KCksZSx0KX0seGU9ZnVuY3Rpb24obil7eWUobixhZSgpKX0sd2U9ZnVuY3Rpb24obixlLHQpe1NlKG4sZSx0LHt9KX0sU2U9ZnVuY3Rpb24obixlLHQscil7dmFyIG89eCh7dGFyZ2V0OmV9LHIpO24uZ2V0U3lzdGVtKCkudHJpZ2dlckV2ZW50KHQsZSxDKG8seSkpfSxPZT1mdW5jdGlvbihuKXtpZihudWxsPT09bnx8bj09PXVuZGVmaW5lZCl0aHJvdyBuZXcgRXJyb3IoIk5vZGUgY2Fubm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7cmV0dXJue2RvbTp5KG4pfX0sVGU9e2Zyb21IdG1sOmZ1bmN0aW9uKG4sZSl7dmFyIHQ9KGV8fHYuZG9jdW1lbnQpLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2lmKHQuaW5uZXJIVE1MPW4sIXQuaGFzQ2hpbGROb2RlcygpfHwxPHQuY2hpbGROb2Rlcy5sZW5ndGgpdGhyb3cgdi5jb25zb2xlLmVycm9yKCJIVE1MIGRvZXMgbm90IGhhdmUgYSBzaW5nbGUgcm9vdCBub2RlIixuKSxuZXcgRXJyb3IoIkhUTUwgbXVzdCBoYXZlIGEgc2luZ2xlIHJvb3Qgbm9kZSIpO3JldHVybiBPZSh0LmNoaWxkTm9kZXNbMF0pfSxmcm9tVGFnOmZ1bmN0aW9uKG4sZSl7dmFyIHQ9KGV8fHYuZG9jdW1lbnQpLmNyZWF0ZUVsZW1lbnQobik7cmV0dXJuIE9lKHQpfSxmcm9tVGV4dDpmdW5jdGlvbihuLGUpe3ZhciB0PShlfHx2LmRvY3VtZW50KS5jcmVhdGVUZXh0Tm9kZShuKTtyZXR1cm4gT2UodCl9LGZyb21Eb206T2UsZnJvbVBvaW50OmZ1bmN0aW9uKG4sZSx0KXt2YXIgcj1uLmRvbSgpO3JldHVybiBPLmZyb20oci5lbGVtZW50RnJvbVBvaW50KGUsdCkpLm1hcChPZSl9fSxrZT0oInVuZGVmaW5lZCIhPXR5cGVvZiB2LndpbmRvdz92LndpbmRvdzpGdW5jdGlvbigicmV0dXJuIHRoaXM7IikoKSxmdW5jdGlvbihuKXtyZXR1cm4gbi5kb20oKS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpfSksRWU9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBuLmRvbSgpLm5vZGVUeXBlPT09ZX19LENlPUVlKDEpLE1lPUVlKDMpLF9lPWZ1bmN0aW9uKG4pe3ZhciBlPU1lKG4pP24uZG9tKCkucGFyZW50Tm9kZTpuLmRvbSgpO3JldHVybiBlIT09dW5kZWZpbmVkJiZudWxsIT09ZSYmZS5vd25lckRvY3VtZW50LmJvZHkuY29udGFpbnMoZSl9LERlPWZ1bmN0aW9uKCl7cmV0dXJuIEllKFRlLmZyb21Eb20odi5kb2N1bWVudCkpfSxJZT1mdW5jdGlvbihuKXt2YXIgZT1uLmRvbSgpLmJvZHk7aWYobnVsbD09PWV8fGU9PT11bmRlZmluZWQpdGhyb3cgbmV3IEVycm9yKCJCb2R5IGlzIG5vdCBhdmFpbGFibGUgeWV0Iik7cmV0dXJuIFRlLmZyb21Eb20oZSl9LEZlPWZ1bmN0aW9uKG4sZSl7dmFyIHQ9bi5kb20oKTtpZigxIT09dC5ub2RlVHlwZSlyZXR1cm4hMTt2YXIgcj10O2lmKHIubWF0Y2hlcyE9PXVuZGVmaW5lZClyZXR1cm4gci5tYXRjaGVzKGUpO2lmKHIubXNNYXRjaGVzU2VsZWN0b3IhPT11bmRlZmluZWQpcmV0dXJuIHIubXNNYXRjaGVzU2VsZWN0b3IoZSk7aWYoci53ZWJraXRNYXRjaGVzU2VsZWN0b3IhPT11bmRlZmluZWQpcmV0dXJuIHIud2Via2l0TWF0Y2hlc1NlbGVjdG9yKGUpO2lmKHIubW96TWF0Y2hlc1NlbGVjdG9yIT09dW5kZWZpbmVkKXJldHVybiByLm1vek1hdGNoZXNTZWxlY3RvcihlKTt0aHJvdyBuZXcgRXJyb3IoIkJyb3dzZXIgbGFja3MgbmF0aXZlIHNlbGVjdG9ycyIpfSxSZT1mdW5jdGlvbihuKXtyZXR1cm4gMSE9PW4ubm9kZVR5cGUmJjkhPT1uLm5vZGVUeXBlfHwwPT09bi5jaGlsZEVsZW1lbnRDb3VudH0sVmU9ZnVuY3Rpb24obixlKXt2YXIgdD1lPT09dW5kZWZpbmVkP3YuZG9jdW1lbnQ6ZS5kb20oKTtyZXR1cm4gUmUodCk/W106Z24odC5xdWVyeVNlbGVjdG9yQWxsKG4pLFRlLmZyb21Eb20pfSxCZT1mdW5jdGlvbihuLGUpe3ZhciB0PWU9PT11bmRlZmluZWQ/di5kb2N1bWVudDplLmRvbSgpO3JldHVybiBSZSh0KT9PLm5vbmUoKTpPLmZyb20odC5xdWVyeVNlbGVjdG9yKG4pKS5tYXAoVGUuZnJvbURvbSl9LEFlPWZ1bmN0aW9uKG4sZSl7cmV0dXJuIG4uZG9tKCk9PT1lLmRvbSgpfSxqZT1mdW5jdGlvbihuKXtyZXR1cm4gVGUuZnJvbURvbShuLmRvbSgpLm93bmVyRG9jdW1lbnQpfSxIZT1mdW5jdGlvbihuKXtyZXR1cm4gTy5mcm9tKG4uZG9tKCkucGFyZW50Tm9kZSkubWFwKFRlLmZyb21Eb20pfSxOZT1mdW5jdGlvbihuKXtyZXR1cm4gZ24obi5kb20oKS5jaGlsZE5vZGVzLFRlLmZyb21Eb20pfSxQZT1mdW5jdGlvbihuLGUpe3ZhciB0PW4uZG9tKCkuY2hpbGROb2RlcztyZXR1cm4gTy5mcm9tKHRbZV0pLm1hcChUZS5mcm9tRG9tKX0semU9ZnVuY3Rpb24oZSx0KXtIZShlKS5lYWNoKGZ1bmN0aW9uKG4pe24uZG9tKCkuaW5zZXJ0QmVmb3JlKHQuZG9tKCksZS5kb20oKSl9KX0sTGU9ZnVuY3Rpb24obixlKXt2YXIgdDsodD1uLE8uZnJvbSh0LmRvbSgpLm5leHRTaWJsaW5nKS5tYXAoVGUuZnJvbURvbSkpLmZvbGQoZnVuY3Rpb24oKXtIZShuKS5lYWNoKGZ1bmN0aW9uKG4peyRlKG4sZSl9KX0sZnVuY3Rpb24obil7emUobixlKX0pfSxHZT1mdW5jdGlvbihlLHQpe1BlKGUsMCkuZm9sZChmdW5jdGlvbigpeyRlKGUsdCl9LGZ1bmN0aW9uKG4pe2UuZG9tKCkuaW5zZXJ0QmVmb3JlKHQuZG9tKCksbi5kb20oKSl9KX0sJGU9ZnVuY3Rpb24obixlKXtuLmRvbSgpLmFwcGVuZENoaWxkKGUuZG9tKCkpfSxVZT1mdW5jdGlvbihlLG4pe3BuKG4sZnVuY3Rpb24obil7JGUoZSxuKX0pfSxXZT1mdW5jdGlvbihuKXtuLmRvbSgpLnRleHRDb250ZW50PSIiLHBuKE5lKG4pLGZ1bmN0aW9uKG4pe1hlKG4pfSl9LFhlPWZ1bmN0aW9uKG4pe3ZhciBlPW4uZG9tKCk7bnVsbCE9PWUucGFyZW50Tm9kZSYmZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGUpfSxxZT1mdW5jdGlvbihuKXt5ZShuLGdlKCkpO3ZhciBlPW4uY29tcG9uZW50cygpO3BuKGUscWUpfSxZZT1mdW5jdGlvbihuKXt2YXIgZT1uLmNvbXBvbmVudHMoKTtwbihlLFllKSx5ZShuLG1lKCkpfSxLZT1mdW5jdGlvbihuLGUpeyRlKG4uZWxlbWVudCgpLGUuZWxlbWVudCgpKX0sSmU9ZnVuY3Rpb24oZSxuKXt2YXIgdCxyPWUuY29tcG9uZW50cygpO3BuKCh0PWUpLmNvbXBvbmVudHMoKSxmdW5jdGlvbihuKXtyZXR1cm4gWGUobi5lbGVtZW50KCkpfSksV2UodC5lbGVtZW50KCkpLHQuc3luY0NvbXBvbmVudHMoKTt2YXIgbz1rbihyLG4pO3BuKG8sZnVuY3Rpb24obil7cWUobiksZS5nZXRTeXN0ZW0oKS5yZW1vdmVGcm9tV29ybGQobil9KSxwbihuLGZ1bmN0aW9uKG4pe24uZ2V0U3lzdGVtKCkuaXNDb25uZWN0ZWQoKT9LZShlLG4pOihlLmdldFN5c3RlbSgpLmFkZFRvV29ybGQobiksS2UoZSxuKSxfZShlLmVsZW1lbnQoKSkmJlllKG4pKSxlLnN5bmNDb21wb25lbnRzKCl9KX0sUWU9ZnVuY3Rpb24obixlLHQpe24uZ2V0U3lzdGVtKCkuYWRkVG9Xb3JsZChlKSx0KG4uZWxlbWVudCgpLGUuZWxlbWVudCgpKSxfZShuLmVsZW1lbnQoKSkmJlllKGUpLG4uc3luY0NvbXBvbmVudHMoKX0sWmU9ZnVuY3Rpb24oZSl7dmFyIG4sdD1IZShlLmVsZW1lbnQoKSkuYmluZChmdW5jdGlvbihuKXtyZXR1cm4gZS5nZXRTeXN0ZW0oKS5nZXRCeURvbShuKS50b09wdGlvbigpfSk7cWUobj1lKSxYZShuLmVsZW1lbnQoKSksbi5nZXRTeXN0ZW0oKS5yZW1vdmVGcm9tV29ybGQobiksdC5lYWNoKGZ1bmN0aW9uKG4pe24uc3luY0NvbXBvbmVudHMoKX0pfSxudD1mdW5jdGlvbihuLGUsdCl7dChuLGUuZWxlbWVudCgpKTt2YXIgcj1OZShlLmVsZW1lbnQoKSk7cG4ocixmdW5jdGlvbihuKXtlLmdldEJ5RG9tKG4pLmVhY2goWWUpfSl9LGV0PWZ1bmN0aW9uKHQpe3JldHVybntpczpmdW5jdGlvbihuKXtyZXR1cm4gdD09PW59LGlzVmFsdWU6bCxpc0Vycm9yOnMsZ2V0T3I6eSh0KSxnZXRPclRodW5rOnkodCksZ2V0T3JEaWU6eSh0KSxvcjpmdW5jdGlvbihuKXtyZXR1cm4gZXQodCl9LG9yVGh1bms6ZnVuY3Rpb24obil7cmV0dXJuIGV0KHQpfSxmb2xkOmZ1bmN0aW9uKG4sZSl7cmV0dXJuIGUodCl9LG1hcDpmdW5jdGlvbihuKXtyZXR1cm4gZXQobih0KSl9LG1hcEVycm9yOmZ1bmN0aW9uKG4pe3JldHVybiBldCh0KX0sZWFjaDpmdW5jdGlvbihuKXtuKHQpfSxiaW5kOmZ1bmN0aW9uKG4pe3JldHVybiBuKHQpfSxleGlzdHM6ZnVuY3Rpb24obil7cmV0dXJuIG4odCl9LGZvcmFsbDpmdW5jdGlvbihuKXtyZXR1cm4gbih0KX0sdG9PcHRpb246ZnVuY3Rpb24oKXtyZXR1cm4gTy5zb21lKHQpfX19LHR0PWZ1bmN0aW9uKHQpe3JldHVybntpczpzLGlzVmFsdWU6cyxpc0Vycm9yOmwsZ2V0T3I6YixnZXRPclRodW5rOmZ1bmN0aW9uKG4pe3JldHVybiBuKCl9LGdldE9yRGllOmZ1bmN0aW9uKCl7cmV0dXJuIGEoU3RyaW5nKHQpKSgpfSxvcjpmdW5jdGlvbihuKXtyZXR1cm4gbn0sb3JUaHVuazpmdW5jdGlvbihuKXtyZXR1cm4gbigpfSxmb2xkOmZ1bmN0aW9uKG4sZSl7cmV0dXJuIG4odCl9LG1hcDpmdW5jdGlvbihuKXtyZXR1cm4gdHQodCl9LG1hcEVycm9yOmZ1bmN0aW9uKG4pe3JldHVybiB0dChuKHQpKX0sZWFjaDp3LGJpbmQ6ZnVuY3Rpb24obil7cmV0dXJuIHR0KHQpfSxleGlzdHM6cyxmb3JhbGw6bCx0b09wdGlvbjpPLm5vbmV9fSxydD17dmFsdWU6ZXQsZXJyb3I6dHQsZnJvbU9wdGlvbjpmdW5jdGlvbihuLGUpe3JldHVybiBuLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm4gdHQoZSl9LGV0KX19LG90PWZ1bmN0aW9uKHUpe2lmKCFvbih1KSl0aHJvdyBuZXcgRXJyb3IoImNhc2VzIG11c3QgYmUgYW4gYXJyYXkiKTtpZigwPT09dS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJ0aGVyZSBtdXN0IGJlIGF0IGxlYXN0IG9uZSBjYXNlIik7dmFyIGM9W10sdD17fTtyZXR1cm4gcG4odSxmdW5jdGlvbihuLHIpe3ZhciBlPVQobik7aWYoMSE9PWUubGVuZ3RoKXRocm93IG5ldyBFcnJvcigib25lIGFuZCBvbmx5IG9uZSBuYW1lIHBlciBjYXNlIik7dmFyIG89ZVswXSxpPW5bb107aWYodFtvXSE9PXVuZGVmaW5lZCl0aHJvdyBuZXcgRXJyb3IoImR1cGxpY2F0ZSBrZXkgZGV0ZWN0ZWQ6IitvKTtpZigiY2F0YSI9PT1vKXRocm93IG5ldyBFcnJvcigiY2Fubm90IGhhdmUgYSBjYXNlIG5hbWVkIGNhdGEgKHNvcnJ5KSIpO2lmKCFvbihpKSl0aHJvdyBuZXcgRXJyb3IoImNhc2UgYXJndW1lbnRzIG11c3QgYmUgYW4gYXJyYXkiKTtjLnB1c2gobyksdFtvXT1mdW5jdGlvbigpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg7aWYobiE9PWkubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyB0byBjYXNlICIrbysiLiBFeHBlY3RlZCAiK2kubGVuZ3RoKyIgKCIraSsiKSwgZ290ICIrbik7Zm9yKHZhciB0PW5ldyBBcnJheShuKSxlPTA7ZTx0Lmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV07cmV0dXJue2ZvbGQ6ZnVuY3Rpb24oKXtpZihhcmd1bWVudHMubGVuZ3RoIT09dS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJXcm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIHRvIGZvbGQuIEV4cGVjdGVkICIrdS5sZW5ndGgrIiwgZ290ICIrYXJndW1lbnRzLmxlbmd0aCk7cmV0dXJuIGFyZ3VtZW50c1tyXS5hcHBseShudWxsLHQpfSxtYXRjaDpmdW5jdGlvbihuKXt2YXIgZT1UKG4pO2lmKGMubGVuZ3RoIT09ZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJXcm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIHRvIG1hdGNoLiBFeHBlY3RlZDogIitjLmpvaW4oIiwiKSsiXG5BY3R1YWw6ICIrZS5qb2luKCIsIikpO2lmKCFPbihjLGZ1bmN0aW9uKG4pe3JldHVybiBkbihlLG4pfSkpdGhyb3cgbmV3IEVycm9yKCJOb3QgYWxsIGJyYW5jaGVzIHdlcmUgc3BlY2lmaWVkIHdoZW4gdXNpbmcgbWF0Y2guIFNwZWNpZmllZDogIitlLmpvaW4oIiwgIikrIlxuUmVxdWlyZWQ6ICIrYy5qb2luKCIsICIpKTtyZXR1cm4gbltvXS5hcHBseShudWxsLHQpfSxsb2c6ZnVuY3Rpb24obil7di5jb25zb2xlLmxvZyhuLHtjb25zdHJ1Y3RvcnM6Yyxjb25zdHJ1Y3RvcjpvLHBhcmFtczp0fSl9fX19KSx0fSxpdD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LHV0PWZ1bmN0aW9uKHUpe3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgbj1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCksZT0wO2U8bi5sZW5ndGg7ZSsrKW5bZV09YXJndW1lbnRzW2VdO2lmKDA9PT1uLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkNhbid0IG1lcmdlIHplcm8gb2JqZWN0cyIpO2Zvcih2YXIgdD17fSxyPTA7cjxuLmxlbmd0aDtyKyspe3ZhciBvPW5bcl07Zm9yKHZhciBpIGluIG8paXQuY2FsbChvLGkpJiYodFtpXT11KHRbaV0sb1tpXSkpfXJldHVybiB0fX0sY3Q9dXQoZnVuY3Rpb24obixlKXtyZXR1cm4gcm4obikmJnJuKGUpP2N0KG4sZSk6ZX0pLGF0PXV0KGZ1bmN0aW9uKG4sZSl7cmV0dXJuIGV9KTsoaT1vPW98fHt9KVtpLkVycm9yPTBdPSJFcnJvciIsaVtpLlZhbHVlPTFdPSJWYWx1ZSI7dmFyIGZ0LHN0LGx0LGR0PWZ1bmN0aW9uKG4sZSx0KXtyZXR1cm4gbi5zdHlwZT09PW8uRXJyb3I/ZShuLnNlcnJvcik6dChuLnN2YWx1ZSl9LG10PWZ1bmN0aW9uKG4pe3JldHVybntzdHlwZTpvLlZhbHVlLHN2YWx1ZTpufX0sZ3Q9ZnVuY3Rpb24obil7cmV0dXJue3N0eXBlOm8uRXJyb3Isc2Vycm9yOm59fSxwdD1mdW5jdGlvbihuKXtyZXR1cm4gbi5mb2xkKGd0LG10KX0saHQ9ZnVuY3Rpb24obil7cmV0dXJuIGR0KG4scnQuZXJyb3IscnQudmFsdWUpfSx2dD1tdCx5dD1mdW5jdGlvbihuKXt2YXIgZT1bXSx0PVtdO3JldHVybiBwbihuLGZ1bmN0aW9uKG4pe2R0KG4sZnVuY3Rpb24obil7cmV0dXJuIHQucHVzaChuKX0sZnVuY3Rpb24obil7cmV0dXJuIGUucHVzaChuKX0pfSkse3ZhbHVlczplLGVycm9yczp0fX0sYnQ9Z3QseHQ9ZnVuY3Rpb24obixlKXtyZXR1cm4gbi5zdHlwZT09PW8uVmFsdWU/ZShuLnN2YWx1ZSk6bn0sd3Q9ZnVuY3Rpb24obixlKXtyZXR1cm4gbi5zdHlwZT09PW8uRXJyb3I/ZShuLnNlcnJvcik6bn0sU3Q9ZnVuY3Rpb24obixlKXtyZXR1cm4gbi5zdHlwZT09PW8uVmFsdWU/e3N0eXBlOm8uVmFsdWUsc3ZhbHVlOmUobi5zdmFsdWUpfTpufSxPdD1mdW5jdGlvbihuLGUpe3JldHVybiBuLnN0eXBlPT09by5FcnJvcj97c3R5cGU6by5FcnJvcixzZXJyb3I6ZShuLnNlcnJvcil9Om59LFR0PW90KFt7c3RyaWN0OltdfSx7ZGVmYXVsdGVkVGh1bms6WyJmYWxsYmFja1RodW5rIl19LHthc09wdGlvbjpbXX0se2FzRGVmYXVsdGVkT3B0aW9uVGh1bms6WyJmYWxsYmFja1RodW5rIl19LHttZXJnZVdpdGhUaHVuazpbImJhc2VUaHVuayJdfV0pLGt0PWZ1bmN0aW9uKG4pe3JldHVybiBUdC5kZWZhdWx0ZWRUaHVuayh5KG4pKX0sRXQ9VHQuc3RyaWN0LEN0PVR0LmFzT3B0aW9uLE10PVR0LmRlZmF1bHRlZFRodW5rLF90PShUdC5hc0RlZmF1bHRlZE9wdGlvblRodW5rLFR0Lm1lcmdlV2l0aFRodW5rKSxEdD1mdW5jdGlvbihuLGUpe3ZhciB0O3JldHVybih0PXt9KVtuXT1lLHR9LEl0PShvdChbe2JvdGhFcnJvcnM6WyJlcnJvcjEiLCJlcnJvcjIiXX0se2ZpcnN0RXJyb3I6WyJlcnJvcjEiLCJ2YWx1ZTIiXX0se3NlY29uZEVycm9yOlsidmFsdWUxIiwiZXJyb3IyIl19LHtib3RoVmFsdWVzOlsidmFsdWUxIiwidmFsdWUyIl19XSksZnVuY3Rpb24obixlKXtyZXR1cm4gdD1lLHI9e30sRShuLGZ1bmN0aW9uKG4sZSl7ZG4odCxlKXx8KHJbZV09bil9KSxyO3ZhciB0LHJ9KSxGdD1mdW5jdGlvbihuLGUpe3JldHVybiBEdChuLGUpfSxSdD1mdW5jdGlvbihuKXtyZXR1cm4gZT17fSxwbihuLGZ1bmN0aW9uKG4pe2Vbbi5rZXldPW4udmFsdWV9KSxlO3ZhciBlfSxWdD1mdW5jdGlvbihuLGUpe3ZhciB0LHIsbyxpLHUsYz0odD1bXSxyPVtdLHBuKG4sZnVuY3Rpb24obil7bi5mb2xkKGZ1bmN0aW9uKG4pe3QucHVzaChuKX0sZnVuY3Rpb24obil7ci5wdXNoKG4pfSl9KSx7ZXJyb3JzOnQsdmFsdWVzOnJ9KTtyZXR1cm4gMDxjLmVycm9ycy5sZW5ndGg/KHU9Yy5lcnJvcnMscnQuZXJyb3Iod24odSkpKTooaT1lLDA9PT0obz1jLnZhbHVlcykubGVuZ3RoP3J0LnZhbHVlKGkpOnJ0LnZhbHVlKGN0KGksYXQuYXBwbHkodW5kZWZpbmVkLG8pKSkpfSxCdD1mdW5jdGlvbihuKXtyZXR1cm4gZChidCx3bikobil9LEF0PWZ1bmN0aW9uKG4sZSl7dmFyIHQscixvPXl0KG4pO3JldHVybiAwPG8uZXJyb3JzLmxlbmd0aD9CdChvLmVycm9ycyk6KHQ9by52YWx1ZXMscj1lLDA8dC5sZW5ndGg/dnQoY3QocixhdC5hcHBseSh1bmRlZmluZWQsdCkpKTp2dChyKSl9LGp0PWZ1bmN0aW9uKG4pe3ZhciBlPXl0KG4pO3JldHVybiAwPGUuZXJyb3JzLmxlbmd0aD9CdChlLmVycm9ycyk6dnQoZS52YWx1ZXMpfSxIdD1mdW5jdGlvbihuKXtyZXR1cm4gcm4obikmJjEwMDxUKG4pLmxlbmd0aD8iIHJlbW92ZWQgZHVlIHRvIHNpemUiOkpTT04uc3RyaW5naWZ5KG4sbnVsbCwyKX0sTnQ9ZnVuY3Rpb24obixlKXtyZXR1cm4gYnQoW3twYXRoOm4sZ2V0RXJyb3JJbmZvOmV9XSl9LFB0PW90KFt7ZmllbGQ6WyJrZXkiLCJva2V5IiwicHJlc2VuY2UiLCJwcm9wIl19LHtzdGF0ZTpbIm9rZXkiLCJpbnN0YW50aWF0b3IiXX1dKSx6dD1mdW5jdGlvbih0LHIsbyl7cmV0dXJuIEkocixvKS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIG49byxlPXIsTnQodCxmdW5jdGlvbigpe3JldHVybidDb3VsZCBub3QgZmluZCB2YWxpZCAqc3RyaWN0KiB2YWx1ZSBmb3IgIicrbisnIiBpbiAnK0h0KGUpfSk7dmFyIG4sZX0sdnQpfSxMdD1mdW5jdGlvbihuLGUsdCl7dmFyIHI9SShuLGUpLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm4gdChuKX0sYik7cmV0dXJuIHZ0KHIpfSxHdD1mdW5jdGlvbihjLGEsbixmKXtyZXR1cm4gbi5mb2xkKGZ1bmN0aW9uKG8sdCxuLHIpe3ZhciBpPWZ1bmN0aW9uKG4pe3ZhciBlPXIuZXh0cmFjdChjLmNvbmNhdChbb10pLGYsbik7cmV0dXJuIFN0KGUsZnVuY3Rpb24obil7cmV0dXJuIER0KHQsZihuKSl9KX0sdT1mdW5jdGlvbihuKXtyZXR1cm4gbi5mb2xkKGZ1bmN0aW9uKCl7dmFyIG49RHQodCxmKE8ubm9uZSgpKSk7cmV0dXJuIHZ0KG4pfSxmdW5jdGlvbihuKXt2YXIgZT1yLmV4dHJhY3QoYy5jb25jYXQoW29dKSxmLG4pO3JldHVybiBTdChlLGZ1bmN0aW9uKG4pe3JldHVybiBEdCh0LGYoTy5zb21lKG4pKSl9KX0pfTtyZXR1cm4gbi5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIHh0KHp0KGMsYSxvKSxpKX0sZnVuY3Rpb24obil7cmV0dXJuIHh0KEx0KGEsbyxuKSxpKX0sZnVuY3Rpb24oKXtyZXR1cm4geHQodnQoSShhLG8pKSx1KX0sZnVuY3Rpb24obil7cmV0dXJuIHh0KCh0PW4scj1JKGU9YSxvKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuITA9PT1uP3QoZSk6bn0pLHZ0KHIpKSx1KTt2YXIgZSx0LHJ9LGZ1bmN0aW9uKG4pe3ZhciBlPW4oYSksdD1TdChMdChhLG8seSh7fSkpLGZ1bmN0aW9uKG4pe3JldHVybiBjdChlLG4pfSk7cmV0dXJuIHh0KHQsaSl9KX0sZnVuY3Rpb24obixlKXt2YXIgdD1lKGEpO3JldHVybiB2dChEdChuLGYodCkpKX0pfSwkdD1mdW5jdGlvbihyKXtyZXR1cm57ZXh0cmFjdDpmdW5jdGlvbih0LG4sZSl7cmV0dXJuIHd0KHIoZSxuKSxmdW5jdGlvbihuKXtyZXR1cm4gZT1uLE50KHQsZnVuY3Rpb24oKXtyZXR1cm4gZX0pO3ZhciBlfSl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuInZhbCJ9fX0sVXQ9ZnVuY3Rpb24obil7dmFyIHU9V3QobiksYz12bihuLGZ1bmN0aW9uKGUsbil7cmV0dXJuIG4uZm9sZChmdW5jdGlvbihuKXtyZXR1cm4gY3QoZSxGdChuLCEwKSl9LHkoZSkpfSx7fSk7cmV0dXJue2V4dHJhY3Q6ZnVuY3Rpb24obixlLHQpe3ZhciByLG89dW4odCk/W106VChfKHQsZnVuY3Rpb24obil7cmV0dXJuIG4hPT11bmRlZmluZWQmJm51bGwhPT1ufSkpLGk9aG4obyxmdW5jdGlvbihuKXtyZXR1cm4hUihjLG4pfSk7cmV0dXJuIDA9PT1pLmxlbmd0aD91LmV4dHJhY3QobixlLHQpOihyPWksTnQobixmdW5jdGlvbigpe3JldHVybiJUaGVyZSBhcmUgdW5zdXBwb3J0ZWQgZmllbGRzOiBbIityLmpvaW4oIiwgIikrIl0gc3BlY2lmaWVkIn0pKX0sdG9TdHJpbmc6dS50b1N0cmluZ319LFd0PWZ1bmN0aW9uKGMpe3JldHVybntleHRyYWN0OmZ1bmN0aW9uKG4sZSx0KXtyZXR1cm4gcj1uLG89dCxpPWUsdT1nbihjLGZ1bmN0aW9uKG4pe3JldHVybiBHdChyLG8sbixpKX0pLEF0KHUse30pO3ZhciByLG8saSx1fSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiJvYmp7XG4iK2duKGMsZnVuY3Rpb24obil7cmV0dXJuIG4uZm9sZChmdW5jdGlvbihuLGUsdCxyKXtyZXR1cm4gbisiIC0+ICIrci50b1N0cmluZygpfSxmdW5jdGlvbihuLGUpe3JldHVybiJzdGF0ZSgiK24rIikifSl9KS5qb2luKCJcbiIpKyJ9In19fSxYdD1mdW5jdGlvbih0LGkpe3ZhciB1PWZ1bmN0aW9uKG4sZSl7cmV0dXJuIG89JHQodCksZnVuY3Rpb24odCxyLG4pe3ZhciBlPWduKG4sZnVuY3Rpb24obixlKXtyZXR1cm4gby5leHRyYWN0KHQuY29uY2F0KFsiWyIrZSsiXSJdKSxyLG4pfSk7cmV0dXJuIGp0KGUpfShuLGIsZSk7dmFyIG99O3JldHVybntleHRyYWN0OmZ1bmN0aW9uKHQscixvKXt2YXIgbj1UKG8pLGU9dSh0LG4pO3JldHVybiB4dChlLGZ1bmN0aW9uKG4pe3ZhciBlPWduKG4sZnVuY3Rpb24obil7cmV0dXJuIFB0LmZpZWxkKG4sbixFdCgpLGkpfSk7cmV0dXJuIFd0KGUpLmV4dHJhY3QodCxyLG8pfSl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuInNldE9mKCIraS50b1N0cmluZygpKyIpIn19fSxxdD15KCR0KHZ0KSksWXQ9UHQuc3RhdGUsS3Q9UHQuZmllbGQsSnQ9ZnVuY3Rpb24odCxlLHIsbyxpKXtyZXR1cm4gSShvLGkpLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm4gbj1vLGU9aSxOdCh0LGZ1bmN0aW9uKCl7cmV0dXJuJ1RoZSBjaG9zZW4gc2NoZW1hOiAiJytlKyciIGRpZCBub3QgZXhpc3QgaW4gYnJhbmNoZXM6ICcrSHQobil9KTt2YXIgbixlfSxmdW5jdGlvbihuKXtyZXR1cm4gbi5leHRyYWN0KHQuY29uY2F0KFsiYnJhbmNoOiAiK2ldKSxlLHIpfSl9LFF0PWZ1bmN0aW9uKG8saSl7cmV0dXJue2V4dHJhY3Q6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBJKHIsbykuZm9sZChmdW5jdGlvbigpe3JldHVybiBuPW8sTnQoZSxmdW5jdGlvbigpe3JldHVybidDaG9pY2Ugc2NoZW1hIGRpZCBub3QgY29udGFpbiBjaG9pY2Uga2V5OiAiJytuKyciJ30pO3ZhciBufSxmdW5jdGlvbihuKXtyZXR1cm4gSnQoZSx0LHIsaSxuKX0pfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiJjaG9vc2VPbigiK28rIikuIFBvc3NpYmxlIHZhbHVlczogIitUKGkpfX19LFp0PSR0KHZ0KSxucj1mdW5jdGlvbihlKXtyZXR1cm4gJHQoZnVuY3Rpb24obil7cmV0dXJuIGUobikuZm9sZChidCx2dCl9KX0sZXI9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gWHQoZnVuY3Rpb24obil7cmV0dXJuIHB0KGUobikpfSxuKX0sdHI9ZnVuY3Rpb24obixlLHQpe3JldHVybiBodCgocj1uLG89YixpPXQsdT1lLmV4dHJhY3QoW3JdLG8saSksT3QodSxmdW5jdGlvbihuKXtyZXR1cm57aW5wdXQ6aSxlcnJvcnM6bn19KSkpO3ZhciByLG8saSx1fSxycj1mdW5jdGlvbihuKXtyZXR1cm4gbi5mb2xkKGZ1bmN0aW9uKG4pe3Rocm93IG5ldyBFcnJvcihpcihuKSl9LGIpfSxvcj1mdW5jdGlvbihuLGUsdCl7cmV0dXJuIHJyKHRyKG4sZSx0KSl9LGlyPWZ1bmN0aW9uKG4pe3JldHVybiJFcnJvcnM6IFxuIisoZT1uLmVycm9ycyx0PTEwPGUubGVuZ3RoP2Uuc2xpY2UoMCwxMCkuY29uY2F0KFt7cGF0aDpbXSxnZXRFcnJvckluZm86ZnVuY3Rpb24oKXtyZXR1cm4iLi4uIChvbmx5IHNob3dpbmcgZmlyc3QgdGVuIGZhaWx1cmVzKSJ9fV0pOmUsZ24odCxmdW5jdGlvbihuKXtyZXR1cm4iRmFpbGVkIHBhdGg6ICgiK24ucGF0aC5qb2luKCIgPiAiKSsiKVxuIituLmdldEVycm9ySW5mbygpfSkuam9pbigiXG4iKSkrIlxuXG5JbnB1dCBvYmplY3Q6ICIrSHQobi5pbnB1dCk7dmFyIGUsdH0sdXI9ZnVuY3Rpb24obixlKXtyZXR1cm4gUXQobixDKGUsV3QpKX0sY3I9eShadCksYXI9KGZ0PWNuLHN0PSJmdW5jdGlvbiIsJHQoZnVuY3Rpb24obil7dmFyIGU9dHlwZW9mIG47cmV0dXJuIGZ0KG4pP3Z0KG4pOmJ0KCJFeHBlY3RlZCB0eXBlOiAiK3N0KyIgYnV0IGdvdDogIitlKX0pKSxmcj1mdW5jdGlvbihuKXtyZXR1cm4gS3QobixuLEV0KCkscXQoKSl9LHNyPWZ1bmN0aW9uKG4sZSl7cmV0dXJuIEt0KG4sbixFdCgpLGUpfSxscj1mdW5jdGlvbihuLGUpe3JldHVybiBLdChuLG4sRXQoKSxXdChlKSl9LGRyPWZ1bmN0aW9uKG4pe3JldHVybiBLdChuLG4sQ3QoKSxxdCgpKX0sbXI9ZnVuY3Rpb24obixlKXtyZXR1cm4gS3QobixuLEN0KCksZSl9LGdyPWZ1bmN0aW9uKG4sZSl7cmV0dXJuIG1yKG4sV3QoZSkpfSxwcj1mdW5jdGlvbihuLGUpe3JldHVybiBtcihuLFV0KGUpKX0saHI9ZnVuY3Rpb24obixlKXtyZXR1cm4gS3QobixuLGt0KGUpLHF0KCkpfSx2cj1mdW5jdGlvbihuLGUsdCl7cmV0dXJuIEt0KG4sbixrdChlKSx0KX0seXI9ZnVuY3Rpb24obixlKXtyZXR1cm4gWXQobixlKX0sYnI9ZnVuY3Rpb24obil7cmV0dXJuIGNuKG4pP246eSghMSl9LHhyPWZ1bmN0aW9uKG4sZSx0KXt2YXIgcj1lKG4pLG89YnIodCk7cmV0dXJuIHIub3JUaHVuayhmdW5jdGlvbigpe3JldHVybiBvKG4pP08ubm9uZSgpOmZ1bmN0aW9uKG4sZSx0KXtmb3IodmFyIHI9bi5kb20oKSxvPWJyKHQpO3IucGFyZW50Tm9kZTspe3I9ci5wYXJlbnROb2RlO3ZhciBpPVRlLmZyb21Eb20ociksdT1lKGkpO2lmKHUuaXNTb21lKCkpcmV0dXJuIHU7aWYobyhpKSlicmVha31yZXR1cm4gTy5ub25lKCl9KG4sZSxvKX0pfSx3cj1mdW5jdGlvbihuLGUpe3JldHVybiBBZShuLmVsZW1lbnQoKSxlLmV2ZW50KCkudGFyZ2V0KCkpfSxTcj1mdW5jdGlvbihuKXtpZighUihuLCJjYW4iKSYmIVIobiwiYWJvcnQiKSYmIVIobiwicnVuIikpdGhyb3cgbmV3IEVycm9yKCJFdmVudEhhbmRsZXIgZGVmaW5lZCBieTogIitKU09OLnN0cmluZ2lmeShuLG51bGwsMikrIiBkb2VzIG5vdCBoYXZlIGNhbiwgYWJvcnQsIG9yIHJ1biEiKTtyZXR1cm4gb3IoIkV4dHJhY3RpbmcgZXZlbnQuaGFuZGxlciIsVXQoW2hyKCJjYW4iLHkoITApKSxocigiYWJvcnQiLHkoITEpKSxocigicnVuIix3KV0pLG4pfSxPcj1mdW5jdGlvbih0KXt2YXIgZSxyLG8saSxuPShyPWZ1bmN0aW9uKG4pe3JldHVybiBuLmNhbn0sZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sbj0wO248YXJndW1lbnRzLmxlbmd0aDtuKyspdFtuXT1hcmd1bWVudHNbbl07cmV0dXJuIHluKGUsZnVuY3Rpb24obixlKXtyZXR1cm4gbiYmcihlKS5hcHBseSh1bmRlZmluZWQsdCl9LCEwKX0pLHU9KG89ZT10LGk9ZnVuY3Rpb24obil7cmV0dXJuIG4uYWJvcnR9LGZ1bmN0aW9uKCl7Zm9yKHZhciB0PVtdLG49MDtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXRbbl09YXJndW1lbnRzW25dO3JldHVybiB5bihvLGZ1bmN0aW9uKG4sZSl7cmV0dXJuIG58fGkoZSkuYXBwbHkodW5kZWZpbmVkLHQpfSwhMSl9KTtyZXR1cm4gU3Ioe2NhbjpuLGFib3J0OnUscnVuOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLG49MDtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKWVbbl09YXJndW1lbnRzW25dO3BuKHQsZnVuY3Rpb24obil7bi5ydW4uYXBwbHkodW5kZWZpbmVkLGUpfSl9fSl9LFRyPWZ1bmN0aW9uKG4pe3JldHVybiBSdChuKX0sa3I9ZnVuY3Rpb24obixlKXtyZXR1cm57a2V5Om4sdmFsdWU6U3Ioe2Fib3J0OmV9KX19LEVyPWZ1bmN0aW9uKG4sZSl7cmV0dXJue2tleTpuLHZhbHVlOlNyKHtydW46ZX0pfX0sQ3I9ZnVuY3Rpb24obix0LHIpe3JldHVybntrZXk6bix2YWx1ZTpTcih7cnVuOmZ1bmN0aW9uKG4sZSl7dC5hcHBseSh1bmRlZmluZWQsW24sZV0uY29uY2F0KHIpKX19KX19LE1yPWZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm57a2V5Om4sdmFsdWU6U3Ioe3J1bjpmdW5jdGlvbihuLGUpe3dyKG4sZSkmJnQobixlKX19KX19fSxfcj1mdW5jdGlvbih1LGUpe3JldHVybiBFcih1LGZ1bmN0aW9uKG4saSl7bi5nZXRTeXN0ZW0oKS5nZXRCeVVpZChlKS5lYWNoKGZ1bmN0aW9uKG4pe3ZhciBlLHQscixvO3Q9KGU9bikuZWxlbWVudCgpLHI9dSxvPWksZS5nZXRTeXN0ZW0oKS50cmlnZ2VyRXZlbnQocix0LG8uZXZlbnQoKSl9KX0pfSxEcj1mdW5jdGlvbihuLGUsdCl7dmFyIHI9ZS5wYXJ0VWlkc1t0XTtyZXR1cm4gX3IobixyKX0sSXI9ZnVuY3Rpb24obil7cmV0dXJuIEVyKG4sZnVuY3Rpb24obixlKXtlLmN1dCgpfSl9LEZyPU1yKG1lKCkpLFJyPU1yKGdlKCkpLFZyPU1yKGRlKCkpLEJyPShsdD1hZSgpLGZ1bmN0aW9uKG4pe3JldHVybiBFcihsdCxuKX0pLEFyPWZ1bmN0aW9uKG4pe3JldHVybiBnbihuLGZ1bmN0aW9uKG4pe3JldHVybiByPWU9Ii8qIixvPSh0PW4pLmxlbmd0aC1lLmxlbmd0aCwiIj09PXJ8fHQubGVuZ3RoPj1yLmxlbmd0aCYmdC5zdWJzdHIobyxvK3IubGVuZ3RoKT09PXI/bi5zdWJzdHJpbmcoMCxuLmxlbmd0aC0iLyoiLmxlbmd0aCk6bjt2YXIgZSx0LHIsb30pfSxqcj1mdW5jdGlvbihuLGUpe3ZhciB0PW4udG9TdHJpbmcoKSxyPXQuaW5kZXhPZigiKSIpKzEsbz10LmluZGV4T2YoIigiKSxpPXQuc3Vic3RyaW5nKG8rMSxyLTEpLnNwbGl0KC8sXHMqLyk7cmV0dXJuIG4udG9GdW5jdGlvbkFubm90YXRpb249ZnVuY3Rpb24oKXtyZXR1cm57bmFtZTplLHBhcmFtZXRlcnM6QXIoaSl9fSxufSxIcj1mdW5jdGlvbihuKXtyZXR1cm57Y2xhc3NlczpuLmNsYXNzZXMhPT11bmRlZmluZWQ/bi5jbGFzc2VzOltdLGF0dHJpYnV0ZXM6bi5hdHRyaWJ1dGVzIT09dW5kZWZpbmVkP24uYXR0cmlidXRlczp7fSxzdHlsZXM6bi5zdHlsZXMhPT11bmRlZmluZWQ/bi5zdHlsZXM6e319fSxOcj1mdW5jdGlvbih0LHIsbyl7cmV0dXJuIFZyKGZ1bmN0aW9uKG4sZSl7byhuLHQscil9KX0sUHI9ZnVuY3Rpb24obyxpLHUpe3ZhciBuLGUsdCxyLGMsYTtyZXR1cm4gbj1mdW5jdGlvbih0KXtmb3IodmFyIG49W10sZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspbltlLTFdPWFyZ3VtZW50c1tlXTt2YXIgcj1bdF0uY29uY2F0KG4pO3JldHVybiB0LmNvbmZpZyh7bmFtZTp5KG8pfSkuZm9sZChmdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiV2UgY291bGQgbm90IGZpbmQgYW55IGJlaGF2aW91ciBjb25maWd1cmF0aW9uIGZvcjogIitvKyIuIFVzaW5nIEFQSTogIit1KX0sZnVuY3Rpb24obil7dmFyIGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwociwxKTtyZXR1cm4gaS5hcHBseSh1bmRlZmluZWQsW3Qsbi5jb25maWcsbi5zdGF0ZV0uY29uY2F0KGUpKX0pfSxlPXUsdD1pLnRvU3RyaW5nKCkscj10LmluZGV4T2YoIikiKSsxLGM9dC5pbmRleE9mKCIoIiksYT10LnN1YnN0cmluZyhjKzEsci0xKS5zcGxpdCgvLFxzKi8pLG4udG9GdW5jdGlvbkFubm90YXRpb249ZnVuY3Rpb24oKXtyZXR1cm57bmFtZTplLHBhcmFtZXRlcnM6QXIoYS5zbGljZSgwLDEpLmNvbmNhdChhLnNsaWNlKDMpKSl9fSxufSx6cj1mdW5jdGlvbihuKXtyZXR1cm57a2V5Om4sdmFsdWU6dW5kZWZpbmVkfX0sTHI9ZnVuY3Rpb24odCxuLHIsbyxlLGksdSl7dmFyIGM9ZnVuY3Rpb24obil7cmV0dXJuIFIobixyKT9uW3JdKCk6Ty5ub25lKCl9LGE9QyhlLGZ1bmN0aW9uKG4sZSl7cmV0dXJuIFByKHIsbixlKX0pLGY9QyhpLGZ1bmN0aW9uKG4sZSl7cmV0dXJuIGpyKG4sZSl9KSxzPXgoeCh4KHt9LGYpLGEpLHtyZXZva2U6Uyh6cixyKSxjb25maWc6ZnVuY3Rpb24obil7dmFyIGU9b3IocisiLWNvbmZpZyIsdCxuKTtyZXR1cm57a2V5OnIsdmFsdWU6e2NvbmZpZzplLG1lOnMsY29uZmlnQXNSYXc6VihmdW5jdGlvbigpe3JldHVybiBvcihyKyItY29uZmlnIix0LG4pfSksaW5pdGlhbENvbmZpZzpuLHN0YXRlOnV9fX0sc2NoZW1hOmZ1bmN0aW9uKCl7cmV0dXJuIG59LGV4aGliaXQ6ZnVuY3Rpb24obix0KXtyZXR1cm4gYyhuKS5iaW5kKGZ1bmN0aW9uKGUpe3JldHVybiBJKG8sImV4aGliaXQiKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIG4odCxlLmNvbmZpZyxlLnN0YXRlKX0pfSkuZ2V0T3IoSHIoe30pKX0sbmFtZTpmdW5jdGlvbigpe3JldHVybiByfSxoYW5kbGVyczpmdW5jdGlvbihuKXtyZXR1cm4gYyhuKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIEkobywiZXZlbnRzIikuZ2V0T3IoZnVuY3Rpb24oKXtyZXR1cm57fX0pKG4uY29uZmlnLG4uc3RhdGUpfSkuZ2V0T3Ioe30pfX0pO3JldHVybiBzfSxHcj17aW5pdDpmdW5jdGlvbigpe3JldHVybiAkcih7cmVhZFN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIk5vIFN0YXRlIHJlcXVpcmVkIn19KX19LCRyPWZ1bmN0aW9uKG4pe3JldHVybiBufSxVcj1mdW5jdGlvbihuKXtyZXR1cm4gUnQobil9LFdyPVV0KFtmcigiZmllbGRzIiksZnIoIm5hbWUiKSxocigiYWN0aXZlIix7fSksaHIoImFwaXMiLHt9KSxocigic3RhdGUiLEdyKSxocigiZXh0cmEiLHt9KV0pLFhyPWZ1bmN0aW9uKG4pe3ZhciBlLHQscixvLGksdSxjLGEsZj1vcigiQ3JlYXRpbmcgYmVoYXZpb3VyOiAiK24ubmFtZSxXcixuKTtyZXR1cm4gZT1mLmZpZWxkcyx0PWYubmFtZSxyPWYuYWN0aXZlLG89Zi5hcGlzLGk9Zi5leHRyYSx1PWYuc3RhdGUsYz1VdChlKSxhPWdyKHQsW3ByKCJjb25maWciLGUpXSksTHIoYyxhLHQscixvLGksdSl9LHFyPVV0KFtmcigiYnJhbmNoS2V5IiksZnIoImJyYW5jaGVzIiksZnIoIm5hbWUiKSxocigiYWN0aXZlIix7fSksaHIoImFwaXMiLHt9KSxocigic3RhdGUiLEdyKSxocigiZXh0cmEiLHt9KV0pLFlyPXkodW5kZWZpbmVkKSxLcj1mdW5jdGlvbihuLGUsdCl7aWYoISh0bih0KXx8dW4odCl8fGFuKHQpKSl0aHJvdyB2LmNvbnNvbGUuZXJyb3IoIkludmFsaWQgY2FsbCB0byBBdHRyLnNldC4gS2V5ICIsZSwiOjogVmFsdWUgIix0LCI6OiBFbGVtZW50ICIsbiksbmV3IEVycm9yKCJBdHRyaWJ1dGUgdmFsdWUgd2FzIG5vdCBzaW1wbGUiKTtuLnNldEF0dHJpYnV0ZShlLHQrIiIpfSxKcj1mdW5jdGlvbihuLGUsdCl7S3Iobi5kb20oKSxlLHQpfSxRcj1mdW5jdGlvbihuLGUpe3ZhciB0PW4uZG9tKCk7RShlLGZ1bmN0aW9uKG4sZSl7S3IodCxlLG4pfSl9LFpyPWZ1bmN0aW9uKG4sZSl7dmFyIHQ9bi5kb20oKS5nZXRBdHRyaWJ1dGUoZSk7cmV0dXJuIG51bGw9PT10P3VuZGVmaW5lZDp0fSxubz1mdW5jdGlvbihuLGUpe3JldHVybiBPLmZyb20oWnIobixlKSl9LGVvPWZ1bmN0aW9uKG4sZSl7dmFyIHQ9bi5kb20oKTtyZXR1cm4hKCF0fHwhdC5oYXNBdHRyaWJ1dGUpJiZ0Lmhhc0F0dHJpYnV0ZShlKX0sdG89ZnVuY3Rpb24obixlKXtuLmRvbSgpLnJlbW92ZUF0dHJpYnV0ZShlKX0scm89ZnVuY3Rpb24obixlKXt2YXIgdD1acihuLGUpO3JldHVybiB0PT09dW5kZWZpbmVkfHwiIj09PXQ/W106dC5zcGxpdCgiICIpfSxvbz1mdW5jdGlvbihuKXtyZXR1cm4gbi5kb20oKS5jbGFzc0xpc3QhPT11bmRlZmluZWR9LGlvPWZ1bmN0aW9uKG4sZSl7cmV0dXJuIG89ZSxpPXJvKHQ9bixyPSJjbGFzcyIpLmNvbmNhdChbb10pLEpyKHQscixpLmpvaW4oIiAiKSksITA7dmFyIHQscixvLGl9LHVvPWZ1bmN0aW9uKG4sZSl7cmV0dXJuIG89ZSwwPChpPWhuKHJvKHQ9bixyPSJjbGFzcyIpLGZ1bmN0aW9uKG4pe3JldHVybiBuIT09b30pKS5sZW5ndGg/SnIodCxyLGkuam9pbigiICIpKTp0byh0LHIpLCExO3ZhciB0LHIsbyxpfSxjbz1mdW5jdGlvbihuLGUpe29vKG4pP24uZG9tKCkuY2xhc3NMaXN0LmFkZChlKTppbyhuLGUpfSxhbz1mdW5jdGlvbihuKXswPT09KG9vKG4pP24uZG9tKCkuY2xhc3NMaXN0OnJvKG4sImNsYXNzIikpLmxlbmd0aCYmdG8obiwiY2xhc3MiKX0sZm89ZnVuY3Rpb24obixlKXtvbyhuKT9uLmRvbSgpLmNsYXNzTGlzdC5yZW1vdmUoZSk6dW8obixlKTthbyhuKX0sc289ZnVuY3Rpb24obixlKXtyZXR1cm4gb28obikmJm4uZG9tKCkuY2xhc3NMaXN0LmNvbnRhaW5zKGUpfSxsbz1mdW5jdGlvbihuLGUsdCl7Zm8obix0KSxjbyhuLGUpfSxtbz0vKiAqL09iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLHRvQWxwaGE6ZnVuY3Rpb24obixlLHQpe2xvKG4uZWxlbWVudCgpLGUuYWxwaGEsZS5vbWVnYSl9LHRvT21lZ2E6ZnVuY3Rpb24obixlLHQpe2xvKG4uZWxlbWVudCgpLGUub21lZ2EsZS5hbHBoYSl9LGlzQWxwaGE6ZnVuY3Rpb24obixlLHQpe3JldHVybiBzbyhuLmVsZW1lbnQoKSxlLmFscGhhKX0saXNPbWVnYTpmdW5jdGlvbihuLGUsdCl7cmV0dXJuIHNvKG4uZWxlbWVudCgpLGUub21lZ2EpfSxjbGVhcjpmdW5jdGlvbihuLGUsdCl7Zm8obi5lbGVtZW50KCksZS5hbHBoYSksZm8obi5lbGVtZW50KCksZS5vbWVnYSl9fSksZ289W2ZyKCJhbHBoYSIpLGZyKCJvbWVnYSIpXSxwbz1Ycih7ZmllbGRzOmdvLG5hbWU6InN3YXBwaW5nIixhcGlzOm1vfSksaG89ZnVuY3Rpb24obil7dmFyIGU9bjtyZXR1cm57Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGV9LHNldDpmdW5jdGlvbihuKXtlPW59fX07ZnVuY3Rpb24gdm8obixlLHQscixvKXtyZXR1cm4gbih0LHIpP08uc29tZSh0KTpjbihvKSYmbyh0KT9PLm5vbmUoKTplKHQscixvKX12YXIgeW8sYm8seG89ZnVuY3Rpb24obixlLHQpe2Zvcih2YXIgcj1uLmRvbSgpLG89Y24odCk/dDp5KCExKTtyLnBhcmVudE5vZGU7KXtyPXIucGFyZW50Tm9kZTt2YXIgaT1UZS5mcm9tRG9tKHIpO2lmKGUoaSkpcmV0dXJuIE8uc29tZShpKTtpZihvKGkpKWJyZWFrfXJldHVybiBPLm5vbmUoKX0sd289ZnVuY3Rpb24obil7cmV0dXJuIG4uZG9tKCkuZm9jdXMoKX0sU289ZnVuY3Rpb24obil7cmV0dXJuIG4uZG9tKCkuYmx1cigpfSxPbz1mdW5jdGlvbihuKXt2YXIgZT1uIT09dW5kZWZpbmVkP24uZG9tKCk6di5kb2N1bWVudDtyZXR1cm4gTy5mcm9tKGUuYWN0aXZlRWxlbWVudCkubWFwKFRlLmZyb21Eb20pfSxUbz1mdW5jdGlvbihlKXtyZXR1cm4gT28oamUoZSkpLmZpbHRlcihmdW5jdGlvbihuKXtyZXR1cm4gZS5kb20oKS5jb250YWlucyhuLmRvbSgpKX0pfSxrbz10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS5kb20uRE9NVXRpbHMiKSxFbz10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS5UaGVtZU1hbmFnZXIiKSxDbz0iZm9ybWF0Q2hhbmdlZCIsTW89Im9yaWVudGF0aW9uQ2hhbmdlZCIsX289ImRyb3B1cERpc21pc3NlZCIsRG89ZnVuY3Rpb24obil7cmV0dXJuIG4uZG9tKCkuaW5uZXJIVE1MfSxJbz1mdW5jdGlvbihuLGUpe3ZhciB0LHIsbz1qZShuKS5kb20oKSxpPVRlLmZyb21Eb20oby5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkpLHU9KHQ9ZSwocj0ob3x8di5kb2N1bWVudCkuY3JlYXRlRWxlbWVudCgiZGl2IikpLmlubmVySFRNTD10LE5lKFRlLmZyb21Eb20ocikpKTtVZShpLHUpLFdlKG4pLCRlKG4saSl9LEZvPWZ1bmN0aW9uKG4pe3JldHVybiBlPW4sdD0hMSxUZS5mcm9tRG9tKGUuZG9tKCkuY2xvbmVOb2RlKHQpKTt2YXIgZSx0fSxSbz1mdW5jdGlvbihuKXt2YXIgZSx0LHIsbz1GbyhuKTtyZXR1cm4gZT1vLHQ9VGUuZnJvbVRhZygiZGl2Iikscj1UZS5mcm9tRG9tKGUuZG9tKCkuY2xvbmVOb2RlKCEwKSksJGUodCxyKSxEbyh0KX0sVm89ZnVuY3Rpb24obil7cmV0dXJuIFJvKG4pfSxCbz0vKiAqL09iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLGV2ZW50czpmdW5jdGlvbihhKXtyZXR1cm4gVHIoW0VyKGNlKCksZnVuY3Rpb24obyxuKXt2YXIgZSx0LGk9YS5jaGFubmVscyxyPVQoaSksdT1uLGM9KGU9ciwodD11KS51bml2ZXJzYWwoKT9lOmhuKGUsZnVuY3Rpb24obil7cmV0dXJuIGRuKHQuY2hhbm5lbHMoKSxuKX0pKTtwbihjLGZ1bmN0aW9uKG4pe3ZhciBlPWlbbl0sdD1lLnNjaGVtYSxyPW9yKCJjaGFubmVsWyIrbisiXSBkYXRhXG5SZWNlaXZlcjogIitWbyhvLmVsZW1lbnQoKSksdCx1LmRhdGEoKSk7ZS5vblJlY2VpdmUobyxyKX0pfSldKX19KSxBbz0idW5rbm93biI7KGJvPXlvPXlvfHx7fSlbYm8uU1RPUD0wXT0iU1RPUCIsYm9bYm8uTk9STUFMPTFdPSJOT1JNQUwiLGJvW2JvLkxPR0dJTkc9Ml09IkxPR0dJTkciO3ZhciBqbyxIbz1obyh7fSksTm89ZnVuY3Rpb24oZSxuLHQpe3ZhciByLG8saSx1O3N3aXRjaChJKEhvLmdldCgpLGUpLm9yVGh1bmsoZnVuY3Rpb24oKXt2YXIgbj1UKEhvLmdldCgpKTtyZXR1cm4gQ24obixmdW5jdGlvbihuKXtyZXR1cm4tMTxlLmluZGV4T2Yobik/Ty5zb21lKEhvLmdldCgpW25dKTpPLm5vbmUoKX0pfSkuZ2V0T3IoeW8uTk9STUFMKSl7Y2FzZSB5by5OT1JNQUw6cmV0dXJuIHQoTG8oKSk7Y2FzZSB5by5MT0dHSU5HOnZhciBjPShyPWUsbz1uLGk9W10sdT0obmV3IERhdGUpLmdldFRpbWUoKSx7bG9nRXZlbnRDdXQ6ZnVuY3Rpb24obixlLHQpe2kucHVzaCh7b3V0Y29tZToiY3V0Iix0YXJnZXQ6ZSxwdXJwb3NlOnR9KX0sbG9nRXZlbnRTdG9wcGVkOmZ1bmN0aW9uKG4sZSx0KXtpLnB1c2goe291dGNvbWU6InN0b3BwZWQiLHRhcmdldDplLHB1cnBvc2U6dH0pfSxsb2dOb1BhcmVudDpmdW5jdGlvbihuLGUsdCl7aS5wdXNoKHtvdXRjb21lOiJuby1wYXJlbnQiLHRhcmdldDplLHB1cnBvc2U6dH0pfSxsb2dFdmVudE5vSGFuZGxlcnM6ZnVuY3Rpb24obixlKXtpLnB1c2goe291dGNvbWU6Im5vLWhhbmRsZXJzLWxlZnQiLHRhcmdldDplfSl9LGxvZ0V2ZW50UmVzcG9uc2U6ZnVuY3Rpb24obixlLHQpe2kucHVzaCh7b3V0Y29tZToicmVzcG9uc2UiLHB1cnBvc2U6dCx0YXJnZXQ6ZX0pfSx3cml0ZTpmdW5jdGlvbigpe3ZhciBuPShuZXcgRGF0ZSkuZ2V0VGltZSgpO2RuKFsibW91c2Vtb3ZlIiwibW91c2VvdmVyIiwibW91c2VvdXQiLGRlKCldLHIpfHx2LmNvbnNvbGUubG9nKHIse2V2ZW50OnIsdGltZTpuLXUsdGFyZ2V0Om8uZG9tKCksc2VxdWVuY2U6Z24oaSxmdW5jdGlvbihuKXtyZXR1cm4gZG4oWyJjdXQiLCJzdG9wcGVkIiwicmVzcG9uc2UiXSxuLm91dGNvbWUpPyJ7IituLnB1cnBvc2UrIn0gIituLm91dGNvbWUrIiBhdCAoIitWbyhuLnRhcmdldCkrIikiOm4ub3V0Y29tZX0pfSl9fSksYT10KGMpO3JldHVybiBjLndyaXRlKCksYTtjYXNlIHlvLlNUT1A6cmV0dXJuITB9fSxQbz1bImFsbG95L2RhdGEvRmllbGRzIiwiYWxsb3kvZGVidWdnaW5nL0RlYnVnZ2luZyJdLHpvPWZ1bmN0aW9uKG4sZSx0KXtyZXR1cm4gTm8obixlLHQpfSxMbz15KHtsb2dFdmVudEN1dDp3LGxvZ0V2ZW50U3RvcHBlZDp3LGxvZ05vUGFyZW50OncsbG9nRXZlbnROb0hhbmRsZXJzOncsbG9nRXZlbnRSZXNwb25zZTp3LHdyaXRlOnd9KSxHbz15KFtmcigibWVudSIpLGZyKCJzZWxlY3RlZE1lbnUiKV0pLCRvPXkoW2ZyKCJpdGVtIiksZnIoInNlbGVjdGVkSXRlbSIpXSksVW89KHkoV3QoJG8oKS5jb25jYXQoR28oKSkpKSx5KFd0KCRvKCkpKSksV289bHIoImluaXRTaXplIixbZnIoIm51bUNvbHVtbnMiKSxmcigibnVtUm93cyIpXSksWG89ZnVuY3Rpb24obixlLHQpeyFmdW5jdGlvbigpe3ZhciBuPW5ldyBFcnJvcjtpZihuLnN0YWNrPT09dW5kZWZpbmVkKXJldHVybjt2YXIgZT1uLnN0YWNrLnNwbGl0KCJcbiIpO2JuKGUsZnVuY3Rpb24oZSl7cmV0dXJuIDA8ZS5pbmRleE9mKCJhbGxveSIpJiYhbW4oUG8sZnVuY3Rpb24obil7cmV0dXJuLTE8ZS5pbmRleE9mKG4pfSl9KS5nZXRPcihBbyl9KCk7cmV0dXJuIEt0KGUsZSx0LG5yKGZ1bmN0aW9uKHQpe3JldHVybiBydC52YWx1ZShmdW5jdGlvbigpe2Zvcih2YXIgbj1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyluW2VdPWFyZ3VtZW50c1tlXTtyZXR1cm4gdC5hcHBseSh1bmRlZmluZWQsbil9KX0pKX0scW89ZnVuY3Rpb24obil7cmV0dXJuIFhvKDAsbixrdCh3KSl9LFlvPWZ1bmN0aW9uKG4pe3JldHVybiBYbygwLG4sa3QoTy5ub25lKSl9LEtvPWZ1bmN0aW9uKG4pe3JldHVybiBYbygwLG4sRXQoKSl9LEpvPWZ1bmN0aW9uKG4pe3JldHVybiBYbygwLG4sRXQoKSl9LFFvPWZ1bmN0aW9uKG4sZSl7cmV0dXJuIHlyKG4seShlKSl9LFpvPWZ1bmN0aW9uKG4pe3JldHVybiB5cihuLGIpfSxuaT15KFdvKSxlaT1bc3IoImNoYW5uZWxzIixlcihydC52YWx1ZSxVdChbS28oIm9uUmVjZWl2ZSIpLGhyKCJzY2hlbWEiLGNyKCkpXSkpKV0sdGk9WHIoe2ZpZWxkczplaSxuYW1lOiJyZWNlaXZpbmciLGFjdGl2ZTpCb30pLHJpPWZ1bmN0aW9uKG4sZSx0KXt2YXIgcj1lLmFyaWE7ci51cGRhdGUobixyLHQuZ2V0KCkpfSxvaT1mdW5jdGlvbihlLG4sdCl7bi50b2dnbGVDbGFzcy5lYWNoKGZ1bmN0aW9uKG4peyh0LmdldCgpP2NvOmZvKShlLmVsZW1lbnQoKSxuKX0pfSxpaT1mdW5jdGlvbihuLGUsdCl7YWkobixlLHQsIXQuZ2V0KCkpfSx1aT1mdW5jdGlvbihuLGUsdCl7dC5zZXQoITApLG9pKG4sZSx0KSxyaShuLGUsdCl9LGNpPWZ1bmN0aW9uKG4sZSx0KXt0LnNldCghMSksb2kobixlLHQpLHJpKG4sZSx0KX0sYWk9ZnVuY3Rpb24obixlLHQscil7KHI/dWk6Y2kpKG4sZSx0KX0sZmk9ZnVuY3Rpb24obixlLHQpe2FpKG4sZSx0LGUuc2VsZWN0ZWQpfSxzaT0vKiAqL09iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLG9uTG9hZDpmaSx0b2dnbGU6aWksaXNPbjpmdW5jdGlvbihuLGUsdCl7cmV0dXJuIHQuZ2V0KCl9LG9uOnVpLG9mZjpjaSxzZXQ6YWl9KSxsaT0vKiAqL09iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLGV4aGliaXQ6ZnVuY3Rpb24oKXtyZXR1cm4gSHIoe30pfSxldmVudHM6ZnVuY3Rpb24obixlKXt2YXIgdCxyLG8saT0odD1uLHI9ZSxvPWlpLEJyKGZ1bmN0aW9uKG4pe28obix0LHIpfSkpLHU9TnIobixlLGZpKTtyZXR1cm4gVHIod24oW24udG9nZ2xlT25FeGVjdXRlP1tpXTpbXSxbdV1dKSl9fSksZGk9ZnVuY3Rpb24obixlLHQpe0pyKG4uZWxlbWVudCgpLCJhcmlhLWV4cGFuZGVkIix0KX0sbWk9W2hyKCJzZWxlY3RlZCIsITEpLGRyKCJ0b2dnbGVDbGFzcyIpLGhyKCJ0b2dnbGVPbkV4ZWN1dGUiLCEwKSx2cigiYXJpYSIse21vZGU6Im5vbmUifSx1cigibW9kZSIse3ByZXNzZWQ6W2hyKCJzeW5jV2l0aEV4cGFuZGVkIiwhMSksUW8oInVwZGF0ZSIsZnVuY3Rpb24obixlLHQpe0pyKG4uZWxlbWVudCgpLCJhcmlhLXByZXNzZWQiLHQpLGUuc3luY1dpdGhFeHBhbmRlZCYmZGkobixlLHQpfSldLGNoZWNrZWQ6W1FvKCJ1cGRhdGUiLGZ1bmN0aW9uKG4sZSx0KXtKcihuLmVsZW1lbnQoKSwiYXJpYS1jaGVja2VkIix0KX0pXSxleHBhbmRlZDpbUW8oInVwZGF0ZSIsZGkpXSxzZWxlY3RlZDpbUW8oInVwZGF0ZSIsZnVuY3Rpb24obixlLHQpe0pyKG4uZWxlbWVudCgpLCJhcmlhLXNlbGVjdGVkIix0KX0pXSxub25lOltRbygidXBkYXRlIix3KV19KSldLGdpPVhyKHtmaWVsZHM6bWksbmFtZToidG9nZ2xpbmciLGFjdGl2ZTpsaSxhcGlzOnNpLHN0YXRlOihqbz0hMSx7aW5pdDpmdW5jdGlvbigpe3ZhciBlPWhvKGpvKTtyZXR1cm57Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuZ2V0KCl9LHNldDpmdW5jdGlvbihuKXtyZXR1cm4gZS5zZXQobil9LGNsZWFyOmZ1bmN0aW9uKCl7cmV0dXJuIGUuc2V0KGpvKX0scmVhZFN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIGUuZ2V0KCl9fX19KX0pLHBpPWZ1bmN0aW9uKHQscil7cmV0dXJuIHRpLmNvbmZpZyh7Y2hhbm5lbHM6RnQoQ28se29uUmVjZWl2ZTpmdW5jdGlvbihuLGUpe2UuY29tbWFuZD09PXQmJnIobixlLnN0YXRlKX19KX0pfSxoaT1mdW5jdGlvbihuKXtyZXR1cm4gdGkuY29uZmlnKHtjaGFubmVsczpGdChNbyx7b25SZWNlaXZlOm59KX0pfSx2aT1mdW5jdGlvbihuLGUpe3JldHVybntrZXk6bix2YWx1ZTp7b25SZWNlaXZlOmV9fX0seWk9InRpbnltY2UtbW9iaWxlIixiaT1mdW5jdGlvbihuKXtyZXR1cm4geWkrIi0iK259LHhpPWZ1bmN0aW9uKCl7dmFyIG49ZnVuY3Rpb24obixlKXtlLnN0b3AoKSx4ZShuKX07cmV0dXJuW0VyKG5lKCksbiksRXIoc2UoKSxuKSxJcihHbigpKSxJcihXbigpKV19LHdpPWZ1bmN0aW9uKG4sZSl7ZS5pZ25vcmV8fCh3byhuLmVsZW1lbnQoKSksZS5vbkZvY3VzKG4pKX0sU2k9LyogKi9PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxmb2N1czp3aSxibHVyOmZ1bmN0aW9uKG4sZSl7ZS5pZ25vcmV8fFNvKG4uZWxlbWVudCgpKX0saXNGb2N1c2VkOmZ1bmN0aW9uKG4pe3JldHVybiBlPW4uZWxlbWVudCgpLHQ9amUoZSkuZG9tKCksZS5kb20oKT09PXQuYWN0aXZlRWxlbWVudDt2YXIgZSx0fX0pLE9pPS8qICovT2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsZXhoaWJpdDpmdW5jdGlvbihuLGUpe3ZhciB0PWUuaWdub3JlP3t9OnthdHRyaWJ1dGVzOnt0YWJpbmRleDoiLTEifX07cmV0dXJuIEhyKHQpfSxldmVudHM6ZnVuY3Rpb24odCl7cmV0dXJuIFRyKFtFcihvZSgpLGZ1bmN0aW9uKG4sZSl7d2kobix0KSxlLnN0b3AoKX0pXS5jb25jYXQodC5zdG9wTW91c2Vkb3duP1tFcihXbigpLGZ1bmN0aW9uKG4sZSl7ZS5ldmVudCgpLnByZXZlbnQoKX0pXTpbXSkpfX0pLFRpPVtxbygib25Gb2N1cyIpLGhyKCJzdG9wTW91c2Vkb3duIiwhMSksaHIoImlnbm9yZSIsITEpXSxraT1Ycih7ZmllbGRzOlRpLG5hbWU6ImZvY3VzaW5nIixhY3RpdmU6T2ksYXBpczpTaX0pLEVpPWZ1bmN0aW9uKG4pe3JldHVybiBuLnN0eWxlIT09dW5kZWZpbmVkJiZjbihuLnN0eWxlLmdldFByb3BlcnR5VmFsdWUpfSxDaT1mdW5jdGlvbihuLGUsdCl7aWYoIXRuKHQpKXRocm93IHYuY29uc29sZS5lcnJvcigiSW52YWxpZCBjYWxsIHRvIENTUy5zZXQuIFByb3BlcnR5ICIsZSwiOjogVmFsdWUgIix0LCI6OiBFbGVtZW50ICIsbiksbmV3IEVycm9yKCJDU1MgdmFsdWUgbXVzdCBiZSBhIHN0cmluZzogIit0KTtFaShuKSYmbi5zdHlsZS5zZXRQcm9wZXJ0eShlLHQpfSxNaT1mdW5jdGlvbihuLGUsdCl7dmFyIHI9bi5kb20oKTtDaShyLGUsdCl9LF9pPWZ1bmN0aW9uKG4sZSl7dmFyIHQ9bi5kb20oKTtFKGUsZnVuY3Rpb24obixlKXtDaSh0LGUsbil9KX0sRGk9ZnVuY3Rpb24obixlKXt2YXIgdD1uLmRvbSgpLHI9di53aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0KS5nZXRQcm9wZXJ0eVZhbHVlKGUpO3JldHVybiIiIT09cnx8X2Uobik/cjpJaSh0LGUpfSxJaT1mdW5jdGlvbihuLGUpe3JldHVybiBFaShuKT9uLnN0eWxlLmdldFByb3BlcnR5VmFsdWUoZSk6IiJ9LEZpPWZ1bmN0aW9uKG4sZSl7dmFyIHQ9bi5kb20oKSxyPUlpKHQsZSk7cmV0dXJuIE8uZnJvbShyKS5maWx0ZXIoZnVuY3Rpb24obil7cmV0dXJuIDA8bi5sZW5ndGh9KX0sUmk9ZnVuY3Rpb24obixlKXt2YXIgdCxyLG89bi5kb20oKTtyPWUsRWkodD1vKSYmdC5zdHlsZS5yZW1vdmVQcm9wZXJ0eShyKSxubyhuLCJzdHlsZSIpLm1hcChSbikuaXMoIiIpJiZ0byhuLCJzdHlsZSIpfSxWaT1mdW5jdGlvbihuKXtyZXR1cm4gbi5kb20oKS5vZmZzZXRXaWR0aH07ZnVuY3Rpb24gQmkocixvKXt2YXIgbj1mdW5jdGlvbihuKXt2YXIgZT1vKG4pO2lmKGU8PTB8fG51bGw9PT1lKXt2YXIgdD1EaShuLHIpO3JldHVybiBwYXJzZUZsb2F0KHQpfHwwfXJldHVybiBlfSxpPWZ1bmN0aW9uKG8sbil7cmV0dXJuIHluKG4sZnVuY3Rpb24obixlKXt2YXIgdD1EaShvLGUpLHI9dD09PXVuZGVmaW5lZD8wOnBhcnNlSW50KHQsMTApO3JldHVybiBpc05hTihyKT9uOm4rcn0sMCl9O3JldHVybntzZXQ6ZnVuY3Rpb24obixlKXtpZighYW4oZSkmJiFlLm1hdGNoKC9eWzAtOV0rJC8pKXRocm93IG5ldyBFcnJvcihyKyIuc2V0IGFjY2VwdHMgb25seSBwb3NpdGl2ZSBpbnRlZ2VyIHZhbHVlcy4gVmFsdWUgd2FzICIrZSk7dmFyIHQ9bi5kb20oKTtFaSh0KSYmKHQuc3R5bGVbcl09ZSsicHgiKX0sZ2V0Om4sZ2V0T3V0ZXI6bixhZ2dyZWdhdGU6aSxtYXg6ZnVuY3Rpb24obixlLHQpe3ZhciByPWkobix0KTtyZXR1cm4gcjxlP2UtcjowfX19dmFyIEFpLGppLEhpPUJpKCJoZWlnaHQiLGZ1bmN0aW9uKG4pe3ZhciBlPW4uZG9tKCk7cmV0dXJuIF9lKG4pP2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0OmUub2Zmc2V0SGVpZ2h0fSksTmk9ZnVuY3Rpb24obil7cmV0dXJuIEhpLmdldChuKX0sUGk9ZnVuY3Rpb24obixlLHQpe3JldHVybiBobihmdW5jdGlvbihuLGUpe2Zvcih2YXIgdD1jbihlKT9lOnMscj1uLmRvbSgpLG89W107bnVsbCE9PXIucGFyZW50Tm9kZSYmci5wYXJlbnROb2RlIT09dW5kZWZpbmVkOyl7dmFyIGk9ci5wYXJlbnROb2RlLHU9VGUuZnJvbURvbShpKTtpZihvLnB1c2godSksITA9PT10KHUpKWJyZWFrO3I9aX1yZXR1cm4gb30obix0KSxlKX0semk9ZnVuY3Rpb24obixlKXtyZXR1cm4gaG4oSGUodD1uKS5tYXAoTmUpLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gaG4obixmdW5jdGlvbihuKXtyZXR1cm4hQWUodCxuKX0pfSkuZ2V0T3IoW10pLGUpO3ZhciB0fSxMaT1mdW5jdGlvbihuLGUpe3JldHVybiBWZShlLG4pfSxHaT1mdW5jdGlvbihuKXtyZXR1cm4gQmUobil9LCRpPWZ1bmN0aW9uKG4sZSx0KXtyZXR1cm4geG8obixmdW5jdGlvbihuKXtyZXR1cm4gRmUobixlKX0sdCl9LFVpPWZ1bmN0aW9uKG4sZSl7cmV0dXJuIEJlKGUsbil9LFdpPWZ1bmN0aW9uKG4sZSx0KXtyZXR1cm4gdm8oZnVuY3Rpb24obixlKXtyZXR1cm4gRmUobixlKX0sJGksbixlLHQpfSxYaT1mdW5jdGlvbigpe3JldHVyblsxM119LHFpPWZ1bmN0aW9uKCl7cmV0dXJuWzI3XX0sWWk9ZnVuY3Rpb24oKXtyZXR1cm5bMzJdfSxLaT1mdW5jdGlvbigpe3JldHVyblszN119LEppPWZ1bmN0aW9uKCl7cmV0dXJuWzM4XX0sUWk9ZnVuY3Rpb24oKXtyZXR1cm5bMzldfSxaaT1mdW5jdGlvbigpe3JldHVybls0MF19LG51PWZ1bmN0aW9uKG4sZSx0KXt2YXIgcj1UbihuLnNsaWNlKDAsZSkpLG89VG4obi5zbGljZShlKzEpKTtyZXR1cm4gYm4oci5jb25jYXQobyksdCl9LGV1PWZ1bmN0aW9uKG4sZSx0KXt2YXIgcj1UbihuLnNsaWNlKDAsZSkpO3JldHVybiBibihyLHQpfSx0dT1mdW5jdGlvbihuLGUsdCl7dmFyIHI9bi5zbGljZSgwLGUpLG89bi5zbGljZShlKzEpO3JldHVybiBibihvLmNvbmNhdChyKSx0KX0scnU9ZnVuY3Rpb24obixlLHQpe3ZhciByPW4uc2xpY2UoZSsxKTtyZXR1cm4gYm4ocix0KX0sb3U9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciBlPW4ucmF3KCk7cmV0dXJuIGRuKHQsZS53aGljaCl9fSxpdT1mdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIE9uKG4sZnVuY3Rpb24obil7cmV0dXJuIG4oZSl9KX19LHV1PWZ1bmN0aW9uKG4pe3JldHVybiEwPT09bi5yYXcoKS5zaGlmdEtleX0sY3U9ZnVuY3Rpb24obil7cmV0dXJuITA9PT1uLnJhdygpLmN0cmxLZXl9LGF1PW0odXUpLGZ1PWZ1bmN0aW9uKG4sZSl7cmV0dXJue21hdGNoZXM6bixjbGFzc2lmaWNhdGlvbjplfX0sc3U9ZnVuY3Rpb24obil7Zm9yKHZhciBlPVtdLHQ9ZnVuY3Rpb24obil7ZS5wdXNoKG4pfSxyPTA7cjxuLmxlbmd0aDtyKyspbltyXS5lYWNoKHQpO3JldHVybiBlfSxsdT1mdW5jdGlvbihuLGUsdCxyKXt2YXIgbz1uK2U7cmV0dXJuIHI8bz90Om88dD9yOm99LGR1PWZ1bmN0aW9uKG4sZSx0KXtyZXR1cm4gTWF0aC5taW4oTWF0aC5tYXgobixlKSx0KX0sbXU9ZnVuY3Rpb24odCxyLG4sbyl7dmFyIGU9TGkodC5lbGVtZW50KCksIi4iK3IuaGlnaGxpZ2h0Q2xhc3MpO3BuKGUsZnVuY3Rpb24oZSl7bW4obyxmdW5jdGlvbihuKXtyZXR1cm4gbi5lbGVtZW50KCk9PT1lfSl8fChmbyhlLHIuaGlnaGxpZ2h0Q2xhc3MpLHQuZ2V0U3lzdGVtKCkuZ2V0QnlEb20oZSkuZWFjaChmdW5jdGlvbihuKXtyLm9uRGVoaWdobGlnaHQodCxuKSx5ZShuLHZlKCkpfSkpfSl9LGd1PWZ1bmN0aW9uKG4sZSx0LHIpe211KG4sZSwwLFtyXSkscHUobixlLHQscil8fChjbyhyLmVsZW1lbnQoKSxlLmhpZ2hsaWdodENsYXNzKSxlLm9uSGlnaGxpZ2h0KG4scikseWUocixoZSgpKSl9LHB1PWZ1bmN0aW9uKG4sZSx0LHIpe3JldHVybiBzbyhyLmVsZW1lbnQoKSxlLmhpZ2hsaWdodENsYXNzKX0saHU9ZnVuY3Rpb24obixlLHQscil7dmFyIG89TGkobi5lbGVtZW50KCksIi4iK2UuaXRlbUNsYXNzKTtyZXR1cm4gTy5mcm9tKG9bcl0pLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm4gcnQuZXJyb3IoIk5vIGVsZW1lbnQgZm91bmQgd2l0aCBpbmRleCAiK3IpfSxuLmdldFN5c3RlbSgpLmdldEJ5RG9tKX0sdnU9ZnVuY3Rpb24oZSxuLHQpe3JldHVybiBVaShlLmVsZW1lbnQoKSwiLiIrbi5pdGVtQ2xhc3MpLmJpbmQoZnVuY3Rpb24obil7cmV0dXJuIGUuZ2V0U3lzdGVtKCkuZ2V0QnlEb20obikudG9PcHRpb24oKX0pfSx5dT1mdW5jdGlvbihlLG4sdCl7dmFyIHI9TGkoZS5lbGVtZW50KCksIi4iK24uaXRlbUNsYXNzKTtyZXR1cm4oMDxyLmxlbmd0aD9PLnNvbWUocltyLmxlbmd0aC0xXSk6Ty5ub25lKCkpLmJpbmQoZnVuY3Rpb24obil7cmV0dXJuIGUuZ2V0U3lzdGVtKCkuZ2V0QnlEb20obikudG9PcHRpb24oKX0pfSxidT1mdW5jdGlvbih0LGUsbixyKXt2YXIgbz1MaSh0LmVsZW1lbnQoKSwiLiIrZS5pdGVtQ2xhc3MpO3JldHVybiB4bihvLGZ1bmN0aW9uKG4pe3JldHVybiBzbyhuLGUuaGlnaGxpZ2h0Q2xhc3MpfSkuYmluZChmdW5jdGlvbihuKXt2YXIgZT1sdShuLHIsMCxvLmxlbmd0aC0xKTtyZXR1cm4gdC5nZXRTeXN0ZW0oKS5nZXRCeURvbShvW2VdKS50b09wdGlvbigpfSl9LHh1PWZ1bmN0aW9uKGUsbix0KXt2YXIgcj1MaShlLmVsZW1lbnQoKSwiLiIrbi5pdGVtQ2xhc3MpO3JldHVybiBzdShnbihyLGZ1bmN0aW9uKG4pe3JldHVybiBlLmdldFN5c3RlbSgpLmdldEJ5RG9tKG4pLnRvT3B0aW9uKCl9KSl9LHd1PS8qICovT2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsZGVoaWdobGlnaHRBbGw6ZnVuY3Rpb24obixlLHQpe3JldHVybiBtdShuLGUsMCxbXSl9LGRlaGlnaGxpZ2h0OmZ1bmN0aW9uKG4sZSx0LHIpe3B1KG4sZSx0LHIpJiYoZm8oci5lbGVtZW50KCksZS5oaWdobGlnaHRDbGFzcyksZS5vbkRlaGlnaGxpZ2h0KG4scikseWUocix2ZSgpKSl9LGhpZ2hsaWdodDpndSxoaWdobGlnaHRGaXJzdDpmdW5jdGlvbihlLHQscil7dnUoZSx0KS5lYWNoKGZ1bmN0aW9uKG4pe2d1KGUsdCxyLG4pfSl9LGhpZ2hsaWdodExhc3Q6ZnVuY3Rpb24oZSx0LHIpe3l1KGUsdCkuZWFjaChmdW5jdGlvbihuKXtndShlLHQscixuKX0pfSxoaWdobGlnaHRBdDpmdW5jdGlvbihlLHQscixuKXtodShlLHQscixuKS5mb2xkKGZ1bmN0aW9uKG4pe3Rocm93IG5ldyBFcnJvcihuKX0sZnVuY3Rpb24obil7Z3UoZSx0LHIsbil9KX0saGlnaGxpZ2h0Qnk6ZnVuY3Rpb24oZSx0LHIsbil7dmFyIG89eHUoZSx0KTtibihvLG4pLmVhY2goZnVuY3Rpb24obil7Z3UoZSx0LHIsbil9KX0saXNIaWdobGlnaHRlZDpwdSxnZXRIaWdobGlnaHRlZDpmdW5jdGlvbihlLG4sdCl7cmV0dXJuIFVpKGUuZWxlbWVudCgpLCIuIituLmhpZ2hsaWdodENsYXNzKS5iaW5kKGZ1bmN0aW9uKG4pe3JldHVybiBlLmdldFN5c3RlbSgpLmdldEJ5RG9tKG4pLnRvT3B0aW9uKCl9KX0sZ2V0Rmlyc3Q6dnUsZ2V0TGFzdDp5dSxnZXRQcmV2aW91czpmdW5jdGlvbihuLGUsdCl7cmV0dXJuIGJ1KG4sZSwwLC0xKX0sZ2V0TmV4dDpmdW5jdGlvbihuLGUsdCl7cmV0dXJuIGJ1KG4sZSwwLDEpfSxnZXRDYW5kaWRhdGVzOnh1fSksU3U9W2ZyKCJoaWdobGlnaHRDbGFzcyIpLGZyKCJpdGVtQ2xhc3MiKSxxbygib25IaWdobGlnaHQiKSxxbygib25EZWhpZ2hsaWdodCIpXSxPdT1Ycih7ZmllbGRzOlN1LG5hbWU6ImhpZ2hsaWdodGluZyIsYXBpczp3dX0pLFR1PWZ1bmN0aW9uKG4sZSx0KXtlLmV4aXN0cyhmdW5jdGlvbihlKXtyZXR1cm4gdC5leGlzdHMoZnVuY3Rpb24obil7cmV0dXJuIEFlKG4sZSl9KX0pfHxiZShuLHBlKCkse3ByZXZGb2N1czplLG5ld0ZvY3VzOnR9KX0sa3U9ZnVuY3Rpb24oKXt2YXIgbz1mdW5jdGlvbihuKXtyZXR1cm4gVG8obi5lbGVtZW50KCkpfTtyZXR1cm57Z2V0Om8sc2V0OmZ1bmN0aW9uKG4sZSl7dmFyIHQ9byhuKTtuLmdldFN5c3RlbSgpLnRyaWdnZXJGb2N1cyhlLG4uZWxlbWVudCgpKTt2YXIgcj1vKG4pO1R1KG4sdCxyKX19fTsoamk9QWk9QWl8fHt9KS5PbkZvY3VzTW9kZT0ib25Gb2N1cyIsamkuT25FbnRlck9yU3BhY2VNb2RlPSJvbkVudGVyT3JTcGFjZSIsamkuT25BcGlNb2RlPSJvbkFwaSI7dmFyIEV1LEN1LE11LF91LER1LEl1LEZ1LFJ1LFZ1LEJ1LEF1PWZ1bmN0aW9uKG4sZSx0LHIsYyl7dmFyIGE9ZnVuY3Rpb24oZSx0LG4scixvKXt2YXIgaSx1LGM9bihlLHQscixvKTtyZXR1cm4gaT1jLHU9dC5ldmVudCgpLGJuKGksZnVuY3Rpb24obil7cmV0dXJuIG4ubWF0Y2hlcyh1KX0pLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gbi5jbGFzc2lmaWNhdGlvbn0pLmJpbmQoZnVuY3Rpb24obil7cmV0dXJuIG4oZSx0LHIsbyl9KX0sbz17c2NoZW1hOmZ1bmN0aW9uKCl7cmV0dXJuIG4uY29uY2F0KFtocigiZm9jdXNNYW5hZ2VyIixrdSgpKSx2cigiZm9jdXNJbnNpZGUiLCJvbkZvY3VzIixucihmdW5jdGlvbihuKXtyZXR1cm4gZG4oWyJvbkZvY3VzIiwib25FbnRlck9yU3BhY2UiLCJvbkFwaSJdLG4pP3J0LnZhbHVlKG4pOnJ0LmVycm9yKCJJbnZhbGlkIHZhbHVlIGZvciBmb2N1c0luc2lkZSIpfSkpLFFvKCJoYW5kbGVyIixvKSxRbygic3RhdGUiLGUpLFFvKCJzZW5kRm9jdXNJbiIsYyldKX0scHJvY2Vzc0tleTphLHRvRXZlbnRzOmZ1bmN0aW9uKGksdSl7dmFyIG49aS5mb2N1c0luc2lkZSE9PUFpLk9uRm9jdXNNb2RlP08ubm9uZSgpOmMoaSkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBFcihvZSgpLGZ1bmN0aW9uKG4sZSl7dChuLGksdSksZS5zdG9wKCl9KX0pLGU9W0VyKEtuKCksZnVuY3Rpb24ocixvKXthKHIsbyx0LGksdSkuZm9sZChmdW5jdGlvbigpe3ZhciBlLHQsbjtlPXIsdD1vLG49b3UoWWkoKS5jb25jYXQoWGkoKSkpKHQuZXZlbnQoKSksaS5mb2N1c0luc2lkZT09PUFpLk9uRW50ZXJPclNwYWNlTW9kZSYmbiYmd3IoZSx0KSYmYyhpKS5lYWNoKGZ1bmN0aW9uKG4pe24oZSxpLHUpLHQuc3RvcCgpfSl9LGZ1bmN0aW9uKG4pe28uc3RvcCgpfSl9KSxFcihKbigpLGZ1bmN0aW9uKG4sZSl7YShuLGUscixpLHUpLmVhY2goZnVuY3Rpb24obil7ZS5zdG9wKCl9KX0pXTtyZXR1cm4gVHIobi50b0FycmF5KCkuY29uY2F0KGUpKX19O3JldHVybiBvfSxqdT1mdW5jdGlvbihuKXt2YXIgZT1bZHIoIm9uRXNjYXBlIiksZHIoIm9uRW50ZXIiKSxocigic2VsZWN0b3IiLCdbZGF0YS1hbGxveS10YWJzdG9wPSJ0cnVlIl06bm90KDpkaXNhYmxlZCknKSxocigiZmlyc3RUYWJzdG9wIiwwKSxocigidXNlVGFic3RvcEF0Iix5KCEwKSksZHIoInZpc2liaWxpdHlTZWxlY3RvciIpXS5jb25jYXQoW25dKSx1PWZ1bmN0aW9uKG4sZSl7dmFyIHQ9bi52aXNpYmlsaXR5U2VsZWN0b3IuYmluZChmdW5jdGlvbihuKXtyZXR1cm4gV2koZSxuKX0pLmdldE9yKGUpO3JldHVybiAwPE5pKHQpfSx0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixvLGk7cj10LG89TGkoZS5lbGVtZW50KCksci5zZWxlY3RvciksaT1obihvLGZ1bmN0aW9uKG4pe3JldHVybiB1KHIsbil9KSxPLmZyb20oaVtyLmZpcnN0VGFic3RvcF0pLmVhY2goZnVuY3Rpb24obil7dC5mb2N1c01hbmFnZXIuc2V0KGUsbil9KX0sYz1mdW5jdGlvbihlLG4sdCxyLG8pe3JldHVybiBvKG4sdCxmdW5jdGlvbihuKXtyZXR1cm4gdShlPXIsdD1uKSYmZS51c2VUYWJzdG9wQXQodCk7dmFyIGUsdH0pLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm4gci5jeWNsaWM/Ty5zb21lKCEwKTpPLm5vbmUoKX0sZnVuY3Rpb24obil7cmV0dXJuIHIuZm9jdXNNYW5hZ2VyLnNldChlLG4pLE8uc29tZSghMCl9KX0sbz1mdW5jdGlvbihlLG4sdCxyKXt2YXIgbyxpLHU9TGkoZS5lbGVtZW50KCksdC5zZWxlY3Rvcik7cmV0dXJuIG89ZSwoaT10KS5mb2N1c01hbmFnZXIuZ2V0KG8pLmJpbmQoZnVuY3Rpb24obil7cmV0dXJuIFdpKG4saS5zZWxlY3Rvcil9KS5iaW5kKGZ1bmN0aW9uKG4pe3JldHVybiB4bih1LFMoQWUsbikpLmJpbmQoZnVuY3Rpb24obil7cmV0dXJuIGMoZSx1LG4sdCxyKX0pfSl9LHI9eShbZnUoaXUoW3V1LG91KFs5XSldKSxmdW5jdGlvbihuLGUsdCl7dmFyIHI9dC5jeWNsaWM/bnU6ZXU7cmV0dXJuIG8obiwwLHQscil9KSxmdShvdShbOV0pLGZ1bmN0aW9uKG4sZSx0KXt2YXIgcj10LmN5Y2xpYz90dTpydTtyZXR1cm4gbyhuLDAsdCxyKX0pLGZ1KG91KHFpKCkpLGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbi5vbkVzY2FwZS5iaW5kKGZ1bmN0aW9uKG4pe3JldHVybiBuKGUsdCl9KX0pLGZ1KGl1KFthdSxvdShYaSgpKV0pLGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbi5vbkVudGVyLmJpbmQoZnVuY3Rpb24obil7cmV0dXJuIG4oZSx0KX0pfSldKSxpPXkoW10pO3JldHVybiBBdShlLEdyLmluaXQscixpLGZ1bmN0aW9uKCl7cmV0dXJuIE8uc29tZSh0KX0pfSxIdT1qdSh5cigiY3ljbGljIix5KCExKSkpLE51PWp1KHlyKCJjeWNsaWMiLHkoITApKSksUHU9ZnVuY3Rpb24obil7cmV0dXJuImlucHV0Ij09PWtlKG4pJiYicmFkaW8iIT09WnIobiwidHlwZSIpfHwidGV4dGFyZWEiPT09a2Uobil9LHp1PWZ1bmN0aW9uKG4sZSx0KXtyZXR1cm4gUHUodCkmJm91KFlpKCkpKGUuZXZlbnQoKSk/Ty5ub25lKCk6KHdlKG4sdCxhZSgpKSxPLnNvbWUoITApKX0sTHU9ZnVuY3Rpb24obixlKXtyZXR1cm4gTy5zb21lKCEwKX0sR3U9W2hyKCJleGVjdXRlIix6dSksaHIoInVzZVNwYWNlIiwhMSksaHIoInVzZUVudGVyIiwhMCksaHIoInVzZUNvbnRyb2xFbnRlciIsITEpLGhyKCJ1c2VEb3duIiwhMSldLCR1PWZ1bmN0aW9uKG4sZSx0KXtyZXR1cm4gdC5leGVjdXRlKG4sZSxuLmVsZW1lbnQoKSl9LFV1PUF1KEd1LEdyLmluaXQsZnVuY3Rpb24obixlLHQscil7dmFyIG89dC51c2VTcGFjZSYmIVB1KG4uZWxlbWVudCgpKT9ZaSgpOltdLGk9dC51c2VFbnRlcj9YaSgpOltdLHU9dC51c2VEb3duP1ppKCk6W10sYz1vLmNvbmNhdChpKS5jb25jYXQodSk7cmV0dXJuW2Z1KG91KGMpLCR1KV0uY29uY2F0KHQudXNlQ29udHJvbEVudGVyP1tmdShpdShbY3Usb3UoWGkoKSldKSwkdSldOltdKX0sZnVuY3Rpb24obixlLHQscil7cmV0dXJuIHQudXNlU3BhY2UmJiFQdShuLmVsZW1lbnQoKSk/W2Z1KG91KFlpKCkpLEx1KV06W119LGZ1bmN0aW9uKCl7cmV0dXJuIE8ubm9uZSgpfSksV3U9ZnVuY3Rpb24oKXt2YXIgdD1obyhPLm5vbmUoKSk7cmV0dXJuICRyKHtyZWFkU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdC5nZXQoKS5tYXAoZnVuY3Rpb24obil7cmV0dXJue251bVJvd3M6U3RyaW5nKG4ubnVtUm93cyksbnVtQ29sdW1uczpTdHJpbmcobi5udW1Db2x1bW5zKX19KS5nZXRPcih7bnVtUm93czoiPyIsbnVtQ29sdW1uczoiPyJ9KX0sc2V0R3JpZFNpemU6ZnVuY3Rpb24obixlKXt0LnNldChPLnNvbWUoe251bVJvd3M6bixudW1Db2x1bW5zOmV9KSl9LGdldE51bVJvd3M6ZnVuY3Rpb24oKXtyZXR1cm4gdC5nZXQoKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIG4ubnVtUm93c30pfSxnZXROdW1Db2x1bW5zOmZ1bmN0aW9uKCl7cmV0dXJuIHQuZ2V0KCkubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBuLm51bUNvbHVtbnN9KX19KX0sWHU9LyogKi9PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxmbGF0Z3JpZDpXdSxpbml0OmZ1bmN0aW9uKG4pe3JldHVybiBuLnN0YXRlKG4pfX0pLHF1PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiJydGwiPT09WXUobik/dDplfX0sWXU9ZnVuY3Rpb24obil7cmV0dXJuInJ0bCI9PT1EaShuLCJkaXJlY3Rpb24iKT8icnRsIjoibHRyIn0sS3U9ZnVuY3Rpb24oaSl7cmV0dXJuIGZ1bmN0aW9uKG4sZSx0LHIpe3ZhciBvPWkobi5lbGVtZW50KCkpO3JldHVybiBuYyhvLG4sZSx0LHIpfX0sSnU9ZnVuY3Rpb24obixlKXt2YXIgdD1xdShuLGUpO3JldHVybiBLdSh0KX0sUXU9ZnVuY3Rpb24obixlKXt2YXIgdD1xdShlLG4pO3JldHVybiBLdSh0KX0sWnU9ZnVuY3Rpb24obyl7cmV0dXJuIGZ1bmN0aW9uKG4sZSx0LHIpe3JldHVybiBuYyhvLG4sZSx0LHIpfX0sbmM9ZnVuY3Rpb24oZSx0LG4scixvKXtyZXR1cm4gci5mb2N1c01hbmFnZXIuZ2V0KHQpLmJpbmQoZnVuY3Rpb24obil7cmV0dXJuIGUodC5lbGVtZW50KCksbixyLG8pfSkubWFwKGZ1bmN0aW9uKG4pe3JldHVybiByLmZvY3VzTWFuYWdlci5zZXQodCxuKSwhMH0pfSxlYz1adSx0Yz1adSxyYz1adSxvYz1mdW5jdGlvbihuKXtyZXR1cm4hKChlPW4uZG9tKCkpLm9mZnNldFdpZHRoPD0wJiZlLm9mZnNldEhlaWdodDw9MCk7dmFyIGV9LGljPWZ1bmN0aW9uKG4sZSx0KXt2YXIgcixvPUxpKG4sdCksaT1obihvLG9jKTtyZXR1cm4geG4ocj1pLGZ1bmN0aW9uKG4pe3JldHVybiBBZShuLGUpfSkubWFwKGZ1bmN0aW9uKG4pe3JldHVybntpbmRleDp5KG4pLGNhbmRpZGF0ZXM6eShyKX19KX0sdWM9ZnVuY3Rpb24obixlKXtyZXR1cm4geG4obixmdW5jdGlvbihuKXtyZXR1cm4gQWUoZSxuKX0pfSxjYz1mdW5jdGlvbih0LG4scixlKXtyZXR1cm4gZShNYXRoLmZsb29yKG4vciksbiVyKS5iaW5kKGZ1bmN0aW9uKG4pe3ZhciBlPW4ucm93KCkqcituLmNvbHVtbigpO3JldHVybiAwPD1lJiZlPHQubGVuZ3RoP08uc29tZSh0W2VdKTpPLm5vbmUoKX0pfSxhYz1mdW5jdGlvbihvLG4saSx1LGMpe3JldHVybiBjYyhvLG4sdSxmdW5jdGlvbihuLGUpe3ZhciB0PW49PT1pLTE/by5sZW5ndGgtbip1OnUscj1sdShlLGMsMCx0LTEpO3JldHVybiBPLnNvbWUoe3Jvdzp5KG4pLGNvbHVtbjp5KHIpfSl9KX0sZmM9ZnVuY3Rpb24oaSxuLHUsYyxhKXtyZXR1cm4gY2MoaSxuLGMsZnVuY3Rpb24obixlKXt2YXIgdD1sdShuLGEsMCx1LTEpLHI9dD09PXUtMT9pLmxlbmd0aC10KmM6YyxvPWR1KGUsMCxyLTEpO3JldHVybiBPLnNvbWUoe3Jvdzp5KHQpLGNvbHVtbjp5KG8pfSl9KX0sc2M9W2ZyKCJzZWxlY3RvciIpLGhyKCJleGVjdXRlIix6dSksWW8oIm9uRXNjYXBlIiksaHIoImNhcHR1cmVUYWIiLCExKSxuaSgpXSxsYz1mdW5jdGlvbihlLHQsbil7VWkoZS5lbGVtZW50KCksdC5zZWxlY3RvcikuZWFjaChmdW5jdGlvbihuKXt0LmZvY3VzTWFuYWdlci5zZXQoZSxuKX0pfSxkYz1mdW5jdGlvbihvKXtyZXR1cm4gZnVuY3Rpb24obixlLHQscil7cmV0dXJuIGljKG4sZSx0LnNlbGVjdG9yKS5iaW5kKGZ1bmN0aW9uKG4pe3JldHVybiBvKG4uY2FuZGlkYXRlcygpLG4uaW5kZXgoKSxyLmdldE51bVJvd3MoKS5nZXRPcih0LmluaXRTaXplLm51bVJvd3MpLHIuZ2V0TnVtQ29sdW1ucygpLmdldE9yKHQuaW5pdFNpemUubnVtQ29sdW1ucykpfSl9fSxtYz1mdW5jdGlvbihuLGUsdCl7cmV0dXJuIHQuY2FwdHVyZVRhYj9PLnNvbWUoITApOk8ubm9uZSgpfSxnYz1kYyhmdW5jdGlvbihuLGUsdCxyKXtyZXR1cm4gYWMobixlLHQsciwtMSl9KSxwYz1kYyhmdW5jdGlvbihuLGUsdCxyKXtyZXR1cm4gYWMobixlLHQsciwxKX0pLGhjPWRjKGZ1bmN0aW9uKG4sZSx0LHIpe3JldHVybiBmYyhuLGUsdCxyLC0xKX0pLHZjPWRjKGZ1bmN0aW9uKG4sZSx0LHIpe3JldHVybiBmYyhuLGUsdCxyLDEpfSkseWM9eShbZnUob3UoS2koKSksSnUoZ2MscGMpKSxmdShvdShRaSgpKSxRdShnYyxwYykpLGZ1KG91KEppKCkpLGVjKGhjKSksZnUob3UoWmkoKSksdGModmMpKSxmdShpdShbdXUsb3UoWzldKV0pLG1jKSxmdShpdShbYXUsb3UoWzldKV0pLG1jKSxmdShvdShxaSgpKSxmdW5jdGlvbihuLGUsdCl7cmV0dXJuIHQub25Fc2NhcGUobixlKX0pLGZ1KG91KFlpKCkuY29uY2F0KFhpKCkpKSxmdW5jdGlvbihlLHQscixuKXtyZXR1cm4gbz1lLChpPXIpLmZvY3VzTWFuYWdlci5nZXQobykuYmluZChmdW5jdGlvbihuKXtyZXR1cm4gV2kobixpLnNlbGVjdG9yKX0pLmJpbmQoZnVuY3Rpb24obil7cmV0dXJuIHIuZXhlY3V0ZShlLHQsbil9KTt2YXIgbyxpfSldKSxiYz15KFtmdShvdShZaSgpKSxMdSldKSx4Yz1BdShzYyxXdSx5YyxiYyxmdW5jdGlvbigpe3JldHVybiBPLnNvbWUobGMpfSksd2M9ZnVuY3Rpb24obixlLHQsaSl7dmFyIHU9ZnVuY3Rpb24obixlLHQpe3ZhciByLG89bHUoZSxpLDAsdC5sZW5ndGgtMSk7cmV0dXJuIG89PT1uP08ubm9uZSgpOihyPXRbb10sImJ1dHRvbiI9PT1rZShyKSYmImRpc2FibGVkIj09PVpyKHIsImRpc2FibGVkIik/dShuLG8sdCk6Ty5mcm9tKHRbb10pKX07cmV0dXJuIGljKG4sdCxlKS5iaW5kKGZ1bmN0aW9uKG4pe3ZhciBlPW4uaW5kZXgoKSx0PW4uY2FuZGlkYXRlcygpO3JldHVybiB1KGUsZSx0KX0pfSxTYz1bZnIoInNlbGVjdG9yIiksaHIoImdldEluaXRpYWwiLE8ubm9uZSksaHIoImV4ZWN1dGUiLHp1KSxZbygib25Fc2NhcGUiKSxocigiZXhlY3V0ZU9uTW92ZSIsITEpLGhyKCJhbGxvd1ZlcnRpY2FsIiwhMCldLE9jPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gbj1lLChvPXIpLmZvY3VzTWFuYWdlci5nZXQobikuYmluZChmdW5jdGlvbihuKXtyZXR1cm4gV2kobixvLnNlbGVjdG9yKX0pLmJpbmQoZnVuY3Rpb24obil7cmV0dXJuIHIuZXhlY3V0ZShlLHQsbil9KTt2YXIgbixvfSxUYz1mdW5jdGlvbihlLHQsbil7dC5nZXRJbml0aWFsKGUpLm9yVGh1bmsoZnVuY3Rpb24oKXtyZXR1cm4gVWkoZS5lbGVtZW50KCksdC5zZWxlY3Rvcil9KS5lYWNoKGZ1bmN0aW9uKG4pe3QuZm9jdXNNYW5hZ2VyLnNldChlLG4pfSl9LGtjPWZ1bmN0aW9uKG4sZSx0KXtyZXR1cm4gd2Mobix0LnNlbGVjdG9yLGUsLTEpfSxFYz1mdW5jdGlvbihuLGUsdCl7cmV0dXJuIHdjKG4sdC5zZWxlY3RvcixlLDEpfSxDYz1mdW5jdGlvbihvKXtyZXR1cm4gZnVuY3Rpb24obixlLHQscil7cmV0dXJuIG8obixlLHQscikuYmluZChmdW5jdGlvbigpe3JldHVybiB0LmV4ZWN1dGVPbk1vdmU/T2MobixlLHQpOk8uc29tZSghMCl9KX19LE1jPWZ1bmN0aW9uKG4sZSx0KXtyZXR1cm4gdC5vbkVzY2FwZShuLGUpfSxfYz15KFtmdShvdShZaSgpKSxMdSldKSxEYz1BdShTYyxHci5pbml0LGZ1bmN0aW9uKG4sZSx0LHIpe3ZhciBvPUtpKCkuY29uY2F0KHQuYWxsb3dWZXJ0aWNhbD9KaSgpOltdKSxpPVFpKCkuY29uY2F0KHQuYWxsb3dWZXJ0aWNhbD9aaSgpOltdKTtyZXR1cm5bZnUob3UobyksQ2MoSnUoa2MsRWMpKSksZnUob3UoaSksQ2MoUXUoa2MsRWMpKSksZnUob3UoWGkoKSksT2MpLGZ1KG91KFlpKCkpLE9jKSxmdShvdShxaSgpKSxNYyldfSxfYyxmdW5jdGlvbigpe3JldHVybiBPLnNvbWUoVGMpfSksSWM9ZnVuY3Rpb24obixlLHQpe3JldHVybiBPLmZyb20obltlXSkuYmluZChmdW5jdGlvbihuKXtyZXR1cm4gTy5mcm9tKG5bdF0pLm1hcChmdW5jdGlvbihuKXtyZXR1cm57cm93SW5kZXg6ZSxjb2x1bW5JbmRleDp0LGNlbGw6bn19KX0pfSxGYz1mdW5jdGlvbihuLGUsdCxyKXt2YXIgbz1uW2VdLmxlbmd0aCxpPWx1KHQsciwwLG8tMSk7cmV0dXJuIEljKG4sZSxpKX0sUmM9ZnVuY3Rpb24obixlLHQscil7dmFyIG89bHUodCxyLDAsbi5sZW5ndGgtMSksaT1uW29dLmxlbmd0aCx1PWR1KGUsMCxpLTEpO3JldHVybiBJYyhuLG8sdSl9LFZjPWZ1bmN0aW9uKG4sZSx0LHIpe3ZhciBvPW5bZV0ubGVuZ3RoLGk9ZHUodCtyLDAsby0xKTtyZXR1cm4gSWMobixlLGkpfSxCYz1mdW5jdGlvbihuLGUsdCxyKXt2YXIgbz1kdSh0K3IsMCxuLmxlbmd0aC0xKSxpPW5bb10ubGVuZ3RoLHU9ZHUoZSwwLGktMSk7cmV0dXJuIEljKG4sbyx1KX0sQWM9W2xyKCJzZWxlY3RvcnMiLFtmcigicm93IiksZnIoImNlbGwiKV0pLGhyKCJjeWNsZXMiLCEwKSxocigicHJldmlvdXNTZWxlY3RvciIsTy5ub25lKSxocigiZXhlY3V0ZSIsenUpXSxqYz1mdW5jdGlvbihlLHQsbil7dC5wcmV2aW91c1NlbGVjdG9yKGUpLm9yVGh1bmsoZnVuY3Rpb24oKXt2YXIgbj10LnNlbGVjdG9ycztyZXR1cm4gVWkoZS5lbGVtZW50KCksbi5jZWxsKX0pLmVhY2goZnVuY3Rpb24obil7dC5mb2N1c01hbmFnZXIuc2V0KGUsbil9KX0sSGM9ZnVuY3Rpb24obixlKXtyZXR1cm4gZnVuY3Rpb24odCxyLGkpe3ZhciB1PWkuY3ljbGVzP246ZTtyZXR1cm4gV2kocixpLnNlbGVjdG9ycy5yb3cpLmJpbmQoZnVuY3Rpb24obil7dmFyIGU9TGkobixpLnNlbGVjdG9ycy5jZWxsKTtyZXR1cm4gdWMoZSxyKS5iaW5kKGZ1bmN0aW9uKHIpe3ZhciBvPUxpKHQsaS5zZWxlY3RvcnMucm93KTtyZXR1cm4gdWMobyxuKS5iaW5kKGZ1bmN0aW9uKG4pe3ZhciBlLHQ9KGU9aSxnbihvLGZ1bmN0aW9uKG4pe3JldHVybiBMaShuLGUuc2VsZWN0b3JzLmNlbGwpfSkpO3JldHVybiB1KHQsbixyKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIG4uY2VsbH0pfSl9KX0pfX0sTmM9SGMoZnVuY3Rpb24obixlLHQpe3JldHVybiBGYyhuLGUsdCwtMSl9LGZ1bmN0aW9uKG4sZSx0KXtyZXR1cm4gVmMobixlLHQsLTEpfSksUGM9SGMoZnVuY3Rpb24obixlLHQpe3JldHVybiBGYyhuLGUsdCwxKX0sZnVuY3Rpb24obixlLHQpe3JldHVybiBWYyhuLGUsdCwxKX0pLHpjPUhjKGZ1bmN0aW9uKG4sZSx0KXtyZXR1cm4gUmMobix0LGUsLTEpfSxmdW5jdGlvbihuLGUsdCl7cmV0dXJuIEJjKG4sdCxlLC0xKX0pLExjPUhjKGZ1bmN0aW9uKG4sZSx0KXtyZXR1cm4gUmMobix0LGUsMSl9LGZ1bmN0aW9uKG4sZSx0KXtyZXR1cm4gQmMobix0LGUsMSl9KSxHYz15KFtmdShvdShLaSgpKSxKdShOYyxQYykpLGZ1KG91KFFpKCkpLFF1KE5jLFBjKSksZnUob3UoSmkoKSksZWMoemMpKSxmdShvdShaaSgpKSx0YyhMYykpLGZ1KG91KFlpKCkuY29uY2F0KFhpKCkpKSxmdW5jdGlvbihlLHQscil7cmV0dXJuIFRvKGUuZWxlbWVudCgpKS5iaW5kKGZ1bmN0aW9uKG4pe3JldHVybiByLmV4ZWN1dGUoZSx0LG4pfSl9KV0pLCRjPXkoW2Z1KG91KFlpKCkpLEx1KV0pLFVjPUF1KEFjLEdyLmluaXQsR2MsJGMsZnVuY3Rpb24oKXtyZXR1cm4gTy5zb21lKGpjKX0pLFdjPVtmcigic2VsZWN0b3IiKSxocigiZXhlY3V0ZSIsenUpLGhyKCJtb3ZlT25UYWIiLCExKV0sWGM9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiByLmZvY3VzTWFuYWdlci5nZXQoZSkuYmluZChmdW5jdGlvbihuKXtyZXR1cm4gci5leGVjdXRlKGUsdCxuKX0pfSxxYz1mdW5jdGlvbihlLHQsbil7VWkoZS5lbGVtZW50KCksdC5zZWxlY3RvcikuZWFjaChmdW5jdGlvbihuKXt0LmZvY3VzTWFuYWdlci5zZXQoZSxuKX0pfSxZYz1mdW5jdGlvbihuLGUsdCl7cmV0dXJuIHdjKG4sdC5zZWxlY3RvcixlLC0xKX0sS2M9ZnVuY3Rpb24obixlLHQpe3JldHVybiB3YyhuLHQuc2VsZWN0b3IsZSwxKX0sSmM9eShbZnUob3UoSmkoKSkscmMoWWMpKSxmdShvdShaaSgpKSxyYyhLYykpLGZ1KGl1KFt1dSxvdShbOV0pXSksZnVuY3Rpb24obixlLHQscil7cmV0dXJuIHQubW92ZU9uVGFiP3JjKFljKShuLGUsdCxyKTpPLm5vbmUoKX0pLGZ1KGl1KFthdSxvdShbOV0pXSksZnVuY3Rpb24obixlLHQscil7cmV0dXJuIHQubW92ZU9uVGFiP3JjKEtjKShuLGUsdCxyKTpPLm5vbmUoKX0pLGZ1KG91KFhpKCkpLFhjKSxmdShvdShZaSgpKSxYYyldKSxRYz15KFtmdShvdShZaSgpKSxMdSldKSxaYz1BdShXYyxHci5pbml0LEpjLFFjLGZ1bmN0aW9uKCl7cmV0dXJuIE8uc29tZShxYyl9KSxuYT1bWW8oIm9uU3BhY2UiKSxZbygib25FbnRlciIpLFlvKCJvblNoaWZ0RW50ZXIiKSxZbygib25MZWZ0IiksWW8oIm9uUmlnaHQiKSxZbygib25UYWIiKSxZbygib25TaGlmdFRhYiIpLFlvKCJvblVwIiksWW8oIm9uRG93biIpLFlvKCJvbkVzY2FwZSIpLGhyKCJzdG9wU3BhY2VLZXl1cCIsITEpLGRyKCJmb2N1c0luIildLGVhPUF1KG5hLEdyLmluaXQsZnVuY3Rpb24obixlLHQpe3JldHVybltmdShvdShZaSgpKSx0Lm9uU3BhY2UpLGZ1KGl1KFthdSxvdShYaSgpKV0pLHQub25FbnRlciksZnUoaXUoW3V1LG91KFhpKCkpXSksdC5vblNoaWZ0RW50ZXIpLGZ1KGl1KFt1dSxvdShbOV0pXSksdC5vblNoaWZ0VGFiKSxmdShpdShbYXUsb3UoWzldKV0pLHQub25UYWIpLGZ1KG91KEppKCkpLHQub25VcCksZnUob3UoWmkoKSksdC5vbkRvd24pLGZ1KG91KEtpKCkpLHQub25MZWZ0KSxmdShvdShRaSgpKSx0Lm9uUmlnaHQpLGZ1KG91KFlpKCkpLHQub25TcGFjZSksZnUob3UocWkoKSksdC5vbkVzY2FwZSldfSxmdW5jdGlvbihuLGUsdCl7cmV0dXJuIHQuc3RvcFNwYWNlS2V5dXA/W2Z1KG91KFlpKCkpLEx1KV06W119LGZ1bmN0aW9uKG4pe3JldHVybiBuLmZvY3VzSW59KSx0YT1IdS5zY2hlbWEoKSxyYT1OdS5zY2hlbWEoKSxvYT1EYy5zY2hlbWEoKSxpYT14Yy5zY2hlbWEoKSx1YT1VYy5zY2hlbWEoKSxjYT1VdS5zY2hlbWEoKSxhYT1aYy5zY2hlbWEoKSxmYT1lYS5zY2hlbWEoKSxzYT0oQnU9b3IoIkNyZWF0aW5nIGJlaGF2aW91cjogIisoRXU9e2JyYW5jaEtleToibW9kZSIsYnJhbmNoZXM6LyogKi9PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxhY3ljbGljOnRhLGN5Y2xpYzpyYSxmbG93Om9hLGZsYXRncmlkOmlhLG1hdHJpeDp1YSxleGVjdXRpb246Y2EsbWVudTphYSxzcGVjaWFsOmZhfSksbmFtZToia2V5aW5nIixhY3RpdmU6e2V2ZW50czpmdW5jdGlvbihuLGUpe3JldHVybiBuLmhhbmRsZXIudG9FdmVudHMobixlKX19LGFwaXM6e2ZvY3VzSW46ZnVuY3Rpb24oZSx0LHIpe3Quc2VuZEZvY3VzSW4odCkuZm9sZChmdW5jdGlvbigpe2UuZ2V0U3lzdGVtKCkudHJpZ2dlckZvY3VzKGUuZWxlbWVudCgpLGUuZWxlbWVudCgpKX0sZnVuY3Rpb24obil7bihlLHQscil9KX0sc2V0R3JpZFNpemU6ZnVuY3Rpb24obixlLHQscixvKXtSKHQsInNldEdyaWRTaXplIik/dC5zZXRHcmlkU2l6ZShyLG8pOnYuY29uc29sZS5lcnJvcigiTGF5b3V0IGRvZXMgbm90IHN1cHBvcnQgc2V0R3JpZFNpemUiKX19LHN0YXRlOlh1fSkubmFtZSxxcixFdSksQ3U9dXIoQnUuYnJhbmNoS2V5LEJ1LmJyYW5jaGVzKSxNdT1CdS5uYW1lLF91PUJ1LmFjdGl2ZSxEdT1CdS5hcGlzLEl1PUJ1LmV4dHJhLEZ1PUJ1LnN0YXRlLFZ1PWdyKE11LFttcigiY29uZmlnIixSdT1DdSldKSxMcihSdSxWdSxNdSxfdSxEdSxJdSxGdSkpLGxhPWZ1bmN0aW9uKHIsbil7cmV0dXJuIGU9cix0PXt9LG89Z24obixmdW5jdGlvbihuKXtyZXR1cm4gZT1uLm5hbWUoKSx0PSJDYW5ub3QgY29uZmlndXJlICIrbi5uYW1lKCkrIiBmb3IgIityLEt0KGUsZSxDdCgpLCR0KGZ1bmN0aW9uKG4pe3JldHVybiBidCgiVGhlIGZpZWxkOiAiK2UrIiBpcyBmb3JiaWRkZW4uICIrdCl9KSk7dmFyIGUsdH0pLmNvbmNhdChbeXIoImR1bXAiLGIpXSksdnIoZSx0LFd0KG8pKTt2YXIgZSx0LG99LGRhPWZ1bmN0aW9uKG4pe3JldHVybiBuLmR1bXB9LG1hPWZ1bmN0aW9uKG4sZSl7cmV0dXJuIHgoeCh7fSxuLmR1bXApLFVyKGUpKX0sZ2E9bGEscGE9bWEsaGE9InBsYWNlaG9sZGVyIix2YT1vdChbe3NpbmdsZTpbInJlcXVpcmVkIiwidmFsdWVUaHVuayJdfSx7bXVsdGlwbGU6WyJyZXF1aXJlZCIsInZhbHVlVGh1bmtzIl19XSkseWE9ZnVuY3Rpb24obil7cmV0dXJuIEYobiwidWlUeXBlIil9LGJhPWZ1bmN0aW9uKG4sZSx0LHIpe3JldHVybiB5YSh0KSYmdC51aVR5cGU9PT1oYT8oaT10LHU9ciwobz1uKS5leGlzdHMoZnVuY3Rpb24obil7cmV0dXJuIG4hPT1pLm93bmVyfSk/dmEuc2luZ2xlKCEwLHkoaSkpOkkodSxpLm5hbWUpLmZvbGQoZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gcGxhY2Vob2xkZXIgY29tcG9uZW50OiAiK2kubmFtZSsiXG5Lbm93bjogWyIrVCh1KSsiXVxuTmFtZXNwYWNlOiAiK28uZ2V0T3IoIm5vbmUiKSsiXG5TcGVjOiAiK0pTT04uc3RyaW5naWZ5KGksbnVsbCwyKSl9LGZ1bmN0aW9uKG4pe3JldHVybiBuLnJlcGxhY2UoKX0pKTp2YS5zaW5nbGUoITEseSh0KSk7dmFyIG8saSx1fSx4YT1mdW5jdGlvbihpLHUsYyxhKXtyZXR1cm4gYmEoaSwwLGMsYSkuZm9sZChmdW5jdGlvbihuLGUpe3ZhciB0PXlhKGMpP2UodSxjLmNvbmZpZyxjLnZhbGlkYXRlZCk6ZSh1KSxyPUkodCwiY29tcG9uZW50cyIpLmdldE9yKFtdKSxvPVNuKHIsZnVuY3Rpb24obil7cmV0dXJuIHhhKGksdSxuLGEpfSk7cmV0dXJuW3goeCh7fSx0KSx7Y29tcG9uZW50czpvfSldfSxmdW5jdGlvbihuLGUpe2lmKHlhKGMpKXt2YXIgdD1lKHUsYy5jb25maWcsYy52YWxpZGF0ZWQpO3JldHVybiBjLnZhbGlkYXRlZC5wcmVwcm9jZXNzLmdldE9yKGIpKHQpfXJldHVybiBlKHUpfSl9LHdhPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvLGksdSxjPUMocixmdW5jdGlvbihuLGUpe3JldHVybiByPW4sbz0hMSx7bmFtZTp5KHQ9ZSkscmVxdWlyZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gci5mb2xkKGZ1bmN0aW9uKG4sZSl7cmV0dXJuIG59LGZ1bmN0aW9uKG4sZSl7cmV0dXJuIG59KX0sdXNlZDpmdW5jdGlvbigpe3JldHVybiBvfSxyZXBsYWNlOmZ1bmN0aW9uKCl7aWYobyl0aHJvdyBuZXcgRXJyb3IoIlRyeWluZyB0byB1c2UgdGhlIHNhbWUgcGxhY2Vob2xkZXIgbW9yZSB0aGFuIG9uY2U6ICIrdCk7cmV0dXJuIG89ITAscn19O3ZhciB0LHIsb30pLGE9KG89ZSxpPXQsdT1jLFNuKG4sZnVuY3Rpb24obil7cmV0dXJuIHhhKG8saSxuLHUpfSkpO3JldHVybiBFKGMsZnVuY3Rpb24obil7aWYoITE9PT1uLnVzZWQoKSYmbi5yZXF1aXJlZCgpKXRocm93IG5ldyBFcnJvcigiUGxhY2Vob2xkZXI6ICIrbi5uYW1lKCkrIiB3YXMgbm90IGZvdW5kIGluIGNvbXBvbmVudHMgbGlzdFxuTmFtZXNwYWNlOiAiK2UuZ2V0T3IoIm5vbmUiKSsiXG5Db21wb25lbnRzOiAiK0pTT04uc3RyaW5naWZ5KHQuY29tcG9uZW50cyxudWxsLDIpKX0pLGF9LFNhPXZhLnNpbmdsZSxPYT12YS5tdWx0aXBsZSxUYT15KGhhKSxrYT0wLEVhPWZ1bmN0aW9uKG4pe3ZhciBlPShuZXcgRGF0ZSkuZ2V0VGltZSgpO3JldHVybiBuKyJfIitNYXRoLmZsb29yKDFlOSpNYXRoLnJhbmRvbSgpKSsgKytrYStTdHJpbmcoZSl9LENhPW90KFt7cmVxdWlyZWQ6WyJkYXRhIl19LHtleHRlcm5hbDpbImRhdGEiXX0se29wdGlvbmFsOlsiZGF0YSJdfSx7Z3JvdXA6WyJkYXRhIl19XSksTWE9aHIoImZhY3RvcnkiLHtza2V0Y2g6Yn0pLF9hPWhyKCJzY2hlbWEiLFtdKSxEYT1mcigibmFtZSIpLElhPUt0KCJwbmFtZSIsInBuYW1lIixNdChmdW5jdGlvbihuKXtyZXR1cm4iPGFsbG95LiIrRWEobi5uYW1lKSsiPiJ9KSxjcigpKSxGYT15cigic2NoZW1hIixmdW5jdGlvbigpe3JldHVybltkcigicHJlcHJvY2VzcyIpXX0pLFJhPWhyKCJkZWZhdWx0cyIseSh7fSkpLFZhPWhyKCJvdmVycmlkZXMiLHkoe30pKSxCYT1XdChbTWEsX2EsRGEsSWEsUmEsVmFdKSxBYT1XdChbTWEsX2EsRGEsUmEsVmFdKSxqYT1XdChbTWEsX2EsRGEsSWEsUmEsVmFdKSxIYT1XdChbTWEsRmEsRGEsZnIoInVuaXQiKSxJYSxSYSxWYV0pLE5hPWZ1bmN0aW9uKG4pe3ZhciBlPWZ1bmN0aW9uKG4pe3JldHVybiBuLm5hbWV9O3JldHVybiBuLmZvbGQoZSxlLGUsZSl9LFBhPWZ1bmN0aW9uKHQscil7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciBlPW9yKCJDb252ZXJ0aW5nIHBhcnQgdHlwZSIscixuKTtyZXR1cm4gdChlKX19LHphPVBhKENhLnJlcXVpcmVkLEJhKSxMYT0oUGEoQ2EuZXh0ZXJuYWwsQWEpLFBhKENhLm9wdGlvbmFsLGphKSksR2E9UGEoQ2EuZ3JvdXAsSGEpLCRhPXkoImVudGlyZXR5IiksVWE9ZnVuY3Rpb24obixlLHQscil7cmV0dXJuIGN0KGUuZGVmYXVsdHMobix0LHIpLHQse3VpZDpuLnBhcnRVaWRzW2UubmFtZV19LGUub3ZlcnJpZGVzKG4sdCxyKSl9LFdhPWZ1bmN0aW9uKG8sbil7dmFyIGU9e307cmV0dXJuIHBuKG4sZnVuY3Rpb24obil7bi5mb2xkKE8uc29tZSxPLm5vbmUsTy5zb21lLE8uc29tZSkuZWFjaChmdW5jdGlvbih0KXt2YXIgcj1YYShvLHQucG5hbWUpO2VbdC5uYW1lXT1mdW5jdGlvbihuKXt2YXIgZT1vcigiUGFydDogIit0Lm5hbWUrIiBpbiAiK28sV3QodC5zY2hlbWEpLG4pO3JldHVybiB4KHgoe30scikse2NvbmZpZzpuLHZhbGlkYXRlZDplfSl9fSl9KSxlfSxYYT1mdW5jdGlvbihuLGUpe3JldHVybnt1aVR5cGU6VGEoKSxvd25lcjpuLG5hbWU6ZX19LHFhPWZ1bmN0aW9uKG4sZSx0KXtyZXR1cm4gcj1lLGk9e30sbz17fSxwbih0LGZ1bmN0aW9uKG4pe24uZm9sZChmdW5jdGlvbihyKXtpW3IucG5hbWVdPVNhKCEwLGZ1bmN0aW9uKG4sZSx0KXtyZXR1cm4gci5mYWN0b3J5LnNrZXRjaChVYShuLHIsZSx0KSl9KX0sZnVuY3Rpb24obil7dmFyIGU9ci5wYXJ0c1tuLm5hbWVdO29bbi5uYW1lXT15KG4uZmFjdG9yeS5za2V0Y2goVWEocixuLGVbJGEoKV0pLGUpKX0sZnVuY3Rpb24ocil7aVtyLnBuYW1lXT1TYSghMSxmdW5jdGlvbihuLGUsdCl7cmV0dXJuIHIuZmFjdG9yeS5za2V0Y2goVWEobixyLGUsdCkpfSl9LGZ1bmN0aW9uKG8pe2lbby5wbmFtZV09T2EoITAsZnVuY3Rpb24oZSxuLHQpe3ZhciByPWVbby5uYW1lXTtyZXR1cm4gZ24ocixmdW5jdGlvbihuKXtyZXR1cm4gby5mYWN0b3J5LnNrZXRjaChjdChvLmRlZmF1bHRzKGUsbix0KSxuLG8ub3ZlcnJpZGVzKGUsbikpKX0pfSl9KX0pLHtpbnRlcm5hbHM6eShpKSxleHRlcm5hbHM6eShvKX07dmFyIHIsaSxvfSxZYT1mdW5jdGlvbihuLGUsdCl7cmV0dXJuIHdhKE8uc29tZShuKSxlLGUuY29tcG9uZW50cyx0KX0sS2E9ZnVuY3Rpb24obixlLHQpe3ZhciByPWUucGFydFVpZHNbdF07cmV0dXJuIG4uZ2V0U3lzdGVtKCkuZ2V0QnlVaWQocikudG9PcHRpb24oKX0sSmE9ZnVuY3Rpb24obixlLHQpe3JldHVybiBLYShuLGUsdCkuZ2V0T3JEaWUoIkNvdWxkIG5vdCBmaW5kIHBhcnQ6ICIrdCl9LFFhPWZ1bmN0aW9uKGUsbil7dmFyIHQ9Z24obixOYSk7cmV0dXJuIFJ0KGduKHQsZnVuY3Rpb24obil7cmV0dXJue2tleTpuLHZhbHVlOmUrIi0iK259fSkpfSxaYT1mdW5jdGlvbihlKXtyZXR1cm4gS3QoInBhcnRVaWRzIiwicGFydFVpZHMiLF90KGZ1bmN0aW9uKG4pe3JldHVybiBRYShuLnVpZCxlKX0pLGNyKCkpfSxuZj1FYSgiYWxsb3ktcHJlbWFkZSIpLGVmPWZ1bmN0aW9uKG4pe3JldHVybiBGdChuZixuKX0sdGY9ZnVuY3Rpb24ocil7cmV0dXJuIG49ZnVuY3Rpb24obil7Zm9yKHZhciBlPVtdLHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKWVbdC0xXT1hcmd1bWVudHNbdF07cmV0dXJuIHIuYXBwbHkodm9pZCAwLHUoW24uZ2V0QXBpcygpLG5dLGUpKX0sZT1yLnRvU3RyaW5nKCksdD1lLmluZGV4T2YoIikiKSsxLG89ZS5pbmRleE9mKCIoIiksaT1lLnN1YnN0cmluZyhvKzEsdC0xKS5zcGxpdCgvLFxzKi8pLG4udG9GdW5jdGlvbkFubm90YXRpb249ZnVuY3Rpb24oKXtyZXR1cm57bmFtZToiT1ZFUlJJREUiLHBhcmFtZXRlcnM6QXIoaS5zbGljZSgxKSl9fSxuO3ZhciBuLGUsdCxvLGl9LHJmPXkoImFsbG95LWlkLSIpLG9mPXkoImRhdGEtYWxsb3ktaWQiKSx1Zj1yZigpLGNmPW9mKCksYWY9ZnVuY3Rpb24obixlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkobi5kb20oKSxjZix7dmFsdWU6ZSx3cml0YWJsZTohMH0pfSxmZj1mdW5jdGlvbihuKXt2YXIgZT1DZShuKT9uLmRvbSgpW2NmXTpudWxsO3JldHVybiBPLmZyb20oZSl9LHNmPWZ1bmN0aW9uKG4pe3JldHVybiBFYShuKX0sbGY9ZnVuY3Rpb24obixlLHQscixvKXt2YXIgaSx1LGM9KHU9bywoMDwoaT1yKS5sZW5ndGg/W2xyKCJwYXJ0cyIsaSldOltdKS5jb25jYXQoW2ZyKCJ1aWQiKSxocigiZG9tIix7fSksaHIoImNvbXBvbmVudHMiLFtdKSxabygib3JpZ2luYWxTcGVjIiksaHIoImRlYnVnLnNrZXRjaGVyIix7fSldKS5jb25jYXQodSkpO3JldHVybiBvcihuKyIgW1NwZWNTY2hlbWFdIixVdChjLmNvbmNhdChlKSksdCl9LGRmPWZ1bmN0aW9uKG4sZSx0LHIsbyl7dmFyIGk9bWYobyksdT1Tbih0LGZ1bmN0aW9uKG4pe3JldHVybiBuLmZvbGQoTy5ub25lLE8uc29tZSxPLm5vbmUsTy5ub25lKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIGxyKG4ubmFtZSxuLnNjaGVtYS5jb25jYXQoW1pvKCRhKCkpXSkpfSkudG9BcnJheSgpfSksYz1aYSh0KSxhPWxmKG4sZSxpLHUsW2NdKSxmPXFhKDAsYSx0KTtyZXR1cm4gcihhLFlhKG4sYSxmLmludGVybmFscygpKSxpLGYuZXh0ZXJuYWxzKCkpfSxtZj1mdW5jdGlvbihuKXtyZXR1cm4gRihuLCJ1aWQiKT9uOngoeCh7fSxuKSx7dWlkOnNmKCJ1aWQiKX0pfTt2YXIgZ2YscGYsaGYsdmY9VXQoW2ZyKCJuYW1lIiksZnIoImZhY3RvcnkiKSxmcigiY29uZmlnRmllbGRzIiksaHIoImFwaXMiLHt9KSxocigiZXh0cmFBcGlzIix7fSldKSx5Zj1VdChbZnIoIm5hbWUiKSxmcigiZmFjdG9yeSIpLGZyKCJjb25maWdGaWVsZHMiKSxmcigicGFydEZpZWxkcyIpLGhyKCJhcGlzIix7fSksaHIoImV4dHJhQXBpcyIse30pXSksYmY9ZnVuY3Rpb24obil7dmFyIGk9b3IoIlNrZXRjaGVyIGZvciAiK24ubmFtZSx2ZixuKSxlPUMoaS5hcGlzLHRmKSx0PUMoaS5leHRyYUFwaXMsZnVuY3Rpb24obixlKXtyZXR1cm4ganIobixlKX0pO3JldHVybiB4KHgoe25hbWU6eShpLm5hbWUpLGNvbmZpZ0ZpZWxkczp5KGkuY29uZmlnRmllbGRzKSxza2V0Y2g6ZnVuY3Rpb24obil7cmV0dXJuIGU9aS5uYW1lLHQ9aS5jb25maWdGaWVsZHMscj1pLmZhY3Rvcnksbz1tZihuKSxyKGxmKGUsdCxvLFtdLFtdKSxvKTt2YXIgZSx0LHIsb319LGUpLHQpfSx4Zj1mdW5jdGlvbihuKXt2YXIgZT1vcigiU2tldGNoZXIgZm9yICIrbi5uYW1lLHlmLG4pLHQ9V2EoZS5uYW1lLGUucGFydEZpZWxkcykscj1DKGUuYXBpcyx0Ziksbz1DKGUuZXh0cmFBcGlzLGZ1bmN0aW9uKG4sZSl7cmV0dXJuIGpyKG4sZSl9KTtyZXR1cm4geCh4KHtuYW1lOnkoZS5uYW1lKSxwYXJ0RmllbGRzOnkoZS5wYXJ0RmllbGRzKSxjb25maWdGaWVsZHM6eShlLmNvbmZpZ0ZpZWxkcyksc2tldGNoOmZ1bmN0aW9uKG4pe3JldHVybiBkZihlLm5hbWUsZS5jb25maWdGaWVsZHMsZS5wYXJ0RmllbGRzLGUuZmFjdG9yeSxuKX0scGFydHM6eSh0KX0sciksbyl9LHdmPWJmKHtuYW1lOiJCdXR0b24iLGZhY3Rvcnk6ZnVuY3Rpb24obil7dmFyIGUsdD0oZT1uLmFjdGlvbixUcih3bihbZS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIEJyKGZ1bmN0aW9uKG4sZSl7dChuKSxlLnN0b3AoKX0pfSkudG9BcnJheSgpLHhpKCldKSkpLHI9bi5kb20udGFnLG89ZnVuY3Rpb24oZSl7cmV0dXJuIEkobi5kb20sImF0dHJpYnV0ZXMiKS5iaW5kKGZ1bmN0aW9uKG4pe3JldHVybiBJKG4sZSl9KX07cmV0dXJue3VpZDpuLnVpZCxkb206bi5kb20sY29tcG9uZW50czpuLmNvbXBvbmVudHMsZXZlbnRzOnQsYmVoYXZpb3VyczpwYShuLmJ1dHRvbkJlaGF2aW91cnMsW2tpLmNvbmZpZyh7fSksc2EuY29uZmlnKHttb2RlOiJleGVjdXRpb24iLHVzZVNwYWNlOiEwLHVzZUVudGVyOiEwfSldKSxkb21Nb2RpZmljYXRpb246e2F0dHJpYnV0ZXM6ZnVuY3Rpb24oKXtpZigiYnV0dG9uIiE9PXIpcmV0dXJue3JvbGU6bygicm9sZSIpLmdldE9yKCJidXR0b24iKX07dmFyIG49bygidHlwZSIpLmdldE9yKCJidXR0b24iKSxlPW8oInJvbGUiKS5tYXAoZnVuY3Rpb24obil7cmV0dXJue3JvbGU6bn19KS5nZXRPcih7fSk7cmV0dXJuIHgoe3R5cGU6bn0sZSl9KCl9LGV2ZW50T3JkZXI6bi5ldmVudE9yZGVyfX0sY29uZmlnRmllbGRzOltocigidWlkIix1bmRlZmluZWQpLGZyKCJkb20iKSxocigiY29tcG9uZW50cyIsW10pLGdhKCJidXR0b25CZWhhdmlvdXJzIixba2ksc2FdKSxkcigiYWN0aW9uIiksZHIoInJvbGUiKSxocigiZXZlbnRPcmRlciIse30pXX0pLFNmPVhyKHtmaWVsZHM6W10sbmFtZToidW5zZWxlY3RpbmciLGFjdGl2ZTovKiAqL09iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLGV2ZW50czpmdW5jdGlvbigpe3JldHVybiBUcihba3IodGUoKSx5KCEwKSldKX0sZXhoaWJpdDpmdW5jdGlvbigpe3JldHVybiBIcih7c3R5bGVzOnsiLXdlYmtpdC11c2VyLXNlbGVjdCI6Im5vbmUiLCJ1c2VyLXNlbGVjdCI6Im5vbmUiLCItbXMtdXNlci1zZWxlY3QiOiJub25lIiwiLW1vei11c2VyLXNlbGVjdCI6Ii1tb3otbm9uZSJ9LGF0dHJpYnV0ZXM6e3Vuc2VsZWN0YWJsZToib24ifX0pfX0pfSksT2Y9ZnVuY3Rpb24obil7dmFyIGUsdCxyLG89VGUuZnJvbUh0bWwobiksaT1OZShvKSx1PSh0PShlPW8pLmRvbSgpLmF0dHJpYnV0ZXMhPT11bmRlZmluZWQ/ZS5kb20oKS5hdHRyaWJ1dGVzOltdLHluKHQsZnVuY3Rpb24obixlKXt2YXIgdDtyZXR1cm4iY2xhc3MiPT09ZS5uYW1lP246eCh4KHt9LG4pLCgodD17fSlbZS5uYW1lXT1lLnZhbHVlLHQpKX0se30pKSxjPShyPW8sQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoci5kb20oKS5jbGFzc0xpc3QsMCkpLGE9MD09PWkubGVuZ3RoP3t9Ontpbm5lckh0bWw6RG8obyl9O3JldHVybiB4KHt0YWc6a2UobyksY2xhc3NlczpjLGF0dHJpYnV0ZXM6dX0sYSl9LFRmPWZ1bmN0aW9uKG4pe3ZhciBlPUluKG4se3ByZWZpeDp5aX0pO3JldHVybiBPZihlKX0sa2Y9ZnVuY3Rpb24obil7cmV0dXJue2RvbTpUZihuKX19LEVmPWZ1bmN0aW9uKG4pe3JldHVybiBVcihbZ2kuY29uZmlnKHt0b2dnbGVDbGFzczpiaSgidG9vbGJhci1idXR0b24tc2VsZWN0ZWQiKSx0b2dnbGVPbkV4ZWN1dGU6ITEsYXJpYTp7bW9kZToicHJlc3NlZCJ9fSkscGkobixmdW5jdGlvbihuLGUpeyhlP2dpLm9uOmdpLm9mZikobil9KV0pfSxDZj1mdW5jdGlvbihuLGUsdCxyKXt2YXIgbz1FZih0KTtyZXR1cm4gX2YoZSxyLG8sbil9LE1mPWZ1bmN0aW9uKG4sZSl7dmFyIHQ9ZS51aS5yZWdpc3RyeS5nZXRBbGwoKS5pY29ucztyZXR1cm4gTy5mcm9tKHRbbl0pLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm4gVGYoJzxzcGFuIGNsYXNzPSIke3ByZWZpeH0tdG9vbGJhci1idXR0b24gJHtwcmVmaXh9LXRvb2xiYXItZ3JvdXAtaXRlbSAke3ByZWZpeH0taWNvbi0nK24rJyAke3ByZWZpeH0taWNvbiI+PC9zcGFuPicpfSxmdW5jdGlvbihuKXtyZXR1cm4gVGYoJzxzcGFuIGNsYXNzPSIke3ByZWZpeH0tdG9vbGJhci1idXR0b24gJHtwcmVmaXh9LXRvb2xiYXItZ3JvdXAtaXRlbSI+JytuKyI8L3NwYW4+Iil9KX0sX2Y9ZnVuY3Rpb24obixlLHQscil7cmV0dXJuIHdmLnNrZXRjaCh7ZG9tOk1mKG4sciksYWN0aW9uOmUsYnV0dG9uQmVoYXZpb3VyczpjdChVcihbU2YuY29uZmlnKHt9KV0pLHQpfSl9LERmPUxhKHtzY2hlbWE6W2ZyKCJkb20iKV0sbmFtZToibGFiZWwifSksSWY9ZnVuY3Rpb24oZSl7cmV0dXJuIExhKHtuYW1lOmUrIi1lZGdlIixvdmVycmlkZXM6ZnVuY3Rpb24obil7cmV0dXJuIG4ubW9kZWwubWFuYWdlci5lZGdlQWN0aW9uc1tlXS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJue319LGZ1bmN0aW9uKHIpe3JldHVybntldmVudHM6VHIoW0NyKEduKCksZnVuY3Rpb24obixlLHQpe3JldHVybiByKG4sdCl9LFtuXSksQ3IoV24oKSxmdW5jdGlvbihuLGUsdCl7cmV0dXJuIHIobix0KX0sW25dKSxDcihYbigpLGZ1bmN0aW9uKG4sZSx0KXt0Lm1vdXNlSXNEb3duLmdldCgpJiZyKG4sdCl9LFtuXSldKX19KX19KX0sRmY9SWYoInRvcC1sZWZ0IiksUmY9SWYoInRvcCIpLFZmPUlmKCJ0b3AtcmlnaHQiKSxCZj1JZigicmlnaHQiKSxBZj1JZigiYm90dG9tLXJpZ2h0IiksamY9SWYoImJvdHRvbSIpLEhmPUlmKCJib3R0b20tbGVmdCIpLE5mPVtEZixJZigibGVmdCIpLEJmLFJmLGpmLEZmLFZmLEhmLEFmLHphKHtuYW1lOiJ0aHVtYiIsZGVmYXVsdHM6eSh7ZG9tOntzdHlsZXM6e3Bvc2l0aW9uOiJhYnNvbHV0ZSJ9fX0pLG92ZXJyaWRlczpmdW5jdGlvbihuKXtyZXR1cm57ZXZlbnRzOlRyKFtEcihHbigpLG4sInNwZWN0cnVtIiksRHIoJG4oKSxuLCJzcGVjdHJ1bSIpLERyKFVuKCksbiwic3BlY3RydW0iKSxEcihXbigpLG4sInNwZWN0cnVtIiksRHIoWG4oKSxuLCJzcGVjdHJ1bSIpLERyKHFuKCksbiwic3BlY3RydW0iKV0pfX19KSx6YSh7c2NoZW1hOlt5cigibW91c2VJc0Rvd24iLGZ1bmN0aW9uKCl7cmV0dXJuIGhvKCExKX0pXSxuYW1lOiJzcGVjdHJ1bSIsb3ZlcnJpZGVzOmZ1bmN0aW9uKHQpe3ZhciByPXQubW9kZWwubWFuYWdlcixvPWZ1bmN0aW9uKGUsbil7cmV0dXJuIHIuZ2V0VmFsdWVGcm9tRXZlbnQobikubWFwKGZ1bmN0aW9uKG4pe3JldHVybiByLnNldFZhbHVlRnJvbShlLHQsbil9KX07cmV0dXJue2JlaGF2aW91cnM6VXIoW3NhLmNvbmZpZyh7bW9kZToic3BlY2lhbCIsb25MZWZ0OmZ1bmN0aW9uKG4pe3JldHVybiByLm9uTGVmdChuLHQpfSxvblJpZ2h0OmZ1bmN0aW9uKG4pe3JldHVybiByLm9uUmlnaHQobix0KX0sb25VcDpmdW5jdGlvbihuKXtyZXR1cm4gci5vblVwKG4sdCl9LG9uRG93bjpmdW5jdGlvbihuKXtyZXR1cm4gci5vbkRvd24obix0KX19KSxraS5jb25maWcoe30pXSksZXZlbnRzOlRyKFtFcihHbigpLG8pLEVyKCRuKCksbyksRXIoV24oKSxvKSxFcihYbigpLGZ1bmN0aW9uKG4sZSl7dC5tb3VzZUlzRG93bi5nZXQoKSYmbyhuLGUpfSldKX19fSldLFBmPWZ1bmN0aW9uKG4sZSx0KXtlLnN0b3JlLm1hbmFnZXIub25Mb2FkKG4sZSx0KX0semY9ZnVuY3Rpb24obixlLHQpe2Uuc3RvcmUubWFuYWdlci5vblVubG9hZChuLGUsdCl9LExmPS8qICovT2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsb25Mb2FkOlBmLG9uVW5sb2FkOnpmLHNldFZhbHVlOmZ1bmN0aW9uKG4sZSx0LHIpe2Uuc3RvcmUubWFuYWdlci5zZXRWYWx1ZShuLGUsdCxyKX0sZ2V0VmFsdWU6ZnVuY3Rpb24obixlLHQpe3JldHVybiBlLnN0b3JlLm1hbmFnZXIuZ2V0VmFsdWUobixlLHQpfSxnZXRTdGF0ZTpmdW5jdGlvbihuLGUsdCl7cmV0dXJuIHR9fSksR2Y9LyogKi9PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxldmVudHM6ZnVuY3Rpb24odCxyKXt2YXIgbj10LnJlc2V0T25Eb20/W0ZyKGZ1bmN0aW9uKG4sZSl7UGYobix0LHIpfSksUnIoZnVuY3Rpb24obixlKXt6ZihuLHQscil9KV06W05yKHQscixQZildO3JldHVybiBUcihuKX19KSwkZj1mdW5jdGlvbigpe3ZhciBuPWhvKG51bGwpO3JldHVybiAkcih7c2V0Om4uc2V0LGdldDpuLmdldCxpc05vdFNldDpmdW5jdGlvbigpe3JldHVybiBudWxsPT09bi5nZXQoKX0sY2xlYXI6ZnVuY3Rpb24oKXtuLnNldChudWxsKX0scmVhZFN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJue21vZGU6Im1lbW9yeSIsdmFsdWU6bi5nZXQoKX19fSl9LFVmPWZ1bmN0aW9uKCl7dmFyIGk9aG8oe30pLHU9aG8oe30pO3JldHVybiAkcih7cmVhZFN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJue21vZGU6ImRhdGFzZXQiLGRhdGFCeVZhbHVlOmkuZ2V0KCksZGF0YUJ5VGV4dDp1LmdldCgpfX0sbG9va3VwOmZ1bmN0aW9uKG4pe3JldHVybiBJKGkuZ2V0KCksbikub3JUaHVuayhmdW5jdGlvbigpe3JldHVybiBJKHUuZ2V0KCksbil9KX0sdXBkYXRlOmZ1bmN0aW9uKG4pe3ZhciBlPWkuZ2V0KCksdD11LmdldCgpLHI9e30sbz17fTtwbihuLGZ1bmN0aW9uKGUpe3JbZS52YWx1ZV09ZSxJKGUsIm1ldGEiKS5lYWNoKGZ1bmN0aW9uKG4pe0kobiwidGV4dCIpLmVhY2goZnVuY3Rpb24obil7b1tuXT1lfSl9KX0pLGkuc2V0KHgoeCh7fSxlKSxyKSksdS5zZXQoeCh4KHt9LHQpLG8pKX0sY2xlYXI6ZnVuY3Rpb24oKXtpLnNldCh7fSksdS5zZXQoe30pfX0pfSxXZj0vKiAqL09iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLG1lbW9yeTokZixkYXRhc2V0OlVmLG1hbnVhbDpmdW5jdGlvbigpe3JldHVybiAkcih7cmVhZFN0YXRlOmZ1bmN0aW9uKCl7fX0pfSxpbml0OmZ1bmN0aW9uKG4pe3JldHVybiBuLnN0b3JlLm1hbmFnZXIuc3RhdGUobil9fSksWGY9ZnVuY3Rpb24obixlLHQscil7dmFyIG89ZS5zdG9yZTt0LnVwZGF0ZShbcl0pLG8uc2V0VmFsdWUobixyKSxlLm9uU2V0VmFsdWUobixyKX0scWY9W2RyKCJpbml0aWFsVmFsdWUiKSxmcigiZ2V0RmFsbGJhY2tFbnRyeSIpLGZyKCJnZXREYXRhS2V5IiksZnIoInNldFZhbHVlIiksUW8oIm1hbmFnZXIiLHtzZXRWYWx1ZTpYZixnZXRWYWx1ZTpmdW5jdGlvbihuLGUsdCl7dmFyIHI9ZS5zdG9yZSxvPXIuZ2V0RGF0YUtleShuKTtyZXR1cm4gdC5sb29rdXAobykuZm9sZChmdW5jdGlvbigpe3JldHVybiByLmdldEZhbGxiYWNrRW50cnkobyl9LGZ1bmN0aW9uKG4pe3JldHVybiBufSl9LG9uTG9hZDpmdW5jdGlvbihlLHQscil7dC5zdG9yZS5pbml0aWFsVmFsdWUuZWFjaChmdW5jdGlvbihuKXtYZihlLHQscixuKX0pfSxvblVubG9hZDpmdW5jdGlvbihuLGUsdCl7dC5jbGVhcigpfSxzdGF0ZTpVZn0pXSxZZj1bZnIoImdldFZhbHVlIiksaHIoInNldFZhbHVlIix3KSxkcigiaW5pdGlhbFZhbHVlIiksUW8oIm1hbmFnZXIiLHtzZXRWYWx1ZTpmdW5jdGlvbihuLGUsdCxyKXtlLnN0b3JlLnNldFZhbHVlKG4sciksZS5vblNldFZhbHVlKG4scil9LGdldFZhbHVlOmZ1bmN0aW9uKG4sZSx0KXtyZXR1cm4gZS5zdG9yZS5nZXRWYWx1ZShuKX0sb25Mb2FkOmZ1bmN0aW9uKGUsdCxuKXt0LnN0b3JlLmluaXRpYWxWYWx1ZS5lYWNoKGZ1bmN0aW9uKG4pe3Quc3RvcmUuc2V0VmFsdWUoZSxuKX0pfSxvblVubG9hZDp3LHN0YXRlOkdyLmluaXR9KV0sS2Y9W2RyKCJpbml0aWFsVmFsdWUiKSxRbygibWFuYWdlciIse3NldFZhbHVlOmZ1bmN0aW9uKG4sZSx0LHIpe3Quc2V0KHIpLGUub25TZXRWYWx1ZShuLHIpfSxnZXRWYWx1ZTpmdW5jdGlvbihuLGUsdCl7cmV0dXJuIHQuZ2V0KCl9LG9uTG9hZDpmdW5jdGlvbihuLGUsdCl7ZS5zdG9yZS5pbml0aWFsVmFsdWUuZWFjaChmdW5jdGlvbihuKXt0LmlzTm90U2V0KCkmJnQuc2V0KG4pfSl9LG9uVW5sb2FkOmZ1bmN0aW9uKG4sZSx0KXt0LmNsZWFyKCl9LHN0YXRlOiRmfSldLEpmPVt2cigic3RvcmUiLHttb2RlOiJtZW1vcnkifSx1cigibW9kZSIse21lbW9yeTpLZixtYW51YWw6WWYsZGF0YXNldDpxZn0pKSxxbygib25TZXRWYWx1ZSIpLGhyKCJyZXNldE9uRG9tIiwhMSldLFFmPVhyKHtmaWVsZHM6SmYsbmFtZToicmVwcmVzZW50aW5nIixhY3RpdmU6R2YsYXBpczpMZixleHRyYTp7c2V0VmFsdWVGcm9tOmZ1bmN0aW9uKG4sZSl7dmFyIHQ9UWYuZ2V0VmFsdWUoZSk7UWYuc2V0VmFsdWUobix0KX19LHN0YXRlOldmfSksWmY9QmkoIndpZHRoIixmdW5jdGlvbihuKXtyZXR1cm4gbi5kb20oKS5vZmZzZXRXaWR0aH0pLG5zPWZ1bmN0aW9uKG4sZSl7cmV0dXJuIFpmLnNldChuLGUpfSxlcz1mdW5jdGlvbihuKXtyZXR1cm4gWmYuZ2V0KG4pfSx0cz1mdW5jdGlvbih0LHIpe3JldHVybntsZWZ0OnkodCksdG9wOnkociksdHJhbnNsYXRlOmZ1bmN0aW9uKG4sZSl7cmV0dXJuIHRzKHQrbixyK2UpfX19LHJzPXRzLG9zPXkoInNsaWRlci5jaGFuZ2UudmFsdWUiKSxpcz1mdW5jdGlvbihuKXt2YXIgZT1uLmV2ZW50KCkucmF3KCk7aWYoLTEhPT1lLnR5cGUuaW5kZXhPZigidG91Y2giKSl7cmV0dXJuIGUudG91Y2hlcyE9PXVuZGVmaW5lZCYmMT09PWUudG91Y2hlcy5sZW5ndGg/Ty5zb21lKGUudG91Y2hlc1swXSkubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBycyhuLmNsaWVudFgsbi5jbGllbnRZKX0pOk8ubm9uZSgpfXJldHVybiBlLmNsaWVudFghPT11bmRlZmluZWQ/Ty5zb21lKGUpLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gcnMobi5jbGllbnRYLG4uY2xpZW50WSl9KTpPLm5vbmUoKX0sdXM9ZnVuY3Rpb24obil7cmV0dXJuIG4ubW9kZWwubWluWH0sY3M9ZnVuY3Rpb24obil7cmV0dXJuIG4ubW9kZWwubWluWX0sYXM9ZnVuY3Rpb24obil7cmV0dXJuIG4ubW9kZWwubWluWC0xfSxmcz1mdW5jdGlvbihuKXtyZXR1cm4gbi5tb2RlbC5taW5ZLTF9LHNzPWZ1bmN0aW9uKG4pe3JldHVybiBuLm1vZGVsLm1heFh9LGxzPWZ1bmN0aW9uKG4pe3JldHVybiBuLm1vZGVsLm1heFl9LGRzPWZ1bmN0aW9uKG4pe3JldHVybiBuLm1vZGVsLm1heFgrMX0sbXM9ZnVuY3Rpb24obil7cmV0dXJuIG4ubW9kZWwubWF4WSsxfSxncz1mdW5jdGlvbihuLGUsdCl7cmV0dXJuIGUobiktdChuKX0scHM9ZnVuY3Rpb24obil7cmV0dXJuIGdzKG4sc3MsdXMpfSxocz1mdW5jdGlvbihuKXtyZXR1cm4gZ3Mobixscyxjcyl9LHZzPWZ1bmN0aW9uKG4pe3JldHVybiBwcyhuKS8yfSx5cz1mdW5jdGlvbihuKXtyZXR1cm4gaHMobikvMn0sYnM9ZnVuY3Rpb24obil7cmV0dXJuIG4uc3RlcFNpemV9LHhzPWZ1bmN0aW9uKG4pe3JldHVybiBuLnNuYXBUb0dyaWR9LHdzPWZ1bmN0aW9uKG4pe3JldHVybiBuLnNuYXBTdGFydH0sU3M9ZnVuY3Rpb24obil7cmV0dXJuIG4ucm91bmRlZH0sT3M9ZnVuY3Rpb24obixlKXtyZXR1cm4gbltlKyItZWRnZSJdIT09dW5kZWZpbmVkfSxUcz1mdW5jdGlvbihuKXtyZXR1cm4gT3MobiwibGVmdCIpfSxrcz1mdW5jdGlvbihuKXtyZXR1cm4gT3MobiwicmlnaHQiKX0sRXM9ZnVuY3Rpb24obil7cmV0dXJuIE9zKG4sInRvcCIpfSxDcz1mdW5jdGlvbihuKXtyZXR1cm4gT3MobiwiYm90dG9tIil9LE1zPWZ1bmN0aW9uKG4pe3JldHVybiBuLm1vZGVsLnZhbHVlLmdldCgpfSxfcz1mdW5jdGlvbihuKXtyZXR1cm57eDp5KG4pfX0sRHM9ZnVuY3Rpb24obil7cmV0dXJue3k6eShuKX19LElzPWZ1bmN0aW9uKG4sZSl7cmV0dXJue3g6eShuKSx5OnkoZSl9fSxGcz1mdW5jdGlvbihuLGUpe2JlKG4sb3MoKSx7dmFsdWU6ZX0pfSxScz1mdW5jdGlvbihuLGUsdCxyKXtyZXR1cm4gbjxlP246dDxuP3Q6bj09PWU/ZS0xOk1hdGgubWF4KGUsbi1yKX0sVnM9ZnVuY3Rpb24obixlLHQscil7cmV0dXJuIHQ8bj9uOm48ZT9lOm49PT10P3QrMTpNYXRoLm1pbih0LG4rcil9LEJzPWZ1bmN0aW9uKG4sZSx0KXtyZXR1cm4gTWF0aC5tYXgoZSxNYXRoLm1pbih0LG4pKX0sQXM9ZnVuY3Rpb24obil7dmFyIGU9bi5taW4sdD1uLm1heCxyPW4ucmFuZ2Usbz1uLnZhbHVlLGk9bi5zdGVwLHU9bi5zbmFwLGM9bi5zbmFwU3RhcnQsYT1uLnJvdW5kZWQsZj1uLmhhc01pbkVkZ2Uscz1uLmhhc01heEVkZ2UsbD1uLm1pbkJvdW5kLGQ9bi5tYXhCb3VuZCxtPW4uc2NyZWVuUmFuZ2UsZz1mP2UtMTplLHA9cz90KzE6dDtpZihvPGwpcmV0dXJuIGc7aWYoZDxvKXJldHVybiBwO3ZhciBoLHYseSxiLHgsdyxTLE89KHg9byx3PWwsUz1kLE1hdGgubWluKFMsTWF0aC5tYXgoeCx3KSktdyksVD1CcyhPL20qcitlLGcscCk7cmV0dXJuIHUmJmU8PVQmJlQ8PXQ/KGg9VCx2PWUseT10LGI9aSxjLmZvbGQoZnVuY3Rpb24oKXt2YXIgbj1oLXYsZT1NYXRoLnJvdW5kKG4vYikqYjtyZXR1cm4gQnModitlLHYtMSx5KzEpfSxmdW5jdGlvbihuKXt2YXIgZT0oaC1uKSViLHQ9TWF0aC5yb3VuZChlL2IpLHI9TWF0aC5mbG9vcigoaC1uKS9iKSxvPU1hdGguZmxvb3IoKHktbikvYiksaT1uK01hdGgubWluKG8scit0KSpiO3JldHVybiBNYXRoLm1heChuLGkpfSkpOmE/TWF0aC5yb3VuZChUKTpUfSxqcz1mdW5jdGlvbihuKXt2YXIgZT1uLm1pbix0PW4ubWF4LHI9bi5yYW5nZSxvPW4udmFsdWUsaT1uLmhhc01pbkVkZ2UsdT1uLmhhc01heEVkZ2UsYz1uLm1heEJvdW5kLGE9bi5tYXhPZmZzZXQsZj1uLmNlbnRlck1pbkVkZ2Uscz1uLmNlbnRlck1heEVkZ2U7cmV0dXJuIG88ZT9pPzA6Zjp0PG8/dT9jOnM6KG8tZSkvciphfSxIcz0ibGVmdCIsTnM9ZnVuY3Rpb24obil7cmV0dXJuIG4uZWxlbWVudCgpLmRvbSgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpfSxQcz1mdW5jdGlvbihuLGUpe3JldHVybiBuW2VdfSx6cz1mdW5jdGlvbihuKXt2YXIgZT1OcyhuKTtyZXR1cm4gUHMoZSxIcyl9LExzPWZ1bmN0aW9uKG4pe3ZhciBlPU5zKG4pO3JldHVybiBQcyhlLCJyaWdodCIpfSxHcz1mdW5jdGlvbihuKXt2YXIgZT1OcyhuKTtyZXR1cm4gUHMoZSwidG9wIil9LCRzPWZ1bmN0aW9uKG4pe3ZhciBlPU5zKG4pO3JldHVybiBQcyhlLCJib3R0b20iKX0sVXM9ZnVuY3Rpb24obil7dmFyIGU9TnMobik7cmV0dXJuIFBzKGUsIndpZHRoIil9LFdzPWZ1bmN0aW9uKG4pe3ZhciBlPU5zKG4pO3JldHVybiBQcyhlLCJoZWlnaHQiKX0sWHM9ZnVuY3Rpb24obixlLHQpe3JldHVybihuK2UpLzItdH0scXM9ZnVuY3Rpb24obixlKXt2YXIgdD1OcyhuKSxyPU5zKGUpLG89UHModCxIcyksaT1Qcyh0LCJyaWdodCIpLHU9UHMocixIcyk7cmV0dXJuIFhzKG8saSx1KX0sWXM9ZnVuY3Rpb24obixlKXt2YXIgdD1OcyhuKSxyPU5zKGUpLG89UHModCwidG9wIiksaT1Qcyh0LCJib3R0b20iKSx1PVBzKHIsInRvcCIpO3JldHVybiBYcyhvLGksdSl9LEtzPWZ1bmN0aW9uKG4sZSl7YmUobixvcygpLHt2YWx1ZTplfSl9LEpzPWZ1bmN0aW9uKG4pe3JldHVybnt4Onkobil9fSxRcz1mdW5jdGlvbihuLGUsdCl7dmFyIHI9e21pbjp1cyhlKSxtYXg6c3MoZSkscmFuZ2U6cHMoZSksdmFsdWU6dCxzdGVwOmJzKGUpLHNuYXA6eHMoZSksc25hcFN0YXJ0OndzKGUpLHJvdW5kZWQ6U3MoZSksaGFzTWluRWRnZTpUcyhlKSxoYXNNYXhFZGdlOmtzKGUpLG1pbkJvdW5kOnpzKG4pLG1heEJvdW5kOkxzKG4pLHNjcmVlblJhbmdlOlVzKG4pfTtyZXR1cm4gQXMocil9LFpzPWZ1bmN0aW9uKGkpe3JldHVybiBmdW5jdGlvbihuLGUpe3JldHVybiB0PW4sbz0oMDxpP1ZzOlJzKShNcyhyPWUpLngoKSx1cyhyKSxzcyhyKSxicyhyKSksS3ModCxKcyhvKSksTy5zb21lKG8pLm1hcChmdW5jdGlvbigpe3JldHVybiEwfSk7dmFyIHQscixvfX0sbmw9ZnVuY3Rpb24obixlLHQscixvLGkpe3ZhciB1LGMsYSxmLHMsbCxkLG0sZyxwPShjPWksYT10LGY9cixzPW8sbD1Vcyh1PWUpLGQ9Zi5iaW5kKGZ1bmN0aW9uKG4pe3JldHVybiBPLnNvbWUocXMobix1KSl9KS5nZXRPcigwKSxtPXMuYmluZChmdW5jdGlvbihuKXtyZXR1cm4gTy5zb21lKHFzKG4sdSkpfSkuZ2V0T3IobCksZz17bWluOnVzKGMpLG1heDpzcyhjKSxyYW5nZTpwcyhjKSx2YWx1ZTphLGhhc01pbkVkZ2U6VHMoYyksaGFzTWF4RWRnZTprcyhjKSxtaW5Cb3VuZDp6cyh1KSxtaW5PZmZzZXQ6MCxtYXhCb3VuZDpMcyh1KSxtYXhPZmZzZXQ6bCxjZW50ZXJNaW5FZGdlOmQsY2VudGVyTWF4RWRnZTptfSxqcyhnKSk7cmV0dXJuIHpzKGUpLXpzKG4pK3B9LGVsPVpzKC0xKSx0bD1acygxKSxybD1PLm5vbmUsb2w9Ty5ub25lLGlsPXsidG9wLWxlZnQiOk8ubm9uZSgpLHRvcDpPLm5vbmUoKSwidG9wLXJpZ2h0IjpPLm5vbmUoKSxyaWdodDpPLnNvbWUoZnVuY3Rpb24obixlKXtGcyhuLF9zKGRzKGUpKSl9KSwiYm90dG9tLXJpZ2h0IjpPLm5vbmUoKSxib3R0b206Ty5ub25lKCksImJvdHRvbS1sZWZ0IjpPLm5vbmUoKSxsZWZ0Ok8uc29tZShmdW5jdGlvbihuLGUpe0ZzKG4sX3MoYXMoZSkpKX0pfSx1bD0vKiAqL09iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLHNldFZhbHVlRnJvbTpmdW5jdGlvbihuLGUsdCl7dmFyIHI9UXMobixlLHQpLG89SnMocik7cmV0dXJuIEtzKG4sbykscn0sc2V0VG9NaW46ZnVuY3Rpb24obixlKXt2YXIgdD11cyhlKTtLcyhuLEpzKHQpKX0sc2V0VG9NYXg6ZnVuY3Rpb24obixlKXt2YXIgdD1zcyhlKTtLcyhuLEpzKHQpKX0sZmluZFZhbHVlT2ZPZmZzZXQ6UXMsZ2V0VmFsdWVGcm9tRXZlbnQ6ZnVuY3Rpb24obil7cmV0dXJuIGlzKG4pLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gbi5sZWZ0KCl9KX0sZmluZFBvc2l0aW9uT2ZWYWx1ZTpubCxzZXRQb3NpdGlvbkZyb21WYWx1ZTpmdW5jdGlvbihuLGUsdCxyKXt2YXIgbz1Ncyh0KSxpPW5sKG4sci5nZXRTcGVjdHJ1bShuKSxvLngoKSxyLmdldExlZnRFZGdlKG4pLHIuZ2V0UmlnaHRFZGdlKG4pLHQpLHU9ZXMoZS5lbGVtZW50KCkpLzI7TWkoZS5lbGVtZW50KCksImxlZnQiLGktdSsicHgiKX0sb25MZWZ0OmVsLG9uUmlnaHQ6dGwsb25VcDpybCxvbkRvd246b2wsZWRnZUFjdGlvbnM6aWx9KSxjbD1mdW5jdGlvbihuLGUpe2JlKG4sb3MoKSx7dmFsdWU6ZX0pfSxhbD1mdW5jdGlvbihuKXtyZXR1cm57eTp5KG4pfX0sZmw9ZnVuY3Rpb24obixlLHQpe3ZhciByPXttaW46Y3MoZSksbWF4OmxzKGUpLHJhbmdlOmhzKGUpLHZhbHVlOnQsc3RlcDpicyhlKSxzbmFwOnhzKGUpLHNuYXBTdGFydDp3cyhlKSxyb3VuZGVkOlNzKGUpLGhhc01pbkVkZ2U6RXMoZSksaGFzTWF4RWRnZTpDcyhlKSxtaW5Cb3VuZDpHcyhuKSxtYXhCb3VuZDokcyhuKSxzY3JlZW5SYW5nZTpXcyhuKX07cmV0dXJuIEFzKHIpfSxzbD1mdW5jdGlvbihpKXtyZXR1cm4gZnVuY3Rpb24obixlKXtyZXR1cm4gdD1uLG89KDA8aT9WczpScykoTXMocj1lKS55KCksY3MociksbHMociksYnMocikpLGNsKHQsYWwobykpLE8uc29tZShvKS5tYXAoZnVuY3Rpb24oKXtyZXR1cm4hMH0pO3ZhciB0LHIsb319LGxsPWZ1bmN0aW9uKG4sZSx0LHIsbyxpKXt2YXIgdSxjLGEsZixzLGwsZCxtLGcscD0oYz1pLGE9dCxmPXIscz1vLGw9V3ModT1lKSxkPWYuYmluZChmdW5jdGlvbihuKXtyZXR1cm4gTy5zb21lKFlzKG4sdSkpfSkuZ2V0T3IoMCksbT1zLmJpbmQoZnVuY3Rpb24obil7cmV0dXJuIE8uc29tZShZcyhuLHUpKX0pLmdldE9yKGwpLGc9e21pbjpjcyhjKSxtYXg6bHMoYykscmFuZ2U6aHMoYyksdmFsdWU6YSxoYXNNaW5FZGdlOkVzKGMpLGhhc01heEVkZ2U6Q3MoYyksbWluQm91bmQ6R3ModSksbWluT2Zmc2V0OjAsbWF4Qm91bmQ6JHModSksbWF4T2Zmc2V0OmwsY2VudGVyTWluRWRnZTpkLGNlbnRlck1heEVkZ2U6bX0sanMoZykpO3JldHVybiBHcyhlKS1HcyhuKStwfSxkbD1PLm5vbmUsbWw9Ty5ub25lLGdsPXNsKC0xKSxwbD1zbCgxKSxobD17InRvcC1sZWZ0IjpPLm5vbmUoKSx0b3A6Ty5zb21lKGZ1bmN0aW9uKG4sZSl7RnMobixEcyhmcyhlKSkpfSksInRvcC1yaWdodCI6Ty5ub25lKCkscmlnaHQ6Ty5ub25lKCksImJvdHRvbS1yaWdodCI6Ty5ub25lKCksYm90dG9tOk8uc29tZShmdW5jdGlvbihuLGUpe0ZzKG4sRHMobXMoZSkpKX0pLCJib3R0b20tbGVmdCI6Ty5ub25lKCksbGVmdDpPLm5vbmUoKX0sdmw9LyogKi9PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxzZXRWYWx1ZUZyb206ZnVuY3Rpb24obixlLHQpe3ZhciByPWZsKG4sZSx0KSxvPWFsKHIpO3JldHVybiBjbChuLG8pLHJ9LHNldFRvTWluOmZ1bmN0aW9uKG4sZSl7dmFyIHQ9Y3MoZSk7Y2wobixhbCh0KSl9LHNldFRvTWF4OmZ1bmN0aW9uKG4sZSl7dmFyIHQ9bHMoZSk7Y2wobixhbCh0KSl9LGZpbmRWYWx1ZU9mT2Zmc2V0OmZsLGdldFZhbHVlRnJvbUV2ZW50OmZ1bmN0aW9uKG4pe3JldHVybiBpcyhuKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIG4udG9wKCl9KX0sZmluZFBvc2l0aW9uT2ZWYWx1ZTpsbCxzZXRQb3NpdGlvbkZyb21WYWx1ZTpmdW5jdGlvbihuLGUsdCxyKXt2YXIgbz1Ncyh0KSxpPWxsKG4sci5nZXRTcGVjdHJ1bShuKSxvLnkoKSxyLmdldFRvcEVkZ2Uobiksci5nZXRCb3R0b21FZGdlKG4pLHQpLHU9TmkoZS5lbGVtZW50KCkpLzI7TWkoZS5lbGVtZW50KCksInRvcCIsaS11KyJweCIpfSxvbkxlZnQ6ZGwsb25SaWdodDptbCxvblVwOmdsLG9uRG93bjpwbCxlZGdlQWN0aW9uczpobH0pLHlsPWZ1bmN0aW9uKG4sZSl7YmUobixvcygpLHt2YWx1ZTplfSl9LGJsPWZ1bmN0aW9uKG4sZSl7cmV0dXJue3g6eShuKSx5OnkoZSl9fSx4bD1mdW5jdGlvbihhLGYpe3JldHVybiBmdW5jdGlvbihuLGUpe3JldHVybiByPW4sbz1lLGk9MDxhP1ZzOlJzLHU9KHQ9Zik/TXMobykueCgpOmkoTXMobykueCgpLHVzKG8pLHNzKG8pLGJzKG8pKSxjPXQ/aShNcyhvKS55KCksY3MobyksbHMobyksYnMobykpOk1zKG8pLnkoKSx5bChyLGJsKHUsYykpLE8uc29tZSh1KS5tYXAoZnVuY3Rpb24oKXtyZXR1cm4hMH0pO3ZhciB0LHIsbyxpLHUsY319LHdsPXhsKC0xLCExKSxTbD14bCgxLCExKSxPbD14bCgtMSwhMCksVGw9eGwoMSwhMCksa2w9eyJ0b3AtbGVmdCI6Ty5zb21lKGZ1bmN0aW9uKG4sZSl7RnMobixJcyhhcyhlKSxmcyhlKSkpfSksdG9wOk8uc29tZShmdW5jdGlvbihuLGUpe0ZzKG4sSXModnMoZSksZnMoZSkpKX0pLCJ0b3AtcmlnaHQiOk8uc29tZShmdW5jdGlvbihuLGUpe0ZzKG4sSXMoZHMoZSksZnMoZSkpKX0pLHJpZ2h0Ok8uc29tZShmdW5jdGlvbihuLGUpe0ZzKG4sSXMoZHMoZSkseXMoZSkpKX0pLCJib3R0b20tcmlnaHQiOk8uc29tZShmdW5jdGlvbihuLGUpe0ZzKG4sSXMoZHMoZSksbXMoZSkpKX0pLGJvdHRvbTpPLnNvbWUoZnVuY3Rpb24obixlKXtGcyhuLElzKHZzKGUpLG1zKGUpKSl9KSwiYm90dG9tLWxlZnQiOk8uc29tZShmdW5jdGlvbihuLGUpe0ZzKG4sSXMoYXMoZSksbXMoZSkpKX0pLGxlZnQ6Ty5zb21lKGZ1bmN0aW9uKG4sZSl7RnMobixJcyhhcyhlKSx5cyhlKSkpfSl9LEVsPS8qICovT2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsc2V0VmFsdWVGcm9tOmZ1bmN0aW9uKG4sZSx0KXt2YXIgcj1RcyhuLGUsdC5sZWZ0KCkpLG89ZmwobixlLHQudG9wKCkpLGk9YmwocixvKTtyZXR1cm4geWwobixpKSxpfSxzZXRUb01pbjpmdW5jdGlvbihuLGUpe3ZhciB0PXVzKGUpLHI9Y3MoZSk7eWwobixibCh0LHIpKX0sc2V0VG9NYXg6ZnVuY3Rpb24obixlKXt2YXIgdD1zcyhlKSxyPWxzKGUpO3lsKG4sYmwodCxyKSl9LGdldFZhbHVlRnJvbUV2ZW50OmZ1bmN0aW9uKG4pe3JldHVybiBpcyhuKX0sc2V0UG9zaXRpb25Gcm9tVmFsdWU6ZnVuY3Rpb24obixlLHQscil7dmFyIG89TXModCksaT1ubChuLHIuZ2V0U3BlY3RydW0obiksby54KCksci5nZXRMZWZ0RWRnZShuKSxyLmdldFJpZ2h0RWRnZShuKSx0KSx1PWxsKG4sci5nZXRTcGVjdHJ1bShuKSxvLnkoKSxyLmdldFRvcEVkZ2Uobiksci5nZXRCb3R0b21FZGdlKG4pLHQpLGM9ZXMoZS5lbGVtZW50KCkpLzIsYT1OaShlLmVsZW1lbnQoKSkvMjtNaShlLmVsZW1lbnQoKSwibGVmdCIsaS1jKyJweCIpLE1pKGUuZWxlbWVudCgpLCJ0b3AiLHUtYSsicHgiKX0sb25MZWZ0OndsLG9uUmlnaHQ6U2wsb25VcDpPbCxvbkRvd246VGwsZWRnZUFjdGlvbnM6a2x9KSxDbD1baHIoInN0ZXBTaXplIiwxKSxocigib25DaGFuZ2UiLHcpLGhyKCJvbkNob29zZSIsdyksaHIoIm9uSW5pdCIsdyksaHIoIm9uRHJhZ1N0YXJ0Iix3KSxocigib25EcmFnRW5kIix3KSxocigic25hcFRvR3JpZCIsITEpLGhyKCJyb3VuZGVkIiwhMCksZHIoInNuYXBTdGFydCIpLHNyKCJtb2RlbCIsdXIoIm1vZGUiLHt4OltocigibWluWCIsMCksaHIoIm1heFgiLDEwMCkseXIoInZhbHVlIixmdW5jdGlvbihuKXtyZXR1cm4gaG8obi5tb2RlLm1pblgpfSksZnIoImdldEluaXRpYWxWYWx1ZSIpLFFvKCJtYW5hZ2VyIix1bCldLHk6W2hyKCJtaW5ZIiwwKSxocigibWF4WSIsMTAwKSx5cigidmFsdWUiLGZ1bmN0aW9uKG4pe3JldHVybiBobyhuLm1vZGUubWluWSl9KSxmcigiZ2V0SW5pdGlhbFZhbHVlIiksUW8oIm1hbmFnZXIiLHZsKV0seHk6W2hyKCJtaW5YIiwwKSxocigibWF4WCIsMTAwKSxocigibWluWSIsMCksaHIoIm1heFkiLDEwMCkseXIoInZhbHVlIixmdW5jdGlvbihuKXtyZXR1cm4gaG8oe3g6eShuLm1vZGUubWluWCkseTp5KG4ubW9kZS5taW5ZKX0pfSksZnIoImdldEluaXRpYWxWYWx1ZSIpLFFvKCJtYW5hZ2VyIixFbCldfSkpLGxhKCJzbGlkZXJCZWhhdmlvdXJzIixbc2EsUWZdKSx5cigibW91c2VJc0Rvd24iLGZ1bmN0aW9uKCl7cmV0dXJuIGhvKCExKX0pXSxNbD15KCJtb3VzZS5yZWxlYXNlZCIpLF9sPXhmKHtuYW1lOiJTbGlkZXIiLGNvbmZpZ0ZpZWxkczpDbCxwYXJ0RmllbGRzOk5mLGZhY3Rvcnk6ZnVuY3Rpb24oaSxuLGUsdCl7dmFyIHIsdT1mdW5jdGlvbihuKXtyZXR1cm4gSmEobixpLCJ0aHVtYiIpfSxjPWZ1bmN0aW9uKG4pe3JldHVybiBKYShuLGksInNwZWN0cnVtIil9LG89ZnVuY3Rpb24obil7cmV0dXJuIEthKG4saSwibGVmdC1lZGdlIil9LGE9ZnVuY3Rpb24obil7cmV0dXJuIEthKG4saSwicmlnaHQtZWRnZSIpfSxmPWZ1bmN0aW9uKG4pe3JldHVybiBLYShuLGksInRvcC1lZGdlIil9LHM9ZnVuY3Rpb24obil7cmV0dXJuIEthKG4saSwiYm90dG9tLWVkZ2UiKX0sbD1pLm1vZGVsLGQ9bC5tYW5hZ2VyLG09ZnVuY3Rpb24obixlKXtkLnNldFBvc2l0aW9uRnJvbVZhbHVlKG4sZSxpLHtnZXRMZWZ0RWRnZTpvLGdldFJpZ2h0RWRnZTphLGdldFRvcEVkZ2U6ZixnZXRCb3R0b21FZGdlOnMsZ2V0U3BlY3RydW06Y30pfSxnPWZ1bmN0aW9uKG4sZSl7bC52YWx1ZS5zZXQoZSk7dmFyIHQ9dShuKTtyZXR1cm4gbShuLHQpLGkub25DaGFuZ2Uobix0LGUpLE8uc29tZSghMCl9LHA9ZnVuY3Rpb24odCl7dmFyIG49aS5tb3VzZUlzRG93bi5nZXQoKTtpLm1vdXNlSXNEb3duLnNldCghMSksbiYmS2EodCxpLCJ0aHVtYiIpLmVhY2goZnVuY3Rpb24obil7dmFyIGU9bC52YWx1ZS5nZXQoKTtpLm9uQ2hvb3NlKHQsbixlKX0pfSxoPWZ1bmN0aW9uKG4sZSl7ZS5zdG9wKCksaS5tb3VzZUlzRG93bi5zZXQoITApLGkub25EcmFnU3RhcnQobix1KG4pKX0sdj1mdW5jdGlvbihuLGUpe2Uuc3RvcCgpLGkub25EcmFnRW5kKG4sdShuKSkscChuKX07cmV0dXJue3VpZDppLnVpZCxkb206aS5kb20sY29tcG9uZW50czpuLGJlaGF2aW91cnM6bWEoaS5zbGlkZXJCZWhhdmlvdXJzLFtzYS5jb25maWcoe21vZGU6InNwZWNpYWwiLGZvY3VzSW46ZnVuY3Rpb24obil7cmV0dXJuIEthKG4saSwic3BlY3RydW0iKS5tYXAoc2EuZm9jdXNJbikubWFwKHkoITApKX19KSxRZi5jb25maWcoe3N0b3JlOnttb2RlOiJtYW51YWwiLGdldFZhbHVlOmZ1bmN0aW9uKG4pe3JldHVybiBsLnZhbHVlLmdldCgpfX19KSx0aS5jb25maWcoe2NoYW5uZWxzOigocj17fSlbTWwoKV09e29uUmVjZWl2ZTpwfSxyKX0pXSksZXZlbnRzOlRyKFtFcihvcygpLGZ1bmN0aW9uKG4sZSl7ZyhuLGUuZXZlbnQoKS52YWx1ZSgpKX0pLEZyKGZ1bmN0aW9uKG4sZSl7dmFyIHQ9bC5nZXRJbml0aWFsVmFsdWUoKTtsLnZhbHVlLnNldCh0KTt2YXIgcj11KG4pO20obixyKTt2YXIgbz1jKG4pO2kub25Jbml0KG4scixvLGwudmFsdWUuZ2V0KCkpfSksRXIoR24oKSxoKSxFcihVbigpLHYpLEVyKFduKCksaCksRXIocW4oKSx2KV0pLGFwaXM6e3Jlc2V0VG9NaW46ZnVuY3Rpb24obil7ZC5zZXRUb01pbihuLGkpfSxyZXNldFRvTWF4OmZ1bmN0aW9uKG4pe2Quc2V0VG9NYXgobixpKX0sY2hhbmdlVmFsdWU6ZyxyZWZyZXNoOm19LGRvbU1vZGlmaWNhdGlvbjp7c3R5bGVzOntwb3NpdGlvbjoicmVsYXRpdmUifX19fSxhcGlzOntyZXNldFRvTWluOmZ1bmN0aW9uKG4sZSl7bi5yZXNldFRvTWluKGUpfSxyZXNldFRvTWF4OmZ1bmN0aW9uKG4sZSl7bi5yZXNldFRvTWF4KGUpfSxyZWZyZXNoOmZ1bmN0aW9uKG4sZSl7bi5yZWZyZXNoKGUpfX19KSxEbD1mdW5jdGlvbihlLHQscixuKXtyZXR1cm4gX2YodCxmdW5jdGlvbigpe3ZhciBuPXIoKTtlLnNldENvbnRleHRUb29sYmFyKFt7bGFiZWw6dCsiIGdyb3VwIixpdGVtczpufV0pfSx7fSxuKX0sSWw9ZnVuY3Rpb24obil7cmV0dXJuWyhvPW4saT1mdW5jdGlvbihuKXtyZXR1cm4gbjwwPyJibGFjayI6MzYwPG4/IndoaXRlIjoiaHNsKCIrbisiLCAxMDAlLCA1MCUpIn0sX2wuc2tldGNoKHtkb206VGYoJzxkaXYgY2xhc3M9IiR7cHJlZml4fS1zbGlkZXIgJHtwcmVmaXh9LWh1ZS1zbGlkZXItY29udGFpbmVyIj48L2Rpdj4nKSxjb21wb25lbnRzOltfbC5wYXJ0cygpWyJsZWZ0LWVkZ2UiXShrZignPGRpdiBjbGFzcz0iJHtwcmVmaXh9LWh1ZS1zbGlkZXItYmxhY2siPjwvZGl2PicpKSxfbC5wYXJ0cygpLnNwZWN0cnVtKHtkb206VGYoJzxkaXYgY2xhc3M9IiR7cHJlZml4fS1zbGlkZXItZ3JhZGllbnQtY29udGFpbmVyIj48L2Rpdj4nKSxjb21wb25lbnRzOltrZignPGRpdiBjbGFzcz0iJHtwcmVmaXh9LXNsaWRlci1ncmFkaWVudCI+PC9kaXY+JyldLGJlaGF2aW91cnM6VXIoW2dpLmNvbmZpZyh7dG9nZ2xlQ2xhc3M6YmkoInRodW1iLWFjdGl2ZSIpfSldKX0pLF9sLnBhcnRzKClbInJpZ2h0LWVkZ2UiXShrZignPGRpdiBjbGFzcz0iJHtwcmVmaXh9LWh1ZS1zbGlkZXItd2hpdGUiPjwvZGl2PicpKSxfbC5wYXJ0cygpLnRodW1iKHtkb206VGYoJzxkaXYgY2xhc3M9IiR7cHJlZml4fS1zbGlkZXItdGh1bWIiPjwvZGl2PicpLGJlaGF2aW91cnM6VXIoW2dpLmNvbmZpZyh7dG9nZ2xlQ2xhc3M6YmkoInRodW1iLWFjdGl2ZSIpfSldKX0pXSxvbkNoYW5nZTpmdW5jdGlvbihuLGUsdCl7dmFyIHI9aSh0LngoKSk7TWkoZS5lbGVtZW50KCksImJhY2tncm91bmQtY29sb3IiLHIpLG8ub25DaGFuZ2UobixlLHIpfSxvbkRyYWdTdGFydDpmdW5jdGlvbihuLGUpe2dpLm9uKGUpfSxvbkRyYWdFbmQ6ZnVuY3Rpb24obixlKXtnaS5vZmYoZSl9LG9uSW5pdDpmdW5jdGlvbihuLGUsdCxyKXt2YXIgbz1pKHIueCgpKTtNaShlLmVsZW1lbnQoKSwiYmFja2dyb3VuZC1jb2xvciIsbyl9LHN0ZXBTaXplOjEwLG1vZGVsOnttb2RlOiJ4IixtaW5YOjAsbWF4WDozNjAsZ2V0SW5pdGlhbFZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue3g6ZnVuY3Rpb24oKXtyZXR1cm4gby5nZXRJbml0aWFsVmFsdWUoKX19fX0sc2xpZGVyQmVoYXZpb3VyczpVcihbaGkoX2wucmVmcmVzaCldKX0pKV07dmFyIG8saX0sRmw9VXQoW2ZyKCJnZXRJbml0aWFsVmFsdWUiKSxmcigib25DaGFuZ2UiKSxmcigiY2F0ZWdvcnkiKSxmcigic2l6ZXMiKV0pLFJsPWZ1bmN0aW9uKG4pe3ZhciBpPW9yKCJTaXplU2xpZGVyIixGbCxuKTtyZXR1cm4gX2wuc2tldGNoKHtkb206e3RhZzoiZGl2IixjbGFzc2VzOltiaSgic2xpZGVyLSIraS5jYXRlZ29yeSsiLXNpemUtY29udGFpbmVyIiksYmkoInNsaWRlciIpLGJpKCJzbGlkZXItc2l6ZS1jb250YWluZXIiKV19LG9uQ2hhbmdlOmZ1bmN0aW9uKG4sZSx0KXt2YXIgcixvPXQueCgpOzA8PShyPW8pJiZyPGkuc2l6ZXMubGVuZ3RoJiZpLm9uQ2hhbmdlKG8pfSxvbkRyYWdTdGFydDpmdW5jdGlvbihuLGUpe2dpLm9uKGUpfSxvbkRyYWdFbmQ6ZnVuY3Rpb24obixlKXtnaS5vZmYoZSl9LG1vZGVsOnttb2RlOiJ4IixtaW5YOjAsbWF4WDppLnNpemVzLmxlbmd0aC0xLGdldEluaXRpYWxWYWx1ZTpmdW5jdGlvbigpe3JldHVybnt4OmZ1bmN0aW9uKCl7cmV0dXJuIGkuZ2V0SW5pdGlhbFZhbHVlKCl9fX19LHN0ZXBTaXplOjEsc25hcFRvR3JpZDohMCxzbGlkZXJCZWhhdmlvdXJzOlVyKFtoaShfbC5yZWZyZXNoKV0pLGNvbXBvbmVudHM6W19sLnBhcnRzKCkuc3BlY3RydW0oe2RvbTpUZignPGRpdiBjbGFzcz0iJHtwcmVmaXh9LXNsaWRlci1zaXplLWNvbnRhaW5lciI+PC9kaXY+JyksY29tcG9uZW50czpba2YoJzxkaXYgY2xhc3M9IiR7cHJlZml4fS1zbGlkZXItc2l6ZS1saW5lIj48L2Rpdj4nKV19KSxfbC5wYXJ0cygpLnRodW1iKHtkb206VGYoJzxkaXYgY2xhc3M9IiR7cHJlZml4fS1zbGlkZXItdGh1bWIiPjwvZGl2PicpLGJlaGF2aW91cnM6VXIoW2dpLmNvbmZpZyh7dG9nZ2xlQ2xhc3M6YmkoInRodW1iLWFjdGl2ZSIpfSldKX0pXX0pfSxWbD1bIjlweCIsIjEwcHgiLCIxMXB4IiwiMTJweCIsIjE0cHgiLCIxNnB4IiwiMThweCIsIjIwcHgiLCIyNHB4IiwiMzJweCIsIjM2cHgiXSxCbD1mdW5jdGlvbihlLG4pe3JldHVybihDZShuKT9PLnNvbWUobik6SGUobikuZmlsdGVyKENlKSkubWFwKGZ1bmN0aW9uKG4pe3JldHVybiB2byhmdW5jdGlvbihuLGUpe3JldHVybiBlKG4pfSx4byxuLGZ1bmN0aW9uKG4pe3JldHVybiBGaShuLCJmb250LXNpemUiKS5pc1NvbWUoKX0sZSkuYmluZChmdW5jdGlvbihuKXtyZXR1cm4gRmkobiwiZm9udC1zaXplIil9KS5nZXRPclRodW5rKGZ1bmN0aW9uKCl7cmV0dXJuIERpKG4sImZvbnQtc2l6ZSIpfSl9KS5nZXRPcigiIil9LEFsPWZ1bmN0aW9uKG4pe3ZhciBlPW4uc2VsZWN0aW9uLmdldFN0YXJ0KCksdD1UZS5mcm9tRG9tKGUpLHI9VGUuZnJvbURvbShuLmdldEJvZHkoKSksbz1CbChmdW5jdGlvbihuKXtyZXR1cm4gQWUocixuKX0sdCk7cmV0dXJuIGJuKFZsLGZ1bmN0aW9uKG4pe3JldHVybiBvPT09bn0pLmdldE9yKCJtZWRpdW0iKX0samw9ZnVuY3Rpb24obil7dmFyIGUsdD1BbChuKTtyZXR1cm4gZT10LHhuKFZsLGZ1bmN0aW9uKG4pe3JldHVybiBuPT09ZX0pLmdldE9yKDIpfSxIbD1mdW5jdGlvbihyLG4pe3ZhciBlO2U9bixPLmZyb20oVmxbZV0pLmVhY2goZnVuY3Rpb24obil7dmFyIGUsdDt0PW4sQWwoZT1yKSE9PXQmJmUuZXhlY0NvbW1hbmQoImZvbnRTaXplIiwhMSx0KX0pfSxObD15KFZsKSgpLFBsPWZ1bmN0aW9uKG4pe3JldHVybltrZignPHNwYW4gY2xhc3M9IiR7cHJlZml4fS10b29sYmFyLWJ1dHRvbiAke3ByZWZpeH0taWNvbi1zbWFsbC1mb250ICR7cHJlZml4fS1pY29uIj48L3NwYW4+JyksUmwoe29uQ2hhbmdlOihlPW4pLm9uQ2hhbmdlLHNpemVzOk5sLGNhdGVnb3J5OiJmb250IixnZXRJbml0aWFsVmFsdWU6ZS5nZXRJbml0aWFsVmFsdWV9KSxrZignPHNwYW4gY2xhc3M9IiR7cHJlZml4fS10b29sYmFyLWJ1dHRvbiAke3ByZWZpeH0taWNvbi1sYXJnZS1mb250ICR7cHJlZml4fS1pY29uIj48L3NwYW4+JyldO3ZhciBlfSx6bD1mdW5jdGlvbihuKXt2YXIgZT1mdW5jdGlvbiB0KG4pe3JldHVybiBuLnVpZCE9PXVuZGVmaW5lZH0obikmJlIobiwidWlkIik/bi51aWQ6c2YoIm1lbWVudG8iKTtyZXR1cm57Z2V0OmZ1bmN0aW9uKG4pe3JldHVybiBuLmdldFN5c3RlbSgpLmdldEJ5VWlkKGUpLmdldE9yRGllKCl9LGdldE9wdDpmdW5jdGlvbihuKXtyZXR1cm4gbi5nZXRTeXN0ZW0oKS5nZXRCeVVpZChlKS50b09wdGlvbigpfSxhc1NwZWM6ZnVuY3Rpb24oKXtyZXR1cm4geCh4KHt9LG4pLHt1aWQ6ZX0pfX19LExsPXdpbmRvdy5Qcm9taXNlP3dpbmRvdy5Qcm9taXNlOihwZj0oZ2Y9ZnVuY3Rpb24obil7aWYoIm9iamVjdCIhPXR5cGVvZiB0aGlzKXRocm93IG5ldyBUeXBlRXJyb3IoIlByb21pc2VzIG11c3QgYmUgY29uc3RydWN0ZWQgdmlhIG5ldyIpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuKXRocm93IG5ldyBUeXBlRXJyb3IoIm5vdCBhIGZ1bmN0aW9uIik7dGhpcy5fc3RhdGU9bnVsbCx0aGlzLl92YWx1ZT1udWxsLHRoaXMuX2RlZmVycmVkcz1bXSxZbChuLEdsKFVsLHRoaXMpLEdsKFdsLHRoaXMpKX0pLmltbWVkaWF0ZUZufHwiZnVuY3Rpb24iPT10eXBlb2Ygd2luZG93LnNldEltbWVkaWF0ZSYmd2luZG93LnNldEltbWVkaWF0ZXx8ZnVuY3Rpb24obil7di5zZXRUaW1lb3V0KG4sMSl9LGhmPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKG4pe3JldHVybiJbb2JqZWN0IEFycmF5XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobil9LGdmLnByb3RvdHlwZVsiY2F0Y2giXT1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy50aGVuKG51bGwsbil9LGdmLnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKHQscil7dmFyIG89dGhpcztyZXR1cm4gbmV3IGdmKGZ1bmN0aW9uKG4sZSl7JGwuY2FsbChvLG5ldyBxbCh0LHIsbixlKSl9KX0sZ2YuYWxsPWZ1bmN0aW9uKCl7Zm9yKHZhciBuPVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKW5bZV09YXJndW1lbnRzW2VdO3ZhciBhPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKDE9PT1uLmxlbmd0aCYmaGYoblswXSk/blswXTpuKTtyZXR1cm4gbmV3IGdmKGZ1bmN0aW9uKG8saSl7aWYoMD09PWEubGVuZ3RoKXJldHVybiBvKFtdKTt2YXIgdT1hLmxlbmd0aDtmdW5jdGlvbiBjKGUsbil7dHJ5e2lmKG4mJigib2JqZWN0Ij09dHlwZW9mIG58fCJmdW5jdGlvbiI9PXR5cGVvZiBuKSl7dmFyIHQ9bi50aGVuO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0KXJldHVybiB2b2lkIHQuY2FsbChuLGZ1bmN0aW9uKG4pe2MoZSxuKX0saSl9YVtlXT1uLDA9PS0tdSYmbyhhKX1jYXRjaChyKXtpKHIpfX1mb3IodmFyIG49MDtuPGEubGVuZ3RoO24rKyljKG4sYVtuXSl9KX0sZ2YucmVzb2x2ZT1mdW5jdGlvbihlKXtyZXR1cm4gZSYmIm9iamVjdCI9PXR5cGVvZiBlJiZlLmNvbnN0cnVjdG9yPT09Z2Y/ZTpuZXcgZ2YoZnVuY3Rpb24obil7bihlKX0pfSxnZi5yZWplY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBnZihmdW5jdGlvbihuLGUpe2UodCl9KX0sZ2YucmFjZT1mdW5jdGlvbihvKXtyZXR1cm4gbmV3IGdmKGZ1bmN0aW9uKG4sZSl7Zm9yKHZhciB0PTAscj1vO3Q8ci5sZW5ndGg7dCsrKXJbdF0udGhlbihuLGUpfSl9LGdmKTtmdW5jdGlvbiBHbChuLGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBuLmFwcGx5KGUsYXJndW1lbnRzKX19ZnVuY3Rpb24gJGwocil7dmFyIG89dGhpcztudWxsIT09dGhpcy5fc3RhdGU/cGYoZnVuY3Rpb24oKXt2YXIgbj1vLl9zdGF0ZT9yLm9uRnVsZmlsbGVkOnIub25SZWplY3RlZDtpZihudWxsIT09bil7dmFyIGU7dHJ5e2U9bihvLl92YWx1ZSl9Y2F0Y2godCl7cmV0dXJuIHZvaWQgci5yZWplY3QodCl9ci5yZXNvbHZlKGUpfWVsc2Uoby5fc3RhdGU/ci5yZXNvbHZlOnIucmVqZWN0KShvLl92YWx1ZSl9KTp0aGlzLl9kZWZlcnJlZHMucHVzaChyKX1mdW5jdGlvbiBVbChuKXt0cnl7aWYobj09PXRoaXMpdGhyb3cgbmV3IFR5cGVFcnJvcigiQSBwcm9taXNlIGNhbm5vdCBiZSByZXNvbHZlZCB3aXRoIGl0c2VsZi4iKTtpZihuJiYoIm9iamVjdCI9PXR5cGVvZiBufHwiZnVuY3Rpb24iPT10eXBlb2Ygbikpe3ZhciBlPW4udGhlbjtpZigiZnVuY3Rpb24iPT10eXBlb2YgZSlyZXR1cm4gdm9pZCBZbChHbChlLG4pLEdsKFVsLHRoaXMpLEdsKFdsLHRoaXMpKX10aGlzLl9zdGF0ZT0hMCx0aGlzLl92YWx1ZT1uLFhsLmNhbGwodGhpcyl9Y2F0Y2godCl7V2wuY2FsbCh0aGlzLHQpfX1mdW5jdGlvbiBXbChuKXt0aGlzLl9zdGF0ZT0hMSx0aGlzLl92YWx1ZT1uLFhsLmNhbGwodGhpcyl9ZnVuY3Rpb24gWGwoKXtmb3IodmFyIG49MCxlPXRoaXMuX2RlZmVycmVkcztuPGUubGVuZ3RoO24rKyl7dmFyIHQ9ZVtuXTskbC5jYWxsKHRoaXMsdCl9dGhpcy5fZGVmZXJyZWRzPVtdfWZ1bmN0aW9uIHFsKG4sZSx0LHIpe3RoaXMub25GdWxmaWxsZWQ9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpudWxsLHRoaXMub25SZWplY3RlZD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOm51bGwsdGhpcy5yZXNvbHZlPXQsdGhpcy5yZWplY3Q9cn1mdW5jdGlvbiBZbChuLGUsdCl7dmFyIHI9ITE7dHJ5e24oZnVuY3Rpb24obil7cnx8KHI9ITAsZShuKSl9LGZ1bmN0aW9uKG4pe3J8fChyPSEwLHQobikpfSl9Y2F0Y2gobyl7aWYocilyZXR1cm47cj0hMCx0KG8pfX1mdW5jdGlvbiBLbChuKXtyZXR1cm4gZnVuY3Rpb24gZSh0KXtyZXR1cm4gbmV3IExsKGZ1bmN0aW9uKG4pe3ZhciBlPW5ldyB2LkZpbGVSZWFkZXI7ZS5vbmxvYWRlbmQ9ZnVuY3Rpb24oKXtuKGUucmVzdWx0KX0sZS5yZWFkQXNEYXRhVVJMKHQpfSl9KG4pLnRoZW4oZnVuY3Rpb24obil7cmV0dXJuIG4uc3BsaXQoIiwiKVsxXX0pfXZhciBKbD1mdW5jdGlvbihvLGkpe0tsKGkpLnRoZW4oZnVuY3Rpb24ocil7by51bmRvTWFuYWdlci50cmFuc2FjdChmdW5jdGlvbigpe3ZhciBuPW8uZWRpdG9yVXBsb2FkLmJsb2JDYWNoZSxlPW4uY3JlYXRlKEVhKCJtY2V1IiksaSxyKTtuLmFkZChlKTt2YXIgdD1vLmRvbS5jcmVhdGVIVE1MKCJpbWciLHtzcmM6ZS5ibG9iVXJpKCl9KTtvLmluc2VydENvbnRlbnQodCl9KX0pfSxRbD1mdW5jdGlvbihvKXt2YXIgZT16bCh7ZG9tOnt0YWc6ImlucHV0IixhdHRyaWJ1dGVzOnthY2NlcHQ6ImltYWdlLyoiLHR5cGU6ImZpbGUiLHRpdGxlOiIifSxzdHlsZXM6e3Zpc2liaWxpdHk6ImhpZGRlbiIscG9zaXRpb246ImFic29sdXRlIn19LGV2ZW50czpUcihbSXIobmUoKSksRXIoWm4oKSxmdW5jdGlvbihuLGUpe3ZhciB0LHI7dD1lLmV2ZW50KCkscj10LnJhdygpLnRhcmdldC5maWxlc3x8dC5yYXcoKS5kYXRhVHJhbnNmZXIuZmlsZXMsTy5mcm9tKHJbMF0pLmVhY2goZnVuY3Rpb24obil7SmwobyxuKX0pfSldKX0pO3JldHVybiB3Zi5za2V0Y2goe2RvbTpNZigiaW1hZ2UiLG8pLGNvbXBvbmVudHM6W2UuYXNTcGVjKCldLGFjdGlvbjpmdW5jdGlvbihuKXtlLmdldChuKS5lbGVtZW50KCkuZG9tKCkuY2xpY2soKX19KX0sWmw9ZnVuY3Rpb24obil7cmV0dXJuIG4uZG9tKCkudGV4dENvbnRlbnR9LG5kPWZ1bmN0aW9uKG4pe3JldHVybiAwPG4ubGVuZ3RofSxlZD1mdW5jdGlvbihuKXtyZXR1cm4gbj09PXVuZGVmaW5lZHx8bnVsbD09PW4/IiI6bn0sdGQ9ZnVuY3Rpb24obil7cmV0dXJuIGlkKG4pLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm57dXJsOiIiLHRleHQ6bi5zZWxlY3Rpb24uZ2V0Q29udGVudCh7Zm9ybWF0OiJ0ZXh0In0pLHRpdGxlOiIiLHRhcmdldDoiIixsaW5rOk8ubm9uZSgpfX0sZnVuY3Rpb24obil7cmV0dXJuIHQ9WmwoZT1uKSxyPVpyKGUsImhyZWYiKSxvPVpyKGUsInRpdGxlIiksaT1acihlLCJ0YXJnZXQiKSx7dXJsOmVkKHIpLHRleHQ6dCE9PXI/ZWQodCk6IiIsdGl0bGU6ZWQobyksdGFyZ2V0OmVkKGkpLGxpbms6Ty5zb21lKGUpfTt2YXIgZSx0LHIsbyxpfSl9LHJkPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbi50ZXh0LnRvT3B0aW9uKCkuZmlsdGVyKG5kKS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIFpyKG49ZSwiaHJlZiIpPT09Wmwobik/Ty5zb21lKHQpOk8ubm9uZSgpO3ZhciBufSxPLnNvbWUpfSxvZD1mdW5jdGlvbihvLGkpe2kudXJsLnRvT3B0aW9uKCkuZmlsdGVyKG5kKS5mb2xkKGZ1bmN0aW9uKCl7dmFyIGU7ZT1vLGkubGluay5iaW5kKGIpLmVhY2goZnVuY3Rpb24obil7ZS5leGVjQ29tbWFuZCgidW5saW5rIil9KX0sZnVuY3Rpb24oZSl7dmFyIG4sdCxyPShuPWksKHQ9e30pLmhyZWY9ZSxuLnRpdGxlLnRvT3B0aW9uKCkuZmlsdGVyKG5kKS5lYWNoKGZ1bmN0aW9uKG4pe3QudGl0bGU9bn0pLG4udGFyZ2V0LnRvT3B0aW9uKCkuZmlsdGVyKG5kKS5lYWNoKGZ1bmN0aW9uKG4pe3QudGFyZ2V0PW59KSx0KTtpLmxpbmsuYmluZChiKS5mb2xkKGZ1bmN0aW9uKCl7dmFyIG49aS50ZXh0LnRvT3B0aW9uKCkuZmlsdGVyKG5kKS5nZXRPcihlKTtvLmluc2VydENvbnRlbnQoby5kb20uY3JlYXRlSFRNTCgiYSIscixvLmRvbS5lbmNvZGUobikpKX0sZnVuY3Rpb24odCl7dmFyIG49cmQodCxlLGkpO1FyKHQsciksbi5lYWNoKGZ1bmN0aW9uKG4pe3ZhciBlO2U9bix0LmRvbSgpLnRleHRDb250ZW50PWV9KX0pfSl9LGlkPWZ1bmN0aW9uKG4pe3ZhciBlPVRlLmZyb21Eb20obi5zZWxlY3Rpb24uZ2V0U3RhcnQoKSk7cmV0dXJuIFdpKGUsImEiKX0sdWQ9TG4oKSxjZD1mdW5jdGlvbihuLGUpe3ZhciB0PWUuc2VsZWN0aW9uLmdldFJuZygpO24oKSxlLnNlbGVjdGlvbi5zZXRSbmcodCl9LGFkPWZ1bmN0aW9uKG4sZSl7dmFyIHQscjtyZXR1cm57a2V5Om4sdmFsdWU6e2NvbmZpZzp7fSxtZToodD1uLHI9VHIoZSksWHIoe2ZpZWxkczpbZnIoImVuYWJsZWQiKV0sbmFtZTp0LGFjdGl2ZTp7ZXZlbnRzOnkocil9fSkpLGNvbmZpZ0FzUmF3Onkoe30pLGluaXRpYWxDb25maWc6e30sc3RhdGU6R3J9fX0sZmQ9LyogKi9PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxnZXRDdXJyZW50OmZ1bmN0aW9uKG4sZSx0KXtyZXR1cm4gZS5maW5kKG4pfX0pLHNkPVtmcigiZmluZCIpXSxsZD1Ycih7ZmllbGRzOnNkLG5hbWU6ImNvbXBvc2luZyIsYXBpczpmZH0pLGRkPWJmKHtuYW1lOiJDb250YWluZXIiLGZhY3Rvcnk6ZnVuY3Rpb24obil7dmFyIGU9bi5kb20sdD1lLmF0dHJpYnV0ZXMscj1jKGUsWyJhdHRyaWJ1dGVzIl0pO3JldHVybnt1aWQ6bi51aWQsZG9tOngoe3RhZzoiZGl2IixhdHRyaWJ1dGVzOngoe3JvbGU6InByZXNlbnRhdGlvbiJ9LHQpfSxyKSxjb21wb25lbnRzOm4uY29tcG9uZW50cyxiZWhhdmlvdXJzOmRhKG4uY29udGFpbmVyQmVoYXZpb3VycyksZXZlbnRzOm4uZXZlbnRzLGRvbU1vZGlmaWNhdGlvbjpuLmRvbU1vZGlmaWNhdGlvbixldmVudE9yZGVyOm4uZXZlbnRPcmRlcn19LGNvbmZpZ0ZpZWxkczpbaHIoImNvbXBvbmVudHMiLFtdKSxsYSgiY29udGFpbmVyQmVoYXZpb3VycyIsW10pLGhyKCJldmVudHMiLHt9KSxocigiZG9tTW9kaWZpY2F0aW9uIix7fSksaHIoImV2ZW50T3JkZXIiLHt9KV19KSxtZD1iZih7bmFtZToiRGF0YUZpZWxkIixmYWN0b3J5OmZ1bmN0aW9uKHQpe3JldHVybnt1aWQ6dC51aWQsZG9tOnQuZG9tLGJlaGF2aW91cnM6cGEodC5kYXRhQmVoYXZpb3VycyxbUWYuY29uZmlnKHtzdG9yZTp7bW9kZToibWVtb3J5Iixpbml0aWFsVmFsdWU6dC5nZXRJbml0aWFsVmFsdWUoKX19KSxsZC5jb25maWcoe2ZpbmQ6Ty5zb21lfSldKSxldmVudHM6VHIoW0ZyKGZ1bmN0aW9uKG4sZSl7UWYuc2V0VmFsdWUobix0LmdldEluaXRpYWxWYWx1ZSgpKX0pXSl9fSxjb25maWdGaWVsZHM6W2ZyKCJ1aWQiKSxmcigiZG9tIiksZnIoImdldEluaXRpYWxWYWx1ZSIpLGdhKCJkYXRhQmVoYXZpb3VycyIsW1FmLGxkXSldfSksZ2Q9ZnVuY3Rpb24obil7cmV0dXJuIG4uZG9tKCkudmFsdWV9LHBkPWZ1bmN0aW9uKG4sZSl7aWYoZT09PXVuZGVmaW5lZCl0aHJvdyBuZXcgRXJyb3IoIlZhbHVlLnNldCB3YXMgdW5kZWZpbmVkIik7bi5kb20oKS52YWx1ZT1lfSxoZD15KFtkcigiZGF0YSIpLGhyKCJpbnB1dEF0dHJpYnV0ZXMiLHt9KSxocigiaW5wdXRTdHlsZXMiLHt9KSxocigidGFnIiwiaW5wdXQiKSxocigiaW5wdXRDbGFzc2VzIixbXSkscW8oIm9uU2V0VmFsdWUiKSxocigic3R5bGVzIix7fSksaHIoImV2ZW50T3JkZXIiLHt9KSxsYSgiaW5wdXRCZWhhdmlvdXJzIixbUWYsa2ldKSxocigic2VsZWN0T25Gb2N1cyIsITApXSksdmQ9ZnVuY3Rpb24obil7cmV0dXJuIHgoeCh7fSwoZT1uLFVyKFtraS5jb25maWcoe29uRm9jdXM6ZS5zZWxlY3RPbkZvY3VzP2Z1bmN0aW9uKG4pe3ZhciBlPW4uZWxlbWVudCgpLHQ9Z2QoZSk7ZS5kb20oKS5zZXRTZWxlY3Rpb25SYW5nZSgwLHQubGVuZ3RoKX06d30pXSkpKSxtYShuLmlucHV0QmVoYXZpb3VycyxbUWYuY29uZmlnKHtzdG9yZTp4KHgoe21vZGU6Im1hbnVhbCJ9LG4uZGF0YS5tYXAoZnVuY3Rpb24obil7cmV0dXJue2luaXRpYWxWYWx1ZTpufX0pLmdldE9yKHt9KSkse2dldFZhbHVlOmZ1bmN0aW9uKG4pe3JldHVybiBnZChuLmVsZW1lbnQoKSl9LHNldFZhbHVlOmZ1bmN0aW9uKG4sZSl7Z2Qobi5lbGVtZW50KCkpIT09ZSYmcGQobi5lbGVtZW50KCksZSl9fSksb25TZXRWYWx1ZTpuLm9uU2V0VmFsdWV9KV0pKTt2YXIgZX0seWQ9YmYoe25hbWU6IklucHV0Iixjb25maWdGaWVsZHM6aGQoKSxmYWN0b3J5OmZ1bmN0aW9uKG4sZSl7cmV0dXJue3VpZDpuLnVpZCxkb206e3RhZzoodD1uKS50YWcsYXR0cmlidXRlczp4KHt0eXBlOiJ0ZXh0In0sdC5pbnB1dEF0dHJpYnV0ZXMpLHN0eWxlczp0LmlucHV0U3R5bGVzLGNsYXNzZXM6dC5pbnB1dENsYXNzZXN9LGNvbXBvbmVudHM6W10sYmVoYXZpb3Vyczp2ZChuKSxldmVudE9yZGVyOm4uZXZlbnRPcmRlcn07dmFyIHR9fSksYmQ9LyogKi9PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxleGhpYml0OmZ1bmN0aW9uKG4sZSl7cmV0dXJuIEhyKHthdHRyaWJ1dGVzOlJ0KFt7a2V5OmUudGFiQXR0cix2YWx1ZToidHJ1ZSJ9XSl9KX19KSx4ZD1baHIoInRhYkF0dHIiLCJkYXRhLWFsbG95LXRhYnN0b3AiKV0sd2Q9WHIoe2ZpZWxkczp4ZCxuYW1lOiJ0YWJzdG9wcGluZyIsYWN0aXZlOmJkfSksU2Q9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UudXRpbC5JMThuIiksT2Q9ZnVuY3Rpb24obixlKXt2YXIgdD16bCh5ZC5za2V0Y2goe2lucHV0QXR0cmlidXRlczp7cGxhY2Vob2xkZXI6U2QudHJhbnNsYXRlKGUpfSxvblNldFZhbHVlOmZ1bmN0aW9uKG4sZSl7eWUobixRbigpKX0saW5wdXRCZWhhdmlvdXJzOlVyKFtsZC5jb25maWcoe2ZpbmQ6Ty5zb21lfSksd2QuY29uZmlnKHt9KSxzYS5jb25maWcoe21vZGU6ImV4ZWN1dGlvbiJ9KV0pLHNlbGVjdE9uRm9jdXM6ITF9KSkscj16bCh3Zi5za2V0Y2goe2RvbTpUZignPGJ1dHRvbiBjbGFzcz0iJHtwcmVmaXh9LWlucHV0LWNvbnRhaW5lci14ICR7cHJlZml4fS1pY29uLWNhbmNlbC1jaXJjbGUgJHtwcmVmaXh9LWljb24iPjwvYnV0dG9uPicpLGFjdGlvbjpmdW5jdGlvbihuKXt2YXIgZT10LmdldChuKTtRZi5zZXRWYWx1ZShlLCIiKX19KSk7cmV0dXJue25hbWU6bixzcGVjOmRkLnNrZXRjaCh7ZG9tOlRmKCc8ZGl2IGNsYXNzPSIke3ByZWZpeH0taW5wdXQtY29udGFpbmVyIj48L2Rpdj4nKSxjb21wb25lbnRzOlt0LmFzU3BlYygpLHIuYXNTcGVjKCldLGNvbnRhaW5lckJlaGF2aW91cnM6VXIoW2dpLmNvbmZpZyh7dG9nZ2xlQ2xhc3M6YmkoImlucHV0LWNvbnRhaW5lci1lbXB0eSIpfSksbGQuY29uZmlnKHtmaW5kOmZ1bmN0aW9uKG4pe3JldHVybiBPLnNvbWUodC5nZXQobikpfX0pLGFkKCJpbnB1dC1jbGVhcmluZyIsW0VyKFFuKCksZnVuY3Rpb24obil7dmFyIGU9dC5nZXQobik7KDA8UWYuZ2V0VmFsdWUoZSkubGVuZ3RoP2dpLm9mZjpnaS5vbikobil9KV0pXSl9KX19LFRkPVsiaW5wdXQiLCJidXR0b24iLCJ0ZXh0YXJlYSIsInNlbGVjdCJdLGtkPWZ1bmN0aW9uKG4sZSx0KXsoZS5kaXNhYmxlZCgpP0lkOkZkKShuLGUsdCl9LEVkPWZ1bmN0aW9uKG4sZSl7cmV0dXJuITA9PT1lLnVzZU5hdGl2ZSYmZG4oVGQsa2Uobi5lbGVtZW50KCkpKX0sQ2Q9ZnVuY3Rpb24obil7SnIobi5lbGVtZW50KCksImRpc2FibGVkIiwiZGlzYWJsZWQiKX0sTWQ9ZnVuY3Rpb24obil7dG8obi5lbGVtZW50KCksImRpc2FibGVkIil9LF9kPWZ1bmN0aW9uKG4pe0pyKG4uZWxlbWVudCgpLCJhcmlhLWRpc2FibGVkIiwidHJ1ZSIpfSxEZD1mdW5jdGlvbihuKXtKcihuLmVsZW1lbnQoKSwiYXJpYS1kaXNhYmxlZCIsImZhbHNlIil9LElkPWZ1bmN0aW9uKGUsbix0KXtuLmRpc2FibGVDbGFzcy5lYWNoKGZ1bmN0aW9uKG4pe2NvKGUuZWxlbWVudCgpLG4pfSksKEVkKGUsbik/Q2Q6X2QpKGUpLG4ub25EaXNhYmxlZChlKX0sRmQ9ZnVuY3Rpb24oZSxuLHQpe24uZGlzYWJsZUNsYXNzLmVhY2goZnVuY3Rpb24obil7Zm8oZS5lbGVtZW50KCksbil9KSwoRWQoZSxuKT9NZDpEZCkoZSksbi5vbkVuYWJsZWQoZSl9LFJkPWZ1bmN0aW9uKG4sZSl7cmV0dXJuIEVkKG4sZSk/ZW8obi5lbGVtZW50KCksImRpc2FibGVkIik6InRydWUiPT09WnIobi5lbGVtZW50KCksImFyaWEtZGlzYWJsZWQiKX0sVmQ9LyogKi9PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxlbmFibGU6RmQsZGlzYWJsZTpJZCxpc0Rpc2FibGVkOlJkLG9uTG9hZDprZCxzZXQ6ZnVuY3Rpb24obixlLHQscil7KHI/SWQ6RmQpKG4sZSx0KX19KSxCZD0vKiAqL09iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLGV4aGliaXQ6ZnVuY3Rpb24obixlKXtyZXR1cm4gSHIoe2NsYXNzZXM6ZS5kaXNhYmxlZD9lLmRpc2FibGVDbGFzcy5tYXAoRW4pLmdldE9yKFtdKTpbXX0pfSxldmVudHM6ZnVuY3Rpb24odCxuKXtyZXR1cm4gVHIoW2tyKGFlKCksZnVuY3Rpb24obixlKXtyZXR1cm4gUmQobix0KX0pLE5yKHQsbixrZCldKX19KSxBZD1bdnIoImRpc2FibGVkIixzLGFyKSxocigidXNlTmF0aXZlIiwhMCksZHIoImRpc2FibGVDbGFzcyIpLHFvKCJvbkRpc2FibGVkIikscW8oIm9uRW5hYmxlZCIpXSxqZD1Ycih7ZmllbGRzOkFkLG5hbWU6ImRpc2FibGluZyIsYWN0aXZlOkJkLGFwaXM6VmR9KSxIZD1bbGEoImZvcm1CZWhhdmlvdXJzIixbUWZdKV0sTmQ9ZnVuY3Rpb24obil7cmV0dXJuIjxhbGxveS5maWVsZC4iK24rIj4ifSxQZD1mdW5jdGlvbihvLG4pe3JldHVybnt1aWQ6by51aWQsZG9tOm8uZG9tLGNvbXBvbmVudHM6bixiZWhhdmlvdXJzOm1hKG8uZm9ybUJlaGF2aW91cnMsW1FmLmNvbmZpZyh7c3RvcmU6e21vZGU6Im1hbnVhbCIsZ2V0VmFsdWU6ZnVuY3Rpb24obil7dmFyIGUsdCxyPShlPW8sdD1uLmdldFN5c3RlbSgpLEMoZS5wYXJ0VWlkcyxmdW5jdGlvbihuLGUpe3JldHVybiB5KHQuZ2V0QnlVaWQobikpfSkpO3JldHVybiBDKHIsZnVuY3Rpb24obixvKXtyZXR1cm4gbigpLmJpbmQoZnVuY3Rpb24obil7dmFyIGUsdCxyPWxkLmdldEN1cnJlbnQobik7cmV0dXJuIGU9cix0PW5ldyBFcnJvcigiQ2Fubm90IGZpbmQgYSBjdXJyZW50IGNvbXBvbmVudCB0byBleHRyYWN0IHRoZSB2YWx1ZSBmcm9tIGZvciBmb3JtIHBhcnQgJyIrbysiJzogIitWbyhuLmVsZW1lbnQoKSkpLGUuZm9sZChmdW5jdGlvbigpe3JldHVybiBydC5lcnJvcih0KX0scnQudmFsdWUpfSkubWFwKFFmLmdldFZhbHVlKX0pfSxzZXRWYWx1ZTpmdW5jdGlvbih0LG4pe0UobixmdW5jdGlvbihlLG4pe0thKHQsbyxuKS5lYWNoKGZ1bmN0aW9uKG4pe2xkLmdldEN1cnJlbnQobikuZWFjaChmdW5jdGlvbihuKXtRZi5zZXRWYWx1ZShuLGUpfSl9KX0pfX19KV0pLGFwaXM6e2dldEZpZWxkOmZ1bmN0aW9uKG4sZSl7cmV0dXJuIEthKG4sbyxlKS5iaW5kKGxkLmdldEN1cnJlbnQpfX19fSx6ZD0odGYoZnVuY3Rpb24obixlLHQpe3JldHVybiBuLmdldEZpZWxkKGUsdCl9KSxmdW5jdGlvbihuKXt2YXIgaSxlPShpPVtdLHtmaWVsZDpmdW5jdGlvbihuLGUpe3JldHVybiBpLnB1c2gobiksdD0iZm9ybSIscj1OZChuKSxvPWUse3VpVHlwZTpUYSgpLG93bmVyOnQsbmFtZTpyLGNvbmZpZzpvLHZhbGlkYXRlZDp7fX07dmFyIHQscixvfSxyZWNvcmQ6ZnVuY3Rpb24oKXtyZXR1cm4gaX19KSx0PW4oZSkscj1lLnJlY29yZCgpLG89Z24ocixmdW5jdGlvbihuKXtyZXR1cm4gemEoe25hbWU6bixwbmFtZTpOZChuKX0pfSk7cmV0dXJuIGRmKCJmb3JtIixIZCxvLFBkLHQpfSksTGQ9ZnVuY3Rpb24oKXt2YXIgZT1obyhPLm5vbmUoKSksdD1mdW5jdGlvbigpe2UuZ2V0KCkuZWFjaChmdW5jdGlvbihuKXtuLmRlc3Ryb3koKX0pfTtyZXR1cm57Y2xlYXI6ZnVuY3Rpb24oKXt0KCksZS5zZXQoTy5ub25lKCkpfSxpc1NldDpmdW5jdGlvbigpe3JldHVybiBlLmdldCgpLmlzU29tZSgpfSxzZXQ6ZnVuY3Rpb24obil7dCgpLGUuc2V0KE8uc29tZShuKSl9LHJ1bjpmdW5jdGlvbihuKXtlLmdldCgpLmVhY2gobil9fX0sR2Q9ZnVuY3Rpb24oKXt2YXIgZT1obyhPLm5vbmUoKSk7cmV0dXJue2NsZWFyOmZ1bmN0aW9uKCl7ZS5zZXQoTy5ub25lKCkpfSxzZXQ6ZnVuY3Rpb24obil7ZS5zZXQoTy5zb21lKG4pKX0saXNTZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5nZXQoKS5pc1NvbWUoKX0sb246ZnVuY3Rpb24obil7ZS5nZXQoKS5lYWNoKG4pfX19LCRkPWZ1bmN0aW9uKG4pe3ZhciByPSJuYXZpZ2F0ZUV2ZW50IixlPVd0KFtmcigiZmllbGRzIiksaHIoIm1heEZpZWxkSW5kZXgiLG4uZmllbGRzLmxlbmd0aC0xKSxmcigib25FeGVjdXRlIiksZnIoImdldEluaXRpYWxWYWx1ZSIpLHlyKCJzdGF0ZSIsZnVuY3Rpb24oKXtyZXR1cm57ZGlhbG9nU3dpcGVTdGF0ZTpHZCgpLGN1cnJlbnRTY3JlZW46aG8oMCl9fSldKSx1PW9yKCJTZXJpYWxpc2VkRGlhbG9nIixlLG4pLG89ZnVuY3Rpb24oZSxuLHQpe3JldHVybiB3Zi5za2V0Y2goe2RvbTpUZignPHNwYW4gY2xhc3M9IiR7cHJlZml4fS1pY29uLScrbisnICR7cHJlZml4fS1pY29uIj48L3NwYW4+JyksYWN0aW9uOmZ1bmN0aW9uKG4pe2JlKG4scix7ZGlyZWN0aW9uOmV9KX0sYnV0dG9uQmVoYXZpb3VyczpVcihbamQuY29uZmlnKHtkaXNhYmxlQ2xhc3M6YmkoInRvb2xiYXItbmF2aWdhdGlvbi1kaXNhYmxlZCIpLGRpc2FibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIXR9fSldKX0pfSxpPWZ1bmN0aW9uKG4sbyl7dmFyIGk9TGkobi5lbGVtZW50KCksIi4iK2JpKCJzZXJpYWxpc2VkLWRpYWxvZy1zY3JlZW4iKSk7VWkobi5lbGVtZW50KCksIi4iK2JpKCJzZXJpYWxpc2VkLWRpYWxvZy1jaGFpbiIpKS5lYWNoKGZ1bmN0aW9uKHIpezA8PXUuc3RhdGUuY3VycmVudFNjcmVlbi5nZXQoKStvJiZ1LnN0YXRlLmN1cnJlbnRTY3JlZW4uZ2V0KCkrbzxpLmxlbmd0aCYmKEZpKHIsImxlZnQiKS5lYWNoKGZ1bmN0aW9uKG4pe3ZhciBlPXBhcnNlSW50KG4sMTApLHQ9ZXMoaVswXSk7TWkociwibGVmdCIsZS1vKnQrInB4Iil9KSx1LnN0YXRlLmN1cnJlbnRTY3JlZW4uc2V0KHUuc3RhdGUuY3VycmVudFNjcmVlbi5nZXQoKStvKSl9KX0sYz1mdW5jdGlvbihyKXt2YXIgbj1MaShyLmVsZW1lbnQoKSwiaW5wdXQiKTtPLmZyb20oblt1LnN0YXRlLmN1cnJlbnRTY3JlZW4uZ2V0KCldKS5lYWNoKGZ1bmN0aW9uKG4pe3IuZ2V0U3lzdGVtKCkuZ2V0QnlEb20obikuZWFjaChmdW5jdGlvbihuKXt2YXIgZSx0O2U9cix0PW4uZWxlbWVudCgpLGUuZ2V0U3lzdGVtKCkudHJpZ2dlckZvY3VzKHQsZS5lbGVtZW50KCkpfSl9KTt2YXIgZT1mLmdldChyKTtPdS5oaWdobGlnaHRBdChlLHUuc3RhdGUuY3VycmVudFNjcmVlbi5nZXQoKSl9LGE9emwoemQoZnVuY3Rpb24odCl7cmV0dXJue2RvbTpUZignPGRpdiBjbGFzcz0iJHtwcmVmaXh9LXNlcmlhbGlzZWQtZGlhbG9nIj48L2Rpdj4nKSxjb21wb25lbnRzOltkZC5za2V0Y2goe2RvbTpUZignPGRpdiBjbGFzcz0iJHtwcmVmaXh9LXNlcmlhbGlzZWQtZGlhbG9nLWNoYWluIiBzdHlsZT0ibGVmdDogMHB4OyBwb3NpdGlvbjogYWJzb2x1dGU7Ij48L2Rpdj4nKSxjb21wb25lbnRzOmduKHUuZmllbGRzLGZ1bmN0aW9uKG4sZSl7cmV0dXJuIGU8PXUubWF4RmllbGRJbmRleD9kZC5za2V0Y2goe2RvbTpUZignPGRpdiBjbGFzcz0iJHtwcmVmaXh9LXNlcmlhbGlzZWQtZGlhbG9nLXNjcmVlbiI+PC9kaXY+JyksY29tcG9uZW50czpbbygtMSwicHJldmlvdXMiLDA8ZSksdC5maWVsZChuLm5hbWUsbi5zcGVjKSxvKDEsIm5leHQiLGU8dS5tYXhGaWVsZEluZGV4KV19KTp0LmZpZWxkKG4ubmFtZSxuLnNwZWMpfSl9KV0sZm9ybUJlaGF2aW91cnM6VXIoW2hpKGZ1bmN0aW9uKG4sZSl7dmFyIHQ7dD1lLFVpKG4uZWxlbWVudCgpLCIuIitiaSgic2VyaWFsaXNlZC1kaWFsb2ctY2hhaW4iKSkuZWFjaChmdW5jdGlvbihuKXtNaShuLCJsZWZ0IiwtdS5zdGF0ZS5jdXJyZW50U2NyZWVuLmdldCgpKnQud2lkdGgrInB4Iil9KX0pLHNhLmNvbmZpZyh7bW9kZToic3BlY2lhbCIsZm9jdXNJbjpmdW5jdGlvbihuLGUpe2Mobil9LG9uVGFiOmZ1bmN0aW9uKG4sZSl7cmV0dXJuIGkobiwxKSxPLnNvbWUoITApfSxvblNoaWZ0VGFiOmZ1bmN0aW9uKG4sZSl7cmV0dXJuIGkobiwtMSksTy5zb21lKCEwKX19KSxhZCgiZm9ybS1ldmVudHMiLFtGcihmdW5jdGlvbihlLG4pe3Uuc3RhdGUuY3VycmVudFNjcmVlbi5zZXQoMCksdS5zdGF0ZS5kaWFsb2dTd2lwZVN0YXRlLmNsZWFyKCk7dmFyIHQ9Zi5nZXQoZSk7T3UuaGlnaGxpZ2h0Rmlyc3QodCksdS5nZXRJbml0aWFsVmFsdWUoZSkuZWFjaChmdW5jdGlvbihuKXtRZi5zZXRWYWx1ZShlLG4pfSl9KSxCcih1Lm9uRXhlY3V0ZSksRXIoZWUoKSxmdW5jdGlvbihuLGUpeyJsZWZ0Ij09PWUuZXZlbnQoKS5yYXcoKS5wcm9wZXJ0eU5hbWUmJmMobil9KSxFcihyLGZ1bmN0aW9uKG4sZSl7dmFyIHQ9ZS5ldmVudCgpLmRpcmVjdGlvbigpO2kobix0KX0pXSldKX19KSksZj16bCh7ZG9tOlRmKCc8ZGl2IGNsYXNzPSIke3ByZWZpeH0tZG90LWNvbnRhaW5lciI+PC9kaXY+JyksYmVoYXZpb3VyczpVcihbT3UuY29uZmlnKHtoaWdobGlnaHRDbGFzczpiaSgiZG90LWFjdGl2ZSIpLGl0ZW1DbGFzczpiaSgiZG90LWl0ZW0iKX0pXSksY29tcG9uZW50czpTbih1LmZpZWxkcyxmdW5jdGlvbihuLGUpe3JldHVybiBlPD11Lm1heEZpZWxkSW5kZXg/W2tmKCc8ZGl2IGNsYXNzPSIke3ByZWZpeH0tZG90LWl0ZW0gJHtwcmVmaXh9LWljb24tZnVsbC1kb3QgJHtwcmVmaXh9LWljb24iPjwvZGl2PicpXTpbXX0pfSk7cmV0dXJue2RvbTpUZignPGRpdiBjbGFzcz0iJHtwcmVmaXh9LXNlcmlhbGl6ZXItd3JhcHBlciI+PC9kaXY+JyksY29tcG9uZW50czpbYS5hc1NwZWMoKSxmLmFzU3BlYygpXSxiZWhhdmlvdXJzOlVyKFtzYS5jb25maWcoe21vZGU6InNwZWNpYWwiLGZvY3VzSW46ZnVuY3Rpb24obil7dmFyIGU9YS5nZXQobik7c2EuZm9jdXNJbihlKX19KSxhZCgic2VyaWFsaXplci13cmFwcGVyLWV2ZW50cyIsW0VyKEduKCksZnVuY3Rpb24obixlKXt2YXIgdD1lLmV2ZW50KCk7dS5zdGF0ZS5kaWFsb2dTd2lwZVN0YXRlLnNldCh7eFZhbHVlOnQucmF3KCkudG91Y2hlc1swXS5jbGllbnRYLHBvaW50czpbXX0pfSksRXIoJG4oKSxmdW5jdGlvbihuLGUpe3ZhciB0PWUuZXZlbnQoKTt1LnN0YXRlLmRpYWxvZ1N3aXBlU3RhdGUub24oZnVuY3Rpb24obil7ZS5ldmVudCgpLnByZXZlbnQoKSx1LnN0YXRlLmRpYWxvZ1N3aXBlU3RhdGUuc2V0KGZ1bmN0aW9uKG4sZSl7aWYoZT09PW4ueFZhbHVlKXJldHVybiBuO3ZhciB0PTA8ZS1uLnhWYWx1ZT8xOi0xLHI9e2RpcmVjdGlvbjp0LHhWYWx1ZTplfTtyZXR1cm57eFZhbHVlOmUscG9pbnRzOigwPT09bi5wb2ludHMubGVuZ3RoP1tdOm4ucG9pbnRzW24ucG9pbnRzLmxlbmd0aC0xXS5kaXJlY3Rpb249PT10P24ucG9pbnRzLnNsaWNlKDAsbi5wb2ludHMubGVuZ3RoLTEpOm4ucG9pbnRzKS5jb25jYXQoW3JdKX19KG4sdC5yYXcoKS50b3VjaGVzWzBdLmNsaWVudFgpKX0pfSksRXIoVW4oKSxmdW5jdGlvbihyLG4pe3Uuc3RhdGUuZGlhbG9nU3dpcGVTdGF0ZS5vbihmdW5jdGlvbihuKXt2YXIgZT1hLmdldChyKSx0PS0xKmZ1bmN0aW9uKG4pe2lmKDA9PT1uLnBvaW50cy5sZW5ndGgpcmV0dXJuIDA7dmFyIGU9bi5wb2ludHNbMF0uZGlyZWN0aW9uLHQ9bi5wb2ludHNbbi5wb2ludHMubGVuZ3RoLTFdLmRpcmVjdGlvbjtyZXR1cm4tMT09PWUmJi0xPT09dD8tMToxPT09ZSYmMT09PXQ/MTowfShuKTtpKGUsdCl9KX0pXSldKX19LFVkPVYoZnVuY3Rpb24ocixvKXtyZXR1cm5be2xhYmVsOiJ0aGUgbGluayBncm91cCIsaXRlbXM6WyRkKHtmaWVsZHM6W09kKCJ1cmwiLCJUeXBlIG9yIHBhc3RlIFVSTCIpLE9kKCJ0ZXh0IiwiTGluayB0ZXh0IiksT2QoInRpdGxlIiwiTGluayB0aXRsZSIpLE9kKCJ0YXJnZXQiLCJMaW5rIHRhcmdldCIpLHtuYW1lOiJsaW5rIixzcGVjOm1kLnNrZXRjaCh7ZG9tOnt0YWc6InNwYW4iLHN0eWxlczp7ZGlzcGxheToibm9uZSJ9fSxnZXRJbml0aWFsVmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gTy5ub25lKCl9fSl9XSxtYXhGaWVsZEluZGV4OlsidXJsIiwidGV4dCIsInRpdGxlIiwidGFyZ2V0Il0ubGVuZ3RoLTEsZ2V0SW5pdGlhbFZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIE8uc29tZSh0ZChvKSl9LG9uRXhlY3V0ZTpmdW5jdGlvbihuLGUpe3ZhciB0PVFmLmdldFZhbHVlKG4pO29kKG8sdCksci5yZXN0b3JlVG9vbGJhcigpLG8uZm9jdXMoKX19KV19XX0pLFdkPWZ1bmN0aW9uKHIsbyl7cmV0dXJuIENmKG8sImxpbmsiLCJsaW5rIixmdW5jdGlvbigpe3ZhciBuLGUsdD1VZChyLG8pO3Iuc2V0Q29udGV4dFRvb2xiYXIodCksbj1vLGU9ZnVuY3Rpb24oKXtyLmZvY3VzVG9vbGJhcigpfSwodWQub3MuaXNBbmRyb2lkKCk/Y2Q6ZikoZSxuKSxpZChvKS5lYWNoKGZ1bmN0aW9uKG4pe28uc2VsZWN0aW9uLnNlbGVjdChuLmRvbSgpKX0pfSl9LFhkPVt7dGl0bGU6IkhlYWRpbmdzIixpdGVtczpbe3RpdGxlOiJIZWFkaW5nIDEiLGZvcm1hdDoiaDEifSx7dGl0bGU6IkhlYWRpbmcgMiIsZm9ybWF0OiJoMiJ9LHt0aXRsZToiSGVhZGluZyAzIixmb3JtYXQ6ImgzIn0se3RpdGxlOiJIZWFkaW5nIDQiLGZvcm1hdDoiaDQifSx7dGl0bGU6IkhlYWRpbmcgNSIsZm9ybWF0OiJoNSJ9LHt0aXRsZToiSGVhZGluZyA2Iixmb3JtYXQ6Img2In1dfSx7dGl0bGU6IklubGluZSIsaXRlbXM6W3t0aXRsZToiQm9sZCIsaWNvbjoiYm9sZCIsZm9ybWF0OiJib2xkIn0se3RpdGxlOiJJdGFsaWMiLGljb246Iml0YWxpYyIsZm9ybWF0OiJpdGFsaWMifSx7dGl0bGU6IlVuZGVybGluZSIsaWNvbjoidW5kZXJsaW5lIixmb3JtYXQ6InVuZGVybGluZSJ9LHt0aXRsZToiU3RyaWtldGhyb3VnaCIsaWNvbjoic3RyaWtldGhyb3VnaCIsZm9ybWF0OiJzdHJpa2V0aHJvdWdoIn0se3RpdGxlOiJTdXBlcnNjcmlwdCIsaWNvbjoic3VwZXJzY3JpcHQiLGZvcm1hdDoic3VwZXJzY3JpcHQifSx7dGl0bGU6IlN1YnNjcmlwdCIsaWNvbjoic3Vic2NyaXB0Iixmb3JtYXQ6InN1YnNjcmlwdCJ9LHt0aXRsZToiQ29kZSIsaWNvbjoiY29kZSIsZm9ybWF0OiJjb2RlIn1dfSx7dGl0bGU6IkJsb2NrcyIsaXRlbXM6W3t0aXRsZToiUGFyYWdyYXBoIixmb3JtYXQ6InAifSx7dGl0bGU6IkJsb2NrcXVvdGUiLGZvcm1hdDoiYmxvY2txdW90ZSJ9LHt0aXRsZToiRGl2Iixmb3JtYXQ6ImRpdiJ9LHt0aXRsZToiUHJlIixmb3JtYXQ6InByZSJ9XX0se3RpdGxlOiJBbGlnbm1lbnQiLGl0ZW1zOlt7dGl0bGU6IkxlZnQiLGljb246ImFsaWdubGVmdCIsZm9ybWF0OiJhbGlnbmxlZnQifSx7dGl0bGU6IkNlbnRlciIsaWNvbjoiYWxpZ25jZW50ZXIiLGZvcm1hdDoiYWxpZ25jZW50ZXIifSx7dGl0bGU6IlJpZ2h0IixpY29uOiJhbGlnbnJpZ2h0Iixmb3JtYXQ6ImFsaWducmlnaHQifSx7dGl0bGU6Ikp1c3RpZnkiLGljb246ImFsaWduanVzdGlmeSIsZm9ybWF0OiJhbGlnbmp1c3RpZnkifV19XSxxZD1Ucihbe2tleTpvZSgpLHZhbHVlOlNyKHtjYW46ZnVuY3Rpb24obixlKXt2YXIgdCxyLG89ZS5ldmVudCgpLm9yaWdpbmF0b3IoKSxpPWUuZXZlbnQoKS50YXJnZXQoKTtyZXR1cm4gcj1pLCEoQWUodD1vLG4uZWxlbWVudCgpKSYmIUFlKHQscikpfHwodi5jb25zb2xlLndhcm4ob2UoKSsiIGRpZCBub3QgZ2V0IGludGVycHJldGVkIGJ5IHRoZSBkZXNpcmVkIHRhcmdldC4gXG5PcmlnaW5hdG9yOiAiK1ZvKG8pKyJcblRhcmdldDogIitWbyhpKSsiXG5DaGVjayB0aGUgIitvZSgpKyIgZXZlbnQgaGFuZGxlcnMiKSwhMSl9fSl9XSksWWQ9LyogKi9PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxldmVudHM6cWR9KSxLZD1iLEpkPWZ1bmN0aW9uKGUpe3ZhciBuPWZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiVGhlIGNvbXBvbmVudCBtdXN0IGJlIGluIGEgY29udGV4dCB0byBzZW5kOiAiK24rKGU/IlxuIitWbyhlKCkuZWxlbWVudCgpKSsiIGlzIG5vdCBpbiBjb250ZXh0LiI6IiIpKX19O3JldHVybntkZWJ1Z0luZm86eSgiZmFrZSIpLHRyaWdnZXJFdmVudDpuKCJ0cmlnZ2VyRXZlbnQiKSx0cmlnZ2VyRm9jdXM6bigidHJpZ2dlckZvY3VzIiksdHJpZ2dlckVzY2FwZTpuKCJ0cmlnZ2VyRXNjYXBlIiksYnVpbGQ6bigiYnVpbGQiKSxhZGRUb1dvcmxkOm4oImFkZFRvV29ybGQiKSxyZW1vdmVGcm9tV29ybGQ6bigicmVtb3ZlRnJvbVdvcmxkIiksYWRkVG9HdWk6bigiYWRkVG9HdWkiKSxyZW1vdmVGcm9tR3VpOm4oInJlbW92ZUZyb21HdWkiKSxnZXRCeVVpZDpuKCJnZXRCeVVpZCIpLGdldEJ5RG9tOm4oImdldEJ5RG9tIiksYnJvYWRjYXN0Om4oImJyb2FkY2FzdCIpLGJyb2FkY2FzdE9uOm4oImJyb2FkY2FzdE9uIiksYnJvYWRjYXN0RXZlbnQ6bigiYnJvYWRjYXN0RXZlbnQiKSxpc0Nvbm5lY3RlZDp5KCExKX19LFFkPUpkKCksWmQ9ZnVuY3Rpb24obixvKXt2YXIgaT17fTtyZXR1cm4gRShuLGZ1bmN0aW9uKG4scil7RShuLGZ1bmN0aW9uKG4sZSl7dmFyIHQ9SShpLGUpLmdldE9yKFtdKTtpW2VdPXQuY29uY2F0KFtvKHIsbildKX0pfSksaX0sbm09ZnVuY3Rpb24odSxjLG4sYSl7dHJ5e3ZhciBlPSh0PW4scj1mdW5jdGlvbihuLGUpe3ZhciB0PW5bY10oKSxyPWVbY10oKSxvPWEuaW5kZXhPZih0KSxpPWEuaW5kZXhPZihyKTtpZigtMT09PW8pdGhyb3cgbmV3IEVycm9yKCJUaGUgb3JkZXJpbmcgZm9yICIrdSsiIGRvZXMgbm90IGhhdmUgYW4gZW50cnkgZm9yICIrdCsiLlxuT3JkZXIgc3BlY2lmaWVkOiAiK0pTT04uc3RyaW5naWZ5KGEsbnVsbCwyKSk7aWYoLTE9PT1pKXRocm93IG5ldyBFcnJvcigiVGhlIG9yZGVyaW5nIGZvciAiK3UrIiBkb2VzIG5vdCBoYXZlIGFuIGVudHJ5IGZvciAiK3IrIi5cbk9yZGVyIHNwZWNpZmllZDogIitKU09OLnN0cmluZ2lmeShhLG51bGwsMikpO3JldHVybiBvPGk/LTE6aTxvPzE6MH0sKG89Zm4uY2FsbCh0LDApKS5zb3J0KHIpLG8pO3JldHVybiBydC52YWx1ZShlKX1jYXRjaChpKXtyZXR1cm4gcnQuZXJyb3IoW2ldKX12YXIgdCxyLG99LGVtPWZ1bmN0aW9uKG4sZSl7cmV0dXJuIHQ9Uy5hcHBseSh1bmRlZmluZWQsW24uaGFuZGxlcl0uY29uY2F0KGUpKSxyPW4ucHVycG9zZSgpLHtjSGFuZGxlcjp0LHB1cnBvc2U6eShyKX07dmFyIHQscn0sdG09ZnVuY3Rpb24obil7cmV0dXJuIG4uY0hhbmRsZXJ9LHJtPWZ1bmN0aW9uKG4sZSl7cmV0dXJue25hbWU6eShuKSxoYW5kbGVyOnkoZSl9fSxvbT1mdW5jdGlvbihuLGUsdCl7dmFyIHIsbyxpPXgoeCh7fSx0KSwocj1uLG89e30scG4oZSxmdW5jdGlvbihuKXtvW24ubmFtZSgpXT1uLmhhbmRsZXJzKHIpfSksbykpO3JldHVybiBaZChpLHJtKX0saW09ZnVuY3Rpb24obil7dmFyIGUsaT1jbihlPW4pP3tjYW46eSghMCksYWJvcnQ6eSghMSkscnVuOmV9OmU7cmV0dXJuIGZ1bmN0aW9uKG4sZSl7Zm9yKHZhciB0PVtdLHI9MjtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKXRbci0yXT1hcmd1bWVudHNbcl07dmFyIG89W24sZV0uY29uY2F0KHQpO2kuYWJvcnQuYXBwbHkodW5kZWZpbmVkLG8pP2Uuc3RvcCgpOmkuY2FuLmFwcGx5KHVuZGVmaW5lZCxvKSYmaS5ydW4uYXBwbHkodW5kZWZpbmVkLG8pfX0sdW09ZnVuY3Rpb24obixlLHQpe3ZhciByLG8saT1lW3RdO3JldHVybiBpP25tKCJFdmVudDogIit0LCJuYW1lIixuLGkpLm1hcChmdW5jdGlvbihuKXt2YXIgZT1nbihuLGZ1bmN0aW9uKG4pe3JldHVybiBuLmhhbmRsZXIoKX0pO3JldHVybiBPcihlKX0pOihyPXQsbz1uLHJ0LmVycm9yKFsiVGhlIGV2ZW50ICgiK3IrJykgaGFzIG1vcmUgdGhhbiBvbmUgYmVoYXZpb3VyIHRoYXQgbGlzdGVucyB0byBpdC5cbldoZW4gdGhpcyBvY2N1cnMsIHlvdSBtdXN0IHNwZWNpZnkgYW4gZXZlbnQgb3JkZXJpbmcgZm9yIHRoZSBiZWhhdmlvdXJzIGluIHlvdXIgc3BlYyAoZS5nLiBbICJsaXN0aW5nIiwgInRvZ2dsaW5nIiBdKS5cblRoZSBiZWhhdmlvdXJzIHRoYXQgY2FuIHRyaWdnZXIgaXQgYXJlOiAnK0pTT04uc3RyaW5naWZ5KGduKG8sZnVuY3Rpb24obil7cmV0dXJuIG4ubmFtZSgpfSksbnVsbCwyKV0pKX0sY209ZnVuY3Rpb24obixpKXt2YXIgZT1EKG4sZnVuY3Rpb24ocixvKXtyZXR1cm4oMT09PXIubGVuZ3RoP3J0LnZhbHVlKHJbMF0uaGFuZGxlcigpKTp1bShyLGksbykpLm1hcChmdW5jdGlvbihuKXt2YXIgZT1pbShuKSx0PTE8ci5sZW5ndGg/aG4oaVtvXSxmdW5jdGlvbihlKXtyZXR1cm4gbW4ocixmdW5jdGlvbihuKXtyZXR1cm4gbi5uYW1lKCk9PT1lfSl9KS5qb2luKCIgPiAiKTpyWzBdLm5hbWUoKTtyZXR1cm4gRnQobyx7aGFuZGxlcjplLHB1cnBvc2U6eSh0KX0pfSl9KTtyZXR1cm4gVnQoZSx7fSl9LGFtPWZ1bmN0aW9uKG4pe3JldHVybiB0cigiY3VzdG9tLmRlZmluaXRpb24iLFd0KFtLdCgiZG9tIiwiZG9tIixFdCgpLFd0KFtmcigidGFnIiksaHIoInN0eWxlcyIse30pLGhyKCJjbGFzc2VzIixbXSksaHIoImF0dHJpYnV0ZXMiLHt9KSxkcigidmFsdWUiKSxkcigiaW5uZXJIdG1sIildKSksZnIoImNvbXBvbmVudHMiKSxmcigidWlkIiksaHIoImV2ZW50cyIse30pLGhyKCJhcGlzIix7fSksS3QoImV2ZW50T3JkZXIiLCJldmVudE9yZGVyIixUdC5tZXJnZVdpdGhUaHVuayh5KHsiYWxsb3kuZXhlY3V0ZSI6WyJkaXNhYmxpbmciLCJhbGxveS5iYXNlLmJlaGF2aW91ciIsInRvZ2dsaW5nIiwidHlwZWFoZWFkZXZlbnRzIl0sImFsbG95LmZvY3VzIjpbImFsbG95LmJhc2UuYmVoYXZpb3VyIiwiZm9jdXNpbmciLCJrZXlpbmciXSwiYWxsb3kuc3lzdGVtLmluaXQiOlsiYWxsb3kuYmFzZS5iZWhhdmlvdXIiLCJkaXNhYmxpbmciLCJ0b2dnbGluZyIsInJlcHJlc2VudGluZyJdLGlucHV0OlsiYWxsb3kuYmFzZS5iZWhhdmlvdXIiLCJyZXByZXNlbnRpbmciLCJzdHJlYW1pbmciLCJpbnZhbGlkYXRpbmciXSwiYWxsb3kuc3lzdGVtLmRldGFjaGVkIjpbImFsbG95LmJhc2UuYmVoYXZpb3VyIiwicmVwcmVzZW50aW5nIiwiaXRlbS1ldmVudHMiLCJ0b29sdGlwcGluZyJdLG1vdXNlZG93bjpbImZvY3VzaW5nIiwiYWxsb3kuYmFzZS5iZWhhdmlvdXIiLCJpdGVtLXR5cGUtZXZlbnRzIl0sdG91Y2hzdGFydDpbImZvY3VzaW5nIiwiYWxsb3kuYmFzZS5iZWhhdmlvdXIiLCJpdGVtLXR5cGUtZXZlbnRzIl0sbW91c2VvdmVyOlsiaXRlbS10eXBlLWV2ZW50cyIsInRvb2x0aXBwaW5nIl0sImFsbG95LnJlY2VpdmUiOlsicmVjZWl2aW5nIiwicmVmbGVjdGluZyIsInRvb2x0aXBwaW5nIl19KSksY3IoKSksZHIoImRvbU1vZGlmaWNhdGlvbiIpXSksbil9LGZtPWZ1bmN0aW9uKGUsbil7cG4obixmdW5jdGlvbihuKXtjbyhlLG4pfSl9LHNtPWZ1bmN0aW9uKGUsbil7cG4obixmdW5jdGlvbihuKXtmbyhlLG4pfSl9LGxtPWZ1bmN0aW9uKG4sZSl7cmV0dXJuIHQ9bixvPWduKHI9ZSxmdW5jdGlvbihuKXtyZXR1cm4gZ3Iobi5uYW1lKCksW2ZyKCJjb25maWciKSxocigic3RhdGUiLEdyKV0pfSksaT10cigiY29tcG9uZW50LmJlaGF2aW91cnMiLFd0KG8pLHQuYmVoYXZpb3VycykuZm9sZChmdW5jdGlvbihuKXt0aHJvdyBuZXcgRXJyb3IoaXIobikrIlxuQ29tcGxldGUgc3BlYzpcbiIrSlNPTi5zdHJpbmdpZnkodCxudWxsLDIpKX0sZnVuY3Rpb24obil7cmV0dXJuIG59KSx7bGlzdDpyLGRhdGE6QyhpLGZ1bmN0aW9uKG4pe3ZhciBlPW4ubWFwKGZ1bmN0aW9uKG4pe3JldHVybntjb25maWc6bi5jb25maWcsc3RhdGU6bi5zdGF0ZS5pbml0KG4uY29uZmlnKX19KTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZX19KX07dmFyIHQscixvLGl9LGRtPWZ1bmN0aW9uKG4pe3ZhciBlLHQscj0oZT1JKG4sImJlaGF2aW91cnMiKS5nZXRPcih7fSksdD1obihUKGUpLGZ1bmN0aW9uKG4pe3JldHVybiBlW25dIT09dW5kZWZpbmVkfSksZ24odCxmdW5jdGlvbihuKXtyZXR1cm4gZVtuXS5tZX0pKTtyZXR1cm4gbG0obixyKX0sbW09ZnVuY3Rpb24obixlLHQpe3ZhciByLG8saSx1PXgoeCh7fSwocj1uKS5kb20pLHt1aWQ6ci51aWQsZG9tQ2hpbGRyZW46Z24oci5jb21wb25lbnRzLGZ1bmN0aW9uKG4pe3JldHVybiBuLmVsZW1lbnQoKX0pfSksYz1uLmRvbU1vZGlmaWNhdGlvbi5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIEhyKHt9KX0sSHIpLGE9eyJhbGxveS5iYXNlLm1vZGlmaWNhdGlvbiI6Y30sZj0wPGUubGVuZ3RoP2Z1bmN0aW9uKGUsbix0LHIpe3ZhciBvPXgoe30sbik7cG4odCxmdW5jdGlvbihuKXtvW24ubmFtZSgpXT1uLmV4aGliaXQoZSxyKX0pO3ZhciBpPVpkKG8sZnVuY3Rpb24obixlKXtyZXR1cm57bmFtZTpuLG1vZGlmaWNhdGlvbjplfX0pLHU9ZnVuY3Rpb24obil7cmV0dXJuIHZuKG4sZnVuY3Rpb24obixlKXtyZXR1cm4geCh4KHt9LGUubW9kaWZpY2F0aW9uKSxuKX0se30pfSxjPXZuKGkuY2xhc3NlcyxmdW5jdGlvbihuLGUpe3JldHVybiBlLm1vZGlmaWNhdGlvbi5jb25jYXQobil9LFtdKSxhPXUoaS5hdHRyaWJ1dGVzKSxmPXUoaS5zdHlsZXMpO3JldHVybiBIcih7Y2xhc3NlczpjLGF0dHJpYnV0ZXM6YSxzdHlsZXM6Zn0pfSh0LGEsZSx1KTpjO3JldHVybiBpPWYseCh4KHt9LG89dSkse2F0dHJpYnV0ZXM6eCh4KHt9LG8uYXR0cmlidXRlcyksaS5hdHRyaWJ1dGVzKSxzdHlsZXM6eCh4KHt9LG8uc3R5bGVzKSxpLnN0eWxlcyksY2xhc3NlczpvLmNsYXNzZXMuY29uY2F0KGkuY2xhc3Nlcyl9KX0sZ209ZnVuY3Rpb24obixlLHQpe3ZhciByLG8saSx1PXsiYWxsb3kuYmFzZS5iZWhhdmlvdXIiOm4uZXZlbnRzfTtyZXR1cm4gcj10LG89bi5ldmVudE9yZGVyLGk9b20ocixlLHUpLGNtKGksbykuZ2V0T3JEaWUoKX0scG09ZnVuY3Rpb24odCl7dmFyIG49ZnVuY3Rpb24oKXtyZXR1cm4gc30scj1obyhRZCksZT1ycihhbSh0KSksbz1kbSh0KSxpPW8ubGlzdCx1PW8uZGF0YSxjPWZ1bmN0aW9uKG4pe3ZhciBlPVRlLmZyb21UYWcobi50YWcpO1FyKGUsbi5hdHRyaWJ1dGVzKSxmbShlLG4uY2xhc3NlcyksX2koZSxuLnN0eWxlcyksbi5pbm5lckh0bWwuZWFjaChmdW5jdGlvbihuKXtyZXR1cm4gSW8oZSxuKX0pO3ZhciB0PW4uZG9tQ2hpbGRyZW47cmV0dXJuIFVlKGUsdCksbi52YWx1ZS5lYWNoKGZ1bmN0aW9uKG4pe3BkKGUsbil9KSxuLnVpZCxhZihlLG4udWlkKSxlfShtbShlLGksdSkpLGE9Z20oZSxpLHUpLGY9aG8oZS5jb21wb25lbnRzKSxzPXtnZXRTeXN0ZW06ci5nZXQsY29uZmlnOmZ1bmN0aW9uKG4pe3ZhciBlPXU7cmV0dXJuKGNuKGVbbi5uYW1lKCldKT9lW24ubmFtZSgpXTpmdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiQ291bGQgbm90IGZpbmQgIituLm5hbWUoKSsiIGluICIrSlNPTi5zdHJpbmdpZnkodCxudWxsLDIpKX0pKCl9LGhhc0NvbmZpZ3VyZWQ6ZnVuY3Rpb24obil7cmV0dXJuIGNuKHVbbi5uYW1lKCldKX0sc3BlYzp5KHQpLHJlYWRTdGF0ZTpmdW5jdGlvbihuKXtyZXR1cm4gdVtuXSgpLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gbi5zdGF0ZS5yZWFkU3RhdGUoKX0pLmdldE9yKCJub3QgZW5hYmxlZCIpfSxnZXRBcGlzOmZ1bmN0aW9uKCl7cmV0dXJuIGUuYXBpc30sY29ubmVjdDpmdW5jdGlvbihuKXtyLnNldChuKX0sZGlzY29ubmVjdDpmdW5jdGlvbigpe3Iuc2V0KEpkKG4pKX0sZWxlbWVudDp5KGMpLHN5bmNDb21wb25lbnRzOmZ1bmN0aW9uKCl7dmFyIG49TmUoYyksZT1TbihuLGZ1bmN0aW9uKG4pe3JldHVybiByLmdldCgpLmdldEJ5RG9tKG4pLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm5bXX0sZnVuY3Rpb24obil7cmV0dXJuW25dfSl9KTtmLnNldChlKX0sY29tcG9uZW50czpmLmdldCxldmVudHM6eShhKX07cmV0dXJuIHN9LGhtPWZ1bmN0aW9uKG4pe3ZhciBlLHQ9S2Qobikscj10LmV2ZW50cyxvPWModCxbImV2ZW50cyJdKSxpPShlPUkobywiY29tcG9uZW50cyIpLmdldE9yKFtdKSxnbihlLHhtKSksdT14KHgoe30sbykse2V2ZW50czp4KHgoe30sWWQpLHIpLGNvbXBvbmVudHM6aX0pO3JldHVybiBydC52YWx1ZShwbSh1KSl9LHZtPWZ1bmN0aW9uKG4pe3ZhciBlPVRlLmZyb21UZXh0KG4pO3JldHVybiB5bSh7ZWxlbWVudDplfSl9LHltPWZ1bmN0aW9uKG4pe3ZhciBlPW9yKCJleHRlcm5hbC5jb21wb25lbnQiLFV0KFtmcigiZWxlbWVudCIpLGRyKCJ1aWQiKV0pLG4pLHQ9aG8oSmQoKSk7ZS51aWQuZWFjaChmdW5jdGlvbihuKXthZihlLmVsZW1lbnQsbil9KTt2YXIgcj17Z2V0U3lzdGVtOnQuZ2V0LGNvbmZpZzpPLm5vbmUsaGFzQ29uZmlndXJlZDp5KCExKSxjb25uZWN0OmZ1bmN0aW9uKG4pe3Quc2V0KG4pfSxkaXNjb25uZWN0OmZ1bmN0aW9uKCl7dC5zZXQoSmQoZnVuY3Rpb24oKXtyZXR1cm4gcn0pKX0sZ2V0QXBpczpmdW5jdGlvbigpe3JldHVybnt9fSxlbGVtZW50OnkoZS5lbGVtZW50KSxzcGVjOnkobikscmVhZFN0YXRlOnkoIk5vIHN0YXRlIiksc3luY0NvbXBvbmVudHM6dyxjb21wb25lbnRzOnkoW10pLGV2ZW50czp5KHt9KX07cmV0dXJuIGVmKHIpfSxibT1zZix4bT1mdW5jdGlvbihlKXtyZXR1cm4gSShlLG5mKS5mb2xkKGZ1bmN0aW9uKCl7dmFyIG49ZS5oYXNPd25Qcm9wZXJ0eSgidWlkIik/ZTp4KHt1aWQ6Ym0oIiIpfSxlKTtyZXR1cm4gaG0obikuZ2V0T3JEaWUoKX0sZnVuY3Rpb24obil7cmV0dXJuIG59KX0sd209ZWYsU209ImFsbG95Lml0ZW0taG92ZXIiLE9tPSJhbGxveS5pdGVtLWZvY3VzIixUbT1mdW5jdGlvbihuKXsoVG8obi5lbGVtZW50KCkpLmlzTm9uZSgpfHxraS5pc0ZvY3VzZWQobikpJiYoa2kuaXNGb2N1c2VkKG4pfHxraS5mb2N1cyhuKSxiZShuLFNtLHtpdGVtOm59KSl9LGttPWZ1bmN0aW9uKG4pe2JlKG4sT20se2l0ZW06bn0pfSxFbT15KFNtKSxDbT15KE9tKSxNbT1bZnIoImRhdGEiKSxmcigiY29tcG9uZW50cyIpLGZyKCJkb20iKSxocigiaGFzU3VibWVudSIsITEpLGRyKCJ0b2dnbGluZyIpLGdhKCJpdGVtQmVoYXZpb3VycyIsW2dpLGtpLHNhLFFmXSksaHIoImlnbm9yZUZvY3VzIiwhMSksaHIoImRvbU1vZGlmaWNhdGlvbiIse30pLFFvKCJidWlsZGVyIixmdW5jdGlvbihuKXtyZXR1cm57ZG9tOm4uZG9tLGRvbU1vZGlmaWNhdGlvbjp4KHgoe30sbi5kb21Nb2RpZmljYXRpb24pLHthdHRyaWJ1dGVzOngoeCh4KHtyb2xlOm4udG9nZ2xpbmcuaXNTb21lKCk/Im1lbnVpdGVtY2hlY2tib3giOiJtZW51aXRlbSJ9LG4uZG9tTW9kaWZpY2F0aW9uLmF0dHJpYnV0ZXMpLHsiYXJpYS1oYXNwb3B1cCI6bi5oYXNTdWJtZW51fSksbi5oYXNTdWJtZW51P3siYXJpYS1leHBhbmRlZCI6ITF9Ont9KX0pLGJlaGF2aW91cnM6cGEobi5pdGVtQmVoYXZpb3Vycyxbbi50b2dnbGluZy5mb2xkKGdpLnJldm9rZSxmdW5jdGlvbihuKXtyZXR1cm4gZ2kuY29uZmlnKHgoe2FyaWE6e21vZGU6ImNoZWNrZWQifX0sbikpfSksa2kuY29uZmlnKHtpZ25vcmU6bi5pZ25vcmVGb2N1cyxzdG9wTW91c2Vkb3duOm4uaWdub3JlRm9jdXMsb25Gb2N1czpmdW5jdGlvbihuKXtrbShuKX19KSxzYS5jb25maWcoe21vZGU6ImV4ZWN1dGlvbiJ9KSxRZi5jb25maWcoe3N0b3JlOnttb2RlOiJtZW1vcnkiLGluaXRpYWxWYWx1ZTpuLmRhdGF9fSksYWQoIml0ZW0tdHlwZS1ldmVudHMiLHUoeGkoKSxbRXIoWW4oKSxUbSksRXIoZmUoKSxraS5mb2N1cyldKSldKSxjb21wb25lbnRzOm4uY29tcG9uZW50cyxldmVudE9yZGVyOm4uZXZlbnRPcmRlcn19KSxocigiZXZlbnRPcmRlciIse30pXSxfbT1bZnIoImRvbSIpLGZyKCJjb21wb25lbnRzIiksUW8oImJ1aWxkZXIiLGZ1bmN0aW9uKG4pe3JldHVybntkb206bi5kb20sY29tcG9uZW50czpuLmNvbXBvbmVudHMsZXZlbnRzOlRyKFsoZT1mZSgpLEVyKGUsZnVuY3Rpb24obixlKXtlLnN0b3AoKX0pKV0pfTt2YXIgZX0pXSxEbT1mdW5jdGlvbigpe3JldHVybiJpdGVtLXdpZGdldCJ9LEltPXkoW3phKHtuYW1lOiJ3aWRnZXQiLG92ZXJyaWRlczpmdW5jdGlvbihlKXtyZXR1cm57YmVoYXZpb3VyczpVcihbUWYuY29uZmlnKHtzdG9yZTp7bW9kZToibWFudWFsIixnZXRWYWx1ZTpmdW5jdGlvbihuKXtyZXR1cm4gZS5kYXRhfSxzZXRWYWx1ZTpmdW5jdGlvbigpe319fSldKX19fSldKSxGbT1bZnIoInVpZCIpLGZyKCJkYXRhIiksZnIoImNvbXBvbmVudHMiKSxmcigiZG9tIiksaHIoImF1dG9mb2N1cyIsITEpLGhyKCJpZ25vcmVGb2N1cyIsITEpLGdhKCJ3aWRnZXRCZWhhdmlvdXJzIixbUWYsa2ksc2FdKSxocigiZG9tTW9kaWZpY2F0aW9uIix7fSksWmEoSW0oKSksUW8oImJ1aWxkZXIiLGZ1bmN0aW9uKHQpe3ZhciBuPXFhKERtKCksdCxJbSgpKSxlPVlhKERtKCksdCxuLmludGVybmFscygpKSxyPWZ1bmN0aW9uKG4pe3JldHVybiBLYShuLHQsIndpZGdldCIpLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gc2EuZm9jdXNJbihuKSxufSl9LG89ZnVuY3Rpb24obixlKXtyZXR1cm4gUHUoZS5ldmVudCgpLnRhcmdldCgpKXx8dC5hdXRvZm9jdXMmJmUuc2V0U291cmNlKG4uZWxlbWVudCgpKSxPLm5vbmUoKX07cmV0dXJue2RvbTp0LmRvbSxjb21wb25lbnRzOmUsZG9tTW9kaWZpY2F0aW9uOnQuZG9tTW9kaWZpY2F0aW9uLGV2ZW50czpUcihbQnIoZnVuY3Rpb24obixlKXtyKG4pLmVhY2goZnVuY3Rpb24obil7ZS5zdG9wKCl9KX0pLEVyKFluKCksVG0pLEVyKGZlKCksZnVuY3Rpb24obixlKXt0LmF1dG9mb2N1cz9yKG4pOmtpLmZvY3VzKG4pfSldKSxiZWhhdmlvdXJzOnBhKHQud2lkZ2V0QmVoYXZpb3VycyxbUWYuY29uZmlnKHtzdG9yZTp7bW9kZToibWVtb3J5Iixpbml0aWFsVmFsdWU6dC5kYXRhfX0pLGtpLmNvbmZpZyh7aWdub3JlOnQuaWdub3JlRm9jdXMsb25Gb2N1czpmdW5jdGlvbihuKXtrbShuKX19KSxzYS5jb25maWcoe21vZGU6InNwZWNpYWwiLGZvY3VzSW46dC5hdXRvZm9jdXM/ZnVuY3Rpb24obil7cihuKX06WXIoKSxvbkxlZnQ6byxvblJpZ2h0Om8sb25Fc2NhcGU6ZnVuY3Rpb24obixlKXtyZXR1cm4ga2kuaXNGb2N1c2VkKG4pfHx0LmF1dG9mb2N1cz8odC5hdXRvZm9jdXMmJmUuc2V0U291cmNlKG4uZWxlbWVudCgpKSxPLm5vbmUoKSk6KGtpLmZvY3VzKG4pLE8uc29tZSghMCkpfX0pXSl9fSldLFJtPXVyKCJ0eXBlIix7d2lkZ2V0OkZtLGl0ZW06TW0sc2VwYXJhdG9yOl9tfSksVm09eShbR2Eoe2ZhY3Rvcnk6e3NrZXRjaDpmdW5jdGlvbihuKXt2YXIgZT1vcigibWVudS5zcGVjIGl0ZW0iLFJtLG4pO3JldHVybiBlLmJ1aWxkZXIoZSl9fSxuYW1lOiJpdGVtcyIsdW5pdDoiaXRlbSIsZGVmYXVsdHM6ZnVuY3Rpb24obixlKXtyZXR1cm4gZS5oYXNPd25Qcm9wZXJ0eSgidWlkIik/ZTp4KHgoe30sZSkse3VpZDpzZigiaXRlbSIpfSl9LG92ZXJyaWRlczpmdW5jdGlvbihuLGUpe3JldHVybnt0eXBlOmUudHlwZSxpZ25vcmVGb2N1czpuLmZha2VGb2N1cyxkb21Nb2RpZmljYXRpb246e2NsYXNzZXM6W24ubWFya2Vycy5pdGVtXX19fX0pXSksQm09eShbZnIoInZhbHVlIiksZnIoIml0ZW1zIiksZnIoImRvbSIpLGZyKCJjb21wb25lbnRzIiksaHIoImV2ZW50T3JkZXIiLHt9KSxsYSgibWVudUJlaGF2aW91cnMiLFtPdSxRZixsZCxzYV0pLHZyKCJtb3ZlbWVudCIse21vZGU6Im1lbnUiLG1vdmVPblRhYjohMH0sdXIoIm1vZGUiLHtncmlkOltuaSgpLFFvKCJjb25maWciLGZ1bmN0aW9uKG4sZSl7cmV0dXJue21vZGU6ImZsYXRncmlkIixzZWxlY3RvcjoiLiIrbi5tYXJrZXJzLml0ZW0saW5pdFNpemU6e251bUNvbHVtbnM6ZS5pbml0U2l6ZS5udW1Db2x1bW5zLG51bVJvd3M6ZS5pbml0U2l6ZS5udW1Sb3dzfSxmb2N1c01hbmFnZXI6bi5mb2N1c01hbmFnZXJ9fSldLG1hdHJpeDpbUW8oImNvbmZpZyIsZnVuY3Rpb24obixlKXtyZXR1cm57bW9kZToibWF0cml4IixzZWxlY3RvcnM6e3JvdzplLnJvd1NlbGVjdG9yLGNlbGw6Ii4iK24ubWFya2Vycy5pdGVtfSxmb2N1c01hbmFnZXI6bi5mb2N1c01hbmFnZXJ9fSksZnIoInJvd1NlbGVjdG9yIildLG1lbnU6W2hyKCJtb3ZlT25UYWIiLCEwKSxRbygiY29uZmlnIixmdW5jdGlvbihuLGUpe3JldHVybnttb2RlOiJtZW51IixzZWxlY3RvcjoiLiIrbi5tYXJrZXJzLml0ZW0sbW92ZU9uVGFiOmUubW92ZU9uVGFiLGZvY3VzTWFuYWdlcjpuLmZvY3VzTWFuYWdlcn19KV19KSksc3IoIm1hcmtlcnMiLFVvKCkpLGhyKCJmYWtlRm9jdXMiLCExKSxocigiZm9jdXNNYW5hZ2VyIixrdSgpKSxxbygib25IaWdobGlnaHQiKV0pLEFtPXkoImFsbG95Lm1lbnUtZm9jdXMiKSxqbT14Zih7bmFtZToiTWVudSIsY29uZmlnRmllbGRzOkJtKCkscGFydEZpZWxkczpWbSgpLGZhY3Rvcnk6ZnVuY3Rpb24obixlLHQscil7cmV0dXJue3VpZDpuLnVpZCxkb206bi5kb20sbWFya2VyczpuLm1hcmtlcnMsYmVoYXZpb3VyczptYShuLm1lbnVCZWhhdmlvdXJzLFtPdS5jb25maWcoe2hpZ2hsaWdodENsYXNzOm4ubWFya2Vycy5zZWxlY3RlZEl0ZW0saXRlbUNsYXNzOm4ubWFya2Vycy5pdGVtLG9uSGlnaGxpZ2h0Om4ub25IaWdobGlnaHR9KSxRZi5jb25maWcoe3N0b3JlOnttb2RlOiJtZW1vcnkiLGluaXRpYWxWYWx1ZTpuLnZhbHVlfX0pLGxkLmNvbmZpZyh7ZmluZDpPLnNvbWV9KSxzYS5jb25maWcobi5tb3ZlbWVudC5jb25maWcobixuLm1vdmVtZW50KSldKSxldmVudHM6VHIoW0VyKENtKCksZnVuY3Rpb24oZSx0KXt2YXIgbj10LmV2ZW50KCk7ZS5nZXRTeXN0ZW0oKS5nZXRCeURvbShuLnRhcmdldCgpKS5lYWNoKGZ1bmN0aW9uKG4pe091LmhpZ2hsaWdodChlLG4pLHQuc3RvcCgpLGJlKGUsQW0oKSx7bWVudTplLGl0ZW06bn0pfSl9KSxFcihFbSgpLGZ1bmN0aW9uKG4sZSl7dmFyIHQ9ZS5ldmVudCgpLml0ZW0oKTtPdS5oaWdobGlnaHQobix0KX0pXSksY29tcG9uZW50czplLGV2ZW50T3JkZXI6bi5ldmVudE9yZGVyLGRvbU1vZGlmaWNhdGlvbjp7YXR0cmlidXRlczp7cm9sZToibWVudSJ9fX19fSksSG09ZnVuY3Rpb24obix0KXt2YXIgcj1qZSh0KSxlPU9vKHIpLmJpbmQoZnVuY3Rpb24oZSl7dmFyIG8saSxuPWZ1bmN0aW9uKG4pe3JldHVybiBBZShlLG4pfTtyZXR1cm4gbih0KT9PLnNvbWUodCk6KG89biwoaT1mdW5jdGlvbihuKXtmb3IodmFyIGU9MDtlPG4uY2hpbGROb2Rlcy5sZW5ndGg7ZSsrKXt2YXIgdD1UZS5mcm9tRG9tKG4uY2hpbGROb2Rlc1tlXSk7aWYobyh0KSlyZXR1cm4gTy5zb21lKHQpO3ZhciByPWkobi5jaGlsZE5vZGVzW2VdKTtpZihyLmlzU29tZSgpKXJldHVybiByfXJldHVybiBPLm5vbmUoKX0pKHQuZG9tKCkpKX0pLG89bih0KTtyZXR1cm4gZS5lYWNoKGZ1bmN0aW9uKGUpe09vKHIpLmZpbHRlcihmdW5jdGlvbihuKXtyZXR1cm4gQWUobixlKX0pLmZvbGQoZnVuY3Rpb24oKXt3byhlKX0sdyl9KSxvfSxObT1mdW5jdGlvbihuLGUsdCxyKXt2YXIgbz1uLmdldFN5c3RlbSgpLmJ1aWxkKHIpO1FlKG4sbyx0KX0sUG09ZnVuY3Rpb24obixlLHQscil7dmFyIG89em0obik7Ym4obyxmdW5jdGlvbihuKXtyZXR1cm4gQWUoci5lbGVtZW50KCksbi5lbGVtZW50KCkpfSkuZWFjaChaZSl9LHptPWZ1bmN0aW9uKG4sZSl7cmV0dXJuIG4uY29tcG9uZW50cygpfSxMbT1mdW5jdGlvbihlLG4sdCxvLHIpe3ZhciBpPXptKGUpO3JldHVybiBPLmZyb20oaVtvXSkubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBQbShlLDAsMCxuKSxyLmVhY2goZnVuY3Rpb24obil7Tm0oZSwwLGZ1bmN0aW9uKG4sZSl7dmFyIHQscjtyPWUsUGUodD1uLG8pLmZvbGQoZnVuY3Rpb24oKXskZSh0LHIpfSxmdW5jdGlvbihuKXt6ZShuLHIpfSl9LG4pfSksbn0pfSxHbT1Ycih7ZmllbGRzOltdLG5hbWU6InJlcGxhY2luZyIsYXBpczovKiAqL09iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLGFwcGVuZDpmdW5jdGlvbihuLGUsdCxyKXtObShuLDAsJGUscil9LHByZXBlbmQ6ZnVuY3Rpb24obixlLHQscil7Tm0obiwwLEdlLHIpfSxyZW1vdmU6UG0scmVwbGFjZUF0OkxtLHJlcGxhY2VCeTpmdW5jdGlvbihlLG4sdCxyLG8pe3ZhciBpPXptKGUpO3JldHVybiB4bihpLHIpLmJpbmQoZnVuY3Rpb24obil7cmV0dXJuIExtKGUsMCwwLG4sbyl9KX0sc2V0OmZ1bmN0aW9uKGUsbix0LHIpe0htKGZ1bmN0aW9uKCl7dmFyIG49Z24ocixlLmdldFN5c3RlbSgpLmJ1aWxkKTtKZShlLG4pfSxlLmVsZW1lbnQoKSl9LGNvbnRlbnRzOnptfSl9KSwkbT1mdW5jdGlvbih0LHIsbyxuKXtyZXR1cm4gSShvLG4pLmJpbmQoZnVuY3Rpb24obil7cmV0dXJuIEkodCxuKS5iaW5kKGZ1bmN0aW9uKG4pe3ZhciBlPSRtKHQscixvLG4pO3JldHVybiBPLnNvbWUoW25dLmNvbmNhdChlKSl9KX0pLmdldE9yKFtdKX0sVW09ZnVuY3Rpb24obixlKXt2YXIgdD17fTtFKG4sZnVuY3Rpb24obixlKXtwbihuLGZ1bmN0aW9uKG4pe3Rbbl09ZX0pfSk7dmFyIHI9ZSxvPU0oZSxmdW5jdGlvbihuLGUpe3JldHVybntrOm4sdjplfX0pLGk9QyhvLGZ1bmN0aW9uKG4sZSl7cmV0dXJuW2VdLmNvbmNhdCgkbSh0LHIsbyxlKSl9KTtyZXR1cm4gQyh0LGZ1bmN0aW9uKG4pe3JldHVybiBJKGksbikuZ2V0T3IoW25dKX0pfSxXbT1mdW5jdGlvbihuKXtyZXR1cm4icHJlcGFyZWQiPT09bi50eXBlP08uc29tZShuLm1lbnUpOk8ubm9uZSgpfSxYbT17aW5pdDpmdW5jdGlvbigpe3ZhciBpPWhvKHt9KSx1PWhvKHt9KSxjPWhvKHt9KSxhPWhvKE8ubm9uZSgpKSxmPWhvKHt9KSxzPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihuLGUpe2Zvcih2YXIgdD1UKG4pLHI9MCxvPXQubGVuZ3RoO3I8bztyKyspe3ZhciBpPXRbcl0sdT1uW2ldO2lmKGUodSxpLG4pKXJldHVybiBPLnNvbWUodSl9cmV0dXJuIE8ubm9uZSgpfShpLmdldCgpLGZ1bmN0aW9uKG4sZSl7cmV0dXJuIG49PT10fSl9LGw9ZnVuY3Rpb24obil7cmV0dXJuIGUobikuYmluZChXbSl9LGU9ZnVuY3Rpb24obil7cmV0dXJuIEkodS5nZXQoKSxuKX0sdD1mdW5jdGlvbihuKXtyZXR1cm4gSShpLmdldCgpLG4pfTtyZXR1cm57c2V0TWVudUJ1aWx0OmZ1bmN0aW9uKG4sZSl7dmFyIHQ7dS5zZXQoeCh4KHt9LHUuZ2V0KCkpLCgodD17fSlbbl09e3R5cGU6InByZXBhcmVkIixtZW51OmV9LHQpKSl9LHNldENvbnRlbnRzOmZ1bmN0aW9uKG4sZSx0LHIpe2Euc2V0KE8uc29tZShuKSksaS5zZXQodCksdS5zZXQoZSksZi5zZXQocik7dmFyIG89VW0ocix0KTtjLnNldChvKX0sZXhwYW5kOmZ1bmN0aW9uKHQpe3JldHVybiBJKGkuZ2V0KCksdCkubWFwKGZ1bmN0aW9uKG4pe3ZhciBlPUkoYy5nZXQoKSx0KS5nZXRPcihbXSk7cmV0dXJuW25dLmNvbmNhdChlKX0pfSxyZWZyZXNoOmZ1bmN0aW9uKG4pe3JldHVybiBJKGMuZ2V0KCksbil9LGNvbGxhcHNlOmZ1bmN0aW9uKG4pe3JldHVybiBJKGMuZ2V0KCksbikuYmluZChmdW5jdGlvbihuKXtyZXR1cm4gMTxuLmxlbmd0aD9PLnNvbWUobi5zbGljZSgxKSk6Ty5ub25lKCl9KX0sbG9va3VwTWVudTplLGxvb2t1cEl0ZW06dCxvdGhlck1lbnVzOmZ1bmN0aW9uKG4pe3ZhciBlPWYuZ2V0KCk7cmV0dXJuIGtuKFQoZSksbil9LGdldFByaW1hcnk6ZnVuY3Rpb24oKXtyZXR1cm4gYS5nZXQoKS5iaW5kKGwpfSxnZXRNZW51czpmdW5jdGlvbigpe3JldHVybiB1LmdldCgpfSxjbGVhcjpmdW5jdGlvbigpe2kuc2V0KHt9KSx1LnNldCh7fSksYy5zZXQoe30pLGEuc2V0KE8ubm9uZSgpKX0saXNDbGVhcjpmdW5jdGlvbigpe3JldHVybiBhLmdldCgpLmlzTm9uZSgpfSxnZXRUcmlnZ2VyaW5nUGF0aDpmdW5jdGlvbihuLHUpe3ZhciBlPWhuKHQobikudG9BcnJheSgpLGZ1bmN0aW9uKG4pe3JldHVybiBsKG4pLmlzU29tZSgpfSk7cmV0dXJuIEkoYy5nZXQoKSxuKS5iaW5kKGZ1bmN0aW9uKG4pe3ZhciBpPVRuKGUuY29uY2F0KG4pKTtyZXR1cm4gZnVuY3Rpb24obil7Zm9yKHZhciBlPVtdLHQ9MDt0PG4ubGVuZ3RoO3QrKyl7dmFyIHI9blt0XTtpZighci5pc1NvbWUoKSlyZXR1cm4gTy5ub25lKCk7ZS5wdXNoKHIuZ2V0T3JEaWUoKSl9cmV0dXJuIE8uc29tZShlKX0oU24oaSxmdW5jdGlvbihuLGUpe3JldHVybiB0PW4scj11LG89aS5zbGljZSgwLGUrMSksbCh0KS5iaW5kKGZ1bmN0aW9uKGUpe3JldHVybiBzKHQpLmJpbmQoZnVuY3Rpb24obil7cmV0dXJuIHIobikubWFwKGZ1bmN0aW9uKG4pe3JldHVybnt0cmlnZ2VyZWRNZW51OmUsdHJpZ2dlcmluZ0l0ZW06bix0cmlnZ2VyaW5nUGF0aDpvfX0pfSl9KS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIGEuZ2V0KCkuaXMobik/W106W08ubm9uZSgpXX0sZnVuY3Rpb24obil7cmV0dXJuW08uc29tZShuKV19KTt2YXIgdCxyLG99KSl9KX19fSxleHRyYWN0UHJlcGFyZWRNZW51OldtfSxxbT15KCJjb2xsYXBzZS1pdGVtIiksWW09YmYoe25hbWU6IlRpZXJlZE1lbnUiLGNvbmZpZ0ZpZWxkczpbSm8oIm9uRXhlY3V0ZSIpLEpvKCJvbkVzY2FwZSIpLEtvKCJvbk9wZW5NZW51IiksS28oIm9uT3BlblN1Ym1lbnUiKSxxbygib25SZXBvc2l0aW9uTWVudSIpLHFvKCJvbkNvbGxhcHNlTWVudSIpLGhyKCJoaWdobGlnaHRJbW1lZGlhdGVseSIsITApLGxyKCJkYXRhIixbZnIoInByaW1hcnkiKSxmcigibWVudXMiKSxmcigiZXhwYW5zaW9ucyIpXSksaHIoImZha2VGb2N1cyIsITEpLHFvKCJvbkhpZ2hsaWdodCIpLHFvKCJvbkhvdmVyIiksbHIoIm1hcmtlcnMiLFtmcigiYmFja2dyb3VuZE1lbnUiKV0uY29uY2F0KEdvKCkpLmNvbmNhdCgkbygpKSksZnIoImRvbSIpLGhyKCJuYXZpZ2F0ZU9uSG92ZXIiLCEwKSxocigic3RheUluRG9tIiwhMSksbGEoInRtZW51QmVoYXZpb3VycyIsW3NhLE91LGxkLEdtXSksaHIoImV2ZW50T3JkZXIiLHt9KV0sYXBpczp7Y29sbGFwc2VNZW51OmZ1bmN0aW9uKG4sZSl7bi5jb2xsYXBzZU1lbnUoZSl9LGhpZ2hsaWdodFByaW1hcnk6ZnVuY3Rpb24obixlKXtuLmhpZ2hsaWdodFByaW1hcnkoZSl9LHJlcG9zaXRpb25NZW51czpmdW5jdGlvbihuLGUpe24ucmVwb3NpdGlvbk1lbnVzKGUpfX0sZmFjdG9yeTpmdW5jdGlvbihjLG4pe3ZhciBhLGUsaT1obyhPLm5vbmUoKSksbz1mdW5jdGlvbihyLG8sbil7cmV0dXJuIEMobixmdW5jdGlvbihuLGUpe3ZhciB0PWZ1bmN0aW9uKCl7cmV0dXJuIGptLnNrZXRjaCh4KHgoe2RvbTpuLmRvbX0sbikse3ZhbHVlOmUsaXRlbXM6bi5pdGVtcyxtYXJrZXJzOmMubWFya2VycyxmYWtlRm9jdXM6Yy5mYWtlRm9jdXMsb25IaWdobGlnaHQ6Yy5vbkhpZ2hsaWdodCxmb2N1c01hbmFnZXI6Yy5mYWtlRm9jdXM/e2dldDpvPWZ1bmN0aW9uKG4pe3JldHVybiBPdS5nZXRIaWdobGlnaHRlZChuKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIG4uZWxlbWVudCgpfSl9LHNldDpmdW5jdGlvbihlLG4pe3ZhciB0PW8oZSk7ZS5nZXRTeXN0ZW0oKS5nZXRCeURvbShuKS5mb2xkKHcsZnVuY3Rpb24obil7T3UuaGlnaGxpZ2h0KGUsbil9KTt2YXIgcj1vKGUpO1R1KGUsdCxyKX19Omt1KCl9KSk7dmFyIG99O3JldHVybiBlPT09bz97dHlwZToicHJlcGFyZWQiLG1lbnU6ci5nZXRTeXN0ZW0oKS5idWlsZCh0KCkpfTp7dHlwZToibm90YnVpbHQiLG5iTWVudTp0fX0pfSxmPVhtLmluaXQoKSxzPWZ1bmN0aW9uKG4pe3JldHVybiBRZi5nZXRWYWx1ZShuKS52YWx1ZX0sdT1mdW5jdGlvbihuKXtyZXR1cm4gQyhjLmRhdGEubWVudXMsZnVuY3Rpb24obixlKXtyZXR1cm4gU24obi5pdGVtcyxmdW5jdGlvbihuKXtyZXR1cm4ic2VwYXJhdG9yIj09PW4udHlwZT9bXTpbbi5kYXRhLnZhbHVlXX0pfSl9LGw9ZnVuY3Rpb24oZSxuKXtPdS5oaWdobGlnaHQoZSxuKSxPdS5nZXRIaWdobGlnaHRlZChuKS5vclRodW5rKGZ1bmN0aW9uKCl7cmV0dXJuIE91LmdldEZpcnN0KG4pfSkuZWFjaChmdW5jdGlvbihuKXt3ZShlLG4uZWxlbWVudCgpLGZlKCkpfSl9LGQ9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gc3UoZ24obixmdW5jdGlvbihuKXtyZXR1cm4gZS5sb29rdXBNZW51KG4pLmJpbmQoZnVuY3Rpb24obil7cmV0dXJuInByZXBhcmVkIj09PW4udHlwZT9PLnNvbWUobi5tZW51KTpPLm5vbmUoKX0pfSkpfSxtPWZ1bmN0aW9uKGUsbix0KXt2YXIgcj1kKG4sbi5vdGhlck1lbnVzKHQpKTtwbihyLGZ1bmN0aW9uKG4pe3NtKG4uZWxlbWVudCgpLFtjLm1hcmtlcnMuYmFja2dyb3VuZE1lbnVdKSxjLnN0YXlJbkRvbXx8R20ucmVtb3ZlKGUsbil9KX0sZz1mdW5jdGlvbihuLHIpe3ZhciBvLGU9KG89bixpLmdldCgpLmdldE9yVGh1bmsoZnVuY3Rpb24oKXt2YXIgdD17fSxuPUxpKG8uZWxlbWVudCgpLCIuIitjLm1hcmtlcnMuaXRlbSksZT1obihuLGZ1bmN0aW9uKG4pe3JldHVybiJ0cnVlIj09PVpyKG4sImFyaWEtaGFzcG9wdXAiKX0pO3JldHVybiBwbihlLGZ1bmN0aW9uKG4pe28uZ2V0U3lzdGVtKCkuZ2V0QnlEb20obikuZWFjaChmdW5jdGlvbihuKXt2YXIgZT1zKG4pO3RbZV09bn0pfSksaS5zZXQoTy5zb21lKHQpKSx0fSkpO0UoZSxmdW5jdGlvbihuLGUpe3ZhciB0PWRuKHIsZSk7SnIobi5lbGVtZW50KCksImFyaWEtZXhwYW5kZWQiLHQpfSl9LHA9ZnVuY3Rpb24ocixvLGkpe3JldHVybiBPLmZyb20oaVswXSkuYmluZChmdW5jdGlvbihuKXtyZXR1cm4gby5sb29rdXBNZW51KG4pLmJpbmQoZnVuY3Rpb24obil7aWYoIm5vdGJ1aWx0Ij09PW4udHlwZSlyZXR1cm4gTy5ub25lKCk7dmFyIGU9bi5tZW51LHQ9ZChvLGkuc2xpY2UoMSkpO3JldHVybiBwbih0LGZ1bmN0aW9uKG4pe2NvKG4uZWxlbWVudCgpLGMubWFya2Vycy5iYWNrZ3JvdW5kTWVudSl9KSxfZShlLmVsZW1lbnQoKSl8fEdtLmFwcGVuZChyLHdtKGUpKSxzbShlLmVsZW1lbnQoKSxbYy5tYXJrZXJzLmJhY2tncm91bmRNZW51XSksbChyLGUpLG0ocixvLGkpLE8uc29tZShlKX0pfSl9OyhlPWE9YXx8e30pW2UuSGlnaGxpZ2h0U3VibWVudT0wXT0iSGlnaGxpZ2h0U3VibWVudSIsZVtlLkhpZ2hsaWdodFBhcmVudD0xXT0iSGlnaGxpZ2h0UGFyZW50Ijt2YXIgaD1mdW5jdGlvbihvLGksdSl7dm9pZCAwPT09dSYmKHU9YS5IaWdobGlnaHRTdWJtZW51KTt2YXIgbj1zKGkpO3JldHVybiBmLmV4cGFuZChuKS5iaW5kKGZ1bmN0aW9uKHIpe3JldHVybiBnKG8sciksTy5mcm9tKHJbMF0pLmJpbmQoZnVuY3Rpb24odCl7cmV0dXJuIGYubG9va3VwTWVudSh0KS5iaW5kKGZ1bmN0aW9uKG4pe3ZhciBlPWZ1bmN0aW9uKG4sZSx0KXtpZigibm90YnVpbHQiIT09dC50eXBlKXJldHVybiB0Lm1lbnU7dmFyIHI9bi5nZXRTeXN0ZW0oKS5idWlsZCh0Lm5iTWVudSgpKTtyZXR1cm4gZi5zZXRNZW51QnVpbHQoZSxyKSxyfShvLHQsbik7cmV0dXJuIF9lKGUuZWxlbWVudCgpKXx8R20uYXBwZW5kKG8sd20oZSkpLGMub25PcGVuU3VibWVudShvLGksZSxUbihyKSksdT09PWEuSGlnaGxpZ2h0U3VibWVudT8oT3UuaGlnaGxpZ2h0Rmlyc3QoZSkscChvLGYscikpOihPdS5kZWhpZ2hsaWdodEFsbChlKSxPLnNvbWUoaSkpfSl9KX0pfSxyPWZ1bmN0aW9uKGUsdCl7dmFyIG49cyh0KTtyZXR1cm4gZi5jb2xsYXBzZShuKS5iaW5kKGZ1bmN0aW9uKG4pe3JldHVybiBnKGUsbikscChlLGYsbikubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBjLm9uQ29sbGFwc2VNZW51KGUsdCxuKSxufSl9KX0sdD1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtyZXR1cm4gV2kobi5nZXRTb3VyY2UoKSwiLiIrYy5tYXJrZXJzLml0ZW0pLmJpbmQoZnVuY3Rpb24obil7cmV0dXJuIGUuZ2V0U3lzdGVtKCkuZ2V0QnlEb20obikudG9PcHRpb24oKS5iaW5kKGZ1bmN0aW9uKG4pe3JldHVybiB0KGUsbikubWFwKGZ1bmN0aW9uKCl7cmV0dXJuITB9KX0pfSl9fSx2PVRyKFtFcihBbSgpLGZ1bmN0aW9uKHQscil7dmFyIG49ci5ldmVudCgpLml0ZW0oKTtmLmxvb2t1cEl0ZW0ocyhuKSkuZWFjaChmdW5jdGlvbigpe3ZhciBuPXIuZXZlbnQoKS5tZW51KCk7T3UuaGlnaGxpZ2h0KHQsbik7dmFyIGU9cyhyLmV2ZW50KCkuaXRlbSgpKTtmLnJlZnJlc2goZSkuZWFjaChmdW5jdGlvbihuKXtyZXR1cm4gbSh0LGYsbil9KX0pfSksQnIoZnVuY3Rpb24oZSxuKXt2YXIgdD1uLmV2ZW50KCkudGFyZ2V0KCk7ZS5nZXRTeXN0ZW0oKS5nZXRCeURvbSh0KS5lYWNoKGZ1bmN0aW9uKG4pezA9PT1zKG4pLmluZGV4T2YoImNvbGxhcHNlLWl0ZW0iKSYmcihlLG4pLGgoZSxuLGEuSGlnaGxpZ2h0U3VibWVudSkuZm9sZChmdW5jdGlvbigpe2Mub25FeGVjdXRlKGUsbil9LGZ1bmN0aW9uKCl7fSl9KX0pLEZyKGZ1bmN0aW9uKGUsbil7dmFyIHQscjt0PW8oZSxjLmRhdGEucHJpbWFyeSxjLmRhdGEubWVudXMpLHI9dSgpLGYuc2V0Q29udGVudHMoYy5kYXRhLnByaW1hcnksdCxjLmRhdGEuZXhwYW5zaW9ucyxyKSxmLmdldFByaW1hcnkoKS5lYWNoKGZ1bmN0aW9uKG4pe0dtLmFwcGVuZChlLHdtKG4pKSxjLm9uT3Blbk1lbnUoZSxuKSxjLmhpZ2hsaWdodEltbWVkaWF0ZWx5JiZsKGUsbil9KX0pXS5jb25jYXQoYy5uYXZpZ2F0ZU9uSG92ZXI/W0VyKEVtKCksZnVuY3Rpb24obixlKXt2YXIgdCxyLG89ZS5ldmVudCgpLml0ZW0oKTt0PW4scj1zKG8pLGYucmVmcmVzaChyKS5iaW5kKGZ1bmN0aW9uKG4pe3JldHVybiBnKHQsbikscCh0LGYsbil9KSxoKG4sbyxhLkhpZ2hsaWdodFBhcmVudCksYy5vbkhvdmVyKG4sbyl9KV06W10pKSx5PWZ1bmN0aW9uKG4pe3JldHVybiBPdS5nZXRIaWdobGlnaHRlZChuKS5iaW5kKE91LmdldEhpZ2hsaWdodGVkKX0sYj17Y29sbGFwc2VNZW51OmZ1bmN0aW9uKGUpe3koZSkuZWFjaChmdW5jdGlvbihuKXtyKGUsbil9KX0saGlnaGxpZ2h0UHJpbWFyeTpmdW5jdGlvbihlKXtmLmdldFByaW1hcnkoKS5lYWNoKGZ1bmN0aW9uKG4pe2woZSxuKX0pfSxyZXBvc2l0aW9uTWVudXM6ZnVuY3Rpb24ocil7Zi5nZXRQcmltYXJ5KCkuYmluZChmdW5jdGlvbihlKXtyZXR1cm4geShyKS5iaW5kKGZ1bmN0aW9uKG4pe3ZhciBlLHQ9cyhuKSxyPShlPWYuZ2V0TWVudXMoKSxEKGUsZnVuY3Rpb24obil7cmV0dXJuIG59KSksbz1zdShnbihyLFhtLmV4dHJhY3RQcmVwYXJlZE1lbnUpKTtyZXR1cm4gZi5nZXRUcmlnZ2VyaW5nUGF0aCh0LGZ1bmN0aW9uKG4pe3JldHVybiB0PW4sQ24obyxmdW5jdGlvbihuKXtpZighbi5nZXRTeXN0ZW0oKS5pc0Nvbm5lY3RlZCgpKXJldHVybiBPLm5vbmUoKTt2YXIgZT1PdS5nZXRDYW5kaWRhdGVzKG4pO3JldHVybiBibihlLGZ1bmN0aW9uKG4pe3JldHVybiBzKG4pPT09dH0pfSk7dmFyIHR9KX0pLm1hcChmdW5jdGlvbihuKXtyZXR1cm57cHJpbWFyeTplLHRyaWdnZXJpbmdQYXRoOm59fSl9KS5mb2xkKGZ1bmN0aW9uKCl7dmFyIG47bj1yLE8uZnJvbShuLmNvbXBvbmVudHMoKVswXSkuZmlsdGVyKGZ1bmN0aW9uKG4pe3JldHVybiJtZW51Ij09PVpyKG4uZWxlbWVudCgpLCJyb2xlIil9KS5lYWNoKGZ1bmN0aW9uKG4pe2Mub25SZXBvc2l0aW9uTWVudShyLG4sW10pfSl9LGZ1bmN0aW9uKG4pe3ZhciBlPW4ucHJpbWFyeSx0PW4udHJpZ2dlcmluZ1BhdGg7Yy5vblJlcG9zaXRpb25NZW51KHIsZSx0KX0pfX07cmV0dXJue3VpZDpjLnVpZCxkb206Yy5kb20sbWFya2VyczpjLm1hcmtlcnMsYmVoYXZpb3VyczptYShjLnRtZW51QmVoYXZpb3Vycyxbc2EuY29uZmlnKHttb2RlOiJzcGVjaWFsIixvblJpZ2h0OnQoZnVuY3Rpb24obixlKXtyZXR1cm4gUHUoZS5lbGVtZW50KCkpP08ubm9uZSgpOmgobixlLGEuSGlnaGxpZ2h0U3VibWVudSl9KSxvbkxlZnQ6dChmdW5jdGlvbihuLGUpe3JldHVybiBQdShlLmVsZW1lbnQoKSk/Ty5ub25lKCk6cihuLGUpfSksb25Fc2NhcGU6dChmdW5jdGlvbihuLGUpe3JldHVybiByKG4sZSkub3JUaHVuayhmdW5jdGlvbigpe3JldHVybiBjLm9uRXNjYXBlKG4sZSkubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIG59KX0pfSksZm9jdXNJbjpmdW5jdGlvbihlLG4pe2YuZ2V0UHJpbWFyeSgpLmVhY2goZnVuY3Rpb24obil7d2UoZSxuLmVsZW1lbnQoKSxmZSgpKX0pfX0pLE91LmNvbmZpZyh7aGlnaGxpZ2h0Q2xhc3M6Yy5tYXJrZXJzLnNlbGVjdGVkTWVudSxpdGVtQ2xhc3M6Yy5tYXJrZXJzLm1lbnV9KSxsZC5jb25maWcoe2ZpbmQ6ZnVuY3Rpb24obil7cmV0dXJuIE91LmdldEhpZ2hsaWdodGVkKG4pfX0pLEdtLmNvbmZpZyh7fSldKSxldmVudE9yZGVyOmMuZXZlbnRPcmRlcixhcGlzOmIsZXZlbnRzOnZ9fSxleHRyYUFwaXM6e3RpZXJlZERhdGE6ZnVuY3Rpb24obixlLHQpe3JldHVybntwcmltYXJ5Om4sbWVudXM6ZSxleHBhbnNpb25zOnR9fSxzaW5nbGVEYXRhOmZ1bmN0aW9uKG4sZSl7cmV0dXJue3ByaW1hcnk6bixtZW51czpGdChuLGUpLGV4cGFuc2lvbnM6e319fSxjb2xsYXBzZUl0ZW06ZnVuY3Rpb24obil7cmV0dXJue3ZhbHVlOkVhKHFtKCkpLG1ldGE6e3RleHQ6bn19fX19KSxLbT1mdW5jdGlvbihuLGUsdCxyKXtyZXR1cm4gSShlLnJvdXRlcyxyLnN0YXJ0KS5iaW5kKGZ1bmN0aW9uKG4pe3JldHVybiBJKG4sci5kZXN0aW5hdGlvbil9KX0sSm09ZnVuY3Rpb24obixlLHQscil7cmV0dXJuIEttKDAsZSwwLHIpLmJpbmQoZnVuY3Rpb24oZSl7cmV0dXJuIGUudHJhbnNpdGlvbi5tYXAoZnVuY3Rpb24obil7cmV0dXJue3RyYW5zaXRpb246bixyb3V0ZTplfX0pfSl9LFFtPWZ1bmN0aW9uKHQscixuKXt2YXIgZSxvLGk7aT1uLFptKGU9dCxvPXIpLmJpbmQoZnVuY3Rpb24obil7cmV0dXJuIEptKGUsbyxpLG4pfSkuZWFjaChmdW5jdGlvbihuKXt2YXIgZT1uLnRyYW5zaXRpb247Zm8odC5lbGVtZW50KCksZS50cmFuc2l0aW9uQ2xhc3MpLHRvKHQuZWxlbWVudCgpLHIuZGVzdGluYXRpb25BdHRyKX0pfSxabT1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5lbGVtZW50KCk7cmV0dXJuIG5vKHIsdC5kZXN0aW5hdGlvbkF0dHIpLm1hcChmdW5jdGlvbihuKXtyZXR1cm57c3RhcnQ6WnIoZS5lbGVtZW50KCksdC5zdGF0ZUF0dHIpLGRlc3RpbmF0aW9uOm59fSl9LG5nPWZ1bmN0aW9uKG4sZSx0LHIpe1FtKG4sZSx0KSxlbyhuLmVsZW1lbnQoKSxlLnN0YXRlQXR0cikmJlpyKG4uZWxlbWVudCgpLGUuc3RhdGVBdHRyKSE9PXImJmUub25GaW5pc2gobixyKSxKcihuLmVsZW1lbnQoKSxlLnN0YXRlQXR0cixyKX0sZWc9LyogKi9PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxmaW5kUm91dGU6S20sZGlzYWJsZVRyYW5zaXRpb246UW0sZ2V0Q3VycmVudFJvdXRlOlptLGp1bXBUbzpuZyxwcm9ncmVzc1RvOmZ1bmN0aW9uKHQscixvLGkpe3ZhciBlLHU7dT1yLGVvKChlPXQpLmVsZW1lbnQoKSx1LmRlc3RpbmF0aW9uQXR0cikmJihubyhlLmVsZW1lbnQoKSx1LmRlc3RpbmF0aW9uQXR0cikuZWFjaChmdW5jdGlvbihuKXtKcihlLmVsZW1lbnQoKSx1LnN0YXRlQXR0cixuKX0pLHRvKGUuZWxlbWVudCgpLHUuZGVzdGluYXRpb25BdHRyKSk7dmFyIG4sYyxhPShuPXIsYz1pLHtzdGFydDpacih0LmVsZW1lbnQoKSxuLnN0YXRlQXR0ciksZGVzdGluYXRpb246Y30pO0ptKHQscixvLGEpLmZvbGQoZnVuY3Rpb24oKXtuZyh0LHIsbyxpKX0sZnVuY3Rpb24obil7UW0odCxyLG8pO3ZhciBlPW4udHJhbnNpdGlvbjtjbyh0LmVsZW1lbnQoKSxlLnRyYW5zaXRpb25DbGFzcyksSnIodC5lbGVtZW50KCksci5kZXN0aW5hdGlvbkF0dHIsaSl9KX0sZ2V0U3RhdGU6ZnVuY3Rpb24obixlLHQpe3JldHVybiBubyhuLmVsZW1lbnQoKSxlLnN0YXRlQXR0cil9fSksdGc9LyogKi9PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxldmVudHM6ZnVuY3Rpb24obyxpKXtyZXR1cm4gVHIoW0VyKGVlKCksZnVuY3Rpb24odCxuKXt2YXIgcj1uLmV2ZW50KCkucmF3KCk7Wm0odCxvKS5lYWNoKGZ1bmN0aW9uKGUpe0ttKDAsbywwLGUpLmVhY2goZnVuY3Rpb24obil7bi50cmFuc2l0aW9uLmVhY2goZnVuY3Rpb24obil7ci5wcm9wZXJ0eU5hbWU9PT1uLnByb3BlcnR5JiYobmcodCxvLGksZS5kZXN0aW5hdGlvbiksby5vblRyYW5zaXRpb24odCxlKSl9KX0pfSl9KSxGcihmdW5jdGlvbihuLGUpe25nKG4sbyxpLG8uaW5pdGlhbFN0YXRlKX0pXSl9fSkscmc9W2hyKCJkZXN0aW5hdGlvbkF0dHIiLCJkYXRhLXRyYW5zaXRpb25pbmctZGVzdGluYXRpb24iKSxocigic3RhdGVBdHRyIiwiZGF0YS10cmFuc2l0aW9uaW5nLXN0YXRlIiksZnIoImluaXRpYWxTdGF0ZSIpLHFvKCJvblRyYW5zaXRpb24iKSxxbygib25GaW5pc2giKSxzcigicm91dGVzIixlcihydC52YWx1ZSxlcihydC52YWx1ZSxVdChbcHIoInRyYW5zaXRpb24iLFtmcigicHJvcGVydHkiKSxmcigidHJhbnNpdGlvbkNsYXNzIildKV0pKSkpXSxvZz1Ycih7ZmllbGRzOnJnLG5hbWU6InRyYW5zaXRpb25pbmciLGFjdGl2ZTp0ZyxhcGlzOmVnLGV4dHJhOntjcmVhdGVSb3V0ZXM6ZnVuY3Rpb24obil7dmFyIHI9e307cmV0dXJuIEUobixmdW5jdGlvbihuLGUpe3ZhciB0PWUuc3BsaXQoIjwtPiIpO3JbdFswXV09RnQodFsxXSxuKSxyW3RbMV1dPUZ0KHRbMF0sbil9KSxyfSxjcmVhdGVCaXN0YXRlOmZ1bmN0aW9uKG4sZSx0KXtyZXR1cm4gUnQoW3trZXk6bix2YWx1ZTpGdChlLHQpfSx7a2V5OmUsdmFsdWU6RnQobix0KX1dKX0sY3JlYXRlVHJpc3RhdGU6ZnVuY3Rpb24obixlLHQscil7cmV0dXJuIFJ0KFt7a2V5Om4sdmFsdWU6UnQoW3trZXk6ZSx2YWx1ZTpyfSx7a2V5OnQsdmFsdWU6cn1dKX0se2tleTplLHZhbHVlOlJ0KFt7a2V5Om4sdmFsdWU6cn0se2tleTp0LHZhbHVlOnJ9XSl9LHtrZXk6dCx2YWx1ZTpSdChbe2tleTpuLHZhbHVlOnJ9LHtrZXk6ZSx2YWx1ZTpyfV0pfV0pfX19KSxpZz1iaSgic2Nyb2xsYWJsZSIpLHVnPWZ1bmN0aW9uKG4pe2NvKG4saWcpfSxjZz1mdW5jdGlvbihuKXtmbyhuLGlnKX0sYWc9aWcsZmc9ZnVuY3Rpb24obil7cmV0dXJuIEkobiwiZm9ybWF0IikuZ2V0T3Iobi50aXRsZSl9LHNnPWZ1bmN0aW9uKG4sZSx0LHIsbyl7cmV0dXJue2RhdGE6e3ZhbHVlOm4sdGV4dDplfSx0eXBlOiJpdGVtIixkb206e3RhZzoiZGl2IixjbGFzc2VzOm8/W2JpKCJzdHlsZXMtaXRlbS1pcy1tZW51IildOltdfSx0b2dnbGluZzp7dG9nZ2xlT25FeGVjdXRlOiExLHRvZ2dsZUNsYXNzOmJpKCJmb3JtYXQtbWF0Y2hlcyIpLHNlbGVjdGVkOnR9LGl0ZW1CZWhhdmlvdXJzOlVyKG8/W106W3BpKG4sZnVuY3Rpb24obixlKXsoZT9naS5vbjpnaS5vZmYpKG4pfSldKSxjb21wb25lbnRzOlt7ZG9tOnt0YWc6ImRpdiIsYXR0cmlidXRlczp7c3R5bGU6cn0saW5uZXJIdG1sOmV9fV19fSxsZz1mdW5jdGlvbihuLGUsdCxyKXtyZXR1cm57dmFsdWU6bixkb206e3RhZzoiZGl2In0sY29tcG9uZW50czpbd2Yuc2tldGNoKHtkb206e3RhZzoiZGl2IixjbGFzc2VzOltiaSgic3R5bGVzLWNvbGxhcHNlciIpXX0sY29tcG9uZW50czpyP1t7ZG9tOnt0YWc6InNwYW4iLGNsYXNzZXM6W2JpKCJzdHlsZXMtY29sbGFwc2UtaWNvbiIpXX19LHZtKG4pXTpbdm0obildLGFjdGlvbjpmdW5jdGlvbihuKXtpZihyKXt2YXIgZT10KCkuZ2V0KG4pO1ltLmNvbGxhcHNlTWVudShlKX19fSkse2RvbTp7dGFnOiJkaXYiLGNsYXNzZXM6W2JpKCJzdHlsZXMtbWVudS1pdGVtcy1jb250YWluZXIiKV19LGNvbXBvbmVudHM6W2ptLnBhcnRzKCkuaXRlbXMoe30pXSxiZWhhdmlvdXJzOlVyKFthZCgiYWRob2Mtc2Nyb2xsYWJsZS1tZW51IixbRnIoZnVuY3Rpb24obixlKXtNaShuLmVsZW1lbnQoKSwib3ZlcmZsb3cteSIsImF1dG8iKSxNaShuLmVsZW1lbnQoKSwiLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmciLCJ0b3VjaCIpLHVnKG4uZWxlbWVudCgpKX0pLFJyKGZ1bmN0aW9uKG4pe1JpKG4uZWxlbWVudCgpLCJvdmVyZmxvdy15IiksUmkobi5lbGVtZW50KCksIi13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nIiksY2cobi5lbGVtZW50KCkpfSldKV0pfV0saXRlbXM6ZSxtZW51QmVoYXZpb3VyczpVcihbb2cuY29uZmlnKHtpbml0aWFsU3RhdGU6ImFmdGVyIixyb3V0ZXM6b2cuY3JlYXRlVHJpc3RhdGUoImJlZm9yZSIsImN1cnJlbnQiLCJhZnRlciIse3RyYW5zaXRpb246e3Byb3BlcnR5OiJ0cmFuc2Zvcm0iLHRyYW5zaXRpb25DbGFzczoidHJhbnNpdGlvbmluZyJ9fSl9KV0pfX0sZGc9ZnVuY3Rpb24ocil7dmFyIG8saSxuLGUsdCx1PShvPXIuZm9ybWF0cyxpPWZ1bmN0aW9uKCl7cmV0dXJuIGN9LG49bGcoIlN0eWxlcyIsW10uY29uY2F0KGduKG8uaXRlbXMsZnVuY3Rpb24obil7cmV0dXJuIHNnKGZnKG4pLG4udGl0bGUsbi5pc1NlbGVjdGVkKCksbi5nZXRQcmV2aWV3KCksUihvLmV4cGFuc2lvbnMsZmcobikpKX0pKSxpLCExKSxlPUMoby5tZW51cyxmdW5jdGlvbihuLGUpe3ZhciB0PWduKG4sZnVuY3Rpb24obil7cmV0dXJuIHNnKGZnKG4pLG4udGl0bGUsbi5pc1NlbGVjdGVkIT09dW5kZWZpbmVkJiZuLmlzU2VsZWN0ZWQoKSxuLmdldFByZXZpZXchPT11bmRlZmluZWQ/bi5nZXRQcmV2aWV3KCk6IiIsUihvLmV4cGFuc2lvbnMsZmcobikpKX0pO3JldHVybiBsZyhlLHQsaSwhMCl9KSx0PWN0KGUsRnQoInN0eWxlcyIsbikpLHt0bWVudTpZbS50aWVyZWREYXRhKCJzdHlsZXMiLHQsby5leHBhbnNpb25zKX0pLGM9emwoWW0uc2tldGNoKHtkb206e3RhZzoiZGl2IixjbGFzc2VzOltiaSgic3R5bGVzLW1lbnUiKV19LGNvbXBvbmVudHM6W10sZmFrZUZvY3VzOiEwLHN0YXlJbkRvbTohMCxvbkV4ZWN1dGU6ZnVuY3Rpb24obixlKXt2YXIgdD1RZi5nZXRWYWx1ZShlKTtyZXR1cm4gci5oYW5kbGUoZSx0LnZhbHVlKSxPLm5vbmUoKX0sb25Fc2NhcGU6ZnVuY3Rpb24oKXtyZXR1cm4gTy5ub25lKCl9LG9uT3Blbk1lbnU6ZnVuY3Rpb24obixlKXt2YXIgdD1lcyhuLmVsZW1lbnQoKSk7bnMoZS5lbGVtZW50KCksdCksb2cuanVtcFRvKGUsImN1cnJlbnQiKX0sb25PcGVuU3VibWVudTpmdW5jdGlvbihuLGUsdCl7dmFyIHI9ZXMobi5lbGVtZW50KCkpLG89JGkoZS5lbGVtZW50KCksJ1tyb2xlPSJtZW51Il0nKS5nZXRPckRpZSgiaGFja3kiKSxpPW4uZ2V0U3lzdGVtKCkuZ2V0QnlEb20obykuZ2V0T3JEaWUoKTtucyh0LmVsZW1lbnQoKSxyKSxvZy5wcm9ncmVzc1RvKGksImJlZm9yZSIpLG9nLmp1bXBUbyh0LCJhZnRlciIpLG9nLnByb2dyZXNzVG8odCwiY3VycmVudCIpfSxvbkNvbGxhcHNlTWVudTpmdW5jdGlvbihuLGUsdCl7dmFyIHI9JGkoZS5lbGVtZW50KCksJ1tyb2xlPSJtZW51Il0nKS5nZXRPckRpZSgiaGFja3kiKSxvPW4uZ2V0U3lzdGVtKCkuZ2V0QnlEb20ocikuZ2V0T3JEaWUoKTtvZy5wcm9ncmVzc1RvKG8sImFmdGVyIiksb2cucHJvZ3Jlc3NUbyh0LCJjdXJyZW50Iil9LG5hdmlnYXRlT25Ib3ZlcjohMSxoaWdobGlnaHRJbW1lZGlhdGVseTohMCxkYXRhOnUudG1lbnUsbWFya2Vyczp7YmFja2dyb3VuZE1lbnU6YmkoInN0eWxlcy1iYWNrZ3JvdW5kLW1lbnUiKSxtZW51OmJpKCJzdHlsZXMtbWVudSIpLHNlbGVjdGVkTWVudTpiaSgic3R5bGVzLXNlbGVjdGVkLW1lbnUiKSxpdGVtOmJpKCJzdHlsZXMtaXRlbSIpLHNlbGVjdGVkSXRlbTpiaSgic3R5bGVzLXNlbGVjdGVkLWl0ZW0iKX19KSk7cmV0dXJuIGMuYXNTcGVjKCl9LG1nPWZ1bmN0aW9uKG4pe3JldHVybiBSKG4sIml0ZW1zIik/KHQ9Y3QoSXQoZT1uLFsiaXRlbXMiXSkse21lbnU6ITB9KSxyPWdnKGUuaXRlbXMpLHtpdGVtOnQsbWVudXM6Y3Qoci5tZW51cyxGdChlLnRpdGxlLHIuaXRlbXMpKSxleHBhbnNpb25zOmN0KHIuZXhwYW5zaW9ucyxGdChlLnRpdGxlLGUudGl0bGUpKX0pOntpdGVtOm4sbWVudXM6e30sZXhwYW5zaW9uczp7fX07dmFyIGUsdCxyfSxnZz1mdW5jdGlvbihuKXtyZXR1cm4gdm4obixmdW5jdGlvbihuLGUpe3ZhciB0PW1nKGUpO3JldHVybnttZW51czpjdChuLm1lbnVzLHQubWVudXMpLGl0ZW1zOlt0Lml0ZW1dLmNvbmNhdChuLml0ZW1zKSxleHBhbnNpb25zOmN0KG4uZXhwYW5zaW9ucyx0LmV4cGFuc2lvbnMpfX0se21lbnVzOnt9LGV4cGFuc2lvbnM6e30saXRlbXM6W119KX0scGc9ZnVuY3Rpb24odSxuKXt2YXIgYz1mdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdS5mb3JtYXR0ZXIubWF0Y2gobil9fSxhPWZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB1LmZvcm1hdHRlci5nZXRDc3NUZXh0KG4pfX0sZT1JKG4sInN0eWxlX2Zvcm1hdHMiKS5nZXRPcihYZCksZj1mdW5jdGlvbihuKXtyZXR1cm4gZ24obixmdW5jdGlvbihuKXtpZihSKG4sIml0ZW1zIikpe3ZhciBlPWYobi5pdGVtcyk7cmV0dXJuIGN0KGN0KG4se2lzU2VsZWN0ZWQ6eSghMSksZ2V0UHJldmlldzp5KCIiKX0pLHtpdGVtczplfSl9cmV0dXJuIFIobiwiZm9ybWF0Iik/Y3QoaT1uLHtpc1NlbGVjdGVkOmMoaS5mb3JtYXQpLGdldFByZXZpZXc6YShpLmZvcm1hdCl9KToocj1FYSgodD1uKS50aXRsZSksbz1jdCh0LHtmb3JtYXQ6cixpc1NlbGVjdGVkOmMociksZ2V0UHJldmlldzphKHIpfSksdS5mb3JtYXR0ZXIucmVnaXN0ZXIocixvKSxvKTt2YXIgdCxyLG8saX0pfTtyZXR1cm4gZihlKX0saGc9ZnVuY3Rpb24odCxuLHIpe3ZhciBlLG8saSx1PShlPXQsaT0obz1mdW5jdGlvbihuKXtyZXR1cm4gU24obixmdW5jdGlvbihuKXtyZXR1cm4gbi5pdGVtcz09PXVuZGVmaW5lZD8hUihuLCJmb3JtYXQiKXx8ZS5mb3JtYXR0ZXIuY2FuQXBwbHkobi5mb3JtYXQpP1tuXTpbXTowPG8obi5pdGVtcykubGVuZ3RoP1tuXTpbXX0pfSkobiksZ2coaSkpO3JldHVybiBkZyh7Zm9ybWF0czp1LGhhbmRsZTpmdW5jdGlvbihuLGUpe3QudW5kb01hbmFnZXIudHJhbnNhY3QoZnVuY3Rpb24oKXtnaS5pc09uKG4pP3QuZm9ybWF0dGVyLnJlbW92ZShlKTp0LmZvcm1hdHRlci5hcHBseShlKX0pLHIoKX19KX0sdmc9WyJ1bmRvIiwiYm9sZCIsIml0YWxpYyIsImxpbmsiLCJpbWFnZSIsImJ1bGxpc3QiLCJzdHlsZXNlbGVjdCJdLHlnPWZ1bmN0aW9uKG4pe3ZhciBlPW4ucmVwbGFjZSgvXHwvZywiICIpLnRyaW0oKTtyZXR1cm4gMDxlLmxlbmd0aD9lLnNwbGl0KC9ccysvKTpbXX0sYmc9ZnVuY3Rpb24obil7cmV0dXJuIFNuKG4sZnVuY3Rpb24obil7cmV0dXJuKG9uKG4pP2JnOnlnKShuKX0pfSx4Zz1mdW5jdGlvbih0LG8pe3ZhciBuPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBfZihlPXQsZnVuY3Rpb24oKXtuLmV4ZWNDb21tYW5kKGUpfSx7fSxuPW8pO3ZhciBuLGV9fSxlPWZ1bmN0aW9uKHIpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBuPW8sdD1FZihlPXIpLF9mKGUsZnVuY3Rpb24oKXtuLmV4ZWNDb21tYW5kKGUpfSx0LG4pO3ZhciBuLGUsdH19LHI9ZnVuY3Rpb24obixlLHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBDZihvLG4sZSx0KX19LGk9bigidW5kbyIpLHU9bigicmVkbyIpLGM9ZSgiYm9sZCIpLGE9ZSgiaXRhbGljIiksZj1lKCJ1bmRlcmxpbmUiKSxzPW4oInJlbW92ZWZvcm1hdCIpLGw9cigidW5saW5rIiwibGluayIsZnVuY3Rpb24oKXtvLmV4ZWNDb21tYW5kKCJ1bmxpbmsiLG51bGwsITEpfSksZD1yKCJ1bm9yZGVyZWQtbGlzdCIsInVsIixmdW5jdGlvbigpe28uZXhlY0NvbW1hbmQoIkluc2VydFVub3JkZXJlZExpc3QiLG51bGwsITEpfSksbT1yKCJvcmRlcmVkLWxpc3QiLCJvbCIsZnVuY3Rpb24oKXtvLmV4ZWNDb21tYW5kKCJJbnNlcnRPcmRlcmVkTGlzdCIsbnVsbCwhMSl9KSxnPXBnKG8sby5zZXR0aW5ncykscD1mdW5jdGlvbigpe3JldHVybiBoZyhvLGcsZnVuY3Rpb24oKXtvLmZpcmUoInNjcm9sbEludG9WaWV3Iil9KX0saD1mdW5jdGlvbihuLGUpe3JldHVybntpc1N1cHBvcnRlZDpmdW5jdGlvbigpe3ZhciBlPW8udWkucmVnaXN0cnkuZ2V0QWxsKCkuYnV0dG9ucztyZXR1cm4gbi5mb3JhbGwoZnVuY3Rpb24obil7cmV0dXJuIFIoZSxuKX0pfSxza2V0Y2g6ZX19O3JldHVybnt1bmRvOmgoTy5ub25lKCksaSkscmVkbzpoKE8ubm9uZSgpLHUpLGJvbGQ6aChPLm5vbmUoKSxjKSxpdGFsaWM6aChPLm5vbmUoKSxhKSx1bmRlcmxpbmU6aChPLm5vbmUoKSxmKSxyZW1vdmVmb3JtYXQ6aChPLm5vbmUoKSxzKSxsaW5rOmgoTy5ub25lKCksZnVuY3Rpb24oKXtyZXR1cm4gV2QodCxvKX0pLHVubGluazpoKE8ubm9uZSgpLGwpLGltYWdlOmgoTy5ub25lKCksZnVuY3Rpb24oKXtyZXR1cm4gUWwobyl9KSxidWxsaXN0OmgoTy5zb21lKCJidWxsaXN0IiksZCksbnVtbGlzdDpoKE8uc29tZSgibnVtbGlzdCIpLG0pLGZvbnRzaXplc2VsZWN0OmgoTy5ub25lKCksZnVuY3Rpb24oKXtyZXR1cm4gbj17b25DaGFuZ2U6ZnVuY3Rpb24obil7SGwoZSxuKX0sZ2V0SW5pdGlhbFZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGpsKGUpfX0sRGwodCwiZm9udC1zaXplIixmdW5jdGlvbigpe3JldHVybiBQbChuKX0sZT1vKTt2YXIgZSxufSksZm9yZWNvbG9yOmgoTy5ub25lKCksZnVuY3Rpb24oKXtyZXR1cm4gbj17b25DaGFuZ2U6ZnVuY3Rpb24obixlLHQpe3IudW5kb01hbmFnZXIudHJhbnNhY3QoZnVuY3Rpb24oKXtyLmZvcm1hdHRlci5hcHBseSgiZm9yZWNvbG9yIix7dmFsdWU6dH0pLHIubm9kZUNoYW5nZWQoKX0pfSxnZXRJbml0aWFsVmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4tMX19LERsKHQsImNvbG9yLWxldmVscyIsZnVuY3Rpb24oKXtyZXR1cm4gSWwobil9LHI9byk7dmFyIHIsbn0pLHN0eWxlc2VsZWN0OmgoTy5ub25lKCksZnVuY3Rpb24oKXtyZXR1cm4gX2YoInN0eWxlLWZvcm1hdHMiLGZ1bmN0aW9uKG4pe28uZmlyZSgidG9SZWFkaW5nIiksdC5kcm9wdXAoKS5hcHBlYXIocCxnaS5vbixuKX0sVXIoW2dpLmNvbmZpZyh7dG9nZ2xlQ2xhc3M6YmkoInRvb2xiYXItYnV0dG9uLXNlbGVjdGVkIiksdG9nZ2xlT25FeGVjdXRlOiExLGFyaWE6e21vZGU6InByZXNzZWQifX0pLHRpLmNvbmZpZyh7Y2hhbm5lbHM6UnQoW3ZpKE1vLGdpLm9mZiksdmkoX28sZ2kub2ZmKV0pfSldKSxvKX0pfX0sd2c9ZnVuY3Rpb24obix0KXt2YXIgZSxyLG89KHI9KGU9bikudG9vbGJhciE9PXVuZGVmaW5lZD9lLnRvb2xiYXI6dmcsKG9uKHIpP2JnOnlnKShyKSksaT17fTtyZXR1cm4gU24obyxmdW5jdGlvbihuKXt2YXIgZT0hUihpLG4pJiZSKHQsbikmJnRbbl0uaXNTdXBwb3J0ZWQoKT9bdFtuXS5za2V0Y2goKV06W107cmV0dXJuIGlbbl09ITAsZX0pfSxTZz1mdW5jdGlvbihuKXt2YXIgZSx0LHIsbyxpLHUsYyxhPVRlLmZyb21Eb20obi50YXJnZXQpLGY9ZnVuY3Rpb24oKXtyZXR1cm4gbi5zdG9wUHJvcGFnYXRpb24oKX0scz1mdW5jdGlvbigpe3JldHVybiBuLnByZXZlbnREZWZhdWx0KCl9LGw9ZChzLGYpO3JldHVybiBlPWEsdD1uLmNsaWVudFgscj1uLmNsaWVudFksbz1mLGk9cyx1PWwsYz1uLHt0YXJnZXQ6eShlKSx4OnkodCkseTp5KHIpLHN0b3A6byxwcmV2ZW50Omksa2lsbDp1LHJhdzp5KGMpfX0sT2c9ZnVuY3Rpb24obixlLHQscixvKXt2YXIgaSx1LGM9KGk9dCx1PXIsZnVuY3Rpb24obil7aShuKSYmdShTZyhuKSl9KTtyZXR1cm4gbi5kb20oKS5hZGRFdmVudExpc3RlbmVyKGUsYyxvKSx7dW5iaW5kOlMoVGcsbixlLGMsbyl9fSxUZz1mdW5jdGlvbihuLGUsdCxyKXtuLmRvbSgpLnJlbW92ZUV2ZW50TGlzdGVuZXIoZSx0LHIpfSxrZz15KCEwKSxFZz1mdW5jdGlvbihuLGUsdCl7cmV0dXJuIE9nKG4sZSxrZyx0LCExKX0sQ2c9ZnVuY3Rpb24obixlLHQpe3JldHVybiBPZyhuLGUsa2csdCwhMCl9LE1nPXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLnV0aWwuRGVsYXkiKSxfZz1mdW5jdGlvbihuKXt2YXIgZT1uLm1hdGNoTWVkaWEoIihvcmllbnRhdGlvbjogcG9ydHJhaXQpIikubWF0Y2hlcztyZXR1cm57aXNQb3J0cmFpdDp5KGUpfX0sRGc9ZnVuY3Rpb24ocixlKXt2YXIgbj1UZS5mcm9tRG9tKHIpLG89bnVsbCx0PUVnKG4sIm9yaWVudGF0aW9uY2hhbmdlIixmdW5jdGlvbigpe01nLmNsZWFySW50ZXJ2YWwobyk7dmFyIG49X2cocik7ZS5vbkNoYW5nZShuKSxpKGZ1bmN0aW9uKCl7ZS5vblJlYWR5KG4pfSl9KSxpPWZ1bmN0aW9uKG4pe01nLmNsZWFySW50ZXJ2YWwobyk7dmFyIGU9ci5pbm5lckhlaWdodCx0PTA7bz1NZy5zZXRJbnRlcnZhbChmdW5jdGlvbigpe2UhPT1yLmlubmVySGVpZ2h0PyhNZy5jbGVhckludGVydmFsKG8pLG4oTy5zb21lKHIuaW5uZXJIZWlnaHQpKSk6MjA8dCYmKE1nLmNsZWFySW50ZXJ2YWwobyksbihPLm5vbmUoKSkpLHQrK30sNTApfTtyZXR1cm57b25BZGp1c3RtZW50OmksZGVzdHJveTpmdW5jdGlvbigpe3QudW5iaW5kKCl9fX07dmFyIElnPWZ1bmN0aW9uKG4pe3ZhciBlPW4ucmF3KCk7cmV0dXJuIGUudG91Y2hlcz09PXVuZGVmaW5lZHx8MSE9PWUudG91Y2hlcy5sZW5ndGg/Ty5ub25lKCk6Ty5zb21lKGUudG91Y2hlc1swXSl9LEZnPWZ1bmN0aW9uKHQpe3ZhciB1PWhvKE8ubm9uZSgpKSxyPWhvKCExKSxvPWZ1bmN0aW9uIG4odCxyKXt2YXIgbz1udWxsO3JldHVybntjYW5jZWw6ZnVuY3Rpb24oKXtudWxsIT09byYmKHYuY2xlYXJUaW1lb3V0KG8pLG89bnVsbCl9LHNjaGVkdWxlOmZ1bmN0aW9uKCl7Zm9yKHZhciBuPVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKW5bZV09YXJndW1lbnRzW2VdO289di5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dC5hcHBseShudWxsLG4pLG89bnVsbH0scil9fX0oZnVuY3Rpb24obil7dC50cmlnZ2VyRXZlbnQobGUoKSxuKSxyLnNldCghMCl9LDQwMCksaT1SdChbe2tleTpHbigpLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBJZyh0KS5lYWNoKGZ1bmN0aW9uKG4pe28uY2FuY2VsKCk7dmFyIGU9e3g6bi5jbGllbnRYLHk6bi5jbGllbnRZLHRhcmdldDp0LnRhcmdldCgpfTtvLnNjaGVkdWxlKHQpLHIuc2V0KCExKSx1LnNldChPLnNvbWUoZSkpfSksTy5ub25lKCl9fSx7a2V5OiRuKCksdmFsdWU6ZnVuY3Rpb24obil7cmV0dXJuIG8uY2FuY2VsKCksSWcobikuZWFjaChmdW5jdGlvbihpKXt1LmdldCgpLmVhY2goZnVuY3Rpb24obil7dmFyIGUsdCxyLG87ZT1pLHQ9bixyPU1hdGguYWJzKGUuY2xpZW50WC10LngpLG89TWF0aC5hYnMoZS5jbGllbnRZLXQueSksKDU8cnx8NTxvKSYmdS5zZXQoTy5ub25lKCkpfSl9KSxPLm5vbmUoKX19LHtrZXk6VW4oKSx2YWx1ZTpmdW5jdGlvbihlKXtvLmNhbmNlbCgpO3JldHVybiB1LmdldCgpLmZpbHRlcihmdW5jdGlvbihuKXtyZXR1cm4gQWUobi50YXJnZXQsZS50YXJnZXQoKSl9KS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIHIuZ2V0KCk/KGUucHJldmVudCgpLCExKTp0LnRyaWdnZXJFdmVudChzZSgpLGUpfSl9fV0pO3JldHVybntmaXJlSWZSZWFkeTpmdW5jdGlvbihlLG4pe3JldHVybiBJKGksbikuYmluZChmdW5jdGlvbihuKXtyZXR1cm4gbihlKX0pfX19LFJnPWZ1bmN0aW9uKHQpe3ZhciBlPUZnKHt0cmlnZ2VyRXZlbnQ6ZnVuY3Rpb24obixlKXt0Lm9uVGFwQ29udGVudChlKX19KTtyZXR1cm57ZmlyZVRvdWNoc3RhcnQ6ZnVuY3Rpb24obil7ZS5maXJlSWZSZWFkeShuLCJ0b3VjaHN0YXJ0Iil9LG9uVG91Y2hlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gRWcodC5ib2R5KCksInRvdWNoZW5kIixmdW5jdGlvbihuKXtlLmZpcmVJZlJlYWR5KG4sInRvdWNoZW5kIil9KX0sb25Ub3VjaG1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gRWcodC5ib2R5KCksInRvdWNobW92ZSIsZnVuY3Rpb24obil7ZS5maXJlSWZSZWFkeShuLCJ0b3VjaG1vdmUiKX0pfX19LFZnPTY8PUxuKCkub3MudmVyc2lvbi5tYWpvcixCZz1mdW5jdGlvbihyLGUsdCl7dmFyIG89UmcociksaT1qZShlKSx1PWZ1bmN0aW9uKG4pe3JldHVybiFBZShuLnN0YXJ0KCksbi5maW5pc2goKSl8fG4uc29mZnNldCgpIT09bi5mb2Zmc2V0KCl9LG49ZnVuY3Rpb24oKXt2YXIgbj1yLmRvYygpLmRvbSgpLmhhc0ZvY3VzKCkmJnIuZ2V0U2VsZWN0aW9uKCkuZXhpc3RzKHUpO3QuZ2V0QnlEb20oZSkuZWFjaCghMD09PShufHxPbyhpKS5maWx0ZXIoZnVuY3Rpb24obil7cmV0dXJuImlucHV0Ij09PWtlKG4pfSkuZXhpc3RzKGZ1bmN0aW9uKG4pe3JldHVybiBuLmRvbSgpLnNlbGVjdGlvblN0YXJ0IT09bi5kb20oKS5zZWxlY3Rpb25FbmR9KSk/Z2kub246Z2kub2ZmKX0sYz1bRWcoci5ib2R5KCksInRvdWNoc3RhcnQiLGZ1bmN0aW9uKG4pe3Iub25Ub3VjaENvbnRlbnQoKSxvLmZpcmVUb3VjaHN0YXJ0KG4pfSksby5vblRvdWNobW92ZSgpLG8ub25Ub3VjaGVuZCgpLEVnKGUsInRvdWNoc3RhcnQiLGZ1bmN0aW9uKG4pe3Iub25Ub3VjaFRvb2xzdHJpcCgpfSksci5vblRvUmVhZGluZyhmdW5jdGlvbigpe1NvKHIuYm9keSgpKX0pLHIub25Ub0VkaXRpbmcodyksci5vblNjcm9sbFRvQ3Vyc29yKGZ1bmN0aW9uKG4pe24ucHJldmVudERlZmF1bHQoKSxyLmdldEN1cnNvckJveCgpLmVhY2goZnVuY3Rpb24obil7dmFyIGU9ci53aW4oKSx0PW4udG9wKCk+ZS5pbm5lckhlaWdodHx8bi5ib3R0b20oKT5lLmlubmVySGVpZ2h0P24uYm90dG9tKCktZS5pbm5lckhlaWdodCs1MDowOzAhPXQmJmUuc2Nyb2xsVG8oZS5wYWdlWE9mZnNldCxlLnBhZ2VZT2Zmc2V0K3QpfSl9KV0uY29uY2F0KCEwPT1WZz9bXTpbRWcoVGUuZnJvbURvbShyLndpbigpKSwiYmx1ciIsZnVuY3Rpb24oKXt0LmdldEJ5RG9tKGUpLmVhY2goZ2kub2ZmKX0pLEVnKGksInNlbGVjdCIsbiksRWcoci5kb2MoKSwic2VsZWN0aW9uY2hhbmdlIixuKV0pO3JldHVybntkZXN0cm95OmZ1bmN0aW9uKCl7cG4oYyxmdW5jdGlvbihuKXtuLnVuYmluZCgpfSl9fX0sQWc9ZnVuY3Rpb24obixlKXt2YXIgdD1wYXJzZUludChacihuLGUpLDEwKTtyZXR1cm4gaXNOYU4odCk/MDp0fTt2YXIgamcsSGcsTmc9ZnVuY3Rpb24gX3YodCxyKXt2YXIgZT1mdW5jdGlvbihuKXtyZXR1cm4gdChuKT9PLmZyb20obi5kb20oKS5ub2RlVmFsdWUpOk8ubm9uZSgpfTtyZXR1cm57Z2V0OmZ1bmN0aW9uKG4pe2lmKCF0KG4pKXRocm93IG5ldyBFcnJvcigiQ2FuIG9ubHkgZ2V0ICIrcisiIHZhbHVlIG9mIGEgIityKyIgbm9kZSIpO3JldHVybiBlKG4pLmdldE9yKCIiKX0sZ2V0T3B0aW9uOmUsc2V0OmZ1bmN0aW9uKG4sZSl7aWYoIXQobikpdGhyb3cgbmV3IEVycm9yKCJDYW4gb25seSBzZXQgcmF3ICIrcisiIHZhbHVlIG9mIGEgIityKyIgbm9kZSIpO24uZG9tKCkubm9kZVZhbHVlPWV9fX0oTWUsInRleHQiKSxQZz1mdW5jdGlvbihuKXtyZXR1cm4iaW1nIj09PWtlKG4pPzE6KGU9bixOZy5nZXRPcHRpb24oZSkuZm9sZChmdW5jdGlvbigpe3JldHVybiBOZShuKS5sZW5ndGh9LGZ1bmN0aW9uKG4pe3JldHVybiBuLmxlbmd0aH0pKTt2YXIgZX0semc9ZnVuY3Rpb24obixlLHQscil7cmV0dXJue3N0YXJ0Onkobiksc29mZnNldDp5KGUpLGZpbmlzaDp5KHQpLGZvZmZzZXQ6eShyKX19LExnPW90KFt7YmVmb3JlOlsiZWxlbWVudCJdfSx7b246WyJlbGVtZW50Iiwib2Zmc2V0Il19LHthZnRlcjpbImVsZW1lbnQiXX1dKSxHZz17YmVmb3JlOkxnLmJlZm9yZSxvbjpMZy5vbixhZnRlcjpMZy5hZnRlcixjYXRhOmZ1bmN0aW9uKG4sZSx0LHIpe3JldHVybiBuLmZvbGQoZSx0LHIpfSxnZXRTdGFydDpmdW5jdGlvbihuKXtyZXR1cm4gbi5mb2xkKGIsYixiKX19LCRnPW90KFt7ZG9tUmFuZ2U6WyJybmciXX0se3JlbGF0aXZlOlsic3RhcnRTaXR1IiwiZmluaXNoU2l0dSJdfSx7ZXhhY3Q6WyJzdGFydCIsInNvZmZzZXQiLCJmaW5pc2giLCJmb2Zmc2V0Il19XSksVWc9e2RvbVJhbmdlOiRnLmRvbVJhbmdlLHJlbGF0aXZlOiRnLnJlbGF0aXZlLGV4YWN0OiRnLmV4YWN0LGV4YWN0RnJvbVJhbmdlOmZ1bmN0aW9uKG4pe3JldHVybiAkZy5leGFjdChuLnN0YXJ0KCksbi5zb2Zmc2V0KCksbi5maW5pc2goKSxuLmZvZmZzZXQoKSl9LGdldFdpbjpmdW5jdGlvbihuKXt2YXIgZSx0PW4ubWF0Y2goe2RvbVJhbmdlOmZ1bmN0aW9uKG4pe3JldHVybiBUZS5mcm9tRG9tKG4uc3RhcnRDb250YWluZXIpfSxyZWxhdGl2ZTpmdW5jdGlvbihuLGUpe3JldHVybiBHZy5nZXRTdGFydChuKX0sZXhhY3Q6ZnVuY3Rpb24obixlLHQscil7cmV0dXJuIG59fSk7cmV0dXJuIGU9dCxUZS5mcm9tRG9tKGUuZG9tKCkub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldyl9LHJhbmdlOnpnfSxXZz1mdW5jdGlvbihuLGUsdCl7dmFyIHIsbyxpPW4uZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtyZXR1cm4gcj1pLGUuZm9sZChmdW5jdGlvbihuKXtyLnNldFN0YXJ0QmVmb3JlKG4uZG9tKCkpfSxmdW5jdGlvbihuLGUpe3Iuc2V0U3RhcnQobi5kb20oKSxlKX0sZnVuY3Rpb24obil7ci5zZXRTdGFydEFmdGVyKG4uZG9tKCkpfSksbz1pLHQuZm9sZChmdW5jdGlvbihuKXtvLnNldEVuZEJlZm9yZShuLmRvbSgpKX0sZnVuY3Rpb24obixlKXtvLnNldEVuZChuLmRvbSgpLGUpfSxmdW5jdGlvbihuKXtvLnNldEVuZEFmdGVyKG4uZG9tKCkpfSksaX0sWGc9ZnVuY3Rpb24obixlLHQscixvKXt2YXIgaT1uLmRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7cmV0dXJuIGkuc2V0U3RhcnQoZS5kb20oKSx0KSxpLnNldEVuZChyLmRvbSgpLG8pLGl9LHFnPWZ1bmN0aW9uKG4pe3JldHVybntsZWZ0Onkobi5sZWZ0KSx0b3A6eShuLnRvcCkscmlnaHQ6eShuLnJpZ2h0KSxib3R0b206eShuLmJvdHRvbSksd2lkdGg6eShuLndpZHRoKSxoZWlnaHQ6eShuLmhlaWdodCl9fSxZZz1vdChbe2x0cjpbInN0YXJ0Iiwic29mZnNldCIsImZpbmlzaCIsImZvZmZzZXQiXX0se3J0bDpbInN0YXJ0Iiwic29mZnNldCIsImZpbmlzaCIsImZvZmZzZXQiXX1dKSxLZz1mdW5jdGlvbihuLGUsdCl7cmV0dXJuIGUoVGUuZnJvbURvbSh0LnN0YXJ0Q29udGFpbmVyKSx0LnN0YXJ0T2Zmc2V0LFRlLmZyb21Eb20odC5lbmRDb250YWluZXIpLHQuZW5kT2Zmc2V0KX0sSmc9ZnVuY3Rpb24obixlKXt2YXIgbyx0LHIsaT0obz1uLGUubWF0Y2goe2RvbVJhbmdlOmZ1bmN0aW9uKG4pe3JldHVybntsdHI6eShuKSxydGw6Ty5ub25lfX0scmVsYXRpdmU6ZnVuY3Rpb24obixlKXtyZXR1cm57bHRyOlYoZnVuY3Rpb24oKXtyZXR1cm4gV2cobyxuLGUpfSkscnRsOlYoZnVuY3Rpb24oKXtyZXR1cm4gTy5zb21lKFdnKG8sZSxuKSl9KX19LGV4YWN0OmZ1bmN0aW9uKG4sZSx0LHIpe3JldHVybntsdHI6VihmdW5jdGlvbigpe3JldHVybiBYZyhvLG4sZSx0LHIpfSkscnRsOlYoZnVuY3Rpb24oKXtyZXR1cm4gTy5zb21lKFhnKG8sdCxyLG4sZSkpfSl9fX0pKTtyZXR1cm4ocj0odD1pKS5sdHIoKSkuY29sbGFwc2VkP3QucnRsKCkuZmlsdGVyKGZ1bmN0aW9uKG4pe3JldHVybiExPT09bi5jb2xsYXBzZWR9KS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIFlnLnJ0bChUZS5mcm9tRG9tKG4uZW5kQ29udGFpbmVyKSxuLmVuZE9mZnNldCxUZS5mcm9tRG9tKG4uc3RhcnRDb250YWluZXIpLG4uc3RhcnRPZmZzZXQpfSkuZ2V0T3JUaHVuayhmdW5jdGlvbigpe3JldHVybiBLZygwLFlnLmx0cixyKX0pOktnKDAsWWcubHRyLHIpfSxRZz0oWWcubHRyLFlnLnJ0bCxmdW5jdGlvbihuLGUpe3ZhciB0PWtlKG4pO3JldHVybiJpbnB1dCI9PT10P0dnLmFmdGVyKG4pOmRuKFsiYnIiLCJpbWciXSx0KT8wPT09ZT9HZy5iZWZvcmUobik6R2cuYWZ0ZXIobik6R2cub24obixlKX0pLFpnPWZ1bmN0aW9uKG4sZSx0LHIpe3ZhciBvLGksdSxjLGEsZj0oaT1lLHU9dCxjPXIsKGE9amUobz1uKS5kb20oKS5jcmVhdGVSYW5nZSgpKS5zZXRTdGFydChvLmRvbSgpLGkpLGEuc2V0RW5kKHUuZG9tKCksYyksYSkscz1BZShuLHQpJiZlPT09cjtyZXR1cm4gZi5jb2xsYXBzZWQmJiFzfSxucD1mdW5jdGlvbihuLGUsdCxyLG8pe3ZhciBpLHUsYz1YZyhuLGUsdCxyLG8pO2k9bix1PWMsTy5mcm9tKGkuZ2V0U2VsZWN0aW9uKCkpLmVhY2goZnVuY3Rpb24obil7bi5yZW1vdmVBbGxSYW5nZXMoKSxuLmFkZFJhbmdlKHUpfSl9LGVwPWZ1bmN0aW9uKGwsbil7cmV0dXJuIEpnKGwsbikubWF0Y2goe2x0cjpmdW5jdGlvbihuLGUsdCxyKXtucChsLG4sZSx0LHIpfSxydGw6ZnVuY3Rpb24obixlLHQscil7dmFyIG8saSx1LGMsYSxmPWwuZ2V0U2VsZWN0aW9uKCk7aWYoZi5zZXRCYXNlQW5kRXh0ZW50KWYuc2V0QmFzZUFuZEV4dGVudChuLmRvbSgpLGUsdC5kb20oKSxyKTtlbHNlIGlmKGYuZXh0ZW5kKXRyeXtpPW4sdT1lLGM9dCxhPXIsKG89ZikuY29sbGFwc2UoaS5kb20oKSx1KSxvLmV4dGVuZChjLmRvbSgpLGEpfWNhdGNoKHMpe25wKGwsdCxyLG4sZSl9ZWxzZSBucChsLHQscixuLGUpfX0pfSx0cD1mdW5jdGlvbihuLGUsdCxyLG8pe3ZhciBpLHUsYyxhLGY9KGk9cix1PW8sYz1RZyhlLHQpLGE9UWcoaSx1KSxVZy5yZWxhdGl2ZShjLGEpKTtlcChuLGYpfSxycD1mdW5jdGlvbihuKXt2YXIgZT1UZS5mcm9tRG9tKG4uYW5jaG9yTm9kZSksdD1UZS5mcm9tRG9tKG4uZm9jdXNOb2RlKTtyZXR1cm4gWmcoZSxuLmFuY2hvck9mZnNldCx0LG4uZm9jdXNPZmZzZXQpP08uc29tZSh6ZyhlLG4uYW5jaG9yT2Zmc2V0LHQsbi5mb2N1c09mZnNldCkpOmZ1bmN0aW9uKG4pe2lmKDA8bi5yYW5nZUNvdW50KXt2YXIgZT1uLmdldFJhbmdlQXQoMCksdD1uLmdldFJhbmdlQXQobi5yYW5nZUNvdW50LTEpO3JldHVybiBPLnNvbWUoemcoVGUuZnJvbURvbShlLnN0YXJ0Q29udGFpbmVyKSxlLnN0YXJ0T2Zmc2V0LFRlLmZyb21Eb20odC5lbmRDb250YWluZXIpLHQuZW5kT2Zmc2V0KSl9cmV0dXJuIE8ubm9uZSgpfShuKX0sb3A9ZnVuY3Rpb24obil7cmV0dXJuIE8uZnJvbShuLmdldFNlbGVjdGlvbigpKS5maWx0ZXIoZnVuY3Rpb24obil7cmV0dXJuIDA8bi5yYW5nZUNvdW50fSkuYmluZChycCl9LGlwPWZ1bmN0aW9uKG4sZSl7dmFyIGksdCxyLG8sdT1KZyhpPW4sZSkubWF0Y2goe2x0cjpmdW5jdGlvbihuLGUsdCxyKXt2YXIgbz1pLmRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7cmV0dXJuIG8uc2V0U3RhcnQobi5kb20oKSxlKSxvLnNldEVuZCh0LmRvbSgpLHIpLG99LHJ0bDpmdW5jdGlvbihuLGUsdCxyKXt2YXIgbz1pLmRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7cmV0dXJuIG8uc2V0U3RhcnQodC5kb20oKSxyKSxvLnNldEVuZChuLmRvbSgpLGUpLG99fSk7cmV0dXJuIHI9KHQ9dSkuZ2V0Q2xpZW50UmVjdHMoKSwwPChvPTA8ci5sZW5ndGg/clswXTp0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKS53aWR0aHx8MDxvLmhlaWdodD9PLnNvbWUobykubWFwKHFnKTpPLm5vbmUoKX0sdXA9ZnVuY3Rpb24obil7cmV0dXJue2xlZnQ6bi5sZWZ0LHRvcDpuLnRvcCxyaWdodDpuLnJpZ2h0LGJvdHRvbTpuLmJvdHRvbSx3aWR0aDp5KDIpLGhlaWdodDpuLmhlaWdodH19LGNwPWZ1bmN0aW9uKG4pe3JldHVybntsZWZ0Onkobi5sZWZ0KSx0b3A6eShuLnRvcCkscmlnaHQ6eShuLnJpZ2h0KSxib3R0b206eShuLmJvdHRvbSksd2lkdGg6eShuLndpZHRoKSxoZWlnaHQ6eShuLmhlaWdodCl9fSxhcD1mdW5jdGlvbihuKXt2YXIgZT1uLmdldFNlbGVjdGlvbigpO3JldHVybiBlIT09dW5kZWZpbmVkJiYwPGUucmFuZ2VDb3VudD9mdW5jdGlvbih0KXtpZih0LmNvbGxhcHNlZCl7dmFyIHI9VGUuZnJvbURvbSh0LnN0YXJ0Q29udGFpbmVyKTtyZXR1cm4gSGUocikuYmluZChmdW5jdGlvbihuKXt2YXIgZT1VZy5leGFjdChyLHQuc3RhcnRPZmZzZXQsbixQZyhuKSk7cmV0dXJuIGlwKHQuc3RhcnRDb250YWluZXIub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldyxlKS5tYXAodXApLm1hcChFbil9KS5nZXRPcihbXSl9cmV0dXJuIGduKHQuZ2V0Q2xpZW50UmVjdHMoKSxjcCl9KGUuZ2V0UmFuZ2VBdCgwKSk6W119LGZwPWZ1bmN0aW9uKG4pe24uZm9jdXMoKTt2YXIgZT1UZS5mcm9tRG9tKG4uZG9jdW1lbnQuYm9keSk7KE9vKCkuZXhpc3RzKGZ1bmN0aW9uKG4pe3JldHVybiBkbihbImlucHV0IiwidGV4dGFyZWEiXSxrZShuKSl9KT9mdW5jdGlvbihuKXtNZy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bigpfSwwKX06ZikoZnVuY3Rpb24oKXtPbygpLmVhY2goU28pLHdvKGUpfSl9LHNwPSJkYXRhLSIrYmkoImxhc3Qtb3V0ZXItaGVpZ2h0IiksbHA9ZnVuY3Rpb24obixlKXtKcihuLHNwLGUpfSxkcD1mdW5jdGlvbihuKXtyZXR1cm57dG9wOnkobi50b3AoKSksYm90dG9tOnkobi50b3AoKStuLmhlaWdodCgpKX19LG1wPWZ1bmN0aW9uKG4sZSl7dmFyIHQ9QWcoZSxzcCkscj1uLmlubmVySGVpZ2h0O3JldHVybiByPHQ/Ty5zb21lKHQtcik6Ty5ub25lKCl9LGdwPWZ1bmN0aW9uKG4sdSl7dmFyIGU9VGUuZnJvbURvbSh1LmRvY3VtZW50LmJvZHkpLHQ9RWcoVGUuZnJvbURvbShuKSwicmVzaXplIixmdW5jdGlvbigpe21wKG4sZSkuZWFjaChmdW5jdGlvbihpKXt2YXIgbjsoMDwobj1hcCh1KSkubGVuZ3RoP08uc29tZShuWzBdKS5tYXAoZHApOk8ubm9uZSgpKS5lYWNoKGZ1bmN0aW9uKG4pe3ZhciBlLHQscixvPShlPXUscj1pLCh0PW4pLnRvcCgpPmUuaW5uZXJIZWlnaHR8fHQuYm90dG9tKCk+ZS5pbm5lckhlaWdodD9NYXRoLm1pbihyLHQuYm90dG9tKCktZS5pbm5lckhlaWdodCs1MCk6MCk7MCE9PW8mJnUuc2Nyb2xsVG8odS5wYWdlWE9mZnNldCx1LnBhZ2VZT2Zmc2V0K28pfSl9KSxscChlLG4uaW5uZXJIZWlnaHQpfSk7bHAoZSxuLmlubmVySGVpZ2h0KTtyZXR1cm57dG9FZGl0aW5nOmZ1bmN0aW9uKCl7ZnAodSl9LGRlc3Ryb3k6ZnVuY3Rpb24oKXt0LnVuYmluZCgpfX19LHBwPWZ1bmN0aW9uKG4pe3JldHVybiBPLmZyb20obi5kb20oKS5jb250ZW50V2luZG93KX0saHA9ZnVuY3Rpb24obil7cmV0dXJuIHBwKG4pLmJpbmQob3ApfSx2cD1mdW5jdGlvbihuKXtyZXR1cm4gbi5nZXRGcmFtZSgpfSx5cD1mdW5jdGlvbihuLGUsdCxyKXtyZXR1cm4gblt0XS5nZXRPclRodW5rKGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBFZyhlLHIsbil9fSl9LGJwPWZ1bmN0aW9uKG4pe3JldHVybntsZWZ0Onkobi5sZWZ0KSx0b3A6eShuLnRvcCkscmlnaHQ6eShuLnJpZ2h0KSxib3R0b206eShuLmJvdHRvbSksd2lkdGg6eShuLndpZHRoKSxoZWlnaHQ6eShuLmhlaWdodCl9fSx4cD1mdW5jdGlvbihjKXt2YXIgbixhPXZwKGMpO3JldHVybiBuPWEsTy5zb21lKFRlLmZyb21Eb20obi5kb20oKS5jb250ZW50V2luZG93LmRvY3VtZW50LmJvZHkpKS5iaW5kKGZ1bmN0aW9uKHUpe3JldHVybiBuPWEsTy5zb21lKFRlLmZyb21Eb20obi5kb20oKS5jb250ZW50V2luZG93LmRvY3VtZW50KSkuYmluZChmdW5jdGlvbihpKXtyZXR1cm4gcHAoYSkubWFwKGZ1bmN0aW9uKG8pe3ZhciBuPVRlLmZyb21Eb20oaS5kb20oKS5kb2N1bWVudEVsZW1lbnQpLGU9Yy5nZXRDdXJzb3JCb3guZ2V0T3JUaHVuayhmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBvcChvKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIFVnLmV4YWN0KG4uc3RhcnQoKSxuLnNvZmZzZXQoKSxuLmZpbmlzaCgpLG4uZm9mZnNldCgpKX0pLmJpbmQoZnVuY3Rpb24obil7cmV0dXJuIGlwKG8sbikub3JUaHVuayhmdW5jdGlvbigpe3JldHVybiBvcChvKS5maWx0ZXIoZnVuY3Rpb24obil7cmV0dXJuIEFlKG4uc3RhcnQoKSxuLmZpbmlzaCgpKSYmbi5zb2Zmc2V0KCk9PT1uLmZvZmZzZXQoKX0pLmJpbmQoZnVuY3Rpb24obil7dmFyIGU9bi5zdGFydCgpLmRvbSgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybiAwPGUud2lkdGh8fDA8ZS5oZWlnaHQ/Ty5zb21lKGUpLm1hcChicCk6Ty5ub25lKCl9KX0pfSl9fSksdD1jLnNldFNlbGVjdGlvbi5nZXRPclRodW5rKGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKG4sZSx0LHIpe3RwKG8sbixlLHQscil9fSkscj1jLmNsZWFyU2VsZWN0aW9uLmdldE9yVGh1bmsoZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXtvLmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpfX0pO3JldHVybntib2R5OnkodSksZG9jOnkoaSksd2luOnkobyksaHRtbDp5KG4pLGdldFNlbGVjdGlvbjpTKGhwLGEpLHNldFNlbGVjdGlvbjp0LGNsZWFyU2VsZWN0aW9uOnIsZnJhbWU6eShhKSxvbktleXVwOnlwKGMsaSwib25LZXl1cCIsImtleXVwIiksb25Ob2RlQ2hhbmdlZDp5cChjLGksIm9uTm9kZUNoYW5nZWQiLCJTZWxlY3Rpb25DaGFuZ2UiKSxvbkRvbUNoYW5nZWQ6Yy5vbkRvbUNoYW5nZWQsb25TY3JvbGxUb0N1cnNvcjpjLm9uU2Nyb2xsVG9DdXJzb3Isb25TY3JvbGxUb0VsZW1lbnQ6Yy5vblNjcm9sbFRvRWxlbWVudCxvblRvUmVhZGluZzpjLm9uVG9SZWFkaW5nLG9uVG9FZGl0aW5nOmMub25Ub0VkaXRpbmcsb25Ub29sYmFyU2Nyb2xsU3RhcnQ6Yy5vblRvb2xiYXJTY3JvbGxTdGFydCxvblRvdWNoQ29udGVudDpjLm9uVG91Y2hDb250ZW50LG9uVGFwQ29udGVudDpjLm9uVGFwQ29udGVudCxvblRvdWNoVG9vbHN0cmlwOmMub25Ub3VjaFRvb2xzdHJpcCxnZXRDdXJzb3JCb3g6ZX19KX0pO3ZhciBufSl9LHdwPShqZz0iZ2V0V2luIixIZz1wcCxmdW5jdGlvbihlKXtyZXR1cm4gZVtqZ10uZ2V0T3JUaHVuayhmdW5jdGlvbigpe3ZhciBuPXZwKGUpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBIZyhuKX19KSgpfSksU3A9ImRhdGEtZXBob3gtbW9iaWxlLWZ1bGxzY3JlZW4tc3R5bGUiLE9wPSJwb3NpdGlvbjphYnNvbHV0ZSFpbXBvcnRhbnQ7IixUcD0idG9wOjAhaW1wb3J0YW50O2xlZnQ6MCFpbXBvcnRhbnQ7bWFyZ2luOjAhaW1wb3J0YW50O3BhZGRpbmc6MCFpbXBvcnRhbnQ7d2lkdGg6MTAwJSFpbXBvcnRhbnQ7aGVpZ2h0OjEwMCUhaW1wb3J0YW50O292ZXJmbG93OnZpc2libGUhaW1wb3J0YW50OyIsa3A9TG4oKS5vcy5pc0FuZHJvaWQoKSxFcD1mdW5jdGlvbihuLGUpe3ZhciB0LHIsbyxpPWZ1bmN0aW9uKHIpe3JldHVybiBmdW5jdGlvbihuKXt2YXIgZT1acihuLCJzdHlsZSIpLHQ9ZT09PXVuZGVmaW5lZD8ibm8tc3R5bGVzIjplLnRyaW0oKTt0IT09ciYmKEpyKG4sU3AsdCksSnIobiwic3R5bGUiLHIpKX19LHU9KHQ9IioiLFBpKG4sZnVuY3Rpb24obil7cmV0dXJuIEZlKG4sdCl9LHIpKSxjPVNuKHUsZnVuY3Rpb24obil7cmV0dXJuIGU9IioiLHppKG4sZnVuY3Rpb24obil7cmV0dXJuIEZlKG4sZSl9KTt2YXIgZX0pLGE9KG89RGkoZSwiYmFja2dyb3VuZC1jb2xvciIpKSE9PXVuZGVmaW5lZCYmIiIhPT1vPyJiYWNrZ3JvdW5kLWNvbG9yOiIrbysiIWltcG9ydGFudCI6ImJhY2tncm91bmQtY29sb3I6cmdiKDI1NSwyNTUsMjU1KSFpbXBvcnRhbnQ7IjtwbihjLGkoImRpc3BsYXk6bm9uZSFpbXBvcnRhbnQ7IikpLHBuKHUsaShPcCtUcCthKSksaSgoITA9PT1rcD8iIjpPcCkrVHArYSkobil9LENwPWZ1bmN0aW9uKCl7dmFyIG49VmUoIlsiK1NwKyJdIik7cG4obixmdW5jdGlvbihuKXt2YXIgZT1acihuLFNwKTsibm8tc3R5bGVzIiE9PWU/SnIobiwic3R5bGUiLGUpOnRvKG4sInN0eWxlIiksdG8obixTcCl9KX0sTXA9ZnVuY3Rpb24oKXt2YXIgZT1HaSgiaGVhZCIpLmdldE9yRGllKCksbj1HaSgnbWV0YVtuYW1lPSJ2aWV3cG9ydCJdJykuZ2V0T3JUaHVuayhmdW5jdGlvbigpe3ZhciBuPVRlLmZyb21UYWcoIm1ldGEiKTtyZXR1cm4gSnIobiwibmFtZSIsInZpZXdwb3J0IiksJGUoZSxuKSxufSksdD1acihuLCJjb250ZW50Iik7cmV0dXJue21heGltaXplOmZ1bmN0aW9uKCl7SnIobiwiY29udGVudCIsIndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9bm8sIG1heGltdW0tc2NhbGU9MS4wIil9LHJlc3RvcmU6ZnVuY3Rpb24oKXt0IT09dW5kZWZpbmVkJiZudWxsIT09dCYmMDx0Lmxlbmd0aD9KcihuLCJjb250ZW50Iix0KTpKcihuLCJjb250ZW50IiwidXNlci1zY2FsYWJsZT15ZXMiKX19fSxfcD1mdW5jdGlvbih0LHIpe3ZhciBvPW51bGw7cmV0dXJue2NhbmNlbDpmdW5jdGlvbigpe251bGwhPT1vJiYodi5jbGVhclRpbWVvdXQobyksbz1udWxsKX0sdGhyb3R0bGU6ZnVuY3Rpb24oKXtmb3IodmFyIG49W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspbltlXT1hcmd1bWVudHNbZV07bnVsbCE9PW8mJnYuY2xlYXJUaW1lb3V0KG8pLG89di5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dC5hcHBseShudWxsLG4pLG89bnVsbH0scil9fX0sRHA9ZnVuY3Rpb24obixlKXt2YXIgdCxyLG8saT16bChkZC5za2V0Y2goe2RvbTpUZignPGRpdiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9IiR7cHJlZml4fS1tYXNrLXRhcC1pY29uIj48L2Rpdj4nKSxjb250YWluZXJCZWhhdmlvdXJzOlVyKFtnaS5jb25maWcoe3RvZ2dsZUNsYXNzOmJpKCJtYXNrLXRhcC1pY29uLXNlbGVjdGVkIiksdG9nZ2xlT25FeGVjdXRlOiExfSldKX0pKSx1PSh0PW4scj0yMDAsbz1udWxsLHtjYW5jZWw6ZnVuY3Rpb24oKXtudWxsIT09byYmKHYuY2xlYXJUaW1lb3V0KG8pLG89bnVsbCl9LHRocm90dGxlOmZ1bmN0aW9uKCl7Zm9yKHZhciBuPVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKW5bZV09YXJndW1lbnRzW2VdO251bGw9PT1vJiYobz12LnNldFRpbWVvdXQoZnVuY3Rpb24oKXt0LmFwcGx5KG51bGwsbiksbz1udWxsfSxyKSl9fSk7cmV0dXJuIGRkLnNrZXRjaCh7ZG9tOlRmKCc8ZGl2IGNsYXNzPSIke3ByZWZpeH0tZGlzYWJsZWQtbWFzayI+PC9kaXY+JyksY29tcG9uZW50czpbZGQuc2tldGNoKHtkb206VGYoJzxkaXYgY2xhc3M9IiR7cHJlZml4fS1jb250ZW50LWNvbnRhaW5lciI+PC9kaXY+JyksY29tcG9uZW50czpbd2Yuc2tldGNoKHtkb206VGYoJzxkaXYgY2xhc3M9IiR7cHJlZml4fS1jb250ZW50LXRhcC1zZWN0aW9uIj48L2Rpdj4nKSxjb21wb25lbnRzOltpLmFzU3BlYygpXSxhY3Rpb246ZnVuY3Rpb24obil7dS50aHJvdHRsZSgpfSxidXR0b25CZWhhdmlvdXJzOlVyKFtnaS5jb25maWcoe3RvZ2dsZUNsYXNzOmJpKCJtYXNrLXRhcC1pY29uLXNlbGVjdGVkIil9KV0pfSldfSldfSl9LElwPVd0KFtscigiZWRpdG9yIixbZnIoImdldEZyYW1lIiksZHIoImdldEJvZHkiKSxkcigiZ2V0RG9jIiksZHIoImdldFdpbiIpLGRyKCJnZXRTZWxlY3Rpb24iKSxkcigic2V0U2VsZWN0aW9uIiksZHIoImNsZWFyU2VsZWN0aW9uIiksZHIoImN1cnNvclNhdmVyIiksZHIoIm9uS2V5dXAiKSxkcigib25Ob2RlQ2hhbmdlZCIpLGRyKCJnZXRDdXJzb3JCb3giKSxmcigib25Eb21DaGFuZ2VkIiksaHIoIm9uVG91Y2hDb250ZW50Iix3KSxocigib25UYXBDb250ZW50Iix3KSxocigib25Ub3VjaFRvb2xzdHJpcCIsdyksaHIoIm9uU2Nyb2xsVG9DdXJzb3IiLHkoe3VuYmluZDp3fSkpLGhyKCJvblNjcm9sbFRvRWxlbWVudCIseSh7dW5iaW5kOnd9KSksaHIoIm9uVG9FZGl0aW5nIix5KHt1bmJpbmQ6d30pKSxocigib25Ub1JlYWRpbmciLHkoe3VuYmluZDp3fSkpLGhyKCJvblRvb2xiYXJTY3JvbGxTdGFydCIsYildKSxmcigic29ja2V0IiksZnIoInRvb2xzdHJpcCIpLGZyKCJkcm9wdXAiKSxmcigidG9vbGJhciIpLGZyKCJjb250YWluZXIiKSxmcigiYWxsb3kiKSx5cigid2luIixmdW5jdGlvbihuKXtyZXR1cm4gamUobi5zb2NrZXQpLmRvbSgpLmRlZmF1bHRWaWV3fSkseXIoImJvZHkiLGZ1bmN0aW9uKG4pe3JldHVybiBUZS5mcm9tRG9tKG4uc29ja2V0LmRvbSgpLm93bmVyRG9jdW1lbnQuYm9keSl9KSxocigidHJhbnNsYXRlIixiKSxocigic2V0UmVhZE9ubHkiLHcpLGhyKCJyZWFkT25seU9uSW5pdCIseSghMCkpXSksRnA9ZnVuY3Rpb24obil7dmFyIGU9b3IoIkdldHRpbmcgQW5kcm9pZFdlYmFwcCBzY2hlbWEiLElwLG4pO01pKGUudG9vbHN0cmlwLCJ3aWR0aCIsIjEwMCUiKTt2YXIgdD14bShEcChmdW5jdGlvbigpe2Uuc2V0UmVhZE9ubHkoZS5yZWFkT25seU9uSW5pdCgpKSxmLmVudGVyKCl9LGUudHJhbnNsYXRlKSk7ZS5hbGxveS5hZGQodCk7dmFyIHI9e3Nob3c6ZnVuY3Rpb24oKXtlLmFsbG95LmFkZCh0KX0saGlkZTpmdW5jdGlvbigpe2UuYWxsb3kucmVtb3ZlKHQpfX07JGUoZS5jb250YWluZXIsdC5lbGVtZW50KCkpO3ZhciBvLGksdSxjLGEsZj0obz1lLGk9cix1PU1wKCksYz1MZCgpLGE9TGQoKSx7ZW50ZXI6ZnVuY3Rpb24oKXtpLmhpZGUoKSxjbyhvLmNvbnRhaW5lcixiaSgiZnVsbHNjcmVlbi1tYXhpbWl6ZWQiKSksY28oby5jb250YWluZXIsYmkoImFuZHJvaWQtbWF4aW1pemVkIikpLHUubWF4aW1pemUoKSxjbyhvLmJvZHksYmkoImFuZHJvaWQtc2Nyb2xsLXJlbG9hZCIpKSxjLnNldChncChvLndpbix3cChvLmVkaXRvcikuZ2V0T3JEaWUoIm5vIikpKSx4cChvLmVkaXRvcikuZWFjaChmdW5jdGlvbihuKXtFcChvLmNvbnRhaW5lcixuLmJvZHkoKSksYS5zZXQoQmcobixvLnRvb2xzdHJpcCxvLmFsbG95KSl9KX0sZXhpdDpmdW5jdGlvbigpe3UucmVzdG9yZSgpLGkuc2hvdygpLGZvKG8uY29udGFpbmVyLGJpKCJmdWxsc2NyZWVuLW1heGltaXplZCIpKSxmbyhvLmNvbnRhaW5lcixiaSgiYW5kcm9pZC1tYXhpbWl6ZWQiKSksQ3AoKSxmbyhvLmJvZHksYmkoImFuZHJvaWQtc2Nyb2xsLXJlbG9hZCIpKSxhLmNsZWFyKCksYy5jbGVhcigpfX0pO3JldHVybntzZXRSZWFkT25seTplLnNldFJlYWRPbmx5LHJlZnJlc2hTdHJ1Y3R1cmU6dyxlbnRlcjpmLmVudGVyLGV4aXQ6Zi5leGl0LGRlc3Ryb3k6d319LFJwPXkoW2ZyKCJkb20iKSxocigic2hlbGwiLCEwKSxsYSgidG9vbGJhckJlaGF2aW91cnMiLFtHbV0pXSksVnA9eShbTGEoe25hbWU6Imdyb3VwcyIsb3ZlcnJpZGVzOmZ1bmN0aW9uKCl7cmV0dXJue2JlaGF2aW91cnM6VXIoW0dtLmNvbmZpZyh7fSldKX19fSldKSxCcD14Zih7bmFtZToiVG9vbGJhciIsY29uZmlnRmllbGRzOlJwKCkscGFydEZpZWxkczpWcCgpLGZhY3Rvcnk6ZnVuY3Rpb24oZSxuLHQscil7dmFyIG89ZnVuY3Rpb24obil7cmV0dXJuIGUuc2hlbGw/Ty5zb21lKG4pOkthKG4sZSwiZ3JvdXBzIil9LGk9ZS5zaGVsbD97YmVoYXZpb3VyczpbR20uY29uZmlnKHt9KV0sY29tcG9uZW50czpbXX06e2JlaGF2aW91cnM6W10sY29tcG9uZW50czpufTtyZXR1cm57dWlkOmUudWlkLGRvbTplLmRvbSxjb21wb25lbnRzOmkuY29tcG9uZW50cyxiZWhhdmlvdXJzOm1hKGUudG9vbGJhckJlaGF2aW91cnMsaS5iZWhhdmlvdXJzKSxhcGlzOntzZXRHcm91cHM6ZnVuY3Rpb24obixlKXtvKG4pLmZvbGQoZnVuY3Rpb24oKXt0aHJvdyB2LmNvbnNvbGUuZXJyb3IoIlRvb2xiYXIgd2FzIGRlZmluZWQgdG8gbm90IGJlIGEgc2hlbGwsIGJ1dCBubyBncm91cHMgY29udGFpbmVyIHdhcyBzcGVjaWZpZWQgaW4gY29tcG9uZW50cyIpLG5ldyBFcnJvcigiVG9vbGJhciB3YXMgZGVmaW5lZCB0byBub3QgYmUgYSBzaGVsbCwgYnV0IG5vIGdyb3VwcyBjb250YWluZXIgd2FzIHNwZWNpZmllZCBpbiBjb21wb25lbnRzIil9LGZ1bmN0aW9uKG4pe0dtLnNldChuLGUpfSl9fSxkb21Nb2RpZmljYXRpb246e2F0dHJpYnV0ZXM6e3JvbGU6Imdyb3VwIn19fX0sYXBpczp7c2V0R3JvdXBzOmZ1bmN0aW9uKG4sZSx0KXtuLnNldEdyb3VwcyhlLHQpfX19KSxBcD15KFtmcigiaXRlbXMiKSxscigibWFya2VycyIsZ24oWyJpdGVtU2VsZWN0b3IiXSxmcikpLGxhKCJ0Z3JvdXBCZWhhdmlvdXJzIixbc2FdKV0pLGpwPXkoW0dhKHtuYW1lOiJpdGVtcyIsdW5pdDoiaXRlbSJ9KV0pLEhwPXhmKHtuYW1lOiJUb29sYmFyR3JvdXAiLGNvbmZpZ0ZpZWxkczpBcCgpLHBhcnRGaWVsZHM6anAoKSxmYWN0b3J5OmZ1bmN0aW9uKG4sZSx0LHIpe3JldHVybnt1aWQ6bi51aWQsZG9tOm4uZG9tLGNvbXBvbmVudHM6ZSxiZWhhdmlvdXJzOm1hKG4udGdyb3VwQmVoYXZpb3Vycyxbc2EuY29uZmlnKHttb2RlOiJmbG93IixzZWxlY3RvcjpuLm1hcmtlcnMuaXRlbVNlbGVjdG9yfSldKSxkb21Nb2RpZmljYXRpb246e2F0dHJpYnV0ZXM6e3JvbGU6InRvb2xiYXIifX19fX0pLE5wPSJkYXRhLSIrYmkoImhvcml6b250YWwtc2Nyb2xsIiksUHA9ZnVuY3Rpb24obil7SnIobixOcCwidHJ1ZSIpfSx6cD1mdW5jdGlvbihuKXtyZXR1cm4idHJ1ZSI9PT1acihuLE5wKT8wPCh0PW4pLmRvbSgpLnNjcm9sbExlZnR8fGZ1bmN0aW9uKG4pe24uZG9tKCkuc2Nyb2xsTGVmdD0xO3ZhciBlPTAhPT1uLmRvbSgpLnNjcm9sbExlZnQ7cmV0dXJuIG4uZG9tKCkuc2Nyb2xsTGVmdD0wLGV9KHQpOjA8KGU9bikuZG9tKCkuc2Nyb2xsVG9wfHxmdW5jdGlvbihuKXtuLmRvbSgpLnNjcm9sbFRvcD0xO3ZhciBlPTAhPT1uLmRvbSgpLnNjcm9sbFRvcDtyZXR1cm4gbi5kb20oKS5zY3JvbGxUb3A9MCxlfShlKTt2YXIgZSx0fTtmdW5jdGlvbiBMcCgpe3ZhciBlPWZ1bmN0aW9uKG4pe3ZhciBlPSEwPT09bi5zY3JvbGxhYmxlPyIke3ByZWZpeH0tdG9vbGJhci1zY3JvbGxhYmxlLWdyb3VwIjoiIjtyZXR1cm57ZG9tOlRmKCc8ZGl2IGFyaWEtbGFiZWw9Iicrbi5sYWJlbCsnIiBjbGFzcz0iJHtwcmVmaXh9LXRvb2xiYXItZ3JvdXAgJytlKyciPjwvZGl2PicpLHRncm91cEJlaGF2aW91cnM6VXIoW2FkKCJhZGhvYy1zY3JvbGxhYmxlLXRvb2xiYXIiLCEwPT09bi5zY3JvbGxhYmxlP1tWcihmdW5jdGlvbihuLGUpe01pKG4uZWxlbWVudCgpLCJvdmVyZmxvdy14IiwiYXV0byIpLFBwKG4uZWxlbWVudCgpKSx1ZyhuLmVsZW1lbnQoKSl9KV06W10pXSksY29tcG9uZW50czpbZGQuc2tldGNoKHtjb21wb25lbnRzOltIcC5wYXJ0cygpLml0ZW1zKHt9KV19KV0sbWFya2Vyczp7aXRlbVNlbGVjdG9yOiIuIitiaSgidG9vbGJhci1ncm91cC1pdGVtIil9LGl0ZW1zOm4uaXRlbXN9fSx0PXhtKEJwLnNrZXRjaCh7ZG9tOlRmKCc8ZGl2IGNsYXNzPSIke3ByZWZpeH0tdG9vbGJhciI+PC9kaXY+JyksY29tcG9uZW50czpbQnAucGFydHMoKS5ncm91cHMoe30pXSx0b29sYmFyQmVoYXZpb3VyczpVcihbZ2kuY29uZmlnKHt0b2dnbGVDbGFzczpiaSgiY29udGV4dC10b29sYmFyIiksdG9nZ2xlT25FeGVjdXRlOiExLGFyaWE6e21vZGU6Im5vbmUifX0pLHNhLmNvbmZpZyh7bW9kZToiY3ljbGljIn0pXSksc2hlbGw6ITB9KSksbj14bShkZC5za2V0Y2goe2RvbTp7Y2xhc3NlczpbYmkoInRvb2xzdHJpcCIpXX0sY29tcG9uZW50czpbd20odCldLGNvbnRhaW5lckJlaGF2aW91cnM6VXIoW2dpLmNvbmZpZyh7dG9nZ2xlQ2xhc3M6YmkoImFuZHJvaWQtc2VsZWN0aW9uLWNvbnRleHQtdG9vbGJhciIpLHRvZ2dsZU9uRXhlY3V0ZTohMX0pXSl9KSkscj1mdW5jdGlvbigpe0JwLnNldEdyb3Vwcyh0LG8uZ2V0KCkpLGdpLm9mZih0KX0sbz1obyhbXSk7cmV0dXJue3dyYXBwZXI6eShuKSx0b29sYmFyOnkodCksY3JlYXRlR3JvdXBzOmZ1bmN0aW9uKG4pe3JldHVybiBnbihuLGQoSHAuc2tldGNoLGUpKX0sc2V0R3JvdXBzOmZ1bmN0aW9uKG4pe28uc2V0KG4pLHIoKX0sc2V0Q29udGV4dFRvb2xiYXI6ZnVuY3Rpb24obil7Z2kub24odCksQnAuc2V0R3JvdXBzKHQsbil9LHJlc3RvcmVUb29sYmFyOmZ1bmN0aW9uKCl7Z2kuaXNPbih0KSYmcigpfSxyZWZyZXNoOmZ1bmN0aW9uKCl7fSxmb2N1czpmdW5jdGlvbigpe3NhLmZvY3VzSW4odCl9fX12YXIgR3A9ZnVuY3Rpb24obil7cmV0dXJuIHhtKHdmLnNrZXRjaCh7ZG9tOlRmKCc8ZGl2IGNsYXNzPSIke3ByZWZpeH0tbWFzay1lZGl0LWljb24gJHtwcmVmaXh9LWljb24iPjwvZGl2PicpLGFjdGlvbjpmdW5jdGlvbigpe24ucnVuKGZ1bmN0aW9uKG4pe24uc2V0UmVhZE9ubHkoITEpfSl9fSkpfSwkcD1mdW5jdGlvbigpe3JldHVybiB4bShkZC5za2V0Y2goe2RvbTpUZignPGRpdiBjbGFzcz0iJHtwcmVmaXh9LWVkaXRvci1zb2NrZXQiPjwvZGl2PicpLGNvbXBvbmVudHM6W10sY29udGFpbmVyQmVoYXZpb3VyczpVcihbR20uY29uZmlnKHt9KV0pfSkpfSxVcD1mdW5jdGlvbihuLGUpe0dtLmFwcGVuZChuLHdtKGUpKX0sV3A9ZnVuY3Rpb24obixlKXtHbS5yZW1vdmUobixlKX0sWHA9ZnVuY3Rpb24obixlLHQscil7KCEwPT09dD9wby50b0FscGhhOnBvLnRvT21lZ2EpKHIpLCh0P1VwOldwKShuLGUpfSxxcD1mdW5jdGlvbihlLG4pe3JldHVybiBuLmdldEFuaW1hdGlvblJvb3QuZm9sZChmdW5jdGlvbigpe3JldHVybiBlLmVsZW1lbnQoKX0sZnVuY3Rpb24obil7cmV0dXJuIG4oZSl9KX0sWXA9ZnVuY3Rpb24obil7cmV0dXJuIG4uZGltZW5zaW9uLnByb3BlcnR5fSxLcD1mdW5jdGlvbihuLGUpe3JldHVybiBuLmRpbWVuc2lvbi5nZXREaW1lbnNpb24oZSl9LEpwPWZ1bmN0aW9uKG4sZSl7dmFyIHQ9cXAobixlKTtzbSh0LFtlLnNocmlua2luZ0NsYXNzLGUuZ3Jvd2luZ0NsYXNzXSl9LFFwPWZ1bmN0aW9uKG4sZSl7Zm8obi5lbGVtZW50KCksZS5vcGVuQ2xhc3MpLGNvKG4uZWxlbWVudCgpLGUuY2xvc2VkQ2xhc3MpLE1pKG4uZWxlbWVudCgpLFlwKGUpLCIwcHgiKSxWaShuLmVsZW1lbnQoKSl9LFpwPWZ1bmN0aW9uKG4sZSl7Zm8obi5lbGVtZW50KCksZS5jbG9zZWRDbGFzcyksY28obi5lbGVtZW50KCksZS5vcGVuQ2xhc3MpLFJpKG4uZWxlbWVudCgpLFlwKGUpKX0sbmg9ZnVuY3Rpb24obixlLHQscil7dC5zZXRDb2xsYXBzZWQoKSxNaShuLmVsZW1lbnQoKSxZcChlKSxLcChlLG4uZWxlbWVudCgpKSksVmkobi5lbGVtZW50KCkpLEpwKG4sZSksUXAobixlKSxlLm9uU3RhcnRTaHJpbmsobiksZS5vblNocnVuayhuKX0sZWg9ZnVuY3Rpb24obixlLHQscil7dmFyIG89ci5nZXRPclRodW5rKGZ1bmN0aW9uKCl7cmV0dXJuIEtwKGUsbi5lbGVtZW50KCkpfSk7dC5zZXRDb2xsYXBzZWQoKSxNaShuLmVsZW1lbnQoKSxZcChlKSxvKSxWaShuLmVsZW1lbnQoKSk7dmFyIGk9cXAobixlKTtmbyhpLGUuZ3Jvd2luZ0NsYXNzKSxjbyhpLGUuc2hyaW5raW5nQ2xhc3MpLFFwKG4sZSksZS5vblN0YXJ0U2hyaW5rKG4pfSx0aD1mdW5jdGlvbihuLGUsdCl7dmFyIHI9S3AoZSxuLmVsZW1lbnQoKSk7KCIwcHgiPT09cj9uaDplaCkobixlLHQsTy5zb21lKHIpKX0scmg9ZnVuY3Rpb24obixlLHQpe3ZhciByPXFwKG4sZSksbz1zbyhyLGUuc2hyaW5raW5nQ2xhc3MpLGk9S3AoZSxuLmVsZW1lbnQoKSk7WnAobixlKTt2YXIgdT1LcChlLG4uZWxlbWVudCgpKTsobz9mdW5jdGlvbigpe01pKG4uZWxlbWVudCgpLFlwKGUpLGkpLFZpKG4uZWxlbWVudCgpKX06ZnVuY3Rpb24oKXtRcChuLGUpfSkoKSxmbyhyLGUuc2hyaW5raW5nQ2xhc3MpLGNvKHIsZS5ncm93aW5nQ2xhc3MpLFpwKG4sZSksTWkobi5lbGVtZW50KCksWXAoZSksdSksdC5zZXRFeHBhbmRlZCgpLGUub25TdGFydEdyb3cobil9LG9oPWZ1bmN0aW9uKG4sZSx0KXt2YXIgcj1xcChuLGUpO3JldHVybiEwPT09c28ocixlLmdyb3dpbmdDbGFzcyl9LGloPWZ1bmN0aW9uKG4sZSx0KXt2YXIgcj1xcChuLGUpO3JldHVybiEwPT09c28ocixlLnNocmlua2luZ0NsYXNzKX0sdWg9LyogKi9PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxyZWZyZXNoOmZ1bmN0aW9uKG4sZSx0KXtpZih0LmlzRXhwYW5kZWQoKSl7Umkobi5lbGVtZW50KCksWXAoZSkpO3ZhciByPUtwKGUsbi5lbGVtZW50KCkpO01pKG4uZWxlbWVudCgpLFlwKGUpLHIpfX0sZ3JvdzpmdW5jdGlvbihuLGUsdCl7dC5pc0V4cGFuZGVkKCl8fHJoKG4sZSx0KX0sc2hyaW5rOmZ1bmN0aW9uKG4sZSx0KXt0LmlzRXhwYW5kZWQoKSYmdGgobixlLHQpfSxpbW1lZGlhdGVTaHJpbms6ZnVuY3Rpb24obixlLHQpe3QuaXNFeHBhbmRlZCgpJiZuaChuLGUsdCxPLm5vbmUoKSl9LGhhc0dyb3duOmZ1bmN0aW9uKG4sZSx0KXtyZXR1cm4gdC5pc0V4cGFuZGVkKCl9LGhhc1NocnVuazpmdW5jdGlvbihuLGUsdCl7cmV0dXJuIHQuaXNDb2xsYXBzZWQoKX0saXNHcm93aW5nOm9oLGlzU2hyaW5raW5nOmloLGlzVHJhbnNpdGlvbmluZzpmdW5jdGlvbihuLGUsdCl7cmV0dXJuITA9PT1vaChuLGUpfHwhMD09PWloKG4sZSl9LHRvZ2dsZUdyb3c6ZnVuY3Rpb24obixlLHQpeyh0LmlzRXhwYW5kZWQoKT90aDpyaCkobixlLHQpfSxkaXNhYmxlVHJhbnNpdGlvbnM6SnB9KSxjaD0vKiAqL09iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLGV4aGliaXQ6ZnVuY3Rpb24obixlLHQpe3ZhciByPWUuZXhwYW5kZWQ7cmV0dXJuIEhyKHI/e2NsYXNzZXM6W2Uub3BlbkNsYXNzXSxzdHlsZXM6e319OntjbGFzc2VzOltlLmNsb3NlZENsYXNzXSxzdHlsZXM6RnQoZS5kaW1lbnNpb24ucHJvcGVydHksIjBweCIpfSl9LGV2ZW50czpmdW5jdGlvbih0LHIpe3JldHVybiBUcihbKG49ZWUoKSxNcihuKShmdW5jdGlvbihuLGUpe2UuZXZlbnQoKS5yYXcoKS5wcm9wZXJ0eU5hbWU9PT10LmRpbWVuc2lvbi5wcm9wZXJ0eSYmKEpwKG4sdCksci5pc0V4cGFuZGVkKCkmJlJpKG4uZWxlbWVudCgpLHQuZGltZW5zaW9uLnByb3BlcnR5KSwoci5pc0V4cGFuZGVkKCk/dC5vbkdyb3duOnQub25TaHJ1bmspKG4pKX0pKV0pO3ZhciBufX0pLGFoPVtmcigiY2xvc2VkQ2xhc3MiKSxmcigib3BlbkNsYXNzIiksZnIoInNocmlua2luZ0NsYXNzIiksZnIoImdyb3dpbmdDbGFzcyIpLGRyKCJnZXRBbmltYXRpb25Sb290IikscW8oIm9uU2hydW5rIikscW8oIm9uU3RhcnRTaHJpbmsiKSxxbygib25Hcm93biIpLHFvKCJvblN0YXJ0R3JvdyIpLGhyKCJleHBhbmRlZCIsITEpLHNyKCJkaW1lbnNpb24iLHVyKCJwcm9wZXJ0eSIse3dpZHRoOltRbygicHJvcGVydHkiLCJ3aWR0aCIpLFFvKCJnZXREaW1lbnNpb24iLGZ1bmN0aW9uKG4pe3JldHVybiBlcyhuKSsicHgifSldLGhlaWdodDpbUW8oInByb3BlcnR5IiwiaGVpZ2h0IiksUW8oImdldERpbWVuc2lvbiIsZnVuY3Rpb24obil7cmV0dXJuIE5pKG4pKyJweCJ9KV19KSldLGZoPVhyKHtmaWVsZHM6YWgsbmFtZToic2xpZGluZyIsYWN0aXZlOmNoLGFwaXM6dWgsc3RhdGU6LyogKi9PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxpbml0OmZ1bmN0aW9uKG4pe3ZhciBlPWhvKG4uZXhwYW5kZWQpO3JldHVybiAkcih7aXNFeHBhbmRlZDpmdW5jdGlvbigpe3JldHVybiEwPT09ZS5nZXQoKX0saXNDb2xsYXBzZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hMT09PWUuZ2V0KCl9LHNldENvbGxhcHNlZDpTKGUuc2V0LCExKSxzZXRFeHBhbmRlZDpTKGUuc2V0LCEwKSxyZWFkU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4iZXhwYW5kZWQ6ICIrZS5nZXQoKX19KX19KX0pLHNoPWZ1bmN0aW9uKGUsdCl7dmFyIHI9eG0oZGQuc2tldGNoKHtkb206e3RhZzoiZGl2IixjbGFzc2VzOltiaSgiZHJvcHVwIildfSxjb21wb25lbnRzOltdLGNvbnRhaW5lckJlaGF2aW91cnM6VXIoW0dtLmNvbmZpZyh7fSksZmguY29uZmlnKHtjbG9zZWRDbGFzczpiaSgiZHJvcHVwLWNsb3NlZCIpLG9wZW5DbGFzczpiaSgiZHJvcHVwLW9wZW4iKSxzaHJpbmtpbmdDbGFzczpiaSgiZHJvcHVwLXNocmlua2luZyIpLGdyb3dpbmdDbGFzczpiaSgiZHJvcHVwLWdyb3dpbmciKSxkaW1lbnNpb246e3Byb3BlcnR5OiJoZWlnaHQifSxvblNocnVuazpmdW5jdGlvbihuKXtlKCksdCgpLEdtLnNldChuLFtdKX0sb25Hcm93bjpmdW5jdGlvbihuKXtlKCksdCgpfX0pLGhpKGZ1bmN0aW9uKG4sZSl7byh3KX0pXSl9KSksbz1mdW5jdGlvbihuKXt2LndpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKXtuKCksZmguc2hyaW5rKHIpfSl9O3JldHVybnthcHBlYXI6ZnVuY3Rpb24obixlLHQpeyEwPT09ZmguaGFzU2hydW5rKHIpJiYhMT09PWZoLmlzVHJhbnNpdGlvbmluZyhyKSYmdi53aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCl7ZSh0KSxHbS5zZXQocixbbigpXSksZmguZ3JvdyhyKX0pfSxkaXNhcHBlYXI6byxjb21wb25lbnQ6eShyKSxlbGVtZW50OnIuZWxlbWVudH19LGxoPWZ1bmN0aW9uKG4pe3ZhciBlLHQ7cmV0dXJuIDg9PT1uLnJhdygpLndoaWNoJiYhZG4oWyJpbnB1dCIsInRleHRhcmVhIl0sa2Uobi50YXJnZXQoKSkpJiYoZT1uLnRhcmdldCgpLCFXaShlLCdbY29udGVudGVkaXRhYmxlPSJ0cnVlIl0nLHQpLmlzU29tZSgpKX0sZGg9ZnVuY3Rpb24oKXtyZXR1cm4gTG4oKS5icm93c2VyLmlzRmlyZWZveCgpfSxtaD1VdChbc3IoInRyaWdnZXJFdmVudCIsYXIpLGhyKCJzdG9wQmFja3NwYWNlIiwhMCldKSxnaD1mdW5jdGlvbihlLG4pe3ZhciB0LHIsbyxpLHU9b3IoIkdldHRpbmcgR1VJIGV2ZW50cyBzZXR0aW5ncyIsbWgsbiksYz1GZyh1KSxhPWduKFsidG91Y2hzdGFydCIsInRvdWNobW92ZSIsInRvdWNoZW5kIiwidG91Y2hjYW5jZWwiLCJnZXN0dXJlc3RhcnQiLCJtb3VzZWRvd24iLCJtb3VzZXVwIiwibW91c2VvdmVyIiwibW91c2Vtb3ZlIiwibW91c2VvdXQiLCJjbGljayJdLmNvbmNhdChbInNlbGVjdHN0YXJ0IiwiaW5wdXQiLCJjb250ZXh0bWVudSIsImNoYW5nZSIsInRyYW5zaXRpb25lbmQiLCJkcmFnIiwiZHJhZ3N0YXJ0IiwiZHJhZ2VuZCIsImRyYWdlbnRlciIsImRyYWdsZWF2ZSIsImRyYWdvdmVyIiwiZHJvcCIsImtleXVwIl0pLGZ1bmN0aW9uKG4pe3JldHVybiBFZyhlLG4sZnVuY3Rpb24oZSl7Yy5maXJlSWZSZWFkeShlLG4pLmVhY2goZnVuY3Rpb24obil7biYmZS5raWxsKCl9KSx1LnRyaWdnZXJFdmVudChuLGUpJiZlLmtpbGwoKX0pfSksZj1obyhPLm5vbmUoKSkscz1FZyhlLCJwYXN0ZSIsZnVuY3Rpb24oZSl7Yy5maXJlSWZSZWFkeShlLCJwYXN0ZSIpLmVhY2goZnVuY3Rpb24obil7biYmZS5raWxsKCl9KSx1LnRyaWdnZXJFdmVudCgicGFzdGUiLGUpJiZlLmtpbGwoKSxmLnNldChPLnNvbWUodi5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dS50cmlnZ2VyRXZlbnQodWUoKSxlKX0sMCkpKX0pLGw9RWcoZSwia2V5ZG93biIsZnVuY3Rpb24obil7dS50cmlnZ2VyRXZlbnQoImtleWRvd24iLG4pP24ua2lsbCgpOiEwPT09dS5zdG9wQmFja3NwYWNlJiZsaChuKSYmbi5wcmV2ZW50KCl9KSxkPSh0PWUscj1mdW5jdGlvbihuKXt1LnRyaWdnZXJFdmVudCgiZm9jdXNpbiIsbikmJm4ua2lsbCgpfSxkaCgpP0NnKHQsImZvY3VzIixyKTpFZyh0LCJmb2N1c2luIixyKSksbT1obyhPLm5vbmUoKSksZz0obz1lLGk9ZnVuY3Rpb24obil7dS50cmlnZ2VyRXZlbnQoImZvY3Vzb3V0IixuKSYmbi5raWxsKCksbS5zZXQoTy5zb21lKHYuc2V0VGltZW91dChmdW5jdGlvbigpe3UudHJpZ2dlckV2ZW50KGllKCksbil9LDApKSl9LGRoKCk/Q2cobywiYmx1ciIsaSk6RWcobywiZm9jdXNvdXQiLGkpKTtyZXR1cm57dW5iaW5kOmZ1bmN0aW9uKCl7cG4oYSxmdW5jdGlvbihuKXtuLnVuYmluZCgpfSksbC51bmJpbmQoKSxkLnVuYmluZCgpLGcudW5iaW5kKCkscy51bmJpbmQoKSxmLmdldCgpLmVhY2godi5jbGVhclRpbWVvdXQpLG0uZ2V0KCkuZWFjaCh2LmNsZWFyVGltZW91dCl9fX0scGg9ZnVuY3Rpb24obixlKXt2YXIgdD1JKG4sInRhcmdldCIpLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gbigpfSkuZ2V0T3IoZSk7cmV0dXJuIGhvKHQpfSxoaD1vdChbe3N0b3BwZWQ6W119LHtyZXN1bWU6WyJlbGVtZW50Il19LHtjb21wbGV0ZTpbXX1dKSx2aD1mdW5jdGlvbihuLHIsZSx0LG8saSl7dmFyIHUsYyxhLGYscz1uKHIsdCksbD0odT1lLGM9byxhPWhvKCExKSxmPWhvKCExKSx7c3RvcDpmdW5jdGlvbigpe2Euc2V0KCEwKX0sY3V0OmZ1bmN0aW9uKCl7Zi5zZXQoITApfSxpc1N0b3BwZWQ6YS5nZXQsaXNDdXQ6Zi5nZXQsZXZlbnQ6eSh1KSxzZXRTb3VyY2U6Yy5zZXQsZ2V0U291cmNlOmMuZ2V0fSk7cmV0dXJuIHMuZm9sZChmdW5jdGlvbigpe3JldHVybiBpLmxvZ0V2ZW50Tm9IYW5kbGVycyhyLHQpLGhoLmNvbXBsZXRlKCl9LGZ1bmN0aW9uKGUpe3ZhciB0PWUuZGVzY0hhbmRsZXI7cmV0dXJuIHRtKHQpKGwpLGwuaXNTdG9wcGVkKCk/KGkubG9nRXZlbnRTdG9wcGVkKHIsZS5lbGVtZW50LHQucHVycG9zZSgpKSxoaC5zdG9wcGVkKCkpOmwuaXNDdXQoKT8oaS5sb2dFdmVudEN1dChyLGUuZWxlbWVudCx0LnB1cnBvc2UoKSksaGguY29tcGxldGUoKSk6SGUoZS5lbGVtZW50KS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIGkubG9nTm9QYXJlbnQocixlLmVsZW1lbnQsdC5wdXJwb3NlKCkpLGhoLmNvbXBsZXRlKCl9LGZ1bmN0aW9uKG4pe3JldHVybiBpLmxvZ0V2ZW50UmVzcG9uc2UocixlLmVsZW1lbnQsdC5wdXJwb3NlKCkpLGhoLnJlc3VtZShuKX0pfSl9LHloPWZ1bmN0aW9uKGUsdCxyLG4sbyxpKXtyZXR1cm4gdmgoZSx0LHIsbixvLGkpLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm4hMH0sZnVuY3Rpb24obil7cmV0dXJuIHloKGUsdCxyLG4sbyxpKX0sZnVuY3Rpb24oKXtyZXR1cm4hMX0pfSxiaD1mdW5jdGlvbihuLGUsdCl7dmFyIHIsbyxpPShyPWUsbz1obyghMSkse3N0b3A6ZnVuY3Rpb24oKXtvLnNldCghMCl9LGN1dDp3LGlzU3RvcHBlZDpvLmdldCxpc0N1dDp5KCExKSxldmVudDp5KHIpLHNldFNvdXJjZTphKCJDYW5ub3Qgc2V0IHNvdXJjZSBvZiBhIGJyb2FkY2FzdGVkIGV2ZW50IiksZ2V0U291cmNlOmEoIkNhbm5vdCBnZXQgc291cmNlIG9mIGEgYnJvYWRjYXN0ZWQgZXZlbnQiKX0pO3JldHVybiBwbihuLGZ1bmN0aW9uKG4pe3ZhciBlPW4uZGVzY0hhbmRsZXIoKTt0bShlKShpKX0pLGkuaXNTdG9wcGVkKCl9LHhoPWZ1bmN0aW9uKG4sZSx0LHIsbyl7dmFyIGk9cGgodCxyKTtyZXR1cm4geWgobixlLHQscixpLG8pfSx3aD1mdW5jdGlvbihuLGUpe3JldHVybntlbGVtZW50Om4sZGVzY0hhbmRsZXI6ZX19LFNoPWZ1bmN0aW9uKG4sZSl7cmV0dXJue2lkOnkobiksZGVzY0hhbmRsZXI6eShlKX19O2Z1bmN0aW9uIE9oKCl7dmFyIGk9e307cmV0dXJue3JlZ2lzdGVySWQ6ZnVuY3Rpb24ocixvLG4pe0UobixmdW5jdGlvbihuLGUpe3ZhciB0PWlbZV0hPT11bmRlZmluZWQ/aVtlXTp7fTt0W29dPWVtKG4sciksaVtlXT10fSl9LHVucmVnaXN0ZXJJZDpmdW5jdGlvbih0KXtFKGksZnVuY3Rpb24obixlKXtuLmhhc093blByb3BlcnR5KHQpJiZkZWxldGUgblt0XX0pfSxmaWx0ZXJCeVR5cGU6ZnVuY3Rpb24obil7cmV0dXJuIEkoaSxuKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIEQobixmdW5jdGlvbihuLGUpe3JldHVybiBTaChlLG4pfSl9KS5nZXRPcihbXSl9LGZpbmQ6ZnVuY3Rpb24obixlLHQpe3ZhciBvPUkoaSxlKTtyZXR1cm4geHIodCxmdW5jdGlvbihuKXtyZXR1cm4gdD1vLGZmKHI9bikuZm9sZChmdW5jdGlvbigpe3JldHVybiBPLm5vbmUoKX0sZnVuY3Rpb24oZSl7cmV0dXJuIHQuYmluZChmdW5jdGlvbihuKXtyZXR1cm4gSShuLGUpfSkubWFwKGZ1bmN0aW9uKG4pe3JldHVybiB3aChyLG4pfSl9KTt2YXIgdCxyfSxuKX19fWZ1bmN0aW9uIFRoKCl7dmFyIHI9T2goKSxvPXt9LGk9ZnVuY3Rpb24ocil7dmFyIG49ci5lbGVtZW50KCk7cmV0dXJuIGZmKG4pLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm4gbj0idWlkLSIsZT1yLmVsZW1lbnQoKSx0PUVhKHVmK24pLGFmKGUsdCksdDt2YXIgbixlLHR9LGZ1bmN0aW9uKG4pe3JldHVybiBufSl9LHU9ZnVuY3Rpb24obil7ZmYobi5lbGVtZW50KCkpLmVhY2goZnVuY3Rpb24obil7ZGVsZXRlIG9bbl0sci51bnJlZ2lzdGVySWQobil9KX07cmV0dXJue2ZpbmQ6ZnVuY3Rpb24obixlLHQpe3JldHVybiByLmZpbmQobixlLHQpfSxmaWx0ZXI6ZnVuY3Rpb24obil7cmV0dXJuIHIuZmlsdGVyQnlUeXBlKG4pfSxyZWdpc3RlcjpmdW5jdGlvbihuKXt2YXIgZT1pKG4pO1IobyxlKSYmZnVuY3Rpb24obixlKXt2YXIgdD1vW2VdO2lmKHQhPT1uKXRocm93IG5ldyBFcnJvcignVGhlIHRhZ0lkICInK2UrJyIgaXMgYWxyZWFkeSB1c2VkIGJ5OiAnK1ZvKHQuZWxlbWVudCgpKSsiXG5DYW5ub3QgdXNlIGl0IGZvcjogIitWbyhuLmVsZW1lbnQoKSkrIlxuVGhlIGNvbmZsaWN0aW5nIGVsZW1lbnQgaXMiKyhfZSh0LmVsZW1lbnQoKSk/IiAiOiIgbm90ICIpKyJhbHJlYWR5IGluIHRoZSBET00iKTt1KG4pfShuLGUpO3ZhciB0PVtuXTtyLnJlZ2lzdGVySWQodCxlLG4uZXZlbnRzKCkpLG9bZV09bn0sdW5yZWdpc3Rlcjp1LGdldEJ5SWQ6ZnVuY3Rpb24obil7cmV0dXJuIEkobyxuKX19fXZhciBraD1mdW5jdGlvbih0KXt2YXIgcj1mdW5jdGlvbihlKXtyZXR1cm4gSGUodC5lbGVtZW50KCkpLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm4hMH0sZnVuY3Rpb24obil7cmV0dXJuIEFlKGUsbil9KX0sbz1UaCgpLGY9ZnVuY3Rpb24obixlKXtyZXR1cm4gby5maW5kKHIsbixlKX0sbj1naCh0LmVsZW1lbnQoKSx7dHJpZ2dlckV2ZW50OmZ1bmN0aW9uKHUsYyl7cmV0dXJuIHpvKHUsYy50YXJnZXQoKSxmdW5jdGlvbihuKXtyZXR1cm4gZT1mLHQ9dSxvPW4saT0ocj1jKS50YXJnZXQoKSx4aChlLHQscixpLG8pO3ZhciBlLHQscixvLGl9KX19KSxpPXtkZWJ1Z0luZm86eSgicmVhbCIpLHRyaWdnZXJFdmVudDpmdW5jdGlvbihlLHQscil7em8oZSx0LGZ1bmN0aW9uKG4pe3JldHVybiB4aChmLGUscix0LG4pfSl9LHRyaWdnZXJGb2N1czpmdW5jdGlvbihjLGEpe2ZmKGMpLmZvbGQoZnVuY3Rpb24oKXt3byhjKX0sZnVuY3Rpb24obil7em8ob2UoKSxjLGZ1bmN0aW9uKG4pe3ZhciBlLHQscixvLGksdTtyZXR1cm4gZT1mLHQ9b2UoKSxyPXtvcmlnaW5hdG9yOnkoYSksa2lsbDp3LHByZXZlbnQ6dyx0YXJnZXQ6eShjKX0saT1uLHU9cGgocixvPWMpLHZoKGUsdCxyLG8sdSxpKSwhMX0pfSl9LHRyaWdnZXJFc2NhcGU6ZnVuY3Rpb24obixlKXtpLnRyaWdnZXJFdmVudCgia2V5ZG93biIsbi5lbGVtZW50KCksZS5ldmVudCgpKX0sZ2V0QnlVaWQ6ZnVuY3Rpb24obil7cmV0dXJuIGcobil9LGdldEJ5RG9tOmZ1bmN0aW9uKG4pe3JldHVybiBwKG4pfSxidWlsZDp4bSxhZGRUb0d1aTpmdW5jdGlvbihuKXtjKG4pfSxyZW1vdmVGcm9tR3VpOmZ1bmN0aW9uKG4pe2Eobil9LGFkZFRvV29ybGQ6ZnVuY3Rpb24obil7ZShuKX0scmVtb3ZlRnJvbVdvcmxkOmZ1bmN0aW9uKG4pe3Uobil9LGJyb2FkY2FzdDpmdW5jdGlvbihuKXtsKG4pfSxicm9hZGNhc3RPbjpmdW5jdGlvbihuLGUpe2QobixlKX0sYnJvYWRjYXN0RXZlbnQ6ZnVuY3Rpb24obixlKXttKG4sZSl9LGlzQ29ubmVjdGVkOnkoITApfSxlPWZ1bmN0aW9uKG4pe24uY29ubmVjdChpKSxNZShuLmVsZW1lbnQoKSl8fChvLnJlZ2lzdGVyKG4pLHBuKG4uY29tcG9uZW50cygpLGUpLGkudHJpZ2dlckV2ZW50KGRlKCksbi5lbGVtZW50KCkse3RhcmdldDp5KG4uZWxlbWVudCgpKX0pKX0sdT1mdW5jdGlvbihuKXtNZShuLmVsZW1lbnQoKSl8fChwbihuLmNvbXBvbmVudHMoKSx1KSxvLnVucmVnaXN0ZXIobikpLG4uZGlzY29ubmVjdCgpfSxjPWZ1bmN0aW9uKG4pe1FlKHQsbiwkZSl9LGE9ZnVuY3Rpb24obil7WmUobil9LHM9ZnVuY3Rpb24odCl7dmFyIG49by5maWx0ZXIoY2UoKSk7cG4obixmdW5jdGlvbihuKXt2YXIgZT1uLmRlc2NIYW5kbGVyKCk7dG0oZSkodCl9KX0sbD1mdW5jdGlvbihuKXtzKHt1bml2ZXJzYWw6eSghMCksZGF0YTp5KG4pfSl9LGQ9ZnVuY3Rpb24obixlKXtzKHt1bml2ZXJzYWw6eSghMSksY2hhbm5lbHM6eShuKSxkYXRhOnkoZSl9KX0sbT1mdW5jdGlvbihuLGUpe3ZhciB0PW8uZmlsdGVyKG4pO3JldHVybiBiaCh0LGUpfSxnPWZ1bmN0aW9uKG4pe3JldHVybiBvLmdldEJ5SWQobikuZm9sZChmdW5jdGlvbigpe3JldHVybiBydC5lcnJvcihuZXcgRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIGNvbXBvbmVudCB3aXRoIHVpZDogIicrbisnIiBpbiBzeXN0ZW0uJykpfSxydC52YWx1ZSl9LHA9ZnVuY3Rpb24obil7dmFyIGU9ZmYobikuZ2V0T3IoIm5vdCBmb3VuZCIpO3JldHVybiBnKGUpfTtyZXR1cm4gZSh0KSx7cm9vdDp5KHQpLGVsZW1lbnQ6dC5lbGVtZW50LGRlc3Ryb3k6ZnVuY3Rpb24oKXtuLnVuYmluZCgpLFhlKHQuZWxlbWVudCgpKX0sYWRkOmMscmVtb3ZlOmEsZ2V0QnlVaWQ6ZyxnZXRCeURvbTpwLGFkZFRvV29ybGQ6ZSxyZW1vdmVGcm9tV29ybGQ6dSxicm9hZGNhc3Q6bCxicm9hZGNhc3RPbjpkLGJyb2FkY2FzdEV2ZW50Om19fSxFaD1iaSgicmVhZG9ubHktbW9kZSIpLENoPWJpKCJlZGl0LW1vZGUiKTtmdW5jdGlvbiBNaChuKXt2YXIgZT14bShkZC5za2V0Y2goe2RvbTp7Y2xhc3NlczpbYmkoIm91dGVyLWNvbnRhaW5lciIpXS5jb25jYXQobi5jbGFzc2VzKX0sY29udGFpbmVyQmVoYXZpb3VyczpVcihbcG8uY29uZmlnKHthbHBoYTpFaCxvbWVnYTpDaH0pXSl9KSk7cmV0dXJuIGtoKGUpfXZhciBfaD1mdW5jdGlvbihuLGUpe3ZhciB0PVRlLmZyb21UYWcoImlucHV0Iik7X2kodCx7b3BhY2l0eToiMCIscG9zaXRpb246ImFic29sdXRlIix0b3A6Ii0xMDAwcHgiLGxlZnQ6Ii0xMDAwcHgifSksJGUobix0KSx3byh0KSxlKHQpLFhlKHQpfSxEaD1mdW5jdGlvbihuKXt2YXIgZT1uLmdldFNlbGVjdGlvbigpO2lmKDA8ZS5yYW5nZUNvdW50KXt2YXIgdD1lLmdldFJhbmdlQXQoMCkscj1uLmRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7ci5zZXRTdGFydCh0LnN0YXJ0Q29udGFpbmVyLHQuc3RhcnRPZmZzZXQpLHIuc2V0RW5kKHQuZW5kQ29udGFpbmVyLHQuZW5kT2Zmc2V0KSxlLnJlbW92ZUFsbFJhbmdlcygpLGUuYWRkUmFuZ2Uocil9fSxJaD1mdW5jdGlvbihuLGUpe09vKCkuZWFjaChmdW5jdGlvbihuKXtBZShuLGUpfHxTbyhuKX0pLG4uZm9jdXMoKSx3byhUZS5mcm9tRG9tKG4uZG9jdW1lbnQuYm9keSkpLERoKG4pfSxGaD1mdW5jdGlvbihuLGUsdCxyKXt2YXIgbz1mdW5jdGlvbigpe0loKGUscil9LGk9RWcodCwia2V5ZG93biIsZnVuY3Rpb24obil7ZG4oWyJpbnB1dCIsInRleHRhcmVhIl0sa2Uobi50YXJnZXQoKSkpfHxvKCl9KTtyZXR1cm57dG9SZWFkaW5nOmZ1bmN0aW9uKCl7X2gobixTbyl9LHRvRWRpdGluZzpvLG9uVG9vbGJhclRvdWNoOmZ1bmN0aW9uKCl7fSxkZXN0cm95OmZ1bmN0aW9uKCl7aS51bmJpbmQoKX19fSxSaD1mdW5jdGlvbih0LHIsbyxpLG4pe3ZhciB1PWZ1bmN0aW9uKCl7ci5ydW4oZnVuY3Rpb24obil7bi5yZWZyZXNoU2VsZWN0aW9uKCl9KX0sZT1mdW5jdGlvbihuLGUpe3ZhciB0PW4taS5kb20oKS5zY3JvbGxUb3A7ci5ydW4oZnVuY3Rpb24obil7bi5zY3JvbGxJbnRvVmlldyh0LHQrZSl9KX0sYz1mdW5jdGlvbigpe3IucnVuKGZ1bmN0aW9uKG4pe24uY2xlYXJTZWxlY3Rpb24oKX0pfSxhPWZ1bmN0aW9uKCl7dC5nZXRDdXJzb3JCb3goKS5lYWNoKGZ1bmN0aW9uKG4pe2Uobi50b3AoKSxuLmhlaWdodCgpKX0pLHIucnVuKGZ1bmN0aW9uKG4pe24uc3luY0hlaWdodCgpfSl9LGY9UmcodCkscz1fcChhLDMwMCksbD1bdC5vbktleXVwKGZ1bmN0aW9uKCl7YygpLHMudGhyb3R0bGUoKX0pLHQub25Ob2RlQ2hhbmdlZCh1KSx0Lm9uRG9tQ2hhbmdlZChzLnRocm90dGxlKSx0Lm9uRG9tQ2hhbmdlZCh1KSx0Lm9uU2Nyb2xsVG9DdXJzb3IoZnVuY3Rpb24obil7bi5wcmV2ZW50RGVmYXVsdCgpLHMudGhyb3R0bGUoKX0pLHQub25TY3JvbGxUb0VsZW1lbnQoZnVuY3Rpb24obil7bi5lbGVtZW50KCksZShyLGkpfSksdC5vblRvRWRpdGluZyhmdW5jdGlvbigpe3IucnVuKGZ1bmN0aW9uKG4pe24udG9FZGl0aW5nKCl9KX0pLHQub25Ub1JlYWRpbmcoZnVuY3Rpb24oKXtyLnJ1bihmdW5jdGlvbihuKXtuLnRvUmVhZGluZygpfSl9KSxFZyh0LmRvYygpLCJ0b3VjaGVuZCIsZnVuY3Rpb24obil7QWUodC5odG1sKCksbi50YXJnZXQoKSl8fEFlKHQuYm9keSgpLG4udGFyZ2V0KCkpfSksRWcobywidHJhbnNpdGlvbmVuZCIsZnVuY3Rpb24obil7dmFyIGU7ImhlaWdodCI9PT1uLnJhdygpLnByb3BlcnR5TmFtZSYmKGU9Tmkobyksci5ydW4oZnVuY3Rpb24obil7bi5zZXRWaWV3cG9ydE9mZnNldChlKX0pLHUoKSxhKCkpfSksQ2cobywidG91Y2hzdGFydCIsZnVuY3Rpb24obil7dmFyIGU7ci5ydW4oZnVuY3Rpb24obil7bi5oaWdobGlnaHRTZWxlY3Rpb24oKX0pLGU9bixyLnJ1bihmdW5jdGlvbihuKXtuLm9uVG9vbGJhclRvdWNoKGUpfSksdC5vblRvdWNoVG9vbHN0cmlwKCl9KSxFZyh0LmJvZHkoKSwidG91Y2hzdGFydCIsZnVuY3Rpb24obil7YygpLHQub25Ub3VjaENvbnRlbnQoKSxmLmZpcmVUb3VjaHN0YXJ0KG4pfSksZi5vblRvdWNobW92ZSgpLGYub25Ub3VjaGVuZCgpLEVnKHQuYm9keSgpLCJjbGljayIsZnVuY3Rpb24obil7bi5raWxsKCl9KSxFZyhvLCJ0b3VjaG1vdmUiLGZ1bmN0aW9uKCl7dC5vblRvb2xiYXJTY3JvbGxTdGFydCgpfSldO3JldHVybntkZXN0cm95OmZ1bmN0aW9uKCl7cG4obCxmdW5jdGlvbihuKXtuLnVuYmluZCgpfSl9fX07dmFyIFZoLEJoLEFoLGpoLEhoPXt9LE5oPXtleHBvcnRzOkhofTtWaD11bmRlZmluZWQsQmg9SGgsQWg9Tmgsamg9dW5kZWZpbmVkLGZ1bmN0aW9uKG4pe2lmKCJvYmplY3QiPT10eXBlb2YgQmgmJnZvaWQgMCE9PUFoKUFoLmV4cG9ydHM9bigpO2Vsc2UgaWYoImZ1bmN0aW9uIj09dHlwZW9mIFZoJiZWaC5hbWQpVmgoW10sbik7ZWxzZXsoInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OiJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjp0aGlzKS5FcGhveENvbnRhY3RXcmFwcGVyPW4oKX19KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIHMoaSx1LGMpe2Z1bmN0aW9uIGEoZSxuKXtpZighdVtlXSl7aWYoIWlbZV0pe3ZhciB0PSJmdW5jdGlvbiI9PXR5cGVvZiBqaCYmamg7aWYoIW4mJnQpcmV0dXJuIHQoZSwhMCk7aWYoZilyZXR1cm4gZihlLCEwKTt2YXIgcj1uZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIitlKyInIik7dGhyb3cgci5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIixyfXZhciBvPXVbZV09e2V4cG9ydHM6e319O2lbZV1bMF0uY2FsbChvLmV4cG9ydHMsZnVuY3Rpb24obil7cmV0dXJuIGEoaVtlXVsxXVtuXXx8bil9LG8sby5leHBvcnRzLHMsaSx1LGMpfXJldHVybiB1W2VdLmV4cG9ydHN9Zm9yKHZhciBmPSJmdW5jdGlvbiI9PXR5cGVvZiBqaCYmamgsbj0wO248Yy5sZW5ndGg7bisrKWEoY1tuXSk7cmV0dXJuIGF9KHsxOltmdW5jdGlvbihuLGUsdCl7dmFyIHIsbyxpPWUuZXhwb3J0cz17fTtmdW5jdGlvbiB1KCl7dGhyb3cgbmV3IEVycm9yKCJzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkIil9ZnVuY3Rpb24gYygpe3Rocm93IG5ldyBFcnJvcigiY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkIil9ZnVuY3Rpb24gYShuKXtpZihyPT09c2V0VGltZW91dClyZXR1cm4gc2V0VGltZW91dChuLDApO2lmKChyPT09dXx8IXIpJiZzZXRUaW1lb3V0KXJldHVybiByPXNldFRpbWVvdXQsc2V0VGltZW91dChuLDApO3RyeXtyZXR1cm4gcihuLDApfWNhdGNoKGUpe3RyeXtyZXR1cm4gci5jYWxsKG51bGwsbiwwKX1jYXRjaChlKXtyZXR1cm4gci5jYWxsKHRoaXMsbiwwKX19fSFmdW5jdGlvbigpe3RyeXtyPSJmdW5jdGlvbiI9PXR5cGVvZiBzZXRUaW1lb3V0P3NldFRpbWVvdXQ6dX1jYXRjaChuKXtyPXV9dHJ5e289ImZ1bmN0aW9uIj09dHlwZW9mIGNsZWFyVGltZW91dD9jbGVhclRpbWVvdXQ6Y31jYXRjaChuKXtvPWN9fSgpO3ZhciBmLHM9W10sbD0hMSxkPS0xO2Z1bmN0aW9uIG0oKXtsJiZmJiYobD0hMSxmLmxlbmd0aD9zPWYuY29uY2F0KHMpOmQ9LTEscy5sZW5ndGgmJmcoKSl9ZnVuY3Rpb24gZygpe2lmKCFsKXt2YXIgbj1hKG0pO2w9ITA7Zm9yKHZhciBlPXMubGVuZ3RoO2U7KXtmb3IoZj1zLHM9W107KytkPGU7KWYmJmZbZF0ucnVuKCk7ZD0tMSxlPXMubGVuZ3RofWY9bnVsbCxsPSExLGZ1bmN0aW9uIHQobil7aWYobz09PWNsZWFyVGltZW91dClyZXR1cm4gY2xlYXJUaW1lb3V0KG4pO2lmKChvPT09Y3x8IW8pJiZjbGVhclRpbWVvdXQpcmV0dXJuIG89Y2xlYXJUaW1lb3V0LGNsZWFyVGltZW91dChuKTt0cnl7cmV0dXJuIG8obil9Y2F0Y2goZSl7dHJ5e3JldHVybiBvLmNhbGwobnVsbCxuKX1jYXRjaChlKXtyZXR1cm4gby5jYWxsKHRoaXMsbil9fX0obil9fWZ1bmN0aW9uIHAobixlKXt0aGlzLmZ1bj1uLHRoaXMuYXJyYXk9ZX1mdW5jdGlvbiBoKCl7fWkubmV4dFRpY2s9ZnVuY3Rpb24obil7dmFyIGU9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMSk7aWYoMTxhcmd1bWVudHMubGVuZ3RoKWZvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0KyspZVt0LTFdPWFyZ3VtZW50c1t0XTtzLnB1c2gobmV3IHAobixlKSksMSE9PXMubGVuZ3RofHxsfHxhKGcpfSxwLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24oKXt0aGlzLmZ1bi5hcHBseShudWxsLHRoaXMuYXJyYXkpfSxpLnRpdGxlPSJicm93c2VyIixpLmJyb3dzZXI9ITAsaS5lbnY9e30saS5hcmd2PVtdLGkudmVyc2lvbj0iIixpLnZlcnNpb25zPXt9LGkub249aCxpLmFkZExpc3RlbmVyPWgsaS5vbmNlPWgsaS5vZmY9aCxpLnJlbW92ZUxpc3RlbmVyPWgsaS5yZW1vdmVBbGxMaXN0ZW5lcnM9aCxpLmVtaXQ9aCxpLnByZXBlbmRMaXN0ZW5lcj1oLGkucHJlcGVuZE9uY2VMaXN0ZW5lcj1oLGkubGlzdGVuZXJzPWZ1bmN0aW9uKG4pe3JldHVybltdfSxpLmJpbmRpbmc9ZnVuY3Rpb24obil7dGhyb3cgbmV3IEVycm9yKCJwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZCIpfSxpLmN3ZD1mdW5jdGlvbigpe3JldHVybiIvIn0saS5jaGRpcj1mdW5jdGlvbihuKXt0aHJvdyBuZXcgRXJyb3IoInByb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCIpfSxpLnVtYXNrPWZ1bmN0aW9uKCl7cmV0dXJuIDB9fSx7fV0sMjpbZnVuY3Rpb24obixsLGUpeyhmdW5jdGlvbihlKXtmdW5jdGlvbiByKCl7fWZ1bmN0aW9uIGkobil7aWYoIm9iamVjdCIhPXR5cGVvZiB0aGlzKXRocm93IG5ldyBUeXBlRXJyb3IoIlByb21pc2VzIG11c3QgYmUgY29uc3RydWN0ZWQgdmlhIG5ldyIpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuKXRocm93IG5ldyBUeXBlRXJyb3IoIm5vdCBhIGZ1bmN0aW9uIik7dGhpcy5fc3RhdGU9MCx0aGlzLl9oYW5kbGVkPSExLHRoaXMuX3ZhbHVlPXVuZGVmaW5lZCx0aGlzLl9kZWZlcnJlZHM9W10scyhuLHRoaXMpfWZ1bmN0aW9uIG8ocixvKXtmb3IoOzM9PT1yLl9zdGF0ZTspcj1yLl92YWx1ZTswIT09ci5fc3RhdGU/KHIuX2hhbmRsZWQ9ITAsaS5faW1tZWRpYXRlRm4oZnVuY3Rpb24oKXt2YXIgbj0xPT09ci5fc3RhdGU/by5vbkZ1bGZpbGxlZDpvLm9uUmVqZWN0ZWQ7aWYobnVsbCE9PW4pe3ZhciBlO3RyeXtlPW4oci5fdmFsdWUpfWNhdGNoKHQpe3JldHVybiB2b2lkIGMoby5wcm9taXNlLHQpfXUoby5wcm9taXNlLGUpfWVsc2UoMT09PXIuX3N0YXRlP3U6Yykoby5wcm9taXNlLHIuX3ZhbHVlKX0pKTpyLl9kZWZlcnJlZHMucHVzaChvKX1mdW5jdGlvbiB1KG4sZSl7dHJ5e2lmKGU9PT1uKXRocm93IG5ldyBUeXBlRXJyb3IoIkEgcHJvbWlzZSBjYW5ub3QgYmUgcmVzb2x2ZWQgd2l0aCBpdHNlbGYuIik7aWYoZSYmKCJvYmplY3QiPT10eXBlb2YgZXx8ImZ1bmN0aW9uIj09dHlwZW9mIGUpKXt2YXIgdD1lLnRoZW47aWYoZSBpbnN0YW5jZW9mIGkpcmV0dXJuIG4uX3N0YXRlPTMsbi5fdmFsdWU9ZSx2b2lkIGEobik7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQpcmV0dXJuIHZvaWQgcyhmdW5jdGlvbiByKG4sZSl7cmV0dXJuIGZ1bmN0aW9uKCl7bi5hcHBseShlLGFyZ3VtZW50cyl9fSh0LGUpLG4pfW4uX3N0YXRlPTEsbi5fdmFsdWU9ZSxhKG4pfWNhdGNoKG8pe2MobixvKX19ZnVuY3Rpb24gYyhuLGUpe24uX3N0YXRlPTIsbi5fdmFsdWU9ZSxhKG4pfWZ1bmN0aW9uIGEobil7Mj09PW4uX3N0YXRlJiYwPT09bi5fZGVmZXJyZWRzLmxlbmd0aCYmaS5faW1tZWRpYXRlRm4oZnVuY3Rpb24oKXtuLl9oYW5kbGVkfHxpLl91bmhhbmRsZWRSZWplY3Rpb25GbihuLl92YWx1ZSl9KTtmb3IodmFyIGU9MCx0PW4uX2RlZmVycmVkcy5sZW5ndGg7ZTx0O2UrKylvKG4sbi5fZGVmZXJyZWRzW2VdKTtuLl9kZWZlcnJlZHM9bnVsbH1mdW5jdGlvbiBmKG4sZSx0KXt0aGlzLm9uRnVsZmlsbGVkPSJmdW5jdGlvbiI9PXR5cGVvZiBuP246bnVsbCx0aGlzLm9uUmVqZWN0ZWQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpudWxsLHRoaXMucHJvbWlzZT10fWZ1bmN0aW9uIHMobixlKXt2YXIgdD0hMTt0cnl7bihmdW5jdGlvbihuKXt0fHwodD0hMCx1KGUsbikpfSxmdW5jdGlvbihuKXt0fHwodD0hMCxjKGUsbikpfSl9Y2F0Y2gocil7aWYodClyZXR1cm47dD0hMCxjKGUscil9fXZhciBuLHQ7bj10aGlzLHQ9c2V0VGltZW91dCxpLnByb3RvdHlwZVsiY2F0Y2giXT1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy50aGVuKG51bGwsbil9LGkucHJvdG90eXBlLnRoZW49ZnVuY3Rpb24obixlKXt2YXIgdD1uZXcgdGhpcy5jb25zdHJ1Y3RvcihyKTtyZXR1cm4gbyh0aGlzLG5ldyBmKG4sZSx0KSksdH0saS5hbGw9ZnVuY3Rpb24obil7dmFyIGE9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwobik7cmV0dXJuIG5ldyBpKGZ1bmN0aW9uKG8saSl7aWYoMD09PWEubGVuZ3RoKXJldHVybiBvKFtdKTt2YXIgdT1hLmxlbmd0aDtmdW5jdGlvbiBjKGUsbil7dHJ5e2lmKG4mJigib2JqZWN0Ij09dHlwZW9mIG58fCJmdW5jdGlvbiI9PXR5cGVvZiBuKSl7dmFyIHQ9bi50aGVuO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0KXJldHVybiB2b2lkIHQuY2FsbChuLGZ1bmN0aW9uKG4pe2MoZSxuKX0saSl9YVtlXT1uLDA9PS0tdSYmbyhhKX1jYXRjaChyKXtpKHIpfX1mb3IodmFyIG49MDtuPGEubGVuZ3RoO24rKyljKG4sYVtuXSl9KX0saS5yZXNvbHZlPWZ1bmN0aW9uKGUpe3JldHVybiBlJiYib2JqZWN0Ij09dHlwZW9mIGUmJmUuY29uc3RydWN0b3I9PT1pP2U6bmV3IGkoZnVuY3Rpb24obil7bihlKX0pfSxpLnJlamVjdD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IGkoZnVuY3Rpb24obixlKXtlKHQpfSl9LGkucmFjZT1mdW5jdGlvbihvKXtyZXR1cm4gbmV3IGkoZnVuY3Rpb24obixlKXtmb3IodmFyIHQ9MCxyPW8ubGVuZ3RoO3Q8cjt0Kyspb1t0XS50aGVuKG4sZSl9KX0saS5faW1tZWRpYXRlRm49ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZnVuY3Rpb24obil7ZShuKX06ZnVuY3Rpb24obil7dChuLDApfSxpLl91bmhhbmRsZWRSZWplY3Rpb25Gbj1mdW5jdGlvbihuKXsidW5kZWZpbmVkIiE9dHlwZW9mIGNvbnNvbGUmJmNvbnNvbGUmJmNvbnNvbGUud2FybigiUG9zc2libGUgVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiIsbil9LGkuX3NldEltbWVkaWF0ZUZuPWZ1bmN0aW9uKG4pe2kuX2ltbWVkaWF0ZUZuPW59LGkuX3NldFVuaGFuZGxlZFJlamVjdGlvbkZuPWZ1bmN0aW9uKG4pe2kuX3VuaGFuZGxlZFJlamVjdGlvbkZuPW59LHZvaWQgMCE9PWwmJmwuZXhwb3J0cz9sLmV4cG9ydHM9aTpuLlByb21pc2V8fChuLlByb21pc2U9aSl9KS5jYWxsKHRoaXMsbigidGltZXJzIikuc2V0SW1tZWRpYXRlKX0se3RpbWVyczozfV0sMzpbZnVuY3Rpb24oYSxuLGYpeyhmdW5jdGlvbihuLGUpe3ZhciByPWEoInByb2Nlc3MvYnJvd3Nlci5qcyIpLm5leHRUaWNrLHQ9RnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5LG89QXJyYXkucHJvdG90eXBlLnNsaWNlLGk9e30sdT0wO2Z1bmN0aW9uIGMobixlKXt0aGlzLl9pZD1uLHRoaXMuX2NsZWFyRm49ZX1mLnNldFRpbWVvdXQ9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGModC5jYWxsKHNldFRpbWVvdXQsd2luZG93LGFyZ3VtZW50cyksY2xlYXJUaW1lb3V0KX0sZi5zZXRJbnRlcnZhbD1mdW5jdGlvbigpe3JldHVybiBuZXcgYyh0LmNhbGwoc2V0SW50ZXJ2YWwsd2luZG93LGFyZ3VtZW50cyksY2xlYXJJbnRlcnZhbCl9LGYuY2xlYXJUaW1lb3V0PWYuY2xlYXJJbnRlcnZhbD1mdW5jdGlvbihuKXtuLmNsb3NlKCl9LGMucHJvdG90eXBlLnVucmVmPWMucHJvdG90eXBlLnJlZj1mdW5jdGlvbigpe30sYy5wcm90b3R5cGUuY2xvc2U9ZnVuY3Rpb24oKXt0aGlzLl9jbGVhckZuLmNhbGwod2luZG93LHRoaXMuX2lkKX0sZi5lbnJvbGw9ZnVuY3Rpb24obixlKXtjbGVhclRpbWVvdXQobi5faWRsZVRpbWVvdXRJZCksbi5faWRsZVRpbWVvdXQ9ZX0sZi51bmVucm9sbD1mdW5jdGlvbihuKXtjbGVhclRpbWVvdXQobi5faWRsZVRpbWVvdXRJZCksbi5faWRsZVRpbWVvdXQ9LTF9LGYuX3VucmVmQWN0aXZlPWYuYWN0aXZlPWZ1bmN0aW9uKG4pe2NsZWFyVGltZW91dChuLl9pZGxlVGltZW91dElkKTt2YXIgZT1uLl9pZGxlVGltZW91dDswPD1lJiYobi5faWRsZVRpbWVvdXRJZD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bi5fb25UaW1lb3V0JiZuLl9vblRpbWVvdXQoKX0sZSkpfSxmLnNldEltbWVkaWF0ZT0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOmZ1bmN0aW9uKG4pe3ZhciBlPXUrKyx0PSEoYXJndW1lbnRzLmxlbmd0aDwyKSYmby5jYWxsKGFyZ3VtZW50cywxKTtyZXR1cm4gaVtlXT0hMCxyKGZ1bmN0aW9uKCl7aVtlXSYmKHQ/bi5hcHBseShudWxsLHQpOm4uY2FsbChudWxsKSxmLmNsZWFySW1tZWRpYXRlKGUpKX0pLGV9LGYuY2xlYXJJbW1lZGlhdGU9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpmdW5jdGlvbihuKXtkZWxldGUgaVtuXX19KS5jYWxsKHRoaXMsYSgidGltZXJzIikuc2V0SW1tZWRpYXRlLGEoInRpbWVycyIpLmNsZWFySW1tZWRpYXRlKX0seyJwcm9jZXNzL2Jyb3dzZXIuanMiOjEsdGltZXJzOjN9XSw0OltmdW5jdGlvbihuLGUsdCl7dmFyIHI9bigicHJvbWlzZS1wb2x5ZmlsbCIpLG89InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OkZ1bmN0aW9uKCJyZXR1cm4gdGhpczsiKSgpO2UuZXhwb3J0cz17Ym9sdEV4cG9ydDpvLlByb21pc2V8fHJ9fSx7InByb21pc2UtcG9seWZpbGwiOjJ9XX0se30sWzRdKSg0KX0pO3ZhciBQaCx6aD1OaC5leHBvcnRzLmJvbHRFeHBvcnQsTGg9ZnVuY3Rpb24obil7dmFyIHQ9Ty5ub25lKCksZT1bXSxyPWZ1bmN0aW9uKG4pe28oKT91KG4pOmUucHVzaChuKX0sbz1mdW5jdGlvbigpe3JldHVybiB0LmlzU29tZSgpfSxpPWZ1bmN0aW9uKG4pe3BuKG4sdSl9LHU9ZnVuY3Rpb24oZSl7dC5lYWNoKGZ1bmN0aW9uKG4pe3Yuc2V0VGltZW91dChmdW5jdGlvbigpe2Uobil9LDApfSl9O3JldHVybiBuKGZ1bmN0aW9uKG4pe3Q9Ty5zb21lKG4pLGkoZSksZT1bXX0pLHtnZXQ6cixtYXA6ZnVuY3Rpb24odCl7cmV0dXJuIExoKGZ1bmN0aW9uKGUpe3IoZnVuY3Rpb24obil7ZSh0KG4pKX0pfSl9LGlzUmVhZHk6b319LEdoPXtudTpMaCxwdXJlOmZ1bmN0aW9uKGUpe3JldHVybiBMaChmdW5jdGlvbihuKXtuKGUpfSl9fSwkaD1mdW5jdGlvbihuKXt2LnNldFRpbWVvdXQoZnVuY3Rpb24oKXt0aHJvdyBufSwwKX0sVWg9ZnVuY3Rpb24odCl7dmFyIG49ZnVuY3Rpb24obil7dCgpLnRoZW4obiwkaCl9O3JldHVybnttYXA6ZnVuY3Rpb24obil7cmV0dXJuIFVoKGZ1bmN0aW9uKCl7cmV0dXJuIHQoKS50aGVuKG4pfSl9LGJpbmQ6ZnVuY3Rpb24oZSl7cmV0dXJuIFVoKGZ1bmN0aW9uKCl7cmV0dXJuIHQoKS50aGVuKGZ1bmN0aW9uKG4pe3JldHVybiBlKG4pLnRvUHJvbWlzZSgpfSl9KX0sYW5vbkJpbmQ6ZnVuY3Rpb24obil7cmV0dXJuIFVoKGZ1bmN0aW9uKCl7cmV0dXJuIHQoKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIG4udG9Qcm9taXNlKCl9KX0pfSx0b0xhenk6ZnVuY3Rpb24oKXtyZXR1cm4gR2gubnUobil9LHRvQ2FjaGVkOmZ1bmN0aW9uKCl7dmFyIG49bnVsbDtyZXR1cm4gVWgoZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09PW4mJihuPXQoKSksbn0pfSx0b1Byb21pc2U6dCxnZXQ6bn19LFdoPWZ1bmN0aW9uKG4pe3JldHVybiBVaChmdW5jdGlvbigpe3JldHVybiBuZXcgemgobil9KX0sWGg9ZnVuY3Rpb24obil7cmV0dXJuIFVoKGZ1bmN0aW9uKCl7cmV0dXJuIHpoLnJlc29sdmUobil9KX0scWg9ZnVuY3Rpb24ocixvKXtyZXR1cm4gQ24oW3t3aWR0aDozMjAsaGVpZ2h0OjQ4MCxrZXlib2FyZDp7cG9ydHJhaXQ6MzAwLGxhbmRzY2FwZToyNDB9fSx7d2lkdGg6MzIwLGhlaWdodDo1Njgsa2V5Ym9hcmQ6e3BvcnRyYWl0OjMwMCxsYW5kc2NhcGU6MjQwfX0se3dpZHRoOjM3NSxoZWlnaHQ6NjY3LGtleWJvYXJkOntwb3J0cmFpdDozMDUsbGFuZHNjYXBlOjI0MH19LHt3aWR0aDo0MTQsaGVpZ2h0OjczNixrZXlib2FyZDp7cG9ydHJhaXQ6MzIwLGxhbmRzY2FwZToyNDB9fSx7d2lkdGg6NzY4LGhlaWdodDoxMDI0LGtleWJvYXJkOntwb3J0cmFpdDozMjAsbGFuZHNjYXBlOjQwMH19LHt3aWR0aDoxMDI0LGhlaWdodDoxMzY2LGtleWJvYXJkOntwb3J0cmFpdDozODAsbGFuZHNjYXBlOjQ2MH19XSxmdW5jdGlvbihuKXtyZXR1cm4gZT1yPD1uLndpZHRoJiZvPD1uLmhlaWdodCx0PW4ua2V5Ym9hcmQsZT9PLnNvbWUodCk6Ty5ub25lKCk7dmFyIGUsdH0pLmdldE9yKHtwb3J0cmFpdDpvLzUsbGFuZHNjYXBlOnIvNH0pfSxZaD1mdW5jdGlvbihuKXt2YXIgZSx0PV9nKG4pLmlzUG9ydHJhaXQoKSxyPXFoKChlPW4pLnNjcmVlbi53aWR0aCxlLnNjcmVlbi5oZWlnaHQpLG89dD9yLnBvcnRyYWl0OnIubGFuZHNjYXBlO3JldHVybih0P24uc2NyZWVuLmhlaWdodDpuLnNjcmVlbi53aWR0aCktbi5pbm5lckhlaWdodD5vPzA6b30sS2g9ZnVuY3Rpb24obixlKXt2YXIgdD1qZShuKS5kb20oKS5kZWZhdWx0VmlldztyZXR1cm4gTmkobikrTmkoZSktWWgodCl9LEpoPWZ1bmN0aW9uKG4sZSx0KXt2YXIgcj1LaChlLHQpLG89TmkoZSkrTmkodCktcjtNaShuLCJwYWRkaW5nLWJvdHRvbSIsbysicHgiKX0sUWg9b3QoW3tmaXhlZDpbImVsZW1lbnQiLCJwcm9wZXJ0eSIsIm9mZnNldFkiXX0se3Njcm9sbGVyOlsiZWxlbWVudCIsIm9mZnNldFkiXX1dKSxaaD0iZGF0YS0iK2JpKCJwb3NpdGlvbi15LWZpeGVkIiksbnY9ImRhdGEtIitiaSgieS1wcm9wZXJ0eSIpLGV2PSJkYXRhLSIrYmkoInNjcm9sbGluZyIpLHR2PSJkYXRhLSIrYmkoImxhc3Qtd2luZG93LWhlaWdodCIpLHJ2PWZ1bmN0aW9uKG4pe3JldHVybiBBZyhuLFpoKX0sb3Y9ZnVuY3Rpb24obixlKXt2YXIgdD1acihuLG52KTtyZXR1cm4gUWguZml4ZWQobix0LGUpfSxpdj1mdW5jdGlvbihuLGUpe3JldHVybiBRaC5zY3JvbGxlcihuLGUpfSx1dj1mdW5jdGlvbihuKXt2YXIgZT1ydihuKTtyZXR1cm4oInRydWUiPT09WnIobixldik/aXY6b3YpKG4sZSl9LGN2PWZ1bmN0aW9uKG4sZSx0KXt2YXIgcj1qZShuKS5kb20oKS5kZWZhdWx0Vmlldy5pbm5lckhlaWdodDtyZXR1cm4gSnIobix0dixyKyJweCIpLHItZS10fSxhdj1mdW5jdGlvbihyLG8saSx1KXt2YXIgZT1qZShyKS5kb20oKS5kZWZhdWx0VmlldyxuPWZ1bmN0aW9uKG4pe3ZhciBlPVpyKG4sInN0eWxlIik7X2kobix7cG9zaXRpb246ImFic29sdXRlIix0b3A6IjBweCJ9KSxKcihuLFpoLCIwcHgiKSxKcihuLG52LCJ0b3AiKTtyZXR1cm57cmVzdG9yZTpmdW5jdGlvbigpe0pyKG4sInN0eWxlIixlfHwiIiksdG8obixaaCksdG8obixudil9fX0oaSksdD1OaShpKSxjPU5pKHUpLGE9ZnVuY3Rpb24obixlLHQpe3ZhciByPVpyKHQsInN0eWxlIik7dWcodCksX2kodCx7cG9zaXRpb246ImFic29sdXRlIixoZWlnaHQ6ZSsicHgiLHdpZHRoOiIxMDAlIix0b3A6bisicHgifSksSnIodCxaaCxuKyJweCIpLEpyKHQsZXYsInRydWUiKSxKcih0LG52LCJ0b3AiKTtyZXR1cm57cmVzdG9yZTpmdW5jdGlvbigpe2NnKHQpLEpyKHQsInN0eWxlIixyfHwiIiksdG8odCxaaCksdG8odCxldiksdG8odCxudil9fX0odCxjdihyLHQsYyksciksZj1mdW5jdGlvbihuKXt2YXIgZT1acihuLCJzdHlsZSIpO19pKG4se3Bvc2l0aW9uOiJhYnNvbHV0ZSIsYm90dG9tOiIwcHgifSksSnIobixaaCwiMHB4IiksSnIobixudiwiYm90dG9tIik7cmV0dXJue3Jlc3RvcmU6ZnVuY3Rpb24oKXtKcihuLCJzdHlsZSIsZXx8IiIpLHRvKG4sWmgpLHRvKG4sbnYpfX19KHUpLHM9ITAsbD1mdW5jdGlvbigpe3ZhciBuPWUuaW5uZXJIZWlnaHQ7cmV0dXJuIEFnKHIsdHYpPG59LGQ9ZnVuY3Rpb24oKXtpZihzKXt2YXIgbj1OaShpKSxlPU5pKHUpLHQ9Y3YocixuLGUpO0pyKHIsWmgsbisicHgiKSxNaShyLCJoZWlnaHQiLHQrInB4IiksSmgobyxyLHUpfX07cmV0dXJuIEpoKG8scix1KSx7c2V0Vmlld3BvcnRPZmZzZXQ6ZnVuY3Rpb24obil7SnIocixaaCxuKyJweCIpLGQoKX0saXNFeHBhbmRpbmc6bCxpc1Nocmlua2luZzptKGwpLHJlZnJlc2g6ZCxyZXN0b3JlOmZ1bmN0aW9uKCl7cz0hMSxuLnJlc3RvcmUoKSxhLnJlc3RvcmUoKSxmLnJlc3RvcmUoKX19fSxmdj0oUGg9bnVsbCx7YW5pbWF0ZTpmdW5jdGlvbihvLGksdSxjLGUsbil7dmFyIGE9ITEsZj1mdW5jdGlvbihuKXthPSEwLGUobil9O01nLmNsZWFySW50ZXJ2YWwoUGgpO3ZhciBzPWZ1bmN0aW9uKG4pe01nLmNsZWFySW50ZXJ2YWwoUGgpLGYobil9O1BoPU1nLnNldEludGVydmFsKGZ1bmN0aW9uKCl7dmFyIG4sZSx0LHI9bygpO249cixlPWksdD11LChNYXRoLmFicyhuLWUpPD10P08ubm9uZSgpOm48ZT9PLnNvbWUobit0KTpPLnNvbWUobi10KSkuZm9sZChmdW5jdGlvbigpe01nLmNsZWFySW50ZXJ2YWwoUGgpLGYoaSl9LGZ1bmN0aW9uKG4pe2lmKGMobixzKSwhYSl7dmFyIGU9bygpOyhlIT09bnx8TWF0aC5hYnMoZS1pKT5NYXRoLmFicyhyLWkpKSYmKE1nLmNsZWFySW50ZXJ2YWwoUGgpLGYoaSkpfX0pfSxuKX19KSxzdj0iZGF0YS0iK2JpKCJsYXN0LXNjcm9sbC10b3AiKSxsdj1mdW5jdGlvbihuKXt2YXIgZT1GaShuLCJ0b3AiKS5nZXRPcigiMCIpO3JldHVybiBwYXJzZUludChlLDEwKX0sZHY9ZnVuY3Rpb24obil7cmV0dXJuIHBhcnNlSW50KG4uZG9tKCkuc2Nyb2xsVG9wLDEwKX0sbXY9ZnVuY3Rpb24obyxpKXtyZXR1cm4gV2goZnVuY3Rpb24obil7dmFyIGU9UyhkdixvKTtKcihvLHN2LGUoKSk7dmFyIHQ9TWF0aC5hYnMoaS1lKCkpLHI9TWF0aC5jZWlsKHQvMTApO2Z2LmFuaW1hdGUoZSxpLHIsZnVuY3Rpb24obixlKXtBZyhvLHN2KSE9PW8uZG9tKCkuc2Nyb2xsVG9wP2Uoby5kb20oKS5zY3JvbGxUb3ApOihvLmRvbSgpLnNjcm9sbFRvcD1uLEpyKG8sc3YsbikpfSxmdW5jdGlvbigpe28uZG9tKCkuc2Nyb2xsVG9wPWksSnIobyxzdixpKSxuKGkpfSwxMCl9KX0sZ3Y9ZnVuY3Rpb24obixlKXt2YXIgdD1lK3J2KG4pKyJweCI7TWkobiwidG9wIix0KX07dmFyIHB2PWZ1bmN0aW9uKHUsbil7cmV0dXJuIG4oZnVuY3Rpb24ocil7dmFyIG89W10saT0wOzA9PT11Lmxlbmd0aD9yKFtdKTpwbih1LGZ1bmN0aW9uKG4sZSl7dmFyIHQ7bi5nZXQoKHQ9ZSxmdW5jdGlvbihuKXtvW3RdPW4sKytpPj11Lmxlbmd0aCYmcihvKX0pKX0pfSl9LGh2PWZ1bmN0aW9uKG4sZSx0KXt2YXIgcixvLGksdT1lK3QsYz1GaShuLCJ0b3AiKS5nZXRPcih0KSxhPXUtcGFyc2VJbnQoYywxMCksZj1uLmRvbSgpLnNjcm9sbFRvcCthO3JldHVybiByPW4sbz1mLGk9dSxXaChmdW5jdGlvbihuKXt2YXIgZT1TKGR2LHIpO2Z2LmFuaW1hdGUoZSxvLDE1LGZ1bmN0aW9uKG4pe3IuZG9tKCkuc2Nyb2xsVG9wPW4sTWkociwidG9wIixsdihyKSsxNSsicHgiKX0sZnVuY3Rpb24oKXtyLmRvbSgpLnNjcm9sbFRvcD1vLE1pKHIsInRvcCIsaSsicHgiKSxuKG8pfSwxMCl9KX0sdnY9ZnVuY3Rpb24obixvKXtyZXR1cm4gbi5mb2xkKGZ1bmN0aW9uKG4sZSx0KXtyZXR1cm4gTWkobixlLG8rKHI9dCkrInB4IiksWGgocik7dmFyIHJ9LGZ1bmN0aW9uKG4sZSl7cmV0dXJuIGh2KG4sbyxlKX0pfSx5dj1mdW5jdGlvbihuLGUpe3ZhciB0LHI9KHQ9TGkobiwiWyIrWmgrIl0iKSxnbih0LHV2KSksbz1nbihyLGZ1bmN0aW9uKG4pe3JldHVybiB2dihuLGUpfSk7cmV0dXJuIHB2KG8sV2gpfSxidj1mdW5jdGlvbihpLHUsbix0LGUscil7dmFyIG89ZnVuY3Rpb24gZih0KXt2YXIgcj1obyhHaC5wdXJlKHt9KSk7cmV0dXJue3N0YXJ0OmZ1bmN0aW9uKGUpe3ZhciBuPUdoLm51KGZ1bmN0aW9uKG4pe3JldHVybiB0KGUpLmdldChuKX0pO3Iuc2V0KG4pfSxpZGxlOmZ1bmN0aW9uKG4pe3IuZ2V0KCkuZ2V0KGZ1bmN0aW9uKCl7bigpfSl9fX0oZnVuY3Rpb24obil7cmV0dXJuIHQ9dSxyPW4sbz1qZShlPWkpLmRvbSgpLmRlZmF1bHRWaWV3LFdoKGZ1bmN0aW9uKG4pe2d2KGUsciksZ3YodCxyKSxvLnNjcm9sbFRvKDAsciksbihyKX0pO3ZhciBlLHQscixvfSksYz1fcChmdW5jdGlvbigpe28uaWRsZShmdW5jdGlvbigpe3l2KG4sdC5wYWdlWU9mZnNldCkuZ2V0KGZ1bmN0aW9uKCl7dmFyIG47KG49YXAociksTy5mcm9tKG5bMF0pLmJpbmQoZnVuY3Rpb24obil7dmFyIGU9bi50b3AoKS11LmRvbSgpLnNjcm9sbFRvcDtyZXR1cm4gZT50LmlubmVySGVpZ2h0KzV8fGU8LTU/Ty5zb21lKHt0b3A6eShlKSxib3R0b206eShlK24uaGVpZ2h0KCkpfSk6Ty5ub25lKCl9KSkuZWFjaChmdW5jdGlvbihuKXt1LmRvbSgpLnNjcm9sbFRvcD11LmRvbSgpLnNjcm9sbFRvcCtuLnRvcCgpfSksby5zdGFydCgwKSxlLnJlZnJlc2goKX0pfSl9LDFlMyksYT1FZyhUZS5mcm9tRG9tKHQpLCJzY3JvbGwiLGZ1bmN0aW9uKCl7dC5wYWdlWU9mZnNldDwwfHxjLnRocm90dGxlKCl9KTtyZXR1cm4geXYobix0LnBhZ2VZT2Zmc2V0KS5nZXQoYikse3VuYmluZDphLnVuYmluZH19LHh2PWZ1bmN0aW9uKG4pe3ZhciBhPW4uY1dpbixlPW4uY2VCb2R5LGY9bi5zb2NrZXQsdD1uLnRvb2xzdHJpcCxyPW4uY29udGVudEVsZW1lbnQsbz1uLmtleWJvYXJkVHlwZSxpPW4ub3V0ZXJXaW5kb3cscz1uLmRyb3B1cCx1PW4ub3V0ZXJCb2R5LGM9YXYoZixlLHQscyksbD1vKHUsYSxEZSgpLHIpLGQ9RGcoaSx7b25DaGFuZ2U6dyxvblJlYWR5OmMucmVmcmVzaH0pO2Qub25BZGp1c3RtZW50KGZ1bmN0aW9uKCl7Yy5yZWZyZXNoKCl9KTt2YXIgbT1FZyhUZS5mcm9tRG9tKGkpLCJyZXNpemUiLGZ1bmN0aW9uKCl7Yy5pc0V4cGFuZGluZygpJiZjLnJlZnJlc2goKX0pLGc9YnYodCxmLHUsaSxjLGEpLHA9ZnVuY3Rpb24gdih0LGUpe3ZhciBuPXQuZG9jdW1lbnQscj1UZS5mcm9tVGFnKCJkaXYiKTtjbyhyLGJpKCJ1bmZvY3VzZWQtc2VsZWN0aW9ucyIpKSwkZShUZS5mcm9tRG9tKG4uZG9jdW1lbnRFbGVtZW50KSxyKTt2YXIgbz1FZyhyLCJ0b3VjaHN0YXJ0IixmdW5jdGlvbihuKXtuLnByZXZlbnQoKSxJaCh0LGUpLHUoKX0pLGk9ZnVuY3Rpb24obil7dmFyIGU9VGUuZnJvbVRhZygic3BhbiIpO3JldHVybiBmbShlLFtiaSgibGF5ZXItZWRpdG9yIiksYmkoInVuZm9jdXNlZC1zZWxlY3Rpb24iKV0pLF9pKGUse2xlZnQ6bi5sZWZ0KCkrInB4Iix0b3A6bi50b3AoKSsicHgiLHdpZHRoOm4ud2lkdGgoKSsicHgiLGhlaWdodDpuLmhlaWdodCgpKyJweCJ9KSxlfSx1PWZ1bmN0aW9uKCl7V2Uocil9O3JldHVybnt1cGRhdGU6ZnVuY3Rpb24oKXt1KCk7dmFyIG49YXAodCksZT1nbihuLGkpO1VlKHIsZSl9LGlzQWN0aXZlOmZ1bmN0aW9uKCl7cmV0dXJuIDA8TmUocikubGVuZ3RofSxkZXN0cm95OmZ1bmN0aW9uKCl7by51bmJpbmQoKSxYZShyKX0sY2xlYXI6dX19KGEsciksaD1mdW5jdGlvbigpe3AuY2xlYXIoKX07cmV0dXJue3RvRWRpdGluZzpmdW5jdGlvbigpe2wudG9FZGl0aW5nKCksaCgpfSx0b1JlYWRpbmc6ZnVuY3Rpb24oKXtsLnRvUmVhZGluZygpfSxvblRvb2xiYXJUb3VjaDpmdW5jdGlvbihuKXtsLm9uVG9vbGJhclRvdWNoKCl9LHJlZnJlc2hTZWxlY3Rpb246ZnVuY3Rpb24oKXtwLmlzQWN0aXZlKCkmJnAudXBkYXRlKCl9LGNsZWFyU2VsZWN0aW9uOmgsaGlnaGxpZ2h0U2VsZWN0aW9uOmZ1bmN0aW9uKCl7cC51cGRhdGUoKX0sc2Nyb2xsSW50b1ZpZXc6ZnVuY3Rpb24obixlKXt2YXIgdCxyLG8saSx1LGM7dD1hLG89bixpPWUsdT1LaChyPWYscyksYz1TKERoLHQpLHU8b3x8dTxpP212KHIsci5kb20oKS5zY3JvbGxUb3AtdStpKS5nZXQoYyk6bzwwJiZtdihyLHIuZG9tKCkuc2Nyb2xsVG9wK28pLmdldChjKX0sdXBkYXRlVG9vbGJhclBhZGRpbmc6dyxzZXRWaWV3cG9ydE9mZnNldDpmdW5jdGlvbihuKXt2YXIgaSx1O2Muc2V0Vmlld3BvcnRPZmZzZXQobiksaT1mLHU9bixXaChmdW5jdGlvbihuKXt2YXIgZT1TKGx2LGkpLHQ9ZnVuY3Rpb24obil7TWkoaSwidG9wIixuKyJweCIpfSxyPU1hdGguYWJzKHUtZSgpKSxvPU1hdGguY2VpbChyLzEwKTtmdi5hbmltYXRlKGUsdSxvLHQsZnVuY3Rpb24oKXt0KHUpLG4odSl9LDEwKX0pLmdldChiKX0sc3luY0hlaWdodDpmdW5jdGlvbigpe01pKHIsImhlaWdodCIsci5kb20oKS5jb250ZW50V2luZG93LmRvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0KyJweCIpfSxyZWZyZXNoU3RydWN0dXJlOmMucmVmcmVzaCxkZXN0cm95OmZ1bmN0aW9uKCl7Yy5yZXN0b3JlKCksZC5kZXN0cm95KCksZy51bmJpbmQoKSxtLnVuYmluZCgpLGwuZGVzdHJveSgpLHAuZGVzdHJveSgpLF9oKERlKCksU28pfX19LHd2PWZ1bmN0aW9uKHIsbil7dmFyIG89TXAoKSxpPUdkKCksdT1HZCgpLGM9TGQoKSxhPUxkKCk7cmV0dXJue2VudGVyOmZ1bmN0aW9uKCl7bi5oaWRlKCk7dmFyIHQ9VGUuZnJvbURvbSh2LmRvY3VtZW50KTt4cChyLmVkaXRvcikuZWFjaChmdW5jdGlvbihuKXt2YXIgZTtpLnNldCh7c29ja2V0SGVpZ2h0OkZpKHIuc29ja2V0LCJoZWlnaHQiKSxpZnJhbWVIZWlnaHQ6Rmkobi5mcmFtZSgpLCJoZWlnaHQiKSxvdXRlclNjcm9sbDp2LmRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wfSksdS5zZXQoe2V4Y2x1c2l2ZXM6KGU9Ii4iK2FnLEVnKHQsInRvdWNobW92ZSIsZnVuY3Rpb24obil7V2kobi50YXJnZXQoKSxlKS5maWx0ZXIoenApLmZvbGQoZnVuY3Rpb24oKXtuLnJhdygpLnByZXZlbnREZWZhdWx0KCl9LHcpfSkpfSksY28oci5jb250YWluZXIsYmkoImZ1bGxzY3JlZW4tbWF4aW1pemVkIikpLEVwKHIuY29udGFpbmVyLG4uYm9keSgpKSxvLm1heGltaXplKCksTWkoci5zb2NrZXQsIm92ZXJmbG93Iiwic2Nyb2xsIiksTWkoci5zb2NrZXQsIi13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nIiwidG91Y2giKSx3byhuLmJvZHkoKSksYy5zZXQoeHYoe2NXaW46bi53aW4oKSxjZUJvZHk6bi5ib2R5KCksc29ja2V0OnIuc29ja2V0LHRvb2xzdHJpcDpyLnRvb2xzdHJpcCxkcm9wdXA6ci5kcm9wdXAuZWxlbWVudCgpLGNvbnRlbnRFbGVtZW50Om4uZnJhbWUoKSxvdXRlckJvZHk6ci5ib2R5LG91dGVyV2luZG93OnIud2luLGtleWJvYXJkVHlwZTpGaH0pKSxjLnJ1bihmdW5jdGlvbihuKXtuLnN5bmNIZWlnaHQoKX0pLGEuc2V0KFJoKG4sYyxyLnRvb2xzdHJpcCxyLnNvY2tldCxyLmRyb3B1cCkpfSl9LHJlZnJlc2hTdHJ1Y3R1cmU6ZnVuY3Rpb24oKXtjLnJ1bihmdW5jdGlvbihuKXtuLnJlZnJlc2hTdHJ1Y3R1cmUoKX0pfSxleGl0OmZ1bmN0aW9uKCl7by5yZXN0b3JlKCksYS5jbGVhcigpLGMuY2xlYXIoKSxuLnNob3coKSxpLm9uKGZ1bmN0aW9uKG4pe24uc29ja2V0SGVpZ2h0LmVhY2goZnVuY3Rpb24obil7TWkoci5zb2NrZXQsImhlaWdodCIsbil9KSxuLmlmcmFtZUhlaWdodC5lYWNoKGZ1bmN0aW9uKG4pe01pKHIuZWRpdG9yLmdldEZyYW1lKCksImhlaWdodCIsbil9KSx2LmRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wPW4uc2Nyb2xsVG9wfSksaS5jbGVhcigpLHUub24oZnVuY3Rpb24obil7bi5leGNsdXNpdmVzLnVuYmluZCgpfSksdS5jbGVhcigpLGZvKHIuY29udGFpbmVyLGJpKCJmdWxsc2NyZWVuLW1heGltaXplZCIpKSxDcCgpLGNnKHIudG9vbGJhciksUmkoci5zb2NrZXQsIm92ZXJmbG93IiksUmkoci5zb2NrZXQsIi13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nIiksU28oci5lZGl0b3IuZ2V0RnJhbWUoKSkseHAoci5lZGl0b3IpLmVhY2goZnVuY3Rpb24obil7bi5jbGVhclNlbGVjdGlvbigpfSl9fX07ZnVuY3Rpb24gU3Yobil7dmFyIGU9TWgoe2NsYXNzZXM6W2JpKCJpb3MtY29udGFpbmVyIildfSksdD1McCgpLHI9TGQoKSxvPUdwKHIpLGk9JHAoKSx1PXNoKGZ1bmN0aW9uKCl7ci5ydW4oZnVuY3Rpb24obil7bi5yZWZyZXNoU3RydWN0dXJlKCl9KX0sbik7ZS5hZGQodC53cmFwcGVyKCkpLGUuYWRkKGkpLGUuYWRkKHUuY29tcG9uZW50KCkpO3JldHVybntzeXN0ZW06eShlKSxlbGVtZW50OmUuZWxlbWVudCxpbml0OmZ1bmN0aW9uKG4pe3Iuc2V0KGZ1bmN0aW9uKG4pe3ZhciBlPW9yKCJHZXR0aW5nIElvc1dlYmFwcCBzY2hlbWEiLElwLG4pO01pKGUudG9vbHN0cmlwLCJ3aWR0aCIsIjEwMCUiKSxNaShlLmNvbnRhaW5lciwicG9zaXRpb24iLCJyZWxhdGl2ZSIpO3ZhciB0PXhtKERwKGZ1bmN0aW9uKCl7ZS5zZXRSZWFkT25seShlLnJlYWRPbmx5T25Jbml0KCkpLG8uZW50ZXIoKX0sZS50cmFuc2xhdGUpKTtlLmFsbG95LmFkZCh0KTt2YXIgcj17c2hvdzpmdW5jdGlvbigpe2UuYWxsb3kuYWRkKHQpfSxoaWRlOmZ1bmN0aW9uKCl7ZS5hbGxveS5yZW1vdmUodCl9fSxvPXd2KGUscik7cmV0dXJue3NldFJlYWRPbmx5OmUuc2V0UmVhZE9ubHkscmVmcmVzaFN0cnVjdHVyZTpvLnJlZnJlc2hTdHJ1Y3R1cmUsZW50ZXI6by5lbnRlcixleGl0Om8uZXhpdCxkZXN0cm95Ond9fShuKSl9LGV4aXQ6ZnVuY3Rpb24oKXtyLnJ1bihmdW5jdGlvbihuKXtHbS5yZW1vdmUoaSxvKSxuLmV4aXQoKX0pfSxzZXRUb29sYmFyR3JvdXBzOmZ1bmN0aW9uKG4pe3ZhciBlPXQuY3JlYXRlR3JvdXBzKG4pO3Quc2V0R3JvdXBzKGUpfSxzZXRDb250ZXh0VG9vbGJhcjpmdW5jdGlvbihuKXt2YXIgZT10LmNyZWF0ZUdyb3VwcyhuKTt0LnNldENvbnRleHRUb29sYmFyKGUpfSxmb2N1c1Rvb2xiYXI6ZnVuY3Rpb24oKXt0LmZvY3VzKCl9LHJlc3RvcmVUb29sYmFyOmZ1bmN0aW9uKCl7dC5yZXN0b3JlVG9vbGJhcigpfSx1cGRhdGVNb2RlOmZ1bmN0aW9uKG4pe1hwKGksbyxuLGUucm9vdCgpKX0sc29ja2V0OnkoaSksZHJvcHVwOnkodSl9fXZhciBPdj10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS5FZGl0b3JNYW5hZ2VyIiksVHY9ZnVuY3Rpb24obixlLHQpe24uc3lzdGVtKCkuYnJvYWRjYXN0T24oW0NvXSx7Y29tbWFuZDplLHN0YXRlOnR9KX0sa3Y9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ZnVuY3Rpb24oKXtlLl9za2luTG9hZGVkPSEwLGUuZmlyZSgiU2tpbkxvYWRlZCIpfTtlLmluaXRpYWxpemVkP24oKTplLm9uKCJpbml0IixuKX19LEV2PSJ0b1JlYWRpbmciLEN2PSJ0b0VkaXRpbmciLE12PWZ1bmN0aW9uKGgpe3JldHVybntnZXROb3RpZmljYXRpb25NYW5hZ2VySW1wbDpmdW5jdGlvbigpe3JldHVybntvcGVuOnkoe3Byb2dyZXNzQmFyOnt2YWx1ZTp3fSxjbG9zZTp3LHRleHQ6dyxnZXRFbDp5KG51bGwpLG1vdmVUbzp3LG1vdmVSZWw6dyxzZXR0aW5nczp7fX0pLGNsb3NlOncscmVwb3NpdGlvbjp3LGdldEFyZ3M6eSh7fSl9fSxyZW5kZXJVSTpmdW5jdGlvbigpe3ZhciBuLGU9aC5nZXRFbGVtZW50KCksdD17Y29udGVudDoobj1JKGguc2V0dGluZ3MsInNraW5fdXJsIikuZm9sZChmdW5jdGlvbigpe3JldHVybiBPdi5iYXNlVVJMKyIvc2tpbnMvdWkvb3hpZGUifSxmdW5jdGlvbihuKXtyZXR1cm4gbn0pKSsiL2NvbnRlbnQubW9iaWxlLm1pbi5jc3MiLHVpOm4rIi9za2luLm1vYmlsZS5taW4uY3NzIn07ITE9PSghMT09PWguc2V0dGluZ3Muc2tpbik/KGguY29udGVudENTUy5wdXNoKHQuY29udGVudCksa28uRE9NLnN0eWxlU2hlZXRMb2FkZXIubG9hZCh0LnVpLGt2KGgpKSk6a3YoaCkoKTt2YXIgcixvLGk9ZnVuY3Rpb24oKXtoLmZpcmUoIlNjcm9sbEludG9WaWV3Iil9LGQ9KExuKCkub3MuaXNBbmRyb2lkKCk/ZnVuY3Rpb24gZihuKXt2YXIgZT1NaCh7Y2xhc3NlczpbYmkoImFuZHJvaWQtY29udGFpbmVyIildfSksdD1McCgpLHI9TGQoKSxvPUdwKHIpLGk9JHAoKSx1PXNoKHcsbik7cmV0dXJuIGUuYWRkKHQud3JhcHBlcigpKSxlLmFkZChpKSxlLmFkZCh1LmNvbXBvbmVudCgpKSx7c3lzdGVtOnkoZSksZWxlbWVudDplLmVsZW1lbnQsaW5pdDpmdW5jdGlvbihuKXtyLnNldChGcChuKSl9LGV4aXQ6ZnVuY3Rpb24oKXtyLnJ1bihmdW5jdGlvbihuKXtuLmV4aXQoKSxHbS5yZW1vdmUoaSxvKX0pfSxzZXRUb29sYmFyR3JvdXBzOmZ1bmN0aW9uKG4pe3ZhciBlPXQuY3JlYXRlR3JvdXBzKG4pO3Quc2V0R3JvdXBzKGUpfSxzZXRDb250ZXh0VG9vbGJhcjpmdW5jdGlvbihuKXt2YXIgZT10LmNyZWF0ZUdyb3VwcyhuKTt0LnNldENvbnRleHRUb29sYmFyKGUpfSxmb2N1c1Rvb2xiYXI6ZnVuY3Rpb24oKXt0LmZvY3VzKCl9LHJlc3RvcmVUb29sYmFyOmZ1bmN0aW9uKCl7dC5yZXN0b3JlVG9vbGJhcigpfSx1cGRhdGVNb2RlOmZ1bmN0aW9uKG4pe1hwKGksbyxuLGUucm9vdCgpKX0sc29ja2V0OnkoaSksZHJvcHVwOnkodSl9fTpTdikoaSksdT1UZS5mcm9tRG9tKGUpO3I9dSxvPWQuc3lzdGVtKCksbnQocixvLExlKTt2YXIgYz1lLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcsbT1EZyhjLHtvbkNoYW5nZTpmdW5jdGlvbigpe3ZhciBuLGUsdDtkLnN5c3RlbSgpLmJyb2FkY2FzdE9uKFtNb10se3dpZHRoOihuPWMsZT1MbigpLm9zLmlzaU9TKCksdD1fZyhuKS5pc1BvcnRyYWl0KCksZSYmIXQ/bi5zY3JlZW4uaGVpZ2h0Om4uc2NyZWVuLndpZHRoKX0pfSxvblJlYWR5Ond9KSxnPWZ1bmN0aW9uKG4sZSx0LHIpeyExPT09ciYmaC5zZWxlY3Rpb24uY29sbGFwc2UoKTt2YXIgbz1hKG4sZSx0KTtkLnNldFRvb2xiYXJHcm91cHMoITA9PT1yP28ucmVhZE9ubHk6by5tYWluKSxoLnNldE1vZGUoITA9PT1yPyJyZWFkb25seSI6ImRlc2lnbiIpLGguZmlyZSghMD09PXI/RXY6Q3YpLGQudXBkYXRlTW9kZShyKX0sYT1mdW5jdGlvbihuLGUsdCl7dmFyIHI9bi5nZXQoKTtyZXR1cm57cmVhZE9ubHk6ci5iYWNrVG9NYXNrLmNvbmNhdChlLmdldCgpKSxtYWluOnIuYmFja1RvTWFzay5jb25jYXQodC5nZXQoKSl9fSxwPWZ1bmN0aW9uKG4sZSl7cmV0dXJuIGgub24obixlKSx7dW5iaW5kOmZ1bmN0aW9uKCl7aC5vZmYobil9fX07cmV0dXJuIGgub24oImluaXQiLGZ1bmN0aW9uKCl7ZC5pbml0KHtlZGl0b3I6e2dldEZyYW1lOmZ1bmN0aW9uKCl7cmV0dXJuIFRlLmZyb21Eb20oaC5jb250ZW50QXJlYUNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCJpZnJhbWUiKSl9LG9uRG9tQ2hhbmdlZDpmdW5jdGlvbigpe3JldHVybnt1bmJpbmQ6d319LG9uVG9SZWFkaW5nOmZ1bmN0aW9uKG4pe3JldHVybiBwKEV2LG4pfSxvblRvRWRpdGluZzpmdW5jdGlvbihuKXtyZXR1cm4gcChDdixuKX0sb25TY3JvbGxUb0N1cnNvcjpmdW5jdGlvbihlKXtoLm9uKCJTY3JvbGxJbnRvVmlldyIsZnVuY3Rpb24obil7ZShuKX0pO3JldHVybnt1bmJpbmQ6ZnVuY3Rpb24oKXtoLm9mZigiU2Nyb2xsSW50b1ZpZXciKSxtLmRlc3Ryb3koKX19fSxvblRvdWNoVG9vbHN0cmlwOmZ1bmN0aW9uKCl7dCgpfSxvblRvdWNoQ29udGVudDpmdW5jdGlvbigpe3ZhciBuPVRlLmZyb21Eb20oaC5lZGl0b3JDb250YWluZXIucXVlcnlTZWxlY3RvcigiLiIrYmkoInRvb2xiYXIiKSkpO1RvKG4pLmJpbmQoZnVuY3Rpb24obil7cmV0dXJuIGQuc3lzdGVtKCkuZ2V0QnlEb20obikudG9PcHRpb24oKX0pLmVhY2goeGUpLGQucmVzdG9yZVRvb2xiYXIoKSx0KCl9LG9uVGFwQ29udGVudDpmdW5jdGlvbihuKXt2YXIgZT1uLnRhcmdldCgpO2lmKCJpbWciPT09a2UoZSkpaC5zZWxlY3Rpb24uc2VsZWN0KGUuZG9tKCkpLG4ua2lsbCgpO2Vsc2UgaWYoImEiPT09a2UoZSkpe2Quc3lzdGVtKCkuZ2V0QnlEb20oVGUuZnJvbURvbShoLmVkaXRvckNvbnRhaW5lcikpLmVhY2goZnVuY3Rpb24obil7cG8uaXNBbHBoYShuKSYmZnVuY3Rpb24obil7dmFyIGU9di5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7ZS50YXJnZXQ9Il9ibGFuayIsZS5ocmVmPW4uaHJlZixlLnJlbD0ibm9yZWZlcnJlciBub29wZW5lciI7dmFyIHQ9di5kb2N1bWVudC5jcmVhdGVFdmVudCgiTW91c2VFdmVudHMiKTt0LmluaXRNb3VzZUV2ZW50KCJjbGljayIsITAsITAsdi53aW5kb3csMCwwLDAsMCwwLCExLCExLCExLCExLDAsbnVsbCksdi5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGUpLGUuZGlzcGF0Y2hFdmVudCh0KSx2LmRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZSl9KGUuZG9tKCkpfSl9fX0sY29udGFpbmVyOlRlLmZyb21Eb20oaC5lZGl0b3JDb250YWluZXIpLHNvY2tldDpUZS5mcm9tRG9tKGguY29udGVudEFyZWFDb250YWluZXIpLHRvb2xzdHJpcDpUZS5mcm9tRG9tKGguZWRpdG9yQ29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoIi4iK2JpKCJ0b29sc3RyaXAiKSkpLHRvb2xiYXI6VGUuZnJvbURvbShoLmVkaXRvckNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCIuIitiaSgidG9vbGJhciIpKSksZHJvcHVwOmQuZHJvcHVwKCksYWxsb3k6ZC5zeXN0ZW0oKSx0cmFuc2xhdGU6dyxzZXRSZWFkT25seTpmdW5jdGlvbihuKXtnKGwscyxmLG4pfSxyZWFkT25seU9uSW5pdDpmdW5jdGlvbigpe3JldHVybiExfX0pO3ZhciByLG4sZSx0PWZ1bmN0aW9uKCl7ZC5kcm9wdXAoKS5kaXNhcHBlYXIoZnVuY3Rpb24oKXtkLnN5c3RlbSgpLmJyb2FkY2FzdE9uKFtfb10se30pfSl9LG89e2xhYmVsOiJUaGUgZmlyc3QgZ3JvdXAiLHNjcm9sbGFibGU6ITEsaXRlbXM6W19mKCJiYWNrIixmdW5jdGlvbigpe2guc2VsZWN0aW9uLmNvbGxhcHNlKCksZC5leGl0KCl9LHt9LGgpXX0saT17bGFiZWw6IkJhY2sgdG8gcmVhZCBvbmx5IixzY3JvbGxhYmxlOiExLGl0ZW1zOltfZigicmVhZG9ubHktYmFjayIsZnVuY3Rpb24oKXtnKGwscyxmLCEwKX0se30saCldfSx1PXhnKGQsaCksYz13ZyhoLnNldHRpbmdzLHUpLGE9e2xhYmVsOiJUaGUgZXh0cmEgZ3JvdXAiLHNjcm9sbGFibGU6ITEsaXRlbXM6W119LGY9aG8oW3tsYWJlbDoidGhlIGFjdGlvbiBncm91cCIsc2Nyb2xsYWJsZTohMCxpdGVtczpjfSxhXSkscz1obyhbe2xhYmVsOiJUaGUgcmVhZCBvbmx5IG1vZGUgZ3JvdXAiLHNjcm9sbGFibGU6ITAsaXRlbXM6W119LGFdKSxsPWhvKHtiYWNrVG9NYXNrOltvXSxiYWNrVG9SZWFkT25seTpbaV19KTtyPWQsZT1UKChuPWgpLmZvcm1hdHRlci5nZXQoKSkscG4oZSxmdW5jdGlvbihlKXtuLmZvcm1hdHRlci5mb3JtYXRDaGFuZ2VkKGUsZnVuY3Rpb24obil7VHYocixlLG4pfSl9KSxwbihbInVsIiwib2wiXSxmdW5jdGlvbih0KXtuLnNlbGVjdGlvbi5zZWxlY3RvckNoYW5nZWQodCxmdW5jdGlvbihuLGUpe1R2KHIsdCxuKX0pfSl9KSxoLm9uKCJyZW1vdmUiLGZ1bmN0aW9uKCl7ZC5leGl0KCl9KSxoLm9uKCJkZXRhY2giLGZ1bmN0aW9uKCl7dmFyIGUsbjtlPWQuc3lzdGVtKCksbj1OZShlLmVsZW1lbnQoKSkscG4obixmdW5jdGlvbihuKXtlLmdldEJ5RG9tKG4pLmVhY2gocWUpfSksWGUoZS5lbGVtZW50KCkpLGQuc3lzdGVtKCkuZGVzdHJveSgpfSkse2lmcmFtZUNvbnRhaW5lcjpkLnNvY2tldCgpLmVsZW1lbnQoKS5kb20oKSxlZGl0b3JDb250YWluZXI6ZC5lbGVtZW50KCkuZG9tKCl9fX19OyFmdW5jdGlvbiBEdigpe0VvLmFkZCgibW9iaWxlIixNdil9KCl9KHdpbmRvdyk7]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/themes/silver/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce/themes/silver/theme.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24obnQpeyJ1c2Ugc3RyaWN0Ijt2YXIgWj1mdW5jdGlvbigpe30sZD1mdW5jdGlvbihlLG8pe3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgdD1bXSxuPTA7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl0W25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gZShvLmFwcGx5KG51bGwsdCkpfX0sYXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fSxjdD1mdW5jdGlvbih0KXtyZXR1cm4gdH07ZnVuY3Rpb24gZyhvKXtmb3IodmFyIHI9W10sdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspclt0LTFdPWFyZ3VtZW50c1t0XTtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sbj0wO248YXJndW1lbnRzLmxlbmd0aDtuKyspdFtuXT1hcmd1bWVudHNbbl07dmFyIGU9ci5jb25jYXQodCk7cmV0dXJuIG8uYXBwbHkobnVsbCxlKX19dmFyIHg9ZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiFuKHQpfX0sdT1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IodCl9fSxjPWF0KCExKSxpPWF0KCEwKSx0PXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLlRoZW1lTWFuYWdlciIpLGV0PWZ1bmN0aW9uKCl7cmV0dXJuKGV0PU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKHQpe2Zvcih2YXIgbixlPTEsbz1hcmd1bWVudHMubGVuZ3RoO2U8bztlKyspZm9yKHZhciByIGluIG49YXJndW1lbnRzW2VdKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYodFtyXT1uW3JdKTtyZXR1cm4gdH0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07ZnVuY3Rpb24geSh0LG4pe3ZhciBlPXt9O2Zvcih2YXIgbyBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG8pJiZuLmluZGV4T2Yobyk8MCYmKGVbb109dFtvXSk7aWYobnVsbCE9dCYmImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPTA7Zm9yKG89T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KTtyPG8ubGVuZ3RoO3IrKyluLmluZGV4T2Yob1tyXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHQsb1tyXSkmJihlW29bcl1dPXRbb1tyXV0pfXJldHVybiBlfWZ1bmN0aW9uIGIoKXtmb3IodmFyIHQ9MCxuPTAsZT1hcmd1bWVudHMubGVuZ3RoO248ZTtuKyspdCs9YXJndW1lbnRzW25dLmxlbmd0aDt2YXIgbz1BcnJheSh0KSxyPTA7Zm9yKG49MDtuPGU7bisrKWZvcih2YXIgaT1hcmd1bWVudHNbbl0sdT0wLGE9aS5sZW5ndGg7dTxhO3UrKyxyKyspb1tyXT1pW3VdO3JldHVybiBvfXZhciBuLGUsbyxyLGEscyxsPWZ1bmN0aW9uKCl7cmV0dXJuIGZ9LGY9KG49ZnVuY3Rpb24odCl7cmV0dXJuIHQuaXNOb25lKCl9LHtmb2xkOmZ1bmN0aW9uKHQsbil7cmV0dXJuIHQoKX0saXM6Yyxpc1NvbWU6Yyxpc05vbmU6aSxnZXRPcjpvPWZ1bmN0aW9uKHQpe3JldHVybiB0fSxnZXRPclRodW5rOmU9ZnVuY3Rpb24odCl7cmV0dXJuIHQoKX0sZ2V0T3JEaWU6ZnVuY3Rpb24odCl7dGhyb3cgbmV3IEVycm9yKHR8fCJlcnJvcjogZ2V0T3JEaWUgY2FsbGVkIG9uIG5vbmUuIil9LGdldE9yTnVsbDphdChudWxsKSxnZXRPclVuZGVmaW5lZDphdCh1bmRlZmluZWQpLG9yOm8sb3JUaHVuazplLG1hcDpsLGVhY2g6WixiaW5kOmwsZXhpc3RzOmMsZm9yYWxsOmksZmlsdGVyOmwsZXF1YWxzOm4sZXF1YWxzXzpuLHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm5bXX0sdG9TdHJpbmc6YXQoIm5vbmUoKSIpfSksbT1mdW5jdGlvbihlKXt2YXIgdD1hdChlKSxuPWZ1bmN0aW9uKCl7cmV0dXJuIHJ9LG89ZnVuY3Rpb24odCl7cmV0dXJuIHQoZSl9LHI9e2ZvbGQ6ZnVuY3Rpb24odCxuKXtyZXR1cm4gbihlKX0saXM6ZnVuY3Rpb24odCl7cmV0dXJuIGU9PT10fSxpc1NvbWU6aSxpc05vbmU6YyxnZXRPcjp0LGdldE9yVGh1bms6dCxnZXRPckRpZTp0LGdldE9yTnVsbDp0LGdldE9yVW5kZWZpbmVkOnQsb3I6bixvclRodW5rOm4sbWFwOmZ1bmN0aW9uKHQpe3JldHVybiBtKHQoZSkpfSxlYWNoOmZ1bmN0aW9uKHQpe3QoZSl9LGJpbmQ6byxleGlzdHM6byxmb3JhbGw6byxmaWx0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQoZSk/cjpmfSx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuW2VdfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiJzb21lKCIrZSsiKSJ9LGVxdWFsczpmdW5jdGlvbih0KXtyZXR1cm4gdC5pcyhlKX0sZXF1YWxzXzpmdW5jdGlvbih0LG4pe3JldHVybiB0LmZvbGQoYyxmdW5jdGlvbih0KXtyZXR1cm4gbihlLHQpfSl9fTtyZXR1cm4gcn0sc3Q9e3NvbWU6bSxub25lOmwsZnJvbTpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09PXR8fHQ9PT11bmRlZmluZWQ/ZjptKHQpfX0scD1mdW5jdGlvbihlKXtyZXR1cm57aXM6ZnVuY3Rpb24odCl7cmV0dXJuIGU9PT10fSxpc1ZhbHVlOmksaXNFcnJvcjpjLGdldE9yOmF0KGUpLGdldE9yVGh1bms6YXQoZSksZ2V0T3JEaWU6YXQoZSksb3I6ZnVuY3Rpb24odCl7cmV0dXJuIHAoZSl9LG9yVGh1bms6ZnVuY3Rpb24odCl7cmV0dXJuIHAoZSl9LGZvbGQ6ZnVuY3Rpb24odCxuKXtyZXR1cm4gbihlKX0sbWFwOmZ1bmN0aW9uKHQpe3JldHVybiBwKHQoZSkpfSxtYXBFcnJvcjpmdW5jdGlvbih0KXtyZXR1cm4gcChlKX0sZWFjaDpmdW5jdGlvbih0KXt0KGUpfSxiaW5kOmZ1bmN0aW9uKHQpe3JldHVybiB0KGUpfSxleGlzdHM6ZnVuY3Rpb24odCl7cmV0dXJuIHQoZSl9LGZvcmFsbDpmdW5jdGlvbih0KXtyZXR1cm4gdChlKX0sdG9PcHRpb246ZnVuY3Rpb24oKXtyZXR1cm4gc3Quc29tZShlKX19fSxoPWZ1bmN0aW9uKGUpe3JldHVybntpczpjLGlzVmFsdWU6Yyxpc0Vycm9yOmksZ2V0T3I6Y3QsZ2V0T3JUaHVuazpmdW5jdGlvbih0KXtyZXR1cm4gdCgpfSxnZXRPckRpZTpmdW5jdGlvbigpe3JldHVybiB1KFN0cmluZyhlKSkoKX0sb3I6ZnVuY3Rpb24odCl7cmV0dXJuIHR9LG9yVGh1bms6ZnVuY3Rpb24odCl7cmV0dXJuIHQoKX0sZm9sZDpmdW5jdGlvbih0LG4pe3JldHVybiB0KGUpfSxtYXA6ZnVuY3Rpb24odCl7cmV0dXJuIGgoZSl9LG1hcEVycm9yOmZ1bmN0aW9uKHQpe3JldHVybiBoKHQoZSkpfSxlYWNoOlosYmluZDpmdW5jdGlvbih0KXtyZXR1cm4gaChlKX0sZXhpc3RzOmMsZm9yYWxsOmksdG9PcHRpb246c3Qubm9uZX19LG90PXt2YWx1ZTpwLGVycm9yOmgsZnJvbU9wdGlvbjpmdW5jdGlvbih0LG4pe3JldHVybiB0LmZvbGQoZnVuY3Rpb24oKXtyZXR1cm4gaChuKX0scCl9fSx2PWZ1bmN0aW9uKG8pe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZT10eXBlb2Yobj10KSwobnVsbD09PW4/Im51bGwiOiJvYmplY3QiPT1lJiYoQXJyYXkucHJvdG90eXBlLmlzUHJvdG90eXBlT2Yobil8fG4uY29uc3RydWN0b3ImJiJBcnJheSI9PT1uLmNvbnN0cnVjdG9yLm5hbWUpPyJhcnJheSI6Im9iamVjdCI9PWUmJihTdHJpbmcucHJvdG90eXBlLmlzUHJvdG90eXBlT2Yobil8fG4uY29uc3RydWN0b3ImJiJTdHJpbmciPT09bi5jb25zdHJ1Y3Rvci5uYW1lKT8ic3RyaW5nIjplKT09PW87dmFyIG4sZX19LHc9ZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdD09PW59fSxTPXYoInN0cmluZyIpLGs9digib2JqZWN0IiksQz12KCJhcnJheSIpLE89dygiYm9vbGVhbiIpLF89KHI9dW5kZWZpbmVkLGZ1bmN0aW9uKHQpe3JldHVybiByPT09dH0pLFQ9dygiZnVuY3Rpb24iKSxydD13KCJudW1iZXIiKSxFPWZ1bmN0aW9uKHQsbil7aWYoQyh0KSl7Zm9yKHZhciBlPTAsbz10Lmxlbmd0aDtlPG87KytlKWlmKCFuKHRbZV0pKXJldHVybiExO3JldHVybiEwfXJldHVybiExfSxCPUFycmF5LnByb3RvdHlwZS5zbGljZSxEPUFycmF5LnByb3RvdHlwZS5pbmRleE9mLE09QXJyYXkucHJvdG90eXBlLnB1c2gsQT1mdW5jdGlvbih0LG4pe3JldHVybiBELmNhbGwodCxuKX0sRj1mdW5jdGlvbih0LG4pe3JldHVybi0xPEEodCxuKX0sST1mdW5jdGlvbih0LG4pe2Zvcih2YXIgZT0wLG89dC5sZW5ndGg7ZTxvO2UrKyl7aWYobih0W2VdLGUpKXJldHVybiEwfXJldHVybiExfSxSPWZ1bmN0aW9uKHQsbil7Zm9yKHZhciBlPVtdLG89MDtvPHQubGVuZ3RoO28rPW4pe3ZhciByPUIuY2FsbCh0LG8sbytuKTtlLnB1c2gocil9cmV0dXJuIGV9LFY9ZnVuY3Rpb24odCxuKXtmb3IodmFyIGU9dC5sZW5ndGgsbz1uZXcgQXJyYXkoZSkscj0wO3I8ZTtyKyspe3ZhciBpPXRbcl07b1tyXT1uKGkscil9cmV0dXJuIG99LGl0PWZ1bmN0aW9uKHQsbil7Zm9yKHZhciBlPTAsbz10Lmxlbmd0aDtlPG87ZSsrKXtuKHRbZV0sZSl9fSxIPWZ1bmN0aW9uKHQsbil7Zm9yKHZhciBlPVtdLG89W10scj0wLGk9dC5sZW5ndGg7cjxpO3IrKyl7dmFyIHU9dFtyXTsobih1LHIpP2U6bykucHVzaCh1KX1yZXR1cm57cGFzczplLGZhaWw6b319LFA9ZnVuY3Rpb24odCxuKXtmb3IodmFyIGU9W10sbz0wLHI9dC5sZW5ndGg7bzxyO28rKyl7dmFyIGk9dFtvXTtuKGksbykmJmUucHVzaChpKX1yZXR1cm4gZX0sej1mdW5jdGlvbih0LG4sZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7Zm9yKHZhciBlPXQubGVuZ3RoLTE7MDw9ZTtlLS0pe24odFtlXSxlKX19KHQsZnVuY3Rpb24odCl7ZT1uKGUsdCl9KSxlfSxOPWZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gaXQodCxmdW5jdGlvbih0KXtlPW4oZSx0KX0pLGV9LEw9ZnVuY3Rpb24odCxuKXtyZXR1cm4gZnVuY3Rpb24odCxuLGUpe2Zvcih2YXIgbz0wLHI9dC5sZW5ndGg7bzxyO28rKyl7dmFyIGk9dFtvXTtpZihuKGksbykpcmV0dXJuIHN0LnNvbWUoaSk7aWYoZShpLG8pKWJyZWFrfXJldHVybiBzdC5ub25lKCl9KHQsbixjKX0saj1mdW5jdGlvbih0LG4pe2Zvcih2YXIgZT0wLG89dC5sZW5ndGg7ZTxvO2UrKyl7aWYobih0W2VdLGUpKXJldHVybiBzdC5zb21lKGUpfXJldHVybiBzdC5ub25lKCl9LHV0PWZ1bmN0aW9uKHQpe2Zvcih2YXIgbj1bXSxlPTAsbz10Lmxlbmd0aDtlPG87KytlKXtpZighQyh0W2VdKSl0aHJvdyBuZXcgRXJyb3IoIkFyci5mbGF0dGVuIGl0ZW0gIitlKyIgd2FzIG5vdCBhbiBhcnJheSwgaW5wdXQ6ICIrdCk7TS5hcHBseShuLHRbZV0pfXJldHVybiBufSxVPWZ1bmN0aW9uKHQsbil7cmV0dXJuIHV0KFYodCxuKSl9LFc9ZnVuY3Rpb24odCxuKXtmb3IodmFyIGU9MCxvPXQubGVuZ3RoO2U8bzsrK2Upe2lmKCEwIT09bih0W2VdLGUpKXJldHVybiExfXJldHVybiEwfSxHPWZ1bmN0aW9uKHQpe3ZhciBuPUIuY2FsbCh0LDApO3JldHVybiBuLnJldmVyc2UoKSxufSxYPWZ1bmN0aW9uKHQsbil7cmV0dXJuIFAodCxmdW5jdGlvbih0KXtyZXR1cm4hRihuLHQpfSl9LFk9ZnVuY3Rpb24odCl7cmV0dXJuW3RdfSxxPWZ1bmN0aW9uKHQsbil7dmFyIGU9Qi5jYWxsKHQsMCk7cmV0dXJuIGUuc29ydChuKSxlfSxLPWZ1bmN0aW9uKHQpe3JldHVybiAwPT09dC5sZW5ndGg/c3Qubm9uZSgpOnN0LnNvbWUodFswXSl9LEo9ZnVuY3Rpb24odCl7cmV0dXJuIDA9PT10Lmxlbmd0aD9zdC5ub25lKCk6c3Quc29tZSh0W3QubGVuZ3RoLTFdKX0sJD1UKEFycmF5LmZyb20pP0FycmF5LmZyb206ZnVuY3Rpb24odCl7cmV0dXJuIEIuY2FsbCh0KX0sUT1mdW5jdGlvbih0LG4pe2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKXt2YXIgbz1uKHRbZV0sZSk7aWYoby5pc1NvbWUoKSlyZXR1cm4gb31yZXR1cm4gc3Qubm9uZSgpfSxsdD1PYmplY3Qua2V5cyx0dD1PYmplY3QuaGFzT3duUHJvcGVydHksZnQ9ZnVuY3Rpb24odCxuKXtmb3IodmFyIGU9bHQodCksbz0wLHI9ZS5sZW5ndGg7bzxyO28rKyl7dmFyIGk9ZVtvXTtuKHRbaV0saSl9fSxkdD1mdW5jdGlvbih0LGUpe3JldHVybiBtdCh0LGZ1bmN0aW9uKHQsbil7cmV0dXJue2s6bix2OmUodCxuKX19KX0sbXQ9ZnVuY3Rpb24odCxvKXt2YXIgcj17fTtyZXR1cm4gZnQodCxmdW5jdGlvbih0LG4pe3ZhciBlPW8odCxuKTtyW2Uua109ZS52fSkscn0sZ3Q9ZnVuY3Rpb24odCxuKXt2YXIgZSxvLHIsaSx1PXt9O3JldHVybiBlPW4saT11LG89ZnVuY3Rpb24odCxuKXtpW25dPXR9LHI9WixmdCh0LGZ1bmN0aW9uKHQsbil7KGUodCxuKT9vOnIpKHQsbil9KSx1fSxwdD1mdW5jdGlvbih0LGUpe3ZhciBvPVtdO3JldHVybiBmdCh0LGZ1bmN0aW9uKHQsbil7by5wdXNoKGUodCxuKSl9KSxvfSxodD1mdW5jdGlvbih0LG4pe2Zvcih2YXIgZT1sdCh0KSxvPTAscj1lLmxlbmd0aDtvPHI7bysrKXt2YXIgaT1lW29dLHU9dFtpXTtpZihuKHUsaSx0KSlyZXR1cm4gc3Quc29tZSh1KX1yZXR1cm4gc3Qubm9uZSgpfSx2dD1mdW5jdGlvbih0KXtyZXR1cm4gcHQodCxmdW5jdGlvbih0KXtyZXR1cm4gdH0pfSxidD1mdW5jdGlvbih0LG4pe3JldHVybiB5dCh0LG4pP3N0LmZyb20odFtuXSk6c3Qubm9uZSgpfSx5dD1mdW5jdGlvbih0LG4pe3JldHVybiB0dC5jYWxsKHQsbil9LHh0PWZ1bmN0aW9uKHQsbil7cmV0dXJuIHl0KHQsbikmJnRbbl0hPT11bmRlZmluZWQmJm51bGwhPT10W25dfSx3dD1mdW5jdGlvbih1KXtpZighQyh1KSl0aHJvdyBuZXcgRXJyb3IoImNhc2VzIG11c3QgYmUgYW4gYXJyYXkiKTtpZigwPT09dS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJ0aGVyZSBtdXN0IGJlIGF0IGxlYXN0IG9uZSBjYXNlIik7dmFyIGE9W10sZT17fTtyZXR1cm4gaXQodSxmdW5jdGlvbih0LG8pe3ZhciBuPWx0KHQpO2lmKDEhPT1uLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIm9uZSBhbmQgb25seSBvbmUgbmFtZSBwZXIgY2FzZSIpO3ZhciByPW5bMF0saT10W3JdO2lmKGVbcl0hPT11bmRlZmluZWQpdGhyb3cgbmV3IEVycm9yKCJkdXBsaWNhdGUga2V5IGRldGVjdGVkOiIrcik7aWYoImNhdGEiPT09cil0aHJvdyBuZXcgRXJyb3IoImNhbm5vdCBoYXZlIGEgY2FzZSBuYW1lZCBjYXRhIChzb3JyeSkiKTtpZighQyhpKSl0aHJvdyBuZXcgRXJyb3IoImNhc2UgYXJndW1lbnRzIG11c3QgYmUgYW4gYXJyYXkiKTthLnB1c2gociksZVtyXT1mdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg7aWYodCE9PWkubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyB0byBjYXNlICIrcisiLiBFeHBlY3RlZCAiK2kubGVuZ3RoKyIgKCIraSsiKSwgZ290ICIrdCk7Zm9yKHZhciBlPW5ldyBBcnJheSh0KSxuPTA7bjxlLmxlbmd0aDtuKyspZVtuXT1hcmd1bWVudHNbbl07cmV0dXJue2ZvbGQ6ZnVuY3Rpb24oKXtpZihhcmd1bWVudHMubGVuZ3RoIT09dS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJXcm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIHRvIGZvbGQuIEV4cGVjdGVkICIrdS5sZW5ndGgrIiwgZ290ICIrYXJndW1lbnRzLmxlbmd0aCk7cmV0dXJuIGFyZ3VtZW50c1tvXS5hcHBseShudWxsLGUpfSxtYXRjaDpmdW5jdGlvbih0KXt2YXIgbj1sdCh0KTtpZihhLmxlbmd0aCE9PW4ubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyB0byBtYXRjaC4gRXhwZWN0ZWQ6ICIrYS5qb2luKCIsIikrIlxuQWN0dWFsOiAiK24uam9pbigiLCIpKTtpZighVyhhLGZ1bmN0aW9uKHQpe3JldHVybiBGKG4sdCl9KSl0aHJvdyBuZXcgRXJyb3IoIk5vdCBhbGwgYnJhbmNoZXMgd2VyZSBzcGVjaWZpZWQgd2hlbiB1c2luZyBtYXRjaC4gU3BlY2lmaWVkOiAiK24uam9pbigiLCAiKSsiXG5SZXF1aXJlZDogIithLmpvaW4oIiwgIikpO3JldHVybiB0W3JdLmFwcGx5KG51bGwsZSl9LGxvZzpmdW5jdGlvbih0KXtudC5jb25zb2xlLmxvZyh0LHtjb25zdHJ1Y3RvcnM6YSxjb25zdHJ1Y3RvcjpyLHBhcmFtczplfSl9fX19KSxlfSxTdD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LGt0PWZ1bmN0aW9uKHUpe3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgdD1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCksbj0wO248dC5sZW5ndGg7bisrKXRbbl09YXJndW1lbnRzW25dO2lmKDA9PT10Lmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkNhbid0IG1lcmdlIHplcm8gb2JqZWN0cyIpO2Zvcih2YXIgZT17fSxvPTA7bzx0Lmxlbmd0aDtvKyspe3ZhciByPXRbb107Zm9yKHZhciBpIGluIHIpU3QuY2FsbChyLGkpJiYoZVtpXT11KGVbaV0scltpXSkpfXJldHVybiBlfX0sQ3Q9a3QoZnVuY3Rpb24odCxuKXtyZXR1cm4gayh0KSYmayhuKT9DdCh0LG4pOm59KSxPdD1rdChmdW5jdGlvbih0LG4pe3JldHVybiBufSksX3Q9ZnVuY3Rpb24oZSl7dmFyIG8scj0hMTtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sbj0wO248YXJndW1lbnRzLmxlbmd0aDtuKyspdFtuXT1hcmd1bWVudHNbbl07cmV0dXJuIHJ8fChyPSEwLG89ZS5hcHBseShudWxsLHQpKSxvfX07KHM9YT1hfHx7fSlbcy5FcnJvcj0wXT0iRXJyb3IiLHNbcy5WYWx1ZT0xXT0iVmFsdWUiO3ZhciBUdCxFdCxCdD1mdW5jdGlvbih0LG4sZSl7cmV0dXJuIHQuc3R5cGU9PT1hLkVycm9yP24odC5zZXJyb3IpOmUodC5zdmFsdWUpfSxEdD1mdW5jdGlvbih0KXtyZXR1cm57c3R5cGU6YS5WYWx1ZSxzdmFsdWU6dH19LE10PWZ1bmN0aW9uKHQpe3JldHVybntzdHlwZTphLkVycm9yLHNlcnJvcjp0fX0sQXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQuZm9sZChNdCxEdCl9LEZ0PWZ1bmN0aW9uKHQpe3JldHVybiBCdCh0LG90LmVycm9yLG90LnZhbHVlKX0sSXQ9RHQsUnQ9ZnVuY3Rpb24odCl7dmFyIG49W10sZT1bXTtyZXR1cm4gaXQodCxmdW5jdGlvbih0KXtCdCh0LGZ1bmN0aW9uKHQpe3JldHVybiBlLnB1c2godCl9LGZ1bmN0aW9uKHQpe3JldHVybiBuLnB1c2godCl9KX0pLHt2YWx1ZXM6bixlcnJvcnM6ZX19LFZ0PU10LEh0PWZ1bmN0aW9uKHQsbil7cmV0dXJuIHQuc3R5cGU9PT1hLlZhbHVlP24odC5zdmFsdWUpOnR9LFB0PWZ1bmN0aW9uKHQsbil7cmV0dXJuIHQuc3R5cGU9PT1hLkVycm9yP24odC5zZXJyb3IpOnR9LHp0PWZ1bmN0aW9uKHQsbil7cmV0dXJuIHQuc3R5cGU9PT1hLlZhbHVlP3tzdHlwZTphLlZhbHVlLHN2YWx1ZTpuKHQuc3ZhbHVlKX06dH0sTnQ9ZnVuY3Rpb24odCxuKXtyZXR1cm4gdC5zdHlwZT09PWEuRXJyb3I/e3N0eXBlOmEuRXJyb3Isc2Vycm9yOm4odC5zZXJyb3IpfTp0fSxMdD13dChbe3N0cmljdDpbXX0se2RlZmF1bHRlZFRodW5rOlsiZmFsbGJhY2tUaHVuayJdfSx7YXNPcHRpb246W119LHthc0RlZmF1bHRlZE9wdGlvblRodW5rOlsiZmFsbGJhY2tUaHVuayJdfSx7bWVyZ2VXaXRoVGh1bms6WyJiYXNlVGh1bmsiXX1dKSxqdD1mdW5jdGlvbih0KXtyZXR1cm4gTHQuZGVmYXVsdGVkVGh1bmsoYXQodCkpfSxVdD1MdC5zdHJpY3QsV3Q9THQuYXNPcHRpb24sR3Q9THQuZGVmYXVsdGVkVGh1bmssWHQ9KEx0LmFzRGVmYXVsdGVkT3B0aW9uVGh1bmssTHQubWVyZ2VXaXRoVGh1bmspLFl0PWZ1bmN0aW9uKHQsbil7dmFyIGU7cmV0dXJuKGU9e30pW3RdPW4sZX0scXQ9KHd0KFt7Ym90aEVycm9yczpbImVycm9yMSIsImVycm9yMiJdfSx7Zmlyc3RFcnJvcjpbImVycm9yMSIsInZhbHVlMiJdfSx7c2Vjb25kRXJyb3I6WyJ2YWx1ZTEiLCJlcnJvcjIiXX0se2JvdGhWYWx1ZXM6WyJ2YWx1ZTEiLCJ2YWx1ZTIiXX1dKSxmdW5jdGlvbih0LG4pe3JldHVybiBlPW4sbz17fSxmdCh0LGZ1bmN0aW9uKHQsbil7RihlLG4pfHwob1tuXT10KX0pLG87dmFyIGUsb30pLEt0PWZ1bmN0aW9uKHQsbil7cmV0dXJuIFl0KHQsbil9LEp0PWZ1bmN0aW9uKHQpe3JldHVybiBuPXt9LGl0KHQsZnVuY3Rpb24odCl7blt0LmtleV09dC52YWx1ZX0pLG47dmFyIG59LCR0PWZ1bmN0aW9uKHQsbil7dmFyIGUsbyxyLGksdSxhPShlPVtdLG89W10saXQodCxmdW5jdGlvbih0KXt0LmZvbGQoZnVuY3Rpb24odCl7ZS5wdXNoKHQpfSxmdW5jdGlvbih0KXtvLnB1c2godCl9KX0pLHtlcnJvcnM6ZSx2YWx1ZXM6b30pO3JldHVybiAwPGEuZXJyb3JzLmxlbmd0aD8odT1hLmVycm9ycyxvdC5lcnJvcih1dCh1KSkpOihpPW4sMD09PShyPWEudmFsdWVzKS5sZW5ndGg/b3QudmFsdWUoaSk6b3QudmFsdWUoQ3QoaSxPdC5hcHBseSh1bmRlZmluZWQscikpKSl9LFF0PWZ1bmN0aW9uKHQpe3JldHVybiBkKFZ0LHV0KSh0KX0sWnQ9ZnVuY3Rpb24odCxuKXt2YXIgZSxvLHI9UnQodCk7cmV0dXJuIDA8ci5lcnJvcnMubGVuZ3RoP1F0KHIuZXJyb3JzKTooZT1yLnZhbHVlcyxvPW4sMDxlLmxlbmd0aD9JdChDdChvLE90LmFwcGx5KHVuZGVmaW5lZCxlKSkpOkl0KG8pKX0sdG49ZnVuY3Rpb24odCl7dmFyIG49UnQodCk7cmV0dXJuIDA8bi5lcnJvcnMubGVuZ3RoP1F0KG4uZXJyb3JzKTpJdChuLnZhbHVlcyl9LG5uPWZ1bmN0aW9uKHQpe3JldHVybiBrKHQpJiYxMDA8bHQodCkubGVuZ3RoPyIgcmVtb3ZlZCBkdWUgdG8gc2l6ZSI6SlNPTi5zdHJpbmdpZnkodCxudWxsLDIpfSxlbj1mdW5jdGlvbih0LG4pe3JldHVybiBWdChbe3BhdGg6dCxnZXRFcnJvckluZm86bn1dKX0sb249d3QoW3tmaWVsZDpbImtleSIsIm9rZXkiLCJwcmVzZW5jZSIsInByb3AiXX0se3N0YXRlOlsib2tleSIsImluc3RhbnRpYXRvciJdfV0pLHJuPWZ1bmN0aW9uKGUsbyxyKXtyZXR1cm4gYnQobyxyKS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIHQ9cixuPW8sZW4oZSxmdW5jdGlvbigpe3JldHVybidDb3VsZCBub3QgZmluZCB2YWxpZCAqc3RyaWN0KiB2YWx1ZSBmb3IgIicrdCsnIiBpbiAnK25uKG4pfSk7dmFyIHQsbn0sSXQpfSx1bj1mdW5jdGlvbih0LG4sZSl7dmFyIG89YnQodCxuKS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIGUodCl9LGN0KTtyZXR1cm4gSXQobyl9LGFuPWZ1bmN0aW9uKGEsYyx0LHMpe3JldHVybiB0LmZvbGQoZnVuY3Rpb24ocixlLHQsbyl7dmFyIGk9ZnVuY3Rpb24odCl7dmFyIG49by5leHRyYWN0KGEuY29uY2F0KFtyXSkscyx0KTtyZXR1cm4genQobixmdW5jdGlvbih0KXtyZXR1cm4gWXQoZSxzKHQpKX0pfSx1PWZ1bmN0aW9uKHQpe3JldHVybiB0LmZvbGQoZnVuY3Rpb24oKXt2YXIgdD1ZdChlLHMoc3Qubm9uZSgpKSk7cmV0dXJuIEl0KHQpfSxmdW5jdGlvbih0KXt2YXIgbj1vLmV4dHJhY3QoYS5jb25jYXQoW3JdKSxzLHQpO3JldHVybiB6dChuLGZ1bmN0aW9uKHQpe3JldHVybiBZdChlLHMoc3Quc29tZSh0KSkpfSl9KX07cmV0dXJuIHQuZm9sZChmdW5jdGlvbigpe3JldHVybiBIdChybihhLGMsciksaSl9LGZ1bmN0aW9uKHQpe3JldHVybiBIdCh1bihjLHIsdCksaSl9LGZ1bmN0aW9uKCl7cmV0dXJuIEh0KEl0KGJ0KGMscikpLHUpfSxmdW5jdGlvbih0KXtyZXR1cm4gSHQoKGU9dCxvPWJ0KG49YyxyKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuITA9PT10P2Uobik6dH0pLEl0KG8pKSx1KTt2YXIgbixlLG99LGZ1bmN0aW9uKHQpe3ZhciBuPXQoYyksZT16dCh1bihjLHIsYXQoe30pKSxmdW5jdGlvbih0KXtyZXR1cm4gQ3Qobix0KX0pO3JldHVybiBIdChlLGkpfSl9LGZ1bmN0aW9uKHQsbil7dmFyIGU9bihjKTtyZXR1cm4gSXQoWXQodCxzKGUpKSl9KX0sY249ZnVuY3Rpb24obyl7cmV0dXJue2V4dHJhY3Q6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBQdChvKG4sdCksZnVuY3Rpb24odCl7cmV0dXJuIG49dCxlbihlLGZ1bmN0aW9uKCl7cmV0dXJuIG59KTt2YXIgbn0pfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiJ2YWwifX19LHNuPWZ1bmN0aW9uKHQpe3ZhciB1PWxuKHQpLGE9eih0LGZ1bmN0aW9uKG4sdCl7cmV0dXJuIHQuZm9sZChmdW5jdGlvbih0KXtyZXR1cm4gQ3QobixLdCh0LCEwKSl9LGF0KG4pKX0se30pO3JldHVybntleHRyYWN0OmZ1bmN0aW9uKHQsbixlKXt2YXIgbyxyPU8oZSk/W106bHQoZ3QoZSxmdW5jdGlvbih0KXtyZXR1cm4gdCE9PXVuZGVmaW5lZCYmbnVsbCE9PXR9KSksaT1QKHIsZnVuY3Rpb24odCl7cmV0dXJuIXh0KGEsdCl9KTtyZXR1cm4gMD09PWkubGVuZ3RoP3UuZXh0cmFjdCh0LG4sZSk6KG89aSxlbih0LGZ1bmN0aW9uKCl7cmV0dXJuIlRoZXJlIGFyZSB1bnN1cHBvcnRlZCBmaWVsZHM6IFsiK28uam9pbigiLCAiKSsiXSBzcGVjaWZpZWQifSkpfSx0b1N0cmluZzp1LnRvU3RyaW5nfX0sbG49ZnVuY3Rpb24oYSl7cmV0dXJue2V4dHJhY3Q6ZnVuY3Rpb24odCxuLGUpe3JldHVybiBvPXQscj1lLGk9bix1PVYoYSxmdW5jdGlvbih0KXtyZXR1cm4gYW4obyxyLHQsaSl9KSxadCh1LHt9KTt2YXIgbyxyLGksdX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4ib2Jqe1xuIitWKGEsZnVuY3Rpb24odCl7cmV0dXJuIHQuZm9sZChmdW5jdGlvbih0LG4sZSxvKXtyZXR1cm4gdCsiIC0+ICIrby50b1N0cmluZygpfSxmdW5jdGlvbih0LG4pe3JldHVybiJzdGF0ZSgiK3QrIikifSl9KS5qb2luKCJcbiIpKyJ9In19fSxmbj1mdW5jdGlvbihyKXtyZXR1cm57ZXh0cmFjdDpmdW5jdGlvbihlLG8sdCl7dmFyIG49Vih0LGZ1bmN0aW9uKHQsbil7cmV0dXJuIHIuZXh0cmFjdChlLmNvbmNhdChbIlsiK24rIl0iXSksbyx0KX0pO3JldHVybiB0bihuKX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4iYXJyYXkoIityLnRvU3RyaW5nKCkrIikifX19LGRuPWZ1bmN0aW9uKGEsYyl7cmV0dXJue2V4dHJhY3Q6ZnVuY3Rpb24oZSxvLHIpe3ZhciB0LG4saT1sdChyKSx1PSh0PWUsbj1pLGZuKGNuKGEpKS5leHRyYWN0KHQsY3QsbikpO3JldHVybiBIdCh1LGZ1bmN0aW9uKHQpe3ZhciBuPVYodCxmdW5jdGlvbih0KXtyZXR1cm4gb24uZmllbGQodCx0LFV0KCksYyl9KTtyZXR1cm4gbG4obikuZXh0cmFjdChlLG8scil9KX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4ic2V0T2YoIitjLnRvU3RyaW5nKCkrIikifX19LG1uPWF0KGNuKEl0KSksZ249ZChmbixsbikscG49b24uc3RhdGUsaG49b24uZmllbGQsdm49ZnVuY3Rpb24oZSxuLG8scixpKXtyZXR1cm4gYnQocixpKS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIHQ9cixuPWksZW4oZSxmdW5jdGlvbigpe3JldHVybidUaGUgY2hvc2VuIHNjaGVtYTogIicrbisnIiBkaWQgbm90IGV4aXN0IGluIGJyYW5jaGVzOiAnK25uKHQpfSk7dmFyIHQsbn0sZnVuY3Rpb24odCl7cmV0dXJuIHQuZXh0cmFjdChlLmNvbmNhdChbImJyYW5jaDogIitpXSksbixvKX0pfSxibj1mdW5jdGlvbihyLGkpe3JldHVybntleHRyYWN0OmZ1bmN0aW9uKG4sZSxvKXtyZXR1cm4gYnQobyxyKS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIHQ9cixlbihuLGZ1bmN0aW9uKCl7cmV0dXJuJ0Nob2ljZSBzY2hlbWEgZGlkIG5vdCBjb250YWluIGNob2ljZSBrZXk6ICInK3QrJyInfSk7dmFyIHR9LGZ1bmN0aW9uKHQpe3JldHVybiB2bihuLGUsbyxpLHQpfSl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuImNob29zZU9uKCIrcisiKS4gUG9zc2libGUgdmFsdWVzOiAiK2x0KGkpfX19LHluPWNuKEl0KSx4bj1mdW5jdGlvbih0KXtyZXR1cm4gZ24odCl9LHduPWZ1bmN0aW9uKG8pe3JldHVybntleHRyYWN0OmZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gbygpLmV4dHJhY3QodCxuLGUpfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiBvKCkudG9TdHJpbmcoKX19fSxTbj1mdW5jdGlvbihuKXtyZXR1cm4gY24oZnVuY3Rpb24odCl7cmV0dXJuIG4odCkuZm9sZChWdCxJdCl9KX0sa249ZnVuY3Rpb24obix0KXtyZXR1cm4gZG4oZnVuY3Rpb24odCl7cmV0dXJuIEF0KG4odCkpfSx0KX0sQ249ZnVuY3Rpb24odCxuLGUpe3JldHVybiBGdCgobz10LHI9Y3QsaT1lLHU9bi5leHRyYWN0KFtvXSxyLGkpLE50KHUsZnVuY3Rpb24odCl7cmV0dXJue2lucHV0OmksZXJyb3JzOnR9fSkpKTt2YXIgbyxyLGksdX0sT249ZnVuY3Rpb24odCl7cmV0dXJuIHQuZm9sZChmdW5jdGlvbih0KXt0aHJvdyBuZXcgRXJyb3IoVG4odCkpfSxjdCl9LF9uPWZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gT24oQ24odCxuLGUpKX0sVG49ZnVuY3Rpb24odCl7cmV0dXJuIkVycm9yczogXG4iKyhuPXQuZXJyb3JzLGU9MTA8bi5sZW5ndGg/bi5zbGljZSgwLDEwKS5jb25jYXQoW3twYXRoOltdLGdldEVycm9ySW5mbzpmdW5jdGlvbigpe3JldHVybiIuLi4gKG9ubHkgc2hvd2luZyBmaXJzdCB0ZW4gZmFpbHVyZXMpIn19XSk6bixWKGUsZnVuY3Rpb24odCl7cmV0dXJuIkZhaWxlZCBwYXRoOiAoIit0LnBhdGguam9pbigiID4gIikrIilcbiIrdC5nZXRFcnJvckluZm8oKX0pLmpvaW4oIlxuIikpKyJcblxuSW5wdXQgb2JqZWN0OiAiK25uKHQuaW5wdXQpO3ZhciBuLGV9LEVuPWZ1bmN0aW9uKHQsbil7cmV0dXJuIGJuKHQsbil9LEJuPWZ1bmN0aW9uKHQsbil7cmV0dXJuIGJuKHQsZHQobixsbikpfSxEbj1hdCh5biksTW49ZnVuY3Rpb24oZSxvKXtyZXR1cm4gY24oZnVuY3Rpb24odCl7dmFyIG49dHlwZW9mIHQ7cmV0dXJuIGUodCk/SXQodCk6VnQoIkV4cGVjdGVkIHR5cGU6ICIrbysiIGJ1dCBnb3Q6ICIrbil9KX0sQW49TW4ocnQsIm51bWJlciIpLEZuPU1uKFMsInN0cmluZyIpLEluPU1uKE8sImJvb2xlYW4iKSxSbj1NbihULCJmdW5jdGlvbiIpLFZuPWZ1bmN0aW9uKG4pe3ZhciB0PWZ1bmN0aW9uKHQsbil7Zm9yKHZhciBlPXQubmV4dCgpOyFlLmRvbmU7KXtpZighbihlLnZhbHVlKSlyZXR1cm4hMTtlPXQubmV4dCgpfXJldHVybiEwfTtpZihPYmplY3QobikhPT1uKXJldHVybiEwO3N3aXRjaCh7fS50b1N0cmluZy5jYWxsKG4pLnNsaWNlKDgsLTEpKXtjYXNlIkJvb2xlYW4iOmNhc2UiTnVtYmVyIjpjYXNlIlN0cmluZyI6Y2FzZSJEYXRlIjpjYXNlIlJlZ0V4cCI6Y2FzZSJCbG9iIjpjYXNlIkZpbGVMaXN0IjpjYXNlIkltYWdlRGF0YSI6Y2FzZSJJbWFnZUJpdG1hcCI6Y2FzZSJBcnJheUJ1ZmZlciI6cmV0dXJuITA7Y2FzZSJBcnJheSI6Y2FzZSJPYmplY3QiOnJldHVybiBPYmplY3Qua2V5cyhuKS5ldmVyeShmdW5jdGlvbih0KXtyZXR1cm4gVm4oblt0XSl9KTtjYXNlIk1hcCI6cmV0dXJuIHQobi5rZXlzKCksVm4pJiZ0KG4udmFsdWVzKCksVm4pO2Nhc2UiU2V0IjpyZXR1cm4gdChuLmtleXMoKSxWbik7ZGVmYXVsdDpyZXR1cm4hMX19LEhuPWNuKGZ1bmN0aW9uKHQpe3JldHVybiBWbih0KT9JdCh0KTpWdCgiRXhwZWN0ZWQgdmFsdWUgdG8gYmUgYWNjZXB0YWJsZSBmb3Igc2VuZGluZyB2aWEgcG9zdE1lc3NhZ2UiKX0pLFBuPWZ1bmN0aW9uKG4pe3JldHVybiBTbihmdW5jdGlvbih0KXtyZXR1cm4gRihuLHQpP290LnZhbHVlKHQpOm90LmVycm9yKCdVbnN1cHBvcnRlZCB2YWx1ZTogIicrdCsnIiwgY2hvb3NlIG9uZSBvZiAiJytuLmpvaW4oIiwgIikrJyIuJyl9KX0sem49ZnVuY3Rpb24odCl7cmV0dXJuIGhuKHQsdCxVdCgpLG1uKCkpfSxObj1mdW5jdGlvbih0LG4pe3JldHVybiBobih0LHQsVXQoKSxuKX0sTG49ZnVuY3Rpb24odCl7cmV0dXJuIE5uKHQsRm4pfSxqbj1mdW5jdGlvbih0LG4pe3JldHVybiBobih0LHQsVXQoKSxQbihuKSl9LFVuPWZ1bmN0aW9uKHQpe3JldHVybiBObih0LFJuKX0sV249ZnVuY3Rpb24odCxuKXtyZXR1cm4gaG4odCx0LFV0KCksbG4obikpfSxHbj1mdW5jdGlvbih0LG4pe3JldHVybiBobih0LHQsVXQoKSxnbihuKSl9LFhuPWZ1bmN0aW9uKHQsbil7cmV0dXJuIGhuKHQsdCxVdCgpLGZuKG4pKX0sWW49ZnVuY3Rpb24odCl7cmV0dXJuIGhuKHQsdCxXdCgpLG1uKCkpfSxxbj1mdW5jdGlvbih0LG4pe3JldHVybiBobih0LHQsV3QoKSxuKX0sS249ZnVuY3Rpb24odCl7cmV0dXJuIHFuKHQsQW4pfSxKbj1mdW5jdGlvbih0KXtyZXR1cm4gcW4odCxGbil9LCRuPWZ1bmN0aW9uKHQpe3JldHVybiBxbih0LFJuKX0sUW49ZnVuY3Rpb24odCxuKXtyZXR1cm4gcW4odCxsbihuKSl9LFpuPWZ1bmN0aW9uKHQsbil7cmV0dXJuIGhuKHQsdCxqdChuKSxtbigpKX0sdGU9ZnVuY3Rpb24odCxuLGUpe3JldHVybiBobih0LHQsanQobiksZSl9LG5lPWZ1bmN0aW9uKHQsbil7cmV0dXJuIHRlKHQsbixBbil9LGVlPWZ1bmN0aW9uKHQsbil7cmV0dXJuIHRlKHQsbixGbil9LG9lPWZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gdGUodCxuLFBuKGUpKX0scmU9ZnVuY3Rpb24odCxuKXtyZXR1cm4gdGUodCxuLEluKX0saWU9ZnVuY3Rpb24odCxuKXtyZXR1cm4gdGUodCxuLFJuKX0sdWU9ZnVuY3Rpb24odCxuLGUpe3JldHVybiB0ZSh0LG4sbG4oZSkpfSxhZT1mdW5jdGlvbih0LG4pe3JldHVybiBwbih0LG4pfSxjZT1mdW5jdGlvbih0KXt2YXIgbj10O3JldHVybntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbn0sc2V0OmZ1bmN0aW9uKHQpe249dH19fSxzZT1mdW5jdGlvbih0KXtpZihudWxsPT09dHx8dD09PXVuZGVmaW5lZCl0aHJvdyBuZXcgRXJyb3IoIk5vZGUgY2Fubm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7cmV0dXJue2RvbTphdCh0KX19LGxlPXtmcm9tSHRtbDpmdW5jdGlvbih0LG4pe3ZhciBlPShufHxudC5kb2N1bWVudCkuY3JlYXRlRWxlbWVudCgiZGl2Iik7aWYoZS5pbm5lckhUTUw9dCwhZS5oYXNDaGlsZE5vZGVzKCl8fDE8ZS5jaGlsZE5vZGVzLmxlbmd0aCl0aHJvdyBudC5jb25zb2xlLmVycm9yKCJIVE1MIGRvZXMgbm90IGhhdmUgYSBzaW5nbGUgcm9vdCBub2RlIix0KSxuZXcgRXJyb3IoIkhUTUwgbXVzdCBoYXZlIGEgc2luZ2xlIHJvb3Qgbm9kZSIpO3JldHVybiBzZShlLmNoaWxkTm9kZXNbMF0pfSxmcm9tVGFnOmZ1bmN0aW9uKHQsbil7dmFyIGU9KG58fG50LmRvY3VtZW50KS5jcmVhdGVFbGVtZW50KHQpO3JldHVybiBzZShlKX0sZnJvbVRleHQ6ZnVuY3Rpb24odCxuKXt2YXIgZT0obnx8bnQuZG9jdW1lbnQpLmNyZWF0ZVRleHROb2RlKHQpO3JldHVybiBzZShlKX0sZnJvbURvbTpzZSxmcm9tUG9pbnQ6ZnVuY3Rpb24odCxuLGUpe3ZhciBvPXQuZG9tKCk7cmV0dXJuIHN0LmZyb20oby5lbGVtZW50RnJvbVBvaW50KG4sZSkpLm1hcChzZSl9fSxmZT1mdW5jdGlvbih0LG4pe3ZhciBlPWZ1bmN0aW9uKHQsbil7Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspe3ZhciBvPXRbZV07aWYoby50ZXN0KG4pKXJldHVybiBvfXJldHVybiB1bmRlZmluZWR9KHQsbik7aWYoIWUpcmV0dXJue21ham9yOjAsbWlub3I6MH07dmFyIG89ZnVuY3Rpb24odCl7cmV0dXJuIE51bWJlcihuLnJlcGxhY2UoZSwiJCIrdCkpfTtyZXR1cm4gbWUobygxKSxvKDIpKX0sZGU9ZnVuY3Rpb24oKXtyZXR1cm4gbWUoMCwwKX0sbWU9ZnVuY3Rpb24odCxuKXtyZXR1cm57bWFqb3I6dCxtaW5vcjpufX0sZ2U9e251Om1lLGRldGVjdDpmdW5jdGlvbih0LG4pe3ZhciBlPVN0cmluZyhuKS50b0xvd2VyQ2FzZSgpO3JldHVybiAwPT09dC5sZW5ndGg/ZGUoKTpmZSh0LGUpfSx1bmtub3duOmRlfSxwZT0iRmlyZWZveCIsaGU9ZnVuY3Rpb24odCl7dmFyIG49dC5jdXJyZW50LGU9dC52ZXJzaW9uLG89ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG49PT10fX07cmV0dXJue2N1cnJlbnQ6bix2ZXJzaW9uOmUsaXNFZGdlOm8oIkVkZ2UiKSxpc0Nocm9tZTpvKCJDaHJvbWUiKSxpc0lFOm8oIklFIiksaXNPcGVyYTpvKCJPcGVyYSIpLGlzRmlyZWZveDpvKHBlKSxpc1NhZmFyaTpvKCJTYWZhcmkiKX19LHZlPXt1bmtub3duOmZ1bmN0aW9uKCl7cmV0dXJuIGhlKHtjdXJyZW50OnVuZGVmaW5lZCx2ZXJzaW9uOmdlLnVua25vd24oKX0pfSxudTpoZSxlZGdlOmF0KCJFZGdlIiksY2hyb21lOmF0KCJDaHJvbWUiKSxpZTphdCgiSUUiKSxvcGVyYTphdCgiT3BlcmEiKSxmaXJlZm94OmF0KHBlKSxzYWZhcmk6YXQoIlNhZmFyaSIpfSxiZT0iV2luZG93cyIseWU9IkFuZHJvaWQiLHhlPSJTb2xhcmlzIix3ZT0iRnJlZUJTRCIsU2U9IkNocm9tZU9TIixrZT1mdW5jdGlvbih0KXt2YXIgbj10LmN1cnJlbnQsZT10LnZlcnNpb24sbz1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbj09PXR9fTtyZXR1cm57Y3VycmVudDpuLHZlcnNpb246ZSxpc1dpbmRvd3M6byhiZSksaXNpT1M6bygiaU9TIiksaXNBbmRyb2lkOm8oeWUpLGlzT1NYOm8oIk9TWCIpLGlzTGludXg6bygiTGludXgiKSxpc1NvbGFyaXM6byh4ZSksaXNGcmVlQlNEOm8od2UpLGlzQ2hyb21lT1M6byhTZSl9fSxDZT17dW5rbm93bjpmdW5jdGlvbigpe3JldHVybiBrZSh7Y3VycmVudDp1bmRlZmluZWQsdmVyc2lvbjpnZS51bmtub3duKCl9KX0sbnU6a2Usd2luZG93czphdChiZSksaW9zOmF0KCJpT1MiKSxhbmRyb2lkOmF0KHllKSxsaW51eDphdCgiTGludXgiKSxvc3g6YXQoIk9TWCIpLHNvbGFyaXM6YXQoeGUpLGZyZWVic2Q6YXQod2UpLGNocm9tZW9zOmF0KFNlKX0sT2U9ZnVuY3Rpb24odCxuKXt2YXIgZT1TdHJpbmcobikudG9Mb3dlckNhc2UoKTtyZXR1cm4gTCh0LGZ1bmN0aW9uKHQpe3JldHVybiB0LnNlYXJjaChlKX0pfSxfZT1mdW5jdGlvbih0LGUpe3JldHVybiBPZSh0LGUpLm1hcChmdW5jdGlvbih0KXt2YXIgbj1nZS5kZXRlY3QodC52ZXJzaW9uUmVnZXhlcyxlKTtyZXR1cm57Y3VycmVudDp0Lm5hbWUsdmVyc2lvbjpufX0pfSxUZT1mdW5jdGlvbih0LGUpe3JldHVybiBPZSh0LGUpLm1hcChmdW5jdGlvbih0KXt2YXIgbj1nZS5kZXRlY3QodC52ZXJzaW9uUmVnZXhlcyxlKTtyZXR1cm57Y3VycmVudDp0Lm5hbWUsdmVyc2lvbjpufX0pfSxFZT1mdW5jdGlvbih0LG4pe3JldHVybi0xIT09dC5pbmRleE9mKG4pfSxCZT0oVHQ9L15ccyt8XHMrJC9nLGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlcGxhY2UoVHQsIiIpfSksRGU9Ly4qP3ZlcnNpb25cL1wgPyhbMC05XSspXC4oWzAtOV0rKS4qLyxNZT1mdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIEVlKHQsbil9fSxBZT1be25hbWU6IkVkZ2UiLHZlcnNpb25SZWdleGVzOlsvLio/ZWRnZVwvID8oWzAtOV0rKVwuKFswLTldKykkL10sc2VhcmNoOmZ1bmN0aW9uKHQpe3JldHVybiBFZSh0LCJlZGdlLyIpJiZFZSh0LCJjaHJvbWUiKSYmRWUodCwic2FmYXJpIikmJkVlKHQsImFwcGxld2Via2l0Iil9fSx7bmFtZToiQ2hyb21lIix2ZXJzaW9uUmVnZXhlczpbLy4qP2Nocm9tZVwvKFswLTldKylcLihbMC05XSspLiovLERlXSxzZWFyY2g6ZnVuY3Rpb24odCl7cmV0dXJuIEVlKHQsImNocm9tZSIpJiYhRWUodCwiY2hyb21lZnJhbWUiKX19LHtuYW1lOiJJRSIsdmVyc2lvblJlZ2V4ZXM6Wy8uKj9tc2llXCA/KFswLTldKylcLihbMC05XSspLiovLC8uKj9ydjooWzAtOV0rKVwuKFswLTldKykuKi9dLHNlYXJjaDpmdW5jdGlvbih0KXtyZXR1cm4gRWUodCwibXNpZSIpfHxFZSh0LCJ0cmlkZW50Iil9fSx7bmFtZToiT3BlcmEiLHZlcnNpb25SZWdleGVzOltEZSwvLio/b3BlcmFcLyhbMC05XSspXC4oWzAtOV0rKS4qL10sc2VhcmNoOk1lKCJvcGVyYSIpfSx7bmFtZToiRmlyZWZveCIsdmVyc2lvblJlZ2V4ZXM6Wy8uKj9maXJlZm94XC9cID8oWzAtOV0rKVwuKFswLTldKykuKi9dLHNlYXJjaDpNZSgiZmlyZWZveCIpfSx7bmFtZToiU2FmYXJpIix2ZXJzaW9uUmVnZXhlczpbRGUsLy4qP2NwdSBvcyAoWzAtOV0rKV8oWzAtOV0rKS4qL10sc2VhcmNoOmZ1bmN0aW9uKHQpe3JldHVybihFZSh0LCJzYWZhcmkiKXx8RWUodCwibW9iaWxlLyIpKSYmRWUodCwiYXBwbGV3ZWJraXQiKX19XSxGZT1be25hbWU6IldpbmRvd3MiLHNlYXJjaDpNZSgid2luIiksdmVyc2lvblJlZ2V4ZXM6Wy8uKj93aW5kb3dzXCBudFwgPyhbMC05XSspXC4oWzAtOV0rKS4qL119LHtuYW1lOiJpT1MiLHNlYXJjaDpmdW5jdGlvbih0KXtyZXR1cm4gRWUodCwiaXBob25lIil8fEVlKHQsImlwYWQiKX0sdmVyc2lvblJlZ2V4ZXM6Wy8uKj92ZXJzaW9uXC9cID8oWzAtOV0rKVwuKFswLTldKykuKi8sLy4qY3B1IG9zIChbMC05XSspXyhbMC05XSspLiovLC8uKmNwdSBpcGhvbmUgb3MgKFswLTldKylfKFswLTldKykuKi9dfSx7bmFtZToiQW5kcm9pZCIsc2VhcmNoOk1lKCJhbmRyb2lkIiksdmVyc2lvblJlZ2V4ZXM6Wy8uKj9hbmRyb2lkXCA/KFswLTldKylcLihbMC05XSspLiovXX0se25hbWU6Ik9TWCIsc2VhcmNoOk1lKCJtYWMgb3MgeCIpLHZlcnNpb25SZWdleGVzOlsvLio/bWFjXCBvc1wgeFwgPyhbMC05XSspXyhbMC05XSspLiovXX0se25hbWU6IkxpbnV4IixzZWFyY2g6TWUoImxpbnV4IiksdmVyc2lvblJlZ2V4ZXM6W119LHtuYW1lOiJTb2xhcmlzIixzZWFyY2g6TWUoInN1bm9zIiksdmVyc2lvblJlZ2V4ZXM6W119LHtuYW1lOiJGcmVlQlNEIixzZWFyY2g6TWUoImZyZWVic2QiKSx2ZXJzaW9uUmVnZXhlczpbXX0se25hbWU6IkNocm9tZU9TIixzZWFyY2g6TWUoImNyb3MiKSx2ZXJzaW9uUmVnZXhlczpbLy4qP2Nocm9tZVwvKFswLTldKylcLihbMC05XSspLiovXX1dLEllPXticm93c2VyczphdChBZSksb3NlczphdChGZSl9LFJlPWZ1bmN0aW9uKHQsbil7dmFyIGUsbyxyLGksdSxhLGMscyxsLGYsZCxtLGc9SWUuYnJvd3NlcnMoKSxwPUllLm9zZXMoKSxoPV9lKGcsdCkuZm9sZCh2ZS51bmtub3duLHZlLm51KSx2PVRlKHAsdCkuZm9sZChDZS51bmtub3duLENlLm51KTtyZXR1cm57YnJvd3NlcjpoLG9zOnYsZGV2aWNlVHlwZToobz1oLHI9dCxpPW4sdT0oZT12KS5pc2lPUygpJiYhMD09PS9pcGFkL2kudGVzdChyKSxhPWUuaXNpT1MoKSYmIXUsYz1lLmlzaU9TKCl8fGUuaXNBbmRyb2lkKCkscz1jfHxpKCIocG9pbnRlcjpjb2Fyc2UpIiksbD11fHwhYSYmYyYmaSgiKG1pbi1kZXZpY2Utd2lkdGg6NzY4cHgpIiksZj1hfHxjJiYhbCxkPW8uaXNTYWZhcmkoKSYmZS5pc2lPUygpJiYhMT09PS9zYWZhcmkvaS50ZXN0KHIpLG09IWYmJiFsJiYhZCx7aXNpUGFkOmF0KHUpLGlzaVBob25lOmF0KGEpLGlzVGFibGV0OmF0KGwpLGlzUGhvbmU6YXQoZiksaXNUb3VjaDphdChzKSxpc0FuZHJvaWQ6ZS5pc0FuZHJvaWQsaXNpT1M6ZS5pc2lPUyxpc1dlYlZpZXc6YXQoZCksaXNEZXNrdG9wOmF0KG0pfSl9fSxWZT1mdW5jdGlvbih0KXtyZXR1cm4gbnQud2luZG93Lm1hdGNoTWVkaWEodCkubWF0Y2hlc30sSGU9X3QoZnVuY3Rpb24oKXtyZXR1cm4gUmUobnQubmF2aWdhdG9yLnVzZXJBZ2VudCxWZSl9KSxQZT1mdW5jdGlvbigpe3JldHVybiBIZSgpfSx6ZT1mdW5jdGlvbih0LG4pe3ZhciBlPXQuZG9tKCk7aWYoMSE9PWUubm9kZVR5cGUpcmV0dXJuITE7dmFyIG89ZTtpZihvLm1hdGNoZXMhPT11bmRlZmluZWQpcmV0dXJuIG8ubWF0Y2hlcyhuKTtpZihvLm1zTWF0Y2hlc1NlbGVjdG9yIT09dW5kZWZpbmVkKXJldHVybiBvLm1zTWF0Y2hlc1NlbGVjdG9yKG4pO2lmKG8ud2Via2l0TWF0Y2hlc1NlbGVjdG9yIT09dW5kZWZpbmVkKXJldHVybiBvLndlYmtpdE1hdGNoZXNTZWxlY3RvcihuKTtpZihvLm1vek1hdGNoZXNTZWxlY3RvciE9PXVuZGVmaW5lZClyZXR1cm4gby5tb3pNYXRjaGVzU2VsZWN0b3Iobik7dGhyb3cgbmV3IEVycm9yKCJCcm93c2VyIGxhY2tzIG5hdGl2ZSBzZWxlY3RvcnMiKX0sTmU9ZnVuY3Rpb24odCl7cmV0dXJuIDEhPT10Lm5vZGVUeXBlJiY5IT09dC5ub2RlVHlwZXx8MD09PXQuY2hpbGRFbGVtZW50Q291bnR9LExlPWZ1bmN0aW9uKHQsbil7cmV0dXJuIHQuZG9tKCk9PT1uLmRvbSgpfSxqZT1mdW5jdGlvbih0LG4pe3JldHVybiBlPXQuZG9tKCksbz1uLmRvbSgpLHI9ZSxpPW8sdT1udC5Ob2RlLkRPQ1VNRU5UX1BPU0lUSU9OX0NPTlRBSU5FRF9CWSwwIT0oci5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihpKSZ1KTt2YXIgZSxvLHIsaSx1fSxVZT1mdW5jdGlvbih0LG4pe3JldHVybiBQZSgpLmJyb3dzZXIuaXNJRSgpP2plKHQsbik6KGU9bixvPXQuZG9tKCkscj1lLmRvbSgpLG8hPT1yJiZvLmNvbnRhaW5zKHIpKTt2YXIgZSxvLHJ9LFdlPWZ1bmN0aW9uKHQpe3JldHVybiBUKHQpP3Q6YXQoITEpfSxHZT1mdW5jdGlvbih0LG4sZSl7Zm9yKHZhciBvPXQuZG9tKCkscj1XZShlKTtvLnBhcmVudE5vZGU7KXtvPW8ucGFyZW50Tm9kZTt2YXIgaT1sZS5mcm9tRG9tKG8pLHU9bihpKTtpZih1LmlzU29tZSgpKXJldHVybiB1O2lmKHIoaSkpYnJlYWt9cmV0dXJuIHN0Lm5vbmUoKX0sWGU9ZnVuY3Rpb24odCxuLGUpe3ZhciBvPW4odCkscj1XZShlKTtyZXR1cm4gby5vclRodW5rKGZ1bmN0aW9uKCl7cmV0dXJuIHIodCk/c3Qubm9uZSgpOkdlKHQsbixyKX0pfSxZZT1mdW5jdGlvbih0LG4pe3JldHVybiBMZSh0LmVsZW1lbnQoKSxuLmV2ZW50KCkudGFyZ2V0KCkpfSxxZT1mdW5jdGlvbih0KXtpZigheHQodCwiY2FuIikmJiF4dCh0LCJhYm9ydCIpJiYheHQodCwicnVuIikpdGhyb3cgbmV3IEVycm9yKCJFdmVudEhhbmRsZXIgZGVmaW5lZCBieTogIitKU09OLnN0cmluZ2lmeSh0LG51bGwsMikrIiBkb2VzIG5vdCBoYXZlIGNhbiwgYWJvcnQsIG9yIHJ1biEiKTtyZXR1cm4gX24oIkV4dHJhY3RpbmcgZXZlbnQuaGFuZGxlciIsc24oW1puKCJjYW4iLGF0KCEwKSksWm4oImFib3J0IixhdCghMSkpLFpuKCJydW4iLFopXSksdCl9LEtlPWZ1bmN0aW9uKGUpe3ZhciBuLG8scixpLHQ9KG89ZnVuY3Rpb24odCl7cmV0dXJuIHQuY2FufSxmdW5jdGlvbigpe2Zvcih2YXIgZT1bXSx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyllW3RdPWFyZ3VtZW50c1t0XTtyZXR1cm4gTihuLGZ1bmN0aW9uKHQsbil7cmV0dXJuIHQmJm8obikuYXBwbHkodW5kZWZpbmVkLGUpfSwhMCl9KSx1PShyPW49ZSxpPWZ1bmN0aW9uKHQpe3JldHVybiB0LmFib3J0fSxmdW5jdGlvbigpe2Zvcih2YXIgZT1bXSx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyllW3RdPWFyZ3VtZW50c1t0XTtyZXR1cm4gTihyLGZ1bmN0aW9uKHQsbil7cmV0dXJuIHR8fGkobikuYXBwbHkodW5kZWZpbmVkLGUpfSwhMSl9KTtyZXR1cm4gcWUoe2Nhbjp0LGFib3J0OnUscnVuOmZ1bmN0aW9uKCl7Zm9yKHZhciBuPVtdLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKW5bdF09YXJndW1lbnRzW3RdO2l0KGUsZnVuY3Rpb24odCl7dC5ydW4uYXBwbHkodW5kZWZpbmVkLG4pfSl9fSl9LEplPWF0KCJ0b3VjaHN0YXJ0IiksJGU9YXQoInRvdWNobW92ZSIpLFFlPWF0KCJ0b3VjaGVuZCIpLFplPWF0KCJ0b3VjaGNhbmNlbCIpLHRvPWF0KCJtb3VzZWRvd24iKSxubz1hdCgibW91c2Vtb3ZlIiksZW89YXQoIm1vdXNlb3V0Iiksb289YXQoIm1vdXNldXAiKSxybz1hdCgibW91c2VvdmVyIiksaW89YXQoImZvY3VzaW4iKSx1bz1hdCgiZm9jdXNvdXQiKSxhbz1hdCgia2V5ZG93biIpLGNvPWF0KCJrZXl1cCIpLHNvPWF0KCJpbnB1dCIpLGxvPWF0KCJjaGFuZ2UiKSxmbz1hdCgiY2xpY2siKSxtbz1hdCgidHJhbnNpdGlvbmVuZCIpLGdvPWF0KCJzZWxlY3RzdGFydCIpLHBvPXt0YXA6YXQoImFsbG95LnRhcCIpfSxobz1hdCgiYWxsb3kuZm9jdXMiKSx2bz1hdCgiYWxsb3kuYmx1ci5wb3N0IiksYm89YXQoImFsbG95LnBhc3RlLnBvc3QiKSx5bz1hdCgiYWxsb3kucmVjZWl2ZSIpLHhvPWF0KCJhbGxveS5leGVjdXRlIiksd289YXQoImFsbG95LmZvY3VzLml0ZW0iKSxTbz1wby50YXAsa289YXQoImFsbG95LmxvbmdwcmVzcyIpLENvPWF0KCJhbGxveS5zYW5kYm94LmNsb3NlIiksT289YXQoImFsbG95LnR5cGVhaGVhZC5jYW5jZWwiKSxfbz1hdCgiYWxsb3kuc3lzdGVtLmluaXQiKSxUbz1hdCgiYWxsb3kuc3lzdGVtLnRvdWNobW92ZSIpLEVvPWF0KCJhbGxveS5zeXN0ZW0udG91Y2hlbmQiKSxCbz1hdCgiYWxsb3kuc3lzdGVtLnNjcm9sbCIpLERvPWF0KCJhbGxveS5zeXN0ZW0ucmVzaXplIiksTW89YXQoImFsbG95LnN5c3RlbS5hdHRhY2hlZCIpLEFvPWF0KCJhbGxveS5zeXN0ZW0uZGV0YWNoZWQiKSxGbz1hdCgiYWxsb3kuc3lzdGVtLmRpc21pc3NSZXF1ZXN0ZWQiKSxJbz1hdCgiYWxsb3kuc3lzdGVtLnJlcG9zaXRpb25SZXF1ZXN0ZWQiKSxSbz1hdCgiYWxsb3kuZm9jdXNtYW5hZ2VyLnNoaWZ0ZWQiKSxWbz1hdCgiYWxsb3kuc2xvdGNvbnRhaW5lci52aXNpYmlsaXR5IiksSG89YXQoImFsbG95LmNoYW5nZS50YWIiKSxQbz1hdCgiYWxsb3kuZGlzbWlzcy50YWIiKSx6bz1hdCgiYWxsb3kuaGlnaGxpZ2h0IiksTm89YXQoImFsbG95LmRlaGlnaGxpZ2h0IiksTG89ZnVuY3Rpb24odCxuKXtHbyh0LHQuZWxlbWVudCgpLG4se30pfSxqbz1mdW5jdGlvbih0LG4sZSl7R28odCx0LmVsZW1lbnQoKSxuLGUpfSxVbz1mdW5jdGlvbih0KXtMbyh0LHhvKCkpfSxXbz1mdW5jdGlvbih0LG4sZSl7R28odCxuLGUse30pfSxHbz1mdW5jdGlvbih0LG4sZSxvKXt2YXIgcj1ldCh7dGFyZ2V0Om59LG8pO3QuZ2V0U3lzdGVtKCkudHJpZ2dlckV2ZW50KGUsbixkdChyLGF0KSl9LFhvPWZ1bmN0aW9uKHQsbixlLG8pe3QuZ2V0U3lzdGVtKCkudHJpZ2dlckV2ZW50KGUsbixvLmV2ZW50KCkpfSxZbz1mdW5jdGlvbih0KXtyZXR1cm4gSnQodCl9LHFvPWZ1bmN0aW9uKHQsbil7cmV0dXJue2tleTp0LHZhbHVlOnFlKHthYm9ydDpufSl9fSxLbz1mdW5jdGlvbih0KXtyZXR1cm57a2V5OnQsdmFsdWU6cWUoe3J1bjpmdW5jdGlvbih0LG4pe24uZXZlbnQoKS5wcmV2ZW50KCl9fSl9fSxKbz1mdW5jdGlvbih0LG4pe3JldHVybntrZXk6dCx2YWx1ZTpxZSh7cnVuOm59KX19LCRvPWZ1bmN0aW9uKHQsZSxvKXtyZXR1cm57a2V5OnQsdmFsdWU6cWUoe3J1bjpmdW5jdGlvbih0LG4pe2UuYXBwbHkodW5kZWZpbmVkLFt0LG5dLmNvbmNhdChvKSl9fSl9fSxRbz1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJue2tleTp0LHZhbHVlOnFlKHtydW46ZnVuY3Rpb24odCxuKXtZZSh0LG4pJiZlKHQsbil9fSl9fX0sWm89ZnVuY3Rpb24odCxuLGUpe3ZhciBvLHIsaT1uLnBhcnRVaWRzW2VdO3JldHVybiByPWksSm8obz10LGZ1bmN0aW9uKHQsbil7dC5nZXRTeXN0ZW0oKS5nZXRCeVVpZChyKS5lYWNoKGZ1bmN0aW9uKHQpe1hvKHQsdC5lbGVtZW50KCksbyxuKX0pfSl9LHRyPWZ1bmN0aW9uKHQscil7cmV0dXJuIEpvKHQsZnVuY3Rpb24obix0KXt2YXIgZT10LmV2ZW50KCksbz1uLmdldFN5c3RlbSgpLmdldEJ5RG9tKGUudGFyZ2V0KCkpLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm4gWGUoZS50YXJnZXQoKSxmdW5jdGlvbih0KXtyZXR1cm4gbi5nZXRTeXN0ZW0oKS5nZXRCeURvbSh0KS50b09wdGlvbigpfSxhdCghMSkpLmdldE9yKG4pfSxmdW5jdGlvbih0KXtyZXR1cm4gdH0pO3IobixvLHQpfSl9LG5yPWZ1bmN0aW9uKHQpe3JldHVybiBKbyh0LGZ1bmN0aW9uKHQsbil7bi5jdXQoKX0pfSxlcj1mdW5jdGlvbih0LG4pe3JldHVybiBRbyh0KShuKX0sb3I9UW8oTW8oKSkscnI9UW8oQW8oKSksaXI9UW8oX28oKSksdXI9KEV0PXhvKCksZnVuY3Rpb24odCl7cmV0dXJuIEpvKEV0LHQpfSksYXI9ZnVuY3Rpb24odCl7cmV0dXJuIGxlLmZyb21Eb20odC5kb20oKS5vd25lckRvY3VtZW50KX0sY3I9ZnVuY3Rpb24odCl7cmV0dXJuIGxlLmZyb21Eb20odC5kb20oKS5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCl9LHNyPWZ1bmN0aW9uKHQpe3JldHVybiBsZS5mcm9tRG9tKHQuZG9tKCkub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldyl9LGxyPWZ1bmN0aW9uKHQpe3JldHVybiBzdC5mcm9tKHQuZG9tKCkucGFyZW50Tm9kZSkubWFwKGxlLmZyb21Eb20pfSxmcj1mdW5jdGlvbih0KXtyZXR1cm4gc3QuZnJvbSh0LmRvbSgpLm9mZnNldFBhcmVudCkubWFwKGxlLmZyb21Eb20pfSxkcj1mdW5jdGlvbih0KXtyZXR1cm4gVih0LmRvbSgpLmNoaWxkTm9kZXMsbGUuZnJvbURvbSl9LG1yPWZ1bmN0aW9uKHQsbil7dmFyIGU9dC5kb20oKS5jaGlsZE5vZGVzO3JldHVybiBzdC5mcm9tKGVbbl0pLm1hcChsZS5mcm9tRG9tKX0sZ3I9ZnVuY3Rpb24obixlKXtscihuKS5lYWNoKGZ1bmN0aW9uKHQpe3QuZG9tKCkuaW5zZXJ0QmVmb3JlKGUuZG9tKCksbi5kb20oKSl9KX0scHI9ZnVuY3Rpb24odCxuKXt2YXIgZTsoZT10LHN0LmZyb20oZS5kb20oKS5uZXh0U2libGluZykubWFwKGxlLmZyb21Eb20pKS5mb2xkKGZ1bmN0aW9uKCl7bHIodCkuZWFjaChmdW5jdGlvbih0KXt2cih0LG4pfSl9LGZ1bmN0aW9uKHQpe2dyKHQsbil9KX0saHI9ZnVuY3Rpb24obixlKXttcihuLDApLmZvbGQoZnVuY3Rpb24oKXt2cihuLGUpfSxmdW5jdGlvbih0KXtuLmRvbSgpLmluc2VydEJlZm9yZShlLmRvbSgpLHQuZG9tKCkpfSl9LHZyPWZ1bmN0aW9uKHQsbil7dC5kb20oKS5hcHBlbmRDaGlsZChuLmRvbSgpKX0sYnI9ZnVuY3Rpb24obix0KXtpdCh0LGZ1bmN0aW9uKHQpe3ZyKG4sdCl9KX0seXI9ZnVuY3Rpb24odCl7dC5kb20oKS50ZXh0Q29udGVudD0iIixpdChkcih0KSxmdW5jdGlvbih0KXt4cih0KX0pfSx4cj1mdW5jdGlvbih0KXt2YXIgbj10LmRvbSgpO251bGwhPT1uLnBhcmVudE5vZGUmJm4ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChuKX0sd3I9ZnVuY3Rpb24odCl7dmFyIG4sZT1kcih0KTswPGUubGVuZ3RoJiYobj10LGl0KGUsZnVuY3Rpb24odCl7Z3Iobix0KX0pKSx4cih0KX0sU3I9ZnVuY3Rpb24odCl7cmV0dXJuIHQuZG9tKCkuaW5uZXJIVE1MfSxrcj1mdW5jdGlvbih0LG4pe3ZhciBlLG8scj1hcih0KS5kb20oKSxpPWxlLmZyb21Eb20oci5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkpLHU9KGU9biwobz0ocnx8bnQuZG9jdW1lbnQpLmNyZWF0ZUVsZW1lbnQoImRpdiIpKS5pbm5lckhUTUw9ZSxkcihsZS5mcm9tRG9tKG8pKSk7YnIoaSx1KSx5cih0KSx2cih0LGkpfSxDcj0oInVuZGVmaW5lZCIhPXR5cGVvZiBudC53aW5kb3c/bnQud2luZG93OkZ1bmN0aW9uKCJyZXR1cm4gdGhpczsiKSgpLGZ1bmN0aW9uKHQpe3JldHVybiB0LmRvbSgpLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCl9KSxPcj1mdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHQuZG9tKCkubm9kZVR5cGU9PT1ufX0sX3I9T3IoMSksVHI9T3IoMyksRXI9ZnVuY3Rpb24odCxuLGUpe2lmKCEoUyhlKXx8TyhlKXx8cnQoZSkpKXRocm93IG50LmNvbnNvbGUuZXJyb3IoIkludmFsaWQgY2FsbCB0byBBdHRyLnNldC4gS2V5ICIsbiwiOjogVmFsdWUgIixlLCI6OiBFbGVtZW50ICIsdCksbmV3IEVycm9yKCJBdHRyaWJ1dGUgdmFsdWUgd2FzIG5vdCBzaW1wbGUiKTt0LnNldEF0dHJpYnV0ZShuLGUrIiIpfSxCcj1mdW5jdGlvbih0LG4sZSl7RXIodC5kb20oKSxuLGUpfSxEcj1mdW5jdGlvbih0LG4pe3ZhciBlPXQuZG9tKCkuZ2V0QXR0cmlidXRlKG4pO3JldHVybiBudWxsPT09ZT91bmRlZmluZWQ6ZX0sTXI9ZnVuY3Rpb24odCxuKXtyZXR1cm4gc3QuZnJvbShEcih0LG4pKX0sQXI9ZnVuY3Rpb24odCxuKXt2YXIgZT10LmRvbSgpO3JldHVybiEoIWV8fCFlLmhhc0F0dHJpYnV0ZSkmJmUuaGFzQXR0cmlidXRlKG4pfSxGcj1mdW5jdGlvbih0LG4pe3QuZG9tKCkucmVtb3ZlQXR0cmlidXRlKG4pfSxJcj1mdW5jdGlvbih0KXtyZXR1cm4gbj10LGU9ITEsbGUuZnJvbURvbShuLmRvbSgpLmNsb25lTm9kZShlKSk7dmFyIG4sZX0sUnI9ZnVuY3Rpb24odCl7dmFyIG4sZSxvLHI9SXIodCk7cmV0dXJuIG49cixlPWxlLmZyb21UYWcoImRpdiIpLG89bGUuZnJvbURvbShuLmRvbSgpLmNsb25lTm9kZSghMCkpLHZyKGUsbyksU3IoZSl9LFZyPWZ1bmN0aW9uKHQpe3JldHVybiBScih0KX0sSHI9WW8oW3trZXk6aG8oKSx2YWx1ZTpxZSh7Y2FuOmZ1bmN0aW9uKHQsbil7dmFyIGUsbyxyPW4uZXZlbnQoKS5vcmlnaW5hdG9yKCksaT1uLmV2ZW50KCkudGFyZ2V0KCk7cmV0dXJuIG89aSwhKExlKGU9cix0LmVsZW1lbnQoKSkmJiFMZShlLG8pKXx8KG50LmNvbnNvbGUud2FybihobygpKyIgZGlkIG5vdCBnZXQgaW50ZXJwcmV0ZWQgYnkgdGhlIGRlc2lyZWQgdGFyZ2V0LiBcbk9yaWdpbmF0b3I6ICIrVnIocikrIlxuVGFyZ2V0OiAiK1ZyKGkpKyJcbkNoZWNrIHRoZSAiK2hvKCkrIiBldmVudCBoYW5kbGVycyIpLCExKX19KX1dKSxQcj0vKiAqL09iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLGV2ZW50czpIcn0pLHpyPTAsTnI9ZnVuY3Rpb24odCl7dmFyIG49KG5ldyBEYXRlKS5nZXRUaW1lKCk7cmV0dXJuIHQrIl8iK01hdGguZmxvb3IoMWU5Kk1hdGgucmFuZG9tKCkpKyArK3pyK1N0cmluZyhuKX0sTHI9YXQoImFsbG95LWlkLSIpLGpyPWF0KCJkYXRhLWFsbG95LWlkIiksVXI9THIoKSxXcj1qcigpLEdyPWZ1bmN0aW9uKHQsbil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZG9tKCksV3Ise3ZhbHVlOm4sd3JpdGFibGU6ITB9KX0sWHI9ZnVuY3Rpb24odCl7dmFyIG49X3IodCk/dC5kb20oKVtXcl06bnVsbDtyZXR1cm4gc3QuZnJvbShuKX0sWXI9ZnVuY3Rpb24odCl7cmV0dXJuIE5yKHQpfSxxcj1jdCxLcj1mdW5jdGlvbihuKXt2YXIgdD1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIlRoZSBjb21wb25lbnQgbXVzdCBiZSBpbiBhIGNvbnRleHQgdG8gc2VuZDogIit0KyhuPyJcbiIrVnIobigpLmVsZW1lbnQoKSkrIiBpcyBub3QgaW4gY29udGV4dC4iOiIiKSl9fTtyZXR1cm57ZGVidWdJbmZvOmF0KCJmYWtlIiksdHJpZ2dlckV2ZW50OnQoInRyaWdnZXJFdmVudCIpLHRyaWdnZXJGb2N1czp0KCJ0cmlnZ2VyRm9jdXMiKSx0cmlnZ2VyRXNjYXBlOnQoInRyaWdnZXJFc2NhcGUiKSxidWlsZDp0KCJidWlsZCIpLGFkZFRvV29ybGQ6dCgiYWRkVG9Xb3JsZCIpLHJlbW92ZUZyb21Xb3JsZDp0KCJyZW1vdmVGcm9tV29ybGQiKSxhZGRUb0d1aTp0KCJhZGRUb0d1aSIpLHJlbW92ZUZyb21HdWk6dCgicmVtb3ZlRnJvbUd1aSIpLGdldEJ5VWlkOnQoImdldEJ5VWlkIiksZ2V0QnlEb206dCgiZ2V0QnlEb20iKSxicm9hZGNhc3Q6dCgiYnJvYWRjYXN0IiksYnJvYWRjYXN0T246dCgiYnJvYWRjYXN0T24iKSxicm9hZGNhc3RFdmVudDp0KCJicm9hZGNhc3RFdmVudCIpLGlzQ29ubmVjdGVkOmF0KCExKX19LEpyPUtyKCksJHI9ZnVuY3Rpb24odCl7cmV0dXJuIFYodCxmdW5jdGlvbih0KXtyZXR1cm4gbz1uPSIvKiIscj0oZT10KS5sZW5ndGgtbi5sZW5ndGgsIiI9PT1vfHxlLmxlbmd0aD49by5sZW5ndGgmJmUuc3Vic3RyKHIscitvLmxlbmd0aCk9PT1vP3Quc3Vic3RyaW5nKDAsdC5sZW5ndGgtIi8qIi5sZW5ndGgpOnQ7dmFyIG4sZSxvLHJ9KX0sUXI9ZnVuY3Rpb24odCxuKXt2YXIgZT10LnRvU3RyaW5nKCksbz1lLmluZGV4T2YoIikiKSsxLHI9ZS5pbmRleE9mKCIoIiksaT1lLnN1YnN0cmluZyhyKzEsby0xKS5zcGxpdCgvLFxzKi8pO3JldHVybiB0LnRvRnVuY3Rpb25Bbm5vdGF0aW9uPWZ1bmN0aW9uKCl7cmV0dXJue25hbWU6bixwYXJhbWV0ZXJzOiRyKGkpfX0sdH0sWnI9TnIoImFsbG95LXByZW1hZGUiKSx0aT1mdW5jdGlvbih0KXtyZXR1cm4gS3QoWnIsdCl9LG5pPWZ1bmN0aW9uKG8pe3JldHVybiB0PWZ1bmN0aW9uKHQpe2Zvcih2YXIgbj1bXSxlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyluW2UtMV09YXJndW1lbnRzW2VdO3JldHVybiBvLmFwcGx5KHZvaWQgMCxiKFt0LmdldEFwaXMoKSx0XSxuKSl9LG49by50b1N0cmluZygpLGU9bi5pbmRleE9mKCIpIikrMSxyPW4uaW5kZXhPZigiKCIpLGk9bi5zdWJzdHJpbmcocisxLGUtMSkuc3BsaXQoLyxccyovKSx0LnRvRnVuY3Rpb25Bbm5vdGF0aW9uPWZ1bmN0aW9uKCl7cmV0dXJue25hbWU6Ik9WRVJSSURFIixwYXJhbWV0ZXJzOiRyKGkuc2xpY2UoMSkpfX0sdDt2YXIgdCxuLGUscixpfSxlaT17aW5pdDpmdW5jdGlvbigpe3JldHVybiBvaSh7cmVhZFN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIk5vIFN0YXRlIHJlcXVpcmVkIn19KX19LG9pPWZ1bmN0aW9uKHQpe3JldHVybiB0fSxyaT1mdW5jdGlvbih0LHIpe3ZhciBpPXt9O3JldHVybiBmdCh0LGZ1bmN0aW9uKHQsbyl7ZnQodCxmdW5jdGlvbih0LG4pe3ZhciBlPWJ0KGksbikuZ2V0T3IoW10pO2lbbl09ZS5jb25jYXQoW3Iobyx0KV0pfSl9KSxpfSxpaT1mdW5jdGlvbih0KXtyZXR1cm57Y2xhc3Nlczp0LmNsYXNzZXMhPT11bmRlZmluZWQ/dC5jbGFzc2VzOltdLGF0dHJpYnV0ZXM6dC5hdHRyaWJ1dGVzIT09dW5kZWZpbmVkP3QuYXR0cmlidXRlczp7fSxzdHlsZXM6dC5zdHlsZXMhPT11bmRlZmluZWQ/dC5zdHlsZXM6e319fSx1aT1mdW5jdGlvbih0LG4pe3JldHVybiBlPWcuYXBwbHkodW5kZWZpbmVkLFt0LmhhbmRsZXJdLmNvbmNhdChuKSksbz10LnB1cnBvc2UoKSx7Y0hhbmRsZXI6ZSxwdXJwb3NlOmF0KG8pfTt2YXIgZSxvfSxhaT1mdW5jdGlvbih0KXtyZXR1cm4gdC5jSGFuZGxlcn0sY2k9ZnVuY3Rpb24odCxuKXtyZXR1cm57bmFtZTphdCh0KSxoYW5kbGVyOmF0KG4pfX0sc2k9ZnVuY3Rpb24odCxuLGUpe3ZhciBvLHIsaT1ldChldCh7fSxlKSwobz10LHI9e30saXQobixmdW5jdGlvbih0KXtyW3QubmFtZSgpXT10LmhhbmRsZXJzKG8pfSkscikpO3JldHVybiByaShpLGNpKX0sbGk9ZnVuY3Rpb24odCl7dmFyIG4saT1UKG49dCk/e2NhbjphdCghMCksYWJvcnQ6YXQoITEpLHJ1bjpufTpuO3JldHVybiBmdW5jdGlvbih0LG4pe2Zvcih2YXIgZT1bXSxvPTI7bzxhcmd1bWVudHMubGVuZ3RoO28rKyllW28tMl09YXJndW1lbnRzW29dO3ZhciByPVt0LG5dLmNvbmNhdChlKTtpLmFib3J0LmFwcGx5KHVuZGVmaW5lZCxyKT9uLnN0b3AoKTppLmNhbi5hcHBseSh1bmRlZmluZWQscikmJmkucnVuLmFwcGx5KHVuZGVmaW5lZCxyKX19LGZpPWZ1bmN0aW9uKHQsbixlKXt2YXIgbyxyLGk9bltlXTtyZXR1cm4gaT9mdW5jdGlvbih1LGEsdCxjKXt0cnl7dmFyIG49cSh0LGZ1bmN0aW9uKHQsbil7dmFyIGU9dFthXSgpLG89blthXSgpLHI9Yy5pbmRleE9mKGUpLGk9Yy5pbmRleE9mKG8pO2lmKC0xPT09cil0aHJvdyBuZXcgRXJyb3IoIlRoZSBvcmRlcmluZyBmb3IgIit1KyIgZG9lcyBub3QgaGF2ZSBhbiBlbnRyeSBmb3IgIitlKyIuXG5PcmRlciBzcGVjaWZpZWQ6ICIrSlNPTi5zdHJpbmdpZnkoYyxudWxsLDIpKTtpZigtMT09PWkpdGhyb3cgbmV3IEVycm9yKCJUaGUgb3JkZXJpbmcgZm9yICIrdSsiIGRvZXMgbm90IGhhdmUgYW4gZW50cnkgZm9yICIrbysiLlxuT3JkZXIgc3BlY2lmaWVkOiAiK0pTT04uc3RyaW5naWZ5KGMsbnVsbCwyKSk7cmV0dXJuIHI8aT8tMTppPHI/MTowfSk7cmV0dXJuIG90LnZhbHVlKG4pfWNhdGNoKGUpe3JldHVybiBvdC5lcnJvcihbZV0pfX0oIkV2ZW50OiAiK2UsIm5hbWUiLHQsaSkubWFwKGZ1bmN0aW9uKHQpe3ZhciBuPVYodCxmdW5jdGlvbih0KXtyZXR1cm4gdC5oYW5kbGVyKCl9KTtyZXR1cm4gS2Uobil9KToobz1lLHI9dCxvdC5lcnJvcihbIlRoZSBldmVudCAoIitvKycpIGhhcyBtb3JlIHRoYW4gb25lIGJlaGF2aW91ciB0aGF0IGxpc3RlbnMgdG8gaXQuXG5XaGVuIHRoaXMgb2NjdXJzLCB5b3UgbXVzdCBzcGVjaWZ5IGFuIGV2ZW50IG9yZGVyaW5nIGZvciB0aGUgYmVoYXZpb3VycyBpbiB5b3VyIHNwZWMgKGUuZy4gWyAibGlzdGluZyIsICJ0b2dnbGluZyIgXSkuXG5UaGUgYmVoYXZpb3VycyB0aGF0IGNhbiB0cmlnZ2VyIGl0IGFyZTogJytKU09OLnN0cmluZ2lmeShWKHIsZnVuY3Rpb24odCl7cmV0dXJuIHQubmFtZSgpfSksbnVsbCwyKV0pKX0sZGk9ZnVuY3Rpb24odCxpKXt2YXIgbj1wdCh0LGZ1bmN0aW9uKG8scil7cmV0dXJuKDE9PT1vLmxlbmd0aD9vdC52YWx1ZShvWzBdLmhhbmRsZXIoKSk6ZmkobyxpLHIpKS5tYXAoZnVuY3Rpb24odCl7dmFyIG49bGkodCksZT0xPG8ubGVuZ3RoP1AoaVtyXSxmdW5jdGlvbihuKXtyZXR1cm4gSShvLGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5hbWUoKT09PW59KX0pLmpvaW4oIiA+ICIpOm9bMF0ubmFtZSgpO3JldHVybiBLdChyLHtoYW5kbGVyOm4scHVycG9zZTphdChlKX0pfSl9KTtyZXR1cm4gJHQobix7fSl9LG1pPWZ1bmN0aW9uKHQpe3JldHVybiBDbigiY3VzdG9tLmRlZmluaXRpb24iLGxuKFtobigiZG9tIiwiZG9tIixVdCgpLGxuKFt6bigidGFnIiksWm4oInN0eWxlcyIse30pLFpuKCJjbGFzc2VzIixbXSksWm4oImF0dHJpYnV0ZXMiLHt9KSxZbigidmFsdWUiKSxZbigiaW5uZXJIdG1sIildKSksem4oImNvbXBvbmVudHMiKSx6bigidWlkIiksWm4oImV2ZW50cyIse30pLFpuKCJhcGlzIix7fSksaG4oImV2ZW50T3JkZXIiLCJldmVudE9yZGVyIixMdC5tZXJnZVdpdGhUaHVuayhhdCh7ImFsbG95LmV4ZWN1dGUiOlsiZGlzYWJsaW5nIiwiYWxsb3kuYmFzZS5iZWhhdmlvdXIiLCJ0b2dnbGluZyIsInR5cGVhaGVhZGV2ZW50cyJdLCJhbGxveS5mb2N1cyI6WyJhbGxveS5iYXNlLmJlaGF2aW91ciIsImZvY3VzaW5nIiwia2V5aW5nIl0sImFsbG95LnN5c3RlbS5pbml0IjpbImFsbG95LmJhc2UuYmVoYXZpb3VyIiwiZGlzYWJsaW5nIiwidG9nZ2xpbmciLCJyZXByZXNlbnRpbmciXSxpbnB1dDpbImFsbG95LmJhc2UuYmVoYXZpb3VyIiwicmVwcmVzZW50aW5nIiwic3RyZWFtaW5nIiwiaW52YWxpZGF0aW5nIl0sImFsbG95LnN5c3RlbS5kZXRhY2hlZCI6WyJhbGxveS5iYXNlLmJlaGF2aW91ciIsInJlcHJlc2VudGluZyIsIml0ZW0tZXZlbnRzIiwidG9vbHRpcHBpbmciXSxtb3VzZWRvd246WyJmb2N1c2luZyIsImFsbG95LmJhc2UuYmVoYXZpb3VyIiwiaXRlbS10eXBlLWV2ZW50cyJdLHRvdWNoc3RhcnQ6WyJmb2N1c2luZyIsImFsbG95LmJhc2UuYmVoYXZpb3VyIiwiaXRlbS10eXBlLWV2ZW50cyJdLG1vdXNlb3ZlcjpbIml0ZW0tdHlwZS1ldmVudHMiLCJ0b29sdGlwcGluZyJdLCJhbGxveS5yZWNlaXZlIjpbInJlY2VpdmluZyIsInJlZmxlY3RpbmciLCJ0b29sdGlwcGluZyJdfSkpLERuKCkpLFluKCJkb21Nb2RpZmljYXRpb24iKV0pLHQpfSxnaT1mdW5jdGlvbih0LG4pe3ZhciBlPURyKHQsbik7cmV0dXJuIGU9PT11bmRlZmluZWR8fCIiPT09ZT9bXTplLnNwbGl0KCIgIil9LHBpPWZ1bmN0aW9uKHQpe3JldHVybiB0LmRvbSgpLmNsYXNzTGlzdCE9PXVuZGVmaW5lZH0saGk9ZnVuY3Rpb24odCxuKXtyZXR1cm4gcj1uLGk9Z2koZT10LG89ImNsYXNzIikuY29uY2F0KFtyXSksQnIoZSxvLGkuam9pbigiICIpKSwhMDt2YXIgZSxvLHIsaX0sdmk9ZnVuY3Rpb24odCxuKXtyZXR1cm4gcj1uLDA8KGk9UChnaShlPXQsbz0iY2xhc3MiKSxmdW5jdGlvbih0KXtyZXR1cm4gdCE9PXJ9KSkubGVuZ3RoP0JyKGUsbyxpLmpvaW4oIiAiKSk6RnIoZSxvKSwhMTt2YXIgZSxvLHIsaX0sYmk9ZnVuY3Rpb24odCxuKXtwaSh0KT90LmRvbSgpLmNsYXNzTGlzdC5hZGQobik6aGkodCxuKX0seWk9ZnVuY3Rpb24odCl7MD09PShwaSh0KT90LmRvbSgpLmNsYXNzTGlzdDpnaSh0LCJjbGFzcyIpKS5sZW5ndGgmJkZyKHQsImNsYXNzIil9LHhpPWZ1bmN0aW9uKHQsbil7cGkodCk/dC5kb20oKS5jbGFzc0xpc3QucmVtb3ZlKG4pOnZpKHQsbik7eWkodCl9LHdpPWZ1bmN0aW9uKHQsbil7cmV0dXJuIHBpKHQpJiZ0LmRvbSgpLmNsYXNzTGlzdC5jb250YWlucyhuKX0sU2k9ZnVuY3Rpb24obix0KXtpdCh0LGZ1bmN0aW9uKHQpe2JpKG4sdCl9KX0sa2k9ZnVuY3Rpb24obix0KXtpdCh0LGZ1bmN0aW9uKHQpe3hpKG4sdCl9KX0sQ2k9ZnVuY3Rpb24odCl7cmV0dXJuIHQuc3R5bGUhPT11bmRlZmluZWQmJlQodC5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKX0sT2k9ZnVuY3Rpb24odCl7dmFyIG49VHIodCk/dC5kb20oKS5wYXJlbnROb2RlOnQuZG9tKCk7cmV0dXJuIG4hPT11bmRlZmluZWQmJm51bGwhPT1uJiZuLm93bmVyRG9jdW1lbnQuYm9keS5jb250YWlucyhuKX0sX2k9ZnVuY3Rpb24oKXtyZXR1cm4gVGkobGUuZnJvbURvbShudC5kb2N1bWVudCkpfSxUaT1mdW5jdGlvbih0KXt2YXIgbj10LmRvbSgpLmJvZHk7aWYobnVsbD09PW58fG49PT11bmRlZmluZWQpdGhyb3cgbmV3IEVycm9yKCJCb2R5IGlzIG5vdCBhdmFpbGFibGUgeWV0Iik7cmV0dXJuIGxlLmZyb21Eb20obil9LEVpPWZ1bmN0aW9uKHQsbixlKXtpZighUyhlKSl0aHJvdyBudC5jb25zb2xlLmVycm9yKCJJbnZhbGlkIGNhbGwgdG8gQ1NTLnNldC4gUHJvcGVydHkgIixuLCI6OiBWYWx1ZSAiLGUsIjo6IEVsZW1lbnQgIix0KSxuZXcgRXJyb3IoIkNTUyB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nOiAiK2UpO0NpKHQpJiZ0LnN0eWxlLnNldFByb3BlcnR5KG4sZSl9LEJpPWZ1bmN0aW9uKHQsbil7Q2kodCkmJnQuc3R5bGUucmVtb3ZlUHJvcGVydHkobil9LERpPWZ1bmN0aW9uKHQsbixlKXt2YXIgbz10LmRvbSgpO0VpKG8sbixlKX0sTWk9ZnVuY3Rpb24odCxuKXt2YXIgZT10LmRvbSgpO2Z0KG4sZnVuY3Rpb24odCxuKXtFaShlLG4sdCl9KX0sQWk9ZnVuY3Rpb24odCxuKXt2YXIgZT10LmRvbSgpO2Z0KG4sZnVuY3Rpb24odCxuKXt0LmZvbGQoZnVuY3Rpb24oKXtCaShlLG4pfSxmdW5jdGlvbih0KXtFaShlLG4sdCl9KX0pfSxGaT1mdW5jdGlvbih0LG4pe3ZhciBlPXQuZG9tKCksbz1udC53aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlKS5nZXRQcm9wZXJ0eVZhbHVlKG4pO3JldHVybiIiIT09b3x8T2kodCk/bzpJaShlLG4pfSxJaT1mdW5jdGlvbih0LG4pe3JldHVybiBDaSh0KT90LnN0eWxlLmdldFByb3BlcnR5VmFsdWUobik6IiJ9LFJpPWZ1bmN0aW9uKHQsbil7dmFyIGU9dC5kb20oKSxvPUlpKGUsbik7cmV0dXJuIHN0LmZyb20obykuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiAwPHQubGVuZ3RofSl9LFZpPWZ1bmN0aW9uKHQsbixlKXt2YXIgbz1sZS5mcm9tVGFnKHQpO3JldHVybiBEaShvLG4sZSksUmkobyxuKS5pc1NvbWUoKX0sSGk9ZnVuY3Rpb24odCxuKXt2YXIgZT10LmRvbSgpO0JpKGUsbiksTXIodCwic3R5bGUiKS5tYXAoQmUpLmlzKCIiKSYmRnIodCwic3R5bGUiKX0sUGk9ZnVuY3Rpb24odCl7cmV0dXJuIHQuZG9tKCkub2Zmc2V0V2lkdGh9LHppPWZ1bmN0aW9uKHQpe3JldHVybiB0LmRvbSgpLnZhbHVlfSxOaT1mdW5jdGlvbih0LG4pe2lmKG49PT11bmRlZmluZWQpdGhyb3cgbmV3IEVycm9yKCJWYWx1ZS5zZXQgd2FzIHVuZGVmaW5lZCIpO3QuZG9tKCkudmFsdWU9bn0sTGk9ZnVuY3Rpb24odCl7dmFyIG4sZSxvLHI9bGUuZnJvbVRhZyh0LnRhZyk7bj1yLGU9dC5hdHRyaWJ1dGVzLG89bi5kb20oKSxmdChlLGZ1bmN0aW9uKHQsbil7RXIobyxuLHQpfSksU2kocix0LmNsYXNzZXMpLE1pKHIsdC5zdHlsZXMpLHQuaW5uZXJIdG1sLmVhY2goZnVuY3Rpb24odCl7cmV0dXJuIGtyKHIsdCl9KTt2YXIgaT10LmRvbUNoaWxkcmVuO3JldHVybiBicihyLGkpLHQudmFsdWUuZWFjaChmdW5jdGlvbih0KXtOaShyLHQpfSksdC51aWQsR3Iocix0LnVpZCkscn0samk9ZnVuY3Rpb24odCxuKXtyZXR1cm4gZT10LHI9VihvPW4sZnVuY3Rpb24odCl7cmV0dXJuIFFuKHQubmFtZSgpLFt6bigiY29uZmlnIiksWm4oInN0YXRlIixlaSldKX0pLGk9Q24oImNvbXBvbmVudC5iZWhhdmlvdXJzIixsbihyKSxlLmJlaGF2aW91cnMpLmZvbGQoZnVuY3Rpb24odCl7dGhyb3cgbmV3IEVycm9yKFRuKHQpKyJcbkNvbXBsZXRlIHNwZWM6XG4iK0pTT04uc3RyaW5naWZ5KGUsbnVsbCwyKSl9LGZ1bmN0aW9uKHQpe3JldHVybiB0fSkse2xpc3Q6byxkYXRhOmR0KGksZnVuY3Rpb24odCl7dmFyIG49dC5tYXAoZnVuY3Rpb24odCl7cmV0dXJue2NvbmZpZzp0LmNvbmZpZyxzdGF0ZTp0LnN0YXRlLmluaXQodC5jb25maWcpfX0pO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBufX0pfTt2YXIgZSxvLHIsaX0sVWk9ZnVuY3Rpb24odCl7dmFyIG4sZSxvPShuPWJ0KHQsImJlaGF2aW91cnMiKS5nZXRPcih7fSksZT1QKGx0KG4pLGZ1bmN0aW9uKHQpe3JldHVybiBuW3RdIT09dW5kZWZpbmVkfSksVihlLGZ1bmN0aW9uKHQpe3JldHVybiBuW3RdLm1lfSkpO3JldHVybiBqaSh0LG8pfSxXaT1mdW5jdGlvbih0LG4sZSl7dmFyIG8scixpLHU9ZXQoZXQoe30sKG89dCkuZG9tKSx7dWlkOm8udWlkLGRvbUNoaWxkcmVuOlYoby5jb21wb25lbnRzLGZ1bmN0aW9uKHQpe3JldHVybiB0LmVsZW1lbnQoKX0pfSksYT10LmRvbU1vZGlmaWNhdGlvbi5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIGlpKHt9KX0saWkpLGM9eyJhbGxveS5iYXNlLm1vZGlmaWNhdGlvbiI6YX0scz0wPG4ubGVuZ3RoP2Z1bmN0aW9uKG4sdCxlLG8pe3ZhciByPWV0KHt9LHQpO2l0KGUsZnVuY3Rpb24odCl7clt0Lm5hbWUoKV09dC5leGhpYml0KG4sbyl9KTt2YXIgaT1yaShyLGZ1bmN0aW9uKHQsbil7cmV0dXJue25hbWU6dCxtb2RpZmljYXRpb246bn19KSx1PWZ1bmN0aW9uKHQpe3JldHVybiB6KHQsZnVuY3Rpb24odCxuKXtyZXR1cm4gZXQoZXQoe30sbi5tb2RpZmljYXRpb24pLHQpfSx7fSl9LGE9eihpLmNsYXNzZXMsZnVuY3Rpb24odCxuKXtyZXR1cm4gbi5tb2RpZmljYXRpb24uY29uY2F0KHQpfSxbXSksYz11KGkuYXR0cmlidXRlcykscz11KGkuc3R5bGVzKTtyZXR1cm4gaWkoe2NsYXNzZXM6YSxhdHRyaWJ1dGVzOmMsc3R5bGVzOnN9KX0oZSxjLG4sdSk6YTtyZXR1cm4gaT1zLGV0KGV0KHt9LHI9dSkse2F0dHJpYnV0ZXM6ZXQoZXQoe30sci5hdHRyaWJ1dGVzKSxpLmF0dHJpYnV0ZXMpLHN0eWxlczpldChldCh7fSxyLnN0eWxlcyksaS5zdHlsZXMpLGNsYXNzZXM6ci5jbGFzc2VzLmNvbmNhdChpLmNsYXNzZXMpfSl9LEdpPWZ1bmN0aW9uKHQsbixlKXt2YXIgbyxyLGksdT17ImFsbG95LmJhc2UuYmVoYXZpb3VyIjp0LmV2ZW50c307cmV0dXJuIG89ZSxyPXQuZXZlbnRPcmRlcixpPXNpKG8sbix1KSxkaShpLHIpLmdldE9yRGllKCl9LFhpPWZ1bmN0aW9uKHQpe3ZhciBuLGUsbyxyLGksdSxhLGMscyxsLGYsZCxtLGc9cXIodCkscD1nLmV2ZW50cyxoPXkoZyxbImV2ZW50cyJdKSx2PShuPWJ0KGgsImNvbXBvbmVudHMiKS5nZXRPcihbXSksVihuLEppKSksYj1ldChldCh7fSxoKSx7ZXZlbnRzOmV0KGV0KHt9LFByKSxwKSxjb21wb25lbnRzOnZ9KTtyZXR1cm4gb3QudmFsdWUoKG89ZnVuY3Rpb24oKXtyZXR1cm4gbX0scj1jZShKciksaT1PbihtaShlPWIpKSx1PVVpKGUpLGE9dS5saXN0LGM9dS5kYXRhLHM9V2koaSxhLGMpLGw9TGkocyksZj1HaShpLGEsYyksZD1jZShpLmNvbXBvbmVudHMpLG09e2dldFN5c3RlbTpyLmdldCxjb25maWc6ZnVuY3Rpb24odCl7dmFyIG49YztyZXR1cm4oVChuW3QubmFtZSgpXSk/blt0Lm5hbWUoKV06ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIkNvdWxkIG5vdCBmaW5kICIrdC5uYW1lKCkrIiBpbiAiK0pTT04uc3RyaW5naWZ5KGUsbnVsbCwyKSl9KSgpfSxoYXNDb25maWd1cmVkOmZ1bmN0aW9uKHQpe3JldHVybiBUKGNbdC5uYW1lKCldKX0sc3BlYzphdChlKSxyZWFkU3RhdGU6ZnVuY3Rpb24odCl7cmV0dXJuIGNbdF0oKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQuc3RhdGUucmVhZFN0YXRlKCl9KS5nZXRPcigibm90IGVuYWJsZWQiKX0sZ2V0QXBpczpmdW5jdGlvbigpe3JldHVybiBpLmFwaXN9LGNvbm5lY3Q6ZnVuY3Rpb24odCl7ci5zZXQodCl9LGRpc2Nvbm5lY3Q6ZnVuY3Rpb24oKXtyLnNldChLcihvKSl9LGVsZW1lbnQ6YXQobCksc3luY0NvbXBvbmVudHM6ZnVuY3Rpb24oKXt2YXIgdD1kcihsKSxuPVUodCxmdW5jdGlvbih0KXtyZXR1cm4gci5nZXQoKS5nZXRCeURvbSh0KS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuW119LGZ1bmN0aW9uKHQpe3JldHVyblt0XX0pfSk7ZC5zZXQobil9LGNvbXBvbmVudHM6ZC5nZXQsZXZlbnRzOmF0KGYpfSkpfSxZaT1mdW5jdGlvbih0KXt2YXIgbj1sZS5mcm9tVGV4dCh0KTtyZXR1cm4gcWkoe2VsZW1lbnQ6bn0pfSxxaT1mdW5jdGlvbih0KXt2YXIgbj1fbigiZXh0ZXJuYWwuY29tcG9uZW50Iixzbihbem4oImVsZW1lbnQiKSxZbigidWlkIildKSx0KSxlPWNlKEtyKCkpO24udWlkLmVhY2goZnVuY3Rpb24odCl7R3Iobi5lbGVtZW50LHQpfSk7dmFyIG89e2dldFN5c3RlbTplLmdldCxjb25maWc6c3Qubm9uZSxoYXNDb25maWd1cmVkOmF0KCExKSxjb25uZWN0OmZ1bmN0aW9uKHQpe2Uuc2V0KHQpfSxkaXNjb25uZWN0OmZ1bmN0aW9uKCl7ZS5zZXQoS3IoZnVuY3Rpb24oKXtyZXR1cm4gb30pKX0sZ2V0QXBpczpmdW5jdGlvbigpe3JldHVybnt9fSxlbGVtZW50OmF0KG4uZWxlbWVudCksc3BlYzphdCh0KSxyZWFkU3RhdGU6YXQoIk5vIHN0YXRlIiksc3luY0NvbXBvbmVudHM6Wixjb21wb25lbnRzOmF0KFtdKSxldmVudHM6YXQoe30pfTtyZXR1cm4gdGkobyl9LEtpPVlyLEppPWZ1bmN0aW9uKG4pe3JldHVybiBidChuLFpyKS5mb2xkKGZ1bmN0aW9uKCl7dmFyIHQ9bi5oYXNPd25Qcm9wZXJ0eSgidWlkIik/bjpldCh7dWlkOktpKCIiKX0sbik7cmV0dXJuIFhpKHQpLmdldE9yRGllKCl9LGZ1bmN0aW9uKHQpe3JldHVybiB0fSl9LCRpPXRpO2Z1bmN0aW9uIFFpKG8scil7dmFyIHQ9ZnVuY3Rpb24odCl7dmFyIG49cih0KTtpZihuPD0wfHxudWxsPT09bil7dmFyIGU9RmkodCxvKTtyZXR1cm4gcGFyc2VGbG9hdChlKXx8MH1yZXR1cm4gbn0saT1mdW5jdGlvbihyLHQpe3JldHVybiBOKHQsZnVuY3Rpb24odCxuKXt2YXIgZT1GaShyLG4pLG89ZT09PXVuZGVmaW5lZD8wOnBhcnNlSW50KGUsMTApO3JldHVybiBpc05hTihvKT90OnQrb30sMCl9O3JldHVybntzZXQ6ZnVuY3Rpb24odCxuKXtpZighcnQobikmJiFuLm1hdGNoKC9eWzAtOV0rJC8pKXRocm93IG5ldyBFcnJvcihvKyIuc2V0IGFjY2VwdHMgb25seSBwb3NpdGl2ZSBpbnRlZ2VyIHZhbHVlcy4gVmFsdWUgd2FzICIrbik7dmFyIGU9dC5kb20oKTtDaShlKSYmKGUuc3R5bGVbb109bisicHgiKX0sZ2V0OnQsZ2V0T3V0ZXI6dCxhZ2dyZWdhdGU6aSxtYXg6ZnVuY3Rpb24odCxuLGUpe3ZhciBvPWkodCxlKTtyZXR1cm4gbzxuP24tbzowfX19dmFyIFppPVFpKCJoZWlnaHQiLGZ1bmN0aW9uKHQpe3ZhciBuPXQuZG9tKCk7cmV0dXJuIE9pKHQpP24uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0Om4ub2Zmc2V0SGVpZ2h0fSksdHU9ZnVuY3Rpb24odCl7cmV0dXJuIFppLmdldCh0KX0sbnU9ZnVuY3Rpb24odCl7cmV0dXJuIFppLmdldE91dGVyKHQpfSxldT1mdW5jdGlvbihlLG8pe3JldHVybntsZWZ0OmF0KGUpLHRvcDphdChvKSx0cmFuc2xhdGU6ZnVuY3Rpb24odCxuKXtyZXR1cm4gZXUoZSt0LG8rbil9fX0sb3U9ZXUscnU9ZnVuY3Rpb24odCxuKXtyZXR1cm4gdCE9PXVuZGVmaW5lZD90Om4hPT11bmRlZmluZWQ/bjowfSxpdT1mdW5jdGlvbih0KXt2YXIgbj10LmRvbSgpLm93bmVyRG9jdW1lbnQsZT1uLmJvZHksbz1uLmRlZmF1bHRWaWV3LHI9bi5kb2N1bWVudEVsZW1lbnQ7aWYoZT09PXQuZG9tKCkpcmV0dXJuIG91KGUub2Zmc2V0TGVmdCxlLm9mZnNldFRvcCk7dmFyIGk9cnUoby5wYWdlWU9mZnNldCxyLnNjcm9sbFRvcCksdT1ydShvLnBhZ2VYT2Zmc2V0LHIuc2Nyb2xsTGVmdCksYT1ydShyLmNsaWVudFRvcCxlLmNsaWVudFRvcCksYz1ydShyLmNsaWVudExlZnQsZS5jbGllbnRMZWZ0KTtyZXR1cm4gdXUodCkudHJhbnNsYXRlKHUtYyxpLWEpfSx1dT1mdW5jdGlvbih0KXt2YXIgbixlPXQuZG9tKCksbz1lLm93bmVyRG9jdW1lbnQuYm9keTtyZXR1cm4gbz09PWU/b3Uoby5vZmZzZXRMZWZ0LG8ub2Zmc2V0VG9wKTpPaSh0KT8obj1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG91KG4ubGVmdCxuLnRvcCkpOm91KDAsMCl9LGF1PVFpKCJ3aWR0aCIsZnVuY3Rpb24odCl7cmV0dXJuIHQuZG9tKCkub2Zmc2V0V2lkdGh9KSxjdT1mdW5jdGlvbih0KXtyZXR1cm4gYXUuZ2V0KHQpfSxzdT1mdW5jdGlvbih0KXtyZXR1cm4gYXUuZ2V0T3V0ZXIodCl9LGx1PWZ1bmN0aW9uKHQpe3ZhciBuLGUsbyxyLGksdSxhLGM9bGUuZnJvbURvbSh0LnRhcmdldCkscz1mdW5jdGlvbigpe3JldHVybiB0LnN0b3BQcm9wYWdhdGlvbigpfSxsPWZ1bmN0aW9uKCl7cmV0dXJuIHQucHJldmVudERlZmF1bHQoKX0sZj1kKGwscyk7cmV0dXJuIG49YyxlPXQuY2xpZW50WCxvPXQuY2xpZW50WSxyPXMsaT1sLHU9ZixhPXQse3RhcmdldDphdChuKSx4OmF0KGUpLHk6YXQobyksc3RvcDpyLHByZXZlbnQ6aSxraWxsOnUscmF3OmF0KGEpfX0sZnU9ZnVuY3Rpb24odCxuLGUsbyxyKXt2YXIgaSx1LGE9KGk9ZSx1PW8sZnVuY3Rpb24odCl7aSh0KSYmdShsdSh0KSl9KTtyZXR1cm4gdC5kb20oKS5hZGRFdmVudExpc3RlbmVyKG4sYSxyKSx7dW5iaW5kOmcoZHUsdCxuLGEscil9fSxkdT1mdW5jdGlvbih0LG4sZSxvKXt0LmRvbSgpLnJlbW92ZUV2ZW50TGlzdGVuZXIobixlLG8pfSxtdT1mdW5jdGlvbih0KXt2YXIgbj10IT09dW5kZWZpbmVkP3QuZG9tKCk6bnQuZG9jdW1lbnQsZT1uLmJvZHkuc2Nyb2xsTGVmdHx8bi5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCxvPW4uYm9keS5zY3JvbGxUb3B8fG4uZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcDtyZXR1cm4gb3UoZSxvKX0sZ3U9ZnVuY3Rpb24odCxuLGUpeyhlIT09dW5kZWZpbmVkP2UuZG9tKCk6bnQuZG9jdW1lbnQpLmRlZmF1bHRWaWV3LnNjcm9sbFRvKHQsbil9LHB1PWZ1bmN0aW9uKHQsbixlLG8pe3JldHVybnt4OnQseTpuLHdpZHRoOmUsaGVpZ2h0Om8scmlnaHQ6dCtlLGJvdHRvbTpuK299fSxodT1mdW5jdGlvbih0KXt2YXIgbixlLG89dD09PXVuZGVmaW5lZD9udC53aW5kb3c6dCxyPW8uZG9jdW1lbnQsaT1tdShsZS5mcm9tRG9tKHIpKTtyZXR1cm4gZT0obj1vKT09PXVuZGVmaW5lZD9udC53aW5kb3c6bixzdC5mcm9tKGUudmlzdWFsVmlld3BvcnQpLmZvbGQoZnVuY3Rpb24oKXt2YXIgdD1vLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxuPXQuY2xpZW50V2lkdGgsZT10LmNsaWVudEhlaWdodDtyZXR1cm4gcHUoaS5sZWZ0KCksaS50b3AoKSxuLGUpfSxmdW5jdGlvbih0KXtyZXR1cm4gcHUoTWF0aC5tYXgodC5wYWdlTGVmdCxpLmxlZnQoKSksTWF0aC5tYXgodC5wYWdlVG9wLGkudG9wKCkpLHQud2lkdGgsdC5oZWlnaHQpfSl9LHZ1PWZ1bmN0aW9uKG8sdCl7cmV0dXJuIG8udmlldyh0KS5mb2xkKGF0KFtdKSxmdW5jdGlvbih0KXt2YXIgbj1vLm93bmVyKHQpLGU9dnUobyxuKTtyZXR1cm5bdF0uY29uY2F0KGUpfSl9LGJ1PS8qICovT2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsdmlldzpmdW5jdGlvbih0KXtyZXR1cm4odC5kb20oKT09PW50LmRvY3VtZW50P3N0Lm5vbmUoKTpzdC5mcm9tKHQuZG9tKCkuZGVmYXVsdFZpZXcuZnJhbWVFbGVtZW50KSkubWFwKGxlLmZyb21Eb20pfSxvd25lcjpmdW5jdGlvbih0KXtyZXR1cm4gYXIodCl9fSkseXU9ZnVuY3Rpb24obyl7dmFyIHQsbixlLHIsaT1sZS5mcm9tRG9tKG50LmRvY3VtZW50KSx1PW11KGkpO3JldHVybih0PW8sZT0obj1idSkub3duZXIodCkscj12dShuLGUpLHN0LnNvbWUocikpLmZvbGQoZyhpdSxvKSxmdW5jdGlvbih0KXt2YXIgbj11dShvKSxlPXoodCxmdW5jdGlvbih0LG4pe3ZhciBlPXV1KG4pO3JldHVybntsZWZ0OnQubGVmdCtlLmxlZnQoKSx0b3A6dC50b3ArZS50b3AoKX19LHtsZWZ0OjAsdG9wOjB9KTtyZXR1cm4gb3UoZS5sZWZ0K24ubGVmdCgpK3UubGVmdCgpLGUudG9wK24udG9wKCkrdS50b3AoKSl9KX0seHU9ZnVuY3Rpb24odCxuLGUsbyl7cmV0dXJue3g6dCx5Om4sd2lkdGg6ZSxoZWlnaHQ6byxyaWdodDp0K2UsYm90dG9tOm4rb319LHd1PWZ1bmN0aW9uKHQpe3ZhciBuPWl1KHQpLGU9c3UodCksbz1udSh0KTtyZXR1cm4geHUobi5sZWZ0KCksbi50b3AoKSxlLG8pfSxTdT1mdW5jdGlvbih0KXt2YXIgbj15dSh0KSxlPXN1KHQpLG89bnUodCk7cmV0dXJuIHh1KG4ubGVmdCgpLG4udG9wKCksZSxvKX0sa3U9ZnVuY3Rpb24oKXtyZXR1cm4gaHUobnQud2luZG93KX07ZnVuY3Rpb24gQ3UodCxuLGUsbyxyKXtyZXR1cm4gdChlLG8pP3N0LnNvbWUoZSk6VChyKSYmcihlKT9zdC5ub25lKCk6bihlLG8scil9dmFyIE91LF91LFR1PWZ1bmN0aW9uKHQsbixlKXtmb3IodmFyIG89dC5kb20oKSxyPVQoZSk/ZTphdCghMSk7by5wYXJlbnROb2RlOyl7bz1vLnBhcmVudE5vZGU7dmFyIGk9bGUuZnJvbURvbShvKTtpZihuKGkpKXJldHVybiBzdC5zb21lKGkpO2lmKHIoaSkpYnJlYWt9cmV0dXJuIHN0Lm5vbmUoKX0sRXU9ZnVuY3Rpb24odCxuLGUpe3JldHVybiBDdShmdW5jdGlvbih0LG4pe3JldHVybiBuKHQpfSxUdSx0LG4sZSl9LEJ1PWZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gRXUodCxuLGUpLmlzU29tZSgpfSxEdT1mdW5jdGlvbih0LG4sZSl7cmV0dXJuIFR1KHQsZnVuY3Rpb24odCl7cmV0dXJuIHplKHQsbil9LGUpfSxNdT1mdW5jdGlvbih0LG4pe3JldHVybiBlPW4scj0obz10KT09PXVuZGVmaW5lZD9udC5kb2N1bWVudDpvLmRvbSgpLE5lKHIpP3N0Lm5vbmUoKTpzdC5mcm9tKHIucXVlcnlTZWxlY3RvcihlKSkubWFwKGxlLmZyb21Eb20pO3ZhciBlLG8scn0sQXU9ZnVuY3Rpb24odCxuLGUpe3JldHVybiBDdShmdW5jdGlvbih0LG4pe3JldHVybiB6ZSh0LG4pfSxEdSx0LG4sZSl9LEZ1PWZ1bmN0aW9uKCl7dmFyIG49TnIoImFyaWEtb3ducyIpO3JldHVybntpZDpuLGxpbms6ZnVuY3Rpb24odCl7QnIodCwiYXJpYS1vd25zIixuKX0sdW5saW5rOmZ1bmN0aW9uKHQpe0ZyKHQsImFyaWEtb3ducyIpfX19LEl1PWZ1bmN0aW9uKG4sdCl7cmV0dXJuIEV1KHQsZnVuY3Rpb24odCl7aWYoIV9yKHQpKXJldHVybiExO3ZhciBuPURyKHQsImlkIik7cmV0dXJuIG4hPT11bmRlZmluZWQmJi0xPG4uaW5kZXhPZigiYXJpYS1vd25zIil9KS5iaW5kKGZ1bmN0aW9uKHQpe3ZhciBuPURyKHQsImlkIiksZT1hcih0KTtyZXR1cm4gTXUoZSwnW2FyaWEtb3ducz0iJytuKyciXScpfSkuZXhpc3RzKGZ1bmN0aW9uKHQpe3JldHVybiBSdShuLHQpfSl9LFJ1PWZ1bmN0aW9uKG4sdCl7cmV0dXJuIEJ1KHQsZnVuY3Rpb24odCl7cmV0dXJuIExlKHQsbi5lbGVtZW50KCkpfSxhdCghMSkpfHxJdShuLHQpfSxWdT0idW5rbm93biI7KF91PU91PU91fHx7fSlbX3UuU1RPUD0wXT0iU1RPUCIsX3VbX3UuTk9STUFMPTFdPSJOT1JNQUwiLF91W191LkxPR0dJTkc9Ml09IkxPR0dJTkciO3ZhciBIdSxQdSx6dT1jZSh7fSksTnU9ZnVuY3Rpb24obix0LGUpe3ZhciBvLHIsaSx1O3N3aXRjaChidCh6dS5nZXQoKSxuKS5vclRodW5rKGZ1bmN0aW9uKCl7dmFyIHQ9bHQoenUuZ2V0KCkpO3JldHVybiBRKHQsZnVuY3Rpb24odCl7cmV0dXJuLTE8bi5pbmRleE9mKHQpP3N0LnNvbWUoenUuZ2V0KClbdF0pOnN0Lm5vbmUoKX0pfSkuZ2V0T3IoT3UuTk9STUFMKSl7Y2FzZSBPdS5OT1JNQUw6cmV0dXJuIGUoVXUoKSk7Y2FzZSBPdS5MT0dHSU5HOnZhciBhPShvPW4scj10LGk9W10sdT0obmV3IERhdGUpLmdldFRpbWUoKSx7bG9nRXZlbnRDdXQ6ZnVuY3Rpb24odCxuLGUpe2kucHVzaCh7b3V0Y29tZToiY3V0Iix0YXJnZXQ6bixwdXJwb3NlOmV9KX0sbG9nRXZlbnRTdG9wcGVkOmZ1bmN0aW9uKHQsbixlKXtpLnB1c2goe291dGNvbWU6InN0b3BwZWQiLHRhcmdldDpuLHB1cnBvc2U6ZX0pfSxsb2dOb1BhcmVudDpmdW5jdGlvbih0LG4sZSl7aS5wdXNoKHtvdXRjb21lOiJuby1wYXJlbnQiLHRhcmdldDpuLHB1cnBvc2U6ZX0pfSxsb2dFdmVudE5vSGFuZGxlcnM6ZnVuY3Rpb24odCxuKXtpLnB1c2goe291dGNvbWU6Im5vLWhhbmRsZXJzLWxlZnQiLHRhcmdldDpufSl9LGxvZ0V2ZW50UmVzcG9uc2U6ZnVuY3Rpb24odCxuLGUpe2kucHVzaCh7b3V0Y29tZToicmVzcG9uc2UiLHB1cnBvc2U6ZSx0YXJnZXQ6bn0pfSx3cml0ZTpmdW5jdGlvbigpe3ZhciB0PShuZXcgRGF0ZSkuZ2V0VGltZSgpO0YoWyJtb3VzZW1vdmUiLCJtb3VzZW92ZXIiLCJtb3VzZW91dCIsX28oKV0sbyl8fG50LmNvbnNvbGUubG9nKG8se2V2ZW50Om8sdGltZTp0LXUsdGFyZ2V0OnIuZG9tKCksc2VxdWVuY2U6VihpLGZ1bmN0aW9uKHQpe3JldHVybiBGKFsiY3V0Iiwic3RvcHBlZCIsInJlc3BvbnNlIl0sdC5vdXRjb21lKT8ieyIrdC5wdXJwb3NlKyJ9ICIrdC5vdXRjb21lKyIgYXQgKCIrVnIodC50YXJnZXQpKyIpIjp0Lm91dGNvbWV9KX0pfX0pLGM9ZShhKTtyZXR1cm4gYS53cml0ZSgpLGM7Y2FzZSBPdS5TVE9QOnJldHVybiEwfX0sTHU9WyJhbGxveS9kYXRhL0ZpZWxkcyIsImFsbG95L2RlYnVnZ2luZy9EZWJ1Z2dpbmciXSxqdT1mdW5jdGlvbih0LG4sZSl7cmV0dXJuIE51KHQsbixlKX0sVXU9YXQoe2xvZ0V2ZW50Q3V0OlosbG9nRXZlbnRTdG9wcGVkOlosbG9nTm9QYXJlbnQ6Wixsb2dFdmVudE5vSGFuZGxlcnM6Wixsb2dFdmVudFJlc3BvbnNlOlosd3JpdGU6Wn0pLFd1PWF0KFt6bigibWVudSIpLHpuKCJzZWxlY3RlZE1lbnUiKV0pLEd1PWF0KFt6bigiaXRlbSIpLHpuKCJzZWxlY3RlZEl0ZW0iKV0pLFh1PShhdChsbihHdSgpLmNvbmNhdChXdSgpKSkpLGF0KGxuKEd1KCkpKSksWXU9V24oImluaXRTaXplIixbem4oIm51bUNvbHVtbnMiKSx6bigibnVtUm93cyIpXSkscXU9ZnVuY3Rpb24oKXtyZXR1cm4gV24oIm1hcmtlcnMiLFt6bigiYmFja2dyb3VuZE1lbnUiKV0uY29uY2F0KFd1KCkpLmNvbmNhdChHdSgpKSl9LEt1PWZ1bmN0aW9uKHQpe3JldHVybiBXbigibWFya2VycyIsVih0LHpuKSl9LEp1PWZ1bmN0aW9uKHQsbixlKXshZnVuY3Rpb24oKXt2YXIgdD1uZXcgRXJyb3I7aWYodC5zdGFjaz09PXVuZGVmaW5lZClyZXR1cm47dmFyIG49dC5zdGFjay5zcGxpdCgiXG4iKTtMKG4sZnVuY3Rpb24obil7cmV0dXJuIDA8bi5pbmRleE9mKCJhbGxveSIpJiYhSShMdSxmdW5jdGlvbih0KXtyZXR1cm4tMTxuLmluZGV4T2YodCl9KX0pLmdldE9yKFZ1KX0oKTtyZXR1cm4gaG4obixuLGUsU24oZnVuY3Rpb24oZSl7cmV0dXJuIG90LnZhbHVlKGZ1bmN0aW9uKCl7Zm9yKHZhciB0PVtdLG49MDtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXRbbl09YXJndW1lbnRzW25dO3JldHVybiBlLmFwcGx5KHVuZGVmaW5lZCx0KX0pfSkpfSwkdT1mdW5jdGlvbih0KXtyZXR1cm4gSnUoMCx0LGp0KFopKX0sUXU9ZnVuY3Rpb24odCl7cmV0dXJuIEp1KDAsdCxqdChzdC5ub25lKSl9LFp1PWZ1bmN0aW9uKHQpe3JldHVybiBKdSgwLHQsVXQoKSl9LHRhPWZ1bmN0aW9uKHQpe3JldHVybiBKdSgwLHQsVXQoKSl9LG5hPWZ1bmN0aW9uKHQsbil7cmV0dXJuIGFlKHQsYXQobikpfSxlYT1mdW5jdGlvbih0KXtyZXR1cm4gYWUodCxjdCl9LG9hPWF0KFl1KSxyYT1mdW5jdGlvbih0LG4sZSxvLHIsaSl7cmV0dXJue3g6YXQodCkseTphdChuKSxidWJibGU6YXQoZSksZGlyZWN0aW9uOmF0KG8pLGJvdW5kc1Jlc3RyaWN0aW9uOmF0KHIpLGxhYmVsOmF0KGkpfX0saWE9d3QoW3tzb3V0aGVhc3Q6W119LHtzb3V0aHdlc3Q6W119LHtub3J0aGVhc3Q6W119LHtub3J0aHdlc3Q6W119LHtzb3V0aDpbXX0se25vcnRoOltdfSx7ZWFzdDpbXX0se3dlc3Q6W119XSksdWE9aWEuc291dGhlYXN0LGFhPWlhLnNvdXRod2VzdCxjYT1pYS5ub3J0aGVhc3Qsc2E9aWEubm9ydGh3ZXN0LGxhPWlhLnNvdXRoLGZhPWlhLm5vcnRoLGRhPWlhLmVhc3QsbWE9aWEud2VzdCxnYT1mdW5jdGlvbihuLGUpe3JldHVybiBmdW5jdGlvbih0LG4pe2Zvcih2YXIgZT17fSxvPTAscj10Lmxlbmd0aDtvPHI7bysrKXt2YXIgaT10W29dO2VbU3RyaW5nKGkpXT1uKGksbyl9cmV0dXJuIGV9KFsibGVmdCIsInJpZ2h0IiwidG9wIiwiYm90dG9tIl0sZnVuY3Rpb24odCl7cmV0dXJuIGJ0KGUsdCkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbih0LG4pe3N3aXRjaChuKXtjYXNlIDE6cmV0dXJuIHQueDtjYXNlIDA6cmV0dXJuIHQueCt0LndpZHRoO2Nhc2UgMjpyZXR1cm4gdC55O2Nhc2UgMzpyZXR1cm4gdC55K3QuaGVpZ2h0fX0obix0KX0pfSl9LHBhPWZ1bmN0aW9uKHQpe3JldHVybiB0Lnh9LGhhPWZ1bmN0aW9uKHQsbil7cmV0dXJuIHQueCt0LndpZHRoLzItbi53aWR0aC8yfSx2YT1mdW5jdGlvbih0LG4pe3JldHVybiB0LngrdC53aWR0aC1uLndpZHRofSxiYT1mdW5jdGlvbih0LG4pe3JldHVybiB0Lnktbi5oZWlnaHR9LHlhPWZ1bmN0aW9uKHQpe3JldHVybiB0LnkrdC5oZWlnaHR9LHhhPWZ1bmN0aW9uKHQsbil7cmV0dXJuIHQueSt0LmhlaWdodC8yLW4uaGVpZ2h0LzJ9LHdhPWZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gcmEocGEodCkseWEodCksZS5zb3V0aGVhc3QoKSx1YSgpLGdhKHQse2xlZnQ6MSx0b3A6M30pLCJsYXlvdXQtc2UiKX0sU2E9ZnVuY3Rpb24odCxuLGUpe3JldHVybiByYSh2YSh0LG4pLHlhKHQpLGUuc291dGh3ZXN0KCksYWEoKSxnYSh0LHtyaWdodDowLHRvcDozfSksImxheW91dC1zdyIpfSxrYT1mdW5jdGlvbih0LG4sZSl7cmV0dXJuIHJhKHBhKHQpLGJhKHQsbiksZS5ub3J0aGVhc3QoKSxjYSgpLGdhKHQse2xlZnQ6MSxib3R0b206Mn0pLCJsYXlvdXQtbmUiKX0sQ2E9ZnVuY3Rpb24odCxuLGUpe3JldHVybiByYSh2YSh0LG4pLGJhKHQsbiksZS5ub3J0aHdlc3QoKSxzYSgpLGdhKHQse3JpZ2h0OjAsYm90dG9tOjJ9KSwibGF5b3V0LW53Iil9LE9hPWZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gcmEoaGEodCxuKSxiYSh0LG4pLGUubm9ydGgoKSxmYSgpLGdhKHQse2JvdHRvbToyfSksImxheW91dC1uIil9LF9hPWZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gcmEoaGEodCxuKSx5YSh0KSxlLnNvdXRoKCksbGEoKSxnYSh0LHt0b3A6M30pLCJsYXlvdXQtcyIpfSxUYT1mdW5jdGlvbih0LG4sZSl7cmV0dXJuIHJhKChvPXQpLngrby53aWR0aCx4YSh0LG4pLGUuZWFzdCgpLGRhKCksZ2EodCx7bGVmdDowfSksImxheW91dC1lIik7dmFyIG99LEVhPWZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gcmEoKG89bix0Lngtby53aWR0aCkseGEodCxuKSxlLndlc3QoKSxtYSgpLGdhKHQse3JpZ2h0OjF9KSwibGF5b3V0LXciKTt2YXIgb30sQmE9ZnVuY3Rpb24oKXtyZXR1cm5bd2EsU2Esa2EsQ2EsX2EsT2EsVGEsRWFdfSxEYT1mdW5jdGlvbigpe3JldHVybltTYSx3YSxDYSxrYSxfYSxPYSxUYSxFYV19LE1hPWZ1bmN0aW9uKCl7cmV0dXJuW2thLENhLHdhLFNhLE9hLF9hXX0sQWE9ZnVuY3Rpb24oKXtyZXR1cm5bd2EsU2Esa2EsQ2EsX2EsT2FdfSxGYT1mdW5jdGlvbigpe3JldHVybltTYSx3YSxDYSxrYSxfYSxPYV19LElhPWZ1bmN0aW9uKGUsbyxyKXtyZXR1cm4gaXIoZnVuY3Rpb24odCxuKXtyKHQsZSxvKX0pfSxSYT1mdW5jdGlvbih0LG4sZSxvLHIsaSl7dmFyIHU9c24odCksYT1RbihuLFtxbigiY29uZmlnIixzbih0KSldKTtyZXR1cm4gUGEodSxhLG4sZSxvLHIsaSl9LFZhPWZ1bmN0aW9uKHIsaSx1KXt2YXIgdCxuLGUsbyxhLGM7cmV0dXJuIHQ9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXRbbi0xXT1hcmd1bWVudHNbbl07dmFyIG89W2VdLmNvbmNhdCh0KTtyZXR1cm4gZS5jb25maWcoe25hbWU6YXQocil9KS5mb2xkKGZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJXZSBjb3VsZCBub3QgZmluZCBhbnkgYmVoYXZpb3VyIGNvbmZpZ3VyYXRpb24gZm9yOiAiK3IrIi4gVXNpbmcgQVBJOiAiK3UpfSxmdW5jdGlvbih0KXt2YXIgbj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChvLDEpO3JldHVybiBpLmFwcGx5KHVuZGVmaW5lZCxbZSx0LmNvbmZpZyx0LnN0YXRlXS5jb25jYXQobikpfSl9LG49dSxlPWkudG9TdHJpbmcoKSxvPWUuaW5kZXhPZigiKSIpKzEsYT1lLmluZGV4T2YoIigiKSxjPWUuc3Vic3RyaW5nKGErMSxvLTEpLnNwbGl0KC8sXHMqLyksdC50b0Z1bmN0aW9uQW5ub3RhdGlvbj1mdW5jdGlvbigpe3JldHVybntuYW1lOm4scGFyYW1ldGVyczokcihjLnNsaWNlKDAsMSkuY29uY2F0KGMuc2xpY2UoMykpKX19LHR9LEhhPWZ1bmN0aW9uKHQpe3JldHVybntrZXk6dCx2YWx1ZTp1bmRlZmluZWR9fSxQYT1mdW5jdGlvbihlLHQsbyxyLG4saSx1KXt2YXIgYT1mdW5jdGlvbih0KXtyZXR1cm4geHQodCxvKT90W29dKCk6c3Qubm9uZSgpfSxjPWR0KG4sZnVuY3Rpb24odCxuKXtyZXR1cm4gVmEobyx0LG4pfSkscz1kdChpLGZ1bmN0aW9uKHQsbil7cmV0dXJuIFFyKHQsbil9KSxsPWV0KGV0KGV0KHt9LHMpLGMpLHtyZXZva2U6ZyhIYSxvKSxjb25maWc6ZnVuY3Rpb24odCl7dmFyIG49X24obysiLWNvbmZpZyIsZSx0KTtyZXR1cm57a2V5Om8sdmFsdWU6e2NvbmZpZzpuLG1lOmwsY29uZmlnQXNSYXc6X3QoZnVuY3Rpb24oKXtyZXR1cm4gX24obysiLWNvbmZpZyIsZSx0KX0pLGluaXRpYWxDb25maWc6dCxzdGF0ZTp1fX19LHNjaGVtYTpmdW5jdGlvbigpe3JldHVybiB0fSxleGhpYml0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGEodCkuYmluZChmdW5jdGlvbihuKXtyZXR1cm4gYnQociwiZXhoaWJpdCIpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdChlLG4uY29uZmlnLG4uc3RhdGUpfSl9KS5nZXRPcihpaSh7fSkpfSxuYW1lOmZ1bmN0aW9uKCl7cmV0dXJuIG99LGhhbmRsZXJzOmZ1bmN0aW9uKHQpe3JldHVybiBhKHQpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gYnQociwiZXZlbnRzIikuZ2V0T3IoZnVuY3Rpb24oKXtyZXR1cm57fX0pKHQuY29uZmlnLHQuc3RhdGUpfSkuZ2V0T3Ioe30pfX0pO3JldHVybiBsfSx6YT1mdW5jdGlvbih0KXtyZXR1cm4gSnQodCl9LE5hPXNuKFt6bigiZmllbGRzIiksem4oIm5hbWUiKSxabigiYWN0aXZlIix7fSksWm4oImFwaXMiLHt9KSxabigic3RhdGUiLGVpKSxabigiZXh0cmEiLHt9KV0pLExhPWZ1bmN0aW9uKHQpe3ZhciBuPV9uKCJDcmVhdGluZyBiZWhhdmlvdXI6ICIrdC5uYW1lLE5hLHQpO3JldHVybiBSYShuLmZpZWxkcyxuLm5hbWUsbi5hY3RpdmUsbi5hcGlzLG4uZXh0cmEsbi5zdGF0ZSl9LGphPXNuKFt6bigiYnJhbmNoS2V5Iiksem4oImJyYW5jaGVzIiksem4oIm5hbWUiKSxabigiYWN0aXZlIix7fSksWm4oImFwaXMiLHt9KSxabigic3RhdGUiLGVpKSxabigiZXh0cmEiLHt9KV0pLFVhPWZ1bmN0aW9uKHQpe3ZhciBuLGUsbyxyLGksdSxhLGMscz1fbigiQ3JlYXRpbmcgYmVoYXZpb3VyOiAiK3QubmFtZSxqYSx0KTtyZXR1cm4gbj1CbihzLmJyYW5jaEtleSxzLmJyYW5jaGVzKSxlPXMubmFtZSxvPXMuYWN0aXZlLHI9cy5hcGlzLGk9cy5leHRyYSx1PXMuc3RhdGUsYz1RbihlLFtxbigiY29uZmlnIixhPW4pXSksUGEoYSxjLGUsbyxyLGksdSl9LFdhPWF0KHVuZGVmaW5lZCksR2E9LyogKi9PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxldmVudHM6ZnVuY3Rpb24oYyl7cmV0dXJuIFlvKFtKbyh5bygpLGZ1bmN0aW9uKHIsdCl7dmFyIG4sZSxpPWMuY2hhbm5lbHMsbz1sdChpKSx1PXQsYT0obj1vLChlPXUpLnVuaXZlcnNhbCgpP246UChuLGZ1bmN0aW9uKHQpe3JldHVybiBGKGUuY2hhbm5lbHMoKSx0KX0pKTtpdChhLGZ1bmN0aW9uKHQpe3ZhciBuPWlbdF0sZT1uLnNjaGVtYSxvPV9uKCJjaGFubmVsWyIrdCsiXSBkYXRhXG5SZWNlaXZlcjogIitWcihyLmVsZW1lbnQoKSksZSx1LmRhdGEoKSk7bi5vblJlY2VpdmUocixvKX0pfSldKX19KSxYYT1bTm4oImNoYW5uZWxzIixrbihvdC52YWx1ZSxzbihbWnUoIm9uUmVjZWl2ZSIpLFpuKCJzY2hlbWEiLERuKCkpXSkpKV0sWWE9TGEoe2ZpZWxkczpYYSxuYW1lOiJyZWNlaXZpbmciLGFjdGl2ZTpHYX0pLHFhPS8qICovT2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsZXhoaWJpdDpmdW5jdGlvbih0LG4pe3JldHVybiBpaSh7Y2xhc3NlczpbXSxzdHlsZXM6bi51c2VGaXhlZCgpP3t9Ontwb3NpdGlvbjoicmVsYXRpdmUifX0pfX0pLEthPWZ1bmN0aW9uKHQpe3JldHVybiB0LmRvbSgpLmZvY3VzKCl9LEphPWZ1bmN0aW9uKHQpe3ZhciBuPXQhPT11bmRlZmluZWQ/dC5kb20oKTpudC5kb2N1bWVudDtyZXR1cm4gc3QuZnJvbShuLmFjdGl2ZUVsZW1lbnQpLm1hcChsZS5mcm9tRG9tKX0sJGE9ZnVuY3Rpb24obil7cmV0dXJuIEphKGFyKG4pKS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIG4uZG9tKCkuY29udGFpbnModC5kb20oKSl9KX0sUWE9ZnVuY3Rpb24odCxlKXt2YXIgbz1hcihlKSxuPUphKG8pLmJpbmQoZnVuY3Rpb24obil7dmFyIHIsaSx0PWZ1bmN0aW9uKHQpe3JldHVybiBMZShuLHQpfTtyZXR1cm4gdChlKT9zdC5zb21lKGUpOihyPXQsKGk9ZnVuY3Rpb24odCl7Zm9yKHZhciBuPTA7bjx0LmNoaWxkTm9kZXMubGVuZ3RoO24rKyl7dmFyIGU9bGUuZnJvbURvbSh0LmNoaWxkTm9kZXNbbl0pO2lmKHIoZSkpcmV0dXJuIHN0LnNvbWUoZSk7dmFyIG89aSh0LmNoaWxkTm9kZXNbbl0pO2lmKG8uaXNTb21lKCkpcmV0dXJuIG99cmV0dXJuIHN0Lm5vbmUoKX0pKGUuZG9tKCkpKX0pLHI9dChlKTtyZXR1cm4gbi5lYWNoKGZ1bmN0aW9uKG4pe0phKG8pLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gTGUodCxuKX0pLmZvbGQoZnVuY3Rpb24oKXtLYShuKX0sWil9KSxyfSxaYT1mdW5jdGlvbih0LG4sZSxvLHIpe3JldHVybntwb3NpdGlvbjphdCh0KSxsZWZ0OmF0KG4pLHRvcDphdChlKSxyaWdodDphdChvKSxib3R0b206YXQocil9fSx0Yz1mdW5jdGlvbih0LG4pe3ZhciBlPWZ1bmN0aW9uKHQpe3JldHVybiB0KyJweCJ9O0FpKHQse3Bvc2l0aW9uOnN0LnNvbWUobi5wb3NpdGlvbigpKSxsZWZ0Om4ubGVmdCgpLm1hcChlKSx0b3A6bi50b3AoKS5tYXAoZSkscmlnaHQ6bi5yaWdodCgpLm1hcChlKSxib3R0b206bi5ib3R0b20oKS5tYXAoZSl9KX0sbmM9d3QoW3tub25lOltdfSx7cmVsYXRpdmU6WyJ4IiwieSIsIndpZHRoIiwiaGVpZ2h0Il19LHtmaXhlZDpbIngiLCJ5Iiwid2lkdGgiLCJoZWlnaHQiXX1dKSxlYz1mdW5jdGlvbih0LG4sZSxvLHIsaSl7dmFyIHUsYSxjLHMsbCxmLGQsbSxnLHA9bi54LWUsaD1uLnktbyx2PXItKHArbi53aWR0aCksYj1pLShoK24uaGVpZ2h0KSx5PXN0LnNvbWUocCkseD1zdC5zb21lKGgpLHc9c3Quc29tZSh2KSxTPXN0LnNvbWUoYiksaz1zdC5ub25lKCk7cmV0dXJuIHU9bi5kaXJlY3Rpb24sYT1mdW5jdGlvbigpe3JldHVybiBaYSh0LHkseCxrLGspfSxjPWZ1bmN0aW9uKCl7cmV0dXJuIFphKHQsayx4LHcsayl9LHM9ZnVuY3Rpb24oKXtyZXR1cm4gWmEodCx5LGssayxTKX0sbD1mdW5jdGlvbigpe3JldHVybiBaYSh0LGssayx3LFMpfSxmPWZ1bmN0aW9uKCl7cmV0dXJuIFphKHQseSx4LGssayl9LGQ9ZnVuY3Rpb24oKXtyZXR1cm4gWmEodCx5LGssayxTKX0sbT1mdW5jdGlvbigpe3JldHVybiBaYSh0LHkseCxrLGspfSxnPWZ1bmN0aW9uKCl7cmV0dXJuIFphKHQsayx4LHcsayl9LHUuZm9sZChhLGMscyxsLGYsZCxtLGcpfSxvYz1mdW5jdGlvbih0LG4pe3ZhciBlPWcoeXUsbiksbz10LmZvbGQoZSxlLGZ1bmN0aW9uKCl7dmFyIHQ9bXUoKTtyZXR1cm4geXUobikudHJhbnNsYXRlKC10LmxlZnQoKSwtdC50b3AoKSl9KSxyPXN1KG4pLGk9bnUobik7cmV0dXJuIHh1KG8ubGVmdCgpLG8udG9wKCkscixpKX0scmM9ZnVuY3Rpb24odCxuLGUpe3ZhciBvPW91KG4sZSk7cmV0dXJuIHQuZm9sZChhdChvKSxhdChvKSxmdW5jdGlvbigpe3ZhciB0PW11KCk7cmV0dXJuIG8udHJhbnNsYXRlKC10LmxlZnQoKSwtdC50b3AoKSl9KX0saWM9KG5jLm5vbmUsbmMucmVsYXRpdmUpLHVjPW5jLmZpeGVkLGFjPWZ1bmN0aW9uKHQsbil7cmV0dXJuIGU9bix7YW5jaG9yQm94OmF0KHQpLG9yaWdpbjphdChlKX07dmFyIGV9LGNjPWZ1bmN0aW9uKHQsbixlLG8pe3ZhciByPXQrbjtyZXR1cm4gbzxyP2U6cjxlP286cn0sc2M9ZnVuY3Rpb24odCxuLGUpe3JldHVybiBNYXRoLm1pbihNYXRoLm1heCh0LG4pLGUpfSxsYz13dChbe2ZpdDpbInJlcG9zaXRpb24iXX0se25vZml0OlsicmVwb3NpdGlvbiIsImRlbHRhVyIsImRlbHRhSCJdfV0pLGZjPWZ1bmN0aW9uKHQsbixlLG8pe3ZhciByLGksdSxhLGMscyxsLGYsZCxtLGcscCxoLHYsYix5LHgsdyxTLGssQyxPLF8sVCxFLEIsRCxNLEEsRixJLFIsVixIPXQueCgpLFA9dC55KCksej10LmJ1YmJsZSgpLm9mZnNldCgpLE49ei5sZWZ0KCksTD16LnRvcCgpLGo9KHI9byxpPXQuYm91bmRzUmVzdHJpY3Rpb24oKSx1PXosYz0oYT1mdW5jdGlvbihuLGUpe3ZhciBvPSJ0b3AiPT09bnx8ImJvdHRvbSI9PT1uP3UudG9wKCk6dS5sZWZ0KCk7cmV0dXJuIGJ0KGksbikuYmluZChjdCkuYmluZChmdW5jdGlvbih0KXtyZXR1cm4ibGVmdCI9PT1ufHwidG9wIj09PW4/ZTw9dD9zdC5zb21lKHQpOnN0Lm5vbmUoKTp0PD1lP3N0LnNvbWUodCk6c3Qubm9uZSgpfSkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0K299KS5nZXRPcihlKX0pKCJsZWZ0IixyLngpLHM9YSgidG9wIixyLnkpLGw9YSgicmlnaHQiLHIucmlnaHQpLGY9YSgiYm90dG9tIixyLmJvdHRvbSkseHUoYyxzLGwtYyxmLXMpKSxVPWoueSxXPWouYm90dG9tLEc9ai54LFg9ai5yaWdodCxZPVArTCxxPShkPUgrTixtPVksZz1uLHA9ZSx2PShoPWopLngsYj1oLnkseT1oLndpZHRoLHg9aC5oZWlnaHQsUz1iPD1tLGs9KHc9djw9ZCkmJlMsQz1kK2c8PXYreSYmbStwPD1iK3gsTz1NYXRoLmFicyhNYXRoLm1pbihnLHc/dit5LWQ6di0oZCtnKSkpLF89TWF0aC5hYnMoTWF0aC5taW4ocCxTP2IreC1tOmItKG0rcCkpKSxUPU1hdGgubWF4KGgueCxoLnJpZ2h0LWcpLEU9TWF0aC5tYXgoaC55LGguYm90dG9tLXApLHtvcmlnaW5JbkJvdW5kczprLHNpemVJbkJvdW5kczpDLGxpbWl0WDpzYyhkLGgueCxUKSxsaW1pdFk6c2MobSxoLnksRSksZGVsdGFXOk8sZGVsdGFIOl99KSxLPXEub3JpZ2luSW5Cb3VuZHMsSj1xLnNpemVJbkJvdW5kcywkPXEubGltaXRYLFE9cS5saW1pdFksWj1xLmRlbHRhVyx0dD1xLmRlbHRhSCxudD1hdChRK3R0LVUpLGV0PWF0KFctUSksb3Q9KEI9dC5kaXJlY3Rpb24oKSxNPUQ9ZXQsQT1udCxCLmZvbGQoRCxELEEsQSxELEEsTSxNKSkscnQ9YXQoJCtaLUcpLGl0PWF0KFgtJCksdXQ9e3g6JCx5OlEsd2lkdGg6WixoZWlnaHQ6dHQsbWF4SGVpZ2h0Om90LG1heFdpZHRoOihGPXQuZGlyZWN0aW9uKCksUj1JPWl0LFY9cnQsRi5mb2xkKEksVixJLFYsUixSLEksVikpLGRpcmVjdGlvbjp0LmRpcmVjdGlvbigpLGNsYXNzZXM6e29uOnQuYnViYmxlKCkuY2xhc3Nlc09uKCksb2ZmOnQuYnViYmxlKCkuY2xhc3Nlc09mZigpfSxsYWJlbDp0LmxhYmVsKCksY2FuZGlkYXRlWWZvclRlc3Q6WX07cmV0dXJuIEsmJko/bGMuZml0KHV0KTpsYy5ub2ZpdCh1dCxaLHR0KX0sZGM9ZnVuY3Rpb24odCxuLGUsbyl7SGkobiwibWF4LWhlaWdodCIpLEhpKG4sIm1heC13aWR0aCIpO3ZhciByLGksdSxhLGMscyxsLGYsZCxtPXt3aWR0aDpzdShyPW4pLGhlaWdodDpudShyKX07cmV0dXJuIGk9by5wcmVmZXJlbmNlLHU9dCxhPW0sYz1lLHM9by5ib3VuZHMsbD1hLndpZHRoLGY9YS5oZWlnaHQsZD1mdW5jdGlvbih0LG8scixpKXt2YXIgbj10KHUsYSxjKTtyZXR1cm4gZmMobixsLGYscykuZm9sZChsYy5maXQsZnVuY3Rpb24odCxuLGUpe3JldHVybiBpPGV8fHI8bj9sYy5ub2ZpdCh0LG4sZSk6bGMubm9maXQobyxyLGkpfSl9LE4oaSxmdW5jdGlvbih0LG4pe3ZhciBlPWcoZCxuKTtyZXR1cm4gdC5mb2xkKGxjLmZpdCxlKX0sbGMubm9maXQoe3g6dS54LHk6dS55LHdpZHRoOmEud2lkdGgsaGVpZ2h0OmEuaGVpZ2h0LG1heEhlaWdodDphLmhlaWdodCxtYXhXaWR0aDphLndpZHRoLGRpcmVjdGlvbjp1YSgpLGNsYXNzZXM6e29uOltdLG9mZjpbXX0sbGFiZWw6Im5vbmUiLGNhbmRpZGF0ZVlmb3JUZXN0OnUueX0sLTEsLTEpKS5mb2xkKGN0LGN0KX0sbWM9ZnVuY3Rpb24odCxuLGUpe3ZhciBvLHI7dGModCwobz1lLm9yaWdpbixyPW4sby5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIFphKCJhYnNvbHV0ZSIsc3Quc29tZShyLngpLHN0LnNvbWUoci55KSxzdC5ub25lKCksc3Qubm9uZSgpKX0sZnVuY3Rpb24odCxuLGUsbyl7cmV0dXJuIGVjKCJhYnNvbHV0ZSIscix0LG4sZSxvKX0sZnVuY3Rpb24odCxuLGUsbyl7cmV0dXJuIGVjKCJmaXhlZCIscix0LG4sZSxvKX0pKSl9LGdjPWZ1bmN0aW9uKHQsbil7dmFyIGUsbyxyO2U9dCxvPU1hdGguZmxvb3Iobikscj1aaS5tYXgoZSxvLFsibWFyZ2luLXRvcCIsImJvcmRlci10b3Atd2lkdGgiLCJwYWRkaW5nLXRvcCIsInBhZGRpbmctYm90dG9tIiwiYm9yZGVyLWJvdHRvbS13aWR0aCIsIm1hcmdpbi1ib3R0b20iXSksRGkoZSwibWF4LWhlaWdodCIscisicHgiKX0scGM9YXQoZnVuY3Rpb24odCxuKXtnYyh0LG4pLE1pKHQseyJvdmVyZmxvdy14IjoiaGlkZGVuIiwib3ZlcmZsb3cteSI6ImF1dG8ifSl9KSxoYz1hdChmdW5jdGlvbih0LG4pe2djKHQsbil9KSx2Yz1mdW5jdGlvbih0LG4sZSl7cmV0dXJuIHRbbl09PT11bmRlZmluZWQ/ZTp0W25dfSxiYz1mdW5jdGlvbih0LG4sZSxvLHIsaSl7dmFyIHUsYT12YyhpLCJtYXhIZWlnaHRGdW5jdGlvbiIscGMoKSksYz12YyhpLCJtYXhXaWR0aEZ1bmN0aW9uIixaKSxzPXQuYW5jaG9yQm94KCksbD10Lm9yaWdpbigpLGY9e2JvdW5kczoodT1sLHIuZm9sZChmdW5jdGlvbigpe3JldHVybiB1LmZvbGQoa3Usa3UseHUpfSxmdW5jdGlvbihlKXtyZXR1cm4gdS5mb2xkKGUsZSxmdW5jdGlvbigpe3ZhciB0PWUoKSxuPXJjKHUsdC54LHQueSk7cmV0dXJuIHh1KG4ubGVmdCgpLG4udG9wKCksdC53aWR0aCx0LmhlaWdodCl9KX0pKSxvcmlnaW46bCxwcmVmZXJlbmNlOm8sbWF4SGVpZ2h0RnVuY3Rpb246YSxtYXhXaWR0aEZ1bmN0aW9uOmN9O3ljKHMsbixlLGYpfSx5Yz1mdW5jdGlvbih0LG4sZSxvKXt2YXIgcixpLHUsYSxjLHMsbD1kYyh0LG4sZSxvKTttYyhuLGwsbykscj1uLGk9bC5jbGFzc2VzLGtpKHIsaS5vZmYpLFNpKHIsaS5vbiksdT1uLGE9bCwoMCxvLm1heEhlaWdodEZ1bmN0aW9uKSh1LGEubWF4SGVpZ2h0KSxjPW4scz1sLCgwLG8ubWF4V2lkdGhGdW5jdGlvbikoYyxzLm1heFdpZHRoKX0seGM9WyJ2YWxpZ25DZW50cmUiLCJhbGlnbkxlZnQiLCJhbGlnblJpZ2h0IiwiYWxpZ25DZW50cmUiLCJ0b3AiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiXSx3Yz1mdW5jdGlvbih0LG4sZSl7dmFyIHI9ZnVuY3Rpb24odCl7cmV0dXJuIGJ0KGUsdCkuZ2V0T3IoW10pfSxvPWZ1bmN0aW9uKHQsbixlKXt2YXIgbz1YKHhjLGUpO3JldHVybntvZmZzZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gb3UodCxuKX0sY2xhc3Nlc09uOmZ1bmN0aW9uKCl7cmV0dXJuIFUoZSxyKX0sY2xhc3Nlc09mZjpmdW5jdGlvbigpe3JldHVybiBVKG8scil9fX07cmV0dXJue3NvdXRoZWFzdDpmdW5jdGlvbigpe3JldHVybiBvKC10LG4sWyJ0b3AiLCJhbGlnbkxlZnQiXSl9LHNvdXRod2VzdDpmdW5jdGlvbigpe3JldHVybiBvKHQsbixbInRvcCIsImFsaWduUmlnaHQiXSl9LHNvdXRoOmZ1bmN0aW9uKCl7cmV0dXJuIG8oLXQvMixuLFsidG9wIiwiYWxpZ25DZW50cmUiXSl9LG5vcnRoZWFzdDpmdW5jdGlvbigpe3JldHVybiBvKC10LC1uLFsiYm90dG9tIiwiYWxpZ25MZWZ0Il0pfSxub3J0aHdlc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gbyh0LC1uLFsiYm90dG9tIiwiYWxpZ25SaWdodCJdKX0sbm9ydGg6ZnVuY3Rpb24oKXtyZXR1cm4gbygtdC8yLC1uLFsiYm90dG9tIiwiYWxpZ25DZW50cmUiXSl9LGVhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gbyh0LC1uLzIsWyJ2YWxpZ25DZW50cmUiLCJsZWZ0Il0pfSx3ZXN0OmZ1bmN0aW9uKCl7cmV0dXJuIG8oLXQsLW4vMixbInZhbGlnbkNlbnRyZSIsInJpZ2h0Il0pfSxpbm5lck5vcnRod2VzdDpmdW5jdGlvbigpe3JldHVybiBvKC10LG4sWyJ0b3AiLCJhbGlnblJpZ2h0Il0pfSxpbm5lck5vcnRoZWFzdDpmdW5jdGlvbigpe3JldHVybiBvKHQsbixbInRvcCIsImFsaWduTGVmdCJdKX0saW5uZXJOb3J0aDpmdW5jdGlvbigpe3JldHVybiBvKC10LzIsbixbInRvcCIsImFsaWduQ2VudHJlIl0pfSxpbm5lclNvdXRod2VzdDpmdW5jdGlvbigpe3JldHVybiBvKC10LC1uLFsiYm90dG9tIiwiYWxpZ25SaWdodCJdKX0saW5uZXJTb3V0aGVhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gbyh0LC1uLFsiYm90dG9tIiwiYWxpZ25MZWZ0Il0pfSxpbm5lclNvdXRoOmZ1bmN0aW9uKCl7cmV0dXJuIG8oLXQvMiwtbixbImJvdHRvbSIsImFsaWduQ2VudHJlIl0pfSxpbm5lcldlc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gbyh0LC1uLzIsWyJ2YWxpZ25DZW50cmUiLCJyaWdodCJdKX0saW5uZXJFYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIG8oLXQsLW4vMixbInZhbGlnbkNlbnRyZSIsImxlZnQiXSl9fX0sU2M9ZnVuY3Rpb24oKXtyZXR1cm4gd2MoMCwwLHt9KX0sa2M9ZnVuY3Rpb24obixlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuInJ0bCI9PT1DYyh0KT9lOm59fSxDYz1mdW5jdGlvbih0KXtyZXR1cm4icnRsIj09PUZpKHQsImRpcmVjdGlvbiIpPyJydGwiOiJsdHIifTsoUHU9SHU9SHV8fHt9KS5Ub3BUb0JvdHRvbT0idG9wdG9ib3R0b20iLFB1LkJvdHRvbVRvVG9wPSJib3R0b210b3RvcCI7dmFyIE9jPSJkYXRhLWFsbG95LXZlcnRpY2FsLWRpciIsX2M9ZnVuY3Rpb24odCl7cmV0dXJuIEJ1KHQsZnVuY3Rpb24odCl7cmV0dXJuIF9yKHQpJiZEcih0LE9jKT09PUh1LkJvdHRvbVRvVG9wfSl9LFRjPWZ1bmN0aW9uKCl7cmV0dXJuIFFuKCJsYXlvdXRzIixbem4oIm9uTHRyIiksem4oIm9uUnRsIiksWW4oIm9uQm90dG9tTHRyIiksWW4oIm9uQm90dG9tUnRsIildKX0sRWM9ZnVuY3Rpb24obix0LGUsbyxyLGksdSl7dmFyIGE9dS5tYXAoX2MpLmdldE9yKCExKSxjPXQubGF5b3V0cy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQub25MdHIobil9KSxzPXQubGF5b3V0cy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQub25SdGwobil9KSxsPWE/dC5sYXlvdXRzLmJpbmQoZnVuY3Rpb24odCl7cmV0dXJuIHQub25Cb3R0b21MdHIubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0KG4pfSl9KS5vcihjKS5nZXRPcihyKTpjLmdldE9yKGUpLGY9YT90LmxheW91dHMuYmluZChmdW5jdGlvbih0KXtyZXR1cm4gdC5vbkJvdHRvbVJ0bC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQobil9KX0pLm9yKHMpLmdldE9yKGkpOnMuZ2V0T3Iobyk7cmV0dXJuIGtjKGwsZikobil9LEJjPVt6bigiaG90c3BvdCIpLFluKCJidWJibGUiKSxabigib3ZlcnJpZGVzIix7fSksVGMoKSxuYSgicGxhY2VtZW50IixmdW5jdGlvbih0LG4sZSl7dmFyIG89bi5ob3RzcG90LHI9b2MoZSxvLmVsZW1lbnQoKSksaT1FYyh0LmVsZW1lbnQoKSxuLEFhKCksRmEoKSxNYSgpLFtDYSxrYSxTYSx3YSxPYSxfYV0sc3Quc29tZShuLmhvdHNwb3QuZWxlbWVudCgpKSk7cmV0dXJuIHN0LnNvbWUoe2FuY2hvckJveDpyLGJ1YmJsZTpuLmJ1YmJsZS5nZXRPcihTYygpKSxvdmVycmlkZXM6bi5vdmVycmlkZXMsbGF5b3V0czppLHBsYWNlcjpzdC5ub25lKCl9KX0pXSxEYz1bem4oIngiKSx6bigieSIpLFpuKCJoZWlnaHQiLDApLFpuKCJ3aWR0aCIsMCksWm4oImJ1YmJsZSIsU2MoKSksWm4oIm92ZXJyaWRlcyIse30pLFRjKCksbmEoInBsYWNlbWVudCIsZnVuY3Rpb24odCxuLGUpe3ZhciBvPXJjKGUsbi54LG4ueSkscj14dShvLmxlZnQoKSxvLnRvcCgpLG4ud2lkdGgsbi5oZWlnaHQpLGk9RWModC5lbGVtZW50KCksbixCYSgpLERhKCksQmEoKSxEYSgpLHN0Lm5vbmUoKSk7cmV0dXJuIHN0LnNvbWUoe2FuY2hvckJveDpyLGJ1YmJsZTpuLmJ1YmJsZSxvdmVycmlkZXM6bi5vdmVycmlkZXMsbGF5b3V0czppLHBsYWNlcjpzdC5ub25lKCl9KX0pXSxNYz1mdW5jdGlvbih0LG4sZSxvKXtyZXR1cm57c3RhcnQ6YXQodCksc29mZnNldDphdChuKSxmaW5pc2g6YXQoZSksZm9mZnNldDphdChvKX19LEFjPXd0KFt7YmVmb3JlOlsiZWxlbWVudCJdfSx7b246WyJlbGVtZW50Iiwib2Zmc2V0Il19LHthZnRlcjpbImVsZW1lbnQiXX1dKSxGYz0oQWMuYmVmb3JlLEFjLm9uLEFjLmFmdGVyLGZ1bmN0aW9uKHQpe3JldHVybiB0LmZvbGQoY3QsY3QsY3QpfSksSWM9d3QoW3tkb21SYW5nZTpbInJuZyJdfSx7cmVsYXRpdmU6WyJzdGFydFNpdHUiLCJmaW5pc2hTaXR1Il19LHtleGFjdDpbInN0YXJ0Iiwic29mZnNldCIsImZpbmlzaCIsImZvZmZzZXQiXX1dKSxSYz17ZG9tUmFuZ2U6SWMuZG9tUmFuZ2UscmVsYXRpdmU6SWMucmVsYXRpdmUsZXhhY3Q6SWMuZXhhY3QsZXhhY3RGcm9tUmFuZ2U6ZnVuY3Rpb24odCl7cmV0dXJuIEljLmV4YWN0KHQuc3RhcnQoKSx0LnNvZmZzZXQoKSx0LmZpbmlzaCgpLHQuZm9mZnNldCgpKX0sZ2V0V2luOmZ1bmN0aW9uKHQpe3ZhciBuPXQubWF0Y2goe2RvbVJhbmdlOmZ1bmN0aW9uKHQpe3JldHVybiBsZS5mcm9tRG9tKHQuc3RhcnRDb250YWluZXIpfSxyZWxhdGl2ZTpmdW5jdGlvbih0LG4pe3JldHVybiBGYyh0KX0sZXhhY3Q6ZnVuY3Rpb24odCxuLGUsbyl7cmV0dXJuIHR9fSk7cmV0dXJuIHNyKG4pfSxyYW5nZTpNY30sVmM9ZnVuY3Rpb24odCxuLGUpe3ZhciBvLHIsaT10LmRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7cmV0dXJuIG89aSxuLmZvbGQoZnVuY3Rpb24odCl7by5zZXRTdGFydEJlZm9yZSh0LmRvbSgpKX0sZnVuY3Rpb24odCxuKXtvLnNldFN0YXJ0KHQuZG9tKCksbil9LGZ1bmN0aW9uKHQpe28uc2V0U3RhcnRBZnRlcih0LmRvbSgpKX0pLHI9aSxlLmZvbGQoZnVuY3Rpb24odCl7ci5zZXRFbmRCZWZvcmUodC5kb20oKSl9LGZ1bmN0aW9uKHQsbil7ci5zZXRFbmQodC5kb20oKSxuKX0sZnVuY3Rpb24odCl7ci5zZXRFbmRBZnRlcih0LmRvbSgpKX0pLGl9LEhjPWZ1bmN0aW9uKHQsbixlLG8scil7dmFyIGk9dC5kb2N1bWVudC5jcmVhdGVSYW5nZSgpO3JldHVybiBpLnNldFN0YXJ0KG4uZG9tKCksZSksaS5zZXRFbmQoby5kb20oKSxyKSxpfSxQYz1mdW5jdGlvbih0KXtyZXR1cm57bGVmdDphdCh0LmxlZnQpLHRvcDphdCh0LnRvcCkscmlnaHQ6YXQodC5yaWdodCksYm90dG9tOmF0KHQuYm90dG9tKSx3aWR0aDphdCh0LndpZHRoKSxoZWlnaHQ6YXQodC5oZWlnaHQpfX0semM9d3QoW3tsdHI6WyJzdGFydCIsInNvZmZzZXQiLCJmaW5pc2giLCJmb2Zmc2V0Il19LHtydGw6WyJzdGFydCIsInNvZmZzZXQiLCJmaW5pc2giLCJmb2Zmc2V0Il19XSksTmM9ZnVuY3Rpb24odCxuLGUpe3JldHVybiBuKGxlLmZyb21Eb20oZS5zdGFydENvbnRhaW5lciksZS5zdGFydE9mZnNldCxsZS5mcm9tRG9tKGUuZW5kQ29udGFpbmVyKSxlLmVuZE9mZnNldCl9LExjPWZ1bmN0aW9uKHQsbil7dmFyIHIsZSxvLGk9KHI9dCxuLm1hdGNoKHtkb21SYW5nZTpmdW5jdGlvbih0KXtyZXR1cm57bHRyOmF0KHQpLHJ0bDpzdC5ub25lfX0scmVsYXRpdmU6ZnVuY3Rpb24odCxuKXtyZXR1cm57bHRyOl90KGZ1bmN0aW9uKCl7cmV0dXJuIFZjKHIsdCxuKX0pLHJ0bDpfdChmdW5jdGlvbigpe3JldHVybiBzdC5zb21lKFZjKHIsbix0KSl9KX19LGV4YWN0OmZ1bmN0aW9uKHQsbixlLG8pe3JldHVybntsdHI6X3QoZnVuY3Rpb24oKXtyZXR1cm4gSGMocix0LG4sZSxvKX0pLHJ0bDpfdChmdW5jdGlvbigpe3JldHVybiBzdC5zb21lKEhjKHIsZSxvLHQsbikpfSl9fX0pKTtyZXR1cm4obz0oZT1pKS5sdHIoKSkuY29sbGFwc2VkP2UucnRsKCkuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiExPT09dC5jb2xsYXBzZWR9KS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHpjLnJ0bChsZS5mcm9tRG9tKHQuZW5kQ29udGFpbmVyKSx0LmVuZE9mZnNldCxsZS5mcm9tRG9tKHQuc3RhcnRDb250YWluZXIpLHQuc3RhcnRPZmZzZXQpfSkuZ2V0T3JUaHVuayhmdW5jdGlvbigpe3JldHVybiBOYygwLHpjLmx0cixvKX0pOk5jKDAsemMubHRyLG8pfTt6Yy5sdHIsemMucnRsO3ZhciBqYz1mdW5jdGlvbiBQRihlLG8pe3ZhciBuPWZ1bmN0aW9uKHQpe3JldHVybiBlKHQpP3N0LmZyb20odC5kb20oKS5ub2RlVmFsdWUpOnN0Lm5vbmUoKX07cmV0dXJue2dldDpmdW5jdGlvbih0KXtpZighZSh0KSl0aHJvdyBuZXcgRXJyb3IoIkNhbiBvbmx5IGdldCAiK28rIiB2YWx1ZSBvZiBhICIrbysiIG5vZGUiKTtyZXR1cm4gbih0KS5nZXRPcigiIil9LGdldE9wdGlvbjpuLHNldDpmdW5jdGlvbih0LG4pe2lmKCFlKHQpKXRocm93IG5ldyBFcnJvcigiQ2FuIG9ubHkgc2V0IHJhdyAiK28rIiB2YWx1ZSBvZiBhICIrbysiIG5vZGUiKTt0LmRvbSgpLm5vZGVWYWx1ZT1ufX19KFRyLCJ0ZXh0IiksVWM9ZnVuY3Rpb24odCl7cmV0dXJuIGpjLmdldE9wdGlvbih0KX0sV2M9WyJpbWciLCJiciJdLEdjPWZ1bmN0aW9uKHQpe3JldHVybiBVYyh0KS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIDAhPT10LnRyaW0oKS5sZW5ndGh8fC0xPHQuaW5kZXhPZigiXHhhMCIpfSkuaXNTb21lKCl8fEYoV2MsQ3IodCkpfSxYYz1mdW5jdGlvbih0LGkpe3ZhciB1PWZ1bmN0aW9uKHQpe2Zvcih2YXIgbj1kcih0KSxlPW4ubGVuZ3RoLTE7MDw9ZTtlLS0pe3ZhciBvPW5bZV07aWYoaShvKSlyZXR1cm4gc3Quc29tZShvKTt2YXIgcj11KG8pO2lmKHIuaXNTb21lKCkpcmV0dXJuIHJ9cmV0dXJuIHN0Lm5vbmUoKX07cmV0dXJuIHUodCl9LFljPWZ1bmN0aW9uKHQsbil7cmV0dXJuIGU9bixyPShvPXQpPT09dW5kZWZpbmVkP250LmRvY3VtZW50Om8uZG9tKCksTmUocik/W106VihyLnF1ZXJ5U2VsZWN0b3JBbGwoZSksbGUuZnJvbURvbSk7dmFyIGUsbyxyfSxxYz1mdW5jdGlvbih0LG4sZSxvKXt2YXIgcixpLHUsYSxjLHM9KGk9bix1PWUsYT1vLChjPWFyKHI9dCkuZG9tKCkuY3JlYXRlUmFuZ2UoKSkuc2V0U3RhcnQoci5kb20oKSxpKSxjLnNldEVuZCh1LmRvbSgpLGEpLGMpLGw9TGUodCxlKSYmbj09PW87cmV0dXJuIHMuY29sbGFwc2VkJiYhbH0sS2M9ZnVuY3Rpb24odCl7dmFyIG49bGUuZnJvbURvbSh0LmFuY2hvck5vZGUpLGU9bGUuZnJvbURvbSh0LmZvY3VzTm9kZSk7cmV0dXJuIHFjKG4sdC5hbmNob3JPZmZzZXQsZSx0LmZvY3VzT2Zmc2V0KT9zdC5zb21lKE1jKG4sdC5hbmNob3JPZmZzZXQsZSx0LmZvY3VzT2Zmc2V0KSk6ZnVuY3Rpb24odCl7aWYoMDx0LnJhbmdlQ291bnQpe3ZhciBuPXQuZ2V0UmFuZ2VBdCgwKSxlPXQuZ2V0UmFuZ2VBdCh0LnJhbmdlQ291bnQtMSk7cmV0dXJuIHN0LnNvbWUoTWMobGUuZnJvbURvbShuLnN0YXJ0Q29udGFpbmVyKSxuLnN0YXJ0T2Zmc2V0LGxlLmZyb21Eb20oZS5lbmRDb250YWluZXIpLGUuZW5kT2Zmc2V0KSl9cmV0dXJuIHN0Lm5vbmUoKX0odCl9LEpjPWZ1bmN0aW9uKHQsbil7dmFyIGksZSxvLHIsdT1MYyhpPXQsbikubWF0Y2goe2x0cjpmdW5jdGlvbih0LG4sZSxvKXt2YXIgcj1pLmRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7cmV0dXJuIHIuc2V0U3RhcnQodC5kb20oKSxuKSxyLnNldEVuZChlLmRvbSgpLG8pLHJ9LHJ0bDpmdW5jdGlvbih0LG4sZSxvKXt2YXIgcj1pLmRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7cmV0dXJuIHIuc2V0U3RhcnQoZS5kb20oKSxvKSxyLnNldEVuZCh0LmRvbSgpLG4pLHJ9fSk7cmV0dXJuIG89KGU9dSkuZ2V0Q2xpZW50UmVjdHMoKSwwPChyPTA8by5sZW5ndGg/b1swXTplLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKS53aWR0aHx8MDxyLmhlaWdodD9zdC5zb21lKHIpLm1hcChQYyk6c3Qubm9uZSgpfSwkYz1mdW5jdGlvbih0LG4pe3JldHVybntlbGVtZW50OnQsb2Zmc2V0Om59fSxRYz1mdW5jdGlvbih0LG4pe3ZhciBlPWRyKHQpO2lmKDA9PT1lLmxlbmd0aClyZXR1cm4gJGModCxuKTtpZihuPGUubGVuZ3RoKXJldHVybiAkYyhlW25dLDApO3ZhciBvLHI9ZVtlLmxlbmd0aC0xXSxpPVRyKHIpPyhvPXIsamMuZ2V0KG8pLmxlbmd0aCk6ZHIocikubGVuZ3RoO3JldHVybiAkYyhyLGkpfSxaYz13dChbe3NjcmVlbjpbInBvaW50Il19LHthYnNvbHV0ZTpbInBvaW50Iiwic2Nyb2xsTGVmdCIsInNjcm9sbFRvcCJdfV0pLHRzPWZ1bmN0aW9uKHQpe3JldHVybiB0LmZvbGQoY3QsZnVuY3Rpb24odCxuLGUpe3JldHVybiB0LnRyYW5zbGF0ZSgtbiwtZSl9KX0sbnM9ZnVuY3Rpb24odCl7cmV0dXJuIHQuZm9sZChjdCxjdCl9LGVzPWZ1bmN0aW9uKHQpe3JldHVybiBOKHQsZnVuY3Rpb24odCxuKXtyZXR1cm4gdC50cmFuc2xhdGUobi5sZWZ0KCksbi50b3AoKSl9LG91KDAsMCkpfSxvcz1mdW5jdGlvbih0KXt2YXIgbj1WKHQsbnMpO3JldHVybiBlcyhuKX0scnM9WmMuc2NyZWVuLGlzPVpjLmFic29sdXRlLHVzPWZ1bmN0aW9uKHQsbixlKXt2YXIgbyxyLGk9YXIodC5lbGVtZW50KCkpLHU9bXUoaSksYT0obz10LHI9c3IoZS5yb290KS5kb20oKSxzdC5mcm9tKHIuZnJhbWVFbGVtZW50KS5tYXAobGUuZnJvbURvbSkuZmlsdGVyKGZ1bmN0aW9uKHQpe3ZhciBuPWFyKHQpLGU9YXIoby5lbGVtZW50KCkpO3JldHVybiBMZShuLGUpfSkubWFwKGl1KS5nZXRPcih1KSk7cmV0dXJuIGlzKGEsdS5sZWZ0KCksdS50b3AoKSl9LGFzPWZ1bmN0aW9uKHQsbixlLG8pe3ZhciByPXQsaT1uLHU9ZSxhPW87dDwwJiYocj0wLHU9ZSt0KSxuPDAmJihpPTAsYT1vK24pO3ZhciBjPXJzKG91KHIsaSkpO3JldHVybiBzdC5zb21lKHtwb2ludDpjLHdpZHRoOnUsaGVpZ2h0OmF9KX0sY3M9ZnVuY3Rpb24odCxsLGYsZCxtKXtyZXR1cm4gdC5tYXAoZnVuY3Rpb24odCl7dmFyIG4sZSxvLHI9W2wsdC5wb2ludF0saT0obj1mdW5jdGlvbigpe3JldHVybiBvcyhyKX0sZT1mdW5jdGlvbigpe3JldHVybiBvcyhyKX0sbz1mdW5jdGlvbigpe3JldHVybiB0PVYocix0cyksZXModCk7dmFyIHR9LGQuZm9sZChuLGUsbykpLHU9e3g6aS5sZWZ0KCkseTppLnRvcCgpLHdpZHRoOnQud2lkdGgsaGVpZ2h0OnQuaGVpZ2h0fSxhPShmLnNob3dBYm92ZT9NYTpBYSkoKSxjPShmLnNob3dBYm92ZSxGYSgpKSxzPUVjKG0sZixhLGMsYSxjLHN0Lm5vbmUoKSk7cmV0dXJue2FuY2hvckJveDp1LGJ1YmJsZTpmLmJ1YmJsZS5nZXRPcihTYygpKSxvdmVycmlkZXM6Zi5vdmVycmlkZXMsbGF5b3V0czpzLHBsYWNlcjpzdC5ub25lKCl9fSl9LHNzPWZ1bmN0aW9uKHQsbil7cmV0dXJuIFRyKHQpP3tlbGVtZW50OnQsb2Zmc2V0Om59OlFjKHQsbil9LGxzPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIHQuZ2V0U2VsZWN0aW9uLmdldE9yVGh1bmsoZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdD1uLHN0LmZyb20odC5nZXRTZWxlY3Rpb24oKSkuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiAwPHQucmFuZ2VDb3VudH0pLmJpbmQoS2MpO3ZhciB0fX0pKCkubWFwKGZ1bmN0aW9uKHQpe3ZhciBuPXNzKHQuc3RhcnQoKSx0LnNvZmZzZXQoKSksZT1zcyh0LmZpbmlzaCgpLHQuZm9mZnNldCgpKTtyZXR1cm4gUmMucmFuZ2Uobi5lbGVtZW50LG4ub2Zmc2V0LGUuZWxlbWVudCxlLm9mZnNldCl9KX0sZnM9W1luKCJnZXRTZWxlY3Rpb24iKSx6bigicm9vdCIpLFluKCJidWJibGUiKSxUYygpLFpuKCJvdmVycmlkZXMiLHt9KSxabigic2hvd0Fib3ZlIiwhMSksbmEoInBsYWNlbWVudCIsZnVuY3Rpb24odCxuLGUpe3ZhciBvPXNyKG4ucm9vdCkuZG9tKCkscj11cyh0LDAsbiksaT1scyhvLG4pLmJpbmQoZnVuY3Rpb24odCl7cmV0dXJuIEpjKG8sUmMuZXhhY3RGcm9tUmFuZ2UodCkpLm9yVGh1bmsoZnVuY3Rpb24oKXt2YXIgbj1sZS5mcm9tVGV4dCgiXHVmZWZmIik7cmV0dXJuIGdyKHQuc3RhcnQoKSxuKSxKYyhvLFJjLmV4YWN0KG4sMCxuLDEpKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHhyKG4pLHR9KX0pLmJpbmQoZnVuY3Rpb24odCl7cmV0dXJuIGFzKHQubGVmdCgpLHQudG9wKCksdC53aWR0aCgpLHQuaGVpZ2h0KCkpfSl9KSx1PWxzKG8sbikuYmluZChmdW5jdGlvbih0KXtyZXR1cm4gX3IodC5zdGFydCgpKT9zdC5zb21lKHQuc3RhcnQoKSk6bHIodC5zdGFydCgpKX0pLmdldE9yKHQuZWxlbWVudCgpKTtyZXR1cm4gY3MoaSxyLG4sZSx1KX0pXSxkcz1bem4oIm5vZGUiKSx6bigicm9vdCIpLFluKCJidWJibGUiKSxUYygpLFpuKCJvdmVycmlkZXMiLHt9KSxabigic2hvd0Fib3ZlIiwhMSksbmEoInBsYWNlbWVudCIsZnVuY3Rpb24ocixpLHUpe3ZhciBhPXVzKHIsMCxpKTtyZXR1cm4gaS5ub2RlLmJpbmQoZnVuY3Rpb24odCl7dmFyIG49dC5kb20oKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxlPWFzKG4ubGVmdCxuLnRvcCxuLndpZHRoLG4uaGVpZ2h0KSxvPWkubm9kZS5nZXRPcihyLmVsZW1lbnQoKSk7cmV0dXJuIGNzKGUsYSxpLHUsbyl9KX0pXSxtcz1mdW5jdGlvbih0KXtyZXR1cm4gdC54K3Qud2lkdGh9LGdzPWZ1bmN0aW9uKHQsbil7cmV0dXJuIHQueC1uLndpZHRofSxwcz1mdW5jdGlvbih0LG4pe3JldHVybiB0Lnktbi5oZWlnaHQrdC5oZWlnaHR9LGhzPWZ1bmN0aW9uKHQpe3JldHVybiB0Lnl9LHZzPWZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gcmEobXModCksaHModCksZS5zb3V0aGVhc3QoKSx1YSgpLGdhKHQse2xlZnQ6MCx0b3A6Mn0pLCJsaW5rLWxheW91dC1zZSIpfSxicz1mdW5jdGlvbih0LG4sZSl7cmV0dXJuIHJhKGdzKHQsbiksaHModCksZS5zb3V0aHdlc3QoKSxhYSgpLGdhKHQse3JpZ2h0OjEsdG9wOjJ9KSwibGluay1sYXlvdXQtc3ciKX0seXM9ZnVuY3Rpb24odCxuLGUpe3JldHVybiByYShtcyh0KSxwcyh0LG4pLGUubm9ydGhlYXN0KCksY2EoKSxnYSh0LHtsZWZ0OjAsYm90dG9tOjN9KSwibGluay1sYXlvdXQtbmUiKX0seHM9ZnVuY3Rpb24odCxuLGUpe3JldHVybiByYShncyh0LG4pLHBzKHQsbiksZS5ub3J0aHdlc3QoKSxzYSgpLGdhKHQse3JpZ2h0OjEsYm90dG9tOjN9KSwibGluay1sYXlvdXQtbnciKX0sd3M9ZnVuY3Rpb24oKXtyZXR1cm5bdnMsYnMseXMseHNdfSxTcz1mdW5jdGlvbigpe3JldHVyblticyx2cyx4cyx5c119LGtzPVt6bigiaXRlbSIpLFRjKCksWm4oIm92ZXJyaWRlcyIse30pLG5hKCJwbGFjZW1lbnQiLGZ1bmN0aW9uKHQsbixlKXt2YXIgbz1vYyhlLG4uaXRlbS5lbGVtZW50KCkpLHI9RWModC5lbGVtZW50KCksbix3cygpLFNzKCksd3MoKSxTcygpLHN0Lm5vbmUoKSk7cmV0dXJuIHN0LnNvbWUoe2FuY2hvckJveDpvLGJ1YmJsZTpTYygpLG92ZXJyaWRlczpuLm92ZXJyaWRlcyxsYXlvdXRzOnIscGxhY2VyOnN0Lm5vbmUoKX0pfSldLENzPUJuKCJhbmNob3IiLHtzZWxlY3Rpb246ZnMsbm9kZTpkcyxob3RzcG90OkJjLHN1Ym1lbnU6a3MsbWFrZXNoaWZ0OkRjfSksT3M9ZnVuY3Rpb24odCxuLGUsbyxyKXt2YXIgaT1hYyhlLmFuY2hvckJveCxuKTtiYyhpLHIuZWxlbWVudCgpLGUuYnViYmxlLGUubGF5b3V0cyxvLGUub3ZlcnJpZGVzKX0sX3M9ZnVuY3Rpb24odCxuLGUsbyxyLGkpe3ZhciB1PWkubWFwKHd1KTtyZXR1cm4gVHModCxuLGUsbyxyLHUpfSxUcz1mdW5jdGlvbihjLHMsdCxuLGwsZil7dmFyIGQ9X24oInBvc2l0aW9uaW5nIGFuY2hvci5pbmZvIixDcyxuKTtRYShmdW5jdGlvbigpe0RpKGwuZWxlbWVudCgpLCJwb3NpdGlvbiIsImZpeGVkIik7dmFyIHQ9UmkobC5lbGVtZW50KCksInZpc2liaWxpdHkiKTtEaShsLmVsZW1lbnQoKSwidmlzaWJpbGl0eSIsImhpZGRlbiIpO3ZhciBuLGUsbyxyLGk9cy51c2VGaXhlZCgpPyhyPW50LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCx1YygwLDAsci5jbGllbnRXaWR0aCxyLmNsaWVudEhlaWdodCkpOihlPWl1KChuPWMpLmVsZW1lbnQoKSksbz1uLmVsZW1lbnQoKS5kb20oKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxpYyhlLmxlZnQoKSxlLnRvcCgpLG8ud2lkdGgsby5oZWlnaHQpKSx1PWQucGxhY2VtZW50LGE9Zi5tYXAoYXQpLm9yKHMuZ2V0Qm91bmRzKTt1KGMsZCxpKS5lYWNoKGZ1bmN0aW9uKHQpe3QucGxhY2VyLmdldE9yKE9zKShjLGksdCxhLGwpfSksdC5mb2xkKGZ1bmN0aW9uKCl7SGkobC5lbGVtZW50KCksInZpc2liaWxpdHkiKX0sZnVuY3Rpb24odCl7RGkobC5lbGVtZW50KCksInZpc2liaWxpdHkiLHQpfSksUmkobC5lbGVtZW50KCksImxlZnQiKS5pc05vbmUoKSYmUmkobC5lbGVtZW50KCksInRvcCIpLmlzTm9uZSgpJiZSaShsLmVsZW1lbnQoKSwicmlnaHQiKS5pc05vbmUoKSYmUmkobC5lbGVtZW50KCksImJvdHRvbSIpLmlzTm9uZSgpJiZSaShsLmVsZW1lbnQoKSwicG9zaXRpb24iKS5pcygiZml4ZWQiKSYmSGkobC5lbGVtZW50KCksInBvc2l0aW9uIil9LGwuZWxlbWVudCgpKX0sRXM9LyogKi9PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxwb3NpdGlvbjpmdW5jdGlvbih0LG4sZSxvLHIpe19zKHQsbixlLG8scixzdC5ub25lKCkpfSxwb3NpdGlvbldpdGhpbjpfcyxwb3NpdGlvbldpdGhpbkJvdW5kczpUcyxnZXRNb2RlOmZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gbi51c2VGaXhlZCgpPyJmaXhlZCI6ImFic29sdXRlIn19KSxCcz1bWm4oInVzZUZpeGVkIixjKSxZbigiZ2V0Qm91bmRzIildLERzPUxhKHtmaWVsZHM6QnMsbmFtZToicG9zaXRpb25pbmciLGFjdGl2ZTpxYSxhcGlzOkVzfSksTXM9ZnVuY3Rpb24odCl7TG8odCxBbygpKTt2YXIgbj10LmNvbXBvbmVudHMoKTtpdChuLE1zKX0sQXM9ZnVuY3Rpb24odCl7dmFyIG49dC5jb21wb25lbnRzKCk7aXQobixBcyksTG8odCxNbygpKX0sRnM9ZnVuY3Rpb24odCxuKXt2cih0LmVsZW1lbnQoKSxuLmVsZW1lbnQoKSl9LElzPWZ1bmN0aW9uKG4sdCl7dmFyIGUsbz1uLmNvbXBvbmVudHMoKTtpdCgoZT1uKS5jb21wb25lbnRzKCksZnVuY3Rpb24odCl7cmV0dXJuIHhyKHQuZWxlbWVudCgpKX0pLHlyKGUuZWxlbWVudCgpKSxlLnN5bmNDb21wb25lbnRzKCk7dmFyIHI9WChvLHQpO2l0KHIsZnVuY3Rpb24odCl7TXModCksbi5nZXRTeXN0ZW0oKS5yZW1vdmVGcm9tV29ybGQodCl9KSxpdCh0LGZ1bmN0aW9uKHQpe3QuZ2V0U3lzdGVtKCkuaXNDb25uZWN0ZWQoKT9GcyhuLHQpOihuLmdldFN5c3RlbSgpLmFkZFRvV29ybGQodCksRnMobix0KSxPaShuLmVsZW1lbnQoKSkmJkFzKHQpKSxuLnN5bmNDb21wb25lbnRzKCl9KX0sUnM9ZnVuY3Rpb24odCxuKXtWcyh0LG4sdnIpfSxWcz1mdW5jdGlvbih0LG4sZSl7dC5nZXRTeXN0ZW0oKS5hZGRUb1dvcmxkKG4pLGUodC5lbGVtZW50KCksbi5lbGVtZW50KCkpLE9pKHQuZWxlbWVudCgpKSYmQXMobiksdC5zeW5jQ29tcG9uZW50cygpfSxIcz1mdW5jdGlvbih0KXtNcyh0KSx4cih0LmVsZW1lbnQoKSksdC5nZXRTeXN0ZW0oKS5yZW1vdmVGcm9tV29ybGQodCl9LFBzPWZ1bmN0aW9uKG4pe3ZhciB0PWxyKG4uZWxlbWVudCgpKS5iaW5kKGZ1bmN0aW9uKHQpe3JldHVybiBuLmdldFN5c3RlbSgpLmdldEJ5RG9tKHQpLnRvT3B0aW9uKCl9KTtIcyhuKSx0LmVhY2goZnVuY3Rpb24odCl7dC5zeW5jQ29tcG9uZW50cygpfSl9LHpzPWZ1bmN0aW9uKHQpe3ZhciBuPXQuY29tcG9uZW50cygpO2l0KG4sSHMpLHlyKHQuZWxlbWVudCgpKSx0LnN5bmNDb21wb25lbnRzKCl9LE5zPWZ1bmN0aW9uKHQsbil7THModCxuLHZyKX0sTHM9ZnVuY3Rpb24odCxuLGUpe2UodCxuLmVsZW1lbnQoKSk7dmFyIG89ZHIobi5lbGVtZW50KCkpO2l0KG8sZnVuY3Rpb24odCl7bi5nZXRCeURvbSh0KS5lYWNoKEFzKX0pfSxqcz1mdW5jdGlvbihuKXt2YXIgdD1kcihuLmVsZW1lbnQoKSk7aXQodCxmdW5jdGlvbih0KXtuLmdldEJ5RG9tKHQpLmVhY2goTXMpfSkseHIobi5lbGVtZW50KCkpfSxVcz1mdW5jdGlvbihuLHQsZSxvKXtlLmdldCgpLmVhY2goZnVuY3Rpb24odCl7enMobil9KTt2YXIgcj10LmdldEF0dGFjaFBvaW50KG4pO1JzKHIsbik7dmFyIGk9bi5nZXRTeXN0ZW0oKS5idWlsZChvKTtyZXR1cm4gUnMobixpKSxlLnNldChpKSxpfSxXcz1mdW5jdGlvbih0LG4sZSxvKXt2YXIgcj1Vcyh0LG4sZSxvKTtyZXR1cm4gbi5vbk9wZW4odCxyKSxyfSxHcz1mdW5jdGlvbihuLGUsbyl7by5nZXQoKS5lYWNoKGZ1bmN0aW9uKHQpe3pzKG4pLFBzKG4pLGUub25DbG9zZShuLHQpLG8uY2xlYXIoKX0pfSxYcz1mdW5jdGlvbih0LG4sZSl7cmV0dXJuIGUuaXNPcGVuKCl9LFlzPWZ1bmN0aW9uKHQsbixlKXt2YXIgbyxyLGksdSxhPW4uZ2V0QXR0YWNoUG9pbnQodCk7RGkodC5lbGVtZW50KCksInBvc2l0aW9uIixEcy5nZXRNb2RlKGEpKSxvPXQscj0idmlzaWJpbGl0eSIsaT1uLmNsb2FrVmlzaWJpbGl0eUF0dHIsdT0iaGlkZGVuIixSaShvLmVsZW1lbnQoKSxyKS5mb2xkKGZ1bmN0aW9uKCl7RnIoby5lbGVtZW50KCksaSl9LGZ1bmN0aW9uKHQpe0JyKG8uZWxlbWVudCgpLGksdCl9KSxEaShvLmVsZW1lbnQoKSxyLHUpfSxxcz1mdW5jdGlvbih0LG4sZSl7dmFyIG8scixpLHU7bz10LmVsZW1lbnQoKSxJKFsidG9wIiwibGVmdCIsInJpZ2h0IiwiYm90dG9tIl0sZnVuY3Rpb24odCl7cmV0dXJuIFJpKG8sdCkuaXNTb21lKCl9KXx8SGkodC5lbGVtZW50KCksInBvc2l0aW9uIikscj10LGk9InZpc2liaWxpdHkiLHU9bi5jbG9ha1Zpc2liaWxpdHlBdHRyLE1yKHIuZWxlbWVudCgpLHUpLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm4gSGkoci5lbGVtZW50KCksaSl9LGZ1bmN0aW9uKHQpe3JldHVybiBEaShyLmVsZW1lbnQoKSxpLHQpfSl9LEtzPS8qICovT2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsY2xvYWs6WXMsZGVjbG9hazpxcyxvcGVuOldzLG9wZW5XaGlsZUNsb2FrZWQ6ZnVuY3Rpb24odCxuLGUsbyxyKXtZcyh0LG4pLFdzKHQsbixlLG8pLHIoKSxxcyh0LG4pfSxjbG9zZTpHcyxpc09wZW46WHMsaXNQYXJ0T2Y6ZnVuY3Rpb24obixlLHQsbyl7cmV0dXJuIFhzKDAsMCx0KSYmdC5nZXQoKS5leGlzdHMoZnVuY3Rpb24odCl7cmV0dXJuIGUuaXNQYXJ0T2Yobix0LG8pfSl9LGdldFN0YXRlOmZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gZS5nZXQoKX0sc2V0Q29udGVudDpmdW5jdGlvbih0LG4sZSxvKXtyZXR1cm4gZS5nZXQoKS5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gVXModCxuLGUsbyl9KX19KSxKcz0vKiAqL09iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLGV2ZW50czpmdW5jdGlvbihlLG8pe3JldHVybiBZbyhbSm8oQ28oKSxmdW5jdGlvbih0LG4pe0dzKHQsZSxvKX0pXSl9fSksJHM9WyR1KCJvbk9wZW4iKSwkdSgib25DbG9zZSIpLHpuKCJpc1BhcnRPZiIpLHpuKCJnZXRBdHRhY2hQb2ludCIpLFpuKCJjbG9ha1Zpc2liaWxpdHlBdHRyIiwiZGF0YS1wcmVjbG9hay12aXNpYmlsaXR5IildLFFzPUxhKHtmaWVsZHM6JHMsbmFtZToic2FuZGJveGluZyIsYWN0aXZlOkpzLGFwaXM6S3Msc3RhdGU6LyogKi9PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxpbml0OmZ1bmN0aW9uKCl7dmFyIG49Y2Uoc3Qubm9uZSgpKSx0PWF0KCJub3QtaW1wbGVtZW50ZWQiKTtyZXR1cm4gb2koe3JlYWRTdGF0ZTp0LGlzT3BlbjpmdW5jdGlvbigpe3JldHVybiBuLmdldCgpLmlzU29tZSgpfSxjbGVhcjpmdW5jdGlvbigpe24uc2V0KHN0Lm5vbmUoKSl9LHNldDpmdW5jdGlvbih0KXtuLnNldChzdC5zb21lKHQpKX0sZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG4uZ2V0KCl9fSl9fSl9KSxacz1hdCgiZGlzbWlzcy5wb3B1cHMiKSx0bD1hdCgicmVwb3NpdGlvbi5wb3B1cHMiKSxubD1hdCgibW91c2UucmVsZWFzZWQiKSxlbD1zbihbWm4oImlzRXh0cmFQYXJ0IixhdCghMSkpLFFuKCJmaXJlRXZlbnRJbnN0ZWFkIixbWm4oImV2ZW50IixGbygpKV0pXSksb2w9ZnVuY3Rpb24odCl7dmFyIG4sZT1fbigiRGlzbWlzc2FsIixlbCx0KTtyZXR1cm4obj17fSlbWnMoKV09e3NjaGVtYTpzbihbem4oInRhcmdldCIpXSksb25SZWNlaXZlOmZ1bmN0aW9uKG4sdCl7UXMuaXNPcGVuKG4pJiYoUXMuaXNQYXJ0T2Yobix0LnRhcmdldCl8fGUuaXNFeHRyYVBhcnQobix0LnRhcmdldCl8fGUuZmlyZUV2ZW50SW5zdGVhZC5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIFFzLmNsb3NlKG4pfSxmdW5jdGlvbih0KXtyZXR1cm4gTG8obix0LmV2ZW50KX0pKX19LG59LHJsPXNuKFtRbigiZmlyZUV2ZW50SW5zdGVhZCIsW1puKCJldmVudCIsSW8oKSldKSxVbigiZG9SZXBvc2l0aW9uIildKSxpbD1mdW5jdGlvbih0KXt2YXIgbixlPV9uKCJSZXBvc2l0aW9uIixybCx0KTtyZXR1cm4obj17fSlbdGwoKV09e29uUmVjZWl2ZTpmdW5jdGlvbihuKXtRcy5pc09wZW4obikmJmUuZmlyZUV2ZW50SW5zdGVhZC5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIGUuZG9SZXBvc2l0aW9uKG4pfSxmdW5jdGlvbih0KXtyZXR1cm4gTG8obix0LmV2ZW50KX0pfX0sbn0sdWw9ZnVuY3Rpb24odCxuLGUpe24uc3RvcmUubWFuYWdlci5vbkxvYWQodCxuLGUpfSxhbD1mdW5jdGlvbih0LG4sZSl7bi5zdG9yZS5tYW5hZ2VyLm9uVW5sb2FkKHQsbixlKX0sY2w9LyogKi9PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxvbkxvYWQ6dWwsb25VbmxvYWQ6YWwsc2V0VmFsdWU6ZnVuY3Rpb24odCxuLGUsbyl7bi5zdG9yZS5tYW5hZ2VyLnNldFZhbHVlKHQsbixlLG8pfSxnZXRWYWx1ZTpmdW5jdGlvbih0LG4sZSl7cmV0dXJuIG4uc3RvcmUubWFuYWdlci5nZXRWYWx1ZSh0LG4sZSl9LGdldFN0YXRlOmZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gZX19KSxzbD0vKiAqL09iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLGV2ZW50czpmdW5jdGlvbihlLG8pe3ZhciB0PWUucmVzZXRPbkRvbT9bb3IoZnVuY3Rpb24odCxuKXt1bCh0LGUsbyl9KSxycihmdW5jdGlvbih0LG4pe2FsKHQsZSxvKX0pXTpbSWEoZSxvLHVsKV07cmV0dXJuIFlvKHQpfX0pLGxsPWZ1bmN0aW9uKCl7dmFyIHQ9Y2UobnVsbCk7cmV0dXJuIG9pKHtzZXQ6dC5zZXQsZ2V0OnQuZ2V0LGlzTm90U2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PT10LmdldCgpfSxjbGVhcjpmdW5jdGlvbigpe3Quc2V0KG51bGwpfSxyZWFkU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm57bW9kZToibWVtb3J5Iix2YWx1ZTp0LmdldCgpfX19KX0sZmw9ZnVuY3Rpb24oKXt2YXIgaT1jZSh7fSksdT1jZSh7fSk7cmV0dXJuIG9pKHtyZWFkU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm57bW9kZToiZGF0YXNldCIsZGF0YUJ5VmFsdWU6aS5nZXQoKSxkYXRhQnlUZXh0OnUuZ2V0KCl9fSxsb29rdXA6ZnVuY3Rpb24odCl7cmV0dXJuIGJ0KGkuZ2V0KCksdCkub3JUaHVuayhmdW5jdGlvbigpe3JldHVybiBidCh1LmdldCgpLHQpfSl9LHVwZGF0ZTpmdW5jdGlvbih0KXt2YXIgbj1pLmdldCgpLGU9dS5nZXQoKSxvPXt9LHI9e307aXQodCxmdW5jdGlvbihuKXtvW24udmFsdWVdPW4sYnQobiwibWV0YSIpLmVhY2goZnVuY3Rpb24odCl7YnQodCwidGV4dCIpLmVhY2goZnVuY3Rpb24odCl7clt0XT1ufSl9KX0pLGkuc2V0KGV0KGV0KHt9LG4pLG8pKSx1LnNldChldChldCh7fSxlKSxyKSl9LGNsZWFyOmZ1bmN0aW9uKCl7aS5zZXQoe30pLHUuc2V0KHt9KX19KX0sZGw9LyogKi9PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxtZW1vcnk6bGwsZGF0YXNldDpmbCxtYW51YWw6ZnVuY3Rpb24oKXtyZXR1cm4gb2koe3JlYWRTdGF0ZTpmdW5jdGlvbigpe319KX0saW5pdDpmdW5jdGlvbih0KXtyZXR1cm4gdC5zdG9yZS5tYW5hZ2VyLnN0YXRlKHQpfX0pLG1sPWZ1bmN0aW9uKHQsbixlLG8pe3ZhciByPW4uc3RvcmU7ZS51cGRhdGUoW29dKSxyLnNldFZhbHVlKHQsbyksbi5vblNldFZhbHVlKHQsbyl9LGdsPVtZbigiaW5pdGlhbFZhbHVlIiksem4oImdldEZhbGxiYWNrRW50cnkiKSx6bigiZ2V0RGF0YUtleSIpLHpuKCJzZXRWYWx1ZSIpLG5hKCJtYW5hZ2VyIix7c2V0VmFsdWU6bWwsZ2V0VmFsdWU6ZnVuY3Rpb24odCxuLGUpe3ZhciBvPW4uc3RvcmUscj1vLmdldERhdGFLZXkodCk7cmV0dXJuIGUubG9va3VwKHIpLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm4gby5nZXRGYWxsYmFja0VudHJ5KHIpfSxmdW5jdGlvbih0KXtyZXR1cm4gdH0pfSxvbkxvYWQ6ZnVuY3Rpb24obixlLG8pe2Uuc3RvcmUuaW5pdGlhbFZhbHVlLmVhY2goZnVuY3Rpb24odCl7bWwobixlLG8sdCl9KX0sb25VbmxvYWQ6ZnVuY3Rpb24odCxuLGUpe2UuY2xlYXIoKX0sc3RhdGU6Zmx9KV0scGw9W3puKCJnZXRWYWx1ZSIpLFpuKCJzZXRWYWx1ZSIsWiksWW4oImluaXRpYWxWYWx1ZSIpLG5hKCJtYW5hZ2VyIix7c2V0VmFsdWU6ZnVuY3Rpb24odCxuLGUsbyl7bi5zdG9yZS5zZXRWYWx1ZSh0LG8pLG4ub25TZXRWYWx1ZSh0LG8pfSxnZXRWYWx1ZTpmdW5jdGlvbih0LG4sZSl7cmV0dXJuIG4uc3RvcmUuZ2V0VmFsdWUodCl9LG9uTG9hZDpmdW5jdGlvbihuLGUsdCl7ZS5zdG9yZS5pbml0aWFsVmFsdWUuZWFjaChmdW5jdGlvbih0KXtlLnN0b3JlLnNldFZhbHVlKG4sdCl9KX0sb25VbmxvYWQ6WixzdGF0ZTplaS5pbml0fSldLGhsPVtZbigiaW5pdGlhbFZhbHVlIiksbmEoIm1hbmFnZXIiLHtzZXRWYWx1ZTpmdW5jdGlvbih0LG4sZSxvKXtlLnNldChvKSxuLm9uU2V0VmFsdWUodCxvKX0sZ2V0VmFsdWU6ZnVuY3Rpb24odCxuLGUpe3JldHVybiBlLmdldCgpfSxvbkxvYWQ6ZnVuY3Rpb24odCxuLGUpe24uc3RvcmUuaW5pdGlhbFZhbHVlLmVhY2goZnVuY3Rpb24odCl7ZS5pc05vdFNldCgpJiZlLnNldCh0KX0pfSxvblVubG9hZDpmdW5jdGlvbih0LG4sZSl7ZS5jbGVhcigpfSxzdGF0ZTpsbH0pXSx2bD1bdGUoInN0b3JlIix7bW9kZToibWVtb3J5In0sQm4oIm1vZGUiLHttZW1vcnk6aGwsbWFudWFsOnBsLGRhdGFzZXQ6Z2x9KSksJHUoIm9uU2V0VmFsdWUiKSxabigicmVzZXRPbkRvbSIsITEpXSxibD1MYSh7ZmllbGRzOnZsLG5hbWU6InJlcHJlc2VudGluZyIsYWN0aXZlOnNsLGFwaXM6Y2wsZXh0cmE6e3NldFZhbHVlRnJvbTpmdW5jdGlvbih0LG4pe3ZhciBlPWJsLmdldFZhbHVlKG4pO2JsLnNldFZhbHVlKHQsZSl9fSxzdGF0ZTpkbH0pLHlsPWZ1bmN0aW9uKG8sdCl7cmV0dXJuIHVlKG8se30sVih0LGZ1bmN0aW9uKHQpe3JldHVybiBuPXQubmFtZSgpLGU9IkNhbm5vdCBjb25maWd1cmUgIit0Lm5hbWUoKSsiIGZvciAiK28saG4obixuLFd0KCksY24oZnVuY3Rpb24odCl7cmV0dXJuIFZ0KCJUaGUgZmllbGQ6ICIrbisiIGlzIGZvcmJpZGRlbi4gIitlKX0pKTt2YXIgbixlfSkuY29uY2F0KFthZSgiZHVtcCIsY3QpXSkpfSx4bD1mdW5jdGlvbih0KXtyZXR1cm4gdC5kdW1wfSx3bD1mdW5jdGlvbih0LG4pe3JldHVybiBldChldCh7fSx0LmR1bXApLHphKG4pKX0sU2w9eWwsa2w9d2wsQ2w9InBsYWNlaG9sZGVyIixPbD13dChbe3NpbmdsZTpbInJlcXVpcmVkIiwidmFsdWVUaHVuayJdfSx7bXVsdGlwbGU6WyJyZXF1aXJlZCIsInZhbHVlVGh1bmtzIl19XSksX2w9ZnVuY3Rpb24odCl7cmV0dXJuIHl0KHQsInVpVHlwZSIpfSxUbD1mdW5jdGlvbih0LG4sZSxvKXtyZXR1cm4gX2woZSkmJmUudWlUeXBlPT09Q2w/KGk9ZSx1PW8sKHI9dCkuZXhpc3RzKGZ1bmN0aW9uKHQpe3JldHVybiB0IT09aS5vd25lcn0pP09sLnNpbmdsZSghMCxhdChpKSk6YnQodSxpLm5hbWUpLmZvbGQoZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gcGxhY2Vob2xkZXIgY29tcG9uZW50OiAiK2kubmFtZSsiXG5Lbm93bjogWyIrbHQodSkrIl1cbk5hbWVzcGFjZTogIityLmdldE9yKCJub25lIikrIlxuU3BlYzogIitKU09OLnN0cmluZ2lmeShpLG51bGwsMikpfSxmdW5jdGlvbih0KXtyZXR1cm4gdC5yZXBsYWNlKCl9KSk6T2wuc2luZ2xlKCExLGF0KGUpKTt2YXIgcixpLHV9LEVsPWZ1bmN0aW9uKGksdSxhLGMpe3JldHVybiBUbChpLDAsYSxjKS5mb2xkKGZ1bmN0aW9uKHQsbil7dmFyIGU9X2woYSk/bih1LGEuY29uZmlnLGEudmFsaWRhdGVkKTpuKHUpLG89YnQoZSwiY29tcG9uZW50cyIpLmdldE9yKFtdKSxyPVUobyxmdW5jdGlvbih0KXtyZXR1cm4gRWwoaSx1LHQsYyl9KTtyZXR1cm5bZXQoZXQoe30sZSkse2NvbXBvbmVudHM6cn0pXX0sZnVuY3Rpb24odCxuKXtpZihfbChhKSl7dmFyIGU9bih1LGEuY29uZmlnLGEudmFsaWRhdGVkKTtyZXR1cm4gYS52YWxpZGF0ZWQucHJlcHJvY2Vzcy5nZXRPcihjdCkoZSl9cmV0dXJuIG4odSl9KX0sQmw9ZnVuY3Rpb24obixlLHQsbyl7dmFyIHIsaSx1LGE9ZHQobyxmdW5jdGlvbih0LG4pe3JldHVybiBvPXQscj0hMSx7bmFtZTphdChlPW4pLHJlcXVpcmVkOmZ1bmN0aW9uKCl7cmV0dXJuIG8uZm9sZChmdW5jdGlvbih0LG4pe3JldHVybiB0fSxmdW5jdGlvbih0LG4pe3JldHVybiB0fSl9LHVzZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gcn0scmVwbGFjZTpmdW5jdGlvbigpe2lmKHIpdGhyb3cgbmV3IEVycm9yKCJUcnlpbmcgdG8gdXNlIHRoZSBzYW1lIHBsYWNlaG9sZGVyIG1vcmUgdGhhbiBvbmNlOiAiK2UpO3JldHVybiByPSEwLG99fTt2YXIgZSxvLHJ9KSxjPShyPW4saT1lLHU9YSxVKHQsZnVuY3Rpb24odCl7cmV0dXJuIEVsKHIsaSx0LHUpfSkpO3JldHVybiBmdChhLGZ1bmN0aW9uKHQpe2lmKCExPT09dC51c2VkKCkmJnQucmVxdWlyZWQoKSl0aHJvdyBuZXcgRXJyb3IoIlBsYWNlaG9sZGVyOiAiK3QubmFtZSgpKyIgd2FzIG5vdCBmb3VuZCBpbiBjb21wb25lbnRzIGxpc3Rcbk5hbWVzcGFjZTogIituLmdldE9yKCJub25lIikrIlxuQ29tcG9uZW50czogIitKU09OLnN0cmluZ2lmeShlLmNvbXBvbmVudHMsbnVsbCwyKSl9KSxjfSxEbD1PbC5zaW5nbGUsTWw9T2wubXVsdGlwbGUsQWw9YXQoQ2wpLEZsPXd0KFt7cmVxdWlyZWQ6WyJkYXRhIl19LHtleHRlcm5hbDpbImRhdGEiXX0se29wdGlvbmFsOlsiZGF0YSJdfSx7Z3JvdXA6WyJkYXRhIl19XSksSWw9Wm4oImZhY3RvcnkiLHtza2V0Y2g6Y3R9KSxSbD1abigic2NoZW1hIixbXSksVmw9em4oIm5hbWUiKSxIbD1obigicG5hbWUiLCJwbmFtZSIsR3QoZnVuY3Rpb24odCl7cmV0dXJuIjxhbGxveS4iK05yKHQubmFtZSkrIj4ifSksRG4oKSksUGw9YWUoInNjaGVtYSIsZnVuY3Rpb24oKXtyZXR1cm5bWW4oInByZXByb2Nlc3MiKV19KSx6bD1abigiZGVmYXVsdHMiLGF0KHt9KSksTmw9Wm4oIm92ZXJyaWRlcyIsYXQoe30pKSxMbD1sbihbSWwsUmwsVmwsSGwsemwsTmxdKSxqbD1sbihbSWwsUmwsVmwsemwsTmxdKSxVbD1sbihbSWwsUmwsVmwsSGwsemwsTmxdKSxXbD1sbihbSWwsUGwsVmwsem4oInVuaXQiKSxIbCx6bCxObF0pLEdsPWZ1bmN0aW9uKHQpe3JldHVybiB0LmZvbGQoc3Quc29tZSxzdC5ub25lLHN0LnNvbWUsc3Quc29tZSl9LFhsPWZ1bmN0aW9uKHQpe3ZhciBuPWZ1bmN0aW9uKHQpe3JldHVybiB0Lm5hbWV9O3JldHVybiB0LmZvbGQobixuLG4sbil9LFlsPWZ1bmN0aW9uKGUsbyl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBuPV9uKCJDb252ZXJ0aW5nIHBhcnQgdHlwZSIsbyx0KTtyZXR1cm4gZShuKX19LHFsPVlsKEZsLnJlcXVpcmVkLExsKSxLbD1ZbChGbC5leHRlcm5hbCxqbCksSmw9WWwoRmwub3B0aW9uYWwsVWwpLCRsPVlsKEZsLmdyb3VwLFdsKSxRbD1hdCgiZW50aXJldHkiKSxabD0vKiAqL09iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLHJlcXVpcmVkOnFsLGV4dGVybmFsOktsLG9wdGlvbmFsOkpsLGdyb3VwOiRsLGFzTmFtZWRQYXJ0OkdsLG5hbWU6WGwsYXNDb21tb246ZnVuY3Rpb24odCl7cmV0dXJuIHQuZm9sZChjdCxjdCxjdCxjdCl9LG9yaWdpbmFsOlFsfSksdGY9ZnVuY3Rpb24odCxuLGUsbyl7cmV0dXJuIEN0KG4uZGVmYXVsdHModCxlLG8pLGUse3VpZDp0LnBhcnRVaWRzW24ubmFtZV19LG4ub3ZlcnJpZGVzKHQsZSxvKSl9LG5mPWZ1bmN0aW9uKHIsdCl7dmFyIG49e307cmV0dXJuIGl0KHQsZnVuY3Rpb24odCl7R2wodCkuZWFjaChmdW5jdGlvbihlKXt2YXIgbz1lZihyLGUucG5hbWUpO25bZS5uYW1lXT1mdW5jdGlvbih0KXt2YXIgbj1fbigiUGFydDogIitlLm5hbWUrIiBpbiAiK3IsbG4oZS5zY2hlbWEpLHQpO3JldHVybiBldChldCh7fSxvKSx7Y29uZmlnOnQsdmFsaWRhdGVkOm59KX19KX0pLG59LGVmPWZ1bmN0aW9uKHQsbil7cmV0dXJue3VpVHlwZTpBbCgpLG93bmVyOnQsbmFtZTpufX0sb2Y9ZnVuY3Rpb24odCxuLGUpe3JldHVybnt1aVR5cGU6QWwoKSxvd25lcjp0LG5hbWU6bixjb25maWc6ZSx2YWxpZGF0ZWQ6e319fSxyZj1mdW5jdGlvbih0KXtyZXR1cm4gVSh0LGZ1bmN0aW9uKHQpe3JldHVybiB0LmZvbGQoc3Qubm9uZSxzdC5zb21lLHN0Lm5vbmUsc3Qubm9uZSkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBXbih0Lm5hbWUsdC5zY2hlbWEuY29uY2F0KFtlYShRbCgpKV0pKX0pLnRvQXJyYXkoKX0pfSx1Zj1mdW5jdGlvbih0KXtyZXR1cm4gVih0LFhsKX0sYWY9ZnVuY3Rpb24odCxuLGUpe3JldHVybiBvPW4saT17fSxyPXt9LGl0KGUsZnVuY3Rpb24odCl7dC5mb2xkKGZ1bmN0aW9uKG8pe2lbby5wbmFtZV09RGwoITAsZnVuY3Rpb24odCxuLGUpe3JldHVybiBvLmZhY3Rvcnkuc2tldGNoKHRmKHQsbyxuLGUpKX0pfSxmdW5jdGlvbih0KXt2YXIgbj1vLnBhcnRzW3QubmFtZV07clt0Lm5hbWVdPWF0KHQuZmFjdG9yeS5za2V0Y2godGYobyx0LG5bUWwoKV0pLG4pKX0sZnVuY3Rpb24obyl7aVtvLnBuYW1lXT1EbCghMSxmdW5jdGlvbih0LG4sZSl7cmV0dXJuIG8uZmFjdG9yeS5za2V0Y2godGYodCxvLG4sZSkpfSl9LGZ1bmN0aW9uKHIpe2lbci5wbmFtZV09TWwoITAsZnVuY3Rpb24obix0LGUpe3ZhciBvPW5bci5uYW1lXTtyZXR1cm4gVihvLGZ1bmN0aW9uKHQpe3JldHVybiByLmZhY3Rvcnkuc2tldGNoKEN0KHIuZGVmYXVsdHMobix0LGUpLHQsci5vdmVycmlkZXMobix0KSkpfSl9KX0pfSkse2ludGVybmFsczphdChpKSxleHRlcm5hbHM6YXQocil9O3ZhciBvLGkscn0sY2Y9ZnVuY3Rpb24odCxuLGUpe3JldHVybiBCbChzdC5zb21lKHQpLG4sbi5jb21wb25lbnRzLGUpfSxzZj1mdW5jdGlvbih0LG4sZSl7dmFyIG89bi5wYXJ0VWlkc1tlXTtyZXR1cm4gdC5nZXRTeXN0ZW0oKS5nZXRCeVVpZChvKS50b09wdGlvbigpfSxsZj1mdW5jdGlvbih0LG4sZSl7cmV0dXJuIHNmKHQsbixlKS5nZXRPckRpZSgiQ291bGQgbm90IGZpbmQgcGFydDogIitlKX0sZmY9ZnVuY3Rpb24odCxuLGUpe3ZhciBvPXt9LHI9bi5wYXJ0VWlkcyxpPXQuZ2V0U3lzdGVtKCk7cmV0dXJuIGl0KGUsZnVuY3Rpb24odCl7b1t0XT1hdChpLmdldEJ5VWlkKHJbdF0pKX0pLG99LGRmPWZ1bmN0aW9uKHQsbil7dmFyIGU9dC5nZXRTeXN0ZW0oKTtyZXR1cm4gZHQobi5wYXJ0VWlkcyxmdW5jdGlvbih0LG4pe3JldHVybiBhdChlLmdldEJ5VWlkKHQpKX0pfSxtZj1mdW5jdGlvbih0KXtyZXR1cm4gbHQodC5wYXJ0VWlkcyl9LGdmPWZ1bmN0aW9uKHQsbixlKXt2YXIgbz17fSxyPW4ucGFydFVpZHMsaT10LmdldFN5c3RlbSgpO3JldHVybiBpdChlLGZ1bmN0aW9uKHQpe29bdF09YXQoaS5nZXRCeVVpZChyW3RdKS5nZXRPckRpZSgpKX0pLG99LHBmPWZ1bmN0aW9uKG4sdCl7dmFyIGU9dWYodCk7cmV0dXJuIEp0KFYoZSxmdW5jdGlvbih0KXtyZXR1cm57a2V5OnQsdmFsdWU6bisiLSIrdH19KSl9LGhmPWZ1bmN0aW9uKG4pe3JldHVybiBobigicGFydFVpZHMiLCJwYXJ0VWlkcyIsWHQoZnVuY3Rpb24odCl7cmV0dXJuIHBmKHQudWlkLG4pfSksRG4oKSl9LHZmPS8qICovT2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsZ2VuZXJhdGU6bmYsZ2VuZXJhdGVPbmU6b2Ysc2NoZW1hczpyZixuYW1lczp1ZixzdWJzdGl0dXRlczphZixjb21wb25lbnRzOmNmLGRlZmF1bHRVaWRzOnBmLGRlZmF1bHRVaWRzU2NoZW1hOmhmLGdldEFsbFBhcnRzOmRmLGdldEFsbFBhcnROYW1lczptZixnZXRQYXJ0OnNmLGdldFBhcnRPckRpZTpsZixnZXRQYXJ0czpmZixnZXRQYXJ0c09yRGllOmdmfSksYmY9ZnVuY3Rpb24odCxuLGUsbyxyKXt2YXIgaSx1LGE9KHU9ciwoMDwoaT1vKS5sZW5ndGg/W1duKCJwYXJ0cyIsaSldOltdKS5jb25jYXQoW3puKCJ1aWQiKSxabigiZG9tIix7fSksWm4oImNvbXBvbmVudHMiLFtdKSxlYSgib3JpZ2luYWxTcGVjIiksWm4oImRlYnVnLnNrZXRjaGVyIix7fSldKS5jb25jYXQodSkpO3JldHVybiBfbih0KyIgW1NwZWNTY2hlbWFdIixzbihhLmNvbmNhdChuKSksZSl9LHlmPWZ1bmN0aW9uKHQsbixlLG8scil7dmFyIGk9eGYociksdT1yZihlKSxhPWhmKGUpLGM9YmYodCxuLGksdSxbYV0pLHM9YWYoMCxjLGUpO3JldHVybiBvKGMsY2YodCxjLHMuaW50ZXJuYWxzKCkpLGkscy5leHRlcm5hbHMoKSl9LHhmPWZ1bmN0aW9uKHQpe3JldHVybiB5dCh0LCJ1aWQiKT90OmV0KGV0KHt9LHQpLHt1aWQ6WXIoInVpZCIpfSl9O3ZhciB3ZixTZixrZj1zbihbem4oIm5hbWUiKSx6bigiZmFjdG9yeSIpLHpuKCJjb25maWdGaWVsZHMiKSxabigiYXBpcyIse30pLFpuKCJleHRyYUFwaXMiLHt9KV0pLENmPXNuKFt6bigibmFtZSIpLHpuKCJmYWN0b3J5Iiksem4oImNvbmZpZ0ZpZWxkcyIpLHpuKCJwYXJ0RmllbGRzIiksWm4oImFwaXMiLHt9KSxabigiZXh0cmFBcGlzIix7fSldKSxPZj1mdW5jdGlvbih0KXt2YXIgaT1fbigiU2tldGNoZXIgZm9yICIrdC5uYW1lLGtmLHQpLG49ZHQoaS5hcGlzLG5pKSxlPWR0KGkuZXh0cmFBcGlzLGZ1bmN0aW9uKHQsbil7cmV0dXJuIFFyKHQsbil9KTtyZXR1cm4gZXQoZXQoe25hbWU6YXQoaS5uYW1lKSxjb25maWdGaWVsZHM6YXQoaS5jb25maWdGaWVsZHMpLHNrZXRjaDpmdW5jdGlvbih0KXtyZXR1cm4gbj1pLm5hbWUsZT1pLmNvbmZpZ0ZpZWxkcyxvPWkuZmFjdG9yeSxyPXhmKHQpLG8oYmYobixlLHIsW10sW10pLHIpO3ZhciBuLGUsbyxyfX0sbiksZSl9LF9mPWZ1bmN0aW9uKHQpe3ZhciBuPV9uKCJTa2V0Y2hlciBmb3IgIit0Lm5hbWUsQ2YsdCksZT1uZihuLm5hbWUsbi5wYXJ0RmllbGRzKSxvPWR0KG4uYXBpcyxuaSkscj1kdChuLmV4dHJhQXBpcyxmdW5jdGlvbih0LG4pe3JldHVybiBRcih0LG4pfSk7cmV0dXJuIGV0KGV0KHtuYW1lOmF0KG4ubmFtZSkscGFydEZpZWxkczphdChuLnBhcnRGaWVsZHMpLGNvbmZpZ0ZpZWxkczphdChuLmNvbmZpZ0ZpZWxkcyksc2tldGNoOmZ1bmN0aW9uKHQpe3JldHVybiB5ZihuLm5hbWUsbi5jb25maWdGaWVsZHMsbi5wYXJ0RmllbGRzLG4uZmFjdG9yeSx0KX0scGFydHM6YXQoZSl9LG8pLHIpfSxUZj1mdW5jdGlvbih0KXtmb3IodmFyIG49W10sZT1mdW5jdGlvbih0KXtuLnB1c2godCl9LG89MDtvPHQubGVuZ3RoO28rKyl0W29dLmVhY2goZSk7cmV0dXJuIG59LEVmPWZ1bmN0aW9uKHQpe3JldHVybiJpbnB1dCI9PT1Dcih0KSYmInJhZGlvIiE9PURyKHQsInR5cGUiKXx8InRleHRhcmVhIj09PUNyKHQpfSxCZj0vKiAqL09iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLGdldEN1cnJlbnQ6ZnVuY3Rpb24odCxuLGUpe3JldHVybiBuLmZpbmQodCl9fSksRGY9W3puKCJmaW5kIildLE1mPUxhKHtmaWVsZHM6RGYsbmFtZToiY29tcG9zaW5nIixhcGlzOkJmfSksQWY9ZnVuY3Rpb24oZSxvLHQscil7dmFyIG49WWMoZS5lbGVtZW50KCksIi4iK28uaGlnaGxpZ2h0Q2xhc3MpO2l0KG4sZnVuY3Rpb24obil7SShyLGZ1bmN0aW9uKHQpe3JldHVybiB0LmVsZW1lbnQoKT09PW59KXx8KHhpKG4sby5oaWdobGlnaHRDbGFzcyksZS5nZXRTeXN0ZW0oKS5nZXRCeURvbShuKS5lYWNoKGZ1bmN0aW9uKHQpe28ub25EZWhpZ2hsaWdodChlLHQpLExvKHQsTm8oKSl9KSl9KX0sRmY9ZnVuY3Rpb24odCxuLGUsbyl7QWYodCxuLDAsW29dKSxJZih0LG4sZSxvKXx8KGJpKG8uZWxlbWVudCgpLG4uaGlnaGxpZ2h0Q2xhc3MpLG4ub25IaWdobGlnaHQodCxvKSxMbyhvLHpvKCkpKX0sSWY9ZnVuY3Rpb24odCxuLGUsbyl7cmV0dXJuIHdpKG8uZWxlbWVudCgpLG4uaGlnaGxpZ2h0Q2xhc3MpfSxSZj1mdW5jdGlvbih0LG4sZSxvKXt2YXIgcj1ZYyh0LmVsZW1lbnQoKSwiLiIrbi5pdGVtQ2xhc3MpO3JldHVybiBzdC5mcm9tKHJbb10pLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm4gb3QuZXJyb3IoIk5vIGVsZW1lbnQgZm91bmQgd2l0aCBpbmRleCAiK28pfSx0LmdldFN5c3RlbSgpLmdldEJ5RG9tKX0sVmY9ZnVuY3Rpb24obix0LGUpe3JldHVybiBNdShuLmVsZW1lbnQoKSwiLiIrdC5pdGVtQ2xhc3MpLmJpbmQoZnVuY3Rpb24odCl7cmV0dXJuIG4uZ2V0U3lzdGVtKCkuZ2V0QnlEb20odCkudG9PcHRpb24oKX0pfSxIZj1mdW5jdGlvbihuLHQsZSl7dmFyIG89WWMobi5lbGVtZW50KCksIi4iK3QuaXRlbUNsYXNzKTtyZXR1cm4oMDxvLmxlbmd0aD9zdC5zb21lKG9bby5sZW5ndGgtMV0pOnN0Lm5vbmUoKSkuYmluZChmdW5jdGlvbih0KXtyZXR1cm4gbi5nZXRTeXN0ZW0oKS5nZXRCeURvbSh0KS50b09wdGlvbigpfSl9LFBmPWZ1bmN0aW9uKGUsbix0LG8pe3ZhciByPVljKGUuZWxlbWVudCgpLCIuIituLml0ZW1DbGFzcyk7cmV0dXJuIGoocixmdW5jdGlvbih0KXtyZXR1cm4gd2kodCxuLmhpZ2hsaWdodENsYXNzKX0pLmJpbmQoZnVuY3Rpb24odCl7dmFyIG49Y2ModCxvLDAsci5sZW5ndGgtMSk7cmV0dXJuIGUuZ2V0U3lzdGVtKCkuZ2V0QnlEb20ocltuXSkudG9PcHRpb24oKX0pfSx6Zj1mdW5jdGlvbihuLHQsZSl7dmFyIG89WWMobi5lbGVtZW50KCksIi4iK3QuaXRlbUNsYXNzKTtyZXR1cm4gVGYoVihvLGZ1bmN0aW9uKHQpe3JldHVybiBuLmdldFN5c3RlbSgpLmdldEJ5RG9tKHQpLnRvT3B0aW9uKCl9KSl9LE5mPS8qICovT2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsZGVoaWdobGlnaHRBbGw6ZnVuY3Rpb24odCxuLGUpe3JldHVybiBBZih0LG4sMCxbXSl9LGRlaGlnaGxpZ2h0OmZ1bmN0aW9uKHQsbixlLG8pe0lmKHQsbixlLG8pJiYoeGkoby5lbGVtZW50KCksbi5oaWdobGlnaHRDbGFzcyksbi5vbkRlaGlnaGxpZ2h0KHQsbyksTG8obyxObygpKSl9LGhpZ2hsaWdodDpGZixoaWdobGlnaHRGaXJzdDpmdW5jdGlvbihuLGUsbyl7VmYobixlKS5lYWNoKGZ1bmN0aW9uKHQpe0ZmKG4sZSxvLHQpfSl9LGhpZ2hsaWdodExhc3Q6ZnVuY3Rpb24obixlLG8pe0hmKG4sZSkuZWFjaChmdW5jdGlvbih0KXtGZihuLGUsbyx0KX0pfSxoaWdobGlnaHRBdDpmdW5jdGlvbihuLGUsbyx0KXtSZihuLGUsbyx0KS5mb2xkKGZ1bmN0aW9uKHQpe3Rocm93IG5ldyBFcnJvcih0KX0sZnVuY3Rpb24odCl7RmYobixlLG8sdCl9KX0saGlnaGxpZ2h0Qnk6ZnVuY3Rpb24obixlLG8sdCl7dmFyIHI9emYobixlKTtMKHIsdCkuZWFjaChmdW5jdGlvbih0KXtGZihuLGUsbyx0KX0pfSxpc0hpZ2hsaWdodGVkOklmLGdldEhpZ2hsaWdodGVkOmZ1bmN0aW9uKG4sdCxlKXtyZXR1cm4gTXUobi5lbGVtZW50KCksIi4iK3QuaGlnaGxpZ2h0Q2xhc3MpLmJpbmQoZnVuY3Rpb24odCl7cmV0dXJuIG4uZ2V0U3lzdGVtKCkuZ2V0QnlEb20odCkudG9PcHRpb24oKX0pfSxnZXRGaXJzdDpWZixnZXRMYXN0OkhmLGdldFByZXZpb3VzOmZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gUGYodCxuLDAsLTEpfSxnZXROZXh0OmZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gUGYodCxuLDAsMSl9LGdldENhbmRpZGF0ZXM6emZ9KSxMZj1bem4oImhpZ2hsaWdodENsYXNzIiksem4oIml0ZW1DbGFzcyIpLCR1KCJvbkhpZ2hsaWdodCIpLCR1KCJvbkRlaGlnaGxpZ2h0IildLGpmPUxhKHtmaWVsZHM6TGYsbmFtZToiaGlnaGxpZ2h0aW5nIixhcGlzOk5mfSksVWY9ZnVuY3Rpb24oKXtyZXR1cm5bMTNdfSxXZj1mdW5jdGlvbigpe3JldHVyblsyN119LEdmPWZ1bmN0aW9uKCl7cmV0dXJuWzMyXX0sWGY9ZnVuY3Rpb24oKXtyZXR1cm5bMzddfSxZZj1mdW5jdGlvbigpe3JldHVyblszOF19LHFmPWZ1bmN0aW9uKCl7cmV0dXJuWzM5XX0sS2Y9ZnVuY3Rpb24oKXtyZXR1cm5bNDBdfSxKZj1mdW5jdGlvbih0LG4sZSl7dmFyIG89Ryh0LnNsaWNlKDAsbikpLHI9Ryh0LnNsaWNlKG4rMSkpO3JldHVybiBMKG8uY29uY2F0KHIpLGUpfSwkZj1mdW5jdGlvbih0LG4sZSl7dmFyIG89Ryh0LnNsaWNlKDAsbikpO3JldHVybiBMKG8sZSl9LFFmPWZ1bmN0aW9uKHQsbixlKXt2YXIgbz10LnNsaWNlKDAsbikscj10LnNsaWNlKG4rMSk7cmV0dXJuIEwoci5jb25jYXQobyksZSl9LFpmPWZ1bmN0aW9uKHQsbixlKXt2YXIgbz10LnNsaWNlKG4rMSk7cmV0dXJuIEwobyxlKX0sdGQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBuPXQucmF3KCk7cmV0dXJuIEYoZSxuLndoaWNoKX19LG5kPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gVyh0LGZ1bmN0aW9uKHQpe3JldHVybiB0KG4pfSl9fSxlZD1mdW5jdGlvbih0KXtyZXR1cm4hMD09PXQucmF3KCkuc2hpZnRLZXl9LG9kPWZ1bmN0aW9uKHQpe3JldHVybiEwPT09dC5yYXcoKS5jdHJsS2V5fSxyZD14KGVkKSxpZD1mdW5jdGlvbih0LG4pe3JldHVybnttYXRjaGVzOnQsY2xhc3NpZmljYXRpb246bn19LHVkPWZ1bmN0aW9uKHQsbixlKXtuLmV4aXN0cyhmdW5jdGlvbihuKXtyZXR1cm4gZS5leGlzdHMoZnVuY3Rpb24odCl7cmV0dXJuIExlKHQsbil9KX0pfHxqbyh0LFJvKCkse3ByZXZGb2N1czpuLG5ld0ZvY3VzOmV9KX0sYWQ9ZnVuY3Rpb24oKXt2YXIgcj1mdW5jdGlvbih0KXtyZXR1cm4gJGEodC5lbGVtZW50KCkpfTtyZXR1cm57Z2V0OnIsc2V0OmZ1bmN0aW9uKHQsbil7dmFyIGU9cih0KTt0LmdldFN5c3RlbSgpLnRyaWdnZXJGb2N1cyhuLHQuZWxlbWVudCgpKTt2YXIgbz1yKHQpO3VkKHQsZSxvKX19fSxjZD1mdW5jdGlvbigpe3ZhciByPWZ1bmN0aW9uKHQpe3JldHVybiBqZi5nZXRIaWdobGlnaHRlZCh0KS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQuZWxlbWVudCgpfSl9O3JldHVybntnZXQ6cixzZXQ6ZnVuY3Rpb24obix0KXt2YXIgZT1yKG4pO24uZ2V0U3lzdGVtKCkuZ2V0QnlEb20odCkuZm9sZChaLGZ1bmN0aW9uKHQpe2pmLmhpZ2hsaWdodChuLHQpfSk7dmFyIG89cihuKTt1ZChuLGUsbyl9fX07KFNmPXdmPXdmfHx7fSkuT25Gb2N1c01vZGU9Im9uRm9jdXMiLFNmLk9uRW50ZXJPclNwYWNlTW9kZT0ib25FbnRlck9yU3BhY2UiLFNmLk9uQXBpTW9kZT0ib25BcGkiO3ZhciBzZCxsZD1mdW5jdGlvbih0LG4sZSxvLGEpe3ZhciBjPWZ1bmN0aW9uKG4sZSx0LG8scil7dmFyIGksdSxhPXQobixlLG8scik7cmV0dXJuIGk9YSx1PWUuZXZlbnQoKSxMKGksZnVuY3Rpb24odCl7cmV0dXJuIHQubWF0Y2hlcyh1KX0pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5jbGFzc2lmaWNhdGlvbn0pLmJpbmQoZnVuY3Rpb24odCl7cmV0dXJuIHQobixlLG8scil9KX0scj17c2NoZW1hOmZ1bmN0aW9uKCl7cmV0dXJuIHQuY29uY2F0KFtabigiZm9jdXNNYW5hZ2VyIixhZCgpKSx0ZSgiZm9jdXNJbnNpZGUiLCJvbkZvY3VzIixTbihmdW5jdGlvbih0KXtyZXR1cm4gRihbIm9uRm9jdXMiLCJvbkVudGVyT3JTcGFjZSIsIm9uQXBpIl0sdCk/b3QudmFsdWUodCk6b3QuZXJyb3IoIkludmFsaWQgdmFsdWUgZm9yIGZvY3VzSW5zaWRlIil9KSksbmEoImhhbmRsZXIiLHIpLG5hKCJzdGF0ZSIsbiksbmEoInNlbmRGb2N1c0luIixhKV0pfSxwcm9jZXNzS2V5OmMsdG9FdmVudHM6ZnVuY3Rpb24oaSx1KXt2YXIgdD1pLmZvY3VzSW5zaWRlIT09d2YuT25Gb2N1c01vZGU/c3Qubm9uZSgpOmEoaSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBKbyhobygpLGZ1bmN0aW9uKHQsbil7ZSh0LGksdSksbi5zdG9wKCl9KX0pLG49W0pvKGFvKCksZnVuY3Rpb24obyxyKXtjKG8scixlLGksdSkuZm9sZChmdW5jdGlvbigpe3ZhciBuLGUsdDtuPW8sZT1yLHQ9dGQoR2YoKS5jb25jYXQoVWYoKSkpKGUuZXZlbnQoKSksaS5mb2N1c0luc2lkZT09PXdmLk9uRW50ZXJPclNwYWNlTW9kZSYmdCYmWWUobixlKSYmYShpKS5lYWNoKGZ1bmN0aW9uKHQpe3QobixpLHUpLGUuc3RvcCgpfSl9LGZ1bmN0aW9uKHQpe3Iuc3RvcCgpfSl9KSxKbyhjbygpLGZ1bmN0aW9uKHQsbil7Yyh0LG4sbyxpLHUpLmVhY2goZnVuY3Rpb24odCl7bi5zdG9wKCl9KX0pXTtyZXR1cm4gWW8odC50b0FycmF5KCkuY29uY2F0KG4pKX19O3JldHVybiByfSxmZD1mdW5jdGlvbih0KXt2YXIgbj1bWW4oIm9uRXNjYXBlIiksWW4oIm9uRW50ZXIiKSxabigic2VsZWN0b3IiLCdbZGF0YS1hbGxveS10YWJzdG9wPSJ0cnVlIl06bm90KDpkaXNhYmxlZCknKSxabigiZmlyc3RUYWJzdG9wIiwwKSxabigidXNlVGFic3RvcEF0IixhdCghMCkpLFluKCJ2aXNpYmlsaXR5U2VsZWN0b3IiKV0uY29uY2F0KFt0XSksdT1mdW5jdGlvbih0LG4pe3ZhciBlPXQudmlzaWJpbGl0eVNlbGVjdG9yLmJpbmQoZnVuY3Rpb24odCl7cmV0dXJuIEF1KG4sdCl9KS5nZXRPcihuKTtyZXR1cm4gMDx0dShlKX0sZT1mdW5jdGlvbihuLGUsdCl7dmFyIG8scixpO289ZSxyPVljKG4uZWxlbWVudCgpLG8uc2VsZWN0b3IpLGk9UChyLGZ1bmN0aW9uKHQpe3JldHVybiB1KG8sdCl9KSxzdC5mcm9tKGlbby5maXJzdFRhYnN0b3BdKS5lYWNoKGZ1bmN0aW9uKHQpe2UuZm9jdXNNYW5hZ2VyLnNldChuLHQpfSl9LGE9ZnVuY3Rpb24obix0LGUsbyxyKXtyZXR1cm4gcih0LGUsZnVuY3Rpb24odCl7cmV0dXJuIHUobj1vLGU9dCkmJm4udXNlVGFic3RvcEF0KGUpO3ZhciBuLGV9KS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIG8uY3ljbGljP3N0LnNvbWUoITApOnN0Lm5vbmUoKX0sZnVuY3Rpb24odCl7cmV0dXJuIG8uZm9jdXNNYW5hZ2VyLnNldChuLHQpLHN0LnNvbWUoITApfSl9LHI9ZnVuY3Rpb24obix0LGUsbyl7dmFyIHIsaSx1PVljKG4uZWxlbWVudCgpLGUuc2VsZWN0b3IpO3JldHVybiByPW4sKGk9ZSkuZm9jdXNNYW5hZ2VyLmdldChyKS5iaW5kKGZ1bmN0aW9uKHQpe3JldHVybiBBdSh0LGkuc2VsZWN0b3IpfSkuYmluZChmdW5jdGlvbih0KXtyZXR1cm4gaih1LGcoTGUsdCkpLmJpbmQoZnVuY3Rpb24odCl7cmV0dXJuIGEobix1LHQsZSxvKX0pfSl9LG89YXQoW2lkKG5kKFtlZCx0ZChbOV0pXSksZnVuY3Rpb24odCxuLGUpe3ZhciBvPWUuY3ljbGljP0pmOiRmO3JldHVybiByKHQsMCxlLG8pfSksaWQodGQoWzldKSxmdW5jdGlvbih0LG4sZSl7dmFyIG89ZS5jeWNsaWM/UWY6WmY7cmV0dXJuIHIodCwwLGUsbyl9KSxpZCh0ZChXZigpKSxmdW5jdGlvbihuLGUsdCl7cmV0dXJuIHQub25Fc2NhcGUuYmluZChmdW5jdGlvbih0KXtyZXR1cm4gdChuLGUpfSl9KSxpZChuZChbcmQsdGQoVWYoKSldKSxmdW5jdGlvbihuLGUsdCl7cmV0dXJuIHQub25FbnRlci5iaW5kKGZ1bmN0aW9uKHQpe3JldHVybiB0KG4sZSl9KX0pXSksaT1hdChbXSk7cmV0dXJuIGxkKG4sZWkuaW5pdCxvLGksZnVuY3Rpb24oKXtyZXR1cm4gc3Quc29tZShlKX0pfSxkZD1mZChhZSgiY3ljbGljIixhdCghMSkpKSxtZD1mZChhZSgiY3ljbGljIixhdCghMCkpKSxnZD1mdW5jdGlvbih0LG4sZSl7cmV0dXJuIEVmKGUpJiZ0ZChHZigpKShuLmV2ZW50KCkpP3N0Lm5vbmUoKTooV28odCxlLHhvKCkpLHN0LnNvbWUoITApKX0scGQ9ZnVuY3Rpb24odCxuKXtyZXR1cm4gc3Quc29tZSghMCl9LGhkPVtabigiZXhlY3V0ZSIsZ2QpLFpuKCJ1c2VTcGFjZSIsITEpLFpuKCJ1c2VFbnRlciIsITApLFpuKCJ1c2VDb250cm9sRW50ZXIiLCExKSxabigidXNlRG93biIsITEpXSx2ZD1mdW5jdGlvbih0LG4sZSl7cmV0dXJuIGUuZXhlY3V0ZSh0LG4sdC5lbGVtZW50KCkpfSxiZD1sZChoZCxlaS5pbml0LGZ1bmN0aW9uKHQsbixlLG8pe3ZhciByPWUudXNlU3BhY2UmJiFFZih0LmVsZW1lbnQoKSk/R2YoKTpbXSxpPWUudXNlRW50ZXI/VWYoKTpbXSx1PWUudXNlRG93bj9LZigpOltdLGE9ci5jb25jYXQoaSkuY29uY2F0KHUpO3JldHVybltpZCh0ZChhKSx2ZCldLmNvbmNhdChlLnVzZUNvbnRyb2xFbnRlcj9baWQobmQoW29kLHRkKFVmKCkpXSksdmQpXTpbXSl9LGZ1bmN0aW9uKHQsbixlLG8pe3JldHVybiBlLnVzZVNwYWNlJiYhRWYodC5lbGVtZW50KCkpP1tpZCh0ZChHZigpKSxwZCldOltdfSxmdW5jdGlvbigpe3JldHVybiBzdC5ub25lKCl9KSx5ZD1mdW5jdGlvbigpe3ZhciBlPWNlKHN0Lm5vbmUoKSk7cmV0dXJuIG9pKHtyZWFkU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gZS5nZXQoKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJue251bVJvd3M6U3RyaW5nKHQubnVtUm93cyksbnVtQ29sdW1uczpTdHJpbmcodC5udW1Db2x1bW5zKX19KS5nZXRPcih7bnVtUm93czoiPyIsbnVtQ29sdW1uczoiPyJ9KX0sc2V0R3JpZFNpemU6ZnVuY3Rpb24odCxuKXtlLnNldChzdC5zb21lKHtudW1Sb3dzOnQsbnVtQ29sdW1uczpufSkpfSxnZXROdW1Sb3dzOmZ1bmN0aW9uKCl7cmV0dXJuIGUuZ2V0KCkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm51bVJvd3N9KX0sZ2V0TnVtQ29sdW1uczpmdW5jdGlvbigpe3JldHVybiBlLmdldCgpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5udW1Db2x1bW5zfSl9fSl9LHhkPS8qICovT2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsZmxhdGdyaWQ6eWQsaW5pdDpmdW5jdGlvbih0KXtyZXR1cm4gdC5zdGF0ZSh0KX19KSx3ZD1mdW5jdGlvbihpKXtyZXR1cm4gZnVuY3Rpb24odCxuLGUsbyl7dmFyIHI9aSh0LmVsZW1lbnQoKSk7cmV0dXJuIE9kKHIsdCxuLGUsbyl9fSxTZD1mdW5jdGlvbih0LG4pe3ZhciBlPWtjKHQsbik7cmV0dXJuIHdkKGUpfSxrZD1mdW5jdGlvbih0LG4pe3ZhciBlPWtjKG4sdCk7cmV0dXJuIHdkKGUpfSxDZD1mdW5jdGlvbihyKXtyZXR1cm4gZnVuY3Rpb24odCxuLGUsbyl7cmV0dXJuIE9kKHIsdCxuLGUsbyl9fSxPZD1mdW5jdGlvbihuLGUsdCxvLHIpe3JldHVybiBvLmZvY3VzTWFuYWdlci5nZXQoZSkuYmluZChmdW5jdGlvbih0KXtyZXR1cm4gbihlLmVsZW1lbnQoKSx0LG8scil9KS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIG8uZm9jdXNNYW5hZ2VyLnNldChlLHQpLCEwfSl9LF9kPUNkLFRkPUNkLEVkPUNkLEJkPWZ1bmN0aW9uKHQpe3JldHVybiEoKG49dC5kb20oKSkub2Zmc2V0V2lkdGg8PTAmJm4ub2Zmc2V0SGVpZ2h0PD0wKTt2YXIgbn0sRGQ9ZnVuY3Rpb24odCxuLGUpe3ZhciBvLHI9WWModCxlKSxpPVAocixCZCk7cmV0dXJuIGoobz1pLGZ1bmN0aW9uKHQpe3JldHVybiBMZSh0LG4pfSkubWFwKGZ1bmN0aW9uKHQpe3JldHVybntpbmRleDphdCh0KSxjYW5kaWRhdGVzOmF0KG8pfX0pfSxNZD1mdW5jdGlvbih0LG4pe3JldHVybiBqKHQsZnVuY3Rpb24odCl7cmV0dXJuIExlKG4sdCl9KX0sQWQ9ZnVuY3Rpb24oZSx0LG8sbil7cmV0dXJuIG4oTWF0aC5mbG9vcih0L28pLHQlbykuYmluZChmdW5jdGlvbih0KXt2YXIgbj10LnJvdygpKm8rdC5jb2x1bW4oKTtyZXR1cm4gMDw9biYmbjxlLmxlbmd0aD9zdC5zb21lKGVbbl0pOnN0Lm5vbmUoKX0pfSxGZD1mdW5jdGlvbihyLHQsaSx1LGEpe3JldHVybiBBZChyLHQsdSxmdW5jdGlvbih0LG4pe3ZhciBlPXQ9PT1pLTE/ci5sZW5ndGgtdCp1OnUsbz1jYyhuLGEsMCxlLTEpO3JldHVybiBzdC5zb21lKHtyb3c6YXQodCksY29sdW1uOmF0KG8pfSl9KX0sSWQ9ZnVuY3Rpb24oaSx0LHUsYSxjKXtyZXR1cm4gQWQoaSx0LGEsZnVuY3Rpb24odCxuKXt2YXIgZT1jYyh0LGMsMCx1LTEpLG89ZT09PXUtMT9pLmxlbmd0aC1lKmE6YSxyPXNjKG4sMCxvLTEpO3JldHVybiBzdC5zb21lKHtyb3c6YXQoZSksY29sdW1uOmF0KHIpfSl9KX0sUmQ9W3puKCJzZWxlY3RvciIpLFpuKCJleGVjdXRlIixnZCksUXUoIm9uRXNjYXBlIiksWm4oImNhcHR1cmVUYWIiLCExKSxvYSgpXSxWZD1mdW5jdGlvbihuLGUsdCl7TXUobi5lbGVtZW50KCksZS5zZWxlY3RvcikuZWFjaChmdW5jdGlvbih0KXtlLmZvY3VzTWFuYWdlci5zZXQobix0KX0pfSxIZD1mdW5jdGlvbihyKXtyZXR1cm4gZnVuY3Rpb24odCxuLGUsbyl7cmV0dXJuIERkKHQsbixlLnNlbGVjdG9yKS5iaW5kKGZ1bmN0aW9uKHQpe3JldHVybiByKHQuY2FuZGlkYXRlcygpLHQuaW5kZXgoKSxvLmdldE51bVJvd3MoKS5nZXRPcihlLmluaXRTaXplLm51bVJvd3MpLG8uZ2V0TnVtQ29sdW1ucygpLmdldE9yKGUuaW5pdFNpemUubnVtQ29sdW1ucykpfSl9fSxQZD1mdW5jdGlvbih0LG4sZSl7cmV0dXJuIGUuY2FwdHVyZVRhYj9zdC5zb21lKCEwKTpzdC5ub25lKCl9LHpkPUhkKGZ1bmN0aW9uKHQsbixlLG8pe3JldHVybiBGZCh0LG4sZSxvLC0xKX0pLE5kPUhkKGZ1bmN0aW9uKHQsbixlLG8pe3JldHVybiBGZCh0LG4sZSxvLDEpfSksTGQ9SGQoZnVuY3Rpb24odCxuLGUsbyl7cmV0dXJuIElkKHQsbixlLG8sLTEpfSksamQ9SGQoZnVuY3Rpb24odCxuLGUsbyl7cmV0dXJuIElkKHQsbixlLG8sMSl9KSxVZD1hdChbaWQodGQoWGYoKSksU2QoemQsTmQpKSxpZCh0ZChxZigpKSxrZCh6ZCxOZCkpLGlkKHRkKFlmKCkpLF9kKExkKSksaWQodGQoS2YoKSksVGQoamQpKSxpZChuZChbZWQsdGQoWzldKV0pLFBkKSxpZChuZChbcmQsdGQoWzldKV0pLFBkKSxpZCh0ZChXZigpKSxmdW5jdGlvbih0LG4sZSl7cmV0dXJuIGUub25Fc2NhcGUodCxuKX0pLGlkKHRkKEdmKCkuY29uY2F0KFVmKCkpKSxmdW5jdGlvbihuLGUsbyx0KXtyZXR1cm4gcj1uLChpPW8pLmZvY3VzTWFuYWdlci5nZXQocikuYmluZChmdW5jdGlvbih0KXtyZXR1cm4gQXUodCxpLnNlbGVjdG9yKX0pLmJpbmQoZnVuY3Rpb24odCl7cmV0dXJuIG8uZXhlY3V0ZShuLGUsdCl9KTt2YXIgcixpfSldKSxXZD1hdChbaWQodGQoR2YoKSkscGQpXSksR2Q9bGQoUmQseWQsVWQsV2QsZnVuY3Rpb24oKXtyZXR1cm4gc3Quc29tZShWZCl9KSxYZD1mdW5jdGlvbih0LG4sZSxpKXt2YXIgdT1mdW5jdGlvbih0LG4sZSl7dmFyIG8scj1jYyhuLGksMCxlLmxlbmd0aC0xKTtyZXR1cm4gcj09PXQ/c3Qubm9uZSgpOihvPWVbcl0sImJ1dHRvbiI9PT1DcihvKSYmImRpc2FibGVkIj09PURyKG8sImRpc2FibGVkIik/dSh0LHIsZSk6c3QuZnJvbShlW3JdKSl9O3JldHVybiBEZCh0LGUsbikuYmluZChmdW5jdGlvbih0KXt2YXIgbj10LmluZGV4KCksZT10LmNhbmRpZGF0ZXMoKTtyZXR1cm4gdShuLG4sZSl9KX0sWWQ9W3puKCJzZWxlY3RvciIpLFpuKCJnZXRJbml0aWFsIixzdC5ub25lKSxabigiZXhlY3V0ZSIsZ2QpLFF1KCJvbkVzY2FwZSIpLFpuKCJleGVjdXRlT25Nb3ZlIiwhMSksWm4oImFsbG93VmVydGljYWwiLCEwKV0scWQ9ZnVuY3Rpb24obixlLG8pe3JldHVybiB0PW4sKHI9bykuZm9jdXNNYW5hZ2VyLmdldCh0KS5iaW5kKGZ1bmN0aW9uKHQpe3JldHVybiBBdSh0LHIuc2VsZWN0b3IpfSkuYmluZChmdW5jdGlvbih0KXtyZXR1cm4gby5leGVjdXRlKG4sZSx0KX0pO3ZhciB0LHJ9LEtkPWZ1bmN0aW9uKG4sZSx0KXtlLmdldEluaXRpYWwobikub3JUaHVuayhmdW5jdGlvbigpe3JldHVybiBNdShuLmVsZW1lbnQoKSxlLnNlbGVjdG9yKX0pLmVhY2goZnVuY3Rpb24odCl7ZS5mb2N1c01hbmFnZXIuc2V0KG4sdCl9KX0sSmQ9ZnVuY3Rpb24odCxuLGUpe3JldHVybiBYZCh0LGUuc2VsZWN0b3IsbiwtMSl9LCRkPWZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gWGQodCxlLnNlbGVjdG9yLG4sMSl9LFFkPWZ1bmN0aW9uKHIpe3JldHVybiBmdW5jdGlvbih0LG4sZSxvKXtyZXR1cm4gcih0LG4sZSxvKS5iaW5kKGZ1bmN0aW9uKCl7cmV0dXJuIGUuZXhlY3V0ZU9uTW92ZT9xZCh0LG4sZSk6c3Quc29tZSghMCl9KX19LFpkPWZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gZS5vbkVzY2FwZSh0LG4pfSx0bT1hdChbaWQodGQoR2YoKSkscGQpXSksbm09bGQoWWQsZWkuaW5pdCxmdW5jdGlvbih0LG4sZSxvKXt2YXIgcj1YZigpLmNvbmNhdChlLmFsbG93VmVydGljYWw/WWYoKTpbXSksaT1xZigpLmNvbmNhdChlLmFsbG93VmVydGljYWw/S2YoKTpbXSk7cmV0dXJuW2lkKHRkKHIpLFFkKFNkKEpkLCRkKSkpLGlkKHRkKGkpLFFkKGtkKEpkLCRkKSkpLGlkKHRkKFVmKCkpLHFkKSxpZCh0ZChHZigpKSxxZCksaWQodGQoV2YoKSksWmQpXX0sdG0sZnVuY3Rpb24oKXtyZXR1cm4gc3Quc29tZShLZCl9KSxlbT1mdW5jdGlvbih0LG4sZSl7cmV0dXJuIHN0LmZyb20odFtuXSkuYmluZChmdW5jdGlvbih0KXtyZXR1cm4gc3QuZnJvbSh0W2VdKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJue3Jvd0luZGV4Om4sY29sdW1uSW5kZXg6ZSxjZWxsOnR9fSl9KX0sb209ZnVuY3Rpb24odCxuLGUsbyl7dmFyIHI9dFtuXS5sZW5ndGgsaT1jYyhlLG8sMCxyLTEpO3JldHVybiBlbSh0LG4saSl9LHJtPWZ1bmN0aW9uKHQsbixlLG8pe3ZhciByPWNjKGUsbywwLHQubGVuZ3RoLTEpLGk9dFtyXS5sZW5ndGgsdT1zYyhuLDAsaS0xKTtyZXR1cm4gZW0odCxyLHUpfSxpbT1mdW5jdGlvbih0LG4sZSxvKXt2YXIgcj10W25dLmxlbmd0aCxpPXNjKGUrbywwLHItMSk7cmV0dXJuIGVtKHQsbixpKX0sdW09ZnVuY3Rpb24odCxuLGUsbyl7dmFyIHI9c2MoZStvLDAsdC5sZW5ndGgtMSksaT10W3JdLmxlbmd0aCx1PXNjKG4sMCxpLTEpO3JldHVybiBlbSh0LHIsdSl9LGFtPVtXbigic2VsZWN0b3JzIixbem4oInJvdyIpLHpuKCJjZWxsIildKSxabigiY3ljbGVzIiwhMCksWm4oInByZXZpb3VzU2VsZWN0b3IiLHN0Lm5vbmUpLFpuKCJleGVjdXRlIixnZCldLGNtPWZ1bmN0aW9uKG4sZSx0KXtlLnByZXZpb3VzU2VsZWN0b3Iobikub3JUaHVuayhmdW5jdGlvbigpe3ZhciB0PWUuc2VsZWN0b3JzO3JldHVybiBNdShuLmVsZW1lbnQoKSx0LmNlbGwpfSkuZWFjaChmdW5jdGlvbih0KXtlLmZvY3VzTWFuYWdlci5zZXQobix0KX0pfSxzbT1mdW5jdGlvbih0LG4pe3JldHVybiBmdW5jdGlvbihlLG8saSl7dmFyIHU9aS5jeWNsZXM/dDpuO3JldHVybiBBdShvLGkuc2VsZWN0b3JzLnJvdykuYmluZChmdW5jdGlvbih0KXt2YXIgbj1ZYyh0LGkuc2VsZWN0b3JzLmNlbGwpO3JldHVybiBNZChuLG8pLmJpbmQoZnVuY3Rpb24obyl7dmFyIHI9WWMoZSxpLnNlbGVjdG9ycy5yb3cpO3JldHVybiBNZChyLHQpLmJpbmQoZnVuY3Rpb24odCl7dmFyIG4sZT0obj1pLFYocixmdW5jdGlvbih0KXtyZXR1cm4gWWModCxuLnNlbGVjdG9ycy5jZWxsKX0pKTtyZXR1cm4gdShlLHQsbykubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LmNlbGx9KX0pfSl9KX19LGxtPXNtKGZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gb20odCxuLGUsLTEpfSxmdW5jdGlvbih0LG4sZSl7cmV0dXJuIGltKHQsbixlLC0xKX0pLGZtPXNtKGZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gb20odCxuLGUsMSl9LGZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gaW0odCxuLGUsMSl9KSxkbT1zbShmdW5jdGlvbih0LG4sZSl7cmV0dXJuIHJtKHQsZSxuLC0xKX0sZnVuY3Rpb24odCxuLGUpe3JldHVybiB1bSh0LGUsbiwtMSl9KSxtbT1zbShmdW5jdGlvbih0LG4sZSl7cmV0dXJuIHJtKHQsZSxuLDEpfSxmdW5jdGlvbih0LG4sZSl7cmV0dXJuIHVtKHQsZSxuLDEpfSksZ209YXQoW2lkKHRkKFhmKCkpLFNkKGxtLGZtKSksaWQodGQocWYoKSksa2QobG0sZm0pKSxpZCh0ZChZZigpKSxfZChkbSkpLGlkKHRkKEtmKCkpLFRkKG1tKSksaWQodGQoR2YoKS5jb25jYXQoVWYoKSkpLGZ1bmN0aW9uKG4sZSxvKXtyZXR1cm4gJGEobi5lbGVtZW50KCkpLmJpbmQoZnVuY3Rpb24odCl7cmV0dXJuIG8uZXhlY3V0ZShuLGUsdCl9KX0pXSkscG09YXQoW2lkKHRkKEdmKCkpLHBkKV0pLGhtPWxkKGFtLGVpLmluaXQsZ20scG0sZnVuY3Rpb24oKXtyZXR1cm4gc3Quc29tZShjbSl9KSx2bT1bem4oInNlbGVjdG9yIiksWm4oImV4ZWN1dGUiLGdkKSxabigibW92ZU9uVGFiIiwhMSldLGJtPWZ1bmN0aW9uKG4sZSxvKXtyZXR1cm4gby5mb2N1c01hbmFnZXIuZ2V0KG4pLmJpbmQoZnVuY3Rpb24odCl7cmV0dXJuIG8uZXhlY3V0ZShuLGUsdCl9KX0seW09ZnVuY3Rpb24obixlLHQpe011KG4uZWxlbWVudCgpLGUuc2VsZWN0b3IpLmVhY2goZnVuY3Rpb24odCl7ZS5mb2N1c01hbmFnZXIuc2V0KG4sdCl9KX0seG09ZnVuY3Rpb24odCxuLGUpe3JldHVybiBYZCh0LGUuc2VsZWN0b3IsbiwtMSl9LHdtPWZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gWGQodCxlLnNlbGVjdG9yLG4sMSl9LFNtPWF0KFtpZCh0ZChZZigpKSxFZCh4bSkpLGlkKHRkKEtmKCkpLEVkKHdtKSksaWQobmQoW2VkLHRkKFs5XSldKSxmdW5jdGlvbih0LG4sZSxvKXtyZXR1cm4gZS5tb3ZlT25UYWI/RWQoeG0pKHQsbixlLG8pOnN0Lm5vbmUoKX0pLGlkKG5kKFtyZCx0ZChbOV0pXSksZnVuY3Rpb24odCxuLGUsbyl7cmV0dXJuIGUubW92ZU9uVGFiP0VkKHdtKSh0LG4sZSxvKTpzdC5ub25lKCl9KSxpZCh0ZChVZigpKSxibSksaWQodGQoR2YoKSksYm0pXSksa209YXQoW2lkKHRkKEdmKCkpLHBkKV0pLENtPWxkKHZtLGVpLmluaXQsU20sa20sZnVuY3Rpb24oKXtyZXR1cm4gc3Quc29tZSh5bSl9KSxPbT1bUXUoIm9uU3BhY2UiKSxRdSgib25FbnRlciIpLFF1KCJvblNoaWZ0RW50ZXIiKSxRdSgib25MZWZ0IiksUXUoIm9uUmlnaHQiKSxRdSgib25UYWIiKSxRdSgib25TaGlmdFRhYiIpLFF1KCJvblVwIiksUXUoIm9uRG93biIpLFF1KCJvbkVzY2FwZSIpLFpuKCJzdG9wU3BhY2VLZXl1cCIsITEpLFluKCJmb2N1c0luIildLF9tPWxkKE9tLGVpLmluaXQsZnVuY3Rpb24odCxuLGUpe3JldHVybltpZCh0ZChHZigpKSxlLm9uU3BhY2UpLGlkKG5kKFtyZCx0ZChVZigpKV0pLGUub25FbnRlciksaWQobmQoW2VkLHRkKFVmKCkpXSksZS5vblNoaWZ0RW50ZXIpLGlkKG5kKFtlZCx0ZChbOV0pXSksZS5vblNoaWZ0VGFiKSxpZChuZChbcmQsdGQoWzldKV0pLGUub25UYWIpLGlkKHRkKFlmKCkpLGUub25VcCksaWQodGQoS2YoKSksZS5vbkRvd24pLGlkKHRkKFhmKCkpLGUub25MZWZ0KSxpZCh0ZChxZigpKSxlLm9uUmlnaHQpLGlkKHRkKEdmKCkpLGUub25TcGFjZSksaWQodGQoV2YoKSksZS5vbkVzY2FwZSldfSxmdW5jdGlvbih0LG4sZSl7cmV0dXJuIGUuc3RvcFNwYWNlS2V5dXA/W2lkKHRkKEdmKCkpLHBkKV06W119LGZ1bmN0aW9uKHQpe3JldHVybiB0LmZvY3VzSW59KSxUbT1kZC5zY2hlbWEoKSxFbT1tZC5zY2hlbWEoKSxCbT1ubS5zY2hlbWEoKSxEbT1HZC5zY2hlbWEoKSxNbT1obS5zY2hlbWEoKSxBbT1iZC5zY2hlbWEoKSxGbT1DbS5zY2hlbWEoKSxJbT1fbS5zY2hlbWEoKSxSbT1VYSh7YnJhbmNoS2V5OiJtb2RlIixicmFuY2hlczovKiAqL09iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLGFjeWNsaWM6VG0sY3ljbGljOkVtLGZsb3c6Qm0sZmxhdGdyaWQ6RG0sbWF0cml4Ok1tLGV4ZWN1dGlvbjpBbSxtZW51OkZtLHNwZWNpYWw6SW19KSxuYW1lOiJrZXlpbmciLGFjdGl2ZTp7ZXZlbnRzOmZ1bmN0aW9uKHQsbil7cmV0dXJuIHQuaGFuZGxlci50b0V2ZW50cyh0LG4pfX0sYXBpczp7Zm9jdXNJbjpmdW5jdGlvbihuLGUsbyl7ZS5zZW5kRm9jdXNJbihlKS5mb2xkKGZ1bmN0aW9uKCl7bi5nZXRTeXN0ZW0oKS50cmlnZ2VyRm9jdXMobi5lbGVtZW50KCksbi5lbGVtZW50KCkpfSxmdW5jdGlvbih0KXt0KG4sZSxvKX0pfSxzZXRHcmlkU2l6ZTpmdW5jdGlvbih0LG4sZSxvLHIpe3h0KGUsInNldEdyaWRTaXplIik/ZS5zZXRHcmlkU2l6ZShvLHIpOm50LmNvbnNvbGUuZXJyb3IoIkxheW91dCBkb2VzIG5vdCBzdXBwb3J0IHNldEdyaWRTaXplIil9fSxzdGF0ZTp4ZH0pLFZtPWZ1bmN0aW9uKHQsbixlLG8pe3ZhciByPXQuZ2V0U3lzdGVtKCkuYnVpbGQobyk7VnModCxyLGUpfSxIbT1mdW5jdGlvbih0LG4sZSxvKXt2YXIgcj1QbSh0KTtMKHIsZnVuY3Rpb24odCl7cmV0dXJuIExlKG8uZWxlbWVudCgpLHQuZWxlbWVudCgpKX0pLmVhY2goUHMpfSxQbT1mdW5jdGlvbih0LG4pe3JldHVybiB0LmNvbXBvbmVudHMoKX0sem09ZnVuY3Rpb24obix0LGUscixvKXt2YXIgaT1QbShuKTtyZXR1cm4gc3QuZnJvbShpW3JdKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIEhtKG4sMCwwLHQpLG8uZWFjaChmdW5jdGlvbih0KXtWbShuLDAsZnVuY3Rpb24odCxuKXt2YXIgZSxvO289bixtcihlPXQscikuZm9sZChmdW5jdGlvbigpe3ZyKGUsbyl9LGZ1bmN0aW9uKHQpe2dyKHQsbyl9KX0sdCl9KSx0fSl9LE5tPUxhKHtmaWVsZHM6W10sbmFtZToicmVwbGFjaW5nIixhcGlzOi8qICovT2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsYXBwZW5kOmZ1bmN0aW9uKHQsbixlLG8pe1ZtKHQsMCx2cixvKX0scHJlcGVuZDpmdW5jdGlvbih0LG4sZSxvKXtWbSh0LDAsaHIsbyl9LHJlbW92ZTpIbSxyZXBsYWNlQXQ6em0scmVwbGFjZUJ5OmZ1bmN0aW9uKG4sdCxlLG8scil7dmFyIGk9UG0obik7cmV0dXJuIGooaSxvKS5iaW5kKGZ1bmN0aW9uKHQpe3JldHVybiB6bShuLDAsMCx0LHIpfSl9LHNldDpmdW5jdGlvbihuLHQsZSxvKXtRYShmdW5jdGlvbigpe3ZhciB0PVYobyxuLmdldFN5c3RlbSgpLmJ1aWxkKTtJcyhuLHQpfSxuLmVsZW1lbnQoKSl9LGNvbnRlbnRzOlBtfSl9KSxMbT1mdW5jdGlvbih0LG4pe3ZhciBlLG87cmV0dXJue2tleTp0LHZhbHVlOntjb25maWc6e30sbWU6KGU9dCxvPVlvKG4pLExhKHtmaWVsZHM6W3puKCJlbmFibGVkIildLG5hbWU6ZSxhY3RpdmU6e2V2ZW50czphdChvKX19KSksY29uZmlnQXNSYXc6YXQoe30pLGluaXRpYWxDb25maWc6e30sc3RhdGU6ZWl9fX0sam09ZnVuY3Rpb24odCxuKXtuLmlnbm9yZXx8KEthKHQuZWxlbWVudCgpKSxuLm9uRm9jdXModCkpfSxVbT0vKiAqL09iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLGZvY3VzOmptLGJsdXI6ZnVuY3Rpb24odCxuKXtuLmlnbm9yZXx8dC5lbGVtZW50KCkuZG9tKCkuYmx1cigpfSxpc0ZvY3VzZWQ6ZnVuY3Rpb24odCl7cmV0dXJuIG49dC5lbGVtZW50KCksZT1hcihuKS5kb20oKSxuLmRvbSgpPT09ZS5hY3RpdmVFbGVtZW50O3ZhciBuLGV9fSksV209LyogKi9PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxleGhpYml0OmZ1bmN0aW9uKHQsbil7dmFyIGU9bi5pZ25vcmU/e306e2F0dHJpYnV0ZXM6e3RhYmluZGV4OiItMSJ9fTtyZXR1cm4gaWkoZSl9LGV2ZW50czpmdW5jdGlvbihlKXtyZXR1cm4gWW8oW0pvKGhvKCksZnVuY3Rpb24odCxuKXtqbSh0LGUpLG4uc3RvcCgpfSldLmNvbmNhdChlLnN0b3BNb3VzZWRvd24/W0pvKHRvKCksZnVuY3Rpb24odCxuKXtuLmV2ZW50KCkucHJldmVudCgpfSldOltdKSl9fSksR209WyR1KCJvbkZvY3VzIiksWm4oInN0b3BNb3VzZWRvd24iLCExKSxabigiaWdub3JlIiwhMSldLFhtPUxhKHtmaWVsZHM6R20sbmFtZToiZm9jdXNpbmciLGFjdGl2ZTpXbSxhcGlzOlVtfSksWW09ZnVuY3Rpb24odCxuLGUpe3ZhciBvPW4uYXJpYTtvLnVwZGF0ZSh0LG8sZS5nZXQoKSl9LHFtPWZ1bmN0aW9uKG4sdCxlKXt0LnRvZ2dsZUNsYXNzLmVhY2goZnVuY3Rpb24odCl7KGUuZ2V0KCk/Ymk6eGkpKG4uZWxlbWVudCgpLHQpfSl9LEttPWZ1bmN0aW9uKHQsbixlKXtRbSh0LG4sZSwhZS5nZXQoKSl9LEptPWZ1bmN0aW9uKHQsbixlKXtlLnNldCghMCkscW0odCxuLGUpLFltKHQsbixlKX0sJG09ZnVuY3Rpb24odCxuLGUpe2Uuc2V0KCExKSxxbSh0LG4sZSksWW0odCxuLGUpfSxRbT1mdW5jdGlvbih0LG4sZSxvKXsobz9KbTokbSkodCxuLGUpfSxabT1mdW5jdGlvbih0LG4sZSl7UW0odCxuLGUsbi5zZWxlY3RlZCl9LHRnPS8qICovT2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsb25Mb2FkOlptLHRvZ2dsZTpLbSxpc09uOmZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gZS5nZXQoKX0sb246Sm0sb2ZmOiRtLHNldDpRbX0pLG5nPS8qICovT2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsZXhoaWJpdDpmdW5jdGlvbigpe3JldHVybiBpaSh7fSl9LGV2ZW50czpmdW5jdGlvbih0LG4pe3ZhciBlLG8scixpPShlPXQsbz1uLHI9S20sdXIoZnVuY3Rpb24odCl7cih0LGUsbyl9KSksdT1JYSh0LG4sWm0pO3JldHVybiBZbyh1dChbdC50b2dnbGVPbkV4ZWN1dGU/W2ldOltdLFt1XV0pKX19KSxlZz1mdW5jdGlvbih0LG4sZSl7QnIodC5lbGVtZW50KCksImFyaWEtZXhwYW5kZWQiLGUpfSxvZz1bWm4oInNlbGVjdGVkIiwhMSksWW4oInRvZ2dsZUNsYXNzIiksWm4oInRvZ2dsZU9uRXhlY3V0ZSIsITApLHRlKCJhcmlhIix7bW9kZToibm9uZSJ9LEJuKCJtb2RlIix7cHJlc3NlZDpbWm4oInN5bmNXaXRoRXhwYW5kZWQiLCExKSxuYSgidXBkYXRlIixmdW5jdGlvbih0LG4sZSl7QnIodC5lbGVtZW50KCksImFyaWEtcHJlc3NlZCIsZSksbi5zeW5jV2l0aEV4cGFuZGVkJiZlZyh0LG4sZSl9KV0sY2hlY2tlZDpbbmEoInVwZGF0ZSIsZnVuY3Rpb24odCxuLGUpe0JyKHQuZWxlbWVudCgpLCJhcmlhLWNoZWNrZWQiLGUpfSldLGV4cGFuZGVkOltuYSgidXBkYXRlIixlZyldLHNlbGVjdGVkOltuYSgidXBkYXRlIixmdW5jdGlvbih0LG4sZSl7QnIodC5lbGVtZW50KCksImFyaWEtc2VsZWN0ZWQiLGUpfSldLG5vbmU6W25hKCJ1cGRhdGUiLFopXX0pKV0scmc9TGEoe2ZpZWxkczpvZyxuYW1lOiJ0b2dnbGluZyIsYWN0aXZlOm5nLGFwaXM6dGcsc3RhdGU6KHNkPSExLHtpbml0OmZ1bmN0aW9uKCl7dmFyIG49Y2Uoc2QpO3JldHVybntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbi5nZXQoKX0sc2V0OmZ1bmN0aW9uKHQpe3JldHVybiBuLnNldCh0KX0sY2xlYXI6ZnVuY3Rpb24oKXtyZXR1cm4gbi5zZXQoc2QpfSxyZWFkU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gbi5nZXQoKX19fX0pfSksaWc9ZnVuY3Rpb24oKXt2YXIgdD1mdW5jdGlvbih0LG4pe24uc3RvcCgpLFVvKHQpfTtyZXR1cm5bSm8oZm8oKSx0KSxKbyhTbygpLHQpLG5yKEplKCkpLG5yKHRvKCkpXX0sdWc9ZnVuY3Rpb24odCl7cmV0dXJuIFlvKHV0KFt0Lm1hcChmdW5jdGlvbihlKXtyZXR1cm4gdXIoZnVuY3Rpb24odCxuKXtlKHQpLG4uc3RvcCgpfSl9KS50b0FycmF5KCksaWcoKV0pKX0sYWc9ImFsbG95Lml0ZW0taG92ZXIiLGNnPSJhbGxveS5pdGVtLWZvY3VzIixzZz1mdW5jdGlvbih0KXsoJGEodC5lbGVtZW50KCkpLmlzTm9uZSgpfHxYbS5pc0ZvY3VzZWQodCkpJiYoWG0uaXNGb2N1c2VkKHQpfHxYbS5mb2N1cyh0KSxqbyh0LGFnLHtpdGVtOnR9KSl9LGxnPWZ1bmN0aW9uKHQpe2pvKHQsY2cse2l0ZW06dH0pfSxmZz1hdChhZyksZGc9YXQoY2cpLG1nPVt6bigiZGF0YSIpLHpuKCJjb21wb25lbnRzIiksem4oImRvbSIpLFpuKCJoYXNTdWJtZW51IiwhMSksWW4oInRvZ2dsaW5nIiksU2woIml0ZW1CZWhhdmlvdXJzIixbcmcsWG0sUm0sYmxdKSxabigiaWdub3JlRm9jdXMiLCExKSxabigiZG9tTW9kaWZpY2F0aW9uIix7fSksbmEoImJ1aWxkZXIiLGZ1bmN0aW9uKHQpe3JldHVybntkb206dC5kb20sZG9tTW9kaWZpY2F0aW9uOmV0KGV0KHt9LHQuZG9tTW9kaWZpY2F0aW9uKSx7YXR0cmlidXRlczpldChldChldCh7cm9sZTp0LnRvZ2dsaW5nLmlzU29tZSgpPyJtZW51aXRlbWNoZWNrYm94IjoibWVudWl0ZW0ifSx0LmRvbU1vZGlmaWNhdGlvbi5hdHRyaWJ1dGVzKSx7ImFyaWEtaGFzcG9wdXAiOnQuaGFzU3VibWVudX0pLHQuaGFzU3VibWVudT97ImFyaWEtZXhwYW5kZWQiOiExfTp7fSl9KSxiZWhhdmlvdXJzOmtsKHQuaXRlbUJlaGF2aW91cnMsW3QudG9nZ2xpbmcuZm9sZChyZy5yZXZva2UsZnVuY3Rpb24odCl7cmV0dXJuIHJnLmNvbmZpZyhldCh7YXJpYTp7bW9kZToiY2hlY2tlZCJ9fSx0KSl9KSxYbS5jb25maWcoe2lnbm9yZTp0Lmlnbm9yZUZvY3VzLHN0b3BNb3VzZWRvd246dC5pZ25vcmVGb2N1cyxvbkZvY3VzOmZ1bmN0aW9uKHQpe2xnKHQpfX0pLFJtLmNvbmZpZyh7bW9kZToiZXhlY3V0aW9uIn0pLGJsLmNvbmZpZyh7c3RvcmU6e21vZGU6Im1lbW9yeSIsaW5pdGlhbFZhbHVlOnQuZGF0YX19KSxMbSgiaXRlbS10eXBlLWV2ZW50cyIsYihpZygpLFtKbyhybygpLHNnKSxKbyh3bygpLFhtLmZvY3VzKV0pKV0pLGNvbXBvbmVudHM6dC5jb21wb25lbnRzLGV2ZW50T3JkZXI6dC5ldmVudE9yZGVyfX0pLFpuKCJldmVudE9yZGVyIix7fSldLGdnPVt6bigiZG9tIiksem4oImNvbXBvbmVudHMiKSxuYSgiYnVpbGRlciIsZnVuY3Rpb24odCl7cmV0dXJue2RvbTp0LmRvbSxjb21wb25lbnRzOnQuY29tcG9uZW50cyxldmVudHM6WW8oWyhuPXdvKCksSm8obixmdW5jdGlvbih0LG4pe24uc3RvcCgpfSkpXSl9O3ZhciBufSldLHBnPWZ1bmN0aW9uKCl7cmV0dXJuIml0ZW0td2lkZ2V0In0saGc9YXQoW3FsKHtuYW1lOiJ3aWRnZXQiLG92ZXJyaWRlczpmdW5jdGlvbihuKXtyZXR1cm57YmVoYXZpb3Vyczp6YShbYmwuY29uZmlnKHtzdG9yZTp7bW9kZToibWFudWFsIixnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gbi5kYXRhfSxzZXRWYWx1ZTpmdW5jdGlvbigpe319fSldKX19fSldKSx2Zz1bem4oInVpZCIpLHpuKCJkYXRhIiksem4oImNvbXBvbmVudHMiKSx6bigiZG9tIiksWm4oImF1dG9mb2N1cyIsITEpLFpuKCJpZ25vcmVGb2N1cyIsITEpLFNsKCJ3aWRnZXRCZWhhdmlvdXJzIixbYmwsWG0sUm1dKSxabigiZG9tTW9kaWZpY2F0aW9uIix7fSksaGYoaGcoKSksbmEoImJ1aWxkZXIiLGZ1bmN0aW9uKGUpe3ZhciB0PWFmKHBnKCksZSxoZygpKSxuPWNmKHBnKCksZSx0LmludGVybmFscygpKSxvPWZ1bmN0aW9uKHQpe3JldHVybiBzZih0LGUsIndpZGdldCIpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gUm0uZm9jdXNJbih0KSx0fSl9LHI9ZnVuY3Rpb24odCxuKXtyZXR1cm4gRWYobi5ldmVudCgpLnRhcmdldCgpKXx8ZS5hdXRvZm9jdXMmJm4uc2V0U291cmNlKHQuZWxlbWVudCgpKSxzdC5ub25lKCl9O3JldHVybntkb206ZS5kb20sY29tcG9uZW50czpuLGRvbU1vZGlmaWNhdGlvbjplLmRvbU1vZGlmaWNhdGlvbixldmVudHM6WW8oW3VyKGZ1bmN0aW9uKHQsbil7byh0KS5lYWNoKGZ1bmN0aW9uKHQpe24uc3RvcCgpfSl9KSxKbyhybygpLHNnKSxKbyh3bygpLGZ1bmN0aW9uKHQsbil7ZS5hdXRvZm9jdXM/byh0KTpYbS5mb2N1cyh0KX0pXSksYmVoYXZpb3VyczprbChlLndpZGdldEJlaGF2aW91cnMsW2JsLmNvbmZpZyh7c3RvcmU6e21vZGU6Im1lbW9yeSIsaW5pdGlhbFZhbHVlOmUuZGF0YX19KSxYbS5jb25maWcoe2lnbm9yZTplLmlnbm9yZUZvY3VzLG9uRm9jdXM6ZnVuY3Rpb24odCl7bGcodCl9fSksUm0uY29uZmlnKHttb2RlOiJzcGVjaWFsIixmb2N1c0luOmUuYXV0b2ZvY3VzP2Z1bmN0aW9uKHQpe28odCl9OldhKCksb25MZWZ0OnIsb25SaWdodDpyLG9uRXNjYXBlOmZ1bmN0aW9uKHQsbil7cmV0dXJuIFhtLmlzRm9jdXNlZCh0KXx8ZS5hdXRvZm9jdXM/KGUuYXV0b2ZvY3VzJiZuLnNldFNvdXJjZSh0LmVsZW1lbnQoKSksc3Qubm9uZSgpKTooWG0uZm9jdXModCksc3Quc29tZSghMCkpfX0pXSl9fSldLGJnPUJuKCJ0eXBlIix7d2lkZ2V0OnZnLGl0ZW06bWcsc2VwYXJhdG9yOmdnfSkseWc9YXQoWyRsKHtmYWN0b3J5Ontza2V0Y2g6ZnVuY3Rpb24odCl7dmFyIG49X24oIm1lbnUuc3BlYyBpdGVtIixiZyx0KTtyZXR1cm4gbi5idWlsZGVyKG4pfX0sbmFtZToiaXRlbXMiLHVuaXQ6Iml0ZW0iLGRlZmF1bHRzOmZ1bmN0aW9uKHQsbil7cmV0dXJuIG4uaGFzT3duUHJvcGVydHkoInVpZCIpP246ZXQoZXQoe30sbikse3VpZDpZcigiaXRlbSIpfSl9LG92ZXJyaWRlczpmdW5jdGlvbih0LG4pe3JldHVybnt0eXBlOm4udHlwZSxpZ25vcmVGb2N1czp0LmZha2VGb2N1cyxkb21Nb2RpZmljYXRpb246e2NsYXNzZXM6W3QubWFya2Vycy5pdGVtXX19fX0pXSkseGc9YXQoW3puKCJ2YWx1ZSIpLHpuKCJpdGVtcyIpLHpuKCJkb20iKSx6bigiY29tcG9uZW50cyIpLFpuKCJldmVudE9yZGVyIix7fSkseWwoIm1lbnVCZWhhdmlvdXJzIixbamYsYmwsTWYsUm1dKSx0ZSgibW92ZW1lbnQiLHttb2RlOiJtZW51Iixtb3ZlT25UYWI6ITB9LEJuKCJtb2RlIix7Z3JpZDpbb2EoKSxuYSgiY29uZmlnIixmdW5jdGlvbih0LG4pe3JldHVybnttb2RlOiJmbGF0Z3JpZCIsc2VsZWN0b3I6Ii4iK3QubWFya2Vycy5pdGVtLGluaXRTaXplOntudW1Db2x1bW5zOm4uaW5pdFNpemUubnVtQ29sdW1ucyxudW1Sb3dzOm4uaW5pdFNpemUubnVtUm93c30sZm9jdXNNYW5hZ2VyOnQuZm9jdXNNYW5hZ2VyfX0pXSxtYXRyaXg6W25hKCJjb25maWciLGZ1bmN0aW9uKHQsbil7cmV0dXJue21vZGU6Im1hdHJpeCIsc2VsZWN0b3JzOntyb3c6bi5yb3dTZWxlY3RvcixjZWxsOiIuIit0Lm1hcmtlcnMuaXRlbX0sZm9jdXNNYW5hZ2VyOnQuZm9jdXNNYW5hZ2VyfX0pLHpuKCJyb3dTZWxlY3RvciIpXSxtZW51OltabigibW92ZU9uVGFiIiwhMCksbmEoImNvbmZpZyIsZnVuY3Rpb24odCxuKXtyZXR1cm57bW9kZToibWVudSIsc2VsZWN0b3I6Ii4iK3QubWFya2Vycy5pdGVtLG1vdmVPblRhYjpuLm1vdmVPblRhYixmb2N1c01hbmFnZXI6dC5mb2N1c01hbmFnZXJ9fSldfSkpLE5uKCJtYXJrZXJzIixYdSgpKSxabigiZmFrZUZvY3VzIiwhMSksWm4oImZvY3VzTWFuYWdlciIsYWQoKSksJHUoIm9uSGlnaGxpZ2h0IildKSx3Zz1hdCgiYWxsb3kubWVudS1mb2N1cyIpLFNnPV9mKHtuYW1lOiJNZW51Iixjb25maWdGaWVsZHM6eGcoKSxwYXJ0RmllbGRzOnlnKCksZmFjdG9yeTpmdW5jdGlvbih0LG4sZSxvKXtyZXR1cm57dWlkOnQudWlkLGRvbTp0LmRvbSxtYXJrZXJzOnQubWFya2VycyxiZWhhdmlvdXJzOndsKHQubWVudUJlaGF2aW91cnMsW2pmLmNvbmZpZyh7aGlnaGxpZ2h0Q2xhc3M6dC5tYXJrZXJzLnNlbGVjdGVkSXRlbSxpdGVtQ2xhc3M6dC5tYXJrZXJzLml0ZW0sb25IaWdobGlnaHQ6dC5vbkhpZ2hsaWdodH0pLGJsLmNvbmZpZyh7c3RvcmU6e21vZGU6Im1lbW9yeSIsaW5pdGlhbFZhbHVlOnQudmFsdWV9fSksTWYuY29uZmlnKHtmaW5kOnN0LnNvbWV9KSxSbS5jb25maWcodC5tb3ZlbWVudC5jb25maWcodCx0Lm1vdmVtZW50KSldKSxldmVudHM6WW8oW0pvKGRnKCksZnVuY3Rpb24obixlKXt2YXIgdD1lLmV2ZW50KCk7bi5nZXRTeXN0ZW0oKS5nZXRCeURvbSh0LnRhcmdldCgpKS5lYWNoKGZ1bmN0aW9uKHQpe2pmLmhpZ2hsaWdodChuLHQpLGUuc3RvcCgpLGpvKG4sd2coKSx7bWVudTpuLGl0ZW06dH0pfSl9KSxKbyhmZygpLGZ1bmN0aW9uKHQsbil7dmFyIGU9bi5ldmVudCgpLml0ZW0oKTtqZi5oaWdobGlnaHQodCxlKX0pXSksY29tcG9uZW50czpuLGV2ZW50T3JkZXI6dC5ldmVudE9yZGVyLGRvbU1vZGlmaWNhdGlvbjp7YXR0cmlidXRlczp7cm9sZToibWVudSJ9fX19fSksa2c9ZnVuY3Rpb24oZSxvLHIsdCl7cmV0dXJuIGJ0KHIsdCkuYmluZChmdW5jdGlvbih0KXtyZXR1cm4gYnQoZSx0KS5iaW5kKGZ1bmN0aW9uKHQpe3ZhciBuPWtnKGUsbyxyLHQpO3JldHVybiBzdC5zb21lKFt0XS5jb25jYXQobikpfSl9KS5nZXRPcihbXSl9LENnPWZ1bmN0aW9uKHQsbil7dmFyIGU9e307ZnQodCxmdW5jdGlvbih0LG4pe2l0KHQsZnVuY3Rpb24odCl7ZVt0XT1ufSl9KTt2YXIgbz1uLHI9bXQobixmdW5jdGlvbih0LG4pe3JldHVybntrOnQsdjpufX0pLGk9ZHQocixmdW5jdGlvbih0LG4pe3JldHVybltuXS5jb25jYXQoa2coZSxvLHIsbikpfSk7cmV0dXJuIGR0KGUsZnVuY3Rpb24odCl7cmV0dXJuIGJ0KGksdCkuZ2V0T3IoW3RdKX0pfSxPZz1mdW5jdGlvbih0KXtyZXR1cm4icHJlcGFyZWQiPT09dC50eXBlP3N0LnNvbWUodC5tZW51KTpzdC5ub25lKCl9LF9nPXtpbml0OmZ1bmN0aW9uKCl7dmFyIGk9Y2Uoe30pLHU9Y2Uoe30pLGE9Y2Uoe30pLGM9Y2Uoc3Qubm9uZSgpKSxzPWNlKHt9KSxyPWZ1bmN0aW9uKHQsbyxyKXtyZXR1cm4gZSh0KS5iaW5kKGZ1bmN0aW9uKG4pe3JldHVybiBlPXQsaHQoaS5nZXQoKSxmdW5jdGlvbih0LG4pe3JldHVybiB0PT09ZX0pLmJpbmQoZnVuY3Rpb24odCl7cmV0dXJuIG8odCkubWFwKGZ1bmN0aW9uKHQpe3JldHVybnt0cmlnZ2VyZWRNZW51Om4sdHJpZ2dlcmluZ0l0ZW06dCx0cmlnZ2VyaW5nUGF0aDpyfX0pfSk7dmFyIGV9KX0sZT1mdW5jdGlvbih0KXtyZXR1cm4gbih0KS5iaW5kKE9nKX0sbj1mdW5jdGlvbih0KXtyZXR1cm4gYnQodS5nZXQoKSx0KX0sbD1mdW5jdGlvbih0KXtyZXR1cm4gYnQoaS5nZXQoKSx0KX07cmV0dXJue3NldE1lbnVCdWlsdDpmdW5jdGlvbih0LG4pe3ZhciBlO3Uuc2V0KGV0KGV0KHt9LHUuZ2V0KCkpLCgoZT17fSlbdF09e3R5cGU6InByZXBhcmVkIixtZW51Om59LGUpKSl9LHNldENvbnRlbnRzOmZ1bmN0aW9uKHQsbixlLG8pe2Muc2V0KHN0LnNvbWUodCkpLGkuc2V0KGUpLHUuc2V0KG4pLHMuc2V0KG8pO3ZhciByPUNnKG8sZSk7YS5zZXQocil9LGV4cGFuZDpmdW5jdGlvbihlKXtyZXR1cm4gYnQoaS5nZXQoKSxlKS5tYXAoZnVuY3Rpb24odCl7dmFyIG49YnQoYS5nZXQoKSxlKS5nZXRPcihbXSk7cmV0dXJuW3RdLmNvbmNhdChuKX0pfSxyZWZyZXNoOmZ1bmN0aW9uKHQpe3JldHVybiBidChhLmdldCgpLHQpfSxjb2xsYXBzZTpmdW5jdGlvbih0KXtyZXR1cm4gYnQoYS5nZXQoKSx0KS5iaW5kKGZ1bmN0aW9uKHQpe3JldHVybiAxPHQubGVuZ3RoP3N0LnNvbWUodC5zbGljZSgxKSk6c3Qubm9uZSgpfSl9LGxvb2t1cE1lbnU6bixsb29rdXBJdGVtOmwsb3RoZXJNZW51czpmdW5jdGlvbih0KXt2YXIgbj1zLmdldCgpO3JldHVybiBYKGx0KG4pLHQpfSxnZXRQcmltYXJ5OmZ1bmN0aW9uKCl7cmV0dXJuIGMuZ2V0KCkuYmluZChlKX0sZ2V0TWVudXM6ZnVuY3Rpb24oKXtyZXR1cm4gdS5nZXQoKX0sY2xlYXI6ZnVuY3Rpb24oKXtpLnNldCh7fSksdS5zZXQoe30pLGEuc2V0KHt9KSxjLnNldChzdC5ub25lKCkpfSxpc0NsZWFyOmZ1bmN0aW9uKCl7cmV0dXJuIGMuZ2V0KCkuaXNOb25lKCl9LGdldFRyaWdnZXJpbmdQYXRoOmZ1bmN0aW9uKHQsbyl7dmFyIG49UChsKHQpLnRvQXJyYXkoKSxmdW5jdGlvbih0KXtyZXR1cm4gZSh0KS5pc1NvbWUoKX0pO3JldHVybiBidChhLmdldCgpLHQpLmJpbmQoZnVuY3Rpb24odCl7dmFyIGU9RyhuLmNvbmNhdCh0KSk7cmV0dXJuIGZ1bmN0aW9uKHQpe2Zvcih2YXIgbj1bXSxlPTA7ZTx0Lmxlbmd0aDtlKyspe3ZhciBvPXRbZV07aWYoIW8uaXNTb21lKCkpcmV0dXJuIHN0Lm5vbmUoKTtuLnB1c2goby5nZXRPckRpZSgpKX1yZXR1cm4gc3Quc29tZShuKX0oVShlLGZ1bmN0aW9uKHQsbil7cmV0dXJuIHIodCxvLGUuc2xpY2UoMCxuKzEpKS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIGMuZ2V0KCkuaXModCk/W106W3N0Lm5vbmUoKV19LGZ1bmN0aW9uKHQpe3JldHVybltzdC5zb21lKHQpXX0pfSkpfSl9fX0sZXh0cmFjdFByZXBhcmVkTWVudTpPZ30sVGc9YXQoImNvbGxhcHNlLWl0ZW0iKSxFZz1PZih7bmFtZToiVGllcmVkTWVudSIsY29uZmlnRmllbGRzOlt0YSgib25FeGVjdXRlIiksdGEoIm9uRXNjYXBlIiksWnUoIm9uT3Blbk1lbnUiKSxadSgib25PcGVuU3VibWVudSIpLCR1KCJvblJlcG9zaXRpb25NZW51IiksJHUoIm9uQ29sbGFwc2VNZW51IiksWm4oImhpZ2hsaWdodEltbWVkaWF0ZWx5IiwhMCksV24oImRhdGEiLFt6bigicHJpbWFyeSIpLHpuKCJtZW51cyIpLHpuKCJleHBhbnNpb25zIildKSxabigiZmFrZUZvY3VzIiwhMSksJHUoIm9uSGlnaGxpZ2h0IiksJHUoIm9uSG92ZXIiKSxxdSgpLHpuKCJkb20iKSxabigibmF2aWdhdGVPbkhvdmVyIiwhMCksWm4oInN0YXlJbkRvbSIsITEpLHlsKCJ0bWVudUJlaGF2aW91cnMiLFtSbSxqZixNZixObV0pLFpuKCJldmVudE9yZGVyIix7fSldLGFwaXM6e2NvbGxhcHNlTWVudTpmdW5jdGlvbih0LG4pe3QuY29sbGFwc2VNZW51KG4pfSxoaWdobGlnaHRQcmltYXJ5OmZ1bmN0aW9uKHQsbil7dC5oaWdobGlnaHRQcmltYXJ5KG4pfSxyZXBvc2l0aW9uTWVudXM6ZnVuY3Rpb24odCxuKXt0LnJlcG9zaXRpb25NZW51cyhuKX19LGZhY3Rvcnk6ZnVuY3Rpb24oYSx0KXt2YXIgYyxuLGk9Y2Uoc3Qubm9uZSgpKSxzPV9nLmluaXQoKSxlPWZ1bmN0aW9uKHQpe3ZhciBvLHIsbixlPShvPXQscj1hLmRhdGEucHJpbWFyeSxuPWEuZGF0YS5tZW51cyxkdChuLGZ1bmN0aW9uKHQsbil7dmFyIGU9ZnVuY3Rpb24oKXtyZXR1cm4gU2cuc2tldGNoKGV0KGV0KHtkb206dC5kb219LHQpLHt2YWx1ZTpuLGl0ZW1zOnQuaXRlbXMsbWFya2VyczphLm1hcmtlcnMsZmFrZUZvY3VzOmEuZmFrZUZvY3VzLG9uSGlnaGxpZ2h0OmEub25IaWdobGlnaHQsZm9jdXNNYW5hZ2VyOihhLmZha2VGb2N1cz9jZDphZCkoKX0pKX07cmV0dXJuIG49PT1yP3t0eXBlOiJwcmVwYXJlZCIsbWVudTpvLmdldFN5c3RlbSgpLmJ1aWxkKGUoKSl9Ont0eXBlOiJub3RidWlsdCIsbmJNZW51OmV9fSkpLGk9dSgpO3JldHVybiBzLnNldENvbnRlbnRzKGEuZGF0YS5wcmltYXJ5LGUsYS5kYXRhLmV4cGFuc2lvbnMsaSkscy5nZXRQcmltYXJ5KCl9LGw9ZnVuY3Rpb24odCl7cmV0dXJuIGJsLmdldFZhbHVlKHQpLnZhbHVlfSx1PWZ1bmN0aW9uKHQpe3JldHVybiBkdChhLmRhdGEubWVudXMsZnVuY3Rpb24odCxuKXtyZXR1cm4gVSh0Lml0ZW1zLGZ1bmN0aW9uKHQpe3JldHVybiJzZXBhcmF0b3IiPT09dC50eXBlP1tdOlt0LmRhdGEudmFsdWVdfSl9KX0sZj1mdW5jdGlvbihuLHQpe2pmLmhpZ2hsaWdodChuLHQpLGpmLmdldEhpZ2hsaWdodGVkKHQpLm9yVGh1bmsoZnVuY3Rpb24oKXtyZXR1cm4gamYuZ2V0Rmlyc3QodCl9KS5lYWNoKGZ1bmN0aW9uKHQpe1dvKG4sdC5lbGVtZW50KCksd28oKSl9KX0sZD1mdW5jdGlvbihuLHQpe3JldHVybiBUZihWKHQsZnVuY3Rpb24odCl7cmV0dXJuIG4ubG9va3VwTWVudSh0KS5iaW5kKGZ1bmN0aW9uKHQpe3JldHVybiJwcmVwYXJlZCI9PT10LnR5cGU/c3Quc29tZSh0Lm1lbnUpOnN0Lm5vbmUoKX0pfSkpfSxtPWZ1bmN0aW9uKG4sdCxlKXt2YXIgbz1kKHQsdC5vdGhlck1lbnVzKGUpKTtpdChvLGZ1bmN0aW9uKHQpe2tpKHQuZWxlbWVudCgpLFthLm1hcmtlcnMuYmFja2dyb3VuZE1lbnVdKSxhLnN0YXlJbkRvbXx8Tm0ucmVtb3ZlKG4sdCl9KX0sZz1mdW5jdGlvbih0LG8pe3ZhciByLG49KHI9dCxpLmdldCgpLmdldE9yVGh1bmsoZnVuY3Rpb24oKXt2YXIgZT17fSx0PVljKHIuZWxlbWVudCgpLCIuIithLm1hcmtlcnMuaXRlbSksbj1QKHQsZnVuY3Rpb24odCl7cmV0dXJuInRydWUiPT09RHIodCwiYXJpYS1oYXNwb3B1cCIpfSk7cmV0dXJuIGl0KG4sZnVuY3Rpb24odCl7ci5nZXRTeXN0ZW0oKS5nZXRCeURvbSh0KS5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBuPWwodCk7ZVtuXT10fSl9KSxpLnNldChzdC5zb21lKGUpKSxlfSkpO2Z0KG4sZnVuY3Rpb24odCxuKXt2YXIgZT1GKG8sbik7QnIodC5lbGVtZW50KCksImFyaWEtZXhwYW5kZWQiLGUpfSl9LHA9ZnVuY3Rpb24obyxyLGkpe3JldHVybiBzdC5mcm9tKGlbMF0pLmJpbmQoZnVuY3Rpb24odCl7cmV0dXJuIHIubG9va3VwTWVudSh0KS5iaW5kKGZ1bmN0aW9uKHQpe2lmKCJub3RidWlsdCI9PT10LnR5cGUpcmV0dXJuIHN0Lm5vbmUoKTt2YXIgbj10Lm1lbnUsZT1kKHIsaS5zbGljZSgxKSk7cmV0dXJuIGl0KGUsZnVuY3Rpb24odCl7YmkodC5lbGVtZW50KCksYS5tYXJrZXJzLmJhY2tncm91bmRNZW51KX0pLE9pKG4uZWxlbWVudCgpKXx8Tm0uYXBwZW5kKG8sJGkobikpLGtpKG4uZWxlbWVudCgpLFthLm1hcmtlcnMuYmFja2dyb3VuZE1lbnVdKSxmKG8sbiksbShvLHIsaSksc3Quc29tZShuKX0pfSl9OyhuPWM9Y3x8e30pW24uSGlnaGxpZ2h0U3VibWVudT0wXT0iSGlnaGxpZ2h0U3VibWVudSIsbltuLkhpZ2hsaWdodFBhcmVudD0xXT0iSGlnaGxpZ2h0UGFyZW50Ijt2YXIgaD1mdW5jdGlvbihyLGksdSl7dm9pZCAwPT09dSYmKHU9Yy5IaWdobGlnaHRTdWJtZW51KTt2YXIgdD1sKGkpO3JldHVybiBzLmV4cGFuZCh0KS5iaW5kKGZ1bmN0aW9uKG8pe3JldHVybiBnKHIsbyksc3QuZnJvbShvWzBdKS5iaW5kKGZ1bmN0aW9uKGUpe3JldHVybiBzLmxvb2t1cE1lbnUoZSkuYmluZChmdW5jdGlvbih0KXt2YXIgbj1mdW5jdGlvbih0LG4sZSl7aWYoIm5vdGJ1aWx0IiE9PWUudHlwZSlyZXR1cm4gZS5tZW51O3ZhciBvPXQuZ2V0U3lzdGVtKCkuYnVpbGQoZS5uYk1lbnUoKSk7cmV0dXJuIHMuc2V0TWVudUJ1aWx0KG4sbyksb30ocixlLHQpO3JldHVybiBPaShuLmVsZW1lbnQoKSl8fE5tLmFwcGVuZChyLCRpKG4pKSxhLm9uT3BlblN1Ym1lbnUocixpLG4sRyhvKSksdT09PWMuSGlnaGxpZ2h0U3VibWVudT8oamYuaGlnaGxpZ2h0Rmlyc3QobikscChyLHMsbykpOihqZi5kZWhpZ2hsaWdodEFsbChuKSxzdC5zb21lKGkpKX0pfSl9KX0sbz1mdW5jdGlvbihuLGUpe3ZhciB0PWwoZSk7cmV0dXJuIHMuY29sbGFwc2UodCkuYmluZChmdW5jdGlvbih0KXtyZXR1cm4gZyhuLHQpLHAobixzLHQpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gYS5vbkNvbGxhcHNlTWVudShuLGUsdCksdH0pfSl9LHI9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKG4sdCl7cmV0dXJuIEF1KHQuZ2V0U291cmNlKCksIi4iK2EubWFya2Vycy5pdGVtKS5iaW5kKGZ1bmN0aW9uKHQpe3JldHVybiBuLmdldFN5c3RlbSgpLmdldEJ5RG9tKHQpLnRvT3B0aW9uKCkuYmluZChmdW5jdGlvbih0KXtyZXR1cm4gZShuLHQpLm1hcChmdW5jdGlvbigpe3JldHVybiEwfSl9KX0pfX0sdj1ZbyhbSm8od2coKSxmdW5jdGlvbihlLG8pe3ZhciB0PW8uZXZlbnQoKS5pdGVtKCk7cy5sb29rdXBJdGVtKGwodCkpLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1vLmV2ZW50KCkubWVudSgpO2pmLmhpZ2hsaWdodChlLHQpO3ZhciBuPWwoby5ldmVudCgpLml0ZW0oKSk7cy5yZWZyZXNoKG4pLmVhY2goZnVuY3Rpb24odCl7cmV0dXJuIG0oZSxzLHQpfSl9KX0pLHVyKGZ1bmN0aW9uKG4sdCl7dmFyIGU9dC5ldmVudCgpLnRhcmdldCgpO24uZ2V0U3lzdGVtKCkuZ2V0QnlEb20oZSkuZWFjaChmdW5jdGlvbih0KXswPT09bCh0KS5pbmRleE9mKCJjb2xsYXBzZS1pdGVtIikmJm8obix0KSxoKG4sdCxjLkhpZ2hsaWdodFN1Ym1lbnUpLmZvbGQoZnVuY3Rpb24oKXthLm9uRXhlY3V0ZShuLHQpfSxmdW5jdGlvbigpe30pfSl9KSxvcihmdW5jdGlvbihuLHQpe2UobikuZWFjaChmdW5jdGlvbih0KXtObS5hcHBlbmQobiwkaSh0KSksYS5vbk9wZW5NZW51KG4sdCksYS5oaWdobGlnaHRJbW1lZGlhdGVseSYmZihuLHQpfSl9KV0uY29uY2F0KGEubmF2aWdhdGVPbkhvdmVyP1tKbyhmZygpLGZ1bmN0aW9uKHQsbil7dmFyIGUsbyxyPW4uZXZlbnQoKS5pdGVtKCk7ZT10LG89bChyKSxzLnJlZnJlc2gobykuYmluZChmdW5jdGlvbih0KXtyZXR1cm4gZyhlLHQpLHAoZSxzLHQpfSksaCh0LHIsYy5IaWdobGlnaHRQYXJlbnQpLGEub25Ib3Zlcih0LHIpfSldOltdKSksYj1mdW5jdGlvbih0KXtyZXR1cm4gamYuZ2V0SGlnaGxpZ2h0ZWQodCkuYmluZChqZi5nZXRIaWdobGlnaHRlZCl9LHk9e2NvbGxhcHNlTWVudTpmdW5jdGlvbihuKXtiKG4pLmVhY2goZnVuY3Rpb24odCl7byhuLHQpfSl9LGhpZ2hsaWdodFByaW1hcnk6ZnVuY3Rpb24obil7cy5nZXRQcmltYXJ5KCkuZWFjaChmdW5jdGlvbih0KXtmKG4sdCl9KX0scmVwb3NpdGlvbk1lbnVzOmZ1bmN0aW9uKG8pe3MuZ2V0UHJpbWFyeSgpLmJpbmQoZnVuY3Rpb24obil7cmV0dXJuIGIobykuYmluZChmdW5jdGlvbih0KXt2YXIgbj1sKHQpLGU9dnQocy5nZXRNZW51cygpKSxvPVRmKFYoZSxfZy5leHRyYWN0UHJlcGFyZWRNZW51KSk7cmV0dXJuIHMuZ2V0VHJpZ2dlcmluZ1BhdGgobixmdW5jdGlvbih0KXtyZXR1cm4gZT10LFEobyxmdW5jdGlvbih0KXtpZighdC5nZXRTeXN0ZW0oKS5pc0Nvbm5lY3RlZCgpKXJldHVybiBzdC5ub25lKCk7dmFyIG49amYuZ2V0Q2FuZGlkYXRlcyh0KTtyZXR1cm4gTChuLGZ1bmN0aW9uKHQpe3JldHVybiBsKHQpPT09ZX0pfSk7dmFyIGV9KX0pLm1hcChmdW5jdGlvbih0KXtyZXR1cm57cHJpbWFyeTpuLHRyaWdnZXJpbmdQYXRoOnR9fSl9KS5mb2xkKGZ1bmN0aW9uKCl7dmFyIHQ7dD1vLHN0LmZyb20odC5jb21wb25lbnRzKClbMF0pLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4ibWVudSI9PT1Ecih0LmVsZW1lbnQoKSwicm9sZSIpfSkuZWFjaChmdW5jdGlvbih0KXthLm9uUmVwb3NpdGlvbk1lbnUobyx0LFtdKX0pfSxmdW5jdGlvbih0KXt2YXIgbj10LnByaW1hcnksZT10LnRyaWdnZXJpbmdQYXRoO2Eub25SZXBvc2l0aW9uTWVudShvLG4sZSl9KX19O3JldHVybnt1aWQ6YS51aWQsZG9tOmEuZG9tLG1hcmtlcnM6YS5tYXJrZXJzLGJlaGF2aW91cnM6d2woYS50bWVudUJlaGF2aW91cnMsW1JtLmNvbmZpZyh7bW9kZToic3BlY2lhbCIsb25SaWdodDpyKGZ1bmN0aW9uKHQsbil7cmV0dXJuIEVmKG4uZWxlbWVudCgpKT9zdC5ub25lKCk6aCh0LG4sYy5IaWdobGlnaHRTdWJtZW51KX0pLG9uTGVmdDpyKGZ1bmN0aW9uKHQsbil7cmV0dXJuIEVmKG4uZWxlbWVudCgpKT9zdC5ub25lKCk6byh0LG4pfSksb25Fc2NhcGU6cihmdW5jdGlvbih0LG4pe3JldHVybiBvKHQsbikub3JUaHVuayhmdW5jdGlvbigpe3JldHVybiBhLm9uRXNjYXBlKHQsbikubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIHR9KX0pfSksZm9jdXNJbjpmdW5jdGlvbihuLHQpe3MuZ2V0UHJpbWFyeSgpLmVhY2goZnVuY3Rpb24odCl7V28obix0LmVsZW1lbnQoKSx3bygpKX0pfX0pLGpmLmNvbmZpZyh7aGlnaGxpZ2h0Q2xhc3M6YS5tYXJrZXJzLnNlbGVjdGVkTWVudSxpdGVtQ2xhc3M6YS5tYXJrZXJzLm1lbnV9KSxNZi5jb25maWcoe2ZpbmQ6ZnVuY3Rpb24odCl7cmV0dXJuIGpmLmdldEhpZ2hsaWdodGVkKHQpfX0pLE5tLmNvbmZpZyh7fSldKSxldmVudE9yZGVyOmEuZXZlbnRPcmRlcixhcGlzOnksZXZlbnRzOnZ9fSxleHRyYUFwaXM6e3RpZXJlZERhdGE6ZnVuY3Rpb24odCxuLGUpe3JldHVybntwcmltYXJ5OnQsbWVudXM6bixleHBhbnNpb25zOmV9fSxzaW5nbGVEYXRhOmZ1bmN0aW9uKHQsbil7cmV0dXJue3ByaW1hcnk6dCxtZW51czpLdCh0LG4pLGV4cGFuc2lvbnM6e319fSxjb2xsYXBzZUl0ZW06ZnVuY3Rpb24odCl7cmV0dXJue3ZhbHVlOk5yKFRnKCkpLG1ldGE6e3RleHQ6dH19fX19KSxCZz1PZih7bmFtZToiSW5saW5lVmlldyIsY29uZmlnRmllbGRzOlt6bigibGF6eVNpbmsiKSwkdSgib25TaG93IiksJHUoIm9uSGlkZSIpLCRuKCJvbkVzY2FwZSIpLHlsKCJpbmxpbmVCZWhhdmlvdXJzIixbUXMsYmwsWWFdKSxRbigiZmlyZURpc21pc3NhbEV2ZW50SW5zdGVhZCIsW1puKCJldmVudCIsRm8oKSldKSxRbigiZmlyZVJlcG9zaXRpb25FdmVudEluc3RlYWQiLFtabigiZXZlbnQiLElvKCkpXSksWm4oImdldFJlbGF0ZWQiLHN0Lm5vbmUpLFpuKCJpc0V4dHJhUGFydCIsYyksWm4oImV2ZW50T3JkZXIiLHN0Lm5vbmUpXSxmYWN0b3J5OmZ1bmN0aW9uKG0sdCl7dmFyIG89ZnVuY3Rpb24odCxuLGUsbyl7cih0LG4sZSxmdW5jdGlvbigpe3JldHVybiBvLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gd3UodCl9KX0pfSxyPWZ1bmN0aW9uKHQsbixlLG8pe3ZhciByPW0ubGF6eVNpbmsodCkuZ2V0T3JEaWUoKTtRcy5vcGVuV2hpbGVDbG9ha2VkKHQsZSxmdW5jdGlvbigpe3JldHVybiBEcy5wb3NpdGlvbldpdGhpbkJvdW5kcyhyLG4sdCxvKCkpfSksYmwuc2V0VmFsdWUodCxzdC5zb21lKHttb2RlOiJwb3NpdGlvbiIsYW5jaG9yOm4sZ2V0Qm91bmRzOm99KSl9LGk9ZnVuY3Rpb24odCxuLGUsbyl7dmFyIHIsaSx1LGEsYyxzLGwsZixkPShyPW0saT10LHU9bixjPW8scz1mdW5jdGlvbigpe3JldHVybiByLmxhenlTaW5rKGkpfSxsPSJob3Jpem9udGFsIj09PShhPWUpLnR5cGU/e2xheW91dHM6e29uTHRyOmZ1bmN0aW9uKCl7cmV0dXJuIEFhKCl9LG9uUnRsOmZ1bmN0aW9uKCl7cmV0dXJuIEZhKCl9fX06e30sZj1mdW5jdGlvbih0KXtyZXR1cm4gMj09PXQubGVuZ3RoP2w6e319LEVnLnNrZXRjaCh7ZG9tOnt0YWc6ImRpdiJ9LGRhdGE6YS5kYXRhLG1hcmtlcnM6YS5tZW51Lm1hcmtlcnMsaGlnaGxpZ2h0SW1tZWRpYXRlbHk6YS5tZW51LmhpZ2hsaWdodEltbWVkaWF0ZWx5LG9uRXNjYXBlOmZ1bmN0aW9uKCl7cmV0dXJuIFFzLmNsb3NlKGkpLHIub25Fc2NhcGUubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0KGkpfSksc3Quc29tZSghMCl9LG9uRXhlY3V0ZTpmdW5jdGlvbigpe3JldHVybiBzdC5zb21lKCEwKX0sb25PcGVuTWVudTpmdW5jdGlvbih0LG4pe0RzLnBvc2l0aW9uV2l0aGluQm91bmRzKHMoKS5nZXRPckRpZSgpLHUsbixjKCkpfSxvbk9wZW5TdWJtZW51OmZ1bmN0aW9uKHQsbixlLG8pe3ZhciByPXMoKS5nZXRPckRpZSgpO0RzLnBvc2l0aW9uKHIsZXQoe2FuY2hvcjoic3VibWVudSIsaXRlbTpufSxmKG8pKSxlKX0sb25SZXBvc2l0aW9uTWVudTpmdW5jdGlvbih0LG4sZSl7dmFyIG89cygpLmdldE9yRGllKCk7RHMucG9zaXRpb25XaXRoaW5Cb3VuZHMobyx1LG4sYygpKSxpdChlLGZ1bmN0aW9uKHQpe3ZhciBuPWYodC50cmlnZ2VyaW5nUGF0aCk7RHMucG9zaXRpb24obyxldCh7YW5jaG9yOiJzdWJtZW51IixpdGVtOnQudHJpZ2dlcmluZ0l0ZW19LG4pLHQudHJpZ2dlcmVkTWVudSl9KX19KSk7UXMub3Blbih0LGQpLGJsLnNldFZhbHVlKHQsc3Quc29tZSh7bW9kZToibWVudSIsbWVudTpkfSkpfSxuPWZ1bmN0aW9uKGUpe1FzLmlzT3BlbihlKSYmYmwuZ2V0VmFsdWUoZSkuZWFjaChmdW5jdGlvbih0KXtzd2l0Y2godC5tb2RlKXtjYXNlIm1lbnUiOlFzLmdldFN0YXRlKGUpLmVhY2goZnVuY3Rpb24odCl7RWcucmVwb3NpdGlvbk1lbnVzKHQpfSk7YnJlYWs7Y2FzZSJwb3NpdGlvbiI6dmFyIG49bS5sYXp5U2luayhlKS5nZXRPckRpZSgpO0RzLnBvc2l0aW9uV2l0aGluQm91bmRzKG4sdC5hbmNob3IsZSx0LmdldEJvdW5kcygpKX19KX0sZT17c2V0Q29udGVudDpmdW5jdGlvbih0LG4pe1FzLnNldENvbnRlbnQodCxuKX0sc2hvd0F0OmZ1bmN0aW9uKHQsbixlKXtvKHQsbixlLHN0Lm5vbmUoKSl9LHNob3dXaXRoaW46byxzaG93V2l0aGluQm91bmRzOnIsc2hvd01lbnVBdDpmdW5jdGlvbih0LG4sZSl7aSh0LG4sZSxmdW5jdGlvbigpe3JldHVybiBzdC5ub25lKCl9KX0sc2hvd01lbnVXaXRoaW5Cb3VuZHM6aSxoaWRlOmZ1bmN0aW9uKHQpe1FzLmlzT3Blbih0KSYmKGJsLnNldFZhbHVlKHQsc3Qubm9uZSgpKSxRcy5jbG9zZSh0KSl9LGdldENvbnRlbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIFFzLmdldFN0YXRlKHQpfSxyZXBvc2l0aW9uOm4saXNPcGVuOlFzLmlzT3Blbn07cmV0dXJue3VpZDptLnVpZCxkb206bS5kb20sYmVoYXZpb3Vyczp3bChtLmlubGluZUJlaGF2aW91cnMsW1FzLmNvbmZpZyh7aXNQYXJ0T2Y6ZnVuY3Rpb24odCxuLGUpe3JldHVybiBSdShuLGUpfHwobz10LHI9ZSxtLmdldFJlbGF0ZWQobykuZXhpc3RzKGZ1bmN0aW9uKHQpe3JldHVybiBSdSh0LHIpfSkpO3ZhciBvLHJ9LGdldEF0dGFjaFBvaW50OmZ1bmN0aW9uKHQpe3JldHVybiBtLmxhenlTaW5rKHQpLmdldE9yRGllKCl9LG9uT3BlbjpmdW5jdGlvbih0KXttLm9uU2hvdyh0KX0sb25DbG9zZTpmdW5jdGlvbih0KXttLm9uSGlkZSh0KX19KSxibC5jb25maWcoe3N0b3JlOnttb2RlOiJtZW1vcnkiLGluaXRpYWxWYWx1ZTpzdC5ub25lKCl9fSksWWEuY29uZmlnKHtjaGFubmVsczpldChldCh7fSxvbChldCh7aXNFeHRyYVBhcnQ6dC5pc0V4dHJhUGFydH0sbS5maXJlRGlzbWlzc2FsRXZlbnRJbnN0ZWFkLm1hcChmdW5jdGlvbih0KXtyZXR1cm57ZmlyZUV2ZW50SW5zdGVhZDp7ZXZlbnQ6dC5ldmVudH19fSkuZ2V0T3Ioe30pKSkpLGlsKGV0KGV0KHt9LG0uZmlyZVJlcG9zaXRpb25FdmVudEluc3RlYWQubWFwKGZ1bmN0aW9uKHQpe3JldHVybntmaXJlRXZlbnRJbnN0ZWFkOntldmVudDp0LmV2ZW50fX19KS5nZXRPcih7fSkpLHtkb1JlcG9zaXRpb246bn0pKSl9KV0pLGV2ZW50T3JkZXI6bS5ldmVudE9yZGVyLGFwaXM6ZX19LGFwaXM6e3Nob3dBdDpmdW5jdGlvbih0LG4sZSxvKXt0LnNob3dBdChuLGUsbyl9LHNob3dXaXRoaW46ZnVuY3Rpb24odCxuLGUsbyxyKXt0LnNob3dXaXRoaW4obixlLG8scil9LHNob3dXaXRoaW5Cb3VuZHM6ZnVuY3Rpb24odCxuLGUsbyxyKXt0LnNob3dXaXRoaW5Cb3VuZHMobixlLG8scil9LHNob3dNZW51QXQ6ZnVuY3Rpb24odCxuLGUsbyl7dC5zaG93TWVudUF0KG4sZSxvKX0sc2hvd01lbnVXaXRoaW5Cb3VuZHM6ZnVuY3Rpb24odCxuLGUsbyxyKXt0LnNob3dNZW51V2l0aGluQm91bmRzKG4sZSxvLHIpfSxoaWRlOmZ1bmN0aW9uKHQsbil7dC5oaWRlKG4pfSxpc09wZW46ZnVuY3Rpb24odCxuKXtyZXR1cm4gdC5pc09wZW4obil9LGdldENvbnRlbnQ6ZnVuY3Rpb24odCxuKXtyZXR1cm4gdC5nZXRDb250ZW50KG4pfSxzZXRDb250ZW50OmZ1bmN0aW9uKHQsbixlKXt0LnNldENvbnRlbnQobixlKX0scmVwb3NpdGlvbjpmdW5jdGlvbih0LG4pe3QucmVwb3NpdGlvbihuKX19fSksRGc9ZnVuY3Rpb24odCl7cmV0dXJuIHQueH0sTWc9ZnVuY3Rpb24odCxuKXtyZXR1cm4gdC54K3Qud2lkdGgvMi1uLndpZHRoLzJ9LEFnPWZ1bmN0aW9uKHQsbil7cmV0dXJuIHQueCt0LndpZHRoLW4ud2lkdGh9LEZnPWZ1bmN0aW9uKHQpe3JldHVybiB0Lnl9LElnPWZ1bmN0aW9uKHQsbil7cmV0dXJuIHQueSt0LmhlaWdodC1uLmhlaWdodH0sUmc9ZnVuY3Rpb24odCxuLGUpe3JldHVybiByYShBZyh0LG4pLElnKHQsbiksZS5pbm5lclNvdXRoZWFzdCgpLHNhKCksZ2EodCx7cmlnaHQ6MCxib3R0b206M30pLCJsYXlvdXQtaW5uZXItc2UiKX0sVmc9ZnVuY3Rpb24odCxuLGUpe3JldHVybiByYShEZyh0KSxJZyh0LG4pLGUuaW5uZXJTb3V0aHdlc3QoKSxjYSgpLGdhKHQse2xlZnQ6MSxib3R0b206M30pLCJsYXlvdXQtaW5uZXItc3ciKX0sSGc9ZnVuY3Rpb24odCxuLGUpe3JldHVybiByYShBZyh0LG4pLEZnKHQpLGUuaW5uZXJOb3J0aGVhc3QoKSxhYSgpLGdhKHQse3JpZ2h0OjAsdG9wOjJ9KSwibGF5b3V0LWlubmVyLW5lIil9LFBnPWZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gcmEoRGcodCksRmcodCksZS5pbm5lck5vcnRod2VzdCgpLHVhKCksZ2EodCx7bGVmdDoxLHRvcDoyfSksImxheW91dC1pbm5lci1udyIpfSx6Zz1mdW5jdGlvbih0LG4sZSl7cmV0dXJuIHJhKE1nKHQsbiksRmcodCksZS5pbm5lck5vcnRoKCksbGEoKSxnYSh0LHt0b3A6Mn0pLCJsYXlvdXQtaW5uZXItbiIpfSxOZz1mdW5jdGlvbih0LG4sZSl7cmV0dXJuIHJhKE1nKHQsbiksSWcodCxuKSxlLmlubmVyU291dGgoKSxmYSgpLGdhKHQse2JvdHRvbTozfSksImxheW91dC1pbm5lci1zIil9LExnPXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLnV0aWwuRGVsYXkiKSxqZz1PZih7bmFtZToiQnV0dG9uIixmYWN0b3J5OmZ1bmN0aW9uKHQpe3ZhciBuPXVnKHQuYWN0aW9uKSxlPXQuZG9tLnRhZyxvPWZ1bmN0aW9uKG4pe3JldHVybiBidCh0LmRvbSwiYXR0cmlidXRlcyIpLmJpbmQoZnVuY3Rpb24odCl7cmV0dXJuIGJ0KHQsbil9KX07cmV0dXJue3VpZDp0LnVpZCxkb206dC5kb20sY29tcG9uZW50czp0LmNvbXBvbmVudHMsZXZlbnRzOm4sYmVoYXZpb3VyczprbCh0LmJ1dHRvbkJlaGF2aW91cnMsW1htLmNvbmZpZyh7fSksUm0uY29uZmlnKHttb2RlOiJleGVjdXRpb24iLHVzZVNwYWNlOiEwLHVzZUVudGVyOiEwfSldKSxkb21Nb2RpZmljYXRpb246e2F0dHJpYnV0ZXM6ZnVuY3Rpb24oKXtpZigiYnV0dG9uIiE9PWUpcmV0dXJue3JvbGU6bygicm9sZSIpLmdldE9yKCJidXR0b24iKX07dmFyIHQ9bygidHlwZSIpLmdldE9yKCJidXR0b24iKSxuPW8oInJvbGUiKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJue3JvbGU6dH19KS5nZXRPcih7fSk7cmV0dXJuIGV0KHt0eXBlOnR9LG4pfSgpfSxldmVudE9yZGVyOnQuZXZlbnRPcmRlcn19LGNvbmZpZ0ZpZWxkczpbWm4oInVpZCIsdW5kZWZpbmVkKSx6bigiZG9tIiksWm4oImNvbXBvbmVudHMiLFtdKSxTbCgiYnV0dG9uQmVoYXZpb3VycyIsW1htLFJtXSksWW4oImFjdGlvbiIpLFluKCJyb2xlIiksWm4oImV2ZW50T3JkZXIiLHt9KV19KSxVZz1mdW5jdGlvbih0KXt2YXIgbj1mdW5jdGlvbiBlKHQpe3JldHVybiB0LnVpZCE9PXVuZGVmaW5lZH0odCkmJnh0KHQsInVpZCIpP3QudWlkOllyKCJtZW1lbnRvIik7cmV0dXJue2dldDpmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRTeXN0ZW0oKS5nZXRCeVVpZChuKS5nZXRPckRpZSgpfSxnZXRPcHQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0U3lzdGVtKCkuZ2V0QnlVaWQobikudG9PcHRpb24oKX0sYXNTcGVjOmZ1bmN0aW9uKCl7cmV0dXJuIGV0KGV0KHt9LHQpLHt1aWQ6bn0pfX19LFdnPWZ1bmN0aW9uKHQpe3JldHVybiBzdC5mcm9tKHQoKVsidGVtcG9yYXJ5LXBsYWNlaG9sZGVyIl0pLmdldE9yKCIhbm90IGZvdW5kISIpfSxHZz1mdW5jdGlvbih0LG4pe3JldHVybiBzdC5mcm9tKG4oKVt0XSkuZ2V0T3JUaHVuayhmdW5jdGlvbigpe3JldHVybiBXZyhuKX0pfSxYZz17c3VjY2VzczoiY2hlY2ttYXJrIixlcnJvcjoid2FybmluZyIsZXJyOiJlcnJvciIsd2FybmluZzoid2FybmluZyIsd2Fybjoid2FybmluZyIsaW5mbzoiaW5mbyJ9LFlnPU9mKHtuYW1lOiJOb3RpZmljYXRpb24iLGZhY3Rvcnk6ZnVuY3Rpb24obil7dmFyIHQsZSxvPVVnKHtkb206e3RhZzoicCIsaW5uZXJIdG1sOm4udHJhbnNsYXRpb25Qcm92aWRlcihuLnRleHQpfSxiZWhhdmlvdXJzOnphKFtObS5jb25maWcoe30pXSl9KSxyPWZ1bmN0aW9uKHQpe3JldHVybntkb206e3RhZzoiZGl2IixjbGFzc2VzOlsidG94LWJhciJdLGF0dHJpYnV0ZXM6e3N0eWxlOiJ3aWR0aDogIit0KyIlIn19fX0saT1mdW5jdGlvbih0KXtyZXR1cm57ZG9tOnt0YWc6ImRpdiIsY2xhc3NlczpbInRveC10ZXh0Il0saW5uZXJIdG1sOnQrIiUifX19LHU9VWcoe2RvbTp7dGFnOiJkaXYiLGNsYXNzZXM6bi5wcm9ncmVzcz9bInRveC1wcm9ncmVzcy1iYXIiLCJ0b3gtcHJvZ3Jlc3MtaW5kaWNhdG9yIl06WyJ0b3gtcHJvZ3Jlc3MtYmFyIl19LGNvbXBvbmVudHM6W3tkb206e3RhZzoiZGl2IixjbGFzc2VzOlsidG94LWJhci1jb250YWluZXIiXX0sY29tcG9uZW50czpbcigwKV19LGkoMCldLGJlaGF2aW91cnM6emEoW05tLmNvbmZpZyh7fSldKX0pLGE9e3VwZGF0ZVByb2dyZXNzOmZ1bmN0aW9uKHQsbil7dC5nZXRTeXN0ZW0oKS5pc0Nvbm5lY3RlZCgpJiZ1LmdldE9wdCh0KS5lYWNoKGZ1bmN0aW9uKHQpe05tLnNldCh0LFt7ZG9tOnt0YWc6ImRpdiIsY2xhc3NlczpbInRveC1iYXItY29udGFpbmVyIl19LGNvbXBvbmVudHM6W3IobildfSxpKG4pXSl9KX0sdXBkYXRlVGV4dDpmdW5jdGlvbih0LG4pe2lmKHQuZ2V0U3lzdGVtKCkuaXNDb25uZWN0ZWQoKSl7dmFyIGU9by5nZXQodCk7Tm0uc2V0KGUsW1lpKG4pXSl9fX0sYz11dChbbi5pY29uLnRvQXJyYXkoKSxuLmxldmVsLnRvQXJyYXkoKSxuLmxldmVsLmJpbmQoZnVuY3Rpb24odCl7cmV0dXJuIHN0LmZyb20oWGdbdF0pfSkudG9BcnJheSgpXSk7cmV0dXJue3VpZDpuLnVpZCxkb206e3RhZzoiZGl2IixhdHRyaWJ1dGVzOntyb2xlOiJhbGVydCJ9LGNsYXNzZXM6bi5sZXZlbC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuWyJ0b3gtbm90aWZpY2F0aW9uIiwidG94LW5vdGlmaWNhdGlvbi0taW4iLCJ0b3gtbm90aWZpY2F0aW9uLS0iK3RdfSkuZ2V0T3IoWyJ0b3gtbm90aWZpY2F0aW9uIiwidG94LW5vdGlmaWNhdGlvbi0taW4iXSl9LGNvbXBvbmVudHM6W3tkb206e3RhZzoiZGl2IixjbGFzc2VzOlsidG94LW5vdGlmaWNhdGlvbl9faWNvbiJdLGlubmVySHRtbDoodD1jLGU9bi5pY29uUHJvdmlkZXIsUSh0LGZ1bmN0aW9uKHQpe3JldHVybiBzdC5mcm9tKGUoKVt0XSl9KS5nZXRPclRodW5rKGZ1bmN0aW9uKCl7cmV0dXJuIFdnKGUpfSkpfX0se2RvbTp7dGFnOiJkaXYiLGNsYXNzZXM6WyJ0b3gtbm90aWZpY2F0aW9uX19ib2R5Il19LGNvbXBvbmVudHM6W28uYXNTcGVjKCldLGJlaGF2aW91cnM6emEoW05tLmNvbmZpZyh7fSldKX1dLmNvbmNhdChuLnByb2dyZXNzP1t1LmFzU3BlYygpXTpbXSkuY29uY2F0KG4uY2xvc2VCdXR0b24/W2pnLnNrZXRjaCh7ZG9tOnt0YWc6ImJ1dHRvbiIsY2xhc3NlczpbInRveC1ub3RpZmljYXRpb25fX2Rpc21pc3MiLCJ0b3gtYnV0dG9uIiwidG94LWJ1dHRvbi0tbmFrZWQiLCJ0b3gtYnV0dG9uLS1pY29uIl19LGNvbXBvbmVudHM6W3tkb206e3RhZzoiZGl2IixjbGFzc2VzOlsidG94LWljb24iXSxpbm5lckh0bWw6R2coImNsb3NlIixuLmljb25Qcm92aWRlciksYXR0cmlidXRlczp7ImFyaWEtbGFiZWwiOm4udHJhbnNsYXRpb25Qcm92aWRlcigiQ2xvc2UiKX19fV0sYWN0aW9uOmZ1bmN0aW9uKHQpe24ub25BY3Rpb24odCl9fSldOltdKSxhcGlzOmF9fSxjb25maWdGaWVsZHM6W1luKCJsZXZlbCIpLHpuKCJwcm9ncmVzcyIpLHpuKCJpY29uIiksem4oIm9uQWN0aW9uIiksem4oInRleHQiKSx6bigiaWNvblByb3ZpZGVyIiksem4oInRyYW5zbGF0aW9uUHJvdmlkZXIiKSxyZSgiY2xvc2VCdXR0b24iLCEwKV0sYXBpczp7dXBkYXRlUHJvZ3Jlc3M6ZnVuY3Rpb24odCxuLGUpe3QudXBkYXRlUHJvZ3Jlc3MobixlKX0sdXBkYXRlVGV4dDpmdW5jdGlvbih0LG4sZSl7dC51cGRhdGVUZXh0KG4sZSl9fX0pO2Z1bmN0aW9uIHFnKHQsdSxhKXt2YXIgYz11LmJhY2tzdGFnZTtyZXR1cm57b3BlbjpmdW5jdGlvbih0LG4pe3ZhciBlPSF0LmNsb3NlQnV0dG9uJiZ0LnRpbWVvdXQmJigwPHQudGltZW91dHx8dC50aW1lb3V0PDApLG89ZnVuY3Rpb24oKXtuKCksQmcuaGlkZShpKX0scj1KaShZZy5za2V0Y2goe3RleHQ6dC50ZXh0LGxldmVsOkYoWyJzdWNjZXNzIiwiZXJyb3IiLCJ3YXJuaW5nIiwid2FybiIsImluZm8iXSx0LnR5cGUpP3QudHlwZTp1bmRlZmluZWQscHJvZ3Jlc3M6ITA9PT10LnByb2dyZXNzQmFyLGljb246c3QuZnJvbSh0Lmljb24pLGNsb3NlQnV0dG9uOiFlLG9uQWN0aW9uOm8saWNvblByb3ZpZGVyOmMuc2hhcmVkLnByb3ZpZGVycy5pY29ucyx0cmFuc2xhdGlvblByb3ZpZGVyOmMuc2hhcmVkLnByb3ZpZGVycy50cmFuc2xhdGV9KSksaT1KaShCZy5za2V0Y2goZXQoe2RvbTp7dGFnOiJkaXYiLGNsYXNzZXM6WyJ0b3gtbm90aWZpY2F0aW9ucy1jb250YWluZXIiXX0sbGF6eVNpbms6dS5iYWNrc3RhZ2Uuc2hhcmVkLmdldFNpbmssZmlyZURpc21pc3NhbEV2ZW50SW5zdGVhZDp7fX0sYy5zaGFyZWQuaGVhZGVyLmlzUG9zaXRpb25lZEF0VG9wKCk/e306e2ZpcmVSZXBvc2l0aW9uRXZlbnRJbnN0ZWFkOnt9fSkpKTtyZXR1cm4gYS5hZGQoaSksMDx0LnRpbWVvdXQmJkxnLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtvKCl9LHQudGltZW91dCkse2Nsb3NlOm8sbW92ZVRvOmZ1bmN0aW9uKHQsbil7Qmcuc2hvd0F0KGkse2FuY2hvcjoibWFrZXNoaWZ0Iix4OnQseTpufSwkaShyKSl9LG1vdmVSZWw6ZnVuY3Rpb24odCxuKXtpZigiYmFubmVyIiE9PW4pe3ZhciBlPWZ1bmN0aW9uKHQpe3N3aXRjaCh0KXtjYXNlImJjLWJjIjpyZXR1cm4gTmc7Y2FzZSJ0Yy10YyI6cmV0dXJuIHpnO2Nhc2UidGMtYmMiOnJldHVybiBPYTtjYXNlImJjLXRjIjpkZWZhdWx0OnJldHVybiBfYX19KG4pLG89e2FuY2hvcjoibm9kZSIscm9vdDpfaSgpLG5vZGU6c3Quc29tZShsZS5mcm9tRG9tKHQpKSxsYXlvdXRzOntvblJ0bDpmdW5jdGlvbigpe3JldHVybltlXX0sb25MdHI6ZnVuY3Rpb24oKXtyZXR1cm5bZV19fX07Qmcuc2hvd0F0KGksbywkaShyKSl9ZWxzZSBCZy5zaG93QXQoaSx1LmJhY2tzdGFnZS5zaGFyZWQuYW5jaG9ycy5iYW5uZXIoKSwkaShyKSl9LHRleHQ6ZnVuY3Rpb24odCl7WWcudXBkYXRlVGV4dChyLHQpfSxzZXR0aW5nczp0LGdldEVsOmZ1bmN0aW9uKCl7cmV0dXJuIHIuZWxlbWVudCgpLmRvbSgpfSxwcm9ncmVzc0Jhcjp7dmFsdWU6ZnVuY3Rpb24odCl7WWcudXBkYXRlUHJvZ3Jlc3Mocix0KX19fX0sY2xvc2U6ZnVuY3Rpb24odCl7dC5jbG9zZSgpfSxyZXBvc2l0aW9uOmZ1bmN0aW9uKHQpe3ZhciBlO2l0KHQsZnVuY3Rpb24odCl7cmV0dXJuIHQubW92ZVRvKDAsMCl9KSwwPChlPXQpLmxlbmd0aCYmKEsoZSkuZWFjaChmdW5jdGlvbih0KXtyZXR1cm4gdC5tb3ZlUmVsKG51bGwsImJhbm5lciIpfSksaXQoZSxmdW5jdGlvbih0LG4pezA8biYmdC5tb3ZlUmVsKGVbbi0xXS5nZXRFbCgpLCJiYy10YyIpfSkpfSxnZXRBcmdzOmZ1bmN0aW9uKHQpe3JldHVybiB0LnNldHRpbmdzfX19dmFyIEtnLEpnLCRnPWZ1bmN0aW9uKGUsbyl7dmFyIHI9bnVsbDtyZXR1cm57Y2FuY2VsOmZ1bmN0aW9uKCl7bnVsbCE9PXImJihudC5jbGVhclRpbWVvdXQocikscj1udWxsKX0sdGhyb3R0bGU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sbj0wO248YXJndW1lbnRzLmxlbmd0aDtuKyspdFtuXT1hcmd1bWVudHNbbl07bnVsbCE9PXImJm50LmNsZWFyVGltZW91dChyKSxyPW50LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtlLmFwcGx5KG51bGwsdCkscj1udWxsfSxvKX19fSxRZz10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS5kb20uVGV4dFNlZWtlciIpLFpnPWZ1bmN0aW9uKG8sdCxuLGUscil7dmFyIGk9UWcobyxmdW5jdGlvbih0KXtyZXR1cm4gZT10LChuPW8pLmlzQmxvY2soZSl8fEYoWyJCUiIsIklNRyIsIkhSIiwiSU5QVVQiXSxlLm5vZGVOYW1lKXx8ImZhbHNlIj09PW4uZ2V0Q29udGVudEVkaXRhYmxlKGUpO3ZhciBuLGV9KTtyZXR1cm4gc3QuZnJvbShpLmJhY2t3YXJkcyh0LG4sZSxyKSl9LHRwPWZ1bmN0aW9uKGUsbil7cmV0dXJuIG5wKGxlLmZyb21Eb20oZS5zZWxlY3Rpb24uZ2V0Tm9kZSgpKSkuZ2V0T3JUaHVuayhmdW5jdGlvbigpe3ZhciB0PWxlLmZyb21IdG1sKCc8c3BhbiBkYXRhLW1jZS1hdXRvY29tcGxldGVyPSIxIiBkYXRhLW1jZS1ib2d1cz0iMSI+PC9zcGFuPicsZS5nZXREb2MoKSk7cmV0dXJuIHZyKHQsbGUuZnJvbURvbShuLmV4dHJhY3RDb250ZW50cygpKSksbi5pbnNlcnROb2RlKHQuZG9tKCkpLGxyKHQpLmVhY2goZnVuY3Rpb24odCl7cmV0dXJuIHQuZG9tKCkubm9ybWFsaXplKCl9KSxYYyh0LEdjKS5tYXAoZnVuY3Rpb24odCl7dmFyIG47ZS5zZWxlY3Rpb24uc2V0Q3Vyc29yTG9jYXRpb24odC5kb20oKSwiaW1nIj09PUNyKG49dCk/MTpVYyhuKS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIGRyKG4pLmxlbmd0aH0sZnVuY3Rpb24odCl7cmV0dXJuIHQubGVuZ3RofSkpfSksdH0pfSxucD1mdW5jdGlvbih0KXtyZXR1cm4gQXUodCwiW2RhdGEtbWNlLWF1dG9jb21wbGV0ZXJdIil9LGVwPWZ1bmN0aW9uKHQpe3JldHVybiB0LnRvU3RyaW5nKCkucmVwbGFjZSgvXHUwMEEwL2csIiAiKS5yZXBsYWNlKC9cdUZFRkYvZywiIil9LG9wPWZ1bmN0aW9uKHQpe3JldHVybiIiIT09dCYmLTEhPT0iIFx4YTBcZlxuXHJcdFx4MEIiLmluZGV4T2YodCl9LHJwPWZ1bmN0aW9uKHQsbil7cmV0dXJuIHQuc3Vic3RyaW5nKG4ubGVuZ3RoKX0saXA9ZnVuY3Rpb24odCxvLHIsaSl7aWYodm9pZCAwPT09aSYmKGk9MCksIShuPW8pLmNvbGxhcHNlZHx8MyE9PW4uc3RhcnRDb250YWluZXIubm9kZVR5cGUpcmV0dXJuIHN0Lm5vbmUoKTt2YXIgbixlPXQuZ2V0UGFyZW50KG8uc3RhcnRDb250YWluZXIsdC5pc0Jsb2NrKXx8dC5nZXRSb290KCk7cmV0dXJuIFpnKHQsby5zdGFydENvbnRhaW5lcixvLnN0YXJ0T2Zmc2V0LGZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gZnVuY3Rpb24odCxuLGUpe3ZhciBvO2ZvcihvPW4tMTswPD1vO28tLSl7dmFyIHI9dC5jaGFyQXQobyk7aWYob3AocikpcmV0dXJuIHN0Lm5vbmUoKTtpZihyPT09ZSlicmVha31yZXR1cm4gc3Quc29tZShvKX0oZSxuLHIpLmdldE9yKG4pfSxlKS5iaW5kKGZ1bmN0aW9uKHQpe3ZhciBuPW8uY2xvbmVSYW5nZSgpO2lmKG4uc2V0U3RhcnQodC5jb250YWluZXIsdC5vZmZzZXQpLG4uc2V0RW5kKG8uZW5kQ29udGFpbmVyLG8uZW5kT2Zmc2V0KSxuLmNvbGxhcHNlZClyZXR1cm4gc3Qubm9uZSgpO3ZhciBlPWVwKG4pO3JldHVybiAwIT09ZS5sYXN0SW5kZXhPZihyKXx8cnAoZSxyKS5sZW5ndGg8aT9zdC5ub25lKCk6c3Quc29tZSh7dGV4dDpycChlLHIpLHJhbmdlOm4sdHJpZ2dlckNoYXI6cn0pfSl9LHVwPWZ1bmN0aW9uKG8sdCxyLG4pe3JldHVybiB2b2lkIDA9PT1uJiYobj0wKSxucChsZS5mcm9tRG9tKHQuc3RhcnRDb250YWluZXIpKS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIGlwKG8sdCxyLG4pfSxmdW5jdGlvbih0KXt2YXIgbj1vLmNyZWF0ZVJuZygpO24uc2VsZWN0Tm9kZSh0LmRvbSgpKTt2YXIgZT1lcChuKTtyZXR1cm4gc3Quc29tZSh7cmFuZ2U6bix0ZXh0OnJwKGUsciksdHJpZ2dlckNoYXI6cn0pfSl9LGFwPWZ1bmN0aW9uKGUsdCl7dC5vbigia2V5cHJlc3MgY29tcG9zaXRpb25lbmQiLGUub25LZXlwcmVzcy50aHJvdHRsZSksdC5vbigicmVtb3ZlIixlLm9uS2V5cHJlc3MuY2FuY2VsKTt2YXIgbz1mdW5jdGlvbih0LG4pe2pvKHQsYW8oKSx7cmF3Om59KX07dC5vbigia2V5ZG93biIsZnVuY3Rpb24obil7dmFyIHQ9ZnVuY3Rpb24oKXtyZXR1cm4gZS5nZXRWaWV3KCkuYmluZChqZi5nZXRIaWdobGlnaHRlZCl9Ozg9PT1uLndoaWNoJiZlLm9uS2V5cHJlc3MudGhyb3R0bGUobiksZS5pc0FjdGl2ZSgpJiYoMjc9PT1uLndoaWNoJiZlLmNhbmNlbElmTmVjZXNzYXJ5KCksZS5pc01lbnVPcGVuKCk/MTM9PT1uLndoaWNoPyh0KCkuZWFjaChVbyksbi5wcmV2ZW50RGVmYXVsdCgpKTo0MD09PW4ud2hpY2g/KHQoKS5mb2xkKGZ1bmN0aW9uKCl7ZS5nZXRWaWV3KCkuZWFjaChqZi5oaWdobGlnaHRGaXJzdCl9LGZ1bmN0aW9uKHQpe28odCxuKX0pLG4ucHJldmVudERlZmF1bHQoKSxuLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpKTozNyE9PW4ud2hpY2gmJjM4IT09bi53aGljaCYmMzkhPT1uLndoaWNofHx0KCkuZWFjaChmdW5jdGlvbih0KXtvKHQsbiksbi5wcmV2ZW50RGVmYXVsdCgpLG4uc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9KToxMyE9PW4ud2hpY2gmJjM4IT09bi53aGljaCYmNDAhPT1uLndoaWNofHxlLmNhbmNlbElmTmVjZXNzYXJ5KCkpfSksdC5vbigiTm9kZUNoYW5nZSIsZnVuY3Rpb24odCl7ZS5pc0FjdGl2ZSgpJiYhZS5pc1Byb2Nlc3NpbmdBY3Rpb24oKSYmbnAobGUuZnJvbURvbSh0LmVsZW1lbnQpKS5pc05vbmUoKSYmZS5jYW5jZWxJZk5lY2Vzc2FyeSgpfSl9LGNwPXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLnV0aWwuUHJvbWlzZSIpLHNwPWZ1bmN0aW9uKHQsbil7cmV0dXJue2NvbnRhaW5lcjp0LG9mZnNldDpufX0sbHA9ZnVuY3Rpb24odCl7aWYodC5ub2RlVHlwZT09PW50Lk5vZGUuVEVYVF9OT0RFKXJldHVybiBzcCh0LHQuZGF0YS5sZW5ndGgpO3ZhciBuPXQuY2hpbGROb2RlcztyZXR1cm4gMDxuLmxlbmd0aD9scChuW24ubGVuZ3RoLTFdKTpzcCh0LG4ubGVuZ3RoKX0sZnA9ZnVuY3Rpb24odCxuKXt2YXIgZT10LmNoaWxkTm9kZXM7cmV0dXJuIDA8ZS5sZW5ndGgmJm48ZS5sZW5ndGg/ZnAoZVtuXSwwKTowPGUubGVuZ3RoJiZ0Lm5vZGVUeXBlPT09bnQuTm9kZS5FTEVNRU5UX05PREUmJmUubGVuZ3RoPT09bj9scChlW2UubGVuZ3RoLTFdKTpzcCh0LG4pfSxkcD1mdW5jdGlvbihyKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIG4sZSxvPWZwKHQuc3RhcnRDb250YWluZXIsdC5zdGFydE9mZnNldCk7cmV0dXJuIVpnKG49ciwoZT1vKS5jb250YWluZXIsZS5vZmZzZXQsZnVuY3Rpb24odCxuKXtyZXR1cm4gMD09PW4/LTE6bn0sbi5nZXRSb290KCkpLmZpbHRlcihmdW5jdGlvbih0KXt2YXIgbj10LmNvbnRhaW5lci5kYXRhLmNoYXJBdCh0Lm9mZnNldC0xKTtyZXR1cm4hb3Aobil9KS5pc1NvbWUoKX19LG1wPWZ1bmN0aW9uKG4sZSl7dmFyIG8scix0PWUoKSxpPW4uc2VsZWN0aW9uLmdldFJuZygpO3JldHVybiBvPW4uZG9tLHI9aSxRKHQudHJpZ2dlckNoYXJzLGZ1bmN0aW9uKHQpe3JldHVybiB1cChvLHIsdCl9KS5iaW5kKGZ1bmN0aW9uKHQpe3JldHVybiBncChuLGUsdCl9KX0sZ3A9ZnVuY3Rpb24obix0LGUsbyl7dm9pZCAwPT09byYmKG89e30pO3ZhciByPXQoKSxpPW4uc2VsZWN0aW9uLmdldFJuZygpLnN0YXJ0Q29udGFpbmVyLm5vZGVWYWx1ZSx1PVAoci5sb29rdXBCeUNoYXIoZS50cmlnZ2VyQ2hhciksZnVuY3Rpb24odCl7cmV0dXJuIGUudGV4dC5sZW5ndGg+PXQubWluQ2hhcnMmJnQubWF0Y2hlcy5nZXRPclRodW5rKGZ1bmN0aW9uKCl7cmV0dXJuIGRwKG4uZG9tKX0pKGUucmFuZ2UsaSxlLnRleHQpfSk7aWYoMD09PXUubGVuZ3RoKXJldHVybiBzdC5ub25lKCk7dmFyIGE9Y3AuYWxsKFYodSxmdW5jdGlvbihuKXtyZXR1cm4gbi5mZXRjaChlLnRleHQsbi5tYXhSZXN1bHRzLG8pLnRoZW4oZnVuY3Rpb24odCl7cmV0dXJue21hdGNoVGV4dDplLnRleHQsaXRlbXM6dCxjb2x1bW5zOm4uY29sdW1ucyxvbkFjdGlvbjpuLm9uQWN0aW9ufX0pfSkpO3JldHVybiBzdC5zb21lKHtsb29rdXBEYXRhOmEsY29udGV4dDplfSl9LHBwPWxuKFtMbigidHlwZSIpLEpuKCJ0ZXh0IildKSxocD1sbihbYWUoInR5cGUiLGZ1bmN0aW9uKCl7cmV0dXJuImF1dG9jb21wbGV0ZWl0ZW0ifSksYWUoImFjdGl2ZSIsZnVuY3Rpb24oKXtyZXR1cm4hMX0pLGFlKCJkaXNhYmxlZCIsZnVuY3Rpb24oKXtyZXR1cm4hMX0pLFpuKCJtZXRhIix7fSksTG4oInZhbHVlIiksSm4oInRleHQiKSxKbigiaWNvbiIpXSksdnA9bG4oW0xuKCJ0eXBlIiksTG4oImNoIiksbmUoIm1pbkNoYXJzIiwxKSxabigiY29sdW1ucyIsMSksbmUoIm1heFJlc3VsdHMiLDEwKSwkbigibWF0Y2hlcyIpLFVuKCJmZXRjaCIpLFVuKCJvbkFjdGlvbiIpXSksYnA9ZnVuY3Rpb24odCl7dmFyIG4sZSxvPXQudWkucmVnaXN0cnkuZ2V0QWxsKCkucG9wdXBzLHI9ZHQobyxmdW5jdGlvbih0KXtyZXR1cm4gQ24oIkF1dG9jb21wbGV0ZXIiLHZwLHQpLmZvbGQoZnVuY3Rpb24odCl7dGhyb3cgbmV3IEVycm9yKFRuKHQpKX0sZnVuY3Rpb24odCl7cmV0dXJuIHR9KX0pLGk9KG49cHQocixmdW5jdGlvbih0KXtyZXR1cm4gdC5jaH0pLGU9e30saXQobixmdW5jdGlvbih0KXtlW3RdPXt9fSksbHQoZSkpLHU9dnQocik7cmV0dXJue2RhdGFzZXQ6cix0cmlnZ2VyQ2hhcnM6aSxsb29rdXBCeUNoYXI6ZnVuY3Rpb24obil7cmV0dXJuIFAodSxmdW5jdGlvbih0KXtyZXR1cm4gdC5jaD09PW59KX19fSx5cD1bcmUoImRpc2FibGVkIiwhMSksSm4oInRleHQiKSxKbigic2hvcnRjdXQiKSxobigidmFsdWUiLCJ2YWx1ZSIsR3QoZnVuY3Rpb24oKXtyZXR1cm4gTnIoIm1lbnVpdGVtLXZhbHVlIil9KSxEbigpKSxabigibWV0YSIse30pXSx4cD1sbihbTG4oInR5cGUiKSxpZSgib25TZXR1cCIsZnVuY3Rpb24oKXtyZXR1cm4gWn0pLGllKCJvbkFjdGlvbiIsWiksSm4oImljb24iKV0uY29uY2F0KHlwKSksd3A9bG4oW0xuKCJ0eXBlIiksVW4oImdldFN1Ym1lbnVJdGVtcyIpLGllKCJvblNldHVwIixmdW5jdGlvbigpe3JldHVybiBafSksSm4oImljb24iKV0uY29uY2F0KHlwKSksU3A9bG4oW0xuKCJ0eXBlIiksSm4oImljb24iKSxyZSgiYWN0aXZlIiwhMSksaWUoIm9uU2V0dXAiLGZ1bmN0aW9uKCl7cmV0dXJuIFp9KSxVbigib25BY3Rpb24iKV0uY29uY2F0KHlwKSksa3A9bG4oW0xuKCJ0eXBlIikscmUoImFjdGl2ZSIsITEpLEpuKCJpY29uIildLmNvbmNhdCh5cCkpLENwPWxuKFtMbigidHlwZSIpLGpuKCJmYW5jeXR5cGUiLFsiaW5zZXJ0dGFibGUiLCJjb2xvcnN3YXRjaCJdKSxpZSgib25BY3Rpb24iLFopXSksT3A9ZnVuY3Rpb24odCxvLG4pe3ZhciByPVljKHQuZWxlbWVudCgpLCIuIituKTtpZigwPHIubGVuZ3RoKXt2YXIgZT1qKHIsZnVuY3Rpb24odCl7dmFyIG49dC5kb20oKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AsZT1yWzBdLmRvbSgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtyZXR1cm4gTWF0aC5hYnMobi1lKT5vfSkuZ2V0T3Ioci5sZW5ndGgpO3JldHVybiBzdC5zb21lKHtudW1Db2x1bW5zOmUsbnVtUm93czpNYXRoLmNlaWwoci5sZW5ndGgvZSl9KX1yZXR1cm4gc3Qubm9uZSgpfSxfcD1mdW5jdGlvbih0LG4pe3JldHVybiB6YShbTG0odCxuKV0pfSxUcD1mdW5jdGlvbih0KXtyZXR1cm4gX3AoTnIoInVubmFtZWQtZXZlbnRzIiksdCl9LEVwPVt6bigibGF6eVNpbmsiKSx6bigidG9vbHRpcERvbSIpLFpuKCJleGNsdXNpdmUiLCEwKSxabigidG9vbHRpcENvbXBvbmVudHMiLFtdKSxabigiZGVsYXkiLDMwMCksb2UoIm1vZGUiLCJub3JtYWwiLFsibm9ybWFsIiwiZm9sbG93LWhpZ2hsaWdodCJdKSxabigiYW5jaG9yIixmdW5jdGlvbih0KXtyZXR1cm57YW5jaG9yOiJob3RzcG90Iixob3RzcG90OnQsbGF5b3V0czp7b25MdHI6YXQoW19hLE9hLHdhLGthLFNhLENhXSksb25SdGw6YXQoW19hLE9hLHdhLGthLFNhLENhXSl9fX0pLCR1KCJvbkhpZGUiKSwkdSgib25TaG93IildLEJwPS8qICovT2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsaW5pdDpmdW5jdGlvbigpe3ZhciBlPWNlKHN0Lm5vbmUoKSksbj1jZShzdC5ub25lKCkpLG89ZnVuY3Rpb24oKXtlLmdldCgpLmVhY2goZnVuY3Rpb24odCl7bnQuY2xlYXJUaW1lb3V0KHQpfSl9LHQ9YXQoIm5vdC1pbXBsZW1lbnRlZCIpO3JldHVybiBvaSh7Z2V0VG9vbHRpcDpmdW5jdGlvbigpe3JldHVybiBuLmdldCgpfSxpc1Nob3dpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gbi5nZXQoKS5pc1NvbWUoKX0sc2V0VG9vbHRpcDpmdW5jdGlvbih0KXtuLnNldChzdC5zb21lKHQpKX0sY2xlYXJUb29sdGlwOmZ1bmN0aW9uKCl7bi5zZXQoc3Qubm9uZSgpKX0sY2xlYXJUaW1lcjpvLHJlc2V0VGltZXI6ZnVuY3Rpb24odCxuKXtvKCksZS5zZXQoc3Quc29tZShudC5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dCgpfSxuKSkpfSxyZWFkU3RhdGU6dH0pfX0pLERwPU5yKCJ0b29sdGlwLmV4Y2x1c2l2ZSIpLE1wPU5yKCJ0b29sdGlwLnNob3ciKSxBcD1OcigidG9vbHRpcC5oaWRlIiksRnA9ZnVuY3Rpb24odCxuLGUpe3QuZ2V0U3lzdGVtKCkuYnJvYWRjYXN0T24oW0RwXSx7fSl9LElwPS8qICovT2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsaGlkZUFsbEV4Y2x1c2l2ZTpGcCxzZXRDb21wb25lbnRzOmZ1bmN0aW9uKHQsbixlLG8pe2UuZ2V0VG9vbHRpcCgpLmVhY2goZnVuY3Rpb24odCl7dC5nZXRTeXN0ZW0oKS5pc0Nvbm5lY3RlZCgpJiZObS5zZXQodCxvKX0pfX0pLFJwPUxhKHtmaWVsZHM6RXAsbmFtZToidG9vbHRpcHBpbmciLGFjdGl2ZTovKiAqL09iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLGV2ZW50czpmdW5jdGlvbihvLHIpe3ZhciBlPWZ1bmN0aW9uKG4pe3IuZ2V0VG9vbHRpcCgpLmVhY2goZnVuY3Rpb24odCl7UHModCksby5vbkhpZGUobix0KSxyLmNsZWFyVG9vbHRpcCgpfSksci5jbGVhclRpbWVyKCl9O3JldHVybiBZbyh1dChbW0pvKE1wLGZ1bmN0aW9uKHQpe3IucmVzZXRUaW1lcihmdW5jdGlvbigpeyFmdW5jdGlvbihuKXtpZighci5pc1Nob3dpbmcoKSl7RnAobik7dmFyIHQ9by5sYXp5U2luayhuKS5nZXRPckRpZSgpLGU9bi5nZXRTeXN0ZW0oKS5idWlsZCh7ZG9tOm8udG9vbHRpcERvbSxjb21wb25lbnRzOm8udG9vbHRpcENvbXBvbmVudHMsZXZlbnRzOllvKCJub3JtYWwiPT09by5tb2RlP1tKbyhybygpLGZ1bmN0aW9uKHQpe0xvKG4sTXApfSksSm8oZW8oKSxmdW5jdGlvbih0KXtMbyhuLEFwKX0pXTpbXSksYmVoYXZpb3Vyczp6YShbTm0uY29uZmlnKHt9KV0pfSk7ci5zZXRUb29sdGlwKGUpLFJzKHQsZSksby5vblNob3cobixlKSxEcy5wb3NpdGlvbih0LG8uYW5jaG9yKG4pLGUpfX0odCl9LG8uZGVsYXkpfSksSm8oQXAsZnVuY3Rpb24odCl7ci5yZXNldFRpbWVyKGZ1bmN0aW9uKCl7ZSh0KX0sby5kZWxheSl9KSxKbyh5bygpLGZ1bmN0aW9uKHQsbil7RihuLmNoYW5uZWxzKCksRHApJiZlKHQpfSkscnIoZnVuY3Rpb24odCl7ZSh0KX0pXSwibm9ybWFsIj09PW8ubW9kZT9bSm8oaW8oKSxmdW5jdGlvbih0KXtMbyh0LE1wKX0pLEpvKHZvKCksZnVuY3Rpb24odCl7TG8odCxBcCl9KSxKbyhybygpLGZ1bmN0aW9uKHQpe0xvKHQsTXApfSksSm8oZW8oKSxmdW5jdGlvbih0KXtMbyh0LEFwKX0pXTpbSm8oem8oKSxmdW5jdGlvbih0LG4pe0xvKHQsTXApfSksSm8oTm8oKSxmdW5jdGlvbih0KXtMbyh0LEFwKX0pXV0pKX19KSxzdGF0ZTpCcCxhcGlzOklwfSksVnA9dGlueW1jZS51dGlsLlRvb2xzLnJlc29sdmUoInRpbnltY2UudXRpbC5JMThuIiksSHA9InRveC1tZW51LW5hdl9fanMiLFBwPSJ0b3gtY29sbGVjdGlvbl9faXRlbSIsenA9InRveC1zd2F0Y2giLE5wPXtub3JtYWw6SHAsY29sb3I6enB9LExwPSJ0b3gtY29sbGVjdGlvbl9faXRlbS0tZW5hYmxlZCIsanA9InRveC1jb2xsZWN0aW9uX19pdGVtLWxhYmVsIixVcD0idG94LWNvbGxlY3Rpb25fX2l0ZW0tY2FyZXQiLFdwPSJ0b3gtY29sbGVjdGlvbl9faXRlbS0tYWN0aXZlIixHcD1mdW5jdGlvbih0KXtyZXR1cm4gYnQoTnAsdCkuZ2V0T3IoSHApfSxYcD10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS5FbnYiKSxZcD1mdW5jdGlvbih0KXtyZXR1cm57ZG9tOnt0YWc6ImRpdiIsY2xhc3NlczpbInRveC1jb2xsZWN0aW9uX19pdGVtLWljb24iXSxpbm5lckh0bWw6dH19fSxxcD1mdW5jdGlvbih0KXtyZXR1cm57ZG9tOnt0YWc6ImRpdiIsY2xhc3NlczpbanBdfSxjb21wb25lbnRzOltZaShWcC50cmFuc2xhdGUodCkpXX19LEtwPWZ1bmN0aW9uKHQsbil7cmV0dXJue2RvbTp7dGFnOiJkaXYiLGNsYXNzZXM6W2pwXX0sY29tcG9uZW50czpbe2RvbTp7dGFnOnQudGFnLHN0eWxlczp0LnN0eWxlc30sY29tcG9uZW50czpbWWkoVnAudHJhbnNsYXRlKG4pKV19XX19LEpwPWZ1bmN0aW9uKHQpe3JldHVybntkb206e3RhZzoiZGl2IixjbGFzc2VzOlsidG94LWNvbGxlY3Rpb25fX2l0ZW0tYWNjZXNzb3J5Il0saW5uZXJIdG1sOihuPXQsZT1YcC5tYWM/e2FsdDoiJiN4MjMyNTsiLGN0cmw6IiYjeDIzMDM7IixzaGlmdDoiJiN4MjFFNzsiLG1ldGE6IiYjeDIzMTg7IixhY2Nlc3M6IiYjeDIzMDM7JiN4MjMyNTsifTp7bWV0YToiQ3RybCIsYWNjZXNzOiJTaGlmdCtBbHQifSxvPW4uc3BsaXQoIisiKSxyPVYobyxmdW5jdGlvbih0KXt2YXIgbj10LnRvTG93ZXJDYXNlKCkudHJpbSgpO3JldHVybiB5dChlLG4pP2Vbbl06dH0pLFhwLm1hYz9yLmpvaW4oIiIpOnIuam9pbigiKyIpKX19O3ZhciBuLGUsbyxyfSwkcD1mdW5jdGlvbih0KXtyZXR1cm57ZG9tOnt0YWc6ImRpdiIsY2xhc3NlczpbInRveC1jb2xsZWN0aW9uX19pdGVtLWNoZWNrbWFyayJdLGlubmVySHRtbDpHZygiY2hlY2ttYXJrIix0KX19fSxRcD1mdW5jdGlvbih0LG4sZSxvLHIpe3ZhciBpPWU/bi5vcihzdC5zb21lKCIiKSkubWFwKFlwKTpzdC5ub25lKCksdT10LmNoZWNrTWFyayxhPXQuYXJpYUxhYmVsLm1hcChmdW5jdGlvbih0KXtyZXR1cm57YXR0cmlidXRlczp7dGl0bGU6VnAudHJhbnNsYXRlKHQpfX19KS5nZXRPcih7fSk7cmV0dXJue2RvbTpldCh7dGFnOiJkaXYiLGNsYXNzZXM6W0hwLFBwXS5jb25jYXQocj9bInRveC1jb2xsZWN0aW9uX19pdGVtLWljb24tcnRsIl06W10pfSxhKSxvcHRDb21wb25lbnRzOltpLHQuaHRtbENvbnRlbnQuZm9sZChmdW5jdGlvbigpe3JldHVybiB0LnRleHRDb250ZW50Lm1hcChvKX0sZnVuY3Rpb24odCl7cmV0dXJuIHN0LnNvbWUoe2RvbTp7dGFnOiJkaXYiLGNsYXNzZXM6W2pwXSxpbm5lckh0bWw6dH19KX0pLHQuc2hvcnRjdXRDb250ZW50Lm1hcChKcCksdSx0LmNhcmV0XX19LFpwPVsibGlzdC1udW0tZGVmYXVsdCIsImxpc3QtbnVtLWxvd2VyLWFscGhhIiwibGlzdC1udW0tbG93ZXItZ3JlZWsiLCJsaXN0LW51bS1sb3dlci1yb21hbiIsImxpc3QtbnVtLXVwcGVyLWFscGhhIiwibGlzdC1udW0tdXBwZXItcm9tYW4iXSx0aD1bImxpc3QtYnVsbC1jaXJjbGUiLCJsaXN0LWJ1bGwtZGVmYXVsdCIsImxpc3QtYnVsbC1zcXVhcmUiXSxuaD1mdW5jdGlvbih0LHIsbixpKXt2b2lkIDA9PT1pJiYoaT1zdC5ub25lKCkpO3ZhciBlLG8sdSxhLGMscz1WcC5pc1J0bCgpJiZ0Lmljb25Db250ZW50LmV4aXN0cyhmdW5jdGlvbih0KXtyZXR1cm4gRih0aCx0KX0pLGw9dC5pY29uQ29udGVudC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIFZwLmlzUnRsKCkmJkYoWnAsdCk/dCsiLXJ0bCI6dH0pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gbj10LGU9ci5pY29ucyxvPWksc3QuZnJvbShlKClbbl0pLm9yKG8pLmdldE9yVGh1bmsoZnVuY3Rpb24oKXtyZXR1cm4gV2coZSl9KTt2YXIgbixlLG99KSxmPXN0LmZyb20odC5tZXRhKS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIHFwfSxmdW5jdGlvbih0KXtyZXR1cm4geXQodCwic3R5bGUiKT9nKEtwLHQuc3R5bGUpOnFwfSk7cmV0dXJuImNvbG9yIj09PXQucHJlc2V0cz8oZT10LmFyaWFMYWJlbCxvPXQudmFsdWUsdT1yLHtkb206KGE9bC5nZXRPcigiIiksYz17dGFnOiJkaXYiLGF0dHJpYnV0ZXM6ZS5tYXAoZnVuY3Rpb24odCl7cmV0dXJue3RpdGxlOnUudHJhbnNsYXRlKHQpfX0pLmdldE9yKHt9KSxjbGFzc2VzOlsidG94LXN3YXRjaCJdfSxldChldCh7fSxjKSwiY3VzdG9tIj09PW8/e3RhZzoiYnV0dG9uIixjbGFzc2VzOmIoYy5jbGFzc2VzLFsidG94LXN3YXRjaGVzX19waWNrZXItYnRuIl0pLGlubmVySHRtbDphfToicmVtb3ZlIj09PW8/e2NsYXNzZXM6YihjLmNsYXNzZXMsWyJ0b3gtc3dhdGNoLS1yZW1vdmUiXSksaW5uZXJIdG1sOmF9OnthdHRyaWJ1dGVzOmV0KGV0KHt9LGMuYXR0cmlidXRlcykseyJkYXRhLW1jZS1jb2xvciI6b30pLHN0eWxlczp7ImJhY2tncm91bmQtY29sb3IiOm99fSkpLG9wdENvbXBvbmVudHM6W119KTpRcCh0LGwsbixmLHMpfSxlaD1bImlucHV0IiwiYnV0dG9uIiwidGV4dGFyZWEiLCJzZWxlY3QiXSxvaD1mdW5jdGlvbih0LG4sZSl7KG4uZGlzYWJsZWQoKT9zaDpsaCkodCxuLGUpfSxyaD1mdW5jdGlvbih0LG4pe3JldHVybiEwPT09bi51c2VOYXRpdmUmJkYoZWgsQ3IodC5lbGVtZW50KCkpKX0saWg9ZnVuY3Rpb24odCl7QnIodC5lbGVtZW50KCksImRpc2FibGVkIiwiZGlzYWJsZWQiKX0sdWg9ZnVuY3Rpb24odCl7RnIodC5lbGVtZW50KCksImRpc2FibGVkIil9LGFoPWZ1bmN0aW9uKHQpe0JyKHQuZWxlbWVudCgpLCJhcmlhLWRpc2FibGVkIiwidHJ1ZSIpfSxjaD1mdW5jdGlvbih0KXtCcih0LmVsZW1lbnQoKSwiYXJpYS1kaXNhYmxlZCIsImZhbHNlIil9LHNoPWZ1bmN0aW9uKG4sdCxlKXt0LmRpc2FibGVDbGFzcy5lYWNoKGZ1bmN0aW9uKHQpe2JpKG4uZWxlbWVudCgpLHQpfSksKHJoKG4sdCk/aWg6YWgpKG4pLHQub25EaXNhYmxlZChuKX0sbGg9ZnVuY3Rpb24obix0LGUpe3QuZGlzYWJsZUNsYXNzLmVhY2goZnVuY3Rpb24odCl7eGkobi5lbGVtZW50KCksdCl9KSwocmgobix0KT91aDpjaCkobiksdC5vbkVuYWJsZWQobil9LGZoPWZ1bmN0aW9uKHQsbil7cmV0dXJuIHJoKHQsbik/QXIodC5lbGVtZW50KCksImRpc2FibGVkIik6InRydWUiPT09RHIodC5lbGVtZW50KCksImFyaWEtZGlzYWJsZWQiKX0sZGg9LyogKi9PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxlbmFibGU6bGgsZGlzYWJsZTpzaCxpc0Rpc2FibGVkOmZoLG9uTG9hZDpvaCxzZXQ6ZnVuY3Rpb24odCxuLGUsbyl7KG8/c2g6bGgpKHQsbixlKX19KSxtaD0vKiAqL09iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLGV4aGliaXQ6ZnVuY3Rpb24odCxuKXtyZXR1cm4gaWkoe2NsYXNzZXM6bi5kaXNhYmxlZD9uLmRpc2FibGVDbGFzcy5tYXAoWSkuZ2V0T3IoW10pOltdfSl9LGV2ZW50czpmdW5jdGlvbihlLHQpe3JldHVybiBZbyhbcW8oeG8oKSxmdW5jdGlvbih0LG4pe3JldHVybiBmaCh0LGUpfSksSWEoZSx0LG9oKV0pfX0pLGdoPVtpZSgiZGlzYWJsZWQiLGMpLFpuKCJ1c2VOYXRpdmUiLCEwKSxZbigiZGlzYWJsZUNsYXNzIiksJHUoIm9uRGlzYWJsZWQiKSwkdSgib25FbmFibGVkIildLHBoPUxhKHtmaWVsZHM6Z2gsbmFtZToiZGlzYWJsaW5nIixhY3RpdmU6bWgsYXBpczpkaH0pLGhoPXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLmRvbS5ET01VdGlscyIpLHZoPXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLkVkaXRvck1hbmFnZXIiKSxiaD1mdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRQYXJhbSgiaGVpZ2h0IixNYXRoLm1heCh0LmdldEVsZW1lbnQoKS5vZmZzZXRIZWlnaHQsMjAwKSl9LHloPWZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFBhcmFtKCJ3aWR0aCIsaGguRE9NLmdldFN0eWxlKHQuZ2V0RWxlbWVudCgpLCJ3aWR0aCIpKX0seGg9ZnVuY3Rpb24odCl7cmV0dXJuIHN0LmZyb20odC5zZXR0aW5ncy5taW5fd2lkdGgpLmZpbHRlcihydCl9LHdoPWZ1bmN0aW9uKHQpe3JldHVybiBzdC5mcm9tKHQuc2V0dGluZ3MubWluX2hlaWdodCkuZmlsdGVyKHJ0KX0sU2g9ZnVuY3Rpb24odCl7cmV0dXJuIHN0LmZyb20odC5nZXRQYXJhbSgibWF4X3dpZHRoIikpLmZpbHRlcihydCl9LGtoPWZ1bmN0aW9uKHQpe3JldHVybiBzdC5mcm9tKHQuZ2V0UGFyYW0oIm1heF9oZWlnaHQiKSkuZmlsdGVyKHJ0KX0sQ2g9ZnVuY3Rpb24odCl7cmV0dXJuITEhPT10LmdldFBhcmFtKCJtZW51YmFyIiwhMCwiYm9vbGVhbiIpfSxPaD1mdW5jdGlvbih0KXt2YXIgbj10LmdldFBhcmFtKCJ0b29sYmFyIiwhMCksZT0hMD09PW4sbz1TKG4pLHI9QyhuKSYmMDxuLmxlbmd0aDtyZXR1cm4hVGgodCkmJihyfHxvfHxlKX0sX2g9ZnVuY3Rpb24obil7dmFyIHQ9bHQobi5zZXR0aW5ncyksZT1QKHQsZnVuY3Rpb24odCl7cmV0dXJuL150b29sYmFyKFsxLTldKSQvLnRlc3QodCl9KSxvPVYoZSxmdW5jdGlvbih0KXtyZXR1cm4gbi5nZXRQYXJhbSh0LCExLCJzdHJpbmciKX0pLHI9UChvLGZ1bmN0aW9uKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdH0pO3JldHVybiAwPHIubGVuZ3RoP3N0LnNvbWUocik6c3Qubm9uZSgpfSxUaD1mdW5jdGlvbih0KXtyZXR1cm4gX2godCkuZm9sZChmdW5jdGlvbigpe3JldHVybiAwPHQuZ2V0UGFyYW0oInRvb2xiYXIiLFtdLCJzdHJpbmdbXSIpLmxlbmd0aH0sZnVuY3Rpb24oKXtyZXR1cm4hMH0pfTsoSmc9S2c9S2d8fHt9KVsiZGVmYXVsdCJdPSJ3cmFwIixKZy5mbG9hdGluZz0iZmxvYXRpbmciLEpnLnNsaWRpbmc9InNsaWRpbmciLEpnLnNjcm9sbGluZz0ic2Nyb2xsaW5nIjt2YXIgRWgsQmgsRGg9ZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0UGFyYW0oInRvb2xiYXJfbW9kZSIsIiIsInN0cmluZyIpfTsoQmg9RWg9RWh8fHt9KS5hdXRvPSJhdXRvIixCaC50b3A9InRvcCIsQmguYm90dG9tPSJib3R0b20iO3ZhciBNaCxBaCxGaD1mdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRQYXJhbSgidG9vbGJhcl9sb2NhdGlvbiIsRWguYXV0bywic3RyaW5nIil9LEloPWZ1bmN0aW9uKHQpe3JldHVybiBGaCh0KT09PUVoLmJvdHRvbX0sUmg9ZnVuY3Rpb24odCl7dmFyIG49dC5nZXRQYXJhbSgiZml4ZWRfdG9vbGJhcl9jb250YWluZXIiLCIiLCJzdHJpbmciKTtyZXR1cm4gMDxuLmxlbmd0aCYmdC5pbmxpbmU/TXUoX2koKSxuKTpzdC5ub25lKCl9LFZoPWZ1bmN0aW9uKHQpe3JldHVybiB0LmlubGluZSYmUmgodCkuaXNTb21lKCl9LEhoPWZ1bmN0aW9uKHQpe3JldHVybiB0LmlubGluZSYmIUNoKHQpJiYhT2godCkmJiFUaCh0KX0sUGg9ZnVuY3Rpb24odCl7cmV0dXJuKHQuZ2V0UGFyYW0oInRvb2xiYXJfc3RpY2t5IiwhMSwiYm9vbGVhbiIpfHx0LmlubGluZSkmJiFWaCh0KSYmIUhoKHQpfSx6aD0ic2lsdmVyLnJlYWRvbmx5IixOaD1sbihbTm4oInJlYWRvbmx5IixJbildKSxMaD1mdW5jdGlvbih0LG4pe3ZhciBlPXQub3V0ZXJDb250YWluZXIuZWxlbWVudCgpO24mJih0Lm1vdGhlcnNoaXAuYnJvYWRjYXN0T24oW1pzKCldLHt0YXJnZXQ6ZX0pLHQudWlNb3RoZXJzaGlwLmJyb2FkY2FzdE9uKFtacygpXSx7dGFyZ2V0OmV9KSksdC5tb3RoZXJzaGlwLmJyb2FkY2FzdE9uKFt6aF0se3JlYWRvbmx5Om59KSx0LnVpTW90aGVyc2hpcC5icm9hZGNhc3RPbihbemhdLHtyZWFkb25seTpufSl9LGpoPWZ1bmN0aW9uKHQsbil7dC5vbigiaW5pdCIsZnVuY3Rpb24oKXt0Lm1vZGUuaXNSZWFkT25seSgpJiZMaChuLCEwKX0pLHQub24oIlN3aXRjaE1vZGUiLGZ1bmN0aW9uKCl7cmV0dXJuIExoKG4sdC5tb2RlLmlzUmVhZE9ubHkoKSl9KSx0LmdldFBhcmFtKCJyZWFkb25seSIsITEsImJvb2xlYW4iKSYmdC5zZXRNb2RlKCJyZWFkb25seSIpfSxVaD1mdW5jdGlvbigpe3ZhciB0O3JldHVybiBZYS5jb25maWcoe2NoYW5uZWxzOigodD17fSlbemhdPXtzY2hlbWE6Tmgsb25SZWNlaXZlOmZ1bmN0aW9uKHQsbil7cGguc2V0KHQsbi5yZWFkb25seSl9fSx0KX0pfSxXaD1mdW5jdGlvbih0KXtyZXR1cm4gcGguY29uZmlnKHtkaXNhYmxlZDp0LGRpc2FibGVDbGFzczoidG94LWNvbGxlY3Rpb25fX2l0ZW0tLXN0YXRlLWRpc2FibGVkIn0pfSxHaD1mdW5jdGlvbih0KXtyZXR1cm4gcGguY29uZmlnKHtkaXNhYmxlZDp0fSl9LFhoPWZ1bmN0aW9uKHQpe3JldHVybiBwaC5jb25maWcoe2Rpc2FibGVkOnQsZGlzYWJsZUNsYXNzOiJ0b3gtdGJ0bi0tZGlzYWJsZWQifSl9LFloPWZ1bmN0aW9uKHQpe3JldHVybiBwaC5jb25maWcoe2Rpc2FibGVkOnQsZGlzYWJsZUNsYXNzOiJ0b3gtdGJ0bi0tZGlzYWJsZWQiLHVzZU5hdGl2ZTohMX0pfSxxaD1mdW5jdGlvbih0LG4pe3ZhciBlPXQuZ2V0QXBpKG4pO3JldHVybiBmdW5jdGlvbih0KXt0KGUpfX0sS2g9ZnVuY3Rpb24oZSxvKXtyZXR1cm4gb3IoZnVuY3Rpb24odCl7cWgoZSx0KShmdW5jdGlvbih0KXt2YXIgbj1lLm9uU2V0dXAodCk7bnVsbCE9PW4mJm4hPT11bmRlZmluZWQmJm8uc2V0KG4pfSl9KX0sSmg9ZnVuY3Rpb24obixlKXtyZXR1cm4gcnIoZnVuY3Rpb24odCl7cmV0dXJuIHFoKG4sdCkoZS5nZXQoKSl9KX07KEFoPU1oPU1ofHx7fSlbQWguQ0xPU0VfT05fRVhFQ1VURT0wXT0iQ0xPU0VfT05fRVhFQ1VURSIsQWhbQWguQlVCQkxFX1RPX1NBTkRCT1g9MV09IkJVQkJMRV9UT19TQU5EQk9YIjt2YXIgJGg9TWgsUWg9eyJhbGxveS5leGVjdXRlIjpbImRpc2FibGluZyIsImFsbG95LmJhc2UuYmVoYXZpb3VyIiwidG9nZ2xpbmciLCJpdGVtLWV2ZW50cyJdfSxaaD1mdW5jdGlvbih0KXtyZXR1cm4gVSh0LGZ1bmN0aW9uKHQpe3JldHVybiB0LnRvQXJyYXkoKX0pfSx0dj1mdW5jdGlvbih0LG4sZSxvKXt2YXIgcixpLHU9Y2UoWik7cmV0dXJue3R5cGU6Iml0ZW0iLGRvbTpuLmRvbSxjb21wb25lbnRzOlpoKG4ub3B0Q29tcG9uZW50cyksZGF0YTp0LmRhdGEsZXZlbnRPcmRlcjpRaCxoYXNTdWJtZW51OnQudHJpZ2dlcnNTdWJtZW51LGl0ZW1CZWhhdmlvdXJzOnphKFtMbSgiaXRlbS1ldmVudHMiLFsocj10LGk9ZSx1cihmdW5jdGlvbih0LG4pe3FoKHIsdCkoci5vbkFjdGlvbiksci50cmlnZ2Vyc1N1Ym1lbnV8fGkhPT0kaC5DTE9TRV9PTl9FWEVDVVRFfHwoTG8odCxDbygpKSxuLnN0b3AoKSl9KSksS2godCx1KSxKaCh0LHUpXSksV2goZnVuY3Rpb24oKXtyZXR1cm4gdC5kaXNhYmxlZHx8by5pc1JlYWRPbmx5KCl9KSxVaCgpLE5tLmNvbmZpZyh7fSldLmNvbmNhdCh0Lml0ZW1CZWhhdmlvdXJzKSl9fSxudj1mdW5jdGlvbih0KXtyZXR1cm57dmFsdWU6dC52YWx1ZSxtZXRhOmV0KHt0ZXh0OnQudGV4dC5nZXRPcigiIil9LHQubWV0YSl9fSxldj1mdW5jdGlvbih0LG4pe3ZhciBlLG89VnAudHJhbnNsYXRlKHQpLHI9KGU9byxoaC5ET00uZW5jb2RlKGUpKTtpZigwPG4ubGVuZ3RoKXt2YXIgaT1uZXcgUmVnRXhwKG4ucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csIlxcJCYiKSwiZ2kiKTtyZXR1cm4gci5yZXBsYWNlKGksZnVuY3Rpb24odCl7cmV0dXJuJzxzcGFuIGNsYXNzPSJ0b3gtYXV0b2NvbXBsZXRlci1oaWdobGlnaHQiPicrdCsiPC9zcGFuPiJ9KX1yZXR1cm4gcn0sb3Y9YXQobmYocGcoKSxoZygpKSkscnY9TnIoImNlbGwtb3ZlciIpLGl2PU5yKCJjZWxsLWV4ZWN1dGUiKSx1dj1mdW5jdGlvbihuLGUsdCl7dmFyIG8scj1mdW5jdGlvbih0KXtyZXR1cm4gam8odCxpdix7cm93Om4sY29sOmV9KX0saT1mdW5jdGlvbih0LG4pe24uc3RvcCgpLHIodCl9O3JldHVybiBKaSh7ZG9tOnt0YWc6ImRpdiIsYXR0cmlidXRlczooKG89e3JvbGU6ImJ1dHRvbiJ9KVsiYXJpYS1sYWJlbGxlZGJ5Il09dCxvKX0sYmVoYXZpb3Vyczp6YShbTG0oImluc2VydC10YWJsZS1waWNrZXItY2VsbCIsW0pvKHJvKCksWG0uZm9jdXMpLEpvKHhvKCksciksSm8oZm8oKSxpKSxKbyhTbygpLGkpXSkscmcuY29uZmlnKHt0b2dnbGVDbGFzczoidG94LWluc2VydC10YWJsZS1waWNrZXJfX3NlbGVjdGVkIix0b2dnbGVPbkV4ZWN1dGU6ITF9KSxYbS5jb25maWcoe29uRm9jdXM6ZnVuY3Rpb24odCl7cmV0dXJuIGpvKHQscnYse3JvdzpuLGNvbDplfSl9fSldKX0pfSxhdj1mdW5jdGlvbih0KXtyZXR1cm57dmFsdWU6dH19LGN2PS9eIz8oW2EtZlxkXSkoW2EtZlxkXSkoW2EtZlxkXSkkL2ksc3Y9L14jPyhbYS1mXGRdezJ9KShbYS1mXGRdezJ9KShbYS1mXGRdezJ9KSQvaSxsdj1mdW5jdGlvbih0KXtyZXR1cm4gY3YudGVzdCh0KXx8c3YudGVzdCh0KX0sZnY9ZnVuY3Rpb24odCl7dmFyIG49e3ZhbHVlOnQudmFsdWUucmVwbGFjZShjdixmdW5jdGlvbih0LG4sZSxvKXtyZXR1cm4gbituK2UrZStvK299KX0sZT1zdi5leGVjKG4udmFsdWUpO3JldHVybiBudWxsPT09ZT9bIkZGRkZGRiIsIkZGIiwiRkYiLCJGRiJdOmV9LGR2PWZ1bmN0aW9uKHQpe3ZhciBuPXQudG9TdHJpbmcoMTYpO3JldHVybiAxPT09bi5sZW5ndGg/IjAiK246bn0sbXY9ZnVuY3Rpb24odCl7dmFyIG49ZHYodC5yZWQpK2R2KHQuZ3JlZW4pK2R2KHQuYmx1ZSk7cmV0dXJuIGF2KG4pfSxndj1NYXRoLm1pbixwdj1NYXRoLm1heCxodj1NYXRoLnJvdW5kLHZ2PS9ecmdiXCgoXGQrKSxccyooXGQrKSxccyooXGQrKVwpLyxidj0vXnJnYmFcKChcZCspLFxzKihcZCspLFxzKihcZCspLFxzKihcZD8oPzpcLlxkKyk/KVwpLyx5dj1mdW5jdGlvbih0LG4sZSxvKXtyZXR1cm57cmVkOnQsZ3JlZW46bixibHVlOmUsYWxwaGE6b319LHh2PWZ1bmN0aW9uKHQpe3ZhciBuPXBhcnNlSW50KHQsMTApO3JldHVybiBuLnRvU3RyaW5nKCk9PT10JiYwPD1uJiZuPD0yNTV9LHd2PWZ1bmN0aW9uKHQpe3ZhciBuLGUsbyxyPSh0Lmh1ZXx8MCklMzYwLGk9dC5zYXR1cmF0aW9uLzEwMCx1PXQudmFsdWUvMTAwO2lmKGk9cHYoMCxndihpLDEpKSx1PXB2KDAsZ3YodSwxKSksMD09PWkpcmV0dXJuIG49ZT1vPWh2KDI1NSp1KSx5dihuLGUsbywxKTt2YXIgYT1yLzYwLGM9dSppLHM9YyooMS1NYXRoLmFicyhhJTItMSkpLGw9dS1jO3N3aXRjaChNYXRoLmZsb29yKGEpKXtjYXNlIDA6bj1jLGU9cyxvPTA7YnJlYWs7Y2FzZSAxOm49cyxlPWMsbz0wO2JyZWFrO2Nhc2UgMjpuPTAsZT1jLG89czticmVhaztjYXNlIDM6bj0wLGU9cyxvPWM7YnJlYWs7Y2FzZSA0Om49cyxlPTAsbz1jO2JyZWFrO2Nhc2UgNTpuPWMsZT0wLG89czticmVhaztkZWZhdWx0Om49ZT1vPTB9cmV0dXJuIG49aHYoMjU1KihuK2wpKSxlPWh2KDI1NSooZStsKSksbz1odigyNTUqKG8rbCkpLHl2KG4sZSxvLDEpfSxTdj1mdW5jdGlvbih0KXt2YXIgbj1mdih0KSxlPXBhcnNlSW50KG5bMV0sMTYpLG89cGFyc2VJbnQoblsyXSwxNikscj1wYXJzZUludChuWzNdLDE2KTtyZXR1cm4geXYoZSxvLHIsMSl9LGt2PWZ1bmN0aW9uKHQsbixlLG8pe3ZhciByPXBhcnNlSW50KHQsMTApLGk9cGFyc2VJbnQobiwxMCksdT1wYXJzZUludChlLDEwKSxhPXBhcnNlRmxvYXQobyk7cmV0dXJuIHl2KHIsaSx1LGEpfSxDdj1mdW5jdGlvbih0KXtyZXR1cm4icmdiYSgiK3QucmVkKyIsIit0LmdyZWVuKyIsIit0LmJsdWUrIiwiK3QuYWxwaGErIikifSxPdj15digyNTUsMCwwLDEpLF92PXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLnV0aWwuTG9jYWxTdG9yYWdlIiksVHY9InRpbnltY2UtY3VzdG9tLWNvbG9ycyI7dmFyIEV2PSJjaG9pY2VpdGVtIixCdj1be3R5cGU6RXYsdGV4dDoiTGlnaHQgR3JlZW4iLHZhbHVlOiIjQkZFREQyIn0se3R5cGU6RXYsdGV4dDoiTGlnaHQgWWVsbG93Iix2YWx1ZToiI0ZCRUVCOCJ9LHt0eXBlOkV2LHRleHQ6IkxpZ2h0IFJlZCIsdmFsdWU6IiNGOENBQzYifSx7dHlwZTpFdix0ZXh0OiJMaWdodCBQdXJwbGUiLHZhbHVlOiIjRUNDQUZBIn0se3R5cGU6RXYsdGV4dDoiTGlnaHQgQmx1ZSIsdmFsdWU6IiNDMkUwRjQifSx7dHlwZTpFdix0ZXh0OiJHcmVlbiIsdmFsdWU6IiMyREMyNkIifSx7dHlwZTpFdix0ZXh0OiJZZWxsb3ciLHZhbHVlOiIjRjFDNDBGIn0se3R5cGU6RXYsdGV4dDoiUmVkIix2YWx1ZToiI0UwM0UyRCJ9LHt0eXBlOkV2LHRleHQ6IlB1cnBsZSIsdmFsdWU6IiNCOTZBRDkifSx7dHlwZTpFdix0ZXh0OiJCbHVlIix2YWx1ZToiIzM1OThEQiJ9LHt0eXBlOkV2LHRleHQ6IkRhcmsgVHVycXVvaXNlIix2YWx1ZToiIzE2OTE3OSJ9LHt0eXBlOkV2LHRleHQ6Ik9yYW5nZSIsdmFsdWU6IiNFNjdFMjMifSx7dHlwZTpFdix0ZXh0OiJEYXJrIFJlZCIsdmFsdWU6IiNCQTM3MkEifSx7dHlwZTpFdix0ZXh0OiJEYXJrIFB1cnBsZSIsdmFsdWU6IiM4NDNGQTEifSx7dHlwZTpFdix0ZXh0OiJEYXJrIEJsdWUiLHZhbHVlOiIjMjM2RkExIn0se3R5cGU6RXYsdGV4dDoiTGlnaHQgR3JheSIsdmFsdWU6IiNFQ0YwRjEifSx7dHlwZTpFdix0ZXh0OiJNZWRpdW0gR3JheSIsdmFsdWU6IiNDRUQ0RDkifSx7dHlwZTpFdix0ZXh0OiJHcmF5Iix2YWx1ZToiIzk1QTVBNiJ9LHt0eXBlOkV2LHRleHQ6IkRhcmsgR3JheSIsdmFsdWU6IiM3RThDOEQifSx7dHlwZTpFdix0ZXh0OiJOYXZ5IEJsdWUiLHZhbHVlOiIjMzQ0OTVFIn0se3R5cGU6RXYsdGV4dDoiQmxhY2siLHZhbHVlOiIjMDAwMDAwIn0se3R5cGU6RXYsdGV4dDoiV2hpdGUiLHZhbHVlOiIjZmZmZmZmIn1dLER2PWZ1bmN0aW9uIHpGKGUpe3ZvaWQgMD09PWUmJihlPTEwKTt2YXIgdCxuPV92LmdldEl0ZW0oVHYpLG89UyhuKT9KU09OLnBhcnNlKG4pOltdLHI9ZS0odD1vKS5sZW5ndGg8MD90LnNsaWNlKDAsZSk6dCxpPWZ1bmN0aW9uKHQpe3Iuc3BsaWNlKHQsMSl9O3JldHVybnthZGQ6ZnVuY3Rpb24odCl7dmFyIG47KC0xPT09KG49QShyLHQpKT9zdC5ub25lKCk6c3Quc29tZShuKSkuZWFjaChpKSxyLnVuc2hpZnQodCksci5sZW5ndGg+ZSYmci5wb3AoKSxfdi5zZXRJdGVtKFR2LEpTT04uc3RyaW5naWZ5KHIpKX0sc3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gci5zbGljZSgwKX19fSgxMCksTXY9ZnVuY3Rpb24odCl7cmV0dXJuITEhPT10LmdldFBhcmFtKCJjdXN0b21fY29sb3JzIil9LEF2PWZ1bmN0aW9uKHQpe3ZhciBuPXQuZ2V0UGFyYW0oImNvbG9yX21hcCIpO3JldHVybiBuIT09dW5kZWZpbmVkP2Z1bmN0aW9uKHQpe3ZhciBuPVtdLHU9bnQuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7dS5oZWlnaHQ9MSx1LndpZHRoPTE7Zm9yKHZhciBhPXUuZ2V0Q29udGV4dCgiMmQiKSxjPWZ1bmN0aW9uKHQsbil7dmFyIGU9bi8yNTU7cmV0dXJuKCIwIitNYXRoLnJvdW5kKHQqZSsyNTUqKDEtZSkpLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpLnRvVXBwZXJDYXNlKCl9LGU9ZnVuY3Rpb24odCl7aWYoL15bMC05QS1GYS1mXXs2fSQvLnRlc3QodCkpcmV0dXJuIiMiK3QudG9VcHBlckNhc2UoKTthLmNsZWFyUmVjdCgwLDAsdS53aWR0aCx1LmhlaWdodCksYS5maWxsU3R5bGU9IiNGRkZGRkYiLGEuZmlsbFN0eWxlPXQsYS5maWxsUmVjdCgwLDAsMSwxKTt2YXIgbj1hLmdldEltYWdlRGF0YSgwLDAsMSwxKS5kYXRhLGU9blswXSxvPW5bMV0scj1uWzJdLGk9blszXTtyZXR1cm4iIyIrYyhlLGkpK2MobyxpKStjKHIsaSl9LG89MDtvPHQubGVuZ3RoO28rPTIpbi5wdXNoKHt0ZXh0OnRbbysxXSx2YWx1ZTplKHRbb10pLHR5cGU6ImNob2ljZWl0ZW0ifSk7cmV0dXJuIG59KG4pOkJ2fSxGdj1mdW5jdGlvbih0KXtEdi5hZGQodCl9LEl2PWZ1bmN0aW9uKHQsbil7cmV0dXJuIHQuZmlyZSgiUmVzaXplQ29udGVudCIsbil9LFJ2PWZ1bmN0aW9uKGkpe2kuYWRkQ29tbWFuZCgibWNlQXBwbHlUZXh0Y29sb3IiLGZ1bmN0aW9uKHQsbil7dmFyIGUsbyxyO289dCxyPW4sKGU9aSkudW5kb01hbmFnZXIudHJhbnNhY3QoZnVuY3Rpb24oKXtlLmZvY3VzKCksZS5mb3JtYXR0ZXIuYXBwbHkobyx7dmFsdWU6cn0pLGUubm9kZUNoYW5nZWQoKX0pfSksaS5hZGRDb21tYW5kKCJtY2VSZW1vdmVUZXh0Y29sb3IiLGZ1bmN0aW9uKHQpe3ZhciBuLGU7ZT10LChuPWkpLnVuZG9NYW5hZ2VyLnRyYW5zYWN0KGZ1bmN0aW9uKCl7bi5mb2N1cygpLG4uZm9ybWF0dGVyLnJlbW92ZShlLHt2YWx1ZTpudWxsfSxudWxsLCEwKSxuLm5vZGVDaGFuZ2VkKCl9KX0pfSxWdj1mdW5jdGlvbih0KXt2YXIgbixlLG89QXYodCkscj0obj1vLmxlbmd0aCxNYXRoLm1heCg1LE1hdGguY2VpbChNYXRoLnNxcnQobikpKSk7cmV0dXJuIGU9cix0LmdldFBhcmFtKCJjb2xvcl9jb2xzIixlLCJudW1iZXIiKX0sSHY9ZnVuY3Rpb24obixlLHQsbyl7ImN1c3RvbSI9PT10P1V2KG4pKGZ1bmN0aW9uKHQpe3QuZWFjaChmdW5jdGlvbih0KXtGdih0KSxuLmV4ZWNDb21tYW5kKCJtY2VBcHBseVRleHRjb2xvciIsZSx0KSxvKHQpfSl9LCIjMDAwMDAwIik6InJlbW92ZSI9PT10PyhvKCIiKSxuLmV4ZWNDb21tYW5kKCJtY2VSZW1vdmVUZXh0Y29sb3IiLGUpKToobyh0KSxuLmV4ZWNDb21tYW5kKCJtY2VBcHBseVRleHRjb2xvciIsZSx0KSl9LFB2PWZ1bmN0aW9uKHQsbil7cmV0dXJuIHQuY29uY2F0KFYoRHYuc3RhdGUoKSxmdW5jdGlvbih0KXtyZXR1cm57dHlwZTpFdix0ZXh0OnQsdmFsdWU6dH19KS5jb25jYXQoKG89e3R5cGU6ZT0iY2hvaWNlaXRlbSIsdGV4dDoiUmVtb3ZlIGNvbG9yIixpY29uOiJjb2xvci1zd2F0Y2gtcmVtb3ZlLWNvbG9yIix2YWx1ZToicmVtb3ZlIn0sbj9bbyx7dHlwZTplLHRleHQ6IkN1c3RvbSBjb2xvciIsaWNvbjoiY29sb3ItcGlja2VyIix2YWx1ZToiY3VzdG9tIn1dOltvXSkpKTt2YXIgZSxvfSx6dj1mdW5jdGlvbihuLGUpe3JldHVybiBmdW5jdGlvbih0KXt0KFB2KG4sZSkpfX0sTnY9ZnVuY3Rpb24odCxuLGUpe3ZhciBvLHI7bz0iZm9yZWNvbG9yIj09PW4/InRveC1pY29uLXRleHQtY29sb3JfX2NvbG9yIjoidG94LWljb24taGlnaGxpZ2h0LWJnLWNvbG9yX19jb2xvciIscj1lLHQuc2V0SWNvbkZpbGwobyxyKSx0LnNldEljb25TdHJva2UobyxyKX0sTHY9ZnVuY3Rpb24oaSxlLHUsdCxvKXtpLnVpLnJlZ2lzdHJ5LmFkZFNwbGl0QnV0dG9uKGUse3Rvb2x0aXA6dCxwcmVzZXRzOiJjb2xvciIsaWNvbjoiZm9yZWNvbG9yIj09PWU/InRleHQtY29sb3IiOiJoaWdobGlnaHQtYmctY29sb3IiLHNlbGVjdDpmdW5jdGlvbihlKXt2YXIgdCxvLHI7cmV0dXJuIHN0LmZyb20oKG89dSwodD1pKS5kb20uZ2V0UGFyZW50cyh0LnNlbGVjdGlvbi5nZXRTdGFydCgpLGZ1bmN0aW9uKHQpe3ZhciBuOyhuPXQuc3R5bGVbImZvcmVjb2xvciI9PT1vPyJjb2xvciI6ImJhY2tncm91bmQtY29sb3IiXSkmJihyPXJ8fG4pfSkscikpLmJpbmQoZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKCJ0cmFuc3BhcmVudCI9PT10KXJldHVybiBzdC5zb21lKHl2KDAsMCwwLDApKTt2YXIgbj12di5leGVjKHQpO2lmKG51bGwhPT1uKXJldHVybiBzdC5zb21lKGt2KG5bMV0sblsyXSxuWzNdLCIxIikpO3ZhciBlPWJ2LmV4ZWModCk7cmV0dXJuIG51bGwhPT1lP3N0LnNvbWUoa3YoZVsxXSxlWzJdLGVbM10sZVs0XSkpOnN0Lm5vbmUoKX0odCkubWFwKGZ1bmN0aW9uKHQpe3ZhciBuPW12KHQpLnZhbHVlO3JldHVybiBFZShlLnRvTG93ZXJDYXNlKCksbil9KX0pLmdldE9yKCExKX0sY29sdW1uczpWdihpKSxmZXRjaDp6dihBdihpKSxNdihpKSksb25BY3Rpb246ZnVuY3Rpb24odCl7bnVsbCE9PW8uZ2V0KCkmJkh2KGksdSxvLmdldCgpLGZ1bmN0aW9uKCl7fSl9LG9uSXRlbUFjdGlvbjpmdW5jdGlvbih0LG4pe0h2KGksdSxuLGZ1bmN0aW9uKHQpe3ZhciBuO28uc2V0KHQpLG49e25hbWU6ZSxjb2xvcjp0fSxpLmZpcmUoIlRleHRDb2xvckNoYW5nZSIsbil9KX0sb25TZXR1cDpmdW5jdGlvbihuKXtudWxsIT09by5nZXQoKSYmTnYobixlLG8uZ2V0KCkpO3ZhciB0PWZ1bmN0aW9uKHQpe3QubmFtZT09PWUmJk52KG4sdC5uYW1lLHQuY29sb3IpfTtyZXR1cm4gaS5vbigiVGV4dENvbG9yQ2hhbmdlIix0KSxmdW5jdGlvbigpe2kub2ZmKCJUZXh0Q29sb3JDaGFuZ2UiLHQpfX19KX0sanY9ZnVuY3Rpb24obix0LGUsbyl7bi51aS5yZWdpc3RyeS5hZGROZXN0ZWRNZW51SXRlbSh0LHt0ZXh0Om8saWNvbjoiZm9yZWNvbG9yIj09PXQ/InRleHQtY29sb3IiOiJoaWdobGlnaHQtYmctY29sb3IiLGdldFN1Ym1lbnVJdGVtczpmdW5jdGlvbigpe3JldHVyblt7dHlwZToiZmFuY3ltZW51aXRlbSIsZmFuY3l0eXBlOiJjb2xvcnN3YXRjaCIsb25BY3Rpb246ZnVuY3Rpb24odCl7SHYobixlLHQudmFsdWUsWil9fV19fSl9LFV2PWZ1bmN0aW9uKGkpe3JldHVybiBmdW5jdGlvbih0LG4pe3ZhciBlLG89e2NvbG9ycGlja2VyOm59LHI9KGU9dCxmdW5jdGlvbih0KXt2YXIgbj10LmdldERhdGEoKTtlKHN0LmZyb20obi5jb2xvcnBpY2tlcikpLHQuY2xvc2UoKX0pO2kud2luZG93TWFuYWdlci5vcGVuKHt0aXRsZToiQ29sb3IgUGlja2VyIixzaXplOiJub3JtYWwiLGJvZHk6e3R5cGU6InBhbmVsIixpdGVtczpbe3R5cGU6ImNvbG9ycGlja2VyIixuYW1lOiJjb2xvcnBpY2tlciIsbGFiZWw6IkNvbG9yIn1dfSxidXR0b25zOlt7dHlwZToiY2FuY2VsIixuYW1lOiJjYW5jZWwiLHRleHQ6IkNhbmNlbCJ9LHt0eXBlOiJzdWJtaXQiLG5hbWU6InNhdmUiLHRleHQ6IlNhdmUiLHByaW1hcnk6ITB9XSxpbml0aWFsRGF0YTpvLG9uQWN0aW9uOmZ1bmN0aW9uKHQsbil7ImhleC12YWxpZCI9PT1uLm5hbWUmJihuLnZhbHVlP3QuZW5hYmxlKCJvayIpOnQuZGlzYWJsZSgib2siKSl9LG9uU3VibWl0OnIsb25DbG9zZTpmdW5jdGlvbigpe30sb25DYW5jZWw6ZnVuY3Rpb24oKXt0KHN0Lm5vbmUoKSl9fSl9fSxXdj1mdW5jdGlvbih0KXtyZXR1cm57YmFja2dyb3VuZE1lbnU6InRveC1iYWNrZ3JvdW5kLW1lbnUiLHNlbGVjdGVkTWVudToidG94LXNlbGVjdGVkLW1lbnUiLHNlbGVjdGVkSXRlbToidG94LWNvbGxlY3Rpb25fX2l0ZW0tLWFjdGl2ZSIsaGFzSWNvbnM6InRveC1tZW51LS1oYXMtaWNvbnMiLG1lbnU6ImNvbG9yIj09PXQ/InRveC1zd2F0Y2hlcyI6InRveC1tZW51Iix0aWVyZWRNZW51OiJ0b3gtdGllcmVkLW1lbnUifX0sR3Y9ZnVuY3Rpb24odCl7dmFyIG49V3YodCk7cmV0dXJue2JhY2tncm91bmRNZW51Om4uYmFja2dyb3VuZE1lbnUsc2VsZWN0ZWRNZW51Om4uc2VsZWN0ZWRNZW51LG1lbnU6bi5tZW51LHNlbGVjdGVkSXRlbTpuLnNlbGVjdGVkSXRlbSxpdGVtOkdwKHQpfX0sWHY9W1NnLnBhcnRzKCkuaXRlbXMoe30pXSxZdj1mdW5jdGlvbih0LG4sZSl7dmFyIG89V3YoZSk7cmV0dXJue2RvbTp7dGFnOiJkaXYiLGNsYXNzZXM6dXQoW1tvLnRpZXJlZE1lbnVdXSl9LG1hcmtlcnM6R3YoZSl9fSxxdj1mdW5jdGlvbihlLG8pe3JldHVybiBmdW5jdGlvbih0KXt2YXIgbj1SKHQsbyk7cmV0dXJuIFYobixmdW5jdGlvbih0KXtyZXR1cm57ZG9tOmUsY29tcG9uZW50czp0fX0pfX0sS3Y9ZnVuY3Rpb24odCxlKXt2YXIgbz1bXSxyPVtdO3JldHVybiBpdCh0LGZ1bmN0aW9uKHQsbil7ZSh0LG4pPygwPHIubGVuZ3RoJiZvLnB1c2gocikscj1bXSx5dCh0LmRvbSwiaW5uZXJIdG1sIikmJnIucHVzaCh0KSk6ci5wdXNoKHQpfSksMDxyLmxlbmd0aCYmby5wdXNoKHIpLFYobyxmdW5jdGlvbih0KXtyZXR1cm57ZG9tOnt0YWc6ImRpdiIsY2xhc3NlczpbInRveC1jb2xsZWN0aW9uX19ncm91cCJdfSxjb21wb25lbnRzOnR9fSl9LEp2PWZ1bmN0aW9uKG4sZSx0KXtyZXR1cm57ZG9tOnt0YWc6ImRpdiIsY2xhc3NlczpbInRveC1tZW51IiwidG94LWNvbGxlY3Rpb24iXS5jb25jYXQoMT09PW4/WyJ0b3gtY29sbGVjdGlvbi0tbGlzdCJdOlsidG94LWNvbGxlY3Rpb24tLWdyaWQiXSl9LGNvbXBvbmVudHM6W1NnLnBhcnRzKCkuaXRlbXMoe3ByZXByb2Nlc3M6ZnVuY3Rpb24odCl7cmV0dXJuImF1dG8iIT09biYmMTxuP3F2KHt0YWc6ImRpdiIsY2xhc3NlczpbInRveC1jb2xsZWN0aW9uX19ncm91cCJdfSxuKSh0KTpLdih0LGZ1bmN0aW9uKHQsbil7cmV0dXJuInNlcGFyYXRvciI9PT1lW25dLnR5cGV9KX19KV19fSwkdj1mdW5jdGlvbih0KXtyZXR1cm4gSSh0LGZ1bmN0aW9uKHQpe3JldHVybiJpY29uImluIHQmJnQuaWNvbiE9PXVuZGVmaW5lZH0pfSxRdj1mdW5jdGlvbih0KXtyZXR1cm4gbnQuY29uc29sZS5lcnJvcihUbih0KSksbnQuY29uc29sZS5sb2codCksc3Qubm9uZSgpfSxadj1mdW5jdGlvbih0LG4sZSxvLHIpe3ZhciBpLHU9KGk9ZSx7ZG9tOnt0YWc6ImRpdiIsY2xhc3NlczpbInRveC1jb2xsZWN0aW9uIiwidG94LWNvbGxlY3Rpb24tLWhvcml6b250YWwiXX0sY29tcG9uZW50czpbU2cucGFydHMoKS5pdGVtcyh7cHJlcHJvY2VzczpmdW5jdGlvbih0KXtyZXR1cm4gS3YodCxmdW5jdGlvbih0LG4pe3JldHVybiJzZXBhcmF0b3IiPT09aVtuXS50eXBlfSl9fSldfSk7cmV0dXJue3ZhbHVlOnQsZG9tOnUuZG9tLGNvbXBvbmVudHM6dS5jb21wb25lbnRzLGl0ZW1zOmV9fSx0Yj1mdW5jdGlvbih0LG4sZSxvLHIpe3ZhciBpLHUsYSxjLHMsbDtyZXR1cm4iY29sb3IiPT09cj97dmFsdWU6dCxkb206KGw9KGk9byx7ZG9tOnt0YWc6ImRpdiIsY2xhc3NlczpbInRveC1tZW51IiwidG94LXN3YXRjaGVzLW1lbnUiXX0sY29tcG9uZW50czpbe2RvbTp7dGFnOiJkaXYiLGNsYXNzZXM6WyJ0b3gtc3dhdGNoZXMiXX0sY29tcG9uZW50czpbU2cucGFydHMoKS5pdGVtcyh7cHJlcHJvY2VzczoiYXV0byIhPT1pP3F2KHt0YWc6ImRpdiIsY2xhc3NlczpbInRveC1zd2F0Y2hlc19fcm93Il19LGkpOmN0fSldfV19KSkuZG9tLGNvbXBvbmVudHM6bC5jb21wb25lbnRzLGl0ZW1zOmV9OiJub3JtYWwiPT09ciYmImF1dG8iPT09bz97dmFsdWU6dCxkb206KGw9SnYobyxlKSkuZG9tLGNvbXBvbmVudHM6bC5jb21wb25lbnRzLGl0ZW1zOmV9OiJub3JtYWwiPT09ciYmMT09PW8/e3ZhbHVlOnQsZG9tOihsPUp2KDEsZSkpLmRvbSxjb21wb25lbnRzOmwuY29tcG9uZW50cyxpdGVtczplfToibm9ybWFsIj09PXI/e3ZhbHVlOnQsZG9tOihsPUp2KG8sZSkpLmRvbSxjb21wb25lbnRzOmwuY29tcG9uZW50cyxpdGVtczplfToibGlzdHByZXZpZXciIT09cnx8ImF1dG8iPT09bz97dmFsdWU6dCxkb206KGE9bixjPW8scz1XdihyKSx7dGFnOiJkaXYiLGNsYXNzZXM6dXQoW1tzLm1lbnUsInRveC1tZW51LSIrYysiLWNvbHVtbiJdLGE/W3MuaGFzSWNvbnNdOltdXSl9KSxjb21wb25lbnRzOlh2LGl0ZW1zOmV9Ont2YWx1ZTp0LGRvbToobD0odT1vLHtkb206e3RhZzoiZGl2IixjbGFzc2VzOlsidG94LW1lbnUiLCJ0b3gtY29sbGVjdGlvbiIsInRveC1jb2xsZWN0aW9uLS10b29sYmFyIiwidG94LWNvbGxlY3Rpb24tLXRvb2xiYXItbGciXX0sY29tcG9uZW50czpbU2cucGFydHMoKS5pdGVtcyh7cHJlcHJvY2Vzczpxdih7dGFnOiJkaXYiLGNsYXNzZXM6WyJ0b3gtY29sbGVjdGlvbl9fZ3JvdXAiXX0sdSl9KV19KSkuZG9tLGNvbXBvbmVudHM6bC5jb21wb25lbnRzLGl0ZW1zOmV9fSxuYj1mdW5jdGlvbih0LG4sZSxvLHIsaSx1LGEpe3ZhciBjPSR2KG4pLHM9ZWIobixlLG8sImNvbG9yIiE9PXI/Im5vcm1hbCI6ImNvbG9yIixpLHUsYSk7cmV0dXJuIHRiKHQsYyxzLG8scil9LGViPWZ1bmN0aW9uKGUsbyxyLGksdSxhLGMpe3JldHVybiBUZihWKGUsZnVuY3Rpb24obil7cmV0dXJuImNob2ljZWl0ZW0iPT09bi50eXBlP0NuKCJjaG9pY2VtZW51aXRlbSIsa3AsbikuZm9sZChRdixmdW5jdGlvbih0KXtyZXR1cm4gc3Quc29tZShmdW5jdGlvbihuLHQsZSxvLHIsaSx1LGEpe3ZvaWQgMD09PWEmJihhPSEwKTt2YXIgYz1uaCh7cHJlc2V0czplLHRleHRDb250ZW50OnQ/bi50ZXh0OnN0Lm5vbmUoKSxodG1sQ29udGVudDpzdC5ub25lKCksYXJpYUxhYmVsOm4udGV4dCxpY29uQ29udGVudDpuLmljb24sc2hvcnRjdXRDb250ZW50OnQ/bi5zaG9ydGN1dDpzdC5ub25lKCksY2hlY2tNYXJrOnQ/c3Quc29tZSgkcCh1Lmljb25zKSk6c3Qubm9uZSgpLGNhcmV0OnN0Lm5vbmUoKSx2YWx1ZTpuLnZhbHVlfSx1LGEpO3JldHVybiBDdCh0dih7ZGF0YTpudihuKSxkaXNhYmxlZDpuLmRpc2FibGVkLGdldEFwaTpmdW5jdGlvbihuKXtyZXR1cm57c2V0QWN0aXZlOmZ1bmN0aW9uKHQpe3JnLnNldChuLHQpfSxpc0FjdGl2ZTpmdW5jdGlvbigpe3JldHVybiByZy5pc09uKG4pfSxpc0Rpc2FibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIHBoLmlzRGlzYWJsZWQobil9LHNldERpc2FibGVkOmZ1bmN0aW9uKHQpe3JldHVybiBwaC5zZXQobix0KX19fSxvbkFjdGlvbjpmdW5jdGlvbih0KXtyZXR1cm4gbyhuLnZhbHVlKX0sb25TZXR1cDpmdW5jdGlvbih0KXtyZXR1cm4gdC5zZXRBY3RpdmUociksZnVuY3Rpb24oKXt9fSx0cmlnZ2Vyc1N1Ym1lbnU6ITEsaXRlbUJlaGF2aW91cnM6W119LGMsaSx1KSx7dG9nZ2xpbmc6e3RvZ2dsZUNsYXNzOkxwLHRvZ2dsZU9uRXhlY3V0ZTohMSxzZWxlY3RlZDpuLmFjdGl2ZX19KX0odCwxPT09cixpLG8sYShuLnZhbHVlKSx1LGMsJHYoZSkpKX0pOnN0Lm5vbmUoKX0pKX0sb2I9ZnVuY3Rpb24odCxuKXt2YXIgZT1HdihuKTtyZXR1cm4gMT09PXQ/e21vZGU6Im1lbnUiLG1vdmVPblRhYjohMH06ImF1dG8iPT09dD97bW9kZToiZ3JpZCIsc2VsZWN0b3I6Ii4iK2UuaXRlbSxpbml0U2l6ZTp7bnVtQ29sdW1uczoxLG51bVJvd3M6MX19Onttb2RlOiJtYXRyaXgiLHJvd1NlbGVjdG9yOiIuIisoImNvbG9yIj09PW4/InRveC1zd2F0Y2hlc19fcm93IjoidG94LWNvbGxlY3Rpb25fX2dyb3VwIil9fTt2YXIgcmIsaWIsdWI9e2luc2VydHRhYmxlOmZ1bmN0aW9uKG8pe3ZhciB0PU5yKCJzaXplLWxhYmVsIiksaT1mdW5jdGlvbih0LG4sZSl7Zm9yKHZhciBvPVtdLHI9MDtyPG47cisrKXtmb3IodmFyIGk9W10sdT0wO3U8ZTt1KyspaS5wdXNoKHV2KHIsdSx0KSk7by5wdXNoKGkpfXJldHVybiBvfSh0LDEwLDEwKSx1PVVnKHtkb206e3RhZzoic3BhbiIsY2xhc3NlczpbInRveC1pbnNlcnQtdGFibGUtcGlja2VyX19sYWJlbCJdLGF0dHJpYnV0ZXM6e2lkOnR9fSxjb21wb25lbnRzOltZaSgiMHgwIildLGJlaGF2aW91cnM6emEoW05tLmNvbmZpZyh7fSldKX0pO3JldHVybnt0eXBlOiJ3aWRnZXQiLGRhdGE6e3ZhbHVlOk5yKCJ3aWRnZXQtaWQiKX0sZG9tOnt0YWc6ImRpdiIsY2xhc3NlczpbInRveC1mYW5jeW1lbnVpdGVtIl19LGF1dG9mb2N1czohMCxjb21wb25lbnRzOltvdigpLndpZGdldCh7ZG9tOnt0YWc6ImRpdiIsY2xhc3NlczpbInRveC1pbnNlcnQtdGFibGUtcGlja2VyIl19LGNvbXBvbmVudHM6VShpLGZ1bmN0aW9uKHQpe3JldHVybiBWKHQsJGkpfSkuY29uY2F0KHUuYXNTcGVjKCkpLGJlaGF2aW91cnM6emEoW0xtKCJpbnNlcnQtdGFibGUtcGlja2VyIixbdHIocnYsZnVuY3Rpb24odCxuLGUpe3ZhciBvPWUuZXZlbnQoKS5yb3coKSxyPWUuZXZlbnQoKS5jb2woKTshZnVuY3Rpb24odCxuLGUsbyxyKXtmb3IodmFyIGk9MDtpPG87aSsrKWZvcih2YXIgdT0wO3U8cjt1Kyspcmcuc2V0KHRbaV1bdV0saTw9biYmdTw9ZSl9KGksbyxyLDEwLDEwKSxObS5zZXQodS5nZXQodCksW1lpKHIrMSsieCIrKG8rMSkpXSl9KSx0cihpdixmdW5jdGlvbih0LG4sZSl7by5vbkFjdGlvbih7bnVtUm93czplLmV2ZW50KCkucm93KCkrMSxudW1Db2x1bW5zOmUuZXZlbnQoKS5jb2woKSsxfSksTG8odCxDbygpKX0pXSksUm0uY29uZmlnKHtpbml0U2l6ZTp7bnVtUm93czoxMCxudW1Db2x1bW5zOjEwfSxtb2RlOiJmbGF0Z3JpZCIsc2VsZWN0b3I6J1tyb2xlPSJidXR0b24iXSd9KV0pfSldfX0sY29sb3Jzd2F0Y2g6ZnVuY3Rpb24gTkYobix0KXt2YXIgZT1Qdih0LmNvbG9yaW5wdXQuZ2V0Q29sb3JzKCksdC5jb2xvcmlucHV0Lmhhc0N1c3RvbUNvbG9ycygpKSxvPXQuY29sb3JpbnB1dC5nZXRDb2xvckNvbHMoKSxyPW5iKE5yKCJtZW51LXZhbHVlIiksZSxmdW5jdGlvbih0KXtuLm9uQWN0aW9uKHt2YWx1ZTp0fSl9LG8sImNvbG9yIiwkaC5DTE9TRV9PTl9FWEVDVVRFLGZ1bmN0aW9uKCl7cmV0dXJuITF9LHQuc2hhcmVkLnByb3ZpZGVycyksaT1ldChldCh7fSxyKSx7bWFya2VyczpHdigiY29sb3IiKSxtb3ZlbWVudDpvYihvLCJjb2xvciIpfSk7cmV0dXJue3R5cGU6IndpZGdldCIsZGF0YTp7dmFsdWU6TnIoIndpZGdldC1pZCIpfSxkb206e3RhZzoiZGl2IixjbGFzc2VzOlsidG94LWZhbmN5bWVudWl0ZW0iXX0sYXV0b2ZvY3VzOiEwLGNvbXBvbmVudHM6W292KCkud2lkZ2V0KFNnLnNrZXRjaChpKSldfX19LGFiPWZ1bmN0aW9uKG4sZSx0LG8scixpLHUsYSl7dm9pZCAwPT09YSYmKGE9ITApO3ZhciBjLHMsbD1uaCh7cHJlc2V0czpvLHRleHRDb250ZW50OnN0Lm5vbmUoKSxodG1sQ29udGVudDp0P24udGV4dC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIGV2KHQsZSl9KTpzdC5ub25lKCksYXJpYUxhYmVsOm4udGV4dCxpY29uQ29udGVudDpuLmljb24sc2hvcnRjdXRDb250ZW50OnN0Lm5vbmUoKSxjaGVja01hcms6c3Qubm9uZSgpLGNhcmV0OnN0Lm5vbmUoKSx2YWx1ZTpuLnZhbHVlfSx1LnByb3ZpZGVycyxhLG4uaWNvbik7cmV0dXJuIHR2KHtkYXRhOm52KG4pLGRpc2FibGVkOm4uZGlzYWJsZWQsZ2V0QXBpOmZ1bmN0aW9uKCl7cmV0dXJue319LG9uQWN0aW9uOmZ1bmN0aW9uKHQpe3JldHVybiByKG4udmFsdWUsbi5tZXRhKX0sb25TZXR1cDpmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe319LHRyaWdnZXJzU3VibWVudTohMSxpdGVtQmVoYXZpb3VyczooYz1uLm1ldGEscz11LGJ0KGMsInRvb2x0aXBXb3JrZXIiKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuW1JwLmNvbmZpZyh7bGF6eVNpbms6cy5nZXRTaW5rLHRvb2x0aXBEb206e3RhZzoiZGl2IixjbGFzc2VzOlsidG94LXRvb2x0aXAtd29ya2VyLWNvbnRhaW5lciJdfSx0b29sdGlwQ29tcG9uZW50czpbXSxhbmNob3I6ZnVuY3Rpb24odCl7cmV0dXJue2FuY2hvcjoic3VibWVudSIsaXRlbTp0LG92ZXJyaWRlczp7bWF4SGVpZ2h0RnVuY3Rpb246aGN9fX0sbW9kZToiZm9sbG93LWhpZ2hsaWdodCIsb25TaG93OmZ1bmN0aW9uKG4sdCl7ZShmdW5jdGlvbih0KXtScC5zZXRDb21wb25lbnRzKG4sW3FpKHtlbGVtZW50OmxlLmZyb21Eb20odCl9KV0pfSl9fSldfSkuZ2V0T3IoW10pKX0sbCxpLHUucHJvdmlkZXJzKX0sY2I9ZnVuY3Rpb24odCl7dmFyIG49dC50ZXh0LmZvbGQoZnVuY3Rpb24oKXtyZXR1cm57fX0sZnVuY3Rpb24odCl7cmV0dXJue2lubmVySHRtbDp0fX0pO3JldHVybnt0eXBlOiJzZXBhcmF0b3IiLGRvbTpldCh7dGFnOiJkaXYiLGNsYXNzZXM6W1BwLCJ0b3gtY29sbGVjdGlvbl9fZ3JvdXAtaGVhZGluZyJdfSxuKSxjb21wb25lbnRzOltdfX0sc2I9ZnVuY3Rpb24odCxuLGUsbyl7dm9pZCAwPT09byYmKG89ITApO3ZhciByPW5oKHtwcmVzZXRzOiJub3JtYWwiLGljb25Db250ZW50OnQuaWNvbix0ZXh0Q29udGVudDp0LnRleHQsaHRtbENvbnRlbnQ6c3Qubm9uZSgpLGFyaWFMYWJlbDp0LnRleHQsY2FyZXQ6c3Qubm9uZSgpLGNoZWNrTWFyazpzdC5ub25lKCksc2hvcnRjdXRDb250ZW50OnQuc2hvcnRjdXR9LGUsbyk7cmV0dXJuIHR2KHtkYXRhOm52KHQpLGdldEFwaTpmdW5jdGlvbihuKXtyZXR1cm57aXNEaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiBwaC5pc0Rpc2FibGVkKG4pfSxzZXREaXNhYmxlZDpmdW5jdGlvbih0KXtyZXR1cm4gcGguc2V0KG4sdCl9fX0sZGlzYWJsZWQ6dC5kaXNhYmxlZCxvbkFjdGlvbjp0Lm9uQWN0aW9uLG9uU2V0dXA6dC5vblNldHVwLHRyaWdnZXJzU3VibWVudTohMSxpdGVtQmVoYXZpb3VyczpbXX0scixuLGUpfSxsYj1mdW5jdGlvbih0LG4sZSxvLHIpe3ZvaWQgMD09PW8mJihvPSEwKSx2b2lkIDA9PT1yJiYocj0hMSk7dmFyIGksdSxhPXI/KHU9ZS5pY29ucyx7ZG9tOnt0YWc6ImRpdiIsY2xhc3NlczpbVXBdLGlubmVySHRtbDpHZygiY2hldnJvbi1kb3duIix1KX19KTooaT1lLmljb25zLHtkb206e3RhZzoiZGl2IixjbGFzc2VzOltVcF0saW5uZXJIdG1sOkdnKCJjaGV2cm9uLXJpZ2h0IixpKX19KSxjPW5oKHtwcmVzZXRzOiJub3JtYWwiLGljb25Db250ZW50OnQuaWNvbix0ZXh0Q29udGVudDp0LnRleHQsaHRtbENvbnRlbnQ6c3Qubm9uZSgpLGFyaWFMYWJlbDp0LnRleHQsY2FyZXQ6c3Quc29tZShhKSxjaGVja01hcms6c3Qubm9uZSgpLHNob3J0Y3V0Q29udGVudDp0LnNob3J0Y3V0fSxlLG8pO3JldHVybiB0dih7ZGF0YTpudih0KSxnZXRBcGk6ZnVuY3Rpb24obil7cmV0dXJue2lzRGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gcGguaXNEaXNhYmxlZChuKX0sc2V0RGlzYWJsZWQ6ZnVuY3Rpb24odCl7cmV0dXJuIHBoLnNldChuLHQpfX19LGRpc2FibGVkOnQuZGlzYWJsZWQsb25BY3Rpb246WixvblNldHVwOnQub25TZXR1cCx0cmlnZ2Vyc1N1Ym1lbnU6ITAsaXRlbUJlaGF2aW91cnM6W119LGMsbixlKX0sZmI9ZnVuY3Rpb24odCxuLGUsbyl7dm9pZCAwPT09byYmKG89ITApO3ZhciByPW5oKHtpY29uQ29udGVudDp0Lmljb24sdGV4dENvbnRlbnQ6dC50ZXh0LGh0bWxDb250ZW50OnN0Lm5vbmUoKSxhcmlhTGFiZWw6dC50ZXh0LGNoZWNrTWFyazpzdC5zb21lKCRwKGUuaWNvbnMpKSxjYXJldDpzdC5ub25lKCksc2hvcnRjdXRDb250ZW50OnQuc2hvcnRjdXQscHJlc2V0czoibm9ybWFsIixtZXRhOnQubWV0YX0sZSxvKTtyZXR1cm4gQ3QodHYoe2RhdGE6bnYodCksZGlzYWJsZWQ6dC5kaXNhYmxlZCxnZXRBcGk6ZnVuY3Rpb24obil7cmV0dXJue3NldEFjdGl2ZTpmdW5jdGlvbih0KXtyZy5zZXQobix0KX0saXNBY3RpdmU6ZnVuY3Rpb24oKXtyZXR1cm4gcmcuaXNPbihuKX0saXNEaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiBwaC5pc0Rpc2FibGVkKG4pfSxzZXREaXNhYmxlZDpmdW5jdGlvbih0KXtyZXR1cm4gcGguc2V0KG4sdCl9fX0sb25BY3Rpb246dC5vbkFjdGlvbixvblNldHVwOnQub25TZXR1cCx0cmlnZ2Vyc1N1Ym1lbnU6ITEsaXRlbUJlaGF2aW91cnM6W119LHIsbixlKSx7dG9nZ2xpbmc6e3RvZ2dsZUNsYXNzOkxwLHRvZ2dsZU9uRXhlY3V0ZTohMSxzZWxlY3RlZDp0LmFjdGl2ZX19KX0sZGI9ZnVuY3Rpb24obixlKXtyZXR1cm4gdD11YixvPW4uZmFuY3l0eXBlLChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxvKT9zdC5zb21lKHRbb10pOnN0Lm5vbmUoKSkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0KG4sZSl9KTt2YXIgdCxvfTsoaWI9cmI9cmJ8fHt9KVtpYi5Db250ZW50Rm9jdXM9MF09IkNvbnRlbnRGb2N1cyIsaWJbaWIuVWlGb2N1cz0xXT0iVWlGb2N1cyI7dmFyIG1iPWZ1bmN0aW9uKHQsbixlLG8scil7dmFyIGk9ZS5zaGFyZWQucHJvdmlkZXJzLHU9ZnVuY3Rpb24odCl7cmV0dXJuIHI/ZXQoZXQoe30sdCkse3Nob3J0Y3V0OnN0Lm5vbmUoKSxpY29uOnQudGV4dC5pc1NvbWUoKT9zdC5ub25lKCk6dC5pY29ufSk6dH07c3dpdGNoKHQudHlwZSl7Y2FzZSJtZW51aXRlbSI6cmV0dXJuIENuKCJtZW51aXRlbSIseHAsdCkuZm9sZChRdixmdW5jdGlvbih0KXtyZXR1cm4gc3Quc29tZShzYih1KHQpLG4saSxvKSl9KTtjYXNlIm5lc3RlZG1lbnVpdGVtIjpyZXR1cm4gQ24oIm5lc3RlZG1lbnVpdGVtIix3cCx0KS5mb2xkKFF2LGZ1bmN0aW9uKHQpe3JldHVybiBzdC5zb21lKGxiKHUodCksbixpLG8scikpfSk7Y2FzZSJ0b2dnbGVtZW51aXRlbSI6cmV0dXJuIENuKCJ0b2dnbGVtZW51aXRlbSIsU3AsdCkuZm9sZChRdixmdW5jdGlvbih0KXtyZXR1cm4gc3Quc29tZShmYih1KHQpLG4saSxvKSl9KTtjYXNlInNlcGFyYXRvciI6cmV0dXJuIENuKCJzZXBhcmF0b3JtZW51aXRlbSIscHAsdCkuZm9sZChRdixmdW5jdGlvbih0KXtyZXR1cm4gc3Quc29tZShjYih0KSl9KTtjYXNlImZhbmN5bWVudWl0ZW0iOnJldHVybiBDbigiZmFuY3ltZW51aXRlbSIsQ3AsdCkuZm9sZChRdixmdW5jdGlvbih0KXtyZXR1cm4gZGIodSh0KSxlKX0pO2RlZmF1bHQ6cmV0dXJuIG50LmNvbnNvbGUuZXJyb3IoIlVua25vd24gaXRlbSBpbiBnZW5lcmFsIG1lbnUiLHQpLHN0Lm5vbmUoKX19LGdiPWZ1bmN0aW9uKHQsbixlLG8scixpKXt2YXIgdT0xPT09byxhPSF1fHwkdih0KTtyZXR1cm4gVGYoVih0LGZ1bmN0aW9uKHQpe3JldHVybiJzZXBhcmF0b3IiPT09dC50eXBlP0NuKCJBdXRvY29tcGxldGVyLlNlcGFyYXRvciIscHAsdCkuZm9sZChRdixmdW5jdGlvbih0KXtyZXR1cm4gc3Quc29tZShjYih0KSl9KTpDbigiQXV0b2NvbXBsZXRlci5JdGVtIixocCx0KS5mb2xkKFF2LGZ1bmN0aW9uKHQpe3JldHVybiBzdC5zb21lKGFiKHQsbix1LCJub3JtYWwiLGUscixpLGEpKX0pfSkpfSxwYj1mdW5jdGlvbih0LG4sZSxvLHIpe3ZhciBpPSR2KG4pLHU9VGYoVihuLGZ1bmN0aW9uKHQpe3ZhciBuPWZ1bmN0aW9uKHQpe3JldHVybiBtYih0LGUsbywobj10LHI/IW4uaGFzT3duUHJvcGVydHkoInRleHQiKTppKSxyKTt2YXIgbn07cmV0dXJuIm5lc3RlZG1lbnVpdGVtIj09PXQudHlwZSYmdC5nZXRTdWJtZW51SXRlbXMoKS5sZW5ndGg8PTA/bihldChldCh7fSx0KSx7ZGlzYWJsZWQ6ITB9KSk6bih0KX0pKTtyZXR1cm4ocj9adjp0YikodCxpLHUsMSwibm9ybWFsIil9LGhiPWZ1bmN0aW9uKHQpe3JldHVybiBFZy5zaW5nbGVEYXRhKHQudmFsdWUsdCl9LHZiPWZ1bmN0aW9uKGQsYyl7dmFyIGU9Y2Uoc3Qubm9uZSgpKSxzPWNlKCExKSxtPUppKEJnLnNrZXRjaCh7ZG9tOnt0YWc6ImRpdiIsY2xhc3NlczpbInRveC1hdXRvY29tcGxldGVyIl19LGNvbXBvbmVudHM6W10sZmlyZURpc21pc3NhbEV2ZW50SW5zdGVhZDp7fSxpbmxpbmVCZWhhdmlvdXJzOnphKFtMbSgiZGlzbWlzc0F1dG9jb21wbGV0ZXIiLFtKbyhGbygpLGZ1bmN0aW9uKCl7cmV0dXJuIGYoKX0pXSldKSxsYXp5U2luazpjLmdldFNpbmt9KSksbz1mdW5jdGlvbigpe3JldHVybiBlLmdldCgpLmlzU29tZSgpfSxsPWZ1bmN0aW9uKCl7bygpJiZCZy5oaWRlKG0pfSxmPWZ1bmN0aW9uKCl7aWYobygpKXt2YXIgdD1lLmdldCgpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5lbGVtZW50fSk7bnAodC5nZXRPcihsZS5mcm9tRG9tKGQuc2VsZWN0aW9uLmdldE5vZGUoKSkpKS5lYWNoKHdyKSxsKCksZS5zZXQoc3Qubm9uZSgpKSxzLnNldCghMSl9fSxyPV90KGZ1bmN0aW9uKCl7cmV0dXJuIGJwKGQpfSksZz1mdW5jdGlvbih0LG4sZSxvKXt0Lm1hdGNoTGVuZ3RoPW4udGV4dC5sZW5ndGg7dmFyIHIsaSx1LGEsYyxzLGwsZj1RKGUsZnVuY3Rpb24odCl7cmV0dXJuIHN0LmZyb20odC5jb2x1bW5zKX0pLmdldE9yKDEpO0JnLnNob3dBdChtLHthbmNob3I6Im5vZGUiLHJvb3Q6bGUuZnJvbURvbShkLmdldEJvZHkoKSksbm9kZTpzdC5mcm9tKHQuZWxlbWVudCl9LFNnLnNrZXRjaCgocj10YigiYXV0b2NvbXBsZXRlci12YWx1ZSIsITAsbyxmLCJub3JtYWwiKSxpPWYsdT1yYi5Db250ZW50Rm9jdXMsYT0ibm9ybWFsIixjPSh1PT09cmIuQ29udGVudEZvY3VzP2NkOmFkKSgpLHM9b2IoaSxhKSxsPUd2KGEpLHtkb206ci5kb20sY29tcG9uZW50czpyLmNvbXBvbmVudHMsaXRlbXM6ci5pdGVtcyx2YWx1ZTpyLnZhbHVlLG1hcmtlcnM6e3NlbGVjdGVkSXRlbTpsLnNlbGVjdGVkSXRlbSxpdGVtOmwuaXRlbX0sbW92ZW1lbnQ6cyxmYWtlRm9jdXM6dT09PXJiLkNvbnRlbnRGb2N1cyxmb2N1c01hbmFnZXI6YyxtZW51QmVoYXZpb3VyczpUcCgiYXV0byIhPT1pP1tdOltvcihmdW5jdGlvbihvLHQpe09wKG8sNCxsLml0ZW0pLmVhY2goZnVuY3Rpb24odCl7dmFyIG49dC5udW1Db2x1bW5zLGU9dC5udW1Sb3dzO1JtLnNldEdyaWRTaXplKG8sZSxuKX0pfSldKX0pKSksQmcuZ2V0Q29udGVudChtKS5lYWNoKGpmLmhpZ2hsaWdodEZpcnN0KX0scD1mdW5jdGlvbih0KXt2YXIgbjtuPXQsZS5nZXQoKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHVwKGQuZG9tLGQuc2VsZWN0aW9uLmdldFJuZygpLHQudHJpZ2dlckNoYXIpLmJpbmQoZnVuY3Rpb24odCl7cmV0dXJuIGdwKGQscix0LG4pfSl9KS5nZXRPclRodW5rKGZ1bmN0aW9uKCl7cmV0dXJuIG1wKGQscil9KS5mb2xkKGYsZnVuY3Rpb24oYSl7IWZ1bmN0aW9uKHQpe2lmKCFvKCkpe3ZhciBuPXRwKGQsdC5yYW5nZSk7ZS5zZXQoc3Quc29tZSh7dHJpZ2dlckNoYXI6dC50cmlnZ2VyQ2hhcixlbGVtZW50Om4sbWF0Y2hMZW5ndGg6dC50ZXh0Lmxlbmd0aH0pKSxzLnNldCghMSl9fShhLmNvbnRleHQpLGEubG9va3VwRGF0YS50aGVuKGZ1bmN0aW9uKHUpe2UuZ2V0KCkubWFwKGZ1bmN0aW9uKHQpe3ZhciBuLGUsbyxyPWEuY29udGV4dDtpZih0LnRyaWdnZXJDaGFyPT09ci50cmlnZ2VyQ2hhcil7dmFyIGk9KG49ci50cmlnZ2VyQ2hhcixvPVEoZT11LGZ1bmN0aW9uKHQpe3JldHVybiBzdC5mcm9tKHQuY29sdW1ucyl9KS5nZXRPcigxKSxVKGUsZnVuY3Rpb24oaSl7dmFyIHQ9aS5pdGVtcztyZXR1cm4gZ2IodCxpLm1hdGNoVGV4dCxmdW5jdGlvbihvLHIpe3ZhciB0PWQuc2VsZWN0aW9uLmdldFJuZygpO3VwKGQuZG9tLHQsbikuZm9sZChmdW5jdGlvbigpe3JldHVybiBudC5jb25zb2xlLmVycm9yKCJMb3N0IGNvbnRleHQuIEN1cnNvciBwcm9iYWJseSBtb3ZlZCIpfSxmdW5jdGlvbih0KXt2YXIgbj10LnJhbmdlLGU9e2hpZGU6ZnVuY3Rpb24oKXtmKCl9LHJlbG9hZDpmdW5jdGlvbih0KXtsKCkscCh0KX19O3Muc2V0KCEwKSxpLm9uQWN0aW9uKGUsbixvLHIpLHMuc2V0KCExKX0pfSxvLCRoLkJVQkJMRV9UT19TQU5EQk9YLGMpfSkpOzA8aS5sZW5ndGg/Zyh0LHIsdSxpKTooMTA8PXIudGV4dC5sZW5ndGgtdC5tYXRjaExlbmd0aD9mOmwpKCl9fSl9KX0pfSx0PXtvbktleXByZXNzOiRnKGZ1bmN0aW9uKHQpezI3IT09dC53aGljaCYmcCgpfSw1MCksY2FuY2VsSWZOZWNlc3Nhcnk6Zixpc01lbnVPcGVuOmZ1bmN0aW9uKCl7cmV0dXJuIEJnLmlzT3BlbihtKX0saXNBY3RpdmU6byxpc1Byb2Nlc3NpbmdBY3Rpb246cy5nZXQsZ2V0VmlldzpmdW5jdGlvbigpe3JldHVybiBCZy5nZXRDb250ZW50KG0pfX07YXAodCxkKX0sYmI9YXQoITApLHliPWZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gZnUodCxuLGJiLGUsITEpfSx4Yj1mdW5jdGlvbih0LG4sZSl7cmV0dXJuIGZ1KHQsbixiYixlLCEwKX0sd2I9bHUsU2I9ZnVuY3Rpb24odCxuLGUpe3JldHVybiBBdSh0LG4sZSkuaXNTb21lKCl9O2Z1bmN0aW9uIGtiKGUsbyl7dmFyIHI9bnVsbDtyZXR1cm57Y2FuY2VsOmZ1bmN0aW9uKCl7bnVsbCE9PXImJihudC5jbGVhclRpbWVvdXQocikscj1udWxsKX0sc2NoZWR1bGU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sbj0wO248YXJndW1lbnRzLmxlbmd0aDtuKyspdFtuXT1hcmd1bWVudHNbbl07cj1udC5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZS5hcHBseShudWxsLHQpLHI9bnVsbH0sbyl9fX12YXIgQ2I9ZnVuY3Rpb24odCl7dmFyIG49dC5yYXcoKTtyZXR1cm4gbi50b3VjaGVzPT09dW5kZWZpbmVkfHwxIT09bi50b3VjaGVzLmxlbmd0aD9zdC5ub25lKCk6c3Quc29tZShuLnRvdWNoZXNbMF0pfSxPYj1mdW5jdGlvbihlKXt2YXIgdT1jZShzdC5ub25lKCkpLG89Y2UoITEpLHI9a2IoZnVuY3Rpb24odCl7ZS50cmlnZ2VyRXZlbnQoa28oKSx0KSxvLnNldCghMCl9LDQwMCksaT1KdChbe2tleTpKZSgpLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBDYihlKS5lYWNoKGZ1bmN0aW9uKHQpe3IuY2FuY2VsKCk7dmFyIG49e3g6dC5jbGllbnRYLHk6dC5jbGllbnRZLHRhcmdldDplLnRhcmdldCgpfTtyLnNjaGVkdWxlKGUpLG8uc2V0KCExKSx1LnNldChzdC5zb21lKG4pKX0pLHN0Lm5vbmUoKX19LHtrZXk6JGUoKSx2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gci5jYW5jZWwoKSxDYih0KS5lYWNoKGZ1bmN0aW9uKGkpe3UuZ2V0KCkuZWFjaChmdW5jdGlvbih0KXt2YXIgbixlLG8scjtuPWksZT10LG89TWF0aC5hYnMobi5jbGllbnRYLWUueCkscj1NYXRoLmFicyhuLmNsaWVudFktZS55KSwoNTxvfHw1PHIpJiZ1LnNldChzdC5ub25lKCkpfSl9KSxzdC5ub25lKCl9fSx7a2V5OlFlKCksdmFsdWU6ZnVuY3Rpb24obil7ci5jYW5jZWwoKTtyZXR1cm4gdS5nZXQoKS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIExlKHQudGFyZ2V0LG4udGFyZ2V0KCkpfSkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBvLmdldCgpPyhuLnByZXZlbnQoKSwhMSk6ZS50cmlnZ2VyRXZlbnQoU28oKSxuKX0pfX1dKTtyZXR1cm57ZmlyZUlmUmVhZHk6ZnVuY3Rpb24obix0KXtyZXR1cm4gYnQoaSx0KS5iaW5kKGZ1bmN0aW9uKHQpe3JldHVybiB0KG4pfSl9fX0sX2I9ZnVuY3Rpb24oKXtyZXR1cm4gUGUoKS5icm93c2VyLmlzRmlyZWZveCgpfSxUYj1zbihbVW4oInRyaWdnZXJFdmVudCIpLFpuKCJzdG9wQmFja3NwYWNlIiwhMCldKSxFYj1mdW5jdGlvbihuLHQpe3ZhciBlLG8scixpLHU9X24oIkdldHRpbmcgR1VJIGV2ZW50cyBzZXR0aW5ncyIsVGIsdCksYT1PYih1KSxjPVYoWyJ0b3VjaHN0YXJ0IiwidG91Y2htb3ZlIiwidG91Y2hlbmQiLCJ0b3VjaGNhbmNlbCIsImdlc3R1cmVzdGFydCIsIm1vdXNlZG93biIsIm1vdXNldXAiLCJtb3VzZW92ZXIiLCJtb3VzZW1vdmUiLCJtb3VzZW91dCIsImNsaWNrIl0uY29uY2F0KFsic2VsZWN0c3RhcnQiLCJpbnB1dCIsImNvbnRleHRtZW51IiwiY2hhbmdlIiwidHJhbnNpdGlvbmVuZCIsImRyYWciLCJkcmFnc3RhcnQiLCJkcmFnZW5kIiwiZHJhZ2VudGVyIiwiZHJhZ2xlYXZlIiwiZHJhZ292ZXIiLCJkcm9wIiwia2V5dXAiXSksZnVuY3Rpb24odCl7cmV0dXJuIHliKG4sdCxmdW5jdGlvbihuKXthLmZpcmVJZlJlYWR5KG4sdCkuZWFjaChmdW5jdGlvbih0KXt0JiZuLmtpbGwoKX0pLHUudHJpZ2dlckV2ZW50KHQsbikmJm4ua2lsbCgpfSl9KSxzPWNlKHN0Lm5vbmUoKSksbD15YihuLCJwYXN0ZSIsZnVuY3Rpb24obil7YS5maXJlSWZSZWFkeShuLCJwYXN0ZSIpLmVhY2goZnVuY3Rpb24odCl7dCYmbi5raWxsKCl9KSx1LnRyaWdnZXJFdmVudCgicGFzdGUiLG4pJiZuLmtpbGwoKSxzLnNldChzdC5zb21lKG50LnNldFRpbWVvdXQoZnVuY3Rpb24oKXt1LnRyaWdnZXJFdmVudChibygpLG4pfSwwKSkpfSksZj15YihuLCJrZXlkb3duIixmdW5jdGlvbih0KXt2YXIgbjt1LnRyaWdnZXJFdmVudCgia2V5ZG93biIsdCk/dC5raWxsKCk6ITAhPT11LnN0b3BCYWNrc3BhY2V8fCg4IT09KG49dCkucmF3KCkud2hpY2h8fEYoWyJpbnB1dCIsInRleHRhcmVhIl0sQ3Iobi50YXJnZXQoKSkpfHxTYihuLnRhcmdldCgpLCdbY29udGVudGVkaXRhYmxlPSJ0cnVlIl0nKSl8fHQucHJldmVudCgpfSksZD0oZT1uLG89ZnVuY3Rpb24odCl7dS50cmlnZ2VyRXZlbnQoImZvY3VzaW4iLHQpJiZ0LmtpbGwoKX0sX2IoKT94YihlLCJmb2N1cyIsbyk6eWIoZSwiZm9jdXNpbiIsbykpLG09Y2Uoc3Qubm9uZSgpKSxnPShyPW4saT1mdW5jdGlvbih0KXt1LnRyaWdnZXJFdmVudCgiZm9jdXNvdXQiLHQpJiZ0LmtpbGwoKSxtLnNldChzdC5zb21lKG50LnNldFRpbWVvdXQoZnVuY3Rpb24oKXt1LnRyaWdnZXJFdmVudCh2bygpLHQpfSwwKSkpfSxfYigpP3hiKHIsImJsdXIiLGkpOnliKHIsImZvY3Vzb3V0IixpKSk7cmV0dXJue3VuYmluZDpmdW5jdGlvbigpe2l0KGMsZnVuY3Rpb24odCl7dC51bmJpbmQoKX0pLGYudW5iaW5kKCksZC51bmJpbmQoKSxnLnVuYmluZCgpLGwudW5iaW5kKCkscy5nZXQoKS5lYWNoKG50LmNsZWFyVGltZW91dCksbS5nZXQoKS5lYWNoKG50LmNsZWFyVGltZW91dCl9fX0sQmI9ZnVuY3Rpb24odCxuKXt2YXIgZT1idCh0LCJ0YXJnZXQiKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQoKX0pLmdldE9yKG4pO3JldHVybiBjZShlKX0sRGI9d3QoW3tzdG9wcGVkOltdfSx7cmVzdW1lOlsiZWxlbWVudCJdfSx7Y29tcGxldGU6W119XSksTWI9ZnVuY3Rpb24odCxvLG4sZSxyLGkpe3ZhciB1LGEsYyxzLGw9dChvLGUpLGY9KHU9bixhPXIsYz1jZSghMSkscz1jZSghMSkse3N0b3A6ZnVuY3Rpb24oKXtjLnNldCghMCl9LGN1dDpmdW5jdGlvbigpe3Muc2V0KCEwKX0saXNTdG9wcGVkOmMuZ2V0LGlzQ3V0OnMuZ2V0LGV2ZW50OmF0KHUpLHNldFNvdXJjZTphLnNldCxnZXRTb3VyY2U6YS5nZXR9KTtyZXR1cm4gbC5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIGkubG9nRXZlbnROb0hhbmRsZXJzKG8sZSksRGIuY29tcGxldGUoKX0sZnVuY3Rpb24obil7dmFyIGU9bi5kZXNjSGFuZGxlcjtyZXR1cm4gYWkoZSkoZiksZi5pc1N0b3BwZWQoKT8oaS5sb2dFdmVudFN0b3BwZWQobyxuLmVsZW1lbnQsZS5wdXJwb3NlKCkpLERiLnN0b3BwZWQoKSk6Zi5pc0N1dCgpPyhpLmxvZ0V2ZW50Q3V0KG8sbi5lbGVtZW50LGUucHVycG9zZSgpKSxEYi5jb21wbGV0ZSgpKTpscihuLmVsZW1lbnQpLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm4gaS5sb2dOb1BhcmVudChvLG4uZWxlbWVudCxlLnB1cnBvc2UoKSksRGIuY29tcGxldGUoKX0sZnVuY3Rpb24odCl7cmV0dXJuIGkubG9nRXZlbnRSZXNwb25zZShvLG4uZWxlbWVudCxlLnB1cnBvc2UoKSksRGIucmVzdW1lKHQpfSl9KX0sQWI9ZnVuY3Rpb24obixlLG8sdCxyLGkpe3JldHVybiBNYihuLGUsbyx0LHIsaSkuZm9sZChmdW5jdGlvbigpe3JldHVybiEwfSxmdW5jdGlvbih0KXtyZXR1cm4gQWIobixlLG8sdCxyLGkpfSxmdW5jdGlvbigpe3JldHVybiExfSl9LEZiPWZ1bmN0aW9uKHQsbixlKXt2YXIgbyxyLGk9KG89bixyPWNlKCExKSx7c3RvcDpmdW5jdGlvbigpe3Iuc2V0KCEwKX0sY3V0OlosaXNTdG9wcGVkOnIuZ2V0LGlzQ3V0OmF0KCExKSxldmVudDphdChvKSxzZXRTb3VyY2U6dSgiQ2Fubm90IHNldCBzb3VyY2Ugb2YgYSBicm9hZGNhc3RlZCBldmVudCIpLGdldFNvdXJjZTp1KCJDYW5ub3QgZ2V0IHNvdXJjZSBvZiBhIGJyb2FkY2FzdGVkIGV2ZW50Iil9KTtyZXR1cm4gaXQodCxmdW5jdGlvbih0KXt2YXIgbj10LmRlc2NIYW5kbGVyKCk7YWkobikoaSl9KSxpLmlzU3RvcHBlZCgpfSxJYj1mdW5jdGlvbih0LG4sZSxvLHIpe3ZhciBpPUJiKGUsbyk7cmV0dXJuIEFiKHQsbixlLG8saSxyKX0sUmI9ZnVuY3Rpb24odCxuKXtyZXR1cm57ZWxlbWVudDp0LGRlc2NIYW5kbGVyOm59fSxWYj1mdW5jdGlvbih0LG4pe3JldHVybntpZDphdCh0KSxkZXNjSGFuZGxlcjphdChuKX19O2Z1bmN0aW9uIEhiKCl7dmFyIGk9e307cmV0dXJue3JlZ2lzdGVySWQ6ZnVuY3Rpb24obyxyLHQpe2Z0KHQsZnVuY3Rpb24odCxuKXt2YXIgZT1pW25dIT09dW5kZWZpbmVkP2lbbl06e307ZVtyXT11aSh0LG8pLGlbbl09ZX0pfSx1bnJlZ2lzdGVySWQ6ZnVuY3Rpb24oZSl7ZnQoaSxmdW5jdGlvbih0LG4pe3QuaGFzT3duUHJvcGVydHkoZSkmJmRlbGV0ZSB0W2VdfSl9LGZpbHRlckJ5VHlwZTpmdW5jdGlvbih0KXtyZXR1cm4gYnQoaSx0KS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHB0KHQsZnVuY3Rpb24odCxuKXtyZXR1cm4gVmIobix0KX0pfSkuZ2V0T3IoW10pfSxmaW5kOmZ1bmN0aW9uKHQsbixlKXt2YXIgcj1idChpLG4pO3JldHVybiBYZShlLGZ1bmN0aW9uKHQpe3JldHVybiBlPXIsWHIobz10KS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIHN0Lm5vbmUoKX0sZnVuY3Rpb24obil7cmV0dXJuIGUuYmluZChmdW5jdGlvbih0KXtyZXR1cm4gYnQodCxuKX0pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gUmIobyx0KX0pfSk7dmFyIGUsb30sdCl9fX1mdW5jdGlvbiBQYigpe3ZhciBvPUhiKCkscj17fSxpPWZ1bmN0aW9uKG8pe3ZhciB0PW8uZWxlbWVudCgpO3JldHVybiBYcih0KS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIHQ9InVpZC0iLG49by5lbGVtZW50KCksZT1OcihVcit0KSxHcihuLGUpLGU7dmFyIHQsbixlfSxmdW5jdGlvbih0KXtyZXR1cm4gdH0pfSx1PWZ1bmN0aW9uKHQpe1hyKHQuZWxlbWVudCgpKS5lYWNoKGZ1bmN0aW9uKHQpe2RlbGV0ZSByW3RdLG8udW5yZWdpc3RlcklkKHQpfSl9O3JldHVybntmaW5kOmZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gby5maW5kKHQsbixlKX0sZmlsdGVyOmZ1bmN0aW9uKHQpe3JldHVybiBvLmZpbHRlckJ5VHlwZSh0KX0scmVnaXN0ZXI6ZnVuY3Rpb24odCl7dmFyIG49aSh0KTt4dChyLG4pJiZmdW5jdGlvbih0LG4pe3ZhciBlPXJbbl07aWYoZSE9PXQpdGhyb3cgbmV3IEVycm9yKCdUaGUgdGFnSWQgIicrbisnIiBpcyBhbHJlYWR5IHVzZWQgYnk6ICcrVnIoZS5lbGVtZW50KCkpKyJcbkNhbm5vdCB1c2UgaXQgZm9yOiAiK1ZyKHQuZWxlbWVudCgpKSsiXG5UaGUgY29uZmxpY3RpbmcgZWxlbWVudCBpcyIrKE9pKGUuZWxlbWVudCgpKT8iICI6IiBub3QgIikrImFscmVhZHkgaW4gdGhlIERPTSIpO3UodCl9KHQsbik7dmFyIGU9W3RdO28ucmVnaXN0ZXJJZChlLG4sdC5ldmVudHMoKSkscltuXT10fSx1bnJlZ2lzdGVyOnUsZ2V0QnlJZDpmdW5jdGlvbih0KXtyZXR1cm4gYnQocix0KX19fXZhciB6YixOYixMYixqYixVYj1PZih7bmFtZToiQ29udGFpbmVyIixmYWN0b3J5OmZ1bmN0aW9uKHQpe3ZhciBuPXQuZG9tLGU9bi5hdHRyaWJ1dGVzLG89eShuLFsiYXR0cmlidXRlcyJdKTtyZXR1cm57dWlkOnQudWlkLGRvbTpldCh7dGFnOiJkaXYiLGF0dHJpYnV0ZXM6ZXQoe3JvbGU6InByZXNlbnRhdGlvbiJ9LGUpfSxvKSxjb21wb25lbnRzOnQuY29tcG9uZW50cyxiZWhhdmlvdXJzOnhsKHQuY29udGFpbmVyQmVoYXZpb3VycyksZXZlbnRzOnQuZXZlbnRzLGRvbU1vZGlmaWNhdGlvbjp0LmRvbU1vZGlmaWNhdGlvbixldmVudE9yZGVyOnQuZXZlbnRPcmRlcn19LGNvbmZpZ0ZpZWxkczpbWm4oImNvbXBvbmVudHMiLFtdKSx5bCgiY29udGFpbmVyQmVoYXZpb3VycyIsW10pLFpuKCJldmVudHMiLHt9KSxabigiZG9tTW9kaWZpY2F0aW9uIix7fSksWm4oImV2ZW50T3JkZXIiLHt9KV19KSxXYj1mdW5jdGlvbihlKXt2YXIgbz1mdW5jdGlvbihuKXtyZXR1cm4gbHIoZS5lbGVtZW50KCkpLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm4hMH0sZnVuY3Rpb24odCl7cmV0dXJuIExlKG4sdCl9KX0scj1QYigpLHM9ZnVuY3Rpb24odCxuKXtyZXR1cm4gci5maW5kKG8sdCxuKX0sdD1FYihlLmVsZW1lbnQoKSx7dHJpZ2dlckV2ZW50OmZ1bmN0aW9uKHUsYSl7cmV0dXJuIGp1KHUsYS50YXJnZXQoKSxmdW5jdGlvbih0KXtyZXR1cm4gbj1zLGU9dSxyPXQsaT0obz1hKS50YXJnZXQoKSxJYihuLGUsbyxpLHIpO3ZhciBuLGUsbyxyLGl9KX19KSxpPXtkZWJ1Z0luZm86YXQoInJlYWwiKSx0cmlnZ2VyRXZlbnQ6ZnVuY3Rpb24obixlLG8pe2p1KG4sZSxmdW5jdGlvbih0KXtyZXR1cm4gSWIocyxuLG8sZSx0KX0pfSx0cmlnZ2VyRm9jdXM6ZnVuY3Rpb24oYSxjKXtYcihhKS5mb2xkKGZ1bmN0aW9uKCl7S2EoYSl9LGZ1bmN0aW9uKHQpe2p1KGhvKCksYSxmdW5jdGlvbih0KXt2YXIgbixlLG8scixpLHU7cmV0dXJuIG49cyxlPWhvKCksbz17b3JpZ2luYXRvcjphdChjKSxraWxsOloscHJldmVudDpaLHRhcmdldDphdChhKX0saT10LHU9QmIobyxyPWEpLE1iKG4sZSxvLHIsdSxpKSwhMX0pfSl9LHRyaWdnZXJFc2NhcGU6ZnVuY3Rpb24odCxuKXtpLnRyaWdnZXJFdmVudCgia2V5ZG93biIsdC5lbGVtZW50KCksbi5ldmVudCgpKX0sZ2V0QnlVaWQ6ZnVuY3Rpb24odCl7cmV0dXJuIGcodCl9LGdldEJ5RG9tOmZ1bmN0aW9uKHQpe3JldHVybiBwKHQpfSxidWlsZDpKaSxhZGRUb0d1aTpmdW5jdGlvbih0KXthKHQpfSxyZW1vdmVGcm9tR3VpOmZ1bmN0aW9uKHQpe2ModCl9LGFkZFRvV29ybGQ6ZnVuY3Rpb24odCl7bih0KX0scmVtb3ZlRnJvbVdvcmxkOmZ1bmN0aW9uKHQpe3UodCl9LGJyb2FkY2FzdDpmdW5jdGlvbih0KXtmKHQpfSxicm9hZGNhc3RPbjpmdW5jdGlvbih0LG4pe2QodCxuKX0sYnJvYWRjYXN0RXZlbnQ6ZnVuY3Rpb24odCxuKXttKHQsbil9LGlzQ29ubmVjdGVkOmF0KCEwKX0sbj1mdW5jdGlvbih0KXt0LmNvbm5lY3QoaSksVHIodC5lbGVtZW50KCkpfHwoci5yZWdpc3Rlcih0KSxpdCh0LmNvbXBvbmVudHMoKSxuKSxpLnRyaWdnZXJFdmVudChfbygpLHQuZWxlbWVudCgpLHt0YXJnZXQ6YXQodC5lbGVtZW50KCkpfSkpfSx1PWZ1bmN0aW9uKHQpe1RyKHQuZWxlbWVudCgpKXx8KGl0KHQuY29tcG9uZW50cygpLHUpLHIudW5yZWdpc3Rlcih0KSksdC5kaXNjb25uZWN0KCl9LGE9ZnVuY3Rpb24odCl7UnMoZSx0KX0sYz1mdW5jdGlvbih0KXtQcyh0KX0sbD1mdW5jdGlvbihlKXt2YXIgdD1yLmZpbHRlcih5bygpKTtpdCh0LGZ1bmN0aW9uKHQpe3ZhciBuPXQuZGVzY0hhbmRsZXIoKTthaShuKShlKX0pfSxmPWZ1bmN0aW9uKHQpe2woe3VuaXZlcnNhbDphdCghMCksZGF0YTphdCh0KX0pfSxkPWZ1bmN0aW9uKHQsbil7bCh7dW5pdmVyc2FsOmF0KCExKSxjaGFubmVsczphdCh0KSxkYXRhOmF0KG4pfSl9LG09ZnVuY3Rpb24odCxuKXt2YXIgZT1yLmZpbHRlcih0KTtyZXR1cm4gRmIoZSxuKX0sZz1mdW5jdGlvbih0KXtyZXR1cm4gci5nZXRCeUlkKHQpLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm4gb3QuZXJyb3IobmV3IEVycm9yKCdDb3VsZCBub3QgZmluZCBjb21wb25lbnQgd2l0aCB1aWQ6ICInK3QrJyIgaW4gc3lzdGVtLicpKX0sb3QudmFsdWUpfSxwPWZ1bmN0aW9uKHQpe3ZhciBuPVhyKHQpLmdldE9yKCJub3QgZm91bmQiKTtyZXR1cm4gZyhuKX07cmV0dXJuIG4oZSkse3Jvb3Q6YXQoZSksZWxlbWVudDplLmVsZW1lbnQsZGVzdHJveTpmdW5jdGlvbigpe3QudW5iaW5kKCkseHIoZS5lbGVtZW50KCkpfSxhZGQ6YSxyZW1vdmU6YyxnZXRCeVVpZDpnLGdldEJ5RG9tOnAsYWRkVG9Xb3JsZDpuLHJlbW92ZUZyb21Xb3JsZDp1LGJyb2FkY2FzdDpmLGJyb2FkY2FzdE9uOmQsYnJvYWRjYXN0RXZlbnQ6bX19LEdiPU5yKCJmb3JtLWNvbXBvbmVudC1jaGFuZ2UiKSxYYj1OcigiZm9ybS1jbG9zZSIpLFliPU5yKCJmb3JtLWNhbmNlbCIpLHFiPU5yKCJmb3JtLWFjdGlvbiIpLEtiPU5yKCJmb3JtLXN1Ym1pdCIpLEpiPU5yKCJmb3JtLWJsb2NrIiksJGI9TnIoImZvcm0tdW5ibG9jayIpLFFiPU5yKCJmb3JtLXRhYmNoYW5nZSIpLFpiPU5yKCJmb3JtLXJlc2l6ZSIpLHR5PWF0KFtabigicHJlZml4IiwiZm9ybS1maWVsZCIpLHlsKCJmaWVsZEJlaGF2aW91cnMiLFtNZixibF0pXSksbnk9YXQoW0psKHtzY2hlbWE6W3puKCJkb20iKV0sbmFtZToibGFiZWwifSksSmwoe2ZhY3Rvcnk6e3NrZXRjaDpmdW5jdGlvbih0KXtyZXR1cm57dWlkOnQudWlkLGRvbTp7dGFnOiJzcGFuIixzdHlsZXM6e2Rpc3BsYXk6Im5vbmUifSxhdHRyaWJ1dGVzOnsiYXJpYS1oaWRkZW4iOiJ0cnVlIn0saW5uZXJIdG1sOnQudGV4dH19fX0sc2NoZW1hOlt6bigidGV4dCIpXSxuYW1lOiJhcmlhLWRlc2NyaXB0b3IifSkscWwoe2ZhY3Rvcnk6e3NrZXRjaDpmdW5jdGlvbih0KXt2YXIgbj1xdCh0LFsiZmFjdG9yeSJdKTtyZXR1cm4gdC5mYWN0b3J5LnNrZXRjaChuKX19LHNjaGVtYTpbem4oImZhY3RvcnkiKV0sbmFtZToiZmllbGQifSldKSxleT1fZih7bmFtZToiRm9ybUZpZWxkIixjb25maWdGaWVsZHM6dHkoKSxwYXJ0RmllbGRzOm55KCksZmFjdG9yeTpmdW5jdGlvbihyLHQsbixlKXt2YXIgbz13bChyLmZpZWxkQmVoYXZpb3VycyxbTWYuY29uZmlnKHtmaW5kOmZ1bmN0aW9uKHQpe3JldHVybiBzZih0LHIsImZpZWxkIil9fSksYmwuY29uZmlnKHtzdG9yZTp7bW9kZToibWFudWFsIixnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gTWYuZ2V0Q3VycmVudCh0KS5iaW5kKGJsLmdldFZhbHVlKX0sc2V0VmFsdWU6ZnVuY3Rpb24odCxuKXtNZi5nZXRDdXJyZW50KHQpLmVhY2goZnVuY3Rpb24odCl7Ymwuc2V0VmFsdWUodCxuKX0pfX19KV0pLGk9WW8oW29yKGZ1bmN0aW9uKHQsbil7dmFyIG89ZmYodCxyLFsibGFiZWwiLCJmaWVsZCIsImFyaWEtZGVzY3JpcHRvciJdKTtvLmZpZWxkKCkuZWFjaChmdW5jdGlvbihlKXt2YXIgbj1OcihyLnByZWZpeCk7by5sYWJlbCgpLmVhY2goZnVuY3Rpb24odCl7QnIodC5lbGVtZW50KCksImZvciIsbiksQnIoZS5lbGVtZW50KCksImlkIixuKX0pLG9bImFyaWEtZGVzY3JpcHRvciJdKCkuZWFjaChmdW5jdGlvbih0KXt2YXIgbj1OcihyLnByZWZpeCk7QnIodC5lbGVtZW50KCksImlkIixuKSxCcihlLmVsZW1lbnQoKSwiYXJpYS1kZXNjcmliZWRieSIsbil9KX0pfSldKSx1PXtnZXRGaWVsZDpmdW5jdGlvbih0KXtyZXR1cm4gc2YodCxyLCJmaWVsZCIpfSxnZXRMYWJlbDpmdW5jdGlvbih0KXtyZXR1cm4gc2YodCxyLCJsYWJlbCIpfX07cmV0dXJue3VpZDpyLnVpZCxkb206ci5kb20sY29tcG9uZW50czp0LGJlaGF2aW91cnM6byxldmVudHM6aSxhcGlzOnV9fSxhcGlzOntnZXRGaWVsZDpmdW5jdGlvbih0LG4pe3JldHVybiB0LmdldEZpZWxkKG4pfSxnZXRMYWJlbDpmdW5jdGlvbih0LG4pe3JldHVybiB0LmdldExhYmVsKG4pfX19KSxveT1hdChbWW4oImRhdGEiKSxabigiaW5wdXRBdHRyaWJ1dGVzIix7fSksWm4oImlucHV0U3R5bGVzIix7fSksWm4oInRhZyIsImlucHV0IiksWm4oImlucHV0Q2xhc3NlcyIsW10pLCR1KCJvblNldFZhbHVlIiksWm4oInN0eWxlcyIse30pLFpuKCJldmVudE9yZGVyIix7fSkseWwoImlucHV0QmVoYXZpb3VycyIsW2JsLFhtXSksWm4oInNlbGVjdE9uRm9jdXMiLCEwKV0pLHJ5PWZ1bmN0aW9uKHQpe3JldHVybiB6YShbWG0uY29uZmlnKHtvbkZvY3VzOnQuc2VsZWN0T25Gb2N1cz9mdW5jdGlvbih0KXt2YXIgbj10LmVsZW1lbnQoKSxlPXppKG4pO24uZG9tKCkuc2V0U2VsZWN0aW9uUmFuZ2UoMCxlLmxlbmd0aCl9Olp9KV0pfSxpeT1mdW5jdGlvbih0KXtyZXR1cm57dGFnOnQudGFnLGF0dHJpYnV0ZXM6ZXQoe3R5cGU6InRleHQifSx0LmlucHV0QXR0cmlidXRlcyksc3R5bGVzOnQuaW5wdXRTdHlsZXMsY2xhc3Nlczp0LmlucHV0Q2xhc3Nlc319LHV5PU9mKHtuYW1lOiJJbnB1dCIsY29uZmlnRmllbGRzOm95KCksZmFjdG9yeTpmdW5jdGlvbih0LG4pe3JldHVybnt1aWQ6dC51aWQsZG9tOml5KHQpLGNvbXBvbmVudHM6W10sYmVoYXZpb3VyczpldChldCh7fSxyeShlPXQpKSx3bChlLmlucHV0QmVoYXZpb3VycyxbYmwuY29uZmlnKHtzdG9yZTpldChldCh7bW9kZToibWFudWFsIn0sZS5kYXRhLm1hcChmdW5jdGlvbih0KXtyZXR1cm57aW5pdGlhbFZhbHVlOnR9fSkuZ2V0T3Ioe30pKSx7Z2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHppKHQuZWxlbWVudCgpKX0sc2V0VmFsdWU6ZnVuY3Rpb24odCxuKXt6aSh0LmVsZW1lbnQoKSkhPT1uJiZOaSh0LmVsZW1lbnQoKSxuKX19KSxvblNldFZhbHVlOmUub25TZXRWYWx1ZX0pXSkpLGV2ZW50T3JkZXI6dC5ldmVudE9yZGVyfTt2YXIgZX19KSxheT17fSxjeT17ZXhwb3J0czpheX07emI9dW5kZWZpbmVkLE5iPWF5LExiPWN5LGpiPXVuZGVmaW5lZCxmdW5jdGlvbih0KXtpZigib2JqZWN0Ij09dHlwZW9mIE5iJiZ2b2lkIDAhPT1MYilMYi5leHBvcnRzPXQoKTtlbHNlIGlmKCJmdW5jdGlvbiI9PXR5cGVvZiB6YiYmemIuYW1kKXpiKFtdLHQpO2Vsc2V7KCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6dGhpcykuRXBob3hDb250YWN0V3JhcHBlcj10KCl9fShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBsKGksdSxhKXtmdW5jdGlvbiBjKG4sdCl7aWYoIXVbbl0pe2lmKCFpW25dKXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgamImJmpiO2lmKCF0JiZlKXJldHVybiBlKG4sITApO2lmKHMpcmV0dXJuIHMobiwhMCk7dmFyIG89bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrbisiJyIpO3Rocm93IG8uY29kZT0iTU9EVUxFX05PVF9GT1VORCIsb312YXIgcj11W25dPXtleHBvcnRzOnt9fTtpW25dWzBdLmNhbGwoci5leHBvcnRzLGZ1bmN0aW9uKHQpe3JldHVybiBjKGlbbl1bMV1bdF18fHQpfSxyLHIuZXhwb3J0cyxsLGksdSxhKX1yZXR1cm4gdVtuXS5leHBvcnRzfWZvcih2YXIgcz0iZnVuY3Rpb24iPT10eXBlb2YgamImJmpiLHQ9MDt0PGEubGVuZ3RoO3QrKyljKGFbdF0pO3JldHVybiBjfSh7MTpbZnVuY3Rpb24odCxuLGUpe3ZhciBvLHIsaT1uLmV4cG9ydHM9e307ZnVuY3Rpb24gdSgpe3Rocm93IG5ldyBFcnJvcigic2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCIpfWZ1bmN0aW9uIGEoKXt0aHJvdyBuZXcgRXJyb3IoImNsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCIpfWZ1bmN0aW9uIGModCl7aWYobz09PXNldFRpbWVvdXQpcmV0dXJuIHNldFRpbWVvdXQodCwwKTtpZigobz09PXV8fCFvKSYmc2V0VGltZW91dClyZXR1cm4gbz1zZXRUaW1lb3V0LHNldFRpbWVvdXQodCwwKTt0cnl7cmV0dXJuIG8odCwwKX1jYXRjaChuKXt0cnl7cmV0dXJuIG8uY2FsbChudWxsLHQsMCl9Y2F0Y2gobil7cmV0dXJuIG8uY2FsbCh0aGlzLHQsMCl9fX0hZnVuY3Rpb24oKXt0cnl7bz0iZnVuY3Rpb24iPT10eXBlb2Ygc2V0VGltZW91dD9zZXRUaW1lb3V0OnV9Y2F0Y2godCl7bz11fXRyeXtyPSJmdW5jdGlvbiI9PXR5cGVvZiBjbGVhclRpbWVvdXQ/Y2xlYXJUaW1lb3V0OmF9Y2F0Y2godCl7cj1hfX0oKTt2YXIgcyxsPVtdLGY9ITEsZD0tMTtmdW5jdGlvbiBtKCl7ZiYmcyYmKGY9ITEscy5sZW5ndGg/bD1zLmNvbmNhdChsKTpkPS0xLGwubGVuZ3RoJiZnKCkpfWZ1bmN0aW9uIGcoKXtpZighZil7dmFyIHQ9YyhtKTtmPSEwO2Zvcih2YXIgbj1sLmxlbmd0aDtuOyl7Zm9yKHM9bCxsPVtdOysrZDxuOylzJiZzW2RdLnJ1bigpO2Q9LTEsbj1sLmxlbmd0aH1zPW51bGwsZj0hMSxmdW5jdGlvbiBlKHQpe2lmKHI9PT1jbGVhclRpbWVvdXQpcmV0dXJuIGNsZWFyVGltZW91dCh0KTtpZigocj09PWF8fCFyKSYmY2xlYXJUaW1lb3V0KXJldHVybiByPWNsZWFyVGltZW91dCxjbGVhclRpbWVvdXQodCk7dHJ5e3JldHVybiByKHQpfWNhdGNoKG4pe3RyeXtyZXR1cm4gci5jYWxsKG51bGwsdCl9Y2F0Y2gobil7cmV0dXJuIHIuY2FsbCh0aGlzLHQpfX19KHQpfX1mdW5jdGlvbiBwKHQsbil7dGhpcy5mdW49dCx0aGlzLmFycmF5PW59ZnVuY3Rpb24gaCgpe31pLm5leHRUaWNrPWZ1bmN0aW9uKHQpe3ZhciBuPW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoLTEpO2lmKDE8YXJndW1lbnRzLmxlbmd0aClmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKW5bZS0xXT1hcmd1bWVudHNbZV07bC5wdXNoKG5ldyBwKHQsbikpLDEhPT1sLmxlbmd0aHx8Znx8YyhnKX0scC5wcm90b3R5cGUucnVuPWZ1bmN0aW9uKCl7dGhpcy5mdW4uYXBwbHkobnVsbCx0aGlzLmFycmF5KX0saS50aXRsZT0iYnJvd3NlciIsaS5icm93c2VyPSEwLGkuZW52PXt9LGkuYXJndj1bXSxpLnZlcnNpb249IiIsaS52ZXJzaW9ucz17fSxpLm9uPWgsaS5hZGRMaXN0ZW5lcj1oLGkub25jZT1oLGkub2ZmPWgsaS5yZW1vdmVMaXN0ZW5lcj1oLGkucmVtb3ZlQWxsTGlzdGVuZXJzPWgsaS5lbWl0PWgsaS5wcmVwZW5kTGlzdGVuZXI9aCxpLnByZXBlbmRPbmNlTGlzdGVuZXI9aCxpLmxpc3RlbmVycz1mdW5jdGlvbih0KXtyZXR1cm5bXX0saS5iaW5kaW5nPWZ1bmN0aW9uKHQpe3Rocm93IG5ldyBFcnJvcigicHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQiKX0saS5jd2Q9ZnVuY3Rpb24oKXtyZXR1cm4iLyJ9LGkuY2hkaXI9ZnVuY3Rpb24odCl7dGhyb3cgbmV3IEVycm9yKCJwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWQiKX0saS51bWFzaz1mdW5jdGlvbigpe3JldHVybiAwfX0se31dLDI6W2Z1bmN0aW9uKHQsZixuKXsoZnVuY3Rpb24obil7ZnVuY3Rpb24gbygpe31mdW5jdGlvbiBpKHQpe2lmKCJvYmplY3QiIT10eXBlb2YgdGhpcyl0aHJvdyBuZXcgVHlwZUVycm9yKCJQcm9taXNlcyBtdXN0IGJlIGNvbnN0cnVjdGVkIHZpYSBuZXciKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJub3QgYSBmdW5jdGlvbiIpO3RoaXMuX3N0YXRlPTAsdGhpcy5faGFuZGxlZD0hMSx0aGlzLl92YWx1ZT11bmRlZmluZWQsdGhpcy5fZGVmZXJyZWRzPVtdLGwodCx0aGlzKX1mdW5jdGlvbiByKG8scil7Zm9yKDszPT09by5fc3RhdGU7KW89by5fdmFsdWU7MCE9PW8uX3N0YXRlPyhvLl9oYW5kbGVkPSEwLGkuX2ltbWVkaWF0ZUZuKGZ1bmN0aW9uKCl7dmFyIHQ9MT09PW8uX3N0YXRlP3Iub25GdWxmaWxsZWQ6ci5vblJlamVjdGVkO2lmKG51bGwhPT10KXt2YXIgbjt0cnl7bj10KG8uX3ZhbHVlKX1jYXRjaChlKXtyZXR1cm4gdm9pZCBhKHIucHJvbWlzZSxlKX11KHIucHJvbWlzZSxuKX1lbHNlKDE9PT1vLl9zdGF0ZT91OmEpKHIucHJvbWlzZSxvLl92YWx1ZSl9KSk6by5fZGVmZXJyZWRzLnB1c2gocil9ZnVuY3Rpb24gdSh0LG4pe3RyeXtpZihuPT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJBIHByb21pc2UgY2Fubm90IGJlIHJlc29sdmVkIHdpdGggaXRzZWxmLiIpO2lmKG4mJigib2JqZWN0Ij09dHlwZW9mIG58fCJmdW5jdGlvbiI9PXR5cGVvZiBuKSl7dmFyIGU9bi50aGVuO2lmKG4gaW5zdGFuY2VvZiBpKXJldHVybiB0Ll9zdGF0ZT0zLHQuX3ZhbHVlPW4sdm9pZCBjKHQpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlKXJldHVybiB2b2lkIGwoZnVuY3Rpb24gbyh0LG4pe3JldHVybiBmdW5jdGlvbigpe3QuYXBwbHkobixhcmd1bWVudHMpfX0oZSxuKSx0KX10Ll9zdGF0ZT0xLHQuX3ZhbHVlPW4sYyh0KX1jYXRjaChyKXthKHQscil9fWZ1bmN0aW9uIGEodCxuKXt0Ll9zdGF0ZT0yLHQuX3ZhbHVlPW4sYyh0KX1mdW5jdGlvbiBjKHQpezI9PT10Ll9zdGF0ZSYmMD09PXQuX2RlZmVycmVkcy5sZW5ndGgmJmkuX2ltbWVkaWF0ZUZuKGZ1bmN0aW9uKCl7dC5faGFuZGxlZHx8aS5fdW5oYW5kbGVkUmVqZWN0aW9uRm4odC5fdmFsdWUpfSk7Zm9yKHZhciBuPTAsZT10Ll9kZWZlcnJlZHMubGVuZ3RoO248ZTtuKyspcih0LHQuX2RlZmVycmVkc1tuXSk7dC5fZGVmZXJyZWRzPW51bGx9ZnVuY3Rpb24gcyh0LG4sZSl7dGhpcy5vbkZ1bGZpbGxlZD0iZnVuY3Rpb24iPT10eXBlb2YgdD90Om51bGwsdGhpcy5vblJlamVjdGVkPSJmdW5jdGlvbiI9PXR5cGVvZiBuP246bnVsbCx0aGlzLnByb21pc2U9ZX1mdW5jdGlvbiBsKHQsbil7dmFyIGU9ITE7dHJ5e3QoZnVuY3Rpb24odCl7ZXx8KGU9ITAsdShuLHQpKX0sZnVuY3Rpb24odCl7ZXx8KGU9ITAsYShuLHQpKX0pfWNhdGNoKG8pe2lmKGUpcmV0dXJuO2U9ITAsYShuLG8pfX12YXIgdCxlO3Q9dGhpcyxlPXNldFRpbWVvdXQsaS5wcm90b3R5cGVbImNhdGNoIl09ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudGhlbihudWxsLHQpfSxpLnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKHQsbil7dmFyIGU9bmV3IHRoaXMuY29uc3RydWN0b3Iobyk7cmV0dXJuIHIodGhpcyxuZXcgcyh0LG4sZSkpLGV9LGkuYWxsPWZ1bmN0aW9uKHQpe3ZhciBjPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQpO3JldHVybiBuZXcgaShmdW5jdGlvbihyLGkpe2lmKDA9PT1jLmxlbmd0aClyZXR1cm4gcihbXSk7dmFyIHU9Yy5sZW5ndGg7ZnVuY3Rpb24gYShuLHQpe3RyeXtpZih0JiYoIm9iamVjdCI9PXR5cGVvZiB0fHwiZnVuY3Rpb24iPT10eXBlb2YgdCkpe3ZhciBlPXQudGhlbjtpZigiZnVuY3Rpb24iPT10eXBlb2YgZSlyZXR1cm4gdm9pZCBlLmNhbGwodCxmdW5jdGlvbih0KXthKG4sdCl9LGkpfWNbbl09dCwwPT0tLXUmJnIoYyl9Y2F0Y2gobyl7aShvKX19Zm9yKHZhciB0PTA7dDxjLmxlbmd0aDt0KyspYSh0LGNbdF0pfSl9LGkucmVzb2x2ZT1mdW5jdGlvbihuKXtyZXR1cm4gbiYmIm9iamVjdCI9PXR5cGVvZiBuJiZuLmNvbnN0cnVjdG9yPT09aT9uOm5ldyBpKGZ1bmN0aW9uKHQpe3Qobil9KX0saS5yZWplY3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBpKGZ1bmN0aW9uKHQsbil7bihlKX0pfSxpLnJhY2U9ZnVuY3Rpb24ocil7cmV0dXJuIG5ldyBpKGZ1bmN0aW9uKHQsbil7Zm9yKHZhciBlPTAsbz1yLmxlbmd0aDtlPG87ZSsrKXJbZV0udGhlbih0LG4pfSl9LGkuX2ltbWVkaWF0ZUZuPSJmdW5jdGlvbiI9PXR5cGVvZiBuP2Z1bmN0aW9uKHQpe24odCl9OmZ1bmN0aW9uKHQpe2UodCwwKX0saS5fdW5oYW5kbGVkUmVqZWN0aW9uRm49ZnVuY3Rpb24odCl7InVuZGVmaW5lZCIhPXR5cGVvZiBjb25zb2xlJiZjb25zb2xlJiZjb25zb2xlLndhcm4oIlBvc3NpYmxlIFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjoiLHQpfSxpLl9zZXRJbW1lZGlhdGVGbj1mdW5jdGlvbih0KXtpLl9pbW1lZGlhdGVGbj10fSxpLl9zZXRVbmhhbmRsZWRSZWplY3Rpb25Gbj1mdW5jdGlvbih0KXtpLl91bmhhbmRsZWRSZWplY3Rpb25Gbj10fSx2b2lkIDAhPT1mJiZmLmV4cG9ydHM/Zi5leHBvcnRzPWk6dC5Qcm9taXNlfHwodC5Qcm9taXNlPWkpfSkuY2FsbCh0aGlzLHQoInRpbWVycyIpLnNldEltbWVkaWF0ZSl9LHt0aW1lcnM6M31dLDM6W2Z1bmN0aW9uKGMsdCxzKXsoZnVuY3Rpb24odCxuKXt2YXIgbz1jKCJwcm9jZXNzL2Jyb3dzZXIuanMiKS5uZXh0VGljayxlPUZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseSxyPUFycmF5LnByb3RvdHlwZS5zbGljZSxpPXt9LHU9MDtmdW5jdGlvbiBhKHQsbil7dGhpcy5faWQ9dCx0aGlzLl9jbGVhckZuPW59cy5zZXRUaW1lb3V0PWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBhKGUuY2FsbChzZXRUaW1lb3V0LHdpbmRvdyxhcmd1bWVudHMpLGNsZWFyVGltZW91dCl9LHMuc2V0SW50ZXJ2YWw9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGEoZS5jYWxsKHNldEludGVydmFsLHdpbmRvdyxhcmd1bWVudHMpLGNsZWFySW50ZXJ2YWwpfSxzLmNsZWFyVGltZW91dD1zLmNsZWFySW50ZXJ2YWw9ZnVuY3Rpb24odCl7dC5jbG9zZSgpfSxhLnByb3RvdHlwZS51bnJlZj1hLnByb3RvdHlwZS5yZWY9ZnVuY3Rpb24oKXt9LGEucHJvdG90eXBlLmNsb3NlPWZ1bmN0aW9uKCl7dGhpcy5fY2xlYXJGbi5jYWxsKHdpbmRvdyx0aGlzLl9pZCl9LHMuZW5yb2xsPWZ1bmN0aW9uKHQsbil7Y2xlYXJUaW1lb3V0KHQuX2lkbGVUaW1lb3V0SWQpLHQuX2lkbGVUaW1lb3V0PW59LHMudW5lbnJvbGw9ZnVuY3Rpb24odCl7Y2xlYXJUaW1lb3V0KHQuX2lkbGVUaW1lb3V0SWQpLHQuX2lkbGVUaW1lb3V0PS0xfSxzLl91bnJlZkFjdGl2ZT1zLmFjdGl2ZT1mdW5jdGlvbih0KXtjbGVhclRpbWVvdXQodC5faWRsZVRpbWVvdXRJZCk7dmFyIG49dC5faWRsZVRpbWVvdXQ7MDw9biYmKHQuX2lkbGVUaW1lb3V0SWQ9c2V0VGltZW91dChmdW5jdGlvbigpe3QuX29uVGltZW91dCYmdC5fb25UaW1lb3V0KCl9LG4pKX0scy5zZXRJbW1lZGlhdGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpmdW5jdGlvbih0KXt2YXIgbj11KyssZT0hKGFyZ3VtZW50cy5sZW5ndGg8MikmJnIuY2FsbChhcmd1bWVudHMsMSk7cmV0dXJuIGlbbl09ITAsbyhmdW5jdGlvbigpe2lbbl0mJihlP3QuYXBwbHkobnVsbCxlKTp0LmNhbGwobnVsbCkscy5jbGVhckltbWVkaWF0ZShuKSl9KSxufSxzLmNsZWFySW1tZWRpYXRlPSJmdW5jdGlvbiI9PXR5cGVvZiBuP246ZnVuY3Rpb24odCl7ZGVsZXRlIGlbdF19fSkuY2FsbCh0aGlzLGMoInRpbWVycyIpLnNldEltbWVkaWF0ZSxjKCJ0aW1lcnMiKS5jbGVhckltbWVkaWF0ZSl9LHsicHJvY2Vzcy9icm93c2VyLmpzIjoxLHRpbWVyczozfV0sNDpbZnVuY3Rpb24odCxuLGUpe3ZhciBvPXQoInByb21pc2UtcG9seWZpbGwiKSxyPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzpGdW5jdGlvbigicmV0dXJuIHRoaXM7IikoKTtuLmV4cG9ydHM9e2JvbHRFeHBvcnQ6ci5Qcm9taXNlfHxvfX0seyJwcm9taXNlLXBvbHlmaWxsIjoyfV19LHt9LFs0XSkoNCl9KTt2YXIgc3ksbHksZnk9Y3kuZXhwb3J0cy5ib2x0RXhwb3J0LGR5PWZ1bmN0aW9uKHQpe3ZhciBlPXN0Lm5vbmUoKSxuPVtdLG89ZnVuY3Rpb24odCl7cigpP3UodCk6bi5wdXNoKHQpfSxyPWZ1bmN0aW9uKCl7cmV0dXJuIGUuaXNTb21lKCl9LGk9ZnVuY3Rpb24odCl7aXQodCx1KX0sdT1mdW5jdGlvbihuKXtlLmVhY2goZnVuY3Rpb24odCl7bnQuc2V0VGltZW91dChmdW5jdGlvbigpe24odCl9LDApfSl9O3JldHVybiB0KGZ1bmN0aW9uKHQpe2U9c3Quc29tZSh0KSxpKG4pLG49W119KSx7Z2V0Om8sbWFwOmZ1bmN0aW9uKGUpe3JldHVybiBkeShmdW5jdGlvbihuKXtvKGZ1bmN0aW9uKHQpe24oZSh0KSl9KX0pfSxpc1JlYWR5OnJ9fSxteT17bnU6ZHkscHVyZTpmdW5jdGlvbihuKXtyZXR1cm4gZHkoZnVuY3Rpb24odCl7dChuKX0pfX0sZ3k9ZnVuY3Rpb24odCl7bnQuc2V0VGltZW91dChmdW5jdGlvbigpe3Rocm93IHR9LDApfSxweT1mdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbih0KXtlKCkudGhlbih0LGd5KX07cmV0dXJue21hcDpmdW5jdGlvbih0KXtyZXR1cm4gcHkoZnVuY3Rpb24oKXtyZXR1cm4gZSgpLnRoZW4odCl9KX0sYmluZDpmdW5jdGlvbihuKXtyZXR1cm4gcHkoZnVuY3Rpb24oKXtyZXR1cm4gZSgpLnRoZW4oZnVuY3Rpb24odCl7cmV0dXJuIG4odCkudG9Qcm9taXNlKCl9KX0pfSxhbm9uQmluZDpmdW5jdGlvbih0KXtyZXR1cm4gcHkoZnVuY3Rpb24oKXtyZXR1cm4gZSgpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gdC50b1Byb21pc2UoKX0pfSl9LHRvTGF6eTpmdW5jdGlvbigpe3JldHVybiBteS5udSh0KX0sdG9DYWNoZWQ6ZnVuY3Rpb24oKXt2YXIgdD1udWxsO3JldHVybiBweShmdW5jdGlvbigpe3JldHVybiBudWxsPT09dCYmKHQ9ZSgpKSx0fSl9LHRvUHJvbWlzZTplLGdldDp0fX0saHk9ZnVuY3Rpb24odCl7cmV0dXJuIHB5KGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBmeSh0KX0pfSx2eT1mdW5jdGlvbih0KXtyZXR1cm4gcHkoZnVuY3Rpb24oKXtyZXR1cm4gZnkucmVzb2x2ZSh0KX0pfSxieT1bImlucHV0IiwidGV4dGFyZWEiXSx5eT1mdW5jdGlvbih0KXt2YXIgbj1Dcih0KTtyZXR1cm4gRihieSxuKX0seHk9ZnVuY3Rpb24odCxuKXt2YXIgZT1uLmdldFJvb3QodCkuZ2V0T3IodC5lbGVtZW50KCkpO3hpKGUsbi5pbnZhbGlkQ2xhc3MpLG4ubm90aWZ5LmVhY2goZnVuY3Rpb24obil7eXkodC5lbGVtZW50KCkpJiZCcih0LmVsZW1lbnQoKSwiYXJpYS1pbnZhbGlkIiwhMSksbi5nZXRDb250YWluZXIodCkuZWFjaChmdW5jdGlvbih0KXtrcih0LG4udmFsaWRIdG1sKX0pLG4ub25WYWxpZCh0KX0pfSx3eT1mdW5jdGlvbihuLHQsZSxvKXt2YXIgcj10LmdldFJvb3QobikuZ2V0T3Iobi5lbGVtZW50KCkpO2JpKHIsdC5pbnZhbGlkQ2xhc3MpLHQubm90aWZ5LmVhY2goZnVuY3Rpb24odCl7eXkobi5lbGVtZW50KCkpJiZCcihuLmVsZW1lbnQoKSwiYXJpYS1pbnZhbGlkIiwhMCksdC5nZXRDb250YWluZXIobikuZWFjaChmdW5jdGlvbih0KXtrcih0LG8pfSksdC5vbkludmFsaWQobixvKX0pfSxTeT1mdW5jdGlvbihuLHQsZSl7cmV0dXJuIHQudmFsaWRhdG9yLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm4gdnkob3QudmFsdWUoITApKX0sZnVuY3Rpb24odCl7cmV0dXJuIHQudmFsaWRhdGUobil9KX0sa3k9ZnVuY3Rpb24obixlLHQpe3JldHVybiBlLm5vdGlmeS5lYWNoKGZ1bmN0aW9uKHQpe3Qub25WYWxpZGF0ZShuKX0pLFN5KG4sZSkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBuLmdldFN5c3RlbSgpLmlzQ29ubmVjdGVkKCk/dC5mb2xkKGZ1bmN0aW9uKHQpe3JldHVybiB3eShuLGUsMCx0KSxvdC5lcnJvcih0KX0sZnVuY3Rpb24odCl7cmV0dXJuIHh5KG4sZSksb3QudmFsdWUodCl9KTpvdC5lcnJvcigiTm8gbG9uZ2VyIGluIHN5c3RlbSIpfSl9LEN5PS8qICovT2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsbWFya1ZhbGlkOnh5LG1hcmtJbnZhbGlkOnd5LHF1ZXJ5OlN5LHJ1bjpreSxpc0ludmFsaWQ6ZnVuY3Rpb24odCxuKXt2YXIgZT1uLmdldFJvb3QodCkuZ2V0T3IodC5lbGVtZW50KCkpO3JldHVybiB3aShlLG4uaW52YWxpZENsYXNzKX19KSxPeT0vKiAqL09iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLGV2ZW50czpmdW5jdGlvbihuLHQpe3JldHVybiBuLnZhbGlkYXRvci5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIFlvKFtKbyh0Lm9uRXZlbnQsZnVuY3Rpb24odCl7a3kodCxuKS5nZXQoY3QpfSldLmNvbmNhdCh0LnZhbGlkYXRlT25Mb2FkP1tvcihmdW5jdGlvbih0KXtreSh0LG4pLmdldChaKX0pXTpbXSkpfSkuZ2V0T3Ioe30pfX0pLF95PVt6bigiaW52YWxpZENsYXNzIiksWm4oImdldFJvb3QiLHN0Lm5vbmUpLFFuKCJub3RpZnkiLFtabigiYXJpYSIsImFsZXJ0IiksWm4oImdldENvbnRhaW5lciIsc3Qubm9uZSksWm4oInZhbGlkSHRtbCIsIiIpLCR1KCJvblZhbGlkIiksJHUoIm9uSW52YWxpZCIpLCR1KCJvblZhbGlkYXRlIildKSxRbigidmFsaWRhdG9yIixbem4oInZhbGlkYXRlIiksWm4oIm9uRXZlbnQiLCJpbnB1dCIpLFpuKCJ2YWxpZGF0ZU9uTG9hZCIsITApXSldLFR5PUxhKHtmaWVsZHM6X3ksbmFtZToiaW52YWxpZGF0aW5nIixhY3RpdmU6T3ksYXBpczpDeSxleHRyYTp7dmFsaWRhdGlvbjpmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIG49YmwuZ2V0VmFsdWUodCk7cmV0dXJuIHZ5KGUobikpfX19fSksRXk9LyogKi9PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxleGhpYml0OmZ1bmN0aW9uKHQsbil7cmV0dXJuIGlpKHthdHRyaWJ1dGVzOkp0KFt7a2V5Om4udGFiQXR0cix2YWx1ZToidHJ1ZSJ9XSl9KX19KSxCeT1bWm4oInRhYkF0dHIiLCJkYXRhLWFsbG95LXRhYnN0b3AiKV0sRHk9TGEoe2ZpZWxkczpCeSxuYW1lOiJ0YWJzdG9wcGluZyIsYWN0aXZlOkV5fSksTXk9ZnVuY3Rpb24odCxuLGUsbyl7dmFyIHI9QXkodCxuLGUsbyk7cmV0dXJuIGV5LnNrZXRjaChyKX0sQXk9ZnVuY3Rpb24odCxuLGUsbyl7cmV0dXJue2RvbTpGeShlKSxjb21wb25lbnRzOnQudG9BcnJheSgpLmNvbmNhdChbbl0pLGZpZWxkQmVoYXZpb3Vyczp6YShvKX19LEZ5PWZ1bmN0aW9uKHQpe3JldHVybnt0YWc6ImRpdiIsY2xhc3NlczpbInRveC1mb3JtX19ncm91cCJdLmNvbmNhdCh0KX19LEl5PWZ1bmN0aW9uKHQsbil7cmV0dXJuIGV5LnBhcnRzKCkubGFiZWwoe2RvbTp7dGFnOiJsYWJlbCIsY2xhc3NlczpbInRveC1sYWJlbCJdLGlubmVySHRtbDpuLnRyYW5zbGF0ZSh0KX19KX0sUnk9LyogKi9PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxnZXRDb3VwbGVkOmZ1bmN0aW9uKHQsbixlLG8pe3JldHVybiBlLmdldE9yQ3JlYXRlKHQsbixvKX19KSxWeT1bTm4oIm90aGVycyIsa24ob3QudmFsdWUsRG4oKSkpXSxIeT1MYSh7ZmllbGRzOlZ5LG5hbWU6ImNvdXBsaW5nIixhcGlzOlJ5LHN0YXRlOi8qICovT2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsaW5pdDpmdW5jdGlvbigpe3ZhciBpPXt9LHQ9YXQoe30pO3JldHVybiBvaSh7cmVhZFN0YXRlOnQsZ2V0T3JDcmVhdGU6ZnVuY3Rpb24oZSxvLHIpe3ZhciB0PWx0KG8ub3RoZXJzKTtpZih0KXJldHVybiBidChpLHIpLmdldE9yVGh1bmsoZnVuY3Rpb24oKXt2YXIgdD1idChvLm90aGVycyxyKS5nZXRPckRpZSgiTm8gaW5mb3JtYXRpb24gZm91bmQgZm9yIGNvdXBsZWQgY29tcG9uZW50OiAiK3IpKGUpLG49ZS5nZXRTeXN0ZW0oKS5idWlsZCh0KTtyZXR1cm4gaVtyXT1ufSk7dGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZmluZCBjb3VwbGVkIGNvbXBvbmVudDogIityKyIuIEtub3duIGNvdXBsZWQgY29tcG9uZW50czogIitKU09OLnN0cmluZ2lmeSh0LG51bGwsMikpfX0pfX0pfSksUHk9YXQoInNpbmsiKSx6eT1hdChKbCh7bmFtZTpQeSgpLG92ZXJyaWRlczphdCh7ZG9tOnt0YWc6ImRpdiJ9LGJlaGF2aW91cnM6emEoW0RzLmNvbmZpZyh7dXNlRml4ZWQ6aX0pXSksZXZlbnRzOllvKFtucihhbygpKSxucih0bygpKSxucihmbygpKV0pfSl9KSk7KGx5PXN5PXN5fHx7fSlbbHkuSGlnaGxpZ2h0Rmlyc3Q9MF09IkhpZ2hsaWdodEZpcnN0IixseVtseS5IaWdobGlnaHROb25lPTFdPSJIaWdobGlnaHROb25lIjt2YXIgTnk9ZnVuY3Rpb24odCxuKXt2YXIgZT10LmdldEhvdHNwb3QobikuZ2V0T3Iobiksbz10LmdldEFuY2hvck92ZXJyaWRlcygpO3JldHVybiB0LmxheW91dHMuZm9sZChmdW5jdGlvbigpe3JldHVybnthbmNob3I6ImhvdHNwb3QiLGhvdHNwb3Q6ZSxvdmVycmlkZXM6b319LGZ1bmN0aW9uKHQpe3JldHVybnthbmNob3I6ImhvdHNwb3QiLGhvdHNwb3Q6ZSxvdmVycmlkZXM6byxsYXlvdXRzOnR9fSl9LEx5PWZ1bmN0aW9uKHQsbixlLG8scixpLHUpe3ZhciBhLGMscyxsLGYsZCxtLGcscCxoLHY9TnkodCxlKTtyZXR1cm4oYz12LGw9byxmPXIsZD11LG09bixnPXM9ZSxwPSgwLChhPXQpLmZldGNoKShnKS5tYXAobSksaD1HeShzLGEpLHAubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LmJpbmQoZnVuY3Rpb24odCl7cmV0dXJuIHN0LmZyb20oRWcuc2tldGNoKGV0KGV0KHt9LGYubWVudSgpKSx7dWlkOllyKCIiKSxkYXRhOnQsaGlnaGxpZ2h0SW1tZWRpYXRlbHk6ZD09PXN5LkhpZ2hsaWdodEZpcnN0LG9uT3Blbk1lbnU6ZnVuY3Rpb24odCxuKXt2YXIgZT1oKCkuZ2V0T3JEaWUoKTtEcy5wb3NpdGlvbihlLGMsbiksUXMuZGVjbG9hayhsKX0sb25PcGVuU3VibWVudTpmdW5jdGlvbih0LG4sZSl7dmFyIG89aCgpLmdldE9yRGllKCk7RHMucG9zaXRpb24obyx7YW5jaG9yOiJzdWJtZW51IixpdGVtOm59LGUpLFFzLmRlY2xvYWsobCl9LG9uUmVwb3NpdGlvbk1lbnU6ZnVuY3Rpb24odCxuLGUpe3ZhciBvPWgoKS5nZXRPckRpZSgpO0RzLnBvc2l0aW9uKG8sYyxuKSxpdChlLGZ1bmN0aW9uKHQpe0RzLnBvc2l0aW9uKG8se2FuY2hvcjoic3VibWVudSIsaXRlbTp0LnRyaWdnZXJpbmdJdGVtfSx0LnRyaWdnZXJlZE1lbnUpfSl9LG9uRXNjYXBlOmZ1bmN0aW9uKCl7cmV0dXJuIFhtLmZvY3VzKHMpLFFzLmNsb3NlKGwpLHN0LnNvbWUoITApfX0pKSl9KX0pKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQuZm9sZChmdW5jdGlvbigpe1FzLmlzT3BlbihvKSYmUXMuY2xvc2Uobyl9LGZ1bmN0aW9uKHQpe1FzLmNsb2FrKG8pLFFzLm9wZW4obyx0KSxpKG8pfSksb30pfSxqeT1mdW5jdGlvbih0LG4sZSxvLHIsaSx1KXtyZXR1cm4gUXMuY2xvc2Uobyksdnkobyl9LFV5PWZ1bmN0aW9uKHQsbixlLG8scixpKXt2YXIgdT1IeS5nZXRDb3VwbGVkKGUsInNhbmRib3giKTtyZXR1cm4oUXMuaXNPcGVuKHUpP2p5Okx5KSh0LG4sZSx1LG8scixpKX0sV3k9ZnVuY3Rpb24odCxuLGUpe3ZhciBvLHIsaT1NZi5nZXRDdXJyZW50KG4pLmdldE9yKG4pLHU9Y3UodC5lbGVtZW50KCkpO2U/RGkoaS5lbGVtZW50KCksIm1pbi13aWR0aCIsdSsicHgiKToobz1pLmVsZW1lbnQoKSxyPXUsYXUuc2V0KG8scikpfSxHeT1mdW5jdGlvbihuLHQpe3JldHVybiBuLmdldFN5c3RlbSgpLmdldEJ5VWlkKHQudWlkKyItIitQeSgpKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG90LnZhbHVlKHQpfX0pLmdldE9yVGh1bmsoZnVuY3Rpb24oKXtyZXR1cm4gdC5sYXp5U2luay5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG90LmVycm9yKG5ldyBFcnJvcigiTm8gaW50ZXJuYWwgc2luayBpcyBzcGVjaWZpZWQsIG5vciBjb3VsZCBhbiBleHRlcm5hbCBzaW5rIGJlIGZvdW5kIikpfX0sZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQobil9fSl9KX0sWHk9ZnVuY3Rpb24odCl7UXMuZ2V0U3RhdGUodCkuZWFjaChmdW5jdGlvbih0KXtFZy5yZXBvc2l0aW9uTWVudXModCl9KX0sWXk9ZnVuY3Rpb24obyxyLGkpe3ZhciB1PUZ1KCksdD1HeShyLG8pO3JldHVybntkb206e3RhZzoiZGl2IixjbGFzc2VzOm8uc2FuZGJveENsYXNzZXMsYXR0cmlidXRlczp7aWQ6dS5pZCxyb2xlOiJsaXN0Ym94In19LGJlaGF2aW91cnM6a2woby5zYW5kYm94QmVoYXZpb3VycyxbYmwuY29uZmlnKHtzdG9yZTp7bW9kZToibWVtb3J5Iixpbml0aWFsVmFsdWU6cn19KSxRcy5jb25maWcoe29uT3BlbjpmdW5jdGlvbih0LG4pe3ZhciBlPU55KG8scik7dS5saW5rKHIuZWxlbWVudCgpKSxvLm1hdGNoV2lkdGgmJld5KGUuaG90c3BvdCxuLG8udXNlTWluV2lkdGgpLG8ub25PcGVuKGUsdCxuKSxpIT09dW5kZWZpbmVkJiZpLm9uT3BlbiE9PXVuZGVmaW5lZCYmaS5vbk9wZW4odCxuKX0sb25DbG9zZTpmdW5jdGlvbih0LG4pe3UudW5saW5rKHIuZWxlbWVudCgpKSxpIT09dW5kZWZpbmVkJiZpLm9uQ2xvc2UhPT11bmRlZmluZWQmJmkub25DbG9zZSh0LG4pfSxpc1BhcnRPZjpmdW5jdGlvbih0LG4sZSl7cmV0dXJuIFJ1KG4sZSl8fFJ1KHIsZSl9LGdldEF0dGFjaFBvaW50OmZ1bmN0aW9uKCl7cmV0dXJuIHQoKS5nZXRPckRpZSgpfX0pLE1mLmNvbmZpZyh7ZmluZDpmdW5jdGlvbih0KXtyZXR1cm4gUXMuZ2V0U3RhdGUodCkuYmluZChmdW5jdGlvbih0KXtyZXR1cm4gTWYuZ2V0Q3VycmVudCh0KX0pfX0pLFlhLmNvbmZpZyh7Y2hhbm5lbHM6ZXQoZXQoe30sb2woe2lzRXh0cmFQYXJ0OmN9KSksaWwoe2RvUmVwb3NpdGlvbjpYeX0pKX0pXSl9fSxxeT1mdW5jdGlvbih0KXt2YXIgbj1IeS5nZXRDb3VwbGVkKHQsInNhbmRib3giKTtYeShuKX0sS3k9ZnVuY3Rpb24oKXtyZXR1cm5bWm4oInNhbmRib3hDbGFzc2VzIixbXSksU2woInNhbmRib3hCZWhhdmlvdXJzIixbTWYsWWEsUXMsYmxdKV19LEp5PWF0KFt6bigiZG9tIiksem4oImZldGNoIiksJHUoIm9uT3BlbiIpLFF1KCJvbkV4ZWN1dGUiKSxabigiZ2V0SG90c3BvdCIsc3Quc29tZSksWm4oImdldEFuY2hvck92ZXJyaWRlcyIsYXQoe30pKSxUYygpLHlsKCJkcm9wZG93bkJlaGF2aW91cnMiLFtyZyxIeSxSbSxYbV0pLHpuKCJ0b2dnbGVDbGFzcyIpLFpuKCJldmVudE9yZGVyIix7fSksWW4oImxhenlTaW5rIiksWm4oIm1hdGNoV2lkdGgiLCExKSxabigidXNlTWluV2lkdGgiLCExKSxZbigicm9sZSIpXS5jb25jYXQoS3koKSkpLCR5PWF0KFtLbCh7c2NoZW1hOltxdSgpXSxuYW1lOiJtZW51IixkZWZhdWx0czpmdW5jdGlvbih0KXtyZXR1cm57b25FeGVjdXRlOnQub25FeGVjdXRlfX19KSx6eSgpXSksUXk9X2Yoe25hbWU6IkRyb3Bkb3duIixjb25maWdGaWVsZHM6SnkoKSxwYXJ0RmllbGRzOiR5KCksZmFjdG9yeTpmdW5jdGlvbihuLHQsZSxvKXt2YXIgcixpLHU9ZnVuY3Rpb24odCl7UXMuZ2V0U3RhdGUodCkuZWFjaChmdW5jdGlvbih0KXtFZy5oaWdobGlnaHRQcmltYXJ5KHQpfSl9LGE9e2V4cGFuZDpmdW5jdGlvbih0KXtyZy5pc09uKHQpfHxVeShuLGZ1bmN0aW9uKHQpe3JldHVybiB0fSx0LG8sWixzeS5IaWdobGlnaHROb25lKS5nZXQoWil9LG9wZW46ZnVuY3Rpb24odCl7cmcuaXNPbih0KXx8VXkobixmdW5jdGlvbih0KXtyZXR1cm4gdH0sdCxvLFosc3kuSGlnaGxpZ2h0Rmlyc3QpLmdldChaKX0saXNPcGVuOnJnLmlzT24sY2xvc2U6ZnVuY3Rpb24odCl7cmcuaXNPbih0KSYmVXkobixmdW5jdGlvbih0KXtyZXR1cm4gdH0sdCxvLFosc3kuSGlnaGxpZ2h0Rmlyc3QpLmdldChaKX0scmVwb3NpdGlvbk1lbnVzOmZ1bmN0aW9uKHQpe3JnLmlzT24odCkmJnF5KHQpfX0sYz1mdW5jdGlvbih0LG4pe3JldHVybiBVbyh0KSxzdC5zb21lKCEwKX07cmV0dXJue3VpZDpuLnVpZCxkb206bi5kb20sY29tcG9uZW50czp0LGJlaGF2aW91cnM6d2wobi5kcm9wZG93bkJlaGF2aW91cnMsW3JnLmNvbmZpZyh7dG9nZ2xlQ2xhc3M6bi50b2dnbGVDbGFzcyxhcmlhOnttb2RlOiJleHBhbmRlZCJ9fSksSHkuY29uZmlnKHtvdGhlcnM6e3NhbmRib3g6ZnVuY3Rpb24odCl7cmV0dXJuIFl5KG4sdCx7b25PcGVuOmZ1bmN0aW9uKCl7cmcub24odCl9LG9uQ2xvc2U6ZnVuY3Rpb24oKXtyZy5vZmYodCl9fSl9fX0pLFJtLmNvbmZpZyh7bW9kZToic3BlY2lhbCIsb25TcGFjZTpjLG9uRW50ZXI6YyxvbkRvd246ZnVuY3Rpb24odCxuKXtpZihReS5pc09wZW4odCkpe3ZhciBlPUh5LmdldENvdXBsZWQodCwic2FuZGJveCIpO3UoZSl9ZWxzZSBReS5vcGVuKHQpO3JldHVybiBzdC5zb21lKCEwKX0sb25Fc2NhcGU6ZnVuY3Rpb24odCxuKXtyZXR1cm4gUXkuaXNPcGVuKHQpPyhReS5jbG9zZSh0KSxzdC5zb21lKCEwKSk6c3Qubm9uZSgpfX0pLFhtLmNvbmZpZyh7fSldKSxldmVudHM6dWcoc3Quc29tZShmdW5jdGlvbih0KXtVeShuLGZ1bmN0aW9uKHQpe3JldHVybiB0fSx0LG8sdSxzeS5IaWdobGlnaHRGaXJzdCkuZ2V0KFopfSkpLGV2ZW50T3JkZXI6ZXQoZXQoe30sbi5ldmVudE9yZGVyKSwoKHI9e30pW3hvKCldPVsiZGlzYWJsaW5nIiwidG9nZ2xpbmciLCJhbGxveS5iYXNlLmJlaGF2aW91ciJdLHIpKSxhcGlzOmEsZG9tTW9kaWZpY2F0aW9uOnthdHRyaWJ1dGVzOmV0KGV0KHsiYXJpYS1oYXNwb3B1cCI6InRydWUifSxuLnJvbGUuZm9sZChmdW5jdGlvbigpe3JldHVybnt9fSxmdW5jdGlvbih0KXtyZXR1cm57cm9sZTp0fX0pKSwiYnV0dG9uIj09PW4uZG9tLnRhZz97dHlwZTooaT0idHlwZSIsYnQobi5kb20sImF0dHJpYnV0ZXMiKS5iaW5kKGZ1bmN0aW9uKHQpe3JldHVybiBidCh0LGkpfSkuZ2V0T3IoImJ1dHRvbiIpKX06e30pfX19LGFwaXM6e29wZW46ZnVuY3Rpb24odCxuKXtyZXR1cm4gdC5vcGVuKG4pfSxleHBhbmQ6ZnVuY3Rpb24odCxuKXtyZXR1cm4gdC5leHBhbmQobil9LGNsb3NlOmZ1bmN0aW9uKHQsbil7cmV0dXJuIHQuY2xvc2Uobil9LGlzT3BlbjpmdW5jdGlvbih0LG4pe3JldHVybiB0LmlzT3BlbihuKX0scmVwb3NpdGlvbk1lbnVzOmZ1bmN0aW9uKHQsbil7cmV0dXJuIHQucmVwb3NpdGlvbk1lbnVzKG4pfX19KSxaeT1MYSh7ZmllbGRzOltdLG5hbWU6InVuc2VsZWN0aW5nIixhY3RpdmU6LyogKi9PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxldmVudHM6ZnVuY3Rpb24oKXtyZXR1cm4gWW8oW3FvKGdvKCksYXQoITApKV0pfSxleGhpYml0OmZ1bmN0aW9uKCl7cmV0dXJuIGlpKHtzdHlsZXM6eyItd2Via2l0LXVzZXItc2VsZWN0Ijoibm9uZSIsInVzZXItc2VsZWN0Ijoibm9uZSIsIi1tcy11c2VyLXNlbGVjdCI6Im5vbmUiLCItbW96LXVzZXItc2VsZWN0IjoiLW1vei1ub25lIn0sYXR0cmlidXRlczp7dW5zZWxlY3RhYmxlOiJvbiJ9fSl9fSl9KSx0eD1OcigiY29sb3ItaW5wdXQtY2hhbmdlIiksbng9TnIoImNvbG9yLXN3YXRjaC1jaGFuZ2UiKSxleD1OcigiY29sb3ItcGlja2VyLWNhbmNlbCIpLG94PWZ1bmN0aW9uKGUsbixvKXt2YXIgcixpLHQ9ZXkucGFydHMoKS5maWVsZCh7ZmFjdG9yeTp1eSxpbnB1dENsYXNzZXM6WyJ0b3gtdGV4dGZpZWxkIl0sb25TZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gVHkucnVuKHQpLmdldChmdW5jdGlvbigpe30pfSxpbnB1dEJlaGF2aW91cnM6emEoW3BoLmNvbmZpZyh7ZGlzYWJsZWQ6bi5wcm92aWRlcnMuaXNSZWFkT25seX0pLFVoKCksRHkuY29uZmlnKHt9KSxUeS5jb25maWcoe2ludmFsaWRDbGFzczoidG94LXRleHRib3gtZmllbGQtaW52YWxpZCIsZ2V0Um9vdDpmdW5jdGlvbih0KXtyZXR1cm4gbHIodC5lbGVtZW50KCkpfSxub3RpZnk6e29uVmFsaWQ6ZnVuY3Rpb24odCl7dmFyIG49YmwuZ2V0VmFsdWUodCk7am8odCx0eCx7Y29sb3I6bn0pfX0sdmFsaWRhdG9yOnt2YWxpZGF0ZU9uTG9hZDohMSx2YWxpZGF0ZTpmdW5jdGlvbih0KXt2YXIgbj1ibC5nZXRWYWx1ZSh0KTtpZigwPT09bi5sZW5ndGgpcmV0dXJuIHZ5KG90LnZhbHVlKCEwKSk7dmFyIGU9bGUuZnJvbVRhZygic3BhbiIpO0RpKGUsImJhY2tncm91bmQtY29sb3IiLG4pO3ZhciBvPVJpKGUsImJhY2tncm91bmQtY29sb3IiKS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIG90LmVycm9yKCJibGFoIil9LGZ1bmN0aW9uKHQpe3JldHVybiBvdC52YWx1ZShuKX0pO3JldHVybiB2eShvKX19fSldKSxzZWxlY3RPbkZvY3VzOiExfSksdT1lLmxhYmVsLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gSXkodCxuLnByb3ZpZGVycyl9KSxhPWZ1bmN0aW9uKHQsbil7am8odCxueCx7dmFsdWU6bn0pfSxjPVVnKChyPXtkb206e3RhZzoic3BhbiIsYXR0cmlidXRlczp7ImFyaWEtbGFiZWwiOm4ucHJvdmlkZXJzLnRyYW5zbGF0ZSgiQ29sb3Igc3dhdGNoIil9fSxsYXlvdXRzOntvblJ0bDpmdW5jdGlvbigpe3JldHVybltTYSx3YSxfYV19LG9uTHRyOmZ1bmN0aW9uKCl7cmV0dXJuW3dhLFNhLF9hXX19LGNvbXBvbmVudHM6W10sZmV0Y2g6enYoby5nZXRDb2xvcnMoKSxvLmhhc0N1c3RvbUNvbG9ycygpKSxjb2x1bW5zOm8uZ2V0Q29sb3JDb2xzKCkscHJlc2V0czoiY29sb3IiLG9uSXRlbUFjdGlvbjpmdW5jdGlvbih0LGUpe2MuZ2V0T3B0KHQpLmVhY2goZnVuY3Rpb24obil7ImN1c3RvbSI9PT1lP28uY29sb3JQaWNrZXIoZnVuY3Rpb24odCl7dC5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIExvKG4sZXgpfSxmdW5jdGlvbih0KXthKG4sdCksRnYodCl9KX0sIiNmZmZmZmYiKTphKG4sInJlbW92ZSI9PT1lPyIiOmUpfSl9fSxpPW4sUXkuc2tldGNoKHtkb206ci5kb20sY29tcG9uZW50czpyLmNvbXBvbmVudHMsdG9nZ2xlQ2xhc3M6Im1jZS1hY3RpdmUiLGRyb3Bkb3duQmVoYXZpb3Vyczp6YShbR2goaS5wcm92aWRlcnMuaXNSZWFkT25seSksVWgoKSxaeS5jb25maWcoe30pLER5LmNvbmZpZyh7fSldKSxsYXlvdXRzOnIubGF5b3V0cyxzYW5kYm94Q2xhc3NlczpbInRveC1kaWFsb2dfX3BvcHVwcyJdLGxhenlTaW5rOmkuZ2V0U2luayxmZXRjaDpmdW5jdGlvbihuKXtyZXR1cm4gaHkoZnVuY3Rpb24odCl7cmV0dXJuIHIuZmV0Y2godCl9KS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHN0LmZyb20oaGIoQ3QobmIoTnIoIm1lbnUtdmFsdWUiKSx0LGZ1bmN0aW9uKHQpe3Iub25JdGVtQWN0aW9uKG4sdCl9LHIuY29sdW1ucyxyLnByZXNldHMsJGguQ0xPU0VfT05fRVhFQ1VURSxmdW5jdGlvbigpe3JldHVybiExfSxpLnByb3ZpZGVycykse21vdmVtZW50Om9iKHIuY29sdW1ucyxyLnByZXNldHMpfSkpKX0pfSxwYXJ0czp7bWVudTpZdigwLDAsci5wcmVzZXRzKX19KSkpO3JldHVybiBleS5za2V0Y2goe2RvbTp7dGFnOiJkaXYiLGNsYXNzZXM6WyJ0b3gtZm9ybV9fZ3JvdXAiXX0sY29tcG9uZW50czp1LnRvQXJyYXkoKS5jb25jYXQoW3tkb206e3RhZzoiZGl2IixjbGFzc2VzOlsidG94LWNvbG9yLWlucHV0Il19LGNvbXBvbmVudHM6W3QsYy5hc1NwZWMoKV19XSksZmllbGRCZWhhdmlvdXJzOnphKFtMbSgiZm9ybS1maWVsZC1ldmVudHMiLFtKbyh0eCxmdW5jdGlvbih0LG4pe2MuZ2V0T3B0KHQpLmVhY2goZnVuY3Rpb24odCl7RGkodC5lbGVtZW50KCksImJhY2tncm91bmQtY29sb3IiLG4uZXZlbnQoKS5jb2xvcigpKX0pLGpvKHQsR2Ise25hbWU6ZS5uYW1lfSl9KSxKbyhueCxmdW5jdGlvbihuLGUpe2V5LmdldEZpZWxkKG4pLmVhY2goZnVuY3Rpb24odCl7Ymwuc2V0VmFsdWUodCxlLmV2ZW50KCkudmFsdWUoKSksTWYuZ2V0Q3VycmVudChuKS5lYWNoKFhtLmZvY3VzKX0pfSksSm8oZXgsZnVuY3Rpb24obix0KXtleS5nZXRGaWVsZChuKS5lYWNoKGZ1bmN0aW9uKHQpe01mLmdldEN1cnJlbnQobikuZWFjaChYbS5mb2N1cyl9KX0pXSldKX0pfSxyeD1mdW5jdGlvbih0LG4sZSl7cmV0dXJue2h1ZTp0LHNhdHVyYXRpb246bix2YWx1ZTplfX0saXg9TnIoInJnYi1oZXgtdXBkYXRlIiksdXg9TnIoInNsaWRlci11cGRhdGUiKSxheD1OcigicGFsZXR0ZS11cGRhdGUiKSxjeD1KbCh7c2NoZW1hOlt6bigiZG9tIildLG5hbWU6ImxhYmVsIn0pLHN4PWZ1bmN0aW9uKG4pe3JldHVybiBKbCh7bmFtZTpuKyItZWRnZSIsb3ZlcnJpZGVzOmZ1bmN0aW9uKHQpe3JldHVybiB0Lm1vZGVsLm1hbmFnZXIuZWRnZUFjdGlvbnNbbl0uZm9sZChmdW5jdGlvbigpe3JldHVybnt9fSxmdW5jdGlvbihvKXtyZXR1cm57ZXZlbnRzOllvKFskbyhKZSgpLGZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gbyh0LGUpfSxbdF0pLCRvKHRvKCksZnVuY3Rpb24odCxuLGUpe3JldHVybiBvKHQsZSl9LFt0XSksJG8obm8oKSxmdW5jdGlvbih0LG4sZSl7ZS5tb3VzZUlzRG93bi5nZXQoKSYmbyh0LGUpfSxbdF0pXSl9fSl9fSl9LGx4PXN4KCJ0b3AtbGVmdCIpLGZ4PXN4KCJ0b3AiKSxkeD1zeCgidG9wLXJpZ2h0IiksbXg9c3goInJpZ2h0IiksZ3g9c3goImJvdHRvbS1yaWdodCIpLHB4PXN4KCJib3R0b20iKSxoeD1zeCgiYm90dG9tLWxlZnQiKSx2eD1bY3gsc3goImxlZnQiKSxteCxmeCxweCxseCxkeCxoeCxneCxxbCh7bmFtZToidGh1bWIiLGRlZmF1bHRzOmF0KHtkb206e3N0eWxlczp7cG9zaXRpb246ImFic29sdXRlIn19fSksb3ZlcnJpZGVzOmZ1bmN0aW9uKHQpe3JldHVybntldmVudHM6WW8oW1pvKEplKCksdCwic3BlY3RydW0iKSxabygkZSgpLHQsInNwZWN0cnVtIiksWm8oUWUoKSx0LCJzcGVjdHJ1bSIpLFpvKHRvKCksdCwic3BlY3RydW0iKSxabyhubygpLHQsInNwZWN0cnVtIiksWm8ob28oKSx0LCJzcGVjdHJ1bSIpXSl9fX0pLHFsKHtzY2hlbWE6W2FlKCJtb3VzZUlzRG93biIsZnVuY3Rpb24oKXtyZXR1cm4gY2UoITEpfSldLG5hbWU6InNwZWN0cnVtIixvdmVycmlkZXM6ZnVuY3Rpb24oZSl7dmFyIG89ZS5tb2RlbC5tYW5hZ2VyLHI9ZnVuY3Rpb24obix0KXtyZXR1cm4gby5nZXRWYWx1ZUZyb21FdmVudCh0KS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIG8uc2V0VmFsdWVGcm9tKG4sZSx0KX0pfTtyZXR1cm57YmVoYXZpb3Vyczp6YShbUm0uY29uZmlnKHttb2RlOiJzcGVjaWFsIixvbkxlZnQ6ZnVuY3Rpb24odCl7cmV0dXJuIG8ub25MZWZ0KHQsZSl9LG9uUmlnaHQ6ZnVuY3Rpb24odCl7cmV0dXJuIG8ub25SaWdodCh0LGUpfSxvblVwOmZ1bmN0aW9uKHQpe3JldHVybiBvLm9uVXAodCxlKX0sb25Eb3duOmZ1bmN0aW9uKHQpe3JldHVybiBvLm9uRG93bih0LGUpfX0pLFhtLmNvbmZpZyh7fSldKSxldmVudHM6WW8oW0pvKEplKCksciksSm8oJGUoKSxyKSxKbyh0bygpLHIpLEpvKG5vKCksZnVuY3Rpb24odCxuKXtlLm1vdXNlSXNEb3duLmdldCgpJiZyKHQsbil9KV0pfX19KV0sYng9YXQoInNsaWRlci5jaGFuZ2UudmFsdWUiKSx5eD1mdW5jdGlvbih0KXt2YXIgbj10LmV2ZW50KCkucmF3KCk7aWYoLTEhPT1uLnR5cGUuaW5kZXhPZigidG91Y2giKSl7cmV0dXJuIG4udG91Y2hlcyE9PXVuZGVmaW5lZCYmMT09PW4udG91Y2hlcy5sZW5ndGg/c3Quc29tZShuLnRvdWNoZXNbMF0pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gb3UodC5jbGllbnRYLHQuY2xpZW50WSl9KTpzdC5ub25lKCl9cmV0dXJuIG4uY2xpZW50WCE9PXVuZGVmaW5lZD9zdC5zb21lKG4pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gb3UodC5jbGllbnRYLHQuY2xpZW50WSl9KTpzdC5ub25lKCl9LHh4PWZ1bmN0aW9uKHQpe3JldHVybiB0Lm1vZGVsLm1pblh9LHd4PWZ1bmN0aW9uKHQpe3JldHVybiB0Lm1vZGVsLm1pbll9LFN4PWZ1bmN0aW9uKHQpe3JldHVybiB0Lm1vZGVsLm1pblgtMX0sa3g9ZnVuY3Rpb24odCl7cmV0dXJuIHQubW9kZWwubWluWS0xfSxDeD1mdW5jdGlvbih0KXtyZXR1cm4gdC5tb2RlbC5tYXhYfSxPeD1mdW5jdGlvbih0KXtyZXR1cm4gdC5tb2RlbC5tYXhZfSxfeD1mdW5jdGlvbih0KXtyZXR1cm4gdC5tb2RlbC5tYXhYKzF9LFR4PWZ1bmN0aW9uKHQpe3JldHVybiB0Lm1vZGVsLm1heFkrMX0sRXg9ZnVuY3Rpb24odCxuLGUpe3JldHVybiBuKHQpLWUodCl9LEJ4PWZ1bmN0aW9uKHQpe3JldHVybiBFeCh0LEN4LHh4KX0sRHg9ZnVuY3Rpb24odCl7cmV0dXJuIEV4KHQsT3gsd3gpfSxNeD1mdW5jdGlvbih0KXtyZXR1cm4gQngodCkvMn0sQXg9ZnVuY3Rpb24odCl7cmV0dXJuIER4KHQpLzJ9LEZ4PWZ1bmN0aW9uKHQpe3JldHVybiB0LnN0ZXBTaXplfSxJeD1mdW5jdGlvbih0KXtyZXR1cm4gdC5zbmFwVG9HcmlkfSxSeD1mdW5jdGlvbih0KXtyZXR1cm4gdC5zbmFwU3RhcnR9LFZ4PWZ1bmN0aW9uKHQpe3JldHVybiB0LnJvdW5kZWR9LEh4PWZ1bmN0aW9uKHQsbil7cmV0dXJuIHRbbisiLWVkZ2UiXSE9PXVuZGVmaW5lZH0sUHg9ZnVuY3Rpb24odCl7cmV0dXJuIEh4KHQsImxlZnQiKX0seng9ZnVuY3Rpb24odCl7cmV0dXJuIEh4KHQsInJpZ2h0Iil9LE54PWZ1bmN0aW9uKHQpe3JldHVybiBIeCh0LCJ0b3AiKX0sTHg9ZnVuY3Rpb24odCl7cmV0dXJuIEh4KHQsImJvdHRvbSIpfSxqeD1mdW5jdGlvbih0KXtyZXR1cm4gdC5tb2RlbC52YWx1ZS5nZXQoKX0sVXg9ZnVuY3Rpb24odCl7cmV0dXJue3g6YXQodCl9fSxXeD1mdW5jdGlvbih0KXtyZXR1cm57eTphdCh0KX19LEd4PWZ1bmN0aW9uKHQsbil7cmV0dXJue3g6YXQodCkseTphdChuKX19LFh4PWZ1bmN0aW9uKHQsbil7am8odCxieCgpLHt2YWx1ZTpufSl9LFl4PWZ1bmN0aW9uKHQsbixlLG8pe3JldHVybiB0PG4/dDplPHQ/ZTp0PT09bj9uLTE6TWF0aC5tYXgobix0LW8pfSxxeD1mdW5jdGlvbih0LG4sZSxvKXtyZXR1cm4gZTx0P3Q6dDxuP246dD09PWU/ZSsxOk1hdGgubWluKGUsdCtvKX0sS3g9ZnVuY3Rpb24odCxuLGUpe3JldHVybiBNYXRoLm1heChuLE1hdGgubWluKGUsdCkpfSxKeD1mdW5jdGlvbih0KXt2YXIgbj10Lm1pbixlPXQubWF4LG89dC5yYW5nZSxyPXQudmFsdWUsaT10LnN0ZXAsdT10LnNuYXAsYT10LnNuYXBTdGFydCxjPXQucm91bmRlZCxzPXQuaGFzTWluRWRnZSxsPXQuaGFzTWF4RWRnZSxmPXQubWluQm91bmQsZD10Lm1heEJvdW5kLG09dC5zY3JlZW5SYW5nZSxnPXM/bi0xOm4scD1sP2UrMTplO2lmKHI8ZilyZXR1cm4gZztpZihkPHIpcmV0dXJuIHA7dmFyIGgsdixiLHkseCx3LFMsaz0oeD1yLHc9ZixTPWQsTWF0aC5taW4oUyxNYXRoLm1heCh4LHcpKS13KSxDPUt4KGsvbSpvK24sZyxwKTtyZXR1cm4gdSYmbjw9QyYmQzw9ZT8oaD1DLHY9bixiPWUseT1pLGEuZm9sZChmdW5jdGlvbigpe3ZhciB0PWgtdixuPU1hdGgucm91bmQodC95KSp5O3JldHVybiBLeCh2K24sdi0xLGIrMSl9LGZ1bmN0aW9uKHQpe3ZhciBuPShoLXQpJXksZT1NYXRoLnJvdW5kKG4veSksbz1NYXRoLmZsb29yKChoLXQpL3kpLHI9TWF0aC5mbG9vcigoYi10KS95KSxpPXQrTWF0aC5taW4ocixvK2UpKnk7cmV0dXJuIE1hdGgubWF4KHQsaSl9KSk6Yz9NYXRoLnJvdW5kKEMpOkN9LCR4PWZ1bmN0aW9uKHQpe3ZhciBuPXQubWluLGU9dC5tYXgsbz10LnJhbmdlLHI9dC52YWx1ZSxpPXQuaGFzTWluRWRnZSx1PXQuaGFzTWF4RWRnZSxhPXQubWF4Qm91bmQsYz10Lm1heE9mZnNldCxzPXQuY2VudGVyTWluRWRnZSxsPXQuY2VudGVyTWF4RWRnZTtyZXR1cm4gcjxuP2k/MDpzOmU8cj91P2E6bDooci1uKS9vKmN9LFF4PSJsZWZ0IixaeD1mdW5jdGlvbih0KXtyZXR1cm4gdC5lbGVtZW50KCkuZG9tKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9LHR3PWZ1bmN0aW9uKHQsbil7cmV0dXJuIHRbbl19LG53PWZ1bmN0aW9uKHQpe3ZhciBuPVp4KHQpO3JldHVybiB0dyhuLFF4KX0sZXc9ZnVuY3Rpb24odCl7dmFyIG49WngodCk7cmV0dXJuIHR3KG4sInJpZ2h0Iil9LG93PWZ1bmN0aW9uKHQpe3ZhciBuPVp4KHQpO3JldHVybiB0dyhuLCJ0b3AiKX0scnc9ZnVuY3Rpb24odCl7dmFyIG49WngodCk7cmV0dXJuIHR3KG4sImJvdHRvbSIpfSxpdz1mdW5jdGlvbih0KXt2YXIgbj1aeCh0KTtyZXR1cm4gdHcobiwid2lkdGgiKX0sdXc9ZnVuY3Rpb24odCl7dmFyIG49WngodCk7cmV0dXJuIHR3KG4sImhlaWdodCIpfSxhdz1mdW5jdGlvbih0LG4sZSl7cmV0dXJuKHQrbikvMi1lfSxjdz1mdW5jdGlvbih0LG4pe3ZhciBlPVp4KHQpLG89Wngobikscj10dyhlLFF4KSxpPXR3KGUsInJpZ2h0IiksdT10dyhvLFF4KTtyZXR1cm4gYXcocixpLHUpfSxzdz1mdW5jdGlvbih0LG4pe3ZhciBlPVp4KHQpLG89Wngobikscj10dyhlLCJ0b3AiKSxpPXR3KGUsImJvdHRvbSIpLHU9dHcobywidG9wIik7cmV0dXJuIGF3KHIsaSx1KX0sbHc9ZnVuY3Rpb24odCxuKXtqbyh0LGJ4KCkse3ZhbHVlOm59KX0sZnc9ZnVuY3Rpb24odCl7cmV0dXJue3g6YXQodCl9fSxkdz1mdW5jdGlvbih0LG4sZSl7dmFyIG89e21pbjp4eChuKSxtYXg6Q3gobikscmFuZ2U6QngobiksdmFsdWU6ZSxzdGVwOkZ4KG4pLHNuYXA6SXgobiksc25hcFN0YXJ0OlJ4KG4pLHJvdW5kZWQ6VngobiksaGFzTWluRWRnZTpQeChuKSxoYXNNYXhFZGdlOnp4KG4pLG1pbkJvdW5kOm53KHQpLG1heEJvdW5kOmV3KHQpLHNjcmVlblJhbmdlOml3KHQpfTtyZXR1cm4gSngobyl9LG13PWZ1bmN0aW9uKGkpe3JldHVybiBmdW5jdGlvbih0LG4pe3JldHVybiBlPXQscj0oMDxpP3F4Oll4KShqeChvPW4pLngoKSx4eChvKSxDeChvKSxGeChvKSksbHcoZSxmdyhyKSksc3Quc29tZShyKS5tYXAoZnVuY3Rpb24oKXtyZXR1cm4hMH0pO3ZhciBlLG8scn19LGd3PWZ1bmN0aW9uKHQsbixlLG8scixpKXt2YXIgdSxhLGMscyxsLGYsZCxtLGcscD0oYT1pLGM9ZSxzPW8sbD1yLGY9aXcodT1uKSxkPXMuYmluZChmdW5jdGlvbih0KXtyZXR1cm4gc3Quc29tZShjdyh0LHUpKX0pLmdldE9yKDApLG09bC5iaW5kKGZ1bmN0aW9uKHQpe3JldHVybiBzdC5zb21lKGN3KHQsdSkpfSkuZ2V0T3IoZiksZz17bWluOnh4KGEpLG1heDpDeChhKSxyYW5nZTpCeChhKSx2YWx1ZTpjLGhhc01pbkVkZ2U6UHgoYSksaGFzTWF4RWRnZTp6eChhKSxtaW5Cb3VuZDpudyh1KSxtaW5PZmZzZXQ6MCxtYXhCb3VuZDpldyh1KSxtYXhPZmZzZXQ6ZixjZW50ZXJNaW5FZGdlOmQsY2VudGVyTWF4RWRnZTptfSwkeChnKSk7cmV0dXJuIG53KG4pLW53KHQpK3B9LHB3PW13KC0xKSxodz1tdygxKSx2dz1zdC5ub25lLGJ3PXN0Lm5vbmUseXc9eyJ0b3AtbGVmdCI6c3Qubm9uZSgpLHRvcDpzdC5ub25lKCksInRvcC1yaWdodCI6c3Qubm9uZSgpLHJpZ2h0OnN0LnNvbWUoZnVuY3Rpb24odCxuKXtYeCh0LFV4KF94KG4pKSl9KSwiYm90dG9tLXJpZ2h0IjpzdC5ub25lKCksYm90dG9tOnN0Lm5vbmUoKSwiYm90dG9tLWxlZnQiOnN0Lm5vbmUoKSxsZWZ0OnN0LnNvbWUoZnVuY3Rpb24odCxuKXtYeCh0LFV4KFN4KG4pKSl9KX0seHc9LyogKi9PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxzZXRWYWx1ZUZyb206ZnVuY3Rpb24odCxuLGUpe3ZhciBvPWR3KHQsbixlKSxyPWZ3KG8pO3JldHVybiBsdyh0LHIpLG99LHNldFRvTWluOmZ1bmN0aW9uKHQsbil7dmFyIGU9eHgobik7bHcodCxmdyhlKSl9LHNldFRvTWF4OmZ1bmN0aW9uKHQsbil7dmFyIGU9Q3gobik7bHcodCxmdyhlKSl9LGZpbmRWYWx1ZU9mT2Zmc2V0OmR3LGdldFZhbHVlRnJvbUV2ZW50OmZ1bmN0aW9uKHQpe3JldHVybiB5eCh0KS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQubGVmdCgpfSl9LGZpbmRQb3NpdGlvbk9mVmFsdWU6Z3csc2V0UG9zaXRpb25Gcm9tVmFsdWU6ZnVuY3Rpb24odCxuLGUsbyl7dmFyIHI9angoZSksaT1ndyh0LG8uZ2V0U3BlY3RydW0odCksci54KCksby5nZXRMZWZ0RWRnZSh0KSxvLmdldFJpZ2h0RWRnZSh0KSxlKSx1PWN1KG4uZWxlbWVudCgpKS8yO0RpKG4uZWxlbWVudCgpLCJsZWZ0IixpLXUrInB4Iil9LG9uTGVmdDpwdyxvblJpZ2h0Omh3LG9uVXA6dncsb25Eb3duOmJ3LGVkZ2VBY3Rpb25zOnl3fSksd3c9ZnVuY3Rpb24odCxuKXtqbyh0LGJ4KCkse3ZhbHVlOm59KX0sU3c9ZnVuY3Rpb24odCl7cmV0dXJue3k6YXQodCl9fSxrdz1mdW5jdGlvbih0LG4sZSl7dmFyIG89e21pbjp3eChuKSxtYXg6T3gobikscmFuZ2U6RHgobiksdmFsdWU6ZSxzdGVwOkZ4KG4pLHNuYXA6SXgobiksc25hcFN0YXJ0OlJ4KG4pLHJvdW5kZWQ6VngobiksaGFzTWluRWRnZTpOeChuKSxoYXNNYXhFZGdlOkx4KG4pLG1pbkJvdW5kOm93KHQpLG1heEJvdW5kOnJ3KHQpLHNjcmVlblJhbmdlOnV3KHQpfTtyZXR1cm4gSngobyl9LEN3PWZ1bmN0aW9uKGkpe3JldHVybiBmdW5jdGlvbih0LG4pe3JldHVybiBlPXQscj0oMDxpP3F4Oll4KShqeChvPW4pLnkoKSx3eChvKSxPeChvKSxGeChvKSksd3coZSxTdyhyKSksc3Quc29tZShyKS5tYXAoZnVuY3Rpb24oKXtyZXR1cm4hMH0pO3ZhciBlLG8scn19LE93PWZ1bmN0aW9uKHQsbixlLG8scixpKXt2YXIgdSxhLGMscyxsLGYsZCxtLGcscD0oYT1pLGM9ZSxzPW8sbD1yLGY9dXcodT1uKSxkPXMuYmluZChmdW5jdGlvbih0KXtyZXR1cm4gc3Quc29tZShzdyh0LHUpKX0pLmdldE9yKDApLG09bC5iaW5kKGZ1bmN0aW9uKHQpe3JldHVybiBzdC5zb21lKHN3KHQsdSkpfSkuZ2V0T3IoZiksZz17bWluOnd4KGEpLG1heDpPeChhKSxyYW5nZTpEeChhKSx2YWx1ZTpjLGhhc01pbkVkZ2U6TngoYSksaGFzTWF4RWRnZTpMeChhKSxtaW5Cb3VuZDpvdyh1KSxtaW5PZmZzZXQ6MCxtYXhCb3VuZDpydyh1KSxtYXhPZmZzZXQ6ZixjZW50ZXJNaW5FZGdlOmQsY2VudGVyTWF4RWRnZTptfSwkeChnKSk7cmV0dXJuIG93KG4pLW93KHQpK3B9LF93PXN0Lm5vbmUsVHc9c3Qubm9uZSxFdz1DdygtMSksQnc9Q3coMSksRHc9eyJ0b3AtbGVmdCI6c3Qubm9uZSgpLHRvcDpzdC5zb21lKGZ1bmN0aW9uKHQsbil7WHgodCxXeChreChuKSkpfSksInRvcC1yaWdodCI6c3Qubm9uZSgpLHJpZ2h0OnN0Lm5vbmUoKSwiYm90dG9tLXJpZ2h0IjpzdC5ub25lKCksYm90dG9tOnN0LnNvbWUoZnVuY3Rpb24odCxuKXtYeCh0LFd4KFR4KG4pKSl9KSwiYm90dG9tLWxlZnQiOnN0Lm5vbmUoKSxsZWZ0OnN0Lm5vbmUoKX0sTXc9LyogKi9PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxzZXRWYWx1ZUZyb206ZnVuY3Rpb24odCxuLGUpe3ZhciBvPWt3KHQsbixlKSxyPVN3KG8pO3JldHVybiB3dyh0LHIpLG99LHNldFRvTWluOmZ1bmN0aW9uKHQsbil7dmFyIGU9d3gobik7d3codCxTdyhlKSl9LHNldFRvTWF4OmZ1bmN0aW9uKHQsbil7dmFyIGU9T3gobik7d3codCxTdyhlKSl9LGZpbmRWYWx1ZU9mT2Zmc2V0Omt3LGdldFZhbHVlRnJvbUV2ZW50OmZ1bmN0aW9uKHQpe3JldHVybiB5eCh0KS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQudG9wKCl9KX0sZmluZFBvc2l0aW9uT2ZWYWx1ZTpPdyxzZXRQb3NpdGlvbkZyb21WYWx1ZTpmdW5jdGlvbih0LG4sZSxvKXt2YXIgcj1qeChlKSxpPU93KHQsby5nZXRTcGVjdHJ1bSh0KSxyLnkoKSxvLmdldFRvcEVkZ2UodCksby5nZXRCb3R0b21FZGdlKHQpLGUpLHU9dHUobi5lbGVtZW50KCkpLzI7RGkobi5lbGVtZW50KCksInRvcCIsaS11KyJweCIpfSxvbkxlZnQ6X3csb25SaWdodDpUdyxvblVwOkV3LG9uRG93bjpCdyxlZGdlQWN0aW9uczpEd30pLEF3PWZ1bmN0aW9uKHQsbil7am8odCxieCgpLHt2YWx1ZTpufSl9LEZ3PWZ1bmN0aW9uKHQsbil7cmV0dXJue3g6YXQodCkseTphdChuKX19LEl3PWZ1bmN0aW9uKGMscyl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7cmV0dXJuIG89dCxyPW4saT0wPGM/cXg6WXgsdT0oZT1zKT9qeChyKS54KCk6aShqeChyKS54KCkseHgociksQ3gociksRngocikpLGE9ZT9pKGp4KHIpLnkoKSx3eChyKSxPeChyKSxGeChyKSk6angocikueSgpLEF3KG8sRncodSxhKSksc3Quc29tZSh1KS5tYXAoZnVuY3Rpb24oKXtyZXR1cm4hMH0pO3ZhciBlLG8scixpLHUsYX19LFJ3PUl3KC0xLCExKSxWdz1JdygxLCExKSxIdz1JdygtMSwhMCksUHc9SXcoMSwhMCksenc9eyJ0b3AtbGVmdCI6c3Quc29tZShmdW5jdGlvbih0LG4pe1h4KHQsR3goU3gobiksa3gobikpKX0pLHRvcDpzdC5zb21lKGZ1bmN0aW9uKHQsbil7WHgodCxHeChNeChuKSxreChuKSkpfSksInRvcC1yaWdodCI6c3Quc29tZShmdW5jdGlvbih0LG4pe1h4KHQsR3goX3gobiksa3gobikpKX0pLHJpZ2h0OnN0LnNvbWUoZnVuY3Rpb24odCxuKXtYeCh0LEd4KF94KG4pLEF4KG4pKSl9KSwiYm90dG9tLXJpZ2h0IjpzdC5zb21lKGZ1bmN0aW9uKHQsbil7WHgodCxHeChfeChuKSxUeChuKSkpfSksYm90dG9tOnN0LnNvbWUoZnVuY3Rpb24odCxuKXtYeCh0LEd4KE14KG4pLFR4KG4pKSl9KSwiYm90dG9tLWxlZnQiOnN0LnNvbWUoZnVuY3Rpb24odCxuKXtYeCh0LEd4KFN4KG4pLFR4KG4pKSl9KSxsZWZ0OnN0LnNvbWUoZnVuY3Rpb24odCxuKXtYeCh0LEd4KFN4KG4pLEF4KG4pKSl9KX0sTnc9LyogKi9PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxzZXRWYWx1ZUZyb206ZnVuY3Rpb24odCxuLGUpe3ZhciBvPWR3KHQsbixlLmxlZnQoKSkscj1rdyh0LG4sZS50b3AoKSksaT1GdyhvLHIpO3JldHVybiBBdyh0LGkpLGl9LHNldFRvTWluOmZ1bmN0aW9uKHQsbil7dmFyIGU9eHgobiksbz13eChuKTtBdyh0LEZ3KGUsbykpfSxzZXRUb01heDpmdW5jdGlvbih0LG4pe3ZhciBlPUN4KG4pLG89T3gobik7QXcodCxGdyhlLG8pKX0sZ2V0VmFsdWVGcm9tRXZlbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHl4KHQpfSxzZXRQb3NpdGlvbkZyb21WYWx1ZTpmdW5jdGlvbih0LG4sZSxvKXt2YXIgcj1qeChlKSxpPWd3KHQsby5nZXRTcGVjdHJ1bSh0KSxyLngoKSxvLmdldExlZnRFZGdlKHQpLG8uZ2V0UmlnaHRFZGdlKHQpLGUpLHU9T3codCxvLmdldFNwZWN0cnVtKHQpLHIueSgpLG8uZ2V0VG9wRWRnZSh0KSxvLmdldEJvdHRvbUVkZ2UodCksZSksYT1jdShuLmVsZW1lbnQoKSkvMixjPXR1KG4uZWxlbWVudCgpKS8yO0RpKG4uZWxlbWVudCgpLCJsZWZ0IixpLWErInB4IiksRGkobi5lbGVtZW50KCksInRvcCIsdS1jKyJweCIpfSxvbkxlZnQ6Uncsb25SaWdodDpWdyxvblVwOkh3LG9uRG93bjpQdyxlZGdlQWN0aW9uczp6d30pLEx3PV9mKHtuYW1lOiJTbGlkZXIiLGNvbmZpZ0ZpZWxkczpbWm4oInN0ZXBTaXplIiwxKSxabigib25DaGFuZ2UiLFopLFpuKCJvbkNob29zZSIsWiksWm4oIm9uSW5pdCIsWiksWm4oIm9uRHJhZ1N0YXJ0IixaKSxabigib25EcmFnRW5kIixaKSxabigic25hcFRvR3JpZCIsITEpLFpuKCJyb3VuZGVkIiwhMCksWW4oInNuYXBTdGFydCIpLE5uKCJtb2RlbCIsQm4oIm1vZGUiLHt4OltabigibWluWCIsMCksWm4oIm1heFgiLDEwMCksYWUoInZhbHVlIixmdW5jdGlvbih0KXtyZXR1cm4gY2UodC5tb2RlLm1pblgpfSksem4oImdldEluaXRpYWxWYWx1ZSIpLG5hKCJtYW5hZ2VyIix4dyldLHk6W1puKCJtaW5ZIiwwKSxabigibWF4WSIsMTAwKSxhZSgidmFsdWUiLGZ1bmN0aW9uKHQpe3JldHVybiBjZSh0Lm1vZGUubWluWSl9KSx6bigiZ2V0SW5pdGlhbFZhbHVlIiksbmEoIm1hbmFnZXIiLE13KV0seHk6W1puKCJtaW5YIiwwKSxabigibWF4WCIsMTAwKSxabigibWluWSIsMCksWm4oIm1heFkiLDEwMCksYWUoInZhbHVlIixmdW5jdGlvbih0KXtyZXR1cm4gY2Uoe3g6YXQodC5tb2RlLm1pblgpLHk6YXQodC5tb2RlLm1pblkpfSl9KSx6bigiZ2V0SW5pdGlhbFZhbHVlIiksbmEoIm1hbmFnZXIiLE53KV19KSkseWwoInNsaWRlckJlaGF2aW91cnMiLFtSbSxibF0pLGFlKCJtb3VzZUlzRG93biIsZnVuY3Rpb24oKXtyZXR1cm4gY2UoITEpfSldLHBhcnRGaWVsZHM6dngsZmFjdG9yeTpmdW5jdGlvbihpLHQsbixlKXt2YXIgbyx1PWZ1bmN0aW9uKHQpe3JldHVybiBsZih0LGksInRodW1iIil9LGE9ZnVuY3Rpb24odCl7cmV0dXJuIGxmKHQsaSwic3BlY3RydW0iKX0scj1mdW5jdGlvbih0KXtyZXR1cm4gc2YodCxpLCJsZWZ0LWVkZ2UiKX0sYz1mdW5jdGlvbih0KXtyZXR1cm4gc2YodCxpLCJyaWdodC1lZGdlIil9LHM9ZnVuY3Rpb24odCl7cmV0dXJuIHNmKHQsaSwidG9wLWVkZ2UiKX0sbD1mdW5jdGlvbih0KXtyZXR1cm4gc2YodCxpLCJib3R0b20tZWRnZSIpfSxmPWkubW9kZWwsZD1mLm1hbmFnZXIsbT1mdW5jdGlvbih0LG4pe2Quc2V0UG9zaXRpb25Gcm9tVmFsdWUodCxuLGkse2dldExlZnRFZGdlOnIsZ2V0UmlnaHRFZGdlOmMsZ2V0VG9wRWRnZTpzLGdldEJvdHRvbUVkZ2U6bCxnZXRTcGVjdHJ1bTphfSl9LGc9ZnVuY3Rpb24odCxuKXtmLnZhbHVlLnNldChuKTt2YXIgZT11KHQpO3JldHVybiBtKHQsZSksaS5vbkNoYW5nZSh0LGUsbiksc3Quc29tZSghMCl9LHA9ZnVuY3Rpb24oZSl7dmFyIHQ9aS5tb3VzZUlzRG93bi5nZXQoKTtpLm1vdXNlSXNEb3duLnNldCghMSksdCYmc2YoZSxpLCJ0aHVtYiIpLmVhY2goZnVuY3Rpb24odCl7dmFyIG49Zi52YWx1ZS5nZXQoKTtpLm9uQ2hvb3NlKGUsdCxuKX0pfSxoPWZ1bmN0aW9uKHQsbil7bi5zdG9wKCksaS5tb3VzZUlzRG93bi5zZXQoITApLGkub25EcmFnU3RhcnQodCx1KHQpKX0sdj1mdW5jdGlvbih0LG4pe24uc3RvcCgpLGkub25EcmFnRW5kKHQsdSh0KSkscCh0KX07cmV0dXJue3VpZDppLnVpZCxkb206aS5kb20sY29tcG9uZW50czp0LGJlaGF2aW91cnM6d2woaS5zbGlkZXJCZWhhdmlvdXJzLFtSbS5jb25maWcoe21vZGU6InNwZWNpYWwiLGZvY3VzSW46ZnVuY3Rpb24odCl7cmV0dXJuIHNmKHQsaSwic3BlY3RydW0iKS5tYXAoUm0uZm9jdXNJbikubWFwKGF0KCEwKSl9fSksYmwuY29uZmlnKHtzdG9yZTp7bW9kZToibWFudWFsIixnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gZi52YWx1ZS5nZXQoKX19fSksWWEuY29uZmlnKHtjaGFubmVsczooKG89e30pW25sKCldPXtvblJlY2VpdmU6cH0sbyl9KV0pLGV2ZW50czpZbyhbSm8oYngoKSxmdW5jdGlvbih0LG4pe2codCxuLmV2ZW50KCkudmFsdWUoKSl9KSxvcihmdW5jdGlvbih0LG4pe3ZhciBlPWYuZ2V0SW5pdGlhbFZhbHVlKCk7Zi52YWx1ZS5zZXQoZSk7dmFyIG89dSh0KTttKHQsbyk7dmFyIHI9YSh0KTtpLm9uSW5pdCh0LG8scixmLnZhbHVlLmdldCgpKX0pLEpvKEplKCksaCksSm8oUWUoKSx2KSxKbyh0bygpLGgpLEpvKG9vKCksdildKSxhcGlzOntyZXNldFRvTWluOmZ1bmN0aW9uKHQpe2Quc2V0VG9NaW4odCxpKX0scmVzZXRUb01heDpmdW5jdGlvbih0KXtkLnNldFRvTWF4KHQsaSl9LGNoYW5nZVZhbHVlOmcscmVmcmVzaDptfSxkb21Nb2RpZmljYXRpb246e3N0eWxlczp7cG9zaXRpb246InJlbGF0aXZlIn19fX0sYXBpczp7cmVzZXRUb01pbjpmdW5jdGlvbih0LG4pe3QucmVzZXRUb01pbihuKX0scmVzZXRUb01heDpmdW5jdGlvbih0LG4pe3QucmVzZXRUb01heChuKX0scmVmcmVzaDpmdW5jdGlvbih0LG4pe3QucmVmcmVzaChuKX19fSksanc9W3lsKCJmb3JtQmVoYXZpb3VycyIsW2JsXSldLFV3PWZ1bmN0aW9uKHQpe3JldHVybiI8YWxsb3kuZmllbGQuIit0KyI+In0sV3c9ZnVuY3Rpb24obyx0KXtyZXR1cm57dWlkOm8udWlkLGRvbTpvLmRvbSxjb21wb25lbnRzOnQsYmVoYXZpb3Vyczp3bChvLmZvcm1CZWhhdmlvdXJzLFtibC5jb25maWcoe3N0b3JlOnttb2RlOiJtYW51YWwiLGdldFZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBuPWRmKHQsbyk7cmV0dXJuIGR0KG4sZnVuY3Rpb24odCxyKXtyZXR1cm4gdCgpLmJpbmQoZnVuY3Rpb24odCl7dmFyIG4sZSxvPU1mLmdldEN1cnJlbnQodCk7cmV0dXJuIG49byxlPW5ldyBFcnJvcigiQ2Fubm90IGZpbmQgYSBjdXJyZW50IGNvbXBvbmVudCB0byBleHRyYWN0IHRoZSB2YWx1ZSBmcm9tIGZvciBmb3JtIHBhcnQgJyIrcisiJzogIitWcih0LmVsZW1lbnQoKSkpLG4uZm9sZChmdW5jdGlvbigpe3JldHVybiBvdC5lcnJvcihlKX0sb3QudmFsdWUpfSkubWFwKGJsLmdldFZhbHVlKX0pfSxzZXRWYWx1ZTpmdW5jdGlvbihlLHQpe2Z0KHQsZnVuY3Rpb24obix0KXtzZihlLG8sdCkuZWFjaChmdW5jdGlvbih0KXtNZi5nZXRDdXJyZW50KHQpLmVhY2goZnVuY3Rpb24odCl7Ymwuc2V0VmFsdWUodCxuKX0pfSl9KX19fSldKSxhcGlzOntnZXRGaWVsZDpmdW5jdGlvbih0LG4pe3JldHVybiBzZih0LG8sbikuYmluZChNZi5nZXRDdXJyZW50KX19fX0sR3c9e2dldEZpZWxkOm5pKGZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gdC5nZXRGaWVsZChuLGUpfSksc2tldGNoOmZ1bmN0aW9uKHQpe3ZhciBlLG49KGU9W10se2ZpZWxkOmZ1bmN0aW9uKHQsbil7cmV0dXJuIGUucHVzaCh0KSxvZigiZm9ybSIsVXcodCksbil9LHJlY29yZDpmdW5jdGlvbigpe3JldHVybiBlfX0pLG89dChuKSxyPW4ucmVjb3JkKCksaT1WKHIsZnVuY3Rpb24odCl7cmV0dXJuIHFsKHtuYW1lOnQscG5hbWU6VXcodCl9KX0pO3JldHVybiB5ZigiZm9ybSIsancsaSxXdyxvKX19LFh3PU5yKCJ2YWxpZC1pbnB1dCIpLFl3PU5yKCJpbnZhbGlkLWlucHV0IikscXc9TnIoInZhbGlkYXRpbmctaW5wdXQiKSxLdz0iY29sb3JjdXN0b20ucmdiLiIsSnc9ZnVuY3Rpb24oZCxtLGcscCl7dmFyIGg9ZnVuY3Rpb24odCxuLGUsbyxyKXt2YXIgaSx1LGE9ZChLdysicmFuZ2UiKSxjPVtleS5wYXJ0cygpLmxhYmVsKHtkb206e3RhZzoibGFiZWwiLGlubmVySHRtbDplLGF0dHJpYnV0ZXM6eyJhcmlhLWxhYmVsIjpvfX19KSxleS5wYXJ0cygpLmZpZWxkKHtkYXRhOnIsZmFjdG9yeTp1eSxpbnB1dEF0dHJpYnV0ZXM6ZXQoe3R5cGU6InRleHQifSwiaGV4Ij09PW4/eyJhcmlhLWxpdmUiOiJwb2xpdGUifTp7fSksaW5wdXRDbGFzc2VzOlttKCJ0ZXh0ZmllbGQiKV0saW5wdXRCZWhhdmlvdXJzOnphKFsoaT1uLHU9dCxUeS5jb25maWcoe2ludmFsaWRDbGFzczptKCJpbnZhbGlkIiksbm90aWZ5OntvblZhbGlkYXRlOmZ1bmN0aW9uKHQpe2pvKHQscXcse3R5cGU6aX0pfSxvblZhbGlkOmZ1bmN0aW9uKHQpe2pvKHQsWHcse3R5cGU6aSx2YWx1ZTpibC5nZXRWYWx1ZSh0KX0pfSxvbkludmFsaWQ6ZnVuY3Rpb24odCl7am8odCxZdyx7dHlwZTppLHZhbHVlOmJsLmdldFZhbHVlKHQpfSl9fSx2YWxpZGF0b3I6e3ZhbGlkYXRlOmZ1bmN0aW9uKHQpe3ZhciBuPWJsLmdldFZhbHVlKHQpLGU9dShuKT9vdC52YWx1ZSghMCk6b3QuZXJyb3IoZCgiYXJpYS5pbnB1dC5pbnZhbGlkIikpO3JldHVybiB2eShlKX0sdmFsaWRhdGVPbkxvYWQ6ITF9fSkpLER5LmNvbmZpZyh7fSldKSxvblNldFZhbHVlOmZ1bmN0aW9uKHQpe1R5LmlzSW52YWxpZCh0KSYmVHkucnVuKHQpLmdldChaKX19KV0scz0iaGV4IiE9PW4/W2V5LnBhcnRzKClbImFyaWEtZGVzY3JpcHRvciJdKHt0ZXh0OmF9KV06W107cmV0dXJue2RvbTp7dGFnOiJkaXYiLGF0dHJpYnV0ZXM6e3JvbGU6InByZXNlbnRhdGlvbiJ9fSxjb21wb25lbnRzOmMuY29uY2F0KHMpfX0sdj1mdW5jdGlvbih0LG4pe3ZhciBlPW4ucmVkLG89bi5ncmVlbixyPW4uYmx1ZTtibC5zZXRWYWx1ZSh0LHtyZWQ6ZSxncmVlbjpvLGJsdWU6cn0pfSxiPVVnKHtkb206e3RhZzoiZGl2IixjbGFzc2VzOlttKCJyZ2JhLXByZXZpZXciKV0sc3R5bGVzOnsiYmFja2dyb3VuZC1jb2xvciI6IndoaXRlIn0sYXR0cmlidXRlczp7cm9sZToicHJlc2VudGF0aW9uIn19fSkseT1mdW5jdGlvbih0LG4pe2IuZ2V0T3B0KHQpLmVhY2goZnVuY3Rpb24odCl7RGkodC5lbGVtZW50KCksImJhY2tncm91bmQtY29sb3IiLCIjIituLnZhbHVlKX0pfTtyZXR1cm4gT2Yoe2ZhY3Rvcnk6ZnVuY3Rpb24oKXt2YXIgZT17cmVkOmNlKHN0LnNvbWUoMjU1KSksZ3JlZW46Y2Uoc3Quc29tZSgyNTUpKSxibHVlOmNlKHN0LnNvbWUoMjU1KSksaGV4OmNlKHN0LnNvbWUoImZmZmZmZiIpKX0sbz1mdW5jdGlvbih0KXtyZXR1cm4gZVt0XS5nZXQoKX0saT1mdW5jdGlvbih0LG4pe2VbdF0uc2V0KG4pfSxyPWZ1bmN0aW9uKHQpe3ZhciBuPXQucmVkLGU9dC5ncmVlbixvPXQuYmx1ZTtpKCJyZWQiLHN0LnNvbWUobikpLGkoImdyZWVuIixzdC5zb21lKGUpKSxpKCJibHVlIixzdC5zb21lKG8pKX0sbj1mdW5jdGlvbih0LG4pe3ZhciBlPW4uZXZlbnQoKTsiaGV4IiE9PWUudHlwZSgpP2koZS50eXBlKCksc3Qubm9uZSgpKTpwKHQpfSx1PWZ1bmN0aW9uKHIsdCxuKXt2YXIgZT1wYXJzZUludChuLDEwKTtpKHQsc3Quc29tZShlKSksbygicmVkIikuYmluZChmdW5jdGlvbihlKXtyZXR1cm4gbygiZ3JlZW4iKS5iaW5kKGZ1bmN0aW9uKG4pe3JldHVybiBvKCJibHVlIikubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB5dihlLG4sdCwxKX0pfSl9KS5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBuLGUsbz0obj1yLGU9bXYodCksR3cuZ2V0RmllbGQobiwiaGV4IikuZWFjaChmdW5jdGlvbih0KXtYbS5pc0ZvY3VzZWQodCl8fGJsLnNldFZhbHVlKG4se2hleDplLnZhbHVlfSl9KSxlKTt5KHIsbyl9KX0sYT1mdW5jdGlvbih0LG4pe3ZhciBlPW4uZXZlbnQoKTsiaGV4Ij09PWUudHlwZSgpP2Z1bmN0aW9uKHQsbil7Zyh0KTt2YXIgZT1hdihuKTtpKCJoZXgiLHN0LnNvbWUobikpO3ZhciBvPVN2KGUpO3YodCxvKSxyKG8pLGpvKHQsaXgse2hleDplfSkseSh0LGUpfSh0LGUudmFsdWUoKSk6dSh0LGUudHlwZSgpLGUudmFsdWUoKSl9LHQ9ZnVuY3Rpb24odCl7cmV0dXJue2xhYmVsOmQoS3crdCsiLmxhYmVsIiksZGVzY3JpcHRpb246ZChLdyt0KyIuZGVzY3JpcHRpb24iKX19LGM9dCgicmVkIikscz10KCJncmVlbiIpLGw9dCgiYmx1ZSIpLGY9dCgiaGV4Iik7cmV0dXJuIEN0KEd3LnNrZXRjaChmdW5jdGlvbih0KXtyZXR1cm57ZG9tOnt0YWc6ImZvcm0iLGNsYXNzZXM6W20oInJnYi1mb3JtIildLGF0dHJpYnV0ZXM6eyJhcmlhLWxhYmVsIjpkKCJhcmlhLmNvbG9yLnBpY2tlciIpfX0sY29tcG9uZW50czpbdC5maWVsZCgicmVkIixleS5za2V0Y2goaCh4diwicmVkIixjLmxhYmVsLGMuZGVzY3JpcHRpb24sMjU1KSkpLHQuZmllbGQoImdyZWVuIixleS5za2V0Y2goaCh4diwiZ3JlZW4iLHMubGFiZWwscy5kZXNjcmlwdGlvbiwyNTUpKSksdC5maWVsZCgiYmx1ZSIsZXkuc2tldGNoKGgoeHYsImJsdWUiLGwubGFiZWwsbC5kZXNjcmlwdGlvbiwyNTUpKSksdC5maWVsZCgiaGV4IixleS5za2V0Y2goaChsdiwiaGV4IixmLmxhYmVsLGYuZGVzY3JpcHRpb24sImZmZmZmZiIpKSksYi5hc1NwZWMoKV0sZm9ybUJlaGF2aW91cnM6emEoW1R5LmNvbmZpZyh7aW52YWxpZENsYXNzOm0oImZvcm0taW52YWxpZCIpfSksTG0oInJnYi1mb3JtLWV2ZW50cyIsW0pvKFh3LGEpLEpvKFl3LG4pLEpvKHF3LG4pXSldKX19KSx7YXBpczp7dXBkYXRlSGV4OmZ1bmN0aW9uKHQsbil7dmFyIGUsbztibC5zZXRWYWx1ZSh0LHtoZXg6bi52YWx1ZX0pLGU9dCxvPVN2KG4pLHYoZSxvKSxyKG8pLHkodCxuKX19fSl9LG5hbWU6IlJnYkZvcm0iLGNvbmZpZ0ZpZWxkczpbXSxhcGlzOnt1cGRhdGVIZXg6ZnVuY3Rpb24odCxuLGUpe3QudXBkYXRlSGV4KG4sZSl9fSxleHRyYUFwaXM6e319KX0sJHc9ZnVuY3Rpb24odCxvKXt2YXIgcj1Mdy5wYXJ0cygpLnNwZWN0cnVtKHtkb206e3RhZzoiY2FudmFzIixhdHRyaWJ1dGVzOntyb2xlOiJwcmVzZW50YXRpb24ifSxjbGFzc2VzOltvKCJzdi1wYWxldHRlLXNwZWN0cnVtIildfX0pLGk9THcucGFydHMoKS50aHVtYih7ZG9tOnt0YWc6ImRpdiIsYXR0cmlidXRlczp7cm9sZToicHJlc2VudGF0aW9uIn0sY2xhc3Nlczpbbygic3YtcGFsZXR0ZS10aHVtYiIpXSxpbm5lckh0bWw6IjxkaXYgY2xhc3M9IitvKCJzdi1wYWxldHRlLWlubmVyLXRodW1iIikrJyByb2xlPSJwcmVzZW50YXRpb24iPjwvZGl2Pid9fSksdT1mdW5jdGlvbih0LG4pe3ZhciBlPXQud2lkdGgsbz10LmhlaWdodCxyPXQuZ2V0Q29udGV4dCgiMmQiKTtpZihudWxsIT09cil7ci5maWxsU3R5bGU9bixyLmZpbGxSZWN0KDAsMCxlLG8pO3ZhciBpPXIuY3JlYXRlTGluZWFyR3JhZGllbnQoMCwwLGUsMCk7aS5hZGRDb2xvclN0b3AoMCwicmdiYSgyNTUsMjU1LDI1NSwxKSIpLGkuYWRkQ29sb3JTdG9wKDEsInJnYmEoMjU1LDI1NSwyNTUsMCkiKSxyLmZpbGxTdHlsZT1pLHIuZmlsbFJlY3QoMCwwLGUsbyk7dmFyIHU9ci5jcmVhdGVMaW5lYXJHcmFkaWVudCgwLDAsMCxvKTt1LmFkZENvbG9yU3RvcCgwLCJyZ2JhKDAsMCwwLDApIiksdS5hZGRDb2xvclN0b3AoMSwicmdiYSgwLDAsMCwxKSIpLHIuZmlsbFN0eWxlPXUsci5maWxsUmVjdCgwLDAsZSxvKX19O3JldHVybiBPZih7ZmFjdG9yeTpmdW5jdGlvbih0KXt2YXIgbj1hdCh7eDphdCgwKSx5OmF0KDApfSksZT16YShbTWYuY29uZmlnKHtmaW5kOnN0LnNvbWV9KSxYbS5jb25maWcoe30pXSk7cmV0dXJuIEx3LnNrZXRjaCh7ZG9tOnt0YWc6ImRpdiIsYXR0cmlidXRlczp7cm9sZToicHJlc2VudGF0aW9uIn0sY2xhc3Nlczpbbygic3YtcGFsZXR0ZSIpXX0sbW9kZWw6e21vZGU6Inh5IixnZXRJbml0aWFsVmFsdWU6bn0scm91bmRlZDohMSxjb21wb25lbnRzOltyLGldLG9uQ2hhbmdlOmZ1bmN0aW9uKHQsbixlKXtqbyh0LGF4LHt2YWx1ZTplfSl9LG9uSW5pdDpmdW5jdGlvbih0LG4sZSxvKXt1KGUuZWxlbWVudCgpLmRvbSgpLEN2KE92KSl9LHNsaWRlckJlaGF2aW91cnM6ZX0pfSxuYW1lOiJTYXR1cmF0aW9uQnJpZ2h0bmVzc1BhbGV0dGUiLGNvbmZpZ0ZpZWxkczpbXSxhcGlzOntzZXRSZ2JhOmZ1bmN0aW9uKHQsbixlKXt2YXIgbyxyO289ZSxyPW4uY29tcG9uZW50cygpWzBdLmVsZW1lbnQoKS5kb20oKSx1KHIsQ3YobykpfX0sZXh0cmFBcGlzOnt9fSl9LFF3PWZ1bmN0aW9uKGYsZCl7cmV0dXJuIE9mKHtuYW1lOiJDb2xvdXJQaWNrZXIiLGNvbmZpZ0ZpZWxkczpbem4oImRvbSIpLFpuKCJvblZhbGlkSGV4IixaKSxabigib25JbnZhbGlkSGV4IixaKV0sZmFjdG9yeTpmdW5jdGlvbih0KXt2YXIgYSx2LG4sZSxvLHI9SncoZixkLHQub25WYWxpZEhleCx0Lm9uSW52YWxpZEhleCksaT0kdygwLGQpLGI9e3BhbGV0dGVSZ2JhOmNlKE92KX0sdT1VZyhpLnNrZXRjaCh7fSkpLGM9VWcoci5za2V0Y2goe30pKSxzPWZ1bmN0aW9uKHQsZSl7dS5nZXRPcHQodCkuZWFjaChmdW5jdGlvbih0KXt2YXIgbj1TdihlKTtiLnBhbGV0dGVSZ2JhLnNldChuKSxpLnNldFJnYmEodCxuKX0pfSxsPWZ1bmN0aW9uKHQsbil7Yy5nZXRPcHQodCkuZWFjaChmdW5jdGlvbih0KXtyLnVwZGF0ZUhleCh0LG4pfSl9LHk9ZnVuY3Rpb24obixlLHQpe2l0KHQsZnVuY3Rpb24odCl7dChuLGUpfSl9O3JldHVybnt1aWQ6dC51aWQsZG9tOnQuZG9tLGNvbXBvbmVudHM6W3UuYXNTcGVjKCksKG49ZCxlPUx3LnBhcnRzKCkuc3BlY3RydW0oe2RvbTp7dGFnOiJkaXYiLGNsYXNzZXM6W24oImh1ZS1zbGlkZXItc3BlY3RydW0iKV0sYXR0cmlidXRlczp7cm9sZToicHJlc2VudGF0aW9uIn19fSksbz1Mdy5wYXJ0cygpLnRodW1iKHtkb206e3RhZzoiZGl2IixjbGFzc2VzOltuKCJodWUtc2xpZGVyLXRodW1iIildLGF0dHJpYnV0ZXM6e3JvbGU6InByZXNlbnRhdGlvbiJ9fX0pLEx3LnNrZXRjaCh7ZG9tOnt0YWc6ImRpdiIsY2xhc3NlczpbbigiaHVlLXNsaWRlciIpXSxhdHRyaWJ1dGVzOntyb2xlOiJwcmVzZW50YXRpb24ifX0scm91bmRlZDohMSxtb2RlbDp7bW9kZToieSIsZ2V0SW5pdGlhbFZhbHVlOmF0KHt5OmF0KDApfSl9LGNvbXBvbmVudHM6W2Usb10sc2xpZGVyQmVoYXZpb3Vyczp6YShbWG0uY29uZmlnKHt9KV0pLG9uQ2hhbmdlOmZ1bmN0aW9uKHQsbixlKXtqbyh0LHV4LHt2YWx1ZTplfSl9fSkpLGMuYXNTcGVjKCldLGJlaGF2aW91cnM6emEoW0xtKCJjb2xvdXItcGlja2VyLWV2ZW50cyIsW0pvKGF4LCh2PVtsXSxmdW5jdGlvbih0LG4pe3ZhciBlLG8scixpLHUsYSxjLHMsbCxmPW4uZXZlbnQoKS52YWx1ZSgpLGQ9Yi5wYWxldHRlUmdiYS5nZXQoKSxtPShpPXI9MCx1PShlPWQpLnJlZC8yNTUsYT1lLmdyZWVuLzI1NSxjPWUuYmx1ZS8yNTUscz1NYXRoLm1pbih1LE1hdGgubWluKGEsYykpLGw9TWF0aC5tYXgodSxNYXRoLm1heChhLGMpKSxzPT09bD9yeCgwLDAsMTAwKihpPXMpKToocj02MCooKHI9dT09PXM/MzpjPT09cz8xOjUpLSh1PT09cz9hLWM6Yz09PXM/dS1hOmMtdSkvKGwtcykpLG89KGwtcykvbCxpPWwscngoTWF0aC5yb3VuZChyKSxNYXRoLnJvdW5kKDEwMCpvKSxNYXRoLnJvdW5kKDEwMCppKSkpKSxnPXJ4KG0uaHVlLGYueCgpLDEwMC1mLnkoKSkscD13dihnKSxoPW12KHApO3kodCxoLHYpfSkpLEpvKHV4LChhPVtzLGxdLGZ1bmN0aW9uKHQsbil7dmFyIGUsbyxyLGk9bi5ldmVudCgpLnZhbHVlKCksdT0oZT1pLnkoKSxvPXJ4KCgxMDAtZSkvMTAwKjM2MCwxMDAsMTAwKSxyPXd2KG8pLG12KHIpKTt5KHQsdSxhKX0pKV0pLE1mLmNvbmZpZyh7ZmluZDpmdW5jdGlvbih0KXtyZXR1cm4gYy5nZXRPcHQodCl9fSksUm0uY29uZmlnKHttb2RlOiJhY3ljbGljIn0pXSl9fX0pfSxadz1mdW5jdGlvbigpe3JldHVybiBNZi5jb25maWcoe2ZpbmQ6c3Quc29tZX0pfSx0Uz1mdW5jdGlvbih0KXtyZXR1cm4gTWYuY29uZmlnKHtmaW5kOnQuZ2V0T3B0fSl9LG5TPWZ1bmN0aW9uKHQpe3JldHVybiBNZi5jb25maWcoe2ZpbmQ6ZnVuY3Rpb24obil7cmV0dXJuIG1yKG4uZWxlbWVudCgpLHQpLmJpbmQoZnVuY3Rpb24odCl7cmV0dXJuIG4uZ2V0U3lzdGVtKCkuZ2V0QnlEb20odCkudG9PcHRpb24oKX0pfX0pfSxlUz17ImNvbG9yY3VzdG9tLnJnYi5yZWQubGFiZWwiOiJSIiwiY29sb3JjdXN0b20ucmdiLnJlZC5kZXNjcmlwdGlvbiI6IlJlZCBjb21wb25lbnQiLCJjb2xvcmN1c3RvbS5yZ2IuZ3JlZW4ubGFiZWwiOiJHIiwiY29sb3JjdXN0b20ucmdiLmdyZWVuLmRlc2NyaXB0aW9uIjoiR3JlZW4gY29tcG9uZW50IiwiY29sb3JjdXN0b20ucmdiLmJsdWUubGFiZWwiOiJCIiwiY29sb3JjdXN0b20ucmdiLmJsdWUuZGVzY3JpcHRpb24iOiJCbHVlIGNvbXBvbmVudCIsImNvbG9yY3VzdG9tLnJnYi5oZXgubGFiZWwiOiIjIiwiY29sb3JjdXN0b20ucmdiLmhleC5kZXNjcmlwdGlvbiI6IkhleCBjb2xvciBjb2RlIiwiY29sb3JjdXN0b20ucmdiLnJhbmdlIjoiUmFuZ2UgMCB0byAyNTUiLCJjb2xvcmN1c3RvbS5zYi5zYXR1cmF0aW9uIjoiU2F0dXJhdGlvbiIsImNvbG9yY3VzdG9tLnNiLmJyaWdodG5lc3MiOiJCcmlnaHRuZXNzIiwiY29sb3JjdXN0b20uc2IucGlja2VyIjoiU2F0dXJhdGlvbiBhbmQgQnJpZ2h0bmVzcyBQaWNrZXIiLCJjb2xvcmN1c3RvbS5zYi5wYWxldHRlIjoiU2F0dXJhdGlvbiBhbmQgQnJpZ2h0bmVzcyBQYWxldHRlIiwiY29sb3JjdXN0b20uc2IuaW5zdHJ1Y3Rpb25zIjoiVXNlIGFycm93IGtleXMgdG8gc2VsZWN0IHNhdHVyYXRpb24gYW5kIGJyaWdodG5lc3MsIG9uIHggYW5kIHkgYXhlcyIsImNvbG9yY3VzdG9tLmh1ZS5odWUiOiJIdWUiLCJjb2xvcmN1c3RvbS5odWUuc2xpZGVyIjoiSHVlIFNsaWRlciIsImNvbG9yY3VzdG9tLmh1ZS5wYWxldHRlIjoiSHVlIFBhbGV0dGUiLCJjb2xvcmN1c3RvbS5odWUuaW5zdHJ1Y3Rpb25zIjoiVXNlIGFycm93IGtleXMgdG8gc2VsZWN0IGEgaHVlIiwiYXJpYS5jb2xvci5waWNrZXIiOiJDb2xvciBQaWNrZXIiLCJhcmlhLmlucHV0LmludmFsaWQiOiJJbnZhbGlkIGlucHV0In0sb1M9ZnVuY3Rpb24odCl7cmV0dXJuIGVTW3RdfSxyUz10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS5SZXNvdXJjZSIpLGlTPWxuKFtabigicHJlcHJvY2VzcyIsY3QpLFpuKCJwb3N0cHJvY2VzcyIsY3QpXSksdVM9ZnVuY3Rpb24odCxuLGUpe3JldHVybiBibC5jb25maWcoQ3Qoe3N0b3JlOnttb2RlOiJtYW51YWwiLGdldFZhbHVlOm4sc2V0VmFsdWU6ZX19LHQubWFwKGZ1bmN0aW9uKHQpe3JldHVybntzdG9yZTp7aW5pdGlhbFZhbHVlOnR9fX0pLmdldE9yKHt9KSkpfSxhUz1mdW5jdGlvbih0LG4sZSl7cmV0dXJuIHVTKHQsZnVuY3Rpb24odCl7cmV0dXJuIG4odC5lbGVtZW50KCkpfSxmdW5jdGlvbih0LG4pe3JldHVybiBlKHQuZWxlbWVudCgpLG4pfSl9LGNTPWZ1bmN0aW9uKHIsdCl7dmFyIGk9X24oIlJlcHJlc2VudGluZ0NvbmZpZ3MubWVtZW50byBwcm9jZXNzb3JzIixpUyx0KTtyZXR1cm4gYmwuY29uZmlnKHtzdG9yZTp7bW9kZToibWFudWFsIixnZXRWYWx1ZTpmdW5jdGlvbih0KXt2YXIgbj1yLmdldCh0KSxlPWJsLmdldFZhbHVlKG4pO3JldHVybiBpLnBvc3Rwcm9jZXNzKGUpfSxzZXRWYWx1ZTpmdW5jdGlvbih0LG4pe3ZhciBlPWkucHJlcHJvY2VzcyhuKSxvPXIuZ2V0KHQpO2JsLnNldFZhbHVlKG8sZSl9fX0pfSxzUz11UyxsUz1mdW5jdGlvbih0KXtyZXR1cm4gYVModCxTcixrcil9LGZTPWZ1bmN0aW9uKHQpe3JldHVybiBibC5jb25maWcoe3N0b3JlOnttb2RlOiJtZW1vcnkiLGluaXRpYWxWYWx1ZTp0fX0pfSxkUz1mdW5jdGlvbihyLG4pe3ZhciBlPWZ1bmN0aW9uKHQsbil7bi5zdG9wKCl9LG89ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKG4sZSl7aXQodCxmdW5jdGlvbih0KXt0KG4sZSl9KX19LGk9ZnVuY3Rpb24odCxuKXtpZighcGguaXNEaXNhYmxlZCh0KSl7dmFyIGU9bi5ldmVudCgpLnJhdygpO2EodCxlLmRhdGFUcmFuc2Zlci5maWxlcyl9fSx1PWZ1bmN0aW9uKHQsbil7dmFyIGU9bi5ldmVudCgpLnJhdygpLnRhcmdldC5maWxlczthKHQsZSl9LGE9ZnVuY3Rpb24odCxuKXt2YXIgZSxvO2JsLnNldFZhbHVlKHQsKGU9bixvPW5ldyBSZWdFeHAoIigiKyIuanBnLC5qcGVnLC5wbmcsLmdpZiIuc3BsaXQoL1xzKixccyovKS5qb2luKCJ8IikrIikkIiwiaSIpLFAoJChlKSxmdW5jdGlvbih0KXtyZXR1cm4gby50ZXN0KHQubmFtZSl9KSkpLGpvKHQsR2Ise25hbWU6ci5uYW1lfSl9LGM9VWcoe2RvbTp7dGFnOiJpbnB1dCIsYXR0cmlidXRlczp7dHlwZToiZmlsZSIsYWNjZXB0OiJpbWFnZS8qIn0sc3R5bGVzOntkaXNwbGF5OiJub25lIn19LGJlaGF2aW91cnM6emEoW0xtKCJpbnB1dC1maWxlLWV2ZW50cyIsW25yKGZvKCkpLG5yKFNvKCkpXSldKX0pLHQ9ci5sYWJlbC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIEl5KHQsbil9KSxzPWV5LnBhcnRzKCkuZmllbGQoe2ZhY3Rvcnk6e3NrZXRjaDpmdW5jdGlvbih0KXtyZXR1cm57dWlkOnQudWlkLGRvbTp7dGFnOiJkaXYiLGNsYXNzZXM6WyJ0b3gtZHJvcHpvbmUtY29udGFpbmVyIl19LGJlaGF2aW91cnM6emEoW2ZTKFtdKSxadygpLHBoLmNvbmZpZyh7fSkscmcuY29uZmlnKHt0b2dnbGVDbGFzczoiZHJhZ2VudGVyIix0b2dnbGVPbkV4ZWN1dGU6ITF9KSxMbSgiZHJvcHpvbmUtZXZlbnRzIixbSm8oImRyYWdlbnRlciIsbyhbZSxyZy50b2dnbGVdKSksSm8oImRyYWdsZWF2ZSIsbyhbZSxyZy50b2dnbGVdKSksSm8oImRyYWdvdmVyIixlKSxKbygiZHJvcCIsbyhbZSxpXSkpLEpvKGxvKCksdSldKV0pLGNvbXBvbmVudHM6W3tkb206e3RhZzoiZGl2IixjbGFzc2VzOlsidG94LWRyb3B6b25lIl0sc3R5bGVzOnt9fSxjb21wb25lbnRzOlt7ZG9tOnt0YWc6InAiLGlubmVySHRtbDpuLnRyYW5zbGF0ZSgiRHJvcCBhbiBpbWFnZSBoZXJlIil9fSxqZy5za2V0Y2goe2RvbTp7dGFnOiJidXR0b24iLGlubmVySHRtbDpuLnRyYW5zbGF0ZSgiQnJvd3NlIGZvciBhbiBpbWFnZSIpLHN0eWxlczp7cG9zaXRpb246InJlbGF0aXZlIn0sY2xhc3NlczpbInRveC1idXR0b24iLCJ0b3gtYnV0dG9uLS1zZWNvbmRhcnkiXX0sY29tcG9uZW50czpbYy5hc1NwZWMoKV0sYWN0aW9uOmZ1bmN0aW9uKHQpe2MuZ2V0KHQpLmVsZW1lbnQoKS5kb20oKS5jbGljaygpfSxidXR0b25CZWhhdmlvdXJzOnphKFtEeS5jb25maWcoe30pLEdoKG4uaXNSZWFkT25seSksVWgoKV0pfSldfV19fX19KTtyZXR1cm4gTXkodCxzLFsidG94LWZvcm1fX2dyb3VwLS1zdHJldGNoZWQiXSxbXSl9LG1TPU5yKCJhbGxveS1mYWtlLWJlZm9yZS10YWJzdG9wIiksZ1M9TnIoImFsbG95LWZha2UtYWZ0ZXItdGFic3RvcCIpLHBTPWZ1bmN0aW9uKHQpe3JldHVybntkb206e3RhZzoiZGl2IixzdHlsZXM6e3dpZHRoOiIxcHgiLGhlaWdodDoiMXB4IixvdXRsaW5lOiJub25lIn0sYXR0cmlidXRlczp7dGFiaW5kZXg6IjAifSxjbGFzc2VzOnR9LGJlaGF2aW91cnM6emEoW1htLmNvbmZpZyh7aWdub3JlOiEwfSksRHkuY29uZmlnKHt9KV0pfX0saFM9ZnVuY3Rpb24odCl7cmV0dXJue2RvbTp7dGFnOiJkaXYiLGNsYXNzZXM6WyJ0b3gtbmF2b2JqIl19LGNvbXBvbmVudHM6W3BTKFttU10pLHQscFMoW2dTXSldLGJlaGF2aW91cnM6emEoW25TKDEpXSl9fSx2Uz1mdW5jdGlvbih0LG4pe2pvKHQsYW8oKSx7cmF3Ont3aGljaDo5LHNoaWZ0S2V5Om59fSl9LGJTPWZ1bmN0aW9uKHQsbil7dmFyIGU9bi5lbGVtZW50KCk7d2koZSxtUyk/dlModCwhMCk6d2koZSxnUykmJnZTKHQsITEpfSx5Uz1mdW5jdGlvbih0KXtyZXR1cm4gU2IodCxbIi4iK21TLCIuIitnU10uam9pbigiLCIpLGF0KCExKSl9LHhTPSEoUGUoKS5icm93c2VyLmlzSUUoKXx8UGUoKS5icm93c2VyLmlzRWRnZSgpKSx3Uz1mdW5jdGlvbih0LG4pe3ZhciBvLHIsZT14UyYmdC5zYW5kYm94ZWQsaT1ldChldCh7fSx0LmxhYmVsLm1hcChmdW5jdGlvbih0KXtyZXR1cm57dGl0bGU6dH19KS5nZXRPcih7fSkpLGU/e3NhbmRib3g6ImFsbG93LXNjcmlwdHMgYWxsb3ctc2FtZS1vcmlnaW4ifTp7fSksdT0obz1lLHI9Y2UoIiIpLHtnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gci5nZXQoKX0sc2V0VmFsdWU6ZnVuY3Rpb24odCxuKXtpZihvKUJyKHQuZWxlbWVudCgpLCJzcmNkb2MiLG4pO2Vsc2V7QnIodC5lbGVtZW50KCksInNyYyIsImphdmFzY3JpcHQ6JyciKTt2YXIgZT10LmVsZW1lbnQoKS5kb20oKS5jb250ZW50V2luZG93LmRvY3VtZW50O2Uub3BlbigpLGUud3JpdGUobiksZS5jbG9zZSgpfXIuc2V0KG4pfX0pLGE9dC5sYWJlbC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIEl5KHQsbil9KSxjPWV5LnBhcnRzKCkuZmllbGQoe2ZhY3Rvcnk6e3NrZXRjaDpmdW5jdGlvbih0KXtyZXR1cm4gaFMoe3VpZDp0LnVpZCxkb206e3RhZzoiaWZyYW1lIixhdHRyaWJ1dGVzOml9LGJlaGF2aW91cnM6emEoW0R5LmNvbmZpZyh7fSksWG0uY29uZmlnKHt9KSxzUyhzdC5ub25lKCksdS5nZXRWYWx1ZSx1LnNldFZhbHVlKV0pfSl9fX0pO3JldHVybiBNeShhLGMsWyJ0b3gtZm9ybV9fZ3JvdXAtLXN0cmV0Y2hlZCJdLFtdKX07ZnVuY3Rpb24gU1ModCxuKXtyZXR1cm4gT1MobnQuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiksdCxuKX1mdW5jdGlvbiBrUyh0KXt2YXIgbj1TUyh0LndpZHRoLHQuaGVpZ2h0KTtyZXR1cm4gQ1MobikuZHJhd0ltYWdlKHQsMCwwKSxufWZ1bmN0aW9uIENTKHQpe3JldHVybiB0LmdldENvbnRleHQoIjJkIil9ZnVuY3Rpb24gT1ModCxuLGUpe3JldHVybiB0LndpZHRoPW4sdC5oZWlnaHQ9ZSx0fWZ1bmN0aW9uIF9TKHQpe3JldHVybiB0Lm5hdHVyYWxXaWR0aHx8dC53aWR0aH1mdW5jdGlvbiBUUyh0KXtyZXR1cm4gdC5uYXR1cmFsSGVpZ2h0fHx0LmhlaWdodH12YXIgRVMsQlMsRFMsTVM9d2luZG93LlByb21pc2U/d2luZG93LlByb21pc2U6KEJTPShFUz1mdW5jdGlvbih0KXtpZigib2JqZWN0IiE9dHlwZW9mIHRoaXMpdGhyb3cgbmV3IFR5cGVFcnJvcigiUHJvbWlzZXMgbXVzdCBiZSBjb25zdHJ1Y3RlZCB2aWEgbmV3Iik7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcigibm90IGEgZnVuY3Rpb24iKTt0aGlzLl9zdGF0ZT1udWxsLHRoaXMuX3ZhbHVlPW51bGwsdGhpcy5fZGVmZXJyZWRzPVtdLFBTKHQsQVMoSVMsdGhpcyksQVMoUlMsdGhpcykpfSkuaW1tZWRpYXRlRm58fCJmdW5jdGlvbiI9PXR5cGVvZiB3aW5kb3cuc2V0SW1tZWRpYXRlJiZ3aW5kb3cuc2V0SW1tZWRpYXRlfHxmdW5jdGlvbih0KXtudC5zZXRUaW1lb3V0KHQsMSl9LERTPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IEFycmF5XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9LEVTLnByb3RvdHlwZVsiY2F0Y2giXT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50aGVuKG51bGwsdCl9LEVTLnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKGUsbyl7dmFyIHI9dGhpcztyZXR1cm4gbmV3IEVTKGZ1bmN0aW9uKHQsbil7RlMuY2FsbChyLG5ldyBIUyhlLG8sdCxuKSl9KX0sRVMuYWxsPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PVtdLG49MDtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXRbbl09YXJndW1lbnRzW25dO3ZhciBjPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKDE9PT10Lmxlbmd0aCYmRFModFswXSk/dFswXTp0KTtyZXR1cm4gbmV3IEVTKGZ1bmN0aW9uKHIsaSl7aWYoMD09PWMubGVuZ3RoKXJldHVybiByKFtdKTt2YXIgdT1jLmxlbmd0aDtmdW5jdGlvbiBhKG4sdCl7dHJ5e2lmKHQmJigib2JqZWN0Ij09dHlwZW9mIHR8fCJmdW5jdGlvbiI9PXR5cGVvZiB0KSl7dmFyIGU9dC50aGVuO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlKXJldHVybiB2b2lkIGUuY2FsbCh0LGZ1bmN0aW9uKHQpe2Eobix0KX0saSl9Y1tuXT10LDA9PS0tdSYmcihjKX1jYXRjaChvKXtpKG8pfX1mb3IodmFyIHQ9MDt0PGMubGVuZ3RoO3QrKylhKHQsY1t0XSl9KX0sRVMucmVzb2x2ZT1mdW5jdGlvbihuKXtyZXR1cm4gbiYmIm9iamVjdCI9PXR5cGVvZiBuJiZuLmNvbnN0cnVjdG9yPT09RVM/bjpuZXcgRVMoZnVuY3Rpb24odCl7dChuKX0pfSxFUy5yZWplY3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBFUyhmdW5jdGlvbih0LG4pe24oZSl9KX0sRVMucmFjZT1mdW5jdGlvbihyKXtyZXR1cm4gbmV3IEVTKGZ1bmN0aW9uKHQsbil7Zm9yKHZhciBlPTAsbz1yO2U8by5sZW5ndGg7ZSsrKW9bZV0udGhlbih0LG4pfSl9LEVTKTtmdW5jdGlvbiBBUyh0LG4pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0LmFwcGx5KG4sYXJndW1lbnRzKX19ZnVuY3Rpb24gRlMobyl7dmFyIHI9dGhpcztudWxsIT09dGhpcy5fc3RhdGU/QlMoZnVuY3Rpb24oKXt2YXIgdD1yLl9zdGF0ZT9vLm9uRnVsZmlsbGVkOm8ub25SZWplY3RlZDtpZihudWxsIT09dCl7dmFyIG47dHJ5e249dChyLl92YWx1ZSl9Y2F0Y2goZSl7cmV0dXJuIHZvaWQgby5yZWplY3QoZSl9by5yZXNvbHZlKG4pfWVsc2Uoci5fc3RhdGU/by5yZXNvbHZlOm8ucmVqZWN0KShyLl92YWx1ZSl9KTp0aGlzLl9kZWZlcnJlZHMucHVzaChvKX1mdW5jdGlvbiBJUyh0KXt0cnl7aWYodD09PXRoaXMpdGhyb3cgbmV3IFR5cGVFcnJvcigiQSBwcm9taXNlIGNhbm5vdCBiZSByZXNvbHZlZCB3aXRoIGl0c2VsZi4iKTtpZih0JiYoIm9iamVjdCI9PXR5cGVvZiB0fHwiZnVuY3Rpb24iPT10eXBlb2YgdCkpe3ZhciBuPXQudGhlbjtpZigiZnVuY3Rpb24iPT10eXBlb2YgbilyZXR1cm4gdm9pZCBQUyhBUyhuLHQpLEFTKElTLHRoaXMpLEFTKFJTLHRoaXMpKX10aGlzLl9zdGF0ZT0hMCx0aGlzLl92YWx1ZT10LFZTLmNhbGwodGhpcyl9Y2F0Y2goZSl7UlMuY2FsbCh0aGlzLGUpfX1mdW5jdGlvbiBSUyh0KXt0aGlzLl9zdGF0ZT0hMSx0aGlzLl92YWx1ZT10LFZTLmNhbGwodGhpcyl9ZnVuY3Rpb24gVlMoKXtmb3IodmFyIHQ9MCxuPXRoaXMuX2RlZmVycmVkczt0PG4ubGVuZ3RoO3QrKyl7dmFyIGU9blt0XTtGUy5jYWxsKHRoaXMsZSl9dGhpcy5fZGVmZXJyZWRzPVtdfWZ1bmN0aW9uIEhTKHQsbixlLG8pe3RoaXMub25GdWxmaWxsZWQ9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpudWxsLHRoaXMub25SZWplY3RlZD0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOm51bGwsdGhpcy5yZXNvbHZlPWUsdGhpcy5yZWplY3Q9b31mdW5jdGlvbiBQUyh0LG4sZSl7dmFyIG89ITE7dHJ5e3QoZnVuY3Rpb24odCl7b3x8KG89ITAsbih0KSl9LGZ1bmN0aW9uKHQpe298fChvPSEwLGUodCkpfSl9Y2F0Y2gocil7aWYobylyZXR1cm47bz0hMCxlKHIpfX1mdW5jdGlvbiB6UyhlKXtyZXR1cm4gbmV3IE1TKGZ1bmN0aW9uKHQsbil7KGZ1bmN0aW9uIHAodCl7dmFyIG49dC5zcGxpdCgiLCIpLGU9L2RhdGE6KFteO10rKS8uZXhlYyhuWzBdKTtpZighZSlyZXR1cm4gc3Qubm9uZSgpO2Zvcih2YXIgbz1lWzFdLHI9blsxXSxpPW50LmF0b2IociksdT1pLmxlbmd0aCxhPU1hdGguY2VpbCh1LzEwMjQpLGM9bmV3IEFycmF5KGEpLHM9MDtzPGE7KytzKXtmb3IodmFyIGw9MTAyNCpzLGY9TWF0aC5taW4oMTAyNCtsLHUpLGQ9bmV3IEFycmF5KGYtbCksbT1sLGc9MDttPGY7KytnLCsrbSlkW2ddPWlbbV0uY2hhckNvZGVBdCgwKTtjW3NdPW5ldyBVaW50OEFycmF5KGQpfXJldHVybiBzdC5zb21lKG5ldyBudC5CbG9iKGMse3R5cGU6b30pKX0pKGUpLmZvbGQoZnVuY3Rpb24oKXtuKCJ1cmkgaXMgbm90IGJhc2U2NDogIitlKX0sdCl9KX1mdW5jdGlvbiBOUyh0LG8scil7cmV0dXJuIG89b3x8ImltYWdlL3BuZyIsbnQuSFRNTENhbnZhc0VsZW1lbnQucHJvdG90eXBlLnRvQmxvYj9uZXcgTVMoZnVuY3Rpb24obixlKXt0LnRvQmxvYihmdW5jdGlvbih0KXt0P24odCk6ZSgpfSxvLHIpfSk6elModC50b0RhdGFVUkwobyxyKSl9ZnVuY3Rpb24gTFModCl7cmV0dXJuIGZ1bmN0aW9uIG4oYSl7cmV0dXJuIG5ldyBNUyhmdW5jdGlvbih0LG4pe3ZhciBlPW50LlVSTC5jcmVhdGVPYmplY3RVUkwoYSksbz1uZXcgbnQuSW1hZ2Uscj1mdW5jdGlvbigpe28ucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsaSksby5yZW1vdmVFdmVudExpc3RlbmVyKCJlcnJvciIsdSl9O2Z1bmN0aW9uIGkoKXtyKCksdChvKX1mdW5jdGlvbiB1KCl7cigpLG4oIlVuYWJsZSB0byBsb2FkIGRhdGEgb2YgdHlwZSAiK2EudHlwZSsiOiAiK2UpfW8uYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsaSksby5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsdSksby5zcmM9ZSxvLmNvbXBsZXRlJiZpKCl9KX0odCkudGhlbihmdW5jdGlvbih0KXshZnVuY3Rpb24gZSh0KXtudC5VUkwucmV2b2tlT2JqZWN0VVJMKHQuc3JjKX0odCk7dmFyIG49U1MoX1ModCksVFModCkpO3JldHVybiBDUyhuKS5kcmF3SW1hZ2UodCwwLDApLG59KX1mdW5jdGlvbiBqUyh0LG4sZSl7dmFyIG89bi50eXBlO2Z1bmN0aW9uIHIobixlKXtyZXR1cm4gdC50aGVuKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbiBvKHQsbixlKXtyZXR1cm4gbj1ufHwiaW1hZ2UvcG5nIix0LnRvRGF0YVVSTChuLGUpfSh0LG4sZSl9KX1yZXR1cm57Z2V0VHlwZTphdChvKSx0b0Jsb2I6ZnVuY3Rpb24gaSgpe3JldHVybiBNUy5yZXNvbHZlKG4pfSx0b0RhdGFVUkw6YXQoZSksdG9CYXNlNjQ6ZnVuY3Rpb24gdSgpe3JldHVybiBlLnNwbGl0KCIsIilbMV19LHRvQWRqdXN0ZWRCbG9iOmZ1bmN0aW9uIGEobixlKXtyZXR1cm4gdC50aGVuKGZ1bmN0aW9uKHQpe3JldHVybiBOUyh0LG4sZSl9KX0sdG9BZGp1c3RlZERhdGFVUkw6cix0b0FkanVzdGVkQmFzZTY0OmZ1bmN0aW9uIGModCxuKXtyZXR1cm4gcih0LG4pLnRoZW4oZnVuY3Rpb24odCl7cmV0dXJuIHQuc3BsaXQoIiwiKVsxXX0pfSx0b0NhbnZhczpmdW5jdGlvbiBzKCl7cmV0dXJuIHQudGhlbihrUyl9fX1mdW5jdGlvbiBVUyhuKXtyZXR1cm4gZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3IE1TKGZ1bmN0aW9uKHQpe3ZhciBuPW5ldyBudC5GaWxlUmVhZGVyO24ub25sb2FkZW5kPWZ1bmN0aW9uKCl7dChuLnJlc3VsdCl9LG4ucmVhZEFzRGF0YVVSTChlKX0pfShuKS50aGVuKGZ1bmN0aW9uKHQpe3JldHVybiBqUyhMUyhuKSxuLHQpfSl9ZnVuY3Rpb24gV1Mobix0KXtyZXR1cm4gTlMobix0KS50aGVuKGZ1bmN0aW9uKHQpe3JldHVybiBqUyhNUy5yZXNvbHZlKG4pLHQsbi50b0RhdGFVUkwoKSl9KX1mdW5jdGlvbiBHUyh0LG4sZSl7dmFyIG89InN0cmluZyI9PXR5cGVvZiB0P3BhcnNlRmxvYXQodCk6dDtyZXR1cm4gZTxvP289ZTpvPG4mJihvPW4pLG99ZnVuY3Rpb24gWFMoKXtyZXR1cm5bMSwwLDAsMCwwLDAsMSwwLDAsMCwwLDAsMSwwLDAsMCwwLDAsMSwwLDAsMCwwLDAsMV19dmFyIFlTPVswLC4wMSwuMDIsLjA0LC4wNSwuMDYsLjA3LC4wOCwuMSwuMTEsLjEyLC4xNCwuMTUsLjE2LC4xNywuMTgsLjIsLjIxLC4yMiwuMjQsLjI1LC4yNywuMjgsLjMsLjMyLC4zNCwuMzYsLjM4LC40LC40MiwuNDQsLjQ2LC40OCwuNSwuNTMsLjU2LC41OSwuNjIsLjY1LC42OCwuNzEsLjc0LC43NywuOCwuODMsLjg2LC44OSwuOTIsLjk1LC45OCwxLDEuMDYsMS4xMiwxLjE4LDEuMjQsMS4zLDEuMzYsMS40MiwxLjQ4LDEuNTQsMS42LDEuNjYsMS43MiwxLjc4LDEuODQsMS45LDEuOTYsMiwyLjEyLDIuMjUsMi4zNywyLjUsMi42MiwyLjc1LDIuODcsMywzLjIsMy40LDMuNiwzLjgsNCw0LjMsNC43LDQuOSw1LDUuNSw2LDYuNSw2LjgsNyw3LjMsNy41LDcuOCw4LDguNCw4LjcsOSw5LjQsOS42LDkuOCwxMF07ZnVuY3Rpb24gcVModCxuKXtmb3IodmFyIGUsbz1bXSxyPW5ldyBBcnJheSgyNSksaT0wO2k8NTtpKyspe2Zvcih2YXIgdT0wO3U8NTt1Kyspb1t1XT1uW3UrNSppXTtmb3IodT0wO3U8NTt1Kyspe2Zvcih2YXIgYT1lPTA7YTw1O2ErKyllKz10W3UrNSphXSpvW2FdO3JbdSs1KmldPWV9fXJldHVybiByfWZ1bmN0aW9uIEtTKG4sZSl7cmV0dXJuIG4udG9DYW52YXMoKS50aGVuKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbiBpKHQsbixlKXt2YXIgbz1DUyh0KTt2YXIgcj1mdW5jdGlvbiBFKHQsbil7Zm9yKHZhciBlLG8scixpLHU9dC5kYXRhLGE9blswXSxjPW5bMV0scz1uWzJdLGw9blszXSxmPW5bNF0sZD1uWzVdLG09bls2XSxnPW5bN10scD1uWzhdLGg9bls5XSx2PW5bMTBdLGI9blsxMV0seT1uWzEyXSx4PW5bMTNdLHc9blsxNF0sUz1uWzE1XSxrPW5bMTZdLEM9blsxN10sTz1uWzE4XSxfPW5bMTldLFQ9MDtUPHUubGVuZ3RoO1QrPTQpZT11W1RdLG89dVtUKzFdLHI9dVtUKzJdLGk9dVtUKzNdLHVbVF09ZSphK28qYytyKnMraSpsK2YsdVtUKzFdPWUqZCtvKm0rcipnK2kqcCtoLHVbVCsyXT1lKnYrbypiK3IqeStpKngrdyx1W1QrM109ZSpTK28qaytyKkMraSpPK187cmV0dXJuIHR9KG8uZ2V0SW1hZ2VEYXRhKDAsMCx0LndpZHRoLHQuaGVpZ2h0KSxlKTtyZXR1cm4gby5wdXRJbWFnZURhdGEociwwLDApLFdTKHQsbil9KHQsbi5nZXRUeXBlKCksZSl9KX1mdW5jdGlvbiBKUyhuLGUpe3JldHVybiBuLnRvQ2FudmFzKCkudGhlbihmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24gdSh0LG4sZSl7dmFyIG89Q1ModCk7dmFyIHI9by5nZXRJbWFnZURhdGEoMCwwLHQud2lkdGgsdC5oZWlnaHQpLGk9by5nZXRJbWFnZURhdGEoMCwwLHQud2lkdGgsdC5oZWlnaHQpO3JldHVybiBpPWZ1bmN0aW9uIHcodCxuLGUpe2Z1bmN0aW9uIG8odCxuLGUpe3JldHVybiBlPHQ/dD1lOnQ8biYmKHQ9biksdH1mb3IodmFyIHI9TWF0aC5yb3VuZChNYXRoLnNxcnQoZS5sZW5ndGgpKSxpPU1hdGguZmxvb3Ioci8yKSx1PXQuZGF0YSxhPW4uZGF0YSxjPXQud2lkdGgscz10LmhlaWdodCxsPTA7bDxzO2wrKylmb3IodmFyIGY9MDtmPGM7ZisrKXtmb3IodmFyIGQ9MCxtPTAsZz0wLHA9MDtwPHI7cCsrKWZvcih2YXIgaD0wO2g8cjtoKyspe3ZhciB2PW8oZitoLWksMCxjLTEpLGI9NCoobyhsK3AtaSwwLHMtMSkqYyt2KSx5PWVbcCpyK2hdO2QrPXVbYl0qeSxtKz11WzErYl0qeSxnKz11WzIrYl0qeX12YXIgeD00KihsKmMrZik7YVt4XT1vKGQsMCwyNTUpLGFbMSt4XT1vKG0sMCwyNTUpLGFbMit4XT1vKGcsMCwyNTUpfXJldHVybiBufShyLGksZSksby5wdXRJbWFnZURhdGEoaSwwLDApLFdTKHQsbil9KHQsbi5nZXRUeXBlKCksZSl9KX1mdW5jdGlvbiAkUyhlKXtyZXR1cm4gZnVuY3Rpb24odCxuKXtyZXR1cm4gS1ModCxlKFhTKCksbikpfX12YXIgUVM9ZnVuY3Rpb24gTEYobil7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBLUyh0LG4pfX0oWy0xLDAsMCwwLDI1NSwwLC0xLDAsMCwyNTUsMCwwLC0xLDAsMjU1LDAsMCwwLDEsMCwwLDAsMCwwLDFdKSxaUz0kUyhmdW5jdGlvbiBqRih0LG4pe3JldHVybiBxUyh0LFsxLDAsMCwwLG49R1MoMjU1Km4sLTI1NSwyNTUpLDAsMSwwLDAsbiwwLDAsMSwwLG4sMCwwLDAsMSwwLDAsMCwwLDAsMV0pfSksdGs9JFMoZnVuY3Rpb24gVUYodCxuKXt2YXIgZTtyZXR1cm4gbj1HUyhuLC0xLDEpLHFTKHQsWyhlPShuKj0xMDApPDA/MTI3K24vMTAwKjEyNzoxMjcqKGU9MD09PShlPW4lMSk/WVNbbl06WVNbTWF0aC5mbG9vcihuKV0qKDEtZSkrWVNbTWF0aC5mbG9vcihuKSsxXSplKSsxMjcpLzEyNywwLDAsMCwuNSooMTI3LWUpLDAsZS8xMjcsMCwwLC41KigxMjctZSksMCwwLGUvMTI3LDAsLjUqKDEyNy1lKSwwLDAsMCwxLDAsMCwwLDAsMCwxXSl9KSxuaz1mdW5jdGlvbih0LG4sZSxvKXtyZXR1cm4gS1ModCxmdW5jdGlvbiByKHQsbixlLG8pe3JldHVybiBxUyh0LFtuPUdTKG4sMCwyKSwwLDAsMCwwLDAsZT1HUyhlLDAsMiksMCwwLDAsMCwwLG89R1MobywwLDIpLDAsMCwwLDAsMCwxLDAsMCwwLDAsMCwxXSl9KFhTKCksbixlLG8pKX0sZWs9ZnVuY3Rpb24gV0Yobil7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBKUyh0LG4pfX0oWzAsLTEsMCwtMSw1LC0xLDAsLTEsMF0pLG9rPWZ1bmN0aW9uIEdGKGMpe3ZhciBvPWZ1bmN0aW9uKHQsbixlKXt2YXIgbz1DUyh0KSxyPW5ldyBBcnJheSgyNTYpO2Zvcih2YXIgaT0wO2k8ci5sZW5ndGg7aSsrKXJbaV09YyhpLGUpO3ZhciB1PWZ1bmN0aW9uIGEodCxuKXtmb3IodmFyIGU9dC5kYXRhLG89MDtvPGUubGVuZ3RoO28rPTQpZVtvXT1uW2Vbb11dLGVbbysxXT1uW2VbbysxXV0sZVtvKzJdPW5bZVtvKzJdXTtyZXR1cm4gdH0oby5nZXRJbWFnZURhdGEoMCwwLHQud2lkdGgsdC5oZWlnaHQpLHIpO3JldHVybiBvLnB1dEltYWdlRGF0YSh1LDAsMCksV1ModCxuKX07cmV0dXJuIGZ1bmN0aW9uKG4sZSl7cmV0dXJuIG4udG9DYW52YXMoKS50aGVuKGZ1bmN0aW9uKHQpe3JldHVybiBvKHQsbi5nZXRUeXBlKCksZSl9KX19KGZ1bmN0aW9uKHQsbil7cmV0dXJuIDI1NSpNYXRoLnBvdyh0LzI1NSwxLW4pfSk7ZnVuY3Rpb24gcmsodCxuLGUpe3ZhciBvPV9TKHQpLHI9VFModCksaT1uL28sdT1lL3IsYT0hMTsoaTwuNXx8MjxpKSYmKGk9aTwuNT8uNToyLGE9ITApLCh1PC41fHwyPHUpJiYodT11PC41Py41OjIsYT0hMCk7dmFyIGM9ZnVuY3Rpb24gcyh1LGEsYyl7cmV0dXJuIG5ldyBNUyhmdW5jdGlvbih0KXt2YXIgbj1fUyh1KSxlPVRTKHUpLG89TWF0aC5mbG9vcihuKmEpLHI9TWF0aC5mbG9vcihlKmMpLGk9U1MobyxyKTtDUyhpKS5kcmF3SW1hZ2UodSwwLDAsbixlLDAsMCxvLHIpLHQoaSl9KX0odCxpLHUpO3JldHVybiBhP2MudGhlbihmdW5jdGlvbih0KXtyZXR1cm4gcmsodCxuLGUpfSk6Y31mdW5jdGlvbiBpayhuLGUpe3JldHVybiBuLnRvQ2FudmFzKCkudGhlbihmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24gYSh0LG4sZSl7dmFyIG89U1ModC53aWR0aCx0LmhlaWdodCkscj1DUyhvKSxpPTAsdT0wOzkwIT09KGU9ZTwwPzM2MCtlOmUpJiYyNzAhPT1lfHxPUyhvLG8uaGVpZ2h0LG8ud2lkdGgpOzkwIT09ZSYmMTgwIT09ZXx8KGk9by53aWR0aCk7MjcwIT09ZSYmMTgwIT09ZXx8KHU9by5oZWlnaHQpO3JldHVybiByLnRyYW5zbGF0ZShpLHUpLHIucm90YXRlKGUqTWF0aC5QSS8xODApLHIuZHJhd0ltYWdlKHQsMCwwKSxXUyhvLG4pfSh0LG4uZ2V0VHlwZSgpLGUpfSl9ZnVuY3Rpb24gdWsobixlKXtyZXR1cm4gbi50b0NhbnZhcygpLnRoZW4oZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uIGkodCxuLGUpe3ZhciBvPVNTKHQud2lkdGgsdC5oZWlnaHQpLHI9Q1Mobyk7InYiPT09ZT8oci5zY2FsZSgxLC0xKSxyLmRyYXdJbWFnZSh0LDAsLW8uaGVpZ2h0KSk6KHIuc2NhbGUoLTEsMSksci5kcmF3SW1hZ2UodCwtby53aWR0aCwwKSk7cmV0dXJuIFdTKG8sbil9KHQsbi5nZXRUeXBlKCksZSl9KX1mdW5jdGlvbiBhayhuLGUsbyxyLGkpe3JldHVybiBuLnRvQ2FudmFzKCkudGhlbihmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24gYSh0LG4sZSxvLHIsaSl7dmFyIHU9U1MocixpKTtyZXR1cm4gQ1ModSkuZHJhd0ltYWdlKHQsLWUsLW8pLFdTKHUsbil9KHQsbi5nZXRUeXBlKCksZSxvLHIsaSl9KX12YXIgY2s9ZnVuY3Rpb24odCl7cmV0dXJuIFFTKHQpfSxzaz1mdW5jdGlvbih0KXtyZXR1cm4gZWsodCl9LGxrPWZ1bmN0aW9uKHQsbil7cmV0dXJuIG9rKHQsbil9LGZrPWZ1bmN0aW9uKHQsbil7cmV0dXJuIFpTKHQsbil9LGRrPWZ1bmN0aW9uKHQsbil7cmV0dXJuIHRrKHQsbil9LG1rPWZ1bmN0aW9uKHQsbil7cmV0dXJuIHVrKHQsbil9LGdrPWZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gZnVuY3Rpb24gcihuLGUsbyl7cmV0dXJuIG4udG9DYW52YXMoKS50aGVuKGZ1bmN0aW9uKHQpe3JldHVybiByayh0LGUsbykudGhlbihmdW5jdGlvbih0KXtyZXR1cm4gV1ModCxuLmdldFR5cGUoKSl9KX0pfSh0LG4sZSl9LHBrPWZ1bmN0aW9uKHQsbil7cmV0dXJuIGlrKHQsbil9LGhrPWZ1bmN0aW9uKHQsbil7cmV0dXJuIGV0KHtkb206e3RhZzoic3BhbiIsaW5uZXJIdG1sOnQsY2xhc3NlczpbInRveC1pY29uIiwidG94LXRidG5fX2ljb24td3JhcCJdfX0sbil9LHZrPWZ1bmN0aW9uKHQsbil7cmV0dXJuIGhrKEdnKHQsbikse30pfSxiaz1mdW5jdGlvbih0LG4pe3JldHVybiBoayhHZyh0LG4pLHtiZWhhdmlvdXJzOnphKFtObS5jb25maWcoe30pXSl9KX0seWs9ZnVuY3Rpb24odCxuLGUpe3JldHVybntkb206e3RhZzoic3BhbiIsaW5uZXJIdG1sOmUudHJhbnNsYXRlKHQpLGNsYXNzZXM6W24rIl9fc2VsZWN0LWxhYmVsIl19LGJlaGF2aW91cnM6emEoW05tLmNvbmZpZyh7fSldKX19LHhrPU5yKCJ0b29sYmFyLmJ1dHRvbi5leGVjdXRlIiksd2s9eyJhbGxveS5leGVjdXRlIjpbImRpc2FibGluZyIsImFsbG95LmJhc2UuYmVoYXZpb3VyIiwidG9nZ2xpbmciLCJ0b29sYmFyLWJ1dHRvbi1ldmVudHMiXX0sU2s9TnIoInVwZGF0ZS1tZW51LXRleHQiKSxraz1OcigidXBkYXRlLW1lbnUtaWNvbiIpLENrPWZ1bmN0aW9uKHQsbixvKXt2YXIgZT1jZShaKSxyPXQudGV4dC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIFVnKHlrKHQsbixvLnByb3ZpZGVycykpfSksaT10Lmljb24ubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBVZyhiayh0LG8ucHJvdmlkZXJzLmljb25zKSl9KSx1PWZ1bmN0aW9uKHQsbil7dmFyIGU9YmwuZ2V0VmFsdWUodCk7cmV0dXJuIFhtLmZvY3VzKGUpLGpvKGUsImtleWRvd24iLHtyYXc6bi5ldmVudCgpLnJhdygpfSksUXkuY2xvc2UoZSksc3Quc29tZSghMCl9LGE9dC5yb2xlLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm57fX0sZnVuY3Rpb24odCl7cmV0dXJue3JvbGU6dH19KSxjPXQudG9vbHRpcC5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJue319LGZ1bmN0aW9uKHQpe3ZhciBuPW8ucHJvdmlkZXJzLnRyYW5zbGF0ZSh0KTtyZXR1cm57dGl0bGU6biwiYXJpYS1sYWJlbCI6bn19KTtyZXR1cm4gVWcoUXkuc2tldGNoKGV0KGV0KHt9LGEpLHtkb206e3RhZzoiYnV0dG9uIixjbGFzc2VzOltuLG4rIi0tc2VsZWN0Il0uY29uY2F0KFYodC5jbGFzc2VzLGZ1bmN0aW9uKHQpe3JldHVybiBuKyItLSIrdH0pKSxhdHRyaWJ1dGVzOmV0KHt9LGMpfSxjb21wb25lbnRzOlpoKFtpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5hc1NwZWMoKX0pLHIubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LmFzU3BlYygpfSksc3Quc29tZSh7ZG9tOnt0YWc6ImRpdiIsY2xhc3NlczpbbisiX19zZWxlY3QtY2hldnJvbiJdLGlubmVySHRtbDpHZygiY2hldnJvbi1kb3duIixvLnByb3ZpZGVycy5pY29ucyl9fSldKSxtYXRjaFdpZHRoOiEwLHVzZU1pbldpZHRoOiEwLGRyb3Bkb3duQmVoYXZpb3Vyczp6YShiKHQuZHJvcGRvd25CZWhhdmlvdXJzLFtHaChmdW5jdGlvbigpe3JldHVybiB0LmRpc2FibGVkfHxvLnByb3ZpZGVycy5pc1JlYWRPbmx5KCl9KSxVaCgpLFp5LmNvbmZpZyh7fSksTm0uY29uZmlnKHt9KSxMbSgiZHJvcGRvd24tZXZlbnRzIixbS2godCxlKSxKaCh0LGUpXSksTG0oIm1lbnVidXR0b24tdXBkYXRlLWRpc3BsYXktdGV4dCIsW0pvKFNrLGZ1bmN0aW9uKG4sZSl7ci5iaW5kKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldE9wdChuKX0pLmVhY2goZnVuY3Rpb24odCl7Tm0uc2V0KHQsW1lpKG8ucHJvdmlkZXJzLnRyYW5zbGF0ZShlLmV2ZW50KCkudGV4dCgpKSldKX0pfSksSm8oa2ssZnVuY3Rpb24obixlKXtpLmJpbmQoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0T3B0KG4pfSkuZWFjaChmdW5jdGlvbih0KXtObS5zZXQodCxbYmsoZS5ldmVudCgpLmljb24oKSxvLnByb3ZpZGVycy5pY29ucyldKX0pfSldKV0pKSxldmVudE9yZGVyOkN0KHdrLHttb3VzZWRvd246WyJmb2N1c2luZyIsImFsbG95LmJhc2UuYmVoYXZpb3VyIiwiaXRlbS10eXBlLWV2ZW50cyIsIm5vcm1hbC1kcm9wZG93bi1ldmVudHMiXX0pLHNhbmRib3hCZWhhdmlvdXJzOnphKFtSbS5jb25maWcoe21vZGU6InNwZWNpYWwiLG9uTGVmdDp1LG9uUmlnaHQ6dX0pXSksbGF6eVNpbms6by5nZXRTaW5rLHRvZ2dsZUNsYXNzOm4rIi0tYWN0aXZlIixwYXJ0czp7bWVudTpZdigwLHQuY29sdW1ucyx0LnByZXNldHMpfSxmZXRjaDpmdW5jdGlvbigpe3JldHVybiBoeSh0LmZldGNoKX19KSkpLmFzU3BlYygpfSxPaz1mdW5jdGlvbih0KXtyZXR1cm4ic2VwYXJhdG9yIj09PXQudHlwZX0sX2s9e3R5cGU6InNlcGFyYXRvciJ9LFRrPWZ1bmN0aW9uKHQsZSl7dmFyIG49Tih0LGZ1bmN0aW9uKHQsbil7cmV0dXJuIFMobik/IiI9PT1uP3Q6InwiPT09bj8wPHQubGVuZ3RoJiYhT2sodFt0Lmxlbmd0aC0xXSk/dC5jb25jYXQoW19rXSk6dDp5dChlLG4udG9Mb3dlckNhc2UoKSk/dC5jb25jYXQoW2Vbbi50b0xvd2VyQ2FzZSgpXV0pOnQ6dC5jb25jYXQoW25dKX0sW10pO3JldHVybiAwPG4ubGVuZ3RoJiZPayhuW24ubGVuZ3RoLTFdKSYmbi5wb3AoKSxufSxFaz1mdW5jdGlvbih0LG4pe3JldHVybiB5dCh0LCJnZXRTdWJtZW51SXRlbXMiKT8obz1uLHI9KGU9dCkuZ2V0U3VibWVudUl0ZW1zKCksaT1CayhyLG8pLHtpdGVtOmUsbWVudXM6Q3QoaS5tZW51cyxLdChlLnZhbHVlLGkuaXRlbXMpKSxleHBhbnNpb25zOkN0KGkuZXhwYW5zaW9ucyxLdChlLnZhbHVlLGUudmFsdWUpKX0pOntpdGVtOnQsbWVudXM6e30sZXhwYW5zaW9uczp7fX07dmFyIGUsbyxyLGl9LEJrPWZ1bmN0aW9uKHQscil7dmFyIG49VGsoUyh0KT90LnNwbGl0KCIgIik6dCxyKTtyZXR1cm4geihuLGZ1bmN0aW9uKHQsbil7dmFyIGU9ZnVuY3Rpb24odCl7aWYoT2sodCkpcmV0dXJuIHQ7dmFyIG49YnQodCwidmFsdWUiKS5nZXRPclRodW5rKGZ1bmN0aW9uKCl7cmV0dXJuIE5yKCJnZW5lcmF0ZWQtbWVudS1pdGVtIil9KTtyZXR1cm4gQ3Qoe3ZhbHVlOm59LHQpfShuKSxvPUVrKGUscik7cmV0dXJue21lbnVzOkN0KHQubWVudXMsby5tZW51cyksaXRlbXM6W28uaXRlbV0uY29uY2F0KHQuaXRlbXMpLGV4cGFuc2lvbnM6Q3QodC5leHBhbnNpb25zLG8uZXhwYW5zaW9ucyl9fSx7bWVudXM6e30sZXhwYW5zaW9uczp7fSxpdGVtczpbXX0pfSxEaz1mdW5jdGlvbih0LGUsbyxuKXt2YXIgcj1OcigicHJpbWFyeS1tZW51IiksaT1Cayh0LG8uc2hhcmVkLnByb3ZpZGVycy5tZW51SXRlbXMoKSk7aWYoMD09PWkuaXRlbXMubGVuZ3RoKXJldHVybiBzdC5ub25lKCk7dmFyIHU9cGIocixpLml0ZW1zLGUsbyxuKSxhPWR0KGkubWVudXMsZnVuY3Rpb24odCxuKXtyZXR1cm4gcGIobix0LGUsbywhMSl9KSxjPUN0KGEsS3Qocix1KSk7cmV0dXJuIHN0LmZyb20oRWcudGllcmVkRGF0YShyLGMsaS5leHBhbnNpb25zKSl9LE1rPWZ1bmN0aW9uKGUpe3JldHVybntpc0Rpc2FibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIHBoLmlzRGlzYWJsZWQoZSl9LHNldERpc2FibGVkOmZ1bmN0aW9uKHQpe3JldHVybiBwaC5zZXQoZSx0KX0sc2V0QWN0aXZlOmZ1bmN0aW9uKHQpe3ZhciBuPWUuZWxlbWVudCgpO3Q/KGJpKG4sInRveC10YnRuLS1lbmFibGVkIiksQnIobiwiYXJpYS1wcmVzc2VkIiwhMCkpOih4aShuLCJ0b3gtdGJ0bi0tZW5hYmxlZCIpLEZyKG4sImFyaWEtcHJlc3NlZCIpKX0saXNBY3RpdmU6ZnVuY3Rpb24oKXtyZXR1cm4gd2koZS5lbGVtZW50KCksInRveC10YnRuLS1lbmFibGVkIil9fX0sQWs9ZnVuY3Rpb24odCxuLGUsbyl7cmV0dXJuIENrKHt0ZXh0OnQudGV4dCxpY29uOnQuaWNvbix0b29sdGlwOnQudG9vbHRpcCxyb2xlOm8sZmV0Y2g6ZnVuY3Rpb24obil7dC5mZXRjaChmdW5jdGlvbih0KXtuKERrKHQsJGguQ0xPU0VfT05fRVhFQ1VURSxlLCExKSl9KX0sb25TZXR1cDp0Lm9uU2V0dXAsZ2V0QXBpOk1rLGNvbHVtbnM6MSxwcmVzZXRzOiJub3JtYWwiLGNsYXNzZXM6W10sZHJvcGRvd25CZWhhdmlvdXJzOltEeS5jb25maWcoe30pXX0sbixlLnNoYXJlZCl9LEZrPWZ1bmN0aW9uKG4scixpKXtyZXR1cm4gZnVuY3Rpb24odCl7dChWKG4sZnVuY3Rpb24odCl7dmFyIG4sZSxvPXQudGV4dC5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJue319LGZ1bmN0aW9uKHQpe3JldHVybnt0ZXh0OnR9fSk7cmV0dXJuIGV0KGV0KHt0eXBlOnQudHlwZSxhY3RpdmU6ITF9LG8pLHtvbkFjdGlvbjpmdW5jdGlvbih0KXt2YXIgbj0hdC5pc0FjdGl2ZSgpO3Quc2V0QWN0aXZlKG4pLGUuc3RvcmFnZS5zZXQobiksaS5zaGFyZWQuZ2V0U2luaygpLmVhY2goZnVuY3Rpb24odCl7cigpLmdldE9wdCh0KS5lYWNoKGZ1bmN0aW9uKHQpe0thKHQuZWxlbWVudCgpKSxqbyh0LHFiLHtuYW1lOmUubmFtZSx2YWx1ZTplLnN0b3JhZ2UuZ2V0KCl9KX0pfSl9LG9uU2V0dXA6KG49ZT10LGZ1bmN0aW9uKHQpe3Quc2V0QWN0aXZlKG4uc3RvcmFnZS5nZXQoKSl9KX0pfSkpfX0sSWs9ZnVuY3Rpb24odCxuLGUsbyxyLGkpe3ZvaWQgMD09PWUmJihlPVtdKTt2YXIgdT1uLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm57fX0sZnVuY3Rpb24odCl7cmV0dXJue2FjdGlvbjp0fX0pLGE9ZXQoe2J1dHRvbkJlaGF2aW91cnM6emEoW0doKGZ1bmN0aW9uKCl7cmV0dXJuIHQuZGlzYWJsZWR8fGkuaXNSZWFkT25seSgpfSksVWgoKSxEeS5jb25maWcoe30pLExtKCJidXR0b24gcHJlc3MiLFtLbygiY2xpY2siKSxLbygibW91c2Vkb3duIildKV0uY29uY2F0KGUpKSxldmVudE9yZGVyOntjbGljazpbImJ1dHRvbiBwcmVzcyIsImFsbG95LmJhc2UuYmVoYXZpb3VyIl0sbW91c2Vkb3duOlsiYnV0dG9uIHByZXNzIiwiYWxsb3kuYmFzZS5iZWhhdmlvdXIiXX19LHUpLGM9Q3QoYSx7ZG9tOm99KTtyZXR1cm4gQ3QoYyx7Y29tcG9uZW50czpyfSl9LFJrPWZ1bmN0aW9uKHQsbixlLG8pe3ZvaWQgMD09PW8mJihvPVtdKTt2YXIgcj17dGFnOiJidXR0b24iLGNsYXNzZXM6WyJ0b3gtdGJ0biJdLGF0dHJpYnV0ZXM6dC50b29sdGlwLm1hcChmdW5jdGlvbih0KXtyZXR1cm57ImFyaWEtbGFiZWwiOmUudHJhbnNsYXRlKHQpLHRpdGxlOmUudHJhbnNsYXRlKHQpfX0pLmdldE9yKHt9KX0saT10Lmljb24ubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB2ayh0LGUuaWNvbnMpfSksdT1aaChbaV0pO3JldHVybiBJayh0LG4sbyxyLHUsZSl9LFZrPWZ1bmN0aW9uKHQsbixlLG8pe3ZvaWQgMD09PW8mJihvPVtdKTt2YXIgcj1Sayh0LHN0LnNvbWUobiksZSxvKTtyZXR1cm4gamcuc2tldGNoKHIpfSxIaz1mdW5jdGlvbih0LG4sZSxvLHIpe3ZvaWQgMD09PW8mJihvPVtdKSx2b2lkIDA9PT1yJiYocj1bXSk7dmFyIGk9ZS50cmFuc2xhdGUodC50ZXh0KSx1PXQuaWNvbj90Lmljb24ubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB2ayh0LGUuaWNvbnMpfSk6c3Qubm9uZSgpLGE9dS5pc1NvbWUoKT9aaChbdV0pOltdLGM9dS5pc1NvbWUoKT97fTp7aW5uZXJIdG1sOml9LHM9Yih0LnByaW1hcnl8fHQuYm9yZGVybGVzcz9bInRveC1idXR0b24iXTpbInRveC1idXR0b24iLCJ0b3gtYnV0dG9uLS1zZWNvbmRhcnkiXSx1LmlzU29tZSgpP1sidG94LWJ1dHRvbi0taWNvbiJdOltdLHQuYm9yZGVybGVzcz9bInRveC1idXR0b24tLW5ha2VkIl06W10sciksbD1ldChldCh7dGFnOiJidXR0b24iLGNsYXNzZXM6c30sYykse2F0dHJpYnV0ZXM6e3RpdGxlOml9fSk7cmV0dXJuIElrKHQsbixvLGwsYSxlKX0sUGs9ZnVuY3Rpb24odCxuLGUsbyxyKXt2b2lkIDA9PT1vJiYobz1bXSksdm9pZCAwPT09ciYmKHI9W10pO3ZhciBpPUhrKHQsc3Quc29tZShuKSxlLG8scik7cmV0dXJuIGpnLnNrZXRjaChpKX0sems9ZnVuY3Rpb24obixlKXtyZXR1cm4gZnVuY3Rpb24odCl7ImN1c3RvbSI9PT1lP2pvKHQscWIse25hbWU6bix2YWx1ZTp7fX0pOiJzdWJtaXQiPT09ZT9Mbyh0LEtiKToiY2FuY2VsIj09PWU/TG8odCxZYik6bnQuY29uc29sZS5lcnJvcigiVW5rbm93biBidXR0b24gdHlwZTogIixlKX19LE5rPWZ1bmN0aW9uKG4sdCxlKXtpZigibWVudSI9PT10KXt2YXIgbz1uLHI9ZXQoZXQoe30sbikse29uU2V0dXA6ZnVuY3Rpb24odCl7cmV0dXJuIHQuc2V0RGlzYWJsZWQobi5kaXNhYmxlZCksWn0sZmV0Y2g6Rmsoby5pdGVtcyxmdW5jdGlvbigpe3JldHVybiBpfSxlKX0pLGk9VWcoQWsociwidG94LXRidG4iLGUsc3Qubm9uZSgpKSk7cmV0dXJuIGkuYXNTcGVjKCl9aWYoImN1c3RvbSI9PT0oYz10KXx8ImNhbmNlbCI9PT1jfHwic3VibWl0Ij09PWMpe3ZhciB1PXprKG4ubmFtZSx0KSxhPWV0KGV0KHt9LG4pLHtib3JkZXJsZXNzOiExfSk7cmV0dXJuIFBrKGEsdSxlLnNoYXJlZC5wcm92aWRlcnMsW10pfXZhciBjO250LmNvbnNvbGUuZXJyb3IoIlVua25vd24gZm9vdGVyIGJ1dHRvbiB0eXBlOiAiLHQpfSxMaz1mdW5jdGlvbih0LG4pe3ZhciBlLG8scj16ayh0Lm5hbWUsImN1c3RvbSIpO3JldHVybiBlPXN0Lm5vbmUoKSxvPWV5LnBhcnRzKCkuZmllbGQoZXQoe2ZhY3Rvcnk6amd9LEhrKHQsc3Quc29tZShyKSxuLFtmUygiIiksWncoKV0pKSksTXkoZSxvLFtdLFtdKX0sams9YXQoW1puKCJmaWVsZDFOYW1lIiwiZmllbGQxIiksWm4oImZpZWxkMk5hbWUiLCJmaWVsZDIiKSxadSgib25Mb2NrZWRDaGFuZ2UiKSxLdShbImxvY2tDbGFzcyJdKSxabigibG9ja2VkIiwhMSksU2woImNvdXBsZWRGaWVsZEJlaGF2aW91cnMiLFtNZixibF0pXSksVWs9ZnVuY3Rpb24odCxuKXtyZXR1cm4gcWwoe2ZhY3Rvcnk6ZXksbmFtZTp0LG92ZXJyaWRlczpmdW5jdGlvbihvKXtyZXR1cm57ZmllbGRCZWhhdmlvdXJzOnphKFtMbSgiY291cGxlZC1pbnB1dC1iZWhhdmlvdXIiLFtKbyhzbygpLGZ1bmN0aW9uKGUpe3NmKGUsbyxuKS5iaW5kKE1mLmdldEN1cnJlbnQpLmVhY2goZnVuY3Rpb24obil7c2YoZSxvLCJsb2NrIikuZWFjaChmdW5jdGlvbih0KXtyZy5pc09uKHQpJiZvLm9uTG9ja2VkQ2hhbmdlKGUsbix0KX0pfSl9KV0pXSl9fX0pfSxXaz1hdChbVWsoImZpZWxkMSIsImZpZWxkMiIpLFVrKCJmaWVsZDIiLCJmaWVsZDEiKSxxbCh7ZmFjdG9yeTpqZyxzY2hlbWE6W3puKCJkb20iKV0sbmFtZToibG9jayIsb3ZlcnJpZGVzOmZ1bmN0aW9uKHQpe3JldHVybntidXR0b25CZWhhdmlvdXJzOnphKFtyZy5jb25maWcoe3NlbGVjdGVkOnQubG9ja2VkLHRvZ2dsZUNsYXNzOnQubWFya2Vycy5sb2NrQ2xhc3MsYXJpYTp7bW9kZToicHJlc3NlZCJ9fSldKX19fSldKSxHaz1fZih7bmFtZToiRm9ybUNvdXBsZWRJbnB1dHMiLGNvbmZpZ0ZpZWxkczpqaygpLHBhcnRGaWVsZHM6V2soKSxmYWN0b3J5OmZ1bmN0aW9uKG8sdCxuLGUpe3JldHVybnt1aWQ6by51aWQsZG9tOm8uZG9tLGNvbXBvbmVudHM6dCxiZWhhdmlvdXJzOmtsKG8uY291cGxlZEZpZWxkQmVoYXZpb3VycyxbTWYuY29uZmlnKHtmaW5kOnN0LnNvbWV9KSxibC5jb25maWcoe3N0b3JlOnttb2RlOiJtYW51YWwiLGdldFZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBuLGU9Z2YodCxvLFsiZmllbGQxIiwiZmllbGQyIl0pO3JldHVybihuPXt9KVtvLmZpZWxkMU5hbWVdPWJsLmdldFZhbHVlKGUuZmllbGQxKCkpLG5bby5maWVsZDJOYW1lXT1ibC5nZXRWYWx1ZShlLmZpZWxkMigpKSxufSxzZXRWYWx1ZTpmdW5jdGlvbih0LG4pe3ZhciBlPWdmKHQsbyxbImZpZWxkMSIsImZpZWxkMiJdKTt4dChuLG8uZmllbGQxTmFtZSkmJmJsLnNldFZhbHVlKGUuZmllbGQxKCksbltvLmZpZWxkMU5hbWVdKSx4dChuLG8uZmllbGQyTmFtZSkmJmJsLnNldFZhbHVlKGUuZmllbGQyKCksbltvLmZpZWxkMk5hbWVdKX19fSldKSxhcGlzOntnZXRGaWVsZDE6ZnVuY3Rpb24odCl7cmV0dXJuIHNmKHQsbywiZmllbGQxIil9LGdldEZpZWxkMjpmdW5jdGlvbih0KXtyZXR1cm4gc2YodCxvLCJmaWVsZDIiKX0sZ2V0TG9jazpmdW5jdGlvbih0KXtyZXR1cm4gc2YodCxvLCJsb2NrIil9fX19LGFwaXM6e2dldEZpZWxkMTpmdW5jdGlvbih0LG4pe3JldHVybiB0LmdldEZpZWxkMShuKX0sZ2V0RmllbGQyOmZ1bmN0aW9uKHQsbil7cmV0dXJuIHQuZ2V0RmllbGQyKG4pfSxnZXRMb2NrOmZ1bmN0aW9uKHQsbil7cmV0dXJuIHQuZ2V0TG9jayhuKX19fSksWGs9ZnVuY3Rpb24odCl7dmFyIG49L15ccyooXGQrKD86XC5cZCspPylccyoofGNtfG1tfGlufHB4fHB0fHBjfGVtfGV4fGNofHJlbXx2d3x2aHx2bWlufHZtYXh8JSlccyokLy5leGVjKHQpO2lmKG51bGw9PT1uKXJldHVybiBvdC5lcnJvcih0KTt2YXIgZT1wYXJzZUZsb2F0KG5bMV0pLG89blsyXTtyZXR1cm4gb3QudmFsdWUoe3ZhbHVlOmUsdW5pdDpvfSl9LFlrPWZ1bmN0aW9uKHQsbil7dmFyIGU9eyIiOjk2LHB4Ojk2LHB0OjcyLGNtOjIuNTQscGM6MTIsbW06MjUuNCwiaW4iOjF9LG89ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpfTtyZXR1cm4gdC51bml0PT09bj9zdC5zb21lKHQudmFsdWUpOm8odC51bml0KSYmbyhuKT9lW3QudW5pdF09PT1lW25dP3N0LnNvbWUodC52YWx1ZSk6c3Quc29tZSh0LnZhbHVlL2VbdC51bml0XSplW25dKTpzdC5ub25lKCl9LHFrPWZ1bmN0aW9uKHQpe3JldHVybiBzdC5ub25lKCl9LEtrPWZ1bmN0aW9uKHQsbil7dmFyIGUsbyxyLGk9WGsodCkudG9PcHRpb24oKSx1PVhrKG4pLnRvT3B0aW9uKCk7cmV0dXJuIG89dSxyPWZ1bmN0aW9uKHQsbyl7cmV0dXJuIFlrKHQsby51bml0KS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIG8udmFsdWUvdH0pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gbj10LGU9by51bml0LGZ1bmN0aW9uKHQpe3JldHVybiBZayh0LGUpLm1hcChmdW5jdGlvbih0KXtyZXR1cm57dmFsdWU6dCpuLHVuaXQ6ZX19KX07dmFyIG4sZX0pLmdldE9yKHFrKX0sKChlPWkpLmlzU29tZSgpJiZvLmlzU29tZSgpP3N0LnNvbWUocihlLmdldE9yRGllKCksby5nZXRPckRpZSgpKSk6c3Qubm9uZSgpKS5nZXRPcihxayl9LEprPWZ1bmN0aW9uKG8sbil7dmFyIGE9cWsscj1OcigicmF0aW8tZXZlbnQiKSx0PUdrLnBhcnRzKCkubG9jayh7ZG9tOnt0YWc6ImJ1dHRvbiIsY2xhc3NlczpbInRveC1sb2NrIiwidG94LWJ1dHRvbiIsInRveC1idXR0b24tLW5ha2VkIiwidG94LWJ1dHRvbi0taWNvbiJdLGF0dHJpYnV0ZXM6e3RpdGxlOm4udHJhbnNsYXRlKG8ubGFiZWwuZ2V0T3IoIkNvbnN0cmFpbiBwcm9wb3J0aW9ucyIpKX19LGNvbXBvbmVudHM6W3tkb206e3RhZzoic3BhbiIsY2xhc3NlczpbInRveC1pY29uIiwidG94LWxvY2staWNvbl9fbG9jayJdLGlubmVySHRtbDpHZygibG9jayIsbi5pY29ucyl9fSx7ZG9tOnt0YWc6InNwYW4iLGNsYXNzZXM6WyJ0b3gtaWNvbiIsInRveC1sb2NrLWljb25fX3VubG9jayJdLGlubmVySHRtbDpHZygidW5sb2NrIixuLmljb25zKX19XSxidXR0b25CZWhhdmlvdXJzOnphKFtwaC5jb25maWcoe2Rpc2FibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIG8uZGlzYWJsZWR8fG4uaXNSZWFkT25seSgpfX0pLFVoKCksRHkuY29uZmlnKHt9KV0pfSksZT1mdW5jdGlvbih0KXtyZXR1cm57ZG9tOnt0YWc6ImRpdiIsY2xhc3NlczpbInRveC1mb3JtX19ncm91cCJdfSxjb21wb25lbnRzOnR9fSxpPWZ1bmN0aW9uKGUpe3JldHVybiBleS5wYXJ0cygpLmZpZWxkKHtmYWN0b3J5OnV5LGlucHV0Q2xhc3NlczpbInRveC10ZXh0ZmllbGQiXSxpbnB1dEJlaGF2aW91cnM6emEoW3BoLmNvbmZpZyh7ZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5kaXNhYmxlZHx8bi5pc1JlYWRPbmx5KCl9fSksVWgoKSxEeS5jb25maWcoe30pLExtKCJzaXplLWlucHV0LWV2ZW50cyIsW0pvKGlvKCksZnVuY3Rpb24odCxuKXtqbyh0LHIse2lzRmllbGQxOmV9KX0pLEpvKGxvKCksZnVuY3Rpb24odCxuKXtqbyh0LEdiLHtuYW1lOm8ubmFtZX0pfSldKV0pLHNlbGVjdE9uRm9jdXM6ITF9KX0sdT1mdW5jdGlvbih0KXtyZXR1cm57ZG9tOnt0YWc6ImxhYmVsIixjbGFzc2VzOlsidG94LWxhYmVsIl0saW5uZXJIdG1sOm4udHJhbnNsYXRlKHQpfX19LGM9R2sucGFydHMoKS5maWVsZDEoZShbZXkucGFydHMoKS5sYWJlbCh1KCJXaWR0aCIpKSxpKCEwKV0pKSxzPUdrLnBhcnRzKCkuZmllbGQyKGUoW2V5LnBhcnRzKCkubGFiZWwodSgiSGVpZ2h0IikpLGkoITEpXSkpO3JldHVybiBHay5za2V0Y2goe2RvbTp7dGFnOiJkaXYiLGNsYXNzZXM6WyJ0b3gtZm9ybV9fZ3JvdXAiXX0sY29tcG9uZW50czpbe2RvbTp7dGFnOiJkaXYiLGNsYXNzZXM6WyJ0b3gtZm9ybV9fY29udHJvbHMtaC1zdGFjayJdfSxjb21wb25lbnRzOltjLHMsZShbdSgiJm5ic3A7IiksdF0pXX1dLGZpZWxkMU5hbWU6IndpZHRoIixmaWVsZDJOYW1lOiJoZWlnaHQiLGxvY2tlZDohMCxtYXJrZXJzOntsb2NrQ2xhc3M6InRveC1sb2NrZWQifSxvbkxvY2tlZENoYW5nZTpmdW5jdGlvbih0LGksbil7WGsoYmwuZ2V0VmFsdWUodCkpLmVhY2goZnVuY3Rpb24odCl7YSh0KS5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBuLGUsbyxyO2JsLnNldFZhbHVlKGksKG89eyIiOjAscHg6MCxwdDoxLG1tOjEscGM6MixleDoyLGVtOjIsY2g6MixyZW06MixjbTozLCJpbiI6NCwiJSI6NH0sLTEhPT0ocj0obj10KS52YWx1ZS50b0ZpeGVkKChlPW4udW5pdClpbiBvP29bZV06MSkpLmluZGV4T2YoIi4iKSYmKHI9ci5yZXBsYWNlKC9cLj8wKiQvLCIiKSkscituLnVuaXQpKX0pfSl9LGNvdXBsZWRGaWVsZEJlaGF2aW91cnM6emEoW3BoLmNvbmZpZyh7ZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5kaXNhYmxlZHx8bi5pc1JlYWRPbmx5KCl9LG9uRGlzYWJsZWQ6ZnVuY3Rpb24odCl7R2suZ2V0RmllbGQxKHQpLmJpbmQoZXkuZ2V0RmllbGQpLmVhY2gocGguZGlzYWJsZSksR2suZ2V0RmllbGQyKHQpLmJpbmQoZXkuZ2V0RmllbGQpLmVhY2gocGguZGlzYWJsZSksR2suZ2V0TG9jayh0KS5lYWNoKHBoLmRpc2FibGUpfSxvbkVuYWJsZWQ6ZnVuY3Rpb24odCl7R2suZ2V0RmllbGQxKHQpLmJpbmQoZXkuZ2V0RmllbGQpLmVhY2gocGguZW5hYmxlKSxHay5nZXRGaWVsZDIodCkuYmluZChleS5nZXRGaWVsZCkuZWFjaChwaC5lbmFibGUpLEdrLmdldExvY2sodCkuZWFjaChwaC5lbmFibGUpfX0pLFVoKCksTG0oInNpemUtaW5wdXQtZXZlbnRzMiIsW0pvKHIsZnVuY3Rpb24odCxuKXt2YXIgZT1uLmV2ZW50KCkuaXNGaWVsZDEoKSxvPWU/R2suZ2V0RmllbGQxKHQpOkdrLmdldEZpZWxkMih0KSxyPWU/R2suZ2V0RmllbGQyKHQpOkdrLmdldEZpZWxkMSh0KSxpPW8ubWFwKGJsLmdldFZhbHVlKS5nZXRPcigiIiksdT1yLm1hcChibC5nZXRWYWx1ZSkuZ2V0T3IoIiIpO2E9S2soaSx1KX0pXSldKX0pfSwkaz17dW5kbzphdChOcigidW5kbyIpKSxyZWRvOmF0KE5yKCJyZWRvIikpLHpvb206YXQoTnIoInpvb20iKSksYmFjazphdChOcigiYmFjayIpKSxhcHBseTphdChOcigiYXBwbHkiKSksc3dhcDphdChOcigic3dhcCIpKSx0cmFuc2Zvcm06YXQoTnIoInRyYW5zZm9ybSIpKSx0ZW1wVHJhbnNmb3JtOmF0KE5yKCJ0ZW1wLXRyYW5zZm9ybSIpKSx0cmFuc2Zvcm1BcHBseTphdChOcigidHJhbnNmb3JtLWFwcGx5IikpfSxRaz1hdCgic2F2ZS1zdGF0ZSIpLFprPWF0KCJkaXNhYmxlIiksdEM9YXQoImVuYWJsZSIpLG5DPXtmb3JtQWN0aW9uRXZlbnQ6cWIsc2F2ZVN0YXRlOlFrLGRpc2FibGU6WmssZW5hYmxlOnRDfSxlQz1mdW5jdGlvbihhLGMpe3ZhciB0PWZ1bmN0aW9uKHQsbixlLG8pe3JldHVybiBVZyhQayh7bmFtZTp0LHRleHQ6dCxkaXNhYmxlZDplLHByaW1hcnk6byxpY29uOnN0Lm5vbmUoKSxib3JkZXJsZXNzOiExfSxuLGMpKX0sbj1mdW5jdGlvbih0LG4sZSxvKXtyZXR1cm4gVWcoVmsoe25hbWU6dCxpY29uOnN0LnNvbWUodCksdG9vbHRpcDpzdC5zb21lKG4pLGRpc2FibGVkOm8scHJpbWFyeTohMSxib3JkZXJsZXNzOiExfSxlLGMpKX0sdT1mdW5jdGlvbih0LGUpe3QubWFwKGZ1bmN0aW9uKHQpe3ZhciBuPXQuZ2V0KGUpO24uaGFzQ29uZmlndXJlZChwaCkmJnBoLmRpc2FibGUobil9KX0scz1mdW5jdGlvbih0LGUpe3QubWFwKGZ1bmN0aW9uKHQpe3ZhciBuPXQuZ2V0KGUpO24uaGFzQ29uZmlndXJlZChwaCkmJnBoLmVuYWJsZShuKX0pfSxsPXt0YWc6ImRpdiIsY2xhc3NlczpbInRveC1pbWFnZS10b29sc19fdG9vbGJhciIsInRveC1pbWFnZS10b29scy1lZGl0LXBhbmVsIl19LGU9WixyPWZ1bmN0aW9uKHQsbixlKXtqbyh0LG4sZSl9LGk9ZnVuY3Rpb24odCl7cmV0dXJuIExvKHQsbkMuZGlzYWJsZSgpKX0sZj1mdW5jdGlvbih0KXtyZXR1cm4gTG8odCxuQy5lbmFibGUoKSl9LGQ9ZnVuY3Rpb24odCxuKXtpKHQpLHIodCwkay50cmFuc2Zvcm0oKSx7dHJhbnNmb3JtOm59KSxmKHQpfSxvPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe1EuZ2V0T3B0KHQpLmVhY2goZnVuY3Rpb24odCl7Tm0uc2V0KHQsW0pdKX0pfX0sbT1mdW5jdGlvbih0LG4pe2kodCkscih0LCRrLnRyYW5zZm9ybUFwcGx5KCkse3RyYW5zZm9ybTpuLHN3YXA6byh0KX0pLGYodCl9LGc9ZnVuY3Rpb24oKXtyZXR1cm4gdCgiQmFjayIsZnVuY3Rpb24odCl7cmV0dXJuIHIodCwkay5iYWNrKCkse3N3YXA6byh0KX0pfSwhMSwhMSl9LHA9ZnVuY3Rpb24oKXtyZXR1cm4gVWcoe2RvbTp7dGFnOiJkaXYiLGNsYXNzZXM6WyJ0b3gtc3BhY2VyIl19LGJlaGF2aW91cnM6emEoW3BoLmNvbmZpZyh7fSldKX0pfSxoPWZ1bmN0aW9uKCl7cmV0dXJuIHQoIkFwcGx5IixmdW5jdGlvbih0KXtyZXR1cm4gcih0LCRrLmFwcGx5KCkse3N3YXA6byh0KX0pfSwhMCwhMCl9LHY9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIG4sZSxvLHIsaSx1PWEuZ2V0UmVjdCgpO3JldHVybiBuPXQsZT11Lngsbz11Lnkscj11LncsaT11LmgsYWsobixlLG8scixpKX19LGI9W2coKSxwKCksdCgiQXBwbHkiLGZ1bmN0aW9uKHQpe3ZhciBuPXYoKTttKHQsbiksYS5oaWRlQ3JvcCgpfSwhMSwhMCldLHk9VWIuc2tldGNoKHtkb206bCxjb21wb25lbnRzOmIubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LmFzU3BlYygpfSksY29udGFpbmVyQmVoYXZpb3Vyczp6YShbTG0oImltYWdlLXRvb2xzLWNyb3AtYnV0dG9ucy1ldmVudHMiLFtKbyhuQy5kaXNhYmxlKCksZnVuY3Rpb24odCxuKXt1KGIsdCl9KSxKbyhuQy5lbmFibGUoKSxmdW5jdGlvbih0LG4pe3MoYix0KX0pXSldKX0pLHg9VWcoSmsoe25hbWU6InNpemUiLGxhYmVsOnN0Lm5vbmUoKSxjb25zdHJhaW46ITAsZGlzYWJsZWQ6ITF9LGMpKSx3PVtnKCkscCgpLHgscCgpLHQoIkFwcGx5IixmdW5jdGlvbihhKXt4LmdldE9wdChhKS5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBuLGUsbz1ibC5nZXRWYWx1ZSh0KSxyPXBhcnNlSW50KG8ud2lkdGgsMTApLGk9cGFyc2VJbnQoby5oZWlnaHQsMTApLHU9KG49cixlPWksZnVuY3Rpb24odCl7cmV0dXJuIGdrKHQsbixlKX0pO20oYSx1KX0pfSwhMSwhMCldLFM9VWIuc2tldGNoKHtkb206bCxjb21wb25lbnRzOncubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LmFzU3BlYygpfSksY29udGFpbmVyQmVoYXZpb3Vyczp6YShbTG0oImltYWdlLXRvb2xzLXJlc2l6ZS1idXR0b25zLWV2ZW50cyIsW0pvKG5DLmRpc2FibGUoKSxmdW5jdGlvbih0LG4pe3Uodyx0KX0pLEpvKG5DLmVuYWJsZSgpLGZ1bmN0aW9uKHQsbil7cyh3LHQpfSldKV0pfSksaz1mdW5jdGlvbihuLGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gbih0LGUpfX0sQz1rKG1rLCJoIiksTz1rKG1rLCJ2IiksXz1rKHBrLC05MCksVD1rKHBrLDkwKSxFPWZ1bmN0aW9uKHQsbil7dmFyIGUsbztvPW4saShlPXQpLHIoZSwkay50ZW1wVHJhbnNmb3JtKCkse3RyYW5zZm9ybTpvfSksZihlKX0sQj1bZygpLHAoKSxuKCJmbGlwLWhvcml6b250YWxseSIsIkZsaXAgaG9yaXpvbnRhbGx5IixmdW5jdGlvbih0KXtFKHQsQyl9LCExKSxuKCJmbGlwLXZlcnRpY2FsbHkiLCJGbGlwIHZlcnRpY2FsbHkiLGZ1bmN0aW9uKHQpe0UodCxPKX0sITEpLG4oInJvdGF0ZS1sZWZ0IiwiUm90YXRlIGNvdW50ZXJjbG9ja3dpc2UiLGZ1bmN0aW9uKHQpe0UodCxfKX0sITEpLG4oInJvdGF0ZS1yaWdodCIsIlJvdGF0ZSBjbG9ja3dpc2UiLGZ1bmN0aW9uKHQpe0UodCxUKX0sITEpLHAoKSxoKCldLEQ9VWIuc2tldGNoKHtkb206bCxjb21wb25lbnRzOkIubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LmFzU3BlYygpfSksY29udGFpbmVyQmVoYXZpb3Vyczp6YShbTG0oImltYWdlLXRvb2xzLWZsaXByb3RhdGUtYnV0dG9ucy1ldmVudHMiLFtKbyhuQy5kaXNhYmxlKCksZnVuY3Rpb24odCxuKXt1KEIsdCl9KSxKbyhuQy5lbmFibGUoKSxmdW5jdGlvbih0LG4pe3MoQix0KX0pXSldKX0pLE09ZnVuY3Rpb24odCxuLGUsbyxyKXt2YXIgaT1Mdy5wYXJ0cygpLmxhYmVsKHtkb206e3RhZzoibGFiZWwiLGNsYXNzZXM6WyJ0b3gtbGFiZWwiXSxpbm5lckh0bWw6Yy50cmFuc2xhdGUodCl9fSksdT1Mdy5wYXJ0cygpLnNwZWN0cnVtKHtkb206e3RhZzoiZGl2IixjbGFzc2VzOlsidG94LXNsaWRlcl9fcmFpbCJdLGF0dHJpYnV0ZXM6e3JvbGU6InByZXNlbnRhdGlvbiJ9fX0pLGE9THcucGFydHMoKS50aHVtYih7ZG9tOnt0YWc6ImRpdiIsY2xhc3NlczpbInRveC1zbGlkZXJfX2hhbmRsZSJdLGF0dHJpYnV0ZXM6e3JvbGU6InByZXNlbnRhdGlvbiJ9fX0pO3JldHVybiBVZyhMdy5za2V0Y2goe2RvbTp7dGFnOiJkaXYiLGNsYXNzZXM6WyJ0b3gtc2xpZGVyIl0sYXR0cmlidXRlczp7cm9sZToicHJlc2VudGF0aW9uIn19LG1vZGVsOnttb2RlOiJ4IixtaW5YOmUsbWF4WDpyLGdldEluaXRpYWxWYWx1ZTphdCh7eDphdChvKX0pfSxjb21wb25lbnRzOltpLHUsYV0sc2xpZGVyQmVoYXZpb3Vyczp6YShbWG0uY29uZmlnKHt9KV0pLG9uQ2hvb3NlOm59KSl9LEE9ZnVuY3Rpb24odCxuLGUsbyxyKXtyZXR1cm5bZygpLChpPW4sTSh0LGZ1bmN0aW9uKHQsbixlKXt2YXIgbz1rKGksZS54KCkvMTAwKTtkKHQsbyl9LGUsbyxyKSksaCgpXTt2YXIgaX0sRj1mdW5jdGlvbih0LG4sZSxvLHIpe3ZhciBpPUEodCxuLGUsbyxyKTtyZXR1cm4gVWIuc2tldGNoKHtkb206bCxjb21wb25lbnRzOmkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LmFzU3BlYygpfSksY29udGFpbmVyQmVoYXZpb3Vyczp6YShbTG0oImltYWdlLXRvb2xzLWZpbHRlci1wYW5lbC1idXR0b25zLWV2ZW50cyIsW0pvKG5DLmRpc2FibGUoKSxmdW5jdGlvbih0LG4pe3UoaSx0KX0pLEpvKG5DLmVuYWJsZSgpLGZ1bmN0aW9uKHQsbil7cyhpLHQpfSldKV0pfSl9LEk9W2coKSxwKCksaCgpXSxSPVViLnNrZXRjaCh7ZG9tOmwsY29tcG9uZW50czpJLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5hc1NwZWMoKX0pfSksVj1GKCJCcmlnaHRuZXNzIixmaywtMTAwLDAsMTAwKSxIPUYoIkNvbnRyYXN0IixkaywtMTAwLDAsMTAwKSxQPUYoIkdhbW1hIixsaywtMTAwLDAsMTAwKSx6PWZ1bmN0aW9uKG4sZSxvKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIG5rKHQsbixlLG8pfX0sTj1mdW5jdGlvbih0KXtyZXR1cm4gTSh0LGZ1bmN0aW9uKGEsdCxuKXt2YXIgZT1MLmdldE9wdChhKSxvPVUuZ2V0T3B0KGEpLHI9ai5nZXRPcHQoYSk7ZS5lYWNoKGZ1bmN0aW9uKHUpe28uZWFjaChmdW5jdGlvbihpKXtyLmVhY2goZnVuY3Rpb24odCl7dmFyIG49YmwuZ2V0VmFsdWUodSkueCgpLzEwMCxlPWJsLmdldFZhbHVlKHQpLngoKS8xMDAsbz1ibC5nZXRWYWx1ZShpKS54KCkvMTAwLHI9eihuLGUsbyk7ZChhLHIpfSl9KX0pfSwwLDEwMCwyMDApfSxMPU4oIlIiKSxqPU4oIkciKSxVPU4oIkIiKSxXPVtnKCksTCxqLFUsaCgpXSxHPVViLnNrZXRjaCh7ZG9tOmwsY29tcG9uZW50czpXLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5hc1NwZWMoKX0pfSksWD1mdW5jdGlvbihuLGUsbyl7cmV0dXJuIGZ1bmN0aW9uKHQpe3IodCwkay5zd2FwKCkse3RyYW5zZm9ybTplLHN3YXA6ZnVuY3Rpb24oKXtRLmdldE9wdCh0KS5lYWNoKGZ1bmN0aW9uKHQpe05tLnNldCh0LFtuXSksbyh0KX0pfX0pfX0sWT1zdC5zb21lKHNrKSxxPXN0LnNvbWUoY2spLEs9W24oImNyb3AiLCJDcm9wIixYKHksc3Qubm9uZSgpLGZ1bmN0aW9uKHQpe2Euc2hvd0Nyb3AoKX0pLCExKSxuKCJyZXNpemUiLCJSZXNpemUiLFgoUyxzdC5ub25lKCksZnVuY3Rpb24odCl7eC5nZXRPcHQodCkuZWFjaChmdW5jdGlvbih0KXt2YXIgbj1hLmdldE1lYXN1cmVtZW50cygpLGU9bi53aWR0aCxvPW4uaGVpZ2h0O2JsLnNldFZhbHVlKHQse3dpZHRoOmUsaGVpZ2h0Om99KX0pfSksITEpLG4oIm9yaWVudGF0aW9uIiwiT3JpZW50YXRpb24iLFgoRCxzdC5ub25lKCksZSksITEpLG4oImJyaWdodG5lc3MiLCJCcmlnaHRuZXNzIixYKFYsc3Qubm9uZSgpLGUpLCExKSxuKCJzaGFycGVuIiwiU2hhcnBlbiIsWChSLFksZSksITEpLG4oImNvbnRyYXN0IiwiQ29udHJhc3QiLFgoSCxzdC5ub25lKCksZSksITEpLG4oImNvbG9yLWxldmVscyIsIkNvbG9yIGxldmVscyIsWChHLHN0Lm5vbmUoKSxlKSwhMSksbigiZ2FtbWEiLCJHYW1tYSIsWChQLHN0Lm5vbmUoKSxlKSwhMSksbigiaW52ZXJ0IiwiSW52ZXJ0IixYKFIscSxlKSwhMSldLEo9VWIuc2tldGNoKHtkb206bCxjb21wb25lbnRzOksubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LmFzU3BlYygpfSl9KSwkPVViLnNrZXRjaCh7ZG9tOnt0YWc6ImRpdiJ9LGNvbXBvbmVudHM6W0pdLGNvbnRhaW5lckJlaGF2aW91cnM6emEoW05tLmNvbmZpZyh7fSldKX0pLFE9VWcoJCk7cmV0dXJue21lbUNvbnRhaW5lcjpRLGdldEFwcGx5QnV0dG9uOmZ1bmN0aW9uKHQpe3JldHVybiBRLmdldE9wdCh0KS5tYXAoZnVuY3Rpb24odCl7dmFyIG49dC5jb21wb25lbnRzKClbMF07cmV0dXJuIG4uY29tcG9uZW50cygpW24uY29tcG9uZW50cygpLmxlbmd0aC0xXX0pfX19LG9DPXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLmRvbS5Eb21RdWVyeSIpLHJDPXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLmdlb20uUmVjdCIpLGlDPXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLnV0aWwuT2JzZXJ2YWJsZSIpLHVDPXRpbnltY2UudXRpbC5Ub29scy5yZXNvbHZlKCJ0aW55bWNlLnV0aWwuVG9vbHMiKSxhQz10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS51dGlsLlZLIik7ZnVuY3Rpb24gY0ModCl7dmFyIG4sZTtpZih0LmNoYW5nZWRUb3VjaGVzKWZvcihuPSJzY3JlZW5YIHNjcmVlblkgcGFnZVggcGFnZVkgY2xpZW50WCBjbGllbnRZIi5zcGxpdCgiICIpLGU9MDtlPG4ubGVuZ3RoO2UrKyl0W25bZV1dPXQuY2hhbmdlZFRvdWNoZXNbMF1bbltlXV19ZnVuY3Rpb24gc0ModCxyKXt2YXIgaSx1LG4sYSxjLGwsZixkPXIuZG9jdW1lbnR8fG50LmRvY3VtZW50O3I9cnx8e307dmFyIG09ZC5nZXRFbGVtZW50QnlJZChyLmhhbmRsZXx8dCk7bj1mdW5jdGlvbih0KXt2YXIgbixlLG89ZnVuY3Rpb24gcyh0KXt2YXIgbixlLG8scixpLHUsYSxjPU1hdGgubWF4O3JldHVybiBuPXQuZG9jdW1lbnRFbGVtZW50LGU9dC5ib2R5LG89YyhuLnNjcm9sbFdpZHRoLGUuc2Nyb2xsV2lkdGgpLHI9YyhuLmNsaWVudFdpZHRoLGUuY2xpZW50V2lkdGgpLGk9YyhuLm9mZnNldFdpZHRoLGUub2Zmc2V0V2lkdGgpLHU9YyhuLnNjcm9sbEhlaWdodCxlLnNjcm9sbEhlaWdodCksYT1jKG4uY2xpZW50SGVpZ2h0LGUuY2xpZW50SGVpZ2h0KSx7d2lkdGg6bzxpP3I6byxoZWlnaHQ6dTxjKG4ub2Zmc2V0SGVpZ2h0LGUub2Zmc2V0SGVpZ2h0KT9hOnV9fShkKTtjQyh0KSx0LnByZXZlbnREZWZhdWx0KCksdT10LmJ1dHRvbixuPW0sbD10LnNjcmVlblgsZj10LnNjcmVlblksZT1udC53aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZT9udC53aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShuLG51bGwpLmdldFByb3BlcnR5VmFsdWUoImN1cnNvciIpOm4ucnVudGltZVN0eWxlLmN1cnNvcixpPW9DKCI8ZGl2PjwvZGl2PiIpLmNzcyh7cG9zaXRpb246ImFic29sdXRlIix0b3A6MCxsZWZ0OjAsd2lkdGg6by53aWR0aCxoZWlnaHQ6by5oZWlnaHQsekluZGV4OjIxNDc0ODM2NDcsb3BhY2l0eToxZS00LGN1cnNvcjplfSkuYXBwZW5kVG8oZC5ib2R5KSxvQyhkKS5vbigibW91c2Vtb3ZlIHRvdWNobW92ZSIsYykub24oIm1vdXNldXAgdG91Y2hlbmQiLGEpLHIuc3RhcnQodCl9LGM9ZnVuY3Rpb24odCl7aWYoY0ModCksdC5idXR0b24hPT11KXJldHVybiBhKHQpO3QuZGVsdGFYPXQuc2NyZWVuWC1sLHQuZGVsdGFZPXQuc2NyZWVuWS1mLHQucHJldmVudERlZmF1bHQoKSxyLmRyYWcodCl9LGE9ZnVuY3Rpb24odCl7Y0ModCksb0MoZCkub2ZmKCJtb3VzZW1vdmUgdG91Y2htb3ZlIixjKS5vZmYoIm1vdXNldXAgdG91Y2hlbmQiLGEpLGkucmVtb3ZlKCksci5zdG9wJiZyLnN0b3AodCl9LHRoaXMuZGVzdHJveT1mdW5jdGlvbigpe29DKG0pLm9mZigpfSxvQyhtKS5vbigibW91c2Vkb3duIHRvdWNoc3RhcnQiLG4pfXZhciBsQz0wLGZDPWZ1bmN0aW9uKHMsZSxsLG8scil7dmFyIGYsbixpLHU9InRveC0iLGE9InRveC1jcmlkLSIrbEMrKyxjPVt7bmFtZToibW92ZSIseE11bDowLHlNdWw6MCxkZWx0YVg6MSxkZWx0YVk6MSxkZWx0YVc6MCxkZWx0YUg6MCxsYWJlbDoiQ3JvcCBNYXNrIn0se25hbWU6Im53Iix4TXVsOjAseU11bDowLGRlbHRhWDoxLGRlbHRhWToxLGRlbHRhVzotMSxkZWx0YUg6LTEsbGFiZWw6IlRvcCBMZWZ0IENyb3AgSGFuZGxlIn0se25hbWU6Im5lIix4TXVsOjEseU11bDowLGRlbHRhWDowLGRlbHRhWToxLGRlbHRhVzoxLGRlbHRhSDotMSxsYWJlbDoiVG9wIFJpZ2h0IENyb3AgSGFuZGxlIn0se25hbWU6InN3Iix4TXVsOjAseU11bDoxLGRlbHRhWDoxLGRlbHRhWTowLGRlbHRhVzotMSxkZWx0YUg6MSxsYWJlbDoiQm90dG9tIExlZnQgQ3JvcCBIYW5kbGUifSx7bmFtZToic2UiLHhNdWw6MSx5TXVsOjEsZGVsdGFYOjAsZGVsdGFZOjAsZGVsdGFXOjEsZGVsdGFIOjEsbGFiZWw6IkJvdHRvbSBSaWdodCBDcm9wIEhhbmRsZSJ9XTtpPVsidG9wIiwicmlnaHQiLCJib3R0b20iLCJsZWZ0Il07dmFyIGQ9ZnVuY3Rpb24odCxuKXtyZXR1cm57eDpuLngrdC54LHk6bi55K3QueSx3Om4udyxoOm4uaH19LG09ZnVuY3Rpb24odCxuKXtyZXR1cm57eDpuLngtdC54LHk6bi55LXQueSx3Om4udyxoOm4uaH19O2Z1bmN0aW9uIGcodCxuLGUsbyl7dmFyIHIsaSx1LGEsYztyPW4ueCxpPW4ueSx1PW4udyxhPW4uaCxyKz1lKnQuZGVsdGFYLGkrPW8qdC5kZWx0YVksKHUrPWUqdC5kZWx0YVcpPDIwJiYodT0yMCksKGErPW8qdC5kZWx0YUgpPDIwJiYoYT0yMCksYz1zPXJDLmNsYW1wKHt4OnIseTppLHc6dSxoOmF9LGwsIm1vdmUiPT09dC5uYW1lKSxjPW0obCxjKSxmLmZpcmUoInVwZGF0ZVJlY3QiLHtyZWN0OmN9KSx2KGMpfWZ1bmN0aW9uIHAobil7ZnVuY3Rpb24gdCh0LG4pe24uaDwwJiYobi5oPTApLG4udzwwJiYobi53PTApLG9DKCIjIithKyItIit0LG8pLmNzcyh7bGVmdDpuLngsdG9wOm4ueSx3aWR0aDpuLncsaGVpZ2h0Om4uaH0pfXVDLmVhY2goYyxmdW5jdGlvbih0KXtvQygiIyIrYSsiLSIrdC5uYW1lLG8pLmNzcyh7bGVmdDpuLncqdC54TXVsK24ueCx0b3A6bi5oKnQueU11bCtuLnl9KX0pLHQoInRvcCIse3g6ZS54LHk6ZS55LHc6ZS53LGg6bi55LWUueX0pLHQoInJpZ2h0Iix7eDpuLngrbi53LHk6bi55LHc6ZS53LW4ueC1uLncrZS54LGg6bi5ofSksdCgiYm90dG9tIix7eDplLngseTpuLnkrbi5oLHc6ZS53LGg6ZS5oLW4ueS1uLmgrZS55fSksdCgibGVmdCIse3g6ZS54LHk6bi55LHc6bi54LWUueCxoOm4uaH0pLHQoIm1vdmUiLG4pfWZ1bmN0aW9uIGgodCl7cChzPXQpfWZ1bmN0aW9uIHYodCl7aChkKGwsdCkpfXJldHVybiBmdW5jdGlvbiBiKCl7b0MoJzxkaXYgaWQ9IicrYSsnIiBjbGFzcz0iJyt1Kydjcm9wcmVjdC1jb250YWluZXIiIHJvbGU9ImdyaWQiIGFyaWEtZHJvcGVmZmVjdD0iZXhlY3V0ZSI+JykuYXBwZW5kVG8obyksdUMuZWFjaChpLGZ1bmN0aW9uKHQpe29DKCIjIithLG8pLmFwcGVuZCgnPGRpdiBpZD0iJythKyItIit0KyciY2xhc3M9IicrdSsnY3JvcHJlY3QtYmxvY2siIHN0eWxlPSJkaXNwbGF5OiBub25lIiBkYXRhLW1jZS1ib2d1cz0iYWxsIj4nKX0pLHVDLmVhY2goYyxmdW5jdGlvbih0KXtvQygiIyIrYSxvKS5hcHBlbmQoJzxkaXYgaWQ9IicrYSsiLSIrdC5uYW1lKyciIGNsYXNzPSInK3UrImNyb3ByZWN0LWhhbmRsZSAiK3UrImNyb3ByZWN0LWhhbmRsZS0iK3QubmFtZSsnInN0eWxlPSJkaXNwbGF5OiBub25lIiBkYXRhLW1jZS1ib2d1cz0iYWxsIiByb2xlPSJncmlkY2VsbCIgdGFiaW5kZXg9Ii0xIiBhcmlhLWxhYmVsPSInK3QubGFiZWwrJyIgYXJpYS1ncmFiYmVkPSJmYWxzZSIgdGl0bGU9IicrdC5sYWJlbCsnIj4nKX0pLG49dUMubWFwKGMsZnVuY3Rpb24gdChuKXt2YXIgZTtyZXR1cm4gbmV3IHNDKGEse2RvY3VtZW50Om8ub3duZXJEb2N1bWVudCxoYW5kbGU6YSsiLSIrbi5uYW1lLHN0YXJ0OmZ1bmN0aW9uKCl7ZT1zfSxkcmFnOmZ1bmN0aW9uKHQpe2cobixlLHQuZGVsdGFYLHQuZGVsdGFZKX19KX0pLHAocyksb0Mobykub24oImZvY3VzaW4gZm9jdXNvdXQiLGZ1bmN0aW9uKHQpe29DKHQudGFyZ2V0KS5hdHRyKCJhcmlhLWdyYWJiZWQiLCJmb2N1cyI9PT10LnR5cGU/InRydWUiOiJmYWxzZSIpfSksb0Mobykub24oImtleWRvd24iLGZ1bmN0aW9uKG4pe3ZhciBpO2Z1bmN0aW9uIHQodCxuLGUsbyxyKXt0LnN0b3BQcm9wYWdhdGlvbigpLHQucHJldmVudERlZmF1bHQoKSxnKGksZSxvLHIpfXN3aXRjaCh1Qy5lYWNoKGMsZnVuY3Rpb24odCl7aWYobi50YXJnZXQuaWQ9PT1hKyItIit0Lm5hbWUpcmV0dXJuIGk9dCwhMX0pLG4ua2V5Q29kZSl7Y2FzZSBhQy5MRUZUOnQobiwwLHMsLTEwLDApO2JyZWFrO2Nhc2UgYUMuUklHSFQ6dChuLDAscywxMCwwKTticmVhaztjYXNlIGFDLlVQOnQobiwwLHMsMCwtMTApO2JyZWFrO2Nhc2UgYUMuRE9XTjp0KG4sMCxzLDAsMTApO2JyZWFrO2Nhc2UgYUMuRU5URVI6Y2FzZSBhQy5TUEFDRUJBUjpuLnByZXZlbnREZWZhdWx0KCkscigpfX0pfSgpLGY9dUMuZXh0ZW5kKHt0b2dnbGVWaXNpYmlsaXR5OmZ1bmN0aW9uIHkodCl7dmFyIG47bj11Qy5tYXAoYyxmdW5jdGlvbih0KXtyZXR1cm4iIyIrYSsiLSIrdC5uYW1lfSkuY29uY2F0KHVDLm1hcChpLGZ1bmN0aW9uKHQpe3JldHVybiIjIithKyItIit0fSkpLmpvaW4oIiwiKSx0P29DKG4sbykuc2hvdygpOm9DKG4sbykuaGlkZSgpfSxzZXRDbGFtcFJlY3Q6ZnVuY3Rpb24geCh0KXtsPXQscChzKX0sc2V0UmVjdDpoLGdldElubmVyUmVjdDpmdW5jdGlvbigpe3JldHVybiBtKGwscyl9LHNldElubmVyUmVjdDp2LHNldFZpZXdQb3J0UmVjdDpmdW5jdGlvbiB3KHQpe2U9dCxwKHMpfSxkZXN0cm95OmZ1bmN0aW9uIHQoKXt1Qy5lYWNoKG4sZnVuY3Rpb24odCl7dC5kZXN0cm95KCl9KSxuPVtdfX0saUMpfSxkQz1mdW5jdGlvbihuKXt2YXIgbD1VZyh7ZG9tOnt0YWc6ImRpdiIsY2xhc3NlczpbInRveC1pbWFnZS10b29sc19faW1hZ2UtYmciXSxhdHRyaWJ1dGVzOntyb2xlOiJwcmVzZW50YXRpb24ifX19KSxmPWNlKDEpLGQ9Y2Uoc3Qubm9uZSgpKSxtPWNlKHt4OjAseTowLHc6MSxoOjF9KSxjPWNlKHt4OjAseTowLHc6MSxoOjF9KSxzPWZ1bmN0aW9uKHQscyl7Zy5nZXRPcHQodCkuZWFjaChmdW5jdGlvbih0KXt2YXIgZT1mLmdldCgpLG89Y3UodC5lbGVtZW50KCkpLHI9dHUodC5lbGVtZW50KCkpLGk9cy5kb20oKS5uYXR1cmFsV2lkdGgqZSx1PXMuZG9tKCkubmF0dXJhbEhlaWdodCplLGE9TWF0aC5tYXgoMCxvLzItaS8yKSxjPU1hdGgubWF4KDAsci8yLXUvMiksbj17bGVmdDphLnRvU3RyaW5nKCkrInB4Iix0b3A6Yy50b1N0cmluZygpKyJweCIsd2lkdGg6aS50b1N0cmluZygpKyJweCIsaGVpZ2h0OnUudG9TdHJpbmcoKSsicHgiLHBvc2l0aW9uOiJhYnNvbHV0ZSJ9O01pKHMsbiksbC5nZXRPcHQodCkuZWFjaChmdW5jdGlvbih0KXtNaSh0LmVsZW1lbnQoKSxuKX0pLGQuZ2V0KCkuZWFjaChmdW5jdGlvbih0KXt2YXIgbj1tLmdldCgpO3Quc2V0UmVjdCh7eDpuLngqZSthLHk6bi55KmUrYyx3Om4udyplLGg6bi5oKmV9KSx0LnNldENsYW1wUmVjdCh7eDphLHk6Yyx3OmksaDp1fSksdC5zZXRWaWV3UG9ydFJlY3Qoe3g6MCx5OjAsdzpvLGg6cn0pfSl9KX0sZT1mdW5jdGlvbih0LG4pe3ZhciBlLGE9bGUuZnJvbVRhZygiaW1nIik7cmV0dXJuIEJyKGEsInNyYyIsbiksZT1hLmRvbSgpLG5ldyBjcChmdW5jdGlvbih0KXt2YXIgbj1mdW5jdGlvbigpe2UucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsbiksdChlKX07ZS5jb21wbGV0ZT90KGUpOmUuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsbil9KS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIGcuZ2V0T3B0KHQpLm1hcChmdW5jdGlvbih0KXt2YXIgbj1xaSh7ZWxlbWVudDphfSk7Tm0ucmVwbGFjZUF0KHQsMSxzdC5zb21lKG4pKTt2YXIgZT1jLmdldCgpLG89e3g6MCx5OjAsdzphLmRvbSgpLm5hdHVyYWxXaWR0aCxoOmEuZG9tKCkubmF0dXJhbEhlaWdodH07Yy5zZXQobyk7dmFyIHIsdSxpPXJDLmluZmxhdGUobywtMjAsLTIwKTtyZXR1cm4gbS5zZXQoaSksZS53PT09by53JiZlLmg9PT1vLmh8fChyPXQsdT1hLGcuZ2V0T3B0KHIpLmVhY2goZnVuY3Rpb24odCl7dmFyIG49Y3UodC5lbGVtZW50KCkpLGU9dHUodC5lbGVtZW50KCkpLG89dS5kb20oKS5uYXR1cmFsV2lkdGgscj11LmRvbSgpLm5hdHVyYWxIZWlnaHQsaT1NYXRoLm1pbihuL28sZS9yKTsxPD1pP2Yuc2V0KDEpOmYuc2V0KGkpfSkpLHModCxhKSxhfSl9KX0sdD1VYi5za2V0Y2goe2RvbTp7dGFnOiJkaXYiLGNsYXNzZXM6WyJ0b3gtaW1hZ2UtdG9vbHNfX2ltYWdlIl19LGNvbXBvbmVudHM6W2wuYXNTcGVjKCkse2RvbTp7dGFnOiJpbWciLGF0dHJpYnV0ZXM6e3NyYzpufX19LHtkb206e3RhZzoiZGl2In0sYmVoYXZpb3Vyczp6YShbTG0oImltYWdlLXBhbmVsLWNyb3AtZXZlbnRzIixbb3IoZnVuY3Rpb24odCl7Zy5nZXRPcHQodCkuZWFjaChmdW5jdGlvbih0KXt2YXIgbj10LmVsZW1lbnQoKS5kb20oKSxlPWZDKHt4OjEwLHk6MTAsdzoxMDAsaDoxMDB9LHt4OjAseTowLHc6MjAwLGg6MjAwfSx7eDowLHk6MCx3OjIwMCxoOjIwMH0sbixmdW5jdGlvbigpe30pO2UudG9nZ2xlVmlzaWJpbGl0eSghMSksZS5vbigidXBkYXRlUmVjdCIsZnVuY3Rpb24odCl7dmFyIG49dC5yZWN0LGU9Zi5nZXQoKSxvPXt4Ok1hdGgucm91bmQobi54L2UpLHk6TWF0aC5yb3VuZChuLnkvZSksdzpNYXRoLnJvdW5kKG4udy9lKSxoOk1hdGgucm91bmQobi5oL2UpfTttLnNldChvKX0pLGQuc2V0KHN0LnNvbWUoZSkpfSl9KV0pXSl9XSxjb250YWluZXJCZWhhdmlvdXJzOnphKFtObS5jb25maWcoe30pLExtKCJpbWFnZS1wYW5lbC1ldmVudHMiLFtvcihmdW5jdGlvbih0KXtlKHQsbil9KV0pXSl9KSxnPVVnKHQpO3JldHVybnttZW1Db250YWluZXI6Zyx1cGRhdGVTcmM6ZSx6b29tOmZ1bmN0aW9uKHQsbil7dmFyIGU9Zi5nZXQoKSxvPTA8bj9NYXRoLm1pbigyLGUrLjEpOk1hdGgubWF4KC4xLGUtLjEpO2Yuc2V0KG8pLGcuZ2V0T3B0KHQpLmVhY2goZnVuY3Rpb24odCl7dmFyIG49dC5jb21wb25lbnRzKClbMV0uZWxlbWVudCgpO3ModCxuKX0pfSxzaG93Q3JvcDpmdW5jdGlvbigpe2QuZ2V0KCkuZWFjaChmdW5jdGlvbih0KXt0LnRvZ2dsZVZpc2liaWxpdHkoITApfSl9LGhpZGVDcm9wOmZ1bmN0aW9uKCl7ZC5nZXQoKS5lYWNoKGZ1bmN0aW9uKHQpe3QudG9nZ2xlVmlzaWJpbGl0eSghMSl9KX0sZ2V0UmVjdDpmdW5jdGlvbigpe3JldHVybiBtLmdldCgpfSxnZXRNZWFzdXJlbWVudHM6ZnVuY3Rpb24oKXt2YXIgdD1jLmdldCgpO3JldHVybnt3aWR0aDp0LncsaGVpZ2h0OnQuaH19fX0sbUM9ZnVuY3Rpb24odCxuLGUsbyxyKXtyZXR1cm4gVmsoe25hbWU6dCxpY29uOnN0LnNvbWUobiksZGlzYWJsZWQ6ZSx0b29sdGlwOnN0LnNvbWUodCkscHJpbWFyeTohMSxib3JkZXJsZXNzOiExfSxvLHIpfSxnQz1mdW5jdGlvbih0LG4pe24/cGguZW5hYmxlKHQpOnBoLmRpc2FibGUodCl9O2Z1bmN0aW9uIHBDKCl7dmFyIGU9W10sbz0tMTtmdW5jdGlvbiB0KCl7cmV0dXJuIDA8b31mdW5jdGlvbiBuKCl7cmV0dXJuLTEhPT1vJiZvPGUubGVuZ3RoLTF9cmV0dXJue2RhdGE6ZSxhZGQ6ZnVuY3Rpb24gcih0KXt2YXIgbjtyZXR1cm4gbj1lLnNwbGljZSgrK28pLGUucHVzaCh0KSx7c3RhdGU6dCxyZW1vdmVkOm59fSx1bmRvOmZ1bmN0aW9uIGkoKXtpZih0KCkpcmV0dXJuIGVbLS1vXX0scmVkbzpmdW5jdGlvbiB1KCl7aWYobigpKXJldHVybiBlWysrb119LGNhblVuZG86dCxjYW5SZWRvOm59fXZhciBoQyx2QyxiQyx5Qyx4Qz1mdW5jdGlvbih0KXt2YXIgbj1jZSh0KSxlPWNlKHN0Lm5vbmUoKSkscj1wQygpO3IuYWRkKHQpO3ZhciBpPWZ1bmN0aW9uKHQpe24uc2V0KHQpfSx1PWZ1bmN0aW9uKHQpe3JldHVybntibG9iOnQsdXJsOm50LlVSTC5jcmVhdGVPYmplY3RVUkwodCl9fSxhPWZ1bmN0aW9uKHQpe250LlVSTC5yZXZva2VPYmplY3RVUkwodC51cmwpfSxvPWZ1bmN0aW9uKCl7ZS5nZXQoKS5lYWNoKGEpLGUuc2V0KHN0Lm5vbmUoKSl9LGM9ZnVuY3Rpb24odCl7dmFyIG49dSh0KTtpKG4pO3ZhciBlLG89ci5hZGQobikucmVtb3ZlZDtyZXR1cm4gZT1vLHVDLmVhY2goZSxhKSxuLnVybH07cmV0dXJue2dldEJsb2JTdGF0ZTpmdW5jdGlvbigpe3JldHVybiBuLmdldCgpfSxzZXRCbG9iU3RhdGU6aSxhZGRCbG9iU3RhdGU6YyxnZXRUZW1wU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gZS5nZXQoKS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIG4uZ2V0KCl9LGZ1bmN0aW9uKHQpe3JldHVybiB0fSl9LHVwZGF0ZVRlbXBTdGF0ZTpmdW5jdGlvbih0KXt2YXIgbj11KHQpO3JldHVybiBvKCksZS5zZXQoc3Quc29tZShuKSksbi51cmx9LGFkZFRlbXBTdGF0ZTpmdW5jdGlvbih0KXt2YXIgbj11KHQpO3JldHVybiBlLnNldChzdC5zb21lKG4pKSxuLnVybH0sYXBwbHlUZW1wU3RhdGU6ZnVuY3Rpb24obil7cmV0dXJuIGUuZ2V0KCkuZm9sZChmdW5jdGlvbigpe30sZnVuY3Rpb24odCl7Yyh0LmJsb2IpLG4oKX0pfSxkZXN0cm95VGVtcFN0YXRlOm8sdW5kbzpmdW5jdGlvbigpe3ZhciB0PXIudW5kbygpO3JldHVybiBpKHQpLHQudXJsfSxyZWRvOmZ1bmN0aW9uKCl7dmFyIHQ9ci5yZWRvKCk7cmV0dXJuIGkodCksdC51cmx9LGdldEhpc3RvcnlTdGF0ZXM6ZnVuY3Rpb24oKXtyZXR1cm57dW5kb0VuYWJsZWQ6ci5jYW5VbmRvKCkscmVkb0VuYWJsZWQ6ci5jYW5SZWRvKCl9fX19LHdDPWZ1bmN0aW9uKHQsbil7dmFyIGUsbyxyLHU9eEModC5jdXJyZW50U3RhdGUpLGk9ZnVuY3Rpb24odCl7dmFyIG49dS5nZXRIaXN0b3J5U3RhdGVzKCk7cC51cGRhdGVCdXR0b25VbmRvU3RhdGVzKHQsbi51bmRvRW5hYmxlZCxuLnJlZG9FbmFibGVkKSxqbyh0LG5DLmZvcm1BY3Rpb25FdmVudCx7bmFtZTpuQy5zYXZlU3RhdGUoKSx2YWx1ZTpuLnVuZG9FbmFibGVkfSl9LGE9ZnVuY3Rpb24odCl7cmV0dXJuIHQudG9CbG9iKCl9LGM9ZnVuY3Rpb24odCl7am8odCxuQy5mb3JtQWN0aW9uRXZlbnQse25hbWU6bkMuZGlzYWJsZSgpLHZhbHVlOnt9fSl9LHM9ZnVuY3Rpb24odCl7aC5nZXRBcHBseUJ1dHRvbih0KS5lYWNoKGZ1bmN0aW9uKHQpe3BoLmVuYWJsZSh0KX0pLGpvKHQsbkMuZm9ybUFjdGlvbkV2ZW50LHtuYW1lOm5DLmVuYWJsZSgpLHZhbHVlOnt9fSl9LGw9ZnVuY3Rpb24odCxuKXtyZXR1cm4gYyh0KSxnLnVwZGF0ZVNyYyh0LG4pfSxmPWZ1bmN0aW9uKG4sdCxlLG8scil7cmV0dXJuIGMobiksVVModCkudGhlbihlKS50aGVuKGEpLnRoZW4obykudGhlbihmdW5jdGlvbih0KXtyZXR1cm4gbChuLHQpLnRoZW4oZnVuY3Rpb24odCl7cmV0dXJuIGkobikscigpLHMobiksdH0pfSlbImNhdGNoIl0oZnVuY3Rpb24odCl7cmV0dXJuIG50LmNvbnNvbGUubG9nKHQpLHMobiksdH0pfSxkPWZ1bmN0aW9uKHQsbixlKXt2YXIgbz11LmdldEJsb2JTdGF0ZSgpLmJsb2I7Zih0LG8sbixmdW5jdGlvbih0KXtyZXR1cm4gdS51cGRhdGVUZW1wU3RhdGUodCl9LGUpfSxtPWZ1bmN0aW9uKHQpe3ZhciBuPXUuZ2V0QmxvYlN0YXRlKCkudXJsO3JldHVybiB1LmRlc3Ryb3lUZW1wU3RhdGUoKSxpKHQpLG59LGc9ZEModC5jdXJyZW50U3RhdGUudXJsKSxwPShvPVVnKG1DKCJVbmRvIiwidW5kbyIsITAsZnVuY3Rpb24odCl7am8odCwkay51bmRvKCkse2RpcmVjdGlvbjoxfSl9LGU9bikpLHI9VWcobUMoIlJlZG8iLCJyZWRvIiwhMCxmdW5jdGlvbih0KXtqbyh0LCRrLnJlZG8oKSx7ZGlyZWN0aW9uOjF9KX0sZSkpLHtjb250YWluZXI6VWIuc2tldGNoKHtkb206e3RhZzoiZGl2IixjbGFzc2VzOlsidG94LWltYWdlLXRvb2xzX190b29sYmFyIiwidG94LWltYWdlLXRvb2xzX19zaWRlYmFyIl19LGNvbXBvbmVudHM6W28uYXNTcGVjKCksci5hc1NwZWMoKSxtQygiWm9vbSBpbiIsInpvb20taW4iLCExLGZ1bmN0aW9uKHQpe2pvKHQsJGsuem9vbSgpLHtkaXJlY3Rpb246MX0pfSxlKSxtQygiWm9vbSBvdXQiLCJ6b29tLW91dCIsITEsZnVuY3Rpb24odCl7am8odCwkay56b29tKCkse2RpcmVjdGlvbjotMX0pfSxlKV19KSx1cGRhdGVCdXR0b25VbmRvU3RhdGVzOmZ1bmN0aW9uKHQsbixlKXtvLmdldE9wdCh0KS5lYWNoKGZ1bmN0aW9uKHQpe2dDKHQsbil9KSxyLmdldE9wdCh0KS5lYWNoKGZ1bmN0aW9uKHQpe2dDKHQsZSl9KX19KSxoPWVDKGcsbik7cmV0dXJue2RvbTp7dGFnOiJkaXYiLGF0dHJpYnV0ZXM6e3JvbGU6InByZXNlbnRhdGlvbiJ9fSxjb21wb25lbnRzOltoLm1lbUNvbnRhaW5lci5hc1NwZWMoKSxnLm1lbUNvbnRhaW5lci5hc1NwZWMoKSxwLmNvbnRhaW5lcl0sYmVoYXZpb3Vyczp6YShbYmwuY29uZmlnKHtzdG9yZTp7bW9kZToibWFudWFsIixnZXRWYWx1ZTpmdW5jdGlvbigpe3JldHVybiB1LmdldEJsb2JTdGF0ZSgpfX19KSxMbSgiaW1hZ2UtdG9vbHMtZXZlbnRzIixbSm8oJGsudW5kbygpLGZ1bmN0aW9uKG4sdCl7dmFyIGU9dS51bmRvKCk7bChuLGUpLnRoZW4oZnVuY3Rpb24odCl7cyhuKSxpKG4pfSl9KSxKbygkay5yZWRvKCksZnVuY3Rpb24obix0KXt2YXIgZT11LnJlZG8oKTtsKG4sZSkudGhlbihmdW5jdGlvbih0KXtzKG4pLGkobil9KX0pLEpvKCRrLnpvb20oKSxmdW5jdGlvbih0LG4pe3ZhciBlPW4uZXZlbnQoKS5kaXJlY3Rpb24oKTtnLnpvb20odCxlKX0pLEpvKCRrLmJhY2soKSxmdW5jdGlvbih0LG4pe3ZhciBlLG87bz1tKGU9dCksbChlLG8pLnRoZW4oZnVuY3Rpb24odCl7cyhlKX0pLG4uZXZlbnQoKS5zd2FwKCkoKSxnLmhpZGVDcm9wKCl9KSxKbygkay5hcHBseSgpLGZ1bmN0aW9uKHQsbil7dS5hcHBseVRlbXBTdGF0ZShmdW5jdGlvbigpe20odCksbi5ldmVudCgpLnN3YXAoKSgpfSl9KSxKbygkay50cmFuc2Zvcm0oKSxmdW5jdGlvbih0LG4pe3JldHVybiBkKHQsbi5ldmVudCgpLnRyYW5zZm9ybSgpLFopfSksSm8oJGsudGVtcFRyYW5zZm9ybSgpLGZ1bmN0aW9uKHQsbil7cmV0dXJuIGU9dCxvPW4uZXZlbnQoKS50cmFuc2Zvcm0oKSxyPXUuZ2V0VGVtcFN0YXRlKCkuYmxvYix2b2lkIGYoZSxyLG8sZnVuY3Rpb24odCl7cmV0dXJuIHUuYWRkVGVtcFN0YXRlKHQpfSxaKTt2YXIgZSxvLHJ9KSxKbygkay50cmFuc2Zvcm1BcHBseSgpLGZ1bmN0aW9uKHQsbil7cmV0dXJuIGU9dCxvPW4uZXZlbnQoKS50cmFuc2Zvcm0oKSxyPW4uZXZlbnQoKS5zd2FwKCksaT11LmdldEJsb2JTdGF0ZSgpLmJsb2Isdm9pZCBmKGUsaSxvLGZ1bmN0aW9uKHQpe3ZhciBuPXUuYWRkQmxvYlN0YXRlKHQpO3JldHVybiBtKGUpLG59LHIpO3ZhciBlLG8scixpfSksSm8oJGsuc3dhcCgpLGZ1bmN0aW9uKG4sdCl7dmFyIGU7ZT1uLHAudXBkYXRlQnV0dG9uVW5kb1N0YXRlcyhlLCExLCExKTt2YXIgbz10LmV2ZW50KCkudHJhbnNmb3JtKCkscj10LmV2ZW50KCkuc3dhcCgpO28uZm9sZChmdW5jdGlvbigpe3IoKX0sZnVuY3Rpb24odCl7ZChuLHQscil9KX0pXSksWncoKV0pfX0sU0M9T2Yoe25hbWU6Ikh0bWxTZWxlY3QiLGNvbmZpZ0ZpZWxkczpbem4oIm9wdGlvbnMiKSx5bCgic2VsZWN0QmVoYXZpb3VycyIsW1htLGJsXSksWm4oInNlbGVjdENsYXNzZXMiLFtdKSxabigic2VsZWN0QXR0cmlidXRlcyIse30pLFluKCJkYXRhIildLGZhY3Rvcnk6ZnVuY3Rpb24oZSx0KXt2YXIgbj1WKGUub3B0aW9ucyxmdW5jdGlvbih0KXtyZXR1cm57ZG9tOnt0YWc6Im9wdGlvbiIsdmFsdWU6dC52YWx1ZSxpbm5lckh0bWw6dC50ZXh0fX19KSxvPWUuZGF0YS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIEt0KCJpbml0aWFsVmFsdWUiLHQpfSkuZ2V0T3Ioe30pO3JldHVybnt1aWQ6ZS51aWQsZG9tOnt0YWc6InNlbGVjdCIsY2xhc3NlczplLnNlbGVjdENsYXNzZXMsYXR0cmlidXRlczplLnNlbGVjdEF0dHJpYnV0ZXN9LGNvbXBvbmVudHM6bixiZWhhdmlvdXJzOndsKGUuc2VsZWN0QmVoYXZpb3VycyxbWG0uY29uZmlnKHt9KSxibC5jb25maWcoe3N0b3JlOmV0KHttb2RlOiJtYW51YWwiLGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB6aSh0LmVsZW1lbnQoKSl9LHNldFZhbHVlOmZ1bmN0aW9uKHQsbil7TChlLm9wdGlvbnMsZnVuY3Rpb24odCl7cmV0dXJuIHQudmFsdWU9PT1ufSkuaXNTb21lKCkmJk5pKHQuZWxlbWVudCgpLG4pfX0sbyl9KV0pfX19KSxrQz1mdW5jdGlvbihlLG4pe3ZhciB0PWUubGFiZWwubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBJeSh0LG4pfSksbz1bcGguY29uZmlnKHtkaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiBlLmRpc2FibGVkfHxuLmlzUmVhZE9ubHkoKX19KSxVaCgpLFJtLmNvbmZpZyh7bW9kZToiZXhlY3V0aW9uIix1c2VFbnRlcjohMCE9PWUubXVsdGlsaW5lLHVzZUNvbnRyb2xFbnRlcjohMD09PWUubXVsdGlsaW5lLGV4ZWN1dGU6ZnVuY3Rpb24odCl7cmV0dXJuIExvKHQsS2IpLHN0LnNvbWUoITApfX0pLExtKCJ0ZXh0ZmllbGQtY2hhbmdlIixbSm8oc28oKSxmdW5jdGlvbih0LG4pe2pvKHQsR2Ise25hbWU6ZS5uYW1lfSl9KSxKbyhibygpLGZ1bmN0aW9uKHQsbil7am8odCxHYix7bmFtZTplLm5hbWV9KX0pXSksRHkuY29uZmlnKHt9KV0scj1lLnZhbGlkYXRpb24ubWFwKGZ1bmN0aW9uKG8pe3JldHVybiBUeS5jb25maWcoe2dldFJvb3Q6ZnVuY3Rpb24odCl7cmV0dXJuIGxyKHQuZWxlbWVudCgpKX0saW52YWxpZENsYXNzOiJ0b3gtaW52YWxpZCIsdmFsaWRhdG9yOnt2YWxpZGF0ZTpmdW5jdGlvbih0KXt2YXIgbj1ibC5nZXRWYWx1ZSh0KSxlPW8udmFsaWRhdG9yKG4pO3JldHVybiB2eSghMD09PWU/b3QudmFsdWUobik6b3QuZXJyb3IoZSkpfSx2YWxpZGF0ZU9uTG9hZDpvLnZhbGlkYXRlT25Mb2FkfX0pfSkudG9BcnJheSgpLGk9ZS5wbGFjZWhvbGRlci5mb2xkKGF0KHt9KSxmdW5jdGlvbih0KXtyZXR1cm57cGxhY2Vob2xkZXI6bi50cmFuc2xhdGUodCl9fSksdT1lLmlucHV0TW9kZS5mb2xkKGF0KHt9KSxmdW5jdGlvbih0KXtyZXR1cm57aW5wdXRtb2RlOnR9fSksYT1ldChldCh7fSxpKSx1KSxjPWV5LnBhcnRzKCkuZmllbGQoe3RhZzohMD09PWUubXVsdGlsaW5lPyJ0ZXh0YXJlYSI6ImlucHV0IixpbnB1dEF0dHJpYnV0ZXM6YSxpbnB1dENsYXNzZXM6W2UuY2xhc3NuYW1lXSxpbnB1dEJlaGF2aW91cnM6emEodXQoW28scl0pKSxzZWxlY3RPbkZvY3VzOiExLGZhY3Rvcnk6dXl9KSxzPShlLmZsZXg/WyJ0b3gtZm9ybV9fZ3JvdXAtLXN0cmV0Y2hlZCJdOltdKS5jb25jYXQoZS5tYXhpbWl6ZWQ/WyJ0b3gtZm9ybS1ncm91cC0tbWF4aW1pemUiXTpbXSksbD1bcGguY29uZmlnKHtkaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiBlLmRpc2FibGVkfHxuLmlzUmVhZE9ubHkoKX0sb25EaXNhYmxlZDpmdW5jdGlvbih0KXtleS5nZXRGaWVsZCh0KS5lYWNoKHBoLmRpc2FibGUpfSxvbkVuYWJsZWQ6ZnVuY3Rpb24odCl7ZXkuZ2V0RmllbGQodCkuZWFjaChwaC5lbmFibGUpfX0pLFVoKCldO3JldHVybiBNeSh0LGMscyxsKX0sQ0M9LyogKi9PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxldmVudHM6ZnVuY3Rpb24odCxuKXt2YXIgZT10LnN0cmVhbS5zdHJlYW1zLnNldHVwKHQsbik7cmV0dXJuIFlvKFtKbyh0LmV2ZW50LGUpLHJyKGZ1bmN0aW9uKCl7cmV0dXJuIG4uY2FuY2VsKCl9KV0uY29uY2F0KHQuY2FuY2VsRXZlbnQubWFwKGZ1bmN0aW9uKHQpe3JldHVybltKbyh0LGZ1bmN0aW9uKCl7cmV0dXJuIG4uY2FuY2VsKCl9KV19KS5nZXRPcihbXSkpKX19KSxPQz1mdW5jdGlvbih0KXt2YXIgbj1jZShudWxsKTtyZXR1cm4gb2koe3JlYWRTdGF0ZTpmdW5jdGlvbigpe3JldHVybnt0aW1lcjpudWxsIT09bi5nZXQoKT8ic2V0IjoidW5zZXQifX0sc2V0VGltZXI6ZnVuY3Rpb24odCl7bi5zZXQodCl9LGNhbmNlbDpmdW5jdGlvbigpe3ZhciB0PW4uZ2V0KCk7bnVsbCE9PXQmJnQuY2FuY2VsKCl9fSl9LF9DPS8qICovT2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsdGhyb3R0bGU6T0MsaW5pdDpmdW5jdGlvbih0KXtyZXR1cm4gdC5zdHJlYW0uc3RyZWFtcy5zdGF0ZSh0KX19KSxUQz1bTm4oInN0cmVhbSIsQm4oIm1vZGUiLHt0aHJvdHRsZTpbem4oImRlbGF5IiksWm4oInN0b3BFdmVudCIsITApLG5hKCJzdHJlYW1zIix7c2V0dXA6ZnVuY3Rpb24odCxuKXt2YXIgZT10LnN0cmVhbSxvPSRnKHQub25TdHJlYW0sZS5kZWxheSk7cmV0dXJuIG4uc2V0VGltZXIobyksZnVuY3Rpb24odCxuKXtvLnRocm90dGxlKHQsbiksZS5zdG9wRXZlbnQmJm4uc3RvcCgpfX0sc3RhdGU6T0N9KV19KSksWm4oImV2ZW50IiwiaW5wdXQiKSxZbigiY2FuY2VsRXZlbnQiKSxadSgib25TdHJlYW0iKV0sRUM9TGEoe2ZpZWxkczpUQyxuYW1lOiJzdHJlYW1pbmciLGFjdGl2ZTpDQyxzdGF0ZTpfQ30pLEJDPWZ1bmN0aW9uKHQsbixlKXt2YXIgbz1ibC5nZXRWYWx1ZShlKTtibC5zZXRWYWx1ZShuLG8pLE1DKG4pfSxEQz1mdW5jdGlvbih0LG4pe3ZhciBlPXQuZWxlbWVudCgpLG89emkoZSkscj1lLmRvbSgpOyJudW1iZXIiIT09RHIoZSwidHlwZSIpJiZuKHIsbyl9LE1DPWZ1bmN0aW9uKHQpe0RDKHQsZnVuY3Rpb24odCxuKXtyZXR1cm4gdC5zZXRTZWxlY3Rpb25SYW5nZShuLmxlbmd0aCxuLmxlbmd0aCl9KX0sQUM9ZnVuY3Rpb24odCxuLG8pe2lmKHQuc2VsZWN0c092ZXIpe3ZhciBlPWJsLmdldFZhbHVlKG4pLHI9dC5nZXREaXNwbGF5VGV4dChlKSxpPWJsLmdldFZhbHVlKG8pO3JldHVybiAwPT09dC5nZXREaXNwbGF5VGV4dChpKS5pbmRleE9mKHIpP3N0LnNvbWUoZnVuY3Rpb24oKXt2YXIgdCxlO0JDKDAsbixvKSx0PW4sZT1yLmxlbmd0aCxEQyh0LGZ1bmN0aW9uKHQsbil7cmV0dXJuIHQuc2V0U2VsZWN0aW9uUmFuZ2UoZSxuLmxlbmd0aCl9KX0pOnN0Lm5vbmUoKX1yZXR1cm4gc3Qubm9uZSgpfSxGQz1hdCgiYWxsb3kudHlwZWFoZWFkLml0ZW1leGVjdXRlIiksSUM9YXQoW1luKCJsYXp5U2luayIpLHpuKCJmZXRjaCIpLFpuKCJtaW5DaGFycyIsNSksWm4oInJlc3BvbnNlVGltZSIsMWUzKSwkdSgib25PcGVuIiksWm4oImdldEhvdHNwb3QiLHN0LnNvbWUpLFpuKCJnZXRBbmNob3JPdmVycmlkZXMiLGF0KHt9KSksWm4oImxheW91dHMiLHN0Lm5vbmUoKSksWm4oImV2ZW50T3JkZXIiLHt9KSx1ZSgibW9kZWwiLHt9LFtabigiZ2V0RGlzcGxheVRleHQiLGZ1bmN0aW9uKHQpe3JldHVybiB0Lm1ldGEhPT11bmRlZmluZWQmJnQubWV0YS50ZXh0IT09dW5kZWZpbmVkP3QubWV0YS50ZXh0OnQudmFsdWV9KSxabigic2VsZWN0c092ZXIiLCEwKSxabigicG9wdWxhdGVGcm9tQnJvd3NlIiwhMCldKSwkdSgib25TZXRWYWx1ZSIpLFF1KCJvbkV4ZWN1dGUiKSwkdSgib25JdGVtRXhlY3V0ZSIpLFpuKCJpbnB1dENsYXNzZXMiLFtdKSxabigiaW5wdXRBdHRyaWJ1dGVzIix7fSksWm4oImlucHV0U3R5bGVzIix7fSksWm4oIm1hdGNoV2lkdGgiLCEwKSxabigidXNlTWluV2lkdGgiLCExKSxabigiZGlzbWlzc09uQmx1ciIsITApLEt1KFsib3BlbkNsYXNzIl0pLFluKCJpbml0aWFsRGF0YSIpLHlsKCJ0eXBlYWhlYWRCZWhhdmlvdXJzIixbWG0sYmwsRUMsUm0scmcsSHldKSxhZSgicHJldmlld2luZyIsZnVuY3Rpb24oKXtyZXR1cm4gY2UoITApfSldLmNvbmNhdChveSgpKS5jb25jYXQoS3koKSkpLFJDPWF0KFtLbCh7c2NoZW1hOltxdSgpXSxuYW1lOiJtZW51IixvdmVycmlkZXM6ZnVuY3Rpb24obyl7cmV0dXJue2Zha2VGb2N1czohMCxvbkhpZ2hsaWdodDpmdW5jdGlvbihuLGUpe28ucHJldmlld2luZy5nZXQoKT9uLmdldFN5c3RlbSgpLmdldEJ5VWlkKG8udWlkKS5lYWNoKGZ1bmN0aW9uKHQpe0FDKG8ubW9kZWwsdCxlKS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIGpmLmRlaGlnaGxpZ2h0KG4sZSl9LGZ1bmN0aW9uKHQpe3JldHVybiB0KCl9KX0pOm4uZ2V0U3lzdGVtKCkuZ2V0QnlVaWQoby51aWQpLmVhY2goZnVuY3Rpb24odCl7by5tb2RlbC5wb3B1bGF0ZUZyb21Ccm93c2UmJkJDKG8ubW9kZWwsdCxlKX0pLG8ucHJldmlld2luZy5zZXQoITEpfSxvbkV4ZWN1dGU6ZnVuY3Rpb24odCxuKXtyZXR1cm4gdC5nZXRTeXN0ZW0oKS5nZXRCeVVpZChvLnVpZCkudG9PcHRpb24oKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIGpvKHQsRkMoKSx7aXRlbTpufSksITB9KX0sb25Ib3ZlcjpmdW5jdGlvbih0LG4pe28ucHJldmlld2luZy5zZXQoITEpLHQuZ2V0U3lzdGVtKCkuZ2V0QnlVaWQoby51aWQpLmVhY2goZnVuY3Rpb24odCl7by5tb2RlbC5wb3B1bGF0ZUZyb21Ccm93c2UmJkJDKG8ubW9kZWwsdCxuKX0pfX19fSldKSxWQz1fZih7bmFtZToiVHlwZWFoZWFkIixjb25maWdGaWVsZHM6SUMoKSxwYXJ0RmllbGRzOlJDKCksZmFjdG9yeTpmdW5jdGlvbihyLHQsbixpKXt2YXIgZT1mdW5jdGlvbih0LG4sZSl7ci5wcmV2aWV3aW5nLnNldCghMSk7dmFyIG89SHkuZ2V0Q291cGxlZCh0LCJzYW5kYm94Iik7aWYoUXMuaXNPcGVuKG8pKU1mLmdldEN1cnJlbnQobykuZWFjaChmdW5jdGlvbih0KXtqZi5nZXRIaWdobGlnaHRlZCh0KS5mb2xkKGZ1bmN0aW9uKCl7ZSh0KX0sZnVuY3Rpb24oKXtYbyhvLHQuZWxlbWVudCgpLCJrZXlkb3duIixuKX0pfSk7ZWxzZXtMeShyLHUodCksdCxvLGksZnVuY3Rpb24odCl7TWYuZ2V0Q3VycmVudCh0KS5lYWNoKGUpfSxzeS5IaWdobGlnaHRGaXJzdCkuZ2V0KFopfX0sbz1yeShyKSx1PWZ1bmN0aW9uKG8pe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gdC5tYXAoZnVuY3Rpb24odCl7dmFyIG49dnQodC5tZW51cyksZT1VKG4sZnVuY3Rpb24odCl7cmV0dXJuIFAodC5pdGVtcyxmdW5jdGlvbih0KXtyZXR1cm4iaXRlbSI9PT10LnR5cGV9KX0pO3JldHVybiBibC5nZXRTdGF0ZShvKS51cGRhdGUoVihlLGZ1bmN0aW9uKHQpe3JldHVybiB0LmRhdGF9KSksdH0pfX0sYT1bWG0uY29uZmlnKHt9KSxibC5jb25maWcoe29uU2V0VmFsdWU6ci5vblNldFZhbHVlLHN0b3JlOmV0KHttb2RlOiJkYXRhc2V0IixnZXREYXRhS2V5OmZ1bmN0aW9uKHQpe3JldHVybiB6aSh0LmVsZW1lbnQoKSl9LGdldEZhbGxiYWNrRW50cnk6ZnVuY3Rpb24odCl7cmV0dXJue3ZhbHVlOnQsbWV0YTp7fX19LHNldFZhbHVlOmZ1bmN0aW9uKHQsbil7TmkodC5lbGVtZW50KCksci5tb2RlbC5nZXREaXNwbGF5VGV4dChuKSl9fSxyLmluaXRpYWxEYXRhLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gS3QoImluaXRpYWxWYWx1ZSIsdCl9KS5nZXRPcih7fSkpfSksRUMuY29uZmlnKHtzdHJlYW06e21vZGU6InRocm90dGxlIixkZWxheTpyLnJlc3BvbnNlVGltZSxzdG9wRXZlbnQ6ITF9LG9uU3RyZWFtOmZ1bmN0aW9uKHQsbil7dmFyIGU9SHkuZ2V0Q291cGxlZCh0LCJzYW5kYm94Iik7aWYoWG0uaXNGb2N1c2VkKHQpJiZ6aSh0LmVsZW1lbnQoKSkubGVuZ3RoPj1yLm1pbkNoYXJzKXt2YXIgbz1NZi5nZXRDdXJyZW50KGUpLmJpbmQoZnVuY3Rpb24odCl7cmV0dXJuIGpmLmdldEhpZ2hsaWdodGVkKHQpLm1hcChibC5nZXRWYWx1ZSl9KTtyLnByZXZpZXdpbmcuc2V0KCEwKTtMeShyLHUodCksdCxlLGksZnVuY3Rpb24odCl7TWYuZ2V0Q3VycmVudChlKS5lYWNoKGZ1bmN0aW9uKHQpe28uZm9sZChmdW5jdGlvbigpe3IubW9kZWwuc2VsZWN0c092ZXImJmpmLmhpZ2hsaWdodEZpcnN0KHQpfSxmdW5jdGlvbihuKXtqZi5oaWdobGlnaHRCeSh0LGZ1bmN0aW9uKHQpe3JldHVybiBibC5nZXRWYWx1ZSh0KS52YWx1ZT09PW4udmFsdWV9KSxqZi5nZXRIaWdobGlnaHRlZCh0KS5vclRodW5rKGZ1bmN0aW9uKCl7cmV0dXJuIGpmLmhpZ2hsaWdodEZpcnN0KHQpLHN0Lm5vbmUoKX0pfSl9KX0sc3kuSGlnaGxpZ2h0Rmlyc3QpLmdldChaKX19LGNhbmNlbEV2ZW50Ok9vKCl9KSxSbS5jb25maWcoe21vZGU6InNwZWNpYWwiLG9uRG93bjpmdW5jdGlvbih0LG4pe3JldHVybiBlKHQsbixqZi5oaWdobGlnaHRGaXJzdCksc3Quc29tZSghMCl9LG9uRXNjYXBlOmZ1bmN0aW9uKHQpe3ZhciBuPUh5LmdldENvdXBsZWQodCwic2FuZGJveCIpO3JldHVybiBRcy5pc09wZW4obik/KFFzLmNsb3NlKG4pLHN0LnNvbWUoITApKTpzdC5ub25lKCl9LG9uVXA6ZnVuY3Rpb24odCxuKXtyZXR1cm4gZSh0LG4samYuaGlnaGxpZ2h0TGFzdCksc3Quc29tZSghMCl9LG9uRW50ZXI6ZnVuY3Rpb24obil7dmFyIHQ9SHkuZ2V0Q291cGxlZChuLCJzYW5kYm94IiksZT1Rcy5pc09wZW4odCk7aWYoZSYmIXIucHJldmlld2luZy5nZXQoKSlyZXR1cm4gTWYuZ2V0Q3VycmVudCh0KS5iaW5kKGZ1bmN0aW9uKHQpe3JldHVybiBqZi5nZXRIaWdobGlnaHRlZCh0KX0pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gam8obixGQygpLHtpdGVtOnR9KSwhMH0pO3ZhciBvPWJsLmdldFZhbHVlKG4pO3JldHVybiBMbyhuLE9vKCkpLHIub25FeGVjdXRlKHQsbixvKSxlJiZRcy5jbG9zZSh0KSxzdC5zb21lKCEwKX19KSxyZy5jb25maWcoe3RvZ2dsZUNsYXNzOnIubWFya2Vycy5vcGVuQ2xhc3MsYXJpYTp7bW9kZToiZXhwYW5kZWQifX0pLEh5LmNvbmZpZyh7b3RoZXJzOntzYW5kYm94OmZ1bmN0aW9uKHQpe3JldHVybiBZeShyLHQse29uT3BlbjpmdW5jdGlvbigpe3JldHVybiByZy5vbih0KX0sb25DbG9zZTpmdW5jdGlvbigpe3JldHVybiByZy5vZmYodCl9fSl9fX0pLExtKCJ0eXBlYWhlYWRldmVudHMiLFt1cihmdW5jdGlvbih0KXt2YXIgbj1aO1V5KHIsdSh0KSx0LGksbixzeS5IaWdobGlnaHRGaXJzdCkuZ2V0KFopfSksSm8oRkMoKSxmdW5jdGlvbih0LG4pe3ZhciBlPUh5LmdldENvdXBsZWQodCwic2FuZGJveCIpO0JDKHIubW9kZWwsdCxuLmV2ZW50KCkuaXRlbSgpKSxMbyh0LE9vKCkpLHIub25JdGVtRXhlY3V0ZSh0LGUsbi5ldmVudCgpLml0ZW0oKSxibC5nZXRWYWx1ZSh0KSksUXMuY2xvc2UoZSksTUModCl9KV0uY29uY2F0KHIuZGlzbWlzc09uQmx1cj9bSm8odm8oKSxmdW5jdGlvbih0KXt2YXIgbj1IeS5nZXRDb3VwbGVkKHQsInNhbmRib3giKTskYShuLmVsZW1lbnQoKSkuaXNOb25lKCkmJlFzLmNsb3NlKG4pfSldOltdKSldO3JldHVybnt1aWQ6ci51aWQsZG9tOml5KEN0KHIse2lucHV0QXR0cmlidXRlczp7cm9sZToiY29tYm9ib3giLCJhcmlhLWF1dG9jb21wbGV0ZSI6Imxpc3QiLCJhcmlhLWhhc3BvcHVwIjoidHJ1ZSJ9fSkpLGJlaGF2aW91cnM6ZXQoZXQoe30sbyksd2woci50eXBlYWhlYWRCZWhhdmlvdXJzLGEpKSxldmVudE9yZGVyOnIuZXZlbnRPcmRlcn19fSksSEM9ZnVuY3Rpb24oaSl7cmV0dXJuIGV0KGV0KHt9LGkpLHt0b0NhY2hlZDpmdW5jdGlvbigpe3JldHVybiBIQyhpLnRvQ2FjaGVkKCkpfSxiaW5kRnV0dXJlOmZ1bmN0aW9uKG4pe3JldHVybiBIQyhpLmJpbmQoZnVuY3Rpb24odCl7cmV0dXJuIHQuZm9sZChmdW5jdGlvbih0KXtyZXR1cm4gdnkob3QuZXJyb3IodCkpfSxmdW5jdGlvbih0KXtyZXR1cm4gbih0KX0pfSkpfSxiaW5kUmVzdWx0OmZ1bmN0aW9uKG4pe3JldHVybiBIQyhpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5iaW5kKG4pfSkpfSxtYXBSZXN1bHQ6ZnVuY3Rpb24obil7cmV0dXJuIEhDKGkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm1hcChuKX0pKX0sbWFwRXJyb3I6ZnVuY3Rpb24obil7cmV0dXJuIEhDKGkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm1hcEVycm9yKG4pfSkpfSxmb2xkUmVzdWx0OmZ1bmN0aW9uKG4sZSl7cmV0dXJuIGkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LmZvbGQobixlKX0pfSx3aXRoVGltZW91dDpmdW5jdGlvbih0LHIpe3JldHVybiBIQyhoeShmdW5jdGlvbihuKXt2YXIgZT0hMSxvPW50LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtlPSEwLG4ob3QuZXJyb3IocigpKSl9LHQpO2kuZ2V0KGZ1bmN0aW9uKHQpe2V8fChudC5jbGVhclRpbWVvdXQobyksbih0KSl9KX0pKX19KX0sUEM9ZnVuY3Rpb24odCl7cmV0dXJuIEhDKGh5KHQpKX0sekM9UEMsTkM9e3R5cGU6InNlcGFyYXRvciJ9LExDPWZ1bmN0aW9uKHQpe3JldHVybnt0eXBlOiJtZW51aXRlbSIsdmFsdWU6dC51cmwsdGV4dDp0LnRpdGxlLG1ldGE6e2F0dGFjaDp0LmF0dGFjaH0sb25BY3Rpb246ZnVuY3Rpb24oKXt9fX0sakM9ZnVuY3Rpb24odCxuKXtyZXR1cm57dHlwZToibWVudWl0ZW0iLHZhbHVlOm4sdGV4dDp0LG1ldGE6e2F0dGFjaDp1bmRlZmluZWR9LG9uQWN0aW9uOmZ1bmN0aW9uKCl7fX19LFVDPWZ1bmN0aW9uKHQsbil7cmV0dXJuIG89dCxlPVAobixmdW5jdGlvbih0KXtyZXR1cm4gdC50eXBlPT09b30pLFYoZSxMQyk7dmFyIGUsb30sV0M9ZnVuY3Rpb24odCxuKXt2YXIgZT10LnRvTG93ZXJDYXNlKCk7cmV0dXJuIFAobixmdW5jdGlvbih0KXt2YXIgbj10Lm1ldGEhPT11bmRlZmluZWQmJnQubWV0YS50ZXh0IT09dW5kZWZpbmVkP3QubWV0YS50ZXh0OnQudGV4dDtyZXR1cm4gRWUobi50b0xvd2VyQ2FzZSgpLGUpfHxFZSh0LnZhbHVlLnRvTG93ZXJDYXNlKCksZSl9KX0sR0M9ZnVuY3Rpb24odSx0LGEpe3ZhciBuPWJsLmdldFZhbHVlKHQpLGM9bi5tZXRhLnRleHQhPT11bmRlZmluZWQ/bi5tZXRhLnRleHQ6bi52YWx1ZTtyZXR1cm4gYS5nZXRMaW5rSW5mb3JtYXRpb24oKS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuW119LGZ1bmN0aW9uKHQpe3ZhciBuLGUsbyxyLGk9V0MoYywobj1hLmdldEhpc3RvcnkodSksVihuLGZ1bmN0aW9uKHQpe3JldHVybiBqQyh0LHQpfSkpKTtyZXR1cm4iZmlsZSI9PT11PyhlPVtpLFdDKGMsVUMoImhlYWRlciIsdC50YXJnZXRzKSksV0MoYyx1dChbKHI9dCxzdC5mcm9tKHIuYW5jaG9yVG9wKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIGpDKCI8dG9wPiIsdCl9KS50b0FycmF5KCkpLFVDKCJhbmNob3IiLHQudGFyZ2V0cyksKG89dCxzdC5mcm9tKG8uYW5jaG9yQm90dG9tKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIGpDKCI8Ym90dG9tPiIsdCl9KS50b0FycmF5KCkpXSkpXSxOKGUsZnVuY3Rpb24odCxuKXtyZXR1cm4gMD09PXQubGVuZ3RofHwwPT09bi5sZW5ndGg/dC5jb25jYXQobik6dC5jb25jYXQoTkMsbil9LFtdKSk6aX0pfSxYQz1OcigiYXJpYS1pbnZhbGlkIiksWUM9ZnVuY3Rpb24ocixvLGkpe3ZhciB0LG4sZSx1LGEsYz1vLnNoYXJlZC5wcm92aWRlcnMscz1mdW5jdGlvbih0KXt2YXIgbj1ibC5nZXRWYWx1ZSh0KTtpLmFkZFRvSGlzdG9yeShuLnZhbHVlLHIuZmlsZXR5cGUpfSxsPWV5LnBhcnRzKCkuZmllbGQoe2ZhY3Rvcnk6VkMsZGlzbWlzc09uQmx1cjohMCxpbnB1dENsYXNzZXM6WyJ0b3gtdGV4dGZpZWxkIl0sc2FuZGJveENsYXNzZXM6WyJ0b3gtZGlhbG9nX19wb3B1cHMiXSxpbnB1dEF0dHJpYnV0ZXM6eyJhcmlhLWVycm9ybWVzc2FnZSI6WEMsdHlwZToidXJsIn0sbWluQ2hhcnM6MCxyZXNwb25zZVRpbWU6MCxmZXRjaDpmdW5jdGlvbih0KXt2YXIgbj1HQyhyLmZpbGV0eXBlLHQsaSksZT1EayhuLCRoLkJVQkJMRV9UT19TQU5EQk9YLG8sITEpO3JldHVybiB2eShlKX0sZ2V0SG90c3BvdDpmdW5jdGlvbih0KXtyZXR1cm4gaC5nZXRPcHQodCl9LG9uU2V0VmFsdWU6ZnVuY3Rpb24odCxuKXt0Lmhhc0NvbmZpZ3VyZWQoVHkpJiZUeS5ydW4odCkuZ2V0KFopfSx0eXBlYWhlYWRCZWhhdmlvdXJzOnphKHV0KFtpLmdldFZhbGlkYXRpb25IYW5kbGVyKCkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBUeS5jb25maWcoe2dldFJvb3Q6ZnVuY3Rpb24odCl7cmV0dXJuIGxyKHQuZWxlbWVudCgpKX0saW52YWxpZENsYXNzOiJ0b3gtY29udHJvbC13cmFwLS1zdGF0dXMtaW52YWxpZCIsbm90aWZ5OntvbkludmFsaWQ6ZnVuY3Rpb24odCxuKXtkLmdldE9wdCh0KS5lYWNoKGZ1bmN0aW9uKHQpe0JyKHQuZWxlbWVudCgpLCJ0aXRsZSIsYy50cmFuc2xhdGUobikpfSl9fSx2YWxpZGF0b3I6e3ZhbGlkYXRlOmZ1bmN0aW9uKHQpe3ZhciBuPWJsLmdldFZhbHVlKHQpO3JldHVybiB6QyhmdW5jdGlvbihvKXtlKHt0eXBlOnIuZmlsZXR5cGUsdXJsOm4udmFsdWV9LGZ1bmN0aW9uKHQpe2lmKCJpbnZhbGlkIj09PXQuc3RhdHVzKXt2YXIgbj1vdC5lcnJvcih0Lm1lc3NhZ2UpO28obil9ZWxzZXt2YXIgZT1vdC52YWx1ZSh0Lm1lc3NhZ2UpO28oZSl9fSl9KX0sdmFsaWRhdGVPbkxvYWQ6ITF9fSl9KS50b0FycmF5KCksW3BoLmNvbmZpZyh7ZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gci5kaXNhYmxlZHx8Yy5pc1JlYWRPbmx5KCl9fSksRHkuY29uZmlnKHt9KSxMbSgidXJsaW5wdXQtZXZlbnRzIix1dChbImZpbGUiPT09ci5maWxldHlwZT9bSm8oc28oKSxmdW5jdGlvbih0KXtqbyh0LEdiLHtuYW1lOnIubmFtZX0pfSldOltdLFtKbyhsbygpLGZ1bmN0aW9uKHQpe2pvKHQsR2Ise25hbWU6ci5uYW1lfSkscyh0KX0pLEpvKGJvKCksZnVuY3Rpb24odCl7am8odCxHYix7bmFtZTpyLm5hbWV9KSxzKHQpfSldXSkpXV0pKSxldmVudE9yZGVyOigodD17fSlbc28oKV09WyJzdHJlYW1pbmciLCJ1cmxpbnB1dC1ldmVudHMiLCJpbnZhbGlkYXRpbmciXSx0KSxtb2RlbDp7Z2V0RGlzcGxheVRleHQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQudmFsdWV9LHNlbGVjdHNPdmVyOiExLHBvcHVsYXRlRnJvbUJyb3dzZTohMX0sbWFya2Vyczp7b3BlbkNsYXNzOiJ0b3gtdGV4dGZpZWxkLS1wb3B1cC1vcGVuIn0sbGF6eVNpbms6by5zaGFyZWQuZ2V0U2luayxwYXJ0czp7bWVudTpZdigwLDAsIm5vcm1hbCIpfSxvbkV4ZWN1dGU6ZnVuY3Rpb24odCxuLGUpe2pvKG4sS2Ise30pfSxvbkl0ZW1FeGVjdXRlOmZ1bmN0aW9uKHQsbixlLG8pe3ModCksam8odCxHYix7bmFtZTpyLm5hbWV9KX19KSxmPXIubGFiZWwubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBJeSh0LGMpfSksZD1VZygobj0iaW52YWxpZCIsZT1zdC5zb21lKFhDKSx2b2lkIDA9PT0odT0id2FybmluZyIpJiYodT1uKSx2b2lkIDA9PT1hJiYoYT1uKSx7ZG9tOnt0YWc6ImRpdiIsY2xhc3NlczpbInRveC1pY29uIiwidG94LWNvbnRyb2wtd3JhcF9fc3RhdHVzLWljb24tIituXSxpbm5lckh0bWw6R2codSxjLmljb25zKSxhdHRyaWJ1dGVzOmV0KHt0aXRsZTpjLnRyYW5zbGF0ZShhKSwiYXJpYS1saXZlIjoicG9saXRlIn0sZS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJue319LGZ1bmN0aW9uKHQpe3JldHVybntpZDp0fX0pKX19KSksbT1VZyh7ZG9tOnt0YWc6ImRpdiIsY2xhc3NlczpbInRveC1jb250cm9sLXdyYXBfX3N0YXR1cy1pY29uLXdyYXAiXX0sY29tcG9uZW50czpbZC5hc1NwZWMoKV19KSxnPWkuZ2V0VXJsUGlja2VyKHIuZmlsZXR5cGUpLHA9TnIoImJyb3dzZXIudXJsLmV2ZW50IiksaD1VZyh7ZG9tOnt0YWc6ImRpdiIsY2xhc3NlczpbInRveC1jb250cm9sLXdyYXAiXX0sY29tcG9uZW50czpbbCxtLmFzU3BlYygpXSxiZWhhdmlvdXJzOnphKFtwaC5jb25maWcoe2Rpc2FibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIHIuZGlzYWJsZWR8fGMuaXNSZWFkT25seSgpfX0pXSl9KSx2PVVnKFBrKHtuYW1lOnIubmFtZSxpY29uOnN0LnNvbWUoImJyb3dzZSIpLHRleHQ6ci5sYWJlbC5nZXRPcigiIiksZGlzYWJsZWQ6ci5kaXNhYmxlZCxwcmltYXJ5OiExLGJvcmRlcmxlc3M6ITB9LGZ1bmN0aW9uKHQpe3JldHVybiBMbyh0LHApfSxjLFtdLFsidG94LWJyb3dzZS11cmwiXSkpO3JldHVybiBleS5za2V0Y2goe2RvbTpGeShbXSksY29tcG9uZW50czpmLnRvQXJyYXkoKS5jb25jYXQoW3tkb206e3RhZzoiZGl2IixjbGFzc2VzOlsidG94LWZvcm1fX2NvbnRyb2xzLWgtc3RhY2siXX0sY29tcG9uZW50czp1dChbW2guYXNTcGVjKCldLGcubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIHYuYXNTcGVjKCl9KS50b0FycmF5KCldKX1dKSxmaWVsZEJlaGF2aW91cnM6emEoW3BoLmNvbmZpZyh7ZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gci5kaXNhYmxlZHx8Yy5pc1JlYWRPbmx5KCl9LG9uRGlzYWJsZWQ6ZnVuY3Rpb24odCl7ZXkuZ2V0RmllbGQodCkuZWFjaChwaC5kaXNhYmxlKSx2LmdldE9wdCh0KS5lYWNoKHBoLmRpc2FibGUpfSxvbkVuYWJsZWQ6ZnVuY3Rpb24odCl7ZXkuZ2V0RmllbGQodCkuZWFjaChwaC5lbmFibGUpLHYuZ2V0T3B0KHQpLmVhY2gocGguZW5hYmxlKX19KSxVaCgpLExtKCJ1cmwtaW5wdXQtZXZlbnRzIixbSm8ocCxmdW5jdGlvbihvKXtNZi5nZXRDdXJyZW50KG8pLmVhY2goZnVuY3Rpb24obil7dmFyIHQ9YmwuZ2V0VmFsdWUobiksZT1ldCh7ZmllbGRuYW1lOnIubmFtZX0sdCk7Zy5lYWNoKGZ1bmN0aW9uKHQpe3QoZSkuZ2V0KGZ1bmN0aW9uKHQpe2JsLnNldFZhbHVlKG4sdCksam8obyxHYix7bmFtZTpyLm5hbWV9KX0pfSl9KX0pXSldKX0pfSxxQz1mdW5jdGlvbihhLGMpe3ZhciB0LG4sZT1hLmxhYmVsLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gSXkodCxjKX0pLG89ZnVuY3Rpb24obyl7cmV0dXJuIGZ1bmN0aW9uKG4sZSl7QXUoZS5ldmVudCgpLnRhcmdldCgpLCJbZGF0YS1jb2xsZWN0aW9uLWl0ZW0tdmFsdWVdIikuZWFjaChmdW5jdGlvbih0KXtvKG4sZSx0LERyKHQsImRhdGEtY29sbGVjdGlvbi1pdGVtLXZhbHVlIikpfSl9fSxyPWZ1bmN0aW9uKHQsbil7dmFyIGU9VihuLGZ1bmN0aW9uKHQpe3ZhciBuLGU9VnAudHJhbnNsYXRlKHQudGV4dCksbz0xPT09YS5jb2x1bW5zPyc8ZGl2IGNsYXNzPSJ0b3gtY29sbGVjdGlvbl9faXRlbS1sYWJlbCI+JytlKyI8L2Rpdj4iOiIiLHI9JzxkaXYgY2xhc3M9InRveC1jb2xsZWN0aW9uX19pdGVtLWljb24iPicrdC5pY29uKyI8L2Rpdj4iLGk9e186IiAiLCIgLSAiOiIgIiwiLSI6IiAifSx1PWUucmVwbGFjZSgvXF98IFwtIHxcLS9nLGZ1bmN0aW9uKHQpe3JldHVybiBpW3RdfSk7cmV0dXJuJzxkaXYgY2xhc3M9InRveC1jb2xsZWN0aW9uX19pdGVtJysoYy5pc1JlYWRPbmx5KCk/IiB0b3gtY29sbGVjdGlvbl9faXRlbS0tc3RhdGUtZGlzYWJsZWQiOiIiKSsnIiB0YWJpbmRleD0iLTEiIGRhdGEtY29sbGVjdGlvbi1pdGVtLXZhbHVlPSInKygnIic9PT0obj10LnZhbHVlKT8iJnF1b3Q7IjpuKSsnIiB0aXRsZT0iJyt1KyciIGFyaWEtbGFiZWw9IicrdSsnIj4nK3IrbysiPC9kaXY+In0pLG89MTxhLmNvbHVtbnMmJiJhdXRvIiE9PWEuY29sdW1ucz9SKGUsYS5jb2x1bW5zKTpbZV0scj1WKG8sZnVuY3Rpb24odCl7cmV0dXJuJzxkaXYgY2xhc3M9InRveC1jb2xsZWN0aW9uX19ncm91cCI+Jyt0LmpvaW4oIiIpKyI8L2Rpdj4ifSk7a3IodC5lbGVtZW50KCksci5qb2luKCIiKSl9LGk9byhmdW5jdGlvbih0LG4sZSxvKXtuLnN0b3AoKSxjLmlzUmVhZE9ubHkoKXx8am8odCxxYix7bmFtZTphLm5hbWUsdmFsdWU6b30pfSksdT1bSm8ocm8oKSxvKGZ1bmN0aW9uKHQsbixlKXtLYShlKX0pKSxKbyhmbygpLGkpLEpvKFNvKCksaSksSm8oaW8oKSxvKGZ1bmN0aW9uKHQsbixlKXtNdSh0LmVsZW1lbnQoKSwiLiIrV3ApLmVhY2goZnVuY3Rpb24odCl7eGkodCxXcCl9KSxiaShlLFdwKX0pKSxKbyh1bygpLG8oZnVuY3Rpb24odCl7TXUodC5lbGVtZW50KCksIi4iK1dwKS5lYWNoKGZ1bmN0aW9uKHQpe3hpKHQsV3ApfSl9KSksdXIobyhmdW5jdGlvbih0LG4sZSxvKXtqbyh0LHFiLHtuYW1lOmEubmFtZSx2YWx1ZTpvfSl9KSldLHM9ZnVuY3Rpb24odCxuKXtyZXR1cm4gVihZYyh0LmVsZW1lbnQoKSwiLnRveC1jb2xsZWN0aW9uX19pdGVtIiksbil9LGw9ZXkucGFydHMoKS5maWVsZCh7ZG9tOnt0YWc6ImRpdiIsY2xhc3NlczpbInRveC1jb2xsZWN0aW9uIl0uY29uY2F0KDEhPT1hLmNvbHVtbnM/WyJ0b3gtY29sbGVjdGlvbi0tZ3JpZCJdOlsidG94LWNvbGxlY3Rpb24tLWxpc3QiXSl9LGNvbXBvbmVudHM6W10sZmFjdG9yeTp7c2tldGNoOmN0fSxiZWhhdmlvdXJzOnphKFtwaC5jb25maWcoe2Rpc2FibGVkOmMuaXNSZWFkT25seSxvbkRpc2FibGVkOmZ1bmN0aW9uKHQpe3ModCxmdW5jdGlvbih0KXtiaSh0LCJ0b3gtY29sbGVjdGlvbl9faXRlbS0tc3RhdGUtZGlzYWJsZWQiKSxCcih0LCJhcmlhLWRpc2FibGVkIiwhMCl9KX0sb25FbmFibGVkOmZ1bmN0aW9uKHQpe3ModCxmdW5jdGlvbih0KXt4aSh0LCJ0b3gtY29sbGVjdGlvbl9faXRlbS0tc3RhdGUtZGlzYWJsZWQiKSxGcih0LCJhcmlhLWRpc2FibGVkIil9KX19KSxVaCgpLE5tLmNvbmZpZyh7fSksYmwuY29uZmlnKHtzdG9yZTp7bW9kZToibWVtb3J5Iixpbml0aWFsVmFsdWU6W119LG9uU2V0VmFsdWU6ZnVuY3Rpb24obyx0KXtyKG8sdCksImF1dG8iPT09YS5jb2x1bW5zJiZPcChvLDUsInRveC1jb2xsZWN0aW9uX19pdGVtIikuZWFjaChmdW5jdGlvbih0KXt2YXIgbj10Lm51bVJvd3MsZT10Lm51bUNvbHVtbnM7Um0uc2V0R3JpZFNpemUobyxuLGUpfSksTG8obyxaYil9fSksRHkuY29uZmlnKHt9KSxSbS5jb25maWcoKHQ9YS5jb2x1bW5zLG49Im5vcm1hbCIsMT09PXQ/e21vZGU6Im1lbnUiLG1vdmVPblRhYjohMSxzZWxlY3RvcjoiLnRveC1jb2xsZWN0aW9uX19pdGVtIn06ImF1dG8iPT09dD97bW9kZToiZmxhdGdyaWQiLHNlbGVjdG9yOiIudG94LWNvbGxlY3Rpb25fX2l0ZW0iLGluaXRTaXplOntudW1Db2x1bW5zOjEsbnVtUm93czoxfX06e21vZGU6Im1hdHJpeCIsc2VsZWN0b3JzOntyb3c6ImNvbG9yIj09PW4/Ii50b3gtc3dhdGNoZXNfX3JvdyI6Ii50b3gtY29sbGVjdGlvbl9fZ3JvdXAiLGNlbGw6ImNvbG9yIj09PW4/Ii4iK3pwOiIuIitQcH19KSksTG0oImNvbGxlY3Rpb24tZXZlbnRzIix1KV0pLGV2ZW50T3JkZXI6eyJhbGxveS5leGVjdXRlIjpbImRpc2FibGluZyIsImFsbG95LmJhc2UuYmVoYXZpb3VyIiwiY29sbGVjdGlvbi1ldmVudHMiXX19KTtyZXR1cm4gTXkoZSxsLFsidG94LWZvcm1fX2dyb3VwLS1jb2xsZWN0aW9uIl0sW10pfSxLQz1mdW5jdGlvbihyKXtyZXR1cm4gZnVuY3Rpb24obixlLG8pe3JldHVybiBidChlLCJuYW1lIikuZm9sZChmdW5jdGlvbigpe3JldHVybiByKGUsbyl9LGZ1bmN0aW9uKHQpe3JldHVybiBuLmZpZWxkKHQscihlLG8pKX0pfX0sSkM9e2JhcjpLQyhmdW5jdGlvbih0LG4pe3JldHVybiBlPXQsbz1uLnNoYXJlZCx7ZG9tOnt0YWc6ImRpdiIsY2xhc3NlczpbInRveC1iYXIiLCJ0b3gtZm9ybV9fY29udHJvbHMtaC1zdGFjayJdfSxjb21wb25lbnRzOlYoZS5pdGVtcyxvLmludGVycHJldGVyKX07dmFyIGUsb30pLGNvbGxlY3Rpb246S0MoZnVuY3Rpb24odCxuKXtyZXR1cm4gcUModCxuLnNoYXJlZC5wcm92aWRlcnMpfSksYWxlcnRiYW5uZXI6S0MoZnVuY3Rpb24odCxuKXtyZXR1cm4gZT10LG89bi5zaGFyZWQucHJvdmlkZXJzLFViLnNrZXRjaCh7ZG9tOnt0YWc6ImRpdiIsYXR0cmlidXRlczp7cm9sZToiYWxlcnQifSxjbGFzc2VzOlsidG94LW5vdGlmaWNhdGlvbiIsInRveC1ub3RpZmljYXRpb24tLWluIiwidG94LW5vdGlmaWNhdGlvbi0tIitlLmxldmVsXX0sY29tcG9uZW50czpbe2RvbTp7dGFnOiJkaXYiLGNsYXNzZXM6WyJ0b3gtbm90aWZpY2F0aW9uX19pY29uIl19LGNvbXBvbmVudHM6W2pnLnNrZXRjaCh7ZG9tOnt0YWc6ImJ1dHRvbiIsY2xhc3NlczpbInRveC1idXR0b24iLCJ0b3gtYnV0dG9uLS1uYWtlZCIsInRveC1idXR0b24tLWljb24iXSxpbm5lckh0bWw6R2coZS5pY29uLG8uaWNvbnMpLGF0dHJpYnV0ZXM6e3RpdGxlOm8udHJhbnNsYXRlKGUuaWNvblRvb2x0aXApfX0sYWN0aW9uOmZ1bmN0aW9uKHQpe2pvKHQscWIse25hbWU6ImFsZXJ0LWJhbm5lciIsdmFsdWU6ZS51cmx9KX19KV19LHtkb206e3RhZzoiZGl2IixjbGFzc2VzOlsidG94LW5vdGlmaWNhdGlvbl9fYm9keSJdLGlubmVySHRtbDpvLnRyYW5zbGF0ZShlLnRleHQpfX1dfSk7dmFyIGUsb30pLGlucHV0OktDKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGU9dCxvPW4uc2hhcmVkLnByb3ZpZGVycyxrQyh7bmFtZTplLm5hbWUsbXVsdGlsaW5lOiExLGxhYmVsOmUubGFiZWwsaW5wdXRNb2RlOmUuaW5wdXRNb2RlLHBsYWNlaG9sZGVyOmUucGxhY2Vob2xkZXIsZmxleDohMSxkaXNhYmxlZDplLmRpc2FibGVkLGNsYXNzbmFtZToidG94LXRleHRmaWVsZCIsdmFsaWRhdGlvbjpzdC5ub25lKCksbWF4aW1pemVkOmUubWF4aW1pemVkfSxvKTt2YXIgZSxvfSksdGV4dGFyZWE6S0MoZnVuY3Rpb24odCxuKXtyZXR1cm4gZT10LG89bi5zaGFyZWQucHJvdmlkZXJzLGtDKHtuYW1lOmUubmFtZSxtdWx0aWxpbmU6ITAsbGFiZWw6ZS5sYWJlbCxpbnB1dE1vZGU6c3Qubm9uZSgpLHBsYWNlaG9sZGVyOmUucGxhY2Vob2xkZXIsZmxleDohMCxkaXNhYmxlZDplLmRpc2FibGVkLGNsYXNzbmFtZToidG94LXRleHRhcmVhIix2YWxpZGF0aW9uOnN0Lm5vbmUoKSxtYXhpbWl6ZWQ6ZS5tYXhpbWl6ZWR9LG8pO3ZhciBlLG99KSxsYWJlbDpLQyhmdW5jdGlvbih0LG4pe3JldHVybiBlPXQsbz1uLnNoYXJlZCxyPXtkb206e3RhZzoibGFiZWwiLGlubmVySHRtbDpvLnByb3ZpZGVycy50cmFuc2xhdGUoZS5sYWJlbCksY2xhc3NlczpbInRveC1sYWJlbCJdfX0saT1WKGUuaXRlbXMsby5pbnRlcnByZXRlcikse2RvbTp7dGFnOiJkaXYiLGNsYXNzZXM6WyJ0b3gtZm9ybV9fZ3JvdXAiXX0sY29tcG9uZW50czpbcl0uY29uY2F0KGkpLGJlaGF2aW91cnM6emEoW1p3KCksTm0uY29uZmlnKHt9KSxsUyhzdC5ub25lKCkpLFJtLmNvbmZpZyh7bW9kZToiYWN5Y2xpYyJ9KV0pfTt2YXIgZSxvLHIsaX0pLGlmcmFtZTooaEM9ZnVuY3Rpb24odCxuKXtyZXR1cm4gd1ModCxuLnNoYXJlZC5wcm92aWRlcnMpfSxmdW5jdGlvbih0LG4sZSl7dmFyIG89Q3Qobix7c291cmNlOiJkeW5hbWljIn0pO3JldHVybiBLQyhoQykodCxvLGUpfSksYnV0dG9uOktDKGZ1bmN0aW9uKHQsbil7cmV0dXJuIExrKHQsbi5zaGFyZWQucHJvdmlkZXJzKX0pLGNoZWNrYm94OktDKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGU9dCxvPW4uc2hhcmVkLnByb3ZpZGVycyxyPWJsLmNvbmZpZyh7c3RvcmU6e21vZGU6Im1hbnVhbCIsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuZWxlbWVudCgpLmRvbSgpLmNoZWNrZWR9LHNldFZhbHVlOmZ1bmN0aW9uKHQsbil7dC5lbGVtZW50KCkuZG9tKCkuY2hlY2tlZD1ufX19KSxpPWZ1bmN0aW9uKHQpe3JldHVybiB0LmVsZW1lbnQoKS5kb20oKS5jbGljaygpLHN0LnNvbWUoITApfSx1PWV5LnBhcnRzKCkuZmllbGQoe2ZhY3Rvcnk6e3NrZXRjaDpjdH0sZG9tOnt0YWc6ImlucHV0IixjbGFzc2VzOlsidG94LWNoZWNrYm94X19pbnB1dCJdLGF0dHJpYnV0ZXM6e3R5cGU6ImNoZWNrYm94In19LGJlaGF2aW91cnM6emEoW1p3KCkscGguY29uZmlnKHtkaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiBlLmRpc2FibGVkfHxvLmlzUmVhZE9ubHkoKX19KSxEeS5jb25maWcoe30pLFhtLmNvbmZpZyh7fSkscixSbS5jb25maWcoe21vZGU6InNwZWNpYWwiLG9uRW50ZXI6aSxvblNwYWNlOmksc3RvcFNwYWNlS2V5dXA6ITB9KSxMbSgiY2hlY2tib3gtZXZlbnRzIixbSm8obG8oKSxmdW5jdGlvbih0LG4pe2pvKHQsR2Ise25hbWU6ZS5uYW1lfSl9KV0pXSl9KSxhPWV5LnBhcnRzKCkubGFiZWwoe2RvbTp7dGFnOiJzcGFuIixjbGFzc2VzOlsidG94LWNoZWNrYm94X19sYWJlbCJdLGlubmVySHRtbDpvLnRyYW5zbGF0ZShlLmxhYmVsKX0sYmVoYXZpb3Vyczp6YShbWnkuY29uZmlnKHt9KV0pfSkscz1VZyh7ZG9tOnt0YWc6ImRpdiIsY2xhc3NlczpbInRveC1jaGVja2JveF9faWNvbnMiXX0sY29tcG9uZW50czpbKGM9ZnVuY3Rpb24odCl7cmV0dXJue2RvbTp7dGFnOiJzcGFuIixjbGFzc2VzOlsidG94LWljb24iLCJ0b3gtY2hlY2tib3gtaWNvbl9fIit0XSxpbm5lckh0bWw6R2coImNoZWNrZWQiPT09dD8ic2VsZWN0ZWQiOiJ1bnNlbGVjdGVkIixvLmljb25zKX19fSkoImNoZWNrZWQiKSxjKCJ1bmNoZWNrZWQiKV19KSxleS5za2V0Y2goe2RvbTp7dGFnOiJsYWJlbCIsY2xhc3NlczpbInRveC1jaGVja2JveCJdfSxjb21wb25lbnRzOlt1LHMuYXNTcGVjKCksYV0sZmllbGRCZWhhdmlvdXJzOnphKFtwaC5jb25maWcoe2Rpc2FibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIGUuZGlzYWJsZWR8fG8uaXNSZWFkT25seSgpfSxkaXNhYmxlQ2xhc3M6InRveC1jaGVja2JveC0tZGlzYWJsZWQiLG9uRGlzYWJsZWQ6ZnVuY3Rpb24odCl7ZXkuZ2V0RmllbGQodCkuZWFjaChwaC5kaXNhYmxlKX0sb25FbmFibGVkOmZ1bmN0aW9uKHQpe2V5LmdldEZpZWxkKHQpLmVhY2gocGguZW5hYmxlKX19KSxVaCgpXSl9KTt2YXIgZSxvLHIsaSx1LGEsYyxzfSksY29sb3JpbnB1dDpLQyhmdW5jdGlvbih0LG4pe3JldHVybiBveCh0LG4uc2hhcmVkLG4uY29sb3JpbnB1dCl9KSxjb2xvcnBpY2tlcjpLQyhmdW5jdGlvbih0KXt2YXIgbj1mdW5jdGlvbih0KXtyZXR1cm4idG94LSIrdH0sZT1RdyhvUyxuKSxyPVVnKGUuc2tldGNoKHtkb206e3RhZzoiZGl2IixjbGFzc2VzOlsidG94LWNvbG9yLXBpY2tlci1jb250YWluZXIiXSxhdHRyaWJ1dGVzOntyb2xlOiJwcmVzZW50YXRpb24ifX0sb25WYWxpZEhleDpmdW5jdGlvbih0KXtqbyh0LHFiLHtuYW1lOiJoZXgtdmFsaWQiLHZhbHVlOiEwfSl9LG9uSW52YWxpZEhleDpmdW5jdGlvbih0KXtqbyh0LHFiLHtuYW1lOiJoZXgtdmFsaWQiLHZhbHVlOiExfSl9fSkpO3JldHVybntkb206e3RhZzoiZGl2In0sY29tcG9uZW50czpbci5hc1NwZWMoKV0sYmVoYXZpb3Vyczp6YShbYmwuY29uZmlnKHtzdG9yZTp7bW9kZToibWFudWFsIixnZXRWYWx1ZTpmdW5jdGlvbih0KXt2YXIgbj1yLmdldCh0KTtyZXR1cm4gTWYuZ2V0Q3VycmVudChuKS5iaW5kKGZ1bmN0aW9uKHQpe3JldHVybiBibC5nZXRWYWx1ZSh0KS5oZXh9KS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIiMiK3R9KS5nZXRPcigiIil9LHNldFZhbHVlOmZ1bmN0aW9uKHQsbil7dmFyIGU9L14jKFthLWZBLUYwLTldezN9KD86W2EtZkEtRjAtOV17M30pPykvLmV4ZWMobiksbz1yLmdldCh0KTtNZi5nZXRDdXJyZW50KG8pLmZvbGQoZnVuY3Rpb24oKXtudC5jb25zb2xlLmxvZygiQ2FuIG5vdCBmaW5kIGZvcm0iKX0sZnVuY3Rpb24odCl7Ymwuc2V0VmFsdWUodCx7aGV4OnN0LmZyb20oZVsxXSkuZ2V0T3IoIiIpfSksR3cuZ2V0RmllbGQodCwiaGV4IikuZWFjaChmdW5jdGlvbih0KXtMbyh0LHNvKCkpfSl9KX19fSksWncoKV0pfX0pLGRyb3B6b25lOktDKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGRTKHQsbi5zaGFyZWQucHJvdmlkZXJzKX0pLGdyaWQ6S0MoZnVuY3Rpb24odCxuKXtyZXR1cm4gZT10LG89bi5zaGFyZWQse2RvbTp7dGFnOiJkaXYiLGNsYXNzZXM6WyJ0b3gtZm9ybV9fZ3JpZCIsInRveC1mb3JtX19ncmlkLS0iK2UuY29sdW1ucysiY29sIl19LGNvbXBvbmVudHM6VihlLml0ZW1zLG8uaW50ZXJwcmV0ZXIpfTt2YXIgZSxvfSksc2VsZWN0Ym94OktDKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGU9dCxvPW4uc2hhcmVkLnByb3ZpZGVycyxyPVYoZS5pdGVtcyxmdW5jdGlvbih0KXtyZXR1cm57dGV4dDpvLnRyYW5zbGF0ZSh0LnRleHQpLHZhbHVlOnQudmFsdWV9fSksaT1lLmxhYmVsLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gSXkodCxvKX0pLHU9ZXkucGFydHMoKS5maWVsZCh7ZG9tOnt9LHNlbGVjdEF0dHJpYnV0ZXM6e3NpemU6ZS5zaXplfSxvcHRpb25zOnIsZmFjdG9yeTpTQyxzZWxlY3RCZWhhdmlvdXJzOnphKFtwaC5jb25maWcoe2Rpc2FibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIGUuZGlzYWJsZWR8fG8uaXNSZWFkT25seSgpfX0pLER5LmNvbmZpZyh7fSksTG0oInNlbGVjdGJveC1jaGFuZ2UiLFtKbyhsbygpLGZ1bmN0aW9uKHQsbil7am8odCxHYix7bmFtZTplLm5hbWV9KX0pXSldKX0pLGE9MTxlLnNpemU/c3Qubm9uZSgpOnN0LnNvbWUoe2RvbTp7dGFnOiJkaXYiLGNsYXNzZXM6WyJ0b3gtc2VsZWN0ZmllbGRfX2ljb24tanMiXSxpbm5lckh0bWw6R2coImNoZXZyb24tZG93biIsby5pY29ucyl9fSksYz17ZG9tOnt0YWc6ImRpdiIsY2xhc3NlczpbInRveC1zZWxlY3RmaWVsZCJdfSxjb21wb25lbnRzOnV0KFtbdV0sYS50b0FycmF5KCldKX0sZXkuc2tldGNoKHtkb206e3RhZzoiZGl2IixjbGFzc2VzOlsidG94LWZvcm1fX2dyb3VwIl19LGNvbXBvbmVudHM6dXQoW2kudG9BcnJheSgpLFtjXV0pLGZpZWxkQmVoYXZpb3Vyczp6YShbcGguY29uZmlnKHtkaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiBlLmRpc2FibGVkfHxvLmlzUmVhZE9ubHkoKX0sb25EaXNhYmxlZDpmdW5jdGlvbih0KXtleS5nZXRGaWVsZCh0KS5lYWNoKHBoLmRpc2FibGUpfSxvbkVuYWJsZWQ6ZnVuY3Rpb24odCl7ZXkuZ2V0RmllbGQodCkuZWFjaChwaC5lbmFibGUpfX0pLFVoKCldKX0pO3ZhciBlLG8scixpLHUsYSxjfSksc2l6ZWlucHV0OktDKGZ1bmN0aW9uKHQsbil7cmV0dXJuIEprKHQsbi5zaGFyZWQucHJvdmlkZXJzKX0pLHVybGlucHV0OktDKGZ1bmN0aW9uKHQsbil7cmV0dXJuIFlDKHQsbixuLnVybGlucHV0KX0pLGN1c3RvbWVkaXRvcjpLQyhmdW5jdGlvbihlKXt2YXIgbz1jZShzdC5ub25lKCkpLG49VWcoe2RvbTp7dGFnOmUudGFnfX0pLHI9Y2Uoc3Qubm9uZSgpKTtyZXR1cm57ZG9tOnt0YWc6ImRpdiIsY2xhc3NlczpbInRveC1jdXN0b20tZWRpdG9yIl19LGJlaGF2aW91cnM6emEoW0xtKCJlZGl0b3ItZm9vLWV2ZW50cyIsW29yKGZ1bmN0aW9uKHQpe24uZ2V0T3B0KHQpLmVhY2goZnVuY3Rpb24obil7dmFyIHQ7dD1lLChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCwiaW5pdCIpP2UuaW5pdChuLmVsZW1lbnQoKS5kb20oKSk6clMubG9hZChlLnNjcmlwdElkLGUuc2NyaXB0VXJsKS50aGVuKGZ1bmN0aW9uKHQpe3JldHVybiB0KG4uZWxlbWVudCgpLmRvbSgpLGUuc2V0dGluZ3MpfSkpLnRoZW4oZnVuY3Rpb24obil7ci5nZXQoKS5lYWNoKGZ1bmN0aW9uKHQpe24uc2V0VmFsdWUodCl9KSxyLnNldChzdC5ub25lKCkpLG8uc2V0KHN0LnNvbWUobikpfSl9KX0pXSksYmwuY29uZmlnKHtzdG9yZTp7bW9kZToibWFudWFsIixnZXRWYWx1ZTpmdW5jdGlvbigpe3JldHVybiBvLmdldCgpLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm4gci5nZXQoKS5nZXRPcigiIil9LGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFZhbHVlKCl9KX0sc2V0VmFsdWU6ZnVuY3Rpb24odCxuKXtvLmdldCgpLmZvbGQoZnVuY3Rpb24oKXtyLnNldChzdC5zb21lKG4pKX0sZnVuY3Rpb24odCl7cmV0dXJuIHQuc2V0VmFsdWUobil9KX19fSksWncoKV0pLGNvbXBvbmVudHM6W24uYXNTcGVjKCldfX0pLGh0bWxwYW5lbDpLQyhmdW5jdGlvbih0KXtyZXR1cm4icHJlc2VudGF0aW9uIj09PXQucHJlc2V0cz9VYi5za2V0Y2goe2RvbTp7dGFnOiJkaXYiLGNsYXNzZXM6WyJ0b3gtZm9ybV9fZ3JvdXAiXSxpbm5lckh0bWw6dC5odG1sfX0pOlViLnNrZXRjaCh7ZG9tOnt0YWc6ImRpdiIsY2xhc3NlczpbInRveC1mb3JtX19ncm91cCJdLGlubmVySHRtbDp0Lmh0bWwsYXR0cmlidXRlczp7cm9sZToiZG9jdW1lbnQifX0sY29udGFpbmVyQmVoYXZpb3Vyczp6YShbRHkuY29uZmlnKHt9KSxYbS5jb25maWcoe30pXSl9KX0pLGltYWdldG9vbHM6S0MoZnVuY3Rpb24odCxuKXtyZXR1cm4gd0ModCxuLnNoYXJlZC5wcm92aWRlcnMpfSksdGFibGU6S0MoZnVuY3Rpb24odCxuKXtyZXR1cm4gZT10LG89bi5zaGFyZWQucHJvdmlkZXJzLHU9ZnVuY3Rpb24odCl7cmV0dXJue2RvbTp7dGFnOiJ0aCIsaW5uZXJIdG1sOm8udHJhbnNsYXRlKHQpfX19LGE9ZnVuY3Rpb24odCl7cmV0dXJue2RvbTp7dGFnOiJ0ZCIsaW5uZXJIdG1sOm8udHJhbnNsYXRlKHQpfX19LGM9ZnVuY3Rpb24odCl7cmV0dXJue2RvbTp7dGFnOiJ0ciJ9LGNvbXBvbmVudHM6Vih0LGEpfX0se2RvbTp7dGFnOiJ0YWJsZSIsY2xhc3NlczpbInRveC1kaWFsb2dfX3RhYmxlIl19LGNvbXBvbmVudHM6WyhpPWUuaGVhZGVyLHtkb206e3RhZzoidGhlYWQifSxjb21wb25lbnRzOlt7ZG9tOnt0YWc6InRyIn0sY29tcG9uZW50czpWKGksdSl9XX0pLChyPWUuY2VsbHMse2RvbTp7dGFnOiJ0Ym9keSJ9LGNvbXBvbmVudHM6VihyLGMpfSldLGJlaGF2aW91cnM6emEoW0R5LmNvbmZpZyh7fSksWG0uY29uZmlnKHt9KV0pfTt2YXIgZSxvLHIsaSx1LGEsY30pLHBhbmVsOktDKGZ1bmN0aW9uKHQsbil7cmV0dXJuIG89bix7ZG9tOnt0YWc6ImRpdiIsY2xhc3NlczooZT10KS5jbGFzc2VzfSxjb21wb25lbnRzOlYoZS5pdGVtcyxvLnNoYXJlZC5pbnRlcnByZXRlcil9O3ZhciBlLG99KX0sJEM9e2ZpZWxkOmZ1bmN0aW9uKHQsbil7cmV0dXJuIG59fSxRQz1mdW5jdGlvbihuLHQsZSl7dmFyIG89Q3QoZSx7c2hhcmVkOntpbnRlcnByZXRlcjpmdW5jdGlvbih0KXtyZXR1cm4gWkMobix0LG8pfX19KTtyZXR1cm4gWkMobix0LG8pfSxaQz1mdW5jdGlvbihuLGUsbyl7cmV0dXJuIGJ0KEpDLGUudHlwZSkuZm9sZChmdW5jdGlvbigpe3JldHVybiBudC5jb25zb2xlLmVycm9yKCdVbmtub3duIGZhY3RvcnkgdHlwZSAiJytlLnR5cGUrJyIsIGRlZmF1bHRpbmcgdG8gY29udGFpbmVyOiAnLGUpLGV9LGZ1bmN0aW9uKHQpe3JldHVybiB0KG4sZSxvKX0pfSx0Tz17dmFsaWduQ2VudHJlOltdLGFsaWduQ2VudHJlOltdLGFsaWduTGVmdDpbXSxhbGlnblJpZ2h0OltdLHJpZ2h0OltdLGxlZnQ6W10sYm90dG9tOltdLHRvcDpbXX0sbk89ZnVuY3Rpb24odCxuLGUpe3ZhciBvPXdjKC0xMiwxMix0Tykscj17bWF4SGVpZ2h0RnVuY3Rpb246aGMoKX07cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGUoKT97YW5jaG9yOiJub2RlIixyb290OlRpKGFyKHQoKSkpLG5vZGU6c3QuZnJvbSh0KCkpLGJ1YmJsZTpvLGxheW91dHM6e29uUnRsOmZ1bmN0aW9uKCl7cmV0dXJuW1BnXX0sb25MdHI6ZnVuY3Rpb24oKXtyZXR1cm5bSGddfX0sb3ZlcnJpZGVzOnJ9OnthbmNob3I6ImhvdHNwb3QiLGhvdHNwb3Q6bigpLGJ1YmJsZTpvLGxheW91dHM6e29uUnRsOmZ1bmN0aW9uKCl7cmV0dXJuW3dhXX0sb25MdHI6ZnVuY3Rpb24oKXtyZXR1cm5bU2FdfX0sb3ZlcnJpZGVzOnJ9fX0sZU89ZnVuY3Rpb24odCxuLGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlKCk/e2FuY2hvcjoibm9kZSIscm9vdDpUaShhcih0KCkpKSxub2RlOnN0LmZyb20odCgpKSxsYXlvdXRzOntvblJ0bDpmdW5jdGlvbigpe3JldHVyblt6Z119LG9uTHRyOmZ1bmN0aW9uKCl7cmV0dXJuW3pnXX19fTp7YW5jaG9yOiJob3RzcG90Iixob3RzcG90Om4oKSxsYXlvdXRzOntvblJ0bDpmdW5jdGlvbigpe3JldHVybltfYV19LG9uTHRyOmZ1bmN0aW9uKCl7cmV0dXJuW19hXX19fX19LG9PPWZ1bmN0aW9uKHQsbixlKXt2YXIgbyxyLGksdT1WaCh0KSxhPWZ1bmN0aW9uKCl7cmV0dXJuIGxlLmZyb21Eb20odC5nZXRCb2R5KCkpfSxjPWZ1bmN0aW9uKCl7cmV0dXJuIGxlLmZyb21Eb20odC5nZXRDb250ZW50QXJlYUNvbnRhaW5lcigpKX0scz1mdW5jdGlvbigpe3JldHVybiB1fHwhZSgpfTtyZXR1cm57aW5saW5lRGlhbG9nOm5PKGMsbixzKSxiYW5uZXI6ZU8oYyxuLHMpLGN1cnNvcjoocj10LGZ1bmN0aW9uKCl7cmV0dXJue2FuY2hvcjoic2VsZWN0aW9uIixyb290OmkoKSxnZXRTZWxlY3Rpb246ZnVuY3Rpb24oKXt2YXIgdD1yLnNlbGVjdGlvbi5nZXRSbmcoKTtyZXR1cm4gc3Quc29tZShSYy5yYW5nZShsZS5mcm9tRG9tKHQuc3RhcnRDb250YWluZXIpLHQuc3RhcnRPZmZzZXQsbGUuZnJvbURvbSh0LmVuZENvbnRhaW5lciksdC5lbmRPZmZzZXQpKX19fSksbm9kZToobz1pPWEsZnVuY3Rpb24odCl7cmV0dXJue2FuY2hvcjoibm9kZSIscm9vdDpvKCksbm9kZTp0fX0pfX0sck89ZnVuY3Rpb24odCl7cmV0dXJue2NvbG9yUGlja2VyOmZ1bmN0aW9uKHQsbil7VXYocikodCxuKX0saGFzQ3VzdG9tQ29sb3JzOmZ1bmN0aW9uKCl7cmV0dXJuIE12KG8pfSxnZXRDb2xvcnM6ZnVuY3Rpb24oKXtyZXR1cm4gQXYoZSl9LGdldENvbG9yQ29sczoobj1lPW89cj10LGZ1bmN0aW9uKCl7cmV0dXJuIFZ2KG4pfSl9O3ZhciBuLGUsbyxyfSxpTz1be3RpdGxlOiJIZWFkaW5ncyIsaXRlbXM6W3t0aXRsZToiSGVhZGluZyAxIixmb3JtYXQ6ImgxIn0se3RpdGxlOiJIZWFkaW5nIDIiLGZvcm1hdDoiaDIifSx7dGl0bGU6IkhlYWRpbmcgMyIsZm9ybWF0OiJoMyJ9LHt0aXRsZToiSGVhZGluZyA0Iixmb3JtYXQ6Img0In0se3RpdGxlOiJIZWFkaW5nIDUiLGZvcm1hdDoiaDUifSx7dGl0bGU6IkhlYWRpbmcgNiIsZm9ybWF0OiJoNiJ9XX0se3RpdGxlOiJJbmxpbmUiLGl0ZW1zOlt7dGl0bGU6IkJvbGQiLGZvcm1hdDoiYm9sZCJ9LHt0aXRsZToiSXRhbGljIixmb3JtYXQ6Iml0YWxpYyJ9LHt0aXRsZToiVW5kZXJsaW5lIixmb3JtYXQ6InVuZGVybGluZSJ9LHt0aXRsZToiU3RyaWtldGhyb3VnaCIsZm9ybWF0OiJzdHJpa2V0aHJvdWdoIn0se3RpdGxlOiJTdXBlcnNjcmlwdCIsZm9ybWF0OiJzdXBlcnNjcmlwdCJ9LHt0aXRsZToiU3Vic2NyaXB0Iixmb3JtYXQ6InN1YnNjcmlwdCJ9LHt0aXRsZToiQ29kZSIsZm9ybWF0OiJjb2RlIn1dfSx7dGl0bGU6IkJsb2NrcyIsaXRlbXM6W3t0aXRsZToiUGFyYWdyYXBoIixmb3JtYXQ6InAifSx7dGl0bGU6IkJsb2NrcXVvdGUiLGZvcm1hdDoiYmxvY2txdW90ZSJ9LHt0aXRsZToiRGl2Iixmb3JtYXQ6ImRpdiJ9LHt0aXRsZToiUHJlIixmb3JtYXQ6InByZSJ9XX0se3RpdGxlOiJBbGlnbiIsaXRlbXM6W3t0aXRsZToiTGVmdCIsZm9ybWF0OiJhbGlnbmxlZnQifSx7dGl0bGU6IkNlbnRlciIsZm9ybWF0OiJhbGlnbmNlbnRlciJ9LHt0aXRsZToiUmlnaHQiLGZvcm1hdDoiYWxpZ25yaWdodCJ9LHt0aXRsZToiSnVzdGlmeSIsZm9ybWF0OiJhbGlnbmp1c3RpZnkifV19XSx1Tz1mdW5jdGlvbih0KXtyZXR1cm4gTih0LGZ1bmN0aW9uKHQsbil7aWYoeXQobiwiaXRlbXMiKSl7dmFyIGU9dU8obi5pdGVtcyk7cmV0dXJue2N1c3RvbUZvcm1hdHM6dC5jdXN0b21Gb3JtYXRzLmNvbmNhdChlLmN1c3RvbUZvcm1hdHMpLGZvcm1hdHM6dC5mb3JtYXRzLmNvbmNhdChbe3RpdGxlOm4udGl0bGUsaXRlbXM6ZS5mb3JtYXRzfV0pfX1pZih5dChuLCJpbmxpbmUiKXx8eXQobiwiYmxvY2siKXx8eXQobiwic2VsZWN0b3IiKSl7dmFyIG89ImN1c3RvbS0iK24udGl0bGUudG9Mb3dlckNhc2UoKTtyZXR1cm57Y3VzdG9tRm9ybWF0czp0LmN1c3RvbUZvcm1hdHMuY29uY2F0KFt7bmFtZTpvLGZvcm1hdDpufV0pLGZvcm1hdHM6dC5mb3JtYXRzLmNvbmNhdChbe3RpdGxlOm4udGl0bGUsZm9ybWF0Om8saWNvbjpuLmljb259XSl9fXJldHVybiBldChldCh7fSx0KSx7Zm9ybWF0czp0LmZvcm1hdHMuY29uY2F0KG4pfSl9LHtjdXN0b21Gb3JtYXRzOltdLGZvcm1hdHM6W119KX0sYU89ZnVuY3Rpb24oaSl7cmV0dXJuIHQ9aSxzdC5mcm9tKHQuZ2V0UGFyYW0oInN0eWxlX2Zvcm1hdHMiKSkuZmlsdGVyKEMpLm1hcChmdW5jdGlvbih0KXt2YXIgbixlLG8scj0obj1pLGU9dU8odCksbz1mdW5jdGlvbih0KXtpdCh0LGZ1bmN0aW9uKHQpe24uZm9ybWF0dGVyLmhhcyh0Lm5hbWUpfHxuLmZvcm1hdHRlci5yZWdpc3Rlcih0Lm5hbWUsdC5mb3JtYXQpfSl9LG4uZm9ybWF0dGVyP28oZS5jdXN0b21Gb3JtYXRzKTpuLm9uKCJpbml0IixmdW5jdGlvbigpe28oZS5jdXN0b21Gb3JtYXRzKX0pLGUuZm9ybWF0cyk7cmV0dXJuIGkuZ2V0UGFyYW0oInN0eWxlX2Zvcm1hdHNfbWVyZ2UiLCExLCJib29sZWFuIik/aU8uY29uY2F0KHIpOnJ9KS5nZXRPcihpTyk7dmFyIHR9LGNPPWZ1bmN0aW9uKHQsbixlKXt2YXIgbz17dHlwZToiZm9ybWF0dGVyIixpc1NlbGVjdGVkOm4odC5mb3JtYXQpLGdldFN0eWxlUHJldmlldzplKHQuZm9ybWF0KX07cmV0dXJuIEN0KHQsbyl9LHNPPWZ1bmN0aW9uKGEsdCxjLHMpe3ZhciBsPWZ1bmN0aW9uKHQpe3JldHVybiBWKHQsZnVuY3Rpb24odCl7dmFyIG4sZSxvLHIsaT1sdCh0KTtpZih4dCh0LCJpdGVtcyIpKXt2YXIgdT1sKHQuaXRlbXMpO3JldHVybiBDdChDdCh0LHt0eXBlOiJzdWJtZW51In0pLHtnZXRTdHlsZUl0ZW1zOmZ1bmN0aW9uKCl7cmV0dXJuIHV9fSl9cmV0dXJuIHh0KHQsImZvcm1hdCIpP2NPKHQsYyxzKToxPT09aS5sZW5ndGgmJkYoaSwidGl0bGUiKT9DdCh0LHt0eXBlOiJzZXBhcmF0b3IifSk6KGU9TnIoKG49dCkudGl0bGUpLG89e3R5cGU6ImZvcm1hdHRlciIsZm9ybWF0OmUsaXNTZWxlY3RlZDpjKGUpLGdldFN0eWxlUHJldmlldzpzKGUpfSxyPUN0KG4sbyksYS5mb3JtYXR0ZXIucmVnaXN0ZXIoZSxyKSxyKX0pfTtyZXR1cm4gbCh0KX0sbE89dUMudHJpbSxmTz1mdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24odCl7aWYodCYmMT09PXQubm9kZVR5cGUpe2lmKHQuY29udGVudEVkaXRhYmxlPT09bilyZXR1cm4hMDtpZih0LmdldEF0dHJpYnV0ZSgiZGF0YS1tY2UtY29udGVudGVkaXRhYmxlIik9PT1uKXJldHVybiEwfXJldHVybiExfX0sZE89Zk8oInRydWUiKSxtTz1mTygiZmFsc2UiKSxnTz1mdW5jdGlvbih0LG4sZSxvLHIpe3JldHVybnt0eXBlOnQsdGl0bGU6bix1cmw6ZSxsZXZlbDpvLGF0dGFjaDpyfX0scE89ZnVuY3Rpb24odCl7cmV0dXJuIHQuaW5uZXJUZXh0fHx0LnRleHRDb250ZW50fSxoTz1mdW5jdGlvbih0KXtyZXR1cm4obj10KSYmIkEiPT09bi5ub2RlTmFtZSYmKG4uaWR8fG4ubmFtZSkhPT11bmRlZmluZWQmJmJPKHQpO3ZhciBufSx2Tz1mdW5jdGlvbih0KXtyZXR1cm4gdCYmL14oSFsxLTZdKSQvLnRlc3QodC5ub2RlTmFtZSl9LGJPPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbih0KXtmb3IoO3Q9dC5wYXJlbnROb2RlOyl7dmFyIG49dC5jb250ZW50RWRpdGFibGU7aWYobiYmImluaGVyaXQiIT09bilyZXR1cm4gZE8odCl9cmV0dXJuITF9KHQpJiYhbU8odCl9LHlPPWZ1bmN0aW9uKHQpe3JldHVybiB2Tyh0KSYmYk8odCl9LHhPPWZ1bmN0aW9uKHQpe3ZhciBuLGUsbz0obj10KS5pZD9uLmlkOk5yKCJoIik7cmV0dXJuIGdPKCJoZWFkZXIiLHBPKHQpLCIjIitvLHZPKGU9dCk/cGFyc2VJbnQoZS5ub2RlTmFtZS5zdWJzdHIoMSksMTApOjAsZnVuY3Rpb24oKXt0LmlkPW99KX0sd089ZnVuY3Rpb24odCl7dmFyIG49dC5pZHx8dC5uYW1lLGU9cE8odCk7cmV0dXJuIGdPKCJhbmNob3IiLGV8fCIjIituLCIjIituLDAsWil9LFNPPWZ1bmN0aW9uKHQpe3ZhciBuLGU7cmV0dXJuIG49ImgxLGgyLGgzLGg0LGg1LGg2LGE6bm90KFtocmVmXSkiLGU9dCxWKFljKGxlLmZyb21Eb20oZSksbiksZnVuY3Rpb24odCl7cmV0dXJuIHQuZG9tKCl9KX0sa089ZnVuY3Rpb24odCl7cmV0dXJuIDA8bE8odC50aXRsZSkubGVuZ3RofSxDTz1mdW5jdGlvbih0KXt2YXIgbj1TTyh0KTtyZXR1cm4gUChWKFAobix5TykseE8pLmNvbmNhdChWKFAobixoTyksd08pKSxrTyl9LE9PPSJ0aW55bWNlLXVybC1oaXN0b3J5IixfTz1mdW5jdGlvbih0KXtyZXR1cm4gUyh0KSYmL15odHRwcz8vLnRlc3QodCl9LFRPPWZ1bmN0aW9uKHQpe3JldHVybiBrKHQpJiZodCh0LGZ1bmN0aW9uKHQpe3JldHVybiEoQyhuPXQpJiZuLmxlbmd0aDw9NSYmVyhuLF9PKSk7dmFyIG59KS5pc05vbmUoKX0sRU89ZnVuY3Rpb24oKXt2YXIgdCxuPV92LmdldEl0ZW0oT08pO2lmKG51bGw9PT1uKXJldHVybnt9O3RyeXt0PUpTT04ucGFyc2Uobil9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIFN5bnRheEVycm9yKXJldHVybiBudC5jb25zb2xlLmxvZygiTG9jYWwgc3RvcmFnZSAiK09PKyIgd2FzIG5vdCB2YWxpZCBKU09OIixlKSx7fTt0aHJvdyBlfXJldHVybiBUTyh0KT90OihudC5jb25zb2xlLmxvZygiTG9jYWwgc3RvcmFnZSAiK09PKyIgd2FzIG5vdCB2YWxpZCBmb3JtYXQiLHQpLHt9KX0sQk89ZnVuY3Rpb24odCl7dmFyIG49RU8oKTtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4sdCk/blt0XTpbXX0sRE89ZnVuY3Rpb24obix0KXtpZihfTyhuKSl7dmFyIGU9RU8oKSxvPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpP2VbdF06W10scj1QKG8sZnVuY3Rpb24odCl7cmV0dXJuIHQhPT1ufSk7ZVt0XT1bbl0uY29uY2F0KHIpLnNsaWNlKDAsNSksZnVuY3Rpb24odCl7aWYoIVRPKHQpKXRocm93IG5ldyBFcnJvcigiQmFkIGZvcm1hdCBmb3IgaGlzdG9yeTpcbiIrSlNPTi5zdHJpbmdpZnkodCkpO192LnNldEl0ZW0oT08sSlNPTi5zdHJpbmdpZnkodCkpfShlKX19LE1PPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksQU89ZnVuY3Rpb24odCl7cmV0dXJuISF0fSxGTz1mdW5jdGlvbih0KXtyZXR1cm4gZHQodUMubWFrZU1hcCh0LC9bLCBdLyksQU8pfSxJTz1mdW5jdGlvbih0LG4sZSl7dmFyIG8scixpPShvPXQscj1uLChNTy5jYWxsKG8scik/c3Quc29tZShvW3JdKTpzdC5ub25lKCkpLmdldE9yKGUpKTtyZXR1cm4gUyhpKT9zdC5zb21lKGkpOnN0Lm5vbmUoKX0sUk89ZnVuY3Rpb24odCl7cmV0dXJuIHN0LnNvbWUodC5maWxlX3BpY2tlcl9jYWxsYmFjaykuZmlsdGVyKFQpfSxWTz1mdW5jdGlvbih0LG4pe3ZhciBlLG8scixpLHU9KGU9dCxvPXN0LnNvbWUoZS5maWxlX3BpY2tlcl90eXBlcykuZmlsdGVyKEFPKSxyPXN0LnNvbWUoZS5maWxlX2Jyb3dzZXJfY2FsbGJhY2tfdHlwZXMpLmZpbHRlcihBTyksaT1vLm9yKHIpLm1hcChGTyksUk8oZSkuZm9sZChmdW5jdGlvbigpe3JldHVybiExfSxmdW5jdGlvbih0KXtyZXR1cm4gaS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuITB9LGZ1bmN0aW9uKHQpe3JldHVybiAwPGx0KHQpLmxlbmd0aCYmdH0pfSkpO3JldHVybiBPKHUpP3U/Uk8odCk6c3Qubm9uZSgpOnVbbl0/Uk8odCk6c3Qubm9uZSgpfSxITz1mdW5jdGlvbihuKXtyZXR1cm57Z2V0SGlzdG9yeTpCTyxhZGRUb0hpc3Rvcnk6RE8sZ2V0TGlua0luZm9ybWF0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuITE9PT0odD1uKS5zZXR0aW5ncy50eXBlYWhlYWRfdXJscz9zdC5ub25lKCk6c3Quc29tZSh7dGFyZ2V0czpDTyh0LmdldEJvZHkoKSksYW5jaG9yVG9wOklPKHQuc2V0dGluZ3MsImFuY2hvcl90b3AiLCIjdG9wIikuZ2V0T3JVbmRlZmluZWQoKSxhbmNob3JCb3R0b206SU8odC5zZXR0aW5ncywiYW5jaG9yX2JvdHRvbSIsIiNib3R0b20iKS5nZXRPclVuZGVmaW5lZCgpfSk7dmFyIHR9LGdldFZhbGlkYXRpb25IYW5kbGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHQ9bixzdC5mcm9tKHQuc2V0dGluZ3MuZmlsZV9waWNrZXJfdmFsaWRhdG9yX2hhbmRsZXIpLmZpbHRlcihUKS5vclRodW5rKGZ1bmN0aW9uKCl7cmV0dXJuIHN0LmZyb20odC5zZXR0aW5ncy5maWxlcGlja2VyX3ZhbGlkYXRvcl9oYW5kbGVyKS5maWx0ZXIoVCl9KTt2YXIgdH0sZ2V0VXJsUGlja2VyOmZ1bmN0aW9uKHQpe3JldHVybiBpPXQsVk8oKHI9bikuc2V0dGluZ3MsaSkubWFwKGZ1bmN0aW9uKG8pe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gaHkoZnVuY3Rpb24oZSl7dmFyIHQ9ZXQoe2ZpbGV0eXBlOmksZmllbGRuYW1lOm4uZmllbGRuYW1lfSxzdC5mcm9tKG4ubWV0YSkuZ2V0T3Ioe30pKTtvLmNhbGwocixmdW5jdGlvbih0LG4pe2lmKCFTKHQpKXRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdmFsdWUgdG8gYmUgc3RyaW5nIik7aWYobiE9PXVuZGVmaW5lZCYmIWsobikpdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCBtZXRhIHRvIGJlIGEgb2JqZWN0Iik7ZSh7dmFsdWU6dCxtZXRhOm59KX0sbi52YWx1ZSx0KX0pfX0pO3ZhciByLGl9fX0sUE89ZnVuY3Rpb24odCxuLGUpe3ZhciBvLHIsaT1jZSghMSksdT17aXNQb3NpdGlvbmVkQXRUb3A6ZnVuY3Rpb24oKXtyZXR1cm4idG9wIj09PW8uZ2V0KCl9LGdldERvY2tpbmdNb2RlOihvPWNlKEloKG4pPyJib3R0b20iOiJ0b3AiKSkuZ2V0LHNldERvY2tpbmdNb2RlOm8uc2V0fSxhPXtzaGFyZWQ6e3Byb3ZpZGVyczp7aWNvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gbi51aS5yZWdpc3RyeS5nZXRBbGwoKS5pY29uc30sbWVudUl0ZW1zOmZ1bmN0aW9uKCl7cmV0dXJuIG4udWkucmVnaXN0cnkuZ2V0QWxsKCkubWVudUl0ZW1zfSx0cmFuc2xhdGU6VnAudHJhbnNsYXRlLGlzUmVhZE9ubHk6ZnVuY3Rpb24oKXtyZXR1cm4gbi5tb2RlLmlzUmVhZE9ubHkoKX19LGludGVycHJldGVyOmZ1bmN0aW9uKHQpe3JldHVybiBaQygkQyx0LGEpfSxhbmNob3JzOm9PKG4sZSx1LmlzUG9zaXRpb25lZEF0VG9wKSxoZWFkZXI6dSxnZXRTaW5rOmZ1bmN0aW9uKCl7cmV0dXJuIG90LnZhbHVlKHQpfX0sdXJsaW5wdXQ6SE8obiksc3R5bGVzZWxlY3Q6ZnVuY3Rpb24obyl7dmFyIHI9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG8uZm9ybWF0dGVyLm1hdGNoKHQpfX0saT1mdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD1vLmZvcm1hdHRlci5nZXQobik7cmV0dXJuIHQhPT11bmRlZmluZWQ/c3Quc29tZSh7dGFnOjA8dC5sZW5ndGgmJih0WzBdLmlubGluZXx8dFswXS5ibG9jayl8fCJkaXYiLHN0eWxlczpvLmRvbS5wYXJzZVN0eWxlKG8uZm9ybWF0dGVyLmdldENzc1RleHQobikpfSk6c3Qubm9uZSgpfX0sdT1mdW5jdGlvbih0KXt2YXIgbj10Lml0ZW1zO3JldHVybiBuIT09dW5kZWZpbmVkJiYwPG4ubGVuZ3RoP1Uobix1KTpbdC5mb3JtYXRdfSxhPWNlKFtdKSxjPWNlKFtdKSxlPWNlKFtdKSxzPWNlKFtdKSxsPWNlKCExKTtvLm9uKCJQcmVJbml0IixmdW5jdGlvbih0KXt2YXIgbj1hTyhvKSxlPXNPKG8sbixyLGkpO2Euc2V0KGUpLGMuc2V0KFUoZSx1KSl9KSxvLm9uKCJhZGRTdHlsZU1vZGlmaWNhdGlvbnMiLGZ1bmN0aW9uKHQpe3ZhciBuPXNPKG8sdC5pdGVtcyxyLGkpO2Uuc2V0KG4pLGwuc2V0KHQucmVwbGFjZSkscy5zZXQoVShuLHUpKX0pO3JldHVybntnZXREYXRhOmZ1bmN0aW9uKCl7dmFyIHQ9bC5nZXQoKT9bXTphLmdldCgpLG49ZS5nZXQoKTtyZXR1cm4gdC5jb25jYXQobil9LGdldEZsYXR0ZW5lZEtleXM6ZnVuY3Rpb24oKXt2YXIgdD1sLmdldCgpP1tdOmMuZ2V0KCksbj1zLmdldCgpO3JldHVybiB0LmNvbmNhdChuKX19fShuKSxjb2xvcmlucHV0OnJPKG4pLGRpYWxvZzp7aXNEcmFnZ2FibGVNb2RhbDoocj1uLGZ1bmN0aW9uKCl7cmV0dXJuIHIuZ2V0UGFyYW0oImRyYWdnYWJsZV9tb2RhbCIsITEsImJvb2xlYW4iKX0pfSxpc0NvbnRleHRNZW51T3BlbjpmdW5jdGlvbigpe3JldHVybiBpLmdldCgpfSxzZXRDb250ZXh0TWVudVN0YXRlOmZ1bmN0aW9uKHQpe3JldHVybiBpLnNldCh0KX19O3JldHVybiBhfSx6Tz1hdChmdW5jdGlvbih0LG4pe3ZhciBlLG8scjtlPXQsbz1NYXRoLmZsb29yKG4pLHI9YXUubWF4KGUsbyxbIm1hcmdpbi1sZWZ0IiwiYm9yZGVyLWxlZnQtd2lkdGgiLCJwYWRkaW5nLWxlZnQiLCJwYWRkaW5nLXJpZ2h0IiwiYm9yZGVyLXJpZ2h0LXdpZHRoIiwibWFyZ2luLXJpZ2h0Il0pLERpKGUsIm1heC13aWR0aCIscisicHgiKX0pLE5PPSJjb250ZXh0dG9vbGJhci1oaWRlIixMTz1hdChbem4oIml0ZW1zIiksS3UoWyJpdGVtU2VsZWN0b3IiXSkseWwoInRncm91cEJlaGF2aW91cnMiLFtSbV0pXSksak89YXQoWyRsKHtuYW1lOiJpdGVtcyIsdW5pdDoiaXRlbSJ9KV0pLFVPPV9mKHtuYW1lOiJUb29sYmFyR3JvdXAiLGNvbmZpZ0ZpZWxkczpMTygpLHBhcnRGaWVsZHM6ak8oKSxmYWN0b3J5OmZ1bmN0aW9uKHQsbixlLG8pe3JldHVybnt1aWQ6dC51aWQsZG9tOnQuZG9tLGNvbXBvbmVudHM6bixiZWhhdmlvdXJzOndsKHQudGdyb3VwQmVoYXZpb3VycyxbUm0uY29uZmlnKHttb2RlOiJmbG93IixzZWxlY3Rvcjp0Lm1hcmtlcnMuaXRlbVNlbGVjdG9yfSldKSxkb21Nb2RpZmljYXRpb246e2F0dHJpYnV0ZXM6e3JvbGU6InRvb2xiYXIifX19fX0pLFdPPWF0KFt6bigiZG9tIiksWm4oInNoZWxsIiwhMCkseWwoInRvb2xiYXJCZWhhdmlvdXJzIixbTm1dKV0pLEdPPWF0KFtKbCh7bmFtZToiZ3JvdXBzIixvdmVycmlkZXM6ZnVuY3Rpb24oKXtyZXR1cm57YmVoYXZpb3Vyczp6YShbTm0uY29uZmlnKHt9KV0pfX19KV0pLFhPPV9mKHtuYW1lOiJUb29sYmFyIixjb25maWdGaWVsZHM6V08oKSxwYXJ0RmllbGRzOkdPKCksZmFjdG9yeTpmdW5jdGlvbihuLHQsZSxvKXt2YXIgcj1mdW5jdGlvbih0KXtyZXR1cm4gbi5zaGVsbD9zdC5zb21lKHQpOnNmKHQsbiwiZ3JvdXBzIil9LGk9bi5zaGVsbD97YmVoYXZpb3VyczpbTm0uY29uZmlnKHt9KV0sY29tcG9uZW50czpbXX06e2JlaGF2aW91cnM6W10sY29tcG9uZW50czp0fTtyZXR1cm57dWlkOm4udWlkLGRvbTpuLmRvbSxjb21wb25lbnRzOmkuY29tcG9uZW50cyxiZWhhdmlvdXJzOndsKG4udG9vbGJhckJlaGF2aW91cnMsaS5iZWhhdmlvdXJzKSxhcGlzOntzZXRHcm91cHM6ZnVuY3Rpb24odCxuKXtyKHQpLmZvbGQoZnVuY3Rpb24oKXt0aHJvdyBudC5jb25zb2xlLmVycm9yKCJUb29sYmFyIHdhcyBkZWZpbmVkIHRvIG5vdCBiZSBhIHNoZWxsLCBidXQgbm8gZ3JvdXBzIGNvbnRhaW5lciB3YXMgc3BlY2lmaWVkIGluIGNvbXBvbmVudHMiKSxuZXcgRXJyb3IoIlRvb2xiYXIgd2FzIGRlZmluZWQgdG8gbm90IGJlIGEgc2hlbGwsIGJ1dCBubyBncm91cHMgY29udGFpbmVyIHdhcyBzcGVjaWZpZWQgaW4gY29tcG9uZW50cyIpfSxmdW5jdGlvbih0KXtObS5zZXQodCxuKX0pfX0sZG9tTW9kaWZpY2F0aW9uOnthdHRyaWJ1dGVzOntyb2xlOiJncm91cCJ9fX19LGFwaXM6e3NldEdyb3VwczpmdW5jdGlvbih0LG4sZSl7dC5zZXRHcm91cHMobixlKX19fSksWU89ZnVuY3Rpb24odCxuLGUpe3JldHVybnt3aXRoaW46YXQodCksZXh0cmE6YXQobiksd2l0aGluV2lkdGg6YXQoZSl9fSxxTz1mdW5jdGlvbih0LG4sbyl7dmFyIGUscj0oZT1mdW5jdGlvbih0LG4pe3ZhciBlPW8odCk7cmV0dXJuIHN0LnNvbWUoe2VsZW1lbnQ6YXQodCksc3RhcnQ6YXQobiksZmluaXNoOmF0KG4rZSksd2lkdGg6YXQoZSl9KX0sTih0LGZ1bmN0aW9uKG4sdCl7cmV0dXJuIGUodCxuLmxlbikuZm9sZChhdChuKSxmdW5jdGlvbih0KXtyZXR1cm57bGVuOnQuZmluaXNoKCksbGlzdDpuLmxpc3QuY29uY2F0KFt0XSl9fSl9LHtsZW46MCxsaXN0OltdfSkubGlzdCksaT1QKHIsZnVuY3Rpb24odCl7cmV0dXJuIHQuZmluaXNoKCk8PW59KSx1PXooaSxmdW5jdGlvbih0LG4pe3JldHVybiB0K24ud2lkdGgoKX0sMCksYT1yLnNsaWNlKGkubGVuZ3RoKTtyZXR1cm57d2l0aGluOmF0KGkpLGV4dHJhOmF0KGEpLHdpdGhpbldpZHRoOmF0KHUpfX0sS089ZnVuY3Rpb24odCl7cmV0dXJuIFYodCxmdW5jdGlvbih0KXtyZXR1cm4gdC5lbGVtZW50KCl9KX0sSk89ZnVuY3Rpb24odCxuLGUsbyl7dmFyIHIsaSx1LGEsYyxzLGwsZixkLG09KDA9PT0ocj1xTyhuLHQsZSkpLmV4dHJhKCkubGVuZ3RoP3N0LnNvbWUocik6c3Qubm9uZSgpKS5nZXRPclRodW5rKGZ1bmN0aW9uKCl7cmV0dXJuIHFPKG4sdC1lKG8pLGUpfSksZz1tLndpdGhpbigpLHA9bS5leHRyYSgpLGg9bS53aXRoaW5XaWR0aCgpO3JldHVybiAxPT09cC5sZW5ndGgmJnBbMF0ud2lkdGgoKTw9ZShvKT8obD1wLGY9aCxkPUtPKGcuY29uY2F0KGwpKSxZTyhkLFtdLGYpKToxPD1wLmxlbmd0aD8odT1wLGE9byxjPWgscz1LTyhnKS5jb25jYXQoW2FdKSxZTyhzLEtPKHUpLGMpKTooaT1oLFlPKEtPKGcpLFtdLGkpKX0sJE89ZnVuY3Rpb24odCxuKXt2YXIgZT1WKG4sZnVuY3Rpb24odCl7cmV0dXJuICRpKHQpfSk7WE8uc2V0R3JvdXBzKHQsZSl9LFFPPWZ1bmN0aW9uKHQsbixlKXt2YXIgbz1sZih0LG4sInByaW1hcnkiKSxyPUh5LmdldENvdXBsZWQodCwib3ZlcmZsb3dHcm91cCIpO0RpKG8uZWxlbWVudCgpLCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7dmFyIGk9bi5idWlsdEdyb3Vwcy5nZXQoKS5jb25jYXQoW3JdKSx1PVEoaSxmdW5jdGlvbihuKXtyZXR1cm4gJGEobi5lbGVtZW50KCkpLmJpbmQoZnVuY3Rpb24odCl7cmV0dXJuIG4uZ2V0U3lzdGVtKCkuZ2V0QnlEb20odCkudG9PcHRpb24oKX0pfSk7ZShbXSksJE8obyxpKTt2YXIgYT1jdShvLmVsZW1lbnQoKSksYz1KTyhhLG4uYnVpbHRHcm91cHMuZ2V0KCksZnVuY3Rpb24odCl7cmV0dXJuIGN1KHQuZWxlbWVudCgpKX0scik7MD09PWMuZXh0cmEoKS5sZW5ndGg/KE5tLnJlbW92ZShvLHIpLGUoW10pKTooJE8obyxjLndpdGhpbigpKSxlKGMuZXh0cmEoKSkpLEhpKG8uZWxlbWVudCgpLCJ2aXNpYmlsaXR5IiksUGkoby5lbGVtZW50KCkpLHUuZWFjaChYbS5mb2N1cyl9LFpPPWF0KFt5bCgic3BsaXRUb29sYmFyQmVoYXZpb3VycyIsW0h5XSksYWUoImJ1aWx0R3JvdXBzIixmdW5jdGlvbigpe3JldHVybiBjZShbXSl9KV0pLHRfPWF0KFtLdShbIm92ZXJmbG93VG9nZ2xlZENsYXNzIl0pLCRuKCJnZXRPdmVyZmxvd0JvdW5kcyIpLHpuKCJsYXp5U2luayIpLGFlKCJvdmVyZmxvd0dyb3VwcyIsZnVuY3Rpb24oKXtyZXR1cm4gY2UoW10pfSldLmNvbmNhdChaTygpKSksbl89YXQoW3FsKHtmYWN0b3J5OlhPLHNjaGVtYTpXTygpLG5hbWU6InByaW1hcnkifSksS2woe3NjaGVtYTpXTygpLG5hbWU6Im92ZXJmbG93In0pLEtsKHtuYW1lOiJvdmVyZmxvdy1idXR0b24ifSksS2woe25hbWU6Im92ZXJmbG93LWdyb3VwIn0pXSksZV89YXQoW0t1KFsidG9nZ2xlZENsYXNzIl0pLHpuKCJsYXp5U2luayIpLFVuKCJmZXRjaCIpLCRuKCJnZXRCb3VuZHMiKSxRbigiZmlyZURpc21pc3NhbEV2ZW50SW5zdGVhZCIsW1puKCJldmVudCIsRm8oKSldKSxUYygpXSksb189YXQoW0tsKHtuYW1lOiJidXR0b24iLG92ZXJyaWRlczpmdW5jdGlvbih0KXtyZXR1cm57ZG9tOnthdHRyaWJ1dGVzOnsiYXJpYS1oYXNwb3B1cCI6InRydWUifX0sYnV0dG9uQmVoYXZpb3Vyczp6YShbcmcuY29uZmlnKHt0b2dnbGVDbGFzczp0Lm1hcmtlcnMudG9nZ2xlZENsYXNzLGFyaWE6e21vZGU6ImV4cGFuZGVkIn0sdG9nZ2xlT25FeGVjdXRlOiExfSldKX19fSksS2woe2ZhY3Rvcnk6WE8sc2NoZW1hOldPKCksbmFtZToidG9vbGJhciIsb3ZlcnJpZGVzOmZ1bmN0aW9uKG4pe3JldHVybnt0b29sYmFyQmVoYXZpb3Vyczp6YShbUm0uY29uZmlnKHttb2RlOiJjeWNsaWMiLG9uRXNjYXBlOmZ1bmN0aW9uKHQpe3JldHVybiBzZih0LG4sImJ1dHRvbiIpLmVhY2goWG0uZm9jdXMpLHN0Lm5vbmUoKX19KV0pfX19KV0pLHJfPWZ1bmN0aW9uKHQsbil7dmFyIGU9SHkuZ2V0Q291cGxlZCh0LCJ0b29sYmFyU2FuZGJveCIpO1FzLmlzT3BlbihlKT9Rcy5jbG9zZShlKTpRcy5vcGVuKGUsbi50b29sYmFyKCkpfSxpXz1mdW5jdGlvbih0LG4sZSxvKXt2YXIgcj1lLmdldEJvdW5kcy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQoKX0pLGk9ZS5sYXp5U2luayh0KS5nZXRPckRpZSgpO0RzLnBvc2l0aW9uV2l0aGluQm91bmRzKGkse2FuY2hvcjoiaG90c3BvdCIsaG90c3BvdDp0LGxheW91dHM6byxvdmVycmlkZXM6e21heFdpZHRoRnVuY3Rpb246ek8oKX19LG4scil9LHVfPWZ1bmN0aW9uKHQsbixlLG8scil7WE8uc2V0R3JvdXBzKG4sciksaV8odCxuLGUsbykscmcub24odCl9LGFfPV9mKHtuYW1lOiJGbG9hdGluZ1Rvb2xiYXJCdXR0b24iLGZhY3Rvcnk6ZnVuY3Rpb24odSx0LGEsbil7cmV0dXJuIGV0KGV0KHt9LGpnLnNrZXRjaChldChldCh7fSxuLmJ1dHRvbigpKSx7YWN0aW9uOmZ1bmN0aW9uKHQpe3JfKHQsbil9LGJ1dHRvbkJlaGF2aW91cnM6a2woe2R1bXA6bi5idXR0b24oKS5idXR0b25CZWhhdmlvdXJzfSxbSHkuY29uZmlnKHtvdGhlcnM6e3Rvb2xiYXJTYW5kYm94OmZ1bmN0aW9uKHQpe3JldHVybiBvPXQsZT1hLHI9dSx7ZG9tOnt0YWc6ImRpdiIsYXR0cmlidXRlczp7aWQ6KGk9RnUoKSkuaWR9fSxiZWhhdmlvdXJzOnphKFtSbS5jb25maWcoe21vZGU6InNwZWNpYWwiLG9uRXNjYXBlOmZ1bmN0aW9uKHQpe3JldHVybiBRcy5jbG9zZSh0KSxzdC5zb21lKCEwKX19KSxRcy5jb25maWcoe29uT3BlbjpmdW5jdGlvbih0LG4pe3IuZmV0Y2goKS5nZXQoZnVuY3Rpb24odCl7dV8obyxuLHIsZS5sYXlvdXRzLHQpLGkubGluayhvLmVsZW1lbnQoKSksUm0uZm9jdXNJbihuKX0pfSxvbkNsb3NlOmZ1bmN0aW9uKCl7cmcub2ZmKG8pLFhtLmZvY3VzKG8pLGkudW5saW5rKG8uZWxlbWVudCgpKX0saXNQYXJ0T2Y6ZnVuY3Rpb24odCxuLGUpe3JldHVybiBSdShuLGUpfHxSdShvLGUpfSxnZXRBdHRhY2hQb2ludDpmdW5jdGlvbigpe3JldHVybiByLmxhenlTaW5rKG8pLmdldE9yRGllKCl9fSksWWEuY29uZmlnKHtjaGFubmVsczpldChldCh7fSxvbChldCh7aXNFeHRyYVBhcnQ6Y30sci5maXJlRGlzbWlzc2FsRXZlbnRJbnN0ZWFkLm1hcChmdW5jdGlvbih0KXtyZXR1cm57ZmlyZUV2ZW50SW5zdGVhZDp7ZXZlbnQ6dC5ldmVudH19fSkuZ2V0T3Ioe30pKSkpLGlsKHtkb1JlcG9zaXRpb246ZnVuY3Rpb24oKXtRcy5nZXRTdGF0ZShIeS5nZXRDb3VwbGVkKG8sInRvb2xiYXJTYW5kYm94IikpLmVhY2goZnVuY3Rpb24odCl7aV8obyx0LHIsZS5sYXlvdXRzKX0pfX0pKX0pXSl9O3ZhciBvLGUscixpfX19KV0pfSkpKSx7YXBpczp7c2V0R3JvdXBzOmZ1bmN0aW9uKG4sZSl7UXMuZ2V0U3RhdGUoSHkuZ2V0Q291cGxlZChuLCJ0b29sYmFyU2FuZGJveCIpKS5lYWNoKGZ1bmN0aW9uKHQpe3VfKG4sdCx1LGEubGF5b3V0cyxlKX0pfSxyZXBvc2l0aW9uOmZ1bmN0aW9uKG4pe1FzLmdldFN0YXRlKEh5LmdldENvdXBsZWQobiwidG9vbGJhclNhbmRib3giKSkuZWFjaChmdW5jdGlvbih0KXtpXyhuLHQsdSxhLmxheW91dHMpfSl9LHRvZ2dsZTpmdW5jdGlvbih0KXtyXyh0LG4pfSxnZXRUb29sYmFyOmZ1bmN0aW9uKHQpe3JldHVybiBRcy5nZXRTdGF0ZShIeS5nZXRDb3VwbGVkKHQsInRvb2xiYXJTYW5kYm94IikpfX19KX0sY29uZmlnRmllbGRzOmVfKCkscGFydEZpZWxkczpvXygpLGFwaXM6e3NldEdyb3VwczpmdW5jdGlvbih0LG4sZSl7dC5zZXRHcm91cHMobixlKX0scmVwb3NpdGlvbjpmdW5jdGlvbih0LG4pe3QucmVwb3NpdGlvbihuKX0sdG9nZ2xlOmZ1bmN0aW9uKHQsbil7dC50b2dnbGUobil9LGdldFRvb2xiYXI6ZnVuY3Rpb24odCxuKXtyZXR1cm4gdC5nZXRUb29sYmFyKG4pfX19KSxjXz1mdW5jdGlvbih0KXtyZXR1cm4gVih0LGZ1bmN0aW9uKHQpe3JldHVybiAkaSh0KX0pfSxzXz1mdW5jdGlvbih0LGUsbyl7UU8odCxvLGZ1bmN0aW9uKG4pe28ub3ZlcmZsb3dHcm91cHMuc2V0KG4pLGUuZ2V0T3B0KHQpLmVhY2goZnVuY3Rpb24odCl7YV8uc2V0R3JvdXBzKHQsY18obikpfSl9KX0sbF89X2Yoe25hbWU6IlNwbGl0RmxvYXRpbmdUb29sYmFyIixjb25maWdGaWVsZHM6dF8oKSxwYXJ0RmllbGRzOm5fKCksZmFjdG9yeTpmdW5jdGlvbihlLHQsbixvKXt2YXIgcj1VZyhhXy5za2V0Y2goe2ZldGNoOmZ1bmN0aW9uKCl7cmV0dXJuIGh5KGZ1bmN0aW9uKHQpe3QoY18oZS5vdmVyZmxvd0dyb3Vwcy5nZXQoKSkpfSl9LGxheW91dHM6e29uTHRyOmZ1bmN0aW9uKCl7cmV0dXJuW1NhLHdhXX0sb25SdGw6ZnVuY3Rpb24oKXtyZXR1cm5bd2EsU2FdfSxvbkJvdHRvbUx0cjpmdW5jdGlvbigpe3JldHVybltDYSxrYV19LG9uQm90dG9tUnRsOmZ1bmN0aW9uKCl7cmV0dXJuW2thLENhXX19LGdldEJvdW5kczpuLmdldE92ZXJmbG93Qm91bmRzLGxhenlTaW5rOmUubGF6eVNpbmssZmlyZURpc21pc3NhbEV2ZW50SW5zdGVhZDp7fSxtYXJrZXJzOnt0b2dnbGVkQ2xhc3M6ZS5tYXJrZXJzLm92ZXJmbG93VG9nZ2xlZENsYXNzfSxwYXJ0czp7YnV0dG9uOm9bIm92ZXJmbG93LWJ1dHRvbiJdKCksdG9vbGJhcjpvLm92ZXJmbG93KCl9fSkpO3JldHVybnt1aWQ6ZS51aWQsZG9tOmUuZG9tLGNvbXBvbmVudHM6dCxiZWhhdmlvdXJzOndsKGUuc3BsaXRUb29sYmFyQmVoYXZpb3VycyxbSHkuY29uZmlnKHtvdGhlcnM6e292ZXJmbG93R3JvdXA6ZnVuY3Rpb24oKXtyZXR1cm4gVU8uc2tldGNoKGV0KGV0KHt9LG9bIm92ZXJmbG93LWdyb3VwIl0oKSkse2l0ZW1zOltyLmFzU3BlYygpXX0pKX19fSldKSxhcGlzOntzZXRHcm91cHM6ZnVuY3Rpb24odCxuKXtlLmJ1aWx0R3JvdXBzLnNldChWKG4sdC5nZXRTeXN0ZW0oKS5idWlsZCkpLHNfKHQscixlKX0scmVmcmVzaDpmdW5jdGlvbih0KXtyZXR1cm4gc18odCxyLGUpfSx0b2dnbGU6ZnVuY3Rpb24odCl7ci5nZXRPcHQodCkuZWFjaChmdW5jdGlvbih0KXthXy50b2dnbGUodCl9KX0scmVwb3NpdGlvbjpmdW5jdGlvbih0KXtyLmdldE9wdCh0KS5lYWNoKGZ1bmN0aW9uKHQpe2FfLnJlcG9zaXRpb24odCl9KX0sZ2V0T3ZlcmZsb3c6ZnVuY3Rpb24odCl7cmV0dXJuIHIuZ2V0T3B0KHQpLmJpbmQoZnVuY3Rpb24odCl7cmV0dXJuIGFfLmdldFRvb2xiYXIodCl9KX19LGRvbU1vZGlmaWNhdGlvbjp7YXR0cmlidXRlczp7cm9sZToiZ3JvdXAifX19fSxhcGlzOntzZXRHcm91cHM6ZnVuY3Rpb24odCxuLGUpe3Quc2V0R3JvdXBzKG4sZSl9LHJlZnJlc2g6ZnVuY3Rpb24odCxuKXt0LnJlZnJlc2gobil9LHJlcG9zaXRpb246ZnVuY3Rpb24odCxuKXt0LnJlcG9zaXRpb24obil9LHRvZ2dsZTpmdW5jdGlvbih0LG4pe3QudG9nZ2xlKG4pfSxnZXRPdmVyZmxvdzpmdW5jdGlvbih0LG4pe3JldHVybiB0LmdldE92ZXJmbG93KG4pfX19KSxmXz1mdW5jdGlvbihuLHQpe3JldHVybiB0LmdldEFuaW1hdGlvblJvb3QuZm9sZChmdW5jdGlvbigpe3JldHVybiBuLmVsZW1lbnQoKX0sZnVuY3Rpb24odCl7cmV0dXJuIHQobil9KX0sZF89ZnVuY3Rpb24odCl7cmV0dXJuIHQuZGltZW5zaW9uLnByb3BlcnR5fSxtXz1mdW5jdGlvbih0LG4pe3JldHVybiB0LmRpbWVuc2lvbi5nZXREaW1lbnNpb24obil9LGdfPWZ1bmN0aW9uKHQsbil7dmFyIGU9Zl8odCxuKTtraShlLFtuLnNocmlua2luZ0NsYXNzLG4uZ3Jvd2luZ0NsYXNzXSl9LHBfPWZ1bmN0aW9uKHQsbil7eGkodC5lbGVtZW50KCksbi5vcGVuQ2xhc3MpLGJpKHQuZWxlbWVudCgpLG4uY2xvc2VkQ2xhc3MpLERpKHQuZWxlbWVudCgpLGRfKG4pLCIwcHgiKSxQaSh0LmVsZW1lbnQoKSl9LGhfPWZ1bmN0aW9uKHQsbil7eGkodC5lbGVtZW50KCksbi5jbG9zZWRDbGFzcyksYmkodC5lbGVtZW50KCksbi5vcGVuQ2xhc3MpLEhpKHQuZWxlbWVudCgpLGRfKG4pKX0sdl89ZnVuY3Rpb24odCxuLGUsbyl7ZS5zZXRDb2xsYXBzZWQoKSxEaSh0LmVsZW1lbnQoKSxkXyhuKSxtXyhuLHQuZWxlbWVudCgpKSksUGkodC5lbGVtZW50KCkpLGdfKHQsbikscF8odCxuKSxuLm9uU3RhcnRTaHJpbmsodCksbi5vblNocnVuayh0KX0sYl89ZnVuY3Rpb24odCxuLGUsbyl7dmFyIHI9by5nZXRPclRodW5rKGZ1bmN0aW9uKCl7cmV0dXJuIG1fKG4sdC5lbGVtZW50KCkpfSk7ZS5zZXRDb2xsYXBzZWQoKSxEaSh0LmVsZW1lbnQoKSxkXyhuKSxyKSxQaSh0LmVsZW1lbnQoKSk7dmFyIGk9Zl8odCxuKTt4aShpLG4uZ3Jvd2luZ0NsYXNzKSxiaShpLG4uc2hyaW5raW5nQ2xhc3MpLHBfKHQsbiksbi5vblN0YXJ0U2hyaW5rKHQpfSx5Xz1mdW5jdGlvbih0LG4sZSl7dmFyIG89bV8obix0LmVsZW1lbnQoKSk7KCIwcHgiPT09bz92XzpiXykodCxuLGUsc3Quc29tZShvKSl9LHhfPWZ1bmN0aW9uKHQsbixlKXt2YXIgbz1mXyh0LG4pLHI9d2kobyxuLnNocmlua2luZ0NsYXNzKSxpPW1fKG4sdC5lbGVtZW50KCkpO2hfKHQsbik7dmFyIHU9bV8obix0LmVsZW1lbnQoKSk7KHI/ZnVuY3Rpb24oKXtEaSh0LmVsZW1lbnQoKSxkXyhuKSxpKSxQaSh0LmVsZW1lbnQoKSl9OmZ1bmN0aW9uKCl7cF8odCxuKX0pKCkseGkobyxuLnNocmlua2luZ0NsYXNzKSxiaShvLG4uZ3Jvd2luZ0NsYXNzKSxoXyh0LG4pLERpKHQuZWxlbWVudCgpLGRfKG4pLHUpLGUuc2V0RXhwYW5kZWQoKSxuLm9uU3RhcnRHcm93KHQpfSx3Xz1mdW5jdGlvbih0LG4sZSl7dmFyIG89Zl8odCxuKTtyZXR1cm4hMD09PXdpKG8sbi5ncm93aW5nQ2xhc3MpfSxTXz1mdW5jdGlvbih0LG4sZSl7dmFyIG89Zl8odCxuKTtyZXR1cm4hMD09PXdpKG8sbi5zaHJpbmtpbmdDbGFzcyl9LGtfPS8qICovT2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwscmVmcmVzaDpmdW5jdGlvbih0LG4sZSl7aWYoZS5pc0V4cGFuZGVkKCkpe0hpKHQuZWxlbWVudCgpLGRfKG4pKTt2YXIgbz1tXyhuLHQuZWxlbWVudCgpKTtEaSh0LmVsZW1lbnQoKSxkXyhuKSxvKX19LGdyb3c6ZnVuY3Rpb24odCxuLGUpe2UuaXNFeHBhbmRlZCgpfHx4Xyh0LG4sZSl9LHNocmluazpmdW5jdGlvbih0LG4sZSl7ZS5pc0V4cGFuZGVkKCkmJnlfKHQsbixlKX0saW1tZWRpYXRlU2hyaW5rOmZ1bmN0aW9uKHQsbixlKXtlLmlzRXhwYW5kZWQoKSYmdl8odCxuLGUsc3Qubm9uZSgpKX0saGFzR3Jvd246ZnVuY3Rpb24odCxuLGUpe3JldHVybiBlLmlzRXhwYW5kZWQoKX0saGFzU2hydW5rOmZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gZS5pc0NvbGxhcHNlZCgpfSxpc0dyb3dpbmc6d18saXNTaHJpbmtpbmc6U18saXNUcmFuc2l0aW9uaW5nOmZ1bmN0aW9uKHQsbixlKXtyZXR1cm4hMD09PXdfKHQsbil8fCEwPT09U18odCxuKX0sdG9nZ2xlR3JvdzpmdW5jdGlvbih0LG4sZSl7KGUuaXNFeHBhbmRlZCgpP3lfOnhfKSh0LG4sZSl9LGRpc2FibGVUcmFuc2l0aW9uczpnX30pLENfPS8qICovT2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsZXhoaWJpdDpmdW5jdGlvbih0LG4sZSl7dmFyIG89bi5leHBhbmRlZDtyZXR1cm4gaWkobz97Y2xhc3Nlczpbbi5vcGVuQ2xhc3NdLHN0eWxlczp7fX06e2NsYXNzZXM6W24uY2xvc2VkQ2xhc3NdLHN0eWxlczpLdChuLmRpbWVuc2lvbi5wcm9wZXJ0eSwiMHB4Iil9KX0sZXZlbnRzOmZ1bmN0aW9uKGUsbyl7cmV0dXJuIFlvKFtlcihtbygpLGZ1bmN0aW9uKHQsbil7bi5ldmVudCgpLnJhdygpLnByb3BlcnR5TmFtZT09PWUuZGltZW5zaW9uLnByb3BlcnR5JiYoZ18odCxlKSxvLmlzRXhwYW5kZWQoKSYmSGkodC5lbGVtZW50KCksZS5kaW1lbnNpb24ucHJvcGVydHkpLChvLmlzRXhwYW5kZWQoKT9lLm9uR3Jvd246ZS5vblNocnVuaykodCkpfSldKX19KSxPXz1bem4oImNsb3NlZENsYXNzIiksem4oIm9wZW5DbGFzcyIpLHpuKCJzaHJpbmtpbmdDbGFzcyIpLHpuKCJncm93aW5nQ2xhc3MiKSxZbigiZ2V0QW5pbWF0aW9uUm9vdCIpLCR1KCJvblNocnVuayIpLCR1KCJvblN0YXJ0U2hyaW5rIiksJHUoIm9uR3Jvd24iKSwkdSgib25TdGFydEdyb3ciKSxabigiZXhwYW5kZWQiLCExKSxObigiZGltZW5zaW9uIixCbigicHJvcGVydHkiLHt3aWR0aDpbbmEoInByb3BlcnR5Iiwid2lkdGgiKSxuYSgiZ2V0RGltZW5zaW9uIixmdW5jdGlvbih0KXtyZXR1cm4gY3UodCkrInB4In0pXSxoZWlnaHQ6W25hKCJwcm9wZXJ0eSIsImhlaWdodCIpLG5hKCJnZXREaW1lbnNpb24iLGZ1bmN0aW9uKHQpe3JldHVybiB0dSh0KSsicHgifSldfSkpXSxfXz1MYSh7ZmllbGRzOk9fLG5hbWU6InNsaWRpbmciLGFjdGl2ZTpDXyxhcGlzOmtfLHN0YXRlOi8qICovT2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsaW5pdDpmdW5jdGlvbih0KXt2YXIgbj1jZSh0LmV4cGFuZGVkKTtyZXR1cm4gb2koe2lzRXhwYW5kZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hMD09PW4uZ2V0KCl9LGlzQ29sbGFwc2VkOmZ1bmN0aW9uKCl7cmV0dXJuITE9PT1uLmdldCgpfSxzZXRDb2xsYXBzZWQ6ZyhuLnNldCwhMSksc2V0RXhwYW5kZWQ6ZyhuLnNldCwhMCkscmVhZFN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuImV4cGFuZGVkOiAiK24uZ2V0KCl9fSl9fSl9KSxUXz1hdChbS3UoWyJjbG9zZWRDbGFzcyIsIm9wZW5DbGFzcyIsInNocmlua2luZ0NsYXNzIiwiZ3Jvd2luZ0NsYXNzIiwib3ZlcmZsb3dUb2dnbGVkQ2xhc3MiXSksJHUoIm9uT3BlbmVkIiksJHUoIm9uQ2xvc2VkIildLmNvbmNhdChaTygpKSksRV89YXQoW3FsKHtmYWN0b3J5OlhPLHNjaGVtYTpXTygpLG5hbWU6InByaW1hcnkifSkscWwoe2ZhY3Rvcnk6WE8sc2NoZW1hOldPKCksbmFtZToib3ZlcmZsb3ciLG92ZXJyaWRlczpmdW5jdGlvbihuKXtyZXR1cm57dG9vbGJhckJlaGF2aW91cnM6emEoW19fLmNvbmZpZyh7ZGltZW5zaW9uOntwcm9wZXJ0eToiaGVpZ2h0In0sY2xvc2VkQ2xhc3M6bi5tYXJrZXJzLmNsb3NlZENsYXNzLG9wZW5DbGFzczpuLm1hcmtlcnMub3BlbkNsYXNzLHNocmlua2luZ0NsYXNzOm4ubWFya2Vycy5zaHJpbmtpbmdDbGFzcyxncm93aW5nQ2xhc3M6bi5tYXJrZXJzLmdyb3dpbmdDbGFzcyxvblNocnVuazpmdW5jdGlvbih0KXtzZih0LG4sIm92ZXJmbG93LWJ1dHRvbiIpLmVhY2goZnVuY3Rpb24odCl7cmcub2ZmKHQpLFhtLmZvY3VzKHQpfSksbi5vbkNsb3NlZCh0KX0sb25Hcm93bjpmdW5jdGlvbih0KXtSbS5mb2N1c0luKHQpLG4ub25PcGVuZWQodCl9LG9uU3RhcnRHcm93OmZ1bmN0aW9uKHQpe3NmKHQsbiwib3ZlcmZsb3ctYnV0dG9uIikuZWFjaChyZy5vbil9fSksUm0uY29uZmlnKHttb2RlOiJhY3ljbGljIixvbkVzY2FwZTpmdW5jdGlvbih0KXtyZXR1cm4gc2YodCxuLCJvdmVyZmxvdy1idXR0b24iKS5lYWNoKFhtLmZvY3VzKSxzdC5zb21lKCEwKX19KV0pfX19KSxLbCh7bmFtZToib3ZlcmZsb3ctYnV0dG9uIixvdmVycmlkZXM6ZnVuY3Rpb24odCl7cmV0dXJue2J1dHRvbkJlaGF2aW91cnM6emEoW3JnLmNvbmZpZyh7dG9nZ2xlQ2xhc3M6dC5tYXJrZXJzLm92ZXJmbG93VG9nZ2xlZENsYXNzLGFyaWE6e21vZGU6InByZXNzZWQifSx0b2dnbGVPbkV4ZWN1dGU6ITF9KV0pfX19KSxLbCh7bmFtZToib3ZlcmZsb3ctZ3JvdXAifSldKSxCXz1mdW5jdGlvbih0LG4pe3NmKHQsbiwib3ZlcmZsb3ciKS5lYWNoKGZ1bmN0aW9uKGUpe1FPKHQsbixmdW5jdGlvbih0KXt2YXIgbj1WKHQsZnVuY3Rpb24odCl7cmV0dXJuICRpKHQpfSk7WE8uc2V0R3JvdXBzKGUsbil9KSxzZih0LG4sIm92ZXJmbG93LWJ1dHRvbiIpLmVhY2goZnVuY3Rpb24odCl7X18uaGFzR3Jvd24oZSkmJnJnLm9uKHQpfSksX18ucmVmcmVzaChlKX0pfSxEXz1fZih7bmFtZToiU3BsaXRTbGlkaW5nVG9vbGJhciIsY29uZmlnRmllbGRzOlRfKCkscGFydEZpZWxkczpFXygpLGZhY3Rvcnk6ZnVuY3Rpb24obyx0LG4sZSl7dmFyIHI9ImFsbG95LnRvb2xiYXIudG9nZ2xlIjtyZXR1cm57dWlkOm8udWlkLGRvbTpvLmRvbSxjb21wb25lbnRzOnQsYmVoYXZpb3Vyczp3bChvLnNwbGl0VG9vbGJhckJlaGF2aW91cnMsW0h5LmNvbmZpZyh7b3RoZXJzOntvdmVyZmxvd0dyb3VwOmZ1bmN0aW9uKG4pe3JldHVybiBVTy5za2V0Y2goZXQoZXQoe30sZVsib3ZlcmZsb3ctZ3JvdXAiXSgpKSx7aXRlbXM6W2pnLnNrZXRjaChldChldCh7fSxlWyJvdmVyZmxvdy1idXR0b24iXSgpKSx7YWN0aW9uOmZ1bmN0aW9uKHQpe0xvKG4scil9fSkpXX0pKX19fSksTG0oInRvb2xiYXItdG9nZ2xlLWV2ZW50cyIsW0pvKHIsZnVuY3Rpb24obil7c2YobixvLCJvdmVyZmxvdyIpLmVhY2goZnVuY3Rpb24odCl7Ql8obixvKSxfXy50b2dnbGVHcm93KHQpfSl9KV0pXSksYXBpczp7c2V0R3JvdXBzOmZ1bmN0aW9uKHQsbil7dmFyIGU7ZT1WKG4sdC5nZXRTeXN0ZW0oKS5idWlsZCksby5idWlsdEdyb3Vwcy5zZXQoZSksQl8odCxvKX0scmVmcmVzaDpmdW5jdGlvbih0KXtyZXR1cm4gQl8odCxvKX0sdG9nZ2xlOmZ1bmN0aW9uKHQpe3ZhciBuLGU7c2Yobj10LGU9bywib3ZlcmZsb3ciKS5lYWNoKGZ1bmN0aW9uKHQpe0JfKG4sZSksX18udG9nZ2xlR3Jvdyh0KX0pfX0sZG9tTW9kaWZpY2F0aW9uOnthdHRyaWJ1dGVzOntyb2xlOiJncm91cCJ9fX19LGFwaXM6e3NldEdyb3VwczpmdW5jdGlvbih0LG4sZSl7dC5zZXRHcm91cHMobixlKX0scmVmcmVzaDpmdW5jdGlvbih0LG4pe3QucmVmcmVzaChuKX0sdG9nZ2xlOmZ1bmN0aW9uKHQsbil7dC50b2dnbGUobil9fX0pLE1fPWF0KE5yKCJ0b29sYmFyLWhlaWdodC1jaGFuZ2UiKSksQV89ZnVuY3Rpb24odCl7dmFyIG49dC50aXRsZS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJue319LGZ1bmN0aW9uKHQpe3JldHVybnthdHRyaWJ1dGVzOnt0aXRsZTp0fX19KTtyZXR1cm57ZG9tOmV0KHt0YWc6ImRpdiIsY2xhc3NlczpbInRveC10b29sYmFyX19ncm91cCJdfSxuKSxjb21wb25lbnRzOltVTy5wYXJ0cygpLml0ZW1zKHt9KV0saXRlbXM6dC5pdGVtcyxtYXJrZXJzOntpdGVtU2VsZWN0b3I6Iio6bm90KC50b3gtc3BsaXQtYnV0dG9uKSA+IC50b3gtdGJ0bjpub3QoW2Rpc2FibGVkXSksIC50b3gtc3BsaXQtYnV0dG9uOm5vdChbZGlzYWJsZWRdKSwgLnRveC10b29sYmFyLW5hdi1qczpub3QoW2Rpc2FibGVkXSkifSx0Z3JvdXBCZWhhdmlvdXJzOnphKFtEeS5jb25maWcoe30pLFhtLmNvbmZpZyh7fSldKX19LEZfPWZ1bmN0aW9uKHQpe3JldHVybiBVTy5za2V0Y2goQV8odCkpfSxJXz1mdW5jdGlvbihlLHQpe3ZhciBuPW9yKGZ1bmN0aW9uKHQpe3ZhciBuPVYoZS5pbml0R3JvdXBzLEZfKTtYTy5zZXRHcm91cHModCxuKX0pO3JldHVybiB6YShbWWgoZS5wcm92aWRlcnMuaXNSZWFkT25seSksVWgoKSxSbS5jb25maWcoe21vZGU6dCxvbkVzY2FwZTplLm9uRXNjYXBlLHNlbGVjdG9yOiIudG94LXRvb2xiYXJfX2dyb3VwIn0pLExtKCJ0b29sYmFyLWV2ZW50cyIsW25dKV0pfSxSXz1mdW5jdGlvbih0KXt2YXIgbj10LmN5Y2xpY0tleWluZz8iY3ljbGljIjoiYWN5Y2xpYyI7cmV0dXJue3VpZDp0LnVpZCxkb206e3RhZzoiZGl2IixjbGFzc2VzOlsidG94LXRvb2xiYXItb3ZlcmxvcmQiXX0scGFydHM6eyJvdmVyZmxvdy1ncm91cCI6QV8oe3RpdGxlOnN0Lm5vbmUoKSxpdGVtczpbXX0pLCJvdmVyZmxvdy1idXR0b24iOlJrKHtuYW1lOiJtb3JlIixpY29uOnN0LnNvbWUoIm1vcmUtZHJhd2VyIiksZGlzYWJsZWQ6ITEsdG9vbHRpcDpzdC5zb21lKCJNb3JlLi4uIikscHJpbWFyeTohMSxib3JkZXJsZXNzOiExfSxzdC5ub25lKCksdC5wcm92aWRlcnMpfSxzcGxpdFRvb2xiYXJCZWhhdmlvdXJzOklfKHQsbil9fSxWXz1mdW5jdGlvbihpKXt2YXIgdD1SXyhpKSxuPWxfLnBhcnRzKCkucHJpbWFyeSh7ZG9tOnt0YWc6ImRpdiIsY2xhc3NlczpbInRveC10b29sYmFyX19wcmltYXJ5Il19fSk7cmV0dXJuIGxfLnNrZXRjaChldChldCh7fSx0KSx7bGF6eVNpbms6aS5nZXRTaW5rLGdldE92ZXJmbG93Qm91bmRzOmZ1bmN0aW9uKCl7dmFyIHQ9aS5tb3JlRHJhd2VyRGF0YS5sYXp5SGVhZGVyKCkuZWxlbWVudCgpLG49U3UodCksZT1jcih0KSxvPVN1KGUpLHI9TWF0aC5tYXgoZS5kb20oKS5zY3JvbGxIZWlnaHQsby5oZWlnaHQpO3JldHVybiB4dShuLngrNCxvLnksbi53aWR0aC04LHIpfSxwYXJ0czpldChldCh7fSx0LnBhcnRzKSx7b3ZlcmZsb3c6e2RvbTp7dGFnOiJkaXYiLGNsYXNzZXM6WyJ0b3gtdG9vbGJhcl9fb3ZlcmZsb3ciXSxhdHRyaWJ1dGVzOmkuYXR0cmlidXRlc319fSksY29tcG9uZW50czpbbl0sbWFya2Vyczp7b3ZlcmZsb3dUb2dnbGVkQ2xhc3M6InRveC10YnRuLS1lbmFibGVkIn19KSl9LEhfPWZ1bmN0aW9uKHQpe3ZhciBuPURfLnBhcnRzKCkucHJpbWFyeSh7ZG9tOnt0YWc6ImRpdiIsY2xhc3NlczpbInRveC10b29sYmFyX19wcmltYXJ5Il19fSksZT1EXy5wYXJ0cygpLm92ZXJmbG93KHtkb206e3RhZzoiZGl2IixjbGFzc2VzOlsidG94LXRvb2xiYXJfX292ZXJmbG93Il19fSksbz1SXyh0KTtyZXR1cm4gRF8uc2tldGNoKGV0KGV0KHt9LG8pLHtjb21wb25lbnRzOltuLGVdLG1hcmtlcnM6e29wZW5DbGFzczoidG94LXRvb2xiYXJfX292ZXJmbG93LS1vcGVuIixjbG9zZWRDbGFzczoidG94LXRvb2xiYXJfX292ZXJmbG93LS1jbG9zZWQiLGdyb3dpbmdDbGFzczoidG94LXRvb2xiYXJfX292ZXJmbG93LS1ncm93aW5nIixzaHJpbmtpbmdDbGFzczoidG94LXRvb2xiYXJfX292ZXJmbG93LS1zaHJpbmtpbmciLG92ZXJmbG93VG9nZ2xlZENsYXNzOiJ0b3gtdGJ0bi0tZW5hYmxlZCJ9LG9uT3BlbmVkOmZ1bmN0aW9uKHQpe3QuZ2V0U3lzdGVtKCkuYnJvYWRjYXN0T24oW01fKCldLHt0eXBlOiJvcGVuZWQifSl9LG9uQ2xvc2VkOmZ1bmN0aW9uKHQpe3QuZ2V0U3lzdGVtKCkuYnJvYWRjYXN0T24oW01fKCldLHt0eXBlOiJjbG9zZWQifSl9fSkpfSxQXz1mdW5jdGlvbih0KXt2YXIgbj10LmN5Y2xpY0tleWluZz8iY3ljbGljIjoiYWN5Y2xpYyI7cmV0dXJuIFhPLnNrZXRjaCh7dWlkOnQudWlkLGRvbTp7dGFnOiJkaXYiLGNsYXNzZXM6WyJ0b3gtdG9vbGJhciJdLmNvbmNhdCh0LnR5cGU9PT1LZy5zY3JvbGxpbmc/WyJ0b3gtdG9vbGJhci0tc2Nyb2xsaW5nIl06W10pfSxjb21wb25lbnRzOltYTy5wYXJ0cygpLmdyb3Vwcyh7fSldLHRvb2xiYXJCZWhhdmlvdXJzOklfKHQsbil9KX0sel89W3JlKCJkaXNhYmxlZCIsITEpLEpuKCJ0b29sdGlwIiksSm4oImljb24iKSxKbigidGV4dCIpLGllKCJvblNldHVwIixmdW5jdGlvbigpe3JldHVybiBafSldLE5fPWxuKFtMbigidHlwZSIpLFVuKCJvbkFjdGlvbiIpXS5jb25jYXQoel8pKSxMXz1mdW5jdGlvbih0KXtyZXR1cm4gQ24oInRvb2xiYXJidXR0b24iLE5fLHQpfSxqXz1bSm4oInRleHQiKSxKbigidG9vbHRpcCIpLEpuKCJpY29uIiksVW4oImZldGNoIiksaWUoIm9uU2V0dXAiLGZ1bmN0aW9uKCl7cmV0dXJuIFp9KV0sVV89bG4oYihbTG4oInR5cGUiKV0sal8pKSxXXz1mdW5jdGlvbih0KXtyZXR1cm4gQ24oIm1lbnVidXR0b24iLFVfLHQpfSxHXz1sbihbTG4oInR5cGUiKSxKbigidG9vbHRpcCIpLEpuKCJpY29uIiksSm4oInRleHQiKSwkbigic2VsZWN0IiksVW4oImZldGNoIiksaWUoIm9uU2V0dXAiLGZ1bmN0aW9uKCl7cmV0dXJuIFp9KSxvZSgicHJlc2V0cyIsIm5vcm1hbCIsWyJub3JtYWwiLCJjb2xvciIsImxpc3RwcmV2aWV3Il0pLFpuKCJjb2x1bW5zIiwxKSxVbigib25BY3Rpb24iKSxVbigib25JdGVtQWN0aW9uIildKSxYXz1bcmUoImFjdGl2ZSIsITEpXS5jb25jYXQoel8pLFlfPWxuKFhfLmNvbmNhdChbTG4oInR5cGUiKSxVbigib25BY3Rpb24iKV0pKSxxXz1mdW5jdGlvbih0KXtyZXR1cm4gQ24oIlRvZ2dsZUJ1dHRvbiIsWV8sdCl9LEtfPWxuKFtMbigidHlwZSIpLE5uKCJpdGVtcyIsKHZDPVt4bihbTG4oIm5hbWUiKSxYbigiaXRlbXMiLEZuKV0pLEZuXSx7ZXh0cmFjdDpmdW5jdGlvbih0LG4sZSl7Zm9yKHZhciBvPVtdLHI9MCxpPXZDO3I8aS5sZW5ndGg7cisrKXt2YXIgdT1pW3JdLmV4dHJhY3QodCxuLGUpO2lmKHUuc3R5cGU9PT1hLlZhbHVlKXJldHVybiB1O28ucHVzaCh1KX1yZXR1cm4gdG4obyl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIm9uZU9mKCIrVih2QyxmdW5jdGlvbih0KXtyZXR1cm4gdC50b1N0cmluZygpfSkuam9pbigiLCAiKSsiKSJ9fSkpXS5jb25jYXQoel8pKSxKXz1baWUoInByZWRpY2F0ZSIsZnVuY3Rpb24oKXtyZXR1cm4hMX0pLG9lKCJzY29wZSIsIm5vZGUiLFsibm9kZSIsImVkaXRvciJdKSxvZSgicG9zaXRpb24iLCJzZWxlY3Rpb24iLFsibm9kZSIsInNlbGVjdGlvbiIsImxpbmUiXSldLCRfPXpfLmNvbmNhdChbWm4oInR5cGUiLCJjb250ZXh0Zm9ybWJ1dHRvbiIpLFpuKCJwcmltYXJ5IiwhMSksVW4oIm9uQWN0aW9uIiksYWUoIm9yaWdpbmFsIixjdCldKSxRXz1YXy5jb25jYXQoW1puKCJ0eXBlIiwiY29udGV4dGZvcm1idXR0b24iKSxabigicHJpbWFyeSIsITEpLFVuKCJvbkFjdGlvbiIpLGFlKCJvcmlnaW5hbCIsY3QpXSksWl89el8uY29uY2F0KFtabigidHlwZSIsImNvbnRleHRmb3JtYnV0dG9uIildKSx0VD1YXy5jb25jYXQoW1puKCJ0eXBlIiwiY29udGV4dGZvcm10b2dnbGVidXR0b24iKV0pLG5UPUJuKCJ0eXBlIix7Y29udGV4dGZvcm1idXR0b246JF8sY29udGV4dGZvcm10b2dnbGVidXR0b246UV99KSxlVD1sbihbWm4oInR5cGUiLCJjb250ZXh0Zm9ybSIpLGllKCJpbml0VmFsdWUiLGZ1bmN0aW9uKCl7cmV0dXJuIiJ9KSxKbigibGFiZWwiKSxYbigiY29tbWFuZHMiLG5UKSxxbigibGF1bmNoIixCbigidHlwZSIse2NvbnRleHRmb3JtYnV0dG9uOlpfLGNvbnRleHRmb3JtdG9nZ2xlYnV0dG9uOnRUfSkpXS5jb25jYXQoSl8pKSxvVD1sbihbWm4oInR5cGUiLCJjb250ZXh0dG9vbGJhciIpLExuKCJpdGVtcyIpXS5jb25jYXQoSl8pKSxyVD0vKiAqL09iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLGdldFN0YXRlOmZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gZX19KSxpVD0vKiAqL09iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLGV2ZW50czpmdW5jdGlvbihpLHUpe3ZhciByPWZ1bmN0aW9uKG8scil7aS51cGRhdGVTdGF0ZS5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBuPXQobyxyKTt1LnNldChuKX0pLGkucmVuZGVyQ29tcG9uZW50cy5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBuPXQocix1LmdldCgpKSxlPVYobixvLmdldFN5c3RlbSgpLmJ1aWxkKTtJcyhvLGUpfSl9O3JldHVybiBZbyhbSm8oeW8oKSxmdW5jdGlvbih0LG4pe3ZhciBlPW4sbz1pLmNoYW5uZWw7RihlLmNoYW5uZWxzKCksbykmJnIodCxlLmRhdGEoKSl9KSxvcihmdW5jdGlvbihuLHQpe2kuaW5pdGlhbERhdGEuZWFjaChmdW5jdGlvbih0KXtyKG4sdCl9KX0pXSl9fSksdVQ9LyogKi9PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxpbml0OmZ1bmN0aW9uKCl7dmFyIG49Y2Uoc3Qubm9uZSgpKTtyZXR1cm57cmVhZFN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIG4uZ2V0KCkuZm9sZChmdW5jdGlvbigpe3JldHVybiJub25lIn0sZnVuY3Rpb24odCl7cmV0dXJuIHR9KX0sZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG4uZ2V0KCl9LHNldDpmdW5jdGlvbih0KXtyZXR1cm4gbi5zZXQodCl9LGNsZWFyOmZ1bmN0aW9uKCl7cmV0dXJuIG4uc2V0KHN0Lm5vbmUoKSl9fX19KSxhVD1bem4oImNoYW5uZWwiKSxZbigicmVuZGVyQ29tcG9uZW50cyIpLFluKCJ1cGRhdGVTdGF0ZSIpLFluKCJpbml0aWFsRGF0YSIpXSxjVD1MYSh7ZmllbGRzOmFULG5hbWU6InJlZmxlY3RpbmciLGFjdGl2ZTppVCxhcGlzOnJULHN0YXRlOnVUfSksc1Q9YXQoW3puKCJ0b2dnbGVDbGFzcyIpLHpuKCJmZXRjaCIpLFp1KCJvbkV4ZWN1dGUiKSxabigiZ2V0SG90c3BvdCIsc3Quc29tZSksWm4oImdldEFuY2hvck92ZXJyaWRlcyIsYXQoe30pKSxUYygpLFp1KCJvbkl0ZW1FeGVjdXRlIiksWW4oImxhenlTaW5rIiksem4oImRvbSIpLCR1KCJvbk9wZW4iKSx5bCgic3BsaXREcm9wZG93bkJlaGF2aW91cnMiLFtIeSxSbSxYbV0pLFpuKCJtYXRjaFdpZHRoIiwhMSksWm4oInVzZU1pbldpZHRoIiwhMSksWm4oImV2ZW50T3JkZXIiLHt9KSxZbigicm9sZSIpXS5jb25jYXQoS3koKSkpLGxUPXFsKHtmYWN0b3J5OmpnLHNjaGVtYTpbem4oImRvbSIpXSxuYW1lOiJhcnJvdyIsZGVmYXVsdHM6ZnVuY3Rpb24oKXtyZXR1cm57YnV0dG9uQmVoYXZpb3Vyczp6YShbWG0ucmV2b2tlKCldKX19LG92ZXJyaWRlczpmdW5jdGlvbihuKXtyZXR1cm57ZG9tOnt0YWc6InNwYW4iLGF0dHJpYnV0ZXM6e3JvbGU6InByZXNlbnRhdGlvbiJ9fSxhY3Rpb246ZnVuY3Rpb24odCl7dC5nZXRTeXN0ZW0oKS5nZXRCeVVpZChuLnVpZCkuZWFjaChVbyl9LGJ1dHRvbkJlaGF2aW91cnM6emEoW3JnLmNvbmZpZyh7dG9nZ2xlT25FeGVjdXRlOiExLHRvZ2dsZUNsYXNzOm4udG9nZ2xlQ2xhc3N9KV0pfX19KSxmVD1xbCh7ZmFjdG9yeTpqZyxzY2hlbWE6W3puKCJkb20iKV0sbmFtZToiYnV0dG9uIixkZWZhdWx0czpmdW5jdGlvbigpe3JldHVybntidXR0b25CZWhhdmlvdXJzOnphKFtYbS5yZXZva2UoKV0pfX0sb3ZlcnJpZGVzOmZ1bmN0aW9uKGUpe3JldHVybntkb206e3RhZzoic3BhbiIsYXR0cmlidXRlczp7cm9sZToicHJlc2VudGF0aW9uIn19LGFjdGlvbjpmdW5jdGlvbihuKXtuLmdldFN5c3RlbSgpLmdldEJ5VWlkKGUudWlkKS5lYWNoKGZ1bmN0aW9uKHQpe2Uub25FeGVjdXRlKHQsbil9KX19fX0pLGRUPWF0KFtsVCxmVCxKbCh7ZmFjdG9yeTp7c2tldGNoOmZ1bmN0aW9uKHQpe3JldHVybnt1aWQ6dC51aWQsZG9tOnt0YWc6InNwYW4iLHN0eWxlczp7ZGlzcGxheToibm9uZSJ9LGF0dHJpYnV0ZXM6eyJhcmlhLWhpZGRlbiI6InRydWUifSxpbm5lckh0bWw6dC50ZXh0fX19fSxzY2hlbWE6W3puKCJ0ZXh0IildLG5hbWU6ImFyaWEtZGVzY3JpcHRvciJ9KSxLbCh7c2NoZW1hOltxdSgpXSxuYW1lOiJtZW51IixkZWZhdWx0czpmdW5jdGlvbihvKXtyZXR1cm57b25FeGVjdXRlOmZ1bmN0aW9uKG4sZSl7bi5nZXRTeXN0ZW0oKS5nZXRCeVVpZChvLnVpZCkuZWFjaChmdW5jdGlvbih0KXtvLm9uSXRlbUV4ZWN1dGUodCxuLGUpfSl9fX19KSx6eSgpXSksbVQ9X2Yoe25hbWU6IlNwbGl0RHJvcGRvd24iLGNvbmZpZ0ZpZWxkczpzVCgpLHBhcnRGaWVsZHM6ZFQoKSxmYWN0b3J5OmZ1bmN0aW9uKG8sdCxuLGUpe3ZhciByPWZ1bmN0aW9uKHQpe01mLmdldEN1cnJlbnQodCkuZWFjaChmdW5jdGlvbih0KXtqZi5oaWdobGlnaHRGaXJzdCh0KSxSbS5mb2N1c0luKHQpfSl9LGk9ZnVuY3Rpb24odCl7VXkobyxmdW5jdGlvbih0KXtyZXR1cm4gdH0sdCxlLHIsc3kuSGlnaGxpZ2h0Rmlyc3QpLmdldChaKX0sdT1mdW5jdGlvbih0KXt2YXIgbj1sZih0LG8sImJ1dHRvbiIpO3JldHVybiBVbyhuKSxzdC5zb21lKCEwKX0sYT1ldChldCh7fSxZbyhbb3IoZnVuY3Rpb24oZSx0KXtzZihlLG8sImFyaWEtZGVzY3JpcHRvciIpLmVhY2goZnVuY3Rpb24odCl7dmFyIG49TnIoImFyaWEiKTtCcih0LmVsZW1lbnQoKSwiaWQiLG4pLEJyKGUuZWxlbWVudCgpLCJhcmlhLWRlc2NyaWJlZGJ5IixuKX0pfSldKSksdWcoc3Quc29tZShpKSkpLGM9e3JlcG9zaXRpb25NZW51czpmdW5jdGlvbih0KXtyZy5pc09uKHQpJiZxeSh0KX19O3JldHVybnt1aWQ6by51aWQsZG9tOm8uZG9tLGNvbXBvbmVudHM6dCxhcGlzOmMsZXZlbnRPcmRlcjpldChldCh7fSxvLmV2ZW50T3JkZXIpLHsiYWxsb3kuZXhlY3V0ZSI6WyJkaXNhYmxpbmciLCJ0b2dnbGluZyIsImFsbG95LmJhc2UuYmVoYXZpb3VyIl19KSxldmVudHM6YSxiZWhhdmlvdXJzOndsKG8uc3BsaXREcm9wZG93bkJlaGF2aW91cnMsW0h5LmNvbmZpZyh7b3RoZXJzOntzYW5kYm94OmZ1bmN0aW9uKHQpe3ZhciBuPWxmKHQsbywiYXJyb3ciKTtyZXR1cm4gWXkobyx0LHtvbk9wZW46ZnVuY3Rpb24oKXtyZy5vbihuKSxyZy5vbih0KX0sb25DbG9zZTpmdW5jdGlvbigpe3JnLm9mZihuKSxyZy5vZmYodCl9fSl9fX0pLFJtLmNvbmZpZyh7bW9kZToic3BlY2lhbCIsb25TcGFjZTp1LG9uRW50ZXI6dSxvbkRvd246ZnVuY3Rpb24odCl7cmV0dXJuIGkodCksc3Quc29tZSghMCl9fSksWG0uY29uZmlnKHt9KSxyZy5jb25maWcoe3RvZ2dsZU9uRXhlY3V0ZTohMSxhcmlhOnttb2RlOiJleHBhbmRlZCJ9fSldKSxkb21Nb2RpZmljYXRpb246e2F0dHJpYnV0ZXM6e3JvbGU6by5yb2xlLmdldE9yKCJidXR0b24iKSwiYXJpYS1oYXNwb3B1cCI6ITB9fX19LGFwaXM6e3JlcG9zaXRpb25NZW51czpmdW5jdGlvbih0LG4pe3JldHVybiB0LnJlcG9zaXRpb25NZW51cyhuKX19fSksZ1Q9ZnVuY3Rpb24obil7cmV0dXJue2lzRGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gcGguaXNEaXNhYmxlZChuKX0sc2V0RGlzYWJsZWQ6ZnVuY3Rpb24odCl7cmV0dXJuIHBoLnNldChuLHQpfX19LHBUPWZ1bmN0aW9uKG4pe3JldHVybntzZXRBY3RpdmU6ZnVuY3Rpb24odCl7cmcuc2V0KG4sdCl9LGlzQWN0aXZlOmZ1bmN0aW9uKCl7cmV0dXJuIHJnLmlzT24obil9LGlzRGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gcGguaXNEaXNhYmxlZChuKX0sc2V0RGlzYWJsZWQ6ZnVuY3Rpb24odCl7cmV0dXJuIHBoLnNldChuLHQpfX19LGhUPWZ1bmN0aW9uKHQsbil7cmV0dXJuIHQubWFwKGZ1bmN0aW9uKHQpe3JldHVybnsiYXJpYS1sYWJlbCI6bi50cmFuc2xhdGUodCksdGl0bGU6bi50cmFuc2xhdGUodCl9fSkuZ2V0T3Ioe30pfSx2VD1OcigiZm9jdXMtYnV0dG9uIiksYlQ9WyJjaGVja2xpc3QiLCJvcmRlcmVkLWxpc3QiXSx5VD1bImluZGVudCIsIm91dGRlbnQiLCJ0YWJsZS1pbnNlcnQtY29sdW1uLWFmdGVyIiwidGFibGUtaW5zZXJ0LWNvbHVtbi1iZWZvcmUiLCJ1bm9yZGVyZWQtbGlzdCJdLHhUPWZ1bmN0aW9uKG4sZSx0LG8scixpKXt2YXIgdSxhPWZ1bmN0aW9uKHQpe3JldHVybiBWcC5pc1J0bCgpJiZGKGJULHQpP3QrIi1ydGwiOnR9LGM9VnAuaXNSdGwoKSYmbi5leGlzdHMoZnVuY3Rpb24odCl7cmV0dXJuIEYoeVQsdCl9KTtyZXR1cm57ZG9tOnt0YWc6ImJ1dHRvbiIsY2xhc3NlczpbInRveC10YnRuIl0uY29uY2F0KGUuaXNTb21lKCk/WyJ0b3gtdGJ0bi0tc2VsZWN0Il06W10pLmNvbmNhdChjP1sidG94LXRidG5fX2ljb24tcnRsIl06W10pLGF0dHJpYnV0ZXM6aFQodCxpKX0sY29tcG9uZW50czpaaChbbi5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHZrKGEodCksaS5pY29ucyl9KSxlLm1hcChmdW5jdGlvbih0KXtyZXR1cm4geWsodCwidG94LXRidG4iLGkpfSldKSxldmVudE9yZGVyOigodT17fSlbdG8oKV09WyJmb2N1c2luZyIsImFsbG95LmJhc2UuYmVoYXZpb3VyIiwiY29tbW9uLWJ1dHRvbi1kaXNwbGF5LWV2ZW50cyJdLHUpLGJ1dHRvbkJlaGF2aW91cnM6emEoW1loKGkuaXNSZWFkT25seSksVWgoKSxMbSgiY29tbW9uLWJ1dHRvbi1kaXNwbGF5LWV2ZW50cyIsW0pvKHRvKCksZnVuY3Rpb24odCxuKXtuLmV2ZW50KCkucHJldmVudCgpLExvKHQsdlQpfSldKV0uY29uY2F0KG8ubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBjVC5jb25maWcoe2NoYW5uZWw6dCxpbml0aWFsRGF0YTp7aWNvbjpuLHRleHQ6ZX0scmVuZGVyQ29tcG9uZW50czpmdW5jdGlvbih0LG4pe3JldHVybiBaaChbdC5pY29uLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdmsoYSh0KSxpLmljb25zKX0pLHQudGV4dC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHlrKHQsInRveC10YnRuIixpKX0pXSl9fSl9KS50b0FycmF5KCkpLmNvbmNhdChyLmdldE9yKFtdKSkpfX0sd1Q9ZnVuY3Rpb24odCxuLGUpe3ZhciBvLHI9Y2UoWiksaT14VCh0Lmljb24sdC50ZXh0LHQudG9vbHRpcCxzdC5ub25lKCksc3Qubm9uZSgpLGUpO3JldHVybiBqZy5za2V0Y2goe2RvbTppLmRvbSxjb21wb25lbnRzOmkuY29tcG9uZW50cyxldmVudE9yZGVyOndrLGJ1dHRvbkJlaGF2aW91cnM6emEoW0xtKCJ0b29sYmFyLWJ1dHRvbi1ldmVudHMiLFsobz17b25BY3Rpb246dC5vbkFjdGlvbixnZXRBcGk6bi5nZXRBcGl9LHVyKGZ1bmN0aW9uKG4sdCl7cWgobyxuKShmdW5jdGlvbih0KXtqbyhuLHhrLHtidXR0b25BcGk6dH0pLG8ub25BY3Rpb24odCl9KX0pKSxLaChuLHIpLEpoKG4scildKSxZaChmdW5jdGlvbigpe3JldHVybiB0LmRpc2FibGVkfHxlLmlzUmVhZE9ubHkoKX0pLFVoKCldLmNvbmNhdChuLnRvb2xiYXJCdXR0b25CZWhhdmlvdXJzKSl9KX0sU1Q9ZnVuY3Rpb24odCxuLGUpe3JldHVybiB3VCh0LHt0b29sYmFyQnV0dG9uQmVoYXZpb3VyczpbXS5jb25jYXQoMDxlLmxlbmd0aD9bTG0oInRvb2xiYXJCdXR0b25XaXRoIixlKV06W10pLGdldEFwaTpnVCxvblNldHVwOnQub25TZXR1cH0sbil9LGtUPWZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gQ3Qod1QodCx7dG9vbGJhckJ1dHRvbkJlaGF2aW91cnM6W05tLmNvbmZpZyh7fSkscmcuY29uZmlnKHt0b2dnbGVDbGFzczoidG94LXRidG4tLWVuYWJsZWQiLGFyaWE6e21vZGU6InByZXNzZWQifSx0b2dnbGVPbkV4ZWN1dGU6ITF9KV0uY29uY2F0KDA8ZS5sZW5ndGg/W0xtKCJ0b29sYmFyVG9nZ2xlQnV0dG9uV2l0aCIsZSldOltdKSxnZXRBcGk6cFQsb25TZXR1cDp0Lm9uU2V0dXB9LG4pKX0sQ1Q9ZnVuY3Rpb24obix0KXt2YXIgZSxvLHIsaSx1PU5yKCJjaGFubmVsLXVwZGF0ZS1zcGxpdC1kcm9wZG93bi1kaXNwbGF5IiksYT1mdW5jdGlvbihlKXtyZXR1cm57aXNEaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiBwaC5pc0Rpc2FibGVkKGUpfSxzZXREaXNhYmxlZDpmdW5jdGlvbih0KXtyZXR1cm4gcGguc2V0KGUsdCl9LHNldEljb25GaWxsOmZ1bmN0aW9uKHQsbil7TXUoZS5lbGVtZW50KCksJ3N2ZyBwYXRoW2lkPSInK3QrJyJdLCByZWN0W2lkPSInK3QrJyJdJykuZWFjaChmdW5jdGlvbih0KXtCcih0LCJmaWxsIixuKX0pfSxzZXRJY29uU3Ryb2tlOmZ1bmN0aW9uKHQsbil7TXUoZS5lbGVtZW50KCksJ3N2ZyBwYXRoW2lkPSInK3QrJyJdLCByZWN0W2lkPSInK3QrJyJdJykuZWFjaChmdW5jdGlvbih0KXtCcih0LCJzdHJva2UiLG4pfSl9LHNldEFjdGl2ZTpmdW5jdGlvbihuKXtCcihlLmVsZW1lbnQoKSwiYXJpYS1wcmVzc2VkIixuKSxNdShlLmVsZW1lbnQoKSwic3BhbiIpLmVhY2goZnVuY3Rpb24odCl7ZS5nZXRTeXN0ZW0oKS5nZXRCeURvbSh0KS5lYWNoKGZ1bmN0aW9uKHQpe3JldHVybiByZy5zZXQodCxuKX0pfSl9LGlzQWN0aXZlOmZ1bmN0aW9uKCl7cmV0dXJuIE11KGUuZWxlbWVudCgpLCJzcGFuIikuZXhpc3RzKGZ1bmN0aW9uKHQpe3JldHVybiBlLmdldFN5c3RlbSgpLmdldEJ5RG9tKHQpLmV4aXN0cyhyZy5pc09uKX0pfX19LGM9Y2UoWikscz17Z2V0QXBpOmEsb25TZXR1cDpuLm9uU2V0dXB9O3JldHVybiBtVC5za2V0Y2goe2RvbTp7dGFnOiJkaXYiLGNsYXNzZXM6WyJ0b3gtc3BsaXQtYnV0dG9uIl0sYXR0cmlidXRlczpldCh7ImFyaWEtcHJlc3NlZCI6ITF9LGhUKG4udG9vbHRpcCx0LnByb3ZpZGVycykpfSxvbkV4ZWN1dGU6ZnVuY3Rpb24odCl7bi5vbkFjdGlvbihhKHQpKX0sb25JdGVtRXhlY3V0ZTpmdW5jdGlvbih0LG4sZSl7fSxzcGxpdERyb3Bkb3duQmVoYXZpb3Vyczp6YShbWGgodC5wcm92aWRlcnMuaXNSZWFkT25seSksVWgoKSxMbSgic3BsaXQtZHJvcGRvd24tZXZlbnRzIixbSm8odlQsWG0uZm9jdXMpLEtoKHMsYyksSmgocyxjKV0pLFp5LmNvbmZpZyh7fSldKSxldmVudE9yZGVyOigoZT17fSlbTW8oKV09WyJhbGxveS5iYXNlLmJlaGF2aW91ciIsInNwbGl0LWRyb3Bkb3duLWV2ZW50cyJdLGUpLHRvZ2dsZUNsYXNzOiJ0b3gtdGJ0bi0tZW5hYmxlZCIsbGF6eVNpbms6dC5nZXRTaW5rLGZldGNoOihvPWEscj1uLGk9dC5wcm92aWRlcnMsZnVuY3Rpb24obil7cmV0dXJuIGh5KGZ1bmN0aW9uKHQpe3JldHVybiByLmZldGNoKHQpfSkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBzdC5mcm9tKGhiKEN0KG5iKE5yKCJtZW51LXZhbHVlIiksdCxmdW5jdGlvbih0KXtyLm9uSXRlbUFjdGlvbihvKG4pLHQpfSxyLmNvbHVtbnMsci5wcmVzZXRzLCRoLkNMT1NFX09OX0VYRUNVVEUsci5zZWxlY3QuZ2V0T3IoZnVuY3Rpb24oKXtyZXR1cm4hMX0pLGkpLHttb3ZlbWVudDpvYihyLmNvbHVtbnMsci5wcmVzZXRzKSxtZW51QmVoYXZpb3VyczpUcCgiYXV0byIhPT1yLmNvbHVtbnM/W106W29yKGZ1bmN0aW9uKG8sdCl7T3Aobyw0LEdwKHIucHJlc2V0cykpLmVhY2goZnVuY3Rpb24odCl7dmFyIG49dC5udW1Sb3dzLGU9dC5udW1Db2x1bW5zO1JtLnNldEdyaWRTaXplKG8sbixlKX0pfSldKX0pKSl9KX0pLHBhcnRzOnttZW51Oll2KDAsbi5jb2x1bW5zLG4ucHJlc2V0cyl9LGNvbXBvbmVudHM6W21ULnBhcnRzKCkuYnV0dG9uKHhUKG4uaWNvbixuLnRleHQsc3Qubm9uZSgpLHN0LnNvbWUodSksc3Quc29tZShbcmcuY29uZmlnKHt0b2dnbGVDbGFzczoidG94LXRidG4tLWVuYWJsZWQiLHRvZ2dsZU9uRXhlY3V0ZTohMX0pXSksdC5wcm92aWRlcnMpKSxtVC5wYXJ0cygpLmFycm93KHtkb206e3RhZzoiYnV0dG9uIixjbGFzc2VzOlsidG94LXRidG4iLCJ0b3gtc3BsaXQtYnV0dG9uX19jaGV2cm9uIl0saW5uZXJIdG1sOkdnKCJjaGV2cm9uLWRvd24iLHQucHJvdmlkZXJzLmljb25zKX0sYnV0dG9uQmVoYXZpb3Vyczp6YShbWGgodC5wcm92aWRlcnMuaXNSZWFkT25seSksVWgoKV0pfSksbVQucGFydHMoKVsiYXJpYS1kZXNjcmlwdG9yIl0oe3RleHQ6dC5wcm92aWRlcnMudHJhbnNsYXRlKCJUbyBvcGVuIHRoZSBwb3B1cCwgcHJlc3MgU2hpZnQrRW50ZXIiKX0pXX0pfSxPVD1mdW5jdGlvbihpLHUpe3JldHVybiBKbyh4ayxmdW5jdGlvbih0LG4pe3ZhciBlLG89aS5nZXQodCkscj0oZT1vLHtoaWRlOmZ1bmN0aW9uKCl7cmV0dXJuIExvKGUsQ28oKSl9LGdldFZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGJsLmdldFZhbHVlKGUpfX0pO3Uub25BY3Rpb24ocixuLmV2ZW50KCkuYnV0dG9uQXBpKCkpfSl9LF9UPWZ1bmN0aW9uKHQsbixlKXt2YXIgbyxyLGksdSxhLGMscyxsLGYsZCxtLGcscD17YmFja3N0YWdlOntzaGFyZWQ6e3Byb3ZpZGVyczplfX19O3JldHVybiJjb250ZXh0Zm9ybXRvZ2dsZWJ1dHRvbiI9PT1uLnR5cGU/KHM9dCxmPXAsKGQ9KGw9bikub3JpZ2luYWwpLnByaW1hcnksbT15KGQsWyJwcmltYXJ5Il0pLGc9T24ocV8oZXQoZXQoe30sbSkse3R5cGU6InRvZ2dsZWJ1dHRvbiIsb25BY3Rpb246ZnVuY3Rpb24oKXt9fSkpKSxrVChnLGYuYmFja3N0YWdlLnNoYXJlZC5wcm92aWRlcnMsW09UKHMsbCldKSk6KG89dCxpPXAsKHU9KHI9bikub3JpZ2luYWwpLnByaW1hcnksYT15KHUsWyJwcmltYXJ5Il0pLGM9T24oTF8oZXQoZXQoe30sYSkse3R5cGU6ImJ1dHRvbiIsb25BY3Rpb246ZnVuY3Rpb24oKXt9fSkpKSxTVChjLGkuYmFja3N0YWdlLnNoYXJlZC5wcm92aWRlcnMsW09UKG8scildKSl9LFRUPWZ1bmN0aW9uKHQsbil7dmFyIGUsbyxyLGksdT10LmxhYmVsLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm57fX0sZnVuY3Rpb24odCl7cmV0dXJueyJhcmlhLWxhYmVsIjp0fX0pLGE9VWcodXkuc2tldGNoKHtpbnB1dENsYXNzZXM6WyJ0b3gtdG9vbGJhci10ZXh0ZmllbGQiLCJ0b3gtdG9vbGJhci1uYXYtanMiXSxkYXRhOnQuaW5pdFZhbHVlKCksaW5wdXRBdHRyaWJ1dGVzOnUsc2VsZWN0T25Gb2N1czohMCxpbnB1dEJlaGF2aW91cnM6emEoW1JtLmNvbmZpZyh7bW9kZToic3BlY2lhbCIsb25FbnRlcjpmdW5jdGlvbih0KXtyZXR1cm4gYy5maW5kUHJpbWFyeSh0KS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIFVvKHQpLCEwfSl9LG9uTGVmdDpmdW5jdGlvbih0LG4pe3JldHVybiBuLmN1dCgpLHN0Lm5vbmUoKX0sb25SaWdodDpmdW5jdGlvbih0LG4pe3JldHVybiBuLmN1dCgpLHN0Lm5vbmUoKX19KV0pfSkpLGM9KGU9YSxvPXQuY29tbWFuZHMscj1uLGk9VihvLGZ1bmN0aW9uKHQpe3JldHVybiBVZyhfVChlLHQscikpfSkse2FzU3BlY3M6ZnVuY3Rpb24oKXtyZXR1cm4gVihpLGZ1bmN0aW9uKHQpe3JldHVybiB0LmFzU3BlYygpfSl9LGZpbmRQcmltYXJ5OmZ1bmN0aW9uKGUpe3JldHVybiBRKG8sZnVuY3Rpb24odCxuKXtyZXR1cm4gdC5wcmltYXJ5P3N0LmZyb20oaVtuXSkuYmluZChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRPcHQoZSl9KS5maWx0ZXIoeChwaC5pc0Rpc2FibGVkKSk6c3Qubm9uZSgpfSl9fSk7cmV0dXJuW3t0aXRsZTpzdC5ub25lKCksaXRlbXM6W2EuYXNTcGVjKCldfSx7dGl0bGU6c3Qubm9uZSgpLGl0ZW1zOmMuYXNTcGVjcygpfV19LEVUPVRULEJUPWZ1bmN0aW9uKHQsbil7dmFyIGUsbyxyLGksdSxhPWh1KG50LndpbmRvdyksYz13dShsZS5mcm9tRG9tKHQuZ2V0Q29udGVudEFyZWFDb250YWluZXIoKSkpLHM9Q2godCl8fE9oKHQpfHxUaCh0KSxsPShlPWMsbz1hLHI9TWF0aC5tYXgoby54LGUueCksaT1lLnJpZ2h0LXIsdT1vLndpZHRoLShyLW8ueCkse3g6cix3aWR0aDpNYXRoLm1pbihpLHUpfSksZj1sLngsZD1sLndpZHRoO2lmKHQuaW5saW5lJiYhcylyZXR1cm4geHUoZixhLnksZCxhLmhlaWdodCk7dmFyIG09ZnVuY3Rpb24odCxuLGUsbyl7dmFyIHI9bGUuZnJvbURvbSh0LmdldENvbnRhaW5lcigpKSxpPU11KHIsIi50b3gtZWRpdG9yLWhlYWRlciIpLmdldE9yKHIpLHU9d3UoaSksYT11Lnk+PW4uYm90dG9tLGM9byYmIWE7aWYodC5pbmxpbmUmJmMpcmV0dXJue3k6TWF0aC5tYXgodS5ib3R0b20sZS55KSxib3R0b206ZS5ib3R0b219O2lmKHQuaW5saW5lJiYhYylyZXR1cm57eTplLnksYm90dG9tOk1hdGgubWluKHUueSxlLmJvdHRvbSl9O3ZhciBzPXd1KHIpO3JldHVybiBjP3t5Ok1hdGgubWF4KHUuYm90dG9tLGUueSksYm90dG9tOk1hdGgubWluKHMuYm90dG9tLGUuYm90dG9tKX06e3k6TWF0aC5tYXgocy55LGUueSksYm90dG9tOk1hdGgubWluKHUueSxlLmJvdHRvbSl9fSh0LGMsYSxuLmhlYWRlci5pc1Bvc2l0aW9uZWRBdFRvcCgpKSxnPW0ueSxwPW0uYm90dG9tO3JldHVybiB4dShmLGcsZCxwLWcpfSxEVD1mdW5jdGlvbihuLHQpe3ZhciBlPVAodCxmdW5jdGlvbih0KXtyZXR1cm4gdC5wcmVkaWNhdGUobi5kb20oKSl9KSxvPUgoZSxmdW5jdGlvbih0KXtyZXR1cm4iY29udGV4dHRvb2xiYXIiPT09dC50eXBlfSk7cmV0dXJue2NvbnRleHRUb29sYmFyczpvLnBhc3MsY29udGV4dEZvcm1zOm8uZmFpbH19LE1UPWZ1bmN0aW9uKHQsbixlKXt2YXIgbz1EVCh0LG4pO2lmKDA8by5jb250ZXh0Rm9ybXMubGVuZ3RoKXJldHVybiBzdC5zb21lKHtlbGVtOnQsdG9vbGJhcnM6W28uY29udGV4dEZvcm1zWzBdXX0pO3ZhciByPURUKHQsZSk7aWYoMDxyLmNvbnRleHRGb3Jtcy5sZW5ndGgpcmV0dXJuIHN0LnNvbWUoe2VsZW06dCx0b29sYmFyczpbci5jb250ZXh0Rm9ybXNbMF1dfSk7aWYoMDxvLmNvbnRleHRUb29sYmFycy5sZW5ndGh8fDA8ci5jb250ZXh0VG9vbGJhcnMubGVuZ3RoKXt2YXIgaT1mdW5jdGlvbih0KXtpZih0Lmxlbmd0aDw9MSlyZXR1cm4gdDt2YXIgbj1mdW5jdGlvbihuKXtyZXR1cm4gSSh0LGZ1bmN0aW9uKHQpe3JldHVybiB0LnBvc2l0aW9uPT09bn0pfSxlPWZ1bmN0aW9uKG4pe3JldHVybiBQKHQsZnVuY3Rpb24odCl7cmV0dXJuIHQucG9zaXRpb249PT1ufSl9LG89bigic2VsZWN0aW9uIikscj1uKCJub2RlIik7aWYob3x8cil7aWYociYmbyl7dmFyIGk9ZSgibm9kZSIpLHU9VihlKCJzZWxlY3Rpb24iKSxmdW5jdGlvbih0KXtyZXR1cm4gZXQoZXQoe30sdCkse3Bvc2l0aW9uOiJub2RlIn0pfSk7cmV0dXJuIGkuY29uY2F0KHUpfXJldHVybiBlKG8/InNlbGVjdGlvbiI6Im5vZGUiKX1yZXR1cm4gZSgibGluZSIpfShvLmNvbnRleHRUb29sYmFycy5jb25jYXQoci5jb250ZXh0VG9vbGJhcnMpKTtyZXR1cm4gc3Quc29tZSh7ZWxlbTp0LHRvb2xiYXJzOml9KX1yZXR1cm4gc3Qubm9uZSgpfSxBVD1mdW5jdGlvbih0LG4saSl7cmV0dXJuIHQobik/c3Qubm9uZSgpOkdlKG4sZnVuY3Rpb24odCl7dmFyIG49RFQodCxpLmluTm9kZVNjb3BlKSxlPW4uY29udGV4dFRvb2xiYXJzLG89bi5jb250ZXh0Rm9ybXMscj0wPG8ubGVuZ3RoP286ZnVuY3Rpb24odCl7aWYodC5sZW5ndGg8PTEpcmV0dXJuIHQ7dmFyIG49ZnVuY3Rpb24obil7cmV0dXJuIEwodCxmdW5jdGlvbih0KXtyZXR1cm4gdC5wb3NpdGlvbj09PW59KX07cmV0dXJuIG4oInNlbGVjdGlvbiIpLm9yVGh1bmsoZnVuY3Rpb24oKXtyZXR1cm4gbigibm9kZSIpfSkub3JUaHVuayhmdW5jdGlvbigpe3JldHVybiBuKCJsaW5lIil9KS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQucG9zaXRpb259KS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuW119LGZ1bmN0aW9uKG4pe3JldHVybiBQKHQsZnVuY3Rpb24odCl7cmV0dXJuIHQucG9zaXRpb249PT1ufSl9KX0oZSk7cmV0dXJuIDA8ci5sZW5ndGg/c3Quc29tZSh7ZWxlbTp0LHRvb2xiYXJzOnJ9KTpzdC5ub25lKCl9LHQpfSxGVD1mdW5jdGlvbihlLHIpe3ZhciB0PXt9LGk9W10sdT1bXSxhPXt9LGM9e30sbz1mdW5jdGlvbihuLGUpe3ZhciBvPU9uKENuKCJDb250ZXh0Rm9ybSIsZVQsZSkpOyh0W25dPW8pLmxhdW5jaC5tYXAoZnVuY3Rpb24odCl7YVsiZm9ybToiK25dPWV0KGV0KHt9LGUubGF1bmNoKSx7dHlwZToiY29udGV4dGZvcm10b2dnbGVidXR0b24iPT09dC50eXBlPyJ0b2dnbGVidXR0b24iOiJidXR0b24iLG9uQWN0aW9uOmZ1bmN0aW9uKCl7cihvKX19KX0pLCJlZGl0b3IiPT09by5zY29wZT91LnB1c2gobyk6aS5wdXNoKG8pLGNbbl09b30scz1mdW5jdGlvbihuLGUpe0NuKCJDb250ZXh0VG9vbGJhciIsb1QsZSkuZWFjaChmdW5jdGlvbih0KXsiZWRpdG9yIj09PWUuc2NvcGU/dS5wdXNoKHQpOmkucHVzaCh0KSxjW25dPXR9KX0sbj1sdChlKTtyZXR1cm4gaXQobixmdW5jdGlvbih0KXt2YXIgbj1lW3RdOyJjb250ZXh0Zm9ybSI9PT1uLnR5cGU/byh0LG4pOiJjb250ZXh0dG9vbGJhciI9PT1uLnR5cGUmJnModCxuKX0pLHtmb3Jtczp0LGluTm9kZVNjb3BlOmksaW5FZGl0b3JTY29wZTp1LGxvb2t1cFRhYmxlOmMsZm9ybU5hdmlnYXRvcnM6YX19LElUPU5yKCJmb3J3YXJkLXNsaWRlIiksUlQ9TnIoImJhY2t3YXJkLXNsaWRlIiksVlQ9TnIoImNoYW5nZS1zbGlkZS1ldmVudCIpLEhUPSJ0b3gtcG9wLS1yZXNpemluZyIsUFQ9ZnVuY3Rpb24odCxuLGUpe3ZhciB1LGEscixjLGksbz1lLmRhdGFzZXQscz0iYmFzaWMiPT09by50eXBlP2Z1bmN0aW9uKCl7cmV0dXJuIFYoby5kYXRhLGZ1bmN0aW9uKHQpe3JldHVybiBjTyh0LGUuaXNTZWxlY3RlZEZvcixlLmdldFByZXZpZXdGb3IpfSl9Om8uZ2V0RGF0YTtyZXR1cm57aXRlbXM6KHU9bixhPWUscj1mdW5jdGlvbih0LG4sZSxvKXt2YXIgcj11LnNoYXJlZC5wcm92aWRlcnMudHJhbnNsYXRlKHQudGl0bGUpO2lmKCJzZXBhcmF0b3IiPT09dC50eXBlKXJldHVybiBzdC5zb21lKHt0eXBlOiJzZXBhcmF0b3IiLHRleHQ6cn0pO2lmKCJzdWJtZW51IiE9PXQudHlwZSlyZXR1cm4gc3Quc29tZShldCh7dHlwZToidG9nZ2xlbWVudWl0ZW0iLHRleHQ6cixpY29uOnQuaWNvbixhY3RpdmU6dC5pc1NlbGVjdGVkKG8pLGRpc2FibGVkOmUsb25BY3Rpb246YS5vbkFjdGlvbih0KX0sdC5nZXRTdHlsZVByZXZpZXcoKS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJue319LGZ1bmN0aW9uKHQpe3JldHVybnttZXRhOntzdHlsZTp0fX19KSkpO3ZhciBpPVUodC5nZXRTdHlsZUl0ZW1zKCksZnVuY3Rpb24odCl7cmV0dXJuIGModCxuLG8pfSk7cmV0dXJuIDA9PT1uJiZpLmxlbmd0aDw9MD9zdC5ub25lKCk6c3Quc29tZSh7dHlwZToibmVzdGVkbWVudWl0ZW0iLHRleHQ6cixkaXNhYmxlZDppLmxlbmd0aDw9MCxnZXRTdWJtZW51SXRlbXM6ZnVuY3Rpb24oKXtyZXR1cm4gVSh0LmdldFN0eWxlSXRlbXMoKSxmdW5jdGlvbih0KXtyZXR1cm4gYyh0LG4sbyl9KX19KX0sYz1mdW5jdGlvbih0LG4sZSl7dmFyIG89ImZvcm1hdHRlciI9PT10LnR5cGUmJmEuaXNJbnZhbGlkKHQpO3JldHVybiAwPT09bj9vP1tdOnIodCxuLCExLGUpLnRvQXJyYXkoKTpyKHQsbixvLGUpLnRvQXJyYXkoKX0se3ZhbGlkYXRlSXRlbXM6aT1mdW5jdGlvbih0KXt2YXIgbj1hLmdldEN1cnJlbnRWYWx1ZSgpLGU9YS5zaG91bGRIaWRlPzA6MTtyZXR1cm4gVSh0LGZ1bmN0aW9uKHQpe3JldHVybiBjKHQsZSxuKX0pfSxnZXRGZXRjaDpmdW5jdGlvbihvLHIpe3JldHVybiBmdW5jdGlvbih0KXt2YXIgbj1yKCksZT1pKG4pO3QoRGsoZSwkaC5DTE9TRV9PTl9FWEVDVVRFLG8sITEpKX19fSksZ2V0U3R5bGVJdGVtczpzfX0selQ9ZnVuY3Rpb24obyx0LG4pe3ZhciBlPVBUKDAsdCxuKSxyPWUuaXRlbXMsaT1lLmdldFN0eWxlSXRlbXM7cmV0dXJuIENrKHt0ZXh0Om4uaWNvbi5pc1NvbWUoKT9zdC5ub25lKCk6c3Quc29tZSgiIiksaWNvbjpuLmljb24sdG9vbHRpcDpzdC5mcm9tKG4udG9vbHRpcCkscm9sZTpzdC5ub25lKCksZmV0Y2g6ci5nZXRGZXRjaCh0LGkpLG9uU2V0dXA6ZnVuY3Rpb24oZSl7cmV0dXJuIG4uc2V0SW5pdGlhbFZhbHVlLmVhY2goZnVuY3Rpb24odCl7cmV0dXJuIHQoZS5nZXRDb21wb25lbnQoKSl9KSxuLm5vZGVDaGFuZ2VIYW5kbGVyLm1hcChmdW5jdGlvbih0KXt2YXIgbj10KGUuZ2V0Q29tcG9uZW50KCkpO3JldHVybiBvLm9uKCJOb2RlQ2hhbmdlIixuKSxmdW5jdGlvbigpe28ub2ZmKCJOb2RlQ2hhbmdlIixuKX19KS5nZXRPcihaKX0sZ2V0QXBpOmZ1bmN0aW9uKHQpe3JldHVybntnZXRDb21wb25lbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdH19fSxjb2x1bW5zOjEscHJlc2V0czoibm9ybWFsIixjbGFzc2VzOm4uaWNvbi5pc1NvbWUoKT9bXTpbImJlc3Bva2UiXSxkcm9wZG93bkJlaGF2aW91cnM6W119LCJ0b3gtdGJ0biIsdC5zaGFyZWQpfTsoeUM9YkM9YkN8fHt9KVt5Qy5TZW1pQ29sb249MF09IlNlbWlDb2xvbiIseUNbeUMuU3BhY2U9MV09IlNwYWNlIjt2YXIgTlQsTFQsalQ9ZnVuY3Rpb24odCxuLGUsbyl7dmFyIHIsaSx1PWJ0KHQuc2V0dGluZ3MsbikuZ2V0T3IoZSk7cmV0dXJue3R5cGU6ImJhc2ljIixkYXRhOihpPXUscj1vPT09YkMuU2VtaUNvbG9uP2kucmVwbGFjZSgvOyQvLCIiKS5zcGxpdCgiOyIpOmkuc3BsaXQoIiAiKSxWKHIsZnVuY3Rpb24odCl7dmFyIG49dCxlPXQsbz10LnNwbGl0KCI9Iik7cmV0dXJuIDE8by5sZW5ndGgmJihuPW9bMF0sZT1vWzFdKSx7dGl0bGU6bixmb3JtYXQ6ZX19KSl9fSxVVD1be3RpdGxlOiJMZWZ0IixpY29uOiJhbGlnbi1sZWZ0Iixmb3JtYXQ6ImFsaWdubGVmdCIsY29tbWFuZDoiSnVzdGlmeUxlZnQifSx7dGl0bGU6IkNlbnRlciIsaWNvbjoiYWxpZ24tY2VudGVyIixmb3JtYXQ6ImFsaWduY2VudGVyIixjb21tYW5kOiJKdXN0aWZ5Q2VudGVyIn0se3RpdGxlOiJSaWdodCIsaWNvbjoiYWxpZ24tcmlnaHQiLGZvcm1hdDoiYWxpZ25yaWdodCIsY29tbWFuZDoiSnVzdGlmeVJpZ2h0In0se3RpdGxlOiJKdXN0aWZ5IixpY29uOiJhbGlnbi1qdXN0aWZ5Iixmb3JtYXQ6ImFsaWduanVzdGlmeSIsY29tbWFuZDoiSnVzdGlmeUZ1bGwifV0sV1Q9ZnVuY3Rpb24oZSl7dmFyIG49ZnVuY3Rpb24odCl7dmFyIG49TChVVCxmdW5jdGlvbih0KXtyZXR1cm4gZS5mb3JtYXR0ZXIubWF0Y2godC5mb3JtYXQpfSkuZm9sZChmdW5jdGlvbigpe3JldHVybiJsZWZ0In0sZnVuY3Rpb24odCl7cmV0dXJuIHQudGl0bGUudG9Mb3dlckNhc2UoKX0pO2pvKHQsa2sse2ljb246ImFsaWduLSIrbn0pfSx0PXN0LnNvbWUoZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG4odCl9fSksbz1zdC5zb21lKGZ1bmN0aW9uKHQpe3JldHVybiBuKHQpfSkscj17dHlwZToiYmFzaWMiLGRhdGE6VVR9O3JldHVybnt0b29sdGlwOiJBbGlnbiIsaWNvbjpzdC5zb21lKCJhbGlnbi1sZWZ0IiksaXNTZWxlY3RlZEZvcjpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZS5mb3JtYXR0ZXIubWF0Y2godCl9fSxnZXRDdXJyZW50VmFsdWU6YXQoc3Qubm9uZSgpKSxnZXRQcmV2aWV3Rm9yOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBzdC5ub25lKCl9fSxvbkFjdGlvbjpmdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gTChVVCxmdW5jdGlvbih0KXtyZXR1cm4gdC5mb3JtYXQ9PT1uLmZvcm1hdH0pLmVhY2goZnVuY3Rpb24odCl7cmV0dXJuIGUuZXhlY0NvbW1hbmQodC5jb21tYW5kKX0pfX0sc2V0SW5pdGlhbFZhbHVlOm8sbm9kZUNoYW5nZUhhbmRsZXI6dCxkYXRhc2V0OnIsc2hvdWxkSGlkZTohMSxpc0ludmFsaWQ6ZnVuY3Rpb24odCl7cmV0dXJuIWUuZm9ybWF0dGVyLmNhbkFwcGx5KHQuZm9ybWF0KX19fSxHVD1bIi1hcHBsZS1zeXN0ZW0iLCJTZWdvZSBVSSIsIlJvYm90byIsIkhlbHZldGljYSBOZXVlIiwic2Fucy1zZXJpZiJdLFhUPWZ1bmN0aW9uKHQpe3ZhciBuPXQuc3BsaXQoL1xzKixccyovKTtyZXR1cm4gVihuLGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlcGxhY2UoL15bJyJdK3xbJyJdKyQvZywiIil9KX0sWVQ9ZnVuY3Rpb24odCl7dmFyIG47cmV0dXJuIDA9PT10LmluZGV4T2YoIi1hcHBsZS1zeXN0ZW0iKSYmKG49WFQodC50b0xvd2VyQ2FzZSgpKSxXKEdULGZ1bmN0aW9uKHQpe3JldHVybi0xPG4uaW5kZXhPZih0LnRvTG93ZXJDYXNlKCkpfSkpfSxxVD1mdW5jdGlvbihyKXt2YXIgaT1mdW5jdGlvbigpe3ZhciBlPWZ1bmN0aW9uKHQpe3JldHVybiB0P1hUKHQpWzBdOiIifSx0PXIucXVlcnlDb21tYW5kVmFsdWUoIkZvbnROYW1lIiksbj11LmRhdGEsbz10P3QudG9Mb3dlckNhc2UoKToiIjtyZXR1cm57bWF0Y2hPcHQ6TChuLGZ1bmN0aW9uKHQpe3ZhciBuPXQuZm9ybWF0O3JldHVybiBuLnRvTG93ZXJDYXNlKCk9PT1vfHxlKG4pLnRvTG93ZXJDYXNlKCk9PT1lKG8pLnRvTG93ZXJDYXNlKCl9KS5vclRodW5rKGZ1bmN0aW9uKCl7cmV0dXJuIFlUKG8pP3N0LmZyb20oe3RpdGxlOiJTeXN0ZW0gRm9udCIsZm9ybWF0Om99KTpzdC5ub25lKCl9KSxmb250OnR9fSxuPWZ1bmN0aW9uKHQpe3ZhciBuPWkoKSxlPW4ubWF0Y2hPcHQsbz1uLmZvbnQscj1lLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm4gb30sZnVuY3Rpb24odCl7cmV0dXJuIHQudGl0bGV9KTtqbyh0LFNrLHt0ZXh0OnJ9KX0sdD1zdC5zb21lKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBuKHQpfX0pLGU9c3Quc29tZShmdW5jdGlvbih0KXtyZXR1cm4gbih0KX0pLHU9alQociwiZm9udF9mb3JtYXRzIiwiQW5kYWxlIE1vbm89YW5kYWxlIG1vbm8sbW9ub3NwYWNlO0FyaWFsPWFyaWFsLGhlbHZldGljYSxzYW5zLXNlcmlmO0FyaWFsIEJsYWNrPWFyaWFsIGJsYWNrLHNhbnMtc2VyaWY7Qm9vayBBbnRpcXVhPWJvb2sgYW50aXF1YSxwYWxhdGlubyxzZXJpZjtDb21pYyBTYW5zIE1TPWNvbWljIHNhbnMgbXMsc2Fucy1zZXJpZjtDb3VyaWVyIE5ldz1jb3VyaWVyIG5ldyxjb3VyaWVyLG1vbm9zcGFjZTtHZW9yZ2lhPWdlb3JnaWEscGFsYXRpbm8sc2VyaWY7SGVsdmV0aWNhPWhlbHZldGljYSxhcmlhbCxzYW5zLXNlcmlmO0ltcGFjdD1pbXBhY3Qsc2Fucy1zZXJpZjtTeW1ib2w9c3ltYm9sO1RhaG9tYT10YWhvbWEsYXJpYWwsaGVsdmV0aWNhLHNhbnMtc2VyaWY7VGVybWluYWw9dGVybWluYWwsbW9uYWNvLG1vbm9zcGFjZTtUaW1lcyBOZXcgUm9tYW49dGltZXMgbmV3IHJvbWFuLHRpbWVzLHNlcmlmO1RyZWJ1Y2hldCBNUz10cmVidWNoZXQgbXMsZ2VuZXZhLHNhbnMtc2VyaWY7VmVyZGFuYT12ZXJkYW5hLGdlbmV2YSxzYW5zLXNlcmlmO1dlYmRpbmdzPXdlYmRpbmdzO1dpbmdkaW5ncz13aW5nZGluZ3MsemFwZiBkaW5nYmF0cyIsYkMuU2VtaUNvbG9uKTtyZXR1cm57dG9vbHRpcDoiRm9udHMiLGljb246c3Qubm9uZSgpLGlzU2VsZWN0ZWRGb3I6ZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiB0LmV4aXN0cyhmdW5jdGlvbih0KXtyZXR1cm4gdC5mb3JtYXQ9PT1ufSl9fSxnZXRDdXJyZW50VmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gaSgpLm1hdGNoT3B0fSxnZXRQcmV2aWV3Rm9yOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBzdC5zb21lKHt0YWc6ImRpdiIsc3R5bGVzOi0xPT09dC5pbmRleE9mKCJkaW5ncyIpP3siZm9udC1mYW1pbHkiOnR9Ont9fSl9fSxvbkFjdGlvbjpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyLnVuZG9NYW5hZ2VyLnRyYW5zYWN0KGZ1bmN0aW9uKCl7ci5mb2N1cygpLHIuZXhlY0NvbW1hbmQoIkZvbnROYW1lIiwhMSx0LmZvcm1hdCl9KX19LHNldEluaXRpYWxWYWx1ZTplLG5vZGVDaGFuZ2VIYW5kbGVyOnQsZGF0YXNldDp1LHNob3VsZEhpZGU6ITEsaXNJbnZhbGlkOmZ1bmN0aW9uKCl7cmV0dXJuITF9fX0sS1Q9eyI4cHQiOiIxIiwiMTBwdCI6IjIiLCIxMnB0IjoiMyIsIjE0cHQiOiI0IiwiMThwdCI6IjUiLCIyNHB0IjoiNiIsIjM2cHQiOiI3In0sSlQ9ZnVuY3Rpb24odCxuKXtyZXR1cm4vWzAtOS5dK3B4JC8udGVzdCh0KT8oZT03MipwYXJzZUludCh0LDEwKS85NixvPW58fDAscj1NYXRoLnBvdygxMCxvKSxNYXRoLnJvdW5kKGUqcikvcisicHQiKTp0O3ZhciBlLG8scn0sJFQ9ZnVuY3Rpb24oZSl7dmFyIGk9ZnVuY3Rpb24oKXt2YXIgbz1zdC5ub25lKCkscj11LmRhdGEsaT1lLnF1ZXJ5Q29tbWFuZFZhbHVlKCJGb250U2l6ZSIpO2lmKGkpZm9yKHZhciB0PWZ1bmN0aW9uKHQpe3ZhciBuPUpUKGksdCksZT1idChLVCxuKS5nZXRPcigiIik7bz1MKHIsZnVuY3Rpb24odCl7cmV0dXJuIHQuZm9ybWF0PT09aXx8dC5mb3JtYXQ9PT1ufHx0LmZvcm1hdD09PWV9KX0sbj0zO28uaXNOb25lKCkmJjA8PW47bi0tKXQobik7cmV0dXJue21hdGNoT3B0Om8sc2l6ZTppfX0sdD1hdChhdChzdC5ub25lKCkpKSxuPWZ1bmN0aW9uKHQpe3ZhciBuPWkoKSxlPW4ubWF0Y2hPcHQsbz1uLnNpemUscj1lLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm4gb30sZnVuY3Rpb24odCl7cmV0dXJuIHQudGl0bGV9KTtqbyh0LFNrLHt0ZXh0OnJ9KX0sbz1zdC5zb21lKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBuKHQpfX0pLHI9c3Quc29tZShmdW5jdGlvbih0KXtyZXR1cm4gbih0KX0pLHU9alQoZSwiZm9udHNpemVfZm9ybWF0cyIsIjhwdCAxMHB0IDEycHQgMTRwdCAxOHB0IDI0cHQgMzZwdCIsYkMuU3BhY2UpO3JldHVybnt0b29sdGlwOiJGb250IHNpemVzIixpY29uOnN0Lm5vbmUoKSxpc1NlbGVjdGVkRm9yOmZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gdC5leGlzdHMoZnVuY3Rpb24odCl7cmV0dXJuIHQuZm9ybWF0PT09bn0pfX0sZ2V0UHJldmlld0Zvcjp0LGdldEN1cnJlbnRWYWx1ZTpmdW5jdGlvbigpe3JldHVybiBpKCkubWF0Y2hPcHR9LG9uQWN0aW9uOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe2UudW5kb01hbmFnZXIudHJhbnNhY3QoZnVuY3Rpb24oKXtlLmZvY3VzKCksZS5leGVjQ29tbWFuZCgiRm9udFNpemUiLCExLHQuZm9ybWF0KX0pfX0sc2V0SW5pdGlhbFZhbHVlOnIsbm9kZUNoYW5nZUhhbmRsZXI6byxkYXRhc2V0OnUsc2hvdWxkSGlkZTohMSxpc0ludmFsaWQ6ZnVuY3Rpb24oKXtyZXR1cm4hMX19fSxRVD1mdW5jdGlvbihlLHQsbil7dmFyIG89dCgpO3JldHVybiBRKG4sZnVuY3Rpb24obil7cmV0dXJuIEwobyxmdW5jdGlvbih0KXtyZXR1cm4gZS5mb3JtYXR0ZXIubWF0Y2hOb2RlKG4sdC5mb3JtYXQpfSl9KS5vclRodW5rKGZ1bmN0aW9uKCl7cmV0dXJuIGUuZm9ybWF0dGVyLm1hdGNoKCJwIik/c3Quc29tZSh7dGl0bGU6IlBhcmFncmFwaCIsZm9ybWF0OiJwIn0pOnN0Lm5vbmUoKX0pfSxaVD1mdW5jdGlvbih0KXt2YXIgbj10LnNlbGVjdGlvbi5nZXRTdGFydCghMCl8fHQuZ2V0Qm9keSgpO3JldHVybiB0LmRvbS5nZXRQYXJlbnRzKG4sZnVuY3Rpb24oKXtyZXR1cm4hMH0sdC5nZXRCb2R5KCkpfSx0RT1mdW5jdGlvbihvLHIpe3JldHVybiBmdW5jdGlvbihuKXt2YXIgZT1jZShzdC5ub25lKCkpLHQ9ZnVuY3Rpb24oKXtuLnNldEFjdGl2ZShvLmZvcm1hdHRlci5tYXRjaChyKSk7dmFyIHQ9by5mb3JtYXR0ZXIuZm9ybWF0Q2hhbmdlZChyLG4uc2V0QWN0aXZlKS51bmJpbmQ7ZS5zZXQoc3Quc29tZSh0KSl9O3JldHVybiBvLmluaXRpYWxpemVkP3QoKTpvLm9uKCJpbml0Iix0KSxmdW5jdGlvbigpe3JldHVybiBlLmdldCgpLmVhY2goZnVuY3Rpb24odCl7cmV0dXJuIHQoKX0pfX19LG5FPWZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtuLnVuZG9NYW5hZ2VyLnRyYW5zYWN0KGZ1bmN0aW9uKCl7bi5mb2N1cygpLG4uZXhlY0NvbW1hbmQoIm1jZVRvZ2dsZUZvcm1hdCIsITEsdC5mb3JtYXQpfSl9fX0sZUU9ZnVuY3Rpb24obyl7dmFyIGU9ZnVuY3Rpb24odCxuKXt2YXIgZT1RVChvLGZ1bmN0aW9uKCl7cmV0dXJuIHIuZGF0YX0sdCkuZm9sZChmdW5jdGlvbigpe3JldHVybiJQYXJhZ3JhcGgifSxmdW5jdGlvbih0KXtyZXR1cm4gdC50aXRsZX0pO2pvKG4sU2sse3RleHQ6ZX0pfSx0PXN0LnNvbWUoZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlKHQucGFyZW50cyxuKX19KSxuPXN0LnNvbWUoZnVuY3Rpb24odCl7dmFyIG49WlQobyk7ZShuLHQpfSkscj1qVChvLCJibG9ja19mb3JtYXRzIiwiUGFyYWdyYXBoPXA7SGVhZGluZyAxPWgxO0hlYWRpbmcgMj1oMjtIZWFkaW5nIDM9aDM7SGVhZGluZyA0PWg0O0hlYWRpbmcgNT1oNTtIZWFkaW5nIDY9aDY7UHJlZm9ybWF0dGVkPXByZSIsYkMuU2VtaUNvbG9uKTtyZXR1cm57dG9vbHRpcDoiQmxvY2tzIixpY29uOnN0Lm5vbmUoKSxpc1NlbGVjdGVkRm9yOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBvLmZvcm1hdHRlci5tYXRjaCh0KX19LGdldEN1cnJlbnRWYWx1ZTphdChzdC5ub25lKCkpLGdldFByZXZpZXdGb3I6ZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9by5mb3JtYXR0ZXIuZ2V0KG4pO3JldHVybiBzdC5zb21lKHt0YWc6MDx0Lmxlbmd0aCYmKHRbMF0uaW5saW5lfHx0WzBdLmJsb2NrKXx8ImRpdiIsc3R5bGVzOm8uZG9tLnBhcnNlU3R5bGUoby5mb3JtYXR0ZXIuZ2V0Q3NzVGV4dChuKSl9KX19LG9uQWN0aW9uOm5FKG8pLHNldEluaXRpYWxWYWx1ZTpuLG5vZGVDaGFuZ2VIYW5kbGVyOnQsZGF0YXNldDpyLHNob3VsZEhpZGU6ITEsaXNJbnZhbGlkOmZ1bmN0aW9uKHQpe3JldHVybiFvLmZvcm1hdHRlci5jYW5BcHBseSh0LmZvcm1hdCl9fX0sb0U9ZnVuY3Rpb24oaSx0KXt2YXIgZT1mdW5jdGlvbih0LG4pe3ZhciBlPWZ1bmN0aW9uKHQpe3ZhciBuPXQuaXRlbXM7cmV0dXJuIG4hPT11bmRlZmluZWQmJjA8bi5sZW5ndGg/VShuLGUpOlt7dGl0bGU6dC50aXRsZSxmb3JtYXQ6dC5mb3JtYXR9XX0sbz1VKGFPKGkpLGUpLHI9UVQoaSxmdW5jdGlvbigpe3JldHVybiBvfSx0KS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIlBhcmFncmFwaCJ9LGZ1bmN0aW9uKHQpe3JldHVybiB0LnRpdGxlfSk7am8obixTayx7dGV4dDpyfSl9LG49c3Quc29tZShmdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUodC5wYXJlbnRzLG4pfX0pLG89c3Quc29tZShmdW5jdGlvbih0KXt2YXIgbj1aVChpKTtlKG4sdCl9KTtyZXR1cm57dG9vbHRpcDoiRm9ybWF0cyIsaWNvbjpzdC5ub25lKCksaXNTZWxlY3RlZEZvcjpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gaS5mb3JtYXR0ZXIubWF0Y2godCl9fSxnZXRDdXJyZW50VmFsdWU6YXQoc3Qubm9uZSgpKSxnZXRQcmV2aWV3Rm9yOmZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PWkuZm9ybWF0dGVyLmdldChuKTtyZXR1cm4gdCE9PXVuZGVmaW5lZD9zdC5zb21lKHt0YWc6MDx0Lmxlbmd0aCYmKHRbMF0uaW5saW5lfHx0WzBdLmJsb2NrKXx8ImRpdiIsc3R5bGVzOmkuZG9tLnBhcnNlU3R5bGUoaS5mb3JtYXR0ZXIuZ2V0Q3NzVGV4dChuKSl9KTpzdC5ub25lKCl9fSxvbkFjdGlvbjpuRShpKSxzZXRJbml0aWFsVmFsdWU6byxub2RlQ2hhbmdlSGFuZGxlcjpuLHNob3VsZEhpZGU6aS5nZXRQYXJhbSgic3R5bGVfZm9ybWF0c19hdXRvaGlkZSIsITEsImJvb2xlYW4iKSxpc0ludmFsaWQ6ZnVuY3Rpb24odCl7cmV0dXJuIWkuZm9ybWF0dGVyLmNhbkFwcGx5KHQuZm9ybWF0KX0sZGF0YXNldDp0fX0sckU9W3tuYW1lOiJoaXN0b3J5IixpdGVtczpbInVuZG8iLCJyZWRvIl19LHtuYW1lOiJzdHlsZXMiLGl0ZW1zOlsic3R5bGVzZWxlY3QiXX0se25hbWU6ImZvcm1hdHRpbmciLGl0ZW1zOlsiYm9sZCIsIml0YWxpYyJdfSx7bmFtZToiYWxpZ25tZW50IixpdGVtczpbImFsaWdubGVmdCIsImFsaWduY2VudGVyIiwiYWxpZ25yaWdodCIsImFsaWduanVzdGlmeSJdfSx7bmFtZToiaW5kZW50YXRpb24iLGl0ZW1zOlsib3V0ZGVudCIsImluZGVudCJdfSx7bmFtZToicGVybWFuZW50IHBlbiIsaXRlbXM6WyJwZXJtYW5lbnRwZW4iXX0se25hbWU6ImNvbW1lbnRzIixpdGVtczpbImFkZGNvbW1lbnQiXX1dLGlFPWZ1bmN0aW9uKHIsaSl7cmV0dXJuIGZ1bmN0aW9uKHQsbixlKXt2YXIgbz1yKHQpLm1hcEVycm9yKGZ1bmN0aW9uKHQpe3JldHVybiBUbih0KX0pLmdldE9yRGllKCk7cmV0dXJuIGkobyxuLGUpfX0sdUU9e2J1dHRvbjppRShMXyxmdW5jdGlvbih0LG4pe3JldHVybiBlPXQsbz1uLmJhY2tzdGFnZS5zaGFyZWQucHJvdmlkZXJzLFNUKGUsbyxbXSk7dmFyIGUsb30pLHRvZ2dsZWJ1dHRvbjppRShxXyxmdW5jdGlvbih0LG4pe3JldHVybiBlPXQsbz1uLmJhY2tzdGFnZS5zaGFyZWQucHJvdmlkZXJzLGtUKGUsbyxbXSk7dmFyIGUsb30pLG1lbnVidXR0b246aUUoV18sZnVuY3Rpb24odCxuKXtyZXR1cm4gQWsodCwidG94LXRidG4iLG4uYmFja3N0YWdlLHN0Lm5vbmUoKSl9KSxzcGxpdGJ1dHRvbjppRShmdW5jdGlvbih0KXtyZXR1cm4gQ24oIlNwbGl0QnV0dG9uIixHXyx0KX0sZnVuY3Rpb24odCxuKXtyZXR1cm4gQ1QodCxuLmJhY2tzdGFnZS5zaGFyZWQpfSksZ3JvdXB0b29sYmFyYnV0dG9uOmlFKGZ1bmN0aW9uKHQpe3JldHVybiBDbigiR3JvdXBUb29sYmFyQnV0dG9uIixLXyx0KX0sZnVuY3Rpb24odCxuLGUpe3ZhciBvLHIsaSx1LGEsYyxzPWUudWkucmVnaXN0cnkuZ2V0QWxsKCkuYnV0dG9ucyxsPSgobz17fSlbT2NdPW4uYmFja3N0YWdlLnNoYXJlZC5oZWFkZXIuaXNQb3NpdGlvbmVkQXRUb3AoKT9IdS5Ub3BUb0JvdHRvbTpIdS5Cb3R0b21Ub1RvcCxvKTtzd2l0Y2goRGgoZSkpe2Nhc2UgS2cuZmxvYXRpbmc6cmV0dXJuIHI9dCxpPW4uYmFja3N0YWdlLHU9ZnVuY3Rpb24odCl7cmV0dXJuIGxFKGUse2J1dHRvbnM6cyx0b29sYmFyOnQsYWxsb3dUb29sYmFyR3JvdXBzOiExfSxuLHN0Lm5vbmUoKSl9LGE9bCxjPWkuc2hhcmVkLGFfLnNrZXRjaCh7bGF6eVNpbms6Yy5nZXRTaW5rLGZldGNoOmZ1bmN0aW9uKCl7cmV0dXJuIGh5KGZ1bmN0aW9uKHQpe3QoVih1KHIuaXRlbXMpLEZfKSl9KX0sbWFya2Vyczp7dG9nZ2xlZENsYXNzOiJ0b3gtdGJ0bi0tZW5hYmxlZCJ9LHBhcnRzOntidXR0b246eFQoci5pY29uLHIudGV4dCxyLnRvb2x0aXAsc3Qubm9uZSgpLHN0Lm5vbmUoKSxjLnByb3ZpZGVycyksdG9vbGJhcjp7ZG9tOnt0YWc6ImRpdiIsY2xhc3NlczpbInRveC10b29sYmFyX19vdmVyZmxvdyJdLGF0dHJpYnV0ZXM6YX19fX0pO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJUb29sYmFyIGdyb3VwcyBhcmUgb25seSBzdXBwb3J0ZWQgd2hlbiB1c2luZyBmbG9hdGluZyB0b29sYmFyIG1vZGUiKX19KSxzdHlsZVNlbGVjdEJ1dHRvbjpmdW5jdGlvbih0LG4pe3JldHVybiBlPXQsbz1uLmJhY2tzdGFnZSxyPWV0KHt0eXBlOiJhZHZhbmNlZCJ9LG8uc3R5bGVzZWxlY3QpLHpUKGUsbyxvRShlLHIpKTt2YXIgZSxvLHJ9LGZvbnRzaXplU2VsZWN0QnV0dG9uOmZ1bmN0aW9uKHQsbil7cmV0dXJuIGU9dCxvPW4uYmFja3N0YWdlLHpUKGUsbywkVChlKSk7dmFyIGUsb30sZm9udFNlbGVjdEJ1dHRvbjpmdW5jdGlvbih0LG4pe3JldHVybiBlPXQsbz1uLmJhY2tzdGFnZSx6VChlLG8scVQoZSkpO3ZhciBlLG99LGZvcm1hdEJ1dHRvbjpmdW5jdGlvbih0LG4pe3JldHVybiBlPXQsbz1uLmJhY2tzdGFnZSx6VChlLG8sZUUoZSkpO3ZhciBlLG99LGFsaWduTWVudUJ1dHRvbjpmdW5jdGlvbih0LG4pe3JldHVybiBlPXQsbz1uLmJhY2tzdGFnZSx6VChlLG8sV1QoZSkpO3ZhciBlLG99fSxhRT17c3R5bGVzZWxlY3Q6dUUuc3R5bGVTZWxlY3RCdXR0b24sZm9udHNpemVzZWxlY3Q6dUUuZm9udHNpemVTZWxlY3RCdXR0b24sZm9udHNlbGVjdDp1RS5mb250U2VsZWN0QnV0dG9uLGZvcm1hdHNlbGVjdDp1RS5mb3JtYXRCdXR0b24sYWxpZ246dUUuYWxpZ25NZW51QnV0dG9ufSxjRT1mdW5jdGlvbih0KXt2YXIgbixlLG8scj10LnRvb2xiYXIsaT10LmJ1dHRvbnM7cmV0dXJuITE9PT1yP1tdOnI9PT11bmRlZmluZWR8fCEwPT09cj8oZT1pLG89VihyRSxmdW5jdGlvbih0KXt2YXIgbj1QKHQuaXRlbXMsZnVuY3Rpb24odCl7cmV0dXJuIHl0KGUsdCl8fHl0KGFFLHQpfSk7cmV0dXJue25hbWU6dC5uYW1lLGl0ZW1zOm59fSksUChvLGZ1bmN0aW9uKHQpe3JldHVybiAwPHQuaXRlbXMubGVuZ3RofSkpOlMocik/KG49ci5zcGxpdCgifCIpLFYobixmdW5jdGlvbih0KXtyZXR1cm57aXRlbXM6dC50cmltKCkuc3BsaXQoIiAiKX19KSk6RShyLGZ1bmN0aW9uKHQpe3JldHVybiB5dCh0LCJuYW1lIikmJnl0KHQsIml0ZW1zIil9KT9yOihudC5jb25zb2xlLmVycm9yKCJUb29sYmFyIHR5cGUgc2hvdWxkIGJlIHN0cmluZywgc3RyaW5nW10sIGJvb2xlYW4gb3IgVG9vbGJhckdyb3VwW10iKSxbXSl9LHNFPWZ1bmN0aW9uKHIsbixpLHUsYSx0KXtyZXR1cm4gYnQobixpLnRvTG93ZXJDYXNlKCkpLm9yVGh1bmsoZnVuY3Rpb24oKXtyZXR1cm4gdC5iaW5kKGZ1bmN0aW9uKHQpe3JldHVybiBRKHQsZnVuY3Rpb24odCl7cmV0dXJuIGJ0KG4sdCtpLnRvTG93ZXJDYXNlKCkpfSl9KX0pLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm4gYnQoYUUsaS50b0xvd2VyQ2FzZSgpKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQocixhKX0pLm9yVGh1bmsoZnVuY3Rpb24oKXtyZXR1cm4gc3Qubm9uZSgpfSl9LGZ1bmN0aW9uKHQpe3JldHVybiJncm91cHRvb2xiYXJidXR0b24iIT09dC50eXBlfHx1PyhlPWEsbz1yLGJ0KHVFLChuPXQpLnR5cGUpLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm4gbnQuY29uc29sZS5lcnJvcigic2tpcHBpbmcgYnV0dG9uIGRlZmluZWQgYnkiLG4pLHN0Lm5vbmUoKX0sZnVuY3Rpb24odCl7cmV0dXJuIHN0LnNvbWUodChuLGUsbykpfSkpOihudC5jb25zb2xlLndhcm4oIklnbm9yaW5nIHRoZSAnIitpKyInIHRvb2xiYXIgYnV0dG9uLiBHcm91cCB0b29sYmFyIGJ1dHRvbnMgYXJlIG9ubHkgc3VwcG9ydGVkIHdoZW4gdXNpbmcgZmxvYXRpbmcgdG9vbGJhciBtb2RlIGFuZCBjYW5ub3QgYmUgbmVzdGVkLiIpLHN0Lm5vbmUoKSk7dmFyIG4sZSxvfSl9LGxFPWZ1bmN0aW9uKGUsbyxyLGkpe3ZhciB0PWNFKG8pLG49Vih0LGZ1bmN0aW9uKHQpe3ZhciBuPVUodC5pdGVtcyxmdW5jdGlvbih0KXtyZXR1cm4gMD09PXQudHJpbSgpLmxlbmd0aD9bXTpzRShlLG8uYnV0dG9ucyx0LG8uYWxsb3dUb29sYmFyR3JvdXBzLHIsaSkudG9BcnJheSgpfSk7cmV0dXJue3RpdGxlOnN0LmZyb20oZS50cmFuc2xhdGUodC5uYW1lKSksaXRlbXM6bn19KTtyZXR1cm4gUChuLGZ1bmN0aW9uKHQpe3JldHVybiAwPHQuaXRlbXMubGVuZ3RofSl9LGZFPXt2YWxpZ25DZW50cmU6W10sYWxpZ25DZW50cmU6W10sYWxpZ25MZWZ0OlsidG94LXBvcC0tYWxpZ24tbGVmdCJdLGFsaWduUmlnaHQ6WyJ0b3gtcG9wLS1hbGlnbi1yaWdodCJdLHJpZ2h0OlsidG94LXBvcC0tcmlnaHQiXSxsZWZ0OlsidG94LXBvcC0tbGVmdCJdLGJvdHRvbTpbInRveC1wb3AtLWJvdHRvbSJdLHRvcDpbInRveC1wb3AtLXRvcCJdfSxkRT17bWF4SGVpZ2h0RnVuY3Rpb246aGMoKSxtYXhXaWR0aEZ1bmN0aW9uOnpPKCl9LG1FPXtvbkx0cjpmdW5jdGlvbigpe3JldHVybltPYSxfYSxrYSx3YSxDYSxTYSx6ZyxOZyxIZyxSZyxQZyxWZ119LG9uUnRsOmZ1bmN0aW9uKCl7cmV0dXJuW09hLF9hLENhLFNhLGthLHdhLHpnLE5nLFBnLFZnLEhnLFJnXX19LGdFPXtvbkx0cjpmdW5jdGlvbigpe3JldHVybltfYSx3YSxTYSxrYSxDYSxPYSx6ZyxOZyxIZyxSZyxQZyxWZ119LG9uUnRsOmZ1bmN0aW9uKCl7cmV0dXJuW19hLFNhLHdhLENhLGthLE9hLHpnLE5nLFBnLFZnLEhnLFJnXX19LHBFPWZ1bmN0aW9uKGMsdCxlLHMpe3ZhciBvLHIsbD1QZSgpLmRldmljZVR5cGUuaXNUb3VjaCxhPUppKChvPXtzaW5rOmUsb25Fc2NhcGU6ZnVuY3Rpb24oKXtyZXR1cm4gYy5mb2N1cygpLHN0LnNvbWUoITApfX0scj1jZShbXSksQmcuc2tldGNoKHtkb206e3RhZzoiZGl2IixjbGFzc2VzOlsidG94LXBvcCJdfSxmaXJlRGlzbWlzc2FsRXZlbnRJbnN0ZWFkOntldmVudDoiZG9Ob3REaXNtaXNzWWV0In0sb25TaG93OmZ1bmN0aW9uKHQpe3Iuc2V0KFtdKSxCZy5nZXRDb250ZW50KHQpLmVhY2goZnVuY3Rpb24odCl7SGkodC5lbGVtZW50KCksInZpc2liaWxpdHkiKX0pLHhpKHQuZWxlbWVudCgpLEhUKSxIaSh0LmVsZW1lbnQoKSwid2lkdGgiKX0saW5saW5lQmVoYXZpb3Vyczp6YShbTG0oImNvbnRleHQtdG9vbGJhci1ldmVudHMiLFtlcihtbygpLGZ1bmN0aW9uKHQsbil7eGkodC5lbGVtZW50KCksSFQpLEhpKHQuZWxlbWVudCgpLCJ3aWR0aCIpfSksSm8oVlQsZnVuY3Rpb24obixlKXtIaShuLmVsZW1lbnQoKSwid2lkdGgiKTt2YXIgdD1jdShuLmVsZW1lbnQoKSk7Qmcuc2V0Q29udGVudChuLGUuZXZlbnQoKS5jb250ZW50cygpKSxiaShuLmVsZW1lbnQoKSxIVCk7dmFyIG89Y3Uobi5lbGVtZW50KCkpO0RpKG4uZWxlbWVudCgpLCJ3aWR0aCIsdCsicHgiKSxCZy5nZXRDb250ZW50KG4pLmVhY2goZnVuY3Rpb24odCl7ZS5ldmVudCgpLmZvY3VzKCkuYmluZChmdW5jdGlvbih0KXtyZXR1cm4gS2EodCksJGEobi5lbGVtZW50KCkpfSkub3JUaHVuayhmdW5jdGlvbigpe3JldHVybiBSbS5mb2N1c0luKHQpLEphKCl9KX0pLExnLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtEaShuLmVsZW1lbnQoKSwid2lkdGgiLG8rInB4Iil9LDApfSksSm8oSVQsZnVuY3Rpb24odCxuKXtCZy5nZXRDb250ZW50KHQpLmVhY2goZnVuY3Rpb24odCl7ci5zZXQoci5nZXQoKS5jb25jYXQoW3tiYXI6dCxmb2N1czpKYSgpfV0pKX0pLGpvKHQsVlQse2NvbnRlbnRzOm4uZXZlbnQoKS5mb3J3YXJkQ29udGVudHMoKSxmb2N1czpzdC5ub25lKCl9KX0pLEpvKFJULGZ1bmN0aW9uKG4sdCl7SihyLmdldCgpKS5lYWNoKGZ1bmN0aW9uKHQpe3Iuc2V0KHIuZ2V0KCkuc2xpY2UoMCxyLmdldCgpLmxlbmd0aC0xKSksam8obixWVCx7Y29udGVudHM6JGkodC5iYXIpLGZvY3VzOnQuZm9jdXN9KX0pfSldKSxSbS5jb25maWcoe21vZGU6InNwZWNpYWwiLG9uRXNjYXBlOmZ1bmN0aW9uKG4pe3JldHVybiBKKHIuZ2V0KCkpLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm4gby5vbkVzY2FwZSgpfSxmdW5jdGlvbih0KXtyZXR1cm4gTG8obixSVCksc3Quc29tZSghMCl9KX19KV0pLGxhenlTaW5rOmZ1bmN0aW9uKCl7cmV0dXJuIG90LnZhbHVlKG8uc2luayl9fSkpKSxmPWZ1bmN0aW9uKCl7cmV0dXJuIEJUKGMscy5iYWNrc3RhZ2Uuc2hhcmVkKX0sdT1mdW5jdGlvbigpe2lmKGwoKSYmcy5iYWNrc3RhZ2UuaXNDb250ZXh0TWVudU9wZW4oKSlyZXR1cm4hMDt2YXIgdCxuLGUsbyxyLGksdT0odD1tLmdldCgpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX0pLmdldE9yVGh1bmsoZnVuY3Rpb24oKXtyZXR1cm4gYy5zZWxlY3Rpb24uZ2V0Um5nKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9KSxuPWMuaW5saW5lP211KCkudG9wKCk6U3UobGUuZnJvbURvbShjLmdldEJvZHkoKSkpLnkse3k6dC50b3Arbixib3R0b206dC5ib3R0b20rbn0pLGE9ZigpO3JldHVybiBlPXUueSxvPXUuYm90dG9tLHI9YS55LGk9YS5ib3R0b20sIShNYXRoLm1heChlLHIpPD1NYXRoLm1pbihvLGkpKX0sbj1mdW5jdGlvbigpe0JnLmhpZGUoYSl9LGk9ZnVuY3Rpb24oKXtkLmdldCgpLmVhY2goZnVuY3Rpb24odCl7dmFyIG49YS5lbGVtZW50KCk7SGkobiwiZGlzcGxheSIpLHUoKT9EaShuLCJkaXNwbGF5Iiwibm9uZSIpOkRzLnBvc2l0aW9uV2l0aGluQm91bmRzKGUsdCxhLHN0LnNvbWUoZigpKSl9KX0sZD1jZShzdC5ub25lKCkpLG09Y2Uoc3Qubm9uZSgpKSxnPWNlKG51bGwpLHA9ZnVuY3Rpb24odCl7cmV0dXJue2RvbTp7dGFnOiJkaXYiLGNsYXNzZXM6WyJ0b3gtcG9wX19kaWFsb2ciXX0sY29tcG9uZW50czpbdF0sYmVoYXZpb3Vyczp6YShbUm0uY29uZmlnKHttb2RlOiJhY3ljbGljIn0pLExtKCJwb3AtZGlhbG9nLXdyYXAtZXZlbnRzIixbb3IoZnVuY3Rpb24odCl7Yy5zaG9ydGN1dHMuYWRkKCJjdHJsK0Y5IiwiZm9jdXMgc3RhdHVzYmFyIixmdW5jdGlvbigpe3JldHVybiBSbS5mb2N1c0luKHQpfSl9KSxycihmdW5jdGlvbih0KXtjLnNob3J0Y3V0cy5yZW1vdmUoImN0cmwrRjkiKX0pXSldKX19LGg9X3QoZnVuY3Rpb24oKXtyZXR1cm4gRlQodCxmdW5jdGlvbih0KXt2YXIgbj12KFt0XSk7am8oYSxJVCx7Zm9yd2FyZENvbnRlbnRzOnAobil9KX0pfSksdj1mdW5jdGlvbih0KXt2YXIgbj1jLnVpLnJlZ2lzdHJ5LmdldEFsbCgpLmJ1dHRvbnMsZT1oKCksbz1ldChldCh7fSxuKSxlLmZvcm1OYXZpZ2F0b3JzKSxyPURoKGMpPT09S2cuc2Nyb2xsaW5nP0tnLnNjcm9sbGluZzpLZ1siZGVmYXVsdCJdLGk9dXQoVih0LGZ1bmN0aW9uKHQpe3JldHVybiJjb250ZXh0dG9vbGJhciI9PT10LnR5cGU/bEUoYyx7YnV0dG9uczpvLHRvb2xiYXI6dC5pdGVtcyxhbGxvd1Rvb2xiYXJHcm91cHM6ITF9LHMsc3Quc29tZShbImZvcm06Il0pKToobj10LGU9cy5iYWNrc3RhZ2Uuc2hhcmVkLnByb3ZpZGVycyxFVChuLGUpKTt2YXIgbixlfSkpO3JldHVybiBQXyh7dHlwZTpyLHVpZDpOcigiY29udGV4dC10b29sYmFyIiksaW5pdEdyb3VwczppLG9uRXNjYXBlOnN0Lm5vbmUsY3ljbGljS2V5aW5nOiEwLHByb3ZpZGVyczpzLmJhY2tzdGFnZS5zaGFyZWQucHJvdmlkZXJzfSl9O2Mub24oImNvbnRleHR0b29sYmFyLXNob3ciLGZ1bmN0aW9uKG4pe3ZhciB0PWgoKTtidCh0Lmxvb2t1cFRhYmxlLG4udG9vbGJhcktleSkuZWFjaChmdW5jdGlvbih0KXt5KFt0XSxuLnRhcmdldD09PWM/c3Qubm9uZSgpOnN0LnNvbWUobikpLEJnLmdldENvbnRlbnQoYSkuZWFjaChSbS5mb2N1c0luKX0pfSk7dmFyIGI9ZnVuY3Rpb24odCxuKXt2YXIgZSxvLHI9Im5vZGUiPT09dD9zLmJhY2tzdGFnZS5zaGFyZWQuYW5jaG9ycy5ub2RlKG4pOnMuYmFja3N0YWdlLnNoYXJlZC5hbmNob3JzLmN1cnNvcigpO3JldHVybiBDdChyLChlPXQsbz1sKCksImxpbmUiPT09ZT97YnViYmxlOndjKDEyLDAsZkUpLGxheW91dHM6e29uTHRyOmZ1bmN0aW9uKCl7cmV0dXJuW1RhXX0sb25SdGw6ZnVuY3Rpb24oKXtyZXR1cm5bRWFdfX0sb3ZlcnJpZGVzOmRFfTp7YnViYmxlOndjKDAsMTIsZkUpLGxheW91dHM6bz9nRTptRSxvdmVycmlkZXM6ZEV9KSl9LHk9ZnVuY3Rpb24odCxuKXtpZih3KCksIWwoKXx8IXMuYmFja3N0YWdlLmlzQ29udGV4dE1lbnVPcGVuKCkpe3ZhciBlPXYodCksbz1uLm1hcChsZS5mcm9tRG9tKSxyPWIodFswXS5wb3NpdGlvbixvKTtkLnNldChzdC5zb21lKHIpKSxtLnNldChuKTt2YXIgaT1hLmVsZW1lbnQoKTtIaShpLCJkaXNwbGF5IiksQmcuc2hvd1dpdGhpbkJvdW5kcyhhLHIscChlKSxmdW5jdGlvbigpe3JldHVybiBzdC5zb21lKGYoKSl9KSx1KCkmJkRpKGksImRpc3BsYXkiLCJub25lIil9fSx4PWZ1bmN0aW9uKCl7aWYoYy5oYXNGb2N1cygpKXt2YXIgdCxuLGUsbyxyLGksdT1oKCk7dD11LG49YyxvPWxlLmZyb21Eb20obi5nZXRCb2R5KCkpLHI9ZnVuY3Rpb24odCl7cmV0dXJuIExlKHQsbyl9LGk9bGUuZnJvbURvbShuLnNlbGVjdGlvbi5nZXROb2RlKCkpLChyKGU9aSl8fFVlKG8sZSk/TVQoaSx0LmluTm9kZVNjb3BlLHQuaW5FZGl0b3JTY29wZSkub3JUaHVuayhmdW5jdGlvbigpe3JldHVybiBBVChyLGksdCl9KTpzdC5ub25lKCkpLmZvbGQoZnVuY3Rpb24oKXtkLnNldChzdC5ub25lKCkpLEJnLmhpZGUoYSl9LGZ1bmN0aW9uKHQpe3kodC50b29sYmFycyxzdC5zb21lKHQuZWxlbS5kb20oKSkpfSl9fSx3PWZ1bmN0aW9uKCl7dmFyIHQ9Zy5nZXQoKTtudWxsIT09dCYmKExnLmNsZWFyVGltZW91dCh0KSxnLnNldChudWxsKSl9LFM9ZnVuY3Rpb24odCl7dygpLGcuc2V0KHQpfTtjLm9uKCJpbml0IixmdW5jdGlvbigpe2Mub24oTk8sbiksYy5vbigiU2Nyb2xsQ29udGVudCBTY3JvbGxXaW5kb3cgbG9uZ3ByZXNzIixpKSxjLm9uKCJjbGljayBrZXl1cCBmb2N1cyBTZXRDb250ZW50IE9iamVjdFJlc2l6ZWQgUmVzaXplRWRpdG9yIixmdW5jdGlvbigpe1MoTGcuc2V0RWRpdG9yVGltZW91dChjLHgsMCkpfSksYy5vbigiZm9jdXNvdXQiLGZ1bmN0aW9uKHQpe0xnLnNldEVkaXRvclRpbWVvdXQoYyxmdW5jdGlvbigpeyRhKGUuZWxlbWVudCgpKS5pc05vbmUoKSYmJGEoYS5lbGVtZW50KCkpLmlzTm9uZSgpJiYoZC5zZXQoc3Qubm9uZSgpKSxCZy5oaWRlKGEpKX0sMCl9KSxjLm9uKCJTd2l0Y2hNb2RlIixmdW5jdGlvbigpe2MubW9kZS5pc1JlYWRPbmx5KCkmJihkLnNldChzdC5ub25lKCkpLEJnLmhpZGUoYSkpfSksYy5vbigiTm9kZUNoYW5nZSIsZnVuY3Rpb24odCl7JGEoYS5lbGVtZW50KCkpLmZvbGQoZnVuY3Rpb24oKXtTKExnLnNldEVkaXRvclRpbWVvdXQoYyx4LDApKX0sZnVuY3Rpb24odCl7fSl9KX0pfSxoRT12Zix2RT1abCxiRT1hdChbWm4oInNoZWxsIiwhMSksem4oIm1ha2VJdGVtIiksWm4oInNldHVwSXRlbSIsWiksU2woImxpc3RCZWhhdmlvdXJzIixbTm1dKV0pLHlFPUpsKHtuYW1lOiJpdGVtcyIsb3ZlcnJpZGVzOmZ1bmN0aW9uKCl7cmV0dXJue2JlaGF2aW91cnM6emEoW05tLmNvbmZpZyh7fSldKX19fSkseEU9YXQoW3lFXSksd0U9X2Yoe25hbWU6YXQoIkN1c3RvbUxpc3QiKSgpLGNvbmZpZ0ZpZWxkczpiRSgpLHBhcnRGaWVsZHM6eEUoKSxmYWN0b3J5OmZ1bmN0aW9uKHMsdCxuLGUpe3ZhciBvPXMuc2hlbGw/e2JlaGF2aW91cnM6W05tLmNvbmZpZyh7fSldLGNvbXBvbmVudHM6W119OntiZWhhdmlvdXJzOltdLGNvbXBvbmVudHM6dH0scj1mdW5jdGlvbih0KXtyZXR1cm4gcy5zaGVsbD9zdC5zb21lKHQpOnNmKHQscywiaXRlbXMiKX07cmV0dXJue3VpZDpzLnVpZCxkb206cy5kb20sY29tcG9uZW50czpvLmNvbXBvbmVudHMsYmVoYXZpb3Vyczp3bChzLmxpc3RCZWhhdmlvdXJzLG8uYmVoYXZpb3VycyksYXBpczp7c2V0SXRlbXM6ZnVuY3Rpb24oYSxjKXtyKGEpLmZvbGQoZnVuY3Rpb24oKXt0aHJvdyBudC5jb25zb2xlLmVycm9yKCJDdXN0b20gTGlzdCB3YXMgZGVmaW5lZCB0byBub3QgYmUgYSBzaGVsbCwgYnV0IG5vIGl0ZW0gY29udGFpbmVyIHdhcyBzcGVjaWZpZWQgaW4gY29tcG9uZW50cyIpLG5ldyBFcnJvcigiQ3VzdG9tIExpc3Qgd2FzIGRlZmluZWQgdG8gbm90IGJlIGEgc2hlbGwsIGJ1dCBubyBpdGVtIGNvbnRhaW5lciB3YXMgc3BlY2lmaWVkIGluIGNvbXBvbmVudHMiKX0sZnVuY3Rpb24obil7dmFyIHQ9Tm0uY29udGVudHMobiksZT1jLmxlbmd0aCxvPWUtdC5sZW5ndGgscj0wPG8/ZnVuY3Rpb24odCxuKXtmb3IodmFyIGU9W10sbz0wO288dDtvKyspZS5wdXNoKG4obykpO3JldHVybiBlfShvLGZ1bmN0aW9uKCl7cmV0dXJuIHMubWFrZUl0ZW0oKX0pOltdLGk9dC5zbGljZShlKTtpdChpLGZ1bmN0aW9uKHQpe3JldHVybiBObS5yZW1vdmUobix0KX0pLGl0KHIsZnVuY3Rpb24odCl7cmV0dXJuIE5tLmFwcGVuZChuLHQpfSk7dmFyIHU9Tm0uY29udGVudHMobik7aXQodSxmdW5jdGlvbih0LG4pe3Muc2V0dXBJdGVtKGEsdCxjW25dLG4pfSl9KX19fX0sYXBpczp7c2V0SXRlbXM6ZnVuY3Rpb24odCxuLGUpe3Quc2V0SXRlbXMobixlKX19fSksU0U9ZnVuY3Rpb24odCl7cmV0dXJuKFJpKHQsInBvc2l0aW9uIikuaXMoImZpeGVkIik/c3Qubm9uZSgpOmZyKHQpKS5vclRodW5rKGZ1bmN0aW9uKCl7dmFyIGU9bGUuZnJvbVRhZygic3BhbiIpO3JldHVybiBscih0KS5iaW5kKGZ1bmN0aW9uKHQpe3ZyKHQsZSk7dmFyIG49ZnIoZSk7cmV0dXJuIHhyKGUpLG59KX0pfSxrRT1mdW5jdGlvbih0KXtyZXR1cm4gU0UodCkubWFwKGl1KS5nZXRPclRodW5rKGZ1bmN0aW9uKCl7cmV0dXJuIG91KDAsMCl9KX0sQ0U9d3QoW3sic3RhdGljIjpbXX0se2Fic29sdXRlOlsicG9zaXRpb25Dc3MiXX0se2ZpeGVkOlsicG9zaXRpb25Dc3MiXX1dKSxPRT1mdW5jdGlvbih0LG4pe3ZhciBlPXQuZWxlbWVudCgpO2JpKGUsbi50cmFuc2l0aW9uQ2xhc3MpLHhpKGUsbi5mYWRlT3V0Q2xhc3MpLGJpKGUsbi5mYWRlSW5DbGFzcyksbi5vblNob3codCl9LF9FPWZ1bmN0aW9uKHQsbil7dmFyIGU9dC5lbGVtZW50KCk7YmkoZSxuLnRyYW5zaXRpb25DbGFzcykseGkoZSxuLmZhZGVJbkNsYXNzKSxiaShlLG4uZmFkZU91dENsYXNzKSxuLm9uSGlkZSh0KX0sVEU9ZnVuY3Rpb24odCxvLHIpe3JldHVybiBXKHQsZnVuY3Rpb24odCl7c3dpdGNoKHQpe2Nhc2UiYm90dG9tIjpyZXR1cm4gZT1yLG8uYm90dG9tPD1lLmJvdHRvbTtjYXNlInRvcCI6cmV0dXJuIG49cixvLnk+PW4ueX12YXIgbixlfSl9LEVFPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIHQuZ2V0SW5pdGlhbFBvc2l0aW9uKCkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB4dSh0LmJvdW5kcy54LHQuYm91bmRzLnksY3UobiksdHUobikpfSl9LEJFPWZ1bmN0aW9uKHQsbixlKXtlLnNldEluaXRpYWxQb3NpdGlvbihzdC5zb21lKHtzdHlsZTpmdW5jdGlvbih0KXt2YXIgbj17fSxlPXQuZG9tKCk7aWYoQ2koZSkpZm9yKHZhciBvPTA7bzxlLnN0eWxlLmxlbmd0aDtvKyspe3ZhciByPWUuc3R5bGUuaXRlbShvKTtuW3JdPWUuc3R5bGVbcl19cmV0dXJuIG59KHQpLHBvc2l0aW9uOkZpKHQsInBvc2l0aW9uIil8fCJzdGF0aWMiLGJvdW5kczpufSkpfSxERT1mdW5jdGlvbihlLG8scil7cmV0dXJuIHIuZ2V0SW5pdGlhbFBvc2l0aW9uKCkuYmluZChmdW5jdGlvbih0KXtzd2l0Y2goci5zZXRJbml0aWFsUG9zaXRpb24oc3Qubm9uZSgpKSx0LnBvc2l0aW9uKXtjYXNlInN0YXRpYyI6cmV0dXJuIHN0LnNvbWUoQ0VbInN0YXRpYyJdKCkpO2Nhc2UiYWJzb2x1dGUiOnZhciBuPVNFKGUpLm1hcCh3dSkuZ2V0T3JUaHVuayhmdW5jdGlvbigpe3JldHVybiB3dShfaSgpKX0pO3JldHVybiBzdC5zb21lKENFLmFic29sdXRlKFphKCJhYnNvbHV0ZSIsYnQodC5zdHlsZSwibGVmdCIpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gby54LW4ueH0pLGJ0KHQuc3R5bGUsInRvcCIpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gby55LW4ueX0pLGJ0KHQuc3R5bGUsInJpZ2h0IikubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBuLnJpZ2h0LW8ucmlnaHR9KSxidCh0LnN0eWxlLCJib3R0b20iKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIG4uYm90dG9tLW8uYm90dG9tfSkpKSk7ZGVmYXVsdDpyZXR1cm4gc3Qubm9uZSgpfX0pfSxNRT1mdW5jdGlvbih0LG4sZSl7dmFyIG8scixpLHU9dC5lbGVtZW50KCk7cmV0dXJuIFJpKHUsInBvc2l0aW9uIikuaXMoImZpeGVkIik/KHI9bixFRShvPXUsaT1lKS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIFRFKGkuZ2V0TW9kZXMoKSx0LHIpfSkuYmluZChmdW5jdGlvbih0KXtyZXR1cm4gREUobyx0LGkpfSkpOmZ1bmN0aW9uKHQsbixlKXt2YXIgbz13dSh0KTtpZihURShlLmdldE1vZGVzKCksbyxuKSlyZXR1cm4gc3Qubm9uZSgpO0JFKHQsbyxlKTt2YXIgcj1rdSgpLGk9by54LXIueCx1PW4ueS1yLnksYT1yLmJvdHRvbS1uLmJvdHRvbSxjPW8ueTw9bi55O3JldHVybiBzdC5zb21lKENFLmZpeGVkKFphKCJmaXhlZCIsc3Quc29tZShpKSxjP3N0LnNvbWUodSk6c3Qubm9uZSgpLHN0Lm5vbmUoKSxjP3N0Lm5vbmUoKTpzdC5zb21lKGEpKSkpfSh1LG4sZSl9LEFFPWZ1bmN0aW9uKG4sdCl7aXQoWyJsZWZ0IiwicmlnaHQiLCJ0b3AiLCJib3R0b20iLCJwb3NpdGlvbiJdLGZ1bmN0aW9uKHQpe3JldHVybiBIaShuLmVsZW1lbnQoKSx0KX0pLHQub25VbmRvY2tlZChuKX0sRkU9ZnVuY3Rpb24odCxuLGUpe3RjKHQuZWxlbWVudCgpLGUpLCgiZml4ZWQiPT09ZS5wb3NpdGlvbigpP24ub25Eb2NrZWQ6bi5vblVuZG9ja2VkKSh0KX0sSUU9ZnVuY3Rpb24oaSx0LHUsYSxjKXt2b2lkIDA9PT1jJiYoYz0hMSksdC5jb250ZXh0dWFsLmVhY2goZnVuY3Rpb24ocil7ci5sYXp5Q29udGV4dChpKS5lYWNoKGZ1bmN0aW9uKHQpe3ZhciBuLGUsbz0oZT1hLChuPXQpLnk8ZS5ib3R0b20mJm4uYm90dG9tPmUueSk7byE9PXUuaXNWaXNpYmxlKCkmJih1LnNldFZpc2libGUobyksYyYmIW8/KFNpKGkuZWxlbWVudCgpLFtyLmZhZGVPdXRDbGFzc10pLHIub25IaWRlKGkpKToobz9PRTpfRSkoaSxyKSl9KX0pfSxSRT1mdW5jdGlvbihuLGUsdCl7dmFyIG8scixpPW4uZWxlbWVudCgpO3Quc2V0RG9ja2VkKCExKSxvPXQscj1uLmVsZW1lbnQoKSxFRShyLG8pLmJpbmQoZnVuY3Rpb24odCl7cmV0dXJuIERFKHIsdCxvKX0pLmVhY2goZnVuY3Rpb24odCl7dC5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIEFFKG4sZSl9LGZ1bmN0aW9uKHQpe3JldHVybiBGRShuLGUsdCl9LFopfSksdC5zZXRWaXNpYmxlKCEwKSxlLmNvbnRleHR1YWwuZWFjaChmdW5jdGlvbih0KXtraShpLFt0LmZhZGVJbkNsYXNzLHQuZmFkZU91dENsYXNzLHQudHJhbnNpdGlvbkNsYXNzXSksdC5vblNob3cobil9KSxWRShuLGUsdCl9LFZFPWZ1bmN0aW9uKHQsbixlKXt2YXIgbyxyLGksdSxhO3QuZ2V0U3lzdGVtKCkuaXNDb25uZWN0ZWQoKSYmKG89dCxpPWUsdT0ocj1uKS5sYXp5Vmlld3BvcnQobyksKGE9aS5pc0RvY2tlZCgpKSYmSUUobyxyLGksdSksTUUobyx1LGkpLmVhY2goZnVuY3Rpb24odCl7aS5zZXREb2NrZWQoIWEpLHQuZm9sZChmdW5jdGlvbigpe3JldHVybiBBRShvLHIpfSxmdW5jdGlvbih0KXtyZXR1cm4gRkUobyxyLHQpfSxmdW5jdGlvbih0KXtJRShvLHIsaSx1LCEwKSxGRShvLHIsdCl9KX0pKX0sSEU9ZnVuY3Rpb24odCxuLGUpe2UuaXNEb2NrZWQoKSYmUkUodCxuLGUpfSxQRT0vKiAqL09iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLHJlZnJlc2g6VkUscmVzZXQ6SEUsaXNEb2NrZWQ6ZnVuY3Rpb24odCxuLGUpe3JldHVybiBlLmlzRG9ja2VkKCl9LGdldE1vZGVzOmZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gZS5nZXRNb2RlcygpfSxzZXRNb2RlczpmdW5jdGlvbih0LG4sZSxvKXtyZXR1cm4gZS5zZXRNb2RlcyhvKX19KSx6RT0vKiAqL09iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLGV2ZW50czpmdW5jdGlvbihvLHIpe3JldHVybiBZbyhbZXIobW8oKSxmdW5jdGlvbihuLGUpe28uY29udGV4dHVhbC5lYWNoKGZ1bmN0aW9uKHQpe3dpKG4uZWxlbWVudCgpLHQudHJhbnNpdGlvbkNsYXNzKSYmKGtpKG4uZWxlbWVudCgpLFt0LnRyYW5zaXRpb25DbGFzcyx0LmZhZGVJbkNsYXNzXSksKHIuaXNWaXNpYmxlKCk/dC5vblNob3duOnQub25IaWRkZW4pKG4pKTtlLnN0b3AoKX0pfSksSm8oQm8oKSxmdW5jdGlvbih0LG4pe1ZFKHQsbyxyKX0pLEpvKERvKCksZnVuY3Rpb24odCxuKXtIRSh0LG8scil9KV0pfX0pLE5FPVtRbigiY29udGV4dHVhbCIsW0xuKCJmYWRlSW5DbGFzcyIpLExuKCJmYWRlT3V0Q2xhc3MiKSxMbigidHJhbnNpdGlvbkNsYXNzIiksVW4oImxhenlDb250ZXh0IiksJHUoIm9uU2hvdyIpLCR1KCJvblNob3duIiksJHUoIm9uSGlkZSIpLCR1KCJvbkhpZGRlbiIpXSksaWUoImxhenlWaWV3cG9ydCIsa3UpLHRlKCJtb2RlcyIsWyJ0b3AiLCJib3R0b20iXSxmbihGbikpLCR1KCJvbkRvY2tlZCIpLCR1KCJvblVuZG9ja2VkIildLExFPUxhKHtmaWVsZHM6TkUsbmFtZToiZG9ja2luZyIsYWN0aXZlOnpFLGFwaXM6UEUsc3RhdGU6LyogKi9PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxpbml0OmZ1bmN0aW9uKHQpe3ZhciBuPWNlKCExKSxlPWNlKCEwKSxvPWNlKHN0Lm5vbmUoKSkscj1jZSh0Lm1vZGVzKTtyZXR1cm4gb2koe2lzRG9ja2VkOm4uZ2V0LHNldERvY2tlZDpuLnNldCxnZXRJbml0aWFsUG9zaXRpb246by5nZXQsc2V0SW5pdGlhbFBvc2l0aW9uOm8uc2V0LGlzVmlzaWJsZTplLmdldCxzZXRWaXNpYmxlOmUuc2V0LGdldE1vZGVzOnIuZ2V0LHNldE1vZGVzOnIuc2V0LHJlYWRTdGF0ZTpmdW5jdGlvbigpe3JldHVybiJkb2NrZWQ6ICAiK24uZ2V0KCkrIiwgdmlzaWJsZTogIitlLmdldCgpKyIsIG1vZGVzOiAiK3IuZ2V0KCkuam9pbigiLCIpfX0pfX0pfSksakU9e2ZhZGVJbkNsYXNzOiJ0b3gtZWRpdG9yLWRvY2stZmFkZWluIixmYWRlT3V0Q2xhc3M6InRveC1lZGl0b3ItZG9jay1mYWRlb3V0Iix0cmFuc2l0aW9uQ2xhc3M6InRveC1lZGl0b3ItZG9jay10cmFuc2l0aW9uIn0sVUU9InRveC10aW55bWNlLS10b29sYmFyLXN0aWNreS1vbiIsV0U9InRveC10aW55bWNlLS10b29sYmFyLXN0aWNreS1vZmYiLEdFPWZ1bmN0aW9uKHIpe3ZhciBpPXIuZWxlbWVudCgpO2xyKGkpLmVhY2goZnVuY3Rpb24odCl7dmFyIG4sZT0icGFkZGluZy0iK0xFLmdldE1vZGVzKHIpWzBdO2lmKExFLmlzRG9ja2VkKHIpKXt2YXIgbz1jdSh0KTtEaShpLCJ3aWR0aCIsbysicHgiKSxEaSh0LGUsbnUobj1pKSsocGFyc2VJbnQoRmkobiwibWFyZ2luLXRvcCIpLDEwKXx8MCkrKHBhcnNlSW50KEZpKG4sIm1hcmdpbi1ib3R0b20iKSwxMCl8fDApKyJweCIpfWVsc2UgSGkoaSwid2lkdGgiKSxIaSh0LGUpfSl9LFhFPWZ1bmN0aW9uKHQsbil7bj8oeGkodCxqRS5mYWRlT3V0Q2xhc3MpLFNpKHQsW2pFLnRyYW5zaXRpb25DbGFzcyxqRS5mYWRlSW5DbGFzc10pKTooeGkodCxqRS5mYWRlSW5DbGFzcyksU2kodCxbakUuZmFkZU91dENsYXNzLGpFLnRyYW5zaXRpb25DbGFzc10pKX0sWUU9ZnVuY3Rpb24odCxuKXt2YXIgZT1sZS5mcm9tRG9tKHQuZ2V0Q29udGFpbmVyKCkpO24/KGJpKGUsVUUpLHhpKGUsV0UpKTooYmkoZSxXRSkseGkoZSxVRSkpfSxxRT1mdW5jdGlvbihjLHQpe3ZhciBuLGk9Y2Uoc3Qubm9uZSgpKSxvPXQuZ2V0U2luayx1PWZ1bmN0aW9uKG4pe28oKS5lYWNoKGZ1bmN0aW9uKHQpe3JldHVybiBuKHQuZWxlbWVudCgpKX0pfSxlPWZ1bmN0aW9uKHQpe2MuaW5saW5lfHxHRSh0KSxZRShjLExFLmlzRG9ja2VkKHQpKSx0LmdldFN5c3RlbSgpLmJyb2FkY2FzdE9uKFt0bCgpXSx7fSksbygpLmVhY2goZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0U3lzdGVtKCkuYnJvYWRjYXN0T24oW3RsKCldLHt9KX0pfSxyPWMuaW5saW5lP1tdOltZYS5jb25maWcoe2NoYW5uZWxzOigobj17fSlbTV8oKV09e29uUmVjZWl2ZTpHRX0sbil9KV07cmV0dXJuIGIoW1htLmNvbmZpZyh7fSksTEUuY29uZmlnKHtjb250ZXh0dWFsOmV0KHtsYXp5Q29udGV4dDpmdW5jdGlvbih0KXt2YXIgbixlLG89bnUodC5lbGVtZW50KCkpLHI9Yy5pbmxpbmU/Yy5nZXRDb250ZW50QXJlYUNvbnRhaW5lcigpOmMuZ2V0Q29udGFpbmVyKCksaT13dShsZS5mcm9tRG9tKHIpKSx1PWkuaGVpZ2h0LW8sYT1pLnkrKG49dCxlPSJ0b3AiLEYoTEUuZ2V0TW9kZXMobiksZSk/MDpvKTtyZXR1cm4gc3Quc29tZSh4dShpLngsYSxpLndpZHRoLHUpKX0sb25TaG93OmZ1bmN0aW9uKCl7dShmdW5jdGlvbih0KXtyZXR1cm4gWEUodCwhMCl9KX0sb25TaG93bjpmdW5jdGlvbihyKXt1KGZ1bmN0aW9uKHQpe3JldHVybiBraSh0LFtqRS50cmFuc2l0aW9uQ2xhc3MsakUuZmFkZUluQ2xhc3NdKX0pLGkuZ2V0KCkuZWFjaChmdW5jdGlvbih0KXt2YXIgbixlLG87bj1yLmVsZW1lbnQoKSxvPWFyKGU9dCksSmEobykuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiFMZShlLHQpfSkuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiBMZSh0LGxlLmZyb21Eb20oby5kb20oKS5ib2R5KSl8fFVlKG4sdCl9KS5lYWNoKGZ1bmN0aW9uKCl7cmV0dXJuIEthKGUpfSksaS5zZXQoc3Qubm9uZSgpKX0pfSxvbkhpZGU6ZnVuY3Rpb24odCl7dmFyIG4sZTtpLnNldCgobj10LmVsZW1lbnQoKSxlPW8sJGEobikub3JUaHVuayhmdW5jdGlvbigpe3JldHVybiBlKCkudG9PcHRpb24oKS5iaW5kKGZ1bmN0aW9uKHQpe3JldHVybiAkYSh0LmVsZW1lbnQoKSl9KX0pKSksdShmdW5jdGlvbih0KXtyZXR1cm4gWEUodCwhMSl9KX0sb25IaWRkZW46ZnVuY3Rpb24oKXt1KGZ1bmN0aW9uKHQpe3JldHVybiBraSh0LFtqRS50cmFuc2l0aW9uQ2xhc3NdKX0pfX0sakUpLG1vZGVzOlt0LmhlYWRlci5nZXREb2NraW5nTW9kZSgpXSxvbkRvY2tlZDplLG9uVW5kb2NrZWQ6ZX0pXSxyKX0sS0U9LyogKi9PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxzZXR1cDpmdW5jdGlvbih0LG4sbyl7dC5pbmxpbmV8fChuLmhlYWRlci5pc1Bvc2l0aW9uZWRBdFRvcCgpfHx0Lm9uKCJSZXNpemVFZGl0b3IiLGZ1bmN0aW9uKCl7bygpLmVhY2goTEUucmVzZXQpfSksdC5vbigiUmVzaXplV2luZG93IFJlc2l6ZUVkaXRvciIsZnVuY3Rpb24oKXtvKCkuZWFjaChHRSl9KSx0Lm9uKCJTa2luTG9hZGVkIixmdW5jdGlvbigpe28oKS5lYWNoKGZ1bmN0aW9uKHQpe0xFLmlzRG9ja2VkKHQpP0xFLnJlc2V0KHQpOkxFLnJlZnJlc2godCl9KX0pLHQub24oIkZ1bGxzY3JlZW5TdGF0ZUNoYW5nZWQiLGZ1bmN0aW9uKCl7bygpLmVhY2goTEUucmVzZXQpfSkpLHQub24oIkFmdGVyU2Nyb2xsSW50b1ZpZXciLGZ1bmN0aW9uKGUpe28oKS5lYWNoKGZ1bmN0aW9uKHQpe0xFLnJlZnJlc2godCk7dmFyIG49dC5lbGVtZW50KCk7QmQobikmJmZ1bmN0aW9uKHQsbil7dmFyIGU9YXIobiksbz1lLmRvbSgpLmRlZmF1bHRWaWV3LmlubmVySGVpZ2h0LHI9bXUoZSksaT1sZS5mcm9tRG9tKHQuZWxtKSx1PVN1KGkpLGE9dHUoaSksYz11Lnkscz1jK2EsbD1pdShuKSxmPXR1KG4pLGQ9bC50b3AoKSxtPWQrZixnPU1hdGguYWJzKGQtci50b3AoKSk8MixwPU1hdGguYWJzKG0tKHIudG9wKCkrbykpPDI7aWYoZyYmYzxtKWd1KHIubGVmdCgpLGMtZixlKTtlbHNlIGlmKHAmJmQ8cyl7dmFyIGg9Yy1vK2ErZjtndShyLmxlZnQoKSxoLGUpfX0oZSxuKX0pfSksdC5vbigiUG9zdFJlbmRlciIsZnVuY3Rpb24oKXtZRSh0LCExKX0pfSxpc0RvY2tlZDpmdW5jdGlvbih0KXtyZXR1cm4gdCgpLm1hcChMRS5pc0RvY2tlZCkuZ2V0T3IoITEpfSxnZXRCZWhhdmlvdXJzOnFFfSksSkU9WiwkRT1jLFFFPWF0KFtdKSxaRT0vKiAqL09iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLHNldHVwOkpFLGlzRG9ja2VkOiRFLGdldEJlaGF2aW91cnM6UUV9KSx0Qj1PZih7ZmFjdG9yeTpmdW5jdGlvbihuLG8pe3ZhciB0PXtmb2N1czpSbS5mb2N1c0luLHNldE1lbnVzOmZ1bmN0aW9uKHQsbil7dmFyIGU9VihuLGZ1bmN0aW9uKG4pe3ZhciB0PXt0eXBlOiJtZW51YnV0dG9uIix0ZXh0Om4udGV4dCxmZXRjaDpmdW5jdGlvbih0KXt0KG4uZ2V0SXRlbXMoKSl9fSxlPVdfKHQpLm1hcEVycm9yKGZ1bmN0aW9uKHQpe3JldHVybiBUbih0KX0pLmdldE9yRGllKCk7cmV0dXJuIEFrKGUsInRveC1tYnRuIixvLmJhY2tzdGFnZSxzdC5zb21lKCJtZW51aXRlbSIpKX0pO05tLnNldCh0LGUpfX07cmV0dXJue3VpZDpuLnVpZCxkb206bi5kb20sY29tcG9uZW50czpbXSxiZWhhdmlvdXJzOnphKFtObS5jb25maWcoe30pLExtKCJtZW51YmFyLWV2ZW50cyIsW29yKGZ1bmN0aW9uKHQpe24ub25TZXR1cCh0KX0pLEpvKHJvKCksZnVuY3Rpb24oZSx0KXtNdShlLmVsZW1lbnQoKSwiLnRveC1tYnRuLS1hY3RpdmUiKS5lYWNoKGZ1bmN0aW9uKG4pe0F1KHQuZXZlbnQoKS50YXJnZXQoKSwiLnRveC1tYnRuIikuZWFjaChmdW5jdGlvbih0KXtMZShuLHQpfHxlLmdldFN5c3RlbSgpLmdldEJ5RG9tKG4pLmVhY2goZnVuY3Rpb24obil7ZS5nZXRTeXN0ZW0oKS5nZXRCeURvbSh0KS5lYWNoKGZ1bmN0aW9uKHQpe1F5LmV4cGFuZCh0KSxReS5jbG9zZShuKSxYbS5mb2N1cyh0KX0pfSl9KX0pfSksSm8oUm8oKSxmdW5jdGlvbihlLHQpe3QuZXZlbnQoKS5wcmV2Rm9jdXMoKS5iaW5kKGZ1bmN0aW9uKHQpe3JldHVybiBlLmdldFN5c3RlbSgpLmdldEJ5RG9tKHQpLnRvT3B0aW9uKCl9KS5lYWNoKGZ1bmN0aW9uKG4pe3QuZXZlbnQoKS5uZXdGb2N1cygpLmJpbmQoZnVuY3Rpb24odCl7cmV0dXJuIGUuZ2V0U3lzdGVtKCkuZ2V0QnlEb20odCkudG9PcHRpb24oKX0pLmVhY2goZnVuY3Rpb24odCl7UXkuaXNPcGVuKG4pJiYoUXkuZXhwYW5kKHQpLFF5LmNsb3NlKG4pKX0pfSl9KV0pLFJtLmNvbmZpZyh7bW9kZToiZmxvdyIsc2VsZWN0b3I6Ii50b3gtbWJ0biIsb25Fc2NhcGU6ZnVuY3Rpb24odCl7cmV0dXJuIG4ub25Fc2NhcGUodCksc3Quc29tZSghMCl9fSksRHkuY29uZmlnKHt9KV0pLGFwaXM6dCxkb21Nb2RpZmljYXRpb246e2F0dHJpYnV0ZXM6e3JvbGU6Im1lbnViYXIifX19fSxuYW1lOiJzaWx2ZXIuTWVudWJhciIsY29uZmlnRmllbGRzOlt6bigiZG9tIiksem4oInVpZCIpLHpuKCJvbkVzY2FwZSIpLHpuKCJiYWNrc3RhZ2UiKSxabigib25TZXR1cCIsWildLGFwaXM6e2ZvY3VzOmZ1bmN0aW9uKHQsbil7dC5mb2N1cyhuKX0sc2V0TWVudXM6ZnVuY3Rpb24odCxuLGUpe3Quc2V0TWVudXMobixlKX19fSksbkI9ImNvbnRhaW5lciIsZUI9W3lsKCJzbG90QmVoYXZpb3VycyIsW10pXSxvQj1mdW5jdGlvbih0KXtyZXR1cm4iPGFsbG95LmZpZWxkLiIrdCsiPiJ9LHJCPWZ1bmN0aW9uKHIsdCl7dmFyIGUsbj1mdW5jdGlvbih0KXtyZXR1cm4gbWYocil9LG89ZnVuY3Rpb24oZSxvKXtyZXR1cm4gZnVuY3Rpb24odCxuKXtyZXR1cm4gc2YodCxyLG4pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gZSh0LG4pfSkuZ2V0T3Iobyl9fSxpPWZ1bmN0aW9uKHQsbil7cmV0dXJuInRydWUiIT09RHIodC5lbGVtZW50KCksImFyaWEtaGlkZGVuIil9LHU9byhpLCExKSxhPW8oZnVuY3Rpb24odCxuKXtpZihpKHQpKXt2YXIgZT10LmVsZW1lbnQoKTtEaShlLCJkaXNwbGF5Iiwibm9uZSIpLEJyKGUsImFyaWEtaGlkZGVuIiwidHJ1ZSIpLGpvKHQsVm8oKSx7bmFtZTpuLHZpc2libGU6ITF9KX19KSxjPWZ1bmN0aW9uKG4sdCl7aXQodCxmdW5jdGlvbih0KXtyZXR1cm4gZShuLHQpfSl9LHM9byhmdW5jdGlvbih0LG4pe2lmKCFpKHQpKXt2YXIgZT10LmVsZW1lbnQoKTtIaShlLCJkaXNwbGF5IiksRnIoZSwiYXJpYS1oaWRkZW4iKSxqbyh0LFZvKCkse25hbWU6bix2aXNpYmxlOiEwfSl9fSksbD17Z2V0U2xvdE5hbWVzOm4sZ2V0U2xvdDpmdW5jdGlvbih0LG4pe3JldHVybiBzZih0LHIsbil9LGlzU2hvd2luZzp1LGhpZGVTbG90OmU9YSxoaWRlQWxsU2xvdHM6ZnVuY3Rpb24odCl7cmV0dXJuIGModCxuKCkpfSxzaG93U2xvdDpzfTtyZXR1cm57dWlkOnIudWlkLGRvbTpyLmRvbSxjb21wb25lbnRzOnQsYmVoYXZpb3Vyczp4bChyLnNsb3RCZWhhdmlvdXJzKSxhcGlzOmx9fSxpQj1kdCh7Z2V0U2xvdE5hbWVzOmZ1bmN0aW9uKHQsbil7cmV0dXJuIHQuZ2V0U2xvdE5hbWVzKG4pfSxnZXRTbG90OmZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gdC5nZXRTbG90KG4sZSl9LGlzU2hvd2luZzpmdW5jdGlvbih0LG4sZSl7cmV0dXJuIHQuaXNTaG93aW5nKG4sZSl9LGhpZGVTbG90OmZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gdC5oaWRlU2xvdChuLGUpfSxoaWRlQWxsU2xvdHM6ZnVuY3Rpb24odCxuKXtyZXR1cm4gdC5oaWRlQWxsU2xvdHMobil9LHNob3dTbG90OmZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gdC5zaG93U2xvdChuLGUpfX0sZnVuY3Rpb24odCl7cmV0dXJuIG5pKHQpfSksdUI9ZXQoZXQoe30saUIpLHtza2V0Y2g6ZnVuY3Rpb24odCl7dmFyIGUsbj0oZT1bXSx7c2xvdDpmdW5jdGlvbih0LG4pe3JldHVybiBlLnB1c2godCksb2YobkIsb0IodCksbil9LHJlY29yZDpmdW5jdGlvbigpe3JldHVybiBlfX0pLG89dChuKSxyPW4ucmVjb3JkKCksaT1WKHIsZnVuY3Rpb24odCl7cmV0dXJuIHFsKHtuYW1lOnQscG5hbWU6b0IodCl9KX0pO3JldHVybiB5ZihuQixlQixpLHJCLG8pfX0pLGFCPWxuKFtKbigiaWNvbiIpLEpuKCJ0b29sdGlwIiksaWUoIm9uU2hvdyIsWiksaWUoIm9uSGlkZSIsWiksaWUoIm9uU2V0dXAiLGZ1bmN0aW9uKCl7cmV0dXJuIFp9KV0pLGNCPWZ1bmN0aW9uKHQpe3JldHVybntlbGVtZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHQuZWxlbWVudCgpLmRvbSgpfX19LHNCPWZ1bmN0aW9uKGUsbyl7dmFyIHI9VihsdChvKSxmdW5jdGlvbih0KXt2YXIgbj1vW3RdLGU9T24oQ24oInNpZGViYXIiLGFCLG4pKTtyZXR1cm57bmFtZTp0LGdldEFwaTpjQixvblNldHVwOmUub25TZXR1cCxvblNob3c6ZS5vblNob3csb25IaWRlOmUub25IaWRlfX0pO3JldHVybiBWKHIsZnVuY3Rpb24odCl7dmFyIG49Y2UoWik7cmV0dXJuIGUuc2xvdCh0Lm5hbWUse2RvbTp7dGFnOiJkaXYiLGNsYXNzZXM6WyJ0b3gtc2lkZWJhcl9fcGFuZSJdfSxiZWhhdmlvdXJzOlRwKFtLaCh0LG4pLEpoKHQsbiksSm8oVm8oKSxmdW5jdGlvbihuLHQpe3ZhciBlPXQuZXZlbnQoKTtMKHIsZnVuY3Rpb24odCl7cmV0dXJuIHQubmFtZT09PWUubmFtZSgpfSkuZWFjaChmdW5jdGlvbih0KXsoZS52aXNpYmxlKCk/dC5vblNob3c6dC5vbkhpZGUpKHQuZ2V0QXBpKG4pKX0pfSldKX0pfSl9LGxCPWZ1bmN0aW9uKHQsZSl7TWYuZ2V0Q3VycmVudCh0KS5lYWNoKGZ1bmN0aW9uKHQpe3JldHVybiBObS5zZXQodCxbKG49ZSx1Qi5za2V0Y2goZnVuY3Rpb24odCl7cmV0dXJue2RvbTp7dGFnOiJkaXYiLGNsYXNzZXM6WyJ0b3gtc2lkZWJhcl9fcGFuZS1jb250YWluZXIiXX0sY29tcG9uZW50czpzQih0LG4pLHNsb3RCZWhhdmlvdXJzOlRwKFtvcihmdW5jdGlvbih0KXtyZXR1cm4gdUIuaGlkZUFsbFNsb3RzKHQpfSldKX19KSldKTt2YXIgbn0pfSxmQj1mdW5jdGlvbih0KXtyZXR1cm4gTWYuZ2V0Q3VycmVudCh0KS5iaW5kKGZ1bmN0aW9uKHQpe3JldHVybiBfXy5pc0dyb3dpbmcodCl8fF9fLmhhc0dyb3duKHQpP01mLmdldEN1cnJlbnQodCkuYmluZChmdW5jdGlvbihuKXtyZXR1cm4gTCh1Qi5nZXRTbG90TmFtZXMobiksZnVuY3Rpb24odCl7cmV0dXJuIHVCLmlzU2hvd2luZyhuLHQpfSl9KTpzdC5ub25lKCl9KX0sZEI9TnIoIkZpeFNpemVFdmVudCIpLG1CPU5yKCJBdXRvU2l6ZUV2ZW50IiksZ0I9ZnVuY3Rpb24odCl7dmFyIG4sZSxvLHI9bGUuZnJvbUh0bWwodCksaT1kcihyKSx1PShlPShuPXIpLmRvbSgpLmF0dHJpYnV0ZXMhPT11bmRlZmluZWQ/bi5kb20oKS5hdHRyaWJ1dGVzOltdLE4oZSxmdW5jdGlvbih0LG4pe3ZhciBlO3JldHVybiJjbGFzcyI9PT1uLm5hbWU/dDpldChldCh7fSx0KSwoKGU9e30pW24ubmFtZV09bi52YWx1ZSxlKSl9LHt9KSksYT0obz1yLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKG8uZG9tKCkuY2xhc3NMaXN0LDApKSxjPTA9PT1pLmxlbmd0aD97fTp7aW5uZXJIdG1sOlNyKHIpfTtyZXR1cm4gZXQoe3RhZzpDcihyKSxjbGFzc2VzOmEsYXR0cmlidXRlczp1fSxjKX0scEI9ZnVuY3Rpb24odCxuLGUpe3ZhciBvPXQuZWxlbWVudCgpOyEwPT09bj8oTm0uc2V0KHQsW3tkb206e3RhZzoiZGl2IixhdHRyaWJ1dGVzOnsiYXJpYS1sYWJlbCI6ZS50cmFuc2xhdGUoIkxvYWRpbmcuLi4iKX0sY2xhc3NlczpbInRveC10aHJvYmJlcl9fYnVzeS1zcGlubmVyIl19LGNvbXBvbmVudHM6W3tkb206Z0IoJzxkaXYgY2xhc3M9InRveC1zcGlubmVyIj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48L2Rpdj4nKX1dLGJlaGF2aW91cnM6emEoW1JtLmNvbmZpZyh7bW9kZToic3BlY2lhbCIsb25UYWI6ZnVuY3Rpb24oKXtyZXR1cm4gc3Quc29tZSghMCl9LG9uU2hpZnRUYWI6ZnVuY3Rpb24oKXtyZXR1cm4gc3Quc29tZSghMCl9fSksWG0uY29uZmlnKHt9KV0pfV0pLEhpKG8sImRpc3BsYXkiKSxGcihvLCJhcmlhLWhpZGRlbiIpKTooTm0uc2V0KHQsW10pLERpKG8sImRpc3BsYXkiLCJub25lIiksQnIobywiYXJpYS1oaWRkZW4iLCJ0cnVlIikpfSxoQj12RS5vcHRpb25hbCh7ZmFjdG9yeTp0QixuYW1lOiJtZW51YmFyIixzY2hlbWE6W3puKCJiYWNrc3RhZ2UiKV19KSx2Qj12RS5vcHRpb25hbCh7ZmFjdG9yeTp7c2tldGNoOmZ1bmN0aW9uKHQpe3JldHVybiB3RS5za2V0Y2goe3VpZDp0LnVpZCxkb206dC5kb20sbGlzdEJlaGF2aW91cnM6emEoW1JtLmNvbmZpZyh7bW9kZToiYWN5Y2xpYyIsc2VsZWN0b3I6Ii50b3gtdG9vbGJhciJ9KV0pLG1ha2VJdGVtOmZ1bmN0aW9uKCl7cmV0dXJuIFBfKHt0eXBlOnQudHlwZSx1aWQ6TnIoIm11bHRpcGxlLXRvb2xiYXItaXRlbSIpLGN5Y2xpY0tleWluZzohMSxpbml0R3JvdXBzOltdLHByb3ZpZGVyczp0LnByb3ZpZGVycyxvbkVzY2FwZTpmdW5jdGlvbigpe3JldHVybiBzdC5ub25lKCl9fSl9LHNldHVwSXRlbTpmdW5jdGlvbih0LG4sZSxvKXtYTy5zZXRHcm91cHMobixlKX0sc2hlbGw6ITB9KX19LG5hbWU6Im11bHRpcGxlLXRvb2xiYXIiLHNjaGVtYTpbem4oImRvbSIpLHpuKCJvbkVzY2FwZSIpXX0pLGJCPXZFLm9wdGlvbmFsKHtmYWN0b3J5Ontza2V0Y2g6ZnVuY3Rpb24odCl7dmFyIG47cmV0dXJuKChuPXQpLnR5cGU9PT1LZy5zbGlkaW5nP0hfOm4udHlwZT09PUtnLmZsb2F0aW5nP1ZfOlBfKSh7dHlwZTp0LnR5cGUsdWlkOnQudWlkLG9uRXNjYXBlOmZ1bmN0aW9uKCl7cmV0dXJuIHQub25Fc2NhcGUoKSxzdC5zb21lKCEwKX0sY3ljbGljS2V5aW5nOiExLGluaXRHcm91cHM6W10sZ2V0U2luazp0LmdldFNpbmsscHJvdmlkZXJzOnQucHJvdmlkZXJzLG1vcmVEcmF3ZXJEYXRhOntsYXp5VG9vbGJhcjp0LmxhenlUb29sYmFyLGxhenlNb3JlQnV0dG9uOnQubGF6eU1vcmVCdXR0b24sbGF6eUhlYWRlcjp0LmxhenlIZWFkZXJ9LGF0dHJpYnV0ZXM6dC5hdHRyaWJ1dGVzfSl9fSxuYW1lOiJ0b29sYmFyIixzY2hlbWE6W3puKCJkb20iKSx6bigib25Fc2NhcGUiKSx6bigiZ2V0U2luayIpXX0pLHlCPXZFLm9wdGlvbmFsKHtmYWN0b3J5Ontza2V0Y2g6ZnVuY3Rpb24odCl7dmFyIG49dC5lZGl0b3IsZT10LnN0aWNreT9xRTpRRTtyZXR1cm57dWlkOnQudWlkLGRvbTp0LmRvbSxjb21wb25lbnRzOnQuY29tcG9uZW50cyxiZWhhdmlvdXJzOnphKGUobix0LnNoYXJlZEJhY2tzdGFnZSkpfX19LG5hbWU6ImhlYWRlciIsc2NoZW1hOlt6bigiZG9tIildfSkseEI9dkUub3B0aW9uYWwoe25hbWU6InNvY2tldCIsc2NoZW1hOlt6bigiZG9tIildfSksd0I9dkUub3B0aW9uYWwoe2ZhY3Rvcnk6e3NrZXRjaDpmdW5jdGlvbih0KXtyZXR1cm57dWlkOnQudWlkLGRvbTp7dGFnOiJkaXYiLGNsYXNzZXM6WyJ0b3gtc2lkZWJhciJdLGF0dHJpYnV0ZXM6e3JvbGU6ImNvbXBsZW1lbnRhcnkifX0sY29tcG9uZW50czpbe2RvbTp7dGFnOiJkaXYiLGNsYXNzZXM6WyJ0b3gtc2lkZWJhcl9fc2xpZGVyIl19LGNvbXBvbmVudHM6W10sYmVoYXZpb3Vyczp6YShbRHkuY29uZmlnKHt9KSxYbS5jb25maWcoe30pLF9fLmNvbmZpZyh7ZGltZW5zaW9uOntwcm9wZXJ0eToid2lkdGgifSxjbG9zZWRDbGFzczoidG94LXNpZGViYXItLXNsaWRpbmctY2xvc2VkIixvcGVuQ2xhc3M6InRveC1zaWRlYmFyLS1zbGlkaW5nLW9wZW4iLHNocmlua2luZ0NsYXNzOiJ0b3gtc2lkZWJhci0tc2xpZGluZy1zaHJpbmtpbmciLGdyb3dpbmdDbGFzczoidG94LXNpZGViYXItLXNsaWRpbmctZ3Jvd2luZyIsb25TaHJ1bms6ZnVuY3Rpb24odCl7TWYuZ2V0Q3VycmVudCh0KS5lYWNoKHVCLmhpZGVBbGxTbG90cyksTG8odCxtQil9LG9uR3Jvd246ZnVuY3Rpb24odCl7TG8odCxtQil9LG9uU3RhcnRHcm93OmZ1bmN0aW9uKHQpe2pvKHQsZEIse3dpZHRoOlJpKHQuZWxlbWVudCgpLCJ3aWR0aCIpLmdldE9yKCIiKX0pfSxvblN0YXJ0U2hyaW5rOmZ1bmN0aW9uKHQpe2pvKHQsZEIse3dpZHRoOmN1KHQuZWxlbWVudCgpKSsicHgifSl9fSksTm0uY29uZmlnKHt9KSxNZi5jb25maWcoe2ZpbmQ6ZnVuY3Rpb24odCl7dmFyIG49Tm0uY29udGVudHModCk7cmV0dXJuIEsobil9fSldKX1dLGJlaGF2aW91cnM6emEoW25TKDApLExtKCJzaWRlYmFyLXNsaWRpbmctZXZlbnRzIixbSm8oZEIsZnVuY3Rpb24odCxuKXtEaSh0LmVsZW1lbnQoKSwid2lkdGgiLG4uZXZlbnQoKS53aWR0aCgpKX0pLEpvKG1CLGZ1bmN0aW9uKHQsbil7SGkodC5lbGVtZW50KCksIndpZHRoIil9KV0pXSl9fX0sbmFtZToic2lkZWJhciIsc2NoZW1hOlt6bigiZG9tIildfSksU0I9dkUub3B0aW9uYWwoe2ZhY3Rvcnk6e3NrZXRjaDpmdW5jdGlvbih0KXtyZXR1cm57dWlkOnQudWlkLGRvbTp7dGFnOiJkaXYiLGF0dHJpYnV0ZXM6eyJhcmlhLWhpZGRlbiI6InRydWUifSxjbGFzc2VzOlsidG94LXRocm9iYmVyIl0sc3R5bGVzOntkaXNwbGF5OiJub25lIn19LGJlaGF2aW91cnM6emEoW05tLmNvbmZpZyh7fSldKSxjb21wb25lbnRzOltdfX19LG5hbWU6InRocm9iYmVyIixzY2hlbWE6W3puKCJkb20iKV19KSxrQj1fZih7bmFtZToiT3V0ZXJDb250YWluZXIiLGZhY3Rvcnk6ZnVuY3Rpb24oZSx0LG4pe3ZhciBvPXtnZXRTb2NrZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIGhFLmdldFBhcnQodCxlLCJzb2NrZXQiKX0sc2V0U2lkZWJhcjpmdW5jdGlvbih0LG4pe2hFLmdldFBhcnQodCxlLCJzaWRlYmFyIikuZWFjaChmdW5jdGlvbih0KXtyZXR1cm4gbEIodCxuKX0pfSx0b2dnbGVTaWRlYmFyOmZ1bmN0aW9uKHQsbyl7aEUuZ2V0UGFydCh0LGUsInNpZGViYXIiKS5lYWNoKGZ1bmN0aW9uKHQpe3JldHVybiBuPXQsZT1vLHZvaWQgTWYuZ2V0Q3VycmVudChuKS5lYWNoKGZ1bmN0aW9uKG4pe01mLmdldEN1cnJlbnQobikuZWFjaChmdW5jdGlvbih0KXtfXy5oYXNHcm93bihuKT91Qi5pc1Nob3dpbmcodCxlKT9fXy5zaHJpbmsobik6KHVCLmhpZGVBbGxTbG90cyh0KSx1Qi5zaG93U2xvdCh0LGUpKToodUIuaGlkZUFsbFNsb3RzKHQpLHVCLnNob3dTbG90KHQsZSksX18uZ3JvdyhuKSl9KX0pO3ZhciBuLGV9KX0sd2hpY2hTaWRlYmFyOmZ1bmN0aW9uKHQpe3JldHVybiBoRS5nZXRQYXJ0KHQsZSwic2lkZWJhciIpLmJpbmQoZkIpLmdldE9yTnVsbCgpfSxnZXRIZWFkZXI6ZnVuY3Rpb24odCl7cmV0dXJuIGhFLmdldFBhcnQodCxlLCJoZWFkZXIiKX0sZ2V0VG9vbGJhcjpmdW5jdGlvbih0KXtyZXR1cm4gaEUuZ2V0UGFydCh0LGUsInRvb2xiYXIiKX0sc2V0VG9vbGJhcjpmdW5jdGlvbih0LG4pe2hFLmdldFBhcnQodCxlLCJ0b29sYmFyIikuZWFjaChmdW5jdGlvbih0KXt0LmdldEFwaXMoKS5zZXRHcm91cHModCxuKX0pfSxzZXRUb29sYmFyczpmdW5jdGlvbih0LG4pe2hFLmdldFBhcnQodCxlLCJtdWx0aXBsZS10b29sYmFyIikuZWFjaChmdW5jdGlvbih0KXt3RS5zZXRJdGVtcyh0LG4pfSl9LHJlZnJlc2hUb29sYmFyOmZ1bmN0aW9uKHQpe2hFLmdldFBhcnQodCxlLCJ0b29sYmFyIikuZWFjaChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRBcGlzKCkucmVmcmVzaCh0KX0pfSxnZXRUaHJvYmJlcjpmdW5jdGlvbih0KXtyZXR1cm4gaEUuZ2V0UGFydCh0LGUsInRocm9iYmVyIil9LGZvY3VzVG9vbGJhcjpmdW5jdGlvbih0KXtoRS5nZXRQYXJ0KHQsZSwidG9vbGJhciIpLm9yVGh1bmsoZnVuY3Rpb24oKXtyZXR1cm4gaEUuZ2V0UGFydCh0LGUsIm11bHRpcGxlLXRvb2xiYXIiKX0pLmVhY2goZnVuY3Rpb24odCl7Um0uZm9jdXNJbih0KX0pfSxzZXRNZW51YmFyOmZ1bmN0aW9uKHQsbil7aEUuZ2V0UGFydCh0LGUsIm1lbnViYXIiKS5lYWNoKGZ1bmN0aW9uKHQpe3RCLnNldE1lbnVzKHQsbil9KX0sZm9jdXNNZW51YmFyOmZ1bmN0aW9uKHQpe2hFLmdldFBhcnQodCxlLCJtZW51YmFyIikuZWFjaChmdW5jdGlvbih0KXt0Qi5mb2N1cyh0KX0pfX07cmV0dXJue3VpZDplLnVpZCxkb206ZS5kb20sY29tcG9uZW50czp0LGFwaXM6byxiZWhhdmlvdXJzOmUuYmVoYXZpb3Vyc319LGNvbmZpZ0ZpZWxkczpbem4oImRvbSIpLHpuKCJiZWhhdmlvdXJzIildLHBhcnRGaWVsZHM6W3lCLGhCLGJCLHZCLHhCLHdCLFNCXSxhcGlzOntnZXRTb2NrZXQ6ZnVuY3Rpb24odCxuKXtyZXR1cm4gdC5nZXRTb2NrZXQobil9LHNldFNpZGViYXI6ZnVuY3Rpb24odCxuLGUpe3Quc2V0U2lkZWJhcihuLGUpfSx0b2dnbGVTaWRlYmFyOmZ1bmN0aW9uKHQsbixlKXt0LnRvZ2dsZVNpZGViYXIobixlKX0sd2hpY2hTaWRlYmFyOmZ1bmN0aW9uKHQsbil7cmV0dXJuIHQud2hpY2hTaWRlYmFyKG4pfSxnZXRIZWFkZXI6ZnVuY3Rpb24odCxuKXtyZXR1cm4gdC5nZXRIZWFkZXIobil9LGdldFRvb2xiYXI6ZnVuY3Rpb24odCxuKXtyZXR1cm4gdC5nZXRUb29sYmFyKG4pfSxzZXRUb29sYmFyOmZ1bmN0aW9uKHQsbixlKXt2YXIgbz1WKGUsZnVuY3Rpb24odCl7cmV0dXJuIEZfKHQpfSk7dC5zZXRUb29sYmFyKG4sbyl9LHNldFRvb2xiYXJzOmZ1bmN0aW9uKHQsbixlKXt2YXIgbz1WKGUsZnVuY3Rpb24odCl7cmV0dXJuIFYodCxGXyl9KTt0LnNldFRvb2xiYXJzKG4sbyl9LHJlZnJlc2hUb29sYmFyOmZ1bmN0aW9uKHQsbil7cmV0dXJuIHQucmVmcmVzaFRvb2xiYXIobil9LGdldFRocm9iYmVyOmZ1bmN0aW9uKHQsbil7cmV0dXJuIHQuZ2V0VGhyb2JiZXIobil9LHNldE1lbnViYXI6ZnVuY3Rpb24odCxuLGUpe3Quc2V0TWVudWJhcihuLGUpfSxmb2N1c01lbnViYXI6ZnVuY3Rpb24odCxuKXt0LmZvY3VzTWVudWJhcihuKX0sZm9jdXNUb29sYmFyOmZ1bmN0aW9uKHQsbil7dC5mb2N1c1Rvb2xiYXIobil9fX0pLENCPXtmaWxlOnt0aXRsZToiRmlsZSIsaXRlbXM6Im5ld2RvY3VtZW50IHJlc3RvcmVkcmFmdCB8IHByZXZpZXcgfCBwcmludCB8IGRlbGV0ZWFsbGNvbnZlcnNhdGlvbnMifSxlZGl0Ont0aXRsZToiRWRpdCIsaXRlbXM6InVuZG8gcmVkbyB8IGN1dCBjb3B5IHBhc3RlIHBhc3RldGV4dCB8IHNlbGVjdGFsbCB8IHNlYXJjaHJlcGxhY2UifSx2aWV3Ont0aXRsZToiVmlldyIsaXRlbXM6ImNvZGUgfCB2aXN1YWxhaWQgdmlzdWFsY2hhcnMgdmlzdWFsYmxvY2tzIHwgc3BlbGxjaGVja2VyIHwgcHJldmlldyBmdWxsc2NyZWVuIHwgc2hvd2NvbW1lbnRzIn0saW5zZXJ0Ont0aXRsZToiSW5zZXJ0IixpdGVtczoiaW1hZ2UgbGluayBtZWRpYSBhZGRjb21tZW50IHBhZ2VlbWJlZCB0ZW1wbGF0ZSBjb2Rlc2FtcGxlIGluc2VydHRhYmxlIHwgY2hhcm1hcCBlbW90aWNvbnMgaHIgfCBwYWdlYnJlYWsgbm9uYnJlYWtpbmcgYW5jaG9yIHRvYyB8IGluc2VydGRhdGV0aW1lIn0sZm9ybWF0Ont0aXRsZToiRm9ybWF0IixpdGVtczoiYm9sZCBpdGFsaWMgdW5kZXJsaW5lIHN0cmlrZXRocm91Z2ggc3VwZXJzY3JpcHQgc3Vic2NyaXB0IGNvZGVmb3JtYXQgfCBmb3JtYXRzIGJsb2NrZm9ybWF0cyBmb250Zm9ybWF0cyBmb250c2l6ZXMgYWxpZ24gfCBmb3JlY29sb3IgYmFja2NvbG9yIHwgcmVtb3ZlZm9ybWF0In0sdG9vbHM6e3RpdGxlOiJUb29scyIsaXRlbXM6InNwZWxsY2hlY2tlciBzcGVsbGNoZWNrZXJsYW5ndWFnZSB8IGExMXljaGVjayBjb2RlIHdvcmRjb3VudCJ9LHRhYmxlOnt0aXRsZToiVGFibGUiLGl0ZW1zOiJpbnNlcnR0YWJsZSB8IGNlbGwgcm93IGNvbHVtbiB8IGFkdnRhYmxlc29ydCB8IHRhYmxlcHJvcHMgZGVsZXRldGFibGUifSxoZWxwOnt0aXRsZToiSGVscCIsaXRlbXM6ImhlbHAifX0sT0I9ZnVuY3Rpb24odCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P3Quc3BsaXQoIiAiKTp0fSxfQj1mdW5jdGlvbihpLHUpe3ZhciBhPWV0KGV0KHt9LENCKSx1Lm1lbnVzKSxuPTA8bHQodS5tZW51cykubGVuZ3RoLHQ9dS5tZW51YmFyPT09dW5kZWZpbmVkfHwhMD09PXUubWVudWJhcj9PQigiZmlsZSBlZGl0IHZpZXcgaW5zZXJ0IGZvcm1hdCB0b29scyB0YWJsZSBoZWxwIik6T0IoITE9PT11Lm1lbnViYXI/IiI6dS5tZW51YmFyKSxlPVAodCxmdW5jdGlvbih0KXtyZXR1cm4gbiYmdS5tZW51cy5oYXNPd25Qcm9wZXJ0eSh0KSYmdS5tZW51c1t0XS5oYXNPd25Qcm9wZXJ0eSgiaXRlbXMiKXx8Q0IuaGFzT3duUHJvcGVydHkodCl9KSxvPVYoZSxmdW5jdGlvbih0KXt2YXIgbixlLG8scj1hW3RdO3JldHVybiBuPXt0aXRsZTpyLnRpdGxlLGl0ZW1zOk9CKHIuaXRlbXMpfSxlPXUsbz1pLmdldFBhcmFtKCJyZW1vdmVkX21lbnVpdGVtcyIsIiIpLnNwbGl0KC9bICxdLykse3RleHQ6bi50aXRsZSxnZXRJdGVtczpmdW5jdGlvbigpe3JldHVybiBVKG4uaXRlbXMsZnVuY3Rpb24odCl7dmFyIG49dC50b0xvd2VyQ2FzZSgpO3JldHVybiAwPT09bi50cmltKCkubGVuZ3RofHxJKG8sZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1ufSk/W106InNlcGFyYXRvciI9PT1ufHwifCI9PT1uP1t7dHlwZToic2VwYXJhdG9yIn1dOmUubWVudUl0ZW1zW25dP1tlLm1lbnVJdGVtc1tuXV06W119KX19fSk7cmV0dXJuIFAobyxmdW5jdGlvbih0KXtyZXR1cm4gMDx0LmdldEl0ZW1zKCkubGVuZ3RoJiZJKHQuZ2V0SXRlbXMoKSxmdW5jdGlvbih0KXtyZXR1cm4ic2VwYXJhdG9yIiE9PXQudHlwZX0pfSl9LFRCPWZ1bmN0aW9uKHQpe3ZhciBuPWZ1bmN0aW9uKCl7dC5fc2tpbkxvYWRlZD0hMCx0LmZpcmUoIlNraW5Mb2FkZWQiKX07cmV0dXJuIGZ1bmN0aW9uKCl7dC5pbml0aWFsaXplZD9uKCk6dC5vbigiaW5pdCIsbil9fSxFQj1mdW5jdGlvbihuLGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0PXttZXNzYWdlOmV9LG4uZmlyZSgiU2tpbkxvYWRFcnJvciIsdCk7dmFyIHR9fSxCQj1mdW5jdGlvbih0LG4pe3ZhciBlLG89ZnVuY3Rpb24odCl7dmFyIG49dC5zZXR0aW5ncyxlPW4uc2tpbixvPW4uc2tpbl91cmw7aWYoITEhPT1lKXt2YXIgcj1lfHwib3hpZGUiO289bz90LmRvY3VtZW50QmFzZVVSSS50b0Fic29sdXRlKG8pOnZoLmJhc2VVUkwrIi9za2lucy91aS8iK3J9cmV0dXJuIG99KG4pO28mJihlPW8rIi9za2luLm1pbi5jc3MiLG4uY29udGVudENTUy5wdXNoKG8rKHQ/Ii9jb250ZW50LmlubGluZSI6Ii9jb250ZW50IikrIi5taW4uY3NzIikpLCExPT0oITE9PT1uLmdldFBhcmFtKCJza2luIikpJiZlP2hoLkRPTS5zdHlsZVNoZWV0TG9hZGVyLmxvYWQoZSxUQihuKSxFQihuLCJTa2luIGNvdWxkIG5vdCBiZSBsb2FkZWQiKSk6VEIobikoKX0sREI9ZyhCQiwhMSksTUI9ZyhCQiwhMCksQUI9ZnVuY3Rpb24oZSx0LG8scil7dmFyIG49dC5vdXRlckNvbnRhaW5lcixpPW8udG9vbGJhcix1PW8uYnV0dG9ucztpZihFKGksUykpe3ZhciBhPWkubWFwKGZ1bmN0aW9uKHQpe3ZhciBuPXt0b29sYmFyOnQsYnV0dG9uczp1LGFsbG93VG9vbGJhckdyb3VwczpvLmFsbG93VG9vbGJhckdyb3Vwc307cmV0dXJuIGxFKGUsbix7YmFja3N0YWdlOnJ9LHN0Lm5vbmUoKSl9KTtrQi5zZXRUb29sYmFycyhuLGEpfWVsc2Uga0Iuc2V0VG9vbGJhcihuLGxFKGUsbyx7YmFja3N0YWdlOnJ9LHN0Lm5vbmUoKSkpfSxGQj1oaC5ET00sSUI9UGUoKSxSQj1JQi5vcy5pc2lPUygpJiZJQi5vcy52ZXJzaW9uLm1ham9yPD0xMixWQj1mdW5jdGlvbihvKXt2YXIgZT1vLmdldFdpbigpLHQ9by5nZXREb2MoKS5kb2N1bWVudEVsZW1lbnQscj1jZShvdShlLmlubmVyV2lkdGgsZS5pbm5lckhlaWdodCkpLGk9Y2Uob3UodC5vZmZzZXRXaWR0aCx0Lm9mZnNldEhlaWdodCkpLG49ZnVuY3Rpb24odCl7dmFyIG49ci5nZXQoKTtuLmxlZnQoKT09PWUuaW5uZXJXaWR0aCYmbi50b3AoKT09PWUuaW5uZXJIZWlnaHR8fChyLnNldChvdShlLmlubmVyV2lkdGgsZS5pbm5lckhlaWdodCkpLEl2KG8sdCkpfSx1PWZ1bmN0aW9uKHQpe3ZhciBuPW8uZ2V0RG9jKCkuZG9jdW1lbnRFbGVtZW50LGU9aS5nZXQoKTtlLmxlZnQoKT09PW4ub2Zmc2V0V2lkdGgmJmUudG9wKCk9PT1uLm9mZnNldEhlaWdodHx8KGkuc2V0KG91KG4ub2Zmc2V0V2lkdGgsbi5vZmZzZXRIZWlnaHQpKSxJdihvLHQpKX0sYT1mdW5jdGlvbih0KXtyZXR1cm4gbj10LG8uZmlyZSgiU2Nyb2xsQ29udGVudCIsbik7dmFyIG59O0ZCLmJpbmQoZSwicmVzaXplIixuKSxGQi5iaW5kKGUsInNjcm9sbCIsYSk7dmFyIGM9eGIobGUuZnJvbURvbShvLmdldEJvZHkoKSksImxvYWQiLHUpO28ub24oIk5vZGVDaGFuZ2UiLHUpLG8ub24oInJlbW92ZSIsZnVuY3Rpb24oKXtjLnVuYmluZCgpLEZCLnVuYmluZChlLCJyZXNpemUiLG4pLEZCLnVuYmluZChlLCJzY3JvbGwiLGEpfSl9LEhCPS8qICovT2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwscmVuZGVyOmZ1bmN0aW9uKGUsbyx0LG4scil7dmFyIGksdSxhPWNlKDApO0RCKGUpLGk9bGUuZnJvbURvbShyLnRhcmdldE5vZGUpLHU9by5tb3RoZXJzaGlwLExzKGksdSxwciksTnMoX2koKSxvLnVpTW90aGVyc2hpcCksZS5vbigiUG9zdFJlbmRlciIsZnVuY3Rpb24oKXtBQihlLG8sdCxuKSxhLnNldChlLmdldFdpbigpLmlubmVyV2lkdGgpLGtCLnNldE1lbnViYXIoby5vdXRlckNvbnRhaW5lcixfQihlLHQpKSxrQi5zZXRTaWRlYmFyKG8ub3V0ZXJDb250YWluZXIsdC5zaWRlYmFyKSxWQihlKX0pO3ZhciBjLHMsbCxmPWtCLmdldFNvY2tldChvLm91dGVyQ29udGFpbmVyKS5nZXRPckRpZSgiQ291bGQgbm90IGZpbmQgZXhwZWN0ZWQgc29ja2V0IGVsZW1lbnQiKTtpZighMD09PVJCKXtNaShmLmVsZW1lbnQoKSx7b3ZlcmZsb3c6InNjcm9sbCIsIi13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nIjoidG91Y2gifSk7dmFyIGQ9KGM9ZnVuY3Rpb24oKXtlLmZpcmUoIlNjcm9sbENvbnRlbnQiKX0scz0yMCxsPW51bGwse2NhbmNlbDpmdW5jdGlvbigpe251bGwhPT1sJiYobnQuY2xlYXJUaW1lb3V0KGwpLGw9bnVsbCl9LHRocm90dGxlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PVtdLG49MDtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXRbbl09YXJndW1lbnRzW25dO251bGw9PT1sJiYobD1udC5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yy5hcHBseShudWxsLHQpLGw9bnVsbH0scykpfX0pO3liKGYuZWxlbWVudCgpLCJzY3JvbGwiLGQudGhyb3R0bGUpfWpoKGUsbyksZS5hZGRDb21tYW5kKCJUb2dnbGVTaWRlYmFyIixmdW5jdGlvbih0LG4pe2tCLnRvZ2dsZVNpZGViYXIoby5vdXRlckNvbnRhaW5lcixuKSxlLmZpcmUoIlRvZ2dsZVNpZGViYXIiKX0pLGUuYWRkUXVlcnlWYWx1ZUhhbmRsZXIoIlRvZ2dsZVNpZGViYXIiLGZ1bmN0aW9uKCl7cmV0dXJuIGtCLndoaWNoU2lkZWJhcihvLm91dGVyQ29udGFpbmVyKX0pO3ZhciBtPURoKGUpO3JldHVybiBtIT09S2cuc2xpZGluZyYmbSE9PUtnLmZsb2F0aW5nfHxlLm9uKCJSZXNpemVXaW5kb3cgUmVzaXplRWRpdG9yIFJlc2l6ZUNvbnRlbnQiLGZ1bmN0aW9uKCl7dmFyIHQ9ZS5nZXRXaW4oKS5pbm5lcldpZHRoO3QhPT1hLmdldCgpJiYoa0IucmVmcmVzaFRvb2xiYXIoby5vdXRlckNvbnRhaW5lciksYS5zZXQodCkpfSkse2lmcmFtZUNvbnRhaW5lcjpmLmVsZW1lbnQoKS5kb20oKSxlZGl0b3JDb250YWluZXI6by5vdXRlckNvbnRhaW5lci5lbGVtZW50KCkuZG9tKCl9fX0pLFBCPWZ1bmN0aW9uKCl7cmV0dXJuIHQ9ZnVuY3Rpb24odCl7dC51bmJpbmQoKX0sbj1jZShzdC5ub25lKCkpLGU9ZnVuY3Rpb24oKXtuLmdldCgpLmVhY2godCl9LHtjbGVhcjpmdW5jdGlvbigpe2UoKSxuLnNldChzdC5ub25lKCkpfSxpc1NldDpmdW5jdGlvbigpe3JldHVybiBuLmdldCgpLmlzU29tZSgpfSxzZXQ6ZnVuY3Rpb24odCl7ZSgpLG4uc2V0KHN0LnNvbWUodCkpfX07dmFyIHQsbixlfSx6Qj1mdW5jdGlvbih0KXtyZXR1cm4vXlswLTlcLl0rKHxweCkkL2kudGVzdCgiIit0KT9zdC5zb21lKHBhcnNlSW50KCIiK3QsMTApKTpzdC5ub25lKCl9LE5CPWZ1bmN0aW9uKHQpe3JldHVybiBydCh0KT90KyJweCI6dH0sTEI9ZnVuY3Rpb24obix0LGUpe3ZhciBvPXQuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiBuPHR9KSxyPWUuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0PG59KTtyZXR1cm4gby5vcihyKS5nZXRPcihuKX0sakI9ZnVuY3Rpb24odCl7dmFyIG4sZSxvLHI7cmV0dXJuKGU9Ymgobj10KSxvPXdoKG4pLHI9a2gobiksekIoZSkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBMQih0LG8scil9KSkuZ2V0T3IoYmgodCkpfSxVQj1mdW5jdGlvbih0KXt2YXIgbj15aCh0KSxlPXhoKHQpLG89U2godCk7cmV0dXJuIHpCKG4pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gTEIodCxlLG8pfSl9LFdCPWZ1bmN0aW9uKGEsYyx0LG4scyl7dmFyIGU9dC51aU1vdGhlcnNoaXAsbD10Lm91dGVyQ29udGFpbmVyLG89aGguRE9NLGY9VmgoYSksZD1QaChhKSxtPVNoKGEpLm9yKFVCKGEpKSxyPW4uc2hhcmVkLmhlYWRlcixnPXIuaXNQb3NpdGlvbmVkQXRUb3AsaT1EaChhKSxwPWk9PT1LZy5zbGlkaW5nfHxpPT09S2cuZmxvYXRpbmcsdT1jZSghMSksaD1mdW5jdGlvbigpe3JldHVybiB1LmdldCgpJiYhYS5yZW1vdmVkfSx2PWZ1bmN0aW9uKHQpe3JldHVybiBwP3QuZm9sZChmdW5jdGlvbigpe3JldHVybiAwfSxmdW5jdGlvbih0KXtyZXR1cm4gMTx0LmNvbXBvbmVudHMoKS5sZW5ndGg/dHUodC5jb21wb25lbnRzKClbMV0uZWxlbWVudCgpKTowfSk6MH0sYj1mdW5jdGlvbigpe2UuYnJvYWRjYXN0T24oW3RsKCldLHt9KX0seT1mdW5jdGlvbih0KXtpZih2b2lkIDA9PT10JiYodD0hMSksaCgpKXt2YXIgbixlLG8scixpO2lmKGZ8fChuPW0uZ2V0T3JUaHVuayhmdW5jdGlvbigpe3ZhciB0PXpCKEZpKF9pKCksIm1hcmdpbi1sZWZ0IikpLmdldE9yKDApO3JldHVybiBjdShfaSgpKS1pdShjKS5sZWZ0KCkrdH0pLERpKHMuZ2V0KCkuZWxlbWVudCgpLCJtYXgtd2lkdGgiLG4rInB4IikpLHAmJmtCLnJlZnJlc2hUb29sYmFyKGwpLGZ8fChlPWtCLmdldFRvb2xiYXIobCksbz12KGUpLHI9d3UoYyksaT1nKCk/TWF0aC5tYXgoci55LXR1KHMuZ2V0KCkuZWxlbWVudCgpKStvLDApOnIuYm90dG9tLE1pKGwuZWxlbWVudCgpLHtwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDpNYXRoLnJvdW5kKGkpKyJweCIsbGVmdDpNYXRoLnJvdW5kKHIueCkrInB4In0pKSxkKXt2YXIgdT1zLmdldCgpO3Q/TEUucmVzZXQodSk6TEUucmVmcmVzaCh1KX1iKCl9fSx4PWZ1bmN0aW9uKHQpe2lmKHZvaWQgMD09PXQmJih0PSEwKSwhZiYmZCYmaCgpKXt2YXIgbj1yLmdldERvY2tpbmdNb2RlKCksZT1mdW5jdGlvbih0KXtzd2l0Y2goRmgoYSkpe2Nhc2UgRWguYXV0bzp2YXIgbj1rQi5nZXRUb29sYmFyKGwpLGU9dihuKSxvPXR1KHQuZWxlbWVudCgpKS1lLHI9d3UoYyk7aWYoci55Pm8pcmV0dXJuInRvcCI7dmFyIGk9Y3IoYyksdT1NYXRoLm1heChpLmRvbSgpLnNjcm9sbEhlaWdodCx0dShpKSk7cmV0dXJuIHIuYm90dG9tPHUtb3x8a3UoKS5ib3R0b208ci5ib3R0b20tbz8iYm90dG9tIjoidG9wIjtjYXNlIEVoLmJvdHRvbTpyZXR1cm4iYm90dG9tIjtjYXNlIEVoLnRvcDpkZWZhdWx0OnJldHVybiJ0b3AifX0ocy5nZXQoKSk7ZSE9PW4mJihmdW5jdGlvbih0KXt2YXIgbj1zLmdldCgpO0xFLnNldE1vZGVzKG4sW3RdKSxyLnNldERvY2tpbmdNb2RlKHQpO3ZhciBlPWcoKT9IdS5Ub3BUb0JvdHRvbTpIdS5Cb3R0b21Ub1RvcDtCcihuLmVsZW1lbnQoKSxPYyxlKX0oZSksdCYmeSghMCkpfX07cmV0dXJue2lzVmlzaWJsZTpoLGlzUG9zaXRpb25lZEF0VG9wOmcsc2hvdzpmdW5jdGlvbigpe3Uuc2V0KCEwKSxEaShsLmVsZW1lbnQoKSwiZGlzcGxheSIsImZsZXgiKSxvLmFkZENsYXNzKGEuZ2V0Qm9keSgpLCJtY2UtZWRpdC1mb2N1cyIpLEhpKGUuZWxlbWVudCgpLCJkaXNwbGF5IikseCghMSkseSgpfSxoaWRlOmZ1bmN0aW9uKCl7dS5zZXQoITEpLHQub3V0ZXJDb250YWluZXImJihEaShsLmVsZW1lbnQoKSwiZGlzcGxheSIsIm5vbmUiKSxvLnJlbW92ZUNsYXNzKGEuZ2V0Qm9keSgpLCJtY2UtZWRpdC1mb2N1cyIpKSxEaShlLmVsZW1lbnQoKSwiZGlzcGxheSIsIm5vbmUiKX0sdXBkYXRlOnksdXBkYXRlTW9kZTp4LHJlcG9zaXRpb25Qb3B1cHM6Yn19LEdCPWZ1bmN0aW9uKHQsbil7dmFyIGU9d3UodCk7cmV0dXJue3BvczpuP2UueTplLmJvdHRvbSxib3VuZHM6ZX19LFhCPS8qICovT2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwscmVuZGVyOmZ1bmN0aW9uKG4sZSxvLHIsdCl7dmFyIGk9ZS5tb3RoZXJzaGlwLHU9ZS51aU1vdGhlcnNoaXAsYT1lLm91dGVyQ29udGFpbmVyLGM9Y2UobnVsbCkscz1sZS5mcm9tRG9tKHQudGFyZ2V0Tm9kZSksbD1XQihuLHMsZSxyLGMpO01CKG4pO3ZhciBmPWZ1bmN0aW9uKCl7aWYoYy5nZXQoKSlsLnNob3coKTtlbHNle2Muc2V0KGtCLmdldEhlYWRlcihhKS5nZXRPckRpZSgpKTt2YXIgdD1SaChuKS5nZXRPcihfaSgpKTtOcyh0LGkpLE5zKHQsdSksQUIobixlLG8sciksa0Iuc2V0TWVudWJhcihhLF9CKG4sbykpLGwuc2hvdygpLGZ1bmN0aW9uKGMscyxsKXt2YXIgZj1jZShHQihzLGwuaXNQb3NpdGlvbmVkQXRUb3AoKSkpLG49ZnVuY3Rpb24odCl7dmFyIG49R0IocyxsLmlzUG9zaXRpb25lZEF0VG9wKCkpLGU9bi5wb3Msbz1uLmJvdW5kcyxyPWYuZ2V0KCksaT1yLnBvcyx1PXIuYm91bmRzLGE9by5oZWlnaHQhPT11LmhlaWdodHx8by53aWR0aCE9PXUud2lkdGg7Zi5zZXQoe3BvczplLGJvdW5kczpvfSksYSYmSXYoYyx0KSxsLmlzVmlzaWJsZSgpJiYoaSE9PWU/bC51cGRhdGUoITApOmEmJihsLnVwZGF0ZU1vZGUoKSxsLnJlcG9zaXRpb25Qb3B1cHMoKSkpfTtjLm9uKCJhY3RpdmF0ZSIsbC5zaG93KSxjLm9uKCJkZWFjdGl2YXRlIixsLmhpZGUpLGMub24oIlNraW5Mb2FkZWQgUmVzaXplV2luZG93IixmdW5jdGlvbigpe3JldHVybiBsLnVwZGF0ZSghMCl9KSxjLm9uKCJOb2RlQ2hhbmdlIGtleWRvd24iLGZ1bmN0aW9uKHQpe0xnLnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpe3JldHVybiBuKHQpfSl9KSxjLm9uKCJTY3JvbGxXaW5kb3ciLGZ1bmN0aW9uKCl7cmV0dXJuIGwudXBkYXRlTW9kZSgpfSk7dmFyIHQ9UEIoKTt0LnNldCh4YihsZS5mcm9tRG9tKGMuZ2V0Qm9keSgpKSwibG9hZCIsbikpLGMub24oInJlbW92ZSIsZnVuY3Rpb24oKXt0LmNsZWFyKCl9KX0obixzLGwpLG4ubm9kZUNoYW5nZWQoKX19O3JldHVybiBuLm9uKCJmb2N1cyIsZiksbi5vbigiYmx1ciBoaWRlIixsLmhpZGUpLG4ub24oImluaXQiLGZ1bmN0aW9uKCl7bi5oYXNGb2N1cygpJiZmKCl9KSxqaChuLGUpLHtlZGl0b3JDb250YWluZXI6YS5lbGVtZW50KCkuZG9tKCl9fX0pLFlCPWZ1bmN0aW9uKHQsbil7cmV0dXJuIGZ1bmN0aW9uKCl7dC5leGVjQ29tbWFuZCgibWNlVG9nZ2xlRm9ybWF0IiwhMSxuKX19LHFCPWZ1bmN0aW9uKHQpe3ZhciBuLGU7IWZ1bmN0aW9uKGUpe3VDLmVhY2goW3tuYW1lOiJib2xkIix0ZXh0OiJCb2xkIixpY29uOiJib2xkIn0se25hbWU6Iml0YWxpYyIsdGV4dDoiSXRhbGljIixpY29uOiJpdGFsaWMifSx7bmFtZToidW5kZXJsaW5lIix0ZXh0OiJVbmRlcmxpbmUiLGljb246InVuZGVybGluZSJ9LHtuYW1lOiJzdHJpa2V0aHJvdWdoIix0ZXh0OiJTdHJpa2V0aHJvdWdoIixpY29uOiJzdHJpa2UtdGhyb3VnaCJ9LHtuYW1lOiJzdWJzY3JpcHQiLHRleHQ6IlN1YnNjcmlwdCIsaWNvbjoic3Vic2NyaXB0In0se25hbWU6InN1cGVyc2NyaXB0Iix0ZXh0OiJTdXBlcnNjcmlwdCIsaWNvbjoic3VwZXJzY3JpcHQifV0sZnVuY3Rpb24odCxuKXtlLnVpLnJlZ2lzdHJ5LmFkZFRvZ2dsZUJ1dHRvbih0Lm5hbWUse3Rvb2x0aXA6dC50ZXh0LGljb246dC5pY29uLG9uU2V0dXA6dEUoZSx0Lm5hbWUpLG9uQWN0aW9uOllCKGUsdC5uYW1lKX0pfSk7Zm9yKHZhciB0PTE7dDw9Njt0Kyspe3ZhciBuPSJoIit0O2UudWkucmVnaXN0cnkuYWRkVG9nZ2xlQnV0dG9uKG4se3RleHQ6bi50b1VwcGVyQ2FzZSgpLHRvb2x0aXA6IkhlYWRpbmcgIit0LG9uU2V0dXA6dEUoZSxuKSxvbkFjdGlvbjpZQihlLG4pfSl9fSh0KSxuPXQsdUMuZWFjaChbe25hbWU6ImN1dCIsdGV4dDoiQ3V0IixhY3Rpb246IkN1dCIsaWNvbjoiY3V0In0se25hbWU6ImNvcHkiLHRleHQ6IkNvcHkiLGFjdGlvbjoiQ29weSIsaWNvbjoiY29weSJ9LHtuYW1lOiJwYXN0ZSIsdGV4dDoiUGFzdGUiLGFjdGlvbjoiUGFzdGUiLGljb246InBhc3RlIn0se25hbWU6ImhlbHAiLHRleHQ6IkhlbHAiLGFjdGlvbjoibWNlSGVscCIsaWNvbjoiaGVscCJ9LHtuYW1lOiJzZWxlY3RhbGwiLHRleHQ6IlNlbGVjdCBhbGwiLGFjdGlvbjoiU2VsZWN0QWxsIixpY29uOiJzZWxlY3QtYWxsIn0se25hbWU6Im5ld2RvY3VtZW50Iix0ZXh0OiJOZXcgZG9jdW1lbnQiLGFjdGlvbjoibWNlTmV3RG9jdW1lbnQiLGljb246Im5ldy1kb2N1bWVudCJ9LHtuYW1lOiJyZW1vdmVmb3JtYXQiLHRleHQ6IkNsZWFyIGZvcm1hdHRpbmciLGFjdGlvbjoiUmVtb3ZlRm9ybWF0IixpY29uOiJyZW1vdmUtZm9ybWF0dGluZyJ9LHtuYW1lOiJyZW1vdmUiLHRleHQ6IlJlbW92ZSIsYWN0aW9uOiJEZWxldGUiLGljb246InJlbW92ZSJ9XSxmdW5jdGlvbih0KXtuLnVpLnJlZ2lzdHJ5LmFkZEJ1dHRvbih0Lm5hbWUse3Rvb2x0aXA6dC50ZXh0LGljb246dC5pY29uLG9uQWN0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIG4uZXhlY0NvbW1hbmQodC5hY3Rpb24pfX0pfSksZT10LHVDLmVhY2goW3tuYW1lOiJibG9ja3F1b3RlIix0ZXh0OiJCbG9ja3F1b3RlIixhY3Rpb246Im1jZUJsb2NrUXVvdGUiLGljb246InF1b3RlIn1dLGZ1bmN0aW9uKHQpe2UudWkucmVnaXN0cnkuYWRkVG9nZ2xlQnV0dG9uKHQubmFtZSx7dG9vbHRpcDp0LnRleHQsaWNvbjp0Lmljb24sb25BY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gZS5leGVjQ29tbWFuZCh0LmFjdGlvbil9LG9uU2V0dXA6dEUoZSx0Lm5hbWUpfSl9KX0sS0I9ZnVuY3Rpb24odCl7dmFyIG47cUIodCksbj10LHVDLmVhY2goW3tuYW1lOiJib2xkIix0ZXh0OiJCb2xkIixhY3Rpb246IkJvbGQiLGljb246ImJvbGQiLHNob3J0Y3V0OiJNZXRhK0IifSx7bmFtZToiaXRhbGljIix0ZXh0OiJJdGFsaWMiLGFjdGlvbjoiSXRhbGljIixpY29uOiJpdGFsaWMiLHNob3J0Y3V0OiJNZXRhK0kifSx7bmFtZToidW5kZXJsaW5lIix0ZXh0OiJVbmRlcmxpbmUiLGFjdGlvbjoiVW5kZXJsaW5lIixpY29uOiJ1bmRlcmxpbmUiLHNob3J0Y3V0OiJNZXRhK1UifSx7bmFtZToic3RyaWtldGhyb3VnaCIsdGV4dDoiU3RyaWtldGhyb3VnaCIsYWN0aW9uOiJTdHJpa2V0aHJvdWdoIixpY29uOiJzdHJpa2UtdGhyb3VnaCIsc2hvcnRjdXQ6IiJ9LHtuYW1lOiJzdWJzY3JpcHQiLHRleHQ6IlN1YnNjcmlwdCIsYWN0aW9uOiJTdWJzY3JpcHQiLGljb246InN1YnNjcmlwdCIsc2hvcnRjdXQ6IiJ9LHtuYW1lOiJzdXBlcnNjcmlwdCIsdGV4dDoiU3VwZXJzY3JpcHQiLGFjdGlvbjoiU3VwZXJzY3JpcHQiLGljb246InN1cGVyc2NyaXB0IixzaG9ydGN1dDoiIn0se25hbWU6InJlbW92ZWZvcm1hdCIsdGV4dDoiQ2xlYXIgZm9ybWF0dGluZyIsYWN0aW9uOiJSZW1vdmVGb3JtYXQiLGljb246InJlbW92ZS1mb3JtYXR0aW5nIixzaG9ydGN1dDoiIn0se25hbWU6Im5ld2RvY3VtZW50Iix0ZXh0OiJOZXcgZG9jdW1lbnQiLGFjdGlvbjoibWNlTmV3RG9jdW1lbnQiLGljb246Im5ldy1kb2N1bWVudCIsc2hvcnRjdXQ6IiJ9LHtuYW1lOiJjdXQiLHRleHQ6IkN1dCIsYWN0aW9uOiJDdXQiLGljb246ImN1dCIsc2hvcnRjdXQ6Ik1ldGErWCJ9LHtuYW1lOiJjb3B5Iix0ZXh0OiJDb3B5IixhY3Rpb246IkNvcHkiLGljb246ImNvcHkiLHNob3J0Y3V0OiJNZXRhK0MifSx7bmFtZToicGFzdGUiLHRleHQ6IlBhc3RlIixhY3Rpb246IlBhc3RlIixpY29uOiJwYXN0ZSIsc2hvcnRjdXQ6Ik1ldGErViJ9LHtuYW1lOiJzZWxlY3RhbGwiLHRleHQ6IlNlbGVjdCBhbGwiLGFjdGlvbjoiU2VsZWN0QWxsIixpY29uOiJzZWxlY3QtYWxsIixzaG9ydGN1dDoiTWV0YStBIn1dLGZ1bmN0aW9uKHQpe24udWkucmVnaXN0cnkuYWRkTWVudUl0ZW0odC5uYW1lLHt0ZXh0OnQudGV4dCxpY29uOnQuaWNvbixzaG9ydGN1dDp0LnNob3J0Y3V0LG9uQWN0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIG4uZXhlY0NvbW1hbmQodC5hY3Rpb24pfX0pfSksbi51aS5yZWdpc3RyeS5hZGRNZW51SXRlbSgiY29kZWZvcm1hdCIse3RleHQ6IkNvZGUiLGljb246InNvdXJjZWNvZGUiLG9uQWN0aW9uOllCKG4sImNvZGUiKX0pfSxKQj1mdW5jdGlvbih0LG4sZSl7dmFyIG89ZnVuY3Rpb24oKXtyZXR1cm4hIW4udW5kb01hbmFnZXImJm4udW5kb01hbmFnZXJbZV0oKX0scj1mdW5jdGlvbigpe3Quc2V0RGlzYWJsZWQobi5tb2RlLmlzUmVhZE9ubHkoKXx8IW8oKSl9O3JldHVybiB0LnNldERpc2FibGVkKCFvKCkpLG4ub24oIlVuZG8gUmVkbyBBZGRVbmRvIFR5cGluZ1VuZG8gQ2xlYXJVbmRvcyBTd2l0Y2hNb2RlIixyKSxmdW5jdGlvbigpe3JldHVybiBuLm9mZigiVW5kbyBSZWRvIEFkZFVuZG8gVHlwaW5nVW5kbyBDbGVhclVuZG9zIFN3aXRjaE1vZGUiLHIpfX0sJEI9ZnVuY3Rpb24odCl7dmFyIG4sZTsobj10KS51aS5yZWdpc3RyeS5hZGRNZW51SXRlbSgidW5kbyIse3RleHQ6IlVuZG8iLGljb246InVuZG8iLHNob3J0Y3V0OiJNZXRhK1oiLG9uU2V0dXA6ZnVuY3Rpb24odCl7cmV0dXJuIEpCKHQsbiwiaGFzVW5kbyIpfSxvbkFjdGlvbjpmdW5jdGlvbigpe3JldHVybiBuLmV4ZWNDb21tYW5kKCJ1bmRvIil9fSksbi51aS5yZWdpc3RyeS5hZGRNZW51SXRlbSgicmVkbyIse3RleHQ6IlJlZG8iLGljb246InJlZG8iLHNob3J0Y3V0OiJNZXRhK1kiLG9uU2V0dXA6ZnVuY3Rpb24odCl7cmV0dXJuIEpCKHQsbiwiaGFzUmVkbyIpfSxvbkFjdGlvbjpmdW5jdGlvbigpe3JldHVybiBuLmV4ZWNDb21tYW5kKCJyZWRvIil9fSksKGU9dCkudWkucmVnaXN0cnkuYWRkQnV0dG9uKCJ1bmRvIix7dG9vbHRpcDoiVW5kbyIsaWNvbjoidW5kbyIsb25TZXR1cDpmdW5jdGlvbih0KXtyZXR1cm4gSkIodCxlLCJoYXNVbmRvIil9LG9uQWN0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIGUuZXhlY0NvbW1hbmQoInVuZG8iKX19KSxlLnVpLnJlZ2lzdHJ5LmFkZEJ1dHRvbigicmVkbyIse3Rvb2x0aXA6IlJlZG8iLGljb246InJlZG8iLG9uU2V0dXA6ZnVuY3Rpb24odCl7cmV0dXJuIEpCKHQsZSwiaGFzUmVkbyIpfSxvbkFjdGlvbjpmdW5jdGlvbigpe3JldHVybiBlLmV4ZWNDb21tYW5kKCJyZWRvIil9fSl9LFFCPWZ1bmN0aW9uKHQsbil7dmFyIGUsbyxyLGksdSxhLGMscyxsLGYsZCxtLGcscDtyPVBUKDAsbz1uLFdUKGU9dCkpLGUudWkucmVnaXN0cnkuYWRkTmVzdGVkTWVudUl0ZW0oImFsaWduIix7dGV4dDpvLnNoYXJlZC5wcm92aWRlcnMudHJhbnNsYXRlKCJBbGlnbiIpLGdldFN1Ym1lbnVJdGVtczpmdW5jdGlvbigpe3JldHVybiByLml0ZW1zLnZhbGlkYXRlSXRlbXMoci5nZXRTdHlsZUl0ZW1zKCkpfX0pLGE9UFQoMCx1PW4scVQoaT10KSksaS51aS5yZWdpc3RyeS5hZGROZXN0ZWRNZW51SXRlbSgiZm9udGZvcm1hdHMiLHt0ZXh0OnUuc2hhcmVkLnByb3ZpZGVycy50cmFuc2xhdGUoIkZvbnRzIiksZ2V0U3VibWVudUl0ZW1zOmZ1bmN0aW9uKCl7cmV0dXJuIGEuaXRlbXMudmFsaWRhdGVJdGVtcyhhLmdldFN0eWxlSXRlbXMoKSl9fSksYz10LGw9ZXQoe3R5cGU6ImFkdmFuY2VkIn0sKHM9bikuc3R5bGVzZWxlY3QpLGY9UFQoMCxzLG9FKGMsbCkpLGMudWkucmVnaXN0cnkuYWRkTmVzdGVkTWVudUl0ZW0oImZvcm1hdHMiLHt0ZXh0OiJGb3JtYXRzIixnZXRTdWJtZW51SXRlbXM6ZnVuY3Rpb24oKXtyZXR1cm4gZi5pdGVtcy52YWxpZGF0ZUl0ZW1zKGYuZ2V0U3R5bGVJdGVtcygpKX19KSxtPVBUKDAsbixlRShkPXQpKSxkLnVpLnJlZ2lzdHJ5LmFkZE5lc3RlZE1lbnVJdGVtKCJibG9ja2Zvcm1hdHMiLHt0ZXh0OiJCbG9ja3MiLGdldFN1Ym1lbnVJdGVtczpmdW5jdGlvbigpe3JldHVybiBtLml0ZW1zLnZhbGlkYXRlSXRlbXMobS5nZXRTdHlsZUl0ZW1zKCkpfX0pLHA9UFQoMCxuLCRUKGc9dCkpLGcudWkucmVnaXN0cnkuYWRkTmVzdGVkTWVudUl0ZW0oImZvbnRzaXplcyIse3RleHQ6IkZvbnQgc2l6ZXMiLGdldFN1Ym1lbnVJdGVtczpmdW5jdGlvbigpe3JldHVybiBwLml0ZW1zLnZhbGlkYXRlSXRlbXMocC5nZXRTdHlsZUl0ZW1zKCkpfX0pfSxaQj1mdW5jdGlvbih0LG4pe3ZhciBlLG8scixpOyFmdW5jdGlvbihuKXt1Qy5lYWNoKFt7bmFtZToiYWxpZ25sZWZ0Iix0ZXh0OiJBbGlnbiBsZWZ0IixjbWQ6Ikp1c3RpZnlMZWZ0IixpY29uOiJhbGlnbi1sZWZ0In0se25hbWU6ImFsaWduY2VudGVyIix0ZXh0OiJBbGlnbiBjZW50ZXIiLGNtZDoiSnVzdGlmeUNlbnRlciIsaWNvbjoiYWxpZ24tY2VudGVyIn0se25hbWU6ImFsaWducmlnaHQiLHRleHQ6IkFsaWduIHJpZ2h0IixjbWQ6Ikp1c3RpZnlSaWdodCIsaWNvbjoiYWxpZ24tcmlnaHQifSx7bmFtZToiYWxpZ25qdXN0aWZ5Iix0ZXh0OiJKdXN0aWZ5IixjbWQ6Ikp1c3RpZnlGdWxsIixpY29uOiJhbGlnbi1qdXN0aWZ5In1dLGZ1bmN0aW9uKHQpe24udWkucmVnaXN0cnkuYWRkVG9nZ2xlQnV0dG9uKHQubmFtZSx7dG9vbHRpcDp0LnRleHQsb25BY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gbi5leGVjQ29tbWFuZCh0LmNtZCl9LGljb246dC5pY29uLG9uU2V0dXA6dEUobix0Lm5hbWUpfSl9KTt2YXIgdD0iYWxpZ25ub25lIixlPSJObyBhbGlnbm1lbnQiLG89Ikp1c3RpZnlOb25lIixyPSJhbGlnbi1ub25lIjtuLnVpLnJlZ2lzdHJ5LmFkZEJ1dHRvbih0LHt0b29sdGlwOmUsb25BY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gbi5leGVjQ29tbWFuZChvKX0saWNvbjpyfSl9KHQpLEtCKHQpLFFCKHQsbiksJEIodCksZnVuY3Rpb24odCl7UnYodCk7dmFyIG49Y2UobnVsbCksZT1jZShudWxsKTtMdih0LCJmb3JlY29sb3IiLCJmb3JlY29sb3IiLCJUZXh0IGNvbG9yIixuKSxMdih0LCJiYWNrY29sb3IiLCJoaWxpdGVjb2xvciIsIkJhY2tncm91bmQgY29sb3IiLGUpLGp2KHQsImZvcmVjb2xvciIsImZvcmVjb2xvciIsIlRleHQgY29sb3IiKSxqdih0LCJiYWNrY29sb3IiLCJoaWxpdGVjb2xvciIsIkJhY2tncm91bmQgY29sb3IiKX0odCksKG89ZT10KS51aS5yZWdpc3RyeS5hZGRCdXR0b24oInZpc3VhbGFpZCIse3Rvb2x0aXA6IlZpc3VhbCBhaWRzIix0ZXh0OiJWaXN1YWwgYWlkcyIsb25BY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gby5leGVjQ29tbWFuZCgibWNlVG9nZ2xlVmlzdWFsQWlkIil9fSksKHI9ZSkudWkucmVnaXN0cnkuYWRkVG9nZ2xlTWVudUl0ZW0oInZpc3VhbGFpZCIse3RleHQ6IlZpc3VhbCBhaWRzIixvblNldHVwOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihuLHQpe24uc2V0QWN0aXZlKHQuaGFzVmlzdWFsKTt2YXIgZT1mdW5jdGlvbih0KXtuLnNldEFjdGl2ZSh0Lmhhc1Zpc3VhbCl9O3JldHVybiB0Lm9uKCJWaXN1YWxBaWQiLGUpLGZ1bmN0aW9uKCl7cmV0dXJuIHQub2ZmKCJWaXN1YWxBaWQiLGUpfX0odCxyKX0sb25BY3Rpb246ZnVuY3Rpb24oKXtyLmV4ZWNDb21tYW5kKCJtY2VUb2dnbGVWaXN1YWxBaWQiKX19KSwoaT10KS51aS5yZWdpc3RyeS5hZGRCdXR0b24oIm91dGRlbnQiLHt0b29sdGlwOiJEZWNyZWFzZSBpbmRlbnQiLGljb246Im91dGRlbnQiLG9uU2V0dXA6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7dC5zZXREaXNhYmxlZCghbi5xdWVyeUNvbW1hbmRTdGF0ZSgib3V0ZGVudCIpKTt2YXIgZT1mdW5jdGlvbigpe3Quc2V0RGlzYWJsZWQoIW4ucXVlcnlDb21tYW5kU3RhdGUoIm91dGRlbnQiKSl9O3JldHVybiBuLm9uKCJOb2RlQ2hhbmdlIixlKSxmdW5jdGlvbigpe3JldHVybiBuLm9mZigiTm9kZUNoYW5nZSIsZSl9fSh0LGkpfSxvbkFjdGlvbjpmdW5jdGlvbigpe3JldHVybiBpLmV4ZWNDb21tYW5kKCJvdXRkZW50Iil9fSksaS51aS5yZWdpc3RyeS5hZGRCdXR0b24oImluZGVudCIse3Rvb2x0aXA6IkluY3JlYXNlIGluZGVudCIsaWNvbjoiaW5kZW50IixvbkFjdGlvbjpmdW5jdGlvbigpe3JldHVybiBpLmV4ZWNDb21tYW5kKCJpbmRlbnQiKX19KX0sdEQ9ZnVuY3Rpb24odCxuKXtyZXR1cm57YW5jaG9yOiJtYWtlc2hpZnQiLHg6dCx5Om59fSxuRD1mdW5jdGlvbih0KXtyZXR1cm4ibG9uZ3ByZXNzIj09PXQudHlwZXx8MD09PXQudHlwZS5pbmRleE9mKCJ0b3VjaCIpfSxlRD1mdW5jdGlvbih0LG4pe3ZhciBlLG8scixpPWhoLkRPTS5nZXRQb3ModCk7cmV0dXJuIGU9bixvPWkueCxyPWkueSx0RChlLngrbyxlLnkrcil9LG9EPWZ1bmN0aW9uKHQsbil7cmV0dXJuImNvbnRleHRtZW51Ij09PW4udHlwZXx8ImxvbmdwcmVzcyI9PT1uLnR5cGU/dC5pbmxpbmU/ZnVuY3Rpb24odCl7aWYobkQodCkpe3ZhciBuPXQudG91Y2hlc1swXTtyZXR1cm4gdEQobi5wYWdlWCxuLnBhZ2VZKX1yZXR1cm4gdEQodC5wYWdlWCx0LnBhZ2VZKX0obik6ZUQodC5nZXRDb250ZW50QXJlYUNvbnRhaW5lcigpLGZ1bmN0aW9uKHQpe2lmKG5EKHQpKXt2YXIgbj10LnRvdWNoZXNbMF07cmV0dXJuIHREKG4uY2xpZW50WCxuLmNsaWVudFkpfXJldHVybiB0RCh0LmNsaWVudFgsdC5jbGllbnRZKX0obikpOnJEKHQpfSxyRD1mdW5jdGlvbih0KXtyZXR1cm57YW5jaG9yOiJzZWxlY3Rpb24iLHJvb3Q6bGUuZnJvbURvbSh0LnNlbGVjdGlvbi5nZXROb2RlKCkpfX0saUQ9ZnVuY3Rpb24odCl7cmV0dXJue2FuY2hvcjoibm9kZSIsbm9kZTpzdC5zb21lKGxlLmZyb21Eb20odC5zZWxlY3Rpb24uZ2V0Tm9kZSgpKSkscm9vdDpsZS5mcm9tRG9tKHQuZ2V0Qm9keSgpKX19LHVEPWZ1bmN0aW9uKHQsbixlLG8scixpKXt2YXIgdSxhLGM9ZSgpLHM9KHU9dCxhPW4saT9pRCh1KTpvRCh1LGEpKTtEayhjLCRoLkNMT1NFX09OX0VYRUNVVEUsbywhMSkubWFwKGZ1bmN0aW9uKHQpe24ucHJldmVudERlZmF1bHQoKSxCZy5zaG93TWVudUF0KHIscyx7bWVudTp7bWFya2VyczpHdigibm9ybWFsIil9LGRhdGE6dH0pfSl9LGFEPXtvbkx0cjpmdW5jdGlvbigpe3JldHVybltfYSx3YSxTYSxrYSxDYSxPYSx6ZyxOZyxIZyxSZyxQZyxWZ119LG9uUnRsOmZ1bmN0aW9uKCl7cmV0dXJuW19hLFNhLHdhLENhLGthLE9hLHpnLE5nLFBnLFZnLEhnLFJnXX19LGNEPXt2YWxpZ25DZW50cmU6W10sYWxpZ25DZW50cmU6W10sYWxpZ25MZWZ0OlsidG94LXBvcC0tYWxpZ24tbGVmdCJdLGFsaWduUmlnaHQ6WyJ0b3gtcG9wLS1hbGlnbi1yaWdodCJdLHJpZ2h0OlsidG94LXBvcC0tcmlnaHQiXSxsZWZ0OlsidG94LXBvcC0tbGVmdCJdLGJvdHRvbTpbInRveC1wb3AtLWJvdHRvbSJdLHRvcDpbInRveC1wb3AtLXRvcCJdfSxzRD1mdW5jdGlvbihuLGUsdCxvLHIsaSx1KXt2YXIgYSxjLHMsbD0oYT1uLGM9ZSxzPWk/aUQoYSk6b0QoYSxjKSxldCh7YnViYmxlOndjKDAsMTIsY0QpLGxheW91dHM6YUQsb3ZlcnJpZGVzOnttYXhXaWR0aEZ1bmN0aW9uOnpPKCksbWF4SGVpZ2h0RnVuY3Rpb246aGMoKX19LHMpKTtEayh0LCRoLkNMT1NFX09OX0VYRUNVVEUsbywhMCkubWFwKGZ1bmN0aW9uKHQpe2UucHJldmVudERlZmF1bHQoKSxCZy5zaG93TWVudVdpdGhpbkJvdW5kcyhyLGwse21lbnU6e21hcmtlcnM6R3YoIm5vcm1hbCIpLGhpZ2hsaWdodEltbWVkaWF0ZWx5OnV9LGRhdGE6dCx0eXBlOiJob3Jpem9udGFsIn0sZnVuY3Rpb24oKXtyZXR1cm4gc3Quc29tZShCVChuLG8uc2hhcmVkKSl9KSxuLmZpcmUoTk8pfSl9LGxEPWZ1bmN0aW9uKG4sZSxvLHIsaSx1KXt2YXIgdD1QZSgpLGE9dC5vcy5pc2lPUygpLGM9dC5vcy5pc09TWCgpLHM9dC5vcy5pc0FuZHJvaWQoKSxsPXQuZGV2aWNlVHlwZS5pc1RvdWNoKCksZj1mdW5jdGlvbigpe3ZhciB0PW8oKTtzRChuLGUsdCxyLGksdSwhKHN8fGF8fGMmJmwpKX07aWYoIWMmJiFhfHx1KXMmJiF1JiZuLnNlbGVjdGlvbi5zZXRDdXJzb3JMb2NhdGlvbihlLnRhcmdldCwwKSxmKCk7ZWxzZXt2YXIgZD1mdW5jdGlvbigpeyFmdW5jdGlvbih0KXt2YXIgbj10LnNlbGVjdGlvbi5nZXRSbmcoKSxlPWZ1bmN0aW9uKCl7TGcuc2V0RWRpdG9yVGltZW91dCh0LGZ1bmN0aW9uKCl7dC5zZWxlY3Rpb24uc2V0Um5nKG4pfSwxMCksaSgpfTt0Lm9uY2UoInRvdWNoZW5kIixlKTt2YXIgbz1mdW5jdGlvbih0KXt0LnByZXZlbnREZWZhdWx0KCksdC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX07dC5vbigibW91c2Vkb3duIixvLCEwKTt2YXIgcj1mdW5jdGlvbigpe3JldHVybiBpKCl9O3Qub25jZSgibG9uZ3ByZXNzY2FuY2VsIixyKTt2YXIgaT1mdW5jdGlvbigpe3Qub2ZmKCJ0b3VjaGVuZCIsZSksdC5vZmYoImxvbmdwcmVzc2NhbmNlbCIsciksdC5vZmYoIm1vdXNlZG93biIsbyl9fShuKSxmKCl9OyFmdW5jdGlvbih0LG4pe3ZhciBlPXQuc2VsZWN0aW9uO2lmKGUuaXNDb2xsYXBzZWQoKXx8bi50b3VjaGVzLmxlbmd0aDwxKXJldHVybiExO3ZhciBvPW4udG91Y2hlc1swXSxyPWUuZ2V0Um5nKCk7cmV0dXJuIEpjKHQuZ2V0V2luKCksUmMuZG9tUmFuZ2UocikpLmV4aXN0cyhmdW5jdGlvbih0KXtyZXR1cm4gdC5sZWZ0KCk8PW8uY2xpZW50WCYmdC5yaWdodCgpPj1vLmNsaWVudFgmJnQudG9wKCk8PW8uY2xpZW50WSYmdC5ib3R0b20oKT49by5jbGllbnRZfSl9KG4sZSk/KG4ub25jZSgic2VsZWN0aW9uY2hhbmdlIixkKSxuLm9uY2UoInRvdWNoZW5kIixmdW5jdGlvbigpe3JldHVybiBuLm9mZigic2VsZWN0aW9uY2hhbmdlIixkKX0pKTpkKCl9fSxmRD1mdW5jdGlvbih0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/dC5zcGxpdCgvWyAsXS8pOnR9LGREPWZ1bmN0aW9uKHQpe3JldHVybiB0LnNldHRpbmdzLmNvbnRleHRtZW51X25ldmVyX3VzZV9uYXRpdmV8fCExfSxtRD1mdW5jdGlvbih0KXtyZXR1cm4gZT0iY29udGV4dG1lbnUiLG89ImxpbmsgbGlua2NoZWNrZXIgaW1hZ2UgaW1hZ2V0b29scyB0YWJsZSBzcGVsbGNoZWNrZXIgY29uZmlndXJlcGVybWFuZW50cGVuIixyPShuPXQpLnVpLnJlZ2lzdHJ5LmdldEFsbCgpLmNvbnRleHRNZW51cyxidChuLnNldHRpbmdzLGUpLm1hcChmRCkuZ2V0T3JUaHVuayhmdW5jdGlvbigpe3JldHVybiBQKGZEKG8pLGZ1bmN0aW9uKHQpe3JldHVybiB5dChyLHQpfSl9KTt2YXIgbixlLG8scn0sZ0Q9ZnVuY3Rpb24odCl7cmV0dXJuIFModCk/InwiPT09dDoic2VwYXJhdG9yIj09PXQudHlwZX0scEQ9e3R5cGU6InNlcGFyYXRvciJ9LGhEPWZ1bmN0aW9uKG4pe2lmKFMobikpcmV0dXJuIG47c3dpdGNoKG4udHlwZSl7Y2FzZSJzZXBhcmF0b3IiOnJldHVybiBwRDtjYXNlInN1Ym1lbnUiOnJldHVybnt0eXBlOiJuZXN0ZWRtZW51aXRlbSIsdGV4dDpuLnRleHQsaWNvbjpuLmljb24sZ2V0U3VibWVudUl0ZW1zOmZ1bmN0aW9uKCl7dmFyIHQ9bi5nZXRTdWJtZW51SXRlbXMoKTtyZXR1cm4gUyh0KT90OlYodCxoRCl9fTtkZWZhdWx0OnJldHVybnt0eXBlOiJtZW51aXRlbSIsdGV4dDpuLnRleHQsaWNvbjpuLmljb24sb25BY3Rpb246KHQ9bi5vbkFjdGlvbixmdW5jdGlvbigpe3JldHVybiB0KCl9KX19dmFyIHR9LHZEPWZ1bmN0aW9uKHQsbil7aWYoMD09PW4ubGVuZ3RoKXJldHVybiB0O3ZhciBlPUoodCkuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiFnRCh0KX0pLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm5bXX0sZnVuY3Rpb24odCl7cmV0dXJuW3BEXX0pO3JldHVybiB0LmNvbmNhdChlKS5jb25jYXQobikuY29uY2F0KFtwRF0pfSxiRD1mdW5jdGlvbihjLHQsbyl7dmFyIHI9UGUoKS5kZXZpY2VUeXBlLmlzVG91Y2gsaT1KaShCZy5za2V0Y2goe2RvbTp7dGFnOiJkaXYifSxsYXp5U2luazp0LG9uRXNjYXBlOmZ1bmN0aW9uKCl7cmV0dXJuIGMuZm9jdXMoKX0sb25TaG93OmZ1bmN0aW9uKCl7cmV0dXJuIG8uc2V0Q29udGV4dE1lbnVTdGF0ZSghMCl9LG9uSGlkZTpmdW5jdGlvbigpe3JldHVybiBvLnNldENvbnRleHRNZW51U3RhdGUoITEpfSxmaXJlRGlzbWlzc2FsRXZlbnRJbnN0ZWFkOnt9LGlubGluZUJlaGF2aW91cnM6emEoW0xtKCJkaXNtaXNzQ29udGV4dE1lbnUiLFtKbyhGbygpLGZ1bmN0aW9uKHQsbil7UXMuY2xvc2UodCksYy5mb2N1cygpfSldKV0pfSkpLG49ZnVuY3Rpb24odCl7cmV0dXJuIEJnLmhpZGUoaSl9LGU9ZnVuY3Rpb24odSl7aWYoZEQoYykmJnUucHJldmVudERlZmF1bHQoKSx0PWMsKCF1LmN0cmxLZXl8fGREKHQpKSYmITEhPT1jLmdldFBhcmFtKCJjb250ZXh0bWVudSIpKXt2YXIgdCxuLGUsYT0obj1jLCJsb25ncHJlc3MiIT09KGU9dSkudHlwZSYmKDIhPT1lLmJ1dHRvbnx8ZS50YXJnZXQ9PT1uLmdldEJvZHkoKSYmIiI9PT1lLnBvaW50ZXJUeXBlKSk7KHIoKT9sRDp1RCkoYyx1LGZ1bmN0aW9uKCl7dmFyIHIsaSx0LG49YT9jLnNlbGVjdGlvbi5nZXRTdGFydCghMCk6dS50YXJnZXQsZT1jLnVpLnJlZ2lzdHJ5LmdldEFsbCgpLG89bUQoYyk7cmV0dXJuIHI9ZS5jb250ZXh0TWVudXMsaT1uLDA8KHQ9TihvLGZ1bmN0aW9uKHQsbil7aWYoeXQocixuKSl7dmFyIGU9cltuXS51cGRhdGUoaSk7aWYoUyhlKSlyZXR1cm4gdkQodCxlLnNwbGl0KCIgIikpO2lmKDA8ZS5sZW5ndGgpe3ZhciBvPVYoZSxoRCk7cmV0dXJuIHZEKHQsbyl9cmV0dXJuIHR9cmV0dXJuIHQuY29uY2F0KFtuXSl9LFtdKSkubGVuZ3RoJiZnRCh0W3QubGVuZ3RoLTFdKSYmdC5wb3AoKSx0fSxvLGksYSl9fTtjLm9uKCJpbml0IixmdW5jdGlvbigpe3ZhciB0PSJSZXNpemVFZGl0b3IgU2Nyb2xsQ29udGVudCBTY3JvbGxXaW5kb3cgbG9uZ3ByZXNzY2FuY2VsIisocigpPyIiOiIgUmVzaXplV2luZG93Iik7Yy5vbih0LG4pLGMub24oImxvbmdwcmVzcyBjb250ZXh0bWVudSIsZSl9KX0seUQ9d3QoW3tvZmZzZXQ6WyJ4IiwieSJdfSx7YWJzb2x1dGU6WyJ4IiwieSJdfSx7Zml4ZWQ6WyJ4IiwieSJdfV0pLHhEPWZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gdC50cmFuc2xhdGUoLW4ubGVmdCgpLC1uLnRvcCgpKX19LHdEPWZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gdC50cmFuc2xhdGUobi5sZWZ0KCksbi50b3AoKSl9fSxTRD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCxuKXtyZXR1cm4gTihlLGZ1bmN0aW9uKHQsbil7cmV0dXJuIG4odCl9LG91KHQsbikpfX0sa0Q9ZnVuY3Rpb24odCxuLGUpe3JldHVybiB0LmZvbGQoU0QoW3dEKGUpLHhEKG4pXSksU0QoW3hEKG4pXSksU0QoW10pKX0sQ0Q9ZnVuY3Rpb24odCxuLGUpe3JldHVybiB0LmZvbGQoU0QoW3dEKGUpXSksU0QoW10pLFNEKFt3RChuKV0pKX0sT0Q9ZnVuY3Rpb24odCxuLGUpe3JldHVybiB0LmZvbGQoU0QoW10pLFNEKFt4RChlKV0pLFNEKFt3RChuKSx4RChlKV0pKX0sX0Q9ZnVuY3Rpb24odCxuLGUpe3ZhciBvPXQuZm9sZChmdW5jdGlvbih0LG4pe3JldHVybntwb3NpdGlvbjpzdC5zb21lKCJhYnNvbHV0ZSIpLGxlZnQ6c3Quc29tZSh0KyJweCIpLHRvcDpzdC5zb21lKG4rInB4Iil9fSxmdW5jdGlvbih0LG4pe3JldHVybntwb3NpdGlvbjpzdC5zb21lKCJhYnNvbHV0ZSIpLGxlZnQ6c3Quc29tZSh0LWUubGVmdCgpKyJweCIpLHRvcDpzdC5zb21lKG4tZS50b3AoKSsicHgiKX19LGZ1bmN0aW9uKHQsbil7cmV0dXJue3Bvc2l0aW9uOnN0LnNvbWUoImZpeGVkIiksbGVmdDpzdC5zb21lKHQrInB4IiksdG9wOnN0LnNvbWUobisicHgiKX19KTtyZXR1cm4gZXQoe3JpZ2h0OnN0Lm5vbmUoKSxib3R0b206c3Qubm9uZSgpfSxvKX0sVEQ9ZnVuY3Rpb24odCxpLHUsYSl7dmFyIG49ZnVuY3Rpb24obyxyKXtyZXR1cm4gZnVuY3Rpb24odCxuKXt2YXIgZT1vKGksdSxhKTtyZXR1cm4gcih0LmdldE9yKGUubGVmdCgpKSxuLmdldE9yKGUudG9wKCkpKX19O3JldHVybiB0LmZvbGQobihPRCxFRCksbihDRCxCRCksbihrRCxERCkpfSxFRD15RC5vZmZzZXQsQkQ9eUQuYWJzb2x1dGUsREQ9eUQuZml4ZWQsTUQ9ZnVuY3Rpb24odCxuKXt2YXIgZT1Ecih0LG4pO3JldHVybiBfKGUpP05hTjpwYXJzZUludChlLDEwKX0sQUQ9ZnVuY3Rpb24odCxuLGUsbyl7cmV0dXJuIHI9bixpPXQuZWxlbWVudCgpLHU9TUQoaSxyLmxlZnRBdHRyKSxhPU1EKGksci50b3BBdHRyKSwoaXNOYU4odSl8fGlzTmFOKGEpP3N0Lm5vbmUoKTpzdC5zb21lKG91KHUsYSkpKS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIGV9LGZ1bmN0aW9uKHQpe3JldHVybiBERCh0LmxlZnQoKStvLmxlZnQoKSx0LnRvcCgpK28udG9wKCkpfSk7dmFyIHIsaSx1LGF9LEZEPWZ1bmN0aW9uKHQsbixlLG8scixpKXt2YXIgdSxhLGMscz1BRCh0LG4sZSxvKSxsPShuLm11c3RTbmFwP1ZEOkhEKSh0LG4scyxyLGkpLGY9a0QocyxyLGkpO3JldHVybiB1PW4sYT1mLGM9dC5lbGVtZW50KCksQnIoYyx1LmxlZnRBdHRyLGEubGVmdCgpKyJweCIpLEJyKGMsdS50b3BBdHRyLGEudG9wKCkrInB4IiksbC5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJue2Nvb3JkOkREKGYubGVmdCgpLGYudG9wKCkpLGV4dHJhOnN0Lm5vbmUoKX19LGZ1bmN0aW9uKHQpe3JldHVybntjb29yZDp0Lm91dHB1dCxleHRyYTp0LmV4dHJhfX0pfSxJRD1mdW5jdGlvbih0LG4pe3ZhciBlLG87ZT1uLG89dC5lbGVtZW50KCksRnIobyxlLmxlZnRBdHRyKSxGcihvLGUudG9wQXR0cil9LFJEPWZ1bmN0aW9uKHQsbCxmLGQpe3JldHVybiBRKHQsZnVuY3Rpb24odCl7dmFyIG4sZSxvLHIsaSx1LGEsYyxzPXQuc2Vuc29yO3JldHVybihuPWwsZT1zLG89dC5yYW5nZS5sZWZ0KCkscj10LnJhbmdlLnRvcCgpLGE9Q0QobixpPWYsdT1kKSxjPUNEKGUsaSx1KSxNYXRoLmFicyhhLmxlZnQoKS1jLmxlZnQoKSk8PW8mJk1hdGguYWJzKGEudG9wKCktYy50b3AoKSk8PXIpP3N0LnNvbWUoe291dHB1dDpURCh0Lm91dHB1dCxsLGYsZCksZXh0cmE6dC5leHRyYX0pOnN0Lm5vbmUoKX0pfSxWRD1mdW5jdGlvbih0LG4sZCxtLGcpe3ZhciBlPW4uZ2V0U25hcFBvaW50cyh0KTtyZXR1cm4gUkQoZSxkLG0sZykub3JUaHVuayhmdW5jdGlvbigpe3JldHVybiBOKGUsZnVuY3Rpb24obixlKXt2YXIgdCxvLHIsaSx1LGEsYyxzLGw9ZS5zZW5zb3IsZj0odD1kLG89bCxlLnJhbmdlLmxlZnQoKSxlLnJhbmdlLnRvcCgpLHU9Q0QodCxyPW0saT1nKSxhPUNEKG8scixpKSxjPU1hdGguYWJzKHUubGVmdCgpLWEubGVmdCgpKSxzPU1hdGguYWJzKHUudG9wKCktYS50b3AoKSksb3UoYyxzKSk7cmV0dXJuIG4uZGVsdGFzLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm57ZGVsdGFzOnN0LnNvbWUoZiksc25hcDpzdC5zb21lKGUpfX0sZnVuY3Rpb24odCl7cmV0dXJuKGYubGVmdCgpK2YudG9wKCkpLzI8PSh0LmxlZnQoKSt0LnRvcCgpKS8yP3tkZWx0YXM6c3Quc29tZShmKSxzbmFwOnN0LnNvbWUoZSl9Om59KX0se2RlbHRhczpzdC5ub25lKCksc25hcDpzdC5ub25lKCl9KS5zbmFwLm1hcChmdW5jdGlvbih0KXtyZXR1cm57b3V0cHV0OlREKHQub3V0cHV0LGQsbSxnKSxleHRyYTp0LmV4dHJhfX0pfSl9LEhEPWZ1bmN0aW9uKHQsbixlLG8scil7dmFyIGk9bi5nZXRTbmFwUG9pbnRzKHQpO3JldHVybiBSRChpLGUsbyxyKX0sUEQ9LyogKi9PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxzbmFwVG86ZnVuY3Rpb24odCxuLGUsbyl7dmFyIHIsaSx1LGE9bi5nZXRUYXJnZXQodC5lbGVtZW50KCkpO2lmKG4ucmVwb3NpdGlvblRhcmdldCl7dmFyIGM9YXIodC5lbGVtZW50KCkpLHM9bXUoYyksbD1rRShhKSxmPShpPXMsdT1sLHtjb29yZDpURCgocj1vKS5vdXRwdXQsci5vdXRwdXQsaSx1KSxleHRyYTpyLmV4dHJhfSksZD1fRChmLmNvb3JkLDAsbCk7QWkoYSxkKX19fSksekQ9ImRhdGEtaW5pdGlhbC16LWluZGV4IixORD1mdW5jdGlvbih0LG4pe3ZhciBlO3QuZ2V0U3lzdGVtKCkuYWRkVG9HdWkobiksbHIoKGU9bikuZWxlbWVudCgpKS5maWx0ZXIoX3IpLmVhY2goZnVuY3Rpb24obil7Umkobiwiei1pbmRleCIpLmVhY2goZnVuY3Rpb24odCl7QnIobix6RCx0KX0pLERpKG4sInotaW5kZXgiLEZpKGUuZWxlbWVudCgpLCJ6LWluZGV4IikpfSl9LExEPWZ1bmN0aW9uKHQpe2xyKHQuZWxlbWVudCgpKS5maWx0ZXIoX3IpLmVhY2goZnVuY3Rpb24obil7TXIobix6RCkuZm9sZChmdW5jdGlvbigpe3JldHVybiBIaShuLCJ6LWluZGV4Iil9LGZ1bmN0aW9uKHQpe3JldHVybiBEaShuLCJ6LWluZGV4Iix0KX0pLEZyKG4sekQpfSksdC5nZXRTeXN0ZW0oKS5yZW1vdmVGcm9tR3VpKHQpfSxqRD1mdW5jdGlvbih0LG4sZSl7cmV0dXJuIHQuZ2V0U3lzdGVtKCkuYnVpbGQoVWIuc2tldGNoKHtkb206e3N0eWxlczp7bGVmdDoiMHB4Iix0b3A6IjBweCIsd2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIscG9zaXRpb246ImZpeGVkIiwiei1pbmRleCI6IjEwMDAwMDAwMDAwMDAwMDAifSxjbGFzc2VzOltuXX0sZXZlbnRzOmV9KSl9LFVEPVFuKCJzbmFwcyIsW3puKCJnZXRTbmFwUG9pbnRzIiksJHUoIm9uU2Vuc29yIiksem4oImxlZnRBdHRyIiksem4oInRvcEF0dHIiKSxabigibGF6eVZpZXdwb3J0IixrdSksWm4oIm11c3RTbmFwIiwhMSldKSxXRD1bWm4oInVzZUZpeGVkIixjKSx6bigiYmxvY2tlckNsYXNzIiksWm4oImdldFRhcmdldCIsY3QpLFpuKCJvbkRyYWciLFopLFpuKCJyZXBvc2l0aW9uVGFyZ2V0IiwhMCksWm4oIm9uRHJvcCIsWiksaWUoImdldEJvdW5kcyIsa3UpLFVEXSxHRD1mdW5jdGlvbihuKXtyZXR1cm4gdD1SaShuLCJsZWZ0IiksZT1SaShuLCJ0b3AiKSxvPVJpKG4sInBvc2l0aW9uIikscj1mdW5jdGlvbih0LG4sZSl7cmV0dXJuKCJmaXhlZCI9PT1lP0REOkVEKShwYXJzZUludCh0LDEwKSxwYXJzZUludChuLDEwKSl9LCh0LmlzU29tZSgpJiZlLmlzU29tZSgpJiZvLmlzU29tZSgpP3N0LnNvbWUocih0LmdldE9yRGllKCksZS5nZXRPckRpZSgpLG8uZ2V0T3JEaWUoKSkpOnN0Lm5vbmUoKSkuZ2V0T3JUaHVuayhmdW5jdGlvbigpe3ZhciB0PWl1KG4pO3JldHVybiBCRCh0LmxlZnQoKSx0LnRvcCgpKX0pO3ZhciB0LGUsbyxyfSxYRD1mdW5jdGlvbihlLHQsaSx1LGEsYyxuKXt2YXIgbyxyLHMsbCxmLGQsbSxnLHAsaD10LmZvbGQoZnVuY3Rpb24oKXt2YXIgdCxlLG8sbj0odD1pLGU9Yy5sZWZ0KCksbz1jLnRvcCgpLHQuZm9sZChmdW5jdGlvbih0LG4pe3JldHVybiBFRCh0K2UsbitvKX0sZnVuY3Rpb24odCxuKXtyZXR1cm4gQkQodCtlLG4rbyl9LGZ1bmN0aW9uKHQsbil7cmV0dXJuIEREKHQrZSxuK28pfSkpLHI9a0Qobix1LGEpO3JldHVybiBERChyLmxlZnQoKSxyLnRvcCgpKX0sZnVuY3Rpb24obil7dmFyIHQ9RkQoZSxuLGksYyx1LGEpO3JldHVybiB0LmV4dHJhLmVhY2goZnVuY3Rpb24odCl7bi5vblNlbnNvcihlLHQpfSksdC5jb29yZH0pO3JldHVybiBvPWgscj11LHM9YSxmPShsPW4pLmJvdW5kcyxkPUNEKG8scixzKSxtPXNjKGQubGVmdCgpLGYueCxmLngrZi53aWR0aC1sLndpZHRoKSxnPXNjKGQudG9wKCksZi55LGYueStmLmhlaWdodC1sLmhlaWdodCkscD1CRChtLGcpLG8uZm9sZChmdW5jdGlvbigpe3ZhciB0PU9EKHAscixzKTtyZXR1cm4gRUQodC5sZWZ0KCksdC50b3AoKSl9LGZ1bmN0aW9uKCl7cmV0dXJuIHB9LGZ1bmN0aW9uKCl7dmFyIHQ9a0QocCxyLHMpO3JldHVybiBERCh0LmxlZnQoKSx0LnRvcCgpKX0pfSxZRD1mdW5jdGlvbih0LG4pe3JldHVybntib3VuZHM6dC5nZXRCb3VuZHMoKSxoZWlnaHQ6bnUobi5lbGVtZW50KCkpLHdpZHRoOnN1KG4uZWxlbWVudCgpKX19LHFEPWZ1bmN0aW9uKG4sZSx0LG8scil7dmFyIGk9dC51cGRhdGUobyxyKSx1PXQuZ2V0U3RhcnREYXRhKCkuZ2V0T3JUaHVuayhmdW5jdGlvbigpe3JldHVybiBZRChlLG4pfSk7aS5lYWNoKGZ1bmN0aW9uKHQpeyFmdW5jdGlvbih0LG4sZSxvKXt2YXIgcj1uLmdldFRhcmdldCh0LmVsZW1lbnQoKSk7aWYobi5yZXBvc2l0aW9uVGFyZ2V0KXt2YXIgaT1hcih0LmVsZW1lbnQoKSksdT1tdShpKSxhPWtFKHIpLGM9R0Qocikscz1YRCh0LG4uc25hcHMsYyx1LGEsbyxlKSxsPV9EKHMsMCxhKTtBaShyLGwpfW4ub25EcmFnKHQscixvKX0obixlLHUsdCl9KX0sS0Q9ZnVuY3Rpb24obix0LGUsbyl7dC5lYWNoKExEKSxlLnNuYXBzLmVhY2goZnVuY3Rpb24odCl7SUQobix0KX0pO3ZhciByPWUuZ2V0VGFyZ2V0KG4uZWxlbWVudCgpKTtvLnJlc2V0KCksZS5vbkRyb3AobixyKX0sSkQ9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKG4sZSl7dmFyIG89ZnVuY3Rpb24odCl7ZS5zZXRTdGFydERhdGEoWUQobix0KSl9O3JldHVybiBZbyhiKFtKbyhCbygpLGZ1bmN0aW9uKHQpe2UuZ2V0U3RhcnREYXRhKCkuZWFjaChmdW5jdGlvbigpe3JldHVybiBvKHQpfSl9KV0sdChuLGUsbykpKX19LCREPS8qICovT2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsZ2V0RGF0YTpmdW5jdGlvbih0KXtyZXR1cm4gc3QuZnJvbShvdSh0LngoKSx0LnkoKSkpfSxnZXREZWx0YTpmdW5jdGlvbih0LG4pe3JldHVybiBvdShuLmxlZnQoKS10LmxlZnQoKSxuLnRvcCgpLXQudG9wKCkpfX0pLFFEPWZ1bmN0aW9uKGEsYyxzKXtyZXR1cm5bSm8odG8oKSxmdW5jdGlvbihuLHQpe2lmKDA9PT10LmV2ZW50KCkucmF3KCkuYnV0dG9uKXt0LnN0b3AoKTt2YXIgZSxvPWZ1bmN0aW9uKCl7cmV0dXJuIEtEKG4sc3Quc29tZSh1KSxhLGMpfSxyPWtiKG8sMjAwKSxpPXtkcm9wOm8sZGVsYXlEcm9wOnIuc2NoZWR1bGUsZm9yY2VEcm9wOm8sbW92ZTpmdW5jdGlvbih0KXtyLmNhbmNlbCgpLHFEKG4sYSxjLCRELHQpfX0sdT1qRChuLGEuYmxvY2tlckNsYXNzLChlPWksWW8oW0pvKHRvKCksZS5mb3JjZURyb3ApLEpvKG9vKCksZS5kcm9wKSxKbyhubygpLGZ1bmN0aW9uKHQsbil7ZS5tb3ZlKG4uZXZlbnQoKSl9KSxKbyhlbygpLGUuZGVsYXlEcm9wKV0pKSk7cyhuKSxORChuLHUpfX0pXX0sWkQ9YihXRCxbbmEoImRyYWdnZXIiLHtoYW5kbGVyczpKRChRRCl9KV0pLHRNPS8qICovT2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsZ2V0RGF0YTpmdW5jdGlvbih0KXt2YXIgbixlPXQucmF3KCkudG91Y2hlcztyZXR1cm4gMT09PWUubGVuZ3RoPyhuPWVbMF0sc3Quc29tZShvdShuLmNsaWVudFgsbi5jbGllbnRZKSkpOnN0Lm5vbmUoKX0sZ2V0RGVsdGE6ZnVuY3Rpb24odCxuKXtyZXR1cm4gb3Uobi5sZWZ0KCktdC5sZWZ0KCksbi50b3AoKS10LnRvcCgpKX19KSxuTT1mdW5jdGlvbih1LGEsYyl7dmFyIHM9Y2Uoc3Qubm9uZSgpKTtyZXR1cm5bSm8oSmUoKSxmdW5jdGlvbihuLHQpe3Quc3RvcCgpO3ZhciBlLG89ZnVuY3Rpb24oKXtLRChuLHMuZ2V0KCksdSxhKSxzLnNldChzdC5ub25lKCkpfSxyPXtkcm9wOm8sZGVsYXlEcm9wOmZ1bmN0aW9uKCl7fSxmb3JjZURyb3A6byxtb3ZlOmZ1bmN0aW9uKHQpe3FEKG4sdSxhLHRNLHQpfX0saT1qRChuLHUuYmxvY2tlckNsYXNzLChlPXIsWW8oW0pvKEplKCksZS5mb3JjZURyb3ApLEpvKFFlKCksZS5kcm9wKSxKbyhaZSgpLGUuZHJvcCksSm8oJGUoKSxmdW5jdGlvbih0LG4pe2UubW92ZShuLmV2ZW50KCkpfSldKSkpO3Muc2V0KHN0LnNvbWUoaSkpO2MobiksTkQobixpKX0pLEpvKCRlKCksZnVuY3Rpb24odCxuKXtuLnN0b3AoKSxxRCh0LHUsYSx0TSxuLmV2ZW50KCkpfSksSm8oUWUoKSxmdW5jdGlvbih0LG4pe24uc3RvcCgpLEtEKHQscy5nZXQoKSx1LGEpLHMuc2V0KHN0Lm5vbmUoKSl9KSxKbyhaZSgpLGZ1bmN0aW9uKHQpe0tEKHQscy5nZXQoKSx1LGEpLHMuc2V0KHN0Lm5vbmUoKSl9KV19LGVNPVpELG9NPWIoV0QsW25hKCJkcmFnZ2VyIix7aGFuZGxlcnM6SkQobk0pfSldKSxyTT1iKFdELFtuYSgiZHJhZ2dlciIse2hhbmRsZXJzOkpEKGZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gYihRRCh0LG4sZSksbk0odCxuLGUpKX0pfSldKSxpTT1VYSh7YnJhbmNoS2V5OiJtb2RlIixicmFuY2hlczovKiAqL09iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLG1vdXNlOmVNLHRvdWNoOm9NLG1vdXNlT3JUb3VjaDpyTX0pLG5hbWU6ImRyYWdnaW5nIixhY3RpdmU6e2V2ZW50czpmdW5jdGlvbih0LG4pe3JldHVybiB0LmRyYWdnZXIuaGFuZGxlcnModCxuKX19LGV4dHJhOntzbmFwOmZ1bmN0aW9uKHQpe3JldHVybntzZW5zb3I6dC5zZW5zb3IscmFuZ2U6dC5yYW5nZSxvdXRwdXQ6dC5vdXRwdXQsZXh0cmE6c3QuZnJvbSh0LmV4dHJhKX19fSxzdGF0ZTovKiAqL09iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLGluaXQ6ZnVuY3Rpb24oKXt2YXIgaT1zdC5ub25lKCksbj1zdC5ub25lKCksdD1hdCh7fSk7cmV0dXJuIG9pKHtyZWFkU3RhdGU6dCxyZXNldDpmdW5jdGlvbigpe2k9c3Qubm9uZSgpLG49c3Qubm9uZSgpfSx1cGRhdGU6ZnVuY3Rpb24ocix0KXtyZXR1cm4gci5nZXREYXRhKHQpLmJpbmQoZnVuY3Rpb24odCl7cmV0dXJuIG49cixlPXQsbz1pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gbi5nZXREZWx0YSh0LGUpfSksaT1zdC5zb21lKGUpLG87dmFyIG4sZSxvfSl9LGdldFN0YXJ0RGF0YTpmdW5jdGlvbigpe3JldHVybiBufSxzZXRTdGFydERhdGE6ZnVuY3Rpb24odCl7bj1zdC5zb21lKHQpfX0pfX0pLGFwaXM6UER9KSx1TT1mdW5jdGlvbih0LHIsaSx1LG4sZSl7cmV0dXJuIHQuZm9sZChmdW5jdGlvbigpe3JldHVybiBpTS5zbmFwKHtzZW5zb3I6QkQoaS0yMCx1LTIwKSxyYW5nZTpvdShuLGUpLG91dHB1dDpCRChzdC5zb21lKGkpLHN0LnNvbWUodSkpLGV4dHJhOnt0ZDpyfX0pfSxmdW5jdGlvbih0KXt2YXIgbj1pLTIwLGU9dS0yMCxvPXQuZWxlbWVudCgpLmRvbSgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybiBpTS5zbmFwKHtzZW5zb3I6QkQobixlKSxyYW5nZTpvdSg0MCw0MCksb3V0cHV0OkJEKHN0LnNvbWUoaS1vLndpZHRoLzIpLHN0LnNvbWUodS1vLmhlaWdodC8yKSksZXh0cmE6e3RkOnJ9fSl9KX0sYU09ZnVuY3Rpb24odCxpLHUpe3JldHVybntnZXRTbmFwUG9pbnRzOnQsbGVmdEF0dHI6ImRhdGEtZHJhZy1sZWZ0Iix0b3BBdHRyOiJkYXRhLWRyYWctdG9wIixvblNlbnNvcjpmdW5jdGlvbih0LG4pe3ZhciBlLG8scj1uLnRkO2U9aS5nZXQoKSxvPXIsZS5leGlzdHMoZnVuY3Rpb24odCl7cmV0dXJuIExlKHQsbyl9KXx8KGkuc2V0KHN0LnNvbWUocikpLHUocikpfSxtdXN0U25hcDohMH19LGNNPWZ1bmN0aW9uKHQpe3JldHVybiBVZyhqZy5za2V0Y2goe2RvbTp7dGFnOiJkaXYiLGNsYXNzZXM6WyJ0b3gtc2VsZWN0b3IiXX0sYnV0dG9uQmVoYXZpb3Vyczp6YShbaU0uY29uZmlnKHttb2RlOiJtb3VzZU9yVG91Y2giLGJsb2NrZXJDbGFzczoiYmxvY2tlciIsc25hcHM6dH0pLFp5LmNvbmZpZyh7fSldKSxldmVudE9yZGVyOnttb3VzZWRvd246WyJkcmFnZ2luZyIsImFsbG95LmJhc2UuYmVoYXZpb3VyIl0sdG91Y2hzdGFydDpbImRyYWdnaW5nIiwiYWxsb3kuYmFzZS5iZWhhdmlvdXIiXX19KSl9LHNNPWZ1bmN0aW9uKGMsZSl7dmFyIG89Y2UoW10pLHI9Y2UoW10pLHQ9Y2UoITEpLGk9Y2Uoc3Qubm9uZSgpKSx1PWNlKHN0Lm5vbmUoKSksbj1mdW5jdGlvbih0KXt2YXIgbj1TdSh0KTtyZXR1cm4gdU0oZi5nZXRPcHQoZSksdCxuLngsbi55LG4ud2lkdGgsbi5oZWlnaHQpfSxhPWZ1bmN0aW9uKHQpe3ZhciBuPVN1KHQpO3JldHVybiB1TShkLmdldE9wdChlKSx0LG4ucmlnaHQsbi5ib3R0b20sbi53aWR0aCxuLmhlaWdodCl9LHM9YU0oZnVuY3Rpb24oKXtyZXR1cm4gVihvLmdldCgpLGZ1bmN0aW9uKHQpe3JldHVybiBuKHQpfSl9LGksZnVuY3Rpb24obil7dS5nZXQoKS5lYWNoKGZ1bmN0aW9uKHQpe2MuZmlyZSgiVGFibGVTZWxlY3RvckNoYW5nZSIse3N0YXJ0Om4sZmluaXNoOnR9KX0pfSksbD1hTShmdW5jdGlvbigpe3JldHVybiBWKHIuZ2V0KCksZnVuY3Rpb24odCl7cmV0dXJuIGEodCl9KX0sdSxmdW5jdGlvbihuKXtpLmdldCgpLmVhY2goZnVuY3Rpb24odCl7Yy5maXJlKCJUYWJsZVNlbGVjdG9yQ2hhbmdlIix7c3RhcnQ6dCxmaW5pc2g6bn0pfSl9KSxmPWNNKHMpLGQ9Y00obCksbT1KaShmLmFzU3BlYygpKSxnPUppKGQuYXNTcGVjKCkpLHA9ZnVuY3Rpb24odCxuLGUsbyl7dmFyIHI9ZShuKTtpTS5zbmFwVG8odCxyKTshZnVuY3Rpb24odCxuLGUsbyl7dmFyIHI9bi5kb20oKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtIaSh0LmVsZW1lbnQoKSwiZGlzcGxheSIpO3ZhciBpPXNyKGxlLmZyb21Eb20oYy5nZXRCb2R5KCkpKS5kb20oKS5pbm5lckhlaWdodCx1PWUociksYT1vKHIsaSk7KHV8fGEpJiZEaSh0LmVsZW1lbnQoKSwiZGlzcGxheSIsIm5vbmUiKX0odCxuLGZ1bmN0aW9uKHQpe3JldHVybiB0W29dPDB9LGZ1bmN0aW9uKHQsbil7cmV0dXJuIHRbb10+bn0pfSxoPWZ1bmN0aW9uKHQpe3JldHVybiBwKG0sdCxuLCJ0b3AiKX0sdj1mdW5jdGlvbih0KXtyZXR1cm4gcChnLHQsYSwiYm90dG9tIil9O1BlKCkuZGV2aWNlVHlwZS5pc1RvdWNoKCkmJihjLm9uKCJUYWJsZVNlbGVjdGlvbkNoYW5nZSIsZnVuY3Rpb24obil7dC5nZXQoKXx8KFJzKGUsbSksUnMoZSxnKSx0LnNldCghMCkpLGkuc2V0KHN0LnNvbWUobi5zdGFydCkpLHUuc2V0KHN0LnNvbWUobi5maW5pc2gpKSxuLm90aGVyQ2VsbHMuZWFjaChmdW5jdGlvbih0KXtvLnNldCh0LnVwT3JMZWZ0Q2VsbHMpLHIuc2V0KHQuZG93bk9yUmlnaHRDZWxscyksaChuLnN0YXJ0KSx2KG4uZmluaXNoKX0pfSksYy5vbigiUmVzaXplRWRpdG9yIFJlc2l6ZVdpbmRvdyBTY3JvbGxDb250ZW50IixmdW5jdGlvbigpe2kuZ2V0KCkuZWFjaChoKSx1LmdldCgpLmVhY2godil9KSxjLm9uKCJUYWJsZVNlbGVjdGlvbkNsZWFyIixmdW5jdGlvbigpe3QuZ2V0KCkmJihQcyhtKSxQcyhnKSx0LnNldCghMSkpLGkuc2V0KHN0Lm5vbmUoKSksdS5zZXQoc3Qubm9uZSgpKX0pKX07KExUPU5UPU5UfHx7fSlbTFQuTm9uZT0wXT0iTm9uZSIsTFRbTFQuQm90aD0xXT0iQm90aCIsTFRbTFQuVmVydGljYWw9Ml09IlZlcnRpY2FsIjt2YXIgbE0sZk09ZnVuY3Rpb24odCxuLGUpe3ZhciBvLHIsaSx1LGEsYyxzPWxlLmZyb21Eb20odC5nZXRDb250YWluZXIoKSksbD0obz10LHI9bixpPWUsdT10dShzKSxhPWN1KHMpLChjPXt9KS5oZWlnaHQ9TEIodStyLnRvcCgpLHdoKG8pLGtoKG8pKSxpPT09TlQuQm90aCYmKGMud2lkdGg9TEIoYStyLmxlZnQoKSx4aChvKSxTaChvKSkpLGMpO2Z0KGwsZnVuY3Rpb24odCxuKXtyZXR1cm4gRGkocyxuLE5CKHQpKX0pLHQuZmlyZSgiUmVzaXplRWRpdG9yIil9LGRNPWZ1bmN0aW9uKHQpe2lmKDE9PT10Lm5vZGVUeXBlKXtpZigiQlIiPT09dC5ub2RlTmFtZXx8dC5nZXRBdHRyaWJ1dGUoImRhdGEtbWNlLWJvZ3VzIikpcmV0dXJuITA7aWYoImJvb2ttYXJrIj09PXQuZ2V0QXR0cmlidXRlKCJkYXRhLW1jZS10eXBlIikpcmV0dXJuITB9cmV0dXJuITF9LG1NPWZ1bmN0aW9uKGksdSxhKXt1LmRlbGltaXRlcnx8KHUuZGVsaW1pdGVyPSJceGJiIik7cmV0dXJue2RvbTp7dGFnOiJkaXYiLGNsYXNzZXM6WyJ0b3gtc3RhdHVzYmFyX19wYXRoIl0sYXR0cmlidXRlczp7cm9sZToibmF2aWdhdGlvbiJ9fSxiZWhhdmlvdXJzOnphKFtSbS5jb25maWcoe21vZGU6ImZsb3ciLHNlbGVjdG9yOiJkaXZbcm9sZT1idXR0b25dIn0pLHBoLmNvbmZpZyh7ZGlzYWJsZWQ6YS5pc1JlYWRPbmx5fSksVWgoKSxEeS5jb25maWcoe30pLE5tLmNvbmZpZyh7fSksTG0oImVsZW1lbnRQYXRoRXZlbnRzIixbb3IoZnVuY3Rpb24ocix0KXtpLnNob3J0Y3V0cy5hZGQoImFsdCtGMTEiLCJmb2N1cyBzdGF0dXNiYXIgZWxlbWVudHBhdGgiLGZ1bmN0aW9uKCl7cmV0dXJuIFJtLmZvY3VzSW4ocil9KSxpLm9uKCJOb2RlQ2hhbmdlIixmdW5jdGlvbih0KXt2YXIgbixvLGU9ZnVuY3Rpb24odCl7Zm9yKHZhciBuPVtdLGU9dC5sZW5ndGg7MDxlLS07KXt2YXIgbz10W2VdO2lmKDE9PT1vLm5vZGVUeXBlJiYhZE0obykpe3ZhciByPWkuZmlyZSgiUmVzb2x2ZU5hbWUiLHtuYW1lOm8ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSx0YXJnZXQ6b30pO2lmKHIuaXNEZWZhdWx0UHJldmVudGVkKCl8fG4ucHVzaCh7bmFtZTpyLm5hbWUsZWxlbWVudDpvfSksci5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKWJyZWFrfX1yZXR1cm4gbn0odC5wYXJlbnRzKTswPGUubGVuZ3RoP05tLnNldChyLChuPVYoZXx8W10sZnVuY3Rpb24obix0KXtyZXR1cm4gamcuc2tldGNoKHtkb206e3RhZzoiZGl2IixjbGFzc2VzOlsidG94LXN0YXR1c2Jhcl9fcGF0aC1pdGVtIl0sYXR0cmlidXRlczp7cm9sZToiYnV0dG9uIiwiZGF0YS1pbmRleCI6dCwidGFiLWluZGV4IjotMSwiYXJpYS1sZXZlbCI6dCsxfSxpbm5lckh0bWw6bi5uYW1lfSxhY3Rpb246ZnVuY3Rpb24odCl7aS5mb2N1cygpLGkuc2VsZWN0aW9uLnNlbGVjdChuLmVsZW1lbnQpLGkubm9kZUNoYW5nZWQoKX0sYnV0dG9uQmVoYXZpb3Vyczp6YShbR2goYS5pc1JlYWRPbmx5KSxVaCgpXSl9KX0pLG89e2RvbTp7dGFnOiJkaXYiLGNsYXNzZXM6WyJ0b3gtc3RhdHVzYmFyX19wYXRoLWRpdmlkZXIiXSxhdHRyaWJ1dGVzOnsiYXJpYS1oaWRkZW4iOiEwfSxpbm5lckh0bWw6IiAiK3UuZGVsaW1pdGVyKyIgIn19LE4obi5zbGljZSgxKSxmdW5jdGlvbih0LG4pe3ZhciBlPXQ7cmV0dXJuIGUucHVzaChvKSxlLnB1c2gobiksZX0sW25bMF1dKSkpOk5tLnNldChyLFtdKX0pfSldKV0pLGNvbXBvbmVudHM6W119fSxnTT1mdW5jdGlvbihpLHUpe3ZhciB0LG4sZSxvLHIsYTtyZXR1cm57ZG9tOnt0YWc6ImRpdiIsY2xhc3NlczpbInRveC1zdGF0dXNiYXIiXX0sY29tcG9uZW50czoocj1mdW5jdGlvbigpe3ZhciB0LG8scixuLGU9W107cmV0dXJuIGkuZ2V0UGFyYW0oImVsZW1lbnRwYXRoIiwhMCwiYm9vbGVhbiIpJiZlLnB1c2gobU0oaSx7fSx1KSksRWUoaS5zZXR0aW5ncy5wbHVnaW5zLCJ3b3JkY291bnQiKSYmZS5wdXNoKCh0PWksbz11LHI9ZnVuY3Rpb24odCxuLGUpe3JldHVybiBObS5zZXQodCxbWWkoby50cmFuc2xhdGUoWyJ7MH0gIitlLG5bZV1dKSldKX0samcuc2tldGNoKHtkb206e3RhZzoiYnV0dG9uIixjbGFzc2VzOlsidG94LXN0YXR1c2Jhcl9fd29yZGNvdW50Il19LGNvbXBvbmVudHM6W10sYnV0dG9uQmVoYXZpb3Vyczp6YShbR2goby5pc1JlYWRPbmx5KSxVaCgpLER5LmNvbmZpZyh7fSksTm0uY29uZmlnKHt9KSxibC5jb25maWcoe3N0b3JlOnttb2RlOiJtZW1vcnkiLGluaXRpYWxWYWx1ZTp7bW9kZToid29yZHMiLGNvdW50Ont3b3JkczowLGNoYXJhY3RlcnM6MH19fX0pLExtKCJ3b3JkY291bnQtZXZlbnRzIixbdXIoZnVuY3Rpb24odCl7dmFyIG49YmwuZ2V0VmFsdWUodCksZT0id29yZHMiPT09bi5tb2RlPyJjaGFyYWN0ZXJzIjoid29yZHMiO2JsLnNldFZhbHVlKHQse21vZGU6ZSxjb3VudDpuLmNvdW50fSkscih0LG4uY291bnQsZSl9KSxvcihmdW5jdGlvbihlKXt0Lm9uKCJ3b3JkQ291bnRVcGRhdGUiLGZ1bmN0aW9uKHQpe3ZhciBuPWJsLmdldFZhbHVlKGUpLm1vZGU7Ymwuc2V0VmFsdWUoZSx7bW9kZTpuLGNvdW50OnQud29yZENvdW50fSkscihlLHQud29yZENvdW50LG4pfSl9KV0pXSksZXZlbnRPcmRlcjp7ImFsbG95LmV4ZWN1dGUiOlsiZGlzYWJsaW5nIiwiYWxsb3kuYmFzZS5iZWhhdmlvdXIiLCJ3b3JkY291bnQtZXZlbnRzIl19fSkpKSxpLmdldFBhcmFtKCJicmFuZGluZyIsITAsImJvb2xlYW4iKSYmZS5wdXNoKHtkb206e3RhZzoic3BhbiIsY2xhc3NlczpbInRveC1zdGF0dXNiYXJfX2JyYW5kaW5nIl0saW5uZXJIdG1sOic8YSBocmVmPSJodHRwczovL3d3dy50aW55LmNsb3VkLz91dG1fY2FtcGFpZ249ZWRpdG9yX3JlZmVycmFsJmFtcDt1dG1fbWVkaXVtPXBvd2VyZWRieSZhbXA7dXRtX3NvdXJjZT10aW55bWNlJmFtcDt1dG1fY29udGVudD12NSIgcmVsPSJub29wZW5lciIgdGFyZ2V0PSJfYmxhbmsiIHRhYmluZGV4PSItMSIgYXJpYS1sYWJlbD0iJysobj1WcC50cmFuc2xhdGUoWyJQb3dlcmVkIGJ5IHswfSIsIlRpbnkiXSkpKyciPicrbisiPC9hPiJ9fSksMDxlLmxlbmd0aD9be2RvbTp7dGFnOiJkaXYiLGNsYXNzZXM6WyJ0b3gtc3RhdHVzYmFyX190ZXh0LWNvbnRhaW5lciJdfSxjb21wb25lbnRzOmV9XTpbXX0oKSxuPSFFZSgodD1pKS5zZXR0aW5ncy5wbHVnaW5zLCJhdXRvcmVzaXplIiksKGE9ITE9PT0oZT10LmdldFBhcmFtKCJyZXNpemUiLG4pKT9OVC5Ob25lOiJib3RoIj09PWU/TlQuQm90aDpOVC5WZXJ0aWNhbCkhPT1OVC5Ob25lJiZyLnB1c2goKG89YSx7ZG9tOnt0YWc6ImRpdiIsY2xhc3NlczpbInRveC1zdGF0dXNiYXJfX3Jlc2l6ZS1oYW5kbGUiXSxhdHRyaWJ1dGVzOnt0aXRsZTp1LnRyYW5zbGF0ZSgiUmVzaXplIiksImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LGlubmVySHRtbDpHZygicmVzaXplLWhhbmRsZSIsdS5pY29ucyl9LGJlaGF2aW91cnM6emEoW2lNLmNvbmZpZyh7bW9kZToibW91c2UiLHJlcG9zaXRpb25UYXJnZXQ6ITEsb25EcmFnOmZ1bmN0aW9uKHQsbixlKXtmTShpLGUsbyl9LGJsb2NrZXJDbGFzczoidG94LWJsb2NrZXIifSldKX0pKSxyKX19LHBNPWZ1bmN0aW9uKHkpe3ZhciB0LG49eS5pbmxpbmUseD1uP1hCOkhCLHc9UGgoeSk/S0U6WkUsZT1zdC5ub25lKCksbz1QZSgpLHI9by5icm93c2VyLmlzSUUoKT9bInRveC1wbGF0Zm9ybS1pZSJdOltdLGk9by5kZXZpY2VUeXBlLmlzVG91Y2goKT9bInRveC1wbGF0Zm9ybS10b3VjaCJdOltdLHU9SWgoeSksYT1WcC5pc1J0bCgpP3thdHRyaWJ1dGVzOntkaXI6InJ0bCJ9fTp7fSxjPXthdHRyaWJ1dGVzOigodD17fSlbT2NdPXU/SHUuQm90dG9tVG9Ub3A6SHUuVG9wVG9Cb3R0b20sdCl9LFM9ZnVuY3Rpb24oKXtyZXR1cm4gZS5iaW5kKGtCLmdldEhlYWRlcil9LGs9Smkoe2RvbTpldCh7dGFnOiJkaXYiLGNsYXNzZXM6WyJ0b3giLCJ0b3gtc2lsdmVyLXNpbmsiLCJ0b3gtdGlueW1jZS1hdXgiXS5jb25jYXQocikuY29uY2F0KGkpfSxhKSxiZWhhdmlvdXJzOnphKFtEcy5jb25maWcoe3VzZUZpeGVkOmZ1bmN0aW9uKCl7cmV0dXJuIHcuaXNEb2NrZWQoUyl9fSldKX0pLEM9ZnVuY3Rpb24oKXtyZXR1cm4gb3QudmFsdWUoayl9LHM9VWcoe2RvbTp7dGFnOiJkaXYiLGNsYXNzZXM6WyJ0b3gtYW5jaG9yYmFyIl19fSksTz1mdW5jdGlvbigpe3JldHVybiBlLmJpbmQoZnVuY3Rpb24odCl7cmV0dXJuIGtCLmdldFRocm9iYmVyKHQpfSkuZ2V0T3JEaWUoIkNvdWxkIG5vdCBmaW5kIHRocm9iYmVyIGVsZW1lbnQiKX0sXz1QTyhrLHksZnVuY3Rpb24oKXtyZXR1cm4gZS5iaW5kKGZ1bmN0aW9uKHQpe3JldHVybiBzLmdldE9wdCh0KX0pLmdldE9yRGllKCJDb3VsZCBub3QgZmluZCBhIGFuY2hvciBiYXIgZWxlbWVudCIpfSksbD1rQi5wYXJ0cygpLm1lbnViYXIoe2RvbTp7dGFnOiJkaXYiLGNsYXNzZXM6WyJ0b3gtbWVudWJhciJdfSxiYWNrc3RhZ2U6XyxvbkVzY2FwZTpmdW5jdGlvbigpe3kuZm9jdXMoKX19KSxUPURoKHkpLGY9a0IucGFydHMoKS50b29sYmFyKGV0KHtkb206e3RhZzoiZGl2IixjbGFzc2VzOlsidG94LXRvb2xiYXIiXX0sZ2V0U2luazpDLHByb3ZpZGVyczpfLnNoYXJlZC5wcm92aWRlcnMsb25Fc2NhcGU6ZnVuY3Rpb24oKXt5LmZvY3VzKCl9LHR5cGU6VCxsYXp5VG9vbGJhcjpmdW5jdGlvbigpe3JldHVybiBlLmJpbmQoZnVuY3Rpb24odCl7cmV0dXJuIGtCLmdldFRvb2xiYXIodCl9KS5nZXRPckRpZSgiQ291bGQgbm90IGZpbmQgbW9yZSB0b29sYmFyIGVsZW1lbnQiKX0sbGF6eUhlYWRlcjpmdW5jdGlvbigpe3JldHVybiBTKCkuZ2V0T3JEaWUoIkNvdWxkIG5vdCBmaW5kIGhlYWRlciBlbGVtZW50Iil9fSxjKSksZD1rQi5wYXJ0cygpWyJtdWx0aXBsZS10b29sYmFyIl0oe2RvbTp7dGFnOiJkaXYiLGNsYXNzZXM6WyJ0b3gtdG9vbGJhci1vdmVybG9yZCJdfSxwcm92aWRlcnM6Xy5zaGFyZWQucHJvdmlkZXJzLG9uRXNjYXBlOmZ1bmN0aW9uKCl7fSx0eXBlOlR9KSxtPWtCLnBhcnRzKCkuc29ja2V0KHtkb206e3RhZzoiZGl2IixjbGFzc2VzOlsidG94LWVkaXQtYXJlYSJdfX0pLGc9a0IucGFydHMoKS5zaWRlYmFyKHtkb206e3RhZzoiZGl2IixjbGFzc2VzOlsidG94LXNpZGViYXIiXX19KSxwPWtCLnBhcnRzKCkudGhyb2JiZXIoe2RvbTp7dGFnOiJkaXYiLGNsYXNzZXM6WyJ0b3gtdGhyb2JiZXIiXX0sYmFja3N0YWdlOl99KSxoPXkuZ2V0UGFyYW0oInN0YXR1c2JhciIsITAsImJvb2xlYW4iKSYmIW4/c3Quc29tZShnTSh5LF8uc2hhcmVkLnByb3ZpZGVycykpOnN0Lm5vbmUoKSx2PXtkb206e3RhZzoiZGl2IixjbGFzc2VzOlsidG94LXNpZGViYXItd3JhcCJdfSxjb21wb25lbnRzOlttLGddfSxiPVRoKHkpLEU9T2goeSksQj1DaCh5KSxEPWtCLnBhcnRzKCkuaGVhZGVyKHtkb206ZXQoe3RhZzoiZGl2IixjbGFzc2VzOlsidG94LWVkaXRvci1oZWFkZXIiXX0sYyksY29tcG9uZW50czp1dChbQj9bbF06W10sYj9bZF06RT9bZl06W10sVmgoeSk/W106W3MuYXNTcGVjKCldXSksc3RpY2t5OlBoKHkpLGVkaXRvcjp5LHNoYXJlZEJhY2tzdGFnZTpfLnNoYXJlZH0pLE09dXQoW3U/W106W0RdLG4/W106W3ZdLHU/W0RdOltdXSksQT11dChbW3tkb206e3RhZzoiZGl2IixjbGFzc2VzOlsidG94LWVkaXRvci1jb250YWluZXIiXX0sY29tcG9uZW50czpNfV0sbj9bXTpoLnRvQXJyYXkoKSxbcF1dKSxGPUhoKHkpLEk9ZXQoZXQoe3JvbGU6ImFwcGxpY2F0aW9uIn0sVnAuaXNSdGwoKT97ZGlyOiJydGwifTp7fSksRj97ImFyaWEtaGlkZGVuIjoidHJ1ZSJ9Ont9KSxSPUppKGtCLnNrZXRjaCh7ZG9tOnt0YWc6ImRpdiIsY2xhc3NlczpbInRveCIsInRveC10aW55bWNlIl0uY29uY2F0KG4/WyJ0b3gtdGlueW1jZS1pbmxpbmUiXTpbXSkuY29uY2F0KHU/WyJ0b3gtdGlueW1jZS0tdG9vbGJhci1ib3R0b20iXTpbXSkuY29uY2F0KGkpLmNvbmNhdChyKSxzdHlsZXM6ZXQoe3Zpc2liaWxpdHk6ImhpZGRlbiJ9LEY/e29wYWNpdHk6IjAiLGJvcmRlcjoiMCJ9Ont9KSxhdHRyaWJ1dGVzOkl9LGNvbXBvbmVudHM6QSxiZWhhdmlvdXJzOnphKFtSbS5jb25maWcoe21vZGU6ImN5Y2xpYyIsc2VsZWN0b3I6Ii50b3gtbWVudWJhciwgLnRveC10b29sYmFyLCAudG94LXRvb2xiYXJfX3ByaW1hcnksIC50b3gtdG9vbGJhcl9fb3ZlcmZsb3ctLW9wZW4sIC50b3gtc2lkZWJhcl9fb3ZlcmZsb3ctLW9wZW4sIC50b3gtc3RhdHVzYmFyX19wYXRoLCAudG94LXN0YXR1c2Jhcl9fd29yZGNvdW50LCAudG94LXN0YXR1c2Jhcl9fYnJhbmRpbmcgYSJ9KV0pfSkpO2U9c3Quc29tZShSKSx5LnNob3J0Y3V0cy5hZGQoImFsdCtGOSIsImZvY3VzIG1lbnViYXIiLGZ1bmN0aW9uKCl7a0IuZm9jdXNNZW51YmFyKFIpfSkseS5zaG9ydGN1dHMuYWRkKCJhbHQrRjEwIiwiZm9jdXMgdG9vbGJhciIsZnVuY3Rpb24oKXtrQi5mb2N1c1Rvb2xiYXIoUil9KTt2YXIgVixILFAseixOLEwsaixVLFcsRyxYLFkscSxLLEosJCxRPVdiKFIpLFo9V2Ioayk7Vj15LEg9USxQPVosej1mdW5jdGlvbihuLGUpe2l0KFtILFBdLGZ1bmN0aW9uKHQpe3QuYnJvYWRjYXN0RXZlbnQobixlKX0pfSxOPWZ1bmN0aW9uKG4sZSl7aXQoW0gsUF0sZnVuY3Rpb24odCl7dC5icm9hZGNhc3RPbihbbl0sZSl9KX0sTD1mdW5jdGlvbih0KXtyZXR1cm4gTihacygpLHt0YXJnZXQ6dC50YXJnZXQoKX0pfSxqPXliKGxlLmZyb21Eb20obnQuZG9jdW1lbnQpLCJ0b3VjaHN0YXJ0IixMKSxVPXliKGxlLmZyb21Eb20obnQuZG9jdW1lbnQpLCJ0b3VjaG1vdmUiLGZ1bmN0aW9uKHQpe3JldHVybiB6KFRvKCksdCl9KSxXPXliKGxlLmZyb21Eb20obnQuZG9jdW1lbnQpLCJ0b3VjaGVuZCIsZnVuY3Rpb24odCl7cmV0dXJuIHooRW8oKSx0KX0pLEc9eWIobGUuZnJvbURvbShudC5kb2N1bWVudCksIm1vdXNlZG93biIsTCksWD15YihsZS5mcm9tRG9tKG50LmRvY3VtZW50KSwibW91c2V1cCIsZnVuY3Rpb24odCl7MD09PXQucmF3KCkuYnV0dG9uJiZOKG5sKCkse3RhcmdldDp0LnRhcmdldCgpfSl9KSxZPWZ1bmN0aW9uKHQpe3JldHVybiBOKFpzKCkse3RhcmdldDpsZS5mcm9tRG9tKHQudGFyZ2V0KX0pfSxxPWZ1bmN0aW9uKHQpezA9PT10LmJ1dHRvbiYmTihubCgpLHt0YXJnZXQ6bGUuZnJvbURvbSh0LnRhcmdldCl9KX0sSz1mdW5jdGlvbih0KXtyZXR1cm4geihCbygpLHdiKHQpKX0sSj1mdW5jdGlvbih0KXtOKHRsKCkse30pLHooRG8oKSx3Yih0KSl9LCQ9ZnVuY3Rpb24oKXtyZXR1cm4gTih0bCgpLHt9KX0sVi5vbigiUG9zdFJlbmRlciIsZnVuY3Rpb24oKXtWLm9uKCJjbGljayIsWSksVi5vbigidGFwIixZKSxWLm9uKCJtb3VzZXVwIixxKSxWLm9uKCJTY3JvbGxXaW5kb3ciLEspLFYub24oIlJlc2l6ZVdpbmRvdyIsSiksVi5vbigiUmVzaXplRWRpdG9yIiwkKX0pLFYub24oInJlbW92ZSIsZnVuY3Rpb24oKXtWLm9mZigiY2xpY2siLFkpLFYub2ZmKCJ0YXAiLFkpLFYub2ZmKCJtb3VzZXVwIixxKSxWLm9mZigiU2Nyb2xsV2luZG93IixLKSxWLm9mZigiUmVzaXplV2luZG93IixKKSxWLm9mZigiUmVzaXplRWRpdG9yIiwkKSxHLnVuYmluZCgpLGoudW5iaW5kKCksVS51bmJpbmQoKSxXLnVuYmluZCgpLFgudW5iaW5kKCl9KSxWLm9uKCJkZXRhY2giLGZ1bmN0aW9uKCl7anMoSCksanMoUCksSC5kZXN0cm95KCksUC5kZXN0cm95KCl9KTt2YXIgdHQ9ZnVuY3Rpb24oKXt2YXIgdCxuPU5CKGpCKHkpKSxlPU5CKFVCKHQ9eSkuZ2V0T3IoeWgodCkpKTtyZXR1cm4geS5pbmxpbmV8fChWaSgiZGl2Iiwid2lkdGgiLGUpJiZEaShSLmVsZW1lbnQoKSwid2lkdGgiLGUpLFZpKCJkaXYiLCJoZWlnaHQiLG4pP0RpKFIuZWxlbWVudCgpLCJoZWlnaHQiLG4pOkRpKFIuZWxlbWVudCgpLCJoZWlnaHQiLCIyMDBweCIpKSxufTtyZXR1cm57bW90aGVyc2hpcDpRLHVpTW90aGVyc2hpcDpaLGJhY2tzdGFnZTpfLHJlbmRlclVJOmZ1bmN0aW9uKCl7dmFyIG8scixlLG4saSx1LGEsYzt3LnNldHVwKHksXy5zaGFyZWQsUyksWkIoeSxfKSxiRCh5LEMsXykscj0obz15KS51aS5yZWdpc3RyeS5nZXRBbGwoKS5zaWRlYmFycyxpdChsdChyKSxmdW5jdGlvbihuKXt2YXIgdD1yW25dLGU9ZnVuY3Rpb24oKXtyZXR1cm4gc3QuZnJvbShvLnF1ZXJ5Q29tbWFuZFZhbHVlKCJUb2dnbGVTaWRlYmFyIikpLmlzKG4pfTtvLnVpLnJlZ2lzdHJ5LmFkZFRvZ2dsZUJ1dHRvbihuLHtpY29uOnQuaWNvbix0b29sdGlwOnQudG9vbHRpcCxvbkFjdGlvbjpmdW5jdGlvbih0KXtvLmV4ZWNDb21tYW5kKCJUb2dnbGVTaWRlYmFyIiwhMSxuKSx0LnNldEFjdGl2ZShlKCkpfSxvblNldHVwOmZ1bmN0aW9uKHQpe3ZhciBuPWZ1bmN0aW9uKCl7cmV0dXJuIHQuc2V0QWN0aXZlKGUoKSl9O3JldHVybiBvLm9uKCJUb2dnbGVTaWRlYmFyIixuKSxmdW5jdGlvbigpe28ub2ZmKCJUb2dnbGVTaWRlYmFyIixuKX19fSl9KSxlPXksbj1PLGk9Xy5zaGFyZWQsdT1jZSghMSksYT1jZShzdC5ub25lKCkpLGM9ZnVuY3Rpb24odCl7dCE9PXUuZ2V0KCkmJihwQihuKCksdCxpLnByb3ZpZGVycyksdS5zZXQodCkpfSxlLm9uKCJQcm9ncmVzc1N0YXRlIixmdW5jdGlvbih0KXtpZihhLmdldCgpLmVhY2goTGcuY2xlYXJUaW1lb3V0KSxydCh0LnRpbWUpKXt2YXIgbj1MZy5zZXRFZGl0b3JUaW1lb3V0KGUsZnVuY3Rpb24oKXtyZXR1cm4gYyh0LnN0YXRlKX0sdC50aW1lKTthLnNldChzdC5zb21lKG4pKX1lbHNlIGModC5zdGF0ZSksYS5zZXQoc3Qubm9uZSgpKX0pLGR0KHkuZ2V0UGFyYW0oInRvb2xiYXJfZ3JvdXBzIix7fSwib2JqZWN0IiksZnVuY3Rpb24odCxuKXt5LnVpLnJlZ2lzdHJ5LmFkZEdyb3VwVG9vbGJhckJ1dHRvbihuLHQpfSk7dmFyIHQ9eS51aS5yZWdpc3RyeS5nZXRBbGwoKSxzPXQuYnV0dG9ucyxsPXQubWVudUl0ZW1zLGY9dC5jb250ZXh0VG9vbGJhcnMsZD10LnNpZGViYXJzLG09X2goeSksZz17bWVudUl0ZW1zOmwsbWVudXM6eS5zZXR0aW5ncy5tZW51P2R0KHkuc2V0dGluZ3MubWVudSxmdW5jdGlvbih0KXtyZXR1cm4gZXQoZXQoe30sdCkse2l0ZW1zOnQuaXRlbXN9KX0pOnt9LG1lbnViYXI6eS5zZXR0aW5ncy5tZW51YmFyLHRvb2xiYXI6bS5nZXRPclRodW5rKGZ1bmN0aW9uKCl7cmV0dXJuIHkuZ2V0UGFyYW0oInRvb2xiYXIiLCEwKX0pLGFsbG93VG9vbGJhckdyb3VwczpUPT09S2cuZmxvYXRpbmcsYnV0dG9uczpzLHNpZGViYXI6ZH07cEUoeSxmLGsse2JhY2tzdGFnZTpffSksc00oeSxrKTt2YXIgcD15LmdldEVsZW1lbnQoKSxoPXR0KCksdj17bW90aGVyc2hpcDpRLHVpTW90aGVyc2hpcDpaLG91dGVyQ29udGFpbmVyOlJ9LGI9e3RhcmdldE5vZGU6cCxoZWlnaHQ6aH07cmV0dXJuIHgucmVuZGVyKHksdixnLF8sYil9LGdldFVpOmZ1bmN0aW9uKCl7cmV0dXJue2NoYW5uZWxzOnticm9hZGNhc3RBbGw6Wi5icm9hZGNhc3QsYnJvYWRjYXN0T246Wi5icm9hZGNhc3RPbixyZWdpc3RlcjpmdW5jdGlvbigpe319fX19fSxoTT1hdChbem4oImxhenlTaW5rIiksWW4oImRyYWdCbG9ja0NsYXNzIiksaWUoImdldEJvdW5kcyIsa3UpLFpuKCJ1c2VUYWJzdG9wQXQiLGF0KCEwKSksWm4oImV2ZW50T3JkZXIiLHt9KSx5bCgibW9kYWxCZWhhdmlvdXJzIixbUm1dKSxRdSgib25FeGVjdXRlIiksdGEoIm9uRXNjYXBlIildKSx2TT17c2tldGNoOmN0fSxiTT1hdChbSmwoe25hbWU6ImRyYWdoYW5kbGUiLG92ZXJyaWRlczpmdW5jdGlvbih0LG4pe3JldHVybntiZWhhdmlvdXJzOnphKFtpTS5jb25maWcoe21vZGU6Im1vdXNlIixnZXRUYXJnZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIER1KHQsJ1tyb2xlPSJkaWFsb2ciXScpLmdldE9yKHQpfSxibG9ja2VyQ2xhc3M6dC5kcmFnQmxvY2tDbGFzcy5nZXRPckRpZShuZXcgRXJyb3IoIlRoZSBkcmFnIGJsb2NrZXIgY2xhc3Mgd2FzIG5vdCBzcGVjaWZpZWQgZm9yIGEgZGlhbG9nIHdpdGggYSBkcmFnIGhhbmRsZTogXG4iK0pTT04uc3RyaW5naWZ5KG4sbnVsbCwyKSkubWVzc2FnZSksZ2V0Qm91bmRzOnQuZ2V0RHJhZ0JvdW5kc30pXSl9fX0pLHFsKHtzY2hlbWE6W3puKCJkb20iKV0sbmFtZToidGl0bGUifSkscWwoe2ZhY3Rvcnk6dk0sc2NoZW1hOlt6bigiZG9tIildLG5hbWU6ImNsb3NlIn0pLHFsKHtmYWN0b3J5OnZNLHNjaGVtYTpbem4oImRvbSIpXSxuYW1lOiJib2R5In0pLEpsKHtmYWN0b3J5OnZNLHNjaGVtYTpbem4oImRvbSIpXSxuYW1lOiJmb290ZXIifSksS2woe2ZhY3Rvcnk6e3NrZXRjaDpmdW5jdGlvbih0LG4pe3JldHVybiBldChldCh7fSx0KSx7ZG9tOm4uZG9tLGNvbXBvbmVudHM6bi5jb21wb25lbnRzfSl9fSxzY2hlbWE6W1puKCJkb20iLHt0YWc6ImRpdiIsc3R5bGVzOntwb3NpdGlvbjoiZml4ZWQiLGxlZnQ6IjBweCIsdG9wOiIwcHgiLHJpZ2h0OiIwcHgiLGJvdHRvbToiMHB4In19KSxabigiY29tcG9uZW50cyIsW10pXSxuYW1lOiJibG9ja2VyIn0pXSkseU09X2Yoe25hbWU6Ik1vZGFsRGlhbG9nIixjb25maWdGaWVsZHM6aE0oKSxwYXJ0RmllbGRzOmJNKCksZmFjdG9yeTpmdW5jdGlvbihhLHQsbixvKXt2YXIgcj1OcigiYWxsb3kuZGlhbG9nLmJ1c3kiKSxjPU5yKCJhbGxveS5kaWFsb2cuaWRsZSIpLHM9emEoW1JtLmNvbmZpZyh7bW9kZToic3BlY2lhbCIsb25UYWI6ZnVuY3Rpb24oKXtyZXR1cm4gc3Quc29tZSghMCl9LG9uU2hpZnRUYWI6ZnVuY3Rpb24oKXtyZXR1cm4gc3Quc29tZSghMCl9fSksWG0uY29uZmlnKHt9KV0pLGU9TnIoIm1vZGFsLWV2ZW50cyIpLGk9ZXQoZXQoe30sYS5ldmVudE9yZGVyKSx7ImFsbG95LnN5c3RlbS5hdHRhY2hlZCI6W2VdLmNvbmNhdChhLmV2ZW50T3JkZXJbImFsbG95LnN5c3RlbS5hdHRhY2hlZCJdfHxbXSl9KTtyZXR1cm57dWlkOmEudWlkLGRvbTphLmRvbSxjb21wb25lbnRzOnQsYXBpczp7c2hvdzpmdW5jdGlvbihpKXt2YXIgdD1hLmxhenlTaW5rKGkpLmdldE9yRGllKCksdT1jZShzdC5ub25lKCkpLG49by5ibG9ja2VyKCksZT10LmdldFN5c3RlbSgpLmJ1aWxkKGV0KGV0KHt9LG4pLHtjb21wb25lbnRzOm4uY29tcG9uZW50cy5jb25jYXQoWyRpKGkpXSksYmVoYXZpb3Vyczp6YShbWG0uY29uZmlnKHt9KSxMbSgiZGlhbG9nLWJsb2NrZXItZXZlbnRzIixbZXIoaW8oKSxmdW5jdGlvbigpe1JtLmZvY3VzSW4oaSl9KSxKbyhjLGZ1bmN0aW9uKHQsbil7QXIoaS5lbGVtZW50KCksImFyaWEtYnVzeSIpJiYoRnIoaS5lbGVtZW50KCksImFyaWEtYnVzeSIpLHUuZ2V0KCkuZWFjaChmdW5jdGlvbih0KXtyZXR1cm4gTm0ucmVtb3ZlKGksdCl9KSl9KSxKbyhyLGZ1bmN0aW9uKHQsbil7QnIoaS5lbGVtZW50KCksImFyaWEtYnVzeSIsInRydWUiKTt2YXIgZT1uLmV2ZW50KCkuZ2V0QnVzeVNwZWMoKTt1LmdldCgpLmVhY2goZnVuY3Rpb24odCl7Tm0ucmVtb3ZlKGksdCl9KTt2YXIgbz1lKGkscykscj10LmdldFN5c3RlbSgpLmJ1aWxkKG8pO3Uuc2V0KHN0LnNvbWUocikpLE5tLmFwcGVuZChpLCRpKHIpKSxyLmhhc0NvbmZpZ3VyZWQoUm0pJiZSbS5mb2N1c0luKHIpfSldKV0pfSkpO1JzKHQsZSksUm0uZm9jdXNJbihpKX0saGlkZTpmdW5jdGlvbihuKXtscihuLmVsZW1lbnQoKSkuZWFjaChmdW5jdGlvbih0KXtuLmdldFN5c3RlbSgpLmdldEJ5RG9tKHQpLmVhY2goZnVuY3Rpb24odCl7UHModCl9KX0pfSxnZXRCb2R5OmZ1bmN0aW9uKHQpe3JldHVybiBsZih0LGEsImJvZHkiKX0sZ2V0Rm9vdGVyOmZ1bmN0aW9uKHQpe3JldHVybiBsZih0LGEsImZvb3RlciIpfSxzZXRJZGxlOmZ1bmN0aW9uKHQpe0xvKHQsYyl9LHNldEJ1c3k6ZnVuY3Rpb24odCxuKXtqbyh0LHIse2dldEJ1c3lTcGVjOm59KX19LGV2ZW50T3JkZXI6aSxkb21Nb2RpZmljYXRpb246e2F0dHJpYnV0ZXM6e3JvbGU6ImRpYWxvZyIsImFyaWEtbW9kYWwiOiJ0cnVlIn19LGJlaGF2aW91cnM6d2woYS5tb2RhbEJlaGF2aW91cnMsW05tLmNvbmZpZyh7fSksUm0uY29uZmlnKHttb2RlOiJjeWNsaWMiLG9uRW50ZXI6YS5vbkV4ZWN1dGUsb25Fc2NhcGU6YS5vbkVzY2FwZSx1c2VUYWJzdG9wQXQ6YS51c2VUYWJzdG9wQXR9KSxMbShlLFtvcihmdW5jdGlvbih0KXt2YXIgbixlLG8scixpLHU7bj10LmVsZW1lbnQoKSxlPWxmKHQsYSwidGl0bGUiKS5lbGVtZW50KCksbz1zdC5mcm9tKERyKG4sImlkIikpLmZvbGQoZnVuY3Rpb24oKXt2YXIgdD1OcigiZGlhbG9nLWxhYmVsIik7cmV0dXJuIEJyKGUsImlkIix0KSx0fSxjdCksQnIobiwiYXJpYS1sYWJlbGxlZGJ5IixvKSxyPXQuZWxlbWVudCgpLGk9bGYodCxhLCJib2R5IikuZWxlbWVudCgpLHU9c3QuZnJvbShEcihyLCJpZCIpKS5mb2xkKGZ1bmN0aW9uKCl7dmFyIHQ9TnIoImRpYWxvZy1kZXNjcmliZSIpO3JldHVybiBCcihpLCJpZCIsdCksdH0sY3QpLEJyKHIsImFyaWEtZGVzY3JpYmVkYnkiLHUpfSldKV0pfX0sYXBpczp7c2hvdzpmdW5jdGlvbih0LG4pe3Quc2hvdyhuKX0saGlkZTpmdW5jdGlvbih0LG4pe3QuaGlkZShuKX0sZ2V0Qm9keTpmdW5jdGlvbih0LG4pe3JldHVybiB0LmdldEJvZHkobil9LGdldEZvb3RlcjpmdW5jdGlvbih0LG4pe3JldHVybiB0LmdldEZvb3RlcihuKX0sc2V0QnVzeTpmdW5jdGlvbih0LG4sZSl7dC5zZXRCdXN5KG4sZSl9LHNldElkbGU6ZnVuY3Rpb24odCxuKXt0LnNldElkbGUobil9fX0pLHhNPVtMbigidHlwZSIpLExuKCJ0ZXh0Iiksam4oImxldmVsIixbImluZm8iLCJ3YXJuIiwiZXJyb3IiLCJzdWNjZXNzIl0pLExuKCJpY29uIiksWm4oInVybCIsIiIpXSx3TT1sbih4TSksU009W0xuKCJ0eXBlIiksTG4oInRleHQiKSxyZSgiZGlzYWJsZWQiLCExKSxyZSgicHJpbWFyeSIsITEpLGhuKCJuYW1lIiwibmFtZSIsR3QoZnVuY3Rpb24oKXtyZXR1cm4gTnIoImJ1dHRvbi1uYW1lIil9KSxGbiksSm4oImljb24iKSxyZSgiYm9yZGVybGVzcyIsITEpXSxrTT1sbihTTSksQ009W0xuKCJ0eXBlIiksTG4oIm5hbWUiKSxMbigibGFiZWwiKSxyZSgiZGlzYWJsZWQiLCExKV0sT009bG4oQ00pLF9NPUluLFRNPVtMbigidHlwZSIpLExuKCJuYW1lIildLEVNPVRNLmNvbmNhdChbSm4oImxhYmVsIildKSxCTT1sbihFTSksRE09Rm4sTU09bG4oRU0pLEFNPUZuLEZNPWxuKEVNKSxJTT1mbih5biksUk09ZnVuY3Rpb24odCl7cmV0dXJuW0xuKCJ0eXBlIiksTm4oImNvbHVtbnMiLEFuKSx0XX0sVk09RU0uY29uY2F0KFtyZSgic2FuZGJveGVkIiwhMCldKSxITT1sbihWTSksUE09Rm4sek09RU0uY29uY2F0KFtKbigiaW5wdXRNb2RlIiksSm4oInBsYWNlaG9sZGVyIikscmUoIm1heGltaXplZCIsITEpLHJlKCJkaXNhYmxlZCIsITEpXSksTk09bG4oek0pLExNPUZuLGpNPUVNLmNvbmNhdChbR24oIml0ZW1zIixbTG4oInRleHQiKSxMbigidmFsdWUiKV0pLG5lKCJzaXplIiwxKSxyZSgiZGlzYWJsZWQiLCExKV0pLFVNPWxuKGpNKSxXTT1GbixHTT1FTS5jb25jYXQoW3JlKCJjb25zdHJhaW4iLCEwKSxyZSgiZGlzYWJsZWQiLCExKV0pLFhNPWxuKEdNKSxZTT1sbihbTG4oIndpZHRoIiksTG4oImhlaWdodCIpXSkscU09RU0uY29uY2F0KFtKbigicGxhY2Vob2xkZXIiKSxyZSgibWF4aW1pemVkIiwhMSkscmUoImRpc2FibGVkIiwhMSldKSxLTT1sbihxTSksSk09Rm4sJE09RU0uY29uY2F0KFtvZSgiZmlsZXR5cGUiLCJmaWxlIixbImltYWdlIiwibWVkaWEiLCJmaWxlIl0pLFpuKCJkaXNhYmxlZCIsITEpXSksUU09bG4oJE0pLFpNPWxuKFtMbigidmFsdWUiKSxabigibWV0YSIse30pXSksdEE9VE0uY29uY2F0KFtlZSgidGFnIiwidGV4dGFyZWEiKSxMbigic2NyaXB0SWQiKSxMbigic2NyaXB0VXJsIiksKGxNPXVuZGVmaW5lZCx0ZSgic2V0dGluZ3MiLGxNLEhuKSldKSxuQT1UTS5jb25jYXQoW2VlKCJ0YWciLCJ0ZXh0YXJlYSIpLFVuKCJpbml0IildKSxlQT1TbihmdW5jdGlvbih0KXtyZXR1cm4gQ24oImN1c3RvbWVkaXRvci5vbGQiLHNuKG5BKSx0KS5vclRodW5rKGZ1bmN0aW9uKCl7cmV0dXJuIENuKCJjdXN0b21lZGl0b3IubmV3Iixzbih0QSksdCl9KX0pLG9BPUZuLHJBPVtMbigidHlwZSIpLExuKCJodG1sIiksb2UoInByZXNldHMiLCJwcmVzZW50YXRpb24iLFsicHJlc2VudGF0aW9uIiwiZG9jdW1lbnQiXSldLGlBPWxuKHJBKSx1QT1FTS5jb25jYXQoW05uKCJjdXJyZW50U3RhdGUiLGxuKFt6bigiYmxvYiIpLExuKCJ1cmwiKV0pKV0pLGFBPWxuKHVBKSxjQT1FTS5jb25jYXQoW1puKCJjb2x1bW5zIiwiYXV0byIpXSksc0E9bG4oY0EpLGxBPXhuKFtMbigidmFsdWUiKSxMbigidGV4dCIpLExuKCJpY29uIildKSxmQT1bTG4oInR5cGUiKSxYbigiaGVhZGVyIixGbiksWG4oImNlbGxzIixmbihGbikpXSxkQT1sbihmQSksbUE9ZnVuY3Rpb24obil7cmV0dXJuIGhuKCJpdGVtcyIsIml0ZW1zIixVdCgpLGZuKFNuKGZ1bmN0aW9uKHQpe3JldHVybiBDbigiQ2hlY2tpbmcgaXRlbSBvZiAiK24sZ0EsdCkuZm9sZChmdW5jdGlvbih0KXtyZXR1cm4gb3QuZXJyb3IoVG4odCkpfSxmdW5jdGlvbih0KXtyZXR1cm4gb3QudmFsdWUodCl9KX0pKSl9LGdBPXduKGZ1bmN0aW9uKCl7cmV0dXJuIEVuKCJ0eXBlIix7YWxlcnRiYW5uZXI6d00sYmFyOmxuKChuPW1BKCJiYXIiKSxbTG4oInR5cGUiKSxuXSkpLGJ1dHRvbjprTSxjaGVja2JveDpPTSxjb2xvcmlucHV0OkJNLGNvbG9ycGlja2VyOk1NLGRyb3B6b25lOkZNLGdyaWQ6bG4oUk0obUEoImdyaWQiKSkpLGlmcmFtZTpITSxpbnB1dDpOTSxzZWxlY3Rib3g6VU0sc2l6ZWlucHV0OlhNLHRleHRhcmVhOktNLHVybGlucHV0OlFNLGN1c3RvbWVkaXRvcjplQSxodG1scGFuZWw6aUEsaW1hZ2V0b29sczphQSxjb2xsZWN0aW9uOnNBLGxhYmVsOmxuKCh0PW1BKCJsYWJlbCIpLFtMbigidHlwZSIpLExuKCJsYWJlbCIpLHRdKSksdGFibGU6ZEEscGFuZWw6aEF9KTt2YXIgdCxufSkscEE9W0xuKCJ0eXBlIiksWm4oImNsYXNzZXMiLFtdKSxYbigiaXRlbXMiLGdBKV0saEE9bG4ocEEpLHZBPVtobigibmFtZSIsIm5hbWUiLEd0KGZ1bmN0aW9uKCl7cmV0dXJuIE5yKCJ0YWItbmFtZSIpfSksRm4pLExuKCJ0aXRsZSIpLFhuKCJpdGVtcyIsZ0EpXSxiQT1bTG4oInR5cGUiKSxHbigidGFicyIsdkEpXSx5QT1sbihiQSkseEE9bG4oW0xuKCJ0eXBlIiksTG4oIm5hbWUiKV0uY29uY2F0KHlwKSksd0E9SW4sU0E9W2huKCJuYW1lIiwibmFtZSIsR3QoZnVuY3Rpb24oKXtyZXR1cm4gTnIoImJ1dHRvbi1uYW1lIil9KSxGbiksSm4oImljb24iKSxvZSgiYWxpZ24iLCJlbmQiLFsic3RhcnQiLCJlbmQiXSkscmUoInByaW1hcnkiLCExKSxyZSgiZGlzYWJsZWQiLCExKV0sa0E9YihTQSxbTG4oInRleHQiKV0pLENBPWIoW2puKCJ0eXBlIixbInN1Ym1pdCIsImNhbmNlbCIsImN1c3RvbSJdKV0sa0EpLE9BPWIoW2puKCJ0eXBlIixbIm1lbnUiXSksSm4oInRleHQiKSxKbigidG9vbHRpcCIpLEpuKCJpY29uIiksWG4oIml0ZW1zIix4QSldLFNBKSxfQT1rQSxUQT1CbigidHlwZSIse3N1Ym1pdDpDQSxjYW5jZWw6Q0EsY3VzdG9tOkNBLG1lbnU6T0F9KSxFQT1sbihbTG4oInRpdGxlIiksTm4oImJvZHkiLEVuKCJ0eXBlIix7cGFuZWw6aEEsdGFicGFuZWw6eUF9KSksZWUoInNpemUiLCJub3JtYWwiKSxYbigiYnV0dG9ucyIsVEEpLFpuKCJpbml0aWFsRGF0YSIse30pLGllKCJvbkFjdGlvbiIsWiksaWUoIm9uQ2hhbmdlIixaKSxpZSgib25TdWJtaXQiLFopLGllKCJvbkNsb3NlIixaKSxpZSgib25DYW5jZWwiLFopLFpuKCJvblRhYkNoYW5nZSIsWildKSxCQT1mdW5jdGlvbih0KXtyZXR1cm4gayh0KT9bdF0uY29uY2F0KFUodnQodCksQkEpKTpDKHQpP1UodCxCQSk6W119LERBPWZ1bmN0aW9uKHQpe3JldHVybiBTKHQudHlwZSkmJlModC5uYW1lKX0sTUE9e2NoZWNrYm94Ol9NLGNvbG9yaW5wdXQ6RE0sY29sb3JwaWNrZXI6QU0sZHJvcHpvbmU6SU0saW5wdXQ6TE0saWZyYW1lOlBNLHNpemVpbnB1dDpZTSxzZWxlY3Rib3g6V00sc2l6ZTpZTSx0ZXh0YXJlYTpKTSx1cmxpbnB1dDpaTSxjdXN0b21lZGl0b3I6b0EsY29sbGVjdGlvbjpsQSx0b2dnbGVtZW51aXRlbTp3QX0sQUE9ZnVuY3Rpb24odCl7dmFyIG49UChCQSh0KSxEQSksZT1VKG4sZnVuY3Rpb24obil7cmV0dXJuIHQ9bixzdC5mcm9tKE1BW3QudHlwZV0pLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm5bXX0sZnVuY3Rpb24odCl7cmV0dXJuW05uKG4ubmFtZSx0KV19KTt2YXIgdH0pO3JldHVybiBsbihlKX0sRkE9bG4oYihbam4oInR5cGUiLFsiY2FuY2VsIiwiY3VzdG9tIl0pXSxfQSkpLElBPWxuKFtMbigidGl0bGUiKSxMbigidXJsIiksS24oImhlaWdodCIpLEtuKCJ3aWR0aCIpLHFuKCJidXR0b25zIixmbihGQSkpLGllKCJvbkFjdGlvbiIsWiksaWUoIm9uQ2FuY2VsIixaKSxpZSgib25DbG9zZSIsWiksaWUoIm9uTWVzc2FnZSIsWildKSxSQT1mdW5jdGlvbih0KXtyZXR1cm57aW50ZXJuYWxEaWFsb2c6T24oQ24oImRpYWxvZyIsRUEsdCkpLGRhdGFWYWxpZGF0b3I6QUEodCksaW5pdGlhbERhdGE6dC5pbml0aWFsRGF0YX19LFZBPXtvcGVuOmZ1bmN0aW9uKHQsbil7dmFyIGU9UkEobik7cmV0dXJuIHQoZS5pbnRlcm5hbERpYWxvZyxlLmluaXRpYWxEYXRhLGUuZGF0YVZhbGlkYXRvcil9LG9wZW5Vcmw6ZnVuY3Rpb24odCxuKXtyZXR1cm4gdChPbihDbigiZGlhbG9nIixJQSxuKSkpfSxyZWRpYWw6ZnVuY3Rpb24odCl7cmV0dXJuIFJBKHQpfX0sSEE9ZnVuY3Rpb24odCl7dmFyIGU9W10sbz17fTtyZXR1cm4gZnQodCxmdW5jdGlvbih0LG4pe3QuZm9sZChmdW5jdGlvbigpe2UucHVzaChuKX0sZnVuY3Rpb24odCl7b1tuXT10fSl9KSwwPGUubGVuZ3RoP290LmVycm9yKGUpOm90LnZhbHVlKG8pfSxQQT1PZih7bmFtZToiVGFiQnV0dG9uIixjb25maWdGaWVsZHM6W1puKCJ1aWQiLHVuZGVmaW5lZCksem4oInZhbHVlIiksaG4oImRvbSIsImRvbSIsWHQoZnVuY3Rpb24oKXtyZXR1cm57YXR0cmlidXRlczp7cm9sZToidGFiIixpZDpOcigiYXJpYSIpLCJhcmlhLXNlbGVjdGVkIjoiZmFsc2UifX19KSxEbigpKSxZbigiYWN0aW9uIiksWm4oImRvbU1vZGlmaWNhdGlvbiIse30pLHlsKCJ0YWJCdXR0b25CZWhhdmlvdXJzIixbWG0sUm0sYmxdKSx6bigidmlldyIpXSxmYWN0b3J5OmZ1bmN0aW9uKHQsbil7cmV0dXJue3VpZDp0LnVpZCxkb206dC5kb20sY29tcG9uZW50czp0LmNvbXBvbmVudHMsZXZlbnRzOnVnKHQuYWN0aW9uKSxiZWhhdmlvdXJzOndsKHQudGFiQnV0dG9uQmVoYXZpb3VycyxbWG0uY29uZmlnKHt9KSxSbS5jb25maWcoe21vZGU6ImV4ZWN1dGlvbiIsdXNlU3BhY2U6ITAsdXNlRW50ZXI6ITB9KSxibC5jb25maWcoe3N0b3JlOnttb2RlOiJtZW1vcnkiLGluaXRpYWxWYWx1ZTp0LnZhbHVlfX0pXSksZG9tTW9kaWZpY2F0aW9uOnQuZG9tTW9kaWZpY2F0aW9ufX19KSx6QT1hdChbem4oInRhYnMiKSx6bigiZG9tIiksWm4oImNsaWNrVG9EaXNtaXNzIiwhMSkseWwoInRhYmJhckJlaGF2aW91cnMiLFtqZixSbV0pLEt1KFsidGFiQ2xhc3MiLCJzZWxlY3RlZENsYXNzIl0pXSksTkE9JGwoe2ZhY3Rvcnk6UEEsbmFtZToidGFicyIsdW5pdDoidGFiIixvdmVycmlkZXM6ZnVuY3Rpb24obyl7dmFyIHI9ZnVuY3Rpb24odCxuKXtqZi5kZWhpZ2hsaWdodCh0LG4pLGpvKHQsUG8oKSx7dGFiYmFyOnQsYnV0dG9uOm59KX0saT1mdW5jdGlvbih0LG4pe2pmLmhpZ2hsaWdodCh0LG4pLGpvKHQsSG8oKSx7dGFiYmFyOnQsYnV0dG9uOm59KX07cmV0dXJue2FjdGlvbjpmdW5jdGlvbih0KXt2YXIgbj10LmdldFN5c3RlbSgpLmdldEJ5VWlkKG8udWlkKS5nZXRPckRpZSgpLGU9amYuaXNIaWdobGlnaHRlZChuLHQpOyhlJiZvLmNsaWNrVG9EaXNtaXNzP3I6ZT9aOmkpKG4sdCl9LGRvbU1vZGlmaWNhdGlvbjp7Y2xhc3Nlczpbby5tYXJrZXJzLnRhYkNsYXNzXX19fX0pLExBPWF0KFtOQV0pLGpBPV9mKHtuYW1lOiJUYWJiYXIiLGNvbmZpZ0ZpZWxkczp6QSgpLHBhcnRGaWVsZHM6TEEoKSxmYWN0b3J5OmZ1bmN0aW9uKHQsbixlLG8pe3JldHVybnt1aWQ6dC51aWQsZG9tOnQuZG9tLGNvbXBvbmVudHM6biwiZGVidWcuc2tldGNoZXIiOiJUYWJiYXIiLGRvbU1vZGlmaWNhdGlvbjp7YXR0cmlidXRlczp7cm9sZToidGFibGlzdCJ9fSxiZWhhdmlvdXJzOndsKHQudGFiYmFyQmVoYXZpb3VycyxbamYuY29uZmlnKHtoaWdobGlnaHRDbGFzczp0Lm1hcmtlcnMuc2VsZWN0ZWRDbGFzcyxpdGVtQ2xhc3M6dC5tYXJrZXJzLnRhYkNsYXNzLG9uSGlnaGxpZ2h0OmZ1bmN0aW9uKHQsbil7QnIobi5lbGVtZW50KCksImFyaWEtc2VsZWN0ZWQiLCJ0cnVlIil9LG9uRGVoaWdobGlnaHQ6ZnVuY3Rpb24odCxuKXtCcihuLmVsZW1lbnQoKSwiYXJpYS1zZWxlY3RlZCIsImZhbHNlIil9fSksUm0uY29uZmlnKHttb2RlOiJmbG93IixnZXRJbml0aWFsOmZ1bmN0aW9uKHQpe3JldHVybiBqZi5nZXRIaWdobGlnaHRlZCh0KS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQuZWxlbWVudCgpfSl9LHNlbGVjdG9yOiIuIit0Lm1hcmtlcnMudGFiQ2xhc3MsZXhlY3V0ZU9uTW92ZTohMH0pXSl9fX0pLFVBPU9mKHtuYW1lOiJUYWJ2aWV3Iixjb25maWdGaWVsZHM6W3lsKCJ0YWJ2aWV3QmVoYXZpb3VycyIsW05tXSldLGZhY3Rvcnk6ZnVuY3Rpb24odCxuKXtyZXR1cm57dWlkOnQudWlkLGRvbTp0LmRvbSxiZWhhdmlvdXJzOndsKHQudGFidmlld0JlaGF2aW91cnMsW05tLmNvbmZpZyh7fSldKSxkb21Nb2RpZmljYXRpb246e2F0dHJpYnV0ZXM6e3JvbGU6InRhYnBhbmVsIn19fX19KSxXQT1hdChbWm4oInNlbGVjdEZpcnN0IiwhMCksJHUoIm9uQ2hhbmdlVGFiIiksJHUoIm9uRGlzbWlzc1RhYiIpLFpuKCJ0YWJzIixbXSkseWwoInRhYlNlY3Rpb25CZWhhdmlvdXJzIixbXSldKSxHQT1xbCh7ZmFjdG9yeTpqQSxzY2hlbWE6W3puKCJkb20iKSxXbigibWFya2VycyIsW3puKCJ0YWJDbGFzcyIpLHpuKCJzZWxlY3RlZENsYXNzIildKV0sbmFtZToidGFiYmFyIixkZWZhdWx0czpmdW5jdGlvbih0KXtyZXR1cm57dGFiczp0LnRhYnN9fX0pLFhBPXFsKHtmYWN0b3J5OlVBLG5hbWU6InRhYnZpZXcifSksWUE9YXQoW0dBLFhBXSkscUE9X2Yoe25hbWU6IlRhYlNlY3Rpb24iLGNvbmZpZ0ZpZWxkczpXQSgpLHBhcnRGaWVsZHM6WUEoKSxmYWN0b3J5OmZ1bmN0aW9uKGksdCxuLGUpe3ZhciBvPWZ1bmN0aW9uKHQsbil7c2YodCxpLCJ0YWJiYXIiKS5lYWNoKGZ1bmN0aW9uKHQpe24odCkuZWFjaChVbyl9KX07cmV0dXJue3VpZDppLnVpZCxkb206aS5kb20sY29tcG9uZW50czp0LGJlaGF2aW91cnM6eGwoaS50YWJTZWN0aW9uQmVoYXZpb3VycyksZXZlbnRzOllvKHV0KFtpLnNlbGVjdEZpcnN0P1tvcihmdW5jdGlvbih0LG4pe28odCxqZi5nZXRGaXJzdCl9KV06W10sW0pvKEhvKCksZnVuY3Rpb24odCxuKXt2YXIgbyxyLGU9bi5ldmVudCgpLmJ1dHRvbigpO289ZSxyPWJsLmdldFZhbHVlKG8pLHNmKG8saSwidGFidmlldyIpLmVhY2goZnVuY3Rpb24oZSl7TChpLnRhYnMsZnVuY3Rpb24odCl7cmV0dXJuIHQudmFsdWU9PT1yfSkuZWFjaChmdW5jdGlvbih0KXt2YXIgbj10LnZpZXcoKTtNcihvLmVsZW1lbnQoKSwiaWQiKS5lYWNoKGZ1bmN0aW9uKHQpe0JyKGUuZWxlbWVudCgpLCJhcmlhLWxhYmVsbGVkYnkiLHQpfSksTm0uc2V0KGUsbiksaS5vbkNoYW5nZVRhYihlLG8sbil9KX0pfSksSm8oUG8oKSxmdW5jdGlvbih0LG4pe3ZhciBlPW4uZXZlbnQoKS5idXR0b24oKTtpLm9uRGlzbWlzc1RhYih0LGUpfSldXSkpLGFwaXM6e2dldFZpZXdJdGVtczpmdW5jdGlvbih0KXtyZXR1cm4gc2YodCxpLCJ0YWJ2aWV3IikubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBObS5jb250ZW50cyh0KX0pLmdldE9yKFtdKX0sc2hvd1RhYjpmdW5jdGlvbih0LGUpe28odCxmdW5jdGlvbihuKXt2YXIgdD1qZi5nZXRDYW5kaWRhdGVzKG4pO3JldHVybiBMKHQsZnVuY3Rpb24odCl7cmV0dXJuIGJsLmdldFZhbHVlKHQpPT09ZX0pLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4hamYuaXNIaWdobGlnaHRlZChuLHQpfSl9KX19fX0sYXBpczp7Z2V0Vmlld0l0ZW1zOmZ1bmN0aW9uKHQsbil7cmV0dXJuIHQuZ2V0Vmlld0l0ZW1zKG4pfSxzaG93VGFiOmZ1bmN0aW9uKHQsbixlKXt0LnNob3dUYWIobixlKX19fSksS0E9ZnVuY3Rpb24odCxuKXtEaSh0LCJoZWlnaHQiLG4rInB4IiksUGUoKS5icm93c2VyLmlzSUUoKT9IaSh0LCJmbGV4LWJhc2lzIik6RGkodCwiZmxleC1iYXNpcyIsbisicHgiKX0sSkE9ZnVuY3Rpb24odCxvLHIpe0R1KHQsJ1tyb2xlPSJkaWFsb2ciXScpLmVhY2goZnVuY3Rpb24oZSl7TXUoZSwnW3JvbGU9InRhYmxpc3QiXScpLmVhY2goZnVuY3Rpb24obil7ci5nZXQoKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIERpKG8sImhlaWdodCIsIjAiKSxEaShvLCJmbGV4LWJhc2lzIiwiMCIpLE1hdGgubWluKHQsZnVuY3Rpb24odCxuLGUpe3ZhciBvLHI9Y3IodCkuZG9tKCksaT1EdSh0LCIudG94LWRpYWxvZy13cmFwIikuZ2V0T3IodCk7bz0iZml4ZWQiPT09RmkoaSwicG9zaXRpb24iKT9NYXRoLm1heChyLmNsaWVudEhlaWdodCxudC53aW5kb3cuaW5uZXJIZWlnaHQpOk1hdGgubWF4KHIub2Zmc2V0SGVpZ2h0LHIuc2Nyb2xsSGVpZ2h0KTt2YXIgdT10dShuKSxhPW4uZG9tKCkub2Zmc2V0TGVmdD49ZS5kb20oKS5vZmZzZXRMZWZ0K2N1KGUpP01hdGgubWF4KHR1KGUpLHUpOnUsYz1wYXJzZUludChGaSh0LCJtYXJnaW4tdG9wIiksMTApfHwwLHM9cGFyc2VJbnQoRmkodCwibWFyZ2luLWJvdHRvbSIpLDEwKXx8MDtyZXR1cm4gby0odHUodCkrYytzLWEpfShlLG8sbikpfSkuZWFjaChmdW5jdGlvbih0KXtLQShvLHQpfSl9KX0pfSwkQT1mdW5jdGlvbih0KXtyZXR1cm4gTXUodCwnW3JvbGU9InRhYnBhbmVsIl0nKX0sUUE9ZnVuY3Rpb24oYSl7dmFyIGM7cmV0dXJue3NtYXJ0VGFiSGVpZ2h0OihjPWNlKHN0Lm5vbmUoKSkse2V4dHJhRXZlbnRzOltvcihmdW5jdGlvbih0KXt2YXIgZT10LmVsZW1lbnQoKTskQShlKS5lYWNoKGZ1bmN0aW9uKHUpe3ZhciBuO0RpKHUsInZpc2liaWxpdHkiLCJoaWRkZW4iKSx0LmdldFN5c3RlbSgpLmdldEJ5RG9tKHUpLnRvT3B0aW9uKCkuZWFjaChmdW5jdGlvbih0KXt2YXIgbyxyLGksbj0ocj11LGk9dCxWKG89YSxmdW5jdGlvbih0LG4pe05tLnNldChpLG9bbl0udmlldygpKTt2YXIgZT1yLmRvbSgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybiBObS5zZXQoaSxbXSksZS5oZWlnaHR9KSksZT1LKHEobixmdW5jdGlvbih0LG4pe3JldHVybiBuPHQ/LTE6dDxuPzE6MH0pKTtjLnNldChlKX0pLEpBKGUsdSxjKSxIaSh1LCJ2aXNpYmlsaXR5Iiksbj10LEsoYSkuZWFjaChmdW5jdGlvbih0KXtyZXR1cm4gcUEuc2hvd1RhYihuLHQudmFsdWUpfSksTGcucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCl7SkEoZSx1LGMpfSl9KX0pLEpvKERvKCksZnVuY3Rpb24odCl7dmFyIG49dC5lbGVtZW50KCk7JEEobikuZWFjaChmdW5jdGlvbih0KXtKQShuLHQsYyl9KX0pLEpvKFpiLGZ1bmN0aW9uKHQsbil7dmFyIHI9dC5lbGVtZW50KCk7JEEocikuZWFjaChmdW5jdGlvbihuKXt2YXIgdD1KYSgpO0RpKG4sInZpc2liaWxpdHkiLCJoaWRkZW4iKTt2YXIgZT1SaShuLCJoZWlnaHQiKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHBhcnNlSW50KHQsMTApfSk7SGkobiwiaGVpZ2h0IiksSGkobiwiZmxleC1iYXNpcyIpO3ZhciBvPW4uZG9tKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O2UuZm9yYWxsKGZ1bmN0aW9uKHQpe3JldHVybiB0PG99KT8oYy5zZXQoc3QuZnJvbShvKSksSkEocixuLGMpKTplLmVhY2goZnVuY3Rpb24odCl7S0Eobix0KX0pLEhpKG4sInZpc2liaWxpdHkiKSx0LmVhY2goS2EpfSl9KV0sc2VsZWN0Rmlyc3Q6ITF9KSxuYWl2ZVRhYkhlaWdodDp7ZXh0cmFFdmVudHM6W10sc2VsZWN0Rmlyc3Q6ITB9fX0sWkE9InNlbmQtZGF0YS10by1zZWN0aW9uIix0Rj0ic2VuZC1kYXRhLXRvLXZpZXciLG5GPU5yKCJ1cGRhdGUtZGlhbG9nIiksZUY9TnIoInVwZGF0ZS10aXRsZSIpLG9GPU5yKCJ1cGRhdGUtYm9keSIpLHJGPU5yKCJ1cGRhdGUtZm9vdGVyIiksaUY9TnIoImJvZHktc2VuZC1tZXNzYWdlIiksdUY9ZnVuY3Rpb24odCxuLGQsZSl7cmV0dXJue2RvbTp7dGFnOiJkaXYiLGNsYXNzZXM6WyJ0b3gtZGlhbG9nX19jb250ZW50LWpzIl0sYXR0cmlidXRlczpldChldCh7fSxuLm1hcChmdW5jdGlvbih0KXtyZXR1cm57aWQ6dH19KS5nZXRPcih7fSkpLGU/eyJhcmlhLWxpdmUiOiJwb2xpdGUifTp7fSl9LGNvbXBvbmVudHM6W10sYmVoYXZpb3Vyczp6YShbblMoMCksY1QuY29uZmlnKHtjaGFubmVsOm9GLHVwZGF0ZVN0YXRlOmZ1bmN0aW9uKHQsbil7cmV0dXJuIHN0LnNvbWUoe2lzVGFiUGFuZWw6ZnVuY3Rpb24oKXtyZXR1cm4idGFicGFuZWwiPT09bi5ib2R5LnR5cGV9fSl9LHJlbmRlckNvbXBvbmVudHM6ZnVuY3Rpb24odCl7c3dpdGNoKHQuYm9keS50eXBlKXtjYXNlInRhYnBhbmVsIjpyZXR1cm5bKHI9dC5ib2R5LGk9ZCx1PWNlKHt9KSxhPWZ1bmN0aW9uKHQpe3ZhciBuPWJsLmdldFZhbHVlKHQpLGU9SEEobikuZ2V0T3Ioe30pLG89dS5nZXQoKSxyPUN0KG8sZSk7dS5zZXQocil9LGM9ZnVuY3Rpb24odCl7dmFyIG49dS5nZXQoKTtibC5zZXRWYWx1ZSh0LG4pfSxzPWNlKG51bGwpLGw9VihyLnRhYnMsZnVuY3Rpb24odCl7cmV0dXJue3ZhbHVlOnQubmFtZSxkb206e3RhZzoiZGl2IixjbGFzc2VzOlsidG94LWRpYWxvZ19fYm9keS1uYXYtaXRlbSJdLGlubmVySHRtbDppLnNoYXJlZC5wcm92aWRlcnMudHJhbnNsYXRlKHQudGl0bGUpfSx2aWV3OmZ1bmN0aW9uKCl7cmV0dXJuW0d3LnNrZXRjaChmdW5jdGlvbihuKXtyZXR1cm57ZG9tOnt0YWc6ImRpdiIsY2xhc3NlczpbInRveC1mb3JtIl19LGNvbXBvbmVudHM6Vih0Lml0ZW1zLGZ1bmN0aW9uKHQpe3JldHVybiBRQyhuLHQsaSl9KSxmb3JtQmVoYXZpb3Vyczp6YShbUm0uY29uZmlnKHttb2RlOiJhY3ljbGljIix1c2VUYWJzdG9wQXQ6eCh5Uyl9KSxMbSgiVGFiVmlldy5mb3JtLmV2ZW50cyIsW29yKGMpLHJyKGEpXSksWWEuY29uZmlnKHtjaGFubmVsczpKdChbe2tleTpaQSx2YWx1ZTp7b25SZWNlaXZlOmF9fSx7a2V5OnRGLHZhbHVlOntvblJlY2VpdmU6Y319XSl9KV0pfX0pXX19fSksZj1RQShsKS5zbWFydFRhYkhlaWdodCxxQS5za2V0Y2goe2RvbTp7dGFnOiJkaXYiLGNsYXNzZXM6WyJ0b3gtZGlhbG9nX19ib2R5Il19LG9uQ2hhbmdlVGFiOmZ1bmN0aW9uKHQsbixlKXt2YXIgbz1ibC5nZXRWYWx1ZShuKTtqbyh0LFFiLHtuYW1lOm8sb2xkTmFtZTpzLmdldCgpfSkscy5zZXQobyl9LHRhYnM6bCxjb21wb25lbnRzOltxQS5wYXJ0cygpLnRhYmJhcih7ZG9tOnt0YWc6ImRpdiIsY2xhc3NlczpbInRveC1kaWFsb2dfX2JvZHktbmF2Il19LGNvbXBvbmVudHM6W2pBLnBhcnRzKCkudGFicyh7fSldLG1hcmtlcnM6e3RhYkNsYXNzOiJ0b3gtdGFiIixzZWxlY3RlZENsYXNzOiJ0b3gtZGlhbG9nX19ib2R5LW5hdi1pdGVtLS1hY3RpdmUifSx0YWJiYXJCZWhhdmlvdXJzOnphKFtEeS5jb25maWcoe30pXSl9KSxxQS5wYXJ0cygpLnRhYnZpZXcoe2RvbTp7dGFnOiJkaXYiLGNsYXNzZXM6WyJ0b3gtZGlhbG9nX19ib2R5LWNvbnRlbnQiXX19KV0sc2VsZWN0Rmlyc3Q6Zi5zZWxlY3RGaXJzdCx0YWJTZWN0aW9uQmVoYXZpb3Vyczp6YShbTG0oInRhYnBhbmVsIixmLmV4dHJhRXZlbnRzKSxSbS5jb25maWcoe21vZGU6ImFjeWNsaWMifSksTWYuY29uZmlnKHtmaW5kOmZ1bmN0aW9uKHQpe3JldHVybiBLKHFBLmdldFZpZXdJdGVtcyh0KSl9fSksYmwuY29uZmlnKHtzdG9yZTp7bW9kZToibWFudWFsIixnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRTeXN0ZW0oKS5icm9hZGNhc3RPbihbWkFdLHt9KSx1LmdldCgpfSxzZXRWYWx1ZTpmdW5jdGlvbih0LG4pe3Uuc2V0KG4pLHQuZ2V0U3lzdGVtKCkuYnJvYWRjYXN0T24oW3RGXSx7fSl9fX0pXSl9KSldO2RlZmF1bHQ6cmV0dXJuWyhlPXQuYm9keSxvPWQse2RvbTp7dGFnOiJkaXYiLGNsYXNzZXM6WyJ0b3gtZGlhbG9nX19ib2R5Il19LGNvbXBvbmVudHM6W3tkb206e3RhZzoiZGl2IixjbGFzc2VzOlsidG94LWRpYWxvZ19fYm9keS1jb250ZW50Il19LGNvbXBvbmVudHM6WyhuPVVnKEd3LnNrZXRjaChmdW5jdGlvbihuKXtyZXR1cm57ZG9tOnt0YWc6ImRpdiIsY2xhc3NlczpbInRveC1mb3JtIl0uY29uY2F0KGUuY2xhc3Nlcyl9LGNvbXBvbmVudHM6VihlLml0ZW1zLGZ1bmN0aW9uKHQpe3JldHVybiBRQyhuLHQsbyl9KX19KSkpLmFzU3BlYygpXX1dLGJlaGF2aW91cnM6emEoW1JtLmNvbmZpZyh7bW9kZToiYWN5Y2xpYyIsdXNlVGFic3RvcEF0OngoeVMpfSksdFMobiksY1Mobix7cG9zdHByb2Nlc3M6ZnVuY3Rpb24odCl7cmV0dXJuIEhBKHQpLmZvbGQoZnVuY3Rpb24odCl7cmV0dXJuIG50LmNvbnNvbGUuZXJyb3IodCkse319LGZ1bmN0aW9uKHQpe3JldHVybiB0fSl9fSldKX0pXX12YXIgZSxvLG4scixpLHUsYSxjLHMsbCxmfSxpbml0aWFsRGF0YTp0fSldKX19LGFGPVhwLmRldmljZVR5cGUuaXNUb3VjaCgpLGNGPWZ1bmN0aW9uKHQsbil7cmV0dXJue2RvbTp7dGFnOiJkaXYiLHN0eWxlczp7ZGlzcGxheToibm9uZSJ9LGNsYXNzZXM6WyJ0b3gtZGlhbG9nX19oZWFkZXIiXX0sY29tcG9uZW50czpbdCxuXX19LHNGPWZ1bmN0aW9uKHQsbil7cmV0dXJuIHlNLnBhcnRzKCkuY2xvc2Uoamcuc2tldGNoKHtkb206e3RhZzoiYnV0dG9uIixjbGFzc2VzOlsidG94LWJ1dHRvbiIsInRveC1idXR0b24tLWljb24iLCJ0b3gtYnV0dG9uLS1uYWtlZCJdLGF0dHJpYnV0ZXM6e3R5cGU6ImJ1dHRvbiIsImFyaWEtbGFiZWwiOm4udHJhbnNsYXRlKCJDbG9zZSIpfX0sYWN0aW9uOnQsYnV0dG9uQmVoYXZpb3Vyczp6YShbRHkuY29uZmlnKHt9KV0pfSkpfSxsRj1mdW5jdGlvbigpe3JldHVybiB5TS5wYXJ0cygpLnRpdGxlKHtkb206e3RhZzoiZGl2IixjbGFzc2VzOlsidG94LWRpYWxvZ19fdGl0bGUiXSxpbm5lckh0bWw6IiIsc3R5bGVzOntkaXNwbGF5OiJub25lIn19fSl9LGZGPWZ1bmN0aW9uKHQsbil7cmV0dXJuIHlNLnBhcnRzKCkuYm9keSh7ZG9tOnt0YWc6ImRpdiIsY2xhc3NlczpbInRveC1kaWFsb2dfX2JvZHkiXX0sY29tcG9uZW50czpbe2RvbTp7dGFnOiJkaXYiLGNsYXNzZXM6WyJ0b3gtZGlhbG9nX19ib2R5LWNvbnRlbnQiXX0sY29tcG9uZW50czpbe2RvbTpnQigiPHA+IituLnRyYW5zbGF0ZSh0KSsiPC9wPiIpfV19XX0pfSxkRj1mdW5jdGlvbih0KXtyZXR1cm4geU0ucGFydHMoKS5mb290ZXIoe2RvbTp7dGFnOiJkaXYiLGNsYXNzZXM6WyJ0b3gtZGlhbG9nX19mb290ZXIiXX0sY29tcG9uZW50czp0fSl9LG1GPWZ1bmN0aW9uKHQsbil7cmV0dXJuW1ViLnNrZXRjaCh7ZG9tOnt0YWc6ImRpdiIsY2xhc3NlczpbInRveC1kaWFsb2dfX2Zvb3Rlci1zdGFydCJdfSxjb21wb25lbnRzOnR9KSxVYi5za2V0Y2goe2RvbTp7dGFnOiJkaXYiLGNsYXNzZXM6WyJ0b3gtZGlhbG9nX19mb290ZXItZW5kIl19LGNvbXBvbmVudHM6bn0pXX0sZ0Y9ZnVuY3Rpb24obil7dmFyIHQsZT0idG94LWRpYWxvZyIsbz1lKyItd3JhcCIscj1vKyJfX2JhY2tkcm9wIixpPWUrIl9fZGlzYWJsZS1zY3JvbGwiO3JldHVybiB5TS5za2V0Y2goe2xhenlTaW5rOm4ubGF6eVNpbmssb25Fc2NhcGU6ZnVuY3Rpb24odCl7cmV0dXJuIG4ub25Fc2NhcGUodCksc3Quc29tZSghMCl9LHVzZVRhYnN0b3BBdDpmdW5jdGlvbih0KXtyZXR1cm4heVModCl9LGRvbTp7dGFnOiJkaXYiLGNsYXNzZXM6W2VdLmNvbmNhdChuLmV4dHJhQ2xhc3Nlcyksc3R5bGVzOmV0KHtwb3NpdGlvbjoicmVsYXRpdmUifSxuLmV4dHJhU3R5bGVzKX0sY29tcG9uZW50czpiKFtuLmhlYWRlcixuLmJvZHldLG4uZm9vdGVyLnRvQXJyYXkoKSkscGFydHM6e2Jsb2NrZXI6e2RvbTpnQignPGRpdiBjbGFzcz0iJytvKyciPjwvZGl2PicpLGNvbXBvbmVudHM6W3tkb206e3RhZzoiZGl2IixjbGFzc2VzOmFGP1tyLHIrIi0tb3BhcXVlIl06W3JdfX1dfX0sZHJhZ0Jsb2NrQ2xhc3M6byxtb2RhbEJlaGF2aW91cnM6emEoYihbWG0uY29uZmlnKHt9KSxMbSgiZGlhbG9nLWV2ZW50cyIsbi5kaWFsb2dFdmVudHMuY29uY2F0KFtlcihpbygpLGZ1bmN0aW9uKHQsbil7Um0uZm9jdXNJbih0KX0pXSkpLExtKCJzY3JvbGwtbG9jayIsW29yKGZ1bmN0aW9uKCl7YmkoX2koKSxpKX0pLHJyKGZ1bmN0aW9uKCl7eGkoX2koKSxpKX0pXSldLG4uZXh0cmFCZWhhdmlvdXJzKSksZXZlbnRPcmRlcjpldCgoKHQ9e30pW3hvKCldPVsiZGlhbG9nLWV2ZW50cyJdLHRbTW8oKV09WyJzY3JvbGwtbG9jayIsImRpYWxvZy1ldmVudHMiLCJhbGxveS5iYXNlLmJlaGF2aW91ciJdLHRbQW8oKV09WyJhbGxveS5iYXNlLmJlaGF2aW91ciIsImRpYWxvZy1ldmVudHMiLCJzY3JvbGwtbG9jayJdLHQpLG4uZXZlbnRPcmRlcil9KX0scEY9ZnVuY3Rpb24odCl7cmV0dXJuIGpnLnNrZXRjaCh7ZG9tOnt0YWc6ImJ1dHRvbiIsY2xhc3NlczpbInRveC1idXR0b24iLCJ0b3gtYnV0dG9uLS1pY29uIiwidG94LWJ1dHRvbi0tbmFrZWQiXSxhdHRyaWJ1dGVzOnt0eXBlOiJidXR0b24iLCJhcmlhLWxhYmVsIjp0LnRyYW5zbGF0ZSgiQ2xvc2UiKSx0aXRsZTp0LnRyYW5zbGF0ZSgiQ2xvc2UiKX19LGNvbXBvbmVudHM6W3tkb206e3RhZzoiZGl2IixjbGFzc2VzOlsidG94LWljb24iXSxpbm5lckh0bWw6Jzxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0xNy45NTMgNy40NTNMMTMuNDIyIDEybDQuNTMxIDQuNTQ3LTEuNDA2IDEuNDA2TDEyIDEzLjQyMmwtNC41NDcgNC41MzEtMS40MDYtMS40MDZMMTAuNTc4IDEyIDYuMDQ3IDcuNDUzbDEuNDA2LTEuNDA2TDEyIDEwLjU3OGw0LjU0Ny00LjUzMXoiIGZpbGwtcnVsZT0iZXZlbm9kZCI+PC9wYXRoPjwvc3ZnPid9fV0sYWN0aW9uOmZ1bmN0aW9uKHQpe0xvKHQsWWIpfX0pfSxoRj1mdW5jdGlvbih0LG4sZSl7dmFyIG89ZnVuY3Rpb24odCl7cmV0dXJuW1lpKGUudHJhbnNsYXRlKHQudGl0bGUpKV19O3JldHVybntkb206e3RhZzoiZGl2IixjbGFzc2VzOlsidG94LWRpYWxvZ19fdGl0bGUiXSxhdHRyaWJ1dGVzOmV0KHt9LG4ubWFwKGZ1bmN0aW9uKHQpe3JldHVybntpZDp0fX0pLmdldE9yKHt9KSl9LGNvbXBvbmVudHM6byh0KSxiZWhhdmlvdXJzOnphKFtjVC5jb25maWcoe2NoYW5uZWw6ZUYscmVuZGVyQ29tcG9uZW50czpvfSldKX19LHZGPWZ1bmN0aW9uKCl7cmV0dXJue2RvbTpnQignPGRpdiBjbGFzcz0idG94LWRpYWxvZ19fZHJhZ2hhbmRsZSI+PC9kaXY+Jyl9fSxiRj1mdW5jdGlvbih0LG4pe3JldHVybiBlPXt0aXRsZTpuLnNoYXJlZC5wcm92aWRlcnMudHJhbnNsYXRlKHQpLGRyYWdnYWJsZTpuLmRpYWxvZy5pc0RyYWdnYWJsZU1vZGFsKCl9LG89bi5zaGFyZWQucHJvdmlkZXJzLHI9eU0ucGFydHMoKS50aXRsZShoRihlLHN0Lm5vbmUoKSxvKSksaT15TS5wYXJ0cygpLmRyYWdoYW5kbGUodkYoKSksdT15TS5wYXJ0cygpLmNsb3NlKHBGKG8pKSxhPVtyXS5jb25jYXQoZS5kcmFnZ2FibGU/W2ldOltdKS5jb25jYXQoW3VdKSxVYi5za2V0Y2goe2RvbTpnQignPGRpdiBjbGFzcz0idG94LWRpYWxvZ19faGVhZGVyIj48L2Rpdj4nKSxjb21wb25lbnRzOmF9KTt2YXIgZSxvLHIsaSx1LGF9LHlGPWZ1bmN0aW9uKHQsbil7cmV0dXJue29uQ2xvc2U6ZnVuY3Rpb24oKXtyZXR1cm4gbi5jbG9zZVdpbmRvdygpfSxvbkJsb2NrOmZ1bmN0aW9uKGUpe3lNLnNldEJ1c3kodCgpLGZ1bmN0aW9uKHQsbil7cmV0dXJue2RvbTp7dGFnOiJkaXYiLGNsYXNzZXM6WyJ0b3gtZGlhbG9nX19idXN5LXNwaW5uZXIiXSxhdHRyaWJ1dGVzOnsiYXJpYS1sYWJlbCI6ZS5tZXNzYWdlKCl9LHN0eWxlczp7bGVmdDoiMHB4IixyaWdodDoiMHB4Iixib3R0b206IjBweCIsdG9wOiIwcHgiLHBvc2l0aW9uOiJhYnNvbHV0ZSJ9fSxiZWhhdmlvdXJzOm4sY29tcG9uZW50czpbe2RvbTpnQignPGRpdiBjbGFzcz0idG94LXNwaW5uZXIiPjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjwvZGl2PicpfV19fSl9LG9uVW5ibG9jazpmdW5jdGlvbigpe3lNLnNldElkbGUodCgpKX19fSx4Rj1mdW5jdGlvbih0LG4sZSxvKXt2YXIgcjtyZXR1cm4gSmkoZ0YoZXQoZXQoe30sdCkse2xhenlTaW5rOm8uc2hhcmVkLmdldFNpbmssZXh0cmFCZWhhdmlvdXJzOmIoW2NULmNvbmZpZyh7Y2hhbm5lbDpuRix1cGRhdGVTdGF0ZTpmdW5jdGlvbih0LG4pe3JldHVybiBzdC5zb21lKG4pfSxpbml0aWFsRGF0YTpufSksZlMoe30pXSx0LmV4dHJhQmVoYXZpb3Vycyksb25Fc2NhcGU6ZnVuY3Rpb24odCl7TG8odCxZYil9LGRpYWxvZ0V2ZW50czplLGV2ZW50T3JkZXI6KChyPXt9KVt5bygpXT1bInJlZmxlY3RpbmciLCJyZWNlaXZpbmciXSxyW01vKCldPVsic2Nyb2xsLWxvY2siLCJyZWZsZWN0aW5nIiwibWVzc2FnZXMiLCJkaWFsb2ctZXZlbnRzIiwiYWxsb3kuYmFzZS5iZWhhdmlvdXIiXSxyW0FvKCldPVsiYWxsb3kuYmFzZS5iZWhhdmlvdXIiLCJkaWFsb2ctZXZlbnRzIiwibWVzc2FnZXMiLCJyZWZsZWN0aW5nIiwic2Nyb2xsLWxvY2siXSxyKX0pKSl9LHdGPWZ1bmN0aW9uKHQpe3JldHVybiBWKHQsZnVuY3Rpb24odCl7cmV0dXJuIm1lbnUiPT09dC50eXBlPyhlPVYoKG49dCkuaXRlbXMsZnVuY3Rpb24odCl7dmFyIG49Y2UoITEpO3JldHVybiBldChldCh7fSx0KSx7c3RvcmFnZTpufSl9KSxldChldCh7fSxuKSx7aXRlbXM6ZX0pKTp0O3ZhciBuLGV9KX0sU0Y9ZnVuY3Rpb24odCl7cmV0dXJuIE4odCxmdW5jdGlvbih0LG4pe3JldHVybiJtZW51IiE9PW4udHlwZT90Ok4obi5pdGVtcyxmdW5jdGlvbih0LG4pe3JldHVybiB0W24ubmFtZV09bi5zdG9yYWdlLHR9LHQpfSx7fSl9LGtGPWZ1bmN0aW9uKHQsZSl7cmV0dXJuW3RyKGlvKCksYlMpLHQoWGIsZnVuY3Rpb24odCxuKXtlLm9uQ2xvc2UoKSxuLm9uQ2xvc2UoKX0pLHQoWWIsZnVuY3Rpb24odCxuLGUsbyl7bi5vbkNhbmNlbCh0KSxMbyhvLFhiKX0pLEpvKCRiLGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUub25VbmJsb2NrKCl9KSxKbyhKYixmdW5jdGlvbih0LG4pe3JldHVybiBlLm9uQmxvY2sobi5ldmVudCgpKX0pXX0sQ0Y9ZnVuY3Rpb24oaSx0KXt2YXIgbj1mdW5jdGlvbih0LHIpe3JldHVybiBKbyh0LGZ1bmN0aW9uKGUsbyl7dShlLGZ1bmN0aW9uKHQsbil7cihpKCksdCxvLmV2ZW50KCksZSl9KX0pfSx1PWZ1bmN0aW9uKG4sZSl7Y1QuZ2V0U3RhdGUobikuZ2V0KCkuZWFjaChmdW5jdGlvbih0KXtlKHQsbil9KX07cmV0dXJuIGIoa0Yobix0KSxbbihxYixmdW5jdGlvbih0LG4sZSl7bi5vbkFjdGlvbih0LHtuYW1lOmUubmFtZSgpfSl9KV0pfSxPRj1mdW5jdGlvbihpLHQsYSl7dmFyIG49ZnVuY3Rpb24odCxyKXtyZXR1cm4gSm8odCxmdW5jdGlvbihlLG8pe3UoZSxmdW5jdGlvbih0LG4pe3IoaSgpLHQsby5ldmVudCgpLGUpfSl9KX0sdT1mdW5jdGlvbihuLGUpe2NULmdldFN0YXRlKG4pLmdldCgpLmVhY2goZnVuY3Rpb24odCl7ZSh0LmludGVybmFsRGlhbG9nLG4pfSl9O3JldHVybiBiKGtGKG4sdCksW24oS2IsZnVuY3Rpb24odCxuKXtyZXR1cm4gbi5vblN1Ym1pdCh0KX0pLG4oR2IsZnVuY3Rpb24odCxuLGUpe24ub25DaGFuZ2UodCx7bmFtZTplLm5hbWUoKX0pfSksbihxYixmdW5jdGlvbih0LG4sZSxvKXt2YXIgcj1mdW5jdGlvbigpe3JldHVybiBSbS5mb2N1c0luKG8pfSxpPWZ1bmN0aW9uKHQpe3JldHVybiBBcih0LCJkaXNhYmxlZCIpfHxNcih0LCJhcmlhLWRpc2FibGVkIikuZXhpc3RzKGZ1bmN0aW9uKHQpe3JldHVybiJ0cnVlIj09PXR9KX0sdT1KYSgpO24ub25BY3Rpb24odCx7bmFtZTplLm5hbWUoKSx2YWx1ZTplLnZhbHVlKCl9KSxKYSgpLmZvbGQocixmdW5jdGlvbihuKXtpKG4pfHx1LmV4aXN0cyhmdW5jdGlvbih0KXtyZXR1cm4gVWUobix0KSYmaSh0KX0pP3IoKTphKCkudG9PcHRpb24oKS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIVVlKHQuZWxlbWVudCgpLG4pfSkuZWFjaChyKX0pfSksbihRYixmdW5jdGlvbih0LG4sZSl7bi5vblRhYkNoYW5nZSh0LHtuZXdUYWJOYW1lOmUubmFtZSgpLG9sZFRhYk5hbWU6ZS5vbGROYW1lKCl9KX0pLHJyKGZ1bmN0aW9uKHQpe3ZhciBuPWkoKTtibC5zZXRWYWx1ZSh0LG4uZ2V0RGF0YSgpKX0pXSl9LF9GPWZ1bmN0aW9uKHQsbil7dmFyIGU9bi5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQuZm9vdGVyQnV0dG9uc30pLmdldE9yKFtdKSxvPUgoZSxmdW5jdGlvbih0KXtyZXR1cm4ic3RhcnQiPT09dC5hbGlnbn0pLHI9ZnVuY3Rpb24odCxuKXtyZXR1cm4gVWIuc2tldGNoKHtkb206e3RhZzoiZGl2IixjbGFzc2VzOlsidG94LWRpYWxvZ19fZm9vdGVyLSIrdF19LGNvbXBvbmVudHM6VihuLGZ1bmN0aW9uKHQpe3JldHVybiB0Lm1lbWVudG8uYXNTcGVjKCl9KX0pfTtyZXR1cm5bcigic3RhcnQiLG8ucGFzcykscigiZW5kIixvLmZhaWwpXX0sVEY9ZnVuY3Rpb24odCxpKXtyZXR1cm57ZG9tOmdCKCc8ZGl2IGNsYXNzPSJ0b3gtZGlhbG9nX19mb290ZXIiPjwvZGl2PicpLGNvbXBvbmVudHM6W10sYmVoYXZpb3Vyczp6YShbY1QuY29uZmlnKHtjaGFubmVsOnJGLGluaXRpYWxEYXRhOnQsdXBkYXRlU3RhdGU6ZnVuY3Rpb24odCxuKXt2YXIgcj1WKG4uYnV0dG9ucyxmdW5jdGlvbih0KXt2YXIgbixlLG89VWcoKGU9aSxOayhuPXQsbi50eXBlLGUpKSk7cmV0dXJue25hbWU6dC5uYW1lLGFsaWduOnQuYWxpZ24sbWVtZW50bzpvfX0pO3JldHVybiBzdC5zb21lKHtsb29rdXBCeU5hbWU6ZnVuY3Rpb24odCxuKXtyZXR1cm4gZT10LG89bixMKHIsZnVuY3Rpb24odCl7cmV0dXJuIHQubmFtZT09PW99KS5iaW5kKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm1lbWVudG8uZ2V0T3B0KGUpfSk7dmFyIGUsb30sZm9vdGVyQnV0dG9uczpyfSl9LHJlbmRlckNvbXBvbmVudHM6X0Z9KV0pfX0sRUY9ZnVuY3Rpb24odCxuKXtyZXR1cm4geU0ucGFydHMoKS5mb290ZXIoVEYodCxuKSl9LEJGPWZ1bmN0aW9uKG4sZSl7aWYobi5nZXRSb290KCkuZ2V0U3lzdGVtKCkuaXNDb25uZWN0ZWQoKSl7dmFyIG89TWYuZ2V0Q3VycmVudChuLmdldEZvcm1XcmFwcGVyKCkpLmdldE9yKG4uZ2V0Rm9ybVdyYXBwZXIoKSk7cmV0dXJuIEd3LmdldEZpZWxkKG8sZSkuZm9sZChmdW5jdGlvbigpe3ZhciB0PW4uZ2V0Rm9vdGVyKCk7cmV0dXJuIGNULmdldFN0YXRlKHQpLmdldCgpLmJpbmQoZnVuY3Rpb24odCl7cmV0dXJuIHQubG9va3VwQnlOYW1lKG8sZSl9KX0sZnVuY3Rpb24odCl7cmV0dXJuIHN0LnNvbWUodCl9KX1yZXR1cm4gc3Qubm9uZSgpfSxERj1mdW5jdGlvbihjLG8scyl7dmFyIHQ9ZnVuY3Rpb24odCl7dmFyIG49Yy5nZXRSb290KCk7bi5nZXRTeXN0ZW0oKS5pc0Nvbm5lY3RlZCgpJiZ0KG4pfSxsPXtnZXREYXRhOmZ1bmN0aW9uKCl7dmFyIHQ9Yy5nZXRSb290KCksbj10LmdldFN5c3RlbSgpLmlzQ29ubmVjdGVkKCk/Yy5nZXRGb3JtV3JhcHBlcigpOnQsZT1ibC5nZXRWYWx1ZShuKSxvPWR0KHMsZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0KCl9KTtyZXR1cm4gZXQoZXQoe30sZSksbyl9LHNldERhdGE6ZnVuY3Rpb24oYSl7dChmdW5jdGlvbih0KXt2YXIgbixlLG89bC5nZXREYXRhKCkscj1ldChldCh7fSxvKSxhKSxpPShuPXIsZT1jLmdldFJvb3QoKSxjVC5nZXRTdGF0ZShlKS5nZXQoKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIE9uKENuKCJkYXRhIix0LmRhdGFWYWxpZGF0b3IsbikpfSkuZ2V0T3IobikpLHU9Yy5nZXRGb3JtV3JhcHBlcigpO2JsLnNldFZhbHVlKHUsaSksZnQocyxmdW5jdGlvbih0LG4pe3l0KHIsbikmJnQuc2V0KHJbbl0pfSl9KX0sZGlzYWJsZTpmdW5jdGlvbih0KXtCRihjLHQpLmVhY2gocGguZGlzYWJsZSl9LGVuYWJsZTpmdW5jdGlvbih0KXtCRihjLHQpLmVhY2gocGguZW5hYmxlKX0sZm9jdXM6ZnVuY3Rpb24odCl7QkYoYyx0KS5lYWNoKFhtLmZvY3VzKX0sYmxvY2s6ZnVuY3Rpb24obil7aWYoIVMobikpdGhyb3cgbmV3IEVycm9yKCJUaGUgZGlhbG9nSW5zdGFuY2VBUEkuYmxvY2sgZnVuY3Rpb24gc2hvdWxkIGJlIHBhc3NlZCBhIGJsb2NraW5nIG1lc3NhZ2Ugb2YgdHlwZSBzdHJpbmcgYXMgYW4gYXJndW1lbnQiKTt0KGZ1bmN0aW9uKHQpe2pvKHQsSmIse21lc3NhZ2U6bn0pfSl9LHVuYmxvY2s6ZnVuY3Rpb24oKXt0KGZ1bmN0aW9uKHQpe0xvKHQsJGIpfSl9LHNob3dUYWI6ZnVuY3Rpb24oZSl7dChmdW5jdGlvbih0KXt2YXIgbj1jLmdldEJvZHkoKTtjVC5nZXRTdGF0ZShuKS5nZXQoKS5leGlzdHMoZnVuY3Rpb24odCl7cmV0dXJuIHQuaXNUYWJQYW5lbCgpfSkmJk1mLmdldEN1cnJlbnQobikuZWFjaChmdW5jdGlvbih0KXtxQS5zaG93VGFiKHQsZSl9KX0pfSxyZWRpYWw6ZnVuY3Rpb24oZSl7dChmdW5jdGlvbih0KXt2YXIgbj1vKGUpO3QuZ2V0U3lzdGVtKCkuYnJvYWRjYXN0T24oW25GXSxuKSx0LmdldFN5c3RlbSgpLmJyb2FkY2FzdE9uKFtlRl0sbi5pbnRlcm5hbERpYWxvZyksdC5nZXRTeXN0ZW0oKS5icm9hZGNhc3RPbihbb0ZdLG4uaW50ZXJuYWxEaWFsb2cpLHQuZ2V0U3lzdGVtKCkuYnJvYWRjYXN0T24oW3JGXSxuLmludGVybmFsRGlhbG9nKSxsLnNldERhdGEobi5pbml0aWFsRGF0YSl9KX0sY2xvc2U6ZnVuY3Rpb24oKXt0KGZ1bmN0aW9uKHQpe0xvKHQsWGIpfSl9fTtyZXR1cm4gbH0sTUY9ZnVuY3Rpb24odCxuLGUpe3ZhciBvLHIsaSx1PWJGKHQuaW50ZXJuYWxEaWFsb2cudGl0bGUsZSksYT0obz17Ym9keTp0LmludGVybmFsRGlhbG9nLmJvZHl9LHI9ZSxpPXVGKG8sc3Qubm9uZSgpLHIsITEpLHlNLnBhcnRzKCkuYm9keShpKSksYz13Rih0LmludGVybmFsRGlhbG9nLmJ1dHRvbnMpLHM9U0YoYyksbD1FRih7YnV0dG9uczpjfSxlKSxmPU9GKGZ1bmN0aW9uKCl7cmV0dXJuIHB9LHlGKGZ1bmN0aW9uKCl7cmV0dXJuIGd9LG4pLGUuc2hhcmVkLmdldFNpbmspLGQ9Im5vcm1hbCIhPT10LmludGVybmFsRGlhbG9nLnNpemU/ImxhcmdlIj09PXQuaW50ZXJuYWxEaWFsb2cuc2l6ZT9bInRveC1kaWFsb2ctLXdpZHRoLWxnIl06WyJ0b3gtZGlhbG9nLS13aWR0aC1tZCJdOltdLG09e2hlYWRlcjp1LGJvZHk6YSxmb290ZXI6c3Quc29tZShsKSxleHRyYUNsYXNzZXM6ZCxleHRyYUJlaGF2aW91cnM6W10sZXh0cmFTdHlsZXM6e319LGc9eEYobSx0LGYsZSkscD1ERih7Z2V0Um9vdDpmdW5jdGlvbigpe3JldHVybiBnfSxnZXRCb2R5OmZ1bmN0aW9uKCl7cmV0dXJuIHlNLmdldEJvZHkoZyl9LGdldEZvb3RlcjpmdW5jdGlvbigpe3JldHVybiB5TS5nZXRGb290ZXIoZyl9LGdldEZvcm1XcmFwcGVyOmZ1bmN0aW9uKCl7dmFyIHQ9eU0uZ2V0Qm9keShnKTtyZXR1cm4gTWYuZ2V0Q3VycmVudCh0KS5nZXRPcih0KX19LG4ucmVkaWFsLHMpO3JldHVybntkaWFsb2c6ZyxpbnN0YW5jZUFwaTpwfX0sQUY9ZnVuY3Rpb24odCxuLGUsbyl7dmFyIHIsaSx1LGEsYyxzLGwsZixkLG09TnIoImRpYWxvZy1sYWJlbCIpLGc9TnIoImRpYWxvZy1jb250ZW50IikscD1VZygodT17dGl0bGU6dC5pbnRlcm5hbERpYWxvZy50aXRsZSxkcmFnZ2FibGU6ITB9LGE9bSxjPWUuc2hhcmVkLnByb3ZpZGVycyxVYi5za2V0Y2goe2RvbTpnQignPGRpdiBjbGFzcz0idG94LWRpYWxvZ19faGVhZGVyIj48L2Rpdj4nKSxjb21wb25lbnRzOltoRih1LHN0LnNvbWUoYSksYyksdkYoKSxwRihjKV0sY29udGFpbmVyQmVoYXZpb3Vyczp6YShbaU0uY29uZmlnKHttb2RlOiJtb3VzZSIsYmxvY2tlckNsYXNzOiJibG9ja2VyIixnZXRUYXJnZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIEF1KHQsJ1tyb2xlPSJkaWFsb2ciXScpLmdldE9yRGllKCl9LHNuYXBzOntnZXRTbmFwUG9pbnRzOmZ1bmN0aW9uKCl7cmV0dXJuW119LGxlZnRBdHRyOiJkYXRhLWRyYWctbGVmdCIsdG9wQXR0cjoiZGF0YS1kcmFnLXRvcCJ9fSldKX0pKSksaD1VZygocz17Ym9keTp0LmludGVybmFsRGlhbG9nLmJvZHl9LGw9ZyxmPWUsZD1vLHVGKHMsc3Quc29tZShsKSxmLGQpKSksdj13Rih0LmludGVybmFsRGlhbG9nLmJ1dHRvbnMpLGI9U0YodikseT1VZyhURih7YnV0dG9uczp2fSxlKSkseD1PRihmdW5jdGlvbigpe3JldHVybiBTfSx7b25CbG9jazpmdW5jdGlvbigpe30sb25VbmJsb2NrOmZ1bmN0aW9uKCl7fSxvbkNsb3NlOmZ1bmN0aW9uKCl7cmV0dXJuIG4uY2xvc2VXaW5kb3coKX19LGUuc2hhcmVkLmdldFNpbmspLHc9Smkoe2RvbTp7dGFnOiJkaXYiLGNsYXNzZXM6WyJ0b3gtZGlhbG9nIiwidG94LWRpYWxvZy1pbmxpbmUiXSxhdHRyaWJ1dGVzOigocj17cm9sZToiZGlhbG9nIn0pWyJhcmlhLWxhYmVsbGVkYnkiXT1tLHJbImFyaWEtZGVzY3JpYmVkYnkiXT0iIitnLHIpfSxldmVudE9yZGVyOigoaT17fSlbeW8oKV09W2NULm5hbWUoKSxZYS5uYW1lKCldLGlbeG8oKV09WyJleGVjdXRlLW9uLWZvcm0iXSxpW01vKCldPVsicmVmbGVjdGluZyIsImV4ZWN1dGUtb24tZm9ybSJdLGkpLGJlaGF2aW91cnM6emEoW1JtLmNvbmZpZyh7bW9kZToiY3ljbGljIixvbkVzY2FwZTpmdW5jdGlvbih0KXtyZXR1cm4gTG8odCxYYiksc3Quc29tZSghMCl9LHVzZVRhYnN0b3BBdDpmdW5jdGlvbih0KXtyZXR1cm4heVModCkmJigiYnV0dG9uIiE9PUNyKHQpfHwiZGlzYWJsZWQiIT09RHIodCwiZGlzYWJsZWQiKSl9fSksY1QuY29uZmlnKHtjaGFubmVsOm5GLHVwZGF0ZVN0YXRlOmZ1bmN0aW9uKHQsbil7cmV0dXJuIHN0LnNvbWUobil9LGluaXRpYWxEYXRhOnR9KSxYbS5jb25maWcoe30pLExtKCJleGVjdXRlLW9uLWZvcm0iLHguY29uY2F0KFtlcihpbygpLGZ1bmN0aW9uKHQsbil7Um0uZm9jdXNJbih0KX0pXSkpLGZTKHt9KV0pLGNvbXBvbmVudHM6W3AuYXNTcGVjKCksaC5hc1NwZWMoKSx5LmFzU3BlYygpXX0pLFM9REYoe2dldFJvb3Q6ZnVuY3Rpb24oKXtyZXR1cm4gd30sZ2V0Rm9vdGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHkuZ2V0KHcpfSxnZXRCb2R5OmZ1bmN0aW9uKCl7cmV0dXJuIGguZ2V0KHcpfSxnZXRGb3JtV3JhcHBlcjpmdW5jdGlvbigpe3ZhciB0PWguZ2V0KHcpO3JldHVybiBNZi5nZXRDdXJyZW50KHQpLmdldE9yKHQpfX0sbi5yZWRpYWwsYik7cmV0dXJue2RpYWxvZzp3LGluc3RhbmNlQXBpOlN9fSxGRj10aW55bWNlLnV0aWwuVG9vbHMucmVzb2x2ZSgidGlueW1jZS51dGlsLlVSSSIpLElGPVsiaW5zZXJ0Q29udGVudCIsInNldENvbnRlbnQiLCJleGVjQ29tbWFuZCIsImNsb3NlIiwiYmxvY2siLCJ1bmJsb2NrIl0sUkY9ZnVuY3Rpb24odCl7cmV0dXJuIGsodCkmJi0xIT09SUYuaW5kZXhPZih0Lm1jZUFjdGlvbil9LFZGPWZ1bmN0aW9uKG8sdCxyLG4pe3ZhciBlLGksdSxhLGM9YkYoby50aXRsZSxuKSxzPShpPXtkb206e3RhZzoiZGl2IixjbGFzc2VzOlsidG94LWRpYWxvZ19fY29udGVudC1qcyJdfSxjb21wb25lbnRzOlt7ZG9tOnt0YWc6ImRpdiIsY2xhc3NlczpbInRveC1kaWFsb2dfX2JvZHktaWZyYW1lIl19LGNvbXBvbmVudHM6W2hTKHtkb206e3RhZzoiaWZyYW1lIixhdHRyaWJ1dGVzOntzcmM6by51cmx9fSxiZWhhdmlvdXJzOnphKFtEeS5jb25maWcoe30pLFhtLmNvbmZpZyh7fSldKX0pXX1dLGJlaGF2aW91cnM6emEoW1JtLmNvbmZpZyh7bW9kZToiYWN5Y2xpYyIsdXNlVGFic3RvcEF0OngoeVMpfSldKX0seU0ucGFydHMoKS5ib2R5KGkpKSxsPW8uYnV0dG9ucy5iaW5kKGZ1bmN0aW9uKHQpe3JldHVybiAwPT09dC5sZW5ndGg/c3Qubm9uZSgpOnN0LnNvbWUoRUYoe2J1dHRvbnM6dH0sbikpfSksZj1DRihmdW5jdGlvbigpe3JldHVybiB5fSx5RihmdW5jdGlvbigpe3JldHVybiBifSx0KSksZD1ldChldCh7fSxvLmhlaWdodC5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJue319LGZ1bmN0aW9uKHQpe3JldHVybntoZWlnaHQ6dCsicHgiLCJtYXgtaGVpZ2h0Ijp0KyJweCJ9fSkpLG8ud2lkdGguZm9sZChmdW5jdGlvbigpe3JldHVybnt9fSxmdW5jdGlvbih0KXtyZXR1cm57d2lkdGg6dCsicHgiLCJtYXgtd2lkdGgiOnQrInB4In19KSksbT1vLndpZHRoLmlzTm9uZSgpJiZvLmhlaWdodC5pc05vbmUoKT9bInRveC1kaWFsb2ctLXdpZHRoLWxnIl06W10sZz1uZXcgRkYoby51cmwse2Jhc2VfdXJpOm5ldyBGRihudC53aW5kb3cubG9jYXRpb24uaHJlZil9KSxwPWcucHJvdG9jb2wrIjovLyIrZy5ob3N0KyhnLnBvcnQ/IjoiK2cucG9ydDoiIiksaD1jZShzdC5ub25lKCkpLHY9W0xtKCJtZXNzYWdlcyIsW29yKGZ1bmN0aW9uKCl7dmFyIHQ9eWIobGUuZnJvbURvbShudC53aW5kb3cpLCJtZXNzYWdlIixmdW5jdGlvbih0KXtpZihnLmlzU2FtZU9yaWdpbihuZXcgRkYodC5yYXcoKS5vcmlnaW4pKSl7dmFyIG49dC5yYXcoKS5kYXRhO1JGKG4pP2Z1bmN0aW9uKHQsbixlKXtzd2l0Y2goZS5tY2VBY3Rpb24pe2Nhc2UiaW5zZXJ0Q29udGVudCI6dC5pbnNlcnRDb250ZW50KGUuY29udGVudCk7YnJlYWs7Y2FzZSJzZXRDb250ZW50Ijp0LnNldENvbnRlbnQoZS5jb250ZW50KTticmVhaztjYXNlImV4ZWNDb21tYW5kIjp2YXIgbz0hIU8oZS51aSkmJmUudWk7dC5leGVjQ29tbWFuZChlLmNtZCxvLGUudmFsdWUpO2JyZWFrO2Nhc2UiY2xvc2UiOm4uY2xvc2UoKTticmVhaztjYXNlImJsb2NrIjpuLmJsb2NrKGUubWVzc2FnZSk7YnJlYWs7Y2FzZSJ1bmJsb2NrIjpuLnVuYmxvY2soKX19KHIseSxuKTohUkYoZT1uKSYmayhlKSYmeXQoZSwibWNlQWN0aW9uIikmJm8ub25NZXNzYWdlKHksbil9dmFyIGV9KTtoLnNldChzdC5zb21lKHQpKX0pLHJyKGZ1bmN0aW9uKCl7aC5nZXQoKS5lYWNoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnVuYmluZCgpfSl9KV0pLFlhLmNvbmZpZyh7Y2hhbm5lbHM6KChlPXt9KVtpRl09e29uUmVjZWl2ZTpmdW5jdGlvbih0LG4pe011KHQuZWxlbWVudCgpLCJpZnJhbWUiKS5lYWNoKGZ1bmN0aW9uKHQpe3QuZG9tKCkuY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZShuLHApfSl9fSxlKX0pXSxiPXhGKHtoZWFkZXI6Yyxib2R5OnMsZm9vdGVyOmwsZXh0cmFDbGFzc2VzOm0sZXh0cmFCZWhhdmlvdXJzOnYsZXh0cmFTdHlsZXM6ZH0sbyxmLG4pLHk9KGE9ZnVuY3Rpb24odCl7dS5nZXRTeXN0ZW0oKS5pc0Nvbm5lY3RlZCgpJiZ0KHUpfSx7YmxvY2s6ZnVuY3Rpb24obil7aWYoIVMobikpdGhyb3cgbmV3IEVycm9yKCJUaGUgdXJsRGlhbG9nSW5zdGFuY2VBUEkuYmxvY2sgZnVuY3Rpb24gc2hvdWxkIGJlIHBhc3NlZCBhIGJsb2NraW5nIG1lc3NhZ2Ugb2YgdHlwZSBzdHJpbmcgYXMgYW4gYXJndW1lbnQiKTthKGZ1bmN0aW9uKHQpe2pvKHQsSmIse21lc3NhZ2U6bn0pfSl9LHVuYmxvY2s6ZnVuY3Rpb24oKXthKGZ1bmN0aW9uKHQpe0xvKHQsJGIpfSl9LGNsb3NlOmZ1bmN0aW9uKCl7YShmdW5jdGlvbih0KXtMbyh0LFhiKX0pfSxzZW5kTWVzc2FnZTpmdW5jdGlvbihuKXthKGZ1bmN0aW9uKHQpe3QuZ2V0U3lzdGVtKCkuYnJvYWRjYXN0T24oW2lGXSxuKX0pfX0pO3JldHVybntkaWFsb2c6dT1iLGluc3RhbmNlQXBpOnl9fSxIRj1mdW5jdGlvbih0KXt2YXIgYyxzLGwsZixwPXQuYmFja3N0YWdlLGg9dC5lZGl0b3Isdj1QaChoKSxlPShzPShjPXQpLmJhY2tzdGFnZS5zaGFyZWQse29wZW46ZnVuY3Rpb24odCxuKXt2YXIgZT1mdW5jdGlvbigpe3lNLmhpZGUodSksbigpfSxvPVVnKE5rKHtuYW1lOiJjbG9zZS1hbGVydCIsdGV4dDoiT0siLHByaW1hcnk6ITAsYWxpZ246ImVuZCIsZGlzYWJsZWQ6ITEsaWNvbjpzdC5ub25lKCl9LCJjYW5jZWwiLGMuYmFja3N0YWdlKSkscj1sRigpLGk9c0YoZSxzLnByb3ZpZGVycyksdT1KaShnRih7bGF6eVNpbms6ZnVuY3Rpb24oKXtyZXR1cm4gcy5nZXRTaW5rKCl9LGhlYWRlcjpjRihyLGkpLGJvZHk6ZkYodCxzLnByb3ZpZGVycyksZm9vdGVyOnN0LnNvbWUoZEYobUYoW10sW28uYXNTcGVjKCldKSkpLG9uRXNjYXBlOmUsZXh0cmFDbGFzc2VzOlsidG94LWFsZXJ0LWRpYWxvZyJdLGV4dHJhQmVoYXZpb3VyczpbXSxleHRyYVN0eWxlczp7fSxkaWFsb2dFdmVudHM6W0pvKFliLGUpXSxldmVudE9yZGVyOnt9fSkpO3lNLnNob3codSk7dmFyIGE9by5nZXQodSk7WG0uZm9jdXMoYSl9fSksbz0oZj0obD10KS5iYWNrc3RhZ2Uuc2hhcmVkLHtvcGVuOmZ1bmN0aW9uKHQsbil7dmFyIGU9ZnVuY3Rpb24odCl7eU0uaGlkZShhKSxuKHQpfSxvPVVnKE5rKHtuYW1lOiJ5ZXMiLHRleHQ6IlllcyIscHJpbWFyeTohMCxhbGlnbjoiZW5kIixkaXNhYmxlZDohMSxpY29uOnN0Lm5vbmUoKX0sInN1Ym1pdCIsbC5iYWNrc3RhZ2UpKSxyPU5rKHtuYW1lOiJubyIsdGV4dDoiTm8iLHByaW1hcnk6ITEsYWxpZ246ImVuZCIsZGlzYWJsZWQ6ITEsaWNvbjpzdC5ub25lKCl9LCJjYW5jZWwiLGwuYmFja3N0YWdlKSxpPWxGKCksdT1zRihmdW5jdGlvbigpe3JldHVybiBlKCExKX0sZi5wcm92aWRlcnMpLGE9SmkoZ0Yoe2xhenlTaW5rOmZ1bmN0aW9uKCl7cmV0dXJuIGYuZ2V0U2luaygpfSxoZWFkZXI6Y0YoaSx1KSxib2R5OmZGKHQsZi5wcm92aWRlcnMpLGZvb3RlcjpzdC5zb21lKGRGKG1GKFtdLFtyLG8uYXNTcGVjKCldKSkpLG9uRXNjYXBlOmZ1bmN0aW9uKCl7cmV0dXJuIGUoITEpfSxleHRyYUNsYXNzZXM6WyJ0b3gtY29uZmlybS1kaWFsb2ciXSxleHRyYUJlaGF2aW91cnM6W10sZXh0cmFTdHlsZXM6e30sZGlhbG9nRXZlbnRzOltKbyhZYixmdW5jdGlvbigpe3JldHVybiBlKCExKX0pLEpvKEtiLGZ1bmN0aW9uKCl7cmV0dXJuIGUoITApfSldLGV2ZW50T3JkZXI6e319KSk7eU0uc2hvdyhhKTt2YXIgYz1vLmdldChhKTtYbS5mb2N1cyhjKX19KSxyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFZBLm9wZW5VcmwoZnVuY3Rpb24odCl7dmFyIG49VkYodCx7Y2xvc2VXaW5kb3c6ZnVuY3Rpb24oKXt5TS5oaWRlKG4uZGlhbG9nKSxlKG4uaW5zdGFuY2VBcGkpfX0saCxwKTtyZXR1cm4geU0uc2hvdyhuLmRpYWxvZyksbi5pbnN0YW5jZUFwaX0sdCl9LGk9ZnVuY3Rpb24odCxpKXtyZXR1cm4gVkEub3BlbihmdW5jdGlvbih0LG4sZSl7dmFyIG89bixyPU1GKHtkYXRhVmFsaWRhdG9yOmUsaW5pdGlhbERhdGE6byxpbnRlcm5hbERpYWxvZzp0fSx7cmVkaWFsOlZBLnJlZGlhbCxjbG9zZVdpbmRvdzpmdW5jdGlvbigpe3lNLmhpZGUoci5kaWFsb2cpLGkoci5pbnN0YW5jZUFwaSl9fSxwKTtyZXR1cm4geU0uc2hvdyhyLmRpYWxvZyksci5pbnN0YW5jZUFwaS5zZXREYXRhKG8pLHIuaW5zdGFuY2VBcGl9LHQpfSx1PWZ1bmN0aW9uKHQsZCxtLGcpe3JldHVybiBWQS5vcGVuKGZ1bmN0aW9uKHQsbixlKXt2YXIgbyxyLGksdT1PbihDbigiZGF0YSIsZSxuKSksYT0obz1jZShzdC5ub25lKCkpLHtjbGVhcjpmdW5jdGlvbigpe28uc2V0KHN0Lm5vbmUoKSl9LHNldDpmdW5jdGlvbih0KXtvLnNldChzdC5zb21lKHQpKX0saXNTZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5nZXQoKS5pc1NvbWUoKX0sb246ZnVuY3Rpb24odCl7by5nZXQoKS5lYWNoKHQpfX0pLGM9cC5zaGFyZWQuaGVhZGVyLmlzUG9zaXRpb25lZEF0VG9wKCkscz1mdW5jdGlvbigpe3JldHVybiBhLm9uKGZ1bmN0aW9uKHQpe0JnLnJlcG9zaXRpb24odCksTEUucmVmcmVzaCh0KX0pfSxsPUFGKHtkYXRhVmFsaWRhdG9yOmUsaW5pdGlhbERhdGE6dSxpbnRlcm5hbERpYWxvZzp0fSx7cmVkaWFsOlZBLnJlZGlhbCxjbG9zZVdpbmRvdzpmdW5jdGlvbigpe2Eub24oQmcuaGlkZSksaC5vZmYoIlJlc2l6ZUVkaXRvciIscyksYS5jbGVhcigpLG0obC5pbnN0YW5jZUFwaSl9fSxwLGcpLGY9SmkoQmcuc2tldGNoKGV0KGV0KHtsYXp5U2luazpwLnNoYXJlZC5nZXRTaW5rLGRvbTp7dGFnOiJkaXYiLGNsYXNzZXM6W119LGZpcmVEaXNtaXNzYWxFdmVudEluc3RlYWQ6e319LGM/e306e2ZpcmVSZXBvc2l0aW9uRXZlbnRJbnN0ZWFkOnt9fSkse2lubGluZUJlaGF2aW91cnM6emEoYihbTG0oIndpbmRvdy1tYW5hZ2VyLWlubGluZS1ldmVudHMiLFtKbyhGbygpLGZ1bmN0aW9uKHQsbil7TG8obC5kaWFsb2csWWIpfSldKV0sKHI9aCxpPWMsdiYmaT9bXTpbTEUuY29uZmlnKHtjb250ZXh0dWFsOntsYXp5Q29udGV4dDpmdW5jdGlvbigpe3JldHVybiBzdC5zb21lKHd1KGxlLmZyb21Eb20oci5nZXRDb250ZW50QXJlYUNvbnRhaW5lcigpKSkpfSxmYWRlSW5DbGFzczoidG94LWRpYWxvZy1kb2NrLWZhZGVpbiIsZmFkZU91dENsYXNzOiJ0b3gtZGlhbG9nLWRvY2stZmFkZW91dCIsdHJhbnNpdGlvbkNsYXNzOiJ0b3gtZGlhbG9nLWRvY2stdHJhbnNpdGlvbiJ9LG1vZGVzOlsidG9wIl19KV0pKSksaXNFeHRyYVBhcnQ6ZnVuY3Rpb24odCxuKXtyZXR1cm4gU2IoZT1uLCIudG94LWFsZXJ0LWRpYWxvZyIpfHxTYihlLCIudG94LWNvbmZpcm0tZGlhbG9nIik7dmFyIGV9fSkpKTtyZXR1cm4gYS5zZXQoZiksQmcuc2hvd1dpdGhpbihmLGQsJGkobC5kaWFsb2cpLHN0LnNvbWUoX2koKSkpLHYmJmN8fChMRS5yZWZyZXNoKGYpLGgub24oIlJlc2l6ZUVkaXRvciIscykpLGwuaW5zdGFuY2VBcGkuc2V0RGF0YSh1KSxSbS5mb2N1c0luKGwuZGlhbG9nKSxsLmluc3RhbmNlQXBpfSx0KX07cmV0dXJue29wZW46ZnVuY3Rpb24odCxuLGUpe3JldHVybiBuIT09dW5kZWZpbmVkJiYidG9vbGJhciI9PT1uLmlubGluZT91KHQscC5zaGFyZWQuYW5jaG9ycy5pbmxpbmVEaWFsb2coKSxlLG4uYXJpYUF0dHJzKTpuIT09dW5kZWZpbmVkJiYiY3Vyc29yIj09PW4uaW5saW5lP3UodCxwLnNoYXJlZC5hbmNob3JzLmN1cnNvcigpLGUsbi5hcmlhQXR0cnMpOmkodCxlKX0sb3BlblVybDpmdW5jdGlvbih0LG4pe3JldHVybiByKHQsbil9LGFsZXJ0OmZ1bmN0aW9uKHQsbil7ZS5vcGVuKHQsZnVuY3Rpb24oKXtuKCl9KX0sY2xvc2U6ZnVuY3Rpb24odCl7dC5jbG9zZSgpfSxjb25maXJtOmZ1bmN0aW9uKHQsbil7by5vcGVuKHQsZnVuY3Rpb24odCl7bih0KX0pfX19OyFmdW5jdGlvbiBYRigpe3QuYWRkKCJzaWx2ZXIiLGZ1bmN0aW9uKHQpe3ZhciBuPXBNKHQpLGU9bi51aU1vdGhlcnNoaXAsbz1uLmJhY2tzdGFnZSxyPW4ucmVuZGVyVUksaT1uLmdldFVpO3ZiKHQsby5zaGFyZWQpO3ZhciB1PUhGKHtlZGl0b3I6dCxiYWNrc3RhZ2U6b30pO3JldHVybntyZW5kZXJVSTpyLGdldFdpbmRvd01hbmFnZXJJbXBsOmF0KHUpLGdldE5vdGlmaWNhdGlvbk1hbmFnZXJJbXBsOmZ1bmN0aW9uKCl7cmV0dXJuIHFnKDAse2JhY2tzdGFnZTpvfSxlKX0sdWk6aSgpfX0pfSgpfSh3aW5kb3cpOw==]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce/tinymce.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoYykgVGlueSBUZWNobm9sb2dpZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogTGljZW5zZWQgdW5kZXIgdGhlIExHUEwgb3IgYSBjb21tZXJjaWFsIGxpY2Vuc2UuCiAqIEZvciBMR1BMIHNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgogKiBGb3IgY29tbWVyY2lhbCBsaWNlbnNlcyBzZWUgaHR0cHM6Ly93d3cudGlueS5jbG91ZC8KICoKICogVmVyc2lvbjogNS4zLjEgKDIwMjAtMDUtMjcpCiAqLwohZnVuY3Rpb24oVil7InVzZSBzdHJpY3QiO3ZhciByPWZ1bmN0aW9uKGUpe2lmKG51bGw9PT1lKXJldHVybiJudWxsIjtpZihlPT09dW5kZWZpbmVkKXJldHVybiJ1bmRlZmluZWQiO3ZhciB0PXR5cGVvZiBlO3JldHVybiJvYmplY3QiPT10JiYoQXJyYXkucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoZSl8fGUuY29uc3RydWN0b3ImJiJBcnJheSI9PT1lLmNvbnN0cnVjdG9yLm5hbWUpPyJhcnJheSI6Im9iamVjdCI9PXQmJihTdHJpbmcucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoZSl8fGUuY29uc3RydWN0b3ImJiJTdHJpbmciPT09ZS5jb25zdHJ1Y3Rvci5uYW1lKT8ic3RyaW5nIjp0fSx0PWZ1bmN0aW9uKGUpe3JldHVybntlcTplfX0scz10KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9PT10fSksaT1mdW5jdGlvbihvKXtyZXR1cm4gdChmdW5jdGlvbihlLHQpe2lmKGUubGVuZ3RoIT09dC5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciBuPWUubGVuZ3RoLHI9MDtyPG47cisrKWlmKCFvLmVxKGVbcl0sdFtyXSkpcmV0dXJuITE7cmV0dXJuITB9KX0sYz1mdW5jdGlvbihlLHIpe3JldHVybiBuPWkoZSksbz1mdW5jdGlvbihlKXtyZXR1cm4gdD1lLG49cixBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0KS5zb3J0KG4pO3ZhciB0LG59LHQoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbi5lcShvKGUpLG8odCkpfSk7dmFyIG4sb30sdT1mdW5jdGlvbih1KXtyZXR1cm4gdChmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpLHI9T2JqZWN0LmtleXModCk7aWYoIWMocykuZXEobixyKSlyZXR1cm4hMTtmb3IodmFyIG89bi5sZW5ndGgsaT0wO2k8bztpKyspe3ZhciBhPW5baV07aWYoIXUuZXEoZVthXSx0W2FdKSlyZXR1cm4hMX1yZXR1cm4hMH0pfSxsPXQoZnVuY3Rpb24oZSx0KXtpZihlPT09dClyZXR1cm4hMDt2YXIgbj1yKGUpO3JldHVybiBuPT09cih0KSYmKC0xIT09WyJ1bmRlZmluZWQiLCJib29sZWFuIiwibnVtYmVyIiwic3RyaW5nIiwiZnVuY3Rpb24iLCJ4bWwiLCJudWxsIl0uaW5kZXhPZihuKT9lPT09dDoiYXJyYXkiPT09bj9pKGwpLmVxKGUsdCk6Im9iamVjdCI9PT1uJiZ1KGwpLmVxKGUsdCkpfSksZj1mdW5jdGlvbigpe30sYT1mdW5jdGlvbihuLHIpe3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgZT1bXSx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyllW3RdPWFyZ3VtZW50c1t0XTtyZXR1cm4gbihyLmFwcGx5KG51bGwsZSkpfX0seD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZX19LGQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9O2Z1bmN0aW9uIE4ocil7Zm9yKHZhciBvPVtdLGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKW9bZS0xXT1hcmd1bWVudHNbZV07cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKWVbdF09YXJndW1lbnRzW3RdO3ZhciBuPW8uY29uY2F0KGUpO3JldHVybiByLmFwcGx5KG51bGwsbil9fXZhciBlLG4sbyxtPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4hdChlKX19LHA9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKGUpfX0sZz14KCExKSxoPXgoITApLHY9ZnVuY3Rpb24oKXtyZXR1cm4geX0seT0oZT1mdW5jdGlvbihlKXtyZXR1cm4gZS5pc05vbmUoKX0se2ZvbGQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSgpfSxpczpnLGlzU29tZTpnLGlzTm9uZTpoLGdldE9yOm89ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGdldE9yVGh1bms6bj1mdW5jdGlvbihlKXtyZXR1cm4gZSgpfSxnZXRPckRpZTpmdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoZXx8ImVycm9yOiBnZXRPckRpZSBjYWxsZWQgb24gbm9uZS4iKX0sZ2V0T3JOdWxsOngobnVsbCksZ2V0T3JVbmRlZmluZWQ6eCh1bmRlZmluZWQpLG9yOm8sb3JUaHVuazpuLG1hcDp2LGVhY2g6ZixiaW5kOnYsZXhpc3RzOmcsZm9yYWxsOmgsZmlsdGVyOnYsZXF1YWxzOmUsZXF1YWxzXzplLHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm5bXX0sdG9TdHJpbmc6eCgibm9uZSgpIil9KSxiPWZ1bmN0aW9uKG4pe3ZhciBlPXgobiksdD1mdW5jdGlvbigpe3JldHVybiBvfSxyPWZ1bmN0aW9uKGUpe3JldHVybiBlKG4pfSxvPXtmb2xkOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQobil9LGlzOmZ1bmN0aW9uKGUpe3JldHVybiBuPT09ZX0saXNTb21lOmgsaXNOb25lOmcsZ2V0T3I6ZSxnZXRPclRodW5rOmUsZ2V0T3JEaWU6ZSxnZXRPck51bGw6ZSxnZXRPclVuZGVmaW5lZDplLG9yOnQsb3JUaHVuazp0LG1hcDpmdW5jdGlvbihlKXtyZXR1cm4gYihlKG4pKX0sZWFjaDpmdW5jdGlvbihlKXtlKG4pfSxiaW5kOnIsZXhpc3RzOnIsZm9yYWxsOnIsZmlsdGVyOmZ1bmN0aW9uKGUpe3JldHVybiBlKG4pP286eX0sdG9BcnJheTpmdW5jdGlvbigpe3JldHVybltuXX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4ic29tZSgiK24rIikifSxlcXVhbHM6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuaXMobil9LGVxdWFsc186ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5mb2xkKGcsZnVuY3Rpb24oZSl7cmV0dXJuIHQobixlKX0pfX07cmV0dXJuIG99LFI9e3NvbWU6Yixub25lOnYsZnJvbTpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09PWV8fGU9PT11bmRlZmluZWQ/eTpiKGUpfX0sQz1mdW5jdGlvbihyKXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIG49dHlwZW9mKHQ9ZSksKG51bGw9PT10PyJudWxsIjoib2JqZWN0Ij09biYmKEFycmF5LnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKHQpfHx0LmNvbnN0cnVjdG9yJiYiQXJyYXkiPT09dC5jb25zdHJ1Y3Rvci5uYW1lKT8iYXJyYXkiOiJvYmplY3QiPT1uJiYoU3RyaW5nLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKHQpfHx0LmNvbnN0cnVjdG9yJiYiU3RyaW5nIj09PXQuY29uc3RydWN0b3IubmFtZSk/InN0cmluZyI6bik9PT1yO3ZhciB0LG59fSx3PWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGU9PT10fX0sUz1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQ9PT1lfX0scT1DKCJzdHJpbmciKSxFPUMoIm9iamVjdCIpLGs9QygiYXJyYXkiKSxfPVMobnVsbCksVD13KCJib29sZWFuIiksQT1TKHVuZGVmaW5lZCksRD13KCJmdW5jdGlvbiIpLE89dygibnVtYmVyIiksQj1BcnJheS5wcm90b3R5cGUuc2xpY2UsUD1BcnJheS5wcm90b3R5cGUuaW5kZXhPZixMPUFycmF5LnByb3RvdHlwZS5wdXNoLEk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gUC5jYWxsKGUsdCl9LE09ZnVuY3Rpb24oZSx0KXtyZXR1cm4tMTxJKGUsdCl9LEY9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49MCxyPWUubGVuZ3RoO248cjtuKyspe2lmKHQoZVtuXSxuKSlyZXR1cm4hMH1yZXR1cm4hMX0sVT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1lLmxlbmd0aCxyPW5ldyBBcnJheShuKSxvPTA7bzxuO28rKyl7dmFyIGk9ZVtvXTtyW29dPXQoaSxvKX1yZXR1cm4gcn0sej1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wLHI9ZS5sZW5ndGg7bjxyO24rKyl7dChlW25dLG4pfX0saj1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1bXSxyPVtdLG89MCxpPWUubGVuZ3RoO288aTtvKyspe3ZhciBhPWVbb107KHQoYSxvKT9uOnIpLnB1c2goYSl9cmV0dXJue3Bhc3M6bixmYWlsOnJ9fSxIPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPVtdLHI9MCxvPWUubGVuZ3RoO3I8bztyKyspe3ZhciBpPWVbcl07dChpLHIpJiZuLnB1c2goaSl9cmV0dXJuIG59LCQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1lLmxlbmd0aC0xOzA8PW47bi0tKXt0KGVbbl0sbil9fShlLGZ1bmN0aW9uKGUpe249dChuLGUpfSksbn0sVz1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHooZSxmdW5jdGlvbihlKXtuPXQobixlKX0pLG59LEs9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj0wLG89ZS5sZW5ndGg7cjxvO3IrKyl7dmFyIGk9ZVtyXTtpZih0KGkscikpcmV0dXJuIFIuc29tZShpKTtpZihuKGkscikpYnJlYWt9cmV0dXJuIFIubm9uZSgpfShlLHQsZyl9LFg9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49MCxyPWUubGVuZ3RoO248cjtuKyspe2lmKHQoZVtuXSxuKSlyZXR1cm4gUi5zb21lKG4pfXJldHVybiBSLm5vbmUoKX0sWT1mdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sbj0wLHI9ZS5sZW5ndGg7bjxyOysrbil7aWYoIWsoZVtuXSkpdGhyb3cgbmV3IEVycm9yKCJBcnIuZmxhdHRlbiBpdGVtICIrbisiIHdhcyBub3QgYW4gYXJyYXksIGlucHV0OiAiK2UpO0wuYXBwbHkodCxlW25dKX1yZXR1cm4gdH0oVShlLHQpKX0sRz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wLHI9ZS5sZW5ndGg7bjxyOysrbil7aWYoITAhPT10KGVbbl0sbikpcmV0dXJuITF9cmV0dXJuITB9LEo9ZnVuY3Rpb24oZSl7dmFyIHQ9Qi5jYWxsKGUsMCk7cmV0dXJuIHQucmV2ZXJzZSgpLHR9LFE9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gSChlLGZ1bmN0aW9uKGUpe3JldHVybiFNKHQsZSl9KX0sWj1mdW5jdGlvbihlKXtyZXR1cm4gMD09PWUubGVuZ3RoP1Iubm9uZSgpOlIuc29tZShlWzBdKX0sZWU9ZnVuY3Rpb24oZSl7cmV0dXJuIDA9PT1lLmxlbmd0aD9SLm5vbmUoKTpSLnNvbWUoZVtlLmxlbmd0aC0xXSl9LHRlPUQoQXJyYXkuZnJvbSk/QXJyYXkuZnJvbTpmdW5jdGlvbihlKXtyZXR1cm4gQi5jYWxsKGUpfSxuZT1PYmplY3Qua2V5cyxyZT1PYmplY3QuaGFzT3duUHJvcGVydHksb2U9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49bmUoZSkscj0wLG89bi5sZW5ndGg7cjxvO3IrKyl7dmFyIGk9bltyXTt0KGVbaV0saSl9fSxpZT1mdW5jdGlvbihlLG4pe3JldHVybiBhZShlLGZ1bmN0aW9uKGUsdCl7cmV0dXJue2s6dCx2Om4oZSx0KX19KX0sYWU9ZnVuY3Rpb24oZSxyKXt2YXIgbz17fTtyZXR1cm4gb2UoZSxmdW5jdGlvbihlLHQpe3ZhciBuPXIoZSx0KTtvW24ua109bi52fSksb30sdWU9ZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7blt0XT1lfX0sc2U9ZnVuY3Rpb24oZSxuLHIsbyl7cmV0dXJuIG9lKGUsZnVuY3Rpb24oZSx0KXsobihlLHQpP3I6bykoZSx0KX0pLHt9fSxjZT1mdW5jdGlvbihlLHQpe3ZhciBuPXt9LHI9e307cmV0dXJuIHNlKGUsdCx1ZShuKSx1ZShyKSkse3Q6bixmOnJ9fSxsZT1mdW5jdGlvbihlLHQpe3ZhciBuPXt9O3JldHVybiBzZShlLHQsdWUobiksZiksbn0sZmU9ZnVuY3Rpb24oZSl7cmV0dXJuIG49ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LHI9W10sb2UoZSxmdW5jdGlvbihlLHQpe3IucHVzaChuKGUsdCkpfSkscjt2YXIgbixyfSxkZT1mdW5jdGlvbihlLHQpe3JldHVybiBtZShlLHQpP1IuZnJvbShlW3RdKTpSLm5vbmUoKX0sbWU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcmUuY2FsbChlLHQpfSxwZT1mdW5jdGlvbigpe3JldHVybihwZT1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQsbj0xLHI9YXJndW1lbnRzLmxlbmd0aDtuPHI7bisrKWZvcih2YXIgbyBpbiB0PWFyZ3VtZW50c1tuXSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxvKSYmKGVbb109dFtvXSk7cmV0dXJuIGV9KS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Z1bmN0aW9uIGdlKCl7Zm9yKHZhciBlPTAsdD0wLG49YXJndW1lbnRzLmxlbmd0aDt0PG47dCsrKWUrPWFyZ3VtZW50c1t0XS5sZW5ndGg7dmFyIHI9QXJyYXkoZSksbz0wO2Zvcih0PTA7dDxuO3QrKylmb3IodmFyIGk9YXJndW1lbnRzW3RdLGE9MCx1PWkubGVuZ3RoO2E8dTthKyssbysrKXJbb109aVthXTtyZXR1cm4gcn12YXIgaGUsdmUseWUsYmUsQ2Usd2UseGUsU2U9ZnVuY3Rpb24oZSl7aWYobnVsbD09PWV8fGU9PT11bmRlZmluZWQpdGhyb3cgbmV3IEVycm9yKCJOb2RlIGNhbm5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpO3JldHVybntkb206eChlKX19LE5lPXtmcm9tSHRtbDpmdW5jdGlvbihlLHQpe3ZhciBuPSh0fHxWLmRvY3VtZW50KS5jcmVhdGVFbGVtZW50KCJkaXYiKTtpZihuLmlubmVySFRNTD1lLCFuLmhhc0NoaWxkTm9kZXMoKXx8MTxuLmNoaWxkTm9kZXMubGVuZ3RoKXRocm93IFYuY29uc29sZS5lcnJvcigiSFRNTCBkb2VzIG5vdCBoYXZlIGEgc2luZ2xlIHJvb3Qgbm9kZSIsZSksbmV3IEVycm9yKCJIVE1MIG11c3QgaGF2ZSBhIHNpbmdsZSByb290IG5vZGUiKTtyZXR1cm4gU2Uobi5jaGlsZE5vZGVzWzBdKX0sZnJvbVRhZzpmdW5jdGlvbihlLHQpe3ZhciBuPSh0fHxWLmRvY3VtZW50KS5jcmVhdGVFbGVtZW50KGUpO3JldHVybiBTZShuKX0sZnJvbVRleHQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj0odHx8Vi5kb2N1bWVudCkuY3JlYXRlVGV4dE5vZGUoZSk7cmV0dXJuIFNlKG4pfSxmcm9tRG9tOlNlLGZyb21Qb2ludDpmdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5kb20oKTtyZXR1cm4gUi5mcm9tKHIuZWxlbWVudEZyb21Qb2ludCh0LG4pKS5tYXAoU2UpfX0sRWU9ZnVuY3Rpb24oZSx0KXt2YXIgbj1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dO2lmKHIudGVzdCh0KSlyZXR1cm4gcn1yZXR1cm4gdW5kZWZpbmVkfShlLHQpO2lmKCFuKXJldHVybnttYWpvcjowLG1pbm9yOjB9O3ZhciByPWZ1bmN0aW9uKGUpe3JldHVybiBOdW1iZXIodC5yZXBsYWNlKG4sIiQiK2UpKX07cmV0dXJuIF9lKHIoMSkscigyKSl9LGtlPWZ1bmN0aW9uKCl7cmV0dXJuIF9lKDAsMCl9LF9lPWZ1bmN0aW9uKGUsdCl7cmV0dXJue21ham9yOmUsbWlub3I6dH19LFJlPXtudTpfZSxkZXRlY3Q6ZnVuY3Rpb24oZSx0KXt2YXIgbj1TdHJpbmcodCkudG9Mb3dlckNhc2UoKTtyZXR1cm4gMD09PWUubGVuZ3RoP2tlKCk6RWUoZSxuKX0sdW5rbm93bjprZX0sVGU9IkZpcmVmb3giLEFlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY3VycmVudCxuPWUudmVyc2lvbixyPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0PT09ZX19O3JldHVybntjdXJyZW50OnQsdmVyc2lvbjpuLGlzRWRnZTpyKCJFZGdlIiksaXNDaHJvbWU6cigiQ2hyb21lIiksaXNJRTpyKCJJRSIpLGlzT3BlcmE6cigiT3BlcmEiKSxpc0ZpcmVmb3g6cihUZSksaXNTYWZhcmk6cigiU2FmYXJpIil9fSxEZT17dW5rbm93bjpmdW5jdGlvbigpe3JldHVybiBBZSh7Y3VycmVudDp1bmRlZmluZWQsdmVyc2lvbjpSZS51bmtub3duKCl9KX0sbnU6QWUsZWRnZTp4KCJFZGdlIiksY2hyb21lOngoIkNocm9tZSIpLGllOngoIklFIiksb3BlcmE6eCgiT3BlcmEiKSxmaXJlZm94OngoVGUpLHNhZmFyaTp4KCJTYWZhcmkiKX0sT2U9IldpbmRvd3MiLEJlPSJBbmRyb2lkIixQZT0iU29sYXJpcyIsTGU9IkZyZWVCU0QiLEllPSJDaHJvbWVPUyIsTWU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jdXJyZW50LG49ZS52ZXJzaW9uLHI9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQ9PT1lfX07cmV0dXJue2N1cnJlbnQ6dCx2ZXJzaW9uOm4saXNXaW5kb3dzOnIoT2UpLGlzaU9TOnIoImlPUyIpLGlzQW5kcm9pZDpyKEJlKSxpc09TWDpyKCJPU1giKSxpc0xpbnV4OnIoIkxpbnV4IiksaXNTb2xhcmlzOnIoUGUpLGlzRnJlZUJTRDpyKExlKSxpc0Nocm9tZU9TOnIoSWUpfX0sRmU9e3Vua25vd246ZnVuY3Rpb24oKXtyZXR1cm4gTWUoe2N1cnJlbnQ6dW5kZWZpbmVkLHZlcnNpb246UmUudW5rbm93bigpfSl9LG51Ok1lLHdpbmRvd3M6eChPZSksaW9zOngoImlPUyIpLGFuZHJvaWQ6eChCZSksbGludXg6eCgiTGludXgiKSxvc3g6eCgiT1NYIiksc29sYXJpczp4KFBlKSxmcmVlYnNkOngoTGUpLGNocm9tZW9zOngoSWUpfSxVZT1mdW5jdGlvbihlLHQpe3ZhciBuPVN0cmluZyh0KS50b0xvd2VyQ2FzZSgpO3JldHVybiBLKGUsZnVuY3Rpb24oZSl7cmV0dXJuIGUuc2VhcmNoKG4pfSl9LHplPWZ1bmN0aW9uKGUsbil7cmV0dXJuIFVlKGUsbikubWFwKGZ1bmN0aW9uKGUpe3ZhciB0PVJlLmRldGVjdChlLnZlcnNpb25SZWdleGVzLG4pO3JldHVybntjdXJyZW50OmUubmFtZSx2ZXJzaW9uOnR9fSl9LGplPWZ1bmN0aW9uKGUsbil7cmV0dXJuIFVlKGUsbikubWFwKGZ1bmN0aW9uKGUpe3ZhciB0PVJlLmRldGVjdChlLnZlcnNpb25SZWdleGVzLG4pO3JldHVybntjdXJyZW50OmUubmFtZSx2ZXJzaW9uOnR9fSl9LEhlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuLTEhPT1lLmluZGV4T2YodCl9LFZlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG49ZSxvPTAsIiI9PT0ocj10KXx8bi5sZW5ndGg+PXIubGVuZ3RoJiZuLnN1YnN0cihvLG8rci5sZW5ndGgpPT09cjt2YXIgbixyLG99LHFlPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKHQsIiIpfX0sJGU9cWUoL15ccyt8XHMrJC9nKSxXZT1xZSgvXlxzKy9nKSxLZT1xZSgvXHMrJC9nKSxYZT0vLio/dmVyc2lvblwvXCA/KFswLTldKylcLihbMC05XSspLiovLFllPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gSGUoZSx0KX19LEdlPVt7bmFtZToiRWRnZSIsdmVyc2lvblJlZ2V4ZXM6Wy8uKj9lZGdlXC8gPyhbMC05XSspXC4oWzAtOV0rKSQvXSxzZWFyY2g6ZnVuY3Rpb24oZSl7cmV0dXJuIEhlKGUsImVkZ2UvIikmJkhlKGUsImNocm9tZSIpJiZIZShlLCJzYWZhcmkiKSYmSGUoZSwiYXBwbGV3ZWJraXQiKX19LHtuYW1lOiJDaHJvbWUiLHZlcnNpb25SZWdleGVzOlsvLio/Y2hyb21lXC8oWzAtOV0rKVwuKFswLTldKykuKi8sWGVdLHNlYXJjaDpmdW5jdGlvbihlKXtyZXR1cm4gSGUoZSwiY2hyb21lIikmJiFIZShlLCJjaHJvbWVmcmFtZSIpfX0se25hbWU6IklFIix2ZXJzaW9uUmVnZXhlczpbLy4qP21zaWVcID8oWzAtOV0rKVwuKFswLTldKykuKi8sLy4qP3J2OihbMC05XSspXC4oWzAtOV0rKS4qL10sc2VhcmNoOmZ1bmN0aW9uKGUpe3JldHVybiBIZShlLCJtc2llIil8fEhlKGUsInRyaWRlbnQiKX19LHtuYW1lOiJPcGVyYSIsdmVyc2lvblJlZ2V4ZXM6W1hlLC8uKj9vcGVyYVwvKFswLTldKylcLihbMC05XSspLiovXSxzZWFyY2g6WWUoIm9wZXJhIil9LHtuYW1lOiJGaXJlZm94Iix2ZXJzaW9uUmVnZXhlczpbLy4qP2ZpcmVmb3hcL1wgPyhbMC05XSspXC4oWzAtOV0rKS4qL10sc2VhcmNoOlllKCJmaXJlZm94Iil9LHtuYW1lOiJTYWZhcmkiLHZlcnNpb25SZWdleGVzOltYZSwvLio/Y3B1IG9zIChbMC05XSspXyhbMC05XSspLiovXSxzZWFyY2g6ZnVuY3Rpb24oZSl7cmV0dXJuKEhlKGUsInNhZmFyaSIpfHxIZShlLCJtb2JpbGUvIikpJiZIZShlLCJhcHBsZXdlYmtpdCIpfX1dLEplPVt7bmFtZToiV2luZG93cyIsc2VhcmNoOlllKCJ3aW4iKSx2ZXJzaW9uUmVnZXhlczpbLy4qP3dpbmRvd3NcIG50XCA/KFswLTldKylcLihbMC05XSspLiovXX0se25hbWU6ImlPUyIsc2VhcmNoOmZ1bmN0aW9uKGUpe3JldHVybiBIZShlLCJpcGhvbmUiKXx8SGUoZSwiaXBhZCIpfSx2ZXJzaW9uUmVnZXhlczpbLy4qP3ZlcnNpb25cL1wgPyhbMC05XSspXC4oWzAtOV0rKS4qLywvLipjcHUgb3MgKFswLTldKylfKFswLTldKykuKi8sLy4qY3B1IGlwaG9uZSBvcyAoWzAtOV0rKV8oWzAtOV0rKS4qL119LHtuYW1lOiJBbmRyb2lkIixzZWFyY2g6WWUoImFuZHJvaWQiKSx2ZXJzaW9uUmVnZXhlczpbLy4qP2FuZHJvaWRcID8oWzAtOV0rKVwuKFswLTldKykuKi9dfSx7bmFtZToiT1NYIixzZWFyY2g6WWUoIm1hYyBvcyB4IiksdmVyc2lvblJlZ2V4ZXM6Wy8uKj9tYWNcIG9zXCB4XCA/KFswLTldKylfKFswLTldKykuKi9dfSx7bmFtZToiTGludXgiLHNlYXJjaDpZZSgibGludXgiKSx2ZXJzaW9uUmVnZXhlczpbXX0se25hbWU6IlNvbGFyaXMiLHNlYXJjaDpZZSgic3Vub3MiKSx2ZXJzaW9uUmVnZXhlczpbXX0se25hbWU6IkZyZWVCU0QiLHNlYXJjaDpZZSgiZnJlZWJzZCIpLHZlcnNpb25SZWdleGVzOltdfSx7bmFtZToiQ2hyb21lT1MiLHNlYXJjaDpZZSgiY3JvcyIpLHZlcnNpb25SZWdleGVzOlsvLio/Y2hyb21lXC8oWzAtOV0rKVwuKFswLTldKykuKi9dfV0sUWU9e2Jyb3dzZXJzOngoR2UpLG9zZXM6eChKZSl9LFplPWZ1bmN0aW9uKGUsdCl7dmFyIG4scixvLGksYSx1LHMsYyxsLGYsZCxtLHA9UWUuYnJvd3NlcnMoKSxnPVFlLm9zZXMoKSxoPXplKHAsZSkuZm9sZChEZS51bmtub3duLERlLm51KSx2PWplKGcsZSkuZm9sZChGZS51bmtub3duLEZlLm51KTtyZXR1cm57YnJvd3NlcjpoLG9zOnYsZGV2aWNlVHlwZToocj1oLG89ZSxpPXQsYT0obj12KS5pc2lPUygpJiYhMD09PS9pcGFkL2kudGVzdChvKSx1PW4uaXNpT1MoKSYmIWEscz1uLmlzaU9TKCl8fG4uaXNBbmRyb2lkKCksYz1zfHxpKCIocG9pbnRlcjpjb2Fyc2UpIiksbD1hfHwhdSYmcyYmaSgiKG1pbi1kZXZpY2Utd2lkdGg6NzY4cHgpIiksZj11fHxzJiYhbCxkPXIuaXNTYWZhcmkoKSYmbi5pc2lPUygpJiYhMT09PS9zYWZhcmkvaS50ZXN0KG8pLG09IWYmJiFsJiYhZCx7aXNpUGFkOngoYSksaXNpUGhvbmU6eCh1KSxpc1RhYmxldDp4KGwpLGlzUGhvbmU6eChmKSxpc1RvdWNoOngoYyksaXNBbmRyb2lkOm4uaXNBbmRyb2lkLGlzaU9TOm4uaXNpT1MsaXNXZWJWaWV3OngoZCksaXNEZXNrdG9wOngobSl9KX19LGV0PWZ1bmN0aW9uKGUpe3JldHVybiBWLndpbmRvdy5tYXRjaE1lZGlhKGUpLm1hdGNoZXN9LHR0PSh5ZT0hKGhlPWZ1bmN0aW9uKCl7cmV0dXJuIFplKFYubmF2aWdhdG9yLnVzZXJBZ2VudCxldCl9KSxmdW5jdGlvbigpe2Zvcih2YXIgZT1bXSx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyllW3RdPWFyZ3VtZW50c1t0XTtyZXR1cm4geWV8fCh5ZT0hMCx2ZT1oZS5hcHBseShudWxsLGUpKSx2ZX0pLG50PWZ1bmN0aW9uKCl7cmV0dXJuIHR0KCl9LHJ0PWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPVtdLHI9ZnVuY3Rpb24oZSl7cmV0dXJuIG4ucHVzaChlKSx0KGUpfSxvPXQoZSk7KG89by5iaW5kKHIpKS5pc1NvbWUoKTspO3JldHVybiBufSxvdD1mdW5jdGlvbihlLHQpe3ZhciBuPWUuZG9tKCk7aWYoMSE9PW4ubm9kZVR5cGUpcmV0dXJuITE7dmFyIHI9bjtpZihyLm1hdGNoZXMhPT11bmRlZmluZWQpcmV0dXJuIHIubWF0Y2hlcyh0KTtpZihyLm1zTWF0Y2hlc1NlbGVjdG9yIT09dW5kZWZpbmVkKXJldHVybiByLm1zTWF0Y2hlc1NlbGVjdG9yKHQpO2lmKHIud2Via2l0TWF0Y2hlc1NlbGVjdG9yIT09dW5kZWZpbmVkKXJldHVybiByLndlYmtpdE1hdGNoZXNTZWxlY3Rvcih0KTtpZihyLm1vek1hdGNoZXNTZWxlY3RvciE9PXVuZGVmaW5lZClyZXR1cm4gci5tb3pNYXRjaGVzU2VsZWN0b3IodCk7dGhyb3cgbmV3IEVycm9yKCJCcm93c2VyIGxhY2tzIG5hdGl2ZSBzZWxlY3RvcnMiKX0saXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIDEhPT1lLm5vZGVUeXBlJiY5IT09ZS5ub2RlVHlwZXx8MD09PWUuY2hpbGRFbGVtZW50Q291bnR9LGF0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuZG9tKCk9PT10LmRvbSgpfSx1dD1mdW5jdGlvbihlLHQpe3JldHVybiBuPWUuZG9tKCkscj10LmRvbSgpLG89bixpPXIsYT1WLk5vZGUuRE9DVU1FTlRfUE9TSVRJT05fQ09OVEFJTkVEX0JZLDAhPShvLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGkpJmEpO3ZhciBuLHIsbyxpLGF9LHN0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG50KCkuYnJvd3Nlci5pc0lFKCk/dXQoZSx0KToobj10LHI9ZS5kb20oKSxvPW4uZG9tKCksciE9PW8mJnIuY29udGFpbnMobykpO3ZhciBuLHIsb30sY3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIE5lLmZyb21Eb20oZS5kb20oKS5vd25lckRvY3VtZW50KX0sbHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIE5lLmZyb21Eb20oZS5kb20oKS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3KX0sZnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIFIuZnJvbShlLmRvbSgpLnBhcmVudE5vZGUpLm1hcChOZS5mcm9tRG9tKX0sZHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIFIuZnJvbShlLmRvbSgpLnByZXZpb3VzU2libGluZykubWFwKE5lLmZyb21Eb20pfSxtdD1mdW5jdGlvbihlKXtyZXR1cm4gUi5mcm9tKGUuZG9tKCkubmV4dFNpYmxpbmcpLm1hcChOZS5mcm9tRG9tKX0scHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIEoocnQoZSxkdCkpfSxndD1mdW5jdGlvbihlKXtyZXR1cm4gcnQoZSxtdCl9LGh0PWZ1bmN0aW9uKGUpe3JldHVybiBVKGUuZG9tKCkuY2hpbGROb2RlcyxOZS5mcm9tRG9tKX0sdnQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmRvbSgpLmNoaWxkTm9kZXM7cmV0dXJuIFIuZnJvbShuW3RdKS5tYXAoTmUuZnJvbURvbSl9LHl0PWZ1bmN0aW9uKGUpe3JldHVybiB2dChlLDApfSxidD1mdW5jdGlvbihlKXtyZXR1cm4gdnQoZSxlLmRvbSgpLmNoaWxkTm9kZXMubGVuZ3RoLTEpfSxDdD1mdW5jdGlvbih0LG4pe2Z0KHQpLmVhY2goZnVuY3Rpb24oZSl7ZS5kb20oKS5pbnNlcnRCZWZvcmUobi5kb20oKSx0LmRvbSgpKX0pfSx3dD1mdW5jdGlvbihlLHQpe210KGUpLmZvbGQoZnVuY3Rpb24oKXtmdChlKS5lYWNoKGZ1bmN0aW9uKGUpe1N0KGUsdCl9KX0sZnVuY3Rpb24oZSl7Q3QoZSx0KX0pfSx4dD1mdW5jdGlvbih0LG4pe3l0KHQpLmZvbGQoZnVuY3Rpb24oKXtTdCh0LG4pfSxmdW5jdGlvbihlKXt0LmRvbSgpLmluc2VydEJlZm9yZShuLmRvbSgpLGUuZG9tKCkpfSl9LFN0PWZ1bmN0aW9uKGUsdCl7ZS5kb20oKS5hcHBlbmRDaGlsZCh0LmRvbSgpKX0sTnQ9ZnVuY3Rpb24odCxlKXt6KGUsZnVuY3Rpb24oZSl7U3QodCxlKX0pfSxFdD1mdW5jdGlvbihlKXtlLmRvbSgpLnRleHRDb250ZW50PSIiLHooaHQoZSksZnVuY3Rpb24oZSl7a3QoZSl9KX0sa3Q9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kb20oKTtudWxsIT09dC5wYXJlbnROb2RlJiZ0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCl9LF90PWZ1bmN0aW9uKGUpe3ZhciB0LG49aHQoZSk7MDxuLmxlbmd0aCYmKHQ9ZSx6KG4sZnVuY3Rpb24oZSl7Q3QodCxlKX0pKSxrdChlKX0sUnQ9KCJ1bmRlZmluZWQiIT10eXBlb2YgVi53aW5kb3c/Vi53aW5kb3c6RnVuY3Rpb24oInJldHVybiB0aGlzOyIpKCksZnVuY3Rpb24oZSl7cmV0dXJuIGUuZG9tKCkubm9kZU5hbWUudG9Mb3dlckNhc2UoKX0pLFR0PWZ1bmN0aW9uKGUpe3JldHVybiBlLmRvbSgpLm5vZGVUeXBlfSxBdD1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIFR0KGUpPT09dH19LER0PUF0KDEpLE90PUF0KDMpLEJ0PWZ1bmN0aW9uKGUpe3ZhciB0PU90KGUpP2UuZG9tKCkucGFyZW50Tm9kZTplLmRvbSgpO3JldHVybiB0IT09dW5kZWZpbmVkJiZudWxsIT09dCYmdC5vd25lckRvY3VtZW50LmJvZHkuY29udGFpbnModCl9LFB0PWZ1bmN0aW9uKG4scil7cmV0dXJue2xlZnQ6eChuKSx0b3A6eChyKSx0cmFuc2xhdGU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gUHQobitlLHIrdCl9fX0sTHQ9UHQsSXQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSE9PXVuZGVmaW5lZD9lOnQhPT11bmRlZmluZWQ/dDowfSxNdD1mdW5jdGlvbihlKXt2YXIgdCxuPWUuZG9tKCkscj1uLm93bmVyRG9jdW1lbnQuYm9keTtyZXR1cm4gcj09PW4/THQoci5vZmZzZXRMZWZ0LHIub2Zmc2V0VG9wKTpCdChlKT8odD1uLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLEx0KHQubGVmdCx0LnRvcCkpOkx0KDAsMCl9LEZ0PWZ1bmN0aW9uKGUpe3ZhciB0PWUhPT11bmRlZmluZWQ/ZS5kb20oKTpWLmRvY3VtZW50LG49dC5ib2R5LnNjcm9sbExlZnR8fHQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQscj10LmJvZHkuc2Nyb2xsVG9wfHx0LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3A7cmV0dXJuIEx0KG4scil9LFV0PWZ1bmN0aW9uKGUsdCxuKXsobiE9PXVuZGVmaW5lZD9uLmRvbSgpOlYuZG9jdW1lbnQpLmRlZmF1bHRWaWV3LnNjcm9sbFRvKGUsdCl9LHp0PWZ1bmN0aW9uKGUsdCl7bnQoKS5icm93c2VyLmlzU2FmYXJpKCkmJkQoZS5kb20oKS5zY3JvbGxJbnRvVmlld0lmTmVlZGVkKT9lLmRvbSgpLnNjcm9sbEludG9WaWV3SWZOZWVkZWQoITEpOmUuZG9tKCkuc2Nyb2xsSW50b1ZpZXcodCl9LGp0PWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybnt4OmUseTp0LHdpZHRoOm4saGVpZ2h0OnIscmlnaHQ6ZStuLGJvdHRvbTp0K3J9fSxIdD1mdW5jdGlvbihlKXt2YXIgdCxuLHI9ZT09PXVuZGVmaW5lZD9WLndpbmRvdzplLG89ci5kb2N1bWVudCxpPUZ0KE5lLmZyb21Eb20obykpO3JldHVybiBuPSh0PXIpPT09dW5kZWZpbmVkP1Yud2luZG93OnQsUi5mcm9tKG4udmlzdWFsVmlld3BvcnQpLmZvbGQoZnVuY3Rpb24oKXt2YXIgZT1yLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCx0PWUuY2xpZW50V2lkdGgsbj1lLmNsaWVudEhlaWdodDtyZXR1cm4ganQoaS5sZWZ0KCksaS50b3AoKSx0LG4pfSxmdW5jdGlvbihlKXtyZXR1cm4ganQoTWF0aC5tYXgoZS5wYWdlTGVmdCxpLmxlZnQoKSksTWF0aC5tYXgoZS5wYWdlVG9wLGkudG9wKCkpLGUud2lkdGgsZS5oZWlnaHQpfSl9LFZ0PWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4hIWUmJmUubm9kZVR5cGU9PT10fX0scXQ9ZnVuY3Rpb24oZSl7cmV0dXJuISFlJiYhT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfSwkdD1WdCgxKSxXdD1mdW5jdGlvbihlKXt2YXIgbj1lLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS50b0xvd2VyQ2FzZSgpfSk7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKGUmJmUubm9kZU5hbWUpe3ZhciB0PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4gTShuLHQpfXJldHVybiExfX0sS3Q9ZnVuY3Rpb24ocixlKXt2YXIgbz1lLnRvTG93ZXJDYXNlKCkuc3BsaXQoIiAiKTtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ7aWYoJHQoZSkpZm9yKHQ9MDt0PG8ubGVuZ3RoO3QrKyl7dmFyIG49ZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZSxudWxsKTtpZigobj9uLmdldFByb3BlcnR5VmFsdWUocik6bnVsbCk9PT1vW3RdKXJldHVybiEwfXJldHVybiExfX0sWHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiAkdChlKSYmZS5oYXNBdHRyaWJ1dGUodCl9fSxZdD1mdW5jdGlvbihlKXtyZXR1cm4gJHQoZSkmJmUuaGFzQXR0cmlidXRlKCJkYXRhLW1jZS1ib2d1cyIpfSxHdD1mdW5jdGlvbihlKXtyZXR1cm4gJHQoZSkmJiJUQUJMRSI9PT1lLnRhZ05hbWV9LEp0PWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtpZigkdChlKSl7aWYoZS5jb250ZW50RWRpdGFibGU9PT10KXJldHVybiEwO2lmKGUuZ2V0QXR0cmlidXRlKCJkYXRhLW1jZS1jb250ZW50ZWRpdGFibGUiKT09PXQpcmV0dXJuITB9cmV0dXJuITF9fSxRdD1XdChbInRleHRhcmVhIiwiaW5wdXQiXSksWnQ9VnQoMyksZW49VnQoOCksdG49VnQoOSksbm49VnQoMTEpLHJuPVd0KFsiYnIiXSksb249SnQoInRydWUiKSxhbj1KdCgiZmFsc2UiKSx1bj1mdW5jdGlvbihlKXtyZXR1cm4gZS5zdHlsZSE9PXVuZGVmaW5lZCYmRChlLnN0eWxlLmdldFByb3BlcnR5VmFsdWUpfSxzbj1mdW5jdGlvbihlLHQsbil7aWYoIShxKG4pfHxUKG4pfHxPKG4pKSl0aHJvdyBWLmNvbnNvbGUuZXJyb3IoIkludmFsaWQgY2FsbCB0byBBdHRyLnNldC4gS2V5ICIsdCwiOjogVmFsdWUgIixuLCI6OiBFbGVtZW50ICIsZSksbmV3IEVycm9yKCJBdHRyaWJ1dGUgdmFsdWUgd2FzIG5vdCBzaW1wbGUiKTtlLnNldEF0dHJpYnV0ZSh0LG4rIiIpfSxjbj1mdW5jdGlvbihlLHQsbil7c24oZS5kb20oKSx0LG4pfSxsbj1mdW5jdGlvbihlLHQpe3ZhciBuPWUuZG9tKCk7b2UodCxmdW5jdGlvbihlLHQpe3NuKG4sdCxlKX0pfSxmbj1mdW5jdGlvbihlLHQpe3ZhciBuPWUuZG9tKCkuZ2V0QXR0cmlidXRlKHQpO3JldHVybiBudWxsPT09bj91bmRlZmluZWQ6bn0sZG49ZnVuY3Rpb24oZSx0KXtlLmRvbSgpLnJlbW92ZUF0dHJpYnV0ZSh0KX0sbW49ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmRvbSgpLHI9Vi53aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShuKS5nZXRQcm9wZXJ0eVZhbHVlKHQpO3JldHVybiIiIT09cnx8QnQoZSk/cjpwbihuLHQpfSxwbj1mdW5jdGlvbihlLHQpe3JldHVybiB1bihlKT9lLnN0eWxlLmdldFByb3BlcnR5VmFsdWUodCk6IiJ9LGduPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5kb20oKSxyPXBuKG4sdCk7cmV0dXJuIFIuZnJvbShyKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIDA8ZS5sZW5ndGh9KX0saG49bnQoKS5icm93c2VyLHZuPWZ1bmN0aW9uKGUpe3JldHVybiBLKGUsRHQpfSx5bj1mdW5jdGlvbihlLHQpe3JldHVybiBlLmNoaWxkcmVuJiZNKGUuY2hpbGRyZW4sdCl9LGJuPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixvLGksYT0wLHU9MCxzPWUub3duZXJEb2N1bWVudDtpZihuPW58fGUsdCl7aWYobj09PWUmJnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0JiYic3RhdGljIj09PW1uKE5lLmZyb21Eb20oZSksInBvc2l0aW9uIikpcmV0dXJue3g6YT0obz10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKS5sZWZ0KyhzLmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0fHxlLnNjcm9sbExlZnQpLXMuZG9jdW1lbnRFbGVtZW50LmNsaWVudExlZnQseTp1PW8udG9wKyhzLmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3B8fGUuc2Nyb2xsVG9wKS1zLmRvY3VtZW50RWxlbWVudC5jbGllbnRUb3B9O2ZvcihyPXQ7ciYmciE9PW4mJnIubm9kZVR5cGUmJiF5bihyLG4pOylhKz1yLm9mZnNldExlZnR8fDAsdSs9ci5vZmZzZXRUb3B8fDAscj1yLm9mZnNldFBhcmVudDtmb3Iocj10LnBhcmVudE5vZGU7ciYmciE9PW4mJnIubm9kZVR5cGUmJiF5bihyLG4pOylhLT1yLnNjcm9sbExlZnR8fDAsdS09ci5zY3JvbGxUb3B8fDAscj1yLnBhcmVudE5vZGU7dSs9KGk9TmUuZnJvbURvbSh0KSxobi5pc0ZpcmVmb3goKSYmInRhYmxlIj09PVJ0KGkpP3ZuKGh0KGkpKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuImNhcHRpb24iPT09UnQoZSl9KS5iaW5kKGZ1bmN0aW9uKG8pe3JldHVybiB2bihndChvKSkubWFwKGZ1bmN0aW9uKGUpe3ZhciB0PWUuZG9tKCkub2Zmc2V0VG9wLG49by5kb20oKS5vZmZzZXRUb3Ascj1vLmRvbSgpLm9mZnNldEhlaWdodDtyZXR1cm4gdDw9bj8tcjowfSl9KS5nZXRPcigwKTowKX1yZXR1cm57eDphLHk6dX19LENuPXt9LHduPXtleHBvcnRzOkNufTtiZT11bmRlZmluZWQsQ2U9Q24sd2U9d24seGU9dW5kZWZpbmVkLGZ1bmN0aW9uKGUpe2lmKCJvYmplY3QiPT10eXBlb2YgQ2UmJnZvaWQgMCE9PXdlKXdlLmV4cG9ydHM9ZSgpO2Vsc2UgaWYoImZ1bmN0aW9uIj09dHlwZW9mIGJlJiZiZS5hbWQpYmUoW10sZSk7ZWxzZXsoInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OiJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjp0aGlzKS5FcGhveENvbnRhY3RXcmFwcGVyPWUoKX19KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIGwoaSxhLHUpe2Z1bmN0aW9uIHModCxlKXtpZighYVt0XSl7aWYoIWlbdF0pe3ZhciBuPSJmdW5jdGlvbiI9PXR5cGVvZiB4ZSYmeGU7aWYoIWUmJm4pcmV0dXJuIG4odCwhMCk7aWYoYylyZXR1cm4gYyh0LCEwKTt2YXIgcj1uZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIit0KyInIik7dGhyb3cgci5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIixyfXZhciBvPWFbdF09e2V4cG9ydHM6e319O2lbdF1bMF0uY2FsbChvLmV4cG9ydHMsZnVuY3Rpb24oZSl7cmV0dXJuIHMoaVt0XVsxXVtlXXx8ZSl9LG8sby5leHBvcnRzLGwsaSxhLHUpfXJldHVybiBhW3RdLmV4cG9ydHN9Zm9yKHZhciBjPSJmdW5jdGlvbiI9PXR5cGVvZiB4ZSYmeGUsZT0wO2U8dS5sZW5ndGg7ZSsrKXModVtlXSk7cmV0dXJuIHN9KHsxOltmdW5jdGlvbihlLHQsbil7dmFyIHIsbyxpPXQuZXhwb3J0cz17fTtmdW5jdGlvbiBhKCl7dGhyb3cgbmV3IEVycm9yKCJzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkIil9ZnVuY3Rpb24gdSgpe3Rocm93IG5ldyBFcnJvcigiY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkIil9ZnVuY3Rpb24gcyhlKXtpZihyPT09c2V0VGltZW91dClyZXR1cm4gc2V0VGltZW91dChlLDApO2lmKChyPT09YXx8IXIpJiZzZXRUaW1lb3V0KXJldHVybiByPXNldFRpbWVvdXQsc2V0VGltZW91dChlLDApO3RyeXtyZXR1cm4gcihlLDApfWNhdGNoKHQpe3RyeXtyZXR1cm4gci5jYWxsKG51bGwsZSwwKX1jYXRjaCh0KXtyZXR1cm4gci5jYWxsKHRoaXMsZSwwKX19fSFmdW5jdGlvbigpe3RyeXtyPSJmdW5jdGlvbiI9PXR5cGVvZiBzZXRUaW1lb3V0P3NldFRpbWVvdXQ6YX1jYXRjaChlKXtyPWF9dHJ5e289ImZ1bmN0aW9uIj09dHlwZW9mIGNsZWFyVGltZW91dD9jbGVhclRpbWVvdXQ6dX1jYXRjaChlKXtvPXV9fSgpO3ZhciBjLGw9W10sZj0hMSxkPS0xO2Z1bmN0aW9uIG0oKXtmJiZjJiYoZj0hMSxjLmxlbmd0aD9sPWMuY29uY2F0KGwpOmQ9LTEsbC5sZW5ndGgmJnAoKSl9ZnVuY3Rpb24gcCgpe2lmKCFmKXt2YXIgZT1zKG0pO2Y9ITA7Zm9yKHZhciB0PWwubGVuZ3RoO3Q7KXtmb3IoYz1sLGw9W107KytkPHQ7KWMmJmNbZF0ucnVuKCk7ZD0tMSx0PWwubGVuZ3RofWM9bnVsbCxmPSExLGZ1bmN0aW9uIG4oZSl7aWYobz09PWNsZWFyVGltZW91dClyZXR1cm4gY2xlYXJUaW1lb3V0KGUpO2lmKChvPT09dXx8IW8pJiZjbGVhclRpbWVvdXQpcmV0dXJuIG89Y2xlYXJUaW1lb3V0LGNsZWFyVGltZW91dChlKTt0cnl7cmV0dXJuIG8oZSl9Y2F0Y2godCl7dHJ5e3JldHVybiBvLmNhbGwobnVsbCxlKX1jYXRjaCh0KXtyZXR1cm4gby5jYWxsKHRoaXMsZSl9fX0oZSl9fWZ1bmN0aW9uIGcoZSx0KXt0aGlzLmZ1bj1lLHRoaXMuYXJyYXk9dH1mdW5jdGlvbiBoKCl7fWkubmV4dFRpY2s9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMSk7aWYoMTxhcmd1bWVudHMubGVuZ3RoKWZvcih2YXIgbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspdFtuLTFdPWFyZ3VtZW50c1tuXTtsLnB1c2gobmV3IGcoZSx0KSksMSE9PWwubGVuZ3RofHxmfHxzKHApfSxnLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24oKXt0aGlzLmZ1bi5hcHBseShudWxsLHRoaXMuYXJyYXkpfSxpLnRpdGxlPSJicm93c2VyIixpLmJyb3dzZXI9ITAsaS5lbnY9e30saS5hcmd2PVtdLGkudmVyc2lvbj0iIixpLnZlcnNpb25zPXt9LGkub249aCxpLmFkZExpc3RlbmVyPWgsaS5vbmNlPWgsaS5vZmY9aCxpLnJlbW92ZUxpc3RlbmVyPWgsaS5yZW1vdmVBbGxMaXN0ZW5lcnM9aCxpLmVtaXQ9aCxpLnByZXBlbmRMaXN0ZW5lcj1oLGkucHJlcGVuZE9uY2VMaXN0ZW5lcj1oLGkubGlzdGVuZXJzPWZ1bmN0aW9uKGUpe3JldHVybltdfSxpLmJpbmRpbmc9ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKCJwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZCIpfSxpLmN3ZD1mdW5jdGlvbigpe3JldHVybiIvIn0saS5jaGRpcj1mdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoInByb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCIpfSxpLnVtYXNrPWZ1bmN0aW9uKCl7cmV0dXJuIDB9fSx7fV0sMjpbZnVuY3Rpb24oZSxmLHQpeyhmdW5jdGlvbih0KXtmdW5jdGlvbiByKCl7fWZ1bmN0aW9uIGkoZSl7aWYoIm9iamVjdCIhPXR5cGVvZiB0aGlzKXRocm93IG5ldyBUeXBlRXJyb3IoIlByb21pc2VzIG11c3QgYmUgY29uc3RydWN0ZWQgdmlhIG5ldyIpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIm5vdCBhIGZ1bmN0aW9uIik7dGhpcy5fc3RhdGU9MCx0aGlzLl9oYW5kbGVkPSExLHRoaXMuX3ZhbHVlPXVuZGVmaW5lZCx0aGlzLl9kZWZlcnJlZHM9W10sbChlLHRoaXMpfWZ1bmN0aW9uIG8ocixvKXtmb3IoOzM9PT1yLl9zdGF0ZTspcj1yLl92YWx1ZTswIT09ci5fc3RhdGU/KHIuX2hhbmRsZWQ9ITAsaS5faW1tZWRpYXRlRm4oZnVuY3Rpb24oKXt2YXIgZT0xPT09ci5fc3RhdGU/by5vbkZ1bGZpbGxlZDpvLm9uUmVqZWN0ZWQ7aWYobnVsbCE9PWUpe3ZhciB0O3RyeXt0PWUoci5fdmFsdWUpfWNhdGNoKG4pe3JldHVybiB2b2lkIHUoby5wcm9taXNlLG4pfWEoby5wcm9taXNlLHQpfWVsc2UoMT09PXIuX3N0YXRlP2E6dSkoby5wcm9taXNlLHIuX3ZhbHVlKX0pKTpyLl9kZWZlcnJlZHMucHVzaChvKX1mdW5jdGlvbiBhKGUsdCl7dHJ5e2lmKHQ9PT1lKXRocm93IG5ldyBUeXBlRXJyb3IoIkEgcHJvbWlzZSBjYW5ub3QgYmUgcmVzb2x2ZWQgd2l0aCBpdHNlbGYuIik7aWYodCYmKCJvYmplY3QiPT10eXBlb2YgdHx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpKXt2YXIgbj10LnRoZW47aWYodCBpbnN0YW5jZW9mIGkpcmV0dXJuIGUuX3N0YXRlPTMsZS5fdmFsdWU9dCx2b2lkIHMoZSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIG4pcmV0dXJuIHZvaWQgbChmdW5jdGlvbiByKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7ZS5hcHBseSh0LGFyZ3VtZW50cyl9fShuLHQpLGUpfWUuX3N0YXRlPTEsZS5fdmFsdWU9dCxzKGUpfWNhdGNoKG8pe3UoZSxvKX19ZnVuY3Rpb24gdShlLHQpe2UuX3N0YXRlPTIsZS5fdmFsdWU9dCxzKGUpfWZ1bmN0aW9uIHMoZSl7Mj09PWUuX3N0YXRlJiYwPT09ZS5fZGVmZXJyZWRzLmxlbmd0aCYmaS5faW1tZWRpYXRlRm4oZnVuY3Rpb24oKXtlLl9oYW5kbGVkfHxpLl91bmhhbmRsZWRSZWplY3Rpb25GbihlLl92YWx1ZSl9KTtmb3IodmFyIHQ9MCxuPWUuX2RlZmVycmVkcy5sZW5ndGg7dDxuO3QrKylvKGUsZS5fZGVmZXJyZWRzW3RdKTtlLl9kZWZlcnJlZHM9bnVsbH1mdW5jdGlvbiBjKGUsdCxuKXt0aGlzLm9uRnVsZmlsbGVkPSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6bnVsbCx0aGlzLm9uUmVqZWN0ZWQ9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpudWxsLHRoaXMucHJvbWlzZT1ufWZ1bmN0aW9uIGwoZSx0KXt2YXIgbj0hMTt0cnl7ZShmdW5jdGlvbihlKXtufHwobj0hMCxhKHQsZSkpfSxmdW5jdGlvbihlKXtufHwobj0hMCx1KHQsZSkpfSl9Y2F0Y2gocil7aWYobilyZXR1cm47bj0hMCx1KHQscil9fXZhciBlLG47ZT10aGlzLG49c2V0VGltZW91dCxpLnByb3RvdHlwZVsiY2F0Y2giXT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy50aGVuKG51bGwsZSl9LGkucHJvdG90eXBlLnRoZW49ZnVuY3Rpb24oZSx0KXt2YXIgbj1uZXcgdGhpcy5jb25zdHJ1Y3RvcihyKTtyZXR1cm4gbyh0aGlzLG5ldyBjKGUsdCxuKSksbn0saS5hbGw9ZnVuY3Rpb24oZSl7dmFyIHM9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSk7cmV0dXJuIG5ldyBpKGZ1bmN0aW9uKG8saSl7aWYoMD09PXMubGVuZ3RoKXJldHVybiBvKFtdKTt2YXIgYT1zLmxlbmd0aDtmdW5jdGlvbiB1KHQsZSl7dHJ5e2lmKGUmJigib2JqZWN0Ij09dHlwZW9mIGV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlKSl7dmFyIG49ZS50aGVuO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBuKXJldHVybiB2b2lkIG4uY2FsbChlLGZ1bmN0aW9uKGUpe3UodCxlKX0saSl9c1t0XT1lLDA9PS0tYSYmbyhzKX1jYXRjaChyKXtpKHIpfX1mb3IodmFyIGU9MDtlPHMubGVuZ3RoO2UrKyl1KGUsc1tlXSl9KX0saS5yZXNvbHZlPWZ1bmN0aW9uKHQpe3JldHVybiB0JiYib2JqZWN0Ij09dHlwZW9mIHQmJnQuY29uc3RydWN0b3I9PT1pP3Q6bmV3IGkoZnVuY3Rpb24oZSl7ZSh0KX0pfSxpLnJlamVjdD1mdW5jdGlvbihuKXtyZXR1cm4gbmV3IGkoZnVuY3Rpb24oZSx0KXt0KG4pfSl9LGkucmFjZT1mdW5jdGlvbihvKXtyZXR1cm4gbmV3IGkoZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49MCxyPW8ubGVuZ3RoO248cjtuKyspb1tuXS50aGVuKGUsdCl9KX0saS5faW1tZWRpYXRlRm49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/ZnVuY3Rpb24oZSl7dChlKX06ZnVuY3Rpb24oZSl7bihlLDApfSxpLl91bmhhbmRsZWRSZWplY3Rpb25Gbj1mdW5jdGlvbihlKXsidW5kZWZpbmVkIiE9dHlwZW9mIGNvbnNvbGUmJmNvbnNvbGUmJmNvbnNvbGUud2FybigiUG9zc2libGUgVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiIsZSl9LGkuX3NldEltbWVkaWF0ZUZuPWZ1bmN0aW9uKGUpe2kuX2ltbWVkaWF0ZUZuPWV9LGkuX3NldFVuaGFuZGxlZFJlamVjdGlvbkZuPWZ1bmN0aW9uKGUpe2kuX3VuaGFuZGxlZFJlamVjdGlvbkZuPWV9LHZvaWQgMCE9PWYmJmYuZXhwb3J0cz9mLmV4cG9ydHM9aTplLlByb21pc2V8fChlLlByb21pc2U9aSl9KS5jYWxsKHRoaXMsZSgidGltZXJzIikuc2V0SW1tZWRpYXRlKX0se3RpbWVyczozfV0sMzpbZnVuY3Rpb24ocyxlLGMpeyhmdW5jdGlvbihlLHQpe3ZhciByPXMoInByb2Nlc3MvYnJvd3Nlci5qcyIpLm5leHRUaWNrLG49RnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5LG89QXJyYXkucHJvdG90eXBlLnNsaWNlLGk9e30sYT0wO2Z1bmN0aW9uIHUoZSx0KXt0aGlzLl9pZD1lLHRoaXMuX2NsZWFyRm49dH1jLnNldFRpbWVvdXQ9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHUobi5jYWxsKHNldFRpbWVvdXQsd2luZG93LGFyZ3VtZW50cyksY2xlYXJUaW1lb3V0KX0sYy5zZXRJbnRlcnZhbD1mdW5jdGlvbigpe3JldHVybiBuZXcgdShuLmNhbGwoc2V0SW50ZXJ2YWwsd2luZG93LGFyZ3VtZW50cyksY2xlYXJJbnRlcnZhbCl9LGMuY2xlYXJUaW1lb3V0PWMuY2xlYXJJbnRlcnZhbD1mdW5jdGlvbihlKXtlLmNsb3NlKCl9LHUucHJvdG90eXBlLnVucmVmPXUucHJvdG90eXBlLnJlZj1mdW5jdGlvbigpe30sdS5wcm90b3R5cGUuY2xvc2U9ZnVuY3Rpb24oKXt0aGlzLl9jbGVhckZuLmNhbGwod2luZG93LHRoaXMuX2lkKX0sYy5lbnJvbGw9ZnVuY3Rpb24oZSx0KXtjbGVhclRpbWVvdXQoZS5faWRsZVRpbWVvdXRJZCksZS5faWRsZVRpbWVvdXQ9dH0sYy51bmVucm9sbD1mdW5jdGlvbihlKXtjbGVhclRpbWVvdXQoZS5faWRsZVRpbWVvdXRJZCksZS5faWRsZVRpbWVvdXQ9LTF9LGMuX3VucmVmQWN0aXZlPWMuYWN0aXZlPWZ1bmN0aW9uKGUpe2NsZWFyVGltZW91dChlLl9pZGxlVGltZW91dElkKTt2YXIgdD1lLl9pZGxlVGltZW91dDswPD10JiYoZS5faWRsZVRpbWVvdXRJZD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZS5fb25UaW1lb3V0JiZlLl9vblRpbWVvdXQoKX0sdCkpfSxjLnNldEltbWVkaWF0ZT0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOmZ1bmN0aW9uKGUpe3ZhciB0PWErKyxuPSEoYXJndW1lbnRzLmxlbmd0aDwyKSYmby5jYWxsKGFyZ3VtZW50cywxKTtyZXR1cm4gaVt0XT0hMCxyKGZ1bmN0aW9uKCl7aVt0XSYmKG4/ZS5hcHBseShudWxsLG4pOmUuY2FsbChudWxsKSxjLmNsZWFySW1tZWRpYXRlKHQpKX0pLHR9LGMuY2xlYXJJbW1lZGlhdGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpmdW5jdGlvbihlKXtkZWxldGUgaVtlXX19KS5jYWxsKHRoaXMscygidGltZXJzIikuc2V0SW1tZWRpYXRlLHMoInRpbWVycyIpLmNsZWFySW1tZWRpYXRlKX0seyJwcm9jZXNzL2Jyb3dzZXIuanMiOjEsdGltZXJzOjN9XSw0OltmdW5jdGlvbihlLHQsbil7dmFyIHI9ZSgicHJvbWlzZS1wb2x5ZmlsbCIpLG89InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OkZ1bmN0aW9uKCJyZXR1cm4gdGhpczsiKSgpO3QuZXhwb3J0cz17Ym9sdEV4cG9ydDpvLlByb21pc2V8fHJ9fSx7InByb21pc2UtcG9seWZpbGwiOjJ9XX0se30sWzRdKSg0KX0pO3ZhciB4bixTbixObixFbixrbj13bi5leHBvcnRzLmJvbHRFeHBvcnQsX249ZnVuY3Rpb24oZSl7dmFyIG49Ui5ub25lKCksdD1bXSxyPWZ1bmN0aW9uKGUpe28oKT9hKGUpOnQucHVzaChlKX0sbz1mdW5jdGlvbigpe3JldHVybiBuLmlzU29tZSgpfSxpPWZ1bmN0aW9uKGUpe3ooZSxhKX0sYT1mdW5jdGlvbih0KXtuLmVhY2goZnVuY3Rpb24oZSl7Vi5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dChlKX0sMCl9KX07cmV0dXJuIGUoZnVuY3Rpb24oZSl7bj1SLnNvbWUoZSksaSh0KSx0PVtdfSkse2dldDpyLG1hcDpmdW5jdGlvbihuKXtyZXR1cm4gX24oZnVuY3Rpb24odCl7cihmdW5jdGlvbihlKXt0KG4oZSkpfSl9KX0saXNSZWFkeTpvfX0sUm49e251Ol9uLHB1cmU6ZnVuY3Rpb24odCl7cmV0dXJuIF9uKGZ1bmN0aW9uKGUpe2UodCl9KX19LFRuPWZ1bmN0aW9uKGUpe1Yuc2V0VGltZW91dChmdW5jdGlvbigpe3Rocm93IGV9LDApfSxBbj1mdW5jdGlvbihuKXt2YXIgZT1mdW5jdGlvbihlKXtuKCkudGhlbihlLFRuKX07cmV0dXJue21hcDpmdW5jdGlvbihlKXtyZXR1cm4gQW4oZnVuY3Rpb24oKXtyZXR1cm4gbigpLnRoZW4oZSl9KX0sYmluZDpmdW5jdGlvbih0KXtyZXR1cm4gQW4oZnVuY3Rpb24oKXtyZXR1cm4gbigpLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIHQoZSkudG9Qcm9taXNlKCl9KX0pfSxhbm9uQmluZDpmdW5jdGlvbihlKXtyZXR1cm4gQW4oZnVuY3Rpb24oKXtyZXR1cm4gbigpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gZS50b1Byb21pc2UoKX0pfSl9LHRvTGF6eTpmdW5jdGlvbigpe3JldHVybiBSbi5udShlKX0sdG9DYWNoZWQ6ZnVuY3Rpb24oKXt2YXIgZT1udWxsO3JldHVybiBBbihmdW5jdGlvbigpe3JldHVybiBudWxsPT09ZSYmKGU9bigpKSxlfSl9LHRvUHJvbWlzZTpuLGdldDplfX0sRG49e251OmZ1bmN0aW9uKGUpe3JldHVybiBBbihmdW5jdGlvbigpe3JldHVybiBuZXcga24oZSl9KX0scHVyZTpmdW5jdGlvbihlKXtyZXR1cm4gQW4oZnVuY3Rpb24oKXtyZXR1cm4ga24ucmVzb2x2ZShlKX0pfX0sT249ZnVuY3Rpb24oYSxlKXtyZXR1cm4gZShmdW5jdGlvbihyKXt2YXIgbz1bXSxpPTA7MD09PWEubGVuZ3RoP3IoW10pOnooYSxmdW5jdGlvbihlLHQpe3ZhciBuO2UuZ2V0KChuPXQsZnVuY3Rpb24oZSl7b1tuXT1lLCsraT49YS5sZW5ndGgmJnIobyl9KSl9KX0pfSxCbj1mdW5jdGlvbihlKXtyZXR1cm4gT24oZSxEbi5udSl9LFBuPWZ1bmN0aW9uKG4pe3JldHVybntpczpmdW5jdGlvbihlKXtyZXR1cm4gbj09PWV9LGlzVmFsdWU6aCxpc0Vycm9yOmcsZ2V0T3I6eChuKSxnZXRPclRodW5rOngobiksZ2V0T3JEaWU6eChuKSxvcjpmdW5jdGlvbihlKXtyZXR1cm4gUG4obil9LG9yVGh1bms6ZnVuY3Rpb24oZSl7cmV0dXJuIFBuKG4pfSxmb2xkOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQobil9LG1hcDpmdW5jdGlvbihlKXtyZXR1cm4gUG4oZShuKSl9LG1hcEVycm9yOmZ1bmN0aW9uKGUpe3JldHVybiBQbihuKX0sZWFjaDpmdW5jdGlvbihlKXtlKG4pfSxiaW5kOmZ1bmN0aW9uKGUpe3JldHVybiBlKG4pfSxleGlzdHM6ZnVuY3Rpb24oZSl7cmV0dXJuIGUobil9LGZvcmFsbDpmdW5jdGlvbihlKXtyZXR1cm4gZShuKX0sdG9PcHRpb246ZnVuY3Rpb24oKXtyZXR1cm4gUi5zb21lKG4pfX19LExuPWZ1bmN0aW9uKG4pe3JldHVybntpczpnLGlzVmFsdWU6Zyxpc0Vycm9yOmgsZ2V0T3I6ZCxnZXRPclRodW5rOmZ1bmN0aW9uKGUpe3JldHVybiBlKCl9LGdldE9yRGllOmZ1bmN0aW9uKCl7cmV0dXJuIHAoU3RyaW5nKG4pKSgpfSxvcjpmdW5jdGlvbihlKXtyZXR1cm4gZX0sb3JUaHVuazpmdW5jdGlvbihlKXtyZXR1cm4gZSgpfSxmb2xkOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUobil9LG1hcDpmdW5jdGlvbihlKXtyZXR1cm4gTG4obil9LG1hcEVycm9yOmZ1bmN0aW9uKGUpe3JldHVybiBMbihlKG4pKX0sZWFjaDpmLGJpbmQ6ZnVuY3Rpb24oZSl7cmV0dXJuIExuKG4pfSxleGlzdHM6Zyxmb3JhbGw6aCx0b09wdGlvbjpSLm5vbmV9fSxJbj17dmFsdWU6UG4sZXJyb3I6TG4sZnJvbU9wdGlvbjpmdW5jdGlvbihlLHQpe3JldHVybiBlLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm4gTG4odCl9LFBuKX19LE1uPXdpbmRvdy5Qcm9taXNlP3dpbmRvdy5Qcm9taXNlOih4bj1BcnJheS5pc0FycmF5fHxmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBBcnJheV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpfSxObj0oU249ZnVuY3Rpb24oZSl7aWYoIm9iamVjdCIhPXR5cGVvZiB0aGlzKXRocm93IG5ldyBUeXBlRXJyb3IoIlByb21pc2VzIG11c3QgYmUgY29uc3RydWN0ZWQgdmlhIG5ldyIpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIm5vdCBhIGZ1bmN0aW9uIik7dGhpcy5fc3RhdGU9bnVsbCx0aGlzLl92YWx1ZT1udWxsLHRoaXMuX2RlZmVycmVkcz1bXSxxbihlLEZuKHpuLHRoaXMpLEZuKGpuLHRoaXMpKX0pLmltbWVkaWF0ZUZufHwiZnVuY3Rpb24iPT10eXBlb2YgVi5zZXRJbW1lZGlhdGUmJlYuc2V0SW1tZWRpYXRlfHxmdW5jdGlvbihlKXtWLnNldFRpbWVvdXQoZSwxKX0sU24ucHJvdG90eXBlWyJjYXRjaCJdPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnRoZW4obnVsbCxlKX0sU24ucHJvdG90eXBlLnRoZW49ZnVuY3Rpb24obixyKXt2YXIgbz10aGlzO3JldHVybiBuZXcgU24oZnVuY3Rpb24oZSx0KXtVbi5jYWxsKG8sbmV3IFZuKG4scixlLHQpKX0pfSxTbi5hbGw9ZnVuY3Rpb24oKXt2YXIgcz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCgxPT09YXJndW1lbnRzLmxlbmd0aCYmeG4oYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzKTtyZXR1cm4gbmV3IFNuKGZ1bmN0aW9uKG8saSl7aWYoMD09PXMubGVuZ3RoKXJldHVybiBvKFtdKTt2YXIgYT1zLmxlbmd0aDtmdW5jdGlvbiB1KHQsZSl7dHJ5e2lmKGUmJigib2JqZWN0Ij09dHlwZW9mIGV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlKSl7dmFyIG49ZS50aGVuO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBuKXJldHVybiB2b2lkIG4uY2FsbChlLGZ1bmN0aW9uKGUpe3UodCxlKX0saSl9c1t0XT1lLDA9PS0tYSYmbyhzKX1jYXRjaChyKXtpKHIpfX1mb3IodmFyIGU9MDtlPHMubGVuZ3RoO2UrKyl1KGUsc1tlXSl9KX0sU24ucmVzb2x2ZT1mdW5jdGlvbih0KXtyZXR1cm4gdCYmIm9iamVjdCI9PXR5cGVvZiB0JiZ0LmNvbnN0cnVjdG9yPT09U24/dDpuZXcgU24oZnVuY3Rpb24oZSl7ZSh0KX0pfSxTbi5yZWplY3Q9ZnVuY3Rpb24obil7cmV0dXJuIG5ldyBTbihmdW5jdGlvbihlLHQpe3Qobil9KX0sU24ucmFjZT1mdW5jdGlvbihvKXtyZXR1cm4gbmV3IFNuKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTAscj1vLmxlbmd0aDtuPHI7bisrKW9bbl0udGhlbihlLHQpfSl9LFNuKTtmdW5jdGlvbiBGbihlLHQpe3JldHVybiBmdW5jdGlvbigpe2UuYXBwbHkodCxhcmd1bWVudHMpfX1mdW5jdGlvbiBVbihyKXt2YXIgbz10aGlzO251bGwhPT10aGlzLl9zdGF0ZT9ObihmdW5jdGlvbigpe3ZhciBlPW8uX3N0YXRlP3Iub25GdWxmaWxsZWQ6ci5vblJlamVjdGVkO2lmKG51bGwhPT1lKXt2YXIgdDt0cnl7dD1lKG8uX3ZhbHVlKX1jYXRjaChuKXtyZXR1cm4gdm9pZCByLnJlamVjdChuKX1yLnJlc29sdmUodCl9ZWxzZShvLl9zdGF0ZT9yLnJlc29sdmU6ci5yZWplY3QpKG8uX3ZhbHVlKX0pOnRoaXMuX2RlZmVycmVkcy5wdXNoKHIpfWZ1bmN0aW9uIHpuKGUpe3RyeXtpZihlPT09dGhpcyl0aHJvdyBuZXcgVHlwZUVycm9yKCJBIHByb21pc2UgY2Fubm90IGJlIHJlc29sdmVkIHdpdGggaXRzZWxmLiIpO2lmKGUmJigib2JqZWN0Ij09dHlwZW9mIGV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlKSl7dmFyIHQ9ZS50aGVuO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0KXJldHVybiB2b2lkIHFuKEZuKHQsZSksRm4oem4sdGhpcyksRm4oam4sdGhpcykpfXRoaXMuX3N0YXRlPSEwLHRoaXMuX3ZhbHVlPWUsSG4uY2FsbCh0aGlzKX1jYXRjaChuKXtqbi5jYWxsKHRoaXMsbil9fWZ1bmN0aW9uIGpuKGUpe3RoaXMuX3N0YXRlPSExLHRoaXMuX3ZhbHVlPWUsSG4uY2FsbCh0aGlzKX1mdW5jdGlvbiBIbigpe2Zvcih2YXIgZT0wLHQ9dGhpcy5fZGVmZXJyZWRzLmxlbmd0aDtlPHQ7ZSsrKVVuLmNhbGwodGhpcyx0aGlzLl9kZWZlcnJlZHNbZV0pO3RoaXMuX2RlZmVycmVkcz1udWxsfWZ1bmN0aW9uIFZuKGUsdCxuLHIpe3RoaXMub25GdWxmaWxsZWQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpudWxsLHRoaXMub25SZWplY3RlZD0iZnVuY3Rpb24iPT10eXBlb2YgdD90Om51bGwsdGhpcy5yZXNvbHZlPW4sdGhpcy5yZWplY3Q9cn1mdW5jdGlvbiBxbihlLHQsbil7dmFyIHI9ITE7dHJ5e2UoZnVuY3Rpb24oZSl7cnx8KHI9ITAsdChlKSl9LGZ1bmN0aW9uKGUpe3J8fChyPSEwLG4oZSkpfSl9Y2F0Y2gobyl7aWYocilyZXR1cm47cj0hMCxuKG8pfX12YXIgJG49ZnVuY3Rpb24oZSx0KXtyZXR1cm4ibnVtYmVyIiE9dHlwZW9mIHQmJih0PTApLFYuc2V0VGltZW91dChlLHQpfSxXbj1mdW5jdGlvbihlLHQpe3JldHVybiJudW1iZXIiIT10eXBlb2YgdCYmKHQ9MSksVi5zZXRJbnRlcnZhbChlLHQpfSxLbj1mdW5jdGlvbihuLHIpe3ZhciBvLGU7cmV0dXJuKGU9ZnVuY3Rpb24oKXtmb3IodmFyIGU9W10sdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0KyspZVt0XT1hcmd1bWVudHNbdF07Vi5jbGVhclRpbWVvdXQobyksbz0kbihmdW5jdGlvbigpe24uYXBwbHkodGhpcyxlKX0scil9KS5zdG9wPWZ1bmN0aW9uKCl7Vi5jbGVhclRpbWVvdXQobyl9LGV9LFhuPXtyZXF1ZXN0QW5pbWF0aW9uRnJhbWU6ZnVuY3Rpb24oZSx0KXtFbj9Fbi50aGVuKGUpOkVuPW5ldyBNbihmdW5jdGlvbihlKXshZnVuY3Rpb24oZSx0KXt2YXIgbixyPVYud2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSxvPVsibXMiLCJtb3oiLCJ3ZWJraXQiXTtmb3Iobj0wO248by5sZW5ndGgmJiFyO24rKylyPVYud2luZG93W29bbl0rIlJlcXVlc3RBbmltYXRpb25GcmFtZSJdOyhyPXJ8fGZ1bmN0aW9uKGUpe1Yud2luZG93LnNldFRpbWVvdXQoZSwwKX0pKGUsdCl9KGUsdD10fHxWLmRvY3VtZW50LmJvZHkpfSkudGhlbihlKX0sc2V0VGltZW91dDokbixzZXRJbnRlcnZhbDpXbixzZXRFZGl0b3JUaW1lb3V0OmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gJG4oZnVuY3Rpb24oKXtlLnJlbW92ZWR8fHQoKX0sbil9LHNldEVkaXRvckludGVydmFsOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcjtyZXR1cm4gcj1XbihmdW5jdGlvbigpe2UucmVtb3ZlZD9WLmNsZWFySW50ZXJ2YWwocik6dCgpfSxuKX0sZGVib3VuY2U6S24sdGhyb3R0bGU6S24sY2xlYXJJbnRlcnZhbDpmdW5jdGlvbihlKXtyZXR1cm4gVi5jbGVhckludGVydmFsKGUpfSxjbGVhclRpbWVvdXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIFYuY2xlYXJUaW1lb3V0KGUpfX0sWW49Vi5uYXZpZ2F0b3IudXNlckFnZW50LEduPW50KCksSm49R24uYnJvd3NlcixRbj1Hbi5vcyxabj1Hbi5kZXZpY2VUeXBlLGVyPS9XZWJLaXQvLnRlc3QoWW4pJiYhSm4uaXNFZGdlKCksdHI9IkZvcm1EYXRhImluIFYud2luZG93JiYiRmlsZVJlYWRlciJpbiBWLndpbmRvdyYmIlVSTCJpbiBWLndpbmRvdyYmISFWLlVSTC5jcmVhdGVPYmplY3RVUkwsbnI9LTEhPT1Zbi5pbmRleE9mKCJXaW5kb3dzIFBob25lIikscnI9e29wZXJhOkpuLmlzT3BlcmEoKSx3ZWJraXQ6ZXIsaWU6ISghSm4uaXNJRSgpJiYhSm4uaXNFZGdlKCkpJiZKbi52ZXJzaW9uLm1ham9yLGdlY2tvOkpuLmlzRmlyZWZveCgpLG1hYzpRbi5pc09TWCgpfHxRbi5pc2lPUygpLGlPUzpabi5pc2lQYWQoKXx8Wm4uaXNpUGhvbmUoKSxhbmRyb2lkOlFuLmlzQW5kcm9pZCgpLGNvbnRlbnRFZGl0YWJsZTohMCx0cmFuc3BhcmVudFNyYzoiZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoQVFBQkFJQUFBQUFBQVAvLy95SDVCQUVBQUFBQUxBQUFBQUFCQUFFQUFBSUJSQUE3IixjYXJldEFmdGVyOiEwLHJhbmdlOlYud2luZG93LmdldFNlbGVjdGlvbiYmIlJhbmdlImluIFYud2luZG93LGRvY3VtZW50TW9kZTpKbi5pc0lFKCk/Vi5kb2N1bWVudC5kb2N1bWVudE1vZGV8fDc6MTAsZmlsZUFwaTp0cixjZUZhbHNlOiEwLGNhY2hlU3VmZml4Om51bGwsY29udGFpbmVyOm51bGwsZXhwZXJpbWVudGFsU2hhZG93RG9tOiExLGNhbkhhdmVDU1A6IUpuLmlzSUUoKSxkZXNrdG9wOlpuLmlzRGVza3RvcCgpLHdpbmRvd3NQaG9uZTpucixicm93c2VyOntjdXJyZW50OkpuLmN1cnJlbnQsdmVyc2lvbjpKbi52ZXJzaW9uLGlzQ2hyb21lOkpuLmlzQ2hyb21lLGlzRWRnZTpKbi5pc0VkZ2UsaXNGaXJlZm94OkpuLmlzRmlyZWZveCxpc0lFOkpuLmlzSUUsaXNPcGVyYTpKbi5pc09wZXJhLGlzU2FmYXJpOkpuLmlzU2FmYXJpfSxvczp7Y3VycmVudDpRbi5jdXJyZW50LHZlcnNpb246UW4udmVyc2lvbixpc0FuZHJvaWQ6UW4uaXNBbmRyb2lkLGlzQ2hyb21lT1M6UW4uaXNDaHJvbWVPUyxpc0ZyZWVCU0Q6UW4uaXNGcmVlQlNELGlzaU9TOlFuLmlzaU9TLGlzTGludXg6UW4uaXNMaW51eCxpc09TWDpRbi5pc09TWCxpc1NvbGFyaXM6UW4uaXNTb2xhcmlzLGlzV2luZG93czpRbi5pc1dpbmRvd3N9LGRldmljZVR5cGU6e2lzRGVza3RvcDpabi5pc0Rlc2t0b3AsaXNpUGFkOlpuLmlzaVBhZCxpc2lQaG9uZTpabi5pc2lQaG9uZSxpc1Bob25lOlpuLmlzUGhvbmUsaXNUYWJsZXQ6Wm4uaXNUYWJsZXQsaXNUb3VjaDpabi5pc1RvdWNoLGlzV2ViVmlldzpabi5pc1dlYlZpZXd9fSxvcj1BcnJheS5pc0FycmF5LGlyPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixvO2lmKCFlKXJldHVybiAwO2lmKG49bnx8ZSxlLmxlbmd0aCE9PXVuZGVmaW5lZCl7Zm9yKHI9MCxvPWUubGVuZ3RoO3I8bztyKyspaWYoITE9PT10LmNhbGwobixlW3JdLHIsZSkpcmV0dXJuIDB9ZWxzZSBmb3IociBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkocikmJiExPT09dC5jYWxsKG4sZVtyXSxyLGUpKXJldHVybiAwO3JldHVybiAxfSxhcj1mdW5jdGlvbihuLHIpe3ZhciBvPVtdO3JldHVybiBpcihuLGZ1bmN0aW9uKGUsdCl7by5wdXNoKHIoZSx0LG4pKX0pLG99LHVyPWZ1bmN0aW9uKG4scil7dmFyIG89W107cmV0dXJuIGlyKG4sZnVuY3Rpb24oZSx0KXtyJiYhcihlLHQsbil8fG8ucHVzaChlKX0pLG99LHNyPWZ1bmN0aW9uKGUsdCl7dmFyIG4scjtpZihlKWZvcihuPTAscj1lLmxlbmd0aDtuPHI7bisrKWlmKGVbbl09PT10KXJldHVybiBuO3JldHVybi0xfSxjcj1mdW5jdGlvbihlLHQsbixyKXt2YXIgbz0wO2Zvcihhcmd1bWVudHMubGVuZ3RoPDMmJihuPWVbMF0pO288ZS5sZW5ndGg7bysrKW49dC5jYWxsKHIsbixlW29dLG8pO3JldHVybiBufSxscj1mdW5jdGlvbihlLHQsbil7dmFyIHIsbztmb3Iocj0wLG89ZS5sZW5ndGg7cjxvO3IrKylpZih0LmNhbGwobixlW3JdLHIsZSkpcmV0dXJuIHI7cmV0dXJuLTF9LGZyPWZ1bmN0aW9uKGUpe3JldHVybiBlW2UubGVuZ3RoLTFdfSxkcj0vXlxzKnxccyokL2csbXI9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PT1lfHxlPT09dW5kZWZpbmVkPyIiOigiIitlKS5yZXBsYWNlKGRyLCIiKX0scHI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD8hKCJhcnJheSIhPT10fHwhb3IoZSkpfHx0eXBlb2YgZT09PXQ6ZSE9PXVuZGVmaW5lZH0sZ3I9ZnVuY3Rpb24oZSxuLHIsbyl7bz1vfHx0aGlzLGUmJihyJiYoZT1lW3JdKSxpcihlLGZ1bmN0aW9uKGUsdCl7aWYoITE9PT1uLmNhbGwobyxlLHQscikpcmV0dXJuITE7Z3IoZSxuLHIsbyl9KSl9LGhyPXt0cmltOm1yLGlzQXJyYXk6b3IsaXM6cHIsdG9BcnJheTpmdW5jdGlvbihlKXt2YXIgdCxuLHI9ZTtpZighb3IoZSkpZm9yKHI9W10sdD0wLG49ZS5sZW5ndGg7dDxuO3QrKylyW3RdPWVbdF07cmV0dXJuIHJ9LG1ha2VNYXA6ZnVuY3Rpb24oZSx0LG4pe3ZhciByO2Zvcih0PXR8fCIsIiwic3RyaW5nIj09dHlwZW9mKGU9ZXx8W10pJiYoZT1lLnNwbGl0KHQpKSxuPW58fHt9LHI9ZS5sZW5ndGg7ci0tOyluW2Vbcl1dPXt9O3JldHVybiBufSxlYWNoOmlyLG1hcDphcixncmVwOnVyLGluQXJyYXk6c3IsaGFzT3duOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpfSxleHRlbmQ6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXRbbi0xXT1hcmd1bWVudHNbbl07Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBvPXRbcl07Zm9yKHZhciBpIGluIG8paWYoby5oYXNPd25Qcm9wZXJ0eShpKSl7dmFyIGE9b1tpXTthIT09dW5kZWZpbmVkJiYoZVtpXT1hKX19cmV0dXJuIGV9LGNyZWF0ZTpmdW5jdGlvbihlLHQsbil7dmFyIHIsbyxpLGEsdSxzPXRoaXMsYz0wO2lmKGU9L14oKHN0YXRpYykgKT8oW1x3Ll0rKSg6KFtcdy5dKykpPy8uZXhlYyhlKSxpPWVbM10ubWF0Y2goLyhefFwuKShcdyspJC9pKVsyXSwhKG89cy5jcmVhdGVOUyhlWzNdLnJlcGxhY2UoL1wuXHcrJC8sIiIpLG4pKVtpXSl7aWYoInN0YXRpYyI9PT1lWzJdKXJldHVybiBvW2ldPXQsdm9pZCh0aGlzLm9uQ3JlYXRlJiZ0aGlzLm9uQ3JlYXRlKGVbMl0sZVszXSxvW2ldKSk7dFtpXXx8KHRbaV09ZnVuY3Rpb24oKXt9LGM9MSksb1tpXT10W2ldLHMuZXh0ZW5kKG9baV0ucHJvdG90eXBlLHQpLGVbNV0mJihyPXMucmVzb2x2ZShlWzVdKS5wcm90b3R5cGUsYT1lWzVdLm1hdGNoKC9cLihcdyspJC9pKVsxXSx1PW9baV0sb1tpXT1jP2Z1bmN0aW9uKCl7cmV0dXJuIHJbYV0uYXBwbHkodGhpcyxhcmd1bWVudHMpfTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcmVudD1yW2FdLHUuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxvW2ldLnByb3RvdHlwZVtpXT1vW2ldLHMuZWFjaChyLGZ1bmN0aW9uKGUsdCl7b1tpXS5wcm90b3R5cGVbdF09clt0XX0pLHMuZWFjaCh0LGZ1bmN0aW9uKGUsdCl7clt0XT9vW2ldLnByb3RvdHlwZVt0XT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcmVudD1yW3RdLGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfTp0IT09aSYmKG9baV0ucHJvdG90eXBlW3RdPWUpfSkpLHMuZWFjaCh0WyJzdGF0aWMiXSxmdW5jdGlvbihlLHQpe29baV1bdF09ZX0pfX0sd2FsazpncixjcmVhdGVOUzpmdW5jdGlvbihlLHQpe3ZhciBuLHI7Zm9yKHQ9dHx8Vi53aW5kb3csZT1lLnNwbGl0KCIuIiksbj0wO248ZS5sZW5ndGg7bisrKXRbcj1lW25dXXx8KHRbcl09e30pLHQ9dFtyXTtyZXR1cm4gdH0scmVzb2x2ZTpmdW5jdGlvbihlLHQpe3ZhciBuLHI7Zm9yKHQ9dHx8Vi53aW5kb3csbj0wLHI9KGU9ZS5zcGxpdCgiLiIpKS5sZW5ndGg7bjxyJiYodD10W2Vbbl1dKTtuKyspO3JldHVybiB0fSxleHBsb2RlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIWV8fHByKGUsImFycmF5Iik/ZTphcihlLnNwbGl0KHR8fCIsIiksbXIpfSxfYWRkQ2FjaGVTdWZmaXg6ZnVuY3Rpb24oZSl7dmFyIHQ9cnIuY2FjaGVTdWZmaXg7cmV0dXJuIHQmJihlKz0oLTE9PT1lLmluZGV4T2YoIj8iKT8iPyI6IiYiKSt0KSxlfX07ZnVuY3Rpb24gdnIocCxnKXt2b2lkIDA9PT1nJiYoZz17fSk7dmFyIGgsdj0wLHk9e307aD1nLm1heExvYWRUaW1lfHw1ZTM7dmFyIGI9ZnVuY3Rpb24oZSl7cC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmFwcGVuZENoaWxkKGUpfSxuPWZ1bmN0aW9uKGUsdCxuKXt2YXIgbyxyLGksYSx1PWZ1bmN0aW9uKGUpe2Euc3RhdHVzPWUsYS5wYXNzZWQ9W10sYS5mYWlsZWQ9W10sbyYmKG8ub25sb2FkPW51bGwsby5vbmVycm9yPW51bGwsbz1udWxsKX0scz1mdW5jdGlvbigpe2Zvcih2YXIgZT1hLnBhc3NlZCx0PWUubGVuZ3RoO3QtLTspZVt0XSgpO3UoMil9LGM9ZnVuY3Rpb24oKXtmb3IodmFyIGU9YS5mYWlsZWQsdD1lLmxlbmd0aDt0LS07KWVbdF0oKTt1KDMpfSxsPWZ1bmN0aW9uKGUsdCl7ZSgpfHwoKG5ldyBEYXRlKS5nZXRUaW1lKCktaTxoP1huLnNldFRpbWVvdXQodCk6YygpKX0sZj1mdW5jdGlvbigpe2woZnVuY3Rpb24oKXtmb3IodmFyIGUsdCxuPXAuc3R5bGVTaGVldHMscj1uLmxlbmd0aDtyLS07KWlmKCh0PShlPW5bcl0pLm93bmVyTm9kZT9lLm93bmVyTm9kZTplLm93bmluZ0VsZW1lbnQpJiZ0LmlkPT09by5pZClyZXR1cm4gcygpLDF9LGYpfSxkPWZ1bmN0aW9uKCl7bChmdW5jdGlvbigpe3RyeXt2YXIgZT1yLnNoZWV0LmNzc1J1bGVzO3JldHVybiBzKCksZX1jYXRjaCh0KXt9fSxkKX07aWYoZT1oci5fYWRkQ2FjaGVTdWZmaXgoZSkseVtlXT9hPXlbZV06KGE9e3Bhc3NlZDpbXSxmYWlsZWQ6W119LHlbZV09YSksdCYmYS5wYXNzZWQucHVzaCh0KSxuJiZhLmZhaWxlZC5wdXNoKG4pLDEhPT1hLnN0YXR1cylpZigyIT09YS5zdGF0dXMpaWYoMyE9PWEuc3RhdHVzKXtpZihhLnN0YXR1cz0xLChvPXAuY3JlYXRlRWxlbWVudCgibGluayIpKS5yZWw9InN0eWxlc2hlZXQiLG8udHlwZT0idGV4dC9jc3MiLG8uaWQ9InUiK3YrKyxvLmFzeW5jPSExLG8uZGVmZXI9ITEsaT0obmV3IERhdGUpLmdldFRpbWUoKSxnLmNvbnRlbnRDc3NDb3JzJiYoby5jcm9zc09yaWdpbj0iYW5vbnltb3VzIiksZy5yZWZlcnJlclBvbGljeSYmY24oTmUuZnJvbURvbShvKSwicmVmZXJyZXJwb2xpY3kiLGcucmVmZXJyZXJQb2xpY3kpLCJvbmxvYWQiaW4gbyYmISgobT1WLm5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL1dlYktpdFwvKFxkKikvKSkmJnBhcnNlSW50KG1bMV0sMTApPDUzNikpby5vbmxvYWQ9ZixvLm9uZXJyb3I9YztlbHNle2lmKDA8Vi5uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIkZpcmVmb3giKSlyZXR1cm4ocj1wLmNyZWF0ZUVsZW1lbnQoInN0eWxlIikpLnRleHRDb250ZW50PSdAaW1wb3J0ICInK2UrJyInLGQoKSx2b2lkIGIocik7ZigpfXZhciBtO2Iobyksby5ocmVmPWV9ZWxzZSBjKCk7ZWxzZSBzKCl9LHQ9ZnVuY3Rpb24odCl7cmV0dXJuIERuLm51KGZ1bmN0aW9uKGUpe24odCxhKGUseChJbi52YWx1ZSh0KSkpLGEoZSx4KEluLmVycm9yKHQpKSkpfSl9LG89ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZm9sZChkLGQpfTtyZXR1cm57bG9hZDpuLGxvYWRBbGw6ZnVuY3Rpb24oZSxuLHIpe0JuKFUoZSx0KSkuZ2V0KGZ1bmN0aW9uKGUpe3ZhciB0PWooZSxmdW5jdGlvbihlKXtyZXR1cm4gZS5pc1ZhbHVlKCl9KTswPHQuZmFpbC5sZW5ndGg/cih0LmZhaWwubWFwKG8pKTpuKHQucGFzcy5tYXAobykpfSl9LF9zZXRSZWZlcnJlclBvbGljeTpmdW5jdGlvbihlKXtnLnJlZmVycmVyUG9saWN5PWV9fX12YXIgeXIsYnIsQ3Isd3I9ZnVuY3Rpb24odCl7dmFyIG47cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybihuPW58fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPXt9LHI9MCxvPWUubGVuZ3RoO3I8bztyKyspe3ZhciBpPWVbcl07bltTdHJpbmcoaSldPXQoaSxyKX1yZXR1cm4gbn0odCx4KCEwKSkpLmhhc093blByb3BlcnR5KFJ0KGUpKX19LHhyPXdyKFsiaDEiLCJoMiIsImgzIiwiaDQiLCJoNSIsImg2Il0pLFNyPXdyKFsiYXJ0aWNsZSIsImFzaWRlIiwiZGV0YWlscyIsImRpdiIsImR0IiwiZmlnY2FwdGlvbiIsImZvb3RlciIsImZvcm0iLCJmaWVsZHNldCIsImhlYWRlciIsImhncm91cCIsImh0bWwiLCJtYWluIiwibmF2Iiwic2VjdGlvbiIsInN1bW1hcnkiLCJib2R5IiwicCIsImRsIiwibXVsdGljb2wiLCJkZCIsImZpZ3VyZSIsImFkZHJlc3MiLCJjZW50ZXIiLCJibG9ja3F1b3RlIiwiaDEiLCJoMiIsImgzIiwiaDQiLCJoNSIsImg2IiwibGlzdGluZyIsInhtcCIsInByZSIsInBsYWludGV4dCIsIm1lbnUiLCJkaXIiLCJ1bCIsIm9sIiwibGkiLCJociIsInRhYmxlIiwidGJvZHkiLCJ0aGVhZCIsInRmb290IiwidGgiLCJ0ciIsInRkIiwiY2FwdGlvbiJdKSxOcj1mdW5jdGlvbihlKXtyZXR1cm4gRHQoZSkmJiFTcihlKX0sRXI9ZnVuY3Rpb24oZSl7cmV0dXJuIER0KGUpJiYiYnIiPT09UnQoZSl9LGtyPXdyKFsiaDEiLCJoMiIsImgzIiwiaDQiLCJoNSIsImg2IiwicCIsImRpdiIsImFkZHJlc3MiLCJwcmUiLCJmb3JtIiwiYmxvY2txdW90ZSIsImNlbnRlciIsImRpciIsImZpZWxkc2V0IiwiaGVhZGVyIiwiZm9vdGVyIiwiYXJ0aWNsZSIsInNlY3Rpb24iLCJoZ3JvdXAiLCJhc2lkZSIsIm5hdiIsImZpZ3VyZSJdKSxfcj13cihbInVsIiwib2wiLCJkbCJdKSxScj13cihbImxpIiwiZGQiLCJkdCJdKSxUcj13cihbImFyZWEiLCJiYXNlIiwiYmFzZWZvbnQiLCJiciIsImNvbCIsImZyYW1lIiwiaHIiLCJpbWciLCJpbnB1dCIsImlzaW5kZXgiLCJsaW5rIiwibWV0YSIsInBhcmFtIiwiZW1iZWQiLCJzb3VyY2UiLCJ3YnIiLCJ0cmFjayJdKSxBcj13cihbInRoZWFkIiwidGJvZHkiLCJ0Zm9vdCJdKSxEcj13cihbInRkIiwidGgiXSksT3I9d3IoWyJwcmUiLCJzY3JpcHQiLCJ0ZXh0YXJlYSIsInN0eWxlIl0pLEJyPWZ1bmN0aW9uKGUpe3JldHVybiBlJiYiU1BBTiI9PT1lLnRhZ05hbWUmJiJib29rbWFyayI9PT1lLmdldEF0dHJpYnV0ZSgiZGF0YS1tY2UtdHlwZSIpfSxQcj1mdW5jdGlvbihlLHQpe3ZhciBuLHI9dC5jaGlsZE5vZGVzO2lmKCEkdCh0KXx8IUJyKHQpKXtmb3Iobj1yLmxlbmd0aC0xOzA8PW47bi0tKVByKGUscltuXSk7aWYoITE9PT10bih0KSl7aWYoWnQodCkmJjA8dC5ub2RlVmFsdWUubGVuZ3RoKXt2YXIgbz1oci50cmltKHQubm9kZVZhbHVlKS5sZW5ndGg7aWYoZS5pc0Jsb2NrKHQucGFyZW50Tm9kZSl8fDA8bylyZXR1cm47aWYoMD09PW8mJihhPShpPXQpLnByZXZpb3VzU2libGluZyYmIlNQQU4iPT09aS5wcmV2aW91c1NpYmxpbmcubm9kZU5hbWUsdT1pLm5leHRTaWJsaW5nJiYiU1BBTiI9PT1pLm5leHRTaWJsaW5nLm5vZGVOYW1lLGEmJnUpKXJldHVybn1lbHNlIGlmKCR0KHQpJiYoMT09PShyPXQuY2hpbGROb2RlcykubGVuZ3RoJiZCcihyWzBdKSYmdC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShyWzBdLHQpLHIubGVuZ3RofHxUcihOZS5mcm9tRG9tKHQpKSkpcmV0dXJuO2UucmVtb3ZlKHQpfXZhciBpLGEsdTtyZXR1cm4gdH19LExyPWhyLm1ha2VNYXAsSXI9L1smPD5cIlx1MDA2MFx1MDA3RS1cdUQ3RkZcdUUwMDAtXHVGRkVGXXxbXHVEODAwLVx1REJGRl1bXHVEQzAwLVx1REZGRl0vZyxNcj0vWzw+Jlx1MDA3RS1cdUQ3RkZcdUUwMDAtXHVGRkVGXXxbXHVEODAwLVx1REJGRl1bXHVEQzAwLVx1REZGRl0vZyxGcj0vWzw+JlwiXCddL2csVXI9LyYjKFthLXowLTldKyk7P3wmKFthLXowLTldKyk7L2dpLHpyPXsxMjg6Ilx1MjBhYyIsMTMwOiJcdTIwMWEiLDEzMToiXHUwMTkyIiwxMzI6Ilx1MjAxZSIsMTMzOiJcdTIwMjYiLDEzNDoiXHUyMDIwIiwxMzU6Ilx1MjAyMSIsMTM2OiJcdTAyYzYiLDEzNzoiXHUyMDMwIiwxMzg6Ilx1MDE2MCIsMTM5OiJcdTIwMzkiLDE0MDoiXHUwMTUyIiwxNDI6Ilx1MDE3ZCIsMTQ1OiJcdTIwMTgiLDE0NjoiXHUyMDE5IiwxNDc6Ilx1MjAxYyIsMTQ4OiJcdTIwMWQiLDE0OToiXHUyMDIyIiwxNTA6Ilx1MjAxMyIsMTUxOiJcdTIwMTQiLDE1MjoiXHUwMmRjIiwxNTM6Ilx1MjEyMiIsMTU0OiJcdTAxNjEiLDE1NToiXHUyMDNhIiwxNTY6Ilx1MDE1MyIsMTU4OiJcdTAxN2UiLDE1OToiXHUwMTc4In07YnI9eyciJzoiJnF1b3Q7IiwiJyI6IiYjMzk7IiwiPCI6IiZsdDsiLCI+IjoiJmd0OyIsIiYiOiImYW1wOyIsImAiOiImIzk2OyJ9LENyPXsiJmx0OyI6IjwiLCImZ3Q7IjoiPiIsIiZhbXA7IjoiJiIsIiZxdW90OyI6JyInLCImYXBvczsiOiInIn07dmFyIGpyPWZ1bmN0aW9uKGUsdCl7dmFyIG4scixvLGk9e307aWYoZSl7Zm9yKGU9ZS5zcGxpdCgiLCIpLHQ9dHx8MTAsbj0wO248ZS5sZW5ndGg7bis9MilyPVN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoZVtuXSx0KSksYnJbcl18fChvPSImIitlW24rMV0rIjsiLGlbcl09byxpW29dPXIpO3JldHVybiBpfX07eXI9anIoIjUwLG5ic3AsNTEsaWV4Y2wsNTIsY2VudCw1Myxwb3VuZCw1NCxjdXJyZW4sNTUseWVuLDU2LGJydmJhciw1NyxzZWN0LDU4LHVtbCw1OSxjb3B5LDVhLG9yZGYsNWIsbGFxdW8sNWMsbm90LDVkLHNoeSw1ZSxyZWcsNWYsbWFjciw1ZyxkZWcsNWgscGx1c21uLDVpLHN1cDIsNWosc3VwMyw1ayxhY3V0ZSw1bCxtaWNybyw1bSxwYXJhLDVuLG1pZGRvdCw1byxjZWRpbCw1cCxzdXAxLDVxLG9yZG0sNXIscmFxdW8sNXMsZnJhYzE0LDV0LGZyYWMxMiw1dSxmcmFjMzQsNXYsaXF1ZXN0LDYwLEFncmF2ZSw2MSxBYWN1dGUsNjIsQWNpcmMsNjMsQXRpbGRlLDY0LEF1bWwsNjUsQXJpbmcsNjYsQUVsaWcsNjcsQ2NlZGlsLDY4LEVncmF2ZSw2OSxFYWN1dGUsNmEsRWNpcmMsNmIsRXVtbCw2YyxJZ3JhdmUsNmQsSWFjdXRlLDZlLEljaXJjLDZmLEl1bWwsNmcsRVRILDZoLE50aWxkZSw2aSxPZ3JhdmUsNmosT2FjdXRlLDZrLE9jaXJjLDZsLE90aWxkZSw2bSxPdW1sLDZuLHRpbWVzLDZvLE9zbGFzaCw2cCxVZ3JhdmUsNnEsVWFjdXRlLDZyLFVjaXJjLDZzLFV1bWwsNnQsWWFjdXRlLDZ1LFRIT1JOLDZ2LHN6bGlnLDcwLGFncmF2ZSw3MSxhYWN1dGUsNzIsYWNpcmMsNzMsYXRpbGRlLDc0LGF1bWwsNzUsYXJpbmcsNzYsYWVsaWcsNzcsY2NlZGlsLDc4LGVncmF2ZSw3OSxlYWN1dGUsN2EsZWNpcmMsN2IsZXVtbCw3YyxpZ3JhdmUsN2QsaWFjdXRlLDdlLGljaXJjLDdmLGl1bWwsN2csZXRoLDdoLG50aWxkZSw3aSxvZ3JhdmUsN2osb2FjdXRlLDdrLG9jaXJjLDdsLG90aWxkZSw3bSxvdW1sLDduLGRpdmlkZSw3byxvc2xhc2gsN3AsdWdyYXZlLDdxLHVhY3V0ZSw3cix1Y2lyYyw3cyx1dW1sLDd0LHlhY3V0ZSw3dSx0aG9ybiw3dix5dW1sLGNpLGZub2Ysc2gsQWxwaGEsc2ksQmV0YSxzaixHYW1tYSxzayxEZWx0YSxzbCxFcHNpbG9uLHNtLFpldGEsc24sRXRhLHNvLFRoZXRhLHNwLElvdGEsc3EsS2FwcGEsc3IsTGFtYmRhLHNzLE11LHN0LE51LHN1LFhpLHN2LE9taWNyb24sdDAsUGksdDEsUmhvLHQzLFNpZ21hLHQ0LFRhdSx0NSxVcHNpbG9uLHQ2LFBoaSx0NyxDaGksdDgsUHNpLHQ5LE9tZWdhLHRoLGFscGhhLHRpLGJldGEsdGosZ2FtbWEsdGssZGVsdGEsdGwsZXBzaWxvbix0bSx6ZXRhLHRuLGV0YSx0byx0aGV0YSx0cCxpb3RhLHRxLGthcHBhLHRyLGxhbWJkYSx0cyxtdSx0dCxudSx0dSx4aSx0dixvbWljcm9uLHUwLHBpLHUxLHJobyx1MixzaWdtYWYsdTMsc2lnbWEsdTQsdGF1LHU1LHVwc2lsb24sdTYscGhpLHU3LGNoaSx1OCxwc2ksdTksb21lZ2EsdWgsdGhldGFzeW0sdWksdXBzaWgsdW0scGl2LDgxMixidWxsLDgxNixoZWxsaXAsODFpLHByaW1lLDgxaixQcmltZSw4MXUsb2xpbmUsODI0LGZyYXNsLDg4byx3ZWllcnAsODhoLGltYWdlLDg4cyxyZWFsLDg5Mix0cmFkZSw4OWwsYWxlZnN5bSw4Y2csbGFyciw4Y2gsdWFyciw4Y2kscmFyciw4Y2osZGFyciw4Y2ssaGFyciw4ZGwsY3JhcnIsOGVnLGxBcnIsOGVoLHVBcnIsOGVpLHJBcnIsOGVqLGRBcnIsOGVrLGhBcnIsOGcwLGZvcmFsbCw4ZzIscGFydCw4ZzMsZXhpc3QsOGc1LGVtcHR5LDhnNyxuYWJsYSw4ZzgsaXNpbiw4Zzksbm90aW4sOGdiLG5pLDhnZixwcm9kLDhnaCxzdW0sOGdpLG1pbnVzLDhnbixsb3dhc3QsOGdxLHJhZGljLDhndCxwcm9wLDhndSxpbmZpbiw4aDAsYW5nLDhoNyxhbmQsOGg4LG9yLDhoOSxjYXAsOGhhLGN1cCw4aGIsaW50LDhoayx0aGVyZTQsOGhzLHNpbSw4aTUsY29uZyw4aTgsYXN5bXAsOGowLG5lLDhqMSxlcXVpdiw4ajQsbGUsOGo1LGdlLDhrMixzdWIsOGszLHN1cCw4azQsbnN1Yiw4azYsc3ViZSw4azcsc3VwZSw4a2wsb3BsdXMsOGtuLG90aW1lcyw4bDUscGVycCw4bTUsc2RvdCw4bzgsbGNlaWwsOG85LHJjZWlsLDhvYSxsZmxvb3IsOG9iLHJmbG9vciw4cDksbGFuZyw4cGEscmFuZyw5ZWEsbG96LDlqMCxzcGFkZXMsOWozLGNsdWJzLDlqNSxoZWFydHMsOWo2LGRpYW1zLGFpLE9FbGlnLGFqLG9lbGlnLGIwLFNjYXJvbixiMSxzY2Fyb24sYm8sWXVtbCxtNixjaXJjLG1zLHRpbGRlLDgwMixlbnNwLDgwMyxlbXNwLDgwOSx0aGluc3AsODBjLHp3bmosODBkLHp3aiw4MGUsbHJtLDgwZixybG0sODBqLG5kYXNoLDgwayxtZGFzaCw4MG8sbHNxdW8sODBwLHJzcXVvLDgwcSxzYnF1byw4MHMsbGRxdW8sODB0LHJkcXVvLDgwdSxiZHF1byw4MTAsZGFnZ2VyLDgxMSxEYWdnZXIsODFnLHBlcm1pbCw4MXAsbHNhcXVvLDgxcSxyc2FxdW8sODVjLGV1cm8iLDMyKTt2YXIgSHI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5yZXBsYWNlKHQ/SXI6TXIsZnVuY3Rpb24oZSl7cmV0dXJuIGJyW2VdfHxlfSl9LFZyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUucmVwbGFjZSh0P0lyOk1yLGZ1bmN0aW9uKGUpe3JldHVybiAxPGUubGVuZ3RoPyImIyIrKDEwMjQqKGUuY2hhckNvZGVBdCgwKS01NTI5NikrKGUuY2hhckNvZGVBdCgxKS01NjMyMCkrNjU1MzYpKyI7IjpicltlXXx8IiYjIitlLmNoYXJDb2RlQXQoMCkrIjsifSl9LHFyPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbj1ufHx5cixlLnJlcGxhY2UodD9JcjpNcixmdW5jdGlvbihlKXtyZXR1cm4gYnJbZV18fG5bZV18fGV9KX0sJHI9e2VuY29kZVJhdzpIcixlbmNvZGVBbGxSYXc6ZnVuY3Rpb24oZSl7cmV0dXJuKCIiK2UpLnJlcGxhY2UoRnIsZnVuY3Rpb24oZSl7cmV0dXJuIGJyW2VdfHxlfSl9LGVuY29kZU51bWVyaWM6VnIsZW5jb2RlTmFtZWQ6cXIsZ2V0RW5jb2RlRnVuYzpmdW5jdGlvbihlLHQpe3ZhciBuPWpyKHQpfHx5cixyPUxyKGUucmVwbGFjZSgvXCsvZywiLCIpKTtyZXR1cm4gci5uYW1lZCYmci5udW1lcmljP2Z1bmN0aW9uKGUsdCl7cmV0dXJuIGUucmVwbGFjZSh0P0lyOk1yLGZ1bmN0aW9uKGUpe3JldHVybiBicltlXSE9PXVuZGVmaW5lZD9icltlXTpuW2VdIT09dW5kZWZpbmVkP25bZV06MTxlLmxlbmd0aD8iJiMiKygxMDI0KihlLmNoYXJDb2RlQXQoMCktNTUyOTYpKyhlLmNoYXJDb2RlQXQoMSktNTYzMjApKzY1NTM2KSsiOyI6IiYjIitlLmNoYXJDb2RlQXQoMCkrIjsifSl9OnIubmFtZWQ/dD9mdW5jdGlvbihlLHQpe3JldHVybiBxcihlLHQsbil9OnFyOnIubnVtZXJpYz9WcjpIcn0sZGVjb2RlOmZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoVXIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD82NTUzNTwodD0ieCI9PT10LmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpP3BhcnNlSW50KHQuc3Vic3RyKDEpLDE2KTpwYXJzZUludCh0LDEwKSk/KHQtPTY1NTM2LFN0cmluZy5mcm9tQ2hhckNvZGUoNTUyOTYrKHQ+PjEwKSw1NjMyMCsoMTAyMyZ0KSkpOnpyW3RdfHxTdHJpbmcuZnJvbUNoYXJDb2RlKHQpOkNyW2VdfHx5cltlXXx8KG49ZSwocj1OZS5mcm9tVGFnKCJkaXYiKS5kb20oKSkuaW5uZXJIVE1MPW4sci50ZXh0Q29udGVudHx8ci5pbm5lclRleHR8fG4pO3ZhciBuLHJ9KX19LFdyPXt9LEtyPXt9LFhyPWhyLm1ha2VNYXAsWXI9aHIuZWFjaCxHcj1oci5leHRlbmQsSnI9aHIuZXhwbG9kZSxRcj1oci5pbkFycmF5LFpyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuKGU9aHIudHJpbShlKSk/ZS5zcGxpdCh0fHwiICIpOltdfSxlbz1mdW5jdGlvbihlKXt2YXIgdSx0LG4scixvLGkscz17fSxhPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixvLGksYT1mdW5jdGlvbihlLHQpe3ZhciBuLHIsbz17fTtmb3Iobj0wLHI9ZS5sZW5ndGg7bjxyO24rKylvW2Vbbl1dPXR8fHt9O3JldHVybiBvfTtmb3IodD10fHwiIiwic3RyaW5nIj09dHlwZW9mKG49bnx8W10pJiYobj1acihuKSkscj0oZT1acihlKSkubGVuZ3RoO3ItLTspaT17YXR0cmlidXRlczphKG89WnIoW3UsdF0uam9pbigiICIpKSksYXR0cmlidXRlc09yZGVyOm8sY2hpbGRyZW46YShuLEtyKX0sc1tlW3JdXT1pfSxjPWZ1bmN0aW9uKGUsdCl7dmFyIG4scixvLGk7Zm9yKG49KGU9WnIoZSkpLmxlbmd0aCx0PVpyKHQpO24tLTspZm9yKHI9c1tlW25dXSxvPTAsaT10Lmxlbmd0aDtvPGk7bysrKXIuYXR0cmlidXRlc1t0W29dXT17fSxyLmF0dHJpYnV0ZXNPcmRlci5wdXNoKHRbb10pfTtyZXR1cm4gV3JbZV0/V3JbZV06KHU9ImlkIGFjY2Vzc2tleSBjbGFzcyBkaXIgbGFuZyBzdHlsZSB0YWJpbmRleCB0aXRsZSByb2xlIix0PSJhZGRyZXNzIGJsb2NrcXVvdGUgZGl2IGRsIGZpZWxkc2V0IGZvcm0gaDEgaDIgaDMgaDQgaDUgaDYgaHIgbWVudSBvbCBwIHByZSB0YWJsZSB1bCIsbj0iYSBhYmJyIGIgYmRvIGJyIGJ1dHRvbiBjaXRlIGNvZGUgZGVsIGRmbiBlbSBlbWJlZCBpIGlmcmFtZSBpbWcgaW5wdXQgaW5zIGtiZCBsYWJlbCBtYXAgbm9zY3JpcHQgb2JqZWN0IHEgcyBzYW1wIHNjcmlwdCBzZWxlY3Qgc21hbGwgc3BhbiBzdHJvbmcgc3ViIHN1cCB0ZXh0YXJlYSB1IHZhciAjdGV4dCAjY29tbWVudCIsImh0bWw0IiE9PWUmJih1Kz0iIGNvbnRlbnRlZGl0YWJsZSBjb250ZXh0bWVudSBkcmFnZ2FibGUgZHJvcHpvbmUgaGlkZGVuIHNwZWxsY2hlY2sgdHJhbnNsYXRlIix0Kz0iIGFydGljbGUgYXNpZGUgZGV0YWlscyBkaWFsb2cgZmlndXJlIG1haW4gaGVhZGVyIGZvb3RlciBoZ3JvdXAgc2VjdGlvbiBuYXYiLG4rPSIgYXVkaW8gY2FudmFzIGNvbW1hbmQgZGF0YWxpc3QgbWFyayBtZXRlciBvdXRwdXQgcGljdHVyZSBwcm9ncmVzcyB0aW1lIHdiciB2aWRlbyBydWJ5IGJkaSBrZXlnZW4iKSwiaHRtbDUtc3RyaWN0IiE9PWUmJih1Kz0iIHhtbDpsYW5nIixuPVtuLGk9ImFjcm9ueW0gYXBwbGV0IGJhc2Vmb250IGJpZyBmb250IHN0cmlrZSB0dCJdLmpvaW4oIiAiKSxZcihacihpKSxmdW5jdGlvbihlKXthKGUsIiIsbil9KSx0PVt0LG89ImNlbnRlciBkaXIgaXNpbmRleCBub2ZyYW1lcyJdLmpvaW4oIiAiKSxyPVt0LG5dLmpvaW4oIiAiKSxZcihacihvKSxmdW5jdGlvbihlKXthKGUsIiIscil9KSkscj1yfHxbdCxuXS5qb2luKCIgIiksYSgiaHRtbCIsIm1hbmlmZXN0IiwiaGVhZCBib2R5IiksYSgiaGVhZCIsIiIsImJhc2UgY29tbWFuZCBsaW5rIG1ldGEgbm9zY3JpcHQgc2NyaXB0IHN0eWxlIHRpdGxlIiksYSgidGl0bGUgaHIgbm9zY3JpcHQgYnIiKSxhKCJiYXNlIiwiaHJlZiB0YXJnZXQiKSxhKCJsaW5rIiwiaHJlZiByZWwgbWVkaWEgaHJlZmxhbmcgdHlwZSBzaXplcyBocmVmbGFuZyIpLGEoIm1ldGEiLCJuYW1lIGh0dHAtZXF1aXYgY29udGVudCBjaGFyc2V0IiksYSgic3R5bGUiLCJtZWRpYSB0eXBlIHNjb3BlZCIpLGEoInNjcmlwdCIsInNyYyBhc3luYyBkZWZlciB0eXBlIGNoYXJzZXQiKSxhKCJib2R5Iiwib25hZnRlcnByaW50IG9uYmVmb3JlcHJpbnQgb25iZWZvcmV1bmxvYWQgb25ibHVyIG9uZXJyb3Igb25mb2N1cyBvbmhhc2hjaGFuZ2Ugb25sb2FkIG9ubWVzc2FnZSBvbm9mZmxpbmUgb25vbmxpbmUgb25wYWdlaGlkZSBvbnBhZ2VzaG93IG9ucG9wc3RhdGUgb25yZXNpemUgb25zY3JvbGwgb25zdG9yYWdlIG9udW5sb2FkIixyKSxhKCJhZGRyZXNzIGR0IGRkIGRpdiBjYXB0aW9uIiwiIixyKSxhKCJoMSBoMiBoMyBoNCBoNSBoNiBwcmUgcCBhYmJyIGNvZGUgdmFyIHNhbXAga2JkIHN1YiBzdXAgaSBiIHUgYmRvIHNwYW4gbGVnZW5kIGVtIHN0cm9uZyBzbWFsbCBzIGNpdGUgZGZuIiwiIixuKSxhKCJibG9ja3F1b3RlIiwiY2l0ZSIsciksYSgib2wiLCJyZXZlcnNlZCBzdGFydCB0eXBlIiwibGkiKSxhKCJ1bCIsIiIsImxpIiksYSgibGkiLCJ2YWx1ZSIsciksYSgiZGwiLCIiLCJkdCBkZCIpLGEoImEiLCJocmVmIHRhcmdldCByZWwgbWVkaWEgaHJlZmxhbmcgdHlwZSIsbiksYSgicSIsImNpdGUiLG4pLGEoImlucyBkZWwiLCJjaXRlIGRhdGV0aW1lIixyKSxhKCJpbWciLCJzcmMgc2l6ZXMgc3Jjc2V0IGFsdCB1c2VtYXAgaXNtYXAgd2lkdGggaGVpZ2h0IiksYSgiaWZyYW1lIiwic3JjIG5hbWUgd2lkdGggaGVpZ2h0IixyKSxhKCJlbWJlZCIsInNyYyB0eXBlIHdpZHRoIGhlaWdodCIpLGEoIm9iamVjdCIsImRhdGEgdHlwZSB0eXBlbXVzdG1hdGNoIG5hbWUgdXNlbWFwIGZvcm0gd2lkdGggaGVpZ2h0IixbciwicGFyYW0iXS5qb2luKCIgIikpLGEoInBhcmFtIiwibmFtZSB2YWx1ZSIpLGEoIm1hcCIsIm5hbWUiLFtyLCJhcmVhIl0uam9pbigiICIpKSxhKCJhcmVhIiwiYWx0IGNvb3JkcyBzaGFwZSBocmVmIHRhcmdldCByZWwgbWVkaWEgaHJlZmxhbmcgdHlwZSIpLGEoInRhYmxlIiwiYm9yZGVyIiwiY2FwdGlvbiBjb2xncm91cCB0aGVhZCB0Zm9vdCB0Ym9keSB0ciIrKCJodG1sNCI9PT1lPyIgY29sIjoiIikpLGEoImNvbGdyb3VwIiwic3BhbiIsImNvbCIpLGEoImNvbCIsInNwYW4iKSxhKCJ0Ym9keSB0aGVhZCB0Zm9vdCIsIiIsInRyIiksYSgidHIiLCIiLCJ0ZCB0aCIpLGEoInRkIiwiY29sc3BhbiByb3dzcGFuIGhlYWRlcnMiLHIpLGEoInRoIiwiY29sc3BhbiByb3dzcGFuIGhlYWRlcnMgc2NvcGUgYWJiciIsciksYSgiZm9ybSIsImFjY2VwdC1jaGFyc2V0IGFjdGlvbiBhdXRvY29tcGxldGUgZW5jdHlwZSBtZXRob2QgbmFtZSBub3ZhbGlkYXRlIHRhcmdldCIsciksYSgiZmllbGRzZXQiLCJkaXNhYmxlZCBmb3JtIG5hbWUiLFtyLCJsZWdlbmQiXS5qb2luKCIgIikpLGEoImxhYmVsIiwiZm9ybSBmb3IiLG4pLGEoImlucHV0IiwiYWNjZXB0IGFsdCBhdXRvY29tcGxldGUgY2hlY2tlZCBkaXJuYW1lIGRpc2FibGVkIGZvcm0gZm9ybWFjdGlvbiBmb3JtZW5jdHlwZSBmb3JtbWV0aG9kIGZvcm1ub3ZhbGlkYXRlIGZvcm10YXJnZXQgaGVpZ2h0IGxpc3QgbWF4IG1heGxlbmd0aCBtaW4gbXVsdGlwbGUgbmFtZSBwYXR0ZXJuIHJlYWRvbmx5IHJlcXVpcmVkIHNpemUgc3JjIHN0ZXAgdHlwZSB2YWx1ZSB3aWR0aCIpLGEoImJ1dHRvbiIsImRpc2FibGVkIGZvcm0gZm9ybWFjdGlvbiBmb3JtZW5jdHlwZSBmb3JtbWV0aG9kIGZvcm1ub3ZhbGlkYXRlIGZvcm10YXJnZXQgbmFtZSB0eXBlIHZhbHVlIiwiaHRtbDQiPT09ZT9yOm4pLGEoInNlbGVjdCIsImRpc2FibGVkIGZvcm0gbXVsdGlwbGUgbmFtZSByZXF1aXJlZCBzaXplIiwib3B0aW9uIG9wdGdyb3VwIiksYSgib3B0Z3JvdXAiLCJkaXNhYmxlZCBsYWJlbCIsIm9wdGlvbiIpLGEoIm9wdGlvbiIsImRpc2FibGVkIGxhYmVsIHNlbGVjdGVkIHZhbHVlIiksYSgidGV4dGFyZWEiLCJjb2xzIGRpcm5hbWUgZGlzYWJsZWQgZm9ybSBtYXhsZW5ndGggbmFtZSByZWFkb25seSByZXF1aXJlZCByb3dzIHdyYXAiKSxhKCJtZW51IiwidHlwZSBsYWJlbCIsW3IsImxpIl0uam9pbigiICIpKSxhKCJub3NjcmlwdCIsIiIsciksImh0bWw0IiE9PWUmJihhKCJ3YnIiKSxhKCJydWJ5IiwiIixbbiwicnQgcnAiXS5qb2luKCIgIikpLGEoImZpZ2NhcHRpb24iLCIiLHIpLGEoIm1hcmsgcnQgcnAgc3VtbWFyeSBiZGkiLCIiLG4pLGEoImNhbnZhcyIsIndpZHRoIGhlaWdodCIsciksYSgidmlkZW8iLCJzcmMgY3Jvc3NvcmlnaW4gcG9zdGVyIHByZWxvYWQgYXV0b3BsYXkgbWVkaWFncm91cCBsb29wIG11dGVkIGNvbnRyb2xzIHdpZHRoIGhlaWdodCBidWZmZXJlZCIsW3IsInRyYWNrIHNvdXJjZSJdLmpvaW4oIiAiKSksYSgiYXVkaW8iLCJzcmMgY3Jvc3NvcmlnaW4gcHJlbG9hZCBhdXRvcGxheSBtZWRpYWdyb3VwIGxvb3AgbXV0ZWQgY29udHJvbHMgYnVmZmVyZWQgdm9sdW1lIixbciwidHJhY2sgc291cmNlIl0uam9pbigiICIpKSxhKCJwaWN0dXJlIiwiIiwiaW1nIHNvdXJjZSIpLGEoInNvdXJjZSIsInNyYyBzcmNzZXQgdHlwZSBtZWRpYSBzaXplcyIpLGEoInRyYWNrIiwia2luZCBzcmMgc3JjbGFuZyBsYWJlbCBkZWZhdWx0IiksYSgiZGF0YWxpc3QiLCIiLFtuLCJvcHRpb24iXS5qb2luKCIgIikpLGEoImFydGljbGUgc2VjdGlvbiBuYXYgYXNpZGUgbWFpbiBoZWFkZXIgZm9vdGVyIiwiIixyKSxhKCJoZ3JvdXAiLCIiLCJoMSBoMiBoMyBoNCBoNSBoNiIpLGEoImZpZ3VyZSIsIiIsW3IsImZpZ2NhcHRpb24iXS5qb2luKCIgIikpLGEoInRpbWUiLCJkYXRldGltZSIsbiksYSgiZGlhbG9nIiwib3BlbiIsciksYSgiY29tbWFuZCIsInR5cGUgbGFiZWwgaWNvbiBkaXNhYmxlZCBjaGVja2VkIHJhZGlvZ3JvdXAgY29tbWFuZCIpLGEoIm91dHB1dCIsImZvciBmb3JtIG5hbWUiLG4pLGEoInByb2dyZXNzIiwidmFsdWUgbWF4IixuKSxhKCJtZXRlciIsInZhbHVlIG1pbiBtYXggbG93IGhpZ2ggb3B0aW11bSIsbiksYSgiZGV0YWlscyIsIm9wZW4iLFtyLCJzdW1tYXJ5Il0uam9pbigiICIpKSxhKCJrZXlnZW4iLCJhdXRvZm9jdXMgY2hhbGxlbmdlIGRpc2FibGVkIGZvcm0ga2V5dHlwZSBuYW1lIikpLCJodG1sNS1zdHJpY3QiIT09ZSYmKGMoInNjcmlwdCIsImxhbmd1YWdlIHhtbDpzcGFjZSIpLGMoInN0eWxlIiwieG1sOnNwYWNlIiksYygib2JqZWN0IiwiZGVjbGFyZSBjbGFzc2lkIGNvZGUgY29kZWJhc2UgY29kZXR5cGUgYXJjaGl2ZSBzdGFuZGJ5IGFsaWduIGJvcmRlciBoc3BhY2UgdnNwYWNlIiksYygiZW1iZWQiLCJhbGlnbiBuYW1lIGhzcGFjZSB2c3BhY2UiKSxjKCJwYXJhbSIsInZhbHVldHlwZSB0eXBlIiksYygiYSIsImNoYXJzZXQgbmFtZSByZXYgc2hhcGUgY29vcmRzIiksYygiYnIiLCJjbGVhciIpLGMoImFwcGxldCIsImNvZGViYXNlIGFyY2hpdmUgY29kZSBvYmplY3QgYWx0IG5hbWUgd2lkdGggaGVpZ2h0IGFsaWduIGhzcGFjZSB2c3BhY2UiKSxjKCJpbWciLCJuYW1lIGxvbmdkZXNjIGFsaWduIGJvcmRlciBoc3BhY2UgdnNwYWNlIiksYygiaWZyYW1lIiwibG9uZ2Rlc2MgZnJhbWVib3JkZXIgbWFyZ2lud2lkdGggbWFyZ2luaGVpZ2h0IHNjcm9sbGluZyBhbGlnbiIpLGMoImZvbnQgYmFzZWZvbnQiLCJzaXplIGNvbG9yIGZhY2UiKSxjKCJpbnB1dCIsInVzZW1hcCBhbGlnbiIpLGMoInNlbGVjdCIpLGMoInRleHRhcmVhIiksYygiaDEgaDIgaDMgaDQgaDUgaDYgZGl2IHAgbGVnZW5kIGNhcHRpb24iLCJhbGlnbiIpLGMoInVsIiwidHlwZSBjb21wYWN0IiksYygibGkiLCJ0eXBlIiksYygib2wgZGwgbWVudSBkaXIiLCJjb21wYWN0IiksYygicHJlIiwid2lkdGggeG1sOnNwYWNlIiksYygiaHIiLCJhbGlnbiBub3NoYWRlIHNpemUgd2lkdGgiKSxjKCJpc2luZGV4IiwicHJvbXB0IiksYygidGFibGUiLCJzdW1tYXJ5IHdpZHRoIGZyYW1lIHJ1bGVzIGNlbGxzcGFjaW5nIGNlbGxwYWRkaW5nIGFsaWduIGJnY29sb3IiKSxjKCJjb2wiLCJ3aWR0aCBhbGlnbiBjaGFyIGNoYXJvZmYgdmFsaWduIiksYygiY29sZ3JvdXAiLCJ3aWR0aCBhbGlnbiBjaGFyIGNoYXJvZmYgdmFsaWduIiksYygidGhlYWQiLCJhbGlnbiBjaGFyIGNoYXJvZmYgdmFsaWduIiksYygidHIiLCJhbGlnbiBjaGFyIGNoYXJvZmYgdmFsaWduIGJnY29sb3IiKSxjKCJ0aCIsImF4aXMgYWxpZ24gY2hhciBjaGFyb2ZmIHZhbGlnbiBub3dyYXAgYmdjb2xvciB3aWR0aCBoZWlnaHQiKSxjKCJmb3JtIiwiYWNjZXB0IiksYygidGQiLCJhYmJyIGF4aXMgc2NvcGUgYWxpZ24gY2hhciBjaGFyb2ZmIHZhbGlnbiBub3dyYXAgYmdjb2xvciB3aWR0aCBoZWlnaHQiKSxjKCJ0Zm9vdCIsImFsaWduIGNoYXIgY2hhcm9mZiB2YWxpZ24iKSxjKCJ0Ym9keSIsImFsaWduIGNoYXIgY2hhcm9mZiB2YWxpZ24iKSxjKCJhcmVhIiwibm9ocmVmIiksYygiYm9keSIsImJhY2tncm91bmQgYmdjb2xvciB0ZXh0IGxpbmsgdmxpbmsgYWxpbmsiKSksImh0bWw0IiE9PWUmJihjKCJpbnB1dCBidXR0b24gc2VsZWN0IHRleHRhcmVhIiwiYXV0b2ZvY3VzIiksYygiaW5wdXQgdGV4dGFyZWEiLCJwbGFjZWhvbGRlciIpLGMoImEiLCJkb3dubG9hZCIpLGMoImxpbmsgc2NyaXB0IGltZyIsImNyb3Nzb3JpZ2luIiksYygiaW1nIiwibG9hZGluZyIpLGMoImlmcmFtZSIsInNhbmRib3ggc2VhbWxlc3MgYWxsb3dmdWxsc2NyZWVuIGxvYWRpbmciKSksWXIoWnIoImEgZm9ybSBtZXRlciBwcm9ncmVzcyBkZm4iKSxmdW5jdGlvbihlKXtzW2VdJiZkZWxldGUgc1tlXS5jaGlsZHJlbltlXX0pLGRlbGV0ZSBzLmNhcHRpb24uY2hpbGRyZW4udGFibGUsZGVsZXRlIHMuc2NyaXB0LFdyW2VdPXMpfSx0bz1mdW5jdGlvbihlLG4pe3ZhciByO3JldHVybiBlJiYocj17fSwic3RyaW5nIj09dHlwZW9mIGUmJihlPXsiKiI6ZX0pLFlyKGUsZnVuY3Rpb24oZSx0KXtyW3RdPXJbdC50b1VwcGVyQ2FzZSgpXT0oIm1hcCI9PT1uP1hyOkpyKShlLC9bLCBdLyl9KSkscn07ZnVuY3Rpb24gbm8oaSl7dmFyIGUsdCxuLHIsbyxhLHUscyxjLGwsZixkLG0seD17fSxwPXt9LFM9W10sZz17fSxoPXt9LHY9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWlbZV07cmV0dXJuIHI/cj1YcihyLC9bLCBdLyxYcihyLnRvVXBwZXJDYXNlKCksL1ssIF0vKSk6KHI9V3JbZV0pfHwocj1Ycih0LCIgIixYcih0LnRvVXBwZXJDYXNlKCksIiAiKSkscj1HcihyLG4pLFdyW2VdPXIpLHJ9O249ZW8oKGk9aXx8e30pLnNjaGVtYSksITE9PT1pLnZlcmlmeV9odG1sJiYoaS52YWxpZF9lbGVtZW50cz0iKlsqXSIpLGU9dG8oaS52YWxpZF9zdHlsZXMpLHQ9dG8oaS5pbnZhbGlkX3N0eWxlcywibWFwIikscz10byhpLnZhbGlkX2NsYXNzZXMsIm1hcCIpLHI9digid2hpdGVzcGFjZV9lbGVtZW50cyIsInByZSBzY3JpcHQgbm9zY3JpcHQgc3R5bGUgdGV4dGFyZWEgdmlkZW8gYXVkaW8gaWZyYW1lIG9iamVjdCBjb2RlIiksbz12KCJzZWxmX2Nsb3NpbmdfZWxlbWVudHMiLCJjb2xncm91cCBkZCBkdCBsaSBvcHRpb24gcCB0ZCB0Zm9vdCB0aCB0aGVhZCB0ciIpLGE9digic2hvcnRfZW5kZWRfZWxlbWVudHMiLCJhcmVhIGJhc2UgYmFzZWZvbnQgYnIgY29sIGZyYW1lIGhyIGltZyBpbnB1dCBpc2luZGV4IGxpbmsgbWV0YSBwYXJhbSBlbWJlZCBzb3VyY2Ugd2JyIHRyYWNrIiksdT12KCJib29sZWFuX2F0dHJpYnV0ZXMiLCJjaGVja2VkIGNvbXBhY3QgZGVjbGFyZSBkZWZlciBkaXNhYmxlZCBpc21hcCBtdWx0aXBsZSBub2hyZWYgbm9yZXNpemUgbm9zaGFkZSBub3dyYXAgcmVhZG9ubHkgc2VsZWN0ZWQgYXV0b3BsYXkgbG9vcCBjb250cm9scyIpLGw9digibm9uX2VtcHR5X2VsZW1lbnRzIiwidGQgdGggaWZyYW1lIHZpZGVvIGF1ZGlvIG9iamVjdCBzY3JpcHQgcHJlIGNvZGUiLGEpLGY9digibW92ZV9jYXJldF9iZWZvcmVfb25fZW50ZXJfZWxlbWVudHMiLCJ0YWJsZSIsbCksZD12KCJ0ZXh0X2Jsb2NrX2VsZW1lbnRzIiwiaDEgaDIgaDMgaDQgaDUgaDYgcCBkaXYgYWRkcmVzcyBwcmUgZm9ybSBibG9ja3F1b3RlIGNlbnRlciBkaXIgZmllbGRzZXQgaGVhZGVyIGZvb3RlciBhcnRpY2xlIHNlY3Rpb24gaGdyb3VwIGFzaWRlIG1haW4gbmF2IGZpZ3VyZSIpLGM9digiYmxvY2tfZWxlbWVudHMiLCJociB0YWJsZSB0Ym9keSB0aGVhZCB0Zm9vdCB0aCB0ciB0ZCBsaSBvbCB1bCBjYXB0aW9uIGRsIGR0IGRkIG5vc2NyaXB0IG1lbnUgaXNpbmRleCBvcHRpb24gZGF0YWxpc3Qgc2VsZWN0IG9wdGdyb3VwIGZpZ2NhcHRpb24gZGV0YWlscyBzdW1tYXJ5IixkKSxtPXYoInRleHRfaW5saW5lX2VsZW1lbnRzIiwic3BhbiBzdHJvbmcgYiBlbSBpIGZvbnQgc3RyaWtlIHUgdmFyIGNpdGUgZGZuIGNvZGUgbWFyayBxIHN1cCBzdWIgc2FtcCIpLFlyKChpLnNwZWNpYWx8fCJzY3JpcHQgbm9zY3JpcHQgbm9mcmFtZXMgbm9lbWJlZCB0aXRsZSBzdHlsZSB0ZXh0YXJlYSB4bXAiKS5zcGxpdCgiICIpLGZ1bmN0aW9uKGUpe2hbZV09bmV3IFJlZ0V4cCgiPC8iK2UrIltePl0qPiIsImdpIil9KTt2YXIgTj1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IFJlZ0V4cCgiXiIrZS5yZXBsYWNlKC8oWz8rKl0pL2csIi4kMSIpKyIkIil9LHk9ZnVuY3Rpb24oZSl7dmFyIHQsbixyLG8saSxhLHUscyxjLGwsZixkLG0scCxnLGgsdix5LGI9L14oWyMrXC1dKT8oW15cWyFcL10rKSg/OlwvKFteXFshXSspKT8oPzooIT8pXFsoW15cXV0rKVxdKT8kLyxDPS9eKFshXC1dKT8oXHcrW1xcOl06XHcrfFtePTo8XSspPyg/OihbPTo8XSkoLiopKT8kLyx3PS9bKj8rXS87aWYoZSlmb3IoZT1acihlLCIsIikseFsiQCJdJiYoaD14WyJAIl0uYXR0cmlidXRlcyx2PXhbIkAiXS5hdHRyaWJ1dGVzT3JkZXIpLHQ9MCxuPWUubGVuZ3RoO3Q8bjt0KyspaWYoaT1iLmV4ZWMoZVt0XSkpe2lmKHA9aVsxXSxjPWlbMl0sZz1pWzNdLHM9aVs1XSxhPXthdHRyaWJ1dGVzOmQ9e30sYXR0cmlidXRlc09yZGVyOm09W119LCIjIj09PXAmJihhLnBhZGRFbXB0eT0hMCksIi0iPT09cCYmKGEucmVtb3ZlRW1wdHk9ITApLCIhIj09PWlbNF0mJihhLnJlbW92ZUVtcHR5QXR0cnM9ITApLGgmJihvZShoLGZ1bmN0aW9uKGUsdCl7ZFt0XT1lfSksbS5wdXNoLmFwcGx5KG0sdikpLHMpZm9yKHI9MCxvPShzPVpyKHMsInwiKSkubGVuZ3RoO3I8bztyKyspaWYoaT1DLmV4ZWMoc1tyXSkpe2lmKHU9e30sZj1pWzFdLGw9aVsyXS5yZXBsYWNlKC9bXFw6XTovZywiOiIpLHA9aVszXSx5PWlbNF0sIiEiPT09ZiYmKGEuYXR0cmlidXRlc1JlcXVpcmVkPWEuYXR0cmlidXRlc1JlcXVpcmVkfHxbXSxhLmF0dHJpYnV0ZXNSZXF1aXJlZC5wdXNoKGwpLHUucmVxdWlyZWQ9ITApLCItIj09PWYpe2RlbGV0ZSBkW2xdLG0uc3BsaWNlKFFyKG0sbCksMSk7Y29udGludWV9cCYmKCI9Ij09PXAmJihhLmF0dHJpYnV0ZXNEZWZhdWx0PWEuYXR0cmlidXRlc0RlZmF1bHR8fFtdLGEuYXR0cmlidXRlc0RlZmF1bHQucHVzaCh7bmFtZTpsLHZhbHVlOnl9KSx1LmRlZmF1bHRWYWx1ZT15KSwiOiI9PT1wJiYoYS5hdHRyaWJ1dGVzRm9yY2VkPWEuYXR0cmlidXRlc0ZvcmNlZHx8W10sYS5hdHRyaWJ1dGVzRm9yY2VkLnB1c2goe25hbWU6bCx2YWx1ZTp5fSksdS5mb3JjZWRWYWx1ZT15KSwiPCI9PT1wJiYodS52YWxpZFZhbHVlcz1Ycih5LCI/IikpKSx3LnRlc3QobCk/KGEuYXR0cmlidXRlUGF0dGVybnM9YS5hdHRyaWJ1dGVQYXR0ZXJuc3x8W10sdS5wYXR0ZXJuPU4obCksYS5hdHRyaWJ1dGVQYXR0ZXJucy5wdXNoKHUpKTooZFtsXXx8bS5wdXNoKGwpLGRbbF09dSl9aHx8IkAiIT09Y3x8KGg9ZCx2PW0pLGcmJihhLm91dHB1dE5hbWU9Yyx4W2ddPWEpLHcudGVzdChjKT8oYS5wYXR0ZXJuPU4oYyksUy5wdXNoKGEpKTp4W2NdPWF9fSxiPWZ1bmN0aW9uKGUpe3g9e30sUz1bXSx5KGUpLFlyKG4sZnVuY3Rpb24oZSx0KXtwW3RdPWUuY2hpbGRyZW59KX0sQz1mdW5jdGlvbihlKXt2YXIgYT0vXih+KT8oLispJC87ZSYmKFdyLnRleHRfYmxvY2tfZWxlbWVudHM9V3IuYmxvY2tfZWxlbWVudHM9bnVsbCxZcihacihlLCIsIiksZnVuY3Rpb24oZSl7dmFyIHQ9YS5leGVjKGUpLG49In4iPT09dFsxXSxyPW4/InNwYW4iOiJkaXYiLG89dFsyXTtpZihwW29dPXBbcl0sZ1tvXT1yLG58fChjW28udG9VcHBlckNhc2UoKV09e30sY1tvXT17fSksIXhbb10pe3ZhciBpPXhbcl07ZGVsZXRlKGk9R3Ioe30saSkpLnJlbW92ZUVtcHR5QXR0cnMsZGVsZXRlIGkucmVtb3ZlRW1wdHkseFtvXT1pfVlyKHAsZnVuY3Rpb24oZSx0KXtlW3JdJiYocFt0XT1lPUdyKHt9LHBbdF0pLGVbb109ZVtyXSl9KX0pKX0sdz1mdW5jdGlvbihlKXt2YXIgbz0vXihbK1wtXT8pKFx3KylcWyhbXlxdXSspXF0kLztXcltpLnNjaGVtYV09bnVsbCxlJiZZcihacihlLCIsIiksZnVuY3Rpb24oZSl7dmFyIHQsbixyPW8uZXhlYyhlKTtyJiYobj1yWzFdLHQ9bj9wW3JbMl1dOnBbclsyXV09eyIjY29tbWVudCI6e319LHQ9cFtyWzJdXSxZcihacihyWzNdLCJ8IiksZnVuY3Rpb24oZSl7Ii0iPT09bj9kZWxldGUgdFtlXTp0W2VdPXt9fSkpfSl9LEU9ZnVuY3Rpb24oZSl7dmFyIHQsbj14W2VdO2lmKG4pcmV0dXJuIG47Zm9yKHQ9Uy5sZW5ndGg7dC0tOylpZigobj1TW3RdKS5wYXR0ZXJuLnRlc3QoZSkpcmV0dXJuIG59O2kudmFsaWRfZWxlbWVudHM/YihpLnZhbGlkX2VsZW1lbnRzKTooWXIobixmdW5jdGlvbihlLHQpe3hbdF09e2F0dHJpYnV0ZXM6ZS5hdHRyaWJ1dGVzLGF0dHJpYnV0ZXNPcmRlcjplLmF0dHJpYnV0ZXNPcmRlcn0scFt0XT1lLmNoaWxkcmVufSksImh0bWw1IiE9PWkuc2NoZW1hJiZZcihacigic3Ryb25nL2IgZW0vaSIpLGZ1bmN0aW9uKGUpe2U9WnIoZSwiLyIpLHhbZVsxXV0ub3V0cHV0TmFtZT1lWzBdfSksWXIoWnIoIm9sIHVsIHN1YiBzdXAgYmxvY2txdW90ZSBzcGFuIGZvbnQgYSB0YWJsZSB0Ym9keSB0ciBzdHJvbmcgZW0gYiBpIiksZnVuY3Rpb24oZSl7eFtlXSYmKHhbZV0ucmVtb3ZlRW1wdHk9ITApfSksWXIoWnIoInAgaDEgaDIgaDMgaDQgaDUgaDYgdGggdGQgcHJlIGRpdiBhZGRyZXNzIGNhcHRpb24gbGkiKSxmdW5jdGlvbihlKXt4W2VdLnBhZGRFbXB0eT0hMH0pLFlyKFpyKCJzcGFuIiksZnVuY3Rpb24oZSl7eFtlXS5yZW1vdmVFbXB0eUF0dHJzPSEwfSkpLEMoaS5jdXN0b21fZWxlbWVudHMpLHcoaS52YWxpZF9jaGlsZHJlbikseShpLmV4dGVuZGVkX3ZhbGlkX2VsZW1lbnRzKSx3KCIrb2xbdWx8b2xdLCt1bFt1bHxvbF0iKSxZcih7ZGQ6ImRsIixkdDoiZGwiLGxpOiJ1bCBvbCIsdGQ6InRyIix0aDoidHIiLHRyOiJ0Ym9keSB0aGVhZCB0Zm9vdCIsdGJvZHk6InRhYmxlIix0aGVhZDoidGFibGUiLHRmb290OiJ0YWJsZSIsbGVnZW5kOiJmaWVsZHNldCIsYXJlYToibWFwIixwYXJhbToidmlkZW8gYXVkaW8gb2JqZWN0In0sZnVuY3Rpb24oZSx0KXt4W3RdJiYoeFt0XS5wYXJlbnRzUmVxdWlyZWQ9WnIoZSkpfSksaS5pbnZhbGlkX2VsZW1lbnRzJiZZcihKcihpLmludmFsaWRfZWxlbWVudHMpLGZ1bmN0aW9uKGUpe3hbZV0mJmRlbGV0ZSB4W2VdfSksRSgic3BhbiIpfHx5KCJzcGFuWyFkYXRhLW1jZS10eXBlfCpdIik7cmV0dXJue2NoaWxkcmVuOnAsZWxlbWVudHM6eCxnZXRWYWxpZFN0eWxlczpmdW5jdGlvbigpe3JldHVybiBlfSxnZXRWYWxpZENsYXNzZXM6ZnVuY3Rpb24oKXtyZXR1cm4gc30sZ2V0QmxvY2tFbGVtZW50czpmdW5jdGlvbigpe3JldHVybiBjfSxnZXRJbnZhbGlkU3R5bGVzOmZ1bmN0aW9uKCl7cmV0dXJuIHR9LGdldFNob3J0RW5kZWRFbGVtZW50czpmdW5jdGlvbigpe3JldHVybiBhfSxnZXRUZXh0QmxvY2tFbGVtZW50czpmdW5jdGlvbigpe3JldHVybiBkfSxnZXRUZXh0SW5saW5lRWxlbWVudHM6ZnVuY3Rpb24oKXtyZXR1cm4gbX0sZ2V0Qm9vbEF0dHJzOmZ1bmN0aW9uKCl7cmV0dXJuIHV9LGdldEVsZW1lbnRSdWxlOkUsZ2V0U2VsZkNsb3NpbmdFbGVtZW50czpmdW5jdGlvbigpe3JldHVybiBvfSxnZXROb25FbXB0eUVsZW1lbnRzOmZ1bmN0aW9uKCl7cmV0dXJuIGx9LGdldE1vdmVDYXJldEJlZm9yZU9uRW50ZXJFbGVtZW50czpmdW5jdGlvbigpe3JldHVybiBmfSxnZXRXaGl0ZVNwYWNlRWxlbWVudHM6ZnVuY3Rpb24oKXtyZXR1cm4gcn0sZ2V0U3BlY2lhbEVsZW1lbnRzOmZ1bmN0aW9uKCl7cmV0dXJuIGh9LGlzVmFsaWRDaGlsZDpmdW5jdGlvbihlLHQpe3ZhciBuPXBbZS50b0xvd2VyQ2FzZSgpXTtyZXR1cm4hKCFufHwhblt0LnRvTG93ZXJDYXNlKCldKX0saXNWYWxpZDpmdW5jdGlvbihlLHQpe3ZhciBuLHIsbz1FKGUpO2lmKG8pe2lmKCF0KXJldHVybiEwO2lmKG8uYXR0cmlidXRlc1t0XSlyZXR1cm4hMDtpZihuPW8uYXR0cmlidXRlUGF0dGVybnMpZm9yKHI9bi5sZW5ndGg7ci0tOylpZihuW3JdLnBhdHRlcm4udGVzdChlKSlyZXR1cm4hMH1yZXR1cm4hMX0sZ2V0Q3VzdG9tRWxlbWVudHM6ZnVuY3Rpb24oKXtyZXR1cm4gZ30sYWRkVmFsaWRFbGVtZW50czp5LHNldFZhbGlkRWxlbWVudHM6YixhZGRDdXN0b21FbGVtZW50czpDLGFkZFZhbGlkQ2hpbGRyZW46d319dmFyIHJvPSJcdWZlZmYiLG9vPSJceGEwIixpbz1mdW5jdGlvbihlLHQsbixyKXt2YXIgbz1mdW5jdGlvbihlKXtyZXR1cm4gMTwoZT1wYXJzZUludChlLDEwKS50b1N0cmluZygxNikpLmxlbmd0aD9lOiIwIitlfTtyZXR1cm4iIyIrbyh0KStvKG4pK28ocil9LGFvPWZ1bmN0aW9uKGIsZSl7dmFyIEMsdCxzLGMsdz0vcmdiXHMqXChccyooWzAtOV0rKVxzKixccyooWzAtOV0rKVxzKixccyooWzAtOV0rKVxzKlwpL2dpLHg9Lyg/OnVybCg/Oig/OlwoXHMqXCIoW15cIl0rKVwiXHMqXCkpfCg/OlwoXHMqXCcoW15cJ10rKVwnXHMqXCkpfCg/OlwoXHMqKFteKVxzXSspXHMqXCkpKSl8KD86XCcoW15cJ10rKVwnKXwoPzpcIihbXlwiXSspXCIpL2dpLFM9L1xzKihbXjpdKyk6XHMqKFteO10rKTs/L2csTj0vXHMrJC8sRT17fSxrPXJvO2ZvcihiPWJ8fHt9LGUmJihzPWUuZ2V0VmFsaWRTdHlsZXMoKSxjPWUuZ2V0SW52YWxpZFN0eWxlcygpKSx0PSgiXFxcIiBcXCcgXFw7IFxcOiA7IDogIitrKS5zcGxpdCgiICIpLEM9MDtDPHQubGVuZ3RoO0MrKylFW3RbQ11dPWsrQyxFW2srQ109dFtDXTtyZXR1cm57dG9IZXg6ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSh3LGlvKX0scGFyc2U6ZnVuY3Rpb24oZSl7dmFyIHQsbixyLG8saSxhLHUscyxjPXt9LGw9Yi51cmxfY29udmVydGVyLGY9Yi51cmxfY29udmVydGVyX3Njb3BlfHx0aGlzLGQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLG8saSxhO2lmKChyPWNbZSsiLXRvcCIrdF0pJiYobz1jW2UrIi1yaWdodCIrdF0pJiYoaT1jW2UrIi1ib3R0b20iK3RdKSYmKGE9Y1tlKyItbGVmdCIrdF0pKXt2YXIgdT1bcixvLGksYV07Zm9yKEM9dS5sZW5ndGgtMTtDLS0mJnVbQ109PT11W0MrMV07KTstMTxDJiZufHwoY1tlK3RdPS0xPT09Qz91WzBdOnUuam9pbigiICIpLGRlbGV0ZSBjW2UrIi10b3AiK3RdLGRlbGV0ZSBjW2UrIi1yaWdodCIrdF0sZGVsZXRlIGNbZSsiLWJvdHRvbSIrdF0sZGVsZXRlIGNbZSsiLWxlZnQiK3RdKX19LG09ZnVuY3Rpb24oZSl7dmFyIHQsbj1jW2VdO2lmKG4pe2Zvcih0PShuPW4uc3BsaXQoIiAiKSkubGVuZ3RoO3QtLTspaWYoblt0XSE9PW5bMF0pcmV0dXJuITE7cmV0dXJuIGNbZV09blswXSwhMH19LHA9ZnVuY3Rpb24oZSl7cmV0dXJuIG89ITAsRVtlXX0sZz1mdW5jdGlvbihlLHQpe3JldHVybiBvJiYoZT1lLnJlcGxhY2UoL1x1RkVGRlswLTldL2csZnVuY3Rpb24oZSl7cmV0dXJuIEVbZV19KSksdHx8KGU9ZS5yZXBsYWNlKC9cXChbXCdcIjs6XSkvZywiJDEiKSksZX0saD1mdW5jdGlvbihlKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChlLnNsaWNlKDEpLDE2KSl9LHY9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvXFxbMC05YS1mXSsvZ2ksaCl9LHk9ZnVuY3Rpb24oZSx0LG4scixvLGkpe2lmKG89b3x8aSlyZXR1cm4iJyIrKG89ZyhvKSkucmVwbGFjZSgvXCcvZywiXFwnIikrIiciO2lmKHQ9Zyh0fHxufHxyKSwhYi5hbGxvd19zY3JpcHRfdXJscyl7dmFyIGE9dC5yZXBsYWNlKC9bXHNcclxuXSsvZywiIik7aWYoLyhqYXZhfHZiKXNjcmlwdDovaS50ZXN0KGEpKXJldHVybiIiO2lmKCFiLmFsbG93X3N2Z19kYXRhX3VybHMmJi9eZGF0YTppbWFnZVwvc3ZnL2kudGVzdChhKSlyZXR1cm4iIn1yZXR1cm4gbCYmKHQ9bC5jYWxsKGYsdCwic3R5bGUiKSksInVybCgnIit0LnJlcGxhY2UoL1wnL2csIlxcJyIpKyInKSJ9O2lmKGUpe2ZvcihlPShlPWUucmVwbGFjZSgvW1x1MDAwMC1cdTAwMUZdL2csIiIpKS5yZXBsYWNlKC9cXFtcIlwnOzpcdUZFRkZdL2cscCkucmVwbGFjZSgvXCJbXlwiXStcInxcJ1teXCddK1wnL2csZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvWzs6XS9nLHApfSk7dD1TLmV4ZWMoZSk7KWlmKFMubGFzdEluZGV4PXQuaW5kZXgrdFswXS5sZW5ndGgsbj10WzFdLnJlcGxhY2UoTiwiIikudG9Mb3dlckNhc2UoKSxyPXRbMl0ucmVwbGFjZShOLCIiKSxuJiZyKXtpZihuPXYobikscj12KHIpLC0xIT09bi5pbmRleE9mKGspfHwtMSE9PW4uaW5kZXhPZignIicpKWNvbnRpbnVlO2lmKCFiLmFsbG93X3NjcmlwdF91cmxzJiYoImJlaGF2aW9yIj09PW58fC9leHByZXNzaW9uXHMqXCh8XC9cKnxcKlwvLy50ZXN0KHIpKSljb250aW51ZTsiZm9udC13ZWlnaHQiPT09biYmIjcwMCI9PT1yP3I9ImJvbGQiOiJjb2xvciIhPT1uJiYiYmFja2dyb3VuZC1jb2xvciIhPT1ufHwocj1yLnRvTG93ZXJDYXNlKCkpLHI9KHI9ci5yZXBsYWNlKHcsaW8pKS5yZXBsYWNlKHgseSksY1tuXT1vP2cociwhMCk6cn1kKCJib3JkZXIiLCIiLCEwKSxkKCJib3JkZXIiLCItd2lkdGgiKSxkKCJib3JkZXIiLCItY29sb3IiKSxkKCJib3JkZXIiLCItc3R5bGUiKSxkKCJwYWRkaW5nIiwiIiksZCgibWFyZ2luIiwiIiksaT0iYm9yZGVyIix1PSJib3JkZXItc3R5bGUiLHM9ImJvcmRlci1jb2xvciIsbShhPSJib3JkZXItd2lkdGgiKSYmbSh1KSYmbShzKSYmKGNbaV09Y1thXSsiICIrY1t1XSsiICIrY1tzXSxkZWxldGUgY1thXSxkZWxldGUgY1t1XSxkZWxldGUgY1tzXSksIm1lZGl1bSBub25lIj09PWMuYm9yZGVyJiZkZWxldGUgYy5ib3JkZXIsIm5vbmUiPT09Y1siYm9yZGVyLWltYWdlIl0mJmRlbGV0ZSBjWyJib3JkZXItaW1hZ2UiXX1yZXR1cm4gY30sc2VyaWFsaXplOmZ1bmN0aW9uKGksYSl7dmFyIHU9IiIsZT1mdW5jdGlvbihlKXt2YXIgdCxuLHIsbztpZih0PXNbZV0pZm9yKG49MCxyPXQubGVuZ3RoO248cjtuKyspZT10W25dLChvPWlbZV0pJiYodSs9KDA8dS5sZW5ndGg/IiAiOiIiKStlKyI6ICIrbysiOyIpfTtyZXR1cm4gYSYmcz8oZSgiKiIpLGUoYSkpOm9lKGksZnVuY3Rpb24oZSx0KXt2YXIgbixyLG87IWV8fGMmJihuPXQscj1hLChvPWNbIioiXSkmJm9bbl18fChvPWNbcl0pJiZvW25dKXx8KHUrPSgwPHUubGVuZ3RoPyIgIjoiIikrdCsiOiAiK2UrIjsiKX0pLHV9fX0sdW89L14oPzptb3VzZXxjb250ZXh0bWVudSl8Y2xpY2svLHNvPXtrZXlMb2NhdGlvbjoxLGxheWVyWDoxLGxheWVyWToxLHJldHVyblZhbHVlOjEsd2Via2l0TW92ZW1lbnRYOjEsd2Via2l0TW92ZW1lbnRZOjEsa2V5SWRlbnRpZmllcjoxLG1velByZXNzdXJlOjF9LGNvPWZ1bmN0aW9uKCl7cmV0dXJuITF9LGxvPWZ1bmN0aW9uKCl7cmV0dXJuITB9LGZvPWZ1bmN0aW9uKGUsdCxuLHIpe2UuYWRkRXZlbnRMaXN0ZW5lcj9lLmFkZEV2ZW50TGlzdGVuZXIodCxuLHJ8fCExKTplLmF0dGFjaEV2ZW50JiZlLmF0dGFjaEV2ZW50KCJvbiIrdCxuKX0sbW89ZnVuY3Rpb24oZSx0LG4scil7ZS5yZW1vdmVFdmVudExpc3RlbmVyP2UucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LG4scnx8ITEpOmUuZGV0YWNoRXZlbnQmJmUuZGV0YWNoRXZlbnQoIm9uIit0LG4pfSxwbz1mdW5jdGlvbihlLHQpe3ZhciBuLHIsbz10fHx7fTtmb3IobiBpbiBlKXNvW25dfHwob1tuXT1lW25dKTtpZihvLnRhcmdldHx8KG8udGFyZ2V0PW8uc3JjRWxlbWVudHx8Vi5kb2N1bWVudCkscnIuZXhwZXJpbWVudGFsU2hhZG93RG9tJiYoby50YXJnZXQ9ZnVuY3Rpb24oZSx0KXtpZihlLmNvbXBvc2VkUGF0aCl7dmFyIG49ZS5jb21wb3NlZFBhdGgoKTtpZihuJiYwPG4ubGVuZ3RoKXJldHVybiBuWzBdfXJldHVybiB0fShlLG8udGFyZ2V0KSksZSYmdW8udGVzdChlLnR5cGUpJiZlLnBhZ2VYPT09dW5kZWZpbmVkJiZlLmNsaWVudFghPT11bmRlZmluZWQpe3ZhciBpPW8udGFyZ2V0Lm93bmVyRG9jdW1lbnR8fFYuZG9jdW1lbnQsYT1pLmRvY3VtZW50RWxlbWVudCx1PWkuYm9keTtvLnBhZ2VYPWUuY2xpZW50WCsoYSYmYS5zY3JvbGxMZWZ0fHx1JiZ1LnNjcm9sbExlZnR8fDApLShhJiZhLmNsaWVudExlZnR8fHUmJnUuY2xpZW50TGVmdHx8MCksby5wYWdlWT1lLmNsaWVudFkrKGEmJmEuc2Nyb2xsVG9wfHx1JiZ1LnNjcm9sbFRvcHx8MCktKGEmJmEuY2xpZW50VG9wfHx1JiZ1LmNsaWVudFRvcHx8MCl9cmV0dXJuIG8ucHJldmVudERlZmF1bHQ9ZnVuY3Rpb24oKXtvLmlzRGVmYXVsdFByZXZlbnRlZD1sbyxlJiYoZS5wcmV2ZW50RGVmYXVsdD9lLnByZXZlbnREZWZhdWx0KCk6ZS5yZXR1cm5WYWx1ZT0hMSl9LG8uc3RvcFByb3BhZ2F0aW9uPWZ1bmN0aW9uKCl7by5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1sbyxlJiYoZS5zdG9wUHJvcGFnYXRpb24/ZS5zdG9wUHJvcGFnYXRpb24oKTplLmNhbmNlbEJ1YmJsZT0hMCl9LCEoby5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb249ZnVuY3Rpb24oKXtvLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkPWxvLG8uc3RvcFByb3BhZ2F0aW9uKCl9KT09KChyPW8pLmlzRGVmYXVsdFByZXZlbnRlZD09PWxvfHxyLmlzRGVmYXVsdFByZXZlbnRlZD09PWNvKSYmKG8uaXNEZWZhdWx0UHJldmVudGVkPWNvLG8uaXNQcm9wYWdhdGlvblN0b3BwZWQ9Y28sby5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZD1jbyksInVuZGVmaW5lZCI9PXR5cGVvZiBvLm1ldGFLZXkmJihvLm1ldGFLZXk9ITEpLG99LGdvPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLmRvY3VtZW50LG89e3R5cGU6InJlYWR5In07aWYobi5kb21Mb2FkZWQpdChvKTtlbHNle3ZhciBpPWZ1bmN0aW9uKCl7bW8oZSwiRE9NQ29udGVudExvYWRlZCIsaSksbW8oZSwibG9hZCIsaSksbi5kb21Mb2FkZWR8fChuLmRvbUxvYWRlZD0hMCx0KG8pKX07ImNvbXBsZXRlIj09PXIucmVhZHlTdGF0ZXx8ImludGVyYWN0aXZlIj09PXIucmVhZHlTdGF0ZSYmci5ib2R5P2koKTpmbyhlLCJET01Db250ZW50TG9hZGVkIixpKSxmbyhlLCJsb2FkIixpKX19LGhvPSh2by5wcm90b3R5cGUuYmluZD1mdW5jdGlvbihlLHQsbixyKXt2YXIgbyxpLGEsdSxzLGMsbCxmPXRoaXMsZD1WLndpbmRvdyxtPWZ1bmN0aW9uKGUpe2YuZXhlY3V0ZUhhbmRsZXJzKHBvKGV8fGQuZXZlbnQpLG8pfTtpZihlJiYzIT09ZS5ub2RlVHlwZSYmOCE9PWUubm9kZVR5cGUpe2VbZi5leHBhbmRvXT9vPWVbZi5leHBhbmRvXToobz1mLmNvdW50KyssZVtmLmV4cGFuZG9dPW8sZi5ldmVudHNbb109e30pLHI9cnx8ZTt2YXIgcD10LnNwbGl0KCIgIik7Zm9yKGE9cC5sZW5ndGg7YS0tOyljPW0scz1sPSExLCJET01Db250ZW50TG9hZGVkIj09PSh1PXBbYV0pJiYodT0icmVhZHkiKSxmLmRvbUxvYWRlZCYmInJlYWR5Ij09PXUmJiJjb21wbGV0ZSI9PT1lLnJlYWR5U3RhdGU/bi5jYWxsKHIscG8oe3R5cGU6dX0pKTooZi5oYXNNb3VzZUVudGVyTGVhdmV8fChzPWYubW91c2VFbnRlckxlYXZlW3VdKSYmKGM9ZnVuY3Rpb24oZSl7dmFyIHQsbjtpZih0PWUuY3VycmVudFRhcmdldCwobj1lLnJlbGF0ZWRUYXJnZXQpJiZ0LmNvbnRhaW5zKW49dC5jb250YWlucyhuKTtlbHNlIGZvcig7biYmbiE9PXQ7KW49bi5wYXJlbnROb2RlO258fCgoZT1wbyhlfHxkLmV2ZW50KSkudHlwZT0ibW91c2VvdXQiPT09ZS50eXBlPyJtb3VzZWxlYXZlIjoibW91c2VlbnRlciIsZS50YXJnZXQ9dCxmLmV4ZWN1dGVIYW5kbGVycyhlLG8pKX0pLGYuaGFzRm9jdXNJbnx8ImZvY3VzaW4iIT09dSYmImZvY3Vzb3V0IiE9PXV8fChsPSEwLHM9ImZvY3VzaW4iPT09dT8iZm9jdXMiOiJibHVyIixjPWZ1bmN0aW9uKGUpeyhlPXBvKGV8fGQuZXZlbnQpKS50eXBlPSJmb2N1cyI9PT1lLnR5cGU/ImZvY3VzaW4iOiJmb2N1c291dCIsZi5leGVjdXRlSGFuZGxlcnMoZSxvKX0pLChpPWYuZXZlbnRzW29dW3VdKT8icmVhZHkiPT09dSYmZi5kb21Mb2FkZWQ/bihwbyh7dHlwZTp1fSkpOmkucHVzaCh7ZnVuYzpuLHNjb3BlOnJ9KTooZi5ldmVudHNbb11bdV09aT1be2Z1bmM6bixzY29wZTpyfV0saS5mYWtlTmFtZT1zLGkuY2FwdHVyZT1sLGkubmF0aXZlSGFuZGxlcj1jLCJyZWFkeSI9PT11P2dvKGUsYyxmKTpmbyhlLHN8fHUsYyxsKSkpO3JldHVybiBlPWk9MCxufX0sdm8ucHJvdG90eXBlLnVuYmluZD1mdW5jdGlvbihuLGUsdCl7dmFyIHIsbyxpLGEsdSxzO2lmKCFufHwzPT09bi5ub2RlVHlwZXx8OD09PW4ubm9kZVR5cGUpcmV0dXJuIHRoaXM7aWYocj1uW3RoaXMuZXhwYW5kb10pe2lmKHM9dGhpcy5ldmVudHNbcl0sZSl7dmFyIGM9ZS5zcGxpdCgiICIpO2ZvcihpPWMubGVuZ3RoO2ktLTspaWYobz1zW3U9Y1tpXV0pe2lmKHQpZm9yKGE9by5sZW5ndGg7YS0tOylpZihvW2FdLmZ1bmM9PT10KXt2YXIgbD1vLm5hdGl2ZUhhbmRsZXIsZj1vLmZha2VOYW1lLGQ9by5jYXB0dXJlOyhvPW8uc2xpY2UoMCxhKS5jb25jYXQoby5zbGljZShhKzEpKSkubmF0aXZlSGFuZGxlcj1sLG8uZmFrZU5hbWU9ZixvLmNhcHR1cmU9ZCxzW3VdPW99dCYmMCE9PW8ubGVuZ3RofHwoZGVsZXRlIHNbdV0sbW8obixvLmZha2VOYW1lfHx1LG8ubmF0aXZlSGFuZGxlcixvLmNhcHR1cmUpKX19ZWxzZSBvZShzLGZ1bmN0aW9uKGUsdCl7bW8obixlLmZha2VOYW1lfHx0LGUubmF0aXZlSGFuZGxlcixlLmNhcHR1cmUpfSkscz17fTtmb3IodSBpbiBzKWlmKG1lKHMsdSkpcmV0dXJuIHRoaXM7ZGVsZXRlIHRoaXMuZXZlbnRzW3JdO3RyeXtkZWxldGUgblt0aGlzLmV4cGFuZG9dfWNhdGNoKG0pe25bdGhpcy5leHBhbmRvXT1udWxsfX1yZXR1cm4gdGhpc30sdm8ucHJvdG90eXBlLmZpcmU9ZnVuY3Rpb24oZSx0LG4pe3ZhciByO2lmKCFlfHwzPT09ZS5ub2RlVHlwZXx8OD09PWUubm9kZVR5cGUpcmV0dXJuIHRoaXM7dmFyIG89cG8obnVsbCxuKTtmb3Ioby50eXBlPXQsby50YXJnZXQ9ZTsocj1lW3RoaXMuZXhwYW5kb10pJiZ0aGlzLmV4ZWN1dGVIYW5kbGVycyhvLHIpLChlPWUucGFyZW50Tm9kZXx8ZS5vd25lckRvY3VtZW50fHxlLmRlZmF1bHRWaWV3fHxlLnBhcmVudFdpbmRvdykmJiFvLmlzUHJvcGFnYXRpb25TdG9wcGVkKCk7KTtyZXR1cm4gdGhpc30sdm8ucHJvdG90eXBlLmNsZWFuPWZ1bmN0aW9uKGUpe3ZhciB0LG47aWYoIWV8fDM9PT1lLm5vZGVUeXBlfHw4PT09ZS5ub2RlVHlwZSlyZXR1cm4gdGhpcztpZihlW3RoaXMuZXhwYW5kb10mJnRoaXMudW5iaW5kKGUpLGUuZ2V0RWxlbWVudHNCeVRhZ05hbWV8fChlPWUuZG9jdW1lbnQpLGUmJmUuZ2V0RWxlbWVudHNCeVRhZ05hbWUpZm9yKHRoaXMudW5iaW5kKGUpLHQ9KG49ZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpKS5sZW5ndGg7dC0tOykoZT1uW3RdKVt0aGlzLmV4cGFuZG9dJiZ0aGlzLnVuYmluZChlKTtyZXR1cm4gdGhpc30sdm8ucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLmV2ZW50cz17fX0sdm8ucHJvdG90eXBlLmNhbmNlbD1mdW5jdGlvbihlKXtyZXR1cm4gZSYmKGUucHJldmVudERlZmF1bHQoKSxlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpKSwhMX0sdm8ucHJvdG90eXBlLmV4ZWN1dGVIYW5kbGVycz1mdW5jdGlvbihlLHQpe3ZhciBuLHIsbyxpLGE9dGhpcy5ldmVudHNbdF07aWYobj1hJiZhW2UudHlwZV0pZm9yKHI9MCxvPW4ubGVuZ3RoO3I8bztyKyspaWYoKGk9bltyXSkmJiExPT09aS5mdW5jLmNhbGwoaS5zY29wZSxlKSYmZS5wcmV2ZW50RGVmYXVsdCgpLGUuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKSlyZXR1cm59LHZvLkV2ZW50PW5ldyB2byx2byk7ZnVuY3Rpb24gdm8oKXt0aGlzLmRvbUxvYWRlZD0hMSx0aGlzLmV2ZW50cz17fSx0aGlzLmNvdW50PTEsdGhpcy5leHBhbmRvPSJtY2UtZGF0YS0iKygrbmV3IERhdGUpLnRvU3RyaW5nKDMyKSx0aGlzLmhhc01vdXNlRW50ZXJMZWF2ZT0ib25tb3VzZWVudGVyImluIFYuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LHRoaXMuaGFzRm9jdXNJbj0ib25mb2N1c2luImluIFYuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LHRoaXMuY291bnQ9MX12YXIgeW8sYm8sQ28sd28seG8sU28sTm8sRW8sa28sX28sUm8sVG8sQW8sRG8sT28sQm8sUG8sTG89InNpenpsZSIrLW5ldyBEYXRlLElvPVYud2luZG93LmRvY3VtZW50LE1vPTAsRm89MCxVbz12aSgpLHpvPXZpKCksam89dmkoKSxIbz1mdW5jdGlvbihlLHQpe3JldHVybiBlPT09dCYmKF9vPSEwKSwwfSxWbz10eXBlb2YgdW5kZWZpbmVkLHFvPXt9Lmhhc093blByb3BlcnR5LCRvPVtdLFdvPSRvLnBvcCxLbz0kby5wdXNoLFhvPSRvLnB1c2gsWW89JG8uc2xpY2UsR289JG8uaW5kZXhPZnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTAsbj10aGlzLmxlbmd0aDt0PG47dCsrKWlmKHRoaXNbdF09PT1lKXJldHVybiB0O3JldHVybi0xfSxKbz0iW1xceDIwXFx0XFxyXFxuXFxmXSIsUW89Iig/OlxcXFwufFtcXHctXXxbXlxceDAwLVxceGEwXSkrIixabz0iXFxbIitKbysiKigiK1FvKyIpKD86IitKbysiKihbKl4kfCF+XT89KSIrSm8rIiooPzonKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcInwoIitRbysiKSl8KSIrSm8rIipcXF0iLGVpPSI6KCIrUW8rIikoPzpcXCgoKCcoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwiKXwoKD86XFxcXC58W15cXFxcKClbXFxdXXwiK1pvKyIpKil8LiopXFwpfCkiLHRpPW5ldyBSZWdFeHAoIl4iK0pvKyIrfCgoPzpefFteXFxcXF0pKD86XFxcXC4pKikiK0pvKyIrJCIsImciKSxuaT1uZXcgUmVnRXhwKCJeIitKbysiKiwiK0pvKyIqIikscmk9bmV3IFJlZ0V4cCgiXiIrSm8rIiooWz4rfl18IitKbysiKSIrSm8rIioiKSxvaT1uZXcgUmVnRXhwKCI9IitKbysiKihbXlxcXSdcIl0qPykiK0pvKyIqXFxdIiwiZyIpLGlpPW5ldyBSZWdFeHAoZWkpLGFpPW5ldyBSZWdFeHAoIl4iK1FvKyIkIiksdWk9e0lEOm5ldyBSZWdFeHAoIl4jKCIrUW8rIikiKSxDTEFTUzpuZXcgUmVnRXhwKCJeXFwuKCIrUW8rIikiKSxUQUc6bmV3IFJlZ0V4cCgiXigiK1FvKyJ8WypdKSIpLEFUVFI6bmV3IFJlZ0V4cCgiXiIrWm8pLFBTRVVETzpuZXcgUmVnRXhwKCJeIitlaSksQ0hJTEQ6bmV3IFJlZ0V4cCgiXjoob25seXxmaXJzdHxsYXN0fG50aHxudGgtbGFzdCktKGNoaWxkfG9mLXR5cGUpKD86XFwoIitKbysiKihldmVufG9kZHwoKFsrLV18KShcXGQqKW58KSIrSm8rIiooPzooWystXXwpIitKbysiKihcXGQrKXwpKSIrSm8rIipcXCl8KSIsImkiKSxib29sOm5ldyBSZWdFeHAoIl4oPzpjaGVja2VkfHNlbGVjdGVkfGFzeW5jfGF1dG9mb2N1c3xhdXRvcGxheXxjb250cm9sc3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58aXNtYXB8bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5fHJlcXVpcmVkfHNjb3BlZCkkIiwiaSIpLG5lZWRzQ29udGV4dDpuZXcgUmVnRXhwKCJeIitKbysiKls+K35dfDooZXZlbnxvZGR8ZXF8Z3R8bHR8bnRofGZpcnN0fGxhc3QpKD86XFwoIitKbysiKigoPzotXFxkKT9cXGQqKSIrSm8rIipcXCl8KSg/PVteLV18JCkiLCJpIil9LHNpPS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2ksY2k9L15oXGQkL2ksbGk9L15bXntdK1x7XHMqXFtuYXRpdmUgXHcvLGZpPS9eKD86IyhbXHctXSspfChcdyspfFwuKFtcdy1dKykpJC8sZGk9L1srfl0vLG1pPS8nfFxcL2cscGk9bmV3IFJlZ0V4cCgiXFxcXChbXFxkYS1mXXsxLDZ9IitKbysiP3woIitKbysiKXwuKSIsImlnIiksZ2k9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPSIweCIrdC02NTUzNjtyZXR1cm4gciE9cnx8bj90OnI8MD9TdHJpbmcuZnJvbUNoYXJDb2RlKDY1NTM2K3IpOlN0cmluZy5mcm9tQ2hhckNvZGUocj4+MTB8NTUyOTYsMTAyMyZyfDU2MzIwKX07dHJ5e1hvLmFwcGx5KCRvPVlvLmNhbGwoSW8uY2hpbGROb2RlcyksSW8uY2hpbGROb2RlcyksJG9bSW8uY2hpbGROb2Rlcy5sZW5ndGhdLm5vZGVUeXBlfWNhdGNoKHBFKXtYbz17YXBwbHk6JG8ubGVuZ3RoP2Z1bmN0aW9uKGUsdCl7S28uYXBwbHkoZSxZby5jYWxsKHQpKX06ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49ZS5sZW5ndGgscj0wO2VbbisrXT10W3IrK107KTtlLmxlbmd0aD1uLTF9fX12YXIgaGk9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG8saSxhLHUscyxjLGwsZixkLG07aWYoKHQ/dC5vd25lckRvY3VtZW50fHx0OklvKSE9PVRvJiZSbyh0KSxuPW58fFtdLCFlfHwic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIG47aWYoMSE9PSh1PSh0PXR8fFRvKS5ub2RlVHlwZSkmJjkhPT11KXJldHVybltdO2lmKERvJiYhcil7aWYobz1maS5leGVjKGUpKWlmKGE9b1sxXSl7aWYoOT09PXUpe2lmKCEoaT10LmdldEVsZW1lbnRCeUlkKGEpKXx8IWkucGFyZW50Tm9kZSlyZXR1cm4gbjtpZihpLmlkPT09YSlyZXR1cm4gbi5wdXNoKGkpLG59ZWxzZSBpZih0Lm93bmVyRG9jdW1lbnQmJihpPXQub3duZXJEb2N1bWVudC5nZXRFbGVtZW50QnlJZChhKSkmJlBvKHQsaSkmJmkuaWQ9PT1hKXJldHVybiBuLnB1c2goaSksbn1lbHNle2lmKG9bMl0pcmV0dXJuIFhvLmFwcGx5KG4sdC5nZXRFbGVtZW50c0J5VGFnTmFtZShlKSksbjtpZigoYT1vWzNdKSYmeW8uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSlyZXR1cm4gWG8uYXBwbHkobix0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoYSkpLG59aWYoeW8ucXNhJiYoIU9vfHwhT28udGVzdChlKSkpe2lmKGY9bD1MbyxkPXQsbT05PT09dSYmZSwxPT09dSYmIm9iamVjdCIhPT10Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpe2ZvcihjPXhvKGUpLChsPXQuZ2V0QXR0cmlidXRlKCJpZCIpKT9mPWwucmVwbGFjZShtaSwiXFwkJiIpOnQuc2V0QXR0cmlidXRlKCJpZCIsZiksZj0iW2lkPSciK2YrIiddICIscz1jLmxlbmd0aDtzLS07KWNbc109ZitTaShjW3NdKTtkPWRpLnRlc3QoZSkmJndpKHQucGFyZW50Tm9kZSl8fHQsbT1jLmpvaW4oIiwiKX1pZihtKXRyeXtyZXR1cm4gWG8uYXBwbHkobixkLnF1ZXJ5U2VsZWN0b3JBbGwobSkpLG59Y2F0Y2gocCl7fWZpbmFsbHl7bHx8dC5yZW1vdmVBdHRyaWJ1dGUoImlkIil9fX1yZXR1cm4gTm8oZS5yZXBsYWNlKHRpLCIkMSIpLHQsbixyKX07ZnVuY3Rpb24gdmkoKXt2YXIgbj1bXTtmdW5jdGlvbiByKGUsdCl7cmV0dXJuIG4ucHVzaChlKyIgIik+Ym8uY2FjaGVMZW5ndGgmJmRlbGV0ZSByW24uc2hpZnQoKV0scltlKyIgIl09dH1yZXR1cm4gcn1mdW5jdGlvbiB5aShlKXtyZXR1cm4gZVtMb109ITAsZX1mdW5jdGlvbiBiaShlLHQpe3ZhciBuPXQmJmUscj1uJiYxPT09ZS5ub2RlVHlwZSYmMT09PXQubm9kZVR5cGUmJih+dC5zb3VyY2VJbmRleHx8MTw8MzEpLSh+ZS5zb3VyY2VJbmRleHx8MTw8MzEpO2lmKHIpcmV0dXJuIHI7aWYobilmb3IoO249bi5uZXh0U2libGluZzspaWYobj09PXQpcmV0dXJuLTE7cmV0dXJuIGU/MTotMX1mdW5jdGlvbiBDaShhKXtyZXR1cm4geWkoZnVuY3Rpb24oaSl7cmV0dXJuIGk9K2kseWkoZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4scj1hKFtdLGUubGVuZ3RoLGkpLG89ci5sZW5ndGg7by0tOyllW249cltvXV0mJihlW25dPSEodFtuXT1lW25dKSl9KX0pfWZ1bmN0aW9uIHdpKGUpe3JldHVybiBlJiZ0eXBlb2YgZS5nZXRFbGVtZW50c0J5VGFnTmFtZSE9Vm8mJmV9ZnVuY3Rpb24geGkoKXt9ZnVuY3Rpb24gU2koZSl7Zm9yKHZhciB0PTAsbj1lLmxlbmd0aCxyPSIiO3Q8bjt0Kyspcis9ZVt0XS52YWx1ZTtyZXR1cm4gcn1mdW5jdGlvbiBOaShhLGUsdCl7dmFyIHU9ZS5kaXIscz10JiYicGFyZW50Tm9kZSI9PT11LGM9Rm8rKztyZXR1cm4gZS5maXJzdD9mdW5jdGlvbihlLHQsbil7Zm9yKDtlPWVbdV07KWlmKDE9PT1lLm5vZGVUeXBlfHxzKXJldHVybiBhKGUsdCxuKX06ZnVuY3Rpb24oZSx0LG4pe3ZhciByLG8saT1bTW8sY107aWYobil7Zm9yKDtlPWVbdV07KWlmKCgxPT09ZS5ub2RlVHlwZXx8cykmJmEoZSx0LG4pKXJldHVybiEwfWVsc2UgZm9yKDtlPWVbdV07KWlmKDE9PT1lLm5vZGVUeXBlfHxzKXtpZigocj0obz1lW0xvXXx8KGVbTG9dPXt9KSlbdV0pJiZyWzBdPT09TW8mJnJbMV09PT1jKXJldHVybiBpWzJdPXJbMl07aWYoKG9bdV09aSlbMl09YShlLHQsbikpcmV0dXJuITB9fX1mdW5jdGlvbiBFaShvKXtyZXR1cm4gMTxvLmxlbmd0aD9mdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPW8ubGVuZ3RoO3ItLTspaWYoIW9bcl0oZSx0LG4pKXJldHVybiExO3JldHVybiEwfTpvWzBdfWZ1bmN0aW9uIGtpKGUsdCxuLHIsbyl7Zm9yKHZhciBpLGE9W10sdT0wLHM9ZS5sZW5ndGgsYz1udWxsIT10O3U8czt1KyspKGk9ZVt1XSkmJihuJiYhbihpLHIsbyl8fChhLnB1c2goaSksYyYmdC5wdXNoKHUpKSk7cmV0dXJuIGF9ZnVuY3Rpb24gX2kocCxnLGgsdix5LGUpe3JldHVybiB2JiYhdltMb10mJih2PV9pKHYpKSx5JiYheVtMb10mJih5PV9pKHksZSkpLHlpKGZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvLGksYSx1PVtdLHM9W10sYz10Lmxlbmd0aCxsPWV8fGZ1bmN0aW9uIG0oZSx0LG4pe2Zvcih2YXIgcj0wLG89dC5sZW5ndGg7cjxvO3IrKyloaShlLHRbcl0sbik7cmV0dXJuIG59KGd8fCIqIixuLm5vZGVUeXBlP1tuXTpuLFtdKSxmPSFwfHwhZSYmZz9sOmtpKGwsdSxwLG4sciksZD1oP3l8fChlP3A6Y3x8dik/W106dDpmO2lmKGgmJmgoZixkLG4sciksdilmb3Iobz1raShkLHMpLHYobyxbXSxuLHIpLGk9by5sZW5ndGg7aS0tOykoYT1vW2ldKSYmKGRbc1tpXV09IShmW3NbaV1dPWEpKTtpZihlKXtpZih5fHxwKXtpZih5KXtmb3Iobz1bXSxpPWQubGVuZ3RoO2ktLTspKGE9ZFtpXSkmJm8ucHVzaChmW2ldPWEpO3kobnVsbCxkPVtdLG8scil9Zm9yKGk9ZC5sZW5ndGg7aS0tOykoYT1kW2ldKSYmLTE8KG89eT9Hby5jYWxsKGUsYSk6dVtpXSkmJihlW29dPSEodFtvXT1hKSl9fWVsc2UgZD1raShkPT09dD9kLnNwbGljZShjLGQubGVuZ3RoKTpkKSx5P3kobnVsbCx0LGQscik6WG8uYXBwbHkodCxkKX0pfWZ1bmN0aW9uIFJpKGUpe2Zvcih2YXIgcix0LG4sbz1lLmxlbmd0aCxpPWJvLnJlbGF0aXZlW2VbMF0udHlwZV0sYT1pfHxiby5yZWxhdGl2ZVsiICJdLHU9aT8xOjAscz1OaShmdW5jdGlvbihlKXtyZXR1cm4gZT09PXJ9LGEsITApLGM9TmkoZnVuY3Rpb24oZSl7cmV0dXJuLTE8R28uY2FsbChyLGUpfSxhLCEwKSxsPVtmdW5jdGlvbihlLHQsbil7cmV0dXJuIWkmJihufHx0IT09RW8pfHwoKHI9dCkubm9kZVR5cGU/czpjKShlLHQsbil9XTt1PG87dSsrKWlmKHQ9Ym8ucmVsYXRpdmVbZVt1XS50eXBlXSlsPVtOaShFaShsKSx0KV07ZWxzZXtpZigodD1iby5maWx0ZXJbZVt1XS50eXBlXS5hcHBseShudWxsLGVbdV0ubWF0Y2hlcykpW0xvXSl7Zm9yKG49Kyt1O248byYmIWJvLnJlbGF0aXZlW2Vbbl0udHlwZV07bisrKTtyZXR1cm4gX2koMTx1JiZFaShsKSwxPHUmJlNpKGUuc2xpY2UoMCx1LTEpLmNvbmNhdCh7dmFsdWU6IiAiPT09ZVt1LTJdLnR5cGU/IioiOiIifSkpLnJlcGxhY2UodGksIiQxIiksdCx1PG4mJlJpKGUuc2xpY2UodSxuKSksbjxvJiZSaShlPWUuc2xpY2UobikpLG48byYmU2koZSkpfWwucHVzaCh0KX1yZXR1cm4gRWkobCl9eW89aGkuc3VwcG9ydD17fSx3bz1oaS5pc1hNTD1mdW5jdGlvbihlKXt2YXIgdD1lJiYoZS5vd25lckRvY3VtZW50fHxlKS5kb2N1bWVudEVsZW1lbnQ7cmV0dXJuISF0JiYiSFRNTCIhPT10Lm5vZGVOYW1lfSxSbz1oaS5zZXREb2N1bWVudD1mdW5jdGlvbihlKXt2YXIgdCxzPWU/ZS5vd25lckRvY3VtZW50fHxlOklvLG49cy5kZWZhdWx0VmlldztyZXR1cm4gcyE9PVRvJiY5PT09cy5ub2RlVHlwZSYmcy5kb2N1bWVudEVsZW1lbnQ/KEFvPShUbz1zKS5kb2N1bWVudEVsZW1lbnQsRG89IXdvKHMpLG4mJm4hPT1mdW5jdGlvbiByKGUpe3RyeXtyZXR1cm4gZS50b3B9Y2F0Y2godCl7fXJldHVybiBudWxsfShuKSYmKG4uYWRkRXZlbnRMaXN0ZW5lcj9uLmFkZEV2ZW50TGlzdGVuZXIoInVubG9hZCIsZnVuY3Rpb24oKXtSbygpfSwhMSk6bi5hdHRhY2hFdmVudCYmbi5hdHRhY2hFdmVudCgib251bmxvYWQiLGZ1bmN0aW9uKCl7Um8oKX0pKSx5by5hdHRyaWJ1dGVzPSEwLHlvLmdldEVsZW1lbnRzQnlUYWdOYW1lPSEwLHlvLmdldEVsZW1lbnRzQnlDbGFzc05hbWU9bGkudGVzdChzLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpLHlvLmdldEJ5SWQ9ITAsYm8uZmluZC5JRD1mdW5jdGlvbihlLHQpe2lmKHR5cGVvZiB0LmdldEVsZW1lbnRCeUlkIT1WbyYmRG8pe3ZhciBuPXQuZ2V0RWxlbWVudEJ5SWQoZSk7cmV0dXJuIG4mJm4ucGFyZW50Tm9kZT9bbl06W119fSxiby5maWx0ZXIuSUQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXBsYWNlKHBpLGdpKTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0QXR0cmlidXRlKCJpZCIpPT09dH19LGJvLmZpbmQuVEFHPXlvLmdldEVsZW1lbnRzQnlUYWdOYW1lP2Z1bmN0aW9uKGUsdCl7aWYodHlwZW9mIHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUhPVZvKXJldHVybiB0LmdldEVsZW1lbnRzQnlUYWdOYW1lKGUpfTpmdW5jdGlvbihlLHQpe3ZhciBuLHI9W10sbz0wLGk9dC5nZXRFbGVtZW50c0J5VGFnTmFtZShlKTtpZigiKiIhPT1lKXJldHVybiBpO2Zvcig7bj1pW28rK107KTE9PT1uLm5vZGVUeXBlJiZyLnB1c2gobik7cmV0dXJuIHJ9LGJvLmZpbmQuQ0xBU1M9eW8uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmZnVuY3Rpb24oZSx0KXtpZihEbylyZXR1cm4gdC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGUpfSxCbz1bXSxPbz1bXSx5by5kaXNjb25uZWN0ZWRNYXRjaD0hMCxPbz1Pby5sZW5ndGgmJm5ldyBSZWdFeHAoT28uam9pbigifCIpKSxCbz1Cby5sZW5ndGgmJm5ldyBSZWdFeHAoQm8uam9pbigifCIpKSx0PWxpLnRlc3QoQW8uY29tcGFyZURvY3VtZW50UG9zaXRpb24pLFBvPXR8fGxpLnRlc3QoQW8uY29udGFpbnMpP2Z1bmN0aW9uKGUsdCl7dmFyIG49OT09PWUubm9kZVR5cGU/ZS5kb2N1bWVudEVsZW1lbnQ6ZSxyPXQmJnQucGFyZW50Tm9kZTtyZXR1cm4gZT09PXJ8fCEoIXJ8fDEhPT1yLm5vZGVUeXBlfHwhKG4uY29udGFpbnM/bi5jb250YWlucyhyKTplLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uJiYxNiZlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHIpKSl9OmZ1bmN0aW9uKGUsdCl7aWYodClmb3IoO3Q9dC5wYXJlbnROb2RlOylpZih0PT09ZSlyZXR1cm4hMDtyZXR1cm4hMX0sSG89dD9mdW5jdGlvbihlLHQpe2lmKGU9PT10KXJldHVybiBfbz0hMCwwO3ZhciBuPSFlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uLSF0LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uO3JldHVybiBufHwoMSYobj0oZS5vd25lckRvY3VtZW50fHxlKT09PSh0Lm93bmVyRG9jdW1lbnR8fHQpP2UuY29tcGFyZURvY3VtZW50UG9zaXRpb24odCk6MSl8fCF5by5zb3J0RGV0YWNoZWQmJnQuY29tcGFyZURvY3VtZW50UG9zaXRpb24oZSk9PT1uP2U9PT1zfHxlLm93bmVyRG9jdW1lbnQ9PT1JbyYmUG8oSW8sZSk/LTE6dD09PXN8fHQub3duZXJEb2N1bWVudD09PUlvJiZQbyhJbyx0KT8xOmtvP0dvLmNhbGwoa28sZSktR28uY2FsbChrbyx0KTowOjQmbj8tMToxKX06ZnVuY3Rpb24oZSx0KXtpZihlPT09dClyZXR1cm4gX289ITAsMDt2YXIgbixyPTAsbz1lLnBhcmVudE5vZGUsaT10LnBhcmVudE5vZGUsYT1bZV0sdT1bdF07aWYoIW98fCFpKXJldHVybiBlPT09cz8tMTp0PT09cz8xOm8/LTE6aT8xOmtvP0dvLmNhbGwoa28sZSktR28uY2FsbChrbyx0KTowO2lmKG89PT1pKXJldHVybiBiaShlLHQpO2ZvcihuPWU7bj1uLnBhcmVudE5vZGU7KWEudW5zaGlmdChuKTtmb3Iobj10O249bi5wYXJlbnROb2RlOyl1LnVuc2hpZnQobik7Zm9yKDthW3JdPT09dVtyXTspcisrO3JldHVybiByP2JpKGFbcl0sdVtyXSk6YVtyXT09PUlvPy0xOnVbcl09PT1Jbz8xOjB9LHMpOlRvfSxoaS5tYXRjaGVzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGhpKGUsbnVsbCxudWxsLHQpfSxoaS5tYXRjaGVzU2VsZWN0b3I9ZnVuY3Rpb24oZSx0KXtpZigoZS5vd25lckRvY3VtZW50fHxlKSE9PVRvJiZSbyhlKSx0PXQucmVwbGFjZShvaSwiPSckMSddIikseW8ubWF0Y2hlc1NlbGVjdG9yJiZEbyYmKCFCb3x8IUJvLnRlc3QodCkpJiYoIU9vfHwhT28udGVzdCh0KSkpdHJ5e3ZhciBuPSh2b2lkIDApLmNhbGwoZSx0KTtpZihufHx5by5kaXNjb25uZWN0ZWRNYXRjaHx8ZS5kb2N1bWVudCYmMTEhPT1lLmRvY3VtZW50Lm5vZGVUeXBlKXJldHVybiBufWNhdGNoKHBFKXt9cmV0dXJuIDA8aGkodCxUbyxudWxsLFtlXSkubGVuZ3RofSxoaS5jb250YWlucz1mdW5jdGlvbihlLHQpe3JldHVybihlLm93bmVyRG9jdW1lbnR8fGUpIT09VG8mJlJvKGUpLFBvKGUsdCl9LGhpLmF0dHI9ZnVuY3Rpb24oZSx0KXsoZS5vd25lckRvY3VtZW50fHxlKSE9PVRvJiZSbyhlKTt2YXIgbj1iby5hdHRySGFuZGxlW3QudG9Mb3dlckNhc2UoKV0scj1uJiZxby5jYWxsKGJvLmF0dHJIYW5kbGUsdC50b0xvd2VyQ2FzZSgpKT9uKGUsdCwhRG8pOnVuZGVmaW5lZDtyZXR1cm4gciE9PXVuZGVmaW5lZD9yOnlvLmF0dHJpYnV0ZXN8fCFEbz9lLmdldEF0dHJpYnV0ZSh0KToocj1lLmdldEF0dHJpYnV0ZU5vZGUodCkpJiZyLnNwZWNpZmllZD9yLnZhbHVlOm51bGx9LGhpLmVycm9yPWZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcigiU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIitlKX0saGkudW5pcXVlU29ydD1mdW5jdGlvbihlKXt2YXIgdCxuPVtdLHI9MCxvPTA7aWYoX289IXlvLmRldGVjdER1cGxpY2F0ZXMsa289IXlvLnNvcnRTdGFibGUmJmUuc2xpY2UoMCksZS5zb3J0KEhvKSxfbyl7Zm9yKDt0PWVbbysrXTspdD09PWVbb10mJihyPW4ucHVzaChvKSk7Zm9yKDtyLS07KWUuc3BsaWNlKG5bcl0sMSl9cmV0dXJuIGtvPW51bGwsZX0sQ289aGkuZ2V0VGV4dD1mdW5jdGlvbihlKXt2YXIgdCxuPSIiLHI9MCxvPWUubm9kZVR5cGU7aWYobyl7aWYoMT09PW98fDk9PT1vfHwxMT09PW8pe2lmKCJzdHJpbmciPT10eXBlb2YgZS50ZXh0Q29udGVudClyZXR1cm4gZS50ZXh0Q29udGVudDtmb3IoZT1lLmZpcnN0Q2hpbGQ7ZTtlPWUubmV4dFNpYmxpbmcpbis9Q28oZSl9ZWxzZSBpZigzPT09b3x8ND09PW8pcmV0dXJuIGUubm9kZVZhbHVlfWVsc2UgZm9yKDt0PWVbcisrXTspbis9Q28odCk7cmV0dXJuIG59LChibz1oaS5zZWxlY3RvcnM9e2NhY2hlTGVuZ3RoOjUwLGNyZWF0ZVBzZXVkbzp5aSxtYXRjaDp1aSxhdHRySGFuZGxlOnt9LGZpbmQ6e30scmVsYXRpdmU6eyI+Ijp7ZGlyOiJwYXJlbnROb2RlIixmaXJzdDohMH0sIiAiOntkaXI6InBhcmVudE5vZGUifSwiKyI6e2RpcjoicHJldmlvdXNTaWJsaW5nIixmaXJzdDohMH0sIn4iOntkaXI6InByZXZpb3VzU2libGluZyJ9fSxwcmVGaWx0ZXI6e0FUVFI6ZnVuY3Rpb24oZSl7cmV0dXJuIGVbMV09ZVsxXS5yZXBsYWNlKHBpLGdpKSxlWzNdPShlWzNdfHxlWzRdfHxlWzVdfHwiIikucmVwbGFjZShwaSxnaSksIn49Ij09PWVbMl0mJihlWzNdPSIgIitlWzNdKyIgIiksZS5zbGljZSgwLDQpfSxDSElMRDpmdW5jdGlvbihlKXtyZXR1cm4gZVsxXT1lWzFdLnRvTG93ZXJDYXNlKCksIm50aCI9PT1lWzFdLnNsaWNlKDAsMyk/KGVbM118fGhpLmVycm9yKGVbMF0pLGVbNF09KyhlWzRdP2VbNV0rKGVbNl18fDEpOjIqKCJldmVuIj09PWVbM118fCJvZGQiPT09ZVszXSkpLGVbNV09KyhlWzddK2VbOF18fCJvZGQiPT09ZVszXSkpOmVbM10mJmhpLmVycm9yKGVbMF0pLGV9LFBTRVVETzpmdW5jdGlvbihlKXt2YXIgdCxuPSFlWzZdJiZlWzJdO3JldHVybiB1aS5DSElMRC50ZXN0KGVbMF0pP251bGw6KGVbM10/ZVsyXT1lWzRdfHxlWzVdfHwiIjpuJiZpaS50ZXN0KG4pJiYodD14byhuLCEwKSkmJih0PW4uaW5kZXhPZigiKSIsbi5sZW5ndGgtdCktbi5sZW5ndGgpJiYoZVswXT1lWzBdLnNsaWNlKDAsdCksZVsyXT1uLnNsaWNlKDAsdCkpLGUuc2xpY2UoMCwzKSl9fSxmaWx0ZXI6e1RBRzpmdW5jdGlvbihlKXt2YXIgdD1lLnJlcGxhY2UocGksZ2kpLnRvTG93ZXJDYXNlKCk7cmV0dXJuIioiPT09ZT9mdW5jdGlvbigpe3JldHVybiEwfTpmdW5jdGlvbihlKXtyZXR1cm4gZS5ub2RlTmFtZSYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09dH19LENMQVNTOmZ1bmN0aW9uKGUpe3ZhciB0PVVvW2UrIiAiXTtyZXR1cm4gdHx8KHQ9bmV3IFJlZ0V4cCgiKF58IitKbysiKSIrZSsiKCIrSm8rInwkKSIpKSYmVW8oZSxmdW5jdGlvbihlKXtyZXR1cm4gdC50ZXN0KCJzdHJpbmciPT10eXBlb2YgZS5jbGFzc05hbWUmJmUuY2xhc3NOYW1lfHx0eXBlb2YgZS5nZXRBdHRyaWJ1dGUhPVZvJiZlLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpfSl9LEFUVFI6ZnVuY3Rpb24obixyLG8pe3JldHVybiBmdW5jdGlvbihlKXt2YXIgdD1oaS5hdHRyKGUsbik7cmV0dXJuIG51bGw9PXQ/IiE9Ij09PXI6IXJ8fCh0Kz0iIiwiPSI9PT1yP3Q9PT1vOiIhPSI9PT1yP3QhPT1vOiJePSI9PT1yP28mJjA9PT10LmluZGV4T2Yobyk6Iio9Ij09PXI/byYmLTE8dC5pbmRleE9mKG8pOiIkPSI9PT1yP28mJnQuc2xpY2UoLW8ubGVuZ3RoKT09PW86In49Ij09PXI/LTE8KCIgIit0KyIgIikuaW5kZXhPZihvKToifD0iPT09ciYmKHQ9PT1vfHx0LnNsaWNlKDAsby5sZW5ndGgrMSk9PT1vKyItIikpfX0sQ0hJTEQ6ZnVuY3Rpb24obSxlLHQscCxnKXt2YXIgaD0ibnRoIiE9PW0uc2xpY2UoMCwzKSx2PSJsYXN0IiE9PW0uc2xpY2UoLTQpLHk9Im9mLXR5cGUiPT09ZTtyZXR1cm4gMT09PXAmJjA9PT1nP2Z1bmN0aW9uKGUpe3JldHVybiEhZS5wYXJlbnROb2RlfTpmdW5jdGlvbihlLHQsbil7dmFyIHIsbyxpLGEsdSxzLGM9aCE9dj8ibmV4dFNpYmxpbmciOiJwcmV2aW91c1NpYmxpbmciLGw9ZS5wYXJlbnROb2RlLGY9eSYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLGQ9IW4mJiF5O2lmKGwpe2lmKGgpe2Zvcig7Yzspe2ZvcihpPWU7aT1pW2NdOylpZih5P2kubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWY6MT09PWkubm9kZVR5cGUpcmV0dXJuITE7cz1jPSJvbmx5Ij09PW0mJiFzJiYibmV4dFNpYmxpbmcifXJldHVybiEwfWlmKHM9W3Y/bC5maXJzdENoaWxkOmwubGFzdENoaWxkXSx2JiZkKXtmb3IodT0ocj0obz1sW0xvXXx8KGxbTG9dPXt9KSlbbV18fFtdKVswXT09PU1vJiZyWzFdLGE9clswXT09PU1vJiZyWzJdLGk9dSYmbC5jaGlsZE5vZGVzW3VdO2k9Kyt1JiZpJiZpW2NdfHwoYT11PTApfHxzLnBvcCgpOylpZigxPT09aS5ub2RlVHlwZSYmKythJiZpPT09ZSl7b1ttXT1bTW8sdSxhXTticmVha319ZWxzZSBpZihkJiYocj0oZVtMb118fChlW0xvXT17fSkpW21dKSYmclswXT09PU1vKWE9clsxXTtlbHNlIGZvcig7KGk9Kyt1JiZpJiZpW2NdfHwoYT11PTApfHxzLnBvcCgpKSYmKCh5P2kubm9kZU5hbWUudG9Mb3dlckNhc2UoKSE9PWY6MSE9PWkubm9kZVR5cGUpfHwhKythfHwoZCYmKChpW0xvXXx8KGlbTG9dPXt9KSlbbV09W01vLGFdKSxpIT09ZSkpOyk7cmV0dXJuKGEtPWcpPT09cHx8YSVwPT0wJiYwPD1hL3B9fX0sUFNFVURPOmZ1bmN0aW9uKGUsaSl7dmFyIHQsYT1iby5wc2V1ZG9zW2VdfHxiby5zZXRGaWx0ZXJzW2UudG9Mb3dlckNhc2UoKV18fGhpLmVycm9yKCJ1bnN1cHBvcnRlZCBwc2V1ZG86ICIrZSk7cmV0dXJuIGFbTG9dP2EoaSk6MTxhLmxlbmd0aD8odD1bZSxlLCIiLGldLGJvLnNldEZpbHRlcnMuaGFzT3duUHJvcGVydHkoZS50b0xvd2VyQ2FzZSgpKT95aShmdW5jdGlvbihlLHQpe2Zvcih2YXIgbixyPWEoZSxpKSxvPXIubGVuZ3RoO28tLTspZVtuPUdvLmNhbGwoZSxyW29dKV09ISh0W25dPXJbb10pfSk6ZnVuY3Rpb24oZSl7cmV0dXJuIGEoZSwwLHQpfSk6YX19LHBzZXVkb3M6e25vdDp5aShmdW5jdGlvbihlKXt2YXIgcj1bXSxvPVtdLHU9U28oZS5yZXBsYWNlKHRpLCIkMSIpKTtyZXR1cm4gdVtMb10/eWkoZnVuY3Rpb24oZSx0LG4scil7Zm9yKHZhciBvLGk9dShlLG51bGwscixbXSksYT1lLmxlbmd0aDthLS07KShvPWlbYV0pJiYoZVthXT0hKHRbYV09bykpfSk6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiByWzBdPWUsdShyLG51bGwsbixvKSwhby5wb3AoKX19KSxoYXM6eWkoZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiAwPGhpKHQsZSkubGVuZ3RofX0pLGNvbnRhaW5zOnlpKGZ1bmN0aW9uKHQpe3JldHVybiB0PXQucmVwbGFjZShwaSxnaSksZnVuY3Rpb24oZSl7cmV0dXJuLTE8KGUudGV4dENvbnRlbnR8fGUuaW5uZXJUZXh0fHxDbyhlKSkuaW5kZXhPZih0KX19KSxsYW5nOnlpKGZ1bmN0aW9uKG4pe3JldHVybiBhaS50ZXN0KG58fCIiKXx8aGkuZXJyb3IoInVuc3VwcG9ydGVkIGxhbmc6ICIrbiksbj1uLnJlcGxhY2UocGksZ2kpLnRvTG93ZXJDYXNlKCksZnVuY3Rpb24oZSl7dmFyIHQ7ZG97aWYodD1Ebz9lLmxhbmc6ZS5nZXRBdHRyaWJ1dGUoInhtbDpsYW5nIil8fGUuZ2V0QXR0cmlidXRlKCJsYW5nIikpcmV0dXJuKHQ9dC50b0xvd2VyQ2FzZSgpKT09PW58fDA9PT10LmluZGV4T2YobisiLSIpfXdoaWxlKChlPWUucGFyZW50Tm9kZSkmJjE9PT1lLm5vZGVUeXBlKTtyZXR1cm4hMX19KSx0YXJnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9Vi53aW5kb3cubG9jYXRpb24mJlYud2luZG93LmxvY2F0aW9uLmhhc2g7cmV0dXJuIHQmJnQuc2xpY2UoMSk9PT1lLmlkfSxyb290OmZ1bmN0aW9uKGUpe3JldHVybiBlPT09QW99LGZvY3VzOmZ1bmN0aW9uKGUpe3JldHVybiBlPT09VG8uYWN0aXZlRWxlbWVudCYmKCFUby5oYXNGb2N1c3x8VG8uaGFzRm9jdXMoKSkmJiEhKGUudHlwZXx8ZS5ocmVmfHx+ZS50YWJJbmRleCl9LGVuYWJsZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuITE9PT1lLmRpc2FibGVkfSxkaXNhYmxlZDpmdW5jdGlvbihlKXtyZXR1cm4hMD09PWUuZGlzYWJsZWR9LGNoZWNrZWQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT10JiYhIWUuY2hlY2tlZHx8Im9wdGlvbiI9PT10JiYhIWUuc2VsZWN0ZWR9LHNlbGVjdGVkOmZ1bmN0aW9uKGUpe3JldHVybiBlLnBhcmVudE5vZGUmJmUucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4LCEwPT09ZS5zZWxlY3RlZH0sZW1wdHk6ZnVuY3Rpb24oZSl7Zm9yKGU9ZS5maXJzdENoaWxkO2U7ZT1lLm5leHRTaWJsaW5nKWlmKGUubm9kZVR5cGU8NilyZXR1cm4hMTtyZXR1cm4hMH0scGFyZW50OmZ1bmN0aW9uKGUpe3JldHVybiFiby5wc2V1ZG9zLmVtcHR5KGUpfSxoZWFkZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGNpLnRlc3QoZS5ub2RlTmFtZSl9LGlucHV0OmZ1bmN0aW9uKGUpe3JldHVybiBzaS50ZXN0KGUubm9kZU5hbWUpfSxidXR0b246ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT10JiYiYnV0dG9uIj09PWUudHlwZXx8ImJ1dHRvbiI9PT10fSx0ZXh0OmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiJpbnB1dCI9PT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkmJiJ0ZXh0Ij09PWUudHlwZSYmKG51bGw9PSh0PWUuZ2V0QXR0cmlidXRlKCJ0eXBlIikpfHwidGV4dCI9PT10LnRvTG93ZXJDYXNlKCkpfSxmaXJzdDpDaShmdW5jdGlvbigpe3JldHVyblswXX0pLGxhc3Q6Q2koZnVuY3Rpb24oZSx0KXtyZXR1cm5bdC0xXX0pLGVxOkNpKGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm5bbjwwP24rdDpuXX0pLGV2ZW46Q2koZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49MDtuPHQ7bis9MillLnB1c2gobik7cmV0dXJuIGV9KSxvZGQ6Q2koZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49MTtuPHQ7bis9MillLnB1c2gobik7cmV0dXJuIGV9KSxsdDpDaShmdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPW48MD9uK3Q6bjswPD0tLXI7KWUucHVzaChyKTtyZXR1cm4gZX0pLGd0OkNpKGZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9bjwwP24rdDpuOysrcjx0OyllLnB1c2gocik7cmV0dXJuIGV9KX19KS5wc2V1ZG9zLm50aD1iby5wc2V1ZG9zLmVxLHooWyJyYWRpbyIsImNoZWNrYm94IiwiZmlsZSIsInBhc3N3b3JkIiwiaW1hZ2UiXSxmdW5jdGlvbihlKXtiby5wc2V1ZG9zW2VdPWZ1bmN0aW9uIG4odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiJpbnB1dCI9PT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkmJmUudHlwZT09PXR9fShlKX0pLHooWyJzdWJtaXQiLCJyZXNldCJdLGZ1bmN0aW9uKGUpe2JvLnBzZXVkb3NbZV09ZnVuY3Rpb24gdChuKXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybigiaW5wdXQiPT09dHx8ImJ1dHRvbiI9PT10KSYmZS50eXBlPT09bn19KGUpfSkseGkucHJvdG90eXBlPWJvLmZpbHRlcnM9Ym8ucHNldWRvcyxiby5zZXRGaWx0ZXJzPW5ldyB4aSx4bz1oaS50b2tlbml6ZT1mdW5jdGlvbihlLHQpe3ZhciBuLHIsbyxpLGEsdSxzLGM9em9bZSsiICJdO2lmKGMpcmV0dXJuIHQ/MDpjLnNsaWNlKDApO2ZvcihhPWUsdT1bXSxzPWJvLnByZUZpbHRlcjthOyl7Zm9yKGkgaW4gbiYmIShyPW5pLmV4ZWMoYSkpfHwociYmKGE9YS5zbGljZShyWzBdLmxlbmd0aCl8fGEpLHUucHVzaChvPVtdKSksbj0hMSwocj1yaS5leGVjKGEpKSYmKG49ci5zaGlmdCgpLG8ucHVzaCh7dmFsdWU6bix0eXBlOnJbMF0ucmVwbGFjZSh0aSwiICIpfSksYT1hLnNsaWNlKG4ubGVuZ3RoKSksYm8uZmlsdGVyKWJvLmZpbHRlci5oYXNPd25Qcm9wZXJ0eShpKSYmKCEocj11aVtpXS5leGVjKGEpKXx8c1tpXSYmIShyPXNbaV0ocikpfHwobj1yLnNoaWZ0KCksby5wdXNoKHt2YWx1ZTpuLHR5cGU6aSxtYXRjaGVzOnJ9KSxhPWEuc2xpY2Uobi5sZW5ndGgpKSk7aWYoIW4pYnJlYWt9cmV0dXJuIHQ/YS5sZW5ndGg6YT9oaS5lcnJvcihlKTp6byhlLHUpLnNsaWNlKDApfSxTbz1oaS5jb21waWxlPWZ1bmN0aW9uKGUsdCl7dmFyIG4scj1bXSxvPVtdLGk9am9bZSsiICJdO2lmKCFpKXtmb3Iobj0odD10fHx4byhlKSkubGVuZ3RoO24tLTspKGk9UmkodFtuXSkpW0xvXT9yLnB1c2goaSk6by5wdXNoKGkpOyhpPWpvKGUsZnVuY3Rpb24gYShoLHYpe3ZhciB5PTA8di5sZW5ndGgsYj0wPGgubGVuZ3RoLGU9ZnVuY3Rpb24oZSx0LG4scixvKXt2YXIgaSxhLHUscz0wLGM9IjAiLGw9ZSYmW10sZj1bXSxkPUVvLG09ZXx8YiYmYm8uZmluZC5UQUcoIioiLG8pLHA9TW8rPW51bGw9PWQ/MTpNYXRoLnJhbmRvbSgpfHwuMSxnPW0ubGVuZ3RoO2ZvcihvJiYoRW89dCE9PVRvJiZ0KTtjIT09ZyYmbnVsbCE9KGk9bVtjXSk7YysrKXtpZihiJiZpKXtmb3IoYT0wO3U9aFthKytdOylpZih1KGksdCxuKSl7ci5wdXNoKGkpO2JyZWFrfW8mJihNbz1wKX15JiYoKGk9IXUmJmkpJiZzLS0sZSYmbC5wdXNoKGkpKX1pZihzKz1jLHkmJmMhPT1zKXtmb3IoYT0wO3U9dlthKytdOyl1KGwsZix0LG4pO2lmKGUpe2lmKDA8cylmb3IoO2MtLTspbFtjXXx8ZltjXXx8KGZbY109V28uY2FsbChyKSk7Zj1raShmKX1Yby5hcHBseShyLGYpLG8mJiFlJiYwPGYubGVuZ3RoJiYxPHMrdi5sZW5ndGgmJmhpLnVuaXF1ZVNvcnQocil9cmV0dXJuIG8mJihNbz1wLEVvPWQpLGx9O3JldHVybiB5P3lpKGUpOmV9KG8scikpKS5zZWxlY3Rvcj1lfXJldHVybiBpfSxObz1oaS5zZWxlY3Q9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG8saSxhLHUscyxjPSJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlLGw9IXImJnhvKGU9Yy5zZWxlY3Rvcnx8ZSk7aWYobj1ufHxbXSwxPT09bC5sZW5ndGgpe2lmKDI8KGk9bFswXT1sWzBdLnNsaWNlKDApKS5sZW5ndGgmJiJJRCI9PT0oYT1pWzBdKS50eXBlJiZ5by5nZXRCeUlkJiY5PT09dC5ub2RlVHlwZSYmRG8mJmJvLnJlbGF0aXZlW2lbMV0udHlwZV0pe2lmKCEodD0oYm8uZmluZC5JRChhLm1hdGNoZXNbMF0ucmVwbGFjZShwaSxnaSksdCl8fFtdKVswXSkpcmV0dXJuIG47YyYmKHQ9dC5wYXJlbnROb2RlKSxlPWUuc2xpY2UoaS5zaGlmdCgpLnZhbHVlLmxlbmd0aCl9Zm9yKG89dWkubmVlZHNDb250ZXh0LnRlc3QoZSk/MDppLmxlbmd0aDtvLS0mJihhPWlbb10sIWJvLnJlbGF0aXZlW3U9YS50eXBlXSk7KWlmKChzPWJvLmZpbmRbdV0pJiYocj1zKGEubWF0Y2hlc1swXS5yZXBsYWNlKHBpLGdpKSxkaS50ZXN0KGlbMF0udHlwZSkmJndpKHQucGFyZW50Tm9kZSl8fHQpKSl7aWYoaS5zcGxpY2UobywxKSwhKGU9ci5sZW5ndGgmJlNpKGkpKSlyZXR1cm4gWG8uYXBwbHkobixyKSxuO2JyZWFrfX1yZXR1cm4oY3x8U28oZSxsKSkocix0LCFEbyxuLGRpLnRlc3QoZSkmJndpKHQucGFyZW50Tm9kZSl8fHQpLG59LHlvLnNvcnRTdGFibGU9TG8uc3BsaXQoIiIpLnNvcnQoSG8pLmpvaW4oIiIpPT09TG8seW8uZGV0ZWN0RHVwbGljYXRlcz0hIV9vLFJvKCkseW8uc29ydERldGFjaGVkPSEwO3ZhciBUaT1WLmRvY3VtZW50LEFpPUFycmF5LnByb3RvdHlwZS5wdXNoLERpPUFycmF5LnByb3RvdHlwZS5zbGljZSxPaT0vXig/OlteIzxdKig8W1x3XFddKz4pW14+XSokfCMoW1x3XC1dKikkKS8sQmk9aG8uRXZlbnQsUGk9aHIubWFrZU1hcCgiY2hpbGRyZW4sY29udGVudHMsbmV4dCxwcmV2IiksTGk9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PWV9LElpPWZ1bmN0aW9uKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZX0sTWk9ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG87Zm9yKG89KHQ9dHx8VGkpLmNyZWF0ZUVsZW1lbnQoImRpdiIpLG49dC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksby5pbm5lckhUTUw9ZTtyPW8uZmlyc3RDaGlsZDspbi5hcHBlbmRDaGlsZChyKTtyZXR1cm4gbn0sRmk9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG87aWYoSWkodCkpdD1NaSh0LFFpKGVbMF0pKTtlbHNlIGlmKHQubGVuZ3RoJiYhdC5ub2RlVHlwZSl7aWYodD1uYS5tYWtlQXJyYXkodCkscilmb3Iobz10Lmxlbmd0aC0xOzA8PW87by0tKUZpKGUsdFtvXSxuLHIpO2Vsc2UgZm9yKG89MDtvPHQubGVuZ3RoO28rKylGaShlLHRbb10sbixyKTtyZXR1cm4gZX1pZih0Lm5vZGVUeXBlKWZvcihvPWUubGVuZ3RoO28tLTspbi5jYWxsKGVbb10sdCk7cmV0dXJuIGV9LFVpPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJnQmJi0xIT09KCIgIitlLmNsYXNzTmFtZSsiICIpLmluZGV4T2YoIiAiK3QrIiAiKX0semk9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLG87cmV0dXJuIHQ9bmEodClbMF0sZS5lYWNoKGZ1bmN0aW9uKCl7biYmcj09PXRoaXMucGFyZW50Tm9kZXx8KHI9dGhpcy5wYXJlbnROb2RlLG89dC5jbG9uZU5vZGUoITEpLHRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobyx0aGlzKSksby5hcHBlbmRDaGlsZCh0aGlzKX0pLGV9LGppPWhyLm1ha2VNYXAoImZpbGxPcGFjaXR5IGZvbnRXZWlnaHQgbGluZUhlaWdodCBvcGFjaXR5IG9ycGhhbnMgd2lkb3dzIHpJbmRleCB6b29tIiwiICIpLEhpPWhyLm1ha2VNYXAoImNoZWNrZWQgY29tcGFjdCBkZWNsYXJlIGRlZmVyIGRpc2FibGVkIGlzbWFwIG11bHRpcGxlIG5vaHJlZiBub3NoYWRlIG5vd3JhcCByZWFkb25seSBzZWxlY3RlZCIsIiAiKSxWaT17ImZvciI6Imh0bWxGb3IiLCJjbGFzcyI6ImNsYXNzTmFtZSIscmVhZG9ubHk6InJlYWRPbmx5In0scWk9eyJmbG9hdCI6ImNzc0Zsb2F0In0sJGk9e30sV2k9e30sS2k9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IG5hLmZuLmluaXQoZSx0KX0sWGk9L15ccyp8XHMqJC9nLFlpPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT09ZXx8ZT09PXVuZGVmaW5lZD8iIjooIiIrZSkucmVwbGFjZShYaSwiIil9LEdpPWZ1bmN0aW9uKGUsdCl7dmFyIG4scixvLGk7aWYoZSlpZigobj1lLmxlbmd0aCk9PT11bmRlZmluZWQpe2ZvcihyIGluIGUpaWYoZS5oYXNPd25Qcm9wZXJ0eShyKSYmKGk9ZVtyXSwhMT09PXQuY2FsbChpLHIsaSkpKWJyZWFrfWVsc2UgZm9yKG89MDtvPG4mJihpPWVbb10sITEhPT10LmNhbGwoaSxvLGkpKTtvKyspO3JldHVybiBlfSxKaT1mdW5jdGlvbihlLG4pe3ZhciByPVtdO3JldHVybiBHaShlLGZ1bmN0aW9uKGUsdCl7bih0LGUpJiZyLnB1c2godCl9KSxyfSxRaT1mdW5jdGlvbihlKXtyZXR1cm4gZT85PT09ZS5ub2RlVHlwZT9lOmUub3duZXJEb2N1bWVudDpUaX07S2kuZm49S2kucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpLaSxzZWxlY3RvcjoiIixjb250ZXh0Om51bGwsbGVuZ3RoOjAsaW5pdDpmdW5jdGlvbihlLHQpe3ZhciBuLHIsbz10aGlzO2lmKCFlKXJldHVybiBvO2lmKGUubm9kZVR5cGUpcmV0dXJuIG8uY29udGV4dD1vWzBdPWUsby5sZW5ndGg9MSxvO2lmKHQmJnQubm9kZVR5cGUpby5jb250ZXh0PXQ7ZWxzZXtpZih0KXJldHVybiBuYShlKS5hdHRyKHQpO28uY29udGV4dD10PVYuZG9jdW1lbnR9aWYoSWkoZSkpe2lmKCEobj0iPCI9PT0oby5zZWxlY3Rvcj1lKS5jaGFyQXQoMCkmJiI+Ij09PWUuY2hhckF0KGUubGVuZ3RoLTEpJiYzPD1lLmxlbmd0aD9bbnVsbCxlLG51bGxdOk9pLmV4ZWMoZSkpKXJldHVybiBuYSh0KS5maW5kKGUpO2lmKG5bMV0pZm9yKHI9TWkoZSxRaSh0KSkuZmlyc3RDaGlsZDtyOylBaS5jYWxsKG8scikscj1yLm5leHRTaWJsaW5nO2Vsc2V7aWYoIShyPVFpKHQpLmdldEVsZW1lbnRCeUlkKG5bMl0pKSlyZXR1cm4gbztpZihyLmlkIT09blsyXSlyZXR1cm4gby5maW5kKGUpO28ubGVuZ3RoPTEsb1swXT1yfX1lbHNlIHRoaXMuYWRkKGUsITEpO3JldHVybiBvfSx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIGhyLnRvQXJyYXkodGhpcyl9LGFkZDpmdW5jdGlvbihlLHQpe3ZhciBuLHI7aWYoSWkoZSkpcmV0dXJuIHRoaXMuYWRkKG5hKGUpKTtpZighMSE9PXQpZm9yKG49bmEudW5pcXVlKHRoaXMudG9BcnJheSgpLmNvbmNhdChuYS5tYWtlQXJyYXkoZSkpKSx0aGlzLmxlbmd0aD1uLmxlbmd0aCxyPTA7cjxuLmxlbmd0aDtyKyspdGhpc1tyXT1uW3JdO2Vsc2UgQWkuYXBwbHkodGhpcyxuYS5tYWtlQXJyYXkoZSkpO3JldHVybiB0aGlzfSxhdHRyOmZ1bmN0aW9uKHQsbil7dmFyIGUscj10aGlzO2lmKCJvYmplY3QiPT10eXBlb2YgdClHaSh0LGZ1bmN0aW9uKGUsdCl7ci5hdHRyKGUsdCl9KTtlbHNle2lmKCFMaShuKSl7aWYoclswXSYmMT09PXJbMF0ubm9kZVR5cGUpe2lmKChlPSRpW3RdKSYmZS5nZXQpcmV0dXJuIGUuZ2V0KHJbMF0sdCk7aWYoSGlbdF0pcmV0dXJuIHIucHJvcCh0KT90OnVuZGVmaW5lZDtudWxsPT09KG49clswXS5nZXRBdHRyaWJ1dGUodCwyKSkmJihuPXVuZGVmaW5lZCl9cmV0dXJuIG59dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU7aWYoMT09PXRoaXMubm9kZVR5cGUpe2lmKChlPSRpW3RdKSYmZS5zZXQpcmV0dXJuIHZvaWQgZS5zZXQodGhpcyxuKTtudWxsPT09bj90aGlzLnJlbW92ZUF0dHJpYnV0ZSh0LDIpOnRoaXMuc2V0QXR0cmlidXRlKHQsbiwyKX19KX1yZXR1cm4gcn0scmVtb3ZlQXR0cjpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5hdHRyKGUsbnVsbCl9LHByb3A6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO2lmKCJvYmplY3QiPT10eXBlb2YoZT1WaVtlXXx8ZSkpR2koZSxmdW5jdGlvbihlLHQpe24ucHJvcChlLHQpfSk7ZWxzZXtpZighTGkodCkpcmV0dXJuIG5bMF0mJm5bMF0ubm9kZVR5cGUmJmUgaW4gblswXT9uWzBdW2VdOnQ7dGhpcy5lYWNoKGZ1bmN0aW9uKCl7MT09PXRoaXMubm9kZVR5cGUmJih0aGlzW2VdPXQpfSl9cmV0dXJuIG59LGNzczpmdW5jdGlvbihuLHIpe3ZhciBlLG8saT10aGlzLHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvLShcRCkvZyxmdW5jdGlvbihlLHQpe3JldHVybiB0LnRvVXBwZXJDYXNlKCl9KX0sYT1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC9bQS1aXS9nLGZ1bmN0aW9uKGUpe3JldHVybiItIitlfSl9O2lmKCJvYmplY3QiPT10eXBlb2YgbilHaShuLGZ1bmN0aW9uKGUsdCl7aS5jc3MoZSx0KX0pO2Vsc2UgaWYoTGkocikpbj10KG4pLCJudW1iZXIiIT10eXBlb2Ygcnx8amlbbl18fChyPXIudG9TdHJpbmcoKSsicHgiKSxpLmVhY2goZnVuY3Rpb24oKXt2YXIgZT10aGlzLnN0eWxlO2lmKChvPVdpW25dKSYmby5zZXQpby5zZXQodGhpcyxyKTtlbHNle3RyeXt0aGlzLnN0eWxlW3FpW25dfHxuXT1yfWNhdGNoKHQpe31udWxsIT09ciYmIiIhPT1yfHwoZS5yZW1vdmVQcm9wZXJ0eT9lLnJlbW92ZVByb3BlcnR5KGEobikpOmUucmVtb3ZlQXR0cmlidXRlKG4pKX19KTtlbHNle2lmKGU9aVswXSwobz1XaVtuXSkmJm8uZ2V0KXJldHVybiBvLmdldChlKTtpZighZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3KXJldHVybiBlLmN1cnJlbnRTdHlsZT9lLmN1cnJlbnRTdHlsZVt0KG4pXToiIjt0cnl7cmV0dXJuIGUub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGUsbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShhKG4pKX1jYXRjaCh1KXtyZXR1cm4gdW5kZWZpbmVkfX1yZXR1cm4gaX0scmVtb3ZlOmZ1bmN0aW9uKCl7Zm9yKHZhciBlLHQ9dGhpcy5sZW5ndGg7dC0tOyllPXRoaXNbdF0sQmkuY2xlYW4oZSksZS5wYXJlbnROb2RlJiZlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZSk7cmV0dXJuIHRoaXN9LGVtcHR5OmZ1bmN0aW9uKCl7Zm9yKHZhciBlLHQ9dGhpcy5sZW5ndGg7dC0tOylmb3IoZT10aGlzW3RdO2UuZmlyc3RDaGlsZDspZS5yZW1vdmVDaGlsZChlLmZpcnN0Q2hpbGQpO3JldHVybiB0aGlzfSxodG1sOmZ1bmN0aW9uKGUpe3ZhciB0O2lmKExpKGUpKXt0PXRoaXMubGVuZ3RoO3RyeXtmb3IoO3QtLTspdGhpc1t0XS5pbm5lckhUTUw9ZX1jYXRjaChuKXtuYSh0aGlzW3RdKS5lbXB0eSgpLmFwcGVuZChlKX1yZXR1cm4gdGhpc31yZXR1cm4gdGhpc1swXT90aGlzWzBdLmlubmVySFRNTDoiIn0sdGV4dDpmdW5jdGlvbihlKXt2YXIgdDtpZihMaShlKSl7Zm9yKHQ9dGhpcy5sZW5ndGg7dC0tOykiaW5uZXJUZXh0ImluIHRoaXNbdF0/dGhpc1t0XS5pbm5lclRleHQ9ZTp0aGlzWzBdLnRleHRDb250ZW50PWU7cmV0dXJuIHRoaXN9cmV0dXJuIHRoaXNbMF0/dGhpc1swXS5pbm5lclRleHR8fHRoaXNbMF0udGV4dENvbnRlbnQ6IiJ9LGFwcGVuZDpmdW5jdGlvbigpe3JldHVybiBGaSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihlKXsoMT09PXRoaXMubm9kZVR5cGV8fHRoaXMuaG9zdCYmMT09PXRoaXMuaG9zdC5ub2RlVHlwZSkmJnRoaXMuYXBwZW5kQ2hpbGQoZSl9KX0scHJlcGVuZDpmdW5jdGlvbigpe3JldHVybiBGaSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihlKXsoMT09PXRoaXMubm9kZVR5cGV8fHRoaXMuaG9zdCYmMT09PXRoaXMuaG9zdC5ub2RlVHlwZSkmJnRoaXMuaW5zZXJ0QmVmb3JlKGUsdGhpcy5maXJzdENoaWxkKX0sITApfSxiZWZvcmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlP0ZpKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGUpe3RoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSx0aGlzKX0pOnRoaXN9LGFmdGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbMF0mJnRoaXNbMF0ucGFyZW50Tm9kZT9GaSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihlKXt0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGUsdGhpcy5uZXh0U2libGluZyl9LCEwKTp0aGlzfSxhcHBlbmRUbzpmdW5jdGlvbihlKXtyZXR1cm4gbmEoZSkuYXBwZW5kKHRoaXMpLHRoaXN9LHByZXBlbmRUbzpmdW5jdGlvbihlKXtyZXR1cm4gbmEoZSkucHJlcGVuZCh0aGlzKSx0aGlzfSxyZXBsYWNlV2l0aDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5iZWZvcmUoZSkucmVtb3ZlKCl9LHdyYXA6ZnVuY3Rpb24oZSl7cmV0dXJuIHppKHRoaXMsZSl9LHdyYXBBbGw6ZnVuY3Rpb24oZSl7cmV0dXJuIHppKHRoaXMsZSwhMCl9LHdyYXBJbm5lcjpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7bmEodGhpcykuY29udGVudHMoKS53cmFwQWxsKGUpfSksdGhpc30sdW53cmFwOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyZW50KCkuZWFjaChmdW5jdGlvbigpe25hKHRoaXMpLnJlcGxhY2VXaXRoKHRoaXMuY2hpbGROb2Rlcyl9KX0sY2xvbmU6ZnVuY3Rpb24oKXt2YXIgZT1bXTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZS5wdXNoKHRoaXMuY2xvbmVOb2RlKCEwKSl9KSxuYShlKX0sYWRkQ2xhc3M6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMudG9nZ2xlQ2xhc3MoZSwhMCl9LHJlbW92ZUNsYXNzOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnRvZ2dsZUNsYXNzKGUsITEpfSx0b2dnbGVDbGFzczpmdW5jdGlvbihvLGkpe3ZhciBlPXRoaXM7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBvfHwoLTEhPT1vLmluZGV4T2YoIiAiKT9HaShvLnNwbGl0KCIgIiksZnVuY3Rpb24oKXtlLnRvZ2dsZUNsYXNzKHRoaXMsaSl9KTplLmVhY2goZnVuY3Rpb24oZSx0KXt2YXIgbixyOyhyPVVpKHQsbykpIT09aSYmKG49dC5jbGFzc05hbWUscj90LmNsYXNzTmFtZT1ZaSgoIiAiK24rIiAiKS5yZXBsYWNlKCIgIitvKyIgIiwiICIpKTp0LmNsYXNzTmFtZSs9bj8iICIrbzpvKX0pKSxlfSxoYXNDbGFzczpmdW5jdGlvbihlKXtyZXR1cm4gVWkodGhpc1swXSxlKX0sZWFjaDpmdW5jdGlvbihlKXtyZXR1cm4gR2kodGhpcyxlKX0sb246ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7QmkuYmluZCh0aGlzLGUsdCl9KX0sb2ZmOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe0JpLnVuYmluZCh0aGlzLGUsdCl9KX0sdHJpZ2dlcjpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Im9iamVjdCI9PXR5cGVvZiBlP0JpLmZpcmUodGhpcyxlLnR5cGUsZSk6QmkuZmlyZSh0aGlzLGUpfSl9LHNob3c6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jc3MoImRpc3BsYXkiLCIiKX0saGlkZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNzcygiZGlzcGxheSIsIm5vbmUiKX0sc2xpY2U6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IG5hKERpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9LGVxOmZ1bmN0aW9uKGUpe3JldHVybi0xPT09ZT90aGlzLnNsaWNlKGUpOnRoaXMuc2xpY2UoZSwrZSsxKX0sZmlyc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgwKX0sbGFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKC0xKX0sZmluZDpmdW5jdGlvbihlKXt2YXIgdCxuLHI9W107Zm9yKHQ9MCxuPXRoaXMubGVuZ3RoO3Q8bjt0KyspbmEuZmluZChlLHRoaXNbdF0scik7cmV0dXJuIG5hKHIpfSxmaWx0ZXI6ZnVuY3Rpb24obil7cmV0dXJuIG5hKCJmdW5jdGlvbiI9PXR5cGVvZiBuP0ppKHRoaXMudG9BcnJheSgpLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG4odCxlKX0pOm5hLmZpbHRlcihuLHRoaXMudG9BcnJheSgpKSl9LGNsb3Nlc3Q6ZnVuY3Rpb24obil7dmFyIHI9W107cmV0dXJuIG4gaW5zdGFuY2VvZiBuYSYmKG49blswXSksdGhpcy5lYWNoKGZ1bmN0aW9uKGUsdCl7Zm9yKDt0Oyl7aWYoInN0cmluZyI9PXR5cGVvZiBuJiZuYSh0KS5pcyhuKSl7ci5wdXNoKHQpO2JyZWFrfWlmKHQ9PT1uKXtyLnB1c2godCk7YnJlYWt9dD10LnBhcmVudE5vZGV9fSksbmEocil9LG9mZnNldDpmdW5jdGlvbihlKXt2YXIgdCxuLHIsbyxpPTAsYT0wO3JldHVybiBlP3RoaXMuY3NzKGUpOigodD10aGlzWzBdKSYmKHI9KG49dC5vd25lckRvY3VtZW50KS5kb2N1bWVudEVsZW1lbnQsdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QmJihpPShvPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpLmxlZnQrKHIuc2Nyb2xsTGVmdHx8bi5ib2R5LnNjcm9sbExlZnQpLXIuY2xpZW50TGVmdCxhPW8udG9wKyhyLnNjcm9sbFRvcHx8bi5ib2R5LnNjcm9sbFRvcCktci5jbGllbnRUb3ApKSx7bGVmdDppLHRvcDphfSl9LHB1c2g6QWksc29ydDpBcnJheS5wcm90b3R5cGUuc29ydCxzcGxpY2U6QXJyYXkucHJvdG90eXBlLnNwbGljZX0saHIuZXh0ZW5kKEtpLHtleHRlbmQ6aHIuZXh0ZW5kLG1ha2VBcnJheTpmdW5jdGlvbihlKXtyZXR1cm4odD1lKSYmdD09PXQud2luZG93fHxlLm5vZGVUeXBlP1tlXTpoci50b0FycmF5KGUpO3ZhciB0fSxpbkFycmF5OmZ1bmN0aW9uKGUsdCl7dmFyIG47aWYodC5pbmRleE9mKXJldHVybiB0LmluZGV4T2YoZSk7Zm9yKG49dC5sZW5ndGg7bi0tOylpZih0W25dPT09ZSlyZXR1cm4gbjtyZXR1cm4tMX0saXNBcnJheTpoci5pc0FycmF5LGVhY2g6R2ksdHJpbTpZaSxncmVwOkppLGZpbmQ6aGksZXhwcjpoaS5zZWxlY3RvcnMsdW5pcXVlOmhpLnVuaXF1ZVNvcnQsdGV4dDpoaS5nZXRUZXh0LGNvbnRhaW5zOmhpLmNvbnRhaW5zLGZpbHRlcjpmdW5jdGlvbihlLHQsbil7dmFyIHI9dC5sZW5ndGg7Zm9yKG4mJihlPSI6bm90KCIrZSsiKSIpO3ItLTspMSE9PXRbcl0ubm9kZVR5cGUmJnQuc3BsaWNlKHIsMSk7cmV0dXJuIHQ9MT09PXQubGVuZ3RoP25hLmZpbmQubWF0Y2hlc1NlbGVjdG9yKHRbMF0sZSk/W3RbMF1dOltdOm5hLmZpbmQubWF0Y2hlcyhlLHQpfX0pO3ZhciBaaT1mdW5jdGlvbihlLHQsbil7dmFyIHI9W10sbz1lW3RdO2Zvcigic3RyaW5nIiE9dHlwZW9mIG4mJm4gaW5zdGFuY2VvZiBuYSYmKG49blswXSk7byYmOSE9PW8ubm9kZVR5cGU7KXtpZihuIT09dW5kZWZpbmVkKXtpZihvPT09bilicmVhaztpZigic3RyaW5nIj09dHlwZW9mIG4mJm5hKG8pLmlzKG4pKWJyZWFrfTE9PT1vLm5vZGVUeXBlJiZyLnB1c2gobyksbz1vW3RdfXJldHVybiByfSxlYT1mdW5jdGlvbihlLHQsbixyKXt2YXIgbz1bXTtmb3IociBpbnN0YW5jZW9mIG5hJiYocj1yWzBdKTtlO2U9ZVt0XSlpZighbnx8ZS5ub2RlVHlwZT09PW4pe2lmKHIhPT11bmRlZmluZWQpe2lmKGU9PT1yKWJyZWFrO2lmKCJzdHJpbmciPT10eXBlb2YgciYmbmEoZSkuaXMocikpYnJlYWt9by5wdXNoKGUpfXJldHVybiBvfSx0YT1mdW5jdGlvbihlLHQsbil7Zm9yKGU9ZVt0XTtlO2U9ZVt0XSlpZihlLm5vZGVUeXBlPT09bilyZXR1cm4gZTtyZXR1cm4gbnVsbH07R2koe3BhcmVudDpmdW5jdGlvbihlKXt2YXIgdD1lLnBhcmVudE5vZGU7cmV0dXJuIHQmJjExIT09dC5ub2RlVHlwZT90Om51bGx9LHBhcmVudHM6ZnVuY3Rpb24oZSl7cmV0dXJuIFppKGUsInBhcmVudE5vZGUiKX0sbmV4dDpmdW5jdGlvbihlKXtyZXR1cm4gdGEoZSwibmV4dFNpYmxpbmciLDEpfSxwcmV2OmZ1bmN0aW9uKGUpe3JldHVybiB0YShlLCJwcmV2aW91c1NpYmxpbmciLDEpfSxjaGlsZHJlbjpmdW5jdGlvbihlKXtyZXR1cm4gZWEoZS5maXJzdENoaWxkLCJuZXh0U2libGluZyIsMSl9LGNvbnRlbnRzOmZ1bmN0aW9uKGUpe3JldHVybiBoci50b0FycmF5KCgiaWZyYW1lIj09PWUubm9kZU5hbWU/ZS5jb250ZW50RG9jdW1lbnR8fGUuY29udGVudFdpbmRvdy5kb2N1bWVudDplKS5jaGlsZE5vZGVzKX19LGZ1bmN0aW9uKHIsbyl7S2kuZm5bcl09ZnVuY3Rpb24odCl7dmFyIG49W107dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9by5jYWxsKG4sdGhpcyx0LG4pO2UmJihuYS5pc0FycmF5KGUpP24ucHVzaC5hcHBseShuLGUpOm4ucHVzaChlKSl9KSwxPHRoaXMubGVuZ3RoJiYoUGlbcl18fChuPW5hLnVuaXF1ZShuKSksMD09PXIuaW5kZXhPZigicGFyZW50cyIpJiYobj1uLnJldmVyc2UoKSkpO3ZhciBlPW5hKG4pO3JldHVybiB0P2UuZmlsdGVyKHQpOmV9fSksR2koe3BhcmVudHNVbnRpbDpmdW5jdGlvbihlLHQpe3JldHVybiBaaShlLCJwYXJlbnROb2RlIix0KX0sbmV4dFVudGlsOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGVhKGUsIm5leHRTaWJsaW5nIiwxLHQpLnNsaWNlKDEpfSxwcmV2VW50aWw6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZWEoZSwicHJldmlvdXNTaWJsaW5nIiwxLHQpLnNsaWNlKDEpfX0sZnVuY3Rpb24obyxpKXtLaS5mbltvXT1mdW5jdGlvbih0LGUpe3ZhciBuPVtdO3RoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlPWkuY2FsbChuLHRoaXMsdCxuKTtlJiYobmEuaXNBcnJheShlKT9uLnB1c2guYXBwbHkobixlKTpuLnB1c2goZSkpfSksMTx0aGlzLmxlbmd0aCYmKG49bmEudW5pcXVlKG4pLDAhPT1vLmluZGV4T2YoInBhcmVudHMiKSYmInByZXZVbnRpbCIhPT1vfHwobj1uLnJldmVyc2UoKSkpO3ZhciByPW5hKG4pO3JldHVybiBlP3IuZmlsdGVyKGUpOnJ9fSksS2kuZm4uaXM9ZnVuY3Rpb24oZSl7cmV0dXJuISFlJiYwPHRoaXMuZmlsdGVyKGUpLmxlbmd0aH0sS2kuZm4uaW5pdC5wcm90b3R5cGU9S2kuZm4sS2kub3ZlcnJpZGVEZWZhdWx0cz1mdW5jdGlvbihuKXt2YXIgcixvPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHI9cnx8bigpLDA9PT1hcmd1bWVudHMubGVuZ3RoJiYoZT1yLmVsZW1lbnQpLHQ9dHx8ci5jb250ZXh0LG5ldyBvLmZuLmluaXQoZSx0KX07cmV0dXJuIG5hLmV4dGVuZChvLHRoaXMpLG99LEtpLmF0dHJIb29rcz0kaSxLaS5jc3NIb29rcz1XaTt2YXIgbmE9S2kscmE9KG9hLnByb3RvdHlwZS5jdXJyZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZX0sb2EucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMubm9kZT10aGlzLmZpbmRTaWJsaW5nKHRoaXMubm9kZSwiZmlyc3RDaGlsZCIsIm5leHRTaWJsaW5nIixlKSx0aGlzLm5vZGV9LG9hLnByb3RvdHlwZS5wcmV2PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm5vZGU9dGhpcy5maW5kU2libGluZyh0aGlzLm5vZGUsImxhc3RDaGlsZCIsInByZXZpb3VzU2libGluZyIsZSksdGhpcy5ub2RlfSxvYS5wcm90b3R5cGUucHJldjI9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMubm9kZT10aGlzLmZpbmRQcmV2aW91c05vZGUodGhpcy5ub2RlLCJsYXN0Q2hpbGQiLCJwcmV2aW91c1NpYmxpbmciLGUpLHRoaXMubm9kZX0sb2EucHJvdG90eXBlLmZpbmRTaWJsaW5nPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvLGk7aWYoZSl7aWYoIXImJmVbdF0pcmV0dXJuIGVbdF07aWYoZSE9PXRoaXMucm9vdE5vZGUpe2lmKG89ZVtuXSlyZXR1cm4gbztmb3IoaT1lLnBhcmVudE5vZGU7aSYmaSE9PXRoaXMucm9vdE5vZGU7aT1pLnBhcmVudE5vZGUpaWYobz1pW25dKXJldHVybiBvfX19LG9hLnByb3RvdHlwZS5maW5kUHJldmlvdXNOb2RlPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvLGksYTtpZihlKXtpZihvPWVbbl0sdGhpcy5yb290Tm9kZSYmbz09PXRoaXMucm9vdE5vZGUpcmV0dXJuO2lmKG8pe2lmKCFyKWZvcihhPW9bdF07YTthPWFbdF0paWYoIWFbdF0pcmV0dXJuIGE7cmV0dXJuIG99aWYoKGk9ZS5wYXJlbnROb2RlKSYmaSE9PXRoaXMucm9vdE5vZGUpcmV0dXJuIGl9fSxvYSk7ZnVuY3Rpb24gb2EoZSx0KXt0aGlzLm5vZGU9ZSx0aGlzLnJvb3ROb2RlPXQsdGhpcy5jdXJyZW50PXRoaXMuY3VycmVudC5iaW5kKHRoaXMpLHRoaXMubmV4dD10aGlzLm5leHQuYmluZCh0aGlzKSx0aGlzLnByZXY9dGhpcy5wcmV2LmJpbmQodGhpcyksdGhpcy5wcmV2Mj10aGlzLnByZXYyLmJpbmQodGhpcyl9dmFyIGlhLGFhPWhyLmVhY2gsdWE9aHIuZ3JlcCxzYT1yci5pZSxjYT0vXihbYS16MC05XSw/KSskL2ksbGE9L15bIFx0XHJcbl0qJC8sZmE9ZnVuY3Rpb24obixyLG8pe3ZhciBpPXIua2VlcF92YWx1ZXMsZT17c2V0OmZ1bmN0aW9uKGUsdCxuKXtyLnVybF9jb252ZXJ0ZXImJih0PXIudXJsX2NvbnZlcnRlci5jYWxsKHIudXJsX2NvbnZlcnRlcl9zY29wZXx8bygpLHQsbixlWzBdKSksZS5hdHRyKCJkYXRhLW1jZS0iK24sdCkuYXR0cihuLHQpfSxnZXQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5hdHRyKCJkYXRhLW1jZS0iK3QpfHxlLmF0dHIodCl9fSx0PXtzdHlsZTp7c2V0OmZ1bmN0aW9uKGUsdCl7bnVsbD09PXR8fCJvYmplY3QiIT10eXBlb2YgdD8oaSYmZS5hdHRyKCJkYXRhLW1jZS1zdHlsZSIsdCksbnVsbCE9PXQmJiJzdHJpbmciPT10eXBlb2YgdD8oZS5yZW1vdmVBdHRyKCJzdHlsZSIpLGUuY3NzKG4ucGFyc2UodCkpKTplLmF0dHIoInN0eWxlIix0KSk6ZS5jc3ModCl9LGdldDpmdW5jdGlvbihlKXt2YXIgdD1lLmF0dHIoImRhdGEtbWNlLXN0eWxlIil8fGUuYXR0cigic3R5bGUiKTtyZXR1cm4gdD1uLnNlcmlhbGl6ZShuLnBhcnNlKHQpLGVbMF0ubm9kZU5hbWUpfX19O3JldHVybiBpJiYodC5ocmVmPXQuc3JjPWUpLHR9LGRhPWZ1bmN0aW9uKGUsdCl7dmFyIG49dC5hdHRyKCJzdHlsZSIpLHI9ZS5zZXJpYWxpemUoZS5wYXJzZShuKSx0WzBdLm5vZGVOYW1lKTtyPXJ8fG51bGwsdC5hdHRyKCJkYXRhLW1jZS1zdHlsZSIscil9LG1hPWZ1bmN0aW9uKGUsdCl7dmFyIG4scixvPTA7aWYoZSlmb3Iobj1lLm5vZGVUeXBlLGU9ZS5wcmV2aW91c1NpYmxpbmc7ZTtlPWUucHJldmlvdXNTaWJsaW5nKXI9ZS5ub2RlVHlwZSwoIXR8fDMhPT1yfHxyIT09biYmZS5ub2RlVmFsdWUubGVuZ3RoKSYmKG8rKyxuPXIpO3JldHVybiBvfTtmdW5jdGlvbiBwYShhLHUpe3ZhciBzLGM9dGhpczt2b2lkIDA9PT11JiYodT17fSk7dmFyIHI9e30sbD1WLndpbmRvdyxvPXt9LHQ9MCxlPXZyKGEse2NvbnRlbnRDc3NDb3JzOnUuY29udGVudENzc0NvcnMscmVmZXJyZXJQb2xpY3k6dS5yZWZlcnJlclBvbGljeX0pLGY9W10sZD11LnNjaGVtYT91LnNjaGVtYTpubyh7fSksaT1hbyh7dXJsX2NvbnZlcnRlcjp1LnVybF9jb252ZXJ0ZXIsdXJsX2NvbnZlcnRlcl9zY29wZTp1LnVybF9jb252ZXJ0ZXJfc2NvcGV9LHUuc2NoZW1hKSxtPXUub3duRXZlbnRzP25ldyBobzpoby5FdmVudCxuPWQuZ2V0QmxvY2tFbGVtZW50cygpLHA9bmEub3ZlcnJpZGVEZWZhdWx0cyhmdW5jdGlvbigpe3JldHVybntjb250ZXh0OmEsZWxlbWVudDpILmdldFJvb3QoKX19KSxnPWZ1bmN0aW9uKGUpe2lmKGUmJmEmJiJzdHJpbmciPT10eXBlb2YgZSl7dmFyIHQ9YS5nZXRFbGVtZW50QnlJZChlKTtyZXR1cm4gdCYmdC5pZCE9PWU/YS5nZXRFbGVtZW50c0J5TmFtZShlKVsxXTp0fXJldHVybiBlfSxoPWZ1bmN0aW9uKGUpe3JldHVybiBwKCJzdHJpbmciPT10eXBlb2YgZT9nKGUpOmUpfSx2PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixvLGk9aChlKTtyZXR1cm4gaS5sZW5ndGgmJihvPShyPXNbdF0pJiZyLmdldD9yLmdldChpLHQpOmkuYXR0cih0KSksdm9pZCAwPT09byYmKG89bnx8IiIpLG99LHk9ZnVuY3Rpb24oZSl7dmFyIHQ9ZyhlKTtyZXR1cm4gdD90LmF0dHJpYnV0ZXM6W119LGI9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLG87IiI9PT1uJiYobj1udWxsKTt2YXIgaT1oKGUpO3I9aS5hdHRyKHQpLGkubGVuZ3RoJiYoKG89c1t0XSkmJm8uc2V0P28uc2V0KGksbix0KTppLmF0dHIodCxuKSxyIT09biYmdS5vblNldEF0dHJpYiYmdS5vblNldEF0dHJpYih7YXR0ckVsbTppLGF0dHJOYW1lOnQsYXR0clZhbHVlOm59KSl9LEM9ZnVuY3Rpb24oKXtyZXR1cm4gdS5yb290X2VsZW1lbnR8fGEuYm9keX0sdz1mdW5jdGlvbihlLHQpe3JldHVybiBibihhLmJvZHksZyhlKSx0KX0seD1mdW5jdGlvbihlLHQsbil7dmFyIHI9aChlKTtyZXR1cm4gbj9yLmNzcyh0KTooImZsb2F0Ij09PSh0PXQucmVwbGFjZSgvLShcRCkvZyxmdW5jdGlvbihlLHQpe3JldHVybiB0LnRvVXBwZXJDYXNlKCl9KSkmJih0PXJyLmJyb3dzZXIuaXNJRSgpPyJzdHlsZUZsb2F0IjoiY3NzRmxvYXQiKSxyWzBdJiZyWzBdLnN0eWxlP3JbMF0uc3R5bGVbdF06dW5kZWZpbmVkKX0sUz1mdW5jdGlvbihlKXt2YXIgdCxuO3JldHVybiBlPWcoZSksdD14KGUsIndpZHRoIiksbj14KGUsImhlaWdodCIpLC0xPT09dC5pbmRleE9mKCJweCIpJiYodD0wKSwtMT09PW4uaW5kZXhPZigicHgiKSYmKG49MCkse3c6cGFyc2VJbnQodCwxMCl8fGUub2Zmc2V0V2lkdGh8fGUuY2xpZW50V2lkdGgsaDpwYXJzZUludChuLDEwKXx8ZS5vZmZzZXRIZWlnaHR8fGUuY2xpZW50SGVpZ2h0fX0sTj1mdW5jdGlvbihlLHQpe3ZhciBuO2lmKCFlKXJldHVybiExO2lmKCFBcnJheS5pc0FycmF5KGUpKXtpZigiKiI9PT10KXJldHVybiAxPT09ZS5ub2RlVHlwZTtpZihjYS50ZXN0KHQpKXt2YXIgcj10LnRvTG93ZXJDYXNlKCkuc3BsaXQoLywvKSxvPWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtmb3Iobj1yLmxlbmd0aC0xOzA8PW47bi0tKWlmKHJbbl09PT1vKXJldHVybiEwO3JldHVybiExfWlmKGUubm9kZVR5cGUmJjEhPT1lLm5vZGVUeXBlKXJldHVybiExfXZhciBpPUFycmF5LmlzQXJyYXkoZSk/ZTpbZV07cmV0dXJuIDA8aGkodCxpWzBdLm93bmVyRG9jdW1lbnR8fGlbMF0sbnVsbCxpKS5sZW5ndGh9LEU9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG8saT1bXSxhPWcoZSk7Zm9yKHI9cj09PXVuZGVmaW5lZCxuPW58fCgiQk9EWSIhPT1DKCkubm9kZU5hbWU/QygpLnBhcmVudE5vZGU6bnVsbCksaHIuaXModCwic3RyaW5nIikmJih0PSIqIj09PShvPXQpP2Z1bmN0aW9uKGUpe3JldHVybiAxPT09ZS5ub2RlVHlwZX06ZnVuY3Rpb24oZSl7cmV0dXJuIE4oZSxvKX0pO2EmJmEhPT1uJiZhLm5vZGVUeXBlJiY5IT09YS5ub2RlVHlwZTspe2lmKCF0fHwiZnVuY3Rpb24iPT10eXBlb2YgdCYmdChhKSl7aWYoIXIpcmV0dXJuW2FdO2kucHVzaChhKX1hPWEucGFyZW50Tm9kZX1yZXR1cm4gcj9pOm51bGx9LGs9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXQ7aWYoZSlmb3IoInN0cmluZyI9PXR5cGVvZiB0JiYocj1mdW5jdGlvbihlKXtyZXR1cm4gTihlLHQpfSksZT1lW25dO2U7ZT1lW25dKWlmKCJmdW5jdGlvbiI9PXR5cGVvZiByJiZyKGUpKXJldHVybiBlO3JldHVybiBudWxsfSxfPWZ1bmN0aW9uKGUsbixyKXt2YXIgbyx0PSJzdHJpbmciPT10eXBlb2YgZT9nKGUpOmU7aWYoIXQpcmV0dXJuITE7aWYoaHIuaXNBcnJheSh0KSYmKHQubGVuZ3RofHwwPT09dC5sZW5ndGgpKXJldHVybiBvPVtdLGFhKHQsZnVuY3Rpb24oZSx0KXtlJiYoInN0cmluZyI9PXR5cGVvZiBlJiYoZT1nKGUpKSxvLnB1c2gobi5jYWxsKHIsZSx0KSkpfSksbzt2YXIgaT1yfHxjO3JldHVybiBuLmNhbGwoaSx0KX0sUj1mdW5jdGlvbihlLHQpe2goZSkuZWFjaChmdW5jdGlvbihlLG4pe2FhKHQsZnVuY3Rpb24oZSx0KXtiKG4sdCxlKX0pfSl9LFQ9ZnVuY3Rpb24oZSxyKXt2YXIgdD1oKGUpO3NhP3QuZWFjaChmdW5jdGlvbihlLHQpe2lmKCExIT09dC5jYW5IYXZlSFRNTCl7Zm9yKDt0LmZpcnN0Q2hpbGQ7KXQucmVtb3ZlQ2hpbGQodC5maXJzdENoaWxkKTt0cnl7dC5pbm5lckhUTUw9Ijxicj4iK3IsdC5yZW1vdmVDaGlsZCh0LmZpcnN0Q2hpbGQpfWNhdGNoKG4pe25hKCI8ZGl2PjwvZGl2PiIpLmh0bWwoIjxicj4iK3IpLmNvbnRlbnRzKCkuc2xpY2UoMSkuYXBwZW5kVG8odCl9cmV0dXJuIHJ9fSk6dC5odG1sKHIpfSxBPWZ1bmN0aW9uKGUsbixyLG8saSl7cmV0dXJuIF8oZSxmdW5jdGlvbihlKXt2YXIgdD0ic3RyaW5nIj09dHlwZW9mIG4/YS5jcmVhdGVFbGVtZW50KG4pOm47cmV0dXJuIFIodCxyKSxvJiYoInN0cmluZyIhPXR5cGVvZiBvJiZvLm5vZGVUeXBlP3QuYXBwZW5kQ2hpbGQobyk6InN0cmluZyI9PXR5cGVvZiBvJiZUKHQsbykpLGk/dDplLmFwcGVuZENoaWxkKHQpfSl9LEQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBBKGEuY3JlYXRlRWxlbWVudChlKSxlLHQsbiwhMCl9LE89JHIuZGVjb2RlLEI9JHIuZW5jb2RlQWxsUmF3LFA9ZnVuY3Rpb24oZSx0KXt2YXIgbj1oKGUpO3JldHVybiB0P24uZWFjaChmdW5jdGlvbigpe2Zvcih2YXIgZTtlPXRoaXMuZmlyc3RDaGlsZDspMz09PWUubm9kZVR5cGUmJjA9PT1lLmRhdGEubGVuZ3RoP3RoaXMucmVtb3ZlQ2hpbGQoZSk6dGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlLHRoaXMpfSkucmVtb3ZlKCk6bi5yZW1vdmUoKSwxPG4ubGVuZ3RoP24udG9BcnJheSgpOm5bMF19LEw9ZnVuY3Rpb24oZSx0LG4pe2goZSkudG9nZ2xlQ2xhc3ModCxuKS5lYWNoKGZ1bmN0aW9uKCl7IiI9PT10aGlzLmNsYXNzTmFtZSYmbmEodGhpcykuYXR0cigiY2xhc3MiLG51bGwpfSl9LEk9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBfKGUsZnVuY3Rpb24oZSl7cmV0dXJuIGhyLmlzKGUsImFycmF5IikmJih0PXQuY2xvbmVOb2RlKCEwKSksbiYmYWEodWEoZS5jaGlsZE5vZGVzKSxmdW5jdGlvbihlKXt0LmFwcGVuZENoaWxkKGUpfSksZS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZCh0LGUpfSl9LE09ZnVuY3Rpb24oZSl7aWYoJHQoZSkpe3ZhciB0PSJhIj09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmIXYoZSwiaHJlZiIpJiZ2KGUsImlkIik7aWYodihlLCJuYW1lIil8fHYoZSwiZGF0YS1tY2UtYm9va21hcmsiKXx8dClyZXR1cm4hMH1yZXR1cm4hMX0sRj1mdW5jdGlvbigpe3JldHVybiBhLmNyZWF0ZVJhbmdlKCl9LFU9ZnVuY3Rpb24oZSx0LG4scil7aWYoaHIuaXNBcnJheShlKSl7Zm9yKHZhciBvPWUubGVuZ3RoLGk9W107by0tOylpW29dPVUoZVtvXSx0LG4scik7cmV0dXJuIGl9cmV0dXJuIXUuY29sbGVjdHx8ZSE9PWEmJmUhPT1sfHxmLnB1c2goW2UsdCxuLHJdKSxtLmJpbmQoZSx0LG4scnx8SCl9LHo9ZnVuY3Rpb24oZSx0LG4pe3ZhciByO2lmKGhyLmlzQXJyYXkoZSkpe3I9ZS5sZW5ndGg7Zm9yKHZhciBvPVtdO3ItLTspb1tyXT16KGVbcl0sdCxuKTtyZXR1cm4gb31pZigwPGYubGVuZ3RoJiYoZT09PWF8fGU9PT1sKSlmb3Iocj1mLmxlbmd0aDtyLS07KXt2YXIgaT1mW3JdO2UhPT1pWzBdfHx0JiZ0IT09aVsxXXx8biYmbiE9PWlbMl18fG0udW5iaW5kKGlbMF0saVsxXSxpWzJdKX1yZXR1cm4gbS51bmJpbmQoZSx0LG4pfSxqPWZ1bmN0aW9uKGUpe2lmKGUmJiR0KGUpKXt2YXIgdD1lLmdldEF0dHJpYnV0ZSgiZGF0YS1tY2UtY29udGVudGVkaXRhYmxlIik7cmV0dXJuIHQmJiJpbmhlcml0IiE9PXQ/dDoiaW5oZXJpdCIhPT1lLmNvbnRlbnRFZGl0YWJsZT9lLmNvbnRlbnRFZGl0YWJsZTpudWxsfXJldHVybiBudWxsfSxIPXtkb2M6YSxzZXR0aW5nczp1LHdpbjpsLGZpbGVzOm8sc3RkTW9kZTohMCxib3hNb2RlbDohMCxzdHlsZVNoZWV0TG9hZGVyOmUsYm91bmRFdmVudHM6ZixzdHlsZXM6aSxzY2hlbWE6ZCxldmVudHM6bSxpc0Jsb2NrOmZ1bmN0aW9uKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4hIW5bZV07aWYoZSl7dmFyIHQ9ZS5ub2RlVHlwZTtpZih0KXJldHVybiEoMSE9PXR8fCFuW2Uubm9kZU5hbWVdKX1yZXR1cm4hMX0sJDpwLCQkOmgscm9vdDpudWxsLGNsb25lOmZ1bmN0aW9uKHQsZSl7aWYoIXNhfHwxIT09dC5ub2RlVHlwZXx8ZSlyZXR1cm4gdC5jbG9uZU5vZGUoZSk7dmFyIG49YS5jcmVhdGVFbGVtZW50KHQubm9kZU5hbWUpO3JldHVybiBhYSh5KHQpLGZ1bmN0aW9uKGUpe2IobixlLm5vZGVOYW1lLHYodCxlLm5vZGVOYW1lKSl9KSxufSxnZXRSb290OkMsZ2V0Vmlld1BvcnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9SHQoZSk7cmV0dXJue3g6dC54LHk6dC55LHc6dC53aWR0aCxoOnQuaGVpZ2h0fX0sZ2V0UmVjdDpmdW5jdGlvbihlKXt2YXIgdCxuO3JldHVybiBlPWcoZSksdD13KGUpLG49UyhlKSx7eDp0LngseTp0LnksdzpuLncsaDpuLmh9fSxnZXRTaXplOlMsZ2V0UGFyZW50OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1FKGUsdCxuLCExKTtyZXR1cm4gciYmMDxyLmxlbmd0aD9yWzBdOm51bGx9LGdldFBhcmVudHM6RSxnZXQ6ZyxnZXROZXh0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGsoZSx0LCJuZXh0U2libGluZyIpfSxnZXRQcmV2OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGsoZSx0LCJwcmV2aW91c1NpYmxpbmciKX0sc2VsZWN0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGhpKGUsZyh0KXx8dS5yb290X2VsZW1lbnR8fGEsW10pfSxpczpOLGFkZDpBLGNyZWF0ZTpELGNyZWF0ZUhUTUw6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLG89IiI7Zm9yKHIgaW4gbys9IjwiK2UsdCl0Lmhhc093blByb3BlcnR5KHIpJiZudWxsIT09dFtyXSYmInVuZGVmaW5lZCIhPXR5cGVvZiB0W3JdJiYobys9IiAiK3IrJz0iJytCKHRbcl0pKyciJyk7cmV0dXJuIHZvaWQgMCE9PW4/bysiPiIrbisiPC8iK2UrIj4iOm8rIiAvPiJ9LGNyZWF0ZUZyYWdtZW50OmZ1bmN0aW9uKGUpe3ZhciB0LG49YS5jcmVhdGVFbGVtZW50KCJkaXYiKSxyPWEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO2ZvcihyLmFwcGVuZENoaWxkKG4pLGUmJihuLmlubmVySFRNTD1lKTt0PW4uZmlyc3RDaGlsZDspci5hcHBlbmRDaGlsZCh0KTtyZXR1cm4gci5yZW1vdmVDaGlsZChuKSxyfSxyZW1vdmU6UCxzZXRTdHlsZTpmdW5jdGlvbihlLHQsbil7dmFyIHI9cSh0KT9oKGUpLmNzcyh0LG4pOmgoZSkuY3NzKHQpO3UudXBkYXRlX3N0eWxlcyYmZGEoaSxyKX0sZ2V0U3R5bGU6eCxzZXRTdHlsZXM6ZnVuY3Rpb24oZSx0KXt2YXIgbj1oKGUpLmNzcyh0KTt1LnVwZGF0ZV9zdHlsZXMmJmRhKGksbil9LHJlbW92ZUFsbEF0dHJpYnM6ZnVuY3Rpb24oZSl7cmV0dXJuIF8oZSxmdW5jdGlvbihlKXt2YXIgdCxuPWUuYXR0cmlidXRlcztmb3IodD1uLmxlbmd0aC0xOzA8PXQ7dC0tKWUucmVtb3ZlQXR0cmlidXRlTm9kZShuLml0ZW0odCkpfSl9LHNldEF0dHJpYjpiLHNldEF0dHJpYnM6UixnZXRBdHRyaWI6dixnZXRQb3M6dyxwYXJzZVN0eWxlOmZ1bmN0aW9uKGUpe3JldHVybiBpLnBhcnNlKGUpfSxzZXJpYWxpemVTdHlsZTpmdW5jdGlvbihlLHQpe3JldHVybiBpLnNlcmlhbGl6ZShlLHQpfSxhZGRTdHlsZTpmdW5jdGlvbihlKXt2YXIgdCxuO2lmKEghPT1wYS5ET00mJmE9PT1WLmRvY3VtZW50KXtpZihyW2VdKXJldHVybjtyW2VdPSEwfShuPWEuZ2V0RWxlbWVudEJ5SWQoIm1jZURlZmF1bHRTdHlsZXMiKSl8fCgobj1hLmNyZWF0ZUVsZW1lbnQoInN0eWxlIikpLmlkPSJtY2VEZWZhdWx0U3R5bGVzIixuLnR5cGU9InRleHQvY3NzIiwodD1hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0pLmZpcnN0Q2hpbGQ/dC5pbnNlcnRCZWZvcmUobix0LmZpcnN0Q2hpbGQpOnQuYXBwZW5kQ2hpbGQobikpLG4uc3R5bGVTaGVldD9uLnN0eWxlU2hlZXQuY3NzVGV4dCs9ZTpuLmFwcGVuZENoaWxkKGEuY3JlYXRlVGV4dE5vZGUoZSkpfSxsb2FkQ1NTOmZ1bmN0aW9uKGUpe3ZhciBuO0g9PT1wYS5ET018fGEhPT1WLmRvY3VtZW50PyhlPWV8fCIiLG49YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLGFhKGUuc3BsaXQoIiwiKSxmdW5jdGlvbihlKXt2YXIgdDtlPWhyLl9hZGRDYWNoZVN1ZmZpeChlKSxvW2VdfHwob1tlXT0hMCx0PUQoImxpbmsiLHBlKHBlKHtyZWw6InN0eWxlc2hlZXQiLHR5cGU6InRleHQvY3NzIixocmVmOmV9LHUuY29udGVudENzc0NvcnM/e2Nyb3NzT3JpZ2luOiJhbm9ueW1vdXMifTp7fSksdS5yZWZlcnJlclBvbGljeT97cmVmZXJyZXJQb2xpY3k6dS5yZWZlcnJlclBvbGljeX06e30pKSxuLmFwcGVuZENoaWxkKHQpKX0pKTpwYS5ET00ubG9hZENTUyhlKX0sYWRkQ2xhc3M6ZnVuY3Rpb24oZSx0KXtoKGUpLmFkZENsYXNzKHQpfSxyZW1vdmVDbGFzczpmdW5jdGlvbihlLHQpe0woZSx0LCExKX0saGFzQ2xhc3M6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gaChlKS5oYXNDbGFzcyh0KX0sdG9nZ2xlQ2xhc3M6TCxzaG93OmZ1bmN0aW9uKGUpe2goZSkuc2hvdygpfSxoaWRlOmZ1bmN0aW9uKGUpe2goZSkuaGlkZSgpfSxpc0hpZGRlbjpmdW5jdGlvbihlKXtyZXR1cm4ibm9uZSI9PT1oKGUpLmNzcygiZGlzcGxheSIpfSx1bmlxdWVJZDpmdW5jdGlvbihlKXtyZXR1cm4oZXx8Im1jZV8iKSt0Kyt9LHNldEhUTUw6VCxnZXRPdXRlckhUTUw6ZnVuY3Rpb24oZSl7dmFyIHQ9InN0cmluZyI9PXR5cGVvZiBlP2coZSk6ZTtyZXR1cm4gJHQodCk/dC5vdXRlckhUTUw6bmEoIjxkaXY+PC9kaXY+IikuYXBwZW5kKG5hKHQpLmNsb25lKCkpLmh0bWwoKX0sc2V0T3V0ZXJIVE1MOmZ1bmN0aW9uKGUsdCl7aChlKS5lYWNoKGZ1bmN0aW9uKCl7dHJ5e2lmKCJvdXRlckhUTUwiaW4gdGhpcylyZXR1cm4gdm9pZCh0aGlzLm91dGVySFRNTD10KX1jYXRjaChlKXt9UChuYSh0aGlzKS5odG1sKHQpLCEwKX0pfSxkZWNvZGU6TyxlbmNvZGU6QixpbnNlcnRBZnRlcjpmdW5jdGlvbihlLHQpe3ZhciByPWcodCk7cmV0dXJuIF8oZSxmdW5jdGlvbihlKXt2YXIgdCxuO3JldHVybiB0PXIucGFyZW50Tm9kZSwobj1yLm5leHRTaWJsaW5nKT90Lmluc2VydEJlZm9yZShlLG4pOnQuYXBwZW5kQ2hpbGQoZSksZX0pfSxyZXBsYWNlOkkscmVuYW1lOmZ1bmN0aW9uKHQsZSl7dmFyIG47cmV0dXJuIHQubm9kZU5hbWUhPT1lLnRvVXBwZXJDYXNlKCkmJihuPUQoZSksYWEoeSh0KSxmdW5jdGlvbihlKXtiKG4sZS5ub2RlTmFtZSx2KHQsZS5ub2RlTmFtZSkpfSksSShuLHQsITApKSxufHx0fSxmaW5kQ29tbW9uQW5jZXN0b3I6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4scj1lO3I7KXtmb3Iobj10O24mJnIhPT1uOyluPW4ucGFyZW50Tm9kZTtpZihyPT09bilicmVhaztyPXIucGFyZW50Tm9kZX1yZXR1cm4hciYmZS5vd25lckRvY3VtZW50P2Uub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ6cn0sdG9IZXg6ZnVuY3Rpb24oZSl7cmV0dXJuIGkudG9IZXgoaHIudHJpbShlKSl9LHJ1bjpfLGdldEF0dHJpYnM6eSxpc0VtcHR5OmZ1bmN0aW9uKGUsdCl7dmFyIG4scixvPTA7aWYoTShlKSlyZXR1cm4hMTtpZihlPWUuZmlyc3RDaGlsZCl7dmFyIGk9bmV3IHJhKGUsZS5wYXJlbnROb2RlKSxhPWQ/ZC5nZXRXaGl0ZVNwYWNlRWxlbWVudHMoKTp7fTt0PXR8fChkP2QuZ2V0Tm9uRW1wdHlFbGVtZW50cygpOm51bGwpO2Rve2lmKG49ZS5ub2RlVHlwZSwkdChlKSl7dmFyIHU9ZS5nZXRBdHRyaWJ1dGUoImRhdGEtbWNlLWJvZ3VzIik7aWYodSl7ZT1pLm5leHQoImFsbCI9PT11KTtjb250aW51ZX1pZihyPWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSx0JiZ0W3JdKXtpZigiYnIiIT09cilyZXR1cm4hMTtvKyssZT1pLm5leHQoKTtjb250aW51ZX1pZihNKGUpKXJldHVybiExfWlmKDg9PT1uKXJldHVybiExO2lmKDM9PT1uJiYhbGEudGVzdChlLm5vZGVWYWx1ZSkpcmV0dXJuITE7aWYoMz09PW4mJmUucGFyZW50Tm9kZSYmYVtlLnBhcmVudE5vZGUubm9kZU5hbWVdJiZsYS50ZXN0KGUubm9kZVZhbHVlKSlyZXR1cm4hMTtlPWkubmV4dCgpfXdoaWxlKGUpfXJldHVybiBvPD0xfSxjcmVhdGVSbmc6Rixub2RlSW5kZXg6bWEsc3BsaXQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLG8saSxhPUYoKTtpZihlJiZ0KXJldHVybiBhLnNldFN0YXJ0KGUucGFyZW50Tm9kZSxtYShlKSksYS5zZXRFbmQodC5wYXJlbnROb2RlLG1hKHQpKSxyPWEuZXh0cmFjdENvbnRlbnRzKCksKGE9RigpKS5zZXRTdGFydCh0LnBhcmVudE5vZGUsbWEodCkrMSksYS5zZXRFbmQoZS5wYXJlbnROb2RlLG1hKGUpKzEpLG89YS5leHRyYWN0Q29udGVudHMoKSwoaT1lLnBhcmVudE5vZGUpLmluc2VydEJlZm9yZShQcihILHIpLGUpLG4/aS5pbnNlcnRCZWZvcmUobixlKTppLmluc2VydEJlZm9yZSh0LGUpLGkuaW5zZXJ0QmVmb3JlKFByKEgsbyksZSksUChlKSxufHx0fSxiaW5kOlUsdW5iaW5kOnosZmlyZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIG0uZmlyZShlLHQsbil9LGdldENvbnRlbnRFZGl0YWJsZTpqLGdldENvbnRlbnRFZGl0YWJsZVBhcmVudDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9QygpLG49bnVsbDtlJiZlIT09dCYmbnVsbD09PShuPWooZSkpO2U9ZS5wYXJlbnROb2RlKTtyZXR1cm4gbn0sZGVzdHJveTpmdW5jdGlvbigpe2lmKDA8Zi5sZW5ndGgpZm9yKHZhciBlPWYubGVuZ3RoO2UtLTspe3ZhciB0PWZbZV07bS51bmJpbmQodFswXSx0WzFdLHRbMl0pfWhpLnNldERvY3VtZW50JiZoaS5zZXREb2N1bWVudCgpfSxpc0NoaWxkT2Y6ZnVuY3Rpb24oZSx0KXtmb3IoO2U7KXtpZih0PT09ZSlyZXR1cm4hMDtlPWUucGFyZW50Tm9kZX1yZXR1cm4hMX0sZHVtcFJuZzpmdW5jdGlvbihlKXtyZXR1cm4ic3RhcnRDb250YWluZXI6ICIrZS5zdGFydENvbnRhaW5lci5ub2RlTmFtZSsiLCBzdGFydE9mZnNldDogIitlLnN0YXJ0T2Zmc2V0KyIsIGVuZENvbnRhaW5lcjogIitlLmVuZENvbnRhaW5lci5ub2RlTmFtZSsiLCBlbmRPZmZzZXQ6ICIrZS5lbmRPZmZzZXR9fTtyZXR1cm4gcz1mYShpLHUsZnVuY3Rpb24oKXtyZXR1cm4gSH0pLEh9KGlhPXBhPXBhfHx7fSkuRE9NPWlhKFYuZG9jdW1lbnQpLGlhLm5vZGVJbmRleD1tYTt2YXIgZ2E9cGEsaGE9Z2EuRE9NLHZhPWhyLmVhY2gseWE9aHIuZ3JlcCxiYT0oQ2EucHJvdG90eXBlLl9zZXRSZWZlcnJlclBvbGljeT1mdW5jdGlvbihlKXt0aGlzLnNldHRpbmdzLnJlZmVycmVyUG9saWN5PWV9LENhLnByb3RvdHlwZS5sb2FkU2NyaXB0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixvLGk9aGE7bz1pLnVuaXF1ZUlkKCksKHI9Vi5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSkuaWQ9byxyLnR5cGU9InRleHQvamF2YXNjcmlwdCIsci5zcmM9aHIuX2FkZENhY2hlU3VmZml4KGUpLHRoaXMuc2V0dGluZ3MucmVmZXJyZXJQb2xpY3kmJmkuc2V0QXR0cmliKHIsInJlZmVycmVycG9saWN5Iix0aGlzLnNldHRpbmdzLnJlZmVycmVyUG9saWN5KSxyLm9ubG9hZD1mdW5jdGlvbigpe2kucmVtb3ZlKG8pLHImJihyLm9ucmVhZHlzdGF0ZWNoYW5nZT1yLm9ubG9hZD1yPW51bGwpLHQoKX0sci5vbmVycm9yPWZ1bmN0aW9uKCl7RChuKT9uKCk6InVuZGVmaW5lZCIhPXR5cGVvZiBWLmNvbnNvbGUmJlYuY29uc29sZS5sb2cmJlYuY29uc29sZS5sb2coIkZhaWxlZCB0byBsb2FkIHNjcmlwdDogIitlKX0sKFYuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXXx8Vi5kb2N1bWVudC5ib2R5KS5hcHBlbmRDaGlsZChyKX0sQ2EucHJvdG90eXBlLmlzRG9uZT1mdW5jdGlvbihlKXtyZXR1cm4gMj09PXRoaXMuc3RhdGVzW2VdfSxDYS5wcm90b3R5cGUubWFya0RvbmU9ZnVuY3Rpb24oZSl7dGhpcy5zdGF0ZXNbZV09Mn0sQ2EucHJvdG90eXBlLmFkZD1mdW5jdGlvbihlLHQsbixyKXt0aGlzLnN0YXRlc1tlXT09PXVuZGVmaW5lZCYmKHRoaXMucXVldWUucHVzaChlKSx0aGlzLnN0YXRlc1tlXT0wKSx0JiYodGhpcy5zY3JpcHRMb2FkZWRDYWxsYmFja3NbZV18fCh0aGlzLnNjcmlwdExvYWRlZENhbGxiYWNrc1tlXT1bXSksdGhpcy5zY3JpcHRMb2FkZWRDYWxsYmFja3NbZV0ucHVzaCh7c3VjY2Vzczp0LGZhaWx1cmU6cixzY29wZTpufHx0aGlzfSkpfSxDYS5wcm90b3R5cGUubG9hZD1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gdGhpcy5hZGQoZSx0LG4scil9LENhLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oZSl7ZGVsZXRlIHRoaXMuc3RhdGVzW2VdLGRlbGV0ZSB0aGlzLnNjcmlwdExvYWRlZENhbGxiYWNrc1tlXX0sQ2EucHJvdG90eXBlLmxvYWRRdWV1ZT1mdW5jdGlvbihlLHQsbil7dGhpcy5sb2FkU2NyaXB0cyh0aGlzLnF1ZXVlLGUsdCxuKX0sQ2EucHJvdG90eXBlLmxvYWRTY3JpcHRzPWZ1bmN0aW9uKG4sZSx0LHIpe3ZhciBvLGk9dGhpcyxhPVtdLHU9ZnVuY3Rpb24odCxlKXt2YShpLnNjcmlwdExvYWRlZENhbGxiYWNrc1tlXSxmdW5jdGlvbihlKXtEKGVbdF0pJiZlW3RdLmNhbGwoZS5zY29wZSl9KSxpLnNjcmlwdExvYWRlZENhbGxiYWNrc1tlXT11bmRlZmluZWR9O2kucXVldWVMb2FkZWRDYWxsYmFja3MucHVzaCh7c3VjY2VzczplLGZhaWx1cmU6cixzY29wZTp0fHx0aGlzfSksKG89ZnVuY3Rpb24oKXt2YXIgZT15YShuKTtpZihuLmxlbmd0aD0wLHZhKGUsZnVuY3Rpb24oZSl7MiE9PWkuc3RhdGVzW2VdPzMhPT1pLnN0YXRlc1tlXT8xIT09aS5zdGF0ZXNbZV0mJihpLnN0YXRlc1tlXT0xLGkubG9hZGluZysrLGkubG9hZFNjcmlwdChlLGZ1bmN0aW9uKCl7aS5zdGF0ZXNbZV09MixpLmxvYWRpbmctLSx1KCJzdWNjZXNzIixlKSxvKCl9LGZ1bmN0aW9uKCl7aS5zdGF0ZXNbZV09MyxpLmxvYWRpbmctLSxhLnB1c2goZSksdSgiZmFpbHVyZSIsZSksbygpfSkpOnUoImZhaWx1cmUiLGUpOnUoInN1Y2Nlc3MiLGUpfSksIWkubG9hZGluZyl7dmFyIHQ9aS5xdWV1ZUxvYWRlZENhbGxiYWNrcy5zbGljZSgwKTtpLnF1ZXVlTG9hZGVkQ2FsbGJhY2tzLmxlbmd0aD0wLHZhKHQsZnVuY3Rpb24oZSl7MD09PWEubGVuZ3RoP0QoZS5zdWNjZXNzKSYmZS5zdWNjZXNzLmNhbGwoZS5zY29wZSk6RChlLmZhaWx1cmUpJiZlLmZhaWx1cmUuY2FsbChlLnNjb3BlLGEpfSl9fSkoKX0sQ2EuU2NyaXB0TG9hZGVyPW5ldyBDYSxDYSk7ZnVuY3Rpb24gQ2EoZSl7dm9pZCAwPT09ZSYmKGU9e30pLHRoaXMuc3RhdGVzPXt9LHRoaXMucXVldWU9W10sdGhpcy5zY3JpcHRMb2FkZWRDYWxsYmFja3M9e30sdGhpcy5xdWV1ZUxvYWRlZENhbGxiYWNrcz1bXSx0aGlzLmxvYWRpbmc9MCx0aGlzLnNldHRpbmdzPWV9dmFyIHdhLHhhPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJue2dldDpmdW5jdGlvbigpe3JldHVybiB0fSxzZXQ6ZnVuY3Rpb24oZSl7dD1lfX19LFNhPXt9LE5hPXhhKCJlbiIpLEVhPWZ1bmN0aW9uKCl7cmV0dXJuIGRlKFNhLE5hLmdldCgpKX0sa2E9e2dldERhdGE6ZnVuY3Rpb24oKXtyZXR1cm4gaWUoU2EsZnVuY3Rpb24oZSl7cmV0dXJuIHBlKHt9LGUpfSl9LHNldENvZGU6ZnVuY3Rpb24oZSl7ZSYmTmEuc2V0KGUpfSxnZXRDb2RlOmZ1bmN0aW9uKCl7cmV0dXJuIE5hLmdldCgpfSxhZGQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj1TYVtlXTtufHwoU2FbZV09bj17fSksb2UodCxmdW5jdGlvbihlLHQpe25bdC50b0xvd2VyQ2FzZSgpXT1lfSl9LHRyYW5zbGF0ZTpmdW5jdGlvbihlKXt2YXIgdCxuLHI9RWEoKS5nZXRPcih7fSksbz1mdW5jdGlvbihlKXtyZXR1cm4gRChlKT9PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSk6aShlKT8iIjoiIitlfSxpPWZ1bmN0aW9uKGUpe3JldHVybiIiPT09ZXx8bnVsbD09PWV8fGU9PT11bmRlZmluZWR9LGE9ZnVuY3Rpb24oZSl7dmFyIHQ9byhlKTtyZXR1cm4gZGUocix0LnRvTG93ZXJDYXNlKCkpLm1hcChvKS5nZXRPcih0KX0sdT1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC97Y29udGV4dDpcdyt9JC8sIiIpfTtpZihpKGUpKXJldHVybiIiO2lmKEUodD1lKSYmbWUodCwicmF3IikpcmV0dXJuIG8oZS5yYXcpO2lmKGsobj1lKSYmMTxuLmxlbmd0aCl7dmFyIHM9ZS5zbGljZSgxKTtyZXR1cm4gdShhKGVbMF0pLnJlcGxhY2UoL1x7KFswLTldKylcfS9nLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG1lKHMsdCk/byhzW3RdKTplfSkpfXJldHVybiB1KGEoZSkpfSxpc1J0bDpmdW5jdGlvbigpe3JldHVybiBFYSgpLmJpbmQoZnVuY3Rpb24oZSl7cmV0dXJuIGRlKGUsIl9kaXIiKX0pLmV4aXN0cyhmdW5jdGlvbihlKXtyZXR1cm4icnRsIj09PWV9KX0saGFzQ29kZTpmdW5jdGlvbihlKXtyZXR1cm4gbWUoU2EsZSl9fTtmdW5jdGlvbiBfYSgpe3ZhciByPXRoaXMsbz1bXSxzPXt9LGM9e30saT1bXSxsPWZ1bmN0aW9uKHQsbil7dmFyIGU9SChpLGZ1bmN0aW9uKGUpe3JldHVybiBlLm5hbWU9PT10JiZlLnN0YXRlPT09bn0pO3ooZSxmdW5jdGlvbihlKXtyZXR1cm4gZS5jYWxsYmFjaygpfSl9LGY9ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIGNbZV0mJih0PWNbZV0uZGVwZW5kZW5jaWVzKSx0fHxbXX0sZD1mdW5jdGlvbihlLHQpe3JldHVybiJvYmplY3QiPT10eXBlb2YgdD90OiJzdHJpbmciPT10eXBlb2YgZT97cHJlZml4OiIiLHJlc291cmNlOnQsc3VmZml4OiIifTp7cHJlZml4OmUucHJlZml4LHJlc291cmNlOnQsc3VmZml4OmUuc3VmZml4fX0sbT1mdW5jdGlvbihvLGksYSx1LGUpe2lmKCFzW29dKXt2YXIgdD0ic3RyaW5nIj09dHlwZW9mIGk/aTppLnByZWZpeCtpLnJlc291cmNlK2kuc3VmZml4OzAhPT10LmluZGV4T2YoIi8iKSYmLTE9PT10LmluZGV4T2YoIjovLyIpJiYodD1fYS5iYXNlVVJMKyIvIit0KSxzW29dPXQuc3Vic3RyaW5nKDAsdC5sYXN0SW5kZXhPZigiLyIpKTt2YXIgbj1mdW5jdGlvbigpe3ZhciBuLGUsdCxyO2wobywibG9hZGVkIiksbj1pLGU9YSx0PXUscj1mKG8pLHoocixmdW5jdGlvbihlKXt2YXIgdD1kKG4sZSk7bSh0LnJlc291cmNlLHQsdW5kZWZpbmVkLHVuZGVmaW5lZCl9KSxlJiYodD9lLmNhbGwodCk6ZS5jYWxsKGJhKSl9O2Nbb10/bigpOmJhLlNjcmlwdExvYWRlci5hZGQodCxuLHUsZSl9fSxlPWZ1bmN0aW9uKGUsdCxuKXt2b2lkIDA9PT1uJiYobj0iYWRkZWQiKSxtZShjLGUpJiYiYWRkZWQiPT09bnx8bWUocyxlKSYmImxvYWRlZCI9PT1uP3QoKTppLnB1c2goe25hbWU6ZSxzdGF0ZTpuLGNhbGxiYWNrOnR9KX07cmV0dXJue2l0ZW1zOm8sdXJsczpzLGxvb2t1cDpjLF9saXN0ZW5lcnM6aSxnZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGNbZV0/Y1tlXS5pbnN0YW5jZTp1bmRlZmluZWR9LGRlcGVuZGVuY2llczpmLHJlcXVpcmVMYW5nUGFjazpmdW5jdGlvbih0LG4peyExIT09X2EubGFuZ3VhZ2VMb2FkJiZlKHQsZnVuY3Rpb24oKXt2YXIgZT1rYS5nZXRDb2RlKCk7IWV8fG4mJi0xPT09KCIsIisobnx8IiIpKyIsIikuaW5kZXhPZigiLCIrZSsiLCIpfHxiYS5TY3JpcHRMb2FkZXIuYWRkKHNbdF0rIi9sYW5ncy8iK2UrIi5qcyIpfSwibG9hZGVkIil9LGFkZDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dDtyZXR1cm4gby5wdXNoKHIpLGNbZV09e2luc3RhbmNlOnIsZGVwZW5kZW5jaWVzOm59LGwoZSwiYWRkZWQiKSxyfSxyZW1vdmU6ZnVuY3Rpb24oZSl7ZGVsZXRlIHNbZV0sZGVsZXRlIGNbZV19LGNyZWF0ZVVybDpkLGFkZENvbXBvbmVudHM6ZnVuY3Rpb24oZSx0KXt2YXIgbj1yLnVybHNbZV07eih0LGZ1bmN0aW9uKGUpe2JhLlNjcmlwdExvYWRlci5hZGQobisiLyIrZSl9KX0sbG9hZDptLHdhaXRGb3I6ZX19KHdhPV9hPV9hfHx7fSkuUGx1Z2luTWFuYWdlcj13YSgpLHdhLlRoZW1lTWFuYWdlcj13YSgpO3ZhciBSYT1fYSxUYT1mdW5jdGlvbihuLHIpe3ZhciBvPW51bGw7cmV0dXJue2NhbmNlbDpmdW5jdGlvbigpe251bGwhPT1vJiYoVi5jbGVhclRpbWVvdXQobyksbz1udWxsKX0sdGhyb3R0bGU6ZnVuY3Rpb24oKXtmb3IodmFyIGU9W10sdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0KyspZVt0XT1hcmd1bWVudHNbdF07bnVsbD09PW8mJihvPVYuc2V0VGltZW91dChmdW5jdGlvbigpe24uYXBwbHkobnVsbCxlKSxvPW51bGx9LHIpKX19fSxBYT1mdW5jdGlvbihuLHIpe3ZhciBvPW51bGw7cmV0dXJue2NhbmNlbDpmdW5jdGlvbigpe251bGwhPT1vJiYoVi5jbGVhclRpbWVvdXQobyksbz1udWxsKX0sdGhyb3R0bGU6ZnVuY3Rpb24oKXtmb3IodmFyIGU9W10sdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0KyspZVt0XT1hcmd1bWVudHNbdF07bnVsbCE9PW8mJlYuY2xlYXJUaW1lb3V0KG8pLG89Vi5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bi5hcHBseShudWxsLGUpLG89bnVsbH0scil9fX0sRGE9ZnVuY3Rpb24oZSx0KXt2YXIgbj1mbihlLHQpO3JldHVybiBuPT09dW5kZWZpbmVkfHwiIj09PW4/W106bi5zcGxpdCgiICIpfSxPYT1mdW5jdGlvbihlKXtyZXR1cm4gZS5kb20oKS5jbGFzc0xpc3QhPT11bmRlZmluZWR9LEJhPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG89dCxpPURhKG49ZSxyPSJjbGFzcyIpLmNvbmNhdChbb10pLGNuKG4scixpLmpvaW4oIiAiKSksITA7dmFyIG4scixvLGl9LFBhPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG89dCwwPChpPUgoRGEobj1lLHI9ImNsYXNzIiksZnVuY3Rpb24oZSl7cmV0dXJuIGUhPT1vfSkpLmxlbmd0aD9jbihuLHIsaS5qb2luKCIgIikpOmRuKG4sciksITE7dmFyIG4scixvLGl9LExhPWZ1bmN0aW9uKGUsdCl7T2EoZSk/ZS5kb20oKS5jbGFzc0xpc3QuYWRkKHQpOkJhKGUsdCl9LElhPWZ1bmN0aW9uKGUpezA9PT0oT2EoZSk/ZS5kb20oKS5jbGFzc0xpc3Q6RGEoZSwiY2xhc3MiKSkubGVuZ3RoJiZkbihlLCJjbGFzcyIpfSxNYT1mdW5jdGlvbihlLHQpe3JldHVybiBPYShlKSYmZS5kb20oKS5jbGFzc0xpc3QuY29udGFpbnModCl9LEZhPWZ1bmN0aW9uKGUsdCl7dmFyIG49W107cmV0dXJuIHooaHQoZSksZnVuY3Rpb24oZSl7dChlKSYmKG49bi5jb25jYXQoW2VdKSksbj1uLmNvbmNhdChGYShlLHQpKX0pLG59LFVhPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG49dCxvPShyPWUpPT09dW5kZWZpbmVkP1YuZG9jdW1lbnQ6ci5kb20oKSxpdChvKT9bXTpVKG8ucXVlcnlTZWxlY3RvckFsbChuKSxOZS5mcm9tRG9tKTt2YXIgbixyLG99O2Z1bmN0aW9uIHphKGUsdCxuLHIsbyl7cmV0dXJuIGUobixyKT9SLnNvbWUobik6RChvKSYmbyhuKT9SLm5vbmUoKTp0KG4scixvKX12YXIgamEsSGE9ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj1lLmRvbSgpLG89RChuKT9uOngoITEpO3IucGFyZW50Tm9kZTspe3I9ci5wYXJlbnROb2RlO3ZhciBpPU5lLmZyb21Eb20ocik7aWYodChpKSlyZXR1cm4gUi5zb21lKGkpO2lmKG8oaSkpYnJlYWt9cmV0dXJuIFIubm9uZSgpfSxWYT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHphKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQoZSl9LEhhLGUsdCxuKX0scWE9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBIYShlLGZ1bmN0aW9uKGUpe3JldHVybiBvdChlLHQpfSxuKX0sJGE9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbj10LG89KHI9ZSk9PT11bmRlZmluZWQ/Vi5kb2N1bWVudDpyLmRvbSgpLGl0KG8pP1Iubm9uZSgpOlIuZnJvbShvLnF1ZXJ5U2VsZWN0b3IobikpLm1hcChOZS5mcm9tRG9tKTt2YXIgbixyLG99LFdhPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gemEoZnVuY3Rpb24oZSx0KXtyZXR1cm4gb3QoZSx0KX0scWEsZSx0LG4pfSxLYT14KCJtY2UtYW5ub3RhdGlvbiIpLFhhPXgoImRhdGEtbWNlLWFubm90YXRpb24iKSxZYT14KCJkYXRhLW1jZS1hbm5vdGF0aW9uLXVpZCIpLEdhPWZ1bmN0aW9uKHIsZSl7dmFyIHQ9ci5zZWxlY3Rpb24uZ2V0Um5nKCksbj1OZS5mcm9tRG9tKHQuc3RhcnRDb250YWluZXIpLG89TmUuZnJvbURvbShyLmdldEJvZHkoKSksaT1lLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm4iLiIrS2EoKX0sZnVuY3Rpb24oZSl7cmV0dXJuIlsiK1hhKCkrJz0iJytlKyciXSd9KSxhPXZ0KG4sdC5zdGFydE9mZnNldCkuZ2V0T3IobiksdT1XYShhLGksZnVuY3Rpb24oZSl7cmV0dXJuIGF0KGUsbyl9KSxzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG49dCwocj1lLmRvbSgpKSYmci5oYXNBdHRyaWJ1dGUmJnIuaGFzQXR0cmlidXRlKG4pP1Iuc29tZShmbihlLHQpKTpSLm5vbmUoKTt2YXIgbixyfTtyZXR1cm4gdS5iaW5kKGZ1bmN0aW9uKGUpe3JldHVybiBzKGUsIiIrWWEoKSkuYmluZChmdW5jdGlvbihuKXtyZXR1cm4gcyhlLCIiK1hhKCkpLm1hcChmdW5jdGlvbihlKXt2YXIgdD1KYShyLG4pO3JldHVybnt1aWQ6bixuYW1lOmUsZWxlbWVudHM6dH19KX0pfSl9LEphPWZ1bmN0aW9uKGUsdCl7dmFyIG49TmUuZnJvbURvbShlLmdldEJvZHkoKSk7cmV0dXJuIFVhKG4sIlsiK1lhKCkrJz0iJyt0KyciXScpfSxRYT1mdW5jdGlvbihpLGUpe3ZhciBhPXhhKHt9KSxjPWZ1bmN0aW9uKGUsdCl7dShlLGZ1bmN0aW9uKGUpe3JldHVybiB0KGUpLGV9KX0sdT1mdW5jdGlvbihlLHQpe3ZhciBuPWEuZ2V0KCkscj10KG4uaGFzT3duUHJvcGVydHkoZSk/bltlXTp7bGlzdGVuZXJzOltdLHByZXZpb3VzOnhhKFIubm9uZSgpKX0pO25bZV09cixhLnNldChuKX0sdD1BYShmdW5jdGlvbigpe3ZhciBlLHQsbixyPWEuZ2V0KCksbz0oZT1uZShyKSwobj1CLmNhbGwoZSwwKSkuc29ydCh0KSxuKTt6KG8sZnVuY3Rpb24oZSl7dShlLGZ1bmN0aW9uKHUpe3ZhciBzPXUucHJldmlvdXMuZ2V0KCk7cmV0dXJuIEdhKGksUi5zb21lKGUpKS5mb2xkKGZ1bmN0aW9uKCl7dmFyIHQ7cy5pc1NvbWUoKSYmKGModD1lLGZ1bmN0aW9uKGUpe3ooZS5saXN0ZW5lcnMsZnVuY3Rpb24oZSl7cmV0dXJuIGUoITEsdCl9KX0pLHUucHJldmlvdXMuc2V0KFIubm9uZSgpKSl9LGZ1bmN0aW9uKGUpe3ZhciB0LG4scixvPWUudWlkLGk9ZS5uYW1lLGE9ZS5lbGVtZW50cztzLmlzKG8pfHwobj1vLHI9YSxjKHQ9aSxmdW5jdGlvbihlKXt6KGUubGlzdGVuZXJzLGZ1bmN0aW9uKGUpe3JldHVybiBlKCEwLHQse3VpZDpuLG5vZGVzOlUocixmdW5jdGlvbihlKXtyZXR1cm4gZS5kb20oKX0pfSl9KX0pLHUucHJldmlvdXMuc2V0KFIuc29tZShvKSkpfSkse3ByZXZpb3VzOnUucHJldmlvdXMsbGlzdGVuZXJzOnUubGlzdGVuZXJzfX0pfSl9LDMwKTtpLm9uKCJyZW1vdmUiLGZ1bmN0aW9uKCl7dC5jYW5jZWwoKX0pLGkub24oIk5vZGVDaGFuZ2UiLGZ1bmN0aW9uKCl7dC50aHJvdHRsZSgpfSk7cmV0dXJue2FkZExpc3RlbmVyOmZ1bmN0aW9uKGUsdCl7dShlLGZ1bmN0aW9uKGUpe3JldHVybntwcmV2aW91czplLnByZXZpb3VzLGxpc3RlbmVyczplLmxpc3RlbmVycy5jb25jYXQoW3RdKX19KX19fSxaYT1mdW5jdGlvbihlLG4pe2Uub24oImluaXQiLGZ1bmN0aW9uKCl7ZS5zZXJpYWxpemVyLmFkZE5vZGVGaWx0ZXIoInNwYW4iLGZ1bmN0aW9uKGUpe3ooZSxmdW5jdGlvbih0KXt2YXIgZTtlPXQsUi5mcm9tKGUuYXR0cihYYSgpKSkuYmluZChuLmxvb2t1cCkuZWFjaChmdW5jdGlvbihlKXshMT09PWUucGVyc2lzdGVudCYmdC51bndyYXAoKX0pfSl9KX0pfSxldT0wLHR1PWZ1bmN0aW9uKGUpe3ZhciB0PShuZXcgRGF0ZSkuZ2V0VGltZSgpO3JldHVybiBlKyJfIitNYXRoLmZsb29yKDFlOSpNYXRoLnJhbmRvbSgpKSsgKytldStTdHJpbmcodCl9LG51PWZ1bmN0aW9uKGUsdCl7dmFyIG4scixvPWN0KGUpLmRvbSgpLGk9TmUuZnJvbURvbShvLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSksYT0obj10LChyPShvfHxWLmRvY3VtZW50KS5jcmVhdGVFbGVtZW50KCJkaXYiKSkuaW5uZXJIVE1MPW4saHQoTmUuZnJvbURvbShyKSkpO050KGksYSksRXQoZSksU3QoZSxpKX0scnU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gTmUuZnJvbURvbShlLmRvbSgpLmNsb25lTm9kZSh0KSl9LG91PWZ1bmN0aW9uKGUpe3JldHVybiBydShlLCExKX0saXU9ZnVuY3Rpb24oZSl7cmV0dXJuIHJ1KGUsITApfSxhdT1mdW5jdGlvbihlLHQsbil7dm9pZCAwPT09biYmKG49Zyk7dmFyIHI9bmV3IHJhKGUsdCksbz1mdW5jdGlvbihlKXtmb3IodmFyIHQ7KHQ9cltlXSgpKSYmIVp0KHQpJiYhbih0KTspO3JldHVybiBSLmZyb20odCkuZmlsdGVyKFp0KX07cmV0dXJue2N1cnJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gUi5mcm9tKHIuY3VycmVudCgpKS5maWx0ZXIoWnQpfSxuZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIG8oIm5leHQiKX0scHJldjpmdW5jdGlvbigpe3JldHVybiBvKCJwcmV2Iil9LHByZXYyOmZ1bmN0aW9uKCl7cmV0dXJuIG8oInByZXYyIil9fX0sdXU9ZnVuY3Rpb24odCxlKXt2YXIgaT1lfHxmdW5jdGlvbihlKXtyZXR1cm4gdC5pc0Jsb2NrKGUpfHxybihlKXx8YW4oZSl9LGE9ZnVuY3Rpb24oZSx0LG4scil7aWYoWnQoZSkpe3ZhciBvPXIoZSx0LGUuZGF0YSk7aWYoLTEhPT1vKXJldHVybiBSLnNvbWUoe2NvbnRhaW5lcjplLG9mZnNldDpvfSl9cmV0dXJuIG4oKS5iaW5kKGZ1bmN0aW9uKGUpe3JldHVybiBhKGUuY29udGFpbmVyLGUub2Zmc2V0LG4scil9KX07cmV0dXJue2JhY2t3YXJkczpmdW5jdGlvbihlLHQsbixyKXt2YXIgbz1hdShlLHIsaSk7cmV0dXJuIGEoZSx0LGZ1bmN0aW9uKCl7cmV0dXJuIG8ucHJldigpLm1hcChmdW5jdGlvbihlKXtyZXR1cm57Y29udGFpbmVyOmUsb2Zmc2V0OmUubGVuZ3RofX0pfSxuKS5nZXRPck51bGwoKX0sZm9yd2FyZHM6ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89YXUoZSxyLGkpO3JldHVybiBhKGUsdCxmdW5jdGlvbigpe3JldHVybiBvLm5leHQoKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJue2NvbnRhaW5lcjplLG9mZnNldDowfX0pfSxuKS5nZXRPck51bGwoKX19fSxzdT1ybyxjdT1mdW5jdGlvbihlKXtyZXR1cm4gZT09PXJvfSxsdT1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC9cdUZFRkYvZywiIil9LGZ1PSR0LGR1PVp0LG11PWZ1bmN0aW9uKGUpe3JldHVybiBkdShlKSYmKGU9ZS5wYXJlbnROb2RlKSxmdShlKSYmZS5oYXNBdHRyaWJ1dGUoImRhdGEtbWNlLWNhcmV0Iil9LHB1PWZ1bmN0aW9uKGUpe3JldHVybiBkdShlKSYmY3UoZS5kYXRhKX0sZ3U9ZnVuY3Rpb24oZSl7cmV0dXJuIG11KGUpfHxwdShlKX0saHU9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZmlyc3RDaGlsZCE9PWUubGFzdENoaWxkfHwhcm4oZS5maXJzdENoaWxkKX0sdnU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb250YWluZXIoKTtyZXR1cm4hKCFlfHwhWnQodCkpJiYodC5kYXRhLmNoYXJBdChlLm9mZnNldCgpKT09PXN1fHxlLmlzQXRTdGFydCgpJiZwdSh0LnByZXZpb3VzU2libGluZykpfSx5dT1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbnRhaW5lcigpO3JldHVybiEoIWV8fCFadCh0KSkmJih0LmRhdGEuY2hhckF0KGUub2Zmc2V0KCktMSk9PT1zdXx8ZS5pc0F0RW5kKCkmJnB1KHQubmV4dFNpYmxpbmcpKX0sYnU9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLG8saTtyZXR1cm4ocj10Lm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudChlKSkuc2V0QXR0cmlidXRlKCJkYXRhLW1jZS1jYXJldCIsbj8iYmVmb3JlIjoiYWZ0ZXIiKSxyLnNldEF0dHJpYnV0ZSgiZGF0YS1tY2UtYm9ndXMiLCJhbGwiKSxyLmFwcGVuZENoaWxkKCgoaT1WLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJyIikpLnNldEF0dHJpYnV0ZSgiZGF0YS1tY2UtYm9ndXMiLCIxIiksaSkpLG89dC5wYXJlbnROb2RlLG4/by5pbnNlcnRCZWZvcmUocix0KTp0Lm5leHRTaWJsaW5nP28uaW5zZXJ0QmVmb3JlKHIsdC5uZXh0U2libGluZyk6by5hcHBlbmRDaGlsZChyKSxyfSxDdT1mdW5jdGlvbihlKXtyZXR1cm4gZHUoZSkmJmUuZGF0YVswXT09PXN1fSx3dT1mdW5jdGlvbihlKXtyZXR1cm4gZHUoZSkmJmUuZGF0YVtlLmRhdGEubGVuZ3RoLTFdPT09c3V9LHh1PWZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLmhhc0F0dHJpYnV0ZSgiZGF0YS1tY2UtY2FyZXQiKT8odD1lLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJiciIpLG49dFt0Lmxlbmd0aC0xXSxZdChuKSYmbi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG4pLGUucmVtb3ZlQXR0cmlidXRlKCJkYXRhLW1jZS1jYXJldCIpLGUucmVtb3ZlQXR0cmlidXRlKCJkYXRhLW1jZS1ib2d1cyIpLGUucmVtb3ZlQXR0cmlidXRlKCJzdHlsZSIpLGUucmVtb3ZlQXR0cmlidXRlKCJfbW96X2Fic3BvcyIpLGUpOm51bGw7dmFyIHQsbn0sU3U9b24sTnU9YW4sRXU9cm4sa3U9WnQsX3U9V3QoWyJzY3JpcHQiLCJzdHlsZSIsInRleHRhcmVhIl0pLFJ1PVd0KFsiaW1nIiwiaW5wdXQiLCJ0ZXh0YXJlYSIsImhyIiwiaWZyYW1lIiwidmlkZW8iLCJhdWRpbyIsIm9iamVjdCJdKSxUdT1XdChbInRhYmxlIl0pLEF1PWd1LER1PWZ1bmN0aW9uKGUpe3JldHVybiFBdShlKSYmKGt1KGUpPyFfdShlLnBhcmVudE5vZGUpOlJ1KGUpfHxFdShlKXx8VHUoZSl8fE91KGUpKX0sT3U9ZnVuY3Rpb24oZSl7cmV0dXJuITE9PT0oJHQodD1lKSYmInRydWUiPT09dC5nZXRBdHRyaWJ1dGUoInVuc2VsZWN0YWJsZSIpKSYmTnUoZSk7dmFyIHR9LEJ1PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIER1KGUpJiZmdW5jdGlvbihlLHQpe2ZvcihlPWUucGFyZW50Tm9kZTtlJiZlIT09dDtlPWUucGFyZW50Tm9kZSl7aWYoT3UoZSkpcmV0dXJuITE7aWYoU3UoZSkpcmV0dXJuITB9cmV0dXJuITB9KGUsdCl9LFB1PU1hdGgucm91bmQsTHU9ZnVuY3Rpb24oZSl7cmV0dXJuIGU/e2xlZnQ6UHUoZS5sZWZ0KSx0b3A6UHUoZS50b3ApLGJvdHRvbTpQdShlLmJvdHRvbSkscmlnaHQ6UHUoZS5yaWdodCksd2lkdGg6UHUoZS53aWR0aCksaGVpZ2h0OlB1KGUuaGVpZ2h0KX06e2xlZnQ6MCx0b3A6MCxib3R0b206MCxyaWdodDowLHdpZHRoOjAsaGVpZ2h0OjB9fSxJdT1mdW5jdGlvbihlLHQpe3JldHVybiBlPUx1KGUpLHR8fChlLmxlZnQ9ZS5sZWZ0K2Uud2lkdGgpLGUucmlnaHQ9ZS5sZWZ0LGUud2lkdGg9MCxlfSxNdT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIDA8PWUmJmU8PU1hdGgubWluKHQuaGVpZ2h0LG4uaGVpZ2h0KS8yfSxGdT1mdW5jdGlvbihlLHQpe3JldHVybiBlLmJvdHRvbS1lLmhlaWdodC8yPHQudG9wfHwhKGUudG9wPnQuYm90dG9tKSYmTXUodC50b3AtZS5ib3R0b20sZSx0KX0sVXU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS50b3A+dC5ib3R0b218fCEoZS5ib3R0b208dC50b3ApJiZNdSh0LmJvdHRvbS1lLnRvcCxlLHQpfSx6dT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHQ+PWUubGVmdCYmdDw9ZS5yaWdodCYmbj49ZS50b3AmJm48PWUuYm90dG9tfSxqdT1mdW5jdGlvbihlKXt2YXIgdD1lLnN0YXJ0Q29udGFpbmVyLG49ZS5zdGFydE9mZnNldDtyZXR1cm4gdC5oYXNDaGlsZE5vZGVzKCkmJmUuZW5kT2Zmc2V0PT09bisxP3QuY2hpbGROb2Rlc1tuXTpudWxsfSxIdT1mdW5jdGlvbihlLHQpe3JldHVybiAxPT09ZS5ub2RlVHlwZSYmZS5oYXNDaGlsZE5vZGVzKCkmJih0Pj1lLmNoaWxkTm9kZXMubGVuZ3RoJiYodD1lLmNoaWxkTm9kZXMubGVuZ3RoLTEpLGU9ZS5jaGlsZE5vZGVzW3RdKSxlfSxWdT1uZXcgUmVnRXhwKCJbXHUwMzAwLVx1MDM2Zlx1MDQ4My1cdTA0ODdcdTA0ODgtXHUwNDg5XHUwNTkxLVx1MDViZFx1MDViZlx1MDVjMS1cdTA1YzJcdTA1YzQtXHUwNWM1XHUwNWM3XHUwNjEwLVx1MDYxYVx1MDY0Yi1cdTA2NWZcdTA2NzBcdTA2ZDYtXHUwNmRjXHUwNmRmLVx1MDZlNFx1MDZlNy1cdTA2ZThcdTA2ZWEtXHUwNmVkXHUwNzExXHUwNzMwLVx1MDc0YVx1MDdhNi1cdTA3YjBcdTA3ZWItXHUwN2YzXHUwODE2LVx1MDgxOVx1MDgxYi1cdTA4MjNcdTA4MjUtXHUwODI3XHUwODI5LVx1MDgyZFx1MDg1OS1cdTA4NWJcdTA4ZTMtXHUwOTAyXHUwOTNhXHUwOTNjXHUwOTQxLVx1MDk0OFx1MDk0ZFx1MDk1MS1cdTA5NTdcdTA5NjItXHUwOTYzXHUwOTgxXHUwOWJjXHUwOWJlXHUwOWMxLVx1MDljNFx1MDljZFx1MDlkN1x1MDllMi1cdTA5ZTNcdTBhMDEtXHUwYTAyXHUwYTNjXHUwYTQxLVx1MGE0Mlx1MGE0Ny1cdTBhNDhcdTBhNGItXHUwYTRkXHUwYTUxXHUwYTcwLVx1MGE3MVx1MGE3NVx1MGE4MS1cdTBhODJcdTBhYmNcdTBhYzEtXHUwYWM1XHUwYWM3LVx1MGFjOFx1MGFjZFx1MGFlMi1cdTBhZTNcdTBiMDFcdTBiM2NcdTBiM2VcdTBiM2ZcdTBiNDEtXHUwYjQ0XHUwYjRkXHUwYjU2XHUwYjU3XHUwYjYyLVx1MGI2M1x1MGI4Mlx1MGJiZVx1MGJjMFx1MGJjZFx1MGJkN1x1MGMwMFx1MGMzZS1cdTBjNDBcdTBjNDYtXHUwYzQ4XHUwYzRhLVx1MGM0ZFx1MGM1NS1cdTBjNTZcdTBjNjItXHUwYzYzXHUwYzgxXHUwY2JjXHUwY2JmXHUwY2MyXHUwY2M2XHUwY2NjLVx1MGNjZFx1MGNkNS1cdTBjZDZcdTBjZTItXHUwY2UzXHUwZDAxXHUwZDNlXHUwZDQxLVx1MGQ0NFx1MGQ0ZFx1MGQ1N1x1MGQ2Mi1cdTBkNjNcdTBkY2FcdTBkY2ZcdTBkZDItXHUwZGQ0XHUwZGQ2XHUwZGRmXHUwZTMxXHUwZTM0LVx1MGUzYVx1MGU0Ny1cdTBlNGVcdTBlYjFcdTBlYjQtXHUwZWI5XHUwZWJiLVx1MGViY1x1MGVjOC1cdTBlY2RcdTBmMTgtXHUwZjE5XHUwZjM1XHUwZjM3XHUwZjM5XHUwZjcxLVx1MGY3ZVx1MGY4MC1cdTBmODRcdTBmODYtXHUwZjg3XHUwZjhkLVx1MGY5N1x1MGY5OS1cdTBmYmNcdTBmYzZcdTEwMmQtXHUxMDMwXHUxMDMyLVx1MTAzN1x1MTAzOS1cdTEwM2FcdTEwM2QtXHUxMDNlXHUxMDU4LVx1MTA1OVx1MTA1ZS1cdTEwNjBcdTEwNzEtXHUxMDc0XHUxMDgyXHUxMDg1LVx1MTA4Nlx1MTA4ZFx1MTA5ZFx1MTM1ZC1cdTEzNWZcdTE3MTItXHUxNzE0XHUxNzMyLVx1MTczNFx1MTc1Mi1cdTE3NTNcdTE3NzItXHUxNzczXHUxN2I0LVx1MTdiNVx1MTdiNy1cdTE3YmRcdTE3YzZcdTE3YzktXHUxN2QzXHUxN2RkXHUxODBiLVx1MTgwZFx1MThhOVx1MTkyMC1cdTE5MjJcdTE5MjctXHUxOTI4XHUxOTMyXHUxOTM5LVx1MTkzYlx1MWExNy1cdTFhMThcdTFhMWJcdTFhNTZcdTFhNTgtXHUxYTVlXHUxYTYwXHUxYTYyXHUxYTY1LVx1MWE2Y1x1MWE3My1cdTFhN2NcdTFhN2ZcdTFhYjAtXHUxYWJkXHUxYWJlXHUxYjAwLVx1MWIwM1x1MWIzNFx1MWIzNi1cdTFiM2FcdTFiM2NcdTFiNDJcdTFiNmItXHUxYjczXHUxYjgwLVx1MWI4MVx1MWJhMi1cdTFiYTVcdTFiYTgtXHUxYmE5XHUxYmFiLVx1MWJhZFx1MWJlNlx1MWJlOC1cdTFiZTlcdTFiZWRcdTFiZWYtXHUxYmYxXHUxYzJjLVx1MWMzM1x1MWMzNi1cdTFjMzdcdTFjZDAtXHUxY2QyXHUxY2Q0LVx1MWNlMFx1MWNlMi1cdTFjZThcdTFjZWRcdTFjZjRcdTFjZjgtXHUxY2Y5XHUxZGMwLVx1MWRmNVx1MWRmYy1cdTFkZmZcdTIwMGMtXHUyMDBkXHUyMGQwLVx1MjBkY1x1MjBkZC1cdTIwZTBcdTIwZTFcdTIwZTItXHUyMGU0XHUyMGU1LVx1MjBmMFx1MmNlZi1cdTJjZjFcdTJkN2ZcdTJkZTAtXHUyZGZmXHUzMDJhLVx1MzAyZFx1MzAyZS1cdTMwMmZcdTMwOTktXHUzMDlhXHVhNjZmXHVhNjcwLVx1YTY3Mlx1YTY3NC1cdWE2N2RcdWE2OWUtXHVhNjlmXHVhNmYwLVx1YTZmMVx1YTgwMlx1YTgwNlx1YTgwYlx1YTgyNS1cdWE4MjZcdWE4YzRcdWE4ZTAtXHVhOGYxXHVhOTI2LVx1YTkyZFx1YTk0Ny1cdWE5NTFcdWE5ODAtXHVhOTgyXHVhOWIzXHVhOWI2LVx1YTliOVx1YTliY1x1YTllNVx1YWEyOS1cdWFhMmVcdWFhMzEtXHVhYTMyXHVhYTM1LVx1YWEzNlx1YWE0M1x1YWE0Y1x1YWE3Y1x1YWFiMFx1YWFiMi1cdWFhYjRcdWFhYjctXHVhYWI4XHVhYWJlLVx1YWFiZlx1YWFjMVx1YWFlYy1cdWFhZWRcdWFhZjZcdWFiZTVcdWFiZThcdWFiZWRcdWZiMWVcdWZlMDAtXHVmZTBmXHVmZTIwLVx1ZmUyZlx1ZmY5ZS1cdWZmOWZdIikscXU9ZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlJiY3Njg8PWUuY2hhckNvZGVBdCgwKSYmVnUudGVzdChlKX0sJHU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlLmlzU29tZSgpJiZ0LmlzU29tZSgpP1Iuc29tZShuKGUuZ2V0T3JEaWUoKSx0LmdldE9yRGllKCkpKTpSLm5vbmUoKX0sV3U9JHQsS3U9RHUsWHU9S3QoImRpc3BsYXkiLCJibG9jayB0YWJsZSIpLFl1PUt0KCJmbG9hdCIsImxlZnQgcmlnaHQiKSxHdT1mdW5jdGlvbigpe2Zvcih2YXIgbj1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyluW2VdPWFyZ3VtZW50c1tlXTtyZXR1cm4gZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDxuLmxlbmd0aDt0KyspaWYoIW5bdF0oZSkpcmV0dXJuITE7cmV0dXJuITB9fShXdSxLdSxtKFl1KSksSnU9bShLdCgid2hpdGUtc3BhY2UiLCJwcmUgcHJlLWxpbmUgcHJlLXdyYXAiKSksUXU9WnQsWnU9cm4sZXM9Z2Eubm9kZUluZGV4LHRzPUh1LG5zPWZ1bmN0aW9uKGUpe3JldHVybiJjcmVhdGVSYW5nZSJpbiBlP2UuY3JlYXRlUmFuZ2UoKTpnYS5ET00uY3JlYXRlUm5nKCl9LHJzPWZ1bmN0aW9uKGUpe3JldHVybiBlJiYvW1xyXG5cdCBdLy50ZXN0KGUpfSxvcz1mdW5jdGlvbihlKXtyZXR1cm4hIWUuc2V0U3RhcnQmJiEhZS5zZXRFbmR9LGlzPWZ1bmN0aW9uKGUpe3ZhciB0LG49ZS5zdGFydENvbnRhaW5lcixyPWUuc3RhcnRPZmZzZXQ7cmV0dXJuISEocnMoZS50b1N0cmluZygpKSYmSnUobi5wYXJlbnROb2RlKSYmWnQobikmJih0PW4uZGF0YSxycyh0W3ItMV0pfHxycyh0W3IrMV0pKSl9LGFzPWZ1bmN0aW9uKGUpe3JldHVybiAwPT09ZS5sZWZ0JiYwPT09ZS5yaWdodCYmMD09PWUudG9wJiYwPT09ZS5ib3R0b219LHVzPWZ1bmN0aW9uKGUpe3ZhciB0LG4scixvLGksYSx1LHM7cmV0dXJuIHQ9MDwobj1lLmdldENsaWVudFJlY3RzKCkpLmxlbmd0aD9MdShuWzBdKTpMdShlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKSwhb3MoZSkmJlp1KGUpJiZhcyh0KT8oaT0ocj1lKS5vd25lckRvY3VtZW50LGE9bnMoaSksdT1pLmNyZWF0ZVRleHROb2RlKG9vKSwocz1yLnBhcmVudE5vZGUpLmluc2VydEJlZm9yZSh1LHIpLGEuc2V0U3RhcnQodSwwKSxhLnNldEVuZCh1LDEpLG89THUoYS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSkscy5yZW1vdmVDaGlsZCh1KSxvKTphcyh0KSYmb3MoZSk/ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zdGFydENvbnRhaW5lcixuPWUuZW5kQ29udGFpbmVyLHI9ZS5zdGFydE9mZnNldCxvPWUuZW5kT2Zmc2V0O2lmKHQ9PT1uJiZadChuKSYmMD09PXImJjE9PT1vKXt2YXIgaT1lLmNsb25lUmFuZ2UoKTtyZXR1cm4gaS5zZXRFbmRBZnRlcihuKSx1cyhpKX1yZXR1cm4gbnVsbH0oZSk6dH0sc3M9ZnVuY3Rpb24oZSx0KXt2YXIgbj1JdShlLHQpO3JldHVybiBuLndpZHRoPTEsbi5yaWdodD1uLmxlZnQrMSxufSxjcz1mdW5jdGlvbihlKXt2YXIgdCxuLHI9W10sbz1mdW5jdGlvbihlKXt2YXIgdCxuOzAhPT1lLmhlaWdodCYmKDA8ci5sZW5ndGgmJih0PWUsbj1yW3IubGVuZ3RoLTFdLHQubGVmdD09PW4ubGVmdCYmdC50b3A9PT1uLnRvcCYmdC5ib3R0b209PT1uLmJvdHRvbSYmdC5yaWdodD09PW4ucmlnaHQpfHxyLnB1c2goZSkpfSxpPWZ1bmN0aW9uKGUsdCl7dmFyIG49bnMoZS5vd25lckRvY3VtZW50KTtpZih0PGUuZGF0YS5sZW5ndGgpe2lmKHF1KGUuZGF0YVt0XSkpcmV0dXJuIHI7aWYocXUoZS5kYXRhW3QtMV0pJiYobi5zZXRTdGFydChlLHQpLG4uc2V0RW5kKGUsdCsxKSwhaXMobikpKXJldHVybiBvKHNzKHVzKG4pLCExKSkscn0wPHQmJihuLnNldFN0YXJ0KGUsdC0xKSxuLnNldEVuZChlLHQpLGlzKG4pfHxvKHNzKHVzKG4pLCExKSkpLHQ8ZS5kYXRhLmxlbmd0aCYmKG4uc2V0U3RhcnQoZSx0KSxuLnNldEVuZChlLHQrMSksaXMobil8fG8oc3ModXMobiksITApKSl9O2lmKFF1KGUuY29udGFpbmVyKCkpKXJldHVybiBpKGUuY29udGFpbmVyKCksZS5vZmZzZXQoKSkscjtpZihXdShlLmNvbnRhaW5lcigpKSlpZihlLmlzQXRFbmQoKSluPXRzKGUuY29udGFpbmVyKCksZS5vZmZzZXQoKSksUXUobikmJmkobixuLmRhdGEubGVuZ3RoKSxHdShuKSYmIVp1KG4pJiZvKHNzKHVzKG4pLCExKSk7ZWxzZXtpZihuPXRzKGUuY29udGFpbmVyKCksZS5vZmZzZXQoKSksUXUobikmJmkobiwwKSxHdShuKSYmZS5pc0F0RW5kKCkpcmV0dXJuIG8oc3ModXMobiksITEpKSxyO3Q9dHMoZS5jb250YWluZXIoKSxlLm9mZnNldCgpLTEpLEd1KHQpJiYhWnUodCkmJighWHUodCkmJiFYdShuKSYmR3Uobil8fG8oc3ModXModCksITEpKSksR3UobikmJm8oc3ModXMobiksITApKX1yZXR1cm4gcn07ZnVuY3Rpb24gbHModCxuLGUpe3ZhciByPWZ1bmN0aW9uKCl7cmV0dXJuIGU9ZXx8Y3MobHModCxuKSl9O3JldHVybntjb250YWluZXI6eCh0KSxvZmZzZXQ6eChuKSx0b1JhbmdlOmZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuKGU9bnModC5vd25lckRvY3VtZW50KSkuc2V0U3RhcnQodCxuKSxlLnNldEVuZCh0LG4pLGV9LGdldENsaWVudFJlY3RzOnIsaXNWaXNpYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIDA8cigpLmxlbmd0aH0saXNBdFN0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIFF1KHQpLDA9PT1ufSxpc0F0RW5kOmZ1bmN0aW9uKCl7cmV0dXJuIFF1KHQpP24+PXQuZGF0YS5sZW5ndGg6bj49dC5jaGlsZE5vZGVzLmxlbmd0aH0saXNFcXVhbDpmdW5jdGlvbihlKXtyZXR1cm4gZSYmdD09PWUuY29udGFpbmVyKCkmJm49PT1lLm9mZnNldCgpfSxnZXROb2RlOmZ1bmN0aW9uKGUpe3JldHVybiB0cyh0LGU/bi0xOm4pfX19KGphPWxzPWxzfHx7fSkuZnJvbVJhbmdlU3RhcnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGphKGUuc3RhcnRDb250YWluZXIsZS5zdGFydE9mZnNldCl9LGphLmZyb21SYW5nZUVuZD1mdW5jdGlvbihlKXtyZXR1cm4gamEoZS5lbmRDb250YWluZXIsZS5lbmRPZmZzZXQpfSxqYS5hZnRlcj1mdW5jdGlvbihlKXtyZXR1cm4gamEoZS5wYXJlbnROb2RlLGVzKGUpKzEpfSxqYS5iZWZvcmU9ZnVuY3Rpb24oZSl7cmV0dXJuIGphKGUucGFyZW50Tm9kZSxlcyhlKSl9LGphLmlzQWJvdmU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gJHUoWih0LmdldENsaWVudFJlY3RzKCkpLGVlKGUuZ2V0Q2xpZW50UmVjdHMoKSksRnUpLmdldE9yKCExKX0samEuaXNCZWxvdz1mdW5jdGlvbihlLHQpe3JldHVybiAkdShlZSh0LmdldENsaWVudFJlY3RzKCkpLFooZS5nZXRDbGllbnRSZWN0cygpKSxVdSkuZ2V0T3IoITEpfSxqYS5pc0F0U3RhcnQ9ZnVuY3Rpb24oZSl7cmV0dXJuISFlJiZlLmlzQXRTdGFydCgpfSxqYS5pc0F0RW5kPWZ1bmN0aW9uKGUpe3JldHVybiEhZSYmZS5pc0F0RW5kKCl9LGphLmlzVGV4dFBvc2l0aW9uPWZ1bmN0aW9uKGUpe3JldHVybiEhZSYmWnQoZS5jb250YWluZXIoKSl9LGphLmlzRWxlbWVudFBvc2l0aW9uPWZ1bmN0aW9uKGUpe3JldHVybiExPT09amEuaXNUZXh0UG9zaXRpb24oZSl9O3ZhciBmcyxkcyxtcz1scyxwcz1adCxncz1ZdCxocz1nYS5ub2RlSW5kZXgsdnM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wYXJlbnROb2RlO3JldHVybiBncyh0KT92cyh0KTp0fSx5cz1mdW5jdGlvbihlKXtyZXR1cm4gZT9jcihlLmNoaWxkTm9kZXMsZnVuY3Rpb24oZSx0KXtyZXR1cm4gZ3ModCkmJiJCUiIhPT10Lm5vZGVOYW1lP2U9ZS5jb25jYXQoeXModCkpOmUucHVzaCh0KSxlfSxbXSk6W119LGJzPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdD09PWV9fSxDcz1mdW5jdGlvbihlKXt2YXIgdCxyLG4sbztyZXR1cm4ocHMoZSk/InRleHQoKSI6ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKSsiWyIrKHI9eXModnModD1lKSksbj1scihyLGJzKHQpLHQpLHI9ci5zbGljZSgwLG4rMSksbz1jcihyLGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gcHModCkmJnBzKHJbbi0xXSkmJmUrKyxlfSwwKSxyPXVyKHIsV3QoW3Qubm9kZU5hbWVdKSksKG49bHIocixicyh0KSx0KSktbykrIl0ifSx3cz1mdW5jdGlvbihlLHQpe3ZhciBuLHIsbyxpLGEsdT1bXTtyZXR1cm4gbj10LmNvbnRhaW5lcigpLHI9dC5vZmZzZXQoKSxwcyhuKT9vPWZ1bmN0aW9uKGUsdCl7Zm9yKDsoZT1lLnByZXZpb3VzU2libGluZykmJnBzKGUpOyl0Kz1lLmRhdGEubGVuZ3RoO3JldHVybiB0fShuLHIpOihyPj0oaT1uLmNoaWxkTm9kZXMpLmxlbmd0aD8obz0iYWZ0ZXIiLHI9aS5sZW5ndGgtMSk6bz0iYmVmb3JlIixuPWlbcl0pLHUucHVzaChDcyhuKSksYT1mdW5jdGlvbihlLHQsbil7dmFyIHI9W107Zm9yKHQ9dC5wYXJlbnROb2RlO3QhPT1lJiYoIW58fCFuKHQpKTt0PXQucGFyZW50Tm9kZSlyLnB1c2godCk7cmV0dXJuIHJ9KGUsbiksYT11cihhLG0oWXQpKSwodT11LmNvbmNhdChhcihhLGZ1bmN0aW9uKGUpe3JldHVybiBDcyhlKX0pKSkucmV2ZXJzZSgpLmpvaW4oIi8iKSsiLCIrb30seHM9ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG87cmV0dXJuIHQ/KHQ9KG49dC5zcGxpdCgiLCIpKVswXS5zcGxpdCgiLyIpLG89MTxuLmxlbmd0aD9uWzFdOiJiZWZvcmUiLChyPWNyKHQsZnVuY3Rpb24oZSx0KXtyZXR1cm4odD0vKFtcd1wtXChcKV0rKVxbKFswLTldKylcXS8uZXhlYyh0KSk/KCJ0ZXh0KCkiPT09dFsxXSYmKHRbMV09IiN0ZXh0Iiksbj1lLHI9dFsxXSxvPXBhcnNlSW50KHRbMl0sMTApLGk9eXMobiksaT11cihpLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIXBzKGUpfHwhcHMoaVt0LTFdKX0pLChpPXVyKGksV3QoW3JdKSkpW29dKTpudWxsO3ZhciBuLHIsbyxpfSxlKSk/cHMocik/ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4scj1lLG89MDtwcyhyKTspe2lmKG49ci5kYXRhLmxlbmd0aCxvPD10JiZ0PD1vK24pe2U9cix0LT1vO2JyZWFrfWlmKCFwcyhyLm5leHRTaWJsaW5nKSl7ZT1yLHQ9bjticmVha31vKz1uLHI9ci5uZXh0U2libGluZ31yZXR1cm4gcHMoZSkmJnQ+ZS5kYXRhLmxlbmd0aCYmKHQ9ZS5kYXRhLmxlbmd0aCksbXMoZSx0KX0ocixwYXJzZUludChvLDEwKSk6KG89ImFmdGVyIj09PW8/aHMocikrMTpocyhyKSxtcyhyLnBhcmVudE5vZGUsbykpOm51bGwpOm51bGx9LFNzPWZ1bmN0aW9uKGUsdCl7WnQodCkmJjA9PT10LmRhdGEubGVuZ3RoJiZlLnJlbW92ZSh0KX0sTnM9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLG8saSxhLHUscyxjO25uKG4pPyhpPWUsYT10LHU9bixzPVIuZnJvbSh1LmZpcnN0Q2hpbGQpLGM9Ui5mcm9tKHUubGFzdENoaWxkKSxhLmluc2VydE5vZGUodSkscy5lYWNoKGZ1bmN0aW9uKGUpe3JldHVybiBTcyhpLGUucHJldmlvdXNTaWJsaW5nKX0pLGMuZWFjaChmdW5jdGlvbihlKXtyZXR1cm4gU3MoaSxlLm5leHRTaWJsaW5nKX0pKToocj1lLG89bix0Lmluc2VydE5vZGUobyksU3MocixvLnByZXZpb3VzU2libGluZyksU3MocixvLm5leHRTaWJsaW5nKSl9LEVzPWFuLGtzPWZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFyIGksYT1yW28/InN0YXJ0Q29udGFpbmVyIjoiZW5kQ29udGFpbmVyIl0sdT1yW28/InN0YXJ0T2Zmc2V0IjoiZW5kT2Zmc2V0Il0scz1bXSxjPTAsbD1lLmdldFJvb3QoKTtmb3IoWnQoYSk/cy5wdXNoKG4/ZnVuY3Rpb24oZSx0LG4pe3ZhciByLG87Zm9yKG89ZSh0LmRhdGEuc2xpY2UoMCxuKSkubGVuZ3RoLHI9dC5wcmV2aW91c1NpYmxpbmc7ciYmWnQocik7cj1yLnByZXZpb3VzU2libGluZylvKz1lKHIuZGF0YSkubGVuZ3RoO3JldHVybiBvfSh0LGEsdSk6dSk6KHU+PShpPWEuY2hpbGROb2RlcykubGVuZ3RoJiZpLmxlbmd0aCYmKGM9MSx1PU1hdGgubWF4KDAsaS5sZW5ndGgtMSkpLHMucHVzaChlLm5vZGVJbmRleChpW3VdLG4pK2MpKTthJiZhIT09bDthPWEucGFyZW50Tm9kZSlzLnB1c2goZS5ub2RlSW5kZXgoYSxuKSk7cmV0dXJuIHN9LF9zPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0wO3JldHVybiBoci5lYWNoKGUuc2VsZWN0KHQpLGZ1bmN0aW9uKGUpe2lmKCJhbGwiIT09ZS5nZXRBdHRyaWJ1dGUoImRhdGEtbWNlLWJvZ3VzIikpcmV0dXJuIGUhPT1uJiZ2b2lkIHIrK30pLHJ9LFJzPWZ1bmN0aW9uKGUsdCl7dmFyIG4scixvLGk9dD8ic3RhcnQiOiJlbmQiO249ZVtpKyJDb250YWluZXIiXSxyPWVbaSsiT2Zmc2V0Il0sJHQobikmJiJUUiI9PT1uLm5vZGVOYW1lJiYobj0obz1uLmNoaWxkTm9kZXMpW01hdGgubWluKHQ/cjpyLTEsby5sZW5ndGgtMSldKSYmKHI9dD8wOm4uY2hpbGROb2Rlcy5sZW5ndGgsZVsic2V0IisodD8iU3RhcnQiOiJFbmQiKV0obixyKSl9LFRzPWZ1bmN0aW9uKGUpe3JldHVybiBScyhlLCEwKSxScyhlLCExKSxlfSxBcz1mdW5jdGlvbihlLHQpe3ZhciBuO2lmKCR0KGUpJiYoZT1IdShlLHQpLEVzKGUpKSlyZXR1cm4gZTtpZihndShlKSl7aWYoWnQoZSkmJm11KGUpJiYoZT1lLnBhcmVudE5vZGUpLG49ZS5wcmV2aW91c1NpYmxpbmcsRXMobikpcmV0dXJuIG47aWYobj1lLm5leHRTaWJsaW5nLEVzKG4pKXJldHVybiBufX0sRHM9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4uZ2V0Tm9kZSgpLG89cj9yLm5vZGVOYW1lOm51bGwsaT1uLmdldFJuZygpO2lmKEVzKHIpfHwiSU1HIj09PW8pcmV0dXJue25hbWU6byxpbmRleDpfcyhuLmRvbSxvLHIpfTt2YXIgYSx1LHMsYyxsLGYsZCxtPUFzKChhPWkpLnN0YXJ0Q29udGFpbmVyLGEuc3RhcnRPZmZzZXQpfHxBcyhhLmVuZENvbnRhaW5lcixhLmVuZE9mZnNldCk7cmV0dXJuIG0/e25hbWU6bz1tLnRhZ05hbWUsaW5kZXg6X3Mobi5kb20sbyxtKX06KHU9ZSxjPXQsbD1pLGY9KHM9bikuZG9tLChkPXt9KS5zdGFydD1rcyhmLHUsYyxsLCEwKSxzLmlzQ29sbGFwc2VkKCl8fChkLmVuZD1rcyhmLHUsYyxsLCExKSksZCl9LE9zPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj17ImRhdGEtbWNlLXR5cGUiOiJib29rbWFyayIsaWQ6dCxzdHlsZToib3ZlcmZsb3c6aGlkZGVuO2xpbmUtaGVpZ2h0OjBweCJ9O3JldHVybiBuP2UuY3JlYXRlKCJzcGFuIixyLCImI3hGRUZGOyIpOmUuY3JlYXRlKCJzcGFuIixyKX0sQnM9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmRvbSxyPWUuZ2V0Um5nKCksbz1uLnVuaXF1ZUlkKCksaT1lLmlzQ29sbGFwc2VkKCksYT1lLmdldE5vZGUoKSx1PWEubm9kZU5hbWU7aWYoIklNRyI9PT11KXJldHVybntuYW1lOnUsaW5kZXg6X3Mobix1LGEpfTt2YXIgcz1UcyhyLmNsb25lUmFuZ2UoKSk7aWYoIWkpe3MuY29sbGFwc2UoITEpO3ZhciBjPU9zKG4sbysiX2VuZCIsdCk7TnMobixzLGMpfShyPVRzKHIpKS5jb2xsYXBzZSghMCk7dmFyIGw9T3MobixvKyJfc3RhcnQiLHQpO3JldHVybiBOcyhuLHIsbCksZS5tb3ZlVG9Cb29rbWFyayh7aWQ6byxrZWVwOiEwfSkse2lkOm99fSxQcz1mdW5jdGlvbihlLHQsbil7cmV0dXJuIDI9PT10P0RzKGx1LG4sZSk6Mz09PXQ/KG89KHI9ZSkuZ2V0Um5nKCkse3N0YXJ0OndzKHIuZG9tLmdldFJvb3QoKSxtcy5mcm9tUmFuZ2VTdGFydChvKSksZW5kOndzKHIuZG9tLmdldFJvb3QoKSxtcy5mcm9tUmFuZ2VFbmQobykpfSk6dD97cm5nOmUuZ2V0Um5nKCl9OkJzKGUsITEpO3ZhciByLG99LExzPU4oRHMsZCwhMCksSXM9Il9tY2VfY2FyZXQiLE1zPWZ1bmN0aW9uKGUpe3JldHVybiAkdChlKSYmZS5pZD09PUlzfSxGcz1mdW5jdGlvbihlLHQpe2Zvcig7dCYmdCE9PWU7KXtpZih0LmlkPT09SXMpcmV0dXJuIHQ7dD10LnBhcmVudE5vZGV9cmV0dXJuIG51bGx9LFVzPWdhLkRPTSx6cz1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5nZXRQYXJhbSh0LG4pO2lmKC0xPT09ci5pbmRleE9mKCI9IikpcmV0dXJuIHI7dmFyIG89ZS5nZXRQYXJhbSh0LCIiLCJoYXNoIik7cmV0dXJuIG8uaGFzT3duUHJvcGVydHkoZS5pZCk/b1tlLmlkXTpufSxqcz1mdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRQYXJhbSgiY29udGVudF9zZWN1cml0eV9wb2xpY3kiLCIiKX0sSHM9ZnVuY3Rpb24oZSl7aWYoZS5nZXRQYXJhbSgiZm9yY2VfcF9uZXdsaW5lcyIsITEpKXJldHVybiJwIjt2YXIgdD1lLmdldFBhcmFtKCJmb3JjZWRfcm9vdF9ibG9jayIsInAiKTtyZXR1cm4hMT09PXQ/IiI6ITA9PT10PyJwIjp0fSxWcz1mdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRQYXJhbSgiZm9yY2VkX3Jvb3RfYmxvY2tfYXR0cnMiLHt9KX0scXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0UGFyYW0oImF1dG9tYXRpY191cGxvYWRzIiwhMCwiYm9vbGVhbiIpfSwkcz1mdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRQYXJhbSgiaWNvbnMiLCIiLCJzdHJpbmciKX0sV3M9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0UGFyYW0oImxhbmd1YWdlIiwiZW4iLCJzdHJpbmciKX0sS3M9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0UGFyYW0oImluZGVudF91c2VfbWFyZ2luIiwhMSl9LFhzPSR0LFlzPVp0LEdzPWZ1bmN0aW9uKGUpe3ZhciB0PWUucGFyZW50Tm9kZTt0JiZ0LnJlbW92ZUNoaWxkKGUpfSxKcz1mdW5jdGlvbihlLHQpezA9PT10Lmxlbmd0aD9HcyhlKTplLm5vZGVWYWx1ZT10fSxRcz1mdW5jdGlvbihlKXt2YXIgdD1sdShlKTtyZXR1cm57Y291bnQ6ZS5sZW5ndGgtdC5sZW5ndGgsdGV4dDp0fX0sWnM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcmMoZSksdH0sZWM9ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG89dC5jb250YWluZXIoKSxpPShuPXRlKG8uY2hpbGROb2RlcyksKC0xPT09KHI9SShuLGUpKT9SLm5vbmUoKTpSLnNvbWUocikpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZTx0Lm9mZnNldCgpP21zKG8sdC5vZmZzZXQoKS0xKTp0fSkuZ2V0T3IodCkpO3JldHVybiByYyhlKSxpfSx0Yz1mdW5jdGlvbihlLHQpe3JldHVybiBZcyhlKSYmdC5jb250YWluZXIoKT09PWU/KHI9dCxvPVFzKChuPWUpLmRhdGEuc3Vic3RyKDAsci5vZmZzZXQoKSkpLGk9UXMobi5kYXRhLnN1YnN0cihyLm9mZnNldCgpKSksMDwoYT1vLnRleHQraS50ZXh0KS5sZW5ndGg/KEpzKG4sYSksbXMobixyLm9mZnNldCgpLW8uY291bnQpKTpyKTpacyhlLHQpO3ZhciBuLHIsbyxpLGF9LG5jPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG1zLmlzVGV4dFBvc2l0aW9uKHQpP3RjKGUsdCk6KG49ZSwoKHI9dCkuY29udGFpbmVyKCk9PT1uLnBhcmVudE5vZGU/ZWM6WnMpKG4scikpO3ZhciBuLHJ9LHJjPWZ1bmN0aW9uKGUpe2lmKFhzKGUpJiZndShlKSYmKGh1KGUpP2UucmVtb3ZlQXR0cmlidXRlKCJkYXRhLW1jZS1jYXJldCIpOkdzKGUpKSxZcyhlKSl7dmFyIHQ9bHUoZnVuY3Rpb24oZSl7dHJ5e3JldHVybiBlLm5vZGVWYWx1ZX1jYXRjaCh0KXtyZXR1cm4iIn19KGUpKTtKcyhlLHQpfX0sb2M9bnQoKS5icm93c2VyLGljPWFuLGFjPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixvLGksYSx1LHM9SXUodC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuKTtyZXR1cm4gaT0iQk9EWSI9PT1lLnRhZ05hbWU/KHI9ZS5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxvPWUuc2Nyb2xsTGVmdHx8ci5zY3JvbGxMZWZ0LGUuc2Nyb2xsVG9wfHxyLnNjcm9sbFRvcCk6KHU9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxvPWUuc2Nyb2xsTGVmdC11LmxlZnQsZS5zY3JvbGxUb3AtdS50b3ApLHMubGVmdCs9byxzLnJpZ2h0Kz1vLHMudG9wKz1pLHMuYm90dG9tKz1pLHMud2lkdGg9MSwwPChhPXQub2Zmc2V0V2lkdGgtdC5jbGllbnRXaWR0aCkmJihuJiYoYSo9LTEpLHMubGVmdCs9YSxzLnJpZ2h0Kz1hKSxzfSx1Yz1mdW5jdGlvbihlLGEsdSx0KXt2YXIgbixzLGM9eGEoUi5ub25lKCkpLHI9SHMoZSksbD0wPHIubGVuZ3RoP3I6InAiLGY9ZnVuY3Rpb24oKXshZnVuY3Rpb24oZSl7dmFyIHQsbixyLG8saTtmb3IodD1VYShOZS5mcm9tRG9tKGUpLCIqW2NvbnRlbnRFZGl0YWJsZT1mYWxzZV0iKSxvPTA7bzx0Lmxlbmd0aDtvKyspcj0obj10W29dLmRvbSgpKS5wcmV2aW91c1NpYmxpbmcsd3UocikmJigxPT09KGk9ci5kYXRhKS5sZW5ndGg/ci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHIpOnIuZGVsZXRlRGF0YShpLmxlbmd0aC0xLDEpKSxyPW4ubmV4dFNpYmxpbmcsQ3UocikmJigxPT09KGk9ci5kYXRhKS5sZW5ndGg/ci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHIpOnIuZGVsZXRlRGF0YSgwLDEpKX0oYSkscyYmKHJjKHMpLHM9bnVsbCksYy5nZXQoKS5lYWNoKGZ1bmN0aW9uKGUpe25hKGUuY2FyZXQpLnJlbW92ZSgpLGMuc2V0KFIubm9uZSgpKX0pLG4mJihYbi5jbGVhckludGVydmFsKG4pLG49bnVsbCl9LGQ9ZnVuY3Rpb24oKXtuPVhuLnNldEludGVydmFsKGZ1bmN0aW9uKCl7dCgpP25hKCJkaXYubWNlLXZpc3VhbC1jYXJldCIsYSkudG9nZ2xlQ2xhc3MoIm1jZS12aXN1YWwtY2FyZXQtaGlkZGVuIik6bmEoImRpdi5tY2UtdmlzdWFsLWNhcmV0IixhKS5hZGRDbGFzcygibWNlLXZpc3VhbC1jYXJldC1oaWRkZW4iKX0sNTAwKX07cmV0dXJue3Nob3c6ZnVuY3Rpb24odCxlKXt2YXIgbixyLG87aWYoZigpLCR0KG89ZSkmJi9eKFREfFRIKSQvaS50ZXN0KG8udGFnTmFtZSkpcmV0dXJuIG51bGw7aWYoIXUoZSkpcmV0dXJuIHM9ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG87aWYocj1lLm93bmVyRG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3UpLG89ZS5wYXJlbnROb2RlLHQpe2lmKG49ZS5wcmV2aW91c1NpYmxpbmcsZHUobikpe2lmKGd1KG4pKXJldHVybiBuO2lmKHd1KG4pKXJldHVybiBuLnNwbGl0VGV4dChuLmRhdGEubGVuZ3RoLTEpfW8uaW5zZXJ0QmVmb3JlKHIsZSl9ZWxzZXtpZihuPWUubmV4dFNpYmxpbmcsZHUobikpe2lmKGd1KG4pKXJldHVybiBuO2lmKEN1KG4pKXJldHVybiBuLnNwbGl0VGV4dCgxKSxufWUubmV4dFNpYmxpbmc/by5pbnNlcnRCZWZvcmUocixlLm5leHRTaWJsaW5nKTpvLmFwcGVuZENoaWxkKHIpfXJldHVybiByfShlLHQpLHI9ZS5vd25lckRvY3VtZW50LmNyZWF0ZVJhbmdlKCksaWMocy5uZXh0U2libGluZyk/KHIuc2V0U3RhcnQocywwKSxyLnNldEVuZChzLDApKTooci5zZXRTdGFydChzLDEpLHIuc2V0RW5kKHMsMSkpLHI7cz1idShsLGUsdCksbj1hYyhhLGUsdCksbmEocykuY3NzKCJ0b3AiLG4udG9wKTt2YXIgaT1uYSgnPGRpdiBjbGFzcz0ibWNlLXZpc3VhbC1jYXJldCIgZGF0YS1tY2UtYm9ndXM9ImFsbCI+PC9kaXY+JykuY3NzKG4pLmFwcGVuZFRvKGEpWzBdO3JldHVybiBjLnNldChSLnNvbWUoe2NhcmV0OmksZWxlbWVudDplLGJlZm9yZTp0fSkpLGMuZ2V0KCkuZWFjaChmdW5jdGlvbihlKXt0JiZuYShlLmNhcmV0KS5hZGRDbGFzcygibWNlLXZpc3VhbC1jYXJldC1iZWZvcmUiKX0pLGQoKSwocj1lLm93bmVyRG9jdW1lbnQuY3JlYXRlUmFuZ2UoKSkuc2V0U3RhcnQocywwKSxyLnNldEVuZChzLDApLHJ9LGhpZGU6ZixnZXRDc3M6ZnVuY3Rpb24oKXtyZXR1cm4iLm1jZS12aXN1YWwtY2FyZXQge3Bvc2l0aW9uOiBhYnNvbHV0ZTtiYWNrZ3JvdW5kLWNvbG9yOiBibGFjaztiYWNrZ3JvdW5kLWNvbG9yOiBjdXJyZW50Y29sb3I7fS5tY2UtdmlzdWFsLWNhcmV0LWhpZGRlbiB7ZGlzcGxheTogbm9uZTt9KltkYXRhLW1jZS1jYXJldF0ge3Bvc2l0aW9uOiBhYnNvbHV0ZTtsZWZ0OiAtMTAwMHB4O3JpZ2h0OiBhdXRvO3RvcDogMDttYXJnaW46IDA7cGFkZGluZzogMDt9In0scmVwb3NpdGlvbjpmdW5jdGlvbigpe2MuZ2V0KCkuZWFjaChmdW5jdGlvbihlKXt2YXIgdD1hYyhhLGUuZWxlbWVudCxlLmJlZm9yZSk7bmEoZS5jYXJldCkuY3NzKHBlKHt9LHQpKX0pfSxkZXN0cm95OmZ1bmN0aW9uKCl7cmV0dXJuIFhuLmNsZWFySW50ZXJ2YWwobil9fX0sc2M9ZnVuY3Rpb24oKXtyZXR1cm4gb2MuaXNJRSgpfHxvYy5pc0VkZ2UoKXx8b2MuaXNGaXJlZm94KCl9LGNjPWZ1bmN0aW9uKGUpe3JldHVybiBpYyhlKXx8R3QoZSkmJnNjKCl9LGxjPWFuLGZjPUt0KCJkaXNwbGF5IiwiYmxvY2sgdGFibGUgdGFibGUtY2VsbCB0YWJsZS1jYXB0aW9uIGxpc3QtaXRlbSIpLGRjPWd1LG1jPW11LHBjPSR0LGdjPUR1LGhjPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuO249ZSh0KTspaWYoIW1jKG4pKXJldHVybiBuO3JldHVybiBudWxsfSx2Yz1mdW5jdGlvbihlLHQsbixyLG8pe3ZhciBpPW5ldyByYShlLHIpO2lmKHQ8MCl7aWYoKGxjKGUpfHxtYyhlKSkmJm4oZT1oYyhpLnByZXYsITApKSlyZXR1cm4gZTtmb3IoO2U9aGMoaS5wcmV2LG8pOylpZihuKGUpKXJldHVybiBlfWlmKDA8dCl7aWYoKGxjKGUpfHxtYyhlKSkmJm4oZT1oYyhpLm5leHQsITApKSlyZXR1cm4gZTtmb3IoO2U9aGMoaS5uZXh0LG8pOylpZihuKGUpKXJldHVybiBlfXJldHVybiBudWxsfSx5Yz1mdW5jdGlvbihlLHQpe2Zvcig7ZSYmZSE9PXQ7KXtpZihmYyhlKSlyZXR1cm4gZTtlPWUucGFyZW50Tm9kZX1yZXR1cm4gbnVsbH0sYmM9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB5YyhlLmNvbnRhaW5lcigpLG4pPT09eWModC5jb250YWluZXIoKSxuKX0sQ2M9ZnVuY3Rpb24oZSx0KXt2YXIgbixyO3JldHVybiB0PyhuPXQuY29udGFpbmVyKCkscj10Lm9mZnNldCgpLHBjKG4pP24uY2hpbGROb2Rlc1tyK2VdOm51bGwpOm51bGx9LHdjPWZ1bmN0aW9uKGUsdCl7dmFyIG49dC5vd25lckRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7cmV0dXJuIGU/KG4uc2V0U3RhcnRCZWZvcmUodCksbi5zZXRFbmRCZWZvcmUodCkpOihuLnNldFN0YXJ0QWZ0ZXIodCksbi5zZXRFbmRBZnRlcih0KSksbn0seGM9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLG8saSxhO2ZvcihvPWU/InByZXZpb3VzU2libGluZyI6Im5leHRTaWJsaW5nIjtuJiZuIT09dDspe2lmKHI9bltvXSxkYyhyKSYmKHI9cltvXSksbGMocikpe2lmKGE9bix5YyhyLGk9dCk9PT15YyhhLGkpKXJldHVybiByO2JyZWFrfWlmKGdjKHIpKWJyZWFrO249bi5wYXJlbnROb2RlfXJldHVybiBudWxsfSxTYz1OKHdjLCEwKSxOYz1OKHdjLCExKSxFYz1mdW5jdGlvbihlLHQsbil7dmFyIHIsbyxpLGEsdT1OKHhjLCEwLHQpLHM9Tih4YywhMSx0KTtpZihvPW4uc3RhcnRDb250YWluZXIsaT1uLnN0YXJ0T2Zmc2V0LG11KG8pKXtpZihwYyhvKXx8KG89by5wYXJlbnROb2RlKSwiYmVmb3JlIj09PShhPW8uZ2V0QXR0cmlidXRlKCJkYXRhLW1jZS1jYXJldCIpKSYmKHI9by5uZXh0U2libGluZyxjYyhyKSkpcmV0dXJuIFNjKHIpO2lmKCJhZnRlciI9PT1hJiYocj1vLnByZXZpb3VzU2libGluZyxjYyhyKSkpcmV0dXJuIE5jKHIpfWlmKCFuLmNvbGxhcHNlZClyZXR1cm4gbjtpZihadChvKSl7aWYoZGMobykpe2lmKDE9PT1lKXtpZihyPXMobykpcmV0dXJuIFNjKHIpO2lmKHI9dShvKSlyZXR1cm4gTmMocil9aWYoLTE9PT1lKXtpZihyPXUobykpcmV0dXJuIE5jKHIpO2lmKHI9cyhvKSlyZXR1cm4gU2Mocil9cmV0dXJuIG59aWYod3UobykmJmk+PW8uZGF0YS5sZW5ndGgtMSlyZXR1cm4gMT09PWUmJihyPXMobykpP1NjKHIpOm47aWYoQ3UobykmJmk8PTEpcmV0dXJuLTE9PT1lJiYocj11KG8pKT9OYyhyKTpuO2lmKGk9PT1vLmRhdGEubGVuZ3RoKXJldHVybihyPXMobykpP1NjKHIpOm47aWYoMD09PWkpcmV0dXJuKHI9dShvKSk/TmMocik6bn1yZXR1cm4gbn0sa2M9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gUi5mcm9tKENjKGU/MDotMSx0KSkuZmlsdGVyKGxjKX0sX2M9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPUVjKGUsdCxuKTtyZXR1cm4tMT09PWU/bHMuZnJvbVJhbmdlU3RhcnQocik6bHMuZnJvbVJhbmdlRW5kKHIpfSxSYz1mdW5jdGlvbihlKXtyZXR1cm4gUi5mcm9tKGUuZ2V0Tm9kZSgpKS5tYXAoTmUuZnJvbURvbSl9LFRjPWZ1bmN0aW9uKGUsdCl7Zm9yKDt0PWUodCk7KWlmKHQuaXNWaXNpYmxlKCkpcmV0dXJuIHQ7cmV0dXJuIHR9LEFjPWZ1bmN0aW9uKGUsdCl7dmFyIG49YmMoZSx0KTtyZXR1cm4hKG58fCFybihlLmdldE5vZGUoKSkpfHxufTsoZHM9ZnM9ZnN8fHt9KVtkcy5CYWNrd2FyZHM9LTFdPSJCYWNrd2FyZHMiLGRzW2RzLkZvcndhcmRzPTFdPSJGb3J3YXJkcyI7dmFyIERjLE9jPWFuLEJjPVp0LFBjPSR0LExjPXJuLEljPUR1LE1jPWZ1bmN0aW9uKGUpe3JldHVybiBSdShlKXx8ISFPdSh0PWUpJiYhMCE9PVcodGUodC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpKSxmdW5jdGlvbihlLHQpe3JldHVybiBlfHxTdSh0KX0sITEpO3ZhciB0fSxGYz1CdSxVYz1mdW5jdGlvbihlLHQpe3JldHVybiBlLmhhc0NoaWxkTm9kZXMoKSYmdDxlLmNoaWxkTm9kZXMubGVuZ3RoP2UuY2hpbGROb2Rlc1t0XTpudWxsfSx6Yz1mdW5jdGlvbihlLHQpe2lmKDA8ZSl7aWYoSWModC5wcmV2aW91c1NpYmxpbmcpJiYhQmModC5wcmV2aW91c1NpYmxpbmcpKXJldHVybiBtcy5iZWZvcmUodCk7aWYoQmModCkpcmV0dXJuIG1zKHQsMCl9aWYoZTwwKXtpZihJYyh0Lm5leHRTaWJsaW5nKSYmIUJjKHQubmV4dFNpYmxpbmcpKXJldHVybiBtcy5hZnRlcih0KTtpZihCYyh0KSlyZXR1cm4gbXModCx0LmRhdGEubGVuZ3RoKX1yZXR1cm4hKGU8MCl8fExjKHQpP21zLmJlZm9yZSh0KTptcy5hZnRlcih0KX0samM9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLG8saSxhLHU7aWYoIVBjKG4pfHwhdClyZXR1cm4gbnVsbDtpZih0LmlzRXF1YWwobXMuYWZ0ZXIobikpJiZuLmxhc3RDaGlsZCl7aWYodT1tcy5hZnRlcihuLmxhc3RDaGlsZCksZTwwJiZJYyhuLmxhc3RDaGlsZCkmJlBjKG4ubGFzdENoaWxkKSlyZXR1cm4gTGMobi5sYXN0Q2hpbGQpP21zLmJlZm9yZShuLmxhc3RDaGlsZCk6dX1lbHNlIHU9dDt2YXIgcyxjLGwsZj11LmNvbnRhaW5lcigpLGQ9dS5vZmZzZXQoKTtpZihCYyhmKSl7aWYoZTwwJiYwPGQpcmV0dXJuIG1zKGYsLS1kKTtpZigwPGUmJmQ8Zi5sZW5ndGgpcmV0dXJuIG1zKGYsKytkKTtyPWZ9ZWxzZXtpZihlPDAmJjA8ZCYmKG89VWMoZixkLTEpLEljKG8pKSlyZXR1cm4hTWMobykmJihpPXZjKG8sZSxGYyxvKSk/QmMoaSk/bXMoaSxpLmRhdGEubGVuZ3RoKTptcy5hZnRlcihpKTpCYyhvKT9tcyhvLG8uZGF0YS5sZW5ndGgpOm1zLmJlZm9yZShvKTtpZigwPGUmJmQ8Zi5jaGlsZE5vZGVzLmxlbmd0aCYmKG89VWMoZixkKSxJYyhvKSkpcmV0dXJuIExjKG8pPyhzPW4sKGw9KGM9bykubmV4dFNpYmxpbmcpJiZJYyhsKT9CYyhsKT9tcyhsLDApOm1zLmJlZm9yZShsKTpqYyhmcy5Gb3J3YXJkcyxtcy5hZnRlcihjKSxzKSk6IU1jKG8pJiYoaT12YyhvLGUsRmMsbykpP0JjKGkpP21zKGksMCk6bXMuYmVmb3JlKGkpOkJjKG8pP21zKG8sMCk6bXMuYWZ0ZXIobyk7cj1vfHx1LmdldE5vZGUoKX1yZXR1cm4oMDxlJiZ1LmlzQXRFbmQoKXx8ZTwwJiZ1LmlzQXRTdGFydCgpKSYmKHI9dmMocixlLHgoITApLG4sITApLEZjKHIsbikpP3pjKGUscik6KG89dmMocixlLEZjLG4pLCEoYT1mcihIKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPVtdO2UmJmUhPT10OyluLnB1c2goZSksZT1lLnBhcmVudE5vZGU7cmV0dXJuIG59KGYsbiksT2MpKSl8fG8mJmEuY29udGFpbnMobyk/bz96YyhlLG8pOm51bGw6dT0wPGU/bXMuYWZ0ZXIoYSk6bXMuYmVmb3JlKGEpKX0sSGM9ZnVuY3Rpb24odCl7cmV0dXJue25leHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGpjKGZzLkZvcndhcmRzLGUsdCl9LHByZXY6ZnVuY3Rpb24oZSl7cmV0dXJuIGpjKGZzLkJhY2t3YXJkcyxlLHQpfX19LFZjPWZ1bmN0aW9uKGUpe3JldHVybiBtcy5pc1RleHRQb3NpdGlvbihlKT8wPT09ZS5vZmZzZXQoKTpEdShlLmdldE5vZGUoKSl9LHFjPWZ1bmN0aW9uKGUpe2lmKG1zLmlzVGV4dFBvc2l0aW9uKGUpKXt2YXIgdD1lLmNvbnRhaW5lcigpO3JldHVybiBlLm9mZnNldCgpPT09dC5kYXRhLmxlbmd0aH1yZXR1cm4gRHUoZS5nZXROb2RlKCEwKSl9LCRjPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIW1zLmlzVGV4dFBvc2l0aW9uKGUpJiYhbXMuaXNUZXh0UG9zaXRpb24odCkmJmUuZ2V0Tm9kZSgpPT09dC5nZXROb2RlKCEwKX0sV2M9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlPyEkYyh0LG4pJiYocj10LCEoIW1zLmlzVGV4dFBvc2l0aW9uKHIpJiZybihyLmdldE5vZGUoKSkpKSYmcWModCkmJlZjKG4pOiEkYyhuLHQpJiZWYyh0KSYmcWMobik7dmFyIHJ9LEtjPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1IYyh0KTtyZXR1cm4gUi5mcm9tKGU/ci5uZXh0KG4pOnIucHJldihuKSl9LFhjPWZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gS2ModCxuLHIpLmJpbmQoZnVuY3Rpb24oZSl7cmV0dXJuIGJjKHIsZSxuKSYmV2ModCxyLGUpP0tjKHQsbixlKTpSLnNvbWUoZSl9KX0sWWM9ZnVuY3Rpb24odCxuLGUscil7cmV0dXJuIFhjKHQsbixlKS5iaW5kKGZ1bmN0aW9uKGUpe3JldHVybiByKGUpP1ljKHQsbixlLHIpOlIuc29tZShlKX0pfSxHYz1mdW5jdGlvbihlLHQpe3ZhciBuLHIsbyxpLGEsdT1lP3QuZmlyc3RDaGlsZDp0Lmxhc3RDaGlsZDtyZXR1cm4gWnQodSk/Ui5zb21lKG1zKHUsZT8wOnUuZGF0YS5sZW5ndGgpKTp1P0R1KHUpP1Iuc29tZShlP21zLmJlZm9yZSh1KTpybihhPXUpP21zLmJlZm9yZShhKTptcy5hZnRlcihhKSk6KHI9dCxvPXUsaT0obj1lKT9tcy5iZWZvcmUobyk6bXMuYWZ0ZXIobyksS2MobixyLGkpKTpSLm5vbmUoKX0sSmM9TihLYywhMCksUWM9TihLYywhMSksWmM9TihHYywhMCksZWw9TihHYywhMSksdGw9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gJHQodCkmJmUuaXNCbG9jayh0KSYmIXQuaW5uZXJIVE1MJiYhcnIuaWUmJih0LmlubmVySFRNTD0nPGJyIGRhdGEtbWNlLWJvZ3VzPSIxIiAvPicpLHR9LG5sPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGVsKGUpLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm4hMX0sZnVuY3Rpb24oZSl7cmV0dXJuIHQuc2V0U3RhcnQoZS5jb250YWluZXIoKSxlLm9mZnNldCgpKSx0LnNldEVuZChlLmNvbnRhaW5lcigpLGUub2Zmc2V0KCkpLCEwfSl9LHJsPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4hKCExIT09dC5oYXNDaGlsZE5vZGVzKCl8fCFGcyhlLHQpKSYmKG89bixpPShyPXQpLm93bmVyRG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3UpLHIuYXBwZW5kQ2hpbGQoaSksby5zZXRTdGFydChpLDApLG8uc2V0RW5kKGksMCksITApO3ZhciByLG8saX0sb2w9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG8saSxhLHUscz1uW3Q/InN0YXJ0IjoiZW5kIl0sYz1lLmdldFJvb3QoKTtpZihzKXtmb3IoYT1zWzBdLGk9YyxvPXMubGVuZ3RoLTE7MTw9bztvLS0pe2lmKHU9aS5jaGlsZE5vZGVzLHJsKGMsaSxyKSlyZXR1cm4hMDtpZihzW29dPnUubGVuZ3RoLTEpcmV0dXJuISFybChjLGkscil8fG5sKGkscik7aT11W3Nbb11dfTM9PT1pLm5vZGVUeXBlJiYoYT1NYXRoLm1pbihzWzBdLGkubm9kZVZhbHVlLmxlbmd0aCkpLDE9PT1pLm5vZGVUeXBlJiYoYT1NYXRoLm1pbihzWzBdLGkuY2hpbGROb2Rlcy5sZW5ndGgpKSx0P3Iuc2V0U3RhcnQoaSxhKTpyLnNldEVuZChpLGEpfXJldHVybiEwfSxpbD1mdW5jdGlvbihlKXtyZXR1cm4gWnQoZSkmJjA8ZS5kYXRhLmxlbmd0aH0sYWw9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLG8saSxhLHUscyxjPWUuZ2V0KG4uaWQrIl8iK3QpLGw9bi5rZWVwO2lmKGMpe2lmKHI9Yy5wYXJlbnROb2RlLHM9KHU9KG89InN0YXJ0Ij09PXQ/bD9jLmhhc0NoaWxkTm9kZXMoKT8ocj1jLmZpcnN0Q2hpbGQsMSk6aWwoYy5uZXh0U2libGluZyk/KHI9Yy5uZXh0U2libGluZywwKTppbChjLnByZXZpb3VzU2libGluZyk/KHI9Yy5wcmV2aW91c1NpYmxpbmcsYy5wcmV2aW91c1NpYmxpbmcuZGF0YS5sZW5ndGgpOihyPWMucGFyZW50Tm9kZSxlLm5vZGVJbmRleChjKSsxKTplLm5vZGVJbmRleChjKTpsP2MuaGFzQ2hpbGROb2RlcygpPyhyPWMuZmlyc3RDaGlsZCwxKTppbChjLnByZXZpb3VzU2libGluZyk/KHI9Yy5wcmV2aW91c1NpYmxpbmcsYy5wcmV2aW91c1NpYmxpbmcuZGF0YS5sZW5ndGgpOihyPWMucGFyZW50Tm9kZSxlLm5vZGVJbmRleChjKSk6ZS5ub2RlSW5kZXgoYyksciksbyksIWwpe2ZvcihhPWMucHJldmlvdXNTaWJsaW5nLGk9Yy5uZXh0U2libGluZyxoci5lYWNoKGhyLmdyZXAoYy5jaGlsZE5vZGVzKSxmdW5jdGlvbihlKXtadChlKSYmKGUubm9kZVZhbHVlPWUubm9kZVZhbHVlLnJlcGxhY2UoL1x1RkVGRi9nLCIiKSl9KTtjPWUuZ2V0KG4uaWQrIl8iK3QpOyllLnJlbW92ZShjLCEwKTthJiZpJiZhLm5vZGVUeXBlPT09aS5ub2RlVHlwZSYmWnQoYSkmJiFyci5vcGVyYSYmKG89YS5ub2RlVmFsdWUubGVuZ3RoLGEuYXBwZW5kRGF0YShpLm5vZGVWYWx1ZSksZS5yZW1vdmUoaSkscz0odT1hLG8pKX1yZXR1cm4gUi5zb21lKG1zKHUscykpfXJldHVybiBSLm5vbmUoKX0sdWw9ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG8saSxhLHUscyxjLGwsZixkLG0scCxnLGg9ZS5kb207aWYodCl7aWYoZz10LGhyLmlzQXJyYXkoZy5zdGFydCkpcmV0dXJuIG09dCxwPShkPWgpLmNyZWF0ZVJuZygpLG9sKGQsITAsbSxwKSYmb2woZCwhMSxtLHApP1Iuc29tZShwKTpSLm5vbmUoKTtpZigic3RyaW5nIj09dHlwZW9mIHQuc3RhcnQpcmV0dXJuIFIuc29tZSgoYz10LGw9KHM9aCkuY3JlYXRlUm5nKCksZj14cyhzLmdldFJvb3QoKSxjLnN0YXJ0KSxsLnNldFN0YXJ0KGYuY29udGFpbmVyKCksZi5vZmZzZXQoKSksZj14cyhzLmdldFJvb3QoKSxjLmVuZCksbC5zZXRFbmQoZi5jb250YWluZXIoKSxmLm9mZnNldCgpKSxsKSk7aWYodC5oYXNPd25Qcm9wZXJ0eSgiaWQiKSlyZXR1cm4gYT1hbChvPWgsInN0YXJ0IixpPXQpLHU9YWwobywiZW5kIixpKSwkdShhLHUub3IoYSksZnVuY3Rpb24oZSx0KXt2YXIgbj1vLmNyZWF0ZVJuZygpO3JldHVybiBuLnNldFN0YXJ0KHRsKG8sZS5jb250YWluZXIoKSksZS5vZmZzZXQoKSksbi5zZXRFbmQodGwobyx0LmNvbnRhaW5lcigpKSx0Lm9mZnNldCgpKSxufSk7aWYodC5oYXNPd25Qcm9wZXJ0eSgibmFtZSIpKXJldHVybiBuPWgscj10LFIuZnJvbShuLnNlbGVjdChyLm5hbWUpW3IuaW5kZXhdKS5tYXAoZnVuY3Rpb24oZSl7dmFyIHQ9bi5jcmVhdGVSbmcoKTtyZXR1cm4gdC5zZWxlY3ROb2RlKGUpLHR9KTtpZih0Lmhhc093blByb3BlcnR5KCJybmciKSlyZXR1cm4gUi5zb21lKHQucm5nKX1yZXR1cm4gUi5ub25lKCl9LHNsPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gUHMoZSx0LG4pfSxjbD1mdW5jdGlvbih0LGUpe3VsKHQsZSkuZWFjaChmdW5jdGlvbihlKXt0LnNldFJuZyhlKX0pfSxsbD1mdW5jdGlvbihlKXtyZXR1cm4gJHQoZSkmJiJTUEFOIj09PWUudGFnTmFtZSYmImJvb2ttYXJrIj09PWUuZ2V0QXR0cmlidXRlKCJkYXRhLW1jZS10eXBlIil9LGZsPShEYz1vbyxmdW5jdGlvbihlKXtyZXR1cm4gRGM9PT1lfSksZGw9ZnVuY3Rpb24oZSl7cmV0dXJuIiIhPT1lJiYtMSE9PSIgXGZcblxyXHRceDBCIi5pbmRleE9mKGUpfSxtbD1mdW5jdGlvbihlKXtyZXR1cm4hZGwoZSkmJiFmbChlKX0scGw9ZnVuY3Rpb24oZSl7cmV0dXJuISFlLm5vZGVUeXBlfSxnbD1mdW5jdGlvbihlLHQsbil7dmFyIHIsbyxpLGEsdT1uLnN0YXJ0T2Zmc2V0LHM9bi5zdGFydENvbnRhaW5lcjtpZigobi5zdGFydENvbnRhaW5lciE9PW4uZW5kQ29udGFpbmVyfHwhKGE9bi5zdGFydENvbnRhaW5lci5jaGlsZE5vZGVzW24uc3RhcnRPZmZzZXRdKXx8IS9eKElNRykkLy50ZXN0KGEubm9kZU5hbWUpKSYmMT09PXMubm9kZVR5cGUpZm9yKHU8KGk9cy5jaGlsZE5vZGVzKS5sZW5ndGg/KHM9aVt1XSxyPW5ldyByYShzLGUuZ2V0UGFyZW50KHMsZS5pc0Jsb2NrKSkpOihzPWlbaS5sZW5ndGgtMV0sKHI9bmV3IHJhKHMsZS5nZXRQYXJlbnQocyxlLmlzQmxvY2spKSkubmV4dCghMCkpLG89ci5jdXJyZW50KCk7bztvPXIubmV4dCgpKWlmKDM9PT1vLm5vZGVUeXBlJiYhYmwobykpcmV0dXJuIG4uc2V0U3RhcnQobywwKSx2b2lkIHQuc2V0Um5nKG4pfSxobD1mdW5jdGlvbihlLHQsbil7aWYoZSl7dmFyIHI9dD8ibmV4dFNpYmxpbmciOiJwcmV2aW91c1NpYmxpbmciO2ZvcihlPW4/ZTplW3JdO2U7ZT1lW3JdKWlmKDE9PT1lLm5vZGVUeXBlfHwhYmwoZSkpcmV0dXJuIGV9fSx2bD1mdW5jdGlvbihlLHQpe3JldHVybiBwbCh0KSYmKHQ9dC5ub2RlTmFtZSksISFlLnNjaGVtYS5nZXRUZXh0QmxvY2tFbGVtZW50cygpW3QudG9Mb3dlckNhc2UoKV19LHlsPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZS5zY2hlbWEuaXNWYWxpZENoaWxkKHQsbil9LGJsPWZ1bmN0aW9uKGUpe3JldHVybiBlJiZadChlKSYmL14oW1x0IFxyXG5dK3wpJC8udGVzdChlLm5vZGVWYWx1ZSl9LENsPWZ1bmN0aW9uKGUsbil7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBlP2U9ZShuKTpuJiYoZT1lLnJlcGxhY2UoLyUoXHcrKS9nLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5bdF18fGV9KSksZX0sd2w9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT0iIisoKGU9ZXx8IiIpLm5vZGVOYW1lfHxlKSx0PSIiKygodD10fHwiIikubm9kZU5hbWV8fHQpLGUudG9Mb3dlckNhc2UoKT09PXQudG9Mb3dlckNhc2UoKX0seGw9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiJjb2xvciIhPT1uJiYiYmFja2dyb3VuZENvbG9yIiE9PW58fCh0PWUudG9IZXgodCkpLCJmb250V2VpZ2h0Ij09PW4mJjcwMD09PXQmJih0PSJib2xkIiksImZvbnRGYW1pbHkiPT09biYmKHQ9dC5yZXBsYWNlKC9bXCdcIl0vZywiIikucmVwbGFjZSgvLFxzKy9nLCIsIikpLCIiK3R9LFNsPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4geGwoZSxlLmdldFN0eWxlKHQsbiksbil9LE5sPWZ1bmN0aW9uKHQsZSl7dmFyIG47cmV0dXJuIHQuZ2V0UGFyZW50KGUsZnVuY3Rpb24oZSl7cmV0dXJuKG49dC5nZXRTdHlsZShlLCJ0ZXh0LWRlY29yYXRpb24iKSkmJiJub25lIiE9PW59KSxufSxFbD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGUuZ2V0UGFyZW50cyh0LG4sZS5nZXRSb290KCkpfSxrbD1mdW5jdGlvbih0LGUsbil7dmFyIHI9WyJpbmxpbmUiLCJibG9jayIsInNlbGVjdG9yIiwiYXR0cmlidXRlcyIsInN0eWxlcyIsImNsYXNzZXMiXSxhPWZ1bmN0aW9uKGUpe3JldHVybiBsZShlLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIEYocixmdW5jdGlvbihlKXtyZXR1cm4gZT09PXR9KX0pfTtyZXR1cm4gRih0LmZvcm1hdHRlci5nZXQoZSksZnVuY3Rpb24oZSl7dmFyIGk9YShlKTtyZXR1cm4gRih0LmZvcm1hdHRlci5nZXQobiksZnVuY3Rpb24oZSl7dmFyIHQsbixyLG89YShlKTtyZXR1cm4gdD1pLG49byx2b2lkIDA9PT1yJiYocj1sKSx1KHIpLmVxKHQsbil9KX0pfSxfbD1sbCxSbD1FbCxUbD1ibCxBbD12bCxEbD1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj10O247KXtpZigkdChuKSYmZS5nZXRDb250ZW50RWRpdGFibGUobikpcmV0dXJuImZhbHNlIj09PWUuZ2V0Q29udGVudEVkaXRhYmxlKG4pP246dDtuPW4ucGFyZW50Tm9kZX1yZXR1cm4gdH0sT2w9ZnVuY3Rpb24oZSx0LG4scil7Zm9yKHZhciBvPXQuZGF0YSxpPW47ZT8wPD1pOmk8by5sZW5ndGg7ZT9pLS06aSsrKWlmKHIoby5jaGFyQXQoaSkpKXJldHVybiBlP2krMTppO3JldHVybi0xfSxCbD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIE9sKGUsdCxuLGZ1bmN0aW9uKGUpe3JldHVybiBmbChlKXx8ZGwoZSl9KX0sUGw9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBPbChlLHQsbixtbCl9LExsPWZ1bmN0aW9uKGksZSx0LG4sYSxyKXt2YXIgdSxzPWkuZ2V0UGFyZW50KHQsaS5pc0Jsb2NrKXx8ZSxvPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj11dShpKSxvPWE/ci5iYWNrd2FyZHM6ci5mb3J3YXJkcztyZXR1cm4gUi5mcm9tKG8oZSx0LGZ1bmN0aW9uKGUsdCl7cmV0dXJuIF9sKGUucGFyZW50Tm9kZSk/LTE6bihhLHU9ZSx0KX0scykpfTtyZXR1cm4gbyh0LG4sQmwpLmJpbmQoZnVuY3Rpb24oZSl7cmV0dXJuIHI/byhlLmNvbnRhaW5lcixlLm9mZnNldCsoYT8tMTowKSxQbCk6Ui5zb21lKGUpfSkub3JUaHVuayhmdW5jdGlvbigpe3JldHVybiB1P1Iuc29tZSh7Y29udGFpbmVyOnUsb2Zmc2V0OmE/MDp1Lmxlbmd0aH0pOlIubm9uZSgpfSl9LElsPWZ1bmN0aW9uKGUsdCxuLHIsbyl7WnQocikmJjA9PT1yLm5vZGVWYWx1ZS5sZW5ndGgmJnJbb10mJihyPXJbb10pO2Zvcih2YXIgaT1SbChlLHIpLGE9MDthPGkubGVuZ3RoO2ErKylmb3IodmFyIHU9MDt1PHQubGVuZ3RoO3UrKyl7dmFyIHM9dFt1XTtpZighKCJjb2xsYXBzZWQiaW4gcyYmcy5jb2xsYXBzZWQhPT1uLmNvbGxhcHNlZCkmJmUuaXMoaVthXSxzLnNlbGVjdG9yKSlyZXR1cm4gaVthXX1yZXR1cm4gcn0sTWw9ZnVuY3Rpb24odCxlLG4scil7dmFyIG8saT10LmRvbSxhPWkuZ2V0Um9vdCgpO2lmKGVbMF0ud3JhcHBlcnx8KG89aS5nZXRQYXJlbnQobixlWzBdLmJsb2NrLGEpKSwhbyl7dmFyIHU9aS5nZXRQYXJlbnQobiwiTEksVEQsVEgiKTtvPWkuZ2V0UGFyZW50KFp0KG4pP24ucGFyZW50Tm9kZTpuLGZ1bmN0aW9uKGUpe3JldHVybiBlIT09YSYmQWwodCxlKX0sdSl9aWYobyYmZVswXS53cmFwcGVyJiYobz1SbChpLG8sInVsLG9sIikucmV2ZXJzZSgpWzBdfHxvKSwhbylmb3Iobz1uO29bcl0mJiFpLmlzQmxvY2sob1tyXSkmJihvPW9bcl0sIXdsKG8sImJyIikpOyk7cmV0dXJuIG98fG59LEZsPWZ1bmN0aW9uKGUsdCxuLHIsbyxpLGEpe3ZhciB1LHMsYyxsLGYsZDtpZih1PXM9YT9uOm8sbD1hPyJwcmV2aW91c1NpYmxpbmciOiJuZXh0U2libGluZyIsZj1lLmdldFJvb3QoKSxadCh1KSYmIVRsKHUpJiYoYT8wPHI6aTx1Lm5vZGVWYWx1ZS5sZW5ndGgpKXJldHVybiB1O2Zvcig7Oyl7aWYoIXRbMF0uYmxvY2tfZXhwYW5kJiZlLmlzQmxvY2socykpcmV0dXJuIHM7Zm9yKGM9c1tsXTtjO2M9Y1tsXSlpZighX2woYykmJiFUbChjKSYmKCJCUiIhPT0oZD1jKS5ub2RlTmFtZXx8IWQuZ2V0QXR0cmlidXRlKCJkYXRhLW1jZS1ib2d1cyIpfHxkLm5leHRTaWJsaW5nKSlyZXR1cm4gcztpZihzPT09Znx8cy5wYXJlbnROb2RlPT09Zil7dT1zO2JyZWFrfXM9cy5wYXJlbnROb2RlfXJldHVybiB1fSxVbD1mdW5jdGlvbihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj0hMSk7dmFyIG89dC5zdGFydENvbnRhaW5lcixpPXQuc3RhcnRPZmZzZXQsYT10LmVuZENvbnRhaW5lcix1PXQuZW5kT2Zmc2V0LHM9ZS5kb207JHQobykmJm8uaGFzQ2hpbGROb2RlcygpJiYobz1IdShvLGkpLFp0KG8pJiYoaT0wKSksJHQoYSkmJmEuaGFzQ2hpbGROb2RlcygpJiYoYT1IdShhLHQuY29sbGFwc2VkP3U6dS0xKSxadChhKSYmKHU9YS5ub2RlVmFsdWUubGVuZ3RoKSksbz1EbChzLG8pLGE9RGwocyxhKSwoX2woby5wYXJlbnROb2RlKXx8X2wobykpJiYobz1fbChvKT9vOm8ucGFyZW50Tm9kZSxvPXQuY29sbGFwc2VkP28ucHJldmlvdXNTaWJsaW5nfHxvOm8ubmV4dFNpYmxpbmd8fG8sWnQobykmJihpPXQuY29sbGFwc2VkP28ubGVuZ3RoOjApKSwoX2woYS5wYXJlbnROb2RlKXx8X2woYSkpJiYoYT1fbChhKT9hOmEucGFyZW50Tm9kZSxhPXQuY29sbGFwc2VkP2EubmV4dFNpYmxpbmd8fGE6YS5wcmV2aW91c1NpYmxpbmd8fGEsWnQoYSkmJih1PXQuY29sbGFwc2VkPzA6YS5sZW5ndGgpKSx0LmNvbGxhcHNlZCYmKExsKHMsZS5nZXRCb2R5KCksbyxpLCEwLHIpLmVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb250YWluZXIsbj1lLm9mZnNldDtvPXQsaT1ufSksTGwocyxlLmdldEJvZHkoKSxhLHUsITEscikuZWFjaChmdW5jdGlvbihlKXt2YXIgdD1lLmNvbnRhaW5lcixuPWUub2Zmc2V0O2E9dCx1PW59KSk7cmV0dXJuKG5bMF0uaW5saW5lfHxuWzBdLmJsb2NrX2V4cGFuZCkmJihuWzBdLmlubGluZSYmWnQobykmJjAhPT1pfHwobz1GbChzLG4sbyxpLGEsdSwhMCkpLG5bMF0uaW5saW5lJiZadChhKSYmdSE9PWEubm9kZVZhbHVlLmxlbmd0aHx8KGE9RmwocyxuLG8saSxhLHUsITEpKSksblswXS5zZWxlY3RvciYmITEhPT1uWzBdLmV4cGFuZCYmIW5bMF0uaW5saW5lJiYobz1JbChzLG4sdCxvLCJwcmV2aW91c1NpYmxpbmciKSxhPUlsKHMsbix0LGEsIm5leHRTaWJsaW5nIikpLChuWzBdLmJsb2NrfHxuWzBdLnNlbGVjdG9yKSYmKG89TWwoZSxuLG8sInByZXZpb3VzU2libGluZyIpLGE9TWwoZSxuLGEsIm5leHRTaWJsaW5nIiksblswXS5ibG9jayYmKHMuaXNCbG9jayhvKXx8KG89RmwocyxuLG8saSxhLHUsITApKSxzLmlzQmxvY2soYSl8fChhPUZsKHMsbixvLGksYSx1LCExKSkpKSwkdChvKSYmKGk9cy5ub2RlSW5kZXgobyksbz1vLnBhcmVudE5vZGUpLCR0KGEpJiYodT1zLm5vZGVJbmRleChhKSsxLGE9YS5wYXJlbnROb2RlKSx7c3RhcnRDb250YWluZXI6byxzdGFydE9mZnNldDppLGVuZENvbnRhaW5lcjphLGVuZE9mZnNldDp1fX0semw9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmNoaWxkTm9kZXM7cmV0dXJuIHQ+PW4ubGVuZ3RoP3Q9bi5sZW5ndGgtMTp0PDAmJih0PTApLG5bdF18fGV9LGpsPWZ1bmN0aW9uKGUsdCx1KXt2YXIgbj10LnN0YXJ0Q29udGFpbmVyLHI9dC5zdGFydE9mZnNldCxvPXQuZW5kQ29udGFpbmVyLGk9dC5lbmRPZmZzZXQscz1mdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gMz09PSh0PWVbMF0pLm5vZGVUeXBlJiZ0PT09biYmcj49dC5ub2RlVmFsdWUubGVuZ3RoJiZlLnNwbGljZSgwLDEpLHQ9ZVtlLmxlbmd0aC0xXSwwPT09aSYmMDxlLmxlbmd0aCYmdD09PW8mJjM9PT10Lm5vZGVUeXBlJiZlLnNwbGljZShlLmxlbmd0aC0xLDEpLGV9LGM9ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj1bXTtlJiZlIT09bjtlPWVbdF0pci5wdXNoKGUpO3JldHVybiByfSxhPWZ1bmN0aW9uKGUsdCl7ZG97aWYoZS5wYXJlbnROb2RlPT09dClyZXR1cm4gZTtlPWUucGFyZW50Tm9kZX13aGlsZShlKX0sbD1mdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPW4/Im5leHRTaWJsaW5nIjoicHJldmlvdXNTaWJsaW5nIixvPWUsaT1vLnBhcmVudE5vZGU7byYmbyE9PXQ7bz1pKXtpPW8ucGFyZW50Tm9kZTt2YXIgYT1jKG89PT1lP286b1tyXSxyKTthLmxlbmd0aCYmKG58fGEucmV2ZXJzZSgpLHUocyhhKSkpfX07aWYoMT09PW4ubm9kZVR5cGUmJm4uaGFzQ2hpbGROb2RlcygpJiYobj16bChuLHIpKSwxPT09by5ub2RlVHlwZSYmby5oYXNDaGlsZE5vZGVzKCkmJihvPXpsKG8saS0xKSksbj09PW8pcmV0dXJuIHUocyhbbl0pKTtmb3IodmFyIGY9ZS5maW5kQ29tbW9uQW5jZXN0b3IobixvKSxkPW47ZDtkPWQucGFyZW50Tm9kZSl7aWYoZD09PW8pcmV0dXJuIGwobixmLCEwKTtpZihkPT09ZilicmVha31mb3IoZD1vO2Q7ZD1kLnBhcmVudE5vZGUpe2lmKGQ9PT1uKXJldHVybiBsKG8sZik7aWYoZD09PWYpYnJlYWt9dmFyIG09YShuLGYpfHxuLHA9YShvLGYpfHxvO2wobixtLCEwKTt2YXIgZz1jKG09PT1uP206bS5uZXh0U2libGluZywibmV4dFNpYmxpbmciLHA9PT1vP3AubmV4dFNpYmxpbmc6cCk7Zy5sZW5ndGgmJnUocyhnKSksbChvLHApfSxIbD1mdW5jdGlvbihlKXt2YXIgdD1bXTtpZihlKWZvcih2YXIgbj0wO248ZS5yYW5nZUNvdW50O24rKyl0LnB1c2goZS5nZXRSYW5nZUF0KG4pKTtyZXR1cm4gdH0sVmw9ZnVuY3Rpb24oZSl7cmV0dXJuIEgoWShlLGZ1bmN0aW9uKGUpe3ZhciB0PWp1KGUpO3JldHVybiB0P1tOZS5mcm9tRG9tKHQpXTpbXX0pLERyKX0scWw9ZnVuY3Rpb24oZSx0KXt2YXIgbj1VYSh0LCJ0ZFtkYXRhLW1jZS1zZWxlY3RlZF0sdGhbZGF0YS1tY2Utc2VsZWN0ZWRdIik7cmV0dXJuIDA8bi5sZW5ndGg/bjpWbChlKX0sJGw9ZnVuY3Rpb24oZSl7cmV0dXJuIHFsKEhsKGUuc2VsZWN0aW9uLmdldFNlbCgpKSxOZS5mcm9tRG9tKGUuZ2V0Qm9keSgpKSl9LFdsPWZ1bmN0aW9uKHQpe3JldHVybiB5dCh0KS5mb2xkKHgoW3RdKSxmdW5jdGlvbihlKXtyZXR1cm5bdF0uY29uY2F0KFdsKGUpKX0pfSxLbD1mdW5jdGlvbih0KXtyZXR1cm4gYnQodCkuZm9sZCh4KFt0XSksZnVuY3Rpb24oZSl7cmV0dXJuImJyIj09PVJ0KGUpP2R0KGUpLm1hcChmdW5jdGlvbihlKXtyZXR1cm5bdF0uY29uY2F0KEtsKGUpKX0pLmdldE9yKFtdKTpbdF0uY29uY2F0KEtsKGUpKX0pfSxYbD1mdW5jdGlvbihvLGUpe3JldHVybiAkdSgoYT0oaT1lKS5zdGFydENvbnRhaW5lcix1PWkuc3RhcnRPZmZzZXQsWnQoYSk/MD09PXU/Ui5zb21lKE5lLmZyb21Eb20oYSkpOlIubm9uZSgpOlIuZnJvbShhLmNoaWxkTm9kZXNbdV0pLm1hcChOZS5mcm9tRG9tKSksKG49KHQ9ZSkuZW5kQ29udGFpbmVyLHI9dC5lbmRPZmZzZXQsWnQobik/cj09PW4uZGF0YS5sZW5ndGg/Ui5zb21lKE5lLmZyb21Eb20obikpOlIubm9uZSgpOlIuZnJvbShuLmNoaWxkTm9kZXNbci0xXSkubWFwKE5lLmZyb21Eb20pKSxmdW5jdGlvbihlLHQpe3ZhciBuPUsoV2wobyksTihhdCxlKSkscj1LKEtsKG8pLE4oYXQsdCkpO3JldHVybiBuLmlzU29tZSgpJiZyLmlzU29tZSgpfSkuZ2V0T3IoITEpO3ZhciB0LG4scixpLGEsdX0sWWw9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89bixpPW5ldyByYShuLG8pLGE9ZS5zY2hlbWEuZ2V0Tm9uRW1wdHlFbGVtZW50cygpO2Rve2lmKDM9PT1uLm5vZGVUeXBlJiYwIT09aHIudHJpbShuLm5vZGVWYWx1ZSkubGVuZ3RoKXJldHVybiB2b2lkKHI/dC5zZXRTdGFydChuLDApOnQuc2V0RW5kKG4sbi5ub2RlVmFsdWUubGVuZ3RoKSk7aWYoYVtuLm5vZGVOYW1lXSYmIS9eKFREfFRIKSQvLnRlc3Qobi5ub2RlTmFtZSkpcmV0dXJuIHZvaWQocj90LnNldFN0YXJ0QmVmb3JlKG4pOiJCUiI9PT1uLm5vZGVOYW1lP3Quc2V0RW5kQmVmb3JlKG4pOnQuc2V0RW5kQWZ0ZXIobikpfXdoaWxlKG49cj9pLm5leHQoKTppLnByZXYoKSk7IkJPRFkiPT09by5ub2RlTmFtZSYmKHI/dC5zZXRTdGFydChvLDApOnQuc2V0RW5kKG8sby5jaGlsZE5vZGVzLmxlbmd0aCkpfSxHbD1mdW5jdGlvbihlKXt2YXIgdD1lLnNlbGVjdGlvbi5nZXRTZWwoKTtyZXR1cm4gdCYmMDx0LnJhbmdlQ291bnR9LEpsPWZ1bmN0aW9uKHIsbyl7dmFyIGU9JGwocik7MDxlLmxlbmd0aD96KGUsZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kb20oKSxuPXIuZG9tLmNyZWF0ZVJuZygpO24uc2V0U3RhcnRCZWZvcmUodCksbi5zZXRFbmRBZnRlcih0KSxvKG4sITApfSk6byhyLnNlbGVjdGlvbi5nZXRSbmcoKSwhMSl9LFFsPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1CcyhlLHQpO24ociksZS5tb3ZlVG9Cb29rbWFyayhyKX07dmFyIFpsPWZ1bmN0aW9uIGdFKG4scil7dmFyIHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIG4oZSk/Ui5mcm9tKGUuZG9tKCkubm9kZVZhbHVlKTpSLm5vbmUoKX07cmV0dXJue2dldDpmdW5jdGlvbihlKXtpZighbihlKSl0aHJvdyBuZXcgRXJyb3IoIkNhbiBvbmx5IGdldCAiK3IrIiB2YWx1ZSBvZiBhICIrcisiIG5vZGUiKTtyZXR1cm4gdChlKS5nZXRPcigiIil9LGdldE9wdGlvbjp0LHNldDpmdW5jdGlvbihlLHQpe2lmKCFuKGUpKXRocm93IG5ldyBFcnJvcigiQ2FuIG9ubHkgc2V0IHJhdyAiK3IrIiB2YWx1ZSBvZiBhICIrcisiIG5vZGUiKTtlLmRvbSgpLm5vZGVWYWx1ZT10fX19KE90LCJ0ZXh0IiksZWY9ZnVuY3Rpb24oZSl7cmV0dXJuIFpsLmdldChlKX0sdGY9ZnVuY3Rpb24ocixvLGksYSl7cmV0dXJuIGZ0KG8pLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm4ic2tpcHBpbmcifSxmdW5jdGlvbihlKXtyZXR1cm4iYnIiPT09YXx8T3Qobj1vKSYmZWYobik9PT1ybz8idmFsaWQiOkR0KHQ9bykmJk1hKHQsS2EoKSk/ImV4aXN0aW5nIjpNcyhvKT8iY2FyZXQiOnlsKHIsaSxhKSYmeWwocixSdChlKSxpKT8idmFsaWQiOiJpbnZhbGlkLWNoaWxkIjt2YXIgdCxufSl9LG5mPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPXQudWlkLGk9dm9pZCAwPT09bz90dSgibWNlLWFubm90YXRpb24iKTpvLGE9ZnVuY3Rpb24gcChlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiZ0LmluZGV4T2Yocik8MCYmKG5bcl09ZVtyXSk7aWYobnVsbCE9ZSYmImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtvPHIubGVuZ3RoO28rKyl0LmluZGV4T2YocltvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscltvXSkmJihuW3Jbb11dPWVbcltvXV0pfXJldHVybiBufSh0LFsidWlkIl0pLHU9TmUuZnJvbVRhZygic3BhbiIsZSk7TGEodSxLYSgpKSxjbih1LCIiK1lhKCksaSksY24odSwiIitYYSgpLG4pO3ZhciBzLGM9cihpLGEpLGw9Yy5hdHRyaWJ1dGVzLGY9dm9pZCAwPT09bD97fTpsLGQ9Yy5jbGFzc2VzLG09dm9pZCAwPT09ZD9bXTpkO3JldHVybiBsbih1LGYpLHM9dSx6KG0sZnVuY3Rpb24oZSl7TGEocyxlKX0pLHV9LHJmPWZ1bmN0aW9uKGksZSx0LG4scil7dmFyIGE9W10sdT1uZihpLmdldERvYygpLHIsdCxuKSxzPXhhKFIubm9uZSgpKSxjPWZ1bmN0aW9uKCl7cy5zZXQoUi5ub25lKCkpfSxsPWZ1bmN0aW9uKGUpe3ooZSxvKX0sbz1mdW5jdGlvbihlKXt2YXIgdCxuO3N3aXRjaCh0ZihpLGUsInNwYW4iLFJ0KGUpKSl7Y2FzZSJpbnZhbGlkLWNoaWxkIjpjKCk7dmFyIHI9aHQoZSk7bChyKSxjKCk7YnJlYWs7Y2FzZSJ2YWxpZCI6dmFyIG89cy5nZXQoKS5nZXRPclRodW5rKGZ1bmN0aW9uKCl7dmFyIGU9b3UodSk7cmV0dXJuIGEucHVzaChlKSxzLnNldChSLnNvbWUoZSkpLGV9KTtDdCh0PWUsbj1vKSxTdChuLHQpfX07cmV0dXJuIGpsKGkuZG9tLGUsZnVuY3Rpb24oZSl7dmFyIHQ7YygpLHQ9VShlLE5lLmZyb21Eb20pLGwodCl9KSxhfSxvZj1mdW5jdGlvbih1LHMsYyxsKXt1LnVuZG9NYW5hZ2VyLnRyYW5zYWN0KGZ1bmN0aW9uKCl7dmFyIGUsdCxuLHI9dS5zZWxlY3Rpb24sbz1yLmdldFJuZygpLGk9MDwkbCh1KS5sZW5ndGg7aWYoby5jb2xsYXBzZWQmJiFpJiYobj1VbChlPXUsdD1vLFt7aW5saW5lOiEwfV0pLHQuc2V0U3RhcnQobi5zdGFydENvbnRhaW5lcixuLnN0YXJ0T2Zmc2V0KSx0LnNldEVuZChuLmVuZENvbnRhaW5lcixuLmVuZE9mZnNldCksZS5zZWxlY3Rpb24uc2V0Um5nKHQpKSxyLmdldFJuZygpLmNvbGxhcHNlZCYmIWkpe3ZhciBhPW5mKHUuZ2V0RG9jKCksbCxzLGMuZGVjb3JhdGUpO251KGEsb28pLHIuZ2V0Um5nKCkuaW5zZXJ0Tm9kZShhLmRvbSgpKSxyLnNlbGVjdChhLmRvbSgpKX1lbHNlIFFsKHIsITEsZnVuY3Rpb24oKXtKbCh1LGZ1bmN0aW9uKGUpe3JmKHUsZSxzLGMuZGVjb3JhdGUsbCl9KX0pfSl9LGFmPWZ1bmN0aW9uKHUpe3ZhciBuLHI9KG49e30se3JlZ2lzdGVyOmZ1bmN0aW9uKGUsdCl7bltlXT17bmFtZTplLHNldHRpbmdzOnR9fSxsb29rdXA6ZnVuY3Rpb24oZSl7cmV0dXJuIG4uaGFzT3duUHJvcGVydHkoZSk/Ui5mcm9tKG5bZV0pLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5zZXR0aW5nc30pOlIubm9uZSgpfX0pO1phKHUscik7dmFyIG89UWEodSk7cmV0dXJue3JlZ2lzdGVyOmZ1bmN0aW9uKGUsdCl7ci5yZWdpc3RlcihlLHQpfSxhbm5vdGF0ZTpmdW5jdGlvbih0LG4pe3IubG9va3VwKHQpLmVhY2goZnVuY3Rpb24oZSl7b2YodSx0LGUsbil9KX0sYW5ub3RhdGlvbkNoYW5nZWQ6ZnVuY3Rpb24oZSx0KXtvLmFkZExpc3RlbmVyKGUsdCl9LHJlbW92ZTpmdW5jdGlvbihlKXtHYSh1LFIuc29tZShlKSkuZWFjaChmdW5jdGlvbihlKXt2YXIgdD1lLmVsZW1lbnRzO3oodCxfdCl9KX0sZ2V0QWxsOmZ1bmN0aW9uKGUpe3ZhciB0LG4scixvLGksYT0odD11LG49ZSxyPU5lLmZyb21Eb20odC5nZXRCb2R5KCkpLG89VWEociwiWyIrWGEoKSsnPSInK24rJyJdJyksaT17fSx6KG8sZnVuY3Rpb24oZSl7dmFyIHQ9Zm4oZSxZYSgpKSxuPWkuaGFzT3duUHJvcGVydHkodCk/aVt0XTpbXTtpW3RdPW4uY29uY2F0KFtlXSl9KSxpKTtyZXR1cm4gaWUoYSxmdW5jdGlvbihlKXtyZXR1cm4gVShlLGZ1bmN0aW9uKGUpe3JldHVybiBlLmRvbSgpfSl9KX19fSx1Zj0vXlsgXHRcclxuXSokLyxzZj17IiN0ZXh0IjozLCIjY29tbWVudCI6OCwiI2NkYXRhIjo0LCIjcGkiOjcsIiNkb2N0eXBlIjoxMCwiI2RvY3VtZW50LWZyYWdtZW50IjoxMX0sY2Y9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4/Imxhc3RDaGlsZCI6ImZpcnN0Q2hpbGQiLG89bj8icHJldiI6Im5leHQiO2lmKGVbcl0pcmV0dXJuIGVbcl07aWYoZSE9PXQpe3ZhciBpPWVbb107aWYoaSlyZXR1cm4gaTtmb3IodmFyIGE9ZS5wYXJlbnQ7YSYmYSE9PXQ7YT1hLnBhcmVudClpZihpPWFbb10pcmV0dXJuIGl9fSxsZj1mdW5jdGlvbihlKXtpZighdWYudGVzdChlLnZhbHVlKSlyZXR1cm4hMTt2YXIgdD1lLnBhcmVudDtyZXR1cm4hdHx8InNwYW4iPT09dC5uYW1lJiYhdC5hdHRyKCJzdHlsZSIpfHwhL15bIF0rJC8udGVzdChlLnZhbHVlKX0sZmY9ZnVuY3Rpb24oZSl7dmFyIHQ9ImEiPT09ZS5uYW1lJiYhZS5hdHRyKCJocmVmIikmJmUuYXR0cigiaWQiKTtyZXR1cm4gZS5hdHRyKCJuYW1lIil8fGUuYXR0cigiaWQiKSYmIWUuZmlyc3RDaGlsZHx8ZS5hdHRyKCJkYXRhLW1jZS1ib29rbWFyayIpfHx0fSxkZj0obWYuY3JlYXRlPWZ1bmN0aW9uKGUsdCl7dmFyIG49bmV3IG1mKGUsc2ZbZV18fDEpO3JldHVybiB0JiZvZSh0LGZ1bmN0aW9uKGUsdCl7bi5hdHRyKHQsZSl9KSxufSxtZi5wcm90b3R5cGUucmVwbGFjZT1mdW5jdGlvbihlKXtyZXR1cm4gZS5wYXJlbnQmJmUucmVtb3ZlKCksdGhpcy5pbnNlcnQoZSx0aGlzKSx0aGlzLnJlbW92ZSgpLHRoaXN9LG1mLnByb3RvdHlwZS5hdHRyPWZ1bmN0aW9uKGUsdCl7dmFyIG4scj10aGlzO2lmKCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm4gZSE9PXVuZGVmaW5lZCYmbnVsbCE9PWUmJm9lKGUsZnVuY3Rpb24oZSx0KXtyLmF0dHIodCxlKX0pLHI7aWYobj1yLmF0dHJpYnV0ZXMpe2lmKHQ9PT11bmRlZmluZWQpcmV0dXJuIG4ubWFwW2VdO2lmKG51bGw9PT10KXtpZihlIGluIG4ubWFwKXtkZWxldGUgbi5tYXBbZV07Zm9yKHZhciBvPW4ubGVuZ3RoO28tLTspaWYobltvXS5uYW1lPT09ZSlyZXR1cm4gbi5zcGxpY2UobywxKSxyfXJldHVybiByfWlmKGUgaW4gbi5tYXApe2ZvcihvPW4ubGVuZ3RoO28tLTspaWYobltvXS5uYW1lPT09ZSl7bltvXS52YWx1ZT10O2JyZWFrfX1lbHNlIG4ucHVzaCh7bmFtZTplLHZhbHVlOnR9KTtyZXR1cm4gbi5tYXBbZV09dCxyfX0sbWYucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7dmFyIGUsdD1uZXcgbWYodGhpcy5uYW1lLHRoaXMudHlwZSk7aWYoZT10aGlzLmF0dHJpYnV0ZXMpe3ZhciBuPVtdO24ubWFwPXt9O2Zvcih2YXIgcj0wLG89ZS5sZW5ndGg7cjxvO3IrKyl7dmFyIGk9ZVtyXTsiaWQiIT09aS5uYW1lJiYobltuLmxlbmd0aF09e25hbWU6aS5uYW1lLHZhbHVlOmkudmFsdWV9LG4ubWFwW2kubmFtZV09aS52YWx1ZSl9dC5hdHRyaWJ1dGVzPW59cmV0dXJuIHQudmFsdWU9dGhpcy52YWx1ZSx0LnNob3J0RW5kZWQ9dGhpcy5zaG9ydEVuZGVkLHR9LG1mLnByb3RvdHlwZS53cmFwPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnBhcmVudC5pbnNlcnQoZSx0aGlzKSxlLmFwcGVuZCh0aGlzKSx0aGlzfSxtZi5wcm90b3R5cGUudW53cmFwPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMuZmlyc3RDaGlsZDtlOyl7dmFyIHQ9ZS5uZXh0O3RoaXMuaW5zZXJ0KGUsdGhpcywhMCksZT10fXRoaXMucmVtb3ZlKCl9LG1mLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnBhcmVudCx0PXRoaXMubmV4dCxuPXRoaXMucHJldjtyZXR1cm4gZSYmKGUuZmlyc3RDaGlsZD09PXRoaXM/KGUuZmlyc3RDaGlsZD10KSYmKHQucHJldj1udWxsKTpuLm5leHQ9dCxlLmxhc3RDaGlsZD09PXRoaXM/KGUubGFzdENoaWxkPW4pJiYobi5uZXh0PW51bGwpOnQucHJldj1uLHRoaXMucGFyZW50PXRoaXMubmV4dD10aGlzLnByZXY9bnVsbCksdGhpc30sbWYucHJvdG90eXBlLmFwcGVuZD1mdW5jdGlvbihlKXtlLnBhcmVudCYmZS5yZW1vdmUoKTt2YXIgdD10aGlzLmxhc3RDaGlsZDtyZXR1cm4gdD8oKHQubmV4dD1lKS5wcmV2PXQsdGhpcy5sYXN0Q2hpbGQ9ZSk6dGhpcy5sYXN0Q2hpbGQ9dGhpcy5maXJzdENoaWxkPWUsZS5wYXJlbnQ9dGhpcyxlfSxtZi5wcm90b3R5cGUuaW5zZXJ0PWZ1bmN0aW9uKGUsdCxuKXtlLnBhcmVudCYmZS5yZW1vdmUoKTt2YXIgcj10LnBhcmVudHx8dGhpcztyZXR1cm4gbj8odD09PXIuZmlyc3RDaGlsZD9yLmZpcnN0Q2hpbGQ9ZTp0LnByZXYubmV4dD1lLGUucHJldj10LnByZXYsKGUubmV4dD10KS5wcmV2PWUpOih0PT09ci5sYXN0Q2hpbGQ/ci5sYXN0Q2hpbGQ9ZTp0Lm5leHQucHJldj1lLGUubmV4dD10Lm5leHQsKGUucHJldj10KS5uZXh0PWUpLGUucGFyZW50PXIsZX0sbWYucHJvdG90eXBlLmdldEFsbD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sbj10aGlzLmZpcnN0Q2hpbGQ7bjtuPWNmKG4sdGhpcykpbi5uYW1lPT09ZSYmdC5wdXNoKG4pO3JldHVybiB0fSxtZi5wcm90b3R5cGUuZW1wdHk9ZnVuY3Rpb24oKXtpZih0aGlzLmZpcnN0Q2hpbGQpe2Zvcih2YXIgZT1bXSx0PXRoaXMuZmlyc3RDaGlsZDt0O3Q9Y2YodCx0aGlzKSllLnB1c2godCk7Zm9yKHZhciBuPWUubGVuZ3RoO24tLTspKHQ9ZVtuXSkucGFyZW50PXQuZmlyc3RDaGlsZD10Lmxhc3RDaGlsZD10Lm5leHQ9dC5wcmV2PW51bGx9cmV0dXJuIHRoaXMuZmlyc3RDaGlsZD10aGlzLmxhc3RDaGlsZD1udWxsLHRoaXN9LG1mLnByb3RvdHlwZS5pc0VtcHR5PWZ1bmN0aW9uKGUsdCxuKXt2b2lkIDA9PT10JiYodD17fSk7dmFyIHI9dGhpcy5maXJzdENoaWxkO2lmKGZmKHRoaXMpKXJldHVybiExO2lmKHIpZG97aWYoMT09PXIudHlwZSl7aWYoci5hdHRyKCJkYXRhLW1jZS1ib2d1cyIpKWNvbnRpbnVlO2lmKGVbci5uYW1lXSlyZXR1cm4hMTtpZihmZihyKSlyZXR1cm4hMX1pZig4PT09ci50eXBlKXJldHVybiExO2lmKDM9PT1yLnR5cGUmJiFsZihyKSlyZXR1cm4hMTtpZigzPT09ci50eXBlJiZyLnBhcmVudCYmdFtyLnBhcmVudC5uYW1lXSYmdWYudGVzdChyLnZhbHVlKSlyZXR1cm4hMTtpZihuJiZuKHIpKXJldHVybiExfXdoaWxlKHI9Y2Yocix0aGlzKSk7cmV0dXJuITB9LG1mLnByb3RvdHlwZS53YWxrPWZ1bmN0aW9uKGUpe3JldHVybiBjZih0aGlzLG51bGwsZSl9LG1mKTtmdW5jdGlvbiBtZihlLHQpe3RoaXMubmFtZT1lLDE9PT0odGhpcy50eXBlPXQpJiYodGhpcy5hdHRyaWJ1dGVzPVtdLHRoaXMuYXR0cmlidXRlcy5tYXA9e30pfXZhciBwZj1oci5tYWtlTWFwLGdmPWZ1bmN0aW9uKGUpe3ZhciB1LHMsYyxsLGYsZD1bXTtyZXR1cm4gdT0oZT1lfHx7fSkuaW5kZW50LHM9cGYoZS5pbmRlbnRfYmVmb3JlfHwiIiksYz1wZihlLmluZGVudF9hZnRlcnx8IiIpLGw9JHIuZ2V0RW5jb2RlRnVuYyhlLmVudGl0eV9lbmNvZGluZ3x8InJhdyIsZS5lbnRpdGllcyksZj0iaHRtbCI9PT1lLmVsZW1lbnRfZm9ybWF0LHtzdGFydDpmdW5jdGlvbihlLHQsbil7dmFyIHIsbyxpLGE7aWYodSYmc1tlXSYmMDxkLmxlbmd0aCYmMDwoYT1kW2QubGVuZ3RoLTFdKS5sZW5ndGgmJiJcbiIhPT1hJiZkLnB1c2goIlxuIiksZC5wdXNoKCI8IixlKSx0KWZvcihyPTAsbz10Lmxlbmd0aDtyPG87cisrKWk9dFtyXSxkLnB1c2goIiAiLGkubmFtZSwnPSInLGwoaS52YWx1ZSwhMCksJyInKTtkW2QubGVuZ3RoXT0hbnx8Zj8iPiI6IiAvPiIsbiYmdSYmY1tlXSYmMDxkLmxlbmd0aCYmMDwoYT1kW2QubGVuZ3RoLTFdKS5sZW5ndGgmJiJcbiIhPT1hJiZkLnB1c2goIlxuIil9LGVuZDpmdW5jdGlvbihlKXt2YXIgdDtkLnB1c2goIjwvIixlLCI+IiksdSYmY1tlXSYmMDxkLmxlbmd0aCYmMDwodD1kW2QubGVuZ3RoLTFdKS5sZW5ndGgmJiJcbiIhPT10JiZkLnB1c2goIlxuIil9LHRleHQ6ZnVuY3Rpb24oZSx0KXswPGUubGVuZ3RoJiYoZFtkLmxlbmd0aF09dD9lOmwoZSkpfSxjZGF0YTpmdW5jdGlvbihlKXtkLnB1c2goIjwhW0NEQVRBWyIsZSwiXV0+Iil9LGNvbW1lbnQ6ZnVuY3Rpb24oZSl7ZC5wdXNoKCJceDNjIS0tIixlLCItLVx4M2UiKX0scGk6ZnVuY3Rpb24oZSx0KXt0P2QucHVzaCgiPD8iLGUsIiAiLGwodCksIj8+Iik6ZC5wdXNoKCI8PyIsZSwiPz4iKSx1JiZkLnB1c2goIlxuIil9LGRvY3R5cGU6ZnVuY3Rpb24oZSl7ZC5wdXNoKCI8IURPQ1RZUEUiLGUsIj4iLHU/IlxuIjoiIil9LHJlc2V0OmZ1bmN0aW9uKCl7ZC5sZW5ndGg9MH0sZ2V0Q29udGVudDpmdW5jdGlvbigpe3JldHVybiBkLmpvaW4oIiIpLnJlcGxhY2UoL1xuJC8sIiIpfX19LGhmPWZ1bmN0aW9uKHQscCl7dm9pZCAwPT09cCYmKHA9bm8oKSk7dmFyIGc9Z2YodCk7KHQ9dHx8e30pLnZhbGlkYXRlPSEoInZhbGlkYXRlImluIHQpfHx0LnZhbGlkYXRlO3JldHVybntzZXJpYWxpemU6ZnVuY3Rpb24oZSl7dmFyIGYsZDtkPXQudmFsaWRhdGUsZj17MzpmdW5jdGlvbihlKXtnLnRleHQoZS52YWx1ZSxlLnJhdyl9LDg6ZnVuY3Rpb24oZSl7Zy5jb21tZW50KGUudmFsdWUpfSw3OmZ1bmN0aW9uKGUpe2cucGkoZS5uYW1lLGUudmFsdWUpfSwxMDpmdW5jdGlvbihlKXtnLmRvY3R5cGUoZS52YWx1ZSl9LDQ6ZnVuY3Rpb24oZSl7Zy5jZGF0YShlLnZhbHVlKX0sMTE6ZnVuY3Rpb24oZSl7aWYoZT1lLmZpcnN0Q2hpbGQpZm9yKDttKGUpLGU9ZS5uZXh0Oyk7fX0sZy5yZXNldCgpO3ZhciBtPWZ1bmN0aW9uKGUpe3ZhciB0LG4scixvLGksYSx1LHMsYyxsPWZbZS50eXBlXTtpZihsKWwoZSk7ZWxzZXtpZih0PWUubmFtZSxuPWUuc2hvcnRFbmRlZCxyPWUuYXR0cmlidXRlcyxkJiZyJiYxPHIubGVuZ3RoJiYoKGE9W10pLm1hcD17fSxjPXAuZ2V0RWxlbWVudFJ1bGUoZS5uYW1lKSkpe2Zvcih1PTAscz1jLmF0dHJpYnV0ZXNPcmRlci5sZW5ndGg7dTxzO3UrKykobz1jLmF0dHJpYnV0ZXNPcmRlclt1XSlpbiByLm1hcCYmKGk9ci5tYXBbb10sYS5tYXBbb109aSxhLnB1c2goe25hbWU6byx2YWx1ZTppfSkpO2Zvcih1PTAscz1yLmxlbmd0aDt1PHM7dSsrKShvPXJbdV0ubmFtZSlpbiBhLm1hcHx8KGk9ci5tYXBbb10sYS5tYXBbb109aSxhLnB1c2goe25hbWU6byx2YWx1ZTppfSkpO3I9YX1pZihnLnN0YXJ0KGUubmFtZSxyLG4pLCFuKXtpZihlPWUuZmlyc3RDaGlsZClmb3IoO20oZSksZT1lLm5leHQ7KTtnLmVuZCh0KX19fTtyZXR1cm4gMSE9PWUudHlwZXx8dC5pbm5lcj9mWzExXShlKTptKGUpLGcuZ2V0Q29udGVudCgpfX19LHZmPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUucmVwbGFjZShuZXcgUmVnRXhwKHQucHJlZml4KyJfWzAtOV0rIiwiZyIpLGZ1bmN0aW9uKGUpe3JldHVybiBkZSh0LnVyaXMsZSkuZ2V0T3IoZSl9KX0seWY9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLG8saSxhLHU9MTtmb3IoYT1lLmdldFNob3J0RW5kZWRFbGVtZW50cygpLChpPS88KFshP1wvXSk/KFtBLVphLXowLTlcLV9cOlwuXSspKCg/OlxzK1teIlwnPl0rKD86KD86IlteIl0qIil8KD86XCdbXlwnXSpcJyl8W14+XSopKSp8XC98XHMrKT4vZykubGFzdEluZGV4PXI9bjtvPWkuZXhlYyh0KTspe2lmKHI9aS5sYXN0SW5kZXgsIi8iPT09b1sxXSl1LS07ZWxzZSBpZighb1sxXSl7aWYob1syXWluIGEpY29udGludWU7dSsrfWlmKDA9PT11KWJyZWFrfXJldHVybiByfSxiZj1mdW5jdGlvbihlLHQpe3ZhciBuPWUuZXhlYyh0KTtpZihuKXt2YXIgcj1uWzFdLG89blsyXTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHImJiJkYXRhLW1jZS1ib2d1cyI9PT1yLnRvTG93ZXJDYXNlKCk/bzpudWxsfXJldHVybiBudWxsfTtmdW5jdGlvbiBDZihXLEspe3ZvaWQgMD09PUsmJihLPW5vKCkpO3ZhciBlPWZ1bmN0aW9uKCl7fTshMSE9PShXPVd8fHt9KS5maXhfc2VsZl9jbG9zaW5nJiYoVy5maXhfc2VsZl9jbG9zaW5nPSEwKTt2YXIgWD1XLmNvbW1lbnQ/Vy5jb21tZW50OmUsWT1XLmNkYXRhP1cuY2RhdGE6ZSxHPVcudGV4dD9XLnRleHQ6ZSxKPVcuc3RhcnQ/Vy5zdGFydDplLFE9Vy5lbmQ/Vy5lbmQ6ZSxaPVcucGk/Vy5waTplLGVlPVcuZG9jdHlwZT9XLmRvY3R5cGU6ZSxuPWZ1bmN0aW9uKG0sZSl7dm9pZCAwPT09ZSYmKGU9Imh0bWwiKTt2YXIgdCxuLHIscCxvLGksYSxnLHUscyxoLGMsdixsLGYsZCx5LGIsQyx3LHgsUyxOLEUsayxfLFIsVCxBLEQ9bS5odG1sLE89MCxCPVtdLFA9MCxMPSRyLmRlY29kZSxJPWhyLm1ha2VNYXAoInNyYyxocmVmLGRhdGEsYmFja2dyb3VuZCxmb3JtYWN0aW9uLHBvc3Rlcix4bGluazpocmVmIiksTT0vKChqYXZhfHZiKXNjcmlwdHxtaHRtbCk6L2ksRj0iaHRtbCI9PT1lPzA6MSxVPWZ1bmN0aW9uKGUpe3ZhciB0LG47Zm9yKHQ9Qi5sZW5ndGg7dC0tJiZCW3RdLm5hbWUhPT1lOyk7aWYoMDw9dCl7Zm9yKG49Qi5sZW5ndGgtMTt0PD1uO24tLSkoZT1CW25dKS52YWxpZCYmUShlLm5hbWUpO0IubGVuZ3RoPXR9fSx6PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIEcodmYoZSxtKSx0KX0saj1mdW5jdGlvbihlKXsiIiE9PWUmJigiPiI9PT1lLmNoYXJBdCgwKSYmKGU9IiAiK2UpLFcuYWxsb3dfY29uZGl0aW9uYWxfY29tbWVudHN8fCJbaWYiIT09ZS5zdWJzdHIoMCwzKS50b0xvd2VyQ2FzZSgpfHwoZT0iICIrZSksWCh2ZihlLG0pKSl9LEg9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lfHwiIixyPSFWZShuLCItLSIpLG89ZnVuY3Rpb24oZSx0LG4pe3ZvaWQgMD09PW4mJihuPTApO3ZhciByPWUudG9Mb3dlckNhc2UoKTtpZigtMSE9PXIuaW5kZXhPZigiW2lmICIsbikmJih1PW4sL15ccypcW2lmIFtcd1xXXStcXT4uKjwhXFtlbmRpZlxdKC0tIT8pPz4vLnRlc3Qoci5zdWJzdHIodSkpKSl7dmFyIG89ci5pbmRleE9mKCJbZW5kaWZdIixuKTtyZXR1cm4gci5pbmRleE9mKCI+IixvKX1pZih0KXt2YXIgaT1yLmluZGV4T2YoIj4iLG4pO3JldHVybi0xIT09aT9pOnIubGVuZ3RofXZhciBhPS8tLSE/Pi87YS5sYXN0SW5kZXg9bjt2YXIgdSxzPWEuZXhlYyhlKTtyZXR1cm4gcz9zLmluZGV4K3NbMF0ubGVuZ3RoOnIubGVuZ3RofShELHIsdCk7cmV0dXJuIGU9RC5zdWJzdHIodCxvLXQpLGoocj9uK2U6ZSksbysxfSxWPWZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFyIGksYSx1LHMsYyxsO2lmKHQ9dC50b0xvd2VyQ2FzZSgpLHU9dCBpbiBoP3Q6TChufHxyfHxvfHwiIiksbj1kZShtLnVyaXMsdSkuZ2V0T3IodSksdiYmIWcmJiExPT0oMD09PShzPXQpLmluZGV4T2YoImRhdGEtIil8fDA9PT1zLmluZGV4T2YoImFyaWEtIikpKXtpZighKGk9Ylt0XSkmJkMpe2ZvcihhPUMubGVuZ3RoO2EtLSYmIShpPUNbYV0pLnBhdHRlcm4udGVzdCh0KTspOy0xPT09YSYmKGk9bnVsbCl9aWYoIWkpcmV0dXJuO2lmKGkudmFsaWRWYWx1ZXMmJiEobiBpbiBpLnZhbGlkVmFsdWVzKSlyZXR1cm59aWYoSVt0XSYmIVcuYWxsb3dfc2NyaXB0X3VybHMpe3ZhciBmPW4ucmVwbGFjZSgvW1xzXHUwMDAwLVx1MDAxRl0rL2csIiIpO3RyeXtmPWRlY29kZVVSSUNvbXBvbmVudChmKX1jYXRjaChkKXtmPXVuZXNjYXBlKGYpfWlmKE0udGVzdChmKSlyZXR1cm47aWYobD1mLCEoYz1XKS5hbGxvd19odG1sX2RhdGFfdXJscyYmKC9eZGF0YTppbWFnZVwvL2kudGVzdChsKT8hMT09PWMuYWxsb3dfc3ZnX2RhdGFfdXJscyYmL15kYXRhOmltYWdlXC9zdmdcK3htbC9pLnRlc3QobCk6L15kYXRhOi9pLnRlc3QobCkpKXJldHVybn1nJiYodCBpbiBJfHwwPT09dC5pbmRleE9mKCJvbiIpKXx8KHAubWFwW3RdPW4scC5wdXNoKHtuYW1lOnQsdmFsdWU6bn0pKX07Zm9yKGs9bmV3IFJlZ0V4cCgiPCg/Oig/OiEtLShbXFx3XFxXXSo/KS0tIT8+KXwoPzohXFxbQ0RBVEFcXFsoW1xcd1xcV10qPylcXF1cXF0+KXwoPzohW0RkXVtPb11bQ2NdW1R0XVtZeV1bUHBdW0VlXShbXFx3XFxXXSo/KT4pfCg/OiEoLS0pPyl8KD86XFw/KFteXFxzXFwvPD5dKykgPyhbXFx3XFxXXSo/KVs/L10+KXwoPzpcXC8oW0EtWmEtel1bQS1aYS16MC05XFwtX1xcOlxcLl0qKT4pfCg/OihbQS1aYS16XVtBLVphLXowLTlcXC1fXFw6XFwuXSopKCg/OlxccytbXlwiJz5dKyg/Oig/OlwiW15cIl0qXCIpfCg/OidbXiddKicpfFtePl0qKSkqfFxcL3xcXHMrKT4pKSIsImciKSxfPS8oW1x3OlwtXSspKD86XHMqPVxzKig/Oig/OlwiKCg/OlteXCJdKSopXCIpfCg/OlwnKCg/OlteXCddKSopXCcpfChbXj5cc10rKSkpPy9nLHM9Sy5nZXRTaG9ydEVuZGVkRWxlbWVudHMoKSxFPVcuc2VsZl9jbG9zaW5nX2VsZW1lbnRzfHxLLmdldFNlbGZDbG9zaW5nRWxlbWVudHMoKSxoPUsuZ2V0Qm9vbEF0dHJzKCksdj1XLnZhbGlkYXRlLHU9Vy5yZW1vdmVfaW50ZXJuYWxzLEE9Vy5maXhfc2VsZl9jbG9zaW5nLFI9Sy5nZXRTcGVjaWFsRWxlbWVudHMoKSxOPUQrIj4iO3Q9ay5leGVjKE4pOyl7dmFyIHE9dFswXTtpZihPPHQuaW5kZXgmJnooTChELnN1YnN0cihPLHQuaW5kZXgtTykpKSxuPXRbN10pIjoiPT09KG49bi50b0xvd2VyQ2FzZSgpKS5jaGFyQXQoMCkmJihuPW4uc3Vic3RyKDEpKSxVKG4pO2Vsc2UgaWYobj10WzhdKXtpZih0LmluZGV4K3EubGVuZ3RoPkQubGVuZ3RoKXt6KEwoRC5zdWJzdHIodC5pbmRleCkpKSxPPXQuaW5kZXgrcS5sZW5ndGg7Y29udGludWV9IjoiPT09KG49bi50b0xvd2VyQ2FzZSgpKS5jaGFyQXQoMCkmJihuPW4uc3Vic3RyKDEpKSxjPW4gaW4gcyxBJiZFW25dJiYwPEIubGVuZ3RoJiZCW0IubGVuZ3RoLTFdLm5hbWU9PT1uJiZVKG4pO3ZhciAkPWJmKF8sdFs5XSk7aWYobnVsbCE9PSQpe2lmKCJhbGwiPT09JCl7Tz15ZihLLEQsay5sYXN0SW5kZXgpLGsubGFzdEluZGV4PU87Y29udGludWV9Zj0hMX1pZighdnx8KGw9Sy5nZXRFbGVtZW50UnVsZShuKSkpe2lmKGY9ITAsdiYmKGI9bC5hdHRyaWJ1dGVzLEM9bC5hdHRyaWJ1dGVQYXR0ZXJucyksKHk9dFs5XSk/KChnPS0xIT09eS5pbmRleE9mKCJkYXRhLW1jZS10eXBlIikpJiZ1JiYoZj0hMSksKHA9W10pLm1hcD17fSx5LnJlcGxhY2UoXyxWKSk6KHA9W10pLm1hcD17fSx2JiYhZyl7aWYodz1sLmF0dHJpYnV0ZXNSZXF1aXJlZCx4PWwuYXR0cmlidXRlc0RlZmF1bHQsUz1sLmF0dHJpYnV0ZXNGb3JjZWQsbC5yZW1vdmVFbXB0eUF0dHJzJiYhcC5sZW5ndGgmJihmPSExKSxTKWZvcihvPVMubGVuZ3RoO28tLTspYT0oZD1TW29dKS5uYW1lLCJ7JHVpZH0iPT09KFQ9ZC52YWx1ZSkmJihUPSJtY2VfIitQKyspLHAubWFwW2FdPVQscC5wdXNoKHtuYW1lOmEsdmFsdWU6VH0pO2lmKHgpZm9yKG89eC5sZW5ndGg7by0tOykoYT0oZD14W29dKS5uYW1lKWluIHAubWFwfHwoInskdWlkfSI9PT0oVD1kLnZhbHVlKSYmKFQ9Im1jZV8iK1ArKykscC5tYXBbYV09VCxwLnB1c2goe25hbWU6YSx2YWx1ZTpUfSkpO2lmKHcpe2ZvcihvPXcubGVuZ3RoO28tLSYmISh3W29daW4gcC5tYXApOyk7LTE9PT1vJiYoZj0hMSl9aWYoZD1wLm1hcFsiZGF0YS1tY2UtYm9ndXMiXSl7aWYoImFsbCI9PT1kKXtPPXlmKEssRCxrLmxhc3RJbmRleCksay5sYXN0SW5kZXg9Tztjb250aW51ZX1mPSExfX1mJiZKKG4scCxjKX1lbHNlIGY9ITE7aWYocj1SW25dKXtyLmxhc3RJbmRleD1PPXQuaW5kZXgrcS5sZW5ndGgsTz0odD1yLmV4ZWMoRCkpPyhmJiYoaT1ELnN1YnN0cihPLHQuaW5kZXgtTykpLHQuaW5kZXgrdFswXS5sZW5ndGgpOihpPUQuc3Vic3RyKE8pLEQubGVuZ3RoKSxmJiYoMDxpLmxlbmd0aCYmeihpLCEwKSxRKG4pKSxrLmxhc3RJbmRleD1PO2NvbnRpbnVlfWN8fCh5JiZ5LmluZGV4T2YoIi8iKT09PXkubGVuZ3RoLTE/ZiYmUShuKTpCLnB1c2goe25hbWU6bix2YWxpZDpmfSkpfWVsc2UgaWYobj10WzFdKWoobik7ZWxzZSBpZihuPXRbMl0pe2lmKCEoMT09Rnx8Vy5wcmVzZXJ2ZV9jZGF0YXx8MDxCLmxlbmd0aCYmSy5pc1ZhbGlkQ2hpbGQoQltCLmxlbmd0aC0xXS5uYW1lLCIjY2RhdGEiKSkpe089SCgiIix0LmluZGV4KzIpLGsubGFzdEluZGV4PU87Y29udGludWV9WShuKX1lbHNlIGlmKG49dFszXSllZShuKTtlbHNle2lmKChuPXRbNF0pfHwiPCEiPT09cSl7Tz1IKG4sdC5pbmRleCtxLmxlbmd0aCksay5sYXN0SW5kZXg9Tztjb250aW51ZX1pZihuPXRbNV0pe2lmKDEhPUYpe089SCgiPyIsdC5pbmRleCsyKSxrLmxhc3RJbmRleD1PO2NvbnRpbnVlfVoobix0WzZdKX19Tz10LmluZGV4K3EubGVuZ3RofWZvcihPPEQubGVuZ3RoJiZ6KEwoRC5zdWJzdHIoTykpKSxvPUIubGVuZ3RoLTE7MDw9bztvLS0pKG49QltvXSkudmFsaWQmJlEobi5uYW1lKX07cmV0dXJue3BhcnNlOmZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09dCYmKHQ9Imh0bWwiKSxuKGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxuPS9kYXRhOlteO10rO2Jhc2U2NCwoW2EtejAtOVwrXC89XSspL2dpLHI9W10sbz17fSxpPXR1KCJpbWciKSxhPTAsdT0wO3Q9bi5leGVjKGUpOyl7dmFyIHM9dFswXSxjPWkrIl8iK3UrKztvW2NdPXMsYTx0LmluZGV4JiZyLnB1c2goZS5zdWJzdHIoYSx0LmluZGV4LWEpKSxyLnB1c2goYyksYT10LmluZGV4K3MubGVuZ3RofXJldHVybiAwPT09YT97cHJlZml4OmksdXJpczpvLGh0bWw6ZX06KGE8ZS5sZW5ndGgmJnIucHVzaChlLnN1YnN0cihhKSkse3ByZWZpeDppLHVyaXM6byxodG1sOnIuam9pbigiIil9KX0oZSksdCl9fX0oQ2Y9Q2Z8fHt9KS5maW5kRW5kVGFnPXlmO3ZhciB3Zix4ZixTZixOZixFZixrZj1DZixfZj1mdW5jdGlvbihlLHQpe3ZhciBuLHIsbyxpLGEsdSxzLGMsbD10LGY9LzwoXHcrKSBbXj5dKmRhdGEtbWNlLWJvZ3VzPSJhbGwiW14+XSo+L2csZD1lLnNjaGVtYTtmb3IodT1lLmdldFRlbXBBdHRycygpLHM9bCxjPW5ldyBSZWdFeHAoWyJcXHM/KCIrdS5qb2luKCJ8IikrJyk9IlteIl0rIiddLmpvaW4oInwiKSwiZ2kiKSxsPXMucmVwbGFjZShjLCIiKSxhPWQuZ2V0U2hvcnRFbmRlZEVsZW1lbnRzKCk7aT1mLmV4ZWMobCk7KXI9Zi5sYXN0SW5kZXgsbz1pWzBdLmxlbmd0aCxuPWFbaVsxXV0/cjprZi5maW5kRW5kVGFnKGQsbCxyKSxsPWwuc3Vic3RyaW5nKDAsci1vKStsLnN1YnN0cmluZyhuKSxmLmxhc3RJbmRleD1yLW87cmV0dXJuIGx1KGwpfSxSZj1fZixUZj1mdW5jdGlvbihlLHQsbixyKXt2YXIgbyxpLGEsdSxzO2lmKHQuZm9ybWF0PW4sdC5nZXQ9ITAsdC5nZXRJbm5lcj0hMCx0Lm5vX2V2ZW50c3x8ZS5maXJlKCJCZWZvcmVHZXRDb250ZW50Iix0KSwicmF3Ij09PXQuZm9ybWF0KW89aHIudHJpbShSZihlLnNlcmlhbGl6ZXIsci5pbm5lckhUTUwpKTtlbHNlIGlmKCJ0ZXh0Ij09PXQuZm9ybWF0KW89bHUoci5pbm5lclRleHR8fHIudGV4dENvbnRlbnQpO2Vsc2V7aWYoInRyZWUiPT09dC5mb3JtYXQpcmV0dXJuIGUuc2VyaWFsaXplci5zZXJpYWxpemUocix0KTthPShpPWUpLnNlcmlhbGl6ZXIuc2VyaWFsaXplKHIsdCksdT1IcyhpKSxzPW5ldyBSZWdFeHAoIl4oPCIrdSsiW14+XSo+KCZuYnNwO3wmIzE2MDt8XFxzfFx4YTB8PGJyIFxcLz58KTxcXC8iK3UrIj5bXHJcbl0qfDxiciBcXC8+W1xyXG5dKikkIiksbz1hLnJlcGxhY2UocywiIil9cmV0dXJuInRleHQiPT09dC5mb3JtYXR8fE9yKE5lLmZyb21Eb20ocikpP3QuY29udGVudD1vOnQuY29udGVudD1oci50cmltKG8pLHQubm9fZXZlbnRzfHxlLmZpcmUoIkdldENvbnRlbnQiLHQpLHQuY29udGVudH0sQWY9aHIuZWFjaCxEZj1mdW5jdGlvbihvKXt0aGlzLmNvbXBhcmU9ZnVuY3Rpb24oZSx0KXtpZihlLm5vZGVOYW1lIT09dC5ub2RlTmFtZSlyZXR1cm4hMTt2YXIgbj1mdW5jdGlvbihuKXt2YXIgcj17fTtyZXR1cm4gQWYoby5nZXRBdHRyaWJzKG4pLGZ1bmN0aW9uKGUpe3ZhciB0PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTswIT09dC5pbmRleE9mKCJfIikmJiJzdHlsZSIhPT10JiYwIT09dC5pbmRleE9mKCJkYXRhLSIpJiYoclt0XT1vLmdldEF0dHJpYihuLHQpKX0pLHJ9LHI9ZnVuY3Rpb24oZSx0KXt2YXIgbixyO2ZvcihyIGluIGUpaWYoZS5oYXNPd25Qcm9wZXJ0eShyKSl7aWYodm9pZCAwPT09KG49dFtyXSkpcmV0dXJuITE7aWYoZVtyXSE9PW4pcmV0dXJuITE7ZGVsZXRlIHRbcl19Zm9yKHIgaW4gdClpZih0Lmhhc093blByb3BlcnR5KHIpKXJldHVybiExO3JldHVybiEwfTtyZXR1cm4hIXIobihlKSxuKHQpKSYmKCEhcihvLnBhcnNlU3R5bGUoby5nZXRBdHRyaWIoZSwic3R5bGUiKSksby5wYXJzZVN0eWxlKG8uZ2V0QXR0cmliKHQsInN0eWxlIikpKSYmKCFsbChlKSYmIWxsKHQpKSl9fSxPZj1mdW5jdGlvbihuLHIsbyl7cmV0dXJuIFIuZnJvbShvLmNvbnRhaW5lcigpKS5maWx0ZXIoWnQpLmV4aXN0cyhmdW5jdGlvbihlKXt2YXIgdD1uPzA6LTE7cmV0dXJuIHIoZS5kYXRhLmNoYXJBdChvLm9mZnNldCgpK3QpKX0pfSxCZj1OKE9mLCEwLGRsKSxQZj1OKE9mLCExLGRsKSxMZj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbnRhaW5lcigpO3JldHVybiBadCh0KSYmMD09PXQuZGF0YS5sZW5ndGh9LElmPWZ1bmN0aW9uKHQsbil7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBSLmZyb20oQ2ModD8wOi0xLGUpKS5maWx0ZXIobikuaXNTb21lKCl9fSxNZj1mdW5jdGlvbihlKXtyZXR1cm4iSU1HIj09PWUubm9kZU5hbWUmJiJibG9jayI9PT1tbihOZS5mcm9tRG9tKGUpLCJkaXNwbGF5Iil9LEZmPWZ1bmN0aW9uKGUpe3JldHVybiBhbihlKSYmISgkdCh0PWUpJiYiYWxsIj09PXQuZ2V0QXR0cmlidXRlKCJkYXRhLW1jZS1ib2d1cyIpKTt2YXIgdH0sVWY9SWYoITAsTWYpLHpmPUlmKCExLE1mKSxqZj1JZighMCxHdCksSGY9SWYoITEsR3QpLFZmPUlmKCEwLEZmKSxxZj1JZighMSxGZiksJGY9ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG8saT1OZS5mcm9tRG9tKGUpLGE9TmUuZnJvbURvbSh0KTtyZXR1cm4gbj1hLHI9InByZSxjb2RlIixvPU4oYXQsaSkscWEobixyLG8pLmlzU29tZSgpfSxXZj1mdW5jdGlvbihlLHQpe3JldHVybiBEdSh0KSYmITE9PT0ocj1lLFp0KG89dCkmJi9eWyBcdFxyXG5dKiQvLnRlc3Qoby5kYXRhKSYmITE9PT0kZihyLG8pKXx8JHQobj10KSYmIkEiPT09bi5ub2RlTmFtZSYmbi5oYXNBdHRyaWJ1dGUoIm5hbWUiKXx8S2YodCk7dmFyIG4scixvfSxLZj1YdCgiZGF0YS1tY2UtYm9va21hcmsiKSxYZj1YdCgiZGF0YS1tY2UtYm9ndXMiKSxZZj0od2Y9ImRhdGEtbWNlLWJvZ3VzIix4Zj0iYWxsIixmdW5jdGlvbihlKXtyZXR1cm4gJHQoZSkmJmUuZ2V0QXR0cmlidXRlKHdmKT09PXhmfSksR2Y9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9ITApLGZ1bmN0aW9uKGUsdCl7dmFyIG4scj0wO2lmKFdmKGUsZSkpcmV0dXJuITE7aWYoIShuPWUuZmlyc3RDaGlsZCkpcmV0dXJuITA7dmFyIG89bmV3IHJhKG4sZSk7ZG97aWYodCl7aWYoWWYobikpe249by5uZXh0KCEwKTtjb250aW51ZX1pZihYZihuKSl7bj1vLm5leHQoKTtjb250aW51ZX19aWYocm4obikpcisrLG49by5uZXh0KCk7ZWxzZXtpZihXZihlLG4pKXJldHVybiExO249by5uZXh0KCl9fXdoaWxlKG4pO3JldHVybiByPD0xfShlLmRvbSgpLHQpfSxKZj1mdW5jdGlvbihlKXt2YXIgdD1VYShlLCJiciIpLG49SChmdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sbj1lLmRvbSgpO247KXQucHVzaChOZS5mcm9tRG9tKG4pKSxuPW4ubGFzdENoaWxkO3JldHVybiB0fShlKS5zbGljZSgtMSksRXIpO3QubGVuZ3RoPT09bi5sZW5ndGgmJnoobixrdCl9LFFmPWZ1bmN0aW9uKGUpe0V0KGUpLFN0KGUsTmUuZnJvbUh0bWwoJzxiciBkYXRhLW1jZS1ib2d1cz0iMSI+JykpfSxaZj1mdW5jdGlvbihuKXtidChuKS5lYWNoKGZ1bmN0aW9uKHQpe2R0KHQpLmVhY2goZnVuY3Rpb24oZSl7U3IobikmJkVyKHQpJiZTcihlKSYma3QodCl9KX0pfSxlZD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHN0KHQsZSk/ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49RCh0KT90Omcscj1lLmRvbSgpLG89W107bnVsbCE9PXIucGFyZW50Tm9kZSYmci5wYXJlbnROb2RlIT09dW5kZWZpbmVkOyl7dmFyIGk9ci5wYXJlbnROb2RlLGE9TmUuZnJvbURvbShpKTtpZihvLnB1c2goYSksITA9PT1uKGEpKWJyZWFrO3I9aX1yZXR1cm4gb30oZSxmdW5jdGlvbihlKXtyZXR1cm4gbihlKXx8YXQoZSx0KX0pLnNsaWNlKDAsLTEpOltdfSx0ZD1mdW5jdGlvbihlLHQpe3JldHVybiBlZChlLHQseCghMSkpfSxuZD1mdW5jdGlvbihlLHQpe3JldHVybltlXS5jb25jYXQodGQoZSx0KSl9LHJkPWZ1bmN0aW9uKGUsdCxuKXtpZigwIT09bil7dmFyIHIsbyxpLGE9ZS5kYXRhLnNsaWNlKHQsdCtuKSx1PXQrbj49ZS5kYXRhLmxlbmd0aCxzPTA9PT10O2UucmVwbGFjZURhdGEodCxuLChvPXMsaT11LFcocj1hLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGRsKHQpfHxmbCh0KT9lLnByZXZpb3VzQ2hhcklzU3BhY2V8fCIiPT09ZS5zdHImJm98fGUuc3RyLmxlbmd0aD09PXIubGVuZ3RoLTEmJmk/e3ByZXZpb3VzQ2hhcklzU3BhY2U6ITEsc3RyOmUuc3RyK29vfTp7cHJldmlvdXNDaGFySXNTcGFjZTohMCxzdHI6ZS5zdHIrIiAifTp7cHJldmlvdXNDaGFySXNTcGFjZTohMSxzdHI6ZS5zdHIrdH19LHtwcmV2aW91c0NoYXJJc1NwYWNlOiExLHN0cjoiIn0pLnN0cikpfX0sb2Q9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmRhdGEuc2xpY2UodCkscj1uLmxlbmd0aC1XZShuKS5sZW5ndGg7cmV0dXJuIHJkKGUsdCxyKX0saWQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcj1lLG89KG49dCkuY29udGFpbmVyKCksaT1uLm9mZnNldCgpLCExPT09bXMuaXNUZXh0UG9zaXRpb24obikmJm89PT1yLnBhcmVudE5vZGUmJmk+bXMuYmVmb3JlKHIpLm9mZnNldCgpP21zKHQuY29udGFpbmVyKCksdC5vZmZzZXQoKS0xKTp0O3ZhciBuLHIsbyxpfSxhZD1mdW5jdGlvbihlKXtyZXR1cm4gRHUoZS5wcmV2aW91c1NpYmxpbmcpP1Iuc29tZSgodD1lLnByZXZpb3VzU2libGluZyxadCh0KT9tcyh0LHQuZGF0YS5sZW5ndGgpOm1zLmFmdGVyKHQpKSk6ZS5wcmV2aW91c1NpYmxpbmc/ZWwoZS5wcmV2aW91c1NpYmxpbmcpOlIubm9uZSgpO3ZhciB0fSx1ZD1mdW5jdGlvbihlKXtyZXR1cm4gRHUoZS5uZXh0U2libGluZyk/Ui5zb21lKCh0PWUubmV4dFNpYmxpbmcsWnQodCk/bXModCwwKTptcy5iZWZvcmUodCkpKTplLm5leHRTaWJsaW5nP1pjKGUubmV4dFNpYmxpbmcpOlIubm9uZSgpO3ZhciB0fSxzZD1mdW5jdGlvbihyLG8pe3JldHVybiBhZChvKS5vclRodW5rKGZ1bmN0aW9uKCl7cmV0dXJuIHVkKG8pfSkub3JUaHVuayhmdW5jdGlvbigpe3JldHVybiBlPXIsdD1vLG49bXMuYmVmb3JlKHQucHJldmlvdXNTaWJsaW5nP3QucHJldmlvdXNTaWJsaW5nOnQucGFyZW50Tm9kZSksUWMoZSxuKS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIEpjKGUsbXMuYWZ0ZXIodCkpfSxSLnNvbWUpO3ZhciBlLHQsbn0pfSxjZD1mdW5jdGlvbihuLHIpe3JldHVybiB1ZChyKS5vclRodW5rKGZ1bmN0aW9uKCl7cmV0dXJuIGFkKHIpfSkub3JUaHVuayhmdW5jdGlvbigpe3JldHVybiB0PXIsSmMoZT1uLG1zLmFmdGVyKHQpKS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIFFjKGUsbXMuYmVmb3JlKHQpKX0sUi5zb21lKTt2YXIgZSx0fSl9LGxkPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4oZT9jZDpzZCkodCxuKS5tYXAoTihpZCxuKSl9LGZkPWZ1bmN0aW9uKHQsbixlKXtlLmZvbGQoZnVuY3Rpb24oKXt0LmZvY3VzKCl9LGZ1bmN0aW9uKGUpe3Quc2VsZWN0aW9uLnNldFJuZyhlLnRvUmFuZ2UoKSxuKX0pfSxkZD1mdW5jdGlvbihlLHQpe3JldHVybiB0JiZlLnNjaGVtYS5nZXRCbG9ja0VsZW1lbnRzKCkuaGFzT3duUHJvcGVydHkoUnQodCkpfSxtZD1mdW5jdGlvbihlKXtpZihHZihlKSl7dmFyIHQ9TmUuZnJvbUh0bWwoJzxiciBkYXRhLW1jZS1ib2d1cz0iMSI+Jyk7cmV0dXJuIEV0KGUpLFN0KGUsdCksUi5zb21lKG1zLmJlZm9yZSh0LmRvbSgpKSl9cmV0dXJuIFIubm9uZSgpfSxwZD1mdW5jdGlvbihlLHQsbCl7dmFyIG4scixvLGksYT1kdChlKS5maWx0ZXIoT3QpLHU9bXQoZSkuZmlsdGVyKE90KTtyZXR1cm4ga3QoZSkscj11LG89dCxpPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixvLGksYSx1PWUuZG9tKCkscz10LmRvbSgpLGM9dS5kYXRhLmxlbmd0aDtyZXR1cm4gbz1zLGk9bCxhPUtlKChyPXUpLmRhdGEpLmxlbmd0aCxyLmFwcGVuZERhdGEoby5kYXRhKSxrdChOZS5mcm9tRG9tKG8pKSxpJiZvZChyLGEpLG4uY29udGFpbmVyKCk9PT1zP21zKHUsYyk6bn0sKChuPWEpLmlzU29tZSgpJiZyLmlzU29tZSgpJiZvLmlzU29tZSgpP1Iuc29tZShpKG4uZ2V0T3JEaWUoKSxyLmdldE9yRGllKCksby5nZXRPckRpZSgpKSk6Ui5ub25lKCkpLm9yVGh1bmsoZnVuY3Rpb24oKXtyZXR1cm4gbCYmKGEuZWFjaChmdW5jdGlvbihlKXtyZXR1cm4gdD1lLmRvbSgpLG49ZS5kb20oKS5sZW5ndGgscj10LmRhdGEuc2xpY2UoMCxuKSxvPXIubGVuZ3RoLUtlKHIpLmxlbmd0aCxyZCh0LG4tbyxvKTt2YXIgdCxuLHIsb30pLHUuZWFjaChmdW5jdGlvbihlKXtyZXR1cm4gb2QoZS5kb20oKSwwKX0pKSx0fSl9LGdkPWZ1bmN0aW9uKHQsbixlLHIpe3ZvaWQgMD09PXImJihyPSEwKTt2YXIgbyxpLGE9bGQobix0LmdldEJvZHkoKSxlLmRvbSgpKSx1PUhhKGUsTihkZCx0KSwobz10LmdldEJvZHkoKSxmdW5jdGlvbihlKXtyZXR1cm4gZS5kb20oKT09PW99KSkscz1wZChlLGEsKGk9ZSxtZSh0LnNjaGVtYS5nZXRUZXh0SW5saW5lRWxlbWVudHMoKSxSdChpKSkpKTt0LmRvbS5pc0VtcHR5KHQuZ2V0Qm9keSgpKT8odC5zZXRDb250ZW50KCIiKSx0LnNlbGVjdGlvbi5zZXRDdXJzb3JMb2NhdGlvbigpKTp1LmJpbmQobWQpLmZvbGQoZnVuY3Rpb24oKXtyJiZmZCh0LG4scyl9LGZ1bmN0aW9uKGUpe3ImJmZkKHQsbixSLnNvbWUoZSkpfSl9LGhkPWZ1bmN0aW9uKGEpe2lmKCFrKGEpKXRocm93IG5ldyBFcnJvcigiY2FzZXMgbXVzdCBiZSBhbiBhcnJheSIpO2lmKDA9PT1hLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoInRoZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25lIGNhc2UiKTt2YXIgdT1bXSxuPXt9O3JldHVybiB6KGEsZnVuY3Rpb24oZSxyKXt2YXIgdD1uZShlKTtpZigxIT09dC5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJvbmUgYW5kIG9ubHkgb25lIG5hbWUgcGVyIGNhc2UiKTt2YXIgbz10WzBdLGk9ZVtvXTtpZihuW29dIT09dW5kZWZpbmVkKXRocm93IG5ldyBFcnJvcigiZHVwbGljYXRlIGtleSBkZXRlY3RlZDoiK28pO2lmKCJjYXRhIj09PW8pdGhyb3cgbmV3IEVycm9yKCJjYW5ub3QgaGF2ZSBhIGNhc2UgbmFtZWQgY2F0YSAoc29ycnkpIik7aWYoIWsoaSkpdGhyb3cgbmV3IEVycm9yKCJjYXNlIGFyZ3VtZW50cyBtdXN0IGJlIGFuIGFycmF5Iik7dS5wdXNoKG8pLG5bb109ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoO2lmKGUhPT1pLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMgdG8gY2FzZSAiK28rIi4gRXhwZWN0ZWQgIitpLmxlbmd0aCsiICgiK2krIiksIGdvdCAiK2UpO2Zvcih2YXIgbj1uZXcgQXJyYXkoZSksdD0wO3Q8bi5sZW5ndGg7dCsrKW5bdF09YXJndW1lbnRzW3RdO3JldHVybntmb2xkOmZ1bmN0aW9uKCl7aWYoYXJndW1lbnRzLmxlbmd0aCE9PWEubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyB0byBmb2xkLiBFeHBlY3RlZCAiK2EubGVuZ3RoKyIsIGdvdCAiK2FyZ3VtZW50cy5sZW5ndGgpO3JldHVybiBhcmd1bWVudHNbcl0uYXBwbHkobnVsbCxuKX0sbWF0Y2g6ZnVuY3Rpb24oZSl7dmFyIHQ9bmUoZSk7aWYodS5sZW5ndGghPT10Lmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMgdG8gbWF0Y2guIEV4cGVjdGVkOiAiK3Uuam9pbigiLCIpKyJcbkFjdHVhbDogIit0LmpvaW4oIiwiKSk7aWYoIUcodSxmdW5jdGlvbihlKXtyZXR1cm4gTSh0LGUpfSkpdGhyb3cgbmV3IEVycm9yKCJOb3QgYWxsIGJyYW5jaGVzIHdlcmUgc3BlY2lmaWVkIHdoZW4gdXNpbmcgbWF0Y2guIFNwZWNpZmllZDogIit0LmpvaW4oIiwgIikrIlxuUmVxdWlyZWQ6ICIrdS5qb2luKCIsICIpKTtyZXR1cm4gZVtvXS5hcHBseShudWxsLG4pfSxsb2c6ZnVuY3Rpb24oZSl7Vi5jb25zb2xlLmxvZyhlLHtjb25zdHJ1Y3RvcnM6dSxjb25zdHJ1Y3RvcjpvLHBhcmFtczpufSl9fX19KSxufSx2ZD1mdW5jdGlvbihlLHQpe3JldHVybntzdGFydDplLGVuZDp0fX0seWQ9aGQoW3tyZW1vdmVUYWJsZTpbImVsZW1lbnQiXX0se2VtcHR5Q2VsbHM6WyJjZWxscyJdfSx7ZGVsZXRlQ2VsbFNlbGVjdGlvbjpbInJuZyIsImNlbGwiXX1dKSxiZD1mdW5jdGlvbihlLHQpe3JldHVybiBXYShOZS5mcm9tRG9tKGUpLCJ0ZCx0aCIsdCl9LENkPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHFhKGUsInRhYmxlIix0KX0sd2Q9ZnVuY3Rpb24oZSl7cmV0dXJuIWF0KGUuc3RhcnQsZS5lbmQpfSx4ZD1mdW5jdGlvbihlLHQpe3JldHVybiBDZChlLnN0YXJ0LHQpLmJpbmQoZnVuY3Rpb24ocil7cmV0dXJuIENkKGUuZW5kLHQpLmJpbmQoZnVuY3Rpb24oZSl7cmV0dXJuIHQ9YXQocixlKSxuPXIsdD9SLnNvbWUobik6Ui5ub25lKCk7dmFyIHQsbn0pfSl9LFNkPWZ1bmN0aW9uKGUpe3JldHVybiBVYShlLCJ0ZCx0aCIpfSxOZD1mdW5jdGlvbihyLGUpe3ZhciB0PWJkKGUuc3RhcnRDb250YWluZXIsciksbj1iZChlLmVuZENvbnRhaW5lcixyKTtyZXR1cm4gZS5jb2xsYXBzZWQ/Ui5ub25lKCk6JHUodCxuLHZkKS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIHQuZm9sZChmdW5jdGlvbigpe3JldHVybiBuLmJpbmQoZnVuY3Rpb24odCl7cmV0dXJuIENkKHQscikuYmluZChmdW5jdGlvbihlKXtyZXR1cm4gWihTZChlKSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiB2ZChlLHQpfSl9KX0pfSxmdW5jdGlvbih0KXtyZXR1cm4gQ2QodCxyKS5iaW5kKGZ1bmN0aW9uKGUpe3JldHVybiBlZShTZChlKSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiB2ZCh0LGUpfSl9KX0pfSxmdW5jdGlvbihlKXtyZXR1cm4gRWQocixlKT9SLm5vbmUoKToobj1yLENkKCh0PWUpLnN0YXJ0LG4pLmJpbmQoZnVuY3Rpb24oZSl7cmV0dXJuIGVlKFNkKGUpKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHZkKHQuc3RhcnQsZSl9KX0pKTt2YXIgdCxufSl9LEVkPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHhkKHQsZSkuaXNTb21lKCl9LGtkPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIHdkKGUpJiZFZChuLGUpfSkub3JUaHVuayhmdW5jdGlvbigpe3JldHVybiBOZChuLHQpfSkuYmluZChmdW5jdGlvbihlKXtyZXR1cm4geGQodD1lLG4pLm1hcChmdW5jdGlvbihlKXtyZXR1cm57cm5nOnQsdGFibGU6ZSxjZWxsczpTZChlKX19KTt2YXIgdH0pfSxfZD1mdW5jdGlvbihlLHQpe3JldHVybiBYKGUsZnVuY3Rpb24oZSl7cmV0dXJuIGF0KGUsdCl9KX0sUmQ9ZnVuY3Rpb24oZSxyLG8pe3JldHVybiBlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gbj1vLCF3ZCh0PWUpJiZ4ZCh0LG4pLmV4aXN0cyhmdW5jdGlvbihlKXt2YXIgdD1lLmRvbSgpLnJvd3M7cmV0dXJuIDE9PT10Lmxlbmd0aCYmMT09PXRbMF0uY2VsbHMubGVuZ3RofSkmJlhsKGUuc3RhcnQscik7dmFyIHQsbn0pLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5zdGFydH0pfSxUZD1mdW5jdGlvbihuKXtyZXR1cm4gJHUoX2QoKHI9bikuY2VsbHMsci5ybmcuc3RhcnQpLF9kKHIuY2VsbHMsci5ybmcuZW5kKSxmdW5jdGlvbihlLHQpe3JldHVybiByLmNlbGxzLnNsaWNlKGUsdCsxKX0pLm1hcChmdW5jdGlvbihlKXt2YXIgdD1uLmNlbGxzO3JldHVybiBlLmxlbmd0aD09PXQubGVuZ3RoP3lkLnJlbW92ZVRhYmxlKG4udGFibGUpOnlkLmVtcHR5Q2VsbHMoZSl9KTt2YXIgcn0sQWQ9ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG8saSxhLHU9KG49ZSxmdW5jdGlvbihlKXtyZXR1cm4gYXQobixlKX0pLHM9KG89dSxpPWJkKChyPXQpLnN0YXJ0Q29udGFpbmVyLG8pLGE9YmQoci5lbmRDb250YWluZXIsbyksJHUoaSxhLHZkKSk7cmV0dXJuIFJkKHMsdCx1KS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHlkLmRlbGV0ZUNlbGxTZWxlY3Rpb24odCxlKX0pLm9yVGh1bmsoZnVuY3Rpb24oKXtyZXR1cm4ga2Qocyx0LHUpLmJpbmQoVGQpfSl9LERkPWZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybig4PT09VHQodD1lKXx8IiNjb21tZW50Ij09PVJ0KHQpP2R0OmJ0KShlKS5iaW5kKERkKS5vclRodW5rKGZ1bmN0aW9uKCl7cmV0dXJuIFIuc29tZShlKX0pfSxPZD1mdW5jdGlvbihlLHQpe3JldHVybiB6KHQsUWYpLGUuc2VsZWN0aW9uLnNldEN1cnNvckxvY2F0aW9uKHRbMF0uZG9tKCksMCksITB9LEJkPWZ1bmN0aW9uKGUsdCxuKXt0LmRlbGV0ZUNvbnRlbnRzKCk7dmFyIHIsbz1EZChuKS5nZXRPcihuKSxpPU5lLmZyb21Eb20oZS5kb20uZ2V0UGFyZW50KG8uZG9tKCksZS5kb20uaXNCbG9jaykpO2lmKEdmKGkpJiYoUWYoaSksZS5zZWxlY3Rpb24uc2V0Q3Vyc29yTG9jYXRpb24oaS5kb20oKSwwKSksIWF0KG4saSkpe3ZhciBhPWZ0KGkpLmlzKG4pP1tdOmZ0KHI9aSkubWFwKGh0KS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIEgoZSxmdW5jdGlvbihlKXtyZXR1cm4hYXQocixlKX0pfSkuZ2V0T3IoW10pO3ooYS5jb25jYXQoaHQobikpLGZ1bmN0aW9uKGUpe2F0KGUsaSl8fHN0KGUsaSl8fGt0KGUpfSl9cmV0dXJuITB9LFBkPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGdkKGUsITEsdCksITB9LExkPWZ1bmN0aW9uKG4sZSxyLHQpe3JldHVybiBNZChlLHQpLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm4gdD1uLEFkKGUscikubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLmZvbGQoTihQZCx0KSxOKE9kLHQpLE4oQmQsdCkpfSk7dmFyIHR9LGZ1bmN0aW9uKGUpe3JldHVybiBGZChuLGUpfSkuZ2V0T3IoITEpfSxJZD1mdW5jdGlvbihlLHQpe3JldHVybiBLKG5kKHQsZSksRHIpfSxNZD1mdW5jdGlvbihlLHQpe3JldHVybiBLKG5kKHQsZSksZnVuY3Rpb24oZSl7cmV0dXJuImNhcHRpb24iPT09UnQoZSl9KX0sRmQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gUWYodCksZS5zZWxlY3Rpb24uc2V0Q3Vyc29yTG9jYXRpb24odC5kb20oKSwwKSxSLnNvbWUoITApfSxVZD1mdW5jdGlvbih1LHMsYyxsLGYpe3JldHVybiBYYyhjLHUuZ2V0Qm9keSgpLGYpLmJpbmQoZnVuY3Rpb24oZSl7cmV0dXJuIG89YyxpPWYsYT1lLFpjKChyPWwpLmRvbSgpKS5iaW5kKGZ1bmN0aW9uKHQpe3JldHVybiBlbChyLmRvbSgpKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIG8/aS5pc0VxdWFsKHQpJiZhLmlzRXF1YWwoZSk6aS5pc0VxdWFsKGUpJiZhLmlzRXF1YWwodCl9KX0pLmdldE9yKCEwKT9GZCh1LGwpOih0PWwsbj1lLE1kKHMsTmUuZnJvbURvbShuLmdldE5vZGUoKSkpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4hMT09PWF0KGUsdCl9KSk7dmFyIHQsbixyLG8saSxhfSkub3IoUi5zb21lKCEwKSl9LHpkPWZ1bmN0aW9uKG8saSxhLGUpe3ZhciB1PW1zLmZyb21SYW5nZVN0YXJ0KG8uc2VsZWN0aW9uLmdldFJuZygpKTtyZXR1cm4gSWQoYSxlKS5iaW5kKGZ1bmN0aW9uKGUpe3JldHVybiBHZihlKT9GZChvLGUpOih0PWEsbj1lLHI9dSxYYyhpLG8uZ2V0Qm9keSgpLHIpLmJpbmQoZnVuY3Rpb24oZSl7cmV0dXJuIElkKHQsTmUuZnJvbURvbShlLmdldE5vZGUoKSkpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4hMT09PWF0KGUsbil9KX0pKTt2YXIgdCxuLHJ9KS5nZXRPcighMSl9LGpkPWZ1bmN0aW9uKGUsdCl7cmV0dXJuKGU/amY6SGYpKHQpfSxIZD1mdW5jdGlvbihhLHUscil7dmFyIHM9TmUuZnJvbURvbShhLmdldEJvZHkoKSk7cmV0dXJuIE1kKHMscikuZm9sZChmdW5jdGlvbigpe3JldHVybiB6ZChhLHUscyxyKXx8KGU9YSx0PXUsbj1tcy5mcm9tUmFuZ2VTdGFydChlLnNlbGVjdGlvbi5nZXRSbmcoKSksamQodCxuKXx8S2ModCxlLmdldEJvZHkoKSxuKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGpkKHQsZSl9KS5nZXRPcighMSkpO3ZhciBlLHQsbn0sZnVuY3Rpb24oZSl7cmV0dXJuIHQ9YSxuPXUscj1zLG89ZSxpPW1zLmZyb21SYW5nZVN0YXJ0KHQuc2VsZWN0aW9uLmdldFJuZygpKSwoR2Yobyk/RmQodCxvKTpVZCh0LHIsbixvLGkpKS5nZXRPcighMSk7dmFyIHQsbixyLG8saX0pfSxWZD1mdW5jdGlvbihlLHQpe3ZhciBuLHIsbyxpLGEsdT1OZS5mcm9tRG9tKGUuc2VsZWN0aW9uLmdldFN0YXJ0KCEwKSkscz0kbChlKTtyZXR1cm4gZS5zZWxlY3Rpb24uaXNDb2xsYXBzZWQoKSYmMD09PXMubGVuZ3RoP0hkKGUsdCx1KToobj1lLHI9dSxvPU5lLmZyb21Eb20obi5nZXRCb2R5KCkpLGk9bi5zZWxlY3Rpb24uZ2V0Um5nKCksMCE9PShhPSRsKG4pKS5sZW5ndGg/T2QobixhKTpMZChuLG8saSxyKSl9LHFkPWZ1bmN0aW9uKGEpe3ZhciB1PW1zLmZyb21SYW5nZVN0YXJ0KGEpLHM9bXMuZnJvbVJhbmdlRW5kKGEpLGM9YS5jb21tb25BbmNlc3RvckNvbnRhaW5lcjtyZXR1cm4gS2MoITEsYyxzKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIWJjKHUscyxjKSYmYmModSxlLGMpPyh0PXUuY29udGFpbmVyKCksbj11Lm9mZnNldCgpLHI9ZS5jb250YWluZXIoKSxvPWUub2Zmc2V0KCksKGk9Vi5kb2N1bWVudC5jcmVhdGVSYW5nZSgpKS5zZXRTdGFydCh0LG4pLGkuc2V0RW5kKHIsbyksaSk6YTt2YXIgdCxuLHIsbyxpfSkuZ2V0T3IoYSl9LCRkPWZ1bmN0aW9uKGUpe3JldHVybiBlLmNvbGxhcHNlZD9lOnFkKGUpfSxXZD1mdW5jdGlvbihlLHQpe3ZhciBuLHI7cmV0dXJuIGUuZ2V0QmxvY2tFbGVtZW50cygpW3QubmFtZV0mJigocj10KS5maXJzdENoaWxkJiZyLmZpcnN0Q2hpbGQ9PT1yLmxhc3RDaGlsZCkmJigiYnIiPT09KG49dC5maXJzdENoaWxkKS5uYW1lfHxuLnZhbHVlPT09b28pfSxLZD1mdW5jdGlvbihlLHQpe3ZhciBuLHIsbyxpPXQuZmlyc3RDaGlsZCxhPXQubGFzdENoaWxkO3JldHVybiBpJiYibWV0YSI9PT1pLm5hbWUmJihpPWkubmV4dCksYSYmIm1jZV9tYXJrZXIiPT09YS5hdHRyKCJpZCIpJiYoYT1hLnByZXYpLHI9YSxvPShuPWUpLmdldE5vbkVtcHR5RWxlbWVudHMoKSxyJiYoci5pc0VtcHR5KG8pfHxXZChuLHIpKSYmKGE9YS5wcmV2KSwhKCFpfHxpIT09YSkmJigidWwiPT09aS5uYW1lfHwib2wiPT09aS5uYW1lKX0sWGQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuZmlyc3RDaGlsZCYmZS5maXJzdENoaWxkPT09ZS5sYXN0Q2hpbGQmJigodD1lLmZpcnN0Q2hpbGQpLmRhdGE9PT1vb3x8cm4odCkpO3ZhciB0fSxZZD1mdW5jdGlvbihlKXtyZXR1cm4gMDxlLmxlbmd0aCYmKCEodD1lW2UubGVuZ3RoLTFdKS5maXJzdENoaWxkfHxYZCh0KSk/ZS5zbGljZSgwLC0xKTplO3ZhciB0fSxHZD1mdW5jdGlvbihlLHQpe3ZhciBuPWUuZ2V0UGFyZW50KHQsZS5pc0Jsb2NrKTtyZXR1cm4gbiYmIkxJIj09PW4ubm9kZU5hbWU/bjpudWxsfSxKZD1mdW5jdGlvbihlLHQpe3ZhciBuPW1zLmFmdGVyKGUpLHI9SGModCkucHJldihuKTtyZXR1cm4gcj9yLnRvUmFuZ2UoKTpudWxsfSxRZD1mdW5jdGlvbih0LGUsbil7dmFyIHIsbyxpLGEsdT10LnBhcmVudE5vZGU7cmV0dXJuIGhyLmVhY2goZSxmdW5jdGlvbihlKXt1Lmluc2VydEJlZm9yZShlLHQpfSkscj10LG89bixpPW1zLmJlZm9yZShyKSwoYT1IYyhvKS5uZXh0KGkpKT9hLnRvUmFuZ2UoKTpudWxsfSxaZD1mdW5jdGlvbihlLG8saSx0KXt2YXIgbixyLGEsdSxzLGMsbCxmLGQsbSxwLGcsaCx2LHksYixDLHcseCxTLE49KG49byxyPXQsYz1lLnNlcmlhbGl6ZShyKSxsPW4uY3JlYXRlRnJhZ21lbnQoYyksdT0oYT1sKS5maXJzdENoaWxkLHM9YS5sYXN0Q2hpbGQsdSYmIk1FVEEiPT09dS5ub2RlTmFtZSYmdS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHUpLHMmJiJtY2VfbWFya2VyIj09PXMuaWQmJnMucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzKSxhKSxFPUdkKG8saS5zdGFydENvbnRhaW5lciksaz1ZZCgoZj1OLmZpcnN0Q2hpbGQsaHIuZ3JlcChmLmNoaWxkTm9kZXMsZnVuY3Rpb24oZSl7cmV0dXJuIkxJIj09PWUubm9kZU5hbWV9KSkpLF89by5nZXRSb290KCksUj1mdW5jdGlvbihlKXt2YXIgdD1tcy5mcm9tUmFuZ2VTdGFydChpKSxuPUhjKG8uZ2V0Um9vdCgpKSxyPTE9PT1lP24ucHJldih0KTpuLm5leHQodCk7cmV0dXJuIXJ8fEdkKG8sci5nZXROb2RlKCkpIT09RX07cmV0dXJuIFIoMSk/UWQoRSxrLF8pOlIoMik/KGQ9RSxtPWsscD1fLG8uaW5zZXJ0QWZ0ZXIobS5yZXZlcnNlKCksZCksSmQobVswXSxwKSk6KGg9ayx2PV8seT1nPUUsQz0oYj1pKS5jbG9uZVJhbmdlKCksdz1iLmNsb25lUmFuZ2UoKSxDLnNldFN0YXJ0QmVmb3JlKHkpLHcuc2V0RW5kQWZ0ZXIoeSkseD1bQy5jbG9uZUNvbnRlbnRzKCksdy5jbG9uZUNvbnRlbnRzKCldLChTPWcucGFyZW50Tm9kZSkuaW5zZXJ0QmVmb3JlKHhbMF0sZyksaHIuZWFjaChoLGZ1bmN0aW9uKGUpe1MuaW5zZXJ0QmVmb3JlKGUsZyl9KSxTLmluc2VydEJlZm9yZSh4WzFdLGcpLFMucmVtb3ZlQ2hpbGQoZyksSmQoaFtoLmxlbmd0aC0xXSx2KSl9LGVtPVd0KFsidGQiLCJ0aCJdKSx0bT1mdW5jdGlvbihlLHQpe3ZhciBuLHIsbz1lLnNlbGVjdGlvbi5nZXRSbmcoKSxpPW8uc3RhcnRDb250YWluZXIsYT1vLnN0YXJ0T2Zmc2V0O28uY29sbGFwc2VkJiYocj1hLFp0KG49aSkmJm4ubm9kZVZhbHVlW3ItMV09PT1vbykmJlp0KGkpJiYoaS5pbnNlcnREYXRhKGEtMSwiICIpLGkuZGVsZXRlRGF0YShhLDEpLG8uc2V0U3RhcnQoaSxhKSxvLnNldEVuZChpLGEpLGUuc2VsZWN0aW9uLnNldFJuZyhvKSksZS5zZWxlY3Rpb24uc2V0Q29udGVudCh0KX0sbm09ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kb20sbj0kZChlLnNlbGVjdGlvbi5nZXRSbmcoKSk7ZS5zZWxlY3Rpb24uc2V0Um5nKG4pO3ZhciByLG8saSxhPXQuZ2V0UGFyZW50KG4uc3RhcnRDb250YWluZXIsZW0pO3I9dCxvPW4sbnVsbCE9PShpPWEpJiZpPT09ci5nZXRQYXJlbnQoby5lbmRDb250YWluZXIsZW0pJiZYbChOZS5mcm9tRG9tKGkpLG8pP0JkKGUsbixOZS5mcm9tRG9tKGEpKTplLmdldERvYygpLmV4ZWNDb21tYW5kKCJEZWxldGUiLCExLG51bGwpfSxybT1mdW5jdGlvbihlLHQsbil7dmFyIHIsbyxpLGEsdSxzLGMsbCxmLGQsbSxwPWUuc2VsZWN0aW9uLGc9ZS5kb207aWYoL14gfCAkLy50ZXN0KHQpJiYodD1mdW5jdGlvbihlLHQpe3ZhciBuLHI7bj1lLnN0YXJ0Q29udGFpbmVyLHI9ZS5zdGFydE9mZnNldDt2YXIgbz1mdW5jdGlvbihlKXtyZXR1cm4gbltlXSYmMz09PW5bZV0ubm9kZVR5cGV9O3JldHVybiAzPT09bi5ub2RlVHlwZSYmKDA8cj90PXQucmVwbGFjZSgvXiZuYnNwOy8sIiAiKTpvKCJwcmV2aW91c1NpYmxpbmciKXx8KHQ9dC5yZXBsYWNlKC9eIC8sIiZuYnNwOyIpKSxyPG4ubGVuZ3RoP3Q9dC5yZXBsYWNlKC8mbmJzcDsoPGJyPnwpJC8sIiAiKTpvKCJuZXh0U2libGluZyIpfHwodD10LnJlcGxhY2UoLygmbmJzcDt8ICkoPGJyPnwpJC8sIiZuYnNwOyIpKSksdH0ocC5nZXRSbmcoKSx0KSkscj1lLnBhcnNlcixtPW4ubWVyZ2Usbz1oZih7dmFsaWRhdGU6ZS5zZXR0aW5ncy52YWxpZGF0ZX0sZS5zY2hlbWEpLGQ9JzxzcGFuIGlkPSJtY2VfbWFya2VyIiBkYXRhLW1jZS10eXBlPSJib29rbWFyayI+JiN4RkVGRjsmI3gyMDBCOzwvc3Bhbj4nLHM9e2NvbnRlbnQ6dCxmb3JtYXQ6Imh0bWwiLHNlbGVjdGlvbjohMCxwYXN0ZTpuLnBhc3RlfSwocz1lLmZpcmUoIkJlZm9yZVNldENvbnRlbnQiLHMpKS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSllLmZpcmUoIlNldENvbnRlbnQiLHtjb250ZW50OnMuY29udGVudCxmb3JtYXQ6Imh0bWwiLHNlbGVjdGlvbjohMCxwYXN0ZTpuLnBhc3RlfSk7ZWxzZXstMT09PSh0PXMuY29udGVudCkuaW5kZXhPZigieyRjYXJldH0iKSYmKHQrPSJ7JGNhcmV0fSIpLHQ9dC5yZXBsYWNlKC9ce1wkY2FyZXRcfS8sZCk7dmFyIGgsdix5LGIsQyx3LHg9KGw9cC5nZXRSbmcoKSkuc3RhcnRDb250YWluZXJ8fChsLnBhcmVudEVsZW1lbnQ/bC5wYXJlbnRFbGVtZW50KCk6bnVsbCksUz1lLmdldEJvZHkoKTt4PT09UyYmcC5pc0NvbGxhcHNlZCgpJiZnLmlzQmxvY2soUy5maXJzdENoaWxkKSYmKGg9ZSwodj1TLmZpcnN0Q2hpbGQpJiYhaC5zY2hlbWEuZ2V0U2hvcnRFbmRlZEVsZW1lbnRzKClbdi5ub2RlTmFtZV0pJiZnLmlzRW1wdHkoUy5maXJzdENoaWxkKSYmKChsPWcuY3JlYXRlUm5nKCkpLnNldFN0YXJ0KFMuZmlyc3RDaGlsZCwwKSxsLnNldEVuZChTLmZpcnN0Q2hpbGQsMCkscC5zZXRSbmcobCkpLHAuaXNDb2xsYXBzZWQoKXx8KG5tKGUpLHk9ZS5zZWxlY3Rpb24uZ2V0Um5nKCksYj10LEM9eS5zdGFydENvbnRhaW5lcix3PXkuc3RhcnRPZmZzZXQsMz09PUMubm9kZVR5cGUmJnkuY29sbGFwc2VkJiYoQy5kYXRhW3ddPT09b28/KEMuZGVsZXRlRGF0YSh3LDEpLC9bXHUwMGEwfCBdJC8udGVzdChiKXx8KGIrPSIgIikpOkMuZGF0YVt3LTFdPT09b28mJihDLmRlbGV0ZURhdGEody0xLDEpLC9bXHUwMGEwfCBdJC8udGVzdChiKXx8KGI9IiAiK2IpKSksdD1iKTt2YXIgTixFLGssXz17Y29udGV4dDooaT1wLmdldE5vZGUoKSkubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxkYXRhOm4uZGF0YSxpbnNlcnQ6ITB9O2lmKHU9ci5wYXJzZSh0LF8pLCEwPT09bi5wYXN0ZSYmS2QoZS5zY2hlbWEsdSkmJkdkKGcsaSkpcmV0dXJuIGw9WmQobyxnLGUuc2VsZWN0aW9uLmdldFJuZygpLHUpLGUuc2VsZWN0aW9uLnNldFJuZyhsKSx2b2lkIGUuZmlyZSgiU2V0Q29udGVudCIscyk7aWYoIWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1lO3Q9dC53YWxrKCk7KTE9PT10LnR5cGUmJnQuYXR0cigiZGF0YS1tY2UtZnJhZ21lbnQiLCIxIil9KHUpLCJtY2VfbWFya2VyIj09PShmPXUubGFzdENoaWxkKS5hdHRyKCJpZCIpKWZvcihmPShjPWYpLnByZXY7ZjtmPWYud2FsayghMCkpaWYoMz09PWYudHlwZXx8IWcuaXNCbG9jayhmLm5hbWUpKXtlLnNjaGVtYS5pc1ZhbGlkQ2hpbGQoZi5wYXJlbnQubmFtZSwic3BhbiIpJiZmLnBhcmVudC5pbnNlcnQoYyxmLCJiciI9PT1mLm5hbWUpO2JyZWFrfWlmKGUuX3NlbGVjdGlvbk92ZXJyaWRlcy5zaG93QmxvY2tDYXJldENvbnRhaW5lcihpKSxfLmludmFsaWQpe2Zvcih0bShlLGQpLGk9cC5nZXROb2RlKCksYT1lLmdldEJvZHkoKSw5PT09aS5ub2RlVHlwZT9pPWY9YTpmPWk7ZiE9PWE7KWY9KGk9ZikucGFyZW50Tm9kZTt0PWk9PT1hP2EuaW5uZXJIVE1MOmcuZ2V0T3V0ZXJIVE1MKGkpLHQ9by5zZXJpYWxpemUoci5wYXJzZSh0LnJlcGxhY2UoLzxzcGFuIChpZD0ibWNlX21hcmtlciJ8aWQ9bWNlX21hcmtlcikuKz88XC9zcGFuPi9pLGZ1bmN0aW9uKCl7cmV0dXJuIG8uc2VyaWFsaXplKHUpfSkpKSxpPT09YT9nLnNldEhUTUwoYSx0KTpnLnNldE91dGVySFRNTChpLHQpfWVsc2UhZnVuY3Rpb24oZSx0LG4pe2lmKCJhbGwiPT09bi5nZXRBdHRyaWJ1dGUoImRhdGEtbWNlLWJvZ3VzIikpbi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlLmRvbS5jcmVhdGVGcmFnbWVudCh0KSxuKTtlbHNle3ZhciByPW4uZmlyc3RDaGlsZCxvPW4ubGFzdENoaWxkOyFyfHxyPT09byYmIkJSIj09PXIubm9kZU5hbWU/ZS5kb20uc2V0SFRNTChuLHQpOnRtKGUsdCl9fShlLHQ9by5zZXJpYWxpemUodSksaSk7IWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5zY2hlbWEuZ2V0VGV4dElubGluZUVsZW1lbnRzKCkscj1lLmRvbTtpZih0KXt2YXIgbz1lLmdldEJvZHkoKSxpPW5ldyBEZihyKTtoci5lYWNoKHIuc2VsZWN0KCIqW2RhdGEtbWNlLWZyYWdtZW50XSIpLGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1lLnBhcmVudE5vZGU7dCYmdCE9PW87dD10LnBhcmVudE5vZGUpbltlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldJiZpLmNvbXBhcmUodCxlKSYmci5yZW1vdmUoZSwhMCl9KX19KGUsbSksZnVuY3Rpb24obixlKXt2YXIgdCxyLG8saSxhLHU9bi5kb20scz1uLnNlbGVjdGlvbjtpZihlKXtpZihuLnNlbGVjdGlvbi5zY3JvbGxJbnRvVmlldyhlKSx0PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1uLmdldEJvZHkoKTtlJiZlIT09dDtlPWUucGFyZW50Tm9kZSlpZigiZmFsc2UiPT09bi5kb20uZ2V0Q29udGVudEVkaXRhYmxlKGUpKXJldHVybiBlO3JldHVybiBudWxsfShlKSlyZXR1cm4gdS5yZW1vdmUoZSkscy5zZWxlY3QodCk7dmFyIGM9dS5jcmVhdGVSbmcoKTsoaT1lLnByZXZpb3VzU2libGluZykmJjM9PT1pLm5vZGVUeXBlPyhjLnNldFN0YXJ0KGksaS5ub2RlVmFsdWUubGVuZ3RoKSxyci5pZXx8KGE9ZS5uZXh0U2libGluZykmJjM9PT1hLm5vZGVUeXBlJiYoaS5hcHBlbmREYXRhKGEuZGF0YSksYS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGEpKSk6KGMuc2V0U3RhcnRCZWZvcmUoZSksYy5zZXRFbmRCZWZvcmUoZSkpO3I9dS5nZXRQYXJlbnQoZSx1LmlzQmxvY2spLHUucmVtb3ZlKGUpLHImJnUuaXNFbXB0eShyKSYmKG4uJChyKS5lbXB0eSgpLGMuc2V0U3RhcnQociwwKSxjLnNldEVuZChyLDApLGVtKHIpfHxyLmdldEF0dHJpYnV0ZSgiZGF0YS1tY2UtZnJhZ21lbnQiKXx8IShvPWZ1bmN0aW9uKGUpe3ZhciB0PW1zLmZyb21SYW5nZVN0YXJ0KGUpO2lmKHQ9SGMobi5nZXRCb2R5KCkpLm5leHQodCkpcmV0dXJuIHQudG9SYW5nZSgpfShjKSk/dS5hZGQocix1LmNyZWF0ZSgiYnIiLHsiZGF0YS1tY2UtYm9ndXMiOiIxIn0pKTooYz1vLHUucmVtb3ZlKHIpKSkscy5zZXRSbmcoYyl9fShlLGcuZ2V0KCJtY2VfbWFya2VyIikpLE49ZS5nZXRCb2R5KCksaHIuZWFjaChOLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIiksZnVuY3Rpb24oZSl7ZS5yZW1vdmVBdHRyaWJ1dGUoImRhdGEtbWNlLWZyYWdtZW50Iil9KSxFPWUuZG9tLGs9ZS5zZWxlY3Rpb24uZ2V0U3RhcnQoKSxSLmZyb20oRS5nZXRQYXJlbnQoaywidGQsdGgiKSkubWFwKE5lLmZyb21Eb20pLmVhY2goWmYpLGUuZmlyZSgiU2V0Q29udGVudCIscyksZS5hZGRWaXN1YWwoKX19LG9tPWZ1bmN0aW9uKGUpe3ZhciB0PWN0KGUpLmRvbSgpO3JldHVybiBlLmRvbSgpPT09dC5hY3RpdmVFbGVtZW50fSxpbT1mdW5jdGlvbihlKXt2YXIgdD1lIT09dW5kZWZpbmVkP2UuZG9tKCk6Vi5kb2N1bWVudDtyZXR1cm4gUi5mcm9tKHQuYWN0aXZlRWxlbWVudCkubWFwKE5lLmZyb21Eb20pfSxhbT1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm57c3RhcnQ6eChlKSxzb2Zmc2V0OngodCksZmluaXNoOngobiksZm9mZnNldDp4KHIpfX0sdW09aGQoW3tiZWZvcmU6WyJlbGVtZW50Il19LHtvbjpbImVsZW1lbnQiLCJvZmZzZXQiXX0se2FmdGVyOlsiZWxlbWVudCJdfV0pLHNtPSh1bS5iZWZvcmUsdW0ub24sdW0uYWZ0ZXIsZnVuY3Rpb24oZSl7cmV0dXJuIGUuZm9sZChkLGQsZCl9KSxjbT1oZChbe2RvbVJhbmdlOlsicm5nIl19LHtyZWxhdGl2ZTpbInN0YXJ0U2l0dSIsImZpbmlzaFNpdHUiXX0se2V4YWN0Olsic3RhcnQiLCJzb2Zmc2V0IiwiZmluaXNoIiwiZm9mZnNldCJdfV0pLGxtPXtkb21SYW5nZTpjbS5kb21SYW5nZSxyZWxhdGl2ZTpjbS5yZWxhdGl2ZSxleGFjdDpjbS5leGFjdCxleGFjdEZyb21SYW5nZTpmdW5jdGlvbihlKXtyZXR1cm4gY20uZXhhY3QoZS5zdGFydCgpLGUuc29mZnNldCgpLGUuZmluaXNoKCksZS5mb2Zmc2V0KCkpfSxnZXRXaW46ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5tYXRjaCh7ZG9tUmFuZ2U6ZnVuY3Rpb24oZSl7cmV0dXJuIE5lLmZyb21Eb20oZS5zdGFydENvbnRhaW5lcil9LHJlbGF0aXZlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHNtKGUpfSxleGFjdDpmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gZX19KTtyZXR1cm4gbHQodCl9LHJhbmdlOmFtfSxmbT1udCgpLmJyb3dzZXIsZG09ZnVuY3Rpb24oZSx0KXt2YXIgbj1PdCh0KT9lZih0KS5sZW5ndGg6aHQodCkubGVuZ3RoKzE7cmV0dXJuIG48ZT9uOmU8MD8wOmV9LG1tPWZ1bmN0aW9uKGUpe3JldHVybiBsbS5yYW5nZShlLnN0YXJ0KCksZG0oZS5zb2Zmc2V0KCksZS5zdGFydCgpKSxlLmZpbmlzaCgpLGRtKGUuZm9mZnNldCgpLGUuZmluaXNoKCkpKX0scG09ZnVuY3Rpb24oZSx0KXtyZXR1cm4hcXQodC5kb20oKSkmJihzdChlLHQpfHxhdChlLHQpKX0sZ209ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBwbSh0LGUuc3RhcnQoKSkmJnBtKHQsZS5maW5pc2goKSl9fSxobT1mdW5jdGlvbihlKXtyZXR1cm4hMD09PWUuaW5saW5lfHxmbS5pc0lFKCl9LHZtPWZ1bmN0aW9uKGUpe3JldHVybiBsbS5yYW5nZShOZS5mcm9tRG9tKGUuc3RhcnRDb250YWluZXIpLGUuc3RhcnRPZmZzZXQsTmUuZnJvbURvbShlLmVuZENvbnRhaW5lciksZS5lbmRPZmZzZXQpfSx5bT1mdW5jdGlvbihlKXt2YXIgdCxuLHI9bHQoZSk7cmV0dXJuIHQ9ci5kb20oKSwoKG49dC5nZXRTZWxlY3Rpb24oKSkmJjAhPT1uLnJhbmdlQ291bnQ/Ui5mcm9tKG4uZ2V0UmFuZ2VBdCgwKSk6Ui5ub25lKCkpLm1hcCh2bSkuZmlsdGVyKGdtKGUpKX0sYm09ZnVuY3Rpb24oZSl7dmFyIHQ9Vi5kb2N1bWVudC5jcmVhdGVSYW5nZSgpO3RyeXtyZXR1cm4gdC5zZXRTdGFydChlLnN0YXJ0KCkuZG9tKCksZS5zb2Zmc2V0KCkpLHQuc2V0RW5kKGUuZmluaXNoKCkuZG9tKCksZS5mb2Zmc2V0KCkpLFIuc29tZSh0KX1jYXRjaChuKXtyZXR1cm4gUi5ub25lKCl9fSxDbT1mdW5jdGlvbihlKXt2YXIgdD1obShlKT95bShOZS5mcm9tRG9tKGUuZ2V0Qm9keSgpKSk6Ui5ub25lKCk7ZS5ib29rbWFyaz10LmlzU29tZSgpP3Q6ZS5ib29rbWFya30sd209ZnVuY3Rpb24ocil7cmV0dXJuKHIuYm9va21hcms/ci5ib29rbWFyazpSLm5vbmUoKSkuYmluZChmdW5jdGlvbihlKXtyZXR1cm4gdD1OZS5mcm9tRG9tKHIuZ2V0Qm9keSgpKSxuPWUsUi5mcm9tKG4pLmZpbHRlcihnbSh0KSkubWFwKG1tKTt2YXIgdCxufSkuYmluZChibSl9LHhtPXtpc0VkaXRvclVJRWxlbWVudDpmdW5jdGlvbihlKXt2YXIgdD1lLmNsYXNzTmFtZS50b1N0cmluZygpO3JldHVybi0xIT09dC5pbmRleE9mKCJ0b3gtIil8fC0xIT09dC5pbmRleE9mKCJtY2UtIil9fSxTbT1mdW5jdGlvbihuLGUpe3ZhciB0LHI7bnQoKS5icm93c2VyLmlzSUUoKT8ocj1uKS5vbigiZm9jdXNvdXQiLGZ1bmN0aW9uKCl7Q20ocil9KToodD1lLG4ub24oIm1vdXNldXAgdG91Y2hlbmQiLGZ1bmN0aW9uKGUpe3QudGhyb3R0bGUoKX0pKSxuLm9uKCJrZXl1cCBOb2RlQ2hhbmdlIixmdW5jdGlvbihlKXt2YXIgdDsibm9kZWNoYW5nZSI9PT0odD1lKS50eXBlJiZ0LnNlbGVjdGlvbkNoYW5nZXx8Q20obil9KX0sTm09ZnVuY3Rpb24ocil7dmFyIG89VGEoZnVuY3Rpb24oKXtDbShyKX0sMCk7ci5vbigiaW5pdCIsZnVuY3Rpb24oKXt2YXIgZSx0LG47ci5pbmxpbmUmJihlPXIsdD1vLG49ZnVuY3Rpb24oKXt0LnRocm90dGxlKCl9LGdhLkRPTS5iaW5kKFYuZG9jdW1lbnQsIm1vdXNldXAiLG4pLGUub24oInJlbW92ZSIsZnVuY3Rpb24oKXtnYS5ET00udW5iaW5kKFYuZG9jdW1lbnQsIm1vdXNldXAiLG4pfSkpLFNtKHIsbyl9KSxyLm9uKCJyZW1vdmUiLGZ1bmN0aW9uKCl7by5jYW5jZWwoKX0pfSxFbT1nYS5ET00sa209ZnVuY3Rpb24odCxlKXt2YXIgbj10P3Quc2V0dGluZ3MuY3VzdG9tX3VpX3NlbGVjdG9yOiIiO3JldHVybiBudWxsIT09RW0uZ2V0UGFyZW50KGUsZnVuY3Rpb24oZSl7cmV0dXJuIHhtLmlzRWRpdG9yVUlFbGVtZW50KGUpfHwhIW4mJnQuZG9tLmlzKGUsbil9KX0sX209ZnVuY3Rpb24ocixlKXt2YXIgdD1lLmVkaXRvcjtObSh0KSx0Lm9uKCJmb2N1c2luIixmdW5jdGlvbigpe3ZhciBlPXIuZm9jdXNlZEVkaXRvcjtlIT09dGhpcyYmKGUmJmUuZmlyZSgiYmx1ciIse2ZvY3VzZWRFZGl0b3I6dGhpc30pLHIuc2V0QWN0aXZlKHRoaXMpLChyLmZvY3VzZWRFZGl0b3I9dGhpcykuZmlyZSgiZm9jdXMiLHtibHVycmVkRWRpdG9yOmV9KSx0aGlzLmZvY3VzKCEwKSl9KSx0Lm9uKCJmb2N1c291dCIsZnVuY3Rpb24oKXt2YXIgdD10aGlzO1huLnNldEVkaXRvclRpbWVvdXQodCxmdW5jdGlvbigpe3ZhciBlPXIuZm9jdXNlZEVkaXRvcjtrbSh0LGZ1bmN0aW9uKCl7dHJ5e3JldHVybiBWLmRvY3VtZW50LmFjdGl2ZUVsZW1lbnR9Y2F0Y2goZSl7cmV0dXJuIFYuZG9jdW1lbnQuYm9keX19KCkpfHxlIT09dHx8KHQuZmlyZSgiYmx1ciIse2ZvY3VzZWRFZGl0b3I6bnVsbH0pLHIuZm9jdXNlZEVkaXRvcj1udWxsKX0pfSksU2Z8fChTZj1mdW5jdGlvbihlKXt2YXIgdCxuPXIuYWN0aXZlRWRpdG9yO3Q9ZS50YXJnZXQsbiYmdC5vd25lckRvY3VtZW50PT09Vi5kb2N1bWVudCYmKHQ9PT1WLmRvY3VtZW50LmJvZHl8fGttKG4sdCl8fHIuZm9jdXNlZEVkaXRvciE9PW58fChuLmZpcmUoImJsdXIiLHtmb2N1c2VkRWRpdG9yOm51bGx9KSxyLmZvY3VzZWRFZGl0b3I9bnVsbCkpfSxFbS5iaW5kKFYuZG9jdW1lbnQsImZvY3VzaW4iLFNmKSl9LFJtPWZ1bmN0aW9uKGUsdCl7ZS5mb2N1c2VkRWRpdG9yPT09dC5lZGl0b3ImJihlLmZvY3VzZWRFZGl0b3I9bnVsbCksZS5hY3RpdmVFZGl0b3J8fChFbS51bmJpbmQoVi5kb2N1bWVudCwiZm9jdXNpbiIsU2YpLFNmPW51bGwpfSxUbT1mdW5jdGlvbih0LGUpe3JldHVybigobj1lKS5jb2xsYXBzZWQ/Ui5mcm9tKEh1KG4uc3RhcnRDb250YWluZXIsbi5zdGFydE9mZnNldCkpLm1hcChOZS5mcm9tRG9tKTpSLm5vbmUoKSkuYmluZChmdW5jdGlvbihlKXtyZXR1cm4gQXIoZSk/Ui5zb21lKGUpOiExPT09c3QodCxlKT9SLnNvbWUodCk6Ui5ub25lKCl9KTt2YXIgbn0sQW09ZnVuY3Rpb24odCxlKXtUbShOZS5mcm9tRG9tKHQuZ2V0Qm9keSgpKSxlKS5iaW5kKGZ1bmN0aW9uKGUpe3JldHVybiBaYyhlLmRvbSgpKX0pLmZvbGQoZnVuY3Rpb24oKXt0LnNlbGVjdGlvbi5ub3JtYWxpemUoKX0sZnVuY3Rpb24oZSl7cmV0dXJuIHQuc2VsZWN0aW9uLnNldFJuZyhlLnRvUmFuZ2UoKSl9KX0sRG09ZnVuY3Rpb24oZSl7aWYoZS5zZXRBY3RpdmUpdHJ5e2Uuc2V0QWN0aXZlKCl9Y2F0Y2godCl7ZS5mb2N1cygpfWVsc2UgZS5mb2N1cygpfSxPbT1mdW5jdGlvbihlKXtyZXR1cm4gb20oZSl8fGltKGN0KHQ9ZSkpLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gdC5kb20oKS5jb250YWlucyhlLmRvbSgpKX0pLmlzU29tZSgpO3ZhciB0fSxCbT1mdW5jdGlvbihyKXtyZXR1cm4gaW0oKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIHQ9ZS5kb20oKSwhKChuPXQuY2xhc3NMaXN0KSE9PXVuZGVmaW5lZCYmKG4uY29udGFpbnMoInRveC1lZGl0LWFyZWEiKXx8bi5jb250YWlucygidG94LWVkaXQtYXJlYV9faWZyYW1lIil8fG4uY29udGFpbnMoIm1jZS1jb250ZW50LWJvZHkiKSkpJiZrbShyLGUuZG9tKCkpO3ZhciB0LG59KS5pc1NvbWUoKX0sUG09ZnVuY3Rpb24oZSl7cmV0dXJuIGUuaW5saW5lPyhuPWUuZ2V0Qm9keSgpKSYmT20oTmUuZnJvbURvbShuKSk6KHQ9ZSkuaWZyYW1lRWxlbWVudCYmb20oTmUuZnJvbURvbSh0LmlmcmFtZUVsZW1lbnQpKTt2YXIgdCxufSxMbT1mdW5jdGlvbih0KXt2YXIgZT10LnNlbGVjdGlvbixuPXQuZ2V0Qm9keSgpLHI9ZS5nZXRSbmcoKTt0LnF1aXJrcy5yZWZyZXNoQ29udGVudEVkaXRhYmxlKCksdC5ib29rbWFyayE9PXVuZGVmaW5lZCYmITE9PT1QbSh0KSYmd20odCkuZWFjaChmdW5jdGlvbihlKXt0LnNlbGVjdGlvbi5zZXRSbmcoZSkscj1lfSk7dmFyIG8saSxhPShvPXQsaT1lLmdldE5vZGUoKSxvLmRvbS5nZXRQYXJlbnQoaSxmdW5jdGlvbihlKXtyZXR1cm4idHJ1ZSI9PT1vLmRvbS5nZXRDb250ZW50RWRpdGFibGUoZSl9KSk7aWYodC4kLmNvbnRhaW5zKG4sYSkpcmV0dXJuIERtKGEpLEFtKHQsciksdm9pZCBJbSh0KTt0LmlubGluZXx8KHJyLm9wZXJhfHxEbShuKSx0LmdldFdpbigpLmZvY3VzKCkpLChyci5nZWNrb3x8dC5pbmxpbmUpJiYoRG0obiksQW0odCxyKSksSW0odCl9LEltPWZ1bmN0aW9uKGUpe3JldHVybiBlLmVkaXRvck1hbmFnZXIuc2V0QWN0aXZlKGUpfSxNbT1mdW5jdGlvbihlLHQpe3QoZSksZS5maXJzdENoaWxkJiZNbShlLmZpcnN0Q2hpbGQsdCksZS5uZXh0JiZNbShlLm5leHQsdCl9LEZtPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1mdW5jdGlvbihlLG4sdCl7dmFyIHI9e30sbz17fSxpPVtdO2Zvcih2YXIgYSBpbiB0LmZpcnN0Q2hpbGQmJk1tKHQuZmlyc3RDaGlsZCxmdW5jdGlvbih0KXt6KGUsZnVuY3Rpb24oZSl7ZS5uYW1lPT09dC5uYW1lJiYocltlLm5hbWVdP3JbZS5uYW1lXS5ub2Rlcy5wdXNoKHQpOnJbZS5uYW1lXT17ZmlsdGVyOmUsbm9kZXM6W3RdfSl9KSx6KG4sZnVuY3Rpb24oZSl7InN0cmluZyI9PXR5cGVvZiB0LmF0dHIoZS5uYW1lKSYmKG9bZS5uYW1lXT9vW2UubmFtZV0ubm9kZXMucHVzaCh0KTpvW2UubmFtZV09e2ZpbHRlcjplLG5vZGVzOlt0XX0pfSl9KSxyKXIuaGFzT3duUHJvcGVydHkoYSkmJmkucHVzaChyW2FdKTtmb3IodmFyIHUgaW4gbylvLmhhc093blByb3BlcnR5KHUpJiZpLnB1c2gob1t1XSk7cmV0dXJuIGl9KGUsdCxuKTt6KHIsZnVuY3Rpb24odCl7eih0LmZpbHRlci5jYWxsYmFja3MsZnVuY3Rpb24oZSl7ZSh0Lm5vZGVzLHQuZmlsdGVyLm5hbWUse30pfSl9KX0sVW09ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBkZn0sem09ZnVuY3Rpb24oZSx0KXt2YXIgcjtlLmRvbS5zZXRIVE1MKGUuZ2V0Qm9keSgpLHQpLFBtKHI9ZSkmJlpjKHIuZ2V0Qm9keSgpKS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PWUuZ2V0Tm9kZSgpLG49R3QodCk/WmModCkuZ2V0T3IoZSk6ZTtyLnNlbGVjdGlvbi5zZXRSbmcobi50b1JhbmdlKCkpfSl9LGptPWZ1bmN0aW9uKHUscyxjKXtyZXR1cm4gYy5mb3JtYXQ9Yy5mb3JtYXQ/Yy5mb3JtYXQ6Imh0bWwiLGMuc2V0PSEwLGMuY29udGVudD1VbShzKT8iIjpzLFVtKHMpfHxjLm5vX2V2ZW50c3x8KHUuZmlyZSgiQmVmb3JlU2V0Q29udGVudCIsYykscz1jLmNvbnRlbnQpLFIuZnJvbSh1LmdldEJvZHkoKSkuZm9sZCh4KHMpLGZ1bmN0aW9uKGUpe3JldHVybiBVbShzKT9mdW5jdGlvbihlLHQsbixyKXtGbShlLnBhcnNlci5nZXROb2RlRmlsdGVycygpLGUucGFyc2VyLmdldEF0dHJpYnV0ZUZpbHRlcnMoKSxuKTt2YXIgbz1oZih7dmFsaWRhdGU6ZS52YWxpZGF0ZX0sZS5zY2hlbWEpLnNlcmlhbGl6ZShuKTtyZXR1cm4gci5jb250ZW50PU9yKE5lLmZyb21Eb20odCkpP286aHIudHJpbShvKSx6bShlLHIuY29udGVudCksci5ub19ldmVudHN8fGUuZmlyZSgiU2V0Q29udGVudCIsciksbn0odSxlLHMsYyk6KHQ9dSxuPWUsbz1jLDA9PT0ocj1zKS5sZW5ndGh8fC9eXHMrJC8udGVzdChyKT8oYT0nPGJyIGRhdGEtbWNlLWJvZ3VzPSIxIj4nLCJUQUJMRSI9PT1uLm5vZGVOYW1lP3I9Ijx0cj48dGQ+IithKyI8L3RkPjwvdHI+IjovXihVTHxPTCkkLy50ZXN0KG4ubm9kZU5hbWUpJiYocj0iPGxpPiIrYSsiPC9saT4iKSxyPShpPUhzKHQpKSYmdC5zY2hlbWEuaXNWYWxpZENoaWxkKG4ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxpLnRvTG93ZXJDYXNlKCkpPyhyPWEsdC5kb20uY3JlYXRlSFRNTChpLHQuc2V0dGluZ3MuZm9yY2VkX3Jvb3RfYmxvY2tfYXR0cnMscikpOnJ8fCc8YnIgZGF0YS1tY2UtYm9ndXM9IjEiPicsem0odCxyKSx0LmZpcmUoIlNldENvbnRlbnQiLG8pKTooInJhdyIhPT1vLmZvcm1hdCYmKHI9aGYoe3ZhbGlkYXRlOnQudmFsaWRhdGV9LHQuc2NoZW1hKS5zZXJpYWxpemUodC5wYXJzZXIucGFyc2Uocix7aXNSb290Q29udGVudDohMCxpbnNlcnQ6ITB9KSkpLG8uY29udGVudD1PcihOZS5mcm9tRG9tKG4pKT9yOmhyLnRyaW0ociksem0odCxvLmNvbnRlbnQpLG8ubm9fZXZlbnRzfHx0LmZpcmUoIlNldENvbnRlbnQiLG8pKSxvLmNvbnRlbnQpO3ZhciB0LG4scixvLGksYX0pfSxIbT1mdW5jdGlvbihlLHQpe3JldHVybiBlLnNwbGl0VGV4dCh0KX0sVm09ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zdGFydENvbnRhaW5lcixuPWUuc3RhcnRPZmZzZXQscj1lLmVuZENvbnRhaW5lcixvPWUuZW5kT2Zmc2V0O3JldHVybiB0PT09ciYmWnQodCk/MDxuJiZuPHQubm9kZVZhbHVlLmxlbmd0aCYmKHQ9KHI9SG0odCxuKSkucHJldmlvdXNTaWJsaW5nLG48bz8odD1yPUhtKHIsby09bikucHJldmlvdXNTaWJsaW5nLG89ci5ub2RlVmFsdWUubGVuZ3RoLG49MCk6bz0wKTooWnQodCkmJjA8biYmbjx0Lm5vZGVWYWx1ZS5sZW5ndGgmJih0PUhtKHQsbiksbj0wKSxadChyKSYmMDxvJiZvPHIubm9kZVZhbHVlLmxlbmd0aCYmKG89KHI9SG0ocixvKS5wcmV2aW91c1NpYmxpbmcpLm5vZGVWYWx1ZS5sZW5ndGgpKSx7c3RhcnRDb250YWluZXI6dCxzdGFydE9mZnNldDpuLGVuZENvbnRhaW5lcjpyLGVuZE9mZnNldDpvfX0scW09d2wsJG09ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUuZm9ybWF0dGVyLmdldChuKTtpZihyKWZvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKWlmKCExPT09cltvXS5pbmhlcml0JiZlLmRvbS5pcyh0LHJbb10uc2VsZWN0b3IpKXJldHVybiEwO3JldHVybiExfSxXbT1mdW5jdGlvbih0LGUsbixyKXt2YXIgbz10LmRvbS5nZXRSb290KCk7cmV0dXJuIGUhPT1vJiYoZT10LmRvbS5nZXRQYXJlbnQoZSxmdW5jdGlvbihlKXtyZXR1cm4hISRtKHQsZSxuKXx8KGUucGFyZW50Tm9kZT09PW98fCEhWW0odCxlLG4sciwhMCkpfSksWW0odCxlLG4scikpfSxLbT1mdW5jdGlvbihlLHQsbil7cmV0dXJuISFxbSh0LG4uaW5saW5lKXx8KCEhcW0odCxuLmJsb2NrKXx8KG4uc2VsZWN0b3I/MT09PXQubm9kZVR5cGUmJmUuaXModCxuLnNlbGVjdG9yKTp2b2lkIDApKX0sWG09ZnVuY3Rpb24oZSx0LG4scixvLGkpe3ZhciBhLHUscyxjPW5bcl07aWYobi5vbm1hdGNoKXJldHVybiBuLm9ubWF0Y2godCxuLHIpO2lmKGMpaWYoInVuZGVmaW5lZCI9PXR5cGVvZiBjLmxlbmd0aCl7Zm9yKGEgaW4gYylpZihjLmhhc093blByb3BlcnR5KGEpKXtpZih1PSJhdHRyaWJ1dGVzIj09PXI/ZS5nZXRBdHRyaWIodCxhKTpTbChlLHQsYSksbyYmIXUmJiFuLmV4YWN0KXJldHVybjtpZigoIW98fG4uZXhhY3QpJiYhcW0odSx4bChlLENsKGNbYV0saSksYSkpKXJldHVybn19ZWxzZSBmb3Iocz0wO3M8Yy5sZW5ndGg7cysrKWlmKCJhdHRyaWJ1dGVzIj09PXI/ZS5nZXRBdHRyaWIodCxjW3NdKTpTbChlLHQsY1tzXSkpcmV0dXJuIG47cmV0dXJuIG59LFltPWZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFyIGksYSx1LHMsYz1lLmZvcm1hdHRlci5nZXQobiksbD1lLmRvbTtpZihjJiZ0KWZvcihhPTA7YTxjLmxlbmd0aDthKyspaWYoaT1jW2FdLEttKGUuZG9tLHQsaSkmJlhtKGwsdCxpLCJhdHRyaWJ1dGVzIixvLHIpJiZYbShsLHQsaSwic3R5bGVzIixvLHIpKXtpZihzPWkuY2xhc3Nlcylmb3IodT0wO3U8cy5sZW5ndGg7dSsrKWlmKCFlLmRvbS5oYXNDbGFzcyh0LHNbdV0pKXJldHVybjtyZXR1cm4gaX19LEdtPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvO3JldHVybiByP1dtKGUscix0LG4pOihyPWUuc2VsZWN0aW9uLmdldE5vZGUoKSwhIVdtKGUscix0LG4pfHwhKChvPWUuc2VsZWN0aW9uLmdldFN0YXJ0KCkpPT09cnx8IVdtKGUsbyx0LG4pKSl9LEptPWZ1bmN0aW9uKHIsbyxpKXt2YXIgYT1bXSx1PXt9LGU9ci5zZWxlY3Rpb24uZ2V0U3RhcnQoKTtyZXR1cm4gci5kb20uZ2V0UGFyZW50KGUsZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDxvLmxlbmd0aDt0Kyspe3ZhciBuPW9bdF07IXVbbl0mJlltKHIsZSxuLGkpJiYodVtuXT0hMCxhLnB1c2gobikpfX0sci5kb20uZ2V0Um9vdCgpKSxhfSxRbT1mdW5jdGlvbihlLHQpe3ZhciBuLHIsbyxpLGEsdT1lLmZvcm1hdHRlci5nZXQodCkscz1lLmRvbTtpZih1KWZvcihuPWUuc2VsZWN0aW9uLmdldFN0YXJ0KCkscj1FbChzLG4pLGk9dS5sZW5ndGgtMTswPD1pO2ktLSl7aWYoIShhPXVbaV0uc2VsZWN0b3IpfHx1W2ldLmRlZmF1bHRCbG9jaylyZXR1cm4hMDtmb3Iobz1yLmxlbmd0aC0xOzA8PW87by0tKWlmKHMuaXMocltvXSxhKSlyZXR1cm4hMH1yZXR1cm4hMX0sWm09ZnVuY3Rpb24obyxpLGUpe3JldHVybiBXKGUsZnVuY3Rpb24oZSx0KXt2YXIgbixyPShuPXQsRihvLmZvcm1hdHRlci5nZXQobiksZnVuY3Rpb24odCl7dmFyIG49ZnVuY3Rpb24oZSl7cmV0dXJuIDE8ZS5sZW5ndGgmJiIlIj09PWUuY2hhckF0KDApfTtyZXR1cm4gRihbInN0eWxlcyIsImF0dHJpYnV0ZXMiXSxmdW5jdGlvbihlKXtyZXR1cm4gZGUodCxlKS5leGlzdHMoZnVuY3Rpb24oZSl7dmFyIHQ9ayhlKT9lOmZlKGUpO3JldHVybiBGKHQsbil9KX0pfSkpO3JldHVybiBvLmZvcm1hdHRlci5tYXRjaE5vZGUoaSx0LHt9LHIpP2UuY29uY2F0KFt0XSk6ZX0sW10pfSxlcD1zdSx0cD0iX21jZV9jYXJldCIsbnA9ZnVuY3Rpb24oZSl7cmV0dXJuIDA8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdO2U7KXtpZigzPT09ZS5ub2RlVHlwZSYmZS5ub2RlVmFsdWUhPT1lcHx8MTxlLmNoaWxkTm9kZXMubGVuZ3RoKXJldHVybltdOzE9PT1lLm5vZGVUeXBlJiZ0LnB1c2goZSksZT1lLmZpcnN0Q2hpbGR9cmV0dXJuIHR9KGUpLmxlbmd0aH0scnA9ZnVuY3Rpb24oZSl7aWYoZSl7dmFyIHQ9bmV3IHJhKGUsZSk7Zm9yKGU9dC5jdXJyZW50KCk7ZTtlPXQubmV4dCgpKWlmKFp0KGUpKXJldHVybiBlfXJldHVybiBudWxsfSxvcD1mdW5jdGlvbihlKXt2YXIgdD1OZS5mcm9tVGFnKCJzcGFuIik7cmV0dXJuIGxuKHQse2lkOnRwLCJkYXRhLW1jZS1ib2d1cyI6IjEiLCJkYXRhLW1jZS10eXBlIjoiZm9ybWF0LWNhcmV0In0pLGUmJlN0KHQsTmUuZnJvbVRleHQoZXApKSx0fSxpcD1mdW5jdGlvbihlLHQsbil7dm9pZCAwPT09biYmKG49ITApO3ZhciByLG89ZS5kb20saT1lLnNlbGVjdGlvbjtpZihucCh0KSlnZChlLCExLE5lLmZyb21Eb20odCksbik7ZWxzZXt2YXIgYT1pLmdldFJuZygpLHU9by5nZXRQYXJlbnQodCxvLmlzQmxvY2spLHM9YS5zdGFydENvbnRhaW5lcixjPWEuc3RhcnRPZmZzZXQsbD1hLmVuZENvbnRhaW5lcixmPWEuZW5kT2Zmc2V0LGQ9KChyPXJwKHQpKSYmci5ub2RlVmFsdWUuY2hhckF0KDApPT09ZXAmJnIuZGVsZXRlRGF0YSgwLDEpLHIpO28ucmVtb3ZlKHQsITApLHM9PT1kJiYwPGMmJmEuc2V0U3RhcnQoZCxjLTEpLGw9PT1kJiYwPGYmJmEuc2V0RW5kKGQsZi0xKSx1JiZvLmlzRW1wdHkodSkmJlFmKE5lLmZyb21Eb20odSkpLGkuc2V0Um5nKGEpfX0sYXA9ZnVuY3Rpb24oZSx0LG4pe3ZvaWQgMD09PW4mJihuPSEwKTt2YXIgcj1lLmRvbSxvPWUuc2VsZWN0aW9uO2lmKHQpaXAoZSx0LG4pO2Vsc2UgaWYoISh0PUZzKGUuZ2V0Qm9keSgpLG8uZ2V0U3RhcnQoKSkpKWZvcig7dD1yLmdldCh0cCk7KWlwKGUsdCwhMSl9LHVwPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuYXBwZW5kQ2hpbGQodCksdH0sc3A9ZnVuY3Rpb24oZSx0KXt2YXIgbj0kKGUsZnVuY3Rpb24oZSx0KXtyZXR1cm4gdXAoZSx0LmNsb25lTm9kZSghMSkpfSx0KTtyZXR1cm4gdXAobixuLm93bmVyRG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZXApKX0sY3A9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG8saSxhLHUscyxjLGwsZixkPWUuZG9tLG09ZS5zZWxlY3Rpb24scD1bXSxnPW0uZ2V0Um5nKCksaD1nLnN0YXJ0Q29udGFpbmVyLHY9Zy5zdGFydE9mZnNldDtmb3IoMz09PShpPWgpLm5vZGVUeXBlJiYodiE9PWgubm9kZVZhbHVlLmxlbmd0aCYmKG89ITApLGk9aS5wYXJlbnROb2RlKTtpOyl7aWYoWW0oZSxpLHQsbixyKSl7YT1pO2JyZWFrfWkubmV4dFNpYmxpbmcmJihvPSEwKSxwLnB1c2goaSksaT1pLnBhcmVudE5vZGV9aWYoYSlpZihvKXt2YXIgeT1tLmdldEJvb2ttYXJrKCk7Zy5jb2xsYXBzZSghMCk7dmFyIGI9VWwoZSxnLGUuZm9ybWF0dGVyLmdldCh0KSwhMCk7Yj1WbShiKSxlLmZvcm1hdHRlci5yZW1vdmUodCxuLGIsciksbS5tb3ZlVG9Cb29rbWFyayh5KX1lbHNle3ZhciBDPUZzKGUuZ2V0Qm9keSgpLGEpLHc9b3AoITEpLmRvbSgpO3M9dyxjPW51bGwhPT1DP0M6YSxsPSh1PWUpLmRvbSwoZj1sLmdldFBhcmVudChjLE4odmwsdSkpKSYmbC5pc0VtcHR5KGYpP2MucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQocyxjKTooSmYoTmUuZnJvbURvbShjKSksbC5pc0VtcHR5KGMpP2MucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQocyxjKTpsLmluc2VydEFmdGVyKHMsYykpO3ZhciB4PWZ1bmN0aW9uKHQsZSxuLHIsbyxpKXt2YXIgYT10LmZvcm1hdHRlcix1PXQuZG9tLHM9SChuZShhLmdldCgpKSxmdW5jdGlvbihlKXtyZXR1cm4icmVtb3ZlZm9ybWF0IiE9PWUmJmUhPT1yfSksYz1abSh0LG4scyk7aWYoMDxIKGMsZnVuY3Rpb24oZSl7cmV0dXJuIWtsKHQsZSxyKX0pLmxlbmd0aCl7dmFyIGw9bi5jbG9uZU5vZGUoITEpO3JldHVybiB1LmFkZChlLGwpLGEucmVtb3ZlKHIsbyxsLGkpLHUucmVtb3ZlKGwpLFIuc29tZShsKX1yZXR1cm4gUi5ub25lKCl9KGUsdyxhLHQsbixyKSxTPXNwKHAuY29uY2F0KHgudG9BcnJheSgpKSx3KTtpcChlLEMsITEpLG0uc2V0Q3Vyc29yTG9jYXRpb24oUywxKSxkLmlzRW1wdHkoYSkmJmQucmVtb3ZlKGEpfX0sbHA9ZnVuY3Rpb24oaSl7aS5vbigibW91c2V1cCBrZXlkb3duIixmdW5jdGlvbihlKXt2YXIgdCxuLHIsbzt0PWksbj1lLmtleUNvZGUscj10LnNlbGVjdGlvbixvPXQuZ2V0Qm9keSgpLGFwKHQsbnVsbCwhMSksOCE9PW4mJjQ2IT09bnx8IXIuaXNDb2xsYXBzZWQoKXx8ci5nZXRTdGFydCgpLmlubmVySFRNTCE9PWVwfHxhcCh0LEZzKG8sci5nZXRTdGFydCgpKSksMzchPT1uJiYzOSE9PW58fGFwKHQsRnMobyxyLmdldFN0YXJ0KCkpKX0pfSxmcD1mdW5jdGlvbihlLHQpe3JldHVybiBlLnNjaGVtYS5nZXRUZXh0SW5saW5lRWxlbWVudHMoKS5oYXNPd25Qcm9wZXJ0eShSdCh0KSkmJiFNcyh0LmRvbSgpKSYmIVl0KHQuZG9tKCkpfSxkcD17fSxtcD11cixwcD1pcjtFZj1mdW5jdGlvbihlKXt2YXIgdCxuLHI9ZS5zZWxlY3Rpb24uZ2V0Um5nKCk7dD1XdChbInByZSJdKSxyLmNvbGxhcHNlZHx8KG49ZS5zZWxlY3Rpb24uZ2V0U2VsZWN0ZWRCbG9ja3MoKSxwcChtcChtcChuLHQpLGZ1bmN0aW9uKGUpe3JldHVybiB0KGUucHJldmlvdXNTaWJsaW5nKSYmLTEhPT1zcihuLGUucHJldmlvdXNTaWJsaW5nKX0pLGZ1bmN0aW9uKGUpe3ZhciB0LG47dD1lLnByZXZpb3VzU2libGluZyxuYShuPWUpLnJlbW92ZSgpLG5hKHQpLmFwcGVuZCgiPGJyPjxicj4iKS5hcHBlbmQobi5jaGlsZE5vZGVzKX0pKX0sZHBbTmY9InByZSJdfHwoZHBbTmZdPVtdKSxkcFtOZl0ucHVzaChFZik7dmFyIGdwLGhwLHZwPS9eKHNyY3xocmVmfHN0eWxlKSQvLHlwPWhyLmVhY2gsYnA9d2wsQ3A9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlLmlzQ2hpbGRPZih0LG4pJiZ0IT09biYmIWUuaXNCbG9jayhuKX0sd3A9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLG87aWYocj10W24/InN0YXJ0Q29udGFpbmVyIjoiZW5kQ29udGFpbmVyIl0sbz10W24/InN0YXJ0T2Zmc2V0IjoiZW5kT2Zmc2V0Il0sJHQocikpe3ZhciBpPXIuY2hpbGROb2Rlcy5sZW5ndGgtMTshbiYmbyYmby0tLHI9ci5jaGlsZE5vZGVzW2k8bz9pOm9dfXJldHVybiBadChyKSYmbiYmbz49ci5ub2RlVmFsdWUubGVuZ3RoJiYocj1uZXcgcmEocixlLmdldEJvZHkoKSkubmV4dCgpfHxyKSxadChyKSYmIW4mJjA9PT1vJiYocj1uZXcgcmEocixlLmdldEJvZHkoKSkucHJldigpfHxyKSxyfSx4cD1mdW5jdGlvbihlLHQsbixyKXt2YXIgbz1lLmNyZWF0ZShuLHIpO3JldHVybiB0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG8sdCksby5hcHBlbmRDaGlsZCh0KSxvfSxTcD1mdW5jdGlvbihlLHQsbixyLG8pe3ZhciBpPU5lLmZyb21Eb20odCksYT1OZS5mcm9tRG9tKGUuY3JlYXRlKHIsbykpLHU9KG4/Z3Q6cHQpKGkpO3JldHVybiBOdChhLHUpLG4/KEN0KGksYSkseHQoYSxpKSk6KHd0KGksYSksU3QoYSxpKSksYS5kb20oKX0sTnA9ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuISh0PWhsKHQsbixyKSl8fCJCUiI9PT10Lm5vZGVOYW1lfHxlLmlzQmxvY2sodCl9LEVwPWZ1bmN0aW9uKGUscixvLHQsaSl7dmFyIG4sYSx1LHMsYyxsPWUuZG9tO2lmKHU9bCwhKGJwKHM9dCwoYz1yKS5pbmxpbmUpfHxicChzLGMuYmxvY2spfHxjLnNlbGVjdG9yJiYoJHQocykmJnUuaXMocyxjLnNlbGVjdG9yKSl8fChhPXQsci5saW5rcyYmIkEiPT09YS5ub2RlTmFtZSkpKXJldHVybiExO3ZhciBmLGQsbSxwLGcsaCx2LHk9dDtpZihyLmlubGluZSYmImFsbCI9PT1yLnJlbW92ZSYmayhyLnByZXNlcnZlX2F0dHJpYnV0ZXMpKXt2YXIgYj1IKGwuZ2V0QXR0cmlicyh5KSxmdW5jdGlvbihlKXtyZXR1cm4gTShyLnByZXNlcnZlX2F0dHJpYnV0ZXMsZS5uYW1lLnRvTG93ZXJDYXNlKCkpfSk7aWYobC5yZW1vdmVBbGxBdHRyaWJzKHkpLHooYixmdW5jdGlvbihlKXtyZXR1cm4gbC5zZXRBdHRyaWIoeSxlLm5hbWUsZS52YWx1ZSl9KSwwPGIubGVuZ3RoKXJldHVybiBlLmRvbS5yZW5hbWUodCwic3BhbiIpLCEwfWlmKCJhbGwiIT09ci5yZW1vdmUpe3lwKHIuc3R5bGVzLGZ1bmN0aW9uKGUsdCl7ZT14bChsLENsKGUsbyksdCksIm51bWJlciI9PXR5cGVvZiB0JiYodD1lLGk9bnVsbCksIXIucmVtb3ZlX3NpbWlsYXImJmkmJiFicChTbChsLGksdCksZSl8fGwuc2V0U3R5bGUoeSx0LCIiKSxuPSEwfSksbiYmIiI9PT1sLmdldEF0dHJpYih5LCJzdHlsZSIpJiYoeS5yZW1vdmVBdHRyaWJ1dGUoInN0eWxlIikseS5yZW1vdmVBdHRyaWJ1dGUoImRhdGEtbWNlLXN0eWxlIikpLHlwKHIuYXR0cmlidXRlcyxmdW5jdGlvbihlLHQpe3ZhciBuO2lmKGU9Q2woZSxvKSwibnVtYmVyIj09dHlwZW9mIHQmJih0PWUsaT1udWxsKSxyLnJlbW92ZV9zaW1pbGFyfHwhaXx8YnAobC5nZXRBdHRyaWIoaSx0KSxlKSl7aWYoImNsYXNzIj09PXQmJihlPWwuZ2V0QXR0cmliKHksdCkpJiYobj0iIix6KGUuc3BsaXQoL1xzKy8pLGZ1bmN0aW9uKGUpey9tY2VcLVx3Ky8udGVzdChlKSYmKG4rPShuPyIgIjoiIikrZSl9KSxuKSlyZXR1cm4gdm9pZCBsLnNldEF0dHJpYih5LHQsbik7ImNsYXNzIj09PXQmJnkucmVtb3ZlQXR0cmlidXRlKCJjbGFzc05hbWUiKSx2cC50ZXN0KHQpJiZ5LnJlbW92ZUF0dHJpYnV0ZSgiZGF0YS1tY2UtIit0KSx5LnJlbW92ZUF0dHJpYnV0ZSh0KX19KSx5cChyLmNsYXNzZXMsZnVuY3Rpb24oZSl7ZT1DbChlLG8pLGkmJiFsLmhhc0NsYXNzKGksZSl8fGwucmVtb3ZlQ2xhc3MoeSxlKX0pO2Zvcih2YXIgQz1sLmdldEF0dHJpYnMoeSksdz0wO3c8Qy5sZW5ndGg7dysrKXt2YXIgeD1DW3ddLm5vZGVOYW1lO2lmKDAhPT14LmluZGV4T2YoIl8iKSYmMCE9PXguaW5kZXhPZigiZGF0YS0iKSlyZXR1cm4hMX19cmV0dXJuIm5vbmUiIT09ci5yZW1vdmU/KGY9ZSxtPXIsZz0oZD15KS5wYXJlbnROb2RlLGg9Zi5kb20sdj1IcyhmKSxtLmJsb2NrJiYodj9nPT09aC5nZXRSb290KCkmJihtLmxpc3RfYmxvY2smJmJwKGQsbS5saXN0X2Jsb2NrKXx8eih0ZShkLmNoaWxkTm9kZXMpLGZ1bmN0aW9uKGUpe3lsKGYsdixlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpP3A/cC5hcHBlbmRDaGlsZChlKToocD14cChoLGUsdiksaC5zZXRBdHRyaWJzKHAsZi5zZXR0aW5ncy5mb3JjZWRfcm9vdF9ibG9ja19hdHRycykpOnA9MH0pKTpoLmlzQmxvY2soZCkmJiFoLmlzQmxvY2soZykmJihOcChoLGQsITEpfHxOcChoLGQuZmlyc3RDaGlsZCwhMCwhMCl8fGQuaW5zZXJ0QmVmb3JlKGguY3JlYXRlKCJiciIpLGQuZmlyc3RDaGlsZCksTnAoaCxkLCEwKXx8TnAoaCxkLmxhc3RDaGlsZCwhMSwhMCl8fGQuYXBwZW5kQ2hpbGQoaC5jcmVhdGUoImJyIikpKSksbS5zZWxlY3RvciYmbS5pbmxpbmUmJiFicChtLmlubGluZSxkKXx8aC5yZW1vdmUoZCwhMCksITApOnZvaWQgMH0sa3A9ZnVuY3Rpb24ocyxjLGwsZSxmKXt2YXIgZD1zLmZvcm1hdHRlci5nZXQoYyksbT1kWzBdLGk9ITAsdT1zLmRvbSx0PXMuc2VsZWN0aW9uLHA9ZnVuY3Rpb24oZSl7dmFyIG4sdCxyLG8saSxhLHU9KHQ9ZSxyPWMsbz1sLGk9Zix6KEVsKChuPXMpLmRvbSx0LnBhcmVudE5vZGUpLnJldmVyc2UoKSxmdW5jdGlvbihlKXtpZighYSYmIl9zdGFydCIhPT1lLmlkJiYiX2VuZCIhPT1lLmlkKXt2YXIgdD1ZbShuLGUscixvLGkpO3QmJiExIT09dC5zcGxpdCYmKGE9ZSl9fSksYSk7cmV0dXJuIGZ1bmN0aW9uKGUsdCxuLHIsbyxpLGEsdSl7dmFyIHMsYyxsLGY9ZS5kb207aWYobil7Zm9yKHZhciBkPW4ucGFyZW50Tm9kZSxtPXIucGFyZW50Tm9kZTttJiZtIT09ZDttPW0ucGFyZW50Tm9kZSl7cz1mLmNsb25lKG0sITEpO2Zvcih2YXIgcD0wO3A8dC5sZW5ndGg7cCsrKWlmKEVwKGUsdFtwXSx1LHMscykpe3M9MDticmVha31zJiYoYyYmcy5hcHBlbmRDaGlsZChjKSxsPWx8fHMsYz1zKX0haXx8YS5taXhlZCYmZi5pc0Jsb2NrKG4pfHwocj1mLnNwbGl0KG4scikpLGMmJihvLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGMsbyksbC5hcHBlbmRDaGlsZChvKSl9cmV0dXJuIHJ9KHMsZCx1LGUsZSwhMCxtLGwpfSxnPWZ1bmN0aW9uKGUpe3ZhciB0LG4scjtpZigkdChlKSYmdS5nZXRDb250ZW50RWRpdGFibGUoZSkmJihuPWksaT0idHJ1ZSI9PT11LmdldENvbnRlbnRFZGl0YWJsZShlKSxyPSEwKSx0PXRlKGUuY2hpbGROb2RlcyksaSYmIXIpZm9yKHZhciBvPTA7bzxkLmxlbmd0aCYmIUVwKHMsZFtvXSxsLGUsZSk7bysrKTtpZihtLmRlZXAmJnQubGVuZ3RoKXtmb3Iobz0wO288dC5sZW5ndGg7bysrKWcodFtvXSk7ciYmKGk9bil9fSxoPWZ1bmN0aW9uKGUpe3ZhciB0LG49dS5nZXQoZT8iX3N0YXJ0IjoiX2VuZCIpLHI9bltlPyJmaXJzdENoaWxkIjoibGFzdENoaWxkIl07cmV0dXJuIGxsKHQ9cikmJiR0KHQpJiYoIl9zdGFydCI9PT10LmlkfHwiX2VuZCI9PT10LmlkKSYmKHI9cltlPyJmaXJzdENoaWxkIjoibGFzdENoaWxkIl0pLFp0KHIpJiYwPT09ci5kYXRhLmxlbmd0aCYmKHI9ZT9uLnByZXZpb3VzU2libGluZ3x8bi5uZXh0U2libGluZzpuLm5leHRTaWJsaW5nfHxuLnByZXZpb3VzU2libGluZyksdS5yZW1vdmUobiwhMCkscn0sbj1mdW5jdGlvbihlKXt2YXIgdCxuLHI9ZS5jb21tb25BbmNlc3RvckNvbnRhaW5lcixvPVVsKHMsZSxkLCEwKTtpZihtLnNwbGl0KXtpZihvPVZtKG8pLCh0PXdwKHMsbywhMCkpIT09KG49d3AocyxvKSkpe2lmKC9eKFRSfFRIfFREKSQvLnRlc3QodC5ub2RlTmFtZSkmJnQuZmlyc3RDaGlsZCYmKHQ9IlRSIj09PXQubm9kZU5hbWU/dC5maXJzdENoaWxkLmZpcnN0Q2hpbGR8fHQ6dC5maXJzdENoaWxkfHx0KSxyJiYvXlQoSEVBRHxCT0RZfEZPT1R8UikkLy50ZXN0KHIubm9kZU5hbWUpJiYvXihUSHxURCkkLy50ZXN0KG4ubm9kZU5hbWUpJiZuLmZpcnN0Q2hpbGQmJihuPW4uZmlyc3RDaGlsZHx8biksQ3AodSx0LG4pKXt2YXIgaT1SLmZyb20odC5maXJzdENoaWxkKS5nZXRPcih0KTtyZXR1cm4gcChTcCh1LGksITAsInNwYW4iLHtpZDoiX3N0YXJ0IiwiZGF0YS1tY2UtdHlwZSI6ImJvb2ttYXJrIn0pKSx2b2lkIGgoITApfWlmKENwKHUsbix0KSl7aT1SLmZyb20obi5sYXN0Q2hpbGQpLmdldE9yKG4pO3JldHVybiBwKFNwKHUsaSwhMSwic3BhbiIse2lkOiJfZW5kIiwiZGF0YS1tY2UtdHlwZSI6ImJvb2ttYXJrIn0pKSx2b2lkIGgoITEpfXQ9eHAodSx0LCJzcGFuIix7aWQ6Il9zdGFydCIsImRhdGEtbWNlLXR5cGUiOiJib29rbWFyayJ9KSxuPXhwKHUsbiwic3BhbiIse2lkOiJfZW5kIiwiZGF0YS1tY2UtdHlwZSI6ImJvb2ttYXJrIn0pO3ZhciBhPXUuY3JlYXRlUm5nKCk7YS5zZXRTdGFydEFmdGVyKHQpLGEuc2V0RW5kQmVmb3JlKG4pLGpsKHUsYSxmdW5jdGlvbihlKXt6KGUsZnVuY3Rpb24oZSl7bGwoZSl8fGxsKGUucGFyZW50Tm9kZSl8fHAoZSl9KX0pLHAodCkscChuKSx0PWgoITApLG49aCgpfWVsc2UgdD1uPXAodCk7by5zdGFydENvbnRhaW5lcj10LnBhcmVudE5vZGU/dC5wYXJlbnROb2RlOnQsby5zdGFydE9mZnNldD11Lm5vZGVJbmRleCh0KSxvLmVuZENvbnRhaW5lcj1uLnBhcmVudE5vZGU/bi5wYXJlbnROb2RlOm4sby5lbmRPZmZzZXQ9dS5ub2RlSW5kZXgobikrMX1qbCh1LG8sZnVuY3Rpb24oZSl7eihlLGZ1bmN0aW9uKHQpe2codCk7eihbInVuZGVybGluZSIsImxpbmUtdGhyb3VnaCIsIm92ZXJsaW5lIl0sZnVuY3Rpb24oZSl7JHQodCkmJnMuZG9tLmdldFN0eWxlKHQsInRleHQtZGVjb3JhdGlvbiIpPT09ZSYmdC5wYXJlbnROb2RlJiZObCh1LHQucGFyZW50Tm9kZSk9PT1lJiZFcChzLHtkZWVwOiExLGV4YWN0OiEwLGlubGluZToic3BhbiIsc3R5bGVzOnt0ZXh0RGVjb3JhdGlvbjplfX0sbnVsbCx0KX0pfSl9KX07aWYoZSlpZihwbChlKSl7dmFyIHI9dS5jcmVhdGVSbmcoKTtyLnNldFN0YXJ0QmVmb3JlKGUpLHIuc2V0RW5kQWZ0ZXIoZSksbihyKX1lbHNlIG4oZSk7ZWxzZSBpZigiZmFsc2UiIT09dS5nZXRDb250ZW50RWRpdGFibGUodC5nZXROb2RlKCkpKXQuaXNDb2xsYXBzZWQoKSYmbS5pbmxpbmUmJiEkbChzKS5sZW5ndGg/Y3AocyxjLGwsZik6KFFsKHQsITAsZnVuY3Rpb24oKXtKbChzLG4pfSksbS5pbmxpbmUmJkdtKHMsYyxsLHQuZ2V0U3RhcnQoKSkmJmdsKHUsdCx0LmdldFJuZygpKSxzLm5vZGVDaGFuZ2VkKCkpO2Vsc2V7ZT10LmdldE5vZGUoKTtmb3IodmFyIG89MDtvPGQubGVuZ3RoJiYoIWRbb10uY2VGYWxzZU92ZXJyaWRlfHwhRXAocyxkW29dLGwsZSxlKSk7bysrKTt9fSxfcD1oci5lYWNoLFJwPWZ1bmN0aW9uKGUpe3JldHVybiAkdChlKSYmIWxsKGUpJiYhTXMoZSkmJiFZdChlKX0sVHA9ZnVuY3Rpb24oZSx0KXt2YXIgbjtmb3Iobj1lO247bj1uW3RdKXtpZihadChuKSYmMCE9PW4ubm9kZVZhbHVlLmxlbmd0aClyZXR1cm4gZTtpZigkdChuKSYmIWxsKG4pKXJldHVybiBufXJldHVybiBlfSxBcD1mdW5jdGlvbihlLHQsbil7dmFyIHIsbyxpPW5ldyBEZihlKTtpZih0JiZuJiYodD1UcCh0LCJwcmV2aW91c1NpYmxpbmciKSxuPVRwKG4sIm5leHRTaWJsaW5nIiksaS5jb21wYXJlKHQsbikpKXtmb3Iocj10Lm5leHRTaWJsaW5nO3ImJnIhPT1uOylyPShvPXIpLm5leHRTaWJsaW5nLHQuYXBwZW5kQ2hpbGQobyk7cmV0dXJuIGUucmVtb3ZlKG4pLGhyLmVhY2goaHIuZ3JlcChuLmNoaWxkTm9kZXMpLGZ1bmN0aW9uKGUpe3QuYXBwZW5kQ2hpbGQoZSl9KSx0fXJldHVybiBufSxEcD1mdW5jdGlvbihlLHQsbil7X3AoZS5jaGlsZE5vZGVzLGZ1bmN0aW9uKGUpe1JwKGUpJiYodChlKSYmbihlKSxlLmhhc0NoaWxkTm9kZXMoKSYmRHAoZSx0LG4pKX0pfSxPcD1mdW5jdGlvbih0LG4pe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4hKCFlfHwhU2wodCxlLG4pKX19LEJwPWZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gZnVuY3Rpb24oZSl7dC5zZXRTdHlsZShlLG4sciksIiI9PT1lLmdldEF0dHJpYnV0ZSgic3R5bGUiKSYmZS5yZW1vdmVBdHRyaWJ1dGUoInN0eWxlIiksUHAodCxlKX19LFBwPWZ1bmN0aW9uKGUsdCl7IlNQQU4iPT09dC5ub2RlTmFtZSYmMD09PWUuZ2V0QXR0cmlicyh0KS5sZW5ndGgmJmUucmVtb3ZlKHQsITApfSxMcD1mdW5jdGlvbihuLGUscixvKXtfcChlLGZ1bmN0aW9uKHQpe19wKG4uZG9tLnNlbGVjdCh0LmlubGluZSxvKSxmdW5jdGlvbihlKXtScChlKSYmRXAobix0LHIsZSx0LmV4YWN0P2U6bnVsbCl9KSxmdW5jdGlvbihyLGUsdCl7aWYoZS5jbGVhcl9jaGlsZF9zdHlsZXMpe3ZhciBuPWUubGlua3M/Iio6bm90KGEpIjoiKiI7X3Aoci5zZWxlY3Qobix0KSxmdW5jdGlvbihuKXtScChuKSYmX3AoZS5zdHlsZXMsZnVuY3Rpb24oZSx0KXtyLnNldFN0eWxlKG4sdCwiIil9KX0pfX0obi5kb20sdCxvKX0pfSxJcD1oci5lYWNoLE1wPWZ1bmN0aW9uKFIsVCxBLHIpe3ZhciBlLEQ9Ui5mb3JtYXR0ZXIuZ2V0KFQpLE89RFswXSxvPSFyJiZSLnNlbGVjdGlvbi5pc0NvbGxhcHNlZCgpLGk9Ui5kb20sdD1SLnNlbGVjdGlvbixCPWZ1bmN0aW9uKG4sZSl7aWYoZT1lfHxPLG4pe2lmKGUub25mb3JtYXQmJmUub25mb3JtYXQobixlLEEsciksSXAoZS5zdHlsZXMsZnVuY3Rpb24oZSx0KXtpLnNldFN0eWxlKG4sdCxDbChlLEEpKX0pLGUuc3R5bGVzKXt2YXIgdD1pLmdldEF0dHJpYihuLCJzdHlsZSIpO3QmJmkuc2V0QXR0cmliKG4sImRhdGEtbWNlLXN0eWxlIix0KX1JcChlLmF0dHJpYnV0ZXMsZnVuY3Rpb24oZSx0KXtpLnNldEF0dHJpYihuLHQsQ2woZSxBKSl9KSxJcChlLmNsYXNzZXMsZnVuY3Rpb24oZSl7ZT1DbChlLEEpLGkuaGFzQ2xhc3MobixlKXx8aS5hZGRDbGFzcyhuLGUpfSl9fSxkPWZ1bmN0aW9uKGUsdCl7dmFyIG49ITE7cmV0dXJuISFPLnNlbGVjdG9yJiYoSXAoZSxmdW5jdGlvbihlKXtpZighKCJjb2xsYXBzZWQiaW4gZSYmZS5jb2xsYXBzZWQhPT1vKSlyZXR1cm4gaS5pcyh0LGUuc2VsZWN0b3IpJiYhTXModCk/KEIodCxlKSwhKG49ITApKTp2b2lkIDB9KSxuKX0sYT1mdW5jdGlvbihrLGUsdCxzKXt2YXIgYyxsLF89W10sZj0hMDtjPU8uaW5saW5lfHxPLmJsb2NrLGw9ay5jcmVhdGUoYyksQihsKSxqbChrLGUsZnVuY3Rpb24oZSl7dmFyIGEsdT1mdW5jdGlvbihlKXt2YXIgdD0hMSxuPWYscj1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksbz1lLnBhcmVudE5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZigkdChlKSYmay5nZXRDb250ZW50RWRpdGFibGUoZSkmJihuPWYsZj0idHJ1ZSI9PT1rLmdldENvbnRlbnRFZGl0YWJsZShlKSx0PSEwKSx3bChyLCJiciIpKXJldHVybiBhPTAsdm9pZChPLmJsb2NrJiZrLnJlbW92ZShlKSk7aWYoTy53cmFwcGVyJiZZbShSLGUsVCxBKSlhPTA7ZWxzZXtpZihmJiYhdCYmTy5ibG9jayYmIU8ud3JhcHBlciYmdmwoUixyKSYmeWwoUixvLGMpKXJldHVybiBlPWsucmVuYW1lKGUsYyksQihlKSxfLnB1c2goZSksdm9pZChhPTApO2lmKE8uc2VsZWN0b3Ipe3ZhciBpPWQoRCxlKTtpZighTy5pbmxpbmV8fGkpcmV0dXJuIHZvaWQoYT0wKX0hZnx8dHx8IXlsKFIsYyxyKXx8IXlsKFIsbyxjKXx8IXMmJjM9PT1lLm5vZGVUeXBlJiYxPT09ZS5ub2RlVmFsdWUubGVuZ3RoJiY2NTI3OT09PWUubm9kZVZhbHVlLmNoYXJDb2RlQXQoMCl8fE1zKGUpfHxPLmlubGluZSYmay5pc0Jsb2NrKGUpPyhhPTAsSXAoaHIuZ3JlcChlLmNoaWxkTm9kZXMpLHUpLHQmJihmPW4pLGE9MCk6KGF8fChhPWsuY2xvbmUobCwhMSksZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLGUpLF8ucHVzaChhKSksYS5hcHBlbmRDaGlsZChlKSl9fTtJcChlLHUpfSksITA9PT1PLmxpbmtzJiZJcChfLGZ1bmN0aW9uKGUpe3ZhciB0PWZ1bmN0aW9uKGUpeyJBIj09PWUubm9kZU5hbWUmJkIoZSxPKSxJcChoci5ncmVwKGUuY2hpbGROb2RlcyksdCl9O3QoZSl9KSxJcChfLGZ1bmN0aW9uKGUpe3ZhciB0LG4scixvLGksYSx1LHMsYyxsLGYsZCxtLHAsZyxoLHYseSxiLEMsdyx4LFMsTixFPWZ1bmN0aW9uKGUpe3ZhciBuPSExO3JldHVybiBJcChlLmNoaWxkTm9kZXMsZnVuY3Rpb24oZSl7aWYoKHQ9ZSkmJjE9PT10Lm5vZGVUeXBlJiYhbGwodCkmJiFNcyh0KSYmIVl0KHQpKXJldHVybiBuPWUsITE7dmFyIHR9KSxufTsobj0wLElwKGUuY2hpbGROb2RlcyxmdW5jdGlvbihlKXt2YXIgdDsodD1lKSYmWnQodCkmJjA9PT10Lmxlbmd0aHx8bGwoZSl8fG4rK30pLHQ9biwhKDE8Xy5sZW5ndGgpJiZrLmlzQmxvY2soZSl8fDAhPT10KT8oTy5pbmxpbmV8fE8ud3JhcHBlcikmJihPLmV4YWN0fHwxIT09dHx8KChTPUUoeD1lKSkmJiFsbChTKSYmS20oayxTLE8pJiYoTj1rLmNsb25lKFMsITEpLEIoTiksay5yZXBsYWNlKE4seCwhMCksay5yZW1vdmUoUywhMCkpLGU9Tnx8eCksTHAoUixELEEsZSkseT1PLGI9VCxDPUEsWW0odj1SLCh3PWUpLnBhcmVudE5vZGUsYixDKSYmRXAodix5LEMsdyl8fHkubWVyZ2Vfd2l0aF9wYXJlbnRzJiZ2LmRvbS5nZXRQYXJlbnQody5wYXJlbnROb2RlLGZ1bmN0aW9uKGUpe2lmKFltKHYsZSxiLEMpKXJldHVybiBFcCh2LHksQyx3KSwhMH0pLG09ayxnPUEsaD1lLChwPU8pLnN0eWxlcyYmcC5zdHlsZXMuYmFja2dyb3VuZENvbG9yJiZEcChoLE9wKG0sImZvbnRTaXplIiksQnAobSwiYmFja2dyb3VuZENvbG9yIixDbChwLnN0eWxlcy5iYWNrZ3JvdW5kQ29sb3IsZykpKSxjPWssZj1lLGQ9ZnVuY3Rpb24oZSl7aWYoMT09PWUubm9kZVR5cGUmJmUucGFyZW50Tm9kZSYmMT09PWUucGFyZW50Tm9kZS5ub2RlVHlwZSl7dmFyIHQ9TmwoYyxlLnBhcmVudE5vZGUpO2MuZ2V0U3R5bGUoZSwiY29sb3IiKSYmdD9jLnNldFN0eWxlKGUsInRleHQtZGVjb3JhdGlvbiIsdCk6Yy5nZXRTdHlsZShlLCJ0ZXh0LWRlY29yYXRpb24iKT09PXQmJmMuc2V0U3R5bGUoZSwidGV4dC1kZWNvcmF0aW9uIixudWxsKX19LChsPU8pLnN0eWxlcyYmKGwuc3R5bGVzLmNvbG9yfHxsLnN0eWxlcy50ZXh0RGVjb3JhdGlvbikmJihoci53YWxrKGYsZCwiY2hpbGROb2RlcyIpLGQoZikpLGE9ayxzPWUsInN1YiIhPT0odT1PKS5pbmxpbmUmJiJzdXAiIT09dS5pbmxpbmV8fChEcChzLE9wKGEsImZvbnRTaXplIiksQnAoYSwiZm9udFNpemUiLCIiKSksYS5yZW1vdmUoYS5zZWxlY3QoInN1cCI9PT11LmlubGluZT8ic3ViIjoic3VwIixzKSwhMCkpLHI9ayxvPU8sKGk9ZSkmJiExIT09by5tZXJnZV9zaWJsaW5ncyYmKGk9QXAocixobChpKSxpKSxpPUFwKHIsaSxobChpLCEwKSkpKTprLnJlbW92ZShlLCEwKX0pfTtpZigiZmFsc2UiIT09aS5nZXRDb250ZW50RWRpdGFibGUodC5nZXROb2RlKCkpKXtpZihPKXtpZihyKXBsKHIpP2QoRCxyKXx8KChlPWkuY3JlYXRlUm5nKCkpLnNldFN0YXJ0QmVmb3JlKHIpLGUuc2V0RW5kQWZ0ZXIociksYShpLFVsKFIsZSxEKSwwLCEwKSk6YShpLHIsMCwhMCk7ZWxzZSBpZihvJiZPLmlubGluZSYmISRsKFIpLmxlbmd0aCkhZnVuY3Rpb24oZSx0LG4pe3ZhciByLG8saT1lLnNlbGVjdGlvbixhPWkuZ2V0Um5nKCksdT1hLnN0YXJ0T2Zmc2V0LHM9YS5zdGFydENvbnRhaW5lci5ub2RlVmFsdWU7KHI9RnMoZS5nZXRCb2R5KCksaS5nZXRTdGFydCgpKSkmJihvPXJwKHIpKTt2YXIgYyxsLGY9L1teXHNcdTAwYTBcdTAwYWRcdTIwMGJcdWZlZmZdLztpZihzJiYwPHUmJnU8cy5sZW5ndGgmJmYudGVzdChzLmNoYXJBdCh1KSkmJmYudGVzdChzLmNoYXJBdCh1LTEpKSl7dmFyIGQ9aS5nZXRCb29rbWFyaygpO2EuY29sbGFwc2UoITApO3ZhciBtPVVsKGUsYSxlLmZvcm1hdHRlci5nZXQodCkpO209Vm0obSksZS5mb3JtYXR0ZXIuYXBwbHkodCxuLG0pLGkubW92ZVRvQm9va21hcmsoZCl9ZWxzZSByJiZvLm5vZGVWYWx1ZT09PWVwfHwoYz1lLmdldERvYygpLGw9b3AoITApLmRvbSgpLG89KHI9Yy5pbXBvcnROb2RlKGwsITApKS5maXJzdENoaWxkLGEuaW5zZXJ0Tm9kZShyKSx1PTEpLGUuZm9ybWF0dGVyLmFwcGx5KHQsbixyKSxpLnNldEN1cnNvckxvY2F0aW9uKG8sdSl9KFIsVCxBKTtlbHNle3ZhciBuPXQuZ2V0Tm9kZSgpO1Iuc2V0dGluZ3MuZm9yY2VkX3Jvb3RfYmxvY2t8fCFEWzBdLmRlZmF1bHRCbG9ja3x8aS5nZXRQYXJlbnQobixpLmlzQmxvY2spfHxNcChSLERbMF0uZGVmYXVsdEJsb2NrKSx0LnNldFJuZygkZCh0LmdldFJuZygpKSksUWwodCwhMCxmdW5jdGlvbihlKXtKbChSLGZ1bmN0aW9uKGUsdCl7dmFyIG49dD9lOlVsKFIsZSxEKTthKGksbil9KX0pLGdsKGksdCx0LmdldFJuZygpKSxSLm5vZGVDaGFuZ2VkKCl9dT1SLHBwKGRwW1RdLGZ1bmN0aW9uKGUpe2UodSl9KX12YXIgdX1lbHNle3I9dC5nZXROb2RlKCk7Zm9yKHZhciBzPTAsYz1ELmxlbmd0aDtzPGM7cysrKWlmKERbc10uY2VGYWxzZU92ZXJyaWRlJiZpLmlzKHIsRFtzXS5zZWxlY3RvcikpcmV0dXJuIHZvaWQgQihyLERbc10pfX0sRnA9ZnVuY3Rpb24obixlKXtyZXR1cm4gVShlLGZ1bmN0aW9uKGUpe3ZhciB0PW4uZmlyZSgiR2V0U2VsZWN0aW9uUmFuZ2UiLHtyYW5nZTplfSk7cmV0dXJuIHQucmFuZ2UhPT1lP3QucmFuZ2U6ZX0pfSxVcD1mdW5jdGlvbihlLHQpe3ZhciBuPSh0fHxWLmRvY3VtZW50KS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7cmV0dXJuIHooZSxmdW5jdGlvbihlKXtuLmFwcGVuZENoaWxkKGUuZG9tKCkpfSksTmUuZnJvbURvbShuKX0senA9ZnVuY3Rpb24oZSx0LG4pe3JldHVybntlbGVtZW50OngoZSksd2lkdGg6eCh0KSxyb3dzOngobil9fSxqcD1mdW5jdGlvbihlLHQpe3JldHVybntlbGVtZW50OngoZSksY2VsbHM6eCh0KX19LEhwPWZ1bmN0aW9uKGUsdCl7dmFyIG49cGFyc2VJbnQoZm4oZSx0KSwxMCk7cmV0dXJuIGlzTmFOKG4pPzE6bn0sVnA9ZnVuY3Rpb24oZSl7cmV0dXJuIFcoZSxmdW5jdGlvbihlLHQpe3JldHVybiB0LmNlbGxzKCkubGVuZ3RoPmU/dC5jZWxscygpLmxlbmd0aDplfSwwKX0scXA9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4scj1lLnJvd3MoKSxvPTA7bzxyLmxlbmd0aDtvKyspZm9yKHZhciBpPXJbb10uY2VsbHMoKSxhPTA7YTxpLmxlbmd0aDthKyspaWYoYXQoaVthXSx0KSlyZXR1cm4gUi5zb21lKChuPW8se3g6eChhKSx5Ongobil9KSk7cmV0dXJuIFIubm9uZSgpfSwkcD1mdW5jdGlvbihlLHQsbixyLG8pe2Zvcih2YXIgaT1bXSxhPWUucm93cygpLHU9bjt1PD1vO3UrKyl7dmFyIHM9YVt1XS5jZWxscygpLGM9dDxyP3Muc2xpY2UodCxyKzEpOnMuc2xpY2Uocix0KzEpO2kucHVzaChqcChhW3VdLmVsZW1lbnQoKSxjKSl9cmV0dXJuIGl9LFdwPWZ1bmN0aW9uKGUpe3ZhciBvPXpwKG91KGUpLDAsW10pO3JldHVybiB6KFVhKGUsInRyIiksZnVuY3Rpb24obixyKXt6KFVhKG4sInRkLHRoIiksZnVuY3Rpb24oZSx0KXshZnVuY3Rpb24oZSx0LG4scixvKXtmb3IodmFyIGk9SHAobywicm93c3BhbiIpLGE9SHAobywiY29sc3BhbiIpLHU9ZS5yb3dzKCkscz1uO3M8bitpO3MrKyl7dVtzXXx8KHVbc109anAoaXUociksW10pKTtmb3IodmFyIGM9dDtjPHQrYTtjKyspe3Vbc10uY2VsbHMoKVtjXT1zPT09biYmYz09PXQ/bzpvdShvKX19fShvLGZ1bmN0aW9uKGUsdCxuKXtmb3IoO3I9dCxvPW4saT12b2lkIDAsKChpPWUucm93cygpKVtvXT9pW29dLmNlbGxzKCk6W10pW3JdOyl0Kys7dmFyIHIsbyxpO3JldHVybiB0fShvLHQscikscixuLGUpfSl9KSx6cChvLmVsZW1lbnQoKSxWcChvLnJvd3MoKSksby5yb3dzKCkpfSxLcD1mdW5jdGlvbihlKXtyZXR1cm4gbj1VKCh0PWUpLnJvd3MoKSxmdW5jdGlvbihlKXt2YXIgdD1VKGUuY2VsbHMoKSxmdW5jdGlvbihlKXt2YXIgdD1pdShlKTtyZXR1cm4gZG4odCwiY29sc3BhbiIpLGRuKHQsInJvd3NwYW4iKSx0fSksbj1vdShlLmVsZW1lbnQoKSk7cmV0dXJuIE50KG4sdCksbn0pLHI9b3UodC5lbGVtZW50KCkpLG89TmUuZnJvbVRhZygidGJvZHkiKSxOdChvLG4pLFN0KHIsbykscjt2YXIgdCxuLHIsb30sWHA9ZnVuY3Rpb24obCxlLHQpe3JldHVybiBxcChsLGUpLmJpbmQoZnVuY3Rpb24oYyl7cmV0dXJuIHFwKGwsdCkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiB0PWwscj1lLG89KG49YykueCgpLGk9bi55KCksYT1yLngoKSx1PXIueSgpLHM9aTx1PyRwKHQsbyxpLGEsdSk6JHAodCxvLHUsYSxpKSx6cCh0LmVsZW1lbnQoKSxWcChzKSxzKTt2YXIgdCxuLHIsbyxpLGEsdSxzfSl9KX0sWXA9ZnVuY3Rpb24odCxuKXtyZXR1cm4gSyh0LGZ1bmN0aW9uKGUpe3JldHVybiJsaSI9PT1SdChlKSYmWGwoZSxuKX0pLmZvbGQoeChbXSksZnVuY3Rpb24oZSl7cmV0dXJuIEsodCxmdW5jdGlvbihlKXtyZXR1cm4idWwiPT09UnQoZSl8fCJvbCI9PT1SdChlKX0pLm1hcChmdW5jdGlvbihlKXtyZXR1cm5bTmUuZnJvbVRhZygibGkiKSxOZS5mcm9tVGFnKFJ0KGUpKV19KS5nZXRPcihbXSl9KX0sR3A9ZnVuY3Rpb24oZSx0KXt2YXIgbixyPU5lLmZyb21Eb20odC5jb21tb25BbmNlc3RvckNvbnRhaW5lciksbz1uZChyLGUpLGk9SChvLGZ1bmN0aW9uKGUpe3JldHVybiBOcihlKXx8eHIoZSl9KSxhPVlwKG8sdCksdT1pLmNvbmNhdChhLmxlbmd0aD9hOlJyKG49cik/ZnQobikuZmlsdGVyKF9yKS5mb2xkKHgoW10pLGZ1bmN0aW9uKGUpe3JldHVybltuLGVdfSk6X3Iobik/W25dOltdKTtyZXR1cm4gVSh1LG91KX0sSnA9ZnVuY3Rpb24oKXtyZXR1cm4gVXAoW10pfSxRcD1mdW5jdGlvbihlLHQpe3JldHVybiBuPU5lLmZyb21Eb20odC5jbG9uZUNvbnRlbnRzKCkpLHI9R3AoZSx0KSxvPVcocixmdW5jdGlvbihlLHQpe3JldHVybiBTdCh0LGUpLHR9LG4pLDA8ci5sZW5ndGg/VXAoW29dKTpvO3ZhciBuLHIsb30sWnA9ZnVuY3Rpb24oZSxvKXtyZXR1cm4gdD1lLG49b1swXSxxYShuLCJ0YWJsZSIsTihhdCx0KSkuYmluZChmdW5jdGlvbihlKXt2YXIgdD1vWzBdLG49b1tvLmxlbmd0aC0xXSxyPVdwKGUpO3JldHVybiBYcChyLHQsbikubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBVcChbS3AoZSldKX0pfSkuZ2V0T3JUaHVuayhKcCk7dmFyIHQsbn0sZWc9ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG89cWwodCxlKTtyZXR1cm4gMDxvLmxlbmd0aD9acChlLG8pOihuPWUsMDwocj10KS5sZW5ndGgmJnJbMF0uY29sbGFwc2VkP0pwKCk6UXAobixyWzBdKSl9LHRnPWZ1bmN0aW9uKGUsdCxuKXtpZih2b2lkIDA9PT1uJiYobj17fSksbi5nZXQ9ITAsbi5mb3JtYXQ9dCxuLnNlbGVjdGlvbj0hMCwobj1lLmZpcmUoIkJlZm9yZUdldENvbnRlbnQiLG4pKS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSlyZXR1cm4gZS5maXJlKCJHZXRDb250ZW50IixuKSxuLmNvbnRlbnQ7aWYoInRleHQiPT09bi5mb3JtYXQpcmV0dXJuIGw9ZSxSLmZyb20obC5zZWxlY3Rpb24uZ2V0Um5nKCkpLm1hcChmdW5jdGlvbihlKXt2YXIgdD1sLmRvbS5hZGQobC5nZXRCb2R5KCksImRpdiIseyJkYXRhLW1jZS1ib2d1cyI6ImFsbCIsc3R5bGU6Im92ZXJmbG93OiBoaWRkZW47IG9wYWNpdHk6IDA7In0sZS5jbG9uZUNvbnRlbnRzKCkpLG49bHUodC5pbm5lclRleHQpO3JldHVybiBsLmRvbS5yZW1vdmUodCksbn0pLmdldE9yKCIiKTtuLmdldElubmVyPSEwO3ZhciByLG8saSxhLHUscyxjLGwsZj0obz1uLGk9KHI9ZSkuc2VsZWN0aW9uLmdldFJuZygpLGE9ci5kb20uY3JlYXRlKCJib2R5IiksdT1yLnNlbGVjdGlvbi5nZXRTZWwoKSxzPUZwKHIsSGwodSkpLChjPW8uY29udGV4dHVhbD9lZyhOZS5mcm9tRG9tKHIuZ2V0Qm9keSgpKSxzKS5kb20oKTppLmNsb25lQ29udGVudHMoKSkmJmEuYXBwZW5kQ2hpbGQoYyksci5zZWxlY3Rpb24uc2VyaWFsaXplci5zZXJpYWxpemUoYSxvKSk7cmV0dXJuInRyZWUiPT09bi5mb3JtYXQ/Zjoobi5jb250ZW50PWUuc2VsZWN0aW9uLmlzQ29sbGFwc2VkKCk/IiI6ZixlLmZpcmUoIkdldENvbnRlbnQiLG4pLG4uY29udGVudCl9LG5nPWZ1bmN0aW9uKGUpe3JldHVybiAkdChlKT9lLm91dGVySFRNTDpadChlKT8kci5lbmNvZGVSYXcoZS5kYXRhLCExKTplbihlKT8iXHgzYyEtLSIrZS5kYXRhKyItLVx4M2UiOiIifSxyZz1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZnVuY3Rpb24oZSl7dmFyIHQsbixyO2ZvcihyPVYuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdD1WLmRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxlJiYoci5pbm5lckhUTUw9ZSk7bj1yLmZpcnN0Q2hpbGQ7KXQuYXBwZW5kQ2hpbGQobik7cmV0dXJuIHR9KHQpO2lmKGUuaGFzQ2hpbGROb2RlcygpJiZuPGUuY2hpbGROb2Rlcy5sZW5ndGgpe3ZhciBvPWUuY2hpbGROb2Rlc1tuXTtvLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHIsbyl9ZWxzZSBlLmFwcGVuZENoaWxkKHIpfSxvZz1mdW5jdGlvbihlLHQpe3ZhciBuLHIscCxnLG8saCx2LGMseSxsLGksYT1VKHRlKHQuY2hpbGROb2RlcyksbmcpO3JldHVybiBnPWUsbz0ocD1hKS5sZW5ndGgrZy5sZW5ndGgrMixoPW5ldyBBcnJheShvKSx2PW5ldyBBcnJheShvKSxjPWZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFyIGk9bChlLHQsbixyKTtpZihudWxsPT09aXx8aS5zdGFydD09PXQmJmkuZGlhZz09PXQtcnx8aS5lbmQ9PT1lJiZpLmRpYWc9PT1lLW4pZm9yKHZhciBhPWUsdT1uO2E8dHx8dTxyOylhPHQmJnU8ciYmcFthXT09PWdbdV0/KG8ucHVzaChbMCxwW2FdXSksKythLCsrdSk6ci1uPHQtZT8oby5wdXNoKFsyLHBbYV1dKSwrK2EpOihvLnB1c2goWzEsZ1t1XV0pLCsrdSk7ZWxzZXtjKGUsaS5zdGFydCxuLGkuc3RhcnQtaS5kaWFnLG8pO2Zvcih2YXIgcz1pLnN0YXJ0O3M8aS5lbmQ7KytzKW8ucHVzaChbMCxwW3NdXSk7YyhpLmVuZCx0LGkuZW5kLWkuZGlhZyxyLG8pfX0seT1mdW5jdGlvbihlLHQsbixyKXtmb3IodmFyIG89ZTtvLXQ8ciYmbzxuJiZwW29dPT09Z1tvLXRdOykrK287cmV0dXJue3N0YXJ0OmUsZW5kOm8sZGlhZzp0fX0sbD1mdW5jdGlvbihlLHQsbixyKXt2YXIgbz10LWUsaT1yLW47aWYoMD09b3x8MD09aSlyZXR1cm4gbnVsbDt2YXIgYSx1LHMsYyxsLGY9by1pLGQ9aStvLG09KGQlMj09MD9kOjErZCkvMjtmb3IoaFsxK21dPWUsdlsxK21dPXQrMSxhPTA7YTw9bTsrK2Epe2Zvcih1PS1hO3U8PWE7dSs9Mil7Zm9yKHM9dSttLHU9PT0tYXx8dSE9PWEmJmhbcy0xXTxoW3MrMV0/aFtzXT1oW3MrMV06aFtzXT1oW3MtMV0rMSxsPShjPWhbc10pLWUrbi11O2M8dCYmbDxyJiZwW2NdPT09Z1tsXTspaFtzXT0rK2MsKytsO2lmKGYlMiE9MCYmZi1hPD11JiZ1PD1mK2EmJnZbcy1mXTw9aFtzXSlyZXR1cm4geSh2W3MtZl0sdStlLW4sdCxyKX1mb3IodT1mLWE7dTw9ZithO3UrPTIpe2ZvcihzPXUrbS1mLHU9PT1mLWF8fHUhPT1mK2EmJnZbcysxXTw9dltzLTFdP3Zbc109dltzKzFdLTE6dltzXT12W3MtMV0sbD0oYz12W3NdLTEpLWUrbi11O2U8PWMmJm48PWwmJnBbY109PT1nW2xdOyl2W3NdPWMtLSxsLS07aWYoZiUyPT0wJiYtYTw9dSYmdTw9YSYmdltzXTw9aFtzK2ZdKXJldHVybiB5KHZbc10sdStlLW4sdCxyKX19fSxpPVtdLGMoMCxwLmxlbmd0aCwwLGcubGVuZ3RoLGkpLG49dCxyPTAseihpLGZ1bmN0aW9uKGUpezA9PT1lWzBdP3IrKzoxPT09ZVswXT8ocmcobixlWzFdLHIpLHIrKyk6Mj09PWVbMF0mJmZ1bmN0aW9uKGUsdCl7aWYoZS5oYXNDaGlsZE5vZGVzKCkmJnQ8ZS5jaGlsZE5vZGVzLmxlbmd0aCl7dmFyIG49ZS5jaGlsZE5vZGVzW3RdO24ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChuKX19KG4scil9KSx0fSxpZz14YShSLm5vbmUoKSksYWc9ZnVuY3Rpb24obil7dmFyIGUsdCxyLG87cmV0dXJuIG89bi5nZXRCb2R5KCksZT1IKFUodGUoby5jaGlsZE5vZGVzKSxuZyksZnVuY3Rpb24oZSl7cmV0dXJuIDA8ZS5sZW5ndGh9KSx0PShyPVkoZSxmdW5jdGlvbihlKXt2YXIgdD1fZihuLnNlcmlhbGl6ZXIsZSk7cmV0dXJuIDA8dC5sZW5ndGg/W3RdOltdfSkpLmpvaW4oIiIpLC0xIT09dC5pbmRleE9mKCI8L2lmcmFtZT4iKT97dHlwZToiZnJhZ21lbnRlZCIsZnJhZ21lbnRzOnIsY29udGVudDoiIixib29rbWFyazpudWxsLGJlZm9yZUJvb2ttYXJrOm51bGx9Ont0eXBlOiJjb21wbGV0ZSIsZnJhZ21lbnRzOm51bGwsY29udGVudDp0LGJvb2ttYXJrOm51bGwsYmVmb3JlQm9va21hcms6bnVsbH19LHVnPWZ1bmN0aW9uKGUsdCxuKXsiZnJhZ21lbnRlZCI9PT10LnR5cGU/b2codC5mcmFnbWVudHMsZS5nZXRCb2R5KCkpOmUuc2V0Q29udGVudCh0LmNvbnRlbnQse2Zvcm1hdDoicmF3In0pLGUuc2VsZWN0aW9uLm1vdmVUb0Jvb2ttYXJrKG4/dC5iZWZvcmVCb29rbWFyazp0LmJvb2ttYXJrKX0sc2c9ZnVuY3Rpb24oZSl7cmV0dXJuImZyYWdtZW50ZWQiPT09ZS50eXBlP2UuZnJhZ21lbnRzLmpvaW4oIiIpOmUuY29udGVudH0sY2c9ZnVuY3Rpb24oZSl7dmFyIHQ9TmUuZnJvbVRhZygiYm9keSIsaWcuZ2V0KCkuZ2V0T3JUaHVuayhmdW5jdGlvbigpe3ZhciBlPVYuZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCJ1bmRvIik7cmV0dXJuIGlnLnNldChSLnNvbWUoZSkpLGV9KSk7cmV0dXJuIG51KHQsc2coZSkpLHooVWEodCwiKltkYXRhLW1jZS1ib2d1c10iKSxfdCksdC5kb20oKS5pbm5lckhUTUx9LGxnPWZ1bmN0aW9uKGUsdCl7cmV0dXJuISghZXx8IXQpJiYocj10LHNnKGUpPT09c2cocil8fChuPXQsY2coZSk9PT1jZyhuKSkpO3ZhciBuLHJ9LGZnPWZ1bmN0aW9uKGUpe3JldHVybiAwPT09ZS5nZXQoKX0sZGc9ZnVuY3Rpb24oZSx0LG4pe2ZnKG4pJiYoZS50eXBpbmc9dCl9LG1nPWZ1bmN0aW9uKGUsdCl7ZS50eXBpbmcmJihkZyhlLCExLHQpLGUuYWRkKCkpfSxwZz1mdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIGRmfSxnZz1mdW5jdGlvbihlLHQpe0ZtKGUuc2VyaWFsaXplci5nZXROb2RlRmlsdGVycygpLGUuc2VyaWFsaXplci5nZXRBdHRyaWJ1dGVGaWx0ZXJzKCksdCl9LGhnPWZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6ImNvbXBsZXRlIixmcmFnbWVudHM6W10sY29udGVudDoiIixib29rbWFyazpudWxsLGJlZm9yZUJvb2ttYXJrOm51bGx9fSx2Zz1mdW5jdGlvbihzKXtyZXR1cm57dW5kb01hbmFnZXI6e2JlZm9yZUNoYW5nZTpmdW5jdGlvbihlLHQpe3JldHVybiBuPXMscj10LHZvaWQoZmcoZSkmJnIuc2V0KFIuc29tZShMcyhuLnNlbGVjdGlvbikpKSk7dmFyIG4scn0sYWRkVW5kb0xldmVsOmZ1bmN0aW9uKGUsdCxuLHIsbyxpKXtyZXR1cm4gZnVuY3Rpb24oZSx0LG4scixvLGksYSl7dmFyIHU9ZS5zZXR0aW5ncyxzPWFnKGUpO2lmKGk9aXx8e30saT1oci5leHRlbmQoaSxzKSwhMT09PWZnKHIpfHxlLnJlbW92ZWQpcmV0dXJuIG51bGw7dmFyIGM9dC5kYXRhW24uZ2V0KCldO2lmKGUuZmlyZSgiQmVmb3JlQWRkVW5kbyIse2xldmVsOmksbGFzdExldmVsOmMsb3JpZ2luYWxFdmVudDphfSkuaXNEZWZhdWx0UHJldmVudGVkKCkpcmV0dXJuIG51bGw7aWYoYyYmbGcoYyxpKSlyZXR1cm4gbnVsbDtpZih0LmRhdGFbbi5nZXQoKV0mJm8uZ2V0KCkuZWFjaChmdW5jdGlvbihlKXt0LmRhdGFbbi5nZXQoKV0uYmVmb3JlQm9va21hcms9ZX0pLHUuY3VzdG9tX3VuZG9fcmVkb19sZXZlbHMmJnQuZGF0YS5sZW5ndGg+dS5jdXN0b21fdW5kb19yZWRvX2xldmVscyl7Zm9yKHZhciBsPTA7bDx0LmRhdGEubGVuZ3RoLTE7bCsrKXQuZGF0YVtsXT10LmRhdGFbbCsxXTt0LmRhdGEubGVuZ3RoLS0sbi5zZXQodC5kYXRhLmxlbmd0aCl9aS5ib29rbWFyaz1McyhlLnNlbGVjdGlvbiksbi5nZXQoKTx0LmRhdGEubGVuZ3RoLTEmJih0LmRhdGEubGVuZ3RoPW4uZ2V0KCkrMSksdC5kYXRhLnB1c2goaSksbi5zZXQodC5kYXRhLmxlbmd0aC0xKTt2YXIgZj17bGV2ZWw6aSxsYXN0TGV2ZWw6YyxvcmlnaW5hbEV2ZW50OmF9O3JldHVybiBlLmZpcmUoIkFkZFVuZG8iLGYpLDA8bi5nZXQoKSYmKGUuc2V0RGlydHkoITApLGUuZmlyZSgiY2hhbmdlIixmKSksaX0ocyxlLHQsbixyLG8saSl9LHVuZG86ZnVuY3Rpb24oZSx0LG4pe3JldHVybiByPXMsaT10LGE9biwobz1lKS50eXBpbmcmJihvLmFkZCgpLG8udHlwaW5nPSExLGRnKG8sITEsaSkpLDA8YS5nZXQoKSYmKGEuc2V0KGEuZ2V0KCktMSksdT1vLmRhdGFbYS5nZXQoKV0sdWcocix1LCEwKSxyLnNldERpcnR5KCEwKSxyLmZpcmUoIlVuZG8iLHtsZXZlbDp1fSkpLHU7dmFyIHIsbyxpLGEsdX0scmVkbzpmdW5jdGlvbihlLHQpe3JldHVybiBuPXMsbz10LChyPWUpLmdldCgpPG8ubGVuZ3RoLTEmJihyLnNldChyLmdldCgpKzEpLGk9b1tyLmdldCgpXSx1ZyhuLGksITEpLG4uc2V0RGlydHkoITApLG4uZmlyZSgiUmVkbyIse2xldmVsOml9KSksaTt2YXIgbixyLG8saX0sY2xlYXI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbj1zLG89dCwocj1lKS5kYXRhPVtdLG8uc2V0KDApLHIudHlwaW5nPSExLHZvaWQgbi5maXJlKCJDbGVhclVuZG9zIik7dmFyIG4scixvfSxyZXNldDpmdW5jdGlvbihlKXtyZXR1cm4odD1lKS5jbGVhcigpLHZvaWQgdC5hZGQoKTt2YXIgdH0saGFzVW5kbzpmdW5jdGlvbihlLHQpe3JldHVybiBuPXMscj1lLDA8dC5nZXQoKXx8ci50eXBpbmcmJnIuZGF0YVswXSYmIWxnKGFnKG4pLHIuZGF0YVswXSk7dmFyIG4scn0saGFzUmVkbzpmdW5jdGlvbihlLHQpe3JldHVybiBuPWUsdC5nZXQoKTxuLmRhdGEubGVuZ3RoLTEmJiFuLnR5cGluZzt2YXIgbn0sdHJhbnNhY3Q6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBvPW4sbWcocj1lLHQpLHIuYmVmb3JlQ2hhbmdlKCksci5pZ25vcmUobyksci5hZGQoKTt2YXIgcixvfSxpZ25vcmU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSx0KXt0cnl7ZS5zZXQoZS5nZXQoKSsxKSx0KCl9ZmluYWxseXtlLnNldChlLmdldCgpLTEpfX0oZSx0KX0sZXh0cmE6ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIGZ1bmN0aW9uKGUsdCxuLHIsbyl7aWYodC50cmFuc2FjdChyKSl7dmFyIGk9dC5kYXRhW24uZ2V0KCldLmJvb2ttYXJrLGE9dC5kYXRhW24uZ2V0KCktMV07dWcoZSxhLCEwKSx0LnRyYW5zYWN0KG8pJiYodC5kYXRhW24uZ2V0KCktMV0uYmVmb3JlQm9va21hcms9aSl9fShzLGUsdCxuLHIpfX0sZm9ybWF0dGVyOnthcHBseTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIE1wKHMsZSx0LG4pfSxyZW1vdmU6ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIGtwKHMsZSx0LG4scil9LHRvZ2dsZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIG89ZSxpPXQsYT1uLHU9KHI9cykuZm9ybWF0dGVyLmdldChvKSx2b2lkKCFHbShyLG8saSxhKXx8InRvZ2dsZSJpbiB1WzBdJiYhdVswXS50b2dnbGU/TXA6a3ApKHIsbyxpLGEpO3ZhciByLG8saSxhLHV9fSxlZGl0b3I6e2dldENvbnRlbnQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbj1zLHI9ZSxvPXQsUi5mcm9tKG4uZ2V0Qm9keSgpKS5mb2xkKHgoInRyZWUiPT09ci5mb3JtYXQ/bmV3IGRmKCJib2R5IiwxMSk6IiIpLGZ1bmN0aW9uKGUpe3JldHVybiBUZihuLHIsbyxlKX0pO3ZhciBuLHIsb30sc2V0Q29udGVudDpmdW5jdGlvbihlLHQpe3JldHVybiBqbShzLGUsdCl9LGluc2VydENvbnRlbnQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcm0ocyxlLHQpfX0sc2VsZWN0aW9uOntnZXRDb250ZW50OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRnKHMsZSx0KX19LHJhdzp7Z2V0TW9kZWw6ZnVuY3Rpb24oKXtyZXR1cm4gUi5ub25lKCl9fX19LHlnPWZ1bmN0aW9uKGUpe3JldHVybiBtZShlLnBsdWdpbnMsInJ0YyIpfSxiZz1mdW5jdGlvbihuKXt2YXIgcj1uO3JldHVybiBkZShuLnBsdWdpbnMsInJ0YyIpLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm4gci5ydGNJbnN0YW5jZT12ZyhuKSxSLm5vbmUoKX0sZnVuY3Rpb24oZSl7cmV0dXJuIFIuc29tZShlLnNldHVwKCkudGhlbihmdW5jdGlvbihlKXt2YXIgbyxpLGEsdDtyZXR1cm4gci5ydGNJbnN0YW5jZT0obz1uLGk9ZSxhPWZ1bmN0aW9uKGUpe3JldHVybiBFKGUpP2U6e319LHQ9cCgiVW5pbXBsZW1lbnRlZCBmZWF0dXJlIGZvciBydGMiKSx7dW5kb01hbmFnZXI6e2JlZm9yZUNoYW5nZTpmLGFkZFVuZG9MZXZlbDp0LHVuZG86ZnVuY3Rpb24oKXtyZXR1cm4gaS51bmRvKCksaGcoKX0scmVkbzpmdW5jdGlvbigpe3JldHVybiBpLnJlZG8oKSxoZygpfSxjbGVhcjp0LHJlc2V0OnQsaGFzVW5kbzpmdW5jdGlvbigpe3JldHVybiBpLmhhc1VuZG8oKX0saGFzUmVkbzpmdW5jdGlvbigpe3JldHVybiBpLmhhc1JlZG8oKX0sdHJhbnNhY3Q6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBpLnRyYW5zYWN0KG4pLGhnKCl9LGlnbm9yZTp0LGV4dHJhOnR9LGZvcm1hdHRlcjp7YXBwbHk6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBpLmFwcGx5Rm9ybWF0KGUsYSh0KSl9LHJlbW92ZTpmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gaS5yZW1vdmVGb3JtYXQoZSxhKHQpKX0sdG9nZ2xlOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gaS50b2dnbGVGb3JtYXQoZSxhKHQpKX19LGVkaXRvcjp7Z2V0Q29udGVudDpmdW5jdGlvbihlLHQpe2lmKCJodG1sIiE9PXQmJiJ0cmVlIiE9PXQpcmV0dXJuIHZnKG8pLmVkaXRvci5nZXRDb250ZW50KGUsdCk7dmFyIG49aS5nZXRDb250ZW50KCkscj1oZih7aW5uZXI6ITB9KTtyZXR1cm4gZ2cobyxuKSwidHJlZSI9PT10P246ci5zZXJpYWxpemUobil9LHNldENvbnRlbnQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj1wZyhlKT9lOm8ucGFyc2VyLnBhcnNlKGUse2lzUm9vdENvbnRlbnQ6ITAsaW5zZXJ0OiEwfSk7cmV0dXJuIGkuc2V0Q29udGVudChuKSxlfSxpbnNlcnRDb250ZW50OmZ1bmN0aW9uKGUsdCl7dmFyIG49cGcoZSk/ZTpvLnBhcnNlci5wYXJzZShlLHtpbnNlcnQ6ITB9KTtpLmluc2VydENvbnRlbnQobil9fSxzZWxlY3Rpb246e2dldENvbnRlbnQ6ZnVuY3Rpb24oZSx0KXtpZigiaHRtbCIhPT1lJiYidHJlZSIhPT1lKXJldHVybiB2ZyhvKS5zZWxlY3Rpb24uZ2V0Q29udGVudChlLHQpO3ZhciBuPWkuZ2V0U2VsZWN0ZWRDb250ZW50KCkscj1oZih7fSk7cmV0dXJuIGdnKG8sbiksInRyZWUiPT09ZT9uOnIuc2VyaWFsaXplKG4pfX0scmF3OntnZXRNb2RlbDpmdW5jdGlvbigpe3JldHVybiBSLnNvbWUoaS5nZXRSYXdNb2RlbCgpKX19fSksZS5pc1JlbW90ZX0pKX0pfSxDZz1mdW5jdGlvbihlKXtyZXR1cm4gZS5ydGNJbnN0YW5jZT9lLnJ0Y0luc3RhbmNlOnZnKGUpfSx3Zz1mdW5jdGlvbihlKXt2YXIgdD1lLnJ0Y0luc3RhbmNlO2lmKHQpcmV0dXJuIHQ7dGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgdG8gZ2V0IFJUQyBpbnN0YW5jZSBub3QgeWV0IGluaXRpYWxpemVkLiIpfSx4Zz1mdW5jdGlvbihlLHQpe3ZvaWQgMD09PXQmJih0PXt9KTt2YXIgbixyLG89dC5mb3JtYXQ/dC5mb3JtYXQ6Imh0bWwiO3JldHVybiBuPXQscj1vLENnKGUpLmVkaXRvci5nZXRDb250ZW50KG4scil9LFNnPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdm9pZCAwPT09biYmKG49e30pLHI9dCxvPW4sQ2coZSkuZWRpdG9yLnNldENvbnRlbnQocixvKTt2YXIgcixvfSxOZz1nYS5ET00sRWc9ZnVuY3Rpb24oZSl7cmV0dXJuIFIuZnJvbShlKS5lYWNoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmRlc3Ryb3koKX0pfSxrZz1mdW5jdGlvbihlKXtpZighZS5yZW1vdmVkKXt2YXIgdD1lLl9zZWxlY3Rpb25PdmVycmlkZXMsbj1lLmVkaXRvclVwbG9hZCxyPWUuZ2V0Qm9keSgpLG89ZS5nZXRFbGVtZW50KCk7ciYmZS5zYXZlKHtpc19yZW1vdmluZzohMH0pLGUucmVtb3ZlZD0hMCxlLnVuYmluZEFsbE5hdGl2ZUV2ZW50cygpLGUuaGFzSGlkZGVuSW5wdXQmJm8mJk5nLnJlbW92ZShvLm5leHRTaWJsaW5nKSxlLmZpcmUoInJlbW92ZSIpLGUuZWRpdG9yTWFuYWdlci5yZW1vdmUoZSksIWUuaW5saW5lJiZyJiYoaT1lLE5nLnNldFN0eWxlKGkuaWQsImRpc3BsYXkiLGkub3JnRGlzcGxheSkpLGUuZmlyZSgiZGV0YWNoIiksTmcucmVtb3ZlKGUuZ2V0Q29udGFpbmVyKCkpLEVnKHQpLEVnKG4pLGUuZGVzdHJveSgpfXZhciBpfSxfZz1mdW5jdGlvbihlLHQpe3ZhciBuLHIsbyxpPWUuc2VsZWN0aW9uLGE9ZS5kb207ZS5kZXN0cm95ZWR8fCh0fHxlLnJlbW92ZWQ/KHR8fChlLmVkaXRvck1hbmFnZXIub2ZmKCJiZWZvcmV1bmxvYWQiLGUuX2JlZm9yZVVubG9hZCksZS50aGVtZSYmZS50aGVtZS5kZXN0cm95JiZlLnRoZW1lLmRlc3Ryb3koKSxFZyhpKSxFZyhhKSksKHI9KG49ZSkuZm9ybUVsZW1lbnQpJiYoci5fbWNlT2xkU3VibWl0JiYoci5zdWJtaXQ9ci5fbWNlT2xkU3VibWl0LHIuX21jZU9sZFN1Ym1pdD1udWxsKSxOZy51bmJpbmQociwic3VibWl0IHJlc2V0IixuLmZvcm1FdmVudERlbGVnYXRlKSksKG89ZSkuY29udGVudEFyZWFDb250YWluZXI9by5mb3JtRWxlbWVudD1vLmNvbnRhaW5lcj1vLmVkaXRvckNvbnRhaW5lcj1udWxsLG8uYm9keUVsZW1lbnQ9by5jb250ZW50RG9jdW1lbnQ9by5jb250ZW50V2luZG93PW51bGwsby5pZnJhbWVFbGVtZW50PW8udGFyZ2V0RWxtPW51bGwsby5zZWxlY3Rpb24mJihvLnNlbGVjdGlvbj1vLnNlbGVjdGlvbi53aW49by5zZWxlY3Rpb24uZG9tPW8uc2VsZWN0aW9uLmRvbS5kb2M9bnVsbCksZS5kZXN0cm95ZWQ9ITApOmUucmVtb3ZlKCkpfSxSZz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LFRnPShncD1mdW5jdGlvbihlLHQpe3JldHVybiBFKGUpJiZFKHQpP1RnKGUsdCk6dH0sZnVuY3Rpb24oKXtmb3IodmFyIGU9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpLHQ9MDt0PGUubGVuZ3RoO3QrKyllW3RdPWFyZ3VtZW50c1t0XTtpZigwPT09ZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJDYW4ndCBtZXJnZSB6ZXJvIG9iamVjdHMiKTtmb3IodmFyIG49e30scj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbz1lW3JdO2Zvcih2YXIgaSBpbiBvKVJnLmNhbGwobyxpKSYmKG5baV09Z3AobltpXSxvW2ldKSl9cmV0dXJuIG59KSxBZz1udCgpLmRldmljZVR5cGUsRGc9QWcuaXNUb3VjaCgpLE9nPUFnLmlzUGhvbmUoKSxCZz1BZy5pc1RhYmxldCgpLFBnPVsibGlzdHMiLCJhdXRvbGluayIsImF1dG9zYXZlIl0sTGc9e3RhYmxlX2dyaWQ6ITEsb2JqZWN0X3Jlc2l6aW5nOiExLHJlc2l6ZTohMX0sSWc9ZnVuY3Rpb24oZSl7dmFyIHQ9ayhlKT9lLmpvaW4oIiAiKTplLG49VShxKHQpP3Quc3BsaXQoIiAiKTpbXSwkZSk7cmV0dXJuIEgobixmdW5jdGlvbihlKXtyZXR1cm4gMDxlLmxlbmd0aH0pfSxNZz1mdW5jdGlvbihuLGUpe3ZhciB0LHIsbz1jZShlLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIE0obix0KX0pO3JldHVybiB0PW8udCxyPW8uZix7c2VjdGlvbnM6eCh0KSxzZXR0aW5nczp4KHIpfX0sRmc9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5zZWN0aW9ucygpLmhhc093blByb3BlcnR5KHQpfSxVZz1mdW5jdGlvbihlLHQpe3JldHVybiBkZShlLCJ0b29sYmFyX21vZGUiKS5vclRodW5rKGZ1bmN0aW9uKCl7cmV0dXJuIGRlKGUsInRvb2xiYXJfZHJhd2VyIikubWFwKGZ1bmN0aW9uKGUpe3JldHVybiExPT09ZT8id3JhcCI6ZX0pfSkuZ2V0T3IodCl9LHpnPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvLGksYSx1LHMsYyxsLGY9SWcobi5mb3JjZWRfcGx1Z2lucyksZD1JZyhyLnBsdWdpbnMpLG09Rmcobz10LGk9Im1vYmlsZSIpP28uc2VjdGlvbnMoKVtpXTp7fSxwPW0ucGx1Z2lucz9JZyhtLnBsdWdpbnMpOmQsZz1lJiYocz11PSJtb2JpbGUiLGM9KGE9dCkuc2VjdGlvbnMoKSxGZyhhLHUpJiZjW3VdLnRoZW1lPT09cyk/SChwLE4oTSxQZykpOmUmJkZnKHQsIm1vYmlsZSIpP3A6ZCxoPShsPWcsW10uY29uY2F0KElnKGYpKS5jb25jYXQoSWcobCkpKTtyZXR1cm4gaHIuZXh0ZW5kKHIse3BsdWdpbnM6aC5qb2luKCIgIil9KX0samc9ZnVuY3Rpb24oZSx0LG4scixvKXt2YXIgaSxhLHUscyxjLGwsZixkPWU/e21vYmlsZTooaT1vLm1vYmlsZXx8e30sYT10LHU9e3Jlc2l6ZTohMSx0b29sYmFyX21vZGU6VWcoaSwic2Nyb2xsaW5nIiksdG9vbGJhcl9zdGlja3k6ITF9LHBlKHBlKHBlKHt9LExnKSx1KSxhP3ttZW51YmFyOiExfTp7fSkpfTp7fSxtPU1nKFsibW9iaWxlIl0sVGcoZCxvKSkscD1oci5leHRlbmQobixyLG0uc2V0dGluZ3MoKSwoZj1tLGUmJkZnKGYsIm1vYmlsZSIpP2Z1bmN0aW9uKGUsdCxuKXt2b2lkIDA9PT1uJiYobj17fSk7dmFyIHI9ZS5zZWN0aW9ucygpLG89ci5oYXNPd25Qcm9wZXJ0eSh0KT9yW3RdOnt9O3JldHVybiBoci5leHRlbmQoe30sbixvKX0obSwibW9iaWxlIik6e30pLHt2YWxpZGF0ZTohMCxleHRlcm5hbF9wbHVnaW5zOihzPXIsYz1tLnNldHRpbmdzKCksbD1jLmV4dGVybmFsX3BsdWdpbnM/Yy5leHRlcm5hbF9wbHVnaW5zOnt9LHMmJnMuZXh0ZXJuYWxfcGx1Z2lucz9oci5leHRlbmQoe30scy5leHRlcm5hbF9wbHVnaW5zLGwpOmwpfSk7cmV0dXJuIHpnKGUsbSxyLHApfSxIZz1mdW5jdGlvbihlLHQsbixyLG8pe3ZhciBpLGEsdSxzLGM9KGk9bixhPURnLHU9ZSxzPXtpZDp0LHRoZW1lOiJzaWx2ZXIiLHRvb2xiYXJfbW9kZTpVZyhvLCJmbG9hdGluZyIpLHBsdWdpbnM6IiIsZG9jdW1lbnRfYmFzZV91cmw6aSxhZGRfZm9ybV9zdWJtaXRfdHJpZ2dlcjohMCxzdWJtaXRfcGF0Y2g6ITAsYWRkX3VubG9hZF90cmlnZ2VyOiEwLGNvbnZlcnRfdXJsczohMCxyZWxhdGl2ZV91cmxzOiEwLHJlbW92ZV9zY3JpcHRfaG9zdDohMCxvYmplY3RfcmVzaXppbmc6ITAsZG9jdHlwZToiPCFET0NUWVBFIGh0bWw+Iix2aXN1YWw6ITAsZm9udF9zaXplX2xlZ2FjeV92YWx1ZXM6Inh4LXNtYWxsLHNtYWxsLG1lZGl1bSxsYXJnZSx4LWxhcmdlLHh4LWxhcmdlLDMwMCUiLGZvcmNlZF9yb290X2Jsb2NrOiJwIixoaWRkZW5faW5wdXQ6ITAsaW5saW5lX3N0eWxlczohMCxjb252ZXJ0X2ZvbnRzX3RvX3NwYW5zOiEwLGluZGVudDohMCxpbmRlbnRfYmVmb3JlOiJwLGgxLGgyLGgzLGg0LGg1LGg2LGJsb2NrcXVvdGUsZGl2LHRpdGxlLHN0eWxlLHByZSxzY3JpcHQsdGQsdGgsdWwsb2wsbGksZGwsZHQsZGQsYXJlYSx0YWJsZSx0aGVhZCx0Zm9vdCx0Ym9keSx0cixzZWN0aW9uLHN1bW1hcnksYXJ0aWNsZSxoZ3JvdXAsYXNpZGUsZmlndXJlLGZpZ2NhcHRpb24sb3B0aW9uLG9wdGdyb3VwLGRhdGFsaXN0IixpbmRlbnRfYWZ0ZXI6InAsaDEsaDIsaDMsaDQsaDUsaDYsYmxvY2txdW90ZSxkaXYsdGl0bGUsc3R5bGUscHJlLHNjcmlwdCx0ZCx0aCx1bCxvbCxsaSxkbCxkdCxkZCxhcmVhLHRhYmxlLHRoZWFkLHRmb290LHRib2R5LHRyLHNlY3Rpb24sc3VtbWFyeSxhcnRpY2xlLGhncm91cCxhc2lkZSxmaWd1cmUsZmlnY2FwdGlvbixvcHRpb24sb3B0Z3JvdXAsZGF0YWxpc3QiLGVudGl0eV9lbmNvZGluZzoibmFtZWQiLHVybF9jb252ZXJ0ZXI6dS5jb252ZXJ0VVJMLHVybF9jb252ZXJ0ZXJfc2NvcGU6dX0scGUocGUoe30scyksYT9MZzp7fSkpO3JldHVybiBqZyhPZ3x8QmcsT2csYyxyLG8pfSxWZz1mdW5jdGlvbihlLHQsbil7cmV0dXJuIFIuZnJvbSh0LnNldHRpbmdzW25dKS5maWx0ZXIoZSl9LHFnPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvLGksYSx1PXQgaW4gZS5zZXR0aW5ncz9lLnNldHRpbmdzW3RdOm47cmV0dXJuImhhc2giPT09cj8oYT17fSwic3RyaW5nIj09dHlwZW9mKGk9dSk/eigwPGkuaW5kZXhPZigiPSIpP2kuc3BsaXQoL1s7LF0oPyFbXj07LF0qKD86WzssXXwkKSkvKTppLnNwbGl0KCIsIiksZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zcGxpdCgiPSIpOzE8dC5sZW5ndGg/YVtoci50cmltKHRbMF0pXT1oci50cmltKHRbMV0pOmFbaHIudHJpbSh0WzBdKV09aHIudHJpbSh0WzBdKX0pOmE9aSxhKToic3RyaW5nIj09PXI/VmcocSxlLHQpLmdldE9yKG4pOiJudW1iZXIiPT09cj9WZyhPLGUsdCkuZ2V0T3Iobik6ImJvb2xlYW4iPT09cj9WZyhULGUsdCkuZ2V0T3Iobik6Im9iamVjdCI9PT1yP1ZnKEUsZSx0KS5nZXRPcihuKToiYXJyYXkiPT09cj9WZyhrLGUsdCkuZ2V0T3Iobik6InN0cmluZ1tdIj09PXI/VmcoKG89cSxmdW5jdGlvbihlKXtyZXR1cm4gayhlKSYmRyhlLG8pfSksZSx0KS5nZXRPcihuKToiZnVuY3Rpb24iPT09cj9WZyhELGUsdCkuZ2V0T3Iobik6dX0sJGc9KGhwPXt9LHthZGQ6ZnVuY3Rpb24oZSx0KXtocFtlXT10fSxnZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGhwW2VdP2hwW2VdOntpY29uczp7fX19LGhhczpmdW5jdGlvbihlKXtyZXR1cm4gbWUoaHAsZSl9fSksV2c9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC5kb20oKVtlXX0sS2c9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcGFyc2VJbnQobW4odCxlKSwxMCl9LFhnPU4oV2csImNsaWVudFdpZHRoIiksWWc9TihXZywiY2xpZW50SGVpZ2h0IiksR2c9TihLZywibWFyZ2luLXRvcCIpLEpnPU4oS2csIm1hcmdpbi1sZWZ0IiksUWc9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLG8saSxhLHUscyxjLGwsZixkLG0scD1OZS5mcm9tRG9tKGUuZ2V0Qm9keSgpKSxnPWUuaW5saW5lP3A6KHI9cCxOZS5mcm9tRG9tKHIuZG9tKCkub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpKSxoPShvPWUuaW5saW5lLGE9dCx1PW4scz0oaT1nKS5kb20oKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx7eDphLShvP3MubGVmdCtpLmRvbSgpLmNsaWVudExlZnQrSmcoaSk6MCkseTp1LShvP3MudG9wK2kuZG9tKCkuY2xpZW50VG9wK0dnKGkpOjApfSk7cmV0dXJuIGw9aC54LGY9aC55LGQ9WGcoYz1nKSxtPVlnKGMpLDA8PWwmJjA8PWYmJmw8PWQmJmY8PW19LFpnPWZ1bmN0aW9uKGUpe3ZhciB0LG49ZS5pbmxpbmU/ZS5nZXRCb2R5KCk6ZS5nZXRDb250ZW50QXJlYUNvbnRhaW5lcigpO3JldHVybiB0PW4sUi5mcm9tKHQpLm1hcChOZS5mcm9tRG9tKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHN0KGN0KGUpLGUpfSkuZ2V0T3IoITEpfTtmdW5jdGlvbiBlaChuKXt2YXIgdCxvPVtdLGk9ZnVuY3Rpb24oKXt2YXIgZT1uLnRoZW1lO3JldHVybiBlJiZlLmdldE5vdGlmaWNhdGlvbk1hbmFnZXJJbXBsP2UuZ2V0Tm90aWZpY2F0aW9uTWFuYWdlckltcGwoKTpmdW5jdGlvbiB0KCl7dmFyIGU9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIlRoZW1lIGRpZCBub3QgcHJvdmlkZSBhIE5vdGlmaWNhdGlvbk1hbmFnZXIgaW1wbGVtZW50YXRpb24uIil9O3JldHVybntvcGVuOmUsY2xvc2U6ZSxyZXBvc2l0aW9uOmUsZ2V0QXJnczplfX0oKX0sYT1mdW5jdGlvbigpezA8by5sZW5ndGgmJmkoKS5yZXBvc2l0aW9uKG8pfSx1PWZ1bmN0aW9uKHQpe1gobyxmdW5jdGlvbihlKXtyZXR1cm4gZT09PXR9KS5lYWNoKGZ1bmN0aW9uKGUpe28uc3BsaWNlKGUsMSl9KX0scj1mdW5jdGlvbihyKXtpZighbi5yZW1vdmVkJiZaZyhuKSlyZXR1cm4gSyhvLGZ1bmN0aW9uKGUpe3JldHVybiB0PWkoKS5nZXRBcmdzKGUpLG49ciwhKHQudHlwZSE9PW4udHlwZXx8dC50ZXh0IT09bi50ZXh0fHx0LnByb2dyZXNzQmFyfHx0LnRpbWVvdXR8fG4ucHJvZ3Jlc3NCYXJ8fG4udGltZW91dCk7dmFyIHQsbn0pLmdldE9yVGh1bmsoZnVuY3Rpb24oKXtuLmVkaXRvck1hbmFnZXIuc2V0QWN0aXZlKG4pO3ZhciBlLHQ9aSgpLm9wZW4ocixmdW5jdGlvbigpe3UodCksYSgpfSk7cmV0dXJuIGU9dCxvLnB1c2goZSksYSgpLHR9KX07cmV0dXJuKHQ9bikub24oIlNraW5Mb2FkZWQiLGZ1bmN0aW9uKCl7dmFyIGU9dC5zZXR0aW5ncy5zZXJ2aWNlX21lc3NhZ2U7ZSYmcih7dGV4dDplLHR5cGU6Indhcm5pbmciLHRpbWVvdXQ6MH0pfSksdC5vbigiUmVzaXplRWRpdG9yIFJlc2l6ZVdpbmRvdyBOb2RlQ2hhbmdlIixmdW5jdGlvbigpe1huLnJlcXVlc3RBbmltYXRpb25GcmFtZShhKX0pLHQub24oInJlbW92ZSIsZnVuY3Rpb24oKXt6KG8uc2xpY2UoKSxmdW5jdGlvbihlKXtpKCkuY2xvc2UoZSl9KX0pLHtvcGVuOnIsY2xvc2U6ZnVuY3Rpb24oKXtSLmZyb20ob1swXSkuZWFjaChmdW5jdGlvbihlKXtpKCkuY2xvc2UoZSksdShlKSxhKCl9KX0sZ2V0Tm90aWZpY2F0aW9uczpmdW5jdGlvbigpe3JldHVybiBvfX19dmFyIHRoPVJhLlBsdWdpbk1hbmFnZXIsbmg9UmEuVGhlbWVNYW5hZ2VyO3ZhciByaD1mdW5jdGlvbihuKXt2YXIgcj1bXSxvPWZ1bmN0aW9uKCl7dmFyIGU9bi50aGVtZTtyZXR1cm4gZSYmZS5nZXRXaW5kb3dNYW5hZ2VySW1wbD9lLmdldFdpbmRvd01hbmFnZXJJbXBsKCk6ZnVuY3Rpb24gdCgpe3ZhciBlPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJUaGVtZSBkaWQgbm90IHByb3ZpZGUgYSBXaW5kb3dNYW5hZ2VyIGltcGxlbWVudGF0aW9uLiIpfTtyZXR1cm57b3BlbjplLG9wZW5Vcmw6ZSxhbGVydDplLGNvbmZpcm06ZSxjbG9zZTplLGdldFBhcmFtczplLHNldFBhcmFtczplfX0oKX0saT1mdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0P3QuYXBwbHkoZSxhcmd1bWVudHMpOnVuZGVmaW5lZH19LGE9ZnVuY3Rpb24oZSl7dmFyIHQ7ci5wdXNoKGUpLHQ9ZSxuLmZpcmUoIk9wZW5XaW5kb3ciLHtkaWFsb2c6dH0pfSx1PWZ1bmN0aW9uKHQpe3ZhciBlO2U9dCxuLmZpcmUoIkNsb3NlV2luZG93Iix7ZGlhbG9nOmV9KSwwPT09KHI9SChyLGZ1bmN0aW9uKGUpe3JldHVybiBlIT09dH0pKS5sZW5ndGgmJm4uZm9jdXMoKX0scz1mdW5jdGlvbihlKXtuLmVkaXRvck1hbmFnZXIuc2V0QWN0aXZlKG4pLENtKG4pO3ZhciB0PWUoKTtyZXR1cm4gYSh0KSx0fTtyZXR1cm4gbi5vbigicmVtb3ZlIixmdW5jdGlvbigpe3oocixmdW5jdGlvbihlKXtvKCkuY2xvc2UoZSl9KX0pLHtvcGVuOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHMoZnVuY3Rpb24oKXtyZXR1cm4gbygpLm9wZW4oZSx0LHUpfSl9LG9wZW5Vcmw6ZnVuY3Rpb24oZSl7cmV0dXJuIHMoZnVuY3Rpb24oKXtyZXR1cm4gbygpLm9wZW5VcmwoZSx1KX0pfSxhbGVydDpmdW5jdGlvbihlLHQsbil7bygpLmFsZXJ0KGUsaShufHx0aGlzLHQpKX0sY29uZmlybTpmdW5jdGlvbihlLHQsbil7bygpLmNvbmZpcm0oZSxpKG58fHRoaXMsdCkpfSxjbG9zZTpmdW5jdGlvbigpe1IuZnJvbShyW3IubGVuZ3RoLTFdKS5lYWNoKGZ1bmN0aW9uKGUpe28oKS5jbG9zZShlKSx1KGUpfSl9fX0sb2g9ZnVuY3Rpb24oZSx0KXtlLm5vdGlmaWNhdGlvbk1hbmFnZXIub3Blbih7dHlwZToiZXJyb3IiLHRleHQ6dH0pfSxpaD1mdW5jdGlvbihlLHQpe2UuX3NraW5Mb2FkZWQ/b2goZSx0KTplLm9uKCJTa2luTG9hZGVkIixmdW5jdGlvbigpe29oKGUsdCl9KX0sYWg9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLG87cj10LG89e21lc3NhZ2U6bn0sZS5maXJlKHIsbyksVi5jb25zb2xlLmVycm9yKG4pfSx1aD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG4/IkZhaWxlZCB0byBsb2FkICIrZSsiOiAiK24rIiBmcm9tIHVybCAiK3Q6IkZhaWxlZCB0byBsb2FkICIrZSsiIHVybDogIit0fSxzaD1mdW5jdGlvbihlLHQsbil7YWgoZSwiUGx1Z2luTG9hZEVycm9yIix1aCgicGx1Z2luIix0LG4pKX0sY2g9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXRbbi0xXT1hcmd1bWVudHNbbl07dmFyIHI9Vi53aW5kb3cuY29uc29sZTtyJiYoci5lcnJvcj9yLmVycm9yLmFwcGx5KHIsZ2UoW2VdLHQpKTpyLmxvZy5hcHBseShyLGdlKFtlXSx0KSkpfSxsaD1mdW5jdGlvbih0KXt2YXIgZSxuLHI9KG49KGU9dCkuc2V0dGluZ3MuY29udGVudF9jc3MscShuKT9VKG4uc3BsaXQoIiwiKSwkZSk6ayhuKT9uOiExPT09bnx8ZS5pbmxpbmU/W106WyJkZWZhdWx0Il0pLG89dC5lZGl0b3JNYW5hZ2VyLmJhc2VVUkwrIi9za2lucy9jb250ZW50IixpPSJjb250ZW50Iit0LmVkaXRvck1hbmFnZXIuc3VmZml4KyIuY3NzIixhPSEwPT09dC5pbmxpbmU7cmV0dXJuIFUocixmdW5jdGlvbihlKXtyZXR1cm4vXlthLXowLTlcLV0rJC9pLnRlc3QoZSkmJiFhP28rIi8iK2UrIi8iK2k6dC5kb2N1bWVudEJhc2VVUkkudG9BYnNvbHV0ZShlKX0pfTt2YXIgZmg9ZnVuY3Rpb24gaEUocixvKXt2YXIgZT1mdW5jdGlvbihlKXt2YXIgdD1vKGUpO2lmKHQ8PTB8fG51bGw9PT10KXt2YXIgbj1tbihlLHIpO3JldHVybiBwYXJzZUZsb2F0KG4pfHwwfXJldHVybiB0fSxpPWZ1bmN0aW9uKG8sZSl7cmV0dXJuIFcoZSxmdW5jdGlvbihlLHQpe3ZhciBuPW1uKG8sdCkscj1uPT09dW5kZWZpbmVkPzA6cGFyc2VJbnQobiwxMCk7cmV0dXJuIGlzTmFOKHIpP2U6ZStyfSwwKX07cmV0dXJue3NldDpmdW5jdGlvbihlLHQpe2lmKCFPKHQpJiYhdC5tYXRjaCgvXlswLTldKyQvKSl0aHJvdyBuZXcgRXJyb3IocisiLnNldCBhY2NlcHRzIG9ubHkgcG9zaXRpdmUgaW50ZWdlciB2YWx1ZXMuIFZhbHVlIHdhcyAiK3QpO3ZhciBuPWUuZG9tKCk7dW4obikmJihuLnN0eWxlW3JdPXQrInB4Iil9LGdldDplLGdldE91dGVyOmUsYWdncmVnYXRlOmksbWF4OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1pKGUsbik7cmV0dXJuIHI8dD90LXI6MH19fSgiaGVpZ2h0IixmdW5jdGlvbihlKXt2YXIgdD1lLmRvbSgpO3JldHVybiBCdChlKT90LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDp0Lm9mZnNldEhlaWdodH0pLGRoPWZ1bmN0aW9uKHIsZSl7cmV0dXJuIHIudmlldyhlKS5mb2xkKHgoW10pLGZ1bmN0aW9uKGUpe3ZhciB0PXIub3duZXIoZSksbj1kaChyLHQpO3JldHVybltlXS5jb25jYXQobil9KX0sbWg9LyogKi9PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCx2aWV3OmZ1bmN0aW9uKGUpe3JldHVybihlLmRvbSgpPT09Vi5kb2N1bWVudD9SLm5vbmUoKTpSLmZyb20oZS5kb20oKS5kZWZhdWx0Vmlldy5mcmFtZUVsZW1lbnQpKS5tYXAoTmUuZnJvbURvbSl9LG93bmVyOmZ1bmN0aW9uKGUpe3JldHVybiBjdChlKX19KSxwaD1mdW5jdGlvbihlKXt2YXIgdCxuLHIsbz1OZS5mcm9tRG9tKFYuZG9jdW1lbnQpLGk9RnQobyksYT0odD1lLHI9KG49bWgpLm93bmVyKHQpLGRoKG4scikpLHU9TXQoZSkscz0kKGEsZnVuY3Rpb24oZSx0KXt2YXIgbj1NdCh0KTtyZXR1cm57bGVmdDplLmxlZnQrbi5sZWZ0KCksdG9wOmUudG9wK24udG9wKCl9fSx7bGVmdDowLHRvcDowfSk7cmV0dXJuIEx0KHMubGVmdCt1LmxlZnQoKStpLmxlZnQoKSxzLnRvcCt1LnRvcCgpK2kudG9wKCkpfSxnaD1mdW5jdGlvbihlKXtyZXR1cm4idGV4dGFyZWEiPT09UnQoZSl9LGhoPWZ1bmN0aW9uKGUsdCl7dmFyIG4scj1mdW5jdGlvbihlKXt2YXIgdD1lLmRvbSgpLm93bmVyRG9jdW1lbnQsbj10LmJvZHkscj10LmRlZmF1bHRWaWV3LG89dC5kb2N1bWVudEVsZW1lbnQ7aWYobj09PWUuZG9tKCkpcmV0dXJuIEx0KG4ub2Zmc2V0TGVmdCxuLm9mZnNldFRvcCk7dmFyIGk9SXQoci5wYWdlWU9mZnNldCxvLnNjcm9sbFRvcCksYT1JdChyLnBhZ2VYT2Zmc2V0LG8uc2Nyb2xsTGVmdCksdT1JdChvLmNsaWVudFRvcCxuLmNsaWVudFRvcCkscz1JdChvLmNsaWVudExlZnQsbi5jbGllbnRMZWZ0KTtyZXR1cm4gTXQoZSkudHJhbnNsYXRlKGEtcyxpLXUpfShlKSxvPShuPWUsZmguZ2V0KG4pKTtyZXR1cm57ZWxlbWVudDplLGJvdHRvbTpyLnRvcCgpK28saGVpZ2h0Om8scG9zOnIsY2xlYW51cDp0fX0sdmg9ZnVuY3Rpb24oZSx0KXt2YXIgbj1mdW5jdGlvbihlLHQpe3ZhciBuPWh0KGUpO2lmKDA9PT1uLmxlbmd0aHx8Z2goZSkpcmV0dXJue2VsZW1lbnQ6ZSxvZmZzZXQ6dH07aWYodDxuLmxlbmd0aCYmIWdoKG5bdF0pKXJldHVybntlbGVtZW50Om5bdF0sb2Zmc2V0OjB9O3ZhciByPW5bbi5sZW5ndGgtMV07cmV0dXJuIGdoKHIpP3tlbGVtZW50OmUsb2Zmc2V0OnR9OiJpbWciPT09UnQocik/e2VsZW1lbnQ6cixvZmZzZXQ6MX06T3Qocik/e2VsZW1lbnQ6cixvZmZzZXQ6ZWYocikubGVuZ3RofTp7ZWxlbWVudDpyLG9mZnNldDpodChyKS5sZW5ndGh9fShlLHQpLHI9TmUuZnJvbUh0bWwoJzxzcGFuIGRhdGEtbWNlLWJvZ3VzPSJhbGwiPlx1ZmVmZjwvc3Bhbj4nKTtyZXR1cm4gQ3Qobi5lbGVtZW50LHIpLGhoKHIsZnVuY3Rpb24oKXtyZXR1cm4ga3Qocil9KX0seWg9ZnVuY3Rpb24obixyLG8saSl7eGgobixmdW5jdGlvbihlLHQpe3JldHVybiBDaChuLHIsbyxpKX0sbyl9LGJoPWZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFyIGksYSx1PXtlbG06ci5lbGVtZW50LmRvbSgpLGFsaWduVG9Ub3A6b307aT11LGUuZmlyZSgiU2Nyb2xsSW50b1ZpZXciLGkpLmlzRGVmYXVsdFByZXZlbnRlZCgpfHwobih0LEZ0KHQpLnRvcCgpLHIsbyksYT11LGUuZmlyZSgiQWZ0ZXJTY3JvbGxJbnRvVmlldyIsYSkpfSxDaD1mdW5jdGlvbihlLHQsbixyKXt2YXIgbz1OZS5mcm9tRG9tKGUuZ2V0Qm9keSgpKSxpPU5lLmZyb21Eb20oZS5nZXREb2MoKSk7by5kb20oKS5vZmZzZXRXaWR0aDt2YXIgYT12aChOZS5mcm9tRG9tKG4uc3RhcnRDb250YWluZXIpLG4uc3RhcnRPZmZzZXQpO2JoKGUsaSx0LGEsciksYS5jbGVhbnVwKCl9LHdoPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvLGk9TmUuZnJvbURvbShlLmdldERvYygpKTtiaChlLGksbiwobz10LGhoKE5lLmZyb21Eb20obyksZikpLHIpfSx4aD1mdW5jdGlvbihlLHQsbil7dmFyIHI9bi5zdGFydENvbnRhaW5lcixvPW4uc3RhcnRPZmZzZXQsaT1uLmVuZENvbnRhaW5lcixhPW4uZW5kT2Zmc2V0O3QoTmUuZnJvbURvbShyKSxOZS5mcm9tRG9tKGkpKTt2YXIgdT1lLmRvbS5jcmVhdGVSbmcoKTt1LnNldFN0YXJ0KHIsbyksdS5zZXRFbmQoaSxhKSxlLnNlbGVjdGlvbi5zZXRSbmcobil9LFNoPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPWUucG9zO2lmKG4pVXQoby5sZWZ0KCksby50b3AoKSxyKTtlbHNle3ZhciBpPW8udG9wKCktdCtlLmhlaWdodDtVdChvLmxlZnQoKSxpLHIpfX0sTmg9ZnVuY3Rpb24oZSx0LG4scixvKXt2YXIgaT1uK3QsYT1yLnBvcy50b3AoKSx1PXIuYm90dG9tLHM9bjw9dS1hO2lmKGE8dClTaChyLG4sITEhPT1vLGUpO2Vsc2UgaWYoaTxhKXtTaChyLG4scz8hMSE9PW86ITA9PT1vLGUpfWVsc2UgaTx1JiYhcyYmU2gocixuLCEwPT09byxlKX0sRWg9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89ZS5kb20oKS5kZWZhdWx0Vmlldy5pbm5lckhlaWdodDtOaChlLHQsbyxuLHIpfSxraD1mdW5jdGlvbihlLHQsbixyKXt2YXIgbz1lLmRvbSgpLmRlZmF1bHRWaWV3LmlubmVySGVpZ2h0O05oKGUsdCxvLG4scik7dmFyIGk9cGgobi5lbGVtZW50KSxhPUh0KFYud2luZG93KTtpLnRvcCgpPGEueT96dChuLmVsZW1lbnQsITEhPT1yKTppLnRvcCgpPmEuYm90dG9tJiZ6dChuLmVsZW1lbnQsITA9PT1yKX0sX2g9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB5aChlLEVoLHQsbil9LFJoPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gd2goZSx0LEVoLG4pfSxUaD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHloKGUsa2gsdCxuKX0sQWg9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB3aChlLHQsa2gsbil9LERoPWZ1bmN0aW9uKGUsdCxuKXsoZS5pbmxpbmU/X2g6VGgpKGUsdCxuKX0sT2g9ZnVuY3Rpb24oZSl7cmV0dXJuIG9uKGUpfHxhbihlKX0sQmg9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLG8saSxhLHUscz1uO2lmKHMuY2FyZXRQb3NpdGlvbkZyb21Qb2ludCkobz1zLmNhcmV0UG9zaXRpb25Gcm9tUG9pbnQoZSx0KSkmJigocj1uLmNyZWF0ZVJhbmdlKCkpLnNldFN0YXJ0KG8ub2Zmc2V0Tm9kZSxvLm9mZnNldCksci5jb2xsYXBzZSghMCkpO2Vsc2UgaWYobi5jYXJldFJhbmdlRnJvbVBvaW50KXI9bi5jYXJldFJhbmdlRnJvbVBvaW50KGUsdCk7ZWxzZSBpZihzLmJvZHkuY3JlYXRlVGV4dFJhbmdlKXtyPXMuYm9keS5jcmVhdGVUZXh0UmFuZ2UoKTt0cnl7ci5tb3ZlVG9Qb2ludChlLHQpLHIuY29sbGFwc2UoITApfWNhdGNoKGMpe3I9ZnVuY3Rpb24oZSxuLHQpe3ZhciByLG8saTtpZihyPXQuZWxlbWVudEZyb21Qb2ludChlLG4pLG89dC5ib2R5LmNyZWF0ZVRleHRSYW5nZSgpLHImJiJIVE1MIiE9PXIudGFnTmFtZXx8KHI9dC5ib2R5KSxvLm1vdmVUb0VsZW1lbnRUZXh0KHIpLDA8KGk9KGk9aHIudG9BcnJheShvLmdldENsaWVudFJlY3RzKCkpKS5zb3J0KGZ1bmN0aW9uKGUsdCl7cmV0dXJuKGU9TWF0aC5hYnMoTWF0aC5tYXgoZS50b3AtbixlLmJvdHRvbS1uKSkpLSh0PU1hdGguYWJzKE1hdGgubWF4KHQudG9wLW4sdC5ib3R0b20tbikpKX0pKS5sZW5ndGgpe249KGlbMF0uYm90dG9tK2lbMF0udG9wKS8yO3RyeXtyZXR1cm4gby5tb3ZlVG9Qb2ludChlLG4pLG8uY29sbGFwc2UoITApLG99Y2F0Y2goYSl7fX1yZXR1cm4gbnVsbH0oZSx0LG4pfXJldHVybiBpPXIsYT1uLmJvZHksdT1pJiZpLnBhcmVudEVsZW1lbnQ/aS5wYXJlbnRFbGVtZW50KCk6bnVsbCxhbihmdW5jdGlvbihlLHQsbil7Zm9yKDtlJiZlIT09dDspe2lmKG4oZSkpcmV0dXJuIGU7ZT1lLnBhcmVudE5vZGV9cmV0dXJuIG51bGx9KHUsYSxPaCkpP251bGw6aX1yZXR1cm4gcn0sUGg9ZnVuY3Rpb24oZSx0LG4scixvKXt2YXIgaT1uP3Quc3RhcnRDb250YWluZXI6dC5lbmRDb250YWluZXIsYT1uP3Quc3RhcnRPZmZzZXQ6dC5lbmRPZmZzZXQ7cmV0dXJuIFIuZnJvbShpKS5tYXAoTmUuZnJvbURvbSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiByJiZ0LmNvbGxhcHNlZD9lOnZ0KGUsbyhlLGEpKS5nZXRPcihlKX0pLmJpbmQoZnVuY3Rpb24oZSl7cmV0dXJuIER0KGUpP1Iuc29tZShlKTpmdChlKS5maWx0ZXIoRHQpfSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLmRvbSgpfSkuZ2V0T3IoZSl9LExoPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gUGgoZSx0LCEwLG4sZnVuY3Rpb24oZSx0KXtyZXR1cm4gTWF0aC5taW4oZS5kb20oKS5jaGlsZE5vZGVzLmxlbmd0aCx0KX0pfSxJaD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIFBoKGUsdCwhMSxuLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIDA8dD90LTE6dH0pfSxNaD1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1lO2UmJlp0KGUpJiYwPT09ZS5sZW5ndGg7KWU9dD9lLm5leHRTaWJsaW5nOmUucHJldmlvdXNTaWJsaW5nO3JldHVybiBlfHxufSxGaD1mdW5jdGlvbihlLHQpe3ZvaWQgMD09PXQmJih0PXt9KTt2YXIgbixyLG89dC5mb3JtYXQ/dC5mb3JtYXQ6Imh0bWwiO3JldHVybiBuPW8scj10LHdnKGUpLnNlbGVjdGlvbi5nZXRDb250ZW50KG4scil9LFVoPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJnQmJmUuc3RhcnRDb250YWluZXI9PT10LnN0YXJ0Q29udGFpbmVyJiZlLnN0YXJ0T2Zmc2V0PT09dC5zdGFydE9mZnNldCYmZS5lbmRDb250YWluZXI9PT10LmVuZENvbnRhaW5lciYmZS5lbmRPZmZzZXQ9PT10LmVuZE9mZnNldH0semg9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBudWxsIT09ZnVuY3Rpb24oZSx0LG4pe2Zvcig7ZSYmZSE9PXQ7KXtpZihuKGUpKXJldHVybiBlO2U9ZS5wYXJlbnROb2RlfXJldHVybiBudWxsfShlLHQsbil9LGpoPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gemgoZSx0LGZ1bmN0aW9uKGUpe3JldHVybiBlLm5vZGVOYW1lPT09bn0pfSxIaD1mdW5jdGlvbihlKXtyZXR1cm4gZSYmIlRBQkxFIj09PWUubm9kZU5hbWV9LFZoPWZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9bmV3IHJhKHQsZS5nZXRQYXJlbnQodC5wYXJlbnROb2RlLGUuaXNCbG9jayl8fGUuZ2V0Um9vdCgpKTt0PXJbbj8icHJldiI6Im5leHQiXSgpOylpZihybih0KSlyZXR1cm4hMH0scWg9ZnVuY3Rpb24oZSx0LG4scixvKXt2YXIgaSxhLHU9ZS5nZXRSb290KCkscz1lLnNjaGVtYS5nZXROb25FbXB0eUVsZW1lbnRzKCksYz1lLmdldFBhcmVudChvLnBhcmVudE5vZGUsZS5pc0Jsb2NrKXx8dTtpZihyJiZybihvKSYmdCYmZS5pc0VtcHR5KGMpKXJldHVybiBSLnNvbWUobHMoby5wYXJlbnROb2RlLGUubm9kZUluZGV4KG8pKSk7Zm9yKHZhciBsLGYsZD1uZXcgcmEobyxjKTthPWRbcj8icHJldiI6Im5leHQiXSgpOyl7aWYoImZhbHNlIj09PWUuZ2V0Q29udGVudEVkaXRhYmxlUGFyZW50KGEpfHwoZj11LGd1KGw9YSkmJiExPT09emgobCxmLE1zKSkpcmV0dXJuIFIubm9uZSgpO2lmKFp0KGEpJiYwPGEubm9kZVZhbHVlLmxlbmd0aClyZXR1cm4hMT09PWpoKGEsdSwiQSIpP1Iuc29tZShscyhhLHI/YS5ub2RlVmFsdWUubGVuZ3RoOjApKTpSLm5vbmUoKTtpZihlLmlzQmxvY2soYSl8fHNbYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSlyZXR1cm4gUi5ub25lKCk7aT1hfXJldHVybiBuJiZpP1Iuc29tZShscyhpLDApKTpSLm5vbmUoKX0sJGg9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG8saSxhLHUscyxjLGwsZixkLG09ZS5nZXRSb290KCkscD0hMTtpZihvPXJbKG4/InN0YXJ0IjoiZW5kIikrIkNvbnRhaW5lciJdLGk9clsobj8ic3RhcnQiOiJlbmQiKSsiT2Zmc2V0Il0sYz0kdChvKSYmaT09PW8uY2hpbGROb2Rlcy5sZW5ndGgsdT1lLnNjaGVtYS5nZXROb25FbXB0eUVsZW1lbnRzKCkscz1uLGd1KG8pKXJldHVybiBSLm5vbmUoKTtpZigkdChvKSYmaT5vLmNoaWxkTm9kZXMubGVuZ3RoLTEmJihzPSExKSx0bihvKSYmKG89bSxpPTApLG89PT1tKXtpZihzJiYoYT1vLmNoaWxkTm9kZXNbMDxpP2ktMTowXSkpe2lmKGd1KGEpKXJldHVybiBSLm5vbmUoKTtpZih1W2Eubm9kZU5hbWVdfHxIaChhKSlyZXR1cm4gUi5ub25lKCl9aWYoby5oYXNDaGlsZE5vZGVzKCkpe2lmKGk9TWF0aC5taW4oIXMmJjA8aT9pLTE6aSxvLmNoaWxkTm9kZXMubGVuZ3RoLTEpLG89by5jaGlsZE5vZGVzW2ldLGk9WnQobykmJmM/by5kYXRhLmxlbmd0aDowLCF0JiZvPT09bS5sYXN0Q2hpbGQmJkhoKG8pKXJldHVybiBSLm5vbmUoKTtpZihmdW5jdGlvbihlLHQpe2Zvcig7dCYmdCE9PWU7KXtpZihhbih0KSlyZXR1cm4hMDt0PXQucGFyZW50Tm9kZX1yZXR1cm4hMX0obSxvKXx8Z3UobykpcmV0dXJuIFIubm9uZSgpO2lmKG8uaGFzQ2hpbGROb2RlcygpJiYhMT09PUhoKG8pKXt2YXIgZz1uZXcgcmEoYT1vLG0pO2Rve2lmKGFuKGEpfHxndShhKSl7cD0hMTticmVha31pZihadChhKSYmMDxhLm5vZGVWYWx1ZS5sZW5ndGgpe2k9cz8wOmEubm9kZVZhbHVlLmxlbmd0aCxvPWEscD0hMDticmVha31pZih1W2Eubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0mJighKGw9YSl8fCEvXihURHxUSHxDQVBUSU9OKSQvLnRlc3QobC5ub2RlTmFtZSkpKXtpPWUubm9kZUluZGV4KGEpLG89YS5wYXJlbnROb2RlLHN8fGkrKyxwPSEwO2JyZWFrfX13aGlsZShhPXM/Zy5uZXh0KCk6Zy5wcmV2KCkpfX19cmV0dXJuIHQmJihadChvKSYmMD09PWkmJnFoKGUsYyx0LCEwLG8pLmVhY2goZnVuY3Rpb24oZSl7bz1lLmNvbnRhaW5lcigpLGk9ZS5vZmZzZXQoKSxwPSEwfSksJHQobykmJighKGE9KGE9by5jaGlsZE5vZGVzW2ldKXx8by5jaGlsZE5vZGVzW2ktMV0pfHwhcm4oYSl8fChkPSJBIiwoZj1hKS5wcmV2aW91c1NpYmxpbmcmJmYucHJldmlvdXNTaWJsaW5nLm5vZGVOYW1lPT09ZCl8fFZoKGUsYSwhMSl8fFZoKGUsYSwhMCl8fHFoKGUsYyx0LCEwLGEpLmVhY2goZnVuY3Rpb24oZSl7bz1lLmNvbnRhaW5lcigpLGk9ZS5vZmZzZXQoKSxwPSEwfSkpKSxzJiYhdCYmWnQobykmJmk9PT1vLm5vZGVWYWx1ZS5sZW5ndGgmJnFoKGUsYyx0LCExLG8pLmVhY2goZnVuY3Rpb24oZSl7bz1lLmNvbnRhaW5lcigpLGk9ZS5vZmZzZXQoKSxwPSEwfSkscD9SLnNvbWUobHMobyxpKSk6Ui5ub25lKCl9LFdoPWZ1bmN0aW9uKGUsdCl7dmFyIG49dC5jb2xsYXBzZWQscj10LmNsb25lUmFuZ2UoKSxvPWxzLmZyb21SYW5nZVN0YXJ0KHQpO3JldHVybiAkaChlLG4sITAscikuZWFjaChmdW5jdGlvbihlKXtuJiZscy5pc0Fib3ZlKG8sZSl8fHIuc2V0U3RhcnQoZS5jb250YWluZXIoKSxlLm9mZnNldCgpKX0pLG58fCRoKGUsbiwhMSxyKS5lYWNoKGZ1bmN0aW9uKGUpe3Iuc2V0RW5kKGUuY29udGFpbmVyKCksZS5vZmZzZXQoKSl9KSxuJiZyLmNvbGxhcHNlKCEwKSxVaCh0LHIpP1Iubm9uZSgpOlIuc29tZShyKX0sS2g9ZnVuY3Rpb24oZSl7cmV0dXJuIDA9PT1lLmRvbSgpLmxlbmd0aD8oa3QoZSksUi5ub25lKCkpOlIuc29tZShlKX0sWGg9ZnVuY3Rpb24ocixlKXt2YXIgdD1SLmZyb20oZS5maXJzdENoaWxkKS5tYXAoTmUuZnJvbURvbSksbj1SLmZyb20oZS5sYXN0Q2hpbGQpLm1hcChOZS5mcm9tRG9tKTtyLmRlbGV0ZUNvbnRlbnRzKCksci5pbnNlcnROb2RlKGUpO3ZhciBvPXQuYmluZChkdCkuZmlsdGVyKE90KS5iaW5kKEtoKSxpPW4uYmluZChtdCkuZmlsdGVyKE90KS5iaW5kKEtoKTskdShvLHQuZmlsdGVyKE90KSxmdW5jdGlvbihlLHQpe3ZhciBuLHI7bj10LmRvbSgpLHI9ZS5kb20oKS5kYXRhLG4uaW5zZXJ0RGF0YSgwLHIpLGt0KGUpfSksJHUoaSxuLmZpbHRlcihPdCksZnVuY3Rpb24oZSx0KXt2YXIgbj10LmRvbSgpLmxlbmd0aDt0LmRvbSgpLmFwcGVuZERhdGEoZS5kb20oKS5kYXRhKSxyLnNldEVuZCh0LmRvbSgpLG4pLGt0KGUpfSksci5jb2xsYXBzZSghMSl9LFloPWZ1bmN0aW9uKGUsdCxuKXt2b2lkIDA9PT1uJiYobj17fSk7dmFyIHIsbz0ocj10LHBlKHBlKHtmb3JtYXQ6Imh0bWwifSxuKSx7c2V0OiEwLHNlbGVjdGlvbjohMCxjb250ZW50OnJ9KSk7aWYoby5ub19ldmVudHN8fCEobz1lLmZpcmUoIkJlZm9yZVNldENvbnRlbnQiLG8pKS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSl7bi5jb250ZW50PWZ1bmN0aW9uKGUsdCl7aWYoInJhdyI9PT10LmZvcm1hdClyZXR1cm4gdC5jb250ZW50O3ZhciBuPWUucGFyc2VyLnBhcnNlKHQuY29udGVudCxwZSh7aXNSb290Q29udGVudDohMCxmb3JjZWRfcm9vdF9ibG9jazohMX0sdCkpO3JldHVybiBoZih7dmFsaWRhdGU6ZS52YWxpZGF0ZX0sZS5zY2hlbWEpLnNlcmlhbGl6ZShuKX0oZSxvKTt2YXIgaT1lLnNlbGVjdGlvbi5nZXRSbmcoKTtYaChpLGkuY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KG4uY29udGVudCkpLGUuc2VsZWN0aW9uLnNldFJuZyhpKSxEaChlLGkpLG8ubm9fZXZlbnRzfHxlLmZpcmUoIlNldENvbnRlbnQiLG8pfWVsc2UgZS5maXJlKCJTZXRDb250ZW50IixvKX07ZnVuY3Rpb24gR2goZSl7cmV0dXJue2dldEJvb2ttYXJrOk4oc2wsZSksbW92ZVRvQm9va21hcms6TihjbCxlKX19KEdoPUdofHx7fSkuaXNCb29rbWFya05vZGU9bGw7dmFyIEpoPUdoLFFoPWZ1bmN0aW9uKHQsbixlKXtpZihlLmNvbGxhcHNlZClyZXR1cm4hMTtpZihyci5icm93c2VyLmlzSUUoKSYmZS5zdGFydE9mZnNldD09PWUuZW5kT2Zmc2V0LTEmJmUuc3RhcnRDb250YWluZXI9PT1lLmVuZENvbnRhaW5lcil7dmFyIHI9ZS5zdGFydENvbnRhaW5lci5jaGlsZE5vZGVzW2Uuc3RhcnRPZmZzZXRdO2lmKCR0KHIpKXJldHVybiBGKHIuZ2V0Q2xpZW50UmVjdHMoKSxmdW5jdGlvbihlKXtyZXR1cm4genUoZSx0LG4pfSl9cmV0dXJuIEYoZS5nZXRDbGllbnRSZWN0cygpLGZ1bmN0aW9uKGUpe3JldHVybiB6dShlLHQsbil9KX0sWmg9e0JBQ0tTUEFDRTo4LERFTEVURTo0NixET1dOOjQwLEVOVEVSOjEzLExFRlQ6MzcsUklHSFQ6MzksU1BBQ0VCQVI6MzIsVEFCOjksVVA6MzgsRU5EOjM1LEhPTUU6MzYsbW9kaWZpZXJQcmVzc2VkOmZ1bmN0aW9uKGUpe3JldHVybiBlLnNoaWZ0S2V5fHxlLmN0cmxLZXl8fGUuYWx0S2V5fHx0aGlzLm1ldGFLZXlQcmVzc2VkKGUpfSxtZXRhS2V5UHJlc3NlZDpmdW5jdGlvbihlKXtyZXR1cm4gcnIubWFjP2UubWV0YUtleTplLmN0cmxLZXkmJiFlLmFsdEtleX19LGV2PWFuLHR2PW9uLG52PWZ1bmN0aW9uKHIscyl7dmFyIGMsbCxmLGEsZCxtLHAsZyxoLHYseSxiLEMsdyx4LFMsTixFPXMuZG9tLHU9aHIuZWFjaCxrPXMuZ2V0RG9jKCksXz1WLmRvY3VtZW50LFI9TWF0aC5hYnMsVD1NYXRoLnJvdW5kLEE9cy5nZXRCb2R5KCk7YT17bnc6WzAsMCwtMSwtMV0sbmU6WzEsMCwxLC0xXSxzZTpbMSwxLDEsMV0sc3c6WzAsMSwtMSwxXX07dmFyIEQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJigiSU1HIj09PWUubm9kZU5hbWV8fHMuZG9tLmlzKGUsImZpZ3VyZS5pbWFnZSIpKX0sbj1mdW5jdGlvbihlKXt2YXIgdD1lLnRhcmdldDshZnVuY3Rpb24oZSx0KXtpZigibG9uZ3ByZXNzIiE9PWUudHlwZSYmMCE9PWUudHlwZS5pbmRleE9mKCJ0b3VjaCIpKXJldHVybiBEKGUudGFyZ2V0KSYmIVFoKGUuY2xpZW50WCxlLmNsaWVudFksdCk7dmFyIG49ZS50b3VjaGVzWzBdO3JldHVybiBEKGUudGFyZ2V0KSYmIVFoKG4uY2xpZW50WCxuLmNsaWVudFksdCl9KGUscy5zZWxlY3Rpb24uZ2V0Um5nKCkpfHxlLmlzRGVmYXVsdFByZXZlbnRlZCgpfHxzLnNlbGVjdGlvbi5zZWxlY3QodCl9LE89ZnVuY3Rpb24oZSl7cmV0dXJuIHMuZG9tLmlzKGUsImZpZ3VyZS5pbWFnZSIpP2UucXVlcnlTZWxlY3RvcigiaW1nIik6ZX0sQj1mdW5jdGlvbihlKXt2YXIgdD1zLmdldFBhcmFtKCJvYmplY3RfcmVzaXppbmciKTtyZXR1cm4hMSE9PXQmJiFyci5pT1MmJigic3RyaW5nIiE9dHlwZW9mIHQmJih0PSJ0YWJsZSxpbWcsZmlndXJlLmltYWdlLGRpdiIpLCJmYWxzZSIhPT1lLmdldEF0dHJpYnV0ZSgiZGF0YS1tY2UtcmVzaXplIikmJihlIT09cy5nZXRCb2R5KCkmJm90KE5lLmZyb21Eb20oZSksdCkpKX0sUD1mdW5jdGlvbihlLHQsbil7RS5zZXRTdHlsZXMoTyhlKSx7d2lkdGg6dCxoZWlnaHQ6bn0pfSxMPWZ1bmN0aW9uKGUpe3ZhciB0LG4scixvLGksYSx1O3Q9ZS5zY3JlZW5YLW0sbj1lLnNjcmVlblktcCx3PXQqZFsyXSt2LHg9bipkWzNdK3ksdz13PDU/NTp3LHg9eDw1PzU6eCwoRChjKSYmITEhPT1zLmdldFBhcmFtKCJyZXNpemVfaW1nX3Byb3BvcnRpb25hbCIsITAsImJvb2xlYW4iKT8hWmgubW9kaWZpZXJQcmVzc2VkKGUpOlpoLm1vZGlmaWVyUHJlc3NlZChlKSkmJihSKHQpPlIobik/KHg9VCh3KmIpLHc9VCh4L2IpKToodz1UKHgvYikseD1UKHcqYikpKSxQKGwsdyx4KSxyPTA8KHI9ZC5zdGFydFBvcy54K3QpP3I6MCxvPTA8KG89ZC5zdGFydFBvcy55K24pP286MCxFLnNldFN0eWxlcyhmLHtsZWZ0OnIsdG9wOm8sZGlzcGxheToiYmxvY2sifSksZi5pbm5lckhUTUw9dysiICZ0aW1lczsgIit4LGRbMl08MCYmbC5jbGllbnRXaWR0aDw9dyYmRS5zZXRTdHlsZShsLCJsZWZ0IixnKyh2LXcpKSxkWzNdPDAmJmwuY2xpZW50SGVpZ2h0PD14JiZFLnNldFN0eWxlKGwsInRvcCIsaCsoeS14KSksKHQ9QS5zY3JvbGxXaWR0aC1TKSsobj1BLnNjcm9sbEhlaWdodC1OKSE9PTAmJkUuc2V0U3R5bGVzKGYse2xlZnQ6ci10LHRvcDpvLW59KSxDfHwoaT1jLGE9dix1PXkscy5maXJlKCJPYmplY3RSZXNpemVTdGFydCIse3RhcmdldDppLHdpZHRoOmEsaGVpZ2h0OnV9KSxDPSEwKX0sST1mdW5jdGlvbigpe3ZhciBlPUM7Qz0hMTt2YXIgdCxuLHIsbz1mdW5jdGlvbihlLHQpe3QmJihjLnN0eWxlW2VdfHwhcy5zY2hlbWEuaXNWYWxpZChjLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksZSk/RS5zZXRTdHlsZShPKGMpLGUsdCk6RS5zZXRBdHRyaWIoTyhjKSxlLCIiK3QpKX07ZSYmKG8oIndpZHRoIix3KSxvKCJoZWlnaHQiLHgpKSxFLnVuYmluZChrLCJtb3VzZW1vdmUiLEwpLEUudW5iaW5kKGssIm1vdXNldXAiLEkpLF8hPT1rJiYoRS51bmJpbmQoXywibW91c2Vtb3ZlIixMKSxFLnVuYmluZChfLCJtb3VzZXVwIixJKSksRS5yZW1vdmUobCksRS5yZW1vdmUoZiksaShjKSxlJiYodD1jLG49dyxyPXgscy5maXJlKCJPYmplY3RSZXNpemVkIix7dGFyZ2V0OnQsd2lkdGg6bixoZWlnaHQ6cn0pLEUuc2V0QXR0cmliKGMsInN0eWxlIixFLmdldEF0dHJpYihjLCJzdHlsZSIpKSkscy5ub2RlQ2hhbmdlZCgpfSxpPWZ1bmN0aW9uKGUpe3ZhciB0LHIsbyxuLGk7TSgpLFUoKSx0PUUuZ2V0UG9zKGUsQSksZz10LngsaD10LnksaT1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHI9aS53aWR0aHx8aS5yaWdodC1pLmxlZnQsbz1pLmhlaWdodHx8aS5ib3R0b20taS50b3AsYyE9PWUmJihjPWUsdz14PTApLG49cy5maXJlKCJPYmplY3RTZWxlY3RlZCIse3RhcmdldDplfSksQihlKSYmIW4uaXNEZWZhdWx0UHJldmVudGVkKCk/dShhLGZ1bmN0aW9uKG4sZSl7dmFyIHQ7KHQ9RS5nZXQoIm1jZVJlc2l6ZUhhbmRsZSIrZSkpJiZFLnJlbW92ZSh0KSx0PUUuYWRkKEEsImRpdiIse2lkOiJtY2VSZXNpemVIYW5kbGUiK2UsImRhdGEtbWNlLWJvZ3VzIjoiYWxsIiwiY2xhc3MiOiJtY2UtcmVzaXplaGFuZGxlIix1bnNlbGVjdGFibGU6ITAsc3R5bGU6ImN1cnNvcjoiK2UrIi1yZXNpemU7IG1hcmdpbjowOyBwYWRkaW5nOjAifSksMTE9PT1yci5pZSYmKHQuY29udGVudEVkaXRhYmxlPSExKSxFLmJpbmQodCwibW91c2Vkb3duIixmdW5jdGlvbihlKXt2YXIgdDtlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLGUucHJldmVudERlZmF1bHQoKSxtPSh0PWUpLnNjcmVlblgscD10LnNjcmVlblksdj1PKGMpLmNsaWVudFdpZHRoLHk9TyhjKS5jbGllbnRIZWlnaHQsYj15L3YsKGQ9bikuc3RhcnRQb3M9e3g6cipuWzBdK2cseTpvKm5bMV0raH0sUz1BLnNjcm9sbFdpZHRoLE49QS5zY3JvbGxIZWlnaHQsbD1jLmNsb25lTm9kZSghMCksRS5hZGRDbGFzcyhsLCJtY2UtY2xvbmVkcmVzaXphYmxlIiksRS5zZXRBdHRyaWIobCwiZGF0YS1tY2UtYm9ndXMiLCJhbGwiKSxsLmNvbnRlbnRFZGl0YWJsZT0hMSxsLnVuU2VsZWN0YWJlPSEwLEUuc2V0U3R5bGVzKGwse2xlZnQ6Zyx0b3A6aCxtYXJnaW46MH0pLFAobCxyLG8pLGwucmVtb3ZlQXR0cmlidXRlKCJkYXRhLW1jZS1zZWxlY3RlZCIpLEEuYXBwZW5kQ2hpbGQobCksRS5iaW5kKGssIm1vdXNlbW92ZSIsTCksRS5iaW5kKGssIm1vdXNldXAiLEkpLF8hPT1rJiYoRS5iaW5kKF8sIm1vdXNlbW92ZSIsTCksRS5iaW5kKF8sIm1vdXNldXAiLEkpKSxmPUUuYWRkKEEsImRpdiIseyJjbGFzcyI6Im1jZS1yZXNpemUtaGVscGVyIiwiZGF0YS1tY2UtYm9ndXMiOiJhbGwifSx2KyIgJnRpbWVzOyAiK3kpfSksbi5lbG09dCxFLnNldFN0eWxlcyh0LHtsZWZ0OnIqblswXStnLXQub2Zmc2V0V2lkdGgvMix0b3A6bypuWzFdK2gtdC5vZmZzZXRIZWlnaHQvMn0pfSk6TSgpLGMuc2V0QXR0cmlidXRlKCJkYXRhLW1jZS1zZWxlY3RlZCIsIjEiKX0sTT1mdW5jdGlvbigpe1UoKSxjJiZjLnJlbW92ZUF0dHJpYnV0ZSgiZGF0YS1tY2Utc2VsZWN0ZWQiKSxvZShhLGZ1bmN0aW9uKGUsdCl7dmFyIG49RS5nZXQoIm1jZVJlc2l6ZUhhbmRsZSIrdCk7biYmKEUudW5iaW5kKG4pLEUucmVtb3ZlKG4pKX0pfSxvPWZ1bmN0aW9uKGUpe3ZhciB0LG49ZnVuY3Rpb24oZSx0KXtpZihlKWRve2lmKGU9PT10KXJldHVybiEwfXdoaWxlKGU9ZS5wYXJlbnROb2RlKX07Q3x8cy5yZW1vdmVkfHwodShFLnNlbGVjdCgiaW1nW2RhdGEtbWNlLXNlbGVjdGVkXSxocltkYXRhLW1jZS1zZWxlY3RlZF0iKSxmdW5jdGlvbihlKXtlLnJlbW92ZUF0dHJpYnV0ZSgiZGF0YS1tY2Utc2VsZWN0ZWQiKX0pLHQ9Im1vdXNlZG93biI9PT1lLnR5cGU/ZS50YXJnZXQ6ci5nZXROb2RlKCksbih0PUUuJCh0KS5jbG9zZXN0KCJ0YWJsZSxpbWcsZmlndXJlLmltYWdlLGhyIilbMF0sQSkmJih6KCksbihyLmdldFN0YXJ0KCEwKSx0KSYmbihyLmdldEVuZCghMCksdCkpP2kodCk6TSgpKX0sRj1mdW5jdGlvbihlKXtyZXR1cm4gZXYoZnVuY3Rpb24oZSx0KXtmb3IoO3QmJnQhPT1lOyl7aWYodHYodCl8fGV2KHQpKXJldHVybiB0O3Q9dC5wYXJlbnROb2RlfXJldHVybiBudWxsfShzLmdldEJvZHkoKSxlKSl9LFU9ZnVuY3Rpb24oKXtvZShhLGZ1bmN0aW9uKGUpe2UuZWxtJiYoRS51bmJpbmQoZS5lbG0pLGRlbGV0ZSBlLmVsbSl9KX0sej1mdW5jdGlvbigpe3RyeXtzLmdldERvYygpLmV4ZWNDb21tYW5kKCJlbmFibGVPYmplY3RSZXNpemluZyIsITEsITEpfWNhdGNoKGUpe319O3Mub24oImluaXQiLGZ1bmN0aW9uKCl7aWYoeigpLHJyLmJyb3dzZXIuaXNJRSgpfHxyci5icm93c2VyLmlzRWRnZSgpKXtzLm9uKCJtb3VzZWRvd24gY2xpY2siLGZ1bmN0aW9uKGUpe3ZhciB0PWUudGFyZ2V0LG49dC5ub2RlTmFtZTtDfHwhL14oVEFCTEV8SU1HfEhSKSQvLnRlc3Qobil8fEYodCl8fCgyIT09ZS5idXR0b24mJnMuc2VsZWN0aW9uLnNlbGVjdCh0LCJUQUJMRSI9PT1uKSwibW91c2Vkb3duIj09PWUudHlwZSYmcy5ub2RlQ2hhbmdlZCgpKX0pO3ZhciBlPWZ1bmN0aW9uKGUpe3ZhciB0PWZ1bmN0aW9uKGUpe1huLnNldEVkaXRvclRpbWVvdXQocyxmdW5jdGlvbigpe3JldHVybiBzLnNlbGVjdGlvbi5zZWxlY3QoZSl9KX07aWYoRihlLnRhcmdldCkpcmV0dXJuIGUucHJldmVudERlZmF1bHQoKSx2b2lkIHQoZS50YXJnZXQpOy9eKFRBQkxFfElNR3xIUikkLy50ZXN0KGUudGFyZ2V0Lm5vZGVOYW1lKSYmKGUucHJldmVudERlZmF1bHQoKSwiSU1HIj09PWUudGFyZ2V0LnRhZ05hbWUmJnQoZS50YXJnZXQpKX07RS5iaW5kKEEsIm1zY29udHJvbHNlbGVjdCIsZSkscy5vbigicmVtb3ZlIixmdW5jdGlvbigpe3JldHVybiBFLnVuYmluZChBLCJtc2NvbnRyb2xzZWxlY3QiLGUpfSl9dmFyIHQ9WG4udGhyb3R0bGUoZnVuY3Rpb24oZSl7cy5jb21wb3Npbmd8fG8oZSl9KTtzLm9uKCJub2RlY2hhbmdlIFJlc2l6ZUVkaXRvciBSZXNpemVXaW5kb3cgUmVzaXplQ29udGVudCBkcm9wIEZ1bGxzY3JlZW5TdGF0ZUNoYW5nZWQiLHQpLHMub24oImtleXVwIGNvbXBvc2l0aW9uZW5kIixmdW5jdGlvbihlKXtjJiYiVEFCTEUiPT09Yy5ub2RlTmFtZSYmdChlKX0pLHMub24oImhpZGUgYmx1ciIsTSkscy5vbigiY29udGV4dG1lbnUgbG9uZ3ByZXNzIixuLCEwKX0pLHMub24oInJlbW92ZSIsVSk7cmV0dXJue2lzUmVzaXphYmxlOkIsc2hvd1Jlc2l6ZVJlY3Q6aSxoaWRlUmVzaXplUmVjdDpNLHVwZGF0ZVJlc2l6ZVJlY3Q6byxkZXN0cm95OmZ1bmN0aW9uKCl7Yz1sPW51bGx9fX0scnY9ZnVuY3Rpb24oZSx0LG4pe2lmKGUmJmUuaGFzT3duUHJvcGVydHkodCkpe3ZhciByPUgoZVt0XSxmdW5jdGlvbihlKXtyZXR1cm4gZSE9PW59KTswPT09ci5sZW5ndGg/ZGVsZXRlIGVbdF06ZVt0XT1yfX07dmFyIG92PWZ1bmN0aW9uKGUpe3JldHVybiEhZS5zZWxlY3R9LGl2PWZ1bmN0aW9uKGUpe3JldHVybiEoIWV8fCFlLm93bmVyRG9jdW1lbnQpJiZzdChOZS5mcm9tRG9tKGUub3duZXJEb2N1bWVudCksTmUuZnJvbURvbShlKSl9LGF2PWZ1bmN0aW9uKHUscyxlLGMpe3ZhciBuLHQsbCxmLHI9ZnVuY3Rpb24gaChpLG4pe3ZhciBhLHU7cmV0dXJue3NlbGVjdG9yQ2hhbmdlZFdpdGhVbmJpbmQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYXx8KGE9e30sdT17fSxuLm9uKCJOb2RlQ2hhbmdlIixmdW5jdGlvbihlKXt2YXIgbj1lLmVsZW1lbnQscj1pLmdldFBhcmVudHMobixudWxsLGkuZ2V0Um9vdCgpKSxvPXt9O2hyLmVhY2goYSxmdW5jdGlvbihlLG4pe2hyLmVhY2gocixmdW5jdGlvbih0KXtpZihpLmlzKHQsbikpcmV0dXJuIHVbbl18fChoci5lYWNoKGUsZnVuY3Rpb24oZSl7ZSghMCx7bm9kZTp0LHNlbGVjdG9yOm4scGFyZW50czpyfSl9KSx1W25dPWUpLG9bbl09ZSwhMX0pfSksaHIuZWFjaCh1LGZ1bmN0aW9uKGUsdCl7b1t0XXx8KGRlbGV0ZSB1W3RdLGhyLmVhY2goZSxmdW5jdGlvbihlKXtlKCExLHtub2RlOm4sc2VsZWN0b3I6dCxwYXJlbnRzOnJ9KX0pKX0pfSkpLGFbZV18fChhW2VdPVtdKSxhW2VdLnB1c2godCkse3VuYmluZDpmdW5jdGlvbigpe3J2KGEsZSx0KSxydih1LGUsdCl9fX19fSh1LGMpLnNlbGVjdG9yQ2hhbmdlZFdpdGhVbmJpbmQsbz1mdW5jdGlvbihlLHQpe3JldHVybiBZaChjLGUsdCl9LGk9ZnVuY3Rpb24oZSl7dmFyIHQ9bSgpO3QuY29sbGFwc2UoISFlKSxhKHQpfSxkPWZ1bmN0aW9uKCl7cmV0dXJuIHMuZ2V0U2VsZWN0aW9uP3MuZ2V0U2VsZWN0aW9uKCk6cy5kb2N1bWVudC5zZWxlY3Rpb259LG09ZnVuY3Rpb24oKXt2YXIgZSx0LG4scixvPWZ1bmN0aW9uKGUsdCxuKXt0cnl7cmV0dXJuIHQuY29tcGFyZUJvdW5kYXJ5UG9pbnRzKGUsbil9Y2F0Y2gocil7cmV0dXJuLTF9fTtpZighcylyZXR1cm4gbnVsbDtpZihudWxsPT0ocj1zLmRvY3VtZW50KSlyZXR1cm4gbnVsbDtpZihjLmJvb2ttYXJrIT09dW5kZWZpbmVkJiYhMT09PVBtKGMpKXt2YXIgaT13bShjKTtpZihpLmlzU29tZSgpKXJldHVybiBpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gRnAoYyxbZV0pWzBdfSkuZ2V0T3Ioci5jcmVhdGVSYW5nZSgpKX10cnl7KGU9ZCgpKSYmIXF0KGUuYW5jaG9yTm9kZSkmJih0PTA8ZS5yYW5nZUNvdW50P2UuZ2V0UmFuZ2VBdCgwKTplLmNyZWF0ZVJhbmdlP2UuY3JlYXRlUmFuZ2UoKTpyLmNyZWF0ZVJhbmdlKCkpfWNhdGNoKGEpe31yZXR1cm4odD0odD1GcChjLFt0XSlbMF0pfHwoci5jcmVhdGVSYW5nZT9yLmNyZWF0ZVJhbmdlKCk6ci5ib2R5LmNyZWF0ZVRleHRSYW5nZSgpKSkuc2V0U3RhcnQmJjk9PT10LnN0YXJ0Q29udGFpbmVyLm5vZGVUeXBlJiZ0LmNvbGxhcHNlZCYmKG49dS5nZXRSb290KCksdC5zZXRTdGFydChuLDApLHQuc2V0RW5kKG4sMCkpLGwmJmYmJigwPT09byh0LlNUQVJUX1RPX1NUQVJULHQsbCkmJjA9PT1vKHQuRU5EX1RPX0VORCx0LGwpP3Q9ZjpmPWw9bnVsbCksdH0sYT1mdW5jdGlvbihlLHQpe3ZhciBuLHI7aWYoKG89ZSkmJihvdihvKXx8aXYoby5zdGFydENvbnRhaW5lcikmJml2KG8uZW5kQ29udGFpbmVyKSkpe3ZhciBvLGk9b3YoZSk/ZTpudWxsO2lmKGkpe2Y9bnVsbDt0cnl7aS5zZWxlY3QoKX1jYXRjaChhKXt9fWVsc2V7aWYobj1kKCksZT1jLmZpcmUoIlNldFNlbGVjdGlvblJhbmdlIix7cmFuZ2U6ZSxmb3J3YXJkOnR9KS5yYW5nZSxuKXtmPWU7dHJ5e24ucmVtb3ZlQWxsUmFuZ2VzKCksbi5hZGRSYW5nZShlKX1jYXRjaChhKXt9ITE9PT10JiZuLmV4dGVuZCYmKG4uY29sbGFwc2UoZS5lbmRDb250YWluZXIsZS5lbmRPZmZzZXQpLG4uZXh0ZW5kKGUuc3RhcnRDb250YWluZXIsZS5zdGFydE9mZnNldCkpLGw9MDxuLnJhbmdlQ291bnQ/bi5nZXRSYW5nZUF0KDApOm51bGx9ZS5jb2xsYXBzZWR8fGUuc3RhcnRDb250YWluZXIhPT1lLmVuZENvbnRhaW5lcnx8IW4uc2V0QmFzZUFuZEV4dGVudHx8cnIuaWV8fGUuZW5kT2Zmc2V0LWUuc3RhcnRPZmZzZXQ8MiYmZS5zdGFydENvbnRhaW5lci5oYXNDaGlsZE5vZGVzKCkmJihyPWUuc3RhcnRDb250YWluZXIuY2hpbGROb2Rlc1tlLnN0YXJ0T2Zmc2V0XSkmJiJJTUciPT09ci50YWdOYW1lJiYobi5zZXRCYXNlQW5kRXh0ZW50KGUuc3RhcnRDb250YWluZXIsZS5zdGFydE9mZnNldCxlLmVuZENvbnRhaW5lcixlLmVuZE9mZnNldCksbi5hbmNob3JOb2RlPT09ZS5zdGFydENvbnRhaW5lciYmbi5mb2N1c05vZGU9PT1lLmVuZENvbnRhaW5lcnx8bi5zZXRCYXNlQW5kRXh0ZW50KHIsMCxyLDEpKSxjLmZpcmUoIkFmdGVyU2V0U2VsZWN0aW9uUmFuZ2UiLHtyYW5nZTplLGZvcndhcmQ6dH0pfX19LHA9ZnVuY3Rpb24oKXt2YXIgZSx0LG49ZCgpO3JldHVybiEobiYmbi5hbmNob3JOb2RlJiZuLmZvY3VzTm9kZSl8fCgoZT11LmNyZWF0ZVJuZygpKS5zZXRTdGFydChuLmFuY2hvck5vZGUsbi5hbmNob3JPZmZzZXQpLGUuY29sbGFwc2UoITApLCh0PXUuY3JlYXRlUm5nKCkpLnNldFN0YXJ0KG4uZm9jdXNOb2RlLG4uZm9jdXNPZmZzZXQpLHQuY29sbGFwc2UoITApLGUuY29tcGFyZUJvdW5kYXJ5UG9pbnRzKGUuU1RBUlRfVE9fU1RBUlQsdCk8PTApfSxnPXtib29rbWFya01hbmFnZXI6bnVsbCxjb250cm9sU2VsZWN0aW9uOm51bGwsZG9tOnUsd2luOnMsc2VyaWFsaXplcjplLGVkaXRvcjpjLGNvbGxhcHNlOmksc2V0Q3Vyc29yTG9jYXRpb246ZnVuY3Rpb24oZSx0KXt2YXIgbj11LmNyZWF0ZVJuZygpO2U/KG4uc2V0U3RhcnQoZSx0KSxuLnNldEVuZChlLHQpLGEobiksaSghMSkpOihZbCh1LG4sYy5nZXRCb2R5KCksITApLGEobikpfSxnZXRDb250ZW50OmZ1bmN0aW9uKGUpe3JldHVybiBGaChjLGUpfSxzZXRDb250ZW50Om8sZ2V0Qm9va21hcms6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbi5nZXRCb29rbWFyayhlLHQpfSxtb3ZlVG9Cb29rbWFyazpmdW5jdGlvbihlKXtyZXR1cm4gbi5tb3ZlVG9Cb29rbWFyayhlKX0sc2VsZWN0OmZ1bmN0aW9uKGUsdCl7dmFyIHIsbixvO3JldHVybiByPXUsbj1lLG89dCxSLmZyb20obikubWFwKGZ1bmN0aW9uKGUpe3ZhciB0PXIubm9kZUluZGV4KGUpLG49ci5jcmVhdGVSbmcoKTtyZXR1cm4gbi5zZXRTdGFydChlLnBhcmVudE5vZGUsdCksbi5zZXRFbmQoZS5wYXJlbnROb2RlLHQrMSksbyYmKFlsKHIsbixlLCEwKSxZbChyLG4sZSwhMSkpLG59KS5lYWNoKGEpLGV9LGlzQ29sbGFwc2VkOmZ1bmN0aW9uKCl7dmFyIGU9bSgpLHQ9ZCgpO3JldHVybiEoIWV8fGUuaXRlbSkmJihlLmNvbXBhcmVFbmRQb2ludHM/MD09PWUuY29tcGFyZUVuZFBvaW50cygiU3RhcnRUb0VuZCIsZSk6IXR8fGUuY29sbGFwc2VkKX0saXNGb3J3YXJkOnAsc2V0Tm9kZTpmdW5jdGlvbihlKXtyZXR1cm4gbyh1LmdldE91dGVySFRNTChlKSksZX0sZ2V0Tm9kZTpmdW5jdGlvbigpe3JldHVybiBlPWMuZ2V0Qm9keSgpLCh0PW0oKSk/KHI9dC5zdGFydENvbnRhaW5lcixvPXQuZW5kQ29udGFpbmVyLGk9dC5zdGFydE9mZnNldCxhPXQuZW5kT2Zmc2V0LG49dC5jb21tb25BbmNlc3RvckNvbnRhaW5lciwhdC5jb2xsYXBzZWQmJihyPT09byYmYS1pPDImJnIuaGFzQ2hpbGROb2RlcygpJiYobj1yLmNoaWxkTm9kZXNbaV0pLDM9PT1yLm5vZGVUeXBlJiYzPT09by5ub2RlVHlwZSYmKHI9ci5sZW5ndGg9PT1pP01oKHIubmV4dFNpYmxpbmcsITApOnIucGFyZW50Tm9kZSxvPTA9PT1hP01oKG8ucHJldmlvdXNTaWJsaW5nLCExKTpvLnBhcmVudE5vZGUsciYmcj09PW8pKT9yOm4mJjM9PT1uLm5vZGVUeXBlP24ucGFyZW50Tm9kZTpuKTplO3ZhciBlLHQsbixyLG8saSxhfSxnZXRTZWw6ZCxzZXRSbmc6YSxnZXRSbmc6bSxnZXRTdGFydDpmdW5jdGlvbihlKXtyZXR1cm4gTGgoYy5nZXRCb2R5KCksbSgpLGUpfSxnZXRFbmQ6ZnVuY3Rpb24oZSl7cmV0dXJuIEloKGMuZ2V0Qm9keSgpLG0oKSxlKX0sZ2V0U2VsZWN0ZWRCbG9ja3M6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSx0LG4scil7dmFyIG8saSxhPVtdO2lmKGk9ZS5nZXRSb290KCksbj1lLmdldFBhcmVudChufHxMaChpLHQsdC5jb2xsYXBzZWQpLGUuaXNCbG9jaykscj1lLmdldFBhcmVudChyfHxJaChpLHQsdC5jb2xsYXBzZWQpLGUuaXNCbG9jayksbiYmbiE9PWkmJmEucHVzaChuKSxuJiZyJiZuIT09cilmb3IodmFyIHU9bmV3IHJhKG89bixpKTsobz11Lm5leHQoKSkmJm8hPT1yOyllLmlzQmxvY2sobykmJmEucHVzaChvKTtyZXR1cm4gciYmbiE9PXImJnIhPT1pJiZhLnB1c2gociksYX0odSxtKCksZSx0KX0sbm9ybWFsaXplOmZ1bmN0aW9uKCl7dmFyIGU9bSgpLHQ9ZCgpO2lmKDE8SGwodCkubGVuZ3RofHwhR2woYykpcmV0dXJuIGU7dmFyIG49V2godSxlKTtyZXR1cm4gbi5lYWNoKGZ1bmN0aW9uKGUpe2EoZSxwKCkpfSksbi5nZXRPcihlKX0sc2VsZWN0b3JDaGFuZ2VkOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHIoZSx0KSxnfSxzZWxlY3RvckNoYW5nZWRXaXRoVW5iaW5kOnIsZ2V0U2Nyb2xsQ29udGFpbmVyOmZ1bmN0aW9uKCl7Zm9yKHZhciBlLHQ9dS5nZXRSb290KCk7dCYmIkJPRFkiIT09dC5ub2RlTmFtZTspe2lmKHQuc2Nyb2xsSGVpZ2h0PnQuY2xpZW50SGVpZ2h0KXtlPXQ7YnJlYWt9dD10LnBhcmVudE5vZGV9cmV0dXJuIGV9LHNjcm9sbEludG9WaWV3OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHI9ZSxvPXQsdm9pZCgobj1jKS5pbmxpbmU/Umg6QWgpKG4scixvKTt2YXIgbixyLG99LHBsYWNlQ2FyZXRBdDpmdW5jdGlvbihlLHQpe3JldHVybiBhKEJoKGUsdCxjLmdldERvYygpKSl9LGdldEJvdW5kaW5nQ2xpZW50UmVjdDpmdW5jdGlvbigpe3ZhciBlPW0oKTtyZXR1cm4gZS5jb2xsYXBzZWQ/bXMuZnJvbVJhbmdlU3RhcnQoZSkuZ2V0Q2xpZW50UmVjdHMoKVswXTplLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpfSxkZXN0cm95OmZ1bmN0aW9uKCl7cz1sPWY9bnVsbCx0LmRlc3Ryb3koKX19O3JldHVybiBuPUpoKGcpLHQ9bnYoZyxjKSxnLmJvb2ttYXJrTWFuYWdlcj1uLGcuY29udHJvbFNlbGVjdGlvbj10LGd9LHV2PWZ1bmN0aW9uKGUsYSx1KXtlLmFkZE5vZGVGaWx0ZXIoImZvbnQiLGZ1bmN0aW9uKGUpe3ooZSxmdW5jdGlvbihlKXt2YXIgdCxuPWEucGFyc2UoZS5hdHRyKCJzdHlsZSIpKSxyPWUuYXR0cigiY29sb3IiKSxvPWUuYXR0cigiZmFjZSIpLGk9ZS5hdHRyKCJzaXplIik7ciYmKG4uY29sb3I9ciksbyYmKG5bImZvbnQtZmFtaWx5Il09byksaSYmKG5bImZvbnQtc2l6ZSJdPXVbcGFyc2VJbnQoZS5hdHRyKCJzaXplIiksMTApLTFdKSxlLm5hbWU9InNwYW4iLGUuYXR0cigic3R5bGUiLGEuc2VyaWFsaXplKG4pKSx0PWUseihbImNvbG9yIiwiZmFjZSIsInNpemUiXSxmdW5jdGlvbihlKXt0LmF0dHIoZSxudWxsKX0pfSl9KX0sc3Y9ZnVuY3Rpb24oZSx0KXt2YXIgbixyPWFvKCk7dC5jb252ZXJ0X2ZvbnRzX3RvX3NwYW5zJiZ1dihlLHIsaHIuZXhwbG9kZSh0LmZvbnRfc2l6ZV9sZWdhY3lfdmFsdWVzKSksbj1yLGUuYWRkTm9kZUZpbHRlcigic3RyaWtlIixmdW5jdGlvbihlKXt6KGUsZnVuY3Rpb24oZSl7dmFyIHQ9bi5wYXJzZShlLmF0dHIoInN0eWxlIikpO3RbInRleHQtZGVjb3JhdGlvbiJdPSJsaW5lLXRocm91Z2giLGUubmFtZT0ic3BhbiIsZS5hdHRyKCJzdHlsZSIsbi5zZXJpYWxpemUodCkpfSl9KX0sY3Y9ZnVuY3Rpb24oZSl7dmFyIHQsbixyPWRlY29kZVVSSUNvbXBvbmVudChlKS5zcGxpdCgiLCIpO3JldHVybihuPS9kYXRhOihbXjtdKykvLmV4ZWMoclswXSkpJiYodD1uWzFdKSx7dHlwZTp0LGRhdGE6clsxXX19LGx2PWZ1bmN0aW9uKGUsdCl7dmFyIG47dHJ5e249Vi5hdG9iKHQpfWNhdGNoKHBFKXtyZXR1cm4gUi5ub25lKCl9Zm9yKHZhciByPW5ldyBVaW50OEFycmF5KG4ubGVuZ3RoKSxvPTA7bzxyLmxlbmd0aDtvKyspcltvXT1uLmNoYXJDb2RlQXQobyk7cmV0dXJuIFIuc29tZShuZXcgVi5CbG9iKFtyXSx7dHlwZTplfSkpfSxmdj1mdW5jdGlvbihlKXtyZXR1cm4gMD09PWUuaW5kZXhPZigiYmxvYjoiKT8oaT1lLG5ldyBNbihmdW5jdGlvbihlLHQpe3ZhciBuPWZ1bmN0aW9uKCl7dCgiQ2Fubm90IGNvbnZlcnQgIitpKyIgdG8gQmxvYi4gUmVzb3VyY2UgbWlnaHQgbm90IGV4aXN0IG9yIGlzIGluYWNjZXNzaWJsZS4iKX07dHJ5e3ZhciByPW5ldyBWLlhNTEh0dHBSZXF1ZXN0O3Iub3BlbigiR0VUIixpLCEwKSxyLnJlc3BvbnNlVHlwZT0iYmxvYiIsci5vbmxvYWQ9ZnVuY3Rpb24oKXsyMDA9PT10aGlzLnN0YXR1cz9lKHRoaXMucmVzcG9uc2UpOm4oKX0sci5vbmVycm9yPW4sci5zZW5kKCl9Y2F0Y2gobyl7bigpfX0pKTowPT09ZS5pbmRleE9mKCJkYXRhOiIpPyhvPWUsbmV3IE1uKGZ1bmN0aW9uKGUpe3ZhciB0PWN2KG8pLG49dC50eXBlLHI9dC5kYXRhO2x2KG4scikuZm9sZChmdW5jdGlvbigpe3JldHVybiBlKG5ldyBWLkJsb2IoW10pKX0sZSl9KSk6bnVsbDt2YXIgaSxvfSxkdj0wLG12PWZ1bmN0aW9uKGUpe3JldHVybihlfHwiYmxvYmlkIikrZHYrK30scHY9ZnVuY3Rpb24ocixvLGksdCl7dmFyIGEsdTtpZigwIT09by5zcmMuaW5kZXhPZigiYmxvYjoiKSl7dmFyIGU9Y3Yoby5zcmMpLG49ZS5kYXRhLHM9ZS50eXBlO2E9biwodT1yLmdldEJ5RGF0YShhLHMpKT9pKHtpbWFnZTpvLGJsb2JJbmZvOnV9KTpmdihvLnNyYykudGhlbihmdW5jdGlvbihlKXt1PXIuY3JlYXRlKG12KCksZSxhKSxyLmFkZCh1KSxpKHtpbWFnZTpvLGJsb2JJbmZvOnV9KX0sZnVuY3Rpb24oZSl7dChlKX0pfWVsc2UodT1yLmdldEJ5VXJpKG8uc3JjKSk/aSh7aW1hZ2U6byxibG9iSW5mbzp1fSk6ZnYoby5zcmMpLnRoZW4oZnVuY3Rpb24odCl7dmFyIG47bj10LG5ldyBNbihmdW5jdGlvbihlKXt2YXIgdD1uZXcgVi5GaWxlUmVhZGVyO3Qub25sb2FkZW5kPWZ1bmN0aW9uKCl7ZSh0LnJlc3VsdCl9LHQucmVhZEFzRGF0YVVSTChuKX0pLnRoZW4oZnVuY3Rpb24oZSl7YT1jdihlKS5kYXRhLHU9ci5jcmVhdGUobXYoKSx0LGEpLHIuYWRkKHUpLGkoe2ltYWdlOm8sYmxvYkluZm86dX0pfSl9LGZ1bmN0aW9uKGUpe3QoZSl9KX07ZnVuY3Rpb24gZ3YoaSxhKXt2YXIgdT17fTtyZXR1cm57ZmluZEFsbDpmdW5jdGlvbihlLG4pe3ZhciB0LHI7bj1ufHx4KCEwKSx0PUgoKHI9ZSk/dGUoci5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW1nIikpOltdLGZ1bmN0aW9uKGUpe3ZhciB0PWUuc3JjO3JldHVybiEhcnIuZmlsZUFwaSYmKCFlLmhhc0F0dHJpYnV0ZSgiZGF0YS1tY2UtYm9ndXMiKSYmKCFlLmhhc0F0dHJpYnV0ZSgiZGF0YS1tY2UtcGxhY2Vob2xkZXIiKSYmKCEoIXR8fHQ9PT1yci50cmFuc3BhcmVudFNyYykmJigwPT09dC5pbmRleE9mKCJibG9iOiIpPyFpLmlzVXBsb2FkZWQodCkmJm4oZSk6MD09PXQuaW5kZXhPZigiZGF0YToiKSYmbihlKSkpKSl9KTt2YXIgbz1VKHQsZnVuY3Rpb24obil7aWYodVtuLnNyY10hPT11bmRlZmluZWQpcmV0dXJuIG5ldyBNbihmdW5jdGlvbih0KXt1W24uc3JjXS50aGVuKGZ1bmN0aW9uKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gZTt0KHtpbWFnZTpuLGJsb2JJbmZvOmUuYmxvYkluZm99KX0pfSk7dmFyIGU9bmV3IE1uKGZ1bmN0aW9uKGUsdCl7cHYoYSxuLGUsdCl9KS50aGVuKGZ1bmN0aW9uKGUpe3JldHVybiBkZWxldGUgdVtlLmltYWdlLnNyY10sZX0pWyJjYXRjaCJdKGZ1bmN0aW9uKGUpe3JldHVybiBkZWxldGUgdVtuLnNyY10sZX0pO3JldHVybiB1W24uc3JjXT1lfSk7cmV0dXJuIE1uLmFsbChvKX19fXZhciBodj1mdW5jdGlvbihlLHQsbixyKXsoZS5wYWRkX2VtcHR5X3dpdGhfYnJ8fHQuaW5zZXJ0KSYmbltyLm5hbWVdP3IuZW1wdHkoKS5hcHBlbmQobmV3IGRmKCJiciIsMSkpLnNob3J0RW5kZWQ9ITA6ci5lbXB0eSgpLmFwcGVuZChuZXcgZGYoIiN0ZXh0IiwzKSkudmFsdWU9b299LHZ2PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJmUuZmlyc3RDaGlsZCYmZS5maXJzdENoaWxkPT09ZS5sYXN0Q2hpbGQmJmUuZmlyc3RDaGlsZC5uYW1lPT09dH0seXY9ZnVuY3Rpb24ocixlLHQsbil7cmV0dXJuIG4uaXNFbXB0eShlLHQsZnVuY3Rpb24oZSl7cmV0dXJuIHQ9ZSwobj1yLmdldEVsZW1lbnRSdWxlKHQubmFtZSkpJiZuLnBhZGRFbXB0eTt2YXIgdCxufSl9LGJ2PWZ1bmN0aW9uKGUsdCl7dmFyIHI9dC5ibG9iX2NhY2hlLG49ZnVuY3Rpb24odCl7dmFyIGUsbj10LmF0dHIoInNyYyIpO24hPT1yci50cmFuc3BhcmVudFNyYyYmKChlPS9kYXRhOihbXjtdKyk7YmFzZTY0LChbYS16MC05XCtcLz1dKykvaS5leGVjKG4pKT9SLnNvbWUoe3R5cGU6ZVsxXSxkYXRhOmRlY29kZVVSSUNvbXBvbmVudChlWzJdKX0pOlIubm9uZSgpKS5iaW5kKGZ1bmN0aW9uKGUpe3ZhciB0PWUudHlwZSxuPWUuZGF0YTtyZXR1cm4gUi5mcm9tKHIuZ2V0QnlEYXRhKG4sdCkpLm9yVGh1bmsoZnVuY3Rpb24oKXtyZXR1cm4gbHYodCxuKS5tYXAoZnVuY3Rpb24oZSl7dmFyIHQ9ci5jcmVhdGUobXYoKSxlLG4pO3JldHVybiByLmFkZCh0KSx0fSl9KX0pLmVhY2goZnVuY3Rpb24oZSl7dC5hdHRyKCJzcmMiLGUuYmxvYlVyaSgpKX0pfTtyJiZlLmFkZEF0dHJpYnV0ZUZpbHRlcigic3JjIixmdW5jdGlvbihlKXtyZXR1cm4geihlLG4pfSl9LEN2PWZ1bmN0aW9uKGUsZyl7dmFyIGg9ZS5zY2hlbWE7Zy5yZW1vdmVfdHJhaWxpbmdfYnJzJiZlLmFkZE5vZGVGaWx0ZXIoImJyIixmdW5jdGlvbihlLHQsbil7dmFyIHIsbyxpLGEsdSxzLGMsbCxmPWUubGVuZ3RoLGQ9aHIuZXh0ZW5kKHt9LGguZ2V0QmxvY2tFbGVtZW50cygpKSxtPWguZ2V0Tm9uRW1wdHlFbGVtZW50cygpLHA9aC5nZXROb25FbXB0eUVsZW1lbnRzKCk7Zm9yKGQuYm9keT0xLHI9MDtyPGY7cisrKWlmKGk9KG89ZVtyXSkucGFyZW50LGRbby5wYXJlbnQubmFtZV0mJm89PT1pLmxhc3RDaGlsZCl7Zm9yKHU9by5wcmV2O3U7KXtpZigic3BhbiIhPT0ocz11Lm5hbWUpfHwiYm9va21hcmsiIT09dS5hdHRyKCJkYXRhLW1jZS10eXBlIikpe2lmKCJiciIhPT1zKWJyZWFrO2lmKCJiciI9PT1zKXtvPW51bGw7YnJlYWt9fXU9dS5wcmV2fW8mJihvLnJlbW92ZSgpLHl2KGgsbSxwLGkpJiYoYz1oLmdldEVsZW1lbnRSdWxlKGkubmFtZSkpJiYoYy5yZW1vdmVFbXB0eT9pLnJlbW92ZSgpOmMucGFkZEVtcHR5JiZodihnLG4sZCxpKSkpfWVsc2V7Zm9yKGE9bztpJiZpLmZpcnN0Q2hpbGQ9PT1hJiZpLmxhc3RDaGlsZD09PWEmJiFkWyhhPWkpLm5hbWVdOylpPWkucGFyZW50O2E9PT1pJiYhMCE9PWcucGFkZF9lbXB0eV93aXRoX2JyJiYoKGw9bmV3IGRmKCIjdGV4dCIsMykpLnZhbHVlPW9vLG8ucmVwbGFjZShsKSl9fSksZS5hZGRBdHRyaWJ1dGVGaWx0ZXIoImhyZWYiLGZ1bmN0aW9uKGUpe3ZhciB0PWUubGVuZ3RoLG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZT9oci50cmltKGUpOiIiO3JldHVybi9cYihub29wZW5lcilcYi9nLnRlc3QodCk/dDp0LnNwbGl0KCIgIikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiAwPGUubGVuZ3RofSkuY29uY2F0KFsibm9vcGVuZXIiXSkuc29ydCgpLmpvaW4oIiAiKX07aWYoIWcuYWxsb3dfdW5zYWZlX2xpbmtfdGFyZ2V0KWZvcig7dC0tOyl7dmFyIHI9ZVt0XTsiYSI9PT1yLm5hbWUmJiJfYmxhbmsiPT09ci5hdHRyKCJ0YXJnZXQiKSYmci5hdHRyKCJyZWwiLG4oci5hdHRyKCJyZWwiKSkpfX0pLGcuYWxsb3dfaHRtbF9pbl9uYW1lZF9hbmNob3J8fGUuYWRkQXR0cmlidXRlRmlsdGVyKCJpZCxuYW1lIixmdW5jdGlvbihlKXtmb3IodmFyIHQsbixyLG8saT1lLmxlbmd0aDtpLS07KWlmKCJhIj09PShvPWVbaV0pLm5hbWUmJm8uZmlyc3RDaGlsZCYmIW8uYXR0cigiaHJlZiIpKWZvcihyPW8ucGFyZW50LHQ9by5sYXN0Q2hpbGQ7bj10LnByZXYsci5pbnNlcnQodCxvKSx0PW47KTt9KSxnLmZpeF9saXN0X2VsZW1lbnRzJiZlLmFkZE5vZGVGaWx0ZXIoInVsLG9sIixmdW5jdGlvbihlKXtmb3IodmFyIHQsbixyPWUubGVuZ3RoO3ItLTspaWYoInVsIj09PShuPSh0PWVbcl0pLnBhcmVudCkubmFtZXx8Im9sIj09PW4ubmFtZSlpZih0LnByZXYmJiJsaSI9PT10LnByZXYubmFtZSl0LnByZXYuYXBwZW5kKHQpO2Vsc2V7dmFyIG89bmV3IGRmKCJsaSIsMSk7by5hdHRyKCJzdHlsZSIsImxpc3Qtc3R5bGUtdHlwZTogbm9uZSIpLHQud3JhcChvKX19KSxnLnZhbGlkYXRlJiZoLmdldFZhbGlkQ2xhc3NlcygpJiZlLmFkZEF0dHJpYnV0ZUZpbHRlcigiY2xhc3MiLGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxuLHIsbyxpLGEsdSxzPWUubGVuZ3RoLGM9aC5nZXRWYWxpZENsYXNzZXMoKTtzLS07KXtmb3Iobj0odD1lW3NdKS5hdHRyKCJjbGFzcyIpLnNwbGl0KCIgIiksaT0iIixyPTA7cjxuLmxlbmd0aDtyKyspbz1uW3JdLHU9ITEsKGE9Y1siKiJdKSYmYVtvXSYmKHU9ITApLGE9Y1t0Lm5hbWVdLCF1JiZhJiZhW29dJiYodT0hMCksdSYmKGkmJihpKz0iICIpLGkrPW8pO2kubGVuZ3RofHwoaT1udWxsKSx0LmF0dHIoImNsYXNzIixpKX19KSxidihlLGcpfSx3dj1oci5tYWtlTWFwLHh2PWhyLmVhY2gsU3Y9aHIuZXhwbG9kZSxOdj1oci5leHRlbmQsRXY9ZnVuY3Rpb24oUixUKXt2b2lkIDA9PT1UJiYoVD1ubygpKTt2YXIgQT17fSxEPVtdLE89e30sQj17fTsoUj1SfHx7fSkudmFsaWRhdGU9ISgidmFsaWRhdGUiaW4gUil8fFIudmFsaWRhdGUsUi5yb290X25hbWU9Ui5yb290X25hbWV8fCJib2R5Ijt2YXIgZSx0LFA9ZnVuY3Rpb24oZSl7dmFyIHQsbixyOyhuPWUubmFtZSlpbiBBJiYoKHI9T1tuXSk/ci5wdXNoKGUpOk9bbl09W2VdKSx0PUQubGVuZ3RoO2Zvcig7dC0tOykobj1EW3RdLm5hbWUpaW4gZS5hdHRyaWJ1dGVzLm1hcCYmKChyPUJbbl0pP3IucHVzaChlKTpCW25dPVtlXSk7cmV0dXJuIGV9LG49e3NjaGVtYTpULGFkZEF0dHJpYnV0ZUZpbHRlcjpmdW5jdGlvbihlLG4pe3h2KFN2KGUpLGZ1bmN0aW9uKGUpe3ZhciB0O2Zvcih0PTA7dDxELmxlbmd0aDt0KyspaWYoRFt0XS5uYW1lPT09ZSlyZXR1cm4gdm9pZCBEW3RdLmNhbGxiYWNrcy5wdXNoKG4pO0QucHVzaCh7bmFtZTplLGNhbGxiYWNrczpbbl19KX0pfSxnZXRBdHRyaWJ1dGVGaWx0ZXJzOmZ1bmN0aW9uKCl7cmV0dXJuW10uY29uY2F0KEQpfSxhZGROb2RlRmlsdGVyOmZ1bmN0aW9uKGUsbil7eHYoU3YoZSksZnVuY3Rpb24oZSl7dmFyIHQ9QVtlXTt0fHwoQVtlXT10PVtdKSx0LnB1c2gobil9KX0sZ2V0Tm9kZUZpbHRlcnM6ZnVuY3Rpb24oKXt2YXIgZT1bXTtmb3IodmFyIHQgaW4gQSlBLmhhc093blByb3BlcnR5KHQpJiZlLnB1c2goe25hbWU6dCxjYWxsYmFja3M6QVt0XX0pO3JldHVybiBlfSxmaWx0ZXJOb2RlOlAscGFyc2U6ZnVuY3Rpb24oZSx1KXt2YXIgdCxuLHIsbyxpLGEscyxjLGwsZixkLG09W107dT11fHx7fSxPPXt9LEI9e30sbD1Odih3digic2NyaXB0LHN0eWxlLGhlYWQsaHRtbCxib2R5LHRpdGxlLG1ldGEscGFyYW0iKSxULmdldEJsb2NrRWxlbWVudHMoKSk7dmFyIHAsZz1ULmdldE5vbkVtcHR5RWxlbWVudHMoKSxoPVQuY2hpbGRyZW4sdj1SLnZhbGlkYXRlLHk9ImZvcmNlZF9yb290X2Jsb2NrImluIHU/dS5mb3JjZWRfcm9vdF9ibG9jazpSLmZvcmNlZF9yb290X2Jsb2NrLGI9ITE9PT0ocD15KT8iIjohMD09PXA/InAiOnAsQz1ULmdldFdoaXRlU3BhY2VFbGVtZW50cygpLHc9L15bIFx0XHJcbl0rLyx4PS9bIFx0XHJcbl0rJC8sUz0vWyBcdFxyXG5dKy9nLE49L15bIFx0XHJcbl0rJC87Zj1DLmhhc093blByb3BlcnR5KHUuY29udGV4dCl8fEMuaGFzT3duUHJvcGVydHkoUi5yb290X25hbWUpO3ZhciBFPWZ1bmN0aW9uKGUsdCl7dmFyIG4scj1uZXcgZGYoZSx0KTtyZXR1cm4gZSBpbiBBJiYoKG49T1tlXSk/bi5wdXNoKHIpOk9bZV09W3JdKSxyfSxrPWZ1bmN0aW9uKGUpe3ZhciB0LG4scixvLGk9VC5nZXRCbG9ja0VsZW1lbnRzKCk7Zm9yKHQ9ZS5wcmV2O3QmJjM9PT10LnR5cGU7KXtpZigwPChyPXQudmFsdWUucmVwbGFjZSh4LCIiKSkubGVuZ3RoKXJldHVybiB2b2lkKHQudmFsdWU9cik7aWYobj10Lm5leHQpe2lmKDM9PT1uLnR5cGUmJm4udmFsdWUubGVuZ3RoKXt0PXQucHJldjtjb250aW51ZX1pZighaVtuLm5hbWVdJiYic2NyaXB0IiE9PW4ubmFtZSYmInN0eWxlIiE9PW4ubmFtZSl7dD10LnByZXY7Y29udGludWV9fW89dC5wcmV2LHQucmVtb3ZlKCksdD1vfX07dD1rZih7dmFsaWRhdGU6dixhbGxvd19zY3JpcHRfdXJsczpSLmFsbG93X3NjcmlwdF91cmxzLGFsbG93X2NvbmRpdGlvbmFsX2NvbW1lbnRzOlIuYWxsb3dfY29uZGl0aW9uYWxfY29tbWVudHMscHJlc2VydmVfY2RhdGE6Ui5wcmVzZXJ2ZV9jZGF0YSxzZWxmX2Nsb3NpbmdfZWxlbWVudHM6ZnVuY3Rpb24oZSl7dmFyIHQsbj17fTtmb3IodCBpbiBlKSJsaSIhPT10JiYicCIhPT10JiYoblt0XT1lW3RdKTtyZXR1cm4gbn0oVC5nZXRTZWxmQ2xvc2luZ0VsZW1lbnRzKCkpLGNkYXRhOmZ1bmN0aW9uKGUpe2QuYXBwZW5kKEUoIiNjZGF0YSIsNCkpLnZhbHVlPWV9LHRleHQ6ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG87Znx8KGU9ZS5yZXBsYWNlKFMsIiAiKSxyPWQubGFzdENoaWxkLG89bCxyJiYob1tyLm5hbWVdfHwiYnIiPT09ci5uYW1lKSYmKGU9ZS5yZXBsYWNlKHcsIiIpKSksMCE9PWUubGVuZ3RoJiYoKG49RSgiI3RleHQiLDMpKS5yYXc9ISF0LGQuYXBwZW5kKG4pLnZhbHVlPWUpfSxjb21tZW50OmZ1bmN0aW9uKGUpe2QuYXBwZW5kKEUoIiNjb21tZW50Iiw4KSkudmFsdWU9ZX0scGk6ZnVuY3Rpb24oZSx0KXtkLmFwcGVuZChFKGUsNykpLnZhbHVlPXQsayhkKX0sZG9jdHlwZTpmdW5jdGlvbihlKXtkLmFwcGVuZChFKCIjZG9jdHlwZSIsMTApKS52YWx1ZT1lLGsoZCl9LHN0YXJ0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixvLGksYSx1O2lmKGk9dj9ULmdldEVsZW1lbnRSdWxlKGUpOnt9KXtmb3IoKHI9RShpLm91dHB1dE5hbWV8fGUsMSkpLmF0dHJpYnV0ZXM9dCxyLnNob3J0RW5kZWQ9bixkLmFwcGVuZChyKSwodT1oW2QubmFtZV0pJiZoW3IubmFtZV0mJiF1W3IubmFtZV0mJm0ucHVzaChyKSxvPUQubGVuZ3RoO28tLTspKGE9RFtvXS5uYW1lKWluIHQubWFwJiYoKHM9QlthXSk/cy5wdXNoKHIpOkJbYV09W3JdKTtsW2VdJiZrKHIpLG58fChkPXIpLCFmJiZDW2VdJiYoZj0hMCl9fSxlbmQ6ZnVuY3Rpb24oZSl7dmFyIHQsbixyLG8saSxhO2lmKG49dj9ULmdldEVsZW1lbnRSdWxlKGUpOnt9KXtpZihsW2VdJiYhZil7aWYoKHQ9ZC5maXJzdENoaWxkKSYmMz09PXQudHlwZSlpZigwPChyPXQudmFsdWUucmVwbGFjZSh3LCIiKSkubGVuZ3RoKXQudmFsdWU9cix0PXQubmV4dDtlbHNlIGZvcihvPXQubmV4dCx0LnJlbW92ZSgpLHQ9bzt0JiYzPT09dC50eXBlOylyPXQudmFsdWUsbz10Lm5leHQsMCE9PXIubGVuZ3RoJiYhTi50ZXN0KHIpfHwodC5yZW1vdmUoKSx0PW8pLHQ9bztpZigodD1kLmxhc3RDaGlsZCkmJjM9PT10LnR5cGUpaWYoMDwocj10LnZhbHVlLnJlcGxhY2UoeCwiIikpLmxlbmd0aCl0LnZhbHVlPXIsdD10LnByZXY7ZWxzZSBmb3Iobz10LnByZXYsdC5yZW1vdmUoKSx0PW87dCYmMz09PXQudHlwZTspcj10LnZhbHVlLG89dC5wcmV2LDAhPT1yLmxlbmd0aCYmIU4udGVzdChyKXx8KHQucmVtb3ZlKCksdD1vKSx0PW99aWYoZiYmQ1tlXSYmKGY9ITEpLG4ucmVtb3ZlRW1wdHkmJnl2KFQsZyxDLGQpKXJldHVybiBpPWQucGFyZW50LGxbZC5uYW1lXT9kLmVtcHR5KCkucmVtb3ZlKCk6ZC51bndyYXAoKSx2b2lkKGQ9aSk7bi5wYWRkRW1wdHkmJih2dihhPWQsIiN0ZXh0IikmJmEuZmlyc3RDaGlsZC52YWx1ZT09PW9vfHx5dihULGcsQyxkKSkmJmh2KFIsdSxsLGQpLGQ9ZC5wYXJlbnR9fX0sVCk7dmFyIF89ZD1uZXcgZGYodS5jb250ZXh0fHxSLnJvb3RfbmFtZSwxMSk7aWYodC5wYXJzZShlLHUuZm9ybWF0KSx2JiZtLmxlbmd0aCYmKHUuY29udGV4dD91LmludmFsaWQ9ITA6ZnVuY3Rpb24oZSl7dmFyIHQsbixyLG8saSxhLHUscyxjLGwsZixkLG0scCxnLGg7Zm9yKGQ9d3YoInRyLHRkLHRoLHRib2R5LHRoZWFkLHRmb290LHRhYmxlIiksbD1ULmdldE5vbkVtcHR5RWxlbWVudHMoKSxmPVQuZ2V0V2hpdGVTcGFjZUVsZW1lbnRzKCksbT1ULmdldFRleHRCbG9ja0VsZW1lbnRzKCkscD1ULmdldFNwZWNpYWxFbGVtZW50cygpLHQ9MDt0PGUubGVuZ3RoO3QrKylpZigobj1lW3RdKS5wYXJlbnQmJiFuLmZpeGVkKWlmKG1bbi5uYW1lXSYmImxpIj09PW4ucGFyZW50Lm5hbWUpe2ZvcihnPW4ubmV4dDtnJiZtW2cubmFtZV07KWcubmFtZT0ibGkiLGcuZml4ZWQ9ITAsbi5wYXJlbnQuaW5zZXJ0KGcsbi5wYXJlbnQpLGc9Zy5uZXh0O24udW53cmFwKG4pfWVsc2V7Zm9yKG89W25dLHI9bi5wYXJlbnQ7ciYmIVQuaXNWYWxpZENoaWxkKHIubmFtZSxuLm5hbWUpJiYhZFtyLm5hbWVdO3I9ci5wYXJlbnQpby5wdXNoKHIpO2lmKHImJjE8by5sZW5ndGgpe2ZvcihvLnJldmVyc2UoKSxpPWE9UChvWzBdLmNsb25lKCkpLGM9MDtjPG8ubGVuZ3RoLTE7YysrKXtmb3IoVC5pc1ZhbGlkQ2hpbGQoYS5uYW1lLG9bY10ubmFtZSk/KHU9UChvW2NdLmNsb25lKCkpLGEuYXBwZW5kKHUpKTp1PWEscz1vW2NdLmZpcnN0Q2hpbGQ7cyYmcyE9PW9bYysxXTspaD1zLm5leHQsdS5hcHBlbmQocykscz1oO2E9dX15dihULGwsZixpKT9yLmluc2VydChuLG9bMF0sITApOihyLmluc2VydChpLG9bMF0sITApLHIuaW5zZXJ0KG4saSkpLHI9b1swXSwoeXYoVCxsLGYscil8fHZ2KHIsImJyIikpJiZyLmVtcHR5KCkucmVtb3ZlKCl9ZWxzZSBpZihuLnBhcmVudCl7aWYoImxpIj09PW4ubmFtZSl7aWYoKGc9bi5wcmV2KSYmKCJ1bCI9PT1nLm5hbWV8fCJ1bCI9PT1nLm5hbWUpKXtnLmFwcGVuZChuKTtjb250aW51ZX1pZigoZz1uLm5leHQpJiYoInVsIj09PWcubmFtZXx8InVsIj09PWcubmFtZSkpe2cuaW5zZXJ0KG4sZy5maXJzdENoaWxkLCEwKTtjb250aW51ZX1uLndyYXAoUChuZXcgZGYoInVsIiwxKSkpO2NvbnRpbnVlfVQuaXNWYWxpZENoaWxkKG4ucGFyZW50Lm5hbWUsImRpdiIpJiZULmlzVmFsaWRDaGlsZCgiZGl2IixuLm5hbWUpP24ud3JhcChQKG5ldyBkZigiZGl2IiwxKSkpOnBbbi5uYW1lXT9uLmVtcHR5KCkucmVtb3ZlKCk6bi51bndyYXAoKX19fShtKSksYiYmKCJib2R5Ij09PV8ubmFtZXx8dS5pc1Jvb3RDb250ZW50KSYmZnVuY3Rpb24oKXt2YXIgZSx0LG49Xy5maXJzdENoaWxkLHI9ZnVuY3Rpb24oZSl7ZSYmKChuPWUuZmlyc3RDaGlsZCkmJjM9PT1uLnR5cGUmJihuLnZhbHVlPW4udmFsdWUucmVwbGFjZSh3LCIiKSksKG49ZS5sYXN0Q2hpbGQpJiYzPT09bi50eXBlJiYobi52YWx1ZT1uLnZhbHVlLnJlcGxhY2UoeCwiIikpKX07aWYoVC5pc1ZhbGlkQ2hpbGQoXy5uYW1lLGIudG9Mb3dlckNhc2UoKSkpe2Zvcig7bjspZT1uLm5leHQsMz09PW4udHlwZXx8MT09PW4udHlwZSYmInAiIT09bi5uYW1lJiYhbFtuLm5hbWVdJiYhbi5hdHRyKCJkYXRhLW1jZS10eXBlIik/KHR8fCgodD1FKGIsMSkpLmF0dHIoUi5mb3JjZWRfcm9vdF9ibG9ja19hdHRycyksXy5pbnNlcnQodCxuKSksdC5hcHBlbmQobikpOihyKHQpLHQ9bnVsbCksbj1lO3IodCl9fSgpLCF1LmludmFsaWQpe2ZvcihjIGluIE8paWYoTy5oYXNPd25Qcm9wZXJ0eShjKSl7Zm9yKHM9QVtjXSxpPShuPU9bY10pLmxlbmd0aDtpLS07KW5baV0ucGFyZW50fHxuLnNwbGljZShpLDEpO2ZvcihyPTAsbz1zLmxlbmd0aDtyPG87cisrKXNbcl0obixjLHUpfWZvcihyPTAsbz1ELmxlbmd0aDtyPG87cisrKWlmKChzPURbcl0pLm5hbWUgaW4gQil7Zm9yKGk9KG49QltzLm5hbWVdKS5sZW5ndGg7aS0tOyluW2ldLnBhcmVudHx8bi5zcGxpY2UoaSwxKTtmb3IoaT0wLGE9cy5jYWxsYmFja3MubGVuZ3RoO2k8YTtpKyspcy5jYWxsYmFja3NbaV0obixzLm5hbWUsdSl9fXJldHVybiBffX07cmV0dXJuIEN2KG4sUiksZT1uLCh0PVIpLmlubGluZV9zdHlsZXMmJnN2KGUsdCksbn0sa3Y9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBtPW4sKGQ9ZSkmJmQuaGFzRXZlbnRMaXN0ZW5lcnMoIlByZVByb2Nlc3MiKSYmIW0ubm9fZXZlbnRzPyhvPXQsaT1uLGY9KHI9ZSkuZG9tLG89by5jbG9uZU5vZGUoITApLChhPVYuZG9jdW1lbnQuaW1wbGVtZW50YXRpb24pLmNyZWF0ZUhUTUxEb2N1bWVudCYmKHU9YS5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpLGhyLmVhY2goIkJPRFkiPT09by5ub2RlTmFtZT9vLmNoaWxkTm9kZXM6W29dLGZ1bmN0aW9uKGUpe3UuYm9keS5hcHBlbmRDaGlsZCh1LmltcG9ydE5vZGUoZSwhMCkpfSksbz0iQk9EWSIhPT1vLm5vZGVOYW1lP3UuYm9keS5maXJzdENoaWxkOnUuYm9keSxzPWYuZG9jLGYuZG9jPXUpLGM9cixsPXBlKHBlKHt9LGkpLHtub2RlOm99KSxjLmZpcmUoIlByZVByb2Nlc3MiLGwpLHMmJihmLmRvYz1zKSxvKTp0O3ZhciByLG8saSxhLHUscyxjLGwsZixkLG19LF92PWZ1bmN0aW9uKGUsdCxuKXstMT09PWhyLmluQXJyYXkodCxuKSYmKGUuYWRkQXR0cmlidXRlRmlsdGVyKG4sZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49ZS5sZW5ndGg7bi0tOyllW25dLmF0dHIodCxudWxsKX0pLHQucHVzaChuKSl9LFJ2PWZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFyIGksYSx1LHMsYyxsLGY9KGk9cixoZih0LG4pLnNlcmlhbGl6ZShpKSk7cmV0dXJuIGE9ZSxzPWYsKHU9bykubm9fZXZlbnRzfHwhYT9zOihjPWEsbD1wZShwZSh7fSx1KSx7Y29udGVudDpzfSksYy5maXJlKCJQb3N0UHJvY2VzcyIsbCkuY29udGVudCl9LFR2PWZ1bmN0aW9uKHksYil7dmFyIGU9WyJkYXRhLW1jZS1zZWxlY3RlZCJdLEM9YiYmYi5kb20/Yi5kb206Z2EuRE9NLHc9YiYmYi5zY2hlbWE/Yi5zY2hlbWE6bm8oeSk7eS5lbnRpdHlfZW5jb2Rpbmc9eS5lbnRpdHlfZW5jb2Rpbmd8fCJuYW1lZCIseS5yZW1vdmVfdHJhaWxpbmdfYnJzPSEoInJlbW92ZV90cmFpbGluZ19icnMiaW4geSl8fHkucmVtb3ZlX3RyYWlsaW5nX2Jyczt2YXIgdCxzLGMseD1Fdih5LHcpO3M9eSxjPUMsKHQ9eCkuYWRkQXR0cmlidXRlRmlsdGVyKCJkYXRhLW1jZS10YWJpbmRleCIsZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4scj1lLmxlbmd0aDtyLS07KShuPWVbcl0pLmF0dHIoInRhYmluZGV4IixuLmF0dHIoImRhdGEtbWNlLXRhYmluZGV4IikpLG4uYXR0cih0LG51bGwpfSksdC5hZGRBdHRyaWJ1dGVGaWx0ZXIoInNyYyxocmVmLHN0eWxlIixmdW5jdGlvbihlLHQpe2Zvcih2YXIgbixyLG89ZS5sZW5ndGgsaT0iZGF0YS1tY2UtIit0LGE9cy51cmxfY29udmVydGVyLHU9cy51cmxfY29udmVydGVyX3Njb3BlO28tLTspKHI9KG49ZVtvXSkuYXR0cihpKSkhPT11bmRlZmluZWQ/KG4uYXR0cih0LDA8ci5sZW5ndGg/cjpudWxsKSxuLmF0dHIoaSxudWxsKSk6KHI9bi5hdHRyKHQpLCJzdHlsZSI9PT10P3I9Yy5zZXJpYWxpemVTdHlsZShjLnBhcnNlU3R5bGUociksbi5uYW1lKTphJiYocj1hLmNhbGwodSxyLHQsbi5uYW1lKSksbi5hdHRyKHQsMDxyLmxlbmd0aD9yOm51bGwpKX0pLHQuYWRkQXR0cmlidXRlRmlsdGVyKCJjbGFzcyIsZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG4scj1lLmxlbmd0aDtyLS07KShuPSh0PWVbcl0pLmF0dHIoImNsYXNzIikpJiYobj10LmF0dHIoImNsYXNzIikucmVwbGFjZSgvKD86XnxccyltY2UtaXRlbS1cdysoPyFcUykvZywiIiksdC5hdHRyKCJjbGFzcyIsMDxuLmxlbmd0aD9uOm51bGwpKX0pLHQuYWRkQXR0cmlidXRlRmlsdGVyKCJkYXRhLW1jZS10eXBlIixmdW5jdGlvbihlLHQsbil7Zm9yKHZhciByLG89ZS5sZW5ndGg7by0tOyl7aWYoImJvb2ttYXJrIj09PShyPWVbb10pLmF0dHIoImRhdGEtbWNlLXR5cGUiKSYmIW4uY2xlYW51cClSLmZyb20oci5maXJzdENoaWxkKS5leGlzdHMoZnVuY3Rpb24oZSl7cmV0dXJuIWN1KGUudmFsdWUpfSk/ci51bndyYXAoKTpyLnJlbW92ZSgpfX0pLHQuYWRkTm9kZUZpbHRlcigibm9zY3JpcHQiLGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxuPWUubGVuZ3RoO24tLTspKHQ9ZVtuXS5maXJzdENoaWxkKSYmKHQudmFsdWU9JHIuZGVjb2RlKHQudmFsdWUpKX0pLHQuYWRkTm9kZUZpbHRlcigic2NyaXB0LHN0eWxlIixmdW5jdGlvbihlLHQpe2Zvcih2YXIgbixyLG8saT1lLmxlbmd0aCxhPWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoLyg8IS0tXFtDREFUQVxbfFxdXF0tLT4pL2csIlxuIikucmVwbGFjZSgvXltcclxuXSp8W1xyXG5dKiQvZywiIikucmVwbGFjZSgvXlxzKigoPCEtLSk/KFxzKlwvXC8pP1xzKjwhXFtDREFUQVxbfCg8IS0tXHMqKT9cL1wqXHMqPCFcW0NEQVRBXFtccypcKlwvfChcL1wvKT9ccyo8IS0tfFwvXCpccyo8IS0tXHMqXCpcLylccypbXHJcbl0qL2dpLCIiKS5yZXBsYWNlKC9ccyooXC9cKlxzKlxdXF0+XHMqXCpcLygtLT4pP3xccypcL1wvXHMqXF1cXT4oLS0+KT98XC9cL1xzKigtLT4pP3xcXVxdPnxcL1wqXHMqLS0+XHMqXCpcL3xccyotLT5ccyopXHMqJC9nLCIiKX07aS0tOylyPShuPWVbaV0pLmZpcnN0Q2hpbGQ/bi5maXJzdENoaWxkLnZhbHVlOiIiLCJzY3JpcHQiPT09dD8oKG89bi5hdHRyKCJ0eXBlIikpJiZuLmF0dHIoInR5cGUiLCJtY2Utbm8vdHlwZSI9PT1vP251bGw6by5yZXBsYWNlKC9ebWNlXC0vLCIiKSksInhodG1sIj09PXMuZWxlbWVudF9mb3JtYXQmJjA8ci5sZW5ndGgmJihuLmZpcnN0Q2hpbGQudmFsdWU9Ii8vIDwhW0NEQVRBW1xuIithKHIpKyJcbi8vIF1dPiIpKToieGh0bWwiPT09cy5lbGVtZW50X2Zvcm1hdCYmMDxyLmxlbmd0aCYmKG4uZmlyc3RDaGlsZC52YWx1ZT0iXHgzYyEtLVxuIithKHIpKyJcbi0tXHgzZSIpfSksdC5hZGROb2RlRmlsdGVyKCIjY29tbWVudCIsZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG49ZS5sZW5ndGg7bi0tOyl0PWVbbl0scy5wcmVzZXJ2ZV9jZGF0YSYmMD09PXQudmFsdWUuaW5kZXhPZigiW0NEQVRBWyIpPyh0Lm5hbWU9IiNjZGF0YSIsdC50eXBlPTQsdC52YWx1ZT1jLmRlY29kZSh0LnZhbHVlLnJlcGxhY2UoL15cW0NEQVRBXFt8XF1cXSQvZywiIikpKTowPT09dC52YWx1ZS5pbmRleE9mKCJtY2U6cHJvdGVjdGVkICIpJiYodC5uYW1lPSIjdGV4dCIsdC50eXBlPTMsdC5yYXc9ITAsdC52YWx1ZT11bmVzY2FwZSh0LnZhbHVlKS5zdWJzdHIoMTQpKX0pLHQuYWRkTm9kZUZpbHRlcigieG1sOm5hbWVzcGFjZSxpbnB1dCIsZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4scj1lLmxlbmd0aDtyLS07KTc9PT0obj1lW3JdKS50eXBlP24ucmVtb3ZlKCk6MT09PW4udHlwZSYmKCJpbnB1dCIhPT10fHxuLmF0dHIoInR5cGUiKXx8bi5hdHRyKCJ0eXBlIiwidGV4dCIpKX0pLHQuYWRkQXR0cmlidXRlRmlsdGVyKCJkYXRhLW1jZS10eXBlIixmdW5jdGlvbihlKXt6KGUsZnVuY3Rpb24oZSl7ImZvcm1hdC1jYXJldCI9PT1lLmF0dHIoImRhdGEtbWNlLXR5cGUiKSYmKGUuaXNFbXB0eSh0LnNjaGVtYS5nZXROb25FbXB0eUVsZW1lbnRzKCkpP2UucmVtb3ZlKCk6ZS51bndyYXAoKSl9KX0pLHQuYWRkQXR0cmlidXRlRmlsdGVyKCJkYXRhLW1jZS1zcmMsZGF0YS1tY2UtaHJlZixkYXRhLW1jZS1zdHlsZSxkYXRhLW1jZS1zZWxlY3RlZCxkYXRhLW1jZS1leHBhbmRvLGRhdGEtbWNlLXR5cGUsZGF0YS1tY2UtcmVzaXplLGRhdGEtbWNlLXBsYWNlaG9sZGVyIixmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1lLmxlbmd0aDtuLS07KWVbbl0uYXR0cih0LG51bGwpfSk7cmV0dXJue3NjaGVtYTp3LGFkZE5vZGVGaWx0ZXI6eC5hZGROb2RlRmlsdGVyLGFkZEF0dHJpYnV0ZUZpbHRlcjp4LmFkZEF0dHJpYnV0ZUZpbHRlcixzZXJpYWxpemU6ZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT10JiYodD17fSk7dmFyIG4scixvLGksYSx1LHMsYyxsLGYsZCxtLHA9cGUoe2Zvcm1hdDoiaHRtbCJ9LHQpLGc9a3YoYixlLHApLGg9KG49QyxyPWcsaT1sdSgobz1wKS5nZXRJbm5lcj9yLmlubmVySFRNTDpuLmdldE91dGVySFRNTChyKSksby5zZWxlY3Rpb258fE9yKE5lLmZyb21Eb20ocikpP2k6aHIudHJpbShpKSksdj0oYT14LHU9aCxkPShzPXApLnNlbGVjdGlvbj9wZSh7Zm9yY2VkX3Jvb3RfYmxvY2s6ITF9LHMpOnMsbT1hLnBhcnNlKHUsZCksKGY9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJiciI9PT1lLm5hbWV9KShjPW0ubGFzdENoaWxkKSYmZihsPWMucHJldikmJihjLnJlbW92ZSgpLGwucmVtb3ZlKCkpLG0pO3JldHVybiJ0cmVlIj09PXAuZm9ybWF0P3Y6UnYoYix5LHcsdixwKX0sYWRkUnVsZXM6ZnVuY3Rpb24oZSl7dy5hZGRWYWxpZEVsZW1lbnRzKGUpfSxzZXRSdWxlczpmdW5jdGlvbihlKXt3LnNldFZhbGlkRWxlbWVudHMoZSl9LGFkZFRlbXBBdHRyOk4oX3YseCxlKSxnZXRUZW1wQXR0cnM6ZnVuY3Rpb24oKXtyZXR1cm4gZX0sZ2V0Tm9kZUZpbHRlcnM6eC5nZXROb2RlRmlsdGVycyxnZXRBdHRyaWJ1dGVGaWx0ZXJzOnguZ2V0QXR0cmlidXRlRmlsdGVyc319LEF2PWZ1bmN0aW9uKGUsdCl7dmFyIG49VHYoZSx0KTtyZXR1cm57c2NoZW1hOm4uc2NoZW1hLGFkZE5vZGVGaWx0ZXI6bi5hZGROb2RlRmlsdGVyLGFkZEF0dHJpYnV0ZUZpbHRlcjpuLmFkZEF0dHJpYnV0ZUZpbHRlcixzZXJpYWxpemU6bi5zZXJpYWxpemUsYWRkUnVsZXM6bi5hZGRSdWxlcyxzZXRSdWxlczpuLnNldFJ1bGVzLGFkZFRlbXBBdHRyOm4uYWRkVGVtcEF0dHIsZ2V0VGVtcEF0dHJzOm4uZ2V0VGVtcEF0dHJzLGdldE5vZGVGaWx0ZXJzOm4uZ2V0Tm9kZUZpbHRlcnMsZ2V0QXR0cmlidXRlRmlsdGVyczpuLmdldEF0dHJpYnV0ZUZpbHRlcnN9fTtmdW5jdGlvbiBEdih1LHMpe3ZhciByPXt9LG49ZnVuY3Rpb24oZSxyLG8sdCl7dmFyIGksbjsoaT1uZXcgVi5YTUxIdHRwUmVxdWVzdCkub3BlbigiUE9TVCIscy51cmwpLGkud2l0aENyZWRlbnRpYWxzPXMuY3JlZGVudGlhbHMsaS51cGxvYWQub25wcm9ncmVzcz1mdW5jdGlvbihlKXt0KGUubG9hZGVkL2UudG90YWwqMTAwKX0saS5vbmVycm9yPWZ1bmN0aW9uKCl7bygiSW1hZ2UgdXBsb2FkIGZhaWxlZCBkdWUgdG8gYSBYSFIgVHJhbnNwb3J0IGVycm9yLiBDb2RlOiAiK2kuc3RhdHVzKX0saS5vbmxvYWQ9ZnVuY3Rpb24oKXt2YXIgZSx0LG47aS5zdGF0dXM8MjAwfHwzMDA8PWkuc3RhdHVzP28oIkhUVFAgRXJyb3I6ICIraS5zdGF0dXMpOihlPUpTT04ucGFyc2UoaS5yZXNwb25zZVRleHQpKSYmInN0cmluZyI9PXR5cGVvZiBlLmxvY2F0aW9uP3IoKHQ9cy5iYXNlUGF0aCxuPWUubG9jYXRpb24sdD90LnJlcGxhY2UoL1wvJC8sIiIpKyIvIituLnJlcGxhY2UoL15cLy8sIiIpOm4pKTpvKCJJbnZhbGlkIEpTT046ICIraS5yZXNwb25zZVRleHQpfSwobj1uZXcgVi5Gb3JtRGF0YSkuYXBwZW5kKCJmaWxlIixlLmJsb2IoKSxlLmZpbGVuYW1lKCkpLGkuc2VuZChuKX0sYz1mdW5jdGlvbihlLHQpe3JldHVybnt1cmw6dCxibG9iSW5mbzplLHN0YXR1czohMH19LGw9ZnVuY3Rpb24oZSx0KXtyZXR1cm57dXJsOiIiLGJsb2JJbmZvOmUsc3RhdHVzOiExLGVycm9yOnR9fSxmPWZ1bmN0aW9uKGUsdCl7aHIuZWFjaChyW2VdLGZ1bmN0aW9uKGUpe2UodCl9KSxkZWxldGUgcltlXX0sbz1mdW5jdGlvbihlLG4pe3JldHVybiBlPWhyLmdyZXAoZSxmdW5jdGlvbihlKXtyZXR1cm4hdS5pc1VwbG9hZGVkKGUuYmxvYlVyaSgpKX0pLE1uLmFsbChoci5tYXAoZSxmdW5jdGlvbihlKXtyZXR1cm4gdS5pc1BlbmRpbmcoZS5ibG9iVXJpKCkpPyh0PWUuYmxvYlVyaSgpLG5ldyBNbihmdW5jdGlvbihlKXtyW3RdPXJbdF18fFtdLHJbdF0ucHVzaChlKX0pKToobz1lLGk9cy5oYW5kbGVyLGE9bix1Lm1hcmtQZW5kaW5nKG8uYmxvYlVyaSgpKSxuZXcgTW4oZnVuY3Rpb24odCl7dmFyIG47dHJ5e3ZhciByPWZ1bmN0aW9uKCl7biYmbi5jbG9zZSgpfTtpKG8sZnVuY3Rpb24oZSl7cigpLHUubWFya1VwbG9hZGVkKG8uYmxvYlVyaSgpLGUpLGYoby5ibG9iVXJpKCksYyhvLGUpKSx0KGMobyxlKSl9LGZ1bmN0aW9uKGUpe3IoKSx1LnJlbW92ZUZhaWxlZChvLmJsb2JVcmkoKSksZihvLmJsb2JVcmkoKSxsKG8sZSkpLHQobChvLGUpKX0sZnVuY3Rpb24oZSl7ZTwwfHwxMDA8ZXx8KG49bnx8YSgpKS5wcm9ncmVzc0Jhci52YWx1ZShlKX0pfWNhdGNoKGUpe3QobChvLGUubWVzc2FnZSkpfX0pKTt2YXIgbyxpLGEsdH0pKX07cmV0dXJuITE9PT1EKHMuaGFuZGxlcikmJihzLmhhbmRsZXI9bikse3VwbG9hZDpmdW5jdGlvbihlLHQpe3JldHVybiBzLnVybHx8cy5oYW5kbGVyIT09bj9vKGUsdCk6bmV3IE1uKGZ1bmN0aW9uKGUpe2UoW10pfSl9fX12YXIgT3Y9MCxCdj1mdW5jdGlvbihlKXtyZXR1cm4gZStPdisrKyh0PWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGgucm91bmQoNDI5NDk2NzI5NSpNYXRoLnJhbmRvbSgpKS50b1N0cmluZygzNil9LCJzIisobmV3IERhdGUpLmdldFRpbWUoKS50b1N0cmluZygzNikrdCgpK3QoKSt0KCkpO3ZhciB0fSxQdj1mdW5jdGlvbih1KXt2YXIgbixvLGUsdCxyLGkscz0obj1bXSxvPWZ1bmN0aW9uKGUpe3ZhciB0LG47aWYoIWUuYmxvYnx8IWUuYmFzZTY0KXRocm93IG5ldyBFcnJvcigiYmxvYiBhbmQgYmFzZTY0IHJlcHJlc2VudGF0aW9ucyBvZiB0aGUgaW1hZ2UgYXJlIHJlcXVpcmVkIGZvciBCbG9iSW5mbyB0byBiZSBjcmVhdGVkIik7cmV0dXJuIHQ9ZS5pZHx8QnYoImJsb2JpZCIpLG49ZS5uYW1lfHx0LHtpZDp4KHQpLG5hbWU6eChuKSxmaWxlbmFtZTp4KG4rIi4iKyh7ImltYWdlL2pwZWciOiJqcGciLCJpbWFnZS9qcGciOiJqcGciLCJpbWFnZS9naWYiOiJnaWYiLCJpbWFnZS9wbmciOiJwbmcifVtlLmJsb2IudHlwZS50b0xvd2VyQ2FzZSgpXXx8ImRhdCIpKSxibG9iOngoZS5ibG9iKSxiYXNlNjQ6eChlLmJhc2U2NCksYmxvYlVyaTp4KGUuYmxvYlVyaXx8Vi5VUkwuY3JlYXRlT2JqZWN0VVJMKGUuYmxvYikpLHVyaTp4KGUudXJpKX19LHtjcmVhdGU6ZnVuY3Rpb24oZSx0LG4scil7aWYocShlKSlyZXR1cm4gbyh7aWQ6ZSxuYW1lOnIsYmxvYjp0LGJhc2U2NDpufSk7aWYoRShlKSlyZXR1cm4gbyhlKTt0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gaW5wdXQgdHlwZSIpfSxhZGQ6ZnVuY3Rpb24oZSl7dChlLmlkKCkpfHxuLnB1c2goZSl9LGdldDp0PWZ1bmN0aW9uKHQpe3JldHVybiBlKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlkKCk9PT10fSl9LGdldEJ5VXJpOmZ1bmN0aW9uKHQpe3JldHVybiBlKGZ1bmN0aW9uKGUpe3JldHVybiBlLmJsb2JVcmkoKT09PXR9KX0sZ2V0QnlEYXRhOmZ1bmN0aW9uKHQsbil7cmV0dXJuIGUoZnVuY3Rpb24oZSl7cmV0dXJuIGUuYmFzZTY0KCk9PT10JiZlLmJsb2IoKS50eXBlPT09bn0pfSxmaW5kRmlyc3Q6ZT1mdW5jdGlvbihlKXtyZXR1cm4gSyhuLGUpLmdldE9yVW5kZWZpbmVkKCl9LHJlbW92ZUJ5VXJpOmZ1bmN0aW9uKHQpe249SChuLGZ1bmN0aW9uKGUpe3JldHVybiBlLmJsb2JVcmkoKSE9PXR8fChWLlVSTC5yZXZva2VPYmplY3RVUkwoZS5ibG9iVXJpKCkpLCExKX0pfSxkZXN0cm95OmZ1bmN0aW9uKCl7eihuLGZ1bmN0aW9uKGUpe1YuVVJMLnJldm9rZU9iamVjdFVSTChlLmJsb2JVcmkoKSl9KSxuPVtdfX0pLGE9ZnVuY3Rpb24gdygpe3ZhciBuPXt9LHI9ZnVuY3Rpb24oZSx0KXtyZXR1cm57c3RhdHVzOmUscmVzdWx0VXJpOnR9fSx0PWZ1bmN0aW9uKGUpe3JldHVybiBlIGluIG59O3JldHVybntoYXNCbG9iVXJpOnQsZ2V0UmVzdWx0VXJpOmZ1bmN0aW9uKGUpe3ZhciB0PW5bZV07cmV0dXJuIHQ/dC5yZXN1bHRVcmk6bnVsbH0saXNQZW5kaW5nOmZ1bmN0aW9uKGUpe3JldHVybiEhdChlKSYmMT09PW5bZV0uc3RhdHVzfSxpc1VwbG9hZGVkOmZ1bmN0aW9uKGUpe3JldHVybiEhdChlKSYmMj09PW5bZV0uc3RhdHVzfSxtYXJrUGVuZGluZzpmdW5jdGlvbihlKXtuW2VdPXIoMSxudWxsKX0sbWFya1VwbG9hZGVkOmZ1bmN0aW9uKGUsdCl7bltlXT1yKDIsdCl9LHJlbW92ZUZhaWxlZDpmdW5jdGlvbihlKXtkZWxldGUgbltlXX0sZGVzdHJveTpmdW5jdGlvbigpe249e319fX0oKSxjPVtdLGw9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB1LnNlbGVjdGlvbj90KGUpOltdfX0sZj1mdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPTA7LTEhPT0ocj1lLmluZGV4T2YodCxyKSkmJihlPWUuc3Vic3RyaW5nKDAscikrbitlLnN1YnN0cihyK3QubGVuZ3RoKSxyKz1uLmxlbmd0aC10Lmxlbmd0aCsxKSwtMSE9PXI7KTtyZXR1cm4gZX0sZD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGU9ZihlLCdzcmM9IicrdCsnIicsJ3NyYz0iJytuKyciJyksZT1mKGUsJ2RhdGEtbWNlLXNyYz0iJyt0KyciJywnZGF0YS1tY2Utc3JjPSInK24rJyInKX0sbT1mdW5jdGlvbih0LG4pe3oodS51bmRvTWFuYWdlci5kYXRhLGZ1bmN0aW9uKGUpeyJmcmFnbWVudGVkIj09PWUudHlwZT9lLmZyYWdtZW50cz1VKGUuZnJhZ21lbnRzLGZ1bmN0aW9uKGUpe3JldHVybiBkKGUsdCxuKX0pOmUuY29udGVudD1kKGUuY29udGVudCx0LG4pfSl9LHA9ZnVuY3Rpb24oKXtyZXR1cm4gdS5ub3RpZmljYXRpb25NYW5hZ2VyLm9wZW4oe3RleHQ6dS50cmFuc2xhdGUoIkltYWdlIHVwbG9hZGluZy4uLiIpLHR5cGU6ImluZm8iLHRpbWVvdXQ6LTEscHJvZ3Jlc3NCYXI6ITB9KX0sZz1mdW5jdGlvbihlLHQpe3ZhciBuLHI9dS5jb252ZXJ0VVJMKHQsInNyYyIpO20oZS5zcmMsdCksdS4kKGUpLmF0dHIoe3NyYzp1LmdldFBhcmFtKCJpbWFnZXNfcmV1c2VfZmlsZW5hbWUiLCExLCJib29sZWFuIik/KG49dCkrKC0xPT09bi5pbmRleE9mKCI/Iik/Ij8iOiImIikrKG5ldyBEYXRlKS5nZXRUaW1lKCk6dCwiZGF0YS1tY2Utc3JjIjpyfSl9LGg9ZnVuY3Rpb24obil7cmV0dXJuIHI9cnx8RHYoYSx7dXJsOnUuZ2V0UGFyYW0oImltYWdlc191cGxvYWRfdXJsIiwiIiwic3RyaW5nIiksYmFzZVBhdGg6dS5nZXRQYXJhbSgiaW1hZ2VzX3VwbG9hZF9iYXNlX3BhdGgiLCIiLCJzdHJpbmciKSxjcmVkZW50aWFsczp1LmdldFBhcmFtKCJpbWFnZXNfdXBsb2FkX2NyZWRlbnRpYWxzIiwhMSwiYm9vbGVhbiIpLGhhbmRsZXI6dS5nZXRQYXJhbSgiaW1hZ2VzX3VwbG9hZF9oYW5kbGVyIixudWxsLCJmdW5jdGlvbiIpfSksYigpLnRoZW4obChmdW5jdGlvbihhKXt2YXIgZT1VKGEsZnVuY3Rpb24oZSl7cmV0dXJuIGUuYmxvYkluZm99KTtyZXR1cm4gci51cGxvYWQoZSxwKS50aGVuKGwoZnVuY3Rpb24oZSl7dmFyIHQ9VShlLGZ1bmN0aW9uKGUsdCl7dmFyIG4scixvPWFbdF0uYmxvYkluZm8saT1hW3RdLmltYWdlO3JldHVybiBlLnN0YXR1cyYmdS5nZXRQYXJhbSgiaW1hZ2VzX3JlcGxhY2VfYmxvYl91cmlzIiwhMCwiYm9vbGVhbiIpPyhzLnJlbW92ZUJ5VXJpKGkuc3JjKSxnKGksZS51cmwpKTplLmVycm9yJiYobj11LHI9ZS5lcnJvcixpaChuLGthLnRyYW5zbGF0ZShbIkZhaWxlZCB0byB1cGxvYWQgaW1hZ2U6IHswfSIscl0pKSkse2VsZW1lbnQ6aSxzdGF0dXM6ZS5zdGF0dXMsdXBsb2FkVXJpOmUudXJsLGJsb2JJbmZvOm99fSk7cmV0dXJuIG4mJm4odCksdH0pKX0pKX0sdj1mdW5jdGlvbihlKXtpZihxcyh1KSlyZXR1cm4gaChlKX0seT1mdW5jdGlvbih0KXtyZXR1cm4hMSE9PUcoYyxmdW5jdGlvbihlKXtyZXR1cm4gZSh0KX0pJiYoMCE9PXQuZ2V0QXR0cmlidXRlKCJzcmMiKS5pbmRleE9mKCJkYXRhOiIpfHx1LmdldFBhcmFtKCJpbWFnZXNfZGF0YWltZ19maWx0ZXIiLHgoITApLCJmdW5jdGlvbiIpKHQpKX0sYj1mdW5jdGlvbigpe3JldHVybihpPWl8fGd2KGEscykpLmZpbmRBbGwodS5nZXRCb2R5KCkseSkudGhlbihsKGZ1bmN0aW9uKGUpe3JldHVybiBlPUgoZSxmdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGV8fChpaCh1LGUpLCExKX0pLHooZSxmdW5jdGlvbihlKXttKGUuaW1hZ2Uuc3JjLGUuYmxvYkluZm8uYmxvYlVyaSgpKSxlLmltYWdlLnNyYz1lLmJsb2JJbmZvLmJsb2JVcmkoKSxlLmltYWdlLnJlbW92ZUF0dHJpYnV0ZSgiZGF0YS1tY2Utc3JjIil9KSxlfSkpfSxDPWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoL3NyYz0iKGJsb2I6W14iXSspIi9nLGZ1bmN0aW9uKGUsbil7dmFyIHQ9YS5nZXRSZXN1bHRVcmkobik7aWYodClyZXR1cm4nc3JjPSInK3QrJyInO3ZhciByPXMuZ2V0QnlVcmkobik7cmV0dXJuKHI9cnx8Vyh1LmVkaXRvck1hbmFnZXIuZ2V0KCksZnVuY3Rpb24oZSx0KXtyZXR1cm4gZXx8dC5lZGl0b3JVcGxvYWQmJnQuZWRpdG9yVXBsb2FkLmJsb2JDYWNoZS5nZXRCeVVyaShuKX0sbnVsbCkpPydzcmM9ImRhdGE6JytyLmJsb2IoKS50eXBlKyI7YmFzZTY0LCIrci5iYXNlNjQoKSsnIic6ZX0pfTtyZXR1cm4gdS5vbigiU2V0Q29udGVudCIsZnVuY3Rpb24oKXsocXModSk/djpiKSgpfSksdS5vbigiUmF3U2F2ZUNvbnRlbnQiLGZ1bmN0aW9uKGUpe2UuY29udGVudD1DKGUuY29udGVudCl9KSx1Lm9uKCJHZXRDb250ZW50IixmdW5jdGlvbihlKXtlLnNvdXJjZV92aWV3fHwicmF3Ij09PWUuZm9ybWF0fHwoZS5jb250ZW50PUMoZS5jb250ZW50KSl9KSx1Lm9uKCJQb3N0UmVuZGVyIixmdW5jdGlvbigpe3UucGFyc2VyLmFkZE5vZGVGaWx0ZXIoImltZyIsZnVuY3Rpb24oZSl7eihlLGZ1bmN0aW9uKGUpe3ZhciB0PWUuYXR0cigic3JjIik7aWYoIXMuZ2V0QnlVcmkodCkpe3ZhciBuPWEuZ2V0UmVzdWx0VXJpKHQpO24mJmUuYXR0cigic3JjIixuKX19KX0pfSkse2Jsb2JDYWNoZTpzLGFkZEZpbHRlcjpmdW5jdGlvbihlKXtjLnB1c2goZSl9LHVwbG9hZEltYWdlczpoLHVwbG9hZEltYWdlc0F1dG86dixzY2FuRm9ySW1hZ2VzOmIsZGVzdHJveTpmdW5jdGlvbigpe3MuZGVzdHJveSgpLGEuZGVzdHJveSgpLGk9cj1udWxsfX19LEx2PWZ1bmN0aW9uKHIsZSx0LG4pe3ZhciBvPW5lKHQuZ2V0KCkpLGk9e30sYT17fSx1PUgoRWwoci5kb20sZSksZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lLm5vZGVUeXBlJiYhZS5nZXRBdHRyaWJ1dGUoImRhdGEtbWNlLWJvZ3VzIil9KTtvZShuLGZ1bmN0aW9uKGUsbil7aHIuZWFjaCh1LGZ1bmN0aW9uKHQpe3JldHVybiByLmZvcm1hdHRlci5tYXRjaE5vZGUodCxuLHt9LGUuc2ltaWxhcik/KC0xPT09by5pbmRleE9mKG4pJiYoeihlLmNhbGxiYWNrcyxmdW5jdGlvbihlKXtlKCEwLHtub2RlOnQsZm9ybWF0Om4scGFyZW50czp1fSl9KSxpW25dPWUuY2FsbGJhY2tzKSxhW25dPWUuY2FsbGJhY2tzLCExKTohJG0ocix0LG4pJiZ2b2lkIDB9KX0pO3ZhciBzPUl2KHQuZ2V0KCksYSxlLHUpO3Quc2V0KHBlKHBlKHt9LGkpLHMpKX0sSXY9ZnVuY3Rpb24oZSxuLHIsbyl7cmV0dXJuIGNlKGUsZnVuY3Rpb24oZSx0KXtyZXR1cm4hIW1lKG4sdCl8fCh6KGUsZnVuY3Rpb24oZSl7ZSghMSx7bm9kZTpyLGZvcm1hdDp0LHBhcmVudHM6b30pfSksITEpfSkudH0sTXY9ZnVuY3Rpb24oZSxvLGksYSx0KXt2YXIgbixyLHUscyxjLGwsZixkO3JldHVybiBudWxsPT09by5nZXQoKSYmKHI9ZSx1PXhhKHt9KSwobj1vKS5zZXQoe30pLHIub24oIk5vZGVDaGFuZ2UiLGZ1bmN0aW9uKGUpe0x2KHIsZS5lbGVtZW50LHUsbi5nZXQoKSl9KSksYz1pLGw9YSxmPXQsZD0ocz1vKS5nZXQoKSx6KGMuc3BsaXQoIiwiKSxmdW5jdGlvbihlKXtkW2VdfHwoZFtlXT17c2ltaWxhcjpmLGNhbGxiYWNrczpbXX0pLGRbZV0uY2FsbGJhY2tzLnB1c2gobCl9KSxzLnNldChkKSx7dW5iaW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHQ9aSxuPWEscj0oZT1vKS5nZXQoKSx6KHQuc3BsaXQoIiwiKSxmdW5jdGlvbihlKXtyW2VdLmNhbGxiYWNrcz1IKHJbZV0uY2FsbGJhY2tzLGZ1bmN0aW9uKGUpe3JldHVybiBlIT09bn0pLDA9PT1yW2VdLmNhbGxiYWNrcy5sZW5ndGgmJmRlbGV0ZSByW2VdfSksdm9pZCBlLnNldChyKTt2YXIgZSx0LG4scn19fTtmdW5jdGlvbiBGdihlKXt2YXIgcix0LG49e30sbz1mdW5jdGlvbihlLHQpe2UmJigic3RyaW5nIiE9dHlwZW9mIGU/aHIuZWFjaChlLGZ1bmN0aW9uKGUsdCl7byh0LGUpfSk6KGsodCl8fCh0PVt0XSksaHIuZWFjaCh0LGZ1bmN0aW9uKGUpeyJ1bmRlZmluZWQiPT10eXBlb2YgZS5kZWVwJiYoZS5kZWVwPSFlLnNlbGVjdG9yKSwidW5kZWZpbmVkIj09dHlwZW9mIGUuc3BsaXQmJihlLnNwbGl0PSFlLnNlbGVjdG9yfHxlLmlubGluZSksInVuZGVmaW5lZCI9PXR5cGVvZiBlLnJlbW92ZSYmZS5zZWxlY3RvciYmIWUuaW5saW5lJiYoZS5yZW1vdmU9Im5vbmUiKSxlLnNlbGVjdG9yJiZlLmlubGluZSYmKGUubWl4ZWQ9ITAsZS5ibG9ja19leHBhbmQ9ITApLCJzdHJpbmciPT10eXBlb2YgZS5jbGFzc2VzJiYoZS5jbGFzc2VzPWUuY2xhc3Nlcy5zcGxpdCgvXHMrLykpfSksbltlXT10KSl9O3JldHVybiBvKChyPWUuZG9tLHQ9e3ZhbGlnbnRvcDpbe3NlbGVjdG9yOiJ0ZCx0aCIsc3R5bGVzOnt2ZXJ0aWNhbEFsaWduOiJ0b3AifX1dLHZhbGlnbm1pZGRsZTpbe3NlbGVjdG9yOiJ0ZCx0aCIsc3R5bGVzOnt2ZXJ0aWNhbEFsaWduOiJtaWRkbGUifX1dLHZhbGlnbmJvdHRvbTpbe3NlbGVjdG9yOiJ0ZCx0aCIsc3R5bGVzOnt2ZXJ0aWNhbEFsaWduOiJib3R0b20ifX1dLGFsaWdubGVmdDpbe3NlbGVjdG9yOiJmaWd1cmUuaW1hZ2UiLGNvbGxhcHNlZDohMSxjbGFzc2VzOiJhbGlnbi1sZWZ0IixjZUZhbHNlT3ZlcnJpZGU6ITAscHJldmlldzoiZm9udC1mYW1pbHkgZm9udC1zaXplIn0se3NlbGVjdG9yOiJmaWd1cmUscCxoMSxoMixoMyxoNCxoNSxoNix0ZCx0aCx0cixkaXYsdWwsb2wsbGkiLHN0eWxlczp7dGV4dEFsaWduOiJsZWZ0In0saW5oZXJpdDohMSxwcmV2aWV3OiExLGRlZmF1bHRCbG9jazoiZGl2In0se3NlbGVjdG9yOiJpbWcsdGFibGUiLGNvbGxhcHNlZDohMSxzdHlsZXM6eyJmbG9hdCI6ImxlZnQifSxwcmV2aWV3OiJmb250LWZhbWlseSBmb250LXNpemUifV0sYWxpZ25jZW50ZXI6W3tzZWxlY3RvcjoiZmlndXJlLHAsaDEsaDIsaDMsaDQsaDUsaDYsdGQsdGgsdHIsZGl2LHVsLG9sLGxpIixzdHlsZXM6e3RleHRBbGlnbjoiY2VudGVyIn0saW5oZXJpdDohMSxwcmV2aWV3OiJmb250LWZhbWlseSBmb250LXNpemUiLGRlZmF1bHRCbG9jazoiZGl2In0se3NlbGVjdG9yOiJmaWd1cmUuaW1hZ2UiLGNvbGxhcHNlZDohMSxjbGFzc2VzOiJhbGlnbi1jZW50ZXIiLGNlRmFsc2VPdmVycmlkZTohMCxwcmV2aWV3OiJmb250LWZhbWlseSBmb250LXNpemUifSx7c2VsZWN0b3I6ImltZyIsY29sbGFwc2VkOiExLHN0eWxlczp7ZGlzcGxheToiYmxvY2siLG1hcmdpbkxlZnQ6ImF1dG8iLG1hcmdpblJpZ2h0OiJhdXRvIn0scHJldmlldzohMX0se3NlbGVjdG9yOiJ0YWJsZSIsY29sbGFwc2VkOiExLHN0eWxlczp7bWFyZ2luTGVmdDoiYXV0byIsbWFyZ2luUmlnaHQ6ImF1dG8ifSxwcmV2aWV3OiJmb250LWZhbWlseSBmb250LXNpemUifV0sYWxpZ25yaWdodDpbe3NlbGVjdG9yOiJmaWd1cmUuaW1hZ2UiLGNvbGxhcHNlZDohMSxjbGFzc2VzOiJhbGlnbi1yaWdodCIsY2VGYWxzZU92ZXJyaWRlOiEwLHByZXZpZXc6ImZvbnQtZmFtaWx5IGZvbnQtc2l6ZSJ9LHtzZWxlY3RvcjoiZmlndXJlLHAsaDEsaDIsaDMsaDQsaDUsaDYsdGQsdGgsdHIsZGl2LHVsLG9sLGxpIixzdHlsZXM6e3RleHRBbGlnbjoicmlnaHQifSxpbmhlcml0OiExLHByZXZpZXc6ImZvbnQtZmFtaWx5IGZvbnQtc2l6ZSIsZGVmYXVsdEJsb2NrOiJkaXYifSx7c2VsZWN0b3I6ImltZyx0YWJsZSIsY29sbGFwc2VkOiExLHN0eWxlczp7ImZsb2F0IjoicmlnaHQifSxwcmV2aWV3OiJmb250LWZhbWlseSBmb250LXNpemUifV0sYWxpZ25qdXN0aWZ5Olt7c2VsZWN0b3I6ImZpZ3VyZSxwLGgxLGgyLGgzLGg0LGg1LGg2LHRkLHRoLHRyLGRpdix1bCxvbCxsaSIsc3R5bGVzOnt0ZXh0QWxpZ246Imp1c3RpZnkifSxpbmhlcml0OiExLGRlZmF1bHRCbG9jazoiZGl2IixwcmV2aWV3OiJmb250LWZhbWlseSBmb250LXNpemUifV0sYm9sZDpbe2lubGluZToic3Ryb25nIixyZW1vdmU6ImFsbCIscHJlc2VydmVfYXR0cmlidXRlczpbImNsYXNzIiwic3R5bGUiXX0se2lubGluZToic3BhbiIsc3R5bGVzOntmb250V2VpZ2h0OiJib2xkIn19LHtpbmxpbmU6ImIiLHJlbW92ZToiYWxsIixwcmVzZXJ2ZV9hdHRyaWJ1dGVzOlsiY2xhc3MiLCJzdHlsZSJdfV0saXRhbGljOlt7aW5saW5lOiJlbSIscmVtb3ZlOiJhbGwiLHByZXNlcnZlX2F0dHJpYnV0ZXM6WyJjbGFzcyIsInN0eWxlIl19LHtpbmxpbmU6InNwYW4iLHN0eWxlczp7Zm9udFN0eWxlOiJpdGFsaWMifX0se2lubGluZToiaSIscmVtb3ZlOiJhbGwiLHByZXNlcnZlX2F0dHJpYnV0ZXM6WyJjbGFzcyIsInN0eWxlIl19XSx1bmRlcmxpbmU6W3tpbmxpbmU6InNwYW4iLHN0eWxlczp7dGV4dERlY29yYXRpb246InVuZGVybGluZSJ9LGV4YWN0OiEwfSx7aW5saW5lOiJ1IixyZW1vdmU6ImFsbCIscHJlc2VydmVfYXR0cmlidXRlczpbImNsYXNzIiwic3R5bGUiXX1dLHN0cmlrZXRocm91Z2g6W3tpbmxpbmU6InNwYW4iLHN0eWxlczp7dGV4dERlY29yYXRpb246ImxpbmUtdGhyb3VnaCJ9LGV4YWN0OiEwfSx7aW5saW5lOiJzdHJpa2UiLHJlbW92ZToiYWxsIixwcmVzZXJ2ZV9hdHRyaWJ1dGVzOlsiY2xhc3MiLCJzdHlsZSJdfV0sZm9yZWNvbG9yOntpbmxpbmU6InNwYW4iLHN0eWxlczp7Y29sb3I6IiV2YWx1ZSJ9LGxpbmtzOiEwLHJlbW92ZV9zaW1pbGFyOiEwLGNsZWFyX2NoaWxkX3N0eWxlczohMH0saGlsaXRlY29sb3I6e2lubGluZToic3BhbiIsc3R5bGVzOntiYWNrZ3JvdW5kQ29sb3I6IiV2YWx1ZSJ9LGxpbmtzOiEwLHJlbW92ZV9zaW1pbGFyOiEwLGNsZWFyX2NoaWxkX3N0eWxlczohMH0sZm9udG5hbWU6e2lubGluZToic3BhbiIsdG9nZ2xlOiExLHN0eWxlczp7Zm9udEZhbWlseToiJXZhbHVlIn0sY2xlYXJfY2hpbGRfc3R5bGVzOiEwfSxmb250c2l6ZTp7aW5saW5lOiJzcGFuIix0b2dnbGU6ITEsc3R5bGVzOntmb250U2l6ZToiJXZhbHVlIn0sY2xlYXJfY2hpbGRfc3R5bGVzOiEwfSxmb250c2l6ZV9jbGFzczp7aW5saW5lOiJzcGFuIixhdHRyaWJ1dGVzOnsiY2xhc3MiOiIldmFsdWUifX0sYmxvY2txdW90ZTp7YmxvY2s6ImJsb2NrcXVvdGUiLHdyYXBwZXI6ITAscmVtb3ZlOiJhbGwifSxzdWJzY3JpcHQ6e2lubGluZToic3ViIn0sc3VwZXJzY3JpcHQ6e2lubGluZToic3VwIn0sY29kZTp7aW5saW5lOiJjb2RlIn0sbGluazp7aW5saW5lOiJhIixzZWxlY3RvcjoiYSIscmVtb3ZlOiJhbGwiLHNwbGl0OiEwLGRlZXA6ITAsb25tYXRjaDpmdW5jdGlvbigpe3JldHVybiEwfSxvbmZvcm1hdDpmdW5jdGlvbihuLGUsdCl7aHIuZWFjaCh0LGZ1bmN0aW9uKGUsdCl7ci5zZXRBdHRyaWIobix0LGUpfSl9fSxyZW1vdmVmb3JtYXQ6W3tzZWxlY3RvcjoiYixzdHJvbmcsZW0saSxmb250LHUsc3RyaWtlLHN1YixzdXAsZGZuLGNvZGUsc2FtcCxrYmQsdmFyLGNpdGUsbWFyayxxLGRlbCxpbnMiLHJlbW92ZToiYWxsIixzcGxpdDohMCxleHBhbmQ6ITEsYmxvY2tfZXhwYW5kOiEwLGRlZXA6ITB9LHtzZWxlY3Rvcjoic3BhbiIsYXR0cmlidXRlczpbInN0eWxlIiwiY2xhc3MiXSxyZW1vdmU6ImVtcHR5IixzcGxpdDohMCxleHBhbmQ6ITEsZGVlcDohMH0se3NlbGVjdG9yOiIqIixhdHRyaWJ1dGVzOlsic3R5bGUiLCJjbGFzcyJdLHNwbGl0OiExLGV4cGFuZDohMSxkZWVwOiEwfV19LGhyLmVhY2goInAgaDEgaDIgaDMgaDQgaDUgaDYgZGl2IGFkZHJlc3MgcHJlIGRpdiBkdCBkZCBzYW1wIi5zcGxpdCgvXHMvKSxmdW5jdGlvbihlKXt0W2VdPXtibG9jazplLHJlbW92ZToiYWxsIn19KSx0KSksbyhlLnNldHRpbmdzLmZvcm1hdHMpLHtnZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGU/bltlXTpufSxoYXM6ZnVuY3Rpb24oZSl7cmV0dXJuIG1lKG4sZSl9LHJlZ2lzdGVyOm8sdW5yZWdpc3RlcjpmdW5jdGlvbihlKXtyZXR1cm4gZSYmbltlXSYmZGVsZXRlIG5bZV0sbn19fXZhciBVdix6dixqdj1oci5lYWNoLEh2PWdhLkRPTSxWdj1mdW5jdGlvbihlLHQpe3ZhciBuLG8scixtPXQmJnQuc2NoZW1hfHxubyh7fSkscD1mdW5jdGlvbihlKXt2YXIgdCxuLHI7cmV0dXJuIG89InN0cmluZyI9PXR5cGVvZiBlP3tuYW1lOmUsY2xhc3NlczpbXSxhdHRyczp7fX06ZSx0PUh2LmNyZWF0ZShvLm5hbWUpLG49dCwocj1vKS5jbGFzc2VzLmxlbmd0aCYmSHYuYWRkQ2xhc3MobixyLmNsYXNzZXMuam9pbigiICIpKSxIdi5zZXRBdHRyaWJzKG4sci5hdHRycyksdH0sZz1mdW5jdGlvbihuLGUsdCl7dmFyIHIsbyxpLGEsdSxzLGMsbCxmPTA8ZS5sZW5ndGgmJmVbMF0sZD1mJiZmLm5hbWU7aWYodT1kLHM9InN0cmluZyIhPXR5cGVvZihhPW4pP2Eubm9kZU5hbWUudG9Mb3dlckNhc2UoKTphLGM9bS5nZXRFbGVtZW50UnVsZShzKSxpPSEoIShsPWMmJmMucGFyZW50c1JlcXVpcmVkKXx8IWwubGVuZ3RoKSYmKHUmJi0xIT09aHIuaW5BcnJheShsLHUpP3U6bFswXSkpZD09PWk/KG89ZVswXSxlPWUuc2xpY2UoMSkpOm89aTtlbHNlIGlmKGYpbz1lWzBdLGU9ZS5zbGljZSgxKTtlbHNlIGlmKCF0KXJldHVybiBuO3JldHVybiBvJiYocj1wKG8pKS5hcHBlbmRDaGlsZChuKSx0JiYocnx8KHI9SHYuY3JlYXRlKCJkaXYiKSkuYXBwZW5kQ2hpbGQobiksaHIuZWFjaCh0LGZ1bmN0aW9uKGUpe3ZhciB0PXAoZSk7ci5pbnNlcnRCZWZvcmUodCxuKX0pKSxnKHIsZSxvJiZvLnNpYmxpbmdzKX07cmV0dXJuIGUmJmUubGVuZ3RoPyhvPWVbMF0sbj1wKG8pLChyPUh2LmNyZWF0ZSgiZGl2IikpLmFwcGVuZENoaWxkKGcobixlLnNsaWNlKDEpLG8uc2libGluZ3MpKSxyKToiIn0scXY9ZnVuY3Rpb24oZSl7dmFyIHQsYT17Y2xhc3NlczpbXSxhdHRyczp7fX07cmV0dXJuIioiIT09KGU9YS5zZWxlY3Rvcj1oci50cmltKGUpKSYmKHQ9ZS5yZXBsYWNlKC8oPzooWyNcLl18Ojo/KShbXHdcLV0rKXwoXFspKFteXF1dKylcXT8pL2csZnVuY3Rpb24oZSx0LG4scixvKXtzd2l0Y2godCl7Y2FzZSIjIjphLmF0dHJzLmlkPW47YnJlYWs7Y2FzZSIuIjphLmNsYXNzZXMucHVzaChuKTticmVhaztjYXNlIjoiOi0xIT09aHIuaW5BcnJheSgiY2hlY2tlZCBkaXNhYmxlZCBlbmFibGVkIHJlYWQtb25seSByZXF1aXJlZCIuc3BsaXQoIiAiKSxuKSYmKGEuYXR0cnNbbl09bil9aWYoIlsiPT09cil7dmFyIGk9by5tYXRjaCgvKFtcd1wtXSspKD86XD1cIihbXlwiXSspKT8vKTtpJiYoYS5hdHRyc1tpWzFdXT1pWzJdKX1yZXR1cm4iIn0pKSxhLm5hbWU9dHx8ImRpdiIsYX0sJHY9ZnVuY3Rpb24obixlKXt2YXIgdCxyLG8saSxhLHUscz0iIjtpZighMT09PSh1PW4uc2V0dGluZ3MucHJldmlld19zdHlsZXMpKXJldHVybiIiOyJzdHJpbmciIT10eXBlb2YgdSYmKHU9ImZvbnQtZmFtaWx5IGZvbnQtc2l6ZSBmb250LXdlaWdodCBmb250LXN0eWxlIHRleHQtZGVjb3JhdGlvbiB0ZXh0LXRyYW5zZm9ybSBjb2xvciBiYWNrZ3JvdW5kLWNvbG9yIGJvcmRlciBib3JkZXItcmFkaXVzIG91dGxpbmUgdGV4dC1zaGFkb3ciKTt2YXIgYyxsPWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoLyUoXHcrKS9nLCIiKX07aWYoInN0cmluZyI9PXR5cGVvZiBlKXtpZighKGU9bi5mb3JtYXR0ZXIuZ2V0KGUpKSlyZXR1cm47ZT1lWzBdfXJldHVybiJwcmV2aWV3ImluIGUmJiExPT09KHU9ZS5wcmV2aWV3KT8iIjoodD1lLmJsb2NrfHxlLmlubGluZXx8InNwYW4iLHI9KGk9KGM9ZS5zZWxlY3RvcikmJiJzdHJpbmciPT10eXBlb2YgYz8oYz0oYz1jLnNwbGl0KC9ccyosXHMqLylbMF0pLnJlcGxhY2UoL1xzKih+XCt8fnxcK3w+KVxzKi9nLCIkMSIpLGhyLm1hcChjLnNwbGl0KC8oPzo+fFxzKyg/IVteXFtcXV0rXF0pKS8pLGZ1bmN0aW9uKGUpe3ZhciB0PWhyLm1hcChlLnNwbGl0KC8oPzp+XCt8fnxcKykvKSxxdiksbj10LnBvcCgpO3JldHVybiB0Lmxlbmd0aCYmKG4uc2libGluZ3M9dCksbn0pLnJldmVyc2UoKSk6W10pLmxlbmd0aD8oaVswXS5uYW1lfHwoaVswXS5uYW1lPXQpLHQ9ZS5zZWxlY3RvcixWdihpLG4pKTpWdihbdF0sbiksbz1Idi5zZWxlY3QodCxyKVswXXx8ci5maXJzdENoaWxkLGp2KGUuc3R5bGVzLGZ1bmN0aW9uKGUsdCl7KGU9bChlKSkmJkh2LnNldFN0eWxlKG8sdCxlKX0pLGp2KGUuYXR0cmlidXRlcyxmdW5jdGlvbihlLHQpeyhlPWwoZSkpJiZIdi5zZXRBdHRyaWIobyx0LGUpfSksanYoZS5jbGFzc2VzLGZ1bmN0aW9uKGUpe2U9bChlKSxIdi5oYXNDbGFzcyhvLGUpfHxIdi5hZGRDbGFzcyhvLGUpfSksbi5maXJlKCJQcmV2aWV3Rm9ybWF0cyIpLEh2LnNldFN0eWxlcyhyLHtwb3NpdGlvbjoiYWJzb2x1dGUiLGxlZnQ6LTY1NTM1fSksbi5nZXRCb2R5KCkuYXBwZW5kQ2hpbGQociksYT1Idi5nZXRTdHlsZShuLmdldEJvZHkoKSwiZm9udFNpemUiLCEwKSxhPS9weCQvLnRlc3QoYSk/cGFyc2VJbnQoYSwxMCk6MCxqdih1LnNwbGl0KCIgIiksZnVuY3Rpb24oZSl7dmFyIHQ9SHYuZ2V0U3R5bGUobyxlLCEwKTtpZighKCJiYWNrZ3JvdW5kLWNvbG9yIj09PWUmJi90cmFuc3BhcmVudHxyZ2JhXHMqXChbXildKyxccyowXCkvLnRlc3QodCkmJih0PUh2LmdldFN0eWxlKG4uZ2V0Qm9keSgpLGUsITApLCIjZmZmZmZmIj09PUh2LnRvSGV4KHQpLnRvTG93ZXJDYXNlKCkpfHwiY29sb3IiPT09ZSYmIiMwMDAwMDAiPT09SHYudG9IZXgodCkudG9Mb3dlckNhc2UoKSkpe2lmKCJmb250LXNpemUiPT09ZSYmL2VtfCUkLy50ZXN0KHQpKXtpZigwPT09YSlyZXR1cm47dD1wYXJzZUZsb2F0KHQpLygvJSQvLnRlc3QodCk/MTAwOjEpKmErInB4In0iYm9yZGVyIj09PWUmJnQmJihzKz0icGFkZGluZzowIDJweDsiKSxzKz1lKyI6Iit0KyI7In19KSxuLmZpcmUoIkFmdGVyUHJldmlld0Zvcm1hdHMiKSxIdi5yZW1vdmUocikscyl9LFd2PWZ1bmN0aW9uKHMpe3ZhciBlPUZ2KHMpLHQ9eGEobnVsbCk7cmV0dXJuIGZ1bmN0aW9uKGUpe2UuYWRkU2hvcnRjdXQoIm1ldGErYiIsIiIsIkJvbGQiKSxlLmFkZFNob3J0Y3V0KCJtZXRhK2kiLCIiLCJJdGFsaWMiKSxlLmFkZFNob3J0Y3V0KCJtZXRhK3UiLCIiLCJVbmRlcmxpbmUiKTtmb3IodmFyIHQ9MTt0PD02O3QrKyllLmFkZFNob3J0Y3V0KCJhY2Nlc3MrIit0LCIiLFsiRm9ybWF0QmxvY2siLCExLCJoIit0XSk7ZS5hZGRTaG9ydGN1dCgiYWNjZXNzKzciLCIiLFsiRm9ybWF0QmxvY2siLCExLCJwIl0pLGUuYWRkU2hvcnRjdXQoImFjY2Vzcys4IiwiIixbIkZvcm1hdEJsb2NrIiwhMSwiZGl2Il0pLGUuYWRkU2hvcnRjdXQoImFjY2Vzcys5IiwiIixbIkZvcm1hdEJsb2NrIiwhMSwiYWRkcmVzcyJdKX0ocyksbHAocykse2dldDplLmdldCxoYXM6ZS5oYXMscmVnaXN0ZXI6ZS5yZWdpc3Rlcix1bnJlZ2lzdGVyOmUudW5yZWdpc3RlcixhcHBseTpmdW5jdGlvbihlLHQsbil7dmFyIHIsbyxpO3I9ZSxvPXQsaT1uLHdnKHMpLmZvcm1hdHRlci5hcHBseShyLG8saSl9LHJlbW92ZTpmdW5jdGlvbihlLHQsbixyKXt2YXIgbyxpLGEsdTtvPWUsaT10LGE9bix1PXIsd2cocykuZm9ybWF0dGVyLnJlbW92ZShvLGksYSx1KX0sdG9nZ2xlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixvLGk7cj1lLG89dCxpPW4sd2cocykuZm9ybWF0dGVyLnRvZ2dsZShyLG8saSl9LG1hdGNoOk4oR20scyksbWF0Y2hBbGw6TihKbSxzKSxtYXRjaE5vZGU6TihZbSxzKSxjYW5BcHBseTpOKFFtLHMpLGZvcm1hdENoYW5nZWQ6TihNdixzLHQpLGdldENzc1RleHQ6TigkdixzKX19LEt2PWZ1bmN0aW9uKG4scixvKXt2YXIgaT14YSghMSksYT1mdW5jdGlvbihlKXtkZyhyLCExLG8pLHIuYWRkKHt9LGUpfTtuLm9uKCJpbml0IixmdW5jdGlvbigpe3IuYWRkKCl9KSxuLm9uKCJCZWZvcmVFeGVjQ29tbWFuZCIsZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb21tYW5kOyJVbmRvIiE9PXQmJiJSZWRvIiE9PXQmJiJtY2VSZXBhaW50IiE9PXQmJihtZyhyLG8pLHIuYmVmb3JlQ2hhbmdlKCkpfSksbi5vbigiRXhlY0NvbW1hbmQiLGZ1bmN0aW9uKGUpe3ZhciB0PWUuY29tbWFuZDsiVW5kbyIhPT10JiYiUmVkbyIhPT10JiYibWNlUmVwYWludCIhPT10JiZhKGUpfSksbi5vbigiT2JqZWN0UmVzaXplU3RhcnQgY3V0IixmdW5jdGlvbigpe3IuYmVmb3JlQ2hhbmdlKCl9KSxuLm9uKCJTYXZlQ29udGVudCBPYmplY3RSZXNpemVkIGJsdXIiLGEpLG4ub24oImRyYWdlbmQiLGEpLG4ub24oImtleXVwIixmdW5jdGlvbihlKXt2YXIgdD1lLmtleUNvZGU7ZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8KCgzMzw9dCYmdDw9MzZ8fDM3PD10JiZ0PD00MHx8NDU9PT10fHxlLmN0cmxLZXkpJiYoYSgpLG4ubm9kZUNoYW5nZWQoKSksNDYhPT10JiY4IT09dHx8bi5ub2RlQ2hhbmdlZCgpLGkuZ2V0KCkmJnIudHlwaW5nJiYhMT09PWxnKGFnKG4pLHIuZGF0YVswXSkmJighMT09PW4uaXNEaXJ0eSgpJiYobi5zZXREaXJ0eSghMCksbi5maXJlKCJjaGFuZ2UiLHtsZXZlbDpyLmRhdGFbMF0sbGFzdExldmVsOm51bGx9KSksbi5maXJlKCJUeXBpbmdVbmRvIiksaS5zZXQoITEpLG4ubm9kZUNoYW5nZWQoKSkpfSksbi5vbigia2V5ZG93biIsZnVuY3Rpb24oZSl7dmFyIHQ9ZS5rZXlDb2RlO2lmKCFlLmlzRGVmYXVsdFByZXZlbnRlZCgpKWlmKDMzPD10JiZ0PD0zNnx8Mzc8PXQmJnQ8PTQwfHw0NT09PXQpci50eXBpbmcmJmEoZSk7ZWxzZXt2YXIgbj1lLmN0cmxLZXkmJiFlLmFsdEtleXx8ZS5tZXRhS2V5OyEodDwxNnx8MjA8dCl8fDIyND09PXR8fDkxPT09dHx8ci50eXBpbmd8fG58fChyLmJlZm9yZUNoYW5nZSgpLGRnKHIsITAsbyksci5hZGQoe30sZSksaS5zZXQoITApKX19KSxuLm9uKCJtb3VzZWRvd24iLGZ1bmN0aW9uKGUpe3IudHlwaW5nJiZhKGUpfSk7bi5vbigiaW5wdXQiLGZ1bmN0aW9uKGUpe3ZhciB0O2UuaW5wdXRUeXBlJiYoImluc2VydFJlcGxhY2VtZW50VGV4dCI9PT1lLmlucHV0VHlwZXx8Imluc2VydFRleHQiPT09KHQ9ZSkuaW5wdXRUeXBlJiZudWxsPT09dC5kYXRhKSYmYShlKX0pLG4ub24oIkFkZFVuZG8gVW5kbyBSZWRvIENsZWFyVW5kb3MiLGZ1bmN0aW9uKGUpe2UuaXNEZWZhdWx0UHJldmVudGVkKCl8fG4ubm9kZUNoYW5nZWQoKX0pfSxYdj1mdW5jdGlvbihzKXt2YXIgZSxjPXhhKFIubm9uZSgpKSxsPXhhKDApLGY9eGEoMCksZD17ZGF0YTpbXSx0eXBpbmc6ITEsYmVmb3JlQ2hhbmdlOmZ1bmN0aW9uKCl7dmFyIGUsdDtlPWwsdD1jLHdnKHMpLnVuZG9NYW5hZ2VyLmJlZm9yZUNoYW5nZShlLHQpfSxhZGQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbj1kLHI9ZixvPWwsaT1jLGE9ZSx1PXQsd2cocykudW5kb01hbmFnZXIuYWRkVW5kb0xldmVsKG4scixvLGksYSx1KTt2YXIgbixyLG8saSxhLHV9LHVuZG86ZnVuY3Rpb24oKXtyZXR1cm4gZT1kLHQ9bCxuPWYsd2cocykudW5kb01hbmFnZXIudW5kbyhlLHQsbik7dmFyIGUsdCxufSxyZWRvOmZ1bmN0aW9uKCl7cmV0dXJuIGU9cyx0PWYsbj1kLmRhdGEsd2coZSkudW5kb01hbmFnZXIucmVkbyh0LG4pO3ZhciBlLHQsbn0sY2xlYXI6ZnVuY3Rpb24oKXt2YXIgZSx0O2U9ZCx0PWYsd2cocykudW5kb01hbmFnZXIuY2xlYXIoZSx0KX0scmVzZXQ6ZnVuY3Rpb24oKXt2YXIgZTtlPWQsd2cocykudW5kb01hbmFnZXIucmVzZXQoZSl9LGhhc1VuZG86ZnVuY3Rpb24oKXtyZXR1cm4gZT1kLHQ9Zix3ZyhzKS51bmRvTWFuYWdlci5oYXNVbmRvKGUsdCk7dmFyIGUsdH0saGFzUmVkbzpmdW5jdGlvbigpe3JldHVybiBlPWQsdD1mLHdnKHMpLnVuZG9NYW5hZ2VyLmhhc1JlZG8oZSx0KTt2YXIgZSx0fSx0cmFuc2FjdDpmdW5jdGlvbihlKXtyZXR1cm4gdD1kLG49bCxyPWUsd2cocykudW5kb01hbmFnZXIudHJhbnNhY3QodCxuLHIpO3ZhciB0LG4scn0saWdub3JlOmZ1bmN0aW9uKGUpe3ZhciB0LG47dD1sLG49ZSx3ZyhzKS51bmRvTWFuYWdlci5pZ25vcmUodCxuKX0sZXh0cmE6ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG8saTtuPWQscj1mLG89ZSxpPXQsd2cocykudW5kb01hbmFnZXIuZXh0cmEobixyLG8saSl9fTtyZXR1cm4geWcocyl8fEt2KHMsZCxsKSwoZT1zKS5hZGRTaG9ydGN1dCgibWV0YSt6IiwiIiwiVW5kbyIpLGUuYWRkU2hvcnRjdXQoIm1ldGEreSxtZXRhK3NoaWZ0K3oiLCIiLCJSZWRvIiksZH0sWXY9WzksMjcsWmguSE9NRSxaaC5FTkQsMTksMjAsNDQsMTQ0LDE0NSwzMywzNCw0NSwxNiwxNywxOCw5MSw5Miw5MyxaaC5ET1dOLFpoLlVQLFpoLkxFRlQsWmguUklHSFRdLmNvbmNhdChyci5icm93c2VyLmlzRmlyZWZveCgpP1syMjRdOltdKSxHdj0iZGF0YS1tY2UtcGxhY2Vob2xkZXIiLEp2PWZ1bmN0aW9uKGUpe3JldHVybiJrZXlkb3duIj09PWUudHlwZXx8ImtleXVwIj09PWUudHlwZX0sUXY9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5rZXlDb2RlO3JldHVybiB0PT09WmguQkFDS1NQQUNFfHx0PT09WmguREVMRVRFfSxadj1mdW5jdGlvbihhKXt2YXIgZSx1PWEuZG9tLHM9SHMoYSksYz0oZT1hKS5nZXRQYXJhbSgicGxhY2Vob2xkZXIiLFVzLmdldEF0dHJpYihlLmdldEVsZW1lbnQoKSwicGxhY2Vob2xkZXIiKSwic3RyaW5nIiksbD1mdW5jdGlvbihlLHQpe2lmKCFmdW5jdGlvbihlKXtpZihKdihlKSl7dmFyIHQ9ZS5rZXlDb2RlO3JldHVybiFRdihlKSYmKFpoLm1ldGFLZXlQcmVzc2VkKGUpfHxlLmFsdEtleXx8MTEyPD10JiZ0PD0xMjN8fE0oWXYsdCkpfXJldHVybiExfShlKSl7dmFyIG4scixvPWEuZ2V0Qm9keSgpLGk9IShKdihuPWUpJiYhKFF2KG4pfHwia2V5dXAiPT09bi50eXBlJiYyMjk9PT1uLmtleUNvZGUpKSYmZnVuY3Rpb24oZSx0LG4pe2lmKEdmKE5lLmZyb21Eb20odCksITEpKXt2YXIgcj0iIj09PW4sbz10LmZpcnN0RWxlbWVudENoaWxkO3JldHVybiFvfHwhZS5nZXRTdHlsZSh0LmZpcnN0RWxlbWVudENoaWxkLCJwYWRkaW5nLWxlZnQiKSYmIWUuZ2V0U3R5bGUodC5maXJzdEVsZW1lbnRDaGlsZCwicGFkZGluZy1yaWdodCIpJiYocj8hZS5pc0Jsb2NrKG8pOm49PT1vLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpfXJldHVybiExfSh1LG8scyk7IiIhPT11LmdldEF0dHJpYihvLEd2KT09PWkmJiF0fHwodS5zZXRBdHRyaWIobyxHdixpP2M6bnVsbCksdS5zZXRBdHRyaWIobywiYXJpYS1wbGFjZWhvbGRlciIsaT9jOm51bGwpLHI9aSxhLmZpcmUoIlBsYWNlaG9sZGVyVG9nZ2xlIix7c3RhdGU6cn0pLGEub24oaT8ia2V5ZG93biI6ImtleXVwIixsKSxhLm9mZihpPyJrZXl1cCI6ImtleWRvd24iLGwpKX19O2MmJmEub24oImluaXQiLGZ1bmN0aW9uKGUpe2woZSwhMCksYS5vbigiY2hhbmdlIFNldENvbnRlbnQgRXhlY0NvbW1hbmQiLGwpLGEub24oInBhc3RlIixmdW5jdGlvbihlKXtyZXR1cm4gWG4uc2V0RWRpdG9yVGltZW91dChhLGZ1bmN0aW9uKCl7cmV0dXJuIGwoZSl9KX0pLGEub24oInJlbW92ZSIsZnVuY3Rpb24oKXt2YXIgZT1hLmdldEJvZHkoKTt1LnNldEF0dHJpYihlLEd2LG51bGwpLHUuc2V0QXR0cmliKGUsImFyaWEtcGxhY2Vob2xkZXIiLG51bGwpfSl9KX0sZXk9ZnVuY3Rpb24oZSl7cmV0dXJuIGUudG91Y2hlcz09PXVuZGVmaW5lZHx8MSE9PWUudG91Y2hlcy5sZW5ndGg/Ui5ub25lKCk6Ui5zb21lKGUudG91Y2hlc1swXSl9LHR5PWZ1bmN0aW9uKGEpe3ZhciB1PXhhKFIubm9uZSgpKSxzPXhhKCExKSxyPUFhKGZ1bmN0aW9uKGUpe2EuZmlyZSgibG9uZ3ByZXNzIixwZShwZSh7fSxlKSx7dHlwZToibG9uZ3ByZXNzIn0pKSxzLnNldCghMCl9LDQwMCk7YS5vbigidG91Y2hzdGFydCIsZnVuY3Rpb24obil7ZXkobikuZWFjaChmdW5jdGlvbihlKXtyLmNhbmNlbCgpO3ZhciB0PXt4OngoZS5jbGllbnRYKSx5OngoZS5jbGllbnRZKSx0YXJnZXQ6eChuLnRhcmdldCl9O3IudGhyb3R0bGUobikscy5zZXQoITEpLHUuc2V0KFIuc29tZSh0KSl9KX0sITApLGEub24oInRvdWNobW92ZSIsZnVuY3Rpb24oZSl7ci5jYW5jZWwoKSxleShlKS5lYWNoKGZ1bmN0aW9uKGkpe3UuZ2V0KCkuZWFjaChmdW5jdGlvbihlKXt2YXIgdCxuLHIsbzt0PWksbj1lLHI9TWF0aC5hYnModC5jbGllbnRYLW4ueCgpKSxvPU1hdGguYWJzKHQuY2xpZW50WS1uLnkoKSksKDU8cnx8NTxvKSYmKHUuc2V0KFIubm9uZSgpKSxzLnNldCghMSksYS5maXJlKCJsb25ncHJlc3NjYW5jZWwiKSl9KX0pfSwhMCksYS5vbigidG91Y2hlbmQgdG91Y2hjYW5jZWwiLGZ1bmN0aW9uKHQpe3IuY2FuY2VsKCksInRvdWNoY2FuY2VsIiE9PXQudHlwZSYmdS5nZXQoKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUudGFyZ2V0KCkuaXNFcXVhbE5vZGUodC50YXJnZXQpfSkuZWFjaChmdW5jdGlvbigpe3MuZ2V0KCk/dC5wcmV2ZW50RGVmYXVsdCgpOmEuZmlyZSgidGFwIixwZShwZSh7fSx0KSx7dHlwZToidGFwIn0pKX0pfSwhMCl9LG55PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuaGFzT3duUHJvcGVydHkodC5ub2RlTmFtZSl9LHJ5PWZ1bmN0aW9uKGUsdCl7aWYoWnQodCkpe2lmKDA9PT10Lm5vZGVWYWx1ZS5sZW5ndGgpcmV0dXJuITA7aWYoL15ccyskLy50ZXN0KHQubm9kZVZhbHVlKSYmKCF0Lm5leHRTaWJsaW5nfHxueShlLHQubmV4dFNpYmxpbmcpKSlyZXR1cm4hMH1yZXR1cm4hMX0sb3k9ZnVuY3Rpb24oZSl7dmFyIHQsbixyLG8saSxhLHUscyxjLGwsZj1lLmRvbSxkPWUuc2VsZWN0aW9uLG09ZS5zY2hlbWEscD1tLmdldEJsb2NrRWxlbWVudHMoKSxnPWQuZ2V0U3RhcnQoKSxoPWUuZ2V0Qm9keSgpLHY9SHMoZSk7aWYoZyYmJHQoZykmJnYmJihsPWgubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxtLmlzVmFsaWRDaGlsZChsLHYudG9Mb3dlckNhc2UoKSkmJih5PXAsYj1oLEM9ZywhRih0ZChOZS5mcm9tRG9tKEMpLE5lLmZyb21Eb20oYikpLGZ1bmN0aW9uKGUpe3JldHVybiBueSh5LGUuZG9tKCkpfSkpKSl7dmFyIHksYixDLHcseDtmb3Iobj0odD1kLmdldFJuZygpKS5zdGFydENvbnRhaW5lcixyPXQuc3RhcnRPZmZzZXQsbz10LmVuZENvbnRhaW5lcixpPXQuZW5kT2Zmc2V0LGM9UG0oZSksZz1oLmZpcnN0Q2hpbGQ7ZzspaWYodz1wLFp0KHg9Zyl8fCR0KHgpJiYhbnkodyx4KSYmIWxsKHgpKXtpZihyeShwLGcpKXtnPSh1PWcpLm5leHRTaWJsaW5nLGYucmVtb3ZlKHUpO2NvbnRpbnVlfWF8fChhPWYuY3JlYXRlKHYsVnMoZSkpLGcucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSxnKSxzPSEwKSxnPSh1PWcpLm5leHRTaWJsaW5nLGEuYXBwZW5kQ2hpbGQodSl9ZWxzZSBhPW51bGwsZz1nLm5leHRTaWJsaW5nO3MmJmMmJih0LnNldFN0YXJ0KG4sciksdC5zZXRFbmQobyxpKSxkLnNldFJuZyh0KSxlLm5vZGVDaGFuZ2VkKCkpfX0saXk9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWU/MTotMTtyZXR1cm4gdC5zZXRSbmcobXMobi5jb250YWluZXIoKSxuLm9mZnNldCgpK3IpLnRvUmFuZ2UoKSksdC5nZXRTZWwoKS5tb2RpZnkoIm1vdmUiLGU/ImZvcndhcmQiOiJiYWNrd2FyZCIsIndvcmQiKSwhMH0sYXk9ZnVuY3Rpb24oZSx0KXt2YXIgbj10LnNlbGVjdGlvbi5nZXRSbmcoKSxyPWU/bXMuZnJvbVJhbmdlRW5kKG4pOm1zLmZyb21SYW5nZVN0YXJ0KG4pO3JldHVybiEhRCh0LnNlbGVjdGlvbi5nZXRTZWwoKS5tb2RpZnkpJiYoZSYmdnUocik/aXkoITAsdC5zZWxlY3Rpb24scik6IShlfHwheXUocikpJiZpeSghMSx0LnNlbGVjdGlvbixyKSl9LHV5PVp0LHN5PWZ1bmN0aW9uKGUpe3JldHVybiB1eShlKSYmZS5kYXRhWzBdPT09c3V9LGN5PWZ1bmN0aW9uKGUpe3JldHVybiB1eShlKSYmZS5kYXRhW2UuZGF0YS5sZW5ndGgtMV09PT1zdX0sbHk9ZnVuY3Rpb24oZSl7cmV0dXJuIGUub3duZXJEb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzdSl9LGZ5PWZ1bmN0aW9uKGUsdCl7cmV0dXJuKGU/ZnVuY3Rpb24oZSl7aWYodXkoZS5wcmV2aW91c1NpYmxpbmcpKXJldHVybiBjeShlLnByZXZpb3VzU2libGluZyl8fGUucHJldmlvdXNTaWJsaW5nLmFwcGVuZERhdGEoc3UpLGUucHJldmlvdXNTaWJsaW5nO2lmKHV5KGUpKXJldHVybiBzeShlKXx8ZS5pbnNlcnREYXRhKDAsc3UpLGU7dmFyIHQ9bHkoZSk7cmV0dXJuIGUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodCxlKSx0fTpmdW5jdGlvbihlKXtpZih1eShlLm5leHRTaWJsaW5nKSlyZXR1cm4gc3koZS5uZXh0U2libGluZyl8fGUubmV4dFNpYmxpbmcuaW5zZXJ0RGF0YSgwLHN1KSxlLm5leHRTaWJsaW5nO2lmKHV5KGUpKXJldHVybiBjeShlKXx8ZS5hcHBlbmREYXRhKHN1KSxlO3ZhciB0PWx5KGUpO3JldHVybiBlLm5leHRTaWJsaW5nP2UucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodCxlLm5leHRTaWJsaW5nKTplLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQodCksdH0pKHQpfSxkeT1OKGZ5LCEwKSxteT1OKGZ5LCExKSxweT1mdW5jdGlvbihlLHQpe3JldHVybiBadChlLmNvbnRhaW5lcigpKT9meSh0LGUuY29udGFpbmVyKCkpOmZ5KHQsZS5nZXROb2RlKCkpfSxneT1mdW5jdGlvbihlLHQpe3ZhciBuPXQuZ2V0KCk7cmV0dXJuIG4mJmUuY29udGFpbmVyKCk9PT1uJiZwdShuKX0saHk9ZnVuY3Rpb24obixlKXtyZXR1cm4gZS5mb2xkKGZ1bmN0aW9uKGUpe3JjKG4uZ2V0KCkpO3ZhciB0PWR5KGUpO3JldHVybiBuLnNldCh0KSxSLnNvbWUobXModCx0Lmxlbmd0aC0xKSl9LGZ1bmN0aW9uKGUpe3JldHVybiBaYyhlKS5tYXAoZnVuY3Rpb24oZSl7aWYoZ3koZSxuKSlyZXR1cm4gbXMobi5nZXQoKSwxKTtyYyhuLmdldCgpKTt2YXIgdD1weShlLCEwKTtyZXR1cm4gbi5zZXQodCksbXModCwxKX0pfSxmdW5jdGlvbihlKXtyZXR1cm4gZWwoZSkubWFwKGZ1bmN0aW9uKGUpe2lmKGd5KGUsbikpcmV0dXJuIG1zKG4uZ2V0KCksbi5nZXQoKS5sZW5ndGgtMSk7cmMobi5nZXQoKSk7dmFyIHQ9cHkoZSwhMSk7cmV0dXJuIG4uc2V0KHQpLG1zKHQsdC5sZW5ndGgtMSl9KX0sZnVuY3Rpb24oZSl7cmMobi5nZXQoKSk7dmFyIHQ9bXkoZSk7cmV0dXJuIG4uc2V0KHQpLFIuc29tZShtcyh0LDEpKX0pfSx2eT0vW1x1MDU5MS1cdTA3RkZcdUZCMUQtXHVGREZGXHVGRTcwLVx1RkVGQ10vLHl5PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG90KE5lLmZyb21Eb20odCksZS5nZXRQYXJhbSgiaW5saW5lX2JvdW5kYXJpZXNfc2VsZWN0b3IiLCJhW2hyZWZdLGNvZGUsLm1jZS1hbm5vdGF0aW9uIiwic3RyaW5nIikpfSxieT1mdW5jdGlvbihlKXtyZXR1cm4icnRsIj09PWdhLkRPTS5nZXRTdHlsZShlLCJkaXJlY3Rpb24iLCEwKXx8KHQ9ZS50ZXh0Q29udGVudCx2eS50ZXN0KHQpKTt2YXIgdH0sQ3k9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLG8saSxhPShyPWUsbz10LGk9bixIKGdhLkRPTS5nZXRQYXJlbnRzKGkuY29udGFpbmVyKCksIioiLG8pLHIpKTtyZXR1cm4gUi5mcm9tKGFbYS5sZW5ndGgtMV0pfSx3eT1mdW5jdGlvbihlLHQpe2lmKCF0KXJldHVybiB0O3ZhciBuPXQuY29udGFpbmVyKCkscj10Lm9mZnNldCgpO3JldHVybiBlP3B1KG4pP1p0KG4ubmV4dFNpYmxpbmcpP21zKG4ubmV4dFNpYmxpbmcsMCk6bXMuYWZ0ZXIobik6dnUodCk/bXMobixyKzEpOnQ6cHUobik/WnQobi5wcmV2aW91c1NpYmxpbmcpP21zKG4ucHJldmlvdXNTaWJsaW5nLG4ucHJldmlvdXNTaWJsaW5nLmRhdGEubGVuZ3RoKTptcy5iZWZvcmUobik6eXUodCk/bXMobixyLTEpOnR9LHh5PU4od3ksITApLFN5PU4od3ksITEpLE55PWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciByPWVbbl0uYXBwbHkobnVsbCx0KTtpZihyLmlzU29tZSgpKXJldHVybiByfXJldHVybiBSLm5vbmUoKX0sRXk9aGQoW3tiZWZvcmU6WyJlbGVtZW50Il19LHtzdGFydDpbImVsZW1lbnQiXX0se2VuZDpbImVsZW1lbnQiXX0se2FmdGVyOlsiZWxlbWVudCJdfV0pLGt5PWZ1bmN0aW9uKGUsdCl7dmFyIG49eWModCxlKTtyZXR1cm4gbnx8ZX0sX3k9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXh5KG4pLG89a3kodCxyLmNvbnRhaW5lcigpKTtyZXR1cm4gQ3koZSxvLHIpLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm4gSmMobyxyKS5iaW5kKE4oQ3ksZSxvKSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBFeS5iZWZvcmUoZSl9KX0sUi5ub25lKX0sUnk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbD09PUZzKGUsdCl9LFR5PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gQ3koZSx0LG4pLmZpbHRlcihOKFJ5LHQpKX0sQXk9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPVN5KG4pO3JldHVybiBUeShlLHQscikuYmluZChmdW5jdGlvbihlKXtyZXR1cm4gUWMoZSxyKS5pc05vbmUoKT9SLnNvbWUoRXkuc3RhcnQoZSkpOlIubm9uZSgpfSl9LER5PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj14eShuKTtyZXR1cm4gVHkoZSx0LHIpLmJpbmQoZnVuY3Rpb24oZSl7cmV0dXJuIEpjKGUscikuaXNOb25lKCk/Ui5zb21lKEV5LmVuZChlKSk6Ui5ub25lKCl9KX0sT3k9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPVN5KG4pLG89a3kodCxyLmNvbnRhaW5lcigpKTtyZXR1cm4gQ3koZSxvLHIpLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm4gUWMobyxyKS5iaW5kKE4oQ3ksZSxvKSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBFeS5hZnRlcihlKX0pfSxSLm5vbmUpfSxCeT1mdW5jdGlvbihlKXtyZXR1cm4hMT09PWJ5KEx5KGUpKX0sUHk9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBOeShbX3ksQXksRHksT3ldLFtlLHQsbl0pLmZpbHRlcihCeSl9LEx5PWZ1bmN0aW9uKGUpe3JldHVybiBlLmZvbGQoZCxkLGQsZCl9LEl5PWZ1bmN0aW9uKGUpe3JldHVybiBlLmZvbGQoeCgiYmVmb3JlIikseCgic3RhcnQiKSx4KCJlbmQiKSx4KCJhZnRlciIpKX0sTXk9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZm9sZChFeS5iZWZvcmUsRXkuYmVmb3JlLEV5LmFmdGVyLEV5LmFmdGVyKX0sRnk9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZm9sZChFeS5zdGFydCxFeS5zdGFydCxFeS5lbmQsRXkuZW5kKX0sVXk9ZnVuY3Rpb24oYSxlLHUsdCxuLHMpe3JldHVybiAkdShDeShlLHUsdCksQ3koZSx1LG4pLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUhPT10JiYocj10LG89eWMoZSxuPXUpLGk9eWMocixuKSxvJiZvPT09aSk/RXkuYWZ0ZXIoYT9lOnQpOnM7dmFyIG4scixvLGl9KS5nZXRPcihzKX0senk9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gZS5mb2xkKHgoITApLGZ1bmN0aW9uKGUpe3JldHVybiBuPXIsIShJeSh0PWUpPT09SXkobikmJkx5KHQpPT09THkobikpO3ZhciB0LG59KX0sank9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT90LmZvbGQoYShSLnNvbWUsRXkuc3RhcnQpLFIubm9uZSxhKFIuc29tZSxFeS5hZnRlciksUi5ub25lKTp0LmZvbGQoUi5ub25lLGEoUi5zb21lLEV5LmJlZm9yZSksUi5ub25lLGEoUi5zb21lLEV5LmVuZCkpfSxIeT1mdW5jdGlvbihlLGEsdSxzKXt2YXIgdD13eShlLHMpLGM9UHkoYSx1LHQpO3JldHVybiBQeShhLHUsdCkuYmluZChOKGp5LGUpKS5vclRodW5rKGZ1bmN0aW9uKCl7cmV0dXJuIG49YSxyPXUsbz1jLGk9d3kodD1lLHMpLEtjKHQscixpKS5tYXAoTih3eSx0KSkuZm9sZChmdW5jdGlvbigpe3JldHVybiBvLm1hcChNeSl9LGZ1bmN0aW9uKGUpe3JldHVybiBQeShuLHIsZSkubWFwKE4oVXksdCxuLHIsaSxlKSkuZmlsdGVyKE4oenksbykpfSkuZmlsdGVyKEJ5KTt2YXIgdCxuLHIsbyxpfSl9LFZ5PShOKEh5LCExKSxOKEh5LCEwKSxmdW5jdGlvbihlLHQpe3ZhciBuPWUuZG9tLmNyZWF0ZVJuZygpO24uc2V0U3RhcnQodC5jb250YWluZXIoKSx0Lm9mZnNldCgpKSxuLnNldEVuZCh0LmNvbnRhaW5lcigpLHQub2Zmc2V0KCkpLGUuc2VsZWN0aW9uLnNldFJuZyhuKX0pLHF5PWZ1bmN0aW9uKGUpe3JldHVybiExIT09ZS5zZXR0aW5ncy5pbmxpbmVfYm91bmRhcmllc30sJHk9ZnVuY3Rpb24oZSx0KXtlP3Quc2V0QXR0cmlidXRlKCJkYXRhLW1jZS1zZWxlY3RlZCIsImlubGluZS1ib3VuZGFyeSIpOnQucmVtb3ZlQXR0cmlidXRlKCJkYXRhLW1jZS1zZWxlY3RlZCIpfSxXeT1mdW5jdGlvbih0LGUsbil7cmV0dXJuIGh5KGUsbikubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBWeSh0LGUpLG59KX0sS3k9ZnVuY3Rpb24oZSx0KXtpZihlLnNlbGVjdGlvbi5pc0NvbGxhcHNlZCgpJiYhMCE9PWUuY29tcG9zaW5nJiZ0LmdldCgpKXt2YXIgbj1tcy5mcm9tUmFuZ2VTdGFydChlLnNlbGVjdGlvbi5nZXRSbmcoKSk7bXMuaXNUZXh0UG9zaXRpb24obikmJiExPT09KHZ1KHI9bil8fHl1KHIpKSYmKFZ5KGUsbmModC5nZXQoKSxuKSksdC5zZXQobnVsbCkpfXZhciByfSxYeT1mdW5jdGlvbihhLHUscyl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuISFxeShhKSYmKG49dSxlPXMscj0odD1hKS5nZXRCb2R5KCksbz1tcy5mcm9tUmFuZ2VTdGFydCh0LnNlbGVjdGlvbi5nZXRSbmcoKSksaT1OKHl5LHQpLEh5KGUsaSxyLG8pLmJpbmQoZnVuY3Rpb24oZSl7cmV0dXJuIFd5KHQsbixlKX0pLmlzU29tZSgpKTt2YXIgdCxuLGUscixvLGl9fSxZeT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuISFxeSh0KSYmYXkoZSx0KX19LEd5PWZ1bmN0aW9uKHUpe3ZhciBzPXhhKG51bGwpLGM9Tih5eSx1KTtyZXR1cm4gdS5vbigiTm9kZUNoYW5nZSIsZnVuY3Rpb24oZSl7dmFyIHQsbixyLG8saSxhOyFxeSh1KXx8cnIuYnJvd3Nlci5pc0lFKCkmJmUuaW5pdGlhbHx8KHQ9YyxuPXUuZG9tLHI9ZS5wYXJlbnRzLG89VShVYShOZS5mcm9tRG9tKG4uZ2V0Um9vdCgpKSwnKltkYXRhLW1jZS1zZWxlY3RlZD0iaW5saW5lLWJvdW5kYXJ5Il0nKSxmdW5jdGlvbihlKXtyZXR1cm4gZS5kb20oKX0pLGk9SChvLHQpLGE9SChyLHQpLHooUShpLGEpLE4oJHksITEpKSx6KFEoYSxpKSxOKCR5LCEwKSksS3kodSxzKSxmdW5jdGlvbihuLHIsbyxlKXtpZihyLnNlbGVjdGlvbi5pc0NvbGxhcHNlZCgpKXt2YXIgdD1IKGUsbik7eih0LGZ1bmN0aW9uKGUpe3ZhciB0PW1zLmZyb21SYW5nZVN0YXJ0KHIuc2VsZWN0aW9uLmdldFJuZygpKTtQeShuLHIuZ2V0Qm9keSgpLHQpLmJpbmQoZnVuY3Rpb24oZSl7cmV0dXJuIFd5KHIsbyxlKX0pfSl9fShjLHUscyxlLnBhcmVudHMpKX0pLHN9LEp5PU4oWXksITApLFF5PU4oWXksITEpLFp5PWZ1bmN0aW9uKGUpe3JldHVybiBXKGUsZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb25jYXQoZnVuY3Rpb24odCl7dmFyIGU9ZnVuY3Rpb24oZSl7cmV0dXJuIFUoZSxmdW5jdGlvbihlKXtyZXR1cm4oZT1MdShlKSkubm9kZT10LGV9KX07aWYoJHQodCkpcmV0dXJuIGUodC5nZXRDbGllbnRSZWN0cygpKTtpZihadCh0KSl7dmFyIG49dC5vd25lckRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7cmV0dXJuIG4uc2V0U3RhcnQodCwwKSxuLnNldEVuZCh0LHQuZGF0YS5sZW5ndGgpLGUobi5nZXRDbGllbnRSZWN0cygpKX19KHQpKX0sW10pfTsoenY9VXY9VXZ8fHt9KVt6di5VcD0tMV09IlVwIix6dlt6di5Eb3duPTFdPSJEb3duIjt2YXIgZWIsdGIsbmI9ZnVuY3Rpb24obyxpLGEsZSx1LHQpe3ZhciBuLHMsYz0wLGw9W10scj1mdW5jdGlvbihlKXt2YXIgdCxuLHI7Zm9yKHI9WnkoW2VdKSwtMT09PW8mJihyPXIucmV2ZXJzZSgpKSx0PTA7dDxyLmxlbmd0aDt0KyspaWYobj1yW3RdLCFhKG4scykpe2lmKDA8bC5sZW5ndGgmJmkobixmcihsKSkmJmMrKyxuLmxpbmU9Yyx1KG4pKXJldHVybiEwO2wucHVzaChuKX19O3JldHVybihzPWZyKHQuZ2V0Q2xpZW50UmVjdHMoKSkpJiYocihuPXQuZ2V0Tm9kZSgpKSxmdW5jdGlvbihlLHQsbixyKXtmb3IoO3I9dmMocixlLEJ1LHQpOylpZihuKHIpKXJldHVybn0obyxlLHIsbikpLGx9LHJiPU4obmIsVXYuVXAsRnUsVXUpLG9iPU4obmIsVXYuRG93bixVdSxGdSksaWI9ZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0PW4sZS5saW5lPnQ7dmFyIHR9fSxhYj1mdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQ9bixlLmxpbmU9PT10O3ZhciB0fX0sdWI9YW4sc2I9dmMsY2I9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gTWF0aC5hYnMoZS5sZWZ0LXQpfSxsYj1mdW5jdGlvbihlLHQpe3JldHVybiBNYXRoLmFicyhlLnJpZ2h0LXQpfSxmYj1mdW5jdGlvbihlLHQpe3JldHVybiBlPj10LmxlZnQmJmU8PXQucmlnaHR9LGRiPWZ1bmN0aW9uKGUsbyl7cmV0dXJuIGNyKGUsZnVuY3Rpb24oZSx0KXt2YXIgbixyO3JldHVybiBuPU1hdGgubWluKGNiKGUsbyksbGIoZSxvKSkscj1NYXRoLm1pbihjYih0LG8pLGxiKHQsbykpLGZiKG8sdCl8fCFmYihvLGUpJiYocj09PW4mJnViKHQubm9kZSl8fHI8bik/dDplfSl9LG1iPWZ1bmN0aW9uKGUsdCxuLHIpe2Zvcig7cj1zYihyLGUsQnUsdCk7KWlmKG4ocikpcmV0dXJufSxwYj1mdW5jdGlvbihlLHQsbil7dmFyIHIsbyxpLGEsdSxzLGMsbD1aeShIKHRlKGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSksY2MpKSxmPUgobCxmdW5jdGlvbihlKXtyZXR1cm4gbj49ZS50b3AmJm48PWUuYm90dG9tfSk7cmV0dXJuKHI9KHI9ZGIoZix0KSkmJmRiKChhPWUsYz1mdW5jdGlvbih0LGUpe3ZhciBuO3JldHVybiBuPUgoWnkoW2VdKSxmdW5jdGlvbihlKXtyZXR1cm4hdChlLHUpfSkscz1zLmNvbmNhdChuKSwwPT09bi5sZW5ndGh9LChzPVtdKS5wdXNoKHU9ciksbWIoVXYuVXAsYSxOKGMsRnUpLHUubm9kZSksbWIoVXYuRG93bixhLE4oYyxVdSksdS5ub2RlKSxzKSx0KSkmJmNjKHIubm9kZSk/KGk9dCx7bm9kZToobz1yKS5ub2RlLGJlZm9yZTpjYihvLGkpPGxiKG8saSl9KTpudWxsfSxnYj1vbixoYj1hbix2Yj1mdW5jdGlvbihlLHQsbixyLG8pe3JldHVybiB0Ll9zZWxlY3Rpb25PdmVycmlkZXMuc2hvd0NhcmV0KGUsbixyLG8pfSx5Yj1mdW5jdGlvbihlLHQpe3ZhciBuLHI7cmV0dXJuIGUuZmlyZSgiQmVmb3JlT2JqZWN0U2VsZWN0ZWQiLHt0YXJnZXQ6dH0pLmlzRGVmYXVsdFByZXZlbnRlZCgpP251bGw6KChyPShuPXQpLm93bmVyRG9jdW1lbnQuY3JlYXRlUmFuZ2UoKSkuc2VsZWN0Tm9kZShuKSxyKX0sYmI9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPUVjKDEsZS5nZXRCb2R5KCksdCksbz1tcy5mcm9tUmFuZ2VTdGFydChyKSxpPW8uZ2V0Tm9kZSgpO2lmKGhiKGkpKXJldHVybiB2YigxLGUsaSwhby5pc0F0RW5kKCksITEpO3ZhciBhPW8uZ2V0Tm9kZSghMCk7aWYoaGIoYSkpcmV0dXJuIHZiKDEsZSxhLCExLCExKTt2YXIgdT1lLmRvbS5nZXRQYXJlbnQoby5nZXROb2RlKCksZnVuY3Rpb24oZSl7cmV0dXJuIGhiKGUpfHxnYihlKX0pO3JldHVybiBoYih1KT92YigxLGUsdSwhMSxuKTpudWxsfSxDYj1mdW5jdGlvbihlLHQsbil7aWYoIXR8fCF0LmNvbGxhcHNlZClyZXR1cm4gdDt2YXIgcj1iYihlLHQsbik7cmV0dXJuIHJ8fHR9Oyh0Yj1lYj1lYnx8e30pW3RiLkJyPTBdPSJCciIsdGJbdGIuQmxvY2s9MV09IkJsb2NrIix0Ylt0Yi5XcmFwPTJdPSJXcmFwIix0Ylt0Yi5Fb2w9M109IkVvbCI7dmFyIHdiPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9PT1mcy5CYWNrd2FyZHM/Sih0KTp0fSx4Yj1mdW5jdGlvbihlLHQsbixyKXtmb3IodmFyIG8saSxhLHUscyxjLGw9SGMobiksZj1yLGQ9W107ZiYmKHM9bCxjPWYsbz10PT09ZnMuRm9yd2FyZHM/cy5uZXh0KGMpOnMucHJldihjKSk7KXtpZihybihvLmdldE5vZGUoITEpKSlyZXR1cm4gdD09PWZzLkZvcndhcmRzP3twb3NpdGlvbnM6d2IodCxkKS5jb25jYXQoW29dKSxicmVha1R5cGU6ZWIuQnIsYnJlYWtBdDpSLnNvbWUobyl9Ontwb3NpdGlvbnM6d2IodCxkKSxicmVha1R5cGU6ZWIuQnIsYnJlYWtBdDpSLnNvbWUobyl9O2lmKG8uaXNWaXNpYmxlKCkpe2lmKGUoZixvKSl7dmFyIG09KGk9dCxhPWYscm4oKHU9bykuZ2V0Tm9kZShpPT09ZnMuRm9yd2FyZHMpKT9lYi5CcjohMT09PWJjKGEsdSk/ZWIuQmxvY2s6ZWIuV3JhcCk7cmV0dXJue3Bvc2l0aW9uczp3Yih0LGQpLGJyZWFrVHlwZTptLGJyZWFrQXQ6Ui5zb21lKG8pfX1kLnB1c2gobyksZj1vfWVsc2UgZj1vfXJldHVybntwb3NpdGlvbnM6d2IodCxkKSxicmVha1R5cGU6ZWIuRW9sLGJyZWFrQXQ6Ui5ub25lKCl9fSxTYj1mdW5jdGlvbihuLHIsbyxlKXtyZXR1cm4gcihvLGUpLmJyZWFrQXQubWFwKGZ1bmN0aW9uKGUpe3ZhciB0PXIobyxlKS5wb3NpdGlvbnM7cmV0dXJuIG49PT1mcy5CYWNrd2FyZHM/dC5jb25jYXQoZSk6W2VdLmNvbmNhdCh0KX0pLmdldE9yKFtdKX0sTmI9ZnVuY3Rpb24oZSxpKXtyZXR1cm4gVyhlLGZ1bmN0aW9uKGUsbyl7cmV0dXJuIGUuZm9sZChmdW5jdGlvbigpe3JldHVybiBSLnNvbWUobyl9LGZ1bmN0aW9uKHIpe3JldHVybiAkdShaKHIuZ2V0Q2xpZW50UmVjdHMoKSksWihvLmdldENsaWVudFJlY3RzKCkpLGZ1bmN0aW9uKGUsdCl7dmFyIG49TWF0aC5hYnMoaS1lLmxlZnQpO3JldHVybiBNYXRoLmFicyhpLXQubGVmdCk8PW4/bzpyfSkub3IoZSl9KX0sUi5ub25lKCkpfSxFYj1mdW5jdGlvbih0LGUpe3JldHVybiBaKGUuZ2V0Q2xpZW50UmVjdHMoKSkuYmluZChmdW5jdGlvbihlKXtyZXR1cm4gTmIodCxlLmxlZnQpfSl9LGtiPU4oeGIsbHMuaXNBYm92ZSwtMSksX2I9Tih4Yixscy5pc0JlbG93LDEpLFJiPU4oU2IsLTEsa2IpLFRiPU4oU2IsMSxfYiksQWI9YW4sRGI9anUsT2I9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89ZT09PWZzLkZvcndhcmRzLGk9bz9WZjpxZjtpZighci5jb2xsYXBzZWQpe3ZhciBhPURiKHIpO2lmKEFiKGEpKXJldHVybiB2YihlLHQsYSxlPT09ZnMuQmFja3dhcmRzLCEwKX12YXIgdT1tdShyLnN0YXJ0Q29udGFpbmVyKSxzPV9jKGUsdC5nZXRCb2R5KCkscik7aWYoaShzKSlyZXR1cm4geWIodCxzLmdldE5vZGUoIW8pKTt2YXIgYz13eShvLG4ocykpO2lmKCFjKXJldHVybiB1P3I6bnVsbDtpZihpKGMpKXJldHVybiB2YihlLHQsYy5nZXROb2RlKCFvKSxvLCEwKTt2YXIgbD1uKGMpO3JldHVybiBsJiZpKGwpJiZBYyhjLGwpP3ZiKGUsdCxsLmdldE5vZGUoIW8pLG8sITApOnU/Q2IodCxjLnRvUmFuZ2UoKSwhMCk6bnVsbH0sQmI9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG8saSxhLHUscyxjLGwsZixkO2lmKGQ9RGIociksbz1fYyhlLHQuZ2V0Qm9keSgpLHIpLGk9bih0LmdldEJvZHkoKSxpYigxKSxvKSxhPUgoaSxhYigxKSkscz1mcihvLmdldENsaWVudFJlY3RzKCkpLChWZihvKXx8amYobykpJiYoZD1vLmdldE5vZGUoKSksKHFmKG8pfHxIZihvKSkmJihkPW8uZ2V0Tm9kZSghMCkpLCFzKXJldHVybiBudWxsO2lmKGM9cy5sZWZ0LCh1PWRiKGEsYykpJiZBYih1Lm5vZGUpKXJldHVybiBsPU1hdGguYWJzKGMtdS5sZWZ0KSxmPU1hdGguYWJzKGMtdS5yaWdodCksdmIoZSx0LHUubm9kZSxsPGYsITApO2lmKGQpe3ZhciBtPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvLGksYSx1LHMsYyxsPUhjKHQpLGY9W10sZD0wLG09ZnVuY3Rpb24oZSl7cmV0dXJuIGZyKGUuZ2V0Q2xpZW50UmVjdHMoKSl9O2M9bSh1PTE9PT1lPyhvPWwubmV4dCxpPVV1LGE9RnUsbXMuYWZ0ZXIocikpOihvPWwucHJldixpPUZ1LGE9VXUsbXMuYmVmb3JlKHIpKSk7ZG97aWYodS5pc1Zpc2libGUoKSYmIWEocz1tKHUpLGMpKXtpZigwPGYubGVuZ3RoJiZpKHMsZnIoZikpJiZkKyssKHM9THUocykpLnBvc2l0aW9uPXUscy5saW5lPWQsbihzKSlyZXR1cm4gZjtmLnB1c2gocyl9fXdoaWxlKHU9byh1KSk7cmV0dXJuIGZ9KGUsdC5nZXRCb2R5KCksaWIoMSksZCk7aWYodT1kYihIKG0sYWIoMSkpLGMpKXJldHVybiBDYih0LHUucG9zaXRpb24udG9SYW5nZSgpLCEwKTtpZih1PWZyKEgobSxhYigwKSkpKXJldHVybiBDYih0LHUucG9zaXRpb24udG9SYW5nZSgpLCEwKX19LFBiPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixvLGksYSx1PUhjKGUuZ2V0Qm9keSgpKSxzPU4oVGMsdS5uZXh0KSxjPU4oVGMsdS5wcmV2KTtpZihuLmNvbGxhcHNlZCYmZS5zZXR0aW5ncy5mb3JjZWRfcm9vdF9ibG9jayl7aWYoIShyPWUuZG9tLmdldFBhcmVudChuLnN0YXJ0Q29udGFpbmVyLCJQUkUiKSkpcmV0dXJuOygxPT09dD9zOmMpKG1zLmZyb21SYW5nZVN0YXJ0KG4pKXx8KGE9KGk9ZSkuZG9tLmNyZWF0ZShIcyhpKSksKCFyci5pZXx8MTE8PXJyLmllKSYmKGEuaW5uZXJIVE1MPSc8YnIgZGF0YS1tY2UtYm9ndXM9IjEiPicpLG89YSwxPT09dD9lLiQocikuYWZ0ZXIobyk6ZS4kKHIpLmJlZm9yZShvKSxlLnNlbGVjdGlvbi5zZWxlY3QobywhMCksZS5zZWxlY3Rpb24uY29sbGFwc2UoKSl9fSxMYj1mdW5jdGlvbihsLGYpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlLHQsbixyLG8saSxhLHUscyxjPSh0PWYscj1IYygoZT1sKS5nZXRCb2R5KCkpLG89TihUYyxyLm5leHQpLGk9TihUYyxyLnByZXYpLGE9dD9mcy5Gb3J3YXJkczpmcy5CYWNrd2FyZHMsdT10P286aSxzPWUuc2VsZWN0aW9uLmdldFJuZygpLChuPU9iKGEsZSx1LHMpKT9uOihuPVBiKGUsYSxzKSl8fG51bGwpO3JldHVybiEhYyYmKGwuc2VsZWN0aW9uLnNldFJuZyhjKSwhMCl9fSxJYj1mdW5jdGlvbih1LHMpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlLHQsbixyLG8saSxhPShyPSh0PXMpPzE6LTEsbz10P29iOnJiLGk9KGU9dSkuc2VsZWN0aW9uLmdldFJuZygpLChuPUJiKHIsZSxvLGkpKT9uOihuPVBiKGUscixpKSl8fG51bGwpO3JldHVybiEhYSYmKHUuc2VsZWN0aW9uLnNldFJuZyhhKSwhMCl9fSxNYj1mdW5jdGlvbihyLG8pe3JldHVybiBmdW5jdGlvbigpe3ZhciB0LGU9bz9tcy5mcm9tUmFuZ2VFbmQoci5zZWxlY3Rpb24uZ2V0Um5nKCkpOm1zLmZyb21SYW5nZVN0YXJ0KHIuc2VsZWN0aW9uLmdldFJuZygpKSxuPShvP19iOmtiKShyLmdldEJvZHkoKSxlKTtyZXR1cm4obz9lZTpaKShuLnBvc2l0aW9ucykuZmlsdGVyKCh0PW8sZnVuY3Rpb24oZSl7cmV0dXJuKHQ/cWY6VmYpKGUpfSkpLmZvbGQoeCghMSksZnVuY3Rpb24oZSl7cmV0dXJuIHIuc2VsZWN0aW9uLnNldFJuZyhlLnRvUmFuZ2UoKSksITB9KX19LEZiPWZ1bmN0aW9uKG8sZSl7cmV0dXJuIFkoZSxmdW5jdGlvbihlKXt2YXIgdCxuLHI9KHQ9THUoZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSksbj0tMSx7bGVmdDp0LmxlZnQtbix0b3A6dC50b3AtbixyaWdodDp0LnJpZ2h0KzIqbixib3R0b206dC5ib3R0b20rMipuLHdpZHRoOnQud2lkdGgrbixoZWlnaHQ6dC5oZWlnaHQrbn0pO3JldHVyblt7eDpyLmxlZnQseTpvKHIpLGNlbGw6ZX0se3g6ci5yaWdodCx5Om8ociksY2VsbDplfV19KX0sVWI9ZnVuY3Rpb24oZSx0LG4scixvKXt2YXIgaSxhLHU9VWEoTmUuZnJvbURvbShuKSwidGQsdGgsY2FwdGlvbiIpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5kb20oKX0pLHM9SChGYihlLHUpLGZ1bmN0aW9uKGUpe3JldHVybiB0KGUsbyl9KTtyZXR1cm4gaT1yLGE9byxXKHMsZnVuY3Rpb24oZSxyKXtyZXR1cm4gZS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIFIuc29tZShyKX0sZnVuY3Rpb24oZSl7dmFyIHQ9TWF0aC5zcXJ0KE1hdGguYWJzKGUueC1pKStNYXRoLmFicyhlLnktYSkpLG49TWF0aC5zcXJ0KE1hdGguYWJzKHIueC1pKStNYXRoLmFicyhyLnktYSkpO3JldHVybiBSLnNvbWUobjx0P3I6ZSl9KX0sUi5ub25lKCkpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5jZWxsfSl9LHpiPU4oVWIsZnVuY3Rpb24oZSl7cmV0dXJuIGUuYm90dG9tfSxmdW5jdGlvbihlLHQpe3JldHVybiBlLnk8dH0pLGpiPU4oVWIsZnVuY3Rpb24oZSl7cmV0dXJuIGUudG9wfSxmdW5jdGlvbihlLHQpe3JldHVybiBlLnk+dH0pLEhiPWZ1bmN0aW9uKHQsbil7cmV0dXJuIFoobi5nZXRDbGllbnRSZWN0cygpKS5iaW5kKGZ1bmN0aW9uKGUpe3JldHVybiB6Yih0LGUubGVmdCxlLnRvcCl9KS5iaW5kKGZ1bmN0aW9uKGUpe3JldHVybiBFYihlbCh0PWUpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4ga2IodCxlKS5wb3NpdGlvbnMuY29uY2F0KGUpfSkuZ2V0T3IoW10pLG4pO3ZhciB0fSl9LFZiPWZ1bmN0aW9uKHQsbil7cmV0dXJuIGVlKG4uZ2V0Q2xpZW50UmVjdHMoKSkuYmluZChmdW5jdGlvbihlKXtyZXR1cm4gamIodCxlLmxlZnQsZS50b3ApfSkuYmluZChmdW5jdGlvbihlKXtyZXR1cm4gRWIoWmModD1lKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuW2VdLmNvbmNhdChfYih0LGUpLnBvc2l0aW9ucyl9KS5nZXRPcihbXSksbik7dmFyIHR9KX0scWI9ZnVuY3Rpb24oZSx0KXtlLnNlbGVjdGlvbi5zZXRSbmcodCksRGgoZSx0KX0sJGI9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLG8saSxhLHU9ZSh0LG4pO3JldHVybihhPXUpLmJyZWFrVHlwZT09PWViLldyYXAmJjA9PT1hLnBvc2l0aW9ucy5sZW5ndGh8fCFybihuLmdldE5vZGUoKSkmJigoaT11KS5icmVha1R5cGU9PT1lYi5CciYmMT09PWkucG9zaXRpb25zLmxlbmd0aCk/KHI9ZSxvPXQsIXUuYnJlYWtBdC5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHIobyxlKS5icmVha0F0LmlzU29tZSgpfSkuZ2V0T3IoITEpKTp1LmJyZWFrQXQuaXNOb25lKCl9LFdiPU4oJGIsa2IpLEtiPU4oJGIsX2IpLFhiPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvLGksYSx1LHM9ZS5zZWxlY3Rpb24uZ2V0Um5nKCksYz10PzE6LTE7aWYoc2MoKSYmKG89dCxpPXMsYT1uLHU9bXMuZnJvbVJhbmdlU3RhcnQoaSksR2MoIW8sYSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlzRXF1YWwodSl9KS5nZXRPcighMSkpKXt2YXIgbD12YihjLGUsbiwhdCwhMCk7cmV0dXJuIHFiKGUsbCksITB9cmV0dXJuITF9LFliPWZ1bmN0aW9uKGUsdCl7dmFyIG49dC5nZXROb2RlKGUpO3JldHVybiAkdChuKSYmIlRBQkxFIj09PW4ubm9kZU5hbWU/Ui5zb21lKG4pOlIubm9uZSgpfSxHYj1mdW5jdGlvbih1LHMsYyl7dmFyIGU9WWIoISFzLGMpLHQ9ITE9PT1zO2UuZm9sZChmdW5jdGlvbigpe3JldHVybiBxYih1LGMudG9SYW5nZSgpKX0sZnVuY3Rpb24oYSl7cmV0dXJuIEdjKHQsdS5nZXRCb2R5KCkpLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS5pc0VxdWFsKGMpfSkuZm9sZChmdW5jdGlvbigpe3JldHVybiBxYih1LGMudG9SYW5nZSgpKX0sZnVuY3Rpb24oZSl7cmV0dXJuIG49cyxvPWEsdD1jLHZvaWQoKGk9SHMocj11KSk/ci51bmRvTWFuYWdlci50cmFuc2FjdChmdW5jdGlvbigpe3ZhciBlPU5lLmZyb21UYWcoaSk7bG4oZSxWcyhyKSksU3QoZSxOZS5mcm9tVGFnKCJiciIpKSwobj93dDpDdCkoTmUuZnJvbURvbShvKSxlKTt2YXIgdD1yLmRvbS5jcmVhdGVSbmcoKTt0LnNldFN0YXJ0KGUuZG9tKCksMCksdC5zZXRFbmQoZS5kb20oKSwwKSxxYihyLHQpfSk6cWIocix0LnRvUmFuZ2UoKSkpO3ZhciBuLHIsbyx0LGl9KX0pfSxKYj1mdW5jdGlvbihlLHQsbixyKXt2YXIgbyxpLGEsdSxzLGMsbD1lLnNlbGVjdGlvbi5nZXRSbmcoKSxmPW1zLmZyb21SYW5nZVN0YXJ0KGwpLGQ9ZS5nZXRCb2R5KCk7aWYoIXQmJldiKHIsZikpe3ZhciBtPSh1PWQsSGIocz1uLGM9Zikub3JUaHVuayhmdW5jdGlvbigpe3JldHVybiBaKGMuZ2V0Q2xpZW50UmVjdHMoKSkuYmluZChmdW5jdGlvbihlKXtyZXR1cm4gTmIoUmIodSxtcy5iZWZvcmUocykpLGUubGVmdCl9KX0pLmdldE9yKG1zLmJlZm9yZShzKSkpO3JldHVybiBHYihlLHQsbSksITB9aWYodCYmS2IocixmKSl7bT0obz1kLFZiKGk9bixhPWYpLm9yVGh1bmsoZnVuY3Rpb24oKXtyZXR1cm4gWihhLmdldENsaWVudFJlY3RzKCkpLmJpbmQoZnVuY3Rpb24oZSl7cmV0dXJuIE5iKFRiKG8sbXMuYWZ0ZXIoaSkpLGUubGVmdCl9KX0pLmdldE9yKG1zLmFmdGVyKGkpKSk7cmV0dXJuIEdiKGUsdCxtKSwhMH1yZXR1cm4hMX0sUWI9ZnVuY3Rpb24odCxuKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gUi5mcm9tKHQuZG9tLmdldFBhcmVudCh0LnNlbGVjdGlvbi5nZXROb2RlKCksInRkLHRoIikpLmJpbmQoZnVuY3Rpb24oZSl7cmV0dXJuIFIuZnJvbSh0LmRvbS5nZXRQYXJlbnQoZSwidGFibGUiKSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBYYih0LG4sZSl9KX0pLmdldE9yKCExKX19LFpiPWZ1bmN0aW9uKG4scil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIFIuZnJvbShuLmRvbS5nZXRQYXJlbnQobi5zZWxlY3Rpb24uZ2V0Tm9kZSgpLCJ0ZCx0aCIpKS5iaW5kKGZ1bmN0aW9uKHQpe3JldHVybiBSLmZyb20obi5kb20uZ2V0UGFyZW50KHQsInRhYmxlIikpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gSmIobixyLGUsdCl9KX0pLmdldE9yKCExKX19LGVDPWZ1bmN0aW9uKGUpe3JldHVybiBNKFsiZmlnY2FwdGlvbiJdLFJ0KGUpKX0sdEM9ZnVuY3Rpb24oZSl7dmFyIHQ9Vi5kb2N1bWVudC5jcmVhdGVSYW5nZSgpO3JldHVybiB0LnNldFN0YXJ0QmVmb3JlKGUuZG9tKCkpLHQuc2V0RW5kQmVmb3JlKGUuZG9tKCkpLHR9LG5DPWZ1bmN0aW9uKGUsdCxuKXsobj9TdDp4dCkoZSx0KX0sckM9ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIiI9PT10PyhsPWUsZj1yLGQ9TmUuZnJvbVRhZygiYnIiKSxuQyhsLGQsZiksdEMoZCkpOihvPWUsaT1yLGE9dCx1PW4scz1OZS5mcm9tVGFnKGEpLGM9TmUuZnJvbVRhZygiYnIiKSxsbihzLHUpLFN0KHMsYyksbkMobyxzLGkpLHRDKGMpKTt2YXIgbyxpLGEsdSxzLGMsbCxmLGR9LG9DPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdD8obz1lLmRvbSgpLF9iKG8sbikuYnJlYWtBdC5pc05vbmUoKSk6KHI9ZS5kb20oKSxrYihyLG4pLmJyZWFrQXQuaXNOb25lKCkpO3ZhciByLG99LGlDPWZ1bmN0aW9uKHQsbil7dmFyIGUscixvPU5lLmZyb21Eb20odC5nZXRCb2R5KCkpLGk9bXMuZnJvbVJhbmdlU3RhcnQodC5zZWxlY3Rpb24uZ2V0Um5nKCkpLGE9SHModCksdT1Wcyh0KTtyZXR1cm4gZT1pLHI9TihhdCxvKSxWYShOZS5mcm9tRG9tKGUuY29udGFpbmVyKCkpLFNyLHIpLmZpbHRlcihlQykuZXhpc3RzKGZ1bmN0aW9uKCl7aWYob0MobyxuLGkpKXt2YXIgZT1yQyhvLGEsdSxuKTtyZXR1cm4gdC5zZWxlY3Rpb24uc2V0Um5nKGUpLCEwfXJldHVybiExfSl9LGFDPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuISFlLnNlbGVjdGlvbi5pc0NvbGxhcHNlZCgpJiZpQyhlLHQpfX0sdUM9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gWShVKGUsZnVuY3Rpb24oZSl7cmV0dXJuIHBlKHtzaGlmdEtleTohMSxhbHRLZXk6ITEsY3RybEtleTohMSxtZXRhS2V5OiExLGtleUNvZGU6MCxhY3Rpb246Zn0sZSl9KSxmdW5jdGlvbihlKXtyZXR1cm4gdD1lLChuPXIpLmtleUNvZGU9PT10LmtleUNvZGUmJm4uc2hpZnRLZXk9PT10LnNoaWZ0S2V5JiZuLmFsdEtleT09PXQuYWx0S2V5JiZuLmN0cmxLZXk9PT10LmN0cmxLZXkmJm4ubWV0YUtleT09PXQubWV0YUtleT9bZV06W107dmFyIHQsbn0pfSxzQz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspdFtuLTFdPWFyZ3VtZW50c1tuXTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseShudWxsLHQpfX0sY0M9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gSyh1QyhlLHQpLGZ1bmN0aW9uKGUpe3JldHVybiBlLmFjdGlvbigpfSl9LGxDPWZ1bmN0aW9uKGksYSl7aS5vbigia2V5ZG93biIsZnVuY3Rpb24oZSl7dmFyIHQsbixyLG87ITE9PT1lLmlzRGVmYXVsdFByZXZlbnRlZCgpJiYodD1pLG49YSxyPWUsbz1udCgpLm9zLGNDKFt7a2V5Q29kZTpaaC5SSUdIVCxhY3Rpb246TGIodCwhMCl9LHtrZXlDb2RlOlpoLkxFRlQsYWN0aW9uOkxiKHQsITEpfSx7a2V5Q29kZTpaaC5VUCxhY3Rpb246SWIodCwhMSl9LHtrZXlDb2RlOlpoLkRPV04sYWN0aW9uOkliKHQsITApfSx7a2V5Q29kZTpaaC5SSUdIVCxhY3Rpb246UWIodCwhMCl9LHtrZXlDb2RlOlpoLkxFRlQsYWN0aW9uOlFiKHQsITEpfSx7a2V5Q29kZTpaaC5VUCxhY3Rpb246WmIodCwhMSl9LHtrZXlDb2RlOlpoLkRPV04sYWN0aW9uOlpiKHQsITApfSx7a2V5Q29kZTpaaC5SSUdIVCxhY3Rpb246WHkodCxuLCEwKX0se2tleUNvZGU6WmguTEVGVCxhY3Rpb246WHkodCxuLCExKX0se2tleUNvZGU6WmguUklHSFQsY3RybEtleTohby5pc09TWCgpLGFsdEtleTpvLmlzT1NYKCksYWN0aW9uOkp5KHQsbil9LHtrZXlDb2RlOlpoLkxFRlQsY3RybEtleTohby5pc09TWCgpLGFsdEtleTpvLmlzT1NYKCksYWN0aW9uOlF5KHQsbil9LHtrZXlDb2RlOlpoLlVQLGFjdGlvbjphQyh0LCExKX0se2tleUNvZGU6WmguRE9XTixhY3Rpb246YUModCwhMCl9XSxyKS5lYWNoKGZ1bmN0aW9uKGUpe3IucHJldmVudERlZmF1bHQoKX0pKX0pfSxmQz1mdW5jdGlvbihlLHQpe3JldHVybiBzdChlLHQpP1ZhKHQsZnVuY3Rpb24oZSl7cmV0dXJuIGtyKGUpfHxScihlKX0sKG49ZSxmdW5jdGlvbihlKXtyZXR1cm4gYXQobixOZS5mcm9tRG9tKGUuZG9tKCkucGFyZW50Tm9kZSkpfSkpOlIubm9uZSgpO3ZhciBufSxkQz1mdW5jdGlvbihlKXt2YXIgdCxuLHI7ZS5kb20uaXNFbXB0eShlLmdldEJvZHkoKSkmJihlLnNldENvbnRlbnQoIiIpLG49KHQ9ZSkuZ2V0Qm9keSgpLHI9bi5maXJzdENoaWxkJiZ0LmRvbS5pc0Jsb2NrKG4uZmlyc3RDaGlsZCk/bi5maXJzdENoaWxkOm4sdC5zZWxlY3Rpb24uc2V0Q3Vyc29yTG9jYXRpb24ociwwKSl9LG1DPWZ1bmN0aW9uKGUsdCl7cmV0dXJue2Zyb206ZSx0bzp0fX0scEM9ZnVuY3Rpb24oZSx0KXt2YXIgbj1OZS5mcm9tRG9tKGUpLHI9TmUuZnJvbURvbSh0LmNvbnRhaW5lcigpKTtyZXR1cm4gZkMobixyKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJue2Jsb2NrOmUscG9zaXRpb246dH19KX0sZ0M9ZnVuY3Rpb24obyxpLGUpe3ZhciB0PXBDKG8sbXMuZnJvbVJhbmdlU3RhcnQoZSkpLG49dC5iaW5kKGZ1bmN0aW9uKGUpe3JldHVybiBLYyhpLG8sZS5wb3NpdGlvbikuYmluZChmdW5jdGlvbihlKXtyZXR1cm4gcEMobyxlKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHQ9byxuPWkscm4oKHI9ZSkucG9zaXRpb24uZ2V0Tm9kZSgpKSYmITE9PT1HZihyLmJsb2NrKT9HYyghMSxyLmJsb2NrLmRvbSgpKS5iaW5kKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlzRXF1YWwoci5wb3NpdGlvbik/S2Mobix0LGUpLmJpbmQoZnVuY3Rpb24oZSl7cmV0dXJuIHBDKHQsZSl9KTpSLnNvbWUocil9KS5nZXRPcihyKTpyO3ZhciB0LG4scn0pfSl9KTtyZXR1cm4gJHUodCxuLG1DKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuITE9PT1hdCgocj1lKS5mcm9tLmJsb2NrLHIudG8uYmxvY2spJiZmdCgobj1lKS5mcm9tLmJsb2NrKS5iaW5kKGZ1bmN0aW9uKHQpe3JldHVybiBmdChuLnRvLmJsb2NrKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGF0KHQsZSl9KX0pLmlzU29tZSgpJiYoITE9PT1hbigodD1lKS5mcm9tLmJsb2NrLmRvbSgpKSYmITE9PT1hbih0LnRvLmJsb2NrLmRvbSgpKSk7dmFyIHQsbixyfSl9LGhDPWZ1bmN0aW9uKGUpe3ZhciB0LG49KHQ9aHQoZSksWCh0LFNyKS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIHR9LGZ1bmN0aW9uKGUpe3JldHVybiB0LnNsaWNlKDAsZSl9KSk7cmV0dXJuIHoobixrdCksbn0sdkM9ZnVuY3Rpb24oZSx0KXt2YXIgbj1uZCh0LGUpO3JldHVybiBLKG4ucmV2ZXJzZSgpLGZ1bmN0aW9uKGUpe3JldHVybiBHZihlKX0pLmVhY2goa3QpfSx5Qz1mdW5jdGlvbihlLHQsbixyKXtpZihHZihuKSlyZXR1cm4gUWYobiksWmMobi5kb20oKSk7MD09PUgocHQociksZnVuY3Rpb24oZSl7cmV0dXJuIUdmKGUpfSkubGVuZ3RoJiZHZih0KSYmQ3QocixOZS5mcm9tVGFnKCJiciIpKTt2YXIgbz1RYyhuLmRvbSgpLG1zLmJlZm9yZShyLmRvbSgpKSk7cmV0dXJuIHooaEModCksZnVuY3Rpb24oZSl7Q3QocixlKX0pLHZDKGUsdCksb30sYkM9ZnVuY3Rpb24oZSx0LG4pe2lmKEdmKG4pKXJldHVybiBrdChuKSxHZih0KSYmUWYodCksWmModC5kb20oKSk7dmFyIHI9ZWwobi5kb20oKSk7cmV0dXJuIHooaEModCksZnVuY3Rpb24oZSl7U3QobixlKX0pLHZDKGUsdCkscn0sQ0M9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gc3QodCxlKT8obj1uZChlLHQpLFIuZnJvbShuW24ubGVuZ3RoLTFdKSk6Ui5ub25lKCk7dmFyIG59LHdDPWZ1bmN0aW9uKGUsdCl7R2MoZSx0LmRvbSgpKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0Tm9kZSgpfSkubWFwKE5lLmZyb21Eb20pLmZpbHRlcihFcikuZWFjaChrdCl9LHhDPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gd0MoITAsdCksd0MoITEsbiksQ0ModCxuKS5mb2xkKE4oYkMsZSx0LG4pLE4oeUMsZSx0LG4pKX0sU0M9ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIHQ/eEMoZSxyLG4pOnhDKGUsbixyKX0sTkM9ZnVuY3Rpb24odCxuKXt2YXIgZSxyLG8saT1OZS5mcm9tRG9tKHQuZ2V0Qm9keSgpKSxhPShlPWkuZG9tKCkscj1uLCgobz10LnNlbGVjdGlvbi5nZXRSbmcoKSkuY29sbGFwc2VkP2dDKGUscixvKTpSLm5vbmUoKSkuYmluZChmdW5jdGlvbihlKXtyZXR1cm4gU0MoaSxuLGUuZnJvbS5ibG9jayxlLnRvLmJsb2NrKX0pKTtyZXR1cm4gYS5lYWNoKGZ1bmN0aW9uKGUpe3Quc2VsZWN0aW9uLnNldFJuZyhlLnRvUmFuZ2UoKSl9KSxhLmlzU29tZSgpfSxFQz1mdW5jdGlvbihlLHQpe3ZhciBuPU5lLmZyb21Eb20odCkscj1OKGF0LGUpO3JldHVybiBIYShuLERyLHIpLmlzU29tZSgpfSxrQz1mdW5jdGlvbihlLHQpe3ZhciBuLHIsbz1RYyhlLmRvbSgpLG1zLmZyb21SYW5nZVN0YXJ0KHQpKS5pc05vbmUoKSxpPUpjKGUuZG9tKCksbXMuZnJvbVJhbmdlRW5kKHQpKS5pc05vbmUoKTtyZXR1cm4hKEVDKG49ZSwocj10KS5zdGFydENvbnRhaW5lcil8fEVDKG4sci5lbmRDb250YWluZXIpKSYmbyYmaX0sX0M9ZnVuY3Rpb24oZSl7dmFyIG4scixvLHQsaT1OZS5mcm9tRG9tKGUuZ2V0Qm9keSgpKSxhPWUuc2VsZWN0aW9uLmdldFJuZygpO3JldHVybiBrQyhpLGEpPygodD1lKS5zZXRDb250ZW50KCIiKSx0LnNlbGVjdGlvbi5zZXRDdXJzb3JMb2NhdGlvbigpLCEwKToobj1pLHI9ZS5zZWxlY3Rpb24sbz1yLmdldFJuZygpLCR1KGZDKG4sTmUuZnJvbURvbShvLnN0YXJ0Q29udGFpbmVyKSksZkMobixOZS5mcm9tRG9tKG8uZW5kQ29udGFpbmVyKSksZnVuY3Rpb24oZSx0KXtyZXR1cm4hMT09PWF0KGUsdCkmJihvLmRlbGV0ZUNvbnRlbnRzKCksU0MobiwhMCxlLHQpLmVhY2goZnVuY3Rpb24oZSl7ci5zZXRSbmcoZS50b1JhbmdlKCkpfSksITApfSkuZ2V0T3IoITEpKX0sUkM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4hZS5zZWxlY3Rpb24uaXNDb2xsYXBzZWQoKSYmX0MoZSl9LFRDPWZ1bmN0aW9uKGUpe3JldHVybiBSYyhlKS5leGlzdHMoRXIpfSxBQz1mdW5jdGlvbihlLHQsbil7dmFyIHI9SChuZChOZS5mcm9tRG9tKG4uY29udGFpbmVyKCkpLHQpLFNyKSxvPVoocikuZ2V0T3IodCk7cmV0dXJuIEtjKGUsby5kb20oKSxuKS5maWx0ZXIoVEMpfSxEQz1mdW5jdGlvbihlLHQpe3JldHVybiBSYyh0KS5leGlzdHMoRXIpfHxBQyghMCxlLHQpLmlzU29tZSgpfSxPQz1mdW5jdGlvbihlLHQpe3JldHVybiBuPXQsUi5mcm9tKG4uZ2V0Tm9kZSghMCkpLm1hcChOZS5mcm9tRG9tKS5leGlzdHMoRXIpfHxBQyghMSxlLHQpLmlzU29tZSgpO3ZhciBufSxCQz1OKEFDLCExKSxQQz1OKEFDLCEwKSxMQz1oZChbe3JlbW92ZTpbImVsZW1lbnQiXX0se21vdmVUb0VsZW1lbnQ6WyJlbGVtZW50Il19LHttb3ZlVG9Qb3NpdGlvbjpbInBvc2l0aW9uIl19XSksSUM9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89ci5nZXROb2RlKCExPT09dCk7cmV0dXJuIGZDKE5lLmZyb21Eb20oZSksTmUuZnJvbURvbShuLmdldE5vZGUoKSkpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gR2YoZSk/TEMucmVtb3ZlKGUuZG9tKCkpOkxDLm1vdmVUb0VsZW1lbnQobyl9KS5vclRodW5rKGZ1bmN0aW9uKCl7cmV0dXJuIFIuc29tZShMQy5tb3ZlVG9FbGVtZW50KG8pKX0pfSxNQz1mdW5jdGlvbih1LHMsYyl7cmV0dXJuIEtjKHMsdSxjKS5iaW5kKGZ1bmN0aW9uKGUpe3JldHVybiBhPWUuZ2V0Tm9kZSgpLERyKE5lLmZyb21Eb20oYSkpfHxScihOZS5mcm9tRG9tKGEpKT9SLm5vbmUoKToodD11LG89ZSxpPWZ1bmN0aW9uKGUpe3JldHVybiBOcihOZS5mcm9tRG9tKGUpKSYmIWJjKHIsbyx0KX0sa2MoIShuPXMpLHI9YykuZm9sZChmdW5jdGlvbigpe3JldHVybiBrYyhuLG8pLmZvbGQoeCghMSksaSl9LGkpP1Iubm9uZSgpOnMmJmFuKGUuZ2V0Tm9kZSgpKXx8ITE9PT1zJiZhbihlLmdldE5vZGUoITApKT9JQyh1LHMsYyxlKTpzJiZxZihjKXx8ITE9PT1zJiZWZihjKT9SLnNvbWUoTEMubW92ZVRvUG9zaXRpb24oZSkpOlIubm9uZSgpKTt2YXIgdCxuLHIsbyxpLGF9KX0sRkM9ZnVuY3Rpb24ocixlLG8pe3JldHVybiBpPWUsYT1vLmdldE5vZGUoITE9PT1pKSx1PWk/ImFmdGVyIjoiYmVmb3JlIiwkdChhKSYmYS5nZXRBdHRyaWJ1dGUoImRhdGEtbWNlLWNhcmV0Iik9PT11Pyh0PWUsbj1vLmdldE5vZGUoITE9PT1lKSwodCYmYW4obi5uZXh0U2libGluZyk/Ui5zb21lKExDLm1vdmVUb0VsZW1lbnQobi5uZXh0U2libGluZykpOiExPT09dCYmYW4obi5wcmV2aW91c1NpYmxpbmcpP1Iuc29tZShMQy5tb3ZlVG9FbGVtZW50KG4ucHJldmlvdXNTaWJsaW5nKSk6Ui5ub25lKCkpLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm4gTUMocixlLG8pfSxSLnNvbWUpKTpNQyhyLGUsbykuYmluZChmdW5jdGlvbihlKXtyZXR1cm4gdD1yLG49byxlLmZvbGQoZnVuY3Rpb24oZSl7cmV0dXJuIFIuc29tZShMQy5yZW1vdmUoZSkpfSxmdW5jdGlvbihlKXtyZXR1cm4gUi5zb21lKExDLm1vdmVUb0VsZW1lbnQoZSkpfSxmdW5jdGlvbihlKXtyZXR1cm4gYmMobixlLHQpP1Iubm9uZSgpOlIuc29tZShMQy5tb3ZlVG9Qb3NpdGlvbihlKSl9KTt2YXIgdCxufSk7dmFyIHQsbixpLGEsdX0sVUM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gUi5mcm9tKEhDKGUuZ2V0Qm9keSgpLHQpKX0sekM9ZnVuY3Rpb24oYSx1KXt2YXIgZT1hLnNlbGVjdGlvbi5nZXROb2RlKCk7cmV0dXJuIFVDKGEsZSkuZmlsdGVyKGFuKS5mb2xkKGZ1bmN0aW9uKCl7dmFyIGUsdCxuLHIsbyxpO3JldHVybihlPWEuZ2V0Qm9keSgpLHQ9dSxuPWEuc2VsZWN0aW9uLmdldFJuZygpLHI9RWModD8xOi0xLGUsbiksbz1tcy5mcm9tUmFuZ2VTdGFydChyKSxpPU5lLmZyb21Eb20oZSksKCExPT09dCYmcWYobyk/Ui5zb21lKExDLnJlbW92ZShvLmdldE5vZGUoITApKSk6dCYmVmYobyk/Ui5zb21lKExDLnJlbW92ZShvLmdldE5vZGUoKSkpOiExPT09dCYmVmYobykmJk9DKGksbyk/QkMoaSxvKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIExDLnJlbW92ZShlLmdldE5vZGUoKSl9KTp0JiZxZihvKSYmREMoaSxvKT9QQyhpLG8pLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gTEMucmVtb3ZlKGUuZ2V0Tm9kZSgpKX0pOkZDKGUsdCxvKSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLmZvbGQoZnVuY3Rpb24oZSl7cmV0dXJuIG8uX3NlbGVjdGlvbk92ZXJyaWRlcy5oaWRlRmFrZUNhcmV0KCksZ2QobyxpLE5lLmZyb21Eb20oZSkpLCEwfSwocj1pPXUsZnVuY3Rpb24oZSl7dmFyIHQ9cj9tcy5iZWZvcmUoZSk6bXMuYWZ0ZXIoZSk7cmV0dXJuIG4uc2VsZWN0aW9uLnNldFJuZyh0LnRvUmFuZ2UoKSksITB9KSwodD1uPW89YSxmdW5jdGlvbihlKXtyZXR1cm4gdC5zZWxlY3Rpb24uc2V0Um5nKGUudG9SYW5nZSgpKSwhMH0pKTt2YXIgdCxuLHIsbyxpfSkpLmdldE9yKCExKX0sZnVuY3Rpb24oKXtyZXR1cm4hMH0pfSxqQz1mdW5jdGlvbih0LG4pe3ZhciBlPXQuc2VsZWN0aW9uLmdldE5vZGUoKTtyZXR1cm4hIWFuKGUpJiZVQyh0LGUucGFyZW50Tm9kZSkuZmlsdGVyKGFuKS5mb2xkKGZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIGU9TmUuZnJvbURvbSh0LmdldEJvZHkoKSkseihVYShlLCIubWNlLW9mZnNjcmVlbi1zZWxlY3Rpb24iKSxrdCksZ2QodCxuLE5lLmZyb21Eb20odC5zZWxlY3Rpb24uZ2V0Tm9kZSgpKSksZEModCksITB9LGZ1bmN0aW9uKCl7cmV0dXJuITB9KX0sSEM9ZnVuY3Rpb24oZSx0KXtmb3IoO3QmJnQhPT1lOyl7aWYob24odCl8fGFuKHQpKXJldHVybiB0O3Q9dC5wYXJlbnROb2RlfXJldHVybiBudWxsfSxWQz1mdW5jdGlvbihlKXt2YXIgdCxuPUhDKGUuZ2V0Qm9keSgpLGUuc2VsZWN0aW9uLmdldE5vZGUoKSk7cmV0dXJuIG9uKG4pJiZlLmRvbS5pc0Jsb2NrKG4pJiZlLmRvbS5pc0VtcHR5KG4pJiYodD1lLmRvbS5jcmVhdGUoImJyIix7ImRhdGEtbWNlLWJvZ3VzIjoiMSJ9KSxlLmRvbS5zZXRIVE1MKG4sIiIpLG4uYXBwZW5kQ2hpbGQodCksZS5zZWxlY3Rpb24uc2V0Um5nKG1zLmJlZm9yZSh0KS50b1JhbmdlKCkpKSwhMH0scUM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4oZS5zZWxlY3Rpb24uaXNDb2xsYXBzZWQoKT96QzpqQykoZSx0KX0sJEM9ZnVuY3Rpb24oZSx0LG4scixvLGkpe3ZhciBhLHUscz12YihyLGUsaS5nZXROb2RlKCFvKSxvLCEwKTtpZih0LmNvbGxhcHNlZCl7dmFyIGM9dC5jbG9uZVJhbmdlKCk7bz9jLnNldEVuZChzLnN0YXJ0Q29udGFpbmVyLHMuc3RhcnRPZmZzZXQpOmMuc2V0U3RhcnQocy5lbmRDb250YWluZXIscy5lbmRPZmZzZXQpLGMuZGVsZXRlQ29udGVudHMoKX1lbHNlIHQuZGVsZXRlQ29udGVudHMoKTtyZXR1cm4gZS5zZWxlY3Rpb24uc2V0Um5nKHMpLGE9ZS5kb20sWnQodT1uKSYmMD09PXUuZGF0YS5sZW5ndGgmJmEucmVtb3ZlKHUpLCEwfSxXQz1mdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihlLHQpe3ZhciBuPWUuc2VsZWN0aW9uLmdldFJuZygpO2lmKCFadChuLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyKSlyZXR1cm4hMTt2YXIgcj10P2ZzLkZvcndhcmRzOmZzLkJhY2t3YXJkcyxvPUhjKGUuZ2V0Qm9keSgpKSxpPU4oVGMsby5uZXh0KSxhPU4oVGMsby5wcmV2KSx1PXQ/aTphLHM9dD9WZjpxZixjPV9jKHIsZS5nZXRCb2R5KCksbiksbD13eSh0LHUoYykpO2lmKCFsfHwhQWMoYyxsKSlyZXR1cm4hMTtpZihzKGwpKXJldHVybiAkQyhlLG4sYy5nZXROb2RlKCkscix0LGwpO3ZhciBmPXUobCk7cmV0dXJuISEoZiYmcyhmKSYmQWMobCxmKSkmJiRDKGUsbixjLmdldE5vZGUoKSxyLHQsZil9KGUsdCl9LEtDPWZ1bmN0aW9uKHQsbil7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBoeShuLGUpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gVnkodCxlKSwhMH0pLmdldE9yKCExKX19LFhDPWZ1bmN0aW9uKHIsbyxpLGEpe3ZhciB1PXIuZ2V0Qm9keSgpLHM9Tih5eSxyKTtyLnVuZG9NYW5hZ2VyLmlnbm9yZShmdW5jdGlvbigpe3ZhciBlLHQsbjtyLnNlbGVjdGlvbi5zZXRSbmcoKGU9aSx0PWEsKG49Vi5kb2N1bWVudC5jcmVhdGVSYW5nZSgpKS5zZXRTdGFydChlLmNvbnRhaW5lcigpLGUub2Zmc2V0KCkpLG4uc2V0RW5kKHQuY29udGFpbmVyKCksdC5vZmZzZXQoKSksbikpLHIuZXhlY0NvbW1hbmQoIkRlbGV0ZSIpLFB5KHMsdSxtcy5mcm9tUmFuZ2VTdGFydChyLnNlbGVjdGlvbi5nZXRSbmcoKSkpLm1hcChGeSkubWFwKEtDKHIsbykpfSksci5ub2RlQ2hhbmdlZCgpfSxZQz1mdW5jdGlvbihuLHIsaSxvKXt2YXIgZSx0LGE9KGU9bi5nZXRCb2R5KCksdD1vLmNvbnRhaW5lcigpLHljKHQsZSl8fGUpLHU9Tih5eSxuKSxzPVB5KHUsYSxvKTtyZXR1cm4gcy5iaW5kKGZ1bmN0aW9uKGUpe3JldHVybiBpP2UuZm9sZCh4KFIuc29tZShGeShlKSkpLFIubm9uZSx4KFIuc29tZShNeShlKSkpLFIubm9uZSk6ZS5mb2xkKFIubm9uZSx4KFIuc29tZShNeShlKSkpLFIubm9uZSx4KFIuc29tZShGeShlKSkpKX0pLm1hcChLQyhuLHIpKS5nZXRPclRodW5rKGZ1bmN0aW9uKCl7dmFyIHQ9WGMoaSxhLG8pLGU9dC5iaW5kKGZ1bmN0aW9uKGUpe3JldHVybiBQeSh1LGEsZSl9KTtyZXR1cm4gcy5pc1NvbWUoKSYmZS5pc1NvbWUoKT9DeSh1LGEsbykubWFwKGZ1bmN0aW9uKGUpe3JldHVybiEhJHUoWmMobz1lKSxlbChvKSxmdW5jdGlvbihlLHQpe3ZhciBuPXd5KCEwLGUpLHI9d3koITEsdCk7cmV0dXJuIEpjKG8sbikubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlzRXF1YWwocil9KS5nZXRPcighMCl9KS5nZXRPcighMCkmJihnZChuLGksTmUuZnJvbURvbShlKSksITApO3ZhciBvfSkuZ2V0T3IoITEpOmUuYmluZChmdW5jdGlvbihlKXtyZXR1cm4gdC5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGk/WEMobixyLG8sZSk6WEMobixyLGUsbyksITB9KX0pLmdldE9yKCExKX0pfSxHQz1mdW5jdGlvbihlLHQsbil7aWYoZS5zZWxlY3Rpb24uaXNDb2xsYXBzZWQoKSYmITEhPT1lLnNldHRpbmdzLmlubGluZV9ib3VuZGFyaWVzKXt2YXIgcj1tcy5mcm9tUmFuZ2VTdGFydChlLnNlbGVjdGlvbi5nZXRSbmcoKSk7cmV0dXJuIFlDKGUsdCxuLHIpfXJldHVybiExfSxKQz1mdW5jdGlvbihlKXtyZXR1cm4gMT09PWh0KGUpLmxlbmd0aH0sUUM9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG8saSxhLHUscz1OKGZwLHQpLGM9VShIKHIscyksZnVuY3Rpb24oZSl7cmV0dXJuIGUuZG9tKCl9KTtpZigwPT09Yy5sZW5ndGgpZ2QodCxlLG4pO2Vsc2V7dmFyIGw9KG89bi5kb20oKSxpPWMsYT1vcCghMSksdT1zcChpLGEuZG9tKCkpLEN0KE5lLmZyb21Eb20obyksYSksa3QoTmUuZnJvbURvbShvKSksbXModSwwKSk7dC5zZWxlY3Rpb24uc2V0Um5nKGwudG9SYW5nZSgpKX19LFpDPWZ1bmN0aW9uKHIsbyl7dmFyIHQsZT1OZS5mcm9tRG9tKHIuZ2V0Qm9keSgpKSxuPU5lLmZyb21Eb20oci5zZWxlY3Rpb24uZ2V0U3RhcnQoKSkscz1IKCh0PW5kKG4sZSksWCh0LFNyKS5mb2xkKHgodCksZnVuY3Rpb24oZSl7cmV0dXJuIHQuc2xpY2UoMCxlKX0pKSxKQyk7cmV0dXJuIGVlKHMpLm1hcChmdW5jdGlvbihlKXt2YXIgdCxpLGEsdSxuPW1zLmZyb21SYW5nZVN0YXJ0KHIuc2VsZWN0aW9uLmdldFJuZygpKTtyZXR1cm4gaT1vLGE9bix1PWUuZG9tKCksISghJHUoWmModSksZWwodSksZnVuY3Rpb24oZSx0KXt2YXIgbj13eSghMCxlKSxyPXd5KCExLHQpLG89d3koITEsYSk7cmV0dXJuIGk/SmModSxvKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUuaXNFcXVhbChyKSYmYS5pc0VxdWFsKG4pfSkuZ2V0T3IoITEpOlFjKHUsbykubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlzRXF1YWwobikmJmEuaXNFcXVhbChyKX0pLmdldE9yKCExKX0pLmdldE9yKCEwKXx8TXMoKHQ9ZSkuZG9tKCkpJiZucCh0LmRvbSgpKSkmJihRQyhvLHIsZSxzKSwhMCl9KS5nZXRPcighMSl9LGV3PWZ1bmN0aW9uKGUsdCl7cmV0dXJuISFlLnNlbGVjdGlvbi5pc0NvbGxhcHNlZCgpJiZaQyhlLHQpfSx0dz1mdW5jdGlvbihlLHQpe3JldHVybiEhZS5zZWxlY3Rpb24uaXNDb2xsYXBzZWQoKSYmKG49ZSxyPXQsbz1tcy5mcm9tUmFuZ2VTdGFydChuLnNlbGVjdGlvbi5nZXRSbmcoKSksS2MocixuLmdldEJvZHkoKSxvKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuKHI/VWY6emYpKGUpfSkuYmluZChmdW5jdGlvbihlKXtyZXR1cm4gUi5mcm9tKENjKHI/MDotMSxlKSl9KS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIG4uc2VsZWN0aW9uLnNlbGVjdChlKSwhMH0pLmdldE9yKCExKSk7dmFyIG4scixvfSxudz1mdW5jdGlvbihlKXt2YXIgdD1wYXJzZUludChlLDEwKTtyZXR1cm4gaXNOYU4odCk/MDp0fSxydz1mdW5jdGlvbihlLHQpe3JldHVybihlfHwidGFibGUiPT09UnQodCk/Im1hcmdpbiI6InBhZGRpbmciKSsoInJ0bCI9PT1tbih0LCJkaXJlY3Rpb24iKT8iLXJpZ2h0IjoiLWxlZnQiKX0sb3c9ZnVuY3Rpb24oZSl7dmFyIHIsdD1hdyhlKTtyZXR1cm4hZS5tb2RlLmlzUmVhZE9ubHkoKSYmKDE8dC5sZW5ndGh8fChyPWUsRyh0LGZ1bmN0aW9uKGUpe3ZhciB0PXJ3KEtzKHIpLGUpLG49Z24oZSx0KS5tYXAobncpLmdldE9yKDApO3JldHVybiJmYWxzZSIhPT1yLmRvbS5nZXRDb250ZW50RWRpdGFibGUoZS5kb20oKSkmJjA8bn0pKSl9LGl3PWZ1bmN0aW9uKGUpe3JldHVybiBfcihlKXx8UnIoZSl9LGF3PWZ1bmN0aW9uKGUpe3JldHVybiBIKFUoZS5zZWxlY3Rpb24uZ2V0U2VsZWN0ZWRCbG9ja3MoKSxOZS5mcm9tRG9tKSxmdW5jdGlvbihlKXtyZXR1cm4haXcoZSkmJiFmdChlKS5tYXAoaXcpLmdldE9yKCExKSYmVmEoZSxmdW5jdGlvbihlKXtyZXR1cm4gb24oZS5kb20oKSl8fGFuKGUuZG9tKCkpfSkuZXhpc3RzKGZ1bmN0aW9uKGUpe3JldHVybiBvbihlLmRvbSgpKX0pfSl9LHV3PWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5kb20scj1lLnNlbGVjdGlvbixvPWUuZm9ybWF0dGVyLGk9ZS5nZXRQYXJhbSgiaW5kZW50YXRpb24iLCI0MHB4Iiwic3RyaW5nIiksYT0vW2EteiVdKyQvaS5leGVjKGkpWzBdLHU9cGFyc2VJbnQoaSwxMCkscz1LcyhlKSxjPUhzKGUpO2UucXVlcnlDb21tYW5kU3RhdGUoIkluc2VydFVub3JkZXJlZExpc3QiKXx8ZS5xdWVyeUNvbW1hbmRTdGF0ZSgiSW5zZXJ0T3JkZXJlZExpc3QiKXx8IiIhPT1jfHxuLmdldFBhcmVudChyLmdldE5vZGUoKSxuLmlzQmxvY2spfHxvLmFwcGx5KCJkaXYiKSx6KGF3KGUpLGZ1bmN0aW9uKGUpeyFmdW5jdGlvbihlLHQsbixyLG8saSl7dmFyIGE9cncobixOZS5mcm9tRG9tKGkpKTtpZigib3V0ZGVudCI9PT10KXt2YXIgdT1NYXRoLm1heCgwLG53KGkuc3R5bGVbYV0pLXIpO2Uuc2V0U3R5bGUoaSxhLHU/dStvOiIiKX1lbHNle3U9bncoaS5zdHlsZVthXSkrcitvO2Uuc2V0U3R5bGUoaSxhLHUpfX0obix0LHMsdSxhLGUuZG9tKCkpfSl9LHN3PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gWWMoZSx0LG4sTGYpfSxjdz1mdW5jdGlvbihlLHQpe3JldHVybiBLKG5kKE5lLmZyb21Eb20odC5jb250YWluZXIoKSksZSksU3IpfSxsdz1mdW5jdGlvbihlLG4scil7cmV0dXJuIHN3KGUsbi5kb20oKSxyKS5mb3JhbGwoZnVuY3Rpb24odCl7cmV0dXJuIGN3KG4scikuZm9sZChmdW5jdGlvbigpe3JldHVybiExPT09YmModCxyLG4uZG9tKCkpfSxmdW5jdGlvbihlKXtyZXR1cm4hMT09PWJjKHQscixuLmRvbSgpKSYmc3QoZSxOZS5mcm9tRG9tKHQuY29udGFpbmVyKCkpKX0pfSl9LGZ3PWZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gY3cobixyKS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIHN3KHQsbi5kb20oKSxyKS5mb3JhbGwoZnVuY3Rpb24oZSl7cmV0dXJuITE9PT1iYyhlLHIsbi5kb20oKSl9KX0sZnVuY3Rpb24oZSl7cmV0dXJuIHN3KHQsZS5kb20oKSxyKS5pc05vbmUoKX0pfSxkdz1OKGZ3LCExKSxtdz1OKGZ3LCEwKSxwdz1OKGx3LCExKSxndz1OKGx3LCEwKSxodz1mdW5jdGlvbihlLHQsbil7aWYoZS5zZWxlY3Rpb24uaXNDb2xsYXBzZWQoKSYmb3coZSkpe3ZhciByPWUuZG9tLG89ZS5zZWxlY3Rpb24uZ2V0Um5nKCksaT1tcy5mcm9tUmFuZ2VTdGFydChvKSxhPXIuZ2V0UGFyZW50KG8uc3RhcnRDb250YWluZXIsci5pc0Jsb2NrKTtpZihudWxsIT09YSYmZHcoTmUuZnJvbURvbShhKSxpKSlyZXR1cm4gdXcoZSwib3V0ZGVudCIpLCEwfXJldHVybiExfSx2dz1mdW5jdGlvbihvLGkpe28ub24oImtleWRvd24iLGZ1bmN0aW9uKGUpe3ZhciB0LG4scjshMT09PWUuaXNEZWZhdWx0UHJldmVudGVkKCkmJih0PW8sbj1pLHI9ZSxjQyhbe2tleUNvZGU6WmguQkFDS1NQQUNFLGFjdGlvbjpzQyhodyx0LCExKX0se2tleUNvZGU6WmguQkFDS1NQQUNFLGFjdGlvbjpzQyhxQyx0LCExKX0se2tleUNvZGU6WmguREVMRVRFLGFjdGlvbjpzQyhxQyx0LCEwKX0se2tleUNvZGU6WmguQkFDS1NQQUNFLGFjdGlvbjpzQyhXQyx0LCExKX0se2tleUNvZGU6WmguREVMRVRFLGFjdGlvbjpzQyhXQyx0LCEwKX0se2tleUNvZGU6WmguQkFDS1NQQUNFLGFjdGlvbjpzQyhHQyx0LG4sITEpfSx7a2V5Q29kZTpaaC5ERUxFVEUsYWN0aW9uOnNDKEdDLHQsbiwhMCl9LHtrZXlDb2RlOlpoLkJBQ0tTUEFDRSxhY3Rpb246c0MoVmQsdCwhMSl9LHtrZXlDb2RlOlpoLkRFTEVURSxhY3Rpb246c0MoVmQsdCwhMCl9LHtrZXlDb2RlOlpoLkJBQ0tTUEFDRSxhY3Rpb246c0ModHcsdCwhMSl9LHtrZXlDb2RlOlpoLkRFTEVURSxhY3Rpb246c0ModHcsdCwhMCl9LHtrZXlDb2RlOlpoLkJBQ0tTUEFDRSxhY3Rpb246c0MoUkMsdCwhMSl9LHtrZXlDb2RlOlpoLkRFTEVURSxhY3Rpb246c0MoUkMsdCwhMCl9LHtrZXlDb2RlOlpoLkJBQ0tTUEFDRSxhY3Rpb246c0MoTkMsdCwhMSl9LHtrZXlDb2RlOlpoLkRFTEVURSxhY3Rpb246c0MoTkMsdCwhMCl9LHtrZXlDb2RlOlpoLkJBQ0tTUEFDRSxhY3Rpb246c0MoZXcsdCwhMSl9LHtrZXlDb2RlOlpoLkRFTEVURSxhY3Rpb246c0MoZXcsdCwhMCl9XSxyKS5lYWNoKGZ1bmN0aW9uKGUpe3IucHJldmVudERlZmF1bHQoKX0pKX0pLG8ub24oImtleXVwIixmdW5jdGlvbihlKXt2YXIgdCxuOyExPT09ZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmKHQ9byxuPWUsY0MoW3trZXlDb2RlOlpoLkJBQ0tTUEFDRSxhY3Rpb246c0MoVkMsdCl9LHtrZXlDb2RlOlpoLkRFTEVURSxhY3Rpb246c0MoVkMsdCl9XSxuKSl9KX0seXc9ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG89dCxpPWUuZG9tLGE9ZS5zY2hlbWEuZ2V0TW92ZUNhcmV0QmVmb3JlT25FbnRlckVsZW1lbnRzKCk7aWYodCl7aWYoL14oTEl8RFR8REQpJC8udGVzdCh0Lm5vZGVOYW1lKSl7dmFyIHU9ZnVuY3Rpb24oZSl7Zm9yKDtlOyl7aWYoMT09PWUubm9kZVR5cGV8fDM9PT1lLm5vZGVUeXBlJiZlLmRhdGEmJi9bXHJcblxzXS8udGVzdChlLmRhdGEpKXJldHVybiBlO2U9ZS5uZXh0U2libGluZ319KHQuZmlyc3RDaGlsZCk7dSYmL14oVUx8T0x8REwpJC8udGVzdCh1Lm5vZGVOYW1lKSYmdC5pbnNlcnRCZWZvcmUoaS5kb2MuY3JlYXRlVGV4dE5vZGUob28pLHQuZmlyc3RDaGlsZCl9aWYocj1pLmNyZWF0ZVJuZygpLHQubm9ybWFsaXplKCksdC5oYXNDaGlsZE5vZGVzKCkpe2Zvcih2YXIgcz1uZXcgcmEodCx0KTtuPXMuY3VycmVudCgpOyl7aWYoWnQobikpe3Iuc2V0U3RhcnQobiwwKSxyLnNldEVuZChuLDApO2JyZWFrfWlmKGFbbi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSl7ci5zZXRTdGFydEJlZm9yZShuKSxyLnNldEVuZEJlZm9yZShuKTticmVha31vPW4sbj1zLm5leHQoKX1ufHwoci5zZXRTdGFydChvLDApLHIuc2V0RW5kKG8sMCkpfWVsc2Ugcm4odCk/dC5uZXh0U2libGluZyYmaS5pc0Jsb2NrKHQubmV4dFNpYmxpbmcpPyhyLnNldFN0YXJ0QmVmb3JlKHQpLHIuc2V0RW5kQmVmb3JlKHQpKTooci5zZXRTdGFydEFmdGVyKHQpLHIuc2V0RW5kQWZ0ZXIodCkpOihyLnNldFN0YXJ0KHQsMCksci5zZXRFbmQodCwwKSk7ZS5zZWxlY3Rpb24uc2V0Um5nKHIpLERoKGUscil9fSxidz1mdW5jdGlvbihlKXtyZXR1cm4gUi5mcm9tKGUuZG9tLmdldFBhcmVudChlLnNlbGVjdGlvbi5nZXRTdGFydCghMCksZS5kb20uaXNCbG9jaykpfSxDdz1mdW5jdGlvbihlLHQpe3JldHVybiBlJiZlLnBhcmVudE5vZGUmJmUucGFyZW50Tm9kZS5ub2RlTmFtZT09PXR9LHd3PWZ1bmN0aW9uKGUpe3JldHVybiBlJiYvXihPTHxVTHxMSSkkLy50ZXN0KGUubm9kZU5hbWUpfSx4dz1mdW5jdGlvbihlKXt2YXIgdD1lLnBhcmVudE5vZGU7cmV0dXJuL14oTEl8RFR8REQpJC8udGVzdCh0Lm5vZGVOYW1lKT90OmV9LFN3PWZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9ZVtuPyJmaXJzdENoaWxkIjoibGFzdENoaWxkIl07ciYmISR0KHIpOylyPXJbbj8ibmV4dFNpYmxpbmciOiJwcmV2aW91c1NpYmxpbmciXTtyZXR1cm4gcj09PXR9LE53PWZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFyIGk9ZS5kb20sYT1lLnNlbGVjdGlvbi5nZXRSbmcoKTtpZihuIT09ZS5nZXRCb2R5KCkpe3ZhciB1O3d3KHU9bikmJnd3KHUucGFyZW50Tm9kZSkmJihvPSJMSSIpO3ZhciBzLGMsbD1vP3Qobyk6aS5jcmVhdGUoIkJSIik7aWYoU3cobixyLCEwKSYmU3cobixyLCExKSlDdyhuLCJMSSIpP2kuaW5zZXJ0QWZ0ZXIobCx4dyhuKSk6aS5yZXBsYWNlKGwsbik7ZWxzZSBpZihTdyhuLHIsITApKUN3KG4sIkxJIik/KGkuaW5zZXJ0QWZ0ZXIobCx4dyhuKSksbC5hcHBlbmRDaGlsZChpLmRvYy5jcmVhdGVUZXh0Tm9kZSgiICIpKSxsLmFwcGVuZENoaWxkKG4pKTpuLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGwsbik7ZWxzZSBpZihTdyhuLHIsITEpKWkuaW5zZXJ0QWZ0ZXIobCx4dyhuKSk7ZWxzZXtuPXh3KG4pO3ZhciBmPWEuY2xvbmVSYW5nZSgpO2Yuc2V0U3RhcnRBZnRlcihyKSxmLnNldEVuZEFmdGVyKG4pO3ZhciBkPWYuZXh0cmFjdENvbnRlbnRzKCk7IkxJIj09PW8mJihjPSJMSSIsKHM9ZCkuZmlyc3RDaGlsZCYmcy5maXJzdENoaWxkLm5vZGVOYW1lPT09Yyk/KGw9ZC5maXJzdENoaWxkLGkuaW5zZXJ0QWZ0ZXIoZCxuKSk6KGkuaW5zZXJ0QWZ0ZXIoZCxuKSxpLmluc2VydEFmdGVyKGwsbikpfWkucmVtb3ZlKHIpLHl3KGUsbCl9fSxFdz1mdW5jdGlvbihlKXtlLmlubmVySFRNTD0nPGJyIGRhdGEtbWNlLWJvZ3VzPSIxIj4nfSxrdz1mdW5jdGlvbihlLHQpe3JldHVybiBlLm5vZGVOYW1lPT09dHx8ZS5wcmV2aW91c1NpYmxpbmcmJmUucHJldmlvdXNTaWJsaW5nLm5vZGVOYW1lPT09dH0sX3c9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdCYmZS5pc0Jsb2NrKHQpJiYhL14oVER8VEh8Q0FQVElPTnxGT1JNKSQvLnRlc3QodC5ub2RlTmFtZSkmJiEvXihmaXhlZHxhYnNvbHV0ZSkvaS50ZXN0KHQuc3R5bGUucG9zaXRpb24pJiYidHJ1ZSIhPT1lLmdldENvbnRlbnRFZGl0YWJsZSh0KX0sUnc9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiExPT09WnQodCk/bjplPzE9PT1uJiZ0LmRhdGEuY2hhckF0KG4tMSk9PT1zdT8wOm46bj09PXQuZGF0YS5sZW5ndGgtMSYmdC5kYXRhLmNoYXJBdChuKT09PXN1P3QuZGF0YS5sZW5ndGg6bn0sVHc9ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG89ZS5nZXRSb290KCk7Zm9yKG49dDtuIT09byYmImZhbHNlIiE9PWUuZ2V0Q29udGVudEVkaXRhYmxlKG4pOykidHJ1ZSI9PT1lLmdldENvbnRlbnRFZGl0YWJsZShuKSYmKHI9biksbj1uLnBhcmVudE5vZGU7cmV0dXJuIG4hPT1vP3I6b30sQXc9ZnVuY3Rpb24obyxpLGUpe1IuZnJvbShlLnN0eWxlKS5tYXAoby5kb20ucGFyc2VTdHlsZSkuZWFjaChmdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbihlKXt2YXIgdD17fSxuPWUuZG9tKCk7aWYodW4obikpZm9yKHZhciByPTA7cjxuLnN0eWxlLmxlbmd0aDtyKyspe3ZhciBvPW4uc3R5bGUuaXRlbShyKTt0W29dPW4uc3R5bGVbb119cmV0dXJuIHR9KE5lLmZyb21Eb20oaSkpLG49cGUocGUoe30sdCksZSk7by5kb20uc2V0U3R5bGVzKGksbil9KTt2YXIgdD1SLmZyb20oZVsiY2xhc3MiXSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnNwbGl0KC9ccysvKX0pLG49Ui5mcm9tKGkuY2xhc3NOYW1lKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIEgoZS5zcGxpdCgvXHMrLyksZnVuY3Rpb24oZSl7cmV0dXJuIiIhPT1lfSl9KTskdSh0LG4sZnVuY3Rpb24odCxlKXt2YXIgbj1IKGUsZnVuY3Rpb24oZSl7cmV0dXJuIU0odCxlKX0pLHI9Z2UodCxuKTtvLmRvbS5zZXRBdHRyaWIoaSwiY2xhc3MiLHIuam9pbigiICIpKX0pO3ZhciByPVsic3R5bGUiLCJjbGFzcyJdLGE9bGUoZSxmdW5jdGlvbihlLHQpe3JldHVybiFNKHIsdCl9KTtvLmRvbS5zZXRBdHRyaWJzKGksYSl9LER3PWZ1bmN0aW9uKGUsdCl7dmFyIG49SHMoZSk7aWYobiYmbi50b0xvd2VyQ2FzZSgpPT09dC50YWdOYW1lLnRvTG93ZXJDYXNlKCkpe3ZhciByPVZzKGUpO0F3KGUsdCxyKX19LE93PWZ1bmN0aW9uKGEsZSl7dmFyIHQsdSxzLGksYyxuLHIsbyxsLGYsZCxtLHAsZz1hLmRvbSxoPWEuc2NoZW1hLHY9aC5nZXROb25FbXB0eUVsZW1lbnRzKCkseT1hLnNlbGVjdGlvbi5nZXRSbmcoKSxiPWZ1bmN0aW9uKGUpe3ZhciB0LG4scixvPXMsaT1oLmdldFRleHRJbmxpbmVFbGVtZW50cygpO2lmKHI9dD1lfHwiVEFCTEUiPT09Znx8IkhSIj09PWY/Zy5jcmVhdGUoZXx8bSk6Yy5jbG9uZU5vZGUoITEpLCExPT09YS5nZXRQYXJhbSgia2VlcF9zdHlsZXMiLCEwKSlnLnNldEF0dHJpYih0LCJzdHlsZSIsbnVsbCksZy5zZXRBdHRyaWIodCwiY2xhc3MiLG51bGwpO2Vsc2UgZG97aWYoaVtvLm5vZGVOYW1lXSl7aWYoTXMobyl8fGxsKG8pKWNvbnRpbnVlO249by5jbG9uZU5vZGUoITEpLGcuc2V0QXR0cmliKG4sImlkIiwiIiksdC5oYXNDaGlsZE5vZGVzKCk/bi5hcHBlbmRDaGlsZCh0LmZpcnN0Q2hpbGQpOnI9bix0LmFwcGVuZENoaWxkKG4pfX13aGlsZSgobz1vLnBhcmVudE5vZGUpJiZvIT09dSk7cmV0dXJuIER3KGEsdCksRXcociksdH0sQz1mdW5jdGlvbihlKXt2YXIgdCxuLHI9UncoZSxzLGkpO2lmKFp0KHMpJiYoZT8wPHI6cjxzLm5vZGVWYWx1ZS5sZW5ndGgpKXJldHVybiExO2lmKHMucGFyZW50Tm9kZT09PWMmJnAmJiFlKXJldHVybiEwO2lmKGUmJiR0KHMpJiZzPT09Yy5maXJzdENoaWxkKXJldHVybiEwO2lmKGt3KHMsIlRBQkxFIil8fGt3KHMsIkhSIikpcmV0dXJuIHAmJiFlfHwhcCYmZTt2YXIgbz1uZXcgcmEocyxjKTtmb3IoWnQocykmJihlJiYwPT09cj9vLnByZXYoKTplfHxyIT09cy5ub2RlVmFsdWUubGVuZ3RofHxvLm5leHQoKSk7dD1vLmN1cnJlbnQoKTspe2lmKCR0KHQpKXtpZighdC5nZXRBdHRyaWJ1dGUoImRhdGEtbWNlLWJvZ3VzIikmJihuPXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSx2W25dJiYiYnIiIT09bikpcmV0dXJuITF9ZWxzZSBpZihadCh0KSYmIS9eWyBcdFxyXG5dKiQvLnRlc3QodC5ub2RlVmFsdWUpKXJldHVybiExO2U/by5wcmV2KCk6by5uZXh0KCl9cmV0dXJuITB9LHc9ZnVuY3Rpb24oKXtyPS9eKEhbMS02XXxQUkV8RklHVVJFKSQvLnRlc3QoZikmJiJIR1JPVVAiIT09ZD9iKG0pOmIoKSxhLmdldFBhcmFtKCJlbmRfY29udGFpbmVyX29uX2VtcHR5X2Jsb2NrIiwhMSkmJl93KGcsbCkmJmcuaXNFbXB0eShjKT9yPWcuc3BsaXQobCxjKTpnLmluc2VydEFmdGVyKHIsYykseXcoYSxyKX07V2goZyx5KS5lYWNoKGZ1bmN0aW9uKGUpe3kuc2V0U3RhcnQoZS5zdGFydENvbnRhaW5lcixlLnN0YXJ0T2Zmc2V0KSx5LnNldEVuZChlLmVuZENvbnRhaW5lcixlLmVuZE9mZnNldCl9KSxzPXkuc3RhcnRDb250YWluZXIsaT15LnN0YXJ0T2Zmc2V0LG09SHMoYSksbj0hKCFlfHwhZS5zaGlmdEtleSk7dmFyIHgsUyxOLEUsayxfLFI9ISghZXx8IWUuY3RybEtleSk7JHQocykmJnMuaGFzQ2hpbGROb2RlcygpJiYocD1pPnMuY2hpbGROb2Rlcy5sZW5ndGgtMSxzPXMuY2hpbGROb2Rlc1tNYXRoLm1pbihpLHMuY2hpbGROb2Rlcy5sZW5ndGgtMSldfHxzLGk9cCYmWnQocyk/cy5ub2RlVmFsdWUubGVuZ3RoOjApLCh1PVR3KGcscykpJiYoKG0mJiFufHwhbSYmbikmJihzPWZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFyIGksYSx1LHMsYyxsLGYsZD10fHwiUCIsbT1lLmRvbSxwPVR3KG0scik7aWYoIShhPW0uZ2V0UGFyZW50KHIsbS5pc0Jsb2NrKSl8fCFfdyhtLGEpKXtpZihsPShhPWF8fHApPT09ZS5nZXRCb2R5KCl8fChmPWEpJiYvXihURHxUSHxDQVBUSU9OKSQvLnRlc3QoZi5ub2RlTmFtZSk/YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOmEucGFyZW50Tm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLCFhLmhhc0NoaWxkTm9kZXMoKSlyZXR1cm4gaT1tLmNyZWF0ZShkKSxEdyhlLGkpLGEuYXBwZW5kQ2hpbGQoaSksbi5zZXRTdGFydChpLDApLG4uc2V0RW5kKGksMCksaTtmb3Iocz1yO3MucGFyZW50Tm9kZSE9PWE7KXM9cy5wYXJlbnROb2RlO2Zvcig7cyYmIW0uaXNCbG9jayhzKTspcz0odT1zKS5wcmV2aW91c1NpYmxpbmc7aWYodSYmZS5zY2hlbWEuaXNWYWxpZENoaWxkKGwsZC50b0xvd2VyQ2FzZSgpKSl7Zm9yKGk9bS5jcmVhdGUoZCksRHcoZSxpKSx1LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGksdSkscz11O3MmJiFtLmlzQmxvY2socyk7KWM9cy5uZXh0U2libGluZyxpLmFwcGVuZENoaWxkKHMpLHM9YztuLnNldFN0YXJ0KHIsbyksbi5zZXRFbmQocixvKX19cmV0dXJuIHJ9KGEsbSx5LHMsaSkpLGM9Zy5nZXRQYXJlbnQocyxnLmlzQmxvY2spLGw9Yz9nLmdldFBhcmVudChjLnBhcmVudE5vZGUsZy5pc0Jsb2NrKTpudWxsLGY9Yz9jLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCk6IiIsIkxJIiE9PShkPWw/bC5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpOiIiKXx8Unx8KGw9KGM9bCkucGFyZW50Tm9kZSxmPWQpLC9eKExJfERUfEREKSQvLnRlc3QoZikmJmcuaXNFbXB0eShjKT9OdyhhLGIsbCxjLG0pOm0mJmM9PT1hLmdldEJvZHkoKXx8KG09bXx8IlAiLG11KGMpPyhyPXh1KGMpLGcuaXNFbXB0eShjKSYmRXcoYyksRHcoYSxyKSx5dyhhLHIpKTpDKCk/dygpOkMoITApPyhyPWMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYigpLGMpLHl3KGEsa3coYywiSFIiKT9yOmMpKTooKF89KGs9eSkuY2xvbmVSYW5nZSgpKS5zZXRTdGFydChrLnN0YXJ0Q29udGFpbmVyLFJ3KCEwLGsuc3RhcnRDb250YWluZXIsay5zdGFydE9mZnNldCkpLF8uc2V0RW5kKGsuZW5kQ29udGFpbmVyLFJ3KCExLGsuZW5kQ29udGFpbmVyLGsuZW5kT2Zmc2V0KSksKHQ9Xy5jbG9uZVJhbmdlKCkpLnNldEVuZEFmdGVyKGMpLG89dC5leHRyYWN0Q29udGVudHMoKSxFPW8seihGYShOZS5mcm9tRG9tKEUpLE90KSxmdW5jdGlvbihlKXt2YXIgdD1lLmRvbSgpO3Qubm9kZVZhbHVlPWx1KHQubm9kZVZhbHVlKX0pLGZ1bmN0aW9uKGUpe2Zvcig7WnQoZSkmJihlLm5vZGVWYWx1ZT1lLm5vZGVWYWx1ZS5yZXBsYWNlKC9eW1xyXG5dKy8sIiIpKSxlPWUuZmlyc3RDaGlsZDspO30obykscj1vLmZpcnN0Q2hpbGQsZy5pbnNlcnRBZnRlcihvLGMpLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcixvPW4saT1bXTtpZihvKXtmb3IoO289by5maXJzdENoaWxkOyl7aWYoZS5pc0Jsb2NrKG8pKXJldHVybjskdChvKSYmIXRbby5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSYmaS5wdXNoKG8pfWZvcihyPWkubGVuZ3RoO3ItLTspIShvPWlbcl0pLmhhc0NoaWxkTm9kZXMoKXx8by5maXJzdENoaWxkPT09by5sYXN0Q2hpbGQmJiIiPT09by5maXJzdENoaWxkLm5vZGVWYWx1ZT9lLnJlbW92ZShvKTooYT1lLCh1PW8pJiYiQSI9PT11Lm5vZGVOYW1lJiZhLmlzRW1wdHkodSkmJmUucmVtb3ZlKG8pKTt2YXIgYSx1fX0oZyx2LHIpLHg9ZywoUz1jKS5ub3JtYWxpemUoKSwoTj1TLmxhc3RDaGlsZCkmJiEvXihsZWZ0fHJpZ2h0KSQvZ2kudGVzdCh4LmdldFN0eWxlKE4sImZsb2F0IiwhMCkpfHx4LmFkZChTLCJiciIpLGcuaXNFbXB0eShjKSYmRXcoYyksci5ub3JtYWxpemUoKSxnLmlzRW1wdHkocik/KGcucmVtb3ZlKHIpLHcoKSk6KER3KGEscikseXcoYSxyKSkpLGcuc2V0QXR0cmliKHIsImlkIiwiIiksYS5maXJlKCJOZXdCbG9jayIse25ld0Jsb2NrOnJ9KSkpfSxCdz1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5jcmVhdGUoInNwYW4iLHt9LCImbmJzcDsiKTtuLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHIsbiksdC5zY3JvbGxJbnRvVmlldyhyKSxlLnJlbW92ZShyKX0sUHc9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89ZS5jcmVhdGVSbmcoKTtyPyhvLnNldFN0YXJ0QmVmb3JlKG4pLG8uc2V0RW5kQmVmb3JlKG4pKTooby5zZXRTdGFydEFmdGVyKG4pLG8uc2V0RW5kQWZ0ZXIobikpLHQuc2V0Um5nKG8pfSxMdz1mdW5jdGlvbihlLHQpe3ZhciBuLHIsbz1lLnNlbGVjdGlvbixpPWUuZG9tLGE9by5nZXRSbmcoKTtXaChpLGEpLmVhY2goZnVuY3Rpb24oZSl7YS5zZXRTdGFydChlLnN0YXJ0Q29udGFpbmVyLGUuc3RhcnRPZmZzZXQpLGEuc2V0RW5kKGUuZW5kQ29udGFpbmVyLGUuZW5kT2Zmc2V0KX0pO3ZhciB1PWEuc3RhcnRPZmZzZXQscz1hLnN0YXJ0Q29udGFpbmVyO2lmKDE9PT1zLm5vZGVUeXBlJiZzLmhhc0NoaWxkTm9kZXMoKSl7dmFyIGM9dT5zLmNoaWxkTm9kZXMubGVuZ3RoLTE7cz1zLmNoaWxkTm9kZXNbTWF0aC5taW4odSxzLmNoaWxkTm9kZXMubGVuZ3RoLTEpXXx8cyx1PWMmJjM9PT1zLm5vZGVUeXBlP3Mubm9kZVZhbHVlLmxlbmd0aDowfXZhciBsPWkuZ2V0UGFyZW50KHMsaS5pc0Jsb2NrKSxmPWw/aS5nZXRQYXJlbnQobC5wYXJlbnROb2RlLGkuaXNCbG9jayk6bnVsbCxkPWY/Zi5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpOiIiLG09ISghdHx8IXQuY3RybEtleSk7IkxJIiE9PWR8fG18fChsPWYpLHMmJjM9PT1zLm5vZGVUeXBlJiZ1Pj1zLm5vZGVWYWx1ZS5sZW5ndGgmJiFmdW5jdGlvbihlLHQsbil7Zm9yKHZhciByLG89bmV3IHJhKHQsbiksaT1lLmdldE5vbkVtcHR5RWxlbWVudHMoKTtyPW8ubmV4dCgpOylpZihpW3Iubm9kZU5hbWUudG9Mb3dlckNhc2UoKV18fDA8ci5sZW5ndGgpcmV0dXJuITB9KGUuc2NoZW1hLHMsbCkmJihuPWkuY3JlYXRlKCJiciIpLGEuaW5zZXJ0Tm9kZShuKSxhLnNldFN0YXJ0QWZ0ZXIobiksYS5zZXRFbmRBZnRlcihuKSxyPSEwKSxuPWkuY3JlYXRlKCJiciIpLE5zKGksYSxuKSxCdyhpLG8sbiksUHcoaSxvLG4sciksZS51bmRvTWFuYWdlci5hZGQoKX0sSXc9ZnVuY3Rpb24oZSx0KXt2YXIgbj1OZS5mcm9tVGFnKCJiciIpO0N0KE5lLmZyb21Eb20odCksbiksZS51bmRvTWFuYWdlci5hZGQoKX0sTXc9ZnVuY3Rpb24oZSx0KXtGdyhlLmdldEJvZHkoKSx0KXx8d3QoTmUuZnJvbURvbSh0KSxOZS5mcm9tVGFnKCJiciIpKTt2YXIgbj1OZS5mcm9tVGFnKCJiciIpO3d0KE5lLmZyb21Eb20odCksbiksQncoZS5kb20sZS5zZWxlY3Rpb24sbi5kb20oKSksUHcoZS5kb20sZS5zZWxlY3Rpb24sbi5kb20oKSwhMSksZS51bmRvTWFuYWdlci5hZGQoKX0sRnc9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbj1tcy5hZnRlcih0KSwhIXJuKG4uZ2V0Tm9kZSgpKXx8SmMoZSxtcy5hZnRlcih0KSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBybihlLmdldE5vZGUoKSl9KS5nZXRPcighMSk7dmFyIG59LFV3PWZ1bmN0aW9uKGUpe3JldHVybiBlJiYiQSI9PT1lLm5vZGVOYW1lJiYiaHJlZiJpbiBlfSx6dz1mdW5jdGlvbihlKXtyZXR1cm4gZS5mb2xkKHgoITEpLFV3LFV3LHgoITEpKX0sanc9ZnVuY3Rpb24oZSx0KXt0LmZvbGQoZixOKEl3LGUpLE4oTXcsZSksZil9LEh3PWZ1bmN0aW9uKGUsdCl7dmFyIG4scixvLGk9KHI9Tih5eSxuPWUpLG89bXMuZnJvbVJhbmdlU3RhcnQobi5zZWxlY3Rpb24uZ2V0Um5nKCkpLFB5KHIsbi5nZXRCb2R5KCksbykuZmlsdGVyKHp3KSk7aS5pc1NvbWUoKT9pLmVhY2goTihqdyxlKSk6THcoZSx0KX0sVnc9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYncoZSkuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiAwPHQubGVuZ3RoJiZvdChOZS5mcm9tRG9tKGUpLHQpfSkuaXNTb21lKCl9LHF3PWhkKFt7YnI6W119LHtibG9jazpbXX0se25vbmU6W119XSksJHc9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gVncobj1lLG4uZ2V0UGFyYW0oIm5vX25ld2xpbmVfc2VsZWN0b3IiLCIiKSk7dmFyIG59LFd3PWZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbihlLHQpe3JldHVybiIiPT09SHMoZSk9PT1ufX0sS3c9ZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGJ3KGUpLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gUnIoTmUuZnJvbURvbShlKSl9KS5pc1NvbWUoKT09PW59fSxYdz1mdW5jdGlvbihuLHIpe3JldHVybiBmdW5jdGlvbihlLHQpe3JldHVybiBidyhlKS5mb2xkKHgoIiIpLGZ1bmN0aW9uKGUpe3JldHVybiBlLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCl9KT09PW4udG9VcHBlckNhc2UoKT09PXJ9fSxZdz1mdW5jdGlvbihlKXtyZXR1cm4gWHcoInByZSIsZSl9LEd3PWZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbihlLHQpe3JldHVybiBlLmdldFBhcmFtKCJicl9pbl9wcmUiLCEwKT09PW59fSxKdz1mdW5jdGlvbihlLHQpe3JldHVybiBWdyhuPWUsbi5nZXRQYXJhbSgiYnJfbmV3bGluZV9zZWxlY3RvciIsIi5tY2UtdG9jIGgyLGZpZ2NhcHRpb24sY2FwdGlvbiIpKTt2YXIgbn0sUXc9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdH0sWnc9ZnVuY3Rpb24oZSl7dmFyIHQ9SHMoZSksbj1mdW5jdGlvbihlLHQpe3ZhciBuLHIsbz1lLmdldFJvb3QoKTtmb3Iobj10O24hPT1vJiYiZmFsc2UiIT09ZS5nZXRDb250ZW50RWRpdGFibGUobik7KSJ0cnVlIj09PWUuZ2V0Q29udGVudEVkaXRhYmxlKG4pJiYocj1uKSxuPW4ucGFyZW50Tm9kZTtyZXR1cm4gbiE9PW8/cjpvfShlLmRvbSxlLnNlbGVjdGlvbi5nZXRTdGFydCgpKTtyZXR1cm4gbiYmZS5zY2hlbWEuaXNWYWxpZENoaWxkKG4ubm9kZU5hbWUsdHx8IlAiKX0sZXg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24obixyKXtyZXR1cm4gVyhlLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJnQobixyKX0sITApP1Iuc29tZSh0KTpSLm5vbmUoKX19LHR4PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIE55KFtleChbJHddLHF3Lm5vbmUoKSksZXgoW1h3KCJzdW1tYXJ5IiwhMCldLHF3LmJyKCkpLGV4KFtZdyghMCksR3coITEpLFF3XSxxdy5icigpKSxleChbWXcoITApLEd3KCExKV0scXcuYmxvY2soKSksZXgoW1l3KCEwKSxHdyghMCksUXddLHF3LmJsb2NrKCkpLGV4KFtZdyghMCksR3coITApXSxxdy5icigpKSxleChbS3coITApLFF3XSxxdy5icigpKSxleChbS3coITApXSxxdy5ibG9jaygpKSxleChbV3coITApLFF3LFp3XSxxdy5ibG9jaygpKSxleChbV3coITApXSxxdy5icigpKSxleChbSnddLHF3LmJyKCkpLGV4KFtXdyghMSksUXddLHF3LmJyKCkpLGV4KFtad10scXcuYmxvY2soKSldLFtlLCEoIXR8fCF0LnNoaWZ0S2V5KV0pLmdldE9yKHF3Lm5vbmUoKSl9LG54PWZ1bmN0aW9uKGUsdCl7dHgoZSx0KS5mb2xkKGZ1bmN0aW9uKCl7SHcoZSx0KX0sZnVuY3Rpb24oKXtPdyhlLHQpfSxmKX0scng9ZnVuY3Rpb24obyl7by5vbigia2V5ZG93biIsZnVuY3Rpb24oZSl7dmFyIHQsbixyO2Uua2V5Q29kZT09PVpoLkVOVEVSJiYodD1vLChuPWUpLmlzRGVmYXVsdFByZXZlbnRlZCgpfHwobi5wcmV2ZW50RGVmYXVsdCgpLChyPXQudW5kb01hbmFnZXIpLnR5cGluZyYmKHIudHlwaW5nPSExLHIuYWRkKCkpLHQudW5kb01hbmFnZXIudHJhbnNhY3QoZnVuY3Rpb24oKXshMT09PXQuc2VsZWN0aW9uLmlzQ29sbGFwc2VkKCkmJnQuZXhlY0NvbW1hbmQoIkRlbGV0ZSIpLG54KHQsbil9KSkpfSl9LG94PWZ1bmN0aW9uKG4scil7dmFyIGU9ci5jb250YWluZXIoKSx0PXIub2Zmc2V0KCk7cmV0dXJuIFp0KGUpPyhlLmluc2VydERhdGEodCxuKSxSLnNvbWUobHMoZSx0K24ubGVuZ3RoKSkpOlJjKHIpLm1hcChmdW5jdGlvbihlKXt2YXIgdD1OZS5mcm9tVGV4dChuKTtyZXR1cm4oci5pc0F0RW5kKCk/d3Q6Q3QpKGUsdCksbHModC5kb20oKSxuLmxlbmd0aCl9KX0saXg9TihveCxvbyksYXg9TihveCwiICIpLHV4PWZ1bmN0aW9uKGUpe3JldHVybiBscy5pc1RleHRQb3NpdGlvbihlKSYmIWUuaXNBdFN0YXJ0KCkmJiFlLmlzQXRFbmQoKX0sc3g9ZnVuY3Rpb24oZSx0KXt2YXIgbj1IKG5kKE5lLmZyb21Eb20odC5jb250YWluZXIoKSksZSksU3IpO3JldHVybiBaKG4pLmdldE9yKGUpfSxjeD1mdW5jdGlvbihlLHQpe3JldHVybiB1eCh0KT9QZih0KTpQZih0KXx8UWMoc3goZSx0KS5kb20oKSx0KS5leGlzdHMoUGYpfSxseD1mdW5jdGlvbihlLHQpe3JldHVybiB1eCh0KT9CZih0KTpCZih0KXx8SmMoc3goZSx0KS5kb20oKSx0KS5leGlzdHMoQmYpfSxmeD1mdW5jdGlvbihlKXtyZXR1cm4gUmMoZSkuYmluZChmdW5jdGlvbihlKXtyZXR1cm4gVmEoZSxEdCl9KS5leGlzdHMoZnVuY3Rpb24oZSl7cmV0dXJuIHQ9bW4oZSwid2hpdGUtc3BhY2UiKSxNKFsicHJlIiwicHJlLXdyYXAiXSx0KTt2YXIgdH0pfSxkeD1mdW5jdGlvbihlLHQpe3JldHVybiByPXQsUWMoZS5kb20oKSxyKS5pc05vbmUoKXx8KG49dCxKYyhlLmRvbSgpLG4pLmlzTm9uZSgpKXx8ZHcoZSx0KXx8bXcoZSx0KXx8T0MoZSx0KXx8REMoZSx0KTt2YXIgbixyfSxteD1mdW5jdGlvbihlLHQpe3ZhciBuLHIsbyxpPShyPShuPXQpLmNvbnRhaW5lcigpLG89bi5vZmZzZXQoKSxadChyKSYmbzxyLmRhdGEubGVuZ3RoP2xzKHIsbysxKTpuKTtyZXR1cm4hZngoaSkmJihtdyhlLGkpfHxndyhlLGkpfHxEQyhlLGkpfHxseChlLGkpKX0scHg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbj1lLCFmeChyPXQpJiYoZHcobixyKXx8cHcobixyKXx8T0MobixyKXx8Y3gobixyKSl8fG14KGUsdCk7dmFyIG4scn0sZ3g9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZmwoZS5jaGFyQXQodCkpfSxoeD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbnRhaW5lcigpO3JldHVybiBadCh0KSYmSGUodC5kYXRhLG9vKX0sdng9ZnVuY3Rpb24oZSl7dmFyIG4sdD1lLmRhdGEscj0obj10LnNwbGl0KCIiKSxVKG4sZnVuY3Rpb24oZSx0KXtyZXR1cm4gZmwoZSkmJjA8dCYmdDxuLmxlbmd0aC0xJiZtbChuW3QtMV0pJiZtbChuW3QrMV0pPyIgIjplfSkuam9pbigiIikpO3JldHVybiByIT09dCYmKGUuZGF0YT1yLCEwKX0seXg9ZnVuY3Rpb24obCxlKXtyZXR1cm4gUi5zb21lKGUpLmZpbHRlcihoeCkuYmluZChmdW5jdGlvbihlKXt2YXIgdCxuLHIsbyxpLGEsdSxzLGM9ZS5jb250YWluZXIoKTtyZXR1cm4oaT1sLHU9KGE9YykuZGF0YSxzPWxzKGEsMCksISghZ3godSwwKXx8cHgoaSxzKXx8KGEuZGF0YT0iICIrdS5zbGljZSgxKSwwKSl8fHZ4KGMpfHwodD1sLHI9KG49YykuZGF0YSxvPWxzKG4sci5sZW5ndGgtMSksISghZ3gocixyLmxlbmd0aC0xKXx8cHgodCxvKXx8KG4uZGF0YT1yLnNsaWNlKDAsLTEpKyIgIiwwKSkpKT9SLnNvbWUoZSk6Ui5ub25lKCl9KX0sYng9ZnVuY3Rpb24odCl7dmFyIGU9TmUuZnJvbURvbSh0LmdldEJvZHkoKSk7dC5zZWxlY3Rpb24uaXNDb2xsYXBzZWQoKSYmeXgoZSxscy5mcm9tUmFuZ2VTdGFydCh0LnNlbGVjdGlvbi5nZXRSbmcoKSkpLmVhY2goZnVuY3Rpb24oZSl7dC5zZWxlY3Rpb24uc2V0Um5nKGUudG9SYW5nZSgpKX0pfSxDeD1mdW5jdGlvbihyLG8pe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdD1yLCghZngobj1lKSYmKGR4KHQsbil8fGN4KHQsbil8fGx4KHQsbikpP2l4OmF4KShvKTt2YXIgdCxufX0sd3g9ZnVuY3Rpb24oZSl7dmFyIHQsbixyPW1zLmZyb21SYW5nZVN0YXJ0KGUuc2VsZWN0aW9uLmdldFJuZygpKSxvPU5lLmZyb21Eb20oZS5nZXRCb2R5KCkpO2lmKGUuc2VsZWN0aW9uLmlzQ29sbGFwc2VkKCkpe3ZhciBpPU4oeXksZSksYT1tcy5mcm9tUmFuZ2VTdGFydChlLnNlbGVjdGlvbi5nZXRSbmcoKSk7cmV0dXJuIFB5KGksZS5nZXRCb2R5KCksYSkuYmluZCgobj1vLGZ1bmN0aW9uKGUpe3JldHVybiBlLmZvbGQoZnVuY3Rpb24oZSl7cmV0dXJuIFFjKG4uZG9tKCksbXMuYmVmb3JlKGUpKX0sZnVuY3Rpb24oZSl7cmV0dXJuIFpjKGUpfSxmdW5jdGlvbihlKXtyZXR1cm4gZWwoZSl9LGZ1bmN0aW9uKGUpe3JldHVybiBKYyhuLmRvbSgpLG1zLmFmdGVyKGUpKX0pfSkpLmJpbmQoQ3gobyxyKSkuZXhpc3RzKCh0PWUsZnVuY3Rpb24oZSl7cmV0dXJuIHQuc2VsZWN0aW9uLnNldFJuZyhlLnRvUmFuZ2UoKSksdC5ub2RlQ2hhbmdlZCgpLCEwfSkpfXJldHVybiExfSx4eD1mdW5jdGlvbihyKXtyLm9uKCJrZXlkb3duIixmdW5jdGlvbihlKXt2YXIgdCxuOyExPT09ZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmKHQ9cixuPWUsY0MoW3trZXlDb2RlOlpoLlNQQUNFQkFSLGFjdGlvbjpzQyh3eCx0KX1dLG4pLmVhY2goZnVuY3Rpb24oZSl7bi5wcmV2ZW50RGVmYXVsdCgpfSkpfSl9LFN4PWZ1bmN0aW9uKGUsdCl7dmFyIG47dC5oYXNBdHRyaWJ1dGUoImRhdGEtbWNlLWNhcmV0IikmJih4dSh0KSwobj1lKS5zZWxlY3Rpb24uc2V0Um5nKG4uc2VsZWN0aW9uLmdldFJuZygpKSxlLnNlbGVjdGlvbi5zY3JvbGxJbnRvVmlldyh0KSl9LE54PWZ1bmN0aW9uKGUsdCl7dmFyIG4scj0obj1lLCRhKE5lLmZyb21Eb20obi5nZXRCb2R5KCkpLCIqW2RhdGEtbWNlLWNhcmV0XSIpLmZvbGQoeChudWxsKSxmdW5jdGlvbihlKXtyZXR1cm4gZS5kb20oKX0pKTtpZihyKXJldHVybiJjb21wb3NpdGlvbnN0YXJ0Ij09PXQudHlwZT8odC5wcmV2ZW50RGVmYXVsdCgpLHQuc3RvcFByb3BhZ2F0aW9uKCksdm9pZCBTeChlLHIpKTp2b2lkKGh1KHIpJiYoU3goZSxyKSxlLnVuZG9NYW5hZ2VyLmFkZCgpKSl9LEV4PW50KCkuYnJvd3NlcixreD1mdW5jdGlvbih0KXt2YXIgZSxuO2U9dCxuPVRhKGZ1bmN0aW9uKCl7ZS5jb21wb3Npbmd8fGJ4KGUpfSwwKSxFeC5pc0lFKCkmJihlLm9uKCJrZXlwcmVzcyIsZnVuY3Rpb24oZSl7bi50aHJvdHRsZSgpfSksZS5vbigicmVtb3ZlIixmdW5jdGlvbihlKXtuLmNhbmNlbCgpfSkpLHQub24oImlucHV0IixmdW5jdGlvbihlKXshMT09PWUuaXNDb21wb3NpbmcmJmJ4KHQpfSl9LF94PWZ1bmN0aW9uKHIpe3Iub24oImtleWRvd24iLGZ1bmN0aW9uKGUpe3ZhciB0LG47ITE9PT1lLmlzRGVmYXVsdFByZXZlbnRlZCgpJiYodD1yLG49ZSxjQyhbe2tleUNvZGU6WmguRU5ELGFjdGlvbjpNYih0LCEwKX0se2tleUNvZGU6WmguSE9NRSxhY3Rpb246TWIodCwhMSl9XSxuKS5lYWNoKGZ1bmN0aW9uKGUpe24ucHJldmVudERlZmF1bHQoKX0pKX0pfSxSeD1mdW5jdGlvbihlKXt2YXIgdCxuPUd5KGUpOyh0PWUpLm9uKCJrZXl1cCBjb21wb3NpdGlvbnN0YXJ0IixOKE54LHQpKSxsQyhlLG4pLHZ3KGUsbikscngoZSkseHgoZSksa3goZSksX3goZSl9LFR4PShBeC5wcm90b3R5cGUubm9kZUNoYW5nZWQ9ZnVuY3Rpb24oZSl7dmFyIHQsbixyLG89dGhpcy5lZGl0b3Iuc2VsZWN0aW9uO3RoaXMuZWRpdG9yLmluaXRpYWxpemVkJiZvJiYhdGhpcy5lZGl0b3Iuc2V0dGluZ3MuZGlzYWJsZV9ub2RlY2hhbmdlJiYhdGhpcy5lZGl0b3IubW9kZS5pc1JlYWRPbmx5KCkmJihyPXRoaXMuZWRpdG9yLmdldEJvZHkoKSwodD1vLmdldFN0YXJ0KCEwKXx8cikub3duZXJEb2N1bWVudD09PXRoaXMuZWRpdG9yLmdldERvYygpJiZ0aGlzLmVkaXRvci5kb20uaXNDaGlsZE9mKHQscil8fCh0PXIpLG49W10sdGhpcy5lZGl0b3IuZG9tLmdldFBhcmVudCh0LGZ1bmN0aW9uKGUpe2lmKGU9PT1yKXJldHVybiEwO24ucHVzaChlKX0pLChlPWV8fHt9KS5lbGVtZW50PXQsZS5wYXJlbnRzPW4sdGhpcy5lZGl0b3IuZmlyZSgiTm9kZUNoYW5nZSIsZSkpfSxBeC5wcm90b3R5cGUuaXNTYW1lRWxlbWVudFBhdGg9ZnVuY3Rpb24oZSl7dmFyIHQsbjtpZigobj10aGlzLmVkaXRvci4kKGUpLnBhcmVudHNVbnRpbCh0aGlzLmVkaXRvci5nZXRCb2R5KCkpLmFkZChlKSkubGVuZ3RoPT09dGhpcy5sYXN0UGF0aC5sZW5ndGgpe2Zvcih0PW4ubGVuZ3RoOzA8PXQmJm5bdF09PT10aGlzLmxhc3RQYXRoW3RdO3QtLSk7aWYoLTE9PT10KXJldHVybiB0aGlzLmxhc3RQYXRoPW4sITB9cmV0dXJuIHRoaXMubGFzdFBhdGg9biwhMX0sQXgpO2Z1bmN0aW9uIEF4KHIpe3ZhciBvO3RoaXMubGFzdFBhdGg9W10sdGhpcy5lZGl0b3I9cjt2YXIgdD10aGlzOyJvbnNlbGVjdGlvbmNoYW5nZSJpbiByLmdldERvYygpfHxyLm9uKCJOb2RlQ2hhbmdlIGNsaWNrIG1vdXNldXAga2V5dXAgZm9jdXMiLGZ1bmN0aW9uKGUpe3ZhciB0LG47bj17c3RhcnRDb250YWluZXI6KHQ9ci5zZWxlY3Rpb24uZ2V0Um5nKCkpLnN0YXJ0Q29udGFpbmVyLHN0YXJ0T2Zmc2V0OnQuc3RhcnRPZmZzZXQsZW5kQ29udGFpbmVyOnQuZW5kQ29udGFpbmVyLGVuZE9mZnNldDp0LmVuZE9mZnNldH0sIm5vZGVjaGFuZ2UiIT09ZS50eXBlJiZVaChuLG8pfHxyLmZpcmUoIlNlbGVjdGlvbkNoYW5nZSIpLG89bn0pLHIub24oImNvbnRleHRtZW51IixmdW5jdGlvbigpe3IuZmlyZSgiU2VsZWN0aW9uQ2hhbmdlIil9KSxyLm9uKCJTZWxlY3Rpb25DaGFuZ2UiLGZ1bmN0aW9uKCl7dmFyIGU9ci5zZWxlY3Rpb24uZ2V0U3RhcnQoITApOyFlfHwhcnIucmFuZ2UmJnIuc2VsZWN0aW9uLmlzQ29sbGFwc2VkKCl8fEdsKHIpJiYhdC5pc1NhbWVFbGVtZW50UGF0aChlKSYmci5kb20uaXNDaGlsZE9mKGUsci5nZXRCb2R5KCkpJiZyLm5vZGVDaGFuZ2VkKHtzZWxlY3Rpb25DaGFuZ2U6ITB9KX0pLHIub24oIm1vdXNldXAiLGZ1bmN0aW9uKGUpeyFlLmlzRGVmYXVsdFByZXZlbnRlZCgpJiZHbChyKSYmKCJJTUciPT09ci5zZWxlY3Rpb24uZ2V0Tm9kZSgpLm5vZGVOYW1lP1huLnNldEVkaXRvclRpbWVvdXQocixmdW5jdGlvbigpe3Iubm9kZUNoYW5nZWQoKX0pOnIubm9kZUNoYW5nZWQoKSl9KX12YXIgRHg9ZnVuY3Rpb24oZSl7dmFyIHQsbjsodD1lKS5vbigiY2xpY2siLGZ1bmN0aW9uKGUpe3QuZG9tLmdldFBhcmVudChlLnRhcmdldCwiZGV0YWlscyIpJiZlLnByZXZlbnREZWZhdWx0KCl9KSwobj1lKS5wYXJzZXIuYWRkTm9kZUZpbHRlcigiZGV0YWlscyIsZnVuY3Rpb24oZSl7eihlLGZ1bmN0aW9uKGUpe2UuYXR0cigiZGF0YS1tY2Utb3BlbiIsZS5hdHRyKCJvcGVuIikpLGUuYXR0cigib3BlbiIsIm9wZW4iKX0pfSksbi5zZXJpYWxpemVyLmFkZE5vZGVGaWx0ZXIoImRldGFpbHMiLGZ1bmN0aW9uKGUpe3ooZSxmdW5jdGlvbihlKXt2YXIgdD1lLmF0dHIoImRhdGEtbWNlLW9wZW4iKTtlLmF0dHIoIm9wZW4iLHEodCk/dDpudWxsKSxlLmF0dHIoImRhdGEtbWNlLW9wZW4iLG51bGwpfSl9KX0sT3g9ZnVuY3Rpb24oZSl7cmV0dXJuICR0KGUpJiZrcihOZS5mcm9tRG9tKGUpKX0sQng9ZnVuY3Rpb24odCl7dC5vbigiY2xpY2siLGZ1bmN0aW9uKGUpezM8PWUuZGV0YWlsJiZmdW5jdGlvbihlKXt2YXIgdD1lLnNlbGVjdGlvbi5nZXRSbmcoKSxuPWxzLmZyb21SYW5nZVN0YXJ0KHQpLHI9bHMuZnJvbVJhbmdlRW5kKHQpO2lmKGxzLmlzRWxlbWVudFBvc2l0aW9uKG4pKXt2YXIgbz1uLmNvbnRhaW5lcigpO094KG8pJiZaYyhvKS5lYWNoKGZ1bmN0aW9uKGUpe3JldHVybiB0LnNldFN0YXJ0KGUuY29udGFpbmVyKCksZS5vZmZzZXQoKSl9KX1pZihscy5pc0VsZW1lbnRQb3NpdGlvbihyKSl7bz1uLmNvbnRhaW5lcigpO094KG8pJiZlbChvKS5lYWNoKGZ1bmN0aW9uKGUpe3JldHVybiB0LnNldEVuZChlLmNvbnRhaW5lcigpLGUub2Zmc2V0KCkpfSl9ZS5zZWxlY3Rpb24uc2V0Um5nKCRkKHQpKX0odCl9KX0sUHg9ZnVuY3Rpb24oZSl7dmFyIHQsbixyLG87cmV0dXJuIG89ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuPSh0PWUub3duZXJEb2N1bWVudCkuZG9jdW1lbnRFbGVtZW50LHI9dC5kZWZhdWx0Vmlldyx7dG9wOm8udG9wK3IucGFnZVlPZmZzZXQtbi5jbGllbnRUb3AsbGVmdDpvLmxlZnQrci5wYWdlWE9mZnNldC1uLmNsaWVudExlZnR9fSxMeD1mdW5jdGlvbihlLHQpe3JldHVybiBuPSh1PWUpLmlubGluZT9QeCh1LmdldEJvZHkoKSk6e2xlZnQ6MCx0b3A6MH0sYT0oaT1lKS5nZXRCb2R5KCkscj1pLmlubGluZT97bGVmdDphLnNjcm9sbExlZnQsdG9wOmEuc2Nyb2xsVG9wfTp7bGVmdDowLHRvcDowfSx7cGFnZVg6KG89ZnVuY3Rpb24oZSx0KXtpZih0LnRhcmdldC5vd25lckRvY3VtZW50PT09ZS5nZXREb2MoKSlyZXR1cm57bGVmdDp0LnBhZ2VYLHRvcDp0LnBhZ2VZfTt2YXIgbixyLG8saSxhLHU9UHgoZS5nZXRDb250ZW50QXJlYUNvbnRhaW5lcigpKSxzPShyPShuPWUpLmdldEJvZHkoKSxvPW4uZ2V0RG9jKCkuZG9jdW1lbnRFbGVtZW50LGk9e2xlZnQ6ci5zY3JvbGxMZWZ0LHRvcDpyLnNjcm9sbFRvcH0sYT17bGVmdDpyLnNjcm9sbExlZnR8fG8uc2Nyb2xsTGVmdCx0b3A6ci5zY3JvbGxUb3B8fG8uc2Nyb2xsVG9wfSxuLmlubGluZT9pOmEpO3JldHVybntsZWZ0OnQucGFnZVgtdS5sZWZ0K3MubGVmdCx0b3A6dC5wYWdlWS11LnRvcCtzLnRvcH19KGUsdCkpLmxlZnQtbi5sZWZ0K3IubGVmdCxwYWdlWTpvLnRvcC1uLnRvcCtyLnRvcH07dmFyIG4scixvLGksYSx1fSxJeD1hbixNeD1vbixGeD1mdW5jdGlvbihlKXtlJiZlLnBhcmVudE5vZGUmJmUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKX0sVXg9ZnVuY3Rpb24odSxzKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoMD09PWUuYnV0dG9uKXt2YXIgdD1LKHMuZG9tLmdldFBhcmVudHMoZS50YXJnZXQpLGZ1bmN0aW9uKCl7Zm9yKHZhciBuPVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKW5bZV09YXJndW1lbnRzW2VdO3JldHVybiBmdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PG4ubGVuZ3RoO3QrKylpZihuW3RdKGUpKXJldHVybiEwO3JldHVybiExfX0oSXgsTXgpKS5nZXRPcihudWxsKTtpZihpPXMuZ2V0Qm9keSgpLEl4KGE9dCkmJmEhPT1pKXt2YXIgbj1zLmRvbS5nZXRQb3ModCkscj1zLmdldEJvZHkoKSxvPXMuZ2V0RG9jKCkuZG9jdW1lbnRFbGVtZW50O3UuZWxlbWVudD10LHUuc2NyZWVuWD1lLnNjcmVlblgsdS5zY3JlZW5ZPWUuc2NyZWVuWSx1Lm1heFg9KHMuaW5saW5lP3Iuc2Nyb2xsV2lkdGg6by5vZmZzZXRXaWR0aCktMix1Lm1heFk9KHMuaW5saW5lP3Iuc2Nyb2xsSGVpZ2h0Om8ub2Zmc2V0SGVpZ2h0KS0yLHUucmVsWD1lLnBhZ2VYLW4ueCx1LnJlbFk9ZS5wYWdlWS1uLnksdS53aWR0aD10Lm9mZnNldFdpZHRoLHUuaGVpZ2h0PXQub2Zmc2V0SGVpZ2h0LHUuZ2hvc3Q9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89dC5jbG9uZU5vZGUoITApO2UuZG9tLnNldFN0eWxlcyhvLHt3aWR0aDpuLGhlaWdodDpyfSksZS5kb20uc2V0QXR0cmliKG8sImRhdGEtbWNlLXNlbGVjdGVkIixudWxsKTt2YXIgaT1lLmRvbS5jcmVhdGUoImRpdiIseyJjbGFzcyI6Im1jZS1kcmFnLWNvbnRhaW5lciIsImRhdGEtbWNlLWJvZ3VzIjoiYWxsIix1bnNlbGVjdGFibGU6Im9uIixjb250ZW50ZWRpdGFibGU6ImZhbHNlIn0pO3JldHVybiBlLmRvbS5zZXRTdHlsZXMoaSx7cG9zaXRpb246ImFic29sdXRlIixvcGFjaXR5Oi41LG92ZXJmbG93OiJoaWRkZW4iLGJvcmRlcjowLHBhZGRpbmc6MCxtYXJnaW46MCx3aWR0aDpuLGhlaWdodDpyfSksZS5kb20uc2V0U3R5bGVzKG8se21hcmdpbjowLGJveFNpemluZzoiYm9yZGVyLWJveCJ9KSxpLmFwcGVuZENoaWxkKG8pLGl9KHMsdCx1LndpZHRoLHUuaGVpZ2h0KX19dmFyIGksYX19LHp4PWZ1bmN0aW9uKGcsaCl7dmFyIHY9WG4udGhyb3R0bGUoZnVuY3Rpb24oZSx0KXtoLl9zZWxlY3Rpb25PdmVycmlkZXMuaGlkZUZha2VDYXJldCgpLGguc2VsZWN0aW9uLnBsYWNlQ2FyZXRBdChlLHQpfSwwKTtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQsbixyLG8saSxhLHUscyxjLGwsZixkLG09TWF0aC5tYXgoTWF0aC5hYnMoZS5zY3JlZW5YLWcuc2NyZWVuWCksTWF0aC5hYnMoZS5zY3JlZW5ZLWcuc2NyZWVuWSkpO2lmKGcuZWxlbWVudCYmIWcuZHJhZ2dpbmcmJjEwPG0pe2lmKGguZmlyZSgiZHJhZ3N0YXJ0Iix7dGFyZ2V0OmcuZWxlbWVudH0pLmlzRGVmYXVsdFByZXZlbnRlZCgpKXJldHVybjtnLmRyYWdnaW5nPSEwLGguZm9jdXMoKX1pZihnLmRyYWdnaW5nKXt2YXIgcD0oZj1nLHtwYWdlWDooZD1MeChoLGUpKS5wYWdlWC1mLnJlbFgscGFnZVk6ZC5wYWdlWSs1fSk7Yz1nLmdob3N0LGw9aC5nZXRCb2R5KCksYy5wYXJlbnROb2RlIT09bCYmbC5hcHBlbmRDaGlsZChjKSx0PWcuZ2hvc3Qsbj1wLHI9Zy53aWR0aCxvPWcuaGVpZ2h0LGk9Zy5tYXhYLGE9Zy5tYXhZLHM9dT0wLHQuc3R5bGUubGVmdD1uLnBhZ2VYKyJweCIsdC5zdHlsZS50b3A9bi5wYWdlWSsicHgiLG4ucGFnZVgrcj5pJiYodT1uLnBhZ2VYK3ItaSksbi5wYWdlWStvPmEmJihzPW4ucGFnZVkrby1hKSx0LnN0eWxlLndpZHRoPXItdSsicHgiLHQuc3R5bGUuaGVpZ2h0PW8tcysicHgiLHYoZS5jbGllbnRYLGUuY2xpZW50WSl9fX0sang9ZnVuY3Rpb24obCxmKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYobC5kcmFnZ2luZyYmKHM9KGk9Zikuc2VsZWN0aW9uLGM9cy5nZXRTZWwoKS5nZXRSYW5nZUF0KDApLnN0YXJ0Q29udGFpbmVyLGE9Mz09PWMubm9kZVR5cGU/Yy5wYXJlbnROb2RlOmMsdT1sLmVsZW1lbnQsYSE9PXUmJiFpLmRvbS5pc0NoaWxkT2YoYSx1KSYmIUl4KGEpKSl7dmFyIHQ9KHI9bC5lbGVtZW50LChvPXIuY2xvbmVOb2RlKCEwKSkucmVtb3ZlQXR0cmlidXRlKCJkYXRhLW1jZS1zZWxlY3RlZCIpLG8pLG49Zi5maXJlKCJkcm9wIix7dGFyZ2V0Q2xvbmU6dCxjbGllbnRYOmUuY2xpZW50WCxjbGllbnRZOmUuY2xpZW50WX0pO24uaXNEZWZhdWx0UHJldmVudGVkKCl8fCh0PW4udGFyZ2V0Q2xvbmUsZi51bmRvTWFuYWdlci50cmFuc2FjdChmdW5jdGlvbigpe0Z4KGwuZWxlbWVudCksZi5pbnNlcnRDb250ZW50KGYuZG9tLmdldE91dGVySFRNTCh0KSksZi5fc2VsZWN0aW9uT3ZlcnJpZGVzLmhpZGVGYWtlQ2FyZXQoKX0pKX12YXIgcixvLGksYSx1LHMsYztIeChsKX19LEh4PWZ1bmN0aW9uKGUpe2UuZHJhZ2dpbmc9ITEsZS5lbGVtZW50PW51bGwsRngoZS5naG9zdCl9LFZ4PWZ1bmN0aW9uKGUpe3ZhciB0LG4scixvLGksYSx1LHMsYz17fTt0PWdhLkRPTSxhPVYuZG9jdW1lbnQsbj1VeChjLGUpLHI9engoYyxlKSxvPWp4KGMsZSksdT1jLGk9ZnVuY3Rpb24oKXt1LmRyYWdnaW5nJiZzLmZpcmUoImRyYWdlbmQiKSxIeCh1KX0sKHM9ZSkub24oIm1vdXNlZG93biIsbiksZS5vbigibW91c2Vtb3ZlIixyKSxlLm9uKCJtb3VzZXVwIixvKSx0LmJpbmQoYSwibW91c2Vtb3ZlIixyKSx0LmJpbmQoYSwibW91c2V1cCIsaSksZS5vbigicmVtb3ZlIixmdW5jdGlvbigpe3QudW5iaW5kKGEsIm1vdXNlbW92ZSIsciksdC51bmJpbmQoYSwibW91c2V1cCIsaSl9KX0scXg9ZnVuY3Rpb24oZSl7dmFyIG47VngoZSksKG49ZSkub24oImRyb3AiLGZ1bmN0aW9uKGUpe3ZhciB0PSJ1bmRlZmluZWQiIT10eXBlb2YgZS5jbGllbnRYP24uZ2V0RG9jKCkuZWxlbWVudEZyb21Qb2ludChlLmNsaWVudFgsZS5jbGllbnRZKTpudWxsOyhJeCh0KXx8SXgobi5kb20uZ2V0Q29udGVudEVkaXRhYmxlUGFyZW50KHQpKSkmJmUucHJldmVudERlZmF1bHQoKX0pfSwkeD1vbixXeD1hbixLeD1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1lLmdldEJvZHkoKTt0JiZ0IT09bjspe2lmKCR4KHQpfHxXeCh0KSlyZXR1cm4gdDt0PXQucGFyZW50Tm9kZX1yZXR1cm4gbnVsbH0sWHg9ZnVuY3Rpb24oZyl7dmFyIGgsdj1nLmdldEJvZHkoKSxvPXVjKGcsdixmdW5jdGlvbihlKXtyZXR1cm4gZy5kb20uaXNCbG9jayhlKX0sZnVuY3Rpb24oKXtyZXR1cm4gUG0oZyl9KSx5PSJzZWwtIitnLmRvbS51bmlxdWVJZCgpLGE9ZnVuY3Rpb24oZSl7ZSYmZy5zZWxlY3Rpb24uc2V0Um5nKGUpfSxyPWZ1bmN0aW9uKCl7cmV0dXJuIGcuc2VsZWN0aW9uLmdldFJuZygpfSxiPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiB2b2lkIDA9PT1yJiYocj0hMCksZy5maXJlKCJTaG93Q2FyZXQiLHt0YXJnZXQ6dCxkaXJlY3Rpb246ZSxiZWZvcmU6bn0pLmlzRGVmYXVsdFByZXZlbnRlZCgpP251bGw6KHImJmcuc2VsZWN0aW9uLnNjcm9sbEludG9WaWV3KHQsLTE9PT1lKSxvLnNob3cobix0KSl9LHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGd1KGUpfHxDdShlKXx8d3UoZSl9LEM9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoZS5zdGFydENvbnRhaW5lcil8fHQoZS5lbmRDb250YWluZXIpfSx1PWZ1bmN0aW9uKGUpe3ZhciB0PWcuc2NoZW1hLmdldFNob3J0RW5kZWRFbGVtZW50cygpLG49Zy5kb20uY3JlYXRlUm5nKCkscj1lLnN0YXJ0Q29udGFpbmVyLG89ZS5zdGFydE9mZnNldCxpPWUuZW5kQ29udGFpbmVyLGE9ZS5lbmRPZmZzZXQ7cmV0dXJuIG1lKHQsci5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKT8wPT09bz9uLnNldFN0YXJ0QmVmb3JlKHIpOm4uc2V0U3RhcnRBZnRlcihyKTpuLnNldFN0YXJ0KHIsbyksbWUodCxpLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpPzA9PT1hP24uc2V0RW5kQmVmb3JlKGkpOm4uc2V0RW5kQWZ0ZXIoaSk6bi5zZXRFbmQoaSxhKSxufSxzPWZ1bmN0aW9uKGUsdCl7dmFyIG4scixvLGksYSx1LHMsYyxsLGYsZD1nLiQsbT1nLmRvbTtpZighZSlyZXR1cm4gbnVsbDtpZihlLmNvbGxhcHNlZCl7aWYoIUMoZSkpaWYoITE9PT10KXtpZihjPV9jKC0xLHYsZSksY2MoYy5nZXROb2RlKCEwKSkpcmV0dXJuIGIoLTEsYy5nZXROb2RlKCEwKSwhMSwhMSk7aWYoY2MoYy5nZXROb2RlKCkpKXJldHVybiBiKC0xLGMuZ2V0Tm9kZSgpLCFjLmlzQXRFbmQoKSwhMSl9ZWxzZXtpZihjPV9jKDEsdixlKSxjYyhjLmdldE5vZGUoKSkpcmV0dXJuIGIoMSxjLmdldE5vZGUoKSwhYy5pc0F0RW5kKCksITEpO2lmKGNjKGMuZ2V0Tm9kZSghMCkpKXJldHVybiBiKDEsYy5nZXROb2RlKCEwKSwhMSwhMSl9cmV0dXJuIG51bGx9aWYoaT1lLnN0YXJ0Q29udGFpbmVyLGE9ZS5zdGFydE9mZnNldCx1PWUuZW5kT2Zmc2V0LDM9PT1pLm5vZGVUeXBlJiYwPT09YSYmV3goaS5wYXJlbnROb2RlKSYmKGk9aS5wYXJlbnROb2RlLGE9bS5ub2RlSW5kZXgoaSksaT1pLnBhcmVudE5vZGUpLDEhPT1pLm5vZGVUeXBlKXJldHVybiBudWxsO2lmKHU9PT1hKzEmJmk9PT1lLmVuZENvbnRhaW5lciYmKG49aS5jaGlsZE5vZGVzW2FdKSwhV3gobikpcmV0dXJuIG51bGw7aWYobD1mPW4uY2xvbmVOb2RlKCEwKSwocz1nLmZpcmUoIk9iamVjdFNlbGVjdGVkIix7dGFyZ2V0Om4sdGFyZ2V0Q2xvbmU6bH0pKS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSlyZXR1cm4gbnVsbDtyPSRhKE5lLmZyb21Eb20oZy5nZXRCb2R5KCkpLCIjIit5KS5mb2xkKGZ1bmN0aW9uKCl7cmV0dXJuIGQoW10pfSxmdW5jdGlvbihlKXtyZXR1cm4gZChbZS5kb20oKV0pfSksbD1zLnRhcmdldENsb25lLDA9PT1yLmxlbmd0aCYmKHI9ZCgnPGRpdiBkYXRhLW1jZS1ib2d1cz0iYWxsIiBjbGFzcz0ibWNlLW9mZnNjcmVlbi1zZWxlY3Rpb24iPjwvZGl2PicpLmF0dHIoImlkIix5KSkuYXBwZW5kVG8oZy5nZXRCb2R5KCkpLGU9Zy5kb20uY3JlYXRlUm5nKCksbD09PWYmJnJyLmllPyhyLmVtcHR5KCkuYXBwZW5kKCc8cCBzdHlsZT0iZm9udC1zaXplOiAwIiBkYXRhLW1jZS1ib2d1cz0iYWxsIj5ceGEwPC9wPicpLmFwcGVuZChsKSxlLnNldFN0YXJ0QWZ0ZXIoclswXS5maXJzdENoaWxkLmZpcnN0Q2hpbGQpLGUuc2V0RW5kQWZ0ZXIobCkpOihyLmVtcHR5KCkuYXBwZW5kKG9vKS5hcHBlbmQobCkuYXBwZW5kKG9vKSxlLnNldFN0YXJ0KHJbMF0uZmlyc3RDaGlsZCwxKSxlLnNldEVuZChyWzBdLmxhc3RDaGlsZCwwKSksci5jc3Moe3RvcDptLmdldFBvcyhuLGcuZ2V0Qm9keSgpKS55fSksclswXS5mb2N1cygpLChvPWcuc2VsZWN0aW9uLmdldFNlbCgpKS5yZW1vdmVBbGxSYW5nZXMoKSxvLmFkZFJhbmdlKGUpO3ZhciBwPU5lLmZyb21Eb20obik7cmV0dXJuIHooVWEoTmUuZnJvbURvbShnLmdldEJvZHkoKSksIipbZGF0YS1tY2Utc2VsZWN0ZWRdIiksZnVuY3Rpb24oZSl7YXQocCxlKXx8ZG4oZSwiZGF0YS1tY2Utc2VsZWN0ZWQiKX0pLGcuZG9tLmdldEF0dHJpYihuLCJkYXRhLW1jZS1zZWxlY3RlZCIpfHxuLnNldEF0dHJpYnV0ZSgiZGF0YS1tY2Utc2VsZWN0ZWQiLCIxIiksaD1uLHcoKSxlfSxjPWZ1bmN0aW9uKCl7aCYmKGgucmVtb3ZlQXR0cmlidXRlKCJkYXRhLW1jZS1zZWxlY3RlZCIpLCRhKE5lLmZyb21Eb20oZy5nZXRCb2R5KCkpLCIjIit5KS5lYWNoKGt0KSxoPW51bGwpLCRhKE5lLmZyb21Eb20oZy5nZXRCb2R5KCkpLCIjIit5KS5lYWNoKGt0KSxoPW51bGx9LHc9ZnVuY3Rpb24oKXtvLmhpZGUoKX07cmV0dXJuIHJyLmNlRmFsc2UmJmZ1bmN0aW9uKCl7Zy5vbigibW91c2V1cCIsZnVuY3Rpb24oZSl7dmFyIHQ9cigpO3QuY29sbGFwc2VkJiZRZyhnLGUuY2xpZW50WCxlLmNsaWVudFkpJiZhKGJiKGcsdCwhMSkpfSksZy5vbigiY2xpY2siLGZ1bmN0aW9uKGUpe3ZhciB0Oyh0PUt4KGcsZS50YXJnZXQpKSYmKFd4KHQpJiYoZS5wcmV2ZW50RGVmYXVsdCgpLGcuZm9jdXMoKSksJHgodCkmJmcuZG9tLmlzQ2hpbGRPZih0LGcuc2VsZWN0aW9uLmdldE5vZGUoKSkmJmMoKSl9KSxnLm9uKCJibHVyIE5ld0Jsb2NrIixmdW5jdGlvbigpe2MoKX0pLGcub24oIlJlc2l6ZVdpbmRvdyBGdWxsc2NyZWVuU3RhdGVDaGFuZ2VkIixmdW5jdGlvbigpe3JldHVybiBvLnJlcG9zaXRpb24oKX0pO3ZhciBuLGk9ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG89Zy5kb20uZ2V0UGFyZW50KGUsZy5kb20uaXNCbG9jayksaT1nLmRvbS5nZXRQYXJlbnQodCxnLmRvbS5pc0Jsb2NrKTtyZXR1cm4hKCFvfHwhZy5kb20uaXNDaGlsZE9mKG8saSl8fCExIT09V3goS3goZyxvKSkpfHxvJiYobj1vLHI9aSwhKGcuZG9tLmdldFBhcmVudChuLGcuZG9tLmlzQmxvY2spPT09Zy5kb20uZ2V0UGFyZW50KHIsZy5kb20uaXNCbG9jaykpKSYmZnVuY3Rpb24oZSl7dmFyIHQ9SGMoZSk7aWYoIWUuZmlyc3RDaGlsZClyZXR1cm4hMTt2YXIgbj1tcy5iZWZvcmUoZS5maXJzdENoaWxkKSxyPXQubmV4dChuKTtyZXR1cm4gciYmIVZmKHIpJiYhcWYocil9KG8pfTsobj1nKS5vbigidGFwIixmdW5jdGlvbihlKXt2YXIgdD1LeChuLGUudGFyZ2V0KTtXeCh0KSYmKGUucHJldmVudERlZmF1bHQoKSxzKHliKG4sdCkpKX0sITApLGcub24oIm1vdXNlZG93biIsZnVuY3Rpb24oZSl7dmFyIHQsbj1lLnRhcmdldDtpZigobj09PXZ8fCJIVE1MIj09PW4ubm9kZU5hbWV8fGcuZG9tLmlzQ2hpbGRPZihuLHYpKSYmITEhPT1RZyhnLGUuY2xpZW50WCxlLmNsaWVudFkpKWlmKHQ9S3goZyxuKSlXeCh0KT8oZS5wcmV2ZW50RGVmYXVsdCgpLHMoeWIoZyx0KSkpOihjKCksJHgodCkmJmUuc2hpZnRLZXl8fFFoKGUuY2xpZW50WCxlLmNsaWVudFksZy5zZWxlY3Rpb24uZ2V0Um5nKCkpfHwodygpLGcuc2VsZWN0aW9uLnBsYWNlQ2FyZXRBdChlLmNsaWVudFgsZS5jbGllbnRZKSkpO2Vsc2UgaWYoITE9PT1jYyhuKSl7YygpLHcoKTt2YXIgcj1wYih2LGUuY2xpZW50WCxlLmNsaWVudFkpO2lmKHImJiFpKGUudGFyZ2V0LHIubm9kZSkpe2UucHJldmVudERlZmF1bHQoKTt2YXIgbz1iKDEsci5ub2RlLHIuYmVmb3JlLCExKTtnLmdldEJvZHkoKS5mb2N1cygpLGEobyl9fX0pLGcub24oImtleXByZXNzIixmdW5jdGlvbihlKXtaaC5tb2RpZmllclByZXNzZWQoZSl8fChlLmtleUNvZGUsV3goZy5zZWxlY3Rpb24uZ2V0Tm9kZSgpKSYmZS5wcmV2ZW50RGVmYXVsdCgpKX0pLGcub24oIkdldFNlbGVjdGlvblJhbmdlIixmdW5jdGlvbihlKXt2YXIgdD1lLnJhbmdlO2lmKGgpe2lmKCFoLnBhcmVudE5vZGUpcmV0dXJuIHZvaWQoaD1udWxsKTsodD10LmNsb25lUmFuZ2UoKSkuc2VsZWN0Tm9kZShoKSxlLnJhbmdlPXR9fSksZy5vbigiU2V0U2VsZWN0aW9uUmFuZ2UiLGZ1bmN0aW9uKGUpe2UucmFuZ2U9dShlLnJhbmdlKTt2YXIgdD1zKGUucmFuZ2UsZS5mb3J3YXJkKTt0JiYoZS5yYW5nZT10KX0pO3ZhciB0LGU7Zy5vbigiQWZ0ZXJTZXRTZWxlY3Rpb25SYW5nZSIsZnVuY3Rpb24oZSl7dmFyIHQsbj1lLnJhbmdlO0Mobil8fCJtY2VwYXN0ZWJpbiI9PT1uLnN0YXJ0Q29udGFpbmVyLnBhcmVudE5vZGUuaWR8fHcoKSx0PW4uc3RhcnRDb250YWluZXIucGFyZW50Tm9kZSxnLmRvbS5oYXNDbGFzcyh0LCJtY2Utb2Zmc2NyZWVuLXNlbGVjdGlvbiIpfHxjKCl9KSxnLm9uKCJjb3B5IixmdW5jdGlvbihlKXt2YXIgdCxuPWUuY2xpcGJvYXJkRGF0YTtpZighZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmZS5jbGlwYm9hcmREYXRhJiYhcnIuaWUpe3ZhciByPSh0PWcuZG9tLmdldCh5KSk/dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpWzBdOnQ7ciYmKGUucHJldmVudERlZmF1bHQoKSxuLmNsZWFyRGF0YSgpLG4uc2V0RGF0YSgidGV4dC9odG1sIixyLm91dGVySFRNTCksbi5zZXREYXRhKCJ0ZXh0L3BsYWluIixyLm91dGVyVGV4dCkpfX0pLHF4KGcpLGU9VGEoZnVuY3Rpb24oKXtpZighdC5yZW1vdmVkJiZ0LmdldEJvZHkoKS5jb250YWlucyhWLmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpJiZ0LnNlbGVjdGlvbi5nZXRSbmcoKS5jb2xsYXBzZWQpe3ZhciBlPUNiKHQsdC5zZWxlY3Rpb24uZ2V0Um5nKCksITEpO3Quc2VsZWN0aW9uLnNldFJuZyhlKX19LDApLCh0PWcpLm9uKCJmb2N1cyIsZnVuY3Rpb24oKXtlLnRocm90dGxlKCl9KSx0Lm9uKCJibHVyIixmdW5jdGlvbigpe2UuY2FuY2VsKCl9KX0oKSx7c2hvd0NhcmV0OmIsc2hvd0Jsb2NrQ2FyZXRDb250YWluZXI6ZnVuY3Rpb24oZSl7ZS5oYXNBdHRyaWJ1dGUoImRhdGEtbWNlLWNhcmV0IikmJih4dShlKSxhKHIoKSksZy5zZWxlY3Rpb24uc2Nyb2xsSW50b1ZpZXcoZSkpfSxoaWRlRmFrZUNhcmV0OncsZGVzdHJveTpmdW5jdGlvbigpe28uZGVzdHJveSgpLGg9bnVsbH19fSxZeD1mdW5jdGlvbih1KXt2YXIgcyxuLHIsbz1oci5lYWNoLGM9WmguQkFDS1NQQUNFLGw9WmguREVMRVRFLGY9dS5kb20sZD11LnNlbGVjdGlvbixlPXUuc2V0dGluZ3MsdD11LnBhcnNlcixpPXJyLmdlY2tvLGE9cnIuaWUsbT1yci53ZWJraXQscD0iZGF0YTp0ZXh0L21jZS1pbnRlcm5hbCwiLGc9YT8iVGV4dCI6IlVSTCIsaD1mdW5jdGlvbihlLHQpe3RyeXt1LmdldERvYygpLmV4ZWNDb21tYW5kKGUsITEsdCl9Y2F0Y2gobil7fX0sdj1mdW5jdGlvbihlKXtyZXR1cm4gZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKX0seT1mdW5jdGlvbigpe3Uuc2hvcnRjdXRzLmFkZCgibWV0YSthIixudWxsLCJTZWxlY3RBbGwiKX0sYj1mdW5jdGlvbigpe3Uub24oImtleWRvd24iLGZ1bmN0aW9uKGUpe2lmKCF2KGUpJiZlLmtleUNvZGU9PT1jJiZkLmlzQ29sbGFwc2VkKCkmJjA9PT1kLmdldFJuZygpLnN0YXJ0T2Zmc2V0KXt2YXIgdD1kLmdldE5vZGUoKS5wcmV2aW91c1NpYmxpbmc7aWYodCYmdC5ub2RlTmFtZSYmInRhYmxlIj09PXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSlyZXR1cm4gZS5wcmV2ZW50RGVmYXVsdCgpLCExfX0pfSxDPWZ1bmN0aW9uKCl7dS5pbmxpbmV8fCh1LmNvbnRlbnRTdHlsZXMucHVzaCgiYm9keSB7bWluLWhlaWdodDogMTUwcHh9IiksdS5vbigiY2xpY2siLGZ1bmN0aW9uKGUpe3ZhciB0O2lmKCJIVE1MIj09PWUudGFyZ2V0Lm5vZGVOYW1lKXtpZigxMTxyci5pZSlyZXR1cm4gdm9pZCB1LmdldEJvZHkoKS5mb2N1cygpO3Q9dS5zZWxlY3Rpb24uZ2V0Um5nKCksdS5nZXRCb2R5KCkuZm9jdXMoKSx1LnNlbGVjdGlvbi5zZXRSbmcodCksdS5zZWxlY3Rpb24ubm9ybWFsaXplKCksdS5ub2RlQ2hhbmdlZCgpfX0pKX07cmV0dXJuIHUub24oImtleWRvd24iLGZ1bmN0aW9uKGUpe3ZhciB0LG4scixvLGk7aWYoIXYoZSkmJmUua2V5Q29kZT09PVpoLkJBQ0tTUEFDRSYmKG49KHQ9ZC5nZXRSbmcoKSkuc3RhcnRDb250YWluZXIscj10LnN0YXJ0T2Zmc2V0LG89Zi5nZXRSb290KCksaT1uLHQuY29sbGFwc2VkJiYwPT09cikpe2Zvcig7aSYmaS5wYXJlbnROb2RlJiZpLnBhcmVudE5vZGUuZmlyc3RDaGlsZD09PWkmJmkucGFyZW50Tm9kZSE9PW87KWk9aS5wYXJlbnROb2RlOyJCTE9DS1FVT1RFIj09PWkudGFnTmFtZSYmKHUuZm9ybWF0dGVyLnRvZ2dsZSgiYmxvY2txdW90ZSIsbnVsbCxpKSwodD1mLmNyZWF0ZVJuZygpKS5zZXRTdGFydChuLDApLHQuc2V0RW5kKG4sMCksZC5zZXRSbmcodCkpfX0pLHM9ZnVuY3Rpb24oZSl7dmFyIHQ9Zi5jcmVhdGUoImJvZHkiKSxuPWUuY2xvbmVDb250ZW50cygpO3JldHVybiB0LmFwcGVuZENoaWxkKG4pLGQuc2VyaWFsaXplci5zZXJpYWxpemUodCx7Zm9ybWF0OiJodG1sIn0pfSx1Lm9uKCJrZXlkb3duIixmdW5jdGlvbihlKXt2YXIgdCxuLHIsbyxpLGE9ZS5rZXlDb2RlO2lmKCF2KGUpJiYoYT09PWx8fGE9PT1jKSl7aWYodD11LnNlbGVjdGlvbi5pc0NvbGxhcHNlZCgpLG49dS5nZXRCb2R5KCksdCYmIWYuaXNFbXB0eShuKSlyZXR1cm47aWYoIXQmJihyPXUuc2VsZWN0aW9uLmdldFJuZygpLG89cyhyKSwoaT1mLmNyZWF0ZVJuZygpKS5zZWxlY3ROb2RlKHUuZ2V0Qm9keSgpKSxvIT09cyhpKSkpcmV0dXJuO2UucHJldmVudERlZmF1bHQoKSx1LnNldENvbnRlbnQoIiIpLG4uZmlyc3RDaGlsZCYmZi5pc0Jsb2NrKG4uZmlyc3RDaGlsZCk/dS5zZWxlY3Rpb24uc2V0Q3Vyc29yTG9jYXRpb24obi5maXJzdENoaWxkLDApOnUuc2VsZWN0aW9uLnNldEN1cnNvckxvY2F0aW9uKG4sMCksdS5ub2RlQ2hhbmdlZCgpfX0pLHJyLndpbmRvd3NQaG9uZXx8dS5vbigia2V5dXAgZm9jdXNpbiBtb3VzZXVwIixmdW5jdGlvbihlKXtaaC5tb2RpZmllclByZXNzZWQoZSl8fGQubm9ybWFsaXplKCl9LCEwKSxtJiYodS5pbmxpbmV8fGYuYmluZCh1LmdldERvYygpLCJtb3VzZWRvd24gbW91c2V1cCIsZnVuY3Rpb24oZSl7dmFyIHQ7aWYoZS50YXJnZXQ9PT11LmdldERvYygpLmRvY3VtZW50RWxlbWVudClpZih0PWQuZ2V0Um5nKCksdS5nZXRCb2R5KCkuZm9jdXMoKSwibW91c2Vkb3duIj09PWUudHlwZSl7aWYoZ3UodC5zdGFydENvbnRhaW5lcikpcmV0dXJuO2QucGxhY2VDYXJldEF0KGUuY2xpZW50WCxlLmNsaWVudFkpfWVsc2UgZC5zZXRSbmcodCl9KSx1Lm9uKCJjbGljayIsZnVuY3Rpb24oZSl7dmFyIHQ9ZS50YXJnZXQ7L14oSU1HfEhSKSQvLnRlc3QodC5ub2RlTmFtZSkmJiJmYWxzZSIhPT1mLmdldENvbnRlbnRFZGl0YWJsZVBhcmVudCh0KSYmKGUucHJldmVudERlZmF1bHQoKSx1LnNlbGVjdGlvbi5zZWxlY3QodCksdS5ub2RlQ2hhbmdlZCgpKSwiQSI9PT10Lm5vZGVOYW1lJiZmLmhhc0NsYXNzKHQsIm1jZS1pdGVtLWFuY2hvciIpJiYoZS5wcmV2ZW50RGVmYXVsdCgpLGQuc2VsZWN0KHQpKX0pLGUuZm9yY2VkX3Jvb3RfYmxvY2smJnUub24oImluaXQiLGZ1bmN0aW9uKCl7aCgiRGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvciIsSHModSkpfSksdS5vbigiaW5pdCIsZnVuY3Rpb24oKXt1LmRvbS5iaW5kKHUuZ2V0Qm9keSgpLCJzdWJtaXQiLGZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKX0pfSksYigpLHQuYWRkTm9kZUZpbHRlcigiYnIiLGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1lLmxlbmd0aDt0LS07KSJBcHBsZS1pbnRlcmNoYW5nZS1uZXdsaW5lIj09PWVbdF0uYXR0cigiY2xhc3MiKSYmZVt0XS5yZW1vdmUoKX0pLHJyLmlPUz8odS5pbmxpbmV8fHUub24oImtleWRvd24iLGZ1bmN0aW9uKCl7Vi5kb2N1bWVudC5hY3RpdmVFbGVtZW50PT09Vi5kb2N1bWVudC5ib2R5JiZ1LmdldFdpbigpLmZvY3VzKCl9KSxDKCksdS5vbigiY2xpY2siLGZ1bmN0aW9uKGUpe3ZhciB0PWUudGFyZ2V0O2Rve2lmKCJBIj09PXQudGFnTmFtZSlyZXR1cm4gdm9pZCBlLnByZXZlbnREZWZhdWx0KCl9d2hpbGUodD10LnBhcmVudE5vZGUpfSksdS5jb250ZW50U3R5bGVzLnB1c2goIi5tY2UtY29udGVudC1ib2R5IHstd2Via2l0LXRvdWNoLWNhbGxvdXQ6IG5vbmV9IikpOnkoKSksMTE8PXJyLmllJiYoQygpLGIoKSkscnIuaWUmJih5KCksaCgiQXV0b1VybERldGVjdCIsITEpLHUub24oImRyYWdzdGFydCIsZnVuY3Rpb24oZSl7dmFyIHQsbixyOyh0PWUpLmRhdGFUcmFuc2ZlciYmKHUuc2VsZWN0aW9uLmlzQ29sbGFwc2VkKCkmJiJJTUciPT09dC50YXJnZXQudGFnTmFtZSYmZC5zZWxlY3QodC50YXJnZXQpLDA8KG49dS5zZWxlY3Rpb24uZ2V0Q29udGVudCgpKS5sZW5ndGgmJihyPXArZXNjYXBlKHUuaWQpKyIsIitlc2NhcGUobiksdC5kYXRhVHJhbnNmZXIuc2V0RGF0YShnLHIpKSl9KSx1Lm9uKCJkcm9wIixmdW5jdGlvbihlKXtpZighdihlKSl7dmFyIHQ9KGk9ZSkuZGF0YVRyYW5zZmVyJiYoYT1pLmRhdGFUcmFuc2Zlci5nZXREYXRhKGcpKSYmMDw9YS5pbmRleE9mKHApPyhhPWEuc3Vic3RyKHAubGVuZ3RoKS5zcGxpdCgiLCIpLHtpZDp1bmVzY2FwZShhWzBdKSxodG1sOnVuZXNjYXBlKGFbMV0pfSk6bnVsbDtpZih0JiZ0LmlkIT09dS5pZCl7ZS5wcmV2ZW50RGVmYXVsdCgpO3ZhciBuPUJoKGUueCxlLnksdS5nZXREb2MoKSk7ZC5zZXRSbmcobikscj10Lmh0bWwsbz0hMCx1LnF1ZXJ5Q29tbWFuZFN1cHBvcnRlZCgibWNlSW5zZXJ0Q2xpcGJvYXJkQ29udGVudCIpP3UuZXhlY0NvbW1hbmQoIm1jZUluc2VydENsaXBib2FyZENvbnRlbnQiLCExLHtjb250ZW50OnIsaW50ZXJuYWw6b30pOnUuZXhlY0NvbW1hbmQoIm1jZUluc2VydENvbnRlbnQiLCExLHIpfX12YXIgcixvLGksYX0pKSxpJiYodS5vbigia2V5ZG93biIsZnVuY3Rpb24oZSl7aWYoIXYoZSkmJmUua2V5Q29kZT09PWMpe2lmKCF1LmdldEJvZHkoKS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaHIiKS5sZW5ndGgpcmV0dXJuO2lmKGQuaXNDb2xsYXBzZWQoKSYmMD09PWQuZ2V0Um5nKCkuc3RhcnRPZmZzZXQpe3ZhciB0PWQuZ2V0Tm9kZSgpLG49dC5wcmV2aW91c1NpYmxpbmc7aWYoIkhSIj09PXQubm9kZU5hbWUpcmV0dXJuIGYucmVtb3ZlKHQpLHZvaWQgZS5wcmV2ZW50RGVmYXVsdCgpO24mJm4ubm9kZU5hbWUmJiJociI9PT1uLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkmJihmLnJlbW92ZShuKSxlLnByZXZlbnREZWZhdWx0KCkpfX19KSxWLlJhbmdlLnByb3RvdHlwZS5nZXRDbGllbnRSZWN0c3x8dS5vbigibW91c2Vkb3duIixmdW5jdGlvbihlKXtpZighdihlKSYmIkhUTUwiPT09ZS50YXJnZXQubm9kZU5hbWUpe3ZhciB0PXUuZ2V0Qm9keSgpO3QuYmx1cigpLFhuLnNldEVkaXRvclRpbWVvdXQodSxmdW5jdGlvbigpe3QuZm9jdXMoKX0pfX0pLG49ZnVuY3Rpb24oKXt2YXIgZT1mLmdldEF0dHJpYnMoZC5nZXRTdGFydCgpLmNsb25lTm9kZSghMSkpO3JldHVybiBmdW5jdGlvbigpe3ZhciB0PWQuZ2V0U3RhcnQoKTt0IT09dS5nZXRCb2R5KCkmJihmLnNldEF0dHJpYih0LCJzdHlsZSIsbnVsbCksbyhlLGZ1bmN0aW9uKGUpe3Quc2V0QXR0cmlidXRlTm9kZShlLmNsb25lTm9kZSghMCkpfSkpfX0scj1mdW5jdGlvbigpe3JldHVybiFkLmlzQ29sbGFwc2VkKCkmJmYuZ2V0UGFyZW50KGQuZ2V0U3RhcnQoKSxmLmlzQmxvY2spIT09Zi5nZXRQYXJlbnQoZC5nZXRFbmQoKSxmLmlzQmxvY2spfSx1Lm9uKCJrZXlwcmVzcyIsZnVuY3Rpb24oZSl7dmFyIHQ7aWYoIXYoZSkmJig4PT09ZS5rZXlDb2RlfHw0Nj09PWUua2V5Q29kZSkmJnIoKSlyZXR1cm4gdD1uKCksdS5nZXREb2MoKS5leGVjQ29tbWFuZCgiZGVsZXRlIiwhMSxudWxsKSx0KCksZS5wcmV2ZW50RGVmYXVsdCgpLCExfSksZi5iaW5kKHUuZ2V0RG9jKCksImN1dCIsZnVuY3Rpb24oZSl7dmFyIHQ7IXYoZSkmJnIoKSYmKHQ9bigpLFhuLnNldEVkaXRvclRpbWVvdXQodSxmdW5jdGlvbigpe3QoKX0pKX0pLGUucmVhZG9ubHl8fHUub24oIkJlZm9yZUV4ZWNDb21tYW5kIG1vdXNlZG93biIsZnVuY3Rpb24oKXtoKCJTdHlsZVdpdGhDU1MiLCExKSxoKCJlbmFibGVJbmxpbmVUYWJsZUVkaXRpbmciLCExKSxlLm9iamVjdF9yZXNpemluZ3x8aCgiZW5hYmxlT2JqZWN0UmVzaXppbmciLCExKX0pLHUub24oIlNldENvbnRlbnQgRXhlY0NvbW1hbmQiLGZ1bmN0aW9uKGUpeyJzZXRjb250ZW50IiE9PWUudHlwZSYmIm1jZUluc2VydExpbmsiIT09ZS5jb21tYW5kfHxvKGYuc2VsZWN0KCJhIiksZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wYXJlbnROb2RlLG49Zi5nZXRSb290KCk7aWYodC5sYXN0Q2hpbGQ9PT1lKXtmb3IoO3QmJiFmLmlzQmxvY2sodCk7KXtpZih0LnBhcmVudE5vZGUubGFzdENoaWxkIT09dHx8dD09PW4pcmV0dXJuO3Q9dC5wYXJlbnROb2RlfWYuYWRkKHQsImJyIix7ImRhdGEtbWNlLWJvZ3VzIjoxfSl9fSl9KSx1LmNvbnRlbnRTdHlsZXMucHVzaCgiaW1nOi1tb3otYnJva2VuIHstbW96LWZvcmNlLWJyb2tlbi1pbWFnZS1pY29uOjE7bWluLXdpZHRoOjI0cHg7bWluLWhlaWdodDoyNHB4fSIpLHJyLm1hYyYmdS5vbigia2V5ZG93biIsZnVuY3Rpb24oZSl7IVpoLm1ldGFLZXlQcmVzc2VkKGUpfHxlLnNoaWZ0S2V5fHwzNyE9PWUua2V5Q29kZSYmMzkhPT1lLmtleUNvZGV8fChlLnByZXZlbnREZWZhdWx0KCksdS5zZWxlY3Rpb24uZ2V0U2VsKCkubW9kaWZ5KCJtb3ZlIiwzNz09PWUua2V5Q29kZT8iYmFja3dhcmQiOiJmb3J3YXJkIiwibGluZWJvdW5kYXJ5IikpfSksYigpKSx7cmVmcmVzaENvbnRlbnRFZGl0YWJsZTpmdW5jdGlvbigpe30saXNIaWRkZW46ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm4hKCFpfHx1LnJlbW92ZWQpJiYoIShlPXUuc2VsZWN0aW9uLmdldFNlbCgpKXx8IWUucmFuZ2VDb3VudHx8MD09PWUucmFuZ2VDb3VudCl9fX0sR3g9Z2EuRE9NLEp4PWZ1bmN0aW9uKGUpe3JldHVybiBsZShlLGZ1bmN0aW9uKGUpe3JldHVybiExPT09QShlKX0pfSxReD1mdW5jdGlvbihlKXt2YXIgdCxuPWUuc2V0dGluZ3Mscj1lLmVkaXRvclVwbG9hZC5ibG9iQ2FjaGU7cmV0dXJuIEp4KHthbGxvd19jb25kaXRpb25hbF9jb21tZW50czpuLmFsbG93X2NvbmRpdGlvbmFsX2NvbW1lbnRzLGFsbG93X2h0bWxfaW5fbmFtZWRfYW5jaG9yOm4uYWxsb3dfaHRtbF9pbl9uYW1lZF9hbmNob3IsYWxsb3dfc2NyaXB0X3VybHM6bi5hbGxvd19zY3JpcHRfdXJscyxhbGxvd191bnNhZmVfbGlua190YXJnZXQ6bi5hbGxvd191bnNhZmVfbGlua190YXJnZXQsY29udmVydF9mb250c190b19zcGFuczpuLmNvbnZlcnRfZm9udHNfdG9fc3BhbnMsZml4X2xpc3RfZWxlbWVudHM6bi5maXhfbGlzdF9lbGVtZW50cyxmb250X3NpemVfbGVnYWN5X3ZhbHVlczpuLmZvbnRfc2l6ZV9sZWdhY3lfdmFsdWVzLGZvcmNlZF9yb290X2Jsb2NrOm4uZm9yY2VkX3Jvb3RfYmxvY2ssZm9yY2VkX3Jvb3RfYmxvY2tfYXR0cnM6bi5mb3JjZWRfcm9vdF9ibG9ja19hdHRycyxwYWRkX2VtcHR5X3dpdGhfYnI6bi5wYWRkX2VtcHR5X3dpdGhfYnIscHJlc2VydmVfY2RhdGE6bi5wcmVzZXJ2ZV9jZGF0YSxyZW1vdmVfdHJhaWxpbmdfYnJzOm4ucmVtb3ZlX3RyYWlsaW5nX2JycyxpbmxpbmVfc3R5bGVzOm4uaW5saW5lX3N0eWxlcyxyb290X25hbWU6KHQ9ZSkuaW5saW5lP3QuZ2V0RWxlbWVudCgpLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk6dW5kZWZpbmVkLHZhbGlkYXRlOiEwLGJsb2JfY2FjaGU6cn0pfSxaeD1mdW5jdGlvbih1KXt2YXIgZT11LmRvbS5nZXRSb290KCk7dS5pbmxpbmV8fEdsKHUpJiZ1LnNlbGVjdGlvbi5nZXRTdGFydCghMCkhPT1lfHxaYyhlKS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciB0LG4scixvLGk9ZS5nZXROb2RlKCksYT1HdChpKT9aYyhpKS5nZXRPcihlKTplO3JyLmJyb3dzZXIuaXNJRSgpPyh0PXUsbj1hLnRvUmFuZ2UoKSxyPU5lLmZyb21Eb20odC5nZXRCb2R5KCkpLG89KGhtKHQpP1IuZnJvbShuKTpSLm5vbmUoKSkubWFwKHZtKS5maWx0ZXIoZ20ocikpLHQuYm9va21hcms9by5pc1NvbWUoKT9vOnQuYm9va21hcmspOnUuc2VsZWN0aW9uLnNldFJuZyhhLnRvUmFuZ2UoKSl9KX0sZVM9ZnVuY3Rpb24oZSl7dmFyIHQ7ZS5iaW5kUGVuZGluZ0V2ZW50RGVsZWdhdGVzKCksZS5pbml0aWFsaXplZD0hMCxlLmZpcmUoIkluaXQiKSxlLmZvY3VzKCEwKSxaeChlKSxlLm5vZGVDaGFuZ2VkKHtpbml0aWFsOiEwfSksZS5leGVjQ2FsbGJhY2soImluaXRfaW5zdGFuY2VfY2FsbGJhY2siLGUpLCh0PWUpLnNldHRpbmdzLmF1dG9fZm9jdXMmJlhuLnNldEVkaXRvclRpbWVvdXQodCxmdW5jdGlvbigpe3ZhciBlOyhlPSEwPT09dC5zZXR0aW5ncy5hdXRvX2ZvY3VzP3Q6dC5lZGl0b3JNYW5hZ2VyLmdldCh0LnNldHRpbmdzLmF1dG9fZm9jdXMpKS5kZXN0cm95ZWR8fGUuZm9jdXMoKX0sMTAwKX0sdFM9ZnVuY3Rpb24odCxlKXt2YXIgbj10LnNldHRpbmdzLHI9dC5nZXREb2MoKSxvPXQuZ2V0Qm9keSgpO24uYnJvd3Nlcl9zcGVsbGNoZWNrfHxuLmdlY2tvX3NwZWxsY2hlY2t8fChyLmJvZHkuc3BlbGxjaGVjaz0hMSxHeC5zZXRBdHRyaWIobywic3BlbGxjaGVjayIsImZhbHNlIikpLHQucXVpcmtzPVl4KHQpLHQuZmlyZSgiUG9zdFJlbmRlciIpO3ZhciBpLGEsdSxzLGMsbD10LmdldFBhcmFtKCJkaXJlY3Rpb25hbGl0eSIsa2EuaXNSdGwoKT8icnRsIjp1bmRlZmluZWQpO2lmKGwhPT11bmRlZmluZWQmJihvLmRpcj1sKSxuLnByb3RlY3QmJnQub24oIkJlZm9yZVNldENvbnRlbnQiLGZ1bmN0aW9uKHQpe2hyLmVhY2gobi5wcm90ZWN0LGZ1bmN0aW9uKGUpe3QuY29udGVudD10LmNvbnRlbnQucmVwbGFjZShlLGZ1bmN0aW9uKGUpe3JldHVybiJceDNjIS0tbWNlOnByb3RlY3RlZCAiK2VzY2FwZShlKSsiLS1ceDNlIn0pfSl9KSx0Lm9uKCJTZXRDb250ZW50IixmdW5jdGlvbigpe3QuYWRkVmlzdWFsKHQuZ2V0Qm9keSgpKX0pLCExPT09ZSYmdC5sb2FkKHtpbml0aWFsOiEwLGZvcm1hdDoiaHRtbCJ9KSx0LnN0YXJ0Q29udGVudD10LmdldENvbnRlbnQoe2Zvcm1hdDoicmF3In0pLHQub24oImNvbXBvc2l0aW9uc3RhcnQgY29tcG9zaXRpb25lbmQiLGZ1bmN0aW9uKGUpe3QuY29tcG9zaW5nPSJjb21wb3NpdGlvbnN0YXJ0Ij09PWUudHlwZX0pLDA8dC5jb250ZW50U3R5bGVzLmxlbmd0aCl7dmFyIGY9IiI7aHIuZWFjaCh0LmNvbnRlbnRTdHlsZXMsZnVuY3Rpb24oZSl7Zis9ZSsiXHJcbiJ9KSx0LmRvbS5hZGRTdHlsZShmKX0oKGk9dCkuaW5saW5lP0d4LnN0eWxlU2hlZXRMb2FkZXI6aS5kb20uc3R5bGVTaGVldExvYWRlcikubG9hZEFsbCh0LmNvbnRlbnRDU1MsZnVuY3Rpb24oZSl7ZVModCl9LGZ1bmN0aW9uKGUpe2VTKHQpfSksbi5jb250ZW50X3N0eWxlJiYoYT10LHU9bi5jb250ZW50X3N0eWxlLHM9TmUuZnJvbURvbShhLmdldERvYygpLmhlYWQpLGM9TmUuZnJvbVRhZygic3R5bGUiKSxjbihjLCJ0eXBlIiwidGV4dC9jc3MiKSxTdChjLE5lLmZyb21UZXh0KHUpKSxTdChzLGMpKX0sblM9ZnVuY3Rpb24odCxlKXt2YXIgbix1LHIsbyxpLGEscyxjPXQuc2V0dGluZ3MsbD10LmdldEVsZW1lbnQoKSxmPXQuZ2V0RG9jKCk7Yy5pbmxpbmV8fCh0LmdldEVsZW1lbnQoKS5zdHlsZS52aXNpYmlsaXR5PXQub3JnVmlzaWJpbGl0eSksZXx8dC5pbmxpbmV8fChmLm9wZW4oKSxmLndyaXRlKHQuaWZyYW1lSFRNTCksZi5jbG9zZSgpKSx0LmlubGluZSYmKHQub24oInJlbW92ZSIsZnVuY3Rpb24oKXt2YXIgZT10aGlzLmdldEJvZHkoKTtHeC5yZW1vdmVDbGFzcyhlLCJtY2UtY29udGVudC1ib2R5IiksR3gucmVtb3ZlQ2xhc3MoZSwibWNlLWVkaXQtZm9jdXMiKSxHeC5zZXRBdHRyaWIoZSwiY29udGVudEVkaXRhYmxlIixudWxsKX0pLEd4LmFkZENsYXNzKGwsIm1jZS1jb250ZW50LWJvZHkiKSx0LmNvbnRlbnREb2N1bWVudD1mPVYuZG9jdW1lbnQsdC5jb250ZW50V2luZG93PVYud2luZG93LHQuYm9keUVsZW1lbnQ9bCx0LmNvbnRlbnRBcmVhQ29udGFpbmVyPWwpLChuPXQuZ2V0Qm9keSgpKS5kaXNhYmxlZD0hMCx0LnJlYWRvbmx5PSEhYy5yZWFkb25seSx0LnJlYWRvbmx5fHwodC5pbmxpbmUmJiJzdGF0aWMiPT09R3guZ2V0U3R5bGUobiwicG9zaXRpb24iLCEwKSYmKG4uc3R5bGUucG9zaXRpb249InJlbGF0aXZlIiksbi5jb250ZW50RWRpdGFibGU9dC5nZXRQYXJhbSgiY29udGVudF9lZGl0YWJsZV9zdGF0ZSIsITApKSxuLmRpc2FibGVkPSExLHQuZWRpdG9yVXBsb2FkPVB2KHQpLHQuc2NoZW1hPW5vKGMpLHQuZG9tPWdhKGYse2tlZXBfdmFsdWVzOiEwLHVybF9jb252ZXJ0ZXI6dC5jb252ZXJ0VVJMLHVybF9jb252ZXJ0ZXJfc2NvcGU6dCxoZXhfY29sb3JzOmMuZm9yY2VfaGV4X3N0eWxlX2NvbG9ycyx1cGRhdGVfc3R5bGVzOiEwLHJvb3RfZWxlbWVudDp0LmlubGluZT90LmdldEJvZHkoKTpudWxsLGNvbGxlY3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdC5pbmxpbmV9LHNjaGVtYTp0LnNjaGVtYSxjb250ZW50Q3NzQ29yczp0LmdldFBhcmFtKCJjb250ZW50X2Nzc19jb3JzIiwhMSwiYm9vbGVhbiIpLHJlZmVycmVyUG9saWN5OnQuZ2V0UGFyYW0oInJlZmVycmVyX3BvbGljeSIsIiIsInN0cmluZyIpLG9uU2V0QXR0cmliOmZ1bmN0aW9uKGUpe3QuZmlyZSgiU2V0QXR0cmliIixlKX19KSx0LnBhcnNlcj0oKHI9RXYoUXgodT10KSx1LnNjaGVtYSkpLmFkZEF0dHJpYnV0ZUZpbHRlcigic3JjLGhyZWYsc3R5bGUsdGFiaW5kZXgiLGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuLHIsbz1lLmxlbmd0aCxpPXUuZG9tLGE9ImRhdGEtbWNlLSIrdDtvLS07KWlmKChyPShuPWVbb10pLmF0dHIodCkpJiYhbi5hdHRyKGEpKXtpZigwPT09ci5pbmRleE9mKCJkYXRhOiIpfHwwPT09ci5pbmRleE9mKCJibG9iOiIpKWNvbnRpbnVlOyJzdHlsZSI9PT10Pygocj1pLnNlcmlhbGl6ZVN0eWxlKGkucGFyc2VTdHlsZShyKSxuLm5hbWUpKS5sZW5ndGh8fChyPW51bGwpLG4uYXR0cihhLHIpLG4uYXR0cih0LHIpKToidGFiaW5kZXgiPT09dD8obi5hdHRyKGEsciksbi5hdHRyKHQsbnVsbCkpOm4uYXR0cihhLHUuY29udmVydFVSTChyLHQsbi5uYW1lKSl9fSksci5hZGROb2RlRmlsdGVyKCJzY3JpcHQiLGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxuLHI9ZS5sZW5ndGg7ci0tOykwIT09KG49KHQ9ZVtyXSkuYXR0cigidHlwZSIpfHwibm8vdHlwZSIpLmluZGV4T2YoIm1jZS0iKSYmdC5hdHRyKCJ0eXBlIiwibWNlLSIrbil9KSx1LnNldHRpbmdzLnByZXNlcnZlX2NkYXRhJiZyLmFkZE5vZGVGaWx0ZXIoIiNjZGF0YSIsZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG49ZS5sZW5ndGg7bi0tOykodD1lW25dKS50eXBlPTgsdC5uYW1lPSIjY29tbWVudCIsdC52YWx1ZT0iW0NEQVRBWyIrdS5kb20uZW5jb2RlKHQudmFsdWUpKyJdXSJ9KSxyLmFkZE5vZGVGaWx0ZXIoInAsaDEsaDIsaDMsaDQsaDUsaDYsZGl2IixmdW5jdGlvbihlKXtmb3IodmFyIHQsbj1lLmxlbmd0aCxyPXUuc2NoZW1hLmdldE5vbkVtcHR5RWxlbWVudHMoKTtuLS07KSh0PWVbbl0pLmlzRW1wdHkocikmJjA9PT10LmdldEFsbCgiYnIiKS5sZW5ndGgmJih0LmFwcGVuZChuZXcgZGYoImJyIiwxKSkuc2hvcnRFbmRlZD0hMCl9KSxyKSx0LnNlcmlhbGl6ZXI9QXYoKGk9KG89dCkuc2V0dGluZ3MscGUocGUoe30sUXgobykpLEp4KHt1cmxfY29udmVydGVyOmkudXJsX2NvbnZlcnRlcix1cmxfY29udmVydGVyX3Njb3BlOmkudXJsX2NvbnZlcnRlcl9zY29wZSxlbGVtZW50X2Zvcm1hdDppLmVsZW1lbnRfZm9ybWF0LGVudGl0aWVzOmkuZW50aXRpZXMsZW50aXR5X2VuY29kaW5nOmkuZW50aXR5X2VuY29kaW5nLGluZGVudDppLmluZGVudCxpbmRlbnRfYWZ0ZXI6aS5pbmRlbnRfYWZ0ZXIsaW5kZW50X2JlZm9yZTppLmluZGVudF9iZWZvcmUsYmxvY2tfZWxlbWVudHM6aS5ibG9ja19lbGVtZW50cyxib29sZWFuX2F0dHJpYnV0ZXM6aS5ib29sZWFuX2F0dHJpYnV0ZXMsY3VzdG9tX2VsZW1lbnRzOmkuY3VzdG9tX2VsZW1lbnRzLGV4dGVuZGVkX3ZhbGlkX2VsZW1lbnRzOmkuZXh0ZW5kZWRfdmFsaWRfZWxlbWVudHMsaW52YWxpZF9lbGVtZW50czppLmludmFsaWRfZWxlbWVudHMsaW52YWxpZF9zdHlsZXM6aS5pbnZhbGlkX3N0eWxlcyxtb3ZlX2NhcmV0X2JlZm9yZV9vbl9lbnRlcl9lbGVtZW50czppLm1vdmVfY2FyZXRfYmVmb3JlX29uX2VudGVyX2VsZW1lbnRzLG5vbl9lbXB0eV9lbGVtZW50czppLm5vbl9lbXB0eV9lbGVtZW50cyxzY2hlbWE6aS5zY2hlbWEsc2VsZl9jbG9zaW5nX2VsZW1lbnRzOmkuc2VsZl9jbG9zaW5nX2VsZW1lbnRzLHNob3J0X2VuZGVkX2VsZW1lbnRzOmkuc2hvcnRfZW5kZWRfZWxlbWVudHMsc3BlY2lhbDppLnNwZWNpYWwsdGV4dF9ibG9ja19lbGVtZW50czppLnRleHRfYmxvY2tfZWxlbWVudHMsdGV4dF9pbmxpbmVfZWxlbWVudHM6aS50ZXh0X2lubGluZV9lbGVtZW50cyx2YWxpZF9jaGlsZHJlbjppLnZhbGlkX2NoaWxkcmVuLHZhbGlkX2NsYXNzZXM6aS52YWxpZF9jbGFzc2VzLHZhbGlkX2VsZW1lbnRzOmkudmFsaWRfZWxlbWVudHMsdmFsaWRfc3R5bGVzOmkudmFsaWRfc3R5bGVzLHZlcmlmeV9odG1sOmkudmVyaWZ5X2h0bWwsd2hpdGVzcGFjZV9lbGVtZW50czppLndoaXRlc3BhY2VfZWxlbWVudHN9KSkpLHQpLHQuc2VsZWN0aW9uPWF2KHQuZG9tLHQuZ2V0V2luKCksdC5zZXJpYWxpemVyLHQpLHQuYW5ub3RhdG9yPWFmKHQpLHQuZm9ybWF0dGVyPVd2KHQpLHQudW5kb01hbmFnZXI9WHYodCksdC5fbm9kZUNoYW5nZURpc3BhdGNoZXI9bmV3IFR4KHQpLHQuX3NlbGVjdGlvbk92ZXJyaWRlcz1YeCh0KSx0eSh0KSxEeCh0KSx5Zyh0KXx8QngodCkseWcoYT10KXx8UngoYSksSHMocz10KSYmcy5vbigiTm9kZUNoYW5nZSIsTihveSxzKSksWnYodCksdC5maXJlKCJQcmVJbml0IiksYmcodCkuZm9sZChmdW5jdGlvbigpe3RTKHQsITEpfSxmdW5jdGlvbihlKXt0LnNldFByb2dyZXNzU3RhdGUoITApLGUudGhlbihmdW5jdGlvbihlKXt0LnNldFByb2dyZXNzU3RhdGUoITEpLHRTKHQsZSl9KX0pfSxyUz1nYS5ET00sb1M9ZnVuY3Rpb24oZSl7dmFyIHQsbixyO3JldHVybiByPWUuZ2V0UGFyYW0oImRvY3R5cGUiLCI8IURPQ1RZUEUgaHRtbD4iKSsiPGh0bWw+PGhlYWQ+IixlLmdldFBhcmFtKCJkb2N1bWVudF9iYXNlX3VybCIsIiIpIT09ZS5kb2N1bWVudEJhc2VVcmwmJihyKz0nPGJhc2UgaHJlZj0iJytlLmRvY3VtZW50QmFzZVVSSS5nZXRVUkkoKSsnIiAvPicpLHIrPSc8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgLz4nLHQ9enMoZSwiYm9keV9pZCIsInRpbnltY2UiKSxuPXpzKGUsImJvZHlfY2xhc3MiLCIiKSxqcyhlKSYmKHIrPSc8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVNlY3VyaXR5LVBvbGljeSIgY29udGVudD0iJytqcyhlKSsnIiAvPicpLHIrPSc8L2hlYWQ+PGJvZHkgaWQ9IicrdCsnIiBjbGFzcz0ibWNlLWNvbnRlbnQtYm9keSAnK24rJyIgZGF0YS1pZD0iJytlLmlkKyciPjxicj48L2JvZHk+PC9odG1sPid9LGlTPWZ1bmN0aW9uKGUsdCl7dmFyIG4scixvLGksYT1lLmVkaXRvck1hbmFnZXIudHJhbnNsYXRlKCJSaWNoIFRleHQgQXJlYS4gUHJlc3MgQUxULTAgZm9yIGhlbHAuIiksdT0obj1lLmlkLHI9YSx0LmhlaWdodCxvPWUuZ2V0UGFyYW0oImlmcmFtZV9hdHRycyIse30pLGk9TmUuZnJvbVRhZygiaWZyYW1lIiksbG4oaSxvKSxsbihpLHtpZDpuKyJfaWZyIixmcmFtZUJvcmRlcjoiMCIsYWxsb3dUcmFuc3BhcmVuY3k6InRydWUiLHRpdGxlOnJ9KSxMYShpLCJ0b3gtZWRpdC1hcmVhX19pZnJhbWUiKSxpLmRvbSgpKTt1Lm9ubG9hZD1mdW5jdGlvbigpe3Uub25sb2FkPW51bGwsZS5maXJlKCJsb2FkIil9O3ZhciBzPWZ1bmN0aW9uKGUsdCl7aWYoVi5kb2N1bWVudC5kb21haW4hPT1WLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSYmcnIuYnJvd3Nlci5pc0lFKCkpe3ZhciBuPUJ2KCJtY2UiKTtlW25dPWZ1bmN0aW9uKCl7blMoZSl9O3ZhciByPSdqYXZhc2NyaXB0OihmdW5jdGlvbigpe2RvY3VtZW50Lm9wZW4oKTtkb2N1bWVudC5kb21haW49IicrVi5kb2N1bWVudC5kb21haW4rJyI7dmFyIGVkID0gd2luZG93LnBhcmVudC50aW55bWNlLmdldCgiJytlLmlkKyciKTtkb2N1bWVudC53cml0ZShlZC5pZnJhbWVIVE1MKTtkb2N1bWVudC5jbG9zZSgpO2VkLicrbisiKHRydWUpO30pKCkiO3JldHVybiByUy5zZXRBdHRyaWIodCwic3JjIixyKSwhMH1yZXR1cm4hMX0oZSx1KTtyZXR1cm4gZS5jb250ZW50QXJlYUNvbnRhaW5lcj10LmlmcmFtZUNvbnRhaW5lcixlLmlmcmFtZUVsZW1lbnQ9dSxlLmlmcmFtZUhUTUw9b1MoZSksclMuYWRkKHQuaWZyYW1lQ29udGFpbmVyLHUpLHN9LGFTPWdhLkRPTSx1Uz1mdW5jdGlvbih0LG4sZSl7dmFyIHI9dGguZ2V0KGUpLG89dGgudXJsc1tlXXx8dC5kb2N1bWVudEJhc2VVcmwucmVwbGFjZSgvXC8kLywiIik7aWYoZT1oci50cmltKGUpLHImJi0xPT09aHIuaW5BcnJheShuLGUpKXtpZihoci5lYWNoKHRoLmRlcGVuZGVuY2llcyhlKSxmdW5jdGlvbihlKXt1Uyh0LG4sZSl9KSx0LnBsdWdpbnNbZV0pcmV0dXJuO3RyeXt2YXIgaT1uZXcgcih0LG8sdC4kKTsodC5wbHVnaW5zW2VdPWkpLmluaXQmJihpLmluaXQodCxvKSxuLnB1c2goZSkpfWNhdGNoKHBFKXshZnVuY3Rpb24oZSx0LG4pe3ZhciByPWthLnRyYW5zbGF0ZShbIkZhaWxlZCB0byBpbml0aWFsaXplIHBsdWdpbjogezB9Iix0XSk7Y2gocixuKSxpaChlLHIpfSh0LGUscEUpfX19LHNTPWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoL15cLS8sIiIpfSxjUz1mdW5jdGlvbihlKXtyZXR1cm57ZWRpdG9yQ29udGFpbmVyOmUsaWZyYW1lQ29udGFpbmVyOmV9fSxsUz1mdW5jdGlvbihlKXt2YXIgdCxuLHI9ZS5nZXRFbGVtZW50KCk7cmV0dXJuIGUuaW5saW5lP2NTKG51bGwpOih0PXIsbj1hUy5jcmVhdGUoImRpdiIpLGFTLmluc2VydEFmdGVyKG4sdCksY1MobikpfSxmUz1mdW5jdGlvbihlKXt2YXIgbix0LHIsbyxpLGE7ZS5maXJlKCJTY3JpcHRzTG9hZGVkIiksbj1lLHQ9aHIudHJpbSgkcyhuKSkscj1uLnVpLnJlZ2lzdHJ5LmdldEFsbCgpLmljb25zLG89cGUocGUoe30sJGcuZ2V0KCJkZWZhdWx0IikuaWNvbnMpLCRnLmdldCh0KS5pY29ucyksb2UobyxmdW5jdGlvbihlLHQpe21lKHIsdCl8fG4udWkucmVnaXN0cnkuYWRkSWNvbih0LGUpfSksZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zZXR0aW5ncy50aGVtZTtpZihxKHQpKXtlLnNldHRpbmdzLnRoZW1lPXNTKHQpO3ZhciBuPW5oLmdldCh0KTtlLnRoZW1lPW5ldyBuKGUsbmgudXJsc1t0XSksZS50aGVtZS5pbml0JiZlLnRoZW1lLmluaXQoZSxuaC51cmxzW3RdfHxlLmRvY3VtZW50QmFzZVVybC5yZXBsYWNlKC9cLyQvLCIiKSxlLiQpfWVsc2UgZS50aGVtZT17fX0oZSksaT1lLGE9W10saHIuZWFjaChpLnNldHRpbmdzLnBsdWdpbnMuc3BsaXQoL1sgLF0vKSxmdW5jdGlvbihlKXt1UyhpLGEsc1MoZSkpfSk7dmFyIHUscyxjLGwsZixkLG0scCxnLGg9KGY9KHU9ZSkuZ2V0RWxlbWVudCgpLHUub3JnRGlzcGxheT1mLnN0eWxlLmRpc3BsYXkscSh1LnNldHRpbmdzLnRoZW1lKT91LnRoZW1lLnJlbmRlclVJKCk6RCh1LnNldHRpbmdzLnRoZW1lKT8oYz0ocz11KS5nZXRFbGVtZW50KCksKGw9KDAscy5zZXR0aW5ncy50aGVtZSkocyxjKSkuZWRpdG9yQ29udGFpbmVyLm5vZGVUeXBlJiYobC5lZGl0b3JDb250YWluZXIuaWQ9bC5lZGl0b3JDb250YWluZXIuaWR8fHMuaWQrIl9wYXJlbnQiKSxsLmlmcmFtZUNvbnRhaW5lciYmbC5pZnJhbWVDb250YWluZXIubm9kZVR5cGUmJihsLmlmcmFtZUNvbnRhaW5lci5pZD1sLmlmcmFtZUNvbnRhaW5lci5pZHx8cy5pZCsiX2lmcmFtZWNvbnRhaW5lciIpLGwuaGVpZ2h0PWwuaWZyYW1lSGVpZ2h0P2wuaWZyYW1lSGVpZ2h0OmMub2Zmc2V0SGVpZ2h0LGwpOmxTKHUpKTtyZXR1cm4gZS5lZGl0b3JDb250YWluZXI9aC5lZGl0b3JDb250YWluZXI/aC5lZGl0b3JDb250YWluZXI6bnVsbCwoZD1lKS5jb250ZW50Q1NTPWQuY29udGVudENTUy5jb25jYXQobGgoZCkpLGUuaW5saW5lP25TKGUpOihnPWlTKG09ZSxwPWgpLHAuZWRpdG9yQ29udGFpbmVyJiYoclMuZ2V0KHAuZWRpdG9yQ29udGFpbmVyKS5zdHlsZS5kaXNwbGF5PW0ub3JnRGlzcGxheSxtLmhpZGRlbj1yUy5pc0hpZGRlbihwLmVkaXRvckNvbnRhaW5lcikpLG0uZ2V0RWxlbWVudCgpLnN0eWxlLmRpc3BsYXk9Im5vbmUiLHJTLnNldEF0dHJpYihtLmlkLCJhcmlhLWhpZGRlbiIsInRydWUiKSx2b2lkKGd8fG5TKG0pKSl9LGRTPWdhLkRPTSxtUz1mdW5jdGlvbihlKXtyZXR1cm4iLSI9PT1lLmNoYXJBdCgwKX0scFM9ZnVuY3Rpb24oZSx0KXt2YXIgbj1Xcyh0KSxyPXQuZ2V0UGFyYW0oImxhbmd1YWdlX3VybCIsIiIsInN0cmluZyIpO2lmKCExPT09a2EuaGFzQ29kZShuKSYmImVuIiE9PW4pe3ZhciBvPSIiIT09cj9yOnQuZWRpdG9yTWFuYWdlci5iYXNlVVJMKyIvbGFuZ3MvIituKyIuanMiO2UuYWRkKG8sZix1bmRlZmluZWQsZnVuY3Rpb24oKXthaCh0LCJMYW5ndWFnZUxvYWRFcnJvciIsdWgoImxhbmd1YWdlIixvLG4pKX0pfX0sZ1M9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBSLmZyb20oZSkuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiAwPGUubGVuZ3RoJiYhJGcuaGFzKGUpfSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybnt1cmw6dC5lZGl0b3JNYW5hZ2VyLmJhc2VVUkwrIi9pY29ucy8iK2UrIi9pY29ucyIrbisiLmpzIixuYW1lOlIuc29tZShlKX19KX0saFM9ZnVuY3Rpb24oZSxvLHQpe3ZhciBuLHI9Z1MobywiZGVmYXVsdCIsdCksaT0obj1vLFIuZnJvbShuLmdldFBhcmFtKCJpY29uc191cmwiLCIiLCJzdHJpbmciKSkuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiAwPGUubGVuZ3RofSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybnt1cmw6ZSxuYW1lOlIubm9uZSgpfX0pLm9yVGh1bmsoZnVuY3Rpb24oKXtyZXR1cm4gZ1MobywkcyhvKSwiIil9KSk7eihmdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sbj1mdW5jdGlvbihlKXt0LnB1c2goZSl9LHI9MDtyPGUubGVuZ3RoO3IrKyllW3JdLmVhY2gobik7cmV0dXJuIHR9KFtyLGldKSxmdW5jdGlvbihyKXtlLmFkZChyLnVybCxmLHVuZGVmaW5lZCxmdW5jdGlvbigpe3ZhciBlLHQsbjtlPW8sdD1yLnVybCxuPXIubmFtZS5nZXRPclVuZGVmaW5lZCgpLGFoKGUsIkljb25zTG9hZEVycm9yIix1aCgiaWNvbnMiLHQsbikpfSl9KX0sdlM9ZnVuY3Rpb24oZSx0KXt2YXIgaT1iYS5TY3JpcHRMb2FkZXI7IWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPXQuc2V0dGluZ3MsaT1vLnRoZW1lO2lmKHEoaSkpe2lmKCFtUyhpKSYmIW5oLnVybHMuaGFzT3duUHJvcGVydHkoaSkpe3ZhciBhPW8udGhlbWVfdXJsO2E/bmgubG9hZChpLHQuZG9jdW1lbnRCYXNlVVJJLnRvQWJzb2x1dGUoYSkpOm5oLmxvYWQoaSwidGhlbWVzLyIraSsiL3RoZW1lIituKyIuanMiKX1lLmxvYWRRdWV1ZShmdW5jdGlvbigpe25oLndhaXRGb3IoaSxyKX0pfWVsc2UgcigpfShpLGUsdCxmdW5jdGlvbigpe3ZhciByLG4sbztwUyhpLGUpLGhTKGksZSx0KSxuPShyPWUpLnNldHRpbmdzLG89dCxrKG4ucGx1Z2lucykmJihuLnBsdWdpbnM9bi5wbHVnaW5zLmpvaW4oIiAiKSksaHIuZWFjaChuLmV4dGVybmFsX3BsdWdpbnMsZnVuY3Rpb24oZSx0KXt0aC5sb2FkKHQsZSxmLHVuZGVmaW5lZCxmdW5jdGlvbigpe3NoKHIsZSx0KX0pLG4ucGx1Z2lucys9IiAiK3R9KSxoci5lYWNoKG4ucGx1Z2lucy5zcGxpdCgvWyAsXS8pLGZ1bmN0aW9uKGUpe2lmKChlPWhyLnRyaW0oZSkpJiYhdGgudXJsc1tlXSlpZihtUyhlKSl7ZT1lLnN1YnN0cigxLGUubGVuZ3RoKTt2YXIgdD10aC5kZXBlbmRlbmNpZXMoZSk7aHIuZWFjaCh0LGZ1bmN0aW9uKGUpe3ZhciB0PXtwcmVmaXg6InBsdWdpbnMvIixyZXNvdXJjZTplLHN1ZmZpeDoiL3BsdWdpbiIrbysiLmpzIn0sbj10aC5jcmVhdGVVcmwodCxlKTt0aC5sb2FkKG4ucmVzb3VyY2UsbixmLHVuZGVmaW5lZCxmdW5jdGlvbigpe3NoKHIsbi5wcmVmaXgrbi5yZXNvdXJjZStuLnN1ZmZpeCxuLnJlc291cmNlKX0pfSl9ZWxzZXt2YXIgbj17cHJlZml4OiJwbHVnaW5zLyIscmVzb3VyY2U6ZSxzdWZmaXg6Ii9wbHVnaW4iK28rIi5qcyJ9O3RoLmxvYWQoZSxuLGYsdW5kZWZpbmVkLGZ1bmN0aW9uKCl7c2gocixuLnByZWZpeCtuLnJlc291cmNlK24uc3VmZml4LGUpfSl9fSksaS5sb2FkUXVldWUoZnVuY3Rpb24oKXtlLnJlbW92ZWR8fGZTKGUpfSxlLGZ1bmN0aW9uKCl7ZS5yZW1vdmVkfHxmUyhlKX0pfSl9LHlTPWZ1bmN0aW9uKGUsdCl7dmFyIG4scixvLGksYT0ic3RyaW5nIiE9dHlwZW9mKG49dCk/KHI9aHIuZXh0ZW5kKHtwYXN0ZTpuLnBhc3RlLGRhdGE6e3Bhc3RlOm4ucGFzdGV9fSxuKSx7Y29udGVudDpuLmNvbnRlbnQsZGV0YWlsczpyfSk6e2NvbnRlbnQ6bixkZXRhaWxzOnt9fTtvPWEuY29udGVudCxpPWEuZGV0YWlscyxDZyhlKS5lZGl0b3IuaW5zZXJ0Q29udGVudChvLGkpfSxiUz1mdW5jdGlvbihlLHQpe2UuZ2V0RG9jKCkuZXhlY0NvbW1hbmQodCwhMSxudWxsKX0sQ1M9ZnVuY3Rpb24oZSl7cmV0dXJuIEQoZSk/ZTp4KCExKX0sd1M9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXQoZSksbz1DUyhuKTtyZXR1cm4gci5vclRodW5rKGZ1bmN0aW9uKCl7cmV0dXJuIG8oZSk/Ui5ub25lKCk6ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj1lLmRvbSgpLG89Q1Mobik7ci5wYXJlbnROb2RlOyl7cj1yLnBhcmVudE5vZGU7dmFyIGk9TmUuZnJvbURvbShyKSxhPXQoaSk7aWYoYS5pc1NvbWUoKSlyZXR1cm4gYTtpZihvKGkpKWJyZWFrfXJldHVybiBSLm5vbmUoKX0oZSx0LG8pfSl9LHhTPXsiZm9udC1zaXplIjoic2l6ZSIsImZvbnQtZmFtaWx5IjoiZmFjZSJ9LFNTPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1mdW5jdGlvbihyKXtyZXR1cm4gZ24ocixlKS5vclRodW5rKGZ1bmN0aW9uKCl7cmV0dXJuImZvbnQiPT09UnQocik/ZGUoeFMsZSkuYmluZChmdW5jdGlvbihlKXtyZXR1cm4gdD1yLG49ZSxSLmZyb20oZm4odCxuKSk7dmFyIHQsbn0pOlIubm9uZSgpfSl9O3JldHVybiB3UyhOZS5mcm9tRG9tKG4pLGZ1bmN0aW9uKGUpe3JldHVybiByKGUpfSxmdW5jdGlvbihlKXtyZXR1cm4gYXQoTmUuZnJvbURvbSh0KSxlKX0pfSxOUz1mdW5jdGlvbihvKXtyZXR1cm4gZnVuY3Rpb24ocixlKXtyZXR1cm4gUi5mcm9tKGUpLm1hcChOZS5mcm9tRG9tKS5maWx0ZXIoRHQpLmJpbmQoZnVuY3Rpb24oZSl7cmV0dXJuIFNTKG8scixlLmRvbSgpKS5vcigodD1vLG49ZS5kb20oKSxSLmZyb20oZ2EuRE9NLmdldFN0eWxlKG4sdCwhMCkpKSk7dmFyIHQsbn0pLmdldE9yKCIiKX19LEVTPU5TKCJmb250LXNpemUiKSxrUz1hKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoL1tcJ1wiXFxdL2csIiIpLnJlcGxhY2UoLyxccysvZywiLCIpfSxOUygiZm9udC1mYW1pbHkiKSksX1M9ZnVuY3Rpb24oZSl7cmV0dXJuIFpjKGUuZ2V0Qm9keSgpKS5tYXAoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb250YWluZXIoKTtyZXR1cm4gWnQodCk/dC5wYXJlbnROb2RlOnR9KX0sUlM9ZnVuY3Rpb24obyl7cmV0dXJuIFIuZnJvbShvLnNlbGVjdGlvbi5nZXRSbmcoKSkuYmluZChmdW5jdGlvbihlKXt2YXIgdCxuLHI9by5nZXRCb2R5KCk7cmV0dXJuIG49ciwodD1lKS5zdGFydENvbnRhaW5lcj09PW4mJjA9PT10LnN0YXJ0T2Zmc2V0P1Iubm9uZSgpOlIuZnJvbShvLnNlbGVjdGlvbi5nZXRTdGFydCghMCkpfSl9LFRTPWZ1bmN0aW9uKGUsdCl7aWYoL15bMC05XC5dKyQvLnRlc3QodCkpe3ZhciBuPXBhcnNlSW50KHQsMTApO2lmKDE8PW4mJm48PTcpe3ZhciByPShhPWUsaHIuZXhwbG9kZShhLmdldFBhcmFtKCJmb250X3NpemVfc3R5bGVfdmFsdWVzIiwieHgtc21hbGwseC1zbWFsbCxzbWFsbCxtZWRpdW0sbGFyZ2UseC1sYXJnZSx4eC1sYXJnZSIpKSksbz0oaT1lLGhyLmV4cGxvZGUoaS5nZXRQYXJhbSgiZm9udF9zaXplX2NsYXNzZXMiLCIiKSkpO3JldHVybiBvP29bbi0xXXx8dDpyW24tMV18fHR9cmV0dXJuIHR9cmV0dXJuIHQ7dmFyIGksYX0sQVM9ZnVuY3Rpb24oZSx0KXt2YXIgbixyPVRTKGUsdCk7ZS5mb3JtYXR0ZXIudG9nZ2xlKCJmb250bmFtZSIse3ZhbHVlOihuPXIuc3BsaXQoL1xzKixccyovKSxVKG4sZnVuY3Rpb24oZSl7cmV0dXJuLTE9PT1lLmluZGV4T2YoIiAiKXx8VmUoZSwnIicpfHxWZShlLCInIik/ZToiJyIrZSsiJyJ9KS5qb2luKCIsIikpfSksZS5ub2RlQ2hhbmdlZCgpfSxEUz1oci5lYWNoLE9TPWhyLm1hcCxCUz1oci5pbkFycmF5LFBTPShMUy5wcm90b3R5cGUuZXhlY0NvbW1hbmQ9ZnVuY3Rpb24odCxuLHIsZSl7dmFyIG8saSxhPSExLHU9dGhpcztpZighdS5lZGl0b3IucmVtb3ZlZCl7dmFyIHM7aWYoL14obWNlQWRkVW5kb0xldmVsfG1jZUVuZFVuZG9MZXZlbHxtY2VCZWdpblVuZG9MZXZlbHxtY2VSZXBhaW50KSQvLnRlc3QodCl8fGUmJmUuc2tpcF9mb2N1cz8ocz11LmVkaXRvcix3bShzKS5lYWNoKGZ1bmN0aW9uKGUpe3Muc2VsZWN0aW9uLnNldFJuZyhlKX0pKTp1LmVkaXRvci5mb2N1cygpLChlPXUuZWRpdG9yLmZpcmUoIkJlZm9yZUV4ZWNDb21tYW5kIix7Y29tbWFuZDp0LHVpOm4sdmFsdWU6cn0pKS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSlyZXR1cm4hMTtpZihpPXQudG9Mb3dlckNhc2UoKSxvPXUuY29tbWFuZHMuZXhlY1tpXSlyZXR1cm4gbyhpLG4sciksdS5lZGl0b3IuZmlyZSgiRXhlY0NvbW1hbmQiLHtjb21tYW5kOnQsdWk6bix2YWx1ZTpyfSksITA7aWYoRFModGhpcy5lZGl0b3IucGx1Z2lucyxmdW5jdGlvbihlKXtpZihlLmV4ZWNDb21tYW5kJiZlLmV4ZWNDb21tYW5kKHQsbixyKSlyZXR1cm4gdS5lZGl0b3IuZmlyZSgiRXhlY0NvbW1hbmQiLHtjb21tYW5kOnQsdWk6bix2YWx1ZTpyfSksIShhPSEwKX0pLGEpcmV0dXJuIGE7aWYodS5lZGl0b3IudGhlbWUmJnUuZWRpdG9yLnRoZW1lLmV4ZWNDb21tYW5kJiZ1LmVkaXRvci50aGVtZS5leGVjQ29tbWFuZCh0LG4scikpcmV0dXJuIHUuZWRpdG9yLmZpcmUoIkV4ZWNDb21tYW5kIix7Y29tbWFuZDp0LHVpOm4sdmFsdWU6cn0pLCEwO3RyeXthPXUuZWRpdG9yLmdldERvYygpLmV4ZWNDb21tYW5kKHQsbixyKX1jYXRjaChjKXt9cmV0dXJuISFhJiYodS5lZGl0b3IuZmlyZSgiRXhlY0NvbW1hbmQiLHtjb21tYW5kOnQsdWk6bix2YWx1ZTpyfSksITApfX0sTFMucHJvdG90eXBlLnF1ZXJ5Q29tbWFuZFN0YXRlPWZ1bmN0aW9uKGUpe3ZhciB0O2lmKCF0aGlzLmVkaXRvci5xdWlya3MuaXNIaWRkZW4oKSYmIXRoaXMuZWRpdG9yLnJlbW92ZWQpe2lmKGU9ZS50b0xvd2VyQ2FzZSgpLHQ9dGhpcy5jb21tYW5kcy5zdGF0ZVtlXSlyZXR1cm4gdChlKTt0cnl7cmV0dXJuIHRoaXMuZWRpdG9yLmdldERvYygpLnF1ZXJ5Q29tbWFuZFN0YXRlKGUpfWNhdGNoKG4pe31yZXR1cm4hMX19LExTLnByb3RvdHlwZS5xdWVyeUNvbW1hbmRWYWx1ZT1mdW5jdGlvbihlKXt2YXIgdDtpZighdGhpcy5lZGl0b3IucXVpcmtzLmlzSGlkZGVuKCkmJiF0aGlzLmVkaXRvci5yZW1vdmVkKXtpZihlPWUudG9Mb3dlckNhc2UoKSx0PXRoaXMuY29tbWFuZHMudmFsdWVbZV0pcmV0dXJuIHQoZSk7dHJ5e3JldHVybiB0aGlzLmVkaXRvci5nZXREb2MoKS5xdWVyeUNvbW1hbmRWYWx1ZShlKX1jYXRjaChuKXt9fX0sTFMucHJvdG90eXBlLmFkZENvbW1hbmRzPWZ1bmN0aW9uKGUsbil7dmFyIHI9dGhpcztuPW58fCJleGVjIixEUyhlLGZ1bmN0aW9uKHQsZSl7RFMoZS50b0xvd2VyQ2FzZSgpLnNwbGl0KCIsIiksZnVuY3Rpb24oZSl7ci5jb21tYW5kc1tuXVtlXT10fSl9KX0sTFMucHJvdG90eXBlLmFkZENvbW1hbmQ9ZnVuY3Rpb24oZSxvLGkpe3ZhciBhPXRoaXM7ZT1lLnRvTG93ZXJDYXNlKCksdGhpcy5jb21tYW5kcy5leGVjW2VdPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBvLmNhbGwoaXx8YS5lZGl0b3IsdCxuLHIpfX0sTFMucHJvdG90eXBlLnF1ZXJ5Q29tbWFuZFN1cHBvcnRlZD1mdW5jdGlvbihlKXtpZihlPWUudG9Mb3dlckNhc2UoKSx0aGlzLmNvbW1hbmRzLmV4ZWNbZV0pcmV0dXJuITA7dHJ5e3JldHVybiB0aGlzLmVkaXRvci5nZXREb2MoKS5xdWVyeUNvbW1hbmRTdXBwb3J0ZWQoZSl9Y2F0Y2godCl7fXJldHVybiExfSxMUy5wcm90b3R5cGUuYWRkUXVlcnlTdGF0ZUhhbmRsZXI9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXM7ZT1lLnRvTG93ZXJDYXNlKCksdGhpcy5jb21tYW5kcy5zdGF0ZVtlXT1mdW5jdGlvbigpe3JldHVybiB0LmNhbGwobnx8ci5lZGl0b3IpfX0sTFMucHJvdG90eXBlLmFkZFF1ZXJ5VmFsdWVIYW5kbGVyPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzO2U9ZS50b0xvd2VyQ2FzZSgpLHRoaXMuY29tbWFuZHMudmFsdWVbZV09ZnVuY3Rpb24oKXtyZXR1cm4gdC5jYWxsKG58fHIuZWRpdG9yKX19LExTLnByb3RvdHlwZS5oYXNDdXN0b21Db21tYW5kPWZ1bmN0aW9uKGUpe3JldHVybiBlPWUudG9Mb3dlckNhc2UoKSwhIXRoaXMuY29tbWFuZHMuZXhlY1tlXX0sTFMucHJvdG90eXBlLmV4ZWNOYXRpdmVDb21tYW5kPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdD09PXVuZGVmaW5lZCYmKHQ9ITEpLG49PT11bmRlZmluZWQmJihuPW51bGwpLHRoaXMuZWRpdG9yLmdldERvYygpLmV4ZWNDb21tYW5kKGUsdCxuKX0sTFMucHJvdG90eXBlLmlzRm9ybWF0TWF0Y2g9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWRpdG9yLmZvcm1hdHRlci5tYXRjaChlKX0sTFMucHJvdG90eXBlLnRvZ2dsZUZvcm1hdD1mdW5jdGlvbihlLHQpe3RoaXMuZWRpdG9yLmZvcm1hdHRlci50b2dnbGUoZSx0P3t2YWx1ZTp0fTp1bmRlZmluZWQpLHRoaXMuZWRpdG9yLm5vZGVDaGFuZ2VkKCl9LExTLnByb3RvdHlwZS5zdG9yZVNlbGVjdGlvbj1mdW5jdGlvbihlKXt0aGlzLnNlbGVjdGlvbkJvb2ttYXJrPXRoaXMuZWRpdG9yLnNlbGVjdGlvbi5nZXRCb29rbWFyayhlKX0sTFMucHJvdG90eXBlLnJlc3RvcmVTZWxlY3Rpb249ZnVuY3Rpb24oKXt0aGlzLmVkaXRvci5zZWxlY3Rpb24ubW92ZVRvQm9va21hcmsodGhpcy5zZWxlY3Rpb25Cb29rbWFyayl9LExTLnByb3RvdHlwZS5zZXR1cENvbW1hbmRzPWZ1bmN0aW9uKGkpe3ZhciBhPXRoaXM7dGhpcy5hZGRDb21tYW5kcyh7Im1jZVJlc2V0RGVzaWduTW9kZSxtY2VCZWdpblVuZG9MZXZlbCI6ZnVuY3Rpb24oKXt9LCJtY2VFbmRVbmRvTGV2ZWwsbWNlQWRkVW5kb0xldmVsIjpmdW5jdGlvbigpe2kudW5kb01hbmFnZXIuYWRkKCl9LCJDdXQsQ29weSxQYXN0ZSI6ZnVuY3Rpb24oZSl7dmFyIHQsbj1pLmdldERvYygpO3RyeXthLmV4ZWNOYXRpdmVDb21tYW5kKGUpfWNhdGNoKG8pe3Q9ITB9aWYoInBhc3RlIiE9PWV8fG4ucXVlcnlDb21tYW5kRW5hYmxlZChlKXx8KHQ9ITApLHR8fCFuLnF1ZXJ5Q29tbWFuZFN1cHBvcnRlZChlKSl7dmFyIHI9aS50cmFuc2xhdGUoIllvdXIgYnJvd3NlciBkb2Vzbid0IHN1cHBvcnQgZGlyZWN0IGFjY2VzcyB0byB0aGUgY2xpcGJvYXJkLiBQbGVhc2UgdXNlIHRoZSBDdHJsK1gvQy9WIGtleWJvYXJkIHNob3J0Y3V0cyBpbnN0ZWFkLiIpO3JyLm1hYyYmKHI9ci5yZXBsYWNlKC9DdHJsXCsvZywiXHUyMzE4KyIpKSxpLm5vdGlmaWNhdGlvbk1hbmFnZXIub3Blbih7dGV4dDpyLHR5cGU6ImVycm9yIn0pfX0sdW5saW5rOmZ1bmN0aW9uKCl7aWYoaS5zZWxlY3Rpb24uaXNDb2xsYXBzZWQoKSl7dmFyIGU9aS5kb20uZ2V0UGFyZW50KGkuc2VsZWN0aW9uLmdldFN0YXJ0KCksImEiKTtlJiZpLmRvbS5yZW1vdmUoZSwhMCl9ZWxzZSBpLmZvcm1hdHRlci5yZW1vdmUoImxpbmsiKX0sIkp1c3RpZnlMZWZ0LEp1c3RpZnlDZW50ZXIsSnVzdGlmeVJpZ2h0LEp1c3RpZnlGdWxsLEp1c3RpZnlOb25lIjpmdW5jdGlvbihlKXt2YXIgdD1lLnN1YnN0cmluZyg3KTsiZnVsbCI9PT10JiYodD0ianVzdGlmeSIpLERTKCJsZWZ0LGNlbnRlcixyaWdodCxqdXN0aWZ5Ii5zcGxpdCgiLCIpLGZ1bmN0aW9uKGUpe3QhPT1lJiZpLmZvcm1hdHRlci5yZW1vdmUoImFsaWduIitlKX0pLCJub25lIiE9PXQmJmEudG9nZ2xlRm9ybWF0KCJhbGlnbiIrdCl9LCJJbnNlcnRVbm9yZGVyZWRMaXN0LEluc2VydE9yZGVyZWRMaXN0IjpmdW5jdGlvbihlKXt2YXIgdCxuO2EuZXhlY05hdGl2ZUNvbW1hbmQoZSksKHQ9aS5kb20uZ2V0UGFyZW50KGkuc2VsZWN0aW9uLmdldE5vZGUoKSwib2wsdWwiKSkmJihuPXQucGFyZW50Tm9kZSwvXihIWzEtNl18UHxBRERSRVNTfFBSRSkkLy50ZXN0KG4ubm9kZU5hbWUpJiYoYS5zdG9yZVNlbGVjdGlvbigpLGkuZG9tLnNwbGl0KG4sdCksYS5yZXN0b3JlU2VsZWN0aW9uKCkpKX0sIkJvbGQsSXRhbGljLFVuZGVybGluZSxTdHJpa2V0aHJvdWdoLFN1cGVyc2NyaXB0LFN1YnNjcmlwdCI6ZnVuY3Rpb24oZSl7YS50b2dnbGVGb3JtYXQoZSl9LCJGb3JlQ29sb3IsSGlsaXRlQ29sb3IiOmZ1bmN0aW9uKGUsdCxuKXthLnRvZ2dsZUZvcm1hdChlLG4pfSxGb250TmFtZTpmdW5jdGlvbihlLHQsbil7QVMoaSxuKX0sRm9udFNpemU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLG87bz1uLChyPWkpLmZvcm1hdHRlci50b2dnbGUoImZvbnRzaXplIix7dmFsdWU6VFMocixvKX0pLHIubm9kZUNoYW5nZWQoKX0sUmVtb3ZlRm9ybWF0OmZ1bmN0aW9uKGUpe2kuZm9ybWF0dGVyLnJlbW92ZShlKX0sbWNlQmxvY2tRdW90ZTpmdW5jdGlvbigpe2EudG9nZ2xlRm9ybWF0KCJibG9ja3F1b3RlIil9LEZvcm1hdEJsb2NrOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gYS50b2dnbGVGb3JtYXQobnx8InAiKX0sbWNlQ2xlYW51cDpmdW5jdGlvbigpe3ZhciBlPWkuc2VsZWN0aW9uLmdldEJvb2ttYXJrKCk7aS5zZXRDb250ZW50KGkuZ2V0Q29udGVudCgpKSxpLnNlbGVjdGlvbi5tb3ZlVG9Cb29rbWFyayhlKX0sbWNlUmVtb3ZlTm9kZTpmdW5jdGlvbihlLHQsbil7dmFyIHI9bnx8aS5zZWxlY3Rpb24uZ2V0Tm9kZSgpO3IhPT1pLmdldEJvZHkoKSYmKGEuc3RvcmVTZWxlY3Rpb24oKSxpLmRvbS5yZW1vdmUociwhMCksYS5yZXN0b3JlU2VsZWN0aW9uKCkpfSxtY2VTZWxlY3ROb2RlRGVwdGg6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPTA7aS5kb20uZ2V0UGFyZW50KGkuc2VsZWN0aW9uLmdldE5vZGUoKSxmdW5jdGlvbihlKXtpZigxPT09ZS5ub2RlVHlwZSYmcisrPT09bilyZXR1cm4gaS5zZWxlY3Rpb24uc2VsZWN0KGUpLCExfSxpLmdldEJvZHkoKSl9LG1jZVNlbGVjdE5vZGU6ZnVuY3Rpb24oZSx0LG4pe2kuc2VsZWN0aW9uLnNlbGVjdChuKX0sbWNlSW5zZXJ0Q29udGVudDpmdW5jdGlvbihlLHQsbil7eVMoaSxuKX0sbWNlSW5zZXJ0UmF3SFRNTDpmdW5jdGlvbihlLHQsbil7aS5zZWxlY3Rpb24uc2V0Q29udGVudCgidGlueV9tY2VfbWFya2VyIik7dmFyIHI9aS5nZXRDb250ZW50KCk7aS5zZXRDb250ZW50KHIucmVwbGFjZSgvdGlueV9tY2VfbWFya2VyL2csZnVuY3Rpb24oKXtyZXR1cm4gbn0pKX0sbWNlSW5zZXJ0TmV3TGluZTpmdW5jdGlvbihlLHQsbil7bngoaSxuKX0sbWNlVG9nZ2xlRm9ybWF0OmZ1bmN0aW9uKGUsdCxuKXthLnRvZ2dsZUZvcm1hdChuKX0sbWNlU2V0Q29udGVudDpmdW5jdGlvbihlLHQsbil7aS5zZXRDb250ZW50KG4pfSwiSW5kZW50LE91dGRlbnQiOmZ1bmN0aW9uKGUpe3V3KGksZSl9LG1jZVJlcGFpbnQ6ZnVuY3Rpb24oKXt9LEluc2VydEhvcml6b250YWxSdWxlOmZ1bmN0aW9uKCl7aS5leGVjQ29tbWFuZCgibWNlSW5zZXJ0Q29udGVudCIsITEsIjxociAvPiIpfSxtY2VUb2dnbGVWaXN1YWxBaWQ6ZnVuY3Rpb24oKXtpLmhhc1Zpc3VhbD0haS5oYXNWaXN1YWwsaS5hZGRWaXN1YWwoKX0sbWNlUmVwbGFjZUNvbnRlbnQ6ZnVuY3Rpb24oZSx0LG4pe2kuZXhlY0NvbW1hbmQoIm1jZUluc2VydENvbnRlbnQiLCExLG4ucmVwbGFjZSgvXHtcJHNlbGVjdGlvblx9L2csaS5zZWxlY3Rpb24uZ2V0Q29udGVudCh7Zm9ybWF0OiJ0ZXh0In0pKSl9LG1jZUluc2VydExpbms6ZnVuY3Rpb24oZSx0LG4pe3ZhciByOyJzdHJpbmciPT10eXBlb2YgbiYmKG49e2hyZWY6bn0pLHI9aS5kb20uZ2V0UGFyZW50KGkuc2VsZWN0aW9uLmdldE5vZGUoKSwiYSIpLG4uaHJlZj1uLmhyZWYucmVwbGFjZSgvIC9nLCIlMjAiKSxyJiZuLmhyZWZ8fGkuZm9ybWF0dGVyLnJlbW92ZSgibGluayIpLG4uaHJlZiYmaS5mb3JtYXR0ZXIuYXBwbHkoImxpbmsiLG4scil9LHNlbGVjdEFsbDpmdW5jdGlvbigpe3ZhciBlPWkuZG9tLmdldFBhcmVudChpLnNlbGVjdGlvbi5nZXRTdGFydCgpLG9uKTtpZihlKXt2YXIgdD1pLmRvbS5jcmVhdGVSbmcoKTt0LnNlbGVjdE5vZGVDb250ZW50cyhlKSxpLnNlbGVjdGlvbi5zZXRSbmcodCl9fSwiZGVsZXRlIjpmdW5jdGlvbigpe3ZhciBlO2h3KGU9aSl8fHFDKGUsITEpfHxXQyhlLCExKXx8R0MoZSwhMSl8fE5DKGUsITEpfHxWZChlKXx8UkMoZSl8fGV3KGUsITEpfHwoYlMoZSwiRGVsZXRlIiksZEMoZSkpfSxmb3J3YXJkRGVsZXRlOmZ1bmN0aW9uKCl7dmFyIGU7cUMoZT1pLCEwKXx8V0MoZSwhMCl8fEdDKGUsITApfHxOQyhlLCEwKXx8VmQoZSl8fFJDKGUpfHxldyhlLCEwKXx8YlMoZSwiRm9yd2FyZERlbGV0ZSIpfSxtY2VOZXdEb2N1bWVudDpmdW5jdGlvbigpe2kuc2V0Q29udGVudCgiIil9LEluc2VydExpbmVCcmVhazpmdW5jdGlvbihlLHQsbil7cmV0dXJuIEh3KGksbiksITB9fSk7dmFyIGU9ZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9aS5zZWxlY3Rpb24uaXNDb2xsYXBzZWQoKT9baS5kb20uZ2V0UGFyZW50KGkuc2VsZWN0aW9uLmdldE5vZGUoKSxpLmRvbS5pc0Jsb2NrKV06aS5zZWxlY3Rpb24uZ2V0U2VsZWN0ZWRCbG9ja3MoKSx0PU9TKGUsZnVuY3Rpb24oZSl7cmV0dXJuISFpLmZvcm1hdHRlci5tYXRjaE5vZGUoZSxuKX0pO3JldHVybi0xIT09QlModCwhMCl9fTthLmFkZENvbW1hbmRzKHtKdXN0aWZ5TGVmdDplKCJhbGlnbmxlZnQiKSxKdXN0aWZ5Q2VudGVyOmUoImFsaWduY2VudGVyIiksSnVzdGlmeVJpZ2h0OmUoImFsaWducmlnaHQiKSxKdXN0aWZ5RnVsbDplKCJhbGlnbmp1c3RpZnkiKSwiQm9sZCxJdGFsaWMsVW5kZXJsaW5lLFN0cmlrZXRocm91Z2gsU3VwZXJzY3JpcHQsU3Vic2NyaXB0IjpmdW5jdGlvbihlKXtyZXR1cm4gYS5pc0Zvcm1hdE1hdGNoKGUpfSxtY2VCbG9ja1F1b3RlOmZ1bmN0aW9uKCl7cmV0dXJuIGEuaXNGb3JtYXRNYXRjaCgiYmxvY2txdW90ZSIpfSxPdXRkZW50OmZ1bmN0aW9uKCl7cmV0dXJuIG93KGkpfSwiSW5zZXJ0VW5vcmRlcmVkTGlzdCxJbnNlcnRPcmRlcmVkTGlzdCI6ZnVuY3Rpb24oZSl7dmFyIHQ9aS5kb20uZ2V0UGFyZW50KGkuc2VsZWN0aW9uLmdldE5vZGUoKSwidWwsb2wiKTtyZXR1cm4gdCYmKCJpbnNlcnR1bm9yZGVyZWRsaXN0Ij09PWUmJiJVTCI9PT10LnRhZ05hbWV8fCJpbnNlcnRvcmRlcmVkbGlzdCI9PT1lJiYiT0wiPT09dC50YWdOYW1lKX19LCJzdGF0ZSIpLGEuYWRkQ29tbWFuZHMoe1VuZG86ZnVuY3Rpb24oKXtpLnVuZG9NYW5hZ2VyLnVuZG8oKX0sUmVkbzpmdW5jdGlvbigpe2kudW5kb01hbmFnZXIucmVkbygpfX0pLGEuYWRkUXVlcnlWYWx1ZUhhbmRsZXIoIkZvbnROYW1lIixmdW5jdGlvbigpe3JldHVybiBSUyh0PWkpLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm4gX1ModCkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBrUyh0LmdldEJvZHkoKSxlKX0pLmdldE9yKCIiKX0sZnVuY3Rpb24oZSl7cmV0dXJuIGtTKHQuZ2V0Qm9keSgpLGUpfSk7dmFyIHR9LHRoaXMpLGEuYWRkUXVlcnlWYWx1ZUhhbmRsZXIoIkZvbnRTaXplIixmdW5jdGlvbigpe3JldHVybiBSUyh0PWkpLmZvbGQoZnVuY3Rpb24oKXtyZXR1cm4gX1ModCkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBFUyh0LmdldEJvZHkoKSxlKX0pLmdldE9yKCIiKX0sZnVuY3Rpb24oZSl7cmV0dXJuIEVTKHQuZ2V0Qm9keSgpLGUpfSk7dmFyIHR9LHRoaXMpfSxMUyk7ZnVuY3Rpb24gTFMoZSl7dGhpcy5jb21tYW5kcz17c3RhdGU6e30sZXhlYzp7fSx2YWx1ZTp7fX0sdGhpcy5lZGl0b3I9ZSx0aGlzLnNldHVwQ29tbWFuZHMoZSl9dmFyIElTPWhyLm1ha2VNYXAoImZvY3VzIGJsdXIgZm9jdXNpbiBmb2N1c291dCBjbGljayBkYmxjbGljayBtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1vdmUgbW91c2VvdmVyIGJlZm9yZXBhc3RlIHBhc3RlIGN1dCBjb3B5IHNlbGVjdGlvbmNoYW5nZSBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgd2hlZWwga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBpbnB1dCBiZWZvcmVpbnB1dCBjb250ZXh0bWVudSBkcmFnc3RhcnQgZHJhZ2VuZCBkcmFnb3ZlciBkcmFnZ2VzdHVyZSBkcmFnZHJvcCBkcm9wIGRyYWcgc3VibWl0IGNvbXBvc2l0aW9uc3RhcnQgY29tcG9zaXRpb25lbmQgY29tcG9zaXRpb251cGRhdGUgdG91Y2hzdGFydCB0b3VjaG1vdmUgdG91Y2hlbmQgdG91Y2hjYW5jZWwiLCIgIiksTVM9KEZTLmlzTmF0aXZlPWZ1bmN0aW9uKGUpe3JldHVybiEhSVNbZS50b0xvd2VyQ2FzZSgpXX0sRlMucHJvdG90eXBlLmZpcmU9ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG8saTtpZihlPWUudG9Mb3dlckNhc2UoKSwodD10fHx7fSkudHlwZT1lLHQudGFyZ2V0fHwodC50YXJnZXQ9dGhpcy5zY29wZSksdC5wcmV2ZW50RGVmYXVsdHx8KHQucHJldmVudERlZmF1bHQ9ZnVuY3Rpb24oKXt0LmlzRGVmYXVsdFByZXZlbnRlZD1ofSx0LnN0b3BQcm9wYWdhdGlvbj1mdW5jdGlvbigpe3QuaXNQcm9wYWdhdGlvblN0b3BwZWQ9aH0sdC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb249ZnVuY3Rpb24oKXt0LmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkPWh9LHQuaXNEZWZhdWx0UHJldmVudGVkPWcsdC5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1nLHQuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9ZyksdGhpcy5zZXR0aW5ncy5iZWZvcmVGaXJlJiZ0aGlzLnNldHRpbmdzLmJlZm9yZUZpcmUodCksbj10aGlzLmJpbmRpbmdzW2VdKWZvcihyPTAsbz1uLmxlbmd0aDtyPG87cisrKXtpZigoaT1uW3JdKS5vbmNlJiZ0aGlzLm9mZihlLGkuZnVuYyksdC5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpKXJldHVybiB0LnN0b3BQcm9wYWdhdGlvbigpLHQ7aWYoITE9PT1pLmZ1bmMuY2FsbCh0aGlzLnNjb3BlLHQpKXJldHVybiB0LnByZXZlbnREZWZhdWx0KCksdH1yZXR1cm4gdH0sRlMucHJvdG90eXBlLm9uPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvLGksYTtpZighMT09PXQmJih0PWcpLHQpe3ZhciB1PXtmdW5jOnR9O2ZvcihyJiZoci5leHRlbmQodSxyKSxhPShpPWUudG9Mb3dlckNhc2UoKS5zcGxpdCgiICIpKS5sZW5ndGg7YS0tOyllPWlbYV0sKG89dGhpcy5iaW5kaW5nc1tlXSl8fChvPXRoaXMuYmluZGluZ3NbZV09W10sdGhpcy50b2dnbGVFdmVudChlLCEwKSksbj9vLnVuc2hpZnQodSk6by5wdXNoKHUpfXJldHVybiB0aGlzfSxGUy5wcm90b3R5cGUub2ZmPWZ1bmN0aW9uKGUsdCl7dmFyIG4scixvLGksYT10aGlzO2lmKGUpZm9yKG49KG89ZS50b0xvd2VyQ2FzZSgpLnNwbGl0KCIgIikpLmxlbmd0aDtuLS07KXtpZihlPW9bbl0scj10aGlzLmJpbmRpbmdzW2VdLCFlKXJldHVybiBvZSh0aGlzLmJpbmRpbmdzLGZ1bmN0aW9uKGUsdCl7YS50b2dnbGVFdmVudCh0LCExKSxkZWxldGUgYS5iaW5kaW5nc1t0XX0pLHRoaXM7aWYocil7aWYodClmb3IoaT1yLmxlbmd0aDtpLS07KXJbaV0uZnVuYz09PXQmJihyPXIuc2xpY2UoMCxpKS5jb25jYXQoci5zbGljZShpKzEpKSx0aGlzLmJpbmRpbmdzW2VdPXIpO2Vsc2Ugci5sZW5ndGg9MDtyLmxlbmd0aHx8KHRoaXMudG9nZ2xlRXZlbnQoZSwhMSksZGVsZXRlIHRoaXMuYmluZGluZ3NbZV0pfX1lbHNlIG9lKHRoaXMuYmluZGluZ3MsZnVuY3Rpb24oZSx0KXthLnRvZ2dsZUV2ZW50KHQsITEpfSksdGhpcy5iaW5kaW5ncz17fTtyZXR1cm4gdGhpc30sRlMucHJvdG90eXBlLm9uY2U9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0aGlzLm9uKGUsdCxuLHtvbmNlOiEwfSl9LEZTLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9ZS50b0xvd2VyQ2FzZSgpLCEoIXRoaXMuYmluZGluZ3NbZV18fDA9PT10aGlzLmJpbmRpbmdzW2VdLmxlbmd0aCl9LEZTKTtmdW5jdGlvbiBGUyhlKXt0aGlzLmJpbmRpbmdzPXt9LHRoaXMuc2V0dGluZ3M9ZXx8e30sdGhpcy5zY29wZT10aGlzLnNldHRpbmdzLnNjb3BlfHx0aGlzLHRoaXMudG9nZ2xlRXZlbnQ9dGhpcy5zZXR0aW5ncy50b2dnbGVFdmVudHx8Z312YXIgVVMselM9ZnVuY3Rpb24obil7cmV0dXJuIG4uX2V2ZW50RGlzcGF0Y2hlcnx8KG4uX2V2ZW50RGlzcGF0Y2hlcj1uZXcgTVMoe3Njb3BlOm4sdG9nZ2xlRXZlbnQ6ZnVuY3Rpb24oZSx0KXtNUy5pc05hdGl2ZShlKSYmbi50b2dnbGVOYXRpdmVFdmVudCYmbi50b2dnbGVOYXRpdmVFdmVudChlLHQpfX0pKSxuLl9ldmVudERpc3BhdGNoZXJ9LGpTPXtmaXJlOmZ1bmN0aW9uKGUsdCxuKXtpZih0aGlzLnJlbW92ZWQmJiJyZW1vdmUiIT09ZSYmImRldGFjaCIhPT1lKXJldHVybiB0O3ZhciByPXpTKHRoaXMpLmZpcmUoZSx0KTtpZighMSE9PW4mJnRoaXMucGFyZW50KWZvcih2YXIgbz10aGlzLnBhcmVudCgpO28mJiFyLmlzUHJvcGFnYXRpb25TdG9wcGVkKCk7KW8uZmlyZShlLHIsITEpLG89by5wYXJlbnQoKTtyZXR1cm4gcn0sb246ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB6Uyh0aGlzKS5vbihlLHQsbil9LG9mZjpmdW5jdGlvbihlLHQpe3JldHVybiB6Uyh0aGlzKS5vZmYoZSx0KX0sb25jZTpmdW5jdGlvbihlLHQpe3JldHVybiB6Uyh0aGlzKS5vbmNlKGUsdCl9LGhhc0V2ZW50TGlzdGVuZXJzOmZ1bmN0aW9uKGUpe3JldHVybiB6Uyh0aGlzKS5oYXMoZSl9fSxIUz0iZGF0YS1tY2UtY29udGVudGVkaXRhYmxlIixWUz1mdW5jdGlvbihlLHQsbil7TWEoZSx0KSYmITE9PT1uP2Z1bmN0aW9uKGUsdCl7T2EoZSk/ZS5kb20oKS5jbGFzc0xpc3QucmVtb3ZlKHQpOlBhKGUsdCk7SWEoZSl9KGUsdCk6biYmTGEoZSx0KX0scVM9ZnVuY3Rpb24oZSx0LG4pe3RyeXtlLmdldERvYygpLmV4ZWNDb21tYW5kKHQsITEsbil9Y2F0Y2gocil7fX0sJFM9ZnVuY3Rpb24oZSx0KXtlLmRvbSgpLmNvbnRlbnRFZGl0YWJsZT10PyJ0cnVlIjoiZmFsc2UifSxXUz1mdW5jdGlvbihlLHQpe3ZhciBuLHIsbyxpPU5lLmZyb21Eb20oZS5nZXRCb2R5KCkpO1ZTKGksIm1jZS1jb250ZW50LXJlYWRvbmx5Iix0KSx0PyhlLnNlbGVjdGlvbi5jb250cm9sU2VsZWN0aW9uLmhpZGVSZXNpemVSZWN0KCksZS5fc2VsZWN0aW9uT3ZlcnJpZGVzLmhpZGVGYWtlQ2FyZXQoKSxvPWUsUi5mcm9tKG8uc2VsZWN0aW9uLmdldE5vZGUoKSkuZWFjaChmdW5jdGlvbihlKXtlLnJlbW92ZUF0dHJpYnV0ZSgiZGF0YS1tY2Utc2VsZWN0ZWQiKX0pLGUucmVhZG9ubHk9ITAsJFMoaSwhMSkseihVYShpLCcqW2NvbnRlbnRlZGl0YWJsZT0idHJ1ZSJdJyksZnVuY3Rpb24oZSl7Y24oZSxIUywidHJ1ZSIpLCRTKGUsITEpfSkpOihlLnJlYWRvbmx5PSExLCRTKGksITApLHooVWEoaSwiKlsiK0hTKyc9InRydWUiXScpLGZ1bmN0aW9uKGUpe2RuKGUsSFMpLCRTKGUsITApfSkscVMoZSwiU3R5bGVXaXRoQ1NTIiwhMSkscVMoZSwiZW5hYmxlSW5saW5lVGFibGVFZGl0aW5nIiwhMSkscVMoZSwiZW5hYmxlT2JqZWN0UmVzaXppbmciLCExKSwoUG0ocj1lKXx8Qm0ocikpJiZlLmZvY3VzKCksKG49ZSkuc2VsZWN0aW9uLnNldFJuZyhuLnNlbGVjdGlvbi5nZXRSbmcoKSksZS5ub2RlQ2hhbmdlZCgpKX0sS1M9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVhZG9ubHl9LFhTPWZ1bmN0aW9uKHQpe3QucGFyc2VyLmFkZEF0dHJpYnV0ZUZpbHRlcigiY29udGVudGVkaXRhYmxlIixmdW5jdGlvbihlKXtLUyh0KSYmeihlLGZ1bmN0aW9uKGUpe2UuYXR0cihIUyxlLmF0dHIoImNvbnRlbnRlZGl0YWJsZSIpKSxlLmF0dHIoImNvbnRlbnRlZGl0YWJsZSIsImZhbHNlIil9KX0pLHQuc2VyaWFsaXplci5hZGRBdHRyaWJ1dGVGaWx0ZXIoSFMsZnVuY3Rpb24oZSl7S1ModCkmJnooZSxmdW5jdGlvbihlKXtlLmF0dHIoImNvbnRlbnRlZGl0YWJsZSIsZS5hdHRyKEhTKSl9KX0pLHQuc2VyaWFsaXplci5hZGRUZW1wQXR0cihIUyl9LFlTPWdhLkRPTSxHUz1mdW5jdGlvbihlLHQpe3JldHVybiJzZWxlY3Rpb25jaGFuZ2UiPT09dD9lLmdldERvYygpOiFlLmlubGluZSYmL15tb3VzZXx0b3VjaHxjbGlja3xjb250ZXh0bWVudXxkcm9wfGRyYWdvdmVyfGRyYWdlbmQvLnRlc3QodCk/ZS5nZXREb2MoKS5kb2N1bWVudEVsZW1lbnQ6ZS5zZXR0aW5ncy5ldmVudF9yb290PyhlLmV2ZW50Um9vdHx8KGUuZXZlbnRSb290PVlTLnNlbGVjdChlLnNldHRpbmdzLmV2ZW50X3Jvb3QpWzBdKSxlLmV2ZW50Um9vdCk6ZS5nZXRCb2R5KCl9LEpTPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixvLGksYSx1Oyh1PWUpLmhpZGRlbnx8S1ModSk/S1MoZSkmJihyPWUsYT0obz1uKS50YXJnZXQsImNsaWNrIiE9PW8udHlwZXx8WmgubWV0YUtleVByZXNzZWQobyl8fChpPWEsbnVsbD09PXIuZG9tLmdldFBhcmVudChpLCJhIikpfHxvLnByZXZlbnREZWZhdWx0KCkpOmUuZmlyZSh0LG4pfSxRUz1mdW5jdGlvbihpLGEpe3ZhciBlLHQ7aWYoaS5kZWxlZ2F0ZXN8fChpLmRlbGVnYXRlcz17fSksIWkuZGVsZWdhdGVzW2FdJiYhaS5yZW1vdmVkKWlmKGU9R1MoaSxhKSxpLnNldHRpbmdzLmV2ZW50X3Jvb3Qpe2lmKFVTfHwoVVM9e30saS5lZGl0b3JNYW5hZ2VyLm9uKCJyZW1vdmVFZGl0b3IiLGZ1bmN0aW9uKCl7aS5lZGl0b3JNYW5hZ2VyLmFjdGl2ZUVkaXRvcnx8VVMmJihvZShVUyxmdW5jdGlvbihlLHQpe2kuZG9tLnVuYmluZChHUyhpLHQpKX0pLFVTPW51bGwpfSkpLFVTW2FdKXJldHVybjt0PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1lLnRhcmdldCxuPWkuZWRpdG9yTWFuYWdlci5nZXQoKSxyPW4ubGVuZ3RoO3ItLTspe3ZhciBvPW5bcl0uZ2V0Qm9keSgpO28hPT10JiYhWVMuaXNDaGlsZE9mKHQsbyl8fEpTKG5bcl0sYSxlKX19LFVTW2FdPXQsWVMuYmluZChlLGEsdCl9ZWxzZSB0PWZ1bmN0aW9uKGUpe0pTKGksYSxlKX0sWVMuYmluZChlLGEsdCksaS5kZWxlZ2F0ZXNbYV09dH0sWlM9cGUocGUoe30salMpLHtiaW5kUGVuZGluZ0V2ZW50RGVsZWdhdGVzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztoci5lYWNoKHQuX3BlbmRpbmdOYXRpdmVFdmVudHMsZnVuY3Rpb24oZSl7UVModCxlKX0pfSx0b2dnbGVOYXRpdmVFdmVudDpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXM7ImZvY3VzIiE9PWUmJiJibHVyIiE9PWUmJih0P24uaW5pdGlhbGl6ZWQ/UVMobixlKTpuLl9wZW5kaW5nTmF0aXZlRXZlbnRzP24uX3BlbmRpbmdOYXRpdmVFdmVudHMucHVzaChlKTpuLl9wZW5kaW5nTmF0aXZlRXZlbnRzPVtlXTpuLmluaXRpYWxpemVkJiYobi5kb20udW5iaW5kKEdTKG4sZSksZSxuLmRlbGVnYXRlc1tlXSksZGVsZXRlIG4uZGVsZWdhdGVzW2VdKSl9LHVuYmluZEFsbE5hdGl2ZUV2ZW50czpmdW5jdGlvbigpe3ZhciBuPXRoaXMsZT1uLmdldEJvZHkoKSx0PW4uZG9tO24uZGVsZWdhdGVzJiYob2Uobi5kZWxlZ2F0ZXMsZnVuY3Rpb24oZSx0KXtuLmRvbS51bmJpbmQoR1Mobix0KSx0LGUpfSksZGVsZXRlIG4uZGVsZWdhdGVzKSwhbi5pbmxpbmUmJmUmJnQmJihlLm9ubG9hZD1udWxsLHQudW5iaW5kKG4uZ2V0V2luKCkpLHQudW5iaW5kKG4uZ2V0RG9jKCkpKSx0JiYodC51bmJpbmQoZSksdC51bmJpbmQobi5nZXRDb250YWluZXIoKSkpfX0pLGVOPVsiZGVzaWduIiwicmVhZG9ubHkiXSx0Tj1mdW5jdGlvbihlLHQsbixyKXt2YXIgbyxpPW5bdC5nZXQoKV0sYT1uW3JdO3RyeXthLmFjdGl2YXRlKCl9Y2F0Y2gocEUpe3JldHVybiB2b2lkIFYuY29uc29sZS5lcnJvcigicHJvYmxlbSB3aGlsZSBhY3RpdmF0aW5nIGVkaXRvciBtb2RlICIrcisiOiIscEUpfWkuZGVhY3RpdmF0ZSgpLGkuZWRpdG9yUmVhZE9ubHkhPT1hLmVkaXRvclJlYWRPbmx5JiZXUyhlLGEuZWRpdG9yUmVhZE9ubHkpLHQuc2V0KHIpLG89cixlLmZpcmUoIlN3aXRjaE1vZGUiLHttb2RlOm99KX0sbk49ZnVuY3Rpb24odCl7dmFyIGUsbixyPXhhKCJkZXNpZ24iKSxvPXhhKHtkZXNpZ246e2FjdGl2YXRlOmYsZGVhY3RpdmF0ZTpmLGVkaXRvclJlYWRPbmx5OiExfSxyZWFkb25seTp7YWN0aXZhdGU6ZixkZWFjdGl2YXRlOmYsZWRpdG9yUmVhZE9ubHk6ITB9fSk7cmV0dXJuKGU9dCkuc2VyaWFsaXplcj9YUyhlKTplLm9uKCJQcmVJbml0IixmdW5jdGlvbigpe1hTKGUpfSksKG49dCkub24oIlNob3dDYXJldCIsZnVuY3Rpb24oZSl7S1MobikmJmUucHJldmVudERlZmF1bHQoKX0pLG4ub24oIk9iamVjdFNlbGVjdGVkIixmdW5jdGlvbihlKXtLUyhuKSYmZS5wcmV2ZW50RGVmYXVsdCgpfSkse2lzUmVhZE9ubHk6ZnVuY3Rpb24oKXtyZXR1cm4gS1ModCl9LHNldDpmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oZSx0LG4scil7aWYociE9PW4uZ2V0KCkpe2lmKCFtZSh0LHIpKXRocm93IG5ldyBFcnJvcigiRWRpdG9yIG1vZGUgJyIrcisiJyBpcyBpbnZhbGlkIik7ZS5pbml0aWFsaXplZD90TihlLG4sdCxyKTplLm9uKCJpbml0IixmdW5jdGlvbigpe3JldHVybiB0TihlLG4sdCxyKX0pfX0odCxvLmdldCgpLHIsZSl9LGdldDpmdW5jdGlvbigpe3JldHVybiByLmdldCgpfSxyZWdpc3RlcjpmdW5jdGlvbihlLHQpe28uc2V0KGZ1bmN0aW9uKGUsdCxuKXt2YXIgcjtpZihNKGVOLHQpKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IG92ZXJyaWRlIGRlZmF1bHQgbW9kZSAiK3QpO3JldHVybiBwZShwZSh7fSxlKSwoKHI9e30pW3RdPXBlKHBlKHt9LG4pLHtkZWFjdGl2YXRlOmZ1bmN0aW9uKCl7dHJ5e24uZGVhY3RpdmF0ZSgpfWNhdGNoKHBFKXtWLmNvbnNvbGUuZXJyb3IoInByb2JsZW0gd2hpbGUgZGVhY3RpdmF0aW5nIGVkaXRvciBtb2RlICIrdCsiOiIscEUpfX19KSxyKSl9KG8uZ2V0KCksZSx0KSl9fX0sck49aHIuZWFjaCxvTj1oci5leHBsb2RlLGlOPXtmMToxMTIsZjI6MTEzLGYzOjExNCxmNDoxMTUsZjU6MTE2LGY2OjExNyxmNzoxMTgsZjg6MTE5LGY5OjEyMCxmMTA6MTIxLGYxMToxMjIsZjEyOjEyM30sYU49aHIubWFrZU1hcCgiYWx0LGN0cmwsc2hpZnQsbWV0YSxhY2Nlc3MiKSx1Tj0oc04ucHJvdG90eXBlLmFkZD1mdW5jdGlvbihlLG4scixvKXt2YXIgdCxpPXRoaXM7cmV0dXJuInN0cmluZyI9PXR5cGVvZih0PXIpP3I9ZnVuY3Rpb24oKXtpLmVkaXRvci5leGVjQ29tbWFuZCh0LCExLG51bGwpfTpoci5pc0FycmF5KHQpJiYocj1mdW5jdGlvbigpe2kuZWRpdG9yLmV4ZWNDb21tYW5kKHRbMF0sdFsxXSx0WzJdKX0pLHJOKG9OKGhyLnRyaW0oZSkpLGZ1bmN0aW9uKGUpe3ZhciB0PWkuY3JlYXRlU2hvcnRjdXQoZSxuLHIsbyk7aS5zaG9ydGN1dHNbdC5pZF09dH0pLCEwfSxzTi5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuY3JlYXRlU2hvcnRjdXQoZSk7cmV0dXJuISF0aGlzLnNob3J0Y3V0c1t0LmlkXSYmKGRlbGV0ZSB0aGlzLnNob3J0Y3V0c1t0LmlkXSwhMCl9LHNOLnByb3RvdHlwZS5wYXJzZVNob3J0Y3V0PWZ1bmN0aW9uKGUpe3ZhciB0LG4scj17fTtmb3IobiBpbiByTihvTihlLnRvTG93ZXJDYXNlKCksIisiKSxmdW5jdGlvbihlKXtlIGluIGFOP3JbZV09ITA6L15bMC05XXsyLH0kLy50ZXN0KGUpP3Iua2V5Q29kZT1wYXJzZUludChlLDEwKTooci5jaGFyQ29kZT1lLmNoYXJDb2RlQXQoMCksci5rZXlDb2RlPWlOW2VdfHxlLnRvVXBwZXJDYXNlKCkuY2hhckNvZGVBdCgwKSl9KSx0PVtyLmtleUNvZGVdLGFOKXJbbl0/dC5wdXNoKG4pOnJbbl09ITE7cmV0dXJuIHIuaWQ9dC5qb2luKCIsIiksci5hY2Nlc3MmJihyLmFsdD0hMCxyci5tYWM/ci5jdHJsPSEwOnIuc2hpZnQ9ITApLHIubWV0YSYmKHJyLm1hYz9yLm1ldGE9ITA6KHIuY3RybD0hMCxyLm1ldGE9ITEpKSxyfSxzTi5wcm90b3R5cGUuY3JlYXRlU2hvcnRjdXQ9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG87cmV0dXJuKG89aHIubWFwKG9OKGUsIj4iKSx0aGlzLnBhcnNlU2hvcnRjdXQpKVtvLmxlbmd0aC0xXT1oci5leHRlbmQob1tvLmxlbmd0aC0xXSx7ZnVuYzpuLHNjb3BlOnJ8fHRoaXMuZWRpdG9yfSksaHIuZXh0ZW5kKG9bMF0se2Rlc2M6dGhpcy5lZGl0b3IudHJhbnNsYXRlKHQpLHN1YnBhdHRlcm5zOm8uc2xpY2UoMSl9KX0sc04ucHJvdG90eXBlLmhhc01vZGlmaWVyPWZ1bmN0aW9uKGUpe3JldHVybiBlLmFsdEtleXx8ZS5jdHJsS2V5fHxlLm1ldGFLZXl9LHNOLnByb3RvdHlwZS5pc0Z1bmN0aW9uS2V5PWZ1bmN0aW9uKGUpe3JldHVybiJrZXlkb3duIj09PWUudHlwZSYmMTEyPD1lLmtleUNvZGUmJmUua2V5Q29kZTw9MTIzfSxzTi5wcm90b3R5cGUubWF0Y2hTaG9ydGN1dD1mdW5jdGlvbihlLHQpe3JldHVybiEhdCYmdC5jdHJsPT09ZS5jdHJsS2V5JiZ0Lm1ldGE9PT1lLm1ldGFLZXkmJnQuYWx0PT09ZS5hbHRLZXkmJnQuc2hpZnQ9PT1lLnNoaWZ0S2V5JiYhIShlLmtleUNvZGU9PT10LmtleUNvZGV8fGUuY2hhckNvZGUmJmUuY2hhckNvZGU9PT10LmNoYXJDb2RlKSYmKGUucHJldmVudERlZmF1bHQoKSwhMCl9LHNOLnByb3RvdHlwZS5leGVjdXRlU2hvcnRjdXRBY3Rpb249ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZnVuYz9lLmZ1bmMuY2FsbChlLnNjb3BlKTpudWxsfSxzTik7ZnVuY3Rpb24gc04oZSl7dGhpcy5zaG9ydGN1dHM9e30sdGhpcy5wZW5kaW5nUGF0dGVybnM9W10sdGhpcy5lZGl0b3I9ZTt2YXIgbj10aGlzO2Uub24oImtleXVwIGtleXByZXNzIGtleWRvd24iLGZ1bmN0aW9uKHQpeyFuLmhhc01vZGlmaWVyKHQpJiYhbi5pc0Z1bmN0aW9uS2V5KHQpfHx0LmlzRGVmYXVsdFByZXZlbnRlZCgpfHwock4obi5zaG9ydGN1dHMsZnVuY3Rpb24oZSl7aWYobi5tYXRjaFNob3J0Y3V0KHQsZSkpcmV0dXJuIG4ucGVuZGluZ1BhdHRlcm5zPWUuc3VicGF0dGVybnMuc2xpY2UoMCksImtleWRvd24iPT09dC50eXBlJiZuLmV4ZWN1dGVTaG9ydGN1dEFjdGlvbihlKSwhMH0pLG4ubWF0Y2hTaG9ydGN1dCh0LG4ucGVuZGluZ1BhdHRlcm5zWzBdKSYmKDE9PT1uLnBlbmRpbmdQYXR0ZXJucy5sZW5ndGgmJiJrZXlkb3duIj09PXQudHlwZSYmbi5leGVjdXRlU2hvcnRjdXRBY3Rpb24obi5wZW5kaW5nUGF0dGVybnNbMF0pLG4ucGVuZGluZ1BhdHRlcm5zLnNoaWZ0KCkpKX0pfXZhciBjTj1mdW5jdGlvbigpe3ZhciBlLHQsbixyLG8saSxhLHUscz0odD17fSxuPXt9LHI9e30sbz17fSxpPXt9LGE9e30se2FkZEJ1dHRvbjoodT1mdW5jdGlvbihuLHIpe3JldHVybiBmdW5jdGlvbihlLHQpe3JldHVybiBuW2UudG9Mb3dlckNhc2UoKV09cGUocGUoe30sdCkse3R5cGU6cn0pfX0pKGU9e30sImJ1dHRvbiIpLGFkZEdyb3VwVG9vbGJhckJ1dHRvbjp1KGUsImdyb3VwdG9vbGJhcmJ1dHRvbiIpLGFkZFRvZ2dsZUJ1dHRvbjp1KGUsInRvZ2dsZWJ1dHRvbiIpLGFkZE1lbnVCdXR0b246dShlLCJtZW51YnV0dG9uIiksYWRkU3BsaXRCdXR0b246dShlLCJzcGxpdGJ1dHRvbiIpLGFkZE1lbnVJdGVtOnUodCwibWVudWl0ZW0iKSxhZGROZXN0ZWRNZW51SXRlbTp1KHQsIm5lc3RlZG1lbnVpdGVtIiksYWRkVG9nZ2xlTWVudUl0ZW06dSh0LCJ0b2dnbGVtZW51aXRlbSIpLGFkZEF1dG9jb21wbGV0ZXI6dShuLCJhdXRvY29tcGxldGVyIiksYWRkQ29udGV4dE1lbnU6dShvLCJjb250ZXh0bWVudSIpLGFkZENvbnRleHRUb29sYmFyOnUoaSwiY29udGV4dHRvb2xiYXIiKSxhZGRDb250ZXh0Rm9ybTp1KGksImNvbnRleHRmb3JtIiksYWRkU2lkZWJhcjp1KGEsInNpZGViYXIiKSxhZGRJY29uOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHJbZS50b0xvd2VyQ2FzZSgpXT10fSxnZXRBbGw6ZnVuY3Rpb24oKXtyZXR1cm57YnV0dG9uczplLG1lbnVJdGVtczp0LGljb25zOnIscG9wdXBzOm4sY29udGV4dE1lbnVzOm8sY29udGV4dFRvb2xiYXJzOmksc2lkZWJhcnM6YX19fSk7cmV0dXJue2FkZEF1dG9jb21wbGV0ZXI6cy5hZGRBdXRvY29tcGxldGVyLGFkZEJ1dHRvbjpzLmFkZEJ1dHRvbixhZGRDb250ZXh0Rm9ybTpzLmFkZENvbnRleHRGb3JtLGFkZENvbnRleHRNZW51OnMuYWRkQ29udGV4dE1lbnUsYWRkQ29udGV4dFRvb2xiYXI6cy5hZGRDb250ZXh0VG9vbGJhcixhZGRJY29uOnMuYWRkSWNvbixhZGRNZW51QnV0dG9uOnMuYWRkTWVudUJ1dHRvbixhZGRNZW51SXRlbTpzLmFkZE1lbnVJdGVtLGFkZE5lc3RlZE1lbnVJdGVtOnMuYWRkTmVzdGVkTWVudUl0ZW0sYWRkU2lkZWJhcjpzLmFkZFNpZGViYXIsYWRkU3BsaXRCdXR0b246cy5hZGRTcGxpdEJ1dHRvbixhZGRUb2dnbGVCdXR0b246cy5hZGRUb2dnbGVCdXR0b24sYWRkR3JvdXBUb29sYmFyQnV0dG9uOnMuYWRkR3JvdXBUb29sYmFyQnV0dG9uLGFkZFRvZ2dsZU1lbnVJdGVtOnMuYWRkVG9nZ2xlTWVudUl0ZW0sZ2V0QWxsOnMuZ2V0QWxsfX0sbE49aHIuZWFjaCxmTj1oci50cmltLGROPSJzb3VyY2UgcHJvdG9jb2wgYXV0aG9yaXR5IHVzZXJJbmZvIHVzZXIgcGFzc3dvcmQgaG9zdCBwb3J0IHJlbGF0aXZlIHBhdGggZGlyZWN0b3J5IGZpbGUgcXVlcnkgYW5jaG9yIi5zcGxpdCgiICIpLG1OPXtmdHA6MjEsaHR0cDo4MCxodHRwczo0NDMsbWFpbHRvOjI1fSxwTj0oZ04ucGFyc2VEYXRhVXJpPWZ1bmN0aW9uKGUpe3ZhciB0LG49ZGVjb2RlVVJJQ29tcG9uZW50KGUpLnNwbGl0KCIsIikscj0vZGF0YTooW147XSspLy5leGVjKG5bMF0pO3JldHVybiByJiYodD1yWzFdKSx7dHlwZTp0LGRhdGE6blsxXX19LGdOLmdldERvY3VtZW50QmFzZVVybD1mdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gdD0wIT09ZS5wcm90b2NvbC5pbmRleE9mKCJodHRwIikmJiJmaWxlOiIhPT1lLnByb3RvY29sP2UuaHJlZjplLnByb3RvY29sKyIvLyIrZS5ob3N0K2UucGF0aG5hbWUsL15bXjpdKzpcL1wvXC8/W15cL10rXC8vLnRlc3QodCkmJih0PXQucmVwbGFjZSgvW1w/I10uKiQvLCIiKS5yZXBsYWNlKC9bXC9cXF1bXlwvXSskLywiIiksL1tcL1xcXSQvLnRlc3QodCl8fCh0Kz0iLyIpKSx0fSxnTi5wcm90b3R5cGUuc2V0UGF0aD1mdW5jdGlvbihlKXt2YXIgdD0vXiguKj8pXC8/KFx3Kyk/JC8uZXhlYyhlKTt0aGlzLnBhdGg9dFswXSx0aGlzLmRpcmVjdG9yeT10WzFdLHRoaXMuZmlsZT10WzJdLHRoaXMuc291cmNlPSIiLHRoaXMuZ2V0VVJJKCl9LGdOLnByb3RvdHlwZS50b1JlbGF0aXZlPWZ1bmN0aW9uKGUpe3ZhciB0O2lmKCIuLyI9PT1lKXJldHVybiBlO3ZhciBuPW5ldyBnTihlLHtiYXNlX3VyaTp0aGlzfSk7aWYoIm1jZV9ob3N0IiE9PW4uaG9zdCYmdGhpcy5ob3N0IT09bi5ob3N0JiZuLmhvc3R8fHRoaXMucG9ydCE9PW4ucG9ydHx8dGhpcy5wcm90b2NvbCE9PW4ucHJvdG9jb2wmJiIiIT09bi5wcm90b2NvbClyZXR1cm4gbi5nZXRVUkkoKTt2YXIgcj10aGlzLmdldFVSSSgpLG89bi5nZXRVUkkoKTtyZXR1cm4gcj09PW98fCIvIj09PXIuY2hhckF0KHIubGVuZ3RoLTEpJiZyLnN1YnN0cigwLHIubGVuZ3RoLTEpPT09bz9yOih0PXRoaXMudG9SZWxQYXRoKHRoaXMucGF0aCxuLnBhdGgpLG4ucXVlcnkmJih0Kz0iPyIrbi5xdWVyeSksbi5hbmNob3ImJih0Kz0iIyIrbi5hbmNob3IpLHQpfSxnTi5wcm90b3R5cGUudG9BYnNvbHV0ZT1mdW5jdGlvbihlLHQpe3ZhciBuPW5ldyBnTihlLHtiYXNlX3VyaTp0aGlzfSk7cmV0dXJuIG4uZ2V0VVJJKHQmJnRoaXMuaXNTYW1lT3JpZ2luKG4pKX0sZ04ucHJvdG90eXBlLmlzU2FtZU9yaWdpbj1mdW5jdGlvbihlKXtpZih0aGlzLmhvc3Q9PWUuaG9zdCYmdGhpcy5wcm90b2NvbD09ZS5wcm90b2NvbCl7aWYodGhpcy5wb3J0PT1lLnBvcnQpcmV0dXJuITA7dmFyIHQ9bU5bdGhpcy5wcm90b2NvbF07aWYodCYmKHRoaXMucG9ydHx8dCk9PShlLnBvcnR8fHQpKXJldHVybiEwfXJldHVybiExfSxnTi5wcm90b3R5cGUudG9SZWxQYXRoPWZ1bmN0aW9uKGUsdCl7dmFyIG4scixvLGk9MCxhPSIiLHU9ZS5zdWJzdHJpbmcoMCxlLmxhc3RJbmRleE9mKCIvIikpLnNwbGl0KCIvIik7aWYobj10LnNwbGl0KCIvIiksdS5sZW5ndGg+PW4ubGVuZ3RoKWZvcihyPTAsbz11Lmxlbmd0aDtyPG87cisrKWlmKHI+PW4ubGVuZ3RofHx1W3JdIT09bltyXSl7aT1yKzE7YnJlYWt9aWYodS5sZW5ndGg8bi5sZW5ndGgpZm9yKHI9MCxvPW4ubGVuZ3RoO3I8bztyKyspaWYocj49dS5sZW5ndGh8fHVbcl0hPT1uW3JdKXtpPXIrMTticmVha31pZigxPT09aSlyZXR1cm4gdDtmb3Iocj0wLG89dS5sZW5ndGgtKGktMSk7cjxvO3IrKylhKz0iLi4vIjtmb3Iocj1pLTEsbz1uLmxlbmd0aDtyPG87cisrKWErPXIhPT1pLTE/Ii8iK25bcl06bltyXTtyZXR1cm4gYX0sZ04ucHJvdG90eXBlLnRvQWJzUGF0aD1mdW5jdGlvbihlLHQpe3ZhciBuLHIsbyxpPTAsYT1bXTtyPS9cLyQvLnRlc3QodCk/Ii8iOiIiO3ZhciB1PWUuc3BsaXQoIi8iKSxzPXQuc3BsaXQoIi8iKTtmb3IobE4odSxmdW5jdGlvbihlKXtlJiZhLnB1c2goZSl9KSx1PWEsbj1zLmxlbmd0aC0xLGE9W107MDw9bjtuLS0pMCE9PXNbbl0ubGVuZ3RoJiYiLiIhPT1zW25dJiYoIi4uIiE9PXNbbl0/MDxpP2ktLTphLnB1c2goc1tuXSk6aSsrKTtyZXR1cm4gMCE9PShvPShuPXUubGVuZ3RoLWkpPD0wP0ooYSkuam9pbigiLyIpOnUuc2xpY2UoMCxuKS5qb2luKCIvIikrIi8iK0ooYSkuam9pbigiLyIpKS5pbmRleE9mKCIvIikmJihvPSIvIitvKSxyJiZvLmxhc3RJbmRleE9mKCIvIikhPT1vLmxlbmd0aC0xJiYobys9ciksb30sZ04ucHJvdG90eXBlLmdldFVSST1mdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ITEpLHRoaXMuc291cmNlJiYhZXx8KHQ9IiIsZXx8KHRoaXMucHJvdG9jb2w/dCs9dGhpcy5wcm90b2NvbCsiOi8vIjp0Kz0iLy8iLHRoaXMudXNlckluZm8mJih0Kz10aGlzLnVzZXJJbmZvKyJAIiksdGhpcy5ob3N0JiYodCs9dGhpcy5ob3N0KSx0aGlzLnBvcnQmJih0Kz0iOiIrdGhpcy5wb3J0KSksdGhpcy5wYXRoJiYodCs9dGhpcy5wYXRoKSx0aGlzLnF1ZXJ5JiYodCs9Ij8iK3RoaXMucXVlcnkpLHRoaXMuYW5jaG9yJiYodCs9IiMiK3RoaXMuYW5jaG9yKSx0aGlzLnNvdXJjZT10KSx0aGlzLnNvdXJjZX0sZ04pO2Z1bmN0aW9uIGdOKGUsdCl7ZT1mTihlKSx0aGlzLnNldHRpbmdzPXR8fHt9O3ZhciBuPXRoaXMuc2V0dGluZ3MuYmFzZV91cmkscj10aGlzO2lmKC9eKFtcd1wtXSspOihbXlwvXXsyfSkvaS50ZXN0KGUpfHwvXlxzKiMvLnRlc3QoZSkpci5zb3VyY2U9ZTtlbHNle3ZhciBvPTA9PT1lLmluZGV4T2YoIi8vIik7aWYoMCE9PWUuaW5kZXhPZigiLyIpfHxvfHwoZT0obiYmbi5wcm90b2NvbHx8Imh0dHAiKSsiOi8vbWNlX2hvc3QiK2UpLCEvXltcd1wtXSo6P1wvXC8vLnRlc3QoZSkpe3ZhciBpPXRoaXMuc2V0dGluZ3MuYmFzZV91cmk/dGhpcy5zZXR0aW5ncy5iYXNlX3VyaS5wYXRoOm5ldyBnTihWLmRvY3VtZW50LmxvY2F0aW9uLmhyZWYpLmRpcmVjdG9yeTtpZih0aGlzLnNldHRpbmdzLmJhc2VfdXJpJiYiIj09dGhpcy5zZXR0aW5ncy5iYXNlX3VyaS5wcm90b2NvbCllPSIvL21jZV9ob3N0IityLnRvQWJzUGF0aChpLGUpO2Vsc2V7dmFyIGE9LyhbXiM/XSopKFsjP10/LiopLy5leGVjKGUpO2U9KG4mJm4ucHJvdG9jb2x8fCJodHRwIikrIjovL21jZV9ob3N0IityLnRvQWJzUGF0aChpLGFbMV0pK2FbMl19fWU9ZS5yZXBsYWNlKC9AQC9nLCIobWNlX2F0KSIpO3ZhciB1PS9eKD86KD8hW146QF0rOlteOkBcL10qQCkoW146XC8/Iy5dKyk6KT8oPzpcL1wvKT8oKD86KChbXjpAXC9dKik6PyhbXjpAXC9dKikpP0ApPyhbXjpcLz8jXSopKD86OihcZCopKT8pKCgoXC8oPzpbXj8jXSg/IVtePyNcL10qXC5bXj8jXC8uXSsoPzpbPyNdfCQpKSkqXC8/KT8oW14/I1wvXSopKSg/Olw/KFteI10qKSk/KD86IyguKikpPykvLmV4ZWMoZSk7bE4oZE4sZnVuY3Rpb24oZSx0KXt2YXIgbj11W3RdO249biYmbi5yZXBsYWNlKC9cKG1jZV9hdFwpL2csIkBAIikscltlXT1ufSksbiYmKHIucHJvdG9jb2x8fChyLnByb3RvY29sPW4ucHJvdG9jb2wpLHIudXNlckluZm98fChyLnVzZXJJbmZvPW4udXNlckluZm8pLHIucG9ydHx8Im1jZV9ob3N0IiE9PXIuaG9zdHx8KHIucG9ydD1uLnBvcnQpLHIuaG9zdCYmIm1jZV9ob3N0IiE9PXIuaG9zdHx8KHIuaG9zdD1uLmhvc3QpLHIuc291cmNlPSIiKSxvJiYoci5wcm90b2NvbD0iIil9fXZhciBoTj1nYS5ET00sdk49aHIuZXh0ZW5kLHlOPWhyLmVhY2gsYk49aHIucmVzb2x2ZSxDTj1yci5pZSx3Tj0oeE4ucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpeyFmdW5jdGlvbih0KXt2YXIgZT10LnNldHRpbmdzLG49dC5pZDtrYS5zZXRDb2RlKFdzKHQpKTt2YXIgcj1mdW5jdGlvbigpe2RTLnVuYmluZChWLndpbmRvdywicmVhZHkiLHIpLHQucmVuZGVyKCl9O2lmKGhvLkV2ZW50LmRvbUxvYWRlZCl7aWYodC5nZXRFbGVtZW50KCkmJnJyLmNvbnRlbnRFZGl0YWJsZSl7ZS5pbmxpbmU/dC5pbmxpbmU9ITA6KHQub3JnVmlzaWJpbGl0eT10LmdldEVsZW1lbnQoKS5zdHlsZS52aXNpYmlsaXR5LHQuZ2V0RWxlbWVudCgpLnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiIpO3ZhciBvPXQuZ2V0RWxlbWVudCgpLmZvcm18fGRTLmdldFBhcmVudChuLCJmb3JtIik7byYmKHQuZm9ybUVsZW1lbnQ9byxlLmhpZGRlbl9pbnB1dCYmIVF0KHQuZ2V0RWxlbWVudCgpKSYmKGRTLmluc2VydEFmdGVyKGRTLmNyZWF0ZSgiaW5wdXQiLHt0eXBlOiJoaWRkZW4iLG5hbWU6bn0pLG4pLHQuaGFzSGlkZGVuSW5wdXQ9ITApLHQuZm9ybUV2ZW50RGVsZWdhdGU9ZnVuY3Rpb24oZSl7dC5maXJlKGUudHlwZSxlKX0sZFMuYmluZChvLCJzdWJtaXQgcmVzZXQiLHQuZm9ybUV2ZW50RGVsZWdhdGUpLHQub24oInJlc2V0IixmdW5jdGlvbigpe3QucmVzZXRDb250ZW50KCl9KSwhZS5zdWJtaXRfcGF0Y2h8fG8uc3VibWl0Lm5vZGVUeXBlfHxvLnN1Ym1pdC5sZW5ndGh8fG8uX21jZU9sZFN1Ym1pdHx8KG8uX21jZU9sZFN1Ym1pdD1vLnN1Ym1pdCxvLnN1Ym1pdD1mdW5jdGlvbigpe3JldHVybiB0LmVkaXRvck1hbmFnZXIudHJpZ2dlclNhdmUoKSx0LnNldERpcnR5KCExKSxvLl9tY2VPbGRTdWJtaXQobyl9KSksdC53aW5kb3dNYW5hZ2VyPXJoKHQpLHQubm90aWZpY2F0aW9uTWFuYWdlcj1laCh0KSwieG1sIj09PWUuZW5jb2RpbmcmJnQub24oIkdldENvbnRlbnQiLGZ1bmN0aW9uKGUpe2Uuc2F2ZSYmKGUuY29udGVudD1kUy5lbmNvZGUoZS5jb250ZW50KSl9KSxlLmFkZF9mb3JtX3N1Ym1pdF90cmlnZ2VyJiZ0Lm9uKCJzdWJtaXQiLGZ1bmN0aW9uKCl7dC5pbml0aWFsaXplZCYmdC5zYXZlKCl9KSxlLmFkZF91bmxvYWRfdHJpZ2dlciYmKHQuX2JlZm9yZVVubG9hZD1mdW5jdGlvbigpeyF0LmluaXRpYWxpemVkfHx0LmRlc3Ryb3llZHx8dC5pc0hpZGRlbigpfHx0LnNhdmUoe2Zvcm1hdDoicmF3Iixub19ldmVudHM6ITAsc2V0X2RpcnR5OiExfSl9LHQuZWRpdG9yTWFuYWdlci5vbigiQmVmb3JlVW5sb2FkIix0Ll9iZWZvcmVVbmxvYWQpKSx0LmVkaXRvck1hbmFnZXIuYWRkKHQpLHZTKHQsdC5zdWZmaXgpfX1lbHNlIGRTLmJpbmQoVi53aW5kb3csInJlYWR5IixyKX0odGhpcyl9LHhOLnByb3RvdHlwZS5mb2N1cz1mdW5jdGlvbihlKXt2YXIgdCxuO249ZSwodD10aGlzKS5yZW1vdmVkfHwobj9JbTpMbSkodCl9LHhOLnByb3RvdHlwZS5oYXNGb2N1cz1mdW5jdGlvbigpe3JldHVybiBQbSh0aGlzKX0seE4ucHJvdG90eXBlLmV4ZWNDYWxsYmFjaz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspdFtuLTFdPWFyZ3VtZW50c1tuXTt2YXIgcixvPXRoaXMuc2V0dGluZ3NbZV07aWYobylyZXR1cm4gdGhpcy5jYWxsYmFja0xvb2t1cCYmKHI9dGhpcy5jYWxsYmFja0xvb2t1cFtlXSkmJihvPXIuZnVuYyxyPXIuc2NvcGUpLCJzdHJpbmciPT10eXBlb2YgbyYmKHI9KHI9by5yZXBsYWNlKC9cLlx3KyQvLCIiKSk/Yk4ocik6MCxvPWJOKG8pLHRoaXMuY2FsbGJhY2tMb29rdXA9dGhpcy5jYWxsYmFja0xvb2t1cHx8e30sdGhpcy5jYWxsYmFja0xvb2t1cFtlXT17ZnVuYzpvLHNjb3BlOnJ9KSxvLmFwcGx5KHJ8fHRoaXMsdCl9LHhOLnByb3RvdHlwZS50cmFuc2xhdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGthLnRyYW5zbGF0ZShlKX0seE4ucHJvdG90eXBlLmdldFBhcmFtPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gcWcodGhpcyxlLHQsbil9LHhOLnByb3RvdHlwZS5ub2RlQ2hhbmdlZD1mdW5jdGlvbihlKXt0aGlzLl9ub2RlQ2hhbmdlRGlzcGF0Y2hlci5ub2RlQ2hhbmdlZChlKX0seE4ucHJvdG90eXBlLmFkZENvbW1hbmQ9ZnVuY3Rpb24oZSx0LG4pe3RoaXMuZWRpdG9yQ29tbWFuZHMuYWRkQ29tbWFuZChlLHQsbil9LHhOLnByb3RvdHlwZS5hZGRRdWVyeVN0YXRlSGFuZGxlcj1mdW5jdGlvbihlLHQsbil7dGhpcy5lZGl0b3JDb21tYW5kcy5hZGRRdWVyeVN0YXRlSGFuZGxlcihlLHQsbil9LHhOLnByb3RvdHlwZS5hZGRRdWVyeVZhbHVlSGFuZGxlcj1mdW5jdGlvbihlLHQsbil7dGhpcy5lZGl0b3JDb21tYW5kcy5hZGRRdWVyeVZhbHVlSGFuZGxlcihlLHQsbil9LHhOLnByb3RvdHlwZS5hZGRTaG9ydGN1dD1mdW5jdGlvbihlLHQsbixyKXt0aGlzLnNob3J0Y3V0cy5hZGQoZSx0LG4scil9LHhOLnByb3RvdHlwZS5leGVjQ29tbWFuZD1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gdGhpcy5lZGl0b3JDb21tYW5kcy5leGVjQ29tbWFuZChlLHQsbixyKX0seE4ucHJvdG90eXBlLnF1ZXJ5Q29tbWFuZFN0YXRlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVkaXRvckNvbW1hbmRzLnF1ZXJ5Q29tbWFuZFN0YXRlKGUpfSx4Ti5wcm90b3R5cGUucXVlcnlDb21tYW5kVmFsdWU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWRpdG9yQ29tbWFuZHMucXVlcnlDb21tYW5kVmFsdWUoZSl9LHhOLnByb3RvdHlwZS5xdWVyeUNvbW1hbmRTdXBwb3J0ZWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWRpdG9yQ29tbWFuZHMucXVlcnlDb21tYW5kU3VwcG9ydGVkKGUpfSx4Ti5wcm90b3R5cGUuc2hvdz1mdW5jdGlvbigpe3RoaXMuaGlkZGVuJiYodGhpcy5oaWRkZW49ITEsdGhpcy5pbmxpbmU/dGhpcy5nZXRCb2R5KCkuY29udGVudEVkaXRhYmxlPSJ0cnVlIjooaE4uc2hvdyh0aGlzLmdldENvbnRhaW5lcigpKSxoTi5oaWRlKHRoaXMuaWQpKSx0aGlzLmxvYWQoKSx0aGlzLmZpcmUoInNob3ciKSl9LHhOLnByb3RvdHlwZS5oaWRlPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUuZ2V0RG9jKCk7ZS5oaWRkZW58fChDTiYmdCYmIWUuaW5saW5lJiZ0LmV4ZWNDb21tYW5kKCJTZWxlY3RBbGwiKSxlLnNhdmUoKSxlLmlubGluZT8oZS5nZXRCb2R5KCkuY29udGVudEVkaXRhYmxlPSJmYWxzZSIsZT09PWUuZWRpdG9yTWFuYWdlci5mb2N1c2VkRWRpdG9yJiYoZS5lZGl0b3JNYW5hZ2VyLmZvY3VzZWRFZGl0b3I9bnVsbCkpOihoTi5oaWRlKGUuZ2V0Q29udGFpbmVyKCkpLGhOLnNldFN0eWxlKGUuaWQsImRpc3BsYXkiLGUub3JnRGlzcGxheSkpLGUuaGlkZGVuPSEwLGUuZmlyZSgiaGlkZSIpKX0seE4ucHJvdG90eXBlLmlzSGlkZGVuPWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLmhpZGRlbn0seE4ucHJvdG90eXBlLnNldFByb2dyZXNzU3RhdGU9ZnVuY3Rpb24oZSx0KXt0aGlzLmZpcmUoIlByb2dyZXNzU3RhdGUiLHtzdGF0ZTplLHRpbWU6dH0pfSx4Ti5wcm90b3R5cGUubG9hZD1mdW5jdGlvbihlKXt2YXIgdCxuPXRoaXMuZ2V0RWxlbWVudCgpO2lmKHRoaXMucmVtb3ZlZClyZXR1cm4iIjtpZihuKXsoZT1lfHx7fSkubG9hZD0hMDt2YXIgcj1RdChuKT9uLnZhbHVlOm4uaW5uZXJIVE1MO3JldHVybiB0PXRoaXMuc2V0Q29udGVudChyLGUpLGUuZWxlbWVudD1uLGUubm9fZXZlbnRzfHx0aGlzLmZpcmUoIkxvYWRDb250ZW50IixlKSxlLmVsZW1lbnQ9bj1udWxsLHR9fSx4Ti5wcm90b3R5cGUuc2F2ZT1mdW5jdGlvbihlKXt2YXIgdCxuLHI9dGhpcyxvPXIuZ2V0RWxlbWVudCgpO2lmKG8mJnIuaW5pdGlhbGl6ZWQmJiFyLnJlbW92ZWQpcmV0dXJuKGU9ZXx8e30pLnNhdmU9ITAsZS5lbGVtZW50PW8sZS5jb250ZW50PXIuZ2V0Q29udGVudChlKSxlLm5vX2V2ZW50c3x8ci5maXJlKCJTYXZlQ29udGVudCIsZSksInJhdyI9PT1lLmZvcm1hdCYmci5maXJlKCJSYXdTYXZlQ29udGVudCIsZSksdD1lLmNvbnRlbnQsUXQobyk/by52YWx1ZT10OighZS5pc19yZW1vdmluZyYmci5pbmxpbmV8fChvLmlubmVySFRNTD10KSwobj1oTi5nZXRQYXJlbnQoci5pZCwiZm9ybSIpKSYmeU4obi5lbGVtZW50cyxmdW5jdGlvbihlKXtpZihlLm5hbWU9PT1yLmlkKXJldHVybiBlLnZhbHVlPXQsITF9KSksZS5lbGVtZW50PW89bnVsbCwhMSE9PWUuc2V0X2RpcnR5JiZyLnNldERpcnR5KCExKSx0fSx4Ti5wcm90b3R5cGUuc2V0Q29udGVudD1mdW5jdGlvbihlLHQpe3JldHVybiBTZyh0aGlzLGUsdCl9LHhOLnByb3RvdHlwZS5nZXRDb250ZW50PWZ1bmN0aW9uKGUpe3JldHVybiB4Zyh0aGlzLGUpfSx4Ti5wcm90b3R5cGUuaW5zZXJ0Q29udGVudD1mdW5jdGlvbihlLHQpe3QmJihlPXZOKHtjb250ZW50OmV9LHQpKSx0aGlzLmV4ZWNDb21tYW5kKCJtY2VJbnNlcnRDb250ZW50IiwhMSxlKX0seE4ucHJvdG90eXBlLnJlc2V0Q29udGVudD1mdW5jdGlvbihlKXtlPT09dW5kZWZpbmVkP1NnKHRoaXMsdGhpcy5zdGFydENvbnRlbnQse2Zvcm1hdDoicmF3In0pOlNnKHRoaXMsZSksdGhpcy51bmRvTWFuYWdlci5yZXNldCgpLHRoaXMuc2V0RGlydHkoITEpLHRoaXMubm9kZUNoYW5nZWQoKX0seE4ucHJvdG90eXBlLmlzRGlydHk9ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5pc05vdERpcnR5fSx4Ti5wcm90b3R5cGUuc2V0RGlydHk9ZnVuY3Rpb24oZSl7dmFyIHQ9IXRoaXMuaXNOb3REaXJ0eTt0aGlzLmlzTm90RGlydHk9IWUsZSYmZSE9PXQmJnRoaXMuZmlyZSgiZGlydHkiKX0seE4ucHJvdG90eXBlLmdldENvbnRhaW5lcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRhaW5lcnx8KHRoaXMuY29udGFpbmVyPWhOLmdldCh0aGlzLmVkaXRvckNvbnRhaW5lcnx8dGhpcy5pZCsiX3BhcmVudCIpKSx0aGlzLmNvbnRhaW5lcn0seE4ucHJvdG90eXBlLmdldENvbnRlbnRBcmVhQ29udGFpbmVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29udGVudEFyZWFDb250YWluZXJ9LHhOLnByb3RvdHlwZS5nZXRFbGVtZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGFyZ2V0RWxtfHwodGhpcy50YXJnZXRFbG09aE4uZ2V0KHRoaXMuaWQpKSx0aGlzLnRhcmdldEVsbX0seE4ucHJvdG90eXBlLmdldFdpbj1mdW5jdGlvbigpe3ZhciBlO3JldHVybiB0aGlzLmNvbnRlbnRXaW5kb3d8fChlPXRoaXMuaWZyYW1lRWxlbWVudCkmJih0aGlzLmNvbnRlbnRXaW5kb3c9ZS5jb250ZW50V2luZG93KSx0aGlzLmNvbnRlbnRXaW5kb3d9LHhOLnByb3RvdHlwZS5nZXREb2M9ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm4gdGhpcy5jb250ZW50RG9jdW1lbnR8fChlPXRoaXMuZ2V0V2luKCkpJiYodGhpcy5jb250ZW50RG9jdW1lbnQ9ZS5kb2N1bWVudCksdGhpcy5jb250ZW50RG9jdW1lbnR9LHhOLnByb3RvdHlwZS5nZXRCb2R5PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nZXREb2MoKTtyZXR1cm4gdGhpcy5ib2R5RWxlbWVudHx8KGU/ZS5ib2R5Om51bGwpfSx4Ti5wcm90b3R5cGUuY29udmVydFVSTD1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5zZXR0aW5ncztyZXR1cm4gci51cmxjb252ZXJ0ZXJfY2FsbGJhY2s/dGhpcy5leGVjQ2FsbGJhY2soInVybGNvbnZlcnRlcl9jYWxsYmFjayIsZSxuLCEwLHQpOiFyLmNvbnZlcnRfdXJsc3x8biYmIkxJTksiPT09bi5ub2RlTmFtZXx8MD09PWUuaW5kZXhPZigiZmlsZToiKXx8MD09PWUubGVuZ3RoP2U6ci5yZWxhdGl2ZV91cmxzP3RoaXMuZG9jdW1lbnRCYXNlVVJJLnRvUmVsYXRpdmUoZSk6ZT10aGlzLmRvY3VtZW50QmFzZVVSSS50b0Fic29sdXRlKGUsci5yZW1vdmVfc2NyaXB0X2hvc3QpfSx4Ti5wcm90b3R5cGUuYWRkVmlzdWFsPWZ1bmN0aW9uKGUpe3ZhciBuLHI9dGhpcyxvPXIuc2V0dGluZ3MsaT1yLmRvbTtlPWV8fHIuZ2V0Qm9keSgpLHIuaGFzVmlzdWFsPT09dW5kZWZpbmVkJiYoci5oYXNWaXN1YWw9by52aXN1YWwpLHlOKGkuc2VsZWN0KCJ0YWJsZSxhIixlKSxmdW5jdGlvbihlKXt2YXIgdDtzd2l0Y2goZS5ub2RlTmFtZSl7Y2FzZSJUQUJMRSI6cmV0dXJuIG49by52aXN1YWxfdGFibGVfY2xhc3N8fCJtY2UtaXRlbS10YWJsZSIsdm9pZCgodD1pLmdldEF0dHJpYihlLCJib3JkZXIiKSkmJiIwIiE9PXR8fCFyLmhhc1Zpc3VhbD9pLnJlbW92ZUNsYXNzKGUsbik6aS5hZGRDbGFzcyhlLG4pKTtjYXNlIkEiOnJldHVybiB2b2lkKGkuZ2V0QXR0cmliKGUsImhyZWYiKXx8KHQ9aS5nZXRBdHRyaWIoZSwibmFtZSIpfHxlLmlkLG49by52aXN1YWxfYW5jaG9yX2NsYXNzfHwibWNlLWl0ZW0tYW5jaG9yIix0JiZyLmhhc1Zpc3VhbD9pLmFkZENsYXNzKGUsbik6aS5yZW1vdmVDbGFzcyhlLG4pKSl9fSksci5maXJlKCJWaXN1YWxBaWQiLHtlbGVtZW50OmUsaGFzVmlzdWFsOnIuaGFzVmlzdWFsfSl9LHhOLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oKXtrZyh0aGlzKX0seE4ucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oZSl7X2codGhpcyxlKX0seE4ucHJvdG90eXBlLnVwbG9hZEltYWdlcz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lZGl0b3JVcGxvYWQudXBsb2FkSW1hZ2VzKGUpfSx4Ti5wcm90b3R5cGUuX3NjYW5Gb3JJbWFnZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGl0b3JVcGxvYWQuc2NhbkZvckltYWdlcygpfSx4Ti5wcm90b3R5cGUuYWRkQnV0dG9uPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJlZGl0b3IuYWRkQnV0dG9uIGhhcyBiZWVuIHJlbW92ZWQgaW4gdGlueW1jZSA1eCwgdXNlIGVkaXRvci51aS5yZWdpc3RyeS5hZGRCdXR0b24gb3IgZWRpdG9yLnVpLnJlZ2lzdHJ5LmFkZFRvZ2dsZUJ1dHRvbiBvciBlZGl0b3IudWkucmVnaXN0cnkuYWRkU3BsaXRCdXR0b24gaW5zdGVhZCIpfSx4Ti5wcm90b3R5cGUuYWRkU2lkZWJhcj1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiZWRpdG9yLmFkZFNpZGViYXIgaGFzIGJlZW4gcmVtb3ZlZCBpbiB0aW55bWNlIDV4LCB1c2UgZWRpdG9yLnVpLnJlZ2lzdHJ5LmFkZFNpZGViYXIgaW5zdGVhZCIpfSx4Ti5wcm90b3R5cGUuYWRkTWVudUl0ZW09ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoImVkaXRvci5hZGRNZW51SXRlbSBoYXMgYmVlbiByZW1vdmVkIGluIHRpbnltY2UgNXgsIHVzZSBlZGl0b3IudWkucmVnaXN0cnkuYWRkTWVudUl0ZW0gaW5zdGVhZCIpfSx4Ti5wcm90b3R5cGUuYWRkQ29udGV4dFRvb2xiYXI9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoImVkaXRvci5hZGRDb250ZXh0VG9vbGJhciBoYXMgYmVlbiByZW1vdmVkIGluIHRpbnltY2UgNXgsIHVzZSBlZGl0b3IudWkucmVnaXN0cnkuYWRkQ29udGV4dFRvb2xiYXIgaW5zdGVhZCIpfSx4Tik7ZnVuY3Rpb24geE4oZSx0LG4pe3ZhciByPXRoaXM7dGhpcy5wbHVnaW5zPXt9LHRoaXMuY29udGVudENTUz1bXSx0aGlzLmNvbnRlbnRTdHlsZXM9W10sdGhpcy5sb2FkZWRDU1M9e30sdGhpcy5pc05vdERpcnR5PSExLHRoaXMuZWRpdG9yTWFuYWdlcj1uLHRoaXMuZG9jdW1lbnRCYXNlVXJsPW4uZG9jdW1lbnRCYXNlVVJMLHZOKHRoaXMsWlMpLHRoaXMuc2V0dGluZ3M9SGcodGhpcyxlLHRoaXMuZG9jdW1lbnRCYXNlVXJsLG4uZGVmYXVsdFNldHRpbmdzLHQpLHRoaXMuc2V0dGluZ3Muc3VmZml4JiYobi5zdWZmaXg9dGhpcy5zZXR0aW5ncy5zdWZmaXgpLHRoaXMuc3VmZml4PW4uc3VmZml4LHRoaXMuc2V0dGluZ3MuYmFzZV91cmwmJm4uX3NldEJhc2VVcmwodGhpcy5zZXR0aW5ncy5iYXNlX3VybCksdGhpcy5iYXNlVXJpPW4uYmFzZVVSSSx0aGlzLnNldHRpbmdzLnJlZmVycmVyX3BvbGljeSYmKGJhLlNjcmlwdExvYWRlci5fc2V0UmVmZXJyZXJQb2xpY3kodGhpcy5zZXR0aW5ncy5yZWZlcnJlcl9wb2xpY3kpLGdhLkRPTS5zdHlsZVNoZWV0TG9hZGVyLl9zZXRSZWZlcnJlclBvbGljeSh0aGlzLnNldHRpbmdzLnJlZmVycmVyX3BvbGljeSkpLFJhLmxhbmd1YWdlTG9hZD10aGlzLnNldHRpbmdzLmxhbmd1YWdlX2xvYWQsUmEuYmFzZVVSTD1uLmJhc2VVUkwsdGhpcy5pZD1lLHRoaXMuc2V0RGlydHkoITEpLHRoaXMuZG9jdW1lbnRCYXNlVVJJPW5ldyBwTih0aGlzLnNldHRpbmdzLmRvY3VtZW50X2Jhc2VfdXJsLHtiYXNlX3VyaTp0aGlzLmJhc2VVcml9KSx0aGlzLmJhc2VVUkk9dGhpcy5iYXNlVXJpLHRoaXMuaW5saW5lPSEhdGhpcy5zZXR0aW5ncy5pbmxpbmUsdGhpcy5zaG9ydGN1dHM9bmV3IHVOKHRoaXMpLHRoaXMuZWRpdG9yQ29tbWFuZHM9bmV3IFBTKHRoaXMpLHRoaXMuc2V0dGluZ3MuY2FjaGVfc3VmZml4JiYocnIuY2FjaGVTdWZmaXg9dGhpcy5zZXR0aW5ncy5jYWNoZV9zdWZmaXgucmVwbGFjZSgvXltcP1wmXSsvLCIiKSksdGhpcy51aT17cmVnaXN0cnk6Y04oKX07dmFyIG89bk4odGhpcyk7dGhpcy5tb2RlPW8sdGhpcy5zZXRNb2RlPW8uc2V0LG4uZmlyZSgiU2V0dXBFZGl0b3IiLHtlZGl0b3I6dGhpc30pLHRoaXMuZXhlY0NhbGxiYWNrKCJzZXR1cCIsdGhpcyksdGhpcy4kPW5hLm92ZXJyaWRlRGVmYXVsdHMoZnVuY3Rpb24oKXtyZXR1cm57Y29udGV4dDpyLmlubGluZT9yLmdldEJvZHkoKTpyLmdldERvYygpLGVsZW1lbnQ6ci5nZXRCb2R5KCl9fSl9dmFyIFNOLE5OLEVOPWdhLkRPTSxrTj1oci5leHBsb2RlLF9OPWhyLmVhY2gsUk49aHIuZXh0ZW5kLFROPTAsQU49ITEsRE49W10sT049W10sQk49ZnVuY3Rpb24odCl7dmFyIG49dC50eXBlO19OKE1OLmdldCgpLGZ1bmN0aW9uKGUpe3N3aXRjaChuKXtjYXNlInNjcm9sbCI6ZS5maXJlKCJTY3JvbGxXaW5kb3ciLHQpO2JyZWFrO2Nhc2UicmVzaXplIjplLmZpcmUoIlJlc2l6ZVdpbmRvdyIsdCl9fSl9LFBOPWZ1bmN0aW9uKGUpe2UhPT1BTiYmKGU/bmEod2luZG93KS5vbigicmVzaXplIHNjcm9sbCIsQk4pOm5hKHdpbmRvdykub2ZmKCJyZXNpemUgc2Nyb2xsIixCTiksQU49ZSl9LExOPWZ1bmN0aW9uKHQpe3ZhciBlPU9OO2RlbGV0ZSBETlt0LmlkXTtmb3IodmFyIG49MDtuPEROLmxlbmd0aDtuKyspaWYoRE5bbl09PT10KXtETi5zcGxpY2UobiwxKTticmVha31yZXR1cm4gT049SChPTixmdW5jdGlvbihlKXtyZXR1cm4gdCE9PWV9KSxNTi5hY3RpdmVFZGl0b3I9PT10JiYoTU4uYWN0aXZlRWRpdG9yPTA8T04ubGVuZ3RoP09OWzBdOm51bGwpLE1OLmZvY3VzZWRFZGl0b3I9PT10JiYoTU4uZm9jdXNlZEVkaXRvcj1udWxsKSxlLmxlbmd0aCE9PU9OLmxlbmd0aH0sSU49IkNTUzFDb21wYXQiIT09Vi5kb2N1bWVudC5jb21wYXRNb2RlLE1OPXBlKHBlKHt9LGpTKSx7YmFzZVVSSTpudWxsLGJhc2VVUkw6bnVsbCxkZWZhdWx0U2V0dGluZ3M6e30sZG9jdW1lbnRCYXNlVVJMOm51bGwsc3VmZml4Om51bGwsJDpuYSxtYWpvclZlcnNpb246IjUiLG1pbm9yVmVyc2lvbjoiMy4xIixyZWxlYXNlRGF0ZToiMjAyMC0wNS0yNyIsZWRpdG9yczpETixpMThuOmthLGFjdGl2ZUVkaXRvcjpudWxsLGZvY3VzZWRFZGl0b3I6bnVsbCxzZXR0aW5nczp7fSxzZXR1cDpmdW5jdGlvbigpe3ZhciBlLHQsbj0iIjt0PXBOLmdldERvY3VtZW50QmFzZVVybChWLmRvY3VtZW50LmxvY2F0aW9uKSwvXlteOl0rOlwvXC9cLz9bXlwvXStcLy8udGVzdCh0KSYmKHQ9dC5yZXBsYWNlKC9bXD8jXS4qJC8sIiIpLnJlcGxhY2UoL1tcL1xcXVteXC9dKyQvLCIiKSwvW1wvXFxdJC8udGVzdCh0KXx8KHQrPSIvIikpO3ZhciByLG89d2luZG93LnRpbnltY2V8fHdpbmRvdy50aW55TUNFUHJlSW5pdDtpZihvKWU9by5iYXNlfHxvLmJhc2VVUkwsbj1vLnN1ZmZpeDtlbHNle2Zvcih2YXIgaT1WLmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKSxhPTA7YTxpLmxlbmd0aDthKyspe3ZhciB1O2lmKCIiIT09KHU9aVthXS5zcmN8fCIiKSl7dmFyIHM9dS5zdWJzdHJpbmcodS5sYXN0SW5kZXhPZigiLyIpKTtpZigvdGlueW1jZShcLmZ1bGx8XC5qcXVlcnl8KShcLm1pbnxcLmRldnwpXC5qcy8udGVzdCh1KSl7LTEhPT1zLmluZGV4T2YoIi5taW4iKSYmKG49Ii5taW4iKSxlPXUuc3Vic3RyaW5nKDAsdS5sYXN0SW5kZXhPZigiLyIpKTticmVha319fWlmKCFlJiZWLmRvY3VtZW50LmN1cnJlbnRTY3JpcHQpLTEhPT0odT1WLmRvY3VtZW50LmN1cnJlbnRTY3JpcHQuc3JjKS5pbmRleE9mKCIubWluIikmJihuPSIubWluIiksZT11LnN1YnN0cmluZygwLHUubGFzdEluZGV4T2YoIi8iKSl9dGhpcy5iYXNlVVJMPW5ldyBwTih0KS50b0Fic29sdXRlKGUpLHRoaXMuZG9jdW1lbnRCYXNlVVJMPXQsdGhpcy5iYXNlVVJJPW5ldyBwTih0aGlzLmJhc2VVUkwpLHRoaXMuc3VmZml4PW4sKHI9dGhpcykub24oIkFkZEVkaXRvciIsTihfbSxyKSksci5vbigiUmVtb3ZlRWRpdG9yIixOKFJtLHIpKX0sb3ZlcnJpZGVEZWZhdWx0czpmdW5jdGlvbihlKXt2YXIgdCxuOyh0PWUuYmFzZV91cmwpJiZ0aGlzLl9zZXRCYXNlVXJsKHQpLG49ZS5zdWZmaXgsZS5zdWZmaXgmJih0aGlzLnN1ZmZpeD1uKTt2YXIgcj0odGhpcy5kZWZhdWx0U2V0dGluZ3M9ZSkucGx1Z2luX2Jhc2VfdXJscztyIT09dW5kZWZpbmVkJiZvZShyLGZ1bmN0aW9uKGUsdCl7UmEuUGx1Z2luTWFuYWdlci51cmxzW3RdPWV9KX0saW5pdDpmdW5jdGlvbihyKXt2YXIgbix1LHM9dGhpczt1PWhyLm1ha2VNYXAoImFyZWEgYmFzZSBiYXNlZm9udCBiciBjb2wgZnJhbWUgaHIgaW1nIGlucHV0IGlzaW5kZXggbGluayBtZXRhIHBhcmFtIGVtYmVkIHNvdXJjZSB3YnIgdHJhY2sgY29sZ3JvdXAgb3B0aW9uIHRhYmxlIHRib2R5IHRmb290IHRoZWFkIHRyIHRoIHRkIHNjcmlwdCBub3NjcmlwdCBzdHlsZSB0ZXh0YXJlYSB2aWRlbyBhdWRpbyBpZnJhbWUgb2JqZWN0IG1lbnUiLCIgIik7dmFyIGM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5pZDtyZXR1cm4gdHx8KHQ9KHQ9ZS5uYW1lKSYmIUVOLmdldCh0KT9lLm5hbWU6RU4udW5pcXVlSWQoKSxlLnNldEF0dHJpYnV0ZSgiaWQiLHQpKSx0fSxsPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQuY29uc3RydWN0b3I9PT1SZWdFeHA/dC50ZXN0KGUuY2xhc3NOYW1lKTpFTi5oYXNDbGFzcyhlLHQpfSxmPWZ1bmN0aW9uKGUpe249ZX0sZT1mdW5jdGlvbigpe3ZhciBvLGk9MCxhPVtdLG49ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW5ldyB3TihlLHQscyk7YS5wdXNoKHIpLHIub24oImluaXQiLGZ1bmN0aW9uKCl7KytpPT09by5sZW5ndGgmJmYoYSl9KSxyLnRhcmdldEVsbT1yLnRhcmdldEVsbXx8bixyLnJlbmRlcigpfTtFTi51bmJpbmQod2luZG93LCJyZWFkeSIsZSksZnVuY3Rpb24oZSl7dmFyIHQ9cltlXTtpZih0KXQuYXBwbHkocyxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMikpfSgib25wYWdlbG9hZCIpLG89bmEudW5pcXVlKGZ1bmN0aW9uKHQpe3ZhciBlLG49W107aWYocnIuYnJvd3Nlci5pc0lFKCkmJnJyLmJyb3dzZXIudmVyc2lvbi5tYWpvcjwxMSlyZXR1cm4gY2goIlRpbnlNQ0UgZG9lcyBub3Qgc3VwcG9ydCB0aGUgYnJvd3NlciB5b3UgYXJlIHVzaW5nLiBGb3IgYSBsaXN0IG9mIHN1cHBvcnRlZCBicm93c2VycyBwbGVhc2Ugc2VlOiBodHRwczovL3d3dy50aW55bWNlLmNvbS9kb2NzL2dldC1zdGFydGVkL3N5c3RlbS1yZXF1aXJlbWVudHMvIiksW107aWYoSU4pcmV0dXJuIGNoKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSB0aGUgZWRpdG9yIGFzIHRoZSBkb2N1bWVudCBpcyBub3QgaW4gc3RhbmRhcmRzIG1vZGUuIFRpbnlNQ0UgcmVxdWlyZXMgc3RhbmRhcmRzIG1vZGUuIiksW107aWYodC50eXBlcylyZXR1cm4gX04odC50eXBlcyxmdW5jdGlvbihlKXtuPW4uY29uY2F0KEVOLnNlbGVjdChlLnNlbGVjdG9yKSl9KSxuO2lmKHQuc2VsZWN0b3IpcmV0dXJuIEVOLnNlbGVjdCh0LnNlbGVjdG9yKTtpZih0LnRhcmdldClyZXR1cm5bdC50YXJnZXRdO3N3aXRjaCh0Lm1vZGUpe2Nhc2UiZXhhY3QiOjA8KGU9dC5lbGVtZW50c3x8IiIpLmxlbmd0aCYmX04oa04oZSksZnVuY3Rpb24odCl7dmFyIGU7KGU9RU4uZ2V0KHQpKT9uLnB1c2goZSk6X04oVi5kb2N1bWVudC5mb3JtcyxmdW5jdGlvbihlKXtfTihlLmVsZW1lbnRzLGZ1bmN0aW9uKGUpe2UubmFtZT09PXQmJih0PSJtY2VfZWRpdG9yXyIrVE4rKyxFTi5zZXRBdHRyaWIoZSwiaWQiLHQpLG4ucHVzaChlKSl9KX0pfSk7YnJlYWs7Y2FzZSJ0ZXh0YXJlYXMiOmNhc2Uic3BlY2lmaWNfdGV4dGFyZWFzIjpfTihFTi5zZWxlY3QoInRleHRhcmVhIiksZnVuY3Rpb24oZSl7dC5lZGl0b3JfZGVzZWxlY3RvciYmbChlLHQuZWRpdG9yX2Rlc2VsZWN0b3IpfHx0LmVkaXRvcl9zZWxlY3RvciYmIWwoZSx0LmVkaXRvcl9zZWxlY3Rvcil8fG4ucHVzaChlKX0pfXJldHVybiBufShyKSksci50eXBlcz9fTihyLnR5cGVzLGZ1bmN0aW9uKHQpe2hyLmVhY2gobyxmdW5jdGlvbihlKXtyZXR1cm4hRU4uaXMoZSx0LnNlbGVjdG9yKXx8KG4oYyhlKSxSTih7fSxyLHQpLGUpLCExKX0pfSk6KGhyLmVhY2gobyxmdW5jdGlvbihlKXt2YXIgdDsodD1zLmdldChlLmlkKSkmJnQuaW5pdGlhbGl6ZWQmJiEodC5nZXRDb250YWluZXIoKXx8dC5nZXRCb2R5KCkpLnBhcmVudE5vZGUmJihMTih0KSx0LnVuYmluZEFsbE5hdGl2ZUV2ZW50cygpLHQuZGVzdHJveSghMCksdC5yZW1vdmVkPSEwLHQ9bnVsbCl9KSwwPT09KG89aHIuZ3JlcChvLGZ1bmN0aW9uKGUpe3JldHVybiFzLmdldChlLmlkKX0pKS5sZW5ndGg/ZihbXSk6X04obyxmdW5jdGlvbihlKXt2YXIgdDt0PWUsci5pbmxpbmUmJnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpaW4gdT9jaCgiQ291bGQgbm90IGluaXRpYWxpemUgaW5saW5lIGVkaXRvciBvbiBpbnZhbGlkIGlubGluZSB0YXJnZXQgZWxlbWVudCIsZSk6bihjKGUpLHIsZSl9KSl9O3JldHVybiBzLnNldHRpbmdzPXIsRU4uYmluZCh3aW5kb3csInJlYWR5IixlKSxuZXcgTW4oZnVuY3Rpb24odCl7bj90KG4pOmY9ZnVuY3Rpb24oZSl7dChlKX19KX0sZ2V0OmZ1bmN0aW9uKHQpe3JldHVybiAwPT09YXJndW1lbnRzLmxlbmd0aD9PTi5zbGljZSgwKTpxKHQpP0soT04sZnVuY3Rpb24oZSl7cmV0dXJuIGUuaWQ9PT10fSkuZ2V0T3IobnVsbCk6Tyh0KSYmT05bdF0/T05bdF06bnVsbH0sYWRkOmZ1bmN0aW9uKGUpe3ZhciBuPXRoaXM7cmV0dXJuIEROW2UuaWRdPT09ZXx8KG51bGw9PT1uLmdldChlLmlkKSYmKCJsZW5ndGgiIT09ZS5pZCYmKEROW2UuaWRdPWUpLEROLnB1c2goZSksT04ucHVzaChlKSksUE4oITApLG4uYWN0aXZlRWRpdG9yPWUsbi5maXJlKCJBZGRFZGl0b3IiLHtlZGl0b3I6ZX0pLFNOfHwoU049ZnVuY3Rpb24oZSl7dmFyIHQ9bi5maXJlKCJCZWZvcmVVbmxvYWQiKTtpZih0LnJldHVyblZhbHVlKXJldHVybiBlLnByZXZlbnREZWZhdWx0KCksZS5yZXR1cm5WYWx1ZT10LnJldHVyblZhbHVlLHQucmV0dXJuVmFsdWV9LHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJiZWZvcmV1bmxvYWQiLFNOKSkpLGV9LGNyZWF0ZUVkaXRvcjpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmFkZChuZXcgd04oZSx0LHRoaXMpKX0scmVtb3ZlOmZ1bmN0aW9uKGUpe3ZhciB0LG4scj10aGlzO2lmKGUpe2lmKCFxKGUpKXJldHVybiBuPWUsXyhyLmdldChuLmlkKSk/bnVsbDooTE4obikmJnIuZmlyZSgiUmVtb3ZlRWRpdG9yIix7ZWRpdG9yOm59KSwwPT09T04ubGVuZ3RoJiZ3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYmVmb3JldW5sb2FkIixTTiksbi5yZW1vdmUoKSxQTigwPE9OLmxlbmd0aCksbik7X04oRU4uc2VsZWN0KGUpLGZ1bmN0aW9uKGUpeyhuPXIuZ2V0KGUuaWQpKSYmci5yZW1vdmUobil9KX1lbHNlIGZvcih0PU9OLmxlbmd0aC0xOzA8PXQ7dC0tKXIucmVtb3ZlKE9OW3RdKX0sZXhlY0NvbW1hbmQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuZ2V0KG4pO3N3aXRjaChlKXtjYXNlIm1jZUFkZEVkaXRvciI6cmV0dXJuIHRoaXMuZ2V0KG4pfHxuZXcgd04obix0aGlzLnNldHRpbmdzLHRoaXMpLnJlbmRlcigpLCEwO2Nhc2UibWNlUmVtb3ZlRWRpdG9yIjpyZXR1cm4gciYmci5yZW1vdmUoKSwhMDtjYXNlIm1jZVRvZ2dsZUVkaXRvciI6cmV0dXJuIHI/KHIuaXNIaWRkZW4oKT9yLnNob3coKTpyLmhpZGUoKSwhMCk6KHRoaXMuZXhlY0NvbW1hbmQoIm1jZUFkZEVkaXRvciIsMCxuKSwhMCl9cmV0dXJuISF0aGlzLmFjdGl2ZUVkaXRvciYmdGhpcy5hY3RpdmVFZGl0b3IuZXhlY0NvbW1hbmQoZSx0LG4pfSx0cmlnZ2VyU2F2ZTpmdW5jdGlvbigpe19OKE9OLGZ1bmN0aW9uKGUpe2Uuc2F2ZSgpfSl9LGFkZEkxOG46ZnVuY3Rpb24oZSx0KXtrYS5hZGQoZSx0KX0sdHJhbnNsYXRlOmZ1bmN0aW9uKGUpe3JldHVybiBrYS50cmFuc2xhdGUoZSl9LHNldEFjdGl2ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmFjdGl2ZUVkaXRvcjt0aGlzLmFjdGl2ZUVkaXRvciE9PWUmJih0JiZ0LmZpcmUoImRlYWN0aXZhdGUiLHtyZWxhdGVkVGFyZ2V0OmV9KSxlLmZpcmUoImFjdGl2YXRlIix7cmVsYXRlZFRhcmdldDp0fSkpLHRoaXMuYWN0aXZlRWRpdG9yPWV9LF9zZXRCYXNlVXJsOmZ1bmN0aW9uKGUpe3RoaXMuYmFzZVVSTD1uZXcgcE4odGhpcy5kb2N1bWVudEJhc2VVUkwpLnRvQWJzb2x1dGUoZS5yZXBsYWNlKC9cLyskLywiIikpLHRoaXMuYmFzZVVSST1uZXcgcE4odGhpcy5iYXNlVVJMKX19KTtmdW5jdGlvbiBGTihuKXtyZXR1cm57d2FsazpmdW5jdGlvbihlLHQpe3JldHVybiBqbChuLGUsdCl9LHNwbGl0OlZtLG5vcm1hbGl6ZTpmdW5jdGlvbih0KXtyZXR1cm4gV2gobix0KS5mb2xkKHgoITEpLGZ1bmN0aW9uKGUpe3JldHVybiB0LnNldFN0YXJ0KGUuc3RhcnRDb250YWluZXIsZS5zdGFydE9mZnNldCksdC5zZXRFbmQoZS5lbmRDb250YWluZXIsZS5lbmRPZmZzZXQpLCEwfSl9fX1NTi5zZXR1cCgpLChOTj1GTj1GTnx8e30pLmNvbXBhcmVSYW5nZXM9VWgsTk4uZ2V0Q2FyZXRSYW5nZUZyb21Qb2ludD1CaCxOTi5nZXRTZWxlY3RlZE5vZGU9anUsTk4uZ2V0Tm9kZT1IdTt2YXIgVU4sek4sak4sSE4sVk49Rk4scU49KFVOPXt9LHpOPXt9LHtsb2FkOmZ1bmN0aW9uKHIsbyl7dmFyIGk9J1NjcmlwdCBhdCBVUkwgIicrbysnIiBmYWlsZWQgdG8gbG9hZCcsYT0nU2NyaXB0IGF0IFVSTCAiJytvKyJcIiBkaWQgbm90IGNhbGwgYHRpbnltY2UuUmVzb3VyY2UuYWRkKCciK3IrIicsIGRhdGEpYCB3aXRoaW4gMSBzZWNvbmQiO2lmKFVOW3JdIT09dW5kZWZpbmVkKXJldHVybiBVTltyXTt2YXIgZT1uZXcgTW4oZnVuY3Rpb24oZSx0KXt2YXIgbj1mdW5jdGlvbihlLHQsbil7dm9pZCAwPT09biYmKG49MWUzKTt2YXIgcj0hMSxvPW51bGwsaT1mdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIGU9W10sdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0KyspZVt0XT1hcmd1bWVudHNbdF07cnx8KHI9ITAsbnVsbCE9PW8mJihWLmNsZWFyVGltZW91dChvKSxvPW51bGwpLG4uYXBwbHkobnVsbCxlKSl9fSxhPWkoZSksdT1pKHQpO3JldHVybntzdGFydDpmdW5jdGlvbigpe2Zvcih2YXIgZT1bXSx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyllW3RdPWFyZ3VtZW50c1t0XTtyfHxudWxsIT09b3x8KG89Vi5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIHUuYXBwbHkobnVsbCxlKX0sbikpfSxyZXNvbHZlOmEscmVqZWN0OnV9fShlLHQpO3pOW3JdPW4ucmVzb2x2ZSxiYS5TY3JpcHRMb2FkZXIubG9hZFNjcmlwdChvLGZ1bmN0aW9uKCl7cmV0dXJuIG4uc3RhcnQoYSl9LGZ1bmN0aW9uKCl7cmV0dXJuIG4ucmVqZWN0KGkpfSl9KTtyZXR1cm4gVU5bcl09ZX0sYWRkOmZ1bmN0aW9uKGUsdCl7ek5bZV0hPT11bmRlZmluZWQmJih6TltlXSh0KSxkZWxldGUgek5bZV0pLFVOW2VdPU1uLnJlc29sdmUodCl9fSksJE49TWF0aC5taW4sV049TWF0aC5tYXgsS049TWF0aC5yb3VuZCxYTj1mdW5jdGlvbihlLHQsbil7dmFyIHIsbyxpLGEsdSxzO3JldHVybiByPXQueCxvPXQueSxpPWUudyxhPWUuaCx1PXQudyxzPXQuaCwiYiI9PT0obj0obnx8IiIpLnNwbGl0KCIiKSlbMF0mJihvKz1zKSwiciI9PT1uWzFdJiYocis9dSksImMiPT09blswXSYmKG8rPUtOKHMvMikpLCJjIj09PW5bMV0mJihyKz1LTih1LzIpKSwiYiI9PT1uWzNdJiYoby09YSksInIiPT09bls0XSYmKHItPWkpLCJjIj09PW5bM10mJihvLT1LTihhLzIpKSwiYyI9PT1uWzRdJiYoci09S04oaS8yKSksWU4ocixvLGksYSl9LFlOPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybnt4OmUseTp0LHc6bixoOnJ9fSxHTj17aW5mbGF0ZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIFlOKGUueC10LGUueS1uLGUudysyKnQsZS5oKzIqbil9LHJlbGF0aXZlUG9zaXRpb246WE4sZmluZEJlc3RSZWxhdGl2ZVBvc2l0aW9uOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvLGk7Zm9yKGk9MDtpPHIubGVuZ3RoO2krKylpZigobz1YTihlLHQscltpXSkpLng+PW4ueCYmby54K28udzw9bi53K24ueCYmby55Pj1uLnkmJm8ueStvLmg8PW4uaCtuLnkpcmV0dXJuIHJbaV07cmV0dXJuIG51bGx9LGludGVyc2VjdDpmdW5jdGlvbihlLHQpe3ZhciBuLHIsbyxpO3JldHVybiBuPVdOKGUueCx0LngpLHI9V04oZS55LHQueSksbz0kTihlLngrZS53LHQueCt0LncpLGk9JE4oZS55K2UuaCx0LnkrdC5oKSxvLW48MHx8aS1yPDA/bnVsbDpZTihuLHIsby1uLGktcil9LGNsYW1wOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixvLGksYSx1LHMsYyxsLGYsZDtyZXR1cm4gdT1lLngscz1lLnksYz1lLngrZS53LGw9ZS55K2UuaCxmPXQueCt0LncsZD10LnkrdC5oLHI9V04oMCx0LngtdSksbz1XTigwLHQueS1zKSxpPVdOKDAsYy1mKSxhPVdOKDAsbC1kKSx1Kz1yLHMrPW8sbiYmKGMrPXIsbCs9byx1LT1pLHMtPWEpLFlOKHUscywoYy09aSktdSwobC09YSktcyl9LGNyZWF0ZTpZTixmcm9tQ2xpZW50UmVjdDpmdW5jdGlvbihlKXtyZXR1cm4gWU4oZS5sZWZ0LGUudG9wLGUud2lkdGgsZS5oZWlnaHQpfX0sSk49aHIuZWFjaCxRTj1oci5leHRlbmQsWk49ZnVuY3Rpb24oKXt9O1pOLmV4dGVuZD1qTj1mdW5jdGlvbihuKXt2YXIgbyxpPXRoaXMucHJvdG90eXBlLHI9ZnVuY3Rpb24oKXt2YXIgZSx0LG47aWYoIUhOJiYodGhpcy5pbml0JiZ0aGlzLmluaXQuYXBwbHkodGhpcyxhcmd1bWVudHMpLHQ9dGhpcy5NaXhpbnMpKWZvcihlPXQubGVuZ3RoO2UtLTspKG49dFtlXSkuaW5pdCYmbi5pbml0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sdD1mdW5jdGlvbigpe3JldHVybiB0aGlzfTtyZXR1cm4gSE49ITAsbz1uZXcgdGhpcyxITj0hMSxuLk1peGlucyYmKEpOKG4uTWl4aW5zLGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCBpbiBlKSJpbml0IiE9PXQmJihuW3RdPWVbdF0pfSksaS5NaXhpbnMmJihuLk1peGlucz1pLk1peGlucy5jb25jYXQobi5NaXhpbnMpKSksbi5NZXRob2RzJiZKTihuLk1ldGhvZHMuc3BsaXQoIiwiKSxmdW5jdGlvbihlKXtuW2VdPXR9KSxuLlByb3BlcnRpZXMmJkpOKG4uUHJvcGVydGllcy5zcGxpdCgiLCIpLGZ1bmN0aW9uKGUpe3ZhciB0PSJfIitlO25bZV09ZnVuY3Rpb24oZSl7cmV0dXJuIGUhPT11bmRlZmluZWQ/KHRoaXNbdF09ZSx0aGlzKTp0aGlzW3RdfX0pLG4uU3RhdGljcyYmSk4obi5TdGF0aWNzLGZ1bmN0aW9uKGUsdCl7clt0XT1lfSksbi5EZWZhdWx0cyYmaS5EZWZhdWx0cyYmKG4uRGVmYXVsdHM9UU4oe30saS5EZWZhdWx0cyxuLkRlZmF1bHRzKSksb2UobixmdW5jdGlvbihlLHQpe3ZhciBuLHI7ImZ1bmN0aW9uIj09dHlwZW9mIGUmJmlbdF0/b1t0XT0obj10LHI9ZSxmdW5jdGlvbigpe3ZhciBlLHQ9dGhpcy5fc3VwZXI7cmV0dXJuIHRoaXMuX3N1cGVyPWlbbl0sZT1yLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLl9zdXBlcj10LGV9KTpvW3RdPWV9KSxyLnByb3RvdHlwZT1vLChyLmNvbnN0cnVjdG9yPXIpLmV4dGVuZD1qTixyfTt2YXIgZUU9TWF0aC5taW4sdEU9TWF0aC5tYXgsbkU9TWF0aC5yb3VuZCxyRT17c2VyaWFsaXplOmZ1bmN0aW9uKGUpe3ZhciB0PUpTT04uc3RyaW5naWZ5KGUpO3JldHVybiBxKHQpP3QucmVwbGFjZSgvW1x1MDA4MC1cdUZGRkZdL2csZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KTtyZXR1cm4iXFx1IisiMDAwMCIuc3Vic3RyaW5nKHQubGVuZ3RoKSt0fSk6dH0scGFyc2U6ZnVuY3Rpb24oZSl7dHJ5e3JldHVybiBKU09OLnBhcnNlKGUpfWNhdGNoKHQpe319fSxvRT17Y2FsbGJhY2tzOnt9LGNvdW50OjAsc2VuZDpmdW5jdGlvbih0KXt2YXIgbj10aGlzLHI9Z2EuRE9NLG89dC5jb3VudCE9PXVuZGVmaW5lZD90LmNvdW50Om4uY291bnQsaT0idGlueW1jZV9qc29ucF8iK287bi5jYWxsYmFja3Nbb109ZnVuY3Rpb24oZSl7ci5yZW1vdmUoaSksZGVsZXRlIG4uY2FsbGJhY2tzW29dLHQuY2FsbGJhY2soZSl9LHIuYWRkKHIuZG9jLmJvZHksInNjcmlwdCIse2lkOmksc3JjOnQudXJsLHR5cGU6InRleHQvamF2YXNjcmlwdCJ9KSxuLmNvdW50Kyt9fSxpRT1wZShwZSh7fSxqUykse3NlbmQ6ZnVuY3Rpb24oZSl7dmFyIHQsbj0wLHI9ZnVuY3Rpb24oKXshZS5hc3luY3x8ND09PXQucmVhZHlTdGF0ZXx8MWU0PG4rKz8oZS5zdWNjZXNzJiZuPDFlNCYmMjAwPT09dC5zdGF0dXM/ZS5zdWNjZXNzLmNhbGwoZS5zdWNjZXNzX3Njb3BlLCIiK3QucmVzcG9uc2VUZXh0LHQsZSk6ZS5lcnJvciYmZS5lcnJvci5jYWxsKGUuZXJyb3Jfc2NvcGUsMWU0PG4/IlRJTUVEX09VVCI6IkdFTkVSQUwiLHQsZSksdD1udWxsKTpYbi5zZXRUaW1lb3V0KHIsMTApfTtpZihlLnNjb3BlPWUuc2NvcGV8fHRoaXMsZS5zdWNjZXNzX3Njb3BlPWUuc3VjY2Vzc19zY29wZXx8ZS5zY29wZSxlLmVycm9yX3Njb3BlPWUuZXJyb3Jfc2NvcGV8fGUuc2NvcGUsZS5hc3luYz0hMSE9PWUuYXN5bmMsZS5kYXRhPWUuZGF0YXx8IiIsaUUuZmlyZSgiYmVmb3JlSW5pdGlhbGl6ZSIse3NldHRpbmdzOmV9KSx0PW5ldyBWLlhNTEh0dHBSZXF1ZXN0KXtpZih0Lm92ZXJyaWRlTWltZVR5cGUmJnQub3ZlcnJpZGVNaW1lVHlwZShlLmNvbnRlbnRfdHlwZSksdC5vcGVuKGUudHlwZXx8KGUuZGF0YT8iUE9TVCI6IkdFVCIpLGUudXJsLGUuYXN5bmMpLGUuY3Jvc3NEb21haW4mJih0LndpdGhDcmVkZW50aWFscz0hMCksZS5jb250ZW50X3R5cGUmJnQuc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIixlLmNvbnRlbnRfdHlwZSksZS5yZXF1ZXN0aGVhZGVycyYmaHIuZWFjaChlLnJlcXVlc3RoZWFkZXJzLGZ1bmN0aW9uKGUpe3Quc2V0UmVxdWVzdEhlYWRlcihlLmtleSxlLnZhbHVlKX0pLHQuc2V0UmVxdWVzdEhlYWRlcigiWC1SZXF1ZXN0ZWQtV2l0aCIsIlhNTEh0dHBSZXF1ZXN0IiksKHQ9aUUuZmlyZSgiYmVmb3JlU2VuZCIse3hocjp0LHNldHRpbmdzOmV9KS54aHIpLnNlbmQoZS5kYXRhKSwhZS5hc3luYylyZXR1cm4gcigpO1huLnNldFRpbWVvdXQociwxMCl9fX0pLGFFPWhyLmV4dGVuZCx1RT0oc0Uuc2VuZFJQQz1mdW5jdGlvbihlKXtyZXR1cm4obmV3IHNFKS5zZW5kKGUpfSxzRS5wcm90b3R5cGUuc2VuZD1mdW5jdGlvbihlKXt2YXIgbj1lLmVycm9yLHI9ZS5zdWNjZXNzLG89YUUodGhpcy5zZXR0aW5ncyxlKTtvLnN1Y2Nlc3M9ZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT0oZT1yRS5wYXJzZShlKSkmJihlPXtlcnJvcjoiSlNPTiBQYXJzZSBlcnJvci4ifSksZS5lcnJvcj9uLmNhbGwoby5lcnJvcl9zY29wZXx8by5zY29wZSxlLmVycm9yLHQpOnIuY2FsbChvLnN1Y2Nlc3Nfc2NvcGV8fG8uc2NvcGUsZS5yZXN1bHQpfSxvLmVycm9yPWZ1bmN0aW9uKGUsdCl7biYmbi5jYWxsKG8uZXJyb3Jfc2NvcGV8fG8uc2NvcGUsZSx0KX0sby5kYXRhPXJFLnNlcmlhbGl6ZSh7aWQ6ZS5pZHx8ImMiK3RoaXMuY291bnQrKyxtZXRob2Q6ZS5tZXRob2QscGFyYW1zOmUucGFyYW1zfSksby5jb250ZW50X3R5cGU9ImFwcGxpY2F0aW9uL2pzb24iLGlFLnNlbmQobyl9LHNFKTtmdW5jdGlvbiBzRShlKXt0aGlzLnNldHRpbmdzPWFFKHt9LGUpLHRoaXMuY291bnQ9MH12YXIgY0U7dHJ5e3ZhciBsRT0iX19zdG9yYWdlX3Rlc3RfXyI7KGNFPVYud2luZG93LmxvY2FsU3RvcmFnZSkuc2V0SXRlbShsRSxsRSksY0UucmVtb3ZlSXRlbShsRSl9Y2F0Y2gocEUpe2NFPWZ1bmN0aW9uKCl7cmV0dXJuIG49e30scj1bXSxlPXtnZXRJdGVtOmZ1bmN0aW9uKGUpe3ZhciB0PW5bZV07cmV0dXJuIHR8fG51bGx9LHNldEl0ZW06ZnVuY3Rpb24oZSx0KXtyLnB1c2goZSksbltlXT1TdHJpbmcodCl9LGtleTpmdW5jdGlvbihlKXtyZXR1cm4gcltlXX0scmVtb3ZlSXRlbTpmdW5jdGlvbih0KXtyPXIuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlPT09dH0pLGRlbGV0ZSBuW3RdfSxjbGVhcjpmdW5jdGlvbigpe3I9W10sbj17fX0sbGVuZ3RoOjB9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJsZW5ndGgiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gci5sZW5ndGh9LGNvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiExfSksZTt2YXIgbixyLGV9KCl9dmFyIGZFLGRFPXtnZW9tOntSZWN0OkdOfSx1dGlsOntQcm9taXNlOk1uLERlbGF5OlhuLFRvb2xzOmhyLFZLOlpoLFVSSTpwTixDbGFzczpaTixFdmVudERpc3BhdGNoZXI6TVMsT2JzZXJ2YWJsZTpqUyxJMThuOmthLFhIUjppRSxKU09OOnJFLEpTT05SZXF1ZXN0OnVFLEpTT05QOm9FLExvY2FsU3RvcmFnZTpjRSxDb2xvcjpmdW5jdGlvbihlKXt2YXIgbj17fSx1PTAscz0wLGM9MCx0PWZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiJvYmplY3QiPT10eXBlb2YgZT8iciJpbiBlPyh1PWUucixzPWUuZyxjPWUuYik6InYiaW4gZSYmZnVuY3Rpb24oZSx0LG4pe3ZhciByLG8saSxhO2lmKGU9KHBhcnNlSW50KGUsMTApfHwwKSUzNjAsdD1wYXJzZUludCh0LDEwKS8xMDAsbj1wYXJzZUludChuLDEwKS8xMDAsdD10RSgwLGVFKHQsMSkpLG49dEUoMCxlRShuLDEpKSwwIT09dCl7c3dpdGNoKHI9ZS82MCxpPShvPW4qdCkqKDEtTWF0aC5hYnMociUyLTEpKSxhPW4tbyxNYXRoLmZsb29yKHIpKXtjYXNlIDA6dT1vLHM9aSxjPTA7YnJlYWs7Y2FzZSAxOnU9aSxzPW8sYz0wO2JyZWFrO2Nhc2UgMjp1PTAscz1vLGM9aTticmVhaztjYXNlIDM6dT0wLHM9aSxjPW87YnJlYWs7Y2FzZSA0OnU9aSxzPTAsYz1vO2JyZWFrO2Nhc2UgNTp1PW8scz0wLGM9aTticmVhaztkZWZhdWx0OnU9cz1jPTB9dT1uRSgyNTUqKHUrYSkpLHM9bkUoMjU1KihzK2EpKSxjPW5FKDI1NSooYythKSl9ZWxzZSB1PXM9Yz1uRSgyNTUqbil9KGUuaCxlLnMsZS52KToodD0vcmdiXHMqXChccyooWzAtOV0rKVxzKixccyooWzAtOV0rKVxzKixccyooWzAtOV0rKVteXCldKlwpL2dpLmV4ZWMoZSkpPyh1PXBhcnNlSW50KHRbMV0sMTApLHM9cGFyc2VJbnQodFsyXSwxMCksYz1wYXJzZUludCh0WzNdLDEwKSk6KHQ9LyMoWzAtRl17Mn0pKFswLUZdezJ9KShbMC1GXXsyfSkvZ2kuZXhlYyhlKSk/KHU9cGFyc2VJbnQodFsxXSwxNikscz1wYXJzZUludCh0WzJdLDE2KSxjPXBhcnNlSW50KHRbM10sMTYpKToodD0vIyhbMC1GXSkoWzAtRl0pKFswLUZdKS9naS5leGVjKGUpKSYmKHU9cGFyc2VJbnQodFsxXSt0WzFdLDE2KSxzPXBhcnNlSW50KHRbMl0rdFsyXSwxNiksYz1wYXJzZUludCh0WzNdK3RbM10sMTYpKSx1PXU8MD8wOjI1NTx1PzI1NTp1LHM9czwwPzA6MjU1PHM/MjU1OnMsYz1jPDA/MDoyNTU8Yz8yNTU6YyxufTtyZXR1cm4gZSYmdChlKSxuLnRvUmdiPWZ1bmN0aW9uKCl7cmV0dXJue3I6dSxnOnMsYjpjfX0sbi50b0hzdj1mdW5jdGlvbigpe3JldHVybiBlPXUsdD1zLG49YyxvPTAsKGk9ZUUoZS89MjU1LGVFKHQvPTI1NSxuLz0yNTUpKSk9PT0oYT10RShlLHRFKHQsbikpKT97aDowLHM6MCx2OjEwMCoobz1pKX06KHI9KGEtaSkvYSx7aDpuRSg2MCooKGU9PT1pPzM6bj09PWk/MTo1KS0oZT09PWk/dC1uOm49PT1pP2UtdDpuLWUpLygobz1hKS1pKSkpLHM6bkUoMTAwKnIpLHY6bkUoMTAwKm8pfSk7dmFyIGUsdCxuLHIsbyxpLGF9LG4udG9IZXg9ZnVuY3Rpb24oKXt2YXIgZT1mdW5jdGlvbihlKXtyZXR1cm4gMTwoZT1wYXJzZUludChlLDEwKS50b1N0cmluZygxNikpLmxlbmd0aD9lOiIwIitlfTtyZXR1cm4iIyIrZSh1KStlKHMpK2UoYyl9LG4ucGFyc2U9dCxufX0sZG9tOntFdmVudFV0aWxzOmhvLFNpenpsZTpoaSxEb21RdWVyeTpuYSxUcmVlV2Fsa2VyOnJhLFRleHRTZWVrZXI6dXUsRE9NVXRpbHM6Z2EsU2NyaXB0TG9hZGVyOmJhLFJhbmdlVXRpbHM6Vk4sU2VyaWFsaXplcjpBdixDb250cm9sU2VsZWN0aW9uOm52LEJvb2ttYXJrTWFuYWdlcjpKaCxTZWxlY3Rpb246YXYsRXZlbnQ6aG8uRXZlbnR9LGh0bWw6e1N0eWxlczphbyxFbnRpdGllczokcixOb2RlOmRmLFNjaGVtYTpubyxTYXhQYXJzZXI6a2YsRG9tUGFyc2VyOkV2LFdyaXRlcjpnZixTZXJpYWxpemVyOmhmfSxFbnY6cnIsQWRkT25NYW5hZ2VyOlJhLEFubm90YXRvcjphZixGb3JtYXR0ZXI6V3YsVW5kb01hbmFnZXI6WHYsRWRpdG9yQ29tbWFuZHM6UFMsV2luZG93TWFuYWdlcjpyaCxOb3RpZmljYXRpb25NYW5hZ2VyOmVoLEVkaXRvck9ic2VydmFibGU6WlMsU2hvcnRjdXRzOnVOLEVkaXRvcjp3TixGb2N1c01hbmFnZXI6eG0sRWRpdG9yTWFuYWdlcjpNTixET006Z2EuRE9NLFNjcmlwdExvYWRlcjpiYS5TY3JpcHRMb2FkZXIsUGx1Z2luTWFuYWdlcjpSYS5QbHVnaW5NYW5hZ2VyLFRoZW1lTWFuYWdlcjpSYS5UaGVtZU1hbmFnZXIsSWNvbk1hbmFnZXI6JGcsUmVzb3VyY2U6cU4sdHJpbTpoci50cmltLGlzQXJyYXk6aHIuaXNBcnJheSxpczpoci5pcyx0b0FycmF5OmhyLnRvQXJyYXksbWFrZU1hcDpoci5tYWtlTWFwLGVhY2g6aHIuZWFjaCxtYXA6aHIubWFwLGdyZXA6aHIuZ3JlcCxpbkFycmF5OmhyLmluQXJyYXksZXh0ZW5kOmhyLmV4dGVuZCxjcmVhdGU6aHIuY3JlYXRlLHdhbGs6aHIud2FsayxjcmVhdGVOUzpoci5jcmVhdGVOUyxyZXNvbHZlOmhyLnJlc29sdmUsZXhwbG9kZTpoci5leHBsb2RlLF9hZGRDYWNoZVN1ZmZpeDpoci5fYWRkQ2FjaGVTdWZmaXgsaXNPcGVyYTpyci5vcGVyYSxpc1dlYktpdDpyci53ZWJraXQsaXNJRTpyci5pZSxpc0dlY2tvOnJyLmdlY2tvLGlzTWFjOnJyLm1hY30sbUU9aHIuZXh0ZW5kKE1OLGRFKTtmRT1tRSx3aW5kb3cudGlueW1jZT1mRSx3aW5kb3cudGlueU1DRT1mRSxmdW5jdGlvbihlKXtpZigib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSl0cnl7bW9kdWxlLmV4cG9ydHM9ZX1jYXRjaCh0KXt9fShtRSl9KHdpbmRvdyk7]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce_external_plugins/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce_external_plugins/cmsms_linker/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/js/tinymce_external_plugins/cmsms_linker/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce_external_plugins/cmsms_linker/plugin.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[dGlueW1jZS5QbHVnaW5NYW5hZ2VyLmFkZCgnY21zbXNfbGlua2VyJywgZnVuY3Rpb24oZWRpdG9yLCB1cmwpIHsNCiAgICBmdW5jdGlvbiBjbXNtc19zaG93RGlhbG9nKCkgew0KICAgICAgICANCiAgICAgICAgdmFyIGRhdGEgPSB7fSwgDQogICAgICAgICAgICBzZWxlY3Rpb24gPSBlZGl0b3Iuc2VsZWN0aW9uLCANCiAgICAgICAgICAgIGRvbSA9IGVkaXRvci5kb20sDQogICAgICAgICAgICBzZWxlY3RlZEVsbSwgDQogICAgICAgICAgICBhbmNob3JFbG0sIA0KICAgICAgICAgICAgaW5pdGlhbFRleHQsDQogICAgICAgICAgICB3aW4sDQogICAgICAgICAgICBwYWdlRmllbGQsDQogICAgICAgICAgICBhbGlhc0ZpZWxkLA0KICAgICAgICAgICAgdGV4dEZpZWxkLA0KICAgICAgICAgICAgdGFyZ2V0T3B0aW9ucywNCiAgICAgICAgICAgIGNsYXNzbmFtZUZpZWxkLA0KICAgICAgICAgICAgcmVsRmllbGQsDQogICAgICAgICAgICByOw0KICAgICAgICANCiAgICAgICAgLy8gYnVpbGQgdGFyZ2V0IGF0dHJpYnV0ZSBkcm9wZG93bg0KICAgICAgICBmdW5jdGlvbiBidWlsZFRhcmdldExpc3QodGFyZ2V0VmFsdWUpIHsNCiAgICAgICAgICAgIHZhciB0YXJnZXRMaXN0SXRlbXMgPSBbew0KICAgICAgICAgICAgICAgIHRleHQ6IGNtc21zX3RpbnkudGFyZ2V0X25vbmUsIA0KICAgICAgICAgICAgICAgIHZhbHVlOiAnJw0KICAgICAgICAgICAgfV07DQogICAgICAgICAgICANCiAgICAgICAgICAgIGlmICghZWRpdG9yLnNldHRpbmdzLnRhcmdldF9saXN0KSB7DQogICAgICAgICAgICAgICAgdGFyZ2V0TGlzdEl0ZW1zLnB1c2goew0KICAgICAgICAgICAgICAgICAgICB0ZXh0OiBjbXNtc190aW55LnRhcmdldF9uZXdfd2luZG93LCANCiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICdfYmxhbmsnDQogICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICANCiAgICAgICAgICAgIHRpbnltY2UuZWFjaChlZGl0b3Iuc2V0dGluZ3MudGFyZ2V0X2xpc3QsIGZ1bmN0aW9uKHRhcmdldCkgew0KICAgICAgICAgICAgICAgIHRhcmdldExpc3RJdGVtcy5wdXNoKHsNCiAgICAgICAgICAgICAgICAgICAgdGV4dDogdGFyZ2V0LnRleHQgfHwgdGFyZ2V0LnRpdGxlLA0KICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdGFyZ2V0LnZhbHVlLA0KICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDogdGFyZ2V0VmFsdWUgPT09IHRhcmdldC52YWx1ZQ0KICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgfSk7DQogICAgICAgICAgICANCiAgICAgICAgICAgIHJldHVybiB0YXJnZXRMaXN0SXRlbXM7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC8vIHJ1biBqUXVlcnlVSSBhdXRvY29tcGxldGUgYW5kIHNldCB2YWx1ZXMNCiAgICAgICAgZnVuY3Rpb24gaW5pdEF1dG9Db21wbGV0ZShkaWFsb2dBcGkpIHsNCiAgICAgICAgICAgICQoJy51aS1hdXRvY29tcGxldGUnKS5jc3MoJ3otaW5kZXgnLCA3MDAwMCk7DQogICAgICAgICAgICAkKCcudWktaGVscGVyLWhpZGRlbi1hY2Nlc3NpYmxlJykuaGlkZSgpOw0KICAgICAgICAgICAgDQogICAgICAgICAgICB2YXIgZWwgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50Ow0KICAgICAgICAgICAgJChlbCkuYXV0b2NvbXBsZXRlKHsNCiAgICAgICAgICAgICAgICBtaW5MZW5ndGg6IDIsDQogICAgICAgICAgICAgICAgc291cmNlOiBmdW5jdGlvbihyZXF1ZXN0LCByZXNwb25zZSkgew0KICAgICAgICAgICAgICAgICAgICAkLmFqYXgoew0KICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBjbXNtc190aW55Lmxpbmtlcl9hdXRvY29tcGxldGVfdXJsLA0KICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdqc29uJywNCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXJtOiByZXF1ZXN0LnRlcm0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihkYXRhKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UoZGF0YSk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgZm9jdXM6IGZ1bmN0aW9uKGV2ZW50LCB1aSkgew0KICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOw0KICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgc2VsZWN0OiBmdW5jdGlvbihldmVudCwgdWkpIHsNCiAgICAgICAgICAgICAgICAgICAgaWYoIHR5cGVvZiB1aS5pdGVtICE9ICd1bmRlZmluZWQnICkgew0KICAgICAgICAgICAgICAgICAgICAgICAgZGlhbG9nQXBpLnNldERhdGEoew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2U6IHVpLml0ZW0ubGFiZWwsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpYXM6IHVpLml0ZW0udmFsdWUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZjogIntjbXNfc2VsZmxpbmsgaHJlZj0nIiArIHVpLml0ZW0udmFsdWUgKyAiJ30iDQogICAgICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaWFsb2dBcGkuZ2V0RGF0YSgpLnRleHQgPT0gJycpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWFsb2dBcGkuc2V0RGF0YSh7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IHVpLml0ZW0udGl0bGUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0pOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAvLyBpbnNlcnQgYWxsIHNlbGVjdGVkIHZhbHVlcyB0byBzdWJtaXR0ZWQgZm9ybQ0KICAgICAgICBmdW5jdGlvbiBvblN1Ym1pdEZvcm0oZGlhbG9nQXBpKSB7DQoNCiAgICAgICAgICAgIHZhciBkYXRhID0gZGlhbG9nQXBpLmdldERhdGEoKSwNCiAgICAgICAgICAgICAgICBocmVmID0gZGF0YS5ocmVmLA0KICAgICAgICAgICAgICAgIHBhZ2UgPSBkYXRhLnBhZ2U7DQoNCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBpbnNlcnRMaW5rKCkgew0KICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS50ZXh0ICE9PSBpbml0aWFsVGV4dCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFuY2hvckVsbSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbnltY2UuYWN0aXZlRWRpdG9yLmZvY3VzKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9yRWxtLmlubmVySFRNTCA9IGRhdGEudGV4dDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb20uc2V0QXR0cmlicyhhbmNob3JFbG0sIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZjogaHJlZiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiBkYXRhLnRhcmdldCA/IGRhdGEudGFyZ2V0IDogbnVsbCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsOiBkYXRhLnJlbCA/IGRhdGEucmVsIDogbnVsbCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IGRhdGEuY2xhc3NuYW1lID8gZGF0YS5jbGFzc25hbWUgOiBudWxsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uLnNlbGVjdChhbmNob3JFbG0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW55bWNlLmFjdGl2ZUVkaXRvci5pbnNlcnRDb250ZW50KGRvbS5jcmVhdGVIVE1MKCdhJywgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmOiBocmVmLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IGRhdGEudGFyZ2V0ID8gZGF0YS50YXJnZXQgOiBudWxsLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWw6IGRhdGEucmVsID8gZGF0YS5yZWwgOiBudWxsLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogZGF0YS5jbGFzc25hbWUgPyBkYXRhLmNsYXNzbmFtZSA6IG51bGwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBkYXRhLnRleHQpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRpbnltY2UuYWN0aXZlRWRpdG9yLmV4ZWNDb21tYW5kKCdtY2VJbnNlcnRMaW5rJywgZmFsc2UsIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmOiBocmVmLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldDogZGF0YS50YXJnZXQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsOiBkYXRhLnJlbCA/IGRhdGEucmVsIDogbnVsbCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogZGF0YS5jbGFzc25hbWUgPyBkYXRhLmNsYXNzbmFtZSA6IG51bGwNCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIGlmICghaHJlZiB8fCAhcGFnZSkgew0KICAgICAgICAgICAgICAgICAgICB0aW55bWNlLmFjdGl2ZUVkaXRvci5leGVjQ29tbWFuZCgndW5saW5rJyk7DQogICAgICAgICAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgaW5zZXJ0TGluaygpOw0KICAgICAgICAgICAgICAgIGRpYWxvZ0FwaS5jbG9zZSgpOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAvLyBzZXQgZGVmYXVsdCB2YWx1ZXMgZm9yIGZpZWxkcw0KICAgICAgICBzZWxlY3RlZEVsbSAgICA9IHNlbGVjdGlvbi5nZXROb2RlKCk7DQogICAgICAgIGFuY2hvckVsbSAgICAgID0gZG9tLmdldFBhcmVudChzZWxlY3RlZEVsbSwgJ2FbaHJlZl0nKTsNCiAgICAgICAgDQogICAgICAgIGRhdGEucGFnZSAgICAgID0gJyc7DQogICAgICAgIGRhdGEuYWxpYXMgICAgID0gJyc7DQogICAgICAgIGRhdGEudGV4dCAgICAgID0gaW5pdGlhbFRleHQgPSBhbmNob3JFbG0gPyAoYW5jaG9yRWxtLmlubmVyVGV4dCB8fCBhbmNob3JFbG0udGV4dENvbnRlbnQpIDogc2VsZWN0aW9uLmdldENvbnRlbnQoe2Zvcm1hdDogJ3RleHQnfSk7DQogICAgICAgIGRhdGEuaHJlZiAgICAgID0gYW5jaG9yRWxtID8gZG9tLmdldEF0dHJpYihhbmNob3JFbG0sICdocmVmJykgOiAnJzsNCiAgICAgICAgZGF0YS50YXJnZXQgICAgPSBhbmNob3JFbG0gPyBkb20uZ2V0QXR0cmliKGFuY2hvckVsbSwgJ3RhcmdldCcpIDogJyc7DQogICAgICAgIGRhdGEuY2xhc3NuYW1lID0gYW5jaG9yRWxtID8gZG9tLmdldEF0dHJpYihhbmNob3JFbG0sICdjbGFzcycpIDogJyc7DQogICAgICAgIGRhdGEucmVsICAgICAgID0gYW5jaG9yRWxtID8gZG9tLmdldEF0dHJpYihhbmNob3JFbG0sICdyZWwnKSA6ICcnOw0KDQogICAgICAgIC8vIHJlc2V0IHRleHQgZmllbGQgaWYgaXQncyBpbWFnZScNCiAgICAgICAgaWYgKHNlbGVjdGVkRWxtLm5vZGVOYW1lID09PSAnSU1HJykgew0KICAgICAgICAgICAgZGF0YS50ZXh0ID0gaW5pdGlhbFRleHQgPSAnICc7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC8vIHNldCB0YXJnZXQgbGlzdCBvcHRpb24gdmFsdWVzDQogICAgICAgIGlmIChlZGl0b3Iuc2V0dGluZ3MudGFyZ2V0X2xpc3QgIT09IGZhbHNlKSB7DQogICAgICAgICAgICB0YXJnZXRPcHRpb25zID0gew0KICAgICAgICAgICAgICAgIG5hbWU6ICd0YXJnZXQnLA0KICAgICAgICAgICAgICAgIHR5cGU6ICdzZWxlY3Rib3gnLA0KICAgICAgICAgICAgICAgIGxhYmVsOiBjbXNtc190aW55LnByb21wdF90YXJnZXQsDQogICAgICAgICAgICAgICAgaXRlbXM6IGJ1aWxkVGFyZ2V0TGlzdChkYXRhLnRhcmdldCkNCiAgICAgICAgICAgIH07DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC8vIHJ1biB0aW55bWNlIHdpbmRvdyBhbmQgYnVpbGQgZm9ybQ0KICAgICAgICAvLyBodHRwczovL3d3dy50aW55LmNsb3VkL2RvY3MvdWktY29tcG9uZW50cy9kaWFsb2cvDQogICAgICAgIHdpbkFQSSA9IGVkaXRvci53aW5kb3dNYW5hZ2VyLm9wZW4oew0KICAgICAgICAgICAgdGl0bGU6IGNtc21zX3RpbnkubGlua2VyX3RleHQsDQogICAgICAgICAgICBpbml0aWFsRGF0YTogZGF0YSwNCiAgICAgICAgICAgIGJvZHk6IHsNCiAgICAgICAgICAgICAgICB0eXBlOiAndGFicGFuZWwnLA0KICAgICAgICAgICAgICAgIHRhYnM6IFsNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3RhYl9nZW5lcmFsJywNCiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBjbXNtc190aW55LnRhYl9nZW5lcmFsLA0KICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6IFsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdwYWdlJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2lucHV0JywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogNDAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBjbXNtc190aW55LnByb21wdF9wYWdlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwOiBjbXNtc190aW55LnByb21wdF9wYWdlX2luZm8sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdhbGlhcycsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnaW5wdXQnLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogNDAsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogY21zbXNfdGlueS5wcm9tcHRfYWxpYXMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXA6IGNtc21zX3RpbnkucHJvbXB0X2FsaWFzX2luZm8sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAndGV4dCcsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnaW5wdXQnLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogNDAsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogY21zbXNfdGlueS5wcm9tcHRfdGV4dCwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdocmVmJywgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdpbnB1dCcsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplOiA0MCwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBjbXNtc190aW55Lmxpbmtlcl9ocmVmLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICAgICAgICAgXQ0KICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAndGFiX2FkdmFuY2VkJywNCiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBjbXNtc190aW55LnRhYl9hZHZhbmNlZCwNCiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBbDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0T3B0aW9ucywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdjbGFzc25hbWUnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnaW5wdXQnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplOiA0MCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGNtc21zX3RpbnkucHJvbXB0X2NsYXNzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAncmVsJywgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdpbnB1dCcsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplOiA0MCwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBjbXNtc190aW55LnByb21wdF9yZWwsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAgICAgIF0NCiAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICBdDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgb25DaGFuZ2U6IGZ1bmN0aW9uKGRpYWxvZ0FwaSwgZGV0YWlscykgew0KICAgICAgICAgICAgICAgIGlmIChkZXRhaWxzLm5hbWUgPT0gJ3BhZ2UnKSB7DQogICAgICAgICAgICAgICAgICAgIGluaXRBdXRvQ29tcGxldGUoZGlhbG9nQXBpKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgb25TdWJtaXQ6IG9uU3VibWl0Rm9ybSwNCiAgICAgICAgICAgIGJ1dHRvbnM6IFsNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHR5cGU6ICdjYW5jZWwnLA0KICAgICAgICAgICAgICAgICAgICB0ZXh0OiAnQ2FuY2VsJywNCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3N1Ym1pdCcsDQogICAgICAgICAgICAgICAgICAgIHRleHQ6ICdTYXZlJywNCiAgICAgICAgICAgICAgICAgICAgcHJpbWFyeTogdHJ1ZSwNCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgXQ0KICAgICAgICB9KTsNCg0KICAgICAgICB3aW5BUEkuZm9jdXMoJ3BhZ2UnKTsNCg0KICAgICAgICAvLyBXZSBoYXZlIG5vdyB0aGUgd2luZG93IEFQSSwgd2UgY2FuIGludGVyYWN0IHdpdGggdGhlIGZvcm0gZGF0YQ0KICAgICAgICAvLyBncmFiIHBhZ2UgaW5mb3JtYXRpb24gaWYgaHJlZiBpcyBjbXNfc2VsZmxpbmsNCiAgICAgICAgaWYoZGF0YS5ocmVmLmluZGV4T2YoJ2Ntc19zZWxmbGluaycpICE9PSAtMSApIHsNCiAgICAgICAgICAgIHIgPSBkYXRhLmhyZWYubWF0Y2goL2hyZWY9KC4qKVtcc1x9XS8pOw0KICAgICAgICAgICAgDQogICAgICAgICAgICBpZihyLmxlbmd0aCA+PSAyKSB7DQogICAgICAgICAgICAgICAgd2luQVBJLmJsb2NrKGNtc21zX3RpbnkubG9hZGluZ19pbmZvKTsNCiAgICAgICAgICAgICAgICAvLyBwYXJzZWQgdGhlIGNtc19zZWxmbGluayBmb3IgdGhlIHBhZ2UgYWxpYXMNCiAgICAgICAgICAgICAgICAvLyBmaWxsIGluIHRoZSBhbGlhcyBmaWVsZC4NCiAgICAgICAgICAgICAgICBkYXRhLmFsaWFzID0gclsxXS5yZXBsYWNlICgvJy9nLCAnJyk7DQogICAgICAgICAgICAgICAgLy8gZGVmYXVsdCB2YWx1ZSBmb3IgcGFnZSBmaWVsZA0KICAgICAgICAgICAgICAgIGRhdGEucGFnZSA9IGNtc21zX3RpbnkubG9hZGluZ19pbmZvOw0KICAgICAgICAgICAgICAgICQuYWpheCh7DQogICAgICAgICAgICAgICAgICAgIHVybDogY21zbXNfdGlueS5saW5rZXJfYXV0b2NvbXBsZXRlX3VybCwNCiAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdqc29uJywNCiAgICAgICAgICAgICAgICAgICAgZGF0YTogew0KICAgICAgICAgICAgICAgICAgICAgICAgYWxpYXM6IGRhdGEuYWxpYXMNCiAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24ocmVzKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAvLyB1cGRhdGUgdmFsdWVzIGZvciBhbGlhcyBhbmQgcGFnZS4NCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEucGFnZSA9IGRhdGEuaHJlZiA9ICcnOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoIHJlcyAmJiByZXMubGFiZWwgKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5wYWdlID0gcmVzLmxhYmVsOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuaHJlZj0gIntjbXNfc2VsZmxpbmsgaHJlZj0nIiArIGRhdGEuYWxpYXMgKyAiJ30iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbkFQSS5zZXREYXRhKHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZTogZGF0YS5wYWdlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlhczogZGF0YS5hbGlhcywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZjogZGF0YS5ocmVmDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luQVBJLnVuYmxvY2soKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KDQoNCiAgICAvLyBGcm9tIHRoZSAibGluayIgcGx1Z2luIDogYWN0aXZlIG9yIG5vdCB0aGUgYnV0dG9uIG9uIHRhZyBjaGFuZ2UNCiAgICB2YXIgZ2V0QW5jaG9yRWxlbWVudCA9IGZ1bmN0aW9uIChlZGl0b3IsIHNlbGVjdGVkRWxtKSB7DQogICAgICAgIHNlbGVjdGVkRWxtID0gc2VsZWN0ZWRFbG0gfHwgZWRpdG9yLnNlbGVjdGlvbi5nZXROb2RlKCk7DQogICAgICAgIGlmIChzZWxlY3RlZEVsbSAmJiBzZWxlY3RlZEVsbS5ub2RlTmFtZSA9PT0gJ0ZJR1VSRScgJiYgL1xiaW1hZ2VcYi9pLnRlc3Qoc2VsZWN0ZWRFbG0uY2xhc3NOYW1lKSkgew0KICAgICAgICAgICAgcmV0dXJuIGVkaXRvci5kb20uc2VsZWN0KCdhW2hyZWYqPWNtc19zZWxmbGlua10nLCBzZWxlY3RlZEVsbSlbMF07DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICByZXR1cm4gZWRpdG9yLmRvbS5nZXRQYXJlbnQoc2VsZWN0ZWRFbG0sICdhW2hyZWYqPWNtc19zZWxmbGlua10nKTsNCiAgICAgICAgfQ0KICAgIH07DQogICAgdmFyIHRvZ2dsZUFjdGl2ZVN0YXRlID0gZnVuY3Rpb24gKGVkaXRvcikgew0KICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGFwaSkgew0KICAgICAgICAgICAgdmFyIG5vZGVDaGFuZ2VIYW5kbGVyID0gZnVuY3Rpb24gKGUpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gYXBpLnNldEFjdGl2ZSghZWRpdG9yLnJlYWRvbmx5ICYmICEhZ2V0QW5jaG9yRWxlbWVudChlZGl0b3IsIGUuZWxlbWVudCkpOw0KICAgICAgICAgICAgfTsNCiAgICAgICAgICAgIGVkaXRvci5vbignTm9kZUNoYW5nZScsIG5vZGVDaGFuZ2VIYW5kbGVyKTsNCiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGVkaXRvci5vZmYoJ05vZGVDaGFuZ2UnLCBub2RlQ2hhbmdlSGFuZGxlcik7DQogICAgICAgICAgICB9Ow0KICAgICAgICB9Ow0KICAgIH0NCg0KICAgIC8vIGFkZCBhIGJ1dHRvbg0KICAgIC8vIGVkaXRvci5hZGRCdXR0b24oJ2Ntc21zX2xpbmtlcicsIHsNCiAgICB2YXIgaWNvbiA9ICc8c3ZnIGhlaWdodD0iMjQiIHdpZHRoPSIyNCI+PHBhdGggZD0iTSA3IDMgQyA1Ljg5NTQzMDUgMyA1IDMuODk1NDMwNSA1IDUgTCA1IDEyLjcyMjY1NiBDIDUuNjg4ODc0IDExLjkyMjE0NyA2LjEyMDkyOTkgMTEuNDA1NjkyIDcgMTEuMjQ0MTQxIEwgNyA1IEwgMTIuMzM5ODQ0IDUgTCAxNC40MDAzOTEgMyBMIDcgMyB6IE0gMTYuOTAyMzQ0IDMuMDU2NjQwNiBBIDMuOSAzLjkgMCAwIDAgMTQuNDAwMzkxIDQgTCA5LjU5OTYwOTQgOSBBIDIuOSAyLjkgMCAwIDAgOS41OTk2MDk0IDEzIEEgMSAxIDAgMSAwIDExIDExLjY5OTIxOSBBIDEgMSAwIDAgMSAxMSAxMC4zMDA3ODEgTCAxNS44MDA3ODEgNS41IEEgMiAyIDAgMSAxIDE4LjQwMDM5MSA4LjMwMDc4MTIgTCAxNi40MDAzOTEgMTAuMzAwNzgxIEEgMSAxIDAgMCAwIDE3LjgwMDc4MSAxMS42OTkyMTkgTCAxNy45MDAzOTEgMTEuNSBMIDE5LjkwMDM5MSA5LjUgQSAzLjkgMy45IDAgMCAwIDE2LjkwMjM0NCAzLjA1NjY0MDYgeiBNIDEzLjQ3ODUxNiAxMC40MzM1OTQgQSAxIDEgMCAwIDAgMTMgMTIuMzAwNzgxIEEgMSAxIDAgMCAxIDEzIDEzLjY5OTIxOSBMIDguMTk5MjE4OCAxOC41IEEgMiAyIDAgMSAxIDUuNSAxNS42OTkyMTkgTCA3LjU5OTYwOTQgMTMuNjk5MjE5IEEgMSAxIDAgMCAwIDYuMTk5MjE4OCAxMi4zMDA3ODEgTCA2LjA5OTYwOTQgMTIuNSBMIDQuMDk5NjA5NCAxNC41IEEgMy45IDMuOSAwIDAgMCA5LjU5OTYwOTQgMjAgTCAxNC40MDAzOTEgMTUgQSAyLjkgMi45IDAgMCAwIDE0LjQwMDM5MSAxMSBBIDEgMSAwIDAgMCAxMy40Nzg1MTYgMTAuNDMzNTk0IHogTSAxOSAxMS4zMDg1OTQgTCAxNyAxMy4yNzczNDQgTCAxNyAxOSBMIDExLjY0MDYyNSAxOSBMIDkuNjczODI4MSAyMSBMIDE3IDIxIEMgMTguMTA0NTY5IDIxIDE5IDIwLjEwNDU2OSAxOSAxOSBMIDE5IDExLjMwODU5NCB6ICIgLz48L3N2Zz4nOw0KICAgIGVkaXRvci51aS5yZWdpc3RyeS5hZGRJY29uKCdjbXNtc19saW5rZXInLCBpY29uKTsNCiAgICBlZGl0b3IudWkucmVnaXN0cnkuYWRkVG9nZ2xlQnV0dG9uKCdjbXNtc19saW5rZXInLCB7DQogICAgICAgIGljb246ICdjbXNtc19saW5rZXInLA0KICAgICAgICB0b29sdGlwOiBjbXNtc190aW55Lmxpbmtlcl90aXRsZSwNCiAgICAgICAgaW1hZ2U6IGNtc21zX3RpbnkubGlua2VyX2ltYWdlLA0KICAgICAgICBvbkFjdGlvbjogY21zbXNfc2hvd0RpYWxvZywNCiAgICAgICAgb25TZXR1cDogdG9nZ2xlQWN0aXZlU3RhdGUoZWRpdG9yKSwNCiAgICB9KTsNCiAgICANCiAgICAvLyBhbmQgYSBtZW51IGl0ZW0NCiAgICBlZGl0b3IudWkucmVnaXN0cnkuYWRkTWVudUl0ZW0oJ2Ntc21zX2xpbmtlcicsIHsNCiAgICAgICAgdGV4dDogY21zbXNfdGlueS5saW5rZXJfdGV4dCwNCiAgICAgICAgaWNvbjogJ2xpbmsnLA0KICAgICAgICBvbkFjdGlvbjogY21zbXNfc2hvd0RpYWxvZywNCiAgICAgICAgb25TZXR1cDogdG9nZ2xlQWN0aXZlU3RhdGUoZWRpdG9yKSwNCiAgICB9KTsNCn0pOw0K]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce_external_plugins/cmsms_linker/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[dGlueW1jZS5QbHVnaW5NYW5hZ2VyLmFkZCgiY21zbXNfbGlua2VyIixmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG4oKXtmdW5jdGlvbiB2KHQpe3ZhciBuPVt7dGV4dDpjbXNtc190aW55LnRhcmdldF9ub25lLHZhbHVlOiIifV07aWYoIWUuc2V0dGluZ3MudGFyZ2V0X2xpc3Qpe24ucHVzaCh7dGV4dDpjbXNtc190aW55LnRhcmdldF9uZXdfd2luZG93LHZhbHVlOiJfYmxhbmsifSl9dGlueW1jZS5lYWNoKGUuc2V0dGluZ3MudGFyZ2V0X2xpc3QsZnVuY3Rpb24oZSl7bi5wdXNoKHt0ZXh0OmUudGV4dHx8ZS50aXRsZSx2YWx1ZTplLnZhbHVlLHNlbGVjdGVkOnQ9PT1lLnZhbHVlfSl9KTtyZXR1cm4gbn1mdW5jdGlvbiBtKGUpeyQoIi51aS1hdXRvY29tcGxldGUiKS5jc3MoInotaW5kZXgiLDdlNCk7JCgiLnVpLWhlbHBlci1oaWRkZW4tYWNjZXNzaWJsZSIpLmhpZGUoKTt2YXIgdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChlKTskKHQpLmF1dG9jb21wbGV0ZSh7bWluTGVuZ3RoOjIsc291cmNlOmZ1bmN0aW9uKGUsdCl7JC5hamF4KHt1cmw6Y21zbXNfdGlueS5saW5rZXJfYXV0b2NvbXBsZXRlX3VybCxkYXRhVHlwZToianNvbiIsZGF0YTp7dGVybTplLnRlcm19LHN1Y2Nlc3M6ZnVuY3Rpb24oZSl7dChlKX19KX0sZm9jdXM6ZnVuY3Rpb24oZSx0KXtlLnByZXZlbnREZWZhdWx0KCl9LHNlbGVjdDpmdW5jdGlvbihlLG4peyQodCkudmFsKG4uaXRlbS5sYWJlbCk7JCgiLm1jZS1jbXNtcy1saW5rZXItYWxpYXMiKS52YWwobi5pdGVtLnZhbHVlKTskKCIubWNlLWNtc21zLWxpbmtlci1ocmVmIikudmFsKCJ7Y21zX3NlbGZsaW5rIGhyZWY9JyIrbi5pdGVtLnZhbHVlKyInfSIpO2UucHJldmVudERlZmF1bHQoKX19KX1mdW5jdGlvbiBnKCl7ZnVuY3Rpb24gZigpe2lmKHQudGV4dCE9PW8pe2lmKHMpe2UuZm9jdXMoKTtzLmlubmVySFRNTD10LnRleHQ7ci5zZXRBdHRyaWJzKHMse2hyZWY6aSx0YXJnZXQ6dC50YXJnZXQ/dC50YXJnZXQ6bnVsbCxyZWw6dC5yZWw/dC5yZWw6bnVsbCwiY2xhc3MiOnQuY2xhc3NuYW1lP3QuY2xhc3NuYW1lOm51bGx9KTtuLnNlbGVjdChzKX1lbHNle2UuaW5zZXJ0Q29udGVudChyLmNyZWF0ZUhUTUwoImEiLHtocmVmOmksdGFyZ2V0OnQudGFyZ2V0P3QudGFyZ2V0Om51bGwscmVsOnQucmVsP3QucmVsOm51bGwsImNsYXNzIjp0LmNsYXNzbmFtZT90LmNsYXNzbmFtZTpudWxsfSx0LnRleHQpKX19ZWxzZXtlLmV4ZWNDb21tYW5kKCJtY2VJbnNlcnRMaW5rIixmYWxzZSx7aHJlZjppLHRhcmdldDp0LnRhcmdldCxyZWw6dC5yZWw/dC5yZWw6bnVsbCwiY2xhc3MiOnQuY2xhc3NuYW1lP3QuY2xhc3NuYW1lOm51bGx9KX19dmFyIHQ9dS50b0pTT04oKSxpPXQuaHJlZixhPXQucGFnZTtpZighaXx8IWEpe2UuZXhlY0NvbW1hbmQoInVubGluayIpO3JldHVybn1mKCl9dmFyIHQ9e30sbj1lLnNlbGVjdGlvbixyPWUuZG9tLGkscyxvLHUsYSxmLGwsYyxoLHAsZDtpPW4uZ2V0Tm9kZSgpO3M9ci5nZXRQYXJlbnQoaSwiYVtocmVmXSIpO3QucGFnZT0iIjt0LmFsaWFzPSIiO3QudGV4dD1vPXM/cy5pbm5lclRleHR8fHMudGV4dENvbnRlbnQ6bi5nZXRDb250ZW50KHtmb3JtYXQ6InRleHQifSk7dC5ocmVmPXM/ci5nZXRBdHRyaWIocywiaHJlZiIpOiIiO3QudGFyZ2V0PXM/ci5nZXRBdHRyaWIocywidGFyZ2V0Iik6IiI7dC5jbGFzc25hbWU9cz9yLmdldEF0dHJpYihzLCJjbGFzcyIpOiIiO3QucmVsPXM/ci5nZXRBdHRyaWIocywicmVsIik6IiI7aWYodC5ocmVmLmluZGV4T2YoImNtc19zZWxmbGluayIpIT09LTEpe2Q9dC5ocmVmLm1hdGNoKC9ocmVmPSguKilbXHNcfV0vKTtpZihkLmxlbmd0aD49Mil7dC5hbGlhcz1kWzFdLnJlcGxhY2UoLycvZywiIik7dC5wYWdlPWNtc21zX3RpbnkubG9hZGluZ19pbmZvOyQuYWpheCh7dXJsOmNtc21zX3RpbnkubGlua2VyX2F1dG9jb21wbGV0ZV91cmwsZGF0YVR5cGU6Impzb24iLGRhdGE6e2FsaWFzOnQuYWxpYXN9LHN1Y2Nlc3M6ZnVuY3Rpb24oZSl7dC5wYWdlPWUubGFiZWw7dC5ocmVmPSJ7Y21zX3NlbGZsaW5rIGhyZWY9JyIrdC5hbGlhcysiJ30iOyQoIi5tY2UtY21zbXMtbGlua2VyLXBhZ2UiKS52YWwodC5wYWdlKTskKCIubWNlLWNtc21zLWxpbmtlci1hbGlhcyIpLnZhbCh0LmFsaWFzKTskKCIubWNlLWNtc21zLWxpbmtlci1ocmVmIikudmFsKHQuaHJlZil9fSl9fWlmKGkubm9kZU5hbWU9PT0iSU1HIil7dC50ZXh0PW89IiAifWlmKGUuc2V0dGluZ3MudGFyZ2V0X2xpc3QhPT1mYWxzZSl7Yz17bmFtZToidGFyZ2V0Iix0eXBlOiJsaXN0Ym94IixsYWJlbDpjbXNtc190aW55LnByb21wdF90YXJnZXQsdmFsdWVzOnYodC50YXJnZXQpfX1hPXtuYW1lOiJwYWdlIix0eXBlOiJ0ZXh0Ym94IixzaXplOjQwLGNsYXNzZXM6ImNtc21zLWxpbmtlci1wYWdlIix0b29sdGlwOmNtc21zX3RpbnkucHJvbXB0X3BhZ2VfaW5mbyxsYWJlbDpjbXNtc190aW55LnByb21wdF9wYWdlLG9ua2V5dXA6ZnVuY3Rpb24oKXttKHRoaXMuX2lkKX0sb25jaGFuZ2U6ZnVuY3Rpb24oKXttKHRoaXMuX2lkKX19O2Y9e25hbWU6ImFsaWFzIixkaXNhYmxlZDp0cnVlLHR5cGU6InRleHRib3giLHNpemU6NDAsbGFiZWw6Y21zbXNfdGlueS5wcm9tcHRfYWxpYXMsdG9vbHRpcDpjbXNtc190aW55LnByb21wdF9hbGlhc19pbmZvLGNsYXNzZXM6ImNtc21zLWxpbmtlci1hbGlhcyJ9O2w9e25hbWU6InRleHQiLHR5cGU6InRleHRib3giLHNpemU6NDAsbGFiZWw6Y21zbXNfdGlueS5wcm9tcHRfdGV4dCxvbmNoYW5nZTpmdW5jdGlvbigpe3QudGV4dD10aGlzLnZhbHVlKCl9LG9ua2V5dXA6ZnVuY3Rpb24oKXt0LnRleHQ9dGhpcy52YWx1ZSgpfX07aD17bmFtZToiY2xhc3NuYW1lIix0eXBlOiJ0ZXh0Ym94IixzaXplOjQwLGxhYmVsOmNtc21zX3RpbnkucHJvbXB0X2NsYXNzLG9uY2hhbmdlOmZ1bmN0aW9uKCl7dC5jbGFzc25hbWU9dGhpcy52YWx1ZSgpfSxvbmtleXVwOmZ1bmN0aW9uKCl7dC5jbGFzc25hbWU9dGhpcy52YWx1ZSgpfX07cD17bmFtZToicmVsIix0eXBlOiJ0ZXh0Ym94IixzaXplOjQwLGxhYmVsOmNtc21zX3RpbnkucHJvbXB0X3JlbCxvbmNoYW5nZTpmdW5jdGlvbigpe3QucmVsPXRoaXMudmFsdWUoKX0sb25rZXl1cDpmdW5jdGlvbigpe3QucmVsPXRoaXMudmFsdWUoKX19O3U9ZS53aW5kb3dNYW5hZ2VyLm9wZW4oe3RpdGxlOmNtc21zX3RpbnkubGlua2VyX3RleHQsZGF0YTp0LGJvZHlUeXBlOiJ0YWJwYW5lbCIsYm9keTpbe3RpdGxlOmNtc21zX3RpbnkudGFiX2dlbmVyYWwsdHlwZToiZm9ybSIsaXRlbXM6W2EsZixsLHtuYW1lOiJocmVmIix0eXBlOiJ0ZXh0Ym94IixjbGFzc2VzOiJjbXNtcy1saW5rZXItaHJlZiIsc2l6ZToxMDAsaGlkZGVuOnRydWUsdmFsdWU6IntjbXNfc2VsZmxpbmsgaHJlZj0nIit0LmFsaWFzKyInfSJ9XX0se3RpdGxlOmNtc21zX3RpbnkudGFiX2FkdmFuY2VkLHR5cGU6ImZvcm0iLGl0ZW1zOltjLGgscF19XSxvblN1Ym1pdDpnfSl9ZS5hZGRCdXR0b24oImNtc21zX2xpbmtlciIse3RpdGxlOmNtc21zX3RpbnkubGlua2VyX3RpdGxlLGljb246ImxpbmsiLGltYWdlOmNtc21zX3RpbnkubGlua2VyX2ltYWdlLG9uY2xpY2s6bixzdGF0ZVNlbGVjdG9yOiJhW2hyZWZdIn0pO2UuYWRkTWVudUl0ZW0oImNtc21zX2xpbmtlciIse3RleHQ6Y21zbXNfdGlueS5saW5rZXJfdGV4dCx0aXRsZTpjbXNtc190aW55Lmxpbmtlcl90aXRsZSxpbWFnZTpjbXNtc190aW55Lmxpbmtlcl9pbWFnZSxzdGF0ZVNlbGVjdG9yOiJhW2hyZWZdIixjb250ZXh0OiJpbnNlcnQiLHByZXBlbmRUb0NvbnRleHQ6dHJ1ZSxvbmNsaWNrOm59KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/js/tinymce_external_plugins/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0NNUyAtIENNUyBNYWRlIFNpbXBsZQojKGMpMjAwNCBieSBUZWQgS3VscCAodGVkQGNtc21hZGVzaW1wbGUub3JnKQojVmlzaXQgb3VyIGhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKI1RoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiNpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyhhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKI1RoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKI01FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKI0dOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiNZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKI0ZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKIwppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CgoKJGRiID0gJHRoaXMtPkdldERiKCk7CgoKCi8vIFByb2ZpbGVzICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSgkZGIpOwokZmxkcyA9ICIKCWlkX3Byb2ZpbGUgSSBLRVkgQVVUTywKCWlkX3RlbXBsYXRlIEksCgluYW1lIEMoMjU1KSwKCXByaW9yaXR5IEksCglyZXNpemUgQygyMCksCglhdXRvcmVzaXplIEksCglwbHVnaW5zIFgsCgllbmFibGVfbGlua2VyIEksCglzaG93X21lbnViYXIgSSwKCW1lbnViYXIgQygyNTUpLAoJdXNlX2FkdmFuY2VkX21lbnUgSSwKCWFkdmFuY2VkX21lbnUgWCwKCXNob3dfdG9vbGJhciBJLAoJdG9vbGJhcjEgWCwKCXRvb2xiYXIyIFgsCgljb250ZXh0bWVudSBYLAoJc2hvd19zdGF0dXNiYXIgSSwKCWlkX2Rlc2lnbiBJLAoJbGlua19jbGFzc2VzIFgsCglpbWFnZV9jbGFzc2VzIFgsCglzdHlsZV9mb3JtYXRzIFgsCgl1c2VfY3VzdG9tX2Jsb2NrX2Zvcm1hdHMgSSwKCWJsb2NrX2Zvcm1hdHMgQygyNTUpLAoJZW5hYmxlX3VzZXJfdGVtcGxhdGVzIEksCgllbmFibGVfY3VzdG9tX2Ryb3Bkb3duIEksCgljdXN0b21fZHJvcGRvd25fdGl0bGUgQygxMDApLAoJY3VzdG9tX2Ryb3Bkb3duIFgsCglleHRyYV9qcyBYLAoJZXh0ZXJuYWxfbW9kdWxlcyBYLAoJZXh0ZXJuYWxfbW9kdWxlc19zaG93X21lbnV0ZXh0IEksCglmaWxlbWFuYWdlcl91c2UgSSwKCWZpbGVtYW5hZ2VyX2RlbGV0ZV9maWxlcyBJLAoJZmlsZW1hbmFnZXJfY3JlYXRlX2ZvbGRlcnMgSSwKCWZpbGVtYW5hZ2VyX2RlbGV0ZV9mb2xkZXJzIEksCglmaWxlbWFuYWdlcl91cGxvYWRfZmlsZXMgSSwKCWZpbGVtYW5hZ2VyX3JlbmFtZV9maWxlcyBJLAoJZmlsZW1hbmFnZXJfcmVuYW1lX2ZvbGRlcnMgSSwKCWZpbGVtYW5hZ2VyX2R1cGxpY2F0ZV9maWxlcyBJLAoJZmlsZW1hbmFnZXJfY29weV9jdXRfZmlsZXMgSSwKCWZpbGVtYW5hZ2VyX2NvcHlfY3V0X2RpcnMgSSwKCWZpbGVtYW5hZ2VyX2NobW9kX2ZpbGVzIEksCglmaWxlbWFuYWdlcl9jaG1vZF9kaXJzIEksCglmaWxlbWFuYWdlcl9wcmV2aWV3X3RleHRfZmlsZXMgSSwKCWZpbGVtYW5hZ2VyX2NyZWF0ZV90ZXh0X2ZpbGVzIEksCglmaWxlbWFuYWdlcl9lZGl0X3RleHRfZmlsZXMgSSwKCWZpbGVtYW5hZ2VyX2ltYWdlX3Jlc2l6aW5nIEksCglmaWxlbWFuYWdlcl9pbWFnZV9yZXNpemluZ193aWR0aCBJLAoJZmlsZW1hbmFnZXJfaW1hZ2VfcmVzaXppbmdfaGVpZ2h0IEksCglmaWxlbWFuYWdlcl90dWlfYWN0aXZlIEksCglmb3JjZWRfcm9vdF9ibG9jayBJLAoJcmVsYXRpdmVfdXJscyBJLAoJaW1hZ2VfYWR2dGFiIEksCgljc3NfZmlsZXMgWCwKCXVzZXJfdGVtcGxhdGVzX2ZpbGVzX2RpciBDKDI1MCkKIjsKJHRhYm9wdGFycmF5ID0gYXJyYXkoJ215c3FsJyA9PiAnVFlQRT1NeUlTQU0nKTsKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKENNU19EQl9QUkVGSVguVGlueU1DRTo6VElOWU1DRV9QUk9GSUxFU19UQUJMRSwgJGZsZHMsICR0YWJvcHRhcnJheSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCgovLyBQcm9maWxlX2dyb3VwICoqKioqKioqKioqKioqKioqKioqKioqKioqCiRmbGRzID0gIgoJaWRfcHJvZmlsZSBJIEtFWSwKCWlkX2dyb3VwIEkgS0VZCiI7CiR0YWJvcHRhcnJheSA9IGFycmF5KCdteXNxbCcgPT4gJ1RZUEU9TXlJU0FNJyk7CiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChDTVNfREJfUFJFRklYLlRpbnlNQ0U6OlRJTllNQ0VfUFJPRklMRUdST1VQX1RBQkxFLCAkZmxkcywgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKCgoKCgoKLy8gQ1JFQVRFIFRFTVBMQVRFIFRZUEVTCgovLyBKUwp0cnkgewoJJGpzX3RlbXBsYXRlX3R5cGUgPSBuZXcgQ21zTGF5b3V0VGVtcGxhdGVUeXBlKCk7CgkkanNfdGVtcGxhdGVfdHlwZS0+c2V0X29yaWdpbmF0b3IoJHRoaXMtPkdldE5hbWUoKSk7CgkkanNfdGVtcGxhdGVfdHlwZS0+c2V0X2RmbHRfZmxhZyh0cnVlKTsKCSRqc190ZW1wbGF0ZV90eXBlLT5zZXRfbGFuZ19jYWxsYmFjaygnVGlueU1DRTo6cGFnZV90eXBlX2xhbmdfY2FsbGJhY2snKTsKCSRqc190ZW1wbGF0ZV90eXBlLT5zZXRfY29udGVudF9jYWxsYmFjaygnVGlueU1DRTo6cmVzZXRfcGFnZV90eXBlX2RlZmF1bHRzJyk7CgkkanNfdGVtcGxhdGVfdHlwZS0+c2V0X25hbWUoJ2pzJyk7CgkkanNfdGVtcGxhdGVfdHlwZS0+c2V0X2Rlc2NyaXB0aW9uKCR0aGlzLT5MYW5nKCd0eXBlX2pzX2Rlc2NyaXB0aW9uJykpOwoJJGpzX3RlbXBsYXRlX3R5cGUtPnJlc2V0X2NvbnRlbnRfdG9fZmFjdG9yeSgpOwoJJGpzX3RlbXBsYXRlX3R5cGUtPnNhdmUoKTsKfQpjYXRjaCAoQ21zRXhjZXB0aW9uICRlKSB7CgkvLyBsb2cgaXQKCWRlYnVnX3RvX2xvZyhfX0ZJTEVfXy4nOicuX19MSU5FX18uJyAnLiRlLT5HZXRNZXNzYWdlKCkpOwoJYXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKSwnSW5zdGFsbGF0aW9uIEVycm9yOiAnLiRlLT5HZXRNZXNzYWdlKCkpOwp9CgoKCi8vIFRJTllNQ0VURU1QTEFURSA7IGZvciB0aGUgdGVtcGxhdGUgcGx1Z2luCnRyeSB7CgkkdGlueXRwbF90ZW1wbGF0ZV90eXBlID0gbmV3IENtc0xheW91dFRlbXBsYXRlVHlwZSgpOwoJJHRpbnl0cGxfdGVtcGxhdGVfdHlwZS0+c2V0X29yaWdpbmF0b3IoJHRoaXMtPkdldE5hbWUoKSk7CgkkdGlueXRwbF90ZW1wbGF0ZV90eXBlLT5zZXRfZGZsdF9mbGFnKHRydWUpOwoJJHRpbnl0cGxfdGVtcGxhdGVfdHlwZS0+c2V0X2xhbmdfY2FsbGJhY2soJ1RpbnlNQ0U6OnBhZ2VfdHlwZV9sYW5nX2NhbGxiYWNrJyk7CgkkdGlueXRwbF90ZW1wbGF0ZV90eXBlLT5zZXRfY29udGVudF9jYWxsYmFjaygnVGlueU1DRTo6cmVzZXRfcGFnZV90eXBlX2RlZmF1bHRzJyk7CgkkdGlueXRwbF90ZW1wbGF0ZV90eXBlLT5zZXRfbmFtZSgndXNlcnRlbXBsYXRlJyk7CgkkdGlueXRwbF90ZW1wbGF0ZV90eXBlLT5zZXRfZGVzY3JpcHRpb24oJHRoaXMtPkxhbmcoJ3R5cGVfdXNlcnRlbXBsYXRlX2Rlc2NyaXB0aW9uJykpOwoJJHRpbnl0cGxfdGVtcGxhdGVfdHlwZS0+cmVzZXRfY29udGVudF90b19mYWN0b3J5KCk7CgkkdGlueXRwbF90ZW1wbGF0ZV90eXBlLT5zYXZlKCk7Cn0KY2F0Y2ggKENtc0V4Y2VwdGlvbiAkZSkgewoJLy8gbG9nIGl0CglkZWJ1Z190b19sb2coX19GSUxFX18uJzonLl9fTElORV9fLicgJy4kZS0+R2V0TWVzc2FnZSgpKTsKCWF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJ0luc3RhbGxhdGlvbiBFcnJvcjogJy4kZS0+R2V0TWVzc2FnZSgpKTsKfQoKCgoKCgoKCi8vIENSRUFURSBTQU1QTEUgLyBERUZBVUxUIFRFTVBMQVRFUwovKiR1aWQgPSBnZXRfdXNlcmlkKCk7CnRyeSB7CgkkZm4gPSBkaXJuYW1lKF9fRklMRV9fKS5ESVJFQ1RPUllfU0VQQVJBVE9SLid0ZW1wbGF0ZXMnLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ29yaWdfanNfdGVtcGxhdGUudHBsJzsKCWlmKCBmaWxlX2V4aXN0cyggJGZuICkgKSB7CiAgICAkdGVtcGxhdGUgPSBAZmlsZV9nZXRfY29udGVudHMoJGZuKTsKICAgICRzYW1wbGVfdHBsID0gbmV3IENtc0xheW91dFRlbXBsYXRlKCk7CiAgICAkc2FtcGxlX3RwbC0+c2V0X25hbWUoJ1RpbnlNQ0UgZGVmYXVsdCBKYXZhc2NyaXB0Jyk7CiAgICAkc2FtcGxlX3RwbC0+c2V0X293bmVyKCR1aWQpOwogICAgJHNhbXBsZV90cGwtPnNldF9jb250ZW50KCR0ZW1wbGF0ZSk7CiAgICAkc2FtcGxlX3RwbC0+c2V0X3R5cGUoJGpzX3RlbXBsYXRlX3R5cGUpOwogICAgJHNhbXBsZV90cGwtPnNldF90eXBlX2RmbHQoVFJVRSk7CiAgICAkc2FtcGxlX3RwbC0+c2F2ZSgpOwogIH0KfQpjYXRjaCggQ21zRXhjZXB0aW9uICRlICkgewogIC8vIGxvZyBpdAogIGRlYnVnX3RvX2xvZyhfX0ZJTEVfXy4nOicuX19MSU5FX18uJyAnLiRlLT5HZXRNZXNzYWdlKCkpOwogIGF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJ0luc3RhbGxhdGlvbiBFcnJvcjogJy4kZS0+R2V0TWVzc2FnZSgpKTsKfSovCgoKCi8vIElOSVRJQUwgUFJPRklMRVMKLy8gTUlOSU1BTAokbWluaV9wcm9maWxlID0gbmV3IHRpbnltY2VfcHJvZmlsZSgpOwokbWluaV9wcm9maWxlLT5uYW1lID0gJHRoaXMtPkxhbmcoJ2luc3RhbGxfcHJvZmlsZV9taW5pbWFsJyk7OwokbWluaV9wcm9maWxlLT5zaG93X21lbnViYXIgPSBmYWxzZTsKJG1pbmlfcHJvZmlsZS0+cmVzaXplID0gZmFsc2U7CiRtaW5pX3Byb2ZpbGUtPnRvb2xiYXIxID0gJ2Zvcm1hdHNlbGVjdCB8IGJvbGQgaXRhbGljIHVuZGVybGluZSB8IGNtc21zX2xpbmtlciBsaW5rIGltYWdlJzsKJG1pbmlfcHJvZmlsZS0+c2F2ZSgpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnaWRfZGVmYXVsdF9wcm9maWxlJywgJG1pbmlfcHJvZmlsZS0+aWRfcHJvZmlsZSk7CgovLyBBRFZBTkNFRAokYWR2YW5jZWRfcHJvZmlsZSA9IG5ldyB0aW55bWNlX3Byb2ZpbGUoKTsKJGFkdmFuY2VkX3Byb2ZpbGUtPm5hbWUgPSAkdGhpcy0+TGFuZygnaW5zdGFsbF9wcm9maWxlX2FkdmFuY2VkJyk7CiRhZHZhbmNlZF9wcm9maWxlLT5zYXZlKCk7CgoKCi8vIFBFUk1JU1NJT05TCiR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdNYW5hZ2UgVGlueU1DRSBwcm9maWxlcycsICdNYW5hZ2UgVGlueU1DRSBwcm9maWxlcycpOwoKCi8vIFNBTFQgRk9SIEFDQ0VTUyBLRVkgRk9SIFJFU1BPTlNJVkUgRklMRSBNQU5BR0VSCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdmaWxlbWFuYWdlcl9zYWx0Jywgc3Vic3RyKG1kNShyYW5kKCkpLCAwLCAxMCkpOwoKCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0NNUyAtIENNUyBNYWRlIFNpbXBsZQojKGMpMjAwNCBieSBUZWQgS3VscCAodGVkQGNtc21hZGVzaW1wbGUub3JnKQojVmlzaXQgb3VyIGhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKI1RoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiNpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyhhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKI1RoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKI01FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKI0dOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiNZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKI0ZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKIwppZiAoIWlzc2V0KCRnQ21zKSkgZXhpdDsKCnRpbnltY2VfdXRpbHM6OmNsZWFyX3RpbnltY2VfY2FjaGUoKTsKCiRkYiA9ICR0aGlzLT5HZXREYigpOwokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCAkZGIgKTsKCgokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBDTVNfREJfUFJFRklYLlRpbnlNQ0U6OlRJTllNQ0VfUFJPRklMRVNfVEFCTEUpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7Cgokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBDTVNfREJfUFJFRklYLlRpbnlNQ0U6OlRJTllNQ0VfUFJPRklMRUdST1VQX1RBQkxFKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKCiR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdNYW5hZ2UgVGlueU1DRSBwcm9maWxlcycpOwokdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgpOwoKCiR0aGlzLT5EZWxldGVUZW1wbGF0ZSgpOwoKIwojIEVPRgojCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0NNUyAtIENNUyBNYWRlIFNpbXBsZQojKGMpMjAwNCBieSBUZWQgS3VscCAodGVkQGNtc21hZGVzaW1wbGUub3JnKQojVmlzaXQgb3VyIGhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKI1RoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiNpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyhhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKI1RoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKI01FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKI0dOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiNZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKI0ZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKIwppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CgokZGIgPSAkdGhpcy0+R2V0RGIoKTsKCgovLyBFdmVyeXRoaW5nIHVuZGVyIDMuKiBzZXJpZXMKaWYoIHZlcnNpb25fY29tcGFyZSgkb2xkdmVyc2lvbiwnMi45OScpIDwgMCApCnsKICAvLyBSZW1vdmUgb2xkIGZpbGVzCiAgJGRpcnNfcmVtb3ZlID0gYXJyYXkoCiAgICAnZG9jcycsCiAgICAndGlueW1jZScKICApOwogIGZvcmVhY2ggKCRkaXJzX3JlbW92ZSBhcyAkZGlyX3JlbW92ZSkKICAgIHJlY3Vyc2l2ZV9kZWxldGUoJHRoaXMtPkdldE1vZHVsZVBhdGgoKSAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkZGlyX3JlbW92ZSk7CgoKICAkZmlsZXNfcmVtb3ZlID0gYXJyYXkoCiAgICAnaW1hZ2VzL2Ntc21zbGluay5naWYnLAogICAgJ2ltYWdlcy9kZWxldGUuZ2lmJywKICAgICdpbWFnZXMvZGlyLmdpZicsCiAgICAnaW1hZ2VzL2ZpbGVpY29uLmdpZicsCiAgICAnaW1hZ2VzL2ltYWdlcy5naWYnLAogICAgJ3RlbXBsYXRlcy9hZHZhbmNlZHBhbmVsLnRwbCcsCiAgICAndGVtcGxhdGVzL2ZpbGVwaWNrZXIudHBsJywKICAgICd0ZW1wbGF0ZXMvcGx1Z2luc3BhbmVsLnRwbCcsCiAgICAndGVtcGxhdGVzL3Byb2ZpbGVzcGFuZWwudHBsJywKICAgICd0ZW1wbGF0ZXMvc2V0dGluZ3NwYW5lbC50cGwnLAogICAgJ3RlbXBsYXRlcy9zdHlsZXNwYW5lbC50cGwnLAogICAgJ3RlbXBsYXRlcy90aW55Y29uZmlnLnRwbCcsCiAgICAnYWN0aW9uLmZpbGVwaWNrZXIucGhwJywKICAgICdhY3Rpb24uc2F2ZWFkdmFuY2VkLnBocCcsCiAgICAnYWN0aW9uLnNhdmVwbHVnaW5zLnBocCcsCiAgICAnYWN0aW9uLnNhdmVwcm9maWxlcy5waHAnLAogICAgJ2FjdGlvbi5zYXZlc2V0dGluZ3MucGhwJywKICAgICdhY3Rpb24uc2F2ZXN0eWxlcy5waHAnLAogICAgJ2FjdGlvbi5zdHlsZXNoZWV0LnBocCcsCiAgICAnYWN0aW9uLnRpbnljb25maWcucGhwJywKICAgICdldmVudC5Db3JlLkNvbnRlbnRQb3N0UmVuZGVyLnBocCcsCiAgICAnZmlsZXBpY2tlci5jc3MnLAogICAgJ2ZpbGVwaWNrZXIucGhwJywKICAgICdmdW5jdGlvbi5hZG1pbl9hZHZhbmNlZC5waHAnLAogICAgJ2Z1bmN0aW9uLmFkbWluX3BsdWdpbnMucGhwJywKICAgICdmdW5jdGlvbi5hZG1pbl9wcm9maWxlcy5waHAnLAogICAgJ2Z1bmN0aW9uLmFkbWluX3NldHRpbmdzLnBocCcsCiAgICAnZnVuY3Rpb24uYWRtaW5fc3R5bGVzLnBocCcsCiAgICAnZnVuY3Rpb24uYWRtaW5fdGVzdGFyZWEucGhwJywKICAgICdzdHlsZXNoZWV0LnBocCcsCiAgICAndGlueWNvbmZpZ19nei5waHAnLAogICAgJ3Rpbnljb25maWcucGhwJywKICAgICd0aW55bG9nby5wbmcnLAogICAgJ3RvZG8ucGhwJwogICk7CiAgZm9yZWFjaCAoJGZpbGVzX3JlbW92ZSBhcyAkZmlsZV9yZW1vdmUpCiAgICB1bmxpbmsoJHRoaXMtPkdldE1vZHVsZVBhdGgoKSAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiBzdHJfcmVwbGFjZSgnLycsIERJUkVDVE9SWV9TRVBBUkFUT1IsICRmaWxlX3JlbW92ZSkpOwoKCgogIC8vIFByb2ZpbGVzICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAkZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCRkYik7CiAgJGZsZHMgPSAiCiAgCWlkX3Byb2ZpbGUgSSBLRVkgQVVUTywKICAJaWRfdGVtcGxhdGUgSSwKICAJbmFtZSBDKDI1NSksCiAgCXByaW9yaXR5IEksCiAgCXJlc2l6ZSBDKDIwKSwKICAJYXV0b3Jlc2l6ZSBJLAogIAlwbHVnaW5zIFgsCiAgICBlbmFibGVfbGlua2VyIEksCiAgCXNob3dfbWVudWJhciBJLAogIAltZW51YmFyIEMoMjU1KSwKICAJdXNlX2FkdmFuY2VkX21lbnUgSSwKICAJYWR2YW5jZWRfbWVudSBYLAogIAlzaG93X3Rvb2xiYXIgSSwKICAJdG9vbGJhcjEgWCwKICAJdG9vbGJhcjIgWCwKICAJZW5hYmxlX2NvbnRleHRtZW51IEksCiAgCWNvbnRleHRtZW51IFgsCiAgCXNob3dfc3RhdHVzYmFyIEksCiAgCWlkX2Rlc2lnbiBJLAogIAlsaW5rX2NsYXNzZXMgWCwKICAJaW1hZ2VfY2xhc3NlcyBYLAogICAgc3R5bGVfZm9ybWF0cyBYLAogIAl1c2VfY3VzdG9tX2Jsb2NrX2Zvcm1hdHMgSSwKICAJYmxvY2tfZm9ybWF0cyBDKDI1NSksCiAgCWVuYWJsZV91c2VyX3RlbXBsYXRlcyBJLAogIAllbmFibGVfY3VzdG9tX2Ryb3Bkb3duIEksCiAgCWN1c3RvbV9kcm9wZG93bl90aXRsZSBDKDEwMCksCiAgCWN1c3RvbV9kcm9wZG93biBYLAogIAlleHRyYV9qcyBYLAogIAlleHRlcm5hbF9tb2R1bGVzIFgsCiAgCWV4dGVybmFsX21vZHVsZXNfc2hvd19tZW51dGV4dCBJLAogIAlmaWxlbWFuYWdlcl91c2UgSSwKICAJZmlsZW1hbmFnZXJfZGVsZXRlX2ZpbGVzIEksCiAgCWZpbGVtYW5hZ2VyX2NyZWF0ZV9mb2xkZXJzIEksCiAgCWZpbGVtYW5hZ2VyX2RlbGV0ZV9mb2xkZXJzIEksCiAgCWZpbGVtYW5hZ2VyX3VwbG9hZF9maWxlcyBJLAogIAlmaWxlbWFuYWdlcl9yZW5hbWVfZmlsZXMgSSwKICAJZmlsZW1hbmFnZXJfcmVuYW1lX2ZvbGRlcnMgSSwKICAJZmlsZW1hbmFnZXJfZHVwbGljYXRlX2ZpbGVzIEksCiAgCWZpbGVtYW5hZ2VyX2NvcHlfY3V0X2ZpbGVzIEksCiAgCWZpbGVtYW5hZ2VyX2NvcHlfY3V0X2RpcnMgSSwKICAJZmlsZW1hbmFnZXJfY2htb2RfZmlsZXMgSSwKICAJZmlsZW1hbmFnZXJfY2htb2RfZGlycyBJLAogIAlmaWxlbWFuYWdlcl9wcmV2aWV3X3RleHRfZmlsZXMgSSwKICAJZmlsZW1hbmFnZXJfY3JlYXRlX3RleHRfZmlsZXMgSSwKICAJZmlsZW1hbmFnZXJfZWRpdF90ZXh0X2ZpbGVzIEksCiAgCWZpbGVtYW5hZ2VyX2ltYWdlX3Jlc2l6aW5nIEksCiAgCWZpbGVtYW5hZ2VyX2ltYWdlX3Jlc2l6aW5nX3dpZHRoIEksCiAgCWZpbGVtYW5hZ2VyX2ltYWdlX3Jlc2l6aW5nX2hlaWdodCBJLAogIAlmaWxlbWFuYWdlcl9hdmlhcnlfYWN0aXZlIEksCiAgCWZpbGVtYW5hZ2VyX2F2aWFyeV9hcGlLZXkgQyg2MCkKICAiOwogICR0YWJvcHRhcnJheSA9IGFycmF5KCdteXNxbCcgPT4gJ1RZUEU9TXlJU0FNJyk7CiAgJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKENNU19EQl9QUkVGSVguVGlueU1DRTo6VElOWU1DRV9QUk9GSUxFU19UQUJMRSwgJGZsZHMsICR0YWJvcHRhcnJheSk7CiAgJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKCiAgLy8gUHJvZmlsZV9ncm91cCAqKioqKioqKioqKioqKioqKioqKioqKioqKgogICRmbGRzID0gIgogIAlpZF9wcm9maWxlIEkgS0VZLAogIAlpZF9ncm91cCBJIEtFWQogICI7CiAgJHRhYm9wdGFycmF5ID0gYXJyYXkoJ215c3FsJyA9PiAnVFlQRT1NeUlTQU0nKTsKICAkc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoQ01TX0RCX1BSRUZJWC5UaW55TUNFOjpUSU5ZTUNFX1BST0ZJTEVHUk9VUF9UQUJMRSwgJGZsZHMsICR0YWJvcHRhcnJheSk7CiAgJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKCgoKCgoKICAvLyBDUkVBVEUgVEVNUExBVEUgVFlQRVMKCiAgLy8gSlMKICB0cnkgewogIAkkanNfdGVtcGxhdGVfdHlwZSA9IG5ldyBDbXNMYXlvdXRUZW1wbGF0ZVR5cGUoKTsKICAJJGpzX3RlbXBsYXRlX3R5cGUtPnNldF9vcmlnaW5hdG9yKCR0aGlzLT5HZXROYW1lKCkpOwogIAkkanNfdGVtcGxhdGVfdHlwZS0+c2V0X2RmbHRfZmxhZyh0cnVlKTsKICAJJGpzX3RlbXBsYXRlX3R5cGUtPnNldF9sYW5nX2NhbGxiYWNrKCdUaW55TUNFOjpwYWdlX3R5cGVfbGFuZ19jYWxsYmFjaycpOwogIAkkanNfdGVtcGxhdGVfdHlwZS0+c2V0X2NvbnRlbnRfY2FsbGJhY2soJ1RpbnlNQ0U6OnJlc2V0X3BhZ2VfdHlwZV9kZWZhdWx0cycpOwogIAkkanNfdGVtcGxhdGVfdHlwZS0+c2V0X25hbWUoJ2pzJyk7CiAgCSRqc190ZW1wbGF0ZV90eXBlLT5zZXRfZGVzY3JpcHRpb24oJHRoaXMtPkxhbmcoJ3R5cGVfanNfZGVzY3JpcHRpb24nKSk7CiAgCSRqc190ZW1wbGF0ZV90eXBlLT5yZXNldF9jb250ZW50X3RvX2ZhY3RvcnkoKTsKICAJJGpzX3RlbXBsYXRlX3R5cGUtPnNhdmUoKTsKICB9CiAgY2F0Y2ggKENtc0V4Y2VwdGlvbiAkZSkgewogIAkvLyBsb2cgaXQKICAJZGVidWdfdG9fbG9nKF9fRklMRV9fLic6Jy5fX0xJTkVfXy4nICcuJGUtPkdldE1lc3NhZ2UoKSk7CiAgCWF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJ0luc3RhbGxhdGlvbiBFcnJvcjogJy4kZS0+R2V0TWVzc2FnZSgpKTsKICB9CgoKCiAgLy8gVElOWU1DRVRFTVBMQVRFIDsgZm9yIHRoZSB0ZW1wbGF0ZSBwbHVnaW4KICB0cnkgewogIAkkdGlueXRwbF90ZW1wbGF0ZV90eXBlID0gbmV3IENtc0xheW91dFRlbXBsYXRlVHlwZSgpOwogIAkkdGlueXRwbF90ZW1wbGF0ZV90eXBlLT5zZXRfb3JpZ2luYXRvcigkdGhpcy0+R2V0TmFtZSgpKTsKICAJJHRpbnl0cGxfdGVtcGxhdGVfdHlwZS0+c2V0X2RmbHRfZmxhZyh0cnVlKTsKICAJJHRpbnl0cGxfdGVtcGxhdGVfdHlwZS0+c2V0X2xhbmdfY2FsbGJhY2soJ1RpbnlNQ0U6OnBhZ2VfdHlwZV9sYW5nX2NhbGxiYWNrJyk7CiAgCSR0aW55dHBsX3RlbXBsYXRlX3R5cGUtPnNldF9jb250ZW50X2NhbGxiYWNrKCdUaW55TUNFOjpyZXNldF9wYWdlX3R5cGVfZGVmYXVsdHMnKTsKICAJJHRpbnl0cGxfdGVtcGxhdGVfdHlwZS0+c2V0X25hbWUoJ3VzZXJ0ZW1wbGF0ZScpOwogIAkkdGlueXRwbF90ZW1wbGF0ZV90eXBlLT5zZXRfZGVzY3JpcHRpb24oJHRoaXMtPkxhbmcoJ3R5cGVfdXNlcnRlbXBsYXRlX2Rlc2NyaXB0aW9uJykpOwogIAkkdGlueXRwbF90ZW1wbGF0ZV90eXBlLT5yZXNldF9jb250ZW50X3RvX2ZhY3RvcnkoKTsKICAJJHRpbnl0cGxfdGVtcGxhdGVfdHlwZS0+c2F2ZSgpOwogIH0KICBjYXRjaCAoQ21zRXhjZXB0aW9uICRlKSB7CiAgCS8vIGxvZyBpdAogIAlkZWJ1Z190b19sb2coX19GSUxFX18uJzonLl9fTElORV9fLicgJy4kZS0+R2V0TWVzc2FnZSgpKTsKICAJYXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKSwnSW5zdGFsbGF0aW9uIEVycm9yOiAnLiRlLT5HZXRNZXNzYWdlKCkpOwogIH0KCgogIC8vIENSRUFURSBTQU1QTEUgLyBERUZBVUxUIFRFTVBMQVRFUwogICR1aWQgPSBnZXRfdXNlcmlkKCk7CiAgdHJ5IHsKICAJJGZuID0gZGlybmFtZShfX0ZJTEVfXykuRElSRUNUT1JZX1NFUEFSQVRPUi4ndGVtcGxhdGVzJy5ESVJFQ1RPUllfU0VQQVJBVE9SLidvcmlnX2pzX3RlbXBsYXRlLnRwbCc7CiAgCWlmKCBmaWxlX2V4aXN0cyggJGZuICkgKSB7CiAgICAgICR0ZW1wbGF0ZSA9IEBmaWxlX2dldF9jb250ZW50cygkZm4pOwogICAgICAkc2FtcGxlX3RwbCA9IG5ldyBDbXNMYXlvdXRUZW1wbGF0ZSgpOwogICAgICAkc2FtcGxlX3RwbC0+c2V0X25hbWUoJ1RpbnlNQ0UgZGVmYXVsdCBKYXZhc2NyaXB0Jyk7CiAgICAgICRzYW1wbGVfdHBsLT5zZXRfb3duZXIoJHVpZCk7CiAgICAgICRzYW1wbGVfdHBsLT5zZXRfY29udGVudCgkdGVtcGxhdGUpOwogICAgICAkc2FtcGxlX3RwbC0+c2V0X3R5cGUoJGpzX3RlbXBsYXRlX3R5cGUpOwogICAgICAkc2FtcGxlX3RwbC0+c2V0X3R5cGVfZGZsdChUUlVFKTsKICAgICAgJHNhbXBsZV90cGwtPnNhdmUoKTsKICAgIH0KICB9CiAgY2F0Y2goIENtc0V4Y2VwdGlvbiAkZSApIHsKICAgIC8vIGxvZyBpdAogICAgZGVidWdfdG9fbG9nKF9fRklMRV9fLic6Jy5fX0xJTkVfXy4nICcuJGUtPkdldE1lc3NhZ2UoKSk7CiAgICBhdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCdJbnN0YWxsYXRpb24gRXJyb3I6ICcuJGUtPkdldE1lc3NhZ2UoKSk7CiAgfQoKCgogIC8vIElOSVRJQUwgUFJPRklMRVMgOiBVUEdSQURFIEZST00gUFJFVklPVVMgInByb2ZpbGVzIgogIC8vIENsZWFyIHRoZSBvbGQgcGx1Z2lucyBzdHJpbmc6IHJlbW92ZXMgcGx1Z2lucyB0aGF0IGFyZSBub3QgaW4gdGhlIG5ldyBUaW55TUNFIHBsdWdpbiBkaXIKICBmdW5jdGlvbiBjbGVhcl9wbHVnaW5zKCRvbGRfcGx1Z2lucywgJG1vZCkKICB7CiAgCWlmIChlbXB0eSgkb2xkX3BsdWdpbnMpKSByZXR1cm4gJyc7CgogIAkvLyBORVcgbmFtZXMKICAJJHJlcGxhY2VfbWFwID0gYXJyYXkoCiAgCQknYWR2aW1hZ2UnPT4naW1hZ2UnLAogIAkJJ2FkdmxpbmsnPT4nbGluaycKICAJKTsKICAJJHRvX3JlcGxhY2UgPSBhcnJheV9rZXlzKCRyZXBsYWNlX21hcCk7CiAgCSRyZXBsYWNlX3dpdGggPSBhcnJheV92YWx1ZXMoJHJlcGxhY2VfbWFwKTsKICAJJG9sZF9wbHVnaW5zID0gc3RyX3JlcGxhY2UoJHRvX3JlcGxhY2UsICRyZXBsYWNlX3dpdGgsICRvbGRfcGx1Z2lucyk7CgogIAkvLyBGSUxURVIKICAJJG9sZF9wbHVnaW5zID0gZXhwbG9kZSgnLCcsICRvbGRfcGx1Z2lucyk7CiAgCSRwbHVnaW5zID0gJyc7CiAgCSRwbHVnaW5zX2RpciA9IGNtc19qb2luX3BhdGgoJG1vZC0+R2V0TW9kdWxlUGF0aCgpLCAnbGliJywgJ2pzJywgJ3RpbnltY2UnLCAncGx1Z2lucycpOwogIAkkcGx1Z2luc192YWxpZCA9IGFycmF5KCk7CgogIAlmb3JlYWNoIChnbG9iKCRwbHVnaW5zX2RpciAuICcvKicpIGFzICRkaXIpCiAgCXsKICAJCWlmIChpc19kaXIoJGRpcikpCiAgCQl7CiAgCQkJJHBsdWdpbnNfdmFsaWRbXSA9IGJhc2VuYW1lKCRkaXIpOwogIAkJfQogIAl9CgogIAkkcGx1Z2lucyA9IGFycmF5X2ludGVyc2VjdCgkb2xkX3BsdWdpbnMsICRwbHVnaW5zX3ZhbGlkKTsKICAJJHBsdWdpbnMgPSBpbXBsb2RlKCcgJywgJHBsdWdpbnMpOwoKICAJcmV0dXJuICRwbHVnaW5zOwogIH0KCiAgLy8gVXBncmFkZSB0aGUgdG9vbGJhcgogIGZ1bmN0aW9uIGNsZWFyX3Rvb2xiYXIoJG9sZF90b29sYmFyKQogIHsKICAgICRyZXBsYWNlX21hcCA9IGFycmF5KAogICAgICAnLCcgPT4gJyAnLAogICAgICAnc2VwYXJhdG9yJyA9PiAnfCcsCiAgICAgICdqdXN0aWZ5bGVmdCcgPT4gJ2FsaWdubGVmdCcsCiAgICAgICdqdXN0aWZ5Y2VudGVyJz0+J2FsaWduY2VudGVyJywKICAgICAgJ2p1c3RpZnlyaWdodCc9PidhbGlnbnJpZ2h0JywKICAgICAgJ2p1c3RpZnlmdWxsJz0+J2FsaWduanVzdGlmeScsCiAgICAgICdjbGVhbnVwJz0+JycsCiAgICAgICdoZWxwJz0+JycsCiAgICAgICdzdWInPT4nc3Vic2NyaXB0JywKICAgICAgJ3N1cCc9PidzdXBlcnNjcmlwdCcsCiAgICAgICdmb3JlY29sb3JwaWNrZXInPT4nJywKICAgICAgJ2JhY2tjb2xvcnBpY2tlcic9PicnLAogICAgICAndmlzdWFsYWlkJz0+J3Zpc3VhbGNoYXJzJywKICAgICAgJ2FkdmhyJz0+J2hyJywKICAgICAgJ2Vtb3Rpb25zJz0+J2Vtb3RpY29ucycsCiAgICAgICdmdWxscGFnZSc9PicnLAogICAgICAnaWVzcGVsbCc9PidzcGVsbGNoZWNrZXInLAogICAgICAnY21zbGlua2VyJz0+J2Ntc21zX2xpbmtlcicsCiAgICAgICdnYWxsZXJ5X3BpY2tlcic9Pidtb2R1bGVfZ2FsbGVyeScKICAgICk7CiAgICAkdG9fcmVwbGFjZSA9IGFycmF5X2tleXMoJHJlcGxhY2VfbWFwKTsKICAgICRyZXBsYWNlX3dpdGggPSBhcnJheV92YWx1ZXMoJHJlcGxhY2VfbWFwKTsKICAgIHJldHVybiBzdHJfcmVwbGFjZSgkdG9fcmVwbGFjZSwgJHJlcGxhY2Vfd2l0aCwgJG9sZF90b29sYmFyKTsKICB9CgogIC8vIEdldCB0aGUgY3VycmVudCBwcmVmZXJlbmNlcwogICRwcmVmc190b19nZXQgPSBhcnJheSgKICAgICdlZGl0b3JfaGVpZ2h0X2F1dG8nLAogICAgJ2FsbG93c2NhbGluZycsCiAgICAnYWxsb3dyZXNpemluZycsCiAgICAnc2NhbGluZ3dpZHRoJywKICAgICdzY2FsaW5naGVpZ2h0JywKICAgICd0b29sYmFyMScsCiAgICAndG9vbGJhcjInLAogICAgJ3Rvb2xiYXIzJywKICAgICdhbGxvd3VwbG9hZCcsCiAgICAnYWR2YW5jZWRfdG9vbGJhcjEnLAogICAgJ2FkdmFuY2VkX3Rvb2xiYXIyJywKICAgICdhZHZhbmNlZF90b29sYmFyMycsCiAgICAnYWR2YW5jZWRfYWxsb3d1cGxvYWQnLAogICAgJ3BsdWdpbnMnLAogICAgJ2N1c3RvbWRyb3Bkb3duJywKICAgICdsb2FkY21zbGlua2VyJywKICAgICdhbGxvd190YWJsZXMnLAogICAgJ2FkdmFuY2VkX2FsbG93X3RhYmxlcycsCiAgICAnZnJvbnRfYWxsb3dfdGFibGVzJwogICk7CiAgZm9yZWFjaCAoJHByZWZzX3RvX2dldCBhcyAkcHJlZikKICAgICQkcHJlZiA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCRwcmVmLCAnJyk7CgogIC8vIEFuZCBjbGVhciBvbGQgcHJlZmVyZW5jZXMKICAvLyAkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgpOyAvLyBUT0RPCgogIC8vIENyZWF0ZSBwcm9maWxlcwogIC8vIENvbW1vbiBkYXRhCiAgJHByb2ZpbGUgPSBuZXcgdGlueW1jZV9wcm9maWxlKCk7CiAgc3dpdGNoKCRhbGxvd3Jlc2l6aW5nKSB7CiAgICBjYXNlICdub25lJzoKICAgICAgJHByb2ZpbGUtPnJlc2l6ZSA9ICcwJzsKICAgICAgYnJlYWs7CiAgICBjYXNlICdib3RoJzoKICAgICAgJHByb2ZpbGUtPnJlc2l6ZSA9ICdib3RoJzsKICAgICAgYnJlYWs7CiAgICBjYXNlICdoZWlnaHQnOgogICAgICAkcHJvZmlsZS0+cmVzaXplID0gJzEnOwogICAgICBicmVhazsKICB9CiAgJHByb2ZpbGUtPmF1dG9yZXNpemUgPSAkZWRpdG9yX2hlaWdodF9hdXRvOwogIGlmICgkYWxsb3dzY2FsaW5nKQogIHsKICAgICRwcm9maWxlLT5maWxlbWFuYWdlcl9pbWFnZV9yZXNpemluZyA9IDE7CiAgICAkcHJvZmlsZS0+ZmlsZW1hbmFnZXJfaW1hZ2VfcmVzaXppbmdfd2lkdGggPSAkc2NhbGluZ3dpZHRoOwogICAgJHByb2ZpbGUtPmZpbGVtYW5hZ2VyX2ltYWdlX3Jlc2l6aW5nX2hlaWdodCA9ICRzY2FsaW5naGVpZ2h0OwogIH0KICBpZiAoIWVtcHR5KCRjdXN0b21kcm9wZG93bikpCiAgewogICAgJHByb2ZpbGUtPmVuYWJsZV9jdXN0b21fZHJvcGRvd24gPSB0cnVlOwogICAgJHByb2ZpbGUtPmN1c3RvbV9kcm9wZG93biA9ICRjdXN0b21kcm9wZG93bjsKICB9CiAgJHByb2ZpbGUtPmVuYWJsZV9saW5rZXIgPSAkbG9hZGNtc2xpbmtlcjsKCgogIC8vIEFETUlOICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAkcHJvZmlsZS0+bmFtZSA9ICR0aGlzLT5MYW5nKCdpbnN0YWxsX3Byb2ZpbGVfYWRtaW4nKTs7CiAgJHByb2ZpbGUtPnRvb2xiYXIxID0gY2xlYXJfdG9vbGJhcigkYWR2YW5jZWRfdG9vbGJhcjEpOwogICRwcm9maWxlLT50b29sYmFyMiA9IGNsZWFyX3Rvb2xiYXIoJGFkdmFuY2VkX3Rvb2xiYXIyKTsKICBpZiAoJGFkdmFuY2VkX2FsbG93dXBsb2FkKQogICAgJHByb2ZpbGUtPmZpbGVtYW5hZ2VyX3VzZSA9IHRydWU7CgogICRwcm9maWxlLT5wbHVnaW5zID0gY2xlYXJfcGx1Z2lucygkcGx1Z2lucywgJHRoaXMpOwogIGlmICgkYWR2YW5jZWRfYWxsb3dfdGFibGVzKQogICAgJHByb2ZpbGUtPnBsdWdpbnMgLj0gJyB0YWJsZSc7CgogICRwcm9maWxlLT5zYXZlKCk7CiAgdGlueW1jZV91dGlsczo6YWRkX2dyb3Vwc190b19wcm9maWxlKCRwcm9maWxlLT5pZF9wcm9maWxlLCBhcnJheSgxKSk7IC8vIElEIDEgaXMgYWRtaW4KCgogIC8vIFNUQU5EQVJEIC0gb3RoZXIgdXNlcnMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICRwcm9maWxlLT5pZF9wcm9maWxlID0gZmFsc2U7CiAgJHByb2ZpbGUtPm5hbWUgPSAkdGhpcy0+TGFuZygnaW5zdGFsbF9wcm9maWxlX3N0YW5kYXJkJyk7OwogICRwcm9maWxlLT50b29sYmFyMSA9IGNsZWFyX3Rvb2xiYXIoJHRvb2xiYXIxKTsKICAkcHJvZmlsZS0+dG9vbGJhcjIgPSBjbGVhcl90b29sYmFyKCR0b29sYmFyMik7CiAgaWYgKCRhbGxvd3VwbG9hZCkKICAgICRwcm9maWxlLT5maWxlbWFuYWdlcl91c2UgPSB0cnVlOwoKICAkcHJvZmlsZS0+cGx1Z2lucyA9IGNsZWFyX3BsdWdpbnMoJHBsdWdpbnMsICR0aGlzKTsKICBpZiAoJGFsbG93X3RhYmxlcykKICAgICRwcm9maWxlLT5wbHVnaW5zIC49ICcgdGFibGUnOwoKICAkcHJvZmlsZS0+c2F2ZSgpOwogICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdpZF9kZWZhdWx0X3Byb2ZpbGUnLCAkcHJvZmlsZS0+aWRfcHJvZmlsZSk7CgoKICAvLyBGUk9OVEVORCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgJHByb2ZpbGUtPmlkX3Byb2ZpbGUgPSBmYWxzZTsKICAkcHJvZmlsZS0+bmFtZSA9ICR0aGlzLT5MYW5nKCdpbnN0YWxsX3Byb2ZpbGVfZnJvbnRlbmQnKTsKICAkcHJvZmlsZS0+dG9vbGJhcjEgPSAnYm9sZCBpdGFsaWMgdW5kZXJsaW5lIHwgZm9ybWF0c2VsZWN0JzsgLy8gUmVzZXQgdG8gbWluaW1hbAogICRwcm9maWxlLT50b29sYmFyMiA9ICcnOyAvLyBKdXN0IGluIGNhc2UgdGhlIGRlZmF1bHQgcHJvZmlsZSBmcm9tIHRoZSB0aW55bWNlX3Byb2ZpbGUgY2xhc3MgY2hhbmdlcwogICRwcm9maWxlLT5zaG93X21lbnViYXIgPSBmYWxzZTsKICAkcHJvZmlsZS0+ZW5hYmxlX2xpbmtlciA9IGZhbHNlOwogICRwcm9maWxlLT5maWxlbWFuYWdlcl91c2UgPSBmYWxzZTsKICAkcHJvZmlsZS0+cGx1Z2lucyA9IGNsZWFyX3BsdWdpbnMoJHBsdWdpbnMsICR0aGlzKTsKICBpZiAoJGZyb250X2FsbG93X3RhYmxlcykKICAgICRwcm9maWxlLT5wbHVnaW5zIC49ICcgdGFibGUnOwoKICAkcHJvZmlsZS0+c2F2ZSgpOwogIHRpbnltY2VfdXRpbHM6OmFkZF9ncm91cHNfdG9fcHJvZmlsZSgkcHJvZmlsZS0+aWRfcHJvZmlsZSwgLTEpOyAvLyBJRCAtMSBpcyBmcm9udGVuZAoKCgoKICAvLyBQRVJNSVNTSU9OUwogICR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdNYW5hZ2UgVGlueU1DRSBwcm9maWxlcycsICdNYW5hZ2UgVGlueU1DRSBwcm9maWxlcycpOwoKCiAgLy8gU0FMVCBGT1IgQUNDRVNTIEtFWSBGT1IgUkVTUE9OU0lWRSBGSUxFIE1BTkFHRVIKICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZmlsZW1hbmFnZXJfc2FsdCcsIHN1YnN0cihtZDUocmFuZCgpKSwgMCwgMTApKTsKCgoKfQoKCmlmKCB2ZXJzaW9uX2NvbXBhcmUoJG9sZHZlcnNpb24sJzMuMC1iZXRhMicpIDwgMCApCnsKICAvLyBBZGQgdGhlICJmb3JjZV9wX3Jvb3RibG9jayIgZGF0YSB0byBwcm9maWxlCiAgJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSgkZGIpOwogICRzcWxhcnJheSA9ICRkaWN0LT5BZGRDb2x1bW5TUUwoQ01TX0RCX1BSRUZJWC5UaW55TUNFOjpUSU5ZTUNFX1BST0ZJTEVTX1RBQkxFLCdmb3JjZWRfcm9vdF9ibG9jayBJJyk7CiAgJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKICAkcXVlcnkgPSAnVVBEQVRFICcuQ01TX0RCX1BSRUZJWC5UaW55TUNFOjpUSU5ZTUNFX1BST0ZJTEVTX1RBQkxFLicgU0VUIGZvcmNlZF9yb290X2Jsb2NrPTEnOwogICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwp9CgoKCgoKCmlmKCB2ZXJzaW9uX2NvbXBhcmUoJG9sZHZlcnNpb24sJzMuMScpIDwgMCApCnsKICAgIC8vIEFkZCB0aGUgcmVsYXRpdmVfdXJscyBvcHRpb24KICAgICRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsKICAgICRzcWxhcnJheSA9ICRkaWN0LT5BZGRDb2x1bW5TUUwoQ01TX0RCX1BSRUZJWC5UaW55TUNFOjpUSU5ZTUNFX1BST0ZJTEVTX1RBQkxFLCdyZWxhdGl2ZV91cmxzIEknKTsKICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKICAgICRzcWxhcnJheSA9ICRkaWN0LT5BZGRDb2x1bW5TUUwoQ01TX0RCX1BSRUZJWC5UaW55TUNFOjpUSU5ZTUNFX1BST0ZJTEVTX1RBQkxFLCdpbWFnZV9hZHZ0YWIgSScpOwogICAgJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKICAgICRxdWVyeSA9ICdVUERBVEUgJy5DTVNfREJfUFJFRklYLlRpbnlNQ0U6OlRJTllNQ0VfUFJPRklMRVNfVEFCTEUuJyBTRVQgcmVsYXRpdmVfdXJscz0xLCBpbWFnZV9hZHZ0YWI9MCc7CiAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKfQoKCgoKCgoKCgoKaWYgKHZlcnNpb25fY29tcGFyZSgkb2xkdmVyc2lvbiwgJzMuMycpIDwgMCkgewogICAgLy8gUmVwbGFjZSBBdmlhcnkKICAgICRkaWN0ID0gbmV3RGF0YURpY3Rpb25hcnkoJGRiKTsKICAgICRzcWxhcnJheSA9ICRkaWN0LT5yZW5hbWVDb2x1bW5TUUwoQ01TX0RCX1BSRUZJWCAuIFRpbnlNQ0U6OlRJTllNQ0VfUFJPRklMRVNfVEFCTEUsICdmaWxlbWFuYWdlcl9hdmlhcnlfYWN0aXZlJywgJ2ZpbGVtYW5hZ2VyX3R1aV9hY3RpdmUnLCAnZmlsZW1hbmFnZXJfdHVpX2FjdGl2ZSBJJyk7CiAgICAkZGljdC0+ZXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgogICAgJHNxbGFycmF5ID0gJGRpY3QtPmRyb3BDb2x1bW5TUUwoQ01TX0RCX1BSRUZJWCAuIFRpbnlNQ0U6OlRJTllNQ0VfUFJPRklMRVNfVEFCTEUsICdmaWxlbWFuYWdlcl9hdmlhcnlfYXBpS2V5Jyk7CiAgICAkZGljdC0+ZXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgogICAgJHNxbGFycmF5ID0gJGRpY3QtPmRyb3BDb2x1bW5TUUwoQ01TX0RCX1BSRUZJWCAuIFRpbnlNQ0U6OlRJTllNQ0VfUFJPRklMRVNfVEFCTEUsICdlbmFibGVfY29udGV4dG1lbnUnKTsKICAgICRkaWN0LT5leGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiAgICAkc3FsYXJyYXkgPSAkZGljdC0+QWRkQ29sdW1uU1FMKENNU19EQl9QUkVGSVguVGlueU1DRTo6VElOWU1DRV9QUk9GSUxFU19UQUJMRSwnY3NzX2ZpbGVzIFgnKTsKICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiAgICAkc3FsYXJyYXkgPSAkZGljdC0+QWRkQ29sdW1uU1FMKENNU19EQl9QUkVGSVguVGlueU1DRTo6VElOWU1DRV9QUk9GSUxFU19UQUJMRSwndXNlcl90ZW1wbGF0ZXNfZmlsZXNfZGlyIEMoMjUwKScpOwogICAgJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwp9]]></data>
	</file>
	<file>
	  <filename>/moduleinfo.ini</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[W21vZHVsZV0KbmFtZSA9ICJUaW55TUNFIgp2ZXJzaW9uID0gIjMuMy4yIgphdXRob3IgPSAiTW9ydGVuIFBvdWxzZW4gKHNpbG1hcmlsbGlvbiksIFJvbGYgVGphc3NlbnMgKHJvbGYpLCBNYXRoaWV1IE11dGhzIChhaXJlbGlicmUpIgphdXRob3JlbWFpbCA9ICJjb250YWN0QGFpcmVsaWJyZS5mciIKbWluY21zdmVyc2lvbiA9ICIyLjIuMTEiCmxhenlsb2FkYWRtaW4gPSAxCmxhenlsb2FkZnJvbnRlbmQgPSAxCg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/responsive_filemanager/changelog.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[UmVzcG9uc2l2ZSBGaWxlbWFuYWdlciBDaGFuZ2Vsb2cgCgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKiAgUkZNIDkuMTMuMQoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSBmb2xkZXIgY3JlYXRpb24gZml4Ci0gYmxhY2tsaXN0IGZpeAotIHBocCA8IDUuNiBjb21wYXRpYmlsaXR5IGZpeAoKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiogIFJGTSA5LjEzLjAKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gbXVsdGlwbGUgZmlsZSBzZWxlY3Rpb246IHlvdSBjYW4gZGVsZXRlIG11bHRpcGxlIGZpbGVzLCB5b3UgY2FuIHNlbGVjdCBtdWx0aXBsZSBmaWxlIChuLmIuIGlmIHlvdSBzZWxlY3QgbXVsdGlwbGUgZmlsZXMgb24gc3RhbmQgYWxvbmUgbW9kZSBpdCByZXR1cm4gYSBqc29uIGxpc3Qgb2YgdXJscywgaWYgeW91IHVzZSBlZGl0b3Igd2l0aCBub3JtYWwgbW9kZSByZXR1cm4gb25seSB0aGUgZmlyc3QgYW5kIGlmIHlvdSB1c2UgdGlueW1jZSB3aXRoIHJlc3BvbnNpdmVmaWxlbWFuYWdlciBwbHVnaW4gcmV0dXJuIGFsbCBmaWxlcyBvbiBlZGl0b3IpCi0geW91IGNhbiBkaXNhYmxlIG1pbWUgdHlwZSByZW5hbWluZyBvbiBjb25maWcKLSBibGFja2xpc3QgZXh0ZW5zaW9ucyBhdmFpbGFibGUgb24gY29uZmlnCi0gZml4ZWQgcHJlY29tcGlsZWQgdGVzdCBvbiBkdXBsaWNhdGlvbgotIHJmbSByZW1lbWJlciB0aGUgbGFzdCBmb2xkZXIgd2hlbiByZXR1cm4gdG8gZmlsZW1hbmFnZXIKLSBhZGRlZCBtaW1lIHR5cGUgLnJhcgotIGZpeGVkIGZvbGRlciBwZXJtaXNzaW9uIHRvIGdldCBjb25maWcgdmFsdWUKLSBmaXhlZCBhbiBlcnJvciBvbiBmb2xkZXIgcmVuYW1pbmcKLSBhIGxvdCBvZiBvdGhlcnMgYnVncyBmaXhlZAoKCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqICBSRk0gOS4xMi4yCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIGZpeGVkIGEgc2VjdXJpdHkgdnVsbmVyYWJpbGl0eSAodGhhbmtzIHRvIHNhc2hhcHRydykKLSBmaXhlZCBvdGhlciBtaW5vciBwcm9ibGVtcwoKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiogIFJGTSA5LjEyLjEKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gZml4IEZUUCBzdXBwb3J0Ci0gZml4IHByb2JsZW0gd2l0aCBzdWJmb2xkZXIgc2Vzc2lvbgoKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiogIFJGTSA5LjEyLjAKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gZml4ZWQgbXVsdGlwbGUgc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzICh0aGFua3MgdG8gUnlhbiBEZXdodXJzdCAtIEJTYyBFdGhpY2FsIEhhY2tpbmcgZm9yIENvbXB1dGVyIFNlY3VyaXR5LCBDQ05BKQotIGZpeGVkIGxhenkgbG9hZGluZyBwcm9ibGVtcyB3aXRoIGEgbmV3IHBsdWdpbgotIGNvcHkgdXJsIHdpdGhvdXQgZmxhc2ggd2l0aCBjbGlwYm9hcmQuanMKLSByZW1vdmVkIGphdmEgdXBsb2FkZXIgYW5kIGludHJvZHVjZSBuZXcgdXBsb2FkIHN5c3RlbSB3aXRoIGNhbnVja3MgcGFydAotIG5ldyB1cGxvYWQgbWV0aG9kIHdpdGggalF1ZXJ5LUZpbGUtVXBsb2FkCi0gcmVtb3ZlZCB2aWV3ZXJfanMgYW5kIHN1YnN0aXR1dGVkIHdpdGggZ29vZ2xlIHByZXZpZXcKLSBmaXggcHJvYmxlbSB3aXRoIHVybCB1cGxvYWQKLSBtdWx0aXBsZSBmaWxlcywgZm9sZGVyIHVwbG9hZCBwZXJtaXNzaW9uIGFsc28gV0lUSCBSRUNVUlNJVkUgRk9MREVSIFVQTE9BRAotIGZpeCB0aGUgY29uZmlnLnBocCBpbmNsdXNpb24gb24gc3ViZm9sZGVycyBzZWUgQ1VTVE9NSVNFIENPTkZJR1VSQVRJT04gRk9SIEVBQ0ggRk9MREVSIG9uIGRvY3VtZW50YXRpb24KLSBSVEwgc3R5bGVzaGVldCBvbiByZXBvc2l0b3J5IChpZiB5b3Ugd2FudCB0byB1c2Ugc2ltcGx5IGluY2x1ZGUgb24gZGlhbG9nLnBocCkKLSB5b3UgY2FuIG5vdyBkcm9wIGZpbGVzL2ZvbGRlcnMgZXZlcnl3aGVyZSB0byB1cGxvYWQKCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqICBSRk0gOS4xMS4zCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIGZpeGVkIG11bHRpcGxlIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcyAodGhhbmtzIHRvIFdpc3dhdCBBc3dhbWVuYWt1bCAoTmljaykpCi0gdXJsIHVwbG9hZCB0b2dnbGUKLSBmaXhlZCB1cGxvYWQgeG1sCi0gcHJldHRpZnkgaW1wcm92ZW1lbnQKLSBhZGRlZCBjYWQgcHJldmlldwotIG90aGVyIG1pbm9yIGJ1ZyBmaXhlcwoKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiogIFJGTSA5LjExLjAKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gZml4ZWQgbXVsdGlwbGUgc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzICh0aGFua3MgdG8gQ0VSVC1XIGFuZCBEYXZpZGUgR2lyYXJkaSBmcm9tIE91dHBvc3QyNCkKLSBBZGQgRlRQIGJldGEgc3VwcG9ydAotIFVwbG9hZCBmcm9tIFVSTAotIEFkZCB3YXRlcm1hcmsgb24gaW1hZ2VzCi0gZml4ZWQgcHJvYmxlbSB3aXRoIHNvbWUgZmlsZSB0eXBlIG9uIHVwbG9hZAotIGZpeGVkIGEgcHJvYmxlbSB3aXRoIGNoYW5nZSBsYW5ndWFnZQotIGZpeGVkIGEgcHJvYmxlbSB3aXRoIHJlbmFtZQotIGZpeGVkIGEgcHJvYmxlbSB3aXRoIHVwbG9hZCBtaW5lIHR5cGUKLSBmaXhlZCBtZW1vcnlfZXJyb3IgYm9vbCBpbmRpY2F0b3IKLSBhZGQgY29uZmlndXJhdGlvbiB0byBhZGQgJnRpbWUgdG8gaW1hZ2UgdG8gcHJldmVudCBjaGFjaGluZwotIG90aGVyIGZpeGVzCgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKiAgUkZNIDkuMTAuMgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSBmaXhlZCBEb3dubG9hZCBvZiBsYXJnZSBmaWxlCi0gYWRkZWQgcGF1c2UgcmVzdW1lIGRvd25sb2FkCi0gZml4ZWQgcHJvYmxlbSB3aXRoIGJhc2VfdXJsIGZ1bmN0aW9uCi0gcmVtb3ZlZCBzZXRfdGltZV9saW1pdCBjYWxsCgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKiAgUkZNIDkuMTAuMQoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSBub3cgeW91IGNhbiBwYXNzIGF2YWlsYWJsZSBleHRlbnNpb25zIGxpc3QgaW4gdXJsIChleC4geW91IGNhbiBzaG93IG9ubHkgZXhjZWwgZmlsZXMpCi0gZml4ZWQgYSBwcm9ibGVtIHdpdGggcGhwPDUuMwotIHJlbWVtYmVyIGZpbHRlciBhbmQgc29ydCBhZnRlciByZWZyZXNoCi0gYWRkZWQgY29uZmlnIHRvZ2dsZSB0byBzaG93L2hpZGUgZmlsdGVyIGJ1dHRvbnMgYW5kIGxhbmd1YWdlIHNlbGVjdGlvbiBidXR0b24KLSBmaXhlZCBhIHByb2JsZW0gd2hlbiB5b3UgY2xpY2sgb24gbmFtZWZpbGUgbGFiZWwgKHByZXZpb3VzbHkgd2FzIGVxdWFsIHRvIGNsaWNrIHR3byB0aW1lcykKLSBmaXhlZCBhIHByb2JsZW0gd2l0aCByZWxhdGl2ZSBwYXRoIHdpdGggZm9sZGVyICh0aGFua3MgdG8gZ29yZG9uLW1hdHQpCi0gZml4ZWQgYSBwcm9ibGVtIHdpdGggbWltZXR5cGUgaW4gc29tZSBjYXNlcwotIGZpeGVkIGEgcHJvYmxlbSB3aXRoIGNhY2hlIG9uIGltYWdlIGVkaXRvciBpbmNsdWRlCi0gZml4ZWQgYSBwcm9ibGVtIHdpdGggKyBjaGFyIG9uIGZvbGRlcnMgbmFtZQoKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiogIFJGTSA5LjEwLjAKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gYWRkZWQgdG90YWwgbWF4IHNpemUgY29udHJvbCB0byBsaW1pdCB0aGUgc2l6ZSBvZiBhbGwgZmlsZXMgaW50bwpzb3VyY2UgZm9sZGVyICh5b3UgY2FuIGNvbnRyb2wgaXQgaW4gY29uZmlnLnBocCkgKHRoYW5rcyB0byBTdGVwaGFuZSBNRVJDSUVSKQotIGltcHJvdmVkIHRoZSBlcnJvciBtZXNzYWdlcyAodGhhbmtzIHRvIFN0ZXBoYW5lIE1FUkNJRVIpCi0gdXBkYXRlIGpwbGF5ZXIKLSBmaXhlZCBhIGluY29ycmVjdCBjbG9zaW5nIG9mIHVwbG9hZCBtb2RhbAotIGZpeGVkIGxvd2VyY2FzZSBvbiBjb252ZXJ0X3NwYWNlcyBhY3RpdmUgYW5kIGFkZCBsb3dlcl9jYXNlIG9wdGlvbiBvbiBjb25maWcucGhwCi0gYWRkIG1pbWV0eXBlIGNvbnRyb2wgb24gdXBsb2FkIChleC4gaWYgaSByZW5hbmUgaW1nLmpwZyB0byBpbWcucGRmIGFuZCB1cGxvYWQgdG8gZmlsZW1hbmFuZ2VyIHRoZSBzeXN0ZW0gY2hlY2sgdGhlIHRpbWUgdHlwZSBhbmQgY29udmVydGUgaXQgdG8gaW1nLmpwZykKLSBmaXhlZCBwZXJtaXNzaW9uIGVycm9yIG9uIGZpbGVzIGFuZCBmb2xkZXJzCi0gb3RoZXIgZml4CgoKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiogIFJGTSA5LjkuNwoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSBmaXhlZCBwZGYgcHJldmlldwotIGZpeGVkIGEgYnVnIHdpdGggc2Vzc2lvbiBzdWJmb2xkZXIgZm9sZGVyIGNyZWF0aW9uCi0gZml4ZWQgYSBidWcgd2l0aCBmb2xkZXIgY3JlYXRpb24KLSBmaXhlZCBhIHByb2JsZW0gd2l0aCBpZSBhbmQgYWxsb3dfdXJsX2ZvcGVuIHNlcnZlciBjb25maWcKLSBmaXhlZCBhIHByb2JsZW0gd2l0aCBmb2xkZXIgY29weQotIGZpeGVkIGEgcHJvYmxlbSB3aXRoIHJlbGF0aXZlIGZvbGRlciB1cmwgZXhwb3J0Ci0gZml4ZWQgZXJyb3IgJ1R5cGVFcnJvcjogJCBpcyBub3QgYSBmdW5jdGlvbicKLSBmaXhlZCBhIHByb2JsZW0gd2l0aCBsYW5nIGluIHF1ZXJ5IHN0cmluZwotIGZpeGVkIGEgcHJvYmxlbSB3aXRoIGRyYWcmZHJvcCBvbiBhbmRyb2lkCgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKiAgUkZNIDkuOS42CioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIGZpeGVkIGEgc2VjdXJpdHkgdnVsbmVyYWJpbGl0eSAodGhhbmtzIHRvIHNlY3VyaXR1bS5wbCkKLSBjb2RlIHJlZmFjdG9yaW5nIHJlbW92ZWQgdGh1bWIgcGF0aCB0byBhamF4IGNhbGxzCi0gaW1wcm92ZSBmaWxlL2ZvbGRlciBwZXJtaXNzaW9uIGxheW91dCBhbmQgZml4ZWQgYSBlcnJvcgotIGZpeGVkIGEgcHJvYmxlbSB3aXRoIGltYWdlIGVkaXRvcgotIGFkZGVkIHZpdG5hbWVzZSBsYW5ndWFnZQoKCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqICBSRk0gOS45LjUKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gZml4ZWQgYSBBZG9iZSBDcmVhdGl2ZSBTREsgaXNzdWUKLSBmaXhlZCBhIHByb2JsZW0gd2hlbiB5b3UgZWRpdCBtdWx0aXBsZSBpbWFnZSBpbiB0aGUgc2FtZSBzZXNzaW9uCi0gZml4ZWQgYSBwcm9ibGVtIHdpdGggc2VjdXJpdHkgaXNzdWUgaW4gc29tZSBzZXJ2ZXIgY29uZmlndXJhdGlvbnMKLSBhZGRlZCBtYXhTaXplIGNvbmZpZyB0byBBZG9iZSBDcmVhdGl2ZSBTREsgZXhwb3J0IGltYWdlIChkZWZhdWx0IG5vdyBpcyAxNDAwKQoKCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqICBSRk0gOS45LjQKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gVXBncmFkZSBBdmlhcnkgSW1hZ2UgRWRpdG9yIHdpdGggbmV3IEFkb2JlIENyZWF0aXZlIFNESyB3aXRob3V0IHNpemUgbGltaXRhdGlvbgotIEFkZCBmaWxlcyBhbmQgZm9sZGVycyBjb3VudGVyIG9uIGVhY2ggZm9sZGVyCi0gRml4ZWQgYSBwcm9ibGVtIHdpdGggZm9sZGVyIHNlbGVjdGlvbiBvbiByZWxhdGl2ZSB1cmwKCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqICBSRk0gOS45LjMKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gRml4ZWQgdGhlIHByb2JsZW0gd2l0aCB1bmRlZmluZWQgd2luZG93UGFyZW50Ci0gRml4ZWQgYSBwcm9ibGVtIHdpdGggc2VsZWN0aW9uIG9uIENLZWRpdG9yCi0gQWRkZWQgYm9vdHN0cmFwIG1vZGFsIGRlZmF1bHQgc3VwcG9ydAoKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiogIFJGTSA5LjkuMgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSBhZGRlZCBmaWxlIHNlbGVjdGlvbiBkaXJlY3RseSBmcm9tIGRyb3B6b25lIHVwbG9hZCBhcmVhICh5b3UgY2FuIG5vdyBzZWxlY3QgZmlsZSBkaXJlY3RseSBhZnRlciB1cGxvYWQpCi0gZm9sZGVyIHNlbGVjdGlvbiBpbiBjb250ZXh0IG1lbnUgKHlvdSBjYW4gbm93IHNlbGVjdCBhbHNvIGEgZm9sZGVyKQotIHJlc3BvbnNpdmUgZmlsZW1hbmFnZXIgbW9kYWwgb3BlbiBvbiB0aW55TUNFICh0aGUgZGltZW5zaW9uIG9mIG1vZGFsIGRlcGVuZCBvbiB3aW5kb3cgZGltZW5zaW9uKQotIHV0ZjggdHJhbnNsaXR0ZXJhdGlvbiBmaXgKCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqICBSRk0gOS45LjEKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gYnVnZml4CgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKiAgUkZNIDkuOS4wCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIGFkZCBjb21wYXRpYmlsaXR5IHdpdGggQ0tFZGl0b3IgKHRoYW5rcyB0byBkZW5uaXMuYnVpanMpCi0gZml4IG9yZGVyaW5nIGFuZCBmaWx0ZXJpbmcgYnVncyAoaW4ganMgYW5kIHBocCkKLSBSZWZhY3RvcmluZyBvZiBjb25maWd1cmF0aW9uIGFuZCBsYW5ndWFnZSBmaWxlcyAodGhhbmtzIHRvIHJrZ3JlcCkKLSB1cGRhdGVkIGxpYnJhcmllcyB2aWEgYm93ZXIgZGVwZW5kZW5jeSBtYW5hZ2VtZW50ICh0aGFua3MgdG8gcmtncmVwKQotIGFkZGVkIEFzc2V0cyBjb21waWxhdGlvbiB2aWEgZ3VscCBmb3IgZGV2ZWxvcGluZyAodGhhbmtzIHRvIHJrZ3JlcCkKLSBhZGRlZCBIZWJyZXcgbGFuZyAoc2FnaWUyMTIpCgoKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiogIFJGTSA5LjguMQoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSBhZGQgY29tcGF0aWJpbGl0eSB3aXRoIGZyZWUgZnVsbCByZXNvbHV0aW9uIHdpdGggYXZpYXJ5IGltYWdlIGVkaXRvcgotIGNvbnZlcnQgYWxsIGluY2x1ZGUoKTsgd2l0aCBpbmNsdWRlIOKAmOKAmTsKLSBmaXggYSBwcm9ibGVtIHdpdGggbG93ZXJjYXNlIGF1dG9tYXRpY2FsbHkgY2hhbmdlIAoKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiogIFJGTSA5LjgKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gYWRkZWQgcGRmLCBvcGVub2ZmaWNlIGZpbGVzIHByZXZpZXcgd2l0aCBjdXN0b21pemVkIHZpZXdlci5qcwotIGFkZGVkIG90aGVyIG9mZmljZSBmaWxlIHByZXZpZXcgd2l0aCBnb29nbGUgcHJldmlldwotIGZpeGVkIG9yZGVyaW5nIGJ1ZwotIGltcHJvdmVkIGxheW91dCBzdHlsZQotIGFkZGVkIGNvcHkgdG8gY2xpcGJvYXJkIGJ1dHRvbiBvbiBzaG93IHVybCBkaWFsb2cKLSBmaXhlZCBhIGJ1ZyB3aGVuIGRvd25sb2FkIGEgZmlsZQotIGZpeGVkIGEgYnVnIGluIHJlbGF0aXZlIHBhdGggaW1hZ2VzIGNyZWF0aW9uCi0gYWRkaW5nIGN1c3RvbSBjb252ZXJ0X3NwYWNlcyBbYnkgZnVuZ2lvXQoKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiogIFJGTSA5LjcuMwoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSBGaXggYSBwcm9ibGVtIHdpdGggbGF6eSBsb2FkIGFuZCBmaWx0ZXJzCi0gYWRkIG9wdGlvbiB0byByZW1lbWJlciB0ZXh0IGZpbHRlciBpbiBzZXNzaW9uCgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKiAgUkZNIDkuNy4yCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKKioqKiogTWFqb3IgKioqKioKLSBBZGRlZCBtaW1lIHR5cGUgbGliIGZvciBkb3dubG9hZHMKLSBBZGRlZCBsYXp5IGxvYWRpbmcgZmVhdHVyZQotIEFkZGVkIG9wdGlvbnMgZm9yIGF1dG8gYW5kIG1heCBpbWFnZSByZXNpemluZwotIExhbmcuIHVwZGF0ZXMKLSBBZGRlZCB0b3VjaCBkZXZpY2VzIHN1cHBvcnQgZm9yIGRyYWcmZHJvcAotIEFkZGVkIHN1cHBvcnQgZm9yIHJldHVybmluZyByZWxhdGl2ZSBVUkwtcwotIEJ1Z2ZpeGVzCgoKKioqKiogRGV0YWlsZWQgKioqKioKLSBBZGRlZCBtaW1lIHR5cGUgbGliIGZvciBkb3dubG9hZHMKCUFsbCBkb3dubG9hZHMgbm8gc2hvdWxkIGxvYWQgc3VjY2Vzc2Z1bHkKCi0gQWRkZWQgbGF6eSBsb2FkaW5nIGZlYXR1cmUKCUltYWdlcyB3aWxsIG9ubHkgbG9hZCB3aGVuIGluIHRoZSB2aWV3cG9ydCBzbyB3aGVuIHlvdSBhcmUgaW4gYSBjcm93ZGVkIGZvbGRlciBpdCB3aWxsIGxvYWQgZmFzdGVyCgotIEFkZGVkIG9wdGlvbnMgZm9yIGF1dG8gYW5kIG1heCBpbWFnZSByZXNpemluZwoJSW4gdGhlIHBhc3QgYWxsIGltYWdlcyB0aGF0IHdhcyByZXNpemVkIGVpdGhlciB3aXRoIG1heF9pbWFnZSBvciBhdXRvIHJlc2l6ZSB3YXMgY3JvcHBlZC4KCU5vdyB0aGUgdXNlciBjYW4gc3BlY2lmeSB0byBjcm9wLGV4YWN0LGxhbmRzY2FwZSBvciBwb3J0cmFpdCBvcHRpb25zLgoJVGhlIG1heCBpbWFnZSBzaXplIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGF1dG8gcmVzaXplIG9wdGlvbgoKLSBBZGRlZCBzdXBwb3J0IGZvciByZXR1cm5pbmcgcmVsYXRpdmUgVVJMLXMKCVJlbGF0aXZlIFVSTC1zIGNhbiBiZSByZXR1cm5lZCB3aGVuIHNlbGVjdGluZyBmaWxlcyBmcm9tIHRoZSBmaWxlbWFuYWdlcjogYSAncmVsYXRpdmVfdXJsJyBHRVQgcGFyYW1ldGVyIHNob3VsZCBiZQoJYWRkZWQgdG8gdGhlIHJlcXVlc3Qgd2l0aCBhIHZhbHVlIG9mICIxIiB3aGVuIG9wZW5pbmcgUkZNLiBPdGhlcndpc2UgcmV0dXJuZWQgVVJMLXMgd2lsbCBiZSBhYnNvbHV0ZS4KCi0gQnVnZml4ZXMKCUZpeGVkIGNzcyBidWdzCglGaXhlZCBkcmFnJmRyb3AgYnVncwoJUmVtb3ZlZCAnZGVmYXVsdCcgYWNjZXNzIGtleXMgZm9yIHNlY3VyaXR5CgoKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiogIFJGTSA5LjYuMAoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCioqKioqIE1ham9yICoqKioqCi0gQ3Jvc3MgZG9tYWluIGZlYXR1cmUKLSBBZGQgaW4gY29uZmlnLnBocCBhIG9wdGlvbiB0byByZXBsYWNlIGFsbCBzcGFjZXMgd2l0aCBfCi0gRW5jb2Rpbmcgb2YgRXhwb3J0IFVSTAotIENvZGUgcmVmYWN0b3JpbmcKCgoqKioqKiBEZXRhaWxlZCAqKioqKgotIENyb3NzIGRvbWFpbiBmZWF0dXJlOlRvIGVuYWJsZSBjcm9zcy1kb21haW4gZmlsZSBzZWxlY3Rvciwgd2hlcmUgZmlsZXMgYXJlIGhvc3RlZCBvbiBvbmUgc2VydmVyIChmb3IgZXhhbXBsZSwgc2VydmVyQS5jb20pIGFuZCBVUkwgaXMgYmVpbmcgc2VudCB0byBhbm90aGVyIChmb3IgZXhhbXBsZSwgc2VydmVyQi5jb20pLCBpbmNsdWRlIGNyb3NzZG9tYWluPTEgaW4gdGhlIFVSTC4KRm9yIGV4YW1wbGUsIHRvIGluc3RhbnRpYXRlIGltYWdlIHBpY2tlciwgdXNlIHRoZSBmb2xsb3dpbmcgVVJMOuKAqGh0dHA6Ly9zZXJ2ZXJBLmNvbS9bcGF0aCB0byBmaWxlbWFuYWdlcl0vZmlsZW1hbmFnZXIvZGlhbG9nLnBocD90eXBlPTEmZmllbGRfaWQ9ZmllbGRJRCZjcm9zc2RvbWFpbj0xClRoZW4gb24gc2VydmVyQi5jb20sIHRoZSBmb2xsb3dpbmcgY29kZSBjYW4gYmUgdXNlZCB0byByZXRyaWV2ZSB0aGUgVVJMIGFmdGVyIGZpbGUgc2VsZWN0aW9uIGlzIG1hZGUuIFBsZWFzZSBub3RlLCB0aGF0IHRoZSBjb2RlIGlzIHdyaXR0ZW4gZm9yIGpRdWVyeSB3aXRoIEZhbmN5Qm94IHBsdWctaW4uCgovLwovLyBIYW5kbGVzIG1lc3NhZ2UgZnJvbSBSZXNwb25zaXZlRmlsZW1hbmFnZXIKLy8KZnVuY3Rpb24gT25NZXNzYWdlKGUpewogIHZhciBldmVudCA9IGUub3JpZ2luYWxFdmVudDsKICAgLy8gTWFrZSBzdXJlIHRoZSBzZW5kZXIgb2YgdGhlIGV2ZW50IGlzIHRydXN0ZWQKICAgaWYoZXZlbnQuZGF0YS5zZW5kZXIgPT09ICdyZXNwb25zaXZlZmlsZW1hbmFnZXInKXsKICAgICAgaWYoZXZlbnQuZGF0YS5maWVsZF9pZCl7CiAgICAgIAl2YXIgZmllbGRJRD1ldmVudC5kYXRhLmZpZWxkX2lkOwogICAgICAJdmFyIHVybD1ldmVudC5kYXRhLnVybDsKCSQoJyMnK2ZpZWxkSUQpLnZhbCh1cmwpLnRyaWdnZXIoJ2NoYW5nZScpOwoJJC5mYW5jeWJveC5jbG9zZSgpOwoKCS8vIERlbGV0ZSBoYW5kbGVyIG9mIHRoZSBtZXNzYWdlIGZyb20gUmVzcG9uc2l2ZUZpbGVtYW5hZ2VyCgkkKHdpbmRvdykub2ZmKCdtZXNzYWdlJywgT25NZXNzYWdlKTsKICAgICAgfQogICB9Cn0KCi8vIEhhbmRsZXIgZm9yIGEgbWVzc2FnZSBmcm9tIFJlc3BvbnNpdmVGaWxlbWFuYWdlcgokKOKAmC5vcGVuZXItY2xhc3MpLm9uKCdjbGljaycsZnVuY3Rpb24oKXsKICAkKHdpbmRvdykub24oJ21lc3NhZ2UnLCBPbk1lc3NhZ2UpOwp9KTsKCgpGSUxFIE1BTkFHRVIgQVMgVElOWU1DRSBQTFVHLUlOClRoZXJlIGlzIGV4dHJhIHBhcmFtZXRlciBuZWVkZWQgZmlsZW1hbmFnZXJfY3Jvc3Nkb21haW4gd2hlbiBjYWxsaW5nIHRpbnltY2UuaW5pdCgpLCBwbGVhc2Ugc2VlIGJlbG93Lgp0aW55bWNlLmluaXQoewogICAuLi4KICAgZmlsZW1hbmFnZXJfY3Jvc3Nkb21haW46IHRydWUsCiAgIGV4dGVybmFsX2ZpbGVtYW5hZ2VyX3BhdGg6Imh0dHA6Ly9wYXRoL3NlY29uZGFyeXNlcnZlci9maWxlbWFuYWdlci8iLAogICAgZXh0ZXJuYWxfcGx1Z2luczogeyAiZmlsZW1hbmFnZXIiIDogImh0dHA6Ly9wYXRoL3NlY29uZGFyeXNlcnZlci9maWxlbWFuYWdlci9wbHVnaW4ubWluLmpzIn0sCiAgIC4uLgp9KTsKCgotIENvbnZlcnRfc3BhY2VzIG9wdGlvbnM6IGVuYWJsZSB0aGUgY29udmVyc2lvbiBvZiBzcGFjZXMgdG8gXyBpbiBmaWxlIGFuZCBmb2xkZXIgbmFtZQoKCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqICBSRk0gOS41LjAKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgoqKioqKiBNYWpvciAqKioqKgotIEZpbGUgcGVybWlzc2lvbiBjaGFuZ2luZwotIExhbmd1YWdlIENoYW5naW5nCi0gVmlldy9lZGl0L2NyZWF0ZSB0ZXh0IGZpbGVzCi0gRml4ZXMKCk5PVEU6IENoYW5nZWQgdXBsb2FkIGJ1dHRvbidzIGljb24hCgoqKioqKiBEZXRhaWxlZCAqKioqKgotIEZpbGUgcGVybWlzc2lvbiBjaGFuZ2luZyAoT0ZGIEJZIERFRkFVTFQhKQoJTm93IHlvdSBjYW4gY2hhbmdlIHRoZSBmaWxlcy9mb2xkZXJzIHBlcm1pc3Npb24gd2l0aCBhIHNsaWNrIHdpbmRvdy4KCVRvIGFjY2VzcyB0aGUgd2luZG93IGZpcnN0IHlvdSBtdXN0IGFjdGl2YXRlIGl0IGluIHRoZSBjb25maWcgZmlsZS4KCUFmdGVyIHlvdSBhY3RpdmF0ZWQgaXQgeW91IGNhbiByZWFjaCBpdCBmcm9tIHRoZSByaWd0aCBjbGljayBtZW51LgoJWW91IGNhbiBjb25maWd1cmUgdGhlIHBlcm1pc3Npb24gd2l0aCBib3RoIHRleHQgYW5kIGNoZWNrYm94ZXMuCglJZiB5b3UgZW50ZXJlZCBhIHdyb25nIGZvcm1hdC9udW1iZXIgdGhlIGluaXRpYWwgc3RhdGUgd2lsbCBiZSByZXN0b3JlZC4KCVdoZW4gY2hhbmdpbmcgcGVybWlzc2lvbnMgZm9yIGZvbGRlcnMgdGhlcmUgd2lsbCBiZSBtb3JlIG9wdGlvbnMgZm9yCglyZWN1cnNpdmUgY2hhbmdpbmcgKE5vL29ubHkgZmlsZXMvb25seSBmb2xkZXJzL2JvdGgpLgoJSWYgeW91IHNldCB0aGUgcGVybWlzc2lvbiB3cm9uZyB0aGVyZSB3aWxsIGJlIGVycm9ycy4KCglOT1RFISBJZiB5b3UgZG9uJ3Qga25vdyB3aGF0IHlvdSBhcmUgZG9pbmcgdGhlbiBsZWF2ZSBhcyBpdCBpcyBiYWNhdXNlCgl5b3UgY2FuIGNhdXNlIHRyb3VibGUuCglVc3VhbGx5IGZpbGVzIGFyZSA2NDQgYW5kIGZvbGRlcnMgYXJlIDc1NQoJWW91IENBTk5PVCBzZXQgdGhlIHN0aWNreSBiaXQhCgotIExhbmd1YWdlIENoYW5naW5nCglZb3UgY2FuIG5vdyBjaGFuZ2UgdGhlIGxhbmd1YWdlIGR5bmFtaWNseSBmcm9tIHRoZSBtZW51LgoJVGhlIGJ1dHRvbiBpcyBsb2NhdGVkIG5leHQgdG8gdGhlIHJlZnJlc2ggYnV0dG9uIChhIGdsb2JlIGljb24pCgkKCUlmIGFkZGluZyBuZXcgbGFuZ3VhZ2UsIGl0IHNob3VsZCBiZSBhZGRlZCB0byB0aGUgbGFuZ3VhZ2VzLnBocCBmaWxlIGFzIAoJd2VsbCBmb3IgaXQgdG8gc2hvdyB1cC4KCQoJSSB0cmllZCB0byBpZGVudGlmeSBhbGwgbGFuZ3VhZ2UgY29kZXMgYW5kIGFkZCB0aGUgbmFtZSBvbiB0aGVyZSBvd24KCWxhbmd1YWdlIGJ1dCBJIG1pZ2h0IG1lc3NlZCB1cCBzbyBwbGVhc2UgY2hlY2sgaXQgYW5kIGNvcnJlY3QgaXQgaWYKCW5lY2Vzc2FyeS4gKEJlY2F1c2UgSSdtIG9ubHkgYSBodW1hbiBhbmQgc3BlYWsgb25seSAyIGxhbmd1YWdlcykKCi0gVmlldy9lZGl0L2NyZWF0ZSB0ZXh0IGZpbGVzCglZb3UgY2FuIG5vdyB2aWV3L2VkaXQvY3JlYXRlIHRleHQgYmFzZWQgZmlsZXMgbGlrZSAudHh0LgoKCVRvIHZpZXcgYSBmaWxlJ3MgY29udGVudCBqdXN0IGNsaWNrIG9uIHRoZSBwcmV2aWV3IChleWUpIGljb24uCglUbyBlZGl0IGEgZmlsZSByaWd0aCBjbGljayBvbiBpdCBhbmQgc2VsZWN0ICJFZGl0IGZpbGUncyBjb250ZW50IgoJVG8gY3JlYXRlIGEgbmV3IGZpbGUganVzdCBjbGljayBvbiB0aGUgIisgZmlsZSIgaWNvbiAob2xkIHVwbG9hZCBidXR0b24pCgoJV2hlbiBjcmVhdGluZyBhIG5ldyBmaWxlIHlvdSBtdXN0IHNwZWNpZnkgaXQncyBleHRlbnNpb24uCglBbGwgdmFsaWQgZXh0ZW5zaW9ucyBmb3IgZWRpdC9jcmVhdGUgYXJlIGxpc3RlZCBpbiB0aGUgY29uZmlnIGZpbGUKCSgkZWRpdGFibGVfdGV4dF9maWxlX2V4dHMpCgotIEZpeGVzCglGaXhlZCBzb21lIGNzcyBvdmVyZmxvdyBlcnJvcnMKCVJlbW92ZWQgbGFuZ19WaWV3IGZyb20gbWVudSBiZWNhdXNlIGl0IHdhcyBvdmVyZmxvd2luZwoJUmVtb3ZlZCBoci5waHAgbGFuZyBiZWNhdXNlIGl0J3MgdGhlIHNhbWUgYXMgaHJfSFIucGhwCglDaGFuZ2VkIHVwbG9hZCBidXR0b25zIGljb24gdG8gYWNjb21vZGF0ZSB0aGUgIm5ldyBmaWxlIiBhZGRpdGlvbgoKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiogIFJGTSA5LjQuMQoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCioqKioqIE1ham9yICoqKioqCi0gU2VjdXJpdHkgQWNjZXNzIEtleXMKLSBNb3JlIFRpbnltY2Ugc2V0dGluZ3MKLSBUaW55bWNlIDMuKiBzdXBwb3J0Ci0gQWRkZWQgaW1hZ2UgcmVzaXplIG9wdGlvbnMKLSBCdWdmaXhlcwoKCioqKioqIERldGFpbGVkICoqKioqCi0gU2VjdXJpdHkgQWNjZXNzIEtleXMKCUlmICdVU0VfQUNDRVNTX0tFWVMnIGFyZSBzZXQgdG8gdHJ1ZSBvbmx5IHRob3NlIHdpbGwgYWNjZXNzIFJGIHdob3NlIHVybAoJY29udGFpbnMgdGhlIGFjY2VzcyBrZXkgKGFrZXkpIGxpa2U6Cgk8aW5wdXQgdHlwZT0iYnV0dG9uIiBocmVmPSIuLi9maWxlbWFuYWdlci9kaWFsb2cucGhwP2FrZXk9bXlQcml2YXRlS2V5Ij4KCglBbGxvd2VkIGFjY2VzcyBrZXlzIGFyZSBkZWZpbmVkIGluIHRoZSBjb25maWcgYXMgd2VsbC4KCSRhY2Nlc3Nfa2V5cyBtdXN0IGJlIGFuIGFycmF5IHNvIHlvdSBjYW4gYWRkIG11bHRpcGxlLgoJWW91ciBhY2Nlc3Mga2V5IHNob3VsZCBORVZFUiBiZSAna2V5JyBhbmQga2VlcCBpbiBtaW5kIHRoZXkgYXJlIENBU0UKCVNFTlNJVElWRSEKCUZvciByZWNvbW1lbmRlZCBrZXkgZ2VuZXJhdGlvbiByZWFkIHRoZSBjb21tZW50cyBpbiB0aGUgY29uZmlnIGZpbGUuCgoJSWYgdGhlcmUncyBubyBhY2Nlc3Mga2V5IHN1cHBsaWVkIHdpdGggdGhlIHVybCBvciBpdCdzIG5vdCBpbiB0aGUKCSRhY2Nlc3Nfa2V5IGFycmF5IHlvdSB3aWxsIGdldCAnQWNjZXNzIERlbmllZCcgYW5kIHlvdSBjYW5ub3QgY29udGludWUuCgoJRm9yIHRpbnltY2UgYSBuZXcgdmFyaWFibGUgd2FzIGFkZGVkOiAiZmlsZW1hbmFnZXJfYWNjZXNzX2tleSIKCglUaW55bWNlIGNvbmZpZyBleGFtcGxlOgoKCXRpbnlpbml0CgkuLi4KCWV4dGVybmFsX2ZpbGVtYW5hZ2VyX3BhdGg6Ii4uL2ZpbGVtYW5hZ2VyIiwKCWZpbGVtYW5hZ2VyX2FjY2Vzc19rZXk6ICJteVByaXZhdGVLZXkiLAoJLi4uCgoJVGhpcyBpcyBhIGJpdCBvZiBhZGRpdGlvbmFsIHNlY3VyaXR5IHNvIG5vIG9uZSBjYW4gYWNjZXNzIHlvdXIgZmlsZXN5c3RlbS4KCi0gTW9yZSBUaW55bWNlIHNldHRpbmdzCgktIEFkZGVkICdmaWxlbWFuYWdlcl9zdWJmb2xkZXInIHBhcmFtIHNvIHlvdSBjYW4gbm93IGRlZmluZSB0aGUgc3RhcnRpbmcgZm9sZGVyIGluIHRpbnltY2UKICAJZWc6ICdmaWxlbWFuYWdlcl9zdWJmb2xkZXI6InN1YmZvbGRlci8iJwoKLSBCdWdmaXhlcwoJLSBGaXhlZCBhdWRpby92aWRlbyBwbGF5ZXIgYnVnCgktIEZpeCBpbiByZW1lbWJlciBsYXN0IHBvc2l0aW9uCgktIFNob3cgdXJsIGNvbnRleHQgbGluayBpbiBhbGwgZmlsZXMgYW5kIGZvbGRlcgoJLSBGaXhlZCBhIHByb2JsZW0gd2l0aCBvbGQgdGh1bWJuYWlscyBvbiByZW5hbWluZwoJLSBGaXhlZCBhIGNvcHkgcGFzdCBpc3N1ZQoJLSBGaXhlZCBTdGFuZGFsb25lIE1vZGUgbm90IHVzaW5nIHRoZSBmaWVsZF9pZCBwYXNzZWQgaW4gbWl4ZWQgdXNlIGNhc2VzCgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKiAgUkZNIDkuNC4wCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKKioqKiogTWFqb3IgKioqKioKLSBDdXQvY29weS9wYXN0ZSBzdXBwb3J0Ci0gRHJhZyZkcm9wIHN1cHBvcnQKLSBGZXcgbmV3IGljb25zCi0gQ29kZSByZWZhY3RvcgotIEJ1Z2ZpeGVzCgoKKioqKiogRGV0YWlsZWQgKioqKioKLSBDdXQvY29weS9wYXN0ZQoJWW91IGNhbiBjb25maWd1cmUgdGhlIGFjdGlvbnMgaW4gY29uZmlnLnBocCBmaWxlIGFuZCBkaXNhYmxlLyBsaW1pdCB0aGVtIGlmIG5lZWRlZC4KCVdoZW4gcmlnaHQgY2xpY2tpbmcgb24gYSBmb2xkZXIvZmlsZSB0aGVyZSB3aWxsIGJlIG9wdGlvbnMgZm9yIGNvcHkgYW5kIGN1dCAKCShhbmQgcGFzdGUgaWYgZmlsZXMgb24gY2xpcGJvYXJkIGFuZCByaWdoIGNsaWNrZWQgb24gYSBmaWxlKQoJVGhlcmUncyBpY29uIGZvciBwYXN0ZSB0byB0aGlzIGRpciBhbmQgY2xlYXIgY2xpcGJvYXJkIGFmdGVyIHRoZSAnbmV3IGRpcicgaWNvbnMKCVRoZXkgd2lsbCBncmV5IG91dCBpZiB0aGVyZSdzIG5vdGhpbmcgb24gdGhlIGNsaXBib2FyZC4KCi0gRHJhZyZkcm9wCglOb3cgeW91IGNhbiBkcmFnIG4gZHJvcCBmaWxlcy9mb2xkZXJzIHRvIG90aGVyIGZvbGRlcnMgCgkodGhpcyB3aWxsIG92ZXJ3cml0ZSBleGlzdGluZyBmaWxlcyBpZiBlbmNvdW50ZXJlZCBhbnkhKQoKLSBJY29ucwoJQWRkZWQgbmV3IGljb25zIGZvciB0aGUgbmV3IGZ1bmN0aW9ucwoJQWxsIGFyZSBsZWdpdCBtYWRlIGJ5IG1lIG9yIGdldCBmcm9tIGZyZWUgaWNvbiBzaXRlcwoKLSBDb2RlIFJlZmF0b3IKCS0gQWRkZWQgYnVuY2ggb2YgY29tbWVudHMgYW5kIGNoYW5nZSBhIGxvdCBvZiBjb2Rlcy4KCgktIENoYW5nZWQgYWxsICRfU0VTU0lPTiB2YXJzIHRvIGJlIGluIGEgc2VwYXJldCBhcnJheSAKCWVnLjokX1NFU1NJT05bInZlcmlmeSJdIC0+ICRfU0VTU0lPTlsnUkYnXVsidmVyaWZ5Il0KCVNvIG5vdyB0aGVyZSB3b24ndCBiZSBhbnkgcHJvYmxlbSB3aXRoIGJpZyBwcm9qZWNmdHMgaW50ZWdyYXRpbmcgUkYKCgktIEFkZGVkIHRoZSBsYW5nIGZpbGUgdXJsIHRvICRfU0VTU0lPTlsnUkYnXVsnbGFuZ3VhZ2VfZmlsZSddCglOb3cgaXQgY2FuIGJlIGluY2x1ZGVkIGVhc2lseQoKCS0gQWRkZWQgYSBsb3Qgb2YgbmV3IGxhbmcuIGxpbmVzIGFuZCBmZWVkYmFjayBpbmZvCglOZXcgbGluZXMgYWRkZWQgdG8gZXZlcnkgbGFuZ3VhZ2UgKGluIGVuZ2xpc2gpIHNvIHRyYW5zbGF0aW9uIGNhbiBnbyBzbW9vdGhseQoJKFRoZXJlIGFyZSBwbGFjZXMgd2hlcmUgaSBhZGRlZCAlcyB0byBsYW5nIGxpbmVzIHdoaWNoIHdpbGwgYmUgc3dhcHBlZCB3aXRoIGFuIGFjdGlvbiBuYW1lCgksIGNvbW1lbnRlZCBvdXQgd2hhdCB3aWxsIGJlIGluc2VydGVkIGF0IHJ1bnRpbWUpCgoJLSBBZGRlZCB0aW1lb3V0IHdoZW4gY2xvc2luZyB1cGxvYWQgdGFiCgoKLSBCdWdmaXhlcwoJLSBDb3JyZWN0ZWQgaXNzdWUgIzY5IERyb3B6b25lIHNwcml0ZW1hcC5wbmcgcHJvYmxlbQoJTm93IHdoZW4gbG9hZGluZyBhIGxhbmd1YWdlIGl0IHdpbGwgc2VhcmNoIGZvciB0aGUgYXBwcm9waWF0ZSBzcHJpdGVtYXBzLgoJSWYgbm9uZSBmb3VuZCB3aWxsIGZhbGxiYWNrIHRvIGVuZ2xpc2gKCUFsbCBzcHJpdGVtYXBzIHNob3VsZCBmb2xsb3cgdGhlIGxhbmd1YWdlIGNvZGUgbmFtaW5nIGVnOgoJRm9yIGh1X0hVOgoJCXNwcml0ZW1hcF9odV9IVS5wbmcKCQlzcHJpdGVtYXBAMnhfaHVfSFUucG5nCgoJKG1pZ2h0IGNvbnNpZGVyIG1vdmluZyB0aGVtIGluIGEgc2VwYXJ0ZSBmb2xkZXIgaW4gdGhlIGZ1dHVyZSkKCgktIEZpeGVkIGlzc3VlICM3MSBUaGUgdXBsb2FkZWQgZmlsZSBleGNlZWRzIHRoZSBtYXggc2l6ZSBhbGxvd2VkCglOb3cgd2hlbiB1cGxvYWRpbmcgaXQgcHJvcGVybHkgY2hlY2sgZm9yIG1heCBwb3N0IHNpemUKCUl0IGlzIGRlYWx0IHdpdGggaW4gY29uZmlnLnBocCBhZnRlciBkZWZpbm5pbmcgdGhlIG1heCB1cGxvYWQgc2l6ZSBhbmQgaWYgaXQncyBiaWdnZXIgCgl0aGFuIHNlcnZlcidzIGluaSBpdCB3aWxsIHJldmVydCBpdCBiYWNrIHRvIGl0LiAK]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/.htaccess</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PElmTW9kdWxlIHJld3JpdGVfbW9kdWxlPgpSZXdyaXRlRW5naW5lIG9mZgoKPC9JZk1vZHVsZT4K]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/ajax_calls.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiRjb25maWcgPSBpbmNsdWRlICdjb25maWcvY29uZmlnLnBocCc7CgpyZXF1aXJlX29uY2UgJ2luY2x1ZGUvdXRpbHMucGhwJzsKCmlmICgkX1NFU1NJT05bJ1JGJ11bInZlcmlmeSJdICE9ICJSRVNQT05TSVZFZmlsZW1hbmFnZXIiKSB7CiAgICByZXNwb25zZSh0cmFucygnZm9yYmlkZGVuJykuQWRkRXJyb3JMb2NhdGlvbigpKS0+c2VuZCgpOwogICAgZXhpdDsKfQokbGFuZ3VhZ2VzID0gaW5jbHVkZSAnbGFuZy9sYW5ndWFnZXMucGhwJzsKCmlmIChpc3NldCgkX1NFU1NJT05bJ1JGJ11bJ2xhbmd1YWdlJ10pICYmIGZpbGVfZXhpc3RzKCdsYW5nLycgLiBiYXNlbmFtZSgkX1NFU1NJT05bJ1JGJ11bJ2xhbmd1YWdlJ10pIC4gJy5waHAnKSkgewogICAgaWYgKGFycmF5X2tleV9leGlzdHMoJF9TRVNTSU9OWydSRiddWydsYW5ndWFnZSddLCAkbGFuZ3VhZ2VzKSkgewogICAgICAgIGluY2x1ZGUgJ2xhbmcvJyAuIGJhc2VuYW1lKCRfU0VTU0lPTlsnUkYnXVsnbGFuZ3VhZ2UnXSkgLiAnLnBocCc7CiAgICB9IGVsc2UgewogICAgICAgIHJlc3BvbnNlKHRyYW5zKCdMYW5nX05vdF9Gb3VuZCcpLkFkZEVycm9yTG9jYXRpb24oKSktPnNlbmQoKTsKICAgICAgICBleGl0OwogICAgfQp9IGVsc2UgewogICAgcmVzcG9uc2UodHJhbnMoJ0xhbmdfTm90X0ZvdW5kJykuQWRkRXJyb3JMb2NhdGlvbigpKS0+c2VuZCgpOwogICAgZXhpdDsKfQoKCi8vY2hlY2sgJF9HRVRbJ2ZpbGUnXQppZiAoaXNzZXQoJF9HRVRbJ2ZpbGUnXSkgJiYgIWNoZWNrUmVsYXRpdmVQYXRoKCRfR0VUWydmaWxlJ10pKSB7CiAgICByZXNwb25zZSh0cmFucygnd3JvbmcgcGF0aCcpLkFkZEVycm9yTG9jYXRpb24oKSktPnNlbmQoKTsKICAgIGV4aXQ7Cn0KCi8vY2hlY2sgJF9QT1NUWydmaWxlJ10KaWYoaXNzZXQoJF9QT1NUWydwYXRoJ10pICYmICFjaGVja1JlbGF0aXZlUGF0aCgkX1BPU1RbJ3BhdGgnXSkpIHsKICAgIHJlc3BvbnNlKHRyYW5zKCd3cm9uZyBwYXRoJykuQWRkRXJyb3JMb2NhdGlvbigpKS0+c2VuZCgpOwogICAgZXhpdDsKfQoKCiRmdHAgPSBmdHBfY29uKCRjb25maWcpOwoKaWYgKGlzc2V0KCRfR0VUWydhY3Rpb24nXSkpIHsKICAgIHN3aXRjaCAoJF9HRVRbJ2FjdGlvbiddKSB7CiAgICAgICAgY2FzZSAnbmV3X2ZpbGVfZm9ybSc6CiAgICAgICAgICAgIGVjaG8gdHJhbnMoJ0ZpbGVuYW1lJykgLiAnOiA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImNyZWF0ZV90ZXh0X2ZpbGVfbmFtZSIgc3R5bGU9ImhlaWdodDozMHB4Ij4gPHNlbGVjdCBpZD0iY3JlYXRlX3RleHRfZmlsZV9leHRlbnNpb24iIHN0eWxlPSJtYXJnaW46MDt3aWR0aDoxMDBweDsiPic7CiAgICAgICAgICAgIGZvcmVhY2ggKCRjb25maWdbJ2VkaXRhYmxlX3RleHRfZmlsZV9leHRzJ10gYXMgJGV4dCkgewogICAgICAgICAgICAgICAgZWNobyAnPG9wdGlvbiB2YWx1ZT0iLicuJGV4dC4nIj4uJy4kZXh0Lic8L29wdGlvbj4nOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVjaG8gJzwvc2VsZWN0Pjxicj48aHI+PHRleHRhcmVhIGlkPSJ0ZXh0ZmlsZV9jcmVhdGVfYXJlYSIgc3R5bGU9IndpZHRoOjEwMCU7aGVpZ2h0OjE1MHB4OyI+PC90ZXh0YXJlYT4nOwogICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICd2aWV3JzoKICAgICAgICAgICAgaWYgKGlzc2V0KCRfR0VUWyd0eXBlJ10pKSB7CiAgICAgICAgICAgICAgICAkX1NFU1NJT05bJ1JGJ11bInZpZXdfdHlwZSJdID0gJF9HRVRbJ3R5cGUnXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHJlc3BvbnNlKHRyYW5zKCd2aWV3IHR5cGUgbnVtYmVyIG1pc3NpbmcnKS5BZGRFcnJvckxvY2F0aW9uKCkpLT5zZW5kKCk7CiAgICAgICAgICAgICAgICBleGl0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICdmaWx0ZXInOgogICAgICAgICAgICBpZiAoaXNzZXQoJF9HRVRbJ3R5cGUnXSkpIHsKICAgICAgICAgICAgICAgIGlmIChpc3NldCgkY29uZmlnWydyZW1lbWJlcl90ZXh0X2ZpbHRlciddKSAmJiAkY29uZmlnWydyZW1lbWJlcl90ZXh0X2ZpbHRlciddKSB7CiAgICAgICAgICAgICAgICAgICAgJF9TRVNTSU9OWydSRiddWyJmaWx0ZXIiXSA9ICRfR0VUWyd0eXBlJ107CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICByZXNwb25zZSh0cmFucygndmlldyB0eXBlIG51bWJlciBtaXNzaW5nJykuQWRkRXJyb3JMb2NhdGlvbigpKS0+c2VuZCgpOwogICAgICAgICAgICAgICAgZXhpdDsKICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAnc29ydCc6CiAgICAgICAgICAgIGlmIChpc3NldCgkX0dFVFsnc29ydF9ieSddKSkgewogICAgICAgICAgICAgICAgJF9TRVNTSU9OWydSRiddWyJzb3J0X2J5Il0gPSAkX0dFVFsnc29ydF9ieSddOwogICAgICAgICAgICB9CgoJCQlpZiAoaXNzZXQoJF9HRVRbJ2Rlc2NlbmRpbmcnXSkpCgkJCXsKCQkJCSRfU0VTU0lPTlsnUkYnXVsiZGVzY2VuZGluZyJdID0gJF9HRVRbJ2Rlc2NlbmRpbmcnXTsKCQkJfQoJCQlicmVhazsKCQljYXNlICdzYXZlX2ltZyc6CgkJCSRpbmZvID0gcGF0aGluZm8oJF9QT1NUWyduYW1lJ10pOwogICAgICAgICAgICAkaW1hZ2VfZGF0YSA9ICRfUE9TVFsndXJsJ107CgogICAgICAgICAgICBpZiAocHJlZ19tYXRjaCgnL15kYXRhOmltYWdlXC8oXHcrKTtiYXNlNjQsLycsICRpbWFnZV9kYXRhLCAkdHlwZSkpIHsKICAgICAgICAgICAgICAgICRpbWFnZV9kYXRhID0gc3Vic3RyKCRpbWFnZV9kYXRhLCBzdHJwb3MoJGltYWdlX2RhdGEsICcsJykgKyAxKTsKICAgICAgICAgICAgICAgICR0eXBlID0gc3RydG9sb3dlcigkdHlwZVsxXSk7IC8vIGpwZywgcG5nLCBnaWYKCiAgICAgICAgICAgICAgICAkaW1hZ2VfZGF0YSA9IGJhc2U2NF9kZWNvZGUoJGltYWdlX2RhdGEpOwoKICAgICAgICAgICAgICAgIGlmICgkaW1hZ2VfZGF0YSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICByZXNwb25zZSh0cmFucygnVFVJX0RlY29kZV9GYWlsZWQnKS5BZGRFcnJvckxvY2F0aW9uKCkpLT5zZW5kKCk7CiAgICAgICAgICAgICAgICBleGl0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgcmVzcG9uc2UodHJhbnMoJycpLkFkZEVycm9yTG9jYXRpb24oKSktPnNlbmQoKTsKICAgICAgICAgICAgICAgIGV4aXQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkaW1hZ2VfZGF0YSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgIHJlc3BvbnNlKHRyYW5zKCcnKS5BZGRFcnJvckxvY2F0aW9uKCkpLT5zZW5kKCk7CiAgICAgICAgICAgICAgICBleGl0OwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoIWNoZWNrcmVzdWx0aW5nc2l6ZShzdHJsZW4oJGltYWdlX2RhdGEpKSkgewogICAgICAgICAgICAgICAgcmVzcG9uc2Uoc3ByaW50Zih0cmFucygnbWF4X3NpemVfcmVhY2hlZCcpLCAkY29uZmlnWydNYXhTaXplVG90YWwnXSkuQWRkRXJyb3JMb2NhdGlvbigpKS0+c2VuZCgpOwogICAgICAgICAgICAgICAgZXhpdDsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoJGZ0cCkgewogICAgICAgICAgICAgICAgJHRlbXAgPSB0ZW1wbmFtKCcvdG1wJywgJ1JGJyk7CiAgICAgICAgICAgICAgICB1bmxpbmsoJHRlbXApOwogICAgICAgICAgICAgICAgJHRlbXAgLj0iLiIuc3Vic3RyKHN0cnJjaHIoJF9QT1NUWyd1cmwnXSwgJy4nKSwgMSk7CiAgICAgICAgICAgICAgICBmaWxlX3B1dF9jb250ZW50cygkdGVtcCwgJGltYWdlX2RhdGEpOwoKICAgICAgICAgICAgICAgICRmdHAtPnB1dCgkY29uZmlnWydmdHBfYmFzZV9mb2xkZXInXS4kY29uZmlnWyd1cGxvYWRfZGlyJ10gLiAkX1BPU1RbJ3BhdGgnXSAuICRfUE9TVFsnbmFtZSddLCAkdGVtcCwgRlRQX0JJTkFSWSk7CgogICAgICAgICAgICAgICAgY3JlYXRlX2ltZygkdGVtcCwgJHRlbXAsIDEyMiwgOTEpOwogICAgICAgICAgICAgICAgJGZ0cC0+cHV0KCRjb25maWdbJ2Z0cF9iYXNlX2ZvbGRlciddLiRjb25maWdbJ2Z0cF90aHVtYnNfZGlyJ10uICRfUE9TVFsncGF0aCddIC4gJF9QT1NUWyduYW1lJ10sICR0ZW1wLCBGVFBfQklOQVJZKTsKCiAgICAgICAgICAgICAgICB1bmxpbmsoJHRlbXApOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZmlsZV9wdXRfY29udGVudHMoJGNvbmZpZ1snY3VycmVudF9wYXRoJ10gLiAkX1BPU1RbJ3BhdGgnXSAuICRfUE9TVFsnbmFtZSddLCAkaW1hZ2VfZGF0YSk7CiAgICAgICAgICAgICAgICBjcmVhdGVfaW1nKCRjb25maWdbJ2N1cnJlbnRfcGF0aCddIC4gJF9QT1NUWydwYXRoJ10gLiAkX1BPU1RbJ25hbWUnXSwgJGNvbmZpZ1sndGh1bWJzX2Jhc2VfcGF0aCddLiRfUE9TVFsncGF0aCddLiRfUE9TVFsnbmFtZSddLCAxMjIsIDkxKTsKICAgICAgICAgICAgICAgIC8vIFRPRE8gc29tZXRoaW5nIHdpdGggdGhpcyBmdW5jdGlvbiBjYXVzZSBpdHMgYmxvd2luZyBteSBtaW5kCiAgICAgICAgICAgICAgICBuZXdfdGh1bWJuYWlsc19jcmVhdGlvbigKICAgICAgICAgICAgICAgICAgICAkY29uZmlnWydjdXJyZW50X3BhdGgnXS4kX1BPU1RbJ3BhdGgnXSwKICAgICAgICAgICAgICAgICAgICAkY29uZmlnWydjdXJyZW50X3BhdGgnXS4kX1BPU1RbJ3BhdGgnXS4kX1BPU1RbJ25hbWUnXSwKICAgICAgICAgICAgICAgICAgICAkX1BPU1RbJ25hbWUnXSwKICAgICAgICAgICAgICAgICAgICAkY29uZmlnWydjdXJyZW50X3BhdGgnXSwKICAgICAgICAgICAgICAgICAgICAkY29uZmlnCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICdleHRyYWN0JzoKICAgICAgICAgICAgaWYgKCEkY29uZmlnWydleHRyYWN0X2ZpbGVzJ10pIHsKICAgICAgICAgICAgICAgIHJlc3BvbnNlKHRyYW5zKCd3cm9uZyBhY3Rpb24nKS5BZGRFcnJvckxvY2F0aW9uKCkpLT5zZW5kKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCRmdHApIHsKICAgICAgICAgICAgICAgICRwYXRoID0gJGNvbmZpZ1snZnRwX2Jhc2VfdXJsJ10uJGNvbmZpZ1sndXBsb2FkX2RpciddIC4gJF9QT1NUWydwYXRoJ107CiAgICAgICAgICAgICAgICAkYmFzZV9mb2xkZXIgPSAkY29uZmlnWydmdHBfYmFzZV91cmwnXS4kY29uZmlnWyd1cGxvYWRfZGlyJ10gLiBmaXhfZGlybmFtZSgkX1BPU1RbJ3BhdGgnXSkgLiAiLyI7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkcGF0aCA9ICRjb25maWdbJ2N1cnJlbnRfcGF0aCddIC4gJF9QT1NUWydwYXRoJ107CiAgICAgICAgICAgICAgICAkYmFzZV9mb2xkZXIgPSAkY29uZmlnWydjdXJyZW50X3BhdGgnXSAuIGZpeF9kaXJuYW1lKCRfUE9TVFsncGF0aCddKSAuICIvIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGluZm8gPSBwYXRoaW5mbygkcGF0aCk7CgogICAgICAgICAgICBpZiAoJGZ0cCkgewogICAgICAgICAgICAgICAgJHRlbXBEaXIgPSB0ZW1wZGlyKCk7CiAgICAgICAgICAgICAgICAkdGVtcCA9IHRlbXBuYW0oJHRlbXBEaXIsICdSRicpOwogICAgICAgICAgICAgICAgdW5saW5rKCR0ZW1wKTsKICAgICAgICAgICAgICAgICR0ZW1wIC49ICIuIiAuICRpbmZvWydleHRlbnNpb24nXTsKICAgICAgICAgICAgICAgICRoYW5kbGUgPSBmb3BlbigkdGVtcCwgInciKTsKICAgICAgICAgICAgICAgIGZ3cml0ZSgkaGFuZGxlLCBmaWxlX2dldF9jb250ZW50cygkcGF0aCkpOwogICAgICAgICAgICAgICAgZmNsb3NlKCRoYW5kbGUpOwogICAgICAgICAgICAgICAgJHBhdGggPSAkdGVtcDsKICAgICAgICAgICAgICAgICRiYXNlX2ZvbGRlciA9ICR0ZW1wRGlyIC4gIi8iOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkaW5mbyA9IHBhdGhpbmZvKCRwYXRoKTsKCiAgICAgICAgICAgIHN3aXRjaCAoJGluZm9bJ2V4dGVuc2lvbiddKSB7CiAgICAgICAgICAgICAgICBjYXNlICJ6aXAiOgogICAgICAgICAgICAgICAgICAgICR6aXAgPSBuZXcgWmlwQXJjaGl2ZTsKICAgICAgICAgICAgICAgICAgICBpZiAoJHppcC0+b3BlbigkcGF0aCkgPT09IHRydWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy9nZXQgdG90YWwgc2l6ZQogICAgICAgICAgICAgICAgICAgICAgICAkc2l6ZVRvdGFsRmluYWwgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCAkemlwLT5udW1GaWxlczsgJGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFTdGF0ID0gJHppcC0+c3RhdEluZGV4KCRpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzaXplVG90YWxGaW5hbCArPSAkYVN0YXRbJ3NpemUnXTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNoZWNrcmVzdWx0aW5nc2l6ZSgkc2l6ZVRvdGFsRmluYWwpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZShzcHJpbnRmKHRyYW5zKCdtYXhfc2l6ZV9yZWFjaGVkJyksICRjb25maWdbJ01heFNpemVUb3RhbCddKS5BZGRFcnJvckxvY2F0aW9uKCkpLT5zZW5kKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGl0OwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAvL21ha2UgYWxsIHRoZSBmb2xkZXJzIGFuZCB1bnppcCBpbnRvIHRoZSBmb2xkZXJzCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICR6aXAtPm51bUZpbGVzOyAkaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRnVsbEZpbGVOYW1lID0gJHppcC0+c3RhdEluZGV4KCRpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hlY2tSZWxhdGl2ZVBhdGgoJEZ1bGxGaWxlTmFtZVsnbmFtZSddKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdWJzdHIoJEZ1bGxGaWxlTmFtZVsnbmFtZSddLCAtMSwgMSkgPT0gIi8iKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZV9mb2xkZXIoJGJhc2VfZm9sZGVyIC4gJEZ1bGxGaWxlTmFtZVsnbmFtZSddKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIChzdWJzdHIoJEZ1bGxGaWxlTmFtZVsnbmFtZSddLCAtMSwgMSkgPT0gIi8iKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZmlsZWluZm8gPSBwYXRoaW5mbygkRnVsbEZpbGVOYW1lWyduYW1lJ10pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5fYXJyYXkoc3RydG9sb3dlcigkZmlsZWluZm9bJ2V4dGVuc2lvbiddKSwgJGNvbmZpZ1snZXh0J10pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3B5KCd6aXA6Ly8nIC4gJHBhdGggLiAnIycgLiAkRnVsbEZpbGVOYW1lWyduYW1lJ10sICRiYXNlX2ZvbGRlciAuICRGdWxsRmlsZU5hbWVbJ25hbWUnXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgJHppcC0+Y2xvc2UoKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSh0cmFucygnWmlwX05vX0V4dHJhY3QnKS5BZGRFcnJvckxvY2F0aW9uKCkpLT5zZW5kKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGV4aXQ7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICJneiI6CiAgICAgICAgICAgICAgICAgICAgLy8gTm8gcmVzdWx0aW5nIHNpemUgcHJlLWNvbnRyb2wgYXZhaWxhYmxlCiAgICAgICAgICAgICAgICAgICAgJHAgPSBuZXcgUGhhckRhdGEoJHBhdGgpOwogICAgICAgICAgICAgICAgICAgICRwLT5kZWNvbXByZXNzKCk7IC8vIGNyZWF0ZXMgZmlsZXMudGFyCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAidGFyIjoKICAgICAgICAgICAgICAgICAgICAvLyBObyByZXN1bHRpbmcgc2l6ZSBwcmUtY29udHJvbCBhdmFpbGFibGUKICAgICAgICAgICAgICAgICAgICAvLyB1bmFyY2hpdmUgZnJvbSB0aGUgdGFyCiAgICAgICAgICAgICAgICAgICAgJHBoYXIgPSBuZXcgUGhhckRhdGEoJHBhdGgpOwogICAgICAgICAgICAgICAgICAgICRwaGFyLT5kZWNvbXByZXNzRmlsZXMoKTsKICAgICAgICAgICAgICAgICAgICAkZmlsZXMgPSBhcnJheSgpOwogICAgICAgICAgICAgICAgICAgIGNoZWNrX2ZpbGVzX2V4dGVuc2lvbnNfb25fcGhhcigkcGhhciwgJGZpbGVzLCAnJywgJGNvbmZpZyk7CiAgICAgICAgICAgICAgICAgICAgJHBoYXItPmV4dHJhY3RUbygkYmFzZV9mb2xkZXIsICRmaWxlcywgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICByZXNwb25zZSh0cmFucygnWmlwX0ludmFsaWQnKS5BZGRFcnJvckxvY2F0aW9uKCkpLT5zZW5kKCk7CiAgICAgICAgICAgICAgICAgICAgZXhpdDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRmdHApIHsKICAgICAgICAgICAgICAgIHVubGluaygkcGF0aCk7CiAgICAgICAgICAgICAgICAkZnRwLT5wdXRBbGwoJGJhc2VfZm9sZGVyLCAiLyIuJGNvbmZpZ1snZnRwX2Jhc2VfZm9sZGVyJ10gLiAkY29uZmlnWyd1cGxvYWRfZGlyJ10gLiBmaXhfZGlybmFtZSgkX1BPU1RbJ3BhdGgnXSksIEZUUF9CSU5BUlkpOwogICAgICAgICAgICAgICAgZGVsZXRlRGlyKCRiYXNlX2ZvbGRlcik7CiAgICAgICAgICAgIH0KCgoJCQlicmVhazsKCQljYXNlICdtZWRpYV9wcmV2aWV3JzoKCQkJaWYoaXNzZXQoJF9HRVRbJ2ZpbGUnXSkpewoJCQkJJF9HRVRbJ2ZpbGUnXSA9IHNhbml0aXplKCRfR0VUWydmaWxlJ10pOwoJCQl9CgkJCWlmKGlzc2V0KCRfR0VUWyd0aXRsZSddKSl7CgkJCQkkX0dFVFsndGl0bGUnXSA9IHNhbml0aXplKCRfR0VUWyd0aXRsZSddKTsKCQkJfQoJCQlpZigkZnRwKXsKCQkJCSRwcmV2aWV3X2ZpbGUgPSAkY29uZmlnWydmdHBfYmFzZV91cmwnXS4kY29uZmlnWyd1cGxvYWRfZGlyJ10gLiAkX0dFVFsnZmlsZSddOwoJCQl9ZWxzZXsKCQkJCSRwcmV2aWV3X2ZpbGUgPSAkY29uZmlnWydjdXJyZW50X3BhdGgnXSAuICRfR0VUWyJmaWxlIl07CgkJCX0KCQkJJGluZm8gPSBwYXRoaW5mbygkcHJldmlld19maWxlKTsKCQkJb2Jfc3RhcnQoKTsKCQkJPz4KCQkJPGRpdiBpZD0ianBfY29udGFpbmVyXzEiIGNsYXNzPSJqcC12aWRlbyIgc3R5bGU9Im1hcmdpbjowIGF1dG87Ij4KCQkJCTxkaXYgY2xhc3M9ImpwLXR5cGUtc2luZ2xlIj4KCQkJCTxkaXYgaWQ9ImpxdWVyeV9qcGxheWVyXzEiIGNsYXNzPSJqcC1qcGxheWVyIj48L2Rpdj4KCQkJCTxkaXYgY2xhc3M9ImpwLWd1aSI+CgkJCQkJPGRpdiBjbGFzcz0ianAtdmlkZW8tcGxheSI+CgkJCQkJPGEgaHJlZj0iamF2YXNjcmlwdDo7IiBjbGFzcz0ianAtdmlkZW8tcGxheS1pY29uIiB0YWJpbmRleD0iMSI+cGxheTwvYT4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJqcC1pbnRlcmZhY2UiPgoJCQkJCTxkaXYgY2xhc3M9ImpwLXByb2dyZXNzIj4KCQkJCQkJPGRpdiBjbGFzcz0ianAtc2Vlay1iYXIiPgoJCQkJCQk8ZGl2IGNsYXNzPSJqcC1wbGF5LWJhciI+PC9kaXY+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImpwLWN1cnJlbnQtdGltZSI+PC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ianAtZHVyYXRpb24iPjwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImpwLWNvbnRyb2xzLWhvbGRlciI+CgkJCQkJCTx1bCBjbGFzcz0ianAtY29udHJvbHMiPgoJCQkJCQk8bGk+PGEgaHJlZj0iamF2YXNjcmlwdDo7IiBjbGFzcz0ianAtcGxheSIgdGFiaW5kZXg9IjEiPnBsYXk8L2E+PC9saT4KCQkJCQkJPGxpPjxhIGhyZWY9ImphdmFzY3JpcHQ6OyIgY2xhc3M9ImpwLXBhdXNlIiB0YWJpbmRleD0iMSI+cGF1c2U8L2E+PC9saT4KCQkJCQkJPGxpPjxhIGhyZWY9ImphdmFzY3JpcHQ6OyIgY2xhc3M9ImpwLXN0b3AiIHRhYmluZGV4PSIxIj5zdG9wPC9hPjwvbGk+CgkJCQkJCTxsaT48YSBocmVmPSJqYXZhc2NyaXB0OjsiIGNsYXNzPSJqcC1tdXRlIiB0YWJpbmRleD0iMSIgdGl0bGU9Im11dGUiPm11dGU8L2E+PC9saT4KCQkJCQkJPGxpPjxhIGhyZWY9ImphdmFzY3JpcHQ6OyIgY2xhc3M9ImpwLXVubXV0ZSIgdGFiaW5kZXg9IjEiIHRpdGxlPSJ1bm11dGUiPnVubXV0ZTwvYT48L2xpPgoJCQkJCQk8bGk+PGEgaHJlZj0iamF2YXNjcmlwdDo7IiBjbGFzcz0ianAtdm9sdW1lLW1heCIgdGFiaW5kZXg9IjEiIHRpdGxlPSJtYXggdm9sdW1lIj5tYXggdm9sdW1lPC9hPjwvbGk+CgkJCQkJCTwvdWw+CgkJCQkJCTxkaXYgY2xhc3M9ImpwLXZvbHVtZS1iYXIiPgoJCQkJCQk8ZGl2IGNsYXNzPSJqcC12b2x1bWUtYmFyLXZhbHVlIj48L2Rpdj4KCQkJCQkJPC9kaXY+CgkJCQkJCTx1bCBjbGFzcz0ianAtdG9nZ2xlcyI+CgkJCQkJCTxsaT48YSBocmVmPSJqYXZhc2NyaXB0OjsiIGNsYXNzPSJqcC1mdWxsLXNjcmVlbiIgdGFiaW5kZXg9IjEiIHRpdGxlPSJmdWxsIHNjcmVlbiI+ZnVsbCBzY3JlZW48L2E+PC9saT4KCQkJCQkJPGxpPjxhIGhyZWY9ImphdmFzY3JpcHQ6OyIgY2xhc3M9ImpwLXJlc3RvcmUtc2NyZWVuIiB0YWJpbmRleD0iMSIgdGl0bGU9InJlc3RvcmUgc2NyZWVuIj5yZXN0b3JlIHNjcmVlbjwvYT48L2xpPgoJCQkJCQk8bGk+PGEgaHJlZj0iamF2YXNjcmlwdDo7IiBjbGFzcz0ianAtcmVwZWF0IiB0YWJpbmRleD0iMSIgdGl0bGU9InJlcGVhdCI+cmVwZWF0PC9hPjwvbGk+CgkJCQkJCTxsaT48YSBocmVmPSJqYXZhc2NyaXB0OjsiIGNsYXNzPSJqcC1yZXBlYXQtb2ZmIiB0YWJpbmRleD0iMSIgdGl0bGU9InJlcGVhdCBvZmYiPnJlcGVhdCBvZmY8L2E+PC9saT4KCQkJCQkJPC91bD4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJqcC10aXRsZSIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgoJCQkJCQk8dWw+CgkJCQkJCTxsaT48L2xpPgoJCQkJCQk8L3VsPgoJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCQk8ZGl2IGNsYXNzPSJqcC1uby1zb2x1dGlvbiI+CgkJCQkJPHNwYW4+VXBkYXRlIFJlcXVpcmVkPC9zcGFuPgoJCQkJCVRvIHBsYXkgdGhlIG1lZGlhIHlvdSB3aWxsIG5lZWQgdG8gZWl0aGVyIHVwZGF0ZSB5b3VyIGJyb3dzZXIgdG8gYSByZWNlbnQgdmVyc2lvbiBvciB1cGRhdGUgeW91ciA8YSBocmVmPSJodHRwczovL2dldC5hZG9iZS5jb20vZmxhc2hwbGF5ZXIvIiB0YXJnZXQ9Il9ibGFuayI+Rmxhc2ggcGx1Z2luPC9hPi4KCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCTwvZGl2PgoJCQk8P3BocCBpZihpbl9hcnJheShzdHJ0b2xvd2VyKCRpbmZvWydleHRlbnNpb24nXSksICRjb25maWdbJ2V4dF9tdXNpYyddKSk6ID8+CgogICAgICAgICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbiAoKSB7CgogICAgICAgICAgICAgICAgICAgICQoIiNqcXVlcnlfanBsYXllcl8xIikualBsYXllcih7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlYWR5OiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmpQbGF5ZXIoInNldE1lZGlhIiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAiPD9waHAgJF9HRVRbJ3RpdGxlJ107ID8+IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtcDM6ICI8P3BocCBlY2hvICRwcmV2aWV3X2ZpbGU7ID8+IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtNGE6ICI8P3BocCBlY2hvICRwcmV2aWV3X2ZpbGU7ID8+IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZ2E6ICI8P3BocCBlY2hvICRwcmV2aWV3X2ZpbGU7ID8+IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXY6ICI8P3BocCBlY2hvICRwcmV2aWV3X2ZpbGU7ID8+IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHN3ZlBhdGg6ICJqcyIsCiAgICAgICAgICAgICAgICAgICAgICAgIHNvbHV0aW9uOiAiaHRtbCxmbGFzaCIsCiAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBsaWVkOiAibXAzLCBtNGEsIG1pZGksIG1pZCwgb2dhLHdlYm1hLCBvZ2csIHdhdiIsCiAgICAgICAgICAgICAgICAgICAgICAgIHNtb290aFBsYXlCYXI6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgIGtleUVuYWJsZWQ6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgPC9zY3JpcHQ+CgogICAgICAgICAgICA8P3BocCBlbHNlaWYgKGluX2FycmF5KHN0cnRvbG93ZXIoJGluZm9bJ2V4dGVuc2lvbiddKSwgJGNvbmZpZ1snZXh0X3ZpZGVvJ10pKToJPz4KCiAgICAgICAgICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uICgpIHsKCiAgICAgICAgICAgICAgICAgICAgJCgiI2pxdWVyeV9qcGxheWVyXzEiKS5qUGxheWVyKHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVhZHk6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykualBsYXllcigic2V0TWVkaWEiLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICI8P3BocCAkX0dFVFsndGl0bGUnXTsgPz4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG00djogIjw/cGhwIGVjaG8gJHByZXZpZXdfZmlsZTsgPz4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ndjogIjw/cGhwIGVjaG8gJHByZXZpZXdfZmlsZTsgPz4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsdjogIjw/cGhwIGVjaG8gJHByZXZpZXdfZmlsZTsgPz4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgc3dmUGF0aDogImpzIiwKICAgICAgICAgICAgICAgICAgICAgICAgc29sdXRpb246ICJodG1sLGZsYXNoIiwKICAgICAgICAgICAgICAgICAgICAgICAgc3VwcGxpZWQ6ICJtcDQsIG00diwgb2d2LCBmbHYsIHdlYm12LCB3ZWJtIiwKICAgICAgICAgICAgICAgICAgICAgICAgc21vb3RoUGxheUJhcjogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAga2V5RW5hYmxlZDogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgPC9zY3JpcHQ+CgogICAgICAgICAgICA8P3BocCBlbmRpZjsKCiAgICAgICAgICAgICRjb250ZW50ID0gb2JfZ2V0X2NsZWFuKCk7CgogICAgICAgICAgICByZXNwb25zZSgkY29udGVudCktPnNlbmQoKTsKICAgICAgICAgICAgZXhpdDsKCiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ2NvcHlfY3V0JzoKICAgICAgICAgICAgaWYgKCRfUE9TVFsnc3ViX2FjdGlvbiddICE9ICdjb3B5JyAmJiAkX1BPU1RbJ3N1Yl9hY3Rpb24nXSAhPSAnY3V0JykgewogICAgICAgICAgICAgICAgcmVzcG9uc2UodHJhbnMoJ3dyb25nIHN1Yi1hY3Rpb24nKS5BZGRFcnJvckxvY2F0aW9uKCkpLT5zZW5kKCk7CiAgICAgICAgICAgICAgICBleGl0OwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAodHJpbSgkX1BPU1RbJ3BhdGgnXSkgPT0gJycpIHsKICAgICAgICAgICAgICAgIHJlc3BvbnNlKHRyYW5zKCdubyBwYXRoJykuQWRkRXJyb3JMb2NhdGlvbigpKS0+c2VuZCgpOwogICAgICAgICAgICAgICAgZXhpdDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJG1zZ19zdWJfYWN0aW9uID0gKCRfUE9TVFsnc3ViX2FjdGlvbiddID09ICdjb3B5JyA/IHRyYW5zKCdDb3B5JykgOiB0cmFucygnQ3V0JykpOwogICAgICAgICAgICAkcGF0aCA9ICRjb25maWdbJ2N1cnJlbnRfcGF0aCddIC4gJF9QT1NUWydwYXRoJ107CgogICAgICAgICAgICBpZiAoaXNfZGlyKCRwYXRoKSkgewogICAgICAgICAgICAgICAgLy8gY2FuJ3QgY29weS9jdXQgZGlycwogICAgICAgICAgICAgICAgaWYgKCRjb25maWdbJ2NvcHlfY3V0X2RpcnMnXSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICByZXNwb25zZShzcHJpbnRmKHRyYW5zKCdDb3B5X0N1dF9Ob3RfQWxsb3dlZCcpLCAkbXNnX3N1Yl9hY3Rpb24sIHRyYW5zKCdGb2xkZXJzJykpLkFkZEVycm9yTG9jYXRpb24oKSktPnNlbmQoKTsKICAgICAgICAgICAgICAgICAgICBleGl0OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGxpc3QoJHNpemVGb2xkZXJUb0NvcHksICRmaWxlTnVtLCAkZm9sZGVyc0NvdW50KSA9IGZvbGRlcl9pbmZvKCRwYXRoLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAvLyBzaXplIG92ZXIgbGltaXQKICAgICAgICAgICAgICAgIGlmICgkY29uZmlnWydjb3B5X2N1dF9tYXhfc2l6ZSddICE9PSBmYWxzZSAmJiBpc19pbnQoJGNvbmZpZ1snY29weV9jdXRfbWF4X3NpemUnXSkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoKCRjb25maWdbJ2NvcHlfY3V0X21heF9zaXplJ10gKiAxMDI0ICogMTAyNCkgPCAkc2l6ZUZvbGRlclRvQ29weSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZShzcHJpbnRmKHRyYW5zKCdDb3B5X0N1dF9TaXplX0xpbWl0JyksICRtc2dfc3ViX2FjdGlvbiwgJGNvbmZpZ1snY29weV9jdXRfbWF4X3NpemUnXSkuQWRkRXJyb3JMb2NhdGlvbigpKS0+c2VuZCgpOwogICAgICAgICAgICAgICAgICAgICAgICBleGl0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyBmaWxlIGNvdW50IG92ZXIgbGltaXQKICAgICAgICAgICAgICAgIGlmICgkY29uZmlnWydjb3B5X2N1dF9tYXhfY291bnQnXSAhPT0gZmFsc2UgJiYgaXNfaW50KCRjb25maWdbJ2NvcHlfY3V0X21heF9jb3VudCddKSkgewogICAgICAgICAgICAgICAgICAgIGlmICgkY29uZmlnWydjb3B5X2N1dF9tYXhfY291bnQnXSA8ICRmaWxlTnVtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlKHNwcmludGYodHJhbnMoJ0NvcHlfQ3V0X0NvdW50X0xpbWl0JyksICRtc2dfc3ViX2FjdGlvbiwgJGNvbmZpZ1snY29weV9jdXRfbWF4X2NvdW50J10pLkFkZEVycm9yTG9jYXRpb24oKSktPnNlbmQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgZXhpdDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCFjaGVja3Jlc3VsdGluZ3NpemUoJHNpemVGb2xkZXJUb0NvcHkpKSB7CiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2Uoc3ByaW50Zih0cmFucygnbWF4X3NpemVfcmVhY2hlZCcpLCAkY29uZmlnWydNYXhTaXplVG90YWwnXSkuQWRkRXJyb3JMb2NhdGlvbigpKS0+c2VuZCgpOwogICAgICAgICAgICAgICAgICAgIGV4aXQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAvLyBjYW4ndCBjb3B5L2N1dCBmaWxlcwogICAgICAgICAgICAgICAgaWYgKCRjb25maWdbJ2NvcHlfY3V0X2ZpbGVzJ10gPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2Uoc3ByaW50Zih0cmFucygnQ29weV9DdXRfTm90X0FsbG93ZWQnKSwgJG1zZ19zdWJfYWN0aW9uLCB0cmFucygnRmlsZXMnKSkuQWRkRXJyb3JMb2NhdGlvbigpKS0+c2VuZCgpOwogICAgICAgICAgICAgICAgICAgIGV4aXQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRfU0VTU0lPTlsnUkYnXVsnY2xpcGJvYXJkJ11bJ3BhdGgnXSA9ICRfUE9TVFsncGF0aCddOwogICAgICAgICAgICAkX1NFU1NJT05bJ1JGJ11bJ2NsaXBib2FyZF9hY3Rpb24nXSA9ICRfUE9TVFsnc3ViX2FjdGlvbiddOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdjbGVhcl9jbGlwYm9hcmQnOgogICAgICAgICAgICAkX1NFU1NJT05bJ1JGJ11bJ2NsaXBib2FyZCddID0gbnVsbDsKICAgICAgICAgICAgJF9TRVNTSU9OWydSRiddWydjbGlwYm9hcmRfYWN0aW9uJ10gPSBudWxsOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdjaG1vZCc6CiAgICAgICAgICAgIGlmICgkZnRwKSB7CiAgICAgICAgICAgICAgICAkcGF0aCA9ICRjb25maWdbJ2Z0cF9iYXNlX3VybCddIC4gJGNvbmZpZ1sndXBsb2FkX2RpciddIC4gJF9QT1NUWydwYXRoJ107CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgKCRfUE9TVFsnZm9sZGVyJ109PTEgJiYgJGNvbmZpZ1snY2htb2RfZGlycyddID09PSBmYWxzZSkKICAgICAgICAgICAgICAgICAgICB8fCAoJF9QT1NUWydmb2xkZXInXT09MCAmJiAkY29uZmlnWydjaG1vZF9maWxlcyddID09PSBmYWxzZSkKICAgICAgICAgICAgICAgICAgICB8fCAoaXNfZnVuY3Rpb25fY2FsbGFibGUoImNobW9kIikgPT09IGZhbHNlKSkgewogICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlKHNwcmludGYodHJhbnMoJ0ZpbGVfUGVybWlzc2lvbl9Ob3RfQWxsb3dlZCcpLCAoaXNfZGlyKCRwYXRoKSA/IHRyYW5zKCdGb2xkZXJzJykgOiB0cmFucygnRmlsZXMnKSksIDQwMykuQWRkRXJyb3JMb2NhdGlvbigpKS0+c2VuZCgpOwogICAgICAgICAgICAgICAgICAgIGV4aXQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkaW5mbyA9ICRfUE9TVFsncGVybWlzc2lvbnMnXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRwYXRoID0gJGNvbmZpZ1snY3VycmVudF9wYXRoJ10gLiAkX1BPU1RbJ3BhdGgnXTsKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAoaXNfZGlyKCRwYXRoKSAmJiAkY29uZmlnWydjaG1vZF9kaXJzJ10gPT09IGZhbHNlKQogICAgICAgICAgICAgICAgICAgIHx8IChpc19maWxlKCRwYXRoKSAmJiAkY29uZmlnWydjaG1vZF9maWxlcyddID09PSBmYWxzZSkKICAgICAgICAgICAgICAgICAgICB8fCAoaXNfZnVuY3Rpb25fY2FsbGFibGUoImNobW9kIikgPT09IGZhbHNlKSkgewogICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlKHNwcmludGYodHJhbnMoJ0ZpbGVfUGVybWlzc2lvbl9Ob3RfQWxsb3dlZCcpLCAoaXNfZGlyKCRwYXRoKSA/IHRyYW5zKCdGb2xkZXJzJykgOiB0cmFucygnRmlsZXMnKSksIDQwMykuQWRkRXJyb3JMb2NhdGlvbigpKS0+c2VuZCgpOwogICAgICAgICAgICAgICAgICAgIGV4aXQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHBlcm1zID0gZmlsZXBlcm1zKCRwYXRoKSAmIDA3Nzc7CgogICAgICAgICAgICAgICAgJGluZm8gPSAnLSc7CgogICAgICAgICAgICAgICAgLy8gT3duZXIKICAgICAgICAgICAgICAgICRpbmZvIC49ICgoJHBlcm1zICYgMHgwMTAwKSA/ICdyJyA6ICctJyk7CiAgICAgICAgICAgICAgICAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDA4MCkgPyAndycgOiAnLScpOwogICAgICAgICAgICAgICAgJGluZm8gLj0gKCgkcGVybXMgJiAweDAwNDApID8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoJHBlcm1zICYgMHgwODAwKSA/ICdzJyA6ICd4JykgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgkcGVybXMgJiAweDA4MDApID8gJ1MnIDogJy0nKSk7CgogICAgICAgICAgICAgICAgLy8gR3JvdXAKICAgICAgICAgICAgICAgICRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDIwKSA/ICdyJyA6ICctJyk7CiAgICAgICAgICAgICAgICAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAxMCkgPyAndycgOiAnLScpOwogICAgICAgICAgICAgICAgJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMDgpID8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoJHBlcm1zICYgMHgwNDAwKSA/ICdzJyA6ICd4JykgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgkcGVybXMgJiAweDA0MDApID8gJ1MnIDogJy0nKSk7CgogICAgICAgICAgICAgICAgLy8gV29ybGQKICAgICAgICAgICAgICAgICRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDA0KSA/ICdyJyA6ICctJyk7CiAgICAgICAgICAgICAgICAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAwMikgPyAndycgOiAnLScpOwogICAgICAgICAgICAgICAgJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMDEpID8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoJHBlcm1zICYgMHgwMjAwKSA/ICd0JyA6ICd4JykgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgkcGVybXMgJiAweDAyMDApID8gJ1QnIDogJy0nKSk7CiAgICAgICAgICAgIH0KCgogICAgICAgICAgICAkcmV0ID0gJzxkaXYgaWQ9ImZpbGVzX3Blcm1pc3Npb25fc3RhcnQiPgogICAgICAgICAgICA8Zm9ybSBpZD0iY2htb2RfZm9ybSI+CiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIGZpbGUtcGVybXMtdGFibGUiPgogICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+ciZuYnNwOyZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+dyZuYnNwOyZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+eCZuYnNwOyZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4nLnRyYW5zKCdVc2VyJykuJzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGlucHV0IGlkPSJ1XzQiIHR5cGU9ImNoZWNrYm94IiBkYXRhLXZhbHVlPSI0IiBkYXRhLWdyb3VwPSJ1c2VyIiAnLihzdWJzdHIoJGluZm8sIDEsIDEpPT0ncicgPyAiIGNoZWNrZWQiIDogIiIpLic+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48aW5wdXQgaWQ9InVfMiIgdHlwZT0iY2hlY2tib3giIGRhdGEtdmFsdWU9IjIiIGRhdGEtZ3JvdXA9InVzZXIiICcuKHN1YnN0cigkaW5mbywgMiwgMSk9PSd3JyA/ICIgY2hlY2tlZCIgOiAiIikuJz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbnB1dCBpZD0idV8xIiB0eXBlPSJjaGVja2JveCIgZGF0YS12YWx1ZT0iMSIgZGF0YS1ncm91cD0idXNlciIgJy4oc3Vic3RyKCRpbmZvLCAzLCAxKT09J3gnID8gIiBjaGVja2VkIiA6ICIiKS4nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4nLnRyYW5zKCdHcm91cCcpLic8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbnB1dCBpZD0iZ180IiB0eXBlPSJjaGVja2JveCIgZGF0YS12YWx1ZT0iNCIgZGF0YS1ncm91cD0iZ3JvdXAiICcuKHN1YnN0cigkaW5mbywgNCwgMSk9PSdyJyA/ICIgY2hlY2tlZCIgOiAiIikuJz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbnB1dCBpZD0iZ18yIiB0eXBlPSJjaGVja2JveCIgZGF0YS12YWx1ZT0iMiIgZGF0YS1ncm91cD0iZ3JvdXAiICcuKHN1YnN0cigkaW5mbywgNSwgMSk9PSd3JyA/ICIgY2hlY2tlZCIgOiAiIikuJz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbnB1dCBpZD0iZ18xIiB0eXBlPSJjaGVja2JveCIgZGF0YS12YWx1ZT0iMSIgZGF0YS1ncm91cD0iZ3JvdXAiICcuKHN1YnN0cigkaW5mbywgNiwgMSk9PSd4JyA/ICIgY2hlY2tlZCIgOiAiIikuJz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+Jy50cmFucygnQWxsJykuJzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGlucHV0IGlkPSJhXzQiIHR5cGU9ImNoZWNrYm94IiBkYXRhLXZhbHVlPSI0IiBkYXRhLWdyb3VwPSJhbGwiICcuKHN1YnN0cigkaW5mbywgNywgMSk9PSdyJyA/ICIgY2hlY2tlZCIgOiAiIikuJz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbnB1dCBpZD0iYV8yIiB0eXBlPSJjaGVja2JveCIgZGF0YS12YWx1ZT0iMiIgZGF0YS1ncm91cD0iYWxsIiAnLihzdWJzdHIoJGluZm8sIDgsIDEpPT0ndycgPyAiIGNoZWNrZWQiIDogIiIpLic+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48aW5wdXQgaWQ9ImFfMSIgdHlwZT0iY2hlY2tib3giIGRhdGEtdmFsdWU9IjEiIGRhdGEtZ3JvdXA9ImFsbCIgJy4oc3Vic3RyKCRpbmZvLCA5LCAxKT09J3gnID8gIiBjaGVja2VkIiA6ICIiKS4nPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiPjxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iaW5wdXQtYmxvY2stbGV2ZWwiIG5hbWU9ImNobW9kX3ZhbHVlIiBpZD0iY2htb2RfdmFsdWUiIHZhbHVlPSIiIGRhdGEtZGVmLXZhbHVlPSIiPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICAgIDwvdGFibGU+JzsKCiAgICAgICAgICAgIGlmICgoISRmdHAgJiYgaXNfZGlyKCRwYXRoKSkpIHsKICAgICAgICAgICAgICAgICRyZXQgLj0gJzxkaXYgY2xhc3M9Imhlcm8tdW5pdCIgc3R5bGU9InBhZGRpbmc6MTBweDsiPicudHJhbnMoJ0ZpbGVfUGVybWlzc2lvbl9SZWN1cnNpdmUnKS4nPGJyLz48YnIvPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9InVuc3R5bGVkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48bGFiZWwgY2xhc3M9InJhZGlvIj48aW5wdXQgdmFsdWU9Im5vbmUiIG5hbWU9ImFwcGx5X3JlY3Vyc2l2ZSIgdHlwZT0icmFkaW8iIGNoZWNrZWQ+ICcudHJhbnMoJ05vJykuJzwvbGFiZWw+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48bGFiZWwgY2xhc3M9InJhZGlvIj48aW5wdXQgdmFsdWU9ImZpbGVzIiBuYW1lPSJhcHBseV9yZWN1cnNpdmUiIHR5cGU9InJhZGlvIj4gJy50cmFucygnRmlsZXMnKS4nPC9sYWJlbD48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxsYWJlbCBjbGFzcz0icmFkaW8iPjxpbnB1dCB2YWx1ZT0iZm9sZGVycyIgbmFtZT0iYXBwbHlfcmVjdXJzaXZlIiB0eXBlPSJyYWRpbyI+ICcudHJhbnMoJ0ZvbGRlcnMnKS4nPC9sYWJlbD48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxsYWJlbCBjbGFzcz0icmFkaW8iPjxpbnB1dCB2YWx1ZT0iYm90aCIgbmFtZT0iYXBwbHlfcmVjdXJzaXZlIiB0eXBlPSJyYWRpbyI+ICcudHJhbnMoJ0ZpbGVzJykuJyAmICcudHJhbnMoJ0ZvbGRlcnMnKS4nPC9sYWJlbD48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4nOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkcmV0IC49ICc8L2Zvcm0+PC9kaXY+JzsKCiAgICAgICAgICAgIHJlc3BvbnNlKCRyZXQpLT5zZW5kKCk7CiAgICAgICAgICAgIGV4aXQ7CgogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdnZXRfbGFuZyc6CiAgICAgICAgICAgIGlmICghIGZpbGVfZXhpc3RzKCdsYW5nL2xhbmd1YWdlcy5waHAnKSkgewogICAgICAgICAgICAgICAgcmVzcG9uc2UodHJhbnMoJ0xhbmdfTm90X0ZvdW5kJykuQWRkRXJyb3JMb2NhdGlvbigpKS0+c2VuZCgpOwogICAgICAgICAgICAgICAgZXhpdDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGxhbmd1YWdlcyA9IGluY2x1ZGUgJ2xhbmcvbGFuZ3VhZ2VzLnBocCc7CiAgICAgICAgICAgIGlmICghIGlzc2V0KCRsYW5ndWFnZXMpIHx8ICEgaXNfYXJyYXkoJGxhbmd1YWdlcykpIHsKICAgICAgICAgICAgICAgIHJlc3BvbnNlKHRyYW5zKCdMYW5nX05vdF9Gb3VuZCcpLkFkZEVycm9yTG9jYXRpb24oKSktPnNlbmQoKTsKICAgICAgICAgICAgICAgIGV4aXQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRjdXJyID0gJF9TRVNTSU9OWydSRiddWydsYW5ndWFnZSddOwoKICAgICAgICAgICAgJHJldCA9ICc8c2VsZWN0IGlkPSJuZXdfbGFuZ19zZWxlY3QiPic7CiAgICAgICAgICAgIGZvcmVhY2ggKCRsYW5ndWFnZXMgYXMgJGNvZGUgPT4gJG5hbWUpIHsKICAgICAgICAgICAgICAgICRyZXQgLj0gJzxvcHRpb24gdmFsdWU9IicgLiAkY29kZSAuICciJyAuICgkY29kZSA9PSAkY3VyciA/ICcgc2VsZWN0ZWQnIDogJycpIC4gJz4nIC4gJG5hbWUgLiAnPC9vcHRpb24+JzsKICAgICAgICAgICAgfQogICAgICAgICAgICAkcmV0IC49ICc8L3NlbGVjdD4nOwoKICAgICAgICAgICAgcmVzcG9uc2UoJHJldCktPnNlbmQoKTsKICAgICAgICAgICAgZXhpdDsKCiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ2NoYW5nZV9sYW5nJzoKICAgICAgICAgICAgJGNob29zZW5fbGFuZyA9ICghZW1wdHkoJF9QT1NUWydjaG9vc2VuX2xhbmcnXSkpPyAkX1BPU1RbJ2Nob29zZW5fbGFuZyddOiJlbl9FTiI7CgogICAgICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygkY2hvb3Nlbl9sYW5nLCAkbGFuZ3VhZ2VzKSkgewogICAgICAgICAgICAgICAgaWYgKCEgZmlsZV9leGlzdHMoJ2xhbmcvJyAuICRjaG9vc2VuX2xhbmcgLiAnLnBocCcpKSB7CiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UodHJhbnMoJ0xhbmdfTm90X0ZvdW5kJykuQWRkRXJyb3JMb2NhdGlvbigpKS0+c2VuZCgpOwogICAgICAgICAgICAgICAgICAgIGV4aXQ7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRfU0VTU0lPTlsnUkYnXVsnbGFuZ3VhZ2UnXSA9ICRjaG9vc2VuX2xhbmc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ2NhZF9wcmV2aWV3JzoKICAgICAgICAgICAgaWYgKCRmdHApIHsKICAgICAgICAgICAgICAgICRzZWxlY3RlZF9maWxlID0gJGNvbmZpZ1snZnRwX2Jhc2VfdXJsJ10uJGNvbmZpZ1sndXBsb2FkX2RpciddIC4gJF9HRVRbJ2ZpbGUnXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRzZWxlY3RlZF9maWxlID0gJGNvbmZpZ1snY3VycmVudF9wYXRoJ10gLiAkX0dFVFsnZmlsZSddOwoKICAgICAgICAgICAgICAgIGlmICghIGZpbGVfZXhpc3RzKCRzZWxlY3RlZF9maWxlKSkgewogICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlKHRyYW5zKCdGaWxlX05vdF9Gb3VuZCcpLkFkZEVycm9yTG9jYXRpb24oKSktPnNlbmQoKTsKICAgICAgICAgICAgICAgICAgICBleGl0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgkZnRwKSB7CiAgICAgICAgICAgICAgICAkdXJsX2ZpbGUgPSAkc2VsZWN0ZWRfZmlsZTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICR1cmxfZmlsZSA9ICRjb25maWdbJ2Jhc2VfdXJsJ10gLiAkY29uZmlnWyd1cGxvYWRfZGlyJ10gLiBzdHJfcmVwbGFjZSgkY29uZmlnWydjdXJyZW50X3BhdGgnXSwgJycsICRfR0VUWyJmaWxlIl0pOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkY2FkX3VybCA9IHVybGVuY29kZSgkdXJsX2ZpbGUpOwogICAgICAgICAgICAkY2FkX2h0bWwgPSAiPGlmcmFtZSBzcmM9XCIvL3NoYXJlY2FkLm9yZy9jYWRmcmFtZS9sb2FkP3VybD0iIC4gJHVybF9maWxlIC4gIlwiIGNsYXNzPVwiZ29vZ2xlLWlmcmFtZVwiIHNjcm9sbGluZz1cIm5vXCI+PC9pZnJhbWU+IjsKICAgICAgICAgICAgJHJldCA9ICRjYWRfaHRtbDsKICAgICAgICAgICAgcmVzcG9uc2UoJHJldCktPnNlbmQoKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnZ2V0X2ZpbGUnOiAvLyBwcmV2aWV3IG9yIGVkaXQKICAgICAgICAgICAgJHN1Yl9hY3Rpb24gPSAkX0dFVFsnc3ViX2FjdGlvbiddOwogICAgICAgICAgICAkcHJldmlld19tb2RlID0gJF9HRVRbInByZXZpZXdfbW9kZSJdOwoKICAgICAgICAgICAgaWYgKCRzdWJfYWN0aW9uICE9ICdwcmV2aWV3JyAmJiAkc3ViX2FjdGlvbiAhPSAnZWRpdCcpIHsKICAgICAgICAgICAgICAgIHJlc3BvbnNlKHRyYW5zKCd3cm9uZyBhY3Rpb24nKS5BZGRFcnJvckxvY2F0aW9uKCkpLT5zZW5kKCk7CiAgICAgICAgICAgICAgICBleGl0OwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJGZ0cCkgewogICAgICAgICAgICAgICAgJHNlbGVjdGVkX2ZpbGUgPSAoJHN1Yl9hY3Rpb24gPT0gJ3ByZXZpZXcnID8gJGNvbmZpZ1snZnRwX2Jhc2VfdXJsJ10uJGNvbmZpZ1sndXBsb2FkX2RpciddIC4gJF9HRVRbJ2ZpbGUnXSA6ICRjb25maWdbJ2Z0cF9iYXNlX3VybCddLiRjb25maWdbJ3VwbG9hZF9kaXInXSAuICRfUE9TVFsncGF0aCddKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRzZWxlY3RlZF9maWxlID0gKCRzdWJfYWN0aW9uID09ICdwcmV2aWV3JyA/ICRjb25maWdbJ2N1cnJlbnRfcGF0aCddIC4gJF9HRVRbJ2ZpbGUnXSA6ICRjb25maWdbJ2N1cnJlbnRfcGF0aCddIC4gJF9QT1NUWydwYXRoJ10pOwoKICAgICAgICAgICAgICAgIGlmICghIGZpbGVfZXhpc3RzKCRzZWxlY3RlZF9maWxlKSkgewogICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlKHRyYW5zKCdGaWxlX05vdF9Gb3VuZCcpLkFkZEVycm9yTG9jYXRpb24oKSktPnNlbmQoKTsKICAgICAgICAgICAgICAgICAgICBleGl0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkaW5mbyA9IHBhdGhpbmZvKCRzZWxlY3RlZF9maWxlKTsKCiAgICAgICAgICAgIGlmICgkcHJldmlld19tb2RlID09ICd0ZXh0JykgewogICAgICAgICAgICAgICAgJGlzX2FsbG93ZWQgPSAoJHN1Yl9hY3Rpb24gPT0gJ3ByZXZpZXcnID8gJGNvbmZpZ1sncHJldmlld190ZXh0X2ZpbGVzJ10gOiAkY29uZmlnWydlZGl0X3RleHRfZmlsZXMnXSk7CiAgICAgICAgICAgICAgICAkYWxsb3dlZF9maWxlX2V4dHMgPSAoJHN1Yl9hY3Rpb24gPT0gJ3ByZXZpZXcnID8gJGNvbmZpZ1sncHJldmlld2FibGVfdGV4dF9maWxlX2V4dHMnXSA6ICRjb25maWdbJ2VkaXRhYmxlX3RleHRfZmlsZV9leHRzJ10pOwogICAgICAgICAgICB9IGVsc2VpZiAoJHByZXZpZXdfbW9kZSA9PSAnZ29vZ2xlJykgewogICAgICAgICAgICAgICAgJGlzX2FsbG93ZWQgPSAkY29uZmlnWydnb29nbGVkb2NfZW5hYmxlZCddOwogICAgICAgICAgICAgICAgJGFsbG93ZWRfZmlsZV9leHRzID0gJGNvbmZpZ1snZ29vZ2xlZG9jX2ZpbGVfZXh0cyddOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoISBpc3NldCgkYWxsb3dlZF9maWxlX2V4dHMpIHx8ICEgaXNfYXJyYXkoJGFsbG93ZWRfZmlsZV9leHRzKSkgewogICAgICAgICAgICAgICAgJGFsbG93ZWRfZmlsZV9leHRzID0gYXJyYXkoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCFpc3NldCgkaW5mb1snZXh0ZW5zaW9uJ10pKSB7CiAgICAgICAgICAgICAgICAkaW5mb1snZXh0ZW5zaW9uJ109Jyc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCEgaW5fYXJyYXkoJGluZm9bJ2V4dGVuc2lvbiddLCAkYWxsb3dlZF9maWxlX2V4dHMpCiAgICAgICAgICAgICAgICB8fCAhIGlzc2V0KCRpc19hbGxvd2VkKQogICAgICAgICAgICAgICAgfHwgJGlzX2FsbG93ZWQgPT09IGZhbHNlCiAgICAgICAgICAgICAgICB8fCAoISRmdHAgJiYgISBpc19yZWFkYWJsZSgkc2VsZWN0ZWRfZmlsZSkpCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgcmVzcG9uc2Uoc3ByaW50Zih0cmFucygnRmlsZV9PcGVuX0VkaXRfTm90X0FsbG93ZWQnKSwgKCRzdWJfYWN0aW9uID09ICdwcmV2aWV3JyA/IHN0cnRvbG93ZXIodHJhbnMoJ09wZW4nKSkgOiBzdHJ0b2xvd2VyKHRyYW5zKCdFZGl0JykpKSkuQWRkRXJyb3JMb2NhdGlvbigpKS0+c2VuZCgpOwogICAgICAgICAgICAgICAgZXhpdDsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoJHN1Yl9hY3Rpb24gPT0gJ3ByZXZpZXcnKSB7CiAgICAgICAgICAgICAgICBpZiAoJHByZXZpZXdfbW9kZSA9PSAndGV4dCcpIHsKICAgICAgICAgICAgICAgICAgICAvLyBnZXQgYW5kIHNhbml0aWVzCiAgICAgICAgICAgICAgICAgICAgJGRhdGEgPSBmaWxlX2dldF9jb250ZW50cygkc2VsZWN0ZWRfZmlsZSk7CiAgICAgICAgICAgICAgICAgICAgJGRhdGEgPSBodG1sc3BlY2lhbGNoYXJzKGh0bWxzcGVjaWFsY2hhcnNfZGVjb2RlKCRkYXRhKSk7CiAgICAgICAgICAgICAgICAgICAgJHJldCA9ICcnOwoKICAgICAgICAgICAgICAgICAgICAkcmV0IC49ICc8c2NyaXB0IHNyYz0iaHR0cHM6Ly9yYXdnaXQuY29tL2dvb2dsZS9jb2RlLXByZXR0aWZ5L21hc3Rlci9sb2FkZXIvcnVuX3ByZXR0aWZ5LmpzP2F1dG9sb2FkPXRydWUmc2tpbj1zdW5idXJzdCI+PC9zY3JpcHQ+JzsKICAgICAgICAgICAgICAgICAgICAkcmV0IC49ICc8P3ByZXR0aWZ5IGxhbmc9Jy4kaW5mb1snZXh0ZW5zaW9uJ10uJyBsaW5lbnVtcz10cnVlPz48cHJlIGNsYXNzPSJwcmV0dHlwcmludCI+PGNvZGUgY2xhc3M9Imxhbmd1YWdlLScuJGluZm9bJ2V4dGVuc2lvbiddLiciPicuJGRhdGEuJzwvY29kZT48L3ByZT4nOwogICAgICAgICAgICAgICAgfSBlbHNlaWYgKCRwcmV2aWV3X21vZGUgPT0gJ2dvb2dsZScpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJGZ0cCkgewogICAgICAgICAgICAgICAgICAgICAgICAkdXJsX2ZpbGUgPSAkc2VsZWN0ZWRfZmlsZTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkdXJsX2ZpbGUgPSAkY29uZmlnWydiYXNlX3VybCddIC4gJGNvbmZpZ1sndXBsb2FkX2RpciddIC4gc3RyX3JlcGxhY2UoJGNvbmZpZ1snY3VycmVudF9wYXRoJ10sICcnLCAkX0dFVFsiZmlsZSJdKTsKICAgICAgICAgICAgICAgICAgICB9CgoJCQkJCSRnb29nbGVkb2NfdXJsID0gdXJsZW5jb2RlKCR1cmxfZmlsZSk7CgkJCQkJJHJldCA9ICI8aWZyYW1lIHNyYz1cImh0dHBzOi8vZG9jcy5nb29nbGUuY29tL3ZpZXdlcj91cmw9IiAuICR1cmxfZmlsZSAuICImZW1iZWRkZWQ9dHJ1ZVwiIGNsYXNzPVwiZ29vZ2xlLWlmcmFtZVwiPjwvaWZyYW1lPiI7CgkJCQl9CgkJCX1lbHNlewoJCQkJJGRhdGEgPSBzdHJpcHNsYXNoZXMoaHRtbHNwZWNpYWxjaGFycyhmaWxlX2dldF9jb250ZW50cygkc2VsZWN0ZWRfZmlsZSkpKTsKCQkJCWlmKGluX2FycmF5KCRpbmZvWydleHRlbnNpb24nXSxhcnJheSgnaHRtbCcsJ2h0bWwnKSkpewoJCQkJCSRyZXQgPSAnPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuLmNrZWRpdG9yLmNvbS9ja2VkaXRvcjUvMTIuMS4wL2NsYXNzaWMvY2tlZGl0b3IuanMiPjwvc2NyaXB0Pjx0ZXh0YXJlYSBpZD0idGV4dGZpbGVfZWRpdF9hcmVhIiBzdHlsZT0id2lkdGg6MTAwJTtoZWlnaHQ6MzAwcHg7Ij4nLiRkYXRhLic8L3RleHRhcmVhPjxzY3JpcHQ+c2V0VGltZW91dChmdW5jdGlvbigpeyBDbGFzc2ljRWRpdG9yLmNyZWF0ZSggZG9jdW1lbnQucXVlcnlTZWxlY3RvciggIiN0ZXh0ZmlsZV9lZGl0X2FyZWEiICkpLmNhdGNoKCBmdW5jdGlvbihlcnJvcil7IGNvbnNvbGUuZXJyb3IoIGVycm9yICk7IH0gKTsgIH0sIDUwMCk7PC9zY3JpcHQ+JzsKCQkJCX1lbHNlewoJCQkJCSRyZXQgPSAnPHRleHRhcmVhIGlkPSJ0ZXh0ZmlsZV9lZGl0X2FyZWEiIHN0eWxlPSJ3aWR0aDoxMDAlO2hlaWdodDozMDBweDsiPicuJGRhdGEuJzwvdGV4dGFyZWE+JzsKCQkJCX0KCgkJCX0KCgkJCXJlc3BvbnNlKCRyZXQpLT5zZW5kKCk7CgkJCWV4aXQ7CgogICAgICAgICAgICBicmVhazsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICByZXNwb25zZSh0cmFucygnbm8gYWN0aW9uIHBhc3NlZCcpLkFkZEVycm9yTG9jYXRpb24oKSktPnNlbmQoKTsKICAgICAgICAgICAgZXhpdDsKICAgIH0KfSBlbHNlIHsKICAgIHJlc3BvbnNlKHRyYW5zKCdubyBhY3Rpb24gcGFzc2VkJykuQWRkRXJyb3JMb2NhdGlvbigpKS0+c2VuZCgpOwogICAgZXhpdDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/config/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/config/.htaccess</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[RGVueSBmcm9tIGFsbA==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/config/config.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJHZlcnNpb24gPSAiOS4xNC4wIjsKaWYgKHNlc3Npb25faWQoKSA9PSAnJykgewogICAgc2Vzc2lvbl9zdGFydCgpOwp9CgptYl9pbnRlcm5hbF9lbmNvZGluZygnVVRGLTgnKTsKbWJfaHR0cF9vdXRwdXQoJ1VURi04Jyk7Cm1iX2h0dHBfaW5wdXQoJ1VURi04Jyk7Cm1iX2xhbmd1YWdlKCd1bmknKTsKbWJfcmVnZXhfZW5jb2RpbmcoJ1VURi04Jyk7Cm9iX3N0YXJ0KCdtYl9vdXRwdXRfaGFuZGxlcicpOwpkYXRlX2RlZmF1bHRfdGltZXpvbmVfc2V0KCdFdXJvcGUvUm9tZScpOwpzZXRsb2NhbGUoTENfQ1RZUEUsICdlbl9VUycpOyAvL2NvcnJlY3QgdHJhbnNsaXRlcmF0aW9uCgovKgp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KfCBPcHRpb25hbCBzZWN1cml0eQp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KfAp8IGlmIHNldCB0byB0cnVlIG9ubHkgdGhvc2Ugd2lsbCBhY2Nlc3MgUkYgd2hvc2UgdXJsIGNvbnRhaW5zIHRoZSBhY2Nlc3Mga2V5KGFrZXkpIGxpa2U6CnwgPGlucHV0IHR5cGU9ImJ1dHRvbiIgaHJlZj0iLi4vZmlsZW1hbmFnZXIvZGlhbG9nLnBocD9maWVsZF9pZD1pbWdGaWVsZCZsYW5nPWVuX0VOJmFrZXk9bXlQcml2YXRlS2V5IiB2YWx1ZT0iRmlsZXMiPgp8IGluIHRpbnltY2UgYSBuZXcgcGFyYW1ldGVyIGFkZGVkOiBmaWxlbWFuYWdlcl9hY2Nlc3Nfa2V5OiJteVByaXZhdGVLZXkiCnwgZXhhbXBsZSB0aW55bWNlIGNvbmZpZzoKfAp8IHRpbnkgaW5pdCAuLi4KfCBleHRlcm5hbF9maWxlbWFuYWdlcl9wYXRoOiIuLi9maWxlbWFuYWdlci8iLAp8IGZpbGVtYW5hZ2VyX3RpdGxlOiJGaWxlbWFuYWdlciIgLAp8IGZpbGVtYW5hZ2VyX2FjY2Vzc19rZXk6Im15UHJpdmF0ZUtleSIgLAp8IC4uLgp8CiovCgpkZWZpbmUoJ1VTRV9BQ0NFU1NfS0VZUycsIHRydWUpOyAvLyBUUlVFIG9yIEZBTFNFCgovKgp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KfCBET04nVCBDT1BZIFRISVMgVkFSSUFCTEVTIElOIEZPTERFUlMgY29uZmlnLnBocCBGSUxFUwp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKi8KCmRlZmluZSgnREVCVUdfRVJST1JfTUVTU0FHRScsIGZhbHNlKTsgLy8gVFJVRSBvciBGQUxTRQoKLyoKfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnwgUGF0aCBjb25maWd1cmF0aW9uCnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQp8IEluIHRoaXMgY29uZmlndXJhdGlvbiB0aGUgZm9sZGVyIHRyZWUgaXMKfCByb290CnwgICAgfC0gc291cmNlIDwtIHVwbG9hZCBmb2xkZXIKfCAgICB8LSB0aHVtYnMgPC0gdGh1bWJuYWlsIGZvbGRlciBbbXVzdCBoYXZlIHdyaXRlIHBlcm1pc3Npb24gKDc1NSldCnwgICAgfC0gZmlsZW1hbmFnZXIKfCAgICB8LSBqcwp8ICAgIHwgICB8LSB0aW55bWNlCnwgICAgfCAgIHwgICB8LSBwbHVnaW5zCnwgICAgfCAgIHwgICB8ICAgfC0gcmVzcG9uc2l2ZWZpbGVtYW5hZ2VyCnwgICAgfCAgIHwgICB8ICAgfCAgIHwtIHBsdWdpbi5taW4uanMKKi8KCiRmaWxlbWFuYWdlcl9jb25maWcgPSBhcnJheSgKCiAgICAvKgogICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICB8IERPTidUIFRPVUNIIChiYXNlIHVybCAob25seSBkb21haW4pIG9mIHNpdGUpLgogICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICB8CiAgICB8IHdpdGhvdXQgZmluYWwgLyAoRE9OJ1QgVE9VQ0gpCiAgICB8CiAgICAqLwogICAgJ2Jhc2VfdXJsJyA9PiAoKGlzc2V0KCRfU0VSVkVSWydIVFRQUyddKSAmJiAkX1NFUlZFUlsnSFRUUFMnXSA9PSAib24iKSA/ICJodHRwcyIgOiAiaHR0cCIpLiAiOi8vIi4gQCRfU0VSVkVSWydIVFRQX0hPU1QnXSwKICAgIC8qCiAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIHwgcGF0aCBmcm9tIGJhc2VfdXJsIHRvIGJhc2Ugb2YgdXBsb2FkIGZvbGRlcgogICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICB8CiAgICB8IHdpdGggc3RhcnQgYW5kIGZpbmFsIC8KICAgIHwKICAgICovCiAgICAndXBsb2FkX2RpcicgPT4gJy91cGxvYWRzLycsCiAgICAvKgogICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICB8IHJlbGF0aXZlIHBhdGggZnJvbSBmaWxlbWFuYWdlciBmb2xkZXIgdG8gdXBsb2FkIGZvbGRlcgogICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICB8CiAgICB8IHdpdGggZmluYWwgLwogICAgfAogICAgKi8KICAgICdjdXJyZW50X3BhdGgnID0+ICcuLi8uLi8uLi8uLi91cGxvYWRzLycsCgogICAgLyoKICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgfCByZWxhdGl2ZSBwYXRoIGZyb20gZmlsZW1hbmFnZXIgZm9sZGVyIHRvIHRodW1icyBmb2xkZXIKICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgfAogICAgfCB3aXRoIGZpbmFsIC8KICAgIHwgRE8gTk9UIHB1dCBpbnNpZGUgdXBsb2FkIGZvbGRlcgogICAgfAogICAgKi8KICAgICd0aHVtYnNfYmFzZV9wYXRoJyA9PiAnLi4vLi4vLi4vLi4vdG1wL3RodW1icy8nLAoKICAgIC8qCiAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIHwgcGF0aCBmcm9tIGJhc2VfdXJsIHRvIGJhc2Ugb2YgdGh1bWJzIGZvbGRlcgogICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICB8CiAgICB8IHdpdGggZmluYWwgLwogICAgfCBETyBOT1QgcHV0IGluc2lkZSB1cGxvYWQgZm9sZGVyCiAgICB8CiAgICAqLwogICAgJ3RodW1ic191cGxvYWRfZGlyJyA9PiAnL3RtcC90aHVtYnMvJywKCgogICAgLyoKICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgfCBtaW1lIGZpbGUgY29udHJvbCB0byBkZWZpbmUgZmlsZXMgZXh0ZW5zaW9ucwogICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICB8CiAgICB8IElmIHlvdSB3YW50IHRvIGJlIGZvcmNlZCB0byBhc3NpZ24gdGhlIGV4dGVuc2lvbiBzdGFydGluZyBmcm9tIHRoZSBtaW1lIHR5cGUKICAgIHwKICAgICovCiAgICAnbWltZV9leHRlbnNpb25fcmVuYW1lJwk9PiB0cnVlLAoKCiAgICAvKgogICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICB8IEZUUCBjb25maWd1cmF0aW9uIEJFVEEgVkVSU0lPTgogICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICB8CiAgICB8IElmIHlvdSB3YW50IGVuYWJsZSBmdHAgdXNlIHdyaXRlIHRoZXNlIHBhcmFtZXRyZXMgb3RoZXJ3aXNlIGxlYXZlIGVtcHR5CiAgICB8IFJlbWVtYmVyIHRvIHNldCBiYXNlX3VybCBwcm9wZXJseSB0byBwb2ludCBpbiB0aGUgZnRwIHNlcnZlciBkb21haW4gYW5kCiAgICB8IHVwbG9hZCBkaXIgd2lsbCBiZSBmdHBfYmFzZV9mb2xkZXIgKyB1cGxvYWRfZGlyIHNvIHdpdGhvdXQgZmluYWwgLwogICAgfAogICAgKi8KICAgICdmdHBfaG9zdCcgICAgICAgICA9PiBmYWxzZSwgLy9wdXQgdGhlIEZUUCBob3N0CiAgICAnZnRwX3VzZXInICAgICAgICAgPT4gInVzZXIiLAogICAgJ2Z0cF9wYXNzJyAgICAgICAgID0+ICJwYXNzIiwKICAgICdmdHBfYmFzZV9mb2xkZXInICA9PiAiYmFzZV9mb2xkZXIiLAogICAgJ2Z0cF9iYXNlX3VybCcgICAgID0+ICJodHRwOi8vc2l0ZSB0byBmdHAgcm9vdCIsCiAgICAvLyBEaXJlY3Rvcnkgd2hlcmUgcGxhY2UgZmlsZXMgYmVmb3JlIHRvIHNlbmQgdG8gRlRQIHdpdGggZmluYWwgLwogICAgJ2Z0cF90ZW1wX2ZvbGRlcicgID0+ICIuLi90ZW1wLyIsCiAgICAvKgogICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgfCBwYXRoIGZyb20gZnRwX2Jhc2VfZm9sZGVyIHRvIGJhc2Ugb2YgdGh1bWJzIGZvbGRlciB3aXRoIHN0YXJ0IGFuZCBmaW5hbCAvCiAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAqLwogICAgJ2Z0cF90aHVtYnNfZGlyJyA9PiAnL3RodW1icy8nLAogICAgJ2Z0cF9zc2wnID0+IGZhbHNlLAogICAgJ2Z0cF9wb3J0JyA9PiAyMSwKCiAgICAvKiBFWEFNUExFCiAgICAnZnRwX2hvc3QnICAgICAgICAgPT4gImhvc3QuY29tIiwKICAgICdmdHBfdXNlcicgICAgICAgICA9PiAidGVzdEBob3N0LmNvbSIsCiAgICAnZnRwX3Bhc3MnICAgICAgICAgPT4gInBhc3MuMSIsCiAgICAnZnRwX2Jhc2VfZm9sZGVyJyAgPT4gIiIsCiAgICAnZnRwX2Jhc2VfdXJsJyAgICAgPT4gImh0dHA6Ly9ob3N0LmNvbS90ZXN0RlRQIiwKICAgICovCgogICAgLyoKICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgfCBNdWx0aXBsZSBmaWxlcyBzZWxlY3Rpb24KICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgfCBUaGUgdXNlciBjYW4gZGVsZXRlIG11bHRpcGxlIGZpbGVzLCBzZWxlY3QgYWxsIGZpbGVzICwgZGVzZWxlY3QgYWxsIGZpbGVzCiAgICAqLwogICAgJ211bHRpcGxlX3NlbGVjdGlvbicgPT4gdHJ1ZSwKCiAgICAvKgogICAgfAogICAgfCBUaGUgdXNlciBjYW4gaGF2ZSBhIHNlbGVjdCBidXR0b24gdGhhdCBwYXNzIGEganNvbiB0byBleHRlcm5hbCBpbnB1dCBvciBwYXNzIHRoZSBmaXJzdCBmaWxlIHNlbGVjdGVkIHRvIGVkaXRvcgogICAgfCBJZiB5b3UgdXNlIHJlc3BvbnNpdmVmaWxlbWFuYWdlciB0aW55bWNlIGV4dGVuc2lvbiBjYW4gY29weSBpbnRvIGVkaXRvciBtdWx0aXBsZSBvYmplY3QgbGlrZSBpbWFnZXMsIHZpZGVvcywgYXVkaW9zLCBsaW5rcyBpbiB0aGUgc2FtZSB0aW1lCiAgICB8CiAgICAgKi8KICAgICdtdWx0aXBsZV9zZWxlY3Rpb25fYWN0aW9uX2J1dHRvbicgPT4gdHJ1ZSwKCiAgICAvKgogICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICB8IEFjY2VzcyBrZXlzCiAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIHwKICAgIHwgYWRkIGFjY2VzcyBrZXlzIGVnOiBhcnJheSgnbXlQcml2YXRlS2V5JywgJ3NvbWVvbmVFbHNlS2V5Jyk7CiAgICB8IGtleXMgc2hvdWxkIG9ubHkgY29udGFpbnQgKGEteiBBLVogMC05IFwgLiBfIC0pIGNoYXJhY3RlcnMKICAgIHwgaWYgeW91IGFyZSBpbnRlZ3JhdGluZyBsZXRzIHNheSB0byBhIGNtcyBmb3IgYWRtaW5zLCBpIHJlY29tbWVuZCBtYWtpbmcga2V5cyByYW5kb21pemVkIHNvbWV0aGluZyBsaWtlIHRoaXM6CiAgICB8ICR1c2VybmFtZSA9ICdBZG1pbic7CiAgICB8ICRzYWx0ID0gJ2RzZmxGV1I5dTJ4UWEnIChhIGhhcmQgY29kZWQgc3RyaW5nKQogICAgfCAkYWtleSA9IG1kNSgkdXNlcm5hbWUuJHNhbHQpOwogICAgfCBETyBOT1QgdXNlICdrZXknIGFzIGFjY2VzcyBrZXkhCiAgICB8IEtleXMgYXJlIENBU0UgU0VOU0lUSVZFIQogICAgfAogICAgKi8KCiAgICAnYWNjZXNzX2tleXMnID0+IGFycmF5KCksCgogICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgLy8gWU9VIENBTiBDT1BZIEFORCBDSEFOR0UgVEhFU0UgVkFSSUFCTEVTIElOVE8gRk9MREVSUyBjb25maWcucGhwIEZJTEVTIFRPIENVU1RPTUlaRSBFQUNIIEZPTERFUiBPUFRJT05TCiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgLyoKICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgfCBNYXhpbXVtIHNpemUgb2YgYWxsIGZpbGVzIGluIHNvdXJjZSBmb2xkZXIKICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgfAogICAgfCBpbiBNZWdhYnl0ZXMKICAgIHwKICAgICovCiAgICAnTWF4U2l6ZVRvdGFsJyA9PiBmYWxzZSwKCiAgICAvKgogICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICB8IE1heGltdW0gdXBsb2FkIHNpemUKICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgfAogICAgfCBpbiBNZWdhYnl0ZXMKICAgIHwKICAgICovCiAgICAnTWF4U2l6ZVVwbG9hZCcgPT4gNTEyLAoKICAgIC8qCiAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIHwgRmlsZSBhbmQgRm9sZGVyIHBlcm1pc3Npb24KICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgfAogICAgKi8KICAgICdmaWxlUGVybWlzc2lvbicgPT4gMDc1NSwKICAgICdmb2xkZXJQZXJtaXNzaW9uJyA9PiAwNzc3LAoKCiAgICAvKgogICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICB8IGRlZmF1bHQgbGFuZ3VhZ2UgZmlsZSBuYW1lCiAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICovCiAgICAnZGVmYXVsdF9sYW5ndWFnZScgPT4gImVuX0VOIiwKCiAgICAvKgogICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICB8IEljb24gdGhlbWUKICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgfAogICAgfCBEZWZhdWx0IGF2YWlsYWJsZTogaWNvIGFuZCBpY29fZGFyawogICAgfCBDYW4gYmUgc2V0IHRvIGN1c3RvbSBpY29uIGluc2lkZSBmaWxlbWFuYWdlci9pbWcKICAgIHwKICAgICovCiAgICAnaWNvbl90aGVtZScgPT4gImljbyIsCgoKICAgIC8vU2hvdyBvciBub3QgdG90YWwgc2l6ZSBpbiBmaWxlbWFuYWdlciAoaXMgcG9zc2libGUgdG8gZ3JlYXRseSBpbmNyZWFzZSB0aGUgY2FsY3VsYXRpb25zKQogICAgJ3Nob3dfdG90YWxfc2l6ZScJCQkJCQk9PiBmYWxzZSwKICAgIC8vU2hvdyBvciBub3Qgc2hvdyBmb2xkZXIgc2l6ZSBpbiBsaXN0IHZpZXcgZmVhdHVyZSBpbiBmaWxlbWFuYWdlciAoaXMgcG9zc2libGUsIGlmIHRoZXJlIGlzIGEgbGFyZ2UgZm9sZGVyLCB0byBncmVhdGx5IGluY3JlYXNlIHRoZSBjYWxjdWxhdGlvbnMpCiAgICAnc2hvd19mb2xkZXJfc2l6ZScJCQkJCQk9PiBmYWxzZSwKICAgIC8vU2hvdyBvciBub3Qgc2hvdyBzb3J0aW5nIGZlYXR1cmUgaW4gZmlsZW1hbmFnZXIKICAgICdzaG93X3NvcnRpbmdfYmFyJwkJCQkJCT0+IHRydWUsCiAgICAvL1Nob3cgb3Igbm90IHNob3cgZmlsdGVycyBidXR0b24gaW4gZmlsZW1hbmFnZXIKICAgICdzaG93X2ZpbHRlcl9idXR0b25zJyAgICAgICAgICAgICAgICAgICA9PiB0cnVlLAogICAgLy9TaG93IG9yIG5vdCBsYW5ndWFnZSBzZWxlY3Rpb24gZmVhdHVyZSBpbiBmaWxlbWFuYWdlcgogICAgJ3Nob3dfbGFuZ3VhZ2Vfc2VsZWN0aW9uJwkJCQk9PiB0cnVlLAogICAgLy9hY3RpdmUgb3IgZGVhY3RpdmUgdGhlIHRyYW5zbGl0ZXJhdGlvbiAobWVhbiBjb252ZXJ0IGFsbCBzdHJhbmdlIGNoYXJhY3RlcnMgaW4gQS4uWmEuLnowLi45IGNoYXJhY3RlcnMpCiAgICAndHJhbnNsaXRlcmF0aW9uJwkJCQkJCT0+IGZhbHNlLAogICAgLy9jb252ZXJ0IGFsbCBzcGFjZXMgb24gZmlsZXMgbmFtZSBhbmQgZm9sZGVycyBuYW1lIHdpdGggJHJlcGxhY2Vfd2l0aCB2YXJpYWJsZQogICAgJ2NvbnZlcnRfc3BhY2VzJwkJCQkJCT0+IGZhbHNlLAogICAgLy9jb252ZXJ0IGFsbCBzcGFjZXMgb24gZmlsZXMgbmFtZSBhbmQgZm9sZGVycyBuYW1lIHRoaXMgdmFsdWUKICAgICdyZXBsYWNlX3dpdGgnCQkJCQkJCT0+ICJfIiwKICAgIC8vY29udmVydCB0byBsb3dlcmNhc2UgdGhlIGZpbGVzIGFuZCBmb2xkZXJzIG5hbWUKICAgICdsb3dlcl9jYXNlJwkJCQkJCQk9PiBmYWxzZSwKCiAgICAvL0FkZCA/NDg0ODk5NDkzMzQ5ICh0aW1lIHZhbHVlKSB0byByZXR1cm5lZCBpbWFnZXMgdG8gcHJldmVudCBjYWNoZQogICAgJ2FkZF90aW1lX3RvX2ltZycgICAgICAgICAgICAgICAgICAgICAgID0+IGZhbHNlLAoKCiAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgIC8vSW1hZ2VzIGxpbWl0IGFuZCByZXNpemluZyBjb25maWd1cmF0aW9uCiAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICAvLyBzZXQgbWF4aW11bSBwaXhlbCB3aWR0aCBhbmQvb3IgbWF4aW11bSBwaXhlbCBoZWlnaHQgZm9yIGFsbCBpbWFnZXMKICAgIC8vIElmIHlvdSBzZXQgYSBtYXhpbXVtIHdpZHRoIG9yIGhlaWdodCwgb3ZlcnNpemVkIGltYWdlcyBhcmUgY29udmVydGVkIHRvIHRob3NlIGxpbWl0cy4gSW1hZ2VzIHNtYWxsZXIgdGhhbiB0aGUgbGltaXQocykgYXJlIHVuYWZmZWN0ZWQKICAgIC8vIGlmIHlvdSBkb24ndCBuZWVkIGEgbGltaXQgc2V0IGJvdGggdG8gMAogICAgJ2ltYWdlX21heF93aWR0aCcgICAgICAgICAgICAgICAgICAgICAgICAgPT4gMCwKICAgICdpbWFnZV9tYXhfaGVpZ2h0JyAgICAgICAgICAgICAgICAgICAgICAgID0+IDAsCiAgICAnaW1hZ2VfbWF4X21vZGUnICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnYXV0bycsCiAgICAvKgogICAgIyAgJG9wdGlvbjogIDAgLyBleGFjdCA9IGRlZmluZWQgc2l6ZTsKICAgICMgICAgICAgICAgICAxIC8gcG9ydHJhaXQgPSBrZWVwIGFzcGVjdCBzZXQgaGVpZ2h0OwogICAgIyAgICAgICAgICAgIDIgLyBsYW5kc2NhcGUgPSBrZWVwIGFzcGVjdCBzZXQgd2lkdGg7CiAgICAjICAgICAgICAgICAgMyAvIGF1dG8gPSBhdXRvOwogICAgIyAgICAgICAgICAgIDQgLyBjcm9wPSByZXNpemUgYW5kIGNyb3A7CiAgICAqLwoKICAgIC8vQXV0b21hdGljIHJlc2l6aW5nIC8vCiAgICAvLyBJZiB5b3Ugc2V0ICRpbWFnZV9yZXNpemluZyB0byBUUlVFIHRoZSBzY3JpcHQgY29udmVydHMgYWxsIHVwbG9hZGVkIGltYWdlcyBleGFjdGx5IHRvIGltYWdlX3Jlc2l6aW5nX3dpZHRoIHggaW1hZ2VfcmVzaXppbmdfaGVpZ2h0IGRpbWVuc2lvbgogICAgLy8gSWYgeW91IHNldCB3aWR0aCBvciBoZWlnaHQgdG8gMCB0aGUgc2NyaXB0IGF1dG9tYXRpY2FsbHkgY2FsY3VsYXRlcyB0aGUgb3RoZXIgZGltZW5zaW9uCiAgICAvLyBJcyBwb3NzaWJsZSB0aGF0IGlmIHlvdSB1cGxvYWQgdmVyeSBiaWcgaW1hZ2VzIHRoZSBzY3JpcHQgbm90IHdvcmsgdG8gb3ZlcmNvbWUgdGhpcyBpbmNyZWFzZSB0aGUgcGhwIGNvbmZpZ3VyYXRpb24gb2YgbWVtb3J5IGFuZCB0aW1lIGxpbWl0CiAgICAnaW1hZ2VfcmVzaXppbmcnICAgICAgICAgICAgICAgICAgICAgICAgICA9PiBmYWxzZSwKICAgICdpbWFnZV9yZXNpemluZ193aWR0aCcgICAgICAgICAgICAgICAgICAgID0+IDAsCiAgICAnaW1hZ2VfcmVzaXppbmdfaGVpZ2h0JyAgICAgICAgICAgICAgICAgICA9PiAwLAogICAgJ2ltYWdlX3Jlc2l6aW5nX21vZGUnICAgICAgICAgICAgICAgICAgICAgPT4gJ2F1dG8nLCAvLyBzYW1lIGFzICRpbWFnZV9tYXhfbW9kZQogICAgJ2ltYWdlX3Jlc2l6aW5nX292ZXJyaWRlJyAgICAgICAgICAgICAgICAgPT4gZmFsc2UsCiAgICAvLyBJZiBzZXQgdG8gVFJVRSB0aGVuIHlvdSBjYW4gc3BlY2lmeSBiaWdnZXIgaW1hZ2VzIHRoYW4gJGltYWdlX21heF93aWR0aCAmIGhlaWdodCBvdGhlcndpc2UgaWYgaW1hZ2VfcmVzaXppbmcgaXMKICAgIC8vIGJpZ2dlciB0aGFuICRpbWFnZV9tYXhfd2lkdGggb3IgaGVpZ2h0IHRoZW4gaXQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gdGhvc2UgdmFsdWVzCgoKICAgIC8vKioqKioqKioqKioqKioqKioqCiAgICAvLwogICAgLy8gV0FURVJNQVJLIElNQUdFCiAgICAvLwogICAgLy9XYXRlcm1hcmsgcGF0aCBvciBmYWxzZQogICAgJ2ltYWdlX3dhdGVybWFyaycgICAgICAgICAgICAgICAgICAgICAgICAgID0+IGZhbHNlLC8vIi4uL3dhdGVybWFyay5wbmciLAogICAgIyBDb3VsZCBiZSBhIHByZS1kZXRlcm1pbmVkIHBvc2l0aW9uIHN1Y2ggYXM6CiAgICAjICAgICAgICAgICB0bCA9IHRvcCBsZWZ0LAogICAgIyAgICAgICAgICAgdCAgPSB0b3AgKG1pZGRsZSksCiAgICAjICAgICAgICAgICB0ciA9IHRvcCByaWdodCwKICAgICMgICAgICAgICAgIGwgID0gbGVmdCwKICAgICMgICAgICAgICAgIG0gID0gbWlkZGxlLAogICAgIyAgICAgICAgICAgciAgPSByaWdodCwKICAgICMgICAgICAgICAgIGJsID0gYm90dG9tIGxlZnQsCiAgICAjICAgICAgICAgICBiICA9IGJvdHRvbSAobWlkZGxlKSwKICAgICMgICAgICAgICAgIGJyID0gYm90dG9tIHJpZ2h0CiAgICAjICAgICAgICAgICBPciwgaXQgY291bGQgYmUgYSBjby1vcmRpbmF0ZSBwb3NpdGlvbiBzdWNoIGFzOiA1MHgxMDAKICAgICdpbWFnZV93YXRlcm1hcmtfcG9zaXRpb24nICAgICAgICAgICAgICAgICA9PiAnYnInLAogICAgIyBwYWRkaW5nOiBJZiB1c2luZyBhIHByZS1kZXRlcm1pbmVkIHBvc2l0aW9uIHlvdSBjYW4KICAgICMgICAgICAgICBhZGp1c3QgdGhlIHBhZGRpbmcgZnJvbSB0aGUgZWRnZXMgYnkgcGFzc2luZyBhbiBhbW91bnQKICAgICMgICAgICAgICBpbiBwaXhlbHMuIElmIHVzaW5nIGNvLW9yZGluYXRlcywgdGhpcyB2YWx1ZSBpcyBpZ25vcmVkLgogICAgJ2ltYWdlX3dhdGVybWFya19wYWRkaW5nJyAgICAgICAgICAgICAgICAgPT4gMTAsCgogICAgLy8qKioqKioqKioqKioqKioqKioKICAgIC8vIERlZmF1bHQgbGF5b3V0IHNldHRpbmcKICAgIC8vCiAgICAvLyAwID0+IGJveGVzCiAgICAvLyAxID0+IGRldGFpbGVkIGxpc3QgKDEgY29sdW1uKQogICAgLy8gMiA9PiBjb2x1bW5zIGxpc3QgKG11bHRpcGxlIGNvbHVtbnMgZGVwZW5kaW5nIG9uIHRoZSB3aWR0aCBvZiB0aGUgcGFnZSkKICAgIC8vIFlPVSBDQU4gQUxTTyBQQVNTIFRISVMgUEFSQU1FVEVSUyBVU0lORyBTRVNTSU9OIFZBUiA9PiAkX1NFU1NJT05bJ1JGJ11bIlZJRVciXT0KICAgIC8vCiAgICAvLyoqKioqKioqKioqKioqKioqKgogICAgJ2RlZmF1bHRfdmlldycgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gMCwKCiAgICAvL3NldCBpZiB0aGUgZmlsZW5hbWUgaXMgdHJ1bmNhdGVkIHdoZW4gb3ZlcmZsb3cgZmlyc3Qgcm93CiAgICAnZWxsaXBzaXNfdGl0bGVfYWZ0ZXJfZmlyc3Rfcm93JyAgICAgICAgICA9PiB0cnVlLAoKICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgLy9QZXJtaXNzaW9ucyBjb25maWd1cmF0aW9uCiAgICAvLyoqKioqKioqKioqKioqKioqKgogICAgJ2RlbGV0ZV9maWxlcycgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gdHJ1ZSwKICAgICdjcmVhdGVfZm9sZGVycycgICAgICAgICAgICAgICAgICAgICAgICAgID0+IHRydWUsCiAgICAnZGVsZXRlX2ZvbGRlcnMnICAgICAgICAgICAgICAgICAgICAgICAgICA9PiB0cnVlLAogICAgJ3VwbG9hZF9maWxlcycgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gdHJ1ZSwKICAgICdyZW5hbWVfZmlsZXMnICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IHRydWUsCiAgICAncmVuYW1lX2ZvbGRlcnMnICAgICAgICAgICAgICAgICAgICAgICAgICA9PiB0cnVlLAogICAgJ2R1cGxpY2F0ZV9maWxlcycgICAgICAgICAgICAgICAgICAgICAgICAgPT4gdHJ1ZSwKICAgICdleHRyYWN0X2ZpbGVzJyAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IHRydWUsCiAgICAnY29weV9jdXRfZmlsZXMnICAgICAgICAgICAgICAgICAgICAgICAgICA9PiB0cnVlLCAvLyBmb3IgY29weS9jdXQgZmlsZXMKICAgICdjb3B5X2N1dF9kaXJzJyAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IHRydWUsIC8vIGZvciBjb3B5L2N1dCBkaXJlY3RvcmllcwogICAgJ2NobW9kX2ZpbGVzJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gZmFsc2UsIC8vIGNoYW5nZSBmaWxlIHBlcm1pc3Npb25zCiAgICAnY2htb2RfZGlycycgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiBmYWxzZSwgLy8gY2hhbmdlIGZvbGRlciBwZXJtaXNzaW9ucwogICAgJ3ByZXZpZXdfdGV4dF9maWxlcycgICAgICAgICAgICAgICAgICAgICAgPT4gdHJ1ZSwgLy8gZWcuOiB0eHQsIGxvZyBldGMuCiAgICAnZWRpdF90ZXh0X2ZpbGVzJyAgICAgICAgICAgICAgICAgICAgICAgICA9PiB0cnVlLCAvLyBlZy46IHR4dCwgbG9nIGV0Yy4KICAgICdjcmVhdGVfdGV4dF9maWxlcycgICAgICAgICAgICAgICAgICAgICAgID0+IHRydWUsIC8vIG9ubHkgY3JlYXRlIGZpbGVzIHdpdGggZXh0cy4gZGVmaW5lZCBpbiAkY29uZmlnWydlZGl0YWJsZV90ZXh0X2ZpbGVfZXh0cyddCiAgICAnZG93bmxvYWRfZmlsZXMnCQkJICA9PiB0cnVlLCAvLyBhbGxvdyBkb3dubG9hZCBmaWxlcyBvciBqdXN0IHByZXZpZXcKCiAgICAvLyB5b3UgY2FuIHByZXZpZXcgdGhlc2UgdHlwZSBvZiBmaWxlcyBpZiAkcHJldmlld190ZXh0X2ZpbGVzIGlzIHRydWUKICAgICdwcmV2aWV3YWJsZV90ZXh0X2ZpbGVfZXh0cycgICAgICAgICAgICAgID0+IGFycmF5KCAiYnNoIiwgImMiLCJjc3MiLCAiY2MiLCAiY3BwIiwgImNzIiwgImNzaCIsICJjeWMiLCAiY3YiLCAiaHRtIiwgImh0bWwiLCAiamF2YSIsICJqcyIsICJtIiwgIm14bWwiLCAicGVybCIsICJwbCIsICJwbSIsICJweSIsICJyYiIsICJzaCIsICJ4aHRtbCIsICJ4bWwiLCJ4c2wiLCd0eHQnLCAnbG9nJywnJyApLAoKICAgIC8vIHlvdSBjYW4gZWRpdCB0aGVzZSB0eXBlIG9mIGZpbGVzIGlmICRlZGl0X3RleHRfZmlsZXMgaXMgdHJ1ZSAob25seSB0ZXh0IGJhc2VkIGZpbGVzKQogICAgLy8geW91IGNhbiBjcmVhdGUgdGhlc2UgdHlwZSBvZiBmaWxlcyBpZiAkY29uZmlnWydjcmVhdGVfdGV4dF9maWxlcyddIGlzIHRydWUgKG9ubHkgdGV4dCBiYXNlZCBmaWxlcykKICAgIC8vIGlmIHlvdSB3YW50IHlvdSBjYW4gYWRkIGh0bWwsY3NzIGV0Yy4KICAgIC8vIGJ1dCBmb3Igc2VjdXJpdHkgcmVhc29ucyBpdCdzIE5PVCBSRUNPTU1FTkRFRCEKICAgICdlZGl0YWJsZV90ZXh0X2ZpbGVfZXh0cycgICAgICAgICAgICAgICAgID0+IGFycmF5KCAndHh0JywgJ2xvZycsICd4bWwnLCAnaHRtbCcsICdjc3MnLCAnaHRtJywgJ2pzJywnJyApLAoKICAgICdqcGxheWVyX2V4dHMnICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IGFycmF5KCJtcDQiLCJmbHYiLCJ3ZWJtdiIsIndlYm1hIiwid2VibSIsIm00YSIsIm00diIsIm9ndiIsIm9nYSIsIm1wMyIsIm1pZGkiLCJtaWQiLCJvZ2ciLCJ3YXYiKSwKCiAgICAnY2FkX2V4dHMnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiBhcnJheSgnZHdnJywgJ2R4ZicsICdocGdsJywgJ3BsdCcsICdzcGwnLCAnc3RlcCcsICdzdHAnLCAnaWdlcycsICdpZ3MnLCAnc2F0JywgJ2NnbScsICdzdmcnKSwKCiAgICAvLyBQcmV2aWV3IHdpdGggR29vZ2xlIERvY3VtZW50cwogICAgJ2dvb2dsZWRvY19lbmFibGVkJyAgICAgICAgICAgICAgICAgICAgICAgPT4gdHJ1ZSwKICAgICdnb29nbGVkb2NfZmlsZV9leHRzJyAgICAgICAgICAgICAgICAgICAgID0+IGFycmF5KCAnZG9jJywgJ2RvY3gnLCAneGxzJywgJ3hsc3gnLCAncHB0JywgJ3BwdHgnICwgJ3BkZicsICdvZHQnLCAnb2RwJywgJ29kcycpLAoKICAgIC8vIGRlZmluZXMgc2l6ZSBsaW1pdCBmb3IgcGFzdGUgaW4gTUIgLyBvcGVyYXRpb24KICAgIC8vIHNldCAnRkFMU0UnIGZvciBubyBsaW1pdAogICAgJ2NvcHlfY3V0X21heF9zaXplJyAgICAgICAgICAgICAgICAgICAgICAgPT4gMTAwLAogICAgLy8gZGVmaW5lcyBmaWxlIGNvdW50IGxpbWl0IGZvciBwYXN0ZSAvIG9wZXJhdGlvbgogICAgLy8gc2V0ICdGQUxTRScgZm9yIG5vIGxpbWl0CiAgICAnY29weV9jdXRfbWF4X2NvdW50JyAgICAgICAgICAgICAgICAgICAgICA9PiAyMDAsCiAgICAvL0lGIGFueSBvZiB0aGVzZSBsaW1pdHMgcmVhY2hlZCwgb3BlcmF0aW9uIHdvbid0IHN0YXJ0IGFuZCBnZW5lcmF0ZSB3YXJuaW5nCgogICAgLy8qKioqKioqKioqKioqKioqKioqKioqCiAgICAvL0FsbG93ZWQgZXh0ZW5zaW9ucyAobG93ZXJjYXNlIGluc2VydCkKICAgIC8vKioqKioqKioqKioqKioqKioqKioqKgogICAgJ2V4dF9pbWcnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gYXJyYXkoICdqcGcnLCAnanBlZycsICdwbmcnLCAnZ2lmJywgJ2JtcCcsICdzdmcnLCAnaWNvJyApLCAvL0ltYWdlcwogICAgJ2V4dF9maWxlJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gYXJyYXkoICdkb2MnLCAnZG9jeCcsICdydGYnLCAncGRmJywgJ3hscycsICd4bHN4JywgJ3R4dCcsICdjc3YnLCAnaHRtbCcsICd4aHRtbCcsICdwc2QnLCAnc3FsJywgJ2xvZycsICdmbGEnLCAneG1sJywgJ2FkZScsICdhZHAnLCAnbWRiJywgJ2FjY2RiJywgJ3BwdCcsICdwcHR4JywgJ29kdCcsICdvdHMnLCAnb3R0JywgJ29kYicsICdvZGcnLCAnb3RwJywgJ290ZycsICdvZGYnLCAnb2RzJywgJ29kcCcsICdjc3MnLCAnYWknLCAna216JywnZHdnJywgJ2R4ZicsICdocGdsJywgJ3BsdCcsICdzcGwnLCAnc3RlcCcsICdzdHAnLCAnaWdlcycsICdpZ3MnLCAnc2F0JywgJ2NnbScsICd0aWZmJywnJyksIC8vRmlsZXMKICAgICdleHRfdmlkZW8nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IGFycmF5KCAnbW92JywgJ21wZWcnLCAnbTR2JywgJ21wNCcsICdhdmknLCAnbXBnJywgJ3dtYScsICJmbHYiLCAid2VibSIgKSwgLy9WaWRlbwogICAgJ2V4dF9tdXNpYycgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gYXJyYXkoICdtcDMnLCAnbXBnYScsICdtNGEnLCAnYWMzJywgJ2FpZmYnLCAnbWlkJywgJ29nZycsICd3YXYnICksIC8vQXVkaW8KICAgICdleHRfbWlzYycgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IGFycmF5KCAnemlwJywgJ3JhcicsICdneicsICd0YXInLCAnaXNvJywgJ2RtZycgKSwgLy9BcmNoaXZlcwoKCiAgICAvLyoqKioqKioqKioqKioqKioqKioqKgogICAgLy8gIElmIHlvdSBpbnNlcnQgYW4gZXh0ZW5zaW9ucyBibGFja2xpc3QgYXJyYXkgdGhlIGZpbGVtYW5hZ2VyIGRvbid0IGNoZWNrIGFueSBleHRlbnNpb25zIGJ1dCBzaW1wbHkgYmxvY2sgdGhlIGV4dGVuc2lvbnMgaW4gdGhlIGxpc3QKICAgIC8vICBvdGhlcndpc2UgY2hlY2sgQWxsb3dlZCBleHRlbnNpb25zIGNvbmZpZ3VyYXRpb24KICAgIC8vKioqKioqKioqKioqKioqKioqKioqCiAgICAnZXh0X2JsYWNrbGlzdCcJCQkJCQkJICA9PiBmYWxzZSwvL1snZXhlJywnYmF0JywnanBnJ10sCgoKICAgIC8vRW1wdHkgZmlsZW5hbWUgcGVybWl0cyBsaWtlIC5odGFjY2VzcywgLmVudiwgLi4uCiAgICAnZW1wdHlfZmlsZW5hbWUnICAgICAgICAgICAgICAgICAgICAgICAgICA9PiBmYWxzZSwKCiAgICAvKgogICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICB8IGFjY2VwdCBmaWxlcyB3aXRob3V0IGV4dGVuc2lvbgogICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICB8CiAgICB8IElmIHlvdSB3YW50IHRvIGFjY2VwdCBmaWxlcyB3aXRob3V0IGV4dGVuc2lvbiwgcmVtZW1iZXIgdG8gYWRkICcnIGV4dGVuc2lvbiBvbiBhbGxvd2VkIGV4dGVuc2lvbgogICAgfAogICAgKi8KICAgICdmaWxlc193aXRob3V0X2V4dGVuc2lvbicJICAgICAgICAgICAgICA9PiBmYWxzZSwKCiAgICAvKioqKioqKioqKioqKioqKioqCiAgICAqIFRVSSBJbWFnZSBFZGl0b3IgY29uZmlnCiAgICAqKioqKioqKioqKioqKioqKioqLwogICAgLy8gQWRkIG9yIG1vZGlmeSB0aGUgb3B0aW9ucyBiZWxvdyBhcyBuZWVkZWQgLSB0aGV5IHdpbGwgYmUganNvbiBlbmNvZGVkIHdoZW4gYWRkZWQgdG8gdGhlIGNvbmZpZ3VyYXRpb24gc28gYXJyYXlzIGNhbiBiZSB1dGlsaXplZCBhcyBuZWVkZWQKICAgICd0dWlfYWN0aXZlJyAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IHRydWUsCiAgICAndHVpX3Bvc2l0aW9uJyAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnYm90dG9tJywKICAgIC8vICdjb21tb24uYmkuaW1hZ2UnICAgICAgICAgICAgICAgICAgICAgID0+ICIuLi9hc3NldHMvaW1hZ2VzL2xvZ28ucG5nIiwKICAgIC8vICdjb21tb24uYmlzaXplLndpZHRoJyAgICAgICAgICAgICAgICAgID0+ICc3MHB4JywKICAgIC8vICdjb21tb24uYmlzaXplLmhlaWdodCcgICAgICAgICAgICAgICAgID0+ICcyNXB4JywKICAgICdjb21tb24uYmFja2dyb3VuZEltYWdlJyAgICAgICAgICAgICAgID0+ICdub25lJywKICAgICdjb21tb24uYmFja2dyb3VuZENvbG9yJyAgICAgICAgICAgICAgID0+ICcjZWNlY2VjJywKICAgICdjb21tb24uYm9yZGVyJyAgICAgICAgICAgICAgICAgICAgICAgID0+ICcxcHggc29saWQgI0U2RTdFOCcsCgogICAgLy8gaGVhZGVyCiAgICAnaGVhZGVyLmJhY2tncm91bmRJbWFnZScgICAgICAgICAgICAgICA9PiAnbm9uZScsCiAgICAnaGVhZGVyLmJhY2tncm91bmRDb2xvcicgICAgICAgICAgICAgICA9PiAnI2VjZWNlYycsCiAgICAnaGVhZGVyLmJvcmRlcicgICAgICAgICAgICAgICAgICAgICAgICA9PiAnMHB4JywKCiAgICAvLyBtYWluIGljb25zCiAgICAnbWVudS5ub3JtYWxJY29uLnBhdGgnICAgICAgICAgICAgICAgICA9PiAnc3ZnL2ljb24tZC5zdmcnLAogICAgJ21lbnUubm9ybWFsSWNvbi5uYW1lJyAgICAgICAgICAgICAgICAgPT4gJ2ljb24tZCcsCiAgICAnbWVudS5hY3RpdmVJY29uLnBhdGgnICAgICAgICAgICAgICAgICA9PiAnc3ZnL2ljb24tYi5zdmcnLAogICAgJ21lbnUuYWN0aXZlSWNvbi5uYW1lJyAgICAgICAgICAgICAgICAgPT4gJ2ljb24tYicsCiAgICAnbWVudS5kaXNhYmxlZEljb24ucGF0aCcgICAgICAgICAgICAgICA9PiAnc3ZnL2ljb24tYS5zdmcnLAogICAgJ21lbnUuZGlzYWJsZWRJY29uLm5hbWUnICAgICAgICAgICAgICAgPT4gJ2ljb24tYScsCiAgICAnbWVudS5ob3Zlckljb24ucGF0aCcgICAgICAgICAgICAgICAgICA9PiAnc3ZnL2ljb24tYy5zdmcnLAogICAgJ21lbnUuaG92ZXJJY29uLm5hbWUnICAgICAgICAgICAgICAgICAgPT4gJ2ljb24tYycsCiAgICAnbWVudS5pY29uU2l6ZS53aWR0aCcgICAgICAgICAgICAgICAgICA9PiAnMjRweCcsCiAgICAnbWVudS5pY29uU2l6ZS5oZWlnaHQnICAgICAgICAgICAgICAgICA9PiAnMjRweCcsCgogICAgLy8gc3VibWVudSBwcmltYXJ5IGNvbG9yCiAgICAnc3VibWVudS5iYWNrZ3JvdW5kQ29sb3InICAgICAgICAgICAgICA9PiAnI2VjZWNlYycsCiAgICAnc3VibWVudS5wYXJ0aXRpb24uY29sb3InICAgICAgICAgICAgICA9PiAnIzAwMDAwMCcsCgogICAgLy8gc3VibWVudSBpY29ucwogICAgJ3N1Ym1lbnUubm9ybWFsSWNvbi5wYXRoJyAgICAgICAgICAgICAgPT4gJ3N2Zy9pY29uLWQuc3ZnJywKICAgICdzdWJtZW51Lm5vcm1hbEljb24ubmFtZScgICAgICAgICAgICAgID0+ICdpY29uLWQnLAogICAgJ3N1Ym1lbnUuYWN0aXZlSWNvbi5wYXRoJyAgICAgICAgICAgICAgPT4gJ3N2Zy9pY29uLWIuc3ZnJywKICAgICdzdWJtZW51LmFjdGl2ZUljb24ubmFtZScgICAgICAgICAgICAgID0+ICdpY29uLWInLAogICAgJ3N1Ym1lbnUuaWNvblNpemUud2lkdGgnICAgICAgICAgICAgICAgPT4gJzMycHgnLAogICAgJ3N1Ym1lbnUuaWNvblNpemUuaGVpZ2h0JyAgICAgICAgICAgICAgPT4gJzMycHgnLAoKICAgIC8vIHN1Ym1lbnUgbGFiZWxzCiAgICAnc3VibWVudS5ub3JtYWxMYWJlbC5jb2xvcicgICAgICAgICAgICA9PiAnIzAwMCcsCiAgICAnc3VibWVudS5ub3JtYWxMYWJlbC5mb250V2VpZ2h0JyAgICAgICA9PiAnbm9ybWFsJywKICAgICdzdWJtZW51LmFjdGl2ZUxhYmVsLmNvbG9yJyAgICAgICAgICAgID0+ICcjMDAwJywKICAgICdzdWJtZW51LmFjdGl2ZUxhYmVsLmZvbnRXZWlnaHQnICAgICAgID0+ICdub3JtYWwnLAoKICAgIC8vIGNoZWNrYm94IHN0eWxlCiAgICAnY2hlY2tib3guYm9yZGVyJyAgICAgICAgICAgICAgICAgICAgICA9PiAnMXB4IHNvbGlkICNFNkU3RTgnLAogICAgJ2NoZWNrYm94LmJhY2tncm91bmRDb2xvcicgICAgICAgICAgICAgPT4gJyMwMDAnLAoKICAgIC8vIHJhbmdvIHN0eWxlCiAgICAncmFuZ2UucG9pbnRlci5jb2xvcicgICAgICAgICAgICAgICAgICA9PiAnIzMzMycsCiAgICAncmFuZ2UuYmFyLmNvbG9yJyAgICAgICAgICAgICAgICAgICAgICA9PiAnI2NjYycsCiAgICAncmFuZ2Uuc3ViYmFyLmNvbG9yJyAgICAgICAgICAgICAgICAgICA9PiAnIzYwNjA2MCcsCgogICAgJ3JhbmdlLmRpc2FibGVkUG9pbnRlci5jb2xvcicgICAgICAgICAgPT4gJyNkM2QzZDMnLAogICAgJ3JhbmdlLmRpc2FibGVkQmFyLmNvbG9yJyAgICAgICAgICAgICAgPT4gJ3JnYmEoODUsODUsODUsMC4wNiknLAogICAgJ3JhbmdlLmRpc2FibGVkU3ViYmFyLmNvbG9yJyAgICAgICAgICAgPT4gJ3JnYmEoNTEsNTEsNTEsMC4yKScsCgogICAgJ3JhbmdlLnZhbHVlLmNvbG9yJyAgICAgICAgICAgICAgICAgICAgPT4gJyMwMDAnLAogICAgJ3JhbmdlLnZhbHVlLmZvbnRXZWlnaHQnICAgICAgICAgICAgICAgPT4gJ25vcm1hbCcsCiAgICAncmFuZ2UudmFsdWUuZm9udFNpemUnICAgICAgICAgICAgICAgICA9PiAnMTFweCcsCiAgICAncmFuZ2UudmFsdWUuYm9yZGVyJyAgICAgICAgICAgICAgICAgICA9PiAnMCcsCiAgICAncmFuZ2UudmFsdWUuYmFja2dyb3VuZENvbG9yJyAgICAgICAgICA9PiAnI2Y1ZjVmNScsCiAgICAncmFuZ2UudGl0bGUuY29sb3InICAgICAgICAgICAgICAgICAgICA9PiAnIzAwMCcsCiAgICAncmFuZ2UudGl0bGUuZm9udFdlaWdodCcgICAgICAgICAgICAgICA9PiAnbGlnaHRlcicsCgogICAgLy8gY29sb3JwaWNrZXIgc3R5bGUKICAgICdjb2xvcnBpY2tlci5idXR0b24uYm9yZGVyJyAgICAgICAgICAgID0+ICcwcHgnLAogICAgJ2NvbG9ycGlja2VyLnRpdGxlLmNvbG9yJyAgICAgICAgICAgICAgPT4gJyMwMDAnLAoKCiAgICAvL1RoZSBmaWx0ZXIgYW5kIHNvcnRlciBhcmUgbWFuYWdlZCB0aHJvdWdoIGJvdGggamF2YXNjcmlwdCBhbmQgcGhwIHNjcmlwdHMgYmVjYXVzZSBpZiB5b3UgaGF2ZSBhIGxvdCBvZgogICAgLy9maWxlIGluIGEgZm9sZGVyIHRoZSBqYXZhc2NyaXB0IHNjcmlwdCBjYW4ndCBzb3J0IGFsbCBvciBmaWx0ZXIgYWxsLCBzbyB0aGUgZmlsZW1hbmFnZXIgc3dpdGNoIHRvIHBocCBzY3JpcHQuCiAgICAvL1RoZSBwbHVnaW4gYXV0b21hdGljIHN3aWNoIGphdmFzY3JpcHQgdG8gcGhwIHdoZW4gdGhlIGN1cnJlbnQgZm9sZGVyIGV4Y2VlZHMgdGhlIGJlbG93IGxpbWl0IG9mIGZpbGVzIG51bWJlcgogICAgJ2ZpbGVfbnVtYmVyX2xpbWl0X2pzJyAgICAgICAgICAgICAgICAgICAgPT4gNTAwLAoKICAgIC8vKioqKioqKioqKioqKioqKioqKioqKgogICAgLy8gSGlkZGVuIGZpbGVzIGFuZCBmb2xkZXJzCiAgICAvLyoqKioqKioqKioqKioqKioqKioqKioKICAgIC8vIHNldCB0aGUgbmFtZXMgb2YgYW55IGZvbGRlcnMgeW91IHdhbnQgaGlkZGVuIChlZyAiaGlkZGVuX2ZvbGRlcjEiLCAiaGlkZGVuX2ZvbGRlcjIiICkgUmVtZW1iZXIgYWxsIGZvbGRlcnMgd2l0aCB0aGVzZSBuYW1lcyB3aWxsIGJlIGhpZGRlbiAoeW91IGNhbiBzZXQgYW55IGV4Y2VwdGlvbnMgaW4gY29uZmlnLnBocCBmaWxlcyBvbiBmb2xkZXJzKQogICAgJ2hpZGRlbl9mb2xkZXJzJyAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gYXJyYXkoKSwKICAgIC8vIHNldCB0aGUgbmFtZXMgb2YgYW55IGZpbGVzIHlvdSB3YW50IGhpZGRlbi4gUmVtZW1iZXIgdGhlc2UgbmFtZXMgd2lsbCBiZSBoaWRkZW4gaW4gYWxsIGZvbGRlcnMgKGVnICJ0aGlzX2RvY3VtZW50LnBkZiIsICJ0aGF0X2ltYWdlLmpwZyIgKQogICAgJ2hpZGRlbl9maWxlcycgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gYXJyYXkoICdjb25maWcucGhwJywgJ2luZGV4Lmh0bWwnICksCgogICAgLyoqKioqKioqKioqKioqKioqKioKICAgICogVVJMIHVwbG9hZAogICAgKioqKioqKioqKioqKioqKioqKi8KICAgICd1cmxfdXBsb2FkJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gdHJ1ZSwKCgogICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgIC8vVGh1bWJuYWlsIGZvciBleHRlcm5hbCB1c2UgY3JlYXRpb24KICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgoKICAgIC8vIE5ldyBpbWFnZSByZXNpemVkIGNyZWF0aW9uIHdpdGggZml4ZWQgcGF0aCBmcm9tIGZpbGVtYW5hZ2VyIGZvbGRlciBhZnRlciB1cGxvYWRpbmcgKHRodW1ibmFpbHMgaW4gZml4ZWQgbW9kZSkKICAgIC8vIElmIHlvdSB3YW50IGNyZWF0ZSBpbWFnZXMgcmVzaXplZCBvdXQgb2YgdXBsb2FkIGZvbGRlciBmb3IgdXNlIHdpdGggZXh0ZXJuYWwgc2NyaXB0IHlvdSBjYW4gY2hvb3NlIHRoaXMgbWV0aG9kLAogICAgLy8gWW91IGNhbiBjcmVhdGUgYWxzbyBtb3JlIHRoYW4gb25lIGltYWdlIGF0IGEgdGltZSBqdXN0IHNpbXBseSBhZGQgYSB2YWx1ZSBpbiB0aGUgYXJyYXkKICAgIC8vIFJlbWVtYmVyIHRoYW4gdGhlIGltYWdlIGNyZWF0aW9uIHJlc3BlY3QgdGhlIGZvbGRlciBoaWVyYXJjaHkgc28gaWYgeW91IGFyZSBpbnNpZGUgc291cmNlL3Rlc3QvdGVzdDEvIHRoZSBuZXcgaW1hZ2Ugd2lsbCBjcmVhdGUgYXQKICAgIC8vIHBhdGhfZnJvbV9maWxlbWFuYWdlci90ZXN0L3Rlc3QxLwogICAgLy8gUFMgaWYgdGhlcmUgaXNuJ3Qgd3JpdGUgcGVybWlzc2lvbiBpbiB5b3VyIGRlc3RpbmF0aW9uIGZvbGRlciB5b3UgbXVzdCBzZXQgaXQKICAgIC8vCiAgICAnZml4ZWRfaW1hZ2VfY3JlYXRpb24nICAgICAgICAgICAgICAgICAgICA9PiBmYWxzZSwgLy9hY3RpdmF0ZSBvciBub3QgdGhlIGNyZWF0aW9uIG9mIG9uZSBvciBtb3JlIGltYWdlIHJlc2l6ZWQgd2l0aCBmaXhlZCBwYXRoIGZyb20gZmlsZW1hbmFnZXIgZm9sZGVyCiAgICAnZml4ZWRfcGF0aF9mcm9tX2ZpbGVtYW5hZ2VyJyAgICAgICAgICAgICA9PiBhcnJheSggJy4uL3Rlc3QvJywgJy4uL3Rlc3QxLycgKSwgLy9maXhlZCBwYXRoIG9mIHRoZSBpbWFnZSBmb2xkZXIgZnJvbSB0aGUgY3VycmVudCBwb3NpdGlvbiBvbiB1cGxvYWQgZm9sZGVyCiAgICAnZml4ZWRfaW1hZ2VfY3JlYXRpb25fbmFtZV90b19wcmVwZW5kJyAgICA9PiBhcnJheSggJycsICd0ZXN0XycgKSwgLy9uYW1lIHRvIHByZXBlbmQgb24gZmlsZW5hbWUKICAgICdmaXhlZF9pbWFnZV9jcmVhdGlvbl90b19hcHBlbmQnICAgICAgICAgID0+IGFycmF5KCAnX3Rlc3QnLCAnJyApLCAvL25hbWUgdG8gYXBwZW5kb24gZmlsZW5hbWUKICAgICdmaXhlZF9pbWFnZV9jcmVhdGlvbl93aWR0aCcgICAgICAgICAgICAgID0+IGFycmF5KCAzMDAsIDQwMCApLCAvL3dpZHRoIG9mIGltYWdlCiAgICAnZml4ZWRfaW1hZ2VfY3JlYXRpb25faGVpZ2h0JyAgICAgICAgICAgICA9PiBhcnJheSggMjAwLCAzMDAgKSwgLy9oZWlnaHQgb2YgaW1hZ2UKICAgIC8qCiAgICAjICAgICAgICAgICAgICRvcHRpb246ICAgICAwIC8gZXhhY3QgPSBkZWZpbmVkIHNpemU7CiAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAxIC8gcG9ydHJhaXQgPSBrZWVwIGFzcGVjdCBzZXQgaGVpZ2h0OwogICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgMiAvIGxhbmRzY2FwZSA9IGtlZXAgYXNwZWN0IHNldCB3aWR0aDsKICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgIDMgLyBhdXRvID0gYXV0bzsKICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgIDQgLyBjcm9wPSByZXNpemUgYW5kIGNyb3A7CiAgICAqLwogICAgJ2ZpeGVkX2ltYWdlX2NyZWF0aW9uX29wdGlvbicgICAgICAgICAgICAgPT4gYXJyYXkoICdjcm9wJywgJ2F1dG8nICksIC8vc2V0IHRoZSB0eXBlIG9mIHRoZSBjcm9wCgoKICAgIC8vIE5ldyBpbWFnZSByZXNpemVkIGNyZWF0aW9uIHdpdGggcmVsYXRpdmUgcGF0aCBpbnNpZGUgdG8gdXBsb2FkIGZvbGRlciBhZnRlciB1cGxvYWRpbmcgKHRodW1ibmFpbHMgaW4gcmVsYXRpdmUgbW9kZSkKICAgIC8vIFdpdGggUmVzcG9uc2l2ZSBmaWxlbWFuYWdlciB5b3UgY2FuIGNyZWF0ZSBhdXRvbWF0aWNhbGx5IHJlc2l6ZWQgaW1hZ2UgaW5zaWRlIHRoZSB1cGxvYWQgZm9sZGVyLCBhbHNvIG1vcmUgdGhhbiBvbmUgYXQgYSB0aW1lCiAgICAvLyBqdXN0IHNpbXBseSBhZGQgYSB2YWx1ZSBpbiB0aGUgYXJyYXkKICAgIC8vIFRoZSBpbWFnZSBjcmVhdGlvbiBwYXRoIGlzIGFsd2F5cyByZWxhdGl2ZSBzbyBpZiBpJ20gaW5zaWRlIHNvdXJjZS90ZXN0L3Rlc3QxIGFuZCBJIHVwbG9hZCBhbiBpbWFnZSwgdGhlIHBhdGggc3RhcnQgZnJvbSBoZXJlCiAgICAvLwogICAgJ3JlbGF0aXZlX2ltYWdlX2NyZWF0aW9uJyAgICAgICAgICAgICAgICAgPT4gZmFsc2UsIC8vYWN0aXZhdGUgb3Igbm90IHRoZSBjcmVhdGlvbiBvZiBvbmUgb3IgbW9yZSBpbWFnZSByZXNpemVkIHdpdGggcmVsYXRpdmUgcGF0aCBmcm9tIHVwbG9hZCBmb2xkZXIKICAgICdyZWxhdGl2ZV9wYXRoX2Zyb21fY3VycmVudF9wb3MnICAgICAgICAgID0+IGFycmF5KCAnLi8nLCAnLi8nICksIC8vcmVsYXRpdmUgcGF0aCBvZiB0aGUgaW1hZ2UgZm9sZGVyIGZyb20gdGhlIGN1cnJlbnQgcG9zaXRpb24gb24gdXBsb2FkIGZvbGRlcgogICAgJ3JlbGF0aXZlX2ltYWdlX2NyZWF0aW9uX25hbWVfdG9fcHJlcGVuZCcgPT4gYXJyYXkoICcnLCAnJyApLCAvL25hbWUgdG8gcHJlcGVuZCBvbiBmaWxlbmFtZQogICAgJ3JlbGF0aXZlX2ltYWdlX2NyZWF0aW9uX25hbWVfdG9fYXBwZW5kJyAgPT4gYXJyYXkoICdfdGh1bWInLCAnX3RodW1iMScgKSwgLy9uYW1lIHRvIGFwcGVuZCBvbiBmaWxlbmFtZQogICAgJ3JlbGF0aXZlX2ltYWdlX2NyZWF0aW9uX3dpZHRoJyAgICAgICAgICAgPT4gYXJyYXkoIDMwMCwgNDAwICksIC8vd2lkdGggb2YgaW1hZ2UKICAgICdyZWxhdGl2ZV9pbWFnZV9jcmVhdGlvbl9oZWlnaHQnICAgICAgICAgID0+IGFycmF5KCAyMDAsIDMwMCApLCAvL2hlaWdodCBvZiBpbWFnZQogICAgLyoKICAgICAqICRvcHRpb246ICAgICAwIC8gZXhhY3QgPSBkZWZpbmVkIHNpemU7CiAgICAgKiAgICAgICAgICAgICAgMSAvIHBvcnRyYWl0ID0ga2VlcCBhc3BlY3Qgc2V0IGhlaWdodDsKICAgICAqICAgICAgICAgICAgICAyIC8gbGFuZHNjYXBlID0ga2VlcCBhc3BlY3Qgc2V0IHdpZHRoOwogICAgICogICAgICAgICAgICAgIDMgLyBhdXRvID0gYXV0bzsKICAgICAqICAgICAgICAgICAgICA0IC8gY3JvcD0gcmVzaXplIGFuZCBjcm9wOwogICAgICovCiAgICAncmVsYXRpdmVfaW1hZ2VfY3JlYXRpb25fb3B0aW9uJyAgICAgICAgICA9PiBhcnJheSggJ2Nyb3AnLCAnY3JvcCcgKSwgLy9zZXQgdGhlIHR5cGUgb2YgdGhlIGNyb3AKCgogICAgLy8gUmVtZW1iZXIgdGV4dCBmaWx0ZXIgYWZ0ZXIgY2xvc2UgZmlsZW1hbmFnZXIgZm9yIGZ1dHVyZSBzZXNzaW9uCiAgICAncmVtZW1iZXJfdGV4dF9maWx0ZXInICAgICAgICAgICAgICAgICAgICA9PiBmYWxzZSwKCik7CgoKCgoKCgoKCgoKCi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgovLyBDTVNNUyBTcGVjaWZpYyA6IGluY2x1ZGUgdGhlIGxpYnMsIGFuZCB0aGVuIHNlZSBpZiB0aGUgY3VycmVudCB1c2VycyBwcm9maWxlIGNhbiB1c2UgdGhlIGZpbGUgbWFuYWdlcgokRE9OVF9MT0FEX1NNQVJUWSA9IHRydWU7CiRDTVNfQURNSU5fUEFHRT0xOwoKLy8gRGlycyBhcmUgZGlmZmVyZW50IGluIENNU01TIDwgMi4zIGFuZCAyLjMgc28gd2UgdHJ5IHRvIGxvYWQgYm90aAovLyBhbmQgd2UgbXVzdCB0YWtlIGNhcmUgb2YgamF2YSB1cGxvYWQgZGlhbG9nIHdoaWNoIGlzIGluIGEgc3ViZGlyIHRvby4gU28gdGhlcmUgYXJlIDMgcGF0aHMgb3B0aW9ucyB0byBnbyB0byB0aGUgQ01TTVMgaW5jbHVkZToKaWYgKGZpbGVfZXhpc3RzKCcuLi8uLi8uLi8uLi9saWIvaW5jbHVkZS5waHAnKSkgewogICAgQHJlcXVpcmVfb25jZSgnLi4vLi4vLi4vLi4vbGliL2luY2x1ZGUucGhwJyk7Cn0gZWxzZWlmIChmaWxlX2V4aXN0cygnLi4vLi4vLi4vLi4vLi4vbGliL2luY2x1ZGUucGhwJykpIHsKICAgIEByZXF1aXJlX29uY2UoJy4uLy4uLy4uLy4uLy4uL2xpYi9pbmNsdWRlLnBocCcpOwp9IGVsc2UgewogICAgQHJlcXVpcmVfb25jZSgnLi4vLi4vLi4vLi4vLi4vLi4vbGliL2luY2x1ZGUucGhwJyk7Cn0KLy8gaWYgKGJhc2VuYW1lKCRfU0VSVkVSWyJTQ1JJUFRfRklMRU5BTUUiXSkgIT0gJ2luZGV4LnBocCcpIHsgLy8gaW5kZXgucGhwID0gdXBsb2FkZXIvaW5kZXgucGhwCi8vICAgICByZXF1aXJlX29uY2UoJy4uLy4uLy4uLy4uL2xpYi9pbmNsdWRlLnBocCcpOwovLyB9IGVsc2UgewovLyAgICAgcmVxdWlyZV9vbmNlKCcuLi8uLi8uLi8uLi8uLi9saWIvaW5jbHVkZS5waHAnKTsKLy8gfQoKaWYoIGlzc2V0KCRfU0VTU0lPTltDTVNfVVNFUl9LRVldKSAmJiAhaXNzZXQoJF9HRVRbQ01TX1NFQ1VSRV9QQVJBTV9OQU1FXSkgKSB7CiAgJF9HRVRbQ01TX1NFQ1VSRV9QQVJBTV9OQU1FXSA9ICRfU0VTU0lPTltDTVNfVVNFUl9LRVldOwp9CgovLyBUcnVlID0gbm8gcmVkaXJlY3QKaWYgKCFjaGVja19sb2dpbih0cnVlKSkgewogICAgZGllKCk7Cn0KCiRtb2QgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ1RpbnlNQ0UnKTsKJHByb2ZpbGUgPSB0aW55bWNlX3V0aWxzOjpnZXRfYmVzdF9wcm9maWxlKCk7CiRjYW5fdXNlX2ZpbGVtYW5hZ2VyID0gdGlueW1jZV91dGlsczo6Y2FuX3VzZXJfdXNlX2ZpbGVtYW5hZ2VyKCRwcm9maWxlKTsKCgppZiAoISRjYW5fdXNlX2ZpbGVtYW5hZ2VyKSB7CiAgICBkaWUoJ0FjY2VzcyBEZW5pZWQhJyk7Cn0gZWxzZSB7CiAgICAvLyBMb2FkIHRoZSBjb25maWcKICAgICRmaWxlbWFuYWdlcl9jb25maWcgPSAkcHJvZmlsZS0+Z2V0X2ZpbGVtYW5hZ2VyX2NvbmZpZygkZmlsZW1hbmFnZXJfY29uZmlnKTsKfQovLyBFTkQgQ01TTVMgU1BFQ0lGSUMgQ09ERQovLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCgoKCgoKCgoKCgoKCgoKCgoKCgpyZXR1cm4gYXJyYXlfbWVyZ2UoCiAgICAkZmlsZW1hbmFnZXJfY29uZmlnLAogICAgYXJyYXkoCiAgICAgICAgJ2V4dCcgPT4gYXJyYXlfbWVyZ2UoCiAgICAgICAgICAgICRmaWxlbWFuYWdlcl9jb25maWdbJ2V4dF9pbWcnXSwKICAgICAgICAgICAgJGZpbGVtYW5hZ2VyX2NvbmZpZ1snZXh0X2ZpbGUnXSwKICAgICAgICAgICAgJGZpbGVtYW5hZ2VyX2NvbmZpZ1snZXh0X21pc2MnXSwKICAgICAgICAgICAgJGZpbGVtYW5hZ2VyX2NvbmZpZ1snZXh0X3ZpZGVvJ10sCiAgICAgICAgICAgICRmaWxlbWFuYWdlcl9jb25maWdbJ2V4dF9tdXNpYyddCiAgICAgICAgKSwKICAgICAgICAndHVpX2RlZmF1bHRzX2NvbmZpZycgPT4gYXJyYXkoCiAgICAgICAgICAgIC8vJ2NvbW1vbi5iaS5pbWFnZScgICAgICAgICAgICAgICAgICAgPT4gJGZpbGVtYW5hZ2VyX2NvbmZpZ1snY29tbW9uLmJpLmltYWdlJ10sCiAgICAgICAgICAgIC8vJ2NvbW1vbi5iaXNpemUud2lkdGgnICAgICAgICAgICAgICAgPT4gJGZpbGVtYW5hZ2VyX2NvbmZpZ1snY29tbW9uLmJpc2l6ZS53aWR0aCddLAogICAgICAgICAgICAvLydjb21tb24uYmlzaXplLmhlaWdodCcgICAgICAgICAgICAgID0+ICRmaWxlbWFuYWdlcl9jb25maWdbJ2NvbW1vbi5iaXNpemUuaGVpZ2h0J10sIAogICAgICAgICAgICAnY29tbW9uLmJhY2tncm91bmRJbWFnZScgICAgICAgICAgICA9PiAkZmlsZW1hbmFnZXJfY29uZmlnWydjb21tb24uYmFja2dyb3VuZEltYWdlJ10sCiAgICAgICAgICAgICdjb21tb24uYmFja2dyb3VuZENvbG9yJyAgICAgICAgICAgID0+ICRmaWxlbWFuYWdlcl9jb25maWdbJ2NvbW1vbi5iYWNrZ3JvdW5kQ29sb3InXSwgCiAgICAgICAgICAgICdjb21tb24uYm9yZGVyJyAgICAgICAgICAgICAgICAgICAgID0+ICRmaWxlbWFuYWdlcl9jb25maWdbJ2NvbW1vbi5ib3JkZXInXSwKICAgICAgICAgICAgJ2hlYWRlci5iYWNrZ3JvdW5kSW1hZ2UnICAgICAgICAgICAgPT4gJGZpbGVtYW5hZ2VyX2NvbmZpZ1snaGVhZGVyLmJhY2tncm91bmRJbWFnZSddLAogICAgICAgICAgICAnaGVhZGVyLmJhY2tncm91bmRDb2xvcicgICAgICAgICAgICA9PiAkZmlsZW1hbmFnZXJfY29uZmlnWydoZWFkZXIuYmFja2dyb3VuZENvbG9yJ10sCiAgICAgICAgICAgICdoZWFkZXIuYm9yZGVyJyAgICAgICAgICAgICAgICAgICAgID0+ICRmaWxlbWFuYWdlcl9jb25maWdbJ2hlYWRlci5ib3JkZXInXSwKICAgICAgICAgICAgJ21lbnUubm9ybWFsSWNvbi5wYXRoJyAgICAgICAgICAgICAgPT4gJGZpbGVtYW5hZ2VyX2NvbmZpZ1snbWVudS5ub3JtYWxJY29uLnBhdGgnXSwKICAgICAgICAgICAgJ21lbnUubm9ybWFsSWNvbi5uYW1lJyAgICAgICAgICAgICAgPT4gJGZpbGVtYW5hZ2VyX2NvbmZpZ1snbWVudS5ub3JtYWxJY29uLm5hbWUnXSwKICAgICAgICAgICAgJ21lbnUuYWN0aXZlSWNvbi5wYXRoJyAgICAgICAgICAgICAgPT4gJGZpbGVtYW5hZ2VyX2NvbmZpZ1snbWVudS5hY3RpdmVJY29uLnBhdGgnXSwKICAgICAgICAgICAgJ21lbnUuYWN0aXZlSWNvbi5uYW1lJyAgICAgICAgICAgICAgPT4gJGZpbGVtYW5hZ2VyX2NvbmZpZ1snbWVudS5hY3RpdmVJY29uLm5hbWUnXSwKICAgICAgICAgICAgJ21lbnUuZGlzYWJsZWRJY29uLnBhdGgnICAgICAgICAgICAgPT4gJGZpbGVtYW5hZ2VyX2NvbmZpZ1snbWVudS5kaXNhYmxlZEljb24ucGF0aCddLAogICAgICAgICAgICAnbWVudS5kaXNhYmxlZEljb24ubmFtZScgICAgICAgICAgICA9PiAkZmlsZW1hbmFnZXJfY29uZmlnWydtZW51LmRpc2FibGVkSWNvbi5uYW1lJ10sCiAgICAgICAgICAgICdtZW51LmhvdmVySWNvbi5wYXRoJyAgICAgICAgICAgICAgID0+ICRmaWxlbWFuYWdlcl9jb25maWdbJ21lbnUuaG92ZXJJY29uLnBhdGgnXSwKICAgICAgICAgICAgJ21lbnUuaG92ZXJJY29uLm5hbWUnICAgICAgICAgICAgICAgPT4gJGZpbGVtYW5hZ2VyX2NvbmZpZ1snbWVudS5ob3Zlckljb24ubmFtZSddLAogICAgICAgICAgICAnbWVudS5pY29uU2l6ZS53aWR0aCcgICAgICAgICAgICAgICA9PiAkZmlsZW1hbmFnZXJfY29uZmlnWydtZW51Lmljb25TaXplLndpZHRoJ10sCiAgICAgICAgICAgICdtZW51Lmljb25TaXplLmhlaWdodCcgICAgICAgICAgICAgID0+ICRmaWxlbWFuYWdlcl9jb25maWdbJ21lbnUuaWNvblNpemUuaGVpZ2h0J10sCiAgICAgICAgICAgICdzdWJtZW51LmJhY2tncm91bmRDb2xvcicgICAgICAgICAgID0+ICRmaWxlbWFuYWdlcl9jb25maWdbJ3N1Ym1lbnUuYmFja2dyb3VuZENvbG9yJ10sCiAgICAgICAgICAgICdzdWJtZW51LnBhcnRpdGlvbi5jb2xvcicgICAgICAgICAgID0+ICRmaWxlbWFuYWdlcl9jb25maWdbJ3N1Ym1lbnUucGFydGl0aW9uLmNvbG9yJ10sCiAgICAgICAgICAgICdzdWJtZW51Lm5vcm1hbEljb24ucGF0aCcgICAgICAgICAgID0+ICRmaWxlbWFuYWdlcl9jb25maWdbJ3N1Ym1lbnUubm9ybWFsSWNvbi5wYXRoJ10sCiAgICAgICAgICAgICdzdWJtZW51Lm5vcm1hbEljb24ubmFtZScgICAgICAgICAgID0+ICRmaWxlbWFuYWdlcl9jb25maWdbJ3N1Ym1lbnUubm9ybWFsSWNvbi5uYW1lJ10sCiAgICAgICAgICAgICdzdWJtZW51LmFjdGl2ZUljb24ucGF0aCcgICAgICAgICAgID0+ICRmaWxlbWFuYWdlcl9jb25maWdbJ3N1Ym1lbnUuYWN0aXZlSWNvbi5wYXRoJ10sCiAgICAgICAgICAgICdzdWJtZW51LmFjdGl2ZUljb24ubmFtZScgICAgICAgICAgID0+ICRmaWxlbWFuYWdlcl9jb25maWdbJ3N1Ym1lbnUuYWN0aXZlSWNvbi5uYW1lJ10sCiAgICAgICAgICAgICdzdWJtZW51Lmljb25TaXplLndpZHRoJyAgICAgICAgICAgID0+ICRmaWxlbWFuYWdlcl9jb25maWdbJ3N1Ym1lbnUuaWNvblNpemUud2lkdGgnXSwKICAgICAgICAgICAgJ3N1Ym1lbnUuaWNvblNpemUuaGVpZ2h0JyAgICAgICAgICAgPT4gJGZpbGVtYW5hZ2VyX2NvbmZpZ1snc3VibWVudS5pY29uU2l6ZS5oZWlnaHQnXSwKICAgICAgICAgICAgJ3N1Ym1lbnUubm9ybWFsTGFiZWwuY29sb3InICAgICAgICAgPT4gJGZpbGVtYW5hZ2VyX2NvbmZpZ1snc3VibWVudS5ub3JtYWxMYWJlbC5jb2xvciddLAogICAgICAgICAgICAnc3VibWVudS5ub3JtYWxMYWJlbC5mb250V2VpZ2h0JyAgICA9PiAkZmlsZW1hbmFnZXJfY29uZmlnWydzdWJtZW51Lm5vcm1hbExhYmVsLmZvbnRXZWlnaHQnXSwKICAgICAgICAgICAgJ3N1Ym1lbnUuYWN0aXZlTGFiZWwuY29sb3InICAgICAgICAgPT4gJGZpbGVtYW5hZ2VyX2NvbmZpZ1snc3VibWVudS5hY3RpdmVMYWJlbC5jb2xvciddLAogICAgICAgICAgICAvLydzdWJtZW51LmFjdGl2ZUxhYmVsLmZvbnRXZWlnaHQnICAgID0+ICRmaWxlbWFuYWdlcl9jb25maWdbJ3N1Ym1lbnUuYWN0aXZlTGFiZWwuZm9udFdlaWdodGNvbW1vbi5iaS5pbWFnZSddLAogICAgICAgICAgICAnY2hlY2tib3guYm9yZGVyJyAgICAgICAgICAgICAgICAgICA9PiAkZmlsZW1hbmFnZXJfY29uZmlnWydjaGVja2JveC5ib3JkZXInXSwKICAgICAgICAgICAgJ2NoZWNrYm94LmJhY2tncm91bmRDb2xvcicgICAgICAgICAgPT4gJGZpbGVtYW5hZ2VyX2NvbmZpZ1snY2hlY2tib3guYmFja2dyb3VuZENvbG9yJ10sCiAgICAgICAgICAgICdyYW5nZS5wb2ludGVyLmNvbG9yJyAgICAgICAgICAgICAgID0+ICRmaWxlbWFuYWdlcl9jb25maWdbJ3JhbmdlLnBvaW50ZXIuY29sb3InXSwKICAgICAgICAgICAgJ3JhbmdlLmJhci5jb2xvcicgICAgICAgICAgICAgICAgICAgPT4gJGZpbGVtYW5hZ2VyX2NvbmZpZ1sncmFuZ2UuYmFyLmNvbG9yJ10sCiAgICAgICAgICAgICdyYW5nZS5zdWJiYXIuY29sb3InICAgICAgICAgICAgICAgID0+ICRmaWxlbWFuYWdlcl9jb25maWdbJ3JhbmdlLnN1YmJhci5jb2xvciddLAogICAgICAgICAgICAncmFuZ2UuZGlzYWJsZWRQb2ludGVyLmNvbG9yJyAgICAgICA9PiAkZmlsZW1hbmFnZXJfY29uZmlnWydyYW5nZS5kaXNhYmxlZFBvaW50ZXIuY29sb3InXSwKICAgICAgICAgICAgJ3JhbmdlLmRpc2FibGVkQmFyLmNvbG9yJyAgICAgICAgICAgPT4gJGZpbGVtYW5hZ2VyX2NvbmZpZ1sncmFuZ2UuZGlzYWJsZWRCYXIuY29sb3InXSwKICAgICAgICAgICAgJ3JhbmdlLmRpc2FibGVkU3ViYmFyLmNvbG9yJyAgICAgICAgPT4gJGZpbGVtYW5hZ2VyX2NvbmZpZ1sncmFuZ2UuZGlzYWJsZWRTdWJiYXIuY29sb3InXSwKICAgICAgICAgICAgJ3JhbmdlLnZhbHVlLmNvbG9yJyAgICAgICAgICAgICAgICAgPT4gJGZpbGVtYW5hZ2VyX2NvbmZpZ1sncmFuZ2UudmFsdWUuY29sb3InXSwKICAgICAgICAgICAgJ3JhbmdlLnZhbHVlLmZvbnRXZWlnaHQnICAgICAgICAgICAgPT4gJGZpbGVtYW5hZ2VyX2NvbmZpZ1sncmFuZ2UudmFsdWUuZm9udFdlaWdodCddLAogICAgICAgICAgICAncmFuZ2UudmFsdWUuZm9udFNpemUnICAgICAgICAgICAgICA9PiAkZmlsZW1hbmFnZXJfY29uZmlnWydyYW5nZS52YWx1ZS5mb250U2l6ZSddLAogICAgICAgICAgICAncmFuZ2UudmFsdWUuYm9yZGVyJyAgICAgICAgICAgICAgICA9PiAkZmlsZW1hbmFnZXJfY29uZmlnWydyYW5nZS52YWx1ZS5ib3JkZXInXSwKICAgICAgICAgICAgJ3JhbmdlLnZhbHVlLmJhY2tncm91bmRDb2xvcicgICAgICAgPT4gJGZpbGVtYW5hZ2VyX2NvbmZpZ1sncmFuZ2UudmFsdWUuYmFja2dyb3VuZENvbG9yJ10sCiAgICAgICAgICAgICdyYW5nZS50aXRsZS5jb2xvcicgICAgICAgICAgICAgICAgID0+ICRmaWxlbWFuYWdlcl9jb25maWdbJ3JhbmdlLnRpdGxlLmNvbG9yJ10sCiAgICAgICAgICAgICdyYW5nZS50aXRsZS5mb250V2VpZ2h0JyAgICAgICAgICAgID0+ICRmaWxlbWFuYWdlcl9jb25maWdbJ3JhbmdlLnRpdGxlLmZvbnRXZWlnaHQnXSwKICAgICAgICAgICAgJ2NvbG9ycGlja2VyLmJ1dHRvbi5ib3JkZXInICAgICAgICAgPT4gJGZpbGVtYW5hZ2VyX2NvbmZpZ1snY29sb3JwaWNrZXIuYnV0dG9uLmJvcmRlciddLAogICAgICAgICAgICAnY29sb3JwaWNrZXIudGl0bGUuY29sb3InICAgICAgICAgICA9PiAkZmlsZW1hbmFnZXJfY29uZmlnWydjb2xvcnBpY2tlci50aXRsZS5jb2xvciddCiAgICAgICAgKSwKICAgICkKKTs=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/config/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/config/old_config.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLy8gQ01TTVMgOiByZW1vdmUgdGhlIHNlc3Npb25fc3RhcnQgYmVjYXVzZSBpdCBjb25mbGljdHMgd2l0aCB0aGUgQ01TIHNlc3Npb25fc3RhcnQgaW4gaW5jbHVkZS5waHAKLy8gc2Vzc2lvbl9zdGFydCgpOwoKCm1iX2ludGVybmFsX2VuY29kaW5nKCdVVEYtOCcpOwpkYXRlX2RlZmF1bHRfdGltZXpvbmVfc2V0KCdFdXJvcGUvUm9tZScpOwoKLyoKfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnwgT3B0aW9uYWwgc2VjdXJpdHkKfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnwKfCBpZiBzZXQgdG8gdHJ1ZSBvbmx5IHRob3NlIHdpbGwgYWNjZXNzIFJGIHdob3NlIHVybCBjb250YWlucyB0aGUgYWNjZXNzIGtleShha2V5KSBsaWtlOgp8IDxpbnB1dCB0eXBlPSJidXR0b24iIGhyZWY9Ii4uL2ZpbGVtYW5hZ2VyL2RpYWxvZy5waHA/ZmllbGRfaWQ9aW1nRmllbGQmbGFuZz1lbl9FTiZha2V5PW15UHJpdmF0ZUtleSIgdmFsdWU9IkZpbGVzIj4KfCBpbiB0aW55bWNlIGEgbmV3IHBhcmFtZXRlciBhZGRlZDogZmlsZW1hbmFnZXJfYWNjZXNzX2tleToibXlQcml2YXRlS2V5Igp8IGV4YW1wbGUgdGlueW1jZSBjb25maWc6CnwKfCB0aW55IGluaXQgLi4uCnwgZXh0ZXJuYWxfZmlsZW1hbmFnZXJfcGF0aDoiLi4vZmlsZW1hbmFnZXIvIiwKfCBmaWxlbWFuYWdlcl90aXRsZToiRmlsZW1hbmFnZXIiICwKfCBmaWxlbWFuYWdlcl9hY2Nlc3Nfa2V5OiJteVByaXZhdGVLZXkiICwKfCAuLi4KfAoqLwoKZGVmaW5lKCdVU0VfQUNDRVNTX0tFWVMnLCB0cnVlKTsgLy8gVFJVRSBvciBGQUxTRQoKLyoKfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnwgRE9OJ1QgQ09QWSBUSElTIFZBUklBQkxFUyBJTiBGT0xERVJTIGNvbmZpZy5waHAgRklMRVMKfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiovCgpkZWZpbmUoJ0RFQlVHX0VSUk9SX01FU1NBR0UnLCB0cnVlKTsgLy8gVFJVRSBvciBGQUxTRQoKLyoKfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnwgUGF0aCBjb25maWd1cmF0aW9uCnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQp8IEluIHRoaXMgY29uZmlndXJhdGlvbiB0aGUgZm9sZGVyIHRyZWUgaXMKfCByb290CnwgICAgfC0gc291cmNlIDwtIHVwbG9hZCBmb2xkZXIKfCAgICB8LSB0aHVtYnMgPC0gdGh1bWJuYWlsIGZvbGRlciBbbXVzdCBoYXZlIHdyaXRlIHBlcm1pc3Npb24gKDc1NSldCnwgICAgfC0gZmlsZW1hbmFnZXIKfCAgICB8LSBqcwp8ICAgIHwgICB8LSB0aW55bWNlCnwgICAgfCAgIHwgICB8LSBwbHVnaW5zCnwgICAgfCAgIHwgICB8ICAgfC0gcmVzcG9uc2l2ZWZpbGVtYW5hZ2VyCnwgICAgfCAgIHwgICB8ICAgfCAgIHwtIHBsdWdpbi5taW4uanMKKi8KCiRmaWxlbWFuYWdlcl9jb25maWcgPSBhcnJheSgKCgkvKgoJfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgl8IERPTidUIFRPVUNIIChiYXNlIHVybCAob25seSBkb21haW4pIG9mIHNpdGUpLgoJfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgl8Cgl8IHdpdGhvdXQgZmluYWwgLwoJfAoJKi8KCgknYmFzZV91cmwnID0+ICgoaXNzZXQoJF9TRVJWRVJbJ0hUVFBTJ10pICYmICRfU0VSVkVSWydIVFRQUyddICYmICEgaW5fYXJyYXkoc3RydG9sb3dlcigkX1NFUlZFUlsnSFRUUFMnXSksIGFycmF5KCAnb2ZmJywgJ25vJyApKSkgPyAnaHR0cHMnIDogJ2h0dHAnKSAuICc6Ly8nIC4gJF9TRVJWRVJbJ0hUVFBfSE9TVCddLAoKCS8qCgl8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCXwgcGF0aCBmcm9tIGJhc2VfdXJsIHRvIGJhc2Ugb2YgdXBsb2FkIGZvbGRlcgoJfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgl8Cgl8IHdpdGggc3RhcnQgYW5kIGZpbmFsIC8KCXwKCSovCgkndXBsb2FkX2RpcicgPT4gJy91cGxvYWRzLycsCgoJLyoKCXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJfCByZWxhdGl2ZSBwYXRoIGZyb20gZmlsZW1hbmFnZXIgZm9sZGVyIHRvIHVwbG9hZCBmb2xkZXIKCXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJfAoJfCB3aXRoIGZpbmFsIC8KCXwKCSovCgkvLyBDTVNNUyBzcGVjaWZpYwoJJ2N1cnJlbnRfcGF0aCcgPT4gJy4uLy4uLy4uLy4uL3VwbG9hZHMvJywKCgkvKgoJfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgl8IHJlbGF0aXZlIHBhdGggZnJvbSBmaWxlbWFuYWdlciBmb2xkZXIgdG8gdGh1bWJzIGZvbGRlcgoJfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgl8Cgl8IHdpdGggZmluYWwgLwoJfCBETyBOT1QgcHV0IGluc2lkZSB1cGxvYWQgZm9sZGVyCgl8CgkqLwoJLy8gQ01TTVMgc3BlY2lmaWMKCSd0aHVtYnNfYmFzZV9wYXRoJyA9PiAnLi4vLi4vLi4vLi4vdG1wL3RodW1icy8nLAoKCS8qCgl8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCXwgQWNjZXNzIGtleXMKCXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJfAoJfCBhZGQgYWNjZXNzIGtleXMgZWc6IGFycmF5KCdteVByaXZhdGVLZXknLCAnc29tZW9uZUVsc2VLZXknKTsKCXwga2V5cyBzaG91bGQgb25seSBjb250YWludCAoYS16IEEtWiAwLTkgXCAuIF8gLSkgY2hhcmFjdGVycwoJfCBpZiB5b3UgYXJlIGludGVncmF0aW5nIGxldHMgc2F5IHRvIGEgY21zIGZvciBhZG1pbnMsIGkgcmVjb21tZW5kIG1ha2luZyBrZXlzIHJhbmRvbWl6ZWQgc29tZXRoaW5nIGxpa2UgdGhpczoKCXwgJHVzZXJuYW1lID0gJ0FkbWluJzsKCXwgJHNhbHQgPSAnZHNmbEZXUjl1MnhRYScgKGEgaGFyZCBjb2RlZCBzdHJpbmcpCgl8ICRha2V5ID0gbWQ1KCR1c2VybmFtZS4kc2FsdCk7Cgl8IERPIE5PVCB1c2UgJ2tleScgYXMgYWNjZXNzIGtleSEKCXwgS2V5cyBhcmUgQ0FTRSBTRU5TSVRJVkUhCgl8CgkqLwoKCSdhY2Nlc3Nfa2V5cycgPT4gYXJyYXkoKSwKCgkvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkvLyBZT1UgQ0FOIENPUFkgQU5EIENIQU5HRSBUSEVTRSBWQVJJQUJMRVMgSU5UTyBGT0xERVJTIGNvbmZpZy5waHAgRklMRVMgVE8gQ1VTVE9NSVpFIEVBQ0ggRk9MREVSIE9QVElPTlMKCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgkvKgoJfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgl8IE1heGltdW0gc2l6ZSBvZiBhbGwgZmlsZXMgaW4gc291cmNlIGZvbGRlcgoJfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgl8Cgl8IGluIE1lZ2FieXRlcwoJfAoJKi8KCSdNYXhTaXplVG90YWwnID0+IGZhbHNlLAoKCS8qCgl8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCXwgTWF4aW11bSB1cGxvYWQgc2l6ZQoJfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgl8Cgl8IGluIE1lZ2FieXRlcwoJfAoJKi8KCSdNYXhTaXplVXBsb2FkJyA9PiAxMDAsCgoKCS8qCgl8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCXwgZGVmYXVsdCBsYW5ndWFnZSBmaWxlIG5hbWUKCXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJKi8KCSdkZWZhdWx0X2xhbmd1YWdlJyA9PiAnZW5fRU4nLAoKCS8qCgl8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCXwgSWNvbiB0aGVtZQoJfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgl8Cgl8IERlZmF1bHQgYXZhaWxhYmxlOiBpY28gYW5kIGljb19kYXJrCgl8IENhbiBiZSBzZXQgdG8gY3VzdG9tIGljb24gaW5zaWRlIGZpbGVtYW5hZ2VyL2ltZwoJfAoJKi8KCSdpY29uX3RoZW1lJyA9PiAiaWNvIiwKCgoJLy9TaG93IG9yIG5vdCB0b3RhbCBzaXplIGluIGZpbGVtYW5hZ2VyIChpcyBwb3NzaWJsZSB0byBncmVhdGx5IGluY3JlYXNlIHRoZSBjYWxjdWxhdGlvbnMpCgknc2hvd190b3RhbF9zaXplJwkJCQkJCT0+IGZhbHNlLAoJLy9TaG93IG9yIG5vdCBzaG93IGZvbGRlciBzaXplIGluIGxpc3QgdmlldyBmZWF0dXJlIGluIGZpbGVtYW5hZ2VyIChpcyBwb3NzaWJsZSwgaWYgdGhlcmUgaXMgYSBsYXJnZSBmb2xkZXIsIHRvIGdyZWF0bHkgaW5jcmVhc2UgdGhlIGNhbGN1bGF0aW9ucykKCSdzaG93X2ZvbGRlcl9zaXplJwkJCQkJCT0+IGZhbHNlLAoJLy9TaG93IG9yIG5vdCBzaG93IHNvcnRpbmcgZmVhdHVyZSBpbiBmaWxlbWFuYWdlcgoJJ3Nob3dfc29ydGluZ19iYXInCQkJCQkJPT4gdHJ1ZSwKCS8vU2hvdyBvciBub3Qgc2hvdyBmaWx0ZXJzIGJ1dHRvbiBpbiBmaWxlbWFuYWdlcgoJJ3Nob3dfZmlsdGVyX2J1dHRvbnMnCQkJCQkJPT4gdHJ1ZSwKCS8vU2hvdyBvciBub3QgbGFuZ3VhZ2Ugc2VsZWN0aW9uIGZlYXR1cmUgaW4gZmlsZW1hbmFnZXIKCSdzaG93X2xhbmd1YWdlX3NlbGVjdGlvbicJCQkJPT4gZmFsc2UsCgkvL2FjdGl2ZSBvciBkZWFjdGl2ZSB0aGUgdHJhbnNsaXRlcmF0aW9uIChtZWFuIGNvbnZlcnQgYWxsIHN0cmFuZ2UgY2hhcmFjdGVycyBpbiBBLi5aYS4uejAuLjkgY2hhcmFjdGVycykKCSd0cmFuc2xpdGVyYXRpb24nCQkJCQkJPT4gZmFsc2UsCgkvL2NvbnZlcnQgYWxsIHNwYWNlcyBvbiBmaWxlcyBuYW1lIGFuZCBmb2xkZXJzIG5hbWUgd2l0aCAkcmVwbGFjZV93aXRoIHZhcmlhYmxlCgknY29udmVydF9zcGFjZXMnCQkJCQkJPT4gZmFsc2UsCgkvL2NvbnZlcnQgYWxsIHNwYWNlcyBvbiBmaWxlcyBuYW1lIGFuZCBmb2xkZXJzIG5hbWUgdGhpcyB2YWx1ZQoJJ3JlcGxhY2Vfd2l0aCcJCQkJCQkJPT4gIl8iLAoJLy9jb252ZXJ0IHRvIGxvd2VyY2FzZSB0aGUgZmlsZXMgYW5kIGZvbGRlcnMgbmFtZQoJJ2xvd2VyX2Nhc2UnCQkJCQkJCT0+IGZhbHNlLAoKCS8vIC0xOiBUaGVyZSBpcyBubyBsYXp5IGxvYWRpbmcgYXQgYWxsLCAwOiBBbHdheXMgbGF6eS1sb2FkIGltYWdlcywgMCs6IFRoZSBtaW5pbXVtIG51bWJlciBvZiB0aGUgZmlsZXMgaW4gYSBkaXJlY3RvcnkKCS8vIHdoZW4gbGF6eSBsb2FkaW5nIHNob3VsZCBiZSB0dXJuZWQgb24uCgknbGF6eV9sb2FkaW5nX2ZpbGVfbnVtYmVyX3RocmVzaG9sZCcJPT4gMCwKCgoJLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgkvL0ltYWdlcyBsaW1pdCBhbmQgcmVzaXppbmcgY29uZmlndXJhdGlvbgoJLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgoJLy8gc2V0IG1heGltdW0gcGl4ZWwgd2lkdGggYW5kL29yIG1heGltdW0gcGl4ZWwgaGVpZ2h0IGZvciBhbGwgaW1hZ2VzCgkvLyBJZiB5b3Ugc2V0IGEgbWF4aW11bSB3aWR0aCBvciBoZWlnaHQsIG92ZXJzaXplZCBpbWFnZXMgYXJlIGNvbnZlcnRlZCB0byB0aG9zZSBsaW1pdHMuIEltYWdlcyBzbWFsbGVyIHRoYW4gdGhlIGxpbWl0KHMpIGFyZSB1bmFmZmVjdGVkCgkvLyBpZiB5b3UgZG9uJ3QgbmVlZCBhIGxpbWl0IHNldCBib3RoIHRvIDAKCSdpbWFnZV9tYXhfd2lkdGgnICAgICAgICAgICAgICAgICAgICAgICAgID0+IDAsCgknaW1hZ2VfbWF4X2hlaWdodCcgICAgICAgICAgICAgICAgICAgICAgICA9PiAwLAoJJ2ltYWdlX21heF9tb2RlJyAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ2F1dG8nLAoJLyoKCSMgICRvcHRpb246ICAwIC8gZXhhY3QgPSBkZWZpbmVkIHNpemU7CgkjICAgICAgICAgICAgMSAvIHBvcnRyYWl0ID0ga2VlcCBhc3BlY3Qgc2V0IGhlaWdodDsKCSMgICAgICAgICAgICAyIC8gbGFuZHNjYXBlID0ga2VlcCBhc3BlY3Qgc2V0IHdpZHRoOwoJIyAgICAgICAgICAgIDMgLyBhdXRvID0gYXV0bzsKCSMgICAgICAgICAgICA0IC8gY3JvcD0gcmVzaXplIGFuZCBjcm9wOwoJKi8KCgkvL0F1dG9tYXRpYyByZXNpemluZyAvLwoJLy8gSWYgeW91IHNldCAkaW1hZ2VfcmVzaXppbmcgdG8gVFJVRSB0aGUgc2NyaXB0IGNvbnZlcnRzIGFsbCB1cGxvYWRlZCBpbWFnZXMgZXhhY3RseSB0byBpbWFnZV9yZXNpemluZ193aWR0aCB4IGltYWdlX3Jlc2l6aW5nX2hlaWdodCBkaW1lbnNpb24KCS8vIElmIHlvdSBzZXQgd2lkdGggb3IgaGVpZ2h0IHRvIDAgdGhlIHNjcmlwdCBhdXRvbWF0aWNhbGx5IGNhbGN1bGF0ZXMgdGhlIG90aGVyIGRpbWVuc2lvbgoJLy8gSXMgcG9zc2libGUgdGhhdCBpZiB5b3UgdXBsb2FkIHZlcnkgYmlnIGltYWdlcyB0aGUgc2NyaXB0IG5vdCB3b3JrIHRvIG92ZXJjb21lIHRoaXMgaW5jcmVhc2UgdGhlIHBocCBjb25maWd1cmF0aW9uIG9mIG1lbW9yeSBhbmQgdGltZSBsaW1pdAoJJ2ltYWdlX3Jlc2l6aW5nJyAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gZmFsc2UsCgknaW1hZ2VfcmVzaXppbmdfd2lkdGgnICAgICAgICAgICAgICAgICAgICA9PiAwLAoJJ2ltYWdlX3Jlc2l6aW5nX2hlaWdodCcgICAgICAgICAgICAgICAgICAgPT4gMCwKCSdpbWFnZV9yZXNpemluZ19tb2RlJyAgICAgICAgICAgICAgICAgICAgID0+ICdhdXRvJywgLy8gc2FtZSBhcyAkaW1hZ2VfbWF4X21vZGUKCSdpbWFnZV9yZXNpemluZ19vdmVycmlkZScgICAgICAgICAgICAgICAgID0+IGZhbHNlLAoJLy8gSWYgc2V0IHRvIFRSVUUgdGhlbiB5b3UgY2FuIHNwZWNpZnkgYmlnZ2VyIGltYWdlcyB0aGFuICRpbWFnZV9tYXhfd2lkdGggJiBoZWlnaHQgb3RoZXJ3aXNlIGlmIGltYWdlX3Jlc2l6aW5nIGlzCgkvLyBiaWdnZXIgdGhhbiAkaW1hZ2VfbWF4X3dpZHRoIG9yIGhlaWdodCB0aGVuIGl0IHdpbGwgYmUgY29udmVydGVkIHRvIHRob3NlIHZhbHVlcwoKCS8vKioqKioqKioqKioqKioqKioqCgkvLyBEZWZhdWx0IGxheW91dCBzZXR0aW5nCgkvLwoJLy8gMCA9PiBib3hlcwoJLy8gMSA9PiBkZXRhaWxlZCBsaXN0ICgxIGNvbHVtbikKCS8vIDIgPT4gY29sdW1ucyBsaXN0IChtdWx0aXBsZSBjb2x1bW5zIGRlcGVuZGluZyBvbiB0aGUgd2lkdGggb2YgdGhlIHBhZ2UpCgkvLyBZT1UgQ0FOIEFMU08gUEFTUyBUSElTIFBBUkFNRVRFUlMgVVNJTkcgU0VTU0lPTiBWQVIgPT4gJF9TRVNTSU9OWydSRiddWyJWSUVXIl09CgkvLwoJLy8qKioqKioqKioqKioqKioqKioKCSdkZWZhdWx0X3ZpZXcnICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IDAsCgoJLy9zZXQgaWYgdGhlIGZpbGVuYW1lIGlzIHRydW5jYXRlZCB3aGVuIG92ZXJmbG93IGZpcnN0IHJvdwoJJ2VsbGlwc2lzX3RpdGxlX2FmdGVyX2ZpcnN0X3JvdycgICAgICAgICAgPT4gdHJ1ZSwKCgkvLyoqKioqKioqKioqKioqKioqKioqKioqKioKCS8vUGVybWlzc2lvbnMgY29uZmlndXJhdGlvbgoJLy8qKioqKioqKioqKioqKioqKioKCSdkZWxldGVfZmlsZXMnICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IHRydWUsCgknY3JlYXRlX2ZvbGRlcnMnICAgICAgICAgICAgICAgICAgICAgICAgICA9PiB0cnVlLAoJJ2RlbGV0ZV9mb2xkZXJzJyAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gdHJ1ZSwKCSd1cGxvYWRfZmlsZXMnICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IHRydWUsCgkncmVuYW1lX2ZpbGVzJyAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiB0cnVlLAoJJ3JlbmFtZV9mb2xkZXJzJyAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gdHJ1ZSwKCSdkdXBsaWNhdGVfZmlsZXMnICAgICAgICAgICAgICAgICAgICAgICAgID0+IHRydWUsCgknY29weV9jdXRfZmlsZXMnICAgICAgICAgICAgICAgICAgICAgICAgICA9PiB0cnVlLCAvLyBmb3IgY29weS9jdXQgZmlsZXMKCSdjb3B5X2N1dF9kaXJzJyAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IHRydWUsIC8vIGZvciBjb3B5L2N1dCBkaXJlY3RvcmllcwoJJ2NobW9kX2ZpbGVzJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gZmFsc2UsIC8vIGNoYW5nZSBmaWxlIHBlcm1pc3Npb25zCgknY2htb2RfZGlycycgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiBmYWxzZSwgLy8gY2hhbmdlIGZvbGRlciBwZXJtaXNzaW9ucwoJJ3ByZXZpZXdfdGV4dF9maWxlcycgICAgICAgICAgICAgICAgICAgICAgPT4gdHJ1ZSwgLy8gZWcuOiB0eHQsIGxvZyBldGMuCgknZWRpdF90ZXh0X2ZpbGVzJyAgICAgICAgICAgICAgICAgICAgICAgICA9PiB0cnVlLCAvLyBlZy46IHR4dCwgbG9nIGV0Yy4KCSdjcmVhdGVfdGV4dF9maWxlcycgICAgICAgICAgICAgICAgICAgICAgID0+IHRydWUsIC8vIG9ubHkgY3JlYXRlIGZpbGVzIHdpdGggZXh0cy4gZGVmaW5lZCBpbiAkZWRpdGFibGVfdGV4dF9maWxlX2V4dHMKCgkvLyB5b3UgY2FuIHByZXZpZXcgdGhlc2UgdHlwZSBvZiBmaWxlcyBpZiAkcHJldmlld190ZXh0X2ZpbGVzIGlzIHRydWUKCSdwcmV2aWV3YWJsZV90ZXh0X2ZpbGVfZXh0cycgICAgICAgICAgICAgID0+IGFycmF5KCAndHh0JywgJ2xvZycsICd4bWwnLCAnaHRtbCcsICdjc3MnLCAnaHRtJywgJ2pzJyApLAoJJ3ByZXZpZXdhYmxlX3RleHRfZmlsZV9leHRzX25vX3ByZXR0aWZ5JyAgPT4gYXJyYXkoICd0eHQnLCAnbG9nJyApLAoKCS8vIHlvdSBjYW4gZWRpdCB0aGVzZSB0eXBlIG9mIGZpbGVzIGlmICRlZGl0X3RleHRfZmlsZXMgaXMgdHJ1ZSAob25seSB0ZXh0IGJhc2VkIGZpbGVzKQoJLy8geW91IGNhbiBjcmVhdGUgdGhlc2UgdHlwZSBvZiBmaWxlcyBpZiAkY3JlYXRlX3RleHRfZmlsZXMgaXMgdHJ1ZSAob25seSB0ZXh0IGJhc2VkIGZpbGVzKQoJLy8gaWYgeW91IHdhbnQgeW91IGNhbiBhZGQgaHRtbCxjc3MgZXRjLgoJLy8gYnV0IGZvciBzZWN1cml0eSByZWFzb25zIGl0J3MgTk9UIFJFQ09NTUVOREVEIQoJJ2VkaXRhYmxlX3RleHRfZmlsZV9leHRzJyAgICAgICAgICAgICAgICAgPT4gYXJyYXkoICd0eHQnLCAnbG9nJywgJ3htbCcsICdodG1sJywgJ2NzcycsICdodG0nLCAnanMnICksCgoJLy8gUHJldmlldyB3aXRoIEdvb2dsZSBEb2N1bWVudHMKCSdnb29nbGVkb2NfZW5hYmxlZCcgICAgICAgICAgICAgICAgICAgICAgID0+IHRydWUsCgknZ29vZ2xlZG9jX2ZpbGVfZXh0cycgICAgICAgICAgICAgICAgICAgICA9PiBhcnJheSggJ2RvYycsICdkb2N4JywgJ3hscycsICd4bHN4JywgJ3BwdCcsICdwcHR4JyApLAoKCS8vIFByZXZpZXcgd2l0aCBWaWV3ZXIuanMKCSd2aWV3ZXJqc19lbmFibGVkJyAgICAgICAgICAgICAgICAgICAgICAgID0+IHRydWUsCgkndmlld2VyanNfZmlsZV9leHRzJyAgICAgICAgICAgICAgICAgICAgICA9PiBhcnJheSggJ3BkZicsICdvZHQnLCAnb2RwJywgJ29kcycgKSwKCgkvLyBkZWZpbmVzIHNpemUgbGltaXQgZm9yIHBhc3RlIGluIE1CIC8gb3BlcmF0aW9uCgkvLyBzZXQgJ0ZBTFNFJyBmb3Igbm8gbGltaXQKCSdjb3B5X2N1dF9tYXhfc2l6ZScgICAgICAgICAgICAgICAgICAgICAgID0+IDEwMCwKCS8vIGRlZmluZXMgZmlsZSBjb3VudCBsaW1pdCBmb3IgcGFzdGUgLyBvcGVyYXRpb24KCS8vIHNldCAnRkFMU0UnIGZvciBubyBsaW1pdAoJJ2NvcHlfY3V0X21heF9jb3VudCcgICAgICAgICAgICAgICAgICAgICAgPT4gMjAwLAoJLy9JRiBhbnkgb2YgdGhlc2UgbGltaXRzIHJlYWNoZWQsIG9wZXJhdGlvbiB3b24ndCBzdGFydCBhbmQgZ2VuZXJhdGUgd2FybmluZwoKCS8vKioqKioqKioqKioqKioqKioqKioqKgoJLy9BbGxvd2VkIGV4dGVuc2lvbnMgKGxvd2VyY2FzZSBpbnNlcnQpCgkvLyoqKioqKioqKioqKioqKioqKioqKioKCSdleHRfaW1nJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IGFycmF5KCAnanBnJywgJ2pwZWcnLCAncG5nJywgJ2dpZicsICdibXAnLCAndGlmZicsICdzdmcnICksIC8vSW1hZ2VzCgknZXh0X2ZpbGUnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiBhcnJheSggJ2RvYycsICdkb2N4JywgJ3J0ZicsICdwZGYnLCAneGxzJywgJ3hsc3gnLCAndHh0JywgJ2NzdicsICdodG1sJywgJ3hodG1sJywgJ3BzZCcsICdzcWwnLCAnbG9nJywgJ2ZsYScsICd4bWwnLCAnYWRlJywgJ2FkcCcsICdtZGInLCAnYWNjZGInLCAncHB0JywgJ3BwdHgnLCAnb2R0JywgJ290cycsICdvdHQnLCAnb2RiJywgJ29kZycsICdvdHAnLCAnb3RnJywgJ29kZicsICdvZHMnLCAnb2RwJywgJ2NzcycsICdhaScgKSwgLy9GaWxlcwoJJ2V4dF92aWRlbycgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gYXJyYXkoICdtb3YnLCAnbXBlZycsICdtNHYnLCAnbXA0JywgJ2F2aScsICdtcGcnLCAnd21hJywgImZsdiIsICJ3ZWJtIiApLCAvL1ZpZGVvCgknZXh0X211c2ljJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiBhcnJheSggJ21wMycsICdtNGEnLCAnYWMzJywgJ2FpZmYnLCAnbWlkJywgJ29nZycsICd3YXYnICksIC8vQXVkaW8KCSdleHRfbWlzYycgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IGFycmF5KCAnemlwJywgJ3JhcicsICdneicsICd0YXInLCAnaXNvJywgJ2RtZycgKSwgLy9BcmNoaXZlcwoKCS8qKioqKioqKioqKioqKioqKioKCSAqIEFWSUFSWSBjb25maWcKCSAqKioqKioqKioqKioqKioqKioqLwoJJ2F2aWFyeV9hY3RpdmUnICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gdHJ1ZSwKCSdhdmlhcnlfYXBpS2V5JyAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICIyNDQ0MjgyZWY0MzQ0ZTNkYWNkZWRjN2E3OGY4ODc3ZCIsCgknYXZpYXJ5X2xhbmd1YWdlJyAgICAgICAgICAgICAgICAgICAgICAgICA9PiAiZW4iLAoJJ2F2aWFyeV90aGVtZScgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gImxpZ2h0IiwKCSdhdmlhcnlfdG9vbHMnICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICJhbGwiLAoJJ2F2aWFyeV9tYXhTaXplJyAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gIjE0MDAiLAoJLy8gQWRkIG9yIG1vZGlmeSB0aGUgQXZpYXJ5IG9wdGlvbnMgYmVsb3cgYXMgbmVlZGVkIC0gdGhleSB3aWxsIGJlIGpzb24gZW5jb2RlZCB3aGVuIGFkZGVkIHRvIHRoZSBjb25maWd1cmF0aW9uIHNvIGFycmF5cyBjYW4gYmUgdXRpbGl6ZWQgYXMgbmVlZGVkCgoJLy9UaGUgZmlsdGVyIGFuZCBzb3J0ZXIgYXJlIG1hbmFnZWQgdGhyb3VnaCBib3RoIGphdmFzY3JpcHQgYW5kIHBocCBzY3JpcHRzIGJlY2F1c2UgaWYgeW91IGhhdmUgYSBsb3Qgb2YKCS8vZmlsZSBpbiBhIGZvbGRlciB0aGUgamF2YXNjcmlwdCBzY3JpcHQgY2FuJ3Qgc29ydCBhbGwgb3IgZmlsdGVyIGFsbCwgc28gdGhlIGZpbGVtYW5hZ2VyIHN3aXRjaCB0byBwaHAgc2NyaXB0LgoJLy9UaGUgcGx1Z2luIGF1dG9tYXRpYyBzd2ljaCBqYXZhc2NyaXB0IHRvIHBocCB3aGVuIHRoZSBjdXJyZW50IGZvbGRlciBleGNlZWRzIHRoZSBiZWxvdyBsaW1pdCBvZiBmaWxlcyBudW1iZXIKCSdmaWxlX251bWJlcl9saW1pdF9qcycgICAgICAgICAgICAgICAgICAgID0+IDUwMCwKCgkvLyoqKioqKioqKioqKioqKioqKioqKioKCS8vIEhpZGRlbiBmaWxlcyBhbmQgZm9sZGVycwoJLy8qKioqKioqKioqKioqKioqKioqKioqCgkvLyBzZXQgdGhlIG5hbWVzIG9mIGFueSBmb2xkZXJzIHlvdSB3YW50IGhpZGRlbiAoZWcgImhpZGRlbl9mb2xkZXIxIiwgImhpZGRlbl9mb2xkZXIyIiApIFJlbWVtYmVyIGFsbCBmb2xkZXJzIHdpdGggdGhlc2UgbmFtZXMgd2lsbCBiZSBoaWRkZW4gKHlvdSBjYW4gc2V0IGFueSBleGNlcHRpb25zIGluIGNvbmZpZy5waHAgZmlsZXMgb24gZm9sZGVycykKCSdoaWRkZW5fZm9sZGVycycgICAgICAgICAgICAgICAgICAgICAgICAgID0+IGFycmF5KCksCgkvLyBzZXQgdGhlIG5hbWVzIG9mIGFueSBmaWxlcyB5b3Ugd2FudCBoaWRkZW4uIFJlbWVtYmVyIHRoZXNlIG5hbWVzIHdpbGwgYmUgaGlkZGVuIGluIGFsbCBmb2xkZXJzIChlZyAidGhpc19kb2N1bWVudC5wZGYiLCAidGhhdF9pbWFnZS5qcGciICkKCSdoaWRkZW5fZmlsZXMnICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IGFycmF5KCAnY29uZmlnLnBocCcsICdpbmRleC5odG1sJyApLAoKCS8qKioqKioqKioqKioqKioqKioqCgkgKiBKQVZBIHVwbG9hZAoJICoqKioqKioqKioqKioqKioqKiovCgknamF2YV91cGxvYWQnICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiB0cnVlLAoJJ0pBVkFNYXhTaXplVXBsb2FkJyAgICAgICAgICAgICAgICAgICAgICAgPT4gMjAwLCAvL0diCgoKCS8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgkvL1RodW1ibmFpbCBmb3IgZXh0ZXJuYWwgdXNlIGNyZWF0aW9uCgkvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKCgkvLyBOZXcgaW1hZ2UgcmVzaXplZCBjcmVhdGlvbiB3aXRoIGZpeGVkIHBhdGggZnJvbSBmaWxlbWFuYWdlciBmb2xkZXIgYWZ0ZXIgdXBsb2FkaW5nICh0aHVtYm5haWxzIGluIGZpeGVkIG1vZGUpCgkvLyBJZiB5b3Ugd2FudCBjcmVhdGUgaW1hZ2VzIHJlc2l6ZWQgb3V0IG9mIHVwbG9hZCBmb2xkZXIgZm9yIHVzZSB3aXRoIGV4dGVybmFsIHNjcmlwdCB5b3UgY2FuIGNob29zZSB0aGlzIG1ldGhvZCwKCS8vIFlvdSBjYW4gY3JlYXRlIGFsc28gbW9yZSB0aGFuIG9uZSBpbWFnZSBhdCBhIHRpbWUganVzdCBzaW1wbHkgYWRkIGEgdmFsdWUgaW4gdGhlIGFycmF5CgkvLyBSZW1lbWJlciB0aGFuIHRoZSBpbWFnZSBjcmVhdGlvbiByZXNwZWN0IHRoZSBmb2xkZXIgaGllcmFyY2h5IHNvIGlmIHlvdSBhcmUgaW5zaWRlIHNvdXJjZS90ZXN0L3Rlc3QxLyB0aGUgbmV3IGltYWdlIHdpbGwgY3JlYXRlIGF0CgkvLyBwYXRoX2Zyb21fZmlsZW1hbmFnZXIvdGVzdC90ZXN0MS8KCS8vIFBTIGlmIHRoZXJlIGlzbid0IHdyaXRlIHBlcm1pc3Npb24gaW4geW91ciBkZXN0aW5hdGlvbiBmb2xkZXIgeW91IG11c3Qgc2V0IGl0CgkvLwoJJ2ZpeGVkX2ltYWdlX2NyZWF0aW9uJyAgICAgICAgICAgICAgICAgICAgPT4gZmFsc2UsIC8vYWN0aXZhdGUgb3Igbm90IHRoZSBjcmVhdGlvbiBvZiBvbmUgb3IgbW9yZSBpbWFnZSByZXNpemVkIHdpdGggZml4ZWQgcGF0aCBmcm9tIGZpbGVtYW5hZ2VyIGZvbGRlcgoJJ2ZpeGVkX3BhdGhfZnJvbV9maWxlbWFuYWdlcicgICAgICAgICAgICAgPT4gYXJyYXkoICcuLi90ZXN0LycsICcuLi90ZXN0MS8nICksIC8vZml4ZWQgcGF0aCBvZiB0aGUgaW1hZ2UgZm9sZGVyIGZyb20gdGhlIGN1cnJlbnQgcG9zaXRpb24gb24gdXBsb2FkIGZvbGRlcgoJJ2ZpeGVkX2ltYWdlX2NyZWF0aW9uX25hbWVfdG9fcHJlcGVuZCcgICAgPT4gYXJyYXkoICcnLCAndGVzdF8nICksIC8vbmFtZSB0byBwcmVwZW5kIG9uIGZpbGVuYW1lCgknZml4ZWRfaW1hZ2VfY3JlYXRpb25fdG9fYXBwZW5kJyAgICAgICAgICA9PiBhcnJheSggJ190ZXN0JywgJycgKSwgLy9uYW1lIHRvIGFwcGVuZG9uIGZpbGVuYW1lCgknZml4ZWRfaW1hZ2VfY3JlYXRpb25fd2lkdGgnICAgICAgICAgICAgICA9PiBhcnJheSggMzAwLCA0MDAgKSwgLy93aWR0aCBvZiBpbWFnZSAoeW91IGNhbiBsZWF2ZSBlbXB0eSBpZiB5b3Ugc2V0IGhlaWdodCkKCSdmaXhlZF9pbWFnZV9jcmVhdGlvbl9oZWlnaHQnICAgICAgICAgICAgID0+IGFycmF5KCAyMDAsICcnICksIC8vaGVpZ2h0IG9mIGltYWdlICh5b3UgY2FuIGxlYXZlIGVtcHR5IGlmIHlvdSBzZXQgd2lkdGgpCgkvKgoJIyAgICAgICAgICAgICAkb3B0aW9uOiAgICAgMCAvIGV4YWN0ID0gZGVmaW5lZCBzaXplOwoJIyAgICAgICAgICAgICAgICAgICAgICAgICAgMSAvIHBvcnRyYWl0ID0ga2VlcCBhc3BlY3Qgc2V0IGhlaWdodDsKCSMgICAgICAgICAgICAgICAgICAgICAgICAgIDIgLyBsYW5kc2NhcGUgPSBrZWVwIGFzcGVjdCBzZXQgd2lkdGg7CgkjICAgICAgICAgICAgICAgICAgICAgICAgICAzIC8gYXV0byA9IGF1dG87CgkjICAgICAgICAgICAgICAgICAgICAgICAgICA0IC8gY3JvcD0gcmVzaXplIGFuZCBjcm9wOwoJICovCgknZml4ZWRfaW1hZ2VfY3JlYXRpb25fb3B0aW9uJyAgICAgICAgICAgICA9PiBhcnJheSggJ2Nyb3AnLCAnYXV0bycgKSwgLy9zZXQgdGhlIHR5cGUgb2YgdGhlIGNyb3AKCgoJLy8gTmV3IGltYWdlIHJlc2l6ZWQgY3JlYXRpb24gd2l0aCByZWxhdGl2ZSBwYXRoIGluc2lkZSB0byB1cGxvYWQgZm9sZGVyIGFmdGVyIHVwbG9hZGluZyAodGh1bWJuYWlscyBpbiByZWxhdGl2ZSBtb2RlKQoJLy8gV2l0aCBSZXNwb25zaXZlIGZpbGVtYW5hZ2VyIHlvdSBjYW4gY3JlYXRlIGF1dG9tYXRpY2FsbHkgcmVzaXplZCBpbWFnZSBpbnNpZGUgdGhlIHVwbG9hZCBmb2xkZXIsIGFsc28gbW9yZSB0aGFuIG9uZSBhdCBhIHRpbWUKCS8vIGp1c3Qgc2ltcGx5IGFkZCBhIHZhbHVlIGluIHRoZSBhcnJheQoJLy8gVGhlIGltYWdlIGNyZWF0aW9uIHBhdGggaXMgYWx3YXlzIHJlbGF0aXZlIHNvIGlmIGknbSBpbnNpZGUgc291cmNlL3Rlc3QvdGVzdDEgYW5kIEkgdXBsb2FkIGFuIGltYWdlLCB0aGUgcGF0aCBzdGFydCBmcm9tIGhlcmUKCS8vCgkncmVsYXRpdmVfaW1hZ2VfY3JlYXRpb24nICAgICAgICAgICAgICAgICA9PiBmYWxzZSwgLy9hY3RpdmF0ZSBvciBub3QgdGhlIGNyZWF0aW9uIG9mIG9uZSBvciBtb3JlIGltYWdlIHJlc2l6ZWQgd2l0aCByZWxhdGl2ZSBwYXRoIGZyb20gdXBsb2FkIGZvbGRlcgoJJ3JlbGF0aXZlX3BhdGhfZnJvbV9jdXJyZW50X3BvcycgICAgICAgICAgPT4gYXJyYXkoICcuLycsICcuLycgKSwgLy9yZWxhdGl2ZSBwYXRoIG9mIHRoZSBpbWFnZSBmb2xkZXIgZnJvbSB0aGUgY3VycmVudCBwb3NpdGlvbiBvbiB1cGxvYWQgZm9sZGVyCgkncmVsYXRpdmVfaW1hZ2VfY3JlYXRpb25fbmFtZV90b19wcmVwZW5kJyA9PiBhcnJheSggJycsICcnICksIC8vbmFtZSB0byBwcmVwZW5kIG9uIGZpbGVuYW1lCgkncmVsYXRpdmVfaW1hZ2VfY3JlYXRpb25fbmFtZV90b19hcHBlbmQnICA9PiBhcnJheSggJ190aHVtYicsICdfdGh1bWIxJyApLCAvL25hbWUgdG8gYXBwZW5kIG9uIGZpbGVuYW1lCgkncmVsYXRpdmVfaW1hZ2VfY3JlYXRpb25fd2lkdGgnICAgICAgICAgICA9PiBhcnJheSggMzAwLCA0MDAgKSwgLy93aWR0aCBvZiBpbWFnZSAoeW91IGNhbiBsZWF2ZSBlbXB0eSBpZiB5b3Ugc2V0IGhlaWdodCkKCSdyZWxhdGl2ZV9pbWFnZV9jcmVhdGlvbl9oZWlnaHQnICAgICAgICAgID0+IGFycmF5KCAyMDAsICcnICksIC8vaGVpZ2h0IG9mIGltYWdlICh5b3UgY2FuIGxlYXZlIGVtcHR5IGlmIHlvdSBzZXQgd2lkdGgpCgkvKgoJIyAgICAgICAgICAgICAkb3B0aW9uOiAgICAgMCAvIGV4YWN0ID0gZGVmaW5lZCBzaXplOwoJIyAgICAgICAgICAgICAgICAgICAgICAgICAgMSAvIHBvcnRyYWl0ID0ga2VlcCBhc3BlY3Qgc2V0IGhlaWdodDsKCSMgICAgICAgICAgICAgICAgICAgICAgICAgIDIgLyBsYW5kc2NhcGUgPSBrZWVwIGFzcGVjdCBzZXQgd2lkdGg7CgkjICAgICAgICAgICAgICAgICAgICAgICAgICAzIC8gYXV0byA9IGF1dG87CgkjICAgICAgICAgICAgICAgICAgICAgICAgICA0IC8gY3JvcD0gcmVzaXplIGFuZCBjcm9wOwoJICovCgkncmVsYXRpdmVfaW1hZ2VfY3JlYXRpb25fb3B0aW9uJyAgICAgICAgICA9PiBhcnJheSggJ2Nyb3AnLCAnY3JvcCcgKSwgLy9zZXQgdGhlIHR5cGUgb2YgdGhlIGNyb3AKCgoJLy8gUmVtZW1iZXIgdGV4dCBmaWx0ZXIgYWZ0ZXIgY2xvc2UgZmlsZW1hbmFnZXIgZm9yIGZ1dHVyZSBzZXNzaW9uCgkncmVtZW1iZXJfdGV4dF9maWx0ZXInICAgICAgICAgICAgICAgICAgICA9PiBmYWxzZSwKCik7CgoKCgoKCi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgovLyBDTVNNUyBTcGVjaWZpYyA6IGluY2x1ZGUgdGhlIGxpYnMsIGFuZCB0aGVuIHNlZSBpZiB0aGUgY3VycmVudCB1c2VycyBwcm9maWxlIGNhbiB1c2UgdGhlIGZpbGUgbWFuYWdlcgokRE9OVF9MT0FEX1NNQVJUWSA9IHRydWU7CiRDTVNfQURNSU5fUEFHRT0xOwoKLy8gUmVxdWlyZSB3b250IHdvcmsgaW4gamF2YSB1cGxvYWQgZGlhbG9nIGJlY2F1c2UgaXQgaXMgY2FsbGVkIGZyb20gYSBzdWJkaXJlY3RvcnkKaWYgKGJhc2VuYW1lKCRfU0VSVkVSWyJTQ1JJUFRfRklMRU5BTUUiXSkgIT0gJ2luZGV4LnBocCcpIC8vIGluZGV4LnBocCA9IHVwbG9hZGVyL2luZGV4LnBocAoJcmVxdWlyZV9vbmNlKCcuLi8uLi8uLi8uLi9saWIvaW5jbHVkZS5waHAnKTsKZWxzZQpyZXF1aXJlX29uY2UoJy4uLy4uLy4uLy4uLy4uL2xpYi9pbmNsdWRlLnBocCcpOwoKaWYoIGlzc2V0KCRfU0VTU0lPTltDTVNfVVNFUl9LRVldKSAmJiAhaXNzZXQoJF9HRVRbQ01TX1NFQ1VSRV9QQVJBTV9OQU1FXSkgKSB7CiAgJF9HRVRbQ01TX1NFQ1VSRV9QQVJBTV9OQU1FXSA9ICRfU0VTU0lPTltDTVNfVVNFUl9LRVldOwp9CgovLyBUcnVlID0gbm8gcmVkaXJlY3QKaWYgKCFjaGVja19sb2dpbih0cnVlKSkKCWRpZSgpOwoKJG1vZCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnVGlueU1DRScpOwokcHJvZmlsZSA9IHRpbnltY2VfdXRpbHM6OmdldF9iZXN0X3Byb2ZpbGUoKTsKJGNhbl91c2VfZmlsZW1hbmFnZXIgPSB0aW55bWNlX3V0aWxzOjpjYW5fdXNlcl91c2VfZmlsZW1hbmFnZXIoJHByb2ZpbGUpOwoKCmlmICghJGNhbl91c2VfZmlsZW1hbmFnZXIpCglkaWUoJ0FjY2VzcyBEZW5pZWQhJyk7CmVsc2UKewoJLy8gTG9hZCB0aGUgY29uZmlnCgkkZmlsZW1hbmFnZXJfY29uZmlnID0gJHByb2ZpbGUtPmdldF9maWxlbWFuYWdlcl9jb25maWcoJGZpbGVtYW5hZ2VyX2NvbmZpZyk7Cn0KLy8gRU5EIENNU01TIFNQRUNJRklDIENPREUKLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgoKCgoKcmV0dXJuIGFycmF5X21lcmdlKAoJJGZpbGVtYW5hZ2VyX2NvbmZpZywKCWFycmF5KAoJCSdNYXhTaXplVXBsb2FkJyA9PiAoKGludCkoaW5pX2dldCgncG9zdF9tYXhfc2l6ZScpKSA8ICRmaWxlbWFuYWdlcl9jb25maWdbJ01heFNpemVVcGxvYWQnXSkKCQkJPyAoaW50KShpbmlfZ2V0KCdwb3N0X21heF9zaXplJykpIDogJGZpbGVtYW5hZ2VyX2NvbmZpZ1snTWF4U2l6ZVVwbG9hZCddLAoJCSdleHQnPT4gYXJyYXlfbWVyZ2UoCgkJCSRmaWxlbWFuYWdlcl9jb25maWdbJ2V4dF9pbWcnXSwKCQkJJGZpbGVtYW5hZ2VyX2NvbmZpZ1snZXh0X2ZpbGUnXSwKCQkJJGZpbGVtYW5hZ2VyX2NvbmZpZ1snZXh0X21pc2MnXSwKCQkJJGZpbGVtYW5hZ2VyX2NvbmZpZ1snZXh0X3ZpZGVvJ10sCgkJCSRmaWxlbWFuYWdlcl9jb25maWdbJ2V4dF9tdXNpYyddCgkJKSwKCQkvLyBGb3IgYSBsaXN0IG9mIG9wdGlvbnMgc2VlOiBodHRwczovL2RldmVsb3BlcnMuYXZpYXJ5LmNvbS9kb2NzL3dlYi9zZXR1cC1ndWlkZSNjb25zdHJ1Y3Rvci1jb25maWcKCQknYXZpYXJ5X2RlZmF1bHRzX2NvbmZpZycgPT4gYXJyYXkoCgkJCSdhcGlLZXknICAgICA9PiAkZmlsZW1hbmFnZXJfY29uZmlnWydhdmlhcnlfYXBpS2V5J10sCgkJCSdsYW5ndWFnZScgICA9PiAkZmlsZW1hbmFnZXJfY29uZmlnWydhdmlhcnlfbGFuZ3VhZ2UnXSwKCQkJJ3RoZW1lJyAgICAgID0+ICRmaWxlbWFuYWdlcl9jb25maWdbJ2F2aWFyeV90aGVtZSddLAoJCQkndG9vbHMnICAgICAgPT4gJGZpbGVtYW5hZ2VyX2NvbmZpZ1snYXZpYXJ5X3Rvb2xzJ10sCgkJCSdtYXhTaXplJyAgICA9PiAkZmlsZW1hbmFnZXJfY29uZmlnWydhdmlhcnlfbWF4U2l6ZSddCgkJKQoJKQopOwo=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/css/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/css/jquery.fileupload-noscript.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgIlVURi04IjsKLyoKICogalF1ZXJ5IEZpbGUgVXBsb2FkIFBsdWdpbiBOb1NjcmlwdCBDU1MKICogaHR0cHM6Ly9naXRodWIuY29tL2JsdWVpbXAvalF1ZXJ5LUZpbGUtVXBsb2FkCiAqCiAqIENvcHlyaWdodCAyMDEzLCBTZWJhc3RpYW4gVHNjaGFuCiAqIGh0dHBzOi8vYmx1ZWltcC5uZXQKICoKICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlOgogKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVAogKi8KCi5maWxlaW5wdXQtYnV0dG9uIGlucHV0IHsKICBwb3NpdGlvbjogc3RhdGljOwogIG9wYWNpdHk6IDE7CiAgZmlsdGVyOiBub25lOwogIGZvbnQtc2l6ZTogaW5oZXJpdCAhaW1wb3J0YW50OwogIGRpcmVjdGlvbjogaW5oZXJpdDsKfQouZmlsZWlucHV0LWJ1dHRvbiBzcGFuIHsKICBkaXNwbGF5OiBub25lOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/css/jquery.fileupload-ui-noscript.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgIlVURi04IjsKLyoKICogalF1ZXJ5IEZpbGUgVXBsb2FkIFVJIFBsdWdpbiBOb1NjcmlwdCBDU1MKICogaHR0cHM6Ly9naXRodWIuY29tL2JsdWVpbXAvalF1ZXJ5LUZpbGUtVXBsb2FkCiAqCiAqIENvcHlyaWdodCAyMDEyLCBTZWJhc3RpYW4gVHNjaGFuCiAqIGh0dHBzOi8vYmx1ZWltcC5uZXQKICoKICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlOgogKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVAogKi8KCi5maWxlaW5wdXQtYnV0dG9uIGksCi5maWxldXBsb2FkLWJ1dHRvbmJhciAuZGVsZXRlLAouZmlsZXVwbG9hZC1idXR0b25iYXIgLnRvZ2dsZSB7CiAgZGlzcGxheTogbm9uZTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/css/jquery.fileupload-ui.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgIlVURi04IjsKLyoKICogalF1ZXJ5IEZpbGUgVXBsb2FkIFVJIFBsdWdpbiBDU1MKICogaHR0cHM6Ly9naXRodWIuY29tL2JsdWVpbXAvalF1ZXJ5LUZpbGUtVXBsb2FkCiAqCiAqIENvcHlyaWdodCAyMDEwLCBTZWJhc3RpYW4gVHNjaGFuCiAqIGh0dHBzOi8vYmx1ZWltcC5uZXQKICoKICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlOgogKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVAogKi8KCi5maWxldXBsb2FkLWJ1dHRvbmJhciAuYnRuLAouZmlsZXVwbG9hZC1idXR0b25iYXIgLnRvZ2dsZSB7CiAgbWFyZ2luLWJvdHRvbTogNXB4Owp9CgouZmlsZXVwbG9hZC1wcm9jZXNzIHsKICBmbG9hdDogcmlnaHQ7CiAgZGlzcGxheTogbm9uZTsKfQouZmlsZXVwbG9hZC1wcm9jZXNzaW5nIC5maWxldXBsb2FkLXByb2Nlc3MsCi5maWxlcyAucHJvY2Vzc2luZyAucHJldmlldyB7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDMycHg7CiAgaGVpZ2h0OiAzMnB4OwogIGJhY2tncm91bmQ6IHVybCgiLi4vaW1nL2xvYWRpbmcuZ2lmIikgY2VudGVyIG5vLXJlcGVhdDsKICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47Cn0KLmZpbGVzIGF1ZGlvLAouZmlsZXMgdmlkZW8gewogIG1heC13aWR0aDogMzAwcHg7Cn0KCkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkgewogIC5maWxldXBsb2FkLWJ1dHRvbmJhciAudG9nZ2xlLAogIC5maWxlcyAudG9nZ2xlLAogIC5maWxlcyAuYnRuIHNwYW4gewogICAgZGlzcGxheTogbm9uZTsKICB9CiAgLmZpbGVzIC5uYW1lIHsKICAgIHdpZHRoOiA4MHB4OwogICAgd29yZC13cmFwOiBicmVhay13b3JkOwogIH0KICAuZmlsZXMgYXVkaW8sCiAgLmZpbGVzIHZpZGVvIHsKICAgIG1heC13aWR0aDogODBweDsKICB9CiAgLmZpbGVzIGltZywKICAuZmlsZXMgY2FudmFzIHsKICAgIG1heC13aWR0aDogMTAwJTsKICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/css/jquery.fileupload.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgIlVURi04IjsKLyoKICogalF1ZXJ5IEZpbGUgVXBsb2FkIFBsdWdpbiBDU1MKICogaHR0cHM6Ly9naXRodWIuY29tL2JsdWVpbXAvalF1ZXJ5LUZpbGUtVXBsb2FkCiAqCiAqIENvcHlyaWdodCAyMDEzLCBTZWJhc3RpYW4gVHNjaGFuCiAqIGh0dHBzOi8vYmx1ZWltcC5uZXQKICoKICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlOgogKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVAogKi8KCi5maWxlaW5wdXQtYnV0dG9uIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cn0KLmZpbGVpbnB1dC1idXR0b24gaW5wdXQgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDA7CiAgcmlnaHQ6IDA7CiAgbWFyZ2luOiAwOwogIG9wYWNpdHk6IDA7CiAgLW1zLWZpbHRlcjogJ2FscGhhKG9wYWNpdHk9MCknOwogIGZvbnQtc2l6ZTogMjAwcHggIWltcG9ydGFudDsKICBkaXJlY3Rpb246IGx0cjsKICBjdXJzb3I6IHBvaW50ZXI7Cn0KCi8qIEZpeGVzIGZvciBJRSA8IDggKi8KQG1lZGlhIHNjcmVlblw5IHsKICAuZmlsZWlucHV0LWJ1dHRvbiBpbnB1dCB7CiAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7CiAgICBmb250LXNpemU6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/css/rtl-style.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[//4vACoAIABSAFQATAAgACoALwANAAoAYgBvAGQAeQAuAG4AbwAtAHQAbwB1AGMAaAAgAHsADQAKACAAIAAgACAAZgBvAG4AdAAtAGYAYQBtAGkAbAB5ADoAIABOAHUAYgBtAGUAcgAsACAAWQBlAGsAYQBuACwAIAAiAE8AcABlAG4AIABTAGEAbgBzACIALAAgAFQAYQBoAG8AbQBhADsADQAKAH0ADQAKAC4AYwBvAG4AdABhAGkAbgBlAHIALQBmAGwAdQBpAGQALAAuAHUAcABsAG8AYQBkAGUAcgAsAC4AcgBvAHcALQBmAGwAdQBpAGQALABpAG4AcAB1AHQAIAB7AGQAaQByAGUAYwB0AGkAbwBuADoAIAByAHQAbAA7AH0ADQAKAC4AcgBvAHcALQBmAGwAdQBpAGQAIABbAGMAbABhAHMAcwAqAD0AcwBwAGEAbgBdACAAewANAAoAIAAgACAAIAB0AGUAeAB0AC0AYQBsAGkAZwBuADoAIABsAGUAZgB0ADsADQAKAH0ADQAKADoAOgAtAHcAZQBiAGsAaQB0AC0AaQBuAHAAdQB0AC0AcABsAGEAYwBlAGgAbwBsAGQAZQByACAAewAgAC8AKgAgAEMAaAByAG8AbQBlAC8ATwBwAGUAcgBhAC8AUwBhAGYAYQByAGkAIAAqAC8ADQAKACAAIAAgACAAZgBvAG4AdAAtAGYAYQBtAGkAbAB5ADoAIABOAHUAYgBtAGUAcgAsACAAWQBlAGsAYQBuACwAIAAiAE8AcABlAG4AIABTAGEAbgBzACIALAAgAFQAYQBoAG8AbQBhADsADQAKAH0ADQAKADoAOgAtAG0AbwB6AC0AcABsAGEAYwBlAGgAbwBsAGQAZQByACAAewAgAC8AKgAgAEYAaQByAGUAZgBvAHgAIAAxADkAKwAgACoALwANAAoAIAAgACAAIABmAG8AbgB0AC0AZgBhAG0AaQBsAHkAOgAgAE4AdQBiAG0AZQByACwAIABZAGUAawBhAG4ALAAgACIATwBwAGUAbgAgAFMAYQBuAHMAIgAsACAAVABhAGgAbwBtAGEAOwANAAoAfQANAAoAOgAtAG0AcwAtAGkAbgBwAHUAdAAtAHAAbABhAGMAZQBoAG8AbABkAGUAcgAgAHsAIAAvACoAIABJAEUAIAAxADAAKwAgACoALwANAAoAIAAgACAAIABmAG8AbgB0AC0AZgBhAG0AaQBsAHkAOgAgAE4AdQBiAG0AZQByACwAIABZAGUAawBhAG4ALAAgACIATwBwAGUAbgAgAFMAYQBuAHMAIgAsACAAVABhAGgAbwBtAGEAOwANAAoAfQANAAoAOgAtAG0AbwB6AC0AcABsAGEAYwBlAGgAbwBsAGQAZQByACAAewAgAC8AKgAgAEYAaQByAGUAZgBvAHgAIAAxADgALQAgACoALwANAAoAIAAgACAAIABmAG8AbgB0AC0AZgBhAG0AaQBsAHkAOgAgAE4AdQBiAG0AZQByACwAIABZAGUAawBhAG4ALAAgACIATwBwAGUAbgAgAFMAYQBuAHMAIgAsACAAVABhAGgAbwBtAGEAOwANAAoAfQANAAoAYgB1AHQAdABvAG4ALAAgAGkAbgBwAHUAdAAsACAAcwBlAGwAZQBjAHQALAAgAHQAZQB4AHQAYQByAGUAYQAgAHsADQAKACAAIAAgACAAZgBvAG4AdAAtAGYAYQBtAGkAbAB5ADoAIABOAHUAYgBtAGUAcgAsACAAWQBlAGsAYQBuACwAIAAiAE8AcABlAG4AIABTAGEAbgBzACIALAAgAFQAYQBoAG8AbQBhADsADQAKAH0ADQAKAC4AZgBpAGwAdABlAHIAcwAgAC4AdAB5AHAAZQBzACAAewANAAoAIAAgACAAIAB0AGUAeAB0AC0AYQBsAGkAZwBuADoAIAByAGkAZwBoAHQAIAAhAGkAbQBwAG8AcgB0AGEAbgB0ADsADQAKAH0ADQAKAC4AcAB1AGwAbAAtAHIAaQBnAGgAdAAgAHsADQAKACAAIAAgACAAZgBsAG8AYQB0ADoAIABsAGUAZgB0ADsADQAKAH0ADQAKAC4AcAB1AGwAbAAtAGwAZQBmAHQAIAB7AA0ACgAgACAAIAAgAGYAbABvAGEAdAA6ACAAcgBpAGcAaAB0ADsADQAKAH0ADQAKAC4AcwBvAHIAdABlAHIALQBjAG8AbgB0AGEAaQBuAGUAcgAgAC4AZgBpAGwAZQAtAGQAYQB0AGUALAANAAoALgBzAG8AcgB0AGUAcgAtAGMAbwBuAHQAYQBpAG4AZQByACAALgBmAGkAbABlAC0AZQB4AHQAZQBuAHMAaQBvAG4ALAANAAoALgBzAG8AcgB0AGUAcgAtAGMAbwBuAHQAYQBpAG4AZQByACAALgBmAGkAbABlAC0AbgBhAG0AZQAsAA0ACgAuAHMAbwByAHQAZQByAC0AYwBvAG4AdABhAGkAbgBlAHIAIAAuAGYAaQBsAGUALQBvAHAAZQByAGEAdABpAG8AbgBzACwADQAKAC4AcwBvAHIAdABlAHIALQBjAG8AbgB0AGEAaQBuAGUAcgAgAC4AZgBpAGwAZQAtAHMAaQB6AGUALAANAAoALgBzAG8AcgB0AGUAcgAtAGMAbwBuAHQAYQBpAG4AZQByACAALgBpAG0AZwAtAGQAaQBtAGUAbgBzAGkAbwBuACAAewANAAoAIAAgACAAIAB0AGUAeAB0AC0AYQBsAGkAZwBuADoAIAByAGkAZwBoAHQAOwANAAoAfQANAAoALgBzAG8AcgB0AGUAcgAtAGMAbwBuAHQAYQBpAG4AZQByACAALgBmAGkAbABlAC0AbgBhAG0AZQAgAHsADQAKACAAIAAgACAAdwBpAGQAdABoADoAIAA1ADAAcAB4ADsADQAKACAAIAAgACAAbABlAGYAdAA6ACAAYQB1AHQAbwA7AA0ACgAgACAAIAAgAHIAaQBnAGgAdAA6ACAANQAyAHAAeAA7AA0ACgB9AA0ACgAuAHMAbwByAHQAZQByAC0AYwBvAG4AdABhAGkAbgBlAHIAIAAuAGYAaQBsAGUALQBkAGEAdABlACAAewANAAoAIAAgACAAIAB3AGkAZAB0AGgAOgAgADcAMABwAHgAOwANAAoAIAAgACAAIAByAGkAZwBoAHQAOgAgAGEAdQB0AG8AOwANAAoAIAAgACAAIABsAGUAZgB0ADoAIAAxADgAOABwAHgAOwANAAoAfQANAAoALgBzAG8AcgB0AGUAcgAtAGMAbwBuAHQAYQBpAG4AZQByACAALgBmAGkAbABlAC0AcwBpAHoAZQAgAHsADQAKACAAIAAgACAAdwBpAGQAdABoADoAIAA1ADUAcAB4ADsADQAKACAAIAAgACAAcgBpAGcAaAB0ADoAIABhAHUAdABvADsADQAKACAAIAAgACAAbABlAGYAdAA6ACAAMgA1ADgAcAB4ADsADQAKAH0ADQAKAC4AcwBvAHIAdABlAHIALQBjAG8AbgB0AGEAaQBuAGUAcgAgAC4AaQBtAGcALQBkAGkAbQBlAG4AcwBpAG8AbgAgAHsADQAKACAAIAAgACAAdwBpAGQAdABoADoAIAA2ADUAcAB4ADsADQAKACAAIAAgACAAcgBpAGcAaAB0ADoAIABhAHUAdABvADsADQAKACAAIAAgACAAbABlAGYAdAA6ACAAMQAyADMAcAB4ADsADQAKAH0ADQAKAC4AcwBvAHIAdABlAHIALQBjAG8AbgB0AGEAaQBuAGUAcgAgAC4AZgBpAGwAZQAtAGUAeAB0AGUAbgBzAGkAbwBuACAAewANAAoAIAAgACAAIAB3AGkAZAB0AGgAOgAgADQAMABwAHgAOwANAAoAIAAgACAAIAByAGkAZwBoAHQAOgAgAGEAdQB0AG8AOwANAAoAIAAgACAAIABsAGUAZgB0ADoAIAAzADEAMwBwAHgAOwANAAoAfQANAAoALgBzAG8AcgB0AGUAcgAtAGMAbwBuAHQAYQBpAG4AZQByACAALgBmAGkAbABlAC0AbwBwAGUAcgBhAHQAaQBvAG4AcwAgAHsADQAKACAAIAAgACAAdwBpAGQAdABoADoAIAAxADEAMABwAHgAOwANAAoAIAAgACAAIAByAGkAZwBoAHQAOgAgAGEAdQB0AG8AOwANAAoAIAAgACAAIABsAGUAZgB0ADoAIAAwADsADQAKAH0ADQAKAC4AbABpAHMAdAAtAHYAaQBlAHcAMQAuAGcAcgBpAGQAIAAuAGYAaQBsAGUALQBkAGEAdABlACwAIAAuAGwAaQBzAHQALQB2AGkAZQB3ADEALgBnAHIAaQBkACAALgBmAGkAbABlAC0AZQB4AHQAZQBuAHMAaQBvAG4ALAAgAC4AbABpAHMAdAAtAHYAaQBlAHcAMQAuAGcAcgBpAGQAIAAuAGYAaQBsAGUALQBzAGkAegBlACwAIAAuAGwAaQBzAHQALQB2AGkAZQB3ADEALgBnAHIAaQBkACAALgBpAG0AZwAtAGQAaQBtAGUAbgBzAGkAbwBuACAAewANAAoAIAAgACAAIAB0AGUAeAB0AC0AYQBsAGkAZwBuADoAIAByAGkAZwBoAHQAOwANAAoAfQANAAoALgBsAGkAcwB0AC0AdgBpAGUAdwAxAC4AZwByAGkAZAAgAGwAaQAgAGYAaQBnAHUAcgBlACAALgBiAG8AeAAsACAALgBsAGkAcwB0AC0AdgBpAGUAdwAyAC4AZwByAGkAZAAgAGwAaQAgAGYAaQBnAHUAcgBlACAALgBiAG8AeAAgAHsADQAKACAAIAAgACAAbQBhAHIAZwBpAG4ALQBsAGUAZgB0ADoAIAAwADsADQAKACAAIAAgACAAbQBhAHIAZwBpAG4ALQByAGkAZwBoAHQAOgAgADUAMABwAHgAOwANAAoAfQANAAoALgBsAGkAcwB0AC0AdgBpAGUAdwAxAC4AZwByAGkAZAAgAGYAaQBnAHUAcgBlACAALgBiAG8AeAAgAHsADQAKACAAIAAgACAAcABhAGQAZABpAG4AZwAtAHIAaQBnAGgAdAA6ACAAMAA7AA0ACgAgACAAIAAgAHAAYQBkAGQAaQBuAGcALQBsAGUAZgB0ADoAIAAzADUAMgBwAHgAOwANAAoAfQANAAoALgBsAGkAcwB0AC0AdgBpAGUAdwAxAC4AZwByAGkAZAAgAGwAaQAgAGYAaQBnAHUAcgBlACAALgBiAG8AeAAgAGgANAAsACAALgBsAGkAcwB0AC0AdgBpAGUAdwAyAC4AZwByAGkAZAAgAGwAaQAgAGYAaQBnAHUAcgBlACAALgBiAG8AeAAgAGgANAAgAHsADQAKACAAIAAgACAAcABhAGQAZABpAG4AZwAtAHQAbwBwADoAIAAxAHAAeAA7AA0ACgAgACAAIAAgAGYAbwBuAHQALQBzAGkAegBlADoAIAAxADMAcAB4ADsADQAKACAAIAAgACAAdABlAHgAdAAtAGEAbABpAGcAbgA6ACAAcgBpAGcAaAB0ADsADQAKAH0ADQAKAC4AbABpAHMAdAAtAHYAaQBlAHcAMQAuAGcAcgBpAGQAIABmAGkAZwBjAGEAcAB0AGkAbwBuACwAIAAuAGwAaQBzAHQALQB2AGkAZQB3ADIALgBnAHIAaQBkACAAZgBpAGcAYwBhAHAAdABpAG8AbgAgAHsADQAKACAAIAAgACAAcgBpAGcAaAB0ADoAIABhAHUAdABvADsADQAKACAAIAAgACAAbABlAGYAdAA6ACAAMAA7AA0ACgAgACAAIAAgAHQAZQB4AHQALQBhAGwAaQBnAG4AOgAgAGwAZQBmAHQAOwANAAoAfQANAAoALgBsAGkAcwB0AC0AdgBpAGUAdwAxAC4AZwByAGkAZAAgAC4AZgBpAGwAZQAtAGQAYQB0AGUAIAB7AA0ACgAgACAAIAAgAHcAaQBkAHQAaAA6ACAANwAwAHAAeAA7AA0ACgAgACAAIAAgAHIAaQBnAGgAdAA6ACAAYQB1AHQAbwA7AA0ACgAgACAAIAAgAGwAZQBmAHQAOgAgADEAOAA1AHAAeAA7AA0ACgB9AA0ACgAuAGwAaQBzAHQALQB2AGkAZQB3ADEALgBnAHIAaQBkACAALgBpAG0AZwAtAGQAaQBtAGUAbgBzAGkAbwBuACAAewANAAoAIAAgACAAIAB3AGkAZAB0AGgAOgAgADYANQBwAHgAOwANAAoAIAAgACAAIAByAGkAZwBoAHQAOgAgAGEAdQB0AG8AOwANAAoAIAAgACAAIABsAGUAZgB0ADoAIAAxADIAMABwAHgAOwANAAoAfQANAAoALgBsAGkAcwB0AC0AdgBpAGUAdwAxAC4AZwByAGkAZAAgAC4AZgBpAGwAZQAtAGUAeAB0AGUAbgBzAGkAbwBuACAAewANAAoAIAAgACAAIAB3AGkAZAB0AGgAOgAgADQAMABwAHgAOwANAAoAIAAgACAAIAByAGkAZwBoAHQAOgAgAGEAdQB0AG8AOwANAAoAIAAgACAAIABsAGUAZgB0ADoAIAAzADEAMABwAHgAOwANAAoAfQANAAoALgBsAGkAcwB0AC0AdgBpAGUAdwAxAC4AZwByAGkAZAAgAC4AZgBpAGwAZQAtAHMAaQB6AGUAIAB7AA0ACgAgACAAIAAgAHcAaQBkAHQAaAA6ACAANQA1AHAAeAA7AA0ACgAgACAAIAAgAHIAaQBnAGgAdAA6ACAAYQB1AHQAbwA7AA0ACgAgACAAIAAgAGwAZQBmAHQAOgAgADIANQA1AHAAeAA7AA0ACgB9AA0ACgAjAG0AYQBpAG4ALQBpAHQAZQBtAC0AYwBvAG4AdABhAGkAbgBlAHIAIAB7AHQAZQB4AHQALQBhAGwAaQBnAG4AOgAgAHIAaQBnAGgAdAA7AH0ADQAKAC4AbABpAHMAdAAtAHYAaQBlAHcAMgAuAGcAcgBpAGQAIABmAGkAZwB1AHIAZQAgAC4AYgBvAHgAIAB7AA0ACgAgACAAIAAgAHAAYQBkAGQAaQBuAGcALQBsAGUAZgB0ADoAIAAxADEANQBwAHgAOwANAAoAIAAgACAAIABwAGEAZABkAGkAbgBnAC0AcgBpAGcAaAB0ADoAIAAwADsADQAKAH0ADQAKAC4AbQBvAGQAYQBsAC0AcwBjAHIAbwBsAGwAYQBiAGwAZQAgAHsADQAKACAAIAAgACAAZABpAHIAZQBjAHQAaQBvAG4AOgAgAHIAdABsADsADQAKAH0ADQAKAC4AbQBvAGQAYQBsAC0AZgBvAG8AdABlAHIAIAAuAGIAdABuACsALgBiAHQAbgAgAHsADQAKACAAIAAgACAAbQBhAHIAZwBpAG4ALQBsAGUAZgB0ADoAIAAwADsADQAKACAAIAAgACAAbQBhAHIAZwBpAG4ALQByAGkAZwBoAHQAOgAgADUAcAB4ADsADQAKAH0ADQAKAC4AYwBsAG8AcwBlACAAewANAAoAIAAgACAAIABmAGwAbwBhAHQAOgAgAGwAZQBmAHQAOwANAAoAfQANAAoAdQBsAC4AcwBvAHIAdABpAG4AZwAgAHsADQAKACAAIAAgACAAcABhAGQAZABpAG4AZwA6ACAANQBwAHgAIAAxADAAcAB4ADsADQAKAH0ADQAKAC4AZAByAG8AcABkAG8AdwBuAC0AbQBlAG4AdQA+AGwAaQA+AGEAIAB7AA0ACgAgACAAIAAgAHAAYQBkAGQAaQBuAGcAOgAgADUAcAB4ACAAMABwAHgAOwANAAoAfQANAAoAdQBsAC4AcwBvAHIAdABpAG4AZwAuAGQAcgBvAHAAZABvAHcAbgAtAG0AZQBuAHUAPgBsAGkAPgBhAC4AZABlAHMAYwBlAG4AZABpAG4AZwAgAHsADQAKACAAIAAgACAAYgBhAGMAawBnAHIAbwB1AG4AZAAtAHAAbwBzAGkAdABpAG8AbgA6ACAAMABwAHgAIAAxADIAcAB4ADsADQAKAH0ADQAKAHUAbAAuAHMAbwByAHQAaQBuAGcALgBkAHIAbwBwAGQAbwB3AG4ALQBtAGUAbgB1AD4AbABpAD4AYQAuAGEAcwBjAGUAbgBkAGkAbgBnACAAewANAAoAIAAgACAAIABiAGEAYwBrAGcAcgBvAHUAbgBkAC0AcABvAHMAaQB0AGkAbwBuADoAIAAwAHAAeAAgADEAMgBwAHgAOwANAAoAfQA=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/css/style.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIEJvb3RzdHJhcCB2Mi4zLjIKICoKICogQ29weXJpZ2h0IDIwMTIgVHdpdHRlciwgSW5jCiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wCiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogKgogKiBEZXNpZ25lZCBhbmQgYnVpbHQgd2l0aCBhbGwgdGhlIGxvdmUgaW4gdGhlIHdvcmxkIEB0d2l0dGVyIGJ5IEBtZG8gYW5kIEBmYXQuCiAqL2FydGljbGUsYXNpZGUsZGV0YWlscyxmaWdjYXB0aW9uLGZpZ3VyZSxmb290ZXIsaGVhZGVyLGhncm91cCxuYXYsc2VjdGlvbntkaXNwbGF5OmJsb2NrfWF1ZGlvLGNhbnZhcyx2aWRlb3tkaXNwbGF5OmlubGluZS1ibG9jazsqZGlzcGxheTppbmxpbmU7Knpvb206MX1hdWRpbzpub3QoW2NvbnRyb2xzXSl7ZGlzcGxheTpub25lfWh0bWx7Zm9udC1zaXplOjEwMCU7LXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OjEwMCU7LW1zLXRleHQtc2l6ZS1hZGp1c3Q6MTAwJX1hOmZvY3Vze291dGxpbmU6dGhpbiBkb3R0ZWQgIzMzMztvdXRsaW5lOjVweCBhdXRvIC13ZWJraXQtZm9jdXMtcmluZy1jb2xvcjtvdXRsaW5lLW9mZnNldDotMnB4fWE6YWN0aXZlLGE6aG92ZXJ7b3V0bGluZTowfXN1YixzdXB7cG9zaXRpb246cmVsYXRpdmU7Zm9udC1zaXplOjc1JTtsaW5lLWhlaWdodDowO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lfXN1cHt0b3A6LS41ZW19c3Vie2JvdHRvbTotLjI1ZW19aW1ne3dpZHRoOmF1dG9cOTtoZWlnaHQ6YXV0bzttYXgtd2lkdGg6MTAwJTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Ym9yZGVyOjA7LW1zLWludGVycG9sYXRpb24tbW9kZTpiaWN1YmljfSNtYXBfY2FudmFzIGltZywuZ29vZ2xlLW1hcHMgaW1ne21heC13aWR0aDpub25lfWJ1dHRvbixpbnB1dCxzZWxlY3QsdGV4dGFyZWF7bWFyZ2luOjA7Zm9udC1zaXplOjEwMCU7dmVydGljYWwtYWxpZ246bWlkZGxlfWJ1dHRvbixpbnB1dHsqb3ZlcmZsb3c6dmlzaWJsZTtsaW5lLWhlaWdodDpub3JtYWx9YnV0dG9uOjotbW96LWZvY3VzLWlubmVyLGlucHV0OjotbW96LWZvY3VzLWlubmVye3BhZGRpbmc6MDtib3JkZXI6MH1idXR0b24saHRtbCBpbnB1dFt0eXBlPWJ1dHRvbl0saW5wdXRbdHlwZT1yZXNldF0saW5wdXRbdHlwZT1zdWJtaXRde2N1cnNvcjpwb2ludGVyOy13ZWJraXQtYXBwZWFyYW5jZTpidXR0b259YnV0dG9uLGlucHV0W3R5cGU9YnV0dG9uXSxpbnB1dFt0eXBlPWNoZWNrYm94XSxpbnB1dFt0eXBlPXJhZGlvXSxpbnB1dFt0eXBlPXJlc2V0XSxpbnB1dFt0eXBlPXN1Ym1pdF0sbGFiZWwsc2VsZWN0e2N1cnNvcjpwb2ludGVyfWlucHV0W3R5cGU9c2VhcmNoXXtib3gtc2l6aW5nOmNvbnRlbnQtYm94Oy13ZWJraXQtYXBwZWFyYW5jZTp0ZXh0ZmllbGR9aW5wdXRbdHlwZT1zZWFyY2hdOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLGlucHV0W3R5cGU9c2VhcmNoXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX10ZXh0YXJlYXtvdmVyZmxvdzphdXRvO3ZlcnRpY2FsLWFsaWduOnRvcH1AbWVkaWEgcHJpbnR7Kntjb2xvcjojMDAwIWltcG9ydGFudDt0ZXh0LXNoYWRvdzpub25lIWltcG9ydGFudDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50IWltcG9ydGFudDtib3gtc2hhZG93Om5vbmUhaW1wb3J0YW50fWEsYTp2aXNpdGVke3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9YVtocmVmXTphZnRlcntjb250ZW50OiIgKCIgYXR0cihocmVmKSAiKSJ9YWJiclt0aXRsZV06YWZ0ZXJ7Y29udGVudDoiICgiIGF0dHIodGl0bGUpICIpIn0uaXIgYTphZnRlcixhW2hyZWZePSIjIl06YWZ0ZXIsYVtocmVmXj0iamF2YXNjcmlwdDoiXTphZnRlcntjb250ZW50OiIifWJsb2NrcXVvdGUscHJle2JvcmRlcjoxcHggc29saWQgIzk5OTtwYWdlLWJyZWFrLWluc2lkZTphdm9pZH10aGVhZHtkaXNwbGF5OnRhYmxlLWhlYWRlci1ncm91cH1pbWcsdHJ7cGFnZS1icmVhay1pbnNpZGU6YXZvaWR9aW1ne21heC13aWR0aDoxMDAlIWltcG9ydGFudH1AcGFnZXttYXJnaW46LjVjbX1oMixoMyxwe29ycGhhbnM6Mzt3aWRvd3M6M31oMixoM3twYWdlLWJyZWFrLWFmdGVyOmF2b2lkfX1ib2R5e21hcmdpbjowO2ZvbnQtZmFtaWx5OkhlbHZldGljYSBOZXVlLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjIwcHg7Y29sb3I6IzMzMztiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9YXtjb2xvcjojMDhjO3RleHQtZGVjb3JhdGlvbjpub25lfWE6Zm9jdXMsYTpob3Zlcntjb2xvcjojMDA1NTgwO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9LmltZy1yb3VuZGVke2JvcmRlci1yYWRpdXM6NnB4fS5pbWctcG9sYXJvaWR7cGFkZGluZzo0cHg7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgI2NjYztib3JkZXI6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjIpO2JveC1zaGFkb3c6MCAxcHggM3B4IHJnYmEoMCwwLDAsLjEpfS5pbWctY2lyY2xle2JvcmRlci1yYWRpdXM6NTAwcHh9LnJvd3ttYXJnaW4tbGVmdDotMjBweDsqem9vbToxfS5yb3c6YWZ0ZXIsLnJvdzpiZWZvcmV7ZGlzcGxheTp0YWJsZTtsaW5lLWhlaWdodDowO2NvbnRlbnQ6IiJ9LnJvdzphZnRlcntjbGVhcjpib3RofVtjbGFzcyo9c3Bhbl17ZmxvYXQ6bGVmdDttaW4taGVpZ2h0OjFweDttYXJnaW4tbGVmdDoyMHB4fS5jb250YWluZXIsLm5hdmJhci1maXhlZC1ib3R0b20gLmNvbnRhaW5lciwubmF2YmFyLWZpeGVkLXRvcCAuY29udGFpbmVyLC5uYXZiYXItc3RhdGljLXRvcCAuY29udGFpbmVyLC5zcGFuMTJ7d2lkdGg6OTQwcHh9LnNwYW4xMXt3aWR0aDo4NjBweH0uc3BhbjEwe3dpZHRoOjc4MHB4fS5zcGFuOXt3aWR0aDo3MDBweH0uc3Bhbjh7d2lkdGg6NjIwcHh9LnNwYW43e3dpZHRoOjU0MHB4fS5zcGFuNnt3aWR0aDo0NjBweH0uc3BhbjV7d2lkdGg6MzgwcHh9LnNwYW40e3dpZHRoOjMwMHB4fS5zcGFuM3t3aWR0aDoyMjBweH0uc3BhbjJ7d2lkdGg6MTQwcHh9LnNwYW4xe3dpZHRoOjYwcHh9Lm9mZnNldDEye21hcmdpbi1sZWZ0Ojk4MHB4fS5vZmZzZXQxMXttYXJnaW4tbGVmdDo5MDBweH0ub2Zmc2V0MTB7bWFyZ2luLWxlZnQ6ODIwcHh9Lm9mZnNldDl7bWFyZ2luLWxlZnQ6NzQwcHh9Lm9mZnNldDh7bWFyZ2luLWxlZnQ6NjYwcHh9Lm9mZnNldDd7bWFyZ2luLWxlZnQ6NTgwcHh9Lm9mZnNldDZ7bWFyZ2luLWxlZnQ6NTAwcHh9Lm9mZnNldDV7bWFyZ2luLWxlZnQ6NDIwcHh9Lm9mZnNldDR7bWFyZ2luLWxlZnQ6MzQwcHh9Lm9mZnNldDN7bWFyZ2luLWxlZnQ6MjYwcHh9Lm9mZnNldDJ7bWFyZ2luLWxlZnQ6MTgwcHh9Lm9mZnNldDF7bWFyZ2luLWxlZnQ6MTAwcHh9LnJvdy1mbHVpZHt3aWR0aDoxMDAlOyp6b29tOjF9LnJvdy1mbHVpZDphZnRlciwucm93LWZsdWlkOmJlZm9yZXtkaXNwbGF5OnRhYmxlO2xpbmUtaGVpZ2h0OjA7Y29udGVudDoiIn0ucm93LWZsdWlkOmFmdGVye2NsZWFyOmJvdGh9LnJvdy1mbHVpZCBbY2xhc3MqPXNwYW5de2Rpc3BsYXk6YmxvY2s7ZmxvYXQ6bGVmdDt3aWR0aDoxMDAlO21pbi1oZWlnaHQ6MzBweDttYXJnaW4tbGVmdDoyLjEyNzY1OTU3NDQ2ODA4NSU7Km1hcmdpbi1sZWZ0OjIuMDc0NDY4MDg1MTA2MzgzJTtib3gtc2l6aW5nOmJvcmRlci1ib3h9LnJvdy1mbHVpZCBbY2xhc3MqPXNwYW5dOmZpcnN0LWNoaWxke21hcmdpbi1sZWZ0OjB9LnJvdy1mbHVpZCAuY29udHJvbHMtcm93IFtjbGFzcyo9c3Bhbl0rW2NsYXNzKj1zcGFuXXttYXJnaW4tbGVmdDoyLjEyNzY1OTU3NDQ2ODA4NSV9LnJvdy1mbHVpZCAuc3BhbjEye3dpZHRoOjEwMCU7KndpZHRoOjk5Ljk0NjgwODUxMDYzODI5JX0ucm93LWZsdWlkIC5zcGFuMTF7d2lkdGg6OTEuNDg5MzYxNzAyMTI3NjUlOyp3aWR0aDo5MS40MzYxNzAyMTI3NjU5NCV9LnJvdy1mbHVpZCAuc3BhbjEwe3dpZHRoOjgyLjk3ODcyMzQwNDI1NTMyJTsqd2lkdGg6ODIuOTI1NTMxOTE0ODkzNjElfS5yb3ctZmx1aWQgLnNwYW45e3dpZHRoOjc0LjQ2ODA4NTEwNjM4Mjk3JTsqd2lkdGg6NzQuNDE0ODkzNjE3MDIxMjYlfS5yb3ctZmx1aWQgLnNwYW44e3dpZHRoOjY1Ljk1NzQ0NjgwODUxMDY0JTsqd2lkdGg6NjUuOTA0MjU1MzE5MTQ4OTMlfS5yb3ctZmx1aWQgLnNwYW43e3dpZHRoOjU3LjQ0NjgwODUxMDYzODI5JTsqd2lkdGg6NTcuMzkzNjE3MDIxMjc2NTklfS5yb3ctZmx1aWQgLnNwYW42e3dpZHRoOjQ4LjkzNjE3MDIxMjc2NTk1JTsqd2lkdGg6NDguODgyOTc4NzIzNDA0MjUlfS5yb3ctZmx1aWQgLnNwYW41e3dpZHRoOjQwLjQyNTUzMTkxNDg5MzYyJTsqd2lkdGg6NDAuMzcyMzQwNDI1NTMxOTIlfS5yb3ctZmx1aWQgLnNwYW40e3dpZHRoOjMxLjkxNDg5MzYxNzAyMTI3OCU7KndpZHRoOjMxLjg2MTcwMjEyNzY1OTU3NiV9LnJvdy1mbHVpZCAuc3BhbjN7d2lkdGg6MjMuNDA0MjU1MzE5MTQ4OTM0JTsqd2lkdGg6MjMuMzUxMDYzODI5Nzg3MjMzJX0ucm93LWZsdWlkIC5zcGFuMnt3aWR0aDoxNC44OTM2MTcwMjEyNzY1OTUlOyp3aWR0aDoxNC44NDA0MjU1MzE5MTQ4OTQlfS5yb3ctZmx1aWQgLnNwYW4xe3dpZHRoOjYuMzgyOTc4NzIzNDA0MjU1JTsqd2lkdGg6Ni4zMjk3ODcyMzQwNDI1NTMlfS5yb3ctZmx1aWQgLm9mZnNldDEye21hcmdpbi1sZWZ0OjEwNC4yNTUzMTkxNDg5MzYxNyU7Km1hcmdpbi1sZWZ0OjEwNC4xNDg5MzYxNzAyMTI3NSV9LnJvdy1mbHVpZCAub2Zmc2V0MTI6Zmlyc3QtY2hpbGR7bWFyZ2luLWxlZnQ6MTAyLjEyNzY1OTU3NDQ2ODA4JTsqbWFyZ2luLWxlZnQ6MTAyLjAyMTI3NjU5NTc0NDY3JX0ucm93LWZsdWlkIC5vZmZzZXQxMXttYXJnaW4tbGVmdDo5NS43NDQ2ODA4NTEwNjM4MiU7Km1hcmdpbi1sZWZ0Ojk1LjYzODI5Nzg3MjM0MDQlfS5yb3ctZmx1aWQgLm9mZnNldDExOmZpcnN0LWNoaWxke21hcmdpbi1sZWZ0OjkzLjYxNzAyMTI3NjU5NTc0JTsqbWFyZ2luLWxlZnQ6OTMuNTEwNjM4Mjk3ODcyMzIlfS5yb3ctZmx1aWQgLm9mZnNldDEwe21hcmdpbi1sZWZ0Ojg3LjIzNDA0MjU1MzE5MTQ5JTsqbWFyZ2luLWxlZnQ6ODcuMTI3NjU5NTc0NDY4MDclfS5yb3ctZmx1aWQgLm9mZnNldDEwOmZpcnN0LWNoaWxke21hcmdpbi1sZWZ0Ojg1LjEwNjM4Mjk3ODcyMzQlOyptYXJnaW4tbGVmdDo4NC45OTk5OTk5OTk5OTk5OSV9LnJvdy1mbHVpZCAub2Zmc2V0OXttYXJnaW4tbGVmdDo3OC43MjM0MDQyNTUzMTkxNCU7Km1hcmdpbi1sZWZ0Ojc4LjYxNzAyMTI3NjU5NTcyJX0ucm93LWZsdWlkIC5vZmZzZXQ5OmZpcnN0LWNoaWxke21hcmdpbi1sZWZ0Ojc2LjU5NTc0NDY4MDg1MTA2JTsqbWFyZ2luLWxlZnQ6NzYuNDg5MzYxNzAyMTI3NjQlfS5yb3ctZmx1aWQgLm9mZnNldDh7bWFyZ2luLWxlZnQ6NzAuMjEyNzY1OTU3NDQ2OCU7Km1hcmdpbi1sZWZ0OjcwLjEwNjM4Mjk3ODcyMzM5JX0ucm93LWZsdWlkIC5vZmZzZXQ4OmZpcnN0LWNoaWxke21hcmdpbi1sZWZ0OjY4LjA4NTEwNjM4Mjk3ODcyJTsqbWFyZ2luLWxlZnQ6NjcuOTc4NzIzNDA0MjU1MyV9LnJvdy1mbHVpZCAub2Zmc2V0N3ttYXJnaW4tbGVmdDo2MS43MDIxMjc2NTk1NzQ0NiU7Km1hcmdpbi1sZWZ0OjYxLjU5NTc0NDY4MDg1MTA2JX0ucm93LWZsdWlkIC5vZmZzZXQ3OmZpcnN0LWNoaWxke21hcmdpbi1sZWZ0OjU5LjU3NDQ2ODA4NTEwNjM3NSU7Km1hcmdpbi1sZWZ0OjU5LjQ2ODA4NTEwNjM4Mjk3JX0ucm93LWZsdWlkIC5vZmZzZXQ2e21hcmdpbi1sZWZ0OjUzLjE5MTQ4OTM2MTcwMjEyNSU7Km1hcmdpbi1sZWZ0OjUzLjA4NTEwNjM4Mjk3ODcxNSV9LnJvdy1mbHVpZCAub2Zmc2V0NjpmaXJzdC1jaGlsZHttYXJnaW4tbGVmdDo1MS4wNjM4Mjk3ODcyMzQwMzUlOyptYXJnaW4tbGVmdDo1MC45NTc0NDY4MDg1MTA2MyV9LnJvdy1mbHVpZCAub2Zmc2V0NXttYXJnaW4tbGVmdDo0NC42ODA4NTEwNjM4Mjk3OSU7Km1hcmdpbi1sZWZ0OjQ0LjU3NDQ2ODA4NTEwNjM4JX0ucm93LWZsdWlkIC5vZmZzZXQ1OmZpcnN0LWNoaWxke21hcmdpbi1sZWZ0OjQyLjU1MzE5MTQ4OTM2MTclOyptYXJnaW4tbGVmdDo0Mi40NDY4MDg1MTA2MzgzJX0ucm93LWZsdWlkIC5vZmZzZXQ0e21hcmdpbi1sZWZ0OjM2LjE3MDIxMjc2NTk1NzQ0NCU7Km1hcmdpbi1sZWZ0OjM2LjA2MzgyOTc4NzIzNDA1JX0ucm93LWZsdWlkIC5vZmZzZXQ0OmZpcnN0LWNoaWxke21hcmdpbi1sZWZ0OjM0LjA0MjU1MzE5MTQ4OTM2JTsqbWFyZ2luLWxlZnQ6MzMuOTM2MTcwMjEyNzY1OTYlfS5yb3ctZmx1aWQgLm9mZnNldDN7bWFyZ2luLWxlZnQ6MjcuNjU5NTc0NDY4MDg1MTA0JTsqbWFyZ2luLWxlZnQ6MjcuNTUzMTkxNDg5MzYxNyV9LnJvdy1mbHVpZCAub2Zmc2V0MzpmaXJzdC1jaGlsZHttYXJnaW4tbGVmdDoyNS41MzE5MTQ4OTM2MTcwMiU7Km1hcmdpbi1sZWZ0OjI1LjQyNTUzMTkxNDg5MzYxOCV9LnJvdy1mbHVpZCAub2Zmc2V0MnttYXJnaW4tbGVmdDoxOS4xNDg5MzYxNzAyMTI3NjQlOyptYXJnaW4tbGVmdDoxOS4wNDI1NTMxOTE0ODkzNiV9LnJvdy1mbHVpZCAub2Zmc2V0MjpmaXJzdC1jaGlsZHttYXJnaW4tbGVmdDoxNy4wMjEyNzY1OTU3NDQ2OCU7Km1hcmdpbi1sZWZ0OjE2LjkxNDg5MzYxNzAyMTI3OCV9LnJvdy1mbHVpZCAub2Zmc2V0MXttYXJnaW4tbGVmdDoxMC42MzgyOTc4NzIzNDA0MjUlOyptYXJnaW4tbGVmdDoxMC41MzE5MTQ4OTM2MTcwMiV9LnJvdy1mbHVpZCAub2Zmc2V0MTpmaXJzdC1jaGlsZHttYXJnaW4tbGVmdDo4LjUxMDYzODI5Nzg3MjM0JTsqbWFyZ2luLWxlZnQ6OC40MDQyNTUzMTkxNDg5MzglfS5yb3ctZmx1aWQgW2NsYXNzKj1zcGFuXS5oaWRlLFtjbGFzcyo9c3Bhbl0uaGlkZXtkaXNwbGF5Om5vbmV9LnJvdy1mbHVpZCBbY2xhc3MqPXNwYW5dLnB1bGwtcmlnaHQsW2NsYXNzKj1zcGFuXS5wdWxsLXJpZ2h0e2Zsb2F0OnJpZ2h0fS5jb250YWluZXJ7bWFyZ2luLXJpZ2h0OmF1dG87bWFyZ2luLWxlZnQ6YXV0bzsqem9vbToxfS5jb250YWluZXI6YWZ0ZXIsLmNvbnRhaW5lcjpiZWZvcmV7ZGlzcGxheTp0YWJsZTtsaW5lLWhlaWdodDowO2NvbnRlbnQ6IiJ9LmNvbnRhaW5lcjphZnRlcntjbGVhcjpib3RofS5jb250YWluZXItZmx1aWR7cGFkZGluZy1yaWdodDoyMHB4O3BhZGRpbmctbGVmdDoyMHB4Oyp6b29tOjF9LmNvbnRhaW5lci1mbHVpZDphZnRlciwuY29udGFpbmVyLWZsdWlkOmJlZm9yZXtkaXNwbGF5OnRhYmxlO2xpbmUtaGVpZ2h0OjA7Y29udGVudDoiIn0uY29udGFpbmVyLWZsdWlkOmFmdGVye2NsZWFyOmJvdGh9cHttYXJnaW46MCAwIDEwcHh9LmxlYWR7bWFyZ2luLWJvdHRvbToyMHB4O2ZvbnQtc2l6ZToyMXB4O2ZvbnQtd2VpZ2h0OjIwMDtsaW5lLWhlaWdodDozMHB4fXNtYWxse2ZvbnQtc2l6ZTo4NSV9c3Ryb25ne2ZvbnQtd2VpZ2h0OjcwMH1lbXtmb250LXN0eWxlOml0YWxpY31jaXRle2ZvbnQtc3R5bGU6bm9ybWFsfS5tdXRlZHtjb2xvcjojOTk5fWEubXV0ZWQ6Zm9jdXMsYS5tdXRlZDpob3Zlcntjb2xvcjpncmF5fS50ZXh0LXdhcm5pbmd7Y29sb3I6I2MwOTg1M31hLnRleHQtd2FybmluZzpmb2N1cyxhLnRleHQtd2FybmluZzpob3Zlcntjb2xvcjojYTQ3ZTNjfS50ZXh0LWVycm9ye2NvbG9yOiNiOTRhNDh9YS50ZXh0LWVycm9yOmZvY3VzLGEudGV4dC1lcnJvcjpob3Zlcntjb2xvcjojOTUzYjM5fS50ZXh0LWluZm97Y29sb3I6IzNhODdhZH1hLnRleHQtaW5mbzpmb2N1cyxhLnRleHQtaW5mbzpob3Zlcntjb2xvcjojMmQ2OTg3fS50ZXh0LXN1Y2Nlc3N7Y29sb3I6IzQ2ODg0N31hLnRleHQtc3VjY2Vzczpmb2N1cyxhLnRleHQtc3VjY2Vzczpob3Zlcntjb2xvcjojMzU2NjM1fS50ZXh0LWxlZnR7dGV4dC1hbGlnbjpsZWZ0fS50ZXh0LXJpZ2h0e3RleHQtYWxpZ246cmlnaHR9aDEsaDIsaDMsaDQsaDUsaDZ7bWFyZ2luOjEwcHggMDtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtd2VpZ2h0OjcwMDtsaW5lLWhlaWdodDoyMHB4O2NvbG9yOmluaGVyaXQ7dGV4dC1yZW5kZXJpbmc6b3B0aW1pemVsZWdpYmlsaXR5fWgxIHNtYWxsLGgyIHNtYWxsLGgzIHNtYWxsLGg0IHNtYWxsLGg1IHNtYWxsLGg2IHNtYWxse2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxO2NvbG9yOiM5OTl9aDEsaDIsaDN7bGluZS1oZWlnaHQ6NDBweH1oMXtmb250LXNpemU6MzguNXB4fWgye2ZvbnQtc2l6ZTozMS41cHh9aDN7Zm9udC1zaXplOjI0LjVweH1oNHtmb250LXNpemU6MTcuNXB4fWg1e2ZvbnQtc2l6ZToxNHB4fWg2e2ZvbnQtc2l6ZToxMS45cHh9aDEgc21hbGx7Zm9udC1zaXplOjI0LjVweH1oMiBzbWFsbHtmb250LXNpemU6MTcuNXB4fWgzIHNtYWxsLGg0IHNtYWxse2ZvbnQtc2l6ZToxNHB4fS5wYWdlLWhlYWRlcntwYWRkaW5nLWJvdHRvbTo5cHg7bWFyZ2luOjIwcHggMCAzMHB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlZWV9b2wsdWx7cGFkZGluZzowO21hcmdpbjowIDAgMTBweCAyNXB4fW9sIG9sLG9sIHVsLHVsIG9sLHVsIHVse21hcmdpbi1ib3R0b206MH1saXtsaW5lLWhlaWdodDoyMHB4fW9sLmlubGluZSxvbC51bnN0eWxlZCx1bC5pbmxpbmUsdWwudW5zdHlsZWR7bWFyZ2luLWxlZnQ6MDtsaXN0LXN0eWxlOm5vbmV9b2wuaW5saW5lPmxpLHVsLmlubGluZT5saXtkaXNwbGF5OmlubGluZS1ibG9jazsqZGlzcGxheTppbmxpbmU7cGFkZGluZy1yaWdodDo1cHg7cGFkZGluZy1sZWZ0OjVweDsqem9vbToxfWRse21hcmdpbi1ib3R0b206MjBweH1kZCxkdHtsaW5lLWhlaWdodDoyMHB4fWR0e2ZvbnQtd2VpZ2h0OjcwMH1kZHttYXJnaW4tbGVmdDoxMHB4fS5kbC1ob3Jpem9udGFseyp6b29tOjF9LmRsLWhvcml6b250YWw6YWZ0ZXIsLmRsLWhvcml6b250YWw6YmVmb3Jle2Rpc3BsYXk6dGFibGU7bGluZS1oZWlnaHQ6MDtjb250ZW50OiIifS5kbC1ob3Jpem9udGFsOmFmdGVye2NsZWFyOmJvdGh9LmRsLWhvcml6b250YWwgZHR7ZmxvYXQ6bGVmdDt3aWR0aDoxNjBweDtvdmVyZmxvdzpoaWRkZW47Y2xlYXI6bGVmdDt0ZXh0LWFsaWduOnJpZ2h0O3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwfS5kbC1ob3Jpem9udGFsIGRke21hcmdpbi1sZWZ0OjE4MHB4fWhye21hcmdpbjoyMHB4IDA7Ym9yZGVyOjA7Ym9yZGVyLXRvcDoxcHggc29saWQgI2VlZTtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZmZmfWFiYnJbZGF0YS1vcmlnaW5hbC10aXRsZV0sYWJiclt0aXRsZV17Y3Vyc29yOmhlbHA7Ym9yZGVyLWJvdHRvbToxcHggZG90dGVkICM5OTl9YWJici5pbml0aWFsaXNte2ZvbnQtc2l6ZTo5MCU7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfWJsb2NrcXVvdGV7cGFkZGluZzowIDAgMCAxNXB4O21hcmdpbjowIDAgMjBweDtib3JkZXItbGVmdDo1cHggc29saWQgI2VlZX1ibG9ja3F1b3RlIHB7bWFyZ2luLWJvdHRvbTowO2ZvbnQtc2l6ZToxNy41cHg7Zm9udC13ZWlnaHQ6MzAwO2xpbmUtaGVpZ2h0OjEuMjV9YmxvY2txdW90ZSBzbWFsbHtkaXNwbGF5OmJsb2NrO2xpbmUtaGVpZ2h0OjIwcHg7Y29sb3I6Izk5OX1ibG9ja3F1b3RlIHNtYWxsOmJlZm9yZXtjb250ZW50OiJcMjAxNCBcMDBBMCJ9YmxvY2txdW90ZS5wdWxsLXJpZ2h0e2Zsb2F0OnJpZ2h0O3BhZGRpbmctcmlnaHQ6MTVweDtwYWRkaW5nLWxlZnQ6MDtib3JkZXItcmlnaHQ6NXB4IHNvbGlkICNlZWU7Ym9yZGVyLWxlZnQ6MH1ibG9ja3F1b3RlLnB1bGwtcmlnaHQgcCxibG9ja3F1b3RlLnB1bGwtcmlnaHQgc21hbGx7dGV4dC1hbGlnbjpyaWdodH1ibG9ja3F1b3RlLnB1bGwtcmlnaHQgc21hbGw6YmVmb3Jle2NvbnRlbnQ6IiJ9YmxvY2txdW90ZS5wdWxsLXJpZ2h0IHNtYWxsOmFmdGVye2NvbnRlbnQ6IlwwMEEwIFwyMDE0In1ibG9ja3F1b3RlOmFmdGVyLGJsb2NrcXVvdGU6YmVmb3JlLHE6YWZ0ZXIscTpiZWZvcmV7Y29udGVudDoiIn1hZGRyZXNze2Rpc3BsYXk6YmxvY2s7bWFyZ2luLWJvdHRvbToyMHB4O2ZvbnQtc3R5bGU6bm9ybWFsO2xpbmUtaGVpZ2h0OjIwcHh9Y29kZSxwcmV7cGFkZGluZzowIDNweCAycHg7Zm9udC1mYW1pbHk6TW9uYWNvLE1lbmxvLENvbnNvbGFzLENvdXJpZXIgTmV3LG1vbm9zcGFjZTtmb250LXNpemU6MTJweDtjb2xvcjojMzMzO2JvcmRlci1yYWRpdXM6M3B4fWNvZGV7cGFkZGluZzoycHggNHB4O2NvbG9yOiNkMTQ7d2hpdGUtc3BhY2U6bm93cmFwO2JhY2tncm91bmQtY29sb3I6I2Y3ZjdmOTtib3JkZXI6MXB4IHNvbGlkICNlMWUxZTh9cHJle2Rpc3BsYXk6YmxvY2s7cGFkZGluZzo5LjVweDttYXJnaW46MCAwIDEwcHg7Zm9udC1zaXplOjEzcHg7bGluZS1oZWlnaHQ6MjBweDt3b3JkLWJyZWFrOmJyZWFrLWFsbDt3b3JkLXdyYXA6YnJlYWstd29yZDt3aGl0ZS1zcGFjZTpwcmU7d2hpdGUtc3BhY2U6cHJlLXdyYXA7YmFja2dyb3VuZC1jb2xvcjojZjVmNWY1O2JvcmRlcjoxcHggc29saWQgI2NjYztib3JkZXI6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjE1KTtib3JkZXItcmFkaXVzOjRweH1wcmUucHJldHR5cHJpbnR7bWFyZ2luLWJvdHRvbToyMHB4fXByZSBjb2Rle3BhZGRpbmc6MDtjb2xvcjppbmhlcml0O3doaXRlLXNwYWNlOnByZTt3aGl0ZS1zcGFjZTpwcmUtd3JhcDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlcjowfS5wcmUtc2Nyb2xsYWJsZXttYXgtaGVpZ2h0OjM0MHB4O292ZXJmbG93LXk6c2Nyb2xsfWZvcm17bWFyZ2luOjAgMCAyMHB4fWZpZWxkc2V0e21hcmdpbjowfWZpZWxkc2V0LGxlZ2VuZHtwYWRkaW5nOjA7Ym9yZGVyOjB9bGVnZW5ke2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTttYXJnaW4tYm90dG9tOjIwcHg7Zm9udC1zaXplOjIxcHg7bGluZS1oZWlnaHQ6NDBweDtjb2xvcjojMzMzO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlNWU1ZTV9bGVnZW5kIHNtYWxse2ZvbnQtc2l6ZToxNXB4O2NvbG9yOiM5OTl9YnV0dG9uLGlucHV0LGxhYmVsLHNlbGVjdCx0ZXh0YXJlYXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MjBweH1idXR0b24saW5wdXQsc2VsZWN0LHRleHRhcmVhe2ZvbnQtZmFtaWx5OkhlbHZldGljYSBOZXVlLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmfWxhYmVse2Rpc3BsYXk6YmxvY2s7bWFyZ2luLWJvdHRvbTo1cHh9LnVuZWRpdGFibGUtaW5wdXQsaW5wdXRbdHlwZT1jb2xvcl0saW5wdXRbdHlwZT1kYXRlXSxpbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXSxpbnB1dFt0eXBlPWRhdGV0aW1lXSxpbnB1dFt0eXBlPWVtYWlsXSxpbnB1dFt0eXBlPW1vbnRoXSxpbnB1dFt0eXBlPW51bWJlcl0saW5wdXRbdHlwZT1wYXNzd29yZF0saW5wdXRbdHlwZT1zZWFyY2hdLGlucHV0W3R5cGU9dGVsXSxpbnB1dFt0eXBlPXRleHRdLGlucHV0W3R5cGU9dGltZV0saW5wdXRbdHlwZT11cmxdLGlucHV0W3R5cGU9d2Vla10sc2VsZWN0LHRleHRhcmVhe2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoyMHB4O3BhZGRpbmc6NHB4IDZweDttYXJnaW4tYm90dG9tOjEwcHg7Zm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MjBweDtjb2xvcjojNTU1O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtib3JkZXItcmFkaXVzOjRweH0udW5lZGl0YWJsZS1pbnB1dCxpbnB1dCx0ZXh0YXJlYXt3aWR0aDoyMDZweH10ZXh0YXJlYXtoZWlnaHQ6YXV0b30udW5lZGl0YWJsZS1pbnB1dCxpbnB1dFt0eXBlPWNvbG9yXSxpbnB1dFt0eXBlPWRhdGVdLGlucHV0W3R5cGU9ZGF0ZXRpbWUtbG9jYWxdLGlucHV0W3R5cGU9ZGF0ZXRpbWVdLGlucHV0W3R5cGU9ZW1haWxdLGlucHV0W3R5cGU9bW9udGhdLGlucHV0W3R5cGU9bnVtYmVyXSxpbnB1dFt0eXBlPXBhc3N3b3JkXSxpbnB1dFt0eXBlPXNlYXJjaF0saW5wdXRbdHlwZT10ZWxdLGlucHV0W3R5cGU9dGV4dF0saW5wdXRbdHlwZT10aW1lXSxpbnB1dFt0eXBlPXVybF0saW5wdXRbdHlwZT13ZWVrXSx0ZXh0YXJlYXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSk7dHJhbnNpdGlvbjpib3JkZXIgLjJzIGxpbmVhcixib3gtc2hhZG93IC4ycyBsaW5lYXJ9LnVuZWRpdGFibGUtaW5wdXQ6Zm9jdXMsaW5wdXRbdHlwZT1jb2xvcl06Zm9jdXMsaW5wdXRbdHlwZT1kYXRlXTpmb2N1cyxpbnB1dFt0eXBlPWRhdGV0aW1lLWxvY2FsXTpmb2N1cyxpbnB1dFt0eXBlPWRhdGV0aW1lXTpmb2N1cyxpbnB1dFt0eXBlPWVtYWlsXTpmb2N1cyxpbnB1dFt0eXBlPW1vbnRoXTpmb2N1cyxpbnB1dFt0eXBlPW51bWJlcl06Zm9jdXMsaW5wdXRbdHlwZT1wYXNzd29yZF06Zm9jdXMsaW5wdXRbdHlwZT1zZWFyY2hdOmZvY3VzLGlucHV0W3R5cGU9dGVsXTpmb2N1cyxpbnB1dFt0eXBlPXRleHRdOmZvY3VzLGlucHV0W3R5cGU9dGltZV06Zm9jdXMsaW5wdXRbdHlwZT11cmxdOmZvY3VzLGlucHV0W3R5cGU9d2Vla106Zm9jdXMsdGV4dGFyZWE6Zm9jdXN7Ym9yZGVyLWNvbG9yOnJnYmEoODIsMTY4LDIzNiwuOCk7b3V0bGluZTowO291dGxpbmU6dGhpbiBkb3R0ZWRcOTtib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpLDAgMCA4cHggcmdiYSg4MiwxNjgsMjM2LC42KX1pbnB1dFt0eXBlPWNoZWNrYm94XSxpbnB1dFt0eXBlPXJhZGlvXXttYXJnaW46NHB4IDAgMDttYXJnaW4tdG9wOjFweFw5OyptYXJnaW4tdG9wOjA7bGluZS1oZWlnaHQ6bm9ybWFsfWlucHV0W3R5cGU9YnV0dG9uXSxpbnB1dFt0eXBlPWNoZWNrYm94XSxpbnB1dFt0eXBlPWZpbGVdLGlucHV0W3R5cGU9aW1hZ2VdLGlucHV0W3R5cGU9cmFkaW9dLGlucHV0W3R5cGU9cmVzZXRdLGlucHV0W3R5cGU9c3VibWl0XXt3aWR0aDphdXRvfWlucHV0W3R5cGU9ZmlsZV0sc2VsZWN0e2hlaWdodDozMHB4OyptYXJnaW4tdG9wOjRweDtsaW5lLWhlaWdodDozMHB4fXNlbGVjdHt3aWR0aDoyMjBweDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjY2NjfXNlbGVjdFttdWx0aXBsZV0sc2VsZWN0W3NpemVde2hlaWdodDphdXRvfWlucHV0W3R5cGU9Y2hlY2tib3hdOmZvY3VzLGlucHV0W3R5cGU9ZmlsZV06Zm9jdXMsaW5wdXRbdHlwZT1yYWRpb106Zm9jdXMsc2VsZWN0OmZvY3Vze291dGxpbmU6dGhpbiBkb3R0ZWQgIzMzMztvdXRsaW5lOjVweCBhdXRvIC13ZWJraXQtZm9jdXMtcmluZy1jb2xvcjtvdXRsaW5lLW9mZnNldDotMnB4fS51bmVkaXRhYmxlLWlucHV0LC51bmVkaXRhYmxlLXRleHRhcmVhe2NvbG9yOiM5OTk7Y3Vyc29yOm5vdC1hbGxvd2VkO2JhY2tncm91bmQtY29sb3I6I2ZjZmNmYztib3JkZXItY29sb3I6I2NjYztib3gtc2hhZG93Omluc2V0IDAgMXB4IDJweCByZ2JhKDAsMCwwLC4wMjUpfS51bmVkaXRhYmxlLWlucHV0e292ZXJmbG93OmhpZGRlbjt3aGl0ZS1zcGFjZTpub3dyYXB9LnVuZWRpdGFibGUtdGV4dGFyZWF7d2lkdGg6YXV0bztoZWlnaHQ6YXV0b31pbnB1dDotbW96LXBsYWNlaG9sZGVyLHRleHRhcmVhOi1tb3otcGxhY2Vob2xkZXJ7Y29sb3I6Izk5OX1pbnB1dDotbXMtaW5wdXQtcGxhY2Vob2xkZXIsdGV4dGFyZWE6LW1zLWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOiM5OTl9aW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIsdGV4dGFyZWE6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6Izk5OX0uY2hlY2tib3gsLnJhZGlve21pbi1oZWlnaHQ6MjBweDtwYWRkaW5nLWxlZnQ6MjBweH0uY2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF0sLnJhZGlvIGlucHV0W3R5cGU9cmFkaW9de2Zsb2F0OmxlZnQ7bWFyZ2luLWxlZnQ6LTIwcHh9LmNvbnRyb2xzPi5jaGVja2JveDpmaXJzdC1jaGlsZCwuY29udHJvbHM+LnJhZGlvOmZpcnN0LWNoaWxke3BhZGRpbmctdG9wOjVweH0uY2hlY2tib3guaW5saW5lLC5yYWRpby5pbmxpbmV7ZGlzcGxheTppbmxpbmUtYmxvY2s7cGFkZGluZy10b3A6NXB4O21hcmdpbi1ib3R0b206MDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmNoZWNrYm94LmlubGluZSsuY2hlY2tib3guaW5saW5lLC5yYWRpby5pbmxpbmUrLnJhZGlvLmlubGluZXttYXJnaW4tbGVmdDoxMHB4fS5pbnB1dC1taW5pe3dpZHRoOjYwcHh9LmlucHV0LXNtYWxse3dpZHRoOjkwcHh9LmlucHV0LW1lZGl1bXt3aWR0aDoxNTBweH0uaW5wdXQtbGFyZ2V7d2lkdGg6MjEwcHh9LmlucHV0LXhsYXJnZXt3aWR0aDoyNzBweH0uaW5wdXQteHhsYXJnZXt3aWR0aDo1MzBweH0ucm93LWZsdWlkIC51bmVkaXRhYmxlLWlucHV0W2NsYXNzKj1zcGFuXSwucm93LWZsdWlkIGlucHV0W2NsYXNzKj1zcGFuXSwucm93LWZsdWlkIHNlbGVjdFtjbGFzcyo9c3Bhbl0sLnJvdy1mbHVpZCB0ZXh0YXJlYVtjbGFzcyo9c3Bhbl0sLnVuZWRpdGFibGUtaW5wdXRbY2xhc3MqPXNwYW5dLGlucHV0W2NsYXNzKj1zcGFuXSxzZWxlY3RbY2xhc3MqPXNwYW5dLHRleHRhcmVhW2NsYXNzKj1zcGFuXXtmbG9hdDpub25lO21hcmdpbi1sZWZ0OjB9LmlucHV0LWFwcGVuZCAudW5lZGl0YWJsZS1pbnB1dFtjbGFzcyo9c3Bhbl0sLmlucHV0LWFwcGVuZCBpbnB1dFtjbGFzcyo9c3Bhbl0sLmlucHV0LXByZXBlbmQgLnVuZWRpdGFibGUtaW5wdXRbY2xhc3MqPXNwYW5dLC5pbnB1dC1wcmVwZW5kIGlucHV0W2NsYXNzKj1zcGFuXSwucm93LWZsdWlkIC5pbnB1dC1hcHBlbmQgW2NsYXNzKj1zcGFuXSwucm93LWZsdWlkIC5pbnB1dC1wcmVwZW5kIFtjbGFzcyo9c3Bhbl0sLnJvdy1mbHVpZCAudW5lZGl0YWJsZS1pbnB1dFtjbGFzcyo9c3Bhbl0sLnJvdy1mbHVpZCBpbnB1dFtjbGFzcyo9c3Bhbl0sLnJvdy1mbHVpZCBzZWxlY3RbY2xhc3MqPXNwYW5dLC5yb3ctZmx1aWQgdGV4dGFyZWFbY2xhc3MqPXNwYW5de2Rpc3BsYXk6aW5saW5lLWJsb2NrfS51bmVkaXRhYmxlLWlucHV0LGlucHV0LHRleHRhcmVhe21hcmdpbi1sZWZ0OjB9LmNvbnRyb2xzLXJvdyBbY2xhc3MqPXNwYW5dK1tjbGFzcyo9c3Bhbl17bWFyZ2luLWxlZnQ6MjBweH0udW5lZGl0YWJsZS1pbnB1dC5zcGFuMTIsaW5wdXQuc3BhbjEyLHRleHRhcmVhLnNwYW4xMnt3aWR0aDo5MjZweH0udW5lZGl0YWJsZS1pbnB1dC5zcGFuMTEsaW5wdXQuc3BhbjExLHRleHRhcmVhLnNwYW4xMXt3aWR0aDo4NDZweH0udW5lZGl0YWJsZS1pbnB1dC5zcGFuMTAsaW5wdXQuc3BhbjEwLHRleHRhcmVhLnNwYW4xMHt3aWR0aDo3NjZweH0udW5lZGl0YWJsZS1pbnB1dC5zcGFuOSxpbnB1dC5zcGFuOSx0ZXh0YXJlYS5zcGFuOXt3aWR0aDo2ODZweH0udW5lZGl0YWJsZS1pbnB1dC5zcGFuOCxpbnB1dC5zcGFuOCx0ZXh0YXJlYS5zcGFuOHt3aWR0aDo2MDZweH0udW5lZGl0YWJsZS1pbnB1dC5zcGFuNyxpbnB1dC5zcGFuNyx0ZXh0YXJlYS5zcGFuN3t3aWR0aDo1MjZweH0udW5lZGl0YWJsZS1pbnB1dC5zcGFuNixpbnB1dC5zcGFuNix0ZXh0YXJlYS5zcGFuNnt3aWR0aDo0NDZweH0udW5lZGl0YWJsZS1pbnB1dC5zcGFuNSxpbnB1dC5zcGFuNSx0ZXh0YXJlYS5zcGFuNXt3aWR0aDozNjZweH0udW5lZGl0YWJsZS1pbnB1dC5zcGFuNCxpbnB1dC5zcGFuNCx0ZXh0YXJlYS5zcGFuNHt3aWR0aDoyODZweH0udW5lZGl0YWJsZS1pbnB1dC5zcGFuMyxpbnB1dC5zcGFuMyx0ZXh0YXJlYS5zcGFuM3t3aWR0aDoyMDZweH0udW5lZGl0YWJsZS1pbnB1dC5zcGFuMixpbnB1dC5zcGFuMix0ZXh0YXJlYS5zcGFuMnt3aWR0aDoxMjZweH0udW5lZGl0YWJsZS1pbnB1dC5zcGFuMSxpbnB1dC5zcGFuMSx0ZXh0YXJlYS5zcGFuMXt3aWR0aDo0NnB4fS5jb250cm9scy1yb3d7Knpvb206MX0uY29udHJvbHMtcm93OmFmdGVyLC5jb250cm9scy1yb3c6YmVmb3Jle2Rpc3BsYXk6dGFibGU7bGluZS1oZWlnaHQ6MDtjb250ZW50OiIifS5jb250cm9scy1yb3c6YWZ0ZXJ7Y2xlYXI6Ym90aH0uY29udHJvbHMtcm93IFtjbGFzcyo9c3Bhbl0sLnJvdy1mbHVpZCAuY29udHJvbHMtcm93IFtjbGFzcyo9c3Bhbl17ZmxvYXQ6bGVmdH0uY29udHJvbHMtcm93IC5jaGVja2JveFtjbGFzcyo9c3Bhbl0sLmNvbnRyb2xzLXJvdyAucmFkaW9bY2xhc3MqPXNwYW5de3BhZGRpbmctdG9wOjVweH1pbnB1dFtkaXNhYmxlZF0saW5wdXRbcmVhZG9ubHldLHNlbGVjdFtkaXNhYmxlZF0sc2VsZWN0W3JlYWRvbmx5XSx0ZXh0YXJlYVtkaXNhYmxlZF0sdGV4dGFyZWFbcmVhZG9ubHlde2N1cnNvcjpub3QtYWxsb3dlZDtiYWNrZ3JvdW5kLWNvbG9yOiNlZWV9aW5wdXRbdHlwZT1jaGVja2JveF1bZGlzYWJsZWRdLGlucHV0W3R5cGU9Y2hlY2tib3hdW3JlYWRvbmx5XSxpbnB1dFt0eXBlPXJhZGlvXVtkaXNhYmxlZF0saW5wdXRbdHlwZT1yYWRpb11bcmVhZG9ubHlde2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LmNvbnRyb2wtZ3JvdXAud2FybmluZyAuY2hlY2tib3gsLmNvbnRyb2wtZ3JvdXAud2FybmluZyAuY29udHJvbC1sYWJlbCwuY29udHJvbC1ncm91cC53YXJuaW5nIC5oZWxwLWJsb2NrLC5jb250cm9sLWdyb3VwLndhcm5pbmcgLmhlbHAtaW5saW5lLC5jb250cm9sLWdyb3VwLndhcm5pbmcgLnJhZGlvLC5jb250cm9sLWdyb3VwLndhcm5pbmcgaW5wdXQsLmNvbnRyb2wtZ3JvdXAud2FybmluZyBzZWxlY3QsLmNvbnRyb2wtZ3JvdXAud2FybmluZyB0ZXh0YXJlYXtjb2xvcjojYzA5ODUzfS5jb250cm9sLWdyb3VwLndhcm5pbmcgaW5wdXQsLmNvbnRyb2wtZ3JvdXAud2FybmluZyBzZWxlY3QsLmNvbnRyb2wtZ3JvdXAud2FybmluZyB0ZXh0YXJlYXtib3JkZXItY29sb3I6I2MwOTg1Mztib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpfS5jb250cm9sLWdyb3VwLndhcm5pbmcgaW5wdXQ6Zm9jdXMsLmNvbnRyb2wtZ3JvdXAud2FybmluZyBzZWxlY3Q6Zm9jdXMsLmNvbnRyb2wtZ3JvdXAud2FybmluZyB0ZXh0YXJlYTpmb2N1c3tib3JkZXItY29sb3I6I2E0N2UzYztib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNzUpLDAgMCA2cHggI2RiYzU5ZX0uY29udHJvbC1ncm91cC53YXJuaW5nIC5pbnB1dC1hcHBlbmQgLmFkZC1vbiwuY29udHJvbC1ncm91cC53YXJuaW5nIC5pbnB1dC1wcmVwZW5kIC5hZGQtb257Y29sb3I6I2MwOTg1MztiYWNrZ3JvdW5kLWNvbG9yOiNmY2Y4ZTM7Ym9yZGVyLWNvbG9yOiNjMDk4NTN9LmNvbnRyb2wtZ3JvdXAuZXJyb3IgLmNoZWNrYm94LC5jb250cm9sLWdyb3VwLmVycm9yIC5jb250cm9sLWxhYmVsLC5jb250cm9sLWdyb3VwLmVycm9yIC5oZWxwLWJsb2NrLC5jb250cm9sLWdyb3VwLmVycm9yIC5oZWxwLWlubGluZSwuY29udHJvbC1ncm91cC5lcnJvciAucmFkaW8sLmNvbnRyb2wtZ3JvdXAuZXJyb3IgaW5wdXQsLmNvbnRyb2wtZ3JvdXAuZXJyb3Igc2VsZWN0LC5jb250cm9sLWdyb3VwLmVycm9yIHRleHRhcmVhe2NvbG9yOiNiOTRhNDh9LmNvbnRyb2wtZ3JvdXAuZXJyb3IgaW5wdXQsLmNvbnRyb2wtZ3JvdXAuZXJyb3Igc2VsZWN0LC5jb250cm9sLWdyb3VwLmVycm9yIHRleHRhcmVhe2JvcmRlci1jb2xvcjojYjk0YTQ4O2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSl9LmNvbnRyb2wtZ3JvdXAuZXJyb3IgaW5wdXQ6Zm9jdXMsLmNvbnRyb2wtZ3JvdXAuZXJyb3Igc2VsZWN0OmZvY3VzLC5jb250cm9sLWdyb3VwLmVycm9yIHRleHRhcmVhOmZvY3Vze2JvcmRlci1jb2xvcjojOTUzYjM5O2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSksMCAwIDZweCAjZDU5MzkyfS5jb250cm9sLWdyb3VwLmVycm9yIC5pbnB1dC1hcHBlbmQgLmFkZC1vbiwuY29udHJvbC1ncm91cC5lcnJvciAuaW5wdXQtcHJlcGVuZCAuYWRkLW9ue2NvbG9yOiNiOTRhNDg7YmFja2dyb3VuZC1jb2xvcjojZjJkZWRlO2JvcmRlci1jb2xvcjojYjk0YTQ4fS5jb250cm9sLWdyb3VwLnN1Y2Nlc3MgLmNoZWNrYm94LC5jb250cm9sLWdyb3VwLnN1Y2Nlc3MgLmNvbnRyb2wtbGFiZWwsLmNvbnRyb2wtZ3JvdXAuc3VjY2VzcyAuaGVscC1ibG9jaywuY29udHJvbC1ncm91cC5zdWNjZXNzIC5oZWxwLWlubGluZSwuY29udHJvbC1ncm91cC5zdWNjZXNzIC5yYWRpbywuY29udHJvbC1ncm91cC5zdWNjZXNzIGlucHV0LC5jb250cm9sLWdyb3VwLnN1Y2Nlc3Mgc2VsZWN0LC5jb250cm9sLWdyb3VwLnN1Y2Nlc3MgdGV4dGFyZWF7Y29sb3I6IzQ2ODg0N30uY29udHJvbC1ncm91cC5zdWNjZXNzIGlucHV0LC5jb250cm9sLWdyb3VwLnN1Y2Nlc3Mgc2VsZWN0LC5jb250cm9sLWdyb3VwLnN1Y2Nlc3MgdGV4dGFyZWF7Ym9yZGVyLWNvbG9yOiM0Njg4NDc7Ym94LXNoYWRvdzppbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwuMDc1KX0uY29udHJvbC1ncm91cC5zdWNjZXNzIGlucHV0OmZvY3VzLC5jb250cm9sLWdyb3VwLnN1Y2Nlc3Mgc2VsZWN0OmZvY3VzLC5jb250cm9sLWdyb3VwLnN1Y2Nlc3MgdGV4dGFyZWE6Zm9jdXN7Ym9yZGVyLWNvbG9yOiMzNTY2MzU7Ym94LXNoYWRvdzppbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwuMDc1KSwwIDAgNnB4ICM3YWJhN2J9LmNvbnRyb2wtZ3JvdXAuc3VjY2VzcyAuaW5wdXQtYXBwZW5kIC5hZGQtb24sLmNvbnRyb2wtZ3JvdXAuc3VjY2VzcyAuaW5wdXQtcHJlcGVuZCAuYWRkLW9ue2NvbG9yOiM0Njg4NDc7YmFja2dyb3VuZC1jb2xvcjojZGZmMGQ4O2JvcmRlci1jb2xvcjojNDY4ODQ3fS5jb250cm9sLWdyb3VwLmluZm8gLmNoZWNrYm94LC5jb250cm9sLWdyb3VwLmluZm8gLmNvbnRyb2wtbGFiZWwsLmNvbnRyb2wtZ3JvdXAuaW5mbyAuaGVscC1ibG9jaywuY29udHJvbC1ncm91cC5pbmZvIC5oZWxwLWlubGluZSwuY29udHJvbC1ncm91cC5pbmZvIC5yYWRpbywuY29udHJvbC1ncm91cC5pbmZvIGlucHV0LC5jb250cm9sLWdyb3VwLmluZm8gc2VsZWN0LC5jb250cm9sLWdyb3VwLmluZm8gdGV4dGFyZWF7Y29sb3I6IzNhODdhZH0uY29udHJvbC1ncm91cC5pbmZvIGlucHV0LC5jb250cm9sLWdyb3VwLmluZm8gc2VsZWN0LC5jb250cm9sLWdyb3VwLmluZm8gdGV4dGFyZWF7Ym9yZGVyLWNvbG9yOiMzYTg3YWQ7Ym94LXNoYWRvdzppbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwuMDc1KX0uY29udHJvbC1ncm91cC5pbmZvIGlucHV0OmZvY3VzLC5jb250cm9sLWdyb3VwLmluZm8gc2VsZWN0OmZvY3VzLC5jb250cm9sLWdyb3VwLmluZm8gdGV4dGFyZWE6Zm9jdXN7Ym9yZGVyLWNvbG9yOiMyZDY5ODc7Ym94LXNoYWRvdzppbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwuMDc1KSwwIDAgNnB4ICM3YWI1ZDN9LmNvbnRyb2wtZ3JvdXAuaW5mbyAuaW5wdXQtYXBwZW5kIC5hZGQtb24sLmNvbnRyb2wtZ3JvdXAuaW5mbyAuaW5wdXQtcHJlcGVuZCAuYWRkLW9ue2NvbG9yOiMzYTg3YWQ7YmFja2dyb3VuZC1jb2xvcjojZDllZGY3O2JvcmRlci1jb2xvcjojM2E4N2FkfWlucHV0OmZvY3VzOmludmFsaWQsc2VsZWN0OmZvY3VzOmludmFsaWQsdGV4dGFyZWE6Zm9jdXM6aW52YWxpZHtjb2xvcjojYjk0YTQ4O2JvcmRlci1jb2xvcjojZWU1ZjVifWlucHV0OmZvY3VzOmludmFsaWQ6Zm9jdXMsc2VsZWN0OmZvY3VzOmludmFsaWQ6Zm9jdXMsdGV4dGFyZWE6Zm9jdXM6aW52YWxpZDpmb2N1c3tib3JkZXItY29sb3I6I2U5MzIyZDtib3gtc2hhZG93OjAgMCA2cHggI2Y4YjliN30uZm9ybS1hY3Rpb25ze3BhZGRpbmc6MTlweCAyMHB4IDIwcHg7bWFyZ2luLXRvcDoyMHB4O21hcmdpbi1ib3R0b206MjBweDtiYWNrZ3JvdW5kLWNvbG9yOiNmNWY1ZjU7Ym9yZGVyLXRvcDoxcHggc29saWQgI2U1ZTVlNTsqem9vbToxfS5mb3JtLWFjdGlvbnM6YWZ0ZXIsLmZvcm0tYWN0aW9uczpiZWZvcmV7ZGlzcGxheTp0YWJsZTtsaW5lLWhlaWdodDowO2NvbnRlbnQ6IiJ9LmZvcm0tYWN0aW9uczphZnRlcntjbGVhcjpib3RofS5oZWxwLWJsb2NrLC5oZWxwLWlubGluZXtjb2xvcjojNTk1OTU5fS5oZWxwLWJsb2Nre2Rpc3BsYXk6YmxvY2s7bWFyZ2luLWJvdHRvbToxMHB4fS5oZWxwLWlubGluZXtkaXNwbGF5OmlubGluZS1ibG9jazsqZGlzcGxheTppbmxpbmU7cGFkZGluZy1sZWZ0OjVweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Knpvb206MX0uaW5wdXQtYXBwZW5kLC5pbnB1dC1wcmVwZW5ke2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1ib3R0b206MTBweDtmb250LXNpemU6MDt3aGl0ZS1zcGFjZTpub3dyYXA7dmVydGljYWwtYWxpZ246bWlkZGxlfS5pbnB1dC1hcHBlbmQgLmRyb3Bkb3duLW1lbnUsLmlucHV0LWFwcGVuZCAucG9wb3ZlciwuaW5wdXQtYXBwZW5kIC51bmVkaXRhYmxlLWlucHV0LC5pbnB1dC1hcHBlbmQgaW5wdXQsLmlucHV0LWFwcGVuZCBzZWxlY3QsLmlucHV0LXByZXBlbmQgLmRyb3Bkb3duLW1lbnUsLmlucHV0LXByZXBlbmQgLnBvcG92ZXIsLmlucHV0LXByZXBlbmQgLnVuZWRpdGFibGUtaW5wdXQsLmlucHV0LXByZXBlbmQgaW5wdXQsLmlucHV0LXByZXBlbmQgc2VsZWN0e2ZvbnQtc2l6ZToxNHB4fS5pbnB1dC1hcHBlbmQgLnVuZWRpdGFibGUtaW5wdXQsLmlucHV0LWFwcGVuZCBpbnB1dCwuaW5wdXQtYXBwZW5kIHNlbGVjdCwuaW5wdXQtcHJlcGVuZCAudW5lZGl0YWJsZS1pbnB1dCwuaW5wdXQtcHJlcGVuZCBpbnB1dCwuaW5wdXQtcHJlcGVuZCBzZWxlY3R7cG9zaXRpb246cmVsYXRpdmU7bWFyZ2luLWJvdHRvbTowOyptYXJnaW4tbGVmdDowO3ZlcnRpY2FsLWFsaWduOnRvcDtib3JkZXItcmFkaXVzOjAgNHB4IDRweCAwfS5pbnB1dC1hcHBlbmQgLnVuZWRpdGFibGUtaW5wdXQ6Zm9jdXMsLmlucHV0LWFwcGVuZCBpbnB1dDpmb2N1cywuaW5wdXQtYXBwZW5kIHNlbGVjdDpmb2N1cywuaW5wdXQtcHJlcGVuZCAudW5lZGl0YWJsZS1pbnB1dDpmb2N1cywuaW5wdXQtcHJlcGVuZCBpbnB1dDpmb2N1cywuaW5wdXQtcHJlcGVuZCBzZWxlY3Q6Zm9jdXN7ei1pbmRleDoyfS5pbnB1dC1hcHBlbmQgLmFkZC1vbiwuaW5wdXQtcHJlcGVuZCAuYWRkLW9ue2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOmF1dG87aGVpZ2h0OjIwcHg7bWluLXdpZHRoOjE2cHg7cGFkZGluZzo0cHggNXB4O2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoyMHB4O3RleHQtYWxpZ246Y2VudGVyO3RleHQtc2hhZG93OjAgMXB4IDAgI2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiNlZWU7Ym9yZGVyOjFweCBzb2xpZCAjY2NjfS5pbnB1dC1hcHBlbmQgLmFkZC1vbiwuaW5wdXQtYXBwZW5kIC5idG4sLmlucHV0LWFwcGVuZCAuYnRuLWdyb3VwPi5kcm9wZG93bi10b2dnbGUsLmlucHV0LXByZXBlbmQgLmFkZC1vbiwuaW5wdXQtcHJlcGVuZCAuYnRuLC5pbnB1dC1wcmVwZW5kIC5idG4tZ3JvdXA+LmRyb3Bkb3duLXRvZ2dsZXt2ZXJ0aWNhbC1hbGlnbjp0b3A7Ym9yZGVyLXJhZGl1czowfS5pbnB1dC1hcHBlbmQgLmFjdGl2ZSwuaW5wdXQtcHJlcGVuZCAuYWN0aXZle2JhY2tncm91bmQtY29sb3I6I2E5ZGJhOTtib3JkZXItY29sb3I6IzQ2YTU0Nn0uaW5wdXQtcHJlcGVuZCAuYWRkLW9uLC5pbnB1dC1wcmVwZW5kIC5idG57bWFyZ2luLXJpZ2h0Oi0xcHh9LmlucHV0LWFwcGVuZCAudW5lZGl0YWJsZS1pbnB1dCwuaW5wdXQtYXBwZW5kIGlucHV0LC5pbnB1dC1hcHBlbmQgc2VsZWN0LC5pbnB1dC1wcmVwZW5kIC5hZGQtb246Zmlyc3QtY2hpbGQsLmlucHV0LXByZXBlbmQgLmJ0bjpmaXJzdC1jaGlsZHtib3JkZXItcmFkaXVzOjRweCAwIDAgNHB4fS5pbnB1dC1hcHBlbmQgLnVuZWRpdGFibGUtaW5wdXQrLmJ0bi1ncm91cCAuYnRuOmxhc3QtY2hpbGQsLmlucHV0LWFwcGVuZCBpbnB1dCsuYnRuLWdyb3VwIC5idG46bGFzdC1jaGlsZCwuaW5wdXQtYXBwZW5kIHNlbGVjdCsuYnRuLWdyb3VwIC5idG46bGFzdC1jaGlsZHtib3JkZXItcmFkaXVzOjAgNHB4IDRweCAwfS5pbnB1dC1hcHBlbmQgLmFkZC1vbiwuaW5wdXQtYXBwZW5kIC5idG4sLmlucHV0LWFwcGVuZCAuYnRuLWdyb3Vwe21hcmdpbi1sZWZ0Oi0xcHh9LmlucHV0LWFwcGVuZCAuYWRkLW9uOmxhc3QtY2hpbGQsLmlucHV0LWFwcGVuZCAuYnRuLWdyb3VwOmxhc3QtY2hpbGQ+LmRyb3Bkb3duLXRvZ2dsZSwuaW5wdXQtYXBwZW5kIC5idG46bGFzdC1jaGlsZHtib3JkZXItcmFkaXVzOjAgNHB4IDRweCAwfS5pbnB1dC1wcmVwZW5kLmlucHV0LWFwcGVuZCAudW5lZGl0YWJsZS1pbnB1dCwuaW5wdXQtcHJlcGVuZC5pbnB1dC1hcHBlbmQgaW5wdXQsLmlucHV0LXByZXBlbmQuaW5wdXQtYXBwZW5kIHNlbGVjdHtib3JkZXItcmFkaXVzOjB9LmlucHV0LXByZXBlbmQuaW5wdXQtYXBwZW5kIC51bmVkaXRhYmxlLWlucHV0Ky5idG4tZ3JvdXAgLmJ0biwuaW5wdXQtcHJlcGVuZC5pbnB1dC1hcHBlbmQgaW5wdXQrLmJ0bi1ncm91cCAuYnRuLC5pbnB1dC1wcmVwZW5kLmlucHV0LWFwcGVuZCBzZWxlY3QrLmJ0bi1ncm91cCAuYnRue2JvcmRlci1yYWRpdXM6MCA0cHggNHB4IDB9LmlucHV0LXByZXBlbmQuaW5wdXQtYXBwZW5kIC5hZGQtb246Zmlyc3QtY2hpbGQsLmlucHV0LXByZXBlbmQuaW5wdXQtYXBwZW5kIC5idG46Zmlyc3QtY2hpbGR7bWFyZ2luLXJpZ2h0Oi0xcHg7Ym9yZGVyLXJhZGl1czo0cHggMCAwIDRweH0uaW5wdXQtcHJlcGVuZC5pbnB1dC1hcHBlbmQgLmFkZC1vbjpsYXN0LWNoaWxkLC5pbnB1dC1wcmVwZW5kLmlucHV0LWFwcGVuZCAuYnRuOmxhc3QtY2hpbGR7bWFyZ2luLWxlZnQ6LTFweDtib3JkZXItcmFkaXVzOjAgNHB4IDRweCAwfS5pbnB1dC1wcmVwZW5kLmlucHV0LWFwcGVuZCAuYnRuLWdyb3VwOmZpcnN0LWNoaWxke21hcmdpbi1sZWZ0OjB9aW5wdXQuc2VhcmNoLXF1ZXJ5e3BhZGRpbmctcmlnaHQ6MTRweDtwYWRkaW5nLXJpZ2h0OjRweFw5O3BhZGRpbmctbGVmdDoxNHB4O3BhZGRpbmctbGVmdDo0cHhcOTttYXJnaW4tYm90dG9tOjA7Ym9yZGVyLXJhZGl1czoxNXB4fS5mb3JtLXNlYXJjaCAuaW5wdXQtYXBwZW5kIC5zZWFyY2gtcXVlcnksLmZvcm0tc2VhcmNoIC5pbnB1dC1wcmVwZW5kIC5zZWFyY2gtcXVlcnl7Ym9yZGVyLXJhZGl1czowfS5mb3JtLXNlYXJjaCAuaW5wdXQtYXBwZW5kIC5zZWFyY2gtcXVlcnl7Ym9yZGVyLXJhZGl1czoxNHB4IDAgMCAxNHB4fS5mb3JtLXNlYXJjaCAuaW5wdXQtYXBwZW5kIC5idG4sLmZvcm0tc2VhcmNoIC5pbnB1dC1wcmVwZW5kIC5zZWFyY2gtcXVlcnl7Ym9yZGVyLXJhZGl1czowIDE0cHggMTRweCAwfS5mb3JtLXNlYXJjaCAuaW5wdXQtcHJlcGVuZCAuYnRue2JvcmRlci1yYWRpdXM6MTRweCAwIDAgMTRweH0uZm9ybS1ob3Jpem9udGFsIC5oZWxwLWlubGluZSwuZm9ybS1ob3Jpem9udGFsIC5pbnB1dC1hcHBlbmQsLmZvcm0taG9yaXpvbnRhbCAuaW5wdXQtcHJlcGVuZCwuZm9ybS1ob3Jpem9udGFsIC51bmVkaXRhYmxlLWlucHV0LC5mb3JtLWhvcml6b250YWwgaW5wdXQsLmZvcm0taG9yaXpvbnRhbCBzZWxlY3QsLmZvcm0taG9yaXpvbnRhbCB0ZXh0YXJlYSwuZm9ybS1pbmxpbmUgLmhlbHAtaW5saW5lLC5mb3JtLWlubGluZSAuaW5wdXQtYXBwZW5kLC5mb3JtLWlubGluZSAuaW5wdXQtcHJlcGVuZCwuZm9ybS1pbmxpbmUgLnVuZWRpdGFibGUtaW5wdXQsLmZvcm0taW5saW5lIGlucHV0LC5mb3JtLWlubGluZSBzZWxlY3QsLmZvcm0taW5saW5lIHRleHRhcmVhLC5mb3JtLXNlYXJjaCAuaGVscC1pbmxpbmUsLmZvcm0tc2VhcmNoIC5pbnB1dC1hcHBlbmQsLmZvcm0tc2VhcmNoIC5pbnB1dC1wcmVwZW5kLC5mb3JtLXNlYXJjaCAudW5lZGl0YWJsZS1pbnB1dCwuZm9ybS1zZWFyY2ggaW5wdXQsLmZvcm0tc2VhcmNoIHNlbGVjdCwuZm9ybS1zZWFyY2ggdGV4dGFyZWF7ZGlzcGxheTppbmxpbmUtYmxvY2s7KmRpc3BsYXk6aW5saW5lO21hcmdpbi1ib3R0b206MDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Knpvb206MX0uZm9ybS1ob3Jpem9udGFsIC5oaWRlLC5mb3JtLWlubGluZSAuaGlkZSwuZm9ybS1zZWFyY2ggLmhpZGV7ZGlzcGxheTpub25lfS5mb3JtLWlubGluZSAuYnRuLWdyb3VwLC5mb3JtLWlubGluZSBsYWJlbCwuZm9ybS1zZWFyY2ggLmJ0bi1ncm91cCwuZm9ybS1zZWFyY2ggbGFiZWx7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmZvcm0taW5saW5lIC5pbnB1dC1hcHBlbmQsLmZvcm0taW5saW5lIC5pbnB1dC1wcmVwZW5kLC5mb3JtLXNlYXJjaCAuaW5wdXQtYXBwZW5kLC5mb3JtLXNlYXJjaCAuaW5wdXQtcHJlcGVuZHttYXJnaW4tYm90dG9tOjB9LmZvcm0taW5saW5lIC5jaGVja2JveCwuZm9ybS1pbmxpbmUgLnJhZGlvLC5mb3JtLXNlYXJjaCAuY2hlY2tib3gsLmZvcm0tc2VhcmNoIC5yYWRpb3twYWRkaW5nLWxlZnQ6MDttYXJnaW4tYm90dG9tOjA7dmVydGljYWwtYWxpZ246bWlkZGxlfS5mb3JtLWlubGluZSAuY2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF0sLmZvcm0taW5saW5lIC5yYWRpbyBpbnB1dFt0eXBlPXJhZGlvXSwuZm9ybS1zZWFyY2ggLmNoZWNrYm94IGlucHV0W3R5cGU9Y2hlY2tib3hdLC5mb3JtLXNlYXJjaCAucmFkaW8gaW5wdXRbdHlwZT1yYWRpb117ZmxvYXQ6bGVmdDttYXJnaW4tcmlnaHQ6M3B4O21hcmdpbi1sZWZ0OjB9LmNvbnRyb2wtZ3JvdXB7bWFyZ2luLWJvdHRvbToxMHB4fWxlZ2VuZCsuY29udHJvbC1ncm91cHttYXJnaW4tdG9wOjIwcHg7LXdlYmtpdC1tYXJnaW4tdG9wLWNvbGxhcHNlOnNlcGFyYXRlfS5mb3JtLWhvcml6b250YWwgLmNvbnRyb2wtZ3JvdXB7bWFyZ2luLWJvdHRvbToyMHB4Oyp6b29tOjF9LmZvcm0taG9yaXpvbnRhbCAuY29udHJvbC1ncm91cDphZnRlciwuZm9ybS1ob3Jpem9udGFsIC5jb250cm9sLWdyb3VwOmJlZm9yZXtkaXNwbGF5OnRhYmxlO2xpbmUtaGVpZ2h0OjA7Y29udGVudDoiIn0uZm9ybS1ob3Jpem9udGFsIC5jb250cm9sLWdyb3VwOmFmdGVye2NsZWFyOmJvdGh9LmZvcm0taG9yaXpvbnRhbCAuY29udHJvbC1sYWJlbHtmbG9hdDpsZWZ0O3dpZHRoOjE2MHB4O3BhZGRpbmctdG9wOjVweDt0ZXh0LWFsaWduOnJpZ2h0fS5mb3JtLWhvcml6b250YWwgLmNvbnRyb2xzeypkaXNwbGF5OmlubGluZS1ibG9jazsqcGFkZGluZy1sZWZ0OjIwcHg7bWFyZ2luLWxlZnQ6MTgwcHg7Km1hcmdpbi1sZWZ0OjB9LmZvcm0taG9yaXpvbnRhbCAuY29udHJvbHM6Zmlyc3QtY2hpbGR7KnBhZGRpbmctbGVmdDoxODBweH0uZm9ybS1ob3Jpem9udGFsIC5oZWxwLWJsb2Nre21hcmdpbi1ib3R0b206MH0uZm9ybS1ob3Jpem9udGFsIC5pbnB1dC1hcHBlbmQrLmhlbHAtYmxvY2ssLmZvcm0taG9yaXpvbnRhbCAuaW5wdXQtcHJlcGVuZCsuaGVscC1ibG9jaywuZm9ybS1ob3Jpem9udGFsIC51bmVkaXRhYmxlLWlucHV0Ky5oZWxwLWJsb2NrLC5mb3JtLWhvcml6b250YWwgaW5wdXQrLmhlbHAtYmxvY2ssLmZvcm0taG9yaXpvbnRhbCBzZWxlY3QrLmhlbHAtYmxvY2ssLmZvcm0taG9yaXpvbnRhbCB0ZXh0YXJlYSsuaGVscC1ibG9ja3ttYXJnaW4tdG9wOjEwcHh9LmZvcm0taG9yaXpvbnRhbCAuZm9ybS1hY3Rpb25ze3BhZGRpbmctbGVmdDoxODBweH10YWJsZXttYXgtd2lkdGg6MTAwJTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTtib3JkZXItc3BhY2luZzowfS50YWJsZXt3aWR0aDoxMDAlO21hcmdpbi1ib3R0b206MjBweH0udGFibGUgdGQsLnRhYmxlIHRoe3BhZGRpbmc6OHB4O2xpbmUtaGVpZ2h0OjIwcHg7dGV4dC1hbGlnbjpsZWZ0O3ZlcnRpY2FsLWFsaWduOnRvcDtib3JkZXItdG9wOjFweCBzb2xpZCAjZGRkfS50YWJsZSB0aHtmb250LXdlaWdodDo3MDB9LnRhYmxlIHRoZWFkIHRoe3ZlcnRpY2FsLWFsaWduOmJvdHRvbX0udGFibGUgY2FwdGlvbit0aGVhZCB0cjpmaXJzdC1jaGlsZCB0ZCwudGFibGUgY2FwdGlvbit0aGVhZCB0cjpmaXJzdC1jaGlsZCB0aCwudGFibGUgY29sZ3JvdXArdGhlYWQgdHI6Zmlyc3QtY2hpbGQgdGQsLnRhYmxlIGNvbGdyb3VwK3RoZWFkIHRyOmZpcnN0LWNoaWxkIHRoLC50YWJsZSB0aGVhZDpmaXJzdC1jaGlsZCB0cjpmaXJzdC1jaGlsZCB0ZCwudGFibGUgdGhlYWQ6Zmlyc3QtY2hpbGQgdHI6Zmlyc3QtY2hpbGQgdGh7Ym9yZGVyLXRvcDowfS50YWJsZSB0Ym9keSt0Ym9keXtib3JkZXItdG9wOjJweCBzb2xpZCAjZGRkfS50YWJsZSAudGFibGV7YmFja2dyb3VuZC1jb2xvcjojZmZmfS50YWJsZS1jb25kZW5zZWQgdGQsLnRhYmxlLWNvbmRlbnNlZCB0aHtwYWRkaW5nOjRweCA1cHh9LnRhYmxlLWJvcmRlcmVke2JvcmRlcjoxcHggc29saWQgI2RkZDtib3JkZXItY29sbGFwc2U6c2VwYXJhdGU7KmJvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTtib3JkZXItbGVmdDowO2JvcmRlci1yYWRpdXM6NHB4fS50YWJsZS1ib3JkZXJlZCB0ZCwudGFibGUtYm9yZGVyZWQgdGh7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNkZGR9LnRhYmxlLWJvcmRlcmVkIGNhcHRpb24rdGJvZHkgdHI6Zmlyc3QtY2hpbGQgdGQsLnRhYmxlLWJvcmRlcmVkIGNhcHRpb24rdGJvZHkgdHI6Zmlyc3QtY2hpbGQgdGgsLnRhYmxlLWJvcmRlcmVkIGNhcHRpb24rdGhlYWQgdHI6Zmlyc3QtY2hpbGQgdGgsLnRhYmxlLWJvcmRlcmVkIGNvbGdyb3VwK3Rib2R5IHRyOmZpcnN0LWNoaWxkIHRkLC50YWJsZS1ib3JkZXJlZCBjb2xncm91cCt0Ym9keSB0cjpmaXJzdC1jaGlsZCB0aCwudGFibGUtYm9yZGVyZWQgY29sZ3JvdXArdGhlYWQgdHI6Zmlyc3QtY2hpbGQgdGgsLnRhYmxlLWJvcmRlcmVkIHRib2R5OmZpcnN0LWNoaWxkIHRyOmZpcnN0LWNoaWxkIHRkLC50YWJsZS1ib3JkZXJlZCB0Ym9keTpmaXJzdC1jaGlsZCB0cjpmaXJzdC1jaGlsZCB0aCwudGFibGUtYm9yZGVyZWQgdGhlYWQ6Zmlyc3QtY2hpbGQgdHI6Zmlyc3QtY2hpbGQgdGh7Ym9yZGVyLXRvcDowfS50YWJsZS1ib3JkZXJlZCB0Ym9keTpmaXJzdC1jaGlsZCB0cjpmaXJzdC1jaGlsZD50ZDpmaXJzdC1jaGlsZCwudGFibGUtYm9yZGVyZWQgdGJvZHk6Zmlyc3QtY2hpbGQgdHI6Zmlyc3QtY2hpbGQ+dGg6Zmlyc3QtY2hpbGQsLnRhYmxlLWJvcmRlcmVkIHRoZWFkOmZpcnN0LWNoaWxkIHRyOmZpcnN0LWNoaWxkPnRoOmZpcnN0LWNoaWxke2JvcmRlci10b3AtbGVmdC1yYWRpdXM6NHB4Oy1tb3otYm9yZGVyLXJhZGl1cy10b3BsZWZ0OjRweH0udGFibGUtYm9yZGVyZWQgdGJvZHk6Zmlyc3QtY2hpbGQgdHI6Zmlyc3QtY2hpbGQ+dGQ6bGFzdC1jaGlsZCwudGFibGUtYm9yZGVyZWQgdGJvZHk6Zmlyc3QtY2hpbGQgdHI6Zmlyc3QtY2hpbGQ+dGg6bGFzdC1jaGlsZCwudGFibGUtYm9yZGVyZWQgdGhlYWQ6Zmlyc3QtY2hpbGQgdHI6Zmlyc3QtY2hpbGQ+dGg6bGFzdC1jaGlsZHtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czo0cHg7LW1vei1ib3JkZXItcmFkaXVzLXRvcHJpZ2h0OjRweH0udGFibGUtYm9yZGVyZWQgdGJvZHk6bGFzdC1jaGlsZCB0cjpsYXN0LWNoaWxkPnRkOmZpcnN0LWNoaWxkLC50YWJsZS1ib3JkZXJlZCB0Ym9keTpsYXN0LWNoaWxkIHRyOmxhc3QtY2hpbGQ+dGg6Zmlyc3QtY2hpbGQsLnRhYmxlLWJvcmRlcmVkIHRmb290Omxhc3QtY2hpbGQgdHI6bGFzdC1jaGlsZD50ZDpmaXJzdC1jaGlsZCwudGFibGUtYm9yZGVyZWQgdGZvb3Q6bGFzdC1jaGlsZCB0cjpsYXN0LWNoaWxkPnRoOmZpcnN0LWNoaWxkLC50YWJsZS1ib3JkZXJlZCB0aGVhZDpsYXN0LWNoaWxkIHRyOmxhc3QtY2hpbGQ+dGg6Zmlyc3QtY2hpbGR7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo0cHg7LW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6NHB4fS50YWJsZS1ib3JkZXJlZCB0Ym9keTpsYXN0LWNoaWxkIHRyOmxhc3QtY2hpbGQ+dGQ6bGFzdC1jaGlsZCwudGFibGUtYm9yZGVyZWQgdGJvZHk6bGFzdC1jaGlsZCB0cjpsYXN0LWNoaWxkPnRoOmxhc3QtY2hpbGQsLnRhYmxlLWJvcmRlcmVkIHRmb290Omxhc3QtY2hpbGQgdHI6bGFzdC1jaGlsZD50ZDpsYXN0LWNoaWxkLC50YWJsZS1ib3JkZXJlZCB0Zm9vdDpsYXN0LWNoaWxkIHRyOmxhc3QtY2hpbGQ+dGg6bGFzdC1jaGlsZCwudGFibGUtYm9yZGVyZWQgdGhlYWQ6bGFzdC1jaGlsZCB0cjpsYXN0LWNoaWxkPnRoOmxhc3QtY2hpbGR7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6NHB4Oy1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21yaWdodDo0cHh9LnRhYmxlLWJvcmRlcmVkIHRmb290K3Rib2R5Omxhc3QtY2hpbGQgdHI6bGFzdC1jaGlsZCB0ZDpmaXJzdC1jaGlsZHtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjA7LW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6MH0udGFibGUtYm9yZGVyZWQgdGZvb3QrdGJvZHk6bGFzdC1jaGlsZCB0cjpsYXN0LWNoaWxkIHRkOmxhc3QtY2hpbGR7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MDstbW96LWJvcmRlci1yYWRpdXMtYm90dG9tcmlnaHQ6MH0udGFibGUtYm9yZGVyZWQgY2FwdGlvbit0Ym9keSB0cjpmaXJzdC1jaGlsZCB0ZDpmaXJzdC1jaGlsZCwudGFibGUtYm9yZGVyZWQgY2FwdGlvbit0aGVhZCB0cjpmaXJzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZCwudGFibGUtYm9yZGVyZWQgY29sZ3JvdXArdGJvZHkgdHI6Zmlyc3QtY2hpbGQgdGQ6Zmlyc3QtY2hpbGQsLnRhYmxlLWJvcmRlcmVkIGNvbGdyb3VwK3RoZWFkIHRyOmZpcnN0LWNoaWxkIHRoOmZpcnN0LWNoaWxke2JvcmRlci10b3AtbGVmdC1yYWRpdXM6NHB4Oy1tb3otYm9yZGVyLXJhZGl1cy10b3BsZWZ0OjRweH0udGFibGUtYm9yZGVyZWQgY2FwdGlvbit0Ym9keSB0cjpmaXJzdC1jaGlsZCB0ZDpsYXN0LWNoaWxkLC50YWJsZS1ib3JkZXJlZCBjYXB0aW9uK3RoZWFkIHRyOmZpcnN0LWNoaWxkIHRoOmxhc3QtY2hpbGQsLnRhYmxlLWJvcmRlcmVkIGNvbGdyb3VwK3Rib2R5IHRyOmZpcnN0LWNoaWxkIHRkOmxhc3QtY2hpbGQsLnRhYmxlLWJvcmRlcmVkIGNvbGdyb3VwK3RoZWFkIHRyOmZpcnN0LWNoaWxkIHRoOmxhc3QtY2hpbGR7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NHB4Oy1tb3otYm9yZGVyLXJhZGl1cy10b3ByaWdodDo0cHh9LnRhYmxlLXN0cmlwZWQgdGJvZHk+dHI6bnRoLWNoaWxkKG9kZCk+dGQsLnRhYmxlLXN0cmlwZWQgdGJvZHk+dHI6bnRoLWNoaWxkKG9kZCk+dGh7YmFja2dyb3VuZC1jb2xvcjojZjlmOWY5fS50YWJsZS1ob3ZlciB0Ym9keSB0cjpob3Zlcj50ZCwudGFibGUtaG92ZXIgdGJvZHkgdHI6aG92ZXI+dGh7YmFja2dyb3VuZC1jb2xvcjojZjVmNWY1fS5yb3ctZmx1aWQgdGFibGUgdGRbY2xhc3MqPXNwYW5dLC5yb3ctZmx1aWQgdGFibGUgdGhbY2xhc3MqPXNwYW5dLHRhYmxlIHRkW2NsYXNzKj1zcGFuXSx0YWJsZSB0aFtjbGFzcyo9c3Bhbl17ZGlzcGxheTp0YWJsZS1jZWxsO2Zsb2F0Om5vbmU7bWFyZ2luLWxlZnQ6MH0udGFibGUgdGQuc3BhbjEsLnRhYmxlIHRoLnNwYW4xe2Zsb2F0Om5vbmU7d2lkdGg6NDRweDttYXJnaW4tbGVmdDowfS50YWJsZSB0ZC5zcGFuMiwudGFibGUgdGguc3BhbjJ7ZmxvYXQ6bm9uZTt3aWR0aDoxMjRweDttYXJnaW4tbGVmdDowfS50YWJsZSB0ZC5zcGFuMywudGFibGUgdGguc3BhbjN7ZmxvYXQ6bm9uZTt3aWR0aDoyMDRweDttYXJnaW4tbGVmdDowfS50YWJsZSB0ZC5zcGFuNCwudGFibGUgdGguc3BhbjR7ZmxvYXQ6bm9uZTt3aWR0aDoyODRweDttYXJnaW4tbGVmdDowfS50YWJsZSB0ZC5zcGFuNSwudGFibGUgdGguc3BhbjV7ZmxvYXQ6bm9uZTt3aWR0aDozNjRweDttYXJnaW4tbGVmdDowfS50YWJsZSB0ZC5zcGFuNiwudGFibGUgdGguc3BhbjZ7ZmxvYXQ6bm9uZTt3aWR0aDo0NDRweDttYXJnaW4tbGVmdDowfS50YWJsZSB0ZC5zcGFuNywudGFibGUgdGguc3Bhbjd7ZmxvYXQ6bm9uZTt3aWR0aDo1MjRweDttYXJnaW4tbGVmdDowfS50YWJsZSB0ZC5zcGFuOCwudGFibGUgdGguc3Bhbjh7ZmxvYXQ6bm9uZTt3aWR0aDo2MDRweDttYXJnaW4tbGVmdDowfS50YWJsZSB0ZC5zcGFuOSwudGFibGUgdGguc3Bhbjl7ZmxvYXQ6bm9uZTt3aWR0aDo2ODRweDttYXJnaW4tbGVmdDowfS50YWJsZSB0ZC5zcGFuMTAsLnRhYmxlIHRoLnNwYW4xMHtmbG9hdDpub25lO3dpZHRoOjc2NHB4O21hcmdpbi1sZWZ0OjB9LnRhYmxlIHRkLnNwYW4xMSwudGFibGUgdGguc3BhbjExe2Zsb2F0Om5vbmU7d2lkdGg6ODQ0cHg7bWFyZ2luLWxlZnQ6MH0udGFibGUgdGQuc3BhbjEyLC50YWJsZSB0aC5zcGFuMTJ7ZmxvYXQ6bm9uZTt3aWR0aDo5MjRweDttYXJnaW4tbGVmdDowfS50YWJsZSB0Ym9keSB0ci5zdWNjZXNzPnRke2JhY2tncm91bmQtY29sb3I6I2RmZjBkOH0udGFibGUgdGJvZHkgdHIuZXJyb3I+dGR7YmFja2dyb3VuZC1jb2xvcjojZjJkZWRlfS50YWJsZSB0Ym9keSB0ci53YXJuaW5nPnRke2JhY2tncm91bmQtY29sb3I6I2ZjZjhlM30udGFibGUgdGJvZHkgdHIuaW5mbz50ZHtiYWNrZ3JvdW5kLWNvbG9yOiNkOWVkZjd9LnRhYmxlLWhvdmVyIHRib2R5IHRyLnN1Y2Nlc3M6aG92ZXI+dGR7YmFja2dyb3VuZC1jb2xvcjojZDBlOWM2fS50YWJsZS1ob3ZlciB0Ym9keSB0ci5lcnJvcjpob3Zlcj50ZHtiYWNrZ3JvdW5kLWNvbG9yOiNlYmNjY2N9LnRhYmxlLWhvdmVyIHRib2R5IHRyLndhcm5pbmc6aG92ZXI+dGR7YmFja2dyb3VuZC1jb2xvcjojZmFmMmNjfS50YWJsZS1ob3ZlciB0Ym9keSB0ci5pbmZvOmhvdmVyPnRke2JhY2tncm91bmQtY29sb3I6I2M0ZTNmM31bY2xhc3MqPSIgaWNvbi0iXSxbY2xhc3NePWljb24tXXtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoxNHB4O2hlaWdodDoxNHB4O21hcmdpbi10b3A6MXB4OyptYXJnaW4tcmlnaHQ6LjNlbTtsaW5lLWhlaWdodDoxNHB4O3ZlcnRpY2FsLWFsaWduOnRleHQtdG9wO2JhY2tncm91bmQtaW1hZ2U6dXJsKC4uL2ltZy9nbHlwaGljb25zLWhhbGZsaW5ncy5wbmcpO2JhY2tncm91bmQtcG9zaXRpb246MTRweCAxNHB4O2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdH0uZHJvcGRvd24tbWVudT4uYWN0aXZlPmE+W2NsYXNzKj0iIGljb24tIl0sLmRyb3Bkb3duLW1lbnU+LmFjdGl2ZT5hPltjbGFzc149aWNvbi1dLC5kcm9wZG93bi1tZW51PmxpPmE6Zm9jdXM+W2NsYXNzKj0iIGljb24tIl0sLmRyb3Bkb3duLW1lbnU+bGk+YTpmb2N1cz5bY2xhc3NePWljb24tXSwuZHJvcGRvd24tbWVudT5saT5hOmhvdmVyPltjbGFzcyo9IiBpY29uLSJdLC5kcm9wZG93bi1tZW51PmxpPmE6aG92ZXI+W2NsYXNzXj1pY29uLV0sLmRyb3Bkb3duLXN1Ym1lbnU6Zm9jdXM+YT5bY2xhc3MqPSIgaWNvbi0iXSwuZHJvcGRvd24tc3VibWVudTpmb2N1cz5hPltjbGFzc149aWNvbi1dLC5kcm9wZG93bi1zdWJtZW51OmhvdmVyPmE+W2NsYXNzKj0iIGljb24tIl0sLmRyb3Bkb3duLXN1Ym1lbnU6aG92ZXI+YT5bY2xhc3NePWljb24tXSwuaWNvbi13aGl0ZSwubmF2LWxpc3Q+LmFjdGl2ZT5hPltjbGFzcyo9IiBpY29uLSJdLC5uYXYtbGlzdD4uYWN0aXZlPmE+W2NsYXNzXj1pY29uLV0sLm5hdi1waWxscz4uYWN0aXZlPmE+W2NsYXNzKj0iIGljb24tIl0sLm5hdi1waWxscz4uYWN0aXZlPmE+W2NsYXNzXj1pY29uLV0sLm5hdmJhci1pbnZlcnNlIC5uYXY+LmFjdGl2ZT5hPltjbGFzcyo9IiBpY29uLSJdLC5uYXZiYXItaW52ZXJzZSAubmF2Pi5hY3RpdmU+YT5bY2xhc3NePWljb24tXXtiYWNrZ3JvdW5kLWltYWdlOnVybCguLi9pbWcvZ2x5cGhpY29ucy1oYWxmbGluZ3Mtd2hpdGUucG5nKX0uaWNvbi1nbGFzc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgMH0uaWNvbi1tdXNpY3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yNHB4IDB9Lmljb24tc2VhcmNoe2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggMH0uaWNvbi1lbnZlbG9wZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi03MnB4IDB9Lmljb24taGVhcnR7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAwfS5pY29uLXN0YXJ7YmFja2dyb3VuZC1wb3NpdGlvbjotMTIwcHggMH0uaWNvbi1zdGFyLWVtcHR5e2JhY2tncm91bmQtcG9zaXRpb246LTE0NHB4IDB9Lmljb24tdXNlcntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNjhweCAwfS5pY29uLWZpbG17YmFja2dyb3VuZC1wb3NpdGlvbjotMTkycHggMH0uaWNvbi10aC1sYXJnZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMTZweCAwfS5pY29uLXRoe2JhY2tncm91bmQtcG9zaXRpb246LTI0MHB4IDB9Lmljb24tdGgtbGlzdHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yNjRweCAwfS5pY29uLW9re2JhY2tncm91bmQtcG9zaXRpb246LTI4OHB4IDB9Lmljb24tcmVtb3Zle2JhY2tncm91bmQtcG9zaXRpb246LTMxMnB4IDB9Lmljb24tem9vbS1pbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMzZweCAwfS5pY29uLXpvb20tb3V0e2JhY2tncm91bmQtcG9zaXRpb246LTM2MHB4IDB9Lmljb24tb2Zme2JhY2tncm91bmQtcG9zaXRpb246LTM4NHB4IDB9Lmljb24tc2lnbmFse2JhY2tncm91bmQtcG9zaXRpb246LTQwOHB4IDB9Lmljb24tY29ne2JhY2tncm91bmQtcG9zaXRpb246LTQzMnB4IDB9Lmljb24tdHJhc2h7YmFja2dyb3VuZC1wb3NpdGlvbjotNDU2cHggMH0uaWNvbi1ob21le2JhY2tncm91bmQtcG9zaXRpb246MCAtMjRweH0uaWNvbi1maWxle2JhY2tncm91bmQtcG9zaXRpb246LTI0cHggLTI0cHh9Lmljb24tdGltZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC0yNHB4fS5pY29uLXJvYWR7YmFja2dyb3VuZC1wb3NpdGlvbjotNzJweCAtMjRweH0uaWNvbi1kb3dubG9hZC1hbHR7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtMjRweH0uaWNvbi1kb3dubG9hZHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjBweCAtMjRweH0uaWNvbi11cGxvYWR7YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTI0cHh9Lmljb24taW5ib3h7YmFja2dyb3VuZC1wb3NpdGlvbjotMTY4cHggLTI0cHh9Lmljb24tcGxheS1jaXJjbGV7YmFja2dyb3VuZC1wb3NpdGlvbjotMTkycHggLTI0cHh9Lmljb24tcmVwZWF0e2JhY2tncm91bmQtcG9zaXRpb246LTIxNnB4IC0yNHB4fS5pY29uLXJlZnJlc2h7YmFja2dyb3VuZC1wb3NpdGlvbjotMjQwcHggLTI0cHh9Lmljb24tbGlzdC1hbHR7YmFja2dyb3VuZC1wb3NpdGlvbjotMjY0cHggLTI0cHh9Lmljb24tbG9ja3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yODdweCAtMjRweH0uaWNvbi1mbGFne2JhY2tncm91bmQtcG9zaXRpb246LTMxMnB4IC0yNHB4fS5pY29uLWhlYWRwaG9uZXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMzM2cHggLTI0cHh9Lmljb24tdm9sdW1lLW9mZntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zNjBweCAtMjRweH0uaWNvbi12b2x1bWUtZG93bntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zODRweCAtMjRweH0uaWNvbi12b2x1bWUtdXB7YmFja2dyb3VuZC1wb3NpdGlvbjotNDA4cHggLTI0cHh9Lmljb24tcXJjb2Rle2JhY2tncm91bmQtcG9zaXRpb246LTQzMnB4IC0yNHB4fS5pY29uLWJhcmNvZGV7YmFja2dyb3VuZC1wb3NpdGlvbjotNDU2cHggLTI0cHh9Lmljb24tdGFne2JhY2tncm91bmQtcG9zaXRpb246MCAtNDhweH0uaWNvbi10YWdze2JhY2tncm91bmQtcG9zaXRpb246LTI1cHggLTQ4cHh9Lmljb24tYm9va3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC00OHB4fS5pY29uLWJvb2ttYXJre2JhY2tncm91bmQtcG9zaXRpb246LTcycHggLTQ4cHh9Lmljb24tcHJpbnR7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtNDhweH0uaWNvbi1jYW1lcmF7YmFja2dyb3VuZC1wb3NpdGlvbjotMTIwcHggLTQ4cHh9Lmljb24tZm9udHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAtNDhweH0uaWNvbi1ib2xke2JhY2tncm91bmQtcG9zaXRpb246LTE2N3B4IC00OHB4fS5pY29uLWl0YWxpY3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xOTJweCAtNDhweH0uaWNvbi10ZXh0LWhlaWdodHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMTZweCAtNDhweH0uaWNvbi10ZXh0LXdpZHRoe2JhY2tncm91bmQtcG9zaXRpb246LTI0MHB4IC00OHB4fS5pY29uLWFsaWduLWxlZnR7YmFja2dyb3VuZC1wb3NpdGlvbjotMjY0cHggLTQ4cHh9Lmljb24tYWxpZ24tY2VudGVye2JhY2tncm91bmQtcG9zaXRpb246LTI4OHB4IC00OHB4fS5pY29uLWFsaWduLXJpZ2h0e2JhY2tncm91bmQtcG9zaXRpb246LTMxMnB4IC00OHB4fS5pY29uLWFsaWduLWp1c3RpZnl7YmFja2dyb3VuZC1wb3NpdGlvbjotMzM2cHggLTQ4cHh9Lmljb24tbGlzdHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zNjBweCAtNDhweH0uaWNvbi1pbmRlbnQtbGVmdHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zODRweCAtNDhweH0uaWNvbi1pbmRlbnQtcmlnaHR7YmFja2dyb3VuZC1wb3NpdGlvbjotNDA4cHggLTQ4cHh9Lmljb24tZmFjZXRpbWUtdmlkZW97YmFja2dyb3VuZC1wb3NpdGlvbjotNDMycHggLTQ4cHh9Lmljb24tcGljdHVyZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00NTZweCAtNDhweH0uaWNvbi1wZW5jaWx7YmFja2dyb3VuZC1wb3NpdGlvbjowIC03MnB4fS5pY29uLW1hcC1tYXJrZXJ7YmFja2dyb3VuZC1wb3NpdGlvbjotMjRweCAtNzJweH0uaWNvbi1hZGp1c3R7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtNzJweH0uaWNvbi10aW50e2JhY2tncm91bmQtcG9zaXRpb246LTcycHggLTcycHh9Lmljb24tZWRpdHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC03MnB4fS5pY29uLXNoYXJle2JhY2tncm91bmQtcG9zaXRpb246LTEyMHB4IC03MnB4fS5pY29uLWNoZWNre2JhY2tncm91bmQtcG9zaXRpb246LTE0NHB4IC03MnB4fS5pY29uLW1vdmV7YmFja2dyb3VuZC1wb3NpdGlvbjotMTY4cHggLTcycHh9Lmljb24tc3RlcC1iYWNrd2FyZHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xOTJweCAtNzJweH0uaWNvbi1mYXN0LWJhY2t3YXJke2JhY2tncm91bmQtcG9zaXRpb246LTIxNnB4IC03MnB4fS5pY29uLWJhY2t3YXJke2JhY2tncm91bmQtcG9zaXRpb246LTI0MHB4IC03MnB4fS5pY29uLXBsYXl7YmFja2dyb3VuZC1wb3NpdGlvbjotMjY0cHggLTcycHh9Lmljb24tcGF1c2V7YmFja2dyb3VuZC1wb3NpdGlvbjotMjg4cHggLTcycHh9Lmljb24tc3RvcHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMTJweCAtNzJweH0uaWNvbi1mb3J3YXJke2JhY2tncm91bmQtcG9zaXRpb246LTMzNnB4IC03MnB4fS5pY29uLWZhc3QtZm9yd2FyZHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zNjBweCAtNzJweH0uaWNvbi1zdGVwLWZvcndhcmR7YmFja2dyb3VuZC1wb3NpdGlvbjotMzg0cHggLTcycHh9Lmljb24tZWplY3R7YmFja2dyb3VuZC1wb3NpdGlvbjotNDA4cHggLTcycHh9Lmljb24tY2hldnJvbi1sZWZ0e2JhY2tncm91bmQtcG9zaXRpb246LTQzMnB4IC03MnB4fS5pY29uLWNoZXZyb24tcmlnaHR7YmFja2dyb3VuZC1wb3NpdGlvbjotNDU2cHggLTcycHh9Lmljb24tcGx1cy1zaWdue2JhY2tncm91bmQtcG9zaXRpb246MCAtOTZweH0uaWNvbi1taW51cy1zaWdue2JhY2tncm91bmQtcG9zaXRpb246LTI0cHggLTk2cHh9Lmljb24tcmVtb3ZlLXNpZ257YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtOTZweH0uaWNvbi1vay1zaWdue2JhY2tncm91bmQtcG9zaXRpb246LTcycHggLTk2cHh9Lmljb24tcXVlc3Rpb24tc2lnbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC05NnB4fS5pY29uLWluZm8tc2lnbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjBweCAtOTZweH0uaWNvbi1zY3JlZW5zaG90e2JhY2tncm91bmQtcG9zaXRpb246LTE0NHB4IC05NnB4fS5pY29uLXJlbW92ZS1jaXJjbGV7YmFja2dyb3VuZC1wb3NpdGlvbjotMTY4cHggLTk2cHh9Lmljb24tb2stY2lyY2xle2JhY2tncm91bmQtcG9zaXRpb246LTE5MnB4IC05NnB4fS5pY29uLWJhbi1jaXJjbGV7YmFja2dyb3VuZC1wb3NpdGlvbjotMjE2cHggLTk2cHh9Lmljb24tYXJyb3ctbGVmdHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yNDBweCAtOTZweH0uaWNvbi1hcnJvdy1yaWdodHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yNjRweCAtOTZweH0uaWNvbi1hcnJvdy11cHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yODlweCAtOTZweH0uaWNvbi1hcnJvdy1kb3due2JhY2tncm91bmQtcG9zaXRpb246LTMxMnB4IC05NnB4fS5pY29uLXNoYXJlLWFsdHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMzZweCAtOTZweH0uaWNvbi1yZXNpemUtZnVsbHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zNjBweCAtOTZweH0uaWNvbi1yZXNpemUtc21hbGx7YmFja2dyb3VuZC1wb3NpdGlvbjotMzg0cHggLTk2cHh9Lmljb24tcGx1c3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi00MDhweCAtOTZweH0uaWNvbi1taW51c3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi00MzNweCAtOTZweH0uaWNvbi1hc3Rlcmlza3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi00NTZweCAtOTZweH0uaWNvbi1leGNsYW1hdGlvbi1zaWdue2JhY2tncm91bmQtcG9zaXRpb246MCAtMTIwcHh9Lmljb24tZ2lmdHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yNHB4IC0xMjBweH0uaWNvbi1sZWFme2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTEyMHB4fS5pY29uLWZpcmV7YmFja2dyb3VuZC1wb3NpdGlvbjotNzJweCAtMTIwcHh9Lmljb24tZXllLW9wZW57YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtMTIwcHh9Lmljb24tZXllLWNsb3Nle2JhY2tncm91bmQtcG9zaXRpb246LTEyMHB4IC0xMjBweH0uaWNvbi13YXJuaW5nLXNpZ257YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTEyMHB4fS5pY29uLXBsYW5le2JhY2tncm91bmQtcG9zaXRpb246LTE2OHB4IC0xMjBweH0uaWNvbi1jYWxlbmRhcntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xOTJweCAtMTIwcHh9Lmljb24tcmFuZG9te3dpZHRoOjE2cHg7YmFja2dyb3VuZC1wb3NpdGlvbjotMjE2cHggLTEyMHB4fS5pY29uLWNvbW1lbnR7YmFja2dyb3VuZC1wb3NpdGlvbjotMjQwcHggLTEyMHB4fS5pY29uLW1hZ25ldHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yNjRweCAtMTIwcHh9Lmljb24tY2hldnJvbi11cHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yODhweCAtMTIwcHh9Lmljb24tY2hldnJvbi1kb3due2JhY2tncm91bmQtcG9zaXRpb246LTMxM3B4IC0xMTlweH0uaWNvbi1yZXR3ZWV0e2JhY2tncm91bmQtcG9zaXRpb246LTMzNnB4IC0xMjBweH0uaWNvbi1zaG9wcGluZy1jYXJ0e2JhY2tncm91bmQtcG9zaXRpb246LTM2MHB4IC0xMjBweH0uaWNvbi1mb2xkZXItY2xvc2V7d2lkdGg6MTZweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zODRweCAtMTIwcHh9Lmljb24tZm9sZGVyLW9wZW57d2lkdGg6MTZweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00MDhweCAtMTIwcHh9Lmljb24tcmVzaXplLXZlcnRpY2Fse2JhY2tncm91bmQtcG9zaXRpb246LTQzMnB4IC0xMTlweH0uaWNvbi1yZXNpemUtaG9yaXpvbnRhbHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00NTZweCAtMTE4cHh9Lmljb24taGRke2JhY2tncm91bmQtcG9zaXRpb246MCAtMTQ0cHh9Lmljb24tYnVsbGhvcm57YmFja2dyb3VuZC1wb3NpdGlvbjotMjRweCAtMTQ0cHh9Lmljb24tYmVsbHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC0xNDRweH0uaWNvbi1jZXJ0aWZpY2F0ZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi03MnB4IC0xNDRweH0uaWNvbi10aHVtYnMtdXB7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtMTQ0cHh9Lmljb24tdGh1bWJzLWRvd257YmFja2dyb3VuZC1wb3NpdGlvbjotMTIwcHggLTE0NHB4fS5pY29uLWhhbmQtcmlnaHR7YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTE0NHB4fS5pY29uLWhhbmQtbGVmdHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNjhweCAtMTQ0cHh9Lmljb24taGFuZC11cHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xOTJweCAtMTQ0cHh9Lmljb24taGFuZC1kb3due2JhY2tncm91bmQtcG9zaXRpb246LTIxNnB4IC0xNDRweH0uaWNvbi1jaXJjbGUtYXJyb3ctcmlnaHR7YmFja2dyb3VuZC1wb3NpdGlvbjotMjQwcHggLTE0NHB4fS5pY29uLWNpcmNsZS1hcnJvdy1sZWZ0e2JhY2tncm91bmQtcG9zaXRpb246LTI2NHB4IC0xNDRweH0uaWNvbi1jaXJjbGUtYXJyb3ctdXB7YmFja2dyb3VuZC1wb3NpdGlvbjotMjg4cHggLTE0NHB4fS5pY29uLWNpcmNsZS1hcnJvdy1kb3due2JhY2tncm91bmQtcG9zaXRpb246LTMxMnB4IC0xNDRweH0uaWNvbi1nbG9iZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMzZweCAtMTQ0cHh9Lmljb24td3JlbmNoe2JhY2tncm91bmQtcG9zaXRpb246LTM2MHB4IC0xNDRweH0uaWNvbi10YXNrc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zODRweCAtMTQ0cHh9Lmljb24tZmlsdGVye2JhY2tncm91bmQtcG9zaXRpb246LTQwOHB4IC0xNDRweH0uaWNvbi1icmllZmNhc2V7YmFja2dyb3VuZC1wb3NpdGlvbjotNDMycHggLTE0NHB4fS5pY29uLWZ1bGxzY3JlZW57YmFja2dyb3VuZC1wb3NpdGlvbjotNDU2cHggLTE0NHB4fS5kcm9wZG93biwuZHJvcHVwe3Bvc2l0aW9uOnJlbGF0aXZlfS5kcm9wZG93bi10b2dnbGV7Km1hcmdpbi1ib3R0b206LTNweH0uZHJvcGRvd24tdG9nZ2xlOmFjdGl2ZSwub3BlbiAuZHJvcGRvd24tdG9nZ2xle291dGxpbmU6MH0uY2FyZXR7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MDtoZWlnaHQ6MDt2ZXJ0aWNhbC1hbGlnbjp0b3A7Ym9yZGVyLXRvcDo0cHggc29saWQgIzAwMDtib3JkZXItcmlnaHQ6NHB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1sZWZ0OjRweCBzb2xpZCB0cmFuc3BhcmVudDtjb250ZW50OiIifS5kcm9wZG93biAuY2FyZXR7bWFyZ2luLXRvcDo4cHg7bWFyZ2luLWxlZnQ6MnB4fS5kcm9wZG93bi1tZW51e3Bvc2l0aW9uOmFic29sdXRlO3RvcDoxMDAlO2xlZnQ6MDt6LWluZGV4OjEwMDA7ZGlzcGxheTpub25lO2Zsb2F0OmxlZnQ7bWluLXdpZHRoOjE2MHB4O3BhZGRpbmc6NXB4IDA7bWFyZ2luOjJweCAwIDA7bGlzdC1zdHlsZTpub25lO2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNjY2M7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4yKTsqYm9yZGVyLXJpZ2h0LXdpZHRoOjJweDsqYm9yZGVyLWJvdHRvbS13aWR0aDoycHg7Ym9yZGVyLXJhZGl1czo2cHg7Ym94LXNoYWRvdzowIDVweCAxMHB4IHJnYmEoMCwwLDAsLjIpO2JhY2tncm91bmQtY2xpcDpwYWRkaW5nLWJveH0uZHJvcGRvd24tbWVudS5wdWxsLXJpZ2h0e3JpZ2h0OjA7bGVmdDphdXRvfS5kcm9wZG93bi1tZW51IC5kaXZpZGVyeyp3aWR0aDoxMDAlO2hlaWdodDoxcHg7bWFyZ2luOjlweCAxcHg7Km1hcmdpbjotNXB4IDAgNXB4O292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kLWNvbG9yOiNlNWU1ZTU7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2ZmZn0uZHJvcGRvd24tbWVudT5saT5he2Rpc3BsYXk6YmxvY2s7cGFkZGluZzozcHggMjBweDtjbGVhcjpib3RoO2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoyMHB4O2NvbG9yOiMzMzM7d2hpdGUtc3BhY2U6bm93cmFwfS5kcm9wZG93bi1tZW51Pi5hY3RpdmU+YSwuZHJvcGRvd24tbWVudT4uYWN0aXZlPmE6Zm9jdXMsLmRyb3Bkb3duLW1lbnU+LmFjdGl2ZT5hOmhvdmVyLC5kcm9wZG93bi1tZW51PmxpPmE6Zm9jdXMsLmRyb3Bkb3duLW1lbnU+bGk+YTpob3ZlciwuZHJvcGRvd24tc3VibWVudTpmb2N1cz5hLC5kcm9wZG93bi1zdWJtZW51OmhvdmVyPmF7Y29sb3I6I2ZmZjt0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiMwMDgxYzI7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCMwOGMsIzAwNzdiMyk7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXg7ZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPSIjZmYwMDg4Y2MiLGVuZENvbG9yc3RyPSIjZmYwMDc3YjMiLEdyYWRpZW50VHlwZT0wKX0uZHJvcGRvd24tbWVudT4uYWN0aXZlPmEsLmRyb3Bkb3duLW1lbnU+LmFjdGl2ZT5hOmZvY3VzLC5kcm9wZG93bi1tZW51Pi5hY3RpdmU+YTpob3ZlcntvdXRsaW5lOjB9LmRyb3Bkb3duLW1lbnU+LmRpc2FibGVkPmEsLmRyb3Bkb3duLW1lbnU+LmRpc2FibGVkPmE6Zm9jdXMsLmRyb3Bkb3duLW1lbnU+LmRpc2FibGVkPmE6aG92ZXJ7Y29sb3I6Izk5OX0uZHJvcGRvd24tbWVudT4uZGlzYWJsZWQ+YTpmb2N1cywuZHJvcGRvd24tbWVudT4uZGlzYWJsZWQ+YTpob3Zlcnt0ZXh0LWRlY29yYXRpb246bm9uZTtjdXJzb3I6ZGVmYXVsdDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtaW1hZ2U6bm9uZTtmaWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KGVuYWJsZWQ9ZmFsc2UpfS5vcGVueyp6LWluZGV4OjEwMDB9Lm9wZW4+LmRyb3Bkb3duLW1lbnV7ZGlzcGxheTpibG9ja30uZHJvcGRvd24tYmFja2Ryb3B7cG9zaXRpb246Zml4ZWQ7dG9wOjA7cmlnaHQ6MDtib3R0b206MDtsZWZ0OjA7ei1pbmRleDo5OTB9LnB1bGwtcmlnaHQ+LmRyb3Bkb3duLW1lbnV7cmlnaHQ6MDtsZWZ0OmF1dG99LmRyb3B1cCAuY2FyZXQsLm5hdmJhci1maXhlZC1ib3R0b20gLmRyb3Bkb3duIC5jYXJldHtib3JkZXItdG9wOjA7Ym9yZGVyLWJvdHRvbTo0cHggc29saWQgIzAwMDtjb250ZW50OiIifS5kcm9wdXAgLmRyb3Bkb3duLW1lbnUsLm5hdmJhci1maXhlZC1ib3R0b20gLmRyb3Bkb3duIC5kcm9wZG93bi1tZW51e3RvcDphdXRvO2JvdHRvbToxMDAlO21hcmdpbi1ib3R0b206MXB4fS5kcm9wZG93bi1zdWJtZW51e3Bvc2l0aW9uOnJlbGF0aXZlfS5kcm9wZG93bi1zdWJtZW51Pi5kcm9wZG93bi1tZW51e3RvcDowO2xlZnQ6MTAwJTttYXJnaW4tdG9wOi02cHg7bWFyZ2luLWxlZnQ6LTFweDtib3JkZXItcmFkaXVzOjAgNnB4IDZweCA2cHh9LmRyb3Bkb3duLXN1Ym1lbnU6aG92ZXI+LmRyb3Bkb3duLW1lbnV7ZGlzcGxheTpibG9ja30uZHJvcHVwIC5kcm9wZG93bi1zdWJtZW51Pi5kcm9wZG93bi1tZW51e3RvcDphdXRvO2JvdHRvbTowO21hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOi0ycHg7Ym9yZGVyLXJhZGl1czo1cHggNXB4IDVweCAwfS5kcm9wZG93bi1zdWJtZW51PmE6YWZ0ZXJ7ZGlzcGxheTpibG9jaztmbG9hdDpyaWdodDt3aWR0aDowO2hlaWdodDowO21hcmdpbi10b3A6NXB4O21hcmdpbi1yaWdodDotMTBweDtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyLWxlZnQtY29sb3I6I2NjYztib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOjVweCAwIDVweCA1cHg7Y29udGVudDoiICJ9LmRyb3Bkb3duLXN1Ym1lbnU6aG92ZXI+YTphZnRlcntib3JkZXItbGVmdC1jb2xvcjojZmZmfS5kcm9wZG93bi1zdWJtZW51LnB1bGwtbGVmdHtmbG9hdDpub25lfS5kcm9wZG93bi1zdWJtZW51LnB1bGwtbGVmdD4uZHJvcGRvd24tbWVudXtsZWZ0Oi0xMDAlO21hcmdpbi1sZWZ0OjEwcHg7Ym9yZGVyLXJhZGl1czo2cHggMCA2cHggNnB4fS5kcm9wZG93biAuZHJvcGRvd24tbWVudSAubmF2LWhlYWRlcntwYWRkaW5nLXJpZ2h0OjIwcHg7cGFkZGluZy1sZWZ0OjIwcHh9LnR5cGVhaGVhZHt6LWluZGV4OjEwNTE7bWFyZ2luLXRvcDoycHg7Ym9yZGVyLXJhZGl1czo0cHh9LndlbGx7bWluLWhlaWdodDoyMHB4O3BhZGRpbmc6MTlweDttYXJnaW4tYm90dG9tOjIwcHg7YmFja2dyb3VuZC1jb2xvcjojZjVmNWY1O2JvcmRlcjoxcHggc29saWQgI2UzZTNlMztib3JkZXItcmFkaXVzOjRweDtib3gtc2hhZG93Omluc2V0IDAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNSl9LndlbGwgYmxvY2txdW90ZXtib3JkZXItY29sb3I6I2RkZDtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMTUpfS53ZWxsLWxhcmdle3BhZGRpbmc6MjRweDtib3JkZXItcmFkaXVzOjZweH0ud2VsbC1zbWFsbHtwYWRkaW5nOjlweDtib3JkZXItcmFkaXVzOjNweH0uZmFkZXtvcGFjaXR5OjA7dHJhbnNpdGlvbjpvcGFjaXR5IC4xNXMgbGluZWFyfS5mYWRlLmlue29wYWNpdHk6MX0uY29sbGFwc2V7cG9zaXRpb246cmVsYXRpdmU7aGVpZ2h0OjA7b3ZlcmZsb3c6aGlkZGVuO3RyYW5zaXRpb246aGVpZ2h0IC4zNXMgZWFzZX0uY29sbGFwc2UuaW57aGVpZ2h0OmF1dG99LmNsb3Nle2Zsb2F0OnJpZ2h0O2ZvbnQtc2l6ZToyMHB4O2ZvbnQtd2VpZ2h0OjcwMDtsaW5lLWhlaWdodDoyMHB4O2NvbG9yOiMwMDA7dGV4dC1zaGFkb3c6MCAxcHggMCAjZmZmO29wYWNpdHk6LjI7ZmlsdGVyOmFscGhhKG9wYWNpdHk9MjApfS5jbG9zZTpmb2N1cywuY2xvc2U6aG92ZXJ7Y29sb3I6IzAwMDt0ZXh0LWRlY29yYXRpb246bm9uZTtjdXJzb3I6cG9pbnRlcjtvcGFjaXR5Oi40O2ZpbHRlcjphbHBoYShvcGFjaXR5PTQwKX1idXR0b24uY2xvc2V7cGFkZGluZzowO2N1cnNvcjpwb2ludGVyO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym9yZGVyOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9LmJ0bntkaXNwbGF5OmlubGluZS1ibG9jazsqZGlzcGxheTppbmxpbmU7cGFkZGluZzo0cHggMTJweDttYXJnaW4tYm90dG9tOjA7Km1hcmdpbi1sZWZ0Oi4zZW07Zm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MjBweDtjb2xvcjojMzMzO3RleHQtYWxpZ246Y2VudGVyO3RleHQtc2hhZG93OjAgMXB4IDFweCBoc2xhKDAsMCUsMTAwJSwuNzUpO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiNmNWY1ZjU7KmJhY2tncm91bmQtY29sb3I6I2U2ZTZlNjtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCgxODBkZWcsI2ZmZiwjZTZlNmU2KTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteDtib3JkZXI6MXB4IHNvbGlkICNjY2M7KmJvcmRlcjowO2JvcmRlci1jb2xvcjojZTZlNmU2ICNlNmU2ZTYgI2JmYmZiZjtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMSkgcmdiYSgwLDAsMCwuMSkgcmdiYSgwLDAsMCwuMjUpO2JvcmRlci1ib3R0b20tY29sb3I6I2IzYjNiMztib3JkZXItcmFkaXVzOjRweDtmaWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9IiNmZmZmZmZmZiIsZW5kQ29sb3JzdHI9IiNmZmU2ZTZlNiIsR3JhZGllbnRUeXBlPTApO2ZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoZW5hYmxlZD1mYWxzZSk7Knpvb206MTtib3gtc2hhZG93Omluc2V0IDAgMXB4IDAgaHNsYSgwLDAlLDEwMCUsLjIpLDAgMXB4IDJweCByZ2JhKDAsMCwwLC4wNSl9LmJ0bi5hY3RpdmUsLmJ0bi5kaXNhYmxlZCwuYnRuOmFjdGl2ZSwuYnRuOmZvY3VzLC5idG46aG92ZXIsLmJ0bltkaXNhYmxlZF17Y29sb3I6IzMzMztiYWNrZ3JvdW5kLWNvbG9yOiNlNmU2ZTY7KmJhY2tncm91bmQtY29sb3I6I2Q5ZDlkOX0uYnRuLmFjdGl2ZSwuYnRuOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOiNjY2NcOX0uYnRuOmZpcnN0LWNoaWxkeyptYXJnaW4tbGVmdDowfS5idG46Zm9jdXMsLmJ0bjpob3Zlcntjb2xvcjojMzMzO3RleHQtZGVjb3JhdGlvbjpub25lO2JhY2tncm91bmQtcG9zaXRpb246MCAtMTVweDt0cmFuc2l0aW9uOmJhY2tncm91bmQtcG9zaXRpb24gLjFzIGxpbmVhcn0uYnRuOmZvY3Vze291dGxpbmU6dGhpbiBkb3R0ZWQgIzMzMztvdXRsaW5lOjVweCBhdXRvIC13ZWJraXQtZm9jdXMtcmluZy1jb2xvcjtvdXRsaW5lLW9mZnNldDotMnB4fS5idG4uYWN0aXZlLC5idG46YWN0aXZle2JhY2tncm91bmQtaW1hZ2U6bm9uZTtvdXRsaW5lOjA7Ym94LXNoYWRvdzppbnNldCAwIDJweCA0cHggcmdiYSgwLDAsMCwuMTUpLDAgMXB4IDJweCByZ2JhKDAsMCwwLC4wNSl9LmJ0bi5kaXNhYmxlZCwuYnRuW2Rpc2FibGVkXXtjdXJzb3I6ZGVmYXVsdDtiYWNrZ3JvdW5kLWltYWdlOm5vbmU7b3BhY2l0eTouNjU7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NjUpO2JveC1zaGFkb3c6bm9uZX0uYnRuLWxhcmdle3BhZGRpbmc6MTFweCAxOXB4O2ZvbnQtc2l6ZToxNy41cHg7Ym9yZGVyLXJhZGl1czo2cHh9LmJ0bi1sYXJnZSBbY2xhc3MqPSIgaWNvbi0iXSwuYnRuLWxhcmdlIFtjbGFzc149aWNvbi1de21hcmdpbi10b3A6NHB4fS5idG4tc21hbGx7cGFkZGluZzoycHggMTBweDtmb250LXNpemU6MTEuOXB4O2JvcmRlci1yYWRpdXM6M3B4fS5idG4tc21hbGwgW2NsYXNzKj0iIGljb24tIl0sLmJ0bi1zbWFsbCBbY2xhc3NePWljb24tXXttYXJnaW4tdG9wOjB9LmJ0bi1taW5pIFtjbGFzcyo9IiBpY29uLSJdLC5idG4tbWluaSBbY2xhc3NePWljb24tXXttYXJnaW4tdG9wOi0xcHh9LmJ0bi1taW5pe3BhZGRpbmc6MCA2cHg7Zm9udC1zaXplOjEwLjVweDtib3JkZXItcmFkaXVzOjNweH0uYnRuLWJsb2Nre2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTtwYWRkaW5nLXJpZ2h0OjA7cGFkZGluZy1sZWZ0OjA7Ym94LXNpemluZzpib3JkZXItYm94fS5idG4tYmxvY2srLmJ0bi1ibG9ja3ttYXJnaW4tdG9wOjVweH1pbnB1dFt0eXBlPWJ1dHRvbl0uYnRuLWJsb2NrLGlucHV0W3R5cGU9cmVzZXRdLmJ0bi1ibG9jayxpbnB1dFt0eXBlPXN1Ym1pdF0uYnRuLWJsb2Nre3dpZHRoOjEwMCV9LmJ0bi1kYW5nZXIuYWN0aXZlLC5idG4taW5mby5hY3RpdmUsLmJ0bi1pbnZlcnNlLmFjdGl2ZSwuYnRuLXByaW1hcnkuYWN0aXZlLC5idG4tc3VjY2Vzcy5hY3RpdmUsLmJ0bi13YXJuaW5nLmFjdGl2ZXtjb2xvcjpoc2xhKDAsMCUsMTAwJSwuNzUpfS5idG4tcHJpbWFyeXtjb2xvcjojZmZmO3RleHQtc2hhZG93OjAgLTFweCAwIHJnYmEoMCwwLDAsLjI1KTtiYWNrZ3JvdW5kLWNvbG9yOiMwMDZkY2M7KmJhY2tncm91bmQtY29sb3I6IzA0YztiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCgxODBkZWcsIzA4YywjMDRjKTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteDtib3JkZXItY29sb3I6IzA0YyAjMDRjICMwMDJhODA7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjEpIHJnYmEoMCwwLDAsLjEpIHJnYmEoMCwwLDAsLjI1KTtmaWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9IiNmZjAwODhjYyIsZW5kQ29sb3JzdHI9IiNmZjAwNDRjYyIsR3JhZGllbnRUeXBlPTApO2ZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoZW5hYmxlZD1mYWxzZSl9LmJ0bi1wcmltYXJ5LmFjdGl2ZSwuYnRuLXByaW1hcnkuZGlzYWJsZWQsLmJ0bi1wcmltYXJ5OmFjdGl2ZSwuYnRuLXByaW1hcnk6Zm9jdXMsLmJ0bi1wcmltYXJ5OmhvdmVyLC5idG4tcHJpbWFyeVtkaXNhYmxlZF17Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMwNGM7KmJhY2tncm91bmQtY29sb3I6IzAwM2JiM30uYnRuLXByaW1hcnkuYWN0aXZlLC5idG4tcHJpbWFyeTphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjojMDM5XDl9LmJ0bi13YXJuaW5ne2NvbG9yOiNmZmY7dGV4dC1zaGFkb3c6MCAtMXB4IDAgcmdiYSgwLDAsMCwuMjUpO2JhY2tncm91bmQtY29sb3I6I2ZhYTczMjsqYmFja2dyb3VuZC1jb2xvcjojZjg5NDA2O2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDE4MGRlZywjZmJiNDUwLCNmODk0MDYpO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14O2JvcmRlci1jb2xvcjojZjg5NDA2ICNmODk0MDYgI2FkNjcwNDtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMSkgcmdiYSgwLDAsMCwuMSkgcmdiYSgwLDAsMCwuMjUpO2ZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0iI2ZmZmJiNDUwIixlbmRDb2xvcnN0cj0iI2ZmZjg5NDA2IixHcmFkaWVudFR5cGU9MCk7ZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChlbmFibGVkPWZhbHNlKX0uYnRuLXdhcm5pbmcuYWN0aXZlLC5idG4td2FybmluZy5kaXNhYmxlZCwuYnRuLXdhcm5pbmc6YWN0aXZlLC5idG4td2FybmluZzpmb2N1cywuYnRuLXdhcm5pbmc6aG92ZXIsLmJ0bi13YXJuaW5nW2Rpc2FibGVkXXtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6I2Y4OTQwNjsqYmFja2dyb3VuZC1jb2xvcjojZGY4NTA1fS5idG4td2FybmluZy5hY3RpdmUsLmJ0bi13YXJuaW5nOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOiNjNjc2MDVcOX0uYnRuLWRhbmdlcntjb2xvcjojZmZmO3RleHQtc2hhZG93OjAgLTFweCAwIHJnYmEoMCwwLDAsLjI1KTtiYWNrZ3JvdW5kLWNvbG9yOiNkYTRmNDk7KmJhY2tncm91bmQtY29sb3I6I2JkMzYyZjtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCgxODBkZWcsI2VlNWY1YiwjYmQzNjJmKTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteDtib3JkZXItY29sb3I6I2JkMzYyZiAjYmQzNjJmICM4MDI0MjA7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjEpIHJnYmEoMCwwLDAsLjEpIHJnYmEoMCwwLDAsLjI1KTtmaWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9IiNmZmVlNWY1YiIsZW5kQ29sb3JzdHI9IiNmZmJkMzYyZiIsR3JhZGllbnRUeXBlPTApO2ZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoZW5hYmxlZD1mYWxzZSl9LmJ0bi1kYW5nZXIuYWN0aXZlLC5idG4tZGFuZ2VyLmRpc2FibGVkLC5idG4tZGFuZ2VyOmFjdGl2ZSwuYnRuLWRhbmdlcjpmb2N1cywuYnRuLWRhbmdlcjpob3ZlciwuYnRuLWRhbmdlcltkaXNhYmxlZF17Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiNiZDM2MmY7KmJhY2tncm91bmQtY29sb3I6I2E5MzAyYX0uYnRuLWRhbmdlci5hY3RpdmUsLmJ0bi1kYW5nZXI6YWN0aXZle2JhY2tncm91bmQtY29sb3I6Izk0MmEyNVw5fS5idG4tc3VjY2Vzc3tjb2xvcjojZmZmO3RleHQtc2hhZG93OjAgLTFweCAwIHJnYmEoMCwwLDAsLjI1KTtiYWNrZ3JvdW5kLWNvbG9yOiM1YmI3NWI7KmJhY2tncm91bmQtY29sb3I6IzUxYTM1MTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCgxODBkZWcsIzYyYzQ2MiwjNTFhMzUxKTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteDtib3JkZXItY29sb3I6IzUxYTM1MSAjNTFhMzUxICMzODcwMzg7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjEpIHJnYmEoMCwwLDAsLjEpIHJnYmEoMCwwLDAsLjI1KTtmaWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9IiNmZjYyYzQ2MiIsZW5kQ29sb3JzdHI9IiNmZjUxYTM1MSIsR3JhZGllbnRUeXBlPTApO2ZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoZW5hYmxlZD1mYWxzZSl9LmJ0bi1zdWNjZXNzLmFjdGl2ZSwuYnRuLXN1Y2Nlc3MuZGlzYWJsZWQsLmJ0bi1zdWNjZXNzOmFjdGl2ZSwuYnRuLXN1Y2Nlc3M6Zm9jdXMsLmJ0bi1zdWNjZXNzOmhvdmVyLC5idG4tc3VjY2Vzc1tkaXNhYmxlZF17Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiM1MWEzNTE7KmJhY2tncm91bmQtY29sb3I6IzQ5OTI0OX0uYnRuLXN1Y2Nlc3MuYWN0aXZlLC5idG4tc3VjY2VzczphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjojNDA4MTQwXDl9LmJ0bi1pbmZve2NvbG9yOiNmZmY7dGV4dC1zaGFkb3c6MCAtMXB4IDAgcmdiYSgwLDAsMCwuMjUpO2JhY2tncm91bmQtY29sb3I6IzQ5YWZjZDsqYmFja2dyb3VuZC1jb2xvcjojMmY5NmI0O2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDE4MGRlZywjNWJjMGRlLCMyZjk2YjQpO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14O2JvcmRlci1jb2xvcjojMmY5NmI0ICMyZjk2YjQgIzFmNjM3Nztib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMSkgcmdiYSgwLDAsMCwuMSkgcmdiYSgwLDAsMCwuMjUpO2ZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0iI2ZmNWJjMGRlIixlbmRDb2xvcnN0cj0iI2ZmMmY5NmI0IixHcmFkaWVudFR5cGU9MCk7ZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChlbmFibGVkPWZhbHNlKX0uYnRuLWluZm8uYWN0aXZlLC5idG4taW5mby5kaXNhYmxlZCwuYnRuLWluZm86YWN0aXZlLC5idG4taW5mbzpmb2N1cywuYnRuLWluZm86aG92ZXIsLmJ0bi1pbmZvW2Rpc2FibGVkXXtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzJmOTZiNDsqYmFja2dyb3VuZC1jb2xvcjojMmE4NWEwfS5idG4taW5mby5hY3RpdmUsLmJ0bi1pbmZvOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOiMyNDc0OGNcOX0uYnRuLWludmVyc2V7Y29sb3I6I2ZmZjt0ZXh0LXNoYWRvdzowIC0xcHggMCByZ2JhKDAsMCwwLC4yNSk7YmFja2dyb3VuZC1jb2xvcjojMzYzNjM2OypiYWNrZ3JvdW5kLWNvbG9yOiMyMjI7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCM0NDQsIzIyMik7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXg7Ym9yZGVyLWNvbG9yOiMyMjIgIzIyMiAjMDAwO2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4xKSByZ2JhKDAsMCwwLC4xKSByZ2JhKDAsMCwwLC4yNSk7ZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPSIjZmY0NDQ0NDQiLGVuZENvbG9yc3RyPSIjZmYyMjIyMjIiLEdyYWRpZW50VHlwZT0wKTtmaWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KGVuYWJsZWQ9ZmFsc2UpfS5idG4taW52ZXJzZS5hY3RpdmUsLmJ0bi1pbnZlcnNlLmRpc2FibGVkLC5idG4taW52ZXJzZTphY3RpdmUsLmJ0bi1pbnZlcnNlOmZvY3VzLC5idG4taW52ZXJzZTpob3ZlciwuYnRuLWludmVyc2VbZGlzYWJsZWRde2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMjIyOypiYWNrZ3JvdW5kLWNvbG9yOiMxNTE1MTV9LmJ0bi1pbnZlcnNlLmFjdGl2ZSwuYnRuLWludmVyc2U6YWN0aXZle2JhY2tncm91bmQtY29sb3I6IzA4MDgwOFw5fWJ1dHRvbi5idG4saW5wdXRbdHlwZT1zdWJtaXRdLmJ0bnsqcGFkZGluZy10b3A6M3B4OypwYWRkaW5nLWJvdHRvbTozcHh9YnV0dG9uLmJ0bjo6LW1vei1mb2N1cy1pbm5lcixpbnB1dFt0eXBlPXN1Ym1pdF0uYnRuOjotbW96LWZvY3VzLWlubmVye3BhZGRpbmc6MDtib3JkZXI6MH1idXR0b24uYnRuLmJ0bi1sYXJnZSxpbnB1dFt0eXBlPXN1Ym1pdF0uYnRuLmJ0bi1sYXJnZXsqcGFkZGluZy10b3A6N3B4OypwYWRkaW5nLWJvdHRvbTo3cHh9YnV0dG9uLmJ0bi5idG4tc21hbGwsaW5wdXRbdHlwZT1zdWJtaXRdLmJ0bi5idG4tc21hbGx7KnBhZGRpbmctdG9wOjNweDsqcGFkZGluZy1ib3R0b206M3B4fWJ1dHRvbi5idG4uYnRuLW1pbmksaW5wdXRbdHlwZT1zdWJtaXRdLmJ0bi5idG4tbWluaXsqcGFkZGluZy10b3A6MXB4OypwYWRkaW5nLWJvdHRvbToxcHh9LmJ0bi1saW5rLC5idG4tbGluazphY3RpdmUsLmJ0bi1saW5rW2Rpc2FibGVkXXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtaW1hZ2U6bm9uZTtib3gtc2hhZG93Om5vbmV9LmJ0bi1saW5re2NvbG9yOiMwOGM7Y3Vyc29yOnBvaW50ZXI7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlci1yYWRpdXM6MH0uYnRuLWxpbms6Zm9jdXMsLmJ0bi1saW5rOmhvdmVye2NvbG9yOiMwMDU1ODA7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5idG4tbGlua1tkaXNhYmxlZF06Zm9jdXMsLmJ0bi1saW5rW2Rpc2FibGVkXTpob3Zlcntjb2xvcjojMzMzO3RleHQtZGVjb3JhdGlvbjpub25lfS5idG4tZ3JvdXB7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTppbmxpbmUtYmxvY2s7KmRpc3BsYXk6aW5saW5lOyptYXJnaW4tbGVmdDouM2VtO2ZvbnQtc2l6ZTowO3doaXRlLXNwYWNlOm5vd3JhcDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Knpvb206MX0uYnRuLWdyb3VwOmZpcnN0LWNoaWxkeyptYXJnaW4tbGVmdDowfS5idG4tZ3JvdXArLmJ0bi1ncm91cHttYXJnaW4tbGVmdDo1cHh9LmJ0bi10b29sYmFye21hcmdpbi10b3A6MTBweDttYXJnaW4tYm90dG9tOjEwcHg7Zm9udC1zaXplOjB9LmJ0bi10b29sYmFyPi5idG4rLmJ0biwuYnRuLXRvb2xiYXI+LmJ0bisuYnRuLWdyb3VwLC5idG4tdG9vbGJhcj4uYnRuLWdyb3VwKy5idG57bWFyZ2luLWxlZnQ6NXB4fS5idG4tZ3JvdXA+LmJ0bntwb3NpdGlvbjpyZWxhdGl2ZTtib3JkZXItcmFkaXVzOjB9LmJ0bi1ncm91cD4uYnRuKy5idG57bWFyZ2luLWxlZnQ6LTFweH0uYnRuLWdyb3VwPi5idG4sLmJ0bi1ncm91cD4uZHJvcGRvd24tbWVudSwuYnRuLWdyb3VwPi5wb3BvdmVye2ZvbnQtc2l6ZToxNHB4fS5idG4tZ3JvdXA+LmJ0bi1taW5pe2ZvbnQtc2l6ZToxMC41cHh9LmJ0bi1ncm91cD4uYnRuLXNtYWxse2ZvbnQtc2l6ZToxMS45cHh9LmJ0bi1ncm91cD4uYnRuLWxhcmdle2ZvbnQtc2l6ZToxNy41cHh9LmJ0bi1ncm91cD4uYnRuOmZpcnN0LWNoaWxke21hcmdpbi1sZWZ0OjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo0cHg7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czo0cHg7LW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6NHB4Oy1tb3otYm9yZGVyLXJhZGl1cy10b3BsZWZ0OjRweH0uYnRuLWdyb3VwPi5idG46bGFzdC1jaGlsZCwuYnRuLWdyb3VwPi5kcm9wZG93bi10b2dnbGV7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NHB4O2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjRweDstbW96LWJvcmRlci1yYWRpdXMtdG9wcmlnaHQ6NHB4Oy1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21yaWdodDo0cHh9LmJ0bi1ncm91cD4uYnRuLmxhcmdlOmZpcnN0LWNoaWxke21hcmdpbi1sZWZ0OjA7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo2cHg7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czo2cHg7LW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6NnB4Oy1tb3otYm9yZGVyLXJhZGl1cy10b3BsZWZ0OjZweH0uYnRuLWdyb3VwPi5idG4ubGFyZ2U6bGFzdC1jaGlsZCwuYnRuLWdyb3VwPi5sYXJnZS5kcm9wZG93bi10b2dnbGV7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NnB4O2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjZweDstbW96LWJvcmRlci1yYWRpdXMtdG9wcmlnaHQ6NnB4Oy1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21yaWdodDo2cHh9LmJ0bi1ncm91cD4uYnRuLmFjdGl2ZSwuYnRuLWdyb3VwPi5idG46YWN0aXZlLC5idG4tZ3JvdXA+LmJ0bjpmb2N1cywuYnRuLWdyb3VwPi5idG46aG92ZXJ7ei1pbmRleDoyfS5idG4tZ3JvdXAgLmRyb3Bkb3duLXRvZ2dsZTphY3RpdmUsLmJ0bi1ncm91cC5vcGVuIC5kcm9wZG93bi10b2dnbGV7b3V0bGluZTowfS5idG4tZ3JvdXA+LmJ0bisuZHJvcGRvd24tdG9nZ2xle3BhZGRpbmc6NXB4IDhweDtib3gtc2hhZG93Omluc2V0IDFweCAwIDAgaHNsYSgwLDAlLDEwMCUsLjEyNSksaW5zZXQgMCAxcHggMCBoc2xhKDAsMCUsMTAwJSwuMiksMCAxcHggMnB4IHJnYmEoMCwwLDAsLjA1KX0uYnRuLWdyb3VwPi5idG4tbWluaSsuZHJvcGRvd24tdG9nZ2xle3BhZGRpbmc6MnB4IDVweH0uYnRuLWdyb3VwPi5idG4tc21hbGwrLmRyb3Bkb3duLXRvZ2dsZXsqcGFkZGluZy10b3A6NXB4OypwYWRkaW5nLWJvdHRvbTo0cHh9LmJ0bi1ncm91cD4uYnRuLWxhcmdlKy5kcm9wZG93bi10b2dnbGV7cGFkZGluZzo3cHggMTJweH0uYnRuLWdyb3VwLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZXtiYWNrZ3JvdW5kLWltYWdlOm5vbmU7Ym94LXNoYWRvdzppbnNldCAwIDJweCA0cHggcmdiYSgwLDAsMCwuMTUpLDAgMXB4IDJweCByZ2JhKDAsMCwwLC4wNSl9LmJ0bi1ncm91cC5vcGVuIC5idG4uZHJvcGRvd24tdG9nZ2xle2JhY2tncm91bmQtY29sb3I6I2U2ZTZlNn0uYnRuLWdyb3VwLm9wZW4gLmJ0bi1wcmltYXJ5LmRyb3Bkb3duLXRvZ2dsZXtiYWNrZ3JvdW5kLWNvbG9yOiMwNGN9LmJ0bi1ncm91cC5vcGVuIC5idG4td2FybmluZy5kcm9wZG93bi10b2dnbGV7YmFja2dyb3VuZC1jb2xvcjojZjg5NDA2fS5idG4tZ3JvdXAub3BlbiAuYnRuLWRhbmdlci5kcm9wZG93bi10b2dnbGV7YmFja2dyb3VuZC1jb2xvcjojYmQzNjJmfS5idG4tZ3JvdXAub3BlbiAuYnRuLXN1Y2Nlc3MuZHJvcGRvd24tdG9nZ2xle2JhY2tncm91bmQtY29sb3I6IzUxYTM1MX0uYnRuLWdyb3VwLm9wZW4gLmJ0bi1pbmZvLmRyb3Bkb3duLXRvZ2dsZXtiYWNrZ3JvdW5kLWNvbG9yOiMyZjk2YjR9LmJ0bi1ncm91cC5vcGVuIC5idG4taW52ZXJzZS5kcm9wZG93bi10b2dnbGV7YmFja2dyb3VuZC1jb2xvcjojMjIyfS5idG4gLmNhcmV0e21hcmdpbi10b3A6OHB4O21hcmdpbi1sZWZ0OjB9LmJ0bi1sYXJnZSAuY2FyZXR7bWFyZ2luLXRvcDo2cHg7Ym9yZGVyLXRvcC13aWR0aDo1cHg7Ym9yZGVyLXJpZ2h0LXdpZHRoOjVweDtib3JkZXItbGVmdC13aWR0aDo1cHh9LmJ0bi1taW5pIC5jYXJldCwuYnRuLXNtYWxsIC5jYXJldHttYXJnaW4tdG9wOjhweH0uZHJvcHVwIC5idG4tbGFyZ2UgLmNhcmV0e2JvcmRlci1ib3R0b20td2lkdGg6NXB4fS5idG4tZGFuZ2VyIC5jYXJldCwuYnRuLWluZm8gLmNhcmV0LC5idG4taW52ZXJzZSAuY2FyZXQsLmJ0bi1wcmltYXJ5IC5jYXJldCwuYnRuLXN1Y2Nlc3MgLmNhcmV0LC5idG4td2FybmluZyAuY2FyZXR7Ym9yZGVyLXRvcC1jb2xvcjojZmZmO2JvcmRlci1ib3R0b20tY29sb3I6I2ZmZn0uYnRuLWdyb3VwLXZlcnRpY2Fse2Rpc3BsYXk6aW5saW5lLWJsb2NrOypkaXNwbGF5OmlubGluZTsqem9vbToxfS5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bntkaXNwbGF5OmJsb2NrO2Zsb2F0Om5vbmU7bWF4LXdpZHRoOjEwMCU7Ym9yZGVyLXJhZGl1czowfS5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bisuYnRue21hcmdpbi10b3A6LTFweDttYXJnaW4tbGVmdDowfS5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bjpmaXJzdC1jaGlsZHtib3JkZXItcmFkaXVzOjRweCA0cHggMCAwfS5idG4tZ3JvdXAtdmVydGljYWw+LmJ0bjpsYXN0LWNoaWxke2JvcmRlci1yYWRpdXM6MCAwIDRweCA0cHh9LmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuLWxhcmdlOmZpcnN0LWNoaWxke2JvcmRlci1yYWRpdXM6NnB4IDZweCAwIDB9LmJ0bi1ncm91cC12ZXJ0aWNhbD4uYnRuLWxhcmdlOmxhc3QtY2hpbGR7Ym9yZGVyLXJhZGl1czowIDAgNnB4IDZweH0uYWxlcnR7bWFyZ2luLWJvdHRvbToyMHB4O3RleHQtc2hhZG93OjAgMXB4IDAgaHNsYSgwLDAlLDEwMCUsLjUpO2JhY2tncm91bmQtY29sb3I6I2ZjZjhlMztib3JkZXI6MXB4IHNvbGlkICNmYmVlZDU7Ym9yZGVyLXJhZGl1czo0cHh9LmFsZXJ0LC5hbGVydCBoNHtjb2xvcjojYzA5ODUzfS5hbGVydCBoNHttYXJnaW46MH0uYWxlcnQgLmNsb3Nle3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDotMnB4O3JpZ2h0Oi0yMXB4O2xpbmUtaGVpZ2h0OjIwcHh9LmFsZXJ0LXN1Y2Nlc3N7Y29sb3I6IzQ2ODg0NztiYWNrZ3JvdW5kLWNvbG9yOiNkZmYwZDg7Ym9yZGVyLWNvbG9yOiNkNmU5YzZ9LmFsZXJ0LXN1Y2Nlc3MgaDR7Y29sb3I6IzQ2ODg0N30uYWxlcnQtZGFuZ2VyLC5hbGVydC1lcnJvcntjb2xvcjojYjk0YTQ4O2JhY2tncm91bmQtY29sb3I6I2YyZGVkZTtib3JkZXItY29sb3I6I2VlZDNkN30uYWxlcnQtZGFuZ2VyIGg0LC5hbGVydC1lcnJvciBoNHtjb2xvcjojYjk0YTQ4fS5hbGVydC1pbmZve2JhY2tncm91bmQtY29sb3I6I2Q5ZWRmNztib3JkZXItY29sb3I6I2JjZThmMX0uYWxlcnQtaW5mbywuYWxlcnQtaW5mbyBoNHtjb2xvcjojM2E4N2FkfS5hbGVydC1ibG9ja3twYWRkaW5nLXRvcDoxNHB4O3BhZGRpbmctYm90dG9tOjE0cHh9LmFsZXJ0LWJsb2NrPnAsLmFsZXJ0LWJsb2NrPnVse21hcmdpbi1ib3R0b206MH0uYWxlcnQtYmxvY2sgcCtwe21hcmdpbi10b3A6NXB4fS5uYXZ7bWFyZ2luLWJvdHRvbToyMHB4O21hcmdpbi1sZWZ0OjA7bGlzdC1zdHlsZTpub25lfS5uYXY+bGk+YXtkaXNwbGF5OmJsb2NrfS5uYXY+bGk+YTpmb2N1cywubmF2PmxpPmE6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojZWVlfS5uYXY+bGk+YT5pbWd7bWF4LXdpZHRoOm5vbmV9Lm5hdj4ucHVsbC1yaWdodHtmbG9hdDpyaWdodH0ubmF2LWhlYWRlcntkaXNwbGF5OmJsb2NrO3BhZGRpbmc6M3B4IDE1cHg7Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NzAwO2xpbmUtaGVpZ2h0OjIwcHg7Y29sb3I6Izk5OTt0ZXh0LXNoYWRvdzowIDFweCAwIGhzbGEoMCwwJSwxMDAlLC41KTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9Lm5hdiBsaSsubmF2LWhlYWRlcnttYXJnaW4tdG9wOjlweH0ubmF2LWxpc3R7cGFkZGluZy1yaWdodDoxNXB4O3BhZGRpbmctbGVmdDoxNXB4O21hcmdpbi1ib3R0b206MH0ubmF2LWxpc3QgLm5hdi1oZWFkZXIsLm5hdi1saXN0PmxpPmF7bWFyZ2luLXJpZ2h0Oi0xNXB4O21hcmdpbi1sZWZ0Oi0xNXB4O3RleHQtc2hhZG93OjAgMXB4IDAgaHNsYSgwLDAlLDEwMCUsLjUpfS5uYXYtbGlzdD5saT5he3BhZGRpbmc6M3B4IDE1cHh9Lm5hdi1saXN0Pi5hY3RpdmU+YSwubmF2LWxpc3Q+LmFjdGl2ZT5hOmZvY3VzLC5uYXYtbGlzdD4uYWN0aXZlPmE6aG92ZXJ7Y29sb3I6I2ZmZjt0ZXh0LXNoYWRvdzowIC0xcHggMCByZ2JhKDAsMCwwLC4yKTtiYWNrZ3JvdW5kLWNvbG9yOiMwOGN9Lm5hdi1saXN0IFtjbGFzcyo9IiBpY29uLSJdLC5uYXYtbGlzdCBbY2xhc3NePWljb24tXXttYXJnaW4tcmlnaHQ6MnB4fS5uYXYtbGlzdCAuZGl2aWRlcnsqd2lkdGg6MTAwJTtoZWlnaHQ6MXB4O21hcmdpbjo5cHggMXB4OyptYXJnaW46LTVweCAwIDVweDtvdmVyZmxvdzpoaWRkZW47YmFja2dyb3VuZC1jb2xvcjojZTVlNWU1O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNmZmZ9Lm5hdi1waWxscywubmF2LXRhYnN7Knpvb206MX0ubmF2LXBpbGxzOmFmdGVyLC5uYXYtcGlsbHM6YmVmb3JlLC5uYXYtdGFiczphZnRlciwubmF2LXRhYnM6YmVmb3Jle2Rpc3BsYXk6dGFibGU7bGluZS1oZWlnaHQ6MDtjb250ZW50OiIifS5uYXYtcGlsbHM6YWZ0ZXIsLm5hdi10YWJzOmFmdGVye2NsZWFyOmJvdGh9Lm5hdi1waWxscz5saSwubmF2LXRhYnM+bGl7ZmxvYXQ6bGVmdH0ubmF2LXBpbGxzPmxpPmEsLm5hdi10YWJzPmxpPmF7cGFkZGluZy1yaWdodDoxMnB4O3BhZGRpbmctbGVmdDoxMnB4O21hcmdpbi1yaWdodDoycHg7bGluZS1oZWlnaHQ6MTRweH0ubmF2LXRhYnN7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2RkZH0ubmF2LXRhYnM+bGl7bWFyZ2luLWJvdHRvbTotMXB4fS5uYXYtdGFicz5saT5he3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHg7bGluZS1oZWlnaHQ6MjBweDtib3JkZXI6MXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yYWRpdXM6NHB4IDRweCAwIDB9Lm5hdi10YWJzPmxpPmE6Zm9jdXMsLm5hdi10YWJzPmxpPmE6aG92ZXJ7Ym9yZGVyLWNvbG9yOiNlZWUgI2VlZSAjZGRkfS5uYXYtdGFicz4uYWN0aXZlPmEsLm5hdi10YWJzPi5hY3RpdmU+YTpmb2N1cywubmF2LXRhYnM+LmFjdGl2ZT5hOmhvdmVye2NvbG9yOiM1NTU7Y3Vyc29yOmRlZmF1bHQ7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgI2RkZDtib3JkZXItYm90dG9tLWNvbG9yOnRyYW5zcGFyZW50fS5uYXYtcGlsbHM+bGk+YXtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4O21hcmdpbi10b3A6MnB4O21hcmdpbi1ib3R0b206MnB4O2JvcmRlci1yYWRpdXM6NXB4fS5uYXYtcGlsbHM+LmFjdGl2ZT5hLC5uYXYtcGlsbHM+LmFjdGl2ZT5hOmZvY3VzLC5uYXYtcGlsbHM+LmFjdGl2ZT5hOmhvdmVye2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMDhjfS5uYXYtc3RhY2tlZD5saXtmbG9hdDpub25lfS5uYXYtc3RhY2tlZD5saT5he21hcmdpbi1yaWdodDowfS5uYXYtdGFicy5uYXYtc3RhY2tlZHtib3JkZXItYm90dG9tOjB9Lm5hdi10YWJzLm5hdi1zdGFja2VkPmxpPmF7Ym9yZGVyOjFweCBzb2xpZCAjZGRkO2JvcmRlci1yYWRpdXM6MH0ubmF2LXRhYnMubmF2LXN0YWNrZWQ+bGk6Zmlyc3QtY2hpbGQ+YXtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czo0cHg7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czo0cHg7LW1vei1ib3JkZXItcmFkaXVzLXRvcHJpZ2h0OjRweDstbW96LWJvcmRlci1yYWRpdXMtdG9wbGVmdDo0cHh9Lm5hdi10YWJzLm5hdi1zdGFja2VkPmxpOmxhc3QtY2hpbGQ+YXtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo0cHg7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo0cHg7LW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbXJpZ2h0OjRweDstbW96LWJvcmRlci1yYWRpdXMtYm90dG9tbGVmdDo0cHh9Lm5hdi10YWJzLm5hdi1zdGFja2VkPmxpPmE6Zm9jdXMsLm5hdi10YWJzLm5hdi1zdGFja2VkPmxpPmE6aG92ZXJ7ei1pbmRleDoyO2JvcmRlci1jb2xvcjojZGRkfS5uYXYtcGlsbHMubmF2LXN0YWNrZWQ+bGk+YXttYXJnaW4tYm90dG9tOjNweH0ubmF2LXBpbGxzLm5hdi1zdGFja2VkPmxpOmxhc3QtY2hpbGQ+YXttYXJnaW4tYm90dG9tOjFweH0ubmF2LXRhYnMgLmRyb3Bkb3duLW1lbnV7Ym9yZGVyLXJhZGl1czowIDAgNnB4IDZweH0ubmF2LXBpbGxzIC5kcm9wZG93bi1tZW51e2JvcmRlci1yYWRpdXM6NnB4fS5uYXYgLmRyb3Bkb3duLXRvZ2dsZSAuY2FyZXR7bWFyZ2luLXRvcDo2cHg7Ym9yZGVyLXRvcC1jb2xvcjojMDhjO2JvcmRlci1ib3R0b20tY29sb3I6IzA4Y30ubmF2IC5kcm9wZG93bi10b2dnbGU6Zm9jdXMgLmNhcmV0LC5uYXYgLmRyb3Bkb3duLXRvZ2dsZTpob3ZlciAuY2FyZXR7Ym9yZGVyLXRvcC1jb2xvcjojMDA1NTgwO2JvcmRlci1ib3R0b20tY29sb3I6IzAwNTU4MH0ubmF2LXRhYnMgLmRyb3Bkb3duLXRvZ2dsZSAuY2FyZXR7bWFyZ2luLXRvcDo4cHh9Lm5hdiAuYWN0aXZlIC5kcm9wZG93bi10b2dnbGUgLmNhcmV0e2JvcmRlci10b3AtY29sb3I6I2ZmZjtib3JkZXItYm90dG9tLWNvbG9yOiNmZmZ9Lm5hdi10YWJzIC5hY3RpdmUgLmRyb3Bkb3duLXRvZ2dsZSAuY2FyZXR7Ym9yZGVyLXRvcC1jb2xvcjojNTU1O2JvcmRlci1ib3R0b20tY29sb3I6IzU1NX0ubmF2Pi5kcm9wZG93bi5hY3RpdmU+YTpmb2N1cywubmF2Pi5kcm9wZG93bi5hY3RpdmU+YTpob3ZlcntjdXJzb3I6cG9pbnRlcn0ubmF2LXBpbGxzIC5vcGVuIC5kcm9wZG93bi10b2dnbGUsLm5hdi10YWJzIC5vcGVuIC5kcm9wZG93bi10b2dnbGUsLm5hdj5saS5kcm9wZG93bi5vcGVuLmFjdGl2ZT5hOmZvY3VzLC5uYXY+bGkuZHJvcGRvd24ub3Blbi5hY3RpdmU+YTpob3Zlcntjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6Izk5OTtib3JkZXItY29sb3I6Izk5OX0ubmF2IGxpLmRyb3Bkb3duLm9wZW4uYWN0aXZlIC5jYXJldCwubmF2IGxpLmRyb3Bkb3duLm9wZW4gLmNhcmV0LC5uYXYgbGkuZHJvcGRvd24ub3BlbiBhOmZvY3VzIC5jYXJldCwubmF2IGxpLmRyb3Bkb3duLm9wZW4gYTpob3ZlciAuY2FyZXR7Ym9yZGVyLXRvcC1jb2xvcjojZmZmO2JvcmRlci1ib3R0b20tY29sb3I6I2ZmZjtvcGFjaXR5OjE7ZmlsdGVyOmFscGhhKG9wYWNpdHk9MTAwKX0udGFicy1zdGFja2VkIC5vcGVuPmE6Zm9jdXMsLnRhYnMtc3RhY2tlZCAub3Blbj5hOmhvdmVye2JvcmRlci1jb2xvcjojOTk5fS50YWJiYWJsZXsqem9vbToxfS50YWJiYWJsZTphZnRlciwudGFiYmFibGU6YmVmb3Jle2Rpc3BsYXk6dGFibGU7bGluZS1oZWlnaHQ6MDtjb250ZW50OiIifS50YWJiYWJsZTphZnRlcntjbGVhcjpib3RofS50YWItY29udGVudHtvdmVyZmxvdzphdXRvfS50YWJzLWJlbG93Pi5uYXYtdGFicywudGFicy1sZWZ0Pi5uYXYtdGFicywudGFicy1yaWdodD4ubmF2LXRhYnN7Ym9yZGVyLWJvdHRvbTowfS5waWxsLWNvbnRlbnQ+LnBpbGwtcGFuZSwudGFiLWNvbnRlbnQ+LnRhYi1wYW5le2Rpc3BsYXk6bm9uZX0ucGlsbC1jb250ZW50Pi5hY3RpdmUsLnRhYi1jb250ZW50Pi5hY3RpdmV7ZGlzcGxheTpibG9ja30udGFicy1iZWxvdz4ubmF2LXRhYnN7Ym9yZGVyLXRvcDoxcHggc29saWQgI2RkZH0udGFicy1iZWxvdz4ubmF2LXRhYnM+bGl7bWFyZ2luLXRvcDotMXB4O21hcmdpbi1ib3R0b206MH0udGFicy1iZWxvdz4ubmF2LXRhYnM+bGk+YXtib3JkZXItcmFkaXVzOjAgMCA0cHggNHB4fS50YWJzLWJlbG93Pi5uYXYtdGFicz5saT5hOmZvY3VzLC50YWJzLWJlbG93Pi5uYXYtdGFicz5saT5hOmhvdmVye2JvcmRlci10b3AtY29sb3I6I2RkZDtib3JkZXItYm90dG9tLWNvbG9yOnRyYW5zcGFyZW50fS50YWJzLWJlbG93Pi5uYXYtdGFicz4uYWN0aXZlPmEsLnRhYnMtYmVsb3c+Lm5hdi10YWJzPi5hY3RpdmU+YTpmb2N1cywudGFicy1iZWxvdz4ubmF2LXRhYnM+LmFjdGl2ZT5hOmhvdmVye2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudCAjZGRkICNkZGR9LnRhYnMtbGVmdD4ubmF2LXRhYnM+bGksLnRhYnMtcmlnaHQ+Lm5hdi10YWJzPmxpe2Zsb2F0Om5vbmV9LnRhYnMtbGVmdD4ubmF2LXRhYnM+bGk+YSwudGFicy1yaWdodD4ubmF2LXRhYnM+bGk+YXttaW4td2lkdGg6NzRweDttYXJnaW4tcmlnaHQ6MDttYXJnaW4tYm90dG9tOjNweH0udGFicy1sZWZ0Pi5uYXYtdGFic3tmbG9hdDpsZWZ0O21hcmdpbi1yaWdodDoxOXB4O2JvcmRlci1yaWdodDoxcHggc29saWQgI2RkZH0udGFicy1sZWZ0Pi5uYXYtdGFicz5saT5he21hcmdpbi1yaWdodDotMXB4O2JvcmRlci1yYWRpdXM6NHB4IDAgMCA0cHh9LnRhYnMtbGVmdD4ubmF2LXRhYnM+bGk+YTpmb2N1cywudGFicy1sZWZ0Pi5uYXYtdGFicz5saT5hOmhvdmVye2JvcmRlci1jb2xvcjojZWVlICNkZGQgI2VlZSAjZWVlfS50YWJzLWxlZnQ+Lm5hdi10YWJzIC5hY3RpdmU+YSwudGFicy1sZWZ0Pi5uYXYtdGFicyAuYWN0aXZlPmE6Zm9jdXMsLnRhYnMtbGVmdD4ubmF2LXRhYnMgLmFjdGl2ZT5hOmhvdmVye2JvcmRlci1jb2xvcjojZGRkIHRyYW5zcGFyZW50ICNkZGQgI2RkZDsqYm9yZGVyLXJpZ2h0LWNvbG9yOiNmZmZ9LnRhYnMtcmlnaHQ+Lm5hdi10YWJze2Zsb2F0OnJpZ2h0O21hcmdpbi1sZWZ0OjE5cHg7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNkZGR9LnRhYnMtcmlnaHQ+Lm5hdi10YWJzPmxpPmF7bWFyZ2luLWxlZnQ6LTFweDtib3JkZXItcmFkaXVzOjAgNHB4IDRweCAwfS50YWJzLXJpZ2h0Pi5uYXYtdGFicz5saT5hOmZvY3VzLC50YWJzLXJpZ2h0Pi5uYXYtdGFicz5saT5hOmhvdmVye2JvcmRlci1jb2xvcjojZWVlICNlZWUgI2VlZSAjZGRkfS50YWJzLXJpZ2h0Pi5uYXYtdGFicyAuYWN0aXZlPmEsLnRhYnMtcmlnaHQ+Lm5hdi10YWJzIC5hY3RpdmU+YTpmb2N1cywudGFicy1yaWdodD4ubmF2LXRhYnMgLmFjdGl2ZT5hOmhvdmVye2JvcmRlci1jb2xvcjojZGRkICNkZGQgI2RkZCB0cmFuc3BhcmVudDsqYm9yZGVyLWxlZnQtY29sb3I6I2ZmZn0ubmF2Pi5kaXNhYmxlZD5he2NvbG9yOiM5OTl9Lm5hdj4uZGlzYWJsZWQ+YTpmb2N1cywubmF2Pi5kaXNhYmxlZD5hOmhvdmVye3RleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpkZWZhdWx0O2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm5hdmJhcnsqcG9zaXRpb246cmVsYXRpdmU7KnotaW5kZXg6MjttYXJnaW4tYm90dG9tOjIwcHg7b3ZlcmZsb3c6dmlzaWJsZX0ubmF2YmFyLWlubmVye21pbi1oZWlnaHQ6NDBweDtwYWRkaW5nLXJpZ2h0OjIwcHg7cGFkZGluZy1sZWZ0OjIwcHg7YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDE4MGRlZywjZmZmLCNmMmYyZjIpO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14O2JvcmRlcjoxcHggc29saWQgI2Q0ZDRkNDtib3JkZXItcmFkaXVzOjRweDtmaWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9IiNmZmZmZmZmZiIsZW5kQ29sb3JzdHI9IiNmZmYyZjJmMiIsR3JhZGllbnRUeXBlPTApOyp6b29tOjE7Ym94LXNoYWRvdzowIDFweCA0cHggcmdiYSgwLDAsMCwuMDY1KX0ubmF2YmFyLWlubmVyOmFmdGVyLC5uYXZiYXItaW5uZXI6YmVmb3Jle2Rpc3BsYXk6dGFibGU7bGluZS1oZWlnaHQ6MDtjb250ZW50OiIifS5uYXZiYXItaW5uZXI6YWZ0ZXJ7Y2xlYXI6Ym90aH0ubmF2YmFyIC5jb250YWluZXJ7d2lkdGg6YXV0b30ubmF2LWNvbGxhcHNlLmNvbGxhcHNle2hlaWdodDphdXRvO292ZXJmbG93OnZpc2libGV9Lm5hdmJhciAuYnJhbmR7ZGlzcGxheTpibG9jaztmbG9hdDpsZWZ0O3BhZGRpbmc6MTBweCAyMHB4O21hcmdpbi1sZWZ0Oi0yMHB4O2ZvbnQtc2l6ZToyMHB4O2ZvbnQtd2VpZ2h0OjIwMDtjb2xvcjojNzc3O3RleHQtc2hhZG93OjAgMXB4IDAgI2ZmZn0ubmF2YmFyIC5icmFuZDpmb2N1cywubmF2YmFyIC5icmFuZDpob3Zlcnt0ZXh0LWRlY29yYXRpb246bm9uZX0ubmF2YmFyLXRleHR7bWFyZ2luLWJvdHRvbTowO2xpbmUtaGVpZ2h0OjQwcHg7Y29sb3I6Izc3N30ubmF2YmFyLWxpbmt7Y29sb3I6Izc3N30ubmF2YmFyLWxpbms6Zm9jdXMsLm5hdmJhci1saW5rOmhvdmVye2NvbG9yOiMzMzN9Lm5hdmJhciAuZGl2aWRlci12ZXJ0aWNhbHtoZWlnaHQ6NDBweDttYXJnaW46MCA5cHg7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZmZmO2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjZjJmMmYyfS5uYXZiYXIgLmJ0biwubmF2YmFyIC5idG4tZ3JvdXB7bWFyZ2luLXRvcDo1cHh9Lm5hdmJhciAuYnRuLWdyb3VwIC5idG4sLm5hdmJhciAuaW5wdXQtYXBwZW5kIC5idG4sLm5hdmJhciAuaW5wdXQtYXBwZW5kIC5idG4tZ3JvdXAsLm5hdmJhciAuaW5wdXQtcHJlcGVuZCAuYnRuLC5uYXZiYXIgLmlucHV0LXByZXBlbmQgLmJ0bi1ncm91cHttYXJnaW4tdG9wOjB9Lm5hdmJhci1mb3Jte21hcmdpbi1ib3R0b206MDsqem9vbToxfS5uYXZiYXItZm9ybTphZnRlciwubmF2YmFyLWZvcm06YmVmb3Jle2Rpc3BsYXk6dGFibGU7bGluZS1oZWlnaHQ6MDtjb250ZW50OiIifS5uYXZiYXItZm9ybTphZnRlcntjbGVhcjpib3RofS5uYXZiYXItZm9ybSAuY2hlY2tib3gsLm5hdmJhci1mb3JtIC5yYWRpbywubmF2YmFyLWZvcm0gaW5wdXQsLm5hdmJhci1mb3JtIHNlbGVjdHttYXJnaW4tdG9wOjVweH0ubmF2YmFyLWZvcm0gLmJ0biwubmF2YmFyLWZvcm0gaW5wdXQsLm5hdmJhci1mb3JtIHNlbGVjdHtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tYm90dG9tOjB9Lm5hdmJhci1mb3JtIGlucHV0W3R5cGU9Y2hlY2tib3hdLC5uYXZiYXItZm9ybSBpbnB1dFt0eXBlPWltYWdlXSwubmF2YmFyLWZvcm0gaW5wdXRbdHlwZT1yYWRpb117bWFyZ2luLXRvcDozcHh9Lm5hdmJhci1mb3JtIC5pbnB1dC1hcHBlbmQsLm5hdmJhci1mb3JtIC5pbnB1dC1wcmVwZW5ke21hcmdpbi10b3A6NXB4O3doaXRlLXNwYWNlOm5vd3JhcH0ubmF2YmFyLWZvcm0gLmlucHV0LWFwcGVuZCBpbnB1dCwubmF2YmFyLWZvcm0gLmlucHV0LXByZXBlbmQgaW5wdXR7bWFyZ2luLXRvcDowfS5uYXZiYXItc2VhcmNoe3Bvc2l0aW9uOnJlbGF0aXZlO2Zsb2F0OmxlZnQ7bWFyZ2luLXRvcDo1cHg7bWFyZ2luLWJvdHRvbTowfS5uYXZiYXItc2VhcmNoIC5zZWFyY2gtcXVlcnl7cGFkZGluZzo0cHggMTRweDttYXJnaW4tYm90dG9tOjA7Zm9udC1mYW1pbHk6SGVsdmV0aWNhIE5ldWUsSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjE7Ym9yZGVyLXJhZGl1czoxNXB4fS5uYXZiYXItc3RhdGljLXRvcHtwb3NpdGlvbjpzdGF0aWM7bWFyZ2luLWJvdHRvbTowfS5uYXZiYXItc3RhdGljLXRvcCAubmF2YmFyLWlubmVye2JvcmRlci1yYWRpdXM6MH0ubmF2YmFyLWZpeGVkLWJvdHRvbSwubmF2YmFyLWZpeGVkLXRvcHtwb3NpdGlvbjpmaXhlZDtyaWdodDowO2xlZnQ6MDt6LWluZGV4OjEwMzA7bWFyZ2luLWJvdHRvbTowfS5uYXZiYXItZml4ZWQtdG9wIC5uYXZiYXItaW5uZXIsLm5hdmJhci1zdGF0aWMtdG9wIC5uYXZiYXItaW5uZXJ7Ym9yZGVyLXdpZHRoOjAgMCAxcHh9Lm5hdmJhci1maXhlZC1ib3R0b20gLm5hdmJhci1pbm5lcntib3JkZXItd2lkdGg6MXB4IDAgMH0ubmF2YmFyLWZpeGVkLWJvdHRvbSAubmF2YmFyLWlubmVyLC5uYXZiYXItZml4ZWQtdG9wIC5uYXZiYXItaW5uZXJ7cGFkZGluZy1yaWdodDowO3BhZGRpbmctbGVmdDowO2JvcmRlci1yYWRpdXM6MH0ubmF2YmFyLWZpeGVkLWJvdHRvbSAuY29udGFpbmVyLC5uYXZiYXItZml4ZWQtdG9wIC5jb250YWluZXIsLm5hdmJhci1zdGF0aWMtdG9wIC5jb250YWluZXJ7d2lkdGg6OTQwcHh9Lm5hdmJhci1maXhlZC10b3B7dG9wOjB9Lm5hdmJhci1maXhlZC10b3AgLm5hdmJhci1pbm5lciwubmF2YmFyLXN0YXRpYy10b3AgLm5hdmJhci1pbm5lcntib3gtc2hhZG93OjAgMXB4IDEwcHggcmdiYSgwLDAsMCwuMSl9Lm5hdmJhci1maXhlZC1ib3R0b217Ym90dG9tOjB9Lm5hdmJhci1maXhlZC1ib3R0b20gLm5hdmJhci1pbm5lcntib3gtc2hhZG93OjAgLTFweCAxMHB4IHJnYmEoMCwwLDAsLjEpfS5uYXZiYXIgLm5hdntwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0OjA7ZGlzcGxheTpibG9jaztmbG9hdDpsZWZ0O21hcmdpbjowIDEwcHggMCAwfS5uYXZiYXIgLm5hdi5wdWxsLXJpZ2h0e2Zsb2F0OnJpZ2h0O21hcmdpbi1yaWdodDowfS5uYXZiYXIgLm5hdj5saXtmbG9hdDpsZWZ0fS5uYXZiYXIgLm5hdj5saT5he2Zsb2F0Om5vbmU7cGFkZGluZzoxMHB4IDE1cHg7Y29sb3I6Izc3Nzt0ZXh0LWRlY29yYXRpb246bm9uZTt0ZXh0LXNoYWRvdzowIDFweCAwICNmZmZ9Lm5hdmJhciAubmF2IC5kcm9wZG93bi10b2dnbGUgLmNhcmV0e21hcmdpbi10b3A6OHB4fS5uYXZiYXIgLm5hdj5saT5hOmZvY3VzLC5uYXZiYXIgLm5hdj5saT5hOmhvdmVye2NvbG9yOiMzMzM7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubmF2YmFyIC5uYXY+LmFjdGl2ZT5hLC5uYXZiYXIgLm5hdj4uYWN0aXZlPmE6Zm9jdXMsLm5hdmJhciAubmF2Pi5hY3RpdmU+YTpob3Zlcntjb2xvcjojNTU1O3RleHQtZGVjb3JhdGlvbjpub25lO2JhY2tncm91bmQtY29sb3I6I2U1ZTVlNTtib3gtc2hhZG93Omluc2V0IDAgM3B4IDhweCByZ2JhKDAsMCwwLC4xMjUpfS5uYXZiYXIgLmJ0bi1uYXZiYXJ7ZGlzcGxheTpub25lO2Zsb2F0OnJpZ2h0O3BhZGRpbmc6N3B4IDEwcHg7bWFyZ2luLXJpZ2h0OjVweDttYXJnaW4tbGVmdDo1cHg7Y29sb3I6I2ZmZjt0ZXh0LXNoYWRvdzowIC0xcHggMCByZ2JhKDAsMCwwLC4yNSk7YmFja2dyb3VuZC1jb2xvcjojZWRlZGVkOypiYWNrZ3JvdW5kLWNvbG9yOiNlNWU1ZTU7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCNmMmYyZjIsI2U1ZTVlNSk7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXg7Ym9yZGVyLWNvbG9yOiNlNWU1ZTUgI2U1ZTVlNSAjYmZiZmJmO2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4xKSByZ2JhKDAsMCwwLC4xKSByZ2JhKDAsMCwwLC4yNSk7ZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPSIjZmZmMmYyZjIiLGVuZENvbG9yc3RyPSIjZmZlNWU1ZTUiLEdyYWRpZW50VHlwZT0wKTtmaWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KGVuYWJsZWQ9ZmFsc2UpO2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMCBoc2xhKDAsMCUsMTAwJSwuMSksMCAxcHggMCBoc2xhKDAsMCUsMTAwJSwuMDc1KX0ubmF2YmFyIC5idG4tbmF2YmFyLmFjdGl2ZSwubmF2YmFyIC5idG4tbmF2YmFyLmRpc2FibGVkLC5uYXZiYXIgLmJ0bi1uYXZiYXI6YWN0aXZlLC5uYXZiYXIgLmJ0bi1uYXZiYXI6Zm9jdXMsLm5hdmJhciAuYnRuLW5hdmJhcjpob3ZlciwubmF2YmFyIC5idG4tbmF2YmFyW2Rpc2FibGVkXXtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6I2U1ZTVlNTsqYmFja2dyb3VuZC1jb2xvcjojZDlkOWQ5fS5uYXZiYXIgLmJ0bi1uYXZiYXIuYWN0aXZlLC5uYXZiYXIgLmJ0bi1uYXZiYXI6YWN0aXZle2JhY2tncm91bmQtY29sb3I6I2NjY1w5fS5uYXZiYXIgLmJ0bi1uYXZiYXIgLmljb24tYmFye2Rpc3BsYXk6YmxvY2s7d2lkdGg6MThweDtoZWlnaHQ6MnB4O2JhY2tncm91bmQtY29sb3I6I2Y1ZjVmNTtib3JkZXItcmFkaXVzOjFweDtib3gtc2hhZG93OjAgMXB4IDAgcmdiYSgwLDAsMCwuMjUpfS5idG4tbmF2YmFyIC5pY29uLWJhcisuaWNvbi1iYXJ7bWFyZ2luLXRvcDozcHh9Lm5hdmJhciAubmF2PmxpPi5kcm9wZG93bi1tZW51OmJlZm9yZXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LTdweDtsZWZ0OjlweDtkaXNwbGF5OmlubGluZS1ibG9jaztib3JkZXItcmlnaHQ6N3B4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206N3B4IHNvbGlkICNjY2M7Ym9yZGVyLWxlZnQ6N3B4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1ib3R0b20tY29sb3I6cmdiYSgwLDAsMCwuMik7Y29udGVudDoiIn0ubmF2YmFyIC5uYXY+bGk+LmRyb3Bkb3duLW1lbnU6YWZ0ZXJ7cG9zaXRpb246YWJzb2x1dGU7dG9wOi02cHg7bGVmdDoxMHB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrO2JvcmRlci1yaWdodDo2cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWJvdHRvbTo2cHggc29saWQgI2ZmZjtib3JkZXItbGVmdDo2cHggc29saWQgdHJhbnNwYXJlbnQ7Y29udGVudDoiIn0ubmF2YmFyLWZpeGVkLWJvdHRvbSAubmF2PmxpPi5kcm9wZG93bi1tZW51OmJlZm9yZXt0b3A6YXV0bztib3R0b206LTdweDtib3JkZXItdG9wOjdweCBzb2xpZCAjY2NjO2JvcmRlci1ib3R0b206MDtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjIpfS5uYXZiYXItZml4ZWQtYm90dG9tIC5uYXY+bGk+LmRyb3Bkb3duLW1lbnU6YWZ0ZXJ7dG9wOmF1dG87Ym90dG9tOi02cHg7Ym9yZGVyLXRvcDo2cHggc29saWQgI2ZmZjtib3JkZXItYm90dG9tOjB9Lm5hdmJhciAubmF2IGxpLmRyb3Bkb3duPmE6Zm9jdXMgLmNhcmV0LC5uYXZiYXIgLm5hdiBsaS5kcm9wZG93bj5hOmhvdmVyIC5jYXJldHtib3JkZXItdG9wLWNvbG9yOiMzMzM7Ym9yZGVyLWJvdHRvbS1jb2xvcjojMzMzfS5uYXZiYXIgLm5hdiBsaS5kcm9wZG93bi5hY3RpdmU+LmRyb3Bkb3duLXRvZ2dsZSwubmF2YmFyIC5uYXYgbGkuZHJvcGRvd24ub3Blbi5hY3RpdmU+LmRyb3Bkb3duLXRvZ2dsZSwubmF2YmFyIC5uYXYgbGkuZHJvcGRvd24ub3Blbj4uZHJvcGRvd24tdG9nZ2xle2NvbG9yOiM1NTU7YmFja2dyb3VuZC1jb2xvcjojZTVlNWU1fS5uYXZiYXIgLm5hdiBsaS5kcm9wZG93bj4uZHJvcGRvd24tdG9nZ2xlIC5jYXJldHtib3JkZXItdG9wLWNvbG9yOiM3Nzc7Ym9yZGVyLWJvdHRvbS1jb2xvcjojNzc3fS5uYXZiYXIgLm5hdiBsaS5kcm9wZG93bi5hY3RpdmU+LmRyb3Bkb3duLXRvZ2dsZSAuY2FyZXQsLm5hdmJhciAubmF2IGxpLmRyb3Bkb3duLm9wZW4uYWN0aXZlPi5kcm9wZG93bi10b2dnbGUgLmNhcmV0LC5uYXZiYXIgLm5hdiBsaS5kcm9wZG93bi5vcGVuPi5kcm9wZG93bi10b2dnbGUgLmNhcmV0e2JvcmRlci10b3AtY29sb3I6IzU1NTtib3JkZXItYm90dG9tLWNvbG9yOiM1NTV9Lm5hdmJhciAubmF2PmxpPi5kcm9wZG93bi1tZW51LnB1bGwtcmlnaHQsLm5hdmJhciAucHVsbC1yaWdodD5saT4uZHJvcGRvd24tbWVudXtyaWdodDowO2xlZnQ6YXV0b30ubmF2YmFyIC5uYXY+bGk+LmRyb3Bkb3duLW1lbnUucHVsbC1yaWdodDpiZWZvcmUsLm5hdmJhciAucHVsbC1yaWdodD5saT4uZHJvcGRvd24tbWVudTpiZWZvcmV7cmlnaHQ6MTJweDtsZWZ0OmF1dG99Lm5hdmJhciAubmF2PmxpPi5kcm9wZG93bi1tZW51LnB1bGwtcmlnaHQ6YWZ0ZXIsLm5hdmJhciAucHVsbC1yaWdodD5saT4uZHJvcGRvd24tbWVudTphZnRlcntyaWdodDoxM3B4O2xlZnQ6YXV0b30ubmF2YmFyIC5uYXY+bGk+LmRyb3Bkb3duLW1lbnUucHVsbC1yaWdodCAuZHJvcGRvd24tbWVudSwubmF2YmFyIC5wdWxsLXJpZ2h0PmxpPi5kcm9wZG93bi1tZW51IC5kcm9wZG93bi1tZW51e3JpZ2h0OjEwMCU7bGVmdDphdXRvO21hcmdpbi1yaWdodDotMXB4O21hcmdpbi1sZWZ0OjA7Ym9yZGVyLXJhZGl1czo2cHggMCA2cHggNnB4fS5uYXZiYXItaW52ZXJzZSAubmF2YmFyLWlubmVye2JhY2tncm91bmQtY29sb3I6IzFiMWIxYjtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCgxODBkZWcsIzIyMiwjMTExKTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteDtib3JkZXItY29sb3I6IzI1MjUyNTtmaWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9IiNmZjIyMjIyMiIsZW5kQ29sb3JzdHI9IiNmZjExMTExMSIsR3JhZGllbnRUeXBlPTApfS5uYXZiYXItaW52ZXJzZSAuYnJhbmQsLm5hdmJhci1pbnZlcnNlIC5uYXY+bGk+YXtjb2xvcjojOTk5O3RleHQtc2hhZG93OjAgLTFweCAwIHJnYmEoMCwwLDAsLjI1KX0ubmF2YmFyLWludmVyc2UgLmJyYW5kOmZvY3VzLC5uYXZiYXItaW52ZXJzZSAuYnJhbmQ6aG92ZXIsLm5hdmJhci1pbnZlcnNlIC5uYXY+bGk+YTpmb2N1cywubmF2YmFyLWludmVyc2UgLm5hdj5saT5hOmhvdmVye2NvbG9yOiNmZmZ9Lm5hdmJhci1pbnZlcnNlIC5icmFuZCwubmF2YmFyLWludmVyc2UgLm5hdmJhci10ZXh0e2NvbG9yOiM5OTl9Lm5hdmJhci1pbnZlcnNlIC5uYXY+bGk+YTpmb2N1cywubmF2YmFyLWludmVyc2UgLm5hdj5saT5hOmhvdmVye2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubmF2YmFyLWludmVyc2UgLm5hdiAuYWN0aXZlPmEsLm5hdmJhci1pbnZlcnNlIC5uYXYgLmFjdGl2ZT5hOmZvY3VzLC5uYXZiYXItaW52ZXJzZSAubmF2IC5hY3RpdmU+YTpob3Zlcntjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzExMX0ubmF2YmFyLWludmVyc2UgLm5hdmJhci1saW5re2NvbG9yOiM5OTl9Lm5hdmJhci1pbnZlcnNlIC5uYXZiYXItbGluazpmb2N1cywubmF2YmFyLWludmVyc2UgLm5hdmJhci1saW5rOmhvdmVye2NvbG9yOiNmZmZ9Lm5hdmJhci1pbnZlcnNlIC5kaXZpZGVyLXZlcnRpY2Fse2JvcmRlci1yaWdodC1jb2xvcjojMjIyO2JvcmRlci1sZWZ0LWNvbG9yOiMxMTF9Lm5hdmJhci1pbnZlcnNlIC5uYXYgbGkuZHJvcGRvd24uYWN0aXZlPi5kcm9wZG93bi10b2dnbGUsLm5hdmJhci1pbnZlcnNlIC5uYXYgbGkuZHJvcGRvd24ub3Blbi5hY3RpdmU+LmRyb3Bkb3duLXRvZ2dsZSwubmF2YmFyLWludmVyc2UgLm5hdiBsaS5kcm9wZG93bi5vcGVuPi5kcm9wZG93bi10b2dnbGV7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMxMTF9Lm5hdmJhci1pbnZlcnNlIC5uYXYgbGkuZHJvcGRvd24+YTpmb2N1cyAuY2FyZXQsLm5hdmJhci1pbnZlcnNlIC5uYXYgbGkuZHJvcGRvd24+YTpob3ZlciAuY2FyZXR7Ym9yZGVyLXRvcC1jb2xvcjojZmZmO2JvcmRlci1ib3R0b20tY29sb3I6I2ZmZn0ubmF2YmFyLWludmVyc2UgLm5hdiBsaS5kcm9wZG93bj4uZHJvcGRvd24tdG9nZ2xlIC5jYXJldHtib3JkZXItdG9wLWNvbG9yOiM5OTk7Ym9yZGVyLWJvdHRvbS1jb2xvcjojOTk5fS5uYXZiYXItaW52ZXJzZSAubmF2IGxpLmRyb3Bkb3duLmFjdGl2ZT4uZHJvcGRvd24tdG9nZ2xlIC5jYXJldCwubmF2YmFyLWludmVyc2UgLm5hdiBsaS5kcm9wZG93bi5vcGVuLmFjdGl2ZT4uZHJvcGRvd24tdG9nZ2xlIC5jYXJldCwubmF2YmFyLWludmVyc2UgLm5hdiBsaS5kcm9wZG93bi5vcGVuPi5kcm9wZG93bi10b2dnbGUgLmNhcmV0e2JvcmRlci10b3AtY29sb3I6I2ZmZjtib3JkZXItYm90dG9tLWNvbG9yOiNmZmZ9Lm5hdmJhci1pbnZlcnNlIC5uYXZiYXItc2VhcmNoIC5zZWFyY2gtcXVlcnl7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiM1MTUxNTE7Ym9yZGVyLWNvbG9yOiMxMTE7Ym94LXNoYWRvdzppbnNldCAwIDFweCAycHggcmdiYSgwLDAsMCwuMSksMCAxcHggMCBoc2xhKDAsMCUsMTAwJSwuMTUpO3RyYW5zaXRpb246bm9uZX0ubmF2YmFyLWludmVyc2UgLm5hdmJhci1zZWFyY2ggLnNlYXJjaC1xdWVyeTotbW96LXBsYWNlaG9sZGVye2NvbG9yOiNjY2N9Lm5hdmJhci1pbnZlcnNlIC5uYXZiYXItc2VhcmNoIC5zZWFyY2gtcXVlcnk6LW1zLWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOiNjY2N9Lm5hdmJhci1pbnZlcnNlIC5uYXZiYXItc2VhcmNoIC5zZWFyY2gtcXVlcnk6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6I2NjY30ubmF2YmFyLWludmVyc2UgLm5hdmJhci1zZWFyY2ggLnNlYXJjaC1xdWVyeS5mb2N1c2VkLC5uYXZiYXItaW52ZXJzZSAubmF2YmFyLXNlYXJjaCAuc2VhcmNoLXF1ZXJ5OmZvY3Vze3BhZGRpbmc6NXB4IDE1cHg7Y29sb3I6IzMzMzt0ZXh0LXNoYWRvdzowIDFweCAwICNmZmY7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjowO291dGxpbmU6MDtib3gtc2hhZG93OjAgMCAzcHggcmdiYSgwLDAsMCwuMTUpfS5uYXZiYXItaW52ZXJzZSAuYnRuLW5hdmJhcntjb2xvcjojZmZmO3RleHQtc2hhZG93OjAgLTFweCAwIHJnYmEoMCwwLDAsLjI1KTtiYWNrZ3JvdW5kLWNvbG9yOiMwZTBlMGU7KmJhY2tncm91bmQtY29sb3I6IzA0MDQwNDtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCgxODBkZWcsIzE1MTUxNSwjMDQwNDA0KTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteDtib3JkZXItY29sb3I6IzA0MDQwNCAjMDQwNDA0ICMwMDA7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjEpIHJnYmEoMCwwLDAsLjEpIHJnYmEoMCwwLDAsLjI1KTtmaWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9IiNmZjE1MTUxNSIsZW5kQ29sb3JzdHI9IiNmZjA0MDQwNCIsR3JhZGllbnRUeXBlPTApO2ZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoZW5hYmxlZD1mYWxzZSl9Lm5hdmJhci1pbnZlcnNlIC5idG4tbmF2YmFyLmFjdGl2ZSwubmF2YmFyLWludmVyc2UgLmJ0bi1uYXZiYXIuZGlzYWJsZWQsLm5hdmJhci1pbnZlcnNlIC5idG4tbmF2YmFyOmFjdGl2ZSwubmF2YmFyLWludmVyc2UgLmJ0bi1uYXZiYXI6Zm9jdXMsLm5hdmJhci1pbnZlcnNlIC5idG4tbmF2YmFyOmhvdmVyLC5uYXZiYXItaW52ZXJzZSAuYnRuLW5hdmJhcltkaXNhYmxlZF17Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiMwNDA0MDQ7KmJhY2tncm91bmQtY29sb3I6IzAwMH0ubmF2YmFyLWludmVyc2UgLmJ0bi1uYXZiYXIuYWN0aXZlLC5uYXZiYXItaW52ZXJzZSAuYnRuLW5hdmJhcjphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjojMDAwXDl9LmJyZWFkY3J1bWJ7cGFkZGluZzo4cHggMTVweDttYXJnaW46MCAwIDIwcHg7bGlzdC1zdHlsZTpub25lO2JhY2tncm91bmQtY29sb3I6I2Y1ZjVmNTtib3JkZXItcmFkaXVzOjRweH0uYnJlYWRjcnVtYj5saXtkaXNwbGF5OmlubGluZS1ibG9jazsqZGlzcGxheTppbmxpbmU7dGV4dC1zaGFkb3c6MCAxcHggMCAjZmZmOyp6b29tOjF9LmJyZWFkY3J1bWI+bGk+LmRpdmlkZXJ7cGFkZGluZzowIDVweDtjb2xvcjojY2NjfS5icmVhZGNydW1iPi5hY3RpdmV7Y29sb3I6Izk5OX0ucGFnaW5hdGlvbnttYXJnaW46MjBweCAwfS5wYWdpbmF0aW9uIHVse2Rpc3BsYXk6aW5saW5lLWJsb2NrOypkaXNwbGF5OmlubGluZTttYXJnaW4tYm90dG9tOjA7bWFyZ2luLWxlZnQ6MDtib3JkZXItcmFkaXVzOjRweDsqem9vbToxO2JveC1zaGFkb3c6MCAxcHggMnB4IHJnYmEoMCwwLDAsLjA1KX0ucGFnaW5hdGlvbiB1bD5saXtkaXNwbGF5OmlubGluZX0ucGFnaW5hdGlvbiB1bD5saT5hLC5wYWdpbmF0aW9uIHVsPmxpPnNwYW57ZmxvYXQ6bGVmdDtwYWRkaW5nOjRweCAxMnB4O2xpbmUtaGVpZ2h0OjIwcHg7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgI2RkZDtib3JkZXItbGVmdC13aWR0aDowfS5wYWdpbmF0aW9uIHVsPi5hY3RpdmU+YSwucGFnaW5hdGlvbiB1bD4uYWN0aXZlPnNwYW4sLnBhZ2luYXRpb24gdWw+bGk+YTpmb2N1cywucGFnaW5hdGlvbiB1bD5saT5hOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2Y1ZjVmNX0ucGFnaW5hdGlvbiB1bD4uYWN0aXZlPmEsLnBhZ2luYXRpb24gdWw+LmFjdGl2ZT5zcGFue2NvbG9yOiM5OTk7Y3Vyc29yOmRlZmF1bHR9LnBhZ2luYXRpb24gdWw+LmRpc2FibGVkPmEsLnBhZ2luYXRpb24gdWw+LmRpc2FibGVkPmE6Zm9jdXMsLnBhZ2luYXRpb24gdWw+LmRpc2FibGVkPmE6aG92ZXIsLnBhZ2luYXRpb24gdWw+LmRpc2FibGVkPnNwYW57Y29sb3I6Izk5OTtjdXJzb3I6ZGVmYXVsdDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5wYWdpbmF0aW9uIHVsPmxpOmZpcnN0LWNoaWxkPmEsLnBhZ2luYXRpb24gdWw+bGk6Zmlyc3QtY2hpbGQ+c3Bhbntib3JkZXItbGVmdC13aWR0aDoxcHg7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo0cHg7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czo0cHg7LW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6NHB4Oy1tb3otYm9yZGVyLXJhZGl1cy10b3BsZWZ0OjRweH0ucGFnaW5hdGlvbiB1bD5saTpsYXN0LWNoaWxkPmEsLnBhZ2luYXRpb24gdWw+bGk6bGFzdC1jaGlsZD5zcGFue2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjRweDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo0cHg7LW1vei1ib3JkZXItcmFkaXVzLXRvcHJpZ2h0OjRweDstbW96LWJvcmRlci1yYWRpdXMtYm90dG9tcmlnaHQ6NHB4fS5wYWdpbmF0aW9uLWNlbnRlcmVke3RleHQtYWxpZ246Y2VudGVyfS5wYWdpbmF0aW9uLXJpZ2h0e3RleHQtYWxpZ246cmlnaHR9LnBhZ2luYXRpb24tbGFyZ2UgdWw+bGk+YSwucGFnaW5hdGlvbi1sYXJnZSB1bD5saT5zcGFue3BhZGRpbmc6MTFweCAxOXB4O2ZvbnQtc2l6ZToxNy41cHh9LnBhZ2luYXRpb24tbGFyZ2UgdWw+bGk6Zmlyc3QtY2hpbGQ+YSwucGFnaW5hdGlvbi1sYXJnZSB1bD5saTpmaXJzdC1jaGlsZD5zcGFue2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NnB4O2JvcmRlci10b3AtbGVmdC1yYWRpdXM6NnB4Oy1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21sZWZ0OjZweDstbW96LWJvcmRlci1yYWRpdXMtdG9wbGVmdDo2cHh9LnBhZ2luYXRpb24tbGFyZ2UgdWw+bGk6bGFzdC1jaGlsZD5hLC5wYWdpbmF0aW9uLWxhcmdlIHVsPmxpOmxhc3QtY2hpbGQ+c3Bhbntib3JkZXItdG9wLXJpZ2h0LXJhZGl1czo2cHg7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6NnB4Oy1tb3otYm9yZGVyLXJhZGl1cy10b3ByaWdodDo2cHg7LW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbXJpZ2h0OjZweH0ucGFnaW5hdGlvbi1taW5pIHVsPmxpOmZpcnN0LWNoaWxkPmEsLnBhZ2luYXRpb24tbWluaSB1bD5saTpmaXJzdC1jaGlsZD5zcGFuLC5wYWdpbmF0aW9uLXNtYWxsIHVsPmxpOmZpcnN0LWNoaWxkPmEsLnBhZ2luYXRpb24tc21hbGwgdWw+bGk6Zmlyc3QtY2hpbGQ+c3Bhbntib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjNweDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjNweDstbW96LWJvcmRlci1yYWRpdXMtYm90dG9tbGVmdDozcHg7LW1vei1ib3JkZXItcmFkaXVzLXRvcGxlZnQ6M3B4fS5wYWdpbmF0aW9uLW1pbmkgdWw+bGk6bGFzdC1jaGlsZD5hLC5wYWdpbmF0aW9uLW1pbmkgdWw+bGk6bGFzdC1jaGlsZD5zcGFuLC5wYWdpbmF0aW9uLXNtYWxsIHVsPmxpOmxhc3QtY2hpbGQ+YSwucGFnaW5hdGlvbi1zbWFsbCB1bD5saTpsYXN0LWNoaWxkPnNwYW57Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6M3B4O2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjNweDstbW96LWJvcmRlci1yYWRpdXMtdG9wcmlnaHQ6M3B4Oy1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21yaWdodDozcHh9LnBhZ2luYXRpb24tc21hbGwgdWw+bGk+YSwucGFnaW5hdGlvbi1zbWFsbCB1bD5saT5zcGFue3BhZGRpbmc6MnB4IDEwcHg7Zm9udC1zaXplOjExLjlweH0ucGFnaW5hdGlvbi1taW5pIHVsPmxpPmEsLnBhZ2luYXRpb24tbWluaSB1bD5saT5zcGFue3BhZGRpbmc6MCA2cHg7Zm9udC1zaXplOjEwLjVweH0ucGFnZXJ7bWFyZ2luOjIwcHggMDt0ZXh0LWFsaWduOmNlbnRlcjtsaXN0LXN0eWxlOm5vbmU7Knpvb206MX0ucGFnZXI6YWZ0ZXIsLnBhZ2VyOmJlZm9yZXtkaXNwbGF5OnRhYmxlO2xpbmUtaGVpZ2h0OjA7Y29udGVudDoiIn0ucGFnZXI6YWZ0ZXJ7Y2xlYXI6Ym90aH0ucGFnZXIgbGl7ZGlzcGxheTppbmxpbmV9LnBhZ2VyIGxpPmEsLnBhZ2VyIGxpPnNwYW57ZGlzcGxheTppbmxpbmUtYmxvY2s7cGFkZGluZzo1cHggMTRweDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjZGRkO2JvcmRlci1yYWRpdXM6MTVweH0ucGFnZXIgbGk+YTpmb2N1cywucGFnZXIgbGk+YTpob3Zlcnt0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiNmNWY1ZjV9LnBhZ2VyIC5uZXh0PmEsLnBhZ2VyIC5uZXh0PnNwYW57ZmxvYXQ6cmlnaHR9LnBhZ2VyIC5wcmV2aW91cz5hLC5wYWdlciAucHJldmlvdXM+c3BhbntmbG9hdDpsZWZ0fS5wYWdlciAuZGlzYWJsZWQ+YSwucGFnZXIgLmRpc2FibGVkPmE6Zm9jdXMsLnBhZ2VyIC5kaXNhYmxlZD5hOmhvdmVyLC5wYWdlciAuZGlzYWJsZWQ+c3Bhbntjb2xvcjojOTk5O2N1cnNvcjpkZWZhdWx0O2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubW9kYWwtYmFja2Ryb3B7cG9zaXRpb246Zml4ZWQ7dG9wOjA7cmlnaHQ6MDtib3R0b206MDtsZWZ0OjA7ei1pbmRleDoxMDQwO2JhY2tncm91bmQtY29sb3I6IzAwMH0ubW9kYWwtYmFja2Ryb3AuZmFkZXtvcGFjaXR5OjB9Lm1vZGFsLWJhY2tkcm9wLC5tb2RhbC1iYWNrZHJvcC5mYWRlLmlue29wYWNpdHk6Ljg7ZmlsdGVyOmFscGhhKG9wYWNpdHk9ODApfS5tb2RhbHtwb3NpdGlvbjpmaXhlZDt0b3A6MTAlO2xlZnQ6NTAlO3otaW5kZXg6MTA1MDt3aWR0aDo1NjBweDttYXJnaW4tbGVmdDotMjgwcHg7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgIzk5OTtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjMpOypib3JkZXI6MXB4IHNvbGlkICM5OTk7Ym9yZGVyLXJhZGl1czo2cHg7b3V0bGluZTpub25lO2JveC1zaGFkb3c6MCAzcHggN3B4IHJnYmEoMCwwLDAsLjMpO2JhY2tncm91bmQtY2xpcDpwYWRkaW5nLWJveH0ubW9kYWwuZmFkZXt0b3A6LTI1JTt0cmFuc2l0aW9uOm9wYWNpdHkgLjNzIGxpbmVhcix0b3AgLjNzIGVhc2Utb3V0fS5tb2RhbC5mYWRlLmlue3RvcDoxMCV9Lm1vZGFsLWhlYWRlcntwYWRkaW5nOjlweCAxNXB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlZWV9Lm1vZGFsLWhlYWRlciAuY2xvc2V7bWFyZ2luLXRvcDoycHh9Lm1vZGFsLWhlYWRlciBoM3ttYXJnaW46MDtsaW5lLWhlaWdodDozMHB4fS5tb2RhbC1ib2R5e3Bvc2l0aW9uOnJlbGF0aXZlO21heC1oZWlnaHQ6NDAwcHg7cGFkZGluZzoxNXB4O292ZXJmbG93LXk6YXV0b30ubW9kYWwtZm9vdGVyLC5tb2RhbC1mb3Jte21hcmdpbi1ib3R0b206MH0ubW9kYWwtZm9vdGVye3BhZGRpbmc6MTRweCAxNXB4IDE1cHg7dGV4dC1hbGlnbjpyaWdodDtiYWNrZ3JvdW5kLWNvbG9yOiNmNWY1ZjU7Ym9yZGVyLXRvcDoxcHggc29saWQgI2RkZDtib3JkZXItcmFkaXVzOjAgMCA2cHggNnB4Oyp6b29tOjE7Ym94LXNoYWRvdzppbnNldCAwIDFweCAwICNmZmZ9Lm1vZGFsLWZvb3RlcjphZnRlciwubW9kYWwtZm9vdGVyOmJlZm9yZXtkaXNwbGF5OnRhYmxlO2xpbmUtaGVpZ2h0OjA7Y29udGVudDoiIn0ubW9kYWwtZm9vdGVyOmFmdGVye2NsZWFyOmJvdGh9Lm1vZGFsLWZvb3RlciAuYnRuKy5idG57bWFyZ2luLWJvdHRvbTowO21hcmdpbi1sZWZ0OjVweH0ubW9kYWwtZm9vdGVyIC5idG4tZ3JvdXAgLmJ0bisuYnRue21hcmdpbi1sZWZ0Oi0xcHh9Lm1vZGFsLWZvb3RlciAuYnRuLWJsb2NrKy5idG4tYmxvY2t7bWFyZ2luLWxlZnQ6MH0udG9vbHRpcHtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMzA7ZGlzcGxheTpibG9jaztmb250LXNpemU6MTFweDtsaW5lLWhlaWdodDoxLjQ7b3BhY2l0eTowO2ZpbHRlcjphbHBoYShvcGFjaXR5PTApO3Zpc2liaWxpdHk6dmlzaWJsZX0udG9vbHRpcC5pbntvcGFjaXR5Oi44O2ZpbHRlcjphbHBoYShvcGFjaXR5PTgwKX0udG9vbHRpcC50b3B7cGFkZGluZzo1cHggMDttYXJnaW4tdG9wOi0zcHh9LnRvb2x0aXAucmlnaHR7cGFkZGluZzowIDVweDttYXJnaW4tbGVmdDozcHh9LnRvb2x0aXAuYm90dG9te3BhZGRpbmc6NXB4IDA7bWFyZ2luLXRvcDozcHh9LnRvb2x0aXAubGVmdHtwYWRkaW5nOjAgNXB4O21hcmdpbi1sZWZ0Oi0zcHh9LnRvb2x0aXAtaW5uZXJ7bWF4LXdpZHRoOjIwMHB4O3BhZGRpbmc6OHB4O2NvbG9yOiNmZmY7dGV4dC1hbGlnbjpjZW50ZXI7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojMDAwO2JvcmRlci1yYWRpdXM6NHB4fS50b29sdGlwLWFycm93e3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjA7aGVpZ2h0OjA7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlci1zdHlsZTpzb2xpZH0udG9vbHRpcC50b3AgLnRvb2x0aXAtYXJyb3d7Ym90dG9tOjA7bGVmdDo1MCU7bWFyZ2luLWxlZnQ6LTVweDtib3JkZXItdG9wLWNvbG9yOiMwMDA7Ym9yZGVyLXdpZHRoOjVweCA1cHggMH0udG9vbHRpcC5yaWdodCAudG9vbHRpcC1hcnJvd3t0b3A6NTAlO2xlZnQ6MDttYXJnaW4tdG9wOi01cHg7Ym9yZGVyLXJpZ2h0LWNvbG9yOiMwMDA7Ym9yZGVyLXdpZHRoOjVweCA1cHggNXB4IDB9LnRvb2x0aXAubGVmdCAudG9vbHRpcC1hcnJvd3t0b3A6NTAlO3JpZ2h0OjA7bWFyZ2luLXRvcDotNXB4O2JvcmRlci1sZWZ0LWNvbG9yOiMwMDA7Ym9yZGVyLXdpZHRoOjVweCAwIDVweCA1cHh9LnRvb2x0aXAuYm90dG9tIC50b29sdGlwLWFycm93e3RvcDowO2xlZnQ6NTAlO21hcmdpbi1sZWZ0Oi01cHg7Ym9yZGVyLWJvdHRvbS1jb2xvcjojMDAwO2JvcmRlci13aWR0aDowIDVweCA1cHh9LnBvcG92ZXJ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO3otaW5kZXg6MTAxMDtkaXNwbGF5Om5vbmU7bWF4LXdpZHRoOjI3NnB4O3BhZGRpbmc6MXB4O3RleHQtYWxpZ246bGVmdDt3aGl0ZS1zcGFjZTpub3JtYWw7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgI2NjYztib3JkZXI6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjIpO2JvcmRlci1yYWRpdXM6NnB4O2JveC1zaGFkb3c6MCA1cHggMTBweCByZ2JhKDAsMCwwLC4yKTtiYWNrZ3JvdW5kLWNsaXA6cGFkZGluZy1ib3h9LnBvcG92ZXIudG9we21hcmdpbi10b3A6LTEwcHh9LnBvcG92ZXIucmlnaHR7bWFyZ2luLWxlZnQ6MTBweH0ucG9wb3Zlci5ib3R0b217bWFyZ2luLXRvcDoxMHB4fS5wb3BvdmVyLmxlZnR7bWFyZ2luLWxlZnQ6LTEwcHh9LnBvcG92ZXItdGl0bGV7cGFkZGluZzo4cHggMTRweDttYXJnaW46MDtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MThweDtiYWNrZ3JvdW5kLWNvbG9yOiNmN2Y3Zjc7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2ViZWJlYjtib3JkZXItcmFkaXVzOjVweCA1cHggMCAwfS5wb3BvdmVyLXRpdGxlOmVtcHR5e2Rpc3BsYXk6bm9uZX0ucG9wb3Zlci1jb250ZW50e3BhZGRpbmc6OXB4IDE0cHh9LnBvcG92ZXIgLmFycm93LC5wb3BvdmVyIC5hcnJvdzphZnRlcntwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmJsb2NrO3dpZHRoOjA7aGVpZ2h0OjA7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlci1zdHlsZTpzb2xpZH0ucG9wb3ZlciAuYXJyb3d7Ym9yZGVyLXdpZHRoOjExcHh9LnBvcG92ZXIgLmFycm93OmFmdGVye2JvcmRlci13aWR0aDoxMHB4O2NvbnRlbnQ6IiJ9LnBvcG92ZXIudG9wIC5hcnJvd3tib3R0b206LTExcHg7bGVmdDo1MCU7bWFyZ2luLWxlZnQ6LTExcHg7Ym9yZGVyLXRvcC1jb2xvcjojOTk5O2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuMjUpO2JvcmRlci1ib3R0b20td2lkdGg6MH0ucG9wb3Zlci50b3AgLmFycm93OmFmdGVye2JvdHRvbToxcHg7bWFyZ2luLWxlZnQ6LTEwcHg7Ym9yZGVyLXRvcC1jb2xvcjojZmZmO2JvcmRlci1ib3R0b20td2lkdGg6MH0ucG9wb3Zlci5yaWdodCAuYXJyb3d7dG9wOjUwJTtsZWZ0Oi0xMXB4O21hcmdpbi10b3A6LTExcHg7Ym9yZGVyLXJpZ2h0LWNvbG9yOiM5OTk7Ym9yZGVyLXJpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsLjI1KTtib3JkZXItbGVmdC13aWR0aDowfS5wb3BvdmVyLnJpZ2h0IC5hcnJvdzphZnRlcntib3R0b206LTEwcHg7bGVmdDoxcHg7Ym9yZGVyLXJpZ2h0LWNvbG9yOiNmZmY7Ym9yZGVyLWxlZnQtd2lkdGg6MH0ucG9wb3Zlci5ib3R0b20gLmFycm93e3RvcDotMTFweDtsZWZ0OjUwJTttYXJnaW4tbGVmdDotMTFweDtib3JkZXItYm90dG9tLWNvbG9yOiM5OTk7Ym9yZGVyLWJvdHRvbS1jb2xvcjpyZ2JhKDAsMCwwLC4yNSk7Ym9yZGVyLXRvcC13aWR0aDowfS5wb3BvdmVyLmJvdHRvbSAuYXJyb3c6YWZ0ZXJ7dG9wOjFweDttYXJnaW4tbGVmdDotMTBweDtib3JkZXItYm90dG9tLWNvbG9yOiNmZmY7Ym9yZGVyLXRvcC13aWR0aDowfS5wb3BvdmVyLmxlZnQgLmFycm93e3RvcDo1MCU7cmlnaHQ6LTExcHg7bWFyZ2luLXRvcDotMTFweDtib3JkZXItbGVmdC1jb2xvcjojOTk5O2JvcmRlci1sZWZ0LWNvbG9yOnJnYmEoMCwwLDAsLjI1KTtib3JkZXItcmlnaHQtd2lkdGg6MH0ucG9wb3Zlci5sZWZ0IC5hcnJvdzphZnRlcntyaWdodDoxcHg7Ym90dG9tOi0xMHB4O2JvcmRlci1sZWZ0LWNvbG9yOiNmZmY7Ym9yZGVyLXJpZ2h0LXdpZHRoOjB9LnRodW1ibmFpbHN7bWFyZ2luLWxlZnQ6LTIwcHg7bGlzdC1zdHlsZTpub25lOyp6b29tOjF9LnRodW1ibmFpbHM6YWZ0ZXIsLnRodW1ibmFpbHM6YmVmb3Jle2Rpc3BsYXk6dGFibGU7bGluZS1oZWlnaHQ6MDtjb250ZW50OiIifS50aHVtYm5haWxzOmFmdGVye2NsZWFyOmJvdGh9LnJvdy1mbHVpZCAudGh1bWJuYWlsc3ttYXJnaW4tbGVmdDowfS50aHVtYm5haWxzPmxpe2Zsb2F0OmxlZnQ7bWFyZ2luLWJvdHRvbToyMHB4O21hcmdpbi1sZWZ0OjIwcHh9LnRodW1ibmFpbHtkaXNwbGF5OmJsb2NrO3BhZGRpbmc6NHB4O2xpbmUtaGVpZ2h0OjIwcHg7Ym9yZGVyOjFweCBzb2xpZCAjZGRkO2JvcmRlci1yYWRpdXM6NHB4O2JveC1zaGFkb3c6MCAxcHggM3B4IHJnYmEoMCwwLDAsLjA1NSk7dHJhbnNpdGlvbjphbGwgLjJzIGVhc2UtaW4tb3V0fWEudGh1bWJuYWlsOmZvY3VzLGEudGh1bWJuYWlsOmhvdmVye2JvcmRlci1jb2xvcjojMDhjO2JveC1zaGFkb3c6MCAxcHggNHB4IHJnYmEoMCwxMDUsMjE0LC4yNSl9LnRodW1ibmFpbD5pbWd7ZGlzcGxheTpibG9jazttYXgtd2lkdGg6MTAwJTttYXJnaW4tcmlnaHQ6YXV0bzttYXJnaW4tbGVmdDphdXRvfS50aHVtYm5haWwgLmNhcHRpb257cGFkZGluZzo5cHg7Y29sb3I6IzU1NX0ubWVkaWEsLm1lZGlhLWJvZHl7b3ZlcmZsb3c6aGlkZGVuOypvdmVyZmxvdzp2aXNpYmxlO3pvb206MX0ubWVkaWEsLm1lZGlhIC5tZWRpYXttYXJnaW4tdG9wOjE1cHh9Lm1lZGlhOmZpcnN0LWNoaWxke21hcmdpbi10b3A6MH0ubWVkaWEtb2JqZWN0e2Rpc3BsYXk6YmxvY2t9Lm1lZGlhLWhlYWRpbmd7bWFyZ2luOjAgMCA1cHh9Lm1lZGlhPi5wdWxsLWxlZnR7bWFyZ2luLXJpZ2h0OjEwcHh9Lm1lZGlhPi5wdWxsLXJpZ2h0e21hcmdpbi1sZWZ0OjEwcHh9Lm1lZGlhLWxpc3R7bWFyZ2luLWxlZnQ6MDtsaXN0LXN0eWxlOm5vbmV9LmJhZGdlLC5sYWJlbHtkaXNwbGF5OmlubGluZS1ibG9jaztwYWRkaW5nOjJweCA0cHg7Zm9udC1zaXplOjExLjg0NHB4O2ZvbnQtd2VpZ2h0OjcwMDtsaW5lLWhlaWdodDoxNHB4O2NvbG9yOiNmZmY7dGV4dC1zaGFkb3c6MCAtMXB4IDAgcmdiYSgwLDAsMCwuMjUpO3doaXRlLXNwYWNlOm5vd3JhcDt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTtiYWNrZ3JvdW5kLWNvbG9yOiM5OTl9LmxhYmVse2JvcmRlci1yYWRpdXM6M3B4fS5iYWRnZXtwYWRkaW5nLXJpZ2h0OjlweDtwYWRkaW5nLWxlZnQ6OXB4O2JvcmRlci1yYWRpdXM6OXB4fS5iYWRnZTplbXB0eSwubGFiZWw6ZW1wdHl7ZGlzcGxheTpub25lfWEuYmFkZ2U6Zm9jdXMsYS5iYWRnZTpob3ZlcixhLmxhYmVsOmZvY3VzLGEubGFiZWw6aG92ZXJ7Y29sb3I6I2ZmZjt0ZXh0LWRlY29yYXRpb246bm9uZTtjdXJzb3I6cG9pbnRlcn0uYmFkZ2UtaW1wb3J0YW50LC5sYWJlbC1pbXBvcnRhbnR7YmFja2dyb3VuZC1jb2xvcjojYjk0YTQ4fS5iYWRnZS1pbXBvcnRhbnRbaHJlZl0sLmxhYmVsLWltcG9ydGFudFtocmVmXXtiYWNrZ3JvdW5kLWNvbG9yOiM5NTNiMzl9LmJhZGdlLXdhcm5pbmcsLmxhYmVsLXdhcm5pbmd7YmFja2dyb3VuZC1jb2xvcjojZjg5NDA2fS5iYWRnZS13YXJuaW5nW2hyZWZdLC5sYWJlbC13YXJuaW5nW2hyZWZde2JhY2tncm91bmQtY29sb3I6I2M2NzYwNX0uYmFkZ2Utc3VjY2VzcywubGFiZWwtc3VjY2Vzc3tiYWNrZ3JvdW5kLWNvbG9yOiM0Njg4NDd9LmJhZGdlLXN1Y2Nlc3NbaHJlZl0sLmxhYmVsLXN1Y2Nlc3NbaHJlZl17YmFja2dyb3VuZC1jb2xvcjojMzU2NjM1fS5iYWRnZS1pbmZvLC5sYWJlbC1pbmZve2JhY2tncm91bmQtY29sb3I6IzNhODdhZH0uYmFkZ2UtaW5mb1tocmVmXSwubGFiZWwtaW5mb1tocmVmXXtiYWNrZ3JvdW5kLWNvbG9yOiMyZDY5ODd9LmJhZGdlLWludmVyc2UsLmxhYmVsLWludmVyc2V7YmFja2dyb3VuZC1jb2xvcjojMzMzfS5iYWRnZS1pbnZlcnNlW2hyZWZdLC5sYWJlbC1pbnZlcnNlW2hyZWZde2JhY2tncm91bmQtY29sb3I6IzFhMWExYX0uYnRuIC5iYWRnZSwuYnRuIC5sYWJlbHtwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6LTFweH0uYnRuLW1pbmkgLmJhZGdlLC5idG4tbWluaSAubGFiZWx7dG9wOjB9QGtleWZyYW1lcyBwcm9ncmVzcy1iYXItc3RyaXBlc3swJXtiYWNrZ3JvdW5kLXBvc2l0aW9uOjQwcHggMH10b3tiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgMH19LnByb2dyZXNze2hlaWdodDoyMHB4O21hcmdpbi1ib3R0b206MjBweDtvdmVyZmxvdzpoaWRkZW47YmFja2dyb3VuZC1jb2xvcjojZjdmN2Y3O2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDE4MGRlZywjZjVmNWY1LCNmOWY5ZjkpO2JvcmRlci1yYWRpdXM6NHB4O2ZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0iI2ZmZjVmNWY1IixlbmRDb2xvcnN0cj0iI2ZmZjlmOWY5IixHcmFkaWVudFR5cGU9MCk7Ym94LXNoYWRvdzppbnNldCAwIDFweCAycHggcmdiYSgwLDAsMCwuMSl9LnByb2dyZXNzLC5wcm9ncmVzcyAuYmFye2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14fS5wcm9ncmVzcyAuYmFye2Zsb2F0OmxlZnQ7d2lkdGg6MDtoZWlnaHQ6MTAwJTtmb250LXNpemU6MTJweDtjb2xvcjojZmZmO3RleHQtYWxpZ246Y2VudGVyO3RleHQtc2hhZG93OjAgLTFweCAwIHJnYmEoMCwwLDAsLjI1KTtiYWNrZ3JvdW5kLWNvbG9yOiMwZTkwZDI7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCMxNDliZGYsIzA0ODBiZSk7ZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPSIjZmYxNDliZGYiLGVuZENvbG9yc3RyPSIjZmYwNDgwYmUiLEdyYWRpZW50VHlwZT0wKTtib3gtc2hhZG93Omluc2V0IDAgLTFweCAwIHJnYmEoMCwwLDAsLjE1KTtib3gtc2l6aW5nOmJvcmRlci1ib3g7dHJhbnNpdGlvbjp3aWR0aCAuNnMgZWFzZX0ucHJvZ3Jlc3MgLmJhcisuYmFye2JveC1zaGFkb3c6aW5zZXQgMXB4IDAgMCByZ2JhKDAsMCwwLC4xNSksaW5zZXQgMCAtMXB4IDAgcmdiYSgwLDAsMCwuMTUpfS5wcm9ncmVzcy1zdHJpcGVkIC5iYXJ7YmFja2dyb3VuZC1jb2xvcjojMTQ5YmRmO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDQ1ZGVnLGhzbGEoMCwwJSwxMDAlLC4xNSkgMjUlLHRyYW5zcGFyZW50IDAsdHJhbnNwYXJlbnQgNTAlLGhzbGEoMCwwJSwxMDAlLC4xNSkgMCxoc2xhKDAsMCUsMTAwJSwuMTUpIDc1JSx0cmFuc3BhcmVudCAwLHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLXNpemU6NDBweCA0MHB4fS5wcm9ncmVzcy5hY3RpdmUgLmJhcnthbmltYXRpb246cHJvZ3Jlc3MtYmFyLXN0cmlwZXMgMnMgbGluZWFyIGluZmluaXRlfS5wcm9ncmVzcy1kYW5nZXIgLmJhciwucHJvZ3Jlc3MgLmJhci1kYW5nZXJ7YmFja2dyb3VuZC1jb2xvcjojZGQ1MTRjO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDE4MGRlZywjZWU1ZjViLCNjNDNjMzUpO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14O2ZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0iI2ZmZWU1ZjViIixlbmRDb2xvcnN0cj0iI2ZmYzQzYzM1IixHcmFkaWVudFR5cGU9MCl9LnByb2dyZXNzLWRhbmdlci5wcm9ncmVzcy1zdHJpcGVkIC5iYXIsLnByb2dyZXNzLXN0cmlwZWQgLmJhci1kYW5nZXJ7YmFja2dyb3VuZC1jb2xvcjojZWU1ZjViO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDQ1ZGVnLGhzbGEoMCwwJSwxMDAlLC4xNSkgMjUlLHRyYW5zcGFyZW50IDAsdHJhbnNwYXJlbnQgNTAlLGhzbGEoMCwwJSwxMDAlLC4xNSkgMCxoc2xhKDAsMCUsMTAwJSwuMTUpIDc1JSx0cmFuc3BhcmVudCAwLHRyYW5zcGFyZW50KX0ucHJvZ3Jlc3Mtc3VjY2VzcyAuYmFyLC5wcm9ncmVzcyAuYmFyLXN1Y2Nlc3N7YmFja2dyb3VuZC1jb2xvcjojNWViOTVlO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDE4MGRlZywjNjJjNDYyLCM1N2E5NTcpO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14O2ZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0iI2ZmNjJjNDYyIixlbmRDb2xvcnN0cj0iI2ZmNTdhOTU3IixHcmFkaWVudFR5cGU9MCl9LnByb2dyZXNzLXN0cmlwZWQgLmJhci1zdWNjZXNzLC5wcm9ncmVzcy1zdWNjZXNzLnByb2dyZXNzLXN0cmlwZWQgLmJhcntiYWNrZ3JvdW5kLWNvbG9yOiM2MmM0NjI7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoNDVkZWcsaHNsYSgwLDAlLDEwMCUsLjE1KSAyNSUsdHJhbnNwYXJlbnQgMCx0cmFuc3BhcmVudCA1MCUsaHNsYSgwLDAlLDEwMCUsLjE1KSAwLGhzbGEoMCwwJSwxMDAlLC4xNSkgNzUlLHRyYW5zcGFyZW50IDAsdHJhbnNwYXJlbnQpfS5wcm9ncmVzcy1pbmZvIC5iYXIsLnByb2dyZXNzIC5iYXItaW5mb3tiYWNrZ3JvdW5kLWNvbG9yOiM0YmIxY2Y7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCM1YmMwZGUsIzMzOWJiOSk7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXg7ZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPSIjZmY1YmMwZGUiLGVuZENvbG9yc3RyPSIjZmYzMzliYjkiLEdyYWRpZW50VHlwZT0wKX0ucHJvZ3Jlc3MtaW5mby5wcm9ncmVzcy1zdHJpcGVkIC5iYXIsLnByb2dyZXNzLXN0cmlwZWQgLmJhci1pbmZve2JhY2tncm91bmQtY29sb3I6IzViYzBkZTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCg0NWRlZyxoc2xhKDAsMCUsMTAwJSwuMTUpIDI1JSx0cmFuc3BhcmVudCAwLHRyYW5zcGFyZW50IDUwJSxoc2xhKDAsMCUsMTAwJSwuMTUpIDAsaHNsYSgwLDAlLDEwMCUsLjE1KSA3NSUsdHJhbnNwYXJlbnQgMCx0cmFuc3BhcmVudCl9LnByb2dyZXNzLXdhcm5pbmcgLmJhciwucHJvZ3Jlc3MgLmJhci13YXJuaW5ne2JhY2tncm91bmQtY29sb3I6I2ZhYTczMjtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCgxODBkZWcsI2ZiYjQ1MCwjZjg5NDA2KTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteDtmaWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9IiNmZmZiYjQ1MCIsZW5kQ29sb3JzdHI9IiNmZmY4OTQwNiIsR3JhZGllbnRUeXBlPTApfS5wcm9ncmVzcy1zdHJpcGVkIC5iYXItd2FybmluZywucHJvZ3Jlc3Mtd2FybmluZy5wcm9ncmVzcy1zdHJpcGVkIC5iYXJ7YmFja2dyb3VuZC1jb2xvcjojZmJiNDUwO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDQ1ZGVnLGhzbGEoMCwwJSwxMDAlLC4xNSkgMjUlLHRyYW5zcGFyZW50IDAsdHJhbnNwYXJlbnQgNTAlLGhzbGEoMCwwJSwxMDAlLC4xNSkgMCxoc2xhKDAsMCUsMTAwJSwuMTUpIDc1JSx0cmFuc3BhcmVudCAwLHRyYW5zcGFyZW50KX0uYWNjb3JkaW9ue21hcmdpbi1ib3R0b206MjBweH0uYWNjb3JkaW9uLWdyb3Vwe21hcmdpbi1ib3R0b206MnB4O2JvcmRlcjoxcHggc29saWQgI2U1ZTVlNTtib3JkZXItcmFkaXVzOjRweH0uYWNjb3JkaW9uLWhlYWRpbmd7Ym9yZGVyLWJvdHRvbTowfS5hY2NvcmRpb24taGVhZGluZyAuYWNjb3JkaW9uLXRvZ2dsZXtkaXNwbGF5OmJsb2NrO3BhZGRpbmc6OHB4IDE1cHh9LmFjY29yZGlvbi10b2dnbGV7Y3Vyc29yOnBvaW50ZXJ9LmFjY29yZGlvbi1pbm5lcntwYWRkaW5nOjlweCAxNXB4O2JvcmRlci10b3A6MXB4IHNvbGlkICNlNWU1ZTV9LmNhcm91c2Vse3Bvc2l0aW9uOnJlbGF0aXZlO21hcmdpbi1ib3R0b206MjBweDtsaW5lLWhlaWdodDoxfS5jYXJvdXNlbC1pbm5lcntwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlO292ZXJmbG93OmhpZGRlbn0uY2Fyb3VzZWwtaW5uZXI+Lml0ZW17cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpub25lO3RyYW5zaXRpb246bGVmdCAuNnMgZWFzZS1pbi1vdXR9LmNhcm91c2VsLWlubmVyPi5pdGVtPmE+aW1nLC5jYXJvdXNlbC1pbm5lcj4uaXRlbT5pbWd7ZGlzcGxheTpibG9jaztsaW5lLWhlaWdodDoxfS5jYXJvdXNlbC1pbm5lcj4uYWN0aXZlLC5jYXJvdXNlbC1pbm5lcj4ubmV4dCwuY2Fyb3VzZWwtaW5uZXI+LnByZXZ7ZGlzcGxheTpibG9ja30uY2Fyb3VzZWwtaW5uZXI+LmFjdGl2ZXtsZWZ0OjB9LmNhcm91c2VsLWlubmVyPi5uZXh0LC5jYXJvdXNlbC1pbm5lcj4ucHJldntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDt3aWR0aDoxMDAlfS5jYXJvdXNlbC1pbm5lcj4ubmV4dHtsZWZ0OjEwMCV9LmNhcm91c2VsLWlubmVyPi5wcmV2e2xlZnQ6LTEwMCV9LmNhcm91c2VsLWlubmVyPi5uZXh0LmxlZnQsLmNhcm91c2VsLWlubmVyPi5wcmV2LnJpZ2h0e2xlZnQ6MH0uY2Fyb3VzZWwtaW5uZXI+LmFjdGl2ZS5sZWZ0e2xlZnQ6LTEwMCV9LmNhcm91c2VsLWlubmVyPi5hY3RpdmUucmlnaHR7bGVmdDoxMDAlfS5jYXJvdXNlbC1jb250cm9se3Bvc2l0aW9uOmFic29sdXRlO3RvcDo0MCU7bGVmdDoxNXB4O3dpZHRoOjQwcHg7aGVpZ2h0OjQwcHg7bWFyZ2luLXRvcDotMjBweDtmb250LXNpemU6NjBweDtmb250LXdlaWdodDoxMDA7bGluZS1oZWlnaHQ6MzBweDtjb2xvcjojZmZmO3RleHQtYWxpZ246Y2VudGVyO2JhY2tncm91bmQ6IzIyMjtib3JkZXI6M3B4IHNvbGlkICNmZmY7Ym9yZGVyLXJhZGl1czoyM3B4O29wYWNpdHk6LjU7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NTApfS5jYXJvdXNlbC1jb250cm9sLnJpZ2h0e3JpZ2h0OjE1cHg7bGVmdDphdXRvfS5jYXJvdXNlbC1jb250cm9sOmZvY3VzLC5jYXJvdXNlbC1jb250cm9sOmhvdmVye2NvbG9yOiNmZmY7dGV4dC1kZWNvcmF0aW9uOm5vbmU7b3BhY2l0eTouOTtmaWx0ZXI6YWxwaGEob3BhY2l0eT05MCl9LmNhcm91c2VsLWluZGljYXRvcnN7cG9zaXRpb246YWJzb2x1dGU7dG9wOjE1cHg7cmlnaHQ6MTVweDt6LWluZGV4OjU7bWFyZ2luOjA7bGlzdC1zdHlsZTpub25lfS5jYXJvdXNlbC1pbmRpY2F0b3JzIGxpe2Rpc3BsYXk6YmxvY2s7ZmxvYXQ6bGVmdDt3aWR0aDoxMHB4O2hlaWdodDoxMHB4O21hcmdpbi1sZWZ0OjVweDt0ZXh0LWluZGVudDotOTk5cHg7YmFja2dyb3VuZC1jb2xvcjojY2NjO2JhY2tncm91bmQtY29sb3I6aHNsYSgwLDAlLDEwMCUsLjI1KTtib3JkZXItcmFkaXVzOjVweH0uY2Fyb3VzZWwtaW5kaWNhdG9ycyAuYWN0aXZle2JhY2tncm91bmQtY29sb3I6I2ZmZn0uY2Fyb3VzZWwtY2FwdGlvbntwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO2JvdHRvbTowO2xlZnQ6MDtwYWRkaW5nOjE1cHg7YmFja2dyb3VuZDojMzMzO2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuNzUpfS5jYXJvdXNlbC1jYXB0aW9uIGg0LC5jYXJvdXNlbC1jYXB0aW9uIHB7bGluZS1oZWlnaHQ6MjBweDtjb2xvcjojZmZmfS5jYXJvdXNlbC1jYXB0aW9uIGg0e21hcmdpbjowIDAgNXB4fS5jYXJvdXNlbC1jYXB0aW9uIHB7bWFyZ2luLWJvdHRvbTowfS5oZXJvLXVuaXR7cGFkZGluZzo2MHB4O21hcmdpbi1ib3R0b206MzBweDtmb250LXNpemU6MThweDtmb250LXdlaWdodDoyMDA7bGluZS1oZWlnaHQ6MzBweDtjb2xvcjppbmhlcml0O2JhY2tncm91bmQtY29sb3I6I2VlZTtib3JkZXItcmFkaXVzOjZweH0uaGVyby11bml0IGgxe21hcmdpbi1ib3R0b206MDtmb250LXNpemU6NjBweDtsaW5lLWhlaWdodDoxO2xldHRlci1zcGFjaW5nOi0xcHg7Y29sb3I6aW5oZXJpdH0uaGVyby11bml0IGxpe2xpbmUtaGVpZ2h0OjMwcHh9LnB1bGwtcmlnaHR7ZmxvYXQ6cmlnaHR9LnB1bGwtbGVmdHtmbG9hdDpsZWZ0fS5oaWRle2Rpc3BsYXk6bm9uZX0uc2hvd3tkaXNwbGF5OmJsb2NrfS5pbnZpc2libGV7dmlzaWJpbGl0eTpoaWRkZW59LmFmZml4e3Bvc2l0aW9uOmZpeGVkfQoKLyohCiAqIEJvb3RzdHJhcCBSZXNwb25zaXZlIHYyLjMuMgogKgogKiBDb3B5cmlnaHQgMjAxMiBUd2l0dGVyLCBJbmMKICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAKICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAqCiAqIERlc2lnbmVkIGFuZCBidWlsdCB3aXRoIGFsbCB0aGUgbG92ZSBpbiB0aGUgd29ybGQgQHR3aXR0ZXIgYnkgQG1kbyBhbmQgQGZhdC4KICovLmNsZWFyZml4eyp6b29tOjF9LmNsZWFyZml4OmFmdGVyLC5jbGVhcmZpeDpiZWZvcmV7ZGlzcGxheTp0YWJsZTtsaW5lLWhlaWdodDowO2NvbnRlbnQ6IiJ9LmNsZWFyZml4OmFmdGVye2NsZWFyOmJvdGh9LmhpZGUtdGV4dHtmb250OjAvMCBhO2NvbG9yOnRyYW5zcGFyZW50O3RleHQtc2hhZG93Om5vbmU7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXI6MH0uaW5wdXQtYmxvY2stbGV2ZWx7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO21pbi1oZWlnaHQ6MzBweDtib3gtc2l6aW5nOmJvcmRlci1ib3h9QC1tcy12aWV3cG9ydHt3aWR0aDpkZXZpY2Utd2lkdGh9LmhpZGRlbntkaXNwbGF5Om5vbmU7dmlzaWJpbGl0eTpoaWRkZW59LmhpZGRlbi1kZXNrdG9wLC52aXNpYmxlLXBob25lLC52aXNpYmxlLXRhYmxldHtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fS52aXNpYmxlLWRlc2t0b3B7ZGlzcGxheTppbmhlcml0IWltcG9ydGFudH1AbWVkaWEgKG1pbi13aWR0aDo3NjhweCkgYW5kIChtYXgtd2lkdGg6ODM5cHgpey5oaWRkZW4tZGVza3RvcHtkaXNwbGF5OmluaGVyaXQhaW1wb3J0YW50fS52aXNpYmxlLWRlc2t0b3B7ZGlzcGxheTpub25lIWltcG9ydGFudH0udmlzaWJsZS10YWJsZXR7ZGlzcGxheTppbmhlcml0IWltcG9ydGFudH0uaGlkZGVuLXRhYmxldHtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fX1AbWVkaWEgKG1heC13aWR0aDo3NjdweCl7LmhpZGRlbi1kZXNrdG9we2Rpc3BsYXk6aW5oZXJpdCFpbXBvcnRhbnR9LnZpc2libGUtZGVza3RvcHtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fS52aXNpYmxlLXBob25le2Rpc3BsYXk6aW5oZXJpdCFpbXBvcnRhbnR9LmhpZGRlbi1waG9uZXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fX0udmlzaWJsZS1wcmludHtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fUBtZWRpYSBwcmludHsudmlzaWJsZS1wcmludHtkaXNwbGF5OmluaGVyaXQhaW1wb3J0YW50fS5oaWRkZW4tcHJpbnR7ZGlzcGxheTpub25lIWltcG9ydGFudH19QG1lZGlhIChtaW4td2lkdGg6MTIwMHB4KXsucm93e21hcmdpbi1sZWZ0Oi0zMHB4Oyp6b29tOjF9LnJvdzphZnRlciwucm93OmJlZm9yZXtkaXNwbGF5OnRhYmxlO2xpbmUtaGVpZ2h0OjA7Y29udGVudDoiIn0ucm93OmFmdGVye2NsZWFyOmJvdGh9W2NsYXNzKj1zcGFuXXtmbG9hdDpsZWZ0O21pbi1oZWlnaHQ6MXB4O21hcmdpbi1sZWZ0OjMwcHh9LmNvbnRhaW5lciwubmF2YmFyLWZpeGVkLWJvdHRvbSAuY29udGFpbmVyLC5uYXZiYXItZml4ZWQtdG9wIC5jb250YWluZXIsLm5hdmJhci1zdGF0aWMtdG9wIC5jb250YWluZXIsLnNwYW4xMnt3aWR0aDoxMTcwcHh9LnNwYW4xMXt3aWR0aDoxMDcwcHh9LnNwYW4xMHt3aWR0aDo5NzBweH0uc3Bhbjl7d2lkdGg6ODcwcHh9LnNwYW44e3dpZHRoOjc3MHB4fS5zcGFuN3t3aWR0aDo2NzBweH0uc3BhbjZ7d2lkdGg6NTcwcHh9LnNwYW41e3dpZHRoOjQ3MHB4fS5zcGFuNHt3aWR0aDozNzBweH0uc3BhbjN7d2lkdGg6MjcwcHh9LnNwYW4ye3dpZHRoOjE3MHB4fS5zcGFuMXt3aWR0aDo3MHB4fS5vZmZzZXQxMnttYXJnaW4tbGVmdDoxMjMwcHh9Lm9mZnNldDExe21hcmdpbi1sZWZ0OjExMzBweH0ub2Zmc2V0MTB7bWFyZ2luLWxlZnQ6MTAzMHB4fS5vZmZzZXQ5e21hcmdpbi1sZWZ0OjkzMHB4fS5vZmZzZXQ4e21hcmdpbi1sZWZ0OjgzMHB4fS5vZmZzZXQ3e21hcmdpbi1sZWZ0OjczMHB4fS5vZmZzZXQ2e21hcmdpbi1sZWZ0OjYzMHB4fS5vZmZzZXQ1e21hcmdpbi1sZWZ0OjUzMHB4fS5vZmZzZXQ0e21hcmdpbi1sZWZ0OjQzMHB4fS5vZmZzZXQze21hcmdpbi1sZWZ0OjMzMHB4fS5vZmZzZXQye21hcmdpbi1sZWZ0OjIzMHB4fS5vZmZzZXQxe21hcmdpbi1sZWZ0OjEzMHB4fS5yb3ctZmx1aWR7d2lkdGg6MTAwJTsqem9vbToxfS5yb3ctZmx1aWQ6YWZ0ZXIsLnJvdy1mbHVpZDpiZWZvcmV7ZGlzcGxheTp0YWJsZTtsaW5lLWhlaWdodDowO2NvbnRlbnQ6IiJ9LnJvdy1mbHVpZDphZnRlcntjbGVhcjpib3RofS5yb3ctZmx1aWQgW2NsYXNzKj1zcGFuXXtkaXNwbGF5OmJsb2NrO2Zsb2F0OmxlZnQ7d2lkdGg6MTAwJTttaW4taGVpZ2h0OjMwcHg7bWFyZ2luLWxlZnQ6Mi41NjQxMDI1NjQxMDI1NjQlOyptYXJnaW4tbGVmdDoyLjUxMDkxMTA3NDc0MDg2MTYlO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ucm93LWZsdWlkIFtjbGFzcyo9c3Bhbl06Zmlyc3QtY2hpbGR7bWFyZ2luLWxlZnQ6MH0ucm93LWZsdWlkIC5jb250cm9scy1yb3cgW2NsYXNzKj1zcGFuXStbY2xhc3MqPXNwYW5de21hcmdpbi1sZWZ0OjIuNTY0MTAyNTY0MTAyNTY0JX0ucm93LWZsdWlkIC5zcGFuMTJ7d2lkdGg6MTAwJTsqd2lkdGg6OTkuOTQ2ODA4NTEwNjM4MjklfS5yb3ctZmx1aWQgLnNwYW4xMXt3aWR0aDo5MS40NTI5OTE0NTI5OTE0NSU7KndpZHRoOjkxLjM5OTc5OTk2MzYyOTc1JX0ucm93LWZsdWlkIC5zcGFuMTB7d2lkdGg6ODIuOTA1OTgyOTA1OTgyOTElOyp3aWR0aDo4Mi44NTI3OTE0MTY2MjEyJX0ucm93LWZsdWlkIC5zcGFuOXt3aWR0aDo3NC4zNTg5NzQzNTg5NzQzNiU7KndpZHRoOjc0LjMwNTc4Mjg2OTYxMjY2JX0ucm93LWZsdWlkIC5zcGFuOHt3aWR0aDo2NS44MTE5NjU4MTE5NjU4MiU7KndpZHRoOjY1Ljc1ODc3NDMyMjYwNDExJX0ucm93LWZsdWlkIC5zcGFuN3t3aWR0aDo1Ny4yNjQ5NTcyNjQ5NTcyNiU7KndpZHRoOjU3LjIxMTc2NTc3NTU5NTU2JX0ucm93LWZsdWlkIC5zcGFuNnt3aWR0aDo0OC43MTc5NDg3MTc5NDg3MTUlOyp3aWR0aDo0OC42NjQ3NTcyMjg1ODcwMTQlfS5yb3ctZmx1aWQgLnNwYW41e3dpZHRoOjQwLjE3MDk0MDE3MDk0MDE3JTsqd2lkdGg6NDAuMTE3NzQ4NjgxNTc4NDclfS5yb3ctZmx1aWQgLnNwYW40e3dpZHRoOjMxLjYyMzkzMTYyMzkzMTYyNSU7KndpZHRoOjMxLjU3MDc0MDEzNDU2OTkyNCV9LnJvdy1mbHVpZCAuc3BhbjN7d2lkdGg6MjMuMDc2OTIzMDc2OTIzMDc3JTsqd2lkdGg6MjMuMDIzNzMxNTg3NTYxMzc1JX0ucm93LWZsdWlkIC5zcGFuMnt3aWR0aDoxNC41Mjk5MTQ1Mjk5MTQ1MyU7KndpZHRoOjE0LjQ3NjcyMzA0MDU1MjgyOCV9LnJvdy1mbHVpZCAuc3BhbjF7d2lkdGg6NS45ODI5MDU5ODI5MDU5ODMlOyp3aWR0aDo1LjkyOTcxNDQ5MzU0NDI4MSV9LnJvdy1mbHVpZCAub2Zmc2V0MTJ7bWFyZ2luLWxlZnQ6MTA1LjEyODIwNTEyODIwNTEyJTsqbWFyZ2luLWxlZnQ6MTA1LjAyMTgyMjE0OTQ4MTcxJX0ucm93LWZsdWlkIC5vZmZzZXQxMjpmaXJzdC1jaGlsZHttYXJnaW4tbGVmdDoxMDIuNTY0MTAyNTY0MTAyNTclOyptYXJnaW4tbGVmdDoxMDIuNDU3NzE5NTg1Mzc5MTUlfS5yb3ctZmx1aWQgLm9mZnNldDExe21hcmdpbi1sZWZ0Ojk2LjU4MTE5NjU4MTE5NjU4JTsqbWFyZ2luLWxlZnQ6OTYuNDc0ODEzNjAyNDczMTYlfS5yb3ctZmx1aWQgLm9mZnNldDExOmZpcnN0LWNoaWxke21hcmdpbi1sZWZ0Ojk0LjAxNzA5NDAxNzA5NDAyJTsqbWFyZ2luLWxlZnQ6OTMuOTEwNzExMDM4MzcwNjElfS5yb3ctZmx1aWQgLm9mZnNldDEwe21hcmdpbi1sZWZ0Ojg4LjAzNDE4ODAzNDE4ODAzJTsqbWFyZ2luLWxlZnQ6ODcuOTI3ODA1MDU1NDY0NjIlfS5yb3ctZmx1aWQgLm9mZnNldDEwOmZpcnN0LWNoaWxke21hcmdpbi1sZWZ0Ojg1LjQ3MDA4NTQ3MDA4NTQ4JTsqbWFyZ2luLWxlZnQ6ODUuMzYzNzAyNDkxMzYyMDYlfS5yb3ctZmx1aWQgLm9mZnNldDl7bWFyZ2luLWxlZnQ6NzkuNDg3MTc5NDg3MTc5NDklOyptYXJnaW4tbGVmdDo3OS4zODA3OTY1MDg0NTYwNyV9LnJvdy1mbHVpZCAub2Zmc2V0OTpmaXJzdC1jaGlsZHttYXJnaW4tbGVmdDo3Ni45MjMwNzY5MjMwNzY5MyU7Km1hcmdpbi1sZWZ0Ojc2LjgxNjY5Mzk0NDM1MzUyJX0ucm93LWZsdWlkIC5vZmZzZXQ4e21hcmdpbi1sZWZ0OjcwLjk0MDE3MDk0MDE3MDk0JTsqbWFyZ2luLWxlZnQ6NzAuODMzNzg3OTYxNDQ3NTMlfS5yb3ctZmx1aWQgLm9mZnNldDg6Zmlyc3QtY2hpbGR7bWFyZ2luLWxlZnQ6NjguMzc2MDY4Mzc2MDY4MzklOyptYXJnaW4tbGVmdDo2OC4yNjk2ODUzOTczNDQ5NyV9LnJvdy1mbHVpZCAub2Zmc2V0N3ttYXJnaW4tbGVmdDo2Mi4zOTMxNjIzOTMxNjIzODUlOyptYXJnaW4tbGVmdDo2Mi4yODY3Nzk0MTQ0Mzg5OSV9LnJvdy1mbHVpZCAub2Zmc2V0NzpmaXJzdC1jaGlsZHttYXJnaW4tbGVmdDo1OS44MjkwNTk4MjkwNTk4MiU7Km1hcmdpbi1sZWZ0OjU5LjcyMjY3Njg1MDMzNjQyJX0ucm93LWZsdWlkIC5vZmZzZXQ2e21hcmdpbi1sZWZ0OjUzLjg0NjE1Mzg0NjE1Mzg0JTsqbWFyZ2luLWxlZnQ6NTMuNzM5NzcwODY3NDMwNDQ0JX0ucm93LWZsdWlkIC5vZmZzZXQ2OmZpcnN0LWNoaWxke21hcmdpbi1sZWZ0OjUxLjI4MjA1MTI4MjA1MTI4JTsqbWFyZ2luLWxlZnQ6NTEuMTc1NjY4MzAzMzI3ODc1JX0ucm93LWZsdWlkIC5vZmZzZXQ1e21hcmdpbi1sZWZ0OjQ1LjI5OTE0NTI5OTE0NTI5NSU7Km1hcmdpbi1sZWZ0OjQ1LjE5Mjc2MjMyMDQyMTklfS5yb3ctZmx1aWQgLm9mZnNldDU6Zmlyc3QtY2hpbGR7bWFyZ2luLWxlZnQ6NDIuNzM1MDQyNzM1MDQyNzMlOyptYXJnaW4tbGVmdDo0Mi42Mjg2NTk3NTYzMTkzMyV9LnJvdy1mbHVpZCAub2Zmc2V0NHttYXJnaW4tbGVmdDozNi43NTIxMzY3NTIxMzY3NSU7Km1hcmdpbi1sZWZ0OjM2LjY0NTc1Mzc3MzQxMzM1NCV9LnJvdy1mbHVpZCAub2Zmc2V0NDpmaXJzdC1jaGlsZHttYXJnaW4tbGVmdDozNC4xODgwMzQxODgwMzQxOSU7Km1hcmdpbi1sZWZ0OjM0LjA4MTY1MTIwOTMxMDc4NSV9LnJvdy1mbHVpZCAub2Zmc2V0M3ttYXJnaW4tbGVmdDoyOC4yMDUxMjgyMDUxMjgyMDQlOyptYXJnaW4tbGVmdDoyOC4wOTg3NDUyMjY0MDQ4JX0ucm93LWZsdWlkIC5vZmZzZXQzOmZpcnN0LWNoaWxke21hcmdpbi1sZWZ0OjI1LjY0MTAyNTY0MTAyNTY0MiU7Km1hcmdpbi1sZWZ0OjI1LjUzNDY0MjY2MjMwMjI0JX0ucm93LWZsdWlkIC5vZmZzZXQye21hcmdpbi1sZWZ0OjE5LjY1ODExOTY1ODExOTY2JTsqbWFyZ2luLWxlZnQ6MTkuNTUxNzM2Njc5Mzk2MjU3JX0ucm93LWZsdWlkIC5vZmZzZXQyOmZpcnN0LWNoaWxke21hcmdpbi1sZWZ0OjE3LjA5NDAxNzA5NDAxNzA5NCU7Km1hcmdpbi1sZWZ0OjE2Ljk4NzYzNDExNTI5MzY5JX0ucm93LWZsdWlkIC5vZmZzZXQxe21hcmdpbi1sZWZ0OjExLjExMTExMTExMTExMTExJTsqbWFyZ2luLWxlZnQ6MTEuMDA0NzI4MTMyMzg3NzA4JX0ucm93LWZsdWlkIC5vZmZzZXQxOmZpcnN0LWNoaWxke21hcmdpbi1sZWZ0OjguNTQ3MDA4NTQ3MDA4NTQ3JTsqbWFyZ2luLWxlZnQ6OC40NDA2MjU1NjgyODUxNDIlfS51bmVkaXRhYmxlLWlucHV0LGlucHV0LHRleHRhcmVhe21hcmdpbi1sZWZ0OjB9LmNvbnRyb2xzLXJvdyBbY2xhc3MqPXNwYW5dK1tjbGFzcyo9c3Bhbl17bWFyZ2luLWxlZnQ6MzBweH0udW5lZGl0YWJsZS1pbnB1dC5zcGFuMTIsaW5wdXQuc3BhbjEyLHRleHRhcmVhLnNwYW4xMnt3aWR0aDoxMTU2cHh9LnVuZWRpdGFibGUtaW5wdXQuc3BhbjExLGlucHV0LnNwYW4xMSx0ZXh0YXJlYS5zcGFuMTF7d2lkdGg6MTA1NnB4fS51bmVkaXRhYmxlLWlucHV0LnNwYW4xMCxpbnB1dC5zcGFuMTAsdGV4dGFyZWEuc3BhbjEwe3dpZHRoOjk1NnB4fS51bmVkaXRhYmxlLWlucHV0LnNwYW45LGlucHV0LnNwYW45LHRleHRhcmVhLnNwYW45e3dpZHRoOjg1NnB4fS51bmVkaXRhYmxlLWlucHV0LnNwYW44LGlucHV0LnNwYW44LHRleHRhcmVhLnNwYW44e3dpZHRoOjc1NnB4fS51bmVkaXRhYmxlLWlucHV0LnNwYW43LGlucHV0LnNwYW43LHRleHRhcmVhLnNwYW43e3dpZHRoOjY1NnB4fS51bmVkaXRhYmxlLWlucHV0LnNwYW42LGlucHV0LnNwYW42LHRleHRhcmVhLnNwYW42e3dpZHRoOjU1NnB4fS51bmVkaXRhYmxlLWlucHV0LnNwYW41LGlucHV0LnNwYW41LHRleHRhcmVhLnNwYW41e3dpZHRoOjQ1NnB4fS51bmVkaXRhYmxlLWlucHV0LnNwYW40LGlucHV0LnNwYW40LHRleHRhcmVhLnNwYW40e3dpZHRoOjM1NnB4fS51bmVkaXRhYmxlLWlucHV0LnNwYW4zLGlucHV0LnNwYW4zLHRleHRhcmVhLnNwYW4ze3dpZHRoOjI1NnB4fS51bmVkaXRhYmxlLWlucHV0LnNwYW4yLGlucHV0LnNwYW4yLHRleHRhcmVhLnNwYW4ye3dpZHRoOjE1NnB4fS51bmVkaXRhYmxlLWlucHV0LnNwYW4xLGlucHV0LnNwYW4xLHRleHRhcmVhLnNwYW4xe3dpZHRoOjU2cHh9LnRodW1ibmFpbHN7bWFyZ2luLWxlZnQ6LTMwcHh9LnRodW1ibmFpbHM+bGl7bWFyZ2luLWxlZnQ6MzBweH0ucm93LWZsdWlkIC50aHVtYm5haWxze21hcmdpbi1sZWZ0OjB9fUBtZWRpYSAobWluLXdpZHRoOjc2OHB4KSBhbmQgKG1heC13aWR0aDo4MzlweCl7LnJvd3ttYXJnaW4tbGVmdDotMjBweDsqem9vbToxfS5yb3c6YWZ0ZXIsLnJvdzpiZWZvcmV7ZGlzcGxheTp0YWJsZTtsaW5lLWhlaWdodDowO2NvbnRlbnQ6IiJ9LnJvdzphZnRlcntjbGVhcjpib3RofVtjbGFzcyo9c3Bhbl17ZmxvYXQ6bGVmdDttaW4taGVpZ2h0OjFweDttYXJnaW4tbGVmdDoyMHB4fS5jb250YWluZXIsLm5hdmJhci1maXhlZC1ib3R0b20gLmNvbnRhaW5lciwubmF2YmFyLWZpeGVkLXRvcCAuY29udGFpbmVyLC5uYXZiYXItc3RhdGljLXRvcCAuY29udGFpbmVyLC5zcGFuMTJ7d2lkdGg6NzI0cHh9LnNwYW4xMXt3aWR0aDo2NjJweH0uc3BhbjEwe3dpZHRoOjYwMHB4fS5zcGFuOXt3aWR0aDo1MzhweH0uc3Bhbjh7d2lkdGg6NDc2cHh9LnNwYW43e3dpZHRoOjQxNHB4fS5zcGFuNnt3aWR0aDozNTJweH0uc3BhbjV7d2lkdGg6MjkwcHh9LnNwYW40e3dpZHRoOjIyOHB4fS5zcGFuM3t3aWR0aDoxNjZweH0uc3BhbjJ7d2lkdGg6MTA0cHh9LnNwYW4xe3dpZHRoOjQycHh9Lm9mZnNldDEye21hcmdpbi1sZWZ0Ojc2NHB4fS5vZmZzZXQxMXttYXJnaW4tbGVmdDo3MDJweH0ub2Zmc2V0MTB7bWFyZ2luLWxlZnQ6NjQwcHh9Lm9mZnNldDl7bWFyZ2luLWxlZnQ6NTc4cHh9Lm9mZnNldDh7bWFyZ2luLWxlZnQ6NTE2cHh9Lm9mZnNldDd7bWFyZ2luLWxlZnQ6NDU0cHh9Lm9mZnNldDZ7bWFyZ2luLWxlZnQ6MzkycHh9Lm9mZnNldDV7bWFyZ2luLWxlZnQ6MzMwcHh9Lm9mZnNldDR7bWFyZ2luLWxlZnQ6MjY4cHh9Lm9mZnNldDN7bWFyZ2luLWxlZnQ6MjA2cHh9Lm9mZnNldDJ7bWFyZ2luLWxlZnQ6MTQ0cHh9Lm9mZnNldDF7bWFyZ2luLWxlZnQ6ODJweH0ucm93LWZsdWlke3dpZHRoOjEwMCU7Knpvb206MX0ucm93LWZsdWlkOmFmdGVyLC5yb3ctZmx1aWQ6YmVmb3Jle2Rpc3BsYXk6dGFibGU7bGluZS1oZWlnaHQ6MDtjb250ZW50OiIifS5yb3ctZmx1aWQ6YWZ0ZXJ7Y2xlYXI6Ym90aH0ucm93LWZsdWlkIFtjbGFzcyo9c3Bhbl17ZGlzcGxheTpibG9jaztmbG9hdDpsZWZ0O3dpZHRoOjEwMCU7bWluLWhlaWdodDozMHB4O21hcmdpbi1sZWZ0OjIuNzYyNDMwOTM5MjI2NTE5NCU7Km1hcmdpbi1sZWZ0OjIuNzA5MjM5NDQ5ODY0ODE3JTtib3gtc2l6aW5nOmJvcmRlci1ib3h9LnJvdy1mbHVpZCBbY2xhc3MqPXNwYW5dOmZpcnN0LWNoaWxke21hcmdpbi1sZWZ0OjB9LnJvdy1mbHVpZCAuY29udHJvbHMtcm93IFtjbGFzcyo9c3Bhbl0rW2NsYXNzKj1zcGFuXXttYXJnaW4tbGVmdDoyLjc2MjQzMDkzOTIyNjUxOTQlfS5yb3ctZmx1aWQgLnNwYW4xMnt3aWR0aDoxMDAlOyp3aWR0aDo5OS45NDY4MDg1MTA2MzgyOSV9LnJvdy1mbHVpZCAuc3BhbjExe3dpZHRoOjkxLjQzNjQ2NDA4ODM5Nzc4JTsqd2lkdGg6OTEuMzgzMjcyNTk5MDM2MDglfS5yb3ctZmx1aWQgLnNwYW4xMHt3aWR0aDo4Mi44NzI5MjgxNzY3OTU1OCU7KndpZHRoOjgyLjgxOTczNjY4NzQzMzg3JX0ucm93LWZsdWlkIC5zcGFuOXt3aWR0aDo3NC4zMDkzOTIyNjUxOTMzNyU7KndpZHRoOjc0LjI1NjIwMDc3NTgzMTY2JX0ucm93LWZsdWlkIC5zcGFuOHt3aWR0aDo2NS43NDU4NTYzNTM1OTExNyU7KndpZHRoOjY1LjY5MjY2NDg2NDIyOTQ2JX0ucm93LWZsdWlkIC5zcGFuN3t3aWR0aDo1Ny4xODIzMjA0NDE5ODg5NSU7KndpZHRoOjU3LjEyOTEyODk1MjYyNzI1JX0ucm93LWZsdWlkIC5zcGFuNnt3aWR0aDo0OC42MTg3ODQ1MzAzODY3NCU7KndpZHRoOjQ4LjU2NTU5MzA0MTAyNTA0JX0ucm93LWZsdWlkIC5zcGFuNXt3aWR0aDo0MC4wNTUyNDg2MTg3ODQ1MyU7KndpZHRoOjQwLjAwMjA1NzEyOTQyMjgzJX0ucm93LWZsdWlkIC5zcGFuNHt3aWR0aDozMS40OTE3MTI3MDcxODIzMjMlOyp3aWR0aDozMS40Mzg1MjEyMTc4MjA2MiV9LnJvdy1mbHVpZCAuc3BhbjN7d2lkdGg6MjIuOTI4MTc2Nzk1NTgwMTElOyp3aWR0aDoyMi44NzQ5ODUzMDYyMTg0MSV9LnJvdy1mbHVpZCAuc3BhbjJ7d2lkdGg6MTQuMzY0NjQwODgzOTc3OSU7KndpZHRoOjE0LjMxMTQ0OTM5NDYxNjE5OSV9LnJvdy1mbHVpZCAuc3BhbjF7d2lkdGg6NS44MDExMDQ5NzIzNzU2OTElOyp3aWR0aDo1Ljc0NzkxMzQ4MzAxMzk4OCV9LnJvdy1mbHVpZCAub2Zmc2V0MTJ7bWFyZ2luLWxlZnQ6MTA1LjUyNDg2MTg3ODQ1MzA0JTsqbWFyZ2luLWxlZnQ6MTA1LjQxODQ3ODg5OTcyOTYyJX0ucm93LWZsdWlkIC5vZmZzZXQxMjpmaXJzdC1jaGlsZHttYXJnaW4tbGVmdDoxMDIuNzYyNDMwOTM5MjI2NTIlOyptYXJnaW4tbGVmdDoxMDIuNjU2MDQ3OTYwNTAzMSV9LnJvdy1mbHVpZCAub2Zmc2V0MTF7bWFyZ2luLWxlZnQ6OTYuOTYxMzI1OTY2ODUwODIlOyptYXJnaW4tbGVmdDo5Ni44NTQ5NDI5ODgxMjc0JX0ucm93LWZsdWlkIC5vZmZzZXQxMTpmaXJzdC1jaGlsZHttYXJnaW4tbGVmdDo5NC4xOTg4OTUwMjc2MjQzJTsqbWFyZ2luLWxlZnQ6OTQuMDkyNTEyMDQ4OTAwODklfS5yb3ctZmx1aWQgLm9mZnNldDEwe21hcmdpbi1sZWZ0Ojg4LjM5Nzc5MDA1NTI0ODYyJTsqbWFyZ2luLWxlZnQ6ODguMjkxNDA3MDc2NTI1MiV9LnJvdy1mbHVpZCAub2Zmc2V0MTA6Zmlyc3QtY2hpbGR7bWFyZ2luLWxlZnQ6ODUuNjM1MzU5MTE2MDIyMSU7Km1hcmdpbi1sZWZ0Ojg1LjUyODk3NjEzNzI5ODY4JX0ucm93LWZsdWlkIC5vZmZzZXQ5e21hcmdpbi1sZWZ0Ojc5LjgzNDI1NDE0MzY0NjQlOyptYXJnaW4tbGVmdDo3OS43Mjc4NzExNjQ5MjI5OSV9LnJvdy1mbHVpZCAub2Zmc2V0OTpmaXJzdC1jaGlsZHttYXJnaW4tbGVmdDo3Ny4wNzE4MjMyMDQ0MTk4OSU7Km1hcmdpbi1sZWZ0Ojc2Ljk2NTQ0MDIyNTY5NjQ3JX0ucm93LWZsdWlkIC5vZmZzZXQ4e21hcmdpbi1sZWZ0OjcxLjI3MDcxODIzMjA0NDIlOyptYXJnaW4tbGVmdDo3MS4xNjQzMzUyNTMzMjA3OSV9LnJvdy1mbHVpZCAub2Zmc2V0ODpmaXJzdC1jaGlsZHttYXJnaW4tbGVmdDo2OC41MDgyODcyOTI4MTc2OCU7Km1hcmdpbi1sZWZ0OjY4LjQwMTkwNDMxNDA5NDI3JX0ucm93LWZsdWlkIC5vZmZzZXQ3e21hcmdpbi1sZWZ0OjYyLjcwNzE4MjMyMDQ0MTk5JTsqbWFyZ2luLWxlZnQ6NjIuNjAwNzk5MzQxNzE4NTg0JX0ucm93LWZsdWlkIC5vZmZzZXQ3OmZpcnN0LWNoaWxke21hcmdpbi1sZWZ0OjU5Ljk0NDc1MTM4MTIxNTQ3JTsqbWFyZ2luLWxlZnQ6NTkuODM4MzY4NDAyNDkyMDY1JX0ucm93LWZsdWlkIC5vZmZzZXQ2e21hcmdpbi1sZWZ0OjU0LjE0MzY0NjQwODgzOTc4JTsqbWFyZ2luLWxlZnQ6NTQuMDM3MjYzNDMwMTE2Mzc2JX0ucm93LWZsdWlkIC5vZmZzZXQ2OmZpcnN0LWNoaWxke21hcmdpbi1sZWZ0OjUxLjM4MTIxNTQ2OTYxMzI2JTsqbWFyZ2luLWxlZnQ6NTEuMjc0ODMyNDkwODg5ODYlfS5yb3ctZmx1aWQgLm9mZnNldDV7bWFyZ2luLWxlZnQ6NDUuNTgwMTEwNDk3MjM3NTclOyptYXJnaW4tbGVmdDo0NS40NzM3Mjc1MTg1MTQxNyV9LnJvdy1mbHVpZCAub2Zmc2V0NTpmaXJzdC1jaGlsZHttYXJnaW4tbGVmdDo0Mi44MTc2Nzk1NTgwMTEwNSU7Km1hcmdpbi1sZWZ0OjQyLjcxMTI5NjU3OTI4NzY1JX0ucm93LWZsdWlkIC5vZmZzZXQ0e21hcmdpbi1sZWZ0OjM3LjAxNjU3NDU4NTYzNTM2JTsqbWFyZ2luLWxlZnQ6MzYuOTEwMTkxNjA2OTExOTYlfS5yb3ctZmx1aWQgLm9mZnNldDQ6Zmlyc3QtY2hpbGR7bWFyZ2luLWxlZnQ6MzQuMjU0MTQzNjQ2NDA4ODQlOyptYXJnaW4tbGVmdDozNC4xNDc3NjA2Njc2ODU0NCV9LnJvdy1mbHVpZCAub2Zmc2V0M3ttYXJnaW4tbGVmdDoyOC40NTMwMzg2NzQwMzMxNSU7Km1hcmdpbi1sZWZ0OjI4LjM0NjY1NTY5NTMwOTc0NiV9LnJvdy1mbHVpZCAub2Zmc2V0MzpmaXJzdC1jaGlsZHttYXJnaW4tbGVmdDoyNS42OTA2MDc3MzQ4MDY2MyU7Km1hcmdpbi1sZWZ0OjI1LjU4NDIyNDc1NjA4MzIyNyV9LnJvdy1mbHVpZCAub2Zmc2V0MnttYXJnaW4tbGVmdDoxOS44ODk1MDI3NjI0MzA5NCU7Km1hcmdpbi1sZWZ0OjE5Ljc4MzExOTc4MzcwNzUzNyV9LnJvdy1mbHVpZCAub2Zmc2V0MjpmaXJzdC1jaGlsZHttYXJnaW4tbGVmdDoxNy4xMjcwNzE4MjMyMDQ0MiU7Km1hcmdpbi1sZWZ0OjE3LjAyMDY4ODg0NDQ4MTAyJX0ucm93LWZsdWlkIC5vZmZzZXQxe21hcmdpbi1sZWZ0OjExLjMyNTk2Njg1MDgyODczJTsqbWFyZ2luLWxlZnQ6MTEuMjE5NTgzODcyMTA1MzI1JX0ucm93LWZsdWlkIC5vZmZzZXQxOmZpcnN0LWNoaWxke21hcmdpbi1sZWZ0OjguNTYzNTM1OTExNjAyMjElOyptYXJnaW4tbGVmdDo4LjQ1NzE1MjkzMjg3ODgwNiV9LnVuZWRpdGFibGUtaW5wdXQsaW5wdXQsdGV4dGFyZWF7bWFyZ2luLWxlZnQ6MH0uY29udHJvbHMtcm93IFtjbGFzcyo9c3Bhbl0rW2NsYXNzKj1zcGFuXXttYXJnaW4tbGVmdDoyMHB4fS51bmVkaXRhYmxlLWlucHV0LnNwYW4xMixpbnB1dC5zcGFuMTIsdGV4dGFyZWEuc3BhbjEye3dpZHRoOjcxMHB4fS51bmVkaXRhYmxlLWlucHV0LnNwYW4xMSxpbnB1dC5zcGFuMTEsdGV4dGFyZWEuc3BhbjExe3dpZHRoOjY0OHB4fS51bmVkaXRhYmxlLWlucHV0LnNwYW4xMCxpbnB1dC5zcGFuMTAsdGV4dGFyZWEuc3BhbjEwe3dpZHRoOjU4NnB4fS51bmVkaXRhYmxlLWlucHV0LnNwYW45LGlucHV0LnNwYW45LHRleHRhcmVhLnNwYW45e3dpZHRoOjUyNHB4fS51bmVkaXRhYmxlLWlucHV0LnNwYW44LGlucHV0LnNwYW44LHRleHRhcmVhLnNwYW44e3dpZHRoOjQ2MnB4fS51bmVkaXRhYmxlLWlucHV0LnNwYW43LGlucHV0LnNwYW43LHRleHRhcmVhLnNwYW43e3dpZHRoOjQwMHB4fS51bmVkaXRhYmxlLWlucHV0LnNwYW42LGlucHV0LnNwYW42LHRleHRhcmVhLnNwYW42e3dpZHRoOjMzOHB4fS51bmVkaXRhYmxlLWlucHV0LnNwYW41LGlucHV0LnNwYW41LHRleHRhcmVhLnNwYW41e3dpZHRoOjI3NnB4fS51bmVkaXRhYmxlLWlucHV0LnNwYW40LGlucHV0LnNwYW40LHRleHRhcmVhLnNwYW40e3dpZHRoOjIxNHB4fS51bmVkaXRhYmxlLWlucHV0LnNwYW4zLGlucHV0LnNwYW4zLHRleHRhcmVhLnNwYW4ze3dpZHRoOjE1MnB4fS51bmVkaXRhYmxlLWlucHV0LnNwYW4yLGlucHV0LnNwYW4yLHRleHRhcmVhLnNwYW4ye3dpZHRoOjkwcHh9LnVuZWRpdGFibGUtaW5wdXQuc3BhbjEsaW5wdXQuc3BhbjEsdGV4dGFyZWEuc3BhbjF7d2lkdGg6MjhweH19QG1lZGlhIChtYXgtd2lkdGg6NzY3cHgpe2JvZHl7cGFkZGluZy1yaWdodDoyMHB4O3BhZGRpbmctbGVmdDoyMHB4fS5uYXZiYXItZml4ZWQtYm90dG9tLC5uYXZiYXItZml4ZWQtdG9wLC5uYXZiYXItc3RhdGljLXRvcHttYXJnaW4tcmlnaHQ6LTIwcHg7bWFyZ2luLWxlZnQ6LTIwcHh9LmNvbnRhaW5lci1mbHVpZHtwYWRkaW5nOjB9LmRsLWhvcml6b250YWwgZHR7ZmxvYXQ6bm9uZTt3aWR0aDphdXRvO2NsZWFyOm5vbmU7dGV4dC1hbGlnbjpsZWZ0fS5kbC1ob3Jpem9udGFsIGRke21hcmdpbi1sZWZ0OjB9LmNvbnRhaW5lcnt3aWR0aDphdXRvfS5yb3ctZmx1aWR7d2lkdGg6MTAwJX0ucm93LC50aHVtYm5haWxze21hcmdpbi1sZWZ0OjB9LnRodW1ibmFpbHM+bGl7ZmxvYXQ6bm9uZTttYXJnaW4tbGVmdDowfS5yb3ctZmx1aWQgW2NsYXNzKj1zcGFuXSwudW5lZGl0YWJsZS1pbnB1dFtjbGFzcyo9c3Bhbl0sW2NsYXNzKj1zcGFuXXtkaXNwbGF5OmJsb2NrO2Zsb2F0Om5vbmU7d2lkdGg6MTAwJTttYXJnaW4tbGVmdDowO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ucm93LWZsdWlkIC5zcGFuMTIsLnNwYW4xMnt3aWR0aDoxMDAlO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ucm93LWZsdWlkIFtjbGFzcyo9b2Zmc2V0XTpmaXJzdC1jaGlsZHttYXJnaW4tbGVmdDowfS5pbnB1dC1sYXJnZSwuaW5wdXQteGxhcmdlLC5pbnB1dC14eGxhcmdlLC51bmVkaXRhYmxlLWlucHV0LGlucHV0W2NsYXNzKj1zcGFuXSxzZWxlY3RbY2xhc3MqPXNwYW5dLHRleHRhcmVhW2NsYXNzKj1zcGFuXXtkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7bWluLWhlaWdodDozMHB4O2JveC1zaXppbmc6Ym9yZGVyLWJveH0uaW5wdXQtYXBwZW5kIGlucHV0LC5pbnB1dC1hcHBlbmQgaW5wdXRbY2xhc3MqPXNwYW5dLC5pbnB1dC1wcmVwZW5kIGlucHV0LC5pbnB1dC1wcmVwZW5kIGlucHV0W2NsYXNzKj1zcGFuXXtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDphdXRvfS5jb250cm9scy1yb3cgW2NsYXNzKj1zcGFuXStbY2xhc3MqPXNwYW5de21hcmdpbi1sZWZ0OjB9Lm1vZGFse3Bvc2l0aW9uOmZpeGVkO3RvcDoyMHB4O3JpZ2h0OjIwcHg7bGVmdDoyMHB4O3dpZHRoOmF1dG87bWFyZ2luOjB9Lm1vZGFsLmZhZGV7dG9wOi0xMDBweH0ubW9kYWwuZmFkZS5pbnt0b3A6MjBweH19QG1lZGlhIChtYXgtd2lkdGg6NDgwcHgpey5uYXYtY29sbGFwc2V7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ucGFnZS1oZWFkZXIgaDEgc21hbGx7ZGlzcGxheTpibG9jaztsaW5lLWhlaWdodDoyMHB4fWlucHV0W3R5cGU9Y2hlY2tib3hdLGlucHV0W3R5cGU9cmFkaW9de2JvcmRlcjoxcHggc29saWQgI2NjY30uZm9ybS1ob3Jpem9udGFsIC5jb250cm9sLWxhYmVse2Zsb2F0Om5vbmU7d2lkdGg6YXV0bztwYWRkaW5nLXRvcDowO3RleHQtYWxpZ246bGVmdH0uZm9ybS1ob3Jpem9udGFsIC5jb250cm9sc3ttYXJnaW4tbGVmdDowfS5mb3JtLWhvcml6b250YWwgLmNvbnRyb2wtbGlzdHtwYWRkaW5nLXRvcDowfS5mb3JtLWhvcml6b250YWwgLmZvcm0tYWN0aW9uc3twYWRkaW5nLXJpZ2h0OjEwcHg7cGFkZGluZy1sZWZ0OjEwcHh9Lm1lZGlhIC5wdWxsLWxlZnQsLm1lZGlhIC5wdWxsLXJpZ2h0e2Rpc3BsYXk6YmxvY2s7ZmxvYXQ6bm9uZTttYXJnaW4tYm90dG9tOjEwcHh9Lm1lZGlhLW9iamVjdHttYXJnaW4tcmlnaHQ6MDttYXJnaW4tbGVmdDowfS5tb2RhbHt0b3A6MTBweDtyaWdodDoxMHB4O2xlZnQ6MTBweH0ubW9kYWwtaGVhZGVyIC5jbG9zZXtwYWRkaW5nOjEwcHg7bWFyZ2luOi0xMHB4fS5jYXJvdXNlbC1jYXB0aW9ue3Bvc2l0aW9uOnN0YXRpY319QG1lZGlhIChtYXgtd2lkdGg6ODM5cHgpe2JvZHl7cGFkZGluZy10b3A6MH0ubmF2YmFyLWZpeGVkLWJvdHRvbSwubmF2YmFyLWZpeGVkLXRvcHtwb3NpdGlvbjpzdGF0aWN9Lm5hdmJhci1maXhlZC10b3B7bWFyZ2luLWJvdHRvbToyMHB4fS5uYXZiYXItZml4ZWQtYm90dG9te21hcmdpbi10b3A6MjBweH0ubmF2YmFyLWZpeGVkLWJvdHRvbSAubmF2YmFyLWlubmVyLC5uYXZiYXItZml4ZWQtdG9wIC5uYXZiYXItaW5uZXJ7cGFkZGluZzo1cHh9Lm5hdmJhciAuY29udGFpbmVye3dpZHRoOmF1dG87cGFkZGluZzowfS5uYXZiYXIgLmJyYW5ke3BhZGRpbmctcmlnaHQ6MTBweDtwYWRkaW5nLWxlZnQ6MTBweDttYXJnaW46MCAwIDAgLTVweH0ubmF2LWNvbGxhcHNle2NsZWFyOmJvdGh9Lm5hdi1jb2xsYXBzZSAubmF2e2Zsb2F0Om5vbmU7bWFyZ2luOjAgMCAxMHB4fS5uYXYtY29sbGFwc2UgLm5hdj5saXtmbG9hdDpub25lfS5uYXYtY29sbGFwc2UgLm5hdj5saT5he21hcmdpbi1ib3R0b206MnB4fS5uYXYtY29sbGFwc2UgLm5hdj4uZGl2aWRlci12ZXJ0aWNhbHtkaXNwbGF5Om5vbmV9Lm5hdi1jb2xsYXBzZSAubmF2IC5uYXYtaGVhZGVye2NvbG9yOiM3Nzc7dGV4dC1zaGFkb3c6bm9uZX0ubmF2LWNvbGxhcHNlIC5kcm9wZG93bi1tZW51IGEsLm5hdi1jb2xsYXBzZSAubmF2PmxpPmF7cGFkZGluZzo5cHggMTVweDtmb250LXdlaWdodDo3MDA7Y29sb3I6Izc3Nztib3JkZXItcmFkaXVzOjNweH0ubmF2LWNvbGxhcHNlIC5idG57cGFkZGluZzo0cHggMTBweDtmb250LXdlaWdodDo0MDA7Ym9yZGVyLXJhZGl1czo0cHh9Lm5hdi1jb2xsYXBzZSAuZHJvcGRvd24tbWVudSBsaStsaSBhe21hcmdpbi1ib3R0b206MnB4fS5uYXYtY29sbGFwc2UgLmRyb3Bkb3duLW1lbnUgYTpmb2N1cywubmF2LWNvbGxhcHNlIC5kcm9wZG93bi1tZW51IGE6aG92ZXIsLm5hdi1jb2xsYXBzZSAubmF2PmxpPmE6Zm9jdXMsLm5hdi1jb2xsYXBzZSAubmF2PmxpPmE6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjJmMmYyfS5uYXZiYXItaW52ZXJzZSAubmF2LWNvbGxhcHNlIC5kcm9wZG93bi1tZW51IGEsLm5hdmJhci1pbnZlcnNlIC5uYXYtY29sbGFwc2UgLm5hdj5saT5he2NvbG9yOiM5OTl9Lm5hdmJhci1pbnZlcnNlIC5uYXYtY29sbGFwc2UgLmRyb3Bkb3duLW1lbnUgYTpmb2N1cywubmF2YmFyLWludmVyc2UgLm5hdi1jb2xsYXBzZSAuZHJvcGRvd24tbWVudSBhOmhvdmVyLC5uYXZiYXItaW52ZXJzZSAubmF2LWNvbGxhcHNlIC5uYXY+bGk+YTpmb2N1cywubmF2YmFyLWludmVyc2UgLm5hdi1jb2xsYXBzZSAubmF2PmxpPmE6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojMTExfS5uYXYtY29sbGFwc2UuaW4gLmJ0bi1ncm91cHtwYWRkaW5nOjA7bWFyZ2luLXRvcDo1cHh9Lm5hdi1jb2xsYXBzZSAuZHJvcGRvd24tbWVudXtwb3NpdGlvbjpzdGF0aWM7dG9wOmF1dG87bGVmdDphdXRvO2Rpc3BsYXk6bm9uZTtmbG9hdDpub25lO21heC13aWR0aDpub25lO3BhZGRpbmc6MDttYXJnaW46MCAxNXB4O2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyOm5vbmU7Ym9yZGVyLXJhZGl1czowO2JveC1zaGFkb3c6bm9uZX0ubmF2LWNvbGxhcHNlIC5vcGVuPi5kcm9wZG93bi1tZW51e2Rpc3BsYXk6YmxvY2t9Lm5hdi1jb2xsYXBzZSAuZHJvcGRvd24tbWVudSAuZGl2aWRlciwubmF2LWNvbGxhcHNlIC5kcm9wZG93bi1tZW51OmFmdGVyLC5uYXYtY29sbGFwc2UgLmRyb3Bkb3duLW1lbnU6YmVmb3JlLC5uYXYtY29sbGFwc2UgLm5hdj5saT4uZHJvcGRvd24tbWVudTphZnRlciwubmF2LWNvbGxhcHNlIC5uYXY+bGk+LmRyb3Bkb3duLW1lbnU6YmVmb3Jle2Rpc3BsYXk6bm9uZX0ubmF2LWNvbGxhcHNlIC5uYXZiYXItZm9ybSwubmF2LWNvbGxhcHNlIC5uYXZiYXItc2VhcmNoe2Zsb2F0Om5vbmU7cGFkZGluZzoxMHB4IDE1cHg7bWFyZ2luOjEwcHggMDtib3JkZXItdG9wOjFweCBzb2xpZCAjZjJmMmYyO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNmMmYyZjI7Ym94LXNoYWRvdzppbnNldCAwIDFweCAwIGhzbGEoMCwwJSwxMDAlLC4xKSwwIDFweCAwIGhzbGEoMCwwJSwxMDAlLC4xKX0ubmF2YmFyLWludmVyc2UgLm5hdi1jb2xsYXBzZSAubmF2YmFyLWZvcm0sLm5hdmJhci1pbnZlcnNlIC5uYXYtY29sbGFwc2UgLm5hdmJhci1zZWFyY2h7Ym9yZGVyLXRvcC1jb2xvcjojMTExO2JvcmRlci1ib3R0b20tY29sb3I6IzExMX0ubmF2YmFyIC5uYXYtY29sbGFwc2UgLm5hdi5wdWxsLXJpZ2h0e2Zsb2F0Om5vbmU7bWFyZ2luLWxlZnQ6MH0ubmF2LWNvbGxhcHNlLC5uYXYtY29sbGFwc2UuY29sbGFwc2V7aGVpZ2h0OjA7b3ZlcmZsb3c6aGlkZGVufS5uYXZiYXIgLmJ0bi1uYXZiYXJ7ZGlzcGxheTpibG9ja30ubmF2YmFyLXN0YXRpYyAubmF2YmFyLWlubmVye3BhZGRpbmctcmlnaHQ6MTBweDtwYWRkaW5nLWxlZnQ6MTBweH19QG1lZGlhIChtaW4td2lkdGg6ODQwcHgpey5uYXYtY29sbGFwc2UuY29sbGFwc2V7aGVpZ2h0OmF1dG8haW1wb3J0YW50O292ZXJmbG93OnZpc2libGUhaW1wb3J0YW50fX1odG1sLndpdGgtZmVhdGhlcmxpZ2h0e292ZXJmbG93OmhpZGRlbn0uZmVhdGhlcmxpZ2h0e2Rpc3BsYXk6bm9uZTtwb3NpdGlvbjpmaXhlZDt0b3A6MDtyaWdodDowO2JvdHRvbTowO2xlZnQ6MDt6LWluZGV4OjIxNDc0ODM2NDc7dGV4dC1hbGlnbjpjZW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwO2N1cnNvcjpwb2ludGVyO2JhY2tncm91bmQ6IzMzMztiYWNrZ3JvdW5kOnRyYW5zcGFyZW50fS5mZWF0aGVybGlnaHQ6bGFzdC1vZi10eXBle2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuOCl9LmZlYXRoZXJsaWdodDpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MTAwJTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmZlYXRoZXJsaWdodCAuZmVhdGhlcmxpZ2h0LWNvbnRlbnR7cG9zaXRpb246cmVsYXRpdmU7dGV4dC1hbGlnbjpsZWZ0O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtkaXNwbGF5OmlubGluZS1ibG9jaztvdmVyZmxvdzphdXRvO3BhZGRpbmc6MjVweCAyNXB4IDA7Ym9yZGVyLWJvdHRvbToyNXB4IHNvbGlkIHRyYW5zcGFyZW50O21hcmdpbi1sZWZ0OjUlO21hcmdpbi1yaWdodDo1JTttYXgtaGVpZ2h0Ojk1JTtiYWNrZ3JvdW5kOiNmZmY7Y3Vyc29yOmF1dG87d2hpdGUtc3BhY2U6bm9ybWFsfS5mZWF0aGVybGlnaHQgLmZlYXRoZXJsaWdodC1pbm5lcntkaXNwbGF5OmJsb2NrfS5mZWF0aGVybGlnaHQgbGluay5mZWF0aGVybGlnaHQtaW5uZXIsLmZlYXRoZXJsaWdodCBzY3JpcHQuZmVhdGhlcmxpZ2h0LWlubmVyLC5mZWF0aGVybGlnaHQgc3R5bGUuZmVhdGhlcmxpZ2h0LWlubmVye2Rpc3BsYXk6bm9uZX0uZmVhdGhlcmxpZ2h0IC5mZWF0aGVybGlnaHQtY2xvc2UtaWNvbntwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4Ojk5OTk7dG9wOjA7cmlnaHQ6MDtsaW5lLWhlaWdodDoyNXB4O3dpZHRoOjI1cHg7Y3Vyc29yOnBvaW50ZXI7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1mYW1pbHk6QXJpYWwsc2Fucy1zZXJpZjtiYWNrZ3JvdW5kOiNmZmY7YmFja2dyb3VuZDpoc2xhKDAsMCUsMTAwJSwuMyk7Y29sb3I6IzAwMDtib3JkZXI6bm9uZTtwYWRkaW5nOjB9LmZlYXRoZXJsaWdodCAuZmVhdGhlcmxpZ2h0LWNsb3NlLWljb246Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjA7cGFkZGluZzowfS5mZWF0aGVybGlnaHQgLmZlYXRoZXJsaWdodC1pbWFnZXt3aWR0aDoxMDAlfS5mZWF0aGVybGlnaHQtaWZyYW1lIC5mZWF0aGVybGlnaHQtY29udGVudHtib3JkZXItYm90dG9tOjA7cGFkZGluZzowOy13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNofS5mZWF0aGVybGlnaHQgaWZyYW1le2JvcmRlcjpub25lfS5mZWF0aGVybGlnaHQgKntib3gtc2l6aW5nOmJvcmRlci1ib3h9QG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjEwMjRweCl7LmZlYXRoZXJsaWdodCAuZmVhdGhlcmxpZ2h0LWNvbnRlbnR7bWFyZ2luLWxlZnQ6MDttYXJnaW4tcmlnaHQ6MDttYXgtaGVpZ2h0Ojk4JTtwYWRkaW5nOjEwcHggMTBweCAwO2JvcmRlci1ib3R0b206MTBweCBzb2xpZCB0cmFuc3BhcmVudH19QG1lZGlhIHByaW50e2h0bWwud2l0aC1mZWF0aGVybGlnaHQ+Kj46bm90KC5mZWF0aGVybGlnaHQpe2Rpc3BsYXk6bm9uZX19CgovKiENCiAqIGpRdWVyeSBjb250ZXh0TWVudSAtIFBsdWdpbiBmb3Igc2ltcGxlIGNvbnRleHRNZW51IGhhbmRsaW5nDQogKg0KICogVmVyc2lvbjogdjEuMTAuMw0KICoNCiAqIEF1dGhvcnM6IEJqw7ZybiBCcmFsYSAoU1dJUy5ubCksIFJvZG5leSBSZWhtLCBBZGR5IE9zbWFuaSAocGF0Y2hlcyBmb3IgRkYpDQogKiBXZWI6IGh0dHA6Ly9zd2lzbmwuZ2l0aHViLmlvL2pRdWVyeS1jb250ZXh0TWVudS8NCiAqDQogKiBDb3B5cmlnaHQgKGMpIDIwMTEtMjAxNSBTV0lTIEJWIGFuZCBjb250cmlidXRvcnMNCiAqDQogKiBMaWNlbnNlZCB1bmRlcg0KICogICBNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlDQoNCiAqIERhdGU6IDIwMTUtMTItMDNUMjA6MTI6MTguMjYzWg0KICovLmNvbnRleHQtbWVudS1saXN0e3Bvc2l0aW9uOmFic29sdXRlO2Rpc3BsYXk6aW5saW5lLWJsb2NrO21pbi13aWR0aDoxMjBweDttYXgtd2lkdGg6MjUwcHg7cGFkZGluZzowO2ZvbnQtZmFtaWx5OlZlcmRhbmEsQXJpYWwsSGVsdmV0aWNhLHNhbnMtc2VyaWY7Zm9udC1zaXplOjExcHg7bGlzdC1zdHlsZS10eXBlOm5vbmU7YmFja2dyb3VuZDojZWVlO2JvcmRlcjoxcHggc29saWQgI2RkZDtib3gtc2hhZG93OjAgMnB4IDVweCByZ2JhKDAsMCwwLC41KX0uY29udGV4dC1tZW51LWl0ZW17cGFkZGluZzoycHggMnB4IDJweCAyNHB4Oy1tb3otdXNlci1zZWxlY3Q6bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiNlZWV9LmNvbnRleHQtbWVudS1pdGVtPmxhYmVsPmlucHV0LC5jb250ZXh0LW1lbnUtaXRlbT5sYWJlbD50ZXh0YXJlYXstd2Via2l0LXVzZXItc2VsZWN0OnRleHQ7LW1vei11c2VyLXNlbGVjdDp0ZXh0Oy1tcy11c2VyLXNlbGVjdDp0ZXh0O3VzZXItc2VsZWN0OnRleHR9LmNvbnRleHQtbWVudS1pdGVtLmhvdmVye2N1cnNvcjpwb2ludGVyO2JhY2tncm91bmQtY29sb3I6IzM5Zn0uY29udGV4dC1tZW51LWl0ZW0uZGlzYWJsZWR7Y29sb3I6IzY2Nn0uY29udGV4dC1tZW51LXN1Ym1lbnU6YWZ0ZXJ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7cmlnaHQ6M3B4O3otaW5kZXg6MTtjb2xvcjojNjY2O2NvbnRlbnQ6Ij4ifS5jb250ZXh0LW1lbnUtaXRlbS5pY29ue21pbi1oZWlnaHQ6MThweDtsaXN0LXN0eWxlLXR5cGU6bm9uZTtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1wb3NpdGlvbjo0cHggMnB4fS5jb250ZXh0LW1lbnUtaXRlbS5pY29uLWVkaXR7YmFja2dyb3VuZC1pbWFnZTp1cmwoaW1hZ2VzL3BhZ2Vfd2hpdGVfZWRpdC5wbmcpfS5jb250ZXh0LW1lbnUtaXRlbS5pY29uLWN1dHtiYWNrZ3JvdW5kLWltYWdlOnVybChpbWFnZXMvY3V0LnBuZyl9LmNvbnRleHQtbWVudS1pdGVtLmljb24tY29weXtiYWNrZ3JvdW5kLWltYWdlOnVybChpbWFnZXMvcGFnZV93aGl0ZV9jb3B5LnBuZyl9LmNvbnRleHQtbWVudS1pdGVtLmljb24tcGFzdGV7YmFja2dyb3VuZC1pbWFnZTp1cmwoaW1hZ2VzL3BhZ2Vfd2hpdGVfcGFzdGUucG5nKX0uY29udGV4dC1tZW51LWl0ZW0uaWNvbi1kZWxldGV7YmFja2dyb3VuZC1pbWFnZTp1cmwoaW1hZ2VzL3BhZ2Vfd2hpdGVfZGVsZXRlLnBuZyl9LmNvbnRleHQtbWVudS1pdGVtLmljb24tYWRke2JhY2tncm91bmQtaW1hZ2U6dXJsKGltYWdlcy9wYWdlX3doaXRlX2FkZC5wbmcpfS5jb250ZXh0LW1lbnUtaXRlbS5pY29uLXF1aXR7YmFja2dyb3VuZC1pbWFnZTp1cmwoaW1hZ2VzL2Rvb3IucG5nKX0uY29udGV4dC1tZW51LWlucHV0PmxhYmVsPip7dmVydGljYWwtYWxpZ246dG9wfS5jb250ZXh0LW1lbnUtaW5wdXQ+bGFiZWw+aW5wdXRbdHlwZT1jaGVja2JveF0sLmNvbnRleHQtbWVudS1pbnB1dD5sYWJlbD5pbnB1dFt0eXBlPXJhZGlvXXttYXJnaW4tbGVmdDotMTdweH0uY29udGV4dC1tZW51LWlucHV0PmxhYmVsPnNwYW57bWFyZ2luLWxlZnQ6NXB4fS5jb250ZXh0LW1lbnUtaW5wdXQ+bGFiZWwsLmNvbnRleHQtbWVudS1pbnB1dD5sYWJlbD5pbnB1dFt0eXBlPXRleHRdLC5jb250ZXh0LW1lbnUtaW5wdXQ+bGFiZWw+c2VsZWN0LC5jb250ZXh0LW1lbnUtaW5wdXQ+bGFiZWw+dGV4dGFyZWF7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO2JveC1zaXppbmc6Ym9yZGVyLWJveH0uY29udGV4dC1tZW51LWlucHV0PmxhYmVsPnRleHRhcmVhe2hlaWdodDoxMDBweH0uY29udGV4dC1tZW51LWl0ZW0+LmNvbnRleHQtbWVudS1saXN0e3RvcDo1cHg7cmlnaHQ6LTVweDtkaXNwbGF5Om5vbmV9LmNvbnRleHQtbWVudS1pdGVtLnZpc2libGU+LmNvbnRleHQtbWVudS1saXN0e2Rpc3BsYXk6YmxvY2t9LmNvbnRleHQtbWVudS1hY2Nlc3NrZXl7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX0qLDphZnRlciw6YmVmb3Jle2JveC1zaXppbmc6Ym9yZGVyLWJveH1ib2R5LGh0bWx7Zm9udC1mYW1pbHk6T3BlbiBTYW5zLHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwMCU7cGFkZGluZzowO21hcmdpbjowO2hlaWdodDoxMDAlfWJvZHl7cGFkZGluZy10b3A6MzJweDtmb250LXdlaWdodDoyMDA7YmFja2dyb3VuZDojZWNlY2VjO292ZXJmbG93Oi1tb3otc2Nyb2xsYmFycy12ZXJ0aWNhbH0uYnRue2JhY2tncm91bmQtaW1hZ2U6bm9uZSFpbXBvcnRhbnQ7dGV4dC1zaGFkb3c6bm9uZSFpbXBvcnRhbnQ7Ym9yZGVyLWNvbG9yOm5vbmUhaW1wb3J0YW50O2JveC1zaGFkb3c6bm9uZSFpbXBvcnRhbnR9LmJ0bjpmb2N1c3tvdXRsaW5lOm5vbmV9LmJ0bi1pbnZlcnNle2JhY2tncm91bmQtaW1hZ2U6bm9uZSFpbXBvcnRhbnQ7YmFja2dyb3VuZDojMzMzfXByZS5uby1wcmV0dGlmeSxwcmUucHJldHR5cHJpbnR7aGVpZ2h0OjMwMHB4O21hcmdpbjowIWltcG9ydGFudDt3aWR0aDoxMDAlIWltcG9ydGFudDtvdmVyZmxvdzpzY3JvbGw7Ym9yZGVyLXJhZGl1czowIWltcG9ydGFudH0uaW5wdXQtYXBwZW5kIC5hZGQtb246bGFzdC1jaGlsZCwuaW5wdXQtYXBwZW5kIC5idG4tZ3JvdXA6bGFzdC1jaGlsZD4uZHJvcGRvd24tdG9nZ2xlLC5pbnB1dC1hcHBlbmQgLmJ0bjpsYXN0LWNoaWxke2JvcmRlci1yYWRpdXM6MCFpbXBvcnRhbnR9W2NsYXNzKj0iIHJmaWNvbi0iXSxbY2xhc3NePXJmaWNvbi1de2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHg7bWFyZ2luLXRvcDoxcHg7Km1hcmdpbi1yaWdodDouM2VtO2xpbmUtaGVpZ2h0OjE2cHg7dmVydGljYWwtYWxpZ246dGV4dC10b3A7YmFja2dyb3VuZC1wb3NpdGlvbjowIDA7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0fS5yZmljb24tY2xpcGJvYXJkLWFwcGx5e2JhY2tncm91bmQtaW1hZ2U6dXJsKC4uL2ltZy9jbGlwYm9hcmRfYXBwbHkucG5nKX0ucmZpY29uLWNsaXBib2FyZC1jbGVhcntiYWNrZ3JvdW5kLWltYWdlOnVybCguLi9pbWcvY2xpcGJvYXJkX2NsZWFyLnBuZyl9LnJmaWNvbi11cGxvYWR7YmFja2dyb3VuZC1pbWFnZTp1cmwoLi4vaW1nL3VwbG9hZC5wbmcpfS5idG57Ym9yZGVyLXJhZGl1czowfS5jb250YWluZXItZmx1aWR7cGFkZGluZy1yaWdodDowIWltcG9ydGFudDttYXJnaW4tdG9wOjEwcHghaW1wb3J0YW50fS5pbWctcHJlY29udGFpbmVye3dpZHRoOjEwMCU7YmFja2dyb3VuZDojZmZmfS5pbWctY29udGFpbmVyLC5pbWctcHJlY29udGFpbmVye21hcmdpbjphdXRvO3RleHQtYWxpZ246Y2VudGVyO2JvcmRlcjpub25lfS5pbWctY29udGFpbmVye2hlaWdodDo5MXB4O3dpZHRoOjEyMnB4O3BhZGRpbmc6MDtvdmVyZmxvdzpoaWRkZW47ZGlzcGxheTp0YWJsZS1jZWxsO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtiYWNrZ3JvdW5kLWltYWdlOnVybCguLi9pbWcvdHJhbnMuanBnKTtiYWNrZ3JvdW5kLXNpemU6MTNweH0uaW1nLWNvbnRhaW5lciBpbWd7bWF4LXdpZHRoOjEyMnB4O21heC1oZWlnaHQ6OTFweH11bC5icmVhZGNydW1ie21hcmdpbi1ib3R0b206NXB4O2JvcmRlci1yYWRpdXM6MDtwYWRkaW5nLWJvdHRvbTo0cHg7cGFkZGluZy10b3A6NnB4O2JhY2tncm91bmQ6I2YwZjBmMDtib3gtc2hhZG93OjAgMXB4IDRweCByZ2JhKDAsMCwwLC4wNjUpO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNiYmJ9dWwuYnJlYWRjcnVtYiAucHVsbC1sZWZ0IGl7bWFyZ2luLXRvcDoycHh9dWwuYnJlYWRjcnVtYiBsaS5tdWx0aXBsZXttYXJnaW4tdG9wOi00cHg7cGFkZGluZy1yaWdodDoyMHB4fS5hbGVydHtwYWRkaW5nOjhweCAzNXB4IDhweCAxNHB4O21hcmdpbi1ib3R0b206MnB4O2JvcmRlcjoxcHggc29saWQgI2FhYTtjb2xvcjojNjY2O2ZvbnQtd2VpZ2h0OjIwMDtmb250LXNpemU6MTNweDtib3JkZXItcmFkaXVzOjA7YmFja2dyb3VuZDojZmZmfS5pbWctY29udGFpbmVyICosLmltZy1jb250YWluZXItbWluaSAqe3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0jaGVscHtkaXNwbGF5Om5vbmV9LnRleHQtY2VudGVye3RleHQtYWxpZ246Y2VudGVyfWlmcmFtZXtvdmVyZmxvdzphdXRvOy13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNofS51cGxvYWRlcntwb3NpdGlvbjpmaXhlZDt0b3A6NnB4O2xlZnQ6NnB4O3JpZ2h0OjZweDtib3R0b206NnB4O3otaW5kZXg6OTk5OTtiYWNrZ3JvdW5kOiNlZWU7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2Rpc3BsYXk6bm9uZTtib3gtc2hhZG93OjAgMCAxMHB4IDAgcmdiYSgxLDEsMSwuNSl9LnVwbG9hZGVyIC5mbGV4e3BhZGRpbmc6MTBweDtwb3NpdGlvbjpyZWxhdGl2ZX0udXBsb2FkZXIgLmNvbnRhaW5lcjEsLnVwbG9hZGVyIC5jb250YWluZXIyLC51cGxvYWRlciAuZmxleHtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstbXMtZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtoZWlnaHQ6MTAwJX0udXBsb2FkZXIgLnVwbG9hZC1oZWxwe2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjIwMDtjb2xvcjojNzc3O3RleHQtc2hhZG93OjAgMXB4IDAgI2ZmZjt0ZXh0LWFsaWduOmNlbnRlcn0udXBsb2FkZXIgLnVwbG9hZC10YWJiYWJsZXtwYWRkaW5nOjJweDtoZWlnaHQ6MTAwJTtvdmVyZmxvdzpoaWRkZW59LnVwbG9hZGVyIC51cGxvYWQtdGFiYmFibGUgLm5hdnttYXJnaW46MH0udXBsb2FkZXIgLnVwbG9hZC10YWJiYWJsZSAubmF2IGxpIGF7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6MjAwO2NvbG9yOiM3Nzc7dGV4dC1zaGFkb3c6MCAxcHggMCAjZmZmfS51cGxvYWRlciAudXBsb2FkLXRhYmJhYmxlICN1cmxVcGxvYWR7cGFkZGluZzo1cHggMTBweH0udXBsb2FkZXIgLnVwbG9hZC10YWJiYWJsZSAudGFiLWNvbnRlbnR7cGFkZGluZzo1cHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2RkZDtib3JkZXItbGVmdDoxcHggc29saWQgI2RkZDtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNkZGQ7YmFja2dyb3VuZDojZmZmOy1tcy1mbGV4LXBvc2l0aXZlOjI7ZmxleC1ncm93OjI7cG9zaXRpb246cmVsYXRpdmV9LnVwbG9hZGVyIC51cGxvYWQtdGFiYmFibGUgLnRhYi1jb250ZW50IC50YWItcGFuZXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDtwYWRkaW5nOjVweH0udXBsb2FkZXIgLnVwbG9hZC10YWJiYWJsZSAudGFiLWNvbnRlbnQgZm9ybXtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstbXMtZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtoZWlnaHQ6MTAwJX0udXBsb2FkZXIgLnVwbG9hZC10YWJiYWJsZSAudGFiLWNvbnRlbnQgZm9ybSAjZmlsZXNUYWJsZXstbXMtZmxleC1wb3NpdGl2ZToyO2ZsZXgtZ3JvdzoyO292ZXJmbG93LXk6c2Nyb2xsO2JhY2tncm91bmQ6I2ZmZjtmb250LXNpemU6Ljk1ZW19LnVwbG9hZGVyIC51cGxvYWQtdGFiYmFibGUgLnRhYi1jb250ZW50IGZvcm0gI2ZpbGVzVGFibGUgLnByb2dyZXNze21hcmdpbi1ib3R0b206NHB4fWlucHV0I2ZpbHRlci1pbnB1dHttYXJnaW46MCAwIDJweDt3aWR0aDo4NHB4O2hlaWdodDoyNnB4O3ZlcnRpY2FsLWFsaWduOmJvdHRvbTtib3JkZXItcmFkaXVzOjA7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6MjAwO3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6MXB4fS5xcS11cGxvYWRlciAuc3Bhbjl7bWFyZ2luLWxlZnQ6MTRweCFpbXBvcnRhbnQ7d2lkdGg6NjkwcHghaW1wb3J0YW50fS5zcGFjZTEwe2NsZWFyOmJvdGg7aGVpZ2h0OjEwcHh9aDR7Zm9udC1zaXplOjEycHg7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZzowO21hcmdpbjo2cHggMCAwO2xpbmUtaGVpZ2h0OjE4cHh9aDMsaDR7Zm9udC13ZWlnaHQ6MjAwfWgze2ZvbnQtc2l6ZToxNHB4fS5ib3hlc3tib3JkZXI6MXB4IHNvbGlkICNjY2M7d29yZC13cmFwOmJyZWFrLXdvcmQ7YmFja2dyb3VuZDojZmZmO2JveC1zaGFkb3c6MXB4IDFweCAycHggMCByZ2JhKDAsMCwwLC4yKTttaW4taGVpZ2h0OjExNXB4O3RleHQtYWxpZ246Y2VudGVyfS5jb250YWluZXItZmx1aWR7cGFkZGluZzowIDEwcHghaW1wb3J0YW50fWJvZHkgLmF2cHcgLmF2cHdfcHJpbWFyeV9idXR0b24sYm9keSAuYXZwdyAuYXZwd19wcmltYXJ5X2J1dHRvbjphY3RpdmUsYm9keSAuYXZwdyAuYXZwd19wcmltYXJ5X2J1dHRvbjpsaW5rLGJvZHkgLmF2cHcgLmF2cHdfcHJpbWFyeV9idXR0b246dmlzaXRlZHtjb2xvcjojZmZmO2JhY2tncm91bmQ6Izk5OTtib3JkZXI6bm9uZX1ib2R5IC5hdnB3IC5hdnB3X3ByaW1hcnlfYnV0dG9uOmhvdmVye2JvcmRlcjpub25lO2JhY2tncm91bmQ6IzY2Nn0uZG93bmxvYWQtZm9ybXttYXJnaW4tYm90dG9tOjI1cHh9LmdyaWQgbGkgaXttYXJnaW4tbGVmdDoycHg7bWFyZ2luLXJpZ2h0OjJweDt6LWluZGV4OjB9LmJveCwuYm94eHt3b3JkLXdyYXA6YnJlYWstd29yZDt2ZXJ0aWNhbC1hbGlnbjp0b3A7dGV4dC1hbGlnbjpsZWZ0O3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6MTAwO3BhZGRpbmc6NHB4fS5ib3gsLmJveCAuYnRuLC5ib3h4e2JvcmRlcjpub25lO2JveC1zaGFkb3c6bm9uZX0uYm94IC5idG57d2lkdGg6MTAwJTtiYWNrZ3JvdW5kOm5vbmU7ei1pbmRleDoyMDB9Lm5hdmJhcnttYXJnaW4tYm90dG9tOjA7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2JiYn0ubmF2YmFyIC5uYXZiYXItaW5uZXJ7Ym9yZGVyOm5vbmU7bWluLWhlaWdodDozNXB4O2JvcmRlci1yYWRpdXM6MDtwYWRkaW5nLWJvdHRvbToycHg7bWFyZ2luOjA7cGFkZGluZy1yaWdodDo4cHg7cGFkZGluZy1sZWZ0OjhweH0ubmF2YmFyIC5uYXZiYXItaW5uZXIgLmNvbnRhaW5lci1mbHVpZHttYXJnaW46MDttYXJnaW4tdG9wOjAhaW1wb3J0YW50O3BhZGRpbmc6MH0ubmF2YmFyIC5uYXZiYXItaW5uZXIgLmNvbnRhaW5lci1mbHVpZCAuYnJhbmR7ZGlzcGxheTpub25lfS5uYXZiYXIgLm5hdmJhci1pbm5lciAuY29udGFpbmVyLWZsdWlkIC5maWx0ZXJzIHNwYW57bWFyZ2luLXRvcDowO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjIwMDtjb2xvcjojNzc3O3RleHQtc2hhZG93OjAgMXB4IDAgI2ZmZn11bC5zb3J0aW5ne3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6LTI1cHg7dG9wOjIwcHg7bWluLXdpZHRoOjA7YmFja2dyb3VuZDojZWVlfXVsLnNvcnRpbmcgbGkgYTpob3ZlcntiYWNrZ3JvdW5kOiNhYWF9LmJ0bi1ncm91cCAuZHJvcGRvd24tdG9nZ2xlLnNvcnRpbmctYnRue3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDotNXB4O2ZvbnQtc2l6ZToxM3B4fS5idG4tZ3JvdXAgLmRyb3Bkb3duLXRvZ2dsZS5zb3J0aW5nLWJ0biwuYnRuLWdyb3VwIC5kcm9wZG93bi10b2dnbGUuc29ydGluZy1idG46aG92ZXJ7YmFja2dyb3VuZDpub25lO2JvcmRlcjpub25lO2JveC1zaGFkb3c6bm9uZTstd2Via2l0LWJveC1zaGFkb3c6bm9uZX11bC5zb3J0aW5nLmRyb3Bkb3duLW1lbnU+bGk+YXtmb250LXNpemU6MTJweDt0ZXh0LXNoYWRvdzpub25lfXVsLnNvcnRpbmcuZHJvcGRvd24tbWVudT5saT5hLmRlc2NlbmRpbmd7YmFja2dyb3VuZC1pbWFnZTp1cmwoLi4vaW1nL2Rvd24ucG5nKTtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1wb3NpdGlvbjo2cHggOHB4fXVsLnNvcnRpbmcuZHJvcGRvd24tbWVudT5saT5hLmFzY2VuZGluZ3tiYWNrZ3JvdW5kLWltYWdlOnVybCguLi9pbWcvdXAucG5nKTtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1wb3NpdGlvbjo2cHggOHB4fS5zb3J0ZXItY29udGFpbmVye21hcmdpbi10b3A6NXB4O21hcmdpbi1ib3R0b206MDtib3JkZXItcmFkaXVzOjA7cGFkZGluZy1ib3R0b206NHB4O3BhZGRpbmctdG9wOjZweDtib3gtc2hhZG93OjAgMXB4IDRweCByZ2JhKDAsMCwwLC4wNjUpO2JhY2tncm91bmQtY29sb3I6I2Y1ZjVmNTtwb3NpdGlvbjpyZWxhdGl2ZTtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjYmJiO2hlaWdodDoyNHB4fS5zb3J0ZXItY29udGFpbmVyIGEuc29ydGVye2NvbG9yOiMwMDB9LnNvcnRlci1jb250YWluZXIgYS5kZXNjZW5kaW5ne3BhZGRpbmctbGVmdDo5cHg7YmFja2dyb3VuZC1pbWFnZTp1cmwoLi4vaW1nL2Rvd24ucG5nKTtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1wb3NpdGlvbjowIDNweH0uc29ydGVyLWNvbnRhaW5lciBhLmFzY2VuZGluZ3twYWRkaW5nLWxlZnQ6OXB4O2JhY2tncm91bmQtaW1hZ2U6dXJsKC4uL2ltZy91cC5wbmcpO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgNHB4fS5zb3J0ZXItY29udGFpbmVyIC5maWxlLWRhdGUsLnNvcnRlci1jb250YWluZXIgLmZpbGUtZXh0ZW5zaW9uLC5zb3J0ZXItY29udGFpbmVyIC5maWxlLW5hbWUsLnNvcnRlci1jb250YWluZXIgLmZpbGUtb3BlcmF0aW9ucywuc29ydGVyLWNvbnRhaW5lciAuZmlsZS1zaXplLC5zb3J0ZXItY29udGFpbmVyIC5pbWctZGltZW5zaW9ue2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7ei1pbmRleDoxMDA7Ym94LXNoYWRvdzpub25lO3RleHQtYWxpZ246bGVmdDtmb250LXNpemU6MTNweDttYXJnaW4tdG9wOjFweDtjb2xvcjojOTk5fS5zb3J0ZXItY29udGFpbmVyIC5maWxlLW9wZXJhdGlvbnN7d2lkdGg6MTEwcHg7cmlnaHQ6MH0uc29ydGVyLWNvbnRhaW5lciAuaW1nLWRpbWVuc2lvbnt3aWR0aDo2NXB4O3JpZ2h0OjEyM3B4fS5zb3J0ZXItY29udGFpbmVyIC5maWxlLWRhdGV7d2lkdGg6NzBweDtyaWdodDoxODhweH0uc29ydGVyLWNvbnRhaW5lciAuZmlsZS1zaXple3dpZHRoOjU1cHg7cmlnaHQ6MjU4cHh9LnNvcnRlci1jb250YWluZXIgLmZpbGUtZXh0ZW5zaW9ue3dpZHRoOjQwcHg7cmlnaHQ6MzEzcHh9LnNvcnRlci1jb250YWluZXIgLmZpbGUtbmFtZXt3aWR0aDo1MHB4O2xlZnQ6NTJweH0uZmlsZS1kYXRlLC5maWxlLWV4dGVuc2lvbiwuZmlsZS1uYW1lLC5maWxlLW9wZXJhdGlvbnMsLmZpbGUtc2l6ZSwuaW1nLWRpbWVuc2lvbntmb250LXNpemU6MTJweDtmb250LXdlaWdodDoyMDA7Y29sb3I6Izc3Nzt0ZXh0LXNoYWRvdzowIDFweCAwICNmZmY7ZGlzcGxheTpub25lfS52aWV3LWNvbnRyb2xsZXJ7dGV4dC1hbGlnbjpsZWZ0fS52aWV3LWNvbnRyb2xsZXIgLmJ0bi1ncm91cD4uYnRuOmZpcnN0LWNoaWxkLC52aWV3LWNvbnRyb2xsZXIgLmJ0bi1ncm91cD4uYnRuOmxhc3QtY2hpbGR7Ym9yZGVyLXJhZGl1czowfS5uYXZiYXIgLmZpbHRlcnMgLmJ0bnttYXJnaW4tYm90dG9tOjJweDtwYWRkaW5nOjJweCA1cHg7bWFyZ2luLXRvcDo1cHh9LmZpbHRlcnMgLnR5cGVze3RleHQtYWxpZ246cmlnaHR9LmZpbGV1cGxvYWQtYnV0dG9uYmFye21hcmdpbi1ib3R0b206MTBweH0uZmlsZXVwbG9hZC1idXR0b25iYXIgLnByb2dyZXNze21hcmdpbjowfUBtZWRpYSAobWF4LXdpZHRoOjc4MHB4KXsjdmlldzJ7ZGlzcGxheTpub25lfX1AbWVkaWEgKG1pbi13aWR0aDo4NDBweCl7Lm1vYmlsZS1pbmxpbmUtdmlzaWJsZXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fX1AbWVkaWEgKG1heC13aWR0aDo4MzlweCl7Ym9keXtwYWRkaW5nLXRvcDowIWltcG9ydGFudH0ubW9iaWxlLWlubGluZS12aXNpYmxle2Rpc3BsYXk6aW5saW5lIWltcG9ydGFudH0uZmlsdGVycyAudHlwZXN7dGV4dC1hbGlnbjpsZWZ0fS5uYXZiYXIgLm5hdmJhci1pbm5lciAuY29udGFpbmVyLWZsdWlkIC5icmFuZHtkaXNwbGF5OmJsb2NrfS5uYXZiYXIgLm5hdmJhci1pbm5lcntwYWRkaW5nLWJvdHRvbTo0cHh9LmZpbHRlcnMgZGl2LnNwYW4yLmhhbGYsLmZpbHRlcnMgZGl2LnNwYW4zLmhhbGYsLmZpbHRlcnMgZGl2LnNwYW40LmhhbGZ7ZmxvYXQ6bGVmdDt3aWR0aDphdXRvO21hcmdpbi1yaWdodDoxMHB4fS5maWx0ZXJzIGRpdi5lbnRpcmV7ZmxvYXQ6bm9uZTt3aWR0aDoxMDAlO2NsZWFyOmJvdGh9LmNvbnRhaW5lci1mbHVpZHttYXJnaW46MCFpbXBvcnRhbnQ7cGFkZGluZzowfSNxTGJhcntoZWlnaHQ6NTBweCFpbXBvcnRhbnR9fUBtZWRpYSAobWluLXdpZHRoOjQwMHB4KSBhbmQgKG1heC13aWR0aDo4MzlweCl7LmZpbHRlcnMgLnJvdy1mbHVpZCAuaGFsZnt3aWR0aDo0OC42MTg3ODQ1MzAzODY3NCU7KndpZHRoOjQ4LjU2NTU5MzA0MTAyNTA0JTtmbG9hdDpsZWZ0fX0udG9vbHRpcC5pbntvcGFjaXR5OjE7ZmlsdGVyOmFscGhhKG9wYWNpdHk9MSl9LnRvb2x0aXAsLnRvb2x0aXAuaW57ei1pbmRleDoxMDAwMDtmb250LXdlaWdodDo3MDB9LmdyaWR7cGFkZGluZzowO21hcmdpbjowIGF1dG87bGlzdC1zdHlsZTpub25lOy13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNofS51aS1kcmFnZ2FibGUtaGVscGVye3otaW5kZXg6MTB9LmdyaWQgbGl7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MTI0cHg7Ym9yZGVyOm5vbmU7bWFyZ2luOjRweDttYXJnaW4tYm90dG9tOjhweDtwYWRkaW5nOjA7dmVydGljYWwtYWxpZ246dG9wfS5ncmlkIGZpZ3VyZXttYXJnaW46MDtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO3dpZHRoOjEyMnB4O21hcmdpbjphdXRvfS5ncmlkIGZpZ3VyZTpob3ZlcntiYWNrZ3JvdW5kOiNlMGUwZTAhaW1wb3J0YW50fS5saXN0LXZpZXcxLmdyaWQgbGksLmxpc3QtdmlldzEuZ3JpZCBsaSBmaWd1cmV7d2lkdGg6MTAwJX0uZ3JpZCBmaWdjYXB0aW9ue3RleHQtYWxpZ246Y2VudGVyO3BhZGRpbmc6MnB4O3BhZGRpbmctdG9wOjhweDtjb2xvcjojZmZmO2hlaWdodDozMHB4O3dpZHRoOjEyMnB4O21hcmdpbi1sZWZ0OjA7bWFyZ2luLXJpZ2h0OjA7cG9zaXRpb246YWJzb2x1dGU7dG9wOmF1dG87Ym90dG9tOjA7Ym94LXNoYWRvdzppbnNldCAwIDAgOHB4IDAgcmdiYSg0MSw0MSw0MSwuNSl9LmdyaWQgZmlnY2FwdGlvbiBhe21hcmdpbjowO3BhZGRpbmc6M3B4fS5ncmlkIGZpZ2NhcHRpb24gaDN7bWFyZ2luOjA7cGFkZGluZzowO2NvbG9yOiNmZmZ9LmdyaWQgaDR7dGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6IzAwMDtwYWRkaW5nOjA7bWFyZ2luLWJvdHRvbTo0cHg7bWFyZ2luLXRvcDo0cHh9LmdyaWQgZmlndXJlIC5ib3h7Ym94LXNpemluZzpjb250ZW50LWJveDtjdXJzb3I6cG9pbnRlcn0ubGlzdC12aWV3MC5ncmlkIGZpZ3VyZSAuYm94LC5saXN0LXZpZXcxLmdyaWQgZmlndXJlIC5ib3gsLmxpc3QtdmlldzIuZ3JpZCBmaWd1cmUgLmJveHttYXgtd2lkdGg6MTAwJTtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbjt6LWluZGV4OjF9Lmxpc3QtdmlldzAuZ3JpZCBmaWd1cmUgLmJveCBoNC5lbGxpcHNpcywubGlzdC12aWV3MS5ncmlkIGZpZ3VyZSAuYm94IGg0LmVsbGlwc2lzLC5saXN0LXZpZXcyLmdyaWQgZmlndXJlIC5ib3ggaDQuZWxsaXBzaXN7aGVpZ2h0OjE4cHg7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS5saXN0LXZpZXcwLmdyaWQgZmlndXJlIC5ib3ggaDQsLmxpc3QtdmlldzAuZ3JpZCBmaWd1cmUgLmJveCBoNCBhLC5saXN0LXZpZXcxLmdyaWQgZmlndXJlIC5ib3ggaDQsLmxpc3QtdmlldzEuZ3JpZCBmaWd1cmUgLmJveCBoNCBhLC5saXN0LXZpZXcyLmdyaWQgZmlndXJlIC5ib3ggaDQsLmxpc3QtdmlldzIuZ3JpZCBmaWd1cmUgLmJveCBoNCBhe3otaW5kZXg6MX0ubm8tdG91Y2ggLmxpc3QtdmlldzAgZmlndXJlIC5ib3h7ei1pbmRleDoxO3RyYW5zaXRpb246dHJhbnNmb3JtIC4zc30ubGlzdC12aWV3MC5ncmlkIC51aS1zdGF0ZS1oaWdobGlnaHQgLmltZy1wcmVjb250YWluZXJ7YmFja2dyb3VuZDpncmV5IWltcG9ydGFudH0ubGlzdC12aWV3MC5ncmlkIC51aS1zdGF0ZS1oaWdobGlnaHQgLmltZy1wcmVjb250YWluZXIgLmltZy1jb250YWluZXJ7YmFja2dyb3VuZDpyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDQ1ZGVnLHRyYW5zcGFyZW50LHRyYW5zcGFyZW50IDVweCxoc2xhKDAsMCUsMTAwJSwuNCkgMCxoc2xhKDAsMCUsMTAwJSwuMykgMTBweCk7Ym9yZGVyOm5vbmU7b3ZlcmZsb3c6aGlkZGVufS5saXN0LXZpZXcwLmdyaWQgLnVpLXN0YXRlLWhvdmVyIC5pbWctcHJlY29udGFpbmVyIC5pbWctY29udGFpbmVye2JhY2tncm91bmQ6IzY2Nn0ubGlzdC12aWV3MS5ncmlkIC51aS1zdGF0ZS1oaWdobGlnaHQ6bnRoLWNoaWxkKG9kZCkgZmlndXJlLC5saXN0LXZpZXcyLmdyaWQgLnVpLXN0YXRlLWhpZ2hsaWdodDpudGgtY2hpbGQob2RkKSBmaWd1cmV7YmFja2dyb3VuZDojZGRkIWltcG9ydGFudDtib3JkZXItYm90dG9tLWNvbG9yOiM0NDQhaW1wb3J0YW50fS5saXN0LXZpZXcxLmdyaWQgLnVpLXN0YXRlLWhpZ2hsaWdodDpudGgtY2hpbGQoMm4pIGZpZ3VyZSwubGlzdC12aWV3Mi5ncmlkIC51aS1zdGF0ZS1oaWdobGlnaHQ6bnRoLWNoaWxkKDJuKSBmaWd1cmV7YmFja2dyb3VuZDojY2NjIWltcG9ydGFudDtib3JkZXItYm90dG9tLWNvbG9yOiNhYWEhaW1wb3J0YW50fS5saXN0LXZpZXcxLmdyaWQgLnVpLXN0YXRlLWhpZ2hsaWdodC51aS1zdGF0ZS1ob3ZlciBmaWd1cmUsLmxpc3QtdmlldzIuZ3JpZCAudWktc3RhdGUtaGlnaGxpZ2h0LnVpLXN0YXRlLWhvdmVyIGZpZ3VyZXtiYWNrZ3JvdW5kLWNvbG9yOiNhYWEhaW1wb3J0YW50fS5uby10b3VjaCAubGlzdC12aWV3MCBmaWd1cmUuY3MtaG92ZXIgLmJveCwubm8tdG91Y2ggLmxpc3QtdmlldzAgZmlndXJlOmhvdmVyIC5ib3h7Ym94LXNoYWRvdzowIDAgNHB4IDAgcmdiYSgxLDEsMSwuNSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTI2cHgpfS5saXN0LXZpZXcwIGZpZ3VyZS5jcy1ob3ZlciAuYm94Lm5vLWVmZmVjdCwubGlzdC12aWV3MCBmaWd1cmU6aG92ZXIgLmJveC5uby1lZmZlY3QsLm5vLWVmZmVjdHtib3gtc2hhZG93Om5vbmU7dHJhbnNmb3JtOm5vbmV9Lmxpc3QtdmlldzAgLmltZy1wcmVjb250YWluZXItbWluaXtkaXNwbGF5Om5vbmU7YmFja2dyb3VuZDpub25lfWEsYTpob3Zlcntjb2xvcjojMDAwO3RleHQtZGVjb3JhdGlvbjpub25lfS5iYWNrLWRpcmVjdG9yeSAuYm94LC5iYWNrLWRpcmVjdG9yeSAuaW1nLXByZWNvbnRhaW5lciwuYmFjay1kaXJlY3RvcnkgLmltZy1wcmVjb250YWluZXItbWluaXtiYWNrZ3JvdW5kOm5vbmV9Zm9ybXttYXJnaW46MDtwYWRkaW5nOjB9Lmdvb2dsZS1pZnJhbWUsLnZpZXdlci1pZnJhbWV7d2lkdGg6MTAwJTtoZWlnaHQ6NTAwcHg7Ym9yZGVyOm5vbmV9Lm1vZGFse3dpZHRoOjYwJTttYXJnaW4tbGVmdDotMzAlfS5tb2RhbC1ib2R5e3BhZGRpbmc6NnB4fS5tb2RhbC1ib2R5IGZvcm0sLm1vZGFsLWJvZHkgaW5wdXQsLm1vZGFsLWJvZHkgdGV4dGFyZWF7bWFyZ2luOjA7Ym9yZGVyLXJhZGl1czowfS5tb2RhbC1ib2R5IC50ZXh0LWNlbnRlcntwYWRkaW5nLWJvdHRvbTo2cHh9Lm1vZGFsLWZvb3RlcntwYWRkaW5nOjdweH0ubW9kYWwtaGVhZGVye3BhZGRpbmc6N3B4IDhweCFpbXBvcnRhbnR9Lm1vZGFsLWhlYWRlciBoM3tmb250LXdlaWdodDozMDA7Zm9udC1zaXplOjIwcHh9Lmxpc3QtdmlldzEuc29ydGVyLWNvbnRhaW5lcntkaXNwbGF5OmJsb2NrfS5saXN0LXZpZXcwLnNvcnRlci1jb250YWluZXIsLmxpc3QtdmlldzIuc29ydGVyLWNvbnRhaW5lcntkaXNwbGF5Om5vbmV9LnNlbGVjdG9ye3otaW5kZXg6MX0uc2VsZWN0b3IgLmNvbnR7ZGlzcGxheTpibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTtwYWRkaW5nLWxlZnQ6MzVweDttYXJnaW4tYm90dG9tOjEycHg7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjIycHg7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lfS5zZWxlY3RvciAuY29udCBpbnB1dHtwb3NpdGlvbjphYnNvbHV0ZTtvcGFjaXR5OjA7Y3Vyc29yOnBvaW50ZXJ9LnNlbGVjdG9yIC5jb250IGlucHV0OmNoZWNrZWR+LmNoZWNrbWFya3tiYWNrZ3JvdW5kLWNvbG9yOiMyMTk2ZjN9LnNlbGVjdG9yIC5jb250IC5jaGVja21hcmt7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO2hlaWdodDoxOHB4O3dpZHRoOjE4cHg7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgI2RkZDt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgLjVzIGVhc2U7LXdlYmtpdC10cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgLjVzIGVhc2Utb3V0Oy1tb3otdHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIC41cyBlYXNlLW91dDstby10cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgLjVzIGVhc2Utb3V0fS5zZWxlY3RvciAuY29udCAuY2hlY2ttYXJrOmFmdGVye2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7ZGlzcGxheTpub25lO2xlZnQ6NXB4O3RvcDoxcHg7d2lkdGg6NnB4O2hlaWdodDoxMnB4O2JvcmRlcjpzb2xpZCAjZmZmO2JvcmRlci13aWR0aDowIDNweCAzcHggMDt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX0uc2VsZWN0b3IgLmNvbnQ6aG92ZXIgaW5wdXR+LmNoZWNrbWFya3tiYWNrZ3JvdW5kLWNvbG9yOiNkZGR9LnNlbGVjdG9yIC5jb250IGlucHV0OmNoZWNrZWR+LmNoZWNrbWFyazphZnRlcntkaXNwbGF5OmJsb2NrfS5saXN0LXZpZXcwLmdyaWQgLnNlbGVjdG9ye3Bvc2l0aW9uOmFic29sdXRlO3RvcDoycHg7bGVmdDoycHg7d2lkdGg6MThweDtoZWlnaHQ6MjJweH0ubGlzdC12aWV3MC5ncmlkIC5pbWctcHJlY29udGFpbmVyIC5pbWctY29udGFpbmVyIGltZ3ttYXgtd2lkdGg6MTIycHghaW1wb3J0YW50O21heC1oZWlnaHQ6OTFweCFpbXBvcnRhbnR9Lmxpc3QtdmlldzAuZ3JpZCAuaW1nLXByZWNvbnRhaW5lciAuaW1nLWNvbnRhaW5lciBpbWcuaWNvbnt3aWR0aDoxMjJweDttYXJnaW4tdG9wOjB9Lmxpc3QtdmlldzAuZ3JpZCAuaW1nLXByZWNvbnRhaW5lciAuZmlsZXR5cGV7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7d2lkdGg6MTIycHg7dGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6I2ZmZjtmb250LXNpemU6MTNweDtsaW5lLWhlaWdodDoyMnB4fS5saXN0LXZpZXcwLmdyaWQgLmNvdmVye2JhY2tncm91bmQ6aHNsYSgwLDAlLDEwMCUsLjI1KTt3aWR0aDoxMjJweDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MjJweDtyaWdodDowO2hlaWdodDo2OXB4fS5saXN0LXZpZXcwLmdyaWQgLmJveHtiYWNrZ3JvdW5kOiNmZmZ9Lmxpc3QtdmlldzAuZ3JpZCAuZGlyZWN0b3J5e2JhY2tncm91bmQ6I2RkZH0ubGlzdC12aWV3MC5ncmlkIGZpZ3VyZS5iYWNrLWRpcmVjdG9yeSAuZGlyZWN0b3J5e2JhY2tncm91bmQ6I2JiYn0ubGlzdC12aWV3MC5ncmlkIGZpZ2NhcHRpb257YmFja2dyb3VuZDojZmZmfS5saXN0LXZpZXcwLmdyaWQgLnNlbGVjdGVkIGZpZ3VyZXtib3JkZXI6bm9uZTtoZWlnaHQ6MTI2cHh9Lmxpc3QtdmlldzAuZ3JpZCAuc2VsZWN0ZWQgZmlndXJlIC5ib3gsLmxpc3QtdmlldzAuZ3JpZCAuc2VsZWN0ZWQgZmlndXJlPmEsLmxpc3QtdmlldzAuZ3JpZCAuc2VsZWN0ZWQgZmlndXJlIGZpZ2NhcHRpb257ZGlzcGxheTpub25lfS5saXN0LXZpZXcxLmdyaWQgbGksLmxpc3QtdmlldzIuZ3JpZCBsaXttYXJnaW46MH0ubGlzdC12aWV3MS5ncmlkIGxpLmJhY2sgZmlndXJlLmJhY2stZGlyZWN0b3J5LC5saXN0LXZpZXcyLmdyaWQgbGkuYmFjayBmaWd1cmUuYmFjay1kaXJlY3Rvcnl7aGVpZ2h0OjM0cHh9Lmxpc3QtdmlldzEuZ3JpZCBsaS5uby1zZWxlY3RvciAuaW1nLWNvbnRhaW5lci1taW5pLC5saXN0LXZpZXcyLmdyaWQgbGkubm8tc2VsZWN0b3IgLmltZy1jb250YWluZXItbWluaXtwYWRkaW5nLWxlZnQ6MH0ubGlzdC12aWV3MS5ncmlkIGxpLm5vLXNlbGVjdG9yIGZpZ3VyZSAuYm94LC5saXN0LXZpZXcyLmdyaWQgbGkubm8tc2VsZWN0b3IgZmlndXJlIC5ib3h7bWFyZ2luLWxlZnQ6NDhweH0ubGlzdC12aWV3MS5ncmlkIGxpOm50aC1jaGlsZChvZGQpIGZpZ3VyZSwubGlzdC12aWV3Mi5ncmlkIGxpOm50aC1jaGlsZChvZGQpIGZpZ3VyZXtiYWNrZ3JvdW5kOiNmOWY5Zjl9Lmxpc3QtdmlldzEuZ3JpZCBsaTpudGgtY2hpbGQob2RkKSBmaWd1cmUuZGlyZWN0b3J5LC5saXN0LXZpZXcyLmdyaWQgbGk6bnRoLWNoaWxkKG9kZCkgZmlndXJlLmRpcmVjdG9yeXtiYWNrZ3JvdW5kOiNlYWVhZWF9Lmxpc3QtdmlldzEuZ3JpZCBsaSBmaWd1cmUsLmxpc3QtdmlldzIuZ3JpZCBsaSBmaWd1cmV7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2FhYTtiYWNrZ3JvdW5kOiNmZmZ9Lmxpc3QtdmlldzEuZ3JpZCBsaSBmaWd1cmUuYmFjay1kaXJlY3RvcnksLmxpc3QtdmlldzIuZ3JpZCBsaSBmaWd1cmUuYmFjay1kaXJlY3Rvcnl7YmFja2dyb3VuZDojYmJifS5saXN0LXZpZXcxLmdyaWQgbGkgZmlndXJlLmJhY2stZGlyZWN0b3J5IC5ib3gsLmxpc3QtdmlldzIuZ3JpZCBsaSBmaWd1cmUuYmFjay1kaXJlY3RvcnkgLmJveHtiYWNrZ3JvdW5kOm5vbmV9Lmxpc3QtdmlldzEuZ3JpZCBsaSBmaWd1cmUuZGlyZWN0b3J5LC5saXN0LXZpZXcyLmdyaWQgbGkgZmlndXJlLmRpcmVjdG9yeXtiYWNrZ3JvdW5kOiNlZmVmZWZ9Lmxpc3QtdmlldzEuZ3JpZCBsaSBmaWd1cmUuZGlyZWN0b3J5IGJveCwubGlzdC12aWV3Mi5ncmlkIGxpIGZpZ3VyZS5kaXJlY3RvcnkgYm94e3BhZGRpbmc6MDttaW4taGVpZ2h0OjEwcHh9Lmxpc3QtdmlldzEuZ3JpZCBsaSBmaWd1cmUgLmJveCwubGlzdC12aWV3Mi5ncmlkIGxpIGZpZ3VyZSAuYm94e21hcmdpbi1sZWZ0OjcwcHg7dHJhbnNpdGlvbjpub25lfS5saXN0LXZpZXcxLmdyaWQgbGkgZmlndXJlIC5ib3ggaDQsLmxpc3QtdmlldzIuZ3JpZCBsaSBmaWd1cmUgLmJveCBoNHtwYWRkaW5nLXRvcDoxcHg7Zm9udC1zaXplOjEzcHg7dGV4dC1hbGlnbjpsZWZ0fS5saXN0LXZpZXcxLmdyaWQgLmltZy1wcmVjb250YWluZXItbWluaSwubGlzdC12aWV3Mi5ncmlkIC5pbWctcHJlY29udGFpbmVyLW1pbml7ZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDo0NXB4O2xlZnQ6MjJweDtoZWlnaHQ6MzRweDtvdmVyZmxvdzpoaWRkZW47dGV4dC1hbGlnbjpjZW50ZXJ9Lmxpc3QtdmlldzEuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIGltZywubGlzdC12aWV3Mi5ncmlkIC5pbWctcHJlY29udGFpbmVyLW1pbmkgaW1ne21heC13aWR0aDo0NXB4O3dpZHRoOjQ1cHh9Lmxpc3QtdmlldzEuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZSwubGlzdC12aWV3Mi5ncmlkIC5pbWctcHJlY29udGFpbmVyLW1pbmkgLmZpbGV0eXBle3Bvc2l0aW9uOmFic29sdXRlO3RvcDoxcHg7bGVmdDowO3RleHQtYWxpZ246Y2VudGVyO3BhZGRpbmc6MXB4IDJweDtmb250LXNpemU6MTNweDtsaW5lLWhlaWdodDozMnB4O3dpZHRoOjQ1cHg7aGVpZ2h0OjMycHg7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOiMzMzN9Lmxpc3QtdmlldzEuZ3JpZCAuY292ZXIsLmxpc3QtdmlldzIuZ3JpZCAuY292ZXJ7ZGlzcGxheTpub25lfS5saXN0LXZpZXcxLmdyaWQgLnNlbGVjdG9yLC5saXN0LXZpZXcyLmdyaWQgLnNlbGVjdG9ye3RvcDo4cHg7bGVmdDoycHg7cG9zaXRpb246cmVsYXRpdmV9Lmxpc3QtdmlldzEuZ3JpZCAuc2VsZWN0b3IgLmNvbnQsLmxpc3QtdmlldzIuZ3JpZCAuc2VsZWN0b3IgLmNvbnR7bWFyZ2luOjB9Lmxpc3QtdmlldzEuZ3JpZCAuaW1nLWNvbnRhaW5lci1taW5pLC5saXN0LXZpZXcyLmdyaWQgLmltZy1jb250YWluZXItbWluaXt3aWR0aDo0NXB4O2hlaWdodDozNHB4O2JvcmRlcjpub25lO292ZXJmbG93OmhpZGRlbjt0ZXh0LWFsaWduOmNlbnRlcjt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bWFyZ2luOmF1dG87bGVmdDoyNHB4fS5saXN0LXZpZXcxLmdyaWQgLmltZy1wcmVjb250YWluZXItbWluaS5vcmlnaW5hbC10aHVtYiwubGlzdC12aWV3Mi5ncmlkIC5pbWctcHJlY29udGFpbmVyLW1pbmkub3JpZ2luYWwtdGh1bWJ7cGFkZGluZzowfS5saXN0LXZpZXcxLmdyaWQgLmltZy1wcmVjb250YWluZXItbWluaS5vcmlnaW5hbC10aHVtYiBpbWcsLmxpc3QtdmlldzIuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pLm9yaWdpbmFsLXRodW1iIGltZ3t3aWR0aDphdXRvO21heC1oZWlnaHQ6MzJweH0ubGlzdC12aWV3MS5ncmlkIC5pbWctcHJlY29udGFpbmVyLW1pbmkub3JpZ2luYWwtdGh1bWIgaW1nLm9yaWdpbmFsLC5saXN0LXZpZXcyLmdyaWQgLmltZy1wcmVjb250YWluZXItbWluaS5vcmlnaW5hbC10aHVtYiBpbWcub3JpZ2luYWx7d2lkdGg6YXV0bztoZWlnaHQ6YXV0b30ubGlzdC12aWV3MS5ncmlkIC5pbWctcHJlY29udGFpbmVyLC5saXN0LXZpZXcyLmdyaWQgLmltZy1wcmVjb250YWluZXJ7ZGlzcGxheTpub25lfS5saXN0LXZpZXcxLmdyaWQgZmlnY2FwdGlvbiwubGlzdC12aWV3Mi5ncmlkIGZpZ2NhcHRpb257YmFja2dyb3VuZDpub25lO3dpZHRoOjEyMHB4O3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7dG9wOjA7ei1pbmRleDoxO2JvdHRvbTowO2JveC1zaGFkb3c6bm9uZTt0ZXh0LWFsaWduOnJpZ2h0fS5saXN0LXZpZXcxLmdyaWQgLnNlbGVjdGVkIGZpZ3VyZSwubGlzdC12aWV3Mi5ncmlkIC5zZWxlY3RlZCBmaWd1cmV7YmFja2dyb3VuZDojY2NjIWltcG9ydGFudH0ubGlzdC12aWV3MS5ncmlkIC5maWxlLWRhdGUsLmxpc3QtdmlldzEuZ3JpZCAuZmlsZS1leHRlbnNpb24sLmxpc3QtdmlldzEuZ3JpZCAuZmlsZS1zaXplLC5saXN0LXZpZXcxLmdyaWQgLmltZy1kaW1lbnNpb257b3ZlcmZsb3c6aGlkZGVuO2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7ei1pbmRleDoxO2JveC1zaGFkb3c6bm9uZTt0ZXh0LWFsaWduOmxlZnQ7bWFyZ2luLXRvcDo3cHh9Lmxpc3QtdmlldzEuZ3JpZCAuaW1nLWRpbWVuc2lvbnt3aWR0aDo2NXB4O3JpZ2h0OjEyMHB4fS5saXN0LXZpZXcxLmdyaWQgLmZpbGUtZGF0ZXt3aWR0aDo3MHB4O3JpZ2h0OjE4NXB4fS5saXN0LXZpZXcxLmdyaWQgLmZpbGUtc2l6ZXt3aWR0aDo1NXB4O3JpZ2h0OjI1NXB4fS5saXN0LXZpZXcxLmdyaWQgLmZpbGUtZXh0ZW5zaW9ue3dpZHRoOjQwcHg7cmlnaHQ6MzEwcHh9Lmxpc3QtdmlldzEuZ3JpZCBmaWd1cmUgLmJveHtwYWRkaW5nLXJpZ2h0OjM1MnB4fS5saXN0LXZpZXcyLmdyaWQgZmlndXJlIC5ib3h7cGFkZGluZy1yaWdodDoxMTVweH1AbWVkaWEgKG1heC13aWR0aDo2MTBweCl7Lmxpc3QtdmlldzEuZ3JpZCBmaWd1cmUgLmJveHtwYWRkaW5nLXJpZ2h0OjMxMnB4fS5saXN0LXZpZXcxLmdyaWQgZmlndXJlIC5maWxlLWV4dGVuc2lvbiwuc29ydGVyLWNvbnRhaW5lciAuZmlsZS1leHRlbnNpb257ZGlzcGxheTpub25lfX1AbWVkaWEgKG1heC13aWR0aDo1NjVweCl7Lmxpc3QtdmlldzEuZ3JpZCBmaWd1cmUgLmJveHtwYWRkaW5nLXJpZ2h0OjI1N3B4fS5saXN0LXZpZXcxLmdyaWQgZmlndXJlIC5maWxlLXNpemUsLnNvcnRlci1jb250YWluZXIgLmZpbGUtc2l6ZXtkaXNwbGF5Om5vbmV9fUBtZWRpYSAobWF4LXdpZHRoOjQ5NXB4KXsubGlzdC12aWV3MS5ncmlkIGZpZ3VyZSAuYm94e3BhZGRpbmctcmlnaHQ6MTg3cHh9Lmxpc3QtdmlldzEuZ3JpZCBmaWd1cmUgLmZpbGUtZGF0ZSwuc29ydGVyLWNvbnRhaW5lciAuZmlsZS1kYXRle2Rpc3BsYXk6bm9uZX19QG1lZGlhIChtYXgtd2lkdGg6NDMwcHgpey5saXN0LXZpZXcxLmdyaWQgZmlndXJlIC5ib3h7cGFkZGluZy1yaWdodDoxMTVweH0ubGlzdC12aWV3MS5ncmlkIGZpZ3VyZSAuaW1nLWRpbWVuc2lvbiwuc29ydGVyLWNvbnRhaW5lciAuaW1nLWRpbWVuc2lvbntkaXNwbGF5Om5vbmV9LmJyZWFkY3J1bWJ7bWFyZ2luLWxlZnQ6MDttYXJnaW4tcmlnaHQ6MH19Lmxpc3QtdmlldzEuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5wZGYsLmxpc3QtdmlldzIuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5wZGZ7YmFja2dyb3VuZDojY2IwMDExfS5saXN0LXZpZXcxLmdyaWQgLmltZy1wcmVjb250YWluZXItbWluaSAuZmlsZXR5cGUuY3NzLC5saXN0LXZpZXcyLmdyaWQgLmltZy1wcmVjb250YWluZXItbWluaSAuZmlsZXR5cGUuY3Nze2JhY2tncm91bmQ6I2QxMDY5OH0ubGlzdC12aWV3MS5ncmlkIC5pbWctcHJlY29udGFpbmVyLW1pbmkgLmZpbGV0eXBlLmFpLC5saXN0LXZpZXcyLmdyaWQgLmltZy1wcmVjb250YWluZXItbWluaSAuZmlsZXR5cGUuYWl7YmFja2dyb3VuZDojZDY3NzJmfS5saXN0LXZpZXcxLmdyaWQgLmltZy1wcmVjb250YWluZXItbWluaSAuZmlsZXR5cGUucHNkLC5saXN0LXZpZXcyLmdyaWQgLmltZy1wcmVjb250YWluZXItbWluaSAuZmlsZXR5cGUucHNke2JhY2tncm91bmQ6IzA5NjBhNH0ubGlzdC12aWV3MS5ncmlkIC5pbWctcHJlY29udGFpbmVyLW1pbmkgLmZpbGV0eXBlLmh0bWwsLmxpc3QtdmlldzEuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS54aHRtbCwubGlzdC12aWV3Mi5ncmlkIC5pbWctcHJlY29udGFpbmVyLW1pbmkgLmZpbGV0eXBlLmh0bWwsLmxpc3QtdmlldzIuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS54aHRtbHtiYWNrZ3JvdW5kOiMwMzViYzR9Lmxpc3QtdmlldzEuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5mbGEsLmxpc3QtdmlldzEuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5mbHYsLmxpc3QtdmlldzIuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5mbGEsLmxpc3QtdmlldzIuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5mbHZ7YmFja2dyb3VuZDojY2YzMDJlfS5saXN0LXZpZXcxLmdyaWQgLmltZy1wcmVjb250YWluZXItbWluaSAuZmlsZXR5cGUucHB0LC5saXN0LXZpZXcxLmdyaWQgLmltZy1wcmVjb250YWluZXItbWluaSAuZmlsZXR5cGUucHB0eCwubGlzdC12aWV3Mi5ncmlkIC5pbWctcHJlY29udGFpbmVyLW1pbmkgLmZpbGV0eXBlLnBwdCwubGlzdC12aWV3Mi5ncmlkIC5pbWctcHJlY29udGFpbmVyLW1pbmkgLmZpbGV0eXBlLnBwdHh7YmFja2dyb3VuZDojZGE1YjAwfS5saXN0LXZpZXcxLmdyaWQgLmltZy1wcmVjb250YWluZXItbWluaSAuZmlsZXR5cGUuY3NzLC5saXN0LXZpZXcxLmdyaWQgLmltZy1wcmVjb250YWluZXItbWluaSAuZmlsZXR5cGUueGxzLC5saXN0LXZpZXcxLmdyaWQgLmltZy1wcmVjb250YWluZXItbWluaSAuZmlsZXR5cGUueGxzeCwubGlzdC12aWV3Mi5ncmlkIC5pbWctcHJlY29udGFpbmVyLW1pbmkgLmZpbGV0eXBlLmNzcywubGlzdC12aWV3Mi5ncmlkIC5pbWctcHJlY29udGFpbmVyLW1pbmkgLmZpbGV0eXBlLnhscywubGlzdC12aWV3Mi5ncmlkIC5pbWctcHJlY29udGFpbmVyLW1pbmkgLmZpbGV0eXBlLnhsc3h7YmFja2dyb3VuZDojMWE3MTJjfS5saXN0LXZpZXcxLmdyaWQgLmltZy1wcmVjb250YWluZXItbWluaSAuZmlsZXR5cGUuZG9jLC5saXN0LXZpZXcxLmdyaWQgLmltZy1wcmVjb250YWluZXItbWluaSAuZmlsZXR5cGUuZG9jeCwubGlzdC12aWV3MS5ncmlkIC5pbWctcHJlY29udGFpbmVyLW1pbmkgLmZpbGV0eXBlLnJ0cywubGlzdC12aWV3Mi5ncmlkIC5pbWctcHJlY29udGFpbmVyLW1pbmkgLmZpbGV0eXBlLmRvYywubGlzdC12aWV3Mi5ncmlkIC5pbWctcHJlY29udGFpbmVyLW1pbmkgLmZpbGV0eXBlLmRvY3gsLmxpc3QtdmlldzIuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5ydHN7YmFja2dyb3VuZDojMDAyMDkzfS5saXN0LXZpZXcxLmdyaWQgLmltZy1wcmVjb250YWluZXItbWluaSAuZmlsZXR5cGUuZ3ppcCwubGlzdC12aWV3MS5ncmlkIC5pbWctcHJlY29udGFpbmVyLW1pbmkgLmZpbGV0eXBlLnJhciwubGlzdC12aWV3MS5ncmlkIC5pbWctcHJlY29udGFpbmVyLW1pbmkgLmZpbGV0eXBlLnppcCwubGlzdC12aWV3Mi5ncmlkIC5pbWctcHJlY29udGFpbmVyLW1pbmkgLmZpbGV0eXBlLmd6aXAsLmxpc3QtdmlldzIuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5yYXIsLmxpc3QtdmlldzIuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS56aXB7YmFja2dyb3VuZDojZmU5MjIxfS5saXN0LXZpZXcxLmdyaWQgLmltZy1wcmVjb250YWluZXItbWluaSAuZmlsZXR5cGUuYXZpLC5saXN0LXZpZXcxLmdyaWQgLmltZy1wcmVjb250YWluZXItbWluaSAuZmlsZXR5cGUubW92LC5saXN0LXZpZXcxLmdyaWQgLmltZy1wcmVjb250YWluZXItbWluaSAuZmlsZXR5cGUubXA0LC5saXN0LXZpZXcxLmdyaWQgLmltZy1wcmVjb250YWluZXItbWluaSAuZmlsZXR5cGUubXBlZywubGlzdC12aWV3MS5ncmlkIC5pbWctcHJlY29udGFpbmVyLW1pbmkgLmZpbGV0eXBlLm1wZywubGlzdC12aWV3MS5ncmlkIC5pbWctcHJlY29udGFpbmVyLW1pbmkgLmZpbGV0eXBlLndlYm0sLmxpc3QtdmlldzEuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS53bWEsLmxpc3QtdmlldzIuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5hdmksLmxpc3QtdmlldzIuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5tb3YsLmxpc3QtdmlldzIuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5tcDQsLmxpc3QtdmlldzIuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5tcGVnLC5saXN0LXZpZXcyLmdyaWQgLmltZy1wcmVjb250YWluZXItbWluaSAuZmlsZXR5cGUubXBnLC5saXN0LXZpZXcyLmdyaWQgLmltZy1wcmVjb250YWluZXItbWluaSAuZmlsZXR5cGUud2VibSwubGlzdC12aWV3Mi5ncmlkIC5pbWctcHJlY29udGFpbmVyLW1pbmkgLmZpbGV0eXBlLndtYXtiYWNrZ3JvdW5kOiMzMTIzMWV9Lmxpc3QtdmlldzEuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5hYzMsLmxpc3QtdmlldzEuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5haWZmLC5saXN0LXZpZXcxLmdyaWQgLmltZy1wcmVjb250YWluZXItbWluaSAuZmlsZXR5cGUubTRhLC5saXN0LXZpZXcxLmdyaWQgLmltZy1wcmVjb250YWluZXItbWluaSAuZmlsZXR5cGUubWlkLC5saXN0LXZpZXcxLmdyaWQgLmltZy1wcmVjb250YWluZXItbWluaSAuZmlsZXR5cGUubXAzLC5saXN0LXZpZXcxLmdyaWQgLmltZy1wcmVjb250YWluZXItbWluaSAuZmlsZXR5cGUub2dnLC5saXN0LXZpZXcxLmdyaWQgLmltZy1wcmVjb250YWluZXItbWluaSAuZmlsZXR5cGUud2F2LC5saXN0LXZpZXcyLmdyaWQgLmltZy1wcmVjb250YWluZXItbWluaSAuZmlsZXR5cGUuYWMzLC5saXN0LXZpZXcyLmdyaWQgLmltZy1wcmVjb250YWluZXItbWluaSAuZmlsZXR5cGUuYWlmZiwubGlzdC12aWV3Mi5ncmlkIC5pbWctcHJlY29udGFpbmVyLW1pbmkgLmZpbGV0eXBlLm00YSwubGlzdC12aWV3Mi5ncmlkIC5pbWctcHJlY29udGFpbmVyLW1pbmkgLmZpbGV0eXBlLm1pZCwubGlzdC12aWV3Mi5ncmlkIC5pbWctcHJlY29udGFpbmVyLW1pbmkgLmZpbGV0eXBlLm1wMywubGlzdC12aWV3Mi5ncmlkIC5pbWctcHJlY29udGFpbmVyLW1pbmkgLmZpbGV0eXBlLm9nZywubGlzdC12aWV3Mi5ncmlkIC5pbWctcHJlY29udGFpbmVyLW1pbmkgLmZpbGV0eXBlLndhdntiYWNrZ3JvdW5kOiM5ZjAwOGJ9Lmxpc3QtdmlldzEuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5vZGIsLmxpc3QtdmlldzEuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5vZGYsLmxpc3QtdmlldzEuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5vZGcsLmxpc3QtdmlldzEuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5vZHAsLmxpc3QtdmlldzEuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5vZHMsLmxpc3QtdmlldzEuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5vZHQsLmxpc3QtdmlldzEuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5vdGcsLmxpc3QtdmlldzEuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5vdHAsLmxpc3QtdmlldzEuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5vdHMsLmxpc3QtdmlldzEuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5vdHQsLmxpc3QtdmlldzIuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5vZGIsLmxpc3QtdmlldzIuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5vZGYsLmxpc3QtdmlldzIuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5vZGcsLmxpc3QtdmlldzIuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5vZHAsLmxpc3QtdmlldzIuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5vZHMsLmxpc3QtdmlldzIuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5vZHQsLmxpc3QtdmlldzIuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5vdGcsLmxpc3QtdmlldzIuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5vdHAsLmxpc3QtdmlldzIuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5vdHMsLmxpc3QtdmlldzIuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5vdHR7YmFja2dyb3VuZDojMzY3YmJlfS5saXN0LXZpZXcxLmdyaWQgLmltZy1wcmVjb250YWluZXItbWluaSAuZmlsZXR5cGUuYm1wLC5saXN0LXZpZXcxLmdyaWQgLmltZy1wcmVjb250YWluZXItbWluaSAuZmlsZXR5cGUuZ2lmLC5saXN0LXZpZXcxLmdyaWQgLmltZy1wcmVjb250YWluZXItbWluaSAuZmlsZXR5cGUuanBlZywubGlzdC12aWV3MS5ncmlkIC5pbWctcHJlY29udGFpbmVyLW1pbmkgLmZpbGV0eXBlLmpwZywubGlzdC12aWV3MS5ncmlkIC5pbWctcHJlY29udGFpbmVyLW1pbmkgLmZpbGV0eXBlLnBuZywubGlzdC12aWV3MS5ncmlkIC5pbWctcHJlY29udGFpbmVyLW1pbmkgLmZpbGV0eXBlLnN2ZywubGlzdC12aWV3MS5ncmlkIC5pbWctcHJlY29udGFpbmVyLW1pbmkgLmZpbGV0eXBlLnRpZmYsLmxpc3QtdmlldzIuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5ibXAsLmxpc3QtdmlldzIuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5naWYsLmxpc3QtdmlldzIuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5qcGVnLC5saXN0LXZpZXcyLmdyaWQgLmltZy1wcmVjb250YWluZXItbWluaSAuZmlsZXR5cGUuanBnLC5saXN0LXZpZXcyLmdyaWQgLmltZy1wcmVjb250YWluZXItbWluaSAuZmlsZXR5cGUucG5nLC5saXN0LXZpZXcyLmdyaWQgLmltZy1wcmVjb250YWluZXItbWluaSAuZmlsZXR5cGUuc3ZnLC5saXN0LXZpZXcyLmdyaWQgLmltZy1wcmVjb250YWluZXItbWluaSAuZmlsZXR5cGUudGlmZntiYWNrZ3JvdW5kOiNjZmE1NTR9Lmxpc3QtdmlldzEuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5kbWcsLmxpc3QtdmlldzEuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5pc28sLmxpc3QtdmlldzEuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5sb2csLmxpc3QtdmlldzEuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5zcWwsLmxpc3QtdmlldzEuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS50eHQsLmxpc3QtdmlldzEuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS54bWwsLmxpc3QtdmlldzIuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5kbWcsLmxpc3QtdmlldzIuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5pc28sLmxpc3QtdmlldzIuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5sb2csLmxpc3QtdmlldzIuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5zcWwsLmxpc3QtdmlldzIuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS50eHQsLmxpc3QtdmlldzIuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS54bWx7YmFja2dyb3VuZDojY2FjYWNhfS5saXN0LXZpZXcxLmdyaWQgLmltZy1wcmVjb250YWluZXItbWluaSAuZmlsZXR5cGUuYWNjZGIsLmxpc3QtdmlldzEuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5hZGUsLmxpc3QtdmlldzEuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5hZHAsLmxpc3QtdmlldzEuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5tZGIsLmxpc3QtdmlldzIuZ3JpZCAuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZS5hY2NkYiwubGlzdC12aWV3Mi5ncmlkIC5pbWctcHJlY29udGFpbmVyLW1pbmkgLmZpbGV0eXBlLmFkZSwubGlzdC12aWV3Mi5ncmlkIC5pbWctcHJlY29udGFpbmVyLW1pbmkgLmZpbGV0eXBlLmFkcCwubGlzdC12aWV3Mi5ncmlkIC5pbWctcHJlY29udGFpbmVyLW1pbmkgLmZpbGV0eXBlLm1kYntiYWNrZ3JvdW5kOiNiNjFjMTl9LmxpZ2h0Ym94LWNvbnRlbnR7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtiYWNrZ3JvdW5kOm5vbmU7Ym94LXNoYWRvdzpub25lO2JvcmRlci1yYWRpdXM6MDtib3JkZXI6MH0uY29udGV4dC1tZW51LWxpc3R7Zm9udC1mYW1pbHk6T3BlbiBTYW5zLHNhbnMtc2VyaWY7d2lkdGg6MjAwcHg7YmFja2dyb3VuZDojZmZmO2ZvbnQtc2l6ZToxMnB4O21hcmdpbjowO3BhZGRpbmc6NXB4fS5jb250ZXh0LW1lbnUtaXRlbXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7cG9zaXRpb246cmVsYXRpdmU7aGVpZ2h0OmF1dG87d29yZC13cmFwOmJyZWFrLXdvcmQ7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6MDstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO3BhZGRpbmc6NXB4IDVweCA1cHggMzBweH0uY29udGV4dC1tZW51LWl0ZW06bGFzdC1jaGlsZHtib3JkZXI6bm9uZX0uY29udGV4dC1tZW51LXNlcGFyYXRvcntwYWRkaW5nLWJvdHRvbTowO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNkZGR9LmNvbnRleHQtbWVudS1pdGVtLmhvdmVye2JhY2tncm91bmQtY29sb3I6I2RkZH0uY29udGV4dC1tZW51LWlucHV0LmhvdmVyLC5jb250ZXh0LW1lbnUtaXRlbS5kaXNhYmxlZC5ob3ZlcntjdXJzb3I6ZGVmYXVsdDtiYWNrZ3JvdW5kLWNvbG9yOiNlZWV9LmNvbnRleHQtbWVudS1pdGVtLmljb257dmVydGljYWwtYWxpZ246bWlkZGxlO2JhY2tncm91bmQtcG9zaXRpb246NHB4IDVweDt3aWR0aDphdXRvO2Rpc3BsYXk6bGlzdC1pdGVtfS5jb250ZXh0LW1lbnUtaXRlbS5pY29uLWVkaXR7YmFja2dyb3VuZC1pbWFnZTp1cmwoLi4vaW1nL2ZpbGVfZWRpdC5wbmcpfS5jb250ZXh0LW1lbnUtaXRlbS5pY29uLWN1dHtiYWNrZ3JvdW5kLWltYWdlOnVybCguLi9pbWcvY3V0LnBuZyl9LmNvbnRleHQtbWVudS1pdGVtLmljb24tY29weXtiYWNrZ3JvdW5kLWltYWdlOnVybCguLi9pbWcvY29weS5wbmcpfS5jb250ZXh0LW1lbnUtaXRlbS5pY29uLXJlbmFtZXtiYWNrZ3JvdW5kLWltYWdlOnVybCguLi9pbWcvcmVuYW1lLnBuZyl9LmNvbnRleHQtbWVudS1pdGVtLmljb24tcHJldmlld3tiYWNrZ3JvdW5kLWltYWdlOnVybCguLi9pbWcvcHJldmlldy5wbmcpfS5jb250ZXh0LW1lbnUtaXRlbS5pY29uLWRpbWVuc2lvbntiYWNrZ3JvdW5kLWltYWdlOnVybCguLi9pbWcvZGltZW5zaW9uLnBuZyl9LmNvbnRleHQtbWVudS1pdGVtLmljb24tZGF0ZXtiYWNrZ3JvdW5kLWltYWdlOnVybCguLi9pbWcvZGF0ZS5wbmcpfS5jb250ZXh0LW1lbnUtaXRlbS5pY29uLWxhYmVse2JhY2tncm91bmQtaW1hZ2U6dXJsKC4uL2ltZy9sYWJlbC5wbmcpfS5jb250ZXh0LW1lbnUtaXRlbS5pY29uLXNpemV7YmFja2dyb3VuZC1pbWFnZTp1cmwoLi4vaW1nL3NpemUucG5nKX0uY29udGV4dC1tZW51LWl0ZW0uaWNvbi1kb3dubG9hZHtiYWNrZ3JvdW5kLWltYWdlOnVybCguLi9pbWcvZG93bmxvYWQucG5nKX0uY29udGV4dC1tZW51LWl0ZW0uaWNvbi1wYXN0ZXtiYWNrZ3JvdW5kLWltYWdlOnVybCguLi9pbWcvcGFnZV93aGl0ZV9wYXN0ZS5wbmcpfS5jb250ZXh0LW1lbnUtaXRlbS5pY29uLWNsaXBib2FyZC1hcHBseXtiYWNrZ3JvdW5kLWltYWdlOnVybCguLi9pbWcvY2xpcGJvYXJkX2FwcGx5LnBuZyl9LmNvbnRleHQtbWVudS1pdGVtLmljb24tZGVsZXRle2JhY2tncm91bmQtaW1hZ2U6dXJsKC4uL2ltZy9wYWdlX3doaXRlX2RlbGV0ZS5wbmcpfS5jb250ZXh0LW1lbnUtaXRlbS5pY29uLWFkZHtiYWNrZ3JvdW5kLWltYWdlOnVybCguLi9pbWcvcGFnZV93aGl0ZV9hZGQucG5nKX0uY29udGV4dC1tZW51LWl0ZW0uaWNvbi1xdWl0e2JhY2tncm91bmQtaW1hZ2U6dXJsKC4uL2ltZy9kb29yLnBuZyl9LmNvbnRleHQtbWVudS1pdGVtLmljb24taW5mb3tiYWNrZ3JvdW5kLWltYWdlOnVybCguLi9pbWcvaW5mby5wbmcpfS5jb250ZXh0LW1lbnUtaXRlbS5pY29uLWV4dHJhY3R7YmFja2dyb3VuZC1pbWFnZTp1cmwoLi4vaW1nL3ppcC5wbmcpfS5jb250ZXh0LW1lbnUtaXRlbS5pY29uLXVybHtiYWNrZ3JvdW5kLWltYWdlOnVybCguLi9pbWcvdXJsLnBuZyl9LmNvbnRleHQtbWVudS1pdGVtLmljb24tZWRpdF9pbWd7YmFja2dyb3VuZC1pbWFnZTp1cmwoLi4vaW1nL2VkaXRfaW1nLnBuZyl9LmNvbnRleHQtbWVudS1pdGVtLmljb24tZHVwbGljYXRle2JhY2tncm91bmQtaW1hZ2U6dXJsKC4uL2ltZy9kdXBsaWNhdGUucG5nKX0uY29udGV4dC1tZW51LWl0ZW0uaWNvbi1rZXl7YmFja2dyb3VuZC1pbWFnZTp1cmwoLi4vaW1nL2tleS5wbmcpfS5kcm9wem9uZXtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjAzKTttaW4taGVpZ2h0OjM2MHB4O2JvcmRlci1yYWRpdXM6M3B4O2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDMpO3BhZGRpbmc6MjNweH0uZHJvcHpvbmUgLmR6LXN1Y2Nlc3MgKntjdXJzb3I6cG9pbnRlciFpbXBvcnRhbnR9LmRyb3B6b25lIC5kei1kZWZhdWx0LmR6LW1lc3NhZ2V7b3BhY2l0eToxOy1tcy1maWx0ZXI6bm9uZTtmaWx0ZXI6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHkgLjNzIGVhc2UtaW4tb3V0O2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgMDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDo0MjhweDtoZWlnaHQ6MTIzcHg7bWFyZ2luLWxlZnQ6LTIxNHB4O21hcmdpbi10b3A6LTYxLjVweDt0b3A6NTAlO2xlZnQ6NTAlfS5idG4tcHJpbWFyeSwuYnRuLXByaW1hcnkuZGlzYWJsZWQsLmJ0bi1wcmltYXJ5W2Rpc2FibGVkXXtiYWNrZ3JvdW5kLWNvbG9yOiMzMzN9LmJ0bi1wcmltYXJ5LmFjdGl2ZSwuYnRuLXByaW1hcnk6YWN0aXZlLC5idG4tcHJpbWFyeTpmb2N1cywuYnRuLXByaW1hcnk6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojMjIyfS50dWktaW1hZ2UtZWRpdG9yLWNvbnRhaW5lcntwb3NpdGlvbjpmaXhlZDt0b3A6MDtsZWZ0OjA7ei1pbmRleDo5OTk5OX0=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/dialog.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJHRpbWUgPSB0aW1lKCk7CgokY29uZmlnID0gaW5jbHVkZSAnY29uZmlnL2NvbmZpZy5waHAnOwoKaWYgKFVTRV9BQ0NFU1NfS0VZUyA9PSB0cnVlKXsKCWlmICghaXNzZXQoJF9HRVRbJ2FrZXknXSwgJGNvbmZpZ1snYWNjZXNzX2tleXMnXSkgfHwgZW1wdHkoJGNvbmZpZ1snYWNjZXNzX2tleXMnXSkpewoJCWRpZSgnQWNjZXNzIERlbmllZCEnKTsKCX0KCiAgICAkX0dFVFsnYWtleSddID0gc3RyaXBfdGFncyhwcmVnX3JlcGxhY2UoIi9bXmEtekEtWjAtOVwuXy1dLyIsICcnLCAkX0dFVFsnYWtleSddKSk7CgoJaWYgKCFpbl9hcnJheSgkX0dFVFsnYWtleSddLCAkY29uZmlnWydhY2Nlc3Nfa2V5cyddKSl7CgkJZGllKCdBY2Nlc3MgRGVuaWVkIScpOwoJfQp9CgokX1NFU1NJT05bJ1JGJ11bInZlcmlmeSJdID0gIlJFU1BPTlNJVkVmaWxlbWFuYWdlciI7CgppZiAoaXNzZXQoJF9QT1NUWydzdWJtaXQnXSkpIHsKICAgIGluY2x1ZGUgJ3VwbG9hZC5waHAnOwp9IGVsc2UgewogICAgJGF2YWlsYWJsZV9sYW5ndWFnZXMgPSBpbmNsdWRlICdsYW5nL2xhbmd1YWdlcy5waHAnOwoKICAgIGxpc3QoJHByZWZlcnJlZF9sYW5ndWFnZSkgPSBhcnJheV92YWx1ZXMoYXJyYXlfZmlsdGVyKGFycmF5KAogICAgICAgIGlzc2V0KCRfR0VUWydsYW5nJ10pID8gJF9HRVRbJ2xhbmcnXSA6IG51bGwsCiAgICAgICAgaXNzZXQoJF9TRVNTSU9OWydSRiddWydsYW5ndWFnZSddKSA/ICRfU0VTU0lPTlsnUkYnXVsnbGFuZ3VhZ2UnXSA6IG51bGwsCiAgICAgICAgJGNvbmZpZ1snZGVmYXVsdF9sYW5ndWFnZSddCiAgICApKSk7CgogICAgaWYgKGFycmF5X2tleV9leGlzdHMoJHByZWZlcnJlZF9sYW5ndWFnZSwgJGF2YWlsYWJsZV9sYW5ndWFnZXMpKSB7CiAgICAgICAgJF9TRVNTSU9OWydSRiddWydsYW5ndWFnZSddID0gJHByZWZlcnJlZF9sYW5ndWFnZTsKICAgIH0gZWxzZSB7CiAgICAgICAgJF9TRVNTSU9OWydSRiddWydsYW5ndWFnZSddID0gJGNvbmZpZ1snZGVmYXVsdF9sYW5ndWFnZSddOwogICAgfQp9CgppbmNsdWRlICdpbmNsdWRlL3V0aWxzLnBocCc7Cgokc3ViZGlyX3BhdGggPSAnJzsKCmlmIChpc3NldCgkX0dFVFsnZmxkciddKSAmJiAhZW1wdHkoJF9HRVRbJ2ZsZHInXSkpIHsKICAgICRzdWJkaXJfcGF0aCA9IHJhd3VybGRlY29kZSh0cmltKHN0cmlwX3RhZ3MoJF9HRVRbJ2ZsZHInXSksICIvIikpOwp9IGVsc2VpZiAoaXNzZXQoJF9TRVNTSU9OWydSRiddWydmbGRyJ10pICYmICFlbXB0eSgkX1NFU1NJT05bJ1JGJ11bJ2ZsZHInXSkpIHsKICAgICRzdWJkaXJfcGF0aCA9IHJhd3VybGRlY29kZSh0cmltKHN0cmlwX3RhZ3MoJF9TRVNTSU9OWydSRiddWydmbGRyJ10pLCAiLyIpKTsKfQoKaWYgKGNoZWNrUmVsYXRpdmVQYXRoKCRzdWJkaXJfcGF0aCkpIHsKICAgICRzdWJkaXIgPSBzdHJpcF90YWdzKCRzdWJkaXJfcGF0aCkgLiAiLyI7CiAgICAkX1NFU1NJT05bJ1JGJ11bJ2ZsZHInXSA9ICRzdWJkaXJfcGF0aDsKICAgICRfU0VTU0lPTlsnUkYnXVsiZmlsdGVyIl0gPSAnJzsKfSBlbHNlIHsKICAgICRzdWJkaXIgPSAnJzsKfQoKaWYgKCRzdWJkaXIgPT0gIiIpIHsKICAgIGlmICghZW1wdHkoJF9DT09LSUVbJ2xhc3RfcG9zaXRpb24nXSkgJiYgc3RycG9zKCRfQ09PS0lFWydsYXN0X3Bvc2l0aW9uJ10sICcuJykgPT09IEZBTFNFKSB7CiAgICAgICAgJHN1YmRpciA9IHRyaW0oJF9DT09LSUVbJ2xhc3RfcG9zaXRpb24nXSk7CiAgICB9Cn0KLy9yZW1lbWJlciBsYXN0IHBvc2l0aW9uCnNldGNvb2tpZSgnbGFzdF9wb3NpdGlvbicsICRzdWJkaXIsIHRpbWUoKSArICg4NjQwMCAqIDcpKTsKCmlmICgkc3ViZGlyID09ICIvIikgeyAkc3ViZGlyID0gIiI7IH0KCi8vIElmIGhpZGRlbiBmb2xkZXJzIGFyZSBzcGVjaWZpZWQKaWYgKGNvdW50KCRjb25maWdbJ2hpZGRlbl9mb2xkZXJzJ10pKSB7CiAgICAvLyBJZiBoaWRkZW4gZm9sZGVyIGFwcGVhcnMgaW4gdGhlIHBhdGggc3BlY2lmaWVkIGluIFVSTCBwYXJhbWV0ZXIgImZsZHIiCiAgICAkZGlycyA9IGV4cGxvZGUoJy8nLCAkc3ViZGlyKTsKICAgIGZvcmVhY2ggKCRkaXJzIGFzICRkaXIpIHsKICAgICAgICBpZiAoJGRpciAhPT0gJycgJiYgaW5fYXJyYXkoJGRpciwgJGNvbmZpZ1snaGlkZGVuX2ZvbGRlcnMnXSkpIHsKICAgICAgICAgICAgLy8gSWdub3JlIHRoZSBwYXRoCiAgICAgICAgICAgICRzdWJkaXIgPSAiIjsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQp9CgppZiAoJGNvbmZpZ1snc2hvd190b3RhbF9zaXplJ10pIHsKICAgIGxpc3QoJHNpemVDdXJyZW50Rm9sZGVyLCAkZmlsZUN1cnJlbnROdW0sICRmb2xkZXJzQ3VycmVudENvdW50KSA9IGZvbGRlcl9pbmZvKCRjb25maWdbJ2N1cnJlbnRfcGF0aCddLCBmYWxzZSk7Cn0KCi8qKioKICogU1VCLURJUiBDT0RFCiAqKiovCmlmICghaXNzZXQoJF9TRVNTSU9OWydSRiddWyJzdWJmb2xkZXIiXSkpIHsKICAgICRfU0VTU0lPTlsnUkYnXVsic3ViZm9sZGVyIl0gPSAnJzsKfQokcmZtX3N1YmZvbGRlciA9ICcnOwoKaWYgKCFlbXB0eSgkX1NFU1NJT05bJ1JGJ11bInN1YmZvbGRlciJdKQogICAgJiYgc3RycG9zKCRfU0VTU0lPTlsnUkYnXVsic3ViZm9sZGVyIl0sICIvIikgIT09IDAKICAgICYmIHN0cnBvcygkX1NFU1NJT05bJ1JGJ11bInN1YmZvbGRlciJdLCAnLicpID09PSBGQUxTRQopIHsKICAgICRyZm1fc3ViZm9sZGVyID0gJF9TRVNTSU9OWydSRiddWydzdWJmb2xkZXInXTsKfQoKaWYgKCRyZm1fc3ViZm9sZGVyICE9ICIiICYmICRyZm1fc3ViZm9sZGVyW3N0cmxlbigkcmZtX3N1YmZvbGRlcikgLSAxXSAhPSAiLyIpIHsKICAgICRyZm1fc3ViZm9sZGVyIC49ICIvIjsKfQoKJGZ0cCA9IGZ0cF9jb24oJGNvbmZpZyk7CgppZiAoKCRmdHAgJiYgISRmdHAtPmlzRGlyKCRjb25maWdbJ2Z0cF9iYXNlX2ZvbGRlciddIC4gJGNvbmZpZ1sndXBsb2FkX2RpciddIC4gJHJmbV9zdWJmb2xkZXIgLiAkc3ViZGlyKSkgfHwgKCEkZnRwICYmICFmaWxlX2V4aXN0cygkY29uZmlnWydjdXJyZW50X3BhdGgnXSAuICRyZm1fc3ViZm9sZGVyIC4gJHN1YmRpcikpKSB7CiAgICAkc3ViZGlyID0gJyc7CiAgICAkcmZtX3N1YmZvbGRlciA9ICIiOwp9CgoKJGN1cl9kaXIJCT0gJGNvbmZpZ1sndXBsb2FkX2RpciddLiRyZm1fc3ViZm9sZGVyLiRzdWJkaXI7CiRjdXJfZGlyX3RodW1iCT0gJGNvbmZpZ1sndGh1bWJzX3VwbG9hZF9kaXInXS4kcmZtX3N1YmZvbGRlci4kc3ViZGlyOwokdGh1bWJzX3BhdGgJPSAkY29uZmlnWyd0aHVtYnNfYmFzZV9wYXRoJ10uJHJmbV9zdWJmb2xkZXIuJHN1YmRpcjsKJHBhcmVudAkJCT0gJHJmbV9zdWJmb2xkZXIuJHN1YmRpcjsKCmlmICgkZnRwKSB7CiAgICAkY3VyX2RpciA9ICRjb25maWdbJ2Z0cF9iYXNlX2ZvbGRlciddIC4gJGN1cl9kaXI7CiAgICAkY3VyX2Rpcl90aHVtYiA9ICRjb25maWdbJ2Z0cF9iYXNlX2ZvbGRlciddIC4gJGN1cl9kaXJfdGh1bWI7CiAgICAkdGh1bWJzX3BhdGggPSBzdHJfcmVwbGFjZShhcnJheSgnLy4uJywgJy4uJyksICcnLCAkY3VyX2Rpcl90aHVtYik7CiAgICAkcGFyZW50ID0gJGNvbmZpZ1snZnRwX2Jhc2VfZm9sZGVyJ10gLiAkcGFyZW50Owp9CgppZiAoISRmdHApIHsKICAgICRjeWNsZSA9IFRSVUU7CiAgICAkbWF4X2N5Y2xlcyA9IDUwOwogICAgJGkgPSAwOwogICAgd2hpbGUgKCRjeWNsZSAmJiAkaSA8ICRtYXhfY3ljbGVzKSB7CiAgICAgICAgJGkrKzsKCiAgICAgICAgaWYgKCRwYXJlbnQgPT0gIi4vIikgewogICAgICAgICAgICAkcGFyZW50ID0gIiI7CiAgICAgICAgfQoKICAgICAgICBpZiAoZmlsZV9leGlzdHMoJGNvbmZpZ1snY3VycmVudF9wYXRoJ10gLiAkcGFyZW50IC4gImNvbmZpZy5waHAiKSkgewogICAgICAgICAgICAkY29uZmlnVGVtcCA9IGluY2x1ZGUgJGNvbmZpZ1snY3VycmVudF9wYXRoJ10gLiAkcGFyZW50IC4gJ2NvbmZpZy5waHAnOwogICAgICAgICAgICAkY29uZmlnID0gYXJyYXlfbWVyZ2UoJGNvbmZpZywgJGNvbmZpZ1RlbXApOwogICAgICAgICAgICAkY3ljbGUgPSBGQUxTRTsKICAgICAgICB9CgogICAgICAgIGlmICgkcGFyZW50ID09ICIiKSB7CiAgICAgICAgICAgICRjeWNsZSA9IEZBTFNFOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRwYXJlbnQgPSBmaXhfZGlybmFtZSgkcGFyZW50KSAuICIvIjsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCFpc19kaXIoJHRodW1ic19wYXRoKSkgewogICAgICAgIGNyZWF0ZV9mb2xkZXIoRkFMU0UsICR0aHVtYnNfcGF0aCwgJGZ0cCwgJGNvbmZpZyk7CiAgICB9Cn0KCiRtdWx0aXBsZSA9IG51bGw7CgppZiAoaXNzZXQoJF9HRVRbJ211bHRpcGxlJ10pKSB7CiAgICBpZiAoJF9HRVRbJ211bHRpcGxlJ10gPT0gMSkgewogICAgICAgICRtdWx0aXBsZSA9IDE7CiAgICAgICAgJGNvbmZpZ1snbXVsdGlwbGVfc2VsZWN0aW9uJ10gPSB0cnVlOwogICAgICAgICRjb25maWdbJ211bHRpcGxlX3NlbGVjdGlvbl9hY3Rpb25fYnV0dG9uJ10gPSB0cnVlOwogICAgfSBlbHNlaWYgKCRfR0VUWydtdWx0aXBsZSddID09IDApIHsKICAgICAgICAkbXVsdGlwbGUgPSAwOwogICAgICAgICRjb25maWdbJ211bHRpcGxlX3NlbGVjdGlvbiddID0gZmFsc2U7CiAgICAgICAgJGNvbmZpZ1snbXVsdGlwbGVfc2VsZWN0aW9uX2FjdGlvbl9idXR0b24nXSA9IGZhbHNlOwogICAgfQp9CgppZiAoaXNzZXQoJF9HRVRbJ2NhbGxiYWNrJ10pKSB7CiAgICAkY2FsbGJhY2sgPSBzdHJpcF90YWdzKCRfR0VUWydjYWxsYmFjayddKTsKICAgICRfU0VTU0lPTlsnUkYnXVsiY2FsbGJhY2siXSA9ICRjYWxsYmFjazsKfSBlbHNlIHsKICAgICRjYWxsYmFjayA9IDA7CgogICAgaWYgKGlzc2V0KCRfU0VTU0lPTlsnUkYnXVsiY2FsbGJhY2siXSkpIHsKICAgICAgICAkY2FsbGJhY2sgPSAkX1NFU1NJT05bJ1JGJ11bImNhbGxiYWNrIl07CiAgICB9Cn0KCiRwb3B1cCA9IGlzc2V0KCRfR0VUWydwb3B1cCddKSA/IHN0cmlwX3RhZ3MoJF9HRVRbJ3BvcHVwJ10pIDogMDsKLy9TYW5pdGl6ZSBwb3B1cAokcG9wdXAgPSAhISRwb3B1cDsKCiRjcm9zc2RvbWFpbiA9IGlzc2V0KCRfR0VUWydjcm9zc2RvbWFpbiddKSA/IHN0cmlwX3RhZ3MoJF9HRVRbJ2Nyb3NzZG9tYWluJ10pIDogMDsKLy9TYW5pdGl6ZSBjcm9zc2RvbWFpbgokY3Jvc3Nkb21haW49ISEkY3Jvc3Nkb21haW47CgovL3ZpZXcgdHlwZQppZighaXNzZXQoJF9TRVNTSU9OWydSRiddWyJ2aWV3X3R5cGUiXSkpCnsKICAgICR2aWV3ID0gJGNvbmZpZ1snZGVmYXVsdF92aWV3J107CiAgICAkX1NFU1NJT05bJ1JGJ11bInZpZXdfdHlwZSJdID0gJHZpZXc7Cn0KCmlmIChpc3NldCgkX0dFVFsndmlldyddKSkKewogICAgJHZpZXcgPSBmaXhfZ2V0X3BhcmFtcygkX0dFVFsndmlldyddKTsKICAgICRfU0VTU0lPTlsnUkYnXVsidmlld190eXBlIl0gPSAkdmlldzsKfQoKJHZpZXcgPSAkX1NFU1NJT05bJ1JGJ11bInZpZXdfdHlwZSJdOwoKLy9maWx0ZXIKJGZpbHRlciA9ICIiOwppZihpc3NldCgkX1NFU1NJT05bJ1JGJ11bImZpbHRlciJdKSkKewogICAgJGZpbHRlciA9ICRfU0VTU0lPTlsnUkYnXVsiZmlsdGVyIl07Cn0KCmlmKGlzc2V0KCRfR0VUWyJmaWx0ZXIiXSkpCnsKICAgICRmaWx0ZXIgPSBmaXhfZ2V0X3BhcmFtcygkX0dFVFsiZmlsdGVyIl0pOwp9CgppZiAoIWlzc2V0KCRfU0VTU0lPTlsnUkYnXVsnc29ydF9ieSddKSkKewogICAgJF9TRVNTSU9OWydSRiddWydzb3J0X2J5J10gPSAnbmFtZSc7Cn0KCmlmIChpc3NldCgkX0dFVFsic29ydF9ieSJdKSkgewogICAgJHNvcnRfYnkgPSAkX1NFU1NJT05bJ1JGJ11bJ3NvcnRfYnknXSA9IGZpeF9nZXRfcGFyYW1zKCRfR0VUWyJzb3J0X2J5Il0pOwp9IGVsc2UgewogICAgJHNvcnRfYnkgPSAkX1NFU1NJT05bJ1JGJ11bJ3NvcnRfYnknXTsKfQoKCmlmICghaXNzZXQoJF9TRVNTSU9OWydSRiddWydkZXNjZW5kaW5nJ10pKSB7CiAgICAkX1NFU1NJT05bJ1JGJ11bJ2Rlc2NlbmRpbmcnXSA9IFRSVUU7Cn0KCmlmIChpc3NldCgkX0dFVFsiZGVzY2VuZGluZyJdKSkgewogICAgJGRlc2NlbmRpbmcgPSAkX1NFU1NJT05bJ1JGJ11bJ2Rlc2NlbmRpbmcnXSA9IGZpeF9nZXRfcGFyYW1zKCRfR0VUWyJkZXNjZW5kaW5nIl0pID09IDE7Cn0gZWxzZSB7CiAgICAkZGVzY2VuZGluZyA9ICRfU0VTU0lPTlsnUkYnXVsnZGVzY2VuZGluZyddOwp9CgokYm9vbGFycmF5ID0gYXJyYXkoZmFsc2UgPT4gJ2ZhbHNlJywgdHJ1ZSA9PiAndHJ1ZScpOwoKJHJldHVybl9yZWxhdGl2ZV91cmwgPSBpc3NldCgkX0dFVFsncmVsYXRpdmVfdXJsJ10pICYmICRfR0VUWydyZWxhdGl2ZV91cmwnXSA9PSAiMSIgPyB0cnVlIDogZmFsc2U7CgppZiAoIWlzc2V0KCRfR0VUWyd0eXBlJ10pKSB7CiAgICAkX0dFVFsndHlwZSddID0gMDsKfQoKJGV4dGVuc2lvbnMgPSBudWxsOwppZiAoaXNzZXQoJF9HRVRbJ2V4dGVuc2lvbnMnXSkpIHsKICAgICRleHRlbnNpb25zID0ganNvbl9kZWNvZGUodXJsZGVjb2RlKCRfR0VUWydleHRlbnNpb25zJ10pKTsKICAgICRleHRfdG1wID0gYXJyYXkoKTsKICAgIGZvcmVhY2ggKCRleHRlbnNpb25zIGFzICRleHRlbnNpb24pIHsKICAgICAgICAkZXh0ZW5zaW9uID0gZml4X3N0cnRvbG93ZXIoJGV4dGVuc2lvbik7CiAgICAgICAgaWYgKGNoZWNrX2ZpbGVfZXh0ZW5zaW9uKCRleHRlbnNpb24sICRjb25maWcpKSB7CiAgICAgICAgICAgICRleHRfdG1wW10gPSAkZXh0ZW5zaW9uOwogICAgICAgIH0KICAgIH0KICAgIGlmICgkZXh0ZW5zaW9ucykgewogICAgICAgICRleHQgPSAkZXh0X3RtcDsKICAgICAgICAkY29uZmlnWydleHQnXSA9ICRleHRfdG1wOwogICAgICAgICRjb25maWdbJ3Nob3dfZmlsdGVyX2J1dHRvbnMnXSA9IGZhbHNlOwogICAgfQp9CgppZiAoaXNzZXQoJF9HRVRbJ2VkaXRvciddKSkgewogICAgJGVkaXRvciA9IHN0cmlwX3RhZ3MoJF9HRVRbJ2VkaXRvciddKTsKfSBlbHNlIHsKICAgICRlZGl0b3IgPSAkX0dFVFsndHlwZSddID09IDAgPyBudWxsIDogJ3RpbnltY2UnOwp9CgokZmllbGRfaWQgPSBpc3NldCgkX0dFVFsnZmllbGRfaWQnXSkgPyBmaXhfZ2V0X3BhcmFtcygkX0dFVFsnZmllbGRfaWQnXSkgOiBudWxsOwokdHlwZV9wYXJhbSA9IGZpeF9nZXRfcGFyYW1zKCRfR0VUWyd0eXBlJ10pOwokYXBwbHkgPSBudWxsOwoKaWYgKCRtdWx0aXBsZSkgewogICAgJGFwcGx5ID0gJ2FwcGx5X211bHRpcGxlJzsKfQoKaWYgKCR0eXBlX3BhcmFtID09IDEpIHsKICAgICRhcHBseV90eXBlID0gJ2FwcGx5X2ltZyc7Cn0gZWxzZWlmICgkdHlwZV9wYXJhbSA9PSAyKSB7CiAgICAkYXBwbHlfdHlwZSA9ICdhcHBseV9saW5rJzsKfSBlbHNlaWYgKCR0eXBlX3BhcmFtID09IDAgJiYgISRmaWVsZF9pZCkgewogICAgJGFwcGx5X3R5cGUgPSAnYXBwbHlfbm9uZSc7Cn0gZWxzZWlmICgkdHlwZV9wYXJhbSA9PSAzKSB7CiAgICAkYXBwbHlfdHlwZSA9ICdhcHBseV92aWRlbyc7Cn0gZWxzZSB7CiAgICAkYXBwbHlfdHlwZSA9ICdhcHBseSc7Cn0KCmlmKCEkYXBwbHkpewogICAgJGFwcGx5ID0gJGFwcGx5X3R5cGU7Cn0KCiRnZXRfcGFyYW1zID0gYXJyYXkoCiAgICAnZWRpdG9yJyAgICAgICAgPT4gJGVkaXRvciwKICAgICd0eXBlJyAgICAgICAgICA9PiAkdHlwZV9wYXJhbSwKICAgICdsYW5nJyAgICAgICAgICA9PiAkbGFuZywKICAgICdwb3B1cCcgICAgICAgICA9PiAkcG9wdXAsCiAgICAnY3Jvc3Nkb21haW4nICAgPT4gJGNyb3NzZG9tYWluLAogICAgJ2V4dGVuc2lvbnMnICAgID0+ICgkZXh0ZW5zaW9ucykgPyB1cmxlbmNvZGUoanNvbl9lbmNvZGUoJGV4dGVuc2lvbnMpKSA6IG51bGwgLAogICAgJ2ZpZWxkX2lkJyAgICAgID0+ICRmaWVsZF9pZCwKICAgICdtdWx0aXBsZScgICAgICA9PiAkbXVsdGlwbGUsCiAgICAncmVsYXRpdmVfdXJsJyAgPT4gJHJldHVybl9yZWxhdGl2ZV91cmwsCiAgICAnYWtleScgICAgICAgICAgPT4gKGlzc2V0KCRfR0VUWydha2V5J10pICYmICRfR0VUWydha2V5J10gIT0gJycgPyAkX0dFVFsnYWtleSddIDogJ2tleScpCik7CmlmIChpc3NldCgkX0dFVFsnQ0tFZGl0b3JGdW5jTnVtJ10pKSB7CiAgICAkZ2V0X3BhcmFtc1snQ0tFZGl0b3JGdW5jTnVtJ10gPSAkX0dFVFsnQ0tFZGl0b3JGdW5jTnVtJ107CiAgICAkZ2V0X3BhcmFtc1snQ0tFZGl0b3InXSA9IChpc3NldCgkX0dFVFsnQ0tFZGl0b3InXSkgPyAkX0dFVFsnQ0tFZGl0b3InXSA6ICcnKTsKfQokZ2V0X3BhcmFtc1snZmxkciddID0nJzsKCiRnZXRfcGFyYW1zID0gaHR0cF9idWlsZF9xdWVyeSgkZ2V0X3BhcmFtcyk7Cj8+CjwhRE9DVFlQRSBodG1sPgo8aHRtbD4KICAgIDxoZWFkPgogICAgICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICAgICAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iWC1VQS1Db21wYXRpYmxlIiBjb250ZW50PSJJRT1lZGdlLGNocm9tZT0xIi8+CiAgICAgICAgPG1ldGEgbmFtZT0icm9ib3RzIiBjb250ZW50PSJub2luZGV4LG5vZm9sbG93Ij4KICAgICAgICA8dGl0bGU+UmVzcG9uc2l2ZSBGaWxlTWFuYWdlcjwvdGl0bGU+CiAgICAgICAgPGxpbmsgcmVsPSJzaG9ydGN1dCBpY29uIiBocmVmPSJpbWcvaWNvL2Zhdmljb24uaWNvIj4KICAgICAgICA8IS0tIENTUyB0byBzdHlsZSB0aGUgZmlsZSBpbnB1dCBmaWVsZCBhcyBidXR0b24gYW5kIGFkanVzdCB0aGUgQm9vdHN0cmFwIHByb2dyZXNzIGJhcnMgLS0+CiAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJjc3MvanF1ZXJ5LmZpbGV1cGxvYWQuY3NzIj4KICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9ImNzcy9qcXVlcnkuZmlsZXVwbG9hZC11aS5jc3MiPgogICAgICAgIDwhLS0gQ1NTIGFkanVzdG1lbnRzIGZvciBicm93c2VycyB3aXRoIEphdmFTY3JpcHQgZGlzYWJsZWQgLS0+CiAgICAgICAgPG5vc2NyaXB0PjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iY3NzL2pxdWVyeS5maWxldXBsb2FkLW5vc2NyaXB0LmNzcyI+PC9ub3NjcmlwdD4KICAgICAgICA8bm9zY3JpcHQ+PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJjc3MvanF1ZXJ5LmZpbGV1cGxvYWQtdWktbm9zY3JpcHQuY3NzIj48L25vc2NyaXB0PgogICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvanBsYXllci8yLjcuMS9za2luL2JsdWUubW9uZGF5L2pwbGF5ZXIuYmx1ZS5tb25kYXkubWluLmNzcyIgLz4KICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vdWljZG4udG9hc3QuY29tL3R1aS1pbWFnZS1lZGl0b3IvbGF0ZXN0L3R1aS1pbWFnZS1lZGl0b3IuY3NzIj4KICAgICAgICA8bGluayBocmVmPSJjc3Mvc3R5bGUuY3NzP3Y9PD9waHAgZWNobyAkdmVyc2lvbjsgPz4iIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+CiAgICAgICAgPCEtLVtpZiBsdCBJRSA4XT4KICAgICAgICA8c3R5bGU+CiAgICAgICAgICAgIC5pbWctY29udGFpbmVyIHNwYW4sIC5pbWctY29udGFpbmVyLW1pbmkgc3BhbiB7CiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgICAgIH0KICAgICAgICA8L3N0eWxlPgogICAgICAgIDwhW2VuZGlmXS0tPgoKICAgICAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jb2RlLmpxdWVyeS5jb20vanF1ZXJ5LTEuMTIuNC5taW4uanMiIGludGVncml0eT0ic2hhMjU2LVpvc0ViUkxiTlF6THBuS0lrRWRyUHY3bE95OUMyN2hIUStYcDhhNE14QVE9IiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIj48L3NjcmlwdD4KICAgICAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jb2RlLmpxdWVyeS5jb20vdWkvMS4xMi4xL2pxdWVyeS11aS5taW4uanMiIGludGVncml0eT0ic2hhMjU2LVZhelA5N1pDd3Rla0FzdmdQQlNVd1BGS2Ryd0QzdW5VZlNHVllyYWhVcVU9IiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIj48L3NjcmlwdD4KICAgICAgICA8c2NyaXB0IHNyYz0ianMvcGx1Z2lucy5qcz92PTw/cGhwIGVjaG8gJHZlcnNpb247ID8+Ij48L3NjcmlwdD4KICAgICAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvanBsYXllci8yLjkuMi9qcGxheWVyL2pxdWVyeS5qcGxheWVyLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICAgICAgPGxpbmsgdHlwZT0idGV4dC9jc3MiIGhyZWY9Imh0dHBzOi8vdWljZG4udG9hc3QuY29tL3R1aS1jb2xvci1waWNrZXIvdjIuMi4wL3R1aS1jb2xvci1waWNrZXIuY3NzIiByZWw9InN0eWxlc2hlZXQiPgogICAgICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2ZhYnJpYy5qcy8xLjYuNy9mYWJyaWMuanMiPjwvc2NyaXB0PgogICAgICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vdWljZG4udG9hc3QuY29tL3R1aS5jb2RlLXNuaXBwZXQvdjEuNS4wL3R1aS1jb2RlLXNuaXBwZXQubWluLmpzIj48L3NjcmlwdD4KICAgICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9GaWxlU2F2ZXIuanMvMS4zLjMvRmlsZVNhdmVyLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly91aWNkbi50b2FzdC5jb20vdHVpLWNvbG9yLXBpY2tlci92Mi4yLjAvdHVpLWNvbG9yLXBpY2tlci5qcyI+PC9zY3JpcHQ+CiAgICAgICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vdWljZG4udG9hc3QuY29tL3R1aS1pbWFnZS1lZGl0b3IvbGF0ZXN0L3R1aS1pbWFnZS1lZGl0b3IuanMiPjwvc2NyaXB0PgogICAgICAgIDxzY3JpcHQgc3JjPSJqcy9tb2Rlcm5penIuY3VzdG9tLmpzIj48L3NjcmlwdD4KCiAgICAgICAgPCEtLSBMZSBIVE1MNSBzaGltLCBmb3IgSUU2LTggc3VwcG9ydCBvZiBIVE1MNSBlbGVtZW50cyAtLT4KICAgICAgICA8IS0tW2lmIGx0IElFIDldPgogICAgICAgIDxzY3JpcHQgc3JjPSIvL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9odG1sNXNoaXYvMy42LjIvaHRtbDVzaGl2LmpzIj48L3NjcmlwdD4KICAgICAgICA8IVtlbmRpZl0tLT4KCiAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgICAgICB2YXIgZXh0X2ltZz1uZXcgQXJyYXkoJzw/cGhwIGVjaG8gaW1wbG9kZSgiJywnIiwgJGNvbmZpZ1snZXh0X2ltZyddKT8+Jyk7CiAgICAgICAgICAgIHZhciBpbWFnZV9lZGl0b3I9IDw/cGhwIGVjaG8gJGNvbmZpZ1sndHVpX2FjdGl2ZSddPyJ0cnVlIjoiZmFsc2UiOz8+OwogICAgICAgIDwvc2NyaXB0PgoKICAgICAgICAKICAgICAgICA8c2NyaXB0IHNyYz0ianMvaW5jbHVkZS5qcz92PTw/cGhwIGVjaG8gJHZlcnNpb247ID8+Ij48L3NjcmlwdD4KPC9oZWFkPgo8Ym9keT4KICAgIDwhLS0gVGhlIFRlbXBsYXRlcyBwbHVnaW4gaXMgaW5jbHVkZWQgdG8gcmVuZGVyIHRoZSB1cGxvYWQvZG93bmxvYWQgbGlzdGluZ3MgLS0+CiAgICA8c2NyaXB0IHNyYz0iLy9ibHVlaW1wLmdpdGh1Yi5pby9KYXZhU2NyaXB0LVRlbXBsYXRlcy9qcy90bXBsLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRoZSBMb2FkIEltYWdlIHBsdWdpbiBpcyBpbmNsdWRlZCBmb3IgdGhlIHByZXZpZXcgaW1hZ2VzIGFuZCBpbWFnZSByZXNpemluZyBmdW5jdGlvbmFsaXR5IC0tPgogICAgPHNjcmlwdCBzcmM9Ii8vYmx1ZWltcC5naXRodWIuaW8vSmF2YVNjcmlwdC1Mb2FkLUltYWdlL2pzL2xvYWQtaW1hZ2UuYWxsLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRoZSBDYW52YXMgdG8gQmxvYiBwbHVnaW4gaXMgaW5jbHVkZWQgZm9yIGltYWdlIHJlc2l6aW5nIGZ1bmN0aW9uYWxpdHkgLS0+CiAgICA8c2NyaXB0IHNyYz0iLy9ibHVlaW1wLmdpdGh1Yi5pby9KYXZhU2NyaXB0LUNhbnZhcy10by1CbG9iL2pzL2NhbnZhcy10by1ibG9iLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8IS0tIFRoZSBJZnJhbWUgVHJhbnNwb3J0IGlzIHJlcXVpcmVkIGZvciBicm93c2VycyB3aXRob3V0IHN1cHBvcnQgZm9yIFhIUiBmaWxlIHVwbG9hZHMgLS0+CiAgICA8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LmlmcmFtZS10cmFuc3BvcnQuanMiPjwvc2NyaXB0PgogICAgPCEtLSBUaGUgYmFzaWMgRmlsZSBVcGxvYWQgcGx1Z2luIC0tPgogICAgPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS5maWxldXBsb2FkLmpzIj48L3NjcmlwdD4KICAgIDwhLS0gVGhlIEZpbGUgVXBsb2FkIHByb2Nlc3NpbmcgcGx1Z2luIC0tPgogICAgPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS5maWxldXBsb2FkLXByb2Nlc3MuanMiPjwvc2NyaXB0PgogICAgPCEtLSBUaGUgRmlsZSBVcGxvYWQgaW1hZ2UgcHJldmlldyAmIHJlc2l6ZSBwbHVnaW4gLS0+CiAgICA8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LmZpbGV1cGxvYWQtaW1hZ2UuanMiPjwvc2NyaXB0PgogICAgPCEtLSBUaGUgRmlsZSBVcGxvYWQgYXVkaW8gcHJldmlldyBwbHVnaW4gLS0+CiAgICA8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LmZpbGV1cGxvYWQtYXVkaW8uanMiPjwvc2NyaXB0PgogICAgPCEtLSBUaGUgRmlsZSBVcGxvYWQgdmlkZW8gcHJldmlldyBwbHVnaW4gLS0+CiAgICA8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LmZpbGV1cGxvYWQtdmlkZW8uanMiPjwvc2NyaXB0PgogICAgPCEtLSBUaGUgRmlsZSBVcGxvYWQgdmFsaWRhdGlvbiBwbHVnaW4gLS0+CiAgICA8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LmZpbGV1cGxvYWQtdmFsaWRhdGUuanMiPjwvc2NyaXB0PgogICAgPCEtLSBUaGUgRmlsZSBVcGxvYWQgdXNlciBpbnRlcmZhY2UgcGx1Z2luIC0tPgogICAgPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS5maWxldXBsb2FkLXVpLmpzIj48L3NjcmlwdD4KCiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iZnRwIiB2YWx1ZT0iPD9waHAgZWNobyAhISRmdHA7ID8+IiAvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InBvcHVwIiB2YWx1ZT0iPD9waHAgZWNobyAkcG9wdXA7Pz4iIC8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iY2FsbGJhY2siIHZhbHVlPSI8P3BocCBlY2hvICRjYWxsYmFjazsgPz4iIC8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iY3Jvc3Nkb21haW4iIHZhbHVlPSI8P3BocCBlY2hvICRjcm9zc2RvbWFpbjs/PiIgLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJlZGl0b3IiIHZhbHVlPSI8P3BocCBlY2hvICRlZGl0b3I7Pz4iIC8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0idmlldyIgdmFsdWU9Ijw/cGhwIGVjaG8gJHZpZXc7Pz4iIC8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ic3ViZGlyIiB2YWx1ZT0iPD9waHAgZWNobyAkc3ViZGlyOz8+IiAvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImZpZWxkX2lkIiB2YWx1ZT0iPD9waHAgZWNobyAkZmllbGRfaWQ7Pz4iIC8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ibXVsdGlwbGUiIHZhbHVlPSI8P3BocCBlY2hvICRtdWx0aXBsZTs/PiIgLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJ0eXBlX3BhcmFtIiB2YWx1ZT0iPD9waHAgZWNobyAkdHlwZV9wYXJhbTs/PiIgLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJ1cGxvYWRfZGlyIiB2YWx1ZT0iPD9waHAgZWNobyAkY29uZmlnWyd1cGxvYWRfZGlyJ107Pz4iIC8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iY3VyX2RpciIgdmFsdWU9Ijw/cGhwIGVjaG8gJGN1cl9kaXI7Pz4iIC8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iY3VyX2Rpcl90aHVtYiIgdmFsdWU9Ijw/cGhwIGVjaG8gJGN1cl9kaXJfdGh1bWI7Pz4iIC8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iaW5zZXJ0X2ZvbGRlcl9uYW1lIiB2YWx1ZT0iPD9waHAgZWNobyB0cmFucygnSW5zZXJ0X0ZvbGRlcl9OYW1lJyk7Pz4iIC8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0icmVuYW1lX2V4aXN0aW5nX2ZvbGRlciIgdmFsdWU9Ijw/cGhwIGVjaG8gdHJhbnMoJ1JlbmFtZV9leGlzdGluZ19mb2xkZXInKTs/PiIgLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJuZXdfZm9sZGVyIiB2YWx1ZT0iPD9waHAgZWNobyB0cmFucygnTmV3X0ZvbGRlcicpOz8+IiAvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9Im9rIiB2YWx1ZT0iPD9waHAgZWNobyB0cmFucygnT0snKTs/PiIgLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJjYW5jZWwiIHZhbHVlPSI8P3BocCBlY2hvIHRyYW5zKCdDYW5jZWwnKTs/PiIgLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJyZW5hbWUiIHZhbHVlPSI8P3BocCBlY2hvIHRyYW5zKCdSZW5hbWUnKTs/PiIgLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJsYW5nX2R1cGxpY2F0ZSIgdmFsdWU9Ijw/cGhwIGVjaG8gdHJhbnMoJ0R1cGxpY2F0ZScpOz8+IiAvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImR1cGxpY2F0ZSIgdmFsdWU9Ijw/cGhwIGlmKCRjb25maWdbJ2R1cGxpY2F0ZV9maWxlcyddKSBlY2hvIDE7IGVsc2UgZWNobyAwOz8+IiAvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImJhc2VfdXJsIiB2YWx1ZT0iPD9waHAgZWNobyAkY29uZmlnWydiYXNlX3VybCddPz4iLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJmdHBfYmFzZV91cmwiIHZhbHVlPSI8P3BocCBlY2hvICRjb25maWdbJ2Z0cF9iYXNlX3VybCddPz4iLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJmbGRyX3ZhbHVlIiB2YWx1ZT0iPD9waHAgZWNobyAkc3ViZGlyOz8+Ii8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ic3ViX2ZvbGRlciIgdmFsdWU9Ijw/cGhwIGVjaG8gJHJmbV9zdWJmb2xkZXI7Pz4iLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJyZXR1cm5fcmVsYXRpdmVfdXJsIiB2YWx1ZT0iPD9waHAgZWNobyAkcmV0dXJuX3JlbGF0aXZlX3VybCA9PSB0cnVlID8gMSA6IDA7Pz4iLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJmaWxlX251bWJlcl9saW1pdF9qcyIgdmFsdWU9Ijw/cGhwIGVjaG8gJGNvbmZpZ1snZmlsZV9udW1iZXJfbGltaXRfanMnXTs/PiIgLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJzb3J0X2J5IiB2YWx1ZT0iPD9waHAgZWNobyAkc29ydF9ieTs/PiIgLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJkZXNjZW5kaW5nIiB2YWx1ZT0iPD9waHAgZWNobyAkZGVzY2VuZGluZz8xOjA7Pz4iIC8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iY3VycmVudF91cmwiIHZhbHVlPSI8P3BocCBlY2hvIHN0cl9yZXBsYWNlKGFycmF5KCcmZmlsdGVyPScuJGZpbHRlciwnJnNvcnRfYnk9Jy4kc29ydF9ieSwnJmRlc2NlbmRpbmc9Jy5pbnR2YWwoJGRlc2NlbmRpbmcpKSxhcnJheSgnJyksJGNvbmZpZ1snYmFzZV91cmwnXS5odG1sc3BlY2lhbGNoYXJzKCRfU0VSVkVSWydSRVFVRVNUX1VSSSddKSk7Pz4iIC8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ibGFuZ19zaG93X3VybCIgdmFsdWU9Ijw/cGhwIGVjaG8gdHJhbnMoJ1Nob3dfdXJsJyk7Pz4iIC8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iY29weV9jdXRfZmlsZXNfYWxsb3dlZCIgdmFsdWU9Ijw/cGhwIGlmKCRjb25maWdbJ2NvcHlfY3V0X2ZpbGVzJ10pIGVjaG8gMTsgZWxzZSBlY2hvIDA7Pz4iIC8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iY29weV9jdXRfZGlyc19hbGxvd2VkIiB2YWx1ZT0iPD9waHAgaWYoJGNvbmZpZ1snY29weV9jdXRfZGlycyddKSBlY2hvIDE7IGVsc2UgZWNobyAwOz8+IiAvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImNvcHlfY3V0X21heF9zaXplIiB2YWx1ZT0iPD9waHAgZWNobyAkY29uZmlnWydjb3B5X2N1dF9tYXhfc2l6ZSddOz8+IiAvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImNvcHlfY3V0X21heF9jb3VudCIgdmFsdWU9Ijw/cGhwIGVjaG8gJGNvbmZpZ1snY29weV9jdXRfbWF4X2NvdW50J107Pz4iIC8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ibGFuZ19jb3B5IiB2YWx1ZT0iPD9waHAgZWNobyB0cmFucygnQ29weScpOz8+IiAvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImxhbmdfY3V0IiB2YWx1ZT0iPD9waHAgZWNobyB0cmFucygnQ3V0Jyk7Pz4iIC8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ibGFuZ19wYXN0ZSIgdmFsdWU9Ijw/cGhwIGVjaG8gdHJhbnMoJ1Bhc3RlJyk7Pz4iIC8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ibGFuZ19wYXN0ZV9oZXJlIiB2YWx1ZT0iPD9waHAgZWNobyB0cmFucygnUGFzdGVfSGVyZScpOz8+IiAvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImxhbmdfcGFzdGVfY29uZmlybSIgdmFsdWU9Ijw/cGhwIGVjaG8gdHJhbnMoJ1Bhc3RlX0NvbmZpcm0nKTs/PiIgLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJsYW5nX2ZpbGVzIiB2YWx1ZT0iPD9waHAgZWNobyB0cmFucygnRmlsZXMnKTs/PiIgLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJsYW5nX2ZvbGRlcnMiIHZhbHVlPSI8P3BocCBlY2hvIHRyYW5zKCdGb2xkZXJzJyk7Pz4iIC8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ibGFuZ19maWxlc19vbl9jbGlwYm9hcmQiIHZhbHVlPSI8P3BocCBlY2hvIHRyYW5zKCdGaWxlc19PTl9DbGlwYm9hcmQnKTs/PiIgLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJjbGlwYm9hcmQiIHZhbHVlPSI8P3BocCBlY2hvICgoaXNzZXQoJF9TRVNTSU9OWydSRiddWydjbGlwYm9hcmQnXVsncGF0aCddKSAmJiB0cmltKCRfU0VTU0lPTlsnUkYnXVsnY2xpcGJvYXJkJ11bJ3BhdGgnXSkgIT0gbnVsbCkgPyAxIDogMCk7Pz4iIC8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ibGFuZ19jbGVhcl9jbGlwYm9hcmRfY29uZmlybSIgdmFsdWU9Ijw/cGhwIGVjaG8gdHJhbnMoJ0NsZWFyX0NsaXBib2FyZF9Db25maXJtJyk7Pz4iIC8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ibGFuZ19maWxlX3Blcm1pc3Npb24iIHZhbHVlPSI8P3BocCBlY2hvIHRyYW5zKCdGaWxlX1Blcm1pc3Npb24nKTs/PiIgLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJjaG1vZF9maWxlc19hbGxvd2VkIiB2YWx1ZT0iPD9waHAgaWYoJGNvbmZpZ1snY2htb2RfZmlsZXMnXSkgZWNobyAxOyBlbHNlIGVjaG8gMDs/PiIgLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJjaG1vZF9kaXJzX2FsbG93ZWQiIHZhbHVlPSI8P3BocCBpZigkY29uZmlnWydjaG1vZF9kaXJzJ10pIGVjaG8gMTsgZWxzZSBlY2hvIDA7Pz4iIC8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ibGFuZ19sYW5nX2NoYW5nZSIgdmFsdWU9Ijw/cGhwIGVjaG8gdHJhbnMoJ0xhbmdfQ2hhbmdlJyk7Pz4iIC8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iZWRpdF90ZXh0X2ZpbGVzX2FsbG93ZWQiIHZhbHVlPSI8P3BocCBpZigkY29uZmlnWydlZGl0X3RleHRfZmlsZXMnXSkgZWNobyAxOyBlbHNlIGVjaG8gMDs/PiIgLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJsYW5nX2VkaXRfZmlsZSIgdmFsdWU9Ijw/cGhwIGVjaG8gdHJhbnMoJ0VkaXRfRmlsZScpOz8+IiAvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImxhbmdfbmV3X2ZpbGUiIHZhbHVlPSI8P3BocCBlY2hvIHRyYW5zKCdOZXdfRmlsZScpOz8+IiAvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImxhbmdfZmlsZW5hbWUiIHZhbHVlPSI8P3BocCBlY2hvIHRyYW5zKCdGaWxlbmFtZScpOz8+IiAvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImxhbmdfZmlsZV9pbmZvIiB2YWx1ZT0iPD9waHAgZWNobyBmaXhfc3RydG91cHBlcih0cmFucygnRmlsZV9pbmZvJykpOz8+IiAvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImxhbmdfZWRpdF9pbWFnZSIgdmFsdWU9Ijw/cGhwIGVjaG8gdHJhbnMoJ0VkaXRfaW1hZ2UnKTs/PiIgLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJsYW5nX2Vycm9yX3VwbG9hZCIgdmFsdWU9Ijw/cGhwIGVjaG8gdHJhbnMoJ0Vycm9yX1VwbG9hZCcpOz8+IiAvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9Imxhbmdfc2VsZWN0IiB2YWx1ZT0iPD9waHAgZWNobyB0cmFucygnU2VsZWN0Jyk7Pz4iIC8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ibGFuZ19leHRyYWN0IiB2YWx1ZT0iPD9waHAgZWNobyB0cmFucygnRXh0cmFjdCcpOz8+IiAvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImV4dHJhY3RfZmlsZXMiIHZhbHVlPSI8P3BocCBpZigkY29uZmlnWydleHRyYWN0X2ZpbGVzJ10pIGVjaG8gMTsgZWxzZSBlY2hvIDA7Pz4iIC8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0idHJhbnNsaXRlcmF0aW9uIiB2YWx1ZT0iPD9waHAgZWNobyAkY29uZmlnWyd0cmFuc2xpdGVyYXRpb24nXT8idHJ1ZSI6ImZhbHNlIjs/PiIgLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJjb252ZXJ0X3NwYWNlcyIgdmFsdWU9Ijw/cGhwIGVjaG8gJGNvbmZpZ1snY29udmVydF9zcGFjZXMnXT8idHJ1ZSI6ImZhbHNlIjs/PiIgLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJyZXBsYWNlX3dpdGgiIHZhbHVlPSI8P3BocCBlY2hvICRjb25maWdbJ2NvbnZlcnRfc3BhY2VzJ10/ICRjb25maWdbJ3JlcGxhY2Vfd2l0aCddIDogIiI7Pz4iIC8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ibG93ZXJfY2FzZSIgdmFsdWU9Ijw/cGhwIGVjaG8gJGNvbmZpZ1snbG93ZXJfY2FzZSddPyJ0cnVlIjoiZmFsc2UiOz8+IiAvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InNob3dfZm9sZGVyX3NpemUiIHZhbHVlPSI8P3BocCBlY2hvICRjb25maWdbJ3Nob3dfZm9sZGVyX3NpemUnXTs/PiIgLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJhZGRfdGltZV90b19pbWciIHZhbHVlPSI8P3BocCBlY2hvICRjb25maWdbJ2FkZF90aW1lX3RvX2ltZyddOz8+IiAvPgo8P3BocCBpZigkY29uZmlnWyd1cGxvYWRfZmlsZXMnXSl7ID8+CjwhLS0gdXBsb2FkZXIgZGl2IHN0YXJ0IC0tPgo8ZGl2IGNsYXNzPSJ1cGxvYWRlciI+CiAgICA8ZGl2IGNsYXNzPSJmbGV4Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0LWNlbnRlciI+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4taW52ZXJzZSBjbG9zZS11cGxvYWRlciI+PGkgY2xhc3M9Imljb24tYmFja3dhcmQgaWNvbi13aGl0ZSI+PC9pPiA8P3BocCBlY2hvIHRyYW5zKCdSZXR1cm5fRmlsZXNfTGlzdCcpPz48L2J1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzcGFjZTEwIj48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJ0YWJiYWJsZSB1cGxvYWQtdGFiYmFibGUiPiA8IS0tIE9ubHkgcmVxdWlyZWQgZm9yIGxlZnQvcmlnaHQgdGFicyAtLT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyMSI+CiAgICAgICAgICAgIDx1bCBjbGFzcz0ibmF2IG5hdi10YWJzIj4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iYWN0aXZlIj48YSBocmVmPSIjYmFzZVVwbG9hZCIgZGF0YS10b2dnbGU9InRhYiI+PD9waHAgZWNobyB0cmFucygnVXBsb2FkX2Jhc2UnKTs/PjwvYT48L2xpPgogICAgICAgICAgICAgICAgPD9waHAgaWYoJGNvbmZpZ1sndXJsX3VwbG9hZCddKXsgPz4KICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjdXJsVXBsb2FkIiBkYXRhLXRvZ2dsZT0idGFiIj48P3BocCBlY2hvIHRyYW5zKCdVcGxvYWRfdXJsJyk7Pz48L2E+PC9saT4KICAgICAgICAgICAgICAgIDw/cGhwIH0gPz4KICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGFiLWNvbnRlbnQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGFiLXBhbmUgYWN0aXZlIiBpZD0iYmFzZVVwbG9hZCI+CiAgICAgICAgICAgICAgICAgICAgPCEtLSBUaGUgZmlsZSB1cGxvYWQgZm9ybSB1c2VkIGFzIHRhcmdldCBmb3IgdGhlIGZpbGUgdXBsb2FkIHdpZGdldCAtLT4KICAgICAgICAgICAgICAgICAgICA8Zm9ybSBpZD0iZmlsZXVwbG9hZCIgYWN0aW9uPSIiIG1ldGhvZD0iUE9TVCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lcjIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmlsZXVwbG9hZC1idXR0b25iYXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFRoZSBnbG9iYWwgcHJvZ3Jlc3Mgc3RhdGUgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmlsZXVwbG9hZC1wcm9ncmVzcyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gVGhlIGdsb2JhbCBwcm9ncmVzcyBiYXIgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb2dyZXNzIHByb2dyZXNzLXN0cmlwZWQgYWN0aXZlIiByb2xlPSJwcm9ncmVzc2JhciIgYXJpYS12YWx1ZW1pbj0iMCIgYXJpYS12YWx1ZW1heD0iMTAwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJhciBiYXItc3VjY2VzcyIgc3R5bGU9IndpZHRoOjAlOyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFRoZSBleHRlbmRlZCBnbG9iYWwgcHJvZ3Jlc3Mgc3RhdGUgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb2dyZXNzLWV4dGVuZGVkIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0LWNlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gVGhlIGZpbGVpbnB1dC1idXR0b24gc3BhbiBpcyB1c2VkIHRvIHN0eWxlIHRoZSBmaWxlIGlucHV0IGZpZWxkIGFzIGJ1dHRvbiAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImJ0biBidG4tc3VjY2VzcyBmaWxlaW5wdXQtYnV0dG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXBsdXMiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjw/cGhwIGVjaG8gdHJhbnMoJ1VwbG9hZF9hZGRfZmlsZXMnKTs/Pjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJmaWxlIiBuYW1lPSJmaWxlc1tdIiBtdWx0aXBsZT0ibXVsdGlwbGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5IHN0YXJ0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXVwbG9hZCI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PD9waHAgZWNobyB0cmFucygnVXBsb2FkX3N0YXJ0Jyk7Pz48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFRoZSBnbG9iYWwgZmlsZSBwcm9jZXNzaW5nIHN0YXRlIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmlsZXVwbG9hZC1wcm9jZXNzIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gVGhlIHRhYmxlIGxpc3RpbmcgdGhlIGZpbGVzIGF2YWlsYWJsZSBmb3IgdXBsb2FkL2Rvd25sb2FkIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iZmlsZXNUYWJsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIHJvbGU9InByZXNlbnRhdGlvbiIgY2xhc3M9InRhYmxlIHRhYmxlLXN0cmlwZWQgdGFibGUtY29uZGVuc2VkIHNtYWxsIj48dGJvZHkgY2xhc3M9ImZpbGVzIj48L3Rib2R5PjwvdGFibGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InVwbG9hZC1oZWxwIj48P3BocCBlY2hvIHRyYW5zKCdVcGxvYWRfYmFzZV9oZWxwJyk7Pz48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgIDwhLS0gVGhlIHRlbXBsYXRlIHRvIGRpc3BsYXkgZmlsZXMgYXZhaWxhYmxlIGZvciB1cGxvYWQgLS0+CiAgICAgICAgICAgICAgICAgICAgPHNjcmlwdCBpZD0idGVtcGxhdGUtdXBsb2FkIiB0eXBlPSJ0ZXh0L3gtdG1wbCI+CiAgICAgICAgICAgICAgICAgICAgeyUgZm9yICh2YXIgaT0wLCBmaWxlOyBmaWxlPW8uZmlsZXNbaV07IGkrKykgeyAlfQogICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9InRlbXBsYXRlLXVwbG9hZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InByZXZpZXciPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9Im5hbWUiPnslPWZpbGUucmVsYXRpdmVQYXRoJX17JT1maWxlLm5hbWUlfTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nIGNsYXNzPSJlcnJvciB0ZXh0LWRhbmdlciI+PC9zdHJvbmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJzaXplIj5Qcm9jZXNzaW5nLi4uPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb2dyZXNzIHByb2dyZXNzLXN0cmlwZWQgYWN0aXZlIiByb2xlPSJwcm9ncmVzc2JhciIgYXJpYS12YWx1ZW1pbj0iMCIgYXJpYS12YWx1ZW1heD0iMTAwIiBhcmlhLXZhbHVlbm93PSIwIj48ZGl2IGNsYXNzPSJiYXIgYmFyLXN1Y2Nlc3MiIHN0eWxlPSJ3aWR0aDowJTsiPjwvZGl2PjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JSBpZiAoIWkgJiYgIW8ub3B0aW9ucy5hdXRvVXBsb2FkKSB7ICV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFyeSBzdGFydCIgZGlzYWJsZWQgc3R5bGU9ImRpc3BsYXk6bm9uZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi11cGxvYWQiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlN0YXJ0PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JSB9ICV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUgaWYgKCFpKSB7ICV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tbGluayBjYW5jZWwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tcmVtb3ZlIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslIH0gJX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgeyUgfSAlfQogICAgICAgICAgICAgICAgICAgIDwvc2NyaXB0PgogICAgICAgICAgICAgICAgICAgIDwhLS0gVGhlIHRlbXBsYXRlIHRvIGRpc3BsYXkgZmlsZXMgYXZhaWxhYmxlIGZvciBkb3dubG9hZCAtLT4KICAgICAgICAgICAgICAgICAgICA8c2NyaXB0IGlkPSJ0ZW1wbGF0ZS1kb3dubG9hZCIgdHlwZT0idGV4dC94LXRtcGwiPgogICAgICAgICAgICAgICAgICAgIHslIGZvciAodmFyIGk9MCwgZmlsZTsgZmlsZT1vLmZpbGVzW2ldOyBpKyspIHsgJX0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPSJ0ZW1wbGF0ZS1kb3dubG9hZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InByZXZpZXciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JSBpZiAoZmlsZS5lcnJvcikgeyAlfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iaWNvbiBpY29uLXJlbW92ZSI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JSB9IGVsc2UgeyAlfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iaWNvbiBpY29uLW9rIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslIH0gJX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJuYW1lIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUgaWYgKGZpbGUudXJsKSB7ICV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJ7JT1maWxlLnVybCV9IiB0aXRsZT0ieyU9ZmlsZS5uYW1lJX0iIGRvd25sb2FkPSJ7JT1maWxlLm5hbWUlfSIgeyU9ZmlsZS50aHVtYm5haWxVcmw/J2RhdGEtZ2FsbGVyeSc6JyclfT57JT1maWxlLm5hbWUlfTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUgfSBlbHNlIHsgJX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnslPWZpbGUubmFtZSV9PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JSB9ICV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslIGlmIChmaWxlLmVycm9yKSB7ICV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+PHNwYW4gY2xhc3M9ImxhYmVsIGxhYmVsLWRhbmdlciI+RXJyb3I8L3NwYW4+IHslPWZpbGUuZXJyb3IlfTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslIH0gJX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNpemUiPnslPW8uZm9ybWF0RmlsZVNpemUoZmlsZS5zaXplKSV9PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIHslIH0gJX0KICAgICAgICAgICAgICAgICAgICA8L3NjcmlwdD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPD9waHAgaWYoJGNvbmZpZ1sndXJsX3VwbG9hZCddKXsgPz4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRhYi1wYW5lIiBpZD0idXJsVXBsb2FkIj4KICAgICAgICAgICAgICAgICAgICA8YnIvPgogICAgICAgICAgICAgICAgICAgIDxmb3JtIGNsYXNzPSJmb3JtLWhvcml6b250YWwiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250cm9sLWdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iY29udHJvbC1sYWJlbCIgZm9yPSJ1cmwiPjw/cGhwIGVjaG8gdHJhbnMoJ1VwbG9hZF91cmwnKTs/PjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250cm9scyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJpbnB1dC1ibG9jay1sZXZlbCIgaWQ9InVybCIgcGxhY2Vob2xkZXI9Ijw/cGhwIGVjaG8gdHJhbnMoJ1VwbG9hZF91cmwnKTs/PiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2wtZ3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udHJvbHMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFyeSIgaWQ9InVwbG9hZFVSTCI+PD9waHAgZWNobyAgdHJhbnMoJ1VwbG9hZF9maWxlJyk7Pz48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDw/cGhwIH0gPz4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CjwvZGl2Pgo8IS0tIHVwbG9hZGVyIGRpdiBlbmQgLS0+Cgo8P3BocCB9ID8+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyLWZsdWlkIj4KCjw/cGhwCiRjbGFzc19leHQgPSAnJzsKJHNyYyA9ICcnOwppZiAoJGZ0cCkgewogICAgdHJ5IHsKICAgICAgICAkZmlsZXMgPSAkZnRwLT5zY2FuRGlyKCRjb25maWdbJ2Z0cF9iYXNlX2ZvbGRlciddIC4gJGNvbmZpZ1sndXBsb2FkX2RpciddIC4gJHJmbV9zdWJmb2xkZXIgLiAkc3ViZGlyKTsKICAgICAgICBpZiAoISRmdHAtPmlzRGlyKCRjb25maWdbJ2Z0cF9iYXNlX2ZvbGRlciddIC4gJGNvbmZpZ1snZnRwX3RodW1ic19kaXInXSAuICRyZm1fc3ViZm9sZGVyIC4gJHN1YmRpcikpIHsKICAgICAgICAgICAgY3JlYXRlX2ZvbGRlcihmYWxzZSwgJGNvbmZpZ1snZnRwX2Jhc2VfZm9sZGVyJ10gLiAkY29uZmlnWydmdHBfdGh1bWJzX2RpciddIC4gJHJmbV9zdWJmb2xkZXIgLiAkc3ViZGlyLCAkZnRwLCAkY29uZmlnKTsKICAgICAgICB9CiAgICB9IGNhdGNoIChGdHBDbGllbnRcRnRwRXhjZXB0aW9uICRlKSB7CiAgICAgICAgZWNobyAiRXJyb3I6ICI7CiAgICAgICAgZWNobyAkZS0+Z2V0TWVzc2FnZSgpOwogICAgICAgIGVjaG8gIjxici8+UGxlYXNlIGNoZWNrIGNvbmZpZ3VyYXRpb25zIjsKICAgICAgICBkaWUoKTsKICAgIH0KfSBlbHNlIHsKICAgICRmaWxlcyA9IHNjYW5kaXIoJGNvbmZpZ1snY3VycmVudF9wYXRoJ10gLiAkcmZtX3N1YmZvbGRlciAuICRzdWJkaXIpOwp9Cgokbl9maWxlcyA9IGNvdW50KCRmaWxlcyk7CgovL3BocCBzb3J0aW5nCiRzb3J0ZWQgPSBhcnJheSgpOwovLyRjdXJyZW50X2ZvbGRlcj1hcnJheSgpOwovLyRwcmV2X2ZvbGRlcj1hcnJheSgpOwokY3VycmVudF9maWxlc19udW1iZXIgPSAwOwokY3VycmVudF9mb2xkZXJzX251bWJlciA9IDA7Cgpmb3JlYWNoICgkZmlsZXMgYXMgJGsgPT4gJGZpbGUpIHsKICAgIGlmICgkZnRwKSB7CiAgICAgICAgJGRhdGUgPSBzdHJ0b3RpbWUoJGZpbGVbJ2RheSddIC4gIiAiIC4gJGZpbGVbJ21vbnRoJ10gLiAiICIgLiBkYXRlKCdZJykgLiAiICIgLiAkZmlsZVsndGltZSddKTsKICAgICAgICAkc2l6ZSA9ICRmaWxlWydzaXplJ107CiAgICAgICAgaWYgKCRmaWxlWyd0eXBlJ10gPT0gJ2ZpbGUnKSB7CiAgICAgICAgICAgICRjdXJyZW50X2ZpbGVzX251bWJlcisrOwogICAgICAgICAgICAkZmlsZV9leHQgPSBzdWJzdHIoc3RycmNocigkZmlsZVsnbmFtZSddLCAnLicpLCAxKTsKICAgICAgICAgICAgJGlzX2RpciA9IGZhbHNlOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRjdXJyZW50X2ZvbGRlcnNfbnVtYmVyKys7CiAgICAgICAgICAgICRmaWxlX2V4dCA9IHRyYW5zKCdUeXBlX2RpcicpOwogICAgICAgICAgICAkaXNfZGlyID0gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgJHNvcnRlZFska10gPSBhcnJheSgKICAgICAgICAgICAgJ2lzX2RpcicgPT4gJGlzX2RpciwKICAgICAgICAgICAgJ2ZpbGUnID0+ICRmaWxlWyduYW1lJ10sCiAgICAgICAgICAgICdmaWxlX2xjYXNlJyA9PiBzdHJ0b2xvd2VyKCRmaWxlWyduYW1lJ10pLAogICAgICAgICAgICAnZGF0ZScgPT4gJGRhdGUsCiAgICAgICAgICAgICdzaXplJyA9PiAkc2l6ZSwKICAgICAgICAgICAgJ3Blcm1pc3Npb25zJyA9PiAkZmlsZVsncGVybWlzc2lvbnMnXSwKICAgICAgICAgICAgJ2V4dGVuc2lvbicgPT4gZml4X3N0cnRvbG93ZXIoJGZpbGVfZXh0KQogICAgICAgICk7CiAgICB9IGVsc2UgewoKCiAgICAgICAgaWYgKCRmaWxlICE9ICIuIiAmJiAkZmlsZSAhPSAiLi4iKSB7CiAgICAgICAgICAgIGlmIChpc19kaXIoJGNvbmZpZ1snY3VycmVudF9wYXRoJ10gLiAkcmZtX3N1YmZvbGRlciAuICRzdWJkaXIgLiAkZmlsZSkpIHsKICAgICAgICAgICAgICAgICRkYXRlID0gZmlsZW10aW1lKCRjb25maWdbJ2N1cnJlbnRfcGF0aCddIC4gJHJmbV9zdWJmb2xkZXIgLiAkc3ViZGlyIC4gJGZpbGUpOwogICAgICAgICAgICAgICAgJGN1cnJlbnRfZm9sZGVyc19udW1iZXIrKzsKICAgICAgICAgICAgICAgIGlmICgkY29uZmlnWydzaG93X2ZvbGRlcl9zaXplJ10pIHsKICAgICAgICAgICAgICAgICAgICBsaXN0KCRzaXplLCAkbmZpbGVzLCAkbmZvbGRlcnMpID0gZm9sZGVyX2luZm8oJGNvbmZpZ1snY3VycmVudF9wYXRoJ10gLiAkcmZtX3N1YmZvbGRlciAuICRzdWJkaXIgLiAkZmlsZSwgZmFsc2UpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkc2l6ZSA9IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkZmlsZV9leHQgPSB0cmFucygnVHlwZV9kaXInKTsKICAgICAgICAgICAgICAgICRzb3J0ZWRbJGtdID0gYXJyYXkoCiAgICAgICAgICAgICAgICAgICAgJ2lzX2RpcicgPT4gdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAnZmlsZScgPT4gJGZpbGUsCiAgICAgICAgICAgICAgICAgICAgJ2ZpbGVfbGNhc2UnID0+IHN0cnRvbG93ZXIoJGZpbGUpLAogICAgICAgICAgICAgICAgICAgICdkYXRlJyA9PiAkZGF0ZSwKICAgICAgICAgICAgICAgICAgICAnc2l6ZScgPT4gJHNpemUsCiAgICAgICAgICAgICAgICAgICAgJ3Blcm1pc3Npb25zJyA9PiAnJywKICAgICAgICAgICAgICAgICAgICAnZXh0ZW5zaW9uJyA9PiBmaXhfc3RydG9sb3dlcigkZmlsZV9leHQpCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICgkY29uZmlnWydzaG93X2ZvbGRlcl9zaXplJ10pIHsKICAgICAgICAgICAgICAgICAgICAkc29ydGVkWyRrXVsnbmZpbGVzJ10gPSAkbmZpbGVzOwogICAgICAgICAgICAgICAgICAgICRzb3J0ZWRbJGtdWyduZm9sZGVycyddID0gJG5mb2xkZXJzOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGN1cnJlbnRfZmlsZXNfbnVtYmVyKys7CiAgICAgICAgICAgICAgICAkZmlsZV9wYXRoID0gJGNvbmZpZ1snY3VycmVudF9wYXRoJ10gLiAkcmZtX3N1YmZvbGRlciAuICRzdWJkaXIgLiAkZmlsZTsKICAgICAgICAgICAgICAgICRkYXRlID0gZmlsZW10aW1lKCRmaWxlX3BhdGgpOwogICAgICAgICAgICAgICAgJHNpemUgPSBmaWxlc2l6ZSgkZmlsZV9wYXRoKTsKICAgICAgICAgICAgICAgICRmaWxlX2V4dCA9IHN1YnN0cihzdHJyY2hyKCRmaWxlLCAnLicpLCAxKTsKICAgICAgICAgICAgICAgICRzb3J0ZWRbJGtdID0gYXJyYXkoCiAgICAgICAgICAgICAgICAgICAgJ2lzX2RpcicgPT4gZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgJ2ZpbGUnID0+ICRmaWxlLAogICAgICAgICAgICAgICAgICAgICdmaWxlX2xjYXNlJyA9PiBzdHJ0b2xvd2VyKCRmaWxlKSwKICAgICAgICAgICAgICAgICAgICAnZGF0ZScgPT4gJGRhdGUsCiAgICAgICAgICAgICAgICAgICAgJ3NpemUnID0+ICRzaXplLAogICAgICAgICAgICAgICAgICAgICdwZXJtaXNzaW9ucycgPT4gJycsCiAgICAgICAgICAgICAgICAgICAgJ2V4dGVuc2lvbicgPT4gc3RydG9sb3dlcigkZmlsZV9leHQpCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CgpmdW5jdGlvbiBmaWxlbmFtZVNvcnQoJHgsICR5KQp7CiAgICBnbG9iYWwgJGRlc2NlbmRpbmc7CgogICAgaWYgKCR4Wydpc19kaXInXSAhPT0gJHlbJ2lzX2RpciddKSB7CiAgICAgICAgcmV0dXJuICR5Wydpc19kaXInXTsKICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuICgkZGVzY2VuZGluZykKICAgICAgICAgICAgPyAkeFsnZmlsZV9sY2FzZSddIDwgJHlbJ2ZpbGVfbGNhc2UnXQogICAgICAgICAgICA6ICR4WydmaWxlX2xjYXNlJ10gPj0gJHlbJ2ZpbGVfbGNhc2UnXTsKICAgIH0KfQoKZnVuY3Rpb24gZGF0ZVNvcnQoJHgsICR5KQp7CiAgICBnbG9iYWwgJGRlc2NlbmRpbmc7CgogICAgaWYgKCR4Wydpc19kaXInXSAhPT0gJHlbJ2lzX2RpciddKSB7CiAgICAgICAgcmV0dXJuICR5Wydpc19kaXInXTsKICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuICgkZGVzY2VuZGluZykKICAgICAgICAgICAgPyAkeFsnZGF0ZSddIDwgJHlbJ2RhdGUnXQogICAgICAgICAgICA6ICR4WydkYXRlJ10gPj0gJHlbJ2RhdGUnXTsKICAgIH0KfQoKZnVuY3Rpb24gc2l6ZVNvcnQoJHgsICR5KQp7CiAgICBnbG9iYWwgJGRlc2NlbmRpbmc7CgogICAgaWYgKCR4Wydpc19kaXInXSAhPT0gJHlbJ2lzX2RpciddKSB7CiAgICAgICAgcmV0dXJuICR5Wydpc19kaXInXTsKICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuICgkZGVzY2VuZGluZykKICAgICAgICAgICAgPyAkeFsnc2l6ZSddIDwgJHlbJ3NpemUnXQogICAgICAgICAgICA6ICR4WydzaXplJ10gPj0gJHlbJ3NpemUnXTsKICAgIH0KfQoKZnVuY3Rpb24gZXh0ZW5zaW9uU29ydCgkeCwgJHkpCnsKICAgIGdsb2JhbCAkZGVzY2VuZGluZzsKCiAgICBpZiAoJHhbJ2lzX2RpciddICE9PSAkeVsnaXNfZGlyJ10pIHsKICAgICAgICByZXR1cm4gJHlbJ2lzX2RpciddOwogICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gKCRkZXNjZW5kaW5nKQogICAgICAgICAgICA/ICR4WydleHRlbnNpb24nXSA8ICR5WydleHRlbnNpb24nXQogICAgICAgICAgICA6ICR4WydleHRlbnNpb24nXSA+PSAkeVsnZXh0ZW5zaW9uJ107CiAgICB9Cn0KCnN3aXRjaCAoJHNvcnRfYnkpIHsKICAgIGNhc2UgJ2RhdGUnOgogICAgICAgIHVzb3J0KCRzb3J0ZWQsICdkYXRlU29ydCcpOwogICAgICAgIGJyZWFrOwogICAgY2FzZSAnc2l6ZSc6CiAgICAgICAgdXNvcnQoJHNvcnRlZCwgJ3NpemVTb3J0Jyk7CiAgICAgICAgYnJlYWs7CiAgICBjYXNlICdleHRlbnNpb24nOgogICAgICAgIHVzb3J0KCRzb3J0ZWQsICdleHRlbnNpb25Tb3J0Jyk7CiAgICAgICAgYnJlYWs7CiAgICBkZWZhdWx0OgogICAgICAgIHVzb3J0KCRzb3J0ZWQsICdmaWxlbmFtZVNvcnQnKTsKICAgICAgICBicmVhazsKfQoKaWYgKCRzdWJkaXIgIT0gIiIpIHsKICAgICRzb3J0ZWQgPSBhcnJheV9tZXJnZShhcnJheShhcnJheSgnZmlsZScgPT4gJy4uJykpLCAkc29ydGVkKTsKfQoKJGZpbGVzID0gJHNvcnRlZDsKPz4KPCEtLSBoZWFkZXIgZGl2IHN0YXJ0IC0tPgo8ZGl2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWZpeGVkLXRvcCI+CiAgICA8ZGl2IGNsYXNzPSJuYXZiYXItaW5uZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lci1mbHVpZCI+CiAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLW5hdmJhciIgZGF0YS10b2dnbGU9ImNvbGxhcHNlIiBkYXRhLXRhcmdldD0iLm5hdi1jb2xsYXBzZSI+CiAgICAgICAgPHNwYW4gY2xhc3M9Imljb24tYmFyIj48L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9Imljb24tYmFyIj48L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9Imljb24tYmFyIj48L3NwYW4+CiAgICAgICAgPC9idXR0b24+CiAgICAgICAgPGRpdiBjbGFzcz0iYnJhbmQiPjw/cGhwIGVjaG8gdHJhbnMoJ1Rvb2xiYXInKTs/PjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im5hdi1jb2xsYXBzZSBjb2xsYXBzZSI+CiAgICAgICAgPGRpdiBjbGFzcz0iZmlsdGVycyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwYW40IGhhbGYiPgogICAgICAgICAgICAgICAgPD9waHAgaWYoJGNvbmZpZ1sndXBsb2FkX2ZpbGVzJ10peyA/PgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0idGlwIGJ0biB1cGxvYWQtYnRuIiB0aXRsZT0iPD9waHAgZWNobyAgdHJhbnMoJ1VwbG9hZF9maWxlJyk7Pz4iPjxpIGNsYXNzPSJyZmljb24tdXBsb2FkIj48L2k+PC9idXR0b24+CiAgICAgICAgICAgICAgICA8P3BocCB9ID8+CiAgICAgICAgICAgICAgICA8P3BocCBpZigkY29uZmlnWydjcmVhdGVfdGV4dF9maWxlcyddKXsgPz4KICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InRpcCBidG4gY3JlYXRlLWZpbGUtYnRuIiB0aXRsZT0iPD9waHAgZWNobyAgdHJhbnMoJ05ld19GaWxlJyk7Pz4iPjxpIGNsYXNzPSJpY29uLXBsdXMiPjwvaT48aSBjbGFzcz0iaWNvbi1maWxlIj48L2k+PC9idXR0b24+CiAgICAgICAgICAgICAgICA8P3BocCB9ID8+CiAgICAgICAgICAgICAgICA8P3BocCBpZigkY29uZmlnWydjcmVhdGVfZm9sZGVycyddKXsgPz4KICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InRpcCBidG4gbmV3LWZvbGRlciIgdGl0bGU9Ijw/cGhwIGVjaG8gIHRyYW5zKCdOZXdfRm9sZGVyJyk/PiI+PGkgY2xhc3M9Imljb24tcGx1cyI+PC9pPjxpIGNsYXNzPSJpY29uLWZvbGRlci1vcGVuIj48L2k+PC9idXR0b24+CiAgICAgICAgICAgICAgICA8P3BocCB9ID8+CiAgICAgICAgICAgICAgICA8P3BocCBpZigkY29uZmlnWydjb3B5X2N1dF9maWxlcyddIHx8ICRjb25maWdbJ2NvcHlfY3V0X2RpcnMnXSl7ID8+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJ0aXAgYnRuIHBhc3RlLWhlcmUtYnRuIiB0aXRsZT0iPD9waHAgZWNobyB0cmFucygnUGFzdGVfSGVyZScpOz8+Ij48aSBjbGFzcz0icmZpY29uLWNsaXBib2FyZC1hcHBseSI+PC9pPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0idGlwIGJ0biBjbGVhci1jbGlwYm9hcmQtYnRuIiB0aXRsZT0iPD9waHAgZWNobyB0cmFucygnQ2xlYXJfQ2xpcGJvYXJkJyk7Pz4iPjxpIGNsYXNzPSJyZmljb24tY2xpcGJvYXJkLWNsZWFyIj48L2k+PC9idXR0b24+CiAgICAgICAgICAgICAgICA8P3BocCB9ID8+CiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJtdWx0aXBsZS1zZWxlY3Rpb24iIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KICAgICAgICAgICAgICAgIDw/cGhwIGlmKCRjb25maWdbJ211bHRpcGxlX3NlbGVjdGlvbiddKXsgPz4KICAgICAgICAgICAgICAgIDw/cGhwIGlmKCRjb25maWdbJ2RlbGV0ZV9maWxlcyddKXsgPz4KICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InRpcCBidG4gbXVsdGlwbGUtZGVsZXRlLWJ0biIgdGl0bGU9Ijw/cGhwIGVjaG8gdHJhbnMoJ0VyYXNlJyk7Pz4iIGRhdGEtY29uZmlybT0iPD9waHAgZWNobyB0cmFucygnQ29uZmlybV9kZWwnKTs/PiI+PGkgY2xhc3M9Imljb24tdHJhc2giPjwvaT48L2J1dHRvbj4KICAgICAgICAgICAgICAgIDw/cGhwIH0gPz4KICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InRpcCBidG4gbXVsdGlwbGUtc2VsZWN0LWJ0biIgdGl0bGU9Ijw/cGhwIGVjaG8gdHJhbnMoJ1NlbGVjdF9BbGwnKTs/PiI+PGkgY2xhc3M9Imljb24tY2hlY2siPjwvaT48L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InRpcCBidG4gbXVsdGlwbGUtZGVzZWxlY3QtYnRuIiB0aXRsZT0iPD9waHAgZWNobyB0cmFucygnRGVzZWxlY3RfQWxsJyk7Pz4iPjxpIGNsYXNzPSJpY29uLWJhbi1jaXJjbGUiPjwvaT48L2J1dHRvbj4KICAgICAgICAgICAgICAgIDw/cGhwIGlmKCRhcHBseV90eXBlIT0iYXBwbHlfbm9uZSIgJiYgJGNvbmZpZ1snbXVsdGlwbGVfc2VsZWN0aW9uX2FjdGlvbl9idXR0b24nXSl7ID8+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gbXVsdGlwbGUtYWN0aW9uLWJ0biBidG4taW52ZXJzZSIgZGF0YS1mdW5jdGlvbj0iPD9waHAgZWNobyAkYXBwbHlfdHlwZTs/PiI+PD9waHAgZWNobyB0cmFucygnU2VsZWN0Jyk7ID8+PC9idXR0b24+CiAgICAgICAgICAgICAgICA8P3BocCB9ID8+CiAgICAgICAgICAgICAgICA8P3BocCB9ID8+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwYW4yIGhhbGYgdmlldy1jb250cm9sbGVyIj4KICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biB0aXA8P3BocCBpZigkdmlldz09MCkgZWNobyAiIGJ0bi1pbnZlcnNlIjs/PiIgaWQ9InZpZXcwIiBkYXRhLXZhbHVlPSIwIiB0aXRsZT0iPD9waHAgZWNobyB0cmFucygnVmlld19ib3hlcycpOz8+Ij48aSBjbGFzcz0iaWNvbi10aCA8P3BocCBpZigkdmlldz09MCkgZWNobyAiaWNvbi13aGl0ZSI7Pz4iPjwvaT48L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biB0aXA8P3BocCBpZigkdmlldz09MSkgZWNobyAiIGJ0bi1pbnZlcnNlIjs/PiIgaWQ9InZpZXcxIiBkYXRhLXZhbHVlPSIxIiB0aXRsZT0iPD9waHAgZWNobyB0cmFucygnVmlld19saXN0Jyk7Pz4iPjxpIGNsYXNzPSJpY29uLWFsaWduLWp1c3RpZnkgPD9waHAgaWYoJHZpZXc9PTEpIGVjaG8gImljb24td2hpdGUiOz8+Ij48L2k+PC9idXR0b24+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gdGlwPD9waHAgaWYoJHZpZXc9PTIpIGVjaG8gIiBidG4taW52ZXJzZSI7Pz4iIGlkPSJ2aWV3MiIgZGF0YS12YWx1ZT0iMiIgdGl0bGU9Ijw/cGhwIGVjaG8gdHJhbnMoJ1ZpZXdfY29sdW1uc19saXN0Jyk7Pz4iPjxpIGNsYXNzPSJpY29uLWZpcmUgPD9waHAgaWYoJHZpZXc9PTIpIGVjaG8gImljb24td2hpdGUiOz8+Ij48L2k+PC9idXR0b24+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzcGFuNiBlbnRpcmUgdHlwZXMiPgogICAgICAgICAgICAgICAgPHNwYW4+PD9waHAgZWNobyB0cmFucygnRmlsdGVycycpOz8+Ojwvc3Bhbj4KICAgICAgICAgICAgICAgIDw/cGhwIGlmKCRfR0VUWyd0eXBlJ10hPTEgJiYgJF9HRVRbJ3R5cGUnXSE9MyAmJiAkY29uZmlnWydzaG93X2ZpbHRlcl9idXR0b25zJ10peyA/PgogICAgICAgICAgICAgICAgICAgIDw/cGhwIGlmKGNvdW50KCRjb25maWdbJ2V4dF9maWxlJ10pPjAgb3IgZmFsc2UpeyA/PgogICAgICAgICAgICAgICAgPGlucHV0IGlkPSJzZWxlY3QtdHlwZS0xIiBuYW1lPSJyYWRpby1zb3J0IiB0eXBlPSJyYWRpbyIgZGF0YS1pdGVtPSJmZi1pdGVtLXR5cGUtMSIgY2hlY2tlZD0iY2hlY2tlZCIgIGNsYXNzPSJoaWRlIiAgLz4KICAgICAgICAgICAgICAgIDxsYWJlbCBpZD0iZmYtaXRlbS10eXBlLTEiIHRpdGxlPSI8P3BocCBlY2hvIHRyYW5zKCdGaWxlcycpOz8+IiBmb3I9InNlbGVjdC10eXBlLTEiIGNsYXNzPSJ0aXAgYnRuIGZmLWxhYmVsLXR5cGUtMSI+PGkgY2xhc3M9Imljb24tZmlsZSI+PC9pPjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPD9waHAgfSA/PgogICAgICAgICAgICAgICAgICAgIDw/cGhwIGlmKGNvdW50KCRjb25maWdbJ2V4dF9pbWcnXSk+MCBvciBmYWxzZSl7ID8+CiAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9InNlbGVjdC10eXBlLTIiIG5hbWU9InJhZGlvLXNvcnQiIHR5cGU9InJhZGlvIiBkYXRhLWl0ZW09ImZmLWl0ZW0tdHlwZS0yIiBjbGFzcz0iaGlkZSIgIC8+CiAgICAgICAgICAgICAgICA8bGFiZWwgaWQ9ImZmLWl0ZW0tdHlwZS0yIiB0aXRsZT0iPD9waHAgZWNobyB0cmFucygnSW1hZ2VzJyk7Pz4iIGZvcj0ic2VsZWN0LXR5cGUtMiIgY2xhc3M9InRpcCBidG4gZmYtbGFiZWwtdHlwZS0yIj48aSBjbGFzcz0iaWNvbi1waWN0dXJlIj48L2k+PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8P3BocCB9ID8+CiAgICAgICAgICAgICAgICAgICAgPD9waHAgaWYoY291bnQoJGNvbmZpZ1snZXh0X21pc2MnXSk+MCBvciBmYWxzZSl7ID8+CiAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9InNlbGVjdC10eXBlLTMiIG5hbWU9InJhZGlvLXNvcnQiIHR5cGU9InJhZGlvIiBkYXRhLWl0ZW09ImZmLWl0ZW0tdHlwZS0zIiBjbGFzcz0iaGlkZSIgIC8+CiAgICAgICAgICAgICAgICA8bGFiZWwgaWQ9ImZmLWl0ZW0tdHlwZS0zIiB0aXRsZT0iPD9waHAgZWNobyB0cmFucygnQXJjaGl2ZXMnKTs/PiIgZm9yPSJzZWxlY3QtdHlwZS0zIiBjbGFzcz0idGlwIGJ0biBmZi1sYWJlbC10eXBlLTMiPjxpIGNsYXNzPSJpY29uLWluYm94Ij48L2k+PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8P3BocCB9ID8+CiAgICAgICAgICAgICAgICAgICAgPD9waHAgaWYoY291bnQoJGNvbmZpZ1snZXh0X3ZpZGVvJ10pPjAgb3IgZmFsc2UpeyA/PgogICAgICAgICAgICAgICAgPGlucHV0IGlkPSJzZWxlY3QtdHlwZS00IiBuYW1lPSJyYWRpby1zb3J0IiB0eXBlPSJyYWRpbyIgZGF0YS1pdGVtPSJmZi1pdGVtLXR5cGUtNCIgY2xhc3M9ImhpZGUiICAvPgogICAgICAgICAgICAgICAgPGxhYmVsIGlkPSJmZi1pdGVtLXR5cGUtNCIgdGl0bGU9Ijw/cGhwIGVjaG8gdHJhbnMoJ1ZpZGVvcycpOz8+IiBmb3I9InNlbGVjdC10eXBlLTQiIGNsYXNzPSJ0aXAgYnRuIGZmLWxhYmVsLXR5cGUtNCI+PGkgY2xhc3M9Imljb24tZmlsbSI+PC9pPjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPD9waHAgfSA/PgogICAgICAgICAgICAgICAgICAgIDw/cGhwIGlmKGNvdW50KCRjb25maWdbJ2V4dF9tdXNpYyddKT4wIG9yIGZhbHNlKXsgPz4KICAgICAgICAgICAgICAgIDxpbnB1dCBpZD0ic2VsZWN0LXR5cGUtNSIgbmFtZT0icmFkaW8tc29ydCIgdHlwZT0icmFkaW8iIGRhdGEtaXRlbT0iZmYtaXRlbS10eXBlLTUiIGNsYXNzPSJoaWRlIiAgLz4KICAgICAgICAgICAgICAgIDxsYWJlbCBpZD0iZmYtaXRlbS10eXBlLTUiIHRpdGxlPSI8P3BocCBlY2hvIHRyYW5zKCdNdXNpYycpOz8+IiBmb3I9InNlbGVjdC10eXBlLTUiIGNsYXNzPSJ0aXAgYnRuIGZmLWxhYmVsLXR5cGUtNSI+PGkgY2xhc3M9Imljb24tbXVzaWMiPjwvaT48L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDw/cGhwIH0gPz4KICAgICAgICAgICAgICAgIDw/cGhwIH0gPz4KICAgICAgICAgICAgICAgIDxpbnB1dCBhY2Nlc3NrZXk9ImYiIHR5cGU9InRleHQiIGNsYXNzPSJmaWx0ZXItaW5wdXQgPD9waHAgZWNobyAoKCRfR0VUWyd0eXBlJ10hPTEgJiYgJF9HRVRbJ3R5cGUnXSE9MykgPyAnJyA6ICdmaWx0ZXItaW5wdXQtbm90eXBlJyk7Pz4iIGlkPSJmaWx0ZXItaW5wdXQiIG5hbWU9ImZpbHRlciIgcGxhY2Vob2xkZXI9Ijw/cGhwIGVjaG8gZml4X3N0cnRvbG93ZXIodHJhbnMoJ1RleHRfZmlsdGVyJykpOz8+Li4uIiB2YWx1ZT0iPD9waHAgZWNobyAkZmlsdGVyOz8+Ii8+PD9waHAgaWYoJG5fZmlsZXM+JGNvbmZpZ1snZmlsZV9udW1iZXJfbGltaXRfanMnXSl7ID8+PGxhYmVsIGlkPSJmaWx0ZXIiIGNsYXNzPSJidG4iPjxpIGNsYXNzPSJpY29uLXBsYXkiPjwvaT48L2xhYmVsPjw/cGhwIH0gPz4KCiAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9InNlbGVjdC10eXBlLWFsbCIgbmFtZT0icmFkaW8tc29ydCIgdHlwZT0icmFkaW8iIGRhdGEtaXRlbT0iZmYtaXRlbS10eXBlLWFsbCIgY2xhc3M9ImhpZGUiICAvPgogICAgICAgICAgICAgICAgPGxhYmVsIGlkPSJmZi1pdGVtLXR5cGUtYWxsIiB0aXRsZT0iPD9waHAgZWNobyB0cmFucygnQWxsJyk7Pz4iIDw/cGhwIGlmKCRfR0VUWyd0eXBlJ109PTEgfHwgJF9HRVRbJ3R5cGUnXT09Myl7ID8+c3R5bGU9InZpc2liaWxpdHk6IGhpZGRlbjsiIDw/cGhwIH0gPz4gZGF0YS1pdGVtPSJmZi1pdGVtLXR5cGUtYWxsIiBmb3I9InNlbGVjdC10eXBlLWFsbCIgc3R5bGU9Im1hcmdpbi1yaWd0aDowcHg7IiBjbGFzcz0idGlwIGJ0biBidG4taW52ZXJzZSBmZi1sYWJlbC10eXBlLWFsbCI+PD9waHAgZWNobyB0cmFucygnQWxsJyk7Pz48L2xhYmVsPgoKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8L2Rpdj4KPC9kaXY+Cgo8IS0tIGhlYWRlciBkaXYgZW5kIC0tPgoKICAgIDwhLS0gYnJlYWRjcnVtYiBkaXYgc3RhcnQgLS0+CgogICAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KICAgIDw/cGhwCiAgICAkbGluayA9ICJkaWFsb2cucGhwPyIgLiAkZ2V0X3BhcmFtczsKICAgID8+CiAgICA8dWwgY2xhc3M9ImJyZWFkY3J1bWIiPgogICAgPGxpIGNsYXNzPSJwdWxsLWxlZnQiPjxhIGhyZWY9Ijw/cGhwIGVjaG8gJGxpbms/Pi8iPjxpIGNsYXNzPSJpY29uLWhvbWUiPjwvaT48L2E+PC9saT4KICAgIDxsaT48c3BhbiBjbGFzcz0iZGl2aWRlciI+Lzwvc3Bhbj48L2xpPgogICAgPD9waHAKICAgICRiYz1leHBsb2RlKCIvIiwkc3ViZGlyKTsKICAgICR0bXBfcGF0aD0nJzsKICAgIGlmKCFlbXB0eSgkYmMpKQogICAgZm9yZWFjaCgkYmMgYXMgJGs9PiRiKXsKICAgICAgICAkdG1wX3BhdGguPSRiLiIvIjsKICAgICAgICBpZigkaz09Y291bnQoJGJjKS0yKXsKICAgID8+IDxsaSBjbGFzcz0iYWN0aXZlIj48P3BocCBlY2hvICRiPz48L2xpPjw/cGhwCiAgICAgICAgfWVsc2VpZigkYiE9IiIpeyA/PgogICAgICAgIDxsaT48YSBocmVmPSI8P3BocCBlY2hvICRsaW5rLiR0bXBfcGF0aD8+Ij48P3BocCBlY2hvICRiPz48L2E+PC9saT48bGk+PHNwYW4gY2xhc3M9ImRpdmlkZXIiPjw/cGhwIGVjaG8gIi8iOz8+PC9zcGFuPjwvbGk+CiAgICA8P3BocCB9CiAgICB9CiAgICA/PgoKICAgIDxsaSBjbGFzcz0icHVsbC1yaWdodCI+PGEgY2xhc3M9ImJ0bi1zbWFsbCIgaHJlZj0iamF2YXNjcmlwdDp2b2lkKCcnKSIgaWQ9ImluZm8iPjxpIGNsYXNzPSJpY29uLXF1ZXN0aW9uLXNpZ24iPjwvaT48L2E+PC9saT4KICAgIDw/cGhwIGlmKCRjb25maWdbJ3Nob3dfbGFuZ3VhZ2Vfc2VsZWN0aW9uJ10peyA/PgogICAgPGxpIGNsYXNzPSJwdWxsLXJpZ2h0Ij48YSBjbGFzcz0iYnRuLXNtYWxsIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoJycpIiBpZD0iY2hhbmdlX2xhbmdfYnRuIj48aSBjbGFzcz0iaWNvbi1nbG9iZSI+PC9pPjwvYT48L2xpPgogICAgPD9waHAgfSA/PgogICAgPGxpIGNsYXNzPSJwdWxsLXJpZ2h0Ij48YSBpZD0icmVmcmVzaCIgY2xhc3M9ImJ0bi1zbWFsbCIgaHJlZj0iZGlhbG9nLnBocD88P3BocCBlY2hvICRnZXRfcGFyYW1zLiRzdWJkaXIuIiYiLnVuaXFpZCgpID8+Ij48aSBjbGFzcz0iaWNvbi1yZWZyZXNoIj48L2k+PC9hPjwvbGk+CgoJPGxpIGNsYXNzPSJwdWxsLXJpZ2h0Ij4KCQk8ZGl2IGNsYXNzPSJidG4tZ3JvdXAiPgoJCTxhIGNsYXNzPSJidG4gZHJvcGRvd24tdG9nZ2xlIHNvcnRpbmctYnRuIiBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iIGhyZWY9IiMiPgoJCTxpIGNsYXNzPSJpY29uLXNpZ25hbCI+PC9pPgoJCTxzcGFuIGNsYXNzPSJjYXJldCI+PC9zcGFuPgoJCTwvYT4KCQk8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUgcHVsbC1sZWZ0IHNvcnRpbmciPgoJCQk8bGkgY2xhc3M9InRleHQtY2VudGVyIj48c3Ryb25nPjw/cGhwIGVjaG8gdHJhbnMoJ1NvcnRpbmcnKSA/Pjwvc3Ryb25nPjwvbGk+CgkJPGxpPjxhIGNsYXNzPSJzb3J0ZXIgc29ydC1uYW1lIDw/cGhwIGlmKCRzb3J0X2J5PT0ibmFtZSIpeyBlY2hvICgkZGVzY2VuZGluZyk/ImRlc2NlbmRpbmciOiJhc2NlbmRpbmciOyB9ID8+IiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoJycpIiBkYXRhLXNvcnQ9Im5hbWUiPjw/cGhwIGVjaG8gdHJhbnMoJ0ZpbGVuYW1lJyk7Pz48L2E+PC9saT4KCQk8bGk+PGEgY2xhc3M9InNvcnRlciBzb3J0LWRhdGUgPD9waHAgaWYoJHNvcnRfYnk9PSJkYXRlIil7IGVjaG8gKCRkZXNjZW5kaW5nKT8iZGVzY2VuZGluZyI6ImFzY2VuZGluZyI7IH0gPz4iIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgnJykiIGRhdGEtc29ydD0iZGF0ZSI+PD9waHAgZWNobyB0cmFucygnRGF0ZScpOz8+PC9hPjwvbGk+CgkJPGxpPjxhIGNsYXNzPSJzb3J0ZXIgc29ydC1zaXplIDw/cGhwIGlmKCRzb3J0X2J5PT0ic2l6ZSIpeyBlY2hvICgkZGVzY2VuZGluZyk/ImRlc2NlbmRpbmciOiJhc2NlbmRpbmciOyB9ID8+IiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoJycpIiBkYXRhLXNvcnQ9InNpemUiPjw/cGhwIGVjaG8gdHJhbnMoJ1NpemUnKTs/PjwvYT48L2xpPgoJCTxsaT48YSBjbGFzcz0ic29ydGVyIHNvcnQtZXh0ZW5zaW9uIDw/cGhwIGlmKCRzb3J0X2J5PT0iZXh0ZW5zaW9uIil7IGVjaG8gKCRkZXNjZW5kaW5nKT8iZGVzY2VuZGluZyI6ImFzY2VuZGluZyI7IH0gPz4iIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgnJykiIGRhdGEtc29ydD0iZXh0ZW5zaW9uIj48P3BocCBlY2hvIHRyYW5zKCdUeXBlJyk7Pz48L2E+PC9saT4KCQk8L3VsPgoJCTwvZGl2PgoJPC9saT4KCTxsaT48c21hbGwgY2xhc3M9ImhpZGRlbi1waG9uZSI+KDxzcGFuIGlkPSJmaWxlc19udW1iZXIiPjw/cGhwIGVjaG8gJGN1cnJlbnRfZmlsZXNfbnVtYmVyLiI8L3NwYW4+ICIudHJhbnMoJ0ZpbGVzJykuIiAtIDxzcGFuIGlkPSdmb2xkZXJzX251bWJlcic+Ii4kY3VycmVudF9mb2xkZXJzX251bWJlci4iPC9zcGFuPiAiLnRyYW5zKCdGb2xkZXJzJyk7Pz4pPC9zbWFsbD48L2xpPgoJPD9waHAgaWYoJGNvbmZpZ1snc2hvd190b3RhbF9zaXplJ10peyA/PgoJPGxpPjxzbWFsbCBjbGFzcz0iaGlkZGVuLXBob25lIj48c3BhbiB0aXRsZT0iPD9waHAgZWNobyB0cmFucygndG90YWwgc2l6ZScpLiRjb25maWdbJ01heFNpemVUb3RhbCddOz8+Ij48P3BocCBlY2hvIHRyYW5zKCd0b3RhbCBzaXplJykuIjogIi5tYWtlU2l6ZSgkc2l6ZUN1cnJlbnRGb2xkZXIpLigoJGNvbmZpZ1snTWF4U2l6ZVRvdGFsJ10gIT09IGZhbHNlICYmIGlzX2ludCgkY29uZmlnWydNYXhTaXplVG90YWwnXSkpPyAnLycuJGNvbmZpZ1snTWF4U2l6ZVRvdGFsJ10uJyAnLnRyYW5zKCdNQicpOicnKTs/Pjwvc3Bhbj48L3NtYWxsPgoJPC9saT4KCTw/cGhwIH0gPz4KCTwvdWw+Cgk8L2Rpdj4KCTwhLS0gYnJlYWRjcnVtYiBkaXYgZW5kIC0tPgoJPGRpdiBjbGFzcz0icm93LWZsdWlkIGZmLWNvbnRhaW5lciI+Cgk8ZGl2IGNsYXNzPSJzcGFuMTIiPgoJCTw/cGhwIGlmKCAoJGZ0cCAmJiAhJGZ0cC0+aXNEaXIoJGNvbmZpZ1snZnRwX2Jhc2VfZm9sZGVyJ10uJGNvbmZpZ1sndXBsb2FkX2RpciddLiRyZm1fc3ViZm9sZGVyLiRzdWJkaXIpKSAgfHwgKCEkZnRwICYmIEBvcGVuZGlyKCRjb25maWdbJ2N1cnJlbnRfcGF0aCddLiRyZm1fc3ViZm9sZGVyLiRzdWJkaXIpPT09RkFMU0UpKXsgPz4KCQk8YnIvPgoJCTxkaXYgY2xhc3M9ImFsZXJ0IGFsZXJ0LWVycm9yIj5UaGVyZSBpcyBhbiBlcnJvciEgVGhlIHVwbG9hZCBmb2xkZXIgdGhlcmUgaXNuJ3QuIENoZWNrIHlvdXIgY29uZmlnLnBocCBmaWxlLiA8L2Rpdj4KCQk8P3BocCB9ZWxzZXsgPz4KCQk8aDQgaWQ9ImhlbHAiPjw/cGhwIGVjaG8gdHJhbnMoJ1N3aXBlX2hlbHAnKTs/PjwvaDQ+CgkJPD9waHAgaWYoaXNzZXQoJGNvbmZpZ1snZm9sZGVyX21lc3NhZ2UnXSkpeyA/PgoJCTxkaXYgY2xhc3M9ImFsZXJ0IGFsZXJ0LWJsb2NrIj48P3BocCBlY2hvICRjb25maWdbJ2ZvbGRlcl9tZXNzYWdlJ107Pz48L2Rpdj4KCQk8P3BocCB9ID8+CgkJPD9waHAgaWYoJGNvbmZpZ1snc2hvd19zb3J0aW5nX2JhciddKXsgPz4KCQk8IS0tIHNvcnRlciAtLT4KCQk8ZGl2IGNsYXNzPSJzb3J0ZXItY29udGFpbmVyIDw/cGhwIGVjaG8gImxpc3QtdmlldyIuJHZpZXc7Pz4iPgoJCTxkaXYgY2xhc3M9ImZpbGUtbmFtZSI+PGEgY2xhc3M9InNvcnRlciBzb3J0LW5hbWUgPD9waHAgaWYoJHNvcnRfYnk9PSJuYW1lIil7IGVjaG8gKCRkZXNjZW5kaW5nKT8iZGVzY2VuZGluZyI6ImFzY2VuZGluZyI7IH0gPz4iIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgnJykiIGRhdGEtc29ydD0ibmFtZSI+PD9waHAgZWNobyB0cmFucygnRmlsZW5hbWUnKTs/PjwvYT48L2Rpdj4KCQk8ZGl2IGNsYXNzPSJmaWxlLWRhdGUiPjxhIGNsYXNzPSJzb3J0ZXIgc29ydC1kYXRlIDw/cGhwIGlmKCRzb3J0X2J5PT0iZGF0ZSIpeyBlY2hvICgkZGVzY2VuZGluZyk/ImRlc2NlbmRpbmciOiJhc2NlbmRpbmciOyB9ID8+IiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoJycpIiBkYXRhLXNvcnQ9ImRhdGUiPjw/cGhwIGVjaG8gdHJhbnMoJ0RhdGUnKTs/PjwvYT48L2Rpdj4KCQk8ZGl2IGNsYXNzPSJmaWxlLXNpemUiPjxhIGNsYXNzPSJzb3J0ZXIgc29ydC1zaXplIDw/cGhwIGlmKCRzb3J0X2J5PT0ic2l6ZSIpeyBlY2hvICgkZGVzY2VuZGluZyk/ImRlc2NlbmRpbmciOiJhc2NlbmRpbmciOyB9ID8+IiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoJycpIiBkYXRhLXNvcnQ9InNpemUiPjw/cGhwIGVjaG8gdHJhbnMoJ1NpemUnKTs/PjwvYT48L2Rpdj4KCQk8ZGl2IGNsYXNzPSdpbWctZGltZW5zaW9uJz48P3BocCBlY2hvIHRyYW5zKCdEaW1lbnNpb24nKTs/PjwvZGl2PgoJCTxkaXYgY2xhc3M9J2ZpbGUtZXh0ZW5zaW9uJz48YSBjbGFzcz0ic29ydGVyIHNvcnQtZXh0ZW5zaW9uIDw/cGhwIGlmKCRzb3J0X2J5PT0iZXh0ZW5zaW9uIil7IGVjaG8gKCRkZXNjZW5kaW5nKT8iZGVzY2VuZGluZyI6ImFzY2VuZGluZyI7IH0gPz4iIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgnJykiIGRhdGEtc29ydD0iZXh0ZW5zaW9uIj48P3BocCBlY2hvIHRyYW5zKCdUeXBlJyk7Pz48L2E+PC9kaXY+CgkJPGRpdiBjbGFzcz0nZmlsZS1vcGVyYXRpb25zJz48P3BocCBlY2hvIHRyYW5zKCdPcGVyYXRpb25zJyk7Pz48L2Rpdj4KCQk8L2Rpdj4KCQk8P3BocCB9ID8+CgogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJmaWxlX251bWJlciIgdmFsdWU9Ijw/cGhwIGVjaG8gJG5fZmlsZXM7Pz4iIC8+CiAgICAgICAgPCEtLXVsIGNsYXNzPSJ0aHVtYm5haWxzIGZmLWl0ZW1zIi0tPgogICAgICAgIDx1bCBjbGFzcz0iZ3JpZCBjcy1zdHlsZS0yIDw/cGhwIGVjaG8gImxpc3QtdmlldyIuJHZpZXc7Pz4iIGlkPSJtYWluLWl0ZW0tY29udGFpbmVyIj4KICAgICAgICA8P3BocAoKCiAgICAgICAgZm9yZWFjaCAoJGZpbGVzIGFzICRmaWxlX2FycmF5KSB7CiAgICAgICAgICAgICRmaWxlPSRmaWxlX2FycmF5WydmaWxlJ107CiAgICAgICAgICAgIGlmKCRmaWxlID09ICcuJyB8fCAoIHN1YnN0cigkZmlsZSwgMCwgMSkgPT0gJy4nICYmIGlzc2V0KCAkZmlsZV9hcnJheVsgJ2V4dGVuc2lvbicgXSApICYmICRmaWxlX2FycmF5WyAnZXh0ZW5zaW9uJyBdID09IGZpeF9zdHJ0b2xvd2VyKHRyYW5zKCAnVHlwZV9kaXInICkgKSkgfHwgKGlzc2V0KCRmaWxlX2FycmF5WydleHRlbnNpb24nXSkgJiYgJGZpbGVfYXJyYXlbJ2V4dGVuc2lvbiddIT1maXhfc3RydG9sb3dlcih0cmFucygnVHlwZV9kaXInKSkpIHx8ICgkZmlsZSA9PSAnLi4nICYmICRzdWJkaXIgPT0gJycpIHx8IGluX2FycmF5KCRmaWxlLCAkY29uZmlnWydoaWRkZW5fZm9sZGVycyddKSB8fCAoJGZpbHRlciE9JycgJiYgJG5fZmlsZXM+JGNvbmZpZ1snZmlsZV9udW1iZXJfbGltaXRfanMnXSAmJiAkZmlsZSE9Ii4uIiAmJiBzdHJpcG9zKCRmaWxlLCRmaWx0ZXIpPT09ZmFsc2UpKXsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRuZXdfbmFtZT1maXhfZmlsZW5hbWUoJGZpbGUsJGNvbmZpZyk7CiAgICAgICAgICAgIGlmKCRmdHAgJiYgJGZpbGUhPScuLicgJiYgJGZpbGUhPSRuZXdfbmFtZSl7CiAgICAgICAgICAgICAgICAvL3JlbmFtZQogICAgICAgICAgICAgICAgcmVuYW1lX2ZvbGRlcigkY29uZmlnWydjdXJyZW50X3BhdGgnXS4kc3ViZGlyLiRmaWxlLCRuZXdfbmFtZSwkZnRwLCRjb25maWcpOwogICAgICAgICAgICAgICAgJGZpbGU9JG5ld19uYW1lOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vYWRkIGluIHRodW1icyBmb2xkZXIgaWYgbm90IGV4aXN0CiAgICAgICAgICAgIGlmKCRmaWxlIT0nLi4nKXsKICAgICAgICAgICAgICAgIGlmKCEkZnRwICYmICFmaWxlX2V4aXN0cygkdGh1bWJzX3BhdGguJGZpbGUpKXsKICAgICAgICAgICAgICAgICAgICBjcmVhdGVfZm9sZGVyKGZhbHNlLCR0aHVtYnNfcGF0aC4kZmlsZSwkZnRwLCRjb25maWcpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkY2xhc3NfZXh0ID0gMzsKICAgICAgICAgICAgaWYoJGZpbGU9PScuLicgJiYgdHJpbSgkc3ViZGlyKSAhPSAnJyApewogICAgICAgICAgICAkc3JjID0gZXhwbG9kZSgiLyIsJHN1YmRpcik7CiAgICAgICAgICAgIHVuc2V0KCRzcmNbY291bnQoJHNyYyktMl0pOwogICAgICAgICAgICAkc3JjPWltcGxvZGUoIi8iLCRzcmMpOwogICAgICAgICAgICBpZigkc3JjPT0nJykgJHNyYz0iLyI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlaWYgKCRmaWxlIT0nLi4nKSB7CiAgICAgICAgICAgICAgICAgICAgJHNyYyA9ICRzdWJkaXIgLiAkZmlsZS4iLyI7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgPGxpIGRhdGEtbmFtZT0iPD9waHAgZWNobyAkZmlsZSA/PiIgY2xhc3M9Ijw/cGhwIGlmKCRmaWxlPT0nLi4nKSBlY2hvICdiYWNrJzsgZWxzZSBlY2hvICdkaXInOz8+IDw/cGhwIGlmKCEkY29uZmlnWydtdWx0aXBsZV9zZWxlY3Rpb24nXSl7ID8+bm8tc2VsZWN0b3I8P3BocCB9ID8+IiA8P3BocCBpZigoJGZpbHRlciE9JycgJiYgc3RyaXBvcygkZmlsZSwkZmlsdGVyKT09PWZhbHNlKSkgZWNobyAnIHN0eWxlPSJkaXNwbGF5Om5vbmU7Iic7Pz4+PD9waHAKICAgICAgICAgICAgICAgICRmaWxlX3ByZXZlbnRfcmVuYW1lID0gZmFsc2U7CiAgICAgICAgICAgICAgICAkZmlsZV9wcmV2ZW50X2RlbGV0ZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRmaWxlUGVybWlzc2lvbnNbJGZpbGVdKSkgewogICAgICAgICAgICAgICAgJGZpbGVfcHJldmVudF9yZW5hbWUgPSBpc3NldCgkZmlsZVBlcm1pc3Npb25zWyRmaWxlXVsncHJldmVudF9yZW5hbWUnXSkgJiYgJGZpbGVQZXJtaXNzaW9uc1skZmlsZV1bJ3ByZXZlbnRfcmVuYW1lJ107CiAgICAgICAgICAgICAgICAkZmlsZV9wcmV2ZW50X2RlbGV0ZSA9IGlzc2V0KCRmaWxlUGVybWlzc2lvbnNbJGZpbGVdWydwcmV2ZW50X2RlbGV0ZSddKSAmJiAkZmlsZVBlcm1pc3Npb25zWyRmaWxlXVsncHJldmVudF9kZWxldGUnXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgID8+PGZpZ3VyZSBkYXRhLW5hbWU9Ijw/cGhwIGVjaG8gJGZpbGUgPz4iIGRhdGEtcGF0aD0iPD9waHAgZWNobyAkcmZtX3N1YmZvbGRlci4kc3ViZGlyLiRmaWxlOz8+IiBjbGFzcz0iPD9waHAgaWYoJGZpbGU9PSIuLiIpIGVjaG8gImJhY2stIjs/PmRpcmVjdG9yeSIgZGF0YS10eXBlPSI8P3BocCBpZigkZmlsZSE9Ii4uIil7IGVjaG8gImRpciI7IH0gPz4iPgogICAgICAgICAgICAgICAgPD9waHAgaWYoJGZpbGU9PSIuLiIpeyA/PgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGNsYXNzPSJwYXRoIiB2YWx1ZT0iPD9waHAgZWNobyBzdHJfcmVwbGFjZSgnLicsJycsZGlybmFtZSgkcmZtX3N1YmZvbGRlci4kc3ViZGlyKSk7Pz4iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBjbGFzcz0icGF0aF90aHVtYiIgdmFsdWU9Ijw/cGhwIGVjaG8gZGlybmFtZSgkdGh1bWJzX3BhdGgpLiIvIjs/PiIvPgogICAgICAgICAgICAgICAgPD9waHAgfSA/PgogICAgICAgICAgICAgICAgPGEgY2xhc3M9ImZvbGRlci1saW5rIiBocmVmPSJkaWFsb2cucGhwPzw/cGhwIGVjaG8gJGdldF9wYXJhbXMucmF3dXJsZW5jb2RlKCRzcmMpLiImIi4oJGNhbGxiYWNrPydjYWxsYmFjaz0nLiRjYWxsYmFjay4iJiI6JycpLnVuaXFpZCgpID8+Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbWctcHJlY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImltZy1jb250YWluZXIgZGlyZWN0b3J5Ij48c3Bhbj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPSJkaXJlY3RvcnktaW1nIiBkYXRhLXNyYz0iaW1nLzw/cGhwIGVjaG8gJGNvbmZpZ1snaWNvbl90aGVtZSddOz8+L2ZvbGRlcjw/cGhwIGlmKCRmaWxlPT0iLi4iKXsgZWNobyAiX2JhY2siOyB9Pz4ucG5nIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW1nLXByZWNvbnRhaW5lci1taW5pIGRpcmVjdG9yeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbWctY29udGFpbmVyLW1pbmkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz0iZGlyZWN0b3J5LWltZyIgZGF0YS1zcmM9ImltZy88P3BocCBlY2hvICRjb25maWdbJ2ljb25fdGhlbWUnXTs/Pi9mb2xkZXI8P3BocCBpZigkZmlsZT09Ii4uIil7IGVjaG8gIl9iYWNrIjsgfT8+LnBuZyIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8P3BocCBpZigkZmlsZT09Ii4uIil7ID8+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm94IG5vLWVmZmVjdCI+CiAgICAgICAgICAgICAgICAgICAgPGg0Pjw/cGhwIGVjaG8gdHJhbnMoJ0JhY2snKSA/PjwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9hPgoKICAgICAgICAgICAgPD9waHAgfWVsc2V7ID8+CiAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJveCI+CiAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSI8P3BocCBpZigkY29uZmlnWydlbGxpcHNpc190aXRsZV9hZnRlcl9maXJzdF9yb3cnXSl7IGVjaG8gImVsbGlwc2lzIjsgfSA/PiI+PGEgY2xhc3M9ImZvbGRlci1saW5rIiBkYXRhLWZpbGU9Ijw/cGhwIGVjaG8gJGZpbGUgPz4iIGhyZWY9ImRpYWxvZy5waHA/PD9waHAgZWNobyAkZ2V0X3BhcmFtcy5yYXd1cmxlbmNvZGUoJHNyYykuIiYiLnVuaXFpZCgpID8+Ij48P3BocCBlY2hvICRmaWxlOz8+PC9hPjwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgY2xhc3M9Im5hbWUiIHZhbHVlPSI8P3BocCBlY2hvICRmaWxlX2FycmF5WydmaWxlX2xjYXNlJ107Pz4iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBjbGFzcz0iZGF0ZSIgdmFsdWU9Ijw/cGhwIGVjaG8gJGZpbGVfYXJyYXlbJ2RhdGUnXTs/PiIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGNsYXNzPSJzaXplIiB2YWx1ZT0iPD9waHAgZWNobyAkZmlsZV9hcnJheVsnc2l6ZSddOz8+Ii8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgY2xhc3M9ImV4dGVuc2lvbiIgdmFsdWU9Ijw/cGhwIGVjaG8gZml4X3N0cnRvbG93ZXIodHJhbnMoJ1R5cGVfZGlyJykpOz8+Ii8+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmlsZS1kYXRlIj48P3BocCBlY2hvIGRhdGUodHJhbnMoJ0RhdGVfdHlwZScpLCRmaWxlX2FycmF5WydkYXRlJ10pOz8+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPD9waHAgaWYoJGNvbmZpZ1snc2hvd19mb2xkZXJfc2l6ZSddKXsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmlsZS1zaXplIj48P3BocCBlY2hvIG1ha2VTaXplKCRmaWxlX2FycmF5WydzaXplJ10pOz8+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGNsYXNzPSJuZmlsZXMiIHZhbHVlPSI8P3BocCBlY2hvICRmaWxlX2FycmF5WyduZmlsZXMnXTs/PiIvPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBjbGFzcz0ibmZvbGRlcnMiIHZhbHVlPSI8P3BocCBlY2hvICRmaWxlX2FycmF5WyduZm9sZGVycyddOz8+Ii8+CiAgICAgICAgICAgICAgICAgICAgPD9waHAgfSA/PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J2ZpbGUtZXh0ZW5zaW9uJz48P3BocCBlY2hvIGZpeF9zdHJ0b2xvd2VyKHRyYW5zKCdUeXBlX2RpcicpKTs/PjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxmaWdjYXB0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoJycpIiBjbGFzcz0idGlwLWxlZnQgZWRpdC1idXR0b24gcmVuYW1lLWZpbGUtcGF0aHMgPD9waHAgaWYoJGNvbmZpZ1sncmVuYW1lX2ZvbGRlcnMnXSAmJiAhJGZpbGVfcHJldmVudF9yZW5hbWUpIGVjaG8gInJlbmFtZS1mb2xkZXIiOz8+IiB0aXRsZT0iPD9waHAgZWNobyB0cmFucygnUmVuYW1lJyk/PiIgZGF0YS1mb2xkZXI9IjEiIGRhdGEtcGVybWlzc2lvbnM9Ijw/cGhwIGVjaG8gJGZpbGVfYXJyYXlbJ3Blcm1pc3Npb25zJ107ID8+Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tcGVuY2lsIDw/cGhwIGlmKCEkY29uZmlnWydyZW5hbWVfZm9sZGVycyddIHx8ICRmaWxlX3ByZXZlbnRfcmVuYW1lKSBlY2hvICdpY29uLXdoaXRlJzs/PiI+PC9pPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKCcnKSIgY2xhc3M9InRpcC1sZWZ0IGVyYXNlLWJ1dHRvbiA8P3BocCBpZigkY29uZmlnWydkZWxldGVfZm9sZGVycyddICYmICEkZmlsZV9wcmV2ZW50X2RlbGV0ZSkgZWNobyAiZGVsZXRlLWZvbGRlciI7Pz4iIHRpdGxlPSI8P3BocCBlY2hvIHRyYW5zKCdFcmFzZScpPz4iIGRhdGEtY29uZmlybT0iPD9waHAgZWNobyB0cmFucygnQ29uZmlybV9Gb2xkZXJfZGVsJyk7Pz4iID4KICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9Imljb24tdHJhc2ggPD9waHAgaWYoISRjb25maWdbJ2RlbGV0ZV9mb2xkZXJzJ10gfHwgJGZpbGVfcHJldmVudF9kZWxldGUpIGVjaG8gJ2ljb24td2hpdGUnOz8+Ij48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2ZpZ2NhcHRpb24+CiAgICAgICAgICAgIDw/cGhwIH0gPz4KICAgICAgICAgICAgICAgIDwvZmlndXJlPgogICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8P3BocAogICAgICAgICAgICB9CgoKICAgICAgICAgICAgJGZpbGVzX3ByZXZlbnRfZHVwbGljYXRlID0gYXJyYXkoKTsKICAgICAgICAgICAgZm9yZWFjaCAoJGZpbGVzIGFzICRudT0+JGZpbGVfYXJyYXkpIHsKICAgICAgICAgICAgICAgICRmaWxlPSRmaWxlX2FycmF5WydmaWxlJ107CgogICAgICAgICAgICAgICAgaWYoJGZpbGUgPT0gJy4nIHx8ICRmaWxlID09ICcuLicgfHwgJGZpbGVfYXJyYXlbJ2V4dGVuc2lvbiddPT1maXhfc3RydG9sb3dlcih0cmFucygnVHlwZV9kaXInKSkgfHwgIWNoZWNrX2V4dGVuc2lvbigkZmlsZV9hcnJheVsnZXh0ZW5zaW9uJ10sJGNvbmZpZykgfHwgKCRmaWx0ZXIhPScnICYmICRuX2ZpbGVzPiRjb25maWdbJ2ZpbGVfbnVtYmVyX2xpbWl0X2pzJ10gJiYgc3RyaXBvcygkZmlsZSwkZmlsdGVyKT09PWZhbHNlKSkKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCAkY29uZmlnWydoaWRkZW5fZmlsZXMnXSBhcyAkaGlkZGVuX2ZpbGUgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCBmbm1hdGNoKCRoaWRkZW5fZmlsZSwgJGZpbGUsIEZOTV9QQVRITkFNRSkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIDI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGZpbGVuYW1lPXN1YnN0cigkZmlsZSwgMCwgJy0nIC4gKHN0cmxlbigkZmlsZV9hcnJheVsnZXh0ZW5zaW9uJ10pICsgMSkpOwogICAgICAgICAgICAgICAgaWYoc3RybGVuKCRmaWxlX2FycmF5WydleHRlbnNpb24nXSk9PT0wKXsKICAgICAgICAgICAgICAgICAgICAkZmlsZW5hbWUgPSAkZmlsZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmKCEkZnRwKXsKICAgICAgICAgICAgICAgICAgICAkZmlsZV9wYXRoPSRjb25maWdbJ2N1cnJlbnRfcGF0aCddLiRyZm1fc3ViZm9sZGVyLiRzdWJkaXIuJGZpbGU7CiAgICAgICAgICAgICAgICAgICAgLy9jaGVjayBpZiBmaWxlIGhhdmUgaWxsZWdhbCBjYXJhY3RlcgoKICAgICAgICAgICAgICAgICAgICBpZigkZmlsZSE9Zml4X2ZpbGVuYW1lKCRmaWxlLCRjb25maWcpKXsKICAgICAgICAgICAgICAgICAgICAgICAgJGZpbGUxPWZpeF9maWxlbmFtZSgkZmlsZSwkY29uZmlnKTsKICAgICAgICAgICAgICAgICAgICAgICAgJGZpbGVfcGF0aDE9KCRjb25maWdbJ2N1cnJlbnRfcGF0aCddLiRyZm1fc3ViZm9sZGVyLiRzdWJkaXIuJGZpbGUxKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYoZmlsZV9leGlzdHMoJGZpbGVfcGF0aDEpKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbmZvPXBhdGhpbmZvKCRmaWxlMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZShmaWxlX2V4aXN0cygkY29uZmlnWydjdXJyZW50X3BhdGgnXS4kcmZtX3N1YmZvbGRlci4kc3ViZGlyLiRpbmZvWydmaWxlbmFtZSddLiIuWyIuJGkuIl0uIi4kaW5mb1snZXh0ZW5zaW9uJ10pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGkrKzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmaWxlMT0kaW5mb1snZmlsZW5hbWUnXS4iLlsiLiRpLiJdLiIuJGluZm9bJ2V4dGVuc2lvbiddOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZpbGVfcGF0aDE9KCRjb25maWdbJ2N1cnJlbnRfcGF0aCddLiRyZm1fc3ViZm9sZGVyLiRzdWJkaXIuJGZpbGUxKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgJGZpbGVuYW1lPXN1YnN0cigkZmlsZTEsIDAsICctJyAuIChzdHJsZW4oJGZpbGVfYXJyYXlbJ2V4dGVuc2lvbiddKSArIDEpKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYoc3RybGVuKCRmaWxlX2FycmF5WydleHRlbnNpb24nXSk9PT0wKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmaWxlbmFtZSA9ICRmaWxlMTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZW5hbWVfZmlsZSgkZmlsZV9wYXRoLGZpeF9maWxlbmFtZSgkZmlsZW5hbWUsJGNvbmZpZyksJGZ0cCwkY29uZmlnKTsKICAgICAgICAgICAgICAgICAgICAgICAgJGZpbGU9JGZpbGUxOwogICAgICAgICAgICAgICAgICAgICAgICAkZmlsZV9hcnJheVsnZXh0ZW5zaW9uJ109Zml4X2ZpbGVuYW1lKCRmaWxlX2FycmF5WydleHRlbnNpb24nXSwkY29uZmlnKTsKICAgICAgICAgICAgICAgICAgICAgICAgJGZpbGVfcGF0aD0kZmlsZV9wYXRoMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAkZmlsZV9wYXRoID0gJGNvbmZpZ1snZnRwX2Jhc2VfdXJsJ10uJGNvbmZpZ1sndXBsb2FkX2RpciddLiRyZm1fc3ViZm9sZGVyLiRzdWJkaXIuJGZpbGU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJGlzX2ltZz1mYWxzZTsKICAgICAgICAgICAgICAgICRpc192aWRlbz1mYWxzZTsKICAgICAgICAgICAgICAgICRpc19hdWRpbz1mYWxzZTsKICAgICAgICAgICAgICAgICRzaG93X29yaWdpbmFsPWZhbHNlOwogICAgICAgICAgICAgICAgJHNob3dfb3JpZ2luYWxfbWluaT1mYWxzZTsKICAgICAgICAgICAgICAgICRtaW5pX3NyYz0iIjsKICAgICAgICAgICAgICAgICRzcmNfdGh1bWI9IiI7CiAgICAgICAgICAgICAgICBpZihpbl9hcnJheSgkZmlsZV9hcnJheVsnZXh0ZW5zaW9uJ10sICRjb25maWdbJ2V4dF9pbWcnXSkpewogICAgICAgICAgICAgICAgICAgICRzcmMgPSAkZmlsZV9wYXRoOwogICAgICAgICAgICAgICAgICAgICRpc19pbWc9dHJ1ZTsKCiAgICAgICAgICAgICAgICAgICAgJGltZ193aWR0aCA9ICRpbWdfaGVpZ2h0ID0gIiI7CiAgICAgICAgICAgICAgICAgICAgaWYoJGZ0cCl7CiAgICAgICAgICAgICAgICAgICAgICAgICRtaW5pX3NyYyA9ICRzcmNfdGh1bWIgPSAkY29uZmlnWydmdHBfYmFzZV91cmwnXS4kY29uZmlnWydmdHBfdGh1bWJzX2RpciddLiRzdWJkaXIuICRmaWxlOwogICAgICAgICAgICAgICAgICAgICAgICAkY3JlYXRpb25fdGh1bWJfcGF0aCA9ICIvIi4kY29uZmlnWydmdHBfYmFzZV9mb2xkZXInXS4kY29uZmlnWydmdHBfdGh1bWJzX2RpciddLiRzdWJkaXIuICRmaWxlOwogICAgICAgICAgICAgICAgICAgIH1lbHNlewoKICAgICAgICAgICAgICAgICAgICAgICAgJGNyZWF0aW9uX3RodW1iX3BhdGggPSAkbWluaV9zcmMgPSAkc3JjX3RodW1iID0gJHRodW1ic19wYXRoLiAkZmlsZTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZmlsZV9leGlzdHMoJHNyY190aHVtYikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY3JlYXRlX2ltZygkZmlsZV9wYXRoLCAkY3JlYXRpb25fdGh1bWJfcGF0aCwgMTIyLCA5MSwgJ2Nyb3AnLCAkY29uZmlnKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzcmNfdGh1bWIgPSAkbWluaV9zcmMgPSAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAvL2NoZWNrIGlmIGlzIHNtYWxsZXIgdGhhbiB0aHVtYgogICAgICAgICAgICAgICAgICAgICAgICBsaXN0KCRpbWdfd2lkdGgsICRpbWdfaGVpZ2h0LCAkaW1nX3R5cGUsICRhdHRyKT1AZ2V0aW1hZ2VzaXplKCRmaWxlX3BhdGgpOwogICAgICAgICAgICAgICAgICAgICAgICBpZigkaW1nX3dpZHRoPDEyMiAmJiAkaW1nX2hlaWdodDw5MSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3JjX3RodW1iPSRmaWxlX3BhdGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2hvd19vcmlnaW5hbD10cnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBpZigkaW1nX3dpZHRoPDQ1ICYmICRpbWdfaGVpZ2h0PDM4KXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRtaW5pX3NyYz0kY29uZmlnWydjdXJyZW50X3BhdGgnXS4kcmZtX3N1YmZvbGRlci4kc3ViZGlyLiRmaWxlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNob3dfb3JpZ2luYWxfbWluaT10cnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGlzX2ljb25fdGh1bWI9ZmFsc2U7CiAgICAgICAgICAgICAgICAkaXNfaWNvbl90aHVtYl9taW5pPWZhbHNlOwogICAgICAgICAgICAgICAgJG5vX3RodW1iPWZhbHNlOwogICAgICAgICAgICAgICAgaWYoJHNyY190aHVtYj09IiIpewogICAgICAgICAgICAgICAgICAgICRub190aHVtYj10cnVlOwogICAgICAgICAgICAgICAgICAgIGlmKGZpbGVfZXhpc3RzKCdpbWcvJy4kY29uZmlnWydpY29uX3RoZW1lJ10uJy8nLiRmaWxlX2FycmF5WydleHRlbnNpb24nXS4iLmpwZyIpKXsKICAgICAgICAgICAgICAgICAgICAgICAgJHNyY190aHVtYiA9J2ltZy8nLiRjb25maWdbJ2ljb25fdGhlbWUnXS4nLycuJGZpbGVfYXJyYXlbJ2V4dGVuc2lvbiddLiIuanBnIjsKICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgJHNyY190aHVtYiA9ICJpbWcvIi4kY29uZmlnWydpY29uX3RoZW1lJ10uIi9kZWZhdWx0LmpwZyI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRpc19pY29uX3RodW1iPXRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZigkbWluaV9zcmM9PSIiKXsKICAgICAgICAgICAgICAgICRpc19pY29uX3RodW1iX21pbmk9ZmFsc2U7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJGNsYXNzX2V4dD0wOwogICAgICAgICAgICAgICAgaWYgKGluX2FycmF5KCRmaWxlX2FycmF5WydleHRlbnNpb24nXSwgJGNvbmZpZ1snZXh0X3ZpZGVvJ10pKSB7CiAgICAgICAgICAgICAgICAgICAgJGNsYXNzX2V4dCA9IDQ7CiAgICAgICAgICAgICAgICAgICAgJGlzX3ZpZGVvPXRydWU7CiAgICAgICAgICAgICAgICB9ZWxzZWlmIChpbl9hcnJheSgkZmlsZV9hcnJheVsnZXh0ZW5zaW9uJ10sICRjb25maWdbJ2V4dF9pbWcnXSkpIHsKICAgICAgICAgICAgICAgICAgICAkY2xhc3NfZXh0ID0gMjsKICAgICAgICAgICAgICAgIH1lbHNlaWYgKGluX2FycmF5KCRmaWxlX2FycmF5WydleHRlbnNpb24nXSwgJGNvbmZpZ1snZXh0X211c2ljJ10pKSB7CiAgICAgICAgICAgICAgICAgICAgJGNsYXNzX2V4dCA9IDU7CiAgICAgICAgICAgICAgICAgICAgJGlzX2F1ZGlvPXRydWU7CiAgICAgICAgICAgICAgICB9ZWxzZWlmIChpbl9hcnJheSgkZmlsZV9hcnJheVsnZXh0ZW5zaW9uJ10sICRjb25maWdbJ2V4dF9taXNjJ10pKSB7CiAgICAgICAgICAgICAgICAgICAgJGNsYXNzX2V4dCA9IDM7CiAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAkY2xhc3NfZXh0ID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmKCghKCRfR0VUWyd0eXBlJ109PTEgJiYgISRpc19pbWcpICYmICEoKCRfR0VUWyd0eXBlJ109PTMgJiYgISRpc192aWRlbykgJiYgKCRfR0VUWyd0eXBlJ109PTMgJiYgISRpc19hdWRpbykpKSAmJiAkY2xhc3NfZXh0PjApewo/PgogICAgICAgICAgICA8bGkgY2xhc3M9ImZmLWl0ZW0tdHlwZS08P3BocCBlY2hvICRjbGFzc19leHQ7Pz4gZmlsZSA8P3BocCBpZighJGNvbmZpZ1snbXVsdGlwbGVfc2VsZWN0aW9uJ10peyA/Pm5vLXNlbGVjdG9yPD9waHAgfSA/PiIgIGRhdGEtbmFtZT0iPD9waHAgZWNobyAkZmlsZTs/PiIgPD9waHAgaWYoKCRmaWx0ZXIhPScnICYmIHN0cmlwb3MoJGZpbGUsJGZpbHRlcik9PT1mYWxzZSkpIGVjaG8gJyBzdHlsZT0iZGlzcGxheTpub25lOyInOz8+Pjw/cGhwCiAgICAgICAgICAgICRmaWxlX3ByZXZlbnRfcmVuYW1lID0gZmFsc2U7CiAgICAgICAgICAgICRmaWxlX3ByZXZlbnRfZGVsZXRlID0gZmFsc2U7CiAgICAgICAgICAgIGlmIChpc3NldCgkZmlsZVBlcm1pc3Npb25zWyRmaWxlXSkpIHsKICAgICAgICAgICAgaWYgKGlzc2V0KCRmaWxlUGVybWlzc2lvbnNbJGZpbGVdWydwcmV2ZW50X2R1cGxpY2F0ZSddKSAmJiAkZmlsZVBlcm1pc3Npb25zWyRmaWxlXVsncHJldmVudF9kdXBsaWNhdGUnXSkgewogICAgICAgICAgICAgICAgJGZpbGVzX3ByZXZlbnRfZHVwbGljYXRlW10gPSAkZmlsZTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkZmlsZV9wcmV2ZW50X3JlbmFtZSA9IGlzc2V0KCRmaWxlUGVybWlzc2lvbnNbJGZpbGVdWydwcmV2ZW50X3JlbmFtZSddKSAmJiAkZmlsZVBlcm1pc3Npb25zWyRmaWxlXVsncHJldmVudF9yZW5hbWUnXTsKICAgICAgICAgICAgJGZpbGVfcHJldmVudF9kZWxldGUgPSBpc3NldCgkZmlsZVBlcm1pc3Npb25zWyRmaWxlXVsncHJldmVudF9kZWxldGUnXSkgJiYgJGZpbGVQZXJtaXNzaW9uc1skZmlsZV1bJ3ByZXZlbnRfZGVsZXRlJ107CiAgICAgICAgICAgIH0KICAgICAgICAgICAgPz4KICAgICAgICAgICAgPGZpZ3VyZSBkYXRhLW5hbWU9Ijw/cGhwIGVjaG8gJGZpbGUgPz4iIGRhdGEtcGF0aD0iPD9waHAgZWNobyAkcmZtX3N1YmZvbGRlci4kc3ViZGlyLiRmaWxlOz8+IiBkYXRhLXR5cGU9Ijw/cGhwIGlmKCRpc19pbWcpeyBlY2hvICJpbWciOyB9ZWxzZXsgZWNobyAiZmlsZSI7IH0gPz4iPgogICAgICAgICAgICA8P3BocCBpZigkY29uZmlnWydtdWx0aXBsZV9zZWxlY3Rpb24nXSl7ID8+PGRpdiBjbGFzcz0ic2VsZWN0b3IiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9ImNvbnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBjbGFzcz0ic2VsZWN0aW9uIiBuYW1lPSJzZWxlY3Rpb25bXSIgdmFsdWU9Ijw/cGhwIGVjaG8gJGZpbGU7Pz4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNoZWNrbWFyayI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDw/cGhwIH0gPz4KICAgICAgICAgICAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgnJykiIGNsYXNzPSJsaW5rIiBkYXRhLWZpbGU9Ijw/cGhwIGVjaG8gJGZpbGU7Pz4iIGRhdGEtZnVuY3Rpb249Ijw/cGhwIGVjaG8gJGFwcGx5Oz8+Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImltZy1wcmVjb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgIDw/cGhwIGlmKCRpc19pY29uX3RodW1iKXsgPz48ZGl2IGNsYXNzPSJmaWxldHlwZSI+PD9waHAgZWNobyAkZmlsZV9hcnJheVsnZXh0ZW5zaW9uJ10gPz48L2Rpdj48P3BocCB9ID8+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW1nLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9Ijw/cGhwIGVjaG8gJHNob3dfb3JpZ2luYWwgPyAib3JpZ2luYWwiIDogIiIgPz48P3BocCBlY2hvICRpc19pY29uX3RodW1iID8gIiBpY29uIiA6ICIiID8+IiBkYXRhLXNyYz0iPD9waHAgZWNobyAkc3JjX3RodW1iOz8+Ij4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW1nLXByZWNvbnRhaW5lci1taW5pIDw/cGhwIGlmKCRpc19pbWcpIGVjaG8gJ29yaWdpbmFsLXRodW1iJyA/PiI+CiAgICAgICAgICAgICAgICAgICAgPD9waHAgaWYoJGNvbmZpZ1snbXVsdGlwbGVfc2VsZWN0aW9uJ10peyA/PgogICAgICAgICAgICAgICAgICAgIDw/cGhwIH0gPz4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWxldHlwZSA8P3BocCBlY2hvICRmaWxlX2FycmF5WydleHRlbnNpb24nXSA/PiA8P3BocCBpZihpbl9hcnJheSgkZmlsZV9hcnJheVsnZXh0ZW5zaW9uJ10sICRjb25maWdbJ2VkaXRhYmxlX3RleHRfZmlsZV9leHRzJ10pKSBlY2hvICdlZGl0LXRleHQtZmlsZS1hbGxvd2VkJyA/PiA8P3BocCBpZighJGlzX2ljb25fdGh1bWIpeyBlY2hvICJoaWRlIjsgfT8+Ij48P3BocCBlY2hvICRmaWxlX2FycmF5WydleHRlbnNpb24nXSA/PjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImltZy1jb250YWluZXItbWluaSI+CiAgICAgICAgICAgICAgICAgICAgPD9waHAgaWYoJG1pbmlfc3JjIT0iIil7ID8+CiAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz0iPD9waHAgZWNobyAkc2hvd19vcmlnaW5hbF9taW5pID8gIm9yaWdpbmFsIiA6ICIiID8+PD9waHAgZWNobyAkaXNfaWNvbl90aHVtYl9taW5pID8gIiBpY29uIiA6ICIiID8+IiBkYXRhLXNyYz0iPD9waHAgZWNobyAkbWluaV9zcmM7Pz4iPgogICAgICAgICAgICAgICAgICAgIDw/cGhwIH0gPz4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPD9waHAgaWYoJGlzX2ljb25fdGh1bWIpeyA/PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY292ZXIiPjwvZGl2PgogICAgICAgICAgICAgICAgPD9waHAgfSA/PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYm94Ij4KICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0iPD9waHAgaWYoJGNvbmZpZ1snZWxsaXBzaXNfdGl0bGVfYWZ0ZXJfZmlyc3Rfcm93J10peyBlY2hvICJlbGxpcHNpcyI7IH0gPz4iPgogICAgICAgICAgICAgICAgPD9waHAgZWNobyAkZmlsZW5hbWU7Pz48L2g0PgogICAgICAgICAgICAgICAgPC9kaXY+PC9hPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgY2xhc3M9ImRhdGUiIHZhbHVlPSI8P3BocCBlY2hvICRmaWxlX2FycmF5WydkYXRlJ107Pz4iLz4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGNsYXNzPSJzaXplIiB2YWx1ZT0iPD9waHAgZWNobyAkZmlsZV9hcnJheVsnc2l6ZSddID8+Ii8+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBjbGFzcz0iZXh0ZW5zaW9uIiB2YWx1ZT0iPD9waHAgZWNobyAkZmlsZV9hcnJheVsnZXh0ZW5zaW9uJ107Pz4iLz4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGNsYXNzPSJuYW1lIiB2YWx1ZT0iPD9waHAgZWNobyAkZmlsZV9hcnJheVsnZmlsZV9sY2FzZSddOz8+Ii8+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWxlLWRhdGUiPjw/cGhwIGVjaG8gZGF0ZSh0cmFucygnRGF0ZV90eXBlJyksJGZpbGVfYXJyYXlbJ2RhdGUnXSk/PjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmlsZS1zaXplIj48P3BocCBlY2hvIG1ha2VTaXplKCRmaWxlX2FycmF5WydzaXplJ10pPz48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J2ltZy1kaW1lbnNpb24nPjw/cGhwIGlmKCRpc19pbWcpeyBlY2hvICRpbWdfd2lkdGguIngiLiRpbWdfaGVpZ2h0OyB9ID8+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdmaWxlLWV4dGVuc2lvbic+PD9waHAgZWNobyAkZmlsZV9hcnJheVsnZXh0ZW5zaW9uJ107Pz48L2Rpdj4KICAgICAgICAgICAgICAgIDxmaWdjYXB0aW9uPgogICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iZm9yY2VfZG93bmxvYWQucGhwIiBtZXRob2Q9InBvc3QiIGNsYXNzPSJkb3dubG9hZC1mb3JtIiBpZD0iZm9ybTw/cGhwIGVjaG8gJG51Oz8+Ij4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJwYXRoIiB2YWx1ZT0iPD9waHAgZWNobyAkcmZtX3N1YmZvbGRlci4kc3ViZGlyPz4iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBjbGFzcz0ibmFtZV9kb3dubG9hZCIgbmFtZT0ibmFtZSIgdmFsdWU9Ijw/cGhwIGVjaG8gJGZpbGU/PiIvPgoKICAgICAgICAgICAgICAgICAgICA8YSB0aXRsZT0iPD9waHAgZWNobyB0cmFucygnRG93bmxvYWQnKT8+IiBjbGFzcz0idGlwLXJpZ2h0IiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoJycpIiA8P3BocCBpZigkY29uZmlnWydkb3dubG9hZF9maWxlcyddKSBlY2hvICJvbmNsaWNrPVwiJCgnI2Zvcm0iLiRudS4iJykuc3VibWl0KCk7XCIiID8+PjxpIGNsYXNzPSJpY29uLWRvd25sb2FkIDw/cGhwIGlmKCEkY29uZmlnWydkb3dubG9hZF9maWxlcyddKSBlY2hvICdpY29uLXdoaXRlJzsgPz4iPjwvaT48L2E+CgogICAgICAgICAgICAgICAgICAgIDw/cGhwIGlmKCRpc19pbWcgJiYgJHNyY190aHVtYiE9IiIpeyA/PgogICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJ0aXAtcmlnaHQgcHJldmlldyIgdGl0bGU9Ijw/cGhwIGVjaG8gdHJhbnMoJ1ByZXZpZXcnKT8+IiBkYXRhLWZlYXRoZXJsaWdodD0iPD9waHAgZWNobyAkc3JjOz8+IiAgaHJlZj0iIyI+PGkgY2xhc3M9IiBpY29uLWV5ZS1vcGVuIj48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgIDw/cGhwIH1lbHNlaWYoKCRpc192aWRlbyB8fCAkaXNfYXVkaW8pICYmIGluX2FycmF5KCRmaWxlX2FycmF5WydleHRlbnNpb24nXSwkY29uZmlnWydqcGxheWVyX2V4dHMnXSkpeyA/PgogICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJ0aXAtcmlnaHQgbW9kYWxBViA8P3BocCBpZigkaXNfYXVkaW8peyBlY2hvICJhdWRpbyI7IH1lbHNleyBlY2hvICJ2aWRlbyI7IH0gPz4iCiAgICAgICAgICAgICAgICAgICAgdGl0bGU9Ijw/cGhwIGVjaG8gdHJhbnMoJ1ByZXZpZXcnKT8+IiBkYXRhLXVybD0iYWpheF9jYWxscy5waHA/YWN0aW9uPW1lZGlhX3ByZXZpZXcmdGl0bGU9PD9waHAgZWNobyAkZmlsZW5hbWU7Pz4mZmlsZT08P3BocCBlY2hvICRyZm1fc3ViZm9sZGVyLiRzdWJkaXIuJGZpbGU7Pz4iCiAgICAgICAgICAgICAgICAgICAgaHJlZj0iamF2YXNjcmlwdDp2b2lkKCcnKTsiID48aSBjbGFzcz0iIGljb24tZXllLW9wZW4iPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgPD9waHAgfWVsc2VpZihpbl9hcnJheSgkZmlsZV9hcnJheVsnZXh0ZW5zaW9uJ10sJGNvbmZpZ1snY2FkX2V4dHMnXSkpeyA/PgogICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJ0aXAtcmlnaHQgZmlsZS1wcmV2aWV3LWJ0biIgdGl0bGU9Ijw/cGhwIGVjaG8gdHJhbnMoJ1ByZXZpZXcnKT8+IiBkYXRhLXVybD0iYWpheF9jYWxscy5waHA/YWN0aW9uPWNhZF9wcmV2aWV3JnRpdGxlPTw/cGhwIGVjaG8gJGZpbGVuYW1lOz8+JmZpbGU9PD9waHAgZWNobyAkcmZtX3N1YmZvbGRlci4kc3ViZGlyLiRmaWxlOz8+IgogICAgICAgICAgICAgICAgICAgIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgnJyk7IiA+PGkgY2xhc3M9IiBpY29uLWV5ZS1vcGVuIj48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgIDw/cGhwIH1lbHNlaWYoJGNvbmZpZ1sncHJldmlld190ZXh0X2ZpbGVzJ10gJiYgaW5fYXJyYXkoJGZpbGVfYXJyYXlbJ2V4dGVuc2lvbiddLCRjb25maWdbJ3ByZXZpZXdhYmxlX3RleHRfZmlsZV9leHRzJ10pKXsgPz4KICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0idGlwLXJpZ2h0IGZpbGUtcHJldmlldy1idG4iIHRpdGxlPSI8P3BocCBlY2hvIHRyYW5zKCdQcmV2aWV3Jyk/PiIgZGF0YS11cmw9ImFqYXhfY2FsbHMucGhwP2FjdGlvbj1nZXRfZmlsZSZzdWJfYWN0aW9uPXByZXZpZXcmcHJldmlld19tb2RlPXRleHQmdGl0bGU9PD9waHAgZWNobyAkZmlsZW5hbWU7Pz4mZmlsZT08P3BocCBlY2hvICRyZm1fc3ViZm9sZGVyLiRzdWJkaXIuJGZpbGU7Pz4iCiAgICAgICAgICAgICAgICAgICAgaHJlZj0iamF2YXNjcmlwdDp2b2lkKCcnKTsiID48aSBjbGFzcz0iIGljb24tZXllLW9wZW4iPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgPD9waHAgfWVsc2VpZigkY29uZmlnWydnb29nbGVkb2NfZW5hYmxlZCddICYmIGluX2FycmF5KCRmaWxlX2FycmF5WydleHRlbnNpb24nXSwkY29uZmlnWydnb29nbGVkb2NfZmlsZV9leHRzJ10pKXsgPz4KICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0idGlwLXJpZ2h0IGZpbGUtcHJldmlldy1idG4iIHRpdGxlPSI8P3BocCBlY2hvIHRyYW5zKCdQcmV2aWV3Jyk/PiIgZGF0YS11cmw9ImFqYXhfY2FsbHMucGhwP2FjdGlvbj1nZXRfZmlsZSZzdWJfYWN0aW9uPXByZXZpZXcmcHJldmlld19tb2RlPWdvb2dsZSZ0aXRsZT08P3BocCBlY2hvICRmaWxlbmFtZTs/PiZmaWxlPTw/cGhwIGVjaG8gJHJmbV9zdWJmb2xkZXIuJHN1YmRpci4kZmlsZTs/PiIKICAgICAgICAgICAgICAgICAgICBocmVmPSJkb2NzLmdvb2dsZS5jb207IiA+PGkgY2xhc3M9IiBpY29uLWV5ZS1vcGVuIj48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgIDw/cGhwIH1lbHNleyA/PgogICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJwcmV2aWV3IGRpc2FibGVkIj48aSBjbGFzcz0iaWNvbi1leWUtb3BlbiBpY29uLXdoaXRlIj48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgIDw/cGhwIH0gPz4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoJycpIiBjbGFzcz0idGlwLWxlZnQgZWRpdC1idXR0b24gcmVuYW1lLWZpbGUtcGF0aHMgPD9waHAgaWYoJGNvbmZpZ1sncmVuYW1lX2ZpbGVzJ10gJiYgISRmaWxlX3ByZXZlbnRfcmVuYW1lKSBlY2hvICJyZW5hbWUtZmlsZSI7Pz4iIHRpdGxlPSI8P3BocCBlY2hvIHRyYW5zKCdSZW5hbWUnKT8+IiBkYXRhLWZvbGRlcj0iMCIgZGF0YS1wZXJtaXNzaW9ucz0iPD9waHAgZWNobyAkZmlsZV9hcnJheVsncGVybWlzc2lvbnMnXTsgPz4iPgogICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLXBlbmNpbCA8P3BocCBpZighJGNvbmZpZ1sncmVuYW1lX2ZpbGVzJ10gfHwgJGZpbGVfcHJldmVudF9yZW5hbWUpIGVjaG8gJ2ljb24td2hpdGUnOz8+Ij48L2k+PC9hPgoKICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoJycpIiBjbGFzcz0idGlwLWxlZnQgZXJhc2UtYnV0dG9uIDw/cGhwIGlmKCRjb25maWdbJ2RlbGV0ZV9maWxlcyddICYmICEkZmlsZV9wcmV2ZW50X2RlbGV0ZSkgZWNobyAiZGVsZXRlLWZpbGUiOz8+IiB0aXRsZT0iPD9waHAgZWNobyB0cmFucygnRXJhc2UnKT8+IiBkYXRhLWNvbmZpcm09Ijw/cGhwIGVjaG8gdHJhbnMoJ0NvbmZpcm1fZGVsJyk7Pz4iPgogICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLXRyYXNoIDw/cGhwIGlmKCEkY29uZmlnWydkZWxldGVfZmlsZXMnXSB8fCAkZmlsZV9wcmV2ZW50X2RlbGV0ZSkgZWNobyAnaWNvbi13aGl0ZSc7Pz4iPjwvaT4KICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgPC9maWdjYXB0aW9uPgogICAgICAgICAgICA8L2ZpZ3VyZT4KICAgICAgICA8L2xpPgogICAgICAgICAgICA8P3BocAogICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICA/PjwvZGl2PgogICAgICAgIDwvdWw+CiAgICAgICAgPD9waHAgfSA/PgogICAgPC9kaXY+CiAgICA8L2Rpdj4KPC9kaXY+Cgo8c2NyaXB0PgogICAgdmFyIGZpbGVzX3ByZXZlbnRfZHVwbGljYXRlID0gW107CiAgICA8P3BocCBmb3JlYWNoICgkZmlsZXNfcHJldmVudF9kdXBsaWNhdGUgYXMgJGtleSA9PiAkdmFsdWUpOiA/PgogICAgZmlsZXNfcHJldmVudF9kdXBsaWNhdGVbPD9waHAgZWNobyAka2V5Oz8+XSA9ICc8P3BocCBlY2hvICR2YWx1ZTs/Pic7CiAgICA8P3BocCBlbmRmb3JlYWNoOz8+Cjwvc2NyaXB0PgoKICAgIDwhLS0gbG9hZGluZyBkaXYgc3RhcnQgLS0+CiAgICA8ZGl2IGlkPSJsb2FkaW5nX2NvbnRhaW5lciIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgogICAgICAgIDxkaXYgaWQ9ImxvYWRpbmciIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiMwMDA7IHBvc2l0aW9uOmZpeGVkOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgdG9wOjBweDsgbGVmdDowcHg7ei1pbmRleDoxMDAwMDAiPjwvZGl2PgogICAgICAgIDxpbWcgaWQ9ImxvYWRpbmdfYW5pbWF0aW9uIiBzcmM9ImltZy9zdG9yaW5nX2FuaW1hdGlvbi5naWYiIGFsdD0ibG9hZGluZyIgc3R5bGU9InotaW5kZXg6MTAwMDE7IG1hcmdpbi1sZWZ0Oi0zMnB4OyBtYXJnaW4tdG9wOi0zMnB4OyBwb3NpdGlvbjpmaXhlZDsgbGVmdDo1MCU7IHRvcDo1MCUiPgogICAgPC9kaXY+CiAgICA8IS0tIGxvYWRpbmcgZGl2IGVuZCAtLT4KCiAgICA8IS0tIHBsYXllciBkaXYgc3RhcnQgLS0+CiAgICA8ZGl2IGNsYXNzPSJtb2RhbCBoaWRlIiBpZD0icHJldmlld0FWIj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgogICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvYnV0dG9uPgogICAgICAgICAgICA8aDM+PD9waHAgZWNobyB0cmFucygnUHJldmlldycpOyA/PjwvaDM+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCBib2R5LXByZXZpZXciPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDwhLS0gcGxheWVyIGRpdiBlbmQgLS0+CiAgICA8P3BocCBpZiAoICRjb25maWdbJ3R1aV9hY3RpdmUnXSApIHsgPz4KCiAgICAgICAgPGRpdiBpZD0idHVpLWltYWdlLWVkaXRvciIgc3R5bGU9ImhlaWdodDogODAwcHg7IiBjbGFzcz0iaGlkZSI+CiAgICAgICAgICAgIDxjYW52YXM+PC9jYW52YXM+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxzY3JpcHQ+CiAgICAgICAgICAgIHZhciB0dWlUaGVtZSA9IHsKICAgICAgICAgICAgICAgIDw/cGhwIGZvcmVhY2ggKCRjb25maWdbJ3R1aV9kZWZhdWx0c19jb25maWcnXSBhcyAkYW9wdF9rZXkgPT4gJGFvcHRfdmFsKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAhZW1wdHkoJGFvcHRfdmFsKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiJyRhb3B0X2tleSc6Ii5qc29uX2VuY29kZSgkYW9wdF92YWwpLiIsIjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9ID8+CiAgICAgICAgICAgIH07IAogICAgICAgIDwvc2NyaXB0PgoKICAgICAgICA8c2NyaXB0PgogICAgICAgIGlmIChpbWFnZV9lZGl0b3IpIHsgCiAgICAgICAgICAgIC8vVFVJIGluaXRpYWwgaW5pdCB3aXRoIGEgYmxhbmsgaW1hZ2UgKE5lZWRzIHRvIGJlIGluaXRpYXRlZCBiZWZvcmUgYSBkeW5hbWljIGltYWdlIGNhbiBiZSBsb2FkZWQgaW50byBpdCkKICAgICAgICAgICAgdmFyIGltYWdlRWRpdG9yID0gbmV3IHR1aS5JbWFnZUVkaXRvcignI3R1aS1pbWFnZS1lZGl0b3InLCB7CiAgICAgICAgICAgICAgICBpbmNsdWRlVUk6IHsKICAgICAgICAgICAgICAgICAgICAgbG9hZEltYWdlOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6ICdkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhBUUFCQUlBQUFBQUFBUC8vL3lINUJBRUFBQUFBTEFBQUFBQUJBQUVBQUFJQlJBQTcnLAogICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnQmxhbmsnCiAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgIHRoZW1lOiB0dWlUaGVtZSwKICAgICAgICAgICAgICAgICAgICAgaW5pdE1lbnU6ICdmaWx0ZXInLAogICAgICAgICAgICAgICAgICAgICBtZW51QmFyUG9zaXRpb246ICc8P3BocCBlY2hvICRjb25maWdbJ3R1aV9wb3NpdGlvbiddID8+JwogICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB1c2FnZVN0YXRpc3RpY3M6IGZhbHNlLAogICAgICAgICAgICAgICAgY3NzTWF4V2lkdGg6IDEwMDAsIC8vIENvbXBvbmVudCBkZWZhdWx0IHZhbHVlOiAxMDAwCiAgICAgICAgICAgICAgICBjc3NNYXhIZWlnaHQ6IDgwMCwgIC8vIENvbXBvbmVudCBkZWZhdWx0IHZhbHVlOiA4MDAKICAgICAgICAgICAgICAgIHNlbGVjdGlvblN0eWxlOiB7CiAgICAgICAgICAgICAgICAgICAgY29ybmVyU2l6ZTogMjAsCiAgICAgICAgICAgICAgICAgICAgcm90eGF0aW5nUG9pbnRPZmZzZXQ6IDcwCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAvL2NhY2hlIGxvYWRlZCBpbWFnZQogICAgICAgICAgICBpbWFnZUVkaXRvci5sb2FkSW1hZ2VGcm9tVVJMID0gKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGNhY2hlZF9mdW5jdGlvbiA9IGltYWdlRWRpdG9yLmxvYWRJbWFnZUZyb21VUkw7CiAgICAgICAgICAgICAgICBmdW5jdGlvbiB3YWl0VW50aWxJbWFnZUVkaXRvcklzVW5sb2NrZWQoaW1hZ2VFZGl0b3IpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUscmVqZWN0KT0+ewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnRlcnZhbCA9IHNldEludGVydmFsKCgpPT57CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWltYWdlRWRpdG9yLl9pbnZva2VyLl9pc0xvY2tlZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTAwKTsKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB3YWl0VW50aWxJbWFnZUVkaXRvcklzVW5sb2NrZWQoaW1hZ2VFZGl0b3IpLnRoZW4oKCk9PmNhY2hlZF9mdW5jdGlvbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpKTsKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0pKCk7CgogICAgICAgICAgICAvL1JlcGxhY2UgTG9hZCBidXR0b24gd2l0aCBleGl0IGJ1dHRvbgogICAgICAgICAgICAkKCcudHVpLWltYWdlLWVkaXRvci1oZWFkZXItYnV0dG9ucyBkaXYnKS4KICAgICAgICAgICAgcmVwbGFjZVdpdGgoJzxidXR0b24gY2xhc3M9InR1aS1pbWFnZS1lZGl0b3ItZXhpdC1idG4iID48P3BocCBlY2hvIHRyYW5zKCdJbWFnZV9FZGl0b3JfRXhpdCcpOz8+PC9idXR0b24+Jyk7CiAgICAgICAgICAgICQoJy50dWktaW1hZ2UtZWRpdG9yLWV4aXQtYnRuJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBleGl0VFVJKCk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAvL1JlcGxhY2UgZG93bmxvYWQgYnV0dG9uIHdpdGggc2F2ZQogICAgICAgICAgICAkKCcudHVpLWltYWdlLWVkaXRvci1kb3dubG9hZC1idG4nKS4KICAgICAgICAgICAgcmVwbGFjZVdpdGgoJzxidXR0b24gY2xhc3M9InR1aS1pbWFnZS1lZGl0b3Itc2F2ZS1idG4iID48P3BocCBlY2hvIHRyYW5zKCdJbWFnZV9FZGl0b3JfU2F2ZScpOz8+PC9idXR0b24+Jyk7CiAgICAgICAgICAgICQoJy50dWktaW1hZ2UtZWRpdG9yLXNhdmUtYnRuJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBzYXZlVFVJKCk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgZnVuY3Rpb24gZXhpdFRVSSgpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGltYWdlRWRpdG9yLmNsZWFyT2JqZWN0cygpOwogICAgICAgICAgICAgICAgaW1hZ2VFZGl0b3IuZGlzY2FyZFNlbGVjdGlvbigpOwogICAgICAgICAgICAgICAgJCgnI3R1aS1pbWFnZS1lZGl0b3InKS5hZGRDbGFzcygnaGlkZScpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBzYXZlVFVJKCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgc2hvd19hbmltYXRpb24oKTsKICAgICAgICAgICAgICAgIG5ld1VSTCA9IGltYWdlRWRpdG9yLnRvRGF0YVVSTCgpOwogICAgICAgICAgICAgICAgJC5hamF4KHsKICAgICAgICAgICAgICAgICAgICB0eXBlOiAiUE9TVCIsCiAgICAgICAgICAgICAgICAgICAgdXJsOiAiYWpheF9jYWxscy5waHA/YWN0aW9uPXNhdmVfaW1nIiwKICAgICAgICAgICAgICAgICAgICBkYXRhOiB7IHVybDogbmV3VVJMLCBwYXRoOiQoJyNzdWJfZm9sZGVyJykudmFsKCkrJCgnI2ZsZHJfdmFsdWUnKS52YWwoKSwgbmFtZTokKCcjdHVpLWltYWdlLWVkaXRvcicpLmF0dHIoJ2RhdGEtbmFtZScpIH0KICAgICAgICAgICAgICAgIH0pLmRvbmUoZnVuY3Rpb24oIG1zZyApIHsKICAgICAgICAgICAgICAgICAgICBleGl0VFVJKCk7CiAgICAgICAgICAgICAgICAgICAgZCA9IG5ldyBEYXRlKCk7CiAgICAgICAgICAgICAgICAgICAgJCgiZmlndXJlW2RhdGEtbmFtZT0nIiskKCcjdHVpLWltYWdlLWVkaXRvcicpLmF0dHIoJ2RhdGEtbmFtZScpKyInXSIpLmZpbmQoJy5pbWctY29udGFpbmVyIGltZycpLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoJ3NyYycsJCh0aGlzKS5hdHRyKCdzcmMnKSsiPyIrZC5nZXRUaW1lKCkpOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICQoImZpZ3VyZVtkYXRhLW5hbWU9JyIrJCgnI3R1aS1pbWFnZS1lZGl0b3InKS5hdHRyKCdkYXRhLW5hbWUnKSsiJ10iKS5maW5kKCdmaWdjYXB0aW9uIGEucHJldmlldycpLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoJ2RhdGEtdXJsJywkKHRoaXMpLmRhdGEoJ3VybCcpKyI/IitkLmdldFRpbWUoKSk7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgaGlkZV9hbmltYXRpb24oKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIDwvc2NyaXB0PgogICAgPD9waHAgfSA/PgogICAgPHNjcmlwdD4KICAgICAgICB2YXIgdWEgPSBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCk7CiAgICAgICAgdmFyIGlzQW5kcm9pZCA9IHVhLmluZGV4T2YoImFuZHJvaWQiKSA+IC0xOyAvLyYmIHVhLmluZGV4T2YoIm1vYmlsZSIpOwogICAgICAgIGlmIChpc0FuZHJvaWQpIHsKICAgICAgICAgICAgJCgnbGknKS5kcmFnZ2FibGUoe2Rpc2FibGVkOiB0cnVlfSk7CiAgICAgICAgfQogICAgPC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPgo=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/execute.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGNvbmZpZyA9IGluY2x1ZGUgJ2NvbmZpZy9jb25maWcucGhwJzsKCmluY2x1ZGUgJ2luY2x1ZGUvdXRpbHMucGhwJzsKCmlmICgkX1NFU1NJT05bJ1JGJ11bInZlcmlmeSJdICE9ICJSRVNQT05TSVZFZmlsZW1hbmFnZXIiKSB7CiAgICByZXNwb25zZSh0cmFucygnZm9yYmlkZGVuJykgLiBBZGRFcnJvckxvY2F0aW9uKCkpLT5zZW5kKCk7CiAgICBleGl0Owp9CgppZiAoIWNoZWNrUmVsYXRpdmVQYXRoKCRfUE9TVFsncGF0aCddKSkgewogICAgcmVzcG9uc2UodHJhbnMoJ3dyb25nIHBhdGgnKSAuIEFkZEVycm9yTG9jYXRpb24oKSktPnNlbmQoKTsKICAgIGV4aXQ7Cn0KCmlmIChpc3NldCgkX1NFU1NJT05bJ1JGJ11bJ2xhbmd1YWdlJ10pICYmIGZpbGVfZXhpc3RzKCdsYW5nLycgLiBiYXNlbmFtZSgkX1NFU1NJT05bJ1JGJ11bJ2xhbmd1YWdlJ10pIC4gJy5waHAnKSkgewogICAgJGxhbmd1YWdlcyA9IGluY2x1ZGUgJ2xhbmcvbGFuZ3VhZ2VzLnBocCc7CiAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygkX1NFU1NJT05bJ1JGJ11bJ2xhbmd1YWdlJ10sICRsYW5ndWFnZXMpKSB7CiAgICAgICAgaW5jbHVkZSAnbGFuZy8nIC4gYmFzZW5hbWUoJF9TRVNTSU9OWydSRiddWydsYW5ndWFnZSddKSAuICcucGhwJzsKICAgIH0gZWxzZSB7CiAgICAgICAgcmVzcG9uc2UodHJhbnMoJ0xhbmdfTm90X0ZvdW5kJykgLiBBZGRFcnJvckxvY2F0aW9uKCkpLT5zZW5kKCk7CiAgICAgICAgZXhpdDsKICAgIH0KfSBlbHNlIHsKICAgIHJlc3BvbnNlKHRyYW5zKCdMYW5nX05vdF9Gb3VuZCcpIC4gQWRkRXJyb3JMb2NhdGlvbigpKS0+c2VuZCgpOwogICAgZXhpdDsKfQoKJGZ0cCA9IGZ0cF9jb24oJGNvbmZpZyk7CgokYmFzZSA9ICRjb25maWdbJ2N1cnJlbnRfcGF0aCddOwokcGF0aCA9ICRiYXNlIC4gJF9QT1NUWydwYXRoJ107CiRjeWNsZSA9IHRydWU7CiRtYXhfY3ljbGVzID0gNTA7CiRpID0gMDsKCndoaWxlICgkY3ljbGUgJiYgJGkgPCAkbWF4X2N5Y2xlcykgewogICAgJGkrKzsKICAgIGlmICgkcGF0aCA9PSAkYmFzZSkgewogICAgICAgICRjeWNsZSA9IGZhbHNlOwogICAgfQoKICAgIGlmIChmaWxlX2V4aXN0cygkcGF0aCAuICJjb25maWcucGhwIikpIHsKICAgICAgICByZXF1aXJlX29uY2UgJHBhdGggLiAiY29uZmlnLnBocCI7CiAgICAgICAgJGN5Y2xlID0gZmFsc2U7CiAgICB9CiAgICAkcGF0aCA9IGZpeF9kaXJuYW1lKCRwYXRoKSAuICIvIjsKfQoKZnVuY3Rpb24gcmV0dXJuUGF0aHMoJF9wYXRoLCAkX25hbWUsICRjb25maWcpCnsKICAgIGdsb2JhbCAkZnRwOwogICAgJHBhdGggPSAkY29uZmlnWydjdXJyZW50X3BhdGgnXSAuICRfcGF0aDsKICAgICRwYXRoX3RodW1iID0gJGNvbmZpZ1sndGh1bWJzX2Jhc2VfcGF0aCddIC4gJF9wYXRoOwogICAgJG5hbWUgPSBudWxsOwogICAgaWYgKCRmdHApIHsKICAgICAgICAkcGF0aCA9ICRjb25maWdbJ2Z0cF9iYXNlX2ZvbGRlciddIC4gJGNvbmZpZ1sndXBsb2FkX2RpciddIC4gJF9wYXRoOwogICAgICAgICRwYXRoX3RodW1iID0gJGNvbmZpZ1snZnRwX2Jhc2VfZm9sZGVyJ10gLiAkY29uZmlnWydmdHBfdGh1bWJzX2RpciddIC4gJF9wYXRoOwogICAgfQogICAgaWYgKCRfbmFtZSkgewogICAgICAgICRuYW1lID0gZml4X2ZpbGVuYW1lKCRfbmFtZSwgJGNvbmZpZyk7CiAgICAgICAgaWYgKHN0cnBvcygkbmFtZSwgJy4uLycpICE9PSBmYWxzZSB8fCBzdHJwb3MoJG5hbWUsICcuLlxcJykgIT09IGZhbHNlKSB7CiAgICAgICAgICAgIHJlc3BvbnNlKHRyYW5zKCd3cm9uZyBuYW1lJykgLiBBZGRFcnJvckxvY2F0aW9uKCkpLT5zZW5kKCk7CiAgICAgICAgICAgIGV4aXQ7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIGFycmF5KCRwYXRoLCAkcGF0aF90aHVtYiwgJG5hbWUpOwp9CgppZihpc3NldCgkX1BPU1RbJ3BhdGhzJ10pKXsKCSRwYXRocyA9ICRwYXRoc190aHVtYiA9ICRuYW1lcyA9IGFycmF5KCk7Cglmb3JlYWNoICgkX1BPU1RbJ3BhdGhzJ10gYXMgJGtleSA9PiAkcGF0aCkgewoJCWlmICghY2hlY2tSZWxhdGl2ZVBhdGgoJHBhdGgpKQoJCXsKCQkJcmVzcG9uc2UodHJhbnMoJ3dyb25nIHBhdGgnKS5BZGRFcnJvckxvY2F0aW9uKCkpLT5zZW5kKCk7CgkJCWV4aXQ7CgkJfQoJCSRuYW1lID0gbnVsbDsKCQlpZihpc3NldCgkX1BPU1RbJ25hbWVzJ11bJGtleV0pKXsKCQkJJG5hbWUgPSAkX1BPU1RbJ25hbWVzJ11bJGtleV07CgkJfQoJCWxpc3QoJHBhdGgsJHBhdGhfdGh1bWIsJG5hbWUpID0gcmV0dXJuUGF0aHMoJHBhdGgsJG5hbWUsJGNvbmZpZyk7CgkJJHBhdGhzW10gPSAkcGF0aDsKCQkkcGF0aHNfdGh1bWJbXSA9ICRwYXRoX3RodW1iOwoJCSRuYW1lcyA9ICRuYW1lOwoJfQp9IGVsc2UgewoJJG5hbWUgPSBudWxsOwoJaWYoaXNzZXQoJF9QT1NUWyduYW1lJ10pKXsKCQkkbmFtZSA9ICRfUE9TVFsnbmFtZSddOwoJfQoJbGlzdCgkcGF0aCwkcGF0aF90aHVtYiwkbmFtZSkgPSByZXR1cm5QYXRocygkX1BPU1RbJ3BhdGgnXSwkbmFtZSwkY29uZmlnKTsKCn0KCiRpbmZvID0gcGF0aGluZm8oJHBhdGgpOwppZiAoaXNzZXQoJGluZm9bJ2V4dGVuc2lvbiddKSAmJiAhKGlzc2V0KCRfR0VUWydhY3Rpb24nXSkgJiYgJF9HRVRbJ2FjdGlvbiddID09ICdkZWxldGVfZm9sZGVyJykgJiYKICAgICFjaGVja19leHRlbnNpb24oJGluZm9bJ2V4dGVuc2lvbiddLCAkY29uZmlnKQogICAgJiYgJF9HRVRbJ2FjdGlvbiddICE9ICdjcmVhdGVfZmlsZScpIHsKICAgIHJlc3BvbnNlKHRyYW5zKCd3cm9uZyBleHRlbnNpb24nKSAuIEFkZEVycm9yTG9jYXRpb24oKSktPnNlbmQoKTsKICAgIGV4aXQ7Cn0KCmlmIChpc3NldCgkX0dFVFsnYWN0aW9uJ10pKSB7CiAgICBzd2l0Y2ggKCRfR0VUWydhY3Rpb24nXSkgewogICAgICAgIGNhc2UgJ2RlbGV0ZV9maWxlJzoKCiAgICAgICAgICAgIGRlbGV0ZUZpbGUoJHBhdGgsICRwYXRoX3RodW1iLCAkY29uZmlnKTsKCiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICdkZWxldGVfZmlsZXMnOgogICAgICAgICAgICBmb3JlYWNoICgkcGF0aHMgYXMgJGtleSA9PiAkcCkgewogICAgICAgICAgICAgICAgZGVsZXRlRmlsZSgkcCwgJHBhdGhzX3RodW1iWyRrZXldLCAkY29uZmlnKTsKICAgICAgICAgICAgfQoKCQkJYnJlYWs7CgkJY2FzZSAnZGVsZXRlX2ZvbGRlcic6CgkJCWlmICgkY29uZmlnWydkZWxldGVfZm9sZGVycyddKXsKCgkJCQlpZigkZnRwKXsKCQkJCQlkZWxldGVEaXIoJHBhdGgsJGZ0cCwkY29uZmlnKTsKCQkJCQlkZWxldGVEaXIoJHBhdGhfdGh1bWIsJGZ0cCwkY29uZmlnKTsKCQkJCX1lbHNlewoJCQkJCWlmIChpc19kaXIoJHBhdGhfdGh1bWIpKQoJCQkJCXsKCQkJCQkJZGVsZXRlRGlyKCRwYXRoX3RodW1iLE5VTEwsJGNvbmZpZyk7CgkJCQkJfQoKCQkJCQlpZiAoaXNfZGlyKCRwYXRoKSkKCQkJCQl7CgkJCQkJCWRlbGV0ZURpcigkcGF0aCxOVUxMLCRjb25maWcpOwoJCQkJCQlpZiAoJGNvbmZpZ1snZml4ZWRfaW1hZ2VfY3JlYXRpb24nXSkKCQkJCQkJewoJCQkJCQkJZm9yZWFjaCgkY29uZmlnWydmaXhlZF9wYXRoX2Zyb21fZmlsZW1hbmFnZXInXSBhcyAkaz0+JHBhdGhzKXsKCQkJCQkJCQlpZiAoJHBhdGhzIT0iIiAmJiAkcGF0aHNbc3RybGVuKCRwYXRocyktMV0gIT0gIi8iKSAkcGF0aHMuPSIvIjsKCgkJCQkJCQkJJGJhc2VfZGlyPSRwYXRocy5zdWJzdHJfcmVwbGFjZSgkcGF0aCwgJycsIDAsIHN0cmxlbigkY29uZmlnWydjdXJyZW50X3BhdGgnXSkpOwoJCQkJCQkJCWlmIChpc19kaXIoJGJhc2VfZGlyKSkgZGVsZXRlRGlyKCRiYXNlX2RpcixOVUxMLCRjb25maWcpOwoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJfQoJCQkJfQoJCQl9CgkJCWJyZWFrOwoJCWNhc2UgJ2NyZWF0ZV9mb2xkZXInOgoJCQlpZiAoJGNvbmZpZ1snY3JlYXRlX2ZvbGRlcnMnXSkKCQkJewoKCQkJCSRuYW1lID0gZml4X2ZpbGVuYW1lKCRfUE9TVFsnbmFtZSddLCRjb25maWcpOwoJCQkJJHBhdGggLj0gJG5hbWU7CgkJCQkkcGF0aF90aHVtYiAuPSAkbmFtZTsKCQkJCSRyZXMgPSBjcmVhdGVfZm9sZGVyKGZpeF9wYXRoKCRwYXRoLCRjb25maWcpLGZpeF9wYXRoKCRwYXRoX3RodW1iLCRjb25maWcpLCRmdHAsJGNvbmZpZyk7CgkJCQlpZighJHJlcyl7CgkJCQkJcmVzcG9uc2UodHJhbnMoJ1JlbmFtZV9leGlzdGluZ19mb2xkZXInKS5BZGRFcnJvckxvY2F0aW9uKCkpLT5zZW5kKCk7CgkJCQl9CgkJCX0KCQkJYnJlYWs7CgkJY2FzZSAncmVuYW1lX2ZvbGRlcic6CgkJCWlmICgkY29uZmlnWydyZW5hbWVfZm9sZGVycyddKXsKICAgICAgICAgICAgICAgIGlmKCFpc19kaXIoJHBhdGgpKSB7CiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UodHJhbnMoJ3dyb25nIHBhdGgnKS5BZGRFcnJvckxvY2F0aW9uKCkpLT5zZW5kKCk7CiAgICAgICAgICAgICAgICAgICAgZXhpdDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRuYW1lID0gZml4X2ZpbGVuYW1lKCRuYW1lLCAkY29uZmlnKTsKICAgICAgICAgICAgICAgICRuYW1lID0gc3RyX3JlcGxhY2UoJy4nLCAnJywgJG5hbWUpOwoKICAgICAgICAgICAgICAgIGlmICghZW1wdHkoJG5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFyZW5hbWVfZm9sZGVyKCRwYXRoLCAkbmFtZSwgJGZ0cCwgJGNvbmZpZykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UodHJhbnMoJ1JlbmFtZV9leGlzdGluZ19mb2xkZXInKSAuIEFkZEVycm9yTG9jYXRpb24oKSktPnNlbmQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgZXhpdDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmVuYW1lX2ZvbGRlcigkcGF0aF90aHVtYiwgJG5hbWUsICRmdHAsICRjb25maWcpOwogICAgICAgICAgICAgICAgICAgIGlmICghJGZ0cCAmJiAkY29uZmlnWydmaXhlZF9pbWFnZV9jcmVhdGlvbiddKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRjb25maWdbJ2ZpeGVkX3BhdGhfZnJvbV9maWxlbWFuYWdlciddIGFzICRrID0+ICRwYXRocykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRwYXRocyAhPSAiIiAmJiAkcGF0aHNbc3RybGVuKCRwYXRocykgLSAxXSAhPSAiLyIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGF0aHMgLj0gIi8iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRiYXNlX2RpciA9ICRwYXRocyAuIHN1YnN0cl9yZXBsYWNlKCRwYXRoLCAnJywgMCwgc3RybGVuKCRjb25maWdbJ2N1cnJlbnRfcGF0aCddKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5hbWVfZm9sZGVyKCRiYXNlX2RpciwgJG5hbWUsICRmdHAsICRjb25maWcpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICByZXNwb25zZSh0cmFucygnRW1wdHlfbmFtZScpIC4gQWRkRXJyb3JMb2NhdGlvbigpKS0+c2VuZCgpOwogICAgICAgICAgICAgICAgICAgIGV4aXQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ2NyZWF0ZV9maWxlJzoKICAgICAgICAgICAgaWYgKCRjb25maWdbJ2NyZWF0ZV90ZXh0X2ZpbGVzJ10gPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICByZXNwb25zZShzcHJpbnRmKHRyYW5zKCdGaWxlX09wZW5fRWRpdF9Ob3RfQWxsb3dlZCcpLCBzdHJ0b2xvd2VyKHRyYW5zKCdFZGl0JykpKSAuIEFkZEVycm9yTG9jYXRpb24oKSktPnNlbmQoKTsKICAgICAgICAgICAgICAgIGV4aXQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICghaXNzZXQoJGNvbmZpZ1snZWRpdGFibGVfdGV4dF9maWxlX2V4dHMnXSkgfHwgIWlzX2FycmF5KCRjb25maWdbJ2VkaXRhYmxlX3RleHRfZmlsZV9leHRzJ10pKSB7CiAgICAgICAgICAgICAgICAkY29uZmlnWydlZGl0YWJsZV90ZXh0X2ZpbGVfZXh0cyddID0gYXJyYXkoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gY2hlY2sgaWYgdXNlciBzdXBwbGllZCBleHRlbnNpb24KICAgICAgICAgICAgaWYgKHN0cnBvcygkbmFtZSwgJy4nKSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgIHJlc3BvbnNlKHRyYW5zKCdOb19FeHRlbnNpb24nKSAuICcgJyAuIHNwcmludGYodHJhbnMoJ1ZhbGlkX0V4dGVuc2lvbnMnKSwgaW1wbG9kZSgnLCAnLCAkY29uZmlnWydlZGl0YWJsZV90ZXh0X2ZpbGVfZXh0cyddKSkgLiBBZGRFcnJvckxvY2F0aW9uKCkpLT5zZW5kKCk7CiAgICAgICAgICAgICAgICBleGl0OwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBjb3JyZWN0IG5hbWUKICAgICAgICAgICAgJG9sZF9uYW1lID0gJG5hbWU7CiAgICAgICAgICAgICRuYW1lID0gZml4X2ZpbGVuYW1lKCRuYW1lLCAkY29uZmlnKTsKICAgICAgICAgICAgaWYgKGVtcHR5KCRuYW1lKSkgewogICAgICAgICAgICAgICAgcmVzcG9uc2UodHJhbnMoJ0VtcHR5X25hbWUnKSAuIEFkZEVycm9yTG9jYXRpb24oKSktPnNlbmQoKTsKICAgICAgICAgICAgICAgIGV4aXQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIGNoZWNrIGV4dGVuc2lvbgogICAgICAgICAgICAkcGFydHMgPSBleHBsb2RlKCcuJywgJG5hbWUpOwogICAgICAgICAgICBpZiAoIWluX2FycmF5KGVuZCgkcGFydHMpLCAkY29uZmlnWydlZGl0YWJsZV90ZXh0X2ZpbGVfZXh0cyddKSkgewogICAgICAgICAgICAgICAgcmVzcG9uc2UodHJhbnMoJ0Vycm9yX2V4dGVuc2lvbicpIC4gJyAnIC4gc3ByaW50Zih0cmFucygnVmFsaWRfRXh0ZW5zaW9ucycpLCBpbXBsb2RlKCcsICcsICRjb25maWdbJ2VkaXRhYmxlX3RleHRfZmlsZV9leHRzJ10pKSAuIEFkZEVycm9yTG9jYXRpb24oKSwgNDAwKS0+c2VuZCgpOwogICAgICAgICAgICAgICAgZXhpdDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGNvbnRlbnQgPSAkX1BPU1RbJ25ld19jb250ZW50J107CgogICAgICAgICAgICBpZiAoJGZ0cCkgewogICAgICAgICAgICAgICAgJHRlbXAgPSB0ZW1wbmFtKCcvdG1wJywgJ1JGJyk7CiAgICAgICAgICAgICAgICBmaWxlX3B1dF9jb250ZW50cygkdGVtcCwgJGNvbnRlbnQpOwogICAgICAgICAgICAgICAgJGZ0cC0+cHV0KCIvIiAuICRwYXRoIC4gJG5hbWUsICR0ZW1wLCBGVFBfQklOQVJZKTsKICAgICAgICAgICAgICAgIHVubGluaygkdGVtcCk7CiAgICAgICAgICAgICAgICByZXNwb25zZSh0cmFucygnRmlsZV9TYXZlX09LJykpLT5zZW5kKCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAoIWNoZWNrcmVzdWx0aW5nc2l6ZShzdHJsZW4oJGNvbnRlbnQpKSkgewogICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlKHNwcmludGYodHJhbnMoJ21heF9zaXplX3JlYWNoZWQnKSwgJGNvbmZpZ1snTWF4U2l6ZVRvdGFsJ10pIC4gQWRkRXJyb3JMb2NhdGlvbigpKS0+c2VuZCgpOwogICAgICAgICAgICAgICAgICAgIGV4aXQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAvLyBmaWxlIGFscmVhZHkgZXhpc3RzCiAgICAgICAgICAgICAgICBpZiAoZmlsZV9leGlzdHMoJHBhdGggLiAkbmFtZSkpIHsKICAgICAgICAgICAgICAgICAgICByZXNwb25zZSh0cmFucygnUmVuYW1lX2V4aXN0aW5nX2ZpbGUnKSAuIEFkZEVycm9yTG9jYXRpb24oKSktPnNlbmQoKTsKICAgICAgICAgICAgICAgICAgICBleGl0OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmIChAZmlsZV9wdXRfY29udGVudHMoJHBhdGggLiAkbmFtZSwgJGNvbnRlbnQpID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlKHRyYW5zKCdGaWxlX1NhdmVfRXJyb3InKSAuIEFkZEVycm9yTG9jYXRpb24oKSktPnNlbmQoKTsKICAgICAgICAgICAgICAgICAgICBleGl0OwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAoaXNfZnVuY3Rpb25fY2FsbGFibGUoJ2NobW9kJykgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNobW9kKCRwYXRoIC4gJG5hbWUsIDA2NDQpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXNwb25zZSh0cmFucygnRmlsZV9TYXZlX09LJykpLT5zZW5kKCk7CiAgICAgICAgICAgICAgICAgICAgZXhpdDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ3JlbmFtZV9maWxlJzoKICAgICAgICAgICAgaWYgKCRjb25maWdbJ3JlbmFtZV9maWxlcyddKSB7CiAgICAgICAgICAgICAgICAkbmFtZSA9IGZpeF9maWxlbmFtZSgkbmFtZSwgJGNvbmZpZyk7CiAgICAgICAgICAgICAgICBpZiAoIWVtcHR5KCRuYW1lKSkgewogICAgICAgICAgICAgICAgICAgIGlmICghcmVuYW1lX2ZpbGUoJHBhdGgsICRuYW1lLCAkZnRwLCAkY29uZmlnKSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSh0cmFucygnUmVuYW1lX2V4aXN0aW5nX2ZpbGUnKSAuIEFkZEVycm9yTG9jYXRpb24oKSktPnNlbmQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgZXhpdDsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIHJlbmFtZV9maWxlKCRwYXRoX3RodW1iLCAkbmFtZSwgJGZ0cCwgJGNvbmZpZyk7CgogICAgICAgICAgICAgICAgICAgIGlmICgkY29uZmlnWydmaXhlZF9pbWFnZV9jcmVhdGlvbiddKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRpbmZvID0gcGF0aGluZm8oJHBhdGgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGNvbmZpZ1snZml4ZWRfcGF0aF9mcm9tX2ZpbGVtYW5hZ2VyJ10gYXMgJGsgPT4gJHBhdGhzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHBhdGhzICE9ICIiICYmICRwYXRoc1tzdHJsZW4oJHBhdGhzKSAtIDFdICE9ICIvIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXRocyAuPSAiLyI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGJhc2VfZGlyID0gJHBhdGhzIC4gc3Vic3RyX3JlcGxhY2UoJGluZm9bJ2Rpcm5hbWUnXSAuICIvIiwgJycsIDAsIHN0cmxlbigkY29uZmlnWydjdXJyZW50X3BhdGgnXSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbGVfZXhpc3RzKCRiYXNlX2RpciAuICRjb25maWdbJ2ZpeGVkX2ltYWdlX2NyZWF0aW9uX25hbWVfdG9fcHJlcGVuZCddWyRrXSAuICRpbmZvWydmaWxlbmFtZSddIC4gJGNvbmZpZ1snZml4ZWRfaW1hZ2VfY3JlYXRpb25fdG9fYXBwZW5kJ11bJGtdIC4gIi4iIC4gJGluZm9bJ2V4dGVuc2lvbiddKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmFtZV9maWxlKCRiYXNlX2RpciAuICRjb25maWdbJ2ZpeGVkX2ltYWdlX2NyZWF0aW9uX25hbWVfdG9fcHJlcGVuZCddWyRrXSAuICRpbmZvWydmaWxlbmFtZSddIC4gJGNvbmZpZ1snZml4ZWRfaW1hZ2VfY3JlYXRpb25fdG9fYXBwZW5kJ11bJGtdIC4gIi4iIC4gJGluZm9bJ2V4dGVuc2lvbiddLCAkY29uZmlnWydmaXhlZF9pbWFnZV9jcmVhdGlvbl9uYW1lX3RvX3ByZXBlbmQnXVska10gLiAkbmFtZSAuICRjb25maWdbJ2ZpeGVkX2ltYWdlX2NyZWF0aW9uX3RvX2FwcGVuZCddWyRrXSwgJGZ0cCwgJGNvbmZpZyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlKHRyYW5zKCdFbXB0eV9uYW1lJykgLiBBZGRFcnJvckxvY2F0aW9uKCkpLT5zZW5kKCk7CiAgICAgICAgICAgICAgICAgICAgZXhpdDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAnZHVwbGljYXRlX2ZpbGUnOgogICAgICAgICAgICBpZiAoJGNvbmZpZ1snZHVwbGljYXRlX2ZpbGVzJ10pIHsKICAgICAgICAgICAgICAgICRuYW1lID0gZml4X2ZpbGVuYW1lKCRuYW1lLCAkY29uZmlnKTsKICAgICAgICAgICAgICAgIGlmICghZW1wdHkoJG5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCEkZnRwICYmICFjaGVja3Jlc3VsdGluZ3NpemUoZmlsZXNpemUoJHBhdGgpKSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZShzcHJpbnRmKHRyYW5zKCdtYXhfc2l6ZV9yZWFjaGVkJyksICRjb25maWdbJ01heFNpemVUb3RhbCddKSAuIEFkZEVycm9yTG9jYXRpb24oKSktPnNlbmQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgZXhpdDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCFkdXBsaWNhdGVfZmlsZSgkcGF0aCwgJG5hbWUsICRmdHAsICRjb25maWcpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlKHRyYW5zKCdSZW5hbWVfZXhpc3RpbmdfZmlsZScpIC4gQWRkRXJyb3JMb2NhdGlvbigpKS0+c2VuZCgpOwogICAgICAgICAgICAgICAgICAgICAgICBleGl0OwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZHVwbGljYXRlX2ZpbGUoJHBhdGhfdGh1bWIsICRuYW1lLCAkZnRwLCAkY29uZmlnKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCEkZnRwICYmICRjb25maWdbJ2ZpeGVkX2ltYWdlX2NyZWF0aW9uJ10pIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGluZm8gPSBwYXRoaW5mbygkcGF0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRjb25maWdbJ2ZpeGVkX3BhdGhfZnJvbV9maWxlbWFuYWdlciddIGFzICRrID0+ICRwYXRocykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRwYXRocyAhPSAiIiAmJiAkcGF0aHNbc3RybGVuKCRwYXRocykgLSAxXSAhPSAiLyIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGF0aHMgLj0gIi8iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRiYXNlX2RpciA9ICRwYXRocyAuIHN1YnN0cl9yZXBsYWNlKCRpbmZvWydkaXJuYW1lJ10gLiAiLyIsICcnLCAwLCBzdHJsZW4oJGNvbmZpZ1snY3VycmVudF9wYXRoJ10pKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlsZV9leGlzdHMoJGJhc2VfZGlyIC4gJGNvbmZpZ1snZml4ZWRfaW1hZ2VfY3JlYXRpb25fbmFtZV90b19wcmVwZW5kJ11bJGtdIC4gJGluZm9bJ2ZpbGVuYW1lJ10gLiAkY29uZmlnWydmaXhlZF9pbWFnZV9jcmVhdGlvbl90b19hcHBlbmQnXVska10gLiAiLiIgLiAkaW5mb1snZXh0ZW5zaW9uJ10pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVwbGljYXRlX2ZpbGUoJGJhc2VfZGlyIC4gJGNvbmZpZ1snZml4ZWRfaW1hZ2VfY3JlYXRpb25fbmFtZV90b19wcmVwZW5kJ11bJGtdIC4gJGluZm9bJ2ZpbGVuYW1lJ10gLiAkY29uZmlnWydmaXhlZF9pbWFnZV9jcmVhdGlvbl90b19hcHBlbmQnXVska10gLiAiLiIgLiAkaW5mb1snZXh0ZW5zaW9uJ10sICRjb25maWdbJ2ZpeGVkX2ltYWdlX2NyZWF0aW9uX25hbWVfdG9fcHJlcGVuZCddWyRrXSAuICRuYW1lIC4gJGNvbmZpZ1snZml4ZWRfaW1hZ2VfY3JlYXRpb25fdG9fYXBwZW5kJ11bJGtdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UodHJhbnMoJ0VtcHR5X25hbWUnKSAuIEFkZEVycm9yTG9jYXRpb24oKSktPnNlbmQoKTsKICAgICAgICAgICAgICAgICAgICBleGl0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICdwYXN0ZV9jbGlwYm9hcmQnOgogICAgICAgICAgICBpZiAoIWlzc2V0KCRfU0VTU0lPTlsnUkYnXVsnY2xpcGJvYXJkX2FjdGlvbiddLCAkX1NFU1NJT05bJ1JGJ11bJ2NsaXBib2FyZCddWydwYXRoJ10pCiAgICAgICAgICAgICAgICB8fCAkX1NFU1NJT05bJ1JGJ11bJ2NsaXBib2FyZF9hY3Rpb24nXSA9PSAnJwogICAgICAgICAgICAgICAgfHwgJF9TRVNTSU9OWydSRiddWydjbGlwYm9hcmQnXVsncGF0aCddID09ICcnKSB7CiAgICAgICAgICAgICAgICByZXNwb25zZSgpLT5zZW5kKCk7CiAgICAgICAgICAgICAgICBleGl0OwogICAgICAgICAgICB9CgogICAgICAgICAgICAkYWN0aW9uID0gJF9TRVNTSU9OWydSRiddWydjbGlwYm9hcmRfYWN0aW9uJ107CiAgICAgICAgICAgICRkYXRhID0gJF9TRVNTSU9OWydSRiddWydjbGlwYm9hcmQnXTsKCgogICAgICAgICAgICBpZiAoJGZ0cCkgewogICAgICAgICAgICAgICAgaWYgKCRfUE9TVFsncGF0aCddICE9ICIiKSB7CiAgICAgICAgICAgICAgICAgICAgJHBhdGggLj0gRElSRUNUT1JZX1NFUEFSQVRPUjsKICAgICAgICAgICAgICAgICAgICAkcGF0aF90aHVtYiAuPSBESVJFQ1RPUllfU0VQQVJBVE9SOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHBhdGhfdGh1bWIgLj0gYmFzZW5hbWUoJGRhdGFbJ3BhdGgnXSk7CiAgICAgICAgICAgICAgICAkcGF0aCAuPSBiYXNlbmFtZSgkZGF0YVsncGF0aCddKTsKICAgICAgICAgICAgICAgICRkYXRhWydwYXRoX3RodW1iJ10gPSBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJGNvbmZpZ1snZnRwX2Jhc2VfZm9sZGVyJ10gLiAkY29uZmlnWydmdHBfdGh1bWJzX2RpciddIC4gJGRhdGFbJ3BhdGgnXTsKICAgICAgICAgICAgICAgICRkYXRhWydwYXRoJ10gPSBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJGNvbmZpZ1snZnRwX2Jhc2VfZm9sZGVyJ10gLiAkY29uZmlnWyd1cGxvYWRfZGlyJ10gLiAkZGF0YVsncGF0aCddOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGRhdGFbJ3BhdGhfdGh1bWInXSA9ICRjb25maWdbJ3RodW1ic19iYXNlX3BhdGgnXSAuICRkYXRhWydwYXRoJ107CiAgICAgICAgICAgICAgICAkZGF0YVsncGF0aCddID0gJGNvbmZpZ1snY3VycmVudF9wYXRoJ10gLiAkZGF0YVsncGF0aCddOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkcGluZm8gPSBwYXRoaW5mbygkZGF0YVsncGF0aCddKTsKCiAgICAgICAgICAgIC8vIHVzZXIgd2FudHMgdG8gcGFzdGUgdG8gdGhlIHNhbWUgZGlyLiBub3RoaW5nIHRvIGRvIGhlcmUuLi4KICAgICAgICAgICAgaWYgKCRwaW5mb1snZGlybmFtZSddID09IHJ0cmltKCRwYXRoLCBESVJFQ1RPUllfU0VQQVJBVE9SKSkgewogICAgICAgICAgICAgICAgcmVzcG9uc2UoKS0+c2VuZCgpOwogICAgICAgICAgICAgICAgZXhpdDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gdXNlciB3YW50cyB0byBwYXN0ZSBmb2xkZXIgdG8gaXQncyBvd24gc3ViIGZvbGRlci4uIGJhYWFhaC4KICAgICAgICAgICAgaWYgKGlzX2RpcigkZGF0YVsncGF0aCddKSAmJiBzdHJwb3MoJHBhdGgsICRkYXRhWydwYXRoJ10pICE9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgcmVzcG9uc2UoKS0+c2VuZCgpOwogICAgICAgICAgICAgICAgZXhpdDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gc29tZXRoaW5nIHRlcnJpYmx5IGdvbmUgd3JvbmcKICAgICAgICAgICAgaWYgKCRhY3Rpb24gIT0gJ2NvcHknICYmICRhY3Rpb24gIT0gJ2N1dCcpIHsKICAgICAgICAgICAgICAgIHJlc3BvbnNlKHRyYW5zKCd3cm9uZyBhY3Rpb24nKSAuIEFkZEVycm9yTG9jYXRpb24oKSktPnNlbmQoKTsKICAgICAgICAgICAgICAgIGV4aXQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCRmdHApIHsKICAgICAgICAgICAgICAgIGlmICgkYWN0aW9uID09ICdjb3B5JykgewogICAgICAgICAgICAgICAgICAgICR0bXAgPSB0aW1lKCkgLiBiYXNlbmFtZSgkZGF0YVsncGF0aCddKTsKICAgICAgICAgICAgICAgICAgICAkZnRwLT5nZXQoJHRtcCwgJGRhdGFbJ3BhdGgnXSwgRlRQX0JJTkFSWSk7CiAgICAgICAgICAgICAgICAgICAgJGZ0cC0+cHV0KERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkcGF0aCwgJHRtcCwgRlRQX0JJTkFSWSk7CiAgICAgICAgICAgICAgICAgICAgdW5saW5rKCR0bXApOwoKICAgICAgICAgICAgICAgICAgICBpZiAodXJsX2V4aXN0cygkZGF0YVsncGF0aF90aHVtYiddKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkdG1wID0gdGltZSgpIC4gYmFzZW5hbWUoJGRhdGFbJ3BhdGhfdGh1bWInXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIEAkZnRwLT5nZXQoJHRtcCwgJGRhdGFbJ3BhdGhfdGh1bWInXSwgRlRQX0JJTkFSWSk7CiAgICAgICAgICAgICAgICAgICAgICAgIEAkZnRwLT5wdXQoRElSRUNUT1JZX1NFUEFSQVRPUiAuICRwYXRoX3RodW1iLCAkdG1wLCBGVFBfQklOQVJZKTsKICAgICAgICAgICAgICAgICAgICAgICAgdW5saW5rKCR0bXApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZWlmICgkYWN0aW9uID09ICdjdXQnKSB7CiAgICAgICAgICAgICAgICAgICAgJGZ0cC0+cmVuYW1lKCRkYXRhWydwYXRoJ10sIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkcGF0aCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHVybF9leGlzdHMoJGRhdGFbJ3BhdGhfdGh1bWInXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgQCRmdHAtPnJlbmFtZSgkZGF0YVsncGF0aF90aHVtYiddLCBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJHBhdGhfdGh1bWIpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIC8vIGNoZWNrIGZvciB3cml0YWJpbGl0eQogICAgICAgICAgICAgICAgaWYgKGlzX3JlYWxseV93cml0YWJsZSgkcGF0aCkgPT09IGZhbHNlIHx8IGlzX3JlYWxseV93cml0YWJsZSgkcGF0aF90aHVtYikgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UodHJhbnMoJ0Rpcl9Ob19Xcml0ZScpIC4gJzxici8+JyAuIHN0cl9yZXBsYWNlKCcuLi8nLCAnJywgJHBhdGgpIC4gJzxici8+JyAuIHN0cl9yZXBsYWNlKCcuLi8nLCAnJywgJHBhdGhfdGh1bWIpIC4gQWRkRXJyb3JMb2NhdGlvbigpKS0+c2VuZCgpOwogICAgICAgICAgICAgICAgICAgIGV4aXQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gY2hlY2sgaWYgc2VydmVyIGRpc2FibGVzIGNvcHkgb3IgcmVuYW1lCiAgICAgICAgICAgICAgICBpZiAoaXNfZnVuY3Rpb25fY2FsbGFibGUoKCRhY3Rpb24gPT0gJ2NvcHknID8gJ2NvcHknIDogJ3JlbmFtZScpKSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICByZXNwb25zZShzcHJpbnRmKHRyYW5zKCdGdW5jdGlvbl9EaXNhYmxlZCcpLCAoJGFjdGlvbiA9PSAnY29weScgPyAodHJhbnMoJ0NvcHknKSkgOiAodHJhbnMoJ0N1dCcpKSkpIC4gQWRkRXJyb3JMb2NhdGlvbigpKS0+c2VuZCgpOwogICAgICAgICAgICAgICAgICAgIGV4aXQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoJGFjdGlvbiA9PSAnY29weScpIHsKICAgICAgICAgICAgICAgICAgICBsaXN0KCRzaXplRm9sZGVyVG9Db3B5LCAkZmlsZU51bSwgJGZvbGRlcnNDb3VudCkgPSBmb2xkZXJfaW5mbygkcGF0aCwgZmFsc2UpOwogICAgICAgICAgICAgICAgICAgIGlmICghY2hlY2tyZXN1bHRpbmdzaXplKCRzaXplRm9sZGVyVG9Db3B5KSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZShzcHJpbnRmKHRyYW5zKCdtYXhfc2l6ZV9yZWFjaGVkJyksICRjb25maWdbJ01heFNpemVUb3RhbCddKSAuIEFkZEVycm9yTG9jYXRpb24oKSktPnNlbmQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgZXhpdDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmNvcHkoJGRhdGFbJ3BhdGgnXSwgJHBhdGgpOwogICAgICAgICAgICAgICAgICAgIHJjb3B5KCRkYXRhWydwYXRoX3RodW1iJ10sICRwYXRoX3RodW1iKTsKICAgICAgICAgICAgICAgIH0gZWxzZWlmICgkYWN0aW9uID09ICdjdXQnKSB7CiAgICAgICAgICAgICAgICAgICAgcnJlbmFtZSgkZGF0YVsncGF0aCddLCAkcGF0aCk7CiAgICAgICAgICAgICAgICAgICAgcnJlbmFtZSgkZGF0YVsncGF0aF90aHVtYiddLCAkcGF0aF90aHVtYik7CgoJCQkJCS8vIGNsZWFudXAKCQkJCQlpZiAoaXNfZGlyKCRkYXRhWydwYXRoJ10pID09PSBUUlVFKXsKCQkJCQkJcnJlbmFtZV9hZnRlcl9jbGVhbmVyKCRkYXRhWydwYXRoJ10pOwoJCQkJCQlycmVuYW1lX2FmdGVyX2NsZWFuZXIoJGRhdGFbJ3BhdGhfdGh1bWInXSk7CgkJCQkJfQoJCQkJfQoJCQl9CgogICAgICAgICAgICAvLyBjbGVhbnVwCiAgICAgICAgICAgICRfU0VTU0lPTlsnUkYnXVsnY2xpcGJvYXJkJ11bJ3BhdGgnXSA9IG51bGw7CiAgICAgICAgICAgICRfU0VTU0lPTlsnUkYnXVsnY2xpcGJvYXJkX2FjdGlvbiddID0gbnVsbDsKCiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICdjaG1vZCc6CiAgICAgICAgICAgICRtb2RlID0gJF9QT1NUWyduZXdfbW9kZSddOwogICAgICAgICAgICAkcmVjX29wdGlvbiA9ICRfUE9TVFsnaXNfcmVjdXJzaXZlJ107CiAgICAgICAgICAgICR2YWxpZF9vcHRpb25zID0gYXJyYXkoJ25vbmUnLCAnZmlsZXMnLCAnZm9sZGVycycsICdib3RoJyk7CiAgICAgICAgICAgICRjaG1vZF9wZXJtID0gKCRfUE9TVFsnZm9sZGVyJ10gPyAkY29uZmlnWydjaG1vZF9kaXJzJ10gOiAkY29uZmlnWydjaG1vZF9maWxlcyddKTsKCiAgICAgICAgICAgIC8vIGNoZWNrIHBlcm0KICAgICAgICAgICAgaWYgKCRjaG1vZF9wZXJtID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgcmVzcG9uc2Uoc3ByaW50Zih0cmFucygnRmlsZV9QZXJtaXNzaW9uX05vdF9BbGxvd2VkJyksIChpc19kaXIoJHBhdGgpID8gKHRyYW5zKCdGb2xkZXJzJykpIDogKHRyYW5zKCdGaWxlcycpKSkpIC4gQWRkRXJyb3JMb2NhdGlvbigpKS0+c2VuZCgpOwogICAgICAgICAgICAgICAgZXhpdDsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBjaGVjayBtb2RlCiAgICAgICAgICAgIGlmICghcHJlZ19tYXRjaCgiL15bMC03XXszfSQvIiwgJG1vZGUpKSB7CiAgICAgICAgICAgICAgICByZXNwb25zZSh0cmFucygnRmlsZV9QZXJtaXNzaW9uX1dyb25nX01vZGUnKSAuIEFkZEVycm9yTG9jYXRpb24oKSktPnNlbmQoKTsKICAgICAgICAgICAgICAgIGV4aXQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gY2hlY2sgcmVjdXJzaXZlIG9wdGlvbgogICAgICAgICAgICBpZiAoIWluX2FycmF5KCRyZWNfb3B0aW9uLCAkdmFsaWRfb3B0aW9ucykpIHsKICAgICAgICAgICAgICAgIHJlc3BvbnNlKHRyYW5zKCJ3cm9uZyBvcHRpb24iKSAuIEFkZEVycm9yTG9jYXRpb24oKSktPnNlbmQoKTsKICAgICAgICAgICAgICAgIGV4aXQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gY2hlY2sgaWYgc2VydmVyIGRpc2FibGVkIGNobW9kCiAgICAgICAgICAgIGlmICghJGZ0cCAmJiBpc19mdW5jdGlvbl9jYWxsYWJsZSgnY2htb2QnKSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgIHJlc3BvbnNlKHNwcmludGYodHJhbnMoJ0Z1bmN0aW9uX0Rpc2FibGVkJyksICdjaG1vZCcpIC4gQWRkRXJyb3JMb2NhdGlvbigpKS0+c2VuZCgpOwogICAgICAgICAgICAgICAgZXhpdDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJG1vZGUgPSAiMCIgLiAkbW9kZTsKICAgICAgICAgICAgJG1vZGUgPSBvY3RkZWMoJG1vZGUpOwogICAgICAgICAgICBpZiAoJGZ0cCkgewogICAgICAgICAgICAgICAgJGZ0cC0+Y2htb2QoJG1vZGUsICIvIiAuICRwYXRoKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHJjaG1vZCgkcGF0aCwgJG1vZGUsICRyZWNfb3B0aW9uKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ3NhdmVfdGV4dF9maWxlJzoKICAgICAgICAgICAgJGNvbnRlbnQgPSAkX1BPU1RbJ25ld19jb250ZW50J107CiAgICAgICAgICAgIC8vICRjb250ZW50ID0gaHRtbHNwZWNpYWxjaGFycygkY29udGVudCk7IG5vdCBuZWVkZWQKICAgICAgICAgICAgLy8gJGNvbnRlbnQgPSBzdHJpcHNsYXNoZXMoJGNvbnRlbnQpOwoKICAgICAgICAgICAgaWYgKCRmdHApIHsKICAgICAgICAgICAgICAgICR0bXAgPSB0aW1lKCk7CiAgICAgICAgICAgICAgICBmaWxlX3B1dF9jb250ZW50cygkdG1wLCAkY29udGVudCk7CiAgICAgICAgICAgICAgICAkZnRwLT5wdXQoIi8iIC4gJHBhdGgsICR0bXAsIEZUUF9CSU5BUlkpOwogICAgICAgICAgICAgICAgdW5saW5rKCR0bXApOwogICAgICAgICAgICAgICAgcmVzcG9uc2UodHJhbnMoJ0ZpbGVfU2F2ZV9PSycpKS0+c2VuZCgpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgLy8gbm8gZmlsZQogICAgICAgICAgICAgICAgaWYgKCFmaWxlX2V4aXN0cygkcGF0aCkpIHsKICAgICAgICAgICAgICAgICAgICByZXNwb25zZSh0cmFucygnRmlsZV9Ob3RfRm91bmQnKSAuIEFkZEVycm9yTG9jYXRpb24oKSktPnNlbmQoKTsKICAgICAgICAgICAgICAgICAgICBleGl0OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIG5vdCB3cml0YWJsZSBvciBlZGl0IG5vdCBhbGxvd2VkCiAgICAgICAgICAgICAgICBpZiAoIWlzX3dyaXRhYmxlKCRwYXRoKSB8fCAkY29uZmlnWydlZGl0X3RleHRfZmlsZXMnXSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICByZXNwb25zZShzcHJpbnRmKHRyYW5zKCdGaWxlX09wZW5fRWRpdF9Ob3RfQWxsb3dlZCcpLCBzdHJ0b2xvd2VyKHRyYW5zKCdFZGl0JykpKSAuIEFkZEVycm9yTG9jYXRpb24oKSktPnNlbmQoKTsKICAgICAgICAgICAgICAgICAgICBleGl0OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICghY2hlY2tyZXN1bHRpbmdzaXplKHN0cmxlbigkY29udGVudCkpKSB7CiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2Uoc3ByaW50Zih0cmFucygnbWF4X3NpemVfcmVhY2hlZCcpLCAkY29uZmlnWydNYXhTaXplVG90YWwnXSkgLiBBZGRFcnJvckxvY2F0aW9uKCkpLT5zZW5kKCk7CiAgICAgICAgICAgICAgICAgICAgZXhpdDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChAZmlsZV9wdXRfY29udGVudHMoJHBhdGgsICRjb250ZW50KSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICByZXNwb25zZSh0cmFucygnRmlsZV9TYXZlX0Vycm9yJykgLiBBZGRFcnJvckxvY2F0aW9uKCkpLT5zZW5kKCk7CiAgICAgICAgICAgICAgICAgICAgZXhpdDsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UodHJhbnMoJ0ZpbGVfU2F2ZV9PSycpKS0+c2VuZCgpOwogICAgICAgICAgICAgICAgICAgIGV4aXQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICByZXNwb25zZSh0cmFucygnd3JvbmcgYWN0aW9uJykgLiBBZGRFcnJvckxvY2F0aW9uKCkpLT5zZW5kKCk7CiAgICAgICAgICAgIGV4aXQ7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/force_download.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiRjb25maWcgPSBpbmNsdWRlICdjb25maWcvY29uZmlnLnBocCc7CgppbmNsdWRlICdpbmNsdWRlL3V0aWxzLnBocCc7CmluY2x1ZGUgJ2luY2x1ZGUvbWltZV90eXBlX2xpYi5waHAnOwoKaWYgKCRfU0VTU0lPTlsnUkYnXVsidmVyaWZ5Il0gIT0gIlJFU1BPTlNJVkVmaWxlbWFuYWdlciIpIHsKICAgIHJlc3BvbnNlKHRyYW5zKCdmb3JiaWRkZW4nKSAuIEFkZEVycm9yTG9jYXRpb24oKSwgNDAzKS0+c2VuZCgpOwogICAgZXhpdDsKfQoKaWYgKCFjaGVja1JlbGF0aXZlUGF0aCgkX1BPU1RbJ3BhdGgnXSkgfHwgc3RycG9zKCRfUE9TVFsncGF0aCddLCAnLycpID09PSAwKSB7CiAgICByZXNwb25zZSh0cmFucygnd3JvbmcgcGF0aCcpIC4gQWRkRXJyb3JMb2NhdGlvbigpLCA0MDApLT5zZW5kKCk7CiAgICBleGl0Owp9CgppZiAoc3RycG9zKCRfUE9TVFsnbmFtZSddLCAnLycpICE9PSBmYWxzZSkgewogICAgcmVzcG9uc2UodHJhbnMoJ3dyb25nIHBhdGgnKSAuIEFkZEVycm9yTG9jYXRpb24oKSwgNDAwKS0+c2VuZCgpOwogICAgZXhpdDsKfQoKJGZ0cCA9IGZ0cF9jb24oJGNvbmZpZyk7CgppZiAoJGZ0cCkgewogICAgJHBhdGggPSAkY29uZmlnWydmdHBfYmFzZV91cmwnXSAuICRjb25maWdbJ3VwbG9hZF9kaXInXSAuICRfUE9TVFsncGF0aCddOwp9IGVsc2UgewogICAgJHBhdGggPSAkY29uZmlnWydjdXJyZW50X3BhdGgnXSAuICRfUE9TVFsncGF0aCddOwp9CgokbmFtZSA9ICRfUE9TVFsnbmFtZSddOwokaW5mbyA9IHBhdGhpbmZvKCRuYW1lKTsKCmlmICghY2hlY2tfZXh0ZW5zaW9uKCRpbmZvWydleHRlbnNpb24nXSwgJGNvbmZpZykpIHsKICAgIHJlc3BvbnNlKHRyYW5zKCd3cm9uZyBleHRlbnNpb24nKSAuIEFkZEVycm9yTG9jYXRpb24oKSwgNDAwKS0+c2VuZCgpOwogICAgZXhpdDsKfQoKJGZpbGVfbmFtZSA9ICRpbmZvWydiYXNlbmFtZSddOwokZmlsZV9leHQgPSAkaW5mb1snZXh0ZW5zaW9uJ107CiRmaWxlX3BhdGggPSAkcGF0aCAuICRuYW1lOwoKCi8vIG1ha2Ugc3VyZSB0aGUgZmlsZSBleGlzdHMKaWYgKCRmdHApIHsKICAgIGhlYWRlcignQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nKTsKICAgIGhlYWRlcigiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogQmluYXJ5Iik7CiAgICBoZWFkZXIoIkNvbnRlbnQtZGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiIiAuICRmaWxlX25hbWUgLiAiXCIiKTsKICAgIHJlYWRmaWxlKCRmaWxlX3BhdGgpOwp9IGVsc2VpZiAoaXNfZmlsZSgkZmlsZV9wYXRoKSAmJiBpc19yZWFkYWJsZSgkZmlsZV9wYXRoKSkgewogICAgaWYgKCFmaWxlX2V4aXN0cygkcGF0aCAuICRuYW1lKSkgewogICAgICAgIHJlc3BvbnNlKHRyYW5zKCdGaWxlX05vdF9Gb3VuZCcpIC4gQWRkRXJyb3JMb2NhdGlvbigpLCA0MDQpLT5zZW5kKCk7CiAgICAgICAgZXhpdDsKICAgIH0KCiAgICAkc2l6ZSA9IGZpbGVzaXplKCRmaWxlX3BhdGgpOwogICAgJGZpbGVfbmFtZSA9IHJhd3VybGRlY29kZSgkZmlsZV9uYW1lKTsKCgogICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnbWltZV9jb250ZW50X3R5cGUnKSkgewogICAgICAgICRtaW1lX3R5cGUgPSBtaW1lX2NvbnRlbnRfdHlwZSgkZmlsZV9wYXRoKTsKICAgIH0gZWxzZWlmIChmdW5jdGlvbl9leGlzdHMoJ2ZpbmZvX29wZW4nKSkgewogICAgICAgICRmaW5mbyA9IGZpbmZvX29wZW4oRklMRUlORk9fTUlNRV9UWVBFKTsKICAgICAgICAkbWltZV90eXBlID0gZmluZm9fZmlsZSgkZmluZm8sICRmaWxlX3BhdGgpOwogICAgfSBlbHNlIHsKICAgICAgICAkbWltZV90eXBlID0gZ2V0X2ZpbGVfbWltZV90eXBlKCRmaWxlX3BhdGgpOwogICAgfQoKCiAgICBAb2JfZW5kX2NsZWFuKCk7CiAgICBpZiAoaW5pX2dldCgnemxpYi5vdXRwdXRfY29tcHJlc3Npb24nKSkgewogICAgICAgIGluaV9zZXQoJ3psaWIub3V0cHV0X2NvbXByZXNzaW9uJywgJ09mZicpOwogICAgfQogICAgaGVhZGVyKCdDb250ZW50LVR5cGU6ICcgLiAkbWltZV90eXBlKTsKICAgIGhlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9IicgLiAkZmlsZV9uYW1lIC4gJyInKTsKICAgIGhlYWRlcigiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmluYXJ5Iik7CiAgICBoZWFkZXIoJ0FjY2VwdC1SYW5nZXM6IGJ5dGVzJyk7CgogICAgaWYgKGlzc2V0KCRfU0VSVkVSWydIVFRQX1JBTkdFJ10pKSB7CiAgICAgICAgbGlzdCgkYSwgJHJhbmdlKSA9IGV4cGxvZGUoIj0iLCAkX1NFUlZFUlsnSFRUUF9SQU5HRSddLCAyKTsKICAgICAgICBsaXN0KCRyYW5nZSkgPSBleHBsb2RlKCIsIiwgJHJhbmdlLCAyKTsKICAgICAgICBsaXN0KCRyYW5nZSwgJHJhbmdlX2VuZCkgPSBleHBsb2RlKCItIiwgJHJhbmdlKTsKICAgICAgICAkcmFuZ2UgPSBpbnR2YWwoJHJhbmdlKTsKICAgICAgICBpZiAoISRyYW5nZV9lbmQpIHsKICAgICAgICAgICAgJHJhbmdlX2VuZCA9ICRzaXplIC0gMTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkcmFuZ2VfZW5kID0gaW50dmFsKCRyYW5nZV9lbmQpOwogICAgICAgIH0KCiAgICAgICAgJG5ld19sZW5ndGggPSAkcmFuZ2VfZW5kIC0gJHJhbmdlICsgMTsKICAgICAgICBoZWFkZXIoIkhUVFAvMS4xIDIwNiBQYXJ0aWFsIENvbnRlbnQiKTsKICAgICAgICBoZWFkZXIoIkNvbnRlbnQtTGVuZ3RoOiAkbmV3X2xlbmd0aCIpOwogICAgICAgIGhlYWRlcigiQ29udGVudC1SYW5nZTogYnl0ZXMgJHJhbmdlLSRyYW5nZV9lbmQvJHNpemUiKTsKICAgIH0gZWxzZSB7CiAgICAgICAgJG5ld19sZW5ndGggPSAkc2l6ZTsKICAgICAgICBoZWFkZXIoIkNvbnRlbnQtTGVuZ3RoOiAiIC4gJHNpemUpOwogICAgfQoKICAgICRjaHVua3NpemUgPSAxICogKDEwMjQgKiAxMDI0KTsKICAgICRieXRlc19zZW5kID0gMDsKCiAgICBpZiAoJGZpbGUgPSBmb3BlbigkZmlsZV9wYXRoLCAncicpKSB7CiAgICAgICAgaWYgKGlzc2V0KCRfU0VSVkVSWydIVFRQX1JBTkdFJ10pKSB7CiAgICAgICAgICAgIGZzZWVrKCRmaWxlLCAkcmFuZ2UpOwogICAgICAgIH0KCiAgICAgICAgd2hpbGUgKCFmZW9mKCRmaWxlKSAmJgogICAgICAgICAgICAoIWNvbm5lY3Rpb25fYWJvcnRlZCgpKSAmJgogICAgICAgICAgICAoJGJ5dGVzX3NlbmQgPCAkbmV3X2xlbmd0aCkKICAgICAgICApIHsKICAgICAgICAgICAgJGJ1ZmZlciA9IGZyZWFkKCRmaWxlLCAkY2h1bmtzaXplKTsKICAgICAgICAgICAgZWNobyAkYnVmZmVyOwogICAgICAgICAgICBmbHVzaCgpOwogICAgICAgICAgICAkYnl0ZXNfc2VuZCArPSBzdHJsZW4oJGJ1ZmZlcik7CiAgICAgICAgfQogICAgICAgIGZjbG9zZSgkZmlsZSk7CiAgICB9IGVsc2UgewogICAgICAgIGRpZSgnRXJyb3IgLSBjYW4gbm90IG9wZW4gZmlsZS4nKTsKICAgIH0KCiAgICBkaWUoKTsKfSBlbHNlIHsKICAgIC8vIGZpbGUgZG9lcyBub3QgZXhpc3QKICAgIGhlYWRlcigiSFRUUC8xLjAgNDA0IE5vdCBGb3VuZCIpOwp9CgpleGl0Owo=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/clipboard_apply.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAD1BMVEUmJib///8mJiYmJiYmJiZbyPPEAAAABHRSTlMAAJnMgcLZUgAAAFlJREFUeF41yeENgCAMhNEjOICgC5AwAEk7gNLbfyZb1O9H83JFKeUYfhwHOQJ9I6+ZUDX7Yg0n4fF2RD/kg0EDwrFgEGQuABrg8GHBkr6gMFCVnjXsPTDTA8QzFkBKaf+yAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/clipboard_clear.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAElBMVEUTExMmJib///8mJiYmJiYmJia77MQEAAAABXRSTlMAAACZzPA6uXkAAABbSURBVHheTc3BCcAwCAXQrKDYAWrSBQq514P30uj+q9REKP0HeYjyCzM3iRFo7tdE39zvgaUqxcbOcjhE/AnMLJiaLggJJQASBqAJ5IQg03f8f6/qkajY+8TAF/mnHfJGo6xuAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/copy.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAMFBMVEUmJiYzMzP///////////8YGBgZGRkYGBgZGRkpKSkqKioyMjIzMzMYGBgmJiYzMzOHZX8qAAAADXRSTlMAAAAoQJ+f/v7+/v7+UTUi0AAAAGBJREFUeF5juFdeqwQCDB+Y9EXBjA1M2pJJIMYmIW2ZpSDGISUdFWcIA6QczAApB6lRAisHiUCUM3wSgihn+P8fyChvV2JQUjqkpKSkA2JsAjK0UUQ+CSkp6YMY/0FACQBvkyeQK4FbkwAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/cut.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAgMAAABinRfyAAAADFBMVEUyMjImJiYmJiYyMjKrAVvpAAAAA3RSTlMAmczIJ3sWAAAATUlEQVR4Xg3GsQ2AIBRF0UssKCj+CG4ibMZiJrCBjMAIL9ESiHSHAyqhHp0g6/gRG26VBHkC5weYgDggzNw3Nm/ZhWTGK3sozS9icuMHGfgc2idDYJsAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/date.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAA81BMVEX///8AAAAAAABAQEAzMzMrKyskJCQcHBwzMzMaGhonJyckJCQrKysoKCgmJiYkJCQrKyspKSkkJCQoKCgnJycmJiYkJCQjIyMrKyMpKSkoKCgnJycmJiYqKiQnJycmJiYoKCQoKCglJSUoKCQnJycnJycoKCQmJiYmJiYmJiYlJSUlKCUnJycnJyUnJyUmJiYlJSUmJiYmJiYnJyUlJSUnJycmJiYlJSUnJyUmJiYnJyYnJyUmJiYmJiYnJyUmJiYmJiYmJyYnJyYnJyYnJyYnJyUnJyYnJyYnJyUmJiUmJiYmJiUmJiUmJiYnJyYpKSkrKyq1Dyr+AAAAT3RSTlMAAQIEBQYHCQoKDQ4SExQVGBkcICEiIyQkJSYnKDE0NTk6Pj9BQk1la2xtbW5ub3J2gIGChISGj4+UnJ6foKXP0dHR0tna3t/h4uLo6uv7GR814gAAANBJREFUeF5Ni9cOglAUBBcbinCtIIq9dwUV7A2l2P//a4T7YJxkkpPJHniMxz89aivjZC6Xpu/ZWFVx3avmUdePvqa6v8ARMOoBPd8BBBeWhBAQYJgAvEO0YGcQ4cJMNMqEuQgyNmwJ+mdCHo/E5KND8oKI+qzMdrtseVaHSENjUWH7/Vhl0aBBgvYeEtclw7dGX7JIlUiwWAySUgpZupi+OvzhwHdeU7qQ0d41ufk83ty2IduwkvgjaeHeSitKPlco5PKKkm7dsXk6tx/Oc/0F88Ui6MTkxGoAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/dimension.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAArlBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC+yYRkAAAAOXRSTlMAARQEI1X7340fUMeKhIj5284g2l360EkbxDHk8Sbt3QX03jNP8DRX49LR3MrggIWGVDcTWlnGNour6KQUAAAAsUlEQVR4XlWP1ZLFMAxD1aRJysx4kWEZ8v8/tuPevKxfLJ0ZjWzQWMDry7Jg/MrR2uFEDPhUcay+DLAssM4bBq/7IE2UJWmb522asMWuim1VN67b1NW24ACCXvgZZTNf9AEQabne2OAc9mYtdQRHl9P8BPNUagcIlee7FHG/PRVSrThcdvY42rvL4c3UXs+3+/12vlLt87B3sd+LH0YaCzmepDwdjV9SD60f/97Fb2D8H5vLDPSs5XmIAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/down.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIBAMAAAA2IaO4AAAAHlBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGjDitAAAACXRSTlMAAooDIYMBeYSNFKseAAAAK0lEQVR4XmNgMxROYAADJ9UgFQahmTMVGRgqpzMwGHA0MDMwMjAIABEjAwBsAgTad86CyQAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/download.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABLFBMVEX///8TExP///8vLy8oKCgcHBwVFRUYGBgdHR3///9ISEiSkpIUFBQTExMoKChOTk6Dg4MZGRkeHh4rKytpaWmKiopcXFwvLy8eHh4XFxdGRkaLi4vHx8dZWVk1NTVGRkYeHh4XFxciIiJYWFj///8mJiYdHR1kZGQxMTEmJiYoKCgjIyP///8UFBRaWlpRUVEgICAkJCQ9PT2amppra2tXV1eEhIT///8kJCQnJyc4ODgiIiInJyciIiITExMkJCQUFBQkJCQTExOhoaEpKSkeHh5jY2MiIiIsLCxKSkocHBwkJCQnJyd+fn4oKCgsLCwjIyMaGhoZGRkcHBwkJCQyMjIpKSk6OjpPT08/Pz89PT1BQUFRUVH///////////////////8mJiYgICAl4GeMAAAAYnRSTlMANw/TkQl8y+oKlA59hOOre2/M44slfeTcj6U3KZXYRY8hvGMDjtxP1MnyUQJAXpHeB2A/TCZfIunzlb7y8sXxsrK6bO5/dvC7wIfr8Ff0we/y7vDu2u+Vn8rSv5gjMjUuISRAYPIAAADDSURBVHhebc7DksUAGITR2Nalbds2xmbm/d/h1l+p2eVbnupFI66h4nQ8F9F/ICma2UxGDE2RDghpSVYWiiylBWev6UbD2lkNQ9dQgP3BH2CJP4IN+LsrgEEvwSMpO4XwieMMIJePFEtxO14qRvI5gO2wUKvjNl6vFc4XgP4yGjO5R86MRZ+eATLZqtpqrpsttZrNAGAVj9dXPpV9Xk8FQ6BgKHxze3f/EA4FnafJTvvl9e39o91JAkDY59f3zy/sXboCRaUaJQ01TrQAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/duplicate.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAM1BMVEUYGBj///8zMzMmJib///////8YGBgZGRkYGBgyMjIzMzMqKioZGRkpKSkYGBgmJiYzMzO6nfTLAAAADnRSTlMAAAAAKECfn/7+/v7+/haVNM8AAABjSURBVHhefYpREoAgCAVB04BKu/9pA8HRr97AALsAjjQiamML8CbrGqD3zgo4PaeDF9GBXBXBdM6iXLCUA8E0wgBENyG4FvQIgmsO4Nf+MbX8fLhmYdHi+WGJCbsOsPQAS3s+VGsEUxTrNFsAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/edit_img.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABLFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADmaNZ3AAAAY3RSTlMANyj45qL9Qvf09UFSeysBn/JDbPYq6uga/OmwYfqPXuRFRIdVED9Q+VMSHna8s9IvTxiD3Wu+qElgFWe6IYZAeuEHm/vtYnTsOutRSMCJskynnaBvprENo/7nd+URNAI4Mw7PDiMTAAAAwUlEQVR4XoXMtZLDQBRE0bbGnhGCkUFmZlpmZmZ+//8PaynYZAOf8FZ147/hpigWhCaE0LRQdQWVNWJKsM6YnN1jjHcQ5fbx4PSspjeulvSQTZCUMu5KTXiQmQc5LxGNYOF12kLbDZnPbq+fMMJjMhB2JxPswJoRT1JQWp6HyCrM9Q0i4ll62kq6H4lthZPH2VVh7h8cknoUP4nFUur5RQRRdpm7vrkNuO5zD4TH9HPcefF73lJyGnj/8P35+v7BQr9coh6O8+/SagAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/file_edit.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAAAVlpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KTMInWQAAATxJREFUOBGVk79KxEAQh7P5Y+sVnggWFoqIglqIiKWVeO/gm9x7XGmnXuUz2Nja+QCC7WHhnbrR9ZswA5u7ROPCj90J8/1mdpIkSbdVaNpelmVjzn2N8y54BRdFcQj8ikKapk+APYHTPxykgkdrIYRV9srMObeDyQPxCmpd1vYmVT/RLZm77FMUVHdttMHbJE4i4BpA5vCG3rnWUZNBE+wBpAupfJPn+TnwSVfYQDGpWgfcUHgpNmmqPA/PAPabYHuf8Z3n4am8SoWtWBUavEWLNrDOsBomfeAPveO/4AyHZaZ6zO7QAfpGAUlnMz6YU+/9I2dpWz6qhSX3/kIDNNIuZNqtd645UP0sgi44X0lMkk27NrAaLAEtDiMDqTzg8bom2oA1XNwcwCU/ivwc92VZPpPygiZI4BL9un4AmbBjC+2VBXIAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/glyphicons-halflings-white.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAdUAAACfCAMAAACY07N7AAAC1lBMVEX///8AAAAAAAAAAAD///8AAAAAAAAAAAD///8AAAAAAABAQEAAAAD///8AAAD///8AAAAAAADh4eEAAADGxsYAAACzs7MAAACqqqqenp6Li4sAAACQkJAAAACKior///+FhYUAAAB7e3tycnJvb2////9oaGhkZF3w8PD////h4eFXV1e9vb3b29vV1dVTU1NRUVHDw8NOTk65ubm0tLTBwcGwsLCioqKfn5////+YmJiVlZX///+SkpL19fX6+vrm5uaHh4eEhITi4uKAgIDV1dXe3t7R0dHNzc37+/u+vr7CwsK7u7uRkZG1tbX///+rq6vz8/OmpqakpKTs7OyhoaHp6en7+/vh4eHb29vV1dXPz8/MzMzHx8f////l5eX8/Pz///++vr68vLzy8vL8/Py6urr29vbv7++1tbXp6enk5OTn5+fe3t7k5OTc3Nzf39/a2trS0tL39/fV1dXs7OzIyMj////ExMTJycnHx8f6+vrFxcX39/f19fXy8vLr6+vm5ubk5OTw8PDMzMzd3d3b29vZ2dnV1dXT09PR0dH////9/f3b2Nv4+Pj29vbo6Oji4uLg4ODa2trZ2dn////7+/v////5+fn39/fo6Ojx8fHw8PDu7u7w8PD5+fns7Ozu7u7p6en29vbn5+fl5eXj4+Pg4ODk5OTg4ODx8fH////m5ub7+/v6+vr4+Pj29vbz8/Px8fHw8PDs7Oz////p6eno6Oj////8/Pz6+vr5+fn09PTz8/Px8fHw8PDt7e3r6+v////7+/v5+fn29vb09PTy8vLx8fH7+/v////6+vr+/v74+Pj7+/v6+vr39/f29vbz8/P19fXz8/P29vb////+/v79+/35+fn4+Pj39/f9+v339/f4+Pj4+Pj////9/f7////9/f39/f35+fn8/Pz5+fn8/Pz8/Pz////9/f38/Pz////9/f3////+/v7///8rEe1wAAAA8HRSTlMAAQIDBAUGCAkKCwwNDg4PDxAREhITFBUVFRYXFxgYGBkaGx0eHyAhISEiIyMjJCUmJicoKSkqLC0vLzAwMTExMzM0NDY2Njc4Ojs7PDw+P0BBQkNDRERERUdJSktNTU5OT09QUFBRUVFTU1RVVlZXWFlaWltdXV9f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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/glyphicons-halflings.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/ac3.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/accdb.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/ade.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/adp.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/ai.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/aiff.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/avi.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/bmp.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/c4d.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/css.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/csv.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/default.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/dmg.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQAAAQABAAD/4QBARXhpZgAATU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAAeqADAAQAAAABAAAAWwAAAAD//gA0T3B0aW1pemVkIGJ5IEpQRUdtaW5pIDMuOS4yLjVMIEludGVybmFsIDB4NjhkMTY3YmP/2wBDAAIBAQIBAQICAwICAgICAwUDAwMDAwYEBAMFBwYHBwcGBgYHCAwKBwgLCAYGCg4KCwwMDQ0NBwoODw4NDwwNDQz/2wBDAQICAgMCAwUDAwUMCAYIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wgARCABbAHoDASIAAhEBAxEB/8QAHAABAAICAwEAAAAAAAAAAAAAAAYIBQcBAgME/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEAMQAAAByQAAAAAAAAAAAAAAAAABYQg093IK66mvHDCoz18gAAADK3UqJb441RtGnZbz74ZMysOsd06WAAAAO9yqZSouEikrHnja8kTjYAAAAAMnjB26gAAB/8QAIxAAAQQCAgEFAQAAAAAAAAAABAIDBQYBBwAwEBEUFRZAYP/aAAgBAQABBQL+Fxj1zBatkJZtrTQeGZbTxQyCw3QCOvWVJQwN5uVQZtID7ChnumCj/lZlCMNo4ft0EQ6MkmZcHm2IzANm6aGVgO38JZ9wOfVT446gwrsFW+bnKwuQ6WnMsuVmdRYofy66lhq2zn2Ge6qpbSKqbBXSPsDfJOcEhmrvsRdhT2tTRjDKlZXn8/8A/8QAFBEBAAAAAAAAAAAAAAAAAAAAUP/aAAgBAwEBPwFD/8QAFBEBAAAAAAAAAAAAAAAAAAAAUP/aAAgBAgEBPwFD/8QANBAAAgECAgcFBQkAAAAAAAAAAQIDBBEAEhAhMDFBQlETIFJxgSIykcHhBSMzQGBhctHi/9oACAEBAAY/Av0MJJMtHGfH7x9Me1V1LSdQAB8MFoKhKi3KwyNhopI2ikTerCx2ifaMyZpZNcKnkHXz7hFgtVGPupPkf2w8bAq6HKwPA7Klp+E0gU+WAoFgNQGgxLDNOimxkW1vTriOoibPFKLg6O1AsKqMP67jsqFzu7TJ8Rb56JI72zqVv0wadqWYvewyoSH8sRQy6pWJcr4b8NFFDzRxs59T/nZK4NmU3BxFUra7CzjwtxHcZ2IVEFyTwxPU8hOVP4jds86e3E/4kZ3N9cDJOqScY31MP70ZpqiOIdCdZ9MGmhDRUnG/vS/TbdmtXUpGeUSkDFyST+Y//8QAKBABAAECBAQGAwAAAAAAAAAAAREAITFBUaEQMGGRIHGBsdHwQGDB/9oACAEBAAE/If0VAAlaZS5kVL2+sU6MoG/qH3rELa8PJlHamCVEQcwGwom2THVloeCQzDBed5bY0nd+JAwnKxB7mL7TQADwMApYKm9GwLyuDtWglBeYmSNuFypCNPwD68odRWJksd+C8i2GoiaKxpPWRGJQeXlp+zfgNQkDoQe7vyoeVGyTCk+sjyvAZeVHCoMm2dPoeWywvKs/ykwxLsd9ZcHxt8GxNTpnfuNOjnNsVHbWanIWb+R//9oADAMBAAIAAwAAABAAAAAAAAAAAAAAAAAABDCQgAAADCiCAAAACQAgAAAAAAAAAAD/xAAUEQEAAAAAAAAAAAAAAAAAAABQ/9oACAEDAQE/EEP/xAAUEQEAAAAAAAAAAAAAAAAAAABQ/9oACAECAQE/EEP/xAAiEAEAAQMDBQEBAAAAAAAAAAABEQAhQTFRgRAwYGGRcdH/2gAIAQEAAT8Q8FRAiACVdigSWOrMhh5V6pZsLlHtF+aORj44mL9aSeoWT/HGEudw98JYrVWuqthLtuumz0GT2D6YZKKiKEKv0D2ptFB+ojPibij1XBgRABgACgZUAurimSfSKMKidhWWLXoTtkG5NQuDZHoBLDNF55kd7XaSIa5AluBeOlzLlCVB7Jmm4tOFMByJruZhtS9ISl1JskNYyekHggcKceDBtODG2NI3cd+7XkYTRHVnY4yUf+b1qtSpnh//2Q==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/doc.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/docx.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/dwg.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/dxf.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/favicon.ico</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAABMLAAATCwAAAAAAAAAAAAAAAABkAAAAhAAAAIMAAAA3////AP///wD///8A////AP///wAAAAADAAAAAwAAAAL///8A////AP///wD///8AAAAAsQAAAJQAAACwAAAAzgAAAH4AAAB9AAAAkwAAAJAAAAA7////AP///wD///8A////AP///wD///8A////AAMDA2X///8AAAAAKQAAANMAAAC4AAAAqQAAAMIAAADxAAAAsgAAAB4AAAAzAAAAMQAAAAj///8AAAAABAAAAAEDAwNh////AAAAAC4AAABu////AAAAAAL///8AAAAAYgAAAP8AAADtAAAA9AAAAJwAAAAI////AAAAAAH///8AAwMDYP///wAAAAAoAAAAbf///wD///8A////AAAAAFkAAAD/AAAA/wAAAL0AAAAK////AP///wD///8A////AAICAngAAAAbAAAATQAAAHz///8A////AP///wAAAABiAAAA/AAAAOsAAAC6AAAAawAAAHcAAAB6AAAAfQAAAD4CAgJnAAAArAAAALYAAABK////AAAAAAP///8AAAAAZgAAANwAAACvAAAA/AAAAP8AAAD/AAAA/wAAAP8AAACy////AAAAAIQAAACB////AP///wD///8A////AAAAAFwAAADMAAAAawAAAI8AAACcAAAAlwAAAIwAAADYAQEBtv///wAAAAB4AAAArgAAADAAAABFAAAARwAAADwAAAChAAAAp////wD///8A////AP///wD///8AAAAAfAEBAbr///8AAAAAOgAAAMYAAADpAAAAqwAAAJsAAACjAAAArgAAAFv///8A////AAAAAAEAAAAB////AAAAAIMBAQG7AAAAAf///wAAAABOAAAA4gAAACb///8AAAAACgAAAAL///8A////AP///wAAAAABAAAAAv///wAAAACDAQEBuwAAAAL///8AAAAASgAAANYAAAAe////AAAAAAH///8AAAAABQAAAAcAAAAGAAAABwAAAAj///8AAAAAhwEBAbsAAAAB////AAAAAE4AAADTAAAAEP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAHcBAQG4AAAAAf///wAAAABQAAAA5gAAAEAAAAAZAAAAJgAAACQAAAAkAAAAJAAAACQAAAAlAAAAJgAAABEAAACdAAAAwgAAAAL///8AAAAAOAAAAOcAAADYAAAAyAAAAM0AAADMAAAAzAAAAMwAAADMAAAAzQAAAM0AAADGAAAA8gAAAKIAAAAB////AAAAAAgAAABIAAAAaAAAAGYAAABmAAAAZgAAAGYAAABmAAAAZgAAAGYAAABlAAAAaAAAAGEAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/fla.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/flv.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/folder.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAHoAAABbCAMAAACLd2FFAAABKVBMVEUAAAAAAAD/vwDmswD/0Ubo0QD/vwDrxAD/yEn/20n/zFX/z1DhtADxuAD/00v/0E3tvgbzvgDtvgD/1U7wwwXmugX/00//1E75zS/5zTXuvwL/003vwwX/0Uz/007/003rwALswATuwQLvwAL/003/003swALsvgH/003/0kz/1E3/1E7svwDuwAP/003uwgP/1U3twQD/003/1EvxxAP/003/0k3/1E3/1U3xxAL/1Ez/1E7/1E3/1EzyxRbyxhXuwALvwALuwQP/1E7wwwP/003/1E3/107/2E7/2E//2U//2k/uwQPwwgPzxQPvwQP1xgP1xwP2xwP0xgP/1lD/3FDyxRT3yAPzxQH/1VD/1k7uwAH0xQHwwwP0xxTxxAPyxQP/21D1yBQJol7HAAAARnRSTlMAAQgKCwsMDQ4ODxAREikrKysrMTM0OjtRV2htbm9zdHV2eH6VlqWtr7G9vr+/xMTGx8rLy83Ozs7Oz9ni4+ru+Pj5+fr6VNKs+QAAASFJREFUeF7s0McKwlAQQNFEsYGKPSoCFtBNxAhuBIl9Ny+92Nv/f4Tr7PJmtnN+4MJVUBhjjDHGKvWWtEZZocuN13vfkeTvVsMMtZyfWa4AacKzplliehALQHl6fVq5sHAAyZ3TlrdPNiDZhxopPfkA2ntEKavLyx3toRPKxe72FaH9zJ6W1CylLXeMc3AlCL5h0tHQ0pWrm/D2Z2+OcQCCgiiK2oEFaGnoCESi/cn8qTX2vxBbeJKZaO7ZwCmhnvtqpbr3Es4HqZ5rfG2LVG8JdT2les2oD2pqauoPqKmpqampqampqampqampqff/6imhtlGqO4+v33nLMhADuDS8PdypCjy8NbkZiAIscnrWVAV68iwMwwmMglEwCkbBKAAABQlyN0bunVUAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/folder_back.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAHoAAABbCAMAAACLd2FFAAABfVBMVEX////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8robnAAAAfnRSTlMAAQIDBAUGBwgKCwwNDg8SExQbHB4fICQnKSssLS4wMTIzNDY5Ozw9P0FDREZHSUtMTlFSU1dZYGFmamxyeX+Bh4iJjY+QkZWYnaCipqytrq+ys7S2t7i5uru9v8DBxMXLzM3O0NPU1tfb3N/h5OXm6O3w8vX29/j5+vv8/f7ItILVAAACHElEQVR4Xu3Vd1MTQRzG8Wd3Dw0BSyxECYixF2zYG/aCvURaVFCxNxCN5Hbvee1mclwGZ3ASx5tf/GM/LyDfeX6XmcX/y/M8z/M8z/M8TxmN9jAAlII8pbDx1FZAvq2B09/Ia/JtDVwkHXkFGqIMOm4zcnSs5GXbATIPaSMyYqUXWrS8olQvM2RJ9GMbdI7Rsl7+ugFacvPqp3HZsrILRrK86jnDuBweQCBZ7iwn5YWDkmWD7GTj2vtky93lRnmvbDkzEV/b0Q6iQ0GKBu7G5YgLhxBAKb3ILEshJQoYia9Ny8vIoDmV2it5lTZibPb19NSz8uTE+PjY2OgST2oe3bszcv3C2aGiSqmtcY4uKUdsxY10dhtss3RMRLYm/BNrrXOOPAyTyuj7DPlXLB9Ap7L6DC1bE9U4ZyscTmW1AkqsLv15NvVxDTRSoJF7z7C1v9nC/OyH6ce3+qGRCoP8l8WbO97cuX/H9uLAlv6+vkKh0PubzZvyPetyWQAaKQkwMBe3HV9m0ZTRSE2APT+S1+NdDiu1WZauUwppCnDExu0qX3UhgCCDo432i27p9tBiO+TMWtl2gGNRsvttTnr3cSbtmS4Y4Zv/TNqTCkq2PTjPMP7el6AhKcDuuXo74vx6KOF28TOrZMTvBWgIt3veMHRVfuqEgnS7e4I1J2EgLYA+PzV6Au1ggABQaAdlAIM2+Zd30fM8z/M8z/O8X6TrKJKMnIjTAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/gif.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/gz.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/html.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/iso.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQAAAQABAAD/4QBARXhpZgAATU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAAeqADAAQAAAABAAAAWwAAAAD//gA0T3B0aW1pemVkIGJ5IEpQRUdtaW5pIDMuOS4yLjVMIEludGVybmFsIDB4MWU0ZjQ0NzL/2wBDAAIBAwIDAQICAwICAgICAwUDAwMDAwYECQcFBwYHBwcGDQ0PEQwKDwgLCA0NEw4TCwwXDQ0NBwobDw4NDwwNDRf/2wBDAQICAgMFAwsDAwsXCA0IFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxf/wgARCABbAHoDASIAAhEBAxEB/8QAGwABAAMBAQEBAAAAAAAAAAAAAAUHCAYCAwT/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIQAxAAAAGSAAAAAAAAAAAAAAAAAA9+NQlbdjcYzXVW6a0MvAAAAA7HXeXtQnyqew8kmyvtBzhkTjrLrQAAAAkNnYh7w1ggJ8fhjs3HJx4AAAAAJOMAAAAH/8QAIhAAAQMEAgMBAQAAAAAAAAAAAwIEBQABBjAHFBATFkBg/9oACAEBAAEFAv4UdlKJDQL0qPnmfomYF6JBbKSTXx9GoasvPIMah0y1YEGx8ro6koD9Aw7oFIWCs9DYGV6eJ12TltZEJR4PpyHdxsKm8DXLC7Ky3TElWCSjSiOx8yRRAYypVnktWGSZmJYd6xdDqYesWo8zkzPi7LV2Xnov+j//xAAUEQEAAAAAAAAAAAAAAAAAAABQ/9oACAEDAQE/AUP/xAAUEQEAAAAAAAAAAAAAAAAAAABQ/9oACAECAQE/AUP/xAAuEAACAQIEBAQFBQAAAAAAAAABAgMEEQASEyEQFDBCIDJRUkNxgbHBIkBgofD/2gAIAQEABj8C/goRVLM2wAwHmkSkU9tsxxbm6nU923+/vBeGRKtR22ynBRlKsuxB6i1MiA1sovv2j08DVMaWrYhfbuHp06WMi6IdRvpvwaRmCogzMT6YyaFRo3tqYSRWDpIMykenCrjAsjnUX679IKfjRMg+/CqplNnmjKj545fk6jWva2TFLTMbvElm+fAqPgxKh+/SgqV80LhsRVEbZo5RceCWokbLHELnE9S3mmct08hBmpHP6k/OAYahGPsJseBM1Qin2Dc4yAGGkQ3VPz1tLm6nS9mqf3P/xAAmEAABAgMIAgMAAAAAAAAAAAABABEhMVEQMEFhgZGhwSCxQGDx/9oACAEBAAE/IfopxHM7kmij2kdwpcr1jN2mke0jOFLlFEczsQaXYmnrSxCZ718BWmsyR70RndPypBkPawkp+BBElGcFB3abc5IaYuJFEGxqFIMh7XQdg58aw62D4mCdmiOsgvxuEKGPMC9RGlgdA59nHvdYLOa5KKUf8co/xs5yuzF8J2INCNU9AaWCqfEe0QjHCMSar1wLgxXTY7KIx+R//9oADAMBAAIAAwAAABAAAAAAAAAAAAAAAAAABhBAgAAAAhSggAAACQACAAAAADCAAAD/xAAUEQEAAAAAAAAAAAAAAAAAAABQ/9oACAEDAQE/EEP/xAAUEQEAAAAAAAAAAAAAAAAAAABQ/9oACAECAQE/EEP/xAAnEAEAAQQBAwIHAQAAAAAAAAABEQAhMWFxEEGBMJEgQFBRYKHh8P/aAAgBAQABPxD8FPx9CxYBmXVFF8CodiB5mdytV9v40FF9SodKV4m9il8fQkWUZk36YUAKtgKBEY0xpBxzzNsHwIiskUaVcc8zbDQRCIlkfSBWqhIqBwknnotzEoAKNBRIe0zGY/uWfdamD0lIQ4CdBBioQAkcDY49JsBRMG/yj9+irmWgskOznS0ebznzEz+ybO8VHMXAlINJg0HQtgROXf5A+30xCAZlMGU2Eh9NPfhTm4U+vpo71RD/ACo9qXzC/9k=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/jpeg.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/jpg.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/log.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/m4a.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/mdb.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/mid.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/mov.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/mp3.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/mp4.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/mpeg.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/mpg.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/odb.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQAAAQABAAD/4QBARXhpZgAATU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAAeqADAAQAAAABAAAAWwAAAAD//gA0T3B0aW1pemVkIGJ5IEpQRUdtaW5pIDMuOS4yLjVMIEludGVybmFsIDB4YzE3YjgxYjX/2wBDAAIBAwIDAQICAwICAgICAwUDAwMDAwYEBAcFBwYHBwcGDQ0PCAwKDwgLCA0NCg4TCwwXDQ0NBwoODw4NDwwNDRf/2wBDAQICAgMFAwsDAwsXCA0IFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxf/wgARCABbAHoDASIAAhEBAxEB/8QAGwABAAMBAQEBAAAAAAAAAAAAAAUGBwQBAgj/xAAZAQEBAAMBAAAAAAAAAAAAAAAABAIDBQf/2gAMAwEAAhADEAAAAauPXvMQAAAAAAAAAAAAAAAAAJvR8f8AiWjZc85dljqzjjvtPyxpXk1C9KEMsQAAAAAAAAFwh7XJTc+/H5XnXWC5SnbzrrfRfztDWS36heO5yA26wAAAAAAAAP/EACMQAAIDAAIBAwUAAAAAAAAAAAIFAwQGAAEREhZQIDAxQmD/2gAIAQEAAQUC/hk1S7alpZxiY3cy5AWNBnBPAoeGF1a3iH9vs+e/TxdavQHm9PZjibaVvIczd6XbC3dn+HRK21samWY9ieUseG+ddQhlsx2UIJc7DA59hBx6Ob753+fqSzhXt3nj2ThMW/ZUHL2I8npozk3GihgJzbu25vh//8QAIxEAAgEDAwQDAAAAAAAAAAAAAQMCABExBAUhEhMiMDJAQv/aAAgBAwEBPwH6appHzF6iNFLg+FMjohxAk1K359aQjLqi7b8GNLTtgHfvenbqrCoCmM6jfHr/AP/EACQRAAEDAgQHAAAAAAAAAAAAAAECAxEABQQSMDEUISIyM0Ch/9oACAECAQE/AfTebfPjMUs3BAkQ58ppVwPNYApOaOrTxBxGzFLYum6VCnMRdyrh4imLM93PuGmm8oiZ0//EADkQAAEDAgIFBwkJAAAAAAAAAAECAwQAEQUSEyEiMdEjMEFRYbHBEBQVMlBSYnJzNENTYGSBkaHw/9oACAEBAAY/AvyNkjx3HrbzuTwral4ayfd0uY91XQqHJ+Vyx7qDbsGU2pRsNjMDWYYXKt8QCfGruYbMSkdOjzCrdPNWubdXkzMzJLB+Fw2oomM+d2GytuyFcKOhTHho6LJzq/37Vc4pKHykJ8K5aQuR9TX7HCmYbhaP3i9hFcpMhtdgCl8K1YmwT2snjRUhDMxI/BVtUl2c+pu+vQNb/wCeFZlQmcqd63lk+NKSpMYq/TZyf6omJIxNpXuushaO+/MaYxWJS0+oHrlAPXX24sp6mUBFX9KYhf66quMRfc7HeUFJZnNJYJ1aZv1KVGhaOS90vHW2ONZ5El189Sjs8PZH/8QAKBAAAQIDBwMFAAAAAAAAAAAAAQARIVGhMUFhcYGR8FCxwSAwYNHx/9oACAEBAAE/IfgxeSWNgZktUgwmN4qTExJSNWAVVsrIyMCHCHAhTCoFE1twSoOrPaeomKCDPYNkFBCU2O1FiXbjI/TYriBjEwSOwSCgdIv39UwYfCBiRN6OyaHAMLHSIfCIFEQZDEhmBijwVz7o5QWE/CgUribgMTEf19oRoBeoPJmlR08BOK9CQcJdQPVE+ux4uxFo0hkhghwM0E1M1pX8sh0h/9oADAMBAAIAAwAAABAAAAAAAAAAAAAAAAAAAAV2kAAAAAAwAAAA2ZkoEAAAAAAAAAD/xAAjEQABAgUDBQAAAAAAAAAAAAABABEwMUFhoSFAcZGxwdHh/9oACAEDAQE/ENmM79vCO6mQ9oVgCB9UNu8TYfVPvqpJAopTBcITEDhD/8QAIxEAAQIFAwUAAAAAAAAAAAAAAQARMDFhwdEhQEFRcYGh4f/aAAgBAgEBPxDZmtHxe6ugGEe9qR9BDdtAVOArIvinKHkZldTgGhR3Zd8P/8QAJhABAAIABAUEAwAAAAAAAAAAAQARQVFxkSEwMYGhQFDw8WCx4f/aAAgBAQABPxD8GfCpR7OiMCjzrAlGCx+kKoosywCrowKFWcLaeAnH+AGO9fLy0p7UXX0gFgHMhLE2HnwzWkLTabYPQeFHMWQFrQ4Pwvq9Ifr1detsE3BcF7RHJO3LvokcEbLUCwNJ99Dy7um/i8SWxD+kG4Y/BN4Z/WPrD+ZlcplZYOX/ANkyeavMsjfRUcvetD9Bw2NG+JiS8HtH/9k=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/odf.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/odg.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/odp.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/ods.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/odt.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/ogg.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQAAAQABAAD/4QBARXhpZgAATU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAAeqADAAQAAAABAAAAWwAAAAD//gA0T3B0aW1pemVkIGJ5IEpQRUdtaW5pIDMuOS4yLjVMIEludGVybmFsIDB4M2M5MTI2NDn/2wBDAAIBAwIDAQICAwICAgICAwUDAwMDAwYECQcFBwYHBwcGDQ0PEQwKDwgLCA0NEw4TCwwXDQ0NDwobDw4NDwwNDRf/2wBDAQICAgMFAwsDAwsXCA0IFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxf/wgARCABbAHoDASIAAhEBAxEB/8QAGwABAAMAAwEAAAAAAAAAAAAAAAYHCAIDBQn/xAAbAQEAAgMBAQAAAAAAAAAAAAAABAcCBQYDCP/aAAwDAQACEAMQAAABz6LW+iAAAAAAAAAAAAAAAAAAEyhtux4Wjc1ao6+Y4PAyUxbrLFDP0AAAAW7wvjU85WOfdBZ795cjjhN2oZZgAALvpC1Imt+lXKv6/r6ms+UF6PnWJdQSJoAAAAAAAAAH/8QAIRAAAQMEAgMBAAAAAAAAAAAABQIEBgEDBzAINwARUGD/2gAIAQEAAQUC/D4/ZJIS5/Cw6rOQABMVXbgvs3LEjWKMxGQiDDeatFMZRswX2byU7ATWtFSV5deu9cSjhx/YgEXIjpfyU7A2YGHWX8vT6onzkepKsibMRlaCZKPNx+82msrEtWpe/fckvj//xAAmEQABAwIEBgMAAAAAAAAAAAACAwQFAAESEyBBESEiMDE1QEJx/9oACAEDAQE/AfhyKhC1JQNrVHyE0mlZ2r1heklBIMwN9UxMMrNyQxc+FQHrg/KTTERwBplxXuzIW3mkYl4amWI1HNbpNhQv9e5//8QAJBEAAgICAAQHAAAAAAAAAAAAAQIDBAASBRMgQREhIjAxNED/2gAIAQIBAT8B/HbciEsuVbXEFTnv6hiOCuy9+q/fr8po/Hzzhn1FxVAGq9N4SGuRF85HRsM2gGVIdIRGe3uf/8QAKxAAAgEDAQUHBQAAAAAAAAAAAQIDAAQREgUTITBRECIxQXSCshRQYGGx/9oACAEBAAY/Avwez2ezmOOdu8w6AZrEV1dwv1bv1vHAuLMnAmTnbO93xNRWUVqs7lN45ZsU+zLuFbWW5GjduchqvLA8fp5CFP68ubs73fE0PTrQIOCOINR3EvG4ESxu/XAxnmLOkAgt38JJTpqzv2urWeKLOsJnpQ9OvNLTDVBYrvivU54CgAMAdjKDkxwIDzTO6l7W4Tdygf2hKu1bRQfJ30062rjaF34Lo8Kmu5nMk07amP2j/8QAJBABAAECBAYDAAAAAAAAAAAAAQARITAxQVFQYXGBofBgkeH/2gAIAQEAAT8h+DoDBSXqFGNE7MXeJaHE9To7ON5Ug7f2MFsRdxcyGzvFcQia519YvlSe95xij6BpeVt2i1kOqmHrN5xxDemcU8NYCVZrPe88Wjy9P4qECGoAY/QJ69eGhW3bNMRLZ2ZcrgMl3XhIxL//2gAMAwEAAgADAAAAEAAAAAAAAAAAAAAAAAAAENgwAAABAKYAAAABSqQAAAAAAAAAAP/EACARAAICAQMFAAAAAAAAAAAAAAERACEgMFGBMUBxobH/2gAIAQMBAT8Q7Ovwk+QcXEa33gVYMhhi5BcT0kAAIDHquRUZO/EsIRan/8QAHBEBAAIDAAMAAAAAAAAAAAAAAQARICExMECh/9oACAECAQE/EPT0fIMPBfA24yHSbDPknPgY950sLuLu1PJ//8QAIhABAAEDBAEFAAAAAAAAAAAAAREAITEwQWFxUFFggZGh/9oACAEBAAE/EPY+LJjSIPqsZvvvhte6vGwMC4HKc2dl10TE/XBIGJZgqNgx5hEW88STMRMUA1oon/WzXRXluiiQGR7GmmhlJSfkSeZ07oAVwBTGyGPehy1A+2TC8L51r9r79s8rs8Je18OH6qelO8XmTSjmxTuI9f/Z]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/otg.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/otp.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/ots.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/ott.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/pdf.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/png.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/ppt.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQAAAQABAAD/4QBARXhpZgAATU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAAeqADAAQAAAABAAAAWwAAAAD//gA0T3B0aW1pemVkIGJ5IEpQRUdtaW5pIDMuOS4yLjVMIEludGVybmFsIDB4Y2FmYjYwMTj/2wBDAAIBAwIDAQICAwICAgICAwUDAwMDAwYECQcFBwYHBwcGDQ0PEQwKDwgVCA0NEw4TFRcXDRkNDwobHRsNHQwNDRf/2wBDAQICAgMFAwsDAwsXCA0IFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxf/wgARCABbAHoDASIAAhEBAxEB/8QAHAABAAICAwEAAAAAAAAAAAAAAAEHAgYEBQgD/8QAGwEBAAIDAQEAAAAAAAAAAAAAAAEFBAYHAgj/2gAMAwEAAhADEAAAAetJ+efo6EoQkQkQkQkQkQJMscoBAAjmT54jPCJBIERMSZY5AQumzey2brXH/hsmn7lsWu+Tuu5+nco61stY2bWVbZhWWsRMSZY5AQ9kVXalUdN5YuGqvQOXi11ot7+RcLL7GsrNrLR99CstYiYkyxyAh7I1zjW92DjPaDaNX8ma1s3Xce7JlWVxU7W2QVVxETEmWOQEAO+26s2bg8njGHmBHoCImJf/xAAjEAACAQMEAwADAAAAAAAAAAAEBQMCBgcAATA2EBMVFkBQ/9oACAEBAAEFAv640U8lUm1W1fHZiKgxMFbyejQK5VDqjanalxFbP1/VaupwVMqXhxR0NscuGmFbJpJ9UKSSb0uoAsAyx+tcOKOh5cpprvvKKoANVjOSSWyndZA9+5NYRzpLH61w4o6HmH2fm06m4zilUMQ640oKGHIZ+x72x+tcOKOh34uPJu7w4DR7t3IymNfY/WuHGrJXDawZIcvlwtDqb/LC1BQCBbfFtoE1lDoJ+7o0ZXvIZ+v/AP/EADARAAIBAwICBA8AAAAAAAAAAAECBAADBREgEjEGE4HREBUhJDAzNDVBYYKRseLw/9oACAEDAQE/AfRswA1O/KZnKNNaPZY+QnlUwSgfOte2ohsMwjrdOv8AfKscXFx7Lni4e7biff7/AFVnJqeL1iO/WsDXRmwb0lXdNOr+NQvarnZ+BtmXJcbJPJVeevgiy7YUE3D9v1rGuGuvdXke7dfxkS561QaUADQbP//EADARAAECBAEHDQEAAAAAAAAAAAECAwAEBRAREhMhMUGB0QYVICQwMzQ1YYKRseHw/9oACAECAQE/AewNwknQOgINqZRqYmSS+8kaRtiUMrh1XDdEznkpL6mhh/esVAILaHUjJyuNhBtVvIW/bFEkl84KmkIzSSI5SPBmXUhC8c5sic8M3v8Auwg2k25SYpyJdatWFpmUWSQGx8/sVFGS0hpWscbCDdmpTSO6URBJJxNxH//EADcQAAEDAgIEDAMJAAAAAAAAAAECAwQAEQUSEyEwMQYQFCIjQVFhdIKxsjJxchU1NkBQYmOTof/aAAgBAQAGPwL9Xs2y66f2IJopIKVJNiDtGZq5im0u35iEdhtXOEiR9blq6OBGSe3JerABI7qlFc/EUul1WcBrrvX3jif9NTZMKbKdcgpDi0vN21bKF5/eaDb8tphZGYJUeqg2nEGMx3X1cU6K4rkalZ5KCRmunPqoNvAFK/gcTuNcIvCj1Oyhef3msObV8LiEJPyKzTMmOFtlTmjUgqzdVQlrJUoAouewGwrlggTJjKoWiuwi+vNehEcw6dEfKg40Xkgbt9cIvCj1Oyhef3moIb1O6JGT55zamxOloDKDvzX/AMpmK2LNMpyilOOS47aUb7rFaVAIjspyNX9a4ReFHqdlC8/vNQZjLaFMsBGe6wNy78cpSseDa1OqKk8nOo33UtxjGBLeFrNaEprhF4Uep2UaI7LQy+3muFgjeomujlR3fpcB45Szj2GtlbqiUnq17q/EOF1iyftWJNdnNBpCGdp0c6U33aQ1rfbfH8jYp142CnllZt3/AJj/xAAoEAACAQIEBQQDAAAAAAAAAAABEQAhMTBBUaFhcYGRsRDR8PFAUMH/2gAIAQEAAT8h/bGCRssIJH5AyIIuMQ7f1AYbd0iYnh8CUNAhmYD3ZnDTgKGkcYMgPYtZz617QXKogkyu+FvJ7iK4MjjIjTTX1pBaERggthIq5erw++HU3k4yiR+CqEYLIkjAgkXq42memy9iCQ8LRf4S/wAxnpcVsOpvJxIo0B/KrLtGQV1QIOIJ0M+ecfCLwWrlDD0KJDZ79lh1N5OPxyREVG3q7v2dhuC4futWteWHULPVYNUtENZy9YKlrssiZ6p9kYDDIsS2a8sOgsUPCJFGgg7RCiZfwKC3FLYyZ/I//9oADAMBAAIAAwAAABAAIIIIIIigAAsMACqgAuS2MCqgDqH8ECqgD0CwsCqgBBAEACr/xAAkEQACAQMDAwUAAAAAAAAAAAABEQAgITFBUWEQMKFxscHh8P/aAAgBAwEBPxDt4IwEEMVFUAIBsB4vMNCeXzGw0ApjxBaIGE83A6Kl7dr+4xBTxi6Gzi8gNR0xx9TzaUi02YKRPQu+lbH89ZnfQrEaN6rk14EwiVH/xAAiEQACAgIBAwUAAAAAAAAAAAABEQAhIDFBUWGhEIGxweH/2gAIAQIBAT8QcYjEYjEYjGIxthBaOQ4YESeojvUP3AOz6gqIkho+YDHQWtUQxEsv8QAsSI1dWpZmOA533nj/AC4jPiaENgegv1u5m15LsHl0yKv3UzeB4P/EACgQAAIBAQYGAgMAAAAAAAAAAAERADEhMEFRYYEQQHGRobHR8CDB4f/aAAgBAQABPxDlFFFFEYjEYjzZKs/hQ9EQr/SZkiCrdbzW7WqLH0mP8QSO06IBu+UAlhWvhNUZgJuATNsmKWEVqu/NZ/8AkyGxhLdaCnqCCBAgsYETBIHtSgbG4GeZKEBVZaLx55tMjaHsaKHkBlR0FBTEDDwMCauW0bNnmAs2FXmGKRePPLuLyafGZZC1dD13cfoMlp1aqxFhBuMVSrRM8IkBIa+C8PPOA8cqF8eKIvzCYqd0qYHMrV28+fp1iJ/An12y1ewEton3z9xB3LRXN12cSfQZSLhf+mnnAtZbvzH/2Q==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/pptx.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/psd.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/rar.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/rtf.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/skp.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/sql.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/stp.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/svg.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/tar.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/tiff.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQAAAQABAAD/4QBARXhpZgAATU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAAeqADAAQAAAABAAAAWwAAAAD//gA0T3B0aW1pemVkIGJ5IEpQRUdtaW5pIDMuOS4yLjVMIEludGVybmFsIDB4ZmEyN2IxZjX/2wBDAAIBAwIDAQICAwICAgICAwUDAwMDAwYEBAcFBwYHBwcGDQ0PEQwKDwgLCA0NCg4TCwwXDQ0NBwoODw4NDwwNDRf/2wBDAQICAgMFAwsDAwsXCA0IFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxf/wgARCABbAHoDASIAAhEBAxEB/8QAGwABAQADAQEBAAAAAAAAAAAAAAcDBQYIAQL/xAAbAQEAAwEBAQEAAAAAAAAAAAAAAgQFAwYBB//aAAwDAQACEAMQAAAB2g/FckAAAAAAAAAAAAAAABtNXQrUj96PRnuU9U40JPRQp93PGGAUIAAKFPaFfni03OVTt9lXc6/1PenEY77l8m2JZ+M7PjMPjgFCAAChT3tLsvvrCHbf2FusZ5A1+lf0M+QT2e3eDeGp4hj8gAAAAAAAAP/EACcQAAECBAYBBQEAAAAAAAAAAAQDBQACBgcBFBUgNDYhEBIWMVBg/9oACAEBAAEFAv4NnHXJO0ZzjRnONGc40ZzjRnONGc4wZXSJvE2+2XaaLa5jpKuCnBc9lte5lcnfbLtNIOaoOFUGLGuMUKBia5XFa00EYtr3Mrk77Zdpx+6KaM2AqAXhUjAMkI1rSyzJVsDME6217mVyd9su00UDMa7IyyypeyTMelRipGNVEIqoXCK5O+gVkEKiZVhxQ8/GfjPxn4z8IrgfIF/K/wCJ/8QAIREAAQQBBAMBAAAAAAAAAAAAAQACAxESICEiMhMwQEL/2gAIAQMBAT8B+Fo3pYislbVbU4CrGiPsm5HgFFFZ3U8VcgvzoZ2UVALyBGRqeNq9f//EAC4RAAECAwIMBwAAAAAAAAAAAAECAwAEBRETFCAhMTRBUmGhwdHhBhIVMEBx8P/aAAgBAgEBPwH4Mkylb4bVrhUq2GMJKDYd/aL6U2ePaL6U2ePaJhtm5DzQstxKXpaYl1Tj6cCbyiKJRlOP2vZkx4io4bOEs5jC9CH2eWJTVATSSqKOuXYasOc7x1j1dj8R1hypy6k+ReveOsVBpCGQ2jLlPL2//8QAOBAAAQIDAwgIAwkAAAAAAAAAAQIDAAQSERMhMDE2QURzk5QFECJRcoKxshVhcSA0UFJgdJLBwv/aAAgBAQAGPwL9Bpl2gFOKxxNkbNxhGzcYRs3GEbNxhGzcYRs3GEYCXJ3ogjWMgndL9IdeU9csNqpwFpJi4Kw6haakLssw+zJ+b2mHPEcgndL9Idbug+y4aqbbDbF+tIQEilCBqHV2rRKs4uH/ADAnJZBSwMHUZ7Pn1Sfm9phzxHIJ3S/TqVMvLcZaVg1TnPz+kfDKbXirA6qfzfSG5ZvMnOe898KQpIUhYsIMFItMs7i0r+ok/N7TDniOQTul+kUn7s12nVQlCU0oRmi9oTe001da5ZevFCu5XfDEu4mlxorB/iYc8RyCHXnLpqhSaouGenpJKP2kaQyXJxpDJcnGkMlycaQyXJmNIZLkzEv0g90zKurlgR2JYoJBELOon8F//8QAJhAAAQIEBgIDAQAAAAAAAAAAAQARIVFh8BAwMUFx0ZGhIFBgwf/aAAgBAQABPyH8GJvR0KCpq01aatNWmrTVJLScHkJIhiMcmeC4iYOv4H9QYyBojm8/Je/TyZ9Xv420vvYUd7MuNTzhA5uDg8uR9BMrwFJoTtscV79PJn1+VFP1kHLuVt5huPoRQIobtx3UJ0QOcEHUIWDqdLfmOsF79POnOaOkqGKVjUdpGM2r3q/TzQgYd/8A/wB/vV/vRDf7kgBGAOrI+l//2gAMAwEAAgADAAAAEAAAAAAAAAAAAAAAAAABwAPgAAAPTLPAAAA3LTtAAAAAAAAAAP/EAB8RAQACAQMFAAAAAAAAAAAAAAEAEUEgMWEQITBAUf/aAAgBAwEBPxD0Sbsx7kThnDMCaNmI4NbjLEXboZRYq33poKYRR4//xAAiEQACAgECBwEAAAAAAAAAAAAAARExYSBRITBAQXGh0fD/2gAIAQIBAT8Q6Gg9xaTYoywywceJmrmowt9HtoXWwdhoTFvnb6RFizB+ptoMuhJovZeJIoT+qUE4KxafCLQ3y//EACUQAQEAAQIFAwUAAAAAAAAAAAERIQAxEEFRYfAwkaEgQFBggf/aAAgBAQABPxD9Ke5+8UUUUUVWAKPrtqtIj7jE9HBg7RaARyAEt3wDd0Gk1gRITMCRzNnnPqG8T1+jgeKrfKosESDTkiZ0bJ1AKsXdS1Z/ADhePdem7D7k2F3msjUwWsG2ruOGOy8VvE9fo4fPanwgpBRVuDgmUOQDQwOIUMyfMdIm5NXm1OHBfuvsAGDUl32lROyaeJWVb8nmiuc4LeJ6/v8ADKmXe2eMskP0Kp1GMlVmZhjd84vh29/wzuf/AP/Z]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/txt.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/vwx.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/wav.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/webm.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/wma.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/xhtml.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/xls.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/xlsx.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/xml.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico/zip.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/ac3.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/accdb.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABzAGV0ZXh0AAAAAENvcHlyaWdodCAyMDA3IEFwcGxlIEluYy4sIGFsbCByaWdodHMgcmVzZXJ2ZWQuAFhZWiAAAAAAAADzUgABAAAAARbPWFlaIAAAAAAAAHRNAAA97gAAA9BYWVogAAAAAAAAWnUAAKxzAAAXNFhZWiAAAAAAAAAoGgAAFZ8AALg2Y3VydgAAAAAAAAABAc0AAHNmMzIAAAAAAAEMQgAABd7///MmAAAHkgAA/ZH///ui///9owAAA9wAAMBs/+EAgEV4aWYAAE1NACoAAAAIAAUBEgADAAAAAQABAAABGgAFAAAAAQAAAEoBGwAFAAAAAQAAAFIBKAADAAAAAQACAACHaQAEAAAAAQAAAFoAAAAAAAAASAAAAAEAAABIAAAAAQACoAIABAAAAAEAAAB6oAMABAAAAAEAAABbAAAAAP/+ADRPcHRpbWl6ZWQgYnkgSlBFR21pbmkgMy45LjIuNUwgSW50ZXJuYWwgMHgyNmNiZGMyY//bAEMAAgICAgIDAgICAgUFAgMHBgQHAwMHBwUFBAYIBxERCAcICAoLDgwKExkLCAgXHxcZGw8dHR0KDBEjIA8SDh0dD//bAEMBBQUFBwMHDQQEDQ8TCBMPDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PD//CABEIAFsAegMBIgACEQEDEQH/xAAbAAEBAAMBAQEAAAAAAAAAAAAAAQYHCAUJAv/EABQBAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhADEAAAAdGgKIoiiKIoiiAWUoAB+S0AAJLBZSg93prSv0fNGbBxvaxzHoHdHIhkWO7y1oYyCSwWUoNm/RL53dYHHnf/ABftw9fnnobnY9DDc3wkwwElgspQbN7Y4O7mNkac216Rzjzv0Jzwe1gvr62AJLBZSgSi5dh9MuxAKACSw//EACQQAAEEAgEEAgMAAAAAAAAAAAUBAwQGAAIwBxEVNRIWFEBQ/9oACAEBAAEFAv6/dM7LyCx7pWVG6X65G6e11jItfCQ8v4YgS2+l2TJokmO4qZ7rJVxCQ5edT3ZGmfNcqT1jfkmmGopDgpnupD2kdp6I/PhV8h5QffTpAMv3QpkE3Yjs2xe04KZ7q/EPwhMdu16i+mU/5sX4y8KX7TrkGzGiMux+04KZ7o/WodiRtrVrQNTmwpC/E2YC+dCYPs85yVYl7lOCuz2BhGPc63JxiZEkpl/nQIq+Tq2bWTZlFVVXi1VdMjWA5EwodJmk/X//xAAUEQEAAAAAAAAAAAAAAAAAAABQ/9oACAEDAQE/AUP/xAAUEQEAAAAAAAAAAAAAAAAAAABQ/9oACAECAQE/AUP/xAA8EAABAgQDAwUNCQEAAAAAAAABAgMABAUREiExEyJRMEFxobIGEBQjJDJSYXJzgZHhFjRAUGJjscHR8f/aAAgBAQAGPwL831gEjI8pLU5hYDr2WJegy+kAzlWPsspt1mPGsrcP7ij/AFA8HpbQPHCCfnFJRTJIrCNpfDYBOkfcB0BaP9jy6QWhPpKG789OSpHSrsHvGmOvK8JCgjIboJ9fepIbcUGlbS4TcA6axk5n0wywxjcpijZxMxvNYOfWKnLMIsy2tSQngL8jSOlXYMPPuHxbYKj8IqPdErzi/a/Tr1kRITt95aRf2hr1xTBJLThdx3S4kKBtaLiWlQr0tmIp0uZhSmQtBLTAwosDz2ise8VyNI6Vdgw+0D4yaIZ+HP1Qqls0a9LfGPFh3jfn1iepqjm0raAeo/UdcUxCJVlxt3HdMynHpaLjudkb8dnFOkWcKGFOIuzJJw3F87xWPeK5GkdKuwYlkzjziUs3IDWV7whlA3EjDaHqpLTxLbmIbAjmJ4xS0P0tl9tzHlMaptbSLjuSZxetaiIkJKnybMuw64gFMoneUMXGKx7xfIyE9NX2DRJOHM+b9YsmppSeDt0fzF5eZQofoIPepaZ6kpmELx+cooKNNCIv9mFX4F9VoWij0xmWxZbVredt7Ri5OZ5zyd0Gx4pyjyequgcCrEPkYlxUXgrY3sQLHP8A5+I//8QAJxABAAIBAwIGAgMAAAAAAAAAAQARITFBUTChYXGBkbHwINFQweH/2gAIAQEAAT8h/l0NYRETQUw9RQGosxWbrOilJI7i7hlchd6z6UmET/2AuHoHcphdoGj7Rqwj4nGf0PmezcUdMVdTbvdGv1QbgOU5UtGHrAm09SUrWuRXLRiV4JrQtHSFVpErgEsnrLgFVD8DM4O0wfvj0Jr5sAfCld8wWWeCLbxUbzfa/wB/SVYogHNv1PvNKxHYVZfyHsTS/wArXfg0Yw2bFZxqyrBeM/cwesqT2ltVc3f3eiqaVcjEQFubHjuyrEYcAMQVNuUC0GWyS1Aui+U7a9iV/VgxUpUw514dWkuX2vot9bQUWjTfMV67s90BBjnv8ayx0ZgbxaO+Q7EpwX6xVypolAnwMxEz3M5Fd3pUMSu+aO0qapvu4EcU495l1h0dYjCcfn//2gAMAwEAAgADAAAAEBAAAAAACAAAAKAAAAAPCDGAAAANHLKAAAAINCDAAAAEGGAAAP/EABQRAQAAAAAAAAAAAAAAAAAAAFD/2gAIAQMBAT8QQ//EABQRAQAAAAAAAAAAAAAAAAAAAFD/2gAIAQIBAT8QQ//EACYQAAIBAgUEAgMAAAAAAAAAAAABESExMEFRYXEQkaHwIIFAsdH/2gAIAQEAAT8Q/IjYjYjYjbFakVMayi+yVLUsobw4h3XdYlxgXwwA9rAKHgTdITxqO+nc8Ad3ACISGlrZ6qnImLC+ZFvODZeihC0PRgRPQkiGJh/u7sqVxYL+ONHCWc2ZpU99kiATKMmcAE816McrXDb/AFlM+00CjCB3PPWFPhw0LZNm1jVVAlL4yz2gSyUWiU7RUGmJxjF8hWWEHoBtgzyURw0ckBF3YgTwSIQZr6B0RlkLTA39tDvCxgc6Zki/NPZoyIAc4JSdNnqU7aPI/wBJOHIivldT77BW++BTEX8nVRKh3r0HeLleGMFLMYTDuF3IiFmuTkN1suoxI8nrJpwVVCxa3UpsM26kwmXz/9k=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/ade.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/adp.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABzAGV0ZXh0AAAAAENvcHlyaWdodCAyMDA3IEFwcGxlIEluYy4sIGFsbCByaWdodHMgcmVzZXJ2ZWQuAFhZWiAAAAAAAADzUgABAAAAARbPWFlaIAAAAAAAAHRNAAA97gAAA9BYWVogAAAAAAAAWnUAAKxzAAAXNFhZWiAAAAAAAAAoGgAAFZ8AALg2Y3VydgAAAAAAAAABAc0AAHNmMzIAAAAAAAEMQgAABd7///MmAAAHkgAA/ZH///ui///9owAAA9wAAMBs/+EAgEV4aWYAAE1NACoAAAAIAAUBEgADAAAAAQABAAABGgAFAAAAAQAAAEoBGwAFAAAAAQAAAFIBKAADAAAAAQACAACHaQAEAAAAAQAAAFoAAAAAAAAASAAAAAEAAABIAAAAAQACoAIABAAAAAEAAAB6oAMABAAAAAEAAABbAAAAAP/+ADRPcHRpbWl6ZWQgYnkgSlBFR21pbmkgMy45LjIuNUwgSW50ZXJuYWwgMHg2NjE3OGQ1M//bAEMAAgICAgIDAgICAgUFAgMHBgQHAwMHBwUFBAYRDxERCA8ICAoVDgwKExkLCAgXHxcZGw8dHR0KDBEjIB0SDh0dD//bAEMBBQUFBwMHDQQEDQ8TCBMPDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PD//CABEIAFsAegMBIgACEQEDEQH/xAAdAAEAAgMBAQEBAAAAAAAAAAAAAQIFBwgGBAkD/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEAMQAAAB0aSQkQkQkQkQkQkQBatgAAiCwAAKgWrYA21vW3Q5rjYHmNgn5+YHC+ZI+XpLm0kFQLVsAdp5HG68Pm7l/Onvc4owOdwJ6TQnQHP5IKgWrYA7S2Xzv06Wn2H9jgfA5nAnseffXeRJBUC1bACth9fvNbD7PkCQAVB//8QAIxAAAgICAQQCAwAAAAAAAAAABAUDBgACAQcWMDQUMRFAUP/aAAgBAQABBQL+v959eSt1ImxxjdMV2mD0etD4OtAE4Y1SwFmyU+xxcTQTjbeHph6RhcAEKazK32+P5iNmMM08e20LY1B4emHpdSD+R1yfTar2DGlxbxGd7OdcDmamqfD0w9K5kFs3dklsc0iw3VgG1tMupvdsseCsmjZV4emHohVYAJhYEkL8RCo2SBtXy/5vcKyLIHJ7ZV4aLZVKWAayoTM1k034xo0Q/N5bV2PGDsxhp4vxxkJBA/I1vsguETyEy/r/AP/EABQRAQAAAAAAAAAAAAAAAAAAAFD/2gAIAQMBAT8BQ//EABQRAQAAAAAAAAAAAAAAAAAAAFD/2gAIAQIBAT8BQ//EADgQAAEDAgMEBAwHAQAAAAAAAAECAwQAEQUSIQYTMFExQXPBEBUiIzNhYmNxgZHwFCRAQlBSsdL/2gAIAQEABj8C/l7Dp9VWPTxHpDctLbLasnlAk/etD8VPcX6kWQKv4vzHm6SqrRoTaB7CQKxN9nDzuVuOELWUpuL+us3i0ke7UlVFmQypDo/a4LHhYj2vcKfmSVWYaGYqp9qCtWdqxssZdPBigfeXo4sALJ0F6BjvrC/dE3rFJOPs3LGVTLz+jw58LEe17hTcJHpJagLez92qHEcPm30obPzH/Q8GIxlblbTTi0APIBsK8xuGzzabANbVT8RW4pK0tJDjvQderhYj2vcKjwYDO8diAWa6bq6T3VFxHGcP3TjfkJcAy35VDnI6HkhVYgw/hERwNLWjM635VXjYJCQr+yW9a2rlT3ipvK0lPUga9XCxHte4VIxtDripb2bRw3SPhSoLrmXUKDg1INN4cZW8S3eyyLaViLcvZqOsocWneJuhSvjV4uysYL5ukuVtQqWQGG0tJS20MraNerhS42IvFK3F575SRb5fChuMVaJPUTlP0NZkLBHMeDEkS9mgXEuLG9ZdUjNr1ivy+y4z85DqlD6UiMoIbhI1EWMMjd+/iZo8haD7skVZGKKI5O2X/tPyHvSukrNuf6j/xAAmEAACAQMDAwQDAAAAAAAAAAABEQAhMUEwgaFRYZEQcbHhIFDw/9oACAEBAAE/If24rv8ARUYQSIEFEaEajQUrGUDQUFocD3cXyYtAR/TzSIkH9YijIolomhqYPrXgFzNTKeM6T7yDSfXyHtDzwSlt2OXBhlALgWCB7TDGJA4QmNeFxflVHOlzkiwWLuQqeecXaPByQSwxH9YlwGlaYi5AGfejj0ijjIW2RMPR5yFP6zozI9h4QqpNHFdqnvMWF+hzzByMjxAGjObQb2PBAlsQT9wEU6cSujuWk94QgM34QoellF29n5hkhRsoKqVckyu45E5uQbMsIrDQ2ME9meZcnjiV20UFNxoYC7ZKLGAvwhnfwICI6Uh5M7MzysQMSd0nbLwiFqDOogaYkuIHAnPwsUhfHyVQmQfdIa6G+s/QZmD+f//aAAwDAQACAAMAAAAQAAAAAAAIAAAMAAAAAAUAgoAAAAYMwAAAAA8o4sAAAAA8wAAA/8QAFBEBAAAAAAAAAAAAAAAAAAAAUP/aAAgBAwEBPxBD/8QAFBEBAAAAAAAAAAAAAAAAAAAAUP/aAAgBAgEBPxBD/8QAKBAAAgIBAwQABgMAAAAAAAAAAAERIWEwMUFRcYGxECBAkaHB0fDx/9oACAEBAAE/EPpIwRgjBGCMEYIwRjTdirVnPwbS3Y7QifMeFLHRW2y2xzKdrU8Ii2NAZDqn5X9q6n+9NJfUhKCv1glGg31m/UFtFmPTcFKbNR30oqoacURMXK4UqSYLnpo5R4gXX7Fvgbz3K9kb+ApVxpPbN9wVjy+XFT8A/sBGjMWNSgdFKHBSfGw3a8RcSE1ZpT2fImMvG10UOUKFxcgXQ5jlTxQkElo1VuwdQHt7pNwhPLfvfCpD40Ue/sgaNBhS8wR2diSPTTJ+xBMyTzx7gBOG85DVu6S3yNdWwZJ4R6OMDngjmF17CIL8tFr1AjMBw3AGJNif5SGjlBiTa2CMnBc21PliEqtOVlSQi4gxxFs3eS3D46aVAl91JtwgL0tX3pZ7DxhKE7p3kWw7Sxqy6kvqXkxAvm//2Q==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/ai.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/aiff.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/avi.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/bmp.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/css.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/csv.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/default.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/dmg.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/doc.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/docx.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/favicon.ico</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAABMLAAATCwAAAAAAAAAAAAAAAABkAAAAhAAAAIMAAAA3////AP///wD///8A////AP///wAAAAADAAAAAwAAAAL///8A////AP///wD///8AAAAAsQAAAJQAAACwAAAAzgAAAH4AAAB9AAAAkwAAAJAAAAA7////AP///wD///8A////AP///wD///8A////AAMDA2X///8AAAAAKQAAANMAAAC4AAAAqQAAAMIAAADxAAAAsgAAAB4AAAAzAAAAMQAAAAj///8AAAAABAAAAAEDAwNh////AAAAAC4AAABu////AAAAAAL///8AAAAAYgAAAP8AAADtAAAA9AAAAJwAAAAI////AAAAAAH///8AAwMDYP///wAAAAAoAAAAbf///wD///8A////AAAAAFkAAAD/AAAA/wAAAL0AAAAK////AP///wD///8A////AAICAngAAAAbAAAATQAAAHz///8A////AP///wAAAABiAAAA/AAAAOsAAAC6AAAAawAAAHcAAAB6AAAAfQAAAD4CAgJnAAAArAAAALYAAABK////AAAAAAP///8AAAAAZgAAANwAAACvAAAA/AAAAP8AAAD/AAAA/wAAAP8AAACy////AAAAAIQAAACB////AP///wD///8A////AAAAAFwAAADMAAAAawAAAI8AAACcAAAAlwAAAIwAAADYAQEBtv///wAAAAB4AAAArgAAADAAAABFAAAARwAAADwAAAChAAAAp////wD///8A////AP///wD///8AAAAAfAEBAbr///8AAAAAOgAAAMYAAADpAAAAqwAAAJsAAACjAAAArgAAAFv///8A////AAAAAAEAAAAB////AAAAAIMBAQG7AAAAAf///wAAAABOAAAA4gAAACb///8AAAAACgAAAAL///8A////AP///wAAAAABAAAAAv///wAAAACDAQEBuwAAAAL///8AAAAASgAAANYAAAAe////AAAAAAH///8AAAAABQAAAAcAAAAGAAAABwAAAAj///8AAAAAhwEBAbsAAAAB////AAAAAE4AAADTAAAAEP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAHcBAQG4AAAAAf///wAAAABQAAAA5gAAAEAAAAAZAAAAJgAAACQAAAAkAAAAJAAAACQAAAAlAAAAJgAAABEAAACdAAAAwgAAAAL///8AAAAAOAAAAOcAAADYAAAAyAAAAM0AAADMAAAAzAAAAMwAAADMAAAAzQAAAM0AAADGAAAA8gAAAKIAAAAB////AAAAAAgAAABIAAAAaAAAAGYAAABmAAAAZgAAAGYAAABmAAAAZgAAAGYAAABlAAAAaAAAAGEAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/fla.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/flv.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/folder.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAHoAAABbCAMAAACLd2FFAAAAq1BMVEUAAAAAAABAQEAzMzMuLi4rKys7Ozs3NzczMzMwMDAtLS0rKysyMjIvLy80NDQyMjIxMTEwMDAwMDAyMjIyMjIxMTExMTExMTEzMzMxMTEzMzMyMjIyMjIxMTExMTEyMjIxMTExMTEyMjIyMjIxMTEyMjIyMjIxMTExMTExMTEyMjIxMTExMTEyMjIyMjIxMTExMTEyMjIxMTExMTExMTExMTExMTEyMjIxMjF85OfIAAAAOHRSTlMAAQgKCwwNDg8QERIpKzEzNDo7UVdobW5vc3R1dnh+lZalra+xvb6/xMbHysvNzs/Z4uPq7vj5+qyecZgAAADjSURBVHheYiALjIJRMApGwSgYBaNgFHDz8pMMeLmoYDGLLIBdOtohGIiCMByESoJQICFA2JZagbbn/Z/MtbvTnT1xM/8LfMlkfCmNK4t1G5W7Rwns0AHppQQ3x+ReFk47bPJxHU5XQ4jeCtAGkVtXhHaAnEw/CP2epb+NEq08yWuJWpWnOnnwlOi9dNfbiUF7FX2zoAsV7S3oh4q+W9CeNGnSpBtEmjRp0qRJkyZNmjRp0qRJkybt/0dfLOizil5Y0CsV3T/Fl79T4WQgCrBIahhQFWhIsTAMJzAKRsEoGAWjAAAIUEfaWljfLwAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/folder_back.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAHoAAABbCAMAAACLd2FFAAABfVBMVEX////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8robnAAAAfnRSTlMAAQIDBAUGBwgKCwwNDg8SExQbHB4fICQnKSssLS4wMTIzNDY5Ozw9P0FDREZHSUtMTlFSU1dZYGFmamxyeX+Bh4iJjY+QkZWYnaCipqytrq+ys7S2t7i5uru9v8DBxMXLzM3O0NPU1tfb3N/h5OXm6O3w8vX29/j5+vv8/f7ItILVAAACHElEQVR4Xu3Vd1MTQRzG8Wd3Dw0BSyxECYixF2zYG/aCvURaVFCxNxCN5Hbvee1mclwGZ3ASx5tf/GM/LyDfeX6XmcX/y/M8z/M8z/M8TxmN9jAAlII8pbDx1FZAvq2B09/Ia/JtDVwkHXkFGqIMOm4zcnSs5GXbATIPaSMyYqUXWrS8olQvM2RJ9GMbdI7Rsl7+ugFacvPqp3HZsrILRrK86jnDuBweQCBZ7iwn5YWDkmWD7GTj2vtky93lRnmvbDkzEV/b0Q6iQ0GKBu7G5YgLhxBAKb3ILEshJQoYia9Ny8vIoDmV2it5lTZibPb19NSz8uTE+PjY2OgST2oe3bszcv3C2aGiSqmtcY4uKUdsxY10dhtss3RMRLYm/BNrrXOOPAyTyuj7DPlXLB9Ap7L6DC1bE9U4ZyscTmW1AkqsLv15NvVxDTRSoJF7z7C1v9nC/OyH6ce3+qGRCoP8l8WbO97cuX/H9uLAlv6+vkKh0PubzZvyPetyWQAaKQkwMBe3HV9m0ZTRSE2APT+S1+NdDiu1WZauUwppCnDExu0qX3UhgCCDo432i27p9tBiO+TMWtl2gGNRsvttTnr3cSbtmS4Y4Zv/TNqTCkq2PTjPMP7el6AhKcDuuXo74vx6KOF28TOrZMTvBWgIt3veMHRVfuqEgnS7e4I1J2EgLYA+PzV6Au1ggABQaAdlAIM2+Zd30fM8z/M8z/O8X6TrKJKMnIjTAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/gif.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/gz.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/html.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/iso.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/jpeg.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/jpg.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/log.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/m4a.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABzAGV0ZXh0AAAAAENvcHlyaWdodCAyMDA3IEFwcGxlIEluYy4sIGFsbCByaWdodHMgcmVzZXJ2ZWQuAFhZWiAAAAAAAADzUgABAAAAARbPWFlaIAAAAAAAAHRNAAA97gAAA9BYWVogAAAAAAAAWnUAAKxzAAAXNFhZWiAAAAAAAAAoGgAAFZ8AALg2Y3VydgAAAAAAAAABAc0AAHNmMzIAAAAAAAEMQgAABd7///MmAAAHkgAA/ZH///ui///9owAAA9wAAMBs/+EAgEV4aWYAAE1NACoAAAAIAAUBEgADAAAAAQABAAABGgAFAAAAAQAAAEoBGwAFAAAAAQAAAFIBKAADAAAAAQACAACHaQAEAAAAAQAAAFoAAAAAAAAASAAAAAEAAABIAAAAAQACoAIABAAAAAEAAAB6oAMABAAAAAEAAABbAAAAAP/+ADRPcHRpbWl6ZWQgYnkgSlBFR21pbmkgMy45LjIuNUwgSW50ZXJuYWwgMHg0ZGIzYjBmNf/bAEMAAgICAgIDAgICAgUFAgMDBgQDAwMDBwUFBAYIBxEICAcICAoLDgwKEw0LCAgMEAwNDg8PDw8KDBESHw8SDg8PD//bAEMBBQUFAwMDDQQEDQ8KCAoPDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PD//CABEIAFsAegMBIgACEQEDEQH/xAAaAAEBAQADAQAAAAAAAAAAAAAACAEEBQcD/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEAMQAAABnsAAAAAAAAAAAAAAAAAAD0/zCsTqJ1tjjkPs0AAAAGG1f4lTxHPI43TH2+IAAAAKjlyri0HWTqRp1LTAAAAAM0M0AAAAf//EACMQAAEDBAEEAwAAAAAAAAAAAAQBBQYCAwcwEQAUMzQxQGD/2gAIAQEAAQUC/DxiNXJJePxi52KShCQrm3FnlOyUAIU/0NExbduLfI4+21OZDSRcWla9YEVf3JIEwOjLdcvb2Y8jY5yonHS/DgqVFbMfScEC13waUyudhj2d3K/a/8QAFBEBAAAAAAAAAAAAAAAAAAAAUP/aAAgBAwEBPwFD/8QAFBEBAAAAAAAAAAAAAAAAAAAAUP/aAAgBAgEBPwFD/8QALRAAAQMDAQYDCQAAAAAAAAAAAgEDBAAREgUTITAxMkFydLEiI0BCUVJgYZH/2gAIAQEABj8C/B5DQyMGmRRSK1+dKcGWLtvkJMVWjjS2VB8eYGnG1bwBT8RIRk00eBOivOndQ000WfFDNOxp9RXjax4Aqf5g/Wm5kYt6bjDsY90o1DoVd3EQ42mls15G57CL/a1RNSjY5gOK5IqLU7zB+vFc1iaGTTR4Mtkm6/3VZEpamknJXy9eK7pM91A95m04XSt+1bRZIbO175pTsLSHs5hpbah0t1++Na+74r//xAAjEAEAAQMDBAMBAAAAAAAAAAABEQAhMTBBURBhcaFAgfBg/9oACAEBAAE/If4c8l5fXAD6pAkJkeNt7pCcxEOrtVqv4Wk5JAXDDA0/IA4BcOcT9635XfpjB5XlLLzag2uUvFb6cACTEB2aQ4MWgkzc6M21AUoSxG6vGCgJCDivUpRZbGvOnlqamtWNwna57p8FQ0c1LLttIOWd2pZVbsrrWLnZNY+T/9oADAMBAAIAAwAAABAAAAAAAAAAAAAAAAAAABQwgAAAARAywAAAAwigAAAABDgAAAD/xAAUEQEAAAAAAAAAAAAAAAAAAABQ/9oACAEDAQE/EEP/xAAUEQEAAAAAAAAAAAAAAAAAAABQ/9oACAECAQE/EEP/xAAiEAEAAgICAgIDAQAAAAAAAAABABEhQTAxUWGR8BBgwfH/2gAIAQEAAT8Q/Rk0aiYFG1CWIbKqaiCYL0GtfzERQNCfs8jpMcrfbtjOiCxDbKjllxYI5s6lDCmgT30EXoJ3nOzOzxye1lcD/pOh9FGiWibxAerJq90xBYEGRNhDCeL+ynEZCTpSXKAKnxSAqYs+Z2T6Kb3uddR88N1MaPLm4AOhAwj+VGfJvjMNGg+o86gqNRxEGgtMJ2C5QJf4SQU574v/2Q==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/mdb.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/mid.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/mov.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/mp3.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/mp4.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/mpeg.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/mpg.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/odb.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/odf.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABzAGV0ZXh0AAAAAENvcHlyaWdodCAyMDA3IEFwcGxlIEluYy4sIGFsbCByaWdodHMgcmVzZXJ2ZWQuAFhZWiAAAAAAAADzUgABAAAAARbPWFlaIAAAAAAAAHRNAAA97gAAA9BYWVogAAAAAAAAWnUAAKxzAAAXNFhZWiAAAAAAAAAoGgAAFZ8AALg2Y3VydgAAAAAAAAABAc0AAHNmMzIAAAAAAAEMQgAABd7///MmAAAHkgAA/ZH///ui///9owAAA9wAAMBs/+EAgEV4aWYAAE1NACoAAAAIAAUBEgADAAAAAQABAAABGgAFAAAAAQAAAEoBGwAFAAAAAQAAAFIBKAADAAAAAQACAACHaQAEAAAAAQAAAFoAAAAAAAAASAAAAAEAAABIAAAAAQACoAIABAAAAAEAAAB6oAMABAAAAAEAAABbAAAAAP/+ADRPcHRpbWl6ZWQgYnkgSlBFR21pbmkgMy45LjIuNUwgSW50ZXJuYWwgMHgxYTJlNTE4Of/bAEMAAgICAgIDAgICAgUFAgMHBgQHAwMHBwUFBAYIBxERCAcICAoLDgwKEw0LCAgMHxcNGw8dHR0KDBESHw8SDg8dD//bAEMBBQUFBwMHDQQEDQ8KCAoPDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PD//CABEIAFsAegMBIgACEQEDEQH/xAAbAAEAAgMBAQAAAAAAAAAAAAAABQYBBAcDCP/EABQBAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhADEAAAAaCAAAAAAAAAAAAAAAAAADY6DSfctFCvHYD5x1/oujHJU1CmQAAAAAAAAAYlPTpZpSEPKlUu3Y9wi4DiFDL/AELAyAAAAAAAAAD/xAAfEAACAwEBAAIDAAAAAAAAAAADBAEFBgACMFAHEWD/2gAIAQEAAQUC/hhBMx6DkdCaD5TQL8QZAyNRssEEUPxhdcWiLOyjltRfKyht0WYb/IZf2ba3p+Zd9N/TqouOyLFaAvesJfRzmcukIqcPYPeRYCm8Q9lsitz9ZUh+BIiYfc7az8eZ2Ojnl91ehmo2tdYTe65Ko6x0lxZ/Uf/EABQRAQAAAAAAAAAAAAAAAAAAAFD/2gAIAQMBAT8BQ//EABQRAQAAAAAAAAAAAAAAAAAAAFD/2gAIAQIBAT8BQ//EADgQAAECAwIHDgcBAAAAAAAAAAECAwAEEQUTEiJCUpGhsRUhIzBDUFFhY3FygdHhMTJBU2Bic8H/2gAIAQEABj8C/Bg1LtKU6chsYRjCFnUHaKSk7YqqzVEdlReyC282UrGSvFMValHFDpSlRjhWlJ8YI4tSZabWgK+0SmuiK7ovV8aoBRaS1DoexxriluSIvW98ONjDBPcfhFJCzwE5z5rqEFKltYBycAEa4q7LtBec0gNnVzPgSkqtxXZisVMqlP8ARQ/ysVF0eoK9oK5iz1XYy28caoS/NruWTv0Iq4fL6Rwrrqj1qpsEEPWmWl9bgroMEyFvtufo4lSTppTiLydli4gciDghXeYDMjLMssjJbTWkV3R0IR6Rwq23B0LTTZCWJpNzMnP30K8/WFS7IvJ7MHyo7zBv5who8kziJ9+aP//EACgQAQABAgQFAwUAAAAAAAAAAAEAESExQWGBUXGRofAwsdEgQFBg4f/aAAgBAQABPyH9GwjKoXYgtzfyDVAtel2lWY3LhQ2Zo6HnUIpRjyakxz9LHwMbqzRGjWHzwIY4be6D+w3QuLy0cj3Byfa6wgBkO9GKPkmEH8PQaHHp+IUBXh3pAahrGveMbDGifO6m8HXbqadm6FNXgegQE4ZPGwssFmY3Ipdo2qe314/mlXutTlLXjy2N7RTA0AQEdQq70zDdEqquBl6I9RrPp4WXaLHM7RODS+6szUL8fWb3cfuf/9oADAMBAAIAAwAAABAAAAAAAAAAAAAAAAAAACBTAAAAAAAAAAABywRxgAAAABAAAAD/xAAUEQEAAAAAAAAAAAAAAAAAAABQ/9oACAEDAQE/EEP/xAAUEQEAAAAAAAAAAAAAAAAAAABQ/9oACAECAQE/EEP/xAAoEAABAgUCBAcAAAAAAAAAAAABABEhMUFh8IGREDBRoSBAUGBxscH/2gAIAQEAAT8Q9jdsKgS4VQyVqYwOyOwrV+7PZQ+JFyuMFBE4YJ/JBTcDg30tyyMWp/NzCgIFCKK0gCUnQtI6EIA0MgIagBOsSLo9PwASoYI3FDMATAOhD3VZwyQ2Xo9RoONdffQGwi3QGBqUIHs8NcvsmdPPhMgr2Zg1RWsRKDoBbxsTPRtUXOtaZ6cBATVrPLL0R3pv7ptZAjI0cb6RJhbcABWgECPQl5oBpcyJM8y//9k=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/odg.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/odp.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/ods.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/odt.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/ogg.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/otg.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/otp.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/ots.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/ott.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/pdf.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/png.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/ppt.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/pptx.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/psd.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/rar.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/rtf.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/sql.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABzAGV0ZXh0AAAAAENvcHlyaWdodCAyMDA3IEFwcGxlIEluYy4sIGFsbCByaWdodHMgcmVzZXJ2ZWQuAFhZWiAAAAAAAADzUgABAAAAARbPWFlaIAAAAAAAAHRNAAA97gAAA9BYWVogAAAAAAAAWnUAAKxzAAAXNFhZWiAAAAAAAAAoGgAAFZ8AALg2Y3VydgAAAAAAAAABAc0AAHNmMzIAAAAAAAEMQgAABd7///MmAAAHkgAA/ZH///ui///9owAAA9wAAMBs/+EAgEV4aWYAAE1NACoAAAAIAAUBEgADAAAAAQABAAABGgAFAAAAAQAAAEoBGwAFAAAAAQAAAFIBKAADAAAAAQACAACHaQAEAAAAAQAAAFoAAAAAAAAASAAAAAEAAABIAAAAAQACoAIABAAAAAEAAAB6oAMABAAAAAEAAABbAAAAAP/+ADRPcHRpbWl6ZWQgYnkgSlBFR21pbmkgMy45LjIuNUwgSW50ZXJuYWwgMHg2NjE3OGQ1M//bAEMAAgICAgIDAgICAgUFAgMHBgQHAwMHBwUFBAYRDxERCA8ICAoVDgwKExkLCAgXHxcZGw8dHR0KDBEjIB0SDh0dD//bAEMBBQUFBwMHDQQEDQ8TCBMPDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PD//CABEIAFsAegMBIgACEQEDEQH/xAAcAAEAAwEAAwEAAAAAAAAAAAAABQYHCAEDBAn/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIQAxAAAAGLAAAAAAAAAAAAAAAAAAkY7pkg7dsow7Luwh+d6zVkAAAAdBc+7waJ49c8Qvn7Ys56p9oq4AAAA2vFN3Nj+2Fq5olQ+S0nJFemYYAAAAAnbXm4vdK9IAAA/8QAIxAAAQUAAgEEAwAAAAAAAAAABAACAwUGATAUERMVFiBAYP/aAAgBAQABBQL+FFEINkEw0zuG4iq4UuFA5VllLGvb14bxvY/C48fzerN1zTgfP0YK+0tavsRUy8O8tVftiYf1Z4Q9ojNXBDy3TUblLq6ONfJ29urodgpvVnzTKkYe6p7BvxlTIvbqQUXpxvW1imhL6sldiitKzdKaucTXKLGVDE/mmz0VgXyeT1i2dgEm6y9apdNeTKSSSXn9b//EABQRAQAAAAAAAAAAAAAAAAAAAFD/2gAIAQMBAT8BQ//EABQRAQAAAAAAAAAAAAAAAAAAAFD/2gAIAQIBAT8BQ//EADkQAAECAwMHCQYHAAAAAAAAAAECAwAEEQUSIRMUIjAxUYEyNEFCYWJxkcEVICNDUrEkQERgY3Kh/9oACAEBAAY/Av2KliVaKnT0CAqdnAk/Q1pf7Gk86eIj4M24D3qKhTyKOsDrN7Rw1k3Tnd7Hfd6PX3Z7NOb3jSmzhqy4xMlu0GFqo8jaPHfF2bssPoHzZU0J4RR2x5oK3XIpKWA+o/yaAilpOhiSO2Xl8Vr8VROtsAZJBCQE7BqxaNlLGcpUUKYXyXkxkrVknGHu0VTFfaA4giMJq8dzYMZOzJMsyx/VzG2ndETcu2dFGFTtOrz3IlyzFqIWlHKaO+KJmkY/LewPkYvZgye26mL1xlvt0Uxm1lIL88rABHJ84mm5ld6YrVSu906tdnTirqVG8lxWzjGUMqAo9dnRr6RoTboG7CKuKcX/AGNPtBXcQ2ncnlr9TEzOFNMqa03az8LOLSn6QcPKOdg+KUxQz5A7lE/aCt1wqWesrE/l/wD/xAAmEAABAgUEAwADAQAAAAAAAAABABEhMUFhoTBRgZFxscEgQGDx/9oACAEBAAE/If4Xoyv3NEcGKDuzD2hzFt2fiEnjW+KdAZdbvP71CYNnOm2ufwSRmZjiZXZ9Od2aoSBAaIL/AECsDj6WQEKeVkRyRV74LDakg9UsoAA+adquk43gxPaDALAvm8GZQJnPWQhsXfsntgtjNI2DJyibCcO3I0ST5fTJxkNg0cEdIWP2H2EY9ZCJjDxtb5TfCK5ab1JqCMEiQdnJ0xvTc4moKklUEruARJ1ywfxFPHggcCnxHe8KI4A21MNqQDcSzQQRjcHH0hBKm3PEqvakk5P6/wD/2gAMAwEAAgADAAAAEAAAAAAAAAAAAAAAAAABEMAAAAAAFKIAAAAFGGAAAAAAAMAAAP/EABQRAQAAAAAAAAAAAAAAAAAAAFD/2gAIAQMBAT8QQ//EABQRAQAAAAAAAAAAAAAAAAAAAFD/2gAIAQIBAT8QQ//EACgQAQAAAgkEAgMAAAAAAAAAAAEAESEwMUFRYXGBkRChwfAg8UBgsf/aAAgBAQABPxD9Fs68DyuubFqiD3qYdBkXzE/YkboDgoQEAX1b+KwaVtBM2u/8FAq0FM26C3FlN6VErLJLqvlQacSW5E150X2ptB9RIxgnqFAs/NSECiWrN1pAJYZkounSEJDRZs1c8WtaHMcqjYegCCZMoktYIIm5icyRAc/mpLhS+kWKa+q4kqW7V2AX6WNhJ4xeqX7tYQ77H1kEZSgLf6Qe6ackYXtTRoKttCMgQDvnCvnm94DpBmZ7FxwdyAMAoDRQaAUPi6wG6aEMaaPpThhC3eB+O1P/2Q==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/svg.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/tar.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/tiff.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABzAGV0ZXh0AAAAAENvcHlyaWdodCAyMDA3IEFwcGxlIEluYy4sIGFsbCByaWdodHMgcmVzZXJ2ZWQuAFhZWiAAAAAAAADzUgABAAAAARbPWFlaIAAAAAAAAHRNAAA97gAAA9BYWVogAAAAAAAAWnUAAKxzAAAXNFhZWiAAAAAAAAAoGgAAFZ8AALg2Y3VydgAAAAAAAAABAc0AAHNmMzIAAAAAAAEMQgAABd7///MmAAAHkgAA/ZH///ui///9owAAA9wAAMBs/+EAgEV4aWYAAE1NACoAAAAIAAUBEgADAAAAAQABAAABGgAFAAAAAQAAAEoBGwAFAAAAAQAAAFIBKAADAAAAAQACAACHaQAEAAAAAQAAAFoAAAAAAAAASAAAAAEAAABIAAAAAQACoAIABAAAAAEAAAB6oAMABAAAAAEAAABbAAAAAP/+ADRPcHRpbWl6ZWQgYnkgSlBFR21pbmkgMy45LjIuNUwgSW50ZXJuYWwgMHgzODYxYmUxZP/bAEMAAgICAgIDAgICAgUFAgMDBgQDAwMDBwUFBAYIBxEICAcICAoLDgwKEw0LCAgMEAwNDg8PHQ8KDBESHw8SDg8PD//bAEMBBQUFAwMDDQQEDQ8KCAoPDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PD//CABEIAFsAegMBIgACEQEDEQH/xAAbAAEBAAMBAQEAAAAAAAAAAAAABwEFBgMIBP/EABQBAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhADEAAAAdgAAAAAAAAAAAAAAAABstZQTOM6Q3SeihJ6KFP+54w8QAAKBP6AeWn5uqkq7jXfVZDo99z/ACUfo4zs+LPIAACgT7sx9awjcFc/VGRZeenYn0+ukJPMAAADGQBjIAAAf//EACgQAAEDAwIGAQUAAAAAAAAAAAUAAwQBAgYVFhEgITI0NRASEzBQYP/aAAgBAQABBQL+DiRH5zu2Si2yUW2Si2yUW2Si2yUW2C1VWnD8GMecFAVLULC7xL3RdF0XRY17Fzu58Y84OdeEIoSeKvIEJuKvZGAbh0WNexc7ufGPOQTHNSavEzLZg+CyOZvstctNirxT+Nexc7ufGPOCCrir9llrdv22/r+CQ9okwDjuxCzndzgJLEWXCkxx7er1Wr1WsVWsVWr1VkuBWXfXjX9J/8QAFBEBAAAAAAAAAAAAAAAAAAAAUP/aAAgBAwEBPwFD/8QAFBEBAAAAAAAAAAAAAAAAAAAAUP/aAAgBAgEBPwFD/8QAPBAAAQIDAwcIBgsAAAAAAAAAAQIDABESBCExEzA2c5OU0RBBUVJygrGyBSIjNGHBBhQVICRQYGJxgaH/2gAIAQEABj8C/QabNZ0zdN95lGCNsIwRthGCNsIwRthGCNsIwRthFyUT1oiRzCNUvwh15T1LCDTMCZJjIKVUlSakLlj92xd7yw52jmEapfhDjeSrYWaqapEGPrDqZAJpQgcw5PX90bvdV0/tgW2wo9hg6jGn48lj73lhfaOYRql+HIu1WlxSGjczTifjH2ZR7eq480utDdlZwGJ6x6YU2tM0KEiDzwUD3Zy9lXyix97ywvtHMI1S/CKCPwzd7qvlCW0JkhIkkDmjLUDK001yvl0cq7M7/KFdU9MMWZ9MnUFQI7sOdo5hDtocpaoUKv6jIWX6QNBE532IzP8AsaRtbkeMaRtbkeMaRtbkeMaRtbkeMaRtbkeMWb0javTTalsgj1LKUzBELIwn+S//xAAnEAEAAQMDAwQCAwAAAAAAAAABEQAhMUFRYTBx8BAgkdFQYIGxwf/aAAgBAQABPyH9DMEFAIgJffIJppppgJ2FSJzFnoqW+UrE5/iJPmjJ4RQhMXNMVGyo2VGyo2UTFf768Zv0VDiNxdFyMPHxUI0wMmbOuc+lkkhBbgHn+qR+GArwmb8NZ7V4/OvGb9FTFXQhAku+dKhWShHf/lF6A23fL66opSB0gclCQszdtX2+q8fnXjN+ioEUNH20Pf7oNQhUAMFTiyw7hN3f0zVrZcG54HmK2fR03wnfNeI36AvpaxYWzFBp1pSrqvuXrx49egg9m4iFlxNBlRp8/hf/2gAMAwEAAgADAAAAEAAAAAAAAAAAAAAAAAFHOMMAAAFCLPLAAAHCIGKAAAAEAIAAAP/EABQRAQAAAAAAAAAAAAAAAAAAAFD/2gAIAQMBAT8QQ//EABURAQEAAAAAAAAAAAAAAAAAAEBB/9oACAECAQE/EEw//8QAJxABAAEDAgUEAwEAAAAAAAAAAREAITFB8BAgMGHBUXGBkUBgodH/2gAIAQEAAT8Q/QrBw+QyggurPXjdv71s/wA1s/zWz/NbP80OIYUeXsXoFb6PojCc7mKGarNO0vfgBQAyToNaEvea1kJGQo10dbdpXa12n1Xa/VWIPYruXnjwBvnfFASOFwF5wiLyVBJYO2KulTh8AVBK0KyYFJ+QhpgLmJRi46JYUmCwC5hwsXVnps/AXVpWFIgCzBbG1omHAEjbQmheJaQPwTJWdioxh95P4BYqGMcpUIayKUiJrhidx6zD2VrB0s/Ad9oiQ8LADCUO5ZjgchulCh1n+JhqgYevBsDbRlGcaWDJAgdMz82PNXMnfVZRUVH43//Z]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/txt.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/wav.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/webm.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/wma.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/xhtml.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABzAGV0ZXh0AAAAAENvcHlyaWdodCAyMDA3IEFwcGxlIEluYy4sIGFsbCByaWdodHMgcmVzZXJ2ZWQuAFhZWiAAAAAAAADzUgABAAAAARbPWFlaIAAAAAAAAHRNAAA97gAAA9BYWVogAAAAAAAAWnUAAKxzAAAXNFhZWiAAAAAAAAAoGgAAFZ8AALg2Y3VydgAAAAAAAAABAc0AAHNmMzIAAAAAAAEMQgAABd7///MmAAAHkgAA/ZH///ui///9owAAA9wAAMBs/+EAgEV4aWYAAE1NACoAAAAIAAUBEgADAAAAAQABAAABGgAFAAAAAQAAAEoBGwAFAAAAAQAAAFIBKAADAAAAAQACAACHaQAEAAAAAQAAAFoAAAAAAAAASAAAAAEAAABIAAAAAQACoAIABAAAAAEAAAB6oAMABAAAAAEAAABbAAAAAP/+ADRPcHRpbWl6ZWQgYnkgSlBFR21pbmkgMy45LjIuNUwgSW50ZXJuYWwgMHhkMDQ5ZDhjZP/bAEMAAgICAgIDAgICAgUCAgMDBgQDAwMDBwUFBAYIBxEICAcICAoLDgwKEw0LCAgMEAwNDg8PDw8KDBESHw8SDg8PD//bAEMBAgUFAwMDDQQEDQ8KCAoPDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PD//CABEIAFsAegMBIgACEQEDEQH/xAAcAAEBAAICAwAAAAAAAAAAAAAABwEDBQgCBAb/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIQAxAAAAGJgAAAAAAAAAAAAAAAAAAAYtMWMgAAAwVQ38z9Z1vOP2eFhOV2x71yhyntNIybAAAA31uOjFGnQxZo1g36AyAAAAAAAAAD/8QAHhAAAgMBAAIDAAAAAAAAAAAAAwQCBQYAATAWUGD/2gAIAQEAAQUC/MZ5NVev9dbjbZ6LJsfTC6MZT866Ua1YZcdexs8dcV8fRk7tCjZualvU80oyiTsUiNh2yeJZtKJtvkp6xjJ9qbhK7c9AilBP5k2ytwLsStRxtm4MBCENL7X/xAAUEQEAAAAAAAAAAAAAAAAAAABQ/9oACAEDAQE/AUP/xAAUEQEAAAAAAAAAAAAAAAAAAABQ/9oACAECAQE/AUP/xAA1EAABAwEDCAgFBQAAAAAAAAABAgMEEQAFFAYQEiEiMkGBExUwMVFxkfAzQmGx0TRQYIKh/9oACAEBAAY/Av4xfWUE+OiShpHQxG3kBSVOH6H+v+9piZQF0QAKqfl7Ory/NLPxoLJygvBbZRiXfhIJ4j792ZKEJ0lqNEgcbXNkuyr9M300qnFw+z6izbUlk5N3jo6PTNfBV58PtbEMoF6QTrS/E2tXl39iuRPh4hKkgIcSAVNfUWVNubKDrpobWCdUG1N8tQ9QLGPMjqivD5HE0zKvCVqhXc3iHVHuqN388rS7wd333SqngOA5CwjwoypTp+VtNbImX1lD1S2drAMq6QuctY9BbFwYeFbCNFSlABTprvGnYpeYcLLqd1batFQ52eu++Yjd7tlshpxxNHG1U1Gvs5pdzsMKTKlvVffrqKPD34nMiDcsRu5I+jtlkVWo+NfZsp55wvOq3lrNSf3b/8QAJxABAAEDAwMCBwAAAAAAAAAAAREAIVExQXEwYYEQQFBgobHB8PH/2gAIAQEAAT8h+SLW9hm1voFBst2Ghp36PNabxT2dJLNyOHzBSGaVsSIUhhsRc0aRS+CCpUsBR4LbuT+9xige7AiVCBAAyycmosE3LsU/USUMrfoMZaVc1BzN4RtvQh9qxziIYnyK1MNrcZJ15LekJDxFgfkNdi2Qv2IDxW6gowNJcctqIG0a5cx2IVuSprtRDhB2QXV6Lqfl1PYXKhwVsxCEIxmDuotFGua4wNDvtp9z0HWCCx0MoROY5Unu5XflW77C/wAG/9oADAMBAAIAAwAAABAAAAAAAAAAAAAAAAAAAABAAAADwjASAAAACCAQQAAAAAAAAAD/xAAUEQEAAAAAAAAAAAAAAAAAAABQ/9oACAEDAQE/EEP/xAAUEQEAAAAAAAAAAAAAAAAAAABQ/9oACAECAQE/EEP/xAAjEAEAAgIBBAEFAAAAAAAAAAABESEAMUEQMFGRIFBgYXGB/9oACAEBAAE/EPsgpJ3gjp7knnrVtANG7BiAT+jjEL669GuzLrAKNC15cvwi9HaqSGRRkXI44VSTcNEo1Ad4KNuLxkjTocIWyoB5c1LyKFieaTr0jN5tVTAARNthkovFoLy4Vb5NcEOmodnzSAneJacPMwM0goSloz8OgxiDSZQqhbu2zQYcoqQFGEVxOblN5fSG5QhuoAb2OcFV2wL8/MB4hdHaWbYQRSXOTBn8qZZxkM8qazPETKylKXIGkJjjsm3tJUM8yCYORQIYpnp8njQdV1YDuZ0QkabljHPZierb0Sd9Gvov/9k=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/xls.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/xlsx.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/xml.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABzAGV0ZXh0AAAAAENvcHlyaWdodCAyMDA3IEFwcGxlIEluYy4sIGFsbCByaWdodHMgcmVzZXJ2ZWQuAFhZWiAAAAAAAADzUgABAAAAARbPWFlaIAAAAAAAAHRNAAA97gAAA9BYWVogAAAAAAAAWnUAAKxzAAAXNFhZWiAAAAAAAAAoGgAAFZ8AALg2Y3VydgAAAAAAAAABAc0AAHNmMzIAAAAAAAEMQgAABd7///MmAAAHkgAA/ZH///ui///9owAAA9wAAMBs/+EAgEV4aWYAAE1NACoAAAAIAAUBEgADAAAAAQABAAABGgAFAAAAAQAAAEoBGwAFAAAAAQAAAFIBKAADAAAAAQACAACHaQAEAAAAAQAAAFoAAAAAAAAASAAAAAEAAABIAAAAAQACoAIABAAAAAEAAAB6oAMABAAAAAEAAABbAAAAAP/+ADRPcHRpbWl6ZWQgYnkgSlBFR21pbmkgMy45LjIuNUwgSW50ZXJuYWwgMHhiYzdhOTY1Mv/bAEMAAgICAgIBAgICAgICAgMDBgQDAwMDBwUFBAYIBwgICAcICAoLDgwKCg0LCAgMEAwNDg8PDw8KDBESEA8SDg8PD//bAEMBAgICAwMDBgQEBg8KCAoPDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PD//CABEIAFsAegMBIgACEQEDEQH/xAAbAAEBAQEBAQEBAAAAAAAAAAAACAcJBgIDBf/EABQBAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhADEAAAAef4AAAAAAAAAB7M8Y2gYu2gYu9J5sAAAAdHecXR4tr5nnMC1fqKNYJYi204sAAAAHR7nD0eNRzDUM1Px1j9/ZkQRZacWAAAADo9zh6PFO/wdhAyYi2LNRy4AAAAUFPovtAgvuWspAAAH//EACMQAAEDAwQDAQEAAAAAAAAAAAYABQcDFzYBAgQwEBMWQFD/2gAIAQEAAQUC/qtLA8vtS3hmreGat4Zq3hmnJqcWdy6oQxjXfs26+2kvbSWm/Zu1m3OuqEMXLA8WfiS2kfK2kfIREhgffJtznqhDFy0fBnQl+NiVfGxKhBhCmp8m3OeqEMXLOJHlckptMM1eRa8HTIIDw7zptznqhDF3QVHnpxpgQfR5Hibc56oQxfy8vdFlbysn5ZUT9QUe8gOo3xqK+NRXxqIqK+eVPf5v/8QAFBEBAAAAAAAAAAAAAAAAAAAAUP/aAAgBAwEBPwFD/8QAFBEBAAAAAAAAAAAAAAAAAAAAUP/aAAgBAgEBPwFD/8QAPBAAAAQDAgkJBQkAAAAAAAAAAQIDBAAFERJ0EyEiMDZhkbLRBhQxNVGUlcLiECAjM5JAQVBScYGhpNL/2gAIAQEABj8C/FVSymXuH2DD4mDDEWuuNH3m0vGNH3m0vGNH3m0vGNH3m0vGOaTRmsyc0tWFA6Q7c3PL0TdjKMUB1jHzCfVHzCfVGSYpv0GJTcfObNzy9E3YTeTqarMXZUATBMrtNPJqOOghrGNI3XiKPCNI3XiKPCHLqRzRZ+4OhYOQzoilC1Aa5IaolFx85s3PL0TdhNxykmKDR+CAFKQ78Esio0xbY67Z+Ll4x12z8XLxhwvyZfoO3ZkLKhSPgWoSofcGukSi4+c2bnl6JuwmflWo0LMsAFnCOFCDYqNOge2sESTUYGUOayUAeLYx2x1L/aV/1CrmTy8Gi6hLBzYU5qhWtMYxKLj5zZueXom7BXc1lbd64AlgDnrWnTT+YIqnIWZFCGtFHKxDt9souPnNm55eibvuOnz50KDVIf3HsKHaMC+cBg0iFwbdL8heObeolYJv27gQMICpYEohroMaNl776I0bL330Ro2XvvojnDkObtSj8BqU1Sp8R1/Z/wD/xAAlEAEAAQIFBAIDAAAAAAAAAAABEQAhMDFRYfEQQZHwIEBQcdH/2gAIAQEAAT8h/KoPyVsiVa8PebPxXLly50SGzqZByS2Y4frNdRDR0FcGrg1RBT9laHDnpNdF/jUJcknO5t127YgMt+RAJcXxNvSa6Q5HDQ6m6t/86xo0kl2KSmS1l2Jt6TXRWEZ0BxG7Rb8S0jAdPVwYO2FmUXDxi7EkhPb4qLHdRniDbD6TYlbYd1mx7mQUB6AF7qkvdLK+MPKH711wK5HTkdOR0WkSbkM2e5s8fX//2gAMAwEAAgADAAAAEAAAAAAAAAAAAAAAAAAEAEIAAAAAAAAAAAAAEAAAAAAEAAAAAP/EABQRAQAAAAAAAAAAAAAAAAAAAFD/2gAIAQMBAT8QQ//EABQRAQAAAAAAAAAAAAAAAAAAAFD/2gAIAQIBAT8QQ//EACUQAQABAgMIAwAAAAAAAAAAAAERACEQMDFBUWFxgaHB8EBQYP/aAAgBAQABPxD7Uh5vNVfQNgXBAgfgdevXqbEgETAC0XgmiU1XgqN8LXs3mvZvNKjwlDQdGoC6l3zLRPfyS678mhuGo41674TMpuFrLJS8atd3zDRBn+i8lLJuRMTJks/Doy0xtUzhtru+YaHYLdZl7eL3LYVYgF1q3GodcFYNKVJIAO5MA2V3f8MaTX2j69lCnO5plYXGxxxo64B6ezvjevXvYi1Vh//Z]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/ico_dark/zip.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4ge4SUNDX1BST0ZJTEUAAQEAAAeoYXBwbAIgAABtbnRyUkdCIFhZWiAH2QACABkACwAaAAthY3NwQVBQTAAAAABhcHBsAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtkZXNjAAABCAAAAG9kc2NtAAABeAAABWxjcHJ0AAAG5AAAADh3dHB0AAAHHAAAABRyWFlaAAAHMAAAABRnWFlaAAAHRAAAABRiWFlaAAAHWAAAABRyVFJDAAAHbAAAAA5jaGFkAAAHfAAAACxiVFJDAAAHbAAAAA5nVFJDAAAHbAAAAA5kZXNjAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAeAAAADHNrU0sAAAAoAAABeGhySFIAAAAoAAABoGNhRVMAAAAkAAAByHB0QlIAAAAmAAAB7HVrVUEAAAAqAAACEmZyRlUAAAAoAAACPHpoVFcAAAAWAAACZGl0SVQAAAAoAAACem5iTk8AAAAmAAAComtvS1IAAAAWAAACyGNzQ1oAAAAiAAAC3mhlSUwAAAAeAAADAGRlREUAAAAsAAADHmh1SFUAAAAoAAADSnN2U0UAAAAmAAAConpoQ04AAAAWAAADcmphSlAAAAAaAAADiHJvUk8AAAAkAAADomVsR1IAAAAiAAADxnB0UE8AAAAmAAAD6G5sTkwAAAAoAAAEDmVzRVMAAAAmAAAD6HRoVEgAAAAkAAAENnRyVFIAAAAiAAAEWmZpRkkAAAAoAAAEfHBsUEwAAAAsAAAEpHJ1UlUAAAAiAAAE0GFyRUcAAAAmAAAE8mVuVVMAAAAmAAAFGGRhREsAAAAuAAAFPgBWAWEAZQBvAGIAZQBjAG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwARwBlAG4AZQByAGkBDQBrAGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDoAHIAaQBjAFAAZQByAGYAaQBsACAAUgBHAEIAIABHAGUAbgDpAHIAaQBjAG8EFwQwBDMEMAQ7BEwEPQQ4BDkAIAQ/BEAEPgREBDAEOQQ7ACAAUgBHAEIAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAFIAVgBCkBp1KAAgAFIARwBCACCCcl9pY8+P8ABQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjAG8ARwBlAG4AZQByAGkAcwBrACAAUgBHAEIALQBwAHIAbwBmAGkAbMd8vBgAIABSAEcAQgAg1QS4XNMMx3wATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF3AXZAEEAbABsAGcAZQBtAGUAaQBuAGUAcwAgAFIARwBCAC0AUAByAG8AZgBpAGwAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAAcgBvAGYAaQBsZm6QGgAgAFIARwBCACBjz4/wZYdO9k4AgiwAIABSAEcAQgAgMNcw7TDVMKEwpDDrAFAAcgBvAGYAaQBsACAAUgBHAEIAIABnAGUAbgBlAHIAaQBjA5MDtQO9A7kDugPMACADwAPBA78DxgOvA7sAIABSAEcAQgBQAGUAcgBmAGkAbAAgAFIARwBCACAAZwBlAG4A6QByAGkAYwBvAEEAbABnAGUAbQBlAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGUAbA5CDhsOIw5EDh8OJQ5MACAAUgBHAEIAIA4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABSAEcAQgAgAFAAcgBvAGYAaQBsAGkAWQBsAGUAaQBuAGUAbgAgAFIARwBCAC0AcAByAG8AZgBpAGkAbABpAFUAbgBpAHcAZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBHAEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIARwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYnBkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAAUAByAG8AZgBpAGwAZQBHAGUAbgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2AGUAbABz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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/info.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAaVBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2drKKAAAAInRSTlMAAREGAxDz7+1O6P3nE/7w3QcPAkff7ExFBQTuDuEUCBLjD8S+RgAAAH1JREFUeF5tjgkOg0AIRcFZnBl1tC7d13//QxZNLW3TFxKSRz5AM5Zi2+6kvWAyCagNsYr6S9CRYkpxjijDoHPis7v2/V03uIffnvzkiFdxgeCLd8ge9rlCUMG0CUD5KZryn2h+IuGmS80IYTR2PdsBOQOdI15E4VFBavnkCXVWB6jJiolKAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/key.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAG1BMVEUzMzP///8zMzMzMzMzMzMzMzMzMzMzMzMzMzMF1DXAAAAACHRSTlMAAAECB4CzzCejgr0AAABFSURBVHheYxCEAryMsFRGBhAQ6+hIAItEdHS0hYaGBjBkCHSAQDuY0d5RUQCWCghlZWBg6+hIZWFiZmBgCEsFaWYkxi4AUFEWEwuFcGYAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/label.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAt1BMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEAAAABAQECAgICAgICAgIAAwMAAAAAAAAAAAABAQECAgIBAQEAAAAAAAACAgIAAAAAAAAAAAAAAAAAAAABAQECAgIBAQEBAQECAgIAAAAAAAAAAAAAAQEAAAAAAAAAAAAAAAAAAAECAgIAAAABAQEAAAIBAQECAgIBAQEAAAMBAQECAgIAAAACAgIBAQECAgIAAAABAQH067k7AAAAO3RSTlMA+v4CAQP8/fsE1izQk4VxZa80+dKUvjA1lrC+oB+j24y81XXBUJ7RQX6Dct2jQLJztXmtTuqdEJj+g/auzYcAAACcSURBVHheRc5HrsMwEATRJkWRkpxz9s8551C6/7kMDQy7dm8wi1ZTyNXqnLWr8bRnzoL6NRYPjaUuuBGD4ZKVeUJKJGaaUykELYgeIuvNlhPlOqXwWDWcSxfEvROOS13hzZbjWjcUB3vPre5wxwfupfKRePCTJD1D2vtFylTqFR/Nb1Juy9/B+YIPsxQyfX4B32a7lPr5/fuXskY7Qfgeq4vPqIgAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/loading.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/logo.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/preview.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAflBMVEX///////////8RERH///////////////+7u7u/v78UFBTDw8P///+Hh4efn59gYGB3d3cXFxcUFBQYGBgUFBQwMDAZGRkTExM8PDwUFBQVFRU0NDQ4ODglJSUnJyctLS00NDQVFRUwMDATExMsLCwiIiImJiYgICAYGBgcHByuTtiuAAAAJXRSTlMABAgPECAsMDg8P0BAQlBgb3F/gY+Poq+3v8DBw8jJzM/Q29/mpTbZAQAAAIRJREFUeF6dy9ESgiAUhGFIhVArI41UTMTOAd7/BYN0um767/abWfJvpep7VX4hU94BOK+yfS8OP7llkwE0vhI8YEggwR7xrCOcLMgIHc7U3C+I5jBjF6EwIMXToxESTJE+woYbr2t+DVaQFK10WNt2DbqiZBPWjNM0NizuvZxxznLyW285eguoNtFmiwAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/processing.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/rename.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAATlBMVEX///////////8RERFZWVn///8QEBAkJCQWFhb////Dw8OcnJynp6cXFxdHR0cVFRUXFxcfHx8qKiouLi4wMDAWFhYXFxciIiImJiYlJSUFdwK4AAAAF3RSTlMABAgPFxwfIy80QE1XcYzQ0dTZ2tvw8O6TI3EAAABQSURBVHhejc07FoAgEEPRoAgKfhDRwf1vVMqMhcd096R4+FrvXt7OUdnn+1J/iuVgi6QY2LVma5RL+G+flbG0Hht767GdlNWSYedpYMN0LDxVywSPV9GbowAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/size.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABI1BMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAABAQAEAgEHBAMEAgEGBAIBAQABAAAEAQEJBQMEBAAAAAAEAwEEAgEGBgAEAwESBgYRCwYEAgEMBgAEAwEcAAADAgEXAAAAAAAAAAADAgIEAgEHAwMFAgIBAAABAAAEBAAMAAACAQEDAgEGAwMEAgECAQENAAAFAwMJBQMCAQEOCQUFAgISDAYOCgUCAgAFAwMEAQECAQAHBAEGBAEHBAMUCgoFAgEEAQEHBwACAQEBAAAPCgUGBAICAQEHBwAEAgIVAAABAAAQCwUSDAYFAgIEAQEAAAAQCAgGBAIBAQAEAQELBQUIBQIDAgEBAAAGBgYAAAAEAAAAAAABAAACAQACAQEBAQABAQECAgKoXkFJAAAAWnRSTlMAAQL+/QQD+/rnt/zY/fjM8EcGytoswyst6irCCdwLHB2W2E2n+/pDFez8T/7rE2Dv5jalKjWTXbX5xMe1GtuzJff9M9f1I3MM7jArccfwH9X5xTCZ7PwugH7FhPsZAAAAxklEQVR4Xl2N1W7EUBBDneZmkywzl5mZmZnZN7vt/39Frexbj+bBx7I0EAlUcvmlUlMhxkG7f2NwaHikqCjQB+9gEiiUHcXeop60rapN1hTjwVWj45JuJxyQAB5maTJBkDF2VKIfGOM4xQRXJRpNTdPMpFJzhvMLUg+LXS6v3K6th4w2pQ62aLZ3dvf20+ShFEfHPKE4PSPPLwBcWp8Mutc3aWbtHYB7qnD58PjEZ74Ar5FMl3175wejT3z9+uyh1v/5xn/+ALoEJfu1LMleAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/sort.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAMAAABhq6zVAAABEVBMVEX///8AAAAJCQkBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMjIAAAAAAAAAAAAAAABNTU0AAAADAwMAAAAAAAAICAgAAAAAAAAAAAAAAAAKCgoAAAAAAAAAAAAAAAAAAAAAAAAFBQUAAAAAAAACAgICAgIICAgJCQkHBwcAAAAAAAAFBQUAAAADAwMODg4AAAAAAAAFBQUICAgCAgIEBAQAAAALCwsAAAAEBAQAAAAAAAAAAAACAgIICAgICAgAAAAAAAAAAAAJCQkFBQUAAAACAgICAgIAAAABAQEAAAABAQEICAgBAQEAAAAAAAA3NzcJCQkAAAAAAAADAwMBAQEEBARX552iAAAAV3RSTlMALhv3QsUgloaQJPUGAkAjlffDRVwKvcEdGr38C16VyJKU9oQR+L308nNyHxy/L8JkJmQSO640W2qQTmFpPouJNIUgew8VwHX9/oF6+swb0WbV27AqkjN8IBxrAAAAj0lEQVR4XhXKU5bEQABA0Vcx2rZtc2gblcz+F9Kn/y+Rcm6YHsfu9FQcltKtRdWmm28nIKn0rwwjkw1PC1As2ZWqbdYbEKQlpS+l7HR7FzAQYiSEFp54M5gvQiFtBWtvA9sj8nfs/0/g9OzcMi8drj0rCDe3AeD+wX984ll9eX0DR5fvgo/Pr2+FAD+/fxwAyvYVRbME+FYAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/storing_animation.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/trans.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/up.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIBAMAAAA2IaO4AAAAHlBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGjDitAAAACXRSTlMAAooDhHkhgwGXxHVDAAAAK0lEQVR4XmNgEGBkYAAiAQYDFgdmBobIqQwMQjNnKjIkqRepMYABh6FwAwBOdQTaXLYA2gAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/upload.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAY1BMVEUzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzPk3RAHAAAAIHRSTlMA8A8FwMkIrPvh0sFt7iuxEZagDfr+7OChbnfp2dz4/KiNbgYAAABwSURBVHheTctZEoMwDANQmQBJ2He6V/c/Zd0yDX5fHkvCwVWVg1EWZFEicTlV7myutGPzs9NtTLYOQFN73y/k0ntfNzigJVsYmZCS4TRQDTDGaRr/7a8Zav6diJKspOwITC7XG2kf98eTq5283kHiB2GXC4EUkl2XAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/url.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAA9lBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtLS0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMzMAAAAAAAAAAAAAAAAAAADMkR3DAAAAUXRSTlMAAwTxAs0/pO0n6ywlOtSCL6IHp+qwo0CDbxk87D3h8ykbjQsRKuAozN7THhAV77Mm3OIjm+eVkeax0gqZ8BpsbUayYg/oppQ3tGgcDx3ZoZgKsR4fAAAAuUlEQVR4Xk3NZY7DQBCE0bKdiRnDzMy4zMxb979MrFEi+fv5pOqGAjMvdBsqTrkGSS0N5QiORe+sn5CQVg9dndkWUhIEc8B01mYJkZQMq2bHqJf3PiBXQYPDwZij5sS/L8tfhTkXyxXXmy13lVhU1M55Uavy8uqaNwUgltu7YvPBYA6PbATHS8WwovHp+YWviEtFKPHt/eMTOgWk4CvLzDd+fvkHmYK0xvq/R8tBQkjDxSkVti7yJpQDm14Y7jK06jAAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/img/zip.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABjFBMVEX///8AAAAAAAAAAAAAAAAAAABVVVU9PT8AAAA9PT8AAAAAAAAAAAAAAAAAAAAAAAAAAABAQEA8PD8AAAAAAAAGBgYAAAA4OD09PT4FBQUICAg9PT8AAABNTU08PD4AAAAzMzUAAABAQEA9PT4uLi49PUAAAAA+PkA8PD4MDAwAAAAEBAQ9PT0JCQkAAgA9PT4bGxwoKCkAAABGRkY8PEA9PUE+Pj5AQEA+Pj4/P0ExMTMAAAAJCQo9PT89PT88PD9AQEBAQEIAAAAMDAwAAAA9PT0AAAA8PD4AAAA+PkA2NkM+PkAaGhsAAAAICAgAAAA9PD8+PkA8PDw9PT4AAAAAAAA9PT89PT89PT8/PkEwMDIAAAAICAgAAAAAAAA8PDw+PkA9PT4cHR0DAwMAAAAAAAAAAAAAAAAAAAA8PD4AAAArKysKCgoCAgIJCQk8PD4AAAAAAAAAAABAQEI+PkBCQkRFRUc9PT9BQUMDAwNAQEMGBgYFBQUdHR5EREYvLzBDQ0U5OTsrKy1DQ0bpFdvaAAAAcnRSTlMAeQH7eHoDuQL7fnxY9vz5fwRVGd9Rlju00oXyrAr2UfeCDOEWxNL4wtJZkGRakbH40owLREMdCD7zyUaTtfhdFPbNbv42VP1yWxOA9TFA/Z5XEfYD86Pv3fz76kQ86ECIj/X2o5/19/H1dAZKhY+HgRgcqMtXAAAA5ElEQVR4Xj2PY3MEURBFewfZrG0ztG3bto1+M8s4fzw9L1U5X7ruqa7q26AhCHxUwh8VFD1B2RsDY0LnogwQSdvw1T0ZRsRp2vP5DVXxZgyYW0ULygDtoZxe/xN9yzY0oogSJFPvmTZH9edXTW0dCR3UqwNANBVazI9cPOWdHZ1d3c6e3r5+LuYKg+rQsCE/8j06Nm4lMaFMsZnZG0WZX1i0LZGA5RJbWV1jH5Z12EBNODbZ1vbObnlv/+AQ6Sz1Pjo+ObWKZ+cXl1dUjAxxXSwi55Z/dwf3D0a7yWR/ll6AI8A/vxXPMkyFO+8nAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/include/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/include/FtpClient.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIGBuaWNvbGFiL3BocC1mdHAtY2xpZW50YCBwYWNrYWdlLgogKgogKiAoYykgTmljb2xhcyBUYWxsZWZvdXJ0YW5lIDxkZXZAbmljb2xhYi5uZXQ+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKgogKiBAY29weXJpZ2h0IE5pY29sYXMgVGFsbGVmb3VydGFuZSBodHRwOi8vbmljb2xhYi5uZXQKICovCm5hbWVzcGFjZSBGdHBDbGllbnQ7Cgp1c2UgXENvdW50YWJsZTsKCi8qKgogKiBUaGUgRlRQIGFuZCBTU0wtRlRQIGNsaWVudCBmb3IgUEhQLgogKgogKiBAbWV0aG9kIGJvb2wgYWxsb2MoKSBhbGxvYyhpbnQgJGZpbGVzaXplLCBzdHJpbmcgJiRyZXN1bHQgPSBudWxsKSBBbGxvY2F0ZXMgc3BhY2UgZm9yIGEgZmlsZSB0byBiZSB1cGxvYWRlZAogKiBAbWV0aG9kIGJvb2wgY2R1cCgpIGNkdXAoKSBDaGFuZ2VzIHRvIHRoZSBwYXJlbnQgZGlyZWN0b3J5CiAqIEBtZXRob2QgYm9vbCBjaGRpcigpIGNoZGlyKHN0cmluZyAkZGlyZWN0b3J5KSBDaGFuZ2VzIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBvbiBhIEZUUCBzZXJ2ZXIKICogQG1ldGhvZCBpbnQgY2htb2QoKSBjaG1vZChpbnQgJG1vZGUsIHN0cmluZyAkZmlsZW5hbWUpIFNldCBwZXJtaXNzaW9ucyBvbiBhIGZpbGUgdmlhIEZUUAogKiBAbWV0aG9kIGJvb2wgZGVsZXRlKCkgZGVsZXRlKHN0cmluZyAkcGF0aCkgRGVsZXRlcyBhIGZpbGUgb24gdGhlIEZUUCBzZXJ2ZXIKICogQG1ldGhvZCBib29sIGV4ZWMoKSBleGVjKHN0cmluZyAkY29tbWFuZCkgUmVxdWVzdHMgZXhlY3V0aW9uIG9mIGEgY29tbWFuZCBvbiB0aGUgRlRQIHNlcnZlcgogKiBAbWV0aG9kIGJvb2wgZmdldCgpIGZnZXQocmVzb3VyY2UgJGhhbmRsZSwgc3RyaW5nICRyZW1vdGVfZmlsZSwgaW50ICRtb2RlLCBpbnQgJHJlc3VtZXBvcyA9IDApIERvd25sb2FkcyBhIGZpbGUgZnJvbSB0aGUgRlRQIHNlcnZlciBhbmQgc2F2ZXMgdG8gYW4gb3BlbiBmaWxlCiAqIEBtZXRob2QgYm9vbCBmcHV0KCkgZnB1dChzdHJpbmcgJHJlbW90ZV9maWxlLCByZXNvdXJjZSAkaGFuZGxlLCBpbnQgJG1vZGUsIGludCAkc3RhcnRwb3MgPSAwKSBVcGxvYWRzIGZyb20gYW4gb3BlbiBmaWxlIHRvIHRoZSBGVFAgc2VydmVyCiAqIEBtZXRob2QgbWl4ZWQgZ2V0X29wdGlvbigpIGdldF9vcHRpb24oaW50ICRvcHRpb24pIFJldHJpZXZlcyB2YXJpb3VzIHJ1bnRpbWUgYmVoYXZpb3VycyBvZiB0aGUgY3VycmVudCBGVFAgc3RyZWFtCiAqIEBtZXRob2QgYm9vbCBnZXQoKSBnZXQoc3RyaW5nICRsb2NhbF9maWxlLCBzdHJpbmcgJHJlbW90ZV9maWxlLCBpbnQgJG1vZGUsIGludCAkcmVzdW1lcG9zID0gMCkgRG93bmxvYWRzIGEgZmlsZSBmcm9tIHRoZSBGVFAgc2VydmVyCiAqIEBtZXRob2QgaW50IG1kdG0oKSBtZHRtKHN0cmluZyAkcmVtb3RlX2ZpbGUpIFJldHVybnMgdGhlIGxhc3QgbW9kaWZpZWQgdGltZSBvZiB0aGUgZ2l2ZW4gZmlsZQogKiBAbWV0aG9kIGludCBuYl9jb250aW51ZSgpIG5iX2NvbnRpbnVlKCkgQ29udGludWVzIHJldHJpZXZpbmcvc2VuZGluZyBhIGZpbGUgKG5vbi1ibG9ja2luZykKICogQG1ldGhvZCBpbnQgbmJfZmdldCgpIG5iX2ZnZXQocmVzb3VyY2UgJGhhbmRsZSwgc3RyaW5nICRyZW1vdGVfZmlsZSwgaW50ICRtb2RlLCBpbnQgJHJlc3VtZXBvcyA9IDApIFJldHJpZXZlcyBhIGZpbGUgZnJvbSB0aGUgRlRQIHNlcnZlciBhbmQgd3JpdGVzIGl0IHRvIGFuIG9wZW4gZmlsZSAobm9uLWJsb2NraW5nKQogKiBAbWV0aG9kIGludCBuYl9mcHV0KCkgbmJfZnB1dChzdHJpbmcgJHJlbW90ZV9maWxlLCByZXNvdXJjZSAkaGFuZGxlLCBpbnQgJG1vZGUsIGludCAkc3RhcnRwb3MgPSAwKSBTdG9yZXMgYSBmaWxlIGZyb20gYW4gb3BlbiBmaWxlIHRvIHRoZSBGVFAgc2VydmVyIChub24tYmxvY2tpbmcpCiAqIEBtZXRob2QgaW50IG5iX2dldCgpIG5iX2dldChzdHJpbmcgJGxvY2FsX2ZpbGUsIHN0cmluZyAkcmVtb3RlX2ZpbGUsIGludCAkbW9kZSwgaW50ICRyZXN1bWVwb3MgPSAwKSBSZXRyaWV2ZXMgYSBmaWxlIGZyb20gdGhlIEZUUCBzZXJ2ZXIgYW5kIHdyaXRlcyBpdCB0byBhIGxvY2FsIGZpbGUgKG5vbi1ibG9ja2luZykKICogQG1ldGhvZCBpbnQgbmJfcHV0KCkgbmJfcHV0KHN0cmluZyAkcmVtb3RlX2ZpbGUsIHN0cmluZyAkbG9jYWxfZmlsZSwgaW50ICRtb2RlLCBpbnQgJHN0YXJ0cG9zID0gMCkgU3RvcmVzIGEgZmlsZSBvbiB0aGUgRlRQIHNlcnZlciAobm9uLWJsb2NraW5nKQogKiBAbWV0aG9kIGJvb2wgcGFzdigpIHBhc3YoYm9vbCAkcGFzdikgVHVybnMgcGFzc2l2ZSBtb2RlIG9uIG9yIG9mZgogKiBAbWV0aG9kIGJvb2wgcHV0KCkgcHV0KHN0cmluZyAkcmVtb3RlX2ZpbGUsIHN0cmluZyAkbG9jYWxfZmlsZSwgaW50ICRtb2RlLCBpbnQgJHN0YXJ0cG9zID0gMCkgVXBsb2FkcyBhIGZpbGUgdG8gdGhlIEZUUCBzZXJ2ZXIKICogQG1ldGhvZCBzdHJpbmcgcHdkKCkgcHdkKCkgUmV0dXJucyB0aGUgY3VycmVudCBkaXJlY3RvcnkgbmFtZQogKiBAbWV0aG9kIGJvb2wgcXVpdCgpIHF1aXQoKSBDbG9zZXMgYW4gRlRQIGNvbm5lY3Rpb24KICogQG1ldGhvZCBhcnJheSByYXcoKSByYXcoc3RyaW5nICRjb21tYW5kKSBTZW5kcyBhbiBhcmJpdHJhcnkgY29tbWFuZCB0byBhbiBGVFAgc2VydmVyCiAqIEBtZXRob2QgYm9vbCByZW5hbWUoKSByZW5hbWUoc3RyaW5nICRvbGRuYW1lLCBzdHJpbmcgJG5ld25hbWUpIFJlbmFtZXMgYSBmaWxlIG9yIGEgZGlyZWN0b3J5IG9uIHRoZSBGVFAgc2VydmVyCiAqIEBtZXRob2QgYm9vbCBzZXRfb3B0aW9uKCkgc2V0X29wdGlvbihpbnQgJG9wdGlvbiwgbWl4ZWQgJHZhbHVlKSBTZXQgbWlzY2VsbGFuZW91cyBydW50aW1lIEZUUCBvcHRpb25zCiAqIEBtZXRob2QgYm9vbCBzaXRlKCkgc2l0ZShzdHJpbmcgJGNvbW1hbmQpIFNlbmRzIGEgU0lURSBjb21tYW5kIHRvIHRoZSBzZXJ2ZXIKICogQG1ldGhvZCBpbnQgc2l6ZSgpIHNpemUoc3RyaW5nICRyZW1vdGVfZmlsZSkgUmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgZ2l2ZW4gZmlsZQogKiBAbWV0aG9kIHN0cmluZyBzeXN0eXBlKCkgc3lzdHlwZSgpIFJldHVybnMgdGhlIHN5c3RlbSB0eXBlIGlkZW50aWZpZXIgb2YgdGhlIHJlbW90ZSBGVFAgc2VydmVyCiAqCiAqIEBhdXRob3IgTmljb2xhcyBUYWxsZWZvdXJ0YW5lIDxkZXZAbmljb2xhYi5uZXQ+CiAqLwpjbGFzcyBGdHBDbGllbnQgaW1wbGVtZW50cyBDb3VudGFibGUKewogICAgLyoqCiAgICAgKiBUaGUgY29ubmVjdGlvbiB3aXRoIHRoZSBzZXJ2ZXIuCiAgICAgKgogICAgICogQHZhciByZXNvdXJjZQogICAgICovCiAgICBwcm90ZWN0ZWQgJGNvbm47CgogICAgLyoqCiAgICAgKiBQSFAgRlRQIGZ1bmN0aW9ucyB3cmFwcGVyLgogICAgICoKICAgICAqIEB2YXIgRnRwV3JhcHBlcgogICAgICovCiAgICBwcml2YXRlICRmdHA7CgogICAgLyoqCiAgICAgKiBDb25zdHJ1Y3Rvci4KICAgICAqIAogICAgICogQHBhcmFtICByZXNvdXJjZXxudWxsICRjb25uZWN0aW9uCiAgICAgKiBAdGhyb3dzIEZ0cEV4Y2VwdGlvbiAgSWYgRlRQIGV4dGVuc2lvbiBpcyBub3QgbG9hZGVkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGNvbm5lY3Rpb24gPSBudWxsKQogICAgewogICAgICAgIGlmICghZXh0ZW5zaW9uX2xvYWRlZCgnZnRwJykpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEZ0cEV4Y2VwdGlvbignRlRQIGV4dGVuc2lvbiBpcyBub3QgbG9hZGVkIScpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRjb25uZWN0aW9uKSB7CiAgICAgICAgICAgICR0aGlzLT5jb25uID0gJGNvbm5lY3Rpb247CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+c2V0V3JhcHBlcihuZXcgRnRwV3JhcHBlcigkdGhpcy0+Y29ubikpOwogICAgfQoKICAgIC8qKgogICAgICogQ2xvc2UgdGhlIGNvbm5lY3Rpb24gd2hlbiB0aGUgb2JqZWN0IGlzIGRlc3Ryb3llZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fZGVzdHJ1Y3QoKQogICAgewogICAgICAgIGlmICgkdGhpcy0+Y29ubikgewogICAgICAgICAgICAkdGhpcy0+ZnRwLT5jbG9zZSgpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENhbGwgYW4gaW50ZXJuYWwgbWV0aG9kIG9yIGEgRlRQIG1ldGhvZCBoYW5kbGVkIGJ5IHRoZSB3cmFwcGVyLgogICAgICoKICAgICAqIFdyYXAgdGhlIEZUUCBQSFAgZnVuY3Rpb25zIHRvIGNhbGwgYXMgbWV0aG9kIG9mIEZ0cENsaWVudCBvYmplY3QuCiAgICAgKiBUaGUgY29ubmVjdGlvbiBpcyBhdXRvbWF0aWNhbHkgcGFzc2VkIHRvIHRoZSBGVFAgUEhQIGZ1bmN0aW9ucy4KICAgICAqCiAgICAgKiBAcGFyYW0gIHN0cmluZyAgICAgICAkbWV0aG9kCiAgICAgKiBAcGFyYW0gIGFycmF5ICAgICAgICAkYXJndW1lbnRzCiAgICAgKiBAcmV0dXJuIG1peGVkCiAgICAgKiBAdGhyb3dzIEZ0cEV4Y2VwdGlvbiBXaGVuIHRoZSBmdW5jdGlvbiBpcyBub3QgdmFsaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY2FsbCgkbWV0aG9kLCBhcnJheSAkYXJndW1lbnRzKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZnRwLT5fX2NhbGwoJG1ldGhvZCwgJGFyZ3VtZW50cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBPdmVyd3JpdGVzIHRoZSBQSFAgbGltaXQKICAgICAqCiAgICAgKiBAcGFyYW0gIHN0cmluZ3xudWxsICRtZW1vcnkgICAgICAgICAgICBUaGUgbWVtb3J5IGxpbWl0LCBpZiBudWxsIGlzIG5vdCBtb2RpZmllZAogICAgICogQHBhcmFtICBpbnQgICAgICAgICAkdGltZV9saW1pdCAgICAgICAgVGhlIG1heCBleGVjdXRpb24gdGltZSwgdW5saW1pdGVkIGJ5IGRlZmF1bHQKICAgICAqIEBwYXJhbSAgYm9vbCAgICAgICAgJGlnbm9yZV91c2VyX2Fib3J0IElnbm9yZSB1c2VyIGFib3J0LCB0cnVlIGJ5IGRlZmF1bHQKICAgICAqIEByZXR1cm4gRnRwQ2xpZW50CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRQaHBMaW1pdCgkbWVtb3J5ID0gbnVsbCwgJHRpbWVfbGltaXQgPSAwLCAkaWdub3JlX3VzZXJfYWJvcnQgPSB0cnVlKQogICAgewogICAgICAgIGlmIChudWxsICE9PSAkbWVtb3J5KSB7CiAgICAgICAgICAgIGluaV9zZXQoJ21lbW9yeV9saW1pdCcsICRtZW1vcnkpOwogICAgICAgIH0KCiAgICAgICAgaWdub3JlX3VzZXJfYWJvcnQodHJ1ZSk7CiAgICAgICAgc2V0X3RpbWVfbGltaXQoJHRpbWVfbGltaXQpOwoKICAgICAgICByZXR1cm4gJHRoaXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGhlbHAgaW5mb3JtYXRpb24gb2YgdGhlIHJlbW90ZSBGVFAgc2VydmVyLgogICAgICogCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBoZWxwKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmZ0cC0+cmF3KCdoZWxwJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBPcGVuIGEgRlRQIGNvbm5lY3Rpb24uCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkaG9zdAogICAgICogQHBhcmFtIGJvb2wgICAkc3NsCiAgICAgKiBAcGFyYW0gaW50ICAgICRwb3J0CiAgICAgKiBAcGFyYW0gaW50ICAgICR0aW1lb3V0CiAgICAgKgogICAgICogQHJldHVybiBGVFBDbGllbnQKICAgICAqIEB0aHJvd3MgRnRwRXhjZXB0aW9uIElmIHVuYWJsZSB0byBjb25uZWN0CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjb25uZWN0KCRob3N0LCAkc3NsID0gZmFsc2UsICRwb3J0ID0gMjEsICR0aW1lb3V0ID0gOTApCiAgICB7CiAgICAgICAgaWYgKCRzc2wpIHsKICAgICAgICAgICAgJHRoaXMtPmNvbm4gPSBAJHRoaXMtPmZ0cC0+c3NsX2Nvbm5lY3QoJGhvc3QsICRwb3J0LCAkdGltZW91dCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPmNvbm4gPSBAJHRoaXMtPmZ0cC0+Y29ubmVjdCgkaG9zdCwgJHBvcnQsICR0aW1lb3V0KTsKICAgICAgICB9CgogICAgICAgIGlmICghJHRoaXMtPmNvbm4pIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEZ0cEV4Y2VwdGlvbignVW5hYmxlIHRvIGNvbm5lY3QnKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpczsKICAgIH0KCiAgICAvKioKICAgICAqIENsb3NlcyB0aGUgY3VycmVudCBGVFAgY29ubmVjdGlvbi4KICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNsb3NlKCkKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPmNvbm4pIHsKICAgICAgICAgICAgJHRoaXMtPmZ0cC0+Y2xvc2UoKTsKICAgICAgICAgICAgJHRoaXMtPmNvbm4gPSBudWxsOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgY29ubmVjdGlvbiB3aXRoIHRoZSBzZXJ2ZXIuCiAgICAgKgogICAgICogQHJldHVybiByZXNvdXJjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29ubmVjdGlvbigpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jb25uOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSB3cmFwcGVyLgogICAgICoKICAgICAqIEByZXR1cm4gRnRwV3JhcHBlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0V3JhcHBlcigpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5mdHA7CiAgICB9CgogICAgLyoqCiAgICAgKiBMb2dzIGluIHRvIGFuIEZUUCBjb25uZWN0aW9uLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHVzZXJuYW1lCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwYXNzd29yZAogICAgICoKICAgICAqIEByZXR1cm4gRnRwQ2xpZW50CiAgICAgKiBAdGhyb3dzIEZ0cEV4Y2VwdGlvbiBJZiB0aGUgbG9naW4gaXMgaW5jb3JyZWN0CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBsb2dpbigkdXNlcm5hbWUgPSAnYW5vbnltb3VzJywgJHBhc3N3b3JkID0gJycpCiAgICB7CiAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5mdHAtPmxvZ2luKCR1c2VybmFtZSwgJHBhc3N3b3JkKTsKCiAgICAgICAgaWYgKCRyZXN1bHQgPT09IGZhbHNlKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBGdHBFeGNlcHRpb24oJ0xvZ2luIGluY29ycmVjdCcpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgbGFzdCBtb2RpZmllZCB0aW1lIG9mIHRoZSBnaXZlbiBmaWxlLgogICAgICogUmV0dXJuIC0xIG9uIGVycm9yCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkcmVtb3RlRmlsZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICRmb3JtYXQKICAgICAqCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbW9kaWZpZWRUaW1lKCRyZW1vdGVGaWxlLCAkZm9ybWF0ID0gbnVsbCkKICAgIHsKICAgICAgICAkdGltZSA9ICR0aGlzLT5mdHAtPm1kdG0oJHJlbW90ZUZpbGUpOwoKICAgICAgICBpZiAoJHRpbWUgIT09IC0xICYmICRmb3JtYXQgIT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIGRhdGUoJGZvcm1hdCwgJHRpbWUpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aW1lOwogICAgfQoKCS8qKgoJICogQ2hhbmdlcyB0byB0aGUgcGFyZW50IGRpcmVjdG9yeS4KCSAqCgkgKiBAdGhyb3dzIEZ0cEV4Y2VwdGlvbgoJICogQHJldHVybiBGdHBDbGllbnQKCSAqLwogICAgcHVibGljIGZ1bmN0aW9uIHVwKCkKICAgIHsKICAgICAgICAkcmVzdWx0ID0gQCR0aGlzLT5mdHAtPmNkdXAoKTsKCiAgICAgICAgaWYgKCRyZXN1bHQgPT09IGZhbHNlKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBGdHBFeGNlcHRpb24oJ1VuYWJsZSB0byBnZXQgcGFyZW50IGZvbGRlcicpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIGxpc3Qgb2YgZmlsZXMgaW4gdGhlIGdpdmVuIGRpcmVjdG9yeS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgJGRpcmVjdG9yeSBUaGUgZGlyZWN0b3J5LCBieSBkZWZhdWx0IGlzICIuIiB0aGUgY3VycmVudCBkaXJlY3RvcnkKICAgICAqIEBwYXJhbSBib29sICAgICAkcmVjdXJzaXZlCiAgICAgKiBAcGFyYW0gY2FsbGFibGUgJGZpbHRlciAgICBBIGNhbGxhYmxlIHRvIGZpbHRlciB0aGUgcmVzdWx0LCBieSBkZWZhdWx0IGlzIGFzb3J0KCkgUEhQIGZ1bmN0aW9uLgogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlc3VsdCBpcyBwYXNzZWQgaW4gYXJyYXkgYXJndW1lbnQsCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXN0IHRha2UgdGhlIGFyZ3VtZW50IGJ5IHJlZmVyZW5jZSAhCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgY2FsbGFibGUgc2hvdWxkIHByb2NlZWQgd2l0aCB0aGUgcmVmZXJlbmNlIGFycmF5CiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWNhdXNlIGlzIHRoZSBiZWhhdmlvciBvZiBzZXZlcmFsIFBIUCBzb3J0aW5nCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnMgKGJ5IHJlZmVyZW5jZSBlbnN1cmUgZGlyZWN0bHkgdGhlIGNvbXBhdGliaWxpdHkKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggYWxsIFBIUCBzb3J0aW5nIGZ1bmN0aW9ucykuCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICogQHRocm93cyBGdHBFeGNlcHRpb24gSWYgdW5hYmxlIHRvIGxpc3QgdGhlIGRpcmVjdG9yeQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbmxpc3QoJGRpcmVjdG9yeSA9ICcuJywgJHJlY3Vyc2l2ZSA9IGZhbHNlLCAkZmlsdGVyID0gJ3NvcnQnKQogICAgewogICAgICAgIGlmICghJHRoaXMtPmlzRGlyKCRkaXJlY3RvcnkpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBGdHBFeGNlcHRpb24oJyInLiRkaXJlY3RvcnkuJyIgaXMgbm90IGEgZGlyZWN0b3J5Jyk7CiAgICAgICAgfQoKICAgICAgICAkZmlsZXMgPSAkdGhpcy0+ZnRwLT5ubGlzdCgkZGlyZWN0b3J5KTsKCiAgICAgICAgaWYgKCRmaWxlcyA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEZ0cEV4Y2VwdGlvbignVW5hYmxlIHRvIGxpc3QgZGlyZWN0b3J5Jyk7CiAgICAgICAgfQoKICAgICAgICAkcmVzdWx0ICA9IGFycmF5KCk7CiAgICAgICAgJGRpcl9sZW4gPSBzdHJsZW4oJGRpcmVjdG9yeSk7CgogICAgICAgIC8vIGlmIGl0J3MgdGhlIGN1cnJlbnQKICAgICAgICBpZiAoZmFsc2UgIT09ICgka2RvdCA9IGFycmF5X3NlYXJjaCgnLicsICRmaWxlcykpKSB7CiAgICAgICAgICAgIHVuc2V0KCRmaWxlc1ska2RvdF0pOwogICAgICAgIH0KCiAgICAgICAgLy8gaWYgaXQncyB0aGUgcGFyZW50CiAgICAgICAgaWYoZmFsc2UgIT09ICgka2RvdCA9IGFycmF5X3NlYXJjaCgnLi4nLCAkZmlsZXMpKSkgewogICAgICAgICAgICB1bnNldCgkZmlsZXNbJGtkb3RdKTsKICAgICAgICB9CgogICAgICAgIGlmICghJHJlY3Vyc2l2ZSkgewogICAgICAgICAgICBmb3JlYWNoICgkZmlsZXMgYXMgJGZpbGUpIHsKICAgICAgICAgICAgICAgICRyZXN1bHRbXSA9ICRkaXJlY3RvcnkuJy8nLiRmaWxlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyB3b3JraW5nIHdpdGggdGhlIHJlZmVyZW5jZSAoYmVoYXZpb3Igb2Ygc2V2ZXJhbCBQSFAgc29ydGluZyBmdW5jdGlvbnMpCiAgICAgICAgICAgICRmaWx0ZXIoJHJlc3VsdCk7CgogICAgICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgICAgICB9CgogICAgICAgIC8vIHV0aWxzIGZvciByZWN1cnNpb24KICAgICAgICAkZmxhdHRlbiA9IGZ1bmN0aW9uIChhcnJheSAkYXJyKSB1c2UgKCYkZmxhdHRlbikgewoKICAgICAgICAgICAgJGZsYXQgPSBbXTsKCiAgICAgICAgICAgIGZvcmVhY2ggKCRhcnIgYXMgJGsgPT4gJHYpIHsKICAgICAgICAgICAgICAgIGlmIChpc19hcnJheSgkdikpIHsKICAgICAgICAgICAgICAgICAgICAkZmxhdCA9IGFycmF5X21lcmdlKCRmbGF0LCAkZmxhdHRlbigkdikpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkZmxhdFtdID0gJHY7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAkZmxhdDsKICAgICAgICB9OwoKICAgICAgICBmb3JlYWNoICgkZmlsZXMgYXMgJGZpbGUpIHsKICAgICAgICAgICAgJGZpbGUgPSAkZGlyZWN0b3J5LicvJy4kZmlsZTsKCiAgICAgICAgICAgIC8vIGlmIGNvbnRhaW5zIHRoZSByb290IHBhdGggKGJlaGF2aW9yIG9mIHRoZSByZWN1cnNpdml0eSkKICAgICAgICAgICAgaWYgKDAgPT09IHN0cnBvcygkZmlsZSwgJGRpcmVjdG9yeSwgJGRpcl9sZW4pKSB7CiAgICAgICAgICAgICAgICAkZmlsZSA9IHN1YnN0cigkZmlsZSwgJGRpcl9sZW4pOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJHRoaXMtPmlzRGlyKCRmaWxlKSkgewogICAgICAgICAgICAgICAgJHJlc3VsdFtdID0gJGZpbGU7CiAgICAgICAgICAgICAgICAkaXRlbXMgICAgPSAkZmxhdHRlbigkdGhpcy0+bmxpc3QoJGZpbGUsIHRydWUsICRmaWx0ZXIpKTsKCiAgICAgICAgICAgICAgICBmb3JlYWNoICgkaXRlbXMgYXMgJGl0ZW0pIHsKICAgICAgICAgICAgICAgICAgICAkcmVzdWx0W10gPSAkaXRlbTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkcmVzdWx0W10gPSAkZmlsZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJHJlc3VsdCA9IGFycmF5X3VuaXF1ZSgkcmVzdWx0KTsKCiAgICAgICAgJGZpbHRlcigkcmVzdWx0KTsKCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgZGlyZWN0b3J5LgogICAgICogCiAgICAgKiBAc2VlIEZ0cENsaWVudDo6cm1kaXIoKQogICAgICogQHNlZSBGdHBDbGllbnQ6OnJlbW92ZSgpCiAgICAgKiBAc2VlIEZ0cENsaWVudDo6cHV0KCkKICAgICAqIEBzZWUgRnRwQ2xpZW50OjpwdXRBbGwoKQogICAgICoKICAgICAqIEBwYXJhbSAgc3RyaW5nICRkaXJlY3RvcnkgVGhlIGRpcmVjdG9yeQogICAgICogQHBhcmFtICBib29sICAgJHJlY3Vyc2l2ZQogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbWtkaXIoJGRpcmVjdG9yeSwgJHJlY3Vyc2l2ZSA9IGZhbHNlKQogICAgewogICAgICAgIGlmICghJHJlY3Vyc2l2ZSBvciAkdGhpcy0+aXNEaXIoJGRpcmVjdG9yeSkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5mdHAtPm1rZGlyKCRkaXJlY3RvcnkpOwogICAgICAgIH0KCiAgICAgICAgJHJlc3VsdCA9IGZhbHNlOwogICAgICAgICRwd2QgICAgPSAkdGhpcy0+ZnRwLT5wd2QoKTsKICAgICAgICAkcGFydHMgID0gZXhwbG9kZSgnLycsICRkaXJlY3RvcnkpOwoKICAgICAgICBmb3JlYWNoICgkcGFydHMgYXMgJHBhcnQpIHsKCiAgICAgICAgICAgIGlmICghQCR0aGlzLT5mdHAtPmNoZGlyKCRwYXJ0KSkgewogICAgICAgICAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5mdHAtPm1rZGlyKCRwYXJ0KTsKICAgICAgICAgICAgICAgICR0aGlzLT5mdHAtPmNoZGlyKCRwYXJ0KTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmZ0cC0+Y2hkaXIoJHB3ZCk7CgogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIC8qKgogICAgICogUmVtb3ZlIGEgZGlyZWN0b3J5LgogICAgICogCiAgICAgKiBAc2VlIEZ0cENsaWVudDo6bWtkaXIoKQogICAgICogQHNlZSBGdHBDbGllbnQ6OmNsZWFuRGlyKCkKICAgICAqIEBzZWUgRnRwQ2xpZW50OjpyZW1vdmUoKQogICAgICogQHNlZSBGdHBDbGllbnQ6OmRlbGV0ZSgpCiAgICAgKiBAcGFyYW0gIHN0cmluZyAgICAgICAkZGlyZWN0b3J5CiAgICAgKiBAcGFyYW0gIGJvb2wgICAgICAgICAkcmVjdXJzaXZlIEZvcmNlcyBkZWxldGlvbiBpZiB0aGUgZGlyZWN0b3J5IGlzIG5vdCBlbXB0eQogICAgICogQHJldHVybiBib29sCiAgICAgKiBAdGhyb3dzIEZ0cEV4Y2VwdGlvbiBJZiB1bmFibGUgdG8gbGlzdCB0aGUgZGlyZWN0b3J5IHRvIHJlbW92ZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcm1kaXIoJGRpcmVjdG9yeSwgJHJlY3Vyc2l2ZSA9IHRydWUpCiAgICB7CiAgICAgICAgaWYgKCRyZWN1cnNpdmUpIHsKICAgICAgICAgICAgJGZpbGVzID0gJHRoaXMtPm5saXN0KCRkaXJlY3RvcnksIGZhbHNlLCAncnNvcnQnKTsKCiAgICAgICAgICAgIC8vIHJlbW92ZSBjaGlsZHJlbgogICAgICAgICAgICBmb3JlYWNoICgkZmlsZXMgYXMgJGZpbGUpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5yZW1vdmUoJGZpbGUsIHRydWUpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyByZW1vdmUgdGhlIGRpcmVjdG9yeQogICAgICAgIHJldHVybiAkdGhpcy0+ZnRwLT5ybWRpcigkZGlyZWN0b3J5KTsKICAgIH0KCiAgICAvKioKICAgICAqIEVtcHR5IGRpcmVjdG9yeS4KICAgICAqIAogICAgICogQHNlZSBGdHBDbGllbnQ6OnJlbW92ZSgpCiAgICAgKiBAc2VlIEZ0cENsaWVudDo6ZGVsZXRlKCkKICAgICAqIEBzZWUgRnRwQ2xpZW50OjpybWRpcigpCiAgICAgKgogICAgICogQHBhcmFtICBzdHJpbmcgJGRpcmVjdG9yeQogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjbGVhbkRpcigkZGlyZWN0b3J5KQogICAgewogICAgICAgIGlmKCEkZmlsZXMgPSAkdGhpcy0+bmxpc3QoJGRpcmVjdG9yeSkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5pc0VtcHR5KCRkaXJlY3RvcnkpOwogICAgICAgIH0KCiAgICAgICAgLy8gcmVtb3ZlIGNoaWxkcmVuCiAgICAgICAgZm9yZWFjaCAoJGZpbGVzIGFzICRmaWxlKSB7CiAgICAgICAgICAgICR0aGlzLT5yZW1vdmUoJGZpbGUsIHRydWUpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5pc0VtcHR5KCRkaXJlY3RvcnkpOwogICAgfQoKICAgIC8qKgogICAgICogUmVtb3ZlIGEgZmlsZSBvciBhIGRpcmVjdG9yeS4KICAgICAqIAogICAgICogQHNlZSBGdHBDbGllbnQ6OnJtZGlyKCkKICAgICAqIEBzZWUgRnRwQ2xpZW50OjpjbGVhbkRpcigpCiAgICAgKiBAc2VlIEZ0cENsaWVudDo6ZGVsZXRlKCkKICAgICAqIEBwYXJhbSAgc3RyaW5nICRwYXRoICAgICAgVGhlIHBhdGggb2YgdGhlIGZpbGUgb3IgZGlyZWN0b3J5IHRvIHJlbW92ZQogICAgICogQHBhcmFtICBib29sICAgJHJlY3Vyc2l2ZSBJcyBlZmZlY3RpdmUgb25seSBpZiAkcGF0aCBpcyBhIGRpcmVjdG9yeSwge0BzZWUgRnRwQ2xpZW50OjpybWRpcigpfQogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZW1vdmUoJHBhdGgsICRyZWN1cnNpdmUgPSBmYWxzZSkKICAgIHsKICAgICAgICB0cnkgewogICAgICAgICAgICBpZiAoQCR0aGlzLT5mdHAtPmRlbGV0ZSgkcGF0aCkKICAgICAgICAgICAgb3IgKCR0aGlzLT5pc0RpcigkcGF0aCkgYW5kIEAkdGhpcy0+cm1kaXIoJHBhdGgsICRyZWN1cnNpdmUpKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9IGNhdGNoIChcRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICB9CgoJLyoqCgkgKiBDaGVjayBpZiBhIGRpcmVjdG9yeSBleGlzdC4KCSAqCgkgKiBAcGFyYW0gc3RyaW5nICRkaXJlY3RvcnkKCSAqIEByZXR1cm4gYm9vbAoJICogQHRocm93cyBGdHBFeGNlcHRpb24KCSAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzRGlyKCRkaXJlY3RvcnkpCiAgICB7CiAgICAgICAgJHB3ZCA9ICR0aGlzLT5mdHAtPnB3ZCgpOwoKICAgICAgICBpZiAoJHB3ZCA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEZ0cEV4Y2VwdGlvbignVW5hYmxlIHRvIHJlc29sdmUgdGhlIGN1cnJlbnQgZGlyZWN0b3J5Jyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoQCR0aGlzLT5mdHAtPmNoZGlyKCRkaXJlY3RvcnkpKSB7CiAgICAgICAgICAgICR0aGlzLT5mdHAtPmNoZGlyKCRwd2QpOwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5mdHAtPmNoZGlyKCRwd2QpOwoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBDaGVjayBpZiBhIGRpcmVjdG9yeSBpcyBlbXB0eS4KICAgICAqIAogICAgICogQHBhcmFtICBzdHJpbmcgJGRpcmVjdG9yeQogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc0VtcHR5KCRkaXJlY3RvcnkpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jb3VudCgkZGlyZWN0b3J5LCBudWxsLCBmYWxzZSkgPT09IDAgPyB0cnVlIDogZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBTY2FuIGEgZGlyZWN0b3J5IGFuZCByZXR1cm5zIHRoZSBkZXRhaWxzIG9mIGVhY2ggaXRlbS4KICAgICAqIAogICAgICogQHNlZSBGdHBDbGllbnQ6Om5saXN0KCkKICAgICAqIEBzZWUgRnRwQ2xpZW50OjpyYXdsaXN0KCkKICAgICAqIEBzZWUgRnRwQ2xpZW50OjpwYXJzZVJhd0xpc3QoKQogICAgICogQHNlZSBGdHBDbGllbnQ6OmRpclNpemUoKQogICAgICogQHBhcmFtICBzdHJpbmcgJGRpcmVjdG9yeQogICAgICogQHBhcmFtICBib29sICAgJHJlY3Vyc2l2ZQogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2NhbkRpcigkZGlyZWN0b3J5ID0gJy4nLCAkcmVjdXJzaXZlID0gZmFsc2UpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5wYXJzZVJhd0xpc3QoJHRoaXMtPnJhd2xpc3QoJGRpcmVjdG9yeSwgJHJlY3Vyc2l2ZSkpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgdG90YWwgc2l6ZSBvZiB0aGUgZ2l2ZW4gZGlyZWN0b3J5IGluIGJ5dGVzLgogICAgICoKICAgICAqIEBwYXJhbSAgc3RyaW5nICRkaXJlY3RvcnkgVGhlIGRpcmVjdG9yeSwgYnkgZGVmYXVsdCBpcyB0aGUgY3VycmVudCBkaXJlY3RvcnkuCiAgICAgKiBAcGFyYW0gIGJvb2wgICAkcmVjdXJzaXZlIHRydWUgYnkgZGVmYXVsdAogICAgICogQHJldHVybiBpbnQgICAgVGhlIHNpemUgaW4gYnl0ZXMuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBkaXJTaXplKCRkaXJlY3RvcnkgPSAnLicsICRyZWN1cnNpdmUgPSB0cnVlKQogICAgewogICAgICAgICRpdGVtcyA9ICR0aGlzLT5zY2FuRGlyKCRkaXJlY3RvcnksICRyZWN1cnNpdmUpOwogICAgICAgICRzaXplICA9IDA7CgogICAgICAgIGZvcmVhY2ggKCRpdGVtcyBhcyAkaXRlbSkgewogICAgICAgICAgICAkc2l6ZSArPSAoaW50KSAkaXRlbVsnc2l6ZSddOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRzaXplOwogICAgfQoKICAgIC8qKgogICAgICogQ291bnQgdGhlIGl0ZW1zIChmaWxlLCBkaXJlY3RvcnksIGxpbmssIHVua25vd24pLgogICAgICogCiAgICAgKiBAcGFyYW0gIHN0cmluZyAgICAgICRkaXJlY3RvcnkgVGhlIGRpcmVjdG9yeSwgYnkgZGVmYXVsdCBpcyB0aGUgY3VycmVudCBkaXJlY3RvcnkuCiAgICAgKiBAcGFyYW0gIHN0cmluZ3xudWxsICR0eXBlICAgICAgVGhlIHR5cGUgb2YgaXRlbSB0byBjb3VudCAoZmlsZSwgZGlyZWN0b3J5LCBsaW5rLCB1bmtub3duKQogICAgICogQHBhcmFtICBib29sICAgICAgICAkcmVjdXJzaXZlIHRydWUgYnkgZGVmYXVsdAogICAgICogQHJldHVybiBpbnQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNvdW50KCRkaXJlY3RvcnkgPSAnLicsICR0eXBlID0gbnVsbCwgJHJlY3Vyc2l2ZSA9IHRydWUpCiAgICB7CiAgICAgICAgJGl0ZW1zICA9IChudWxsID09PSAkdHlwZSA/ICR0aGlzLT5ubGlzdCgkZGlyZWN0b3J5LCAkcmVjdXJzaXZlKQogICAgICAgICAgICA6ICR0aGlzLT5zY2FuRGlyKCRkaXJlY3RvcnksICRyZWN1cnNpdmUpKTsKCiAgICAgICAgJGNvdW50ID0gMDsKICAgICAgICBmb3JlYWNoICgkaXRlbXMgYXMgJGl0ZW0pIHsKICAgICAgICAgICAgaWYgKG51bGwgPT09ICR0eXBlIG9yICRpdGVtWyd0eXBlJ10gPT0gJHR5cGUpIHsKICAgICAgICAgICAgICAgICRjb3VudCsrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGNvdW50OwogICAgfQoKICAgIC8qKgogICAgICogVXBsb2FkcyBhIGZpbGUgdG8gdGhlIHNlcnZlciBmcm9tIGEgc3RyaW5nLgogICAgICoKICAgICAqIEBwYXJhbSAgc3RyaW5nICAgICAgICRyZW1vdGVfZmlsZQogICAgICogQHBhcmFtICBzdHJpbmcgICAgICAgJGNvbnRlbnQKICAgICAqIEByZXR1cm4gRnRwQ2xpZW50CiAgICAgKiBAdGhyb3dzIEZ0cEV4Y2VwdGlvbiBXaGVuIHRoZSB0cmFuc2ZlciBmYWlscwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcHV0RnJvbVN0cmluZygkcmVtb3RlX2ZpbGUsICRjb250ZW50KQogICAgewogICAgICAgICRoYW5kbGUgPSBmb3BlbigncGhwOi8vdGVtcCcsICd3Jyk7CgogICAgICAgIGZ3cml0ZSgkaGFuZGxlLCAkY29udGVudCk7CiAgICAgICAgcmV3aW5kKCRoYW5kbGUpOwoKICAgICAgICBpZiAoJHRoaXMtPmZ0cC0+ZnB1dCgkcmVtb3RlX2ZpbGUsICRoYW5kbGUsIEZUUF9CSU5BUlkpKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpczsKICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBGdHBFeGNlcHRpb24oJ1VuYWJsZSB0byBwdXQgdGhlIGZpbGUgIicuJHJlbW90ZV9maWxlLiciJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBVcGxvYWRzIGEgZmlsZSB0byB0aGUgc2VydmVyLgogICAgICoKICAgICAqIEBwYXJhbSAgc3RyaW5nICAgICAgICRsb2NhbF9maWxlCiAgICAgKiBAcmV0dXJuIEZ0cENsaWVudAogICAgICogQHRocm93cyBGdHBFeGNlcHRpb24gV2hlbiB0aGUgdHJhbnNmZXIgZmFpbHMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHB1dEZyb21QYXRoKCRsb2NhbF9maWxlKQogICAgewogICAgICAgICRyZW1vdGVfZmlsZSA9IGJhc2VuYW1lKCRsb2NhbF9maWxlKTsKICAgICAgICAkaGFuZGxlICAgICAgPSBmb3BlbigkbG9jYWxfZmlsZSwgJ3InKTsKCiAgICAgICAgaWYgKCR0aGlzLT5mdHAtPmZwdXQoJHJlbW90ZV9maWxlLCAkaGFuZGxlLCBGVFBfQklOQVJZKSkgewogICAgICAgICAgICByZXdpbmQoJGhhbmRsZSk7CiAgICAgICAgICAgIHJldHVybiAkdGhpczsKICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBGdHBFeGNlcHRpb24oCiAgICAgICAgICAgICdVbmFibGUgdG8gcHV0IHRoZSByZW1vdGUgZmlsZSBmcm9tIHRoZSBsb2NhbCBmaWxlICInLiRsb2NhbF9maWxlLiciJwogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBVcGxvYWQgZmlsZXMuCiAgICAgKiAKICAgICAqIEBwYXJhbSAgc3RyaW5nICAgICRzb3VyY2VfZGlyZWN0b3J5CiAgICAgKiBAcGFyYW0gIHN0cmluZyAgICAkdGFyZ2V0X2RpcmVjdG9yeQogICAgICogQHBhcmFtICBpbnQgICAgICAgJG1vZGUKICAgICAqIEByZXR1cm4gRnRwQ2xpZW50CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwdXRBbGwoJHNvdXJjZV9kaXJlY3RvcnksICR0YXJnZXRfZGlyZWN0b3J5LCAkbW9kZSA9IEZUUF9CSU5BUlkpCiAgICB7CiAgICAgICAgJGQgPSBkaXIoJHNvdXJjZV9kaXJlY3RvcnkpOwoKICAgICAgICAvLyBkbyB0aGlzIGZvciBlYWNoIGZpbGUgaW4gdGhlIGRpcmVjdG9yeQogICAgICAgIHdoaWxlICgkZmlsZSA9ICRkLT5yZWFkKCkpIHsKCiAgICAgICAgICAgIC8vIHRvIHByZXZlbnQgYW4gaW5maW5pdGUgbG9vcAogICAgICAgICAgICBpZiAoJGZpbGUgIT0gIi4iICYmICRmaWxlICE9ICIuLiIpIHsKCiAgICAgICAgICAgICAgICAvLyBkbyB0aGUgZm9sbG93aW5nIGlmIGl0IGlzIGEgZGlyZWN0b3J5CiAgICAgICAgICAgICAgICBpZiAoaXNfZGlyKCRzb3VyY2VfZGlyZWN0b3J5LicvJy4kZmlsZSkpIHsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCEkdGhpcy0+aXNEaXIoJHRhcmdldF9kaXJlY3RvcnkuJy8nLiRmaWxlKSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gY3JlYXRlIGRpcmVjdG9yaWVzIHRoYXQgZG8gbm90IHlldCBleGlzdAogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+ZnRwLT5ta2RpcigkdGFyZ2V0X2RpcmVjdG9yeS4nLycuJGZpbGUpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgLy8gcmVjdXJzaXZlIHBhcnQKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+cHV0QWxsKAogICAgICAgICAgICAgICAgICAgICAgICAkc291cmNlX2RpcmVjdG9yeS4nLycuJGZpbGUsICR0YXJnZXRfZGlyZWN0b3J5LicvJy4kZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgJG1vZGUKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgLy8gcHV0IHRoZSBmaWxlcwogICAgICAgICAgICAgICAgICAgICR0aGlzLT5mdHAtPnB1dCgKICAgICAgICAgICAgICAgICAgICAgICAgJHRhcmdldF9kaXJlY3RvcnkuJy8nLiRmaWxlLCAkc291cmNlX2RpcmVjdG9yeS4nLycuJGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICRtb2RlCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIGRldGFpbGVkIGxpc3Qgb2YgZmlsZXMgaW4gdGhlIGdpdmVuIGRpcmVjdG9yeS4KICAgICAqIAogICAgICogQHNlZSBGdHBDbGllbnQ6Om5saXN0KCkKICAgICAqIEBzZWUgRnRwQ2xpZW50OjpzY2FuRGlyKCkKICAgICAqIEBzZWUgRnRwQ2xpZW50OjpkaXJTaXplKCkKICAgICAqIEBwYXJhbSAgc3RyaW5nICAgICAgICRkaXJlY3RvcnkgVGhlIGRpcmVjdG9yeSwgYnkgZGVmYXVsdCBpcyB0aGUgY3VycmVudCBkaXJlY3RvcnkKICAgICAqIEBwYXJhbSAgYm9vbCAgICAgICAgICRyZWN1cnNpdmUKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqIEB0aHJvd3MgRnRwRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByYXdsaXN0KCRkaXJlY3RvcnkgPSAnLicsICRyZWN1cnNpdmUgPSBmYWxzZSkKICAgIHsKICAgICAgICBpZiAoISR0aGlzLT5pc0RpcigkZGlyZWN0b3J5KSkgewogICAgICAgICAgICB0aHJvdyBuZXcgRnRwRXhjZXB0aW9uKCciJy4kZGlyZWN0b3J5LiciIGlzIG5vdCBhIGRpcmVjdG9yeS4nKTsKICAgICAgICB9CgogICAgICAgICRsaXN0ICA9ICR0aGlzLT5mdHAtPnJhd2xpc3QoJGRpcmVjdG9yeSk7CiAgICAgICAgJGl0ZW1zID0gYXJyYXkoKTsKCiAgICAgICAgaWYgKCEkbGlzdCkgewogICAgICAgICAgICByZXR1cm4gJGl0ZW1zOwogICAgICAgIH0KCiAgICAgICAgaWYgKGZhbHNlID09ICRyZWN1cnNpdmUpIHsKCiAgICAgICAgICAgIGZvcmVhY2ggKCRsaXN0IGFzICRwYXRoID0+ICRpdGVtKSB7CiAgICAgICAgICAgICAgICAkY2h1bmtzID0gcHJlZ19zcGxpdCgiL1xzKy8iLCAkaXRlbSk7CgogICAgICAgICAgICAgICAgLy8gaWYgbm90ICJuYW1lIgogICAgICAgICAgICAgICAgaWYgKGVtcHR5KCRjaHVua3NbOF0pIHx8ICRjaHVua3NbOF0gPT0gJy4nIHx8ICRjaHVua3NbOF0gPT0gJy4uJykgewogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRwYXRoID0gJGRpcmVjdG9yeS4nLycuJGNodW5rc1s4XTsKCiAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJGNodW5rc1s5XSkpIHsKICAgICAgICAgICAgICAgICAgICAkbmJDaHVua3MgPSBjb3VudCgkY2h1bmtzKTsKCiAgICAgICAgICAgICAgICAgICAgZm9yICgkaSA9IDk7ICRpIDwgJG5iQ2h1bmtzOyAkaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRwYXRoIC49ICcgJy4kY2h1bmtzWyRpXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgoKICAgICAgICAgICAgICAgIGlmIChzdWJzdHIoJHBhdGgsIDAsIDIpID09ICcuLycpIHsKICAgICAgICAgICAgICAgICAgICAkcGF0aCA9IHN1YnN0cigkcGF0aCwgMik7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJGl0ZW1zWyAkdGhpcy0+cmF3VG9UeXBlKCRpdGVtKS4nIycuJHBhdGggXSA9ICRpdGVtOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJGl0ZW1zOwogICAgICAgIH0KCiAgICAgICAgJHBhdGggPSAnJzsKCiAgICAgICAgZm9yZWFjaCAoJGxpc3QgYXMgJGl0ZW0pIHsKICAgICAgICAgICAgJGxlbiA9IHN0cmxlbigkaXRlbSk7CgogICAgICAgICAgICBpZiAoISRsZW4KCiAgICAgICAgICAgIC8vICIuIgogICAgICAgICAgICB8fCAoJGl0ZW1bJGxlbi0xXSA9PSAnLicgJiYgJGl0ZW1bJGxlbi0yXSA9PSAnICcKCiAgICAgICAgICAgIC8vICIuLiIKICAgICAgICAgICAgb3IgJGl0ZW1bJGxlbi0xXSA9PSAnLicgJiYgJGl0ZW1bJGxlbi0yXSA9PSAnLicgJiYgJGl0ZW1bJGxlbi0zXSA9PSAnICcpCiAgICAgICAgICAgICl7CgogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRjaHVua3MgPSBwcmVnX3NwbGl0KCIvXHMrLyIsICRpdGVtKTsKCiAgICAgICAgICAgIC8vIGlmIG5vdCAibmFtZSIKICAgICAgICAgICAgaWYgKGVtcHR5KCRjaHVua3NbOF0pIHx8ICRjaHVua3NbOF0gPT0gJy4nIHx8ICRjaHVua3NbOF0gPT0gJy4uJykgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRwYXRoID0gJGRpcmVjdG9yeS4nLycuJGNodW5rc1s4XTsKCiAgICAgICAgICAgIGlmIChpc3NldCgkY2h1bmtzWzldKSkgewogICAgICAgICAgICAgICAgJG5iQ2h1bmtzID0gY291bnQoJGNodW5rcyk7CgogICAgICAgICAgICAgICAgZm9yICgkaSA9IDk7ICRpIDwgJG5iQ2h1bmtzOyAkaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgJHBhdGggLj0gJyAnLiRjaHVua3NbJGldOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoc3Vic3RyKCRwYXRoLCAwLCAyKSA9PSAnLi8nKSB7CiAgICAgICAgICAgICAgICAkcGF0aCA9IHN1YnN0cigkcGF0aCwgMik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRpdGVtc1skdGhpcy0+cmF3VG9UeXBlKCRpdGVtKS4nIycuJHBhdGhdID0gJGl0ZW07CgogICAgICAgICAgICBpZiAoJGl0ZW1bMF0gPT0gJ2QnKSB7CiAgICAgICAgICAgICAgICAkc3VibGlzdCA9ICR0aGlzLT5yYXdsaXN0KCRwYXRoLCB0cnVlKTsKCiAgICAgICAgICAgICAgICBmb3JlYWNoICgkc3VibGlzdCBhcyAkc3VicGF0aCA9PiAkc3ViaXRlbSkgewogICAgICAgICAgICAgICAgICAgICRpdGVtc1skc3VicGF0aF0gPSAkc3ViaXRlbTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRpdGVtczsKICAgIH0KCiAgICAvKioKICAgICAqIFBhcnNlIHJhdyBsaXN0LgogICAgICogCiAgICAgKiBAc2VlIEZ0cENsaWVudDo6cmF3bGlzdCgpCiAgICAgKiBAc2VlIEZ0cENsaWVudDo6c2NhbkRpcigpCiAgICAgKiBAc2VlIEZ0cENsaWVudDo6ZGlyU2l6ZSgpCiAgICAgKiBAcGFyYW0gIGFycmF5ICRyYXdsaXN0CiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwYXJzZVJhd0xpc3QoYXJyYXkgJHJhd2xpc3QpCiAgICB7CiAgICAgICAgJGl0ZW1zID0gYXJyYXkoKTsKICAgICAgICAkcGF0aCAgPSAnJzsKCiAgICAgICAgZm9yZWFjaCAoJHJhd2xpc3QgYXMgJGtleSA9PiAkY2hpbGQpIHsKICAgICAgICAgICAgJGNodW5rcyA9IHByZWdfc3BsaXQoIi9ccysvIiwgJGNoaWxkKTsKCiAgICAgICAgICAgIGlmIChpc3NldCgkY2h1bmtzWzhdKSAmJiAoJGNodW5rc1s4XSA9PSAnLicgb3IgJGNodW5rc1s4XSA9PSAnLi4nKSkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChjb3VudCgkY2h1bmtzKSA9PT0gMSkgewogICAgICAgICAgICAgICAgJGxlbiA9IHN0cmxlbigkY2h1bmtzWzBdKTsKCiAgICAgICAgICAgICAgICBpZiAoJGxlbiAmJiAkY2h1bmtzWzBdWyRsZW4tMV0gPT0gJzonKSB7CiAgICAgICAgICAgICAgICAgICAgJHBhdGggPSBzdWJzdHIoJGNodW5rc1swXSwgMCwgLTEpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkaXRlbSA9IFsKICAgICAgICAgICAgICAgICdwZXJtaXNzaW9ucycgPT4gJGNodW5rc1swXSwKICAgICAgICAgICAgICAgICdudW1iZXInICAgICAgPT4gJGNodW5rc1sxXSwKICAgICAgICAgICAgICAgICdvd25lcicgICAgICAgPT4gJGNodW5rc1syXSwKICAgICAgICAgICAgICAgICdncm91cCcgICAgICAgPT4gJGNodW5rc1szXSwKICAgICAgICAgICAgICAgICdzaXplJyAgICAgICAgPT4gJGNodW5rc1s0XSwKICAgICAgICAgICAgICAgICdtb250aCcgICAgICAgPT4gJGNodW5rc1s1XSwKICAgICAgICAgICAgICAgICdkYXknICAgICAgICAgPT4gJGNodW5rc1s2XSwKICAgICAgICAgICAgICAgICd0aW1lJyAgICAgICAgPT4gJGNodW5rc1s3XSwKICAgICAgICAgICAgICAgICduYW1lJyAgICAgICAgPT4gJGNodW5rc1s4XSwKICAgICAgICAgICAgICAgICd0eXBlJyAgICAgICAgPT4gJHRoaXMtPnJhd1RvVHlwZSgkY2h1bmtzWzBdKSwKICAgICAgICAgICAgXTsKCiAgICAgICAgICAgIHVuc2V0KCRjaHVua3NbMF0pOwogICAgICAgICAgICB1bnNldCgkY2h1bmtzWzFdKTsKICAgICAgICAgICAgdW5zZXQoJGNodW5rc1syXSk7CiAgICAgICAgICAgIHVuc2V0KCRjaHVua3NbM10pOwogICAgICAgICAgICB1bnNldCgkY2h1bmtzWzRdKTsKICAgICAgICAgICAgdW5zZXQoJGNodW5rc1s1XSk7CiAgICAgICAgICAgIHVuc2V0KCRjaHVua3NbNl0pOwogICAgICAgICAgICB1bnNldCgkY2h1bmtzWzddKTsKICAgICAgICAgICAgJGl0ZW1bJ25hbWUnXSA9IGltcGxvZGUoJyAnLCAkY2h1bmtzKTsKCiAgICAgICAgICAgIGlmICgkaXRlbVsndHlwZSddID09ICdsaW5rJykgewogICAgICAgICAgICAgICAgJGl0ZW1bJ3RhcmdldCddID0gJGNodW5rc1sxMF07IC8vIDkgaXMgIi0+IgogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBpZiB0aGUga2V5IGlzIG5vdCB0aGUgcGF0aCwgYmVoYXZpb3Igb2YgZnRwX3Jhd2xpc3QoKSBQSFAgZnVuY3Rpb24KICAgICAgICAgICAgaWYgKGlzX2ludCgka2V5KSB8fCBmYWxzZSA9PT0gc3RycG9zKCRrZXksICRpdGVtWyduYW1lJ10pKSB7CiAgICAgICAgICAgICAgICBhcnJheV9zcGxpY2UoJGNodW5rcywgMCwgOCk7CgogICAgICAgICAgICAgICAgJGtleSA9ICRpdGVtWyd0eXBlJ10uJyMnCiAgICAgICAgICAgICAgICAgICAgLigkcGF0aCA/ICRwYXRoLicvJyA6ICcnKQogICAgICAgICAgICAgICAgICAgIC5pbXBsb2RlKCIgIiwgJGNodW5rcyk7CgogICAgICAgICAgICAgICAgaWYgKCRpdGVtWyd0eXBlJ10gPT0gJ2xpbmsnKSB7CgogICAgICAgICAgICAgICAgICAgIC8vIGdldCB0aGUgZmlyc3QgcGFydCBvZiAnbGluayN0aGUtbGluay5leHQgLT4gL3BhdGgvb2YvdGhlL3NvdXJjZS5leHQnCiAgICAgICAgICAgICAgICAgICAgJGV4cCA9IGV4cGxvZGUoJyAtPicsICRrZXkpOwogICAgICAgICAgICAgICAgICAgICRrZXkgPSBydHJpbSgkZXhwWzBdKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkaXRlbXNbJGtleV0gPSAkaXRlbTsKCiAgICAgICAgICAgIH0gZWxzZSB7CgogICAgICAgICAgICAgICAgLy8gdGhlIGtleSBpcyB0aGUgcGF0aCwgYmVoYXZpb3Igb2YgRnRwQ2xpZW50OjpyYXdsaXN0KCkgbWV0aG9kKCkKICAgICAgICAgICAgICAgICRpdGVtc1ska2V5XSA9ICRpdGVtOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGl0ZW1zOwogICAgfQoKCS8qKgoJICogQ29udmVydCByYXcgaW5mbyAoZHJ3eC0tLXIteCAuLi4pIHRvIHR5cGUgKGZpbGUsIGRpcmVjdG9yeSwgbGluaywgdW5rbm93bikuCgkgKiBPbmx5IHRoZSBmaXJzdCBjaGFyIGlzIHVzZWQgZm9yIHJlc29sdmluZy4KCSAqCgkgKiBAcGFyYW0gIHN0cmluZyAkcGVybWlzc2lvbiBFeGFtcGxlIDogZHJ3eC0tLXIteAoJICoKCSAqIEByZXR1cm4gc3RyaW5nIFRoZSBmaWxlIHR5cGUgKGZpbGUsIGRpcmVjdG9yeSwgbGluaywgdW5rbm93bikKCSAqIEB0aHJvd3MgRnRwRXhjZXB0aW9uCgkgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByYXdUb1R5cGUoJHBlcm1pc3Npb24pCiAgICB7CiAgICAgICAgaWYgKCFpc19zdHJpbmcoJHBlcm1pc3Npb24pKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBGdHBFeGNlcHRpb24oJ1RoZSAiJHBlcm1pc3Npb24iIGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcsICInCiAgICAgICAgICAgIC5nZXR0eXBlKCRwZXJtaXNzaW9uKS4nIiBnaXZlbi4nKTsKICAgICAgICB9CgogICAgICAgIGlmIChlbXB0eSgkcGVybWlzc2lvblswXSkpIHsKICAgICAgICAgICAgcmV0dXJuICd1bmtub3duJzsKICAgICAgICB9CgogICAgICAgIHN3aXRjaCAoJHBlcm1pc3Npb25bMF0pIHsKICAgICAgICAgICAgY2FzZSAnLSc6CiAgICAgICAgICAgICAgICByZXR1cm4gJ2ZpbGUnOwoKICAgICAgICAgICAgY2FzZSAnZCc6CiAgICAgICAgICAgICAgICByZXR1cm4gJ2RpcmVjdG9yeSc7CgogICAgICAgICAgICBjYXNlICdsJzoKICAgICAgICAgICAgICAgIHJldHVybiAnbGluayc7CgogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgcmV0dXJuICd1bmtub3duJzsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIHdyYXBwZXIgd2hpY2ggZm9yd2FyZCB0aGUgUEhQIEZUUCBmdW5jdGlvbnMgdG8gdXNlIGluIEZ0cENsaWVudCBpbnN0YW5jZS4KICAgICAqIAogICAgICogQHBhcmFtICBGdHBXcmFwcGVyICR3cmFwcGVyCiAgICAgKiBAcmV0dXJuIEZ0cENsaWVudAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gc2V0V3JhcHBlcihGdHBXcmFwcGVyICR3cmFwcGVyKQogICAgewogICAgICAgICR0aGlzLT5mdHAgPSAkd3JhcHBlcjsKCiAgICAgICAgcmV0dXJuICR0aGlzOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/include/FtpException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIGBuaWNvbGFiL3BocC1mdHAtY2xpZW50YCBwYWNrYWdlLgogKgogKiAoYykgTmljb2xhcyBUYWxsZWZvdXJ0YW5lIDxkZXZAbmljb2xhYi5uZXQ+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKgogKiBAY29weXJpZ2h0IE5pY29sYXMgVGFsbGVmb3VydGFuZSBodHRwOi8vbmljb2xhYi5uZXQKICovCm5hbWVzcGFjZSBGdHBDbGllbnQ7CgovKioKICogVGhlIEZ0cEV4Y2VwdGlvbiBjbGFzcy4KICogRXhjZXB0aW9uIHRocm93biBpZiBhbiBlcnJvciBvbiBydW50aW1lIG9mIHRoZSBGVFAgY2xpZW50IG9jY3Vycy4KICogQGluaGVyaXREb2MKICogQGF1dGhvciBOaWNvbGFzIFRhbGxlZm91cnRhbmUgPGRldkBuaWNvbGFiLm5ldD4KICovCmNsYXNzIEZ0cEV4Y2VwdGlvbiBleHRlbmRzIFxFeGNlcHRpb24ge30K]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/include/FtpWrapper.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIGBuaWNvbGFiL3BocC1mdHAtY2xpZW50YCBwYWNrYWdlLgogKgogKiAoYykgTmljb2xhcyBUYWxsZWZvdXJ0YW5lIDxkZXZAbmljb2xhYi5uZXQ+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKgogKiBAY29weXJpZ2h0IE5pY29sYXMgVGFsbGVmb3VydGFuZSBodHRwOi8vbmljb2xhYi5uZXQKICovCm5hbWVzcGFjZSBGdHBDbGllbnQ7CgovKioKICogV3JhcCB0aGUgUEhQIEZUUCBmdW5jdGlvbnMKICoKICogQG1ldGhvZCBib29sIGFsbG9jKCkgYWxsb2MoaW50ICRmaWxlc2l6ZSwgc3RyaW5nICYkcmVzdWx0ID0gbnVsbCkgQWxsb2NhdGVzIHNwYWNlIGZvciBhIGZpbGUgdG8gYmUgdXBsb2FkZWQKICogQG1ldGhvZCBib29sIGNkdXAoKSBjZHVwKCkgQ2hhbmdlcyB0byB0aGUgcGFyZW50IGRpcmVjdG9yeQogKiBAbWV0aG9kIGJvb2wgY2hkaXIoKSBjaGRpcihzdHJpbmcgJGRpcmVjdG9yeSkgQ2hhbmdlcyB0aGUgY3VycmVudCBkaXJlY3Rvcnkgb24gYSBGVFAgc2VydmVyCiAqIEBtZXRob2QgaW50IGNobW9kKCkgY2htb2QoaW50ICRtb2RlLCBzdHJpbmcgJGZpbGVuYW1lKSBTZXQgcGVybWlzc2lvbnMgb24gYSBmaWxlIHZpYSBGVFAKICogQG1ldGhvZCBib29sIGNsb3NlKCkgY2xvc2UoKSBDbG9zZXMgYW4gRlRQIGNvbm5lY3Rpb24KICogQG1ldGhvZCBib29sIGRlbGV0ZSgpIGRlbGV0ZShzdHJpbmcgJHBhdGgpIERlbGV0ZXMgYSBmaWxlIG9uIHRoZSBGVFAgc2VydmVyCiAqIEBtZXRob2QgYm9vbCBleGVjKCkgZXhlYyhzdHJpbmcgJGNvbW1hbmQpIFJlcXVlc3RzIGV4ZWN1dGlvbiBvZiBhIGNvbW1hbmQgb24gdGhlIEZUUCBzZXJ2ZXIKICogQG1ldGhvZCBib29sIGZnZXQoKSBmZ2V0KHJlc291cmNlICRoYW5kbGUsIHN0cmluZyAkcmVtb3RlX2ZpbGUsIGludCAkbW9kZSwgaW50ICRyZXN1bWVwb3MgPSAwKSBEb3dubG9hZHMgYSBmaWxlIGZyb20gdGhlIEZUUCBzZXJ2ZXIgYW5kIHNhdmVzIHRvIGFuIG9wZW4gZmlsZQogKiBAbWV0aG9kIGJvb2wgZnB1dCgpIGZwdXQoc3RyaW5nICRyZW1vdGVfZmlsZSwgcmVzb3VyY2UgJGhhbmRsZSwgaW50ICRtb2RlLCBpbnQgJHN0YXJ0cG9zID0gMCkgVXBsb2FkcyBmcm9tIGFuIG9wZW4gZmlsZSB0byB0aGUgRlRQIHNlcnZlcgogKiBAbWV0aG9kIG1peGVkIGdldF9vcHRpb24oKSBnZXRfb3B0aW9uKGludCAkb3B0aW9uKSBSZXRyaWV2ZXMgdmFyaW91cyBydW50aW1lIGJlaGF2aW91cnMgb2YgdGhlIGN1cnJlbnQgRlRQIHN0cmVhbQogKiBAbWV0aG9kIGJvb2wgZ2V0KCkgZ2V0KHN0cmluZyAkbG9jYWxfZmlsZSwgc3RyaW5nICRyZW1vdGVfZmlsZSwgaW50ICRtb2RlLCBpbnQgJHJlc3VtZXBvcyA9IDApIERvd25sb2FkcyBhIGZpbGUgZnJvbSB0aGUgRlRQIHNlcnZlcgogKiBAbWV0aG9kIGJvb2wgbG9naW4oKSBsb2dpbihzdHJpbmcgJHVzZXJuYW1lLCBzdHJpbmcgJHBhc3N3b3JkKSBMb2dzIGluIHRvIGFuIEZUUCBjb25uZWN0aW9uCiAqIEBtZXRob2QgaW50IG1kdG0oKSBtZHRtKHN0cmluZyAkcmVtb3RlX2ZpbGUpIFJldHVybnMgdGhlIGxhc3QgbW9kaWZpZWQgdGltZSBvZiB0aGUgZ2l2ZW4gZmlsZQogKiBAbWV0aG9kIHN0cmluZyBta2RpcigpIG1rZGlyKHN0cmluZyAkZGlyZWN0b3J5KSBDcmVhdGVzIGEgZGlyZWN0b3J5CiAqIEBtZXRob2QgaW50IG5iX2NvbnRpbnVlKCkgbmJfY29udGludWUoKSBDb250aW51ZXMgcmV0cmlldmluZy9zZW5kaW5nIGEgZmlsZSAobm9uLWJsb2NraW5nKQogKiBAbWV0aG9kIGludCBuYl9mZ2V0KCkgbmJfZmdldChyZXNvdXJjZSAkaGFuZGxlLCBzdHJpbmcgJHJlbW90ZV9maWxlLCBpbnQgJG1vZGUsIGludCAkcmVzdW1lcG9zID0gMCkgUmV0cmlldmVzIGEgZmlsZSBmcm9tIHRoZSBGVFAgc2VydmVyIGFuZCB3cml0ZXMgaXQgdG8gYW4gb3BlbiBmaWxlIChub24tYmxvY2tpbmcpCiAqIEBtZXRob2QgaW50IG5iX2ZwdXQoKSBuYl9mcHV0KHN0cmluZyAkcmVtb3RlX2ZpbGUsIHJlc291cmNlICRoYW5kbGUsIGludCAkbW9kZSwgaW50ICRzdGFydHBvcyA9IDApIFN0b3JlcyBhIGZpbGUgZnJvbSBhbiBvcGVuIGZpbGUgdG8gdGhlIEZUUCBzZXJ2ZXIgKG5vbi1ibG9ja2luZykKICogQG1ldGhvZCBpbnQgbmJfZ2V0KCkgbmJfZ2V0KHN0cmluZyAkbG9jYWxfZmlsZSwgc3RyaW5nICRyZW1vdGVfZmlsZSwgaW50ICRtb2RlLCBpbnQgJHJlc3VtZXBvcyA9IDApIFJldHJpZXZlcyBhIGZpbGUgZnJvbSB0aGUgRlRQIHNlcnZlciBhbmQgd3JpdGVzIGl0IHRvIGEgbG9jYWwgZmlsZSAobm9uLWJsb2NraW5nKQogKiBAbWV0aG9kIGludCBuYl9wdXQoKSBuYl9wdXQoc3RyaW5nICRyZW1vdGVfZmlsZSwgc3RyaW5nICRsb2NhbF9maWxlLCBpbnQgJG1vZGUsIGludCAkc3RhcnRwb3MgPSAwKSBTdG9yZXMgYSBmaWxlIG9uIHRoZSBGVFAgc2VydmVyIChub24tYmxvY2tpbmcpCiAqIEBtZXRob2QgYXJyYXkgbmxpc3QoKSBubGlzdChzdHJpbmcgJGRpcmVjdG9yeSkgUmV0dXJucyBhIGxpc3Qgb2YgZmlsZXMgaW4gdGhlIGdpdmVuIGRpcmVjdG9yeQogKiBAbWV0aG9kIGJvb2wgcGFzdigpIHBhc3YoYm9vbCAkcGFzdikgVHVybnMgcGFzc2l2ZSBtb2RlIG9uIG9yIG9mZgogKiBAbWV0aG9kIGJvb2wgcHV0KCkgcHV0KHN0cmluZyAkcmVtb3RlX2ZpbGUsIHN0cmluZyAkbG9jYWxfZmlsZSwgaW50ICRtb2RlLCBpbnQgJHN0YXJ0cG9zID0gMCkgVXBsb2FkcyBhIGZpbGUgdG8gdGhlIEZUUCBzZXJ2ZXIKICogQG1ldGhvZCBzdHJpbmcgcHdkKCkgcHdkKCkgUmV0dXJucyB0aGUgY3VycmVudCBkaXJlY3RvcnkgbmFtZQogKiBAbWV0aG9kIGJvb2wgcXVpdCgpIHF1aXQoKSBDbG9zZXMgYW4gRlRQIGNvbm5lY3Rpb24KICogQG1ldGhvZCBhcnJheSByYXcoKSByYXcoc3RyaW5nICRjb21tYW5kKSBTZW5kcyBhbiBhcmJpdHJhcnkgY29tbWFuZCB0byBhbiBGVFAgc2VydmVyCiAqIEBtZXRob2QgYXJyYXkgcmF3bGlzdCgpIHJhd2xpc3Qoc3RyaW5nICRkaXJlY3RvcnksIGJvb2wgJHJlY3Vyc2l2ZSA9IGZhbHNlKSBSZXR1cm5zIGEgZGV0YWlsZWQgbGlzdCBvZiBmaWxlcyBpbiB0aGUgZ2l2ZW4gZGlyZWN0b3J5CiAqIEBtZXRob2QgYm9vbCByZW5hbWUoKSByZW5hbWUoc3RyaW5nICRvbGRuYW1lLCBzdHJpbmcgJG5ld25hbWUpIFJlbmFtZXMgYSBmaWxlIG9yIGEgZGlyZWN0b3J5IG9uIHRoZSBGVFAgc2VydmVyCiAqIEBtZXRob2QgYm9vbCBybWRpcigpIHJtZGlyKHN0cmluZyAkZGlyZWN0b3J5KSBSZW1vdmVzIGEgZGlyZWN0b3J5CiAqIEBtZXRob2QgYm9vbCBzZXRfb3B0aW9uKCkgc2V0X29wdGlvbihpbnQgJG9wdGlvbiwgbWl4ZWQgJHZhbHVlKSBTZXQgbWlzY2VsbGFuZW91cyBydW50aW1lIEZUUCBvcHRpb25zCiAqIEBtZXRob2QgYm9vbCBzaXRlKCkgc2l0ZShzdHJpbmcgJGNvbW1hbmQpIFNlbmRzIGEgU0lURSBjb21tYW5kIHRvIHRoZSBzZXJ2ZXIKICogQG1ldGhvZCBpbnQgc2l6ZSgpIHNpemUoc3RyaW5nICRyZW1vdGVfZmlsZSkgUmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgZ2l2ZW4gZmlsZQogKiBAbWV0aG9kIHN0cmluZyBzeXN0eXBlKCkgc3lzdHlwZSgpIFJldHVybnMgdGhlIHN5c3RlbSB0eXBlIGlkZW50aWZpZXIgb2YgdGhlIHJlbW90ZSBGVFAgc2VydmVyCiAqCiAqIEBhdXRob3IgTmljb2xhcyBUYWxsZWZvdXJ0YW5lIDxkZXZAbmljb2xhYi5uZXQ+CiAqLwpjbGFzcyBGdHBXcmFwcGVyCnsKICAgIC8qKgogICAgICogVGhlIGNvbm5lY3Rpb24gd2l0aCB0aGUgc2VydmVyCiAgICAgKgogICAgICogQHZhciByZXNvdXJjZQogICAgICovCiAgICBwcm90ZWN0ZWQgJGNvbm47CgogICAgLyoqCiAgICAgKiBDb25zdHJ1Y3Rvci4KICAgICAqCiAgICAgKiBAcGFyYW0gcmVzb3VyY2UgJiRjb25uZWN0aW9uIFRoZSBGVFAgKG9yIFNTTC1GVFApIGNvbm5lY3Rpb24gKHRha2VzIGJ5IHJlZmVyZW5jZSkuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgmJGNvbm5lY3Rpb24pCiAgICB7CiAgICAgICAgJHRoaXMtPmNvbm4gPSAmJGNvbm5lY3Rpb247CiAgICB9CgogICAgLyoqCiAgICAgKiBGb3J3YXJkIHRoZSBtZXRob2QgY2FsbCB0byBGVFAgZnVuY3Rpb25zCiAgICAgKgogICAgICogQHBhcmFtICBzdHJpbmcgICAgICAgJGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0gIGFycmF5ICAgICAgICAkYXJndW1lbnRzCiAgICAgKiBAcmV0dXJuIG1peGVkCiAgICAgKiBAdGhyb3dzIEZ0cEV4Y2VwdGlvbiBXaGVuIHRoZSBmdW5jdGlvbiBpcyBub3QgdmFsaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY2FsbCgkZnVuY3Rpb24sIGFycmF5ICRhcmd1bWVudHMpCiAgICB7CiAgICAgICAgJGZ1bmN0aW9uID0gJ2Z0cF8nIC4gJGZ1bmN0aW9uOwoKICAgICAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCRmdW5jdGlvbikpIHsKICAgICAgICAgICAgYXJyYXlfdW5zaGlmdCgkYXJndW1lbnRzLCAkdGhpcy0+Y29ubik7CiAgICAgICAgICAgIHJldHVybiBjYWxsX3VzZXJfZnVuY19hcnJheSgkZnVuY3Rpb24sICRhcmd1bWVudHMpOwogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IEZ0cEV4Y2VwdGlvbigieyRmdW5jdGlvbn0gaXMgbm90IGEgdmFsaWQgRlRQIGZ1bmN0aW9uIik7CiAgICB9CgogICAgLyoqCiAgICAgKiBPcGVucyBhIEZUUCBjb25uZWN0aW9uCiAgICAgKgogICAgICogQHBhcmFtICBzdHJpbmcgICAkaG9zdAogICAgICogQHBhcmFtICBpbnQgICAgICAkcG9ydAogICAgICogQHBhcmFtICBpbnQgICAgICAkdGltZW91dAogICAgICogQHJldHVybiByZXNvdXJjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY29ubmVjdCgkaG9zdCwgJHBvcnQgPSAyMSwgJHRpbWVvdXQgPSA5MCkKICAgIHsKICAgICAgICByZXR1cm4gZnRwX2Nvbm5lY3QoJGhvc3QsICRwb3J0LCAkdGltZW91dCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBPcGVucyBhIFNlY3VyZSBTU0wtRlRQIGNvbm5lY3Rpb24KICAgICAqIEBwYXJhbSAgc3RyaW5nICAgJGhvc3QKICAgICAqIEBwYXJhbSAgaW50ICAgICAgJHBvcnQKICAgICAqIEBwYXJhbSAgaW50ICAgICAgJHRpbWVvdXQKICAgICAqIEByZXR1cm4gcmVzb3VyY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNzbF9jb25uZWN0KCRob3N0LCAkcG9ydCA9IDIxLCAkdGltZW91dCA9IDkwKQogICAgewogICAgICAgIHJldHVybiBmdHBfc3NsX2Nvbm5lY3QoJGhvc3QsICRwb3J0LCAkdGltZW91dCk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/include/ftp_class.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCkNsYXNzIEZUUENsaWVudAp7CgkvLyAqKiogQ2xhc3MgdmFyaWFibGVzCglwcml2YXRlICRjb25uZWN0aW9uSWQ7Cglwcml2YXRlICRsb2dpbk9rID0gZmFsc2U7Cglwcml2YXRlICRtZXNzYWdlQXJyYXkgPSBhcnJheSgpOwoKCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpIHsgfQoKCXByaXZhdGUgZnVuY3Rpb24gbG9nTWVzc2FnZSgkbWVzc2FnZSkgCgl7CgkJJHRoaXMtPm1lc3NhZ2VBcnJheVtdID0gJG1lc3NhZ2U7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGdldE1lc3NhZ2VzKCkKCXsKCQlyZXR1cm4gJHRoaXMtPm1lc3NhZ2VBcnJheTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gY29ubmVjdCAoJHNlcnZlciwgJGZ0cFVzZXIsICRmdHBQYXNzd29yZCwgJGlzUGFzc2l2ZSA9IGZhbHNlKQoJewoKCQkvLyAqKiogU2V0IHVwIGJhc2ljIGNvbm5lY3Rpb24KCQkkdGhpcy0+Y29ubmVjdGlvbklkID0gZnRwX2Nvbm5lY3QoJHNlcnZlcik7CgoJCS8vICoqKiBMb2dpbiB3aXRoIHVzZXJuYW1lIGFuZCBwYXNzd29yZAoJCSRsb2dpblJlc3VsdCA9IGZ0cF9sb2dpbigkdGhpcy0+Y29ubmVjdGlvbklkLCAkZnRwVXNlciwgJGZ0cFBhc3N3b3JkKTsKCgkJLy8gKioqIFNldHMgcGFzc2l2ZSBtb2RlIG9uL29mZiAoZGVmYXVsdCBvZmYpCgkJZnRwX3Bhc3YoJHRoaXMtPmNvbm5lY3Rpb25JZCwgJGlzUGFzc2l2ZSk7CgoJCS8vICoqKiBDaGVjayBjb25uZWN0aW9uCgkJaWYgKCghJHRoaXMtPmNvbm5lY3Rpb25JZCkgfHwgKCEkbG9naW5SZXN1bHQpKSB7CgkJCSR0aGlzLT5sb2dNZXNzYWdlKCdGVFAgY29ubmVjdGlvbiBoYXMgZmFpbGVkIScpOwoJCQkkdGhpcy0+bG9nTWVzc2FnZSgnQXR0ZW1wdGVkIHRvIGNvbm5lY3QgdG8gJyAuICRzZXJ2ZXIgLiAnIGZvciB1c2VyICcgLiAkZnRwVXNlciwgdHJ1ZSk7CgkJCXJldHVybiBmYWxzZTsKCQl9IGVsc2UgewoJCQkkdGhpcy0+bG9nTWVzc2FnZSgnQ29ubmVjdGVkIHRvICcgLiAkc2VydmVyIC4gJywgZm9yIHVzZXIgJyAuICRmdHBVc2VyKTsKCQkJJHRoaXMtPmxvZ2luT2sgPSB0cnVlOwoJCQlyZXR1cm4gdHJ1ZTsKCQl9Cgl9CglwdWJsaWMgZnVuY3Rpb24gbWFrZURpcigkZGlyZWN0b3J5KQoJewoJCS8vICoqKiBJZiBjcmVhdGluZyBhIGRpcmVjdG9yeSBpcyBzdWNjZXNzZnVsLi4uCgkJaWYgKGZ0cF9ta2RpcigkdGhpcy0+Y29ubmVjdGlvbklkLCAkZGlyZWN0b3J5KSkgewoKCQkJJHRoaXMtPmxvZ01lc3NhZ2UoJ0RpcmVjdG9yeSAiJyAuICRkaXJlY3RvcnkgLiAnIiBjcmVhdGVkIHN1Y2Nlc3NmdWxseScpOwoJCQlyZXR1cm4gdHJ1ZTsKCgkJfSBlbHNlIHsKCgkJCS8vICoqKiAuLi5FbHNlLCBGQUlMLgoJCQkkdGhpcy0+bG9nTWVzc2FnZSgnRmFpbGVkIGNyZWF0aW5nIGRpcmVjdG9yeSAiJyAuICRkaXJlY3RvcnkgLiAnIicpOwoJCQlyZXR1cm4gZmFsc2U7CgkJfQoJfQoKCXB1YmxpYyBmdW5jdGlvbiBjaGFuZ2VEaXIoJGRpcmVjdG9yeSkKCXsKCSAgICBpZiAoZnRwX2NoZGlyKCR0aGlzLT5jb25uZWN0aW9uSWQsICRkaXJlY3RvcnkpKSB7CgkgICAgICAgICR0aGlzLT5sb2dNZXNzYWdlKCdDdXJyZW50IGRpcmVjdG9yeSBpcyBub3c6ICcgLiBmdHBfcHdkKCR0aGlzLT5jb25uZWN0aW9uSWQpKTsKCSAgICAgICAgcmV0dXJuIHRydWU7CgkgICAgfSBlbHNlIHsgCgkgICAgICAgICR0aGlzLT5sb2dNZXNzYWdlKCdDb3VsZG5cJ3QgY2hhbmdlIGRpcmVjdG9yeScpOwoJICAgICAgICByZXR1cm4gZmFsc2U7CgkgICAgfQoJfQoKCXB1YmxpYyBmdW5jdGlvbiBnZXREaXJMaXN0aW5nKCRkaXJlY3RvcnkgPSAnLicsICRwYXJhbWV0ZXJzID0gJy1sYScpCgl7CgkJZWNobyBzaGVsbF9leGVjKCd3aG9hbWknKS4iIGlzIHdobyBpIGFtIDwvYnI+IjsKCQllY2hvICJDdXJyZW50IGRpcmVjdG9yeSBpcyBub3c6ICIgLiBmdHBfcHdkKCR0aGlzLT5jb25uZWN0aW9uSWQpIC4gIjwvYnI+IjsKCgkgICAgLy8gZ2V0IGNvbnRlbnRzIG9mIHRoZSBjdXJyZW50IGRpcmVjdG9yeQoJICAgICRjb250ZW50c0FycmF5ID0gZnRwX3Jhd2xpc3QoJHRoaXMtPmNvbm5lY3Rpb25JZCwgJHBhcmFtZXRlcnMgLiAnICAnIC4gJGRpcmVjdG9yeSk7CgkgCWVjaG8gZXJyb3JfZ2V0X2xhc3QoKTsKCSAgICByZXR1cm4gJGNvbnRlbnRzQXJyYXk7Cgl9Cn0=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/include/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/include/mime_type_lib.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiRtaW1lX3R5cGVzID0gYXJyYXkoDQoJImFwcGxpY2F0aW9uL3Bvc3RzY3JpcHQiID0+ICJwcyIsDQoJImF1ZGlvL3gtYWlmZiIgPT4gImFpZmYiLA0KCSJ0ZXh0L3BsYWluIiA9PiAidHh0IiwNCgkidmlkZW8veC1tcy1hc2YiID0+ICJhc3giLA0KCSJhdWRpby9iYXNpYyIgPT4gInNuZCIsDQoJInZpZGVvL3gtbXN2aWRlbyIgPT4gImF2aSIsDQoJImFwcGxpY2F0aW9uL3gtYmNwaW8iID0+ICJiY3BpbyIsDQoJImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIgPT4gInNvIiwNCgkiaW1hZ2UvYm1wIiA9PiAiYm1wIiwNCgkiYXBwbGljYXRpb24veC1yYXIiID0+ICJyYXIiLA0KCSJhcHBsaWNhdGlvbi94LWJ6aXAyIiA9PiAiYnoyIiwNCgkiYXBwbGljYXRpb24veC1uZXRjZGYiID0+ICJuYyIsDQoJImFwcGxpY2F0aW9uL3gta2NoYXJ0IiA9PiAiY2hydCIsDQoJImFwcGxpY2F0aW9uL3gtY3BpbyIgPT4gImNwaW8iLA0KCSJhcHBsaWNhdGlvbi9tYWMtY29tcGFjdHBybyIgPT4gImNwdCIsDQoJImFwcGxpY2F0aW9uL3gtY3NoIiA9PiAiY3NoIiwNCgkidGV4dC9jc3MiID0+ICJjc3MiLA0KCSJhcHBsaWNhdGlvbi94LWRpcmVjdG9yIiA9PiAiZHhyIiwNCgkiaW1hZ2Uvdm5kLmRqdnUiID0+ICJkanZ1IiwNCgkiYXBwbGljYXRpb24veC1kdmkiID0+ICJkdmkiLA0KCSJpbWFnZS92bmQuZHdnIiA9PiAiZHdnIiwNCgkiYXBwbGljYXRpb24vZXB1YiIgPT4gImVwdWIiLA0KCSJhcHBsaWNhdGlvbi9lcHViK3ppcCIgPT4gImVwdWIiLA0KCSJ0ZXh0L3gtc2V0ZXh0IiA9PiAiZXR4IiwNCgkiYXBwbGljYXRpb24vYW5kcmV3LWluc2V0IiA9PiAiZXoiLA0KCSJ2aWRlby94LWZsdiIgPT4gImZsdiIsDQoJImltYWdlL2dpZiIgPT4gImdpZiIsDQoJImFwcGxpY2F0aW9uL3gtZ3RhciIgPT4gImd0YXIiLA0KCSJhcHBsaWNhdGlvbi94LWd6aXAiID0+ICJ0Z3oiLA0KCSJhcHBsaWNhdGlvbi94LWhkZiIgPT4gImhkZiIsDQoJImFwcGxpY2F0aW9uL21hYy1iaW5oZXg0MCIgPT4gImhxeCIsDQoJInRleHQvaHRtbCIgPT4gImh0bWwiLA0KCSJ0ZXh0L2h0bSIgPT4gImh0bSIsDQoJIngtY29uZmVyZW5jZS94LWNvb2x0YWxrIiA9PiAiaWNlIiwNCgkiaW1hZ2UvaWVmIiA9PiAiaWVmIiwNCgkibW9kZWwvaWdlcyIgPT4gImlncyIsDQoJInRleHQvdm5kLnN1bi5qMm1lLmFwcC1kZXNjcmlwdG9yIiA9PiAiamFkIiwNCgkiYXBwbGljYXRpb24veC1qYXZhLWFyY2hpdmUiID0+ICJqYXIiLA0KCSJhcHBsaWNhdGlvbi94LWphdmEtam5scC1maWxlIiA9PiAiam5scCIsDQoJImltYWdlL2pwZWciID0+ICJqcGciLA0KCSJhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQiID0+ICJqcyIsDQoJImF1ZGlvL21pZGkiID0+ICJtaWRpIiwNCgkiYXBwbGljYXRpb24veC1raWxsdXN0cmF0b3IiID0+ICJraWwiLA0KCSJhcHBsaWNhdGlvbi94LWtwcmVzZW50ZXIiID0+ICJrcHQiLA0KCSJhcHBsaWNhdGlvbi94LWtzcHJlYWQiID0+ICJrc3AiLA0KCSJhcHBsaWNhdGlvbi94LWt3b3JkIiA9PiAia3d0IiwNCgkiYXBwbGljYXRpb24vdm5kLmdvb2dsZS1lYXJ0aC5rbWwreG1sIiA9PiAia21sIiwNCgkiYXBwbGljYXRpb24vdm5kLmdvb2dsZS1lYXJ0aC5rbXoiID0+ICJrbXoiLA0KCSJhcHBsaWNhdGlvbi94LWxhdGV4IiA9PiAibGF0ZXgiLA0KCSJhdWRpby94LW1wZWd1cmwiID0+ICJtM3UiLA0KCSJhcHBsaWNhdGlvbi94LXRyb2ZmLW1hbiIgPT4gIm1hbiIsDQoJImFwcGxpY2F0aW9uL3gtdHJvZmYtbWUiID0+ICJtZSIsDQoJIm1vZGVsL21lc2giID0+ICJzaWxvIiwNCgkiYXBwbGljYXRpb24vdm5kLm1pZiIgPT4gIm1pZiIsDQoJInZpZGVvL3F1aWNrdGltZSIgPT4gIm1vdiIsDQoJInZpZGVvL3gtc2dpLW1vdmllIiA9PiAibW92aWUiLA0KCSJhdWRpby9tcGVnIiA9PiAibXAzIiwNCgkidmlkZW8vbXA0IiA9PiAibXA0IiwNCgkidmlkZW8vbXBlZyIgPT4gIm1wZWciLA0KCSJhcHBsaWNhdGlvbi94LXRyb2ZmLW1zIiA9PiAibXMiLA0KCSJ2aWRlby92bmQubXBlZ3VybCIgPT4gIm14dSIsDQoJImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuZGF0YWJhc2UiID0+ICJvZGIiLA0KCSJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LmNoYXJ0IiA9PiAib2RjIiwNCgkiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5mb3JtdWxhIiA9PiAib2RmIiwNCgkiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5ncmFwaGljcyIgPT4gIm9kZyIsDQoJImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuaW1hZ2UiID0+ICJvZGkiLA0KCSJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHQtbWFzdGVyIiA9PiAib2RtIiwNCgkiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5wcmVzZW50YXRpb24iID0+ICJvZHAiLA0KCSJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnNwcmVhZHNoZWV0IiA9PiAib2RzIiwNCgkiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC50ZXh0IiA9PiAib2R0IiwNCgkiYXBwbGljYXRpb24vb2dnIiA9PiAib2dnIiwNCgkidmlkZW8vb2dnIiA9PiAib2d2IiwNCgkiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5ncmFwaGljcy10ZW1wbGF0ZSIgPT4gIm90ZyIsDQoJImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQudGV4dC13ZWIiID0+ICJvdGgiLA0KCSJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnByZXNlbnRhdGlvbi10ZW1wbGF0ZSIgPT4gIm90cCIsDQoJImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuc3ByZWFkc2hlZXQtdGVtcGxhdGUiID0+ICJvdHMiLA0KCSJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHQtdGVtcGxhdGUiID0+ICJvdHQiLA0KCSJpbWFnZS94LXBvcnRhYmxlLWJpdG1hcCIgPT4gInBibSIsDQoJImNoZW1pY2FsL3gtcGRiIiA9PiAicGRiIiwNCgkiYXBwbGljYXRpb24vcGRmIiA9PiAicGRmIiwNCgkiaW1hZ2UveC1wb3J0YWJsZS1ncmF5bWFwIiA9PiAicGdtIiwNCgkiYXBwbGljYXRpb24veC1jaGVzcy1wZ24iID0+ICJwZ24iLA0KCSJ0ZXh0L3gtcGhwIiA9PiAicGhwIiwNCgkiaW1hZ2UvcG5nIiA9PiAicG5nIiwNCgkiaW1hZ2UveC1wb3J0YWJsZS1hbnltYXAiID0+ICJwbm0iLA0KCSJpbWFnZS94LXBvcnRhYmxlLXBpeG1hcCIgPT4gInBwbSIsDQoJImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50IiA9PiAicHB0IiwNCgkiYXVkaW8veC1yZWFsYXVkaW8iID0+ICJyYSIsDQoJImF1ZGlvL3gtcG4tcmVhbGF1ZGlvIiA9PiAicm0iLA0KCSJpbWFnZS94LWNtdS1yYXN0ZXIiID0+ICJyYXMiLA0KCSJpbWFnZS94LXJnYiIgPT4gInJnYiIsDQoJImFwcGxpY2F0aW9uL3gtdHJvZmYiID0+ICJ0ciIsDQoJImFwcGxpY2F0aW9uL3gtcnBtIiA9PiAicnBtIiwNCgkidGV4dC9ydGYiID0+ICJydGYiLA0KCSJ0ZXh0L3JpY2h0ZXh0IiA9PiAicnR4IiwNCgkidGV4dC9zZ21sIiA9PiAic2dtbCIsDQoJImFwcGxpY2F0aW9uL3gtc2giID0+ICJzaCIsDQoJImFwcGxpY2F0aW9uL3gtc2hhciIgPT4gInNoYXIiLA0KCSJhcHBsaWNhdGlvbi92bmQuc3ltYmlhbi5pbnN0YWxsIiA9PiAic2lzIiwNCgkiYXBwbGljYXRpb24veC1zdHVmZml0IiA9PiAic2l0IiwNCgkiYXBwbGljYXRpb24veC1rb2FuIiA9PiAic2t0IiwNCgkiYXBwbGljYXRpb24vc21pbCIgPT4gInNtaWwiLA0KCSJpbWFnZS9zdmcreG1sIiA9PiAic3ZnIiwNCgkiYXBwbGljYXRpb24veC1mdXR1cmVzcGxhc2giID0+ICJzcGwiLA0KCSJhcHBsaWNhdGlvbi94LXdhaXMtc291cmNlIiA9PiAic3JjIiwNCgkiYXBwbGljYXRpb24vdm5kLnN1bi54bWwuY2FsYy50ZW1wbGF0ZSIgPT4gInN0YyIsDQoJImFwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLmRyYXcudGVtcGxhdGUiID0+ICJzdGQiLA0KCSJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5pbXByZXNzLnRlbXBsYXRlIiA9PiAic3RpIiwNCgkiYXBwbGljYXRpb24vdm5kLnN1bi54bWwud3JpdGVyLnRlbXBsYXRlIiA9PiAic3R3IiwNCgkiYXBwbGljYXRpb24veC1zdjRjcGlvIiA9PiAic3Y0Y3BpbyIsDQoJImFwcGxpY2F0aW9uL3gtc3Y0Y3JjIiA9PiAic3Y0Y3JjIiwNCgkiYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giID0+ICJzd2YiLA0KCSJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5jYWxjIiA9PiAic3hjIiwNCgkiYXBwbGljYXRpb24vdm5kLnN1bi54bWwuZHJhdyIgPT4gInN4ZCIsDQoJImFwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLndyaXRlci5nbG9iYWwiID0+ICJzeGciLA0KCSJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5pbXByZXNzIiA9PiAic3hpIiwNCgkiYXBwbGljYXRpb24vdm5kLnN1bi54bWwubWF0aCIgPT4gInN4bSIsDQoJImFwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLndyaXRlciIgPT4gInN4dyIsDQoJImFwcGxpY2F0aW9uL3gtdGFyIiA9PiAidGFyIiwNCgkiYXBwbGljYXRpb24veC10Y2wiID0+ICJ0Y2wiLA0KCSJhcHBsaWNhdGlvbi94LXRleCIgPT4gInRleCIsDQoJImFwcGxpY2F0aW9uL3gtdGV4aW5mbyIgPT4gInRleGluZm8iLA0KCSJpbWFnZS90aWZmIiA9PiAidGlmZiIsDQoJImltYWdlL3RpZmYtZngiID0+ICJ0aWZmIiwNCgkiYXBwbGljYXRpb24veC1iaXR0b3JyZW50IiA9PiAidG9ycmVudCIsDQoJInRleHQvdGFiLXNlcGFyYXRlZC12YWx1ZXMiID0+ICJ0c3YiLA0KCSJhcHBsaWNhdGlvbi94LXVzdGFyIiA9PiAidXN0YXIiLA0KCSJhcHBsaWNhdGlvbi94LWNkbGluayIgPT4gInZjZCIsDQoJIm1vZGVsL3ZybWwiID0+ICJ3cmwiLA0KCSJhdWRpby94LXdhdiIgPT4gIndhdiIsDQoJImF1ZGlvL3gtbXMtd2F4IiA9PiAid2F4IiwNCgkiaW1hZ2Uvdm5kLndhcC53Ym1wIiA9PiAid2JtcCIsDQoJImFwcGxpY2F0aW9uL3ZuZC53YXAud2J4bWwiID0+ICJ3YnhtbCIsDQoJInZpZGVvL3gtbXMtd20iID0+ICJ3bSIsDQoJImF1ZGlvL3gtbXMtd21hIiA9PiAid21hIiwNCgkidGV4dC92bmQud2FwLndtbCIgPT4gIndtbCIsDQoJImFwcGxpY2F0aW9uL3ZuZC53YXAud21sYyIgPT4gIndtbGMiLA0KCSJ0ZXh0L3ZuZC53YXAud21sc2NyaXB0IiA9PiAid21scyIsDQoJImFwcGxpY2F0aW9uL3ZuZC53YXAud21sc2NyaXB0YyIgPT4gIndtbHNjIiwNCgkidmlkZW8veC1tcy13bXYiID0+ICJ3bXYiLA0KCSJ2aWRlby94LW1zLXdteCIgPT4gIndteCIsDQoJInZpZGVvL3gtbXMtd3Z4IiA9PiAid3Z4IiwNCgkiaW1hZ2UveC14Yml0bWFwIiA9PiAieGJtIiwNCgkiYXBwbGljYXRpb24veGh0bWwreG1sIiA9PiAieGh0bWwiLA0KCSJhcHBsaWNhdGlvbi94bWwiID0+ICJ4bWwiLA0KCSJpbWFnZS94LXhwaXhtYXAiID0+ICJ4cG0iLA0KCSJ0ZXh0L3hzbCIgPT4gInhzbCIsDQoJImltYWdlL3gteHdpbmRvd2R1bXAiID0+ICJ4d2QiLA0KCSJjaGVtaWNhbC94LXh5eiIgPT4gInh5eiIsDQoJImFwcGxpY2F0aW9uL3ppcCIgPT4gInppcCIsDQoJImFwcGxpY2F0aW9uL21zd29yZCIgPT4gImRvYyIsDQoJImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50IiA9PiAiZG9jeCIsDQoJImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLnRlbXBsYXRlIiA9PiAiZG90eCIsDQoJImFwcGxpY2F0aW9uL3ZuZC5tcy13b3JkLmRvY3VtZW50Lm1hY3JvRW5hYmxlZC4xMiIgPT4gImRvY20iLA0KCSJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwiID0+ICJ4bHMiLA0KCSJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCIgPT4gInhsc3giLA0KCSJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC50ZW1wbGF0ZSIgPT4gInhsdHgiLA0KCSJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2hlZXQubWFjcm9FbmFibGVkLjEyIiA9PiAieGxzbSIsDQoJImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC50ZW1wbGF0ZS5tYWNyb0VuYWJsZWQuMTIiID0+ICJ4bHRtIiwNCgkiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmFkZGluLm1hY3JvRW5hYmxlZC4xMiIgPT4gInhsYW0iLA0KCSJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2hlZXQuYmluYXJ5Lm1hY3JvRW5hYmxlZC4xMiIgPT4gInhsc2IiLA0KCSJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwucHJlc2VudGF0aW9uIiA9PiAicHB0eCIsDQoJImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC50ZW1wbGF0ZSIgPT4gInBvdHgiLA0KCSJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwuc2xpZGVzaG93IiA9PiAicHBzeCIsDQoJImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50LmFkZGluLm1hY3JvRW5hYmxlZC4xMiIgPT4gInBwYW0iLA0KCSJhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludC5wcmVzZW50YXRpb24ubWFjcm9FbmFibGVkLjEyIiA9PiAicHB0bSIsDQoJImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50LnRlbXBsYXRlLm1hY3JvRW5hYmxlZC4xMiIgPT4gInBvdG0iLA0KCSJhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludC5zbGlkZXNob3cubWFjcm9FbmFibGVkLjEyIiA9PiAicHBzbSIsDQopOw0KDQoNCmlmICggISBmdW5jdGlvbl9leGlzdHMoJ2dldF9leHRlbnNpb25fZnJvbV9taW1lJykpDQp7DQoJZnVuY3Rpb24gZ2V0X2V4dGVuc2lvbl9mcm9tX21pbWUoJG1pbWUpew0KCQlnbG9iYWwgJG1pbWVfdHlwZXM7DQoJCWlmKHN0cnBvcygkbWltZSwgJzsnKSE9PUZBTFNFKXsNCgkJCSRtaW1lID0gc3Vic3RyKCRtaW1lLCAwLHN0cnBvcygkbWltZSwgJzsnKSk7DQoJCX0NCgkJaWYoaXNzZXQoJG1pbWVfdHlwZXNbJG1pbWVdKSl7DQoJCQlyZXR1cm4gJG1pbWVfdHlwZXNbJG1pbWVdOw0KCQl9DQoJCXJldHVybiAnJzsNCgl9DQp9DQoNCmlmICggISBmdW5jdGlvbl9leGlzdHMoJ2dldF9maWxlX21pbWVfdHlwZScpKQ0Kew0KCWZ1bmN0aW9uIGdldF9maWxlX21pbWVfdHlwZSgkZmlsZW5hbWUsICRkZWJ1ZyA9IGZhbHNlKQ0KCXsNCgkJaWYgKGZ1bmN0aW9uX2V4aXN0cygnZmluZm9fb3BlbicpICYmIGZ1bmN0aW9uX2V4aXN0cygnZmluZm9fZmlsZScpICYmIGZ1bmN0aW9uX2V4aXN0cygnZmluZm9fY2xvc2UnKSkNCgkJew0KCQkJJGZpbGVpbmZvID0gZmluZm9fb3BlbihGSUxFSU5GT19NSU1FX1RZUEUpOw0KCQkJJG1pbWVfdHlwZSA9IGZpbmZvX2ZpbGUoJGZpbGVpbmZvLCAkZmlsZW5hbWUpOw0KCQkJZmluZm9fY2xvc2UoJGZpbGVpbmZvKTsNCg0KCQkJaWYgKCAhIGVtcHR5KCRtaW1lX3R5cGUpKQ0KCQkJew0KCQkJCWlmICh0cnVlID09PSAkZGVidWcpDQoJCQkJew0KCQkJCQlyZXR1cm4gYXJyYXkoICdtaW1lX3R5cGUnID0+ICRtaW1lX3R5cGUsICdtZXRob2QnID0+ICdmaWxlaW5mbycgKTsNCgkJCQl9DQoNCgkJCQlyZXR1cm4gJG1pbWVfdHlwZTsNCgkJCX0NCgkJfQ0KDQoJCWlmIChmdW5jdGlvbl9leGlzdHMoJ21pbWVfY29udGVudF90eXBlJykpDQoJCXsNCgkJCSRtaW1lX3R5cGUgPSBtaW1lX2NvbnRlbnRfdHlwZSgkZmlsZW5hbWUpOw0KDQoJCQlpZiAoICEgZW1wdHkoJG1pbWVfdHlwZSkpDQoJCQl7DQoJCQkJaWYgKHRydWUgPT09ICRkZWJ1ZykNCgkJCQl7DQoJCQkJCXJldHVybiBhcnJheSggJ21pbWVfdHlwZScgPT4gJG1pbWVfdHlwZSwgJ21ldGhvZCcgPT4gJ21pbWVfY29udGVudF90eXBlJyApOw0KCQkJCX0NCg0KCQkJCXJldHVybiAkbWltZV90eXBlOw0KCQkJfQ0KCQl9DQoNCgkJZ2xvYmFsICRtaW1lX3R5cGVzOw0KCQkkbWltZV90eXBlcyA9IGFycmF5X2ZsaXAoJG1pbWVfdHlwZXMpOw0KDQoJCSR0bXBfYXJyYXkgPSBleHBsb2RlKCcuJywgJGZpbGVuYW1lKTsNCgkJJGV4dCA9IHN0cnRvbG93ZXIoYXJyYXlfcG9wKCR0bXBfYXJyYXkpKTsNCg0KCQlpZiAoICEgZW1wdHkoJG1pbWVfdHlwZXNbICRleHQgXSkpDQoJCXsNCgkJCWlmICh0cnVlID09PSAkZGVidWcpDQoJCQl7DQoJCQkJcmV0dXJuIGFycmF5KCAnbWltZV90eXBlJyA9PiAkbWltZV90eXBlc1sgJGV4dCBdLCAnbWV0aG9kJyA9PiAnZnJvbV9hcnJheScgKTsNCgkJCX0NCg0KCQkJcmV0dXJuICRtaW1lX3R5cGVzWyAkZXh0IF07DQoJCX0NCg0KCQlpZiAodHJ1ZSA9PT0gJGRlYnVnKQ0KCQl7DQoJCQlyZXR1cm4gYXJyYXkoICdtaW1lX3R5cGUnID0+ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nLCAnbWV0aG9kJyA9PiAnbGFzdF9yZXNvcnQnICk7DQoJCX0NCg0KCQlyZXR1cm4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSc7DQoJfQ0KfQ0KDQoNCi8qKioqKioqKioqKioqKioqKioqKg0KICogVGhlIGZvbGxvd2luZyBjb2RlIGNhbiBiZSB1c2VkIHRvIHRlc3QgdGhlIGZ1bmN0aW9uLg0KICogRmlyc3QgcHV0IGEgcGxhaW4gdGV4dCBmaWxlIG5hbWVkICJ0ZXN0LnR4dCIgYW5kIGENCiAqIEpQRUcgaW1hZ2UgZmlsZSBuYW1lZCAiaW1hZ2UuanBnIiBpbiB0aGUgc2FtZSBmb2xkZXINCiAqIGFzIHRoaXMgZmlsZS4NCiAqDQogKiBTaW1wbHkgcmVtb3ZlIHRoZSAiUkVNT1ZFIE1FIFRPIFRFU1QiIGxpbmVzIGJlbG93IHRvIGhhdmUNCiAqIHRoZSBjb2RlIHJ1biB3aGVuIHRoaXMgZmlsZSBydW5zLg0KICoNCiAqIFJ1biB0aGUgY29kZSB3aXRoIHRoaXMgY29tbWFuZDoNCiAqIHBocCBtaW1lX3R5cGVfbGliLnBocA0KICoqKioqKioqKioqKioqKioqKioqLw0KDQoNCi8qIFJFTU9WRSBNRSBUTyBURVNUDQplY2hvIGdldF9maWxlX21pbWVfdHlwZSggJ3Rlc3QudHh0JyApIC4gIlxuIjsNCmVjaG8gcHJpbnRfciggZ2V0X2ZpbGVfbWltZV90eXBlKCAnaW1hZ2UuanBnJywgdHJ1ZSApLCB0cnVlICkgLiAiXG4iOw0KUkVNT1ZFIE1FIFRPIFRFU1QgKi8NCg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/include/php_image_magician.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0jCiMKIyAgVGhpcyB3b3JrIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBDcmVhdGl2ZSBDb21tb25zIEF0dHJpYnV0aW9uIDMuMCBVbnBvcnRlZAojICBMaWNlbnNlLiBUbyB2aWV3IGEgY29weSBvZiB0aGlzIGxpY2Vuc2UsCiMgIHZpc2l0IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LzMuMC8gb3Igc2VuZCBhIGxldHRlciB0bwojICBDcmVhdGl2ZSBDb21tb25zLCA0NDQgQ2FzdHJvIFN0cmVldCwgU3VpdGUgOTAwLCBNb3VudGFpbiBWaWV3LCBDYWxpZm9ybmlhLAojICA5NDA0MSwgVVNBLgojCiMgIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiMKIyAgQXV0aG9yOiAgICBKYXJyb2QgT2JlcnRvCiMgIFZlcnNpb246ICAgMS41LjEKIyAgRGF0ZTogICAgICAxMC0wNS0xMQojICBQdXJwb3NlOiAgIFByb3ZpZGUgdG9vbHMgZm9yIGltYWdlIG1hbmlwdWxhdGlvbiB1c2luZyBHRAojICBQYXJhbSBJbjogIFNlZSBmdW5jdGlvbnMuCiMgIFBhcmFtIE91dDogUHJvZHVjZXMgYSByZXNpemVkIGltYWdlCiMgIFJlcXVpcmVzIDogUmVxdWlyZXMgUEhQIEdEIGxpYnJhcnkuCiMgIFVzYWdlIEV4YW1wbGU6CiMgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlKCJsaWIvcGhwX2ltYWdlX21hZ2ljaWFuLnBocCIpOwojICAgICAgICAgICAgICAgICAgICAgJG1hZ2ljaWFuT2JqID0gbmV3IHJlc2l6ZSgnaW1hZ2VzL2Nhci5qcGcnKTsKIyAgICAgICAgICAgICAgICAgICAgICRtYWdpY2lhbk9iaiAtPiByZXNpemVJbWFnZSgxNTAsIDEwMCwgMCk7CiMgICAgICAgICAgICAgICAgICAgICAkbWFnaWNpYW5PYmogLT4gc2F2ZUltYWdlKCdpbWFnZXMvY2FyX3NtYWxsLmpwZycsIDEwMCk7CiMKIyAgICAgICAgLSBTZWUgZW5kIG9mIGRvYyBmb3IgbW9yZSBleGFtcGxlcyAtCiMKIyAgU3VwcG9ydGVkIGZpbGUgdHlwZXMgaW5jbHVkZToganBnLCBwbmcsIGdpZiwgYm1wLCBwc2QgKHJlYWQpCiMKIwojCiMgIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSB0YWtlbiBmcm9tIHBocFRodW1iKCkgW2F2YWlsYWJsZSBmcm9tCiMgICAgaHR0cDovL3BocHRodW1iLnNvdXJjZWZvcmdlLm5ldF0sIGFuZCBhcmUgdXNlZCB3aXRoIHdyaXR0ZW4gcGVybWlzc2lvbgojICBmcm9tIEphbWVzIEhlaW5yaWNoLgojICAgIC0gR0QyQk1Qc3RyaW5nCiMgICAgICAtIEdldFBpeGVsQ29sb3IKIyAgICAgIC0gTGl0dGxlRW5kaWFuMlN0cmluZwojCiMgIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSBmcm9tIE1hcmMgSGliYmlucyBhbmQgYXJlIHVzZWQgd2l0aCB3cml0dGVuCiMgIHBlcm1pc3Npb24gKGFyZSBhbHNvIHVuZGVyIHRoZSBBdHRyaWJ1dGlvbi1TaGFyZUFsaWtlCiMgIFtodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1zYS8zLjAvXSBsaWNlbnNlLgojICAgIC0KIwojICBQaHBQc2RSZWFkZXIgaXMgdXNlZCB3aXRoIHdyaXR0ZW4gcGVybWlzc2lvbiBmcm9tIFRpbSBkZSBLb25pbmcuCiMgIFtodHRwOi8vd3d3LmtpbmdzcXVhcmUubmwvcGhwcHNkcmVhZGVyXQojCiMKIwojICBNb2RpZmljYXRvaW4gaGlzdG9yeQojICBEYXRlICAgICAgSW5pdGlhbHMgIFZlciBEZXNjcmlwdGlvbgojICAxMC0wNS0xMSAgSi5DLk8gICAwLjAgSW5pdGlhbCBidWlsZAojICAwMS0wNi0xMSAgSi5DLk8gICAwLjEuMSAgICogQWRkZWQgcmVmbGVjdGlvbnMKIyAgICAgICAgICAgICAgKiBBZGRlZCBSb3VuZGVkIGNvcm5lcnMKIyAgICAgICAgICAgICAgKiBZb3UgY2FuIG5vdyB1c2UgUE5HIGludGVybGFjaW5nCiMgICAgICAgICAgICAgICogQWRkZWQgc2hhZG93CiMgICAgICAgICAgICAgICogQWRkZWQgY2FwdGlvbiBib3gKIyAgICAgICAgICAgICAgKiBBZGRlZCB2aW50YWdlIGZpbHRlcgojICAgICAgICAgICAgICAqIEFkZGVkIGR5bmFtaWMgaW1hZ2UgcmVzaXppbmcgKHJlc2l6ZSBvbiB0aGUgZmx5KQojICAgICAgICAgICAgICAqIG1pbm9yIGJ1ZyBmaXhlcwojICAwNS0wNi0xMSAgSi5DLk8gICAwLjEuMS4xICogRml4ZWQgdW5kZWZpbmVkIHZhcmlhYmxlcwojICAxNy0wNi0xMSAgSi5DLk8gICAwLjEuMiAgICogQWRkZWQgaW1hZ2VfYmF0Y2hfY2xhc3MucGhwIGNsYXNzCiMgICAgICAgICAgICAgICogTWlub3IgYnVnIGZpeGVzCiMgIDI2LTA3LTExICBKLkMuTyAgIDAuMS40ICogQWRkZWQgc3VwcG9ydCBmb3IgZXh0ZXJuYWwgaW1hZ2VzCiMgICAgICAgICAgICAgICogQ2FuIG5vdyBzZXQgdGhlIGNyb3AgcG9pc2l0aW9uCiMgIDAzLTA4LTExICBKLkMuTyAgIDAuMS41ICogQWRkZWQgcmVzZXQoKSBtZXRob2QgdG8gcmVzZXQgcmVzb3VyY2UgdG8KIyAgICAgICAgICAgICAgICBvcmlnaW5hbCBpbnB1dCBmaWxlLgojICAgICAgICAgICAgICAqIEFkZGVkIG1ldGhvZCBhZGRUZXh0VG9DYXB0aW9uQm94KCkgdG8KIyAgICAgICAgICAgICAgICBzaW1wbGlmeSBhZGRpbmcgdGV4dCB0byBhIGNhcHRpb24gYm94LgojICAgICAgICAgICAgICAqIEFkZGVkIGV4cGVyaW1lbnRhbCB3cml0ZUlQVEMuIChub3QgZmluaXNoZWQpCiMgICAgICAgICAgICAgICogQWRkZWQgZXhwZXJpbWVudGFsIHJlYWRJUFRDLiAobm90IGZpbmlzaGVkKQojICAxMS0wOC0xMSAgSi5DLk8gICAgICogQWRkZWQgaW5pdGlhbCBib3JkZXIgcHJlc2V0cy4KIyAgMzAtMDgtMTEgIEouQy5PICAgICAqIEFkZGVkICdhdXRvJyBjcm9wIG9wdGlvbiB0byBjcm9wIHBvcnRyYWl0CiMgICAgICAgICAgICAgICAgaW1hZ2VzIG5lYXIgdGhlIHRvcC4KIyAgMDgtMDktMTEgIEouQy5PICAgICAqIEFkZGVkIGNyb3BJbWFnZSgpIG1ldGhvZCB0byBhbGxvdyBzdGFuZGFsb25lCiMgICAgICAgICAgICAgICAgY3JvcHBpbmcuCiMgIDE3LTA5LTExICBKLkMuTyAgICAgKiBBZGRlZCBzZXRDcm9wRnJvbVRvcCgpIHNldCBtZXRob2QgLSBzZXQgdGhlCiMgICAgICAgICAgICAgICAgcGVyY2VudGFnZSB0byBjcm9wIGZyb20gdGhlIHRvcCB3aGVuIHVzaW5nCiMgICAgICAgICAgICAgICAgY3JvcCAnYXV0bycgb3B0aW9uLgojICAgICAgICAgICAgICAqIEFkZGVkIHNldFRyYW5zcGFyZW5jeSgpIHNldCBtZXRob2QgLSBhbGxvd3MgeW91CiMgICAgICAgICAgICAgICAgdG8gdHVybiB0cmFuc3BhcmVuY3kgb2ZmIChsaWtlIHdoZW4gc2F2aW5nCiMgICAgICAgICAgICAgICAgYXMgYSBqcGcpLgojICAgICAgICAgICAgICAqIEFkZGVkIHNldEZpbGxDb2xvcigpIHNldCBtZXRob2QgLSBzZXQgdGhlCiMgICAgICAgICAgICAgICAgYmFja2dyb3VuZCBjb2xvciB0byB1c2UgaW5zdGVhZCBvZiB0cmFuc3BhcmVuY3kuCiMgIDA1LTExLTExICBKLkMuTyAgIDAuMS41LjEgKiBGaXhlZCBpbnRlcmxhY2luZyBvcHRpb24KIyAgMC0wNy0xMiAgSi5DLk8gICAxLjAKIwojICBLbm93biBpc3N1ZXMgJiBMaW1pdGF0aW9uczoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgIE5vdCBzbyBtdWNoIGFuIGlzc3VlLCB0aGUgaW1hZ2UgaXMgZGVzdHJveWVkIG9uIHRoZSBkZWNvbnN0cnVjdCByYXRoZXIgdGhhbgojICB3aGVuIHdlIGhhdmUgZmluaXNoZWQgd2l0aCBpdC4gVGhlIHJlYXNvbiBmb3IgdGhpcyBpcyB0aGF0IHdlIGRvbid0IGtub3cKIyAgd2hlbiB3ZSdyZSBmaW5pc2hlZCB3aXRoIGl0IGFzIHlvdSBjYW4gYm90aCBzYXZlIHRoZSBpbWFnZSBhbmQgZGlzcGxheQojICBpdCBkaXJlY3RseSB0byB0aGUgc2NyZWVuIChpbWFnZWRlc3Ryb3koJHRoaXMtPmltYWdlUmVzaXplZCkpCiMKIyAgT3BlbmluZyBCTVAgZmlsZXMgaXMgc2xvdy4gQSB0ZXN0IHdpdGggODg0IGJtcCBmaWxlcyBwcm9jZXNzZWQgaW4gYSBsb29wCiMgIHRha2VzIGZvcmV2ZXIgLSBvdmVyIDUgbWluLiBUaGlzIHRlc3QgaW5sY3VkZWQgb3BlbmluZyB0aGUgZmlsZSwgdGhlbgojICBnZXR0aW5nIGFuZCBkaXNwbGF5aW5nIGl0cyB3aWR0aCBhbmQgaGVpZ2h0LgojCiMgICRmb3JjZVN0cmV0Y2g6CiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojICBPbiBieSBkZWZhdWx0LgojICAkZm9yY2VTdHJldGNoIGNhbiBiZSBkaXNhYmxlZCBieSBjYWxsaW5nIG1ldGhvZCBzZXRGb3JjZVN0cmV0Y2ggd2l0aCBmYWxzZQojICBwYXJhbWV0ZXIuIElmIGRpc2FibGVkLCBpZiBhbiBpbWFnZXMgb3JpZ2luYWwgc2l6ZSBpcyBzbWFsbGVyIHRoYW4gdGhlIHNpemUKIyAgc3BlY2lmaWVkIGJ5IHRoZSB1c2VyLCB0aGUgb3JpZ2luYWwgc2l6ZSB3aWxsIGJlIHVzZWQuIFRoaXMgaXMgdXNlZnVsIHdoZW4KIyAgZGVhbGluZyB3aXRoIHNtYWxsIGltYWdlcy4KIwojICBJZiBlbmFibGVkLCBpbWFnZXMgc21hbGxlciB0aGFuIHRoZSBzaXplIHNwZWNpZmllZCB3aWxsIGJlIHN0cmV0Y2hlZCB0bwojICB0aGF0IHNpemUuCiMKIyAgVGlwczoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgICogSWYgeW91J3JlIHJlc2l6aW5nIGEgdHJhbnNwYXJlbnQgcG5nIGFuZCBzYXZpbmcgaXQgYXMgYSBqcGcsIHNldAojICAka2VlcFRyYW5zcGFyZW5jeSB0byBmYWxzZSB3aXRoOiAkbWFnaWNpYW5PYmotPnNldFRyYW5zcGFyZW5jeShmYWxzZSk7CiMKIyAgRkVBVFVSRVM6CiMgICAgKiBFQVNZIFRPIFVTRQojICAgICogQk1QIFNVUFBPUlQgKHJlYWQgJiB3cml0ZSkKIyAgICAqIFBTRCAocGhvdG9zaG9wKSBzdXBwb3J0IChyZWFkKQojICAgICogUkVTSVpFIElNQUdFUwojICAgICAgLSBQcmVzZXJ2ZSB0cmFuc3BhcmVuY3kgKHBuZywgZ2lmKQojICAgICAgLSBBcHBseSBzaGFycGVuaW5nIChqcGcpIChyZXF1aXJlcyBQSFAgPj0gNS4xLjApCiMgICAgICAtIFNldCBpbWFnZSBxdWFsaXR5IChqcGcsIHBuZykKIyAgICAgIC0gUmVzaXplIG1vZGVzOgojICAgICAgICAtIGV4YWN0IHNpemUKIyAgICAgICAgLSByZXNpemUgYnkgd2lkdGggKGF1dG8gaGVpZ2h0KQojICAgICAgICAtIHJlc2l6ZSBieSBoZWlnaHQgKGF1dG8gd2lkdGgpCiMgICAgICAgIC0gYXV0byAoYXV0b21hdGljYWxseSBkZXRlcm1pbmUgdGhlIGJlc3Qgb2YgdGhlIGFib3ZlIG1vZGVzIHRvIHVzZSkKIyAgICAgICAgLSBjcm9wIC0gcmVzaXplIGFzIGJlc3QgYXMgaXQgY2FuIHRoZW4gY3JvcCB0aGUgcmVzdAojICAgICAgLSBGb3JjZSBzdHJldGNoaW5nIG9mIHNtYWxsZXIgaW1hZ2VzICh1cHNjYWxlKQojICAgICogQVBQTFkgRklMVEVSUwojICAgICAgLSBDb252ZXJ0IHRvIGdyZXkgc2NhbGUKIyAgICAgIC0gQ29udmVydCB0byBibGFjayBhbmQgd2hpdGUKIyAgICAgIC0gQ29udmVydCB0byBzZXBpYQojICAgICAgLSBDb252ZXJ0IHRvIG5lZ2F0aXZlCiMgICAgKiBST1RBVEUgSU1BR0VTCiMgICAgICAtIFJvdGF0ZSB1c2luZyBwcmVkZWZpbmVkICJsZWZ0IiwgInJpZ2h0Iiwgb3IgIjE4MCI7IG9yIGFueSBjdXN0b20gZGVncmVlIGFtb3VudAojICAgICogRVhUUkFDVCBFWElGIERBVEEgKHJlcXVpcmVzIGV4aWYgbW9kdWxlKQojICAgICAgLSBtYWtlCiMgICAgICAtIG1vZGVsCiMgICAgICAtIGRhdGUKIyAgICAgIC0gZXhwb3N1cmUKIyAgICAgIC0gYXBlcnR1cmUKIyAgICAgIC0gZi1zdG9wCiMgICAgICAtIGlzbwojICAgICAgLSBmb2NhbCBsZW5ndGgKIyAgICAgIC0gZXhwb3N1cmUgcHJvZ3JhbQojICAgICAgLSBtZXRlcmluZyBtb2RlCiMgICAgICAtIGZsYXNoIHN0YXR1cwojICAgICAgLSBjcmVhdG9yCiMgICAgICAtIGNvcHlyaWdodAojICAgICogQUREIFdBVEVSTUFSSwojICAgICAgLSBTcGVjaWZ5IGV4YWN0IHgsIHkgcGxhY2VtZW50CiMgICAgICAtIE9yLCBzcGVjaWZ5IHVzaW5nIG9uZSBvZiB0aGUgOSBwcmUtZGVmaW5lZCBwbGFjZW1lbnRzIHN1Y2ggYXMgInRsIgojICAgICAgICAoZm9yIHRvcCBsZWZ0KSwgIm0iIChmb3IgbWlkZGxlKSwgImJyIiAoZm9yIGJvdHRvbSByaWdodCkKIyAgICAgICAgLSBhbHNvIHNwZWNpZnkgcGFkZGluZyBmcm9tIGVkZ2UgYW1vdW50IChvcHRpb25hbCkuCiMgICAgICAtIFNldCBvcGFjaXR5IG9mIHdhdGVybWFyayAocG5nKS4KIyAgICAqIEFERCBCT1JERVIKIyAgICAqIFVTRSBIRVggV0hFTiBTUEVDSUZZSU5HIENPTE9SUyAoZWc6ICNmZmZmZmYpCiMgICAgKiBTQVZFIElNQUdFIE9SIE9VVFBVVCBUTyBTQ1JFRU4KIwojCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IwoKCmNsYXNzIGltYWdlTGliIHsKCglwcml2YXRlICAgJGZpbGVOYW1lOwoJcHJpdmF0ZSAgICRpbWFnZTsKCXByb3RlY3RlZCAkaW1hZ2VSZXNpemVkOwoJcHJpdmF0ZSAgICR3aWR0aE9yaWdpbmFsOyAgICAgIyBBbHdheXMgYmUgdGhlIG9yaWdpbmFsIHdpZHRoCglwcml2YXRlICAgJGhlaWdodE9yaWdpbmFsOwoJcHJpdmF0ZSAgICR3aWR0aDsgICAgICAgICAjIEN1cnJlbnQgd2lkdGggKHdpZHRoIGFmdGVyIHJlc2l6ZSkKCXByaXZhdGUgICAkaGVpZ2h0OwoJcHJpdmF0ZSAgICRpbWFnZVNpemU7Cglwcml2YXRlICAgJGZpbGVFeHRlbnNpb247CgoJcHJpdmF0ZSAkZGVidWcgICAgICA9IHRydWU7Cglwcml2YXRlICRlcnJvckFycmF5ID0gYXJyYXkoKTsKCglwcml2YXRlICRmb3JjZVN0cmV0Y2ggICAgICAgID0gdHJ1ZTsKCXByaXZhdGUgJGFnZ3Jlc2l2ZVNoYXJwZW5pbmcgPSBmYWxzZTsKCglwcml2YXRlICR0cmFuc3BhcmVudEFycmF5ID0gYXJyYXkoICcucG5nJywgJy5naWYnICk7Cglwcml2YXRlICRrZWVwVHJhbnNwYXJlbmN5ID0gdHJ1ZTsKCXByaXZhdGUgJGZpbGxDb2xvckFycmF5ICAgPSBhcnJheSggJ3InID0+IDI1NSwgJ2cnID0+IDI1NSwgJ2InID0+IDI1NSApOwoKCXByaXZhdGUgJHNoYXJwZW5BcnJheSA9IGFycmF5KCAnanBnJyApOwoKCXByaXZhdGUgJHBzZFJlYWRlclBhdGg7Cglwcml2YXRlICRmaWx0ZXJPdmVybGF5UGF0aDsKCglwcml2YXRlICRpc0ludGVybGFjZTsKCglwcml2YXRlICRjYXB0aW9uQm94UG9zaXRpb25BcnJheSA9IGFycmF5KCk7CgoJcHJpdmF0ZSAkZm9udERpciA9ICdmb250cyc7CgoJcHJpdmF0ZSAkY3JvcEZyb21Ub3BQZXJjZW50ID0gMTA7CgoKIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglmdW5jdGlvbiBfX2NvbnN0cnVjdCgkZmlsZU5hbWUpCgkJIyBBdXRob3I6ICAgICBKYXJyb2QgT2JlcnRvCgkJIyBEYXRlOiAgICAgMjctMDItMDgKCQkjIFB1cnBvc2U6ICAgIENvbnN0cnVjdG9yCgkJIyBQYXJhbSBpbjogICAkZmlsZU5hbWU6IEZpbGUgbmFtZSBhbmQgcGF0aC4KCQkjIFBhcmFtIG91dDogIG4vYQoJCSMgUmVmZXJlbmNlOgoJCSMgTm90ZXM6CgkJIwoJewoJCWlmICggISAkdGhpcy0+dGVzdEdESW5zdGFsbGVkKCkpCgkJewoJCQlpZiAoJHRoaXMtPmRlYnVnKQoJCQl7CgkJCQl0aHJvdyBuZXcgRXhjZXB0aW9uKCdUaGUgR0QgTGlicmFyeSBpcyBub3QgaW5zdGFsbGVkLicpOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJdGhyb3cgbmV3IEV4Y2VwdGlvbigpOwoJCQl9CgkJfTsKCgkJJHRoaXMtPmluaXRpYWxpc2UoKTsKCgkJLy8gKioqIFNhdmUgdGhlIGltYWdlIGZpbGUgbmFtZS4gT25seSBzdG9yZSB0aGlzIGluY2FzZSB5b3Ugd2FudCB0byBkaXNwbGF5IGl0CgkJJHRoaXMtPmZpbGVOYW1lID0gJGZpbGVOYW1lOwoJCSR0aGlzLT5maWxlRXh0ZW5zaW9uID0gZml4X3N0cnRvbG93ZXIoc3RycmNocigkZmlsZU5hbWUsICcuJykpOwoKCQkvLyAqKiogT3BlbiB1cCB0aGUgZmlsZQoJCSR0aGlzLT5pbWFnZSA9ICR0aGlzLT5vcGVuSW1hZ2UoJGZpbGVOYW1lKTsKCgoJCS8vICoqKiBBc3NpZ24gaGVyZSBzbyB3ZSBkb24ndCBtb2RpZnkgdGhlIG9yaWdpbmFsCgkJJHRoaXMtPmltYWdlUmVzaXplZCA9ICR0aGlzLT5pbWFnZTsKCgkJLy8gKioqIElmIGZpbGUgaXMgYW4gaW1hZ2UKCQlpZiAoJHRoaXMtPnRlc3RJc0ltYWdlKCR0aGlzLT5pbWFnZSkpCgkJewoJCQkvLyAqKiogR2V0IHdpZHRoIGFuZCBoZWlnaHQKCQkJJHRoaXMtPndpZHRoID0gaW1hZ2VzeCgkdGhpcy0+aW1hZ2UpOwoJCQkkdGhpcy0+d2lkdGhPcmlnaW5hbCA9IGltYWdlc3goJHRoaXMtPmltYWdlKTsKCQkJJHRoaXMtPmhlaWdodCA9IGltYWdlc3koJHRoaXMtPmltYWdlKTsKCQkJJHRoaXMtPmhlaWdodE9yaWdpbmFsID0gaW1hZ2VzeSgkdGhpcy0+aW1hZ2UpOwoKCgkJCS8qICBBZGRlZCAxNS0wOS0wOAogICAgICAgICAqICBHZXQgdGhlIGZpbGVzaXplIHVzaW5nIHRoaXMgYnVpbGQgaW4gbWV0aG9kLgogICAgICAgICAqICBTdG9yZXMgYW4gYXJyYXkgb2Ygc2l6ZQogICAgICAgICAqCiAgICAgICAgICogICR0aGlzLT5pbWFnZVNpemVbMV0gPSB3aWR0aAogICAgICAgICAqICAkdGhpcy0+aW1hZ2VTaXplWzJdID0gaGVpZ2h0CiAgICAgICAgICogICR0aGlzLT5pbWFnZVNpemVbM10gPSB3aWR0aCB4IGhlaWdodAogICAgICAgICAqCiAgICAgICAgICovCgkJCSR0aGlzLT5pbWFnZVNpemUgPSBnZXRpbWFnZXNpemUoJHRoaXMtPmZpbGVOYW1lKTsKCgkJfQoJCWVsc2UKCQl7CgkJCSR0aGlzLT5lcnJvckFycmF5W10gPSAnRmlsZSBpcyBub3QgYW4gaW1hZ2UnOwoJCX0KCX0KCiMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJcHJpdmF0ZSBmdW5jdGlvbiBpbml0aWFsaXNlKCkKCXsKCgkJJHRoaXMtPnBzZFJlYWRlclBhdGggPSBkaXJuYW1lKF9fRklMRV9fKSAuICcvY2xhc3NQaHBQc2RSZWFkZXIucGhwJzsKCQkkdGhpcy0+ZmlsdGVyT3ZlcmxheVBhdGggPSBkaXJuYW1lKF9fRklMRV9fKSAuICcvZmlsdGVycyc7CgoJCS8vICoqKiBTZXQgaWYgaW1hZ2Ugc2hvdWxkIGJlIGludGVybGFjZWQgb3Igbm90LgoJCSR0aGlzLT5pc0ludGVybGFjZSA9IGZhbHNlOwoJfQoKCgkvKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLQogIFJlc2l6ZQoqLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSoqLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSovCgoKCXB1YmxpYyBmdW5jdGlvbiByZXNpemVJbWFnZSgkbmV3V2lkdGgsICRuZXdIZWlnaHQsICRvcHRpb24gPSAwLCAkc2hhcnBlbiA9IGZhbHNlLCAkYXV0b1JvdGF0ZSA9IGZhbHNlKQoJCSMgQXV0aG9yOiAgICAgSmFycm9kIE9iZXJ0bwoJCSMgRGF0ZTogICAgICAgMjctMDItMDgKCQkjIFB1cnBvc2U6ICAgIFJlc2l6ZXMgdGhlIGltYWdlCgkJIyBQYXJhbSBpbjogICAkbmV3V2lkdGg6CgkJIyAgICAgICAgICAgICAkbmV3SGVpZ2h0OgoJCSMgICAgICAgICAgICAgJG9wdGlvbjogICAgIDAgLyBleGFjdCA9IGRlZmluZWQgc2l6ZTsKCQkjICAgICAgICAgICAgICAgICAgICAgICAgICAxIC8gcG9ydHJhaXQgPSBrZWVwIGFzcGVjdCBzZXQgaGVpZ2h0OwoJCSMgICAgICAgICAgICAgICAgICAgICAgICAgIDIgLyBsYW5kc2NhcGUgPSBrZWVwIGFzcGVjdCBzZXQgd2lkdGg7CgkJIyAgICAgICAgICAgICAgICAgICAgICAgICAgMyAvIGF1dG8gPSBhdXRvOwoJCSMgICAgICAgICAgICAgICAgICAgICAgICAgIDQgLyBjcm9wPSByZXNpemUgYW5kIGNyb3A7CgkJIwoJCSMgICAgICAgICAkb3B0aW9uIGNhbiBhbHNvIGJlIGFuIGFycmF5IGNvbnRhaW5pbmcgb3B0aW9ucyBmb3IKCQkjICAgICAgICAgY3JvcHBpbmcuIEUuRy4sIGFycmF5KCdjcm9wJywgJ3InKQoJCSMKCQkjICAgICAgICAgVGhpcyBhcnJheSBvbmx5IGFwcGxpZXMgdG8gJ2Nyb3AnIGFuZCB0aGUgJ3InIHJlZmVycyB0bwoJCSMgICAgICAgICAiY3JvcCByaWdodCIuIE90aGVyIHZhbHVlIGluY2x1ZGU7IHRsLCB0LCB0ciwgbCwgbSAoZGVmYXVsdCksCgkJIyAgICAgICAgIHIsIGJsLCBiLCBiciwgb3IgeW91IGNhbiBzcGVjaWZ5IHlvdXIgb3duIGNvLW9yZHMgKHdoaWNoCgkJIyAgICAgICAgIGlzbid0IHJlY29tbWVuZGVkLgoJCSMKCQkjICAgICAgICRzaGFycGVuOiAgICB0cnVlOiBzaGFycGVuIChqcGcgb25seSk7CgkJIyAgICAgICAgICAgICAgICBmYWxzZTogZG9uJ3Qgc2hhcnBlbgoJCSMgUGFyYW0gb3V0OiAgbi9hCgkJIyBSZWZlcmVuY2U6CgkJIyBOb3RlczogICAgICBUbyBjbGFyaWZ5IHRoZSAkb3B0aW9uIGlucHV0OgoJCSMgICAgICAgICAgICAgICAwID0gVGhlIGV4YWN0IGhlaWdodCBhbmQgd2lkdGggZGltZW5zaW9ucyB5b3Ugc2V0LgoJCSMgICAgICAgICAgICAgICAxID0gV2hhdGV2ZXIgaGVpZ2h0IGlzIHBhc3NlZCBpbiB3aWxsIGJlIHRoZSBoZWlnaHQgdGhhdAoJCSMgICAgICAgICAgICAgICAgICAgaXMgc2V0LiBUaGUgd2lkdGggd2lsbCBiZSBjYWxjdWxhdGVkIGFuZCBzZXQgYXV0b21hdGljYWxseQoJCSMgICAgICAgICAgICAgICAgICAgdG8gYSB0aGUgdmFsdWUgdGhhdCBrZWVwcyB0aGUgb3JpZ2luYWwgYXNwZWN0IHJhdGlvLgoJCSMgICAgICAgICAgICAgICAyID0gVGhlIHNhbWUgYnV0IGJhc2VkIG9uIHRoZSB3aWR0aC4gV2UgdHJ5IG1ha2UgdGhlIGltYWdlIHRoZQoJCSMgICAgICAgICAgICAgICAgICBiaWdnZXN0IHNpemUgd2UgY2FuIHdoaWxlIHN0aWwgZml0dGluZyBpbnNpZGUgdGhlIGJveCBzaXplCgkJIyAgICAgICAgICAgICAgIDMgPSBEZXBlbmRpbmcgd2hldGhlciB0aGUgaW1hZ2UgaXMgbGFuZHNjYXBlIG9yIHBvcnRyYWl0LCB0aGlzCgkJIyAgICAgICAgICAgICAgICAgICB3aWxsIGF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lIHdoZXRoZXIgdG8gcmVzaXplIHZpYQoJCSMgICAgICAgICAgICAgICAgICAgZGltZW5zaW9uIDEsMiBvciAwCgkJIyAgICAgICAgICAgICAgIDQgPSBXaWxsIHJlc2l6ZSBhbmQgdGhlbiBjcm9wIHRoZSBpbWFnZSBmb3IgYmVzdCBmaXQKCQkjCgkJIyAgICAgICBmb3JjZVN0cmV0Y2ggY2FuIGJlIGFwcGxpZWQgdG8gb3B0aW9ucyAxLDIsMyBhbmQgNAoJCSMKCXsKCgkJLy8gKioqIFdlIGNhbiBwYXNzIGluIGFuIGFycmF5IG9mIG9wdGlvbnMgdG8gY2hhbmdlIHRoZSBjcm9wIHBvc2l0aW9uCgkJJGNyb3BQb3MgPSAnbSc7CgkJaWYgKGlzX2FycmF5KCRvcHRpb24pICYmIGZpeF9zdHJ0b2xvd2VyKCRvcHRpb25bMF0pID09ICdjcm9wJykKCQl7CgkJCSRjcm9wUG9zID0gJG9wdGlvblsxXTsgICAgICAgICAjIGdldCB0aGUgY3JvcCBvcHRpb24KCQl9CgkJZWxzZQoJCXsKCQkJaWYgKHN0cnBvcygkb3B0aW9uLCAnLScpICE9PSBmYWxzZSkKCQkJewoJCQkJLy8gKioqIE9yIHBhc3MgaW4gYSBoeXBoZW4gc2VwZXJhdGVkIG9wdGlvbgoJCQkJJG9wdGlvblBpZWNlc0FycmF5ID0gZXhwbG9kZSgnLScsICRvcHRpb24pOwoJCQkJJGNyb3BQb3MgPSBlbmQoJG9wdGlvblBpZWNlc0FycmF5KTsKCQkJfQoJCX0KCgkJLy8gKioqIENoZWNrIHRoZSBvcHRpb24gaXMgdmFsaWQKCQkkb3B0aW9uID0gJHRoaXMtPnByZXBPcHRpb24oJG9wdGlvbik7CgoJCS8vICoqKiBNYWtlIHN1cmUgdGhlIGZpbGUgcGFzc2VkIGluIGlzIHZhbGlkCgkJaWYgKCAhICR0aGlzLT5pbWFnZSkKCQl7CgkJCWlmICgkdGhpcy0+ZGVidWcpCgkJCXsKCQkJCXRocm93IG5ldyBFeGNlcHRpb24oJ2ZpbGUgJyAuICR0aGlzLT5nZXRGaWxlTmFtZSgpIC4gJyBpcyBtaXNzaW5nIG9yIGludmFsaWQnKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCXRocm93IG5ldyBFeGNlcHRpb24oKTsKCQkJfQoJCX07CgoJCS8vICoqKiBHZXQgb3B0aW1hbCB3aWR0aCBhbmQgaGVpZ2h0IC0gYmFzZWQgb24gJG9wdGlvbgoJCSRkaW1lbnNpb25zQXJyYXkgPSAkdGhpcy0+Z2V0RGltZW5zaW9ucygkbmV3V2lkdGgsICRuZXdIZWlnaHQsICRvcHRpb24pOwoKCQkkb3B0aW1hbFdpZHRoID0gJGRpbWVuc2lvbnNBcnJheVsnb3B0aW1hbFdpZHRoJ107CgkJJG9wdGltYWxIZWlnaHQgPSAkZGltZW5zaW9uc0FycmF5WydvcHRpbWFsSGVpZ2h0J107CgoJCS8vICoqKiBSZXNhbXBsZSAtIGNyZWF0ZSBpbWFnZSBjYW52YXMgb2YgeCwgeSBzaXplCgkJJHRoaXMtPmltYWdlUmVzaXplZCA9IGltYWdlY3JlYXRldHJ1ZWNvbG9yKCRvcHRpbWFsV2lkdGgsICRvcHRpbWFsSGVpZ2h0KTsKCQkkdGhpcy0+a2VlcFRyYW5zcGFyYW5jeSgkb3B0aW1hbFdpZHRoLCAkb3B0aW1hbEhlaWdodCwgJHRoaXMtPmltYWdlUmVzaXplZCk7CgkJaW1hZ2Vjb3B5cmVzYW1wbGVkKCR0aGlzLT5pbWFnZVJlc2l6ZWQsICR0aGlzLT5pbWFnZSwgMCwgMCwgMCwgMCwgJG9wdGltYWxXaWR0aCwgJG9wdGltYWxIZWlnaHQsICR0aGlzLT53aWR0aCwgJHRoaXMtPmhlaWdodCk7CgoKCQkvLyAqKiogSWYgJzQnLCB0aGVuIGNyb3AgdG9vCgkJaWYgKCRvcHRpb24gPT0gNCB8fCAkb3B0aW9uID09ICdjcm9wJykKCQl7CgoJCQlpZiAoKCRvcHRpbWFsV2lkdGggPj0gJG5ld1dpZHRoICYmICRvcHRpbWFsSGVpZ2h0ID49ICRuZXdIZWlnaHQpKQoJCQl7CgkJCQkkdGhpcy0+Y3JvcCgkb3B0aW1hbFdpZHRoLCAkb3B0aW1hbEhlaWdodCwgJG5ld1dpZHRoLCAkbmV3SGVpZ2h0LCAkY3JvcFBvcyk7CgkJCX0KCQl9CgoJCS8vICoqKiBJZiBSb3RhdGUuCgkJaWYgKCRhdXRvUm90YXRlKQoJCXsKCgkJCSRleGlmRGF0YSA9ICR0aGlzLT5nZXRFeGlmKGZhbHNlKTsKCQkJaWYgKGNvdW50KCRleGlmRGF0YSkgPiAwKQoJCQl7CgoJCQkJc3dpdGNoICgkZXhpZkRhdGFbJ29yaWVudGF0aW9uJ10pCgkJCQl7CgkJCQkJY2FzZSA4OgoJCQkJCQkkdGhpcy0+aW1hZ2VSZXNpemVkID0gaW1hZ2Vyb3RhdGUoJHRoaXMtPmltYWdlUmVzaXplZCwgOTAsIDApOwoJCQkJCQlicmVhazsKCQkJCQljYXNlIDM6CgkJCQkJCSR0aGlzLT5pbWFnZVJlc2l6ZWQgPSBpbWFnZXJvdGF0ZSgkdGhpcy0+aW1hZ2VSZXNpemVkLCAxODAsIDApOwoJCQkJCQlicmVhazsKCQkJCQljYXNlIDY6CgkJCQkJCSR0aGlzLT5pbWFnZVJlc2l6ZWQgPSBpbWFnZXJvdGF0ZSgkdGhpcy0+aW1hZ2VSZXNpemVkLCAtOTAsIDApOwoJCQkJCQlicmVhazsKCQkJCX0KCQkJfQoJCX0KCgkJLy8gKioqIFNoYXJwZW4gaW1hZ2UgKGlmIGpwZyBhbmQgdGhlIHVzZXIgd2lzaGVzIHRvIGRvIHNvKQoJCWlmICgkc2hhcnBlbiAmJiBpbl9hcnJheSgkdGhpcy0+ZmlsZUV4dGVuc2lvbiwgJHRoaXMtPnNoYXJwZW5BcnJheSkpCgkJewoKCQkJLy8gKioqIFNoYXJwZW4KCQkJJHRoaXMtPnNoYXJwZW4oKTsKCQl9Cgl9CgojIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCXB1YmxpYyBmdW5jdGlvbiBjcm9wSW1hZ2UoJG5ld1dpZHRoLCAkbmV3SGVpZ2h0LCAkY3JvcFBvcyA9ICdtJykKCQkjIEF1dGhvcjogICAgIEphcnJvZCBPYmVydG8KCQkjIERhdGU6ICAgICAgIDA4LTA5LTExCgkJIyBQdXJwb3NlOiAgICBDcm9wcyB0aGUgaW1hZ2UKCQkjIFBhcmFtIGluOiAgICRuZXdXaWR0aDogY3JvcCB3aXRoCgkJIyAgICAgICAgICAgICAkbmV3SGVpZ2h0OiBjcm9wIGhlaWdodAoJCSMgICAgICAgJGNyb3BQb3M6IENhbiBiZSBhbnkgb2YgdGhlIGZvbGxvd2luZzoKCQkjICAgICAgICAgICAgIHRsLCB0LCB0ciwgbCwgbSwgciwgYmwsIGIsIGJyLCBhdXRvCgkJIyAgICAgICAgICAgT3I6CgkJIyAgICAgICAgICAgICBhIGN1c3RvbSBwb3NpdGlvbiBzdWNoIGFzICczMHg1MCcKCQkjIFBhcmFtIG91dDogIG4vYQoJCSMgUmVmZXJlbmNlOgoJCSMgTm90ZXM6CgkJIwoJewoKCQkvLyAqKiogTWFrZSBzdXJlIHRoZSBmaWxlIHBhc3NlZCBpbiBpcyB2YWxpZAoJCWlmICggISAkdGhpcy0+aW1hZ2UpCgkJewoJCQlpZiAoJHRoaXMtPmRlYnVnKQoJCQl7CgkJCQl0aHJvdyBuZXcgRXhjZXB0aW9uKCdmaWxlICcgLiAkdGhpcy0+Z2V0RmlsZU5hbWUoKSAuICcgaXMgbWlzc2luZyBvciBpbnZhbGlkJyk7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQl0aHJvdyBuZXcgRXhjZXB0aW9uKCk7CgkJCX0KCQl9OwoKCQkkdGhpcy0+aW1hZ2VSZXNpemVkID0gJHRoaXMtPmltYWdlOwoJCSR0aGlzLT5jcm9wKCR0aGlzLT53aWR0aCwgJHRoaXMtPmhlaWdodCwgJG5ld1dpZHRoLCAkbmV3SGVpZ2h0LCAkY3JvcFBvcyk7CgoJfQoKIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglwcml2YXRlIGZ1bmN0aW9uIGtlZXBUcmFuc3BhcmFuY3koJHdpZHRoLCAkaGVpZ2h0LCAkaW0pCgkJIyBBdXRob3I6ICAgICBKYXJyb2QgT2JlcnRvCgkJIyBEYXRlOiAgICAgICAwOC0wNC0xMQoJCSMgUHVycG9zZTogICAgS2VlcCB0cmFuc3BhcmVuY3kgZm9yIHBuZyBhbmQgZ2lmIGltYWdlCgkJIyBQYXJhbSBpbjoKCQkjIFBhcmFtIG91dDogIG4vYQoJCSMgUmVmZXJlbmNlOgoJCSMgTm90ZXM6CgkJIwoJewoJCS8vICoqKiBJZiBQTkcsIHBlcmZvcm0gc29tZSB0cmFuc3BhcmVuY3kgcmV0ZW50aW9uIGFjdGlvbnMgKGdpZiB1bnRlc3RlZCkKCQlpZiAoaW5fYXJyYXkoJHRoaXMtPmZpbGVFeHRlbnNpb24sICR0aGlzLT50cmFuc3BhcmVudEFycmF5KSAmJiAkdGhpcy0+a2VlcFRyYW5zcGFyZW5jeSkKCQl7CgkJCWltYWdlYWxwaGFibGVuZGluZygkaW0sIGZhbHNlKTsKCQkJaW1hZ2VzYXZlYWxwaGEoJGltLCB0cnVlKTsKCQkJJHRyYW5zcGFyZW50ID0gaW1hZ2Vjb2xvcmFsbG9jYXRlYWxwaGEoJGltLCAyNTUsIDI1NSwgMjU1LCAxMjcpOwoJCQlpbWFnZWZpbGxlZHJlY3RhbmdsZSgkaW0sIDAsIDAsICR3aWR0aCwgJGhlaWdodCwgJHRyYW5zcGFyZW50KTsKCQl9CgkJZWxzZQoJCXsKCQkJJGNvbG9yID0gaW1hZ2Vjb2xvcmFsbG9jYXRlKCRpbSwgJHRoaXMtPmZpbGxDb2xvckFycmF5WydyJ10sICR0aGlzLT5maWxsQ29sb3JBcnJheVsnZyddLCAkdGhpcy0+ZmlsbENvbG9yQXJyYXlbJ2InXSk7CgkJCWltYWdlZmlsbGVkcmVjdGFuZ2xlKCRpbSwgMCwgMCwgJHdpZHRoLCAkaGVpZ2h0LCAkY29sb3IpOwoJCX0KCX0KCiMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJcHJpdmF0ZSBmdW5jdGlvbiBjcm9wKCRvcHRpbWFsV2lkdGgsICRvcHRpbWFsSGVpZ2h0LCAkbmV3V2lkdGgsICRuZXdIZWlnaHQsICRjcm9wUG9zKQoJCSMgQXV0aG9yOiAgICAgSmFycm9kIE9iZXJ0bwoJCSMgRGF0ZTogICAgICAgMTUtMDktMDgKCQkjIFB1cnBvc2U6ICAgIENyb3BzIHRoZSBpbWFnZQoJCSMgUGFyYW0gaW46ICAgJG5ld1dpZHRoOgoJCSMgICAgICAgICAgICAgJG5ld0hlaWdodDoKCQkjIFBhcmFtIG91dDogIG4vYQoJCSMgUmVmZXJlbmNlOgoJCSMgTm90ZXM6CgkJIwoJewoKCQkvLyAqKiogR2V0IGNyb3BwaW5nIGNvLW9yZGluYXRlcwoJCSRjcm9wQXJyYXkgPSAkdGhpcy0+Z2V0Q3JvcFBsYWNpbmcoJG9wdGltYWxXaWR0aCwgJG9wdGltYWxIZWlnaHQsICRuZXdXaWR0aCwgJG5ld0hlaWdodCwgJGNyb3BQb3MpOwoJCSRjcm9wU3RhcnRYID0gJGNyb3BBcnJheVsneCddOwoJCSRjcm9wU3RhcnRZID0gJGNyb3BBcnJheVsneSddOwoKCQkvLyAqKiogQ3JvcCB0aGlzIGJhZCBib3kKCQkkY3JvcCA9IGltYWdlY3JlYXRldHJ1ZWNvbG9yKCRuZXdXaWR0aCwgJG5ld0hlaWdodCk7CgkJJHRoaXMtPmtlZXBUcmFuc3BhcmFuY3koJG9wdGltYWxXaWR0aCwgJG9wdGltYWxIZWlnaHQsICRjcm9wKTsKCQlpbWFnZWNvcHlyZXNhbXBsZWQoJGNyb3AsICR0aGlzLT5pbWFnZVJlc2l6ZWQsIDAsIDAsICRjcm9wU3RhcnRYLCAkY3JvcFN0YXJ0WSwgJG5ld1dpZHRoLCAkbmV3SGVpZ2h0LCAkbmV3V2lkdGgsICRuZXdIZWlnaHQpOwoKCQkkdGhpcy0+aW1hZ2VSZXNpemVkID0gJGNyb3A7CgoJCS8vICoqKiBTZXQgbmV3IHdpZHRoIGFuZCBoZWlnaHQgdG8gb3VyIHZhcmlhYmxlcwoJCSR0aGlzLT53aWR0aCA9ICRuZXdXaWR0aDsKCQkkdGhpcy0+aGVpZ2h0ID0gJG5ld0hlaWdodDsKCgl9CgojIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCXByaXZhdGUgZnVuY3Rpb24gZ2V0Q3JvcFBsYWNpbmcoJG9wdGltYWxXaWR0aCwgJG9wdGltYWxIZWlnaHQsICRuZXdXaWR0aCwgJG5ld0hlaWdodCwgJHBvcyA9ICdtJykKCQkjCgkJIyBBdXRob3I6ICAgSmFycm9kIE9iZXJ0bwoJCSMgRGF0ZTogICBKdWx5IDExCgkJIyBQdXJwb3NlOiAgU2V0IHRoZSBjcm9wcGluZyBhcmVhLgoJCSMgUGFyYW1zIGluOgoJCSMgUGFyYW1zIG91dDogKGFycmF5KSB0aGUgY3JvcCB4IGFuZCB5IGNvLW9yZGluYXRlcy4KCQkjIE5vdGVzOiAgICBXaGVuIHNwZWNpZnlpbmcgdGhlIGV4YWN0IHBpeGVsIGNyb3AgcG9zaXRpb24gKGVnIDEweDE1KSwgYmUKCQkjICAgICAgIHZlcnkgY2FyZWZ1bCBhcyBpdCdzIGVhc3kgdG8gY3JvcCBvdXQgb2YgdGhlIGltYWdlIGxlYXZpbmcKCQkjICAgICAgIGJsYWNrIGJvcmRlcnMuCgkJIwoJewoJCSRwb3MgPSBmaXhfc3RydG9sb3dlcigkcG9zKTsKCgkJLy8gKioqIElmIGNvLW9yZHMgaGF2ZSBiZWVuIGVudGVyZWQKCQlpZiAoc3Ryc3RyKCRwb3MsICd4JykpCgkJewoJCQkkcG9zID0gc3RyX3JlcGxhY2UoJyAnLCAnJywgJHBvcyk7CgoJCQkkeHlBcnJheSA9IGV4cGxvZGUoJ3gnLCAkcG9zKTsKCQkJbGlzdCgkY3JvcFN0YXJ0WCwgJGNyb3BTdGFydFkpID0gJHh5QXJyYXk7CgoJCX0KCQllbHNlCgkJewoKCQkJc3dpdGNoICgkcG9zKQoJCQl7CgkJCQljYXNlICd0bCc6CgkJCQkJJGNyb3BTdGFydFggPSAwOwoJCQkJCSRjcm9wU3RhcnRZID0gMDsKCQkJCQlicmVhazsKCgkJCQljYXNlICd0JzoKCQkJCQkkY3JvcFN0YXJ0WCA9ICgkb3B0aW1hbFdpZHRoIC8gMikgLSAoJG5ld1dpZHRoIC8gMik7CgkJCQkJJGNyb3BTdGFydFkgPSAwOwoJCQkJCWJyZWFrOwoKCQkJCWNhc2UgJ3RyJzoKCQkJCQkkY3JvcFN0YXJ0WCA9ICRvcHRpbWFsV2lkdGggLSAkbmV3V2lkdGg7CgkJCQkJJGNyb3BTdGFydFkgPSAwOwoJCQkJCWJyZWFrOwoKCQkJCWNhc2UgJ2wnOgoJCQkJCSRjcm9wU3RhcnRYID0gMDsKCQkJCQkkY3JvcFN0YXJ0WSA9ICgkb3B0aW1hbEhlaWdodCAvIDIpIC0gKCRuZXdIZWlnaHQgLyAyKTsKCQkJCQlicmVhazsKCgkJCQljYXNlICdtJzoKCQkJCQkkY3JvcFN0YXJ0WCA9ICgkb3B0aW1hbFdpZHRoIC8gMikgLSAoJG5ld1dpZHRoIC8gMik7CgkJCQkJJGNyb3BTdGFydFkgPSAoJG9wdGltYWxIZWlnaHQgLyAyKSAtICgkbmV3SGVpZ2h0IC8gMik7CgkJCQkJYnJlYWs7CgoJCQkJY2FzZSAncic6CgkJCQkJJGNyb3BTdGFydFggPSAkb3B0aW1hbFdpZHRoIC0gJG5ld1dpZHRoOwoJCQkJCSRjcm9wU3RhcnRZID0gKCRvcHRpbWFsSGVpZ2h0IC8gMikgLSAoJG5ld0hlaWdodCAvIDIpOwoJCQkJCWJyZWFrOwoKCQkJCWNhc2UgJ2JsJzoKCQkJCQkkY3JvcFN0YXJ0WCA9IDA7CgkJCQkJJGNyb3BTdGFydFkgPSAkb3B0aW1hbEhlaWdodCAtICRuZXdIZWlnaHQ7CgkJCQkJYnJlYWs7CgoJCQkJY2FzZSAnYic6CgkJCQkJJGNyb3BTdGFydFggPSAoJG9wdGltYWxXaWR0aCAvIDIpIC0gKCRuZXdXaWR0aCAvIDIpOwoJCQkJCSRjcm9wU3RhcnRZID0gJG9wdGltYWxIZWlnaHQgLSAkbmV3SGVpZ2h0OwoJCQkJCWJyZWFrOwoKCQkJCWNhc2UgJ2JyJzoKCQkJCQkkY3JvcFN0YXJ0WCA9ICRvcHRpbWFsV2lkdGggLSAkbmV3V2lkdGg7CgkJCQkJJGNyb3BTdGFydFkgPSAkb3B0aW1hbEhlaWdodCAtICRuZXdIZWlnaHQ7CgkJCQkJYnJlYWs7CgoJCQkJY2FzZSAnYXV0byc6CgkJCQkJLy8gKioqIElmIGltYWdlIGlzIGEgcG9ydHJhaXQgY3JvcCBmcm9tIHRvcCwgbm90IGNlbnRlci4gdjEuNQoJCQkJCWlmICgkb3B0aW1hbEhlaWdodCA+ICRvcHRpbWFsV2lkdGgpCgkJCQkJewoJCQkJCQkkY3JvcFN0YXJ0WCA9ICgkb3B0aW1hbFdpZHRoIC8gMikgLSAoJG5ld1dpZHRoIC8gMik7CgkJCQkJCSRjcm9wU3RhcnRZID0gKCR0aGlzLT5jcm9wRnJvbVRvcFBlcmNlbnQgLyAxMDApICogJG9wdGltYWxIZWlnaHQ7CgkJCQkJfQoJCQkJCWVsc2UKCQkJCQl7CgoJCQkJCQkvLyAqKiogRWxzZSBjcm9wIGZyb20gdGhlIGNlbnRlcgoJCQkJCQkkY3JvcFN0YXJ0WCA9ICgkb3B0aW1hbFdpZHRoIC8gMikgLSAoJG5ld1dpZHRoIC8gMik7CgkJCQkJCSRjcm9wU3RhcnRZID0gKCRvcHRpbWFsSGVpZ2h0IC8gMikgLSAoJG5ld0hlaWdodCAvIDIpOwoJCQkJCX0KCQkJCQlicmVhazsKCgkJCQlkZWZhdWx0OgoJCQkJCS8vICoqKiBEZWZhdWx0IHRvIGNlbnRlcgoJCQkJCSRjcm9wU3RhcnRYID0gKCRvcHRpbWFsV2lkdGggLyAyKSAtICgkbmV3V2lkdGggLyAyKTsKCQkJCQkkY3JvcFN0YXJ0WSA9ICgkb3B0aW1hbEhlaWdodCAvIDIpIC0gKCRuZXdIZWlnaHQgLyAyKTsKCQkJCQlicmVhazsKCQkJfQoJCX0KCgkJcmV0dXJuIGFycmF5KCAneCcgPT4gJGNyb3BTdGFydFgsICd5JyA9PiAkY3JvcFN0YXJ0WSApOwoJfQoKIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglwcml2YXRlIGZ1bmN0aW9uIGdldERpbWVuc2lvbnMoJG5ld1dpZHRoLCAkbmV3SGVpZ2h0LCAkb3B0aW9uKQoJCSMgQXV0aG9yOiAgICAgSmFycm9kIE9iZXJ0bwoJCSMgRGF0ZTogICAgICAgMTctMTEtMDkKCQkjIFB1cnBvc2U6ICAgIEdldCBuZXcgaW1hZ2UgZGltZW5zaW9ucyBiYXNlZCBvbiB1c2VyIHNwZWNpZmljYWlvbnMKCQkjIFBhcmFtIGluOiAgICRuZXdXaWR0aDoKCQkjICAgICAgICAgICAgICRuZXdIZWlnaHQ6CgkJIyBQYXJhbSBvdXQ6ICBBcnJheSBvZiBuZXcgd2lkdGggYW5kIGhlaWdodCB2YWx1ZXMKCQkjIFJlZmVyZW5jZToKCQkjIE5vdGVzOiAgICBJZiAkb3B0aW9uID0gMyB0aGVuIHRoaXMgZnVuY3Rpb24gaXMgY2FsbCByZWN1cnNpdmx5CgkJIwoJCSMgICAgICAgVG8gY2xhcmlmeSB0aGUgJG9wdGlvbiBpbnB1dDoKCQkjICAgICAgICAgICAgICAgMCA9IFRoZSBleGFjdCBoZWlnaHQgYW5kIHdpZHRoIGRpbWVuc2lvbnMgeW91IHNldC4KCQkjICAgICAgICAgICAgICAgMSA9IFdoYXRldmVyIGhlaWdodCBpcyBwYXNzZWQgaW4gd2lsbCBiZSB0aGUgaGVpZ2h0IHRoYXQKCQkjICAgICAgICAgICAgICAgICAgIGlzIHNldC4gVGhlIHdpZHRoIHdpbGwgYmUgY2FsY3VsYXRlZCBhbmQgc2V0IGF1dG9tYXRpY2FsbHkKCQkjICAgICAgICAgICAgICAgICAgIHRvIGEgdGhlIHZhbHVlIHRoYXQga2VlcHMgdGhlIG9yaWdpbmFsIGFzcGVjdCByYXRpby4KCQkjICAgICAgICAgICAgICAgMiA9IFRoZSBzYW1lIGJ1dCBiYXNlZCBvbiB0aGUgd2lkdGguCgkJIyAgICAgICAgICAgICAgIDMgPSBEZXBlbmRpbmcgd2hldGhlciB0aGUgaW1hZ2UgaXMgbGFuZHNjYXBlIG9yIHBvcnRyYWl0LCB0aGlzCgkJIyAgICAgICAgICAgICAgICAgICB3aWxsIGF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lIHdoZXRoZXIgdG8gcmVzaXplIHZpYQoJCSMgICAgICAgICAgICAgICAgICAgZGltZW5zaW9uIDEsMiBvciAwLgoJCSMgICAgICAgICAgICAgICA0ID0gUmVzaXplIHRoZSBpbWFnZSBhcyBtdWNoIGFzIHBvc3NpYmxlLCB0aGVuIGNyb3AgdGhlCgkJIyAgICAgICAgIHJlbWFpbmRlci4KCXsKCgkJc3dpdGNoIChzdHJ2YWwoJG9wdGlvbikpCgkJewoJCQljYXNlICcwJzoKCQkJY2FzZSAnZXhhY3QnOgoJCQkJJG9wdGltYWxXaWR0aCA9ICRuZXdXaWR0aDsKCQkJCSRvcHRpbWFsSGVpZ2h0ID0gJG5ld0hlaWdodDsKCQkJCWJyZWFrOwoJCQljYXNlICcxJzoKCQkJY2FzZSAncG9ydHJhaXQnOgoJCQkJJGRpbWVuc2lvbnNBcnJheSA9ICR0aGlzLT5nZXRTaXplQnlGaXhlZEhlaWdodCgkbmV3V2lkdGgsICRuZXdIZWlnaHQpOwoJCQkJJG9wdGltYWxXaWR0aCA9ICRkaW1lbnNpb25zQXJyYXlbJ29wdGltYWxXaWR0aCddOwoJCQkJJG9wdGltYWxIZWlnaHQgPSAkZGltZW5zaW9uc0FycmF5WydvcHRpbWFsSGVpZ2h0J107CgkJCQlicmVhazsKCQkJY2FzZSAnMic6CgkJCWNhc2UgJ2xhbmRzY2FwZSc6CgkJCQkkZGltZW5zaW9uc0FycmF5ID0gJHRoaXMtPmdldFNpemVCeUZpeGVkV2lkdGgoJG5ld1dpZHRoLCAkbmV3SGVpZ2h0KTsKCQkJCSRvcHRpbWFsV2lkdGggPSAkZGltZW5zaW9uc0FycmF5WydvcHRpbWFsV2lkdGgnXTsKCQkJCSRvcHRpbWFsSGVpZ2h0ID0gJGRpbWVuc2lvbnNBcnJheVsnb3B0aW1hbEhlaWdodCddOwoJCQkJYnJlYWs7CgkJCWNhc2UgJzMnOgoJCQljYXNlICdhdXRvJzoKCQkJCSRkaW1lbnNpb25zQXJyYXkgPSAkdGhpcy0+Z2V0U2l6ZUJ5QXV0bygkbmV3V2lkdGgsICRuZXdIZWlnaHQpOwoJCQkJJG9wdGltYWxXaWR0aCA9ICRkaW1lbnNpb25zQXJyYXlbJ29wdGltYWxXaWR0aCddOwoJCQkJJG9wdGltYWxIZWlnaHQgPSAkZGltZW5zaW9uc0FycmF5WydvcHRpbWFsSGVpZ2h0J107CgkJCQlicmVhazsKCQkJY2FzZSAnNCc6CgkJCWNhc2UgJ2Nyb3AnOgoJCQkJJGRpbWVuc2lvbnNBcnJheSA9ICR0aGlzLT5nZXRPcHRpbWFsQ3JvcCgkbmV3V2lkdGgsICRuZXdIZWlnaHQpOwoJCQkJJG9wdGltYWxXaWR0aCA9ICRkaW1lbnNpb25zQXJyYXlbJ29wdGltYWxXaWR0aCddOwoJCQkJJG9wdGltYWxIZWlnaHQgPSAkZGltZW5zaW9uc0FycmF5WydvcHRpbWFsSGVpZ2h0J107CgkJCQlicmVhazsKCQl9CgoJCXJldHVybiBhcnJheSggJ29wdGltYWxXaWR0aCcgPT4gJG9wdGltYWxXaWR0aCwgJ29wdGltYWxIZWlnaHQnID0+ICRvcHRpbWFsSGVpZ2h0ICk7Cgl9CgojIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCXByaXZhdGUgZnVuY3Rpb24gZ2V0U2l6ZUJ5Rml4ZWRIZWlnaHQoJG5ld1dpZHRoLCAkbmV3SGVpZ2h0KQoJewoJCS8vICoqKiBJZiBmb3JjaW5nIGlzIG9mZi4uLgoJCWlmICggISAkdGhpcy0+Zm9yY2VTdHJldGNoKQoJCXsKCgkJCS8vICoqKiAuLi5jaGVjayBpZiBhY3R1YWwgaGVpZ2h0IGlzIGxlc3MgdGhhbiB0YXJnZXQgaGVpZ2h0CgkJCWlmICgkdGhpcy0+aGVpZ2h0IDwgJG5ld0hlaWdodCkKCQkJewoJCQkJcmV0dXJuIGFycmF5KCAnb3B0aW1hbFdpZHRoJyA9PiAkdGhpcy0+d2lkdGgsICdvcHRpbWFsSGVpZ2h0JyA9PiAkdGhpcy0+aGVpZ2h0ICk7CgkJCX0KCQl9CgoJCSRyYXRpbyA9ICR0aGlzLT53aWR0aCAvICR0aGlzLT5oZWlnaHQ7CgoJCSRuZXdXaWR0aCA9ICRuZXdIZWlnaHQgKiAkcmF0aW87CgoJCS8vcmV0dXJuICRuZXdXaWR0aDsKCQlyZXR1cm4gYXJyYXkoICdvcHRpbWFsV2lkdGgnID0+ICRuZXdXaWR0aCwgJ29wdGltYWxIZWlnaHQnID0+ICRuZXdIZWlnaHQgKTsKCX0KCiMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJcHJpdmF0ZSBmdW5jdGlvbiBnZXRTaXplQnlGaXhlZFdpZHRoKCRuZXdXaWR0aCwgJG5ld0hlaWdodCkKCXsKCQkvLyAqKiogSWYgZm9yY2luZyBpcyBvZmYuLi4KCQlpZiAoICEgJHRoaXMtPmZvcmNlU3RyZXRjaCkKCQl7CgoJCQkvLyAqKiogLi4uY2hlY2sgaWYgYWN0dWFsIHdpZHRoIGlzIGxlc3MgdGhhbiB0YXJnZXQgd2lkdGgKCQkJaWYgKCR0aGlzLT53aWR0aCA8ICRuZXdXaWR0aCkKCQkJewoJCQkJcmV0dXJuIGFycmF5KCAnb3B0aW1hbFdpZHRoJyA9PiAkdGhpcy0+d2lkdGgsICdvcHRpbWFsSGVpZ2h0JyA9PiAkdGhpcy0+aGVpZ2h0ICk7CgkJCX0KCQl9CgoJCSRyYXRpbyA9ICR0aGlzLT5oZWlnaHQgLyAkdGhpcy0+d2lkdGg7CgoJCSRuZXdIZWlnaHQgPSAkbmV3V2lkdGggKiAkcmF0aW87CgoJCS8vcmV0dXJuICRuZXdIZWlnaHQ7CgkJcmV0dXJuIGFycmF5KCAnb3B0aW1hbFdpZHRoJyA9PiAkbmV3V2lkdGgsICdvcHRpbWFsSGVpZ2h0JyA9PiAkbmV3SGVpZ2h0ICk7Cgl9CgojIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCXByaXZhdGUgZnVuY3Rpb24gZ2V0U2l6ZUJ5QXV0bygkbmV3V2lkdGgsICRuZXdIZWlnaHQpCgkJIyBBdXRob3I6ICAgICBKYXJyb2QgT2JlcnRvCgkJIyBEYXRlOiAgICAgICAxOS0wOC0wOAoJCSMgUHVycG9zZTogICAgRGVwZW5kaW5nIG9uIHRoZSBoZWlnaHQsIGNob29zZSB0byByZXNpemUgYnkgMCwgMSwgb3IgMgoJCSMgUGFyYW0gaW46ICAgVGhlIG5ldyBoZWlnaHQgYW5kIG5ldyB3aWR0aAoJCSMgTm90ZXM6CgkJIwoJewoJCS8vICoqKiBJZiBmb3JjaW5nIGlzIG9mZi4uLgoJCWlmICggISAkdGhpcy0+Zm9yY2VTdHJldGNoKQoJCXsKCgkJCS8vICoqKiAuLi5jaGVjayBpZiBhY3R1YWwgc2l6ZSBpcyBsZXNzIHRoYW4gdGFyZ2V0IHNpemUKCQkJaWYgKCR0aGlzLT53aWR0aCA8ICRuZXdXaWR0aCAmJiAkdGhpcy0+aGVpZ2h0IDwgJG5ld0hlaWdodCkKCQkJewoJCQkJcmV0dXJuIGFycmF5KCAnb3B0aW1hbFdpZHRoJyA9PiAkdGhpcy0+d2lkdGgsICdvcHRpbWFsSGVpZ2h0JyA9PiAkdGhpcy0+aGVpZ2h0ICk7CgkJCX0KCQl9CgoJCWlmICgkdGhpcy0+aGVpZ2h0IDwgJHRoaXMtPndpZHRoKQoJCQkvLyAqKiogSW1hZ2UgdG8gYmUgcmVzaXplZCBpcyB3aWRlciAobGFuZHNjYXBlKQoJCXsKCQkJLy8kb3B0aW1hbFdpZHRoID0gJG5ld1dpZHRoOwoJCQkvLyRvcHRpbWFsSGVpZ2h0PSAkdGhpcy0+Z2V0U2l6ZUJ5Rml4ZWRXaWR0aCgkbmV3V2lkdGgpOwoKCQkJJGRpbWVuc2lvbnNBcnJheSA9ICR0aGlzLT5nZXRTaXplQnlGaXhlZFdpZHRoKCRuZXdXaWR0aCwgJG5ld0hlaWdodCk7CgkJCSRvcHRpbWFsV2lkdGggPSAkZGltZW5zaW9uc0FycmF5WydvcHRpbWFsV2lkdGgnXTsKCQkJJG9wdGltYWxIZWlnaHQgPSAkZGltZW5zaW9uc0FycmF5WydvcHRpbWFsSGVpZ2h0J107CgkJfQoJCWVsc2VpZiAoJHRoaXMtPmhlaWdodCA+ICR0aGlzLT53aWR0aCkKCQkJLy8gKioqIEltYWdlIHRvIGJlIHJlc2l6ZWQgaXMgdGFsbGVyIChwb3J0cmFpdCkKCQl7CgkJCS8vJG9wdGltYWxXaWR0aCA9ICR0aGlzLT5nZXRTaXplQnlGaXhlZEhlaWdodCgkbmV3SGVpZ2h0KTsKCQkJLy8kb3B0aW1hbEhlaWdodD0gJG5ld0hlaWdodDsKCgkJCSRkaW1lbnNpb25zQXJyYXkgPSAkdGhpcy0+Z2V0U2l6ZUJ5Rml4ZWRIZWlnaHQoJG5ld1dpZHRoLCAkbmV3SGVpZ2h0KTsKCQkJJG9wdGltYWxXaWR0aCA9ICRkaW1lbnNpb25zQXJyYXlbJ29wdGltYWxXaWR0aCddOwoJCQkkb3B0aW1hbEhlaWdodCA9ICRkaW1lbnNpb25zQXJyYXlbJ29wdGltYWxIZWlnaHQnXTsKCQl9CgkJZWxzZQoJCQkvLyAqKiogSW1hZ2UgdG8gYmUgcmVzaXplcmQgaXMgYSBzcXVhcmUKCQl7CgoJCQlpZiAoJG5ld0hlaWdodCA8ICRuZXdXaWR0aCkKCQkJewoJCQkJLy8kb3B0aW1hbFdpZHRoID0gJG5ld1dpZHRoOwoJCQkJLy8kb3B0aW1hbEhlaWdodD0gJHRoaXMtPmdldFNpemVCeUZpeGVkV2lkdGgoJG5ld1dpZHRoKTsKCQkJCSRkaW1lbnNpb25zQXJyYXkgPSAkdGhpcy0+Z2V0U2l6ZUJ5Rml4ZWRXaWR0aCgkbmV3V2lkdGgsICRuZXdIZWlnaHQpOwoJCQkJJG9wdGltYWxXaWR0aCA9ICRkaW1lbnNpb25zQXJyYXlbJ29wdGltYWxXaWR0aCddOwoJCQkJJG9wdGltYWxIZWlnaHQgPSAkZGltZW5zaW9uc0FycmF5WydvcHRpbWFsSGVpZ2h0J107CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQlpZiAoJG5ld0hlaWdodCA+ICRuZXdXaWR0aCkKCQkJCXsKCQkJCQkvLyRvcHRpbWFsV2lkdGggPSAkdGhpcy0+Z2V0U2l6ZUJ5Rml4ZWRIZWlnaHQoJG5ld0hlaWdodCk7CgkJCQkJLy8kb3B0aW1hbEhlaWdodD0gJG5ld0hlaWdodDsKCQkJCQkkZGltZW5zaW9uc0FycmF5ID0gJHRoaXMtPmdldFNpemVCeUZpeGVkSGVpZ2h0KCRuZXdXaWR0aCwgJG5ld0hlaWdodCk7CgkJCQkJJG9wdGltYWxXaWR0aCA9ICRkaW1lbnNpb25zQXJyYXlbJ29wdGltYWxXaWR0aCddOwoJCQkJCSRvcHRpbWFsSGVpZ2h0ID0gJGRpbWVuc2lvbnNBcnJheVsnb3B0aW1hbEhlaWdodCddOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCS8vICoqKiBTcWF1cmUgYmVpbmcgcmVzaXplZCB0byBhIHNxdWFyZQoJCQkJCSRvcHRpbWFsV2lkdGggPSAkbmV3V2lkdGg7CgkJCQkJJG9wdGltYWxIZWlnaHQgPSAkbmV3SGVpZ2h0OwoJCQkJfQoJCQl9CgkJfQoKCQlyZXR1cm4gYXJyYXkoICdvcHRpbWFsV2lkdGgnID0+ICRvcHRpbWFsV2lkdGgsICdvcHRpbWFsSGVpZ2h0JyA9PiAkb3B0aW1hbEhlaWdodCApOwoJfQoKIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglwcml2YXRlIGZ1bmN0aW9uIGdldE9wdGltYWxDcm9wKCRuZXdXaWR0aCwgJG5ld0hlaWdodCkKCQkjIEF1dGhvcjogICAgIEphcnJvZCBPYmVydG8KCQkjIERhdGU6ICAgICAgIDE3LTExLTA5CgkJIyBQdXJwb3NlOiAgICBHZXQgb3B0aW1hbCBjcm9wIGRpbWVuc2lvbnMKCQkjIFBhcmFtIGluOiAgIHdpZHRoIGFuZCBoZWlnaHQgYXMgcmVxdWVzdGVkIGJ5IHVzZXIgKGZpZyAzKQoJCSMgUGFyYW0gb3V0OiAgQXJyYXkgb2Ygb3B0aW1hbCB3aWR0aCBhbmQgaGVpZ2h0IChmaWcgMikKCQkjIFJlZmVyZW5jZToKCQkjIE5vdGVzOiAgICAgIFRoZSBvcHRpbWFsIHdpZHRoIGFuZCBoZWlnaHQgcmV0dXJuIGFyZSBub3QgdGhlIHNhbWUgYXMgdGhlCgkJIyAgICAgICBzYW1lIGFzIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IHBhc3NlZCBpbi4gRm9yIGV4YW1wbGU6CgkJIwoJCSMKCQkjICAgfC0tLS0tLS0tLS0tLS0tLS0tfCAgICAgfC0tLS0tLS0tLS0tLXwgICAgICAgfC0tLS0tLS18CgkJIyAgIHwgICAgICAgICAgICAgfCAgID0+ICB8Kip8ICAgICAgfCoqfCAgID0+ICB8ICAgICAgIHwKCQkjICAgfCAgICAgICAgICAgICB8ICAgICB8Kip8ICAgICAgfCoqfCAgICAgICB8ICAgICAgIHwKCQkjICAgfCAgICAgICAgICAgfCAgICAgICB8LS0tLS0tLS0tLS0tfCAgICAgICB8LS0tLS0tLXwKCQkjICAgfC0tLS0tLS0tLS0tLS0tLS0tfAoJCSMgICAgICAgIG9yaWdpbmFsICAgICAgICAgICAgICAgIG9wdGltYWwgICAgICAgICAgICAgY3JvcAoJCSMgICAgICAgICAgICAgIHNpemUgICAgICAgICAgICAgICAgICAgc2l6ZSAgICAgICAgICAgICAgIHNpemUKCQkjICBGaWcgICAgICAgICAgMSAgICAgICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgICAgMwoJCSMKCQkjICAgICAgIDMwMCB4IDI1MCAgICAgICAgICAgMTUwIHggMTI1ICAgICAgICAgIDE1MCB4IDEwMAoJCSMKCQkjICAgIFRoZSBvcHRpbWFsIHNpemUgaXMgdGhlIHNtYWxsZXN0IHNpemUgKHRoYXQgaXMgY2xvc2VzdCB0byB0aGUgY3JvcCBzaXplKQoJCSMgICAgd2hpbGUgcmV0YWluaW5nIHByb3BvcnRpb24vcmF0aW8uCgkJIwoJCSMgIFRoZSBjcm9wIHNpemUgaXMgdGhlIG9wdGltYWwgc2l6ZSB0aGF0IGhhcyBiZWVuIGNyb3BwZWQgb24gb25lIGF4aXMgdG8KCQkjICBtYWtlIHRoZSBpbWFnZSB0aGUgZXhhY3Qgc2l6ZSBzcGVjaWZpZWQgYnkgdGhlIHVzZXIuCgkJIwoJCSMgICAgICAgICAgICAgICAqIHJlcHJlc2VudCBjcm9wcGVkIGFyZWEKCQkjCgl7CgoJCS8vICoqKiBJZiBmb3JjaW5nIGlzIG9mZi4uLgoJCWlmICggISAkdGhpcy0+Zm9yY2VTdHJldGNoKQoJCXsKCgkJCS8vICoqKiAuLi5jaGVjayBpZiBhY3R1YWwgc2l6ZSBpcyBsZXNzIHRoYW4gdGFyZ2V0IHNpemUKCQkJaWYgKCR0aGlzLT53aWR0aCA8ICRuZXdXaWR0aCAmJiAkdGhpcy0+aGVpZ2h0IDwgJG5ld0hlaWdodCkKCQkJewoJCQkJcmV0dXJuIGFycmF5KCAnb3B0aW1hbFdpZHRoJyA9PiAkdGhpcy0+d2lkdGgsICdvcHRpbWFsSGVpZ2h0JyA9PiAkdGhpcy0+aGVpZ2h0ICk7CgkJCX0KCQl9CgoJCSRoZWlnaHRSYXRpbyA9ICR0aGlzLT5oZWlnaHQgLyAkbmV3SGVpZ2h0OwoJCSR3aWR0aFJhdGlvID0gJHRoaXMtPndpZHRoIC8gJG5ld1dpZHRoOwoKCQlpZiAoJGhlaWdodFJhdGlvIDwgJHdpZHRoUmF0aW8pCgkJewoJCQkkb3B0aW1hbFJhdGlvID0gJGhlaWdodFJhdGlvOwoJCX0KCQllbHNlCgkJewoJCQkkb3B0aW1hbFJhdGlvID0gJHdpZHRoUmF0aW87CgkJfQoKCQkkb3B0aW1hbEhlaWdodCA9IHJvdW5kKCR0aGlzLT5oZWlnaHQgLyAkb3B0aW1hbFJhdGlvKTsKCQkkb3B0aW1hbFdpZHRoID0gcm91bmQoJHRoaXMtPndpZHRoIC8gJG9wdGltYWxSYXRpbyk7CgoJCXJldHVybiBhcnJheSggJ29wdGltYWxXaWR0aCcgPT4gJG9wdGltYWxXaWR0aCwgJ29wdGltYWxIZWlnaHQnID0+ICRvcHRpbWFsSGVpZ2h0ICk7Cgl9CgojIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCXByaXZhdGUgZnVuY3Rpb24gc2hhcnBlbigpCgkJIyBBdXRob3I6ICAgICBKYXJyb2QgT2JlcnRvCgkJIyBEYXRlOiAgICAgICAwOCAwNCAyMDExCgkJIyBQdXJwb3NlOiAgICBTaGFycGVuIGltYWdlCgkJIyBQYXJhbSBpbjogICBuL2EKCQkjIFBhcmFtIG91dDogIG4vYQoJCSMgUmVmZXJlbmNlOgoJCSMgTm90ZXM6CgkJIyBDcmVkaXQ6ICAgSW5jb3Jwb3JhdGVzIEpvZSBMZW5jaW9uaSAoQXVndXN0IDYsIDIwMDgpIGNvZGUKCXsKCgkJaWYgKHZlcnNpb25fY29tcGFyZShQSFBfVkVSU0lPTiwgJzUuMS4wJykgPj0gMCkKCQl7CgoJCQkvLyAqKioKCQkJaWYgKCR0aGlzLT5hZ2dyZXNpdmVTaGFycGVuaW5nKQoJCQl7ICMgQSBtb3JlIGFnZ3Jlc3NpdmUgc2hhcnBlbmluZyBzb2x1dGlvbgoKCQkJCSRzaGFycGVuTWF0cml4ID0gYXJyYXkoIGFycmF5KCAtMSwgLTEsIC0xICksCgkJCQkJCQkJCQlhcnJheSggLTEsIDE2LCAtMSApLAoJCQkJCQkJCQkJYXJyYXkoIC0xLCAtMSwgLTEgKSApOwoJCQkJJGRpdmlzb3IgPSA4OwoJCQkJJG9mZnNldCA9IDA7CgoJCQkJaW1hZ2Vjb252b2x1dGlvbigkdGhpcy0+aW1hZ2VSZXNpemVkLCAkc2hhcnBlbk1hdHJpeCwgJGRpdmlzb3IsICRvZmZzZXQpOwoJCQl9CgkJCWVsc2UgIyBNb3JlIHN1YnRsZSBhbmQgcGVyc29uYWxseSBtb3JlIGRlc2lyYWJsZQoJCQl7CgkJCQkkc2hhcnBuZXNzID0gJHRoaXMtPmZpbmRTaGFycCgkdGhpcy0+d2lkdGhPcmlnaW5hbCwgJHRoaXMtPndpZHRoKTsKCgkJCQkkc2hhcnBlbk1hdHJpeCA9IGFycmF5KAoJCQkJCWFycmF5KCAtMSwgLTIsIC0xICksCgkJCQkJYXJyYXkoIC0yLCAkc2hhcnBuZXNzICsgMTIsIC0yICksIC8vTGVzc2VuIHRoZSBlZmZlY3Qgb2YgYSBmaWx0ZXIgYnkgaW5jcmVhc2luZyB0aGUgdmFsdWUgaW4gdGhlIGNlbnRlciBjZWxsCgkJCQkJYXJyYXkoIC0xLCAtMiwgLTEgKQoJCQkJKTsKCQkJCSRkaXZpc29yID0gJHNoYXJwbmVzczsgLy8gYWRqdXN0cyBicmlnaHRuZXNzCgkJCQkkb2Zmc2V0ID0gMDsKCQkJCWltYWdlY29udm9sdXRpb24oJHRoaXMtPmltYWdlUmVzaXplZCwgJHNoYXJwZW5NYXRyaXgsICRkaXZpc29yLCAkb2Zmc2V0KTsKCQkJfQoJCX0KCQllbHNlCgkJewoJCQlpZiAoJHRoaXMtPmRlYnVnKQoJCQl7CgkJCQl0aHJvdyBuZXcgRXhjZXB0aW9uKCdTaGFycGVuaW5nIHJlcXVpcmVkIFBIUCA1LjEuMCBvciBncmVhdGVyLicpOwoJCQl9CgkJfQoJfQoKCSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJcHJpdmF0ZSBmdW5jdGlvbiBzaGFycGVuMigkbGV2ZWwpCgl7CgkJJHNoYXJwZW5NYXRyaXggPSBhcnJheSgKCQkJYXJyYXkoICRsZXZlbCwgJGxldmVsLCAkbGV2ZWwgKSwKCQkJYXJyYXkoICRsZXZlbCwgKDggKiAkbGV2ZWwpICsgMSwgJGxldmVsICksIC8vTGVzc2VuIHRoZSBlZmZlY3Qgb2YgYSBmaWx0ZXIgYnkgaW5jcmVhc2luZyB0aGUgdmFsdWUgaW4gdGhlIGNlbnRlciBjZWxsCgkJCWFycmF5KCAkbGV2ZWwsICRsZXZlbCwgJGxldmVsICkKCQkpOwoKCX0KCiMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJcHJpdmF0ZSBmdW5jdGlvbiBmaW5kU2hhcnAoJG9yaWcsICRmaW5hbCkKCQkjIEF1dGhvcjogICAgIFJ5YW4gUnVkIChodHRwOi8vYWRyeXJ1bi5jb20pCgkJIyBQdXJwb3NlOiAgICBGaW5kIG9wdGltYWwgc2hhcnBuZXNzCgkJIyBQYXJhbSBpbjogICBuL2EKCQkjIFBhcmFtIG91dDogIG4vYQoJCSMgUmVmZXJlbmNlOgoJCSMgTm90ZXM6CgkJIwoJewoJCSRmaW5hbCA9ICRmaW5hbCAqICg3NTAuMCAvICRvcmlnKTsKCQkkYSA9IDUyOwoJCSRiID0gLTAuMjc4MTA2NTA4ODc1NzMxMjQ7CgkJJGMgPSAuMDAwNDczMzcyNzgxMDY1MDg5NDY7CgoJCSRyZXN1bHQgPSAkYSArICRiICogJGZpbmFsICsgJGMgKiAkZmluYWwgKiAkZmluYWw7CgoJCXJldHVybiBtYXgocm91bmQoJHJlc3VsdCksIDApOwoJfQoKIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglwcml2YXRlIGZ1bmN0aW9uIHByZXBPcHRpb24oJG9wdGlvbikKCQkjIEF1dGhvcjogICAgIEphcnJvZCBPYmVydG8KCQkjIFB1cnBvc2U6ICAgIFByZXAgb3B0aW9uIGxpa2UgY2hhbmdlIHRoZSBwYXNzZWQgaW4gb3B0aW9uIHRvIGxvd2VyY2FzZQoJCSMgUGFyYW0gaW46ICAgKHN0ci9pbnQpICRvcHRpb246IGVnLiAnZXhhY3QnLCAnY3JvcCcuIDAsIDQKCQkjIFBhcmFtIG91dDogIGxvd2VyY2FzZSBzdHJpbmcKCQkjIFJlZmVyZW5jZToKCQkjIE5vdGVzOgoJCSMKCXsKCQlpZiAoaXNfYXJyYXkoJG9wdGlvbikpCgkJewoJCQlpZiAoZml4X3N0cnRvbG93ZXIoJG9wdGlvblswXSkgPT0gJ2Nyb3AnICYmIGNvdW50KCRvcHRpb24pID09IDIpCgkJCXsKCQkJCXJldHVybiAnY3JvcCc7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQl0aHJvdyBuZXcgRXhjZXB0aW9uKCdDcm9wIHJlc2l6ZSBvcHRpb24gYXJyYXkgaXMgYmFkbHkgZm9ybWF0dGVkLicpOwoJCQl9CgkJfQoJCWVsc2UKCQl7CgkJCWlmIChzdHJwb3MoJG9wdGlvbiwgJ2Nyb3AnKSAhPT0gZmFsc2UpCgkJCXsKCQkJCXJldHVybiAnY3JvcCc7CgkJCX0KCQl9CgoJCWlmIChpc19zdHJpbmcoJG9wdGlvbikpCgkJewoJCQlyZXR1cm4gZml4X3N0cnRvbG93ZXIoJG9wdGlvbik7CgkJfQoKCQlyZXR1cm4gJG9wdGlvbjsKCX0KCgoJLyotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKiotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0KICBQcmVzZXRzCiotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKiotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi8KCiMKIyBQcmVzZXQgYXJlIHByZS1kZWZpbmVkIHRlbXBsYXRlcyB5b3UgY2FuIGFwcGx5IHRvIHlvdXIgaW1hZ2UuCiMKIyBUaGVzZSBhcmUgaW50ZWRlZCB0byBiZSBhcHBsaWVkIHRvIHRodW1ibmFpbCBpbWFnZXMuCiMKCgoJcHVibGljIGZ1bmN0aW9uIGJvcmRlclByZXNldCgkcHJlc2V0KQoJewoJCXN3aXRjaCAoJHByZXNldCkKCQl7CgoJCQljYXNlICdzaW1wbGUnOgoJCQkJJHRoaXMtPmFkZEJvcmRlcig3LCAnI2ZmZicpOwoJCQkJJHRoaXMtPmFkZEJvcmRlcig2LCAnI2YyZjFmMCcpOwoJCQkJJHRoaXMtPmFkZEJvcmRlcigyLCAnI2ZmZicpOwoJCQkJJHRoaXMtPmFkZEJvcmRlcigxLCAnI2NjYycpOwoJCQkJYnJlYWs7CgkJCWRlZmF1bHQ6CgkJCQlicmVhazsKCQl9CgoJfQoKCgkvKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLQogIERyYXcgYm9yZGVyCiotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKiotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi8KCglwdWJsaWMgZnVuY3Rpb24gYWRkQm9yZGVyKCR0aGlja25lc3MgPSAxLCAkcmdiQXJyYXkgPSBhcnJheSggMjU1LCAyNTUsIDI1NSApKQoJCSMgQXV0aG9yOiAgICAgSmFycm9kIE9iZXJ0bwoJCSMgRGF0ZTogICAgICAgMDUtMDUtMTEKCQkjIFB1cnBvc2U6ICAgIEFkZCBhIGJvcmRlciB0byB0aGUgaW1hZ2UKCQkjIFBhcmFtIGluOgoJCSMgUGFyYW0gb3V0OgoJCSMgUmVmZXJlbmNlOgoJCSMgTm90ZXM6ICAgIFRoaXMgYm9yZGVyIGlzIGFkZGVkIHRvIHRoZSBJTlNJREUgb2YgdGhlIGltYWdlCgkJIwoJewoJCWlmICgkdGhpcy0+aW1hZ2VSZXNpemVkKQoJCXsKCgkJCSRyZ2JBcnJheSA9ICR0aGlzLT5mb3JtYXRDb2xvcigkcmdiQXJyYXkpOwoJCQkkciA9ICRyZ2JBcnJheVsnciddOwoJCQkkZyA9ICRyZ2JBcnJheVsnZyddOwoJCQkkYiA9ICRyZ2JBcnJheVsnYiddOwoKCgkJCSR4MSA9IDA7CgkJCSR5MSA9IDA7CgkJCSR4MiA9IEltYWdlU1goJHRoaXMtPmltYWdlUmVzaXplZCkgLSAxOwoJCQkkeTIgPSBJbWFnZVNZKCR0aGlzLT5pbWFnZVJlc2l6ZWQpIC0gMTsKCgkJCSRyZ2JBcnJheSA9IEltYWdlQ29sb3JBbGxvY2F0ZSgkdGhpcy0+aW1hZ2VSZXNpemVkLCAkciwgJGcsICRiKTsKCgoJCQlmb3IgKCRpID0gMDsgJGkgPCAkdGhpY2tuZXNzOyAkaSsrKQoJCQl7CgkJCQlJbWFnZVJlY3RhbmdsZSgkdGhpcy0+aW1hZ2VSZXNpemVkLCAkeDErKywgJHkxKyssICR4Mi0tLCAkeTItLSwgJHJnYkFycmF5KTsKCQkJfQoJCX0KCX0KCgoJLyotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKiotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0KICBHcmF5IFNjYWxlCiotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKiotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi8KCglwdWJsaWMgZnVuY3Rpb24gZ3JleVNjYWxlKCkKCQkjIEF1dGhvcjogICAgIEphcnJvZCBPYmVydG8KCQkjIERhdGU6ICAgICAgIDA3LTA1LTIwMTEKCQkjIFB1cnBvc2U6ICAgIE1ha2UgaW1hZ2UgZ3JleXNjYWxlCgkJIyBQYXJhbSBpbjogICBuL2EKCQkjIFBhcmFtIG91dDoKCQkjIFJlZmVyZW5jZToKCQkjIE5vdGVzOgoJCSMKCXsKCQlpZiAoJHRoaXMtPmltYWdlUmVzaXplZCkKCQl7CgkJCWltYWdlZmlsdGVyKCR0aGlzLT5pbWFnZVJlc2l6ZWQsIElNR19GSUxURVJfR1JBWVNDQUxFKTsKCQl9CgoJfQoKCSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJcHVibGljIGZ1bmN0aW9uIGdyZXlTY2FsZUVuaGFuY2VkKCkKCQkjIEF1dGhvcjogICAgIEphcnJvZCBPYmVydG8KCQkjIERhdGU6ICAgICAgIDA3LTA1LTIwMTEKCQkjIFB1cnBvc2U6ICAgIE1ha2UgaW1hZ2UgZ3JleXNjYWxlCgkJIyBQYXJhbSBpbjogICBuL2EKCQkjIFBhcmFtIG91dDoKCQkjIFJlZmVyZW5jZToKCQkjIE5vdGVzOgoJCSMKCXsKCQlpZiAoJHRoaXMtPmltYWdlUmVzaXplZCkKCQl7CgkJCWltYWdlZmlsdGVyKCR0aGlzLT5pbWFnZVJlc2l6ZWQsIElNR19GSUxURVJfR1JBWVNDQUxFKTsKCQkJaW1hZ2VmaWx0ZXIoJHRoaXMtPmltYWdlUmVzaXplZCwgSU1HX0ZJTFRFUl9DT05UUkFTVCwgLTE1KTsKCQkJaW1hZ2VmaWx0ZXIoJHRoaXMtPmltYWdlUmVzaXplZCwgSU1HX0ZJTFRFUl9CUklHSFRORVNTLCAyKTsKCQkJJHRoaXMtPnNoYXJwZW4oJHRoaXMtPndpZHRoKTsKCQl9Cgl9CgoJIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglwdWJsaWMgZnVuY3Rpb24gZ3JleVNjYWxlRHJhbWF0aWMoKQoJCSMgQWxpYXMgb2YgZ2RfZmlsdGVyX21vbm9waW4KCXsKCQkkdGhpcy0+Z2RfZmlsdGVyX21vbm9waW4oKTsKCX0KCgoJLyotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKiotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0KICBCbGFjayAnbiBXaGl0ZQoqLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSoqLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSovCgoJcHVibGljIGZ1bmN0aW9uIGJsYWNrQW5kV2hpdGUoKQoJCSMgQXV0aG9yOiAgICAgSmFycm9kIE9iZXJ0bwoJCSMgRGF0ZTogICAgICAgMDctMDUtMjAxMQoJCSMgUHVycG9zZTogICAgTWFrZSBpbWFnZSBibGFjayBhbmQgd2hpdGUKCQkjIFBhcmFtIGluOiAgIG4vYQoJCSMgUGFyYW0gb3V0OgoJCSMgUmVmZXJlbmNlOgoJCSMgTm90ZXM6CgkJIwoJewoJCWlmICgkdGhpcy0+aW1hZ2VSZXNpemVkKQoJCXsKCgkJCWltYWdlZmlsdGVyKCR0aGlzLT5pbWFnZVJlc2l6ZWQsIElNR19GSUxURVJfR1JBWVNDQUxFKTsKCQkJaW1hZ2VmaWx0ZXIoJHRoaXMtPmltYWdlUmVzaXplZCwgSU1HX0ZJTFRFUl9DT05UUkFTVCwgLTEwMDApOwoJCX0KCgl9CgoKCS8qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSoqLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotCiAgTmVnYXRpdmUKKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLwoKCXB1YmxpYyBmdW5jdGlvbiBuZWdhdGl2ZSgpCgkJIyBBdXRob3I6ICAgICBKYXJyb2QgT2JlcnRvCgkJIyBEYXRlOiAgICAgICAwNy0wNS0yMDExCgkJIyBQdXJwb3NlOiAgICBNYWtlIGltYWdlIG5lZ2F0aXZlCgkJIyBQYXJhbSBpbjogICBuL2EKCQkjIFBhcmFtIG91dDoKCQkjIFJlZmVyZW5jZToKCQkjIE5vdGVzOgoJCSMKCXsKCQlpZiAoJHRoaXMtPmltYWdlUmVzaXplZCkKCQl7CgoJCQlpbWFnZWZpbHRlcigkdGhpcy0+aW1hZ2VSZXNpemVkLCBJTUdfRklMVEVSX05FR0FURSk7CgkJfQoKCX0KCgoJLyotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKiotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0KICBTZXBpYQoqLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSoqLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSovCgoJcHVibGljIGZ1bmN0aW9uIHNlcGlhKCkKCQkjIEF1dGhvcjogICAgIEphcnJvZCBPYmVydG8KCQkjIERhdGU6ICAgICAgIDA3LTA1LTIwMTEKCQkjIFB1cnBvc2U6ICAgIE1ha2UgaW1hZ2Ugc2VwaWEKCQkjIFBhcmFtIGluOiAgIG4vYQoJCSMgUGFyYW0gb3V0OgoJCSMgUmVmZXJlbmNlOgoJCSMgTm90ZXM6CgkJIwoJewoJCWlmICgkdGhpcy0+aW1hZ2VSZXNpemVkKQoJCXsKCQkJaW1hZ2VmaWx0ZXIoJHRoaXMtPmltYWdlUmVzaXplZCwgSU1HX0ZJTFRFUl9HUkFZU0NBTEUpOwoJCQlpbWFnZWZpbHRlcigkdGhpcy0+aW1hZ2VSZXNpemVkLCBJTUdfRklMVEVSX0JSSUdIVE5FU1MsIC0xMCk7CgkJCWltYWdlZmlsdGVyKCR0aGlzLT5pbWFnZVJlc2l6ZWQsIElNR19GSUxURVJfQ09OVFJBU1QsIC0yMCk7CgkJCWltYWdlZmlsdGVyKCR0aGlzLT5pbWFnZVJlc2l6ZWQsIElNR19GSUxURVJfQ09MT1JJWkUsIDYwLCAzMCwgLTE1KTsKCQl9Cgl9CgoJIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglwdWJsaWMgZnVuY3Rpb24gc2VwaWEyKCkKCgl7CgkJaWYgKCR0aGlzLT5pbWFnZVJlc2l6ZWQpCgkJewoKCQkJJHRvdGFsID0gaW1hZ2Vjb2xvcnN0b3RhbCgkdGhpcy0+aW1hZ2VSZXNpemVkKTsKCQkJZm9yICgkaSA9IDA7ICRpIDwgJHRvdGFsOyAkaSsrKQoJCQl7CgkJCQkkaW5kZXggPSBpbWFnZWNvbG9yc2ZvcmluZGV4KCR0aGlzLT5pbWFnZVJlc2l6ZWQsICRpKTsKCQkJCSRyZWQgPSAoJGluZGV4WyJyZWQiXSAqIDAuMzkzICsgJGluZGV4WyJncmVlbiJdICogMC43NjkgKyAkaW5kZXhbImJsdWUiXSAqIDAuMTg5KSAvIDEuMzUxOwoJCQkJJGdyZWVuID0gKCRpbmRleFsicmVkIl0gKiAwLjM0OSArICRpbmRleFsiZ3JlZW4iXSAqIDAuNjg2ICsgJGluZGV4WyJibHVlIl0gKiAwLjE2OCkgLyAxLjIwMzsKCQkJCSRibHVlID0gKCRpbmRleFsicmVkIl0gKiAwLjI3MiArICRpbmRleFsiZ3JlZW4iXSAqIDAuNTM0ICsgJGluZGV4WyJibHVlIl0gKiAwLjEzMSkgLyAyLjE0MDsKCQkJCWltYWdlY29sb3JzZXQoJHRoaXMtPmltYWdlUmVzaXplZCwgJGksICRyZWQsICRncmVlbiwgJGJsdWUpOwoJCQl9CgoKCQl9Cgl9CgoKCS8qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSoqLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotCiAgVmludGFnZQoqLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSoqLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSovCgoJcHVibGljIGZ1bmN0aW9uIHZpbnRhZ2UoKQoJCSMgQWxpYXMgb2YgZ2RfZmlsdGVyX21vbm9waW4KCXsKCQkkdGhpcy0+Z2RfZmlsdGVyX3ZpbnRhZ2UoKTsKCX0KCgkvKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLQogIFByZXNldHMgQnkgTWFyYyBIaWJiaW5zCiotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKiotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi8KCgoJLyoqIEFwcGx5ICdNb25vcGluJyBwcmVzZXQgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZF9maWx0ZXJfbW9ub3BpbigpCgl7CgoJCWlmICgkdGhpcy0+aW1hZ2VSZXNpemVkKQoJCXsKCQkJaW1hZ2VmaWx0ZXIoJHRoaXMtPmltYWdlUmVzaXplZCwgSU1HX0ZJTFRFUl9HUkFZU0NBTEUpOwoJCQlpbWFnZWZpbHRlcigkdGhpcy0+aW1hZ2VSZXNpemVkLCBJTUdfRklMVEVSX0JSSUdIVE5FU1MsIC0xNSk7CgkJCWltYWdlZmlsdGVyKCR0aGlzLT5pbWFnZVJlc2l6ZWQsIElNR19GSUxURVJfQ09OVFJBU1QsIC0xNSk7CgkJCSR0aGlzLT5pbWFnZVJlc2l6ZWQgPSAkdGhpcy0+Z2RfYXBwbHlfb3ZlcmxheSgkdGhpcy0+aW1hZ2VSZXNpemVkLCAndmlnbmV0dGUnLCAxMDApOwoJCX0KCX0KCgkjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCXB1YmxpYyBmdW5jdGlvbiBnZF9maWx0ZXJfdmludGFnZSgpCgl7CgkJaWYgKCR0aGlzLT5pbWFnZVJlc2l6ZWQpCgkJewoJCQkkdGhpcy0+aW1hZ2VSZXNpemVkID0gJHRoaXMtPmdkX2FwcGx5X292ZXJsYXkoJHRoaXMtPmltYWdlUmVzaXplZCwgJ3ZpZ25ldHRlJywgNDUpOwoJCQlpbWFnZWZpbHRlcigkdGhpcy0+aW1hZ2VSZXNpemVkLCBJTUdfRklMVEVSX0JSSUdIVE5FU1MsIDIwKTsKCQkJaW1hZ2VmaWx0ZXIoJHRoaXMtPmltYWdlUmVzaXplZCwgSU1HX0ZJTFRFUl9DT05UUkFTVCwgLTM1KTsKCQkJaW1hZ2VmaWx0ZXIoJHRoaXMtPmltYWdlUmVzaXplZCwgSU1HX0ZJTFRFUl9DT0xPUklaRSwgNjAsIC0xMCwgMzUpOwoJCQlpbWFnZWZpbHRlcigkdGhpcy0+aW1hZ2VSZXNpemVkLCBJTUdfRklMVEVSX1NNT09USCwgNyk7CgkJCSR0aGlzLT5pbWFnZVJlc2l6ZWQgPSAkdGhpcy0+Z2RfYXBwbHlfb3ZlcmxheSgkdGhpcy0+aW1hZ2VSZXNpemVkLCAnc2NyYXRjaCcsIDEwKTsKCQl9Cgl9CgoJIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgkvKiogQXBwbHkgYSBQTkcgb3ZlcmxheSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBnZF9hcHBseV9vdmVybGF5KCRpbSwgJHR5cGUsICRhbW91bnQpCgkJIwoJCSMgT3JpZ2luYWwgQXV0aG9yOiAgICBNYXJjIEhpYmJpbnMKCQkjIExpY2Vuc2U6ICBBdHRyaWJ1dGlvbi1TaGFyZUFsaWtlIDMuMAoJCSMgUHVycG9zZToKCQkjIFBhcmFtcyBpbjoKCQkjIFBhcmFtcyBvdXQ6CgkJIyBOb3RlczoKCQkjCgl7CgkJJHdpZHRoID0gaW1hZ2VzeCgkaW0pOwoJCSRoZWlnaHQgPSBpbWFnZXN5KCRpbSk7CgkJJGZpbHRlciA9IGltYWdlY3JlYXRldHJ1ZWNvbG9yKCR3aWR0aCwgJGhlaWdodCk7CgoJCWltYWdlYWxwaGFibGVuZGluZygkZmlsdGVyLCBmYWxzZSk7CgkJaW1hZ2VzYXZlYWxwaGEoJGZpbHRlciwgdHJ1ZSk7CgoJCSR0cmFuc3BhcmVudCA9IGltYWdlY29sb3JhbGxvY2F0ZWFscGhhKCRmaWx0ZXIsIDI1NSwgMjU1LCAyNTUsIDEyNyk7CgkJaW1hZ2VmaWxsZWRyZWN0YW5nbGUoJGZpbHRlciwgMCwgMCwgJHdpZHRoLCAkaGVpZ2h0LCAkdHJhbnNwYXJlbnQpOwoKCQkvLyAqKiogUmVzaXplIG92ZXJsYXkKCQkkb3ZlcmxheSA9ICR0aGlzLT5maWx0ZXJPdmVybGF5UGF0aCAuICcvJyAuICR0eXBlIC4gJy5wbmcnOwoJCSRwbmcgPSBpbWFnZWNyZWF0ZWZyb21wbmcoJG92ZXJsYXkpOwoJCWltYWdlY29weXJlc2FtcGxlZCgkZmlsdGVyLCAkcG5nLCAwLCAwLCAwLCAwLCAkd2lkdGgsICRoZWlnaHQsIGltYWdlc3goJHBuZyksIGltYWdlc3koJHBuZykpOwoKCQkkY29tcCA9IGltYWdlY3JlYXRldHJ1ZWNvbG9yKCR3aWR0aCwgJGhlaWdodCk7CgkJaW1hZ2Vjb3B5KCRjb21wLCAkaW0sIDAsIDAsIDAsIDAsICR3aWR0aCwgJGhlaWdodCk7CgkJaW1hZ2Vjb3B5KCRjb21wLCAkZmlsdGVyLCAwLCAwLCAwLCAwLCAkd2lkdGgsICRoZWlnaHQpOwoJCWltYWdlY29weW1lcmdlKCRpbSwgJGNvbXAsIDAsIDAsIDAsIDAsICR3aWR0aCwgJGhlaWdodCwgJGFtb3VudCk7CgoJCWltYWdlZGVzdHJveSgkY29tcCk7CgoJCXJldHVybiAkaW07Cgl9CgoKCS8qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSoqLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotCiAgQ29sb3Jpc2UKKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLwoKCXB1YmxpYyBmdW5jdGlvbiBpbWFnZV9jb2xvcml6ZSgkcmdiKQoJewoJCWltYWdlVHJ1ZUNvbG9yVG9QYWxldHRlKCR0aGlzLT5pbWFnZVJlc2l6ZWQsIHRydWUsIDI1Nik7CgkJJG51bUNvbG9ycyA9IGltYWdlQ29sb3JzVG90YWwoJHRoaXMtPmltYWdlUmVzaXplZCk7CgoJCWZvciAoJHggPSAwOyAkeCA8ICRudW1Db2xvcnM7ICR4KyspCgkJewoJCQlsaXN0KCRyLCAkZywgJGIpID0gYXJyYXlfdmFsdWVzKGltYWdlQ29sb3JzRm9ySW5kZXgoJHRoaXMtPmltYWdlUmVzaXplZCwgJHgpKTsKCgkJCS8vIGNhbGN1bGF0ZSBncmF5c2NhbGUgaW4gcGVyY2VudAoJCQkkZ3JheXNjYWxlID0gKCRyICsgJGcgKyAkYikgLyAzIC8gMHhmZjsKCgkJCWltYWdlQ29sb3JTZXQoJHRoaXMtPmltYWdlUmVzaXplZCwgJHgsCgkJCQkkZ3JheXNjYWxlICogJHJnYlswXSwKCQkJCSRncmF5c2NhbGUgKiAkcmdiWzFdLAoJCQkJJGdyYXlzY2FsZSAqICRyZ2JbMl0KCQkJKTsKCgkJfQoKCQlyZXR1cm4gdHJ1ZTsKCX0KCgoJLyotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKiotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0KICBSZWZsZWN0aW9uCiotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKiotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi8KCglwdWJsaWMgZnVuY3Rpb24gYWRkUmVmbGVjdGlvbigkcmVmbGVjdGlvbkhlaWdodCA9IDUwLCAkc3RhcnRpbmdUcmFuc3BhcmVuY3kgPSAzMCwgJGluc2lkZSA9IGZhbHNlLCAkYmdDb2xvciA9ICcjZmZmJywgJHN0cmV0Y2ggPSBmYWxzZSwgJGRpdmlkZXIgPSAwKQoJewoKCQkvLyAqKiogQ29udmVydCBjb2xvcgoJCSRyZ2JBcnJheSA9ICR0aGlzLT5mb3JtYXRDb2xvcigkYmdDb2xvcik7CgkJJHIgPSAkcmdiQXJyYXlbJ3InXTsKCQkkZyA9ICRyZ2JBcnJheVsnZyddOwoJCSRiID0gJHJnYkFycmF5WydiJ107CgoJCSRpbSA9ICR0aGlzLT5pbWFnZVJlc2l6ZWQ7CgkJJGxpID0gaW1hZ2VjcmVhdGV0cnVlY29sb3IoJHRoaXMtPndpZHRoLCAxKTsKCgkJJGJnYyA9IGltYWdlY29sb3JhbGxvY2F0ZSgkbGksICRyLCAkZywgJGIpOwoJCWltYWdlZmlsbGVkcmVjdGFuZ2xlKCRsaSwgMCwgMCwgJHRoaXMtPndpZHRoLCAxLCAkYmdjKTsKCgkJJGJnID0gaW1hZ2VjcmVhdGV0cnVlY29sb3IoJHRoaXMtPndpZHRoLCAkcmVmbGVjdGlvbkhlaWdodCk7CgkJJHdoID0gaW1hZ2Vjb2xvcmFsbG9jYXRlKCRpbSwgMjU1LCAyNTUsIDI1NSk7CgoJCSRpbSA9IGltYWdlcm90YXRlKCRpbSwgLTE4MCwgJHdoKTsKCQlpbWFnZWNvcHlyZXNhbXBsZWQoJGJnLCAkaW0sIDAsIDAsIDAsIDAsICR0aGlzLT53aWR0aCwgJHRoaXMtPmhlaWdodCwgJHRoaXMtPndpZHRoLCAkdGhpcy0+aGVpZ2h0KTsKCgkJJGltID0gJGJnOwoKCQkkYmcgPSBpbWFnZWNyZWF0ZXRydWVjb2xvcigkdGhpcy0+d2lkdGgsICRyZWZsZWN0aW9uSGVpZ2h0KTsKCgkJZm9yICgkeCA9IDA7ICR4IDwgJHRoaXMtPndpZHRoOyAkeCsrKQoJCXsKCQkJaW1hZ2Vjb3B5KCRiZywgJGltLCAkeCwgMCwgJHRoaXMtPndpZHRoIC0gJHggLSAxLCAwLCAxLCAkcmVmbGVjdGlvbkhlaWdodCk7CgkJfQoJCSRpbSA9ICRiZzsKCgkJJHRyYW5zYXByZW5jeUFtb3VudCA9ICR0aGlzLT5pbnZlcnRUcmFuc3BhcmVuY3koJHN0YXJ0aW5nVHJhbnNwYXJlbmN5LCAxMDApOwoKCgkJLy8gKioqIEZhZGUKCQlpZiAoJHN0cmV0Y2gpCgkJewoJCQkkc3RlcCA9IDEwMCAvICgkcmVmbGVjdGlvbkhlaWdodCArICRzdGFydGluZ1RyYW5zcGFyZW5jeSk7CgkJfQoJCWVsc2UKCQl7CgkJCSRzdGVwID0gMTAwIC8gJHJlZmxlY3Rpb25IZWlnaHQ7CgkJfQoJCWZvciAoJGkgPSAwOyAkaSA8PSAkcmVmbGVjdGlvbkhlaWdodDsgJGkrKykKCQl7CgoJCQlpZiAoJHN0YXJ0aW5nVHJhbnNwYXJlbmN5ID4gMTAwKQoJCQl7CgkJCQkkc3RhcnRpbmdUcmFuc3BhcmVuY3kgPSAxMDA7CgkJCX0KCQkJaWYgKCRzdGFydGluZ1RyYW5zcGFyZW5jeSA8IDEpCgkJCXsKCQkJCSRzdGFydGluZ1RyYW5zcGFyZW5jeSA9IDE7CgkJCX0KCQkJaW1hZ2Vjb3B5bWVyZ2UoJGJnLCAkbGksIDAsICRpLCAwLCAwLCAkdGhpcy0+d2lkdGgsIDEsICRzdGFydGluZ1RyYW5zcGFyZW5jeSk7CgkJCSRzdGFydGluZ1RyYW5zcGFyZW5jeSArPSAkc3RlcDsKCQl9CgoJCS8vICoqKiBBcHBseSBmYWRlCgkJaW1hZ2Vjb3B5bWVyZ2UoJGltLCAkbGksIDAsIDAsIDAsIDAsICR0aGlzLT53aWR0aCwgJGRpdmlkZXIsIDEwMCk7IC8vIERpdmlkZXIKCgoJCS8vICoqKiB3aWR0aCwgaGVpZ2h0IG9mIHJlZmxlY3Rpb24uCgkJJHggPSBpbWFnZXN4KCRpbSk7CgkJJHkgPSBpbWFnZXN5KCRpbSk7CgoKCQkvLyAqKiogRGV0ZXJtaW5lcyBpZiB0aGUgcmVmbGVjdGlvbiBzaG91bGQgYmUgZGlzcGxheWVkIGluc2lkZSBvciBvdXRzaWRlIHRoZSBpbWFnZQoJCWlmICgkaW5zaWRlKQoJCXsKCgkJCS8vIENyZWF0ZSBuZXcgYmxhbmsgaW1hZ2Ugd2l0aCBzaXplcy4KCQkJJGZpbmFsID0gaW1hZ2VjcmVhdGV0cnVlY29sb3IoJHRoaXMtPndpZHRoLCAkdGhpcy0+aGVpZ2h0KTsKCgkJCWltYWdlY29weW1lcmdlKCRmaW5hbCwgJHRoaXMtPmltYWdlUmVzaXplZCwgMCwgMCwgMCwgJHJlZmxlY3Rpb25IZWlnaHQsICR0aGlzLT53aWR0aCwgJHRoaXMtPmhlaWdodCAtICRyZWZsZWN0aW9uSGVpZ2h0LCAxMDApOwoJCQlpbWFnZWNvcHltZXJnZSgkZmluYWwsICRpbSwgMCwgJHRoaXMtPmhlaWdodCAtICRyZWZsZWN0aW9uSGVpZ2h0LCAwLCAwLCAkeCwgJHksIDEwMCk7CgoJCX0KCQllbHNlCgkJewoKCQkJLy8gQ3JlYXRlIG5ldyBibGFuayBpbWFnZSB3aXRoIHNpemVzLgoJCQkkZmluYWwgPSBpbWFnZWNyZWF0ZXRydWVjb2xvcigkdGhpcy0+d2lkdGgsICR0aGlzLT5oZWlnaHQgKyAkeSk7CgoJCQlpbWFnZWNvcHltZXJnZSgkZmluYWwsICR0aGlzLT5pbWFnZVJlc2l6ZWQsIDAsIDAsIDAsIDAsICR0aGlzLT53aWR0aCwgJHRoaXMtPmhlaWdodCwgMTAwKTsKCQkJaW1hZ2Vjb3B5bWVyZ2UoJGZpbmFsLCAkaW0sIDAsICR0aGlzLT5oZWlnaHQsIDAsIDAsICR4LCAkeSwgMTAwKTsKCQl9CgoJCSR0aGlzLT5pbWFnZVJlc2l6ZWQgPSAkZmluYWw7CgoJCWltYWdlZGVzdHJveSgkbGkpOwoJCWltYWdlZGVzdHJveSgkaW0pOwoJfQoKCgkvKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLQogIFJvdGF0ZQoqLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSoqLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSovCgoJcHVibGljIGZ1bmN0aW9uIHJvdGF0ZSgkdmFsdWUgPSA5MCwgJGJnQ29sb3IgPSAndHJhbnNwYXJlbnQnKQoJCSMgQXV0aG9yOiAgICAgSmFycm9kIE9iZXJ0bwoJCSMgRGF0ZTogICAgICAgMDctMDUtMjAxMQoJCSMgUHVycG9zZTogICAgUm90YXRlIGltYWdlCgkJIyBQYXJhbSBpbjogICAobWl4ZWQpICRkZWdyZWVzOiAoaW50KSBudW1iZXIgb2YgZGVncmVzcyB0byByb3RhdGUgaW1hZ2UKCQkjICAgICAgICAgICAgICAgKHN0cikgcGFyYW0gImxlZnQiOiByb3RhdGUgbGVmdAoJCSMgICAgICAgICAgICAgICAoc3RyKSBwYXJhbSAicmlnaHQiOiByb3RhdGUgcmlnaHQKCQkjICAgICAgICAgICAgICAgKHN0cikgcGFyYW0gInVwc2lkZSI6IHVwc2lkZS1kb3duIGltYWdlCgkJIyBQYXJhbSBvdXQ6CgkJIyBSZWZlcmVuY2U6CgkJIyBOb3RlczogICAgVGhlIGRlZmF1bHQgZGlyZWN0aW9uIG9mIGltYWdlUm90YXRlKCkgaXMgY291bnRlciBjbG9ja3dpc2UuCgkJIwoJewoJCWlmICgkdGhpcy0+aW1hZ2VSZXNpemVkKQoJCXsKCgkJCWlmIChpc19pbnRlZ2VyKCR2YWx1ZSkpCgkJCXsKCQkJCSRkZWdyZWVzID0gJHZhbHVlOwoJCQl9CgoJCQkvLyAqKiogQ29udmVydCBjb2xvcgoJCQkkcmdiQXJyYXkgPSAkdGhpcy0+Zm9ybWF0Q29sb3IoJGJnQ29sb3IpOwoJCQkkciA9ICRyZ2JBcnJheVsnciddOwoJCQkkZyA9ICRyZ2JBcnJheVsnZyddOwoJCQkkYiA9ICRyZ2JBcnJheVsnYiddOwoJCQlpZiAoaXNzZXQoJHJnYkFycmF5WydhJ10pKQoJCQl7CgkJCQkkYSA9ICRyZ2JBcnJheVsnYSddOwoJCQl9CgoJCQlpZiAoaXNfc3RyaW5nKCR2YWx1ZSkpCgkJCXsKCgkJCQkkdmFsdWUgPSBmaXhfc3RydG9sb3dlcigkdmFsdWUpOwoKCQkJCXN3aXRjaCAoJHZhbHVlKQoJCQkJewoJCQkJCWNhc2UgJ2xlZnQnOgoJCQkJCQkkZGVncmVlcyA9IDkwOwoJCQkJCQlicmVhazsKCQkJCQljYXNlICdyaWdodCc6CgkJCQkJCSRkZWdyZWVzID0gMjcwOwoJCQkJCQlicmVhazsKCQkJCQljYXNlICd1cHNpZGUnOgoJCQkJCQkkZGVncmVlcyA9IDE4MDsKCQkJCQkJYnJlYWs7CgkJCQkJZGVmYXVsdDoKCQkJCQkJYnJlYWs7CgkJCQl9CgoJCQl9CgoJCQkvLyAqKiogVGhlIGRlZmF1bHQgZGlyZWN0aW9uIG9mIGltYWdlUm90YXRlKCkgaXMgY291bnRlciBjbG9ja3dpc2UKCQkJLy8gICAqIFRoaXMgbWFrZXMgaXQgY2xvY2t3aXNlCgkJCSRkZWdyZWVzID0gMzYwIC0gJGRlZ3JlZXM7CgoJCQkvLyAqKiogQ3JlYXRlIGJhY2tncm91bmQgY29sb3IKCQkJJGJnID0gSW1hZ2VDb2xvckFsbG9jYXRlQWxwaGEoJHRoaXMtPmltYWdlUmVzaXplZCwgJHIsICRnLCAkYiwgJGEpOwoKCQkJLy8gKioqIEZpbGwgd2l0aCBiYWNrZ3JvdW5kCgkJCUltYWdlRmlsbCgkdGhpcy0+aW1hZ2VSZXNpemVkLCAwLCAwLCAkYmcpOwoKCQkJLy8gKioqIFJvdGF0ZQoJCQkkdGhpcy0+aW1hZ2VSZXNpemVkID0gaW1hZ2Vyb3RhdGUoJHRoaXMtPmltYWdlUmVzaXplZCwgJGRlZ3JlZXMsICRiZyk7IC8vIFJvdGF0ZSA0NSBkZWdyZWVzIGFuZCBhbGxvY2F0ZWQgdGhlIHRyYW5zcGFyZW50IGNvbG91ciBhcyB0aGUgb25lIHRvIG1ha2UgdHJhbnNwYXJlbnQgKG9idmlvdXNseSkKCgkJCS8vIEVuc3VyZSBhbHBoYSB0cmFuc3BhcmVuY3kKCQkJSW1hZ2VTYXZlQWxwaGEoJHRoaXMtPmltYWdlUmVzaXplZCwgdHJ1ZSk7CgoJCX0KCX0KCgoJLyotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKiotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0KICBSb3VuZCBjb3JuZXJzCiotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKiotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi8KCglwdWJsaWMgZnVuY3Rpb24gcm91bmRDb3JuZXJzKCRyYWRpdXMgPSA1LCAkYmdDb2xvciA9ICd0cmFuc3BhcmVudCcpCgkJIyBBdXRob3I6ICAgICBKYXJyb2QgT2JlcnRvCgkJIyBEYXRlOiAgICAgICAxOS0wNS0yMDExCgkJIyBQdXJwb3NlOiAgICBDcmVhdGUgcm91bmRlZCBjb3JuZXJzIG9uIHlvdXIgaW1hZ2UKCQkjIFBhcmFtIGluOiAgIChpbnQpIHJhZGl1cyA9IHRoZSBhbW91bnQgb2YgY3VydmF0dXJlCgkJIyAgICAgICAobWl4ZWQpICRiZ0NvbG9yID0gdGhlIGNvcm5lciBiYWNrZ3JvdW5kIGNvbG9yCgkJIyBQYXJhbSBvdXQ6ICBuL2EKCQkjIFJlZmVyZW5jZToKCQkjIE5vdGVzOgoJCSMKCXsKCgkJLy8gKioqIENoZWNrIGlmIHRoZSB1c2VyIHdhbnRzIHRyYW5zcGFyZW5jeQoJCSRpc1RyYW5zcGFyZW50ID0gZmFsc2U7CgkJaWYgKCAhIGlzX2FycmF5KCRiZ0NvbG9yKSkKCQl7CgkJCWlmIChmaXhfc3RydG9sb3dlcigkYmdDb2xvcikgPT0gJ3RyYW5zcGFyZW50JykKCQkJewoJCQkJJGlzVHJhbnNwYXJlbnQgPSB0cnVlOwoJCQl9CgkJfQoKCgkJLy8gKioqIElmIHdlIHVzZSB0cmFuc3BhcmVuY3ksIHdlIG5lZWQgdG8gY29sb3Igb3VyIGN1cnZlZCBtYXNrIHdpdGggYSB1bmlxdWUgY29sb3IKCQlpZiAoJGlzVHJhbnNwYXJlbnQpCgkJewoJCQkkYmdDb2xvciA9ICR0aGlzLT5maW5kVW51c2VkR3JlZW4oKTsKCQl9CgoJCS8vICoqKiBDb252ZXJ0IGNvbG9yCgkJJHJnYkFycmF5ID0gJHRoaXMtPmZvcm1hdENvbG9yKCRiZ0NvbG9yKTsKCQkkciA9ICRyZ2JBcnJheVsnciddOwoJCSRnID0gJHJnYkFycmF5WydnJ107CgkJJGIgPSAkcmdiQXJyYXlbJ2InXTsKCQlpZiAoaXNzZXQoJHJnYkFycmF5WydhJ10pKQoJCXsKCQkJJGEgPSAkcmdiQXJyYXlbJ2EnXTsKCQl9CgoKCQkvLyAqKiogQ3JlYXRlIHRvcC1sZWZ0IGNvcm5lciBtYXNrIChzcXVhcmUpCgkJJGNvcm5lckltZyA9IGltYWdlY3JlYXRldHJ1ZWNvbG9yKCRyYWRpdXMsICRyYWRpdXMpOwoJCS8vJGNvcm5lckltZyA9IGltYWdlY3JlYXRlKCRyYWRpdXMsICRyYWRpdXMpOwoKCQkvL2ltYWdlYWxwaGFibGVuZGluZygkY29ybmVySW1nLCB0cnVlKTsKCQkvL2ltYWdlc2F2ZWFscGhhKCRjb3JuZXJJbWcsIHRydWUpOwoKCQkvL2ltYWdlYWxwaGFibGVuZGluZygkdGhpcy0+aW1hZ2VSZXNpemVkLCBmYWxzZSk7CgkJLy9pbWFnZXNhdmVhbHBoYSgkdGhpcy0+aW1hZ2VSZXNpemVkLCB0cnVlKTsKCgkJLy8gKioqIEdpdmUgaXQgYSBjb2xvcgoJCSRtYXNrQ29sb3IgPSBpbWFnZWNvbG9yYWxsb2NhdGUoJGNvcm5lckltZywgMCwgMCwgMCk7CgoKCQkvLyAqKiogUmVwbGFjZSB0aGUgbWFzayBjb2xvciAoYmxhY2spIHRvIHRyYW5zcGFyZW50CgkJaW1hZ2Vjb2xvcnRyYW5zcGFyZW50KCRjb3JuZXJJbWcsICRtYXNrQ29sb3IpOwoKCgkJLy8gKioqIENyZWF0ZSB0aGUgaW1hZ2UgYmFja2dyb3VuZCBjb2xvcgoJCSRpbWFnZWJnQ29sb3IgPSBpbWFnZWNvbG9yYWxsb2NhdGUoJGNvcm5lckltZywgJHIsICRnLCAkYik7CgoKCQkvLyAqKiogRmlsbCB0aGUgY29ybmVyIGFyZWEgdG8gdGhlIHVzZXIgZGVmaW5lZCBjb2xvcgoJCWltYWdlZmlsbCgkY29ybmVySW1nLCAwLCAwLCAkaW1hZ2ViZ0NvbG9yKTsKCgoJCWltYWdlZmlsbGVkZWxsaXBzZSgkY29ybmVySW1nLCAkcmFkaXVzLCAkcmFkaXVzLCAkcmFkaXVzICogMiwgJHJhZGl1cyAqIDIsICRtYXNrQ29sb3IpOwoKCgkJLy8gKioqIE1hcCB0byB0b3AgbGVmdCBjb3JuZXIKCQlpbWFnZWNvcHltZXJnZSgkdGhpcy0+aW1hZ2VSZXNpemVkLCAkY29ybmVySW1nLCAwLCAwLCAwLCAwLCAkcmFkaXVzLCAkcmFkaXVzLCAxMDApOyAjdGwKCgkJLy8gKioqIE1hcCByb3VuZGVkIGNvcm5lciB0byBvdGhlciBjb3JuZXJzIGJ5IHJvdGF0aW5nIGFuZCBhcHBseWluZyB0aGUgbWFzawoJCSRjb3JuZXJJbWcgPSBpbWFnZXJvdGF0ZSgkY29ybmVySW1nLCA5MCwgMCk7CgkJaW1hZ2Vjb3B5bWVyZ2UoJHRoaXMtPmltYWdlUmVzaXplZCwgJGNvcm5lckltZywgMCwgJHRoaXMtPmhlaWdodCAtICRyYWRpdXMsIDAsIDAsICRyYWRpdXMsICRyYWRpdXMsIDEwMCk7ICNibAoKCQkkY29ybmVySW1nID0gaW1hZ2Vyb3RhdGUoJGNvcm5lckltZywgOTAsIDApOwoJCWltYWdlY29weW1lcmdlKCR0aGlzLT5pbWFnZVJlc2l6ZWQsICRjb3JuZXJJbWcsICR0aGlzLT53aWR0aCAtICRyYWRpdXMsICR0aGlzLT5oZWlnaHQgLSAkcmFkaXVzLCAwLCAwLCAkcmFkaXVzLCAkcmFkaXVzLCAxMDApOyAjYnIKCgkJJGNvcm5lckltZyA9IGltYWdlcm90YXRlKCRjb3JuZXJJbWcsIDkwLCAwKTsKCQlpbWFnZWNvcHltZXJnZSgkdGhpcy0+aW1hZ2VSZXNpemVkLCAkY29ybmVySW1nLCAkdGhpcy0+d2lkdGggLSAkcmFkaXVzLCAwLCAwLCAwLCAkcmFkaXVzLCAkcmFkaXVzLCAxMDApOyAjdHIKCgoJCS8vICoqKiBJZiBjb3JuZXJzIGFyZSB0byBiZSB0cmFuc3BhcmVudCwgd2UgZmlsbCBvdXIgY2hyb21ha2V5IGNvbG9yIGFzIHRyYW5zcGFyZW50LgoJCWlmICgkaXNUcmFuc3BhcmVudCkKCQl7CgkJCS8vaW1hZ2Vjb2xvcnRyYW5zcGFyZW50KCR0aGlzLT5pbWFnZVJlc2l6ZWQsICRpbWFnZWJnQ29sb3IpOwoJCQkkdGhpcy0+aW1hZ2VSZXNpemVkID0gJHRoaXMtPnRyYW5zcGFyZW50SW1hZ2UoJHRoaXMtPmltYWdlUmVzaXplZCk7CgkJCWltYWdlc2F2ZWFscGhhKCR0aGlzLT5pbWFnZVJlc2l6ZWQsIHRydWUpOwoJCX0KCgl9CgoKCS8qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSoqLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotCiAgU2hhZG93CiotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKiotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi8KCglwdWJsaWMgZnVuY3Rpb24gYWRkU2hhZG93KCRzaGFkb3dBbmdsZSA9IDQ1LCAkYmx1ciA9IDE1LCAkYmdDb2xvciA9ICd0cmFuc3BhcmVudCcpCgkJIwoJCSMgQXV0aG9yOiAgIEphcnJvZCBPYmVydG8gKEFkYXB0ZWQgZnJvbSBQYXNjYWwgTmFpZG9uKQoJCSMgUmVmOiAgICBodHRwOi8vd3d3Lmxlcy1zdG9vZ2VzLm9yZy9wYXNjYWwvd2ViZGVzaWduL3ZpZ25ldHRlcy9pbmRleC5waHA/bGE9ZW4KCQkjIFB1cnBvc2U6ICBBZGQgYSBkcm9wIHNoYWRvdyB0byB5b3VyIGltYWdlCgkJIyBQYXJhbXMgaW46ICAoaW50KSAkYW5nbGU6IHRoZSBhbmdsZSBvZiB0aGUgc2hhZG93CgkJIyAgICAgICAoaW50KSAkYmx1cjogdGhlIGJsdXIgZGlzdGFuY2UKCQkjICAgICAgIChtaXhlZCkgJGJnQ29sb3I6IHRoZSBjb2xvciBvZiB0aGUgYmFja2dyb3VuZAoJCSMgUGFyYW1zIG91dDoKCQkjIE5vdGVzOgoJCSMKCXsKCQkvLyAqKiogQSBoaWdoZXIgbnVtYmVyIHJlc3VsdHMgaW4gYSBzbW9vdGhlciBzaGFkb3cKCQlkZWZpbmUoJ1NURVBTJywgJGJsdXIgKiAyKTsKCgkJLy8gKioqIFNldCB0aGUgc2hhZG93IGRpc3RhbmNlCgkJJHNoYWRvd0Rpc3RhbmNlID0gJGJsdXIgKiAwLjI1OwoKCQkvLyAqKiogU2V0IGJsdXIgd2lkdGggYW5kIGhlaWdodAoJCSRibHVyV2lkdGggPSAkYmx1ckhlaWdodCA9ICRibHVyOwoKCgkJaWYgKCRzaGFkb3dBbmdsZSA9PSAwKQoJCXsKCQkJJGRpc3RXaWR0aCA9IDA7CgkJCSRkaXN0SGVpZ2h0ID0gMDsKCQl9CgkJZWxzZQoJCXsKCQkJJGRpc3RXaWR0aCA9ICRzaGFkb3dEaXN0YW5jZSAqIGNvcyhkZWcycmFkKCRzaGFkb3dBbmdsZSkpOwoJCQkkZGlzdEhlaWdodCA9ICRzaGFkb3dEaXN0YW5jZSAqIHNpbihkZWcycmFkKCRzaGFkb3dBbmdsZSkpOwoJCX0KCgoJCS8vICoqKiBDb252ZXJ0IGNvbG9yCgkJaWYgKGZpeF9zdHJ0b2xvd2VyKCRiZ0NvbG9yKSAhPSAndHJhbnNwYXJlbnQnKQoJCXsKCQkJJHJnYkFycmF5ID0gJHRoaXMtPmZvcm1hdENvbG9yKCRiZ0NvbG9yKTsKCQkJJHIwID0gJHJnYkFycmF5WydyJ107CgkJCSRnMCA9ICRyZ2JBcnJheVsnZyddOwoJCQkkYjAgPSAkcmdiQXJyYXlbJ2InXTsKCQl9CgoKCQkkaW1hZ2UgPSAkdGhpcy0+aW1hZ2VSZXNpemVkOwoJCSR3aWR0aCA9ICR0aGlzLT53aWR0aDsKCQkkaGVpZ2h0ID0gJHRoaXMtPmhlaWdodDsKCgoJCSRuZXdJbWFnZSA9IGltYWdlY3JlYXRldHJ1ZWNvbG9yKCR3aWR0aCwgJGhlaWdodCk7CgkJaW1hZ2Vjb3B5cmVzYW1wbGVkKCRuZXdJbWFnZSwgJGltYWdlLCAwLCAwLCAwLCAwLCAkd2lkdGgsICRoZWlnaHQsICR3aWR0aCwgJGhlaWdodCk7CgoKCQkvLyAqKiogUkdCCgkJJHJnYiA9IGltYWdlY3JlYXRldHJ1ZWNvbG9yKCR3aWR0aCArICRibHVyV2lkdGgsICRoZWlnaHQgKyAkYmx1ckhlaWdodCk7CgkJJGNvbG91ciA9IGltYWdlY29sb3JhbGxvY2F0ZSgkcmdiLCAwLCAwLCAwKTsKCQlpbWFnZWZpbGxlZHJlY3RhbmdsZSgkcmdiLCAwLCAwLCAkd2lkdGggKyAkYmx1cldpZHRoLCAkaGVpZ2h0ICsgJGJsdXJIZWlnaHQsICRjb2xvdXIpOwoJCSRjb2xvdXIgPSBpbWFnZWNvbG9yYWxsb2NhdGUoJHJnYiwgMjU1LCAyNTUsIDI1NSk7CgkJLy9pbWFnZWZpbGxlZHJlY3RhbmdsZSgkcmdiLCAkYmx1cldpZHRoKjAuNS0kZGlzdFdpZHRoLCAkYmx1ckhlaWdodCowLjUtJGRpc3RIZWlnaHQsICR3aWR0aCskYmx1cldpZHRoKjAuNS0kZGlzdFdpZHRoLCAkaGVpZ2h0KyRibHVyV2lkdGgqMC41LSRkaXN0SGVpZ2h0LCAkY29sb3VyKTsKCQlpbWFnZWZpbGxlZHJlY3RhbmdsZSgkcmdiLCAkYmx1cldpZHRoICogMC41IC0gJGRpc3RXaWR0aCwgJGJsdXJIZWlnaHQgKiAwLjUgLSAkZGlzdEhlaWdodCwgJHdpZHRoICsgJGJsdXJXaWR0aCAqIDAuNSAtICRkaXN0V2lkdGgsICRoZWlnaHQgKyAkYmx1cldpZHRoICogMC41IC0gJGRpc3RIZWlnaHQsICRjb2xvdXIpOwoJCS8vaW1hZ2Vjb3B5bWVyZ2UoJHJnYiwgJG5ld0ltYWdlLCAxKyRibHVyV2lkdGgqMC41LSRkaXN0V2lkdGgsIDErJGJsdXJIZWlnaHQqMC41LSRkaXN0SGVpZ2h0LCAwLDAsICR3aWR0aCwgJGhlaWdodCwgMTAwKTsKCQlpbWFnZWNvcHltZXJnZSgkcmdiLCAkbmV3SW1hZ2UsICRibHVyV2lkdGggKiAwLjUgLSAkZGlzdFdpZHRoLCAkYmx1ckhlaWdodCAqIDAuNSAtICRkaXN0SGVpZ2h0LCAwLCAwLCAkd2lkdGggKyAkYmx1cldpZHRoLCAkaGVpZ2h0ICsgJGJsdXJIZWlnaHQsIDEwMCk7CgoKCQkvLyAqKiogU2hhZG93IChhbHBoYSkKCQkkc2hhZG93ID0gaW1hZ2VjcmVhdGV0cnVlY29sb3IoJHdpZHRoICsgJGJsdXJXaWR0aCwgJGhlaWdodCArICRibHVySGVpZ2h0KTsKCQlpbWFnZWFscGhhYmxlbmRpbmcoJHNoYWRvdywgZmFsc2UpOwoJCSRjb2xvdXIgPSBpbWFnZWNvbG9yYWxsb2NhdGUoJHNoYWRvdywgMCwgMCwgMCk7CgkJaW1hZ2VmaWxsZWRyZWN0YW5nbGUoJHNoYWRvdywgMCwgMCwgJHdpZHRoICsgJGJsdXJXaWR0aCwgJGhlaWdodCArICRibHVySGVpZ2h0LCAkY29sb3VyKTsKCgoJCWZvciAoJGkgPSAwOyAkaSA8PSBTVEVQUzsgJGkrKykKCQl7CgoJCQkkdCA9ICgoMS4wICogJGkpIC8gU1RFUFMpOwoJCQkkaW50ZW5zaXR5ID0gMjU1ICogJHQgKiAkdDsKCgkJCSRjb2xvdXIgPSBpbWFnZWNvbG9yYWxsb2NhdGUoJHNoYWRvdywgJGludGVuc2l0eSwgJGludGVuc2l0eSwgJGludGVuc2l0eSk7CgkJCSRwb2ludHMgPSBhcnJheSgKCQkJCSRibHVyV2lkdGggKiAkdCwgJGJsdXJIZWlnaHQsICAgICAvLyBQb2ludCAxICh4LCB5KQoJCQkJJGJsdXJXaWR0aCwgJGJsdXJIZWlnaHQgKiAkdCwgIC8vIFBvaW50IDIgKHgsIHkpCgkJCQkkd2lkdGgsICRibHVySGVpZ2h0ICogJHQsICAvLyBQb2ludCAzICh4LCB5KQoJCQkJJHdpZHRoICsgJGJsdXJXaWR0aCAqICgxIC0gJHQpLCAkYmx1ckhlaWdodCwgICAgIC8vIFBvaW50IDQgKHgsIHkpCgkJCQkkd2lkdGggKyAkYmx1cldpZHRoICogKDEgLSAkdCksICRoZWlnaHQsICAgICAvLyBQb2ludCA1ICh4LCB5KQoJCQkJJHdpZHRoLCAkaGVpZ2h0ICsgJGJsdXJIZWlnaHQgKiAoMSAtICR0KSwgIC8vIFBvaW50IDYgKHgsIHkpCgkJCQkkYmx1cldpZHRoLCAkaGVpZ2h0ICsgJGJsdXJIZWlnaHQgKiAoMSAtICR0KSwgIC8vIFBvaW50IDcgKHgsIHkpCgkJCQkkYmx1cldpZHRoICogJHQsICRoZWlnaHQgICAgICAvLyBQb2ludCA4ICh4LCB5KQoJCQkpOwoJCQlpbWFnZXBvbHlnb24oJHNoYWRvdywgJHBvaW50cywgOCwgJGNvbG91cik7CgkJfQoKCQlmb3IgKCRpID0gMDsgJGkgPD0gU1RFUFM7ICRpKyspCgkJewoKCQkJJHQgPSAoKDEuMCAqICRpKSAvIFNURVBTKTsKCQkJJGludGVuc2l0eSA9IDI1NSAqICR0ICogJHQ7CgoJCQkkY29sb3VyID0gaW1hZ2Vjb2xvcmFsbG9jYXRlKCRzaGFkb3csICRpbnRlbnNpdHksICRpbnRlbnNpdHksICRpbnRlbnNpdHkpOwoJCQlpbWFnZWZpbGxlZGFyYygkc2hhZG93LCAkYmx1cldpZHRoIC0gMSwgJGJsdXJIZWlnaHQgLSAxLCAyICogKDEgLSAkdCkgKiAkYmx1cldpZHRoLCAyICogKDEgLSAkdCkgKiAkYmx1ckhlaWdodCwgMTgwLCAyNjgsICRjb2xvdXIsIElNR19BUkNfUElFKTsKCQkJaW1hZ2VmaWxsZWRhcmMoJHNoYWRvdywgJHdpZHRoLCAkYmx1ckhlaWdodCAtIDEsIDIgKiAoMSAtICR0KSAqICRibHVyV2lkdGgsIDIgKiAoMSAtICR0KSAqICRibHVySGVpZ2h0LCAyNzAsIDM1OCwgJGNvbG91ciwgSU1HX0FSQ19QSUUpOwoJCQlpbWFnZWZpbGxlZGFyYygkc2hhZG93LCAkd2lkdGgsICRoZWlnaHQsIDIgKiAoMSAtICR0KSAqICRibHVyV2lkdGgsIDIgKiAoMSAtICR0KSAqICRibHVySGVpZ2h0LCAwLCA5MCwgJGNvbG91ciwgSU1HX0FSQ19QSUUpOwoJCQlpbWFnZWZpbGxlZGFyYygkc2hhZG93LCAkYmx1cldpZHRoIC0gMSwgJGhlaWdodCwgMiAqICgxIC0gJHQpICogJGJsdXJXaWR0aCwgMiAqICgxIC0gJHQpICogJGJsdXJIZWlnaHQsIDkwLCAxODAsICRjb2xvdXIsIElNR19BUkNfUElFKTsKCQl9CgoKCQkkY29sb3VyID0gaW1hZ2Vjb2xvcmFsbG9jYXRlKCRzaGFkb3csIDI1NSwgMjU1LCAyNTUpOwoJCWltYWdlZmlsbGVkcmVjdGFuZ2xlKCRzaGFkb3csICRibHVyV2lkdGgsICRibHVySGVpZ2h0LCAkd2lkdGgsICRoZWlnaHQsICRjb2xvdXIpOwoJCWltYWdlZmlsbGVkcmVjdGFuZ2xlKCRzaGFkb3csICRibHVyV2lkdGggKiAwLjUgLSAkZGlzdFdpZHRoLCAkYmx1ckhlaWdodCAqIDAuNSAtICRkaXN0SGVpZ2h0LCAkd2lkdGggKyAkYmx1cldpZHRoICogMC41IC0gMSAtICRkaXN0V2lkdGgsICRoZWlnaHQgKyAkYmx1ckhlaWdodCAqIDAuNSAtIDEgLSAkZGlzdEhlaWdodCwgJGNvbG91cik7CgoKCQkvLyAqKiogVGhlIG1hZ2ljCgkJaW1hZ2VhbHBoYWJsZW5kaW5nKCRyZ2IsIGZhbHNlKTsKCgkJZm9yICgkdGhlWCA9IDA7ICR0aGVYIDwgaW1hZ2VzeCgkcmdiKTsgJHRoZVgrKykKCQl7CgkJCWZvciAoJHRoZVkgPSAwOyAkdGhlWSA8IGltYWdlc3koJHJnYik7ICR0aGVZKyspCgkJCXsKCgkJCQkvLyAqKiogR2V0IHRoZSBSR0IgdmFsdWVzIGZvciBldmVyeSBwaXhlbCBvZiB0aGUgUkdCIGltYWdlCgkJCQkkY29sQXJyYXkgPSBpbWFnZWNvbG9yYXQoJHJnYiwgJHRoZVgsICR0aGVZKTsKCQkJCSRyID0gKCRjb2xBcnJheSA+PiAxNikgJiAweEZGOwoJCQkJJGcgPSAoJGNvbEFycmF5ID4+IDgpICYgMHhGRjsKCQkJCSRiID0gJGNvbEFycmF5ICYgMHhGRjsKCgkJCQkvLyAqKiogR2V0IHRoZSBhbHBoYSB2YWx1ZSBmb3IgZXZlcnkgcGl4ZWwgb2YgdGhlIHNoYWRvdyBpbWFnZQoJCQkJJGNvbEFycmF5ID0gaW1hZ2Vjb2xvcmF0KCRzaGFkb3csICR0aGVYLCAkdGhlWSk7CgkJCQkkYSA9ICRjb2xBcnJheSAmIDB4RkY7CgkJCQkkYSA9IDEyNyAtIGZsb29yKCRhIC8gMik7CgkJCQkkdCA9ICRhIC8gMTI4LjA7CgoJCQkJLy8gKioqIENyZWF0ZSBjb2xvcgoJCQkJaWYgKGZpeF9zdHJ0b2xvd2VyKCRiZ0NvbG9yKSA9PSAndHJhbnNwYXJlbnQnKQoJCQkJewoJCQkJCSRteUNvbG91ciA9IGltYWdlY29sb3JhbGxvY2F0ZWFscGhhKCRyZ2IsICRyLCAkZywgJGIsICRhKTsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQkkbXlDb2xvdXIgPSBpbWFnZWNvbG9yYWxsb2NhdGUoJHJnYiwgJHIgKiAoMS4wIC0gJHQpICsgJHIwICogJHQsICRnICogKDEuMCAtICR0KSArICRnMCAqICR0LCAkYiAqICgxLjAgLSAkdCkgKyAkYjAgKiAkdCk7CgkJCQl9CgoJCQkJLy8gKioqIEFkZCBjb2xvciB0byBuZXcgcmdiIGltYWdlCgkJCQlpbWFnZXNldHBpeGVsKCRyZ2IsICR0aGVYLCAkdGhlWSwgJG15Q29sb3VyKTsKCQkJfQoJCX0KCgkJaW1hZ2VhbHBoYWJsZW5kaW5nKCRyZ2IsIHRydWUpOwoJCWltYWdlc2F2ZWFscGhhKCRyZ2IsIHRydWUpOwoKCQkkdGhpcy0+aW1hZ2VSZXNpemVkID0gJHJnYjsKCgkJaW1hZ2VkZXN0cm95KCRpbWFnZSk7CgkJaW1hZ2VkZXN0cm95KCRuZXdJbWFnZSk7CgkJaW1hZ2VkZXN0cm95KCRzaGFkb3cpOwoJfQoKCgkvKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLQogIEFkZCBDYXB0aW9uIEJveAoqLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSoqLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSovCgoJcHVibGljIGZ1bmN0aW9uIGFkZENhcHRpb25Cb3goJHNpZGUgPSAnYicsICR0aGlja25lc3MgPSA1MCwgJHBhZGRpbmcgPSAwLCAkYmdDb2xvciA9ICcjMDAwJywgJHRyYW5zYXByZW5jeUFtb3VudCA9IDMwKQoJCSMKCQkjIEF1dGhvcjogICBKYXJyb2QgT2JlcnRvCgkJIyBEYXRlOiAgIDI2IE1heSAyMDExCgkJIyBQdXJwb3NlOiAgQWRkIGEgY2FwdGlvbiBib3gKCQkjIFBhcmFtcyBpbjogIChzdHIpICRzaWRlOiB0aGUgc2lkZSB0byBhZGQgdGhlIGNhcHRpb24gYm94ICh0LCByLCBiLCBvciBsKS4KCQkjICAgICAgIChpbnQpICR0aGlja25lc3M6IGhvdyB0aGljayB5b3Ugd2FudCB0aGUgY2FwdGlvbiBib3ggdG8gYmUuCgkJIyAgICAgICAobWl4ZWQpICRiZ0NvbG9yOiBUaGUgY29sb3Igb2YgdGhlIGNhcHRpb24gYm94LgoJCSMgICAgICAgKGludCkgJHRyYW5zYXByZW5jeUFtb3VudDogVGhlIGFtb3VudCBvZiB0cmFuc3BhcmVuY3kgdG8gYmUKCQkjICAgICAgIGFwcGxpZWQuCgkJIyBQYXJhbXMgb3V0OiBuL2EKCQkjIE5vdGVzOgoJCSMKCXsKCQkkc2lkZSA9IGZpeF9zdHJ0b2xvd2VyKCRzaWRlKTsKCgkJLy8gKioqIENvbnZlcnQgY29sb3IKCQkkcmdiQXJyYXkgPSAkdGhpcy0+Zm9ybWF0Q29sb3IoJGJnQ29sb3IpOwoJCSRyID0gJHJnYkFycmF5WydyJ107CgkJJGcgPSAkcmdiQXJyYXlbJ2cnXTsKCQkkYiA9ICRyZ2JBcnJheVsnYiddOwoKCQkkcG9zaXRpb25BcnJheSA9ICR0aGlzLT5jYWxjdWxhdGVDYXB0aW9uQm94UG9zaXRpb24oJHNpZGUsICR0aGlja25lc3MsICRwYWRkaW5nKTsKCgkJLy8gKioqIFN0b3JlIGluY2FzZSB3ZSB3YW50IHRvIHVzZSBtZXRob2QgYWRkVGV4dFRvQ2FwdGlvbkJveCgpCgkJJHRoaXMtPmNhcHRpb25Cb3hQb3NpdGlvbkFycmF5ID0gJHBvc2l0aW9uQXJyYXk7CgoKCQkkdHJhbnNhcHJlbmN5QW1vdW50ID0gJHRoaXMtPmludmVydFRyYW5zcGFyZW5jeSgkdHJhbnNhcHJlbmN5QW1vdW50LCAxMjcsIGZhbHNlKTsKCQkkdHJhbnNwYXJlbnQgPSBpbWFnZWNvbG9yYWxsb2NhdGVhbHBoYSgkdGhpcy0+aW1hZ2VSZXNpemVkLCAkciwgJGcsICRiLCAkdHJhbnNhcHJlbmN5QW1vdW50KTsKCQlpbWFnZWZpbGxlZHJlY3RhbmdsZSgkdGhpcy0+aW1hZ2VSZXNpemVkLCAkcG9zaXRpb25BcnJheVsneDEnXSwgJHBvc2l0aW9uQXJyYXlbJ3kxJ10sICRwb3NpdGlvbkFycmF5Wyd4MiddLCAkcG9zaXRpb25BcnJheVsneTInXSwgJHRyYW5zcGFyZW50KTsKCX0KCgkjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCXB1YmxpYyBmdW5jdGlvbiBhZGRUZXh0VG9DYXB0aW9uQm94KCR0ZXh0LCAkZm9udENvbG9yID0gJyNmZmYnLCAkZm9udFNpemUgPSAxMiwgJGFuZ2xlID0gMCwgJGZvbnQgPSBudWxsKQoJCSMKCQkjIEF1dGhvcjogICBKYXJyb2QgT2JlcnRvCgkJIyBEYXRlOiAgIDAzIEF1ZyAxMQoJCSMgUHVycG9zZTogIFNpbXBsaWZ5IGFkZGluZyB0ZXh0IHRvIGEgY2FwdGlvbiBib3ggYnkgYXV0b21hdGljYWxseQoJCSMgICAgICAgbG9jYXRpbmcgdGhlIGNlbnRlciBvZiB0aGUgY2FwdGlvbiBib3gKCQkjIFBhcmFtcyBpbjogIFRoZSB1c3VhbGx5IHRleHQgcGFhbXMgKGxlc3MgYSBjb3VwbGUpCgkJIyBQYXJhbXMgb3V0OiBuL2EKCQkjIE5vdGVzOgoJCSMKCXsKCgkJLy8gKioqIEdldCB0aGUgY2FwdGlvbiBib3ggbWVhc3VyZW1lbnRzCgkJaWYgKGNvdW50KCR0aGlzLT5jYXB0aW9uQm94UG9zaXRpb25BcnJheSkgPT0gNCkKCQl7CgkJCSR4MSA9ICR0aGlzLT5jYXB0aW9uQm94UG9zaXRpb25BcnJheVsneDEnXTsKCQkJJHgyID0gJHRoaXMtPmNhcHRpb25Cb3hQb3NpdGlvbkFycmF5Wyd4MiddOwoJCQkkeTEgPSAkdGhpcy0+Y2FwdGlvbkJveFBvc2l0aW9uQXJyYXlbJ3kxJ107CgkJCSR5MiA9ICR0aGlzLT5jYXB0aW9uQm94UG9zaXRpb25BcnJheVsneTInXTsKCQl9CgkJZWxzZQoJCXsKCQkJaWYgKCR0aGlzLT5kZWJ1ZykKCQkJewoJCQkJdGhyb3cgbmV3IEV4Y2VwdGlvbignTm8gY2FwdGlvbiBib3ggZm91bmQuJyk7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCQl9CgoKCQkvLyAqKiogR2V0IHRleHQgZm9udAoJCSRmb250ID0gJHRoaXMtPmdldFRleHRGb250KCRmb250KTsKCgkJLy8gKioqIEdldCB0ZXh0IHNpemUKCQkkdGV4dFNpemVBcnJheSA9ICR0aGlzLT5nZXRUZXh0U2l6ZSgkZm9udFNpemUsICRhbmdsZSwgJGZvbnQsICR0ZXh0KTsKCQkkdGV4dFdpZHRoID0gJHRleHRTaXplQXJyYXlbJ3dpZHRoJ107CgkJJHRleHRIZWlnaHQgPSAkdGV4dFNpemVBcnJheVsnaGVpZ2h0J107CgoJCS8vICoqKiBGaW5kIHRoZSB3aWR0aC9oZWlnaHQgbWlkZGxlIHBvaW50cwoJCSRib3hYTWlkZGxlID0gKCgkeDIgLSAkeDEpIC8gMik7CgkJJGJveFlNaWRkbGUgPSAoKCR5MiAtICR5MSkgLyAyKTsKCgkJLy8gKioqIEJveCBtaWRkbGUgLSBoYWxmIHRoZSB0ZXh0IHdpZHRoL2hlaWdodAoJCSR4UG9zID0gKCR4MSArICRib3hYTWlkZGxlKSAtICgkdGV4dFdpZHRoIC8gMik7CgkJJHlQb3MgPSAoJHkxICsgJGJveFlNaWRkbGUpIC0gKCR0ZXh0SGVpZ2h0IC8gMik7CgoJCSRwb3MgPSAkeFBvcyAuICd4JyAuICR5UG9zOwoKCQkkdGhpcy0+YWRkVGV4dCgkdGV4dCwgJHBvcywgJHBhZGRpbmcgPSAwLCAkZm9udENvbG9yLCAkZm9udFNpemUsICRhbmdsZSwgJGZvbnQpOwoKCX0KCgkjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCXByaXZhdGUgZnVuY3Rpb24gY2FsY3VsYXRlQ2FwdGlvbkJveFBvc2l0aW9uKCRzaWRlLCAkdGhpY2tuZXNzLCAkcGFkZGluZykKCXsKCQkkcG9zaXRpb25BcnJheSA9IGFycmF5KCk7CgoJCXN3aXRjaCAoJHNpZGUpCgkJewoJCQljYXNlICd0JzoKCQkJCSRwb3NpdGlvbkFycmF5Wyd4MSddID0gMDsKCQkJCSRwb3NpdGlvbkFycmF5Wyd5MSddID0gJHBhZGRpbmc7CgkJCQkkcG9zaXRpb25BcnJheVsneDInXSA9ICR0aGlzLT53aWR0aDsKCQkJCSRwb3NpdGlvbkFycmF5Wyd5MiddID0gJHRoaWNrbmVzcyArICRwYWRkaW5nOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ3InOgoJCQkJJHBvc2l0aW9uQXJyYXlbJ3gxJ10gPSAkdGhpcy0+d2lkdGggLSAkdGhpY2tuZXNzIC0gJHBhZGRpbmc7CgkJCQkkcG9zaXRpb25BcnJheVsneTEnXSA9IDA7CgkJCQkkcG9zaXRpb25BcnJheVsneDInXSA9ICR0aGlzLT53aWR0aCAtICRwYWRkaW5nOwoJCQkJJHBvc2l0aW9uQXJyYXlbJ3kyJ10gPSAkdGhpcy0+aGVpZ2h0OwoJCQkJYnJlYWs7CgkJCWNhc2UgJ2InOgoJCQkJJHBvc2l0aW9uQXJyYXlbJ3gxJ10gPSAwOwoJCQkJJHBvc2l0aW9uQXJyYXlbJ3kxJ10gPSAkdGhpcy0+aGVpZ2h0IC0gJHRoaWNrbmVzcyAtICRwYWRkaW5nOwoJCQkJJHBvc2l0aW9uQXJyYXlbJ3gyJ10gPSAkdGhpcy0+d2lkdGg7CgkJCQkkcG9zaXRpb25BcnJheVsneTInXSA9ICR0aGlzLT5oZWlnaHQgLSAkcGFkZGluZzsKCQkJCWJyZWFrOwoJCQljYXNlICdsJzoKCQkJCSRwb3NpdGlvbkFycmF5Wyd4MSddID0gJHBhZGRpbmc7CgkJCQkkcG9zaXRpb25BcnJheVsneTEnXSA9IDA7CgkJCQkkcG9zaXRpb25BcnJheVsneDInXSA9ICR0aGlja25lc3MgKyAkcGFkZGluZzsKCQkJCSRwb3NpdGlvbkFycmF5Wyd5MiddID0gJHRoaXMtPmhlaWdodDsKCQkJCWJyZWFrOwoKCQkJZGVmYXVsdDoKCQkJCWJyZWFrOwoJCX0KCgkJcmV0dXJuICRwb3NpdGlvbkFycmF5OwoKCX0KCgkvKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLQogIEdldCBFWElGIERhdGEKKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLwoKCXB1YmxpYyBmdW5jdGlvbiBnZXRFeGlmKCRkZWJ1ZyA9IGZhbHNlKQoJCSMgQXV0aG9yOiAgICAgSmFycm9kIE9iZXJ0bwoJCSMgRGF0ZTogICAgICAgMDctMDUtMjAxMQoJCSMgUHVycG9zZTogICAgR2V0IGltYWdlIEVYSUYgZGF0YQoJCSMgUGFyYW0gaW46ICAgbi9hCgkJIyBQYXJhbSBvdXQ6ICBBbiBhc3NvY2lhdGUgYXJyYXkgb2YgRVhJRiBkYXRhCgkJIyBSZWZlcmVuY2U6CgkJIyBOb3RlczoKCQkjIDIzIE1heSAxMyA6IGFkZGVkIG9yaWVudGF0aW9uIGZsYWcgLWpjbwoJCSMKCXsKCgkJaWYgKCAhICR0aGlzLT5kZWJ1ZyB8fCAhICRkZWJ1ZykKCQl7CgkJCSRkZWJ1ZyA9IGZhbHNlOwoJCX0KCgkJLy8gKioqIENoZWNrIGFsbCBpcyBnb29kIC0gY2hlY2sgdGhlIEVYSUYgbGlicmFyeSBleGlzdHMgYW5kIHRoZSBmaWxlIGV4aXN0cywgdG9vLgoJCWlmICggISAkdGhpcy0+dGVzdEVYSUZJbnN0YWxsZWQoKSkKCQl7CgkJCWlmICgkZGVidWcpCgkJCXsKCQkJCXRocm93IG5ldyBFeGNlcHRpb24oJ1RoZSBFWElGIExpYnJhcnkgaXMgbm90IGluc3RhbGxlZC4nKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCXJldHVybiBhcnJheSgpOwoJCQl9CgkJfTsKCQlpZiAoICEgZmlsZV9leGlzdHMoJHRoaXMtPmZpbGVOYW1lKSkKCQl7CgkJCWlmICgkZGVidWcpCgkJCXsKCQkJCXRocm93IG5ldyBFeGNlcHRpb24oJ0ltYWdlIG5vdCBmb3VuZC4nKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCXJldHVybiBhcnJheSgpOwoJCQl9CgkJfTsKCQlpZiAoJHRoaXMtPmZpbGVFeHRlbnNpb24gIT0gJy5qcGcnKQoJCXsKCQkJaWYgKCRkZWJ1ZykKCQkJewoJCQkJdGhyb3cgbmV3IEV4Y2VwdGlvbignTWV0YWRhdGEgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBpbWFnZSB0eXBlLicpOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJcmV0dXJuIGFycmF5KCk7CgkJCX0KCQl9OwoJCSRleGlmRGF0YSA9IGV4aWZfcmVhZF9kYXRhKCR0aGlzLT5maWxlTmFtZSwgJ0lGRDAnKTsKCgkJLy8gKioqIEZvcm1hdCB0aGUgYXBwZXJ0dXJlIHZhbHVlCgkJJGV2ID0gJGV4aWZEYXRhWydBcGVydHVyZVZhbHVlJ107CgkJJGFwUGVpY2VzQXJyYXkgPSBleHBsb2RlKCcvJywgJGV2KTsKCQlpZiAoY291bnQoJGFwUGVpY2VzQXJyYXkpID09IDIpCgkJewoJCQkkYXBlcnR1cmVWYWx1ZSA9IHJvdW5kKCRhcFBlaWNlc0FycmF5WzBdIC8gJGFwUGVpY2VzQXJyYXlbMV0sIDIsIFBIUF9ST1VORF9IQUxGX0RPV04pIC4gJyBFVic7CgkJfQoJCWVsc2UKCQl7CgkJCSRhcGVydHVyZVZhbHVlID0gJyc7CgkJfQoKCQkvLyAqKiogRm9ybWF0IHRoZSBmb2NhbCBsZW5ndGgKCQkkZm9jYWxMZW5ndGggPSAkZXhpZkRhdGFbJ0ZvY2FsTGVuZ3RoJ107CgkJJGZsUGVpY2VzQXJyYXkgPSBleHBsb2RlKCcvJywgJGZvY2FsTGVuZ3RoKTsKCQlpZiAoY291bnQoJGZsUGVpY2VzQXJyYXkpID09IDIpCgkJewoJCQkkZm9jYWxMZW5ndGggPSAkZmxQZWljZXNBcnJheVswXSAvICRmbFBlaWNlc0FycmF5WzFdIC4gJy4wIG1tJzsKCQl9CgkJZWxzZQoJCXsKCQkJJGZvY2FsTGVuZ3RoID0gJyc7CgkJfQoKCQkvLyAqKiogRm9ybWF0IGZOdW1iZXIKCQkkZk51bWJlciA9ICRleGlmRGF0YVsnRk51bWJlciddOwoJCSRmblBlaWNlc0FycmF5ID0gZXhwbG9kZSgnLycsICRmTnVtYmVyKTsKCQlpZiAoY291bnQoJGZuUGVpY2VzQXJyYXkpID09IDIpCgkJewoJCQkkZk51bWJlciA9ICRmblBlaWNlc0FycmF5WzBdIC8gJGZuUGVpY2VzQXJyYXlbMV07CgkJfQoJCWVsc2UKCQl7CgkJCSRmTnVtYmVyID0gJyc7CgkJfQoKCQkvLyAqKiogUmVzb2x2ZSBFeHBvc3VyZVByb2dyYW0KCQlpZiAoaXNzZXQoJGV4aWZEYXRhWydFeHBvc3VyZVByb2dyYW0nXSkpCgkJewoJCQkkZXAgPSAkZXhpZkRhdGFbJ0V4cG9zdXJlUHJvZ3JhbSddOwoJCX0KCQlpZiAoaXNzZXQoJGVwKSkKCQl7CgkJCSRlcCA9ICR0aGlzLT5yZXNvbHZlRXhwb3N1cmVQcm9ncmFtKCRlcCk7CgkJfQoKCgkJLy8gKioqIFJlc29sdmUgTWV0ZXJpbmdNb2RlCgkJJG1tID0gJGV4aWZEYXRhWydNZXRlcmluZ01vZGUnXTsKCQkkbW0gPSAkdGhpcy0+cmVzb2x2ZU1ldGVyaW5nTW9kZSgkbW0pOwoKCQkvLyAqKiogUmVzb2x2ZSBGbGFzaAoJCSRmbGFzaCA9ICRleGlmRGF0YVsnRmxhc2gnXTsKCQkkZmxhc2ggPSAkdGhpcy0+cmVzb2x2ZUZsYXNoKCRmbGFzaCk7CgoKCQlpZiAoaXNzZXQoJGV4aWZEYXRhWydNYWtlJ10pKQoJCXsKCQkJJGV4aWZEYXRhQXJyYXlbJ21ha2UnXSA9ICRleGlmRGF0YVsnTWFrZSddOwoJCX0KCQllbHNlCgkJewoJCQkkZXhpZkRhdGFBcnJheVsnbWFrZSddID0gJyc7CgkJfQoKCQlpZiAoaXNzZXQoJGV4aWZEYXRhWydNb2RlbCddKSkKCQl7CgkJCSRleGlmRGF0YUFycmF5Wydtb2RlbCddID0gJGV4aWZEYXRhWydNb2RlbCddOwoJCX0KCQllbHNlCgkJewoJCQkkZXhpZkRhdGFBcnJheVsnbW9kZWwnXSA9ICcnOwoJCX0KCgkJaWYgKGlzc2V0KCRleGlmRGF0YVsnRGF0ZVRpbWUnXSkpCgkJewoJCQkkZXhpZkRhdGFBcnJheVsnZGF0ZSddID0gJGV4aWZEYXRhWydEYXRlVGltZSddOwoJCX0KCQllbHNlCgkJewoJCQkkZXhpZkRhdGFBcnJheVsnZGF0ZSddID0gJyc7CgkJfQoKCQlpZiAoaXNzZXQoJGV4aWZEYXRhWydFeHBvc3VyZVRpbWUnXSkpCgkJewoJCQkkZXhpZkRhdGFBcnJheVsnZXhwb3N1cmUgdGltZSddID0gJGV4aWZEYXRhWydFeHBvc3VyZVRpbWUnXSAuICcgc2VjLic7CgkJfQoJCWVsc2UKCQl7CgkJCSRleGlmRGF0YUFycmF5WydleHBvc3VyZSB0aW1lJ10gPSAnJzsKCQl9CgoJCWlmICgkYXBlcnR1cmVWYWx1ZSAhPSAnJykKCQl7CgkJCSRleGlmRGF0YUFycmF5WydhcGVydHVyZSB2YWx1ZSddID0gJGFwZXJ0dXJlVmFsdWU7CgkJfQoJCWVsc2UKCQl7CgkJCSRleGlmRGF0YUFycmF5WydhcGVydHVyZSB2YWx1ZSddID0gJyc7CgkJfQoKCQlpZiAoaXNzZXQoJGV4aWZEYXRhWydDT01QVVRFRCddWydBcGVydHVyZUZOdW1iZXInXSkpCgkJewoJCQkkZXhpZkRhdGFBcnJheVsnZi1zdG9wJ10gPSAkZXhpZkRhdGFbJ0NPTVBVVEVEJ11bJ0FwZXJ0dXJlRk51bWJlciddOwoJCX0KCQllbHNlCgkJewoJCQkkZXhpZkRhdGFBcnJheVsnZi1zdG9wJ10gPSAnJzsKCQl9CgoJCWlmIChpc3NldCgkZXhpZkRhdGFbJ0ZOdW1iZXInXSkpCgkJewoJCQkkZXhpZkRhdGFBcnJheVsnZm51bWJlciddID0gJGV4aWZEYXRhWydGTnVtYmVyJ107CgkJfQoJCWVsc2UKCQl7CgkJCSRleGlmRGF0YUFycmF5WydmbnVtYmVyJ10gPSAnJzsKCQl9CgoJCWlmICgkZk51bWJlciAhPSAnJykKCQl7CgkJCSRleGlmRGF0YUFycmF5WydmbnVtYmVyIHZhbHVlJ10gPSAkZk51bWJlcjsKCQl9CgkJZWxzZQoJCXsKCQkJJGV4aWZEYXRhQXJyYXlbJ2ZudW1iZXIgdmFsdWUnXSA9ICcnOwoJCX0KCgkJaWYgKGlzc2V0KCRleGlmRGF0YVsnSVNPU3BlZWRSYXRpbmdzJ10pKQoJCXsKCQkJJGV4aWZEYXRhQXJyYXlbJ2lzbyddID0gJGV4aWZEYXRhWydJU09TcGVlZFJhdGluZ3MnXTsKCQl9CgkJZWxzZQoJCXsKCQkJJGV4aWZEYXRhQXJyYXlbJ2lzbyddID0gJyc7CgkJfQoKCQlpZiAoJGZvY2FsTGVuZ3RoICE9ICcnKQoJCXsKCQkJJGV4aWZEYXRhQXJyYXlbJ2ZvY2FsIGxlbmd0aCddID0gJGZvY2FsTGVuZ3RoOwoJCX0KCQllbHNlCgkJewoJCQkkZXhpZkRhdGFBcnJheVsnZm9jYWwgbGVuZ3RoJ10gPSAnJzsKCQl9CgoJCWlmIChpc3NldCgkZXApKQoJCXsKCQkJJGV4aWZEYXRhQXJyYXlbJ2V4cG9zdXJlIHByb2dyYW0nXSA9ICRlcDsKCQl9CgkJZWxzZQoJCXsKCQkJJGV4aWZEYXRhQXJyYXlbJ2V4cG9zdXJlIHByb2dyYW0nXSA9ICcnOwoJCX0KCgkJaWYgKCRtbSAhPSAnJykKCQl7CgkJCSRleGlmRGF0YUFycmF5WydtZXRlcmluZyBtb2RlJ10gPSAkbW07CgkJfQoJCWVsc2UKCQl7CgkJCSRleGlmRGF0YUFycmF5WydtZXRlcmluZyBtb2RlJ10gPSAnJzsKCQl9CgoJCWlmICgkZmxhc2ggIT0gJycpCgkJewoJCQkkZXhpZkRhdGFBcnJheVsnZmxhc2ggc3RhdHVzJ10gPSAkZmxhc2g7CgkJfQoJCWVsc2UKCQl7CgkJCSRleGlmRGF0YUFycmF5WydmbGFzaCBzdGF0dXMnXSA9ICcnOwoJCX0KCgkJaWYgKGlzc2V0KCRleGlmRGF0YVsnQXJ0aXN0J10pKQoJCXsKCQkJJGV4aWZEYXRhQXJyYXlbJ2NyZWF0b3InXSA9ICRleGlmRGF0YVsnQXJ0aXN0J107CgkJfQoJCWVsc2UKCQl7CgkJCSRleGlmRGF0YUFycmF5WydjcmVhdG9yJ10gPSAnJzsKCQl9CgoJCWlmIChpc3NldCgkZXhpZkRhdGFbJ0NvcHlyaWdodCddKSkKCQl7CgkJCSRleGlmRGF0YUFycmF5Wydjb3B5cmlnaHQnXSA9ICRleGlmRGF0YVsnQ29weXJpZ2h0J107CgkJfQoJCWVsc2UKCQl7CgkJCSRleGlmRGF0YUFycmF5Wydjb3B5cmlnaHQnXSA9ICcnOwoJCX0KCgkJLy8gKioqIE9yaWVudGF0aW9uCgkJaWYgKGlzc2V0KCRleGlmRGF0YVsnT3JpZW50YXRpb24nXSkpCgkJewoJCQkkZXhpZkRhdGFBcnJheVsnb3JpZW50YXRpb24nXSA9ICRleGlmRGF0YVsnT3JpZW50YXRpb24nXTsKCQl9CgkJZWxzZQoJCXsKCQkJJGV4aWZEYXRhQXJyYXlbJ29yaWVudGF0aW9uJ10gPSAnJzsKCQl9CgoJCXJldHVybiAkZXhpZkRhdGFBcnJheTsKCX0KCgkjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCXByaXZhdGUgZnVuY3Rpb24gcmVzb2x2ZUV4cG9zdXJlUHJvZ3JhbSgkZXApCgl7CgkJc3dpdGNoICgkZXApCgkJewoJCQljYXNlIDA6CgkJCQkkZXAgPSAnJzsKCQkJCWJyZWFrOwoJCQljYXNlIDE6CgkJCQkkZXAgPSAnbWFudWFsJzsKCQkJCWJyZWFrOwoJCQljYXNlIDI6CgkJCQkkZXAgPSAnbm9ybWFsIHByb2dyYW0nOwoJCQkJYnJlYWs7CgkJCWNhc2UgMzoKCQkJCSRlcCA9ICdhcGVydHVyZSBwcmlvcml0eSc7CgkJCQlicmVhazsKCQkJY2FzZSA0OgoJCQkJJGVwID0gJ3NodXR0ZXIgcHJpb3JpdHknOwoJCQkJYnJlYWs7CgkJCWNhc2UgNToKCQkJCSRlcCA9ICdjcmVhdGl2ZSBwcm9ncmFtJzsKCQkJCWJyZWFrOwoJCQljYXNlIDY6CgkJCQkkZXAgPSAnYWN0aW9uIHByb2dyYW0nOwoJCQkJYnJlYWs7CgkJCWNhc2UgNzoKCQkJCSRlcCA9ICdwb3J0cmFpdCBtb2RlJzsKCQkJCWJyZWFrOwoJCQljYXNlIDg6CgkJCQkkZXAgPSAnbGFuZHNjYXBlIG1vZGUnOwoJCQkJYnJlYWs7CgoJCQlkZWZhdWx0OgoJCQkJYnJlYWs7CgkJfQoKCQlyZXR1cm4gJGVwOwoJfQoKCSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJcHJpdmF0ZSBmdW5jdGlvbiByZXNvbHZlTWV0ZXJpbmdNb2RlKCRtbSkKCXsKCQlzd2l0Y2ggKCRtbSkKCQl7CgkJCWNhc2UgMDoKCQkJCSRtbSA9ICd1bmtub3duJzsKCQkJCWJyZWFrOwoJCQljYXNlIDE6CgkJCQkkbW0gPSAnYXZlcmFnZSc7CgkJCQlicmVhazsKCQkJY2FzZSAyOgoJCQkJJG1tID0gJ2NlbnRlciB3ZWlnaHRlZCBhdmVyYWdlJzsKCQkJCWJyZWFrOwoJCQljYXNlIDM6CgkJCQkkbW0gPSAnc3BvdCc7CgkJCQlicmVhazsKCQkJY2FzZSA0OgoJCQkJJG1tID0gJ211bHRpIHNwb3QnOwoJCQkJYnJlYWs7CgkJCWNhc2UgNToKCQkJCSRtbSA9ICdwYXR0ZXJuJzsKCQkJCWJyZWFrOwoJCQljYXNlIDY6CgkJCQkkbW0gPSAncGFydGlhbCc7CgkJCQlicmVhazsKCQkJY2FzZSAyNTU6CgkJCQkkbW0gPSAnb3RoZXInOwoJCQkJYnJlYWs7CgoJCQlkZWZhdWx0OgoJCQkJYnJlYWs7CgkJfQoKCQlyZXR1cm4gJG1tOwoJfQoKCSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJcHJpdmF0ZSBmdW5jdGlvbiByZXNvbHZlRmxhc2goJGZsYXNoKQoJewoJCXN3aXRjaCAoJGZsYXNoKQoJCXsKCQkJY2FzZSAwOgoJCQkJJGZsYXNoID0gJ2ZsYXNoIGRpZCBub3QgZmlyZSc7CgkJCQlicmVhazsKCQkJY2FzZSAxOgoJCQkJJGZsYXNoID0gJ2ZsYXNoIGZpcmVkJzsKCQkJCWJyZWFrOwoJCQljYXNlIDU6CgkJCQkkZmxhc2ggPSAnc3Ryb2JlIHJldHVybiBsaWdodCBub3QgZGV0ZWN0ZWQnOwoJCQkJYnJlYWs7CgkJCWNhc2UgNzoKCQkJCSRmbGFzaCA9ICdzdHJvYmUgcmV0dXJuIGxpZ2h0IGRldGVjdGVkJzsKCQkJCWJyZWFrOwoJCQljYXNlIDk6CgkJCQkkZmxhc2ggPSAnZmxhc2ggZmlyZWQsIGNvbXB1bHNvcnkgZmxhc2ggbW9kZSc7CgkJCQlicmVhazsKCQkJY2FzZSAxMzoKCQkJCSRmbGFzaCA9ICdmbGFzaCBmaXJlZCwgY29tcHVsc29yeSBmbGFzaCBtb2RlLCByZXR1cm4gbGlnaHQgbm90IGRldGVjdGVkJzsKCQkJCWJyZWFrOwoJCQljYXNlIDE1OgoJCQkJJGZsYXNoID0gJ2ZsYXNoIGZpcmVkLCBjb21wdWxzb3J5IGZsYXNoIG1vZGUsIHJldHVybiBsaWdodCBkZXRlY3RlZCc7CgkJCQlicmVhazsKCQkJY2FzZSAxNjoKCQkJCSRmbGFzaCA9ICdmbGFzaCBkaWQgbm90IGZpcmUsIGNvbXB1bHNvcnkgZmxhc2ggbW9kZSc7CgkJCQlicmVhazsKCQkJY2FzZSAyNDoKCQkJCSRmbGFzaCA9ICdmbGFzaCBkaWQgbm90IGZpcmUsIGF1dG8gbW9kZSc7CgkJCQlicmVhazsKCQkJY2FzZSAyNToKCQkJCSRmbGFzaCA9ICdmbGFzaCBmaXJlZCwgYXV0byBtb2RlJzsKCQkJCWJyZWFrOwoJCQljYXNlIDI5OgoJCQkJJGZsYXNoID0gJ2ZsYXNoIGZpcmVkLCBhdXRvIG1vZGUsIHJldHVybiBsaWdodCBub3QgZGV0ZWN0ZWQnOwoJCQkJYnJlYWs7CgkJCWNhc2UgMzE6CgkJCQkkZmxhc2ggPSAnZmxhc2ggZmlyZWQsIGF1dG8gbW9kZSwgcmV0dXJuIGxpZ2h0IGRldGVjdGVkJzsKCQkJCWJyZWFrOwoJCQljYXNlIDMyOgoJCQkJJGZsYXNoID0gJ25vIGZsYXNoIGZ1bmN0aW9uJzsKCQkJCWJyZWFrOwoJCQljYXNlIDY1OgoJCQkJJGZsYXNoID0gJ2ZsYXNoIGZpcmVkLCByZWQtZXllIHJlZHVjdGlvbiBtb2RlJzsKCQkJCWJyZWFrOwoJCQljYXNlIDY5OgoJCQkJJGZsYXNoID0gJ2ZsYXNoIGZpcmVkLCByZWQtZXllIHJlZHVjdGlvbiBtb2RlLCByZXR1cm4gbGlnaHQgbm90IGRldGVjdGVkJzsKCQkJCWJyZWFrOwoJCQljYXNlIDcxOgoJCQkJJGZsYXNoID0gJ2ZsYXNoIGZpcmVkLCByZWQtZXllIHJlZHVjdGlvbiBtb2RlLCByZXR1cm4gbGlnaHQgZGV0ZWN0ZWQnOwoJCQkJYnJlYWs7CgkJCWNhc2UgNzM6CgkJCQkkZmxhc2ggPSAnZmxhc2ggZmlyZWQsIGNvbXB1bHNvcnkgZmxhc2ggbW9kZSwgcmVkLWV5ZSByZWR1Y3Rpb24gbW9kZSc7CgkJCQlicmVhazsKCQkJY2FzZSA3NzoKCQkJCSRmbGFzaCA9ICdmbGFzaCBmaXJlZCwgY29tcHVsc29yeSBmbGFzaCBtb2RlLCByZWQtZXllIHJlZHVjdGlvbiBtb2RlLCByZXR1cm4gbGlnaHQgbm90IGRldGVjdGVkJzsKCQkJCWJyZWFrOwoJCQljYXNlIDc5OgoJCQkJJGZsYXNoID0gJ2ZsYXNoIGZpcmVkLCBjb21wdWxzb3J5IGZsYXNoIG1vZGUsIHJlZC1leWUgcmVkdWN0aW9uIG1vZGUsIHJldHVybiBsaWdodCBkZXRlY3RlZCc7CgkJCQlicmVhazsKCQkJY2FzZSA4OToKCQkJCSRmbGFzaCA9ICdmbGFzaCBmaXJlZCwgYXV0byBtb2RlLCByZWQtZXllIHJlZHVjdGlvbiBtb2RlJzsKCQkJCWJyZWFrOwoJCQljYXNlIDkzOgoJCQkJJGZsYXNoID0gJ2ZsYXNoIGZpcmVkLCBhdXRvIG1vZGUsIHJldHVybiBsaWdodCBub3QgZGV0ZWN0ZWQsIHJlZC1leWUgcmVkdWN0aW9uIG1vZGUnOwoJCQkJYnJlYWs7CgkJCWNhc2UgOTU6CgkJCQkkZmxhc2ggPSAnZmxhc2ggZmlyZWQsIGF1dG8gbW9kZSwgcmV0dXJuIGxpZ2h0IGRldGVjdGVkLCByZWQtZXllIHJlZHVjdGlvbiBtb2RlJzsKCQkJCWJyZWFrOwoKCQkJZGVmYXVsdDoKCQkJCWJyZWFrOwoJCX0KCgkJcmV0dXJuICRmbGFzaDsKCgl9CgoKCS8qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSoqLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotCiAgR2V0IElQVEMgRGF0YQoqLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSoqLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSovCgoKCS8qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSoqLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotCiAgV3JpdGUgSVBUQyBEYXRhCiotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKiotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi8KCglwdWJsaWMgZnVuY3Rpb24gd3JpdGVJUFRDY2FwdGlvbigkdmFsdWUpCgkJIyBDYXB0aW9uCgl7CgkJJHRoaXMtPndyaXRlSVBUQygxMjAsICR2YWx1ZSk7Cgl9CgoJIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglwdWJsaWMgZnVuY3Rpb24gd3JpdGVJUFRDd3JpdGVyKCR2YWx1ZSkKCXsKCQkvLyR0aGlzLT53cml0ZUlQVEMoNjUsICR2YWx1ZSk7Cgl9CgoJIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglwcml2YXRlIGZ1bmN0aW9uIHdyaXRlSVBUQygkZGF0LCAkdmFsdWUpCgl7CgoJCSMgTElNSVQgVE8gSlBHCgoJCSRjYXB0aW9uX2Jsb2NrID0gJHRoaXMtPmlwdGNfbWFrZXRhZygyLCAkZGF0LCAkdmFsdWUpOwoJCSRpbWFnZV9zdHJpbmcgPSBpcHRjZW1iZWQoJGNhcHRpb25fYmxvY2ssICR0aGlzLT5maWxlTmFtZSk7CgkJZmlsZV9wdXRfY29udGVudHMoJ2lwdGMuanBnJywgJGltYWdlX3N0cmluZyk7Cgl9CgojIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCXByaXZhdGUgZnVuY3Rpb24gaXB0Y19tYWtldGFnKCRyZWMsICRkYXQsICR2YWwpCgkJIyBBdXRob3I6ICAgVGhpZXMgQy4gQXJudHplbgoJCSMgUHVycG9zZTogICAgRnVuY3Rpb24gdG8gZm9ybWF0IHRoZSBuZXcgSVBUQyB0ZXh0CgkJIyBQYXJhbSBpbjogICAkcmVjOiBBcHBsaWNhdGlvbiByZWNvcmQuIChXZeKAmXJlIHdvcmtpbmcgd2l0aCAjMikKCQkjICAgICAgICRkYXQ6IEluZGV4LiAoMTIwIGZvciBjYXB0aW9uLCAxMTggZm9yIGNvbnRhY3QuIFNlZSB0aGUgSVBUQyBJSU0KCQkjICAgICAgICAgc3BlY2lmaWNhdGlvbjoKCQkjICAgICAgICAgaHR0cDovL3d3dy5pcHRjLm9yZy9zdGQvSUlNLzQuMS9zcGVjaWZpY2F0aW9uL0lJTVY0LjEucGRmCgkJIyAgICAgICAkdmFsOiBWYWx1ZS9kYXRhL3RleHQuIE1ha2Ugc3VyZSB0aGlzIGlzIHdpdGhpbiB0aGUgbGVuZ3RoCgkJIyAgICAgICAgIGNvbnN0cmFpbnRzIG9mIHRoZSBJUFRDIElJTSBzcGVjaWZpY2F0aW9uCgkJIyBSZWY6ICAgICAgaHR0cDovL2Jsb2cucGV0ZXJoYXphLm5vL3dvcmtpbmctd2l0aC1pbWFnZS1tZXRhLWRhdGEtaW4tZXhpZi1hbmQtaXB0Yy1oZWFkZXJzLWZyb20tcGhwLwoJCSMgICAgICAgaHR0cDovL3BocC5uZXQvbWFudWFsL2VuL2Z1bmN0aW9uLmlwdGNlbWJlZC5waHAKCQkjCgl7CgkJJGxlbiA9IHN0cmxlbigkdmFsKTsKCQlpZiAoJGxlbiA8IDB4ODAwMCkKCQl7CgkJCXJldHVybiBjaHIoMHgxYykgLiBjaHIoJHJlYykgLiBjaHIoJGRhdCkgLgoJCQljaHIoJGxlbiA+PiA4KSAuCgkJCWNocigkbGVuICYgMHhmZikgLgoJCQkkdmFsOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gY2hyKDB4MWMpIC4gY2hyKCRyZWMpIC4gY2hyKCRkYXQpIC4KCQkJY2hyKDB4ODApIC4gY2hyKDB4MDQpIC4KCQkJY2hyKCgkbGVuID4+IDI0KSAmIDB4ZmYpIC4KCQkJY2hyKCgkbGVuID4+IDE2KSAmIDB4ZmYpIC4KCQkJY2hyKCgkbGVuID4+IDgpICYgMHhmZikgLgoJCQljaHIoKCRsZW4pICYgMHhmZikgLgoJCQkkdmFsOwoJCX0KCX0KCgoKCS8qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSoqLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotCiAgV3JpdGUgWE1QIERhdGEKKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLwoKCS8vaHR0cDovL3htcHBocHRvb2xraXQuc291cmNlZm9yZ2UubmV0LwoKCgkvKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLQogIEFkZCBUZXh0CiotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKiotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi8KCglwdWJsaWMgZnVuY3Rpb24gYWRkVGV4dCgkdGV4dCwgJHBvcyA9ICcyMHgyMCcsICRwYWRkaW5nID0gMCwgJGZvbnRDb2xvciA9ICcjZmZmJywgJGZvbnRTaXplID0gMTIsICRhbmdsZSA9IDAsICRmb250ID0gbnVsbCkKCQkjIEF1dGhvcjogICAgIEphcnJvZCBPYmVydG8KCQkjIERhdGU6ICAgICAgIDE4LTExLTA5CgkJIyBQdXJwb3NlOiAgICBBZGQgdGV4dCB0byBhbiBpbWFnZQoJCSMgUGFyYW0gaW46CgkJIyBQYXJhbSBvdXQ6CgkJIyBSZWZlcmVuY2U6ICBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4vZnVuY3Rpb24uaW1hZ2V0dGZ0ZXh0LnBocAoJCSMgTm90ZXM6ICAgICAgTWFrZSBzdXJlIHlvdSBzdXBwbHkgdGhlIGZvbnQuCgkJIwoJewoKCQkvLyAqKiogQ29udmVydCBjb2xvcgoJCSRyZ2JBcnJheSA9ICR0aGlzLT5mb3JtYXRDb2xvcigkZm9udENvbG9yKTsKCQkkciA9ICRyZ2JBcnJheVsnciddOwoJCSRnID0gJHJnYkFycmF5WydnJ107CgkJJGIgPSAkcmdiQXJyYXlbJ2InXTsKCgkJLy8gKioqIEdldCB0ZXh0IGZvbnQKCQkkZm9udCA9ICR0aGlzLT5nZXRUZXh0Rm9udCgkZm9udCk7CgoJCS8vICoqKiBHZXQgdGV4dCBzaXplCgkJJHRleHRTaXplQXJyYXkgPSAkdGhpcy0+Z2V0VGV4dFNpemUoJGZvbnRTaXplLCAkYW5nbGUsICRmb250LCAkdGV4dCk7CgkJJHRleHRXaWR0aCA9ICR0ZXh0U2l6ZUFycmF5Wyd3aWR0aCddOwoJCSR0ZXh0SGVpZ2h0ID0gJHRleHRTaXplQXJyYXlbJ2hlaWdodCddOwoKCQkvLyAqKiogRmluZCBjby1vcmRzIHRvIHBsYWNlIHRleHQKCQkkcG9zQXJyYXkgPSAkdGhpcy0+Y2FsY3VsYXRlUG9zaXRpb24oJHBvcywgJHBhZGRpbmcsICR0ZXh0V2lkdGgsICR0ZXh0SGVpZ2h0LCBmYWxzZSk7CgkJJHggPSAkcG9zQXJyYXlbJ3dpZHRoJ107CgkJJHkgPSAkcG9zQXJyYXlbJ2hlaWdodCddOwoKCQkkZm9udENvbG9yID0gaW1hZ2Vjb2xvcmFsbG9jYXRlKCR0aGlzLT5pbWFnZVJlc2l6ZWQsICRyLCAkZywgJGIpOwoKCQkvLyAqKiogQWRkIHRleHQKCQlpbWFnZXR0ZnRleHQoJHRoaXMtPmltYWdlUmVzaXplZCwgJGZvbnRTaXplLCAkYW5nbGUsICR4LCAkeSwgJGZvbnRDb2xvciwgJGZvbnQsICR0ZXh0KTsKCX0KCgkjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCXByaXZhdGUgZnVuY3Rpb24gZ2V0VGV4dEZvbnQoJGZvbnQpCgl7CgkJLy8gKioqIEZvbnQgcGF0aCAoc2hvdQoJCSRmb250UGF0aCA9IGRpcm5hbWUoX19GSUxFX18pIC4gJy8nIC4gJHRoaXMtPmZvbnREaXI7CgoKCQkvLyAqKiogVGhlIGJlbG93IGlzL21heSBiZSBuZWVkZWQgZGVwZW5kaW5nIG9uIHlvdXIgdmVyc2lvbiAoc2VlIHJlZikKCQlwdXRlbnYoJ0dERk9OVFBBVEg9JyAuIHJlYWxwYXRoKCcuJykpOwoKCQkvLyAqKiogQ2hlY2sgaWYgdGhlIHBhc3NlZCBpbiBmb250IGV4c2l0cy4uLgoJCWlmICgkZm9udCA9PSBudWxsIHx8ICEgZmlsZV9leGlzdHMoJGZvbnQpKQoJCXsKCgkJCS8vICoqKiAuLi5JZiBub3QsIGRlZmF1bHQgdG8gdGhpcyBmb250LgoJCQkkZm9udCA9ICRmb250UGF0aCAuICcvYXJpbW8udHRmJzsKCgkJCS8vICoqKiBDaGVjayBvdXIgZGVmYXVsdCBmb250IGV4aXN0cy4uLgoJCQlpZiAoICEgZmlsZV9leGlzdHMoJGZvbnQpKQoJCQl7CgoJCQkJLy8gKioqIElmIG5vdCwgcmV0dXJuIGZhbHNlCgkJCQlpZiAoJHRoaXMtPmRlYnVnKQoJCQkJewoJCQkJCXRocm93IG5ldyBFeGNlcHRpb24oJ0ZvbnQgbm90IGZvdW5kJyk7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJfQoJCQl9CgkJfQoKCQlyZXR1cm4gJGZvbnQ7CgoJfQoKCSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJcHJpdmF0ZSBmdW5jdGlvbiBnZXRUZXh0U2l6ZSgkZm9udFNpemUsICRhbmdsZSwgJGZvbnQsICR0ZXh0KQoJewoKCQkvLyAqKiogRGVmaW5lIGJveCAoc28gd2UgY2FuIGdldCB0aGUgd2lkdGgpCgkJJGJveCA9IEBpbWFnZVRURkJib3goJGZvbnRTaXplLCAkYW5nbGUsICRmb250LCAkdGV4dCk7CgoJCS8vICoqKiAgR2V0IHdpZHRoIG9mIHRleHQgZnJvbSBkaW1lbnNpb25zCgkJJHRleHRXaWR0aCA9IGFicygkYm94WzRdIC0gJGJveFswXSk7CgoJCS8vICoqKiAgR2V0IGhlaWdodCBvZiB0ZXh0IGZyb20gZGltZW5zaW9ucyAoc2hvdWxkIGFsc28gYmUgc2FtZSBhcyAkZm9udFNpemUpCgkJJHRleHRIZWlnaHQgPSBhYnMoJGJveFs1XSAtICRib3hbMV0pOwoKCQlyZXR1cm4gYXJyYXkoICdoZWlnaHQnID0+ICR0ZXh0SGVpZ2h0LCAnd2lkdGgnID0+ICR0ZXh0V2lkdGggKTsKCX0KCgoJLyotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKiotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0KICBBZGQgV2F0ZXJtYXJrCiotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKiotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi8KCglwdWJsaWMgZnVuY3Rpb24gYWRkV2F0ZXJtYXJrKCR3YXRlcm1hcmtJbWFnZSwgJHBvcywgJHBhZGRpbmcgPSAwLCAkb3BhY2l0eSA9IDApCgkJIyBBdXRob3I6ICAgICBKYXJyb2QgT2JlcnRvCgkJIyBEYXRlOiAgICAgICAxOC0xMS0wOQoJCSMgUHVycG9zZTogICAgQWRkIHdhdGVybWFyayBpbWFnZQoJCSMgUGFyYW0gaW46ICAgKHN0cikgJHdhdGVybWFyazogVGhlIHdhdGVybWFyayBpbWFnZQoJCSMgICAgICAgKHN0cikgJHBvczogQ291bGQgYmUgYSBwcmUtZGV0ZXJtaW5lZCBwb3NpdGlvbiBzdWNoIGFzOgoJCSMgICAgICAgICAgIHRsID0gdG9wIGxlZnQsCgkJIyAgICAgICAgICAgdCAgPSB0b3AgKG1pZGRsZSksCgkJIyAgICAgICAgICAgdHIgPSB0b3AgcmlnaHQsCgkJIyAgICAgICAgICAgbCAgPSBsZWZ0LAoJCSMgICAgICAgICAgIG0gID0gbWlkZGxlLAoJCSMgICAgICAgICAgIHIgID0gcmlnaHQsCgkJIyAgICAgICAgICAgYmwgPSBib3R0b20gbGVmdCwKCQkjICAgICAgICAgICBiICA9IGJvdHRvbSAobWlkZGxlKSwKCQkjICAgICAgICAgICBiciA9IGJvdHRvbSByaWdodAoJCSMgICAgICAgICBPciwgaXQgY291bGQgYmUgYSBjby1vcmRpbmF0ZSBwb3NpdGlvbiBzdWNoIGFzOiA1MHgxMDAKCQkjCgkJIyAgICAgICAoaW50KSAkcGFkZGluZzogSWYgdXNpbmcgYSBwcmUtZGV0ZXJtaW5lZCBwb3NpdGlvbiB5b3UgY2FuCgkJIyAgICAgICAgIGFkanVzdCB0aGUgcGFkZGluZyBmcm9tIHRoZSBlZGdlcyBieSBwYXNzaW5nIGFuIGFtb3VudAoJCSMgICAgICAgICBpbiBwaXhlbHMuIElmIHVzaW5nIGNvLW9yZGluYXRlcywgdGhpcyB2YWx1ZSBpcyBpZ25vcmVkLgoJCSMgUGFyYW0gb3V0OgoJCSMgUmVmZXJlbmNlOiAgaHR0cDovL3d3dy5waHAubmV0L21hbnVhbC9lbi9pbWFnZS5leGFtcGxlcy13YXRlcm1hcmsucGhwCgkJIyBOb3RlczogICAgICBCYXNlZCBvbiBleGFtcGxlIGluIHJlZmVyZW5jZS4KCQkjCgkJIwoJewoKCQkvLyBMb2FkIHRoZSBzdGFtcCBhbmQgdGhlIHBob3RvIHRvIGFwcGx5IHRoZSB3YXRlcm1hcmsgdG8KCQkkc3RhbXAgPSAkdGhpcy0+b3BlbkltYWdlKCR3YXRlcm1hcmtJbWFnZSk7ICAgICMgc3RhbXAKCQkkaW0gPSAkdGhpcy0+aW1hZ2VSZXNpemVkOyAgICAgICAgICAgICMgcGhvdG8KCgkJLy8gKioqIEdldCBzdGFtcHMgd2lkdGggYW5kIGhlaWdodAoJCSRzeCA9IGltYWdlc3goJHN0YW1wKTsKCQkkc3kgPSBpbWFnZXN5KCRzdGFtcCk7CgoJCS8vICoqKiBGaW5kIGNvLW9yZHMgdG8gcGxhY2UgaW1hZ2UKCQkkcG9zQXJyYXkgPSAkdGhpcy0+Y2FsY3VsYXRlUG9zaXRpb24oJHBvcywgJHBhZGRpbmcsICRzeCwgJHN5KTsKCQkkeCA9ICRwb3NBcnJheVsnd2lkdGgnXTsKCQkkeSA9ICRwb3NBcnJheVsnaGVpZ2h0J107CgoJCS8vICoqKiBTZXQgd2F0ZXJtYXJrIG9wYWNpdHkKCQlpZiAoZml4X3N0cnRvbG93ZXIoc3RycmNocigkd2F0ZXJtYXJrSW1hZ2UsICcuJykpID09ICcucG5nJykKCQl7CgoJCQkkb3BhY2l0eSA9ICR0aGlzLT5pbnZlcnRUcmFuc3BhcmVuY3koJG9wYWNpdHksIDEwMCk7CgkJCSR0aGlzLT5maWx0ZXJPcGFjaXR5KCRzdGFtcCwgJG9wYWNpdHkpOwoJCX0KCgkJLy8gQ29weSB0aGUgd2F0ZXJtYXJrIGltYWdlIG9udG8gb3VyIHBob3RvCgkJaW1hZ2Vjb3B5KCRpbSwgJHN0YW1wLCAkeCwgJHksIDAsIDAsIGltYWdlc3goJHN0YW1wKSwgaW1hZ2VzeSgkc3RhbXApKTsKCgl9CgoJIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglwcml2YXRlIGZ1bmN0aW9uIGNhbGN1bGF0ZVBvc2l0aW9uKCRwb3MsICRwYWRkaW5nLCAkYXNzZXRXaWR0aCwgJGFzc2V0SGVpZ2h0LCAkdXBwZXJMZWZ0ID0gdHJ1ZSkKCQkjCgkJIyBBdXRob3I6ICAgSmFycm9kIE9iZXJ0bwoJCSMgRGF0ZTogICAwOC0wNS0xMQoJCSMgUHVycG9zZTogIENhbGN1bGF0ZSB0aGUgeCwgeSBwaXhlbCBjb3JkaW5hdGVzIG9mIHRoZSBhc3NldCB0byBwbGFjZQoJCSMgUGFyYW1zIGluOiAgKHN0cikgJHBvczogRWl0aGVyIHNvbWV0aGluZyBsaWtlOiAidGwiLCAibCIsICJiciIgb3IgYW4KCQkjICAgICAgICAgZXhhY3QgcG9zaXRpb24gbGlrZTogIjEwMHg1MCIKCQkjICAgICAgIChpbnQpICRwYWRkaW5nOiBUaGUgYW1vdW50IG9mIHBhZGRpbmcgZnJvbSB0aGUgZWRnZS4gT25seQoJCSMgICAgICAgICB1c2VkIGZvciB0aGUgcHJlZGVmaW5lZCAkcG9zLgoJCSMgICAgICAgKGludCkgJGFzc2V0V2lkdGg6IFRoZSB3aWR0aCBvZiB0aGUgYXNzZXQgdG8gYWRkIHRvIHRoZSBpbWFnZQoJCSMgICAgICAgKGludCkgJGFzc2V0SGVpZ2h0OiBUaGUgaGVpZ2h0IG9mIHRoZSBhc3NldCB0byBhZGQgdG8gdGhlIGltYWdlCgkJIyAgICAgICAoYm9sKSAkdXBwZXJMZWZ0OiBpZiB0cnVlLCB0aGUgYXNzZXQgd2lsbCBiZSBwb3NpdGlvbmVkIGJhc2VkCgkJIyAgICAgICAgIG9uIHRoZSB1cHBlciBsZWZ0IHgsIHkgY29vcmRzLiBJZiBmYWxzZSwgaXQgbWVhbnMgeW91J3JlCgkJIyAgICAgICAgIHVzaW5nIHRoZSBsb3dlciBsZWZ0IGFzIHRoZSBiYXNlcG9pbnQgYW5kIHRoaXMgd2lsbAoJCSMgICAgICAgICBjb252ZXJ0IGl0IHRvIHRoZSB1cHBlciBsZWZ0IHBvc2l0aW9uCgkJIyBQYXJhbXMgb3V0OgoJCSMgTk9URTogdGhpcyBpcyBkb25lIGZyb20gdGhlIFVQUEVSIGxlZnQgY29ybmVyISEgQnV0IHdpbGwgY29udmVydCBsb3dlcgoJCSMgICBsZWZ0IGJhc2Vwb2ludHMgdG8gdXBwZXIgbGVmdCBpZiAkdXBwZXJsZWZ0IGlzIHNldCB0byBmYWxzZQoJCSMKCQkjCgl7CgkJJHBvcyA9IGZpeF9zdHJ0b2xvd2VyKCRwb3MpOwoKCQkvLyAqKiogSWYgY28tb3JkcyBoYXZlIGJlZW4gZW50ZXJlZAoJCWlmIChzdHJzdHIoJHBvcywgJ3gnKSkKCQl7CgkJCSRwb3MgPSBzdHJfcmVwbGFjZSgnICcsICcnLCAkcG9zKTsKCgkJCSR4eUFycmF5ID0gZXhwbG9kZSgneCcsICRwb3MpOwoJCQlsaXN0KCR3aWR0aCwgJGhlaWdodCkgPSAkeHlBcnJheTsKCgkJfQoJCWVsc2UKCQl7CgoJCQlzd2l0Y2ggKCRwb3MpCgkJCXsKCQkJCWNhc2UgJ3RsJzoKCQkJCQkkd2lkdGggPSAwICsgJHBhZGRpbmc7CgkJCQkJJGhlaWdodCA9IDAgKyAkcGFkZGluZzsKCQkJCQlicmVhazsKCgkJCQljYXNlICd0JzoKCQkJCQkkd2lkdGggPSAoJHRoaXMtPndpZHRoIC8gMikgLSAoJGFzc2V0V2lkdGggLyAyKTsKCQkJCQkkaGVpZ2h0ID0gMCArICRwYWRkaW5nOwoJCQkJCWJyZWFrOwoKCQkJCWNhc2UgJ3RyJzoKCQkJCQkkd2lkdGggPSAkdGhpcy0+d2lkdGggLSAkYXNzZXRXaWR0aCAtICRwYWRkaW5nOwoJCQkJCSRoZWlnaHQgPSAwICsgJHBhZGRpbmc7OwoJCQkJCWJyZWFrOwoKCQkJCWNhc2UgJ2wnOgoJCQkJCSR3aWR0aCA9IDAgKyAkcGFkZGluZzsKCQkJCQkkaGVpZ2h0ID0gKCR0aGlzLT5oZWlnaHQgLyAyKSAtICgkYXNzZXRIZWlnaHQgLyAyKTsKCQkJCQlicmVhazsKCgkJCQljYXNlICdtJzoKCQkJCQkkd2lkdGggPSAoJHRoaXMtPndpZHRoIC8gMikgLSAoJGFzc2V0V2lkdGggLyAyKTsKCQkJCQkkaGVpZ2h0ID0gKCR0aGlzLT5oZWlnaHQgLyAyKSAtICgkYXNzZXRIZWlnaHQgLyAyKTsKCQkJCQlicmVhazsKCgkJCQljYXNlICdyJzoKCQkJCQkkd2lkdGggPSAkdGhpcy0+d2lkdGggLSAkYXNzZXRXaWR0aCAtICRwYWRkaW5nOwoJCQkJCSRoZWlnaHQgPSAoJHRoaXMtPmhlaWdodCAvIDIpIC0gKCRhc3NldEhlaWdodCAvIDIpOwoJCQkJCWJyZWFrOwoKCQkJCWNhc2UgJ2JsJzoKCQkJCQkkd2lkdGggPSAwICsgJHBhZGRpbmc7CgkJCQkJJGhlaWdodCA9ICR0aGlzLT5oZWlnaHQgLSAkYXNzZXRIZWlnaHQgLSAkcGFkZGluZzsKCQkJCQlicmVhazsKCgkJCQljYXNlICdiJzoKCQkJCQkkd2lkdGggPSAoJHRoaXMtPndpZHRoIC8gMikgLSAoJGFzc2V0V2lkdGggLyAyKTsKCQkJCQkkaGVpZ2h0ID0gJHRoaXMtPmhlaWdodCAtICRhc3NldEhlaWdodCAtICRwYWRkaW5nOwoJCQkJCWJyZWFrOwoKCQkJCWNhc2UgJ2JyJzoKCQkJCQkkd2lkdGggPSAkdGhpcy0+d2lkdGggLSAkYXNzZXRXaWR0aCAtICRwYWRkaW5nOwoJCQkJCSRoZWlnaHQgPSAkdGhpcy0+aGVpZ2h0IC0gJGFzc2V0SGVpZ2h0IC0gJHBhZGRpbmc7CgkJCQkJYnJlYWs7CgoJCQkJZGVmYXVsdDoKCQkJCQkkd2lkdGggPSAwOwoJCQkJCSRoZWlnaHQgPSAwOwoJCQkJCWJyZWFrOwoJCQl9CgkJfQoKCQlpZiAoICEgJHVwcGVyTGVmdCkKCQl7CgkJCSRoZWlnaHQgPSAkaGVpZ2h0ICsgJGFzc2V0SGVpZ2h0OwoJCX0KCgkJcmV0dXJuIGFycmF5KCAnd2lkdGgnID0+ICR3aWR0aCwgJ2hlaWdodCcgPT4gJGhlaWdodCApOwoJfQoKCgkjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCXByaXZhdGUgZnVuY3Rpb24gZmlsdGVyT3BhY2l0eSgmJGltZywgJG9wYWNpdHkgPSA3NSkKCQkjCgkJIyBBdXRob3I6ICAgICBhaWRlbiBkb3QgbWFpbCBhdCBmcmVlbWFpbCBkb3QgaHUKCQkjIEF1dGhvciBkYXRlOiAgMjktMDMtMDggMDg6MTYKCQkjIERhdGUgYWRkZWQ6ICAgMDgtMDUtMTEKCQkjIFB1cnBvc2U6ICAgIENoYW5nZSBvcGFjaXR5IG9mIGltYWdlCgkJIyBQYXJhbXMgaW46ICAgICRpbWc6IEltYWdlIHJlc291cmNlIGlkCgkJIyAgICAgICAgIChpbnQpICRvcGFjaXR5OiB0aGUgb3BhY2l0eSBhbW91bnQ6IDAtMTAwLCAxMDAgYmVpbmcgbm90IG9wYXF1ZS4KCQkjIFBhcmFtcyBvdXQ6ICAgKGJvb2wpIHRydWUgb24gc3VjY2VzcywgZWxzZSBmYWxzZQoJCSMgUmVmOiAgICAgIGh0dHA6Ly93d3cucGhwLm5ldC9tYW51YWwvZW4vZnVuY3Rpb24uaW1hZ2VmaWx0ZXIucGhwIzgyMTYyCgkJIyBOb3RlczogICAgICBwbmcgb25seQoJCSMKCXsKCgkJaWYgKCAhIGlzc2V0KCRvcGFjaXR5KSkKCQl7CgkJCXJldHVybiBmYWxzZTsKCQl9CgoJCWlmICgkb3BhY2l0eSA9PSAxMDApCgkJewoJCQlyZXR1cm4gdHJ1ZTsKCQl9CgoJCSRvcGFjaXR5IC89IDEwMDsKCgkJLy9nZXQgaW1hZ2Ugd2lkdGggYW5kIGhlaWdodAoJCSR3ID0gaW1hZ2VzeCgkaW1nKTsKCQkkaCA9IGltYWdlc3koJGltZyk7CgoJCS8vdHVybiBhbHBoYSBibGVuZGluZyBvZmYKCQlpbWFnZWFscGhhYmxlbmRpbmcoJGltZywgZmFsc2UpOwoKCQkvL2ZpbmQgdGhlIG1vc3Qgb3BhcXVlIHBpeGVsIGluIHRoZSBpbWFnZSAodGhlIG9uZSB3aXRoIHRoZSBzbWFsbGVzdCBhbHBoYSB2YWx1ZSkKCQkkbWluYWxwaGEgPSAxMjc7CgkJZm9yICgkeCA9IDA7ICR4IDwgJHc7ICR4KyspCgkJewoJCQlmb3IgKCR5ID0gMDsgJHkgPCAkaDsgJHkrKykKCQkJewoJCQkJJGFscGhhID0gKGltYWdlY29sb3JhdCgkaW1nLCAkeCwgJHkpID4+IDI0KSAmIDB4RkY7CgkJCQlpZiAoJGFscGhhIDwgJG1pbmFscGhhKQoJCQkJewoJCQkJCSRtaW5hbHBoYSA9ICRhbHBoYTsKCQkJCX0KCQkJfQoJCX0KCgkJLy9sb29wIHRocm91Z2ggaW1hZ2UgcGl4ZWxzIGFuZCBtb2RpZnkgYWxwaGEgZm9yIGVhY2gKCQlmb3IgKCR4ID0gMDsgJHggPCAkdzsgJHgrKykKCQl7CgkJCWZvciAoJHkgPSAwOyAkeSA8ICRoOyAkeSsrKQoJCQl7CgkJCQkvL2dldCBjdXJyZW50IGFscGhhIHZhbHVlIChyZXByZXNlbnRzIHRoZSBUQU5TUEFSRU5DWSEpCgkJCQkkY29sb3J4eSA9IGltYWdlY29sb3JhdCgkaW1nLCAkeCwgJHkpOwoJCQkJJGFscGhhID0gKCRjb2xvcnh5ID4+IDI0KSAmIDB4RkY7CgkJCQkvL2NhbGN1bGF0ZSBuZXcgYWxwaGEKCQkJCWlmICgkbWluYWxwaGEgIT09IDEyNykKCQkJCXsKCQkJCQkkYWxwaGEgPSAxMjcgKyAxMjcgKiAkb3BhY2l0eSAqICgkYWxwaGEgLSAxMjcpIC8gKDEyNyAtICRtaW5hbHBoYSk7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJJGFscGhhICs9IDEyNyAqICRvcGFjaXR5OwoJCQkJfQoJCQkJLy9nZXQgdGhlIGNvbG9yIGluZGV4IHdpdGggbmV3IGFscGhhCgkJCQkkYWxwaGFjb2xvcnh5ID0gaW1hZ2Vjb2xvcmFsbG9jYXRlYWxwaGEoJGltZywgKCRjb2xvcnh5ID4+IDE2KSAmIDB4RkYsICgkY29sb3J4eSA+PiA4KSAmIDB4RkYsICRjb2xvcnh5ICYgMHhGRiwgJGFscGhhKTsKCQkJCS8vc2V0IHBpeGVsIHdpdGggdGhlIG5ldyBjb2xvciArIG9wYWNpdHkKCQkJCWlmICggISBpbWFnZXNldHBpeGVsKCRpbWcsICR4LCAkeSwgJGFscGhhY29sb3J4eSkpCgkJCQl7CgoJCQkJCXJldHVybiBmYWxzZTsKCQkJCX0KCQkJfQoJCX0KCgkJcmV0dXJuIHRydWU7Cgl9CgojIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCXByaXZhdGUgZnVuY3Rpb24gb3BlbkltYWdlKCRmaWxlKQoJCSMgQXV0aG9yOiAgICAgSmFycm9kIE9iZXJ0bwoJCSMgRGF0ZTogICAgICAgMjctMDItMDgKCQkjIFB1cnBvc2U6CgkJIyBQYXJhbSBpbjoKCQkjIFBhcmFtIG91dDogIG4vYQoJCSMgUmVmZXJlbmNlOgoJCSMgTm90ZXM6CgkJIwoJewoKCQlpZiAoICEgZmlsZV9leGlzdHMoJGZpbGUpICYmICEgJHRoaXMtPmNoZWNrU3RyaW5nU3RhcnRzV2l0aCgnaHR0cDovLycsICRmaWxlKSAmJiAhICR0aGlzLT5jaGVja1N0cmluZ1N0YXJ0c1dpdGgoJ2h0dHBzOi8vJywgJGZpbGUpICkKCQl7CgkJCWlmICgkdGhpcy0+ZGVidWcpCgkJCXsKCQkJCXRocm93IG5ldyBFeGNlcHRpb24oJ0ltYWdlIG5vdCBmb3VuZC4nKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCXRocm93IG5ldyBFeGNlcHRpb24oKTsKCQkJfQoJCX07CgoJCS8vICoqKiBHZXQgZXh0ZW5zaW9uIC8gaW1hZ2UgdHlwZQoJCSRleHRlbnNpb24gPSBtaW1lX2NvbnRlbnRfdHlwZSgkZmlsZSk7CgkJJGV4dGVuc2lvbiA9IGZpeF9zdHJ0b2xvd2VyKCRleHRlbnNpb24pOwoJCSRleHRlbnNpb24gPSBzdHJfcmVwbGFjZSgnaW1hZ2UvJywgJycsICRleHRlbnNpb24pOwoJCXN3aXRjaCAoJGV4dGVuc2lvbikKCQl7CgkJCWNhc2UgJ2pwZyc6CgkJCWNhc2UgJ2pwZWcnOgoJCQkJJGltZyA9IEBpbWFnZWNyZWF0ZWZyb21qcGVnKCRmaWxlKTsKCQkJCWJyZWFrOwoJCQljYXNlICdnaWYnOgoJCQkJJGltZyA9IEBpbWFnZWNyZWF0ZWZyb21naWYoJGZpbGUpOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ3BuZyc6CgkJCQkkaW1nID0gQGltYWdlY3JlYXRlZnJvbXBuZygkZmlsZSk7CgkJCQlicmVhazsKCQkJY2FzZSAnYm1wJzoKCQkJCSRpbWcgPSBAJHRoaXMtPmltYWdlY3JlYXRlZnJvbWJtcCgkZmlsZSk7CgkJCQlicmVhazsKCQkJY2FzZSAncHNkJzoKCQkJY2FzZSAndm5kLmFkb2JlLnBob3Rvc2hvcCc6CgkJCQkkaW1nID0gQCR0aGlzLT5pbWFnZWNyZWF0ZWZyb21wc2QoJGZpbGUpOwoJCQkJYnJlYWs7CgoKCQkJLy8gLi4uIGV0YwoKCQkJZGVmYXVsdDoKCQkJCSRpbWcgPSBmYWxzZTsKCQkJCWJyZWFrOwoJCX0KCgkJcmV0dXJuICRpbWc7Cgl9CgojIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCXB1YmxpYyBmdW5jdGlvbiByZXNldCgpCgkJIwoJCSMgQXV0aG9yOiAgIEphcnJvZCBPYmVydG8KCQkjIERhdGU6ICAgMzAtMDgtMTEKCQkjIFB1cnBvc2U6ICBSZXNldCB0aGUgcmVzb3VyY2UgKGFsbG93IGZ1cnRoZXIgZWRpdGluZykKCQkjIFBhcmFtcyBpbjoKCQkjIFBhcmFtcyBvdXQ6CgkJIyBOb3RlczoKCQkjCgl7CgkJJHRoaXMtPl9fY29uc3RydWN0KCR0aGlzLT5maWxlTmFtZSk7Cgl9CgojIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCXB1YmxpYyBmdW5jdGlvbiBzYXZlSW1hZ2UoJHNhdmVQYXRoLCAkaW1hZ2VRdWFsaXR5ID0gIjEwMCIpCgkJIyBBdXRob3I6ICAgICBKYXJyb2QgT2JlcnRvCgkJIyBEYXRlOiAgICAgICAyNy0wMi0wOAoJCSMgUHVycG9zZTogICAgU2F2ZXMgdGhlIGltYWdlCgkJIyBQYXJhbSBpbjogICAkc2F2ZVBhdGg6IFdoZXJlIHRvIHNhdmUgdGhlIGltYWdlIGluY2x1ZGluZyBmaWxlbmFtZToKCQkjICAgICAgICAgICAgICRpbWFnZVF1YWxpdHk6IGltYWdlIHF1YWxpdHkgeW91IHdhbnQgdGhlIGltYWdlIHNhdmVkIGF0IDAtMTAwCgkJIyBQYXJhbSBvdXQ6ICBuL2EKCQkjIFJlZmVyZW5jZToKCQkjIE5vdGVzOiAgICAqIGdpZiBkb2Vzbid0IGhhdmUgYSBxdWFsaXR5IHBhcmFtZXRlcgoJCSMgICAgICAgKiBqcGcgaGFzIGEgcXVhbGl0eSBzZXR0aW5nIDAtMTAwICgxMDAgYmVpbmcgdGhlIGJlc3QpCgkJIyAgICAgICAqIHBuZyBoYXMgYSBxdWFsaXR5IHNldHRpbmcgMC05ICgwIGJlaW5nIHRoZSBiZXN0KQoJCSMKCQkjICAgICAgICAgICAgICogYm1wIGZpbGVzIGhhdmUgbm8gbmF0aXZlIHN1cHBvcnQgZm9yIGJtcCBmaWxlcy4gV2UgdXNlIGEKCQkjICAgICAgIHRoaXJkIHBhcnR5IGNsYXNzIHRvIHNhdmUgYXMgYm1wLgoJewoKCQkvLyAqKiogUGVyZm9ybSBhIGNoZWNrIG9yIHR3by4KCQlpZiAoICEgaXNfcmVzb3VyY2UoJHRoaXMtPmltYWdlUmVzaXplZCkpCgkJewoJCQlpZiAoJHRoaXMtPmRlYnVnKQoJCQl7CgkJCQl0aHJvdyBuZXcgRXhjZXB0aW9uKCdzYXZlSW1hZ2U6IFRoaXMgaXMgbm90IGEgcmVzb3VyY2UuJyk7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQl0aHJvdyBuZXcgRXhjZXB0aW9uKCk7CgkJCX0KCQl9CgkJJGZpbGVJbmZvQXJyYXkgPSBwYXRoSW5mbygkc2F2ZVBhdGgpOwoJCWNsZWFyc3RhdGNhY2hlKCk7CgkJaWYgKCAhIGlzX3dyaXRhYmxlKCRmaWxlSW5mb0FycmF5WydkaXJuYW1lJ10pKQoJCXsKCQkJaWYgKCR0aGlzLT5kZWJ1ZykKCQkJewoJCQkJdGhyb3cgbmV3IEV4Y2VwdGlvbignVGhlIHBhdGggaXMgbm90IHdyaXRhYmxlLiBQbGVhc2UgY2hlY2sgeW91ciBwZXJtaXNzaW9ucy4nKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCXRocm93IG5ldyBFeGNlcHRpb24oKTsKCQkJfQoJCX0KCgkJLy8gKioqIEdldCBleHRlbnNpb24KCQkkZXh0ZW5zaW9uID0gc3RycmNocigkc2F2ZVBhdGgsICcuJyk7CgkJJGV4dGVuc2lvbiA9IGZpeF9zdHJ0b2xvd2VyKCRleHRlbnNpb24pOwoKCQkkZXJyb3IgPSAnJzsKCgkJc3dpdGNoICgkZXh0ZW5zaW9uKQoJCXsKCQkJY2FzZSAnLmpwZyc6CgkJCWNhc2UgJy5qcGVnJzoKCQkJCSR0aGlzLT5jaGVja0ludGVybGFjZUltYWdlKCR0aGlzLT5pc0ludGVybGFjZSk7CgkJCQlpZiAoaW1hZ2V0eXBlcygpICYgSU1HX0pQRykKCQkJCXsKCQkJCQlpbWFnZWpwZWcoJHRoaXMtPmltYWdlUmVzaXplZCwgJHNhdmVQYXRoLCAkaW1hZ2VRdWFsaXR5KTsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQkkZXJyb3IgPSAnanBnJzsKCQkJCX0KCQkJCWJyZWFrOwoKCQkJY2FzZSAnLmdpZic6CgkJCQkkdGhpcy0+Y2hlY2tJbnRlcmxhY2VJbWFnZSgkdGhpcy0+aXNJbnRlcmxhY2UpOwoJCQkJaWYgKGltYWdldHlwZXMoKSAmIElNR19HSUYpCgkJCQl7CgkJCQkJaW1hZ2VnaWYoJHRoaXMtPmltYWdlUmVzaXplZCwgJHNhdmVQYXRoKTsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQkkZXJyb3IgPSAnZ2lmJzsKCQkJCX0KCQkJCWJyZWFrOwoKCQkJY2FzZSAnLnBuZyc6CgkJCQkvLyAqKiogU2NhbGUgcXVhbGl0eSBmcm9tIDAtMTAwIHRvIDAtOQoJCQkJJHNjYWxlUXVhbGl0eSA9IHJvdW5kKCgkaW1hZ2VRdWFsaXR5IC8gMTAwKSAqIDkpOwoKCQkJCS8vICoqKiBJbnZlcnQgcXVhbGl0IHNldHRpbmcgYXMgMCBpcyBiZXN0LCBub3QgOQoJCQkJJGludmVydFNjYWxlUXVhbGl0eSA9IDkgLSAkc2NhbGVRdWFsaXR5OwoKCQkJCSR0aGlzLT5jaGVja0ludGVybGFjZUltYWdlKCR0aGlzLT5pc0ludGVybGFjZSk7CgkJCQlpZiAoaW1hZ2V0eXBlcygpICYgSU1HX1BORykKCQkJCXsKCQkJCQlpbWFnZXBuZygkdGhpcy0+aW1hZ2VSZXNpemVkLCAkc2F2ZVBhdGgsICRpbnZlcnRTY2FsZVF1YWxpdHkpOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCSRlcnJvciA9ICdwbmcnOwoJCQkJfQoJCQkJYnJlYWs7CgoJCQljYXNlICcuYm1wJzoKCQkJCWZpbGVfcHV0X2NvbnRlbnRzKCRzYXZlUGF0aCwgJHRoaXMtPkdEMkJNUHN0cmluZygkdGhpcy0+aW1hZ2VSZXNpemVkKSk7CgkJCQlicmVhazsKCgoJCQkvLyAuLi4gZXRjCgoJCQlkZWZhdWx0OgoJCQkJLy8gKioqIE5vIGV4dGVuc2lvbiAtIE5vIHNhdmUuCgkJCQkkdGhpcy0+ZXJyb3JBcnJheVtdID0gJ1RoaXMgZmlsZSB0eXBlICgnIC4gJGV4dGVuc2lvbiAuICcpIGlzIG5vdCBzdXBwb3J0ZWQuIEZpbGUgbm90IHNhdmVkLic7CgkJCQlicmVhazsKCQl9CgoJCS8vaW1hZ2VkZXN0cm95KCR0aGlzLT5pbWFnZVJlc2l6ZWQpOwoKCQkvLyAqKiogRGlzcGxheSBlcnJvciBpZiBhIGZpbGUgdHlwZSBpcyBub3Qgc3VwcG9ydGVkLgoJCWlmICgkZXJyb3IgIT0gJycpCgkJewoJCQkkdGhpcy0+ZXJyb3JBcnJheVtdID0gJGVycm9yIC4gJyBzdXBwb3J0IGlzIE5PVCBlbmFibGVkLiBGaWxlIG5vdCBzYXZlZC4nOwoJCX0KCX0KCiMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJcHVibGljIGZ1bmN0aW9uIGRpc3BsYXlJbWFnZSgkZmlsZVR5cGUgPSAnanBnJywgJGltYWdlUXVhbGl0eSA9ICIxMDAiKQoJCSMgQXV0aG9yOiAgICAgSmFycm9kIE9iZXJ0bwoJCSMgRGF0ZTogICAgICAgMTgtMTEtMDkKCQkjIFB1cnBvc2U6ICAgIERpc3BsYXkgaW1hZ2VzIGRpcmVjdGx5IHRvIHRoZSBicm93c2VyCgkJIyBQYXJhbSBpbjogICBUaGUgaW1hZ2UgdHlwZSB5b3Ugd2FudCB0byBkaXNwbGF5CgkJIyBQYXJhbSBvdXQ6CgkJIyBSZWZlcmVuY2U6CgkJIyBOb3RlczoKCQkjCgl7CgoJCWlmICggISBpc19yZXNvdXJjZSgkdGhpcy0+aW1hZ2VSZXNpemVkKSkKCQl7CgkJCWlmICgkdGhpcy0+ZGVidWcpCgkJCXsKCQkJCXRocm93IG5ldyBFeGNlcHRpb24oJ3NhdmVJbWFnZTogVGhpcyBpcyBub3QgYSByZXNvdXJjZS4nKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCXRocm93IG5ldyBFeGNlcHRpb24oKTsKCQkJfQoJCX0KCgkJc3dpdGNoICgkZmlsZVR5cGUpCgkJewoJCQljYXNlICdqcGcnOgoJCQljYXNlICdqcGVnJzoKCQkJCWhlYWRlcignQ29udGVudC10eXBlOiBpbWFnZS9qcGVnJyk7CgkJCQlpbWFnZWpwZWcoJHRoaXMtPmltYWdlUmVzaXplZCwgJycsICRpbWFnZVF1YWxpdHkpOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ2dpZic6CgkJCQloZWFkZXIoJ0NvbnRlbnQtdHlwZTogaW1hZ2UvZ2lmJyk7CgkJCQlpbWFnZWdpZigkdGhpcy0+aW1hZ2VSZXNpemVkKTsKCQkJCWJyZWFrOwoJCQljYXNlICdwbmcnOgoJCQkJaGVhZGVyKCdDb250ZW50LXR5cGU6IGltYWdlL3BuZycpOwoKCQkJCS8vICoqKiBTY2FsZSBxdWFsaXR5IGZyb20gMC0xMDAgdG8gMC05CgkJCQkkc2NhbGVRdWFsaXR5ID0gcm91bmQoKCRpbWFnZVF1YWxpdHkgLyAxMDApICogOSk7CgoJCQkJLy8gKioqIEludmVydCBxdWFsaXQgc2V0dGluZyBhcyAwIGlzIGJlc3QsIG5vdCA5CgkJCQkkaW52ZXJ0U2NhbGVRdWFsaXR5ID0gOSAtICRzY2FsZVF1YWxpdHk7CgoJCQkJaW1hZ2VwbmcoJHRoaXMtPmltYWdlUmVzaXplZCwgJycsICRpbnZlcnRTY2FsZVF1YWxpdHkpOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ2JtcCc6CgkJCQllY2hvICdibXAgZmlsZSBmb3JtYXQgaXMgbm90IHN1cHBvcnRlZC4nOwoJCQkJYnJlYWs7CgoJCQkvLyAuLi4gZXRjCgoJCQlkZWZhdWx0OgoJCQkJLy8gKioqIE5vIGV4dGVuc2lvbiAtIE5vIHNhdmUuCgkJCQlicmVhazsKCQl9CgoKCQkvL2ltYWdlZGVzdHJveSgkdGhpcy0+aW1hZ2VSZXNpemVkKTsKCX0KCiMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJcHVibGljIGZ1bmN0aW9uIHNldFRyYW5zcGFyZW5jeSgkYm9vbCkKCQkjIFNlcCAyMDExCgl7CgkJJHRoaXMtPmtlZXBUcmFuc3BhcmVuY3kgPSAkYm9vbDsKCX0KCiMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJcHVibGljIGZ1bmN0aW9uIHNldEZpbGxDb2xvcigkdmFsdWUpCgkJIyBTZXAgMjAxMQoJCSMgUGFyYW0gaW46ICAgKG1peGVkKSAkdmFsdWU6IChhcnJheSkgQ291bGQgYmUgYW4gYXJyYXkgb2YgUkdCCgkJIyAgICAgICAgICAgICAgIChzdHIpIENvdWxkIGJlIGhleCAjZmZmZmZmIG9yICNmZmYsIGZmZiwgZmZmZmZmCgkJIwoJCSMgSWYgdGhlIGtlZXBUcmFuc3BhcmVuY3kgaXMgc2V0IHRvIGZhbHNlLCB0aGVuIG5vIHRyYW5zcGFyZW5jeSBpcyB0byBiZSB1c2VkLgoJCSMgVGhpcyBpcyBpZGVhbCB3aGVuIHlvdSB3YW50IHRvIHNhdmUgYXMganBnLgoJCSMKCQkjIHRoaXMgbWV0aG9kIGFsbG93cyB5b3UgdG8gc2V0IHRoZSBiYWNrZ3JvdW5kIGNvbG9yIHRvIHVzZSBpbnN0ZWFkIG9mCgkJIyB0cmFuc3BhcmVuY3kuCgkJIwoJewoJCSRjb2xvckFycmF5ID0gJHRoaXMtPmZvcm1hdENvbG9yKCR2YWx1ZSk7CgkJJHRoaXMtPmZpbGxDb2xvckFycmF5ID0gJGNvbG9yQXJyYXk7Cgl9CgojIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCXB1YmxpYyBmdW5jdGlvbiBzZXRDcm9wRnJvbVRvcCgkdmFsdWUpCgkJIyBTZXAgMjAxMQoJewoJCSR0aGlzLT5jcm9wRnJvbVRvcFBlcmNlbnQgPSAkdmFsdWU7Cgl9CgojIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCXB1YmxpYyBmdW5jdGlvbiB0ZXN0R0RJbnN0YWxsZWQoKQoJCSMgQXV0aG9yOiAgICAgSmFycm9kIE9iZXJ0bwoJCSMgRGF0ZTogICAgICAgMjctMDItMDgKCQkjIFB1cnBvc2U6ICAgIFRlc3QgdG8gc2VlIGlmIEdEIGlzIGluc3RhbGxlZAoJCSMgUGFyYW0gaW46ICAgbi9hCgkJIyBQYXJhbSBvdXQ6ICAoYm9vbCkgVHJ1ZSBpcyBnZCBleHRlbnNpb24gbG9hZGVkIG90aGVyd2lzZSBmYWxzZQoJCSMgUmVmZXJlbmNlOgoJCSMgTm90ZXM6CgkJIwoJewoJCWlmIChleHRlbnNpb25fbG9hZGVkKCdnZCcpICYmIGZ1bmN0aW9uX2V4aXN0cygnZ2RfaW5mbycpKQoJCXsKCQkJJGdkSW5zdGFsbGVkID0gdHJ1ZTsKCQl9CgkJZWxzZQoJCXsKCQkJJGdkSW5zdGFsbGVkID0gZmFsc2U7CgkJfQoKCQlyZXR1cm4gJGdkSW5zdGFsbGVkOwoJfQoKIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglwdWJsaWMgZnVuY3Rpb24gdGVzdEVYSUZJbnN0YWxsZWQoKQoJCSMgQXV0aG9yOiAgICAgSmFycm9kIE9iZXJ0bwoJCSMgRGF0ZTogICAgICAgMDgtMDUtMTEKCQkjIFB1cnBvc2U6ICAgIFRlc3QgdG8gc2VlIGlmIEVYSUYgaXMgaW5zdGFsbGVkCgkJIyBQYXJhbSBpbjogICBuL2EKCQkjIFBhcmFtIG91dDogIChib29sKSBUcnVlIGlzIGV4aWYgZXh0ZW5zaW9uIGxvYWRlZCBvdGhlcndpc2UgZmFsc2UKCQkjIFJlZmVyZW5jZToKCQkjIE5vdGVzOgoJCSMKCXsKCQlpZiAoZXh0ZW5zaW9uX2xvYWRlZCgnZXhpZicpKQoJCXsKCQkJJGV4aWZJbnN0YWxsZWQgPSB0cnVlOwoJCX0KCQllbHNlCgkJewoJCQkkZXhpZkluc3RhbGxlZCA9IGZhbHNlOwoJCX0KCgkJcmV0dXJuICRleGlmSW5zdGFsbGVkOwoJfQoKIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglwdWJsaWMgZnVuY3Rpb24gdGVzdElzSW1hZ2UoJGltYWdlKQoJCSMgQXV0aG9yOiAgICAgSmFycm9kIE9iZXJ0bwoJCSMgRGF0ZTogICAgICAgMjctMDItMDgKCQkjIFB1cnBvc2U6ICAgIFRlc3QgaWYgZmlsZSBpcyBhbiBpbWFnZQoJCSMgUGFyYW0gaW46ICAgbi9hCgkJIyBQYXJhbSBvdXQ6ICBuL2EKCQkjIFJlZmVyZW5jZToKCQkjIE5vdGVzOgoJCSMKCXsKCQlpZiAoJGltYWdlKQoJCXsKCQkJJGZpbGVJc0ltYWdlID0gdHJ1ZTsKCQl9CgkJZWxzZQoJCXsKCQkJJGZpbGVJc0ltYWdlID0gZmFsc2U7CgkJfQoKCQlyZXR1cm4gJGZpbGVJc0ltYWdlOwoJfQoKIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglwdWJsaWMgZnVuY3Rpb24gdGVzdEZ1bmN0KCkKCQkjIEF1dGhvcjogICAgIEphcnJvZCBPYmVydG8KCQkjIERhdGU6ICAgICAgIDI3LTAyLTA4CgkJIyBQdXJwb3NlOiAgICBUZXN0IEZ1bmN0aW9uCgkJIyBQYXJhbSBpbjogICBuL2EKCQkjIFBhcmFtIG91dDogIG4vYQoJCSMgUmVmZXJlbmNlOgoJCSMgTm90ZXM6CgkJIwoJewoJCWVjaG8gJHRoaXMtPmhlaWdodDsKCX0KCiMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJcHVibGljIGZ1bmN0aW9uIHNldEZvcmNlU3RyZXRjaCgkdmFsdWUpCgkJIyBBdXRob3I6ICAgICBKYXJyb2QgT2JlcnRvCgkJIyBEYXRlOiAgICAgICAyMy0xMi0xMAoJCSMgUHVycG9zZToKCQkjIFBhcmFtIGluOiAgIChib29sKSAkdmFsdWUKCQkjIFBhcmFtIG91dDogIG4vYQoJCSMgUmVmZXJlbmNlOgoJCSMgTm90ZXM6CgkJIwoJewoJCSR0aGlzLT5mb3JjZVN0cmV0Y2ggPSAkdmFsdWU7Cgl9CgojIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCXB1YmxpYyBmdW5jdGlvbiBzZXRGaWxlKCRmaWxlTmFtZSkKCQkjIEF1dGhvcjogICAgIEphcnJvZCBPYmVydG8KCQkjIERhdGU6ICAgICAgIDI4LTAyLTA4CgkJIyBQdXJwb3NlOgoJCSMgUGFyYW0gaW46ICAgbi9hCgkJIyBQYXJhbSBvdXQ6ICBuL2EKCQkjIFJlZmVyZW5jZToKCQkjIE5vdGVzOgoJCSMKCXsKCQlzZWxmOjpfX2NvbnN0cnVjdCgkZmlsZU5hbWUpOwoJfQoKIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglwdWJsaWMgZnVuY3Rpb24gZ2V0RmlsZU5hbWUoKQoJCSMgQXV0aG9yOiAgICAgSmFycm9kIE9iZXJ0bwoJCSMgRGF0ZTogICAgICAgMTAtMDktMDgKCQkjIFB1cnBvc2U6CgkJIyBQYXJhbSBpbjogICBuL2EKCQkjIFBhcmFtIG91dDogIG4vYQoJCSMgUmVmZXJlbmNlOgoJCSMgTm90ZXM6CgkJIwoJewoJCXJldHVybiAkdGhpcy0+ZmlsZU5hbWU7Cgl9CgojIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCXB1YmxpYyBmdW5jdGlvbiBnZXRIZWlnaHQoKQoJewoJCXJldHVybiAkdGhpcy0+aGVpZ2h0OwoJfQoKIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglwdWJsaWMgZnVuY3Rpb24gZ2V0V2lkdGgoKQoJewoJCXJldHVybiAkdGhpcy0+d2lkdGg7Cgl9CgojIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCXB1YmxpYyBmdW5jdGlvbiBnZXRPcmlnaW5hbEhlaWdodCgpCgl7CgkJcmV0dXJuICR0aGlzLT5oZWlnaHRPcmlnaW5hbDsKCX0KCiMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJcHVibGljIGZ1bmN0aW9uIGdldE9yaWdpbmFsV2lkdGgoKQoJewoJCXJldHVybiAkdGhpcy0+d2lkdGhPcmlnaW5hbDsKCX0KCiMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJcHVibGljIGZ1bmN0aW9uIGdldEVycm9ycygpCgkJIyBBdXRob3I6ICAgICBKYXJyb2QgT2JlcnRvCgkJIyBEYXRlOiAgICAgICAxOS0xMS0wOQoJCSMgUHVycG9zZTogICAgUmV0dXJucyB0aGUgZXJyb3IgYXJyYXkKCQkjIFBhcmFtIGluOiAgIG4vYQoJCSMgUGFyYW0gb3V0OiAgQXJyYXkgb2YgZXJyb3JzCgkJIyBSZWZlcmVuY2U6CgkJIyBOb3RlczoKCQkjCgl7CgkJcmV0dXJuICR0aGlzLT5lcnJvckFycmF5OwoJfQoKIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglwcml2YXRlIGZ1bmN0aW9uIGNoZWNrSW50ZXJsYWNlSW1hZ2UoJGlzRW5hYmxlZCkKCQkjIGpwZyB3aWxsIHVzZSBwcm9ncmVzc2l2ZSAodGhleSBkb24ndCB1c2UgaW50ZXJhY2UpCgl7CgkJaWYgKCRpc0VuYWJsZWQpCgkJewoJCQlpbWFnZWludGVybGFjZSgkdGhpcy0+aW1hZ2VSZXNpemVkLCAkaXNFbmFibGVkKTsKCQl9Cgl9CgojIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCXByb3RlY3RlZCBmdW5jdGlvbiBmb3JtYXRDb2xvcigkdmFsdWUpCgkJIyBBdXRob3I6ICAgICBKYXJyb2QgT2JlcnRvCgkJIyBEYXRlOiAgICAgICAwOS0wNS0xMQoJCSMgUHVycG9zZTogICAgRGV0ZXJtaW5lIGNvbG9yIG1ldGhvZCBwYXNzZWQgaW4gYW5kIHJldHVybiBjb2xvciBhcyBSR0IKCQkjIFBhcmFtIGluOiAgIChtaXhlZCkgJHZhbHVlOiAoYXJyYXkpIENvdWxkIGJlIGFuIGFycmF5IG9mIFJHQgoJCSMgICAgICAgICAgICAgICAoc3RyKSBDb3VsZCBiZSBoZXggI2ZmZmZmZiBvciAjZmZmLCBmZmYsIGZmZmZmZgoJCSMgUGFyYW0gb3V0OgoJCSMgUmVmZXJlbmNlOgoJCSMgTm90ZXM6CgkJIwoJewoJCSRyZ2JBcnJheSA9IGFycmF5KCk7CgoJCS8vICoqKiBJZiBpdCdzIGFuIGFycmF5IGl0IHNob3VsZCBiZSBSLCBHLCBCCgkJaWYgKGlzX2FycmF5KCR2YWx1ZSkpCgkJewoKCQkJaWYgKGtleSgkdmFsdWUpID09IDAgJiYgY291bnQoJHZhbHVlKSA9PSAzKQoJCQl7CgoJCQkJJHJnYkFycmF5WydyJ10gPSAkdmFsdWVbMF07CgkJCQkkcmdiQXJyYXlbJ2cnXSA9ICR2YWx1ZVsxXTsKCQkJCSRyZ2JBcnJheVsnYiddID0gJHZhbHVlWzJdOwoKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSRyZ2JBcnJheSA9ICR2YWx1ZTsKCQkJfQoJCX0KCQllbHNlCgkJewoJCQlpZiAoZml4X3N0cnRvbG93ZXIoJHZhbHVlKSA9PSAndHJhbnNwYXJlbnQnKQoJCQl7CgoJCQkJJHJnYkFycmF5ID0gYXJyYXkoCgkJCQkJJ3InID0+IDI1NSwKCQkJCQknZycgPT4gMjU1LAoJCQkJCSdiJyA9PiAyNTUsCgkJCQkJJ2EnID0+IDEyNwoJCQkJKTsKCgkJCX0KCQkJZWxzZQoJCQl7CgoJCQkJLy8gKioqIC4uLkVsc2UgaXQgc2hvdWxkIGJlIGhleC4gTGV0J3MgbWFrZSBpdCBSR0IKCQkJCSRyZ2JBcnJheSA9ICR0aGlzLT5oZXgyZGVjKCR2YWx1ZSk7CgkJCX0KCQl9CgoJCXJldHVybiAkcmdiQXJyYXk7Cgl9CgoJIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglmdW5jdGlvbiBoZXgyZGVjKCRoZXgpCgkJIyBQdXJwb3NlOiAgQ29udmVydCAjaGV4IGNvbG9yIHRvIFJHQgoJewoJCSRjb2xvciA9IHN0cl9yZXBsYWNlKCcjJywgJycsICRoZXgpOwoKCQlpZiAoc3RybGVuKCRjb2xvcikgPT0gMykKCQl7CgkJCSRjb2xvciA9ICRjb2xvciAuICRjb2xvcjsKCQl9CgoJCSRyZ2IgPSBhcnJheSgKCQkJJ3InID0+IGhleGRlYyhzdWJzdHIoJGNvbG9yLCAwLCAyKSksCgkJCSdnJyA9PiBoZXhkZWMoc3Vic3RyKCRjb2xvciwgMiwgMikpLAoJCQknYicgPT4gaGV4ZGVjKHN1YnN0cigkY29sb3IsIDQsIDIpKSwKCQkJJ2EnID0+IDAKCQkpOwoKCQlyZXR1cm4gJHJnYjsKCX0KCgkjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCXByaXZhdGUgZnVuY3Rpb24gY3JlYXRlSW1hZ2VDb2xvcigkY29sb3JBcnJheSkKCXsKCQkkciA9ICRjb2xvckFycmF5WydyJ107CgkJJGcgPSAkY29sb3JBcnJheVsnZyddOwoJCSRiID0gJGNvbG9yQXJyYXlbJ2InXTsKCgkJcmV0dXJuIGltYWdlY29sb3JhbGxvY2F0ZSgkdGhpcy0+aW1hZ2VSZXNpemVkLCAkciwgJGcsICRiKTsKCX0KCgkjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCXByaXZhdGUgZnVuY3Rpb24gdGVzdENvbG9yRXhpc3RzKCRjb2xvckFycmF5KQoJewoJCSRyID0gJGNvbG9yQXJyYXlbJ3InXTsKCQkkZyA9ICRjb2xvckFycmF5WydnJ107CgkJJGIgPSAkY29sb3JBcnJheVsnYiddOwoKCQlpZiAoaW1hZ2Vjb2xvcmV4YWN0KCR0aGlzLT5pbWFnZVJlc2l6ZWQsICRyLCAkZywgJGIpID09IC0xKQoJCXsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gdHJ1ZTsKCQl9Cgl9CgoJIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglwcml2YXRlIGZ1bmN0aW9uIGZpbmRVbnVzZWRHcmVlbigpCgkJIyBQdXJwb3NlOiAgV2UgZmluZCBhIGdyZWVuIGNvbG9yIHN1aXRhYmxlIHRvIHVzZSBsaWtlIGdyZWVuLXNjcmVlbiBlZmZlY3QuCgkJIyAgICAgVGhlcmVmb3JlLCB0aGUgY29sb3IgbXVzdCBub3QgZXhpc3QgaW4gdGhlIGltYWdlLgoJewoJCSRncmVlbiA9IDI1NTsKCgkJZG8KCQl7CgoJCQkkZ3JlZW5DaHJvbWEgPSBhcnJheSggMCwgJGdyZWVuLCAwICk7CgkJCSRjb2xvckFycmF5ID0gJHRoaXMtPmZvcm1hdENvbG9yKCRncmVlbkNocm9tYSk7CgkJCSRtYXRjaCA9ICR0aGlzLT50ZXN0Q29sb3JFeGlzdHMoJGNvbG9yQXJyYXkpOwoJCQkkZ3JlZW4tLTsKCgkJfSB3aGlsZSAoJG1hdGNoID09IGZhbHNlICYmICRncmVlbiA+IDApOwoKCQkvLyAqKiogSWYgbm8gbWF0Y2gsIGp1c3QgYml0ZSB0aGUgYnVsbGV0IGFuZCB1c2UgZ3JlZW4gdmFsdWUgb2YgMjU1CgkJaWYgKCAhICRtYXRjaCkKCQl7CgkJCSRncmVlbkNocm9tYSA9IGFycmF5KCAwLCAkZ3JlZW4sIDAgKTsKCQl9CgoJCXJldHVybiAkZ3JlZW5DaHJvbWE7Cgl9CgoJIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglwcml2YXRlIGZ1bmN0aW9uIGZpbmRVbnVzZWRCbHVlKCkKCQkjIFB1cnBvc2U6ICBXZSBmaW5kIGEgZ3JlZW4gY29sb3Igc3VpdGFibGUgdG8gdXNlIGxpa2UgZ3JlZW4tc2NyZWVuIGVmZmVjdC4KCQkjICAgICBUaGVyZWZvcmUsIHRoZSBjb2xvciBtdXN0IG5vdCBleGlzdCBpbiB0aGUgaW1hZ2UuCgl7CgkJJGJsdWUgPSAyNTU7CgoJCWRvCgkJewoKCQkJJGJsdWVDaHJvbWEgPSBhcnJheSggMCwgMCwgJGJsdWUgKTsKCQkJJGNvbG9yQXJyYXkgPSAkdGhpcy0+Zm9ybWF0Q29sb3IoJGJsdWVDaHJvbWEpOwoJCQkkbWF0Y2ggPSAkdGhpcy0+dGVzdENvbG9yRXhpc3RzKCRjb2xvckFycmF5KTsKCQkJJGJsdWUtLTsKCgkJfSB3aGlsZSAoJG1hdGNoID09IGZhbHNlICYmICRibHVlID4gMCk7CgoJCS8vICoqKiBJZiBubyBtYXRjaCwganVzdCBiaXRlIHRoZSBidWxsZXQgYW5kIHVzZSBibHVlIHZhbHVlIG9mIDI1NQoJCWlmICggISAkbWF0Y2gpCgkJewoJCQkkYmx1ZUNocm9tYSA9IGFycmF5KCAwLCAwLCAkYmx1ZSApOwoJCX0KCgkJcmV0dXJuICRibHVlQ2hyb21hOwoJfQoKCSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJcHJpdmF0ZSBmdW5jdGlvbiBpbnZlcnRUcmFuc3BhcmVuY3koJHZhbHVlLCAkb3JpZ2luYWxNYXgsICRpbnZlcnQgPSB0cnVlKQoJCSMgUHVycG9zZTogIFRoaXMgZG9lcyB0d28gdGhpbmdzOgoJCSMgICAgICAgMSkgQ29udmVydCB0aGUgcmFuZ2UgZnJvbSAwLTEyNyB0byAwLTEwMAoJCSMgICAgICAgMikgSW52ZXJ0cyB2YWx1ZSB0byAxMDAgaXMgbm90IHRyYW5zcGFyZW50IHdoaWxlIDAgaXMgZnVsbHkKCQkjICAgICAgICAgIHRyYW5zcGFyZW50IChsaWtlIFBob3Rvc2hvcCkKCXsKCQkvLyAqKiogVGVzdCBtYXggcmFuZ2UKCQlpZiAoJHZhbHVlID4gJG9yaWdpbmFsTWF4KQoJCXsKCQkJJHZhbHVlID0gJG9yaWdpbmFsTWF4OwoJCX0KCgkJLy8gKioqIFRlc3QgbWluIHJhbmdlCgkJaWYgKCR2YWx1ZSA8IDApCgkJewoJCQkkdmFsdWUgPSAwOwoJCX0KCgkJaWYgKCRpbnZlcnQpCgkJewoJCQlyZXR1cm4gJG9yaWdpbmFsTWF4IC0gKCgkdmFsdWUgLyAxMDApICogJG9yaWdpbmFsTWF4KTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuICgkdmFsdWUgLyAxMDApICogJG9yaWdpbmFsTWF4OwoJCX0KCX0KCgkjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCXByaXZhdGUgZnVuY3Rpb24gdHJhbnNwYXJlbnRJbWFnZSgkc3JjKQoJewoJCS8vICoqKiBtYWtpbmcgaW1hZ2VzIHdpdGggd2hpdGUgYmcgdHJhbnNwYXJlbnQKCQkkcjEgPSAwOwoJCSRnMSA9IDI1NTsKCQkkYjEgPSAwOwoJCWZvciAoJHggPSAwOyAkeCA8IGltYWdlc3goJHNyYyk7ICsrJHgpCgkJewoJCQlmb3IgKCR5ID0gMDsgJHkgPCBpbWFnZXN5KCRzcmMpOyArKyR5KQoJCQl7CgkJCQkkY29sb3IgPSBpbWFnZWNvbG9yYXQoJHNyYywgJHgsICR5KTsKCQkJCSRyID0gKCRjb2xvciA+PiAxNikgJiAweEZGOwoJCQkJJGcgPSAoJGNvbG9yID4+IDgpICYgMHhGRjsKCQkJCSRiID0gJGNvbG9yICYgMHhGRjsKCQkJCWZvciAoJGkgPSAwOyAkaSA8IDI3MDsgJGkrKykKCQkJCXsKCQkJCQkvL2lmICgkciAuICRnIC4gJGIgPT0gKCRyMSArICRpKSAuICgkZzEgKyAkaSkgLiAoJGIxICsgJGkpKSB7CgkJCQkJaWYgKCRyID09IDAgJiYgJGcgPT0gMjU1ICYmICRiID09IDApCgkJCQkJewoJCQkJCQkvL2lmICgkZyA9PSAyNTUpIHsKCQkJCQkJJHRyYW5zX2NvbG91ciA9IGltYWdlY29sb3JhbGxvY2F0ZWFscGhhKCRzcmMsIDAsIDAsIDAsIDEyNyk7CgkJCQkJCWltYWdlZmlsbCgkc3JjLCAkeCwgJHksICR0cmFuc19jb2xvdXIpOwoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCgkJcmV0dXJuICRzcmM7Cgl9CgoJIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglmdW5jdGlvbiBjaGVja1N0cmluZ1N0YXJ0c1dpdGgoJG5lZWRsZSwgJGhheXN0YWNrKQoJCSMgQ2hlY2sgaWYgYSBzdHJpbmcgc3RhcnRzIHdpdGggYSBzcGVjaWZpYyBwYXR0ZXJuCgl7CgkJcmV0dXJuIChzdWJzdHIoJGhheXN0YWNrLCAwLCBzdHJsZW4oJG5lZWRsZSkpID09ICRuZWVkbGUpOwoJfQoKCgkvKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLQogIEJNUCBTVVBQT1JUIChTQVZJTkcpIC0gSmFtZXMgSGVpbnJpY2gKKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLwoKCXByaXZhdGUgZnVuY3Rpb24gR0QyQk1Qc3RyaW5nKCYkZ2RfaW1hZ2UpCgkJIyBBdXRob3I6ICAgICBKYW1lcyBIZWlucmljaAoJCSMgUHVycG9zZTogICAgU2F2ZSBmaWxlIGFzIHR5cGUgYm1wCgkJIyBQYXJhbSBpbjogICBUaGUgaW1hZ2UgY2FudmFzIChwYXNzZWQgYXMgcmVmKQoJCSMgUGFyYW0gb3V0OgoJCSMgUmVmZXJlbmNlOgoJCSMgTm90ZXM6ICAgIFRoaXMgY29kZSB3YXMgc3RyaXBwZWQgb3V0IG9mIHR3byBleHRlcm5hbCBmaWxlcwoJCSMgICAgICAgKHBocHRodW1iLmJtcC5waHAscGhwdGh1bWIuZnVuY3Rpb25zLnBocCkgYW5kIGFkZGVkIGJlbG93IHRvCgkJIyAgICAgICBhdm9pZCBkZXBlbmRhbmNpZXMuCgkJIwoJewoJCSRpbWFnZVggPSBJbWFnZVNYKCRnZF9pbWFnZSk7CgkJJGltYWdlWSA9IEltYWdlU1koJGdkX2ltYWdlKTsKCgkJJEJNUCA9ICcnOwoJCWZvciAoJHkgPSAoJGltYWdlWSAtIDEpOyAkeSA+PSAwOyAkeS0tKQoJCXsKCQkJJHRoaXNsaW5lID0gJyc7CgkJCWZvciAoJHggPSAwOyAkeCA8ICRpbWFnZVg7ICR4KyspCgkJCXsKCQkJCSRhcmdiID0gJHRoaXMtPkdldFBpeGVsQ29sb3IoJGdkX2ltYWdlLCAkeCwgJHkpOwoJCQkJJHRoaXNsaW5lIC49IGNocigkYXJnYlsnYmx1ZSddKSAuIGNocigkYXJnYlsnZ3JlZW4nXSkgLiBjaHIoJGFyZ2JbJ3JlZCddKTsKCQkJfQoJCQl3aGlsZSAoc3RybGVuKCR0aGlzbGluZSkgJSA0KQoJCQl7CgkJCQkkdGhpc2xpbmUgLj0gIlx4MDAiOwoJCQl9CgkJCSRCTVAgLj0gJHRoaXNsaW5lOwoJCX0KCgkJJGJtcFNpemUgPSBzdHJsZW4oJEJNUCkgKyAxNCArIDQwOwoJCS8vIEJJVE1BUEZJTEVIRUFERVIgWzE0IGJ5dGVzXSAtIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vbGlicmFyeS9lbi11cy9nZGkvYml0bWFwc182MnVxLmFzcAoJCSRCSVRNQVBGSUxFSEVBREVSID0gJ0JNJzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXT1JEICAgIGJmVHlwZTsKCQkkQklUTUFQRklMRUhFQURFUiAuPSAkdGhpcy0+TGl0dGxlRW5kaWFuMlN0cmluZygkYm1wU2l6ZSwgNCk7IC8vIERXT1JEICAgYmZTaXplOwoJCSRCSVRNQVBGSUxFSEVBREVSIC49ICR0aGlzLT5MaXR0bGVFbmRpYW4yU3RyaW5nKDAsIDIpOyAvLyBXT1JEICAgIGJmUmVzZXJ2ZWQxOwoJCSRCSVRNQVBGSUxFSEVBREVSIC49ICR0aGlzLT5MaXR0bGVFbmRpYW4yU3RyaW5nKDAsIDIpOyAvLyBXT1JEICAgIGJmUmVzZXJ2ZWQyOwoJCSRCSVRNQVBGSUxFSEVBREVSIC49ICR0aGlzLT5MaXR0bGVFbmRpYW4yU3RyaW5nKDU0LCA0KTsgLy8gRFdPUkQgICBiZk9mZkJpdHM7CgoJCS8vIEJJVE1BUElORk9IRUFERVIgLSBbNDAgYnl0ZXNdIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vbGlicmFyeS9lbi11cy9nZGkvYml0bWFwc18xcncyLmFzcAoJCSRCSVRNQVBJTkZPSEVBREVSID0gJHRoaXMtPkxpdHRsZUVuZGlhbjJTdHJpbmcoNDAsIDQpOyAvLyBEV09SRCAgYmlTaXplOwoJCSRCSVRNQVBJTkZPSEVBREVSIC49ICR0aGlzLT5MaXR0bGVFbmRpYW4yU3RyaW5nKCRpbWFnZVgsIDQpOyAvLyBMT05HICAgYmlXaWR0aDsKCQkkQklUTUFQSU5GT0hFQURFUiAuPSAkdGhpcy0+TGl0dGxlRW5kaWFuMlN0cmluZygkaW1hZ2VZLCA0KTsgLy8gTE9ORyAgIGJpSGVpZ2h0OwoJCSRCSVRNQVBJTkZPSEVBREVSIC49ICR0aGlzLT5MaXR0bGVFbmRpYW4yU3RyaW5nKDEsIDIpOyAvLyBXT1JEICAgYmlQbGFuZXM7CgkJJEJJVE1BUElORk9IRUFERVIgLj0gJHRoaXMtPkxpdHRsZUVuZGlhbjJTdHJpbmcoMjQsIDIpOyAvLyBXT1JEICAgYmlCaXRDb3VudDsKCQkkQklUTUFQSU5GT0hFQURFUiAuPSAkdGhpcy0+TGl0dGxlRW5kaWFuMlN0cmluZygwLCA0KTsgLy8gRFdPUkQgIGJpQ29tcHJlc3Npb247CgkJJEJJVE1BUElORk9IRUFERVIgLj0gJHRoaXMtPkxpdHRsZUVuZGlhbjJTdHJpbmcoMCwgNCk7IC8vIERXT1JEICBiaVNpemVJbWFnZTsKCQkkQklUTUFQSU5GT0hFQURFUiAuPSAkdGhpcy0+TGl0dGxlRW5kaWFuMlN0cmluZygyODM1LCA0KTsgLy8gTE9ORyAgIGJpWFBlbHNQZXJNZXRlcjsKCQkkQklUTUFQSU5GT0hFQURFUiAuPSAkdGhpcy0+TGl0dGxlRW5kaWFuMlN0cmluZygyODM1LCA0KTsgLy8gTE9ORyAgIGJpWVBlbHNQZXJNZXRlcjsKCQkkQklUTUFQSU5GT0hFQURFUiAuPSAkdGhpcy0+TGl0dGxlRW5kaWFuMlN0cmluZygwLCA0KTsgLy8gRFdPUkQgIGJpQ2xyVXNlZDsKCQkkQklUTUFQSU5GT0hFQURFUiAuPSAkdGhpcy0+TGl0dGxlRW5kaWFuMlN0cmluZygwLCA0KTsgLy8gRFdPUkQgIGJpQ2xySW1wb3J0YW50OwoKCQlyZXR1cm4gJEJJVE1BUEZJTEVIRUFERVIgLiAkQklUTUFQSU5GT0hFQURFUiAuICRCTVA7Cgl9CgojIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCXByaXZhdGUgZnVuY3Rpb24gR2V0UGl4ZWxDb2xvcigmJGltZywgJHgsICR5KQoJCSMgQXV0aG9yOiAgICAgSmFtZXMgSGVpbnJpY2gKCQkjIFB1cnBvc2U6CgkJIyBQYXJhbSBpbjoKCQkjIFBhcmFtIG91dDoKCQkjIFJlZmVyZW5jZToKCQkjIE5vdGVzOgoJCSMKCXsKCQlpZiAoICEgaXNfcmVzb3VyY2UoJGltZykpCgkJewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQlyZXR1cm4gQEltYWdlQ29sb3JzRm9ySW5kZXgoJGltZywgQEltYWdlQ29sb3JBdCgkaW1nLCAkeCwgJHkpKTsKCX0KCiMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJcHJpdmF0ZSBmdW5jdGlvbiBMaXR0bGVFbmRpYW4yU3RyaW5nKCRudW1iZXIsICRtaW5ieXRlcyA9IDEpCgkJIyBBdXRob3I6ICAgICBKYW1lcyBIZWlucmljaAoJCSMgUHVycG9zZTogICAgQk1QIFNVUFBPUlQgKFNBVklORykKCQkjIFBhcmFtIGluOgoJCSMgUGFyYW0gb3V0OgoJCSMgUmVmZXJlbmNlOgoJCSMgTm90ZXM6CgkJIwoJewoJCSRpbnRzdHJpbmcgPSAnJzsKCQl3aGlsZSAoJG51bWJlciA+IDApCgkJewoJCQkkaW50c3RyaW5nID0gJGludHN0cmluZyAuIGNocigkbnVtYmVyICYgMjU1KTsKCQkJJG51bWJlciA+Pj0gODsKCQl9CgoJCXJldHVybiBzdHJfcGFkKCRpbnRzdHJpbmcsICRtaW5ieXRlcywgIlx4MDAiLCBTVFJfUEFEX1JJR0hUKTsKCX0KCgoJLyotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKiotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0KICBCTVAgU1VQUE9SVCAoUkVBRElORykKKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLwoKCXByaXZhdGUgZnVuY3Rpb24gSW1hZ2VDcmVhdGVGcm9tQk1QKCRmaWxlbmFtZSkKCQkjIEF1dGhvcjogICAgIERIS29sZAoJCSMgRGF0ZTogICAgIFRoZSAxNXRoIG9mIEp1bmUgMjAwNQoJCSMgVmVyc2lvbjogICAgMi4wQgoJCSMgUHVycG9zZTogICAgVG8gY3JlYXRlIGFuIGltYWdlIGZyb20gYSBCTVAgZmlsZS4KCQkjIFBhcmFtIGluOiAgIEJNUCBmaWxlIHRvIG9wZW4uCgkJIyBQYXJhbSBvdXQ6ICBSZXR1cm4gYSByZXNvdXJjZSBsaWtlIHRoZSBvdGhlciBJbWFnZUNyZWF0ZUZyb20gZnVuY3Rpb25zCgkJIyBSZWZlcmVuY2U6ICBodHRwOi8vdXMzLnBocC5uZXQvbWFudWFsL2VuL2Z1bmN0aW9uLmltYWdlY3JlYXRlLnBocCM1Mzg3OQoJCSMgQnVnIGZpeDogICAgQXV0aG9yOiAgIGRvbWVsY2EgYXQgdGVycmEgZG90IGVzCgkJIyAgICAgICBEYXRlOiAgIDA2IE1hcmNoIDIwMDgKCQkjICAgICAgIEZpeDogICAgQ29ycmVjdCAxNmJpdCBCTVAgc3VwcG9ydAoJCSMgTm90ZXM6CgkJIwoJewoKCQkvL091dmVydHVyZSBkdSBmaWNoaWVyIGVuIG1vZGUgYmluYWlyZQoJCWlmICggISAkZjEgPSBmb3BlbigkZmlsZW5hbWUsICJyYiIpKQoJCXsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJLy8xIDogQ2hhcmdlbWVudCBkZXMgZW5077+9dGVzIEZJQ0hJRVIKCQkkRklMRSA9IHVucGFjaygidmZpbGVfdHlwZS9WZmlsZV9zaXplL1ZyZXNlcnZlZC9WYml0bWFwX29mZnNldCIsIGZyZWFkKCRmMSwgMTQpKTsKCQlpZiAoJEZJTEVbJ2ZpbGVfdHlwZSddICE9IDE5Nzc4KQoJCXsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJLy8yIDogQ2hhcmdlbWVudCBkZXMgZW5077+9dGVzIEJNUAoJCSRCTVAgPSB1bnBhY2soJ1ZoZWFkZXJfc2l6ZS9Wd2lkdGgvVmhlaWdodC92cGxhbmVzL3ZiaXRzX3Blcl9waXhlbCcgLgoJCQknL1Zjb21wcmVzc2lvbi9Wc2l6ZV9iaXRtYXAvVmhvcml6X3Jlc29sdXRpb24nIC4KCQkJJy9WdmVydF9yZXNvbHV0aW9uL1Zjb2xvcnNfdXNlZC9WY29sb3JzX2ltcG9ydGFudCcsIGZyZWFkKCRmMSwgNDApKTsKCQkkQk1QWydjb2xvcnMnXSA9IHBvdygyLCAkQk1QWydiaXRzX3Blcl9waXhlbCddKTsKCgkJaWYgKCRCTVBbJ3NpemVfYml0bWFwJ10gPT0gMCkKCQl7CgkJCSRCTVBbJ3NpemVfYml0bWFwJ10gPSAkRklMRVsnZmlsZV9zaXplJ10gLSAkRklMRVsnYml0bWFwX29mZnNldCddOwoJCX0KCgkJJEJNUFsnYnl0ZXNfcGVyX3BpeGVsJ10gPSAkQk1QWydiaXRzX3Blcl9waXhlbCddIC8gODsKCQkkQk1QWydieXRlc19wZXJfcGl4ZWwyJ10gPSBjZWlsKCRCTVBbJ2J5dGVzX3Blcl9waXhlbCddKTsKCQkkQk1QWydkZWNhbCddID0gKCRCTVBbJ3dpZHRoJ10gKiAkQk1QWydieXRlc19wZXJfcGl4ZWwnXSAvIDQpOwoJCSRCTVBbJ2RlY2FsJ10gLT0gZmxvb3IoJEJNUFsnd2lkdGgnXSAqICRCTVBbJ2J5dGVzX3Blcl9waXhlbCddIC8gNCk7CgkJJEJNUFsnZGVjYWwnXSA9IDQgLSAoNCAqICRCTVBbJ2RlY2FsJ10pOwoKCQlpZiAoJEJNUFsnZGVjYWwnXSA9PSA0KQoJCXsKCQkJJEJNUFsnZGVjYWwnXSA9IDA7CgkJfQoKCQkvLzMgOiBDaGFyZ2VtZW50IGRlcyBjb3VsZXVycyBkZSBsYSBwYWxldHRlCgkJJFBBTEVUVEUgPSBhcnJheSgpOwoJCWlmICgkQk1QWydjb2xvcnMnXSA8IDE2Nzc3MjE2KQoJCXsKCQkJJFBBTEVUVEUgPSB1bnBhY2soJ1YnIC4gJEJNUFsnY29sb3JzJ10sIGZyZWFkKCRmMSwgJEJNUFsnY29sb3JzJ10gKiA0KSk7CgkJfQoKCQkvLzQgOiBDcu+/vWF0aW9uIGRlIGwnaW1hZ2UKCQkkSU1HID0gZnJlYWQoJGYxLCAkQk1QWydzaXplX2JpdG1hcCddKTsKCQkkVklERSA9IGNocigwKTsKCgkJJHJlcyA9IGltYWdlY3JlYXRldHJ1ZWNvbG9yKCRCTVBbJ3dpZHRoJ10sICRCTVBbJ2hlaWdodCddKTsKCQkkUCA9IDA7CgkJJFkgPSAkQk1QWydoZWlnaHQnXSAtIDE7CgkJd2hpbGUgKCRZID49IDApCgkJewoJCQkkWCA9IDA7CgkJCXdoaWxlICgkWCA8ICRCTVBbJ3dpZHRoJ10pCgkJCXsKCQkJCWlmICgkQk1QWydiaXRzX3Blcl9waXhlbCddID09IDI0KQoJCQkJewoJCQkJCSRDT0xPUiA9IHVucGFjaygiViIsIHN1YnN0cigkSU1HLCAkUCwgMykgLiAkVklERSk7CgkJCQl9CgkJCQllbHNlaWYgKCRCTVBbJ2JpdHNfcGVyX3BpeGVsJ10gPT0gMTYpCgkJCQl7CgoJCQkJCS8qCiAgICAgICAgICAgKiBCTVAgMTZiaXQgZml4CiAgICAgICAgICAgKiA9PT09PT09PT09PT09PT09PQogICAgICAgICAgICoKICAgICAgICAgICAqIFJlZjogaHR0cDovL3VzMy5waHAubmV0L21hbnVhbC9lbi9mdW5jdGlvbi5pbWFnZWNyZWF0ZS5waHAjODE2MDQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBOb3RlczoKICAgICAgICAgICAqICJkb24ndCB3b3JrIHdpdGggYm1wIDE2IGJpdHNfcGVyX3BpeGVsLiBjaGFuZ2UgcGl4ZWwKICAgICAgICAgICAqIGdlbmVyYXRvciBmb3IgdGhpcy4iCiAgICAgICAgICAgKgogICAgICAgICAgICovCgoJCQkJCS8vICoqKiBPcmlnaW5hbCBjb2RlIChkb24ndCB3b3JrKQoJCQkJCS8vJENPTE9SID0gdW5wYWNrKCJuIixzdWJzdHIoJElNRywkUCwyKSk7CgkJCQkJLy8kQ09MT1JbMV0gPSAkUEFMRVRURVskQ09MT1JbMV0rMV07CgoJCQkJCSRDT0xPUiA9IHVucGFjaygidiIsIHN1YnN0cigkSU1HLCAkUCwgMikpOwoJCQkJCSRibHVlID0gKCRDT0xPUlsxXSAmIDB4MDAxZikgPDwgMzsKCQkJCQkkZ3JlZW4gPSAoJENPTE9SWzFdICYgMHgwN2UwKSA+PiAzOwoJCQkJCSRyZWQgPSAoJENPTE9SWzFdICYgMHhmODAwKSA+PiA4OwoJCQkJCSRDT0xPUlsxXSA9ICRyZWQgKiA2NTUzNiArICRncmVlbiAqIDI1NiArICRibHVlOwoKCQkJCX0KCQkJCWVsc2VpZiAoJEJNUFsnYml0c19wZXJfcGl4ZWwnXSA9PSA4KQoJCQkJewoJCQkJCSRDT0xPUiA9IHVucGFjaygibiIsICRWSURFIC4gc3Vic3RyKCRJTUcsICRQLCAxKSk7CgkJCQkJJENPTE9SWzFdID0gJFBBTEVUVEVbICRDT0xPUlsxXSArIDEgXTsKCQkJCX0KCQkJCWVsc2VpZiAoJEJNUFsnYml0c19wZXJfcGl4ZWwnXSA9PSA0KQoJCQkJewoJCQkJCSRDT0xPUiA9IHVucGFjaygibiIsICRWSURFIC4gc3Vic3RyKCRJTUcsIGZsb29yKCRQKSwgMSkpOwoJCQkJCWlmICgoJFAgKiAyKSAlIDIgPT0gMCkKCQkJCQl7CgkJCQkJCSRDT0xPUlsxXSA9ICgkQ09MT1JbMV0gPj4gNCk7CgkJCQkJfQoJCQkJCWVsc2UKCQkJCQl7CgkJCQkJCSRDT0xPUlsxXSA9ICgkQ09MT1JbMV0gJiAweDBGKTsKCQkJCQl9CgkJCQkJJENPTE9SWzFdID0gJFBBTEVUVEVbICRDT0xPUlsxXSArIDEgXTsKCQkJCX0KCQkJCWVsc2VpZiAoJEJNUFsnYml0c19wZXJfcGl4ZWwnXSA9PSAxKQoJCQkJewoJCQkJCSRDT0xPUiA9IHVucGFjaygibiIsICRWSURFIC4gc3Vic3RyKCRJTUcsIGZsb29yKCRQKSwgMSkpOwoJCQkJCWlmICgoJFAgKiA4KSAlIDggPT0gMCkKCQkJCQl7CgkJCQkJCSRDT0xPUlsxXSA9ICRDT0xPUlsxXSA+PiA3OwoJCQkJCX0KCQkJCQllbHNlaWYgKCgkUCAqIDgpICUgOCA9PSAxKQoJCQkJCXsKCQkJCQkJJENPTE9SWzFdID0gKCRDT0xPUlsxXSAmIDB4NDApID4+IDY7CgkJCQkJfQoJCQkJCWVsc2VpZiAoKCRQICogOCkgJSA4ID09IDIpCgkJCQkJewoJCQkJCQkkQ09MT1JbMV0gPSAoJENPTE9SWzFdICYgMHgyMCkgPj4gNTsKCQkJCQl9CgkJCQkJZWxzZWlmICgoJFAgKiA4KSAlIDggPT0gMykKCQkJCQl7CgkJCQkJCSRDT0xPUlsxXSA9ICgkQ09MT1JbMV0gJiAweDEwKSA+PiA0OwoJCQkJCX0KCQkJCQllbHNlaWYgKCgkUCAqIDgpICUgOCA9PSA0KQoJCQkJCXsKCQkJCQkJJENPTE9SWzFdID0gKCRDT0xPUlsxXSAmIDB4OCkgPj4gMzsKCQkJCQl9CgkJCQkJZWxzZWlmICgoJFAgKiA4KSAlIDggPT0gNSkKCQkJCQl7CgkJCQkJCSRDT0xPUlsxXSA9ICgkQ09MT1JbMV0gJiAweDQpID4+IDI7CgkJCQkJfQoJCQkJCWVsc2VpZiAoKCRQICogOCkgJSA4ID09IDYpCgkJCQkJewoJCQkJCQkkQ09MT1JbMV0gPSAoJENPTE9SWzFdICYgMHgyKSA+PiAxOwoJCQkJCX0KCQkJCQllbHNlaWYgKCgkUCAqIDgpICUgOCA9PSA3KQoJCQkJCXsKCQkJCQkJJENPTE9SWzFdID0gKCRDT0xPUlsxXSAmIDB4MSk7CgkJCQkJfQoJCQkJCSRDT0xPUlsxXSA9ICRQQUxFVFRFWyAkQ09MT1JbMV0gKyAxIF07CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJfQoKCQkJCWltYWdlc2V0cGl4ZWwoJHJlcywgJFgsICRZLCAkQ09MT1JbMV0pOwoJCQkJJFgrKzsKCQkJCSRQICs9ICRCTVBbJ2J5dGVzX3Blcl9waXhlbCddOwoJCQl9CgoJCQkkWS0tOwoJCQkkUCArPSAkQk1QWydkZWNhbCddOwoJCX0KCQkvL0Zlcm1ldHVyZSBkdSBmaWNoaWVyCgkJZmNsb3NlKCRmMSk7CgoJCXJldHVybiAkcmVzOwoJfQoKCgkvKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLQogIFBTRCBTVVBQT1JUIChSRUFESU5HKQoqLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSoqLSotKi0qLSotKi0qLSotKi0qLSotKi0qLSovCgoJcHJpdmF0ZSBmdW5jdGlvbiBpbWFnZWNyZWF0ZWZyb21wc2QoJGZpbGVOYW1lKQoJCSMgQXV0aG9yOiAgICAgVGltIGRlIEtvbmluZwoJCSMgVmVyc2lvbjogICAgMS4zCgkJIyBQdXJwb3NlOiAgICBUbyBjcmVhdGUgYW4gaW1hZ2UgZnJvbSBhIFBTRCBmaWxlLgoJCSMgUGFyYW0gaW46ICAgUFNEIGZpbGUgdG8gb3Blbi4KCQkjIFBhcmFtIG91dDogIFJldHVybiBhIHJlc291cmNlIGxpa2UgdGhlIG90aGVyIEltYWdlQ3JlYXRlRnJvbSBmdW5jdGlvbnMKCQkjIFJlZmVyZW5jZTogIGh0dHA6Ly93d3cua2luZ3NxdWFyZS5ubC9waHBwc2RyZWFkZXIKCQkjIE5vdGVzOgoJCSMKCXsKCQlpZiAoZmlsZV9leGlzdHMoJHRoaXMtPnBzZFJlYWRlclBhdGgpKQoJCXsKCgoJCQlpbmNsdWRlX29uY2UoJHRoaXMtPnBzZFJlYWRlclBhdGgpOwoKCQkJJHBzZFJlYWRlciA9IG5ldyBQaHBQc2RSZWFkZXIoJGZpbGVOYW1lKTsKCgkJCWlmIChpc3NldCgkcHNkUmVhZGVyLT5pbmZvQXJyYXlbJ2Vycm9yJ10pKQoJCQl7CgkJCQlyZXR1cm4gJyc7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQlyZXR1cm4gJHBzZFJlYWRlci0+Z2V0SW1hZ2UoKTsKCQkJfQoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoJfQoKIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglwdWJsaWMgZnVuY3Rpb24gX19kZXN0cnVjdCgpCgl7CgkJaWYgKGlzX3Jlc291cmNlKCR0aGlzLT5pbWFnZVJlc2l6ZWQpKQoJCXsKCQkJaW1hZ2VkZXN0cm95KCR0aGlzLT5pbWFnZVJlc2l6ZWQpOwoJCX0KCX0KCiMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgp9CgoKLyoKICogICAgRXhhbXBsZSB3aXRoIHNvbWUgQVBJIGNhbGxzIChvdXRkYXRlZCk6CiAqCiAqCiAqICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKiAgICAgIENvbXB1bHNhcnkKICogICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqCiAqICAgICAgaW5jbHVkZSgiY2xhc3Nlcy9yZXNpemVfY2xhc3MucGhwIik7CiAqCiAqICAgICAgLy8gKioqIEluaXRpYWxpc2Ugb2JqZWN0CiAqICAgICAgJG1hZ2ljaWFuT2JqID0gbmV3IHJlc2l6ZSgnaW1hZ2VzL2NhcnMvbGFyZ2UvYS5qcGcnKTsKICoKICogICAgICAvLyAqKiogVHVybiBvZmYgc3RyZXRjaGluZyAob3B0aW9uYWwpCiAqICAgICAgJG1hZ2ljaWFuT2JqIC0+IHNldEZvcmNlU3RyZXRjaChmYWxzZSk7CiAqCiAqICAgICAgLy8gKioqIFJlc2l6ZSBvYmplY3QKICogICAgICAkbWFnaWNpYW5PYmogLT4gcmVzaXplSW1hZ2UoMTUwLCAxMDAsIDApOwogKgogKiAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICogICAgICBJbWFnZSBvcHRpb25zIC0gY2FuIHJ1biBub25lLCBvbmUsIG9yIGFsbC4KICogICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqCiAqICAgICAgLy8gICoqKiBBZGQgd2F0ZXJtYXJrCiAqICAgICAgICAkbWFnaWNpYW5PYmogLT4gYWRkV2F0ZXJtYXJrKCdzdGFtcC5wbmcnKTsKICoKICogICAgICAgICAgLy8gKioqIEFkZCB0ZXh0CiAqICAgICAgJG1hZ2ljaWFuT2JqIC0+IGFkZFRleHQoJ3Rlc3RpbmcuLi4nKTsKICoKICogICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqICAgICAgT3V0cHV0IG9wdGlvbnMgLSBjYW4gcnVuIG9uZSwgb3IgdGhlIG90aGVyLCBvciBib3RoLgogKiAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICoKICogICAgICAvLyAqKiogU2F2ZSBpbWFnZSB0byBkaXNrCiAqICAgICAgJG1hZ2ljaWFuT2JqIC0+IHNhdmVJbWFnZSgnaW1hZ2VzL2NhcnMvbGFyZ2UvYi5qcGcnLCAxMDApOwogKgogKiAgICAgICAgICAvLyAqKiogT3Igb3V0cHV0IHRvIHNjcmVlbiAocGFyYW1zIGluIGNhbiBiZSBqcGcsIGdpZiwgcG5nKQogKiAgICAgICRtYWdpY2lhbk9iaiAtPiBkaXNwbGF5SW1hZ2UoJ3BuZycpOwogKgogKiAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICogICAgICBSZXR1cm4gb3B0aW9ucyAtIHJldHVybiBlcnJvcnMuIG5pY2UgZm9yIGRlYnVnZ2luLgogKiAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICoKICogICAgICAvLyAqKiogUmV0dXJuIGVycm9yIGFycmF5CiAqICAgICAgJGVycm9yQXJyYXkgPSAkbWFnaWNpYW5PYmogLT4gZ2V0RXJyb3JzKCk7CiAqCiAqCiAqICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKiAgICAgIENsZWFudXAgb3B0aW9ucyAtIG5vdCByZWFsbHkgbmVjY2Vzc2FyeSwgYnV0IGdvb2QgcHJhY3RpY2UKICogICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqCiAqICAgICAgLy8gKioqIEZyZWUgdXNlZCBtZW1vcnkKICogICAgICAkbWFnaWNpYW5PYmogLT4gX19kZXN0cnVjdCgpOwogKi8K]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/include/Response.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAgCgovKioKICogQ2xhc3MgUmVzcG9uc2UKICogU2ltcGxpZmllZCBjb3B5IG9mIFN5bWZvbnkvSHR0cC1Gb3VuZGF0aW9uIFJlc3BvbnNlCiAqIHRvIGFsbG93IGNvbXBhdGliaWxpdHkgd2l0aCBmcmFtZXdvcmtzCiAqCiAqIEBwYWNrYWdlIEZpbGVtYW5hZ2VyCiAqLwpjbGFzcyBSZXNwb25zZSB7CgoJY29uc3QgSFRUUF9DT05USU5VRSA9IDEwMDsKCWNvbnN0IEhUVFBfU1dJVENISU5HX1BST1RPQ09MUyA9IDEwMTsKCWNvbnN0IEhUVFBfUFJPQ0VTU0lORyA9IDEwMjsgICAgICAgICAgICAvLyBSRkMyNTE4Cgljb25zdCBIVFRQX09LID0gMjAwOwoJY29uc3QgSFRUUF9DUkVBVEVEID0gMjAxOwoJY29uc3QgSFRUUF9BQ0NFUFRFRCA9IDIwMjsKCWNvbnN0IEhUVFBfTk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04gPSAyMDM7Cgljb25zdCBIVFRQX05PX0NPTlRFTlQgPSAyMDQ7Cgljb25zdCBIVFRQX1JFU0VUX0NPTlRFTlQgPSAyMDU7Cgljb25zdCBIVFRQX1BBUlRJQUxfQ09OVEVOVCA9IDIwNjsKCWNvbnN0IEhUVFBfTVVMVElfU1RBVFVTID0gMjA3OyAgICAgICAgICAvLyBSRkM0OTE4Cgljb25zdCBIVFRQX0FMUkVBRFlfUkVQT1JURUQgPSAyMDg7ICAgICAgLy8gUkZDNTg0MgoJY29uc3QgSFRUUF9JTV9VU0VEID0gMjI2OyAgICAgICAgICAgICAgIC8vIFJGQzMyMjkKCWNvbnN0IEhUVFBfTVVMVElQTEVfQ0hPSUNFUyA9IDMwMDsKCWNvbnN0IEhUVFBfTU9WRURfUEVSTUFORU5UTFkgPSAzMDE7Cgljb25zdCBIVFRQX0ZPVU5EID0gMzAyOwoJY29uc3QgSFRUUF9TRUVfT1RIRVIgPSAzMDM7Cgljb25zdCBIVFRQX05PVF9NT0RJRklFRCA9IDMwNDsKCWNvbnN0IEhUVFBfVVNFX1BST1hZID0gMzA1OwoJY29uc3QgSFRUUF9SRVNFUlZFRCA9IDMwNjsKCWNvbnN0IEhUVFBfVEVNUE9SQVJZX1JFRElSRUNUID0gMzA3OwoJY29uc3QgSFRUUF9QRVJNQU5FTlRMWV9SRURJUkVDVCA9IDMwODsgIC8vIFJGQzcyMzgKCWNvbnN0IEhUVFBfQkFEX1JFUVVFU1QgPSA0MDA7Cgljb25zdCBIVFRQX1VOQVVUSE9SSVpFRCA9IDQwMTsKCWNvbnN0IEhUVFBfUEFZTUVOVF9SRVFVSVJFRCA9IDQwMjsKCWNvbnN0IEhUVFBfRk9SQklEREVOID0gNDAzOwoJY29uc3QgSFRUUF9OT1RfRk9VTkQgPSA0MDQ7Cgljb25zdCBIVFRQX01FVEhPRF9OT1RfQUxMT1dFRCA9IDQwNTsKCWNvbnN0IEhUVFBfTk9UX0FDQ0VQVEFCTEUgPSA0MDY7Cgljb25zdCBIVFRQX1BST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEID0gNDA3OwoJY29uc3QgSFRUUF9SRVFVRVNUX1RJTUVPVVQgPSA0MDg7Cgljb25zdCBIVFRQX0NPTkZMSUNUID0gNDA5OwoJY29uc3QgSFRUUF9HT05FID0gNDEwOwoJY29uc3QgSFRUUF9MRU5HVEhfUkVRVUlSRUQgPSA0MTE7Cgljb25zdCBIVFRQX1BSRUNPTkRJVElPTl9GQUlMRUQgPSA0MTI7Cgljb25zdCBIVFRQX1JFUVVFU1RfRU5USVRZX1RPT19MQVJHRSA9IDQxMzsKCWNvbnN0IEhUVFBfUkVRVUVTVF9VUklfVE9PX0xPTkcgPSA0MTQ7Cgljb25zdCBIVFRQX1VOU1VQUE9SVEVEX01FRElBX1RZUEUgPSA0MTU7Cgljb25zdCBIVFRQX1JFUVVFU1RFRF9SQU5HRV9OT1RfU0FUSVNGSUFCTEUgPSA0MTY7Cgljb25zdCBIVFRQX0VYUEVDVEFUSU9OX0ZBSUxFRCA9IDQxNzsKCWNvbnN0IEhUVFBfSV9BTV9BX1RFQVBPVCA9IDQxODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJGQzIzMjQKCWNvbnN0IEhUVFBfVU5QUk9DRVNTQUJMRV9FTlRJVFkgPSA0MjI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJGQzQ5MTgKCWNvbnN0IEhUVFBfTE9DS0VEID0gNDIzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJGQzQ5MTgKCWNvbnN0IEhUVFBfRkFJTEVEX0RFUEVOREVOQ1kgPSA0MjQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJGQzQ5MTgKCWNvbnN0IEhUVFBfUkVTRVJWRURfRk9SX1dFQkRBVl9BRFZBTkNFRF9DT0xMRUNUSU9OU19FWFBJUkVEX1BST1BPU0FMID0gNDI1OyAgIC8vIFJGQzI4MTcKCWNvbnN0IEhUVFBfVVBHUkFERV9SRVFVSVJFRCA9IDQyNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJGQzI4MTcKCWNvbnN0IEhUVFBfUFJFQ09ORElUSU9OX1JFUVVJUkVEID0gNDI4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJGQzY1ODUKCWNvbnN0IEhUVFBfVE9PX01BTllfUkVRVUVTVFMgPSA0Mjk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJGQzY1ODUKCWNvbnN0IEhUVFBfUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRSA9IDQzMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJGQzY1ODUKCWNvbnN0IEhUVFBfSU5URVJOQUxfU0VSVkVSX0VSUk9SID0gNTAwOwoJY29uc3QgSFRUUF9OT1RfSU1QTEVNRU5URUQgPSA1MDE7Cgljb25zdCBIVFRQX0JBRF9HQVRFV0FZID0gNTAyOwoJY29uc3QgSFRUUF9TRVJWSUNFX1VOQVZBSUxBQkxFID0gNTAzOwoJY29uc3QgSFRUUF9HQVRFV0FZX1RJTUVPVVQgPSA1MDQ7Cgljb25zdCBIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRCA9IDUwNTsKCWNvbnN0IEhUVFBfVkFSSUFOVF9BTFNPX05FR09USUFURVNfRVhQRVJJTUVOVEFMID0gNTA2OyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJGQzIyOTUKCWNvbnN0IEhUVFBfSU5TVUZGSUNJRU5UX1NUT1JBR0UgPSA1MDc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJGQzQ5MTgKCWNvbnN0IEhUVFBfTE9PUF9ERVRFQ1RFRCA9IDUwODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJGQzU4NDIKCWNvbnN0IEhUVFBfTk9UX0VYVEVOREVEID0gNTEwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJGQzI3NzQKCWNvbnN0IEhUVFBfTkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRCA9IDUxMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJGQzY1ODUKCgkvKioKCSAqIFN0YXR1cyBjb2RlcyB0cmFuc2xhdGlvbiB0YWJsZS4KCSAqCgkgKiBUaGUgbGlzdCBvZiBjb2RlcyBpcyBjb21wbGV0ZSBhY2NvcmRpbmcgdG8gdGhlCgkgKiB7QGxpbmsgaHR0cDovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9odHRwLXN0YXR1cy1jb2Rlcy8gSHlwZXJ0ZXh0IFRyYW5zZmVyIFByb3RvY29sIChIVFRQKSBTdGF0dXMgQ29kZSBSZWdpc3RyeX0KCSAqIChsYXN0IHVwZGF0ZWQgMjAxMi0wMi0xMykuCgkgKgoJICogVW5sZXNzIG90aGVyd2lzZSBub3RlZCwgdGhlIHN0YXR1cyBjb2RlIGlzIGRlZmluZWQgaW4gUkZDMjYxNi4KCSAqCgkgKiBAdmFyIGFycmF5CgkgKi8KCXB1YmxpYyBzdGF0aWMgJHN0YXR1c1RleHRzID0gYXJyYXkoCgkJMTAwID0+ICdDb250aW51ZScsCgkJMTAxID0+ICdTd2l0Y2hpbmcgUHJvdG9jb2xzJywKCQkxMDIgPT4gJ1Byb2Nlc3NpbmcnLCAgICAgICAgICAgIC8vIFJGQzI1MTgKCQkyMDAgPT4gJ09LJywKCQkyMDEgPT4gJ0NyZWF0ZWQnLAoJCTIwMiA9PiAnQWNjZXB0ZWQnLAoJCTIwMyA9PiAnTm9uLUF1dGhvcml0YXRpdmUgSW5mb3JtYXRpb24nLAoJCTIwNCA9PiAnTm8gQ29udGVudCcsCgkJMjA1ID0+ICdSZXNldCBDb250ZW50JywKCQkyMDYgPT4gJ1BhcnRpYWwgQ29udGVudCcsCgkJMjA3ID0+ICdNdWx0aS1TdGF0dXMnLCAgICAgICAgICAvLyBSRkM0OTE4CgkJMjA4ID0+ICdBbHJlYWR5IFJlcG9ydGVkJywgICAgICAvLyBSRkM1ODQyCgkJMjI2ID0+ICdJTSBVc2VkJywgICAgICAgICAgICAgICAvLyBSRkMzMjI5CgkJMzAwID0+ICdNdWx0aXBsZSBDaG9pY2VzJywKCQkzMDEgPT4gJ01vdmVkIFBlcm1hbmVudGx5JywKCQkzMDIgPT4gJ0ZvdW5kJywKCQkzMDMgPT4gJ1NlZSBPdGhlcicsCgkJMzA0ID0+ICdOb3QgTW9kaWZpZWQnLAoJCTMwNSA9PiAnVXNlIFByb3h5JywKCQkzMDYgPT4gJ1Jlc2VydmVkJywKCQkzMDcgPT4gJ1RlbXBvcmFyeSBSZWRpcmVjdCcsCgkJMzA4ID0+ICdQZXJtYW5lbnQgUmVkaXJlY3QnLCAgICAvLyBSRkM3MjM4CgkJNDAwID0+ICdCYWQgUmVxdWVzdCcsCgkJNDAxID0+ICdVbmF1dGhvcml6ZWQnLAoJCTQwMiA9PiAnUGF5bWVudCBSZXF1aXJlZCcsCgkJNDAzID0+ICdGb3JiaWRkZW4nLAoJCTQwNCA9PiAnTm90IEZvdW5kJywKCQk0MDUgPT4gJ01ldGhvZCBOb3QgQWxsb3dlZCcsCgkJNDA2ID0+ICdOb3QgQWNjZXB0YWJsZScsCgkJNDA3ID0+ICdQcm94eSBBdXRoZW50aWNhdGlvbiBSZXF1aXJlZCcsCgkJNDA4ID0+ICdSZXF1ZXN0IFRpbWVvdXQnLAoJCTQwOSA9PiAnQ29uZmxpY3QnLAoJCTQxMCA9PiAnR29uZScsCgkJNDExID0+ICdMZW5ndGggUmVxdWlyZWQnLAoJCTQxMiA9PiAnUHJlY29uZGl0aW9uIEZhaWxlZCcsCgkJNDEzID0+ICdSZXF1ZXN0IEVudGl0eSBUb28gTGFyZ2UnLAoJCTQxNCA9PiAnUmVxdWVzdC1VUkkgVG9vIExvbmcnLAoJCTQxNSA9PiAnVW5zdXBwb3J0ZWQgTWVkaWEgVHlwZScsCgkJNDE2ID0+ICdSZXF1ZXN0ZWQgUmFuZ2UgTm90IFNhdGlzZmlhYmxlJywKCQk0MTcgPT4gJ0V4cGVjdGF0aW9uIEZhaWxlZCcsCgkJNDE4ID0+ICdJXCdtIGEgdGVhcG90JywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJGQzIzMjQKCQk0MjIgPT4gJ1VucHJvY2Vzc2FibGUgRW50aXR5JywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkZDNDkxOAoJCTQyMyA9PiAnTG9ja2VkJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSRkM0OTE4CgkJNDI0ID0+ICdGYWlsZWQgRGVwZW5kZW5jeScsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJGQzQ5MTgKCQk0MjUgPT4gJ1Jlc2VydmVkIGZvciBXZWJEQVYgYWR2YW5jZWQgY29sbGVjdGlvbnMgZXhwaXJlZCBwcm9wb3NhbCcsICAgLy8gUkZDMjgxNwoJCTQyNiA9PiAnVXBncmFkZSBSZXF1aXJlZCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSRkMyODE3CgkJNDI4ID0+ICdQcmVjb25kaXRpb24gUmVxdWlyZWQnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJGQzY1ODUKCQk0MjkgPT4gJ1RvbyBNYW55IFJlcXVlc3RzJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkZDNjU4NQoJCTQzMSA9PiAnUmVxdWVzdCBIZWFkZXIgRmllbGRzIFRvbyBMYXJnZScsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSRkM2NTg1CgkJNTAwID0+ICdJbnRlcm5hbCBTZXJ2ZXIgRXJyb3InLAoJCTUwMSA9PiAnTm90IEltcGxlbWVudGVkJywKCQk1MDIgPT4gJ0JhZCBHYXRld2F5JywKCQk1MDMgPT4gJ1NlcnZpY2UgVW5hdmFpbGFibGUnLAoJCTUwNCA9PiAnR2F0ZXdheSBUaW1lb3V0JywKCQk1MDUgPT4gJ0hUVFAgVmVyc2lvbiBOb3QgU3VwcG9ydGVkJywKCQk1MDYgPT4gJ1ZhcmlhbnQgQWxzbyBOZWdvdGlhdGVzIChFeHBlcmltZW50YWwpJywgICAgICAgICAgICAgICAgICAgICAgLy8gUkZDMjI5NQoJCTUwNyA9PiAnSW5zdWZmaWNpZW50IFN0b3JhZ2UnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSRkM0OTE4CgkJNTA4ID0+ICdMb29wIERldGVjdGVkJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJGQzU4NDIKCQk1MTAgPT4gJ05vdCBFeHRlbmRlZCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkZDMjc3NAoJCTUxMSA9PiAnTmV0d29yayBBdXRoZW50aWNhdGlvbiBSZXF1aXJlZCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSRkM2NTg1CgkpOwoKCS8qKgoJICogQHZhciAgc3RyaW5nCgkgKi8KCXByb3RlY3RlZCAkY29udGVudDsKCgkvKioKCSAqIEB2YXIgIGludAoJICovCglwcm90ZWN0ZWQgJHN0YXR1c0NvZGU7CgoJLyoqCgkgKiBAdmFyICBzdHJpbmcKCSAqLwoJcHJvdGVjdGVkICRzdGF0dXNUZXh0OwoKCS8qKgoJICogQHZhciAgYXJyYXkKCSAqLwoJcHVibGljICRoZWFkZXJzOwoKCS8qKgoJICogQHZhciBzdHJpbmcKCSAqLwoJcHJvdGVjdGVkICR2ZXJzaW9uOwoKCS8qKgoJICogQ29uc3RydWN0IHRoZSByZXNwb25zZQoJICoKCSAqIEBwYXJhbSAgbWl4ZWQgICRjb250ZW50CgkgKiBAcGFyYW0gIGludCAgICAkc3RhdHVzQ29kZQoJICogQHBhcmFtICBhcnJheSAgJGhlYWRlcnMKCSAqLwoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRjb250ZW50ID0gJycsICRzdGF0dXNDb2RlID0gMjAwLCAkaGVhZGVycyA9IGFycmF5KCkpCgl7CgkJJHRoaXMtPnNldENvbnRlbnQoJGNvbnRlbnQpOwoJCSR0aGlzLT5zZXRTdGF0dXNDb2RlKCRzdGF0dXNDb2RlKTsKCQkkdGhpcy0+aGVhZGVycyA9ICRoZWFkZXJzOwoJCSR0aGlzLT52ZXJzaW9uID0gJzEuMSc7Cgl9CgoJLyoqCgkgKiBTZXQgdGhlIGNvbnRlbnQgb24gdGhlIHJlc3BvbnNlLgoJICoKCSAqIEBwYXJhbSAgbWl4ZWQgICRjb250ZW50CgkgKiBAcmV0dXJuICR0aGlzCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBzZXRDb250ZW50KCRjb250ZW50KQoJewoJCWlmICgkY29udGVudCBpbnN0YW5jZW9mIEFycmF5T2JqZWN0IHx8IGlzX2FycmF5KCRjb250ZW50KSkKCQl7CgkJCSR0aGlzLT5oZWFkZXJzWydDb250ZW50LVR5cGUnXSA9IGFycmF5KCdhcHBsaWNhdGlvbi9qc29uJyk7CgoJCQkkY29udGVudCA9IGpzb25fZW5jb2RlKCRjb250ZW50KTsKCQl9CgoJCSR0aGlzLT5jb250ZW50ID0gJGNvbnRlbnQ7Cgl9CgoJLyoqCgkgKiBSZXR1cm5zIHRoZSBSZXNwb25zZSBhcyBhbiBIVFRQIHN0cmluZy4KCSAqCgkgKiBUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBSZXNwb25zZSBpcyB0aGUgc2FtZSBhcyB0aGUKCSAqIG9uZSB0aGF0IHdpbGwgYmUgc2VudCB0byB0aGUgY2xpZW50IG9ubHkgaWYgdGhlIHByZXBhcmUoKSBtZXRob2QKCSAqIGhhcyBiZWVuIGNhbGxlZCBiZWZvcmUuCgkgKgoJICogQHJldHVybiBzdHJpbmcgVGhlIFJlc3BvbnNlIGFzIGFuIEhUVFAgc3RyaW5nCgkgKgoJICogQHNlZSBwcmVwYXJlKCkKCSAqLwoJcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKQoJewoJCXJldHVybgoJCQlzcHJpbnRmKCdIVFRQLyVzICVzICVzJywgJHRoaXMtPnZlcnNpb24sICR0aGlzLT5zdGF0dXNDb2RlLCAkdGhpcy0+c3RhdHVzVGV4dCkuIlxyXG4iLgoJCQkkdGhpcy0+aGVhZGVycy4iXHJcbiIuCgkJCSR0aGlzLT5nZXRDb250ZW50KCk7Cgl9CgoJLyoqCgkgKiBTZXRzIHRoZSByZXNwb25zZSBzdGF0dXMgY29kZS4KCSAqCgkgKiBAcGFyYW0gaW50ICAgJGNvZGUgSFRUUCBzdGF0dXMgY29kZQoJICogQHBhcmFtIG1peGVkICR0ZXh0IEhUVFAgc3RhdHVzIHRleHQKCSAqCgkgKiBJZiB0aGUgc3RhdHVzIHRleHQgaXMgbnVsbCBpdCB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgcG9wdWxhdGVkIGZvciB0aGUga25vd24KCSAqIHN0YXR1cyBjb2RlcyBhbmQgbGVmdCBlbXB0eSBvdGhlcndpc2UuCgkgKgoJICogQHJldHVybiBSZXNwb25zZQoJICoKCSAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBXaGVuIHRoZSBIVFRQIHN0YXR1cyBjb2RlIGlzIG5vdCB2YWxpZAoJICoKCSAqIEBhcGkKCSAqLwoJcHVibGljIGZ1bmN0aW9uIHNldFN0YXR1c0NvZGUoJGNvZGUsICR0ZXh0ID0gbnVsbCkKCXsKCQkkdGhpcy0+c3RhdHVzQ29kZSA9ICRjb2RlID0gKGludCkgJGNvZGU7CgkJaWYgKCR0aGlzLT5pc0ludmFsaWQoKSkgewoJCQl0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKHNwcmludGYoJ1RoZSBIVFRQIHN0YXR1cyBjb2RlICIlcyIgaXMgbm90IHZhbGlkLicsICRjb2RlKSk7CgkJfQoKCQlpZiAobnVsbCA9PT0gJHRleHQpIHsKCQkJJHRoaXMtPnN0YXR1c1RleHQgPSBpc3NldChzZWxmOjokc3RhdHVzVGV4dHNbJGNvZGVdKSA/IHNlbGY6OiRzdGF0dXNUZXh0c1skY29kZV0gOiAnJzsKCgkJCXJldHVybiAkdGhpczsKCQl9CgoJCWlmIChmYWxzZSA9PT0gJHRleHQpIHsKCQkJJHRoaXMtPnN0YXR1c1RleHQgPSAnJzsKCgkJCXJldHVybiAkdGhpczsKCQl9CgoJCSR0aGlzLT5zdGF0dXNUZXh0ID0gJHRleHQ7CgoJCXJldHVybiAkdGhpczsKCX0KCgkvLyBodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwKCS8qKgoJICogSXMgcmVzcG9uc2UgaW52YWxpZD8KCSAqCgkgKiBAcmV0dXJuIGJvb2wKCSAqCgkgKiBAYXBpCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBpc0ludmFsaWQoKQoJewoJCXJldHVybiAkdGhpcy0+c3RhdHVzQ29kZSA8IDEwMCB8fCAkdGhpcy0+c3RhdHVzQ29kZSA+PSA2MDA7Cgl9CgoJLyoqCgkgKiBTZXQgYSBoZWFkZXIgb24gdGhlIFJlc3BvbnNlLgoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJGtleQoJICogQHBhcmFtIHN0cmluZyAkdmFsdWUKCSAqIEBwYXJhbSBib29sICRyZXBsYWNlCgkgKiBAcmV0dXJuICR0aGlzCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBoZWFkZXIoJGtleSwgJHZhbHVlLCAkcmVwbGFjZSA9IHRydWUpCgl7CgkJaWYgKGVtcHR5KCR0aGlzLT5oZWFkZXJzWyRrZXldKSkKCQl7CgkJCSR0aGlzLT5oZWFkZXJzWyRrZXldID0gYXJyYXkoKTsKCQl9CgkJaWYgKCRyZXBsYWNlKQoJCXsKCQkJJHRoaXMtPmhlYWRlcnNbJGtleV0gPSBhcnJheSgkdmFsdWUpOwoJCX0KCQllbHNlCgkJewoJCQkkdGhpcy0+aGVhZGVyc1ska2V5XVtdID0gJHZhbHVlOwoJCX0KCgkJcmV0dXJuICR0aGlzOwoJfQoKCS8qKgoJICogU2VuZHMgSFRUUCBoZWFkZXJzIGFuZCBjb250ZW50LgoJICoKCSAqIEByZXR1cm4gUmVzcG9uc2UKCSAqCgkgKiBAYXBpCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBzZW5kKCkKCXsKCQkkdGhpcy0+c2VuZEhlYWRlcnMoKTsKCQkkdGhpcy0+c2VuZENvbnRlbnQoKTsKCgkJaWYgKGZ1bmN0aW9uX2V4aXN0cygnZmFzdGNnaV9maW5pc2hfcmVxdWVzdCcpKSB7CgkJCWZhc3RjZ2lfZmluaXNoX3JlcXVlc3QoKTsKCQl9CgoJCXJldHVybiAkdGhpczsKCX0KCgkvKioKCSAqIFNlbmRzIGNvbnRlbnQgZm9yIHRoZSBjdXJyZW50IHdlYiByZXNwb25zZS4KCSAqCgkgKiBAcmV0dXJuIFJlc3BvbnNlCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBzZW5kQ29udGVudCgpCgl7CgkJZWNobyAkdGhpcy0+Y29udGVudDsKCgkJcmV0dXJuICR0aGlzOwoJfQoKCS8qKgoJICogU2VuZHMgSFRUUCBoZWFkZXJzLgoJICoKCSAqIEByZXR1cm4gUmVzcG9uc2UKCSAqLwoJcHVibGljIGZ1bmN0aW9uIHNlbmRIZWFkZXJzKCkKCXsKCQkvLyBoZWFkZXJzIGhhdmUgYWxyZWFkeSBiZWVuIHNlbnQgYnkgdGhlIGRldmVsb3BlcgoJCWlmIChoZWFkZXJzX3NlbnQoKSkgewoJCQlyZXR1cm4gJHRoaXM7CgkJfQoKCQkvLyBzdGF0dXMKCQloZWFkZXIoc3ByaW50ZignSFRUUC8lcyAlcyAlcycsICR0aGlzLT52ZXJzaW9uLCAkdGhpcy0+c3RhdHVzQ29kZSwgJHRoaXMtPnN0YXR1c1RleHQpLCB0cnVlLCAkdGhpcy0+c3RhdHVzQ29kZSk7CgoJCS8vIGhlYWRlcnMKCQlmb3JlYWNoICgkdGhpcy0+aGVhZGVycyBhcyAkbmFtZSA9PiAkdmFsdWVzKSB7CgkJCWlmIChpc19hcnJheSgkdmFsdWVzKSkKCQkJewoJCQkJZm9yZWFjaCAoJHZhbHVlcyBhcyAkdmFsdWUpCgkJCQl7CgkJCQkJaGVhZGVyKCRuYW1lIC4gJzogJyAuICR2YWx1ZSwgZmFsc2UsICR0aGlzLT5zdGF0dXNDb2RlKTsKCQkJCX0KCQkJfQoJCQllbHNlCgkJCXsKCQkJCWhlYWRlcigkbmFtZSAuICc6ICcgLiAkdmFsdWVzLCBmYWxzZSwgJHRoaXMtPnN0YXR1c0NvZGUpOwoJCQl9CgkJfQoKCQlyZXR1cm4gJHRoaXM7Cgl9Cn0=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/include/utils.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJF9TRVNTSU9OWydSRiddKSB8fCAkX1NFU1NJT05bJ1JGJ11bInZlcmlmeSJdICE9ICJSRVNQT05TSVZFZmlsZW1hbmFnZXIiKQp7CglkaWUoJ2ZvcmJpZGVuJyk7Cn0KcmVxdWlyZSBkaXJuYW1lKF9fRklMRV9fKSAuICcvUmVzcG9uc2UucGhwJzsKCmlmICggISBmdW5jdGlvbl9leGlzdHMoJ3Jlc3BvbnNlJykpCnsKCS8qKgoJKiBSZXNwb25zZSBjb25zdHJ1Y3Rpb24gaGVscGVyCgkqCgkqIEBwYXJhbSBzdHJpbmcgJGNvbnRlbnQKCSogQHBhcmFtIGludCAgICAkc3RhdHVzQ29kZQoJKiBAcGFyYW0gYXJyYXkgICRoZWFkZXJzCgkqCgkqIEByZXR1cm4gXFJlc3BvbnNlfFxJbGx1bWluYXRlXEh0dHBcUmVzcG9uc2UKCSovCglmdW5jdGlvbiByZXNwb25zZSgkY29udGVudCA9ICcnLCAkc3RhdHVzQ29kZSA9IDIwMCwgJGhlYWRlcnMgPSBhcnJheSgpKQoJewoJCSRyZXNwb25zZUNsYXNzID0gY2xhc3NfZXhpc3RzKCdJbGx1bWluYXRlXEh0dHBcUmVzcG9uc2UnKSA/ICdcSWxsdW1pbmF0ZVxIdHRwXFJlc3BvbnNlJyA6ICdSZXNwb25zZSc7CgoJCXJldHVybiBuZXcgJHJlc3BvbnNlQ2xhc3MoJGNvbnRlbnQsICRzdGF0dXNDb2RlLCAkaGVhZGVycyk7Cgl9Cn0KCmlmICggISBmdW5jdGlvbl9leGlzdHMoJ3RyYW5zJykpCnsKCgkvKioKCSogVHJhbnNsYXRlIGxhbmd1YWdlIHZhcmlhYmxlCgkqCgkqIEBwYXJhbSAkdmFyIHN0cmluZyBuYW1lCgkqCgkqIEByZXR1cm4gc3RyaW5nIHRyYW5zbGF0ZWQgdmFyaWFibGUKCSovCglmdW5jdGlvbiB0cmFucygkdmFyKQoJewoJCWdsb2JhbCAkbGFuZ192YXJzOwoKCQlyZXR1cm4gKGFycmF5X2tleV9leGlzdHMoJHZhciwgJGxhbmdfdmFycykpID8gJGxhbmdfdmFyc1sgJHZhciBdIDogJHZhcjsKCX0KCgkvLyBsYW5ndWFnZQoJaWYgKCAhIGlzc2V0KCRfU0VTU0lPTlsnUkYnXVsnbGFuZ3VhZ2UnXSkKCQl8fCBmaWxlX2V4aXN0cygnbGFuZy8nIC4gYmFzZW5hbWUoJF9TRVNTSU9OWydSRiddWydsYW5ndWFnZSddKSAuICcucGhwJykgPT09IGZhbHNlCgkJfHwgISBpc19yZWFkYWJsZSgnbGFuZy8nIC4gYmFzZW5hbWUoJF9TRVNTSU9OWydSRiddWydsYW5ndWFnZSddKSAuICcucGhwJykKCSkKCXsKCQkkbGFuZyA9ICRjb25maWdbJ2RlZmF1bHRfbGFuZ3VhZ2UnXTsKCgkJaWYgKGlzc2V0KCRfR0VUWydsYW5nJ10pICYmICRfR0VUWydsYW5nJ10gIT0gJ3VuZGVmaW5lZCcgJiYgJF9HRVRbJ2xhbmcnXSAhPSAnJykKCQl7CgkJCSRsYW5nID0gZml4X2dldF9wYXJhbXMoJF9HRVRbJ2xhbmcnXSk7CgkJCSRsYW5nID0gdHJpbSgkbGFuZyk7CgkJfQoKCQlpZiAoJGxhbmcgIT0gJGNvbmZpZ1snZGVmYXVsdF9sYW5ndWFnZSddKQoJCXsKCQkJJHBhdGhfcGFydHMgPSBwYXRoaW5mbygkbGFuZyk7CgkJCSRsYW5nID0gJHBhdGhfcGFydHNbJ2Jhc2VuYW1lJ107CgkJCSRsYW5ndWFnZXMgPSBpbmNsdWRlICdsYW5nL2xhbmd1YWdlcy5waHAnOwoJCX0KCgkJLy8gYWRkIGxhbmcgZmlsZSB0byBzZXNzaW9uIGZvciBlYXN5IGluY2x1ZGUKCQkkX1NFU1NJT05bJ1JGJ11bJ2xhbmd1YWdlJ10gPSAkbGFuZzsKCX0KCWVsc2UKCXsKCQlpZihmaWxlX2V4aXN0cygnbGFuZy9sYW5ndWFnZXMucGhwJykpewoJCQkkbGFuZ3VhZ2VzID0gaW5jbHVkZSAnbGFuZy9sYW5ndWFnZXMucGhwJzsKCQl9ZWxzZXsKCQkJJGxhbmd1YWdlcyA9IGluY2x1ZGUgJy4uL2xhbmcvbGFuZ3VhZ2VzLnBocCc7CgkJfQoKCQlpZihhcnJheV9rZXlfZXhpc3RzKCRfU0VTU0lPTlsnUkYnXVsnbGFuZ3VhZ2UnXSwkbGFuZ3VhZ2VzKSl7CgkJCSRsYW5nID0gJF9TRVNTSU9OWydSRiddWydsYW5ndWFnZSddOwoJCX1lbHNlewoJCQlyZXNwb25zZSgnTGFuZ19Ob3RfRm91bmQnLkFkZEVycm9yTG9jYXRpb24oKSktPnNlbmQoKTsKCQkJZXhpdDsKCQl9CgoJfQoJaWYoZmlsZV9leGlzdHMoJ2xhbmcvJyAuICRsYW5nIC4gJy5waHAnKSl7CgkJJGxhbmdfdmFycyA9IGluY2x1ZGUgJ2xhbmcvJyAuICRsYW5nIC4gJy5waHAnOwoJfWVsc2V7CgkJJGxhbmdfdmFycyA9IGluY2x1ZGUgJy4uL2xhbmcvJyAuICRsYW5nIC4gJy5waHAnOwoJfQoKCWlmICggISBpc19hcnJheSgkbGFuZ192YXJzKSkKCXsKCQkkbGFuZ192YXJzID0gYXJyYXkoKTsKCX0KfQoKCmZ1bmN0aW9uIGNoZWNrUmVsYXRpdmVQYXRoUGFydGlhbCgkcGF0aCl7CglpZiAoc3RycG9zKCRwYXRoLCAnLi4vJykgIT09IGZhbHNlCiAgICAgICAgfHwgc3RycG9zKCRwYXRoLCAnLi8nKSAhPT0gZmFsc2UKICAgICAgICB8fCBzdHJwb3MoJHBhdGgsICcvLi4nKSAhPT0gZmFsc2UKICAgICAgICB8fCBzdHJwb3MoJHBhdGgsICcuLlxcJykgIT09IGZhbHNlCiAgICAgICAgfHwgc3RycG9zKCRwYXRoLCAnXFwuLicpICE9PSBmYWxzZQogICAgICAgIHx8IHN0cnBvcygkcGF0aCwgJy5cXCcpICE9PSBmYWxzZQogICAgICAgIHx8ICRwYXRoID09PSAiLi4iCiAgICApewoJCXJldHVybiBmYWxzZTsKICAgIH0KICAgIHJldHVybiB0cnVlOwp9CgovKioKKiBDaGVjayByZWxhdGl2ZSBwYXRoCioKKiBAcGFyYW0gIHN0cmluZyAgJHBhdGgKKgoqIEByZXR1cm4gYm9vbGVhbiBpcyBpdCBjb3JyZWN0PwoqLwpmdW5jdGlvbiBjaGVja1JlbGF0aXZlUGF0aCgkcGF0aCl7CgkkcGF0aF9jb3JyZWN0ID0gY2hlY2tSZWxhdGl2ZVBhdGhQYXJ0aWFsKCRwYXRoKTsKCWlmKCRwYXRoX2NvcnJlY3QpewoJCSRwYXRoX2RlY29kZWQgPSByYXd1cmxkZWNvZGUoJHBhdGgpOwoJCSRwYXRoX2NvcnJlY3QgPSBjaGVja1JlbGF0aXZlUGF0aFBhcnRpYWwoJHBhdGhfZGVjb2RlZCk7Cgl9CiAgICByZXR1cm4gJHBhdGhfY29ycmVjdDsKfQoKLyoqCiogQ2hlY2sgaWYgdGhlIGdpdmVuIHBhdGggaXMgYW4gdXBsb2FkIGRpciBiYXNlZCBvbiBjb25maWcKKgoqIEBwYXJhbSAgc3RyaW5nICAkcGF0aAoqIEBwYXJhbSAgYXJyYXkgJGNvbmZpZwoqCiogQHJldHVybiBib29sZWFuIGlzIGl0IGFuIHVwbG9hZCBkaXI/CiovCmZ1bmN0aW9uIGlzVXBsb2FkRGlyKCRwYXRoLCAkY29uZmlnKXsKCSR1cGxvYWRfZGlyID0gJGNvbmZpZ1snY3VycmVudF9wYXRoJ107CgkkdGh1bWJzX2RpciA9ICRjb25maWdbJ3RodW1ic19iYXNlX3BhdGgnXTsKCWlmIChyZWFscGF0aCgkcGF0aCkgPT09IHJlYWxwYXRoKCR1cGxvYWRfZGlyKSB8fCByZWFscGF0aCgkcGF0aCkgPT09IHJlYWxwYXRoKCR0aHVtYnNfZGlyKSkKCXsKCQlyZXR1cm4gdHJ1ZTsKCX0KCXJldHVybiBmYWxzZTsKfQoKLyoqCiogRGVsZXRlIGZpbGUKKgoqIEBwYXJhbSAgc3RyaW5nICAkcGF0aAoqIEBwYXJhbSAgc3RyaW5nICRwYXRoX3RodW1iCiogQHBhcmFtICBhcnJheSAkY29uZmlnCioKKiBAcmV0dXJuIG51bGwKKi8KZnVuY3Rpb24gZGVsZXRlRmlsZSgkcGF0aCwkcGF0aF90aHVtYiwkY29uZmlnKXsKCWlmICgkY29uZmlnWydkZWxldGVfZmlsZXMnXSl7CgkJJGZ0cCA9IGZ0cF9jb24oJGNvbmZpZyk7CgkJaWYoJGZ0cCl7CgkJCXRyeXsKCQkJCSRmdHAtPmRlbGV0ZSgiLyIuJHBhdGgpOwoJCQkJQCRmdHAtPmRlbGV0ZSgiLyIuJHBhdGhfdGh1bWIpOwoJCQl9Y2F0Y2goRnRwQ2xpZW50XEZ0cEV4Y2VwdGlvbiAkZSl7CgkJCQlyZXR1cm47CgkJCX0KCQl9ZWxzZXsKCQkJaWYgKGZpbGVfZXhpc3RzKCRwYXRoKSl7CgkJCQl1bmxpbmsoJHBhdGgpOwoJCQl9CgkJCWlmIChmaWxlX2V4aXN0cygkcGF0aF90aHVtYikpewoJCQkJdW5saW5rKCRwYXRoX3RodW1iKTsKCQkJfQoJCX0KCgkJJGluZm89cGF0aGluZm8oJHBhdGgpOwoJCWlmICghJGZ0cCAmJiAkY29uZmlnWydyZWxhdGl2ZV9pbWFnZV9jcmVhdGlvbiddKXsKCQkJZm9yZWFjaCgkY29uZmlnWydyZWxhdGl2ZV9wYXRoX2Zyb21fY3VycmVudF9wb3MnXSBhcyAkaz0+JHBhdGgpCgkJCXsKCQkJCWlmICgkcGF0aCE9IiIgJiYgJHBhdGhbc3RybGVuKCRwYXRoKS0xXSE9Ii8iKSAkcGF0aC49Ii8iOwoKCQkJCWlmIChmaWxlX2V4aXN0cygkaW5mb1snZGlybmFtZSddLiIvIi4kcGF0aC4kY29uZmlnWydyZWxhdGl2ZV9pbWFnZV9jcmVhdGlvbl9uYW1lX3RvX3ByZXBlbmQnXVska10uJGluZm9bJ2ZpbGVuYW1lJ10uJGNvbmZpZ1sncmVsYXRpdmVfaW1hZ2VfY3JlYXRpb25fbmFtZV90b19hcHBlbmQnXVska10uIi4iLiRpbmZvWydleHRlbnNpb24nXSkpCgkJCQl7CgkJCQkJdW5saW5rKCRpbmZvWydkaXJuYW1lJ10uIi8iLiRwYXRoLiRjb25maWdbJ3JlbGF0aXZlX2ltYWdlX2NyZWF0aW9uX25hbWVfdG9fcHJlcGVuZCddWyRrXS4kaW5mb1snZmlsZW5hbWUnXS4kY29uZmlnWydyZWxhdGl2ZV9pbWFnZV9jcmVhdGlvbl9uYW1lX3RvX2FwcGVuZCddWyRrXS4iLiIuJGluZm9bJ2V4dGVuc2lvbiddKTsKCQkJCX0KCQkJfQoJCX0KCgkJaWYgKCEkZnRwICYmICRjb25maWdbJ2ZpeGVkX2ltYWdlX2NyZWF0aW9uJ10pCgkJewoJCQlmb3JlYWNoKCRjb25maWdbJ2ZpeGVkX3BhdGhfZnJvbV9maWxlbWFuYWdlciddIGFzICRrPT4kcGF0aCkKCQkJewoJCQkJaWYgKCRwYXRoIT0iIiAmJiAkcGF0aFtzdHJsZW4oJHBhdGgpLTFdICE9ICIvIikgJHBhdGguPSIvIjsKCgkJCQkkYmFzZV9kaXI9JHBhdGguc3Vic3RyX3JlcGxhY2UoJGluZm9bJ2Rpcm5hbWUnXS4iLyIsICcnLCAwLCBzdHJsZW4oJGNvbmZpZ1snY3VycmVudF9wYXRoJ10pKTsKCQkJCWlmIChmaWxlX2V4aXN0cygkYmFzZV9kaXIuJGNvbmZpZ1snZml4ZWRfaW1hZ2VfY3JlYXRpb25fbmFtZV90b19wcmVwZW5kJ11bJGtdLiRpbmZvWydmaWxlbmFtZSddLiRjb25maWdbJ2ZpeGVkX2ltYWdlX2NyZWF0aW9uX3RvX2FwcGVuZCddWyRrXS4iLiIuJGluZm9bJ2V4dGVuc2lvbiddKSkKCQkJCXsKCQkJCQl1bmxpbmsoJGJhc2VfZGlyLiRjb25maWdbJ2ZpeGVkX2ltYWdlX2NyZWF0aW9uX25hbWVfdG9fcHJlcGVuZCddWyRrXS4kaW5mb1snZmlsZW5hbWUnXS4kY29uZmlnWydmaXhlZF9pbWFnZV9jcmVhdGlvbl90b19hcHBlbmQnXVska10uIi4iLiRpbmZvWydleHRlbnNpb24nXSk7CgkJCQl9CgkJCX0KCQl9Cgl9Cn0KCi8qKgoqIERlbGV0ZSBkaXJlY3RvcnkKKgoqIEBwYXJhbSAgc3RyaW5nICAkZGlyCioKKiBAcmV0dXJuICBib29sCiovCmZ1bmN0aW9uIGRlbGV0ZURpcigkZGlyLCRmdHAgPSBudWxsLCAkY29uZmlnID0gbnVsbCkKewoJaWYoJGZ0cCl7CgoJCXRyeXsKCQkJJGZ0cC0+cm1kaXIoJGRpcik7CgkJCXJldHVybiB0cnVlOwoKCQl9Y2F0Y2goRnRwQ2xpZW50XEZ0cEV4Y2VwdGlvbiAkZSl7CgkJCXJldHVybiBudWxsOwoJCX0KCgl9ZWxzZXsKCQlpZiAoICEgZmlsZV9leGlzdHMoJGRpcikgfHwgaXNVcGxvYWREaXIoJGRpciwgJGNvbmZpZykpCgkJewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoJCWlmICggISBpc19kaXIoJGRpcikpCgkJewoJCQlyZXR1cm4gdW5saW5rKCRkaXIpOwoJCX0KCQlmb3JlYWNoIChzY2FuZGlyKCRkaXIpIGFzICRpdGVtKQoJCXsKCQkJaWYgKCRpdGVtID09ICcuJyB8fCAkaXRlbSA9PSAnLi4nKQoJCQl7CgkJCQljb250aW51ZTsKCQkJfQoJCQlpZiAoICEgZGVsZXRlRGlyKCRkaXIgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJGl0ZW0pKQoJCQl7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCQl9Cgl9CgoJcmV0dXJuIHJtZGlyKCRkaXIpOwp9CgovKioKKiBNYWtlIGEgZmlsZSBjb3B5CioKKiBAcGFyYW0gIHN0cmluZyAgJG9sZF9wYXRoCiogQHBhcmFtICBzdHJpbmcgICRuYW1lICAgICAgTmV3IGZpbGUgbmFtZSB3aXRob3V0IGV4dGVuc2lvbgoqCiogQHJldHVybiAgYm9vbAoqLwpmdW5jdGlvbiBkdXBsaWNhdGVfZmlsZSggJG9sZF9wYXRoLCAkbmFtZSwgJGZ0cCA9IG51bGwsICRjb25maWcgPSBudWxsICkKewoJJGluZm8gPSBwYXRoaW5mbygkb2xkX3BhdGgpOwoJJG5ld19wYXRoID0gJGluZm9bJ2Rpcm5hbWUnXSAuICIvIiAuICRuYW1lIC4gIi4iIC4gJGluZm9bJ2V4dGVuc2lvbiddOwoJaWYoJGZ0cCl7CgkJdHJ5ewoJCQkkdG1wID0gdGltZSgpLiRuYW1lIC4gIi4iIC4gJGluZm9bJ2V4dGVuc2lvbiddOwoJCQkkZnRwLT5nZXQoJHRtcCwgIi8iLiRvbGRfcGF0aCwgRlRQX0JJTkFSWSk7CgkJCSRmdHAtPnB1dCgiLyIuJG5ld19wYXRoLCAkdG1wLCBGVFBfQklOQVJZKTsKCQkJdW5saW5rKCR0bXApOwoJCQlyZXR1cm4gdHJ1ZTsKCgkJfWNhdGNoKEZ0cENsaWVudFxGdHBFeGNlcHRpb24gJGUpewoJCQlyZXR1cm4gbnVsbDsKCQl9Cgl9ZWxzZXsKCQlpZiAoZmlsZV9leGlzdHMoJG9sZF9wYXRoKSAmJiBpc19maWxlKCRvbGRfcGF0aCkpCgkJewoJCQlpZiAoZmlsZV9leGlzdHMoJG5ld19wYXRoKSAmJiAkb2xkX3BhdGggPT0gJG5ld19wYXRoKQoJCQl7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCgkJCXJldHVybiBjb3B5KCRvbGRfcGF0aCwgJG5ld19wYXRoKTsKCQl9Cgl9Cn0KCgovKioKKiBSZW5hbWUgZmlsZQoqCiogQHBhcmFtICBzdHJpbmcgICRvbGRfcGF0aCAgICAgICAgIEZpbGUgdG8gcmVuYW1lCiogQHBhcmFtICBzdHJpbmcgICRuYW1lICAgICAgICAgICAgIE5ldyBmaWxlIG5hbWUgd2l0aG91dCBleHRlbnNpb24KKiBAcGFyYW0gIGJvb2wgICAgJHRyYW5zbGl0ZXJhdGlvbgoqCiogQHJldHVybiBib29sCiovCmZ1bmN0aW9uIHJlbmFtZV9maWxlKCRvbGRfcGF0aCwgJG5hbWUsICRmdHAgPSBudWxsLCAkY29uZmlnID0gbnVsbCkKewoJJG5hbWUgPSBmaXhfZmlsZW5hbWUoJG5hbWUsICRjb25maWcpOwoJJGluZm8gPSBwYXRoaW5mbygkb2xkX3BhdGgpOwoJJG5ld19wYXRoID0gJGluZm9bJ2Rpcm5hbWUnXSAuICIvIiAuICRuYW1lIC4gIi4iIC4gJGluZm9bJ2V4dGVuc2lvbiddOwoJaWYoJGZ0cCl7CgkJdHJ5ewoJCQlyZXR1cm4gJGZ0cC0+cmVuYW1lKCIvIi4kb2xkX3BhdGgsICIvIi4kbmV3X3BhdGgpOwoJCX1jYXRjaChGdHBDbGllbnRcRnRwRXhjZXB0aW9uICRlKXsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCX1lbHNlewoJCWlmIChmaWxlX2V4aXN0cygkb2xkX3BhdGgpICYmIGlzX2ZpbGUoJG9sZF9wYXRoKSkKCQl7CgkJCSRuZXdfcGF0aCA9ICRpbmZvWydkaXJuYW1lJ10gLiAiLyIgLiAkbmFtZSAuICIuIiAuICRpbmZvWydleHRlbnNpb24nXTsKCQkJaWYgKGZpbGVfZXhpc3RzKCRuZXdfcGF0aCkgJiYgJG9sZF9wYXRoID09ICRuZXdfcGF0aCkKCQkJewoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9CgoJCQlyZXR1cm4gcmVuYW1lKCRvbGRfcGF0aCwgJG5ld19wYXRoKTsKCQl9Cgl9Cn0KCgpmdW5jdGlvbiB1cmxfZXhpc3RzKCR1cmwpewogICAgaWYgKCEkZnAgPSBjdXJsX2luaXQoJHVybCkpIHJldHVybiBmYWxzZTsKICAgIHJldHVybiB0cnVlOwp9CgoKZnVuY3Rpb24gdGVtcGRpcigpIHsKICAgICR0ZW1wZmlsZT10ZW1wbmFtKHN5c19nZXRfdGVtcF9kaXIoKSwnJyk7CiAgICBpZiAoZmlsZV9leGlzdHMoJHRlbXBmaWxlKSkgeyB1bmxpbmsoJHRlbXBmaWxlKTsgfQogICAgbWtkaXIoJHRlbXBmaWxlKTsKICAgIGlmIChpc19kaXIoJHRlbXBmaWxlKSkgeyByZXR1cm4gJHRlbXBmaWxlOyB9Cn0KCgovKioKKiBSZW5hbWUgZGlyZWN0b3J5CioKKiBAcGFyYW0gIHN0cmluZyAgJG9sZF9wYXRoICAgICAgICAgRGlyZWN0b3J5IHRvIHJlbmFtZQoqIEBwYXJhbSAgc3RyaW5nICAkbmFtZSAgICAgICAgICAgICBOZXcgZGlyZWN0b3J5IG5hbWUKKiBAcGFyYW0gIGJvb2wgICAgJHRyYW5zbGl0ZXJhdGlvbgoqCiogQHJldHVybiBib29sCiovCmZ1bmN0aW9uIHJlbmFtZV9mb2xkZXIoJG9sZF9wYXRoLCAkbmFtZSwgJGZ0cCA9IG51bGwsICRjb25maWcgPSBudWxsKQp7CgkkbmFtZSA9IGZpeF9maWxlbmFtZSgkbmFtZSwgJGNvbmZpZywgdHJ1ZSk7CgkkbmV3X3BhdGggPSBmaXhfZGlybmFtZSgkb2xkX3BhdGgpIC4gIi8iIC4gJG5hbWU7CglpZigkZnRwKXsKCQlpZigkZnRwLT5jaGRpcigiLyIuJG9sZF9wYXRoKSl7CgkJCWlmKEAkZnRwLT5jaGRpcigkbmV3X3BhdGgpKXsKCQkJCXJldHVybiBmYWxzZTsKCQkJfQoJCQlyZXR1cm4gJGZ0cC0+cmVuYW1lKCIvIi4kb2xkX3BhdGgsICIvIi4kbmV3X3BhdGgpOwoJCX0KCX1lbHNlewoJCWlmIChmaWxlX2V4aXN0cygkb2xkX3BhdGgpICYmIGlzX2Rpcigkb2xkX3BhdGgpICYmICFpc1VwbG9hZERpcigkb2xkX3BhdGgsICRjb25maWcpKQoJCXsKCQkJaWYgKGZpbGVfZXhpc3RzKCRuZXdfcGF0aCkgJiYgJG9sZF9wYXRoID09ICRuZXdfcGF0aCkKCQkJewoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9CgkJCXJldHVybiByZW5hbWUoJG9sZF9wYXRoLCAkbmV3X3BhdGgpOwoJCX0KCX0KfQoKZnVuY3Rpb24gZnRwX2NvbigkY29uZmlnKXsKCWlmKGlzc2V0KCRjb25maWdbJ2Z0cF9ob3N0J10pICYmICRjb25maWdbJ2Z0cF9ob3N0J10pewoJCS8vICoqKiBJbmNsdWRlIHRoZSBjbGFzcwoJCWluY2x1ZGUoJ2luY2x1ZGUvRnRwQ2xpZW50LnBocCcpOwoJCWluY2x1ZGUoJ2luY2x1ZGUvRnRwRXhjZXB0aW9uLnBocCcpOwoJCWluY2x1ZGUoJ2luY2x1ZGUvRnRwV3JhcHBlci5waHAnKTsKCgkJJGZ0cCA9IG5ldyBcRnRwQ2xpZW50XEZ0cENsaWVudCgpOwoJCXRyeXsKCQkJJGZ0cC0+Y29ubmVjdCgkY29uZmlnWydmdHBfaG9zdCddLCRjb25maWdbJ2Z0cF9zc2wnXSwkY29uZmlnWydmdHBfcG9ydCddKTsKCQkJJGZ0cC0+bG9naW4oJGNvbmZpZ1snZnRwX3VzZXInXSwgJGNvbmZpZ1snZnRwX3Bhc3MnXSk7CgkJCSRmdHAtPnBhc3YodHJ1ZSk7CgkJCXJldHVybiAkZnRwOwoJCX1jYXRjaChGdHBDbGllbnRcRnRwRXhjZXB0aW9uICRlKXsKCQkJZWNobyAiRXJyb3I6ICI7CgkJCWVjaG8gJGUtPmdldE1lc3NhZ2UoKTsKCQkJZWNobyAiIHRvIHNlcnZlciAiOwoJCQkkdG1wID0gJGUtPmdldFRyYWNlKCk7CgkJCWVjaG8gJHRtcFswXVsnYXJncyddWzBdOwoJCQllY2hvICI8YnIvPlBsZWFzZSBjaGVjayBjb25maWd1cmF0aW9ucyI7CgkJCWRpZSgpOwoJCX0KCX1lbHNlewoJCXJldHVybiBmYWxzZTsKCX0KfQoKLyoqCiogQ3JlYXRlIG5ldyBpbWFnZSBmcm9tIGV4aXN0aW5nIGZpbGUKKgoqIEBwYXJhbSAgc3RyaW5nICAkaW1nZmlsZSAgICBTb3VyY2UgaW1hZ2UgZmlsZSBuYW1lCiogQHBhcmFtICBzdHJpbmcgICRpbWd0aHVtYiAgIFRodW1ibmFpbCBmaWxlIG5hbWUKKiBAcGFyYW0gIGludCAgICAgJG5ld3dpZHRoICAgVGh1bWJuYWlsIHdpZHRoCiogQHBhcmFtICBpbnQgICAgICRuZXdoZWlnaHQgIE9wdGlvbmFsIHRodW1ibmFpbCBoZWlnaHQKKiBAcGFyYW0gIHN0cmluZyAgJG9wdGlvbiAgICAgVHlwZSBvZiByZXNpemUKKgoqIEByZXR1cm4gYm9vbAoqIEB0aHJvd3MgXEV4Y2VwdGlvbgoqLwpmdW5jdGlvbiBjcmVhdGVfaW1nKCRpbWdmaWxlLCAkaW1ndGh1bWIsICRuZXd3aWR0aCwgJG5ld2hlaWdodCA9IG51bGwsICRvcHRpb24gPSAiY3JvcCIsJGNvbmZpZyA9IGFycmF5KCkpCnsKCSRyZXN1bHQgPSBmYWxzZTsKCWlmKGlzc2V0KCRjb25maWdbJ2Z0cF9ob3N0J10pICYmICRjb25maWdbJ2Z0cF9ob3N0J10pewoJCWlmKHVybF9leGlzdHMoJGltZ2ZpbGUpKXsKCQkJJHRlbXAgPSB0ZW1wbmFtKCcvdG1wJywnUkYnKTsKCQkJdW5saW5rKCR0ZW1wKTsKCQkJJHRlbXAgLj0iLiIuc3Vic3RyKHN0cnJjaHIoJGltZ2ZpbGUsJy4nKSwxKTsKCQkJJGhhbmRsZSA9IGZvcGVuKCR0ZW1wLCAidyIpOwoJCQlmd3JpdGUoJGhhbmRsZSwgZmlsZV9nZXRfY29udGVudHMoJGltZ2ZpbGUpKTsKCQkJZmNsb3NlKCRoYW5kbGUpOwoJCQkkaW1nZmlsZT0gJHRlbXA7CgkJCSRzYXZlX2Z0cCA9ICRpbWd0aHVtYjsKCQkJJGltZ3RodW1iID0gJHRlbXA7CgkJfQoJfQoJaWYoZmlsZV9leGlzdHMoJGltZ2ZpbGUpIHx8IHN0cnBvcygkaW1nZmlsZSwnaHR0cCcpPT09MCl7CgkJaWYgKHN0cnBvcygkaW1nZmlsZSwnaHR0cCcpPT09MCB8fCBpbWFnZV9jaGVja19tZW1vcnlfdXNhZ2UoJGltZ2ZpbGUsICRuZXd3aWR0aCwgJG5ld2hlaWdodCkpCgkJewoJCQlyZXF1aXJlX29uY2UoJ3BocF9pbWFnZV9tYWdpY2lhbi5waHAnKTsKCQkJdHJ5ewoJCQkJJG1hZ2ljaWFuT2JqID0gbmV3IGltYWdlTGliKCRpbWdmaWxlKTsKCQkJCSRtYWdpY2lhbk9iai0+cmVzaXplSW1hZ2UoJG5ld3dpZHRoLCAkbmV3aGVpZ2h0LCAkb3B0aW9uKTsKCQkJCSRtYWdpY2lhbk9iai0+c2F2ZUltYWdlKCRpbWd0aHVtYiwgODApOwoJCQl9Y2F0Y2ggKEV4Y2VwdGlvbiAkZSl7CgkJCQlyZXR1cm4gJGUtPmdldE1lc3NhZ2UoKTsKCQkJfQoJCQkkcmVzdWx0ID0gdHJ1ZTsKCQl9Cgl9CglpZigkcmVzdWx0ICYmIGlzc2V0KCRjb25maWdbJ2Z0cF9ob3N0J10pICYmICRjb25maWdbJ2Z0cF9ob3N0J10gKXsKCQkkZnRwLT5wdXQoJHNhdmVfZnRwLCAkaW1ndGh1bWIsIEZUUF9CSU5BUlkpOwoJCXVubGluaygkaW1ndGh1bWIpOwoJfQoKCXJldHVybiAkcmVzdWx0Owp9CgovKioKKiBDb252ZXJ0IGNvbnZlcnQgc2l6ZSBpbiBieXRlcyB0byBodW1hbiByZWFkYWJsZQoqCiogQHBhcmFtICBpbnQgICRzaXplCioKKiBAcmV0dXJuICBzdHJpbmcKKi8KZnVuY3Rpb24gbWFrZVNpemUoJHNpemUpCnsKCSR1bml0cyA9IGFycmF5KCAnQicsICdLQicsICdNQicsICdHQicsICdUQicgKTsKCSR1ID0gMDsKCXdoaWxlICgocm91bmQoJHNpemUgLyAxMDI0KSA+IDApICYmICgkdSA8IDQpKQoJewoJCSRzaXplID0gJHNpemUgLyAxMDI0OwoJCSR1Kys7Cgl9CgoJcmV0dXJuIChudW1iZXJfZm9ybWF0KCRzaXplLCAwKSAuICIgIiAuIHRyYW5zKCR1bml0c1sgJHUgXSkpOwp9CgovKioKKiBEZXRlcm1pbmUgZGlyZWN0b3J5IHNpemUKKgoqIEBwYXJhbSAgc3RyaW5nICAkcGF0aAoqCiogQHJldHVybiAgaW50CiovCmZ1bmN0aW9uIGZvbGRlcl9pbmZvKCRwYXRoLCRjb3VudF9oaWRkZW49dHJ1ZSkKewoJZ2xvYmFsICRjb25maWc7CgkkdG90YWxfc2l6ZSA9IDA7CgkkZmlsZXMgPSBzY2FuZGlyKCRwYXRoKTsKCSRjbGVhblBhdGggPSBydHJpbSgkcGF0aCwgJy8nKSAuICcvJzsKCSRmaWxlc19jb3VudCA9IDA7CgkkZm9sZGVyc19jb3VudCA9IDA7Cglmb3JlYWNoICgkZmlsZXMgYXMgJHQpCgl7CgkJaWYgKCR0ICE9ICIuIiAmJiAkdCAhPSAiLi4iKQoJCXsKCQkJaWYgKCRjb3VudF9oaWRkZW4gb3IgIShpbl9hcnJheSgkdCwkY29uZmlnWydoaWRkZW5fZm9sZGVycyddKSBvciBpbl9hcnJheSgkdCwkY29uZmlnWydoaWRkZW5fZmlsZXMnXSkpKQoJCQl7CgkJCQkkY3VycmVudEZpbGUgPSAkY2xlYW5QYXRoIC4gJHQ7CgkJCQlpZiAoaXNfZGlyKCRjdXJyZW50RmlsZSkpCgkJCQl7CgkJCQkJbGlzdCgkc2l6ZSwkdG1wLCR0bXAxKSA9IGZvbGRlcl9pbmZvKCRjdXJyZW50RmlsZSk7CgkJCQkJJHRvdGFsX3NpemUgKz0gJHNpemU7CgkJCQkJJGZvbGRlcnNfY291bnQgKys7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJJHNpemUgPSBmaWxlc2l6ZSgkY3VycmVudEZpbGUpOwoJCQkJCSR0b3RhbF9zaXplICs9ICRzaXplOwoJCQkJCSRmaWxlc19jb3VudCsrOwoJCQkJfQoJCQl9CgkJfQoJfQoKCXJldHVybiBhcnJheSgkdG90YWxfc2l6ZSwkZmlsZXNfY291bnQsJGZvbGRlcnNfY291bnQpOwp9Ci8qKgoqIEdldCBudW1iZXIgb2YgZmlsZXMgaW4gYSBkaXJlY3RvcnkKKgoqIEBwYXJhbSAgc3RyaW5nICAkcGF0aAoqCiogQHJldHVybiAgaW50CiovCmZ1bmN0aW9uIGZpbGVzY291bnQoJHBhdGgsJGNvdW50X2hpZGRlbj10cnVlKQp7CglnbG9iYWwgJGNvbmZpZzsKCSR0b3RhbF9jb3VudCA9IDA7CgkkZmlsZXMgPSBzY2FuZGlyKCRwYXRoKTsKCSRjbGVhblBhdGggPSBydHJpbSgkcGF0aCwgJy8nKSAuICcvJzsKCglmb3JlYWNoICgkZmlsZXMgYXMgJHQpCgl7CgkJaWYgKCR0ICE9ICIuIiAmJiAkdCAhPSAiLi4iKQoJCXsKCQkJaWYgKCRjb3VudF9oaWRkZW4gb3IgIShpbl9hcnJheSgkdCwkY29uZmlnWydoaWRkZW5fZm9sZGVycyddKSBvciBpbl9hcnJheSgkdCwkY29uZmlnWydoaWRkZW5fZmlsZXMnXSkpKQoJCQl7CgkJCQkkY3VycmVudEZpbGUgPSAkY2xlYW5QYXRoIC4gJHQ7CgkJCQlpZiAoaXNfZGlyKCRjdXJyZW50RmlsZSkpCgkJCQl7CgkJCQkJJHNpemUgPSBmaWxlc2NvdW50KCRjdXJyZW50RmlsZSk7CgkJCQkJJHRvdGFsX2NvdW50ICs9ICRzaXplOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCSR0b3RhbF9jb3VudCArPSAxOwoJCQkJfQoJCQl9CgkJfQoJfQoKCXJldHVybiAkdG90YWxfY291bnQ7Cn0KLyoqCiogY2hlY2sgaWYgdGhlIGN1cnJlbnQgZm9sZGVyIHNpemUgcGx1cyB0aGUgYWRkZWQgc2l6ZSBpcyBvdmVyIHRoZSBvdmVyYWxsIHNpemUgbGltaXRlCioKKiBAcGFyYW0gIGludCAgJHNpemVBZGRlZAoqCiogQHJldHVybiAgYm9vbAoqLwpmdW5jdGlvbiBjaGVja3Jlc3VsdGluZ3NpemUoJHNpemVBZGRlZCkKewogICAgZ2xvYmFsICRjb25maWc7CgoJaWYgKCRjb25maWdbJ01heFNpemVUb3RhbCddICE9PSBmYWxzZSAmJiBpc19pbnQoJGNvbmZpZ1snTWF4U2l6ZVRvdGFsJ10pKSB7CgkJbGlzdCgkc2l6ZUN1cnJlbnRGb2xkZXIsJGZpbGVDdXJyZW50TnVtLCRmb2xkZXJzQ3VycmVudENvdW50KSA9IGZvbGRlcl9pbmZvKCRjb25maWdbJ2N1cnJlbnRfcGF0aCddLGZhbHNlKTsKCQkvLyBvdmVyYWxsIHNpemUgb3ZlciBsaW1pdAoJCWlmICgoJGNvbmZpZ1snTWF4U2l6ZVRvdGFsJ10gKiAxMDI0ICogMTAyNCkgPCAoJHNpemVDdXJyZW50Rm9sZGVyICsgJHNpemVBZGRlZCkpIHsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCX0KCXJldHVybiB0cnVlOwp9CgovKioKKiBDcmVhdGUgZGlyZWN0b3J5IGZvciBpbWFnZXMgYW5kL29yIHRodW1ibmFpbHMKKgoqIEBwYXJhbSAgc3RyaW5nICAkcGF0aAoqIEBwYXJhbSAgc3RyaW5nICAkcGF0aF90aHVtYnMKKi8KZnVuY3Rpb24gY3JlYXRlX2ZvbGRlcigkcGF0aCA9IG51bGwsICRwYXRoX3RodW1icyA9IG51bGwsJGZ0cCA9IG51bGwsJGNvbmZpZyA9IG51bGwpCnsKCWlmKCRmdHApewoJCSRmdHAtPm1rZGlyKCRwYXRoKTsKCQkkZnRwLT5ta2RpcigkcGF0aF90aHVtYnMpOwoJfWVsc2V7CgkJaWYoZmlsZV9leGlzdHMoJHBhdGgpIHx8IGZpbGVfZXhpc3RzKCRwYXRoX3RodW1icykpewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoJCSRvbGR1bWFzayA9IHVtYXNrKDApOwoJCSRwZXJtaXNzaW9uID0gMDc1NTsKCQlpZihpc3NldCgkY29uZmlnWydmb2xkZXJQZXJtaXNzaW9uJ10pKXsKCQkJJHBlcm1pc3Npb24gPSAkY29uZmlnWydmb2xkZXJQZXJtaXNzaW9uJ107CgkJfQoJCWlmICgkcGF0aCAmJiAhZmlsZV9leGlzdHMoJHBhdGgpKQoJCXsKCQkJbWtkaXIoJHBhdGgsICRwZXJtaXNzaW9uLCB0cnVlKTsKCQl9IC8vIG9yIGV2ZW4gMDE3Nzcgc28geW91IGdldCB0aGUgc3RpY2t5IGJpdCBzZXQKCQlpZiAoJHBhdGhfdGh1bWJzKQoJCXsKCQkJbWtkaXIoJHBhdGhfdGh1bWJzLCAkcGVybWlzc2lvbiwgdHJ1ZSkgb3IgZGllKCIkcGF0aF90aHVtYnMgY2Fubm90IGJlIGZvdW5kIik7CgkJfSAvLyBvciBldmVuIDAxNzc3IHNvIHlvdSBnZXQgdGhlIHN0aWNreSBiaXQgc2V0CgkJdW1hc2soJG9sZHVtYXNrKTsKCQlyZXR1cm4gdHJ1ZTsKCX0KfQoKLyoqCiogR2V0IGZpbGUgZXh0ZW5zaW9uIHByZXNlbnQgaW4gZGlyZWN0b3J5CioKKiBAcGFyYW0gIHN0cmluZyAgJHBhdGgKKiBAcGFyYW0gIHN0cmluZyAgJGV4dAoqLwpmdW5jdGlvbiBjaGVja19maWxlc19leHRlbnNpb25zX29uX3BhdGgoJHBhdGgsICRleHQpCnsKCWlmICggISBpc19kaXIoJHBhdGgpKQoJewoJCSRmaWxlaW5mbyA9IHBhdGhpbmZvKCRwYXRoKTsKCQlpZiAoICEgaW5fYXJyYXkobWJfc3RydG9sb3dlcigkZmlsZWluZm9bJ2V4dGVuc2lvbiddKSwgJGV4dCkpCgkJewoJCQl1bmxpbmsoJHBhdGgpOwoJCX0KCX0KCWVsc2UKCXsKCQkkZmlsZXMgPSBzY2FuZGlyKCRwYXRoKTsKCQlmb3JlYWNoICgkZmlsZXMgYXMgJGZpbGUpCgkJewoJCQljaGVja19maWxlc19leHRlbnNpb25zX29uX3BhdGgodHJpbSgkcGF0aCwgJy8nKSAuICIvIiAuICRmaWxlLCAkZXh0KTsKCQl9Cgl9Cn0KCgovKioKKiBDaGVjayBmaWxlIGV4dGVuc2lvbiAKKgoqIEBwYXJhbSAgc3RyaW5nICAkZXh0ZW5zaW9uCiogQHBhcmFtICBhcnJheSAgICRjb25maWcKKi8KCmZ1bmN0aW9uIGNoZWNrX2ZpbGVfZXh0ZW5zaW9uKCRleHRlbnNpb24sJGNvbmZpZyl7CgkkY2hlY2sgPSBmYWxzZTsKCWlmICghJGNvbmZpZ1snZXh0X2JsYWNrbGlzdCddKSB7CgkJaWYoaW5fYXJyYXkobWJfc3RydG9sb3dlcigkZXh0ZW5zaW9uKSwgJGNvbmZbJ2V4dCddKSl7CgkJCSRjaGVjayA9IHRydWU7CgkJfQogICAgfSBlbHNlIHsKICAgIAlpZighaW5fYXJyYXkobWJfc3RydG9sb3dlcigkZXh0ZW5zaW9uKSwgJGNvbmZbJ2V4dF9ibGFja2xpc3QnXSkpewoJCQkkY2hlY2sgPSB0cnVlOwoJCX0KICAgIH0KCglpZigkY29uZmlnWydmaWxlc193aXRob3V0X2V4dGVuc2lvbiddICYmICRleHRlbnNpb24gPT0gJycpewoJCSRjaGVjayA9IHRydWU7Cgl9CgoJcmV0dXJuICRjaGVjazsKfQoKCi8qKgoqIEdldCBmaWxlIGV4dGVuc2lvbiBwcmVzZW50IGluIFBIQVIgZmlsZQoqCiogQHBhcmFtICBzdHJpbmcgICRwaGFyCiogQHBhcmFtICBhcnJheSAgICRmaWxlcwoqIEBwYXJhbSAgc3RyaW5nICAkYmFzZXBhdGgKKiBAcGFyYW0gIHN0cmluZyAgJGV4dAoqLwpmdW5jdGlvbiBjaGVja19maWxlc19leHRlbnNpb25zX29uX3BoYXIoJHBoYXIsICYkZmlsZXMsICRiYXNlcGF0aCwgJGNvbmZpZykKewoJZm9yZWFjaCAoJHBoYXIgYXMgJGZpbGUpCgl7CgkJaWYgKCRmaWxlLT5pc0ZpbGUoKSkKCQl7CgkJCWlmIChjaGVja19maWxlX2V4dGVuc2lvbigkZmlsZS0+Z2V0RXh0ZW5zaW9uKCkpKQoJCQl7CgkJCQkkZmlsZXNbXSA9ICRiYXNlcGF0aCAuICRmaWxlLT5nZXRGaWxlTmFtZSgpOwoJCQl9CgkJfQoJCWVsc2UKCQl7CgkJCWlmICgkZmlsZS0+aXNEaXIoKSkKCQkJewoJCQkJJGl0ZXJhdG9yID0gbmV3IERpcmVjdG9yeUl0ZXJhdG9yKCRmaWxlKTsKCQkJCWNoZWNrX2ZpbGVzX2V4dGVuc2lvbnNfb25fcGhhcigkaXRlcmF0b3IsICRmaWxlcywgJGJhc2VwYXRoIC4gJGZpbGUtPmdldEZpbGVOYW1lKCkgLiAnLycsICRjb25maWcpOwoJCQl9CgkJfQoJfQp9CgovKioKKiBDbGVhbnVwIGlucHV0CioKKiBAcGFyYW0gIHN0cmluZyAgJHN0cgoqCiogQHJldHVybiAgc3RyaW5nCiovCmZ1bmN0aW9uIGZpeF9nZXRfcGFyYW1zKCRzdHIpCnsKCXJldHVybiBzdHJpcF90YWdzKHByZWdfcmVwbGFjZSgiL1teYS16QS1aMC05XC5cW1xdX3wgLV0vIiwgJycsICRzdHIpKTsKfQoKCi8qKgoqIENoZWNrIGV4dGVuc2lvbgoqCiogQHBhcmFtICBzdHJpbmcgICRleHRlbnNpb24KKiBAcGFyYW0gIGFycmF5ICAgJGNvbmZpZwoqCiogQHJldHVybiBib29sCiovCmZ1bmN0aW9uIGNoZWNrX2V4dGVuc2lvbigkZXh0ZW5zaW9uLCRjb25maWcpewoJJGV4dGVuc2lvbiA9IGZpeF9zdHJ0b2xvd2VyKCRleHRlbnNpb24pOwoJaWYoKCEkY29uZmlnWydleHRfYmxhY2tsaXN0J10gJiYgIWluX2FycmF5KCRleHRlbnNpb24sICRjb25maWdbJ2V4dCddKSkgfHwgKCRjb25maWdbJ2V4dF9ibGFja2xpc3QnXSAmJiBpbl9hcnJheSgkZXh0ZW5zaW9uLCAkY29uZmlnWydleHRfYmxhY2tsaXN0J10pKSl7CgkJcmV0dXJuIGZhbHNlOwoJfQoJcmV0dXJuIHRydWU7Cn0KCgoKCi8qKgoqIFNhbml0aXplIGZpbGVuYW1lCioKKiBAcGFyYW0gIHN0cmluZyAgJHN0cgoqCiogQHJldHVybiBzdHJpbmcKKi8KZnVuY3Rpb24gc2FuaXRpemUoJHN0cikKewoJcmV0dXJuIHN0cmlwX3RhZ3MoaHRtbHNwZWNpYWxjaGFycygkc3RyKSk7Cn0KCi8qKgoqIENsZWFudXAgZmlsZW5hbWUKKgoqIEBwYXJhbSAgc3RyaW5nICAkc3RyCiogQHBhcmFtICBib29sICAgICR0cmFuc2xpdGVyYXRpb24KKiBAcGFyYW0gIGJvb2wgICAgJGNvbnZlcnRfc3BhY2VzCiogQHBhcmFtICBzdHJpbmcgICRyZXBsYWNlX3dpdGgKKiBAcGFyYW0gIGJvb2wgICAgJGlzX2ZvbGRlcgoqCiogQHJldHVybiBzdHJpbmcKKi8KZnVuY3Rpb24gZml4X2ZpbGVuYW1lKCRzdHIsICRjb25maWcsICRpc19mb2xkZXIgPSBmYWxzZSkKewoJJHN0ciA9IHNhbml0aXplKCRzdHIpOwoJaWYgKCRjb25maWdbJ2NvbnZlcnRfc3BhY2VzJ10pCgl7CgkJJHN0ciA9IHN0cl9yZXBsYWNlKCcgJywgJGNvbmZpZ1sncmVwbGFjZV93aXRoJ10sICRzdHIpOwoJfQoKCWlmICgkY29uZmlnWyd0cmFuc2xpdGVyYXRpb24nXSkKCXsKCQlpZiAoIW1iX2RldGVjdF9lbmNvZGluZygkc3RyLCAnVVRGLTgnLCB0cnVlKSkKCQl7CgkJCSRzdHIgPSB1dGY4X2VuY29kZSgkc3RyKTsKCQl9CgkJaWYgKGZ1bmN0aW9uX2V4aXN0cygndHJhbnNsaXRlcmF0b3JfdHJhbnNsaXRlcmF0ZScpKQoJCXsKCQkJJHN0ciA9IHRyYW5zbGl0ZXJhdG9yX3RyYW5zbGl0ZXJhdGUoJ0FueS1MYXRpbjsgTGF0aW4tQVNDSUknLCAkc3RyKTsKCQl9CgkJZWxzZQoJCXsKCQkJJHN0ciA9IGljb252KCdVVEYtOCcsICdBU0NJSS8vVFJBTlNMSVQvL0lHTk9SRScsICRzdHIpOwoJCX0KCgkJJHN0ciA9IHByZWdfcmVwbGFjZSgiL1teYS16QS1aMC05XC5cW1xdX3wgLV0vIiwgJycsICRzdHIpOwoJfQoKCSRzdHIgPSBzdHJfcmVwbGFjZShhcnJheSggJyInLCAiJyIsICIvIiwgIlxcIiApLCAiIiwgJHN0cik7Cgkkc3RyID0gc3RyaXBfdGFncygkc3RyKTsKCgkvLyBFbXB0eSBvciBpbmNvcnJlY3RseSB0cmFuc2xpdGVyYXRlZCBmaWxlbmFtZS4KCS8vIEhlcmUgaXMgYSBwb2ludDogYSBnb29kIGZpbGUgVU5LTk9XTl9MQU5HVUFHRS5qcGcgY291bGQgYmVjb21lIC5qcGcgaW4gcHJldmlvdXMgY29kZS4KCS8vIFNvIHdlIGFkZCB0aGF0IGRlZmF1bHQgJ2ZpbGUnIG5hbWUgdG8gZml4IHRoYXQgaXNzdWUuCglpZiAoISRjb25maWdbJ2VtcHR5X2ZpbGVuYW1lJ10gJiYgc3RycG9zKCRzdHIsICcuJykgPT09IDAgJiYgJGlzX2ZvbGRlciA9PT0gZmFsc2UpCgl7CgkJJHN0ciA9ICdmaWxlJyAuICRzdHI7Cgl9CgoJcmV0dXJuIHRyaW0oJHN0cik7Cn0KCi8qKgoqIENsZWFudXAgZGlyZWN0b3J5IG5hbWUKKgoqIEBwYXJhbSAgc3RyaW5nICAkc3RyCioKKiBAcmV0dXJuICBzdHJpbmcKKi8KZnVuY3Rpb24gZml4X2Rpcm5hbWUoJHN0cikKewoJcmV0dXJuIHN0cl9yZXBsYWNlKCd+JywgJyAnLCBkaXJuYW1lKHN0cl9yZXBsYWNlKCcgJywgJ34nLCAkc3RyKSkpOwp9CgovKioKKiBDb3JyZWN0IHN0cnRvdXBwZXIgaGFuZGxpbmcKKgoqIEBwYXJhbSAgc3RyaW5nICAkc3RyCioKKiBAcmV0dXJuICBzdHJpbmcKKi8KZnVuY3Rpb24gZml4X3N0cnRvdXBwZXIoJHN0cikKewoJaWYgKGZ1bmN0aW9uX2V4aXN0cygnbWJfc3RydG91cHBlcicpKQoJewoJCXJldHVybiBtYl9zdHJ0b3VwcGVyKCRzdHIpOwoJfQoJZWxzZQoJewoJCXJldHVybiBzdHJ0b3VwcGVyKCRzdHIpOwoJfQp9CgovKioKKiBDb3JyZWN0IHN0cnRvbG93ZXIgaGFuZGxpbmcKKgoqIEBwYXJhbSAgc3RyaW5nICAkc3RyCioKKiBAcmV0dXJuICBzdHJpbmcKKi8KZnVuY3Rpb24gZml4X3N0cnRvbG93ZXIoJHN0cikKewoJaWYgKGZ1bmN0aW9uX2V4aXN0cygnbWJfc3RydG91cHBlcicpKQoJewoJCXJldHVybiBtYl9zdHJ0b2xvd2VyKCRzdHIpOwoJfQoJZWxzZQoJewoJCXJldHVybiBzdHJ0b2xvd2VyKCRzdHIpOwoJfQp9CgpmdW5jdGlvbiBmaXhfcGF0aCgkcGF0aCwgJGNvbmZpZykKewoJJGluZm8gPSBwYXRoaW5mbygkcGF0aCk7CgkkdG1wX3BhdGggPSAkaW5mb1snZGlybmFtZSddOwoJJHN0ciA9IGZpeF9maWxlbmFtZSgkaW5mb1snZmlsZW5hbWUnXSwgJGNvbmZpZyk7CglpZiAoJHRtcF9wYXRoICE9ICIiKQoJewoJCXJldHVybiAkdG1wX3BhdGggLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJHN0cjsKCX0KCWVsc2UKCXsKCQlyZXR1cm4gJHN0cjsKCX0KfQoKLyoqCiogQHBhcmFtICAkY3VycmVudF9wYXRoCiogQHBhcmFtICAkZmxkCioKKiBAcmV0dXJuICBib29sCiovCmZ1bmN0aW9uIGNvbmZpZ19sb2FkaW5nKCRjdXJyZW50X3BhdGgsICRmbGQpCnsKCWlmIChmaWxlX2V4aXN0cygkY3VycmVudF9wYXRoIC4gJGZsZCAuICIuY29uZmlnIikpCgl7CgkJcmVxdWlyZV9vbmNlKCRjdXJyZW50X3BhdGggLiAkZmxkIC4gIi5jb25maWciKTsKCgkJcmV0dXJuIHRydWU7Cgl9CgllY2hvICIhISEhIiAuICRwYXJlbnQgPSBmaXhfZGlybmFtZSgkZmxkKTsKCWlmICgkcGFyZW50ICE9ICIuIiAmJiAhIGVtcHR5KCRwYXJlbnQpKQoJewoJCWNvbmZpZ19sb2FkaW5nKCRjdXJyZW50X3BhdGgsICRwYXJlbnQpOwoJfQoKCXJldHVybiBmYWxzZTsKfQoKLyoqCiogQ2hlY2sgaWYgbWVtb3J5IGlzIGVub3VnaCB0byBwcm9jZXNzIGltYWdlCioKKiBAcGFyYW0gIHN0cmluZyAgJGltZwoqIEBwYXJhbSAgaW50ICAgICAkbWF4X2JyZWVkdGUKKiBAcGFyYW0gIGludCAgICAgJG1heF9ob29ndGUKKgoqIEByZXR1cm4gYm9vbAoqLwpmdW5jdGlvbiBpbWFnZV9jaGVja19tZW1vcnlfdXNhZ2UoJGltZywgJG1heF9icmVlZHRlLCAkbWF4X2hvb2d0ZSkKewoJaWYgKGZpbGVfZXhpc3RzKCRpbWcpKQoJewoJCSRLNjQgPSA2NTUzNjsgLy8gbnVtYmVyIG9mIGJ5dGVzIGluIDY0SwoJCSRtZW1vcnlfdXNhZ2UgPSBtZW1vcnlfZ2V0X3VzYWdlKCk7CgkJaWYoaW5pX2dldCgnbWVtb3J5X2xpbWl0JykgPiAwICl7CgkJCQoJCQkkbWVtID0gaW5pX2dldCgnbWVtb3J5X2xpbWl0Jyk7CgkJCSRtZW1vcnlfbGltaXQgPSAwOwoJCQlpZiAoc3RycG9zKCRtZW0sICdNJykgIT09IGZhbHNlKSAkbWVtb3J5X2xpbWl0ID0gYWJzKGludHZhbChzdHJfcmVwbGFjZShhcnJheSgnTScpLCAnJywgJG1lbSkgKiAxMDI0ICogMTAyNCkpOwoJCQlpZiAoc3RycG9zKCRtZW0sICdHJykgIT09IGZhbHNlKSAkbWVtb3J5X2xpbWl0ID0gYWJzKGludHZhbChzdHJfcmVwbGFjZShhcnJheSgnRycpLCAnJywgJG1lbSkgKiAxMDI0ICogMTAyNCAqIDEwMjQpKTsKCQkJCgkJCSRpbWFnZV9wcm9wZXJ0aWVzID0gZ2V0aW1hZ2VzaXplKCRpbWcpOwoJCQkkaW1hZ2Vfd2lkdGggPSAkaW1hZ2VfcHJvcGVydGllc1swXTsKCQkJJGltYWdlX2hlaWdodCA9ICRpbWFnZV9wcm9wZXJ0aWVzWzFdOwoJCQlpZiAoaXNzZXQoJGltYWdlX3Byb3BlcnRpZXNbJ2JpdHMnXSkpCgkJCQkkaW1hZ2VfYml0cyA9ICRpbWFnZV9wcm9wZXJ0aWVzWydiaXRzJ107CgkJCWVsc2UKCQkJCSRpbWFnZV9iaXRzID0gMDsKCQkJJGltYWdlX21lbW9yeV91c2FnZSA9ICRLNjQgKyAoJGltYWdlX3dpZHRoICogJGltYWdlX2hlaWdodCAqICgkaW1hZ2VfYml0cyA+PiAzKSAqIDIpOwoJCQkkdGh1bWJfbWVtb3J5X3VzYWdlID0gJEs2NCArICgkbWF4X2JyZWVkdGUgKiAkbWF4X2hvb2d0ZSAqICgkaW1hZ2VfYml0cyA+PiAzKSAqIDIpOwoJCQkkbWVtb3J5X25lZWRlZCA9IGFicyhpbnR2YWwoJG1lbW9yeV91c2FnZSArICRpbWFnZV9tZW1vcnlfdXNhZ2UgKyAkdGh1bWJfbWVtb3J5X3VzYWdlKSk7CgoJCQlpZiAoJG1lbW9yeV9uZWVkZWQgPiAkbWVtb3J5X2xpbWl0KQoJCQl7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCQl9CgkJcmV0dXJuIHRydWU7Cgl9CglyZXR1cm4gZmFsc2U7Cn0KCi8qKgoqIENoZWNrIGlzIHN0cmluZyBpcyBlbmRlZCB3aXRoIG5lZWRsZQoqCiogQHBhcmFtICBzdHJpbmcgICRoYXlzdGFjawoqIEBwYXJhbSAgc3RyaW5nICAkbmVlZGxlCioKKiBAcmV0dXJuICBib29sCiovCmlmKCFmdW5jdGlvbl9leGlzdHMoJ2VuZHNfd2l0aCcpKXsKCWZ1bmN0aW9uIGVuZHNfd2l0aCgkaGF5c3RhY2ssICRuZWVkbGUpCgl7CgkJcmV0dXJuICRuZWVkbGUgPT09ICIiIHx8IHN1YnN0cigkaGF5c3RhY2ssIC1zdHJsZW4oJG5lZWRsZSkpID09PSAkbmVlZGxlOwoJfQp9CgovKioKKiBUT0RPIFJFRkFDVE9SIFRISVMhCioKKiBAcGFyYW0gJHRhcmdldFBhdGgKKiBAcGFyYW0gJHRhcmdldEZpbGUKKiBAcGFyYW0gJG5hbWUKKiBAcGFyYW0gJGN1cnJlbnRfcGF0aAoqIEBwYXJhbSAkY29uZmlnCiogICByZWxhdGl2ZV9pbWFnZV9jcmVhdGlvbgoqICAgcmVsYXRpdmVfcGF0aF9mcm9tX2N1cnJlbnRfcG9zCiogICByZWxhdGl2ZV9pbWFnZV9jcmVhdGlvbl9uYW1lX3RvX3ByZXBlbmQKKiAgIHJlbGF0aXZlX2ltYWdlX2NyZWF0aW9uX25hbWVfdG9fYXBwZW5kCiogICByZWxhdGl2ZV9pbWFnZV9jcmVhdGlvbl93aWR0aAoqICAgcmVsYXRpdmVfaW1hZ2VfY3JlYXRpb25faGVpZ2h0CiogICByZWxhdGl2ZV9pbWFnZV9jcmVhdGlvbl9vcHRpb24KKiAgIGZpeGVkX2ltYWdlX2NyZWF0aW9uCiogICBmaXhlZF9wYXRoX2Zyb21fZmlsZW1hbmFnZXIKKiAgIGZpeGVkX2ltYWdlX2NyZWF0aW9uX25hbWVfdG9fcHJlcGVuZAoqICAgZml4ZWRfaW1hZ2VfY3JlYXRpb25fdG9fYXBwZW5kCiogICBmaXhlZF9pbWFnZV9jcmVhdGlvbl93aWR0aAoqICAgZml4ZWRfaW1hZ2VfY3JlYXRpb25faGVpZ2h0CiogICBmaXhlZF9pbWFnZV9jcmVhdGlvbl9vcHRpb24KKgoqIEByZXR1cm4gYm9vbAoqLwpmdW5jdGlvbiBuZXdfdGh1bWJuYWlsc19jcmVhdGlvbigkdGFyZ2V0UGF0aCwgJHRhcmdldEZpbGUsICRuYW1lLCAkY3VycmVudF9wYXRoLCAkY29uZmlnKQp7CgkvL2NyZWF0ZSByZWxhdGl2ZSB0aHVtYnMKCSRhbGxfb2sgPSB0cnVlOwoKCSRpbmZvID0gcGF0aGluZm8oJG5hbWUpOwoJJGluZm9bJ2ZpbGVuYW1lJ10gPSBmaXhfZmlsZW5hbWUoJGluZm9bJ2ZpbGVuYW1lJ10sJGNvbmZpZyk7CglpZiAoJGNvbmZpZ1sncmVsYXRpdmVfaW1hZ2VfY3JlYXRpb24nXSkKCXsKCQlmb3JlYWNoICgkY29uZmlnWydyZWxhdGl2ZV9wYXRoX2Zyb21fY3VycmVudF9wb3MnXSBhcyAkayA9PiAkcGF0aCkKCQl7CgkJCWlmICgkcGF0aCAhPSAiIiAmJiAkcGF0aFsgc3RybGVuKCRwYXRoKSAtIDEgXSAhPSAiLyIpCgkJCXsKCQkJCSRwYXRoIC49ICIvIjsKCQkJfQoJCQlpZiAoICEgZmlsZV9leGlzdHMoJHRhcmdldFBhdGggLiAkcGF0aCkpCgkJCXsKCQkJCWNyZWF0ZV9mb2xkZXIoJHRhcmdldFBhdGggLiAkcGF0aCwgZmFsc2UpOwoJCQl9CgkJCWlmICggISBlbmRzX3dpdGgoJHRhcmdldFBhdGgsICRwYXRoKSkKCQkJewoJCQkJaWYgKCAhIGNyZWF0ZV9pbWcoJHRhcmdldEZpbGUsICR0YXJnZXRQYXRoIC4gJHBhdGggLiAkY29uZmlnWydyZWxhdGl2ZV9pbWFnZV9jcmVhdGlvbl9uYW1lX3RvX3ByZXBlbmQnXVsgJGsgXSAuICRpbmZvWydmaWxlbmFtZSddIC4gJGNvbmZpZ1sncmVsYXRpdmVfaW1hZ2VfY3JlYXRpb25fbmFtZV90b19hcHBlbmQnXVsgJGsgXSAuICIuIiAuICRpbmZvWydleHRlbnNpb24nXSwgJGNvbmZpZ1sncmVsYXRpdmVfaW1hZ2VfY3JlYXRpb25fd2lkdGgnXVsgJGsgXSwgJGNvbmZpZ1sncmVsYXRpdmVfaW1hZ2VfY3JlYXRpb25faGVpZ2h0J11bICRrIF0sICRjb25maWdbJ3JlbGF0aXZlX2ltYWdlX2NyZWF0aW9uX29wdGlvbiddWyAkayBdKSkKCQkJCXsKCQkJCQkkYWxsX29rID0gZmFsc2U7CgkJCQl9CgkJCX0KCQl9Cgl9CgoJLy9jcmVhdGUgZml4ZWQgdGh1bWJzCglpZiAoJGNvbmZpZ1snZml4ZWRfaW1hZ2VfY3JlYXRpb24nXSkKCXsKCQlmb3JlYWNoICgkY29uZmlnWydmaXhlZF9wYXRoX2Zyb21fZmlsZW1hbmFnZXInXSBhcyAkayA9PiAkcGF0aCkKCQl7CgkJCWlmICgkcGF0aCAhPSAiIiAmJiAkcGF0aFsgc3RybGVuKCRwYXRoKSAtIDEgXSAhPSAiLyIpCgkJCXsKCQkJCSRwYXRoIC49ICIvIjsKCQkJfQoJCQkkYmFzZV9kaXIgPSAkcGF0aCAuIHN1YnN0cl9yZXBsYWNlKCR0YXJnZXRQYXRoLCAnJywgMCwgc3RybGVuKCRjdXJyZW50X3BhdGgpKTsKCQkJaWYgKCAhIGZpbGVfZXhpc3RzKCRiYXNlX2RpcikpCgkJCXsKCQkJCWNyZWF0ZV9mb2xkZXIoJGJhc2VfZGlyLCBmYWxzZSk7CgkJCX0KCQkJaWYgKCAhIGNyZWF0ZV9pbWcoJHRhcmdldEZpbGUsICRiYXNlX2RpciAuICRjb25maWdbJ2ZpeGVkX2ltYWdlX2NyZWF0aW9uX25hbWVfdG9fcHJlcGVuZCddWyAkayBdIC4gJGluZm9bJ2ZpbGVuYW1lJ10gLiAkY29uZmlnWydmaXhlZF9pbWFnZV9jcmVhdGlvbl90b19hcHBlbmQnXVsgJGsgXSAuICIuIiAuICRpbmZvWydleHRlbnNpb24nXSwgJGNvbmZpZ1snZml4ZWRfaW1hZ2VfY3JlYXRpb25fd2lkdGgnXVsgJGsgXSwgJGNvbmZpZ1snZml4ZWRfaW1hZ2VfY3JlYXRpb25faGVpZ2h0J11bICRrIF0sICRjb25maWdbJ2ZpeGVkX2ltYWdlX2NyZWF0aW9uX29wdGlvbiddWyAkayBdKSkKCQkJewoJCQkJJGFsbF9vayA9IGZhbHNlOwoJCQl9CgkJfQoJfQoKCXJldHVybiAkYWxsX29rOwp9CgoKLyoqCiogR2V0IGEgcmVtb3RlIGZpbGUsIHVzaW5nIHdoaWNoZXZlciBtZWNoYW5pc20gaXMgZW5hYmxlZAoqCiogQHBhcmFtICBzdHJpbmcgICR1cmwKKgoqIEByZXR1cm4gIGJvb2x8bWl4ZWR8c3RyaW5nCiovCmZ1bmN0aW9uIGdldF9maWxlX2J5X3VybCgkdXJsKQp7CglpZiAoaW5pX2dldCgnYWxsb3dfdXJsX2ZvcGVuJykpCgl7CgkJJGFyckNvbnRleHRPcHRpb25zPWFycmF5KAoJCSAgICAic3NsIj0+YXJyYXkoCgkJICAgICAgICAidmVyaWZ5X3BlZXIiPT5mYWxzZSwKCQkgICAgICAgICJ2ZXJpZnlfcGVlcl9uYW1lIj0+ZmFsc2UsCgkJICAgICksCgkJKTsKCQlyZXR1cm4gZmlsZV9nZXRfY29udGVudHMoJHVybCwgZmFsc2UsIHN0cmVhbV9jb250ZXh0X2NyZWF0ZSgkYXJyQ29udGV4dE9wdGlvbnMpKTsKCX0KCWlmICggISBmdW5jdGlvbl9leGlzdHMoJ2N1cmxfdmVyc2lvbicpKQoJewoJCXJldHVybiBmYWxzZTsKCX0KCgkkY2ggPSBjdXJsX2luaXQoKTsKCgljdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfSEVBREVSLCAwKTsKCWN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgMSk7CgljdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVJMLCAkdXJsKTsKCgkkZGF0YSA9IGN1cmxfZXhlYygkY2gpOwoJY3VybF9jbG9zZSgkY2gpOwoKCXJldHVybiAkZGF0YTsKfQoKLyoqCiogdGVzdCBmb3IgZGlyL2ZpbGUgd3JpdGFiaWxpdHkgcHJvcGVybHkKKgoqIEBwYXJhbSAgc3RyaW5nICAkZGlyCioKKiBAcmV0dXJuICBib29sCiovCmZ1bmN0aW9uIGlzX3JlYWxseV93cml0YWJsZSgkZGlyKQp7CgkkZGlyID0gcnRyaW0oJGRpciwgJy8nKTsKCS8vIGxpbnV4LCBzYWZlIG9mZgoJaWYgKERJUkVDVE9SWV9TRVBBUkFUT1IgPT0gJy8nICYmIEBpbmlfZ2V0KCJzYWZlX21vZGUiKSA9PSBmYWxzZSkKCXsKCQlyZXR1cm4gaXNfd3JpdGFibGUoJGRpcik7Cgl9CgoJLy8gV2luZG93cywgc2FmZSBPTi4gKGhhdmUgdG8gd3JpdGUgYSBmaWxlIDpTKQoJaWYgKGlzX2RpcigkZGlyKSkKCXsKCQkkZGlyID0gJGRpciAuICcvJyAuIG1kNShtdF9yYW5kKDEsIDEwMDApIC4gbXRfcmFuZCgxLCAxMDAwKSk7CgoJCWlmICgoJGZwID0gQGZvcGVuKCRkaXIsICdhYicpKSA9PT0gZmFsc2UpCgkJewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQlmY2xvc2UoJGZwKTsKCQlAY2htb2QoJGRpciwgMDc1NSk7CgkJQHVubGluaygkZGlyKTsKCgkJcmV0dXJuIHRydWU7Cgl9CgllbHNlaWYgKCAhIGlzX2ZpbGUoJGRpcikgfHwgKCRmcCA9IEBmb3BlbigkZGlyLCAnYWInKSkgPT09IGZhbHNlKQoJewoJCXJldHVybiBmYWxzZTsKCX0KCglmY2xvc2UoJGZwKTsKCglyZXR1cm4gdHJ1ZTsKfQoKLyoqCiogQ2hlY2sgaWYgYSBmdW5jdGlvbiBpcyBjYWxsYWJsZS4KKiBTb21lIHNlcnZlcnMgZGlzYWJsZSBjb3B5LHJlbmFtZSBldGMuCioKKiBAcGFybSAgc3RyaW5nICAkbmFtZQoqCiogQHJldHVybiAgYm9vbAoqLwpmdW5jdGlvbiBpc19mdW5jdGlvbl9jYWxsYWJsZSgkbmFtZSkKewoJaWYgKGZ1bmN0aW9uX2V4aXN0cygkbmFtZSkgPT09IGZhbHNlKQoJewoJCXJldHVybiBmYWxzZTsKCX0KCSRkaXNhYmxlZCA9IGV4cGxvZGUoJywnLCBpbmlfZ2V0KCdkaXNhYmxlX2Z1bmN0aW9ucycpKTsKCglyZXR1cm4gISBpbl9hcnJheSgkbmFtZSwgJGRpc2FibGVkKTsKfQoKLyoqCiogcmVjdXJzaXZseSBjb3BpZXMgZXZlcnl0aGluZwoqCiogQHBhcmFtICBzdHJpbmcgICRzb3VyY2UKKiBAcGFyYW0gIHN0cmluZyAgJGRlc3RpbmF0aW9uCiogQHBhcmFtICBib29sICAgICRpc19yZWMKKi8KZnVuY3Rpb24gcmNvcHkoJHNvdXJjZSwgJGRlc3RpbmF0aW9uLCAkaXNfcmVjID0gZmFsc2UpCnsKCWlmIChpc19kaXIoJHNvdXJjZSkpCgl7CgkJaWYgKCRpc19yZWMgPT09IGZhbHNlKQoJCXsKCQkJJHBpbmZvID0gcGF0aGluZm8oJHNvdXJjZSk7CgkJCSRkZXN0aW5hdGlvbiA9IHJ0cmltKCRkZXN0aW5hdGlvbiwgJy8nKSAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkcGluZm9bJ2Jhc2VuYW1lJ107CgkJfQoJCWlmIChpc19kaXIoJGRlc3RpbmF0aW9uKSA9PT0gZmFsc2UpCgkJewoJCQlta2RpcigkZGVzdGluYXRpb24sIDA3NTUsIHRydWUpOwoJCX0KCgkJJGZpbGVzID0gc2NhbmRpcigkc291cmNlKTsKCQlmb3JlYWNoICgkZmlsZXMgYXMgJGZpbGUpCgkJewoJCQlpZiAoJGZpbGUgIT0gIi4iICYmICRmaWxlICE9ICIuLiIpCgkJCXsKCQkJCXJjb3B5KCRzb3VyY2UgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJGZpbGUsIHJ0cmltKCRkZXN0aW5hdGlvbiwgJy8nKSAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkZmlsZSwgdHJ1ZSk7CgkJCX0KCQl9Cgl9CgllbHNlCgl7CgkJaWYgKGZpbGVfZXhpc3RzKCRzb3VyY2UpKQoJCXsKCQkJaWYgKGlzX2RpcigkZGVzdGluYXRpb24pID09PSB0cnVlKQoJCQl7CgkJCQkkcGluZm8gPSBwYXRoaW5mbygkc291cmNlKTsKCQkJCSRkZXN0MiA9IHJ0cmltKCRkZXN0aW5hdGlvbiwgJy8nKSAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkcGluZm9bJ2Jhc2VuYW1lJ107CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkZGVzdDIgPSAkZGVzdGluYXRpb247CgkJCX0KCgkJCWNvcHkoJHNvdXJjZSwgJGRlc3QyKTsKCQl9Cgl9Cn0KCgoKCi8qKgoqIHJlY3Vyc2l2bHkgcmVuYW1lcyBldmVyeXRoaW5nCioKKiBJIGtub3cgY29weSBhbmQgcmVuYW1lIGNvdWxkIGJlIGRvbmUgd2l0aCBqdXN0IG9uZSBmdW5jdGlvbgoqIGJ1dCBpIHNwbGl0IHRoZSAyIGJlY2F1c2Ugc29tZXRpbWVzIHJlbmFtZSBmYWlscyBvbiB3aW5kb3dzCiogTmVlZCBtb3JlIGZlZWRiYWNrIGZyb20gdXNlcnMgYW5kIHJlZmFjdG9yIGlmIG5lZWRlZAoqCiogQHBhcmFtICBzdHJpbmcgICRzb3VyY2UKKiBAcGFyYW0gIHN0cmluZyAgJGRlc3RpbmF0aW9uCiogQHBhcmFtICBib29sICAgICRpc19yZWMKKi8KZnVuY3Rpb24gcnJlbmFtZSgkc291cmNlLCAkZGVzdGluYXRpb24sICRpc19yZWMgPSBmYWxzZSkKewoJaWYgKGlzX2Rpcigkc291cmNlKSkKCXsKCQlpZiAoJGlzX3JlYyA9PT0gZmFsc2UpCgkJewoJCQkkcGluZm8gPSBwYXRoaW5mbygkc291cmNlKTsKCQkJJGRlc3RpbmF0aW9uID0gcnRyaW0oJGRlc3RpbmF0aW9uLCAnLycpIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICRwaW5mb1snYmFzZW5hbWUnXTsKCQl9CgkJaWYgKGlzX2RpcigkZGVzdGluYXRpb24pID09PSBmYWxzZSkKCQl7CgkJCW1rZGlyKCRkZXN0aW5hdGlvbiwgMDc1NSwgdHJ1ZSk7CgkJfQoKCQkkZmlsZXMgPSBzY2FuZGlyKCRzb3VyY2UpOwoJCWZvcmVhY2ggKCRmaWxlcyBhcyAkZmlsZSkKCQl7CgkJCWlmICgkZmlsZSAhPSAiLiIgJiYgJGZpbGUgIT0gIi4uIikKCQkJewoJCQkJcnJlbmFtZSgkc291cmNlIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICRmaWxlLCBydHJpbSgkZGVzdGluYXRpb24sICcvJykgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJGZpbGUsIHRydWUpOwoJCQl9CgkJfQoJfQoJZWxzZQoJewoJCWlmIChmaWxlX2V4aXN0cygkc291cmNlKSkKCQl7CgkJCWlmIChpc19kaXIoJGRlc3RpbmF0aW9uKSA9PT0gdHJ1ZSkKCQkJewoJCQkJJHBpbmZvID0gcGF0aGluZm8oJHNvdXJjZSk7CgkJCQkkZGVzdDIgPSBydHJpbSgkZGVzdGluYXRpb24sICcvJykgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJHBpbmZvWydiYXNlbmFtZSddOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJGRlc3QyID0gJGRlc3RpbmF0aW9uOwoJCQl9CgoJCQlyZW5hbWUoJHNvdXJjZSwgJGRlc3QyKTsKCQl9Cgl9Cn0KCi8vIE9uIHdpbmRvd3MgcmVuYW1lIGxlYXZlcyBmb2xkZXJzIHNvbWV0aW1lCi8vIFRoaXMgd2lsbCBjbGVhciBsZWZ0b3ZlciBmb2xkZXJzCi8vIEFmdGVyIG1vcmUgZmVlZGJhY2sgd2lsbCBtZXJnZSBpdCB3aXRoIHJyZW5hbWUKZnVuY3Rpb24gcnJlbmFtZV9hZnRlcl9jbGVhbmVyKCRzb3VyY2UpCnsKCSRmaWxlcyA9IHNjYW5kaXIoJHNvdXJjZSk7CgoJZm9yZWFjaCAoJGZpbGVzIGFzICRmaWxlKQoJewoJCWlmICgkZmlsZSAhPSAiLiIgJiYgJGZpbGUgIT0gIi4uIikKCQl7CgkJCWlmIChpc19kaXIoJHNvdXJjZSAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkZmlsZSkpCgkJCXsKCQkJCXJyZW5hbWVfYWZ0ZXJfY2xlYW5lcigkc291cmNlIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICRmaWxlKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCXVubGluaygkc291cmNlIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICRmaWxlKTsKCQkJfQoJCX0KCX0KCglyZXR1cm4gcm1kaXIoJHNvdXJjZSk7Cn0KCi8qKgoqIFJlY3Vyc2l2ZSBjaG1vZAoqIEBwYXJhbSAgc3RyaW5nICAkc291cmNlCiogQHBhcmFtICBpbnQgICAgICRtb2RlCiogQHBhcmFtICBzdHJpbmcgICRyZWNfb3B0aW9uCiogQHBhcmFtICBib29sICAgICRpc19yZWMKKi8KZnVuY3Rpb24gcmNobW9kKCRzb3VyY2UsICRtb2RlLCAkcmVjX29wdGlvbiA9ICJub25lIiwgJGlzX3JlYyA9IGZhbHNlKQp7CglpZiAoJHJlY19vcHRpb24gPT0gIm5vbmUiKQoJewoJCWNobW9kKCRzb3VyY2UsICRtb2RlKTsKCX0KCWVsc2UKCXsKCQlpZiAoJGlzX3JlYyA9PT0gZmFsc2UpCgkJewoJCQljaG1vZCgkc291cmNlLCAkbW9kZSk7CgkJfQoKCQkkZmlsZXMgPSBzY2FuZGlyKCRzb3VyY2UpOwoKCQlmb3JlYWNoICgkZmlsZXMgYXMgJGZpbGUpCgkJewoJCQlpZiAoJGZpbGUgIT0gIi4iICYmICRmaWxlICE9ICIuLiIpCgkJCXsKCQkJCWlmIChpc19kaXIoJHNvdXJjZSAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkZmlsZSkpCgkJCQl7CgkJCQkJaWYgKCRyZWNfb3B0aW9uID09ICJmb2xkZXJzIiB8fCAkcmVjX29wdGlvbiA9PSAiYm90aCIpCgkJCQkJewoJCQkJCQljaG1vZCgkc291cmNlIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICRmaWxlLCAkbW9kZSk7CgkJCQkJfQoJCQkJCXJjaG1vZCgkc291cmNlIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICRmaWxlLCAkbW9kZSwgJHJlY19vcHRpb24sIHRydWUpOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCWlmICgkcmVjX29wdGlvbiA9PSAiZmlsZXMiIHx8ICRyZWNfb3B0aW9uID09ICJib3RoIikKCQkJCQl7CgkJCQkJCWNobW9kKCRzb3VyY2UgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJGZpbGUsICRtb2RlKTsKCQkJCQl9CgkJCQl9CgkJCX0KCQl9Cgl9Cn0KCi8qKgoqIEBwYXJhbSAgc3RyaW5nICAkaW5wdXQKKiBAcGFyYW0gIGJvb2wgICAgJHRyYWNlCiogQHBhcmFtICBib29sICAgICRoYWx0CiovCmZ1bmN0aW9uIGRlYnVnZ2VyKCRpbnB1dCwgJHRyYWNlID0gZmFsc2UsICRoYWx0ID0gZmFsc2UpCnsKCW9iX3N0YXJ0KCk7CgoJZWNobyAiPGJyPi0tLS0tIERFQlVHIERVTVAgLS0tLS0iOwoJZWNobyAiPHByZT4iOwoJdmFyX2R1bXAoJGlucHV0KTsKCWVjaG8gIjwvcHJlPiI7CgoJaWYgKCR0cmFjZSkKCXsKCQlpZiAoaXNfcGhwKCc1LjMuNicpKQoJCXsKCQkJJGRlYnVnID0gZGVidWdfYmFja3RyYWNlKERFQlVHX0JBQ0tUUkFDRV9JR05PUkVfQVJHUyk7CgkJfQoJCWVsc2UKCQl7CgkJCSRkZWJ1ZyA9IGRlYnVnX2JhY2t0cmFjZShmYWxzZSk7CgkJfQoKCQllY2hvICI8YnI+LS0tLS1TVEFDSyBUUkFDRS0tLS0tIjsKCQllY2hvICI8cHJlPiI7CgkJdmFyX2R1bXAoJGRlYnVnKTsKCQllY2hvICI8L3ByZT4iOwoJfQoKCWVjaG8gIjwvcHJlPiI7CgllY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08YnI+IjsKCgkkcmV0ID0gb2JfZ2V0X2NvbnRlbnRzKCk7CglvYl9lbmRfY2xlYW4oKTsKCgllY2hvICRyZXQ7CgoJaWYgKCRoYWx0ID09IHRydWUpCgl7CgkJZXhpdCgpOwoJfQp9CgovKioKKiBAcGFyYW0gIHN0cmluZyAgJHZlcnNpb24KKgoqIEByZXR1cm4gIGJvb2wKKi8KZnVuY3Rpb24gaXNfcGhwKCR2ZXJzaW9uID0gJzUuMC4wJykKewoJc3RhdGljICRwaHBWZXI7CgkkdmVyc2lvbiA9IChzdHJpbmcpICR2ZXJzaW9uOwoKCWlmICggISBpc3NldCgkcGhwVmVyWyAkdmVyc2lvbiBdKSkKCXsKCQkkcGhwVmVyWyAkdmVyc2lvbiBdID0gKHZlcnNpb25fY29tcGFyZShQSFBfVkVSU0lPTiwgJHZlcnNpb24pIDwgMCkgPyBmYWxzZSA6IHRydWU7Cgl9CgoJcmV0dXJuICRwaHBWZXJbICR2ZXJzaW9uIF07Cn0KCi8qKgoqIFJldHVybiB0aGUgY2FsbGVyIGxvY2F0aW9uIGlmIHNldCBpbiBjb25maWcucGhwCiogQHBhcmFtICBzdHJpbmcgICR2ZXJzaW9uCioKKiBAcmV0dXJuICBib29sCiovCmZ1bmN0aW9uIEFkZEVycm9yTG9jYXRpb24oKQp7CglpZiAoZGVmaW5lZCgnREVCVUdfRVJST1JfTUVTU0FHRScpIGFuZCBERUJVR19FUlJPUl9NRVNTQUdFKSB7CgkJJHBpbGU9ZGVidWdfYmFja3RyYWNlKCk7CgkJcmV0dXJuICIgKEAiLiRwaWxlWzBdWyJmaWxlIl0uIiMiLiRwaWxlWzBdWyJsaW5lIl0uIikiOwoJfQoJcmV0dXJuICIiOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/cors/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/cors/jquery.postmessage-transport.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogalF1ZXJ5IHBvc3RNZXNzYWdlIFRyYW5zcG9ydCBQbHVnaW4KICogaHR0cHM6Ly9naXRodWIuY29tL2JsdWVpbXAvalF1ZXJ5LUZpbGUtVXBsb2FkCiAqCiAqIENvcHlyaWdodCAyMDExLCBTZWJhc3RpYW4gVHNjaGFuCiAqIGh0dHBzOi8vYmx1ZWltcC5uZXQKICoKICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlOgogKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVAogKi8KCi8qIGdsb2JhbCBkZWZpbmUsIHJlcXVpcmUsIHdpbmRvdywgZG9jdW1lbnQgKi8KCjsoZnVuY3Rpb24gKGZhY3RvcnkpIHsKICAgICd1c2Ugc3RyaWN0JzsKICAgIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHsKICAgICAgICAvLyBSZWdpc3RlciBhcyBhbiBhbm9ueW1vdXMgQU1EIG1vZHVsZToKICAgICAgICBkZWZpbmUoWydqcXVlcnknXSwgZmFjdG9yeSk7CiAgICB9IGVsc2UgaWYgKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JykgewogICAgICAgIC8vIE5vZGUvQ29tbW9uSlM6CiAgICAgICAgZmFjdG9yeShyZXF1aXJlKCdqcXVlcnknKSk7CiAgICB9IGVsc2UgewogICAgICAgIC8vIEJyb3dzZXIgZ2xvYmFsczoKICAgICAgICBmYWN0b3J5KHdpbmRvdy5qUXVlcnkpOwogICAgfQp9KGZ1bmN0aW9uICgkKSB7CiAgICAndXNlIHN0cmljdCc7CgogICAgdmFyIGNvdW50ZXIgPSAwLAogICAgICAgIG5hbWVzID0gWwogICAgICAgICAgICAnYWNjZXB0cycsCiAgICAgICAgICAgICdjYWNoZScsCiAgICAgICAgICAgICdjb250ZW50cycsCiAgICAgICAgICAgICdjb250ZW50VHlwZScsCiAgICAgICAgICAgICdjcm9zc0RvbWFpbicsCiAgICAgICAgICAgICdkYXRhJywKICAgICAgICAgICAgJ2RhdGFUeXBlJywKICAgICAgICAgICAgJ2hlYWRlcnMnLAogICAgICAgICAgICAnaWZNb2RpZmllZCcsCiAgICAgICAgICAgICdtaW1lVHlwZScsCiAgICAgICAgICAgICdwYXNzd29yZCcsCiAgICAgICAgICAgICdwcm9jZXNzRGF0YScsCiAgICAgICAgICAgICd0aW1lb3V0JywKICAgICAgICAgICAgJ3RyYWRpdGlvbmFsJywKICAgICAgICAgICAgJ3R5cGUnLAogICAgICAgICAgICAndXJsJywKICAgICAgICAgICAgJ3VzZXJuYW1lJwogICAgICAgIF0sCiAgICAgICAgY29udmVydCA9IGZ1bmN0aW9uIChwKSB7CiAgICAgICAgICAgIHJldHVybiBwOwogICAgICAgIH07CgogICAgJC5hamF4U2V0dXAoewogICAgICAgIGNvbnZlcnRlcnM6IHsKICAgICAgICAgICAgJ3Bvc3RtZXNzYWdlIHRleHQnOiBjb252ZXJ0LAogICAgICAgICAgICAncG9zdG1lc3NhZ2UganNvbic6IGNvbnZlcnQsCiAgICAgICAgICAgICdwb3N0bWVzc2FnZSBodG1sJzogY29udmVydAogICAgICAgIH0KICAgIH0pOwoKICAgICQuYWpheFRyYW5zcG9ydCgncG9zdG1lc3NhZ2UnLCBmdW5jdGlvbiAob3B0aW9ucykgewogICAgICAgIGlmIChvcHRpb25zLnBvc3RNZXNzYWdlICYmIHdpbmRvdy5wb3N0TWVzc2FnZSkgewogICAgICAgICAgICB2YXIgaWZyYW1lLAogICAgICAgICAgICAgICAgbG9jID0gJCgnPGE+JykucHJvcCgnaHJlZicsIG9wdGlvbnMucG9zdE1lc3NhZ2UpWzBdLAogICAgICAgICAgICAgICAgdGFyZ2V0ID0gbG9jLnByb3RvY29sICsgJy8vJyArIGxvYy5ob3N0LAogICAgICAgICAgICAgICAgeGhyVXBsb2FkID0gb3B0aW9ucy54aHIoKS51cGxvYWQ7CiAgICAgICAgICAgIC8vIElFIGFsd2F5cyBpbmNsdWRlcyB0aGUgcG9ydCBmb3IgdGhlIGhvc3QgcHJvcGVydHkgb2YgYSBsaW5rCiAgICAgICAgICAgIC8vIGVsZW1lbnQsIGJ1dCBub3QgaW4gdGhlIGxvY2F0aW9uLmhvc3Qgb3Igb3JpZ2luIHByb3BlcnR5IGZvciB0aGUKICAgICAgICAgICAgLy8gZGVmYXVsdCBodHRwIHBvcnQgODAgYW5kIGh0dHBzIHBvcnQgNDQzLCBzbyB3ZSBzdHJpcCBpdDoKICAgICAgICAgICAgaWYgKC9eKGh0dHA6XC9cLy4rOjgwKXwoaHR0cHM6XC9cLy4rOjQ0MykkLy50ZXN0KHRhcmdldCkpIHsKICAgICAgICAgICAgICB0YXJnZXQgPSB0YXJnZXQucmVwbGFjZSgvOig4MHw0NDMpJC8sICcnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgc2VuZDogZnVuY3Rpb24gKF8sIGNvbXBsZXRlQ2FsbGJhY2spIHsKICAgICAgICAgICAgICAgICAgICBjb3VudGVyICs9IDE7CiAgICAgICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogJ3Bvc3RtZXNzYWdlLXRyYW5zcG9ydC0nICsgY291bnRlcgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBldmVudE5hbWUgPSAnbWVzc2FnZS4nICsgbWVzc2FnZS5pZDsKICAgICAgICAgICAgICAgICAgICBpZnJhbWUgPSAkKAogICAgICAgICAgICAgICAgICAgICAgICAnPGlmcmFtZSBzdHlsZT0iZGlzcGxheTpub25lOyIgc3JjPSInICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMucG9zdE1lc3NhZ2UgKyAnIiBuYW1lPSInICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UuaWQgKyAnIj48L2lmcmFtZT4nCiAgICAgICAgICAgICAgICAgICAgKS5iaW5kKCdsb2FkJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICAkLmVhY2gobmFtZXMsIGZ1bmN0aW9uIChpLCBuYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlW25hbWVdID0gb3B0aW9uc1tuYW1lXTsKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UuZGF0YVR5cGUgPSBtZXNzYWdlLmRhdGFUeXBlLnJlcGxhY2UoJ3Bvc3RtZXNzYWdlICcsICcnKTsKICAgICAgICAgICAgICAgICAgICAgICAgJCh3aW5kb3cpLmJpbmQoZXZlbnROYW1lLCBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGUub3JpZ2luYWxFdmVudDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkYXRhID0gZS5kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUub3JpZ2luID09PSB0YXJnZXQgJiYgZGF0YS5pZCA9PT0gbWVzc2FnZS5pZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnR5cGUgPT09ICdwcm9ncmVzcycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXYgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXYuaW5pdEV2ZW50KGRhdGEudHlwZSwgZmFsc2UsIHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkLmV4dGVuZChldiwgZGF0YSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhoclVwbG9hZC5kaXNwYXRjaEV2ZW50KGV2KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZUNhbGxiYWNrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5zdGF0dXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnN0YXR1c1RleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cG9zdG1lc3NhZ2U6IGRhdGEucmVzdWx0fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuaGVhZGVycwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZnJhbWUucmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQod2luZG93KS51bmJpbmQoZXZlbnROYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICBpZnJhbWVbMF0uY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9KS5hcHBlbmRUbyhkb2N1bWVudC5ib2R5KTsKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBhYm9ydDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIGlmIChpZnJhbWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWZyYW1lLnJlbW92ZSgpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9KTsKCn0pKTsK]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/cors/jquery.xdr-transport.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogalF1ZXJ5IFhEb21haW5SZXF1ZXN0IFRyYW5zcG9ydCBQbHVnaW4KICogaHR0cHM6Ly9naXRodWIuY29tL2JsdWVpbXAvalF1ZXJ5LUZpbGUtVXBsb2FkCiAqCiAqIENvcHlyaWdodCAyMDExLCBTZWJhc3RpYW4gVHNjaGFuCiAqIGh0dHBzOi8vYmx1ZWltcC5uZXQKICoKICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlOgogKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVAogKgogKiBCYXNlZCBvbiBKdWxpYW4gQXVib3VyZydzIGFqYXhIb29rcyB4ZHIuanM6CiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9qYXVib3VyZy9hamF4SG9va3MvCiAqLwoKLyogZ2xvYmFsIGRlZmluZSwgcmVxdWlyZSwgd2luZG93LCBYRG9tYWluUmVxdWVzdCAqLwoKOyhmdW5jdGlvbiAoZmFjdG9yeSkgewogICAgJ3VzZSBzdHJpY3QnOwogICAgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkgewogICAgICAgIC8vIFJlZ2lzdGVyIGFzIGFuIGFub255bW91cyBBTUQgbW9kdWxlOgogICAgICAgIGRlZmluZShbJ2pxdWVyeSddLCBmYWN0b3J5KTsKICAgIH0gZWxzZSBpZiAodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKSB7CiAgICAgICAgLy8gTm9kZS9Db21tb25KUzoKICAgICAgICBmYWN0b3J5KHJlcXVpcmUoJ2pxdWVyeScpKTsKICAgIH0gZWxzZSB7CiAgICAgICAgLy8gQnJvd3NlciBnbG9iYWxzOgogICAgICAgIGZhY3Rvcnkod2luZG93LmpRdWVyeSk7CiAgICB9Cn0oZnVuY3Rpb24gKCQpIHsKICAgICd1c2Ugc3RyaWN0JzsKICAgIGlmICh3aW5kb3cuWERvbWFpblJlcXVlc3QgJiYgISQuc3VwcG9ydC5jb3JzKSB7CiAgICAgICAgJC5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uIChzKSB7CiAgICAgICAgICAgIGlmIChzLmNyb3NzRG9tYWluICYmIHMuYXN5bmMpIHsKICAgICAgICAgICAgICAgIGlmIChzLnRpbWVvdXQpIHsKICAgICAgICAgICAgICAgICAgICBzLnhkclRpbWVvdXQgPSBzLnRpbWVvdXQ7CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHMudGltZW91dDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHZhciB4ZHI7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHNlbmQ6IGZ1bmN0aW9uIChoZWFkZXJzLCBjb21wbGV0ZUNhbGxiYWNrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhZGRQYXJhbUNoYXIgPSAvXD8vLnRlc3Qocy51cmwpID8gJyYnIDogJz8nOwogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhzdGF0dXMsIHN0YXR1c1RleHQsIHJlc3BvbnNlcywgcmVzcG9uc2VIZWFkZXJzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ZHIub25sb2FkID0geGRyLm9uZXJyb3IgPSB4ZHIub250aW1lb3V0ID0gJC5ub29wOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgeGRyID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlQ2FsbGJhY2soc3RhdHVzLCBzdGF0dXNUZXh0LCByZXNwb25zZXMsIHJlc3BvbnNlSGVhZGVycyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgeGRyID0gbmV3IFhEb21haW5SZXF1ZXN0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFhEb21haW5SZXF1ZXN0IG9ubHkgc3VwcG9ydHMgR0VUIGFuZCBQT1NUOgogICAgICAgICAgICAgICAgICAgICAgICBpZiAocy50eXBlID09PSAnREVMRVRFJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcy51cmwgPSBzLnVybCArIGFkZFBhcmFtQ2hhciArICdfbWV0aG9kPURFTEVURSc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnR5cGUgPSAnUE9TVCc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocy50eXBlID09PSAnUFVUJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcy51cmwgPSBzLnVybCArIGFkZFBhcmFtQ2hhciArICdfbWV0aG9kPVBVVCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnR5cGUgPSAnUE9TVCc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocy50eXBlID09PSAnUEFUQ0gnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnVybCA9IHMudXJsICsgYWRkUGFyYW1DaGFyICsgJ19tZXRob2Q9UEFUQ0gnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcy50eXBlID0gJ1BPU1QnOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHhkci5vcGVuKHMudHlwZSwgcy51cmwpOwogICAgICAgICAgICAgICAgICAgICAgICB4ZHIub25sb2FkID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdPSycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3RleHQ6IHhkci5yZXNwb25zZVRleHR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGU6ICcgKyB4ZHIuY29udGVudFR5cGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIHhkci5vbmVycm9yID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soNDA0LCAnTm90IEZvdW5kJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzLnhkclRpbWVvdXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhkci5vbnRpbWVvdXQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soMCwgJ3RpbWVvdXQnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ZHIudGltZW91dCA9IHMueGRyVGltZW91dDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB4ZHIuc2VuZCgocy5oYXNDb250ZW50ICYmIHMuZGF0YSkgfHwgbnVsbCk7CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBhYm9ydDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoeGRyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ZHIub25lcnJvciA9ICQubm9vcCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgeGRyLmFib3J0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9Cn0pKTsK]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/include.commercial.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[dmFyIGVuY29kZVVSTCxzaG93X2FuaW1hdGlvbixoaWRlX2FuaW1hdGlvbixhcHBseSxhcHBseV9ub25lLGFwcGx5X2ltZyxhcHBseV9hbnksYXBwbHlfdmlkZW8sYXBwbHlfbGluayxhcHBseV9maWxlX3JlbmFtZSxhcHBseV9maWxlX2R1cGxpY2F0ZSxhcHBseV9mb2xkZXJfcmVuYW1lOyFmdW5jdGlvbihlLGEscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQoZSl7c2hvd19hbmltYXRpb24oKTt2YXIgYT1uZXcgSW1hZ2U7YS5zcmM9ZSxqUXVlcnkoYSkub24oImxvYWQiLGZ1bmN0aW9uKCl7aGlkZV9hbmltYXRpb24oKX0pfWZ1bmN0aW9uIG4oKXtqUXVlcnkoIiN0ZXh0ZmlsZV9jcmVhdGVfYXJlYSIpLnBhcmVudCgpLnBhcmVudCgpLnJlbW92ZSgpLGUuYWpheCh7dHlwZToiR0VUIix1cmw6ImFqYXhfY2FsbHMucGhwP2FjdGlvbj1uZXdfZmlsZV9mb3JtIn0pLmRvbmUoZnVuY3Rpb24oYSl7Ym9vdGJveC5kaWFsb2coYSxbe2xhYmVsOmpRdWVyeSgiI2NhbmNlbCIpLnZhbCgpLCJjbGFzcyI6ImJ0biJ9LHtsYWJlbDpqUXVlcnkoIiNvayIpLnZhbCgpLCJjbGFzcyI6ImJ0bi1pbnZlcnNlIixjYWxsYmFjazpmdW5jdGlvbigpe3ZhciBhPWpRdWVyeSgiI2NyZWF0ZV90ZXh0X2ZpbGVfbmFtZSIpLnZhbCgpK2pRdWVyeSgiI2NyZWF0ZV90ZXh0X2ZpbGVfZXh0ZW5zaW9uIikudmFsKCkscj1qUXVlcnkoIiN0ZXh0ZmlsZV9jcmVhdGVfYXJlYSIpLnZhbCgpO2lmKG51bGwhPT1hKXthPV8oYSk7dmFyIHQ9alF1ZXJ5KCIjc3ViX2ZvbGRlciIpLnZhbCgpK2pRdWVyeSgiI2ZsZHJfdmFsdWUiKS52YWwoKTtlLmFqYXgoe3R5cGU6IlBPU1QiLHVybDoiZXhlY3V0ZS5waHA/YWN0aW9uPWNyZWF0ZV9maWxlIixkYXRhOntwYXRoOnQsbmFtZTphLG5ld19jb250ZW50OnJ9fSkuZG9uZShmdW5jdGlvbihlKXsiIiE9ZSYmYm9vdGJveC5hbGVydChlLGZ1bmN0aW9uKCl7c2V0VGltZW91dChmdW5jdGlvbigpe3dpbmRvdy5sb2NhdGlvbi5ocmVmPWpRdWVyeSgiI3JlZnJlc2giKS5hdHRyKCJocmVmIikrIiYiKyhuZXcgRGF0ZSkuZ2V0VGltZSgpfSw1MDApfSl9KX19fV0se2hlYWRlcjpqUXVlcnkoIiNsYW5nX25ld19maWxlIikudmFsKCl9KX0pfWZ1bmN0aW9uIGkoYSl7alF1ZXJ5KCIjdGV4dGZpbGVfZWRpdF9hcmVhIikucGFyZW50KCkucGFyZW50KCkucmVtb3ZlKCk7dmFyIHI9YS5maW5kKCIucmVuYW1lLWZpbGUtcGF0aHMiKS5hdHRyKCJkYXRhLXBhdGgiKTtlLmFqYXgoe3R5cGU6IlBPU1QiLHVybDoiYWpheF9jYWxscy5waHA/YWN0aW9uPWdldF9maWxlJnN1Yl9hY3Rpb249ZWRpdCZwcmV2aWV3X21vZGU9dGV4dCIsZGF0YTp7cGF0aDpyfX0pLmRvbmUoZnVuY3Rpb24odCl7Ym9vdGJveC5kaWFsb2codCxbe2xhYmVsOmpRdWVyeSgiI2NhbmNlbCIpLnZhbCgpLCJjbGFzcyI6ImJ0biJ9LHtsYWJlbDpqUXVlcnkoIiNvayIpLnZhbCgpLCJjbGFzcyI6ImJ0bi1pbnZlcnNlIixjYWxsYmFjazpmdW5jdGlvbigpe3ZhciBhPWpRdWVyeSgiI3RleHRmaWxlX2VkaXRfYXJlYSIpLnZhbCgpO2UuYWpheCh7dHlwZToiUE9TVCIsdXJsOiJleGVjdXRlLnBocD9hY3Rpb249c2F2ZV90ZXh0X2ZpbGUiLGRhdGE6e3BhdGg6cixuZXdfY29udGVudDphfX0pLmRvbmUoZnVuY3Rpb24oZSl7IiIhPWUmJmJvb3Rib3guYWxlcnQoZSl9KX19XSx7aGVhZGVyOmEuZmluZCgiLm5hbWVfZG93bmxvYWQiKS52YWwoKX0pfSl9ZnVuY3Rpb24gbCgpe2UuYWpheCh7dHlwZToiUE9TVCIsdXJsOiJhamF4X2NhbGxzLnBocD9hY3Rpb249Z2V0X2xhbmciLGRhdGE6e319KS5kb25lKGZ1bmN0aW9uKGEpe2Jvb3Rib3guZGlhbG9nKGEsW3tsYWJlbDpqUXVlcnkoIiNjYW5jZWwiKS52YWwoKSwiY2xhc3MiOiJidG4ifSx7bGFiZWw6alF1ZXJ5KCIjb2siKS52YWwoKSwiY2xhc3MiOiJidG4taW52ZXJzZSIsY2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgYT1qUXVlcnkoIiNuZXdfbGFuZ19zZWxlY3QiKS52YWwoKTtlLmFqYXgoe3R5cGU6IlBPU1QiLHVybDoiYWpheF9jYWxscy5waHA/YWN0aW9uPWNoYW5nZV9sYW5nIixkYXRhOntjaG9vc2VuX2xhbmc6YX19KS5kb25lKGZ1bmN0aW9uKGUpeyIiIT1lP2Jvb3Rib3guYWxlcnQoZSk6c2V0VGltZW91dChmdW5jdGlvbigpe3dpbmRvdy5sb2NhdGlvbi5ocmVmPWpRdWVyeSgiI3JlZnJlc2giKS5hdHRyKCJocmVmIikucmVwbGFjZSgvbGFuZz1bXHddKiYvaSwibGFuZz0iK2ErIiYiKSsiJiIrKG5ldyBEYXRlKS5nZXRUaW1lKCl9LDEwMCl9KX19XSx7aGVhZGVyOmpRdWVyeSgiI2xhbmdfbGFuZ19jaGFuZ2UiKS52YWwoKX0pfSl9ZnVuY3Rpb24gbyhhKXtqUXVlcnkoIiNmaWxlc19wZXJtaXNzaW9uX3N0YXJ0IikucGFyZW50KCkucGFyZW50KCkucmVtb3ZlKCk7dmFyIHI9YS5maW5kKCIucmVuYW1lLWZpbGUtcGF0aHMiKSx0PXIuYXR0cigiZGF0YS1wYXRoIiksbj1yLmF0dHIoImRhdGEtcGVybWlzc2lvbnMiKSxpPXIuYXR0cigiZGF0YS1mb2xkZXIiKTtlLmFqYXgoe3R5cGU6IlBPU1QiLHVybDoiYWpheF9jYWxscy5waHA/YWN0aW9uPWNobW9kIixkYXRhOntwYXRoOnQscGVybWlzc2lvbnM6bixmb2xkZXI6aX19KS5kb25lKGZ1bmN0aW9uKGEpe2Jvb3Rib3guZGlhbG9nKGEsW3tsYWJlbDpqUXVlcnkoIiNjYW5jZWwiKS52YWwoKSwiY2xhc3MiOiJidG4ifSx7bGFiZWw6alF1ZXJ5KCIjb2siKS52YWwoKSwiY2xhc3MiOiJidG4taW52ZXJzZSIsY2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgYT0iLSI7YSs9alF1ZXJ5KCIjdV80IikuaXMoIjpjaGVja2VkIik/InIiOiItIixhKz1qUXVlcnkoIiN1XzIiKS5pcygiOmNoZWNrZWQiKT8idyI6Ii0iLGErPWpRdWVyeSgiI3VfMSIpLmlzKCI6Y2hlY2tlZCIpPyJ4IjoiLSIsYSs9alF1ZXJ5KCIjZ180IikuaXMoIjpjaGVja2VkIik/InIiOiItIixhKz1qUXVlcnkoIiNnXzIiKS5pcygiOmNoZWNrZWQiKT8idyI6Ii0iLGErPWpRdWVyeSgiI2dfMSIpLmlzKCI6Y2hlY2tlZCIpPyJ4IjoiLSIsYSs9alF1ZXJ5KCIjYV80IikuaXMoIjpjaGVja2VkIik/InIiOiItIixhKz1qUXVlcnkoIiNhXzIiKS5pcygiOmNoZWNrZWQiKT8idyI6Ii0iLGErPWpRdWVyeSgiI2FfMSIpLmlzKCI6Y2hlY2tlZCIpPyJ4IjoiLSI7dmFyIG49alF1ZXJ5KCIjY2htb2RfZm9ybSAjY2htb2RfdmFsdWUiKS52YWwoKTtpZigiIiE9biYmInVuZGVmaW5lZCIhPXR5cGVvZiBuKXt2YXIgbD1qUXVlcnkoIiNjaG1vZF9mb3JtIGlucHV0W25hbWU9YXBwbHlfcmVjdXJzaXZlXTpjaGVja2VkIikudmFsKCk7IiIhPWwmJiJ1bmRlZmluZWQiIT10eXBlb2YgbHx8KGw9Im5vbmUiKSxlLmFqYXgoe3R5cGU6IlBPU1QiLHVybDoiZXhlY3V0ZS5waHA/YWN0aW9uPWNobW9kIixkYXRhOntwYXRoOnQsbmV3X21vZGU6bixpc19yZWN1cnNpdmU6bCxmb2xkZXI6aX19KS5kb25lKGZ1bmN0aW9uKGUpeyIiIT1lP2Jvb3Rib3guYWxlcnQoZSk6ci5hdHRyKCJkYXRhLXBlcm1pc3Npb25zIixhKX0pfX19XSx7aGVhZGVyOmpRdWVyeSgiI2xhbmdfZmlsZV9wZXJtaXNzaW9uIikudmFsKCl9KSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dSghMSl9LDEwMCl9KX1mdW5jdGlvbiB1KGEpe3ZhciByPVtdO2lmKHIudXNlcj0wLHIuZ3JvdXA9MCxyLmFsbD0wLCJ1bmRlZmluZWQiIT10eXBlb2YgYSYmMT09YSl7dmFyIHQ9alF1ZXJ5KCIjY2htb2RfZm9ybSAjY2htb2RfdmFsdWUiKS52YWwoKTtyLnVzZXI9dC5zdWJzdHIoMCwxKSxyLmdyb3VwPXQuc3Vic3RyKDEsMSksci5hbGw9dC5zdWJzdHIoMiwxKSxlLmVhY2gocixmdW5jdGlvbihhKXsoIiI9PXJbYV18fDA9PWUuaXNOdW1lcmljKHJbYV0pfHxwYXJzZUludChyW2FdKTwwfHxwYXJzZUludChyW2FdKT43KSYmKHJbYV09IjAiKX0pLGpRdWVyeSgiI2NobW9kX2Zvcm0gaW5wdXQ6Y2hlY2tib3giKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9alF1ZXJ5KHRoaXMpLmF0dHIoImRhdGEtZ3JvdXAiKSxhPWpRdWVyeSh0aGlzKS5hdHRyKCJkYXRhLXZhbHVlIik7YyhyW2VdLGEpP2pRdWVyeSh0aGlzKS5wcm9wKCJjaGVja2VkIiwhMCk6alF1ZXJ5KHRoaXMpLnByb3AoImNoZWNrZWQiLCExKX0pfWVsc2UgalF1ZXJ5KCIjY2htb2RfZm9ybSBpbnB1dDpjaGVja2JveDpjaGVja2VkIikuZWFjaChmdW5jdGlvbigpe3ZhciBlPWpRdWVyeSh0aGlzKS5hdHRyKCJkYXRhLWdyb3VwIiksYT1qUXVlcnkodGhpcykuYXR0cigiZGF0YS12YWx1ZSIpO3JbZV09cGFyc2VJbnQocltlXSkrcGFyc2VJbnQoYSl9KSxqUXVlcnkoIiNjaG1vZF9mb3JtICNjaG1vZF92YWx1ZSIpLnZhbChyLnVzZXIudG9TdHJpbmcoKStyLmdyb3VwLnRvU3RyaW5nKCkrci5hbGwudG9TdHJpbmcoKSl9ZnVuY3Rpb24gYyhhLHIpe3ZhciB0PVtdO3JldHVybiB0WzFdPVsxLDMsNSw3XSx0WzJdPVsyLDMsNiw3XSx0WzRdPVs0LDUsNiw3XSxhPXBhcnNlSW50KGEpLHI9cGFyc2VJbnQociksZS5pbkFycmF5KGEsdFtyXSkhPS0xfWZ1bmN0aW9uIGQoKXtib290Ym94LmNvbmZpcm0oalF1ZXJ5KCIjbGFuZ19jbGVhcl9jbGlwYm9hcmRfY29uZmlybSIpLnZhbCgpLGpRdWVyeSgiI2NhbmNlbCIpLnZhbCgpLGpRdWVyeSgiI29rIikudmFsKCksZnVuY3Rpb24oYSl7MT09YSYmZS5hamF4KHt0eXBlOiJQT1NUIix1cmw6ImFqYXhfY2FsbHMucGhwP2FjdGlvbj1jbGVhcl9jbGlwYm9hcmQiLGRhdGE6e319KS5kb25lKGZ1bmN0aW9uKGUpeyIiIT1lP2Jvb3Rib3guYWxlcnQoZSk6alF1ZXJ5KCIjY2xpcGJvYXJkIikudmFsKCIwIikseSghMSl9KX0pfWZ1bmN0aW9uIHMoYSxyKXtpZigiY29weSI9PXJ8fCJjdXQiPT1yKXt2YXIgdDt0PWEuaGFzQ2xhc3MoImRpcmVjdG9yeSIpP2EuZmluZCgiLnJlbmFtZS1maWxlLXBhdGhzIikuYXR0cigiZGF0YS1wYXRoIik6YS5maW5kKCIucmVuYW1lLWZpbGUtcGF0aHMiKS5hdHRyKCJkYXRhLXBhdGgiKSxlLmFqYXgoe3R5cGU6IlBPU1QiLHVybDoiYWpheF9jYWxscy5waHA/YWN0aW9uPWNvcHlfY3V0IixkYXRhOntwYXRoOnQsc3ViX2FjdGlvbjpyfX0pLmRvbmUoZnVuY3Rpb24oZSl7IiIhPWU/Ym9vdGJveC5hbGVydChlKTooalF1ZXJ5KCIjY2xpcGJvYXJkIikudmFsKCIxIikseSghMCkpfSl9fWZ1bmN0aW9uIGYoYSl7Ym9vdGJveC5jb25maXJtKGpRdWVyeSgiI2xhbmdfcGFzdGVfY29uZmlybSIpLnZhbCgpLGpRdWVyeSgiI2NhbmNlbCIpLnZhbCgpLGpRdWVyeSgiI29rIikudmFsKCksZnVuY3Rpb24ocil7aWYoMT09cil7dmFyIHQ7dD0idW5kZWZpbmVkIiE9dHlwZW9mIGE/YS5maW5kKCIucmVuYW1lLWZvbGRlciIpLmF0dHIoImRhdGEtcGF0aCIpOmpRdWVyeSgiI3N1Yl9mb2xkZXIiKS52YWwoKStqUXVlcnkoIiNmbGRyX3ZhbHVlIikudmFsKCksZS5hamF4KHt0eXBlOiJQT1NUIix1cmw6ImV4ZWN1dGUucGhwP2FjdGlvbj1wYXN0ZV9jbGlwYm9hcmQiLGRhdGE6e3BhdGg6dH19KS5kb25lKGZ1bmN0aW9uKGUpeyIiIT1lP2Jvb3Rib3guYWxlcnQoZSk6KGpRdWVyeSgiI2NsaXBib2FyZCIpLnZhbCgiMCIpLHkoITEpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXt3aW5kb3cubG9jYXRpb24uaHJlZj1qUXVlcnkoIiNyZWZyZXNoIikuYXR0cigiaHJlZiIpKyImIisobmV3IERhdGUpLmdldFRpbWUoKX0sMzAwKSl9KX19KX1mdW5jdGlvbiBwKGEscil7dmFyIHQ7dD1hLmhhc0NsYXNzKCJkaXJlY3RvcnkiKT9hLmZpbmQoIi5yZW5hbWUtZm9sZGVyIik6YS5maW5kKCIucmVuYW1lLWZpbGUiKTt2YXIgbj10LmF0dHIoImRhdGEtcGF0aCIpO2EucGFyZW50KCkuaGlkZSgxMDApLGUuYWpheCh7dHlwZToiUE9TVCIsdXJsOiJhamF4X2NhbGxzLnBocD9hY3Rpb249Y29weV9jdXQiLGRhdGE6e3BhdGg6bixzdWJfYWN0aW9uOiJjdXQifX0pLmRvbmUoZnVuY3Rpb24odCl7aWYoIiIhPXQpYm9vdGJveC5hbGVydCh0KTtlbHNle3ZhciBuO249InVuZGVmaW5lZCIhPXR5cGVvZiByP3IuaGFzQ2xhc3MoImJhY2stZGlyZWN0b3J5Iik/ci5maW5kKCIucGF0aCIpLnZhbCgpOnIuZmluZCgiLnJlbmFtZS1mb2xkZXIiKS5hdHRyKCJkYXRhLXBhdGgiKTpqUXVlcnkoIiNzdWJfZm9sZGVyIikudmFsKCkralF1ZXJ5KCIjZmxkcl92YWx1ZSIpLnZhbCgpLGUuYWpheCh7dHlwZToiUE9TVCIsdXJsOiJleGVjdXRlLnBocD9hY3Rpb249cGFzdGVfY2xpcGJvYXJkIixkYXRhOntwYXRoOm59fSkuZG9uZShmdW5jdGlvbihlKXsiIiE9ZT8oYm9vdGJveC5hbGVydChlKSxhLnBhcmVudCgpLnNob3coMTAwKSk6KGpRdWVyeSgiI2NsaXBib2FyZCIpLnZhbCgiMCIpLHkoITEpLGEucGFyZW50KCkucmVtb3ZlKCkpfSl9fSkuZXJyb3IoZnVuY3Rpb24oKXthLnBhcmVudCgpLnNob3coMTAwKX0pfWZ1bmN0aW9uIHkoZSl7MT09ZT9qUXVlcnkoIi5wYXN0ZS1oZXJlLWJ0biwgLmNsZWFyLWNsaXBib2FyZC1idG4iKS5yZW1vdmVDbGFzcygiZGlzYWJsZWQiKTpqUXVlcnkoIi5wYXN0ZS1oZXJlLWJ0biwgLmNsZWFyLWNsaXBib2FyZC1idG4iKS5hZGRDbGFzcygiZGlzYWJsZWQiKX1mdW5jdGlvbiB2KGUpe3ZhciByPWpRdWVyeSgiLmJyZWFkY3J1bWIiKS53aWR0aCgpK2UsdD1qUXVlcnkoIiN2aWV3Iiksbj1qUXVlcnkoIiNoZWxwIik7aWYodC52YWwoKT4wKXtpZigxPT10LnZhbCgpKWpRdWVyeSgidWwuZ3JpZCBsaSwgdWwuZ3JpZCBmaWd1cmUiKS5jc3MoIndpZHRoIiwiMTAwJSIpO2Vsc2V7dmFyIGk9TWF0aC5mbG9vcihyLzM4MCk7MD09aSYmKGk9MSxqUXVlcnkoImg0IikuY3NzKCJmb250LXNpemUiLDEyKSkscj1NYXRoLmZsb29yKHIvaS0zKSxqUXVlcnkoInVsLmdyaWQgbGksIHVsLmdyaWQgZmlndXJlIikuY3NzKCJ3aWR0aCIscil9bi5oaWRlKCl9ZWxzZSBhLnRvdWNoJiZuLnNob3coKX1mdW5jdGlvbiBqKCl7dmFyIGU9alF1ZXJ5KHRoaXMpOzA9PWpRdWVyeSgiI3ZpZXciKS52YWwoKSYmKDE9PWUuYXR0cigidG9nZ2xlIik/KGUuYXR0cigidG9nZ2xlIiwwKSxlLmFuaW1hdGUoe3RvcDoiMHB4In0se3F1ZXVlOiExLGR1cmF0aW9uOjMwMH0pKTooZS5hdHRyKCJ0b2dnbGUiLDEpLGUuYW5pbWF0ZSh7dG9wOiItMzBweCJ9LHtxdWV1ZTohMSxkdXJhdGlvbjozMDB9KSkpfWZ1bmN0aW9uIG0oZSl7dmFyIGE9bmV3IFJlZ0V4cCgiKD86Wz8mXXwmKSIrZSsiPShbXiZdKykiLCJpIikscj13aW5kb3cubG9jYXRpb24uc2VhcmNoLm1hdGNoKGEpO3JldHVybiByJiZyLmxlbmd0aD4xP3JbMV06bnVsbH1mdW5jdGlvbiBRKCl7MT09alF1ZXJ5KCIjcG9wdXAiKS52YWwoKT93aW5kb3cuY2xvc2UoKTooImZ1bmN0aW9uIj09dHlwZW9mIHBhcmVudC5qUXVlcnkoIi5tb2RhbDpoYXMoaWZyYW1lKSIpLm1vZGFsJiZwYXJlbnQualF1ZXJ5KCIubW9kYWw6aGFzKGlmcmFtZSkiKS5tb2RhbCgiaGlkZSIpLCJ1bmRlZmluZWQiIT10eXBlb2YgcGFyZW50LmpRdWVyeSYmcGFyZW50LmpRdWVyeT8ib2JqZWN0Ij09dHlwZW9mIHBhcmVudC5qUXVlcnkuZmFuY3lib3g/cGFyZW50LmpRdWVyeS5mYW5jeWJveC5nZXRJbnN0YW5jZSgpLmNsb3NlKCk6ImZ1bmN0aW9uIj09dHlwZW9mIHBhcmVudC5qUXVlcnkuZmFuY3lib3gmJnBhcmVudC5qUXVlcnkuZmFuY3lib3guY2xvc2UoKToiZnVuY3Rpb24iPT10eXBlb2YgcGFyZW50LiQuZmFuY3lib3gmJnBhcmVudC4kLmZhbmN5Ym94LmNsb3NlKCkpfWZ1bmN0aW9uIGgoZSl7Zm9yKHZhciBlLGE9Wy9bXDMwMC1cMzA2XS9nLC9bXDM0MC1cMzQ2XS9nLC9bXDMxMC1cMzEzXS9nLC9bXDM1MC1cMzUzXS9nLC9bXDMxNC1cMzE3XS9nLC9bXDM1NC1cMzU3XS9nLC9bXDMyMi1cMzMwXS9nLC9bXDM2Mi1cMzcwXS9nLC9bXDMzMS1cMzM0XS9nLC9bXDM3MS1cMzc0XS9nLC9bXDMyMV0vZywvW1wzNjFdL2csL1tcMzA3XS9nLC9bXDM0N10vZ10scj1bIkEiLCJhIiwiRSIsImUiLCJJIiwiaSIsIk8iLCJvIiwiVSIsInUiLCJOIiwibiIsIkMiLCJjIl0sdD0wO3Q8YS5sZW5ndGg7dCsrKWU9ZS5yZXBsYWNlKGFbdF0sclt0XSk7cmV0dXJuIGV9ZnVuY3Rpb24gXyhhKXtyZXR1cm4gbnVsbCE9YT8oInRydWUiPT1qUXVlcnkoIiN0cmFuc2xpdGVyYXRpb24iKS52YWwoKSYmKGE9aChhKSxhPWEucmVwbGFjZSgvW15BLVphLXowLTlcLlwtXFtcXSBfXSsvZywiIikpLCJ0cnVlIj09alF1ZXJ5KCIjY29udmVydF9zcGFjZXMiKS52YWwoKSYmKGE9YS5yZXBsYWNlKC8gL2csalF1ZXJ5KCIjcmVwbGFjZV93aXRoIikudmFsKCkpKSwidHJ1ZSI9PWpRdWVyeSgiI2xvd2VyX2Nhc2UiKS52YWwoKSYmKGE9YS50b0xvd2VyQ2FzZSgpKSxhPWEucmVwbGFjZSgnIicsIiIpLGE9YS5yZXBsYWNlKCInIiwiIiksYT1hLnJlcGxhY2UoIi8iLCIiKSxhPWEucmVwbGFjZSgiXFwiLCIiKSxhPWEucmVwbGFjZSgvPFwvP1tePl0rKD58JCkvZywiIiksZS50cmltKGEpKTpudWxsfWZ1bmN0aW9uIGcoYSxyLHQsbixpKXtudWxsIT09dCYmKHQ9Xyh0KSxlLmFqYXgoe3R5cGU6IlBPU1QiLHVybDoiZXhlY3V0ZS5waHA/YWN0aW9uPSIrYSxkYXRhOntwYXRoOnIsbmFtZTp0LnJlcGxhY2UoIi8iLCIiKX19KS5kb25lKGZ1bmN0aW9uKGUpe3JldHVybiIiIT1lPyhib290Ym94LmFsZXJ0KGUpLCExKTooIiIhPWkmJndpbmRvd1tpXShuLHQpLCEwKX0pKX1mdW5jdGlvbiBiKGEscil7dmFyIHQ9alF1ZXJ5KCJsaS5kaXIiLCJ1bC5ncmlkIikuZmlsdGVyKCI6dmlzaWJsZSIpLG49alF1ZXJ5KCJsaS5maWxlIiwidWwuZ3JpZCIpLmZpbHRlcigiOnZpc2libGUiKSxpPVtdLGw9W10sbz1bXSx1PVtdO3QuZWFjaChmdW5jdGlvbigpe3ZhciBhPWpRdWVyeSh0aGlzKSx0PWEuZmluZChyKS52YWwoKTtpZihlLmlzTnVtZXJpYyh0KSlmb3IodD1wYXJzZUZsb2F0KHQpOyJ1bmRlZmluZWQiIT10eXBlb2YgaVt0XSYmaVt0XTspdD1wYXJzZUZsb2F0KHBhcnNlRmxvYXQodCkrcGFyc2VGbG9hdCguMDAxKSk7ZWxzZSB0PXQrImEiK2EuZmluZCgiaDQgYSIpLmF0dHIoImRhdGEtZmlsZSIpO2lbdF09YS5odG1sKCksbC5wdXNoKHQpfSksbi5lYWNoKGZ1bmN0aW9uKCl7dmFyIGE9alF1ZXJ5KHRoaXMpLHQ9YS5maW5kKHIpLnZhbCgpO2lmKGUuaXNOdW1lcmljKHQpKWZvcih0PXBhcnNlRmxvYXQodCk7InVuZGVmaW5lZCIhPXR5cGVvZiBvW3RdJiZvW3RdOyl0PXBhcnNlRmxvYXQocGFyc2VGbG9hdCh0KStwYXJzZUZsb2F0KC4wMDEpKTtlbHNlIHQ9dCsiYSIrYS5maW5kKCJoNCBhIikuYXR0cigiZGF0YS1maWxlIik7b1t0XT1hLmh0bWwoKSx1LnB1c2godCl9KSxlLmlzTnVtZXJpYyhsWzBdKT9sLnNvcnQoZnVuY3Rpb24oZSxhKXtyZXR1cm4gcGFyc2VGbG9hdChlKS1wYXJzZUZsb2F0KGEpfSk6bC5zb3J0KCksZS5pc051bWVyaWModVswXSk/dS5zb3J0KGZ1bmN0aW9uKGUsYSl7cmV0dXJuIHBhcnNlRmxvYXQoZSktcGFyc2VGbG9hdChhKX0pOnUuc29ydCgpLGEmJihsLnJldmVyc2UoKSx1LnJldmVyc2UoKSksdC5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBhPWpRdWVyeSh0aGlzKTthLmh0bWwoaVtsW2VdXSl9KSxuLmVhY2goZnVuY3Rpb24oZSl7dmFyIGE9alF1ZXJ5KHRoaXMpO2EuaHRtbChvW3VbZV1dKX0pfWZ1bmN0aW9uIHcoZSxhKXtyZXR1cm4gZmVhdGhlckVkaXRvci5sYXVuY2goe2ltYWdlOmUsdXJsOmF9KSwhMX1mdW5jdGlvbiB4KCl7VC51cGRhdGUoKX12YXIgaz0iOS4xMi4yIixDPSEwLFQ9bnVsbCxJPW51bGwsUz1mdW5jdGlvbigpe3ZhciBlPTA7cmV0dXJuIGZ1bmN0aW9uKGEscil7Y2xlYXJUaW1lb3V0KGUpLGU9c2V0VGltZW91dChhLHIpfX0oKSxVPWZ1bmN0aW9uKGUpe2lmKDE9PWpRdWVyeSgiI2Z0cCIpLnZhbCgpKXZhciBhPWpRdWVyeSgiI2Z0cF9iYXNlX3VybCIpLnZhbCgpK2pRdWVyeSgiI3VwbG9hZF9kaXIiKS52YWwoKStqUXVlcnkoIiNmbGRyX3ZhbHVlIikudmFsKCk7ZWxzZSB2YXIgYT1qUXVlcnkoIiNiYXNlX3VybCIpLnZhbCgpK2pRdWVyeSgiI2N1cl9kaXIiKS52YWwoKTt2YXIgcj1lLmZpbmQoImEubGluayIpLmF0dHIoImRhdGEtZmlsZSIpO3JldHVybiIiIT1yJiZudWxsIT1yJiYoYSs9cikscj1lLmZpbmQoImg0IGEuZm9sZGVyLWxpbmsiKS5hdHRyKCJkYXRhLWZpbGUiKSwiIiE9ciYmbnVsbCE9ciYmKGErPXIpLGF9LFI9e2NvbnRleHRBY3Rpb25zOntjb3B5X3VybDpmdW5jdGlvbihlKXt2YXIgYT1VKGUpO2Jvb3Rib3guYWxlcnQoJ1VSTDo8YnIvPjxkaXYgY2xhc3M9ImlucHV0LWFwcGVuZCIgc3R5bGU9IndpZHRoOjEwMCUiPjxpbnB1dCBpZD0idXJsX3RleHQiIHR5cGU9InRleHQiIHN0eWxlPSJ3aWR0aDo4MCU7IGhlaWdodDozMHB4OyIgdmFsdWU9IicrZW5jb2RlVVJMKGEpKyciIC8+PGJ1dHRvbiBpZD0iY29weS1idXR0b24iIGNsYXNzPSJidG4gYnRuLWludmVyc2UgY29weS1idXR0b24iIHN0eWxlPSJ3aWR0aDoyMCU7IGhlaWdodDozMHB4OyIgZGF0YS1jbGlwYm9hcmQtdGFyZ2V0PSIjdXJsX3RleHQiIHRpdGxlPSJjb3B5Ij48aSBjbGFzcz0iaWNvbiBpY29uLXdoaXRlIGljb24tc2hhcmUiPjwvaT4gJytqUXVlcnkoIiNsYW5nX2NvcHkiKS52YWwoKSsiPC9idXR0b24+PC9kaXY+Iil9LHVuemlwOmZ1bmN0aW9uKGEpe3ZhciByPWpRdWVyeSgiI3N1Yl9mb2xkZXIiKS52YWwoKStqUXVlcnkoIiNmbGRyX3ZhbHVlIikudmFsKCkrYS5maW5kKCJhLmxpbmsiKS5hdHRyKCJkYXRhLWZpbGUiKTtzaG93X2FuaW1hdGlvbigpLGUuYWpheCh7dHlwZToiUE9TVCIsdXJsOiJhamF4X2NhbGxzLnBocD9hY3Rpb249ZXh0cmFjdCIsZGF0YTp7cGF0aDpyfX0pLmRvbmUoZnVuY3Rpb24oZSl7aGlkZV9hbmltYXRpb24oKSwiIiE9ZT9ib290Ym94LmFsZXJ0KGUpOndpbmRvdy5sb2NhdGlvbi5ocmVmPWpRdWVyeSgiI3JlZnJlc2giKS5hdHRyKCJocmVmIikrIiYiKyhuZXcgRGF0ZSkuZ2V0VGltZSgpfSl9LGVkaXRfaW1nOmZ1bmN0aW9uKGUpe3ZhciBhPWUuYXR0cigiZGF0YS1uYW1lIik7aWYoMT09alF1ZXJ5KCIjZnRwIikudmFsKCkpdmFyIHI9alF1ZXJ5KCIjZnRwX2Jhc2VfdXJsIikudmFsKCkralF1ZXJ5KCIjdXBsb2FkX2RpciIpLnZhbCgpK2pRdWVyeSgiI2ZsZHJfdmFsdWUiKS52YWwoKSthO2Vsc2UgdmFyIHI9alF1ZXJ5KCIjYmFzZV91cmwiKS52YWwoKStqUXVlcnkoIiNjdXJfZGlyIikudmFsKCkrYTt2YXIgdD1qUXVlcnkoIiNhdmlhcnlfaW1nIik7dC5hdHRyKCJkYXRhLW5hbWUiLGEpLHNob3dfYW5pbWF0aW9uKCksdC5hdHRyKCJzcmMiLHIpLmxvYWQodyh0LmF0dHIoImlkIikscikpfSxkdXBsaWNhdGU6ZnVuY3Rpb24oZSl7dmFyIGE9ZS5maW5kKCJoNCIpLnRleHQoKS50cmltKCk7Ym9vdGJveC5wcm9tcHQoalF1ZXJ5KCIjbGFuZ19kdXBsaWNhdGUiKS52YWwoKSxqUXVlcnkoIiNjYW5jZWwiKS52YWwoKSxqUXVlcnkoIiNvayIpLnZhbCgpLGZ1bmN0aW9uKHIpe2lmKG51bGwhPT1yJiYocj1fKHIpLHIhPWEpKXt2YXIgdD1lLmZpbmQoIi5yZW5hbWUtZmlsZSIpO2coImR1cGxpY2F0ZV9maWxlIix0LmF0dHIoImRhdGEtcGF0aCIpLHIsdCwiYXBwbHlfZmlsZV9kdXBsaWNhdGUiKX19LGEpfSxzZWxlY3Q6ZnVuY3Rpb24oZSl7dmFyIGEscj1VKGUpLHQ9alF1ZXJ5KCIjZmllbGRfaWQiKS52YWwoKSxuPWpRdWVyeSgiI3JldHVybl9yZWxhdGl2ZV91cmwiKS52YWwoKTtpZigxPT1uJiYocj1yLnJlcGxhY2UoalF1ZXJ5KCIjYmFzZV91cmwiKS52YWwoKSwiIikscj1yLnJlcGxhY2UoalF1ZXJ5KCIjY3VyX2RpciIpLnZhbCgpLCIiKSksYT0xPT1qUXVlcnkoIiNwb3B1cCIpLnZhbCgpP3dpbmRvdy5vcGVuZXI6d2luZG93LnBhcmVudCwiIiE9dClpZigxPT1qUXVlcnkoIiNjcm9zc2RvbWFpbiIpLnZhbCgpKWEucG9zdE1lc3NhZ2Uoe3NlbmRlcjoicmVzcG9uc2l2ZWZpbGVtYW5hZ2VyIix1cmw6cixmaWVsZF9pZDp0fSwiKiIpO2Vsc2V7dmFyIGk9alF1ZXJ5KCIjIit0LGEuZG9jdW1lbnQpO2kudmFsKHIpLnRyaWdnZXIoImNoYW5nZSIpLCJmdW5jdGlvbiI9PXR5cGVvZiBhLnJlc3BvbnNpdmVfZmlsZW1hbmFnZXJfY2FsbGJhY2smJmEucmVzcG9uc2l2ZV9maWxlbWFuYWdlcl9jYWxsYmFjayh0KSxRKCl9ZWxzZSBhcHBseV9hbnkocil9LGNvcHk6ZnVuY3Rpb24oZSl7cyhlLCJjb3B5Iil9LGN1dDpmdW5jdGlvbihlKXtzKGUsImN1dCIpfSxwYXN0ZTpmdW5jdGlvbigpe2YoKX0sY2htb2Q6ZnVuY3Rpb24oZSl7byhlKX0sZWRpdF90ZXh0X2ZpbGU6ZnVuY3Rpb24oZSl7aShlKX19LG1ha2VDb250ZXh0TWVudTpmdW5jdGlvbigpe3ZhciBhPXRoaXM7ZS5jb250ZXh0TWVudSh7c2VsZWN0b3I6ImZpZ3VyZTpub3QoLmJhY2stZGlyZWN0b3J5KSwgLmxpc3QtdmlldzIgZmlndXJlOm5vdCguYmFjay1kaXJlY3RvcnkpIixhdXRvSGlkZTohMCxidWlsZDpmdW5jdGlvbihlKXtlLmFkZENsYXNzKCJzZWxlY3RlZCIpO3ZhciB0PXtjYWxsYmFjazpmdW5jdGlvbihyLHQpe2EuY29udGV4dEFjdGlvbnNbcl0oZSl9LGl0ZW1zOnt9fTtyZXR1cm4oZS5maW5kKCIuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZSIpLmhhc0NsYXNzKCJwbmciKXx8ZS5maW5kKCIuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZSIpLmhhc0NsYXNzKCJqcGciKXx8ZS5maW5kKCIuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZSIpLmhhc0NsYXNzKCJqcGVnIikpJiZyJiYodC5pdGVtcy5lZGl0X2ltZz17bmFtZTpqUXVlcnkoIiNsYW5nX2VkaXRfaW1hZ2UiKS52YWwoKSxpY29uOiJlZGl0X2ltZyIsZGlzYWJsZWQ6ITF9KSxlLmhhc0NsYXNzKCJkaXJlY3RvcnkiKSYmMCE9alF1ZXJ5KCIjdHlwZV9wYXJhbSIpLnZhbCgpJiYodC5pdGVtcy5zZWxlY3Q9e25hbWU6alF1ZXJ5KCIjbGFuZ19zZWxlY3QiKS52YWwoKSxpY29uOiIiLGRpc2FibGVkOiExfSksdC5pdGVtcy5jb3B5X3VybD17bmFtZTpqUXVlcnkoIiNsYW5nX3Nob3dfdXJsIikudmFsKCksaWNvbjoidXJsIixkaXNhYmxlZDohMX0sKGUuZmluZCgiLmltZy1wcmVjb250YWluZXItbWluaSAuZmlsZXR5cGUiKS5oYXNDbGFzcygiemlwIil8fGUuZmluZCgiLmltZy1wcmVjb250YWluZXItbWluaSAuZmlsZXR5cGUiKS5oYXNDbGFzcygidGFyIil8fGUuZmluZCgiLmltZy1wcmVjb250YWluZXItbWluaSAuZmlsZXR5cGUiKS5oYXNDbGFzcygiZ3oiKSkmJih0Lml0ZW1zLnVuemlwPXtuYW1lOmpRdWVyeSgiI2xhbmdfZXh0cmFjdCIpLnZhbCgpLGljb246ImV4dHJhY3QiLGRpc2FibGVkOiExfSksZS5maW5kKCIuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZSIpLmhhc0NsYXNzKCJlZGl0LXRleHQtZmlsZS1hbGxvd2VkIikmJih0Lml0ZW1zLmVkaXRfdGV4dF9maWxlPXtuYW1lOmpRdWVyeSgiI2xhbmdfZWRpdF9maWxlIikudmFsKCksaWNvbjoiZWRpdCIsZGlzYWJsZWQ6ITF9KSxlLmhhc0NsYXNzKCJkaXJlY3RvcnkiKXx8MSE9alF1ZXJ5KCIjZHVwbGljYXRlIikudmFsKCl8fCh0Lml0ZW1zLmR1cGxpY2F0ZT17bmFtZTpqUXVlcnkoIiNsYW5nX2R1cGxpY2F0ZSIpLnZhbCgpLGljb246ImR1cGxpY2F0ZSIsZGlzYWJsZWQ6ITF9KSxlLmhhc0NsYXNzKCJkaXJlY3RvcnkiKXx8MSE9alF1ZXJ5KCIjY29weV9jdXRfZmlsZXNfYWxsb3dlZCIpLnZhbCgpP2UuaGFzQ2xhc3MoImRpcmVjdG9yeSIpJiYxPT1qUXVlcnkoIiNjb3B5X2N1dF9kaXJzX2FsbG93ZWQiKS52YWwoKSYmKHQuaXRlbXMuY29weT17bmFtZTpqUXVlcnkoIiNsYW5nX2NvcHkiKS52YWwoKSxpY29uOiJjb3B5IixkaXNhYmxlZDohMX0sdC5pdGVtcy5jdXQ9e25hbWU6alF1ZXJ5KCIjbGFuZ19jdXQiKS52YWwoKSxpY29uOiJjdXQiLGRpc2FibGVkOiExfSk6KHQuaXRlbXMuY29weT17bmFtZTpqUXVlcnkoIiNsYW5nX2NvcHkiKS52YWwoKSxpY29uOiJjb3B5IixkaXNhYmxlZDohMX0sdC5pdGVtcy5jdXQ9e25hbWU6alF1ZXJ5KCIjbGFuZ19jdXQiKS52YWwoKSxpY29uOiJjdXQiLGRpc2FibGVkOiExfSksMD09alF1ZXJ5KCIjY2xpcGJvYXJkIikudmFsKCl8fGUuaGFzQ2xhc3MoImRpcmVjdG9yeSIpfHwodC5pdGVtcy5wYXN0ZT17bmFtZTpqUXVlcnkoIiNsYW5nX3Bhc3RlX2hlcmUiKS52YWwoKSxpY29uOiJjbGlwYm9hcmQtYXBwbHkiLGRpc2FibGVkOiExfSksZS5oYXNDbGFzcygiZGlyZWN0b3J5Iil8fDEhPWpRdWVyeSgiI2NobW9kX2ZpbGVzX2FsbG93ZWQiKS52YWwoKT9lLmhhc0NsYXNzKCJkaXJlY3RvcnkiKSYmMT09alF1ZXJ5KCIjY2htb2RfZGlyc19hbGxvd2VkIikudmFsKCkmJih0Lml0ZW1zLmNobW9kPXtuYW1lOmpRdWVyeSgiI2xhbmdfZmlsZV9wZXJtaXNzaW9uIikudmFsKCksaWNvbjoia2V5IixkaXNhYmxlZDohMX0pOnQuaXRlbXMuY2htb2Q9e25hbWU6alF1ZXJ5KCIjbGFuZ19maWxlX3Blcm1pc3Npb24iKS52YWwoKSxpY29uOiJrZXkiLGRpc2FibGVkOiExfSx0Lml0ZW1zLnNlcD0iLS0tLSIsdC5pdGVtcy5pbmZvPXtuYW1lOiI8c3Ryb25nPiIralF1ZXJ5KCIjbGFuZ19maWxlX2luZm8iKS52YWwoKSsiPC9zdHJvbmc+IixkaXNhYmxlZDohMH0sdC5pdGVtcy5uYW1lPXtuYW1lOmUuYXR0cigiZGF0YS1uYW1lIiksaWNvbjoibGFiZWwiLGRpc2FibGVkOiEwfSwiaW1nIj09ZS5hdHRyKCJkYXRhLXR5cGUiKSYmKHQuaXRlbXMuZGltZW5zaW9uPXtuYW1lOmUuZmluZCgiLmltZy1kaW1lbnNpb24iKS5odG1sKCksaWNvbjoiZGltZW5zaW9uIixkaXNhYmxlZDohMH0pLCJ0cnVlIiE9PWpRdWVyeSgiI3Nob3dfZm9sZGVyX3NpemUiKS52YWwoKSYmInRydWUiIT09alF1ZXJ5KCIjc2hvd19mb2xkZXJfc2l6ZSIpLnZhbCgpfHwoZS5oYXNDbGFzcygiZGlyZWN0b3J5Iik/dC5pdGVtcy5zaXplPXtuYW1lOmUuZmluZCgiLmZpbGUtc2l6ZSIpLmh0bWwoKSsiIC0gIitlLmZpbmQoIi5uZmlsZXMiKS52YWwoKSsiICIralF1ZXJ5KCIjbGFuZ19maWxlcyIpLnZhbCgpKyIgLSAiK2UuZmluZCgiLm5mb2xkZXJzIikudmFsKCkrIiAiK2pRdWVyeSgiI2xhbmdfZm9sZGVycyIpLnZhbCgpLGljb246InNpemUiLGRpc2FibGVkOiEwfTp0Lml0ZW1zLnNpemU9e25hbWU6ZS5maW5kKCIuZmlsZS1zaXplIikuaHRtbCgpLGljb246InNpemUiLGRpc2FibGVkOiEwfSksdC5pdGVtcy5kYXRlPXtuYW1lOmUuZmluZCgiLmZpbGUtZGF0ZSIpLmh0bWwoKSxpY29uOiJkYXRlIixkaXNhYmxlZDohMH0sdH0sZXZlbnRzOntoaWRlOmZ1bmN0aW9uKCl7alF1ZXJ5KCJmaWd1cmUiKS5yZW1vdmVDbGFzcygic2VsZWN0ZWQiKX19fSksalF1ZXJ5KGRvY3VtZW50KS5vbigiY29udGV4dG1lbnUiLGZ1bmN0aW9uKGUpe2lmKCFqUXVlcnkoZS50YXJnZXQpLmlzKCJmaWd1cmUiKSlyZXR1cm4hMX0pfSxiaW5kR3JpZEV2ZW50czpmdW5jdGlvbigpe2Z1bmN0aW9uIGEoZSl7d2luZG93W2UuYXR0cigiZGF0YS1mdW5jdGlvbiIpXShlLmF0dHIoImRhdGEtZmlsZSIpLGpRdWVyeSgiI2ZpZWxkX2lkIikudmFsKCkpfXZhciByPWpRdWVyeSgidWwuZ3JpZCIpO3Iub24oImNsaWNrIiwiLm1vZGFsQVYiLGZ1bmN0aW9uKGEpe3ZhciByPWpRdWVyeSh0aGlzKTthLnByZXZlbnREZWZhdWx0KCk7dmFyIHQ9alF1ZXJ5KCIjcHJldmlld0FWIiksbj1qUXVlcnkoIi5ib2R5LXByZXZpZXciKTt0LnJlbW92ZURhdGEoIm1vZGFsIiksdC5tb2RhbCh7YmFja2Ryb3A6InN0YXRpYyIsa2V5Ym9hcmQ6ITF9KSxyLmhhc0NsYXNzKCJhdWRpbyIpP24uY3NzKCJoZWlnaHQiLCI4MHB4Iik6bi5jc3MoImhlaWdodCIsIjM0NXB4IiksZS5hamF4KHt1cmw6ci5hdHRyKCJkYXRhLXVybCIpLHN1Y2Nlc3M6ZnVuY3Rpb24oZSl7bi5odG1sKGUpfX0pfSksci5vbigiY2xpY2siLCIuZmlsZS1wcmV2aWV3LWJ0biIsZnVuY3Rpb24oYSl7dmFyIHI9alF1ZXJ5KHRoaXMpO2EucHJldmVudERlZmF1bHQoKSxlLmFqYXgoe3VybDpyLmF0dHIoImRhdGEtdXJsIiksc3VjY2VzczpmdW5jdGlvbihlKXtib290Ym94Lm1vZGFsKGUsIiAiK3IucGFyZW50KCkucGFyZW50KCkucGFyZW50KCkuZmluZCgiLm5hbWUiKS52YWwoKSl9fSl9KSxyLm9uKCJjbGljayIsIi5wcmV2aWV3IixmdW5jdGlvbigpe3ZhciBlPWpRdWVyeSh0aGlzKTtyZXR1cm4gMD09ZS5oYXNDbGFzcygiZGlzYWJsZWQiKSYmalF1ZXJ5KCIjZnVsbC1pbWciKS5hdHRyKCJzcmMiLGRlY29kZVVSSUNvbXBvbmVudChlLmF0dHIoImRhdGEtdXJsIikpKSwhMH0pLHIub24oImNsaWNrIiwiLnJlbmFtZS1maWxlIixmdW5jdGlvbigpe3ZhciBhPWpRdWVyeSh0aGlzKSxyPWEucGFyZW50KCkucGFyZW50KCkucGFyZW50KCksdD1yLmZpbmQoImg0Iiksbj1lLnRyaW0odC50ZXh0KCkpO2Jvb3Rib3gucHJvbXB0KGpRdWVyeSgiI3JlbmFtZSIpLnZhbCgpLGpRdWVyeSgiI2NhbmNlbCIpLnZhbCgpLGpRdWVyeSgiI29rIikudmFsKCksZnVuY3Rpb24oZSl7bnVsbCE9PWUmJihlPV8oZSksZSE9biYmZygicmVuYW1lX2ZpbGUiLGEuYXR0cigiZGF0YS1wYXRoIiksZSxyLCJhcHBseV9maWxlX3JlbmFtZSIpKX0sbil9KSxyLm9uKCJjbGljayIsIi5yZW5hbWUtZm9sZGVyIixmdW5jdGlvbigpe3ZhciBhPWpRdWVyeSh0aGlzKSxyPWEucGFyZW50KCkucGFyZW50KCkucGFyZW50KCksdD1yLmZpbmQoImg0Iiksbj1lLnRyaW0odC50ZXh0KCkpO2Jvb3Rib3gucHJvbXB0KGpRdWVyeSgiI3JlbmFtZSIpLnZhbCgpLGpRdWVyeSgiI2NhbmNlbCIpLnZhbCgpLGpRdWVyeSgiI29rIikudmFsKCksZnVuY3Rpb24oZSl7bnVsbCE9PWUmJihlPV8oZSkucmVwbGFjZSgiLiIsIiIpLGUhPW4mJmcoInJlbmFtZV9mb2xkZXIiLGEuYXR0cigiZGF0YS1wYXRoIiksZSxyLCJhcHBseV9mb2xkZXJfcmVuYW1lIikpfSxuKX0pLHIub24oImNsaWNrIiwiLmRlbGV0ZS1maWxlIixmdW5jdGlvbigpe3ZhciBlPWpRdWVyeSh0aGlzKTtib290Ym94LmNvbmZpcm0oZS5hdHRyKCJkYXRhLWNvbmZpcm0iKSxqUXVlcnkoIiNjYW5jZWwiKS52YWwoKSxqUXVlcnkoIiNvayIpLnZhbCgpLGZ1bmN0aW9uKGEpe2lmKDE9PWEpe2coImRlbGV0ZV9maWxlIixlLmF0dHIoImRhdGEtcGF0aCIpLCIiLCIiLCIiKTt2YXIgcj1qUXVlcnkoIiNmaWxlc19udW1iZXIiKTtyLnRleHQocGFyc2VJbnQoci50ZXh0KCkpLTEpLGUucGFyZW50KCkucGFyZW50KCkucGFyZW50KCkucGFyZW50KCkucmVtb3ZlKCl9fSl9KSxyLm9uKCJjbGljayIsIi5kZWxldGUtZm9sZGVyIixmdW5jdGlvbigpe3ZhciBlPWpRdWVyeSh0aGlzKTtib290Ym94LmNvbmZpcm0oZS5hdHRyKCJkYXRhLWNvbmZpcm0iKSxqUXVlcnkoIiNjYW5jZWwiKS52YWwoKSxqUXVlcnkoIiNvayIpLnZhbCgpLGZ1bmN0aW9uKGEpe2lmKDE9PWEpe2coImRlbGV0ZV9mb2xkZXIiLGUuYXR0cigiZGF0YS1wYXRoIiksIiIsIiIsIiIpO3ZhciByPWpRdWVyeSgiI2ZvbGRlcnNfbnVtYmVyIik7ci50ZXh0KHBhcnNlSW50KHIudGV4dCgpKS0xKSxlLnBhcmVudCgpLnBhcmVudCgpLnBhcmVudCgpLnJlbW92ZSgpfX0pfSksalF1ZXJ5KCJ1bC5ncmlkIikub24oImNsaWNrIiwiLmxpbmsiLGZ1bmN0aW9uKCl7YShqUXVlcnkodGhpcykpfSksalF1ZXJ5KCJ1bC5ncmlkIikub24oImNsaWNrIiwiZGl2LmJveCIsZnVuY3Rpb24oZSl7dmFyIHI9alF1ZXJ5KHRoaXMpLmZpbmQoIi5saW5rIik7aWYoMCE9PXIubGVuZ3RoKWEocik7ZWxzZXt2YXIgdD1qUXVlcnkodGhpcykuZmluZCgiLmZvbGRlci1saW5rIik7MCE9PXQubGVuZ3RoJiYoZG9jdW1lbnQubG9jYXRpb249alF1ZXJ5KHQpLnByb3AoImhyZWYiKSl9fSl9LG1ha2VGaWx0ZXJzOmZ1bmN0aW9uKGEpe2pRdWVyeSgiI2ZpbHRlci1pbnB1dCIpLm9uKCJrZXl1cCIsZnVuY3Rpb24oKXtqUXVlcnkoIi5maWx0ZXJzIGxhYmVsIikucmVtb3ZlQ2xhc3MoImJ0bi1pbnZlcnNlIiksalF1ZXJ5KCIuZmlsdGVycyBsYWJlbCIpLmZpbmQoImkiKS5yZW1vdmVDbGFzcygiaWNvbi13aGl0ZSIpLGpRdWVyeSgiI2ZmLWl0ZW0tdHlwZS1hbGwiKS5hZGRDbGFzcygiYnRuLWludmVyc2UiKSxqUXVlcnkoIiNmZi1pdGVtLXR5cGUtYWxsIikuZmluZCgiaSIpLmFkZENsYXNzKCJpY29uLXdoaXRlIik7dmFyIHI9XyhqUXVlcnkodGhpcykudmFsKCkpLnRvTG93ZXJDYXNlKCk7alF1ZXJ5KHRoaXMpLnZhbChyKSxhJiZTKGZ1bmN0aW9uKCl7alF1ZXJ5KCJsaSIsInVsLmdyaWQgIikuZWFjaChmdW5jdGlvbigpe3ZhciBlPWpRdWVyeSh0aGlzKTsiIiE9ciYmZS5hdHRyKCJkYXRhLW5hbWUiKS50b0xvd2VyQ2FzZSgpLmluZGV4T2Yocik9PS0xP2UuaGlkZSgxMDApOmUuc2hvdygxMDApfSksZS5hamF4KHt1cmw6ImFqYXhfY2FsbHMucGhwP2FjdGlvbj1maWx0ZXImdHlwZT0iK3J9KS5kb25lKGZ1bmN0aW9uKGUpeyIiIT1lJiZib290Ym94LmFsZXJ0KGUpfSksUyhmdW5jdGlvbigpe3ZhciBlPTAhPWpRdWVyeSgiI2Rlc2NlbmRpbmciKS52YWwoKTtiKGUsIi4iK2pRdWVyeSgiI3NvcnRfYnkiKS52YWwoKSkseCgpfSw1MDApfSwzMDApfSkua2V5cHJlc3MoZnVuY3Rpb24oZSl7MTM9PWUud2hpY2gmJmpRdWVyeSgiI2ZpbHRlciIpLnRyaWdnZXIoImNsaWNrIil9KSxqUXVlcnkoIiNmaWx0ZXIiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7dmFyIGU9XyhqUXVlcnkoIiNmaWx0ZXItaW5wdXQiKS52YWwoKSksYT1qUXVlcnkoIiNjdXJyZW50X3VybCIpLnZhbCgpO2ErPWEuaW5kZXhPZigiPyIpPj0wPyImIjoiPyIsd2luZG93LmxvY2F0aW9uLmhyZWY9YSsiZmlsdGVyPSIrZX0pfSxtYWtlVXBsb2FkZXI6ZnVuY3Rpb24oKXtqUXVlcnkoIiNmaWxldXBsb2FkIikuZmlsZXVwbG9hZCh7dXJsOiJ1cGxvYWQucGhwIixtYXhDaHVua1NpemU6MjA5NzE1Mn0pLGpRdWVyeSgiI2ZpbGV1cGxvYWQiKS5iaW5kKCJmaWxldXBsb2FkZHJvcCIsZnVuY3Rpb24oZSxhKXtqUXVlcnkoIi51cGxvYWRlciIpLnNob3coMjAwKX0pLGpRdWVyeSgiI2ZpbGV1cGxvYWQiKS5iaW5kKCJmaWxldXBsb2Fkc3VibWl0IixmdW5jdGlvbihlLGEpe2EuZm9ybURhdGE9e2ZsZHI6alF1ZXJ5KCIjc3ViX2ZvbGRlciIpLnZhbCgpK2pRdWVyeSgiI2ZsZHJfdmFsdWUiKS52YWwoKSthLmZpbGVzWzBdLnJlbGF0aXZlUGF0aH19KSxqUXVlcnkoIiNmaWxldXBsb2FkIikuYWRkQ2xhc3MoImZpbGV1cGxvYWQtcHJvY2Vzc2luZyIpLGUuYWpheCh7dXJsOmpRdWVyeSgiI2ZpbGV1cGxvYWQiKS5maWxldXBsb2FkKCJvcHRpb24iLCJ1cmwiKSxkYXRhVHlwZToianNvbiIsY29udGV4dDpqUXVlcnkoIiNmaWxldXBsb2FkIilbMF19KS5hbHdheXMoZnVuY3Rpb24oKXtqUXVlcnkodGhpcykucmVtb3ZlQ2xhc3MoImZpbGV1cGxvYWQtcHJvY2Vzc2luZyIpfSksalF1ZXJ5KCIudXBsb2FkLWJ0biIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtqUXVlcnkoIi51cGxvYWRlciIpLnNob3coMjAwKX0pLGpRdWVyeSgiLmNsb3NlLXVwbG9hZGVyIikub24oImNsaWNrIixmdW5jdGlvbigpe2pRdWVyeSgiLnVwbG9hZGVyIikuaGlkZSgyMDApLHNldFRpbWVvdXQoZnVuY3Rpb24oKXt3aW5kb3cubG9jYXRpb24uaHJlZj1qUXVlcnkoIiNyZWZyZXNoIikuYXR0cigiaHJlZiIpKyImIisobmV3IERhdGUpLmdldFRpbWUoKX0sNDIwKX0pfSx1cGxvYWRVUkw6ZnVuY3Rpb24oKXtqUXVlcnkoIiN1cGxvYWRVUkwiKS5vbigiY2xpY2siLGZ1bmN0aW9uKGEpe2EucHJldmVudERlZmF1bHQoKTt2YXIgcj1qUXVlcnkoIiN1cmwiKS52YWwoKSx0PWpRdWVyeSgiI2ZsZHJfdmFsdWUiKS52YWwoKTtzaG93X2FuaW1hdGlvbigpLGUuYWpheCh7dHlwZToiUE9TVCIsdXJsOiJ1cGxvYWQucGhwIixkYXRhOntmbGRyOnQsdXJsOnJ9fSkuZG9uZShmdW5jdGlvbihlKXtoaWRlX2FuaW1hdGlvbigpLGpRdWVyeSgiI3VybCIpLnZhbCgiIil9KS5mYWlsKGZ1bmN0aW9uKGUpe2Jvb3Rib3guYWxlcnQoalF1ZXJ5KCIjbGFuZ19lcnJvcl91cGxvYWQiKS52YWwoKSksaGlkZV9hbmltYXRpb24oKSxqUXVlcnkoIiN1cmwiKS52YWwoIiIpfSl9KX0sbWFrZVNvcnQ6ZnVuY3Rpb24oYSl7alF1ZXJ5KCJpbnB1dFtuYW1lPXJhZGlvLXNvcnRdIikub24oImNsaWNrIixmdW5jdGlvbigpe3ZhciBlPWpRdWVyeSh0aGlzKS5hdHRyKCJkYXRhLWl0ZW0iKSx0PWpRdWVyeSgiIyIrZSksbj1qUXVlcnkoIi5maWx0ZXJzIGxhYmVsIik7bi5yZW1vdmVDbGFzcygiYnRuLWludmVyc2UiKSxuLmZpbmQoImkiKS5yZW1vdmVDbGFzcygiaWNvbi13aGl0ZSIpLGpRdWVyeSgiI2ZpbHRlci1pbnB1dCIpLnZhbCgiIiksdC5hZGRDbGFzcygiYnRuLWludmVyc2UiKSx0LmZpbmQoImkiKS5hZGRDbGFzcygiaWNvbi13aGl0ZSIpLCJmZi1pdGVtLXR5cGUtYWxsIj09ZT8oYT9qUXVlcnkoIi5ncmlkIGxpIikuc2hvdygzMDApOndpbmRvdy5sb2NhdGlvbi5ocmVmPWpRdWVyeSgiI2N1cnJlbnRfdXJsIikudmFsKCkrIiZzb3J0X2J5PSIralF1ZXJ5KCIjc29ydF9ieSIpLnZhbCgpKyImZGVzY2VuZGluZz0iKyhyPzE6MCksInVuZGVmaW5lZCIhPXR5cGVvZiBTdG9yYWdlJiZsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgic29ydCIsIiIpKTpqUXVlcnkodGhpcykuaXMoIjpjaGVja2VkIikmJihqUXVlcnkoIi5ncmlkIGxpIikubm90KCIuIitlKS5oaWRlKDMwMCksalF1ZXJ5KCIuZ3JpZCBsaS4iK2UpLnNob3coMzAwKSwidW5kZWZpbmVkIiE9dHlwZW9mIFN0b3JhZ2UmJmxvY2FsU3RvcmFnZS5zZXRJdGVtKCJzb3J0IixlKSkseCgpfSk7dmFyIHI9alF1ZXJ5KCIjZGVzY2VuZGluZyIpLnZhbCgpO2pRdWVyeSgiLnNvcnRlciIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXt2YXIgdD1qUXVlcnkodGhpcyk7cj1qUXVlcnkoIiNzb3J0X2J5IikudmFsKCkhPT10LmF0dHIoImRhdGEtc29ydCIpfHwwPT1yLGE/KGUuYWpheCh7dXJsOiJhamF4X2NhbGxzLnBocD9hY3Rpb249c29ydCZzb3J0X2J5PSIrdC5hdHRyKCJkYXRhLXNvcnQiKSsiJmRlc2NlbmRpbmc9Iisocj8xOjApfSksYihyLCIuIit0LmF0dHIoImRhdGEtc29ydCIpKSxqUXVlcnkoIiBhLnNvcnRlciIpLnJlbW92ZUNsYXNzKCJkZXNjZW5kaW5nIikucmVtb3ZlQ2xhc3MoImFzY2VuZGluZyIpLHI/alF1ZXJ5KCIuc29ydC0iK3QuYXR0cigiZGF0YS1zb3J0IikpLmFkZENsYXNzKCJkZXNjZW5kaW5nIik6alF1ZXJ5KCIuc29ydC0iK3QuYXR0cigiZGF0YS1zb3J0IikpLmFkZENsYXNzKCJhc2NlbmRpbmciKSxqUXVlcnkoIiNzb3J0X2J5IikudmFsKHQuYXR0cigiZGF0YS1zb3J0IikpLGpRdWVyeSgiI2Rlc2NlbmRpbmciKS52YWwocj8xOjApLHgoKSk6d2luZG93LmxvY2F0aW9uLmhyZWY9alF1ZXJ5KCIjY3VycmVudF91cmwiKS52YWwoKSsiJnNvcnRfYnk9Iit0LmF0dHIoImRhdGEtc29ydCIpKyImZGVzY2VuZGluZz0iKyhyPzE6MCl9KX19O2pRdWVyeShkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXtpZihDJiZSLm1ha2VDb250ZXh0TWVudSgpLCJ1bmRlZmluZWQiIT10eXBlb2YgU3RvcmFnZSYmMSE9alF1ZXJ5KCIjdHlwZV9wYXJhbSIpLnZhbCgpJiYzIT1qUXVlcnkoIiN0eXBlX3BhcmFtIikudmFsKCkpe3ZhciByPWxvY2FsU3RvcmFnZS5nZXRJdGVtKCJzb3J0Iik7aWYocil7dmFyIGk9alF1ZXJ5KCIjIityKTtpLmFkZENsYXNzKCJidG4taW52ZXJzZSIpLGkuZmluZCgiaSIpLmFkZENsYXNzKCJpY29uLXdoaXRlIiksalF1ZXJ5KCIuZ3JpZCBsaSIpLm5vdCgiLiIrcikuaGlkZSgzMDApLGpRdWVyeSgiLmdyaWQgbGkuIityKS5zaG93KDMwMCl9fWlmKGpRdWVyeSgiI2Z1bGwtaW1nIikub24oImNsaWNrIixmdW5jdGlvbigpe2pRdWVyeSgiI3ByZXZpZXdMaWdodGJveCIpLmxpZ2h0Ym94KCJoaWRlIil9KSxqUXVlcnkoImJvZHkiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7alF1ZXJ5KCIudGlwLXJpZ2h0IikudG9vbHRpcCgiaGlkZSIpfSksUi5iaW5kR3JpZEV2ZW50cygpLHBhcnNlSW50KGpRdWVyeSgiI2ZpbGVfbnVtYmVyIikudmFsKCkpPnBhcnNlSW50KGpRdWVyeSgiI2ZpbGVfbnVtYmVyX2xpbWl0X2pzIikudmFsKCkpKXZhciBvPSExO2Vsc2UgdmFyIG89ITA7aWYoUi5tYWtlU29ydChvKSxSLm1ha2VGaWx0ZXJzKG8pLFIudXBsb2FkVVJMKCksalF1ZXJ5KCIjaW5mbyIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtib290Ym94LmFsZXJ0KCc8ZGl2IGNsYXNzPSJ0ZXh0LWNlbnRlciI+PGJyLz48aW1nIHNyYz0iaW1nL2xvZ28ucG5nIiBhbHQ9InJlc3BvbnNpdmUgZmlsZW1hbmFnZXIiLz48YnIvPjxici8+PHA+PHN0cm9uZz5SRVNQT05TSVZFIGZpbGVtYW5hZ2VyIHYuJytrKyc8L3N0cm9uZz48YnIvPjxhIGhyZWY9Imh0dHA6Ly93d3cucmVzcG9uc2l2ZWZpbGVtYW5hZ2VyLmNvbSI+cmVzcG9uc2l2ZWZpbGVtYW5hZ2VyLmNvbTwvYT48L3A+PGJyLz48cD5Db3B5cmlnaHQgwqkgPGEgaHJlZj0iaHR0cDovL3d3dy50ZWNyYWlsLmNvbSIgYWx0PSJ0ZWNyYWlsIj5UZWNyYWlsPC9hPiAtIEFsYmVydG8gUGVyaXBvbGxpLiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvcD48YnIvPjxwPkNvbW1lcmNpYWwgTGljZW5zZTwvcD48L2Rpdj4nKX0pLGpRdWVyeSgiI2NoYW5nZV9sYW5nX2J0biIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtsKCl9KSxSLm1ha2VVcGxvYWRlcigpLGpRdWVyeSgiYm9keSIpLm9uKCJrZXlwcmVzcyIsZnVuY3Rpb24oZSl7dmFyIGE9U3RyaW5nLmZyb21DaGFyQ29kZShlLndoaWNoKTtpZigiJyI9PWF8fCciJz09YXx8IlxcIj09YXx8Ii8iPT1hKXJldHVybiExfSksalF1ZXJ5KCJ1bC5ncmlkIGxpIGZpZ2NhcHRpb24iKS5vbigiY2xpY2siLCdhW2RhdGEtdG9nZ2xlPSJsaWdodGJveCJdJyxmdW5jdGlvbigpe3QoZGVjb2RlVVJJQ29tcG9uZW50KGpRdWVyeSh0aGlzKS5hdHRyKCJkYXRhLXVybCIpKSl9KSxqUXVlcnkoIi5jcmVhdGUtZmlsZS1idG4iKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7bigpfSksalF1ZXJ5KCIubmV3LWZvbGRlciIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtib290Ym94LnByb21wdChqUXVlcnkoIiNpbnNlcnRfZm9sZGVyX25hbWUiKS52YWwoKSxqUXVlcnkoIiNjYW5jZWwiKS52YWwoKSxqUXVlcnkoIiNvayIpLnZhbCgpLGZ1bmN0aW9uKGEpe2lmKG51bGwhPT1hKXthPV8oYSkucmVwbGFjZSgiLiIsIiIpO3ZhciByPWpRdWVyeSgiI3N1Yl9mb2xkZXIiKS52YWwoKStqUXVlcnkoIiNmbGRyX3ZhbHVlIikudmFsKCk7ZS5hamF4KHt0eXBlOiJQT1NUIix1cmw6ImV4ZWN1dGUucGhwP2FjdGlvbj1jcmVhdGVfZm9sZGVyIixkYXRhOntwYXRoOnIsbmFtZTphfX0pLmRvbmUoZnVuY3Rpb24oZSl7c2V0VGltZW91dChmdW5jdGlvbigpe3dpbmRvdy5sb2NhdGlvbi5ocmVmPWpRdWVyeSgiI3JlZnJlc2giKS5hdHRyKCJocmVmIikrIiYiKyhuZXcgRGF0ZSkuZ2V0VGltZSgpfSwzMDApfSl9fSl9KSxqUXVlcnkoIi52aWV3LWNvbnRyb2xsZXIgYnV0dG9uIikub24oImNsaWNrIixmdW5jdGlvbigpe3ZhciBhPWpRdWVyeSh0aGlzKTtqUXVlcnkoIi52aWV3LWNvbnRyb2xsZXIgYnV0dG9uIikucmVtb3ZlQ2xhc3MoImJ0bi1pbnZlcnNlIiksalF1ZXJ5KCIudmlldy1jb250cm9sbGVyIGkiKS5yZW1vdmVDbGFzcygiaWNvbi13aGl0ZSIpLGEuYWRkQ2xhc3MoImJ0bi1pbnZlcnNlIiksYS5maW5kKCJpIikuYWRkQ2xhc3MoImljb24td2hpdGUiKSxlLmFqYXgoe3VybDoiYWpheF9jYWxscy5waHA/YWN0aW9uPXZpZXcmdHlwZT0iK2EuYXR0cigiZGF0YS12YWx1ZSIpfSkuZG9uZShmdW5jdGlvbihlKXsiIiE9ZSYmYm9vdGJveC5hbGVydChlKX0pLCJ1bmRlZmluZWQiIT10eXBlb2YgalF1ZXJ5KCJ1bC5ncmlkIilbMF0mJmpRdWVyeSgidWwuZ3JpZCIpWzBdJiYoalF1ZXJ5KCJ1bC5ncmlkIilbMF0uY2xhc3NOYW1lPWpRdWVyeSgidWwuZ3JpZCIpWzBdLmNsYXNzTmFtZS5yZXBsYWNlKC9cYmxpc3Qtdmlldy4qP1xiL2csIiIpKSwidW5kZWZpbmVkIiE9dHlwZW9mIGpRdWVyeSgiLnNvcnRlci1jb250YWluZXIiKVswXSYmalF1ZXJ5KCIuc29ydGVyLWNvbnRhaW5lciIpWzBdJiYoalF1ZXJ5KCIuc29ydGVyLWNvbnRhaW5lciIpWzBdLmNsYXNzTmFtZT1qUXVlcnkoIi5zb3J0ZXItY29udGFpbmVyIilbMF0uY2xhc3NOYW1lLnJlcGxhY2UoL1xibGlzdC12aWV3Lio/XGIvZywiIikpO3ZhciByPWEuYXR0cigiZGF0YS12YWx1ZSIpO2pRdWVyeSgiI3ZpZXciKS52YWwociksalF1ZXJ5KCJ1bC5ncmlkIikuYWRkQ2xhc3MoImxpc3QtdmlldyIrciksalF1ZXJ5KCIuc29ydGVyLWNvbnRhaW5lciIpLmFkZENsYXNzKCJsaXN0LXZpZXciK3IpLGEuYXR0cigiZGF0YS12YWx1ZSIpPj0xP3YoMTQpOihqUXVlcnkoInVsLmdyaWQgbGkiKS5jc3MoIndpZHRoIiwxMjYpLGpRdWVyeSgidWwuZ3JpZCBmaWd1cmUiKS5jc3MoIndpZHRoIiwxMjIpKSx4KCl9KSxhLnRvdWNoPyhqUXVlcnkoIiNoZWxwIikuc2hvdygpLGpRdWVyeSgiLmJveDpub3QoLm5vLWVmZmVjdCkiKS5zd2lwZSh7c3dpcGVMZWZ0Omosc3dpcGVSaWdodDpqLHRocmVzaG9sZDozMH0pKTooalF1ZXJ5KCIudGlwIikudG9vbHRpcCh7cGxhY2VtZW50OiJib3R0b20ifSksalF1ZXJ5KCIudGlwLXRvcCIpLnRvb2x0aXAoe3BsYWNlbWVudDoidG9wIn0pLGpRdWVyeSgiLnRpcC1sZWZ0IikudG9vbHRpcCh7cGxhY2VtZW50OiJsZWZ0In0pLGpRdWVyeSgiLnRpcC1yaWdodCIpLnRvb2x0aXAoe3BsYWNlbWVudDoicmlnaHQifSksalF1ZXJ5KCJib2R5IikuYWRkQ2xhc3MoIm5vLXRvdWNoIikpLGpRdWVyeSgiLnBhc3RlLWhlcmUtYnRuIikub24oImNsaWNrIixmdW5jdGlvbigpezA9PWpRdWVyeSh0aGlzKS5oYXNDbGFzcygiZGlzYWJsZWQiKSYmZigpfSksalF1ZXJ5KCIuY2xlYXItY2xpcGJvYXJkLWJ0biIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXswPT1qUXVlcnkodGhpcykuaGFzQ2xhc3MoImRpc2FibGVkIikmJmQoKX0pLCFhLmNzc3RyYW5zZm9ybXMpe3ZhciBjPWpRdWVyeSgiZmlndXJlIik7Yy5vbigibW91c2VvdmVyIixmdW5jdGlvbigpezA9PWpRdWVyeSgiI3ZpZXciKS52YWwoKSYmalF1ZXJ5KCIjbWFpbi1pdGVtLWNvbnRhaW5lciIpLmhhc0NsYXNzKCJuby1lZmZlY3Qtc2xpZGUiKT09PSExJiZqUXVlcnkodGhpcykuZmluZCgiLmJveDpub3QoLm5vLWVmZmVjdCkiKS5hbmltYXRlKHt0b3A6Ii0yNnB4In0se3F1ZXVlOiExLGR1cmF0aW9uOjMwMH0pfSksYy5vbigibW91c2VvdXQiLGZ1bmN0aW9uKCl7MD09alF1ZXJ5KCIjdmlldyIpLnZhbCgpJiZqUXVlcnkodGhpcykuZmluZCgiLmJveDpub3QoLm5vLWVmZmVjdCkiKS5hbmltYXRlKHt0b3A6IjBweCJ9LHtxdWV1ZTohMSxkdXJhdGlvbjozMDB9KX0pfWpRdWVyeSh3aW5kb3cpLnJlc2l6ZShmdW5jdGlvbigpe3YoMjgpfSksdigxNCkseSgxPT1qUXVlcnkoIiNjbGlwYm9hcmQiKS52YWwoKT8hMDohMSksalF1ZXJ5KCJsaS5kaXIsIGxpLmZpbGUiKS5kcmFnZ2FibGUoe2Rpc3RhbmNlOjIwLGN1cnNvcjoibW92ZSIsaGVscGVyOmZ1bmN0aW9uKCl7alF1ZXJ5KHRoaXMpLmZpbmQoImZpZ3VyZSIpLmZpbmQoIi5ib3giKS5jc3MoInRvcCIsIjBweCIpO3ZhciBlPWpRdWVyeSh0aGlzKS5jbG9uZSgpLmNzcygiei1pbmRleCIsMWUzKS5maW5kKCIuYm94IikuY3NzKCJib3gtc2hhZG93Iiwibm9uZSIpLmNzcygiLXdlYmtpdC1ib3gtc2hhZG93Iiwibm9uZSIpLnBhcmVudCgpLnBhcmVudCgpO3JldHVybiBqUXVlcnkodGhpcykuYWRkQ2xhc3MoInNlbGVjdGVkIiksZX0sc3RhcnQ6ZnVuY3Rpb24oZSxhKXtqUXVlcnkoYS5oZWxwZXIpLmFkZENsYXNzKCJ1aS1kcmFnZ2FibGUtaGVscGVyIiksMD09alF1ZXJ5KCIjdmlldyIpLnZhbCgpJiZqUXVlcnkoIiNtYWluLWl0ZW0tY29udGFpbmVyIikuYWRkQ2xhc3MoIm5vLWVmZmVjdC1zbGlkZSIpfSxzdG9wOmZ1bmN0aW9uKCl7alF1ZXJ5KHRoaXMpLnJlbW92ZUNsYXNzKCJzZWxlY3RlZCIpLDA9PWpRdWVyeSgiI3ZpZXciKS52YWwoKSYmalF1ZXJ5KCIjbWFpbi1pdGVtLWNvbnRhaW5lciIpLnJlbW92ZUNsYXNzKCJuby1lZmZlY3Qtc2xpZGUiKX19KSxqUXVlcnkoImxpLmRpcixsaS5iYWNrIikuZHJvcHBhYmxlKHthY2NlcHQ6InVsLmdyaWQgbGkiLGFjdGl2ZUNsYXNzOiJ1aS1zdGF0ZS1oaWdobGlnaHQiLGhvdmVyQ2xhc3M6InVpLXN0YXRlLWhvdmVyIixkcm9wOmZ1bmN0aW9uKGUsYSl7cChhLmRyYWdnYWJsZS5maW5kKCJmaWd1cmUiKSxqUXVlcnkodGhpcykuZmluZCgiZmlndXJlIikpfX0pLGpRdWVyeShkb2N1bWVudCkub24oImtleXVwIiwiI2NobW9kX2Zvcm0gI2NobW9kX3ZhbHVlIixmdW5jdGlvbigpe3UoITApfSksalF1ZXJ5KGRvY3VtZW50KS5vbigiY2hhbmdlIiwiI2NobW9kX2Zvcm0gaW5wdXQiLGZ1bmN0aW9uKCl7dSghMSl9KSxqUXVlcnkoZG9jdW1lbnQpLm9uKCJmb2N1c291dCIsIiNjaG1vZF9mb3JtICNjaG1vZF92YWx1ZSIsZnVuY3Rpb24oKXt2YXIgZT1qUXVlcnkoIiNjaG1vZF9mb3JtICNjaG1vZF92YWx1ZSIpO251bGw9PWUudmFsKCkubWF0Y2goL15bMC03XXszfSQvKSYmKGUudmFsKGUuYXR0cigiZGF0YS1kZWYtdmFsdWUiKSksdSghMCkpfSksVD1uZXcgTGF6eUxvYWQsST1uZXcgQ2xpcGJvYXJkKCIuYnRuIil9KSxlbmNvZGVVUkw9ZnVuY3Rpb24oZSl7Zm9yKHZhciBhPWUuc3BsaXQoIi8iKSxyPTM7cjxhLmxlbmd0aDtyKyspYVtyXT1lbmNvZGVVUklDb21wb25lbnQoYVtyXSk7cmV0dXJuIGEuam9pbigiLyIpfSxhcHBseT1mdW5jdGlvbihhLHIpe3ZhciB0O3Q9MT09alF1ZXJ5KCIjcG9wdXAiKS52YWwoKT93aW5kb3cub3BlbmVyOndpbmRvdy5wYXJlbnQ7dmFyIG49alF1ZXJ5KCIjY2FsbGJhY2siKS52YWwoKSxpPWpRdWVyeSgiI2N1cl9kaXIiKS52YWwoKSxsPShqUXVlcnkoIiNzdWJkaXIiKS52YWwoKSxqUXVlcnkoIiNiYXNlX3VybCIpLnZhbCgpKSxvPWEuc3Vic3RyKDAsYS5sYXN0SW5kZXhPZigiLiIpKSx1PWEuc3BsaXQoIi4iKS5wb3AoKTt1PXUudG9Mb3dlckNhc2UoKTt2YXIgYz0iIixkPVsib2dnIiwibXAzIiwid2F2Il0scz1bIm1wNCIsIm9nZyIsIndlYm0iXTtpZigxPT1qUXVlcnkoIiNmdHAiKS52YWwoKSl2YXIgZj1lbmNvZGVVUkwoalF1ZXJ5KCIjZnRwX2Jhc2VfdXJsIikudmFsKCkralF1ZXJ5KCIjdXBsb2FkX2RpciIpLnZhbCgpK2pRdWVyeSgiI2ZsZHJfdmFsdWUiKS52YWwoKSthKTtlbHNlIHZhciBwPWpRdWVyeSgiI3JldHVybl9yZWxhdGl2ZV91cmwiKS52YWwoKSxmPWVuY29kZVVSTCgoMT09cD9pOmwraSkrYSk7aWYoIiIhPXIpaWYoMT09alF1ZXJ5KCIjY3Jvc3Nkb21haW4iKS52YWwoKSl0LnBvc3RNZXNzYWdlKHtzZW5kZXI6InJlc3BvbnNpdmVmaWxlbWFuYWdlciIsdXJsOmYsZmllbGRfaWQ6cn0sIioiKTtlbHNle3ZhciB5PWpRdWVyeSgiIyIrcix0LmRvY3VtZW50KTt5LnZhbChmKS50cmlnZ2VyKCJjaGFuZ2UiKSwwPT1uPyJmdW5jdGlvbiI9PXR5cGVvZiB0LnJlc3BvbnNpdmVfZmlsZW1hbmFnZXJfY2FsbGJhY2smJnQucmVzcG9uc2l2ZV9maWxlbWFuYWdlcl9jYWxsYmFjayhyKToiZnVuY3Rpb24iPT10eXBlb2YgdFtuXSYmdFtuXShyKSxRKCl9ZWxzZSBlLmluQXJyYXkodSxleHRfaW1nKT4tMT8oZj1mKyI/IisobmV3IERhdGUpLmdldFRpbWUoKSxjPSc8aW1nIHNyYz0iJytmKyciIGFsdD0iJytvKyciIC8+Jyk6ZS5pbkFycmF5KHUscyk+LTE/Yz0nPHZpZGVvIGNvbnRyb2xzIHNvdXJjZSBzcmM9IicrZisnIiB0eXBlPSJ2aWRlby8nK3UrJyI+JytvKyI8L3ZpZGVvPiI6ZS5pbkFycmF5KHUsZCk+LTE/KCJtcDMiPT11JiYodT0ibXBlZyIpLGM9JzxhdWRpbyBjb250cm9scyBzcmM9IicrZisnIiB0eXBlPSJhdWRpby8nK3UrJyI+JytvKyI8L2F1ZGlvPiIpOmM9JzxhIGhyZWY9IicrZisnIiB0aXRsZT0iJytvKyciPicrbysiPC9hPiIsMT09alF1ZXJ5KCIjY3Jvc3Nkb21haW4iKS52YWwoKT90LnBvc3RNZXNzYWdlKHtzZW5kZXI6InJlc3BvbnNpdmVmaWxlbWFuYWdlciIsdXJsOmYsZmllbGRfaWQ6bnVsbCxodG1sOmN9LCIqIik6cGFyZW50LnRpbnltY2UubWFqb3JWZXJzaW9uPDQ/KHBhcmVudC50aW55bWNlLmFjdGl2ZUVkaXRvci5leGVjQ29tbWFuZCgibWNlSW5zZXJ0Q29udGVudCIsITEsYykscGFyZW50LnRpbnltY2UuYWN0aXZlRWRpdG9yLndpbmRvd01hbmFnZXIuY2xvc2UocGFyZW50LnRpbnltY2UuYWN0aXZlRWRpdG9yLndpbmRvd01hbmFnZXIucGFyYW1zLm1jZV93aW5kb3dfaWQpKToocGFyZW50LnRpbnltY2UuYWN0aXZlRWRpdG9yLmluc2VydENvbnRlbnQoYykscGFyZW50LnRpbnltY2UuYWN0aXZlRWRpdG9yLndpbmRvd01hbmFnZXIuY2xvc2UoKSl9LGFwcGx5X2xpbms9ZnVuY3Rpb24oZSxhKXtpZigxPT1qUXVlcnkoIiNwb3B1cCIpLnZhbCgpKXZhciByPXdpbmRvdy5vcGVuZXI7ZWxzZSB2YXIgcj13aW5kb3cucGFyZW50O3ZhciB0PWpRdWVyeSgiI2NhbGxiYWNrIikudmFsKCksbj1qUXVlcnkoIiNjdXJfZGlyIikudmFsKCk7bj1uLnJlcGxhY2UoIlxcIiwiLyIpO3ZhciBpPWpRdWVyeSgiI3N1YmRpciIpLnZhbCgpO2k9aS5yZXBsYWNlKCJcXCIsIi8iKTt2YXIgbD1qUXVlcnkoIiNiYXNlX3VybCIpLnZhbCgpO2lmKDE9PWpRdWVyeSgiI2Z0cCIpLnZhbCgpKXZhciBvPWVuY29kZVVSTChqUXVlcnkoIiNmdHBfYmFzZV91cmwiKS52YWwoKStqUXVlcnkoIiN1cGxvYWRfZGlyIikudmFsKCkralF1ZXJ5KCIjZmxkcl92YWx1ZSIpLnZhbCgpK2UpO2Vsc2UgdmFyIHU9alF1ZXJ5KCIjcmV0dXJuX3JlbGF0aXZlX3VybCIpLnZhbCgpLG89ZW5jb2RlVVJMKCgxPT11P2k6bCtuKStlKTtpZigiIiE9YSlpZigxPT1qUXVlcnkoIiNjcm9zc2RvbWFpbiIpLnZhbCgpKXIucG9zdE1lc3NhZ2Uoe3NlbmRlcjoicmVzcG9uc2l2ZWZpbGVtYW5hZ2VyIix1cmw6byxmaWVsZF9pZDphfSwiKiIpO2Vsc2V7dmFyIGM9alF1ZXJ5KCIjIithLHIuZG9jdW1lbnQpO2MudmFsKG8pLnRyaWdnZXIoImNoYW5nZSIpLDA9PXQ/ImZ1bmN0aW9uIj09dHlwZW9mIHIucmVzcG9uc2l2ZV9maWxlbWFuYWdlcl9jYWxsYmFjayYmci5yZXNwb25zaXZlX2ZpbGVtYW5hZ2VyX2NhbGxiYWNrKGEpOiJmdW5jdGlvbiI9PXR5cGVvZiByW3RdJiZyW3RdKGEpLFEoKX1lbHNlIGFwcGx5X2FueShvKX0sYXBwbHlfaW1nPWZ1bmN0aW9uKGUsYSl7dmFyIHI7cj0xPT1qUXVlcnkoIiNwb3B1cCIpLnZhbCgpP3dpbmRvdy5vcGVuZXI6d2luZG93LnBhcmVudDt2YXIgdD1qUXVlcnkoIiNjYWxsYmFjayIpLnZhbCgpLG49alF1ZXJ5KCIjY3VyX2RpciIpLnZhbCgpO249bi5yZXBsYWNlKCJcXCIsIi8iKTt2YXIgaT1qUXVlcnkoIiNzdWJkaXIiKS52YWwoKTtpPWkucmVwbGFjZSgiXFwiLCIvIik7dmFyIGw9alF1ZXJ5KCIjYmFzZV91cmwiKS52YWwoKTtpZigxPT1qUXVlcnkoIiNmdHAiKS52YWwoKSl2YXIgbz1lbmNvZGVVUkwoalF1ZXJ5KCIjZnRwX2Jhc2VfdXJsIikudmFsKCkralF1ZXJ5KCIjdXBsb2FkX2RpciIpLnZhbCgpK2pRdWVyeSgiI2ZsZHJfdmFsdWUiKS52YWwoKStlKTtlbHNlIHZhciB1PWpRdWVyeSgiI3JldHVybl9yZWxhdGl2ZV91cmwiKS52YWwoKSxvPWVuY29kZVVSTCgoMT09dT9pOmwrbikrZSk7aWYoIiIhPWEpaWYoMT09alF1ZXJ5KCIjY3Jvc3Nkb21haW4iKS52YWwoKSlyLnBvc3RNZXNzYWdlKHtzZW5kZXI6InJlc3BvbnNpdmVmaWxlbWFuYWdlciIsdXJsOm8sZmllbGRfaWQ6YX0sIioiKTtlbHNle3ZhciBjPWpRdWVyeSgiIyIrYSxyLmRvY3VtZW50KTtjLnZhbChvKS50cmlnZ2VyKCJjaGFuZ2UiKSwwPT10PyJmdW5jdGlvbiI9PXR5cGVvZiByLnJlc3BvbnNpdmVfZmlsZW1hbmFnZXJfY2FsbGJhY2smJnIucmVzcG9uc2l2ZV9maWxlbWFuYWdlcl9jYWxsYmFjayhhKToiZnVuY3Rpb24iPT10eXBlb2Ygclt0XSYmclt0XShhKSxRKCl9ZWxzZSBqUXVlcnkoIiNhZGRfdGltZV90b19pbWciKS52YWwoKSYmKG89bysiPyIrKG5ldyBEYXRlKS5nZXRUaW1lKCkpLGFwcGx5X2FueShvKX0sYXBwbHlfdmlkZW89ZnVuY3Rpb24oZSxhKXt2YXIgcjtyPTE9PWpRdWVyeSgiI3BvcHVwIikudmFsKCk/d2luZG93Lm9wZW5lcjp3aW5kb3cucGFyZW50O3ZhciB0PWpRdWVyeSgiI2NhbGxiYWNrIikudmFsKCksbj1qUXVlcnkoIiNjdXJfZGlyIikudmFsKCk7bj1uLnJlcGxhY2UoIlxcIiwiLyIpO3ZhciBpPWpRdWVyeSgiI3N1YmRpciIpLnZhbCgpO2k9aS5yZXBsYWNlKCJcXCIsIi8iKTt2YXIgbD1qUXVlcnkoIiNiYXNlX3VybCIpLnZhbCgpO2lmKDE9PWpRdWVyeSgiI2Z0cCIpLnZhbCgpKXZhciBvPWVuY29kZVVSTChqUXVlcnkoIiNmdHBfYmFzZV91cmwiKS52YWwoKStqUXVlcnkoIiN1cGxvYWRfZGlyIikudmFsKCkralF1ZXJ5KCIjZmxkcl92YWx1ZSIpLnZhbCgpK2UpO2Vsc2UgdmFyIHU9alF1ZXJ5KCIjcmV0dXJuX3JlbGF0aXZlX3VybCIpLnZhbCgpLG89ZW5jb2RlVVJMKCgxPT11P2k6bCtuKStlKTtpZigiIiE9YSlpZigxPT1qUXVlcnkoIiNjcm9zc2RvbWFpbiIpLnZhbCgpKXIucG9zdE1lc3NhZ2Uoe3NlbmRlcjoicmVzcG9uc2l2ZWZpbGVtYW5hZ2VyIix1cmw6byxmaWVsZF9pZDphfSwiKiIpO2Vsc2V7dmFyIGM9alF1ZXJ5KCIjIithLHIuZG9jdW1lbnQpO2MudmFsKG8pLnRyaWdnZXIoImNoYW5nZSIpLDA9PXQ/ImZ1bmN0aW9uIj09dHlwZW9mIHIucmVzcG9uc2l2ZV9maWxlbWFuYWdlcl9jYWxsYmFjayYmci5yZXNwb25zaXZlX2ZpbGVtYW5hZ2VyX2NhbGxiYWNrKGEpOiJmdW5jdGlvbiI9PXR5cGVvZiByW3RdJiZyW3RdKGEpLFEoKX1lbHNlIGFwcGx5X2FueShvKX0sYXBwbHlfbm9uZT1mdW5jdGlvbihlKXt2YXIgYT1qUXVlcnkoInVsLmdyaWQiKS5maW5kKCdsaVtkYXRhLW5hbWU9IicrZSsnIl0gZmlnY2FwdGlvbiBhJyk7YVsxXS5jbGljaygpLGpRdWVyeSgiLnRpcC1yaWdodCIpLnRvb2x0aXAoImhpZGUiKX0sYXBwbHlfYW55PWZ1bmN0aW9uKGUpe2lmKDE9PWpRdWVyeSgiI2Nyb3NzZG9tYWluIikudmFsKCkpd2luZG93LnBhcmVudC5wb3N0TWVzc2FnZSh7c2VuZGVyOiJyZXNwb25zaXZlZmlsZW1hbmFnZXIiLHVybDplLGZpZWxkX2lkOm51bGx9LCIqIik7ZWxzZXt2YXIgYT1qUXVlcnkoIiNlZGl0b3IiKS52YWwoKTtpZigiY2tlZGl0b3IiPT1hKXt2YXIgcj1tKCJDS0VkaXRvckZ1bmNOdW0iKTt3aW5kb3cub3BlbmVyLkNLRURJVE9SLnRvb2xzLmNhbGxGdW5jdGlvbihyLGUpLHdpbmRvdy5jbG9zZSgpfWVsc2UgcGFyZW50LnRpbnltY2UubWFqb3JWZXJzaW9uPDQ/KHBhcmVudC50aW55bWNlLmFjdGl2ZUVkaXRvci53aW5kb3dNYW5hZ2VyLnBhcmFtcy5zZXRVcmwoZSkscGFyZW50LnRpbnltY2UuYWN0aXZlRWRpdG9yLndpbmRvd01hbmFnZXIuY2xvc2UocGFyZW50LnRpbnltY2UuYWN0aXZlRWRpdG9yLndpbmRvd01hbmFnZXIucGFyYW1zLm1jZV93aW5kb3dfaWQpKToocGFyZW50LnRpbnltY2UuYWN0aXZlRWRpdG9yLndpbmRvd01hbmFnZXIuZ2V0UGFyYW1zKCkuc2V0VXJsKGUpLHBhcmVudC50aW55bWNlLmFjdGl2ZUVkaXRvci53aW5kb3dNYW5hZ2VyLmNsb3NlKCkpfX0sYXBwbHlfZmlsZV9kdXBsaWNhdGU9ZnVuY3Rpb24oZSxhKXt2YXIgcj1lLnBhcmVudCgpLnBhcmVudCgpLnBhcmVudCgpLnBhcmVudCgpO3IuYWZ0ZXIoIjxsaSBjbGFzcz0nIityLmF0dHIoImNsYXNzIikrIicgZGF0YS1uYW1lPSciK3IuYXR0cigiZGF0YS1uYW1lIikrIic+IityLmh0bWwoKSsiPC9saT4iKTt2YXIgdD1yLm5leHQoKTthcHBseV9maWxlX3JlbmFtZSh0LmZpbmQoImZpZ3VyZSIpLGEpO3ZhciBuPXQuZmluZCgiLmRvd25sb2FkLWZvcm0iKSxpPSJmb3JtIisobmV3IERhdGUpLmdldFRpbWUoKTtuLmF0dHIoImlkIixpKSxuLmZpbmQoIi50aXAtcmlnaHQiKS5hdHRyKCJvbmNsaWNrIiwialF1ZXJ5KCcjIitpKyInKS5zdWJtaXQoKTsiKX0sYXBwbHlfZmlsZV9yZW5hbWU9ZnVuY3Rpb24oZSxhKXt2YXIgcjtlLmF0dHIoImRhdGEtbmFtZSIsYSksZS5wYXJlbnQoKS5hdHRyKCJkYXRhLW5hbWUiLGEpLGUuZmluZCgiaDQiKS50ZXh0KGEpO3ZhciB0PWUuZmluZCgiYS5saW5rIik7cj10LmF0dHIoImRhdGEtZmlsZSIpO3ZhciBuPXIuc3Vic3RyaW5nKHIubGFzdEluZGV4T2YoIi8iKSsxKSxpPXIuc3Vic3RyaW5nKHIubGFzdEluZGV4T2YoIi4iKSsxKTt0LmVhY2goZnVuY3Rpb24oKXtqUXVlcnkodGhpcykuYXR0cigiZGF0YS1maWxlIixlbmNvZGVVUklDb21wb25lbnQoYSsiLiIraSkpfSksZS5maW5kKCJpbWciKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9alF1ZXJ5KHRoaXMpLmF0dHIoInNyYyIpO2pRdWVyeSh0aGlzKS5hdHRyKCJzcmMiLGUucmVwbGFjZShuLGErIi4iK2kpKyI/dGltZT0iKyhuZXcgRGF0ZSkuZ2V0VGltZSgpKSwKalF1ZXJ5KHRoaXMpLmF0dHIoImFsdCIsYSsiIHRodW1ibmFpbHMiKX0pO3ZhciBsPWUuZmluZCgiYS5wcmV2aWV3Iik7cj1sLmF0dHIoImRhdGEtdXJsIiksInVuZGVmaW5lZCIhPXR5cGVvZiByJiZyJiZsLmF0dHIoImRhdGEtdXJsIixyLnJlcGxhY2UoZW5jb2RlVVJJQ29tcG9uZW50KG4pLGVuY29kZVVSSUNvbXBvbmVudChhKyIuIitpKSkpLGUucGFyZW50KCkuYXR0cigiZGF0YS1uYW1lIixhKyIuIitpKSxlLmF0dHIoImRhdGEtbmFtZSIsYSsiLiIraSksZS5maW5kKCIubmFtZV9kb3dubG9hZCIpLnZhbChhKyIuIitpKTt2YXIgbz1lLmZpbmQoImEucmVuYW1lLWZpbGUiKSx1PWUuZmluZCgiYS5kZWxldGUtZmlsZSIpLGM9by5hdHRyKCJkYXRhLXBhdGgiKSxkPWMucmVwbGFjZShuLGErIi4iK2kpO28uYXR0cigiZGF0YS1wYXRoIixkKSx1LmF0dHIoImRhdGEtcGF0aCIsZCl9LGFwcGx5X2ZvbGRlcl9yZW5hbWU9ZnVuY3Rpb24oZSxhKXtlLmF0dHIoImRhdGEtbmFtZSIsYSksZS5maW5kKCJmaWd1cmUiKS5hdHRyKCJkYXRhLW5hbWUiLGEpO3ZhciByPWUuZmluZCgiaDQiKS5maW5kKCJhIikudGV4dCgpO2UuZmluZCgiaDQgPiBhIikudGV4dChhKTt2YXIgdD1lLmZpbmQoIi5mb2xkZXItbGluayIpLG49dC5hdHRyKCJocmVmIiksaT1qUXVlcnkoIiNmbGRyX3ZhbHVlIikudmFsKCksbD1uLnJlcGxhY2UoImZsZHI9IitpK2VuY29kZVVSSUNvbXBvbmVudChyKSwiZmxkcj0iK2krZW5jb2RlVVJJQ29tcG9uZW50KGEpKTt0LmVhY2goZnVuY3Rpb24oKXtqUXVlcnkodGhpcykuYXR0cigiaHJlZiIsbCl9KTt2YXIgbz1lLmZpbmQoImEuZGVsZXRlLWZvbGRlciIpLHU9ZS5maW5kKCJhLnJlbmFtZS1mb2xkZXIiKSxjPXUuYXR0cigiZGF0YS1wYXRoIiksZD1jLmxhc3RJbmRleE9mKCIvIikscz1jLnN1YnN0cigwLGQrMSkrYTtvLmF0dHIoImRhdGEtcGF0aCIscyksdS5hdHRyKCJkYXRhLXBhdGgiLHMpfSxzaG93X2FuaW1hdGlvbj1mdW5jdGlvbigpe2pRdWVyeSgiI2xvYWRpbmdfY29udGFpbmVyIikuY3NzKCJkaXNwbGF5IiwiYmxvY2siKSxqUXVlcnkoIiNsb2FkaW5nIikuY3NzKCJvcGFjaXR5IiwiLjciKX0saGlkZV9hbmltYXRpb249ZnVuY3Rpb24oKXtqUXVlcnkoIiNsb2FkaW5nX2NvbnRhaW5lciIpLmZhZGVPdXQoKX19KGpRdWVyeSxNb2Rlcm5penIsaW1hZ2VfZWRpdG9yKSxmdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSxhKXthPWF8fHtidWJibGVzOiExLGNhbmNlbGFibGU6ITEsZGV0YWlsOnZvaWQgMH07dmFyIHI9ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkN1c3RvbUV2ZW50Iik7cmV0dXJuIHIuaW5pdEN1c3RvbUV2ZW50KGUsYS5idWJibGVzLGEuY2FuY2VsYWJsZSxhLmRldGFpbCkscn1yZXR1cm4iZnVuY3Rpb24iIT10eXBlb2Ygd2luZG93LkN1c3RvbUV2ZW50JiYoZS5wcm90b3R5cGU9d2luZG93LkV2ZW50LnByb3RvdHlwZSx2b2lkKHdpbmRvdy5DdXN0b21FdmVudD1lKSl9KCk7]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/include.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[dmFyIGVuY29kZVVSTCxzaG93X2FuaW1hdGlvbixoaWRlX2FuaW1hdGlvbixhcHBseSxhcHBseV9ub25lLGFwcGx5X2ltZyxhcHBseV9hbnksYXBwbHlfdmlkZW8sYXBwbHlfbGluayxhcHBseV9maWxlX3JlbmFtZSxhcHBseV9maWxlX2R1cGxpY2F0ZSxhcHBseV9mb2xkZXJfcmVuYW1lOyFmdW5jdGlvbih5LG4sYSl7InVzZSBzdHJpY3QiO3ZhciB0LGk9bnVsbCxjPTAscj0odD0wLGZ1bmN0aW9uKGUsYSl7Y2xlYXJUaW1lb3V0KHQpLHQ9c2V0VGltZW91dChlLGEpfSksbD1mdW5jdGlvbihlKXtpZigxPT1qUXVlcnkoIiNmdHAiKS52YWwoKSl2YXIgYT1qUXVlcnkoIiNmdHBfYmFzZV91cmwiKS52YWwoKStqUXVlcnkoIiN1cGxvYWRfZGlyIikudmFsKCkralF1ZXJ5KCIjZmxkcl92YWx1ZSIpLnZhbCgpO2Vsc2UgYT1qUXVlcnkoIiNiYXNlX3VybCIpLnZhbCgpK2pRdWVyeSgiI2N1cl9kaXIiKS52YWwoKTt2YXIgdD1lLmZpbmQoImEubGluayIpLmF0dHIoImRhdGEtZmlsZSIpO3JldHVybiIiIT10JiZudWxsIT10JiYoYSs9dCksIiIhPSh0PWUuZmluZCgiaDQgYS5mb2xkZXItbGluayIpLmF0dHIoImRhdGEtZmlsZSIpKSYmbnVsbCE9dCYmKGErPXQpLGF9LHM9e2NvbnRleHRBY3Rpb25zOntjb3B5X3VybDpmdW5jdGlvbihlKXt2YXIgYT1sKGUpO2Jvb3Rib3guYWxlcnQoJ1VSTDo8YnIvPjxkaXYgY2xhc3M9ImlucHV0LWFwcGVuZCIgc3R5bGU9IndpZHRoOjEwMCUiPjxpbnB1dCBpZD0idXJsX3RleHQiIHR5cGU9InRleHQiIHN0eWxlPSJ3aWR0aDo4MCU7IGhlaWdodDozMHB4OyIgdmFsdWU9IicrZW5jb2RlVVJMKGEpKyciIC8+PGJ1dHRvbiBpZD0iY29weS1idXR0b24iIGNsYXNzPSJidG4gYnRuLWludmVyc2UgY29weS1idXR0b24iIHN0eWxlPSJ3aWR0aDoyMCU7IGhlaWdodDozMHB4OyIgZGF0YS1jbGlwYm9hcmQtdGFyZ2V0PSIjdXJsX3RleHQiIHRpdGxlPSJjb3B5Ij48aSBjbGFzcz0iaWNvbiBpY29uLXdoaXRlIGljb24tc2hhcmUiPjwvaT4gJytqUXVlcnkoIiNsYW5nX2NvcHkiKS52YWwoKSsiPC9idXR0b24+PC9kaXY+Iil9LHVuemlwOmZ1bmN0aW9uKGUpe3ZhciBhPWpRdWVyeSgiI3N1Yl9mb2xkZXIiKS52YWwoKStqUXVlcnkoIiNmbGRyX3ZhbHVlIikudmFsKCkrZS5maW5kKCJhLmxpbmsiKS5hdHRyKCJkYXRhLWZpbGUiKTtzaG93X2FuaW1hdGlvbigpLHkuYWpheCh7dHlwZToiUE9TVCIsdXJsOiJhamF4X2NhbGxzLnBocD9hY3Rpb249ZXh0cmFjdCIsZGF0YTp7cGF0aDphfX0pLmRvbmUoZnVuY3Rpb24oZSl7aGlkZV9hbmltYXRpb24oKSwiIiE9ZT9ib290Ym94LmFsZXJ0KGUpOndpbmRvdy5sb2NhdGlvbi5ocmVmPWpRdWVyeSgiI3JlZnJlc2giKS5hdHRyKCJocmVmIikrIiYiKyhuZXcgRGF0ZSkuZ2V0VGltZSgpfSl9LGVkaXRfaW1nOmZ1bmN0aW9uKGUpe3ZhciBhPWUuYXR0cigiZGF0YS1uYW1lIiksdD1lLmF0dHIoImRhdGEtcGF0aCIpO2lmKDE9PWpRdWVyeSgiI2Z0cCIpLnZhbCgpKXZhciByPWpRdWVyeSgiI2Z0cF9iYXNlX3VybCIpLnZhbCgpK2pRdWVyeSgiI3VwbG9hZF9kaXIiKS52YWwoKStqUXVlcnkoIiNmbGRyX3ZhbHVlIikudmFsKCkrYTtlbHNlIHI9alF1ZXJ5KCIjYmFzZV91cmwiKS52YWwoKStqUXVlcnkoIiN1cGxvYWRfZGlyIikudmFsKCkrdDt2YXIgaSxuPWpRdWVyeSgiI3R1aS1pbWFnZS1lZGl0b3IiKTtuLmF0dHIoImRhdGEtbmFtZSIsYSksbi5hdHRyKCJkYXRhLXBhdGgiLHIpLHNob3dfYW5pbWF0aW9uKCksbi5hdHRyKCJpZCIpLGk9cixpbWFnZUVkaXRvci5sb2FkSW1hZ2VGcm9tVVJMKGksIlNhbXBsZUltYWdlIikudGhlbihmdW5jdGlvbihlKXtpbWFnZUVkaXRvci51aS5yZXNpemVFZGl0b3Ioe2ltYWdlU2l6ZTp7b2xkV2lkdGg6ZS5vbGRXaWR0aCxvbGRIZWlnaHQ6ZS5vbGRIZWlnaHQsbmV3V2lkdGg6ZS5uZXdXaWR0aCxuZXdIZWlnaHQ6ZS5uZXdIZWlnaHR9fSl9KS5jYXRjaChmdW5jdGlvbihlKXtib290Ym94LmFsZXJ0KCJTb21ldGhpbmcgd2VudCB3cm9uZzogIitlKX0pLGhpZGVfYW5pbWF0aW9uKCksbi5yZW1vdmVDbGFzcygiaGlkZSIpfSxkdXBsaWNhdGU6ZnVuY3Rpb24oYSl7dmFyIHQ9YS5maW5kKCJoNCIpLnRleHQoKS50cmltKCk7Ym9vdGJveC5wcm9tcHQoalF1ZXJ5KCIjbGFuZ19kdXBsaWNhdGUiKS52YWwoKSxqUXVlcnkoIiNjYW5jZWwiKS52YWwoKSxqUXVlcnkoIiNvayIpLnZhbCgpLGZ1bmN0aW9uKGUpe251bGwhPT1lJiYoZT1RKGUpKSE9dCYmZygiZHVwbGljYXRlX2ZpbGUiLGEuYXR0cigiZGF0YS1wYXRoIiksZSxhLCJhcHBseV9maWxlX2R1cGxpY2F0ZSIpfSx0KyIgLSBjb3B5Iil9LHNlbGVjdDpmdW5jdGlvbihlKXt2YXIgYSx0PWwoZSkscj1qUXVlcnkoIiNmaWVsZF9pZCIpLnZhbCgpOygxPT1qUXVlcnkoIiNyZXR1cm5fcmVsYXRpdmVfdXJsIikudmFsKCkmJih0PSh0PXQucmVwbGFjZShqUXVlcnkoIiNiYXNlX3VybCIpLnZhbCgpLCIiKSkucmVwbGFjZShqUXVlcnkoIiNjdXJfZGlyIikudmFsKCksIiIpKSxhPTE9PWpRdWVyeSgiI3BvcHVwIikudmFsKCk/d2luZG93Lm9wZW5lcjp3aW5kb3cucGFyZW50LCIiIT1yKT8xPT1qUXVlcnkoIiNjcm9zc2RvbWFpbiIpLnZhbCgpP2EucG9zdE1lc3NhZ2Uoe3NlbmRlcjoicmVzcG9uc2l2ZWZpbGVtYW5hZ2VyIix1cmw6dCxmaWVsZF9pZDpyfSwiKiIpOihqUXVlcnkoIiMiK3IsYS5kb2N1bWVudCkudmFsKHQpLnRyaWdnZXIoImNoYW5nZSIpLCJmdW5jdGlvbiI9PXR5cGVvZiBhLnJlc3BvbnNpdmVfZmlsZW1hbmFnZXJfY2FsbGJhY2smJmEucmVzcG9uc2l2ZV9maWxlbWFuYWdlcl9jYWxsYmFjayhyKSxqKCkpOmFwcGx5X2FueSh0KX0sY29weTpmdW5jdGlvbihlKXt1KGUsImNvcHkiKX0sY3V0OmZ1bmN0aW9uKGUpe3UoZSwiY3V0Iil9LHBhc3RlOmZ1bmN0aW9uKCl7ZCgpfSxjaG1vZDpmdW5jdGlvbihlKXshZnVuY3Rpb24oZSl7alF1ZXJ5KCIjZmlsZXNfcGVybWlzc2lvbl9zdGFydCIpLnBhcmVudCgpLnBhcmVudCgpLnJlbW92ZSgpO3ZhciByPWUuZmluZCgiLnJlbmFtZS1maWxlLXBhdGhzIiksaT1lLmNsb3Nlc3QoImZpZ3VyZSIpLmF0dHIoImRhdGEtcGF0aCIpLGE9ci5hdHRyKCJkYXRhLXBlcm1pc3Npb25zIiksbj1yLmF0dHIoImRhdGEtZm9sZGVyIik7eS5hamF4KHt0eXBlOiJQT1NUIix1cmw6ImFqYXhfY2FsbHMucGhwP2FjdGlvbj1jaG1vZCIsZGF0YTp7cGF0aDppLHBlcm1pc3Npb25zOmEsZm9sZGVyOm59fSkuZG9uZShmdW5jdGlvbihlKXtib290Ym94LmRpYWxvZyhlLFt7bGFiZWw6alF1ZXJ5KCIjY2FuY2VsIikudmFsKCksY2xhc3M6ImJ0biJ9LHtsYWJlbDpqUXVlcnkoIiNvayIpLnZhbCgpLGNsYXNzOiJidG4taW52ZXJzZSIsY2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgYT0iLSI7alF1ZXJ5KCIjdV80IikuaXMoIjpjaGVja2VkIik/YSs9InIiOmErPSItIixqUXVlcnkoIiN1XzIiKS5pcygiOmNoZWNrZWQiKT9hKz0idyI6YSs9Ii0iLGpRdWVyeSgiI3VfMSIpLmlzKCI6Y2hlY2tlZCIpP2ErPSJ4IjphKz0iLSIsalF1ZXJ5KCIjZ180IikuaXMoIjpjaGVja2VkIik/YSs9InIiOmErPSItIixqUXVlcnkoIiNnXzIiKS5pcygiOmNoZWNrZWQiKT9hKz0idyI6YSs9Ii0iLGpRdWVyeSgiI2dfMSIpLmlzKCI6Y2hlY2tlZCIpP2ErPSJ4IjphKz0iLSIsalF1ZXJ5KCIjYV80IikuaXMoIjpjaGVja2VkIik/YSs9InIiOmErPSItIixqUXVlcnkoIiNhXzIiKS5pcygiOmNoZWNrZWQiKT9hKz0idyI6YSs9Ii0iLGpRdWVyeSgiI2FfMSIpLmlzKCI6Y2hlY2tlZCIpP2ErPSJ4IjphKz0iLSI7dmFyIGU9alF1ZXJ5KCIjY2htb2RfZm9ybSAjY2htb2RfdmFsdWUiKS52YWwoKTtpZigiIiE9ZSYmdm9pZCAwIT09ZSl7dmFyIHQ9alF1ZXJ5KCIjY2htb2RfZm9ybSBpbnB1dFtuYW1lPWFwcGx5X3JlY3Vyc2l2ZV06Y2hlY2tlZCIpLnZhbCgpOyIiIT10JiZ2b2lkIDAhPT10fHwodD0ibm9uZSIpLHkuYWpheCh7dHlwZToiUE9TVCIsdXJsOiJleGVjdXRlLnBocD9hY3Rpb249Y2htb2QiLGRhdGE6e3BhdGg6aSxuZXdfbW9kZTplLGlzX3JlY3Vyc2l2ZTp0LGZvbGRlcjpufX0pLmRvbmUoZnVuY3Rpb24oZSl7IiIhPWU/Ym9vdGJveC5hbGVydChlKTpyLmF0dHIoImRhdGEtcGVybWlzc2lvbnMiLGEpfSl9fX1dLHtoZWFkZXI6alF1ZXJ5KCIjbGFuZ19maWxlX3Blcm1pc3Npb24iKS52YWwoKX0pLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtvKCExKX0sMTAwKX0pfShlKX0sZWRpdF90ZXh0X2ZpbGU6ZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKGEpe2pRdWVyeSgiI3RleHRmaWxlX2VkaXRfYXJlYSIpLnBhcmVudCgpLnBhcmVudCgpLnJlbW92ZSgpO3ZhciB0PWEuY2xvc2VzdCgiZmlndXJlIikuYXR0cigiZGF0YS1wYXRoIik7eS5hamF4KHt0eXBlOiJQT1NUIix1cmw6ImFqYXhfY2FsbHMucGhwP2FjdGlvbj1nZXRfZmlsZSZzdWJfYWN0aW9uPWVkaXQmcHJldmlld19tb2RlPXRleHQiLGRhdGE6e3BhdGg6dH19KS5kb25lKGZ1bmN0aW9uKGUpe2Jvb3Rib3guZGlhbG9nKGUsW3tsYWJlbDpqUXVlcnkoIiNjYW5jZWwiKS52YWwoKSxjbGFzczoiYnRuIn0se2xhYmVsOmpRdWVyeSgiI29rIikudmFsKCksY2xhc3M6ImJ0bi1pbnZlcnNlIixjYWxsYmFjazpmdW5jdGlvbigpe3ZhciBlPWpRdWVyeSgiI3RleHRmaWxlX2VkaXRfYXJlYSIpLnZhbCgpO3dpbmRvdy5lZGl0b3ImJiJmdW5jdGlvbiI9PXR5cGVvZiB3aW5kb3cuZWRpdG9yLmdldERhdGEmJihlPXdpbmRvdy5lZGl0b3IuZ2V0RGF0YSgpKSx5LmFqYXgoe3R5cGU6IlBPU1QiLHVybDoiZXhlY3V0ZS5waHA/YWN0aW9uPXNhdmVfdGV4dF9maWxlIixkYXRhOntwYXRoOnQsbmV3X2NvbnRlbnQ6ZX19KS5kb25lKGZ1bmN0aW9uKGUpeyIiIT1lJiZib290Ym94LmFsZXJ0KGUpfSl9fV0se2hlYWRlcjphLmZpbmQoIi5uYW1lX2Rvd25sb2FkIikudmFsKCl9KX0pfShlKX19LG1ha2VDb250ZXh0TWVudTpmdW5jdGlvbigpe3ZhciByPXRoaXM7eS5jb250ZXh0TWVudSh7c2VsZWN0b3I6ImZpZ3VyZTpub3QoLmJhY2stZGlyZWN0b3J5KSwgLmxpc3QtdmlldzIgZmlndXJlOm5vdCguYmFjay1kaXJlY3RvcnkpIixhdXRvSGlkZTohMCxidWlsZDpmdW5jdGlvbih0KXt0LmFkZENsYXNzKCJzZWxlY3RlZCIpO3ZhciBlPXtjYWxsYmFjazpmdW5jdGlvbihlLGEpe3IuY29udGV4dEFjdGlvbnNbZV0odCl9LGl0ZW1zOnt9fTtyZXR1cm4odC5maW5kKCIuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZSIpLmhhc0NsYXNzKCJwbmciKXx8dC5maW5kKCIuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZSIpLmhhc0NsYXNzKCJqcGciKXx8dC5maW5kKCIuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZSIpLmhhc0NsYXNzKCJqcGVnIikpJiZhJiYoZS5pdGVtcy5lZGl0X2ltZz17bmFtZTpqUXVlcnkoIiNsYW5nX2VkaXRfaW1hZ2UiKS52YWwoKSxpY29uOiJlZGl0X2ltZyIsZGlzYWJsZWQ6ITF9KSx0Lmhhc0NsYXNzKCJkaXJlY3RvcnkiKSYmMCE9alF1ZXJ5KCIjdHlwZV9wYXJhbSIpLnZhbCgpJiYoZS5pdGVtcy5zZWxlY3Q9e25hbWU6alF1ZXJ5KCIjbGFuZ19zZWxlY3QiKS52YWwoKSxpY29uOiIiLGRpc2FibGVkOiExfSksZS5pdGVtcy5jb3B5X3VybD17bmFtZTpqUXVlcnkoIiNsYW5nX3Nob3dfdXJsIikudmFsKCksaWNvbjoidXJsIixkaXNhYmxlZDohMX0sKHQuZmluZCgiLmltZy1wcmVjb250YWluZXItbWluaSAuZmlsZXR5cGUiKS5oYXNDbGFzcygiemlwIil8fHQuZmluZCgiLmltZy1wcmVjb250YWluZXItbWluaSAuZmlsZXR5cGUiKS5oYXNDbGFzcygidGFyIil8fHQuZmluZCgiLmltZy1wcmVjb250YWluZXItbWluaSAuZmlsZXR5cGUiKS5oYXNDbGFzcygiZ3oiKSkmJjE9PWpRdWVyeSgiI2V4dHJhY3RfZmlsZXMiKS52YWwoKSYmKGUuaXRlbXMudW56aXA9e25hbWU6alF1ZXJ5KCIjbGFuZ19leHRyYWN0IikudmFsKCksaWNvbjoiZXh0cmFjdCIsZGlzYWJsZWQ6ITF9KSx0LmZpbmQoIi5pbWctcHJlY29udGFpbmVyLW1pbmkgLmZpbGV0eXBlIikuaGFzQ2xhc3MoImVkaXQtdGV4dC1maWxlLWFsbG93ZWQiKSYmKGUuaXRlbXMuZWRpdF90ZXh0X2ZpbGU9e25hbWU6alF1ZXJ5KCIjbGFuZ19lZGl0X2ZpbGUiKS52YWwoKSxpY29uOiJlZGl0IixkaXNhYmxlZDohMX0pLHQuaGFzQ2xhc3MoImRpcmVjdG9yeSIpfHwxIT1qUXVlcnkoIiNkdXBsaWNhdGUiKS52YWwoKXx8KGUuaXRlbXMuZHVwbGljYXRlPXtuYW1lOmpRdWVyeSgiI2xhbmdfZHVwbGljYXRlIikudmFsKCksaWNvbjoiZHVwbGljYXRlIixkaXNhYmxlZDohMX0pLHQuaGFzQ2xhc3MoImRpcmVjdG9yeSIpfHwxIT1qUXVlcnkoIiNjb3B5X2N1dF9maWxlc19hbGxvd2VkIikudmFsKCk/dC5oYXNDbGFzcygiZGlyZWN0b3J5IikmJjE9PWpRdWVyeSgiI2NvcHlfY3V0X2RpcnNfYWxsb3dlZCIpLnZhbCgpJiYoZS5pdGVtcy5jb3B5PXtuYW1lOmpRdWVyeSgiI2xhbmdfY29weSIpLnZhbCgpLGljb246ImNvcHkiLGRpc2FibGVkOiExfSxlLml0ZW1zLmN1dD17bmFtZTpqUXVlcnkoIiNsYW5nX2N1dCIpLnZhbCgpLGljb246ImN1dCIsZGlzYWJsZWQ6ITF9KTooZS5pdGVtcy5jb3B5PXtuYW1lOmpRdWVyeSgiI2xhbmdfY29weSIpLnZhbCgpLGljb246ImNvcHkiLGRpc2FibGVkOiExfSxlLml0ZW1zLmN1dD17bmFtZTpqUXVlcnkoIiNsYW5nX2N1dCIpLnZhbCgpLGljb246ImN1dCIsZGlzYWJsZWQ6ITF9KSwwPT1qUXVlcnkoIiNjbGlwYm9hcmQiKS52YWwoKXx8dC5oYXNDbGFzcygiZGlyZWN0b3J5Iil8fChlLml0ZW1zLnBhc3RlPXtuYW1lOmpRdWVyeSgiI2xhbmdfcGFzdGVfaGVyZSIpLnZhbCgpLGljb246ImNsaXBib2FyZC1hcHBseSIsZGlzYWJsZWQ6ITF9KSx0Lmhhc0NsYXNzKCJkaXJlY3RvcnkiKXx8MSE9alF1ZXJ5KCIjY2htb2RfZmlsZXNfYWxsb3dlZCIpLnZhbCgpP3QuaGFzQ2xhc3MoImRpcmVjdG9yeSIpJiYxPT1qUXVlcnkoIiNjaG1vZF9kaXJzX2FsbG93ZWQiKS52YWwoKSYmKGUuaXRlbXMuY2htb2Q9e25hbWU6alF1ZXJ5KCIjbGFuZ19maWxlX3Blcm1pc3Npb24iKS52YWwoKSxpY29uOiJrZXkiLGRpc2FibGVkOiExfSk6ZS5pdGVtcy5jaG1vZD17bmFtZTpqUXVlcnkoIiNsYW5nX2ZpbGVfcGVybWlzc2lvbiIpLnZhbCgpLGljb246ImtleSIsZGlzYWJsZWQ6ITF9LGUuaXRlbXMuc2VwPSItLS0tIixlLml0ZW1zLmluZm89e3R5cGU6Imh0bWwiLGh0bWw6IjxzdHJvbmc+IitqUXVlcnkoIiNsYW5nX2ZpbGVfaW5mbyIpLnZhbCgpKyI8L3N0cm9uZz4ifSxlLml0ZW1zLm5hbWU9e25hbWU6dC5hdHRyKCJkYXRhLW5hbWUiKSxpY29uOiJsYWJlbCIsZGlzYWJsZWQ6ITB9LCJpbWciPT10LmF0dHIoImRhdGEtdHlwZSIpJiYoZS5pdGVtcy5kaW1lbnNpb249e25hbWU6dC5maW5kKCIuaW1nLWRpbWVuc2lvbiIpLmh0bWwoKSxpY29uOiJkaW1lbnNpb24iLGRpc2FibGVkOiEwfSksInRydWUiIT09alF1ZXJ5KCIjc2hvd19mb2xkZXJfc2l6ZSIpLnZhbCgpJiYidHJ1ZSIhPT1qUXVlcnkoIiNzaG93X2ZvbGRlcl9zaXplIikudmFsKCl8fCh0Lmhhc0NsYXNzKCJkaXJlY3RvcnkiKT9lLml0ZW1zLnNpemU9e25hbWU6dC5maW5kKCIuZmlsZS1zaXplIikuaHRtbCgpKyIgLSAiK3QuZmluZCgiLm5maWxlcyIpLnZhbCgpKyIgIitqUXVlcnkoIiNsYW5nX2ZpbGVzIikudmFsKCkrIiAtICIrdC5maW5kKCIubmZvbGRlcnMiKS52YWwoKSsiICIralF1ZXJ5KCIjbGFuZ19mb2xkZXJzIikudmFsKCksaWNvbjoic2l6ZSIsZGlzYWJsZWQ6ITB9OmUuaXRlbXMuc2l6ZT17bmFtZTp0LmZpbmQoIi5maWxlLXNpemUiKS5odG1sKCksaWNvbjoic2l6ZSIsZGlzYWJsZWQ6ITB9KSxlLml0ZW1zLmRhdGU9e25hbWU6dC5maW5kKCIuZmlsZS1kYXRlIikuaHRtbCgpLGljb246ImRhdGUiLGRpc2FibGVkOiEwfSxlfSxldmVudHM6e2hpZGU6ZnVuY3Rpb24oKXtqUXVlcnkoImZpZ3VyZSIpLnJlbW92ZUNsYXNzKCJzZWxlY3RlZCIpfX19KSxqUXVlcnkoZG9jdW1lbnQpLm9uKCJjb250ZXh0bWVudSIsZnVuY3Rpb24oZSl7aWYoIWpRdWVyeShlLnRhcmdldCkuaXMoImZpZ3VyZSIpKXJldHVybiExfSl9LHVwZGF0ZU11bHRpcGxlU2VsZWN0aW9uQnV0dG9uczpmdW5jdGlvbigpezA8Yz9qUXVlcnkoIiNtdWx0aXBsZS1zZWxlY3Rpb24iKS5zaG93KDMwMCk6alF1ZXJ5KCIjbXVsdGlwbGUtc2VsZWN0aW9uIikuaGlkZSgzMDApfSxiaW5kR3JpZEV2ZW50czpmdW5jdGlvbigpe3ZhciBlPWpRdWVyeSgidWwuZ3JpZCIpO2Z1bmN0aW9uIHIoZSl7dmFyIGE9ZS5hdHRyKCJkYXRhLWZ1bmN0aW9uIik7ImFwcGx5X211bHRpcGxlIj09YT8oZS5maW5kKCIuc2VsZWN0aW9uOnZpc2libGUiKS50cmlnZ2VyKCJjbGljayIpLGUuZmluZCgiLnNlbGVjdG9yOnZpc2libGUiKS50cmlnZ2VyKCJjbGljayIpKTp3aW5kb3dbYV0oZS5hdHRyKCJkYXRhLWZpbGUiKSxqUXVlcnkoIiNmaWVsZF9pZCIpLnZhbCgpLGUpfWUub24oImNsaWNrIiwiLm1vZGFsQVYiLGZ1bmN0aW9uKGUpe3ZhciBhPWpRdWVyeSh0aGlzKTtlLnByZXZlbnREZWZhdWx0KCk7dmFyIHQ9alF1ZXJ5KCIjcHJldmlld0FWIikscj1qUXVlcnkoIi5ib2R5LXByZXZpZXciKTt0LnJlbW92ZURhdGEoIm1vZGFsIiksdC5tb2RhbCh7YmFja2Ryb3A6InN0YXRpYyIsa2V5Ym9hcmQ6ITF9KSxhLmhhc0NsYXNzKCJhdWRpbyIpP3IuY3NzKCJoZWlnaHQiLCI4MHB4Iik6ci5jc3MoImhlaWdodCIsIjM0NXB4IikseS5hamF4KHt1cmw6YS5hdHRyKCJkYXRhLXVybCIpLHN1Y2Nlc3M6ZnVuY3Rpb24oZSl7ci5odG1sKGUpfX0pfSksZS5vbigiY2xpY2siLCIuZmlsZS1wcmV2aWV3LWJ0biIsZnVuY3Rpb24oZSl7dmFyIGE9alF1ZXJ5KHRoaXMpO2UucHJldmVudERlZmF1bHQoKSx5LmFqYXgoe3VybDphLmF0dHIoImRhdGEtdXJsIiksc3VjY2VzczpmdW5jdGlvbihlKXtib290Ym94Lm1vZGFsKGUsIiAiK2EucGFyZW50KCkucGFyZW50KCkucGFyZW50KCkuZmluZCgiLm5hbWUiKS52YWwoKSl9fSl9KSxlLm9uKCJjbGljayIsIi5wcmV2aWV3IixmdW5jdGlvbigpe3ZhciBlPWpRdWVyeSh0aGlzKTtyZXR1cm4gMD09ZS5oYXNDbGFzcygiZGlzYWJsZWQiKSYmalF1ZXJ5KCIjZnVsbC1pbWciKS5hdHRyKCJzcmMiLGRlY29kZVVSSUNvbXBvbmVudChlLmF0dHIoImRhdGEtdXJsIikpKSwhMH0pLGUub24oImNsaWNrIiwiLnJlbmFtZS1maWxlIixmdW5jdGlvbigpe3ZhciBhPWpRdWVyeSh0aGlzKS5jbG9zZXN0KCJmaWd1cmUiKSx0PWEuYXR0cigiZGF0YS1wYXRoIiksZT1hLmZpbmQoImg0Iikscj15LnRyaW0oZS50ZXh0KCkpO2Jvb3Rib3gucHJvbXB0KGpRdWVyeSgiI3JlbmFtZSIpLnZhbCgpLGpRdWVyeSgiI2NhbmNlbCIpLnZhbCgpLGpRdWVyeSgiI29rIikudmFsKCksZnVuY3Rpb24oZSl7bnVsbCE9PWUmJihlPVEoZSkpIT1yJiZnKCJyZW5hbWVfZmlsZSIsdCxlLGEsImFwcGx5X2ZpbGVfcmVuYW1lIil9LHIpfSksZS5vbigiY2xpY2siLCIucmVuYW1lLWZvbGRlciIsZnVuY3Rpb24oKXt2YXIgYT1qUXVlcnkodGhpcykuY2xvc2VzdCgiZmlndXJlIiksdD1hLmF0dHIoImRhdGEtcGF0aCIpLGU9YS5maW5kKCJoNCIpLHI9eS50cmltKGUudGV4dCgpKTtib290Ym94LnByb21wdChqUXVlcnkoIiNyZW5hbWUiKS52YWwoKSxqUXVlcnkoIiNjYW5jZWwiKS52YWwoKSxqUXVlcnkoIiNvayIpLnZhbCgpLGZ1bmN0aW9uKGUpe251bGwhPT1lJiYoZT1RKGUpLnJlcGxhY2UoIi4iLCIiKSkhPXImJmcoInJlbmFtZV9mb2xkZXIiLHQsZSxhLCJhcHBseV9mb2xkZXJfcmVuYW1lIil9LHIpfSksZS5vbigiY2xpY2siLCIuZGVsZXRlLWZpbGUiLGZ1bmN0aW9uKCl7dmFyIHQ9alF1ZXJ5KHRoaXMpLHI9dC5jbG9zZXN0KCJmaWd1cmUiKS5hdHRyKCJkYXRhLXBhdGgiKTtib290Ym94LmNvbmZpcm0odC5hdHRyKCJkYXRhLWNvbmZpcm0iKSxqUXVlcnkoIiNjYW5jZWwiKS52YWwoKSxqUXVlcnkoIiNvayIpLnZhbCgpLGZ1bmN0aW9uKGUpe2lmKDE9PWUpe2coImRlbGV0ZV9maWxlIixyLCIiLCIiLCIiKTt2YXIgYT1qUXVlcnkoIiNmaWxlc19udW1iZXIiKTthLnRleHQocGFyc2VJbnQoYS50ZXh0KCkpLTEpLHQucGFyZW50KCkucGFyZW50KCkucGFyZW50KCkucGFyZW50KCkucmVtb3ZlKCl9fSl9KSxlLm9uKCJjbGljayIsIi5kZWxldGUtZm9sZGVyIixmdW5jdGlvbigpe3ZhciB0PWpRdWVyeSh0aGlzKSxyPXQuY2xvc2VzdCgiZmlndXJlIikuYXR0cigiZGF0YS1wYXRoIik7Ym9vdGJveC5jb25maXJtKHQuYXR0cigiZGF0YS1jb25maXJtIiksalF1ZXJ5KCIjY2FuY2VsIikudmFsKCksalF1ZXJ5KCIjb2siKS52YWwoKSxmdW5jdGlvbihlKXtpZigxPT1lKXtnKCJkZWxldGVfZm9sZGVyIixyLCIiLCIiLCIiKTt2YXIgYT1qUXVlcnkoIiNmb2xkZXJzX251bWJlciIpO2EudGV4dChwYXJzZUludChhLnRleHQoKSktMSksdC5wYXJlbnQoKS5wYXJlbnQoKS5wYXJlbnQoKS5yZW1vdmUoKX19KX0pLGpRdWVyeSgidWwuZ3JpZCIpLm9uKCJjbGljayIsIi5saW5rIixmdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbigpLHIoalF1ZXJ5KHRoaXMpKX0pLGpRdWVyeSgidWwuZ3JpZCIpLm9uKCJjbGljayIsImRpdi5ib3giLGZ1bmN0aW9uKGUpe3ZhciBhPWpRdWVyeSh0aGlzKS5maW5kKCIubGluayIpO2lmKDAhPT1hLmxlbmd0aClyKGEpO2Vsc2V7dmFyIHQ9alF1ZXJ5KHRoaXMpLmZpbmQoIi5mb2xkZXItbGluayIpOzAhPT10Lmxlbmd0aCYmKGRvY3VtZW50LmxvY2F0aW9uPWpRdWVyeSh0KS5wcm9wKCJocmVmIikpfX0pfSxtYWtlRmlsdGVyczpmdW5jdGlvbihlKXtqUXVlcnkoIiNmaWx0ZXItaW5wdXQiKS5vbigia2V5dXAiLGZ1bmN0aW9uKCl7Yz0wLHkoIi5zZWxlY3Rpb246Y2hlY2tib3giKS5yZW1vdmVBdHRyKCJjaGVja2VkIikscy51cGRhdGVNdWx0aXBsZVNlbGVjdGlvbkJ1dHRvbnMoKSxqUXVlcnkoIi5maWx0ZXJzIGxhYmVsIikucmVtb3ZlQ2xhc3MoImJ0bi1pbnZlcnNlIiksalF1ZXJ5KCIuZmlsdGVycyBsYWJlbCIpLmZpbmQoImkiKS5yZW1vdmVDbGFzcygiaWNvbi13aGl0ZSIpLGpRdWVyeSgiI2ZmLWl0ZW0tdHlwZS1hbGwiKS5hZGRDbGFzcygiYnRuLWludmVyc2UiKSxqUXVlcnkoIiNmZi1pdGVtLXR5cGUtYWxsIikuZmluZCgiaSIpLmFkZENsYXNzKCJpY29uLXdoaXRlIik7dmFyIGE9UShqUXVlcnkodGhpcykudmFsKCkpLnRvTG93ZXJDYXNlKCk7alF1ZXJ5KHRoaXMpLnZhbChhKSxlJiZyKGZ1bmN0aW9uKCl7alF1ZXJ5KCJsaSIsInVsLmdyaWQgIikuZWFjaChmdW5jdGlvbigpe3ZhciBlPWpRdWVyeSh0aGlzKTsiIiE9YSYmLTE9PWUuYXR0cigiZGF0YS1uYW1lIikudG9Mb3dlckNhc2UoKS5pbmRleE9mKGEpP2UuaGlkZSgxMDApOmUuc2hvdygxMDApfSkseS5hamF4KHt1cmw6ImFqYXhfY2FsbHMucGhwP2FjdGlvbj1maWx0ZXImdHlwZT0iK2F9KS5kb25lKGZ1bmN0aW9uKGUpeyIiIT1lJiZib290Ym94LmFsZXJ0KGUpfSkscihmdW5jdGlvbigpe18oMCE9alF1ZXJ5KCIjZGVzY2VuZGluZyIpLnZhbCgpLCIuIitqUXVlcnkoIiNzb3J0X2J5IikudmFsKCkpLGIoKX0sNTAwKX0sMzAwKX0pLmtleXByZXNzKGZ1bmN0aW9uKGUpezEzPT1lLndoaWNoJiZqUXVlcnkoIiNmaWx0ZXIiKS50cmlnZ2VyKCJjbGljayIpfSksalF1ZXJ5KCIjZmlsdGVyIikub24oImNsaWNrIixmdW5jdGlvbigpe3ZhciBlPVEoalF1ZXJ5KCIjZmlsdGVyLWlucHV0IikudmFsKCkpLGE9alF1ZXJ5KCIjY3VycmVudF91cmwiKS52YWwoKTswPD1hLmluZGV4T2YoIj8iKT9hKz0iJiI6YSs9Ij8iLHdpbmRvdy5sb2NhdGlvbi5ocmVmPWErImZpbHRlcj0iK2V9KX0sbWFrZVVwbG9hZGVyOmZ1bmN0aW9uKCl7alF1ZXJ5KCIjZmlsZXVwbG9hZCIpLmZpbGV1cGxvYWQoe3VybDoidXBsb2FkLnBocCIsbWF4Q2h1bmtTaXplOjIwOTcxNTJ9KSxqUXVlcnkoIiNmaWxldXBsb2FkIikuYmluZCgiZmlsZXVwbG9hZGRyb3AiLGZ1bmN0aW9uKGUsYSl7alF1ZXJ5KCIudXBsb2FkZXIiKS5zaG93KDIwMCksc2V0VGltZW91dChmdW5jdGlvbigpe2pRdWVyeSgiI2ZpbGV1cGxvYWQgPiBkaXYgPiBkaXYuZmlsZXVwbG9hZC1idXR0b25iYXIgPiBkaXYudGV4dC1jZW50ZXIgPiBidXR0b24iKS5jbGljaygpfSwyMDApfSksalF1ZXJ5KCIjZmlsZXVwbG9hZCIpLmJpbmQoImZpbGV1cGxvYWRzdWJtaXQiLGZ1bmN0aW9uKGUsYSl7YS5mb3JtRGF0YT17ZmxkcjpqUXVlcnkoIiNzdWJfZm9sZGVyIikudmFsKCkralF1ZXJ5KCIjZmxkcl92YWx1ZSIpLnZhbCgpKyhhLmZpbGVzWzBdLnJlbGF0aXZlUGF0aHx8YS5maWxlc1swXS53ZWJraXRSZWxhdGl2ZVBhdGh8fCIiKX19KSxqUXVlcnkoIiNmaWxldXBsb2FkIikuYWRkQ2xhc3MoImZpbGV1cGxvYWQtcHJvY2Vzc2luZyIpLHkuYWpheCh7dXJsOmpRdWVyeSgiI2ZpbGV1cGxvYWQiKS5maWxldXBsb2FkKCJvcHRpb24iLCJ1cmwiKSxkYXRhVHlwZToianNvbiIsY29udGV4dDpqUXVlcnkoIiNmaWxldXBsb2FkIilbMF19KS5hbHdheXMoZnVuY3Rpb24oKXtqUXVlcnkodGhpcykucmVtb3ZlQ2xhc3MoImZpbGV1cGxvYWQtcHJvY2Vzc2luZyIpfSksalF1ZXJ5KCIudXBsb2FkLWJ0biIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtqUXVlcnkoIi51cGxvYWRlciIpLnNob3coMjAwKX0pLGpRdWVyeSgiLmNsb3NlLXVwbG9hZGVyIikub24oImNsaWNrIixmdW5jdGlvbigpe2pRdWVyeSgiLnVwbG9hZGVyIikuaGlkZSgyMDApLHNldFRpbWVvdXQoZnVuY3Rpb24oKXt3aW5kb3cubG9jYXRpb24uaHJlZj1qUXVlcnkoIiNyZWZyZXNoIikuYXR0cigiaHJlZiIpKyImIisobmV3IERhdGUpLmdldFRpbWUoKX0sNDIwKX0pfSx1cGxvYWRVUkw6ZnVuY3Rpb24oKXtqUXVlcnkoIiN1cGxvYWRVUkwiKS5vbigiY2xpY2siLGZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKTt2YXIgYT1qUXVlcnkoIiN1cmwiKS52YWwoKSx0PWpRdWVyeSgiI2ZsZHJfdmFsdWUiKS52YWwoKTtzaG93X2FuaW1hdGlvbigpLHkuYWpheCh7dHlwZToiUE9TVCIsdXJsOiJ1cGxvYWQucGhwIixkYXRhOntmbGRyOnQsdXJsOmF9fSkuZG9uZShmdW5jdGlvbihlKXtoaWRlX2FuaW1hdGlvbigpLGpRdWVyeSgiI3VybCIpLnZhbCgiIil9KS5mYWlsKGZ1bmN0aW9uKGUpe2Jvb3Rib3guYWxlcnQoalF1ZXJ5KCIjbGFuZ19lcnJvcl91cGxvYWQiKS52YWwoKSksaGlkZV9hbmltYXRpb24oKSxqUXVlcnkoIiN1cmwiKS52YWwoIiIpfSl9KX0sbWFrZVNvcnQ6ZnVuY3Rpb24ocil7alF1ZXJ5KCJpbnB1dFtuYW1lPXJhZGlvLXNvcnRdIikub24oImNsaWNrIixmdW5jdGlvbigpe3ZhciBlPWpRdWVyeSh0aGlzKS5hdHRyKCJkYXRhLWl0ZW0iKSxhPWpRdWVyeSgiIyIrZSksdD1qUXVlcnkoIi5maWx0ZXJzIGxhYmVsIik7Yz0wLHkoIi5zZWxlY3Rpb246Y2hlY2tib3giKS5yZW1vdmVBdHRyKCJjaGVja2VkIikscy51cGRhdGVNdWx0aXBsZVNlbGVjdGlvbkJ1dHRvbnMoKSx0LnJlbW92ZUNsYXNzKCJidG4taW52ZXJzZSIpLHQuZmluZCgiaSIpLnJlbW92ZUNsYXNzKCJpY29uLXdoaXRlIiksalF1ZXJ5KCIjZmlsdGVyLWlucHV0IikudmFsKCIiKSxhLmFkZENsYXNzKCJidG4taW52ZXJzZSIpLGEuZmluZCgiaSIpLmFkZENsYXNzKCJpY29uLXdoaXRlIiksImZmLWl0ZW0tdHlwZS1hbGwiPT1lPyhyP2pRdWVyeSgiLmdyaWQgbGkiKS5zaG93KDMwMCk6d2luZG93LmxvY2F0aW9uLmhyZWY9alF1ZXJ5KCIjY3VycmVudF91cmwiKS52YWwoKSsiJnNvcnRfYnk9IitqUXVlcnkoIiNzb3J0X2J5IikudmFsKCkrIiZkZXNjZW5kaW5nPSIrKGk/MTowKSwidW5kZWZpbmVkIiE9dHlwZW9mIFN0b3JhZ2UmJmxvY2FsU3RvcmFnZS5zZXRJdGVtKCJzb3J0IiwiIikpOmpRdWVyeSh0aGlzKS5pcygiOmNoZWNrZWQiKSYmKGpRdWVyeSgiLmdyaWQgbGkiKS5ub3QoIi4iK2UpLmhpZGUoMzAwKSxqUXVlcnkoIi5ncmlkIGxpLiIrZSkuc2hvdygzMDApLCJ1bmRlZmluZWQiIT10eXBlb2YgU3RvcmFnZSYmbG9jYWxTdG9yYWdlLnNldEl0ZW0oInNvcnQiLGUpKSxiKCl9KTt2YXIgaT1qUXVlcnkoIiNkZXNjZW5kaW5nIikudmFsKCk7alF1ZXJ5KCIuc29ydGVyIikub24oImNsaWNrIixmdW5jdGlvbigpe3ZhciBlPWpRdWVyeSh0aGlzKTtpPWpRdWVyeSgiI3NvcnRfYnkiKS52YWwoKSE9PWUuYXR0cigiZGF0YS1zb3J0Iil8fDA9PWkscj8oeS5hamF4KHt1cmw6ImFqYXhfY2FsbHMucGhwP2FjdGlvbj1zb3J0JnNvcnRfYnk9IitlLmF0dHIoImRhdGEtc29ydCIpKyImZGVzY2VuZGluZz0iKyhpPzE6MCl9KSxfKGksIi4iK2UuYXR0cigiZGF0YS1zb3J0IikpLGpRdWVyeSgiIGEuc29ydGVyIikucmVtb3ZlQ2xhc3MoImRlc2NlbmRpbmciKS5yZW1vdmVDbGFzcygiYXNjZW5kaW5nIiksaT9qUXVlcnkoIi5zb3J0LSIrZS5hdHRyKCJkYXRhLXNvcnQiKSkuYWRkQ2xhc3MoImRlc2NlbmRpbmciKTpqUXVlcnkoIi5zb3J0LSIrZS5hdHRyKCJkYXRhLXNvcnQiKSkuYWRkQ2xhc3MoImFzY2VuZGluZyIpLGpRdWVyeSgiI3NvcnRfYnkiKS52YWwoZS5hdHRyKCJkYXRhLXNvcnQiKSksalF1ZXJ5KCIjZGVzY2VuZGluZyIpLnZhbChpPzE6MCksYigpKTp3aW5kb3cubG9jYXRpb24uaHJlZj1qUXVlcnkoIiNjdXJyZW50X3VybCIpLnZhbCgpKyImc29ydF9ieT0iK2UuYXR0cigiZGF0YS1zb3J0IikrIiZkZXNjZW5kaW5nPSIrKGk/MTowKX0pfX07ZnVuY3Rpb24gbyhlKXt2YXIgbj1bXTtpZihuLnVzZXI9MCxuLmdyb3VwPTAsdm9pZChuLmFsbD0wKSE9PWUmJjE9PWUpe3ZhciBhPWpRdWVyeSgiI2NobW9kX2Zvcm0gI2NobW9kX3ZhbHVlIikudmFsKCk7bi51c2VyPWEuc3Vic3RyKDAsMSksbi5ncm91cD1hLnN1YnN0cigxLDEpLG4uYWxsPWEuc3Vic3RyKDIsMSkseS5lYWNoKG4sZnVuY3Rpb24oZSl7KCIiPT1uW2VdfHwwPT15LmlzTnVtZXJpYyhuW2VdKXx8cGFyc2VJbnQobltlXSk8MHx8NzxwYXJzZUludChuW2VdKSkmJihuW2VdPSIwIil9KSxqUXVlcnkoIiNjaG1vZF9mb3JtIGlucHV0OmNoZWNrYm94IikuZWFjaChmdW5jdGlvbigpe3ZhciBlLGEsdCxyPWpRdWVyeSh0aGlzKS5hdHRyKCJkYXRhLWdyb3VwIiksaT1qUXVlcnkodGhpcykuYXR0cigiZGF0YS12YWx1ZSIpO2U9bltyXSxhPWksKHQ9W10pWzFdPVsxLDMsNSw3XSx0WzJdPVsyLDMsNiw3XSx0WzRdPVs0LDUsNiw3XSxlPXBhcnNlSW50KGUpLGE9cGFyc2VJbnQoYSksLTEhPXkuaW5BcnJheShlLHRbYV0pP2pRdWVyeSh0aGlzKS5wcm9wKCJjaGVja2VkIiwhMCk6alF1ZXJ5KHRoaXMpLnByb3AoImNoZWNrZWQiLCExKX0pfWVsc2UgalF1ZXJ5KCIjY2htb2RfZm9ybSBpbnB1dDpjaGVja2JveDpjaGVja2VkIikuZWFjaChmdW5jdGlvbigpe3ZhciBlPWpRdWVyeSh0aGlzKS5hdHRyKCJkYXRhLWdyb3VwIiksYT1qUXVlcnkodGhpcykuYXR0cigiZGF0YS12YWx1ZSIpO25bZV09cGFyc2VJbnQobltlXSkrcGFyc2VJbnQoYSl9KSxqUXVlcnkoIiNjaG1vZF9mb3JtICNjaG1vZF92YWx1ZSIpLnZhbChuLnVzZXIudG9TdHJpbmcoKStuLmdyb3VwLnRvU3RyaW5nKCkrbi5hbGwudG9TdHJpbmcoKSl9ZnVuY3Rpb24gdShlLGEpe3ZhciB0OyJjb3B5IiE9YSYmImN1dCIhPWF8fCh0PWUuY2xvc2VzdCgiZmlndXJlIikuYXR0cigiZGF0YS1wYXRoIikseS5hamF4KHt0eXBlOiJQT1NUIix1cmw6ImFqYXhfY2FsbHMucGhwP2FjdGlvbj1jb3B5X2N1dCIsZGF0YTp7cGF0aDp0LHN1Yl9hY3Rpb246YX19KS5kb25lKGZ1bmN0aW9uKGUpeyIiIT1lP2Jvb3Rib3guYWxlcnQoZSk6KGpRdWVyeSgiI2NsaXBib2FyZCIpLnZhbCgiMSIpLGYoITApKX0pKX1mdW5jdGlvbiBkKHQpe2Jvb3Rib3guY29uZmlybShqUXVlcnkoIiNsYW5nX3Bhc3RlX2NvbmZpcm0iKS52YWwoKSxqUXVlcnkoIiNjYW5jZWwiKS52YWwoKSxqUXVlcnkoIiNvayIpLnZhbCgpLGZ1bmN0aW9uKGUpe3ZhciBhOzE9PWUmJihhPXZvaWQgMCE9PXQ/dC5jbG9zZXN0KCJmaWd1cmUiKS5hdHRyKCJkYXRhLXBhdGgiKTpqUXVlcnkoIiNzdWJfZm9sZGVyIikudmFsKCkralF1ZXJ5KCIjZmxkcl92YWx1ZSIpLnZhbCgpLHkuYWpheCh7dHlwZToiUE9TVCIsdXJsOiJleGVjdXRlLnBocD9hY3Rpb249cGFzdGVfY2xpcGJvYXJkIixkYXRhOntwYXRoOmF9fSkuZG9uZShmdW5jdGlvbihlKXsiIiE9ZT9ib290Ym94LmFsZXJ0KGUpOihqUXVlcnkoIiNjbGlwYm9hcmQiKS52YWwoIjAiKSxmKCExKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7d2luZG93LmxvY2F0aW9uLmhyZWY9alF1ZXJ5KCIjcmVmcmVzaCIpLmF0dHIoImhyZWYiKSsiJiIrKG5ldyBEYXRlKS5nZXRUaW1lKCl9LDMwMCkpfSkpfSl9ZnVuY3Rpb24gZihlKXsxPT1lP2pRdWVyeSgiLnBhc3RlLWhlcmUtYnRuLCAuY2xlYXItY2xpcGJvYXJkLWJ0biIpLnJlbW92ZUNsYXNzKCJkaXNhYmxlZCIpOmpRdWVyeSgiLnBhc3RlLWhlcmUtYnRuLCAuY2xlYXItY2xpcGJvYXJkLWJ0biIpLmFkZENsYXNzKCJkaXNhYmxlZCIpfWZ1bmN0aW9uIHAoZSl7dmFyIGE9alF1ZXJ5KCIuYnJlYWRjcnVtYiIpLndpZHRoKCkrZSx0PWpRdWVyeSgiI3ZpZXciKSxyPWpRdWVyeSgiI2hlbHAiKTtpZigwPHQudmFsKCkpe2lmKDE9PXQudmFsKCkpalF1ZXJ5KCJ1bC5ncmlkIGxpLCB1bC5ncmlkIGZpZ3VyZSIpLmNzcygid2lkdGgiLCIxMDAlIik7ZWxzZXt2YXIgaT1NYXRoLmZsb29yKGEvMzgwKTswPT1pJiYoaT0xLGpRdWVyeSgiaDQiKS5jc3MoImZvbnQtc2l6ZSIsMTIpKSxhPU1hdGguZmxvb3IoYS9pLTMpLGpRdWVyeSgidWwuZ3JpZCBsaSwgdWwuZ3JpZCBmaWd1cmUiKS5jc3MoIndpZHRoIixhKX1yLmhpZGUoKX1lbHNlIG4udG91Y2gmJnIuc2hvdygpfWZ1bmN0aW9uIHYoKXt2YXIgZT1qUXVlcnkodGhpcyk7MD09alF1ZXJ5KCIjdmlldyIpLnZhbCgpJiYoMT09ZS5hdHRyKCJ0b2dnbGUiKT8oZS5hdHRyKCJ0b2dnbGUiLDApLGUuYW5pbWF0ZSh7dG9wOiIwcHgifSx7cXVldWU6ITEsZHVyYXRpb246MzAwfSkpOihlLmF0dHIoInRvZ2dsZSIsMSksZS5hbmltYXRlKHt0b3A6Ii0zMHB4In0se3F1ZXVlOiExLGR1cmF0aW9uOjMwMH0pKSl9ZnVuY3Rpb24gbShlKXt2YXIgYT1qUXVlcnkoIiNjdXJfZGlyIikudmFsKCk7YT1hLnJlcGxhY2UoIlxcIiwiLyIpO3ZhciB0PWpRdWVyeSgiI3N1Yl9mb2xkZXIiKS52YWwoKTt0PXQucmVwbGFjZSgiXFwiLCIvIik7dmFyIHI9alF1ZXJ5KCIjYmFzZV91cmwiKS52YWwoKSxpPWpRdWVyeSgiI2ZsZHJfdmFsdWUiKS52YWwoKTtpPWkucmVwbGFjZSgiXFwiLCIvIik7Zm9yKHZhciBuPVtdLGw9alF1ZXJ5KCIjcmV0dXJuX3JlbGF0aXZlX3VybCIpLnZhbCgpLG89MT09alF1ZXJ5KCIjZnRwIikudmFsKCksdT0wO3U8ZS5sZW5ndGg7dSsrKXt2YXIgYz1lW3VdO28/bi5wdXNoKGVuY29kZVVSTChqUXVlcnkoIiNmdHBfYmFzZV91cmwiKS52YWwoKStqUXVlcnkoIiN1cGxvYWRfZGlyIikudmFsKCkraStjKSk6bi5wdXNoKGVuY29kZVVSTCgoMT09bD90K2k6cithKStjKSl9cmV0dXJuIG59ZnVuY3Rpb24gaCgpe3JldHVybiAxPT1qUXVlcnkoIiNwb3B1cCIpLnZhbCgpP3dpbmRvdy5vcGVuZXI6d2luZG93LnBhcmVudH1mdW5jdGlvbiBqKCl7MT09alF1ZXJ5KCIjcG9wdXAiKS52YWwoKT93aW5kb3cuY2xvc2UoKTooImZ1bmN0aW9uIj09dHlwZW9mIHBhcmVudC5qUXVlcnkoIi5tb2RhbDpoYXMoaWZyYW1lKSIpLm1vZGFsJiZwYXJlbnQualF1ZXJ5KCIubW9kYWw6aGFzKGlmcmFtZSkiKS5tb2RhbCgiaGlkZSIpLHZvaWQgMCE9PXBhcmVudC5qUXVlcnkmJnBhcmVudC5qUXVlcnk/Im9iamVjdCI9PXR5cGVvZiBwYXJlbnQualF1ZXJ5LmZhbmN5Ym94P3BhcmVudC5qUXVlcnkuZmFuY3lib3guZ2V0SW5zdGFuY2UoKS5jbG9zZSgpOiJmdW5jdGlvbiI9PXR5cGVvZiBwYXJlbnQualF1ZXJ5LmZhbmN5Ym94JiZwYXJlbnQualF1ZXJ5LmZhbmN5Ym94LmNsb3NlKCk6ImZ1bmN0aW9uIj09dHlwZW9mIHBhcmVudC4kLmZhbmN5Ym94JiZwYXJlbnQuJC5mYW5jeWJveC5jbG9zZSgpKX1mdW5jdGlvbiBRKGUpe3JldHVybiBudWxsIT1lPygidHJ1ZSI9PWpRdWVyeSgiI3RyYW5zbGl0ZXJhdGlvbiIpLnZhbCgpJiYoZT0oZT1mdW5jdGlvbihlKXtmb3IodmFyIGE9Wy9bXDMwMC1cMzA2XS9nLC9bXDM0MC1cMzQ2XS9nLC9bXDMxMC1cMzEzXS9nLC9bXDM1MC1cMzUzXS9nLC9bXDMxNC1cMzE3XS9nLC9bXDM1NC1cMzU3XS9nLC9bXDMyMi1cMzMwXS9nLC9bXDM2Mi1cMzcwXS9nLC9bXDMzMS1cMzM0XS9nLC9bXDM3MS1cMzc0XS9nLC9bXDMyMV0vZywvW1wzNjFdL2csL1tcMzA3XS9nLC9bXDM0N10vZ10sdD1bIkEiLCJhIiwiRSIsImUiLCJJIiwiaSIsIk8iLCJvIiwiVSIsInUiLCJOIiwibiIsIkMiLCJjIl0scj0wO3I8YS5sZW5ndGg7cisrKWU9ZS5yZXBsYWNlKGFbcl0sdFtyXSk7cmV0dXJuIGV9KGUpKS5yZXBsYWNlKC9bXkEtWmEtejAtOVwuXC1cW1xdIF9dKy9nLCIiKSksInRydWUiPT1qUXVlcnkoIiNjb252ZXJ0X3NwYWNlcyIpLnZhbCgpJiYoZT1lLnJlcGxhY2UoLyAvZyxqUXVlcnkoIiNyZXBsYWNlX3dpdGgiKS52YWwoKSkpLCJ0cnVlIj09alF1ZXJ5KCIjbG93ZXJfY2FzZSIpLnZhbCgpJiYoZT1lLnRvTG93ZXJDYXNlKCkpLGU9KGU9KGU9KGU9KGU9ZS5yZXBsYWNlKCciJywiIikpLnJlcGxhY2UoIiciLCIiKSkucmVwbGFjZSgiLyIsIiIpKS5yZXBsYWNlKCJcXCIsIiIpKS5yZXBsYWNlKC88XC8/W14+XSsoPnwkKS9nLCIiKSx5LnRyaW0oZSkpOm51bGx9ZnVuY3Rpb24gZyhlLGEsdCxyLGkpe251bGwhPT10JiYodD1RKHQpLHkuYWpheCh7dHlwZToiUE9TVCIsdXJsOiJleGVjdXRlLnBocD9hY3Rpb249IitlLGRhdGE6e3BhdGg6YSxuYW1lOnQucmVwbGFjZSgiLyIsIiIpfX0pLmRvbmUoZnVuY3Rpb24oZSl7cmV0dXJuIiIhPWU/KGJvb3Rib3guYWxlcnQoZSksITEpOigiIiE9aSYmd2luZG93W2ldKHIsdCksITApfSkpfWZ1bmN0aW9uIF8oZSx0KXt2YXIgYT1qUXVlcnkoImxpLmRpciIsInVsLmdyaWQiKS5maWx0ZXIoIjp2aXNpYmxlIikscj1qUXVlcnkoImxpLmZpbGUiLCJ1bC5ncmlkIikuZmlsdGVyKCI6dmlzaWJsZSIpO2M9MCx5KCIuc2VsZWN0aW9uOmNoZWNrYm94IikucmVtb3ZlQXR0cigiY2hlY2tlZCIpLHMudXBkYXRlTXVsdGlwbGVTZWxlY3Rpb25CdXR0b25zKCk7dmFyIGk9W10sbj1bXSxsPVtdLG89W107YS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9alF1ZXJ5KHRoaXMpLGE9ZS5maW5kKHQpLnZhbCgpO2lmKHkuaXNOdW1lcmljKGEpKWZvcihhPXBhcnNlRmxvYXQoYSk7dm9pZCAwIT09aVthXSYmaVthXTspYT1wYXJzZUZsb2F0KHBhcnNlRmxvYXQoYSkrcGFyc2VGbG9hdCguMDAxKSk7ZWxzZSBhPWErImEiK2UuZmluZCgiaDQgYSIpLmF0dHIoImRhdGEtZmlsZSIpO2lbYV09ZS5odG1sKCksbi5wdXNoKGEpfSksci5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9alF1ZXJ5KHRoaXMpLGE9ZS5maW5kKHQpLnZhbCgpO2lmKHkuaXNOdW1lcmljKGEpKWZvcihhPXBhcnNlRmxvYXQoYSk7dm9pZCAwIT09bFthXSYmbFthXTspYT1wYXJzZUZsb2F0KHBhcnNlRmxvYXQoYSkrcGFyc2VGbG9hdCguMDAxKSk7ZWxzZSBhPWErImEiK2UuZmluZCgiaDQgYSIpLmF0dHIoImRhdGEtZmlsZSIpO2xbYV09ZS5odG1sKCksby5wdXNoKGEpfSkseS5pc051bWVyaWMoblswXSk/bi5zb3J0KGZ1bmN0aW9uKGUsYSl7cmV0dXJuIHBhcnNlRmxvYXQoZSktcGFyc2VGbG9hdChhKX0pOm4uc29ydCgpLHkuaXNOdW1lcmljKG9bMF0pP28uc29ydChmdW5jdGlvbihlLGEpe3JldHVybiBwYXJzZUZsb2F0KGUpLXBhcnNlRmxvYXQoYSl9KTpvLnNvcnQoKSxlJiYobi5yZXZlcnNlKCksby5yZXZlcnNlKCkpLGEuZWFjaChmdW5jdGlvbihlKXtqUXVlcnkodGhpcykuaHRtbChpW25bZV1dKX0pLHIuZWFjaChmdW5jdGlvbihlKXtqUXVlcnkodGhpcykuaHRtbChsW29bZV1dKSxqUXVlcnkodGhpcykuYXR0cigiZGF0YS1uYW1lIixqUXVlcnkodGhpcykuY2hpbGRyZW4oKS5hdHRyKCJkYXRhLW5hbWUiKSl9KX1mdW5jdGlvbiBiKCl7aS51cGRhdGUoKX1qUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7aWYocy5tYWtlQ29udGV4dE1lbnUoKSwidW5kZWZpbmVkIiE9dHlwZW9mIFN0b3JhZ2UmJjEhPWpRdWVyeSgiI3R5cGVfcGFyYW0iKS52YWwoKSYmMyE9alF1ZXJ5KCIjdHlwZV9wYXJhbSIpLnZhbCgpKXt2YXIgZT1sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgic29ydCIpO2lmKGUpe3ZhciBhPWpRdWVyeSgiIyIrZSk7YS5hZGRDbGFzcygiYnRuLWludmVyc2UiKSxhLmZpbmQoImkiKS5hZGRDbGFzcygiaWNvbi13aGl0ZSIpLGpRdWVyeSgiLmdyaWQgbGkiKS5ub3QoIi4iK2UpLmhpZGUoMzAwKSxqUXVlcnkoIi5ncmlkIGxpLiIrZSkuc2hvdygzMDApfX1pZihqUXVlcnkoIi5mZi1jb250YWluZXIiKS5vbigiY2xpY2siLCIuY2hlY2ttYXJrIixmdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbigpLGpRdWVyeSh0aGlzKS5wYXJlbnQoKS5maW5kKCJpbnB1dCIpLmlzKCI6Y2hlY2tlZCIpP2MtLTpjKysscy51cGRhdGVNdWx0aXBsZVNlbGVjdGlvbkJ1dHRvbnMoKX0pLGpRdWVyeSgiI2Z1bGwtaW1nIikub24oImNsaWNrIixmdW5jdGlvbigpe2pRdWVyeSgiI3ByZXZpZXdMaWdodGJveCIpLmxpZ2h0Ym94KCJoaWRlIil9KSxqUXVlcnkoImJvZHkiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7alF1ZXJ5KCIudGlwLXJpZ2h0IikudG9vbHRpcCgiaGlkZSIpfSkscy5iaW5kR3JpZEV2ZW50cygpLHBhcnNlSW50KGpRdWVyeSgiI2ZpbGVfbnVtYmVyIikudmFsKCkpPnBhcnNlSW50KGpRdWVyeSgiI2ZpbGVfbnVtYmVyX2xpbWl0X2pzIikudmFsKCkpKXZhciB0PSExO2Vsc2UgdD0hMDtzLm1ha2VTb3J0KHQpLHMubWFrZUZpbHRlcnModCkscy51cGxvYWRVUkwoKSxqUXVlcnkoIiNpbmZvIikub24oImNsaWNrIixmdW5jdGlvbigpe2Jvb3Rib3guYWxlcnQoJzxkaXYgY2xhc3M9InRleHQtY2VudGVyIj48YnIvPjxpbWcgc3JjPSJpbWcvbG9nby5wbmciIGFsdD0icmVzcG9uc2l2ZSBmaWxlbWFuYWdlciIvPjxici8+PGJyLz48cD48c3Ryb25nPlJFU1BPTlNJVkUgZmlsZW1hbmFnZXIgdi45LjE0LjA8L3N0cm9uZz48YnIvPjxhIGhyZWY9Imh0dHA6Ly93d3cucmVzcG9uc2l2ZWZpbGVtYW5hZ2VyLmNvbSI+cmVzcG9uc2l2ZWZpbGVtYW5hZ2VyLmNvbTwvYT48L3A+PGJyLz48cD5Db3B5cmlnaHQgwqkgPGEgaHJlZj0iaHR0cDovL3d3dy50ZWNyYWlsLmNvbSIgYWx0PSJ0ZWNyYWlsIj5UZWNyYWlsPC9hPiAtIEFsYmVydG8gUGVyaXBvbGxpLiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvcD48YnIvPjxwPkxpY2Vuc2U8YnIvPjxzbWFsbD48aW1nIGFsdD0iQ3JlYXRpdmUgQ29tbW9ucyBMaWNlbnNlIiBzdHlsZT0iYm9yZGVyLXdpZHRoOjAiIHNyYz0iaHR0cHM6Ly93d3cucmVzcG9uc2l2ZWZpbGVtYW5hZ2VyLmNvbS9saWNlbnNlLnBocCIgLz48YnIgLz5UaGlzIHdvcmsgaXMgbGljZW5zZWQgdW5kZXIgYSA8YSByZWw9ImxpY2Vuc2UiIGhyZWY9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LW5jLzMuMC8iPkNyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tTm9uQ29tbWVyY2lhbCAzLjAgVW5wb3J0ZWQgTGljZW5zZTwvYT4uPC9zbWFsbD48L3A+PC9kaXY+Jyl9KSxqUXVlcnkoIiNjaGFuZ2VfbGFuZ19idG4iKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7eS5hamF4KHt0eXBlOiJQT1NUIix1cmw6ImFqYXhfY2FsbHMucGhwP2FjdGlvbj1nZXRfbGFuZyIsZGF0YTp7fX0pLmRvbmUoZnVuY3Rpb24oZSl7Ym9vdGJveC5kaWFsb2coZSxbe2xhYmVsOmpRdWVyeSgiI2NhbmNlbCIpLnZhbCgpLGNsYXNzOiJidG4ifSx7bGFiZWw6alF1ZXJ5KCIjb2siKS52YWwoKSxjbGFzczoiYnRuLWludmVyc2UiLGNhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGE9alF1ZXJ5KCIjbmV3X2xhbmdfc2VsZWN0IikudmFsKCk7eS5hamF4KHt0eXBlOiJQT1NUIix1cmw6ImFqYXhfY2FsbHMucGhwP2FjdGlvbj1jaGFuZ2VfbGFuZyIsZGF0YTp7Y2hvb3Nlbl9sYW5nOmF9fSkuZG9uZShmdW5jdGlvbihlKXsiIiE9ZT9ib290Ym94LmFsZXJ0KGUpOnNldFRpbWVvdXQoZnVuY3Rpb24oKXt3aW5kb3cubG9jYXRpb24uaHJlZj1qUXVlcnkoIiNyZWZyZXNoIikuYXR0cigiaHJlZiIpLnJlcGxhY2UoL2xhbmc9W1x3XSomL2ksImxhbmc9IithKyImIikrIiYiKyhuZXcgRGF0ZSkuZ2V0VGltZSgpfSwxMDApfSl9fV0se2hlYWRlcjpqUXVlcnkoIiNsYW5nX2xhbmdfY2hhbmdlIikudmFsKCl9KX0pfSkscy5tYWtlVXBsb2FkZXIoKSxqUXVlcnkoImJvZHkiKS5vbigia2V5cHJlc3MiLGZ1bmN0aW9uKGUpe3ZhciBhPVN0cmluZy5mcm9tQ2hhckNvZGUoZS53aGljaCk7aWYoIiciPT1hfHwnIic9PWF8fCJcXCI9PWF8fCIvIj09YSlyZXR1cm4hMX0pLGpRdWVyeSgidWwuZ3JpZCBsaSBmaWdjYXB0aW9uIikub24oImNsaWNrIiwnYVtkYXRhLXRvZ2dsZT0ibGlnaHRib3giXScsZnVuY3Rpb24oKXshZnVuY3Rpb24oZSl7c2hvd19hbmltYXRpb24oKTt2YXIgYT1uZXcgSW1hZ2U7YS5zcmM9ZSxqUXVlcnkoYSkub24oImxvYWQiLGZ1bmN0aW9uKCl7aGlkZV9hbmltYXRpb24oKX0pfShkZWNvZGVVUklDb21wb25lbnQoalF1ZXJ5KHRoaXMpLmF0dHIoImRhdGEtdXJsIikpKX0pLGpRdWVyeSgiLmNyZWF0ZS1maWxlLWJ0biIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtqUXVlcnkoIiN0ZXh0ZmlsZV9jcmVhdGVfYXJlYSIpLnBhcmVudCgpLnBhcmVudCgpLnJlbW92ZSgpLHkuYWpheCh7dHlwZToiR0VUIix1cmw6ImFqYXhfY2FsbHMucGhwP2FjdGlvbj1uZXdfZmlsZV9mb3JtIn0pLmRvbmUoZnVuY3Rpb24oZSl7Ym9vdGJveC5kaWFsb2coZSxbe2xhYmVsOmpRdWVyeSgiI2NhbmNlbCIpLnZhbCgpLGNsYXNzOiJidG4ifSx7bGFiZWw6alF1ZXJ5KCIjb2siKS52YWwoKSxjbGFzczoiYnRuLWludmVyc2UiLGNhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGU9alF1ZXJ5KCIjY3JlYXRlX3RleHRfZmlsZV9uYW1lIikudmFsKCkralF1ZXJ5KCIjY3JlYXRlX3RleHRfZmlsZV9leHRlbnNpb24iKS52YWwoKSxhPWpRdWVyeSgiI3RleHRmaWxlX2NyZWF0ZV9hcmVhIikudmFsKCk7aWYobnVsbCE9PWUpe2U9UShlKTt2YXIgdD1qUXVlcnkoIiNzdWJfZm9sZGVyIikudmFsKCkralF1ZXJ5KCIjZmxkcl92YWx1ZSIpLnZhbCgpO3kuYWpheCh7dHlwZToiUE9TVCIsdXJsOiJleGVjdXRlLnBocD9hY3Rpb249Y3JlYXRlX2ZpbGUiLGRhdGE6e3BhdGg6dCxuYW1lOmUsbmV3X2NvbnRlbnQ6YX19KS5kb25lKGZ1bmN0aW9uKGUpeyIiIT1lJiZib290Ym94LmFsZXJ0KGUsZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7d2luZG93LmxvY2F0aW9uLmhyZWY9alF1ZXJ5KCIjcmVmcmVzaCIpLmF0dHIoImhyZWYiKSsiJiIrKG5ldyBEYXRlKS5nZXRUaW1lKCl9LDUwMCl9KX0pfX19XSx7aGVhZGVyOmpRdWVyeSgiI2xhbmdfbmV3X2ZpbGUiKS52YWwoKX0pfSl9KSxqUXVlcnkoIi5uZXctZm9sZGVyIikub24oImNsaWNrIixmdW5jdGlvbigpe2Jvb3Rib3gucHJvbXB0KGpRdWVyeSgiI2luc2VydF9mb2xkZXJfbmFtZSIpLnZhbCgpLGpRdWVyeSgiI2NhbmNlbCIpLnZhbCgpLGpRdWVyeSgiI29rIikudmFsKCksZnVuY3Rpb24oZSl7aWYobnVsbCE9PWUpe2U9UShlKS5yZXBsYWNlKCIuIiwiIik7dmFyIGE9alF1ZXJ5KCIjc3ViX2ZvbGRlciIpLnZhbCgpK2pRdWVyeSgiI2ZsZHJfdmFsdWUiKS52YWwoKTt5LmFqYXgoe3R5cGU6IlBPU1QiLHVybDoiZXhlY3V0ZS5waHA/YWN0aW9uPWNyZWF0ZV9mb2xkZXIiLGRhdGE6e3BhdGg6YSxuYW1lOmV9fSkuZG9uZShmdW5jdGlvbihlKXtlP2Jvb3Rib3guYWxlcnQoalF1ZXJ5KCIjcmVuYW1lX2V4aXN0aW5nX2ZvbGRlciIpLnZhbCgpKTpzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7d2luZG93LmxvY2F0aW9uLmhyZWY9alF1ZXJ5KCIjcmVmcmVzaCIpLmF0dHIoImhyZWYiKSsiJiIrKG5ldyBEYXRlKS5nZXRUaW1lKCl9LDMwMCl9KX19KX0pLGpRdWVyeSgiLnZpZXctY29udHJvbGxlciBidXR0b24iKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7dmFyIGU9alF1ZXJ5KHRoaXMpO2pRdWVyeSgiLnZpZXctY29udHJvbGxlciBidXR0b24iKS5yZW1vdmVDbGFzcygiYnRuLWludmVyc2UiKSxqUXVlcnkoIi52aWV3LWNvbnRyb2xsZXIgaSIpLnJlbW92ZUNsYXNzKCJpY29uLXdoaXRlIiksZS5hZGRDbGFzcygiYnRuLWludmVyc2UiKSxlLmZpbmQoImkiKS5hZGRDbGFzcygiaWNvbi13aGl0ZSIpLHkuYWpheCh7dXJsOiJhamF4X2NhbGxzLnBocD9hY3Rpb249dmlldyZ0eXBlPSIrZS5hdHRyKCJkYXRhLXZhbHVlIil9KS5kb25lKGZ1bmN0aW9uKGUpeyIiIT1lJiZib290Ym94LmFsZXJ0KGUpfSksdm9pZCAwIT09alF1ZXJ5KCJ1bC5ncmlkIilbMF0mJmpRdWVyeSgidWwuZ3JpZCIpWzBdJiYoalF1ZXJ5KCJ1bC5ncmlkIilbMF0uY2xhc3NOYW1lPWpRdWVyeSgidWwuZ3JpZCIpWzBdLmNsYXNzTmFtZS5yZXBsYWNlKC9cYmxpc3Qtdmlldy4qP1xiL2csIiIpKSx2b2lkIDAhPT1qUXVlcnkoIi5zb3J0ZXItY29udGFpbmVyIilbMF0mJmpRdWVyeSgiLnNvcnRlci1jb250YWluZXIiKVswXSYmKGpRdWVyeSgiLnNvcnRlci1jb250YWluZXIiKVswXS5jbGFzc05hbWU9alF1ZXJ5KCIuc29ydGVyLWNvbnRhaW5lciIpWzBdLmNsYXNzTmFtZS5yZXBsYWNlKC9cYmxpc3Qtdmlldy4qP1xiL2csIiIpKTt2YXIgYT1lLmF0dHIoImRhdGEtdmFsdWUiKTtqUXVlcnkoIiN2aWV3IikudmFsKGEpLGpRdWVyeSgidWwuZ3JpZCIpLmFkZENsYXNzKCJsaXN0LXZpZXciK2EpLGpRdWVyeSgiLnNvcnRlci1jb250YWluZXIiKS5hZGRDbGFzcygibGlzdC12aWV3IithKSwxPD1lLmF0dHIoImRhdGEtdmFsdWUiKT9wKDE0KTooalF1ZXJ5KCJ1bC5ncmlkIGxpIikuY3NzKCJ3aWR0aCIsMTI2KSxqUXVlcnkoInVsLmdyaWQgZmlndXJlIikuY3NzKCJ3aWR0aCIsMTIyKSksYigpfSksbi50b3VjaD8oalF1ZXJ5KCIjaGVscCIpLnNob3coKSxqUXVlcnkoIi5ib3g6bm90KC5uby1lZmZlY3QpIikuc3dpcGUoe3N3aXBlTGVmdDp2LHN3aXBlUmlnaHQ6dix0aHJlc2hvbGQ6MzB9KSk6KGpRdWVyeSgiLnRpcCIpLnRvb2x0aXAoe3BsYWNlbWVudDoiYm90dG9tIn0pLGpRdWVyeSgiLnRpcC10b3AiKS50b29sdGlwKHtwbGFjZW1lbnQ6InRvcCJ9KSxqUXVlcnkoIi50aXAtbGVmdCIpLnRvb2x0aXAoe3BsYWNlbWVudDoibGVmdCJ9KSxqUXVlcnkoIi50aXAtcmlnaHQiKS50b29sdGlwKHtwbGFjZW1lbnQ6InJpZ2h0In0pLGpRdWVyeSgiYm9keSIpLmFkZENsYXNzKCJuby10b3VjaCIpKSxqUXVlcnkoIi5wYXN0ZS1oZXJlLWJ0biIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXswPT1qUXVlcnkodGhpcykuaGFzQ2xhc3MoImRpc2FibGVkIikmJmQoKX0pLGpRdWVyeSgiLmNsZWFyLWNsaXBib2FyZC1idG4iKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7MD09alF1ZXJ5KHRoaXMpLmhhc0NsYXNzKCJkaXNhYmxlZCIpJiZib290Ym94LmNvbmZpcm0oalF1ZXJ5KCIjbGFuZ19jbGVhcl9jbGlwYm9hcmRfY29uZmlybSIpLnZhbCgpLGpRdWVyeSgiI2NhbmNlbCIpLnZhbCgpLGpRdWVyeSgiI29rIikudmFsKCksZnVuY3Rpb24oZSl7MT09ZSYmeS5hamF4KHt0eXBlOiJQT1NUIix1cmw6ImFqYXhfY2FsbHMucGhwP2FjdGlvbj1jbGVhcl9jbGlwYm9hcmQiLGRhdGE6e319KS5kb25lKGZ1bmN0aW9uKGUpeyIiIT1lP2Jvb3Rib3guYWxlcnQoZSk6alF1ZXJ5KCIjY2xpcGJvYXJkIikudmFsKCIwIiksZighMSl9KX0pfSk7dmFyIHU9ZnVuY3Rpb24oYSl7dmFyIHQ9W107cmV0dXJuIGpRdWVyeSgiLnNlbGVjdGlvbjpjaGVja2JveDpjaGVja2VkOnZpc2libGUiKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9alF1ZXJ5KHRoaXMpLnZhbCgpO2EmJihlPWpRdWVyeSh0aGlzKS5jbG9zZXN0KCJmaWd1cmUiKS5hdHRyKCJkYXRhLXBhdGgiKSksdC5wdXNoKGUpfSksdH07aWYoalF1ZXJ5KCIubXVsdGlwbGUtYWN0aW9uLWJ0biIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXt2YXIgZT11KCk7d2luZG93W2pRdWVyeSh0aGlzKS5hdHRyKCJkYXRhLWZ1bmN0aW9uIildKGUsalF1ZXJ5KCIjZmllbGRfaWQiKS52YWwoKSl9KSxqUXVlcnkoIi5tdWx0aXBsZS1kZXNlbGVjdC1idG4iKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7eSgiLnNlbGVjdGlvbjpjaGVja2JveCIpLnJlbW92ZUF0dHIoImNoZWNrZWQiKSxqUXVlcnkoIiNtdWx0aXBsZS1zZWxlY3Rpb24iKS5oaWRlKDMwMCl9KSxqUXVlcnkoIi5tdWx0aXBsZS1zZWxlY3QtYnRuIikub24oImNsaWNrIixmdW5jdGlvbigpe3koIi5zZWxlY3Rpb246Y2hlY2tib3g6dmlzaWJsZSIpLnByb3AoImNoZWNrZWQiLCEwKX0pLGpRdWVyeSgiLm11bHRpcGxlLWRlbGV0ZS1idG4iKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7aWYoMCE9alF1ZXJ5KCIuc2VsZWN0aW9uOmNoZWNrYm94OmNoZWNrZWQ6dmlzaWJsZSIpLmxlbmd0aCl7dmFyIGU9alF1ZXJ5KHRoaXMpO2Jvb3Rib3guY29uZmlybShlLmF0dHIoImRhdGEtY29uZmlybSIpLGpRdWVyeSgiI2NhbmNlbCIpLnZhbCgpLGpRdWVyeSgiI29rIikudmFsKCksZnVuY3Rpb24oZSl7aWYoMT09ZSl7dmFyIGE9dSghMCk7cj0iZGVsZXRlX2ZpbGVzIixpPWEsbz1sPW49IiIsbnVsbCE9PW5hbWUmJihuYW1lPVEobmFtZSkseS5hamF4KHt0eXBlOiJQT1NUIix1cmw6ImV4ZWN1dGUucGhwP2FjdGlvbj0iK3IsZGF0YTp7cGF0aDppWzBdLHBhdGhzOmksbmFtZXM6bn19KS5kb25lKGZ1bmN0aW9uKGUpe3JldHVybiIiIT1lPyhib290Ym94LmFsZXJ0KGUpLCExKTooIiIhPW8mJndpbmRvd1tvXShsLG5hbWUpLCEwKX0pKTt2YXIgdD1qUXVlcnkoIiNmaWxlc19udW1iZXIiKTt0LnRleHQocGFyc2VJbnQodC50ZXh0KCkpLWEubGVuZ3RoKSxqUXVlcnkoIi5zZWxlY3Rpb246Y2hlY2tib3g6Y2hlY2tlZDp2aXNpYmxlIikuZWFjaChmdW5jdGlvbigpe2pRdWVyeSh0aGlzKS5jbG9zZXN0KCJsaSIpLnJlbW92ZSgpfSksalF1ZXJ5KCIjbXVsdGlwbGUtc2VsZWN0aW9uIikuaGlkZSgzMDApfXZhciByLGksbixsLG99KX19KSwhbi5jc3N0cmFuc2Zvcm1zKXt2YXIgcj1qUXVlcnkoImZpZ3VyZSIpO3Iub24oIm1vdXNlb3ZlciIsZnVuY3Rpb24oKXswPT1qUXVlcnkoIiN2aWV3IikudmFsKCkmJiExPT09alF1ZXJ5KCIjbWFpbi1pdGVtLWNvbnRhaW5lciIpLmhhc0NsYXNzKCJuby1lZmZlY3Qtc2xpZGUiKSYmalF1ZXJ5KHRoaXMpLmZpbmQoIi5ib3g6bm90KC5uby1lZmZlY3QpIikuYW5pbWF0ZSh7dG9wOiItMjZweCJ9LHtxdWV1ZTohMSxkdXJhdGlvbjozMDB9KX0pLHIub24oIm1vdXNlb3V0IixmdW5jdGlvbigpezA9PWpRdWVyeSgiI3ZpZXciKS52YWwoKSYmalF1ZXJ5KHRoaXMpLmZpbmQoIi5ib3g6bm90KC5uby1lZmZlY3QpIikuYW5pbWF0ZSh7dG9wOiIwcHgifSx7cXVldWU6ITEsZHVyYXRpb246MzAwfSl9KX1qUXVlcnkod2luZG93KS5yZXNpemUoZnVuY3Rpb24oKXtwKDI4KX0pLHAoMTQpLDE9PWpRdWVyeSgiI2NsaXBib2FyZCIpLnZhbCgpP2YoITApOmYoITEpLGpRdWVyeSgibGkuZGlyLCBsaS5maWxlIikuZHJhZ2dhYmxlKHtkaXN0YW5jZToyMCxjdXJzb3I6Im1vdmUiLGhlbHBlcjpmdW5jdGlvbigpe2pRdWVyeSh0aGlzKS5maW5kKCJmaWd1cmUiKS5maW5kKCIuYm94IikuY3NzKCJ0b3AiLCIwcHgiKTt2YXIgZT1qUXVlcnkodGhpcykuY2xvbmUoKS5jc3MoInotaW5kZXgiLDFlMykuZmluZCgiLmJveCIpLmNzcygiYm94LXNoYWRvdyIsIm5vbmUiKS5jc3MoIi13ZWJraXQtYm94LXNoYWRvdyIsIm5vbmUiKS5wYXJlbnQoKS5wYXJlbnQoKTtyZXR1cm4galF1ZXJ5KHRoaXMpLmFkZENsYXNzKCJzZWxlY3RlZCIpLGV9LHN0YXJ0OmZ1bmN0aW9uKGUsYSl7alF1ZXJ5KGEuaGVscGVyKS5hZGRDbGFzcygidWktZHJhZ2dhYmxlLWhlbHBlciIpLDA9PWpRdWVyeSgiI3ZpZXciKS52YWwoKSYmalF1ZXJ5KCIjbWFpbi1pdGVtLWNvbnRhaW5lciIpLmFkZENsYXNzKCJuby1lZmZlY3Qtc2xpZGUiKX0sc3RvcDpmdW5jdGlvbigpe2pRdWVyeSh0aGlzKS5yZW1vdmVDbGFzcygic2VsZWN0ZWQiKSwwPT1qUXVlcnkoIiN2aWV3IikudmFsKCkmJmpRdWVyeSgiI21haW4taXRlbS1jb250YWluZXIiKS5yZW1vdmVDbGFzcygibm8tZWZmZWN0LXNsaWRlIil9fSksalF1ZXJ5KCJsaS5kaXIsbGkuYmFjayIpLmRyb3BwYWJsZSh7YWNjZXB0OiJ1bC5ncmlkIGxpIixhY3RpdmVDbGFzczoidWktc3RhdGUtaGlnaGxpZ2h0Iixob3ZlckNsYXNzOiJ1aS1zdGF0ZS1ob3ZlciIsZHJvcDpmdW5jdGlvbihlLGEpeyFmdW5jdGlvbih0LHIpe3QuaGFzQ2xhc3MoImRpcmVjdG9yeSIpP3QuZmluZCgiLnJlbmFtZS1mb2xkZXIiKTp0LmZpbmQoIi5yZW5hbWUtZmlsZSIpO3ZhciBlPXQuY2xvc2VzdCgiZmlndXJlIikuYXR0cigiZGF0YS1wYXRoIik7dC5wYXJlbnQoKS5oaWRlKDEwMCkseS5hamF4KHt0eXBlOiJQT1NUIix1cmw6ImFqYXhfY2FsbHMucGhwP2FjdGlvbj1jb3B5X2N1dCIsZGF0YTp7cGF0aDplLHN1Yl9hY3Rpb246ImN1dCJ9fSkuZG9uZShmdW5jdGlvbihlKXt2YXIgYTsiIiE9ZT9ib290Ym94LmFsZXJ0KGUpOihhPXZvaWQgMCE9PXI/ci5oYXNDbGFzcygiYmFjay1kaXJlY3RvcnkiKT9yLmZpbmQoIi5wYXRoIikudmFsKCk6ci5jbG9zZXN0KCJmaWd1cmUiKS5hdHRyKCJkYXRhLXBhdGgiKTpqUXVlcnkoIiNzdWJfZm9sZGVyIikudmFsKCkralF1ZXJ5KCIjZmxkcl92YWx1ZSIpLnZhbCgpLHkuYWpheCh7dHlwZToiUE9TVCIsdXJsOiJleGVjdXRlLnBocD9hY3Rpb249cGFzdGVfY2xpcGJvYXJkIixkYXRhOntwYXRoOmF9fSkuZG9uZShmdW5jdGlvbihlKXsiIiE9ZT8oYm9vdGJveC5hbGVydChlKSx0LnBhcmVudCgpLnNob3coMTAwKSk6KGpRdWVyeSgiI2NsaXBib2FyZCIpLnZhbCgiMCIpLGYoITEpLHQucGFyZW50KCkucmVtb3ZlKCkpfSkpfSkuZXJyb3IoZnVuY3Rpb24oKXt0LnBhcmVudCgpLnNob3coMTAwKX0pfShhLmRyYWdnYWJsZS5maW5kKCJmaWd1cmUiKSxqUXVlcnkodGhpcykuZmluZCgiZmlndXJlIikpfX0pLGpRdWVyeShkb2N1bWVudCkub24oImtleXVwIiwiI2NobW9kX2Zvcm0gI2NobW9kX3ZhbHVlIixmdW5jdGlvbigpe28oITApfSksalF1ZXJ5KGRvY3VtZW50KS5vbigiY2hhbmdlIiwiI2NobW9kX2Zvcm0gaW5wdXQiLGZ1bmN0aW9uKCl7byghMSl9KSxqUXVlcnkoZG9jdW1lbnQpLm9uKCJmb2N1c291dCIsIiNjaG1vZF9mb3JtICNjaG1vZF92YWx1ZSIsZnVuY3Rpb24oKXt2YXIgZT1qUXVlcnkoIiNjaG1vZF9mb3JtICNjaG1vZF92YWx1ZSIpO251bGw9PWUudmFsKCkubWF0Y2goL15bMC03XXszfSQvKSYmKGUudmFsKGUuYXR0cigiZGF0YS1kZWYtdmFsdWUiKSksbyghMCkpfSksaT1uZXcgTGF6eUxvYWQsbmV3IENsaXBib2FyZCgiLmJ0biIpfSksZW5jb2RlVVJMPWZ1bmN0aW9uKGUpe2Zvcih2YXIgYT1lLnNwbGl0KCIvIiksdD0zO3Q8YS5sZW5ndGg7dCsrKWFbdF09ZW5jb2RlVVJJQ29tcG9uZW50KGFbdF0pO3JldHVybiBhLmpvaW4oIi8iKX0sYXBwbHk9ZnVuY3Rpb24oZSxhKXt2YXIgdD1oKCkscj1qUXVlcnkoIiNjYWxsYmFjayIpLnZhbCgpLGk9IiIsbj1bIm9nZyIsIm1wMyIsIndhdiJdLGw9WyJtcDQiLCJvZ2ciLCJ3ZWJtIl07QXJyYXkuaXNBcnJheShlKXx8KGU9bmV3IEFycmF5KGUpKTt2YXIgbz1tKGUpLHU9SlNPTi5zdHJpbmdpZnkobyk7aWYoMT09by5sZW5ndGgmJih1PW9bMF0pLCIiIT1hKXtpZigxPT1qUXVlcnkoIiNjcm9zc2RvbWFpbiIpLnZhbCgpKXQucG9zdE1lc3NhZ2Uoe3NlbmRlcjoicmVzcG9uc2l2ZWZpbGVtYW5hZ2VyIix1cmw6dSxmaWVsZF9pZDphfSwiKiIpO2Vsc2UgalF1ZXJ5KCIjIithLHQuZG9jdW1lbnQpLnZhbCh1KS50cmlnZ2VyKCJjaGFuZ2UiKSwwPT1yPyJmdW5jdGlvbiI9PXR5cGVvZiB0LnJlc3BvbnNpdmVfZmlsZW1hbmFnZXJfY2FsbGJhY2smJnQucmVzcG9uc2l2ZV9maWxlbWFuYWdlcl9jYWxsYmFjayhhKToiZnVuY3Rpb24iPT10eXBlb2YgdFtyXSYmdFtyXShhKSxqKCl9ZWxzZXtmb3IodmFyIGM9MDtjPG8ubGVuZ3RoO2MrKyl7dmFyIHM9ZVtjXSxkPXMuc3Vic3RyKDAscy5sYXN0SW5kZXhPZigiLiIpKSxmPXMuc3BsaXQoIi4iKS5wb3AoKTtmPWYudG9Mb3dlckNhc2UoKTt2YXIgcD1vW2NdOy0xPHkuaW5BcnJheShmLGV4dF9pbWcpPyhqUXVlcnkoIiNhZGRfdGltZV90b19pbWciKS52YWwoKSYmKHA9cCsiPyIrKG5ldyBEYXRlKS5nZXRUaW1lKCkpLGkrPSc8aW1nIHNyYz0iJytwKyciIGFsdD0iJytkKyciIC8+ICcpOi0xPHkuaW5BcnJheShmLGwpP2krPSc8dmlkZW8gY29udHJvbHMgc291cmNlIHNyYz0iJytwKyciIHR5cGU9InZpZGVvLycrZisnIj4nK2QrIjwvdmlkZW8+ICI6LTE8eS5pbkFycmF5KGYsbik/KCJtcDMiPT1mJiYoZj0ibXBlZyIpLGkrPSc8YXVkaW8gY29udHJvbHMgc3JjPSInK3ArJyIgdHlwZT0iYXVkaW8vJytmKyciPicrZCsiPC9hdWRpbz4gIik6aSs9JzxhIGhyZWY9IicrcCsnIiB0aXRsZT0iJytkKyciPicrZCsiPC9hPiAifTE9PWpRdWVyeSgiI2Nyb3NzZG9tYWluIikudmFsKCk/dC5wb3N0TWVzc2FnZSh7c2VuZGVyOiJyZXNwb25zaXZlZmlsZW1hbmFnZXIiLHVybDp1LGZpZWxkX2lkOm51bGwsaHRtbDppfSwiKiIpOnBhcmVudC50aW55bWNlLm1ham9yVmVyc2lvbjw0PyhwYXJlbnQudGlueW1jZS5hY3RpdmVFZGl0b3IuZXhlY0NvbW1hbmQoIm1jZUluc2VydENvbnRlbnQiLCExLGkpLHBhcmVudC50aW55bWNlLmFjdGl2ZUVkaXRvci53aW5kb3dNYW5hZ2VyLmNsb3NlKHBhcmVudC50aW55bWNlLmFjdGl2ZUVkaXRvci53aW5kb3dNYW5hZ2VyLnBhcmFtcy5tY2Vfd2luZG93X2lkKSk6KHBhcmVudC50aW55bWNlLmFjdGl2ZUVkaXRvci5pbnNlcnRDb250ZW50KGkpLHBhcmVudC50aW55bWNlLmFjdGl2ZUVkaXRvci53aW5kb3dNYW5hZ2VyLmNsb3NlKCkpfX0sYXBwbHlfbGluaz1mdW5jdGlvbihlLGEpe3ZhciB0PWgoKSxyPWpRdWVyeSgiI2NhbGxiYWNrIikudmFsKCk7QXJyYXkuaXNBcnJheShlKXx8KGU9bmV3IEFycmF5KGUpKTt2YXIgaT1tKGUpLG49SlNPTi5zdHJpbmdpZnkoaSk7KDE9PWkubGVuZ3RoJiYobj1pWzBdKSwiIiE9YSk/MT09alF1ZXJ5KCIjY3Jvc3Nkb21haW4iKS52YWwoKT90LnBvc3RNZXNzYWdlKHtzZW5kZXI6InJlc3BvbnNpdmVmaWxlbWFuYWdlciIsdXJsOmlbMF0sZmllbGRfaWQ6YX0sIioiKTooalF1ZXJ5KCIjIithLHQuZG9jdW1lbnQpLnZhbChuKS50cmlnZ2VyKCJjaGFuZ2UiKSwwPT1yPyJmdW5jdGlvbiI9PXR5cGVvZiB0LnJlc3BvbnNpdmVfZmlsZW1hbmFnZXJfY2FsbGJhY2smJnQucmVzcG9uc2l2ZV9maWxlbWFuYWdlcl9jYWxsYmFjayhhKToiZnVuY3Rpb24iPT10eXBlb2YgdFtyXSYmdFtyXShhKSxqKCkpOmFwcGx5X2FueShpWzBdKX0sYXBwbHlfaW1nPWZ1bmN0aW9uKGUsYSl7dmFyIHQ9aCgpLHI9alF1ZXJ5KCIjY2FsbGJhY2siKS52YWwoKTtBcnJheS5pc0FycmF5KGUpfHwoZT1uZXcgQXJyYXkoZSkpO3ZhciBpPW0oZSksbj1KU09OLnN0cmluZ2lmeShpKTtpZigxPT1pLmxlbmd0aCYmKG49aVswXSksIiIhPWEpe2lmKDE9PWpRdWVyeSgiI2Nyb3NzZG9tYWluIikudmFsKCkpdC5wb3N0TWVzc2FnZSh7c2VuZGVyOiJyZXNwb25zaXZlZmlsZW1hbmFnZXIiLHVybDppWzBdLGZpZWxkX2lkOmF9LCIqIik7ZWxzZSBqUXVlcnkoIiMiK2EsdC5kb2N1bWVudCkudmFsKG4pLnRyaWdnZXIoImNoYW5nZSIpLDA9PXI/ImZ1bmN0aW9uIj09dHlwZW9mIHQucmVzcG9uc2l2ZV9maWxlbWFuYWdlcl9jYWxsYmFjayYmdC5yZXNwb25zaXZlX2ZpbGVtYW5hZ2VyX2NhbGxiYWNrKGEpOiJmdW5jdGlvbiI9PXR5cGVvZiB0W3JdJiZ0W3JdKGEpLGooKX1lbHNle2lmKGpRdWVyeSgiI2FkZF90aW1lX3RvX2ltZyIpLnZhbCgpKXZhciBsPWlbMF0rIj8iKyhuZXcgRGF0ZSkuZ2V0VGltZSgpO2Vsc2UgbD1pWzBdO2FwcGx5X2FueShsKX19LGFwcGx5X3ZpZGVvPWZ1bmN0aW9uKGUsYSl7dmFyIHQ9aCgpLHI9alF1ZXJ5KCIjY2FsbGJhY2siKS52YWwoKTtBcnJheS5pc0FycmF5KGUpfHwoZT1uZXcgQXJyYXkoZSkpO3ZhciBpPW0oZSksbj1KU09OLnN0cmluZ2lmeShpKTsoMT09aS5sZW5ndGgmJihuPWlbMF0pLCIiIT1hKT8xPT1qUXVlcnkoIiNjcm9zc2RvbWFpbiIpLnZhbCgpP3QucG9zdE1lc3NhZ2Uoe3NlbmRlcjoicmVzcG9uc2l2ZWZpbGVtYW5hZ2VyIix1cmw6aVswXSxmaWVsZF9pZDphfSwiKiIpOihqUXVlcnkoIiMiK2EsdC5kb2N1bWVudCkudmFsKG4pLnRyaWdnZXIoImNoYW5nZSIpLDA9PXI/ImZ1bmN0aW9uIj09dHlwZW9mIHQucmVzcG9uc2l2ZV9maWxlbWFuYWdlcl9jYWxsYmFjayYmdC5yZXNwb25zaXZlX2ZpbGVtYW5hZ2VyX2NhbGxiYWNrKGEpOiJmdW5jdGlvbiI9PXR5cGVvZiB0W3JdJiZ0W3JdKGEpLGooKSk6YXBwbHlfYW55KGlbMF0pfSxhcHBseV9ub25lPWZ1bmN0aW9uKGUsYSx0KXt0LnBhcmVudCgpLmZpbmQoImZvcm0gYSIpWzFdLmNsaWNrKCksalF1ZXJ5KCIudGlwLXJpZ2h0IikudG9vbHRpcCgiaGlkZSIpfSxhcHBseV9hbnk9ZnVuY3Rpb24oZSl7aWYoMT09alF1ZXJ5KCIjY3Jvc3Nkb21haW4iKS52YWwoKSl3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKHtzZW5kZXI6InJlc3BvbnNpdmVmaWxlbWFuYWdlciIsdXJsOmUsZmllbGRfaWQ6bnVsbH0sIioiKTtlbHNlIGlmKCJja2VkaXRvciI9PT1qUXVlcnkoIiNlZGl0b3IiKS52YWwoKSl7dmFyIGE9KHQ9bmV3IFJlZ0V4cCgiKD86Wz8mXXwmKSIrIkNLRWRpdG9yRnVuY051bSIrIj0oW14mXSspIiwiaSIpLChyPXdpbmRvdy5sb2NhdGlvbi5zZWFyY2gubWF0Y2godCkpJiYxPHIubGVuZ3RoP3JbMV06bnVsbCk7d2luZG93Lm9wZW5lci5DS0VESVRPUi50b29scy5jYWxsRnVuY3Rpb24oYSxlKSx3aW5kb3cuY2xvc2UoKX1lbHNlIHdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2Uoe3NlbmRlcjoicmVzcG9uc2l2ZWZpbGVtYW5hZ2VyIix1cmw6ZSxmaWVsZF9pZDpudWxsfSx3aW5kb3cubG9jYXRpb24ub3JpZ2luKSxwYXJlbnQudGlueW1jZS5hY3RpdmVFZGl0b3Iud2luZG93TWFuYWdlci5jbG9zZSgpO3ZhciB0LHJ9LGFwcGx5X2ZpbGVfZHVwbGljYXRlPWZ1bmN0aW9uKGUsYSl7dmFyIHQ9ZS5wYXJlbnQoKTt0LmFmdGVyKCI8bGkgY2xhc3M9JyIrdC5hdHRyKCJjbGFzcyIpKyInIGRhdGEtbmFtZT0nIit0LmF0dHIoImRhdGEtbmFtZSIpKyInPiIrdC5odG1sKCkrIjwvbGk+Iik7dmFyIHI9dC5uZXh0KCk7YXBwbHlfZmlsZV9yZW5hbWUoci5maW5kKCJmaWd1cmUiKSxhKTt2YXIgaT1yLmZpbmQoIi5kb3dubG9hZC1mb3JtIiksbj0iZm9ybSIrKG5ldyBEYXRlKS5nZXRUaW1lKCk7aS5hdHRyKCJpZCIsbiksaS5maW5kKCIudGlwLXJpZ2h0IikuZmlyc3QoKS5hdHRyKCJvbmNsaWNrIiwialF1ZXJ5KCcjIituKyInKS5zdWJtaXQoKTsiKX0sYXBwbHlfZmlsZV9yZW5hbWU9ZnVuY3Rpb24oZSxhKXt2YXIgdDtlLmF0dHIoImRhdGEtbmFtZSIsYSksZS5wYXJlbnQoKS5hdHRyKCJkYXRhLW5hbWUiLGEpLGUuZmluZCgiaDQiKS50ZXh0KGEpO3ZhciByPWUuZmluZCgiYS5saW5rIiksaT0odD1yLmF0dHIoImRhdGEtZmlsZSIpKS5zdWJzdHJpbmcodC5sYXN0SW5kZXhPZigiLyIpKzEpLG49dC5zdWJzdHJpbmcodC5sYXN0SW5kZXhPZigiLiIpKzEpO249bj8iLiIrbjoiIixyLmVhY2goZnVuY3Rpb24oKXtqUXVlcnkodGhpcykuYXR0cigiZGF0YS1maWxlIixlbmNvZGVVUklDb21wb25lbnQoYStuKSl9KSxlLmZpbmQoImltZyIpLmVhY2goZnVuY3Rpb24oKXtpZihlPWpRdWVyeSh0aGlzKS5hdHRyKCJzcmMiKSlqUXVlcnkodGhpcykuYXR0cigic3JjIixlLnJlcGxhY2UoaSxhK24pKyI/dGltZT0iKyhuZXcgRGF0ZSkuZ2V0VGltZSgpKTtlbHNle3ZhciBlPWpRdWVyeSh0aGlzKS5hdHRyKCJkYXRhLXNyYyIpO2pRdWVyeSh0aGlzKS5hdHRyKCJkYXRhLXNyYyIsZS5yZXBsYWNlKGksYStuKSsiP3RpbWU9IisobmV3IERhdGUpLmdldFRpbWUoKSl9alF1ZXJ5KHRoaXMpLmF0dHIoImFsdCIsYSsiIHRodW1ibmFpbHMiKX0pO3ZhciBsPWUuZmluZCgiYS5wcmV2aWV3Iik7dm9pZCAwIT09KHQ9bC5hdHRyKCJkYXRhLXVybCIpKSYmdCYmbC5hdHRyKCJkYXRhLXVybCIsdC5yZXBsYWNlKGVuY29kZVVSSUNvbXBvbmVudChpKSxlbmNvZGVVUklDb21wb25lbnQoYStuKSkpLGUucGFyZW50KCkuYXR0cigiZGF0YS1uYW1lIixhK24pLGUuYXR0cigiZGF0YS1uYW1lIixhK24pLGUuZmluZCgiLm5hbWVfZG93bmxvYWQiKS52YWwoYStuKTt2YXIgbz1lLmF0dHIoImRhdGEtcGF0aCIpLnJlcGxhY2UoaSxhK24pO2UuYXR0cigiZGF0YS1wYXRoIixvKX0sYXBwbHlfZm9sZGVyX3JlbmFtZT1mdW5jdGlvbihlLGEpe2UuYXR0cigiZGF0YS1uYW1lIixhKSxlLmZpbmQoImZpZ3VyZSIpLmF0dHIoImRhdGEtbmFtZSIsYSk7dmFyIHQ9ZS5maW5kKCJoNCIpLmZpbmQoImEiKS50ZXh0KCk7ZS5maW5kKCJoNCA+IGEiKS50ZXh0KGEpO3ZhciByPWUuZmluZCgiLmZvbGRlci1saW5rIiksaT1yLmF0dHIoImhyZWYiKSxuPWpRdWVyeSgiI2ZsZHJfdmFsdWUiKS52YWwoKSxsPWkucmVwbGFjZSgiZmxkcj0iK24rZW5jb2RlVVJJQ29tcG9uZW50KHQpLCJmbGRyPSIrbitlbmNvZGVVUklDb21wb25lbnQoYSkpO3IuZWFjaChmdW5jdGlvbigpe2pRdWVyeSh0aGlzKS5hdHRyKCJocmVmIixsKX0pO3ZhciBvPWUuYXR0cigiZGF0YS1wYXRoIiksdT1vLmxhc3RJbmRleE9mKCIvIiksYz1vLnN1YnN0cigwLHUrMSkrYTtlLmF0dHIoImRhdGEtcGF0aCIsYyl9LHNob3dfYW5pbWF0aW9uPWZ1bmN0aW9uKCl7alF1ZXJ5KCIjbG9hZGluZ19jb250YWluZXIiKS5jc3MoImRpc3BsYXkiLCJibG9jayIpLGpRdWVyeSgiI2xvYWRpbmciKS5jc3MoIm9wYWNpdHkiLCIuNyIpfSxoaWRlX2FuaW1hdGlvbj1mdW5jdGlvbigpe2pRdWVyeSgiI2xvYWRpbmdfY29udGFpbmVyIikuZmFkZU91dCgpfX0oalF1ZXJ5LE1vZGVybml6cixpbWFnZV9lZGl0b3IpLGZ1bmN0aW9uKCl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHdpbmRvdy5DdXN0b21FdmVudClyZXR1cm47ZnVuY3Rpb24gZShlLGEpe2E9YXx8e2J1YmJsZXM6ITEsY2FuY2VsYWJsZTohMSxkZXRhaWw6dm9pZCAwfTt2YXIgdD1kb2N1bWVudC5jcmVhdGVFdmVudCgiQ3VzdG9tRXZlbnQiKTtyZXR1cm4gdC5pbml0Q3VzdG9tRXZlbnQoZSxhLmJ1YmJsZXMsYS5jYW5jZWxhYmxlLGEuZGV0YWlsKSx0fWUucHJvdG90eXBlPXdpbmRvdy5FdmVudC5wcm90b3R5cGUsd2luZG93LkN1c3RvbUV2ZW50PWV9KCk7]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/actionscript/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/actionscript/happyworm/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/actionscript/happyworm/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/actionscript/happyworm/jPlayer/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/actionscript/happyworm/jPlayer/ConnectManager.as</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoNCiAqIGpQbGF5ZXIgUGx1Z2luIGZvciBqUXVlcnkgSmF2YVNjcmlwdCBMaWJyYXJ5DQogKiBodHRwOi8vd3d3LmpwbGF5ZXIub3JnDQogKg0KICogQ29weXJpZ2h0IChjKSAyMDA5IC0gMjAxMyBIYXBweXdvcm0gTHRkDQogKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuDQogKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUDQogKg0KICogQXV0aG9yOiBSb2JlcnQgTS4gSGFsbA0KICogRGF0ZTogN3RoIEF1Z3VzdCAyMDEyDQogKiBDdXN0b20gTmV0Q29ubmVjdGlvbiBNYW5hZ2VyIGZvciBtb3JlIHJvYnVzdCBSVE1QIHN1cHBvcnQNCiAqIEJhc2VkIGluIHBhcnQgb24gd29yayBieSBXaWxsIExhdyBmb3IgdGhlIG9sZCBBa2FtYWkgTkNNYW5hZ2VyLmFzDQogKiBhbmQgc29tZSBvZiBXaWxsJ3MgbmV3IHdvcmsgaW4gdGhlIE9WUCBiYXNlIGNsYXNzZXMgKE9wZW4gVmlkZW8gUGxheWVyKQ0KICogYXMgd2VsbCBhcyBzaW1pbGFyIGFwcHJvYWNoZXMgYnkgbWFueSBvdGhlciBOZXRDb25uZWN0aW9uIG1hbmFnZXJzDQogKg0KICovDQogDQogLyogDQogVE9ETyBMSVNUIDA4LzE4LzIwMTE6DQogMS4gV2lyZWQgdXAgZXJyb3JzIHRvIGRpc3BhdGNoIGV2ZW50cyB0byBKcGxheWVyIGV2ZW50cyB0byBhbGxvdyB0aGVtIHRvIGJ1YmJsZSB1cCB0byBKUw0KIDIuIFJld29yayBldmVudCBkaXNwYXRjaCB0byBoYW5kb2ZmIG5ldGNvbm5lY3Rpb24gaW5zdGVhZCBvZiBhIHBhc3NlZCBpbiByZWZlcmVuY2UNCiAzLiBBbGxvdyBhIGN1c3RvbWl6ZWFibGUgbGlzdCBvZiBwcm90b2NvbHMgYW5kIHBvcnRzIHRvIGJlIHVzZWQgaW5zdGVhZCBvZiBlbnRpcmUgbGlzdA0KIDQuIEFsbG93IGEgc3BlY2lmaWMgcG9ydC9wcm90b2NvbCAoMSBjb25uZWN0IHR5cGUpIHRvIGJlIHVzZWQgZmlyc3QsIGFuZCB0aGVuIG9wdGlvbmFsbHkgZmFsbGJhY2sgb24gYSBjdXN0b20gbGlzdCBvciB0aGUgZGVmYXVsdCBsaXN0DQogNS4gUmVtb3ZlIHNvbWUgdHJhY2VzIGFuZCBjaGVjayBhIGZldyBvdGhlciBpdGVtcyBiZWxvdyB3aGVyZSBJJ3ZlIG1hZGUgbm90ZXMNCiAqLw0KDQpwYWNrYWdlIGhhcHB5d29ybS5qUGxheWVyIHsNCgkNCglpbXBvcnQgZmxhc2guZXZlbnRzLio7DQoJaW1wb3J0IGZsYXNoLm5ldC4qOw0KCQ0KCWltcG9ydCBmbGFzaC51dGlscy5UaW1lcjsNCglpbXBvcnQgZmxhc2gudXRpbHMuZ2V0VGltZXI7DQoJaW1wb3J0IGZsYXNoLnV0aWxzLmNsZWFySW50ZXJ2YWw7DQoJaW1wb3J0IGZsYXNoLnV0aWxzLnNldEludGVydmFsOw0KDQoJcHVibGljIGNsYXNzIENvbm5lY3RNYW5hZ2VyIGV4dGVuZHMgT2JqZWN0IHsNCgkJDQoJCXByaXZhdGUgdmFyIHByb3RvY29sc19hcnI6QXJyYXkgPSBuZXcgQXJyYXkoInJ0bXAiLCJydG1wdCIsInJ0bXBlIiwicnRtcHRlIiwicnRtcHMiKTsNCgkJcHJpdmF0ZSB2YXIgcG9ydHNfYXJyOkFycmF5ID0gbmV3IEFycmF5KCIiLCI6MTkzNSIsIjo4MCIsIjo0NDMiKTsNCgkJcHJpdmF0ZSBjb25zdCBwcm90Q291bnQ6TnVtYmVyID0gNTsNCgkJcHJpdmF0ZSBjb25zdCBwb3J0Q291bnQ6TnVtYmVyID0gNDsNCgkJDQoJCXByaXZhdGUgdmFyIF9uY1JlZjpPYmplY3Q7DQoJCQ0KCQlwcml2YXRlIHZhciBfYU5DOkFycmF5Ow0KDQoJCXByaXZhdGUgdmFyIGtfVElNRU9VVDpOdW1iZXIgPSAzMDAwMDsNCgkJcHJpdmF0ZSB2YXIga19zdGFydENvbm5zOk51bWJlcjsNCgkJcHJpdmF0ZSB2YXIgbV9jb25uTGlzdDpBcnJheSA9IFtdOw0KCQlwcml2YXRlIHZhciBtX3NlcnZlck5hbWU6U3RyaW5nOw0KCQlwcml2YXRlIHZhciBtX2FwcE5hbWU6U3RyaW5nOw0KCQlwcml2YXRlIHZhciBtX3N0cmVhbU5hbWU6U3RyaW5nOw0KCQlwcml2YXRlIHZhciBtX2Nvbm5MaXN0Q291bnRlcjpOdW1iZXI7DQoJCXByaXZhdGUgdmFyIG1fZmxhc2hDb21Db25uZWN0VGltZU91dDpOdW1iZXI7DQoJCXByaXZhdGUgdmFyIG1fdmFsaWROZXRDb25uZWN0aW9uOk5ldENvbm5lY3Rpb247DQoJCQ0KCQlwcml2YXRlIHZhciBjb25uZWN0U3VjY2VzczpCb29sZWFuPWZhbHNlOw0KCQkNCgkJcHJpdmF0ZSB2YXIgbmVnb3RpYXRpbmc6Qm9vbGVhbj1mYWxzZTsNCgkJcHJpdmF0ZSB2YXIgaWRsZVRpbWVPdXQ6Qm9vbGVhbj1mYWxzZTsNCg0KCQlwdWJsaWMgZnVuY3Rpb24gQ29ubmVjdE1hbmFnZXIoKSB7DQoJCQl0cmFjZSAoIkNvbm5lY3RNYW5hZ2VyIEluaXRpYWxpemVkIFZlcnNpb246IDEuMDAgRFQiKTsNCgkJCWNyZWF0ZVBvcnRzUHJvdG9jb2xzQXJyYXkoKTsNCgkJfQ0KCQkNCgkJcHJpdmF0ZSBmdW5jdGlvbiBjcmVhdGVQb3J0c1Byb3RvY29sc0FycmF5KCk6dm9pZCB7DQoJCXZhciBvdXRlckxvb3A6TnVtYmVyPTA7DQoJCXZhciBpbm5lckxvb3A6TnVtYmVyPTA7DQoJCQlmb3IgKG91dGVyTG9vcD0wOyBvdXRlckxvb3A8cHJvdG9jb2xzX2Fyci5sZW5ndGg7IG91dGVyTG9vcCsrKSB7DQoJCQkJDQoJCQkJZm9yIChpbm5lckxvb3A9MDsgaW5uZXJMb29wPHBvcnRzX2Fyci5sZW5ndGg7IGlubmVyTG9vcCsrKSB7DQoJCQkJCW1fY29ubkxpc3QucHVzaCggeyBwcm90b2NvbDogcHJvdG9jb2xzX2FycltvdXRlckxvb3BdLCBwb3J0OiBwb3J0c19hcnJbaW5uZXJMb29wXSB9ICk7DQoJCQkJfQ0KCQkJCQ0KCQkJfQkJDQoJCX0NCgkJDQoJCXB1YmxpYyBmdW5jdGlvbiBuZWdvdGlhdGVDb25uZWN0KG5jUmVmOk9iamVjdCxwX3NlcnZlck5hbWU6U3RyaW5nLHBfYXBwTmFtZTpTdHJpbmcpOnZvaWQNCgkJew0KCQkJbmVnb3RpYXRpbmc9dHJ1ZTsNCgkJCV9uY1JlZj1uY1JlZjsNCgkJCXRyYWNlKCIqKiogU0VSVkVSIE5BTUU6ICIrcF9zZXJ2ZXJOYW1lKTsNCgkJCXRyYWNlKCIqKiogQVBQIE5BTUU6ICIrcF9zZXJ2ZXJOYW1lKTsNCgkJCWtfc3RhcnRDb25ucyA9IGdldFRpbWVyKCk7DQoJCQltX3NlcnZlck5hbWUgPSBwX3NlcnZlck5hbWU7DQoJCQltX2FwcE5hbWUgPSBwX2FwcE5hbWU7DQoJCQ0KCQkJLy8gU2V0IGEgdGltZW91dCBmdW5jdGlvbiwganVzdCBpbiBjYXNlIHdlIG5ldmVyIGNvbm5lY3Qgc3VjY2Vzc2Z1bGx5DQoJCQljbGVhckludGVydmFsKG1fZmxhc2hDb21Db25uZWN0VGltZU91dCk7DQoJCQltX2ZsYXNoQ29tQ29ubmVjdFRpbWVPdXQgPSBzZXRJbnRlcnZhbChvbkZsYXNoQ29tQ29ubmVjdFRpbWVPdXQsa19USU1FT1VULGtfVElNRU9VVCk7DQoJCQkNCgkJCS8vIENyZWF0ZWUgYSBOZXRDb25uZWN0aW9uIGZvciBlYWNoIG9mIHRoZSBwcm90b2NvbHMvcG9ydHMgbGlzdGVkIGluIHRoZSBtX2Nvbm5MaXN0IGxpc3QuDQoJCQkvLyBDb25uZWN0aW9uIGF0dGVtcHRzIG9jY3VyIGF0IGludGVydmFscyBvZiAxLjUgc2Vjb25kcy4gDQoJCQkvLyBUaGUgZmlyc3QgY29ubmVjdGlvbiB0byBzdWNjZWVkIHdpbGwgYmUgdXNlZCwgYWxsIHRoZSBvdGhlcnMgd2lsbCBiZSBjbG9zZWQuDQoJCQlfYU5DID0gbmV3IEFycmF5KCk7DQoJCQlmb3IgKHZhciBpOnVpbnQgPSAwOyBpIDwgbV9jb25uTGlzdC5sZW5ndGg7IGkrKykNCgkJCXsNCgkJCQlfYU5DW2ldID0gbmV3IE5ldENvbm5lY3Rpb24oKTsNCgkJCQlfYU5DW2ldLmFkZEV2ZW50TGlzdGVuZXIoTmV0U3RhdHVzRXZlbnQuTkVUX1NUQVRVUyxuZXRTdGF0dXMpOw0KCQkJCV9hTkNbaV0uYWRkRXZlbnRMaXN0ZW5lcihTZWN1cml0eUVycm9yRXZlbnQuU0VDVVJJVFlfRVJST1IsbmV0U2VjdXJpdHlFcnJvcik7DQoJCQkJX2FOQ1tpXS5hZGRFdmVudExpc3RlbmVyKEFzeW5jRXJyb3JFdmVudC5BU1lOQ19FUlJPUixhc3luY0Vycm9yKTsgICAgICANCgkJCQlfYU5DW2ldLmNsaWVudCA9IG5ldyBPYmplY3Q7DQoJCQkJX2FOQ1tpXS5jbGllbnQub3duZXIgPSB0aGlzOw0KCQkJCV9hTkNbaV0uY2xpZW50LmNvbm5JbmRleCA9IGk7DQoJCQkJX2FOQ1tpXS5jbGllbnQuaWQgPSBpOw0KCQkJCV9hTkNbaV0uY2xpZW50LnBlbmRpbmcgPSB0cnVlOw0KCQkJCQ0KCQkJCS8qIFJldmlzaXQgdGhpcyBjaHVuayAtIG5vdCBuZWVkZWQgYXQgdGhlIG1vbWVudCBhcyBOQyBpcyBoYW5kZWQgb2ZmIGFuZCB0aGlzIA0KCQkJCS8vIGlzIGhhbmRsZWQgZWxzZXdoZXJlDQoJCQkJLy8gTmVlZCB0byBwdXQgaW4gc29tZSBldmVudCBkaXNwYXRjaGluZyBhcyBhIG1vcmUgZWxlZ2FudCBzb2x1dGlvbiBhbmQgbGVhdmUgaXQgaGVyZQ0KCQkJCQ0KCQkJCV9hTkNbaV0uY2xpZW50Lm9uQldEb25lID0gZnVuY3Rpb24gKHBfYncsIGRlbHRhRG93biwgZGVsdGFUaW1lLCBsYXRlbmN5KSB7DQoJCQkJCS8vdGhpcy5vd25lci5kaXNwYXRjaEV2ZW50ICh7dHlwZToibmNCYW5kV2lkdGgiLCBrYnBzOnBfYncsIGxhdGVuY3k6bGF0ZW5jeX0pOw0KCQkJCX07DQoNCgkJCQlfYU5DW2ldLmNsaWVudC5vbkJXQ2hlY2sgPSBmdW5jdGlvbiAoY291bnRlcikgew0KCQkJCQlyZXR1cm4gKytjb3VudGVyOw0KCQkJCX07DQoNCgkJCQlfYU5DW2ldLmNsaWVudC5vblN0YXR1cyA9IGZ1bmN0aW9uIChpbmZvKSB7DQoJCQkJCS8vDQoJCQkJfTsNCgkJCQkqLw0KCQkJCQ0KCQkJfQ0KCQkJbV9jb25uTGlzdENvdW50ZXIgPSAwOw0KCQkJbmV4dENvbm5lY3QgKCk7DQoJCX0NCgkJDQoJCXByaXZhdGUgZnVuY3Rpb24gbmV4dENvbm5lY3QoKTp2b2lkDQoJCXsNCgkJCXRyYWNlKCIqKiogQ29ubmVjdGlvbjogIisgbV9jb25uTGlzdENvdW50ZXIgKyAiOiAiK21fY29ubkxpc3RbbV9jb25uTGlzdENvdW50ZXJdLnByb3RvY29sICsgIjovLyIgKyBtX3NlcnZlck5hbWUgKyBtX2Nvbm5MaXN0W21fY29ubkxpc3RDb3VudGVyXS5wb3J0ICsgIi8iICsgbV9hcHBOYW1lKTsNCg0KCQkJdHJ5IHsNCgkJCQlfYU5DW21fY29ubkxpc3RDb3VudGVyXS5jb25uZWN0KG1fY29ubkxpc3RbbV9jb25uTGlzdENvdW50ZXJdLnByb3RvY29sICsgIjovLyIgKyBtX3NlcnZlck5hbWUgKyBtX2Nvbm5MaXN0W21fY29ubkxpc3RDb3VudGVyXS5wb3J0ICsgIi8iICsgbV9hcHBOYW1lKTsNCg0KCQkJfSBjYXRjaCAoZXJyb3I6RXJyb3IpIHsNCgkJCQkvLyBzdGF0ZW1lbnRzDQoJCQkJdHJhY2UoIioqKiBDYXVnaHQgYW4gZXJyb3IgY29uZGl0aW9uOiAiK2Vycm9yKTsNCgkJCQltX2Nvbm5MaXN0Q291bnRlciA9IG1fY29ubkxpc3QubGVuZ3RoKzE7DQoJCQl9DQoJCQkvLyBzdGF0ZW1lbnRzDQoJCQkJY2xlYXJJbnRlcnZhbChfYU5DWyJuY0ludCIgKyBtX2Nvbm5MaXN0Q291bnRlcl0pOw0KDQoJCQlpZiAoKG1fY29ubkxpc3RDb3VudGVyIDwgbV9jb25uTGlzdC5sZW5ndGggLSAxKSkNCgkJCXsNCgkJCQltX2Nvbm5MaXN0Q291bnRlcisrOw0KCQkJCV9hTkNbIm5jSW50IiArIG1fY29ubkxpc3RDb3VudGVyXSA9IHNldEludGVydmFsKG5leHRDb25uZWN0LDE1MDApOw0KCQkJfQ0KDQoJCX0NCgkJDQoJCS8vIENsZWFucyB1cCBhbGwgY29ubmVjdGlvbnMgaWYgbm9uZSBoYXZlIHN1Y2NlZWRlZCBieSB0aGUgdGltZW91dCBpbnRlcnZhbA0KCQlwcml2YXRlIGZ1bmN0aW9uIG9uRmxhc2hDb21Db25uZWN0VGltZU91dCh0aW1lb3V0Ok51bWJlcik6dm9pZA0KCQl7DQoJCQlzdG9wQWxsKCk7DQoJCX0NCgkJDQoJCXByaXZhdGUgZnVuY3Rpb24gaGFuZGxlR29vZENvbm5lY3QoX25jOk5ldENvbm5lY3Rpb24pOnZvaWQgew0KCQkJbmVnb3RpYXRpbmc9ZmFsc2U7DQoJCQl0cmFjZSgiSGFuZGluZyBPRkYgTmV0Q29ubmVjdGlvbiIpOw0KCQkJY2xlYXJJbnRlcnZhbChtX2ZsYXNoQ29tQ29ubmVjdFRpbWVPdXQpOw0KCQkJX25jUmVmLmNvbm5lY3RTdHJlYW0oKTsNCgkJCV9uY1JlZi5vbkJXRG9uZShudWxsLF9uYyk7DQoJCQkvL2Rpc3BhdGNoRXZlbnQoZXZlbnQpOw0KCQkJLy8gTmVlZCB0byBlbmFibGUgYW5kIHBhc3MgdG8gSnBsYXllciBldmVudCBzeXN0ZW0tIHJldmlzaXQNCgkJCS8vIHJpZ2h0IG5vdyBoYW5kaW5nIGJhY2sgYSBoYXJkY29kZWQgcmVmZXJlbmNlIHRoYXQgaXMgcGFzc2VkIGluDQoJCQkvLyBTaG91bGQgY29tZSB1cCB3aXRoIGEgbW9yZSBsb29zZWx5IGNvdXBsZWQgd2F5IHZpYSBldmVudCBkaXNwYXRjaA0KDQoJCX0NCgkJDQoJCXB1YmxpYyBmdW5jdGlvbiBnZXROZWdvdGlhdGluZygpOkJvb2xlYW4gew0KCQkJcmV0dXJuIG5lZ290aWF0aW5nOw0KCQl9DQoJCQ0KCQlwdWJsaWMgZnVuY3Rpb24gc2V0TmVnb3RpYXRpbmcoYm9vbDpCb29sZWFuKTp2b2lkIHsNCgkJCW5lZ290aWF0aW5nPWJvb2w7DQoJCX0NCgkJDQoJCQ0KCQlwdWJsaWMgZnVuY3Rpb24gc3RvcEFsbChib29sOkJvb2xlYW49ZmFsc2UpOnZvaWQgew0KCQkJDQoJCQkvL3RoaXMuZGlzcGF0Y2hFdmVudCAoe3R5cGU6Im5jRmFpbGVkVG9Db25uZWN0IiwgdGltZW91dDp0aW1lb3V0fSk7DQoJCQkvLyBOZWVkIHRvIGVuYWJsZSBhbmQgcGFzcyB0byBKcGxheWVyIGV2ZW50IHN5c3RlbS0gcmV2aXNpdA0KCQkJLy8gdHJhY2UoX2FOQysiOiIrbV9mbGFzaENvbUNvbm5lY3RUaW1lT3V0KyI6IittX2Nvbm5MaXN0Lmxlbmd0aCkNCgkJCWlmKF9hTkMhPW51bGwgJiYgIWlzTmFOKG1fZmxhc2hDb21Db25uZWN0VGltZU91dCkgKSB7DQoJCQkJY2xlYXJJbnRlcnZhbChtX2ZsYXNoQ29tQ29ubmVjdFRpbWVPdXQpOw0KCQkJZm9yICh2YXIgaTp1aW50ID0gMDsgaSA8IG1fY29ubkxpc3QubGVuZ3RoOyBpKyspDQoJCQl7DQoJCQkJaWYgKF9hTkNbaV0hPW51bGwpDQoJCQkJew0KCQkJCQljbGVhckludGVydmFsKF9hTkNbIm5jSW50IiArIGldKTsNCgkJCQkJX2FOQ1tpXS5jbG9zZSgpOw0KCQkJCQlpZihib29sPT1mYWxzZSkgew0KCQkJCQkJX2FOQ1tpXS5jbGllbnQgPSBudWxsOw0KCQkJCQl9DQoJCQkJCV9hTkNbaV0gPSBudWxsOw0KCQkJCQlkZWxldGUgX2FOQ1tpXTsNCgkJCQl9DQoJCQl9DQoJCQl9DQoJCQkJCQkNCgkJfQ0KCQkNCgkJDQoJCXByaXZhdGUgZnVuY3Rpb24gbmV0U3RhdHVzKGV2ZW50Ok5ldFN0YXR1c0V2ZW50KTp2b2lkIHsNCgkJCQ0KCQkJdHJhY2UoZXZlbnQuaW5mby5jb2RlKTsNCgkJCWlmKGV2ZW50LmluZm8uZGVzY3JpcHRpb24gIT0gdW5kZWZpbmVkKSB7DQoJCQkJdHJhY2UoZXZlbnQuaW5mby5kZXNjcmlwdGlvbik7DQoJCQl9DQoJCQlfYU5DW2V2ZW50LnRhcmdldC5jbGllbnQuaWRdLmNsaWVudC5wZW5kaW5nID0gdHJ1ZTsNCgkJCQ0KCQkJCS8vIHRoaXMub3duZXIubV92YWxpZE5ldENvbm5lY3Rpb24gPSB0aGlzLmNsaWVudC5vd25lclt0aGlzLmNsaWVudC5jb25uSW5kZXhdOw0KCQkJCS8vIGlmIChpbmZvLmRlc2NyaXB0aW9uID09ICJbIExpY2Vuc2UuTGltaXQuRXhjZWVkZWQgXSIpIHsNCg0KCQkJCXN3aXRjaCAoZXZlbnQuaW5mby5jb2RlKSB7DQoJCQkJCWNhc2UgIk5ldENvbm5lY3Rpb24uQ29ubmVjdC5JZGxlVGltZU91dCI6DQoJCQkJCXRyYWNlKCJJRExFIFRJTUVPVVQgT0NDVVJSRUQhIikNCgkJCQkJbmVnb3RpYXRpbmc9dHJ1ZTsNCgkJCQkJaWRsZVRpbWVPdXQ9dHJ1ZTsNCgkJCQkJX25jUmVmLnNodXREb3duTmNOcygpOw0KCQkJCQlicmVhazsNCgkJCQljYXNlICJOZXRDb25uZWN0aW9uLkNvbm5lY3QuQ2xvc2VkIjoNCgkJCQkJaWYoIW5lZ290aWF0aW5nICYmICFpZGxlVGltZU91dCkgew0KCQkJCQkJaWRsZVRpbWVPdXQgPSBmYWxzZTsNCgkJCQkJCV9uY1JlZi5kb25lWWV0KCk7DQoJCQkJCX0NCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAiTmV0Q29ubmVjdGlvbi5Db25uZWN0LkludmFsaWRBcHAiOg0KCQkJCWNhc2UgIk5ldENvbm5lY3Rpb24uQ29ubmVjdC5SZWplY3RlZCI6DQoJCQkJCS8vaGFuZGxlUmVqZWN0ZWRPckludmFsaWQoZXZlbnQpIA0KICAgIAkJCQlicmVhazsNCgkJCQljYXNlICJOZXRDb25uZWN0aW9uLkNhbGwuRmFpbGVkIjoNCgkJCQkJLyoNCgkJCQkJaWYgKGV2ZW50LmluZm8uZGVzY3JpcHRpb24uaW5kZXhPZigiX2NoZWNrYnciKSAhPSAtMSkgew0KCQkJCQkJZXZlbnQudGFyZ2V0LmV4cGVjdEJXRG9uZSA9IHRydWU7DQoJCQkJCQlldmVudC50YXJnZXQuY2FsbCgiY2hlY2tCYW5kd2lkdGgiLG51bGwpOw0KCQkJCQl9DQoJCQkJCSovDQoJCQkJCWJyZWFrOw0KCQkJCQljYXNlICJOZXRDb25uZWN0aW9uLkNvbm5lY3QuU3VjY2VzcyI6DQoJCQkJCQl2YXIgaTp1aW50PTA7DQoJCQkJCQlmb3IgKCBpID0gMDsgaTxfYU5DLmxlbmd0aDsgaSsrKSB7DQoJCQkJCQlpZiAoX2FOQ1tpXSAmJiAoaSAhPSBldmVudC50YXJnZXQuY2xpZW50LmlkKSkgew0KCQkJCQkJCV9hTkNbaV0uY2xvc2UoKTsNCgkJCQkJCQlfYU5DW2ldID0gbnVsbDsNCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCQl2YXIgX25jOk5ldENvbm5lY3Rpb24gPSBOZXRDb25uZWN0aW9uKGV2ZW50LnRhcmdldCk7DQoJCQkJCXZhciBjb25uSUQ6TnVtYmVyID0gZXZlbnQudGFyZ2V0LmNsaWVudC5pZDsNCgkJCQkJdmFyIF9hY3R1YWxQb3J0OlN0cmluZyA9IG1fY29ubkxpc3RbbV9jb25uTGlzdENvdW50ZXJdLnBvcnQ7DQoJCQkJCXZhciBfYWN0dWFsUHJvdG9jb2w6U3RyaW5nID0gbV9jb25uTGlzdFttX2Nvbm5MaXN0Q291bnRlcl0ucHJvdG9jb2w7DQoJCQkJCQkJCQkJCQkJCQkNCgkJCQkJLy8gU2VlIGlmIHdlIGhhdmUgdmVyc2lvbiBpbmZvDQoJCQkJCXZhciBfc2VydmVyVmVyc2lvbjpTdHJpbmcgPSAiVU5LTk9XTiI7DQoJCQkJCWlmIChldmVudC5pbmZvLmRhdGEgJiYgZXZlbnQuaW5mby5kYXRhLnZlcnNpb24pIHsNCgkJCQkJCV9zZXJ2ZXJWZXJzaW9uID0gZXZlbnQuaW5mby5kYXRhLnZlcnNpb247DQoJCQkJCX0NCgkJCQkJdHJhY2UoIkNvbm5lY3QgSUQ6ICIrY29ubklEKyIgLSBQT1JUOiAiK19hY3R1YWxQb3J0KyIgLSBQUk9UT0NPTDogIitfYWN0dWFsUHJvdG9jb2wrIiAtIEZNUyBWZXJzaW9uOiAiK19zZXJ2ZXJWZXJzaW9uKTsNCgkJCQkJDQoJCQkJCWNsZWFySW50ZXJ2YWwoX2FOQ1sibmNJbnQiICsgY29ubklEXSk7DQoJCQkJCWNsZWFySW50ZXJ2YWwoX2FOQ1sibmNJbnQiICsgbV9jb25uTGlzdENvdW50ZXJdKTsNCg0KCQkJCQloYW5kbGVHb29kQ29ubmVjdChfbmMpOw0KCQkJCQlicmVhazsNCgkJCQl9DQoJCX0NCgkJCQkJCQ0KDQoJCS8qKiBDYXRjaGVzIGFueSBuZXRjb25uZWN0aW9uIG5ldCBzZWN1cml0eSBlcnJvcnMNCgkJICogQHByaXZhdGUNCgkJICovDQoJCXByaXZhdGUgZnVuY3Rpb24gbmV0U2VjdXJpdHlFcnJvcihldmVudDpTZWN1cml0eUVycm9yRXZlbnQpOnZvaWQgew0KCQkJdHJhY2UoIlNFQ1VSSVRZIEVSUk9SOiIrZXZlbnQpOw0KCQkJLy9kaXNwYXRjaEV2ZW50KGV2ZW50KTsNCgkJCS8vIE5lZWQgdG8gZW5hYmxlIGFuZCBwYXNzIHRvIEpwbGF5ZXIgZXZlbnQgc3lzdGVtLSByZXZpc2l0DQogICAgCX0NCiAgICAJDQogICAgCS8qKiBDYXRjaGVzIGFueSBhc3luYyBlcnJvcnMNCiAgICAJICogQHByaXZhdGUNCiAgICAJICovDQoJCXByaXZhdGUgZnVuY3Rpb24gYXN5bmNFcnJvcihldmVudDpBc3luY0Vycm9yRXZlbnQpOnZvaWQgew0KCQkJdHJhY2UoIkFTWU5DIEVSUk9SOiIrZXZlbnQuZXJyb3IpOw0KCQkJLy9kaXNwYXRjaEV2ZW50KGV2ZW50KTsNCgkJCS8vIE5lZWQgdG8gZW5hYmxlIGFuZCBwYXNzIHRvIEpwbGF5ZXIgZXZlbnQgc3lzdGVtLSByZXZpc2l0DQogICAgCX0NCgkJDQoJCQ0KDQoJfS8vIGNsYXNzDQoJDQp9IC8vcGFja2FnZQ0K]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/actionscript/happyworm/jPlayer/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/actionscript/happyworm/jPlayer/JplayerEvent.as</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogalBsYXllciBQbHVnaW4gZm9yIGpRdWVyeSBKYXZhU2NyaXB0IExpYnJhcnkKICogaHR0cDovL3d3dy5qcGxheWVyLm9yZwogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDkgLSAyMDEzIEhhcHB5d29ybSBMdGQKICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLgogKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUCiAqCiAqIEF1dGhvcjogTWFyayBKIFBhbmFnaGlzdG9uCiAqIERhdGU6IDIwdGggTWF5IDIwMTMKICovCgpwYWNrYWdlIGhhcHB5d29ybS5qUGxheWVyIHsKCWltcG9ydCBmbGFzaC5ldmVudHMuRXZlbnQ7CgkKCXB1YmxpYyBjbGFzcyBKcGxheWVyRXZlbnQgZXh0ZW5kcyBFdmVudCB7CgkJCgkJLy8gVGhlIGV2ZW50IHN0cmluZ3MgbXVzdCBtYXRjaCB0aG9zZSBpbiB0aGUgSmF2YVNjcmlwdCdzICQualBsYXllci5ldmVudCBvYmplY3QKCgkJcHVibGljIHN0YXRpYyBjb25zdCBKUExBWUVSX1JFQURZOlN0cmluZyA9ICJqUGxheWVyX3JlYWR5IjsKCQlwdWJsaWMgc3RhdGljIGNvbnN0IEpQTEFZRVJfRkxBU0hSRVNFVDpTdHJpbmcgPSAialBsYXllcl9mbGFzaHJlc2V0IjsgLy8gSGFuZGxlZCBpbiBKYXZhU2NyaXB0CgkJcHVibGljIHN0YXRpYyBjb25zdCBKUExBWUVSX1JFU0laRTpTdHJpbmcgPSAialBsYXllcl9yZXNpemUiOyAvLyBIYW5kbGVkIGluIEphdmFTY3JpcHQKCQlwdWJsaWMgc3RhdGljIGNvbnN0IEpQTEFZRVJfUkVQRUFUOlN0cmluZyA9ICJqUGxheWVyX3JlcGVhdCI7IC8vIEhhbmRsZWQgaW4gSmF2YVNjcmlwdAoJCXB1YmxpYyBzdGF0aWMgY29uc3QgSlBMQVlFUl9DTElDSzpTdHJpbmcgPSAialBsYXllcl9jbGljayI7CgkJcHVibGljIHN0YXRpYyBjb25zdCBKUExBWUVSX0VSUk9SOlN0cmluZyA9ICJqUGxheWVyX2Vycm9yIjsKCQlwdWJsaWMgc3RhdGljIGNvbnN0IEpQTEFZRVJfV0FSTklORzpTdHJpbmcgPSAialBsYXllcl93YXJuaW5nIjsgLy8gQ3VycmVudGx5IG5vdCB1c2VkIGJ5IHRoZSBmbGFzaCBzb2x1dGlvbgoKCQlwdWJsaWMgc3RhdGljIGNvbnN0IEpQTEFZRVJfTE9BRFNUQVJUOlN0cmluZyA9ICJqUGxheWVyX2xvYWRzdGFydCI7CgkJcHVibGljIHN0YXRpYyBjb25zdCBKUExBWUVSX1BST0dSRVNTOlN0cmluZyA9ICJqUGxheWVyX3Byb2dyZXNzIjsKCQlwdWJsaWMgc3RhdGljIGNvbnN0IEpQTEFZRVJfU1VTUEVORDpTdHJpbmcgPSAialBsYXllcl9zdXNwZW5kIjsgLy8gTm90IGltcGxlbWVudGVkCgkJcHVibGljIHN0YXRpYyBjb25zdCBKUExBWUVSX0FCT1JUOlN0cmluZyA9ICJqUGxheWVyX2Fib3J0IjsgLy8gTm90IGltcGxlbWVudGVkCgkJcHVibGljIHN0YXRpYyBjb25zdCBKUExBWUVSX0VNUFRJRUQ6U3RyaW5nID0gImpQbGF5ZXJfZW1wdGllZCI7IC8vIE5vdCBpbXBsZW1lbnRlZAoJCXB1YmxpYyBzdGF0aWMgY29uc3QgSlBMQVlFUl9TVEFMTEVEOlN0cmluZyA9ICJqUGxheWVyX3N0YWxsZWQiOyAvLyBOb3QgaW1wbGVtZW50ZWQKCQlwdWJsaWMgc3RhdGljIGNvbnN0IEpQTEFZRVJfUExBWTpTdHJpbmcgPSAialBsYXllcl9wbGF5IjsKCQlwdWJsaWMgc3RhdGljIGNvbnN0IEpQTEFZRVJfUEFVU0U6U3RyaW5nID0gImpQbGF5ZXJfcGF1c2UiOwoJCXB1YmxpYyBzdGF0aWMgY29uc3QgSlBMQVlFUl9MT0FERURNRVRBREFUQTpTdHJpbmcgPSAialBsYXllcl9sb2FkZWRtZXRhZGF0YSI7IC8vIE1QMyBoYXMgbm8gZXF1aXZpbGVudAoJCXB1YmxpYyBzdGF0aWMgY29uc3QgSlBMQVlFUl9MT0FERUREQVRBOlN0cmluZyA9ICJqUGxheWVyX2xvYWRlZGRhdGEiOyAvLyBOb3QgaW1wbGVtZW50ZWQKCQlwdWJsaWMgc3RhdGljIGNvbnN0IEpQTEFZRVJfV0FJVElORzpTdHJpbmcgPSAialBsYXllcl93YWl0aW5nIjsgLy8gTm90IGltcGxlbWVudGVkIChEb25lIGluOiBNUDMpCgkJcHVibGljIHN0YXRpYyBjb25zdCBKUExBWUVSX1BMQVlJTkc6U3RyaW5nID0gImpQbGF5ZXJfcGxheWluZyI7IC8vIE5vdCBpbXBsZW1lbnRlZCAoRG9uZSBpbjogTVAzKQoJCXB1YmxpYyBzdGF0aWMgY29uc3QgSlBMQVlFUl9DQU5QTEFZOlN0cmluZyA9ICJqUGxheWVyX2NhbnBsYXkiOyAvLyBOb3QgaW1wbGVtZW50ZWQgKERvbmUgaW46IE1QMykKCQlwdWJsaWMgc3RhdGljIGNvbnN0IEpQTEFZRVJfQ0FOUExBWVRIUk9VR0g6U3RyaW5nID0gImpQbGF5ZXJfY2FucGxheXRocm91Z2giOyAvLyBOb3QgaW1wbGVtZW50ZWQgKERvbmUgaW46IE1QMykKCQlwdWJsaWMgc3RhdGljIGNvbnN0IEpQTEFZRVJfU0VFS0lORzpTdHJpbmcgPSAialBsYXllcl9zZWVraW5nIjsKCQlwdWJsaWMgc3RhdGljIGNvbnN0IEpQTEFZRVJfU0VFS0VEOlN0cmluZyA9ICJqUGxheWVyX3NlZWtlZCI7CgkJcHVibGljIHN0YXRpYyBjb25zdCBKUExBWUVSX1RJTUVVUERBVEU6U3RyaW5nID0gImpQbGF5ZXJfdGltZXVwZGF0ZSI7CgkJcHVibGljIHN0YXRpYyBjb25zdCBKUExBWUVSX0VOREVEOlN0cmluZyA9ICJqUGxheWVyX2VuZGVkIjsKCQlwdWJsaWMgc3RhdGljIGNvbnN0IEpQTEFZRVJfUkFURUNIQU5HRTpTdHJpbmcgPSAialBsYXllcl9yYXRlY2hhbmdlIjsgLy8gTm90IGltcGxlbWVudGVkCgkJcHVibGljIHN0YXRpYyBjb25zdCBKUExBWUVSX0RVUkFUSU9OQ0hBTkdFOlN0cmluZyA9ICJqUGxheWVyX2R1cmF0aW9uY2hhbmdlIjsgLy8gTm90IGltcGxlbWVudGVkCgkJcHVibGljIHN0YXRpYyBjb25zdCBKUExBWUVSX1ZPTFVNRUNIQU5HRTpTdHJpbmcgPSAialBsYXllcl92b2x1bWVjaGFuZ2UiOyAvLyBTZWUgSmF2YVNjcmlwdAoKCQkvLyBFdmVudHMgdXNlZCBpbnRlcm5hbCB0byBqUGxheWVyJ3MgRmxhc2guCgkJcHVibGljIHN0YXRpYyBjb25zdCBERUJVR19NU0c6U3RyaW5nID0gImRlYnVnX21zZyI7CgoJCXB1YmxpYyB2YXIgZGF0YTpKcGxheWVyU3RhdHVzOwoJCXB1YmxpYyB2YXIgbXNnOlN0cmluZyA9ICIiOwoKCQlwdWJsaWMgZnVuY3Rpb24gSnBsYXllckV2ZW50KHR5cGU6U3RyaW5nLCBkYXRhOkpwbGF5ZXJTdGF0dXMsIG1zZzpTdHJpbmcgPSAiIiwgYnViYmxlczpCb29sZWFuID0gZmFsc2UsIGNhbmNlbGFibGU6Qm9vbGVhbiA9IGZhbHNlKSB7CgkJCXN1cGVyKHR5cGUsIGJ1YmJsZXMsIGNhbmNlbGFibGUpOwoJCQl0aGlzLmRhdGEgPSBkYXRhOwoJCQl0aGlzLm1zZyA9IG1zZzsKCQl9CgkJcHVibGljIG92ZXJyaWRlIGZ1bmN0aW9uIGNsb25lKCk6RXZlbnQgewoJCQlyZXR1cm4gbmV3IEpwbGF5ZXJFdmVudCh0eXBlLCBkYXRhLCBtc2csIGJ1YmJsZXMsIGNhbmNlbGFibGUpOwoJCX0KCQlwdWJsaWMgb3ZlcnJpZGUgZnVuY3Rpb24gdG9TdHJpbmcoKTpTdHJpbmcgewoJCQlyZXR1cm4gZm9ybWF0VG9TdHJpbmcoIkpwbGF5ZXJFdmVudCIsICJ0eXBlIiwgImJ1YmJsZXMiLCAiY2FuY2VsYWJsZSIsICJldmVudFBoYXNlIiwgImRhdGEiLCAibXNnIik7CgkJfQoJfQp9]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/actionscript/happyworm/jPlayer/JplayerMp3.as</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogalBsYXllciBQbHVnaW4gZm9yIGpRdWVyeSBKYXZhU2NyaXB0IExpYnJhcnkKICogaHR0cDovL3d3dy5qcGxheWVyLm9yZwogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDkgLSAyMDEzIEhhcHB5d29ybSBMdGQKICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLgogKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUCiAqCiAqIEF1dGhvcjogTWFyayBKIFBhbmFnaGlzdG9uCiAqIERhdGU6IDI4dGggTWF5IDIwMTMKICovCgpwYWNrYWdlIGhhcHB5d29ybS5qUGxheWVyIHsKCWltcG9ydCBmbGFzaC5kaXNwbGF5LlNwcml0ZTsKCglpbXBvcnQgZmxhc2gubWVkaWEuU291bmQ7CglpbXBvcnQgZmxhc2gubWVkaWEuU291bmRDaGFubmVsOwoJaW1wb3J0IGZsYXNoLm1lZGlhLlNvdW5kTG9hZGVyQ29udGV4dDsKCWltcG9ydCBmbGFzaC5tZWRpYS5Tb3VuZFRyYW5zZm9ybTsKCWltcG9ydCBmbGFzaC5uZXQuVVJMUmVxdWVzdDsKCWltcG9ydCBmbGFzaC51dGlscy5UaW1lcjsKCWltcG9ydCBmbGFzaC5lcnJvcnMuSU9FcnJvcjsKCWltcG9ydCBmbGFzaC5ldmVudHMuKjsKCglwdWJsaWMgY2xhc3MgSnBsYXllck1wMyBleHRlbmRzIFNwcml0ZSB7CgkJcHJpdmF0ZSB2YXIgbXlTb3VuZDpTb3VuZCA9IG5ldyBTb3VuZCgpOwoJCXByaXZhdGUgdmFyIG15Q2hhbm5lbDpTb3VuZENoYW5uZWwgPSBuZXcgU291bmRDaGFubmVsKCk7CgkJcHJpdmF0ZSB2YXIgbXlDb250ZXh0OlNvdW5kTG9hZGVyQ29udGV4dCA9IG5ldyBTb3VuZExvYWRlckNvbnRleHQoMzAwMCwgZmFsc2UpOwoJCXByaXZhdGUgdmFyIG15VHJhbnNmb3JtOlNvdW5kVHJhbnNmb3JtID0gbmV3IFNvdW5kVHJhbnNmb3JtKCk7CgkJcHJpdmF0ZSB2YXIgbXlSZXF1ZXN0OlVSTFJlcXVlc3QgPSBuZXcgVVJMUmVxdWVzdCgpOwoKCQlwcml2YXRlIHZhciB0aW1lVXBkYXRlVGltZXI6VGltZXIgPSBuZXcgVGltZXIoMjUwLCAwKTsgLy8gTWF0Y2hlZCB0byBIVE1MIGV2ZW50IGZyZXEKCQlwcml2YXRlIHZhciBwcm9ncmVzc1RpbWVyOlRpbWVyID0gbmV3IFRpbWVyKDI1MCwgMCk7IC8vIE1hdGNoZWQgdG8gSFRNTCBldmVudCBmcmVxCgkJcHJpdmF0ZSB2YXIgc2Vla2luZ1RpbWVyOlRpbWVyID0gbmV3IFRpbWVyKDEwMCwgMCk7IC8vIEludGVybmFsOiBIb3cgb2Z0ZW4gc2Vla2luZyBpcyBjaGVja2VkIHRvIHNlZSBpZiBpdCBpcyBvdmVyLgoJCXByaXZhdGUgdmFyIHBsYXlpbmdUaW1lcjpUaW1lciA9IG5ldyBUaW1lcigxMDAsIDApOyAvLyBJbnRlcm5hbDogSG93IG9mdGVuIHdhaXRpbmcvcGxheWluZyBpcyBjaGVja2VkLgoJCXByaXZhdGUgdmFyIHdhaXRpbmdUaW1lcjpUaW1lciA9IG5ldyBUaW1lcigzMDAwLCAwKTsgLy8gSW50ZXJuYWw6IENoZWNrIGZyb20gbG9hZHN0YXJ0IHRvIGxvYWRPcGVuLiBHZW5lcmF0ZXMgYSB3YWl0aW5nIGV2ZW50LgoJCQoJCXB1YmxpYyB2YXIgbXlTdGF0dXM6SnBsYXllclN0YXR1cyA9IG5ldyBKcGxheWVyU3RhdHVzKCk7CgoJCXB1YmxpYyBmdW5jdGlvbiBKcGxheWVyTXAzKHZvbHVtZTpOdW1iZXIpIHsKCQkJdGltZVVwZGF0ZVRpbWVyLmFkZEV2ZW50TGlzdGVuZXIoVGltZXJFdmVudC5USU1FUiwgdGltZVVwZGF0ZUhhbmRsZXIpOwoJCQlwcm9ncmVzc1RpbWVyLmFkZEV2ZW50TGlzdGVuZXIoVGltZXJFdmVudC5USU1FUiwgcHJvZ3Jlc3NIYW5kbGVyKTsKCQkJc2Vla2luZ1RpbWVyLmFkZEV2ZW50TGlzdGVuZXIoVGltZXJFdmVudC5USU1FUiwgc2Vla2luZ0hhbmRsZXIpOwoJCQlwbGF5aW5nVGltZXIuYWRkRXZlbnRMaXN0ZW5lcihUaW1lckV2ZW50LlRJTUVSLCBwbGF5aW5nSGFuZGxlcik7CgkJCXdhaXRpbmdUaW1lci5hZGRFdmVudExpc3RlbmVyKFRpbWVyRXZlbnQuVElNRVIsIHdhaXRpbmdIYW5kbGVyKTsKCQkJc2V0Vm9sdW1lKHZvbHVtZSk7CgkJfQoJCXB1YmxpYyBmdW5jdGlvbiBzZXRGaWxlKHNyYzpTdHJpbmcpOnZvaWQgewoJCQl0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEpwbGF5ZXJFdmVudChKcGxheWVyRXZlbnQuREVCVUdfTVNHLCBteVN0YXR1cywgInNldEZpbGU6ICIgKyBzcmMpKTsKCQkJaWYobXlTdGF0dXMuaXNQbGF5aW5nKSB7CgkJCQlteUNoYW5uZWwuc3RvcCgpOwoJCQl9CgkJCXByb2dyZXNzVXBkYXRlcyhmYWxzZSk7CgkJCXRpbWVVcGRhdGVzKGZhbHNlKTsKCQkJd2FpdGluZ1RpbWVyLnN0b3AoKTsKCQkJdHJ5IHsKCQkJCW15U291bmQuY2xvc2UoKTsKCQkJfSBjYXRjaCAoZXJyOklPRXJyb3IpIHsKCQkJCS8vIE9jY3VycyBpZiB0aGUgZmlsZSBpcyBlaXRoZXIgeWV0IHRvIGJlIG9wZW5lZCBvciBoYXMgZmluaXNoZWQgZG93bmxvYWRpbmcuCgkJCX0KCQkJbXlTb3VuZCA9IG51bGw7CgkJCW15U291bmQgPSBuZXcgU291bmQoKTsKCQkJbXlTb3VuZC5hZGRFdmVudExpc3RlbmVyKElPRXJyb3JFdmVudC5JT19FUlJPUiwgZXJyb3JIYW5kbGVyKTsKCQkJbXlTb3VuZC5hZGRFdmVudExpc3RlbmVyKEV2ZW50Lk9QRU4sIGxvYWRPcGVuKTsKCQkJbXlTb3VuZC5hZGRFdmVudExpc3RlbmVyKEV2ZW50LkNPTVBMRVRFLCBsb2FkQ29tcGxldGUpOwoJCQlteVJlcXVlc3QgPSBuZXcgVVJMUmVxdWVzdChzcmMpOwoJCQlteVN0YXR1cy5yZXNldCgpOwoJCQlteVN0YXR1cy5zcmMgPSBzcmM7CgkJCW15U3RhdHVzLnNyY1NldCA9IHRydWU7CgkJCXRpbWVVcGRhdGVFdmVudCgpOwoJCX0KCQlwdWJsaWMgZnVuY3Rpb24gY2xlYXJGaWxlKCk6dm9pZCB7CgkJCXNldEZpbGUoIiIpOwoJCQlteVN0YXR1cy5zcmNTZXQgPSBmYWxzZTsKCQl9CgkJcHJpdmF0ZSBmdW5jdGlvbiBlcnJvckhhbmRsZXIoZXJyOklPRXJyb3JFdmVudCk6dm9pZCB7CgkJCS8vIE1QMyBwbGF5ZXIgbmVlZHMgdG8gc3RvcCBwcm9ncmVzcyBhbmQgdGltZXVwZGF0ZSBldmVudHMgYXMgdGhleSBhcmUgc3RhcnRlZCBiZWZvcmUgdGhlIGVycm9yIG9jY3Vycy4KCQkJLy8gTkI6IFRoZSBNUDQgcGxheWVyIHdvcmtzIGRpZmZlcmVudGx5IGFuZCB0aGUgZXJyb3Igb2NjdXJzIGJlZm9yZSB0aGV5IGFyZSBzdGFydGVkLgoJCQlwcm9ncmVzc1VwZGF0ZXMoZmFsc2UpOwoJCQl0aW1lVXBkYXRlcyhmYWxzZSk7CgkJCW15U3RhdHVzLmVycm9yKCk7IC8vIFJlc2V0cyBzdGF0dXMgZXhjZXB0IHRoZSBzcmMsIGFuZCBpdCBzZXRzIHNyY0Vycm9yIHByb3BlcnR5LgoJCQl0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEpwbGF5ZXJFdmVudChKcGxheWVyRXZlbnQuSlBMQVlFUl9FUlJPUiwgbXlTdGF0dXMpKTsKCQl9CgkJcHJpdmF0ZSBmdW5jdGlvbiBsb2FkT3BlbihlOkV2ZW50KTp2b2lkIHsKCQkJdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBKcGxheWVyRXZlbnQoSnBsYXllckV2ZW50LkRFQlVHX01TRywgbXlTdGF0dXMsICJsb2FkT3BlbjoiKSk7CgkJCXdhaXRpbmdUaW1lci5zdG9wKCk7CgkJCW15U3RhdHVzLmxvYWRpbmcoKTsKCQkJaWYobXlTdGF0dXMucGxheU9uTG9hZCkgewoJCQkJbXlTdGF0dXMucGxheU9uTG9hZCA9IGZhbHNlOyAvLyBDYXB0dXJlIHRoZSBmbGFnCgkJCQkvLyB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEpwbGF5ZXJFdmVudChKcGxheWVyRXZlbnQuSlBMQVlFUl9MT0FEU1RBUlQsIG15U3RhdHVzKSk7IC8vIFNvIGxvYWRzdGFydCBldmVudCBoYXBwZW5zIGJlZm9yZSBwbGF5IGV2ZW50IG9jY3Vycy4KCQkJCXBsYXkoKTsKCQkJfSBlbHNlIHsKCQkJCS8vIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgSnBsYXllckV2ZW50KEpwbGF5ZXJFdmVudC5KUExBWUVSX0xPQURTVEFSVCwgbXlTdGF0dXMpKTsKCQkJCXBhdXNlKCk7CgkJCX0KCQkJcHJvZ3Jlc3NVcGRhdGVzKHRydWUpOwoJCX0KCQlwcml2YXRlIGZ1bmN0aW9uIGxvYWRDb21wbGV0ZShlOkV2ZW50KTp2b2lkIHsKCQkJdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBKcGxheWVyRXZlbnQoSnBsYXllckV2ZW50LkRFQlVHX01TRywgbXlTdGF0dXMsICJsb2FkQ29tcGxldGU6IikpOwoJCQlteVN0YXR1cy5sb2FkZWQoKTsKCQkJcHJvZ3Jlc3NVcGRhdGVzKGZhbHNlKTsKCQkJcHJvZ3Jlc3NFdmVudCgpOwoJCQl0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEpwbGF5ZXJFdmVudChKcGxheWVyRXZlbnQuSlBMQVlFUl9DQU5QTEFZVEhST1VHSCwgbXlTdGF0dXMpKTsKCQl9CgkJcHJpdmF0ZSBmdW5jdGlvbiBzb3VuZENvbXBsZXRlSGFuZGxlcihlOkV2ZW50KTp2b2lkIHsKCQkJbXlTdGF0dXMucGF1c2VQb3NpdGlvbiA9IDA7CgkJCW15U3RhdHVzLmlzUGxheWluZyA9IGZhbHNlOwoJCQl0aW1lVXBkYXRlcyhmYWxzZSk7CgkJCXRpbWVVcGRhdGVFdmVudCgpOwoJCQl0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEpwbGF5ZXJFdmVudChKcGxheWVyRXZlbnQuSlBMQVlFUl9FTkRFRCwgbXlTdGF0dXMpKTsKCQl9CgkJcHJpdmF0ZSBmdW5jdGlvbiBwcm9ncmVzc1VwZGF0ZXMoYWN0aXZlOkJvb2xlYW4pOnZvaWQgewoJCQkvLyBVc2luZyBhIHRpbWVyIHJhdGhlciB0aGFuIEZsYXNoJ3MgbG9hZCBwcm9ncmVzcyBldmVudCwgYmVjYXVzZSB0aGF0IGV2ZW50IGdhdmUgZGF0YSBhdCBhYm91dCAyMDBIei4gVGhlIDEwSHogdGltZXIgaXMgY2xvc2VyIHRvIEhUTUw1IG5vcm0uCgkJCWlmKGFjdGl2ZSkgewoJCQkJcHJvZ3Jlc3NUaW1lci5zdGFydCgpOwoJCQl9IGVsc2UgewoJCQkJcHJvZ3Jlc3NUaW1lci5zdG9wKCk7CgkJCX0KCQl9CgkJcHJpdmF0ZSBmdW5jdGlvbiBwcm9ncmVzc0hhbmRsZXIoZTpUaW1lckV2ZW50KTp2b2lkIHsKCQkJcHJvZ3Jlc3NFdmVudCgpOwoJCX0KCQlwcml2YXRlIGZ1bmN0aW9uIHByb2dyZXNzRXZlbnQoKTp2b2lkIHsKCQkJdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBKcGxheWVyRXZlbnQoSnBsYXllckV2ZW50LkRFQlVHX01TRywgbXlTdGF0dXMsICJwcm9ncmVzc0V2ZW50OiIpKTsKCQkJdXBkYXRlU3RhdHVzVmFsdWVzKCk7CgkJCXRoaXMuZGlzcGF0Y2hFdmVudChuZXcgSnBsYXllckV2ZW50KEpwbGF5ZXJFdmVudC5KUExBWUVSX1BST0dSRVNTLCBteVN0YXR1cykpOwoJCX0KCQlwcml2YXRlIGZ1bmN0aW9uIHRpbWVVcGRhdGVzKGFjdGl2ZTpCb29sZWFuKTp2b2lkIHsKCQkJaWYoYWN0aXZlKSB7CgkJCQl0aW1lVXBkYXRlVGltZXIuc3RhcnQoKTsKCQkJCXBsYXlpbmdUaW1lci5zdGFydCgpOwoJCQl9IGVsc2UgewoJCQkJdGltZVVwZGF0ZVRpbWVyLnN0b3AoKTsKCQkJCXBsYXlpbmdUaW1lci5zdG9wKCk7CgkJCX0KCQl9CgkJcHJpdmF0ZSBmdW5jdGlvbiB0aW1lVXBkYXRlSGFuZGxlcihlOlRpbWVyRXZlbnQpOnZvaWQgewoJCQl0aW1lVXBkYXRlRXZlbnQoKTsKCQl9CgkJcHJpdmF0ZSBmdW5jdGlvbiB0aW1lVXBkYXRlRXZlbnQoKTp2b2lkIHsKCQkJdXBkYXRlU3RhdHVzVmFsdWVzKCk7CgkJCXRoaXMuZGlzcGF0Y2hFdmVudChuZXcgSnBsYXllckV2ZW50KEpwbGF5ZXJFdmVudC5KUExBWUVSX1RJTUVVUERBVEUsIG15U3RhdHVzKSk7CgkJfQoJCXByaXZhdGUgZnVuY3Rpb24gc2Vla2luZyhhY3RpdmU6Qm9vbGVhbik6dm9pZCB7CgkJCWlmKGFjdGl2ZSkgewoJCQkJc2Vla2luZ0V2ZW50KCk7CgkJCQl3YWl0aW5nRXZlbnQoKTsKCQkJCXNlZWtpbmdUaW1lci5zdGFydCgpOwoJCQl9IGVsc2UgewoJCQkJc2Vla2luZ1RpbWVyLnN0b3AoKTsKCQkJfQoJCX0KCQlwcml2YXRlIGZ1bmN0aW9uIHNlZWtpbmdIYW5kbGVyKGU6VGltZXJFdmVudCk6dm9pZCB7CgkJCWlmKG15U3RhdHVzLnBhdXNlUG9zaXRpb24gPD0gZ2V0RHVyYXRpb24oKSkgewoJCQkJc2Vla2VkRXZlbnQoKTsKCQkJCXNlZWtpbmcoZmFsc2UpOwoJCQkJaWYobXlTdGF0dXMucGxheU9uU2VlaykgewoJCQkJCW15U3RhdHVzLnBsYXlPblNlZWsgPSBmYWxzZTsgLy8gQ2FwdHVyZSB0aGUgZmxhZy4KCQkJCQlwbGF5KCk7CgkJCQl9CgkJCX0gZWxzZSBpZihteVN0YXR1cy5pc0xvYWRlZCAmJiAobXlTdGF0dXMucGF1c2VQb3NpdGlvbiA+IGdldER1cmF0aW9uKCkpKSB7CgkJCQkvLyBJbGxlZ2FsIHNlZWsgdGltZQoJCQkJc2Vla2luZyhmYWxzZSk7CgkJCQlzZWVrZWRFdmVudCgpOwoJCQkJcGF1c2UoMCk7CgkJCX0KCQl9CgkJcHJpdmF0ZSBmdW5jdGlvbiBzZWVraW5nRXZlbnQoKTp2b2lkIHsKCQkJbXlTdGF0dXMuaXNTZWVraW5nID0gdHJ1ZTsKCQkJdXBkYXRlU3RhdHVzVmFsdWVzKCk7CgkJCXRoaXMuZGlzcGF0Y2hFdmVudChuZXcgSnBsYXllckV2ZW50KEpwbGF5ZXJFdmVudC5KUExBWUVSX1NFRUtJTkcsIG15U3RhdHVzKSk7CgkJfQoJCXByaXZhdGUgZnVuY3Rpb24gc2Vla2VkRXZlbnQoKTp2b2lkIHsKCQkJbXlTdGF0dXMuaXNTZWVraW5nID0gZmFsc2U7CgkJCXVwZGF0ZVN0YXR1c1ZhbHVlcygpOwoJCQl0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEpwbGF5ZXJFdmVudChKcGxheWVyRXZlbnQuSlBMQVlFUl9TRUVLRUQsIG15U3RhdHVzKSk7CgkJfQoJCXByaXZhdGUgZnVuY3Rpb24gcGxheWluZ0hhbmRsZXIoZTpUaW1lckV2ZW50KTp2b2lkIHsKCQkJY2hlY2tQbGF5aW5nKGZhbHNlKTsgLy8gV2l0aG91dCBmb3JjaW5nIHBsYXlpbmcgZXZlbnQuCgkJfQoJCXByaXZhdGUgZnVuY3Rpb24gY2hlY2tQbGF5aW5nKGZvcmNlOkJvb2xlYW4pOnZvaWQgewoJCQlpZihteVNvdW5kLmlzQnVmZmVyaW5nKSB7CgkJCQlpZighbXlTdGF0dXMuaXNXYWl0aW5nKSB7CgkJCQkJd2FpdGluZ0V2ZW50KCk7CgkJCQl9CgkJCX0gZWxzZSB7CgkJCQlpZihteVN0YXR1cy5pc1dhaXRpbmcgfHwgZm9yY2UpIHsKCQkJCQlwbGF5aW5nRXZlbnQoKTsKCQkJCX0KCQkJfQoJCX0KCQlwcml2YXRlIGZ1bmN0aW9uIHdhaXRpbmdFdmVudCgpOnZvaWQgewoJCQlteVN0YXR1cy5pc1dhaXRpbmcgPSB0cnVlOwoJCQl0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEpwbGF5ZXJFdmVudChKcGxheWVyRXZlbnQuSlBMQVlFUl9XQUlUSU5HLCBteVN0YXR1cykpOwoJCX0KCQlwcml2YXRlIGZ1bmN0aW9uIHBsYXlpbmdFdmVudCgpOnZvaWQgewoJCQlteVN0YXR1cy5pc1dhaXRpbmcgPSBmYWxzZTsKCQkJdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBKcGxheWVyRXZlbnQoSnBsYXllckV2ZW50LkpQTEFZRVJfQ0FOUExBWSwgbXlTdGF0dXMpKTsKCQkJdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBKcGxheWVyRXZlbnQoSnBsYXllckV2ZW50LkpQTEFZRVJfUExBWUlORywgbXlTdGF0dXMpKTsKCQl9CgkJcHJpdmF0ZSBmdW5jdGlvbiB3YWl0aW5nSGFuZGxlcihlOlRpbWVyRXZlbnQpOnZvaWQgewoJCQl3YWl0aW5nVGltZXIuc3RvcCgpOwoJCQlpZihteVN0YXR1cy5wbGF5T25Mb2FkKSB7CgkJCQl3YWl0aW5nRXZlbnQoKTsKCQkJfQoJCX0KCQlwdWJsaWMgZnVuY3Rpb24gbG9hZCgpOkJvb2xlYW4gewoJCQlpZihteVN0YXR1cy5sb2FkUmVxdWlyZWQoKSkgewoJCQkJbXlTdGF0dXMuc3RhcnRpbmdEb3dubG9hZCgpOwoJCQkJdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBKcGxheWVyRXZlbnQoSnBsYXllckV2ZW50LkpQTEFZRVJfTE9BRFNUQVJULCBteVN0YXR1cykpOwoJCQkJd2FpdGluZ1RpbWVyLnN0YXJ0KCk7CgkJCQlteVNvdW5kLmxvYWQobXlSZXF1ZXN0LCBteUNvbnRleHQpOwoJCQkJcmV0dXJuIHRydWU7CgkJCX0gZWxzZSB7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCQl9CgkJcHVibGljIGZ1bmN0aW9uIHBsYXkodGltZTpOdW1iZXIgPSBOYU4pOkJvb2xlYW4gewoJCQl2YXIgd2FzUGxheWluZzpCb29sZWFuID0gbXlTdGF0dXMuaXNQbGF5aW5nOwoKCQkJaWYoIWlzTmFOKHRpbWUpICYmIG15U3RhdHVzLnNyY1NldCkgewoJCQkJaWYobXlTdGF0dXMuaXNQbGF5aW5nKSB7CgkJCQkJbXlDaGFubmVsLnN0b3AoKTsKCQkJCQlteVN0YXR1cy5pc1BsYXlpbmcgPSBmYWxzZTsKCQkJCX0KCQkJCW15U3RhdHVzLnBhdXNlUG9zaXRpb24gPSB0aW1lOwoJCQl9CgoJCQlpZihteVN0YXR1cy5pc1N0YXJ0aW5nRG93bmxvYWQpIHsKCQkJCW15U3RhdHVzLnBsYXlPbkxvYWQgPSB0cnVlOyAvLyBSYWlzZSBmbGFnLCBjYXB0dXJlZCBpbiBsb2FkT3BlbigpCgkJCQlyZXR1cm4gdHJ1ZTsKCQkJfSBlbHNlIGlmKG15U3RhdHVzLmxvYWRSZXF1aXJlZCgpKSB7CgkJCQlteVN0YXR1cy5wbGF5T25Mb2FkID0gdHJ1ZTsgLy8gUmFpc2UgZmxhZywgY2FwdHVyZWQgaW4gbG9hZE9wZW4oKQoJCQkJcmV0dXJuIGxvYWQoKTsKCQkJfSBlbHNlIGlmKChteVN0YXR1cy5pc0xvYWRpbmcgfHwgbXlTdGF0dXMuaXNMb2FkZWQpICYmICFteVN0YXR1cy5pc1BsYXlpbmcpIHsKCQkJCWlmKG15U3RhdHVzLmlzTG9hZGVkICYmIG15U3RhdHVzLnBhdXNlUG9zaXRpb24gPiBnZXREdXJhdGlvbigpKSB7IC8vIFRoZSB0aW1lIGlzIGludmFsaWQsIGllLiwgcGFzdCB0aGUgZW5kLgoJCQkJCW15U3RhdHVzLnBhdXNlUG9zaXRpb24gPSAwOwoJCQkJCXRpbWVVcGRhdGVzKGZhbHNlKTsKCQkJCQl0aW1lVXBkYXRlRXZlbnQoKTsKCQkJCQlpZih3YXNQbGF5aW5nKSB7IC8vIEZvciB3aGVuIHBsYXlpbmcgYW5kIHRoZW4gZ2V0IGEgcGxheShodWdlKQoJCQkJCQl0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEpwbGF5ZXJFdmVudChKcGxheWVyRXZlbnQuSlBMQVlFUl9QQVVTRSwgbXlTdGF0dXMpKTsKCQkJCQl9CgkJCQl9IGVsc2UgaWYobXlTdGF0dXMucGF1c2VQb3NpdGlvbiA+IGdldER1cmF0aW9uKCkpIHsKCQkJCQlteVN0YXR1cy5wbGF5T25TZWVrID0gdHJ1ZTsKCQkJCQlzZWVraW5nKHRydWUpOwoJCQkJfSBlbHNlIHsKCQkJCQlteVN0YXR1cy5pc1BsYXlpbmcgPSB0cnVlOyAvLyBTZXQgaW1tZWRpYXRlbHkgYmVmb3JlIHBsYXlpbmcuIENvdWxkIGFmZmVjdHMgZXZlbnRzLgoJCQkJCW15Q2hhbm5lbCA9IG15U291bmQucGxheShteVN0YXR1cy5wYXVzZVBvc2l0aW9uKTsKCQkJCQlteUNoYW5uZWwuc291bmRUcmFuc2Zvcm0gPSBteVRyYW5zZm9ybTsKCQkJCQlteUNoYW5uZWwuYWRkRXZlbnRMaXN0ZW5lcihFdmVudC5TT1VORF9DT01QTEVURSwgc291bmRDb21wbGV0ZUhhbmRsZXIpOwoJCQkJCXRpbWVVcGRhdGVzKHRydWUpOwoJCQkJCWlmKCF3YXNQbGF5aW5nKSB7CgkJCQkJCXRoaXMuZGlzcGF0Y2hFdmVudChuZXcgSnBsYXllckV2ZW50KEpwbGF5ZXJFdmVudC5KUExBWUVSX1BMQVksIG15U3RhdHVzKSk7CgkJCQkJfQoJCQkJCWNoZWNrUGxheWluZyh0cnVlKTsgLy8gRm9yY2UgdGhlIHBsYXlpbmcgZXZlbnQgdW5sZXNzIHdhaXRpbmcsIHdoaWNoIHdpbGwgYmUgZGVhbHQgd2l0aCBpbiB0aGUgcGxheWluZ1RpbWVyLgoJCQkJfQoJCQkJcmV0dXJuIHRydWU7CgkJCX0gZWxzZSB7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCQl9CgkJcHVibGljIGZ1bmN0aW9uIHBhdXNlKHRpbWU6TnVtYmVyID0gTmFOKTpCb29sZWFuIHsKCQkJbXlTdGF0dXMucGxheU9uTG9hZCA9IGZhbHNlOyAvLyBSZXNldCBmbGFnIGluIGNhc2UgbG9hZC9wbGF5IGlzc3VlZCBpbW1lZGlhdGVseSBiZWZvcmUgdGhpcyBjb21tYW5kLCBpZS4sIGJlZm9yZSBsb2FkT3BlbigpIGV2ZW50LgoJCQlteVN0YXR1cy5wbGF5T25TZWVrID0gZmFsc2U7IC8vIFJlc2V0IGZsYWcgaW4gY2FzZSBwbGF5KHRpbWUpIGlzc3VlZCBiZWZvcmUgdGhlIGNvbW1hbmQgYW5kIGlzIHN0aWxsIHNlZWtpbmcgdG8gdGltZSBzZXQuCgoJCQl2YXIgd2FzUGxheWluZzpCb29sZWFuID0gbXlTdGF0dXMuaXNQbGF5aW5nOwoKCQkJLy8gVG8gYXZvaWQgcG9zc2libGUgbG9vcHMgd2l0aCB0aW1ldXBkYXRlIGFuZCBwYXVzZSh0aW1lKS4gQSBwYXVzZSgpIGRvZXMgbm90IGhhdmUgdGhlIHByb2JsZW0uCgkJCXZhciBhbHJlYWR5UGF1c2VkQXRUaW1lOkJvb2xlYW4gPSBmYWxzZTsKCQkJaWYoIWlzTmFOKHRpbWUpICYmIG15U3RhdHVzLnBhdXNlUG9zaXRpb24gPT0gdGltZSkgewoJCQkJYWxyZWFkeVBhdXNlZEF0VGltZSA9IHRydWU7CgkJCX0KCgkJCWlmKG15U3RhdHVzLmlzUGxheWluZykgewoJCQkJbXlTdGF0dXMuaXNQbGF5aW5nID0gZmFsc2U7CgkJCQlteUNoYW5uZWwuc3RvcCgpOwoJCQkJaWYobXlDaGFubmVsLnBvc2l0aW9uID4gMCkgeyAvLyBSZXF1aXJlZCBvdGhlcndpc2UgYSBmYXN0IHBsYXkgdGhlbiBwYXVzZSBjYXVzZXMgbXlDaGFubmVsLnBvc2l0aW9uIHRvIGVxdWFsIHplcm8gYW5kIG5vdCB0aGUgY29ycmVjdCB2YWx1ZS4gaWUuLCBXaGVuIGl0IGhhcHBlbnMgbGVhdmUgcGF1c2VQb3NpdGlvbiBhbG9uZS4KCQkJCQlteVN0YXR1cy5wYXVzZVBvc2l0aW9uID0gbXlDaGFubmVsLnBvc2l0aW9uOwoJCQkJfQoJCQl9CgoJCQlpZighaXNOYU4odGltZSkgJiYgbXlTdGF0dXMuc3JjU2V0KSB7CgkJCQlteVN0YXR1cy5wYXVzZVBvc2l0aW9uID0gdGltZTsKCQkJfQoKCQkJaWYod2FzUGxheWluZykgewoJCQkJdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBKcGxheWVyRXZlbnQoSnBsYXllckV2ZW50LkpQTEFZRVJfUEFVU0UsIG15U3RhdHVzKSk7CgkJCX0KCQkJCgkJCWlmKG15U3RhdHVzLmlzU3RhcnRpbmdEb3dubG9hZCkgewoJCQkJcmV0dXJuIHRydWU7CgkJCX0gZWxzZSBpZihteVN0YXR1cy5sb2FkUmVxdWlyZWQoKSkgewoJCQkJaWYodGltZSA+IDApIHsgLy8gV2UgZG8gbm90IHdhbnQgdGhlIHN0b3AoKSBjb21tYW5kLCB3aGljaCBkb2VzIHBhdXNlKDApLCBjYXVzaW5nIGEgbG9hZCBvcGVyYXRpb24uCgkJCQkJcmV0dXJuIGxvYWQoKTsKCQkJCX0gZWxzZSB7CgkJCQkJcmV0dXJuIHRydWU7IC8vIFRlY2huaWNhbGx5IHRoZSBwYXVzZSgwKSBzdWNjZWVkZWQuIGllLiwgSXQgZGlkIG5vdGhpbmcsIHNpbmNlIG5vdGhpbmcgd2FzIHJlcXVpcmVkLgoJCQkJfQoJCQl9IGVsc2UgaWYobXlTdGF0dXMuaXNMb2FkaW5nIHx8IG15U3RhdHVzLmlzTG9hZGVkKSB7CgkJCQlpZihteVN0YXR1cy5pc0xvYWRlZCAmJiBteVN0YXR1cy5wYXVzZVBvc2l0aW9uID4gZ2V0RHVyYXRpb24oKSkgeyAvLyBUaGUgdGltZSBpcyBpbnZhbGlkLCBpZS4sIHBhc3QgdGhlIGVuZC4KCQkJCQlteVN0YXR1cy5wYXVzZVBvc2l0aW9uID0gMDsKCQkJCX0gZWxzZSBpZihteVN0YXR1cy5wYXVzZVBvc2l0aW9uID4gZ2V0RHVyYXRpb24oKSkgewoJCQkJCXNlZWtpbmcodHJ1ZSk7CgkJCQl9CgkJCQl0aW1lVXBkYXRlcyhmYWxzZSk7CgkJCQkvLyBOZWVkIHRvIGJlIGNhcmVmdWwgd2l0aCB0aW1ldXBkYXRlIGV2ZW50LCBvdGhlcndpc2UgYSBwYXVzZSBpbiBhIHRpbWV1cGRhdGUgZXZlbnQgY2FuIGNhdXNlIGEgbG9vcC4KCQkJCS8vIE5laXRoZXIgcGF1c2UoKSBub3IgcGF1c2UodGltZSkgd2lsbCBjYXVzZSBhIHRpbWV1cGRhdGUgbG9vcC4KCQkJCWlmKHdhc1BsYXlpbmcgfHwgIWlzTmFOKHRpbWUpICYmICFhbHJlYWR5UGF1c2VkQXRUaW1lKSB7CgkJCQkJdGltZVVwZGF0ZUV2ZW50KCk7CgkJCQl9CgkJCQlyZXR1cm4gdHJ1ZTsKCQkJfSBlbHNlIHsKCQkJCXJldHVybiBmYWxzZTsKCQkJfQoJCX0KCQlwdWJsaWMgZnVuY3Rpb24gcGxheUhlYWQocGVyY2VudDpOdW1iZXIpOkJvb2xlYW4gewoJCQl2YXIgdGltZTpOdW1iZXIgPSBwZXJjZW50ICogZ2V0RHVyYXRpb24oKSAvIDEwMDsKCQkJaWYobXlTdGF0dXMuaXNQbGF5aW5nIHx8IG15U3RhdHVzLnBsYXlPbkxvYWQgfHwgbXlTdGF0dXMucGxheU9uU2VlaykgewoJCQkJcmV0dXJuIHBsYXkodGltZSk7CgkJCX0gZWxzZSB7CgkJCQlyZXR1cm4gcGF1c2UodGltZSk7CgkJCX0KCQl9CgkJcHVibGljIGZ1bmN0aW9uIHNldFZvbHVtZSh2Ok51bWJlcik6dm9pZCB7CgkJCW15U3RhdHVzLnZvbHVtZSA9IHY7CgkJCW15VHJhbnNmb3JtLnZvbHVtZSA9IHY7CgkJCW15Q2hhbm5lbC5zb3VuZFRyYW5zZm9ybSA9IG15VHJhbnNmb3JtOwoJCX0KCQlwcml2YXRlIGZ1bmN0aW9uIHVwZGF0ZVN0YXR1c1ZhbHVlcygpOnZvaWQgewoJCQlteVN0YXR1cy5zZWVrUGVyY2VudCA9IDEwMCAqIGdldExvYWRSYXRpbygpOwoJCQlteVN0YXR1cy5jdXJyZW50VGltZSA9IGdldEN1cnJlbnRUaW1lKCk7CgkJCW15U3RhdHVzLmN1cnJlbnRQZXJjZW50UmVsYXRpdmUgPSAxMDAgKiBnZXRDdXJyZW50UmF0aW9SZWwoKTsKCQkJbXlTdGF0dXMuY3VycmVudFBlcmNlbnRBYnNvbHV0ZSA9IDEwMCAqIGdldEN1cnJlbnRSYXRpb0FicygpOwoJCQlteVN0YXR1cy5kdXJhdGlvbiA9IGdldER1cmF0aW9uKCk7CgkJfQoJCXB1YmxpYyBmdW5jdGlvbiBnZXRMb2FkUmF0aW8oKTpOdW1iZXIgewoJCQlpZigobXlTdGF0dXMuaXNMb2FkaW5nIHx8IG15U3RhdHVzLmlzTG9hZGVkKSAmJiBteVNvdW5kLmJ5dGVzVG90YWwgPiAwKSB7CgkJCQlyZXR1cm4gbXlTb3VuZC5ieXRlc0xvYWRlZCAvIG15U291bmQuYnl0ZXNUb3RhbDsKCQkJfSBlbHNlIHsKCQkJCXJldHVybiAwOwoJCQl9CgkJfQoJCXB1YmxpYyBmdW5jdGlvbiBnZXREdXJhdGlvbigpOk51bWJlciB7CgkJCWlmKG15U291bmQubGVuZ3RoID4gMCkgewoJCQkJcmV0dXJuIG15U291bmQubGVuZ3RoOwoJCQl9IGVsc2UgewoJCQkJcmV0dXJuIDA7CgkJCX0KCQl9CgkJcHVibGljIGZ1bmN0aW9uIGdldEN1cnJlbnRUaW1lKCk6TnVtYmVyIHsKCQkJaWYobXlTdGF0dXMuaXNQbGF5aW5nKSB7CgkJCQlyZXR1cm4gbXlDaGFubmVsLnBvc2l0aW9uOwoJCQl9IGVsc2UgewoJCQkJcmV0dXJuIG15U3RhdHVzLnBhdXNlUG9zaXRpb247CgkJCX0KCQl9CgkJcHVibGljIGZ1bmN0aW9uIGdldEN1cnJlbnRSYXRpb1JlbCgpOk51bWJlciB7CgkJCWlmKChnZXREdXJhdGlvbigpID4gMCkgJiYgKGdldEN1cnJlbnRUaW1lKCkgPD0gZ2V0RHVyYXRpb24oKSkpIHsKCQkJCXJldHVybiBnZXRDdXJyZW50VGltZSgpIC8gZ2V0RHVyYXRpb24oKTsKCQkJfSBlbHNlIHsKCQkJCXJldHVybiAwOwoJCQl9CgkJfQoJCXB1YmxpYyBmdW5jdGlvbiBnZXRDdXJyZW50UmF0aW9BYnMoKTpOdW1iZXIgewoJCQlyZXR1cm4gZ2V0Q3VycmVudFJhdGlvUmVsKCkgKiBnZXRMb2FkUmF0aW8oKTsKCQl9Cgl9Cn0K]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/actionscript/happyworm/jPlayer/JplayerMp4.as</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogalBsYXllciBQbHVnaW4gZm9yIGpRdWVyeSBKYXZhU2NyaXB0IExpYnJhcnkKICogaHR0cDovL3d3dy5qcGxheWVyLm9yZwogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDkgLSAyMDEzIEhhcHB5d29ybSBMdGQKICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLgogKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUCiAqCiAqIEF1dGhvcjogTWFyayBKIFBhbmFnaGlzdG9uCiAqIERhdGU6IDI5dGggSmFudWFyeSAyMDEzCiAqLwoKcGFja2FnZSBoYXBweXdvcm0ualBsYXllciB7CglpbXBvcnQgZmxhc2guZGlzcGxheS5TcHJpdGU7CgoJaW1wb3J0IGZsYXNoLm1lZGlhLlZpZGVvOwoJaW1wb3J0IGZsYXNoLm1lZGlhLlNvdW5kVHJhbnNmb3JtOwoKCWltcG9ydCBmbGFzaC5uZXQuTmV0Q29ubmVjdGlvbjsKCWltcG9ydCBmbGFzaC5uZXQuTmV0U3RyZWFtOwoKCWltcG9ydCBmbGFzaC51dGlscy5UaW1lcjsKCglpbXBvcnQgZmxhc2guZXZlbnRzLk5ldFN0YXR1c0V2ZW50OwoJaW1wb3J0IGZsYXNoLmV2ZW50cy5TZWN1cml0eUVycm9yRXZlbnQ7CglpbXBvcnQgZmxhc2guZXZlbnRzLlRpbWVyRXZlbnQ7CgoJcHVibGljIGNsYXNzIEpwbGF5ZXJNcDQgZXh0ZW5kcyBTcHJpdGUgewoJCQoJCXB1YmxpYyB2YXIgbXlWaWRlbzpWaWRlbyA9IG5ldyBWaWRlbygpOwoJCXByaXZhdGUgdmFyIG15Q29ubmVjdGlvbjpOZXRDb25uZWN0aW9uOwoJCXByaXZhdGUgdmFyIG15U3RyZWFtOk5ldFN0cmVhbTsKCQkKCQlwcml2YXRlIHZhciBteVRyYW5zZm9ybTpTb3VuZFRyYW5zZm9ybSA9IG5ldyBTb3VuZFRyYW5zZm9ybSgpOwoKCQlwdWJsaWMgdmFyIG15U3RhdHVzOkpwbGF5ZXJTdGF0dXMgPSBuZXcgSnBsYXllclN0YXR1cygpOwoJCQoJCXByaXZhdGUgdmFyIHRpbWVVcGRhdGVUaW1lcjpUaW1lciA9IG5ldyBUaW1lcigyNTAsIDApOyAvLyBNYXRjaGVkIHRvIEhUTUwgZXZlbnQgZnJlcQoJCXByaXZhdGUgdmFyIHByb2dyZXNzVGltZXI6VGltZXIgPSBuZXcgVGltZXIoMjUwLCAwKTsgLy8gTWF0Y2hlZCB0byBIVE1MIGV2ZW50IGZyZXEKCQlwcml2YXRlIHZhciBzZWVraW5nVGltZXI6VGltZXIgPSBuZXcgVGltZXIoMTAwLCAwKTsgLy8gSW50ZXJuYWw6IEhvdyBvZnRlbiBzZWVraW5nIGlzIGNoZWNrZWQgdG8gc2VlIGlmIGl0IGlzIG92ZXIuCgoJCXB1YmxpYyBmdW5jdGlvbiBKcGxheWVyTXA0KHZvbHVtZTpOdW1iZXIpIHsKCQkJbXlDb25uZWN0aW9uID0gbmV3IE5ldENvbm5lY3Rpb24oKTsKCQkJbXlDb25uZWN0aW9uLmFkZEV2ZW50TGlzdGVuZXIoTmV0U3RhdHVzRXZlbnQuTkVUX1NUQVRVUywgbmV0U3RhdHVzSGFuZGxlcik7CgkJCW15Q29ubmVjdGlvbi5hZGRFdmVudExpc3RlbmVyKFNlY3VyaXR5RXJyb3JFdmVudC5TRUNVUklUWV9FUlJPUiwgc2VjdXJpdHlFcnJvckhhbmRsZXIpOwoJCQlteVZpZGVvLnNtb290aGluZyA9IHRydWU7CgkJCXRoaXMuYWRkQ2hpbGQobXlWaWRlbyk7CgkJCQoJCQl0aW1lVXBkYXRlVGltZXIuYWRkRXZlbnRMaXN0ZW5lcihUaW1lckV2ZW50LlRJTUVSLCB0aW1lVXBkYXRlSGFuZGxlcik7CgkJCXByb2dyZXNzVGltZXIuYWRkRXZlbnRMaXN0ZW5lcihUaW1lckV2ZW50LlRJTUVSLCBwcm9ncmVzc0hhbmRsZXIpOwoJCQlzZWVraW5nVGltZXIuYWRkRXZlbnRMaXN0ZW5lcihUaW1lckV2ZW50LlRJTUVSLCBzZWVraW5nSGFuZGxlcik7CgoJCQlteVN0YXR1cy52b2x1bWUgPSB2b2x1bWU7CgkJfQoJCXByaXZhdGUgZnVuY3Rpb24gcHJvZ3Jlc3NVcGRhdGVzKGFjdGl2ZTpCb29sZWFuKTp2b2lkIHsKCQkJaWYoYWN0aXZlKSB7CgkJCQlwcm9ncmVzc1RpbWVyLnN0YXJ0KCk7CgkJCX0gZWxzZSB7CgkJCQlwcm9ncmVzc1RpbWVyLnN0b3AoKTsKCQkJfQoJCX0KCQlwcml2YXRlIGZ1bmN0aW9uIHByb2dyZXNzSGFuZGxlcihlOlRpbWVyRXZlbnQpOnZvaWQgewoJCQlpZihteVN0YXR1cy5pc0xvYWRpbmcpIHsKCQkJCWlmKGdldExvYWRSYXRpbygpID09IDEpIHsgLy8gQ2xvc2UgYXMgY2FuIGdldCB0byBhIGxvYWRDb21wbGV0ZSBldmVudCBzaW5jZSBjbGllbnQub25QbGF5U3RhdHVzIG9ubHkgd29ya3Mgd2l0aCBGTVMKCQkJCQl0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEpwbGF5ZXJFdmVudChKcGxheWVyRXZlbnQuREVCVUdfTVNHLCBteVN0YXR1cywgInByb2dyZXNzSGFuZGxlcjogbG9hZENvbXBsZXRlIikpOwoJCQkJCW15U3RhdHVzLmxvYWRlZCgpOwoJCQkJCXByb2dyZXNzVXBkYXRlcyhmYWxzZSk7CgkJCQl9CgkJCX0KCQkJcHJvZ3Jlc3NFdmVudCgpOwoJCX0KCQlwcml2YXRlIGZ1bmN0aW9uIHByb2dyZXNzRXZlbnQoKTp2b2lkIHsKCQkJdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBKcGxheWVyRXZlbnQoSnBsYXllckV2ZW50LkRFQlVHX01TRywgbXlTdGF0dXMsICJwcm9ncmVzc0V2ZW50OiIpKTsKCQkJdXBkYXRlU3RhdHVzVmFsdWVzKCk7CgkJCXRoaXMuZGlzcGF0Y2hFdmVudChuZXcgSnBsYXllckV2ZW50KEpwbGF5ZXJFdmVudC5KUExBWUVSX1BST0dSRVNTLCBteVN0YXR1cykpOwoJCX0KCQlwcml2YXRlIGZ1bmN0aW9uIHRpbWVVcGRhdGVzKGFjdGl2ZTpCb29sZWFuKTp2b2lkIHsKCQkJaWYoYWN0aXZlKSB7CgkJCQl0aW1lVXBkYXRlVGltZXIuc3RhcnQoKTsKCQkJfSBlbHNlIHsKCQkJCXRpbWVVcGRhdGVUaW1lci5zdG9wKCk7CgkJCX0KCQl9CgkJcHJpdmF0ZSBmdW5jdGlvbiB0aW1lVXBkYXRlSGFuZGxlcihlOlRpbWVyRXZlbnQpOnZvaWQgewoJCQl0aW1lVXBkYXRlRXZlbnQoKTsKCQl9CgkJcHJpdmF0ZSBmdW5jdGlvbiB0aW1lVXBkYXRlRXZlbnQoKTp2b2lkIHsKCQkJdXBkYXRlU3RhdHVzVmFsdWVzKCk7CgkJCXRoaXMuZGlzcGF0Y2hFdmVudChuZXcgSnBsYXllckV2ZW50KEpwbGF5ZXJFdmVudC5KUExBWUVSX1RJTUVVUERBVEUsIG15U3RhdHVzKSk7CgkJfQoJCXByaXZhdGUgZnVuY3Rpb24gc2Vla2luZyhhY3RpdmU6Qm9vbGVhbik6dm9pZCB7CgkJCWlmKGFjdGl2ZSkgewoJCQkJaWYoIW15U3RhdHVzLmlzU2Vla2luZykgewoJCQkJCXNlZWtpbmdFdmVudCgpOwoJCQkJfQoJCQkJc2Vla2luZ1RpbWVyLnN0YXJ0KCk7CgkJCX0gZWxzZSB7CgkJCQlpZihteVN0YXR1cy5pc1NlZWtpbmcpIHsKCQkJCQlzZWVrZWRFdmVudCgpOwoJCQkJfQoJCQkJc2Vla2luZ1RpbWVyLnN0b3AoKTsKCQkJfQoJCX0KCQlwcml2YXRlIGZ1bmN0aW9uIHNlZWtpbmdIYW5kbGVyKGU6VGltZXJFdmVudCk6dm9pZCB7CgkJCWlmKGdldFNlZWtUaW1lUmF0aW8oKSA8PSBnZXRMb2FkUmF0aW8oKSkgewoJCQkJc2Vla2luZyhmYWxzZSk7CgkJCQlpZihteVN0YXR1cy5wbGF5T25TZWVrKSB7CgkJCQkJbXlTdGF0dXMucGxheU9uU2VlayA9IGZhbHNlOyAvLyBDYXB0dXJlIHRoZSBmbGFnLgoJCQkJCXBsYXkobXlTdGF0dXMucGF1c2VQb3NpdGlvbik7IC8vIE11c3QgcGFzcyB0aW1lIG9yIHRoZSBzZWVrIHRpbWUgaXMgbmV2ZXIgc2V0LgoJCQkJfSBlbHNlIHsKCQkJCQlwYXVzZShteVN0YXR1cy5wYXVzZVBvc2l0aW9uKTsgLy8gTXVzdCBwYXNzIHRpbWUgb3IgdGhlIHN0cmVhbS50aW1lIGlzIHJlYWQuCgkJCQl9CgkJCX0gZWxzZSBpZihteVN0YXR1cy5tZXRhRGF0YVJlYWR5ICYmIG15U3RhdHVzLnBhdXNlUG9zaXRpb24gPiBteVN0YXR1cy5kdXJhdGlvbikgewoJCQkJLy8gSWxsZWdhbCBzZWVrIHRpbWUKCQkJCXNlZWtpbmcoZmFsc2UpOwoJCQkJcGF1c2UoMCk7CgkJCX0KCQl9CgkJcHJpdmF0ZSBmdW5jdGlvbiBzZWVraW5nRXZlbnQoKTp2b2lkIHsKCQkJbXlTdGF0dXMuaXNTZWVraW5nID0gdHJ1ZTsKCQkJdXBkYXRlU3RhdHVzVmFsdWVzKCk7CgkJCXRoaXMuZGlzcGF0Y2hFdmVudChuZXcgSnBsYXllckV2ZW50KEpwbGF5ZXJFdmVudC5KUExBWUVSX1NFRUtJTkcsIG15U3RhdHVzKSk7CgkJfQoJCXByaXZhdGUgZnVuY3Rpb24gc2Vla2VkRXZlbnQoKTp2b2lkIHsKCQkJbXlTdGF0dXMuaXNTZWVraW5nID0gZmFsc2U7CgkJCXVwZGF0ZVN0YXR1c1ZhbHVlcygpOwoJCQl0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEpwbGF5ZXJFdmVudChKcGxheWVyRXZlbnQuSlBMQVlFUl9TRUVLRUQsIG15U3RhdHVzKSk7CgkJfQoJCXByaXZhdGUgZnVuY3Rpb24gbmV0U3RhdHVzSGFuZGxlcihlOk5ldFN0YXR1c0V2ZW50KTp2b2lkIHsKCQkJdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBKcGxheWVyRXZlbnQoSnBsYXllckV2ZW50LkRFQlVHX01TRywgbXlTdGF0dXMsICJuZXRTdGF0dXNIYW5kbGVyOiAnIiArIGUuaW5mby5jb2RlICsgIiciKSk7CgkJCXN3aXRjaChlLmluZm8uY29kZSkgewoJCQkJY2FzZSAiTmV0Q29ubmVjdGlvbi5Db25uZWN0LlN1Y2Nlc3MiOgoJCQkJCWNvbm5lY3RTdHJlYW0oKTsKCQkJCQlicmVhazsKCQkJCWNhc2UgIk5ldFN0cmVhbS5QbGF5LlN0YXJ0IjoKCQkJCQkvLyBUaGlzIGV2ZW50IGNvZGUgb2NjdXJzIG9uY2UsIHdoZW4gdGhlIG1lZGlhIGlzIG9wZW5lZC4gRXF1aXYgdG8gbG9hZE9wZW4oKSBpbiBtcDMgcGxheWVyLgoJCQkJCW15U3RhdHVzLmxvYWRpbmcoKTsKCQkJCQl0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEpwbGF5ZXJFdmVudChKcGxheWVyRXZlbnQuSlBMQVlFUl9MT0FEU1RBUlQsIG15U3RhdHVzKSk7CgkJCQkJcHJvZ3Jlc3NVcGRhdGVzKHRydWUpOwoJCQkJCS8vIFNlZSBvbk1ldGFEYXRhSGFuZGxlcigpIGZvciBvdGhlciBjb25kaXRpb24sIHNpbmNlIGR1cmF0aW9uIGlzIHZpdGFsLgoJCQkJCWJyZWFrOwoJCQkJY2FzZSAiTmV0U3RyZWFtLlBsYXkuU3RvcCI6CgkJCQkJdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBKcGxheWVyRXZlbnQoSnBsYXllckV2ZW50LkRFQlVHX01TRywgbXlTdGF0dXMsICJOZXRTdHJlYW0uUGxheS5TdG9wOiBnZXREdXJhdGlvbigpIC0gZ2V0Q3VycmVudFRpbWUoKSA9ICIgKyAoZ2V0RHVyYXRpb24oKSAtIGdldEN1cnJlbnRUaW1lKCkpKSk7CgoJCQkJCS8vIENoZWNrIGlmIG1lZGlhIGlzIGF0IHRoZSBlbmQgKG9yIGNsb3NlKSBvdGhlcndpc2UgdGhpcyB3YXMgZHVlIHRvIGRvd25sb2FkIGJhbmR3aWR0aCBzdG9wcGluZyBwbGF5YmFjay4gaWUuLCBEb3dubG9hZCBpcyBub3QgZmFzdCBlbm91Z2guCgkJCQkJaWYoTWF0aC5hYnMoZ2V0RHVyYXRpb24oKSAtIGdldEN1cnJlbnRUaW1lKCkpIDwgMTUwKSB7IC8vIFRlc3RpbmcgZm91bmQgMTUwbXMgd29ya2VkIGJlc3QgZm9yIE00QSBmaWxlcywgd2hlcmUgcGxheUhlYWQoOTkuOSkgY2F1c2VkIGEgc3R1Y2sgc3RhdGUgZHVlIHRvIGZpcmluZyB3aXRoIH4xMTZtcyBsZWZ0IHRvIHBsYXkuCgkJCQkJCWVuZGVkRXZlbnQoKTsKCQkJCQl9CgkJCQkJYnJlYWs7CgkJCQljYXNlICJOZXRTdHJlYW0uU2Vlay5JbnZhbGlkVGltZSI6CgkJCQkJLy8gVXNlZCBmb3IgY2FwdHVyaW5nIGludmFsaWQgc2V0IHRpbWVzIGFuZCBjbGlja3Mgb24gdGhlIGVuZCBvZiB0aGUgcHJvZ3Jlc3MgYmFyLgoJCQkJCWVuZGVkRXZlbnQoKTsKCQkJCQlicmVhazsKCQkJCWNhc2UgIk5ldFN0cmVhbS5QbGF5LlN0cmVhbU5vdEZvdW5kIjoKCQkJCQlteVN0YXR1cy5lcnJvcigpOyAvLyBSZXNldHMgc3RhdHVzIGV4Y2VwdCB0aGUgc3JjLCBhbmQgaXQgc2V0cyBzcmNFcnJvciBwcm9wZXJ0eS4KCQkJCQl0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEpwbGF5ZXJFdmVudChKcGxheWVyRXZlbnQuSlBMQVlFUl9FUlJPUiwgbXlTdGF0dXMpKTsKCQkJCQlicmVhazsKCQkJfQoJCQkvLyAiTmV0U3RyZWFtLlNlZWsuTm90aWZ5IiBldmVudCBjb2RlIGlzIG5vdCB2ZXJ5IHVzZWZ1bC4gSXQgb2NjdXJzIGFmdGVyIGV2ZXJ5IHNlZWsodCkgY29tbWFuZCBpc3N1ZWQgYW5kIGRvZXMgbm90IGFwcGVhciB0byB3YWl0IGZvciB0aGUgbWVkaWEgdG8gYmUgcmVhZHkuCgkJfQoJCXByaXZhdGUgZnVuY3Rpb24gZW5kZWRFdmVudCgpOnZvaWQgewoJCQl2YXIgd2FzUGxheWluZzpCb29sZWFuID0gbXlTdGF0dXMuaXNQbGF5aW5nOwoJCQlwYXVzZSgwKTsKCQkJdGltZVVwZGF0ZXMoZmFsc2UpOwoJCQl0aW1lVXBkYXRlRXZlbnQoKTsKCQkJaWYod2FzUGxheWluZykgewoJCQkJdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBKcGxheWVyRXZlbnQoSnBsYXllckV2ZW50LkpQTEFZRVJfRU5ERUQsIG15U3RhdHVzKSk7CgkJCX0KCQl9CgkJcHJpdmF0ZSBmdW5jdGlvbiBzZWN1cml0eUVycm9ySGFuZGxlcihldmVudDpTZWN1cml0eUVycm9yRXZlbnQpOnZvaWQgewoJCQl0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEpwbGF5ZXJFdmVudChKcGxheWVyRXZlbnQuREVCVUdfTVNHLCBteVN0YXR1cywgInNlY3VyaXR5RXJyb3JIYW5kbGVyLiIpKTsKCQl9CgkJcHJpdmF0ZSBmdW5jdGlvbiBjb25uZWN0U3RyZWFtKCk6dm9pZCB7CgkJCXRoaXMuZGlzcGF0Y2hFdmVudChuZXcgSnBsYXllckV2ZW50KEpwbGF5ZXJFdmVudC5ERUJVR19NU0csIG15U3RhdHVzLCAiY29ubmVjdFN0cmVhbS4iKSk7CgkJCXZhciBjdXN0b21DbGllbnQ6T2JqZWN0ID0gbmV3IE9iamVjdCgpOwoJCQljdXN0b21DbGllbnQub25NZXRhRGF0YSA9IG9uTWV0YURhdGFIYW5kbGVyOwoJCQkvLyBjdXN0b21DbGllbnQub25QbGF5U3RhdHVzID0gb25QbGF5U3RhdHVzSGFuZGxlcjsgLy8gQWNjb3JkaW5nIHRvIHRoZSBmb3J1bXMgYW5kIG15IHRlc3RzLCBvblBsYXlTdGF0dXMgb25seSB3b3JrcyB3aXRoIEZNUyAoRmxhc2ggTWVkaWEgU2VydmVyKS4KCQkJbXlTdHJlYW0gPSBudWxsOwoJCQlteVN0cmVhbSA9IG5ldyBOZXRTdHJlYW0obXlDb25uZWN0aW9uKTsKCQkJbXlTdHJlYW0uYWRkRXZlbnRMaXN0ZW5lcihOZXRTdGF0dXNFdmVudC5ORVRfU1RBVFVTLCBuZXRTdGF0dXNIYW5kbGVyKTsKCQkJbXlTdHJlYW0uY2xpZW50ID0gY3VzdG9tQ2xpZW50OwoJCQlteVZpZGVvLmF0dGFjaE5ldFN0cmVhbShteVN0cmVhbSk7CgkJCXNldFZvbHVtZShteVN0YXR1cy52b2x1bWUpOwoJCQlteVN0cmVhbS5wbGF5KG15U3RhdHVzLnNyYyk7CgkJfQoJCXB1YmxpYyBmdW5jdGlvbiBzZXRGaWxlKHNyYzpTdHJpbmcpOnZvaWQgewoJCQlpZihteVN0cmVhbSAhPSBudWxsKSB7CgkJCQlteVN0cmVhbS5jbG9zZSgpOwoJCQl9CgkJCW15VmlkZW8uY2xlYXIoKTsKCQkJcHJvZ3Jlc3NVcGRhdGVzKGZhbHNlKTsKCQkJdGltZVVwZGF0ZXMoZmFsc2UpOwoKCQkJbXlTdGF0dXMucmVzZXQoKTsKCQkJbXlTdGF0dXMuc3JjID0gc3JjOwoJCQlteVN0YXR1cy5zcmNTZXQgPSB0cnVlOwoJCQl0aW1lVXBkYXRlRXZlbnQoKTsKCQl9CgkJcHVibGljIGZ1bmN0aW9uIGNsZWFyRmlsZSgpOnZvaWQgewoJCQlzZXRGaWxlKCIiKTsKCQkJbXlTdGF0dXMuc3JjU2V0ID0gZmFsc2U7CgkJfQoJCXB1YmxpYyBmdW5jdGlvbiBsb2FkKCk6Qm9vbGVhbiB7CgkJCWlmKG15U3RhdHVzLmxvYWRSZXF1aXJlZCgpKSB7CgkJCQlteVN0YXR1cy5zdGFydGluZ0Rvd25sb2FkKCk7CgkJCQlteUNvbm5lY3Rpb24uY29ubmVjdChudWxsKTsKCQkJCXJldHVybiB0cnVlOwoJCQl9IGVsc2UgewoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9CgkJfQoJCXB1YmxpYyBmdW5jdGlvbiBwbGF5KHRpbWU6TnVtYmVyID0gTmFOKTpCb29sZWFuIHsKCQkJdmFyIHdhc1BsYXlpbmc6Qm9vbGVhbiA9IG15U3RhdHVzLmlzUGxheWluZzsKCgkJCWlmKCFpc05hTih0aW1lKSAmJiBteVN0YXR1cy5zcmNTZXQpIHsKCQkJCWlmKG15U3RhdHVzLmlzUGxheWluZykgewoJCQkJCW15U3RyZWFtLnBhdXNlKCk7CgkJCQkJbXlTdGF0dXMuaXNQbGF5aW5nID0gZmFsc2U7CgkJCQl9CgkJCQlteVN0YXR1cy5wYXVzZVBvc2l0aW9uID0gdGltZTsKCQkJfQoKCQkJaWYobXlTdGF0dXMuaXNTdGFydGluZ0Rvd25sb2FkKSB7CgkJCQlteVN0YXR1cy5wbGF5T25Mb2FkID0gdHJ1ZTsgLy8gUmFpc2UgZmxhZywgY2FwdHVyZWQgaW4gb25NZXRhRGF0YUhhbmRsZXIoKQoJCQkJcmV0dXJuIHRydWU7CgkJCX0gZWxzZSBpZihteVN0YXR1cy5sb2FkUmVxdWlyZWQoKSkgewoJCQkJbXlTdGF0dXMucGxheU9uTG9hZCA9IHRydWU7IC8vIFJhaXNlIGZsYWcsIGNhcHR1cmVkIGluIG9uTWV0YURhdGFIYW5kbGVyKCkKCQkJCXJldHVybiBsb2FkKCk7CgkJCX0gZWxzZSBpZigobXlTdGF0dXMuaXNMb2FkaW5nIHx8IG15U3RhdHVzLmlzTG9hZGVkKSAmJiAhbXlTdGF0dXMuaXNQbGF5aW5nKSB7CgkJCQlpZihteVN0YXR1cy5tZXRhRGF0YVJlYWR5ICYmIG15U3RhdHVzLnBhdXNlUG9zaXRpb24gPiBteVN0YXR1cy5kdXJhdGlvbikgeyAvLyBUaGUgdGltZSBpcyBpbnZhbGlkLCBpZS4sIHBhc3QgdGhlIGVuZC4KCQkJCQlteVN0cmVhbS5wYXVzZSgpOyAvLyBTaW5jZSBpdCBpcyBwbGF5aW5nIGJ5IGRlZmF1bHQgYXQgdGhpcyBwb2ludC4KCQkJCQlteVN0YXR1cy5wYXVzZVBvc2l0aW9uID0gMDsKCQkJCQlteVN0cmVhbS5zZWVrKDApOwoJCQkJCXRpbWVVcGRhdGVzKGZhbHNlKTsKCQkJCQl0aW1lVXBkYXRlRXZlbnQoKTsKCQkJCQlpZih3YXNQbGF5aW5nKSB7IC8vIEZvciB3aGVuIHBsYXlpbmcgYW5kIHRoZW4gZ2V0IGEgcGxheShodWdlKQoJCQkJCQl0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEpwbGF5ZXJFdmVudChKcGxheWVyRXZlbnQuSlBMQVlFUl9QQVVTRSwgbXlTdGF0dXMpKTsKCQkJCQl9CgkJCQl9IGVsc2UgaWYoZ2V0U2Vla1RpbWVSYXRpbygpID4gZ2V0TG9hZFJhdGlvKCkpIHsgLy8gVXNlIGFuIGVzdGltYXRlIGJhc2VkIG9uIHRoZSBkb3dubG9hZGVkIGFtb3VudAoJCQkJCW15U3RhdHVzLnBsYXlPblNlZWsgPSB0cnVlOwoJCQkJCXNlZWtpbmcodHJ1ZSk7CgkJCQkJbXlTdHJlYW0ucGF1c2UoKTsgLy8gU2luY2UgaXQgaXMgcGxheWluZyBieSBkZWZhdWx0IGF0IHRoaXMgcG9pbnQuCgkJCQl9IGVsc2UgewoJCQkJCWlmKCFpc05hTih0aW1lKSkgeyAvLyBBdm9pZCB1c2luZyBzZWVrKCkgd2hlbiBpdCBpcyBhbHJlYWR5IGNvcnJlY3QuCgkJCQkJCW15U3RyZWFtLnNlZWsobXlTdGF0dXMucGF1c2VQb3NpdGlvbi8xMDAwKTsgLy8gU2luY2UgdGltZSBpcyBpbiBtcyBhbmQgc2VlaygpIHRha2VzIHNlY29uZHMKCQkJCQl9CgkJCQkJbXlTdGF0dXMuaXNQbGF5aW5nID0gdHJ1ZTsgLy8gU2V0IGltbWVkaWF0ZWx5IGJlZm9yZSBwbGF5aW5nLiBDb3VsZCBhZmZlY3RzIGV2ZW50cy4KCQkJCQlteVN0cmVhbS5yZXN1bWUoKTsKCQkJCQl0aW1lVXBkYXRlcyh0cnVlKTsKCQkJCQlpZighd2FzUGxheWluZykgewoJCQkJCQl0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEpwbGF5ZXJFdmVudChKcGxheWVyRXZlbnQuSlBMQVlFUl9QTEFZLCBteVN0YXR1cykpOwoJCQkJCX0KCQkJCX0KCQkJCXJldHVybiB0cnVlOwoJCQl9IGVsc2UgewoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9CgkJfQoJCXB1YmxpYyBmdW5jdGlvbiBwYXVzZSh0aW1lOk51bWJlciA9IE5hTik6Qm9vbGVhbiB7CgkJCW15U3RhdHVzLnBsYXlPbkxvYWQgPSBmYWxzZTsgLy8gUmVzZXQgZmxhZyBpbiBjYXNlIGxvYWQvcGxheSBpc3N1ZWQgaW1tZWRpYXRlbHkgYmVmb3JlIHRoaXMgY29tbWFuZCwgaWUuLCBiZWZvcmUgb25NZXRhZGF0YSgpIGV2ZW50LgoJCQlteVN0YXR1cy5wbGF5T25TZWVrID0gZmFsc2U7IC8vIFJlc2V0IGZsYWcgaW4gY2FzZSBwbGF5KHRpbWUpIGlzc3VlZCBiZWZvcmUgdGhlIGNvbW1hbmQgYW5kIGlzIHN0aWxsIHNlZWtpbmcgdG8gdGltZSBzZXQuCgoJCQl2YXIgd2FzUGxheWluZzpCb29sZWFuID0gbXlTdGF0dXMuaXNQbGF5aW5nOwoKCQkJLy8gVG8gYXZvaWQgcG9zc2libGUgbG9vcHMgd2l0aCB0aW1ldXBkYXRlIGFuZCBwYXVzZSh0aW1lKS4gQSBwYXVzZSgpIGRvZXMgbm90IGhhdmUgdGhlIHByb2JsZW0uCgkJCXZhciBhbHJlYWR5UGF1c2VkQXRUaW1lOkJvb2xlYW4gPSBmYWxzZTsKCQkJaWYoIWlzTmFOKHRpbWUpICYmIG15U3RhdHVzLnBhdXNlUG9zaXRpb24gPT0gdGltZSkgewoJCQkJYWxyZWFkeVBhdXNlZEF0VGltZSA9IHRydWU7CgkJCX0KCgkJCS8vIE5lZWQgdG8gd2FpdCBmb3IgbWV0YWRhdGEgdG8gbG9hZCBiZWZvcmUgZXZlciBpc3N1aW5nIGEgcGF1c2UuIFRoZSBtZXRhZGF0YSBoYW5kbGVyIHdpbGwgY2FsbCB0aGlzIGZ1bmN0aW9uIGlmIG5lZWRlZCwgd2hlbiByZWFkeS4KCQkJaWYobXlTdHJlYW0gIT0gbnVsbCAmJiBteVN0YXR1cy5tZXRhRGF0YVJlYWR5KSB7IC8vIG15U3RyZWFtIGlzIGEgbnVsbCB1bnRpbCB0aGUgMXN0IG1lZGlhIGlzIGxvYWRlZC4gaWUuLCBUaGUgMXN0IGV2ZXIgc2V0TWVkaWEgYmVpbmcgZm9sbG93ZWQgYnkgYSBwYXVzZSgpIG9yIHBhdXNlKHQpLgoJCQkJbXlTdHJlYW0ucGF1c2UoKTsKCQkJfQoJCQlpZihteVN0YXR1cy5pc1BsYXlpbmcpIHsKCQkJCW15U3RhdHVzLmlzUGxheWluZyA9IGZhbHNlOwoJCQkJbXlTdGF0dXMucGF1c2VQb3NpdGlvbiA9IG15U3RyZWFtLnRpbWUgKiAxMDAwOwoJCQl9CgkJCQoJCQlpZighaXNOYU4odGltZSkgJiYgbXlTdGF0dXMuc3JjU2V0KSB7CgkJCQlteVN0YXR1cy5wYXVzZVBvc2l0aW9uID0gdGltZTsKCQkJfQoKCQkJaWYod2FzUGxheWluZykgewoJCQkJdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBKcGxheWVyRXZlbnQoSnBsYXllckV2ZW50LkpQTEFZRVJfUEFVU0UsIG15U3RhdHVzKSk7CgkJCX0KCgkJCWlmKG15U3RhdHVzLmlzU3RhcnRpbmdEb3dubG9hZCkgewoJCQkJcmV0dXJuIHRydWU7CgkJCX0gZWxzZSBpZihteVN0YXR1cy5sb2FkUmVxdWlyZWQoKSkgewoJCQkJaWYodGltZSA+IDApIHsgLy8gV2UgZG8gbm90IHdhbnQgdGhlIHN0b3AoKSBjb21tYW5kLCB3aGljaCBkb2VzIHBhdXNlKDApLCBjYXVzaW5nIGEgbG9hZCBvcGVyYXRpb24uCgkJCQkJcmV0dXJuIGxvYWQoKTsKCQkJCX0gZWxzZSB7CgkJCQkJcmV0dXJuIHRydWU7IC8vIFRlY2huaWNhbGx5IHRoZSBwYXVzZSgwKSBzdWNjZWVkZWQuIGllLiwgSXQgZGlkIG5vdGhpbmcsIHNpbmNlIG5vdGhpbmcgd2FzIHJlcXVpcmVkLgoJCQkJfQoJCQl9IGVsc2UgaWYobXlTdGF0dXMuaXNMb2FkaW5nIHx8IG15U3RhdHVzLmlzTG9hZGVkKSB7CgkJCQlpZihteVN0YXR1cy5tZXRhRGF0YVJlYWR5ICYmIG15U3RhdHVzLnBhdXNlUG9zaXRpb24gPiBteVN0YXR1cy5kdXJhdGlvbikgeyAvLyBUaGUgdGltZSBpcyBpbnZhbGlkLCBpZS4sIHBhc3QgdGhlIGVuZC4KCQkJCQlteVN0YXR1cy5wYXVzZVBvc2l0aW9uID0gMDsKCQkJCQlteVN0cmVhbS5zZWVrKDApOwoJCQkJCXNlZWtlZEV2ZW50KCk7IC8vIERlYWxzIHdpdGggc2Vla2luZyBlZmZlY3Qgd2hlbiB1c2luZyBzZXRNZWRpYSgpIHRoZW4gcGF1c2UoaHVnZSkuIE5COiBUaGVyZSBpcyBubyBwcmVjZWVkaW5nIHNlZWtpbmcgZXZlbnQuCgkJCQl9IGVsc2UgaWYoIWlzTmFOKHRpbWUpKSB7CgkJCQkJaWYoZ2V0U2Vla1RpbWVSYXRpbygpID4gZ2V0TG9hZFJhdGlvKCkpIHsgLy8gVXNlIGFuIGVzdGltYXRlIGJhc2VkIG9uIHRoZSBkb3dubG9hZGVkIGFtb3VudAoJCQkJCQlzZWVraW5nKHRydWUpOwoJCQkJCX0gZWxzZSB7CgkJCQkJCWlmKG15U3RhdHVzLm1ldGFEYXRhUmVhZHkpIHsgLy8gT3RoZXJ3aXNlIHNlZWsoMCkgd2lsbCBzdG9wIHRoZSBtZXRhZGF0YSBsb2FkaW5nLgoJCQkJCQkJbXlTdHJlYW0uc2VlayhteVN0YXR1cy5wYXVzZVBvc2l0aW9uLzEwMDApOwoJCQkJCQl9CgkJCQkJfQoJCQkJfQoJCQkJdGltZVVwZGF0ZXMoZmFsc2UpOwoJCQkJLy8gTmVlZCB0byBiZSBjYXJlZnVsIHdpdGggdGltZXVwZGF0ZSBldmVudCwgb3RoZXJ3aXNlIGEgcGF1c2UgaW4gYSB0aW1ldXBkYXRlIGV2ZW50IGNhbiBjYXVzZSBhIGxvb3AuCgkJCQkvLyBOZWl0aGVyIHBhdXNlKCkgbm9yIHBhdXNlKHRpbWUpIHdpbGwgY2F1c2UgYSB0aW1ldXBkYXRlIGxvb3AuCgkJCQlpZih3YXNQbGF5aW5nIHx8ICFpc05hTih0aW1lKSAmJiAhYWxyZWFkeVBhdXNlZEF0VGltZSkgewoJCQkJCXRpbWVVcGRhdGVFdmVudCgpOwoJCQkJfQoJCQkJcmV0dXJuIHRydWU7CgkJCX0gZWxzZSB7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCQl9CgkJcHVibGljIGZ1bmN0aW9uIHBsYXlIZWFkKHBlcmNlbnQ6TnVtYmVyKTpCb29sZWFuIHsKCQkJdmFyIHRpbWU6TnVtYmVyID0gcGVyY2VudCAqIGdldER1cmF0aW9uKCkgKiBnZXRMb2FkUmF0aW8oKSAvIDEwMDsKCQkJaWYobXlTdGF0dXMuaXNQbGF5aW5nIHx8IG15U3RhdHVzLnBsYXlPbkxvYWQgfHwgbXlTdGF0dXMucGxheU9uU2VlaykgewoJCQkJcmV0dXJuIHBsYXkodGltZSk7CgkJCX0gZWxzZSB7CgkJCQlyZXR1cm4gcGF1c2UodGltZSk7CgkJCX0KCQl9CgkJcHVibGljIGZ1bmN0aW9uIHNldFZvbHVtZSh2Ok51bWJlcik6dm9pZCB7CgkJCW15U3RhdHVzLnZvbHVtZSA9IHY7CgkJCW15VHJhbnNmb3JtLnZvbHVtZSA9IHY7CgkJCWlmKG15U3RyZWFtICE9IG51bGwpIHsKCQkJCW15U3RyZWFtLnNvdW5kVHJhbnNmb3JtID0gbXlUcmFuc2Zvcm07CgkJCX0KCQl9CgkJcHJpdmF0ZSBmdW5jdGlvbiB1cGRhdGVTdGF0dXNWYWx1ZXMoKTp2b2lkIHsKCQkJbXlTdGF0dXMuc2Vla1BlcmNlbnQgPSAxMDAgKiBnZXRMb2FkUmF0aW8oKTsKCQkJbXlTdGF0dXMuY3VycmVudFRpbWUgPSBnZXRDdXJyZW50VGltZSgpOwoJCQlteVN0YXR1cy5jdXJyZW50UGVyY2VudFJlbGF0aXZlID0gMTAwICogZ2V0Q3VycmVudFJhdGlvUmVsKCk7CgkJCW15U3RhdHVzLmN1cnJlbnRQZXJjZW50QWJzb2x1dGUgPSAxMDAgKiBnZXRDdXJyZW50UmF0aW9BYnMoKTsKCQkJbXlTdGF0dXMuZHVyYXRpb24gPSBnZXREdXJhdGlvbigpOwoJCX0KCQlwdWJsaWMgZnVuY3Rpb24gZ2V0TG9hZFJhdGlvKCk6TnVtYmVyIHsKCQkJaWYoKG15U3RhdHVzLmlzTG9hZGluZyB8fCBteVN0YXR1cy5pc0xvYWRlZCkgJiYgbXlTdHJlYW0uYnl0ZXNUb3RhbCA+IDApIHsKCQkJCXJldHVybiBteVN0cmVhbS5ieXRlc0xvYWRlZCAvIG15U3RyZWFtLmJ5dGVzVG90YWw7CgkJCX0gZWxzZSB7CgkJCQlyZXR1cm4gMDsKCQkJfQoJCX0KCQlwdWJsaWMgZnVuY3Rpb24gZ2V0RHVyYXRpb24oKTpOdW1iZXIgewoJCQlyZXR1cm4gbXlTdGF0dXMuZHVyYXRpb247IC8vIFNldCBmcm9tIG1ldGEgZGF0YS4KCQl9CgkJcHVibGljIGZ1bmN0aW9uIGdldEN1cnJlbnRUaW1lKCk6TnVtYmVyIHsKCQkJaWYobXlTdGF0dXMuaXNQbGF5aW5nKSB7CgkJCQlyZXR1cm4gbXlTdHJlYW0udGltZSAqIDEwMDA7CgkJCX0gZWxzZSB7CgkJCQlyZXR1cm4gbXlTdGF0dXMucGF1c2VQb3NpdGlvbjsKCQkJfQoJCX0KCQlwdWJsaWMgZnVuY3Rpb24gZ2V0Q3VycmVudFJhdGlvUmVsKCk6TnVtYmVyIHsKCQkJaWYoKGdldExvYWRSYXRpbygpID4gMCkgJiYgKGdldEN1cnJlbnRSYXRpb0FicygpIDw9IGdldExvYWRSYXRpbygpKSkgewoJCQkJcmV0dXJuIGdldEN1cnJlbnRSYXRpb0FicygpIC8gZ2V0TG9hZFJhdGlvKCk7CgkJCX0gZWxzZSB7CgkJCQlyZXR1cm4gMDsKCQkJfQoJCX0KCQlwdWJsaWMgZnVuY3Rpb24gZ2V0Q3VycmVudFJhdGlvQWJzKCk6TnVtYmVyIHsKCQkJaWYoZ2V0RHVyYXRpb24oKSA+IDApIHsKCQkJCXJldHVybiBnZXRDdXJyZW50VGltZSgpIC8gZ2V0RHVyYXRpb24oKTsKCQkJfSBlbHNlIHsKCQkJCXJldHVybiAwOwoJCQl9CgkJfQoJCXB1YmxpYyBmdW5jdGlvbiBnZXRTZWVrVGltZVJhdGlvKCk6TnVtYmVyIHsKCQkJaWYoZ2V0RHVyYXRpb24oKSA+IDApIHsKCQkJCXJldHVybiBteVN0YXR1cy5wYXVzZVBvc2l0aW9uIC8gZ2V0RHVyYXRpb24oKTsKCQkJfSBlbHNlIHsKCQkJCXJldHVybiAxOwoJCQl9CgkJfQoJCXB1YmxpYyBmdW5jdGlvbiBvbk1ldGFEYXRhSGFuZGxlcihpbmZvOk9iamVjdCk6dm9pZCB7IC8vIFVzZWQgaW4gY29ubmVjdFN0cmVhbSgpIGluIG15U3RyZWFtLmNsaWVudCBvYmplY3QuCgkJCS8vIFRoaXMgZXZlbnQgb2NjdXJzIHdoZW4ganVtcGluZyB0byB0aGUgc3RhcnQgb2Ygc3RhdGljIGZpbGVzISBpZS4sIHNlZWsoMCkgd2lsbCBjYXVzZSB0aGlzIGV2ZW50IHRvIG9jY3VyLgoJCQlpZighbXlTdGF0dXMubWV0YURhdGFSZWFkeSkgewoJCQkJdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBKcGxheWVyRXZlbnQoSnBsYXllckV2ZW50LkRFQlVHX01TRywgbXlTdGF0dXMsICJvbk1ldGFEYXRhSGFuZGxlcjogIiArIGluZm8uZHVyYXRpb24gKyAiIHwgIiArIGluZm8ud2lkdGggKyAieCIgKyBpbmZvLmhlaWdodCkpOwoKCQkJCW15U3RhdHVzLm1ldGFEYXRhUmVhZHkgPSB0cnVlOyAvLyBTZXQgZmxhZyBzbyB0aGF0IHRoaXMgZXZlbnQgb25seSBlZmZlY3RzIGpQbGF5ZXIgdGhlIDFzdCB0aW1lLgoJCQkJbXlTdGF0dXMubWV0YURhdGEgPSBpbmZvOwoJCQkJbXlTdGF0dXMuZHVyYXRpb24gPSBpbmZvLmR1cmF0aW9uICogMTAwMDsgLy8gT25seSBhdmFpbGFibGUgdmlhIE1ldGEgRGF0YS4KCQkJCWlmKGluZm8ud2lkdGggIT0gdW5kZWZpbmVkKSB7CgkJCQkJbXlWaWRlby53aWR0aCA9IG15U3RhdHVzLnZpZGVvV2lkdGggPSBpbmZvLndpZHRoOwoJCQkJfQoJCQkJaWYoaW5mby5oZWlnaHQgIT0gdW5kZWZpbmVkKSB7CgkJCQkJbXlWaWRlby5oZWlnaHQgPSBteVN0YXR1cy52aWRlb0hlaWdodCA9IGluZm8uaGVpZ2h0OwoJCQkJfQoKCQkJCWlmKG15U3RhdHVzLnBsYXlPbkxvYWQpIHsKCQkJCQlteVN0YXR1cy5wbGF5T25Mb2FkID0gZmFsc2U7IC8vIENhcHR1cmUgdGhlIGZsYWcKCQkJCQlpZihteVN0YXR1cy5wYXVzZVBvc2l0aW9uID4gMCApIHsgLy8gSW1wb3J0YW50IGZvciBzZXRNZWRpYSBmb2xsb3dlZCBieSBwbGF5KHRpbWUpLgoJCQkJCQlwbGF5KG15U3RhdHVzLnBhdXNlUG9zaXRpb24pOwoJCQkJCX0gZWxzZSB7CgkJCQkJCXBsYXkoKTsgLy8gTm90IGFsd2F5cyBzZW5kaW5nIHBhdXNlUG9zaXRpb24gYXZvaWRzIHRoZSBleHRyYSBzZWVrKDApIGZvciBhIG5vcm1hbCBwbGF5KCkgY29tbWFuZC4KCQkJCQl9CgkJCQl9IGVsc2UgewoJCQkJCXBhdXNlKG15U3RhdHVzLnBhdXNlUG9zaXRpb24pOyAvLyBBbHdheXMgc2VuZCB0aGUgcGF1c2VQb3NpdGlvbi4gSW1wb3J0YW50IGZvciBzZXRNZWRpYSgpIGZvbGxvd2VkIGJ5IHBhdXNlKHRpbWUpLiBEZWFscyB3aXRoIG5vdCByZWFkaW5nIHN0cmVhbS50aW1lIHdpdGggc2V0TWVkaWEoKSBhbmQgcGxheSgpIGltbWVkaWF0ZWx5IGZvbGxvd2VkIGJ5IHN0b3AoKSBvciBwYXVzZSgwKQoJCQkJfQoJCQkJdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBKcGxheWVyRXZlbnQoSnBsYXllckV2ZW50LkpQTEFZRVJfTE9BREVETUVUQURBVEEsIG15U3RhdHVzKSk7CgkJCX0gZWxzZSB7CgkJCQl0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEpwbGF5ZXJFdmVudChKcGxheWVyRXZlbnQuREVCVUdfTVNHLCBteVN0YXR1cywgIm9uTWV0YURhdGFIYW5kbGVyOiBBbHJlYWR5IHJlYWQgKE5PIEVGRkVDVCkiKSk7CgkJCX0KCQl9Cgl9Cn0K]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/actionscript/happyworm/jPlayer/JplayerRtmp.as</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoNCiAqIGpQbGF5ZXIgUGx1Z2luIGZvciBqUXVlcnkgSmF2YVNjcmlwdCBMaWJyYXJ5DQogKiBodHRwOi8vd3d3LmpwbGF5ZXIub3JnDQogKg0KICogQ29weXJpZ2h0IChjKSAyMDA5IC0gMjAxMyBIYXBweXdvcm0gTHRkDQogKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuDQogKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUDQogKg0KICogQXV0aG9yOiBSb2JlcnQgTS4gSGFsbA0KICogRGF0ZTogMjl0aCBKYW51YXJ5IDIwMTMNCiAqIEJhc2VkIG9uIEpwbGF5ZXJNcDQuYXMgd2l0aCBtb2RpZmljYXRpb25zIGZvciBydG1wDQogKi8NCg0KcGFja2FnZSBoYXBweXdvcm0ualBsYXllcg0Kew0KCWltcG9ydCBmbGFzaC5kaXNwbGF5LlNwcml0ZTsNCg0KCWltcG9ydCBmbGFzaC5tZWRpYS5WaWRlbzsNCglpbXBvcnQgZmxhc2gubWVkaWEuU291bmRUcmFuc2Zvcm07DQoNCglpbXBvcnQgZmxhc2gubmV0Lk5ldENvbm5lY3Rpb247DQoJaW1wb3J0IGZsYXNoLm5ldC5OZXRTdHJlYW07DQoJaW1wb3J0IGZsYXNoLm5ldC5SZXNwb25kZXI7DQoNCglpbXBvcnQgZmxhc2gudXRpbHMuVGltZXI7DQoJaW1wb3J0IGZsYXNoLnV0aWxzLmdldFRpbWVyOw0KDQoJaW1wb3J0IGZsYXNoLmV2ZW50cy5OZXRTdGF0dXNFdmVudDsNCglpbXBvcnQgZmxhc2guZXZlbnRzLlNlY3VyaXR5RXJyb3JFdmVudDsNCglpbXBvcnQgZmxhc2guZXZlbnRzLlRpbWVyRXZlbnQ7DQoJaW1wb3J0IGZsYXNoLmV2ZW50cy5FcnJvckV2ZW50Ow0KCWltcG9ydCBmbGFzaC5ldmVudHMuVW5jYXVnaHRFcnJvckV2ZW50Ow0KCWltcG9ydCBmbGFzaC51dGlscy5jbGVhckludGVydmFsOw0KCWltcG9ydCBmbGFzaC51dGlscy5zZXRJbnRlcnZhbDsNCglpbXBvcnQgaGFwcHl3b3JtLmpQbGF5ZXIuQ29ubmVjdE1hbmFnZXI7DQoNCglwdWJsaWMgY2xhc3MgSnBsYXllclJ0bXAgZXh0ZW5kcyBTcHJpdGUNCgl7DQoNCgkJcHVibGljIHZhciBteVZpZGVvOlZpZGVvID0gbmV3IFZpZGVvOw0KCQlwcml2YXRlIHZhciBteUNvbm5lY3Rpb246TmV0Q29ubmVjdGlvbjsNCgkJcHJpdmF0ZSB2YXIgbXlTdHJlYW06TmV0U3RyZWFtOw0KDQoJCXB1YmxpYyB2YXIgcmVzcG9uZGVyOlJlc3BvbmRlcjsNCg0KCQlwcml2YXRlIHZhciBzdHJlYW1OYW1lOlN0cmluZzsNCgkJDQoJCXByaXZhdGUgdmFyIGNvbm5lY3RTdHJpbmc6T2JqZWN0Ow0KDQoJCXByaXZhdGUgdmFyIGZpcnN0VGltZTpCb29sZWFuID0gdHJ1ZTsNCg0KCQlwcml2YXRlIHZhciBteVRyYW5zZm9ybTpTb3VuZFRyYW5zZm9ybSA9IG5ldyBTb3VuZFRyYW5zZm9ybSAgOw0KDQoJCXB1YmxpYyB2YXIgbXlTdGF0dXM6SnBsYXllclN0YXR1cyA9IG5ldyBKcGxheWVyU3RhdHVzICA7DQoNCgkJcHJpdmF0ZSB2YXIgQ29ubk1ncjpDb25uZWN0TWFuYWdlcj1uZXcgQ29ubmVjdE1hbmFnZXIoKTsNCg0KCQlwcml2YXRlIHZhciB0aW1lVXBkYXRlVGltZXI6VGltZXIgPSBuZXcgVGltZXIoMjUwLDApOy8vIE1hdGNoZWQgdG8gSFRNTCBldmVudCBmcmVxDQoJCXByaXZhdGUgdmFyIHByb2dyZXNzVGltZXI6VGltZXIgPSBuZXcgVGltZXIoMjUwLDApOy8vIE1hdGNoZWQgdG8gSFRNTCBldmVudCBmcmVxDQoJCXByaXZhdGUgdmFyIHNlZWtpbmdUaW1lcjpUaW1lciA9IG5ldyBUaW1lcigxMDAsMCk7Ly8gSW50ZXJuYWw6IEhvdyBvZnRlbiBzZWVraW5nIGlzIGNoZWNrZWQgdG8gc2VlIGlmIGl0IGlzIG92ZXIuDQoNCgkJcHJpdmF0ZSB2YXIgc3RhcnRCdWZmZXI6TnVtYmVyID0gMzsNCgkJcHJpdmF0ZSB2YXIgbWF4QnVmZmVyOk51bWJlciA9IDEyOw0KDQoJCXB1YmxpYyBmdW5jdGlvbiBKcGxheWVyUnRtcCh2b2x1bWU6TnVtYmVyKQ0KCQl7DQoJCQlteUNvbm5lY3Rpb24gPSBuZXcgTmV0Q29ubmVjdGlvbiAgOw0KCQkJbXlDb25uZWN0aW9uLmNsaWVudCA9IHRoaXM7DQoJCQkNCg0KCQkJLy8gTW92ZWQgdGhlIG5ldGNvbm5lY3Rpb24gbmVnb3RpYXRpb24gaW50byB0aGUgQ29ubmVjdE1hbmFnZXIuYXMgY2xhc3MgLSBub3QgbmVlZGVkIGZvciBpbml0aWFsIGNvbm5lY3Rpb24NCgkJCS8vIG1heSBuZWVkIHRvIGFkZCBldmVudEhhbmRsZXIgYmFjayBpbiBmb3IgZXJyb3JzIG9ubHkgb3IganVzdCBkaXNwYXRjaCBmcm9tIHRoZSBDb25uZWN0TWFuYWdlci4ucmV2aXNpdC4uLg0KCQkJDQoJCQkvLyBteUNvbm5lY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcihOZXRTdGF0dXNFdmVudC5ORVRfU1RBVFVTLG5ldFN0YXR1c0hhbmRsZXIpOw0KCQkJLy8gbXlDb25uZWN0aW9uLmFkZEV2ZW50TGlzdGVuZXIoU2VjdXJpdHlFcnJvckV2ZW50LlNFQ1VSSVRZX0VSUk9SLHNlY3VyaXR5RXJyb3JIYW5kbGVyKTsNCgkJCW15VmlkZW8uc21vb3RoaW5nID0gdHJ1ZTsNCgkJCXRoaXMuYWRkQ2hpbGQobXlWaWRlbyk7DQoNCgkJCXRpbWVVcGRhdGVUaW1lci5hZGRFdmVudExpc3RlbmVyKFRpbWVyRXZlbnQuVElNRVIsdGltZVVwZGF0ZUhhbmRsZXIpOw0KCQkJcHJvZ3Jlc3NUaW1lci5hZGRFdmVudExpc3RlbmVyKFRpbWVyRXZlbnQuVElNRVIscHJvZ3Jlc3NIYW5kbGVyKTsNCgkJCXNlZWtpbmdUaW1lci5hZGRFdmVudExpc3RlbmVyKFRpbWVyRXZlbnQuVElNRVIsc2Vla2luZ0hhbmRsZXIpOw0KDQoJCQlteVN0YXR1cy52b2x1bWUgPSB2b2x1bWU7DQoJCQkNCgkJCWFkZEV2ZW50TGlzdGVuZXIoVW5jYXVnaHRFcnJvckV2ZW50LlVOQ0FVR0hUX0VSUk9SLCB1bmNhdWdodEVycm9ySGFuZGxlcik7DQoNCgkJCQ0KCQl9DQoJCQ0KCQkNCiAgICAgICAgDQogICAgICAgIHByaXZhdGUgZnVuY3Rpb24gdW5jYXVnaHRFcnJvckhhbmRsZXIoZXZlbnQ6VW5jYXVnaHRFcnJvckV2ZW50KTp2b2lkDQogICAgICAgIHsNCgkJCXRyYWNlKCJVTkNBVUdIVCBFUlJPUiAtIHRyeSBsb2FkaW5nIGFnYWluIik7DQoJCQkNCiAgICAgICAgICAgIGlmIChldmVudC5lcnJvciBpcyBFcnJvcikNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB2YXIgZXJyb3I6RXJyb3IgPSBldmVudC5lcnJvciBhcyBFcnJvcjsNCgkJCQl0cmFjZShlcnJvcik7DQogICAgICAgICAgICAgICAgLy8gZG8gc29tZXRoaW5nIHdpdGggdGhlIGVycm9yDQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlIGlmIChldmVudC5lcnJvciBpcyBFcnJvckV2ZW50KQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHZhciBlcnJvckV2ZW50OkVycm9yRXZlbnQgPSBldmVudC5lcnJvciBhcyBFcnJvckV2ZW50Ow0KICAgICAgICAgICAgICAgIC8vIGRvIHNvbWV0aGluZyB3aXRoIHRoZSBlcnJvcg0KCQkJCXRyYWNlKGVycm9yRXZlbnQpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIC8vIGEgbm9uLUVycm9yLCBub24tRXJyb3JFdmVudCB0eXBlIHdhcyB0aHJvd24gYW5kIHVuY2F1Z2h0DQogICAgICAgICAgICB9DQoJCQlsb2FkKCk7DQogICAgICAgIH0NCgkJDQoJCQ0KCQkNCgkJcHJpdmF0ZSBmdW5jdGlvbiBwcm9ncmVzc1VwZGF0ZXMoYWN0aXZlOkJvb2xlYW4pOnZvaWQNCgkJew0KCQkJaWYgKGFjdGl2ZSkNCgkJCXsNCgkJCQlwcm9ncmVzc1RpbWVyLnN0YXJ0KCk7DQoJCQl9DQoJCQllbHNlDQoJCQl7DQoJCQkJcHJvZ3Jlc3NUaW1lci5zdG9wKCk7DQoJCQl9DQoJCX0NCgkJDQoJCXByaXZhdGUgZnVuY3Rpb24gcHJvZ3Jlc3NIYW5kbGVyKGU6VGltZXJFdmVudCk6dm9pZA0KCQl7DQoJCQlpZiAobXlTdGF0dXMuaXNMb2FkaW5nKQ0KCQkJew0KCQkJCWlmICgoZ2V0TG9hZFJhdGlvKCkgPT0gMSkpDQoJCQkJey8vIENsb3NlIGFzIGNhbiBnZXQgdG8gYSBsb2FkQ29tcGxldGUgZXZlbnQgc2luY2UgY2xpZW50Lm9uUGxheVN0YXR1cyBvbmx5IHdvcmtzIHdpdGggRk1TDQoJCQkJCXRoaXMuZGlzcGF0Y2hFdmVudChuZXcgSnBsYXllckV2ZW50KEpwbGF5ZXJFdmVudC5ERUJVR19NU0csbXlTdGF0dXMsInByb2dyZXNzSGFuZGxlcjogbG9hZENvbXBsZXRlIikpOw0KCQkJCQlteVN0YXR1cy5sb2FkZWQoKTsNCgkJCQkJcHJvZ3Jlc3NVcGRhdGVzKGZhbHNlKTsNCgkJCQl9DQoJCQl9DQoJCQlwcm9ncmVzc0V2ZW50KCk7DQoJCX0NCgkJDQoJCXByaXZhdGUgZnVuY3Rpb24gcHJvZ3Jlc3NFdmVudCgpOnZvaWQNCgkJew0KCQkJLy8gdGVtcG9yYXJpbHkgZGlzYWJsZWQgcHJvZ3Jlc3MgZXZlbnQgZGlzcGF0Y2hpbmcgLSBub3QgcmVhbGx5IG5lZWRlZCBmb3IgcnRtcA0KCQkJLy90aGlzLmRpc3BhdGNoRXZlbnQobmV3IEpwbGF5ZXJFdmVudChKcGxheWVyRXZlbnQuREVCVUdfTVNHLG15U3RhdHVzLCJwcm9ncmVzc0V2ZW50OiIpKTsNCgkJCXVwZGF0ZVN0YXR1c1ZhbHVlcygpOw0KCQkJdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBKcGxheWVyRXZlbnQoSnBsYXllckV2ZW50LkpQTEFZRVJfUFJPR1JFU1MsbXlTdGF0dXMpKTsNCgkJfQ0KCQkNCgkJcHJpdmF0ZSBmdW5jdGlvbiB0aW1lVXBkYXRlcyhhY3RpdmU6Qm9vbGVhbik6dm9pZA0KCQl7DQoJCQlpZiAoYWN0aXZlKQ0KCQkJew0KCQkJCXRpbWVVcGRhdGVUaW1lci5zdGFydCgpOw0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCXRpbWVVcGRhdGVUaW1lci5zdG9wKCk7DQoJCQl9DQoJCX0NCgkJDQoJCXByaXZhdGUgZnVuY3Rpb24gdGltZVVwZGF0ZUhhbmRsZXIoZTpUaW1lckV2ZW50KTp2b2lkDQoJCXsNCgkJCXRpbWVVcGRhdGVFdmVudCgpOw0KCQl9DQoJCQ0KCQlwcml2YXRlIGZ1bmN0aW9uIHRpbWVVcGRhdGVFdmVudCgpOnZvaWQNCgkJew0KCQkJdXBkYXRlU3RhdHVzVmFsdWVzKCk7DQoJCQl0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEpwbGF5ZXJFdmVudChKcGxheWVyRXZlbnQuSlBMQVlFUl9USU1FVVBEQVRFLG15U3RhdHVzKSk7DQoJCX0NCgkJcHJpdmF0ZSBmdW5jdGlvbiBzZWVraW5nKGFjdGl2ZTpCb29sZWFuKTp2b2lkDQoJCXsNCgkJCWlmIChhY3RpdmUpDQoJCQl7DQoJCQkJaWYgKCEgbXlTdGF0dXMuaXNTZWVraW5nKQ0KCQkJCXsNCgkJCQkJc2Vla2luZ0V2ZW50KCk7DQoJCQkJfQ0KCQkJCXNlZWtpbmdUaW1lci5zdGFydCgpOw0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCWlmIChteVN0YXR1cy5pc1NlZWtpbmcpDQoJCQkJew0KCQkJCQlzZWVrZWRFdmVudCgpOw0KCQkJCX0NCgkJCQlzZWVraW5nVGltZXIuc3RvcCgpOw0KCQkJfQ0KCQl9DQoJCXByaXZhdGUgZnVuY3Rpb24gc2Vla2luZ0hhbmRsZXIoZTpUaW1lckV2ZW50KTp2b2lkDQoJCXsNCgkJCWlmICgoZ2V0U2Vla1RpbWVSYXRpbygpIDw9IGdldExvYWRSYXRpbygpKSkNCgkJCXsNCgkJCQlzZWVraW5nKGZhbHNlKTsNCgkJCQlpZiAobXlTdGF0dXMucGxheU9uU2VlaykNCgkJCQl7DQoJCQkJCW15U3RhdHVzLnBsYXlPblNlZWsgPSBmYWxzZTsvLyBDYXB0dXJlIHRoZSBmbGFnLg0KCQkJCQlwbGF5KG15U3RhdHVzLnBhdXNlUG9zaXRpb24pOy8vIE11c3QgcGFzcyB0aW1lIG9yIHRoZSBzZWVrIHRpbWUgaXMgbmV2ZXIgc2V0Lg0KCQkJCX0NCgkJCQllbHNlDQoJCQkJew0KCQkJCQlwYXVzZShteVN0YXR1cy5wYXVzZVBvc2l0aW9uKTsvLyBNdXN0IHBhc3MgdGltZSBvciB0aGUgc3RyZWFtLnRpbWUgaXMgcmVhZC4NCgkJCQl9DQoJCQl9DQoJCQllbHNlIGlmIChteVN0YXR1cy5tZXRhRGF0YVJlYWR5ICYmIG15U3RhdHVzLnBhdXNlUG9zaXRpb24gPiBteVN0YXR1cy5kdXJhdGlvbikNCgkJCXsNCgkJCQkvLyBJbGxlZ2FsIHNlZWsgdGltZQ0KCQkJCXNlZWtpbmcoZmFsc2UpOw0KCQkJCXBhdXNlKDApOw0KCQkJfQ0KCQl9DQoJCXByaXZhdGUgZnVuY3Rpb24gc2Vla2luZ0V2ZW50KCk6dm9pZA0KCQl7DQoJCQlteVN0YXR1cy5pc1NlZWtpbmcgPSB0cnVlOw0KCQkJdXBkYXRlU3RhdHVzVmFsdWVzKCk7DQoJCQl0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEpwbGF5ZXJFdmVudChKcGxheWVyRXZlbnQuSlBMQVlFUl9TRUVLSU5HLG15U3RhdHVzKSk7DQoJCX0NCgkJcHJpdmF0ZSBmdW5jdGlvbiBzZWVrZWRFdmVudCgpOnZvaWQNCgkJew0KCQkJbXlTdGF0dXMuaXNTZWVraW5nID0gZmFsc2U7DQoJCQl1cGRhdGVTdGF0dXNWYWx1ZXMoKTsNCgkJCXRoaXMuZGlzcGF0Y2hFdmVudChuZXcgSnBsYXllckV2ZW50KEpwbGF5ZXJFdmVudC5KUExBWUVSX1NFRUtFRCxteVN0YXR1cykpOw0KCQl9DQoNCg0KCQlwcml2YXRlIGZ1bmN0aW9uIG5ldFN0YXR1c0hhbmRsZXIoZTpOZXRTdGF0dXNFdmVudCk6dm9pZA0KCQl7DQoJCQl0cmFjZSgoIm5ldFN0YXR1c0hhbmRsZXI6ICIgKyBlLmluZm8uY29kZSkpOw0KCQkJLy90aGlzLmRpc3BhdGNoRXZlbnQobmV3IEpwbGF5ZXJFdmVudChKcGxheWVyRXZlbnQuREVCVUdfTVNHLG15U3RhdHVzLCJuZXRTdGF0dXNIYW5kbGVyOiAnIiArIGUuaW5mby5jb2RlICsgIiciKSk7DQoJCQkvL3RyYWNlKCJCRUZPUkU6IGJ1ZmZlclRpbWU6ICIrbXlTdHJlYW0uYnVmZmVyVGltZSsiIC0gYnVmZmVyVGltZU1heDogIitteVN0cmVhbS5idWZmZXJUaW1lTWF4KTsNCgkJCXN3aXRjaCAoZS5pbmZvLmNvZGUpDQoJCQl7DQoJCQkJY2FzZSAiTmV0Q29ubmVjdGlvbi5Db25uZWN0LlN1Y2Nlc3MiIDoNCgkJCQkJLy8gY29ubmVjdFN0cmVhbSgpOyAvLyBUaGlzIG1ldGhvZCBkaWQgbm90IGRvIGFueXRoaW5nIHNlbnNpYmxlIGFueXdheS4NCgkJCQkJLy8gRG8gbm90IHRoaW5rIHRoaXMgY2FzZSBvY2N1cnMuIFRoaXMgd2FzIGZvciB0aGUgc3RhdGljIGZpbGUgY29ubmVjdGlvbi4NCgkJCQkJLy8gV2hpY2ggbm93IHNlZW1zIHRvIGJlIGhhbmRsZWQgYnkgdGhlIENvbm5lY3Rpb24gTWFuYWdlci4NCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAiTmV0U3RyZWFtLkJ1ZmZlci5GdWxsIjoNCgkJCQlpZihjb25uZWN0U3RyaW5nLnN0cmVhbVRZUEUgPT0gIkxJVkUiKSB7DQoJCQkJCQlteVN0cmVhbS5idWZmZXJUaW1lID0gc3RhcnRCdWZmZXI7IA0KCQkJCQl9IGVsc2Ugew0KCQkJCQkJbXlTdHJlYW0uYnVmZmVyVGltZSA9IG1heEJ1ZmZlcjsgDQoJCQkJCX0NCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAiTmV0U3RyZWFtLkJ1ZmZlci5GbHVzaCI6DQoJCQkJCW15U3RyZWFtLmJ1ZmZlclRpbWUgPSBzdGFydEJ1ZmZlcjsgDQoJCQkJCWJyZWFrOwkNCgkJCQljYXNlICJOZXRTdHJlYW0uQnVmZmVyLkVtcHR5IjoNCgkJCQkJbXlTdHJlYW0uYnVmZmVyVGltZSA9IHN0YXJ0QnVmZmVyOyANCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAiTmV0U3RyZWFtLlNlZWsuTm90aWZ5IjoNCgkJCQkJbXlTdHJlYW0uYnVmZmVyVGltZSA9IHN0YXJ0QnVmZmVyOyANCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAiTmV0U3RyZWFtLlBsYXkuU3RhcnQiIDoNCg0KCQkJCQlpZiAoZmlyc3RUaW1lKSB7DQoJCQkJCQlmaXJzdFRpbWUgPSBmYWxzZTsgLy8gQ2FwdHVyZSBmbGFnDQoNCgkJCQkJCW15U3RhdHVzLmxvYWRpbmcoKTsNCgkJCQkJCXRoaXMuZGlzcGF0Y2hFdmVudChuZXcgSnBsYXllckV2ZW50KEpwbGF5ZXJFdmVudC5KUExBWUVSX0xPQURTVEFSVCxteVN0YXR1cykpOw0KDQoJCQkJCQkvLyBOQjogV2l0aCBNUDQgcGxheWVyIGJvdGggYXVkaW8gYW5kIHZpZGVvIHR5cGVzIGdldCBjb25uZWN0ZWQgdG8gbXlWaWRlby4NCgkJCQkJCS8vIE5COiBIYWQgYmVsaWV2ZWQgaXQgd2FzIGltcG9ydGFudCBmb3IgdGhlIGF1ZGlvIHRvbywgb3RoZXJ3aXNlIHdoYXQgcGxheXMgaXQ/DQoJCQkJCQlpZih2aWRlb0JpbmRpbmcpIHsNCgkJCQkJCQlteVZpZGVvLmF0dGFjaE5ldFN0cmVhbShteVN0cmVhbSk7DQoJCQkJCQl9DQoNCgkJCQkJCXNldFZvbHVtZShteVN0YXR1cy52b2x1bWUpOw0KDQoJCQkJCQkvLyBSZWFsbHkgdGhlIHByb2dyZXNzIGV2ZW50IGp1c3QgbmVlZHMgdG8gYmUgZ2VuZXJhdGVkIG9uY2UsIGFuZCBzaG91bGQgcHJvYmFibHkgaGFwcGVuIGJlZm9yZSBub3cuDQoJCQkJCQlwcm9ncmVzc1VwZGF0ZXModHJ1ZSk7DQoNCgkJCQkJCS8vIFRoaXMgaXMgYW4gQVNTVU1QVElPTiEgTWFkZSBpdCBzbyB0aGF0IHRoZSBkZWZhdWx0IEdVSSB3b3JrZWQuDQoJCQkJCQkvLyBIZW5jZSB3aHkgdGhpcyBwYXJ0IHNob3VsZCBiZSByZWZhY3RvcmVkLg0KCQkJCQkJLy8gTG90cyBvZiBjb21tYW5kcyBzZXF1ZW5jZXMgYWZ0ZXIgc2V0TWVkaWEgd291bGQgYmUgY29ycnVwdGVkIGJ5IHRoaXMgYXNzdW1wdGlvbi4NCgkJCQkJCS8vIEJhc2NhbGx5LCB3ZSBhc3N1bWUgdGhhdCBhZnRlciBhIHNldE1lZGlhLCB5b3Ugd2lsbCBwbGF5IGl0Lg0KCQkJCQkJLy8gRG9pbmcgc2V0TWVkaWEgYW5kIHBhdXNlKDE1KSBjYXVzZSB0aGUgZmxhZyB0byBiZSBzZXQgaW5jb3JyZWN0bHkgYW5kIHRoZSBHVUkgbG9ja3MgdXAuDQoJCQkJCQlteVN0YXR1cy5pc1BsYXlpbmcgPSB0cnVlOyAvLyBTaG91bGQgYmUgaGFuZGxlZCBlbHNld2hlcmUuDQoJCQkJCX0NCg0KCQkJCQkvLyBVbmRlciBSVE1QLCB0aGlzIGV2ZW50IGNvZGUgb2NjdXJzIGV2ZXJ5IHRpbWUgdGhlIG1lZGlhIHN0YXJ0cyBwbGF5aW5nIGFuZCB3aGVuIGEgbmV3IHBvc2l0aW9uIGlzIHNlZWtlZCB0bywgZXZlbiB3aGVuIHBhdXNlZC4NCg0KCQkJCQkvLyBTaW5jZSB1bmRlciBSVE1QIHRoZSBldmVudCBiZWhhdmlvdXIgaXMgcXVpdGUgZGlmZmVyZW50LCBiZWxpZXZlIGEgcmVmYWN0b3IgaXMgYmVzdCBoZXJlLg0KCQkJCQkvLyBpZS4sIFVuZGVyIFJUTVAgd2Ugc2hvdWxkIGJlIGFibGUgdG8ga25vdyBhIGxvdCBtb3JlIGluZm8gYWJvdXQgdGhlIHN0cmVhbS4NCg0KCQkJCQkvLyBTZWUgb25NZXRhRGF0YUhhbmRsZXIoKSBmb3Igb3RoZXIgY29uZGl0aW9uLCBzaW5jZSBkdXJhdGlvbiBpcyB2aXRhbC4NCgkJCQkJLy8gU2VlIG9uUmVzdWx0KCkgcmVzcG9uc2UgaGFuZGxlciB0b28uDQoJCQkJCS8vIEFwcGVhcnMgdG8gYmUgc29tZSBkdXBsaWNhdGlvbiBiZXR3ZWVuIG9uTWV0YURhdGFIYW5kbGVyKCkgYW5kIG9uUmVzdWx0KCksIGFsb25nIHdpdGggYSByYWNlIGJldHdlZW4gdGhlbSBvY2N1cmluZy4NCg0KCQkJCQlicmVhazsNCgkJCQljYXNlICJOZXRTdHJlYW0uUGxheS5VbnB1Ymxpc2hOb3RpZnkiOg0KCQkJCQlteVN0cmVhbS5idWZmZXJUaW1lID0gc3RhcnRCdWZmZXI7IC8vIHdhcyAzDQoJCQkJY2FzZSAiTmV0U3RyZWFtLlBsYXkuU3RvcCIgOg0KCQkJCQlteVN0cmVhbS5idWZmZXJUaW1lID0gc3RhcnRCdWZmZXI7IC8vIHdhcyAzDQoJCQkJCS8vdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBKcGxheWVyRXZlbnQoSnBsYXllckV2ZW50LkRFQlVHX01TRyxteVN0YXR1cywiTmV0U3RyZWFtLlBsYXkuU3RvcDogZ2V0RHVyYXRpb24oKSAtIGdldEN1cnJlbnRUaW1lKCkgPSAiICsgKGdldER1cmF0aW9uKCkgLSBnZXRDdXJyZW50VGltZSgpKSkpOw0KDQoJCQkJCS8vIENoZWNrIGlmIG1lZGlhIGlzIGF0IHRoZSBlbmQgKG9yIGNsb3NlKSBvdGhlcndpc2UgdGhpcyB3YXMgZHVlIHRvIGRvd25sb2FkIGJhbmR3aWR0aCBzdG9wcGluZyBwbGF5YmFjay4gaWUuLCBEb3dubG9hZCBpcyBub3QgZmFzdCBlbm91Z2guDQoJCQkJCWlmIChNYXRoLmFicygoZ2V0RHVyYXRpb24oKSAtIGdldEN1cnJlbnRUaW1lKCkpKSA8IDE1MCkNCgkJCQkJey8vIFRlc3RpbmcgZm91bmQgMTUwbXMgd29ya2VkIGJlc3QgZm9yIE00QSBmaWxlcywgd2hlcmUgcGxheUhlYWQoOTkuOSkgY2F1c2VkIGEgc3R1Y2sgc3RhdGUgZHVlIHRvIGZpcmluZyB3aXRoIH4xMTZtcyBsZWZ0IHRvIHBsYXkuDQoJCQkJCQkvL2VuZGVkRXZlbnQoKTsNCgkJCQkJfQ0KCQkJCQlicmVhazsNCgkJCQljYXNlICJOZXRTdHJlYW0uU2Vlay5JbnZhbGlkVGltZSIgOg0KCQkJCQkvLyBVc2VkIGZvciBjYXB0dXJpbmcgaW52YWxpZCBzZXQgdGltZXMgYW5kIGNsaWNrcyBvbiB0aGUgZW5kIG9mIHRoZSBwcm9ncmVzcyBiYXIuDQoJCQkJCWVuZGVkRXZlbnQoKTsNCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAiTmV0U3RyZWFtLlBsYXkuU3RyZWFtTm90Rm91bmQiIDoNCgkJCQkJbXlTdGF0dXMuZXJyb3IoKTsNCgkJCQkJLy8gUmVzZXRzIHN0YXR1cyBleGNlcHQgdGhlIHNyYywgYW5kIGl0IHNldHMgc3JjRXJyb3IgcHJvcGVydHkuOw0KCQkJCQl0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEpwbGF5ZXJFdmVudChKcGxheWVyRXZlbnQuSlBMQVlFUl9FUlJPUixteVN0YXR1cykpOw0KCQkJCQlicmVhazsJCQkJDQoJCQl9DQoJCQkvL3RyYWNlKCJBRlRFUjogYnVmZmVyVGltZTogIitteVN0cmVhbS5idWZmZXJUaW1lKyIgLSBidWZmZXJUaW1lTWF4OiAiK215U3RyZWFtLmJ1ZmZlclRpbWVNYXgpOw0KCQkJLy8gIk5ldFN0cmVhbS5TZWVrLk5vdGlmeSIgZXZlbnQgY29kZSBpcyBub3QgdmVyeSB1c2VmdWwuIEl0IG9jY3VycyBhZnRlciBldmVyeSBzZWVrKHQpIGNvbW1hbmQgaXNzdWVkIGFuZCBkb2VzIG5vdCBhcHBlYXIgdG8gd2FpdCBmb3IgdGhlIG1lZGlhIHRvIGJlIHJlYWR5Lg0KCQl9DQoJCXByaXZhdGUgZnVuY3Rpb24gZW5kZWRFdmVudCgpOnZvaWQNCgkJew0KCQkJdHJhY2UoIkVOREVEIFNUUkVBTSBFVkVOVCIpOw0KCQkJdmFyIHdhc1BsYXlpbmc6Qm9vbGVhbiA9IG15U3RhdHVzLmlzUGxheWluZzsNCg0KCQkJLy8gdGltZVVwZGF0ZXMoZmFsc2UpOw0KCQkJLy8gdGltZVVwZGF0ZUV2ZW50KCk7DQoJCQlwYXVzZSgwKTsNCg0KCQkJaWYgKHdhc1BsYXlpbmcpDQoJCQl7DQoJCQkJdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBKcGxheWVyRXZlbnQoSnBsYXllckV2ZW50LkpQTEFZRVJfRU5ERUQsbXlTdGF0dXMpKTsNCgkJCX0NCgkJfQ0KCQlwcml2YXRlIGZ1bmN0aW9uIHNlY3VyaXR5RXJyb3JIYW5kbGVyKGV2ZW50OlNlY3VyaXR5RXJyb3JFdmVudCk6dm9pZA0KCQl7DQoJCQkvL3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgSnBsYXllckV2ZW50KEpwbGF5ZXJFdmVudC5ERUJVR19NU0csbXlTdGF0dXMsInNlY3VyaXR5RXJyb3JIYW5kbGVyLiIpKTsNCgkJfQ0KCQlwdWJsaWMgZnVuY3Rpb24gY29ubmVjdFN0cmVhbSgpOnZvaWQNCgkJew0KCQkJdHJhY2UoIkNPTk5FQ1RJTkciKTsNCgkJCS8vdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBKcGxheWVyRXZlbnQoSnBsYXllckV2ZW50LkRFQlVHX01TRyxteVN0YXR1cywiY29ubmVjdFN0cmVhbS4iKSk7DQoJCQkvL3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgSnBsYXllckV2ZW50KEpwbGF5ZXJFdmVudC5KUExBWUVSX0NBTlBMQVksbXlTdGF0dXMpKTsNCgkJCQ0KCQkJdGltZVVwZGF0ZXModHJ1ZSk7DQoJCQlwcm9ncmVzc1VwZGF0ZXModHJ1ZSk7DQoJCQkvL215VmlkZW8uYXR0YWNoTmV0U3RyZWFtKG15U3RyZWFtKTsNCgkJCS8vc2V0Vm9sdW1lKG15U3RhdHVzLnZvbHVtZSk7DQoJCX0NCg0KCQlwcml2YXRlIGZ1bmN0aW9uIG9uUmVzdWx0KHJlc3VsdDpPYmplY3QpOnZvaWQNCgkJew0KCQkJdHJhY2UoIk9uUmVzdWx0IEVWRU5UIEZJUkVEISIpOw0KCQkJbXlTdGF0dXMuZHVyYXRpb24gPSBwYXJzZUZsb2F0KHJlc3VsdC50b1N0cmluZygpKSAqIDEwMDA7DQoJCQl0cmFjZSgoKCJUaGUgc3RyZWFtIGxlbmd0aCBpcyAiICsgcmVzdWx0KSArICIgc2Vjb25kcyIpKTsNCg0KCQkJaWYoIW15Q29ubmVjdGlvbi5jb25uZWN0ZWQpIHsNCgkJCQlsb2FkKCk7DQoJCQl9IGVsc2Ugew0KCQkJCS8vdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBKcGxheWVyRXZlbnQoSnBsYXllckV2ZW50LkpQTEFZRVJfQ0FOUExBWSxteVN0YXR1cywiUm9ja2l0ISIpKTsNCgkJCQ0KCQkJLy9teVN0YXR1cy5sb2FkZWQoKTsNCgkJCS8vbXlTdGF0dXMuaXNQbGF5aW5nPXRydWU7IA0KCQkJaWYgKCEgbXlTdGF0dXMubWV0YURhdGFSZWFkeSkNCgkJCXsNCgkJCQkvL3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgSnBsYXllckV2ZW50KEpwbGF5ZXJFdmVudC5ERUJVR19NU0csbXlTdGF0dXMsIm9uTWV0YURhdGFIYW5kbGVyOiAiICsgbXlTdGF0dXMuZHVyYXRpb24pKTsNCg0KCQkJCS8vICBBbGxvdyBtdWx0aXBsZSBvblJlc3VsdCBIYW5kbGVycyB0byBhZmZlY3Qgc2l6ZS4gQXMgcGVyIFBSICMxMzEgYW5kICM5OC4NCgkJCQkvLyAgbXlTdGF0dXMubWV0YURhdGFSZWFkeSA9IHRydWU7DQoNCgkJCQkvKnZhciBpbmZvOk9iamVjdCA9IG5ldyBPYmplY3QoKTsNCgkJCQlpbmZvLmR1cmF0aW9uPW15U3RhdHVzLmR1cmF0aW9uDQoJCQkJaW5mby53aWR0aD11bmRlZmluZWQ7DQoJCQkJaW5mby5oZWlnaHQ9dW5kZWZpbmVkOw0KCQkJCW15U3RhdHVzLm1ldGFEYXRhID0gaW5mbzsNCgkJCQkqLw0KCQkJCWlmIChteVN0YXR1cy5wbGF5T25Mb2FkKQ0KCQkJCXsNCgkJCQkJbXlTdGF0dXMucGxheU9uTG9hZCA9IGZhbHNlOy8vIENhcHR1cmUgdGhlIGZsYWcNCgkJCQkJaWYgKG15U3RhdHVzLnBhdXNlUG9zaXRpb24gPiAwKQ0KCQkJCQl7Ly8gSW1wb3J0YW50IGZvciBzZXRNZWRpYSBmb2xsb3dlZCBieSBwbGF5KHRpbWUpLg0KCQkJCQkJcGxheShteVN0YXR1cy5wYXVzZVBvc2l0aW9uKTsNCgkJCQkJfQ0KCQkJCQllbHNlDQoJCQkJCXsNCgkJCQkJCXBsYXkoKTsvLyBOb3QgYWx3YXlzIHNlbmRpbmcgcGF1c2VQb3NpdGlvbiBhdm9pZHMgdGhlIGV4dHJhIHNlZWsoMCkgZm9yIGEgbm9ybWFsIHBsYXkoKSBjb21tYW5kLg0KCQkJCQl9DQoNCgkJCQl9DQoJCQkJZWxzZQ0KCQkJCXsNCgkJCQkJcGF1c2UobXlTdGF0dXMucGF1c2VQb3NpdGlvbik7Ly8gQWx3YXlzIHNlbmQgdGhlIHBhdXNlUG9zaXRpb24uIEltcG9ydGFudCBmb3Igc2V0TWVkaWEoKSBmb2xsb3dlZCBieSBwYXVzZSh0aW1lKS4gRGVhbHMgd2l0aCBub3QgcmVhZGluZyBzdHJlYW0udGltZSB3aXRoIHNldE1lZGlhKCkgYW5kIHBsYXkoKSBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSBzdG9wKCkgb3IgcGF1c2UoMCkNCgkJCQl9DQoJCQkJdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBKcGxheWVyRXZlbnQoSnBsYXllckV2ZW50LkpQTEFZRVJfTE9BREVETUVUQURBVEEsbXlTdGF0dXMpKTsNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQkvL3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgSnBsYXllckV2ZW50KEpwbGF5ZXJFdmVudC5ERUJVR19NU0csbXlTdGF0dXMsIm9uTWV0YURhdGFIYW5kbGVyOiBBbHJlYWR5IHJlYWQgKE5PIEVGRkVDVCkiKSk7DQoJCQl9DQoJCQkNCgkJCW15U3RyZWFtLnBsYXkoc3RyZWFtTmFtZSk7DQoJCQl0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEpwbGF5ZXJFdmVudChKcGxheWVyRXZlbnQuSlBMQVlFUl9QTEFZLG15U3RhdHVzKSk7DQoJCQkvLyB0aW1lVXBkYXRlcyhmYWxzZSk7DQoJCQl9DQoNCgkJfQ0KCQkNCgkJcHJpdmF0ZSB2YXIgb3ZlclJpZGVDb25uZWN0OkJvb2xlYW49ZmFsc2U7DQoJCXB1YmxpYyBmdW5jdGlvbiBkb25lWWV0KCk6dm9pZCB7DQoJCQlpZighbXlDb25uZWN0aW9uLmNvbm5lY3RlZCkgew0KCQkJCS8vIHRyeSBhZ2Fpbg0KCQkJCUNvbm5NZ3Iuc3RvcEFsbCh0cnVlKTsNCgkJCQlvdmVyUmlkZUNvbm5lY3Q9dHJ1ZTsNCgkJCQl0cmFjZSgiQ29ubmVjdGVkOiAiK215Q29ubmVjdGlvbi5jb25uZWN0ZWQrIiAtICIrbXlTdGF0dXMubG9hZFJlcXVpcmVkKCkpOwkJCQkNCgkJCQlsb2FkKCk7DQoJCQl9DQoJCX0NCg0KCQlwcml2YXRlIHZhciB2aWRlb0JpbmRpbmc6Qm9vbGVhbj1mYWxzZTsNCgkJcHVibGljIGZ1bmN0aW9uIHNldEZpbGUoc3JjOlN0cmluZyx2aWRlb1N1cHBvcnQ6Qm9vbGVhbj1mYWxzZSk6dm9pZA0KCQl7DQoJCQkvLyB2aWRlb1N1cHBvcnQgdHVybnMgb24vb2ZmIHZpZGVvIC0gYnkgZGVmYXVsdCBubyB2aWRlbywgYXVkaW8gb25seQ0KCQkJdmlkZW9CaW5kaW5nPXZpZGVvU3VwcG9ydDsNCgkJCS8qIERvbnQgY2xvc2UgdGhlIHN0cmVhbSBvciBuZXRjb25uZWN0aW9uIGhlcmUgYW55bW9yZSBzbyB3ZSBjYW4gcmVjeWNsZSBpZiBob3N0L2FwcG5hbWUgYXJlIHRoZSBzYW1lDQoJCQlpZiAoKG15U3RyZWFtICE9IG51bGwpKQ0KCQkJew0KCQkJCW15U3RyZWFtLmNsb3NlKCk7DQoJCQkJbXlDb25uZWN0aW9uLmNsb3NlKCk7DQoJCQl9DQoJCQkqLw0KCQkJaWYoQ29ubk1nci5nZXROZWdvdGlhdGluZygpID09IHRydWUpIHsNCgkJCSAgICAvL0Nvbm5NZ3Iuc3RvcEFsbCgpOw0KCQkJCUNvbm5NZ3Iuc2V0TmVnb3RpYXRpbmcoZmFsc2UpOw0KCQkJfQ0KCQkJDQoJCQlteVZpZGVvLmNsZWFyKCk7DQoJCQkNCgkJCXByb2dyZXNzVXBkYXRlcyhmYWxzZSk7DQoJCQl0aW1lVXBkYXRlcyhmYWxzZSk7DQoNCgkJCW15U3RhdHVzLnJlc2V0KCk7DQoJCQlteVN0YXR1cy5zcmMgPSBzcmM7DQoJCQlteVN0YXR1cy5zcmNTZXQgPSB0cnVlOw0KDQoJCQlmaXJzdFRpbWUgPSB0cnVlOw0KCQkJDQoJCQkvL215U3RhdHVzLmxvYWRlZCgpOw0KCQkJDQoJCQlpZihzcmMgIT0gIiIpIHsNCgkJCQl0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEpwbGF5ZXJFdmVudChKcGxheWVyRXZlbnQuSlBMQVlFUl9DQU5QTEFZLG15U3RhdHVzKSk7DQoJCQl9DQoJCQkNCgkJCS8vdGltZVVwZGF0ZUV2ZW50KCk7DQoJCX0NCgkJDQoJCXB1YmxpYyBmdW5jdGlvbiBzaHV0RG93bk5jTnMoKTp2b2lkIHsNCgkJCXRyYWNlKCJDb25uZWN0aW9ucyBDbG9zZWQiKTsNCgkJCXRpbWVVcGRhdGVzKGZhbHNlKTsNCgkJCXByb2dyZXNzVXBkYXRlcyhmYWxzZSk7DQoJCQlteVN0cmVhbS5jbG9zZSgpOw0KCQkJbXlDb25uZWN0aW9uLmNsb3NlKCk7DQoJCQkNCgkJCW15U3RhdHVzLnJlc2V0KCk7DQoJCQl0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEpwbGF5ZXJFdmVudChKcGxheWVyRXZlbnQuSlBMQVlFUl9FTkRFRCxteVN0YXR1cykpOw0KCQl9DQoNCgkJcHVibGljIGZ1bmN0aW9uIGNsZWFyRmlsZSgpOnZvaWQNCgkJew0KCQkJaWYgKG15U3RyZWFtICE9IG51bGwpDQoJCQl7DQoJCQkJbXlTdHJlYW0uY2xvc2UoKTsNCgkJCQkvLyBEb250IGNsb3NlIHRoZSBuZXRDb25uZWN0aW9uIGhlcmUgYW55IGxvbmdlciwgYXMgd2UgbWF5IHJlY3ljbGUgaXQgbGF0ZXINCgkJCQkvLyBtYXkgbmVlZCBhbiBleHRyYSB3YXkgdG8gY2xvc2UgbWFudWFsbHkgaWYgc3dpdGNoaW5nIG1lZGlhIHR5cGVzIGFmdGVyIGFuIHJ0bXAgc2Vzc2lvbiAtIHJldmlzaXQNCgkJCQkvLyBteUNvbm5lY3Rpb24uY2xvc2UoKTsNCgkJCQlteVN0YXR1cy5yZXNldCgpOw0KCQkJfQ0KCQkJc2V0RmlsZSgiIik7DQoJCQlteVN0YXR1cy5zcmNTZXQgPSBmYWxzZTsNCgkJfQ0KDQoJCXB1YmxpYyBmdW5jdGlvbiBwYXJzZVJUTVBzcmNDb25uZWN0KHJ0bXBTcmM6U3RyaW5nKTpPYmplY3QNCgkJew0KCQkJLy8gcnRtcDovL2NwNzYzNzIubGl2ZS5lZGdlZmNzLm5ldC9saXZlL0ZsYXNoMU9mZmljZUA2MDIwNA0KCQkJdmFyIGFwcE5hbWU6U3RyaW5nID0gIiI7DQoJCQl2YXIgc3RyZWFtRmlsZU5hbWU6U3RyaW5nID0gIiI7DQoJCQl2YXIgc3RhcnRJbmRleDp1aW50ID0gMiArIHJ0bXBTcmMuaW5kZXhPZigiLy8iKTsNCgkJCXZhciBzdHJlYW1UWVBFOlN0cmluZyA9ICJyZWNvcmRlZCI7DQoJCQl2YXIgaG9zdDpTdHJpbmcgPSBydG1wU3JjLnN1YnN0cihzdGFydEluZGV4KTsNCgkJCXZhciBwb3J0OlN0cmluZyA9ICIiOw0KCQkJaG9zdCA9IGhvc3Quc3Vic3RyKDAsaG9zdC5pbmRleE9mKCIvIikpOw0KCQkJdmFyIGVuZEhvc3Q6TnVtYmVyID0gc3RhcnRJbmRleCArIGhvc3QubGVuZ3RoICsgMTsNCg0KCQkJLy8gU2VlIGlmIHRoZXJlIGlzIGEgaG9zdCBwb3J0IHNwZWNpZmllZA0KCQkJaWYoaG9zdC5pbmRleE9mKCI6IikgIT0gLTEpIHsNCgkJCQlwb3J0ID0gaG9zdC5zdWJzdHIoaG9zdC5pbmRleE9mKCI6IikrMSk7DQoJCQkJaG9zdCA9IGhvc3Quc3Vic3RyKDAsaG9zdC5pbmRleE9mKCI6IikpOw0KCQkJfQ0KCQkJDQoJCQkvLyBBa2FtYWkgc3BlY2lmaWMgbGl2ZSBzdHJlYW1zDQoJCQlpZiAocnRtcFNyYy5sYXN0SW5kZXhPZigiL2xpdmUvIikgIT0gLTEpDQoJCQl7DQoJCQkJdHJhY2UoIkxJVkUhIik7DQoJCQkJDQoJCQkJDQoJCQkJYXBwTmFtZSA9IHJ0bXBTcmMuc3Vic3RyaW5nKGVuZEhvc3QscnRtcFNyYy5sYXN0SW5kZXhPZigiL2xpdmUvIikgKyA2KTsNCgkJCQlzdHJlYW1GaWxlTmFtZSA9IHJ0bXBTcmMuc3Vic3RyKHJ0bXBTcmMubGFzdEluZGV4T2YoIi9saXZlLyIpICsgNik7DQoJCQkJc3RyZWFtVFlQRT0iTElWRSI7DQoJCQl9IGVsc2Ugew0KCQkJCXN0cmVhbVRZUEU9IlJFQ09SREVEIjsNCgkJCQkNCgkJCX0NCgkJCQ0KCQkJLy8gTXAzIHN0cmVhbXMgd2l0aCBzdGFuZGFyZCBhcHBuYW1lL25vIGluc3RhbmNlIG5hbWUsIG1wMzogcHJlZml4DQoJCQlpZiAocnRtcFNyYy5pbmRleE9mKCIubXAzIikgIT0gLTEpDQoJCQl7DQoJCQkJYXBwTmFtZSA9IHJ0bXBTcmMuc3Vic3RyaW5nKGVuZEhvc3QscnRtcFNyYy5pbmRleE9mKCJtcDM6IikpOw0KCQkJCXN0cmVhbUZpbGVOYW1lID0gcnRtcFNyYy5zdWJzdHIocnRtcFNyYy5pbmRleE9mKCJtcDM6IikpOw0KCQkJCXN0cmVhbUZpbGVOYW1lID0gc3RyZWFtRmlsZU5hbWUuc3Vic3RyKDAsc3RyZWFtRmlsZU5hbWUubGVuZ3RoIC0gNCk7DQoJCQl9DQoJCQkvLyBydG1wOi8vY3A4MzgxMy5lZGdlZmNzLm5ldC9vbmRlbWFuZC9yb2JfaGFsbC9icnVjZV9jYW1wYmVsbF9vbGRzcGljZS5mbHYNCgkJCQ0KCQkJLy8gTXA0IHN0cmVhbXMgd2l0aCBzdGFuZGFyZCBhcHBuYW1lL25vIGluc3RhbmNlIG5hbWUsIG1wNDogcHJlZml4DQoJCQlpZiAocnRtcFNyYy5pbmRleE9mKCJtcDQ6IikgIT0gLTEpDQoJCQl7DQoJCQkJYXBwTmFtZSA9IHJ0bXBTcmMuc3Vic3RyaW5nKGVuZEhvc3QscnRtcFNyYy5pbmRleE9mKCJtcDQ6IikpOw0KCQkJCXN0cmVhbUZpbGVOYW1lID0gcnRtcFNyYy5zdWJzdHIocnRtcFNyYy5pbmRleE9mKCJtcDQ6IikpOw0KCQkJCXN0cmVhbUZpbGVOYW1lID0gc3RyZWFtRmlsZU5hbWUuc3Vic3RyKDAsc3RyZWFtRmlsZU5hbWUubGVuZ3RoIC0gNCk7DQoJCQl9DQoJCQkNCgkJCS8vIC5mNHYgc3RyZWFtcyB3aXRoIHN0YW5kYXJkIGFwcG5hbWUvbm8gaW5zdGFuY2UgbmFtZSwgLmZsdiBleHRlbnNpb24NCgkJCWlmIChydG1wU3JjLmluZGV4T2YoIi5mbHYiKSAhPSAtMSkNCgkJCXsNCgkJCS8vIGFsbG93IHVzZSBvZiBeIGluIHJ0bXAgc3RyaW5nIHRvIGluZGljYXRlIGJyZWFrIHBvaW50IGZvciBhbiBhcHBuYW1lIG9yIGluc3RhbmNlIG5hbWUgdGhhdA0KCQkJLy8gY29udGFpbnMgYSAvIGluIGl0IHdoZXJlIGl0IHdvdWxkIHJlcXVpcmUgbXVsdGlwbGUgY29ubmVjdGlvbiBhdHRlbXB0cyBvciBtYW51YWwgY29uZmlndXJhdGlvbQ0KCQkJLy8gb2YgdGhlIGFwcG5hbWUvaW5zdGFuY2VuYW1lDQoJCQl2YXIgZW5kQXBwOk51bWJlcj0wOw0KCQkJaWYocnRtcFNyYy5pbmRleE9mKCJeIikgIT0gLTEpIHsNCgkJCQllbmRBcHA9cnRtcFNyYy5pbmRleE9mKCJeIik7DQoJCQkJcnRtcFNyYy5yZXBsYWNlKCJeIiwgIi8iKTsNCgkJCX0gZWxzZSB7DQoJCQkJZW5kQXBwID0gcnRtcFNyYy5pbmRleE9mKCIvIixlbmRIb3N0KTsNCgkJCX0NCgkJCQlhcHBOYW1lID0gcnRtcFNyYy5zdWJzdHJpbmcoZW5kSG9zdCxlbmRBcHApICsgIi8iOw0KCQkJCXN0cmVhbUZpbGVOYW1lID0gcnRtcFNyYy5zdWJzdHIoZW5kQXBwKzEpOw0KCQkJfQ0KCQkJDQoJCQlpZihwb3J0PT0iIikgew0KCQkJCXBvcnQ9Ik1VTFRJIjsNCgkJCX0NCgkJCS8vcnRtcCwgcnRtcHQsIHJ0bXBzLCBydG1wZSwgcnRtcHRlDQoNCg0KCQkJdHJhY2UoKCJcblxuKioqIEhPU1Q6ICIgKyBob3N0KSk7DQoJCQl0cmFjZSgoIioqKiBQT1JUOiAiICsgcG9ydCkpOw0KCQkJdHJhY2UoKCIqKiogQVBQTkFNRTogIiArIGFwcE5hbWUpKTsNCgkJCXRyYWNlKCgiKioqIFN0cmVhbU5hbWU6ICIgKyBzdHJlYW1GaWxlTmFtZSkpOw0KDQoJCQl2YXIgc3RyZWFtUGFydHM6T2JqZWN0ID0gbmV3IE9iamVjdDsNCgkJCXN0cmVhbVBhcnRzLnN0cmVhbVRZUEU9c3RyZWFtVFlQRTsNCgkJCXN0cmVhbVBhcnRzLmFwcE5hbWUgPSBhcHBOYW1lOw0KCQkJc3RyZWFtUGFydHMuc3RyZWFtRmlsZU5hbWUgPSBzdHJlYW1GaWxlTmFtZTsNCgkJCXN0cmVhbVBhcnRzLmhvc3ROYW1lID0gaG9zdDsNCgkJCXN0cmVhbU5hbWUgPSBzdHJlYW1GaWxlTmFtZTsNCgkJCQ0KCQkJcmV0dXJuIHN0cmVhbVBhcnRzOw0KCQl9DQoNCgkJcHVibGljIGZ1bmN0aW9uIGxvYWQoKTpCb29sZWFuDQoJCXsNCgkJCS8vdHJhY2UoIkxPQUQ6ICIrbXlTdGF0dXMuc3JjKTsNCgkJCWlmIChteVN0YXR1cy5sb2FkUmVxdWlyZWQoKSB8fCBvdmVyUmlkZUNvbm5lY3Q9PXRydWUpDQoJCQl7DQoJCQkJb3ZlclJpZGVDb25uZWN0PWZhbHNlOw0KCQkJCW15U3RhdHVzLnN0YXJ0aW5nRG93bmxvYWQoKTsNCgkJCQl2YXIgbGFzdEFwcE5hbWU6U3RyaW5nOw0KCQkJCXZhciBsYXN0SG9zdE5hbWU6U3RyaW5nOw0KCQkJCQkNCgkJCQl0cnl7DQoJCQkJCS8vIHdlIGRvIGEgdHJ5LCBhcyB0aGVzZSBwcm9wZXJ0aWVzIG1pZ2h0IG5vdCBleGlzdCB5ZXQNCgkJCQlpZihjb25uZWN0U3RyaW5nLmFwcE5hbWUgIT0gIiIgJiYgY29ubmVjdFN0cmluZy5hcHBOYW1lICE9IHVuZGVmaW5lZCkgew0KCQkJCQl0cmFjZSgiUFJFVklPVVMgQVBQL0hPU1QgSU5GTyBBVkFJTEFCTEUiKTsNCgkJCQkJbGFzdEFwcE5hbWUgPSBjb25uZWN0U3RyaW5nLmFwcE5hbWU7DQoJCQkJCWxhc3RIb3N0TmFtZSA9IGNvbm5lY3RTdHJpbmcuaG9zdE5hbWU7DQoJCQkJCXRyYWNlKCJMQVNUOiAiK2xhc3RBcHBOYW1lLGxhc3RIb3N0TmFtZSk7DQoJCQkJfSANCgkJCQl9IGNhdGNoIChlcnJvcjpFcnJvcikgew0KCQkJCQkvL3RyYWNlKCIqKiogQ2F1Z2h0IGFuIGVycm9yIGNvbmRpdGlvbjogIitlcnJvcik7DQoJCQkJfQ0KCQkJCQ0KCQkJCWNvbm5lY3RTdHJpbmcgPSBwYXJzZVJUTVBzcmNDb25uZWN0KG15U3RhdHVzLnNyYyk7DQoJCQkJDQoJCQkJDQoJCQkJDQoJCQkJdHJhY2UoIioqKiogTE9BRCA6OiBDT05ORUNUIFNPVVJDRTogIiArY29ubmVjdFN0cmluZy5ob3N0TmFtZSArIiAiKyBjb25uZWN0U3RyaW5nLmFwcE5hbWUpOw0KCQkJCXRoaXMuZGlzcGF0Y2hFdmVudChuZXcgSnBsYXllckV2ZW50KEpwbGF5ZXJFdmVudC5KUExBWUVSX1dBSVRJTkcsIG15U3RhdHVzKSk7DQoJCQkJDQoJCQkJaWYoKGNvbm5lY3RTdHJpbmcuYXBwTmFtZSA9PSBsYXN0QXBwTmFtZSAmJiBjb25uZWN0U3RyaW5nLmhvc3ROYW1lID09IGxhc3RIb3N0TmFtZSkgJiYgKG15Q29ubmVjdGlvbi5jb25uZWN0ZWQpKSB7DQoJCQkJCS8vIHJlY3ljbGUgdGhlIG5ldENvbm5lY3Rpb24NCgkJCQkJdHJhY2UoIlJFQ1lDTElORyBORVRDT05ORUNUSU9OIik7DQoJCQkJCWlmICgobXlTdHJlYW0gIT0gbnVsbCkpDQoJCQkJCXsNCgkJCQkJCW15U3RyZWFtLmNsb3NlKCk7DQoJCQkJCX0NCgkJCQkJY29ubmVjdFN0cmVhbSgpOw0KCQkJCQlvbkJXRG9uZShudWxsLG15Q29ubmVjdGlvbik7DQoJCQkJfSBlbHNlIHsNCgkJCQkJLy8gbXlDb25uZWN0aW9uLmNvbm5lY3QoY29ubmVjdFN0cmluZy5hcHBOYW1lKTsNCgkJCQkJdHJhY2UoIk5FVyBOZXRDb25uZWN0aW9uIE5lZ290aWF0aW9uIik7DQoJCQkJCWlmICgobXlTdHJlYW0gIT0gbnVsbCkpDQoJCQkJCXsNCgkJCQkJCW15U3RyZWFtLmNsb3NlKCk7DQoJCQkJCQlteUNvbm5lY3Rpb24uY2xvc2UoKTsNCgkJCQkJfQ0KCQkJCQkNCgkJCQkJQ29ubk1nci5zdG9wQWxsKHRydWUpOw0KCQkJCQlDb25uTWdyLm5lZ290aWF0ZUNvbm5lY3QodGhpcyxjb25uZWN0U3RyaW5nLmhvc3ROYW1lLGNvbm5lY3RTdHJpbmcuYXBwTmFtZSk7DQoJCQkJfQ0KCQkJCQ0KCQkJCXRyYWNlKCIqKioqIExPQUQyIDo6IENPTk5FQ1QgU09VUkNFOiAiICtjb25uZWN0U3RyaW5nLmhvc3ROYW1lICsiICIrIGNvbm5lY3RTdHJpbmcuYXBwTmFtZSk7DQoJCQkJdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBKcGxheWVyRXZlbnQoSnBsYXllckV2ZW50LkpQTEFZRVJfV0FJVElORywgbXlTdGF0dXMpKTsNCgkJCQlyZXR1cm4gdHJ1ZTsNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQlyZXR1cm4gZmFsc2U7DQoJCQl9DQoJCX0NCgkJDQoJCQ0KDQoJCXB1YmxpYyBmdW5jdGlvbiBvbkZDVW5zdWJzY3JpYmUoaW5mbzpPYmplY3QpOnZvaWQNCgkJew0KCQkJdHJhY2UoKCJvbkZDVW5TdWJzY3JpYmUgd29ya2VkIiArIGluZm8pKTsNCgkJfQ0KDQoJCXB1YmxpYyBmdW5jdGlvbiBvbkZDU3Vic2NyaWJlKGluZm86T2JqZWN0KTp2b2lkDQoJCXsNCgkJCXRyYWNlKCgib25GQ1N1YnNjcmliZSB3b3JrZWQiICsgaW5mbykpOw0KCQl9DQoNCgkJcHVibGljIGZ1bmN0aW9uIG9uQldEb25lKGluZm86T2JqZWN0LG5jOk5ldENvbm5lY3Rpb24pOnZvaWQNCgkJew0KCQkJaWYobmMuY29ubmVjdGVkKSB7DQoJCQlteUNvbm5lY3Rpb249bmM7DQoJCQl0cmFjZSgoKCgib25CV0RvbmUgIiArIGluZm8pICsgIiA6OiAiKSArIG15U3RhdHVzLnNyYykpOw0KDQoJCQl2YXIgY3VzdG9tQ2xpZW50Ok9iamVjdCA9IG5ldyBPYmplY3QgIDsNCgkJCWN1c3RvbUNsaWVudC5vbk1ldGFEYXRhID0gb25NZXRhRGF0YUhhbmRsZXI7DQoJCQljdXN0b21DbGllbnQub25QbGF5U3RhdHVzID0gb25QbGF5U3RhdHVzSGFuZGxlcjsvLyBBY2NvcmRpbmcgdG8gdGhlIGZvcnVtcyBhbmQgbXkgdGVzdHMsIG9uUGxheVN0YXR1cyBvbmx5IHdvcmtzIHdpdGggRk1TIChGbGFzaCBNZWRpYSBTZXJ2ZXIpLg0KDQoJCQlteVN0cmVhbSA9IG51bGw7DQoJCQlteVN0cmVhbSA9IG5ldyBOZXRTdHJlYW0obXlDb25uZWN0aW9uKTsNCgkJCW15U3RyZWFtLmFkZEV2ZW50TGlzdGVuZXIoTmV0U3RhdHVzRXZlbnQuTkVUX1NUQVRVUyxuZXRTdGF0dXNIYW5kbGVyKTsNCgkJCW15U3RyZWFtLmNsaWVudCA9IGN1c3RvbUNsaWVudDsNCgkJCQlpZihjb25uZWN0U3RyaW5nLnN0cmVhbVRZUEUgPT0gIkxJVkUiKSB7DQoJCQkJCW15U3RyZWFtLmJ1ZmZlclRpbWUgPSAzOyAvLyB3YXMgMw0KCQkJCQlteVN0cmVhbS5idWZmZXJUaW1lTWF4ID0gMjQ7DQoJCQkJCXN0YXJ0QnVmZmVyID0gMzsNCgkJCQkJbWF4QnVmZmVyID0gMTI7DQoNCgkJCQl9IGVsc2Ugew0KCQkJCQlteVN0cmVhbS5idWZmZXJUaW1lID0gLjI7IC8vIHdhcyAzDQoJCQkJCW15U3RyZWFtLmJ1ZmZlclRpbWVNYXggPSAwOw0KCQkJCQlzdGFydEJ1ZmZlciA9IC4yOw0KCQkJCQltYXhCdWZmZXIgPSAxMjsNCgkJCQl9DQoJCQ0KDQoJCQkvL3N0cmVhbU5hbWU9IiI7DQoJCQkvL3ZhciBjb25uZWN0U3RyaW5nOk9iamVjdCA9IHBhcnNlUlRNUHNyY0Nvbm5lY3QobXlTdGF0dXMuc3JjKTsNCgkJCS8vc3RyZWFtTmFtZT1jb25uZWN0U3RyaW5nLnN0cmVhbUZpbGVOYW1lOw0KDQoJCQlyZXNwb25kZXIgPSBuZXcgUmVzcG9uZGVyKG9uUmVzdWx0KTsNCgkJCW15Q29ubmVjdGlvbi5jYWxsKCJnZXRTdHJlYW1MZW5ndGgiLHJlc3BvbmRlcixzdHJlYW1OYW1lKTsNCgkJCX0gZWxzZSB7DQoJCQkJY29ubmVjdFN0cmVhbSgpOw0KCQkJfQ0KDQoJCQl0cmFjZSgiUExBWSBTT1VSQ0U6ICIrY29ubmVjdFN0cmluZyk7DQoNCgkJfQ0KDQoJCQlwdWJsaWMgZnVuY3Rpb24gcGxheSh0aW1lOk51bWJlciA9IE5hTik6Qm9vbGVhbiB7DQoJCQkvL3RyYWNlKCJQTEFZOiAiK3RpbWUrIiAtIGlzUGxheWluZzogIitteVN0YXR1cy5pc1BsYXlpbmcgKyIgLSBteVN0YXR1cy5pc1N0YXJ0aW5nRG93bmxvYWQ6IitteVN0YXR1cy5pc1N0YXJ0aW5nRG93bmxvYWQpOw0KCQkJdmFyIHdhc1BsYXlpbmc6Qm9vbGVhbiA9IG15U3RhdHVzLmlzUGxheWluZzsNCg0KCQkJaWYoIWlzTmFOKHRpbWUpICYmIG15U3RhdHVzLnNyY1NldCkgew0KCQkJCWlmKG15U3RhdHVzLmlzUGxheWluZykgew0KCQkJCQlteVN0cmVhbS5wYXVzZSgpOw0KCQkJCQlteVN0YXR1cy5pc1BsYXlpbmcgPSBmYWxzZTsNCgkJCQl9DQoJCQkJbXlTdGF0dXMucGF1c2VQb3NpdGlvbiA9IHRpbWU7DQoJCQl9DQoNCgkJCWlmKG15U3RhdHVzLmlzU3RhcnRpbmdEb3dubG9hZCkgew0KCQkJCW15U3RhdHVzLnBsYXlPbkxvYWQgPSB0cnVlOyAvLyBSYWlzZSBmbGFnLCBjYXB0dXJlZCBpbiBvbk1ldGFEYXRhSGFuZGxlcigpDQoJCQkJcmV0dXJuIHRydWU7DQoJCQl9IGVsc2UgaWYobXlTdGF0dXMubG9hZFJlcXVpcmVkKCkpIHsNCgkJCQlteVN0YXR1cy5wbGF5T25Mb2FkID0gdHJ1ZTsgLy8gUmFpc2UgZmxhZywgY2FwdHVyZWQgaW4gb25NZXRhRGF0YUhhbmRsZXIoKQ0KCQkJCXJldHVybiBsb2FkKCk7DQoJCQl9IGVsc2UgaWYoKG15U3RhdHVzLmlzTG9hZGluZyB8fCBteVN0YXR1cy5pc0xvYWRlZCkgJiYgIW15U3RhdHVzLmlzUGxheWluZykgew0KCQkJCWlmKG15U3RhdHVzLm1ldGFEYXRhUmVhZHkgJiYgbXlTdGF0dXMucGF1c2VQb3NpdGlvbiA+IG15U3RhdHVzLmR1cmF0aW9uICYmIGNvbm5lY3RTdHJpbmcuc3RyZWFtVFlQRSAhPSAiTElWRSIpIHsgLy8gVGhlIHRpbWUgaXMgaW52YWxpZCwgaWUuLCBwYXN0IHRoZSBlbmQuDQoJCQkJCW15U3RyZWFtLnBhdXNlKCk7IC8vIFNpbmNlIGl0IGlzIHBsYXlpbmcgYnkgZGVmYXVsdCBhdCB0aGlzIHBvaW50Lg0KCQkJCQlteVN0YXR1cy5wYXVzZVBvc2l0aW9uID0gMDsNCgkJCQkJdHJhY2UoIlNFRUtFUiEiKTsNCgkJCQkJbXlTdHJlYW0uc2VlaygwKTsNCgkJCQkJdGltZVVwZGF0ZXMoZmFsc2UpOw0KCQkJCQl0aW1lVXBkYXRlRXZlbnQoKTsNCgkJCQkJaWYod2FzUGxheWluZykgeyAvLyBGb3Igd2hlbiBwbGF5aW5nIGFuZCB0aGVuIGdldCBhIHBsYXkoaHVnZSkNCgkJCQkJCXRoaXMuZGlzcGF0Y2hFdmVudChuZXcgSnBsYXllckV2ZW50KEpwbGF5ZXJFdmVudC5KUExBWUVSX1BBVVNFLCBteVN0YXR1cykpOw0KCQkJCQl9DQoJCQkJfSBlbHNlIGlmKGdldFNlZWtUaW1lUmF0aW8oKSA+IGdldExvYWRSYXRpbygpKSB7IC8vIFVzZSBhbiBlc3RpbWF0ZSBiYXNlZCBvbiB0aGUgZG93bmxvYWRlZCBhbW91bnQNCgkJCQkJbXlTdGF0dXMucGxheU9uU2VlayA9IHRydWU7DQoJCQkJCXNlZWtpbmcodHJ1ZSk7DQoJCQkJCXRyYWNlKCJTRUVLRVIgUEFVU0UhIik7DQoJCQkJCW15U3RyZWFtLnBhdXNlKCk7IC8vIFNpbmNlIGl0IGlzIHBsYXlpbmcgYnkgZGVmYXVsdCBhdCB0aGlzIHBvaW50Lg0KCQkJCX0gZWxzZSB7DQoJCQkJCWlmKCFpc05hTih0aW1lKSkgeyAvLyBBdm9pZCB1c2luZyBzZWVrKCkgd2hlbiBpdCBpcyBhbHJlYWR5IGNvcnJlY3QuDQoJCQkJCQl0cmFjZSgiU0VFS0VSMyIpOw0KCQkJCQkJbXlTdHJlYW0uc2VlayhteVN0YXR1cy5wYXVzZVBvc2l0aW9uLzEwMDApOyAvLyBTaW5jZSB0aW1lIGlzIGluIG1zIGFuZCBzZWVrKCkgdGFrZXMgc2Vjb25kcw0KCQkJCQl9DQoJCQkJCW15U3RhdHVzLmlzUGxheWluZyA9IHRydWU7IC8vIFNldCBpbW1lZGlhdGVseSBiZWZvcmUgcGxheWluZy4gQ291bGQgYWZmZWN0cyBldmVudHMuDQoJCQkJCXRyYWNlKCJTSE9VTEQgR0VUIFJFU1VNRSEiKTsNCgkJCQkJbXlTdHJlYW0ucmVzdW1lKCk7DQoJCQkJCXRpbWVVcGRhdGVzKHRydWUpOw0KCQkJCQlpZighd2FzUGxheWluZykgew0KCQkJCQkJdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBKcGxheWVyRXZlbnQoSnBsYXllckV2ZW50LkpQTEFZRVJfUExBWSwgbXlTdGF0dXMpKTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQlyZXR1cm4gdHJ1ZTsNCgkJCX0gZWxzZSB7DQoJCQkJcmV0dXJuIGZhbHNlOw0KCQkJfQ0KCQl9DQoJCQ0KCXB1YmxpYyBmdW5jdGlvbiBwYXVzZSh0aW1lOk51bWJlcj1OYU4pOkJvb2xlYW4NCgl7DQoJCS8vdHJhY2UoIlBBVVNFOiAiK3RpbWUpOw0KCQlteVN0YXR1cy5wbGF5T25Mb2FkID0gZmFsc2U7Ly8gUmVzZXQgZmxhZyBpbiBjYXNlIGxvYWQvcGxheSBpc3N1ZWQgaW1tZWRpYXRlbHkgYmVmb3JlIHRoaXMgY29tbWFuZCwgaWUuLCBiZWZvcmUgb25NZXRhZGF0YSgpIGV2ZW50Lg0KCQlteVN0YXR1cy5wbGF5T25TZWVrID0gZmFsc2U7Ly8gUmVzZXQgZmxhZyBpbiBjYXNlIHBsYXkodGltZSkgaXNzdWVkIGJlZm9yZSB0aGUgY29tbWFuZCBhbmQgaXMgc3RpbGwgc2Vla2luZyB0byB0aW1lIHNldC4NCg0KCQl2YXIgd2FzUGxheWluZzpCb29sZWFuID0gbXlTdGF0dXMuaXNQbGF5aW5nOw0KDQoJCQ0KCQkvLyBUbyBhdm9pZCBwb3NzaWJsZSBsb29wcyB3aXRoIHRpbWV1cGRhdGUgYW5kIHBhdXNlKHRpbWUpLiBBIHBhdXNlKCkgZG9lcyBub3QgaGF2ZSB0aGUgcHJvYmxlbS4NCgkJdmFyIGFscmVhZHlQYXVzZWRBdFRpbWU6Qm9vbGVhbiA9IGZhbHNlOw0KCQlpZighaXNOYU4odGltZSkgJiYgbXlTdGF0dXMucGF1c2VQb3NpdGlvbiA9PSB0aW1lKSB7DQoJCQlhbHJlYWR5UGF1c2VkQXRUaW1lID0gdHJ1ZTsNCgkJfQ0KCQkNCgkJdHJhY2UoIiFpc05hTjogIishaXNOYU4odGltZSkgKyIgaXNOYU46ICIraXNOYU4odGltZSkpOw0KDQoJCS8vIE5lZWQgdG8gd2FpdCBmb3IgbWV0YWRhdGEgdG8gbG9hZCBiZWZvcmUgZXZlciBpc3N1aW5nIGEgcGF1c2UuIFRoZSBtZXRhZGF0YSBoYW5kbGVyIHdpbGwgY2FsbCB0aGlzIGZ1bmN0aW9uIGlmIG5lZWRlZCwgd2hlbiByZWFkeS4NCgkJaWYgKCgobXlTdHJlYW0gIT0gbnVsbCkgJiYgbXlTdGF0dXMubWV0YURhdGFSZWFkeSkpDQoJCXsvLyBteVN0cmVhbSBpcyBhIG51bGwgdW50aWwgdGhlIDFzdCBtZWRpYSBpcyBsb2FkZWQuIGllLiwgVGhlIDFzdCBldmVyIHNldE1lZGlhIGJlaW5nIGZvbGxvd2VkIGJ5IGEgcGF1c2UoKSBvciBwYXVzZSh0KS4NCgkJCQ0KCQkJaWYoY29ubmVjdFN0cmluZy5zdHJlYW1UWVBFID09ICJMSVZFIikgew0KCQkJCXRyYWNlKCJQQVVTSU5HIExJVkUiKTsNCgkJCQlteVN0cmVhbS5wbGF5KGZhbHNlKSANCgkJCX0gZWxzZSB7DQoJCQkJdHJhY2UoIlBBVVNJTkcgUkVDT1JERUQiKTsNCgkJCW15U3RyZWFtLnBhdXNlKCk7DQoJCQl9DQoJCX0NCgkJaWYgKG15U3RhdHVzLmlzUGxheWluZykNCgkJew0KCQkJbXlTdGF0dXMuaXNQbGF5aW5nID0gZmFsc2U7DQoJCQlteVN0YXR1cy5wYXVzZVBvc2l0aW9uID0gbXlTdHJlYW0udGltZSAqIDEwMDA7DQoJCX0NCg0KCQlpZiAoISBpc05hTih0aW1lKSAmJiBteVN0YXR1cy5zcmNTZXQpDQoJCXsNCgkJCW15U3RhdHVzLnBhdXNlUG9zaXRpb24gPSB0aW1lOw0KCQl9DQoNCgkJaWYgKHdhc1BsYXlpbmcpDQoJCXsNCgkJCXRoaXMuZGlzcGF0Y2hFdmVudChuZXcgSnBsYXllckV2ZW50KEpwbGF5ZXJFdmVudC5KUExBWUVSX1BBVVNFLG15U3RhdHVzKSk7DQoJCX0NCg0KCQlpZiAobXlTdGF0dXMuaXNTdGFydGluZ0Rvd25sb2FkKQ0KCQl7DQoJCQlyZXR1cm4gdHJ1ZTsNCgkJfQ0KCQllbHNlIGlmIChteVN0YXR1cy5sb2FkUmVxdWlyZWQoKSkNCgkJew0KCQkJaWYgKCh0aW1lID4gMCkpDQoJCQl7Ly8gV2UgZG8gbm90IHdhbnQgdGhlIHN0b3AoKSBjb21tYW5kLCB3aGljaCBkb2VzIHBhdXNlKDApLCBjYXVzaW5nIGEgbG9hZCBvcGVyYXRpb24uDQoJCQkJcmV0dXJuIGxvYWQoKTsNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQlyZXR1cm4gdHJ1ZTsvLyBUZWNobmljYWxseSB0aGUgcGF1c2UoMCkgc3VjY2VlZGVkLiBpZS4sIEl0IGRpZCBub3RoaW5nLCBzaW5jZSBub3RoaW5nIHdhcyByZXF1aXJlZC4NCgkJCX0NCgkJfQ0KCQllbHNlIGlmIChteVN0YXR1cy5pc0xvYWRpbmcgfHwgbXlTdGF0dXMuaXNMb2FkZWQpDQoJCXsNCgkJCWlmIChteVN0YXR1cy5tZXRhRGF0YVJlYWR5ICYmIG15U3RhdHVzLnBhdXNlUG9zaXRpb24gPiBteVN0YXR1cy5kdXJhdGlvbiAmJiBjb25uZWN0U3RyaW5nLnN0cmVhbVRZUEUgIT0gIkxJVkUiICkNCgkJCXsvLyBUaGUgdGltZSBpcyBpbnZhbGlkLCBpZS4sIHBhc3QgdGhlIGVuZC4NCgkJCQlteVN0YXR1cy5wYXVzZVBvc2l0aW9uID0gMDsNCgkJCQkNCgkJCQl0cmFjZSgiR09UIEhFUkUhIik7DQoJCQkJbXlTdHJlYW0uc2VlaygwKTsNCgkJCQlzZWVrZWRFdmVudCgpOy8vIERlYWxzIHdpdGggc2Vla2luZyBlZmZlY3Qgd2hlbiB1c2luZyBzZXRNZWRpYSgpIHRoZW4gcGF1c2UoaHVnZSkuIE5COiBUaGVyZSBpcyBubyBwcmVjZWVkaW5nIHNlZWtpbmcgZXZlbnQuDQoJCQl9DQoJCQllbHNlIGlmICghIGlzTmFOKHRpbWUpKQ0KCQkJew0KCQkJCWlmICgoZ2V0U2Vla1RpbWVSYXRpbygpID4gZ2V0TG9hZFJhdGlvKCkpKQ0KCQkJCXsvLyBVc2UgYW4gZXN0aW1hdGUgYmFzZWQgb24gdGhlIGRvd25sb2FkZWQgYW1vdW50DQoJCQkJCXNlZWtpbmcodHJ1ZSk7DQoJCQkJfQ0KCQkJCWVsc2UNCgkJCQl7DQoJCQkJCWlmIChteVN0YXR1cy5tZXRhRGF0YVJlYWR5ICYmIGNvbm5lY3RTdHJpbmcuc3RyZWFtVFlQRSAhPSAiTElWRSIpDQoJCQkJCXsvLyBPdGhlcndpc2Ugc2VlaygwKSB3aWxsIHN0b3AgdGhlIG1ldGFkYXRhIGxvYWRpbmcuDQoJCQkJCXRyYWNlKCJHT1QgSEVSRSBUT08hIik7DQoJCQkJCQlteVN0cmVhbS5zZWVrKG15U3RhdHVzLnBhdXNlUG9zaXRpb24gLyAxMDAwKTsNCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCgkJCXRpbWVVcGRhdGVzKGZhbHNlKTsNCgkJCS8vIE5lZWQgdG8gYmUgY2FyZWZ1bCB3aXRoIHRpbWV1cGRhdGUgZXZlbnQsIG90aGVyd2lzZSBhIHBhdXNlIGluIGEgdGltZXVwZGF0ZSBldmVudCBjYW4gY2F1c2UgYSBsb29wLg0KCQkJLy8gTmVpdGhlciBwYXVzZSgpIG5vciBwYXVzZSh0aW1lKSB3aWxsIGNhdXNlIGEgdGltZXVwZGF0ZSBsb29wLg0KCQkJaWYod2FzUGxheWluZyB8fCAhaXNOYU4odGltZSkgJiYgIWFscmVhZHlQYXVzZWRBdFRpbWUpIHsNCgkJCQl0aW1lVXBkYXRlRXZlbnQoKTsNCgkJCX0NCgkJCXJldHVybiB0cnVlOw0KCQl9DQoJCWVsc2UNCgkJew0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9DQoJfQ0KCXB1YmxpYyBmdW5jdGlvbiBwbGF5SGVhZChwZXJjZW50Ok51bWJlcik6Qm9vbGVhbg0KCXsNCgkJdmFyIHRpbWU6TnVtYmVyID0gcGVyY2VudCAqIGdldER1cmF0aW9uKCkgKiBnZXRMb2FkUmF0aW8oKSAvIDEwMDsNCgkJaWYgKG15U3RhdHVzLmlzUGxheWluZyB8fCBteVN0YXR1cy5wbGF5T25Mb2FkIHx8IG15U3RhdHVzLnBsYXlPblNlZWspDQoJCXsNCgkJCXJldHVybiBwbGF5KHRpbWUpOw0KCQl9DQoJCWVsc2UNCgkJew0KCQkJcmV0dXJuIHBhdXNlKHRpbWUpOw0KCQl9DQoJfQ0KCXB1YmxpYyBmdW5jdGlvbiBzZXRWb2x1bWUodjpOdW1iZXIpOnZvaWQNCgl7DQoJCW15U3RhdHVzLnZvbHVtZSA9IHY7DQoJCW15VHJhbnNmb3JtLnZvbHVtZSA9IHY7DQoJCWlmICgobXlTdHJlYW0gIT0gbnVsbCkpDQoJCXsNCgkJCW15U3RyZWFtLnNvdW5kVHJhbnNmb3JtID0gbXlUcmFuc2Zvcm07DQoJCX0NCgl9DQoJcHJpdmF0ZSBmdW5jdGlvbiB1cGRhdGVTdGF0dXNWYWx1ZXMoKTp2b2lkDQoJew0KCQkvL215U3RhdHVzLnNlZWtQZXJjZW50ID0gMTAwICogZ2V0TG9hZFJhdGlvKCk7DQoJCW15U3RhdHVzLnNlZWtQZXJjZW50ID0gMTAwOw0KCQlteVN0YXR1cy5jdXJyZW50VGltZSA9IGdldEN1cnJlbnRUaW1lKCk7DQoJCW15U3RhdHVzLmN1cnJlbnRQZXJjZW50UmVsYXRpdmUgPSAxMDAgKiBnZXRDdXJyZW50UmF0aW9SZWwoKTsNCgkJbXlTdGF0dXMuY3VycmVudFBlcmNlbnRBYnNvbHV0ZSA9IDEwMCAqIGdldEN1cnJlbnRSYXRpb0FicygpOw0KCQlteVN0YXR1cy5kdXJhdGlvbiA9IGdldER1cmF0aW9uKCk7DQoJfQ0KCXB1YmxpYyBmdW5jdGlvbiBnZXRMb2FkUmF0aW8oKTpOdW1iZXINCgl7DQoJCXJldHVybiAxOw0KCQkvKnRyYWNlKCJMb2FkUmF0aW86IitteVN0cmVhbS5ieXRlc0xvYWRlZCwgbXlTdHJlYW0uYnl0ZXNUb3RhbCk7DQoJCWlmKChteVN0YXR1cy5pc0xvYWRpbmcgfHwgbXlTdGF0dXMuaXNMb2FkZWQpICYmIG15U3RyZWFtLmJ5dGVzVG90YWwgPiAwKSB7DQoJCQ0KCQlyZXR1cm4gbXlTdHJlYW0uYnl0ZXNMb2FkZWQgLyBteVN0cmVhbS5ieXRlc1RvdGFsOw0KCQl9IGVsc2Ugew0KCQlyZXR1cm4gMDsNCgkJfQ0KCQkqLw0KDQoJfQ0KCXB1YmxpYyBmdW5jdGlvbiBnZXREdXJhdGlvbigpOk51bWJlcg0KCXsNCgkJcmV0dXJuIG15U3RhdHVzLmR1cmF0aW9uOy8vIFNldCBmcm9tIG1ldGEgZGF0YS4NCgl9DQoJcHVibGljIGZ1bmN0aW9uIGdldEN1cnJlbnRUaW1lKCk6TnVtYmVyDQoJew0KCQlpZiAobXlTdGF0dXMuaXNQbGF5aW5nKQ0KCQl7DQoJCQkvL3RyYWNlKG15U3RyZWFtLnRpbWUgKiAxMDAwKTsNCgkJCXJldHVybiBteVN0cmVhbS50aW1lICogMTAwMDsgLy8gd2FzICsxMDAwDQoJCX0NCgkJZWxzZQ0KCQl7DQoJCQlyZXR1cm4gbXlTdGF0dXMucGF1c2VQb3NpdGlvbjsNCgkJfQ0KCX0NCglwdWJsaWMgZnVuY3Rpb24gZ2V0Q3VycmVudFJhdGlvUmVsKCk6TnVtYmVyDQoJew0KDQoJCWlmICgoZ2V0Q3VycmVudFJhdGlvQWJzKCkgPD0gZ2V0TG9hZFJhdGlvKCkpKQ0KCQl7DQoJCQkvL2lmKChnZXRMb2FkUmF0aW8oKSA+IDApICYmIChnZXRDdXJyZW50UmF0aW9BYnMoKSA8PSBnZXRMb2FkUmF0aW8oKSkpIHsNCgkJCXJldHVybiBnZXRDdXJyZW50UmF0aW9BYnMoKSAvIGdldExvYWRSYXRpbygpOw0KCQl9DQoJCWVsc2UNCgkJew0KCQkJcmV0dXJuIDA7DQoJCX0NCgl9DQoJcHVibGljIGZ1bmN0aW9uIGdldEN1cnJlbnRSYXRpb0FicygpOk51bWJlcg0KCXsNCgkJaWYgKChnZXREdXJhdGlvbigpID4gMCkpDQoJCXsNCgkJCXJldHVybiBnZXRDdXJyZW50VGltZSgpIC8gZ2V0RHVyYXRpb24oKTsNCgkJfQ0KCQllbHNlDQoJCXsNCgkJCXJldHVybiAwOw0KCQl9DQoJfQ0KCXB1YmxpYyBmdW5jdGlvbiBnZXRTZWVrVGltZVJhdGlvKCk6TnVtYmVyDQoJew0KCQlpZiAoKGdldER1cmF0aW9uKCkgPiAwKSkNCgkJew0KCQkJcmV0dXJuIG15U3RhdHVzLnBhdXNlUG9zaXRpb24gLyBnZXREdXJhdGlvbigpOw0KCQl9DQoJCWVsc2UNCgkJew0KCQkJcmV0dXJuIDE7DQoJCX0NCgl9DQoJcHVibGljIGZ1bmN0aW9uIG9uUGxheVN0YXR1c0hhbmRsZXIoaW5mb09iamVjdDpPYmplY3QpOnZvaWQNCgl7DQoJCXRyYWNlKCgoIk9uUGxheVN0YXR1c0hhbmRsZXIgY2FsbGVkOiAoIiArIGdldFRpbWVyKCkpICsgIiBtcykiKSk7DQoJCWZvciAodmFyIHByb3A6KiBpbiBpbmZvT2JqZWN0KQ0KCQl7DQoJCQl0cmFjZSgoKCgiXHQiICsgcHJvcCkgKyAiOlx0IikgKyBpbmZvT2JqZWN0W3Byb3BdKSk7DQoJCX0NCgkJaWYgKGluZm9PYmplY3QuY29kZSA9PSAiTmV0U3RyZWFtLlBsYXkuQ29tcGxldGUiKQ0KCQl7DQoJCQllbmRlZEV2ZW50KCk7DQoJCX0NCgl9DQoNCglwdWJsaWMgZnVuY3Rpb24gb25NZXRhRGF0YUhhbmRsZXIoaW5mbzpPYmplY3QpOnZvaWQNCgl7Ly8gVXNlZCBpbiBjb25uZWN0U3RyZWFtKCkgaW4gbXlTdHJlYW0uY2xpZW50IG9iamVjdC4NCgkJLy8gVGhpcyBldmVudCBvY2N1cnMgd2hlbiBqdW1waW5nIHRvIHRoZSBzdGFydCBvZiBzdGF0aWMgZmlsZXMhIGllLiwgc2VlaygwKSB3aWxsIGNhdXNlIHRoaXMgZXZlbnQgdG8gb2NjdXIuDQoNCgkJaWYgKCEgbXlTdGF0dXMubWV0YURhdGFSZWFkeSkNCgkJew0KCQkJdHJhY2UoIlxuXG4qKiogTUVUQURBVEEgRklSRUQhICoqKlxuXG4iKTsNCgkJCS8vdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBKcGxheWVyRXZlbnQoSnBsYXllckV2ZW50LkRFQlVHX01TRyxteVN0YXR1cywib25NZXRhRGF0YUhhbmRsZXI6ICIgKyBpbmZvLmR1cmF0aW9uICsgIiB8ICIgKyBpbmZvLndpZHRoICsgIngiICsgaW5mby5oZWlnaHQpKTsNCg0KCQkJbXlTdGF0dXMubWV0YURhdGFSZWFkeSA9IHRydWU7Ly8gU2V0IGZsYWcgc28gdGhhdCB0aGlzIGV2ZW50IG9ubHkgZWZmZWN0cyBqUGxheWVyIHRoZSAxc3QgdGltZS4NCgkJCW15U3RhdHVzLm1ldGFEYXRhID0gaW5mbzsNCgkJCW15U3RhdHVzLmR1cmF0aW9uID0gaW5mby5kdXJhdGlvbiAqIDEwMDA7Ly8gT25seSBhdmFpbGFibGUgdmlhIE1ldGEgRGF0YS4NCgkJCWlmIChpbmZvLndpZHRoICE9IHVuZGVmaW5lZCkNCgkJCXsNCgkJCQlteVZpZGVvLndpZHRoID0gbXlTdGF0dXMudmlkZW9XaWR0aCA9IGluZm8ud2lkdGg7DQoJCQl9DQoJCQlpZiAoaW5mby5oZWlnaHQgIT0gdW5kZWZpbmVkKQ0KCQkJew0KCQkJCW15VmlkZW8uaGVpZ2h0ID0gbXlTdGF0dXMudmlkZW9IZWlnaHQgPSBpbmZvLmhlaWdodDsNCgkJCX0NCg0KCQkJaWYgKG15U3RhdHVzLnBsYXlPbkxvYWQpDQoJCQl7DQoJCQkJbXlTdGF0dXMucGxheU9uTG9hZCA9IGZhbHNlOy8vIENhcHR1cmUgdGhlIGZsYWcNCgkJCQlpZiAobXlTdGF0dXMucGF1c2VQb3NpdGlvbiA+IDApDQoJCQkJey8vIEltcG9ydGFudCBmb3Igc2V0TWVkaWEgZm9sbG93ZWQgYnkgcGxheSh0aW1lKS4NCgkJCQkJcGxheShteVN0YXR1cy5wYXVzZVBvc2l0aW9uKTsNCgkJCQl9DQoJCQkJZWxzZQ0KCQkJCXsNCgkJCQkJcGxheSgpOy8vIE5vdCBhbHdheXMgc2VuZGluZyBwYXVzZVBvc2l0aW9uIGF2b2lkcyB0aGUgZXh0cmEgc2VlaygwKSBmb3IgYSBub3JtYWwgcGxheSgpIGNvbW1hbmQuDQoJCQkJfQ0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCXBhdXNlKG15U3RhdHVzLnBhdXNlUG9zaXRpb24pOy8vIEFsd2F5cyBzZW5kIHRoZSBwYXVzZVBvc2l0aW9uLiBJbXBvcnRhbnQgZm9yIHNldE1lZGlhKCkgZm9sbG93ZWQgYnkgcGF1c2UodGltZSkuIERlYWxzIHdpdGggbm90IHJlYWRpbmcgc3RyZWFtLnRpbWUgd2l0aCBzZXRNZWRpYSgpIGFuZCBwbGF5KCkgaW1tZWRpYXRlbHkgZm9sbG93ZWQgYnkgc3RvcCgpIG9yIHBhdXNlKDApDQoJCQl9DQoJCQl0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEpwbGF5ZXJFdmVudChKcGxheWVyRXZlbnQuSlBMQVlFUl9MT0FERURNRVRBREFUQSxteVN0YXR1cykpOw0KCQl9DQoJCWVsc2UNCgkJew0KCQkJLy90aGlzLmRpc3BhdGNoRXZlbnQobmV3IEpwbGF5ZXJFdmVudChKcGxheWVyRXZlbnQuREVCVUdfTVNHLG15U3RhdHVzLCJvbk1ldGFEYXRhSGFuZGxlcjogQWxyZWFkeSByZWFkIChOTyBFRkZFQ1QpIikpOw0KCQl9DQoJfQ0KfQ0KfQ==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/actionscript/happyworm/jPlayer/JplayerStatus.as</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogalBsYXllciBQbHVnaW4gZm9yIGpRdWVyeSBKYXZhU2NyaXB0IExpYnJhcnkKICogaHR0cDovL3d3dy5qcGxheWVyLm9yZwogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDkgLSAyMDEzIEhhcHB5d29ybSBMdGQKICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLgogKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUCiAqCiAqIEF1dGhvcjogTWFyayBKIFBhbmFnaGlzdG9uCiAqIERhdGU6IDV0aCBKdW5lIDIwMTMKICovCgpwYWNrYWdlIGhhcHB5d29ybS5qUGxheWVyIHsKCXB1YmxpYyBjbGFzcyBKcGxheWVyU3RhdHVzIHsKCgkJcHVibGljIHN0YXRpYyBjb25zdCBWRVJTSU9OOlN0cmluZyA9ICIyLjQuMCI7IC8vIFRoZSB2ZXJzaW9uIG9mIHRoZSBGbGFzaCBqUGxheWVyIGVudGl0eS4KCgkJcHVibGljIHZhciB2b2x1bWU6TnVtYmVyID0gMC41OyAvLyBOb3QgYWZmZWN0ZWQgYnkgcmVzZXQoKQoJCXB1YmxpYyB2YXIgbXV0ZWQ6Qm9vbGVhbiA9IGZhbHNlOyAvLyBOb3QgYWZmZWN0ZWQgYnkgcmVzZXQoKQoKCQlwdWJsaWMgdmFyIHNyYzpTdHJpbmc7CgkJcHVibGljIHZhciBzcmNFcnJvcjpCb29sZWFuOwoKCQlwdWJsaWMgdmFyIHNyY1NldDpCb29sZWFuOwoJCXB1YmxpYyB2YXIgaXNQbGF5aW5nOkJvb2xlYW47CgkJcHVibGljIHZhciBpc1NlZWtpbmc6Qm9vbGVhbjsKCgkJcHVibGljIHZhciBpc1dhaXRpbmc6Qm9vbGVhbjsKCgkJcHVibGljIHZhciBwbGF5T25Mb2FkOkJvb2xlYW47CgkJcHVibGljIHZhciBwbGF5T25TZWVrOkJvb2xlYW47CgoJCXB1YmxpYyB2YXIgaXNTdGFydGluZ0Rvd25sb2FkOkJvb2xlYW47CgkJcHVibGljIHZhciBpc0xvYWRpbmc6Qm9vbGVhbjsKCQlwdWJsaWMgdmFyIGlzTG9hZGVkOkJvb2xlYW47CgoJCXB1YmxpYyB2YXIgcGF1c2VQb3NpdGlvbjpOdW1iZXI7CgoJCXB1YmxpYyB2YXIgc2Vla1BlcmNlbnQ6TnVtYmVyOwoJCXB1YmxpYyB2YXIgY3VycmVudFRpbWU6TnVtYmVyOwoJCXB1YmxpYyB2YXIgY3VycmVudFBlcmNlbnRSZWxhdGl2ZTpOdW1iZXI7CgkJcHVibGljIHZhciBjdXJyZW50UGVyY2VudEFic29sdXRlOk51bWJlcjsKCQlwdWJsaWMgdmFyIGR1cmF0aW9uOk51bWJlcjsKCgkJcHVibGljIHZhciB2aWRlb1dpZHRoOk51bWJlcjsKCQlwdWJsaWMgdmFyIHZpZGVvSGVpZ2h0Ok51bWJlcjsKCQkKCQlwdWJsaWMgdmFyIG1ldGFEYXRhUmVhZHk6Qm9vbGVhbjsKCQlwdWJsaWMgdmFyIG1ldGFEYXRhOk9iamVjdDsKCgkJcHVibGljIGZ1bmN0aW9uIEpwbGF5ZXJTdGF0dXMoKSB7CgkJCXJlc2V0KCk7CgkJfQoJCXB1YmxpYyBmdW5jdGlvbiByZXNldCgpOnZvaWQgewoJCQlzcmMgPSAiIjsKCQkJc3JjRXJyb3IgPSBmYWxzZTsKCgkJCXNyY1NldCA9IGZhbHNlOwoJCQlpc1BsYXlpbmcgPSBmYWxzZTsKCQkJaXNTZWVraW5nID0gZmFsc2U7CgoJCQlpc1dhaXRpbmcgPSBmYWxzZTsKCgkJCXBsYXlPbkxvYWQgPSBmYWxzZTsKCQkJcGxheU9uU2VlayA9IGZhbHNlOwoKCQkJaXNTdGFydGluZ0Rvd25sb2FkID0gZmFsc2U7CgkJCWlzTG9hZGluZyA9IGZhbHNlOwoJCQlpc0xvYWRlZCA9IGZhbHNlOwoKCQkJcGF1c2VQb3NpdGlvbiA9IDA7CgoJCQlzZWVrUGVyY2VudCA9IDA7CgkJCWN1cnJlbnRUaW1lID0gMDsKCQkJY3VycmVudFBlcmNlbnRSZWxhdGl2ZSA9IDA7CgkJCWN1cnJlbnRQZXJjZW50QWJzb2x1dGUgPSAwOwoJCQlkdXJhdGlvbiA9IDA7CgoJCQl2aWRlb1dpZHRoID0gMDsKCQkJdmlkZW9IZWlnaHQgPSAwOwoJCQkKCQkJbWV0YURhdGFSZWFkeSA9IGZhbHNlOwoJCQltZXRhRGF0YSA9IHt9OwoJCX0KCQlwdWJsaWMgZnVuY3Rpb24gZXJyb3IoKTp2b2lkIHsKCQkJdmFyIHNyY1NhdmVkOlN0cmluZyA9IHNyYzsKCQkJcmVzZXQoKTsKCQkJc3JjID0gc3JjU2F2ZWQ7CgkJCXNyY0Vycm9yID0gdHJ1ZTsKCQl9CgkJcHVibGljIGZ1bmN0aW9uIGxvYWRSZXF1aXJlZCgpOkJvb2xlYW4gewoJCQlyZXR1cm4gKHNyY1NldCAmJiAhaXNTdGFydGluZ0Rvd25sb2FkICYmICFpc0xvYWRpbmcgJiYgIWlzTG9hZGVkKTsKCQl9CgkJcHVibGljIGZ1bmN0aW9uIHN0YXJ0aW5nRG93bmxvYWQoKTp2b2lkIHsKCQkJaXNTdGFydGluZ0Rvd25sb2FkID0gdHJ1ZTsKCQkJaXNMb2FkaW5nID0gZmFsc2U7CgkJCWlzTG9hZGVkID0gZmFsc2U7CgkJfQoJCXB1YmxpYyBmdW5jdGlvbiBsb2FkaW5nKCk6dm9pZCB7CgkJCWlzU3RhcnRpbmdEb3dubG9hZCA9IGZhbHNlOwoJCQlpc0xvYWRpbmcgPSB0cnVlOwoJCQlpc0xvYWRlZCA9IGZhbHNlOwoJCX0KCQlwdWJsaWMgZnVuY3Rpb24gbG9hZGVkKCk6dm9pZCB7CgkJCWlzU3RhcnRpbmdEb3dubG9hZCA9IGZhbHNlOwoJCQlpc0xvYWRpbmcgPSBmYWxzZTsKCQkJaXNMb2FkZWQgPSB0cnVlOwoJCX0KCX0KfQo=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/actionscript/happyworm/jPlayer/TraceOut.as</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoNCiAqIGpQbGF5ZXIgUGx1Z2luIGZvciBqUXVlcnkgSmF2YVNjcmlwdCBMaWJyYXJ5DQogKiBodHRwOi8vd3d3LmpwbGF5ZXIub3JnDQogKg0KICogQ29weXJpZ2h0IChjKSAyMDA5IC0gMjAxMyBIYXBweXdvcm0gTHRkDQogKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuDQogKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUDQogKg0KICogQXV0aG9yOiBSb2JlcnQgTS4gSGFsbA0KICogRGF0ZTogN3RoIEF1Z3VzdCAyMDEyDQogKi8NCg0KcGFja2FnZSBoYXBweXdvcm0ualBsYXllcg0Kew0KCWltcG9ydCBmbGFzaC5uZXQuTG9jYWxDb25uZWN0aW9uOw0KCWltcG9ydCBmbGFzaC5ldmVudHMuU3RhdHVzRXZlbnQ7DQoJaW1wb3J0IGZsYXNoLnN5c3RlbS5DYXBhYmlsaXRpZXM7DQoJaW1wb3J0IGZsYXNoLnV0aWxzLmdldFRpbWVyOw0KDQoJcHVibGljIGNsYXNzIFRyYWNlT3V0DQoJew0KDQoJCXByaXZhdGUgdmFyIG91dGdvaW5nX2xjOkxvY2FsQ29ubmVjdGlvbiA9IG5ldyBMb2NhbENvbm5lY3Rpb24gKCk7DQoJCXByaXZhdGUgdmFyIGZpcnN0RXZlbnQ6Qm9vbGVhbiA9IHRydWU7DQoJCXByaXZhdGUgdmFyIF9sb2NhbEFJUkRlYnVnOkJvb2xlYW4gPSBmYWxzZTsNCg0KCQlwdWJsaWMgZnVuY3Rpb24gVHJhY2VPdXQoKQ0KCQl7DQoJCQlvdXRnb2luZ19sYy5hZGRFdmVudExpc3RlbmVyKFN0YXR1c0V2ZW50LlNUQVRVUywgbGNMaXN0ZW5lcik7DQoJCQlvdXRnb2luZ19sYy5zZW5kKCJfbG9nX291dHB1dCIsInN0YXJ0TG9nZ2luZyIsIiIpOw0KCQl9DQoNCgkJcHJpdmF0ZSBmdW5jdGlvbiBsY0xpc3RlbmVyKGV2ZW50OlN0YXR1c0V2ZW50KTp2b2lkDQoJCXsNCgkJCS8vIE11c3QgaGF2ZSB0aGlzIGxpc3RlbmVyIHRvIGF2b2lkIGVycm9ycw0KCQkJaWYgKGV2ZW50LmxldmVsID09ICJlcnJvciIpDQoJCQl7DQoJCQkJX2xvY2FsQUlSRGVidWcgPSBmYWxzZTsNCgkJCX0NCgkJCWVsc2UgaWYoZXZlbnQubGV2ZWwgPT0ic3RhdHVzIiAmJiBmaXJzdEV2ZW50PT10cnVlKQ0KCQkJew0KCQkJCWZpcnN0RXZlbnQgPSBmYWxzZTsNCgkJCQl0cmFjZXIoIjw8IFN1Y2Nlc3NmdWwgQ29ubmVjdGlvbiBUbyBFdmVudCBMb2dnZXIgPj4iKTsNCgkJCQl0cmFjZXIoIkRFQlVHIElORk86IFxuPCIrQ2FwYWJpbGl0aWVzLnNlcnZlclN0cmluZyArICI+XG5GbGFzaCBQbGF5ZXIgVmVyc2lvbjogIiArIENhcGFiaWxpdGllcy52ZXJzaW9uICsgIlxuIik7DQoJCQkJX2xvY2FsQUlSRGVidWcgPSB0cnVlOw0KCQkJfQ0KCQl9DQoNCgkJcHVibGljIGZ1bmN0aW9uIGxvY2FsQUlSRGVidWcoKTpCb29sZWFuDQoJCXsNCgkJCXJldHVybiBfbG9jYWxBSVJEZWJ1ZzsNCgkJfQ0KDQoJCXB1YmxpYyBmdW5jdGlvbiB0cmFjZXIobXNnOlN0cmluZyk6dm9pZA0KCQl7DQoJCQl0cmFjZShtc2cpOw0KCQkJdmFyIG91dE1zZzpTdHJpbmcgPSAiWyIgKyBnZXRUaW1lcigpICsgIm1zXSAiICsgbXNnOw0KCQkJb3V0Z29pbmdfbGMuc2VuZCgiX2xvZ19vdXRwdXQiLCJkaXNwbGF5TXNnIixvdXRNc2cpOw0KCQkJCQkJCSANCgkJfQ0KCX0NCn0NCg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/actionscript/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/actionscript/Jplayer.as</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogalBsYXllciBQbHVnaW4gZm9yIGpRdWVyeSBKYXZhU2NyaXB0IExpYnJhcnkKICogaHR0cDovL3d3dy5qcGxheWVyLm9yZwogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDkgLSAyMDEzIEhhcHB5d29ybSBMdGQKICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVC4KICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVAogKgogKiBBdXRob3I6IE1hcmsgSiBQYW5hZ2hpc3RvbgogKiBWZXJzaW9uOiAyLjQuMAogKiBEYXRlOiA1dGggSnVuZSAyMDEzCiAqCiAqIEZsYXNoVmFycyBleHBlY3RlZDogKEFTMyBwcm9wZXJ0eSBvZjogbG9hZGVySW5mby5wYXJhbWV0ZXJzKQogKglpZDogCShVUkwgRW5jb2RlZDogU3RyaW5nKSBJZCBvZiBqUGxheWVyIGluc3RhbmNlCiAqCXZvbDoJKE51bWJlcikgU2V0cyB0aGUgaW5pdGlhbCB2b2x1bWUKICoJbXV0ZWQ6CShCb29sZWFuIGluIGEgU3RyaW5nKSBTZXRzIHRoZSBpbml0aWFsIG11dGVkIHN0YXRlCiAqCWpRdWVyeToJKFVSTCBFbmNvZGVkOiBTdHJpbmcpIFNldHMgdGhlIGpRdWVyeSB2YXIgbmFtZS4gVXNlZCB3aXRoOiBzb21lVmFyID0galF1ZXJ5Lm5vQ29uZmxpY3QodHJ1ZSk7IFRoZSBzb21lVmFyIG5hbWUgbXVzdCBjb250YWluIGpRdWVyeSBpbiBpdC4KICoKICogQ29tcGlsZWQgdXNpbmc6IEFkb2JlIEZsZXggQ29tcGlsZXIgKG14bWxjKSBWZXJzaW9uIDQuNS4xIGJ1aWxkIDIxMzI4CiAqLwoKcGFja2FnZSB7CglpbXBvcnQgZmxhc2guc3lzdGVtLlNlY3VyaXR5OwoJaW1wb3J0IGZsYXNoLmV4dGVybmFsLkV4dGVybmFsSW50ZXJmYWNlOwoKCWltcG9ydCBmbGFzaC51dGlscy5UaW1lcjsKCWltcG9ydCBmbGFzaC5ldmVudHMuVGltZXJFdmVudDsKCQoJaW1wb3J0IGZsYXNoLnRleHQuVGV4dEZpZWxkOwoJaW1wb3J0IGZsYXNoLnRleHQuVGV4dEZvcm1hdDsKCglpbXBvcnQgZmxhc2guZXZlbnRzLktleWJvYXJkRXZlbnQ7CgoJaW1wb3J0IGZsYXNoLmRpc3BsYXkuU3ByaXRlOwoJaW1wb3J0IGhhcHB5d29ybS5qUGxheWVyLio7CgoJaW1wb3J0IGZsYXNoLmRpc3BsYXkuU3RhZ2VBbGlnbjsKCWltcG9ydCBmbGFzaC5kaXNwbGF5LlN0YWdlU2NhbGVNb2RlOwoJaW1wb3J0IGZsYXNoLmV2ZW50cy5FdmVudDsKCWltcG9ydCBmbGFzaC5uZXQuTG9jYWxDb25uZWN0aW9uOwoJaW1wb3J0IGZsYXNoLmV2ZW50cy5TdGF0dXNFdmVudDsKCglpbXBvcnQgZmxhc2guZXZlbnRzLk1vdXNlRXZlbnQ7CgoJaW1wb3J0IGZsYXNoLnVpLkNvbnRleHRNZW51OwoJaW1wb3J0IGZsYXNoLnVpLkNvbnRleHRNZW51SXRlbTsKCWltcG9ydCBmbGFzaC5ldmVudHMuQ29udGV4dE1lbnVFdmVudDsKCWltcG9ydCBmbGFzaC5uZXQuVVJMUmVxdWVzdDsKCWltcG9ydCBmbGFzaC5uZXQubmF2aWdhdGVUb1VSTDsKCWltcG9ydCBmbGFzaC5tZWRpYS5WaWRlbzsKCglwdWJsaWMgY2xhc3MgSnBsYXllciBleHRlbmRzIFNwcml0ZSB7CgkJcHJpdmF0ZSB2YXIgalF1ZXJ5OlN0cmluZzsKCQlwcml2YXRlIHZhciBzZW50TnVtYmVyRnJhY3Rpb25EaWdpdHM6dWludCA9IDI7CgoJCXB1YmxpYyB2YXIgY29tbW9uU3RhdHVzOkpwbGF5ZXJTdGF0dXMgPSBuZXcgSnBsYXllclN0YXR1cygpOyAvLyBVc2VkIGZvciBpbml0YWwgcmVhZHkgZXZlbnQgc28gdm9sdW1lIGlzIGNvcnJlY3QuCgoJCXByaXZhdGUgdmFyIG15SW5pdFRpbWVyOlRpbWVyID0gbmV3IFRpbWVyKDEwMCwgMCk7CgoJCXByaXZhdGUgdmFyIG15TXAzUGxheWVyOkpwbGF5ZXJNcDM7CgkJcHJpdmF0ZSB2YXIgbXlNcDRQbGF5ZXI6SnBsYXllck1wNDsKCgkJcHJpdmF0ZSB2YXIgbXlSdG1wUGxheWVyOkpwbGF5ZXJSdG1wOwoJCQoJCXByaXZhdGUgdmFyIGlzUnRtcDpCb29sZWFuID0gZmFsc2U7CgkJcHJpdmF0ZSB2YXIgaXNNcDQ6Qm9vbGVhbiA9IGZhbHNlOwoKCQlwcml2YXRlIHZhciBpc01wMzpCb29sZWFuID0gZmFsc2U7CgkJcHJpdmF0ZSB2YXIgaXNWaWRlbzpCb29sZWFuID0gZmFsc2U7CgoJCXByaXZhdGUgdmFyIHNlY3VyaXR5SXNzdWU6Qm9vbGVhbiA9IGZhbHNlOyAvLyBPbiBkaXJlY3QgYWNjZXNzIGFuZCB3aGVuIFNXRiBwYXJhbWV0ZXJzIGNvbnRhaW4gaWxsZWdhbCBjaGFyYWN0ZXJzCgoJCXByaXZhdGUgdmFyIGNvbnRleHRNZW51Rml4OlNwcml0ZSA9IG5ldyBTcHJpdGUoKTsgLy8gQSBzcHJpdGUgdGhhdCB3aWxsIGJlIG9uIHRvcCBhbmQgZml4IHRoZSBjb250ZW50IG1lbnUgb3ZlciB2aWRlbyBidWcuIChBIEZsYXNoIHBsdWdpbiBidWcuKQoKCQlwcml2YXRlIHZhciB0eExvZzpUZXh0RmllbGQ7CgkJcHJpdmF0ZSB2YXIgZGVidWc6Qm9vbGVhbiA9IGZhbHNlOyAvLyBTZXQgZGVidWcgdG8gZmFsc2UgZm9yIHJlbGVhc2UgY29tcGlsZSEKCQlwcml2YXRlIHZhciBsb2NhbEFJUkRlYnVnOkJvb2xlYW4gPSBmYWxzZTsgLy8gVGhpcyBpcyBhdXRvZGV0ZXJtaW5lZCBieSBBSVIgYXBwIC0gbGVhdmUgZmFsc2UhCgoJCXByaXZhdGUgdmFyIHRyYWNlT3V0OlRyYWNlT3V0OwoKCQlwdWJsaWMgZnVuY3Rpb24gSnBsYXllcigpIHsKCgkJCWZsYXNoLnN5c3RlbS5TZWN1cml0eS5hbGxvd0RvbWFpbigiKiIpOwoJCQl0cmFjZU91dCA9IG5ldyBUcmFjZU91dCgpOwoKCQkJLy8gRml4IHRvIHRoZSBzZWN1cml0eSBleHBsb2l0IHJlcG9ydGVkIGJ5IEphc29uIENhbHZlcnQgaHR0cDovL2FwcHNlYy53cy8KCQkJY2hlY2tGbGFzaFZhcnMobG9hZGVySW5mby5wYXJhbWV0ZXJzKTsKCgkJCXN0YWdlLnNjYWxlTW9kZSA9IFN0YWdlU2NhbGVNb2RlLk5PX1NDQUxFOwoJCQlzdGFnZS5hbGlnbiA9IFN0YWdlQWxpZ24uVE9QX0xFRlQ7CgoJCQlpZighc2VjdXJpdHlJc3N1ZSkgewoJCQkJLy8gVGhlIGpRdWVyeSBwYXJhbSBpcyB0aGUgcHJpbWFyeSBjYXVzZSBvZiBzZWN1cml0eSBjb25jZXJucy4KCQkJCWpRdWVyeSA9IGxvYWRlckluZm8ucGFyYW1ldGVycy5qUXVlcnkgKyAiKCcjIiArIGxvYWRlckluZm8ucGFyYW1ldGVycy5pZCArICInKS5qUGxheWVyIjsKCQkJCWNvbW1vblN0YXR1cy52b2x1bWUgPSBOdW1iZXIobG9hZGVySW5mby5wYXJhbWV0ZXJzLnZvbCk7CgkJCQljb21tb25TdGF0dXMubXV0ZWQgPSBsb2FkZXJJbmZvLnBhcmFtZXRlcnMubXV0ZWQgPT0gInRydWUiOwoKCQkJCXN0YWdlLmFkZEV2ZW50TGlzdGVuZXIoRXZlbnQuUkVTSVpFLCByZXNpemVIYW5kbGVyKTsKCQkJCXN0YWdlLmFkZEV2ZW50TGlzdGVuZXIoTW91c2VFdmVudC5DTElDSywgY2xpY2tIYW5kbGVyKTsKCgkJCQl2YXIgaW5pdGlhbFZvbHVtZTpOdW1iZXIgPSBjb21tb25TdGF0dXMudm9sdW1lOwoJCQkJaWYoY29tbW9uU3RhdHVzLm11dGVkKSB7CgkJCQkJaW5pdGlhbFZvbHVtZSA9IDA7CgkJCQl9CgoJCQkJbXlNcDNQbGF5ZXIgPSBuZXcgSnBsYXllck1wMyhpbml0aWFsVm9sdW1lKTsKCQkJCWFkZENoaWxkKG15TXAzUGxheWVyKTsKCgkJCQlteU1wNFBsYXllciA9IG5ldyBKcGxheWVyTXA0KGluaXRpYWxWb2x1bWUpOwoJCQkJYWRkQ2hpbGQobXlNcDRQbGF5ZXIpOwoKCQkJCW15UnRtcFBsYXllciA9IG5ldyBKcGxheWVyUnRtcChpbml0aWFsVm9sdW1lKTsKCQkJCWFkZENoaWxkKG15UnRtcFBsYXllcik7CgoJCQkJc3dpdGNoVHlwZSgibXAzIik7IC8vIHNldCBkZWZhdWx0IHN0YXRlIHRvIG1wMwoJCQl9CgoJCQkvLyBUaGUgQ29udGV4dE1lbnUgb25seSBwYXJ0aWFsbHkgd29ya3MuIFRoZSBtZW51IHNlbGVjdCBldmVudHMgbmV2ZXIgb2NjdXIuCgkJCS8vIEludmVzdGlnYXRlZCBhbmQgaXQgaXMgc29tZXRoaW5nIHRvIGRvIHdpdGggdGhlIHdheSBqUGxheWVyIGluc2VydHMgdGhlIEZsYXNoIG9uIHRoZSBwYWdlLgoJCQkvLyBBIHNpbXBsZSB0ZXN0IGluc2VydGluZyB0aGUgSnBsYXllci5zd2Ygb24gYSBwYWdlIHVzaW5nOiAxKSBTV0ZPYmplY3QgMi4yIHdvcmtzLiAyKSBBQ19GTF9SdW5Db250ZW50KCkgd29ya3MuCgkJCS8vIGpQbGF5ZXIgRmxhc2ggaW5zZXJ0aW9uIGlzIGJhc2VkIG9uIFNXRk9iamVjdCAyLjIgYW5kIHRoZSByZXNhb24gYmVoaW5kIHRoaXMgZmFpbHVyZSBpcyBub3QgY2xlYXIuIFRoZSBGbGFzaCBpbnNlcnRpb24gSFRNTCBvbiB0aGUgcGFnZSBsb29rcyBzaW1pbGFyLgoJCQl2YXIgbXlDb250ZXh0TWVudTpDb250ZXh0TWVudSA9IG5ldyBDb250ZXh0TWVudSgpOwoJCQlteUNvbnRleHRNZW51LmhpZGVCdWlsdEluSXRlbXMoKTsKCQkJdmFyIG1lbnVJdGVtX2pQbGF5ZXI6Q29udGV4dE1lbnVJdGVtID0gbmV3IENvbnRleHRNZW51SXRlbSgialBsYXllciAiICsgSnBsYXllclN0YXR1cy5WRVJTSU9OKTsKCQkJdmFyIG1lbnVJdGVtX2hhcHB5d29ybTpDb250ZXh0TWVudUl0ZW0gPSBuZXcgQ29udGV4dE1lbnVJdGVtKCLCqSAyMDA5LTIwMTMgSGFwcHl3b3JtIEx0ZCIsIHRydWUpOwoJCQltZW51SXRlbV9qUGxheWVyLmFkZEV2ZW50TGlzdGVuZXIoQ29udGV4dE1lbnVFdmVudC5NRU5VX0lURU1fU0VMRUNULCBtZW51U2VsZWN0SGFuZGxlcl9qUGxheWVyKTsKCQkJbWVudUl0ZW1faGFwcHl3b3JtLmFkZEV2ZW50TGlzdGVuZXIoQ29udGV4dE1lbnVFdmVudC5NRU5VX0lURU1fU0VMRUNULCBtZW51U2VsZWN0SGFuZGxlcl9oYXBweXdvcm0pOwoJCQlteUNvbnRleHRNZW51LmN1c3RvbUl0ZW1zLnB1c2gobWVudUl0ZW1falBsYXllciwgbWVudUl0ZW1faGFwcHl3b3JtKTsKCQkJY29udGV4dE1lbnUgPSBteUNvbnRleHRNZW51OwoKCQkJLy8gTG9nIGNvbnNvbGUgZm9yIGRldiBjb21waWxlIG9wdGlvbjogZGVidWcKCQkJaWYoZGVidWcgfHwgc2VjdXJpdHlJc3N1ZSkgewoJCQkJdHhMb2cgPSBuZXcgVGV4dEZpZWxkKCk7CgkJCQl0eExvZy54ID0gNTsKCQkJCXR4TG9nLnkgPSA1OwoJCQkJdHhMb2cud2lkdGggPSBzdGFnZS5zdGFnZVdpZHRoIC0gMTA7CgkJCQl0eExvZy5oZWlnaHQgPSBzdGFnZS5zdGFnZUhlaWdodCAtIDEwOwoJCQkJdHhMb2cuYmFja2dyb3VuZENvbG9yID0gMHhFRUVFRkY7CgkJCQl0eExvZy5ib3JkZXIgPSB0cnVlOwoJCQkJdHhMb2cuYmFja2dyb3VuZCA9IHRydWU7CgkJCQl0eExvZy5tdWx0aWxpbmUgPSB0cnVlOwoJCQkJdHhMb2cudGV4dCA9ICJqUGxheWVyICIgKyBKcGxheWVyU3RhdHVzLlZFUlNJT047CgoJCQkJaWYoc2VjdXJpdHlJc3N1ZSkgewoJCQkJCXR4TG9nLnZpc2libGUgPSB0cnVlOwoJCQkJfSBlbHNlIGlmKGRlYnVnKSB7CgkJCQkJdHhMb2cudmlzaWJsZSA9IGZhbHNlOwoJCQkJfQoKCQkJCXRoaXMuYWRkQ2hpbGQodHhMb2cpOwoKCQkJCWlmKGRlYnVnICYmICFzZWN1cml0eUlzc3VlKSB7CgkJCQkJdGhpcy5zdGFnZS5hZGRFdmVudExpc3RlbmVyKEtleWJvYXJkRXZlbnQuS0VZX1VQLCBrZXlib2FyZEhhbmRsZXIpOwoKCQkJCQlteU1wM1BsYXllci5hZGRFdmVudExpc3RlbmVyKEpwbGF5ZXJFdmVudC5ERUJVR19NU0csIGRlYnVnTXNnSGFuZGxlcik7CgkJCQkJbXlNcDRQbGF5ZXIuYWRkRXZlbnRMaXN0ZW5lcihKcGxheWVyRXZlbnQuREVCVUdfTVNHLCBkZWJ1Z01zZ0hhbmRsZXIpOwoJCQkJCW15UnRtcFBsYXllci5hZGRFdmVudExpc3RlbmVyKEpwbGF5ZXJFdmVudC5ERUJVR19NU0csIGRlYnVnTXNnSGFuZGxlcik7CgkJCQl9CgkJCX0KCgkJCS8vIEtub3duIEZsYXNoIHByb2JsZW0gd2l0aCBjb250ZXh0TWVudSBvdmVyIHZpZGVvIHBsYXllci4KCQkJLy8gQWRkIGEgdHJhbnNwYXJlbnQgcmVjdGFuZ2xlIGludG8gdGhlIHNwcml0ZS4KCQkJY29udGV4dE1lbnVGaXguZ3JhcGhpY3MuYmVnaW5GaWxsKDB4MDAwMDAwLCAwKTsgLy8gVHJhbnNwYXJlbnQgYmxhY2sKCQkJY29udGV4dE1lbnVGaXguZ3JhcGhpY3MuZHJhd1JlY3QoMCwgMCwgMTAsIDEwKTsgLy8gQXJiaXRhcnkgcmVjdGFuZ2xlCgkJCWNvbnRleHRNZW51Rml4LmdyYXBoaWNzLmVuZEZpbGwoKTsKCQkJYWRkQ2hpbGQoY29udGV4dE1lbnVGaXgpOyAvLyBQdXQgdGhlIHNwcml0ZSBvbiB0aGUgdG9wIGxheWVyLgoKCQkJaWYoIXNlY3VyaXR5SXNzdWUpIHsKCQkJCS8vIERlbGF5IGluaXQoKSBiZWNhdXNlIEZpcmVmb3ggMy41LjcrIGRldmVsb3BlZCBhIGJ1ZyB3aXRoIGxvY2FsIHRlc3RpbmcgaW4gRmlyZWJ1Zy4KCQkJCW15SW5pdFRpbWVyLmFkZEV2ZW50TGlzdGVuZXIoVGltZXJFdmVudC5USU1FUiwgaW5pdCk7CgkJCQlteUluaXRUaW1lci5zdGFydCgpOwoJCQl9CgkJfQoKCQlwcml2YXRlIGZ1bmN0aW9uIHN3aXRjaFR5cGUocGxheVR5cGU6U3RyaW5nKTp2b2lkIHsKCQkJc3dpdGNoKHBsYXlUeXBlKSB7CgkJCQljYXNlICJydG1wYSI6CgkJCQlpc1J0bXA9dHJ1ZTsKCQkJCWlzTXAzPWZhbHNlOwoJCQkJaXNNcDQ9ZmFsc2U7CgkJCQlpc1ZpZGVvPWZhbHNlOwoJCQkJYnJlYWs7CgkJCWNhc2UgInJ0bXB2IjoKCQkJCWlzUnRtcD10cnVlOwoJCQkJaXNNcDM9ZmFsc2U7CgkJCQlpc01wND1mYWxzZTsKCQkJCWlzVmlkZW89dHJ1ZTsKCQkJCWJyZWFrOwoJCQljYXNlICJtcDMiOgoJCQkJaXNSdG1wPWZhbHNlOwoJCQkJaXNNcDM9dHJ1ZTsKCQkJCWlzTXA0PWZhbHNlOwoJCQkJaXNWaWRlbz1mYWxzZTsKCQkJCWJyZWFrOwoJCQljYXNlICJtcDQiOgoJCQkJaXNSdG1wPWZhbHNlOwoJCQkJaXNNcDM9ZmFsc2U7CgkJCQlpc01wND10cnVlOwoJCQkJaXNWaWRlbz1mYWxzZTsKCQkJCWJyZWFrOwoJCQljYXNlICJtNHYiOgoJCQkJaXNSdG1wPWZhbHNlOwoJCQkJaXNNcDM9ZmFsc2U7CgkJCQlpc01wND10cnVlOwoJCQkJaXNWaWRlbz10cnVlOwoJCQkJYnJlYWs7CgkJCX0KCQkJCgkJCWxpc3RlblRvTXAzKGlzTXAzKTsKCQkJbGlzdGVuVG9NcDQoaXNNcDQpOwoJCQlsaXN0ZW5Ub1J0bXAoaXNSdG1wKTsKCQl9CgkJCgkJcHJpdmF0ZSBmdW5jdGlvbiBpbml0KGU6VGltZXJFdmVudCk6dm9pZCB7CgkJCW15SW5pdFRpbWVyLnN0b3AoKTsKCQkJaWYoRXh0ZXJuYWxJbnRlcmZhY2UuYXZhaWxhYmxlICYmICFzZWN1cml0eUlzc3VlKSB7CgkJCQlFeHRlcm5hbEludGVyZmFjZS5hZGRDYWxsYmFjaygiZmxfc2V0QXVkaW9fbXAzIiwgZmxfc2V0QXVkaW9fbXAzKTsKCQkJCUV4dGVybmFsSW50ZXJmYWNlLmFkZENhbGxiYWNrKCJmbF9zZXRBdWRpb19tNGEiLCBmbF9zZXRBdWRpb19tNGEpOwoJCQkJRXh0ZXJuYWxJbnRlcmZhY2UuYWRkQ2FsbGJhY2soImZsX3NldFZpZGVvX200diIsIGZsX3NldFZpZGVvX200dik7CgkJCQlFeHRlcm5hbEludGVyZmFjZS5hZGRDYWxsYmFjaygiZmxfc2V0QXVkaW9fcnRtcCIsIGZsX3NldEF1ZGlvX3J0bXApOwoJCQkJRXh0ZXJuYWxJbnRlcmZhY2UuYWRkQ2FsbGJhY2soImZsX3NldFZpZGVvX3J0bXAiLCBmbF9zZXRWaWRlb19ydG1wKTsKCQkJCUV4dGVybmFsSW50ZXJmYWNlLmFkZENhbGxiYWNrKCJmbF9jbGVhck1lZGlhIiwgZmxfY2xlYXJNZWRpYSk7CgkJCQlFeHRlcm5hbEludGVyZmFjZS5hZGRDYWxsYmFjaygiZmxfbG9hZCIsIGZsX2xvYWQpOwoJCQkJRXh0ZXJuYWxJbnRlcmZhY2UuYWRkQ2FsbGJhY2soImZsX3BsYXkiLCBmbF9wbGF5KTsKCQkJCUV4dGVybmFsSW50ZXJmYWNlLmFkZENhbGxiYWNrKCJmbF9wYXVzZSIsIGZsX3BhdXNlKTsKCQkJCUV4dGVybmFsSW50ZXJmYWNlLmFkZENhbGxiYWNrKCJmbF9wbGF5X2hlYWQiLCBmbF9wbGF5X2hlYWQpOwoJCQkJRXh0ZXJuYWxJbnRlcmZhY2UuYWRkQ2FsbGJhY2soImZsX3ZvbHVtZSIsIGZsX3ZvbHVtZSk7CgkJCQlFeHRlcm5hbEludGVyZmFjZS5hZGRDYWxsYmFjaygiZmxfbXV0ZSIsIGZsX211dGUpOwoKCQkJCUV4dGVybmFsSW50ZXJmYWNlLmNhbGwoalF1ZXJ5LCAialBsYXllckZsYXNoRXZlbnQiLCBKcGxheWVyRXZlbnQuSlBMQVlFUl9SRUFEWSwgZXh0cmFjdFN0YXR1c0RhdGEoY29tbW9uU3RhdHVzKSk7IC8vIFNlZSBKcGxheWVyU3RhdHVzKCkgY2xhc3MgZm9yIHZlcnNpb24gbnVtYmVyLgoJCQl9CgkJfQoJCXByaXZhdGUgZnVuY3Rpb24gY2hlY2tGbGFzaFZhcnMocDpPYmplY3QpOnZvaWQgewoJCQkvLyBDaGVjayBmb3IgZGlyZWN0IGFjY2Vzcy4gSW5zcGlyZWQgYnkgbWVkaWFlbGVtZW50LmpzIC0gQWxzbyBhZGRlZCBuYW1lIHRvIEhUTUwgb2JqZWN0IGZvciBub24tSUUgYnJvd3NlcnMuCgkJCWlmKEV4dGVybmFsSW50ZXJmYWNlLm9iamVjdElEICE9IG51bGwgJiYgRXh0ZXJuYWxJbnRlcmZhY2Uub2JqZWN0SUQudG9TdHJpbmcoKSAhPSAiIikgewoJCQkJZm9yIGVhY2ggKHZhciBzOlN0cmluZyBpbiBwKSB7CgkJCQkJaWYoaWxsZWdhbENoYXIocykpIHsKCQkJCQkJc2VjdXJpdHlJc3N1ZSA9IHRydWU7IC8vIEZvdW5kIGEgc2VjdXJpdHkgY29uY2Vybi4KCQkJCQl9CgkJCQl9CgkJCQlpZighc2VjdXJpdHlJc3N1ZSkgewoJCQkJCWlmKGpRdWVyeUlsbGVnYWwocC5qUXVlcnkpKSB7CgkJCQkJCXNlY3VyaXR5SXNzdWUgPSB0cnVlOyAvLyBGb3VuZCBhIHNlY3VyaXR5IGNvbmNlcm4uCgkJCQkJfQoJCQkJfQoJCQl9IGVsc2UgewoJCQkJc2VjdXJpdHlJc3N1ZSA9IHRydWU7IC8vIERpcmVjdCBhY2Nlc3MgZGlzYWJsZXMgdGhlIGNhbGxiYWNrcywgd2hpY2ggd2VyZSBhIHNlY3VyaXR5IGNvbmNlcm4uCgkJCX0KCQl9CgkJcHJpdmF0ZSBmdW5jdGlvbiBpbGxlZ2FsQ2hhcihzOlN0cmluZyk6Qm9vbGVhbiB7CgkJCS8vIEEgd2hpdGVsaXN0IG9mIGFjY2VwdGVkIGNoYXJzLgoJCQl2YXIgdmFsaWRQYXJhbTpSZWdFeHAgPSAvXlstQS1aYS16MC05Xy5dKyQvOwoJCQlyZXR1cm4gIXZhbGlkUGFyYW0udGVzdChzKTsKCQl9CgkJcHJpdmF0ZSBmdW5jdGlvbiBqUXVlcnlJbGxlZ2FsKHM6U3RyaW5nKTpCb29sZWFuIHsKCQkJLy8gQ2hlY2sgcGFyYW0gY29udGFpbnMgdGhlIHRlcm0galF1ZXJ5LgoJCQl2YXIgdmFsaWRQYXJhbTpSZWdFeHAgPSAvKGpRdWVyeSkvOwoJCQlyZXR1cm4gIXZhbGlkUGFyYW0udGVzdChzKTsKCQl9CgkJLy8gc3dpdGNoVHlwZSgpIGhlcmUKCQlwcml2YXRlIGZ1bmN0aW9uIGxpc3RlblRvTXAzKGFjdGl2ZTpCb29sZWFuKTp2b2lkIHsKCQkJaWYoYWN0aXZlKSB7CgkJCQlteU1wM1BsYXllci5hZGRFdmVudExpc3RlbmVyKEpwbGF5ZXJFdmVudC5KUExBWUVSX0VSUk9SLCBqUGxheWVyRmxhc2hFdmVudCk7CgkJCQlteU1wM1BsYXllci5hZGRFdmVudExpc3RlbmVyKEpwbGF5ZXJFdmVudC5KUExBWUVSX1BST0dSRVNTLCBqUGxheWVyRmxhc2hFdmVudCk7CgkJCQlteU1wM1BsYXllci5hZGRFdmVudExpc3RlbmVyKEpwbGF5ZXJFdmVudC5KUExBWUVSX1RJTUVVUERBVEUsIGpQbGF5ZXJGbGFzaEV2ZW50KTsKCQkJCW15TXAzUGxheWVyLmFkZEV2ZW50TGlzdGVuZXIoSnBsYXllckV2ZW50LkpQTEFZRVJfRU5ERUQsIGpQbGF5ZXJGbGFzaEV2ZW50KTsKCQkJCQoJCQkJbXlNcDNQbGF5ZXIuYWRkRXZlbnRMaXN0ZW5lcihKcGxheWVyRXZlbnQuSlBMQVlFUl9QTEFZLCBqUGxheWVyRmxhc2hFdmVudCk7CgkJCQlteU1wM1BsYXllci5hZGRFdmVudExpc3RlbmVyKEpwbGF5ZXJFdmVudC5KUExBWUVSX1BBVVNFLCBqUGxheWVyRmxhc2hFdmVudCk7CgkJCQlteU1wM1BsYXllci5hZGRFdmVudExpc3RlbmVyKEpwbGF5ZXJFdmVudC5KUExBWUVSX0xPQURTVEFSVCwgalBsYXllckZsYXNoRXZlbnQpOwoKCQkJCW15TXAzUGxheWVyLmFkZEV2ZW50TGlzdGVuZXIoSnBsYXllckV2ZW50LkpQTEFZRVJfU0VFS0lORywgalBsYXllckZsYXNoRXZlbnQpOwoJCQkJbXlNcDNQbGF5ZXIuYWRkRXZlbnRMaXN0ZW5lcihKcGxheWVyRXZlbnQuSlBMQVlFUl9TRUVLRUQsIGpQbGF5ZXJGbGFzaEV2ZW50KTsKCgkJCQlteU1wM1BsYXllci5hZGRFdmVudExpc3RlbmVyKEpwbGF5ZXJFdmVudC5KUExBWUVSX1dBSVRJTkcsIGpQbGF5ZXJGbGFzaEV2ZW50KTsgLy8gb25seSBNUDMgYXRtCgkJCQlteU1wM1BsYXllci5hZGRFdmVudExpc3RlbmVyKEpwbGF5ZXJFdmVudC5KUExBWUVSX1BMQVlJTkcsIGpQbGF5ZXJGbGFzaEV2ZW50KTsgLy8gb25seSBNUDMgYXRtCgoJCQkJbXlNcDNQbGF5ZXIuYWRkRXZlbnRMaXN0ZW5lcihKcGxheWVyRXZlbnQuSlBMQVlFUl9DQU5QTEFZLCBqUGxheWVyRmxhc2hFdmVudCk7IC8vIG9ubHkgTVAzIGF0bQoJCQkJbXlNcDNQbGF5ZXIuYWRkRXZlbnRMaXN0ZW5lcihKcGxheWVyRXZlbnQuSlBMQVlFUl9DQU5QTEFZVEhST1VHSCwgalBsYXllckZsYXNoRXZlbnQpOyAvLyBvbmx5IE1QMyBhdG0KCQkJfSBlbHNlIHsKCQkJCW15TXAzUGxheWVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoSnBsYXllckV2ZW50LkpQTEFZRVJfRVJST1IsIGpQbGF5ZXJGbGFzaEV2ZW50KTsKCQkJCW15TXAzUGxheWVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoSnBsYXllckV2ZW50LkpQTEFZRVJfUFJPR1JFU1MsIGpQbGF5ZXJGbGFzaEV2ZW50KTsKCQkJCW15TXAzUGxheWVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoSnBsYXllckV2ZW50LkpQTEFZRVJfVElNRVVQREFURSwgalBsYXllckZsYXNoRXZlbnQpOwoJCQkJbXlNcDNQbGF5ZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihKcGxheWVyRXZlbnQuSlBMQVlFUl9FTkRFRCwgalBsYXllckZsYXNoRXZlbnQpOwoJCQkJCgkJCQlteU1wM1BsYXllci5yZW1vdmVFdmVudExpc3RlbmVyKEpwbGF5ZXJFdmVudC5KUExBWUVSX1BMQVksIGpQbGF5ZXJGbGFzaEV2ZW50KTsKCQkJCW15TXAzUGxheWVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoSnBsYXllckV2ZW50LkpQTEFZRVJfUEFVU0UsIGpQbGF5ZXJGbGFzaEV2ZW50KTsKCQkJCW15TXAzUGxheWVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoSnBsYXllckV2ZW50LkpQTEFZRVJfTE9BRFNUQVJULCBqUGxheWVyRmxhc2hFdmVudCk7CgoJCQkJbXlNcDNQbGF5ZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihKcGxheWVyRXZlbnQuSlBMQVlFUl9TRUVLSU5HLCBqUGxheWVyRmxhc2hFdmVudCk7CgkJCQlteU1wM1BsYXllci5yZW1vdmVFdmVudExpc3RlbmVyKEpwbGF5ZXJFdmVudC5KUExBWUVSX1NFRUtFRCwgalBsYXllckZsYXNoRXZlbnQpOwoKCQkJCW15TXAzUGxheWVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoSnBsYXllckV2ZW50LkpQTEFZRVJfV0FJVElORywgalBsYXllckZsYXNoRXZlbnQpOyAvLyBvbmx5IE1QMyBhdG0KCQkJCW15TXAzUGxheWVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoSnBsYXllckV2ZW50LkpQTEFZRVJfUExBWUlORywgalBsYXllckZsYXNoRXZlbnQpOyAvLyBvbmx5IE1QMyBhdG0KCgkJCQlteU1wM1BsYXllci5yZW1vdmVFdmVudExpc3RlbmVyKEpwbGF5ZXJFdmVudC5KUExBWUVSX0NBTlBMQVksIGpQbGF5ZXJGbGFzaEV2ZW50KTsgLy8gb25seSBNUDMgYXRtCgkJCQlteU1wM1BsYXllci5yZW1vdmVFdmVudExpc3RlbmVyKEpwbGF5ZXJFdmVudC5KUExBWUVSX0NBTlBMQVlUSFJPVUdILCBqUGxheWVyRmxhc2hFdmVudCk7IC8vIG9ubHkgTVAzIGF0bQoJCQl9CgkJfQoJCXByaXZhdGUgZnVuY3Rpb24gbGlzdGVuVG9NcDQoYWN0aXZlOkJvb2xlYW4pOnZvaWQgewoJCQlpZihhY3RpdmUpIHsKCQkJCW15TXA0UGxheWVyLmFkZEV2ZW50TGlzdGVuZXIoSnBsYXllckV2ZW50LkpQTEFZRVJfRVJST1IsIGpQbGF5ZXJGbGFzaEV2ZW50KTsKCQkJCW15TXA0UGxheWVyLmFkZEV2ZW50TGlzdGVuZXIoSnBsYXllckV2ZW50LkpQTEFZRVJfUFJPR1JFU1MsIGpQbGF5ZXJGbGFzaEV2ZW50KTsKCQkJCW15TXA0UGxheWVyLmFkZEV2ZW50TGlzdGVuZXIoSnBsYXllckV2ZW50LkpQTEFZRVJfVElNRVVQREFURSwgalBsYXllckZsYXNoRXZlbnQpOwoJCQkJbXlNcDRQbGF5ZXIuYWRkRXZlbnRMaXN0ZW5lcihKcGxheWVyRXZlbnQuSlBMQVlFUl9FTkRFRCwgalBsYXllckZsYXNoRXZlbnQpOwoKCQkJCW15TXA0UGxheWVyLmFkZEV2ZW50TGlzdGVuZXIoSnBsYXllckV2ZW50LkpQTEFZRVJfUExBWSwgalBsYXllckZsYXNoRXZlbnQpOwoJCQkJbXlNcDRQbGF5ZXIuYWRkRXZlbnRMaXN0ZW5lcihKcGxheWVyRXZlbnQuSlBMQVlFUl9QQVVTRSwgalBsYXllckZsYXNoRXZlbnQpOwoJCQkJbXlNcDRQbGF5ZXIuYWRkRXZlbnRMaXN0ZW5lcihKcGxheWVyRXZlbnQuSlBMQVlFUl9MT0FEU1RBUlQsIGpQbGF5ZXJGbGFzaEV2ZW50KTsKCgkJCQlteU1wNFBsYXllci5hZGRFdmVudExpc3RlbmVyKEpwbGF5ZXJFdmVudC5KUExBWUVSX1NFRUtJTkcsIGpQbGF5ZXJGbGFzaEV2ZW50KTsKCQkJCW15TXA0UGxheWVyLmFkZEV2ZW50TGlzdGVuZXIoSnBsYXllckV2ZW50LkpQTEFZRVJfU0VFS0VELCBqUGxheWVyRmxhc2hFdmVudCk7CgoJCQkJbXlNcDRQbGF5ZXIuYWRkRXZlbnRMaXN0ZW5lcihKcGxheWVyRXZlbnQuSlBMQVlFUl9MT0FERURNRVRBREFUQSwgalBsYXllck1ldGFEYXRhSGFuZGxlcik7IC8vIE5vdGUgdGhlIHVuaXF1ZSBoYW5kbGVyCgkJCX0gZWxzZSB7CgkJCQlteU1wNFBsYXllci5yZW1vdmVFdmVudExpc3RlbmVyKEpwbGF5ZXJFdmVudC5KUExBWUVSX0VSUk9SLCBqUGxheWVyRmxhc2hFdmVudCk7CgkJCQlteU1wNFBsYXllci5yZW1vdmVFdmVudExpc3RlbmVyKEpwbGF5ZXJFdmVudC5KUExBWUVSX1BST0dSRVNTLCBqUGxheWVyRmxhc2hFdmVudCk7CgkJCQlteU1wNFBsYXllci5yZW1vdmVFdmVudExpc3RlbmVyKEpwbGF5ZXJFdmVudC5KUExBWUVSX1RJTUVVUERBVEUsIGpQbGF5ZXJGbGFzaEV2ZW50KTsKCQkJCW15TXA0UGxheWVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoSnBsYXllckV2ZW50LkpQTEFZRVJfRU5ERUQsIGpQbGF5ZXJGbGFzaEV2ZW50KTsKCgkJCQlteU1wNFBsYXllci5yZW1vdmVFdmVudExpc3RlbmVyKEpwbGF5ZXJFdmVudC5KUExBWUVSX1BMQVksIGpQbGF5ZXJGbGFzaEV2ZW50KTsKCQkJCW15TXA0UGxheWVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoSnBsYXllckV2ZW50LkpQTEFZRVJfUEFVU0UsIGpQbGF5ZXJGbGFzaEV2ZW50KTsKCQkJCW15TXA0UGxheWVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoSnBsYXllckV2ZW50LkpQTEFZRVJfTE9BRFNUQVJULCBqUGxheWVyRmxhc2hFdmVudCk7CgoJCQkJbXlNcDRQbGF5ZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihKcGxheWVyRXZlbnQuSlBMQVlFUl9TRUVLSU5HLCBqUGxheWVyRmxhc2hFdmVudCk7CgkJCQlteU1wNFBsYXllci5yZW1vdmVFdmVudExpc3RlbmVyKEpwbGF5ZXJFdmVudC5KUExBWUVSX1NFRUtFRCwgalBsYXllckZsYXNoRXZlbnQpOwoKCQkJCW15TXA0UGxheWVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoSnBsYXllckV2ZW50LkpQTEFZRVJfTE9BREVETUVUQURBVEEsIGpQbGF5ZXJNZXRhRGF0YUhhbmRsZXIpOyAvLyBOb3RlIHRoZSB1bmlxdWUgaGFuZGxlcgoJCQl9CgkJfQoKCQlwcml2YXRlIGZ1bmN0aW9uIGxpc3RlblRvUnRtcChhY3RpdmU6Qm9vbGVhbik6dm9pZCB7CgkJCWlmKGFjdGl2ZSkgewoJCQkJbXlSdG1wUGxheWVyLmFkZEV2ZW50TGlzdGVuZXIoSnBsYXllckV2ZW50LkpQTEFZRVJfRVJST1IsIGpQbGF5ZXJGbGFzaEV2ZW50KTsKCQkJCW15UnRtcFBsYXllci5hZGRFdmVudExpc3RlbmVyKEpwbGF5ZXJFdmVudC5KUExBWUVSX1BST0dSRVNTLCBqUGxheWVyRmxhc2hFdmVudCk7CgkJCQlteVJ0bXBQbGF5ZXIuYWRkRXZlbnRMaXN0ZW5lcihKcGxheWVyRXZlbnQuSlBMQVlFUl9USU1FVVBEQVRFLCBqUGxheWVyRmxhc2hFdmVudCk7CgkJCQlteVJ0bXBQbGF5ZXIuYWRkRXZlbnRMaXN0ZW5lcihKcGxheWVyRXZlbnQuSlBMQVlFUl9FTkRFRCwgalBsYXllckZsYXNoRXZlbnQpOwoKCQkJCW15UnRtcFBsYXllci5hZGRFdmVudExpc3RlbmVyKEpwbGF5ZXJFdmVudC5KUExBWUVSX1BMQVksIGpQbGF5ZXJGbGFzaEV2ZW50KTsKCQkJCW15UnRtcFBsYXllci5hZGRFdmVudExpc3RlbmVyKEpwbGF5ZXJFdmVudC5KUExBWUVSX1BBVVNFLCBqUGxheWVyRmxhc2hFdmVudCk7CgkJCQlteVJ0bXBQbGF5ZXIuYWRkRXZlbnRMaXN0ZW5lcihKcGxheWVyRXZlbnQuSlBMQVlFUl9MT0FEU1RBUlQsIGpQbGF5ZXJGbGFzaEV2ZW50KTsKCQkJCQoJCQkJbXlSdG1wUGxheWVyLmFkZEV2ZW50TGlzdGVuZXIoSnBsYXllckV2ZW50LkpQTEFZRVJfQ0FOUExBWSwgalBsYXllckZsYXNoRXZlbnQpOwoKCQkJCW15UnRtcFBsYXllci5hZGRFdmVudExpc3RlbmVyKEpwbGF5ZXJFdmVudC5KUExBWUVSX1NFRUtJTkcsIGpQbGF5ZXJGbGFzaEV2ZW50KTsKCQkJCW15UnRtcFBsYXllci5hZGRFdmVudExpc3RlbmVyKEpwbGF5ZXJFdmVudC5KUExBWUVSX1NFRUtFRCwgalBsYXllckZsYXNoRXZlbnQpOwoKCQkJCW15UnRtcFBsYXllci5hZGRFdmVudExpc3RlbmVyKEpwbGF5ZXJFdmVudC5KUExBWUVSX0xPQURFRE1FVEFEQVRBLCBqUGxheWVyTWV0YURhdGFIYW5kbGVyKTsgLy8gTm90ZSB0aGUgdW5pcXVlIGhhbmRsZXIKCQkJfSBlbHNlIHsKCQkJCW15UnRtcFBsYXllci5yZW1vdmVFdmVudExpc3RlbmVyKEpwbGF5ZXJFdmVudC5KUExBWUVSX0VSUk9SLCBqUGxheWVyRmxhc2hFdmVudCk7CgkJCQlteVJ0bXBQbGF5ZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihKcGxheWVyRXZlbnQuSlBMQVlFUl9QUk9HUkVTUywgalBsYXllckZsYXNoRXZlbnQpOwoJCQkJbXlSdG1wUGxheWVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoSnBsYXllckV2ZW50LkpQTEFZRVJfVElNRVVQREFURSwgalBsYXllckZsYXNoRXZlbnQpOwoJCQkJbXlSdG1wUGxheWVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoSnBsYXllckV2ZW50LkpQTEFZRVJfRU5ERUQsIGpQbGF5ZXJGbGFzaEV2ZW50KTsKCgkJCQlteVJ0bXBQbGF5ZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihKcGxheWVyRXZlbnQuSlBMQVlFUl9QTEFZLCBqUGxheWVyRmxhc2hFdmVudCk7CgkJCQlteVJ0bXBQbGF5ZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihKcGxheWVyRXZlbnQuSlBMQVlFUl9QQVVTRSwgalBsYXllckZsYXNoRXZlbnQpOwoJCQkJbXlSdG1wUGxheWVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoSnBsYXllckV2ZW50LkpQTEFZRVJfTE9BRFNUQVJULCBqUGxheWVyRmxhc2hFdmVudCk7CgkJCQkKCQkJCW15UnRtcFBsYXllci5hZGRFdmVudExpc3RlbmVyKEpwbGF5ZXJFdmVudC5KUExBWUVSX0NBTlBMQVksIGpQbGF5ZXJGbGFzaEV2ZW50KTsKCgkJCQlteVJ0bXBQbGF5ZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihKcGxheWVyRXZlbnQuSlBMQVlFUl9TRUVLSU5HLCBqUGxheWVyRmxhc2hFdmVudCk7CgkJCQlteVJ0bXBQbGF5ZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihKcGxheWVyRXZlbnQuSlBMQVlFUl9TRUVLRUQsIGpQbGF5ZXJGbGFzaEV2ZW50KTsKCgkJCQlteVJ0bXBQbGF5ZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihKcGxheWVyRXZlbnQuSlBMQVlFUl9MT0FERURNRVRBREFUQSwgalBsYXllck1ldGFEYXRhSGFuZGxlcik7IC8vIE5vdGUgdGhlIHVuaXF1ZSBoYW5kbGVyCgkJCX0KCQl9CgoJCXByaXZhdGUgZnVuY3Rpb24gZmxfc2V0QXVkaW9fbXAzKHNyYzpTdHJpbmcpOkJvb2xlYW4gewoJCQlpZiAoc3JjICE9IG51bGwpIHsKCQkJCWxvZygiZmxfc2V0QXVkaW9fbXAzOiAiK3NyYyk7CgkJCQlzd2l0Y2hUeXBlKCJtcDMiKTsKCQkJCW15TXA0UGxheWVyLmNsZWFyRmlsZSgpOwoJCQkJbXlSdG1wUGxheWVyLmNsZWFyRmlsZSgpOwoJCQkJbXlNcDNQbGF5ZXIuc2V0RmlsZShzcmMpOwoJCQkJcmV0dXJuIHRydWU7CgkJCX0gZWxzZSB7CgkJCQlsb2coImZsX3NldEF1ZGlvX21wMzogbnVsbCIpOwoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9CgkJfQoJCXByaXZhdGUgZnVuY3Rpb24gZmxfc2V0QXVkaW9fcnRtcChzcmM6U3RyaW5nKTpCb29sZWFuIHsKCQkJdHJhY2VyKCJTRVQgUlRNUDogIitzcmMpOwoJCQlpZiAoc3JjICE9IG51bGwpIHsKCQkJCWxvZygiZmxfc2V0QXVkaW9fcnRtcDogIitzcmMpOwoJCQkJc3dpdGNoVHlwZSgicnRtcGEiKTsKCQkJCW15TXA0UGxheWVyLmNsZWFyRmlsZSgpOwoJCQkJbXlNcDNQbGF5ZXIuY2xlYXJGaWxlKCk7CgkJCQlteVJ0bXBQbGF5ZXIuc2V0RmlsZShzcmMsZmFsc2UpOwoJCQkJcmV0dXJuIHRydWU7CgkJCX0gZWxzZSB7CgkJCQlsb2coImZsX3NldEF1ZGlvX3J0bXA6IG51bGwiKTsKCQkJCXJldHVybiBmYWxzZTsKCQkJfQoJCX0KCQkKCQlwcml2YXRlIGZ1bmN0aW9uIGZsX3NldFZpZGVvX3J0bXAoc3JjOlN0cmluZyk6Qm9vbGVhbiB7CgkJCXRyYWNlcigiU0VUIFJUTVA6ICIrc3JjKTsKCQkJaWYgKHNyYyAhPSBudWxsKSB7CgkJCQlsb2coImZsX3NldFZpZGVvX3J0bXA6ICIrc3JjKTsKCQkJCXN3aXRjaFR5cGUoInJ0bXB2Iik7CgkJCQlteU1wNFBsYXllci5jbGVhckZpbGUoKTsKCQkJCW15TXAzUGxheWVyLmNsZWFyRmlsZSgpOwoJCQkJbXlSdG1wUGxheWVyLnNldEZpbGUoc3JjLHRydWUpOwoJCQkJcmV0dXJuIHRydWU7CgkJCX0gZWxzZSB7CgkJCQlsb2coImZsX3NldFZpZGVvX3J0bXA6IG51bGwiKTsKCQkJCXJldHVybiBmYWxzZTsKCQkJfQoJCX0KCQlwcml2YXRlIGZ1bmN0aW9uIGZsX3NldEF1ZGlvX200YShzcmM6U3RyaW5nKTpCb29sZWFuIHsKCQkJaWYgKHNyYyAhPSBudWxsKSB7CgkJCQlsb2coImZsX3NldEF1ZGlvX200YTogIitzcmMpOwoJCQkJc3dpdGNoVHlwZSgibXA0IikKCQkJCW15TXAzUGxheWVyLmNsZWFyRmlsZSgpOwoJCQkJbXlSdG1wUGxheWVyLmNsZWFyRmlsZSgpOwoJCQkJbXlNcDRQbGF5ZXIuc2V0RmlsZShzcmMpOwoJCQkJcmV0dXJuIHRydWU7CgkJCX0gZWxzZSB7CgkJCQlsb2coImZsX3NldEF1ZGlvX200YTogbnVsbCIpOwoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9CgkJfQoJCXByaXZhdGUgZnVuY3Rpb24gZmxfc2V0VmlkZW9fbTR2KHNyYzpTdHJpbmcpOkJvb2xlYW4gewoJCQlpZiAoc3JjICE9IG51bGwpIHsKCQkJCWxvZygiZmxfc2V0VmlkZW9fbTR2OiAiK3NyYyk7CgkJCQlzd2l0Y2hUeXBlKCJtNHYiKTsKCQkJCW15TXAzUGxheWVyLmNsZWFyRmlsZSgpOwoJCQkJbXlSdG1wUGxheWVyLmNsZWFyRmlsZSgpOwoJCQkJbXlNcDRQbGF5ZXIuc2V0RmlsZShzcmMpOwoJCQkJcmV0dXJuIHRydWU7CgkJCX0gZWxzZSB7CgkJCQlsb2coImZsX3NldFZpZGVvX200djogbnVsbCIpOwoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9CgkJfQoJCXByaXZhdGUgZnVuY3Rpb24gZmxfY2xlYXJNZWRpYSgpOnZvaWQgewoJCQlsb2coImNsZWFyTWVkaWEuIik7CgkJCW15TXAzUGxheWVyLmNsZWFyRmlsZSgpOwoJCQlteU1wNFBsYXllci5jbGVhckZpbGUoKTsKCQkJbXlSdG1wUGxheWVyLmNsZWFyRmlsZSgpOwoJCX0KCgkJcHJpdmF0ZSBmdW5jdGlvbiBnZXRUeXBlKCk6T2JqZWN0IHsKCQkJdmFyIHJldHVyblR5cGU6T2JqZWN0OwoJCQlpZihpc01wMykgewoJCQkJcmV0dXJuVHlwZT1teU1wM1BsYXllcjsKCQkJfSAKCQkJaWYoaXNSdG1wKSB7CgkJCQlyZXR1cm5UeXBlPW15UnRtcFBsYXllcjsKCQkJfQoJCQlpZihpc01wNCkgewoJCQkJcmV0dXJuVHlwZT1teU1wNFBsYXllcjsKCQkJfQoJCQlyZXR1cm4gcmV0dXJuVHlwZTsKCQl9CgoJCXByaXZhdGUgZnVuY3Rpb24gZmxfbG9hZCgpOkJvb2xlYW4gewoJCQlsb2coImxvYWQuIik7CgkJCXZhciByZXR1cm5UeXBlOk9iamVjdCA9IGdldFR5cGUoKTsKCQkJcmV0dXJuIHJldHVyblR5cGUubG9hZCgpOwoJCX0KCQlwcml2YXRlIGZ1bmN0aW9uIGZsX3BsYXkodGltZTpOdW1iZXIgPSBOYU4pOkJvb2xlYW4gewoJCQlsb2coInBsYXk6IHRpbWUgPSAiICsgdGltZSk7CgkJCXZhciByZXR1cm5UeXBlOk9iamVjdCA9IGdldFR5cGUoKTsKCQkJcmV0dXJuIHJldHVyblR5cGUucGxheSh0aW1lICogMTAwMCk7IC8vIEZsYXNoIHVzZXMgbWlsbGlzZWNvbmRzCgkJfQoJCXByaXZhdGUgZnVuY3Rpb24gZmxfcGF1c2UodGltZTpOdW1iZXIgPSBOYU4pOkJvb2xlYW4gewoJCQlsb2coInBhdXNlOiB0aW1lID0gIiArIHRpbWUpOwoJCQl2YXIgcmV0dXJuVHlwZTpPYmplY3QgPSBnZXRUeXBlKCk7CgkJCXJldHVybiByZXR1cm5UeXBlLnBhdXNlKHRpbWUgKiAxMDAwKTsgLy8gRmxhc2ggdXNlcyBtaWxsaXNlY29uZHMKCQl9CgkJcHJpdmF0ZSBmdW5jdGlvbiBmbF9wbGF5X2hlYWQocGVyY2VudDpOdW1iZXIpOkJvb2xlYW4gewoJCQlsb2coInBsYXlfaGVhZDogIitwZXJjZW50KyIlIik7CgkJCXZhciByZXR1cm5UeXBlOk9iamVjdCA9IGdldFR5cGUoKTsKCQkJcmV0dXJuIHJldHVyblR5cGUucGxheUhlYWQocGVyY2VudCk7CgkJfQoJCXByaXZhdGUgZnVuY3Rpb24gZmxfdm9sdW1lKHY6TnVtYmVyKTp2b2lkIHsKCQkJbG9nKCJ2b2x1bWU6ICIrdik7CgkJCWNvbW1vblN0YXR1cy52b2x1bWUgPSB2OwoJCQlpZighY29tbW9uU3RhdHVzLm11dGVkKSB7CgkJCQlteU1wM1BsYXllci5zZXRWb2x1bWUodik7CgkJCQlteU1wNFBsYXllci5zZXRWb2x1bWUodik7CgkJCQlteVJ0bXBQbGF5ZXIuc2V0Vm9sdW1lKHYpOwoJCQl9CgkJfQoJCXByaXZhdGUgZnVuY3Rpb24gZmxfbXV0ZShtdXRlOkJvb2xlYW4pOnZvaWQgewoJCQlsb2coIm11dGU6ICIrbXV0ZSk7CgkJCWNvbW1vblN0YXR1cy5tdXRlZCA9IG11dGU7CgkJCWlmKG11dGUpIHsKCQkJCW15TXAzUGxheWVyLnNldFZvbHVtZSgwKTsKCQkJCW15TXA0UGxheWVyLnNldFZvbHVtZSgwKTsKCQkJCW15UnRtcFBsYXllci5zZXRWb2x1bWUoMCk7CgkJCX0gZWxzZSB7CgkJCQlteU1wM1BsYXllci5zZXRWb2x1bWUoY29tbW9uU3RhdHVzLnZvbHVtZSk7CgkJCQlteU1wNFBsYXllci5zZXRWb2x1bWUoY29tbW9uU3RhdHVzLnZvbHVtZSk7CgkJCQlteVJ0bXBQbGF5ZXIuc2V0Vm9sdW1lKGNvbW1vblN0YXR1cy52b2x1bWUpOwoJCQl9CgkJfQoJCXByaXZhdGUgZnVuY3Rpb24galBsYXllckZsYXNoRXZlbnQoZTpKcGxheWVyRXZlbnQpOnZvaWQgewoJCQlsb2coImpQbGF5ZXIgRmxhc2ggRXZlbnQ6ICIgKyBlLnR5cGUgKyAiOiAiICsgZS50YXJnZXQpOwoJCQkvL3RyYWNlcigialBsYXllciBGbGFzaCBFdmVudDogIiArIGUudHlwZSArICI6ICIgKyBlLnRhcmdldCk7CgkJCWlmKEV4dGVybmFsSW50ZXJmYWNlLmF2YWlsYWJsZSAmJiAhc2VjdXJpdHlJc3N1ZSkgewoJCQkJRXh0ZXJuYWxJbnRlcmZhY2UuY2FsbChqUXVlcnksICJqUGxheWVyRmxhc2hFdmVudCIsIGUudHlwZSwgZXh0cmFjdFN0YXR1c0RhdGEoZS5kYXRhKSk7CgkJCX0KCQl9CgkJCgkJcHJpdmF0ZSBmdW5jdGlvbiB0cmFjZXIobXNnOlN0cmluZyk6dm9pZCB7CgkJCXRyYWNlT3V0LnRyYWNlcihtc2cpOwoJCX0KCQkKCQlwcml2YXRlIGZ1bmN0aW9uIGV4dHJhY3RTdGF0dXNEYXRhKGRhdGE6SnBsYXllclN0YXR1cyk6T2JqZWN0IHsKCQkJdmFyIG15U3RhdHVzOk9iamVjdCA9IHsKCQkJCXZlcnNpb246IEpwbGF5ZXJTdGF0dXMuVkVSU0lPTiwKCQkJCXNyYzogZGF0YS5zcmMsCgkJCQlwYXVzZWQ6ICFkYXRhLmlzUGxheWluZywgLy8gQ2hhbmdpbmcgdGhpcyBuYW1lIHJlcXVpcmVzIGludmVydGluZyBhbGwgYXNzaWdubWVudHMgYW5kIGNvbmRpdGlvbmFsIHN0YXRlbWVudHMuCgkJCQlzcmNTZXQ6IGRhdGEuc3JjU2V0LAoJCQkJc2Vla1BlcmNlbnQ6IGRhdGEuc2Vla1BlcmNlbnQsCgkJCQljdXJyZW50UGVyY2VudFJlbGF0aXZlOiBkYXRhLmN1cnJlbnRQZXJjZW50UmVsYXRpdmUsCgkJCQljdXJyZW50UGVyY2VudEFic29sdXRlOiBkYXRhLmN1cnJlbnRQZXJjZW50QWJzb2x1dGUsCgkJCQljdXJyZW50VGltZTogZGF0YS5jdXJyZW50VGltZSAvIDEwMDAsIC8vIEphdmFTY3JpcHQgdXNlcyBzZWNvbmRzCgkJCQlkdXJhdGlvbjogZGF0YS5kdXJhdGlvbiAvIDEwMDAsIC8vIEphdmFTY3JpcHQgdXNlcyBzZWNvbmRzCgkJCQl2aWRlb1dpZHRoOiBkYXRhLnZpZGVvV2lkdGgsCgkJCQl2aWRlb0hlaWdodDogZGF0YS52aWRlb0hlaWdodCwKCQkJCXZvbHVtZTogY29tbW9uU3RhdHVzLnZvbHVtZSwKCQkJCW11dGVkOiBjb21tb25TdGF0dXMubXV0ZWQKCQkJfTsKCQkJbG9nKCJleHRyYWN0U3RhdHVzRGF0YTogc3A9IitteVN0YXR1cy5zZWVrUGVyY2VudCsiIGNwcj0iK215U3RhdHVzLmN1cnJlbnRQZXJjZW50UmVsYXRpdmUrIiBjcGE9IitteVN0YXR1cy5jdXJyZW50UGVyY2VudEFic29sdXRlKyIgY3Q9IitteVN0YXR1cy5jdXJyZW50VGltZSsiIGQ9IitteVN0YXR1cy5kdXJhdGlvbik7CgkJCXJldHVybiBteVN0YXR1czsKCQl9CgkJcHJpdmF0ZSBmdW5jdGlvbiBqUGxheWVyTWV0YURhdGFIYW5kbGVyKGU6SnBsYXllckV2ZW50KTp2b2lkIHsKCQkJbG9nKCJqUGxheWVyTWV0YURhdGFIYW5kbGVyOiIgKyBlLnRhcmdldCk7CgkJCWlmKEV4dGVybmFsSW50ZXJmYWNlLmF2YWlsYWJsZSAmJiAhc2VjdXJpdHlJc3N1ZSkgewoJCQkJcmVzaXplSGFuZGxlcihuZXcgRXZlbnQoRXZlbnQuUkVTSVpFKSk7CgkJCQlFeHRlcm5hbEludGVyZmFjZS5jYWxsKGpRdWVyeSwgImpQbGF5ZXJGbGFzaEV2ZW50IiwgZS50eXBlLCBleHRyYWN0U3RhdHVzRGF0YShlLmRhdGEpKTsKCQkJfQoJCX0KCQlwcml2YXRlIGZ1bmN0aW9uIHJlc2l6ZUhhbmRsZXIoZTpFdmVudCk6dm9pZCB7CgkJCWxvZygicmVzaXplSGFuZGxlcjogc3RhZ2VXaWR0aCA9ICIgKyBzdGFnZS5zdGFnZVdpZHRoICsgIiB8IHN0YWdlSGVpZ2h0ID0gIiArIHN0YWdlLnN0YWdlSGVpZ2h0KTsKCgkJCXZhciBtZWRpYVg6TnVtYmVyID0gMDsKCQkJdmFyIG1lZGlhWTpOdW1iZXIgPSAwOwoJCQl2YXIgbWVkaWFXaWR0aDpOdW1iZXIgPSAwOwoJCQl2YXIgbWVkaWFIZWlnaHQ6TnVtYmVyID0gMDsKCQkJCgkJCXZhciBhc3BlY3RSYXRpb1N0YWdlOk51bWJlciA9IDA7CgkJCXZhciBhc3BlY3RSYXRpb1ZpZGVvOk51bWJlciA9IDA7CgkJCQoJCQl2YXIgdmlkZW9JdGVtOio7CgkJCQoJCQlpZihpc1J0bXApIHsKCQkJCXZpZGVvSXRlbSA9IG15UnRtcFBsYXllcjsKCQkJfQoJCQlpZihpc01wNCkgewoJCQkJdmlkZW9JdGVtID0gbXlNcDRQbGF5ZXI7CgkJCX0KCQkJCgkJCWlmKHZpZGVvSXRlbSkgewoJCQkJaWYoc3RhZ2Uuc3RhZ2VXaWR0aCA+IDAgJiYgc3RhZ2Uuc3RhZ2VIZWlnaHQgPiAwICYmIHZpZGVvSXRlbS5teVZpZGVvLndpZHRoID4gMCAmJiB2aWRlb0l0ZW0ubXlWaWRlby5oZWlnaHQgPiAwKSB7CgkJCQkJYXNwZWN0UmF0aW9TdGFnZSA9IHN0YWdlLnN0YWdlV2lkdGggLyBzdGFnZS5zdGFnZUhlaWdodDsKCQkJCQlhc3BlY3RSYXRpb1ZpZGVvID0gdmlkZW9JdGVtLm15VmlkZW8ud2lkdGggLyB2aWRlb0l0ZW0ubXlWaWRlby5oZWlnaHQ7CgkJCQkJaWYoYXNwZWN0UmF0aW9TdGFnZSA8IGFzcGVjdFJhdGlvVmlkZW8pIHsKCQkJCQkJbWVkaWFXaWR0aCA9IHN0YWdlLnN0YWdlV2lkdGg7CgkJCQkJCW1lZGlhSGVpZ2h0ID0gc3RhZ2Uuc3RhZ2VXaWR0aCAvIGFzcGVjdFJhdGlvVmlkZW87CgkJCQkJCW1lZGlhWCA9IDA7CgkJCQkJCW1lZGlhWSA9IChzdGFnZS5zdGFnZUhlaWdodCAtIG1lZGlhSGVpZ2h0KSAvIDI7CgkJCQkJfSBlbHNlIHsKCQkJCQkJbWVkaWFXaWR0aCA9IHN0YWdlLnN0YWdlSGVpZ2h0ICogYXNwZWN0UmF0aW9WaWRlbzsKCQkJCQkJbWVkaWFIZWlnaHQgPSBzdGFnZS5zdGFnZUhlaWdodDsKCQkJCQkJbWVkaWFYID0gKHN0YWdlLnN0YWdlV2lkdGggLSBtZWRpYVdpZHRoKSAvIDI7CgkJCQkJCW1lZGlhWSA9IDA7CgkJCQkJfQoJCQkJCXJlc2l6ZUVudGl0eSh2aWRlb0l0ZW0sIG1lZGlhWCwgbWVkaWFZLCBtZWRpYVdpZHRoLCBtZWRpYUhlaWdodCk7CgkJCQl9CgkJCX0KCQkJaWYoKGRlYnVnIHx8IHNlY3VyaXR5SXNzdWUpICYmIHN0YWdlLnN0YWdlV2lkdGggPiAyMCAmJiBzdGFnZS5zdGFnZUhlaWdodCA+IDIwKSB7CgkJCQl0eExvZy53aWR0aCA9IHN0YWdlLnN0YWdlV2lkdGggLSAxMDsKCQkJCXR4TG9nLmhlaWdodCA9IHN0YWdlLnN0YWdlSGVpZ2h0IC0gMTA7CgkJCX0KCQkJLy8gUmVzaXplIHRoZSBzcHJpdGUgc28gaXQgY292ZXJzIHRoZSBlbnRpcmUgc3RhZ2UgYXJlYQoJCQljb250ZXh0TWVudUZpeC54ID0gMDsKCQkJY29udGV4dE1lbnVGaXgueSA9IDA7CgkJCWNvbnRleHRNZW51Rml4LndpZHRoID0gc3RhZ2Uuc3RhZ2VXaWR0aDsKCQkJY29udGV4dE1lbnVGaXguaGVpZ2h0ID0gc3RhZ2Uuc3RhZ2VIZWlnaHQ7CgkJfQoJCXByaXZhdGUgZnVuY3Rpb24gcmVzaXplRW50aXR5KGVudGl0eTpTcHJpdGUsIG1lZGlhWDpOdW1iZXIsIG1lZGlhWTpOdW1iZXIsIG1lZGlhV2lkdGg6TnVtYmVyLCBtZWRpYUhlaWdodDpOdW1iZXIpOnZvaWQgewoJCQllbnRpdHkueCA9IG1lZGlhWDsKCQkJZW50aXR5LnkgPSBtZWRpYVk7CgkJCWVudGl0eS53aWR0aCA9IG1lZGlhV2lkdGg7CgkJCWVudGl0eS5oZWlnaHQgPSBtZWRpYUhlaWdodDsKCQl9CgkJcHJpdmF0ZSBmdW5jdGlvbiBjbGlja0hhbmRsZXIoZTpNb3VzZUV2ZW50KTp2b2lkIHsKCQkJLy8gVGhpcyBuZWVkcyB0byB3b3JrIHdpdGggUlRNUCBmb3JtYXQgdG9vIQoJCQlpZihpc01wMykgewoJCQkJalBsYXllckZsYXNoRXZlbnQobmV3IEpwbGF5ZXJFdmVudChKcGxheWVyRXZlbnQuSlBMQVlFUl9DTElDSywgbXlNcDNQbGF5ZXIubXlTdGF0dXMsICJjbGljayIpKQoJCQl9IGVsc2UgewoJCQkJalBsYXllckZsYXNoRXZlbnQobmV3IEpwbGF5ZXJFdmVudChKcGxheWVyRXZlbnQuSlBMQVlFUl9DTElDSywgbXlNcDRQbGF5ZXIubXlTdGF0dXMsICJjbGljayIpKQoJCQl9CgkJfQoJCS8vIFRoaXMgZXZlbnQgaXMgbmV2ZXIgY2FsbGVkLiBTZWUgY29tbWVudHMgaW4gY2xhc3MgY29uc3RydWN0b3IuCgkJcHJpdmF0ZSBmdW5jdGlvbiBtZW51U2VsZWN0SGFuZGxlcl9qUGxheWVyKGU6Q29udGV4dE1lbnVFdmVudCk6dm9pZCB7CgkJCW5hdmlnYXRlVG9VUkwobmV3IFVSTFJlcXVlc3QoImh0dHA6Ly9qcGxheWVyLm9yZy8iKSwgIl9ibGFuayIpOwoJCX0KCQkvLyBUaGlzIGV2ZW50IGlzIG5ldmVyIGNhbGxlZC4gU2VlIGNvbW1lbnRzIGluIGNsYXNzIGNvbnN0cnVjdG9yLgoJCXByaXZhdGUgZnVuY3Rpb24gbWVudVNlbGVjdEhhbmRsZXJfaGFwcHl3b3JtKGU6Q29udGV4dE1lbnVFdmVudCk6dm9pZCB7CgkJCW5hdmlnYXRlVG9VUkwobmV3IFVSTFJlcXVlc3QoImh0dHA6Ly9oYXBweXdvcm0uY29tLyIpLCAiX2JsYW5rIik7CgkJfQoJCXByaXZhdGUgZnVuY3Rpb24gbG9nKHQ6U3RyaW5nKTp2b2lkIHsKCQkJaWYoZGVidWcpIHsKCQkJCXR4TG9nLnRleHQgPSB0ICsgIlxuIiArIHR4TG9nLnRleHQ7CgkJCQlsb2NhbEFJUkRlYnVnID0gdHJhY2VPdXQubG9jYWxBSVJEZWJ1ZygpOwoJCQkJaWYobG9jYWxBSVJEZWJ1ZykgewoJCQkJCXRyYWNlcih0KTsKCQkJCX0KCgkJCQlpZihFeHRlcm5hbEludGVyZmFjZS5hdmFpbGFibGUgJiYgIXNlY3VyaXR5SXNzdWUpIHsKCQkJCQlFeHRlcm5hbEludGVyZmFjZS5jYWxsKCJjb25zb2xlLmxvZyIsIHQpOwoJCQkJfQoJCQl9CgkJfQoJCXByaXZhdGUgZnVuY3Rpb24gZGVidWdNc2dIYW5kbGVyKGU6SnBsYXllckV2ZW50KTp2b2lkIHsKCQkJbG9nKGUubXNnKTsKCQl9CgkJcHJpdmF0ZSBmdW5jdGlvbiBrZXlib2FyZEhhbmRsZXIoZTpLZXlib2FyZEV2ZW50KTp2b2lkIHsKCQkJbG9nKCJrZXlib2FyZEhhbmRsZXI6IGUua2V5Q29kZSA9ICIgKyBlLmtleUNvZGUpOwoJCQlzd2l0Y2goZS5rZXlDb2RlKSB7CgkJCQljYXNlIDY4IDogLy8gZAoJCQkJCXR4TG9nLnZpc2libGUgPSAhdHhMb2cudmlzaWJsZTsKCQkJCQlsb2coIlRvZ2dsZWQgbG9nIGRpc3BsYXk6ICIgKyB0eExvZy52aXNpYmxlKTsKCQkJCQlicmVhazsKCQkJCWNhc2UgNzYgOiAvLyBsCgkJCQkJaWYoZS5jdHJsS2V5ICYmIGUuc2hpZnRLZXkpIHsKCQkJCQkJdHhMb2cudGV4dCA9ICJDbGVhcmVkIGxvZy4iOwoJCQkJCX0KCQkJCQlicmVhazsKCQkJfQoJCX0KCX0KfQo=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/actionscript/Jplayer.fla</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAEAAAPgAAAAEAAAD+////AAAAAAEAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9SAG8AbwB0ACAARQBuAHQAcgB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAFAP//////////AQAAAP418rSm3ANIt7LCWkU8g2sAAAAAAAAAAAAAAABg0oJ8u/nLAT8AAABABQAAAAAAAEMAbwBuAHQAZQBuAHQAcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAIB/////wIAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQgAAANFrAAAAAAAAUAAgADEAIAAxADIAOAAwADQANgA1ADAAMAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAgD///////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7////9/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///0AAAABBAAAA/v///0MAAABEAAAARQAAAEYAAABHAAAASAAAAEkAAABKAAAASwAAAEwAAABNAAAATgAAAE8AAABQAAAAUQAAAFIAAABTAAAAVAAAAFUAAABWAAAAVwAAAFgAAABZAAAAWgAAAFsAAABcAAAAXQAAAF4AAABfAAAAYAAAAGEAAABiAAAAYwAAAGQAAABlAAAAZgAAAGcAAABoAAAAaQAAAGoAAABrAAAAbAAAAG0AAABuAAAAbwAAAHAAAABxAAAAcgAAAHMAAAB0AAAAdQAAAHYAAAB3AAAA/v//////////////////////////////////////////////UgBvAG8AdAAgAEUAbgB0AHIAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYABQD//////////wEAAAD+NfK0ptwDSLeywlpFPINrAAAAAAAAAAAAAAAAsLcxuq35ywEFAAAAAAUAAAAAAABDAG8AbgB0AGUAbgB0AHMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgACAf////8CAAAA/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAADRawAAAAAAAFAAIAAxACAAMQAyADgAMAA0ADYANQAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAIA////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPUEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////7////9/////v///wYAAAAHAAAA/v///wkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAIwAAACQAAAAlAAAAJgAAACcAAAAoAAAAKQAAACoAAAArAAAALAAAAC0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAA0AAAANQAAADYAAAA3AAAAOAAAADkAAAA6AAAAOwAAADwAAAA9AAAA/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAD+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Af//AQAIAENQaWNQYWdlBQD//wEACQBDUGljTGF5ZXIFAP//AQAJAENQaWNGcmFtZQUA//8BAAgAQ1BpY1RleHQFAAAAAAAAgAAAAIAAAA4JAAEAAAAAAAAAAAAAAAEAzRIAAPAAAAAk7v//NwoAAAAAAAC4EQAAAQAYAAAAAAD//v8AAHMBDxgB//7/BUEAcgBpAGEAbAD//v8MQQByAGkAYQBsAC0AQgBvAGwAZABNAFQAAAAAQAAAAP8AAAEAAAEAACgAAAAAAAAAAAD//v8AAAAAAP/+/wACAQAAAAAAAAAA//7/AGoAUABsAGEAeQBlAHIAIABQAGwAdQBnAGkAbgAgAGYAbwByACAAagBRAHUAZQByAHkAIABKAGEAdgBhAFMAYwByAGkAcAB0ACAATABpAGIAcgBhAHIAeQANAGgAdAB0AHAAOgAvAC8AdwB3AHcALgBqAHAAbABhAHkAZQByAC4AbwByAGcADQANAEMAbwBwAHkAcgBpAGcAaAB0ACAAKABjACkAIAAyADAAMAA5ACAALQAgADIAMAAxADEAIABIAGEAcABwAHkAdwBvAHIAbQAgAEwAdABkAA0ARAB1AGEAbAAgAGwAaQBjAGUAbgBzAGUAZAAgAHUAbgBkAGUAcgAgAHQAaABlACAATQBJAFQAIABhAG4AZAAgAEcAUABMACAAbABpAGMA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dQBiAGwAaQBzAGgASAB0AG0AbABQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBTAHQAYQByAHQAUABhAHUAcwBlAGQA//7/ATAA//7/JVAAdQBiAGwAaQBzAGgARgBvAHIAbQBhAHQAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAaAB0AG0AbABGAGkAbABlAE4AYQBtAGUA//7/DEoAcABsAGEAeQBlAHIALgBoAHQAbQBsAP/+/yBQAHUAYgBsAGkAcwBoAFEAVABQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBMAGEAeQBlAHIATwBwAHQAaQBvAG4A//7/AP/+/yBQAHUAYgBsAGkAcwBoAFEAVABQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBBAGwAcABoAGEATwBwAHQAaQBvAG4A//7/AP/+/yJQAHUAYgBsAGkAcwBoAFEAVABQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBNAGEAdABjAGgATQBvAHYAaQBlAEQAaQBtAP/+/wExAP/+/xJWAGUAYwB0AG8AcgA6ADoAVQBzAGUATgBlAHQAdwBvAHIAawD//v8BMAD//v8bVgBlAGMAdABvAHIAOgA6AEQAZQBiAHUAZwBnAGkAbgBnACAAUABlAHIAbQBpAHQAdABlAGQA//7/ATAA//7/GVYAZQBjAHQAbwByADoAOgBBAFMAMwAgAEwAaQBiAHIAYQByAHkAIABQAGEAdABoAHMA//7/IiQAKABBAHAAcABDAG8AbgBmAGkAZwApAC8AQQBjAHQAaQBvAG4AUwBjAHIAaQBwAHQAIAAzAC4AMAAvAGwAaQBiAHMA//7/HlAAdQBiAGwAaQBzAGgAUAByAG8AZgBpAGwAZQBQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBuAGEAbQBlAP/+/wdEAGUAZgBhAHUAbAB0AP/+/xtQAHUAYgBsAGkAcwBoAEgAdABtAGwAUAByAG8AcABlAHIAdABpAGUAcwA6ADoATABvAG8AcAD//v8BMQD//v8dUAB1AGIAbABpAHMAaABGAG8AcgBtAGEAdABQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBqAHAAZQBnAP/+/wEwAP/+/xpQAHUAYgBsAGkAcwBoAFEAVABQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBXAGkAZAB0AGgA//7/AzUANQAwAP/+/yRQAHUAYgBsAGkAcwBoAFAATgBHAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AE8AcAB0AGkAbQBpAHoAZQBDAG8AbABvAHIAcwD//v8BMQD//v8mUAB1AGIAbABpAHMAaABSAE4AVwBLAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AHMAcABlAGUAZABTAGkAbgBnAGwAZQBJAFMARABOAP/+/wEwAP/+/yZQAHUAYgBsAGkAcwBoAFIATgBXAEsAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAcwBpAG4AZwBsAGUAUgBhAHQAZQBBAHUAZABpAG8A//7/ATAA//7/FVYAZQBjAHQAbwByADoAOgBEAG8AYwB1AG0AZQBuAHQAQwBsAGEAcwBzAP/+/wdKAHAAbABhAHkAZQByAP/+/xdWAGUAYwB0AG8AcgA6ADoARQB4AHQAZQByAG4AYQBsACAAUABsAGEAeQBlAHIA//7/DUYAbABhAHMAaABQAGwAYQB5AGUAcgAxADAA//7/JVAAdQBiAGwAaQBzAGgASAB0AG0AbABQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBzAGgAbwB3AFQAYQBnAFcAYQByAG4ATQBzAGcA//7/ATEA//7/J1AAdQBiAGwAaQBzAGgASAB0AG0AbABQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBEAGUAYgBsAG8AYwBrAGkAbgBnAEYAaQBsAHQAZQByAP/+/wEwAP/+/xxQAHUAYgBsAGkAcwBoAEgAdABtAGwAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAVQBuAGkAdABzAP/+/wEwAP/+/zRQAHUAYgBsAGkAcwBoAEgAdABtAGwAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAVQBzAGkAbgBnAEQAZQBmAGEAdQBsAHQAQQBsAHQAZQByAG4AYQB0AGUARgBpAGwAZQBuAGEAbQBlAP/+/wExAP/+/xxQAHUAYgBsAGkAcwBoAEcAaQBmAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AFMAbQBvAG8AdABoAP/+/wExAP/+/yVQAHUAYgBsAGkAcwBoAFIATgBXAEsAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAbQBlAGQAaQBhAEMAbwBwAHkAcgBpAGcAaAB0AP/+/wgoAGMAKQAgADIAMAAwADAA//7/I1AAdQBiAGwAaQBzAGgAUgBOAFcASwBQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBmAGwAYQBzAGgAQgBpAHQAUgBhAHQAZQD//v8EMQAyADAAMAD//v8YVgBlAGMAdABvAHIAOgA6AFMAYwByAGkAcAB0AFMAdAB1AGMAawBEAGUAbABhAHkA//7/AjEANQD//v8WVgBlAGMAdABvAHIAOgA6AEMAbwBtAHAAcgBlAHMAcwAgAE0AbwB2AGkAZQD//v8BMQD//v8VVgBlAGMAdABvAHIAOgA6AFAAYQBjAGsAYQBnAGUAIABQAGEAdABoAHMA//7/AP/+/yZQAHUAYgBsAGkAcwBoAEYAbwByAG0AYQB0AFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AGYAbABhAHMAaABGAGkAbABlAE4AYQBtAGUA//7/C0oAcABsAGEAeQBlAHIALgBzAHcAZgD//v8nUAB1AGIAbABpAHMAaABGAG8AcgBtAGEAdABQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBnAGkAZgBEAGUAZgBhAHUAbAB0AE4AYQBtAGUA//7/ATEA//7/JVAAdQBiAGwAaQBzAGgARgBvAHIAbQBhAHQAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAcAByAG8AagBlAGMAdABvAHIATQBhAGMA//7/ATAA//7/IlAAdQBiAGwAaQBzAGgARwBpAGYAUAByAG8AcABlAHIAdABpAGUAcwA6ADoARABpAHQAaABlAHIATwBwAHQAaQBvAG4A//7/AP/+/yFQAHUAYgBsAGkAcwBoAFIATgBXAEsAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAZQB4AHAAbwByAHQAUwBNAEkATAD//v8BMQD//v8gUAB1AGIAbABpAHMAaABSAE4AVwBLAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AHMAcABlAGUAZAAzADgANABLAP/+/wEwAP/+/yJQAHUAYgBsAGkAcwBoAFIATgBXAEsAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAZQB4AHAAbwByAHQAQQB1AGQAaQBvAP/+/wExAP/+/xZWAGUAYwB0AG8AcgA6ADoAQQBTADMARQB4AHAAbwByAHQARgByAGEAbQBlAP/+/wExAP/+/xdWAGUAYwB0AG8AcgA6ADoASQBuAHYAaQBzAGkAYgBsAGUAIABMAGEAeQBlAHIA//7/ATAA//7/HlAAdQBiAGwAaQBzAGgASAB0AG0AbABQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBRAHUAYQBsAGkAdAB5AP/+/wE0AP/+/yhQAHUAYgBsAGkAcwBoAEgAdABtAGwAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAVgBlAHIAdABpAGMAYQBsAEEAbABpAGcAbgBtAGUAbgB0AP/+/wExAP/+/yRQAHUAYgBsAGkAcwBoAEYAbwByAG0AYQB0AFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AHAAbgBnAEYAaQBsAGUATgBhAG0AZQD//v8LSgBwAGwAYQB5AGUAcgAuAHAAbgBnAP/+/x1QAHUAYgBsAGkAcwBoAEYAbwByAG0AYQB0AFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AGgAdABtAGwA//7/ATAA//7/IlAAdQBiAGwAaQBzAGgAUABOAEcAUAByAG8AcABlAHIAdABpAGUAcwA6ADoARgBpAGwAdABlAHIATwBwAHQAaQBvAG4A//7/AP/+/ydQAHUAYgBsAGkAcwBoAFIATgBXAEsAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAbQBlAGQAaQBhAEQAZQBzAGMAcgBpAHAAdABpAG8AbgD//v8A//7/F1YAZQBjAHQAbwByADoAOgBPAHYAZQByAHIAaQBkAGUAIABTAG8AdQBuAGQAcwD//v8BMAD//v8hUAB1AGIAbABpAHMAaABIAHQAbQBsAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AEQAZQB2AGkAYwBlAEYAbwBuAHQA//7/ATAA//7/LVAAdQBiAGwAaQBzAGgARgBvAHIAbQBhAHQAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAZwBlAG4AZQByAGEAdABvAHIARABlAGYAYQB1AGwAdABOAGEAbQBlAP/+/wExAP/+/xxQAHUAYgBsAGkAcwBoAFEAVABQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBGAGwAYQB0AHQAZQBuAP/+/wExAP/+/x5QAHUAYgBsAGkAcwBoAFAATgBHAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AEIAaQB0AEQAZQBwAHQAaAD//v8RMgA0AC0AYgBpAHQAIAB3AGkAdABoACAAQQBsAHAAaABhAP/+/xxQAHUAYgBsAGkAcwBoAFAATgBHAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AFMAbQBvAG8AdABoAP/+/wExAP/+/yJQAHUAYgBsAGkAcwBoAEcAaQBmAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AEQAaQB0AGgAZQByAFMAbwBsAGkAZABzAP/+/wEwAP/+/x9QAHUAYgBsAGkAcwBoAEcAaQBmAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AEkAbgB0AGUAcgBsAGEAYwBlAP/+/wEwAP/+/xpQAHUAYgBsAGkAcwBoAEoAcABlAGcAUAByAG8AcABlAHIAdABpAGUAcwA6ADoARABQAEkA//7/BzQANwAxADgANQA5ADIA//7/D1YAZQBjAHQAbwByADoAOgBRAHUAYQBsAGkAdAB5AP/+/wI4ADAA//7/D1YAZQBjAHQAbwByADoAOgBQAHIAbwB0AGUAYwB0AP/+/wEwAP/+/yJQAHUAYgBsAGkAcwBoAEgAdABtAGwAUAByAG8AcABlAHIAdABpAGUAcwA6ADoARABpAHMAcABsAGEAeQBNAGUAbgB1AP/+/wExAP/+/ypQAHUAYgBsAGkAcwBoAEgAdABtAGwAUAByAG8AcABlAHIAdABpAGUAcwA6ADoASABvAHIAaQB6AG8AbgB0AGEAbABBAGwAaQBnAG4AbQBlAG4AdAD//v8BMQD//v8yUAB1AGIAbABpAHMAaABIAHQAbQBsAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AFYAZQByAHMAaQBvAG4ARABlAHQAZQBjAHQAaQBvAG4ASQBmAEEAdgBhAGkAbABhAGIAbABlAP/+/wEwAP/+/xBWAGUAYwB0AG8AcgA6ADoAVABlAG0AcABsAGEAdABlAP/+/wEwAP/+/ypQAHUAYgBsAGkAcwBoAEYAbwByAG0AYQB0AFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AGcAZQBuAGUAcgBhAHQAbwByAEYAaQBsAGUATgBhAG0AZQD//v8LSgBwAGwAYQB5AGUAcgAuAHMAdwB0AP/+/yhQAHUAYgBsAGkAcwBoAEYAbwByAG0AYQB0AFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AHIAbgB3AGsARABlAGYAYQB1AGwAdABOAGEAbQBlAP/+/wExAP/+/yhQAHUAYgBsAGkAcwBoAEYAbwByAG0AYQB0AFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AGoAcABlAGcARABlAGYAYQB1AGwAdABOAGEAbQBlAP/+/wExAP/+/xxQAHUAYgBsAGkAcwBoAEYAbwByAG0AYQB0AFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AGcAaQBmAP/+/wEwAP/+/xpQAHUAYgBsAGkAcwBoAEcAaQBmAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AEwAbwBvAHAA//7/ATEA//7/G1AAdQBiAGwAaQBzAGgARwBpAGYAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAVwBpAGQAdABoAP/+/wM1ADUAMAD//v8kUAB1AGIAbABpAHMAaABSAE4AVwBLAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AG0AZQBkAGkAYQBLAGUAeQB3AG8AcgBkAHMA//7/AP/+/yFQAHUAYgBsAGkAcwBoAFIATgBXAEsAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAbQBlAGQAaQBhAFQAaQB0AGwAZQD//v8A//7/H1AAdQBiAGwAaQBzAGgAUgBOAFcASwBQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBzAHAAZQBlAGQAMgA4AEsA//7/ATEA//7/I1AAdQBiAGwAaQBzAGgARgBvAHIAbQBhAHQAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAcQB0AEYAaQBsAGUATgBhAG0AZQD//v8LSgBwAGwAYQB5AGUAcgAuAG0AbwB2AP/+/yJQAHUAYgBsAGkAcwBoAFAATgBHAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AEQAaQB0AGgAZQByAE8AcAB0AGkAbwBuAP/+/wD//v8jUAB1AGIAbABpAHMAaABHAGkAZgBQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBQAGEAbABlAHQAdABlAE8AcAB0AGkAbwBuAP/+/wD//v8jUAB1AGIAbABpAHMAaABHAGkAZgBQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBNAGEAdABjAGgATQBvAHYAaQBlAEQAaQBtAP/+/wExAP/+/yRQAHUAYgBsAGkAcwBoAFIATgBXAEsAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAcwBwAGUAZQBkAEQAdQBhAGwASQBTAEQATgD//v8BMAD//v8kUAB1AGIAbABpAHMAaABSAE4AVwBLAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AHIAZQBhAGwAVgBpAGQAZQBvAFIAYQB0AGUA//7/BjEAMAAwADAAMAAwAP/+/x5QAHUAYgBsAGkAcwBoAEoAcABlAGcAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAUQB1AGEAbABpAHQAeQD//v8COAAwAP/+/xJWAGUAYwB0AG8AcgA6ADoASQBuAGMAbAB1AGQAZQBYAE0AUAD//v8BMAD//v8eUAB1AGIAbABpAHMAaABGAG8AcgBtAGEAdABQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBmAGwAYQBzAGgA//7/ATEA//7/I1AAdQBiAGwAaQBzAGgAUABOAEcAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAUABhAGwAZQB0AHQAZQBPAHAAdABpAG8AbgD//v8A//7/I1AAdQBiAGwAaQBzAGgAUABOAEcAUAByAG8AcABlAHIAdABpAGUAcwA6ADoATQBhAHQAYwBoAE0AbwB2AGkAZQBEAGkAbQD//v8BMQD//v8kUAB1AGIAbABpAHMAaABKAHAAZQBnAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AE0AYQB0AGMAaABNAG8AdgBpAGUARABpAG0A//7/ATEA//7/HFYAZQBjAHQAbwByADoAOgBQAGEAYwBrAGEAZwBlACAARQB4AHAAbwByAHQAIABGAHIAYQBtAGUA//7/ATEA//7/IVAAdQBiAGwAaQBzAGgAUAByAG8AZgBpAGwAZQBQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgB2AGUAcgBzAGkAbwBuAP/+/wExAP/+/xxQAHUAYgBsAGkAcwBoAEgAdABtAGwAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAQQBsAGkAZwBuAP/+/wEwAP/+/y1QAHUAYgBsAGkAcwBoAEYAbwByAG0AYQB0AFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AHAAcgBvAGoAZQBjAHQAbwByAFcAaQBuAEYAaQBsAGUATgBhAG0AZQD//v8LSgBwAGwAYQB5AGUAcgAuAGUAeABlAP/+/ydQAHUAYgBsAGkAcwBoAEYAbwByAG0AYQB0AFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AHAAbgBnAEQAZQBmAGEAdQBsAHQATgBhAG0AZQD//v8BMQD//v8wUAB1AGIAbABpAHMAaABGAG8AcgBtAGEAdABQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBwAHIAbwBqAGUAYwB0AG8AcgBNAGEAYwBEAGUAZgBhAHUAbAB0AE4AYQBtAGUA//7/ATEA//7/I1AAdQBiAGwAaQBzAGgAUQBUAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AFAAbABhAHkARQB2AGUAcgB5AEYAcgBhAG0AZQD//v8BMAD//v8iUAB1AGIAbABpAHMAaABQAE4ARwBQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBEAGkAdABoAGUAcgBTAG8AbABpAGQAcwD//v8BMAD//v8iUAB1AGIAbABpAHMAaABKAHAAZQBnAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AFAAcgBvAGcAcgBlAHMAcwBpAHYAZQD//v8BMAD//v8SVgBlAGMAdABvAHIAOgA6AEUAeABwAG8AcgB0ACAAUwB3AGMA//7/ATAA//7/GlYAZQBjAHQAbwByADoAOgBEAGUAYgB1AGcAZwBpAG4AZwAgAFAAYQBzAHMAdwBvAHIAZAD//v8A//7/GlYAZQBjAHQAbwByADoAOgBPAG0AaQB0ACAAVAByAGEAYwBlACAAQQBjAHQAaQBvAG4AcwD//v8BMAD//v8dUAB1AGIAbABpAHMAaABIAHQAbQBsAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AEgAZQBpAGcAaAB0AP/+/wM0ADAAMAD//v8cUAB1AGIAbABpAHMAaABIAHQAbQBsAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AFcAaQBkAHQAaAD//v8DNQA1ADAA//7/JVAAdQBiAGwAaQBzAGgARgBvAHIAbQBhAHQAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAagBwAGUAZwBGAGkAbABlAE4AYQBtAGUA//7/C0oAcABsAGEAeQBlAHIALgBqAHAAZwD//v8pUAB1AGIAbABpAHMAaABGAG8AcgBtAGEAdABQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBmAGwAYQBzAGgARABlAGYAYQB1AGwAdABOAGEAbQBlAP/+/wExAP/+/x9QAHUAYgBsAGkAcwBoAFAATgBHAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AEkAbgB0AGUAcgBsAGEAYwBlAP/+/wEwAP/+/xxQAHUAYgBsAGkAcwBoAEcAaQBmAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AEgAZQBpAGcAaAB0AP/+/wM0ADAAMAD//v8bUAB1AGIAbABpAHMAaABKAHAAZQBnAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AFMAaQB6AGUA//7/ATAA//7/F1YAZQBjAHQAbwByADoAOgBVAHMAZQBBAFMAMwBOAGEAbQBlAHMAcABhAGMAZQD//v8BMQD//v8WVgBlAGMAdABvAHIAOgA6AEEAUwAzAEEAdQB0AG8ARABlAGMAbABhAHIAZQD//v8BMQD//v8QVgBlAGMAdABvAHIAOgA6AEEAUwAzAEMAbwBhAGMAaAD//v8BMQD//v8TVgBlAGMAdABvAHIAOgA6AEQAZQB2AGkAYwBlAFMAbwB1AG4AZAD//v8BMAD//v8nUAB1AGIAbABpAHMAaABIAHQAbQBsAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AFQAZQBtAHAAbABhAHQAZQBGAGkAbABlAE4AYQBtAGUA//7/cUYAOgBcAEQAbwBjAHUAbQBlAG4AdABzACAAYQBuAGQAIABTAGUAdAB0AGkAbgBnAHMAXABNAGEAcgBrAFwATABvAGMAYQBsACAAUwBlAHQAdABpAG4AZwBzAFwAQQBwAHAAbABpAGMAYQB0AGkAbwBuACAARABhAHQAYQBcAEEAZABvAGIAZQBcAEYAbABhAHMAaAAgAEMAUwA0AFwAZQBuAFwAQwBvAG4AZgBpAGcAdQByAGEAdABpAG8AbgBcAEgAVABNAEwAXABEAGUAZgBhAHUAbAB0AC4AaAB0AG0AbAD//v8hUAB1AGIAbABpAHMAaABIAHQAbQBsAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AFcAaQBuAGQAbwB3AE0AbwBkAGUA//7/ATAA//7/MlAAdQBiAGwAaQBzAGgASAB0AG0AbABQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBVAHMAaQBuAGcARABlAGYAYQB1AGwAdABDAG8AbgB0AGUAbgB0AEYAaQBsAGUAbgBhAG0AZQD//v8BMQD//v8tUAB1AGIAbABpAHMAaABGAG8AcgBtAGEAdABQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBwAHIAbwBqAGUAYwB0AG8AcgBNAGEAYwBGAGkAbABlAE4AYQBtAGUA//7/C0oAcABsAGEAeQBlAHIALgBhAHAAcAD//v8oUAB1AGIAbABpAHMAaABGAG8AcgBtAGEAdABQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBoAHQAbQBsAEQAZQBmAGEAdQBsAHQATgBhAG0AZQD//v8BMQD//v8dUAB1AGIAbABpAHMAaABGAG8AcgBtAGEAdABQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgByAG4AdwBrAP/+/wEwAP/+/xxQAHUAYgBsAGkAcwBoAEYAbwByAG0AYQB0AFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AHAAbgBnAP/+/wEwAP/+/xtQAHUAYgBsAGkAcwBoAFEAVABQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBIAGUAaQBnAGgAdAD//v8DNAAwADAA//7/JVAAdQBiAGwAaQBzAGgAUABOAEcAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAUgBlAG0AbwB2AGUARwByAGEAZABpAGUAbgB0AHMA//7/ATAA//7/H1AAdQBiAGwAaQBzAGgARwBpAGYAUAByAG8AcABlAHIAdABpAGUAcwA6ADoATQBhAHgAQwBvAGwAbwByAHMA//7/AzIANQA1AP/+/ydQAHUAYgBsAGkAcwBoAEcAaQBmAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AFQAcgBhAG4AcwBwAGEAcgBlAG4AdABPAHAAdABpAG8AbgD//v8A//7/H1AAdQBiAGwAaQBzAGgARwBpAGYAUAByAG8AcABlAHIAdABpAGUAcwA6ADoATABvAG8AcABDAG8AdQBuAHQA//7/AP/+/x9QAHUAYgBsAGkAcwBoAFIATgBXAEsAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAcwBwAGUAZQBkADUANgBLAP/+/wExAP/+/w5WAGUAYwB0AG8AcgA6ADoAUgBlAHAAbwByAHQA//7/ATAA//7/K1AAdQBiAGwAaQBzAGgASAB0AG0AbABQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBPAHcAbgBBAGwAdABlAHIAbgBhAHQAZQBGAGkAbABlAG4AYQBtAGUA//7/AP/+/yhQAHUAYgBsAGkAcwBoAEgAdABtAGwAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAQQBsAHQAZQByAG4AYQB0AGUARgBpAGwAZQBuAGEAbQBlAP/+/wD//v8mUAB1AGIAbABpAHMAaABIAHQAbQBsAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AEMAbwBuAHQAZQBuAHQARgBpAGwAZQBuAGEAbQBlAP/+/wD//v8iUAB1AGIAbABpAHMAaABGAG8AcgBtAGEAdABQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBnAGUAbgBlAHIAYQB0AG8AcgD//v8BMAD//v8kUAB1AGIAbABpAHMAaABHAGkAZgBQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBPAHAAdABpAG0AaQB6AGUAQwBvAGwAbwByAHMA//7/ATEA//7/IlAAdQBiAGwAaQBzAGgAUgBOAFcASwBQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBhAHUAZABpAG8ARgBvAHIAbQBhAHQA//7/ATAA//7/HFYAZQBjAHQAbwByADoAOgBIAGEAcgBkAHcAYQByAGUAQQBjAGMAZQBsAGUAcgBhAHQAaQBvAG4A//7/ATAA//7/EVYAZQBjAHQAbwByADoAOgBBAFMAMwBTAHQAcgBpAGMAdAD//v8BMQD//v8iVgBlAGMAdABvAHIAOgA6AEEAUwAzACAARQB4AHQAZQByAG4AYQBsACAATABpAGIAcgBhAHIAeQAgAFAAYQB0AGgAcwD//v8BLgD//v8PVgBlAGMAdABvAHIAOgA6AFYAZQByAHMAaQBvAG4A//7/AjEAMAD//v8UVgBlAGMAdABvAHIAOgA6AEUAdgBlAG4AdAAgAEYAbwByAG0AYQB0AP/+/wEwAP/+/xdWAGUAYwB0AG8AcgA6ADoAUwB0AHIAZQBhAG0AIABDAG8AbQBwAHIAZQBzAHMA//7/ATcA//7/G1AAdQBiAGwAaQBzAGgARgBvAHIAbQBhAHQAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAcQB0AP/+/wEwAP/+/xxQAHUAYgBsAGkAcwBoAFAATgBHAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AEgAZQBpAGcAaAB0AP/+/wM0ADAAMAD//v8bUAB1AGIAbABpAHMAaABQAE4ARwBQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBXAGkAZAB0AGgA//7/AzUANQAwAP/+/yVQAHUAYgBsAGkAcwBoAEcAaQBmAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AFIAZQBtAG8AdgBlAEcAcgBhAGQAaQBlAG4AdABzAP/+/wEwAP/+/yBQAHUAYgBsAGkAcwBoAFIATgBXAEsAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAcwBwAGUAZQBkADUAMQAyAEsA//7/ATAA//7/HVAAdQBiAGwAaQBzAGgASgBwAGUAZwBQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBIAGUAaQBnAGgAdAD//v8DNAAwADAA//7/HFYAZQBjAHQAbwByADoAOgBFAHYAZQBuAHQAVQBzAGUAOABrAFMAYQBtAHAAbABlAFIAYQB0AGUA//7/ATAA//7/HVYAZQBjAHQAbwByADoAOgBTAHQAcgBlAGEAbQBVAHMAZQA4AGsAUwBhAG0AcABsAGUAUgBhAHQAZQD//v8BMAD//v8bVgBlAGMAdABvAHIAOgA6AEEAYwB0AGkAbwBuAFMAYwByAGkAcAB0AFYAZQByAHMAaQBvAG4A//7/ATMA//7/FlYAZQBjAHQAbwByADoAOgBFAHYAZQBuAHQAIABDAG8AbQBwAHIAZQBzAHMA//7/ATcA//7/HFAAdQBiAGwAaQBzAGgASAB0AG0AbABQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBTAGMAYQBsAGUA//7/ATAA//7/MFAAdQBiAGwAaQBzAGgARgBvAHIAbQBhAHQAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAcAByAG8AagBlAGMAdABvAHIAVwBpAG4ARABlAGYAYQB1AGwAdABOAGEAbQBlAP/+/wExAP/+/xxQAHUAYgBsAGkAcwBoAFEAVABQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBMAG8AbwBwAGkAbgBnAP/+/wEwAP/+/ypQAHUAYgBsAGkAcwBoAFEAVABQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBVAHMAZQBRAFQAUwBvAHUAbgBkAEMAbwBtAHAAcgBlAHMAcwBpAG8AbgD//v8BMAD//v8hUAB1AGIAbABpAHMAaABQAE4ARwBQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBQAGEAbABlAHQAdABlAE4AYQBtAGUA//7/AP/+/yFQAHUAYgBsAGkAcwBoAFAATgBHAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AFQAcgBhAG4AcwBwAGEAcgBlAG4AdAD//v8BMAD//v8mUAB1AGIAbABpAHMAaABHAGkAZgBQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBUAHIAYQBuAHMAcABhAHIAZQBuAHQAQQBsAHAAaABhAP/+/wMxADIAOAD//v8eUAB1AGIAbABpAHMAaABHAGkAZgBQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBBAG4AaQBtAGEAdABlAGQA//7/ATAA//7/IlAAdQBiAGwAaQBzAGgAUgBOAFcASwBQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBtAGUAZABpAGEAQQB1AHQAaABvAHIA//7/AP/+/yhQAHUAYgBsAGkAcwBoAFIATgBXAEsAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAcwBwAGUAZQBkAEMAbwByAHAAbwByAGEAdABlAEwAQQBOAP/+/wEwAP/+/yZQAHUAYgBsAGkAcwBoAFIATgBXAEsAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAcwBoAG8AdwBCAGkAdAByAGEAdABlAEQAbABvAGcA//7/ATEA//7/IlAAdQBiAGwAaQBzAGgAUgBOAFcASwBQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBlAHgAcABvAHIAdABGAGwAYQBzAGgA//7/ATEA//7/HFAAdQBiAGwAaQBzAGgASgBwAGUAZwBQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBXAGkAZAB0AGgA//7/AzUANQAwAP/+/xVWAGUAYwB0AG8AcgA6ADoAUwB0AHIAZQBhAG0AIABGAG8AcgBtAGEAdAD//v8BMAD//v8YVgBlAGMAdABvAHIAOgA6AEQAZQBiAGwAbwBjAGsAaQBuAGcARgBpAGwAdABlAHIA//7/ATAA//7/IlAAdQBiAGwAaQBzAGgASAB0AG0AbABQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBWAGUAcgBzAGkAbwBuAEkAbgBmAG8A//7/AP/+/yRQAHUAYgBsAGkAcwBoAEYAbwByAG0AYQB0AFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AGcAaQBmAEYAaQBsAGUATgBhAG0AZQD//v8LSgBwAGwAYQB5AGUAcgAuAGcAaQBmAP/+/yZQAHUAYgBsAGkAcwBoAEYAbwByAG0AYQB0AFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AHEAdABEAGUAZgBhAHUAbAB0AE4AYQBtAGUA//7/ATEA//7/IlAAdQBiAGwAaQBzAGgAUQBUAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AFAAYQB1AHMAZQBkAEEAdABTAHQAYQByAHQA//7/ATAA//7/JVAAdQBiAGwAaQBzAGgAUQBUAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AEMAbwBuAHQAcgBvAGwAbABlAHIATwBwAHQAaQBvAG4A//7/ATAA//7/H1AAdQBiAGwAaQBzAGgAUABOAEcAUAByAG8AcABlAHIAdABpAGUAcwA6ADoATQBhAHgAQwBvAGwAbwByAHMA//7/AzIANQA1AP/+/xhWAGUAYwB0AG8AcgA6ADoAQQBTADMAIABDAG8AbgBmAGkAZwAgAEMAbwBuAHMAdAD//v8fQwBPAE4ARgBJAEcAOgA6AEYATABBAFMASABfAEEAVQBUAEgATwBSAEkATgBHAD0AIgB0AHIAdQBlACIAOwD//v8sUAB1AGIAbABpAHMAaABIAHQAbQBsAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AFUAcwBpAG4AZwBPAHcAbgBBAGwAdABlAHIAbgBhAHQAZQBGAGkAbABlAP/+/wEwAP/+/yVQAHUAYgBsAGkAcwBoAEYAbwByAG0AYQB0AFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AHIAbgB3AGsARgBpAGwAZQBOAGEAbQBlAP/+/wxKAHAAbABhAHkAZQByAC4AcwBtAGkAbAD//v8lUAB1AGIAbABpAHMAaABGAG8AcgBtAGEAdABQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBwAHIAbwBqAGUAYwB0AG8AcgBXAGkAbgD//v8BMAD//v8lUAB1AGIAbABpAHMAaABGAG8AcgBtAGEAdABQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBkAGUAZgBhAHUAbAB0AE4AYQBtAGUAcwD//v8BMQD///////7/AP/+/wABAAAAAAD8AP//AAAJAENDb2xvckRlZgQAAAD/AAAAAAAAAAADgAQAAAD/AAAAAAAAAAADgAQAAAD/AAAAAAAAAAADgAQAAAD/AAAAAAAAAAADgAQAMwD/AABQAO8AGAADgAQAZgD/AABQAO8AMAADgAQAmQD/AABQAO8ASAADgAQAzAD/AABQAO8AYAADgAQA/wD/AABQAO8AeAADgAQzAAD/AAAAAO8AGAADgAQzMwD/AAAoAO8AGAADgAQzZgD/AAA8AO8AMAADgAQzmQD/AABDAO8ASAADgAQzzAD/AABGAO8AYAADgAQz/wD/AABIAO8AeAADgARmAAD/AAAAAO8AMAADgARmMwD/AAAUAO8AMAADgARmZgD/AAAoAO8AMAADgARmmQD/AAA1AO8ASAADgARmzAD/AAA8AO8AYAADgARm/wD/AABAAO8AeAADgAQAAAD/AAAAAAAAAAADgAQzMzP/AAAAAAAAMAADgAQAAAD/AAAAAAAAAAADgAQAADP/AACgAO8AGAADgAQAMzP/AAB4AO8AGAADgAQAZjP/AABkAO8AMAADgAQAmTP/AABdAO8ASAADgAQAzDP/AABaAO8AYAADgAQA/zP/AABYAO8AeAADgAQzADP/AADIAO8AGAADgAQzMzP/AAAAAAAAMAADgAQzZjP/AABQAFAASAADgAQzmTP/AABQAHgAYAADgAQzzDP/AABQAJAAeAADgAQz/zP/AABQAO8AkAADgARmADP/AADcAO8AMAADgARmMzP/AAAAAFAASAADgARmZjP/AAAoAFAASAADgARmmTP/AAA8AHgAYAADgARmzDP/AABDAJAAeAADgARm/zP/AABGAO8AkAADgAQAAAD/AAAAAAAAAAADgARmZmb/AAAAAAAAYAADgAQAAAD/AAAAAAAAAAADgAQAAGb/AACgAO8AMAADgAQAM2b/AACMAO8AMAADgAQAZmb/AAB4AO8AMAADgAQAmWb/AABrAO8ASAADgAQAzGb/AABkAO8AYAADgAQA/2b/AABgAO8AeAADgAQzAGb/AAC0AO8AMAADgAQzM2b/AACgAFAASAADgAQzZmb/AAB4AFAASAADgAQzmWb/AABkAHgAYAADgAQzzGb/AABdAJAAeAADgAQz/2b/AABaAO8AkAADgARmAGb/AADIAO8AMAADgARmM2b/AADIAFAASAADgARmZmb/AAAAAAAAYAADgARmmWb/AABQADAAeAADgARmzGb/AABQAHgAkAADgARm/2b/AABQAO8AqAADgAQAAAD/AAAAAAAAAAADgASZmZn/AAAAAAAAkAADgAQAAAD/AAAAAAAAAAADgAQAAJn/AACgAO8ASAADgAQAM5n/AACTAO8ASAADgAQAZpn/AACFAO8ASAADgAQAmZn/AAB4AO8ASAADgAQAzJn/AABuAO8AYAADgAQA/5n/AABoAO8AeAADgAQzAJn/AACtAO8ASAADgAQzM5n/AACgAHgAYAADgAQzZpn/AACMAHgAYAADgAQzmZn/AAB4AHgAYAADgAQzzJn/AABrAJAAeAADgAQz/5n/AABkAO8AkAADgARmAJn/AAC7AO8ASAADgARmM5n/AAC0AHgAYAADgARmZpn/AACgADAAeAADgARmmZn/AAB4ADAAeAADgARmzJn/AABkAHgAkAADgARm/5n/AABdAO8AqAADgAQAAAD/AAAAAAAAAAADgATMzMz/AAAAAAAAwAADgAQAAAD/AAAAAAAAAAADgAQAAMz/AACgAO8AYAADgAQAM8z/AACWAO8AYAADgAQAZsz/AACMAO8AYAADgAQAmcz/AACCAO8AYAADgAQAzMz/AAB4AO8AYAADgAQA/8z/AABwAO8AeAADgAQzAMz/AACqAO8AYAADgAQzM8z/AACgAJAAeAADgAQzZsz/AACTAJAAeAADgAQzmcz/AACFAJAAeAADgAQzzMz/AAB4AJAAeAADgAQz/8z/AABuAO8AkAADgARmAMz/AAC0AO8AYAADgARmM8z/AACtAJAAeAADgARmZsz/AACgAHgAkAADgARmmcz/AACMAHgAkAADgARmzMz/AAB4AHgAkAADgARm/8z/AABrAO8AqAADgAQAAAD/AAAAAAAAAAADgAT/////AAAAAAAA8AADgAQAAAD/AAAAAAAAAAADgAQAAP//AACgAO8AeAADgAQAM///AACYAO8AeAADgAQAZv//AACQAO8AeAADgAQAmf//AACIAO8AeAADgAQAzP//AACAAO8AeAADgAQA////AAB4AO8AeAADgAQzAP//AACoAO8AeAADgAQzM///AACgAO8AkAADgAQzZv//AACWAO8AkAADgAQzmf//AACMAO8AkAADgAQzzP//AACCAO8AkAADgAQz////AAB4AO8AkAADgARmAP//AACwAO8AeAADgARmM///AACqAO8AkAADgARmZv//AACgAO8AqAADgARmmf//AACTAO8AqAADgARmzP//AACFAO8AqAADgARm////AAB4AO8AqAADgAQAAAD/AAAAAAAAAAADgAT/AAD/AAAAAO8AeAADgAQAAAD/AAAAAAAAAAADgASZAAD/AAAAAO8ASAADgASZMwD/AAANAO8ASAADgASZZgD/AAAbAO8ASAADgASZmQD/AAAoAO8ASAADgASZzAD/AAAyAO8AYAADgASZ/wD/AAA4AO8AeAADgATMAAD/AAAAAO8AYAADgATMMwD/AAAKAO8AYAADgATMZgD/AAAUAO8AYAADgATMmQD/AAAeAO8AYAADgATMzAD/AAAoAO8AYAADgATM/wD/AAAwAO8AeAADgAT/AAD/AAAAAO8AeAADgAT/MwD/AAAIAO8AeAADgAT/ZgD/AAAQAO8AeAADgAT/mQD/AAAYAO8AeAADgAT/zAD/AAAgAO8AeAADgAT//wD/AAAoAO8AeAADgAQAAAD/AAAAAAAAAAADgAQA/wD/AABQAO8AeAADgAQAAAD/AAAAAAAAAAADgASZADP/AADjAO8ASAADgASZMzP/AAAAAHgAYAADgASZZjP/AAAUAHgAYAADgASZmTP/AAAoAHgAYAADgASZzDP/AAA1AJAAeAADgASZ/zP/AAA8AO8AkAADgATMADP/AADmAO8AYAADgATMMzP/AAAAAJAAeAADgATMZjP/AAANAJAAeAADgATMmTP/AAAbAJAAeAADgATMzDP/AAAoAJAAeAADgATM/zP/AAAyAO8AkAADgAT/ADP/AADoAO8AeAADgAT/MzP/AAAAAO8AkAADgAT/ZjP/AAAKAO8AkAADgAT/mTP/AAAUAO8AkAADgAT/zDP/AAAeAO8AkAADgAT//zP/AAAoAO8AkAADgAQAAAD/AAAAAAAAAAADgAQAAP//AACgAO8AeAADgAQAAAD/AAAAAAAAAAADgASZAGb/AADVAO8ASAADgASZM2b/AADcAHgAYAADgASZZmb/AAAAADAAeAADgASZmWb/AAAoADAAeAADgASZzGb/AAA8AHgAkAADgASZ/2b/AABDAO8AqAADgATMAGb/AADcAO8AYAADgATMM2b/AADjAJAAeAADgATMZmb/AAAAAHgAkAADgATMmWb/AAAUAHgAkAADgATMzGb/AAAoAHgAkAADgATM/2b/AAA1AO8AqAADgAT/AGb/AADgAO8AeAADgAT/M2b/AADmAO8AkAADgAT/Zmb/AAAAAO8AqAADgAT/mWb/AAANAO8AqAADgAT/zGb/AAAbAO8AqAADgAT//2b/AAAoAO8AqAADgAQAAAD/AAAAAAAAAAADgAT//wD/AAAoAO8AeAADgAQAAAD/AAAAAAAAAAADgASZAJn/AADIAO8ASAADgASZM5n/AADIAHgAYAADgASZZpn/AADIADAAeAADgASZmZn/AAAAAAAAkAADgASZzJn/AABQAFAAqAADgASZ/5n/AABQAO8AwAADgATMAJn/AADSAO8AYAADgATMM5n/AADVAJAAeAADgATMZpn/AADcAHgAkAADgATMmZn/AAAAAFAAqAADgATMzJn/AAAoAFAAqAADgATM/5n/AAA8AO8AwAADgAT/AJn/AADYAO8AeAADgAT/M5n/AADcAO8AkAADgAT/Zpn/AADjAO8AqAADgAT/mZn/AAAAAO8AwAADgAT/zJn/AAAUAO8AwAADgAT//5n/AAAoAO8AwAADgAQAAAD/AAAAAAAAAAADgAQA////AAB4AO8AeAADgAQAAAD/AAAAAAAAAAADgASZAMz/AAC+AO8AYAADgASZM8z/AAC7AJAAeAADgASZZsz/AAC0AHgAkAADgASZmcz/AACgAFAAqAADgASZzMz/AAB4AFAAqAADgASZ/8z/AABkAO8AwAADgATMAMz/AADIAO8AYAADgATMM8z/AADIAJAAeAADgATMZsz/AADIAHgAkAADgATMmcz/AADIAFAAqAADgATMzMz/AAAAAAAAwAADgATM/8z/AABQAO8A2AADgAT/AMz/AADQAO8AeAADgAT/M8z/AADSAO8AkAADgAT/Zsz/AADVAO8AqAADgAT/mcz/AADcAO8AwAADgAT/zMz/AAAAAO8A2AADgAT//8z/AAAoAO8A2AADgAQAAAD/AAAAAAAAAAADgAT/AP//AADIAO8AeAADgAQAAAD/AAAAAAAAAAADgASZAP//AAC4AO8AeAADgASZM///AAC0AO8AkAADgASZZv//AACtAO8AqAADgASZmf//AACgAO8AwAADgASZzP//AACMAO8AwAADgASZ////AAB4AO8AwAADgATMAP//AADAAO8AeAADgATMM///AAC+AO8AkAADgATMZv//AAC7AO8AqAADgATMmf//AAC0AO8AwAADgATMzP//AACgAO8A2AADgATM////AAB4AO8A2AADgAT/AP//AADIAO8AeAADgAT/M///AADIAO8AkAADgAT/Zv//AADIAO8AqAADgAT/mf//AADIAO8AwAADgAT/zP//AADIAO8A2AADgAT/////AAAAAAAA8AABAAcAA4AEAAAA/xAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAgAAAAAAAAAAAP//////AAAA/wAAAAAAAAOABAAAAP8SAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAIAAAAAAAAAAAD//////wAAAP8AAAAAAAADgAQAAAD/EgAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAAACAAAAAAAAAAAA/wAA//8AAAD/AAAAAAAAA4AEAAAA/xIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAgAAAAAAAAAAAAD/AP//AAAA/wAAAAAAAAOABAAAAP8SAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAIAAAAAAAAAAAAAAP///wAAAP8AAAAAAAADgAQAAAD/EAAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAAAGAAAAAAAAAAAAAGb9/2D/////ev////+AmWYA/6r/zAD///////8AAAAAAAADgAQAAAD/EAAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAAAHAAAAAAAAAAAA/wAA/yr//wD/XQD/AP9/AP///6oAAP//1P8A/////wAA/wAAAAAAAAEAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAQD//v8iUAB1AGIAbABpAHMAaABRAFQAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAUQBUAFMAbgBkAFMAZQB0AHQAaQBuAGcAcwD//wEAEABDUVRBdWRpb1NldHRpbmdzAAAAAAEAWP///wEAAQAAAAAAAAAA//7/AAEBAQAAAAEAAAAAAMgA//7/AP/+/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAAAEAAAAAQAAAP///////v8AAQAAAP/+/wAAAAAAAAAAAP/+//93EjwAPwB4AHAAYQBjAGsAZQB0ACAAYgBlAGcAaQBuAD0AIgD//iIAIABpAGQAPQAiAFcANQBNADAATQBwAEMAZQBoAGkASAB6AHIAZQBTAHoATgBUAGMAegBrAGMAOQBkACIAPwA+AAoAPAB4ADoAeABtAHAAbQBlAHQAYQAgAHgAbQBsAG4AcwA6AHgAPQAiAGEAZABvAGIAZQA6AG4AcwA6AG0AZQB0AGEALwAiACAAeAA6AHgAbQBwAHQAawA9ACIAQQBkAG8AYgBlACAAWABNAFAAIABDAG8AcgBlACAANAAuADIALgAyAC0AYwAwADYAMwAgADUAMwAuADMANQAyADYAMgA0ACwAIAAyADAAMAA4AC8AMAA3AC8AMwAwAC0AMQA4ADoAMQAyADoAMQA4ACAAIAAgACAAIAAgACAAIAAiAD4ACgAgACAAIAA8AHIAZABmADoAUgBEAEYAIAB4AG0AbABuAHMAOgByAGQAZgA9ACIAaAB0AHQAcAA6AC8ALwB3AHcAdwAuAHcAMwAuAG8AcgBnAC8AMQA5ADkAOQAvADAAMgAvADIAMgAtAHIAZABmAC0AcwB5AG4AdABhAHgALQBuAHMAIwAiAD4ACgAgACAAIAAgACAAIAA8AHIAZABmADoARABlAHMAYwByAGkAcAB0AGkAbwBuACAAcgBkAGYAOgBhAGIAbwB1AHQAPQAiACIACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAB4AG0AbABuAHMAOgB4AG0AcAA9ACIAaAB0AHQAcAA6AC8ALwBuAHMALgBhAGQAbwBiAGUALgBjAG8AbQAvAHgAYQBwAC8AMQAuADAALwAiAD4ACgAgACAAIAAgACAAIAAgACAAIAA8AHgAbQBwADoAQwByAGUAYQB0AG8AcgBUAG8AbwBsAD4AQQBkAG8AYgBlACAARgBsAGEAcwBoACAAQwBTADQAIABQAHIAbwBmAGUAcwBzAGkAbwBuAGEAbAA8AC8AeABtAHAAOgBDAHIAZQBhAHQAbwByAFQAbwBvAGwAPgAKACAAIAAgACAAIAAgACAAIAAgADwAeABtAHAAOgBDAHIAZQBhAHQAZQBEAGEAdABlAD4AMgAwADEAMAAtADAANwAtADMAMABUADAANQA6ADQAMwA6ADIAMAArADAAMQA6ADAAMAA8AC8AeABtAHAAOgBDAHIAZQBhAHQAZQBEAGEAdABlAD4ACgAgACAAIAAgACAAIAAgACAAIAA8AHgAbQBwADoATQBlAHQAYQBkAGEAdABhAEQAYQB0AGUAPgAyADAAMQAwAC0AMAA3AC0AMwAxAFQAMQAwADoAMAA1ADoAMwA3ACsAMAAxADoAMAAwADwALwB4AG0AcAA6AE0AZQB0AGEAZABhAHQAYQBEAGEAdABlAD4ACgAgACAAIAAgACAAIAAgACAAIAA8AHgAbQBwADoATQBvAGQAaQBmAHkARABhAHQAZQA+ADIAMAAxADAALQAwADcALQAzADEAVAAxADAAOgAwADUAOgAzADcAKwAwADEAOgAwADAAPAAvAHgAbQBwADoATQBvAGQAaQBmAHkARABhAHQAZQA+AAoAIAAgACAAIAAgACAAPAAvAHIAZABmADoARABlAHMAYwByAGkAcAB0AGkAbwBuAD4ACgAgACAAIAAgACAAIAA8AHIAZABmADoARABlAHMAYwByAGkAcAB0AGkAbwBuACAAcgBkAGYAOgBhAGIAbwB1AHQAPQAiACIACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAB4AG0AbABuAHMAOgBkAGMAPQAiAGgAdAB0AHAAOgAvAC8AcAB1AHIAbAAuAG8AcgBnAC8AZABjAC8AZQBsAGUAbQBlAG4AdABzAC8AMQAuADEALwAiAD4ACgAgACAAIAAgACAAIAAgACAAIAA8AGQAYwA6AGYAbwByAG0AYQB0AD4AYQBwAHAAbABpAGMAYQB0AGkAbwBuAC8AdgBuAGQALgBhAGQAbwBiAGUALgBmAGwAYQA8AC8AZABjADoAZgBvAHIAbQBhAHQAPgAKACAAIAAgACAAIAAgADwALwByAGQAZgA6AEQAZQBzAGMAcgBpAHAAdABpAG8AbgA+AAoAIAAgACAAIAAgACAAPAByAGQAZgA6AEQAZQBzAGMAcgBpAHAAdABpAG8AbgAgAHIAZABmADoAYQBiAG8AdQB0AD0AIgAiAAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAeABtAGwAbgBzADoAeABtAHAATQBNAD0AIgBoAHQAdABwADoALwAvAG4AcwAuAGEAZABvAGIAZQAuAGMAbwBtAC8AeABhAHAALwAxAC4AMAAvAG0AbQAvACIACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAB4AG0AbABuAHMAOgBzAHQARQB2AHQAPQAiAGgAdAB0AHAAOgAvAC8AbgBzAC4AYQBkAG8AYgBlAC4AYwBvAG0ALwB4AGEAcAAvADEALgAwAC8AcwBUAHkAcABlAC8AUgBlAHMAbwB1AHIAYwBlAEUAdgBlAG4AdAAjACIACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAB4AG0AbABuAHMAOgBzAHQAUgBlAGYAPQAiAGgAdAB0AHAAOgAvAC8AbgBzAC4AYQBkAG8AYgBlAC4AYwBvAG0ALwB4AGEAcAAvADEALgAwAC8AcwBUAHkAcABlAC8AUgBlAHMAbwB1AHIAYwBlAFIAZQBmACMAIgA+AAoAIAAgACAAIAAgACAAIAAgACAAPAB4AG0AcABNAE0AOgBJAG4AcwB0AGEAbgBjAGUASQBEAD4AeABtAHAALgBpAGkAZAA6ADYANwBBAEYARQA5AEMAOAA4ADIAOQBDAEQARgAxADEAOAA5ADQAMgBEADMAQgA0ADEAQgBBADUAQwA3ADUARAA8AC8AeABtAHAATQBNADoASQBuAHMAdABhAG4AYwBlAEkARAA+AAoAIAAgACAAIAAgACAAIAAgACAAPAB4AG0AcABNAE0AOgBEAG8AYwB1AG0AZQBuAHQASQBEAD4AeABtAHAALgBkAGkAZAA6ADYANwBBAEYARQA5AEMAOAA4ADIAOQBDAEQARgAxADEAOAA5ADQAMgBEADMAQgA0ADEAQgBBADUAQwA3ADUARAA8AC8AeABtAHAATQBNADoARABvAGMAdQBtAGUAbgB0AEkARAA+AAoAIAAgACAAIAAgACAAIAAgACAAPAB4AG0AcABNAE0AOgBPAHIAaQBnAGkAbgBhAGwARABvAGMAdQBtAGUAbgB0AEkARAA+AHgAbQBwAC4AZABpAGQAOgA1ADcAMgA1AEUAMwAyADAAOQA1ADkAQgBEAEYAMQAxADgARQA5AEIARQBFAEYAMAAzADAAMQAwADUAQgBBADkAPAAvAHgAbQBwAE0ATQA6AE8AcgBpAGcAaQBuAGEAbABEAG8AYwB1AG0AZQBuAHQASQBEAD4ACgAgACAAIAAgACAAIAAgACAAIAA8AHgAbQBwAE0ATQA6AEgAaQBzAHQAbwByAHkAPgAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgADwAcgBkAGYAOgBTAGUAcQA+AAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAPAByAGQAZgA6AGwAaQAgAHIAZABmADoAcABhAHIAcwBlAFQAeQBwAGUAPQAiAFIAZQBzAG8AdQByAGMAZQAiAD4ACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAA8AHMAdABFAHYAdAA6AGEAYwB0AGkAbwBuAD4AYwByAGUAYQB0AGUAZAA8AC8AcwB0AEUAdgB0ADoAYQBjAHQAaQBvAG4APgAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgADwAcwB0AEUAdgB0ADoAaQBuAHMAdABhAG4AYwBlAEkARAA+AHgAbQBwAC4AaQBpAGQAOgA1ADcAMgA1AEUAMwAyADAAOQA1ADkAQgBEAEYAMQAxADgARQA5AEIARQBFAEYAMAAzADAAMQAwADUAQgBBADkAPAAvAHMAdABFAHYAdAA6AGkAbgBzAHQAYQBuAGMAZQBJAEQAPgAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgADwAcwB0AEUAdgB0ADoAdwBoAGUAbgA+ADIAMAAxADAALQAwADcALQAzADAAVAAwADUAOgA0ADQAOgAyADQAKwAwADEAOgAwADAAPAAvAHMAdABFAHYAdAA6AHcAaABlAG4APgAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgADwAcwB0AEUAdgB0ADoAcwBvAGYAdAB3AGEAcgBlAEEAZwBlAG4AdAA+AEEAZABvAGIAZQAgAEYAbABhAHMAaAAgAEMAUwA0ACAAUAByAG8AZgBlAHMAcwBpAG8AbgBhAGwAPAAvAHMAdABFAHYAdAA6AHMAbwBmAHQAdwBhAHIAZQBBAGcAZQBuAHQAPgAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgADwALwByAGQAZgA6AGwAaQA+AAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAPAByAGQAZgA6AGwAaQAgAHIAZABmADoAcABhAHIAcwBlAFQAeQBwAGUAPQAiAFIAZQBzAG8AdQByAGMAZQAiAD4ACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAA8AHMAdABFAHYAdAA6AGEAYwB0AGkAbwBuAD4AcwBhAHYAZQBkADwALwBzAHQARQB2AHQAOgBhAGMAdABpAG8AbgA+AAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAPABzAHQARQB2AHQAOgBpAG4AcwB0AGEAbgBjAGUASQBEAD4AeABtAHAALgBpAGkAZAA6ADYANwBBAEYARQA5AEMAOAA4ADIAOQBDAEQARgAxADEAOAA5ADQAMgBEADMAQgA0ADEAQgBBADUAQwA3ADUARAA8AC8AcwB0AEUAdgB0ADoAaQBuAHMAdABhAG4AYwBlAEkARAA+AAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAPABzAHQARQB2AHQAOgB3AGgAZQBuAD4AMgAwADEAMAAtADAANwAtADMAMQBUADEAMAA6ADAANQA6ADMANwArADAAMQA6ADAAMAA8AC8AcwB0AEUAdgB0ADoAdwBoAGUAbgA+AAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAPABzAHQARQB2AHQAOgBzAG8AZgB0AHcAYQByAGUAQQBnAGUAbgB0AD4AQQBkAG8AYgBlACAARgBsAGEAcwBoACAAQwBTADQAIABQAHIAbwBmAGUAcwBzAGkAbwBuAGEAbAA8AC8AcwB0AEUAdgB0ADoAcwBvAGYAdAB3AGEAcgBlAEEAZwBlAG4AdAA+AAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAPABzAHQARQB2AHQAOgBjAGgAYQBuAGcAZQBkAD4ALwA8AC8AcwB0AEUAdgB0ADoAYwBoAGEAbgBnAGUAZAA+AAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAPAAvAHIAZABmADoAbABpAD4ACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAA8AC8AcgBkAGYAOgBTAGUAcQA+AAoAIAAgACAAIAAgACAAIAAgACAAPAAvAHgAbQBwAE0ATQA6AEgAaQBzAHQAbwByAHkAPgAKACAAIAAgACAAIAAgACAAIAAgADwAeABtAHAATQBNADoARABlAHIAaQB2AGUAZABGAHIAbwBtACAAcgBkAGYAOgBwAGEAcgBzAGUAVAB5AHAAZQA9ACIAUgBlAHMAbwB1AHIAYwBlACIAPgAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgADwAcwB0AFIAZQBmADoAaQBuAHMAdABhAG4AYwBlAEkARAA+AHgAbQBwAC4AaQBpAGQAOgA1ADcAMgA1AEUAMwAyADAAOQA1ADkAQgBEAEYAMQAxADgARQA5AEIARQBFAEYAMAAzADAAMQAwADUAQgBBADkAPAAvAHMAdABSAGUAZgA6AGkAbgBzAHQAYQBuAGMAZQBJAEQAPgAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgADwAcwB0AFIAZQBmADoAZABvAGMAdQBtAGUAbgB0AEkARAA+AHgAbQBwAC4AZABpAGQAOgA1ADcAMgA1AEUAMwAyADAAOQA1ADkAQgBEAEYAMQAxADgARQA5AEIARQBFAEYAMAAzADAAMQAwADUAQgBBADkAPAAvAHMAdABSAGUAZgA6AGQAbwBjAHUAbQBlAG4AdABJAEQAPgAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgADwAcwB0AFIAZQBmADoAbwByAGkAZwBpAG4AYQBsAEQAbwBjAHUAbQBlAG4AdABJAEQAPgB4AG0AcAAuAGQAaQBkADoANQA3ADIANQBFADMAMgAwADkANQA5AEIARABGADEAMQA4AEUAOQBCAEUARQBGADAAMwAwADEAMAA1AEIAQQA5ADwALwBzAHQAUgBlAGYAOgBvAHIAaQBnAGkAbgBhAGwARABvAGMAdQBtAGUAbgB0AEkARAA+AAoAIAAgACAAIAAgACAAIAAgACAAPAAvAHgAbQBwAE0ATQA6AEQAZQByAGkAdgBlAGQARgByAG8AbQA+AAoAIAAgACAAIAAgACAAPAAvAHIAZABmADoARABlAHMAYwByAGkAcAB0AGkAbwBuAD4ACgAgACAAIAA8AC8AcgBkAGYAOgBSAEQARgA+AAoAPAAvAHgAOgB4AG0AcABtAGUAdABhAD4ACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAAoAPAA/AHgAcABhAGMAawBlAHQAIABlAG4AZAA9ACIAdwAiAD8APgD//v8AAAAAAAAAAAD/////RwEAAAAAAAAACgAAADYCAABDAFNhdmVkIGJ5IEFkb2JlIEZsYXNoIFdpbmRvd3MgMTAuMCBidWlsZCA1NjYgdGltZWNvdW50ID0gMTMwMjY4MDI4NQAAAAAAAIBLQHwVAACgDwAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAD+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8B//8BAAgAQ1BpY1BhZ2UFAP//AQAJAENQaWNMYXllcgUA//8BAAkAQ1BpY0ZyYW1lBQD//wEACABDUGljVGV4dAUAAAAAAACAAAAAgAAADgkAAQAAAAAAAAAAAAAAAQDNEgAA8AAAACTu//83CgAAAAAAALgRAAABABgAAAAAAP/+/wAAcwEPGAH//v8FQQByAGkAYQBsAP/+/wxBAHIAaQBhAGwALQBCAG8AbABkAE0AVAAAAABAAAAA/wAAAQAAAQAAKAAAAAAAAAAAAP/+/wAAAAAA//7/AAIBAAAAAAAAAAD//v8AagBQAGwAYQB5AGUAcgAgAFAAbAB1AGcAaQBuACAAZgBvAHIAIABqAFEAdQBlAHIAeQAgAEoAYQB2AGEAUwBjAHIAaQBwAHQAIABMAGkAYgByAGEAcgB5AA0AaAB0AHQAcAA6AC8ALwB3AHcAdwAuAGoAcABsAGEAeQBlAHIALgBvAHIAZwANAA0AQwBvAHAAeQByAGkAZwBoAHQAIAAoAGMAKQAgADIAMAAwADkAIAAtACAAMgAwADEAMQAgAEgAYQBwAHAAeQB3AG8AcgBtACAATAB0AGQADQBEAHUAYQBsACAAbABpAGMAZQBuAHMAZQBkACAAdQBuAGQAZQByACAAdABoAGUAIABNAEkAVAAgAGEAbgBkACAARwBQAEwAIABsAGkAYwBlAG4A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bABpAHMAaABIAHQAbQBsAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AFMAdABhAHIAdABQAGEAdQBzAGUAZAD//v8BMAD//v8lUAB1AGIAbABpAHMAaABGAG8AcgBtAGEAdABQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBoAHQAbQBsAEYAaQBsAGUATgBhAG0AZQD//v8MSgBwAGwAYQB5AGUAcgAuAGgAdABtAGwA//7/IFAAdQBiAGwAaQBzAGgAUQBUAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AEwAYQB5AGUAcgBPAHAAdABpAG8AbgD//v8A//7/IFAAdQBiAGwAaQBzAGgAUQBUAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AEEAbABwAGgAYQBPAHAAdABpAG8AbgD//v8A//7/IlAAdQBiAGwAaQBzAGgAUQBUAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AE0AYQB0AGMAaABNAG8AdgBpAGUARABpAG0A//7/ATEA//7/ElYAZQBjAHQAbwByADoAOgBVAHMAZQBOAGUAdAB3AG8AcgBrAP/+/wEwAP/+/xtWAGUAYwB0AG8AcgA6ADoARABlAGIAdQBnAGcAaQBuAGcAIABQAGUAcgBtAGkAdAB0AGUAZAD//v8BMAD//v8ZVgBlAGMAdABvAHIAOgA6AEEAUwAzACAATABpAGIAcgBhAHIAeQAgAFAAYQB0AGgAcwD//v8iJAAoAEEAcABwAEMAbwBuAGYAaQBnACkALwBBAGMAdABpAG8AbgBTAGMAcgBpAHAAdAAgADMALgAwAC8AbABpAGIAcwD//v8eUAB1AGIAbABpAHMAaABQAHIAbwBmAGkAbABlAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AG4AYQBtAGUA//7/B0QAZQBmAGEAdQBsAHQA//7/G1AAdQBiAGwAaQBzAGgASAB0AG0AbABQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBMAG8AbwBwAP/+/wExAP/+/x1QAHUAYgBsAGkAcwBoAEYAbwByAG0AYQB0AFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AGoAcABlAGcA//7/ATAA//7/GlAAdQBiAGwAaQBzAGgAUQBUAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AFcAaQBkAHQAaAD//v8DNQA1ADAA//7/JFAAdQBiAGwAaQBzAGgAUABOAEcAUAByAG8AcABlAHIAdABpAGUAcwA6ADoATwBwAHQAaQBtAGkAegBlAEMAbwBsAG8AcgBzAP/+/wExAP/+/yZQAHUAYgBsAGkAcwBoAFIATgBXAEsAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAcwBwAGUAZQBkAFMAaQBuAGcAbABlAEkAUwBEAE4A//7/ATAA//7/JlAAdQBiAGwAaQBzAGgAUgBOAFcASwBQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBzAGkAbgBnAGwAZQBSAGEAdABlAEEAdQBkAGkAbwD//v8BMAD//v8VVgBlAGMAdABvAHIAOgA6AEQAbwBjAHUAbQBlAG4AdABDAGwAYQBzAHMA//7/B0oAcABsAGEAeQBlAHIA//7/F1YAZQBjAHQAbwByADoAOgBFAHgAdABlAHIAbgBhAGwAIABQAGwAYQB5AGUAcgD//v8NRgBsAGEAcwBoAFAAbABhAHkAZQByADEAMAD//v8lUAB1AGIAbABpAHMAaABIAHQAbQBsAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AHMAaABvAHcAVABhAGcAVwBhAHIAbgBNAHMAZwD//v8BMQD//v8nUAB1AGIAbABpAHMAaABIAHQAbQBsAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AEQAZQBiAGwAbwBjAGsAaQBuAGcARgBpAGwAdABlAHIA//7/ATAA//7/HFAAdQBiAGwAaQBzAGgASAB0AG0AbABQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBVAG4AaQB0AHMA//7/ATAA//7/NFAAdQBiAGwAaQBzAGgASAB0AG0AbABQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBVAHMAaQBuAGcARABlAGYAYQB1AGwAdABBAGwAdABlAHIAbgBhAHQAZQBGAGkAbABlAG4AYQBtAGUA//7/ATEA//7/HFAAdQBiAGwAaQBzAGgARwBpAGYAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAUwBtAG8AbwB0AGgA//7/ATEA//7/JVAAdQBiAGwAaQBzAGgAUgBOAFcASwBQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBtAGUAZABpAGEAQwBvAHAAeQByAGkAZwBoAHQA//7/CCgAYwApACAAMgAwADAAMAD//v8jUAB1AGIAbABpAHMAaABSAE4AVwBLAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AGYAbABhAHMAaABCAGkAdABSAGEAdABlAP/+/wQxADIAMAAwAP/+/xhWAGUAYwB0AG8AcgA6ADoAUwBjAHIAaQBwAHQAUwB0AHUAYwBrAEQAZQBsAGEAeQD//v8CMQA1AP/+/xZWAGUAYwB0AG8AcgA6ADoAQwBvAG0AcAByAGUAcwBzACAATQBvAHYAaQBlAP/+/wExAP/+/xVWAGUAYwB0AG8AcgA6ADoAUABhAGMAawBhAGcAZQAgAFAAYQB0AGgAcwD//v8A//7/JlAAdQBiAGwAaQBzAGgARgBvAHIAbQBhAHQAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAZgBsAGEAcwBoAEYAaQBsAGUATgBhAG0AZQD//v8LSgBwAGwAYQB5AGUAcgAuAHMAdwBmAP/+/ydQAHUAYgBsAGkAcwBoAEYAbwByAG0AYQB0AFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AGcAaQBmAEQAZQBmAGEAdQBsAHQATgBhAG0AZQD//v8BMQD//v8lUAB1AGIAbABpAHMAaABGAG8AcgBtAGEAdABQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBwAHIAbwBqAGUAYwB0AG8AcgBNAGEAYwD//v8BMAD//v8iUAB1AGIAbABpAHMAaABHAGkAZgBQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBEAGkAdABoAGUAcgBPAHAAdABpAG8AbgD//v8A//7/IVAAdQBiAGwAaQBzAGgAUgBOAFcASwBQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBlAHgAcABvAHIAdABTAE0ASQBMAP/+/wExAP/+/yBQAHUAYgBsAGkAcwBoAFIATgBXAEsAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAcwBwAGUAZQBkADMAOAA0AEsA//7/ATAA//7/IlAAdQBiAGwAaQBzAGgAUgBOAFcASwBQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBlAHgAcABvAHIAdABBAHUAZABpAG8A//7/ATEA//7/FlYAZQBjAHQAbwByADoAOgBBAFMAMwBFAHgAcABvAHIAdABGAHIAYQBtAGUA//7/ATEA//7/F1YAZQBjAHQAbwByADoAOgBJAG4AdgBpAHMAaQBiAGwAZQAgAEwAYQB5AGUAcgD//v8BMAD//v8eUAB1AGIAbABpAHMAaABIAHQAbQBsAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AFEAdQBhAGwAaQB0AHkA//7/ATQA//7/KFAAdQBiAGwAaQBzAGgASAB0AG0AbABQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBWAGUAcgB0AGkAYwBhAGwAQQBsAGkAZwBuAG0AZQBuAHQA//7/ATEA//7/JFAAdQBiAGwAaQBzAGgARgBvAHIAbQBhAHQAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAcABuAGcARgBpAGwAZQBOAGEAbQBlAP/+/wtKAHAAbABhAHkAZQByAC4AcABuAGcA//7/HVAAdQBiAGwAaQBzAGgARgBvAHIAbQBhAHQAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAaAB0AG0AbAD//v8BMAD//v8iUAB1AGIAbABpAHMAaABQAE4ARwBQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBGAGkAbAB0AGUAcgBPAHAAdABpAG8AbgD//v8A//7/J1AAdQBiAGwAaQBzAGgAUgBOAFcASwBQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBtAGUAZABpAGEARABlAHMAYwByAGkAcAB0AGkAbwBuAP/+/wD//v8XVgBlAGMAdABvAHIAOgA6AE8AdgBlAHIAcgBpAGQAZQAgAFMAbwB1AG4AZABzAP/+/wEwAP/+/yFQAHUAYgBsAGkAcwBoAEgAdABtAGwAUAByAG8AcABlAHIAdABpAGUAcwA6ADoARABlAHYAaQBjAGUARgBvAG4AdAD//v8BMAD//v8tUAB1AGIAbABpAHMAaABGAG8AcgBtAGEAdABQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBnAGUAbgBlAHIAYQB0AG8AcgBEAGUAZgBhAHUAbAB0AE4AYQBtAGUA//7/ATEA//7/HFAAdQBiAGwAaQBzAGgAUQBUAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AEYAbABhAHQAdABlAG4A//7/ATEA//7/HlAAdQBiAGwAaQBzAGgAUABOAEcAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAQgBpAHQARABlAHAAdABoAP/+/xEyADQALQBiAGkAdAAgAHcAaQB0AGgAIABBAGwAcABoAGEA//7/HFAAdQBiAGwAaQBzAGgAUABOAEcAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAUwBtAG8AbwB0AGgA//7/ATEA//7/IlAAdQBiAGwAaQBzAGgARwBpAGYAUAByAG8AcABlAHIAdABpAGUAcwA6ADoARABpAHQAaABlAHIAUwBvAGwAaQBkAHMA//7/ATAA//7/H1AAdQBiAGwAaQBzAGgARwBpAGYAUAByAG8AcABlAHIAdABpAGUAcwA6ADoASQBuAHQAZQByAGwAYQBjAGUA//7/ATAA//7/GlAAdQBiAGwAaQBzAGgASgBwAGUAZwBQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBEAFAASQD//v8HNAA3ADEAOAA1ADkAMgD//v8PVgBlAGMAdABvAHIAOgA6AFEAdQBhAGwAaQB0AHkA//7/AjgAMAD//v8PVgBlAGMAdABvAHIAOgA6AFAAcgBvAHQAZQBjAHQA//7/ATAA//7/IlAAdQBiAGwAaQBzAGgASAB0AG0AbABQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBEAGkAcwBwAGwAYQB5AE0AZQBuAHUA//7/ATEA//7/KlAAdQBiAGwAaQBzAGgASAB0AG0AbABQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBIAG8AcgBpAHoAbwBuAHQAYQBsAEEAbABpAGcAbgBtAGUAbgB0AP/+/wExAP/+/zJQAHUAYgBsAGkAcwBoAEgAdABtAGwAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAVgBlAHIAcwBpAG8AbgBEAGUAdABlAGMAdABpAG8AbgBJAGYAQQB2AGEAaQBsAGEAYgBsAGUA//7/ATAA//7/EFYAZQBjAHQAbwByADoAOgBUAGUAbQBwAGwAYQB0AGUA//7/ATAA//7/KlAAdQBiAGwAaQBzAGgARgBvAHIAbQBhAHQAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAZwBlAG4AZQByAGEAdABvAHIARgBpAGwAZQBOAGEAbQBlAP/+/wtKAHAAbABhAHkAZQByAC4AcwB3AHQA//7/KFAAdQBiAGwAaQBzAGgARgBvAHIAbQBhAHQAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAcgBuAHcAawBEAGUAZgBhAHUAbAB0AE4AYQBtAGUA//7/ATEA//7/KFAAdQBiAGwAaQBzAGgARgBvAHIAbQBhAHQAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAagBwAGUAZwBEAGUAZgBhAHUAbAB0AE4AYQBtAGUA//7/ATEA//7/HFAAdQBiAGwAaQBzAGgARgBvAHIAbQBhAHQAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAZwBpAGYA//7/ATAA//7/GlAAdQBiAGwAaQBzAGgARwBpAGYAUAByAG8AcABlAHIAdABpAGUAcwA6ADoATABvAG8AcAD//v8BMQD//v8bUAB1AGIAbABpAHMAaABHAGkAZgBQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBXAGkAZAB0AGgA//7/AzUANQAwAP/+/yRQAHUAYgBsAGkAcwBoAFIATgBXAEsAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAbQBlAGQAaQBhAEsAZQB5AHcAbwByAGQAcwD//v8A//7/IVAAdQBiAGwAaQBzAGgAUgBOAFcASwBQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBtAGUAZABpAGEAVABpAHQAbABlAP/+/wD//v8fUAB1AGIAbABpAHMAaABSAE4AVwBLAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AHMAcABlAGUAZAAyADgASwD//v8BMQD//v8jUAB1AGIAbABpAHMAaABGAG8AcgBtAGEAdABQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBxAHQARgBpAGwAZQBOAGEAbQBlAP/+/wtKAHAAbABhAHkAZQByAC4AbQBvAHYA//7/IlAAdQBiAGwAaQBzAGgAUABOAEcAUAByAG8AcABlAHIAdABpAGUAcwA6ADoARABpAHQAaABlAHIATwBwAHQAaQBvAG4A//7/AP/+/yNQAHUAYgBsAGkAcwBoAEcAaQBmAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AFAAYQBsAGUAdAB0AGUATwBwAHQAaQBvAG4A//7/AP/+/yNQAHUAYgBsAGkAcwBoAEcAaQBmAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AE0AYQB0AGMAaABNAG8AdgBpAGUARABpAG0A//7/ATEA//7/JFAAdQBiAGwAaQBzAGgAUgBOAFcASwBQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBzAHAAZQBlAGQARAB1AGEAbABJAFMARABOAP/+/wEwAP/+/yRQAHUAYgBsAGkAcwBoAFIATgBXAEsAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAcgBlAGEAbABWAGkAZABlAG8AUgBhAHQAZQD//v8GMQAwADAAMAAwADAA//7/HlAAdQBiAGwAaQBzAGgASgBwAGUAZwBQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBRAHUAYQBsAGkAdAB5AP/+/wI4ADAA//7/ElYAZQBjAHQAbwByADoAOgBJAG4AYwBsAHUAZABlAFgATQBQAP/+/wEwAP/+/x5QAHUAYgBsAGkAcwBoAEYAbwByAG0AYQB0AFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AGYAbABhAHMAaAD//v8BMQD//v8jUAB1AGIAbABpAHMAaABQAE4ARwBQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBQAGEAbABlAHQAdABlAE8AcAB0AGkAbwBuAP/+/wD//v8jUAB1AGIAbABpAHMAaABQAE4ARwBQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBNAGEAdABjAGgATQBvAHYAaQBlAEQAaQBtAP/+/wExAP/+/yRQAHUAYgBsAGkAcwBoAEoAcABlAGcAUAByAG8AcABlAHIAdABpAGUAcwA6ADoATQBhAHQAYwBoAE0AbwB2AGkAZQBEAGkAbQD//v8BMQD//v8cVgBlAGMAdABvAHIAOgA6AFAAYQBjAGsAYQBnAGUAIABFAHgAcABvAHIAdAAgAEYAcgBhAG0AZQD//v8BMQD//v8hUAB1AGIAbABpAHMAaABQAHIAbwBmAGkAbABlAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AHYAZQByAHMAaQBvAG4A//7/ATEA//7/HFAAdQBiAGwAaQBzAGgASAB0AG0AbABQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBBAGwAaQBnAG4A//7/ATAA//7/LVAAdQBiAGwAaQBzAGgARgBvAHIAbQBhAHQAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAcAByAG8AagBlAGMAdABvAHIAVwBpAG4ARgBpAGwAZQBOAGEAbQBlAP/+/wtKAHAAbABhAHkAZQByAC4AZQB4AGUA//7/J1AAdQBiAGwAaQBzAGgARgBvAHIAbQBhAHQAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAcABuAGcARABlAGYAYQB1AGwAdABOAGEAbQBlAP/+/wExAP/+/zBQAHUAYgBsAGkAcwBoAEYAbwByAG0AYQB0AFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AHAAcgBvAGoAZQBjAHQAbwByAE0AYQBjAEQAZQBmAGEAdQBsAHQATgBhAG0AZQD//v8BMQD//v8jUAB1AGIAbABpAHMAaABRAFQAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAUABsAGEAeQBFAHYAZQByAHkARgByAGEAbQBlAP/+/wEwAP/+/yJQAHUAYgBsAGkAcwBoAFAATgBHAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AEQAaQB0AGgAZQByAFMAbwBsAGkAZABzAP/+/wEwAP/+/yJQAHUAYgBsAGkAcwBoAEoAcABlAGcAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAUAByAG8AZwByAGUAcwBzAGkAdgBlAP/+/wEwAP/+/xJWAGUAYwB0AG8AcgA6ADoARQB4AHAAbwByAHQAIABTAHcAYwD//v8BMAD//v8aVgBlAGMAdABvAHIAOgA6AEQAZQBiAHUAZwBnAGkAbgBnACAAUABhAHMAcwB3AG8AcgBkAP/+/wD//v8aVgBlAGMAdABvAHIAOgA6AE8AbQBpAHQAIABUAHIAYQBjAGUAIABBAGMAdABpAG8AbgBzAP/+/wEwAP/+/x1QAHUAYgBsAGkAcwBoAEgAdABtAGwAUAByAG8AcABlAHIAdABpAGUAcwA6ADoASABlAGkAZwBoAHQA//7/AzQAMAAwAP/+/xxQAHUAYgBsAGkAcwBoAEgAdABtAGwAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAVwBpAGQAdABoAP/+/wM1ADUAMAD//v8lUAB1AGIAbABpAHMAaABGAG8AcgBtAGEAdABQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBqAHAAZQBnAEYAaQBsAGUATgBhAG0AZQD//v8LSgBwAGwAYQB5AGUAcgAuAGoAcABnAP/+/ylQAHUAYgBsAGkAcwBoAEYAbwByAG0AYQB0AFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AGYAbABhAHMAaABEAGUAZgBhAHUAbAB0AE4AYQBtAGUA//7/ATEA//7/H1AAdQBiAGwAaQBzAGgAUABOAEcAUAByAG8AcABlAHIAdABpAGUAcwA6ADoASQBuAHQAZQByAGwAYQBjAGUA//7/ATAA//7/HFAAdQBiAGwAaQBzAGgARwBpAGYAUAByAG8AcABlAHIAdABpAGUAcwA6ADoASABlAGkAZwBoAHQA//7/AzQAMAAwAP/+/xtQAHUAYgBsAGkAcwBoAEoAcABlAGcAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAUwBpAHoAZQD//v8BMAD//v8XVgBlAGMAdABvAHIAOgA6AFUAcwBlAEEAUwAzAE4AYQBtAGUAcwBwAGEAYwBlAP/+/wExAP/+/xZWAGUAYwB0AG8AcgA6ADoAQQBTADMAQQB1AHQAbwBEAGUAYwBsAGEAcgBlAP/+/wExAP/+/xBWAGUAYwB0AG8AcgA6ADoAQQBTADMAQwBvAGEAYwBoAP/+/wExAP/+/xNWAGUAYwB0AG8AcgA6ADoARABlAHYAaQBjAGUAUwBvAHUAbgBkAP/+/wEwAP/+/ydQAHUAYgBsAGkAcwBoAEgAdABtAGwAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAVABlAG0AcABsAGEAdABlAEYAaQBsAGUATgBhAG0AZQD//v9xRgA6AFwARABvAGMAdQBtAGUAbgB0AHMAIABhAG4AZAAgAFMAZQB0AHQAaQBuAGcAcwBcAE0AYQByAGsAXABMAG8AYwBhAGwAIABTAGUAdAB0AGkAbgBnAHMAXABBAHAAcABsAGkAYwBhAHQAaQBvAG4AIABEAGEAdABhAFwAQQBkAG8AYgBlAFwARgBsAGEAcwBoACAAQwBTADQAXABlAG4AXABDAG8AbgBmAGkAZwB1AHIAYQB0AGkAbwBuAFwASABUAE0ATABcAEQAZQBmAGEAdQBsAHQALgBoAHQAbQBsAP/+/yFQAHUAYgBsAGkAcwBoAEgAdABtAGwAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAVwBpAG4AZABvAHcATQBvAGQAZQD//v8BMAD//v8yUAB1AGIAbABpAHMAaABIAHQAbQBsAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AFUAcwBpAG4AZwBEAGUAZgBhAHUAbAB0AEMAbwBuAHQAZQBuAHQARgBpAGwAZQBuAGEAbQBlAP/+/wExAP/+/y1QAHUAYgBsAGkAcwBoAEYAbwByAG0AYQB0AFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AHAAcgBvAGoAZQBjAHQAbwByAE0AYQBjAEYAaQBsAGUATgBhAG0AZQD//v8LSgBwAGwAYQB5AGUAcgAuAGEAcABwAP/+/yhQAHUAYgBsAGkAcwBoAEYAbwByAG0AYQB0AFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AGgAdABtAGwARABlAGYAYQB1AGwAdABOAGEAbQBlAP/+/wExAP/+/x1QAHUAYgBsAGkAcwBoAEYAbwByAG0AYQB0AFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AHIAbgB3AGsA//7/ATAA//7/HFAAdQBiAGwAaQBzAGgARgBvAHIAbQBhAHQAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAcABuAGcA//7/ATAA//7/G1AAdQBiAGwAaQBzAGgAUQBUAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AEgAZQBpAGcAaAB0AP/+/wM0ADAAMAD//v8lUAB1AGIAbABpAHMAaABQAE4ARwBQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBSAGUAbQBvAHYAZQBHAHIAYQBkAGkAZQBuAHQAcwD//v8BMAD//v8fUAB1AGIAbABpAHMAaABHAGkAZgBQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBNAGEAeABDAG8AbABvAHIAcwD//v8DMgA1ADUA//7/J1AAdQBiAGwAaQBzAGgARwBpAGYAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAVAByAGEAbgBzAHAAYQByAGUAbgB0AE8AcAB0AGkAbwBuAP/+/wD//v8fUAB1AGIAbABpAHMAaABHAGkAZgBQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBMAG8AbwBwAEMAbwB1AG4AdAD//v8A//7/H1AAdQBiAGwAaQBzAGgAUgBOAFcASwBQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBzAHAAZQBlAGQANQA2AEsA//7/ATEA//7/DlYAZQBjAHQAbwByADoAOgBSAGUAcABvAHIAdAD//v8BMAD//v8rUAB1AGIAbABpAHMAaABIAHQAbQBsAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AE8AdwBuAEEAbAB0AGUAcgBuAGEAdABlAEYAaQBsAGUAbgBhAG0AZQD//v8A//7/KFAAdQBiAGwAaQBzAGgASAB0AG0AbABQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBBAGwAdABlAHIAbgBhAHQAZQBGAGkAbABlAG4AYQBtAGUA//7/AP/+/yZQAHUAYgBsAGkAcwBoAEgAdABtAGwAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAQwBvAG4AdABlAG4AdABGAGkAbABlAG4AYQBtAGUA//7/AP/+/yJQAHUAYgBsAGkAcwBoAEYAbwByAG0AYQB0AFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AGcAZQBuAGUAcgBhAHQAbwByAP/+/wEwAP/+/yRQAHUAYgBsAGkAcwBoAEcAaQBmAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AE8AcAB0AGkAbQBpAHoAZQBDAG8AbABvAHIAcwD//v8BMQD//v8iUAB1AGIAbABpAHMAaABSAE4AVwBLAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AGEAdQBkAGkAbwBGAG8AcgBtAGEAdAD//v8BMAD//v8cVgBlAGMAdABvAHIAOgA6AEgAYQByAGQAdwBhAHIAZQBBAGMAYwBlAGwAZQByAGEAdABpAG8AbgD//v8BMAD//v8RVgBlAGMAdABvAHIAOgA6AEEAUwAzAFMAdAByAGkAYwB0AP/+/wExAP/+/yJWAGUAYwB0AG8AcgA6ADoAQQBTADMAIABFAHgAdABlAHIAbgBhAGwAIABMAGkAYgByAGEAcgB5ACAAUABhAHQAaABzAP/+/wEuAP/+/w9WAGUAYwB0AG8AcgA6ADoAVgBlAHIAcwBpAG8AbgD//v8CMQAwAP/+/xRWAGUAYwB0AG8AcgA6ADoARQB2AGUAbgB0ACAARgBvAHIAbQBhAHQA//7/ATAA//7/F1YAZQBjAHQAbwByADoAOgBTAHQAcgBlAGEAbQAgAEMAbwBtAHAAcgBlAHMAcwD//v8BNwD//v8bUAB1AGIAbABpAHMAaABGAG8AcgBtAGEAdABQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBxAHQA//7/ATAA//7/HFAAdQBiAGwAaQBzAGgAUABOAEcAUAByAG8AcABlAHIAdABpAGUAcwA6ADoASABlAGkAZwBoAHQA//7/AzQAMAAwAP/+/xtQAHUAYgBsAGkAcwBoAFAATgBHAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AFcAaQBkAHQAaAD//v8DNQA1ADAA//7/JVAAdQBiAGwAaQBzAGgARwBpAGYAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAUgBlAG0AbwB2AGUARwByAGEAZABpAGUAbgB0AHMA//7/ATAA//7/IFAAdQBiAGwAaQBzAGgAUgBOAFcASwBQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBzAHAAZQBlAGQANQAxADIASwD//v8BMAD//v8dUAB1AGIAbABpAHMAaABKAHAAZQBnAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AEgAZQBpAGcAaAB0AP/+/wM0ADAAMAD//v8cVgBlAGMAdABvAHIAOgA6AEUAdgBlAG4AdABVAHMAZQA4AGsAUwBhAG0AcABsAGUAUgBhAHQAZQD//v8BMAD//v8dVgBlAGMAdABvAHIAOgA6AFMAdAByAGUAYQBtAFUAcwBlADgAawBTAGEAbQBwAGwAZQBSAGEAdABlAP/+/wEwAP/+/xtWAGUAYwB0AG8AcgA6ADoAQQBjAHQAaQBvAG4AUwBjAHIAaQBwAHQAVgBlAHIAcwBpAG8AbgD//v8BMwD//v8WVgBlAGMAdABvAHIAOgA6AEUAdgBlAG4AdAAgAEMAbwBtAHAAcgBlAHMAcwD//v8BNwD//v8cUAB1AGIAbABpAHMAaABIAHQAbQBsAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AFMAYwBhAGwAZQD//v8BMAD//v8wUAB1AGIAbABpAHMAaABGAG8AcgBtAGEAdABQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBwAHIAbwBqAGUAYwB0AG8AcgBXAGkAbgBEAGUAZgBhAHUAbAB0AE4AYQBtAGUA//7/ATEA//7/HFAAdQBiAGwAaQBzAGgAUQBUAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AEwAbwBvAHAAaQBuAGcA//7/ATAA//7/KlAAdQBiAGwAaQBzAGgAUQBUAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AFUAcwBlAFEAVABTAG8AdQBuAGQAQwBvAG0AcAByAGUAcwBzAGkAbwBuAP/+/wEwAP/+/yFQAHUAYgBsAGkAcwBoAFAATgBHAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AFAAYQBsAGUAdAB0AGUATgBhAG0AZQD//v8A//7/IVAAdQBiAGwAaQBzAGgAUABOAEcAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAVAByAGEAbgBzAHAAYQByAGUAbgB0AP/+/wEwAP/+/yZQAHUAYgBsAGkAcwBoAEcAaQBmAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AFQAcgBhAG4AcwBwAGEAcgBlAG4AdABBAGwAcABoAGEA//7/AzEAMgA4AP/+/x5QAHUAYgBsAGkAcwBoAEcAaQBmAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AEEAbgBpAG0AYQB0AGUAZAD//v8BMAD//v8iUAB1AGIAbABpAHMAaABSAE4AVwBLAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AG0AZQBkAGkAYQBBAHUAdABoAG8AcgD//v8A//7/KFAAdQBiAGwAaQBzAGgAUgBOAFcASwBQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBzAHAAZQBlAGQAQwBvAHIAcABvAHIAYQB0AGUATABBAE4A//7/ATAA//7/JlAAdQBiAGwAaQBzAGgAUgBOAFcASwBQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBzAGgAbwB3AEIAaQB0AHIAYQB0AGUARABsAG8AZwD//v8BMQD//v8iUAB1AGIAbABpAHMAaABSAE4AVwBLAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AGUAeABwAG8AcgB0AEYAbABhAHMAaAD//v8BMQD//v8cUAB1AGIAbABpAHMAaABKAHAAZQBnAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AFcAaQBkAHQAaAD//v8DNQA1ADAA//7/FVYAZQBjAHQAbwByADoAOgBTAHQAcgBlAGEAbQAgAEYAbwByAG0AYQB0AP/+/wEwAP/+/xhWAGUAYwB0AG8AcgA6ADoARABlAGIAbABvAGMAawBpAG4AZwBGAGkAbAB0AGUAcgD//v8BMAD//v8iUAB1AGIAbABpAHMAaABIAHQAbQBsAFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AFYAZQByAHMAaQBvAG4ASQBuAGYAbwD//v8A//7/JFAAdQBiAGwAaQBzAGgARgBvAHIAbQBhAHQAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAZwBpAGYARgBpAGwAZQBOAGEAbQBlAP/+/wtKAHAAbABhAHkAZQByAC4AZwBpAGYA//7/JlAAdQBiAGwAaQBzAGgARgBvAHIAbQBhAHQAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAcQB0AEQAZQBmAGEAdQBsAHQATgBhAG0AZQD//v8BMQD//v8iUAB1AGIAbABpAHMAaABRAFQAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAUABhAHUAcwBlAGQAQQB0AFMAdABhAHIAdAD//v8BMAD//v8lUAB1AGIAbABpAHMAaABRAFQAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAQwBvAG4AdAByAG8AbABsAGUAcgBPAHAAdABpAG8AbgD//v8BMAD//v8fUAB1AGIAbABpAHMAaABQAE4ARwBQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBNAGEAeABDAG8AbABvAHIAcwD//v8DMgA1ADUA//7/GFYAZQBjAHQAbwByADoAOgBBAFMAMwAgAEMAbwBuAGYAaQBnACAAQwBvAG4AcwB0AP/+/x9DAE8ATgBGAEkARwA6ADoARgBMAEEAUwBIAF8AQQBVAFQASABPAFIASQBOAEcAPQAiAHQAcgB1AGUAIgA7AP/+/yxQAHUAYgBsAGkAcwBoAEgAdABtAGwAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAVQBzAGkAbgBnAE8AdwBuAEEAbAB0AGUAcgBuAGEAdABlAEYAaQBsAGUA//7/ATAA//7/JVAAdQBiAGwAaQBzAGgARgBvAHIAbQBhAHQAUAByAG8AcABlAHIAdABpAGUAcwA6ADoAcgBuAHcAawBGAGkAbABlAE4AYQBtAGUA//7/DEoAcABsAGEAeQBlAHIALgBzAG0AaQBsAP/+/yVQAHUAYgBsAGkAcwBoAEYAbwByAG0AYQB0AFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AHAAcgBvAGoAZQBjAHQAbwByAFcAaQBuAP/+/wEwAP/+/yVQAHUAYgBsAGkAcwBoAEYAbwByAG0AYQB0AFAAcgBvAHAAZQByAHQAaQBlAHMAOgA6AGQAZQBmAGEAdQBsAHQATgBhAG0AZQBzAP/+/wExAP///////v8A//7/AAEAAAAAAPwA//8AAAkAQ0NvbG9yRGVmBAAAAP8AAAAAAAAAAAOABAAAAP8AAAAAAAAAAAOABAAAAP8AAAAAAAAAAAOABAAAAP8AAAAAAAAAAAOABAAzAP8AAFAA7wAYAAOABABmAP8AAFAA7wAwAAOABACZAP8AAFAA7wBIAAOABADMAP8AAFAA7wBgAAOABAD/AP8AAFAA7wB4AAOABDMAAP8AAAAA7wAYAAOABDMzAP8AACgA7wAYAAOABDNmAP8AADwA7wAwAAOABDOZAP8AAEMA7wBIAAOABDPMAP8AAEYA7wBgAAOABDP/AP8AAEgA7wB4AAOABGYAAP8AAAAA7wAwAAOABGYzAP8AABQA7wAwAAOABGZmAP8AACgA7wAwAAOABGaZAP8AADUA7wBIAAOABGbMAP8AADwA7wBgAAOABGb/AP8AAEAA7wB4AAOABAAAAP8AAAAAAAAAAAOABDMzM/8AAAAAAAAwAAOABAAAAP8AAAAAAAAAAAOABAAAM/8AAKAA7wAYAAOABAAzM/8AAHgA7wAYAAOABABmM/8AAGQA7wAwAAOABACZM/8AAF0A7wBIAAOABADMM/8AAFoA7wBgAAOABAD/M/8AAFgA7wB4AAOABDMAM/8AAMgA7wAYAAOABDMzM/8AAAAAAAAwAAOABDNmM/8AAFAAUABIAAOABDOZM/8AAFAAeABgAAOABDPMM/8AAFAAkAB4AAOABDP/M/8AAFAA7wCQAAOABGYAM/8AANwA7wAwAAOABGYzM/8AAAAAUABIAAOABGZmM/8AACgAUABIAAOABGaZM/8AADwAeABgAAOABGbMM/8AAEMAkAB4AAOABGb/M/8AAEYA7wCQAAOABAAAAP8AAAAAAAAAAAOABGZmZv8AAAAAAABgAAOABAAAAP8AAAAAAAAAAAOABAAAZv8AAKAA7wAwAAOABAAzZv8AAIwA7wAwAAOABABmZv8AAHgA7wAwAAOABACZZv8AAGsA7wBIAAOABADMZv8AAGQA7wBgAAOABAD/Zv8AAGAA7wB4AAOABDMAZv8AALQA7wAwAAOABDMzZv8AAKAAUABIAAOABDNmZv8AAHgAUABIAAOABDOZZv8AAGQAeABgAAOABDPMZv8AAF0AkAB4AAOABDP/Zv8AAFoA7wCQAAOABGYAZv8AAMgA7wAwAAOABGYzZv8AAMgAUABIAAOABGZmZv8AAAAAAABgAAOABGaZZv8AAFAAMAB4AAOABGbMZv8AAFAAeACQAAOABGb/Zv8AAFAA7wCoAAOABAAAAP8AAAAAAAAAAAOABJmZmf8AAAAAAACQAAOABAAAAP8AAAAAAAAAAAOABAAAmf8AAKAA7wBIAAOABAAzmf8AAJMA7wBIAAOABABmmf8AAIUA7wBIAAOABACZmf8AAHgA7wBIAAOABADMmf8AAG4A7wBgAAOABAD/mf8AAGgA7wB4AAOABDMAmf8AAK0A7wBIAAOABDMzmf8AAKAAeABgAAOABDNmmf8AAIwAeABgAAOABDOZmf8AAHgAeABgAAOABDPMmf8AAGsAkAB4AAOABDP/mf8AAGQA7wCQAAOABGYAmf8AALsA7wBIAAOABGYzmf8AALQAeABgAAOABGZmmf8AAKAAMAB4AAOABGaZmf8AAHgAMAB4AAOABGbMmf8AAGQAeACQAAOABGb/mf8AAF0A7wCoAAOABAAAAP8AAAAAAAAAAAOABMzMzP8AAAAAAADAAAOABAAAAP8AAAAAAAAAAAOABAAAzP8AAKAA7wBgAAOABAAzzP8AAJYA7wBgAAOABABmzP8AAIwA7wBgAAOABACZzP8AAIIA7wBgAAOABADMzP8AAHgA7wBgAAOABAD/zP8AAHAA7wB4AAOABDMAzP8AAKoA7wBgAAOABDMzzP8AAKAAkAB4AAOABDNmzP8AAJMAkAB4AAOABDOZzP8AAIUAkAB4AAOABDPMzP8AAHgAkAB4AAOABDP/zP8AAG4A7wCQAAOABGYAzP8AALQA7wBgAAOABGYzzP8AAK0AkAB4AAOABGZmzP8AAKAAeACQAAOABGaZzP8AAIwAeACQAAOABGbMzP8AAHgAeACQAAOABGb/zP8AAGsA7wCoAAOABAAAAP8AAAAAAAAAAAOABP////8AAAAAAADwAAOABAAAAP8AAAAAAAAAAAOABAAA//8AAKAA7wB4AAOABAAz//8AAJgA7wB4AAOABABm//8AAJAA7wB4AAOABACZ//8AAIgA7wB4AAOABADM//8AAIAA7wB4AAOABAD///8AAHgA7wB4AAOABDMA//8AAKgA7wB4AAOABDMz//8AAKAA7wCQAAOABDNm//8AAJYA7wCQAAOABDOZ//8AAIwA7wCQAAOABDPM//8AAIIA7wCQAAOABDP///8AAHgA7wCQAAOABGYA//8AALAA7wB4AAOABGYz//8AAKoA7wCQAAOABGZm//8AAKAA7wCoAAOABGaZ//8AAJMA7wCoAAOABGbM//8AAIUA7wCoAAOABGb///8AAHgA7wCoAAOABAAAAP8AAAAAAAAAAAOABP8AAP8AAAAA7wB4AAOABAAAAP8AAAAAAAAAAAOABJkAAP8AAAAA7wBIAAOABJkzAP8AAA0A7wBIAAOABJlmAP8AABsA7wBIAAOABJmZAP8AACgA7wBIAAOABJnMAP8AADIA7wBgAAOABJn/AP8AADgA7wB4AAOABMwAAP8AAAAA7wBgAAOABMwzAP8AAAoA7wBgAAOABMxmAP8AABQA7wBgAAOABMyZAP8AAB4A7wBgAAOABMzMAP8AACgA7wBgAAOABMz/AP8AADAA7wB4AAOABP8AAP8AAAAA7wB4AAOABP8zAP8AAAgA7wB4AAOABP9mAP8AABAA7wB4AAOABP+ZAP8AABgA7wB4AAOABP/MAP8AACAA7wB4AAOABP//AP8AACgA7wB4AAOABAAAAP8AAAAAAAAAAAOABAD/AP8AAFAA7wB4AAOABAAAAP8AAAAAAAAAAAOABJkAM/8AAOMA7wBIAAOABJkzM/8AAAAAeABgAAOABJlmM/8AABQAeABgAAOABJmZM/8AACgAeABgAAOABJnMM/8AADUAkAB4AAOABJn/M/8AADwA7wCQAAOABMwAM/8AAOYA7wBgAAOABMwzM/8AAAAAkAB4AAOABMxmM/8AAA0AkAB4AAOABMyZM/8AABsAkAB4AAOABMzMM/8AACgAkAB4AAOABMz/M/8AADIA7wCQAAOABP8AM/8AAOgA7wB4AAOABP8zM/8AAAAA7wCQAAOABP9mM/8AAAoA7wCQAAOABP+ZM/8AABQA7wCQAAOABP/MM/8AAB4A7wCQAAOABP//M/8AACgA7wCQAAOABAAAAP8AAAAAAAAAAAOABAAA//8AAKAA7wB4AAOABAAAAP8AAAAAAAAAAAOABJkAZv8AANUA7wBIAAOABJkzZv8AANwAeABgAAOABJlmZv8AAAAAMAB4AAOABJmZZv8AACgAMAB4AAOABJnMZv8AADwAeACQAAOABJn/Zv8AAEMA7wCoAAOABMwAZv8AANwA7wBgAAOABMwzZv8AAOMAkAB4AAOABMxmZv8AAAAAeACQAAOABMyZZv8AABQAeACQAAOABMzMZv8AACgAeACQAAOABMz/Zv8AADUA7wCoAAOABP8AZv8AAOAA7wB4AAOABP8zZv8AAOYA7wCQAAOABP9mZv8AAAAA7wCoAAOABP+ZZv8AAA0A7wCoAAOABP/MZv8AABsA7wCoAAOABP//Zv8AACgA7wCoAAOABAAAAP8AAAAAAAAAAAOABP//AP8AACgA7wB4AAOABAAAAP8AAAAAAAAAAAOABJkAmf8AAMgA7wBIAAOABJkzmf8AAMgAeABgAAOABJlmmf8AAMgAMAB4AAOABJmZmf8AAAAAAACQAAOABJnMmf8AAFAAUACoAAOABJn/mf8AAFAA7wDAAAOABMwAmf8AANIA7wBgAAOABMwzmf8AANUAkAB4AAOABMxmmf8AANwAeACQAAOABMyZmf8AAAAAUACoAAOABMzMmf8AACgAUACoAAOABMz/mf8AADwA7wDAAAOABP8Amf8AANgA7wB4AAOABP8zmf8AANwA7wCQAAOABP9mmf8AAOMA7wCoAAOABP+Zmf8AAAAA7wDAAAOABP/Mmf8AABQA7wDAAAOABP//mf8AACgA7wDAAAOABAAAAP8AAAAAAAAAAAOABAD///8AAHgA7wB4AAOABAAAAP8AAAAAAAAAAAOABJkAzP8AAL4A7wBgAAOABJkzzP8AALsAkAB4AAOABJlmzP8AALQAeACQAAOABJmZzP8AAKAAUACoAAOABJnMzP8AAHgAUACoAAOABJn/zP8AAGQA7wDAAAOABMwAzP8AAMgA7wBgAAOABMwzzP8AAMgAkAB4AAOABMxmzP8AAMgAeACQAAOABMyZzP8AAMgAUACoAAOABMzMzP8AAAAAAADAAAOABMz/zP8AAFAA7wDYAAOABP8AzP8AANAA7wB4AAOABP8zzP8AANIA7wCQAAOABP9mzP8AANUA7wCoAAOABP+ZzP8AANwA7wDAAAOABP/MzP8AAAAA7wDYAAOABP//zP8AACgA7wDYAAOABAAAAP8AAAAAAAAAAAOABP8A//8AAMgA7wB4AAOABAAAAP8AAAAAAAAAAAOABJkA//8AALgA7wB4AAOABJkz//8AALQA7wCQAAOABJlm//8AAK0A7wCoAAOABJmZ//8AAKAA7wDAAAOABJnM//8AAIwA7wDAAAOABJn///8AAHgA7wDAAAOABMwA//8AAMAA7wB4AAOABMwz//8AAL4A7wCQAAOABMxm//8AALsA7wCoAAOABMyZ//8AALQA7wDAAAOABMzM//8AAKAA7wDYAAOABMz///8AAHgA7wDYAAOABP8A//8AAMgA7wB4AAOABP8z//8AAMgA7wCQAAOABP9m//8AAMgA7wCoAAOABP+Z//8AAMgA7wDAAAOABP/M//8AAMgA7wDYAAOABP////8AAAAAAADwAAEABwADgAQAAAD/EAAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAAACAAAAAAAAAAAA//////8AAAD/AAAAAAAAA4AEAAAA/xIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAgAAAAAAAAAAAP//////AAAA/wAAAAAAAAOABAAAAP8SAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAIAAAAAAAAAAAD/AAD//wAAAP8AAAAAAAADgAQAAAD/EgAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAAACAAAAAAAAAAAAAP8A//8AAAD/AAAAAAAAA4AEAAAA/xIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAgAAAAAAAAAAAAAA////AAAA/wAAAAAAAAOABAAAAP8QAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAYAAAAAAAAAAAAAZv3/YP////96/////4CZZgD/qv/MAP///////wAAAAAAAAOABAAAAP8QAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAcAAAAAAAAAAAD/AAD/Kv//AP9dAP8A/38A////qgAA///U/wD/////AAD/AAAAAAAAAQADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAABAP/+/yJQAHUAYgBsAGkAcwBoAFEAVABQAHIAbwBwAGUAcgB0AGkAZQBzADoAOgBRAFQAUwBuAGQAUwBlAHQAdABpAG4AZwBzAP//AQAQAENRVEF1ZGlvU2V0dGluZ3MAAAAAAQBY////AQABAAAAAAAAAAD//v8AAQEBAAAAAQAAAAAAyAD//v8A//7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQAAAAQAAAABAAAA///////+/wABAAAA//7/AAAAAAAAAAAA//7//3cSPAA/AHgAcABhAGMAawBlAHQAIABiAGUAZwBpAG4APQAiAP/+IgAgAGkAZAA9ACIAVwA1AE0AMABNAHAAQwBlAGgAaQBIAHoAcgBlAFMAegBOAFQAYwB6AGsAYwA5AGQAIgA/AD4ACgA8AHgAOgB4AG0AcABtAGUAdABhACAAeABtAGwAbgBzADoAeAA9ACIAYQBkAG8AYgBlADoAbgBzADoAbQBlAHQAYQAvACIAIAB4ADoAeABtAHAAdABrAD0AIgBBAGQAbwBiAGUAIABYAE0AUAAgAEMAbwByAGUAIAA0AC4AMgAuADIALQBjADAANgAzACAANQAzAC4AMwA1ADIANgAyADQALAAgADIAMAAwADgALwAwADcALwAzADAALQAxADgAOgAxADIAOgAxADgAIAAgACAAIAAgACAAIAAgACIAPgAKACAAIAAgADwAcgBkAGYAOgBSAEQARgAgAHgAbQBsAG4AcwA6AHIAZABmAD0AIgBoAHQAdABwADoALwAvAHcAdwB3AC4AdwAzAC4AbwByAGcALwAxADkAOQA5AC8AMAAyAC8AMgAyAC0AcgBkAGYALQBzAHkAbgB0AGEAeAAtAG4AcwAjACIAPgAKACAAIAAgACAAIAAgADwAcgBkAGYAOgBEAGUAcwBjAHIAaQBwAHQAaQBvAG4AIAByAGQAZgA6AGEAYgBvAHUAdAA9ACIAIgAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgAHgAbQBsAG4AcwA6AHgAbQBwAD0AIgBoAHQAdABwADoALwAvAG4AcwAuAGEAZABvAGIAZQAuAGMAbwBtAC8AeABhAHAALwAxAC4AMAAvACIAPgAKACAAIAAgACAAIAAgACAAIAAgADwAeABtAHAAOgBDAHIAZQBhAHQAbwByAFQAbwBvAGwAPgBBAGQAbwBiAGUAIABGAGwAYQBzAGgAIABDAFMANAAgAFAAcgBvAGYAZQBzAHMAaQBvAG4AYQBsADwALwB4AG0AcAA6AEMAcgBlAGEAdABvAHIAVABvAG8AbAA+AAoAIAAgACAAIAAgACAAIAAgACAAPAB4AG0AcAA6AEMAcgBlAGEAdABlAEQAYQB0AGUAPgAyADAAMQAwAC0AMAA3AC0AMwAwAFQAMAA1ADoANAAzADoAMgAwACsAMAAxADoAMAAwADwALwB4AG0AcAA6AEMAcgBlAGEAdABlAEQAYQB0AGUAPgAKACAAIAAgACAAIAAgACAAIAAgADwAeABtAHAAOgBNAGUAdABhAGQAYQB0AGEARABhAHQAZQA+ADIAMAAxADAALQAwADcALQAzADEAVAAxADAAOgAwADUAOgAzADcAKwAwADEAOgAwADAAPAAvAHgAbQBwADoATQBlAHQAYQBkAGEAdABhAEQAYQB0AGUAPgAKACAAIAAgACAAIAAgACAAIAAgADwAeABtAHAAOgBNAG8AZABpAGYAeQBEAGEAdABlAD4AMgAwADEAMAAtADAANwAtADMAMQBUADEAMAA6ADAANQA6ADMANwArADAAMQA6ADAAMAA8AC8AeABtAHAAOgBNAG8AZABpAGYAeQBEAGEAdABlAD4ACgAgACAAIAAgACAAIAA8AC8AcgBkAGYAOgBEAGUAcwBjAHIAaQBwAHQAaQBvAG4APgAKACAAIAAgACAAIAAgADwAcgBkAGYAOgBEAGUAcwBjAHIAaQBwAHQAaQBvAG4AIAByAGQAZgA6AGEAYgBvAHUAdAA9ACIAIgAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgAHgAbQBsAG4AcwA6AGQAYwA9ACIAaAB0AHQAcAA6AC8ALwBwAHUAcgBsAC4AbwByAGcALwBkAGMALwBlAGwAZQBtAGUAbgB0AHMALwAxAC4AMQAvACIAPgAKACAAIAAgACAAIAAgACAAIAAgADwAZABjADoAZgBvAHIAbQBhAHQAPgBhAHAAcABsAGkAYwBhAHQAaQBvAG4ALwB2AG4AZAAuAGEAZABvAGIAZQAuAGYAbABhADwALwBkAGMAOgBmAG8AcgBtAGEAdAA+AAoAIAAgACAAIAAgACAAPAAvAHIAZABmADoARABlAHMAYwByAGkAcAB0AGkAbwBuAD4ACgAgACAAIAAgACAAIAA8AHIAZABmADoARABlAHMAYwByAGkAcAB0AGkAbwBuACAAcgBkAGYAOgBhAGIAbwB1AHQAPQAiACIACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAB4AG0AbABuAHMAOgB4AG0AcABNAE0APQAiAGgAdAB0AHAAOgAvAC8AbgBzAC4AYQBkAG8AYgBlAC4AYwBvAG0ALwB4AGEAcAAvADEALgAwAC8AbQBtAC8AIgAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgAHgAbQBsAG4AcwA6AHMAdABFAHYAdAA9ACIAaAB0AHQAcAA6AC8ALwBuAHMALgBhAGQAbwBiAGUALgBjAG8AbQAvAHgAYQBwAC8AMQAuADAALwBzAFQAeQBwAGUALwBSAGUAcwBvAHUAcgBjAGUARQB2AGUAbgB0ACMAIgAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgAHgAbQBsAG4AcwA6AHMAdABSAGUAZgA9ACIAaAB0AHQAcAA6AC8ALwBuAHMALgBhAGQAbwBiAGUALgBjAG8AbQAvAHgAYQBwAC8AMQAuADAALwBzAFQAeQBwAGUALwBSAGUAcwBvAHUAcgBjAGUAUgBlAGYAIwAiAD4ACgAgACAAIAAgACAAIAAgACAAIAA8AHgAbQBwAE0ATQA6AEkAbgBzAHQAYQBuAGMAZQBJAEQAPgB4AG0AcAAuAGkAaQBkADoANgA3AEEARgBFADkAQwA4ADgAMgA5AEMARABGADEAMQA4ADkANAAyAEQAMwBCADQAMQBCAEEANQBDADcANQBEADwALwB4AG0AcABNAE0AOgBJAG4AcwB0AGEAbgBjAGUASQBEAD4ACgAgACAAIAAgACAAIAAgACAAIAA8AHgAbQBwAE0ATQA6AEQAbwBjAHUAbQBlAG4AdABJAEQAPgB4AG0AcAAuAGQAaQBkADoANgA3AEEARgBFADkAQwA4ADgAMgA5AEMARABGADEAMQA4ADkANAAyAEQAMwBCADQAMQBCAEEANQBDADcANQBEADwALwB4AG0AcABNAE0AOgBEAG8AYwB1AG0AZQBuAHQASQBEAD4ACgAgACAAIAAgACAAIAAgACAAIAA8AHgAbQBwAE0ATQA6AE8AcgBpAGcAaQBuAGEAbABEAG8AYwB1AG0AZQBuAHQASQBEAD4AeABtAHAALgBkAGkAZAA6ADUANwAyADUARQAzADIAMAA5ADUAOQBCAEQARgAxADEAOABFADkAQgBFAEUARgAwADMAMAAxADAANQBCAEEAOQA8AC8AeABtAHAATQBNADoATwByAGkAZwBpAG4AYQBsAEQAbwBjAHUAbQBlAG4AdABJAEQAPgAKACAAIAAgACAAIAAgACAAIAAgADwAeABtAHAATQBNADoASABpAHMAdABvAHIAeQA+AAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAPAByAGQAZgA6AFMAZQBxAD4ACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAA8AHIAZABmADoAbABpACAAcgBkAGYAOgBwAGEAcgBzAGUAVAB5AHAAZQA9ACIAUgBlAHMAbwB1AHIAYwBlACIAPgAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgADwAcwB0AEUAdgB0ADoAYQBjAHQAaQBvAG4APgBjAHIAZQBhAHQAZQBkADwALwBzAHQARQB2AHQAOgBhAGMAdABpAG8AbgA+AAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAPABzAHQARQB2AHQAOgBpAG4AcwB0AGEAbgBjAGUASQBEAD4AeABtAHAALgBpAGkAZAA6ADUANwAyADUARQAzADIAMAA5ADUAOQBCAEQARgAxADEAOABFADkAQgBFAEUARgAwADMAMAAxADAANQBCAEEAOQA8AC8AcwB0AEUAdgB0ADoAaQBuAHMAdABhAG4AYwBlAEkARAA+AAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAPABzAHQARQB2AHQAOgB3AGgAZQBuAD4AMgAwADEAMAAtADAANwAtADMAMABUADAANQA6ADQANAA6ADIANAArADAAMQA6ADAAMAA8AC8AcwB0AEUAdgB0ADoAdwBoAGUAbgA+AAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAPABzAHQARQB2AHQAOgBzAG8AZgB0AHcAYQByAGUAQQBnAGUAbgB0AD4AQQBkAG8AYgBlACAARgBsAGEAcwBoACAAQwBTADQAIABQAHIAbwBmAGUAcwBzAGkAbwBuAGEAbAA8AC8AcwB0AEUAdgB0ADoAcwBvAGYAdAB3AGEAcgBlAEEAZwBlAG4AdAA+AAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAPAAvAHIAZABmADoAbABpAD4ACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAA8AHIAZABmADoAbABpACAAcgBkAGYAOgBwAGEAcgBzAGUAVAB5AHAAZQA9ACIAUgBlAHMAbwB1AHIAYwBlACIAPgAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgADwAcwB0AEUAdgB0ADoAYQBjAHQAaQBvAG4APgBzAGEAdgBlAGQAPAAvAHMAdABFAHYAdAA6AGEAYwB0AGkAbwBuAD4ACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAA8AHMAdABFAHYAdAA6AGkAbgBzAHQAYQBuAGMAZQBJAEQAPgB4AG0AcAAuAGkAaQBkADoANgA3AEEARgBFADkAQwA4ADgAMgA5AEMARABGADEAMQA4ADkANAAyAEQAMwBCADQAMQBCAEEANQBDADcANQBEADwALwBzAHQARQB2AHQAOgBpAG4AcwB0AGEAbgBjAGUASQBEAD4ACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAA8AHMAdABFAHYAdAA6AHcAaABlAG4APgAyADAAMQAwAC0AMAA3AC0AMwAxAFQAMQAwADoAMAA1ADoAMwA3ACsAMAAxADoAMAAwADwALwBzAHQARQB2AHQAOgB3AGgAZQBuAD4ACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAA8AHMAdABFAHYAdAA6AHMAbwBmAHQAdwBhAHIAZQBBAGcAZQBuAHQAPgBBAGQAbwBiAGUAIABGAGwAYQBzAGgAIABDAFMANAAgAFAAcgBvAGYAZQBzAHMAaQBvAG4AYQBsADwALwBzAHQARQB2AHQAOgBzAG8AZgB0AHcAYQByAGUAQQBnAGUAbgB0AD4ACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAA8AHMAdABFAHYAdAA6AGMAaABhAG4AZwBlAGQAPgAvADwALwBzAHQARQB2AHQAOgBjAGgAYQBuAGcAZQBkAD4ACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAA8AC8AcgBkAGYAOgBsAGkAPgAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgADwALwByAGQAZgA6AFMAZQBxAD4ACgAgACAAIAAgACAAIAAgACAAIAA8AC8AeABtAHAATQBNADoASABpAHMAdABvAHIAeQA+AAoAIAAgACAAIAAgACAAIAAgACAAPAB4AG0AcABNAE0AOgBEAGUAcgBpAHYAZQBkAEYAcgBvAG0AIAByAGQAZgA6AHAAYQByAHMAZQBUAHkAcABlAD0AIgBSAGUAcwBvAHUAcgBjAGUAIgA+AAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAPABzAHQAUgBlAGYAOgBpAG4AcwB0AGEAbgBjAGUASQBEAD4AeABtAHAALgBpAGkAZAA6ADUANwAyADUARQAzADIAMAA5ADUAOQBCAEQARgAxADEAOABFADkAQgBFAEUARgAwADMAMAAxADAANQBCAEEAOQA8AC8AcwB0AFIAZQBmADoAaQBuAHMAdABhAG4AYwBlAEkARAA+AAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAPABzAHQAUgBlAGYAOgBkAG8AYwB1AG0AZQBuAHQASQBEAD4AeABtAHAALgBkAGkAZAA6ADUANwAyADUARQAzADIAMAA5ADUAOQBCAEQARgAxADEAOABFADkAQgBFAEUARgAwADMAMAAxADAANQBCAEEAOQA8AC8AcwB0AFIAZQBmADoAZABvAGMAdQBtAGUAbgB0AEkARAA+AAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAPABzAHQAUgBlAGYAOgBvAHIAaQBnAGkAbgBhAGwARABvAGMAdQBtAGUAbgB0AEkARAA+AHgAbQBwAC4AZABpAGQAOgA1ADcAMgA1AEUAMwAyADAAOQA1ADkAQgBEAEYAMQAxADgARQA5AEIARQBFAEYAMAAzADAAMQAwADUAQgBBADkAPAAvAHMAdABSAGUAZgA6AG8AcgBpAGcAaQBuAGEAbABEAG8AYwB1AG0AZQBuAHQASQBEAD4ACgAgACAAIAAgACAAIAAgACAAIAA8AC8AeABtAHAATQBNADoARABlAHIAaQB2AGUAZABGAHIAbwBtAD4ACgAgACAAIAAgACAAIAA8AC8AcgBkAGYAOgBEAGUAcwBjAHIAaQBwAHQAaQBvAG4APgAKACAAIAAgADwALwByAGQAZgA6AFIARABGAD4ACgA8AC8AeAA6AHgAbQBwAG0AZQB0AGEAPgAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAKACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAACgAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAAoAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAACgA8AD8AeABwAGEAYwBrAGUAdAAgAGUAbgBkAD0AIgB3ACIAPwA+AP/+/wAAAAAAAAAAAP////9HAQAAAAAAAAAKAAAANgIAAEMAU2F2ZWQgYnkgQWRvYmUgRmxhc2ggV2luZG93cyAxMC4wIGJ1aWxkIDU2NiB0aW1lY291bnQgPSAxMzAyNjg2MTk1AAAAAAAAgEtAfBUAAKAPAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/add-on/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/add-on/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/add-on/jplayer.playlist.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogUGxheWxpc3QgT2JqZWN0IGZvciB0aGUgalBsYXllciBQbHVnaW4KICogaHR0cDovL3d3dy5qcGxheWVyLm9yZwogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDkgLSAyMDE0IEhhcHB5d29ybSBMdGQKICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLgogKiBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVAogKgogKiBBdXRob3I6IE1hcmsgSiBQYW5hZ2hpc3RvbgogKiBWZXJzaW9uOiAyLjQuMQogKiBEYXRlOiAxOXRoIE5vdmVtYmVyIDIwMTQKICoKICogUmVxdWlyZXM6CiAqICAtIGpRdWVyeSAxLjcuMCsKICogIC0galBsYXllciAyLjguMisKICovCgovKmdsb2JhbCBqUGxheWVyUGxheWxpc3Q6dHJ1ZSAqLwoKKGZ1bmN0aW9uKCQsIHVuZGVmaW5lZCkgewoKCWpQbGF5ZXJQbGF5bGlzdCA9IGZ1bmN0aW9uKGNzc1NlbGVjdG9yLCBwbGF5bGlzdCwgb3B0aW9ucykgewoJCXZhciBzZWxmID0gdGhpczsKCgkJdGhpcy5jdXJyZW50ID0gMDsKCQl0aGlzLmxvb3AgPSBmYWxzZTsgLy8gRmxhZyB1c2VkIHdpdGggdGhlIGpQbGF5ZXIgcmVwZWF0IGV2ZW50CgkJdGhpcy5zaHVmZmxlZCA9IGZhbHNlOwoJCXRoaXMucmVtb3ZpbmcgPSBmYWxzZTsgLy8gRmxhZyBpcyB0cnVlIGR1cmluZyByZW1vdmUgYW5pbWF0aW9uLCBkaXNhYmxpbmcgdGhlIHJlbW92ZSgpIG1ldGhvZCB1bnRpbCBjb21wbGV0ZS4KCgkJdGhpcy5jc3NTZWxlY3RvciA9ICQuZXh0ZW5kKHt9LCB0aGlzLl9jc3NTZWxlY3RvciwgY3NzU2VsZWN0b3IpOyAvLyBPYmplY3Q6IENvbnRhaW5pbmcgdGhlIGNzcyBzZWxlY3RvcnMgZm9yIGpQbGF5ZXIgYW5kIGl0cyBjc3NTZWxlY3RvckFuY2VzdG9yCgkJdGhpcy5vcHRpb25zID0gJC5leHRlbmQodHJ1ZSwgewoJCQlrZXlCaW5kaW5nczogewoJCQkJbmV4dDogewoJCQkJCWtleTogMjIxLCAvLyBdCgkJCQkJZm46IGZ1bmN0aW9uKCkgewoJCQkJCQlzZWxmLm5leHQoKTsKCQkJCQl9CgkJCQl9LAoJCQkJcHJldmlvdXM6IHsKCQkJCQlrZXk6IDIxOSwgLy8gWwoJCQkJCWZuOiBmdW5jdGlvbigpIHsKCQkJCQkJc2VsZi5wcmV2aW91cygpOwoJCQkJCX0KCQkJCX0sCgkJCQlzaHVmZmxlOiB7CgkJCQkJa2V5OiA4MywgLy8gcwoJCQkJCWZuOiBmdW5jdGlvbigpIHsKCQkJCQkJc2VsZi5zaHVmZmxlKCk7CgkJCQkJfQoJCQkJfQoJCQl9LAoJCQlzdGF0ZUNsYXNzOiB7CgkJCQlzaHVmZmxlZDogImpwLXN0YXRlLXNodWZmbGVkIgoJCQl9CgkJfSwgdGhpcy5fb3B0aW9ucywgb3B0aW9ucyk7IC8vIE9iamVjdDogVGhlIGpQbGF5ZXIgY29uc3RydWN0b3Igb3B0aW9ucyBmb3IgdGhpcyBwbGF5bGlzdCBhbmQgdGhlIHBsYXlsaXN0IG9wdGlvbnMKCgkJdGhpcy5wbGF5bGlzdCA9IFtdOyAvLyBBcnJheSBvZiBPYmplY3RzOiBUaGUgY3VycmVudCBwbGF5bGlzdCBkaXNwbGF5ZWQgKFVuLXNodWZmbGVkIG9yIFNodWZmbGVkKQoJCXRoaXMub3JpZ2luYWwgPSBbXTsgLy8gQXJyYXkgb2YgT2JqZWN0czogVGhlIG9yaWdpbmFsIHBsYXlsaXN0CgoJCXRoaXMuX2luaXRQbGF5bGlzdChwbGF5bGlzdCk7IC8vIENvcGllcyBwbGF5bGlzdCB0byB0aGlzLm9yaWdpbmFsLiBUaGVuIG1pcnJvcnMgdGhpcy5vcmlnaW5hbCB0byB0aGlzLnBsYXlsaXN0LiBDcmVhdGluZyB0d28gYXJyYXlzLCB3aGVyZSB0aGUgZWxlbWVudCBwb2ludGVycyBtYXRjaC4gKEVuYWJsZXMgcG9pbnRlciBjb21wYXJpc29uLikKCgkJLy8gU2V0dXAgdGhlIGNzcyBzZWxlY3RvcnMgZm9yIHRoZSBleHRyYSBpbnRlcmZhY2UgaXRlbXMgdXNlZCBieSB0aGUgcGxheWxpc3QuCgkJdGhpcy5jc3NTZWxlY3Rvci5kZXRhaWxzID0gdGhpcy5jc3NTZWxlY3Rvci5jc3NTZWxlY3RvckFuY2VzdG9yICsgIiAuanAtZGV0YWlscyI7IC8vIE5vdGUgdGhhdCBqUGxheWVyIGNvbnRyb2xzIHRoZSB0ZXh0IGluIHRoZSB0aXRsZSBlbGVtZW50LgoJCXRoaXMuY3NzU2VsZWN0b3IucGxheWxpc3QgPSB0aGlzLmNzc1NlbGVjdG9yLmNzc1NlbGVjdG9yQW5jZXN0b3IgKyAiIC5qcC1wbGF5bGlzdCI7CgkJdGhpcy5jc3NTZWxlY3Rvci5uZXh0ID0gdGhpcy5jc3NTZWxlY3Rvci5jc3NTZWxlY3RvckFuY2VzdG9yICsgIiAuanAtbmV4dCI7CgkJdGhpcy5jc3NTZWxlY3Rvci5wcmV2aW91cyA9IHRoaXMuY3NzU2VsZWN0b3IuY3NzU2VsZWN0b3JBbmNlc3RvciArICIgLmpwLXByZXZpb3VzIjsKCQl0aGlzLmNzc1NlbGVjdG9yLnNodWZmbGUgPSB0aGlzLmNzc1NlbGVjdG9yLmNzc1NlbGVjdG9yQW5jZXN0b3IgKyAiIC5qcC1zaHVmZmxlIjsKCQl0aGlzLmNzc1NlbGVjdG9yLnNodWZmbGVPZmYgPSB0aGlzLmNzc1NlbGVjdG9yLmNzc1NlbGVjdG9yQW5jZXN0b3IgKyAiIC5qcC1zaHVmZmxlLW9mZiI7CgoJCS8vIE92ZXJyaWRlIHRoZSBjc3NTZWxlY3RvckFuY2VzdG9yIGdpdmVuIGluIG9wdGlvbnMKCQl0aGlzLm9wdGlvbnMuY3NzU2VsZWN0b3JBbmNlc3RvciA9IHRoaXMuY3NzU2VsZWN0b3IuY3NzU2VsZWN0b3JBbmNlc3RvcjsKCgkJLy8gT3ZlcnJpZGUgdGhlIGRlZmF1bHQgcmVwZWF0IGV2ZW50IGhhbmRsZXIKCQl0aGlzLm9wdGlvbnMucmVwZWF0ID0gZnVuY3Rpb24oZXZlbnQpIHsKCQkJc2VsZi5sb29wID0gZXZlbnQualBsYXllci5vcHRpb25zLmxvb3A7CgkJfTsKCgkJLy8gQ3JlYXRlIGEgcmVhZHkgZXZlbnQgaGFuZGxlciB0byBpbml0aWFsaXplIHRoZSBwbGF5bGlzdAoJCSQodGhpcy5jc3NTZWxlY3Rvci5qUGxheWVyKS5iaW5kKCQualBsYXllci5ldmVudC5yZWFkeSwgZnVuY3Rpb24oKSB7CgkJCXNlbGYuX2luaXQoKTsKCQl9KTsKCgkJLy8gQ3JlYXRlIGFuIGVuZGVkIGV2ZW50IGhhbmRsZXIgdG8gbW92ZSB0byB0aGUgbmV4dCBpdGVtCgkJJCh0aGlzLmNzc1NlbGVjdG9yLmpQbGF5ZXIpLmJpbmQoJC5qUGxheWVyLmV2ZW50LmVuZGVkLCBmdW5jdGlvbigpIHsKCQkJc2VsZi5uZXh0KCk7CgkJfSk7CgoJCS8vIENyZWF0ZSBhIHBsYXkgZXZlbnQgaGFuZGxlciB0byBwYXVzZSBvdGhlciBpbnN0YW5jZXMKCQkkKHRoaXMuY3NzU2VsZWN0b3IualBsYXllcikuYmluZCgkLmpQbGF5ZXIuZXZlbnQucGxheSwgZnVuY3Rpb24oKSB7CgkJCSQodGhpcykualBsYXllcigicGF1c2VPdGhlcnMiKTsKCQl9KTsKCgkJLy8gQ3JlYXRlIGEgcmVzaXplIGV2ZW50IGhhbmRsZXIgdG8gc2hvdyB0aGUgdGl0bGUgaW4gZnVsbCBzY3JlZW4gbW9kZS4KCQkkKHRoaXMuY3NzU2VsZWN0b3IualBsYXllcikuYmluZCgkLmpQbGF5ZXIuZXZlbnQucmVzaXplLCBmdW5jdGlvbihldmVudCkgewoJCQlpZihldmVudC5qUGxheWVyLm9wdGlvbnMuZnVsbFNjcmVlbikgewoJCQkJJChzZWxmLmNzc1NlbGVjdG9yLmRldGFpbHMpLnNob3coKTsKCQkJfSBlbHNlIHsKCQkJCSQoc2VsZi5jc3NTZWxlY3Rvci5kZXRhaWxzKS5oaWRlKCk7CgkJCX0KCQl9KTsKCgkJLy8gQ3JlYXRlIGNsaWNrIGhhbmRsZXJzIGZvciB0aGUgZXh0cmEgYnV0dG9ucyB0aGF0IGRvIHBsYXlsaXN0IGZ1bmN0aW9ucy4KCQkkKHRoaXMuY3NzU2VsZWN0b3IucHJldmlvdXMpLmNsaWNrKGZ1bmN0aW9uKGUpIHsKCQkJZS5wcmV2ZW50RGVmYXVsdCgpOwoJCQlzZWxmLnByZXZpb3VzKCk7CgkJCXNlbGYuYmx1cih0aGlzKTsKCQl9KTsKCgkJJCh0aGlzLmNzc1NlbGVjdG9yLm5leHQpLmNsaWNrKGZ1bmN0aW9uKGUpIHsKCQkJZS5wcmV2ZW50RGVmYXVsdCgpOwoJCQlzZWxmLm5leHQoKTsKCQkJc2VsZi5ibHVyKHRoaXMpOwoJCX0pOwoKCQkkKHRoaXMuY3NzU2VsZWN0b3Iuc2h1ZmZsZSkuY2xpY2soZnVuY3Rpb24oZSkgewoJCQllLnByZXZlbnREZWZhdWx0KCk7CgkJCWlmKHNlbGYuc2h1ZmZsZWQgJiYgJChzZWxmLmNzc1NlbGVjdG9yLmpQbGF5ZXIpLmpQbGF5ZXIoIm9wdGlvbiIsICJ1c2VTdGF0ZUNsYXNzU2tpbiIpKSB7CgkJCQlzZWxmLnNodWZmbGUoZmFsc2UpOwoJCQl9IGVsc2UgewoJCQkJc2VsZi5zaHVmZmxlKHRydWUpOwoJCQl9CgkJCXNlbGYuYmx1cih0aGlzKTsKCQl9KTsKCQkkKHRoaXMuY3NzU2VsZWN0b3Iuc2h1ZmZsZU9mZikuY2xpY2soZnVuY3Rpb24oZSkgewoJCQllLnByZXZlbnREZWZhdWx0KCk7CgkJCXNlbGYuc2h1ZmZsZShmYWxzZSk7CgkJCXNlbGYuYmx1cih0aGlzKTsKCQl9KS5oaWRlKCk7CgoJCS8vIFB1dCB0aGUgdGl0bGUgaW4gaXRzIGluaXRpYWwgZGlzcGxheSBzdGF0ZQoJCWlmKCF0aGlzLm9wdGlvbnMuZnVsbFNjcmVlbikgewoJCQkkKHRoaXMuY3NzU2VsZWN0b3IuZGV0YWlscykuaGlkZSgpOwoJCX0KCgkJLy8gUmVtb3ZlIHRoZSBlbXB0eSA8bGk+IGZyb20gdGhlIHBhZ2UgSFRNTC4gQWxsb3dzIHBhZ2UgdG8gYmUgdmFsaWQgSFRNTCwgd2hpbGUgbm90IGludGVyZmVyZWluZyB3aXRoIGRpc3BsYXkgYW5pbWF0aW9ucwoJCSQodGhpcy5jc3NTZWxlY3Rvci5wbGF5bGlzdCArICIgdWwiKS5lbXB0eSgpOwoKCQkvLyBDcmVhdGUgLm9uKCkgaGFuZGxlcnMgZm9yIHRoZSBwbGF5bGlzdCBpdGVtcyBhbG9uZyB3aXRoIHRoZSBmcmVlIG1lZGlhIGFuZCByZW1vdmUgY29udHJvbHMuCgkJdGhpcy5fY3JlYXRlSXRlbUhhbmRsZXJzKCk7CgoJCS8vIEluc3RhbmNlIGpQbGF5ZXIKCQkkKHRoaXMuY3NzU2VsZWN0b3IualBsYXllcikualBsYXllcih0aGlzLm9wdGlvbnMpOwoJfTsKCglqUGxheWVyUGxheWxpc3QucHJvdG90eXBlID0gewoJCV9jc3NTZWxlY3RvcjogeyAvLyBzdGF0aWMgb2JqZWN0LCBpbnN0YW5jZWQgaW4gY29uc3RydWN0b3IKCQkJalBsYXllcjogIiNqcXVlcnlfanBsYXllcl8xIiwKCQkJY3NzU2VsZWN0b3JBbmNlc3RvcjogIiNqcF9jb250YWluZXJfMSIKCQl9LAoJCV9vcHRpb25zOiB7IC8vIHN0YXRpYyBvYmplY3QsIGluc3RhbmNlZCBpbiBjb25zdHJ1Y3RvcgoJCQlwbGF5bGlzdE9wdGlvbnM6IHsKCQkJCWF1dG9QbGF5OiBmYWxzZSwKCQkJCWxvb3BPblByZXZpb3VzOiBmYWxzZSwKCQkJCXNodWZmbGVPbkxvb3A6IHRydWUsCgkJCQllbmFibGVSZW1vdmVDb250cm9sczogZmFsc2UsCgkJCQlkaXNwbGF5VGltZTogJ3Nsb3cnLAoJCQkJYWRkVGltZTogJ2Zhc3QnLAoJCQkJcmVtb3ZlVGltZTogJ2Zhc3QnLAoJCQkJc2h1ZmZsZVRpbWU6ICdzbG93JywKCQkJCWl0ZW1DbGFzczogImpwLXBsYXlsaXN0LWl0ZW0iLAoJCQkJZnJlZUdyb3VwQ2xhc3M6ICJqcC1mcmVlLW1lZGlhIiwKCQkJCWZyZWVJdGVtQ2xhc3M6ICJqcC1wbGF5bGlzdC1pdGVtLWZyZWUiLAoJCQkJcmVtb3ZlSXRlbUNsYXNzOiAianAtcGxheWxpc3QtaXRlbS1yZW1vdmUiCgkJCX0KCQl9LAoJCW9wdGlvbjogZnVuY3Rpb24ob3B0aW9uLCB2YWx1ZSkgeyAvLyBGb3IgY2hhbmdpbmcgcGxheWxpc3Qgb3B0aW9ucyBvbmx5CgkJCWlmKHZhbHVlID09PSB1bmRlZmluZWQpIHsKCQkJCXJldHVybiB0aGlzLm9wdGlvbnMucGxheWxpc3RPcHRpb25zW29wdGlvbl07CgkJCX0KCgkJCXRoaXMub3B0aW9ucy5wbGF5bGlzdE9wdGlvbnNbb3B0aW9uXSA9IHZhbHVlOwoKCQkJc3dpdGNoKG9wdGlvbikgewoJCQkJY2FzZSAiZW5hYmxlUmVtb3ZlQ29udHJvbHMiOgoJCQkJCXRoaXMuX3VwZGF0ZUNvbnRyb2xzKCk7CgkJCQkJYnJlYWs7CgkJCQljYXNlICJpdGVtQ2xhc3MiOgoJCQkJY2FzZSAiZnJlZUdyb3VwQ2xhc3MiOgoJCQkJY2FzZSAiZnJlZUl0ZW1DbGFzcyI6CgkJCQljYXNlICJyZW1vdmVJdGVtQ2xhc3MiOgoJCQkJCXRoaXMuX3JlZnJlc2godHJ1ZSk7IC8vIEluc3RhbnQKCQkJCQl0aGlzLl9jcmVhdGVJdGVtSGFuZGxlcnMoKTsKCQkJCQlicmVhazsKCQkJfQoJCQlyZXR1cm4gdGhpczsKCQl9LAoJCV9pbml0OiBmdW5jdGlvbigpIHsKCQkJdmFyIHNlbGYgPSB0aGlzOwoJCQl0aGlzLl9yZWZyZXNoKGZ1bmN0aW9uKCkgewoJCQkJaWYoc2VsZi5vcHRpb25zLnBsYXlsaXN0T3B0aW9ucy5hdXRvUGxheSkgewoJCQkJCXNlbGYucGxheShzZWxmLmN1cnJlbnQpOwoJCQkJfSBlbHNlIHsKCQkJCQlzZWxmLnNlbGVjdChzZWxmLmN1cnJlbnQpOwoJCQkJfQoJCQl9KTsKCQl9LAoJCV9pbml0UGxheWxpc3Q6IGZ1bmN0aW9uKHBsYXlsaXN0KSB7CgkJCXRoaXMuY3VycmVudCA9IDA7CgkJCXRoaXMuc2h1ZmZsZWQgPSBmYWxzZTsKCQkJdGhpcy5yZW1vdmluZyA9IGZhbHNlOwoJCQl0aGlzLm9yaWdpbmFsID0gJC5leHRlbmQodHJ1ZSwgW10sIHBsYXlsaXN0KTsgLy8gQ29weSB0aGUgQXJyYXkgb2YgT2JqZWN0cwoJCQl0aGlzLl9vcmlnaW5hbFBsYXlsaXN0KCk7CgkJfSwKCQlfb3JpZ2luYWxQbGF5bGlzdDogZnVuY3Rpb24oKSB7CgkJCXZhciBzZWxmID0gdGhpczsKCQkJdGhpcy5wbGF5bGlzdCA9IFtdOwoJCQkvLyBNYWtlIGJvdGggYXJyYXlzIHBvaW50IHRvIHRoZSBzYW1lIG9iamVjdCBlbGVtZW50cy4gR2l2ZXMgdXMgMiBkaWZmZXJlbnQgYXJyYXlzLCBlYWNoIHBvaW50aW5nIHRvIHRoZSBzYW1lIGFjdHVhbCBvYmplY3QuIGllLiwgTm90IGNvcGllcyBvZiB0aGUgb2JqZWN0LgoJCQkkLmVhY2godGhpcy5vcmlnaW5hbCwgZnVuY3Rpb24oaSkgewoJCQkJc2VsZi5wbGF5bGlzdFtpXSA9IHNlbGYub3JpZ2luYWxbaV07CgkJCX0pOwoJCX0sCgkJX3JlZnJlc2g6IGZ1bmN0aW9uKGluc3RhbnQpIHsKCQkJLyogaW5zdGFudDogQ2FuIGJlIHVuZGVmaW5lZCwgdHJ1ZSBvciBhIGZ1bmN0aW9uLgoJCQkgKgl1bmRlZmluZWQgLT4gdXNlIGFuaW1hdGlvbiB0aW1pbmdzCgkJCSAqCXRydWUgLT4gbm8gYW5pbWF0aW9uCgkJCSAqCWZ1bmN0aW9uIC0+IHVzZSBhbmltYXRpb24gdGltaW5ncyBhbmQgZXhjdXRlIGZ1bmN0aW9uIGF0IGhhbGYgd2F5IHBvaW50LgoJCQkgKi8KCQkJdmFyIHNlbGYgPSB0aGlzOwoKCQkJaWYoaW5zdGFudCAmJiAhJC5pc0Z1bmN0aW9uKGluc3RhbnQpKSB7CgkJCQkkKHRoaXMuY3NzU2VsZWN0b3IucGxheWxpc3QgKyAiIHVsIikuZW1wdHkoKTsKCQkJCSQuZWFjaCh0aGlzLnBsYXlsaXN0LCBmdW5jdGlvbihpKSB7CgkJCQkJJChzZWxmLmNzc1NlbGVjdG9yLnBsYXlsaXN0ICsgIiB1bCIpLmFwcGVuZChzZWxmLl9jcmVhdGVMaXN0SXRlbShzZWxmLnBsYXlsaXN0W2ldKSk7CgkJCQl9KTsKCQkJCXRoaXMuX3VwZGF0ZUNvbnRyb2xzKCk7CgkJCX0gZWxzZSB7CgkJCQl2YXIgZGlzcGxheVRpbWUgPSAkKHRoaXMuY3NzU2VsZWN0b3IucGxheWxpc3QgKyAiIHVsIikuY2hpbGRyZW4oKS5sZW5ndGggPyB0aGlzLm9wdGlvbnMucGxheWxpc3RPcHRpb25zLmRpc3BsYXlUaW1lIDogMDsKCgkJCQkkKHRoaXMuY3NzU2VsZWN0b3IucGxheWxpc3QgKyAiIHVsIikuc2xpZGVVcChkaXNwbGF5VGltZSwgZnVuY3Rpb24oKSB7CgkJCQkJdmFyICR0aGlzID0gJCh0aGlzKTsKCQkJCQkkKHRoaXMpLmVtcHR5KCk7CgkJCQkJCgkJCQkJJC5lYWNoKHNlbGYucGxheWxpc3QsIGZ1bmN0aW9uKGkpIHsKCQkJCQkJJHRoaXMuYXBwZW5kKHNlbGYuX2NyZWF0ZUxpc3RJdGVtKHNlbGYucGxheWxpc3RbaV0pKTsKCQkJCQl9KTsKCQkJCQlzZWxmLl91cGRhdGVDb250cm9scygpOwoJCQkJCWlmKCQuaXNGdW5jdGlvbihpbnN0YW50KSkgewoJCQkJCQlpbnN0YW50KCk7CgkJCQkJfQoJCQkJCWlmKHNlbGYucGxheWxpc3QubGVuZ3RoKSB7CgkJCQkJCSQodGhpcykuc2xpZGVEb3duKHNlbGYub3B0aW9ucy5wbGF5bGlzdE9wdGlvbnMuZGlzcGxheVRpbWUpOwoJCQkJCX0gZWxzZSB7CgkJCQkJCSQodGhpcykuc2hvdygpOwoJCQkJCX0KCQkJCX0pOwoJCQl9CgkJfSwKCQlfY3JlYXRlTGlzdEl0ZW06IGZ1bmN0aW9uKG1lZGlhKSB7CgkJCXZhciBzZWxmID0gdGhpczsKCgkJCS8vIFdyYXAgdGhlIDxsaT4gY29udGVudHMgaW4gYSA8ZGl2PgoJCQl2YXIgbGlzdEl0ZW0gPSAiPGxpPjxkaXY+IjsKCgkJCS8vIENyZWF0ZSByZW1vdmUgY29udHJvbAoJCQlsaXN0SXRlbSArPSAiPGEgaHJlZj0namF2YXNjcmlwdDo7JyBjbGFzcz0nIiArIHRoaXMub3B0aW9ucy5wbGF5bGlzdE9wdGlvbnMucmVtb3ZlSXRlbUNsYXNzICsgIic+JnRpbWVzOzwvYT4iOwoKCQkJLy8gQ3JlYXRlIGxpbmtzIHRvIGZyZWUgbWVkaWEKCQkJaWYobWVkaWEuZnJlZSkgewoJCQkJdmFyIGZpcnN0ID0gdHJ1ZTsKCQkJCWxpc3RJdGVtICs9ICI8c3BhbiBjbGFzcz0nIiArIHRoaXMub3B0aW9ucy5wbGF5bGlzdE9wdGlvbnMuZnJlZUdyb3VwQ2xhc3MgKyAiJz4oIjsKCQkJCSQuZWFjaChtZWRpYSwgZnVuY3Rpb24ocHJvcGVydHksdmFsdWUpIHsKCQkJCQlpZigkLmpQbGF5ZXIucHJvdG90eXBlLmZvcm1hdFtwcm9wZXJ0eV0pIHsgLy8gQ2hlY2sgcHJvcGVydHkgaXMgYSBtZWRpYSBmb3JtYXQuCgkJCQkJCWlmKGZpcnN0KSB7CgkJCQkJCQlmaXJzdCA9IGZhbHNlOwoJCQkJCQl9IGVsc2UgewoJCQkJCQkJbGlzdEl0ZW0gKz0gIiB8ICI7CgkJCQkJCX0KCQkJCQkJbGlzdEl0ZW0gKz0gIjxhIGNsYXNzPSciICsgc2VsZi5vcHRpb25zLnBsYXlsaXN0T3B0aW9ucy5mcmVlSXRlbUNsYXNzICsgIicgaHJlZj0nIiArIHZhbHVlICsgIicgdGFiaW5kZXg9Jy0xJz4iICsgcHJvcGVydHkgKyAiPC9hPiI7CgkJCQkJfQoJCQkJfSk7CgkJCQlsaXN0SXRlbSArPSAiKTwvc3Bhbj4iOwoJCQl9CgoJCQkvLyBUaGUgdGl0bGUgaXMgZ2l2ZW4gbmV4dCBpbiB0aGUgSFRNTCBvdGhlcndpc2UgdGhlIGZsb2F0OnJpZ2h0IG9uIHRoZSBmcmVlIG1lZGlhIGNvcnJ1cHRzIGluIElFNi83CgkJCWxpc3RJdGVtICs9ICI8YSBocmVmPSdqYXZhc2NyaXB0OjsnIGNsYXNzPSciICsgdGhpcy5vcHRpb25zLnBsYXlsaXN0T3B0aW9ucy5pdGVtQ2xhc3MgKyAiJyB0YWJpbmRleD0nMCc+IiArIG1lZGlhLnRpdGxlICsgKG1lZGlhLmFydGlzdCA/ICIgPHNwYW4gY2xhc3M9J2pwLWFydGlzdCc+YnkgIiArIG1lZGlhLmFydGlzdCArICI8L3NwYW4+IiA6ICIiKSArICI8L2E+IjsKCQkJbGlzdEl0ZW0gKz0gIjwvZGl2PjwvbGk+IjsKCgkJCXJldHVybiBsaXN0SXRlbTsKCQl9LAoJCV9jcmVhdGVJdGVtSGFuZGxlcnM6IGZ1bmN0aW9uKCkgewoJCQl2YXIgc2VsZiA9IHRoaXM7CgkJCS8vIENyZWF0ZSBsaXZlIGhhbmRsZXJzIGZvciB0aGUgcGxheWxpc3QgaXRlbXMKCQkJJCh0aGlzLmNzc1NlbGVjdG9yLnBsYXlsaXN0KS5vZmYoImNsaWNrIiwgImEuIiArIHRoaXMub3B0aW9ucy5wbGF5bGlzdE9wdGlvbnMuaXRlbUNsYXNzKS5vbigiY2xpY2siLCAiYS4iICsgdGhpcy5vcHRpb25zLnBsYXlsaXN0T3B0aW9ucy5pdGVtQ2xhc3MsIGZ1bmN0aW9uKGUpIHsKCQkJCWUucHJldmVudERlZmF1bHQoKTsKCQkJCXZhciBpbmRleCA9ICQodGhpcykucGFyZW50KCkucGFyZW50KCkuaW5kZXgoKTsKCQkJCWlmKHNlbGYuY3VycmVudCAhPT0gaW5kZXgpIHsKCQkJCQlzZWxmLnBsYXkoaW5kZXgpOwoJCQkJfSBlbHNlIHsKCQkJCQkkKHNlbGYuY3NzU2VsZWN0b3IualBsYXllcikualBsYXllcigicGxheSIpOwoJCQkJfQoJCQkJc2VsZi5ibHVyKHRoaXMpOwoJCQl9KTsKCgkJCS8vIENyZWF0ZSBsaXZlIGhhbmRsZXJzIHRoYXQgZGlzYWJsZSBmcmVlIG1lZGlhIGxpbmtzIHRvIGZvcmNlIGFjY2VzcyB2aWEgcmlnaHQgY2xpY2sKCQkJJCh0aGlzLmNzc1NlbGVjdG9yLnBsYXlsaXN0KS5vZmYoImNsaWNrIiwgImEuIiArIHRoaXMub3B0aW9ucy5wbGF5bGlzdE9wdGlvbnMuZnJlZUl0ZW1DbGFzcykub24oImNsaWNrIiwgImEuIiArIHRoaXMub3B0aW9ucy5wbGF5bGlzdE9wdGlvbnMuZnJlZUl0ZW1DbGFzcywgZnVuY3Rpb24oZSkgewoJCQkJZS5wcmV2ZW50RGVmYXVsdCgpOwoJCQkJJCh0aGlzKS5wYXJlbnQoKS5wYXJlbnQoKS5maW5kKCIuIiArIHNlbGYub3B0aW9ucy5wbGF5bGlzdE9wdGlvbnMuaXRlbUNsYXNzKS5jbGljaygpOwoJCQkJc2VsZi5ibHVyKHRoaXMpOwoJCQl9KTsKCgkJCS8vIENyZWF0ZSBsaXZlIGhhbmRsZXJzIGZvciB0aGUgcmVtb3ZlIGNvbnRyb2xzCgkJCSQodGhpcy5jc3NTZWxlY3Rvci5wbGF5bGlzdCkub2ZmKCJjbGljayIsICJhLiIgKyB0aGlzLm9wdGlvbnMucGxheWxpc3RPcHRpb25zLnJlbW92ZUl0ZW1DbGFzcykub24oImNsaWNrIiwgImEuIiArIHRoaXMub3B0aW9ucy5wbGF5bGlzdE9wdGlvbnMucmVtb3ZlSXRlbUNsYXNzLCBmdW5jdGlvbihlKSB7CgkJCQllLnByZXZlbnREZWZhdWx0KCk7CgkJCQl2YXIgaW5kZXggPSAkKHRoaXMpLnBhcmVudCgpLnBhcmVudCgpLmluZGV4KCk7CgkJCQlzZWxmLnJlbW92ZShpbmRleCk7CgkJCQlzZWxmLmJsdXIodGhpcyk7CgkJCX0pOwoJCX0sCgkJX3VwZGF0ZUNvbnRyb2xzOiBmdW5jdGlvbigpIHsKCQkJaWYodGhpcy5vcHRpb25zLnBsYXlsaXN0T3B0aW9ucy5lbmFibGVSZW1vdmVDb250cm9scykgewoJCQkJJCh0aGlzLmNzc1NlbGVjdG9yLnBsYXlsaXN0ICsgIiAuIiArIHRoaXMub3B0aW9ucy5wbGF5bGlzdE9wdGlvbnMucmVtb3ZlSXRlbUNsYXNzKS5zaG93KCk7CgkJCX0gZWxzZSB7CgkJCQkkKHRoaXMuY3NzU2VsZWN0b3IucGxheWxpc3QgKyAiIC4iICsgdGhpcy5vcHRpb25zLnBsYXlsaXN0T3B0aW9ucy5yZW1vdmVJdGVtQ2xhc3MpLmhpZGUoKTsKCQkJfQoKCQkJaWYodGhpcy5zaHVmZmxlZCkgewoJCQkJJCh0aGlzLmNzc1NlbGVjdG9yLmpQbGF5ZXIpLmpQbGF5ZXIoImFkZFN0YXRlQ2xhc3MiLCAic2h1ZmZsZWQiKTsKCQkJfSBlbHNlIHsKCQkJCSQodGhpcy5jc3NTZWxlY3Rvci5qUGxheWVyKS5qUGxheWVyKCJyZW1vdmVTdGF0ZUNsYXNzIiwgInNodWZmbGVkIik7CgkJCX0KCQkJaWYoJCh0aGlzLmNzc1NlbGVjdG9yLnNodWZmbGUpLmxlbmd0aCAmJiAkKHRoaXMuY3NzU2VsZWN0b3Iuc2h1ZmZsZU9mZikubGVuZ3RoKSB7CgkJCQlpZih0aGlzLnNodWZmbGVkKSB7CgkJCQkJJCh0aGlzLmNzc1NlbGVjdG9yLnNodWZmbGVPZmYpLnNob3coKTsKCQkJCQkkKHRoaXMuY3NzU2VsZWN0b3Iuc2h1ZmZsZSkuaGlkZSgpOwoJCQkJfSBlbHNlIHsKCQkJCQkkKHRoaXMuY3NzU2VsZWN0b3Iuc2h1ZmZsZU9mZikuaGlkZSgpOwoJCQkJCSQodGhpcy5jc3NTZWxlY3Rvci5zaHVmZmxlKS5zaG93KCk7CgkJCQl9CgkJCX0KCQl9LAoJCV9oaWdobGlnaHQ6IGZ1bmN0aW9uKGluZGV4KSB7CgkJCWlmKHRoaXMucGxheWxpc3QubGVuZ3RoICYmIGluZGV4ICE9PSB1bmRlZmluZWQpIHsKCQkJCSQodGhpcy5jc3NTZWxlY3Rvci5wbGF5bGlzdCArICIgLmpwLXBsYXlsaXN0LWN1cnJlbnQiKS5yZW1vdmVDbGFzcygianAtcGxheWxpc3QtY3VycmVudCIpOwoJCQkJJCh0aGlzLmNzc1NlbGVjdG9yLnBsYXlsaXN0ICsgIiBsaTpudGgtY2hpbGQoIiArIChpbmRleCArIDEpICsgIikiKS5hZGRDbGFzcygianAtcGxheWxpc3QtY3VycmVudCIpLmZpbmQoIi5qcC1wbGF5bGlzdC1pdGVtIikuYWRkQ2xhc3MoImpwLXBsYXlsaXN0LWN1cnJlbnQiKTsKCQkJCS8vICQodGhpcy5jc3NTZWxlY3Rvci5kZXRhaWxzICsgIiBsaSIpLmh0bWwoIjxzcGFuIGNsYXNzPSdqcC10aXRsZSc+IiArIHRoaXMucGxheWxpc3RbaW5kZXhdLnRpdGxlICsgIjwvc3Bhbj4iICsgKHRoaXMucGxheWxpc3RbaW5kZXhdLmFydGlzdCA/ICIgPHNwYW4gY2xhc3M9J2pwLWFydGlzdCc+YnkgIiArIHRoaXMucGxheWxpc3RbaW5kZXhdLmFydGlzdCArICI8L3NwYW4+IiA6ICIiKSk7CgkJCX0KCQl9LAoJCXNldFBsYXlsaXN0OiBmdW5jdGlvbihwbGF5bGlzdCkgewoJCQl0aGlzLl9pbml0UGxheWxpc3QocGxheWxpc3QpOwoJCQl0aGlzLl9pbml0KCk7CgkJfSwKCQlhZGQ6IGZ1bmN0aW9uKG1lZGlhLCBwbGF5Tm93KSB7CgkJCSQodGhpcy5jc3NTZWxlY3Rvci5wbGF5bGlzdCArICIgdWwiKS5hcHBlbmQodGhpcy5fY3JlYXRlTGlzdEl0ZW0obWVkaWEpKS5maW5kKCJsaTpsYXN0LWNoaWxkIikuaGlkZSgpLnNsaWRlRG93bih0aGlzLm9wdGlvbnMucGxheWxpc3RPcHRpb25zLmFkZFRpbWUpOwoJCQl0aGlzLl91cGRhdGVDb250cm9scygpOwoJCQl0aGlzLm9yaWdpbmFsLnB1c2gobWVkaWEpOwoJCQl0aGlzLnBsYXlsaXN0LnB1c2gobWVkaWEpOyAvLyBCb3RoIGFycmF5IGVsZW1lbnRzIHNoYXJlIHRoZSBzYW1lIG9iamVjdCBwb2ludGVyLiBDb21mb3JtcyB3aXRoIF9pbml0UGxheWxpc3QocCkgc3lzdGVtLgoKCQkJaWYocGxheU5vdykgewoJCQkJdGhpcy5wbGF5KHRoaXMucGxheWxpc3QubGVuZ3RoIC0gMSk7CgkJCX0gZWxzZSB7CgkJCQlpZih0aGlzLm9yaWdpbmFsLmxlbmd0aCA9PT0gMSkgewoJCQkJCXRoaXMuc2VsZWN0KDApOwoJCQkJfQoJCQl9CgkJfSwKCQlyZW1vdmU6IGZ1bmN0aW9uKGluZGV4KSB7CgkJCXZhciBzZWxmID0gdGhpczsKCgkJCWlmKGluZGV4ID09PSB1bmRlZmluZWQpIHsKCQkJCXRoaXMuX2luaXRQbGF5bGlzdChbXSk7CgkJCQl0aGlzLl9yZWZyZXNoKGZ1bmN0aW9uKCkgewoJCQkJCSQoc2VsZi5jc3NTZWxlY3Rvci5qUGxheWVyKS5qUGxheWVyKCJjbGVhck1lZGlhIik7CgkJCQl9KTsKCQkJCXJldHVybiB0cnVlOwoJCQl9IGVsc2UgewoKCQkJCWlmKHRoaXMucmVtb3ZpbmcpIHsKCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQl9IGVsc2UgewoJCQkJCWluZGV4ID0gKGluZGV4IDwgMCkgPyBzZWxmLm9yaWdpbmFsLmxlbmd0aCArIGluZGV4IDogaW5kZXg7IC8vIE5lZ2F0aXZlIGluZGV4IHJlbGF0ZXMgdG8gZW5kIG9mIGFycmF5LgoJCQkJCWlmKDAgPD0gaW5kZXggJiYgaW5kZXggPCB0aGlzLnBsYXlsaXN0Lmxlbmd0aCkgewoJCQkJCQl0aGlzLnJlbW92aW5nID0gdHJ1ZTsKCgkJCQkJCSQodGhpcy5jc3NTZWxlY3Rvci5wbGF5bGlzdCArICIgbGk6bnRoLWNoaWxkKCIgKyAoaW5kZXggKyAxKSArICIpIikuc2xpZGVVcCh0aGlzLm9wdGlvbnMucGxheWxpc3RPcHRpb25zLnJlbW92ZVRpbWUsIGZ1bmN0aW9uKCkgewoJCQkJCQkJJCh0aGlzKS5yZW1vdmUoKTsKCgkJCQkJCQlpZihzZWxmLnNodWZmbGVkKSB7CgkJCQkJCQkJdmFyIGl0ZW0gPSBzZWxmLnBsYXlsaXN0W2luZGV4XTsKCQkJCQkJCQkkLmVhY2goc2VsZi5vcmlnaW5hbCwgZnVuY3Rpb24oaSkgewoJCQkJCQkJCQlpZihzZWxmLm9yaWdpbmFsW2ldID09PSBpdGVtKSB7CgkJCQkJCQkJCQlzZWxmLm9yaWdpbmFsLnNwbGljZShpLCAxKTsKCQkJCQkJCQkJCXJldHVybiBmYWxzZTsgLy8gRXhpdCAkLmVhY2gKCQkJCQkJCQkJfQoJCQkJCQkJCX0pOwoJCQkJCQkJCXNlbGYucGxheWxpc3Quc3BsaWNlKGluZGV4LCAxKTsKCQkJCQkJCX0gZWxzZSB7CgkJCQkJCQkJc2VsZi5vcmlnaW5hbC5zcGxpY2UoaW5kZXgsIDEpOwoJCQkJCQkJCXNlbGYucGxheWxpc3Quc3BsaWNlKGluZGV4LCAxKTsKCQkJCQkJCX0KCgkJCQkJCQlpZihzZWxmLm9yaWdpbmFsLmxlbmd0aCkgewoJCQkJCQkJCWlmKGluZGV4ID09PSBzZWxmLmN1cnJlbnQpIHsKCQkJCQkJCQkJc2VsZi5jdXJyZW50ID0gKGluZGV4IDwgc2VsZi5vcmlnaW5hbC5sZW5ndGgpID8gc2VsZi5jdXJyZW50IDogc2VsZi5vcmlnaW5hbC5sZW5ndGggLSAxOyAvLyBUbyBjb3BlIHdoZW4gbGFzdCBlbGVtZW50IGJlaW5nIHNlbGVjdGVkIHdoZW4gaXQgd2FzIHJlbW92ZWQKCQkJCQkJCQkJc2VsZi5zZWxlY3Qoc2VsZi5jdXJyZW50KTsKCQkJCQkJCQl9IGVsc2UgaWYoaW5kZXggPCBzZWxmLmN1cnJlbnQpIHsKCQkJCQkJCQkJc2VsZi5jdXJyZW50LS07CgkJCQkJCQkJfQoJCQkJCQkJfSBlbHNlIHsKCQkJCQkJCQkkKHNlbGYuY3NzU2VsZWN0b3IualBsYXllcikualBsYXllcigiY2xlYXJNZWRpYSIpOwoJCQkJCQkJCXNlbGYuY3VycmVudCA9IDA7CgkJCQkJCQkJc2VsZi5zaHVmZmxlZCA9IGZhbHNlOwoJCQkJCQkJCXNlbGYuX3VwZGF0ZUNvbnRyb2xzKCk7CgkJCQkJCQl9CgoJCQkJCQkJc2VsZi5yZW1vdmluZyA9IGZhbHNlOwoJCQkJCQl9KTsKCQkJCQl9CgkJCQkJcmV0dXJuIHRydWU7CgkJCQl9CgkJCX0KCQl9LAoJCXNlbGVjdDogZnVuY3Rpb24oaW5kZXgpIHsKCQkJaW5kZXggPSAoaW5kZXggPCAwKSA/IHRoaXMub3JpZ2luYWwubGVuZ3RoICsgaW5kZXggOiBpbmRleDsgLy8gTmVnYXRpdmUgaW5kZXggcmVsYXRlcyB0byBlbmQgb2YgYXJyYXkuCgkJCWlmKDAgPD0gaW5kZXggJiYgaW5kZXggPCB0aGlzLnBsYXlsaXN0Lmxlbmd0aCkgewoJCQkJdGhpcy5jdXJyZW50ID0gaW5kZXg7CgkJCQl0aGlzLl9oaWdobGlnaHQoaW5kZXgpOwoJCQkJJCh0aGlzLmNzc1NlbGVjdG9yLmpQbGF5ZXIpLmpQbGF5ZXIoInNldE1lZGlhIiwgdGhpcy5wbGF5bGlzdFt0aGlzLmN1cnJlbnRdKTsKCQkJfSBlbHNlIHsKCQkJCXRoaXMuY3VycmVudCA9IDA7CgkJCX0KCQl9LAoJCXBsYXk6IGZ1bmN0aW9uKGluZGV4KSB7CgkJCWluZGV4ID0gKGluZGV4IDwgMCkgPyB0aGlzLm9yaWdpbmFsLmxlbmd0aCArIGluZGV4IDogaW5kZXg7IC8vIE5lZ2F0aXZlIGluZGV4IHJlbGF0ZXMgdG8gZW5kIG9mIGFycmF5LgoJCQlpZigwIDw9IGluZGV4ICYmIGluZGV4IDwgdGhpcy5wbGF5bGlzdC5sZW5ndGgpIHsKCQkJCWlmKHRoaXMucGxheWxpc3QubGVuZ3RoKSB7CgkJCQkJdGhpcy5zZWxlY3QoaW5kZXgpOwoJCQkJCSQodGhpcy5jc3NTZWxlY3Rvci5qUGxheWVyKS5qUGxheWVyKCJwbGF5Iik7CgkJCQl9CgkJCX0gZWxzZSBpZihpbmRleCA9PT0gdW5kZWZpbmVkKSB7CgkJCQkkKHRoaXMuY3NzU2VsZWN0b3IualBsYXllcikualBsYXllcigicGxheSIpOwoJCQl9CgkJfSwKCQlwYXVzZTogZnVuY3Rpb24oKSB7CgkJCSQodGhpcy5jc3NTZWxlY3Rvci5qUGxheWVyKS5qUGxheWVyKCJwYXVzZSIpOwoJCX0sCgkJbmV4dDogZnVuY3Rpb24oKSB7CgkJCXZhciBpbmRleCA9ICh0aGlzLmN1cnJlbnQgKyAxIDwgdGhpcy5wbGF5bGlzdC5sZW5ndGgpID8gdGhpcy5jdXJyZW50ICsgMSA6IDA7CgoJCQlpZih0aGlzLmxvb3ApIHsKCQkJCS8vIFNlZSBpZiB3ZSBuZWVkIHRvIHNodWZmbGUgYmVmb3JlIGxvb3BpbmcgdG8gc3RhcnQsIGFuZCBvbmx5IHNodWZmbGUgaWYgbW9yZSB0aGFuIDEgaXRlbS4KCQkJCWlmKGluZGV4ID09PSAwICYmIHRoaXMuc2h1ZmZsZWQgJiYgdGhpcy5vcHRpb25zLnBsYXlsaXN0T3B0aW9ucy5zaHVmZmxlT25Mb29wICYmIHRoaXMucGxheWxpc3QubGVuZ3RoID4gMSkgewoJCQkJCXRoaXMuc2h1ZmZsZSh0cnVlLCB0cnVlKTsgLy8gcGxheU5vdwoJCQkJfSBlbHNlIHsKCQkJCQl0aGlzLnBsYXkoaW5kZXgpOwoJCQkJfQoJCQl9IGVsc2UgewoJCQkJLy8gVGhlIGluZGV4IHdpbGwgYmUgemVybyBpZiBpdCBqdXN0IGxvb3BlZCByb3VuZAoJCQkJaWYoaW5kZXggPiAwKSB7CgkJCQkJdGhpcy5wbGF5KGluZGV4KTsKCQkJCX0KCQkJfQoJCX0sCgkJcHJldmlvdXM6IGZ1bmN0aW9uKCkgewoJCQl2YXIgaW5kZXggPSAodGhpcy5jdXJyZW50IC0gMSA+PSAwKSA/IHRoaXMuY3VycmVudCAtIDEgOiB0aGlzLnBsYXlsaXN0Lmxlbmd0aCAtIDE7CgoJCQlpZih0aGlzLmxvb3AgJiYgdGhpcy5vcHRpb25zLnBsYXlsaXN0T3B0aW9ucy5sb29wT25QcmV2aW91cyB8fCBpbmRleCA8IHRoaXMucGxheWxpc3QubGVuZ3RoIC0gMSkgewoJCQkJdGhpcy5wbGF5KGluZGV4KTsKCQkJfQoJCX0sCgkJc2h1ZmZsZTogZnVuY3Rpb24oc2h1ZmZsZWQsIHBsYXlOb3cpIHsKCQkJdmFyIHNlbGYgPSB0aGlzOwoKCQkJaWYoc2h1ZmZsZWQgPT09IHVuZGVmaW5lZCkgewoJCQkJc2h1ZmZsZWQgPSAhdGhpcy5zaHVmZmxlZDsKCQkJfQoKCQkJaWYoc2h1ZmZsZWQgfHwgc2h1ZmZsZWQgIT09IHRoaXMuc2h1ZmZsZWQpIHsKCgkJCQkkKHRoaXMuY3NzU2VsZWN0b3IucGxheWxpc3QgKyAiIHVsIikuc2xpZGVVcCh0aGlzLm9wdGlvbnMucGxheWxpc3RPcHRpb25zLnNodWZmbGVUaW1lLCBmdW5jdGlvbigpIHsKCQkJCQlzZWxmLnNodWZmbGVkID0gc2h1ZmZsZWQ7CgkJCQkJaWYoc2h1ZmZsZWQpIHsKCQkJCQkJc2VsZi5wbGF5bGlzdC5zb3J0KGZ1bmN0aW9uKCkgewoJCQkJCQkJcmV0dXJuIDAuNSAtIE1hdGgucmFuZG9tKCk7CgkJCQkJCX0pOwoJCQkJCX0gZWxzZSB7CgkJCQkJCXNlbGYuX29yaWdpbmFsUGxheWxpc3QoKTsKCQkJCQl9CgkJCQkJc2VsZi5fcmVmcmVzaCh0cnVlKTsgLy8gSW5zdGFudAoKCQkJCQlpZihwbGF5Tm93IHx8ICEkKHNlbGYuY3NzU2VsZWN0b3IualBsYXllcikuZGF0YSgialBsYXllciIpLnN0YXR1cy5wYXVzZWQpIHsKCQkJCQkJc2VsZi5wbGF5KDApOwoJCQkJCX0gZWxzZSB7CgkJCQkJCXNlbGYuc2VsZWN0KDApOwoJCQkJCX0KCgkJCQkJJCh0aGlzKS5zbGlkZURvd24oc2VsZi5vcHRpb25zLnBsYXlsaXN0T3B0aW9ucy5zaHVmZmxlVGltZSk7CgkJCQl9KTsKCQkJfQoJCX0sCgkJYmx1cjogZnVuY3Rpb24odGhhdCkgewoJCQlpZigkKHRoaXMuY3NzU2VsZWN0b3IualBsYXllcikualBsYXllcigib3B0aW9uIiwgImF1dG9CbHVyIikpIHsKCQkJCSQodGhhdCkuYmx1cigpOwoJCQl9CgkJfQoJfTsKfSkoalF1ZXJ5KTsK]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/add-on/jplayer.playlist.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohIGpQbGF5ZXJQbGF5bGlzdCBmb3IgalBsYXllciAyLjkuMiB+IChjKSAyMDA5LTIwMTQgSGFwcHl3b3JtIEx0ZCB+IE1JVCBMaWNlbnNlICovCiFmdW5jdGlvbihhLGIpe2pQbGF5ZXJQbGF5bGlzdD1mdW5jdGlvbihiLGMsZCl7dmFyIGU9dGhpczt0aGlzLmN1cnJlbnQ9MCx0aGlzLmxvb3A9ITEsdGhpcy5zaHVmZmxlZD0hMSx0aGlzLnJlbW92aW5nPSExLHRoaXMuY3NzU2VsZWN0b3I9YS5leHRlbmQoe30sdGhpcy5fY3NzU2VsZWN0b3IsYiksdGhpcy5vcHRpb25zPWEuZXh0ZW5kKCEwLHtrZXlCaW5kaW5nczp7bmV4dDp7a2V5OjIyMSxmbjpmdW5jdGlvbigpe2UubmV4dCgpfX0scHJldmlvdXM6e2tleToyMTksZm46ZnVuY3Rpb24oKXtlLnByZXZpb3VzKCl9fSxzaHVmZmxlOntrZXk6ODMsZm46ZnVuY3Rpb24oKXtlLnNodWZmbGUoKX19fSxzdGF0ZUNsYXNzOntzaHVmZmxlZDoianAtc3RhdGUtc2h1ZmZsZWQifX0sdGhpcy5fb3B0aW9ucyxkKSx0aGlzLnBsYXlsaXN0PVtdLHRoaXMub3JpZ2luYWw9W10sdGhpcy5faW5pdFBsYXlsaXN0KGMpLHRoaXMuY3NzU2VsZWN0b3IuZGV0YWlscz10aGlzLmNzc1NlbGVjdG9yLmNzc1NlbGVjdG9yQW5jZXN0b3IrIiAuanAtZGV0YWlscyIsdGhpcy5jc3NTZWxlY3Rvci5wbGF5bGlzdD10aGlzLmNzc1NlbGVjdG9yLmNzc1NlbGVjdG9yQW5jZXN0b3IrIiAuanAtcGxheWxpc3QiLHRoaXMuY3NzU2VsZWN0b3IubmV4dD10aGlzLmNzc1NlbGVjdG9yLmNzc1NlbGVjdG9yQW5jZXN0b3IrIiAuanAtbmV4dCIsdGhpcy5jc3NTZWxlY3Rvci5wcmV2aW91cz10aGlzLmNzc1NlbGVjdG9yLmNzc1NlbGVjdG9yQW5jZXN0b3IrIiAuanAtcHJldmlvdXMiLHRoaXMuY3NzU2VsZWN0b3Iuc2h1ZmZsZT10aGlzLmNzc1NlbGVjdG9yLmNzc1NlbGVjdG9yQW5jZXN0b3IrIiAuanAtc2h1ZmZsZSIsdGhpcy5jc3NTZWxlY3Rvci5zaHVmZmxlT2ZmPXRoaXMuY3NzU2VsZWN0b3IuY3NzU2VsZWN0b3JBbmNlc3RvcisiIC5qcC1zaHVmZmxlLW9mZiIsdGhpcy5vcHRpb25zLmNzc1NlbGVjdG9yQW5jZXN0b3I9dGhpcy5jc3NTZWxlY3Rvci5jc3NTZWxlY3RvckFuY2VzdG9yLHRoaXMub3B0aW9ucy5yZXBlYXQ9ZnVuY3Rpb24oYSl7ZS5sb29wPWEualBsYXllci5vcHRpb25zLmxvb3B9LGEodGhpcy5jc3NTZWxlY3Rvci5qUGxheWVyKS5iaW5kKGEualBsYXllci5ldmVudC5yZWFkeSxmdW5jdGlvbigpe2UuX2luaXQoKX0pLGEodGhpcy5jc3NTZWxlY3Rvci5qUGxheWVyKS5iaW5kKGEualBsYXllci5ldmVudC5lbmRlZCxmdW5jdGlvbigpe2UubmV4dCgpfSksYSh0aGlzLmNzc1NlbGVjdG9yLmpQbGF5ZXIpLmJpbmQoYS5qUGxheWVyLmV2ZW50LnBsYXksZnVuY3Rpb24oKXthKHRoaXMpLmpQbGF5ZXIoInBhdXNlT3RoZXJzIil9KSxhKHRoaXMuY3NzU2VsZWN0b3IualBsYXllcikuYmluZChhLmpQbGF5ZXIuZXZlbnQucmVzaXplLGZ1bmN0aW9uKGIpe2IualBsYXllci5vcHRpb25zLmZ1bGxTY3JlZW4/YShlLmNzc1NlbGVjdG9yLmRldGFpbHMpLnNob3coKTphKGUuY3NzU2VsZWN0b3IuZGV0YWlscykuaGlkZSgpfSksYSh0aGlzLmNzc1NlbGVjdG9yLnByZXZpb3VzKS5jbGljayhmdW5jdGlvbihhKXthLnByZXZlbnREZWZhdWx0KCksZS5wcmV2aW91cygpLGUuYmx1cih0aGlzKX0pLGEodGhpcy5jc3NTZWxlY3Rvci5uZXh0KS5jbGljayhmdW5jdGlvbihhKXthLnByZXZlbnREZWZhdWx0KCksZS5uZXh0KCksZS5ibHVyKHRoaXMpfSksYSh0aGlzLmNzc1NlbGVjdG9yLnNodWZmbGUpLmNsaWNrKGZ1bmN0aW9uKGIpe2IucHJldmVudERlZmF1bHQoKSxlLnNodWZmbGUoZS5zaHVmZmxlZCYmYShlLmNzc1NlbGVjdG9yLmpQbGF5ZXIpLmpQbGF5ZXIoIm9wdGlvbiIsInVzZVN0YXRlQ2xhc3NTa2luIik/ITE6ITApLGUuYmx1cih0aGlzKX0pLGEodGhpcy5jc3NTZWxlY3Rvci5zaHVmZmxlT2ZmKS5jbGljayhmdW5jdGlvbihhKXthLnByZXZlbnREZWZhdWx0KCksZS5zaHVmZmxlKCExKSxlLmJsdXIodGhpcyl9KS5oaWRlKCksdGhpcy5vcHRpb25zLmZ1bGxTY3JlZW58fGEodGhpcy5jc3NTZWxlY3Rvci5kZXRhaWxzKS5oaWRlKCksYSh0aGlzLmNzc1NlbGVjdG9yLnBsYXlsaXN0KyIgdWwiKS5lbXB0eSgpLHRoaXMuX2NyZWF0ZUl0ZW1IYW5kbGVycygpLGEodGhpcy5jc3NTZWxlY3Rvci5qUGxheWVyKS5qUGxheWVyKHRoaXMub3B0aW9ucyl9LGpQbGF5ZXJQbGF5bGlzdC5wcm90b3R5cGU9e19jc3NTZWxlY3Rvcjp7alBsYXllcjoiI2pxdWVyeV9qcGxheWVyXzEiLGNzc1NlbGVjdG9yQW5jZXN0b3I6IiNqcF9jb250YWluZXJfMSJ9LF9vcHRpb25zOntwbGF5bGlzdE9wdGlvbnM6e2F1dG9QbGF5OiExLGxvb3BPblByZXZpb3VzOiExLHNodWZmbGVPbkxvb3A6ITAsZW5hYmxlUmVtb3ZlQ29udHJvbHM6ITEsZGlzcGxheVRpbWU6InNsb3ciLGFkZFRpbWU6ImZhc3QiLHJlbW92ZVRpbWU6ImZhc3QiLHNodWZmbGVUaW1lOiJzbG93IixpdGVtQ2xhc3M6ImpwLXBsYXlsaXN0LWl0ZW0iLGZyZWVHcm91cENsYXNzOiJqcC1mcmVlLW1lZGlhIixmcmVlSXRlbUNsYXNzOiJqcC1wbGF5bGlzdC1pdGVtLWZyZWUiLHJlbW92ZUl0ZW1DbGFzczoianAtcGxheWxpc3QtaXRlbS1yZW1vdmUifX0sb3B0aW9uOmZ1bmN0aW9uKGEsYyl7aWYoYz09PWIpcmV0dXJuIHRoaXMub3B0aW9ucy5wbGF5bGlzdE9wdGlvbnNbYV07c3dpdGNoKHRoaXMub3B0aW9ucy5wbGF5bGlzdE9wdGlvbnNbYV09YyxhKXtjYXNlImVuYWJsZVJlbW92ZUNvbnRyb2xzIjp0aGlzLl91cGRhdGVDb250cm9scygpO2JyZWFrO2Nhc2UiaXRlbUNsYXNzIjpjYXNlImZyZWVHcm91cENsYXNzIjpjYXNlImZyZWVJdGVtQ2xhc3MiOmNhc2UicmVtb3ZlSXRlbUNsYXNzIjp0aGlzLl9yZWZyZXNoKCEwKSx0aGlzLl9jcmVhdGVJdGVtSGFuZGxlcnMoKX1yZXR1cm4gdGhpc30sX2luaXQ6ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMuX3JlZnJlc2goZnVuY3Rpb24oKXthLm9wdGlvbnMucGxheWxpc3RPcHRpb25zLmF1dG9QbGF5P2EucGxheShhLmN1cnJlbnQpOmEuc2VsZWN0KGEuY3VycmVudCl9KX0sX2luaXRQbGF5bGlzdDpmdW5jdGlvbihiKXt0aGlzLmN1cnJlbnQ9MCx0aGlzLnNodWZmbGVkPSExLHRoaXMucmVtb3Zpbmc9ITEsdGhpcy5vcmlnaW5hbD1hLmV4dGVuZCghMCxbXSxiKSx0aGlzLl9vcmlnaW5hbFBsYXlsaXN0KCl9LF9vcmlnaW5hbFBsYXlsaXN0OmZ1bmN0aW9uKCl7dmFyIGI9dGhpczt0aGlzLnBsYXlsaXN0PVtdLGEuZWFjaCh0aGlzLm9yaWdpbmFsLGZ1bmN0aW9uKGEpe2IucGxheWxpc3RbYV09Yi5vcmlnaW5hbFthXX0pfSxfcmVmcmVzaDpmdW5jdGlvbihiKXt2YXIgYz10aGlzO2lmKGImJiFhLmlzRnVuY3Rpb24oYikpYSh0aGlzLmNzc1NlbGVjdG9yLnBsYXlsaXN0KyIgdWwiKS5lbXB0eSgpLGEuZWFjaCh0aGlzLnBsYXlsaXN0LGZ1bmN0aW9uKGIpe2EoYy5jc3NTZWxlY3Rvci5wbGF5bGlzdCsiIHVsIikuYXBwZW5kKGMuX2NyZWF0ZUxpc3RJdGVtKGMucGxheWxpc3RbYl0pKX0pLHRoaXMuX3VwZGF0ZUNvbnRyb2xzKCk7ZWxzZXt2YXIgZD1hKHRoaXMuY3NzU2VsZWN0b3IucGxheWxpc3QrIiB1bCIpLmNoaWxkcmVuKCkubGVuZ3RoP3RoaXMub3B0aW9ucy5wbGF5bGlzdE9wdGlvbnMuZGlzcGxheVRpbWU6MDthKHRoaXMuY3NzU2VsZWN0b3IucGxheWxpc3QrIiB1bCIpLnNsaWRlVXAoZCxmdW5jdGlvbigpe3ZhciBkPWEodGhpcyk7YSh0aGlzKS5lbXB0eSgpLGEuZWFjaChjLnBsYXlsaXN0LGZ1bmN0aW9uKGEpe2QuYXBwZW5kKGMuX2NyZWF0ZUxpc3RJdGVtKGMucGxheWxpc3RbYV0pKX0pLGMuX3VwZGF0ZUNvbnRyb2xzKCksYS5pc0Z1bmN0aW9uKGIpJiZiKCksYy5wbGF5bGlzdC5sZW5ndGg/YSh0aGlzKS5zbGlkZURvd24oYy5vcHRpb25zLnBsYXlsaXN0T3B0aW9ucy5kaXNwbGF5VGltZSk6YSh0aGlzKS5zaG93KCl9KX19LF9jcmVhdGVMaXN0SXRlbTpmdW5jdGlvbihiKXt2YXIgYz10aGlzLGQ9IjxsaT48ZGl2PiI7aWYoZCs9IjxhIGhyZWY9J2phdmFzY3JpcHQ6OycgY2xhc3M9JyIrdGhpcy5vcHRpb25zLnBsYXlsaXN0T3B0aW9ucy5yZW1vdmVJdGVtQ2xhc3MrIic+JnRpbWVzOzwvYT4iLGIuZnJlZSl7dmFyIGU9ITA7ZCs9IjxzcGFuIGNsYXNzPSciK3RoaXMub3B0aW9ucy5wbGF5bGlzdE9wdGlvbnMuZnJlZUdyb3VwQ2xhc3MrIic+KCIsYS5lYWNoKGIsZnVuY3Rpb24oYixmKXthLmpQbGF5ZXIucHJvdG90eXBlLmZvcm1hdFtiXSYmKGU/ZT0hMTpkKz0iIHwgIixkKz0iPGEgY2xhc3M9JyIrYy5vcHRpb25zLnBsYXlsaXN0T3B0aW9ucy5mcmVlSXRlbUNsYXNzKyInIGhyZWY9JyIrZisiJyB0YWJpbmRleD0nLTEnPiIrYisiPC9hPiIpfSksZCs9Iik8L3NwYW4+In1yZXR1cm4gZCs9IjxhIGhyZWY9J2phdmFzY3JpcHQ6OycgY2xhc3M9JyIrdGhpcy5vcHRpb25zLnBsYXlsaXN0T3B0aW9ucy5pdGVtQ2xhc3MrIicgdGFiaW5kZXg9JzAnPiIrYi50aXRsZSsoYi5hcnRpc3Q/IiA8c3BhbiBjbGFzcz0nanAtYXJ0aXN0Jz5ieSAiK2IuYXJ0aXN0KyI8L3NwYW4+IjoiIikrIjwvYT4iLGQrPSI8L2Rpdj48L2xpPiJ9LF9jcmVhdGVJdGVtSGFuZGxlcnM6ZnVuY3Rpb24oKXt2YXIgYj10aGlzO2EodGhpcy5jc3NTZWxlY3Rvci5wbGF5bGlzdCkub2ZmKCJjbGljayIsImEuIit0aGlzLm9wdGlvbnMucGxheWxpc3RPcHRpb25zLml0ZW1DbGFzcykub24oImNsaWNrIiwiYS4iK3RoaXMub3B0aW9ucy5wbGF5bGlzdE9wdGlvbnMuaXRlbUNsYXNzLGZ1bmN0aW9uKGMpe2MucHJldmVudERlZmF1bHQoKTt2YXIgZD1hKHRoaXMpLnBhcmVudCgpLnBhcmVudCgpLmluZGV4KCk7Yi5jdXJyZW50IT09ZD9iLnBsYXkoZCk6YShiLmNzc1NlbGVjdG9yLmpQbGF5ZXIpLmpQbGF5ZXIoInBsYXkiKSxiLmJsdXIodGhpcyl9KSxhKHRoaXMuY3NzU2VsZWN0b3IucGxheWxpc3QpLm9mZigiY2xpY2siLCJhLiIrdGhpcy5vcHRpb25zLnBsYXlsaXN0T3B0aW9ucy5mcmVlSXRlbUNsYXNzKS5vbigiY2xpY2siLCJhLiIrdGhpcy5vcHRpb25zLnBsYXlsaXN0T3B0aW9ucy5mcmVlSXRlbUNsYXNzLGZ1bmN0aW9uKGMpe2MucHJldmVudERlZmF1bHQoKSxhKHRoaXMpLnBhcmVudCgpLnBhcmVudCgpLmZpbmQoIi4iK2Iub3B0aW9ucy5wbGF5bGlzdE9wdGlvbnMuaXRlbUNsYXNzKS5jbGljaygpLGIuYmx1cih0aGlzKX0pLGEodGhpcy5jc3NTZWxlY3Rvci5wbGF5bGlzdCkub2ZmKCJjbGljayIsImEuIit0aGlzLm9wdGlvbnMucGxheWxpc3RPcHRpb25zLnJlbW92ZUl0ZW1DbGFzcykub24oImNsaWNrIiwiYS4iK3RoaXMub3B0aW9ucy5wbGF5bGlzdE9wdGlvbnMucmVtb3ZlSXRlbUNsYXNzLGZ1bmN0aW9uKGMpe2MucHJldmVudERlZmF1bHQoKTt2YXIgZD1hKHRoaXMpLnBhcmVudCgpLnBhcmVudCgpLmluZGV4KCk7Yi5yZW1vdmUoZCksYi5ibHVyKHRoaXMpfSl9LF91cGRhdGVDb250cm9sczpmdW5jdGlvbigpe3RoaXMub3B0aW9ucy5wbGF5bGlzdE9wdGlvbnMuZW5hYmxlUmVtb3ZlQ29udHJvbHM/YSh0aGlzLmNzc1NlbGVjdG9yLnBsYXlsaXN0KyIgLiIrdGhpcy5vcHRpb25zLnBsYXlsaXN0T3B0aW9ucy5yZW1vdmVJdGVtQ2xhc3MpLnNob3coKTphKHRoaXMuY3NzU2VsZWN0b3IucGxheWxpc3QrIiAuIit0aGlzLm9wdGlvbnMucGxheWxpc3RPcHRpb25zLnJlbW92ZUl0ZW1DbGFzcykuaGlkZSgpLHRoaXMuc2h1ZmZsZWQ/YSh0aGlzLmNzc1NlbGVjdG9yLmpQbGF5ZXIpLmpQbGF5ZXIoImFkZFN0YXRlQ2xhc3MiLCJzaHVmZmxlZCIpOmEodGhpcy5jc3NTZWxlY3Rvci5qUGxheWVyKS5qUGxheWVyKCJyZW1vdmVTdGF0ZUNsYXNzIiwic2h1ZmZsZWQiKSxhKHRoaXMuY3NzU2VsZWN0b3Iuc2h1ZmZsZSkubGVuZ3RoJiZhKHRoaXMuY3NzU2VsZWN0b3Iuc2h1ZmZsZU9mZikubGVuZ3RoJiYodGhpcy5zaHVmZmxlZD8oYSh0aGlzLmNzc1NlbGVjdG9yLnNodWZmbGVPZmYpLnNob3coKSxhKHRoaXMuY3NzU2VsZWN0b3Iuc2h1ZmZsZSkuaGlkZSgpKTooYSh0aGlzLmNzc1NlbGVjdG9yLnNodWZmbGVPZmYpLmhpZGUoKSxhKHRoaXMuY3NzU2VsZWN0b3Iuc2h1ZmZsZSkuc2hvdygpKSl9LF9oaWdobGlnaHQ6ZnVuY3Rpb24oYyl7dGhpcy5wbGF5bGlzdC5sZW5ndGgmJmMhPT1iJiYoYSh0aGlzLmNzc1NlbGVjdG9yLnBsYXlsaXN0KyIgLmpwLXBsYXlsaXN0LWN1cnJlbnQiKS5yZW1vdmVDbGFzcygianAtcGxheWxpc3QtY3VycmVudCIpLGEodGhpcy5jc3NTZWxlY3Rvci5wbGF5bGlzdCsiIGxpOm50aC1jaGlsZCgiKyhjKzEpKyIpIikuYWRkQ2xhc3MoImpwLXBsYXlsaXN0LWN1cnJlbnQiKS5maW5kKCIuanAtcGxheWxpc3QtaXRlbSIpLmFkZENsYXNzKCJqcC1wbGF5bGlzdC1jdXJyZW50IikpfSxzZXRQbGF5bGlzdDpmdW5jdGlvbihhKXt0aGlzLl9pbml0UGxheWxpc3QoYSksdGhpcy5faW5pdCgpfSxhZGQ6ZnVuY3Rpb24oYixjKXthKHRoaXMuY3NzU2VsZWN0b3IucGxheWxpc3QrIiB1bCIpLmFwcGVuZCh0aGlzLl9jcmVhdGVMaXN0SXRlbShiKSkuZmluZCgibGk6bGFzdC1jaGlsZCIpLmhpZGUoKS5zbGlkZURvd24odGhpcy5vcHRpb25zLnBsYXlsaXN0T3B0aW9ucy5hZGRUaW1lKSx0aGlzLl91cGRhdGVDb250cm9scygpLHRoaXMub3JpZ2luYWwucHVzaChiKSx0aGlzLnBsYXlsaXN0LnB1c2goYiksYz90aGlzLnBsYXkodGhpcy5wbGF5bGlzdC5sZW5ndGgtMSk6MT09PXRoaXMub3JpZ2luYWwubGVuZ3RoJiZ0aGlzLnNlbGVjdCgwKX0scmVtb3ZlOmZ1bmN0aW9uKGMpe3ZhciBkPXRoaXM7cmV0dXJuIGM9PT1iPyh0aGlzLl9pbml0UGxheWxpc3QoW10pLHRoaXMuX3JlZnJlc2goZnVuY3Rpb24oKXthKGQuY3NzU2VsZWN0b3IualBsYXllcikualBsYXllcigiY2xlYXJNZWRpYSIpfSksITApOnRoaXMucmVtb3Zpbmc/ITE6KGM9MD5jP2Qub3JpZ2luYWwubGVuZ3RoK2M6YyxjPj0wJiZjPHRoaXMucGxheWxpc3QubGVuZ3RoJiYodGhpcy5yZW1vdmluZz0hMCxhKHRoaXMuY3NzU2VsZWN0b3IucGxheWxpc3QrIiBsaTpudGgtY2hpbGQoIisoYysxKSsiKSIpLnNsaWRlVXAodGhpcy5vcHRpb25zLnBsYXlsaXN0T3B0aW9ucy5yZW1vdmVUaW1lLGZ1bmN0aW9uKCl7aWYoYSh0aGlzKS5yZW1vdmUoKSxkLnNodWZmbGVkKXt2YXIgYj1kLnBsYXlsaXN0W2NdO2EuZWFjaChkLm9yaWdpbmFsLGZ1bmN0aW9uKGEpe3JldHVybiBkLm9yaWdpbmFsW2FdPT09Yj8oZC5vcmlnaW5hbC5zcGxpY2UoYSwxKSwhMSk6dm9pZCAwfSksZC5wbGF5bGlzdC5zcGxpY2UoYywxKX1lbHNlIGQub3JpZ2luYWwuc3BsaWNlKGMsMSksZC5wbGF5bGlzdC5zcGxpY2UoYywxKTtkLm9yaWdpbmFsLmxlbmd0aD9jPT09ZC5jdXJyZW50PyhkLmN1cnJlbnQ9YzxkLm9yaWdpbmFsLmxlbmd0aD9kLmN1cnJlbnQ6ZC5vcmlnaW5hbC5sZW5ndGgtMSxkLnNlbGVjdChkLmN1cnJlbnQpKTpjPGQuY3VycmVudCYmZC5jdXJyZW50LS06KGEoZC5jc3NTZWxlY3Rvci5qUGxheWVyKS5qUGxheWVyKCJjbGVhck1lZGlhIiksZC5jdXJyZW50PTAsZC5zaHVmZmxlZD0hMSxkLl91cGRhdGVDb250cm9scygpKSxkLnJlbW92aW5nPSExfSkpLCEwKX0sc2VsZWN0OmZ1bmN0aW9uKGIpe2I9MD5iP3RoaXMub3JpZ2luYWwubGVuZ3RoK2I6YixiPj0wJiZiPHRoaXMucGxheWxpc3QubGVuZ3RoPyh0aGlzLmN1cnJlbnQ9Yix0aGlzLl9oaWdobGlnaHQoYiksYSh0aGlzLmNzc1NlbGVjdG9yLmpQbGF5ZXIpLmpQbGF5ZXIoInNldE1lZGlhIix0aGlzLnBsYXlsaXN0W3RoaXMuY3VycmVudF0pKTp0aGlzLmN1cnJlbnQ9MH0scGxheTpmdW5jdGlvbihjKXtjPTA+Yz90aGlzLm9yaWdpbmFsLmxlbmd0aCtjOmMsYz49MCYmYzx0aGlzLnBsYXlsaXN0Lmxlbmd0aD90aGlzLnBsYXlsaXN0Lmxlbmd0aCYmKHRoaXMuc2VsZWN0KGMpLGEodGhpcy5jc3NTZWxlY3Rvci5qUGxheWVyKS5qUGxheWVyKCJwbGF5IikpOmM9PT1iJiZhKHRoaXMuY3NzU2VsZWN0b3IualBsYXllcikualBsYXllcigicGxheSIpfSxwYXVzZTpmdW5jdGlvbigpe2EodGhpcy5jc3NTZWxlY3Rvci5qUGxheWVyKS5qUGxheWVyKCJwYXVzZSIpfSxuZXh0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5jdXJyZW50KzE8dGhpcy5wbGF5bGlzdC5sZW5ndGg/dGhpcy5jdXJyZW50KzE6MDt0aGlzLmxvb3A/MD09PWEmJnRoaXMuc2h1ZmZsZWQmJnRoaXMub3B0aW9ucy5wbGF5bGlzdE9wdGlvbnMuc2h1ZmZsZU9uTG9vcCYmdGhpcy5wbGF5bGlzdC5sZW5ndGg+MT90aGlzLnNodWZmbGUoITAsITApOnRoaXMucGxheShhKTphPjAmJnRoaXMucGxheShhKX0scHJldmlvdXM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmN1cnJlbnQtMT49MD90aGlzLmN1cnJlbnQtMTp0aGlzLnBsYXlsaXN0Lmxlbmd0aC0xOyh0aGlzLmxvb3AmJnRoaXMub3B0aW9ucy5wbGF5bGlzdE9wdGlvbnMubG9vcE9uUHJldmlvdXN8fGE8dGhpcy5wbGF5bGlzdC5sZW5ndGgtMSkmJnRoaXMucGxheShhKX0sc2h1ZmZsZTpmdW5jdGlvbihjLGQpe3ZhciBlPXRoaXM7Yz09PWImJihjPSF0aGlzLnNodWZmbGVkKSwoY3x8YyE9PXRoaXMuc2h1ZmZsZWQpJiZhKHRoaXMuY3NzU2VsZWN0b3IucGxheWxpc3QrIiB1bCIpLnNsaWRlVXAodGhpcy5vcHRpb25zLnBsYXlsaXN0T3B0aW9ucy5zaHVmZmxlVGltZSxmdW5jdGlvbigpe2Uuc2h1ZmZsZWQ9YyxjP2UucGxheWxpc3Quc29ydChmdW5jdGlvbigpe3JldHVybi41LU1hdGgucmFuZG9tKCl9KTplLl9vcmlnaW5hbFBsYXlsaXN0KCksZS5fcmVmcmVzaCghMCksZHx8IWEoZS5jc3NTZWxlY3Rvci5qUGxheWVyKS5kYXRhKCJqUGxheWVyIikuc3RhdHVzLnBhdXNlZD9lLnBsYXkoMCk6ZS5zZWxlY3QoMCksYSh0aGlzKS5zbGlkZURvd24oZS5vcHRpb25zLnBsYXlsaXN0T3B0aW9ucy5zaHVmZmxlVGltZSl9KX0sYmx1cjpmdW5jdGlvbihiKXthKHRoaXMuY3NzU2VsZWN0b3IualBsYXllcikualBsYXllcigib3B0aW9uIiwiYXV0b0JsdXIiKSYmYShiKS5ibHVyKCl9fX0oalF1ZXJ5KTs=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/add-on/jquery.jplayer.inspector.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogalBsYXllckluc3BlY3RvciBQbHVnaW4gZm9yIGpQbGF5ZXIgUGx1Z2luIGZvciBqUXVlcnkgSmF2YVNjcmlwdCBMaWJyYXJ5CiAqIGh0dHA6Ly93d3cuanBsYXllci5vcmcKICoKICogQ29weXJpZ2h0IChjKSAyMDA5IC0gMjAxNCBIYXBweXdvcm0gTHRkCiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4KICogaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQKICoKICogQXV0aG9yOiBNYXJrIEogUGFuYWdoaXN0b24KICogVmVyc2lvbjogMS4wLjUKICogRGF0ZTogMXN0IEFwcmlsIDIwMTQKICoKICogRm9yIHVzZSB3aXRoIGpQbGF5ZXIgVmVyc2lvbjogMi42LjArCiAqCiAqIE5vdGU6IERlY2xhcmUgaW5zcGVjdG9yIGluc3RhbmNlcyBhZnRlciBqUGxheWVyIGluc3RhbmNlcy4gaWUuLCBPdGhlcndpc2UgdGhlIGpQbGF5ZXIgaW5zdGFuY2UgaXMgbm9uc2Vuc2UuCiAqLwoKKGZ1bmN0aW9uKCQsIHVuZGVmaW5lZCkgewoJJC5qUGxheWVySW5zcGVjdG9yID0ge307CgkkLmpQbGF5ZXJJbnNwZWN0b3IuaSA9IDA7CgkkLmpQbGF5ZXJJbnNwZWN0b3IuZGVmYXVsdHMgPSB7CgkJalBsYXllcjogdW5kZWZpbmVkLCAvLyBUaGUgalF1ZXJ5IHNlbGVjdG9yIG9mIHRoZSBqUGxheWVyIGluc3RhbmNlIHRvIGluc3BlY3QuCgkJaWRQcmVmaXg6ICJqcGxheWVyX2luc3BlY3Rvcl8iLAoJCXZpc2libGU6IGZhbHNlCgl9OwoJCgl2YXIgbWV0aG9kcyA9IHsKCQlpbml0OiBmdW5jdGlvbihvcHRpb25zKSB7CgkJCXZhciBzZWxmID0gdGhpczsKCQkJdmFyICR0aGlzID0gJCh0aGlzKTsKCQkJCgkJCXZhciBjb25maWcgPSAkLmV4dGVuZCh7fSwgJC5qUGxheWVySW5zcGVjdG9yLmRlZmF1bHRzLCBvcHRpb25zKTsKCQkJJCh0aGlzKS5kYXRhKCJqUGxheWVySW5zcGVjdG9yIiwgY29uZmlnKTsKCgkJCWNvbmZpZy5pZCA9ICQodGhpcykuYXR0cigiaWQiKTsKCQkJY29uZmlnLmpQbGF5ZXJJZCA9IGNvbmZpZy5qUGxheWVyLmF0dHIoImlkIik7CgoJCQljb25maWcud2luZG93SWQgPSBjb25maWcuaWRQcmVmaXggKyAid2luZG93XyIgKyAkLmpQbGF5ZXJJbnNwZWN0b3IuaTsKCQkJY29uZmlnLnN0YXR1c0lkID0gY29uZmlnLmlkUHJlZml4ICsgInN0YXR1c18iICsgJC5qUGxheWVySW5zcGVjdG9yLmk7CgkJCWNvbmZpZy5jb25maWdJZCA9IGNvbmZpZy5pZFByZWZpeCArICJjb25maWdfIiArICQualBsYXllckluc3BlY3Rvci5pOwoJCQljb25maWcudG9nZ2xlSWQgPSBjb25maWcuaWRQcmVmaXggKyAidG9nZ2xlXyIgKyAkLmpQbGF5ZXJJbnNwZWN0b3IuaTsKCQkJY29uZmlnLmV2ZW50UmVzZXRJZCA9IGNvbmZpZy5pZFByZWZpeCArICJldmVudF9yZXNldF8iICsgJC5qUGxheWVySW5zcGVjdG9yLmk7CgkJCWNvbmZpZy51cGRhdGVJZCA9IGNvbmZpZy5pZFByZWZpeCArICJ1cGRhdGVfIiArICQualBsYXllckluc3BlY3Rvci5pOwoJCQljb25maWcuZXZlbnRXaW5kb3dJZCA9IGNvbmZpZy5pZFByZWZpeCArICJldmVudF93aW5kb3dfIiArICQualBsYXllckluc3BlY3Rvci5pOwoJCQkKCQkJY29uZmlnLmV2ZW50SWQgPSB7fTsKCQkJY29uZmlnLmV2ZW50SnEgPSB7fTsKCQkJY29uZmlnLmV2ZW50VGltZW91dCA9IHt9OwoJCQljb25maWcuZXZlbnRPY2N1cnJlbmNlID0ge307CgkJCQoJCQkkLmVhY2goJC5qUGxheWVyLmV2ZW50LCBmdW5jdGlvbihldmVudE5hbWUsZXZlbnRUeXBlKSB7CgkJCQljb25maWcuZXZlbnRJZFtldmVudFR5cGVdID0gY29uZmlnLmlkUHJlZml4ICsgImV2ZW50XyIgKyBldmVudE5hbWUgKyAiXyIgKyAkLmpQbGF5ZXJJbnNwZWN0b3IuaTsKCQkJCWNvbmZpZy5ldmVudE9jY3VycmVuY2VbZXZlbnRUeXBlXSA9IDA7CgkJCX0pOwoJCQkKCQkJdmFyIHN0cnVjdHVyZSA9IAoJCQkJJzxwPjxhIGhyZWY9IiMiIGlkPSInICsgY29uZmlnLnRvZ2dsZUlkICsgJyI+JyArIChjb25maWcudmlzaWJsZSA/ICJIaWRlIiA6ICJTaG93IikgKyAnPC9hPiBqUGxheWVyIEluc3BlY3RvcjwvcD4nIAoJCQkJKyAnPGRpdiBpZD0iJyArIGNvbmZpZy53aW5kb3dJZCArICciPicKCQkJCQkrICc8ZGl2IGlkPSInICsgY29uZmlnLnN0YXR1c0lkICsgJyI+PC9kaXY+JwoJCQkJCSsgJzxkaXYgaWQ9IicgKyBjb25maWcuZXZlbnRXaW5kb3dJZCArICciIHN0eWxlPSJwYWRkaW5nOjVweCA1cHggMCA1cHg7YmFja2dyb3VuZC1jb2xvcjojZWVlO2JvcmRlcjoxcHggZG90dGVkICMwMDA7Ij4nCgkJCQkJCSsgJzxwIHN0eWxlPSJtYXJnaW46MCAwIDEwcHggMDsiPjxzdHJvbmc+alBsYXllciBldmVudHMgdGhhdCBoYXZlIG9jY3VycmVkIG92ZXIgdGhlIHBhc3QgMSBzZWNvbmQ6PC9zdHJvbmc+JwoJCQkJCQkrICc8YnIgLz4oQmFja2dyb3VuZHM6IDxzcGFuIHN0eWxlPSJwYWRkaW5nOjAgNXB4O2JhY2tncm91bmQtY29sb3I6I2VlZTtib3JkZXI6MXB4IGRvdHRlZCAjMDAwOyI+TmV2ZXIgb2NjdXJyZWQ8L3NwYW4+IDxzcGFuIHN0eWxlPSJwYWRkaW5nOjAgNXB4O2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXI6MXB4IGRvdHRlZCAjMDAwOyI+T2NjdXJyZWQgYmVmb3JlPC9zcGFuPiA8c3BhbiBzdHlsZT0icGFkZGluZzowIDVweDtiYWNrZ3JvdW5kLWNvbG9yOiM5Zjk7Ym9yZGVyOjFweCBkb3R0ZWQgIzAwMDsiPk9jY3VycmVkPC9zcGFuPiA8c3BhbiBzdHlsZT0icGFkZGluZzowIDVweDtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk7Ym9yZGVyOjFweCBkb3R0ZWQgIzAwMDsiPk11bHRpcGxlIG9jY3VycmVuY2VzPC9zcGFuPiA8YSBocmVmPSIjIiBpZD0iJyArIGNvbmZpZy5ldmVudFJlc2V0SWQgKyAnIj5yZXNldDwvYT4pPC9wPic7CgkJCQoJCQkvLyBNSlA6IFdvdWxkIHVzZSB0aGUgbmV4dCAzIGxpbmVzIGZvciBlYXNlLCBidXQgdGhlIGV2ZW50cyBhcmUganVzdCBzbGFwcGVkIG9uIHRoZSBwYWdlLgoJCQkvLyAkLmVhY2goJC5qUGxheWVyLmV2ZW50LCBmdW5jdGlvbihldmVudE5hbWUsZXZlbnRUeXBlKSB7CgkJCS8vIAlzdHJ1Y3R1cmUgKz0gJzxkaXYgaWQ9IicgKyBjb25maWcuZXZlbnRJZFtldmVudFR5cGVdICsgJyIgc3R5bGU9ImZsb2F0OmxlZnQ7Ij4nICsgZXZlbnROYW1lICsgJzwvZGl2Pic7CgkJCS8vIH0pOwoJCQkKCQkJdmFyIGV2ZW50U3R5bGUgPSAiZmxvYXQ6bGVmdDttYXJnaW46MCA1cHggNXB4IDA7cGFkZGluZzowIDVweDtib3JkZXI6MXB4IGRvdHRlZCAjMDAwOyI7CgkJCS8vIE1KUDogRG9pbmcgaXQgbG9uZ2hhbmQgc28gb3JkZXIgYW5kIGxheW91dCBlYXNpZXIgdG8gY29udHJvbC4KCQkJc3RydWN0dXJlICs9CgkJCQkJCSc8ZGl2IGlkPSInICsgY29uZmlnLmV2ZW50SWRbJC5qUGxheWVyLmV2ZW50LnJlYWR5XSArICciIHN0eWxlPSInICsgZXZlbnRTdHlsZSArICciPjwvZGl2PicKCQkJCQkJKyAnPGRpdiBpZD0iJyArIGNvbmZpZy5ldmVudElkWyQualBsYXllci5ldmVudC5zZXRtZWRpYV0gKyAnIiBzdHlsZT0iJyArIGV2ZW50U3R5bGUgKyAnIj48L2Rpdj4nCgkJCQkJCSsgJzxkaXYgaWQ9IicgKyBjb25maWcuZXZlbnRJZFskLmpQbGF5ZXIuZXZlbnQuZmxhc2hyZXNldF0gKyAnIiBzdHlsZT0iJyArIGV2ZW50U3R5bGUgKyAnIj48L2Rpdj4nCgkJCQkJCSsgJzxkaXYgaWQ9IicgKyBjb25maWcuZXZlbnRJZFskLmpQbGF5ZXIuZXZlbnQucmVzaXplXSArICciIHN0eWxlPSInICsgZXZlbnRTdHlsZSArICciPjwvZGl2PicKCQkJCQkJKyAnPGRpdiBpZD0iJyArIGNvbmZpZy5ldmVudElkWyQualBsYXllci5ldmVudC5yZXBlYXRdICsgJyIgc3R5bGU9IicgKyBldmVudFN0eWxlICsgJyI+PC9kaXY+JwoJCQkJCQkrICc8ZGl2IGlkPSInICsgY29uZmlnLmV2ZW50SWRbJC5qUGxheWVyLmV2ZW50LmNsaWNrXSArICciIHN0eWxlPSInICsgZXZlbnRTdHlsZSArICciPjwvZGl2PicKCQkJCQkJKyAnPGRpdiBpZD0iJyArIGNvbmZpZy5ldmVudElkWyQualBsYXllci5ldmVudC53YXJuaW5nXSArICciIHN0eWxlPSInICsgZXZlbnRTdHlsZSArICciPjwvZGl2PicKCgkJCQkJCSsgJzxkaXYgaWQ9IicgKyBjb25maWcuZXZlbnRJZFskLmpQbGF5ZXIuZXZlbnQubG9hZHN0YXJ0XSArICciIHN0eWxlPSJjbGVhcjpsZWZ0OycgKyBldmVudFN0eWxlICsgJyI+PC9kaXY+JwoJCQkJCQkrICc8ZGl2IGlkPSInICsgY29uZmlnLmV2ZW50SWRbJC5qUGxheWVyLmV2ZW50LnByb2dyZXNzXSArICciIHN0eWxlPSInICsgZXZlbnRTdHlsZSArICciPjwvZGl2PicKCQkJCQkJKyAnPGRpdiBpZD0iJyArIGNvbmZpZy5ldmVudElkWyQualBsYXllci5ldmVudC50aW1ldXBkYXRlXSArICciIHN0eWxlPSInICsgZXZlbnRTdHlsZSArICciPjwvZGl2PicKCQkJCQkJKyAnPGRpdiBpZD0iJyArIGNvbmZpZy5ldmVudElkWyQualBsYXllci5ldmVudC52b2x1bWVjaGFuZ2VdICsgJyIgc3R5bGU9IicgKyBldmVudFN0eWxlICsgJyI+PC9kaXY+JwoJCQkJCQkrICc8ZGl2IGlkPSInICsgY29uZmlnLmV2ZW50SWRbJC5qUGxheWVyLmV2ZW50LmVycm9yXSArICciIHN0eWxlPSInICsgZXZlbnRTdHlsZSArICciPjwvZGl2PicKCgkJCQkJCSsgJzxkaXYgaWQ9IicgKyBjb25maWcuZXZlbnRJZFskLmpQbGF5ZXIuZXZlbnQucGxheV0gKyAnIiBzdHlsZT0iY2xlYXI6bGVmdDsnICsgZXZlbnRTdHlsZSArICciPjwvZGl2PicKCQkJCQkJKyAnPGRpdiBpZD0iJyArIGNvbmZpZy5ldmVudElkWyQualBsYXllci5ldmVudC5wYXVzZV0gKyAnIiBzdHlsZT0iJyArIGV2ZW50U3R5bGUgKyAnIj48L2Rpdj4nCgkJCQkJCSsgJzxkaXYgaWQ9IicgKyBjb25maWcuZXZlbnRJZFskLmpQbGF5ZXIuZXZlbnQud2FpdGluZ10gKyAnIiBzdHlsZT0iJyArIGV2ZW50U3R5bGUgKyAnIj48L2Rpdj4nCgkJCQkJCSsgJzxkaXYgaWQ9IicgKyBjb25maWcuZXZlbnRJZFskLmpQbGF5ZXIuZXZlbnQucGxheWluZ10gKyAnIiBzdHlsZT0iJyArIGV2ZW50U3R5bGUgKyAnIj48L2Rpdj4nCgkJCQkJCSsgJzxkaXYgaWQ9IicgKyBjb25maWcuZXZlbnRJZFskLmpQbGF5ZXIuZXZlbnQuc2Vla2luZ10gKyAnIiBzdHlsZT0iJyArIGV2ZW50U3R5bGUgKyAnIj48L2Rpdj4nCgkJCQkJCSsgJzxkaXYgaWQ9IicgKyBjb25maWcuZXZlbnRJZFskLmpQbGF5ZXIuZXZlbnQuc2Vla2VkXSArICciIHN0eWxlPSInICsgZXZlbnRTdHlsZSArICciPjwvZGl2PicKCQkJCQkJKyAnPGRpdiBpZD0iJyArIGNvbmZpZy5ldmVudElkWyQualBsYXllci5ldmVudC5lbmRlZF0gKyAnIiBzdHlsZT0iJyArIGV2ZW50U3R5bGUgKyAnIj48L2Rpdj4nCgoJCQkJCQkrICc8ZGl2IGlkPSInICsgY29uZmlnLmV2ZW50SWRbJC5qUGxheWVyLmV2ZW50LmxvYWRlZGRhdGFdICsgJyIgc3R5bGU9ImNsZWFyOmxlZnQ7JyArIGV2ZW50U3R5bGUgKyAnIj48L2Rpdj4nCgkJCQkJCSsgJzxkaXYgaWQ9IicgKyBjb25maWcuZXZlbnRJZFskLmpQbGF5ZXIuZXZlbnQubG9hZGVkbWV0YWRhdGFdICsgJyIgc3R5bGU9IicgKyBldmVudFN0eWxlICsgJyI+PC9kaXY+JwoJCQkJCQkrICc8ZGl2IGlkPSInICsgY29uZmlnLmV2ZW50SWRbJC5qUGxheWVyLmV2ZW50LmNhbnBsYXldICsgJyIgc3R5bGU9IicgKyBldmVudFN0eWxlICsgJyI+PC9kaXY+JwoJCQkJCQkrICc8ZGl2IGlkPSInICsgY29uZmlnLmV2ZW50SWRbJC5qUGxheWVyLmV2ZW50LmNhbnBsYXl0aHJvdWdoXSArICciIHN0eWxlPSInICsgZXZlbnRTdHlsZSArICciPjwvZGl2PicKCgkJCQkJCSsgJzxkaXYgaWQ9IicgKyBjb25maWcuZXZlbnRJZFskLmpQbGF5ZXIuZXZlbnQuc3VzcGVuZF0gKyAnIiBzdHlsZT0iY2xlYXI6bGVmdDsnICsgZXZlbnRTdHlsZSArICciPjwvZGl2PicKCQkJCQkJKyAnPGRpdiBpZD0iJyArIGNvbmZpZy5ldmVudElkWyQualBsYXllci5ldmVudC5hYm9ydF0gKyAnIiBzdHlsZT0iJyArIGV2ZW50U3R5bGUgKyAnIj48L2Rpdj4nCgkJCQkJCSsgJzxkaXYgaWQ9IicgKyBjb25maWcuZXZlbnRJZFskLmpQbGF5ZXIuZXZlbnQuZW1wdGllZF0gKyAnIiBzdHlsZT0iJyArIGV2ZW50U3R5bGUgKyAnIj48L2Rpdj4nCgkJCQkJCSsgJzxkaXYgaWQ9IicgKyBjb25maWcuZXZlbnRJZFskLmpQbGF5ZXIuZXZlbnQuc3RhbGxlZF0gKyAnIiBzdHlsZT0iJyArIGV2ZW50U3R5bGUgKyAnIj48L2Rpdj4nCgkJCQkJCSsgJzxkaXYgaWQ9IicgKyBjb25maWcuZXZlbnRJZFskLmpQbGF5ZXIuZXZlbnQucmF0ZWNoYW5nZV0gKyAnIiBzdHlsZT0iJyArIGV2ZW50U3R5bGUgKyAnIj48L2Rpdj4nCgkJCQkJCSsgJzxkaXYgaWQ9IicgKyBjb25maWcuZXZlbnRJZFskLmpQbGF5ZXIuZXZlbnQuZHVyYXRpb25jaGFuZ2VdICsgJyIgc3R5bGU9IicgKyBldmVudFN0eWxlICsgJyI+PC9kaXY+JwoKCQkJCQkJKyAnPGRpdiBzdHlsZT0iY2xlYXI6Ym90aCI+PC9kaXY+JzsKCgkJCS8vIE1KUDogV291bGQgbGlrZSBhIGNoZWNrIGhlcmUgaW4gY2FzZSB3ZSBtaXNzZWQgYW4gZXZlbnQuCgoJCQkvLyBNSlA6IENoZWNrIGZhaWxzLCBzaW5jZSBpdCBpcyBub3Qgb24gdGhlIHBhZ2UgeWV0LgovKgkJCSQuZWFjaCgkLmpQbGF5ZXIuZXZlbnQsIGZ1bmN0aW9uKGV2ZW50TmFtZSxldmVudFR5cGUpIHsKCQkJCWlmKCQoIiMiICsgY29uZmlnLmV2ZW50SWRbZXZlbnRUeXBlXSlbMF0gPT09IHVuZGVmaW5lZCkgewoJCQkJCXN0cnVjdHVyZSArPSAnPGRpdiBpZD0iJyArIGNvbmZpZy5ldmVudElkW2V2ZW50VHlwZV0gKyAnIiBzdHlsZT0iY2xlYXI6bGVmdDsnICsgZXZlbnRTdHlsZSArICciPicgKyBldmVudE5hbWUgKyAnPC9kaXY+JzsKCQkJCX0KCQkJfSk7CiovCgkJCXN0cnVjdHVyZSArPQoJCQkJCSc8L2Rpdj4nCgkJCQkJKyAnPHA+PGEgaHJlZj0iIyIgaWQ9IicgKyBjb25maWcudXBkYXRlSWQgKyAnIj5VcGRhdGU8L2E+IGpQbGF5ZXIgSW5zcGVjdG9yPC9wPicKCQkJCQkrICc8ZGl2IGlkPSInICsgY29uZmlnLmNvbmZpZ0lkICsgJyI+PC9kaXY+JwoJCQkJKyAnPC9kaXY+JzsKCQkJJCh0aGlzKS5odG1sKHN0cnVjdHVyZSk7CgkJCQoJCQljb25maWcud2luZG93SnEgPSAkKCIjIiArIGNvbmZpZy53aW5kb3dJZCk7CgkJCWNvbmZpZy5zdGF0dXNKcSA9ICQoIiMiICsgY29uZmlnLnN0YXR1c0lkKTsKCQkJY29uZmlnLmNvbmZpZ0pxID0gJCgiIyIgKyBjb25maWcuY29uZmlnSWQpOwoJCQljb25maWcudG9nZ2xlSnEgPSAkKCIjIiArIGNvbmZpZy50b2dnbGVJZCk7CgkJCWNvbmZpZy5ldmVudFJlc2V0SnEgPSAkKCIjIiArIGNvbmZpZy5ldmVudFJlc2V0SWQpOwoJCQljb25maWcudXBkYXRlSnEgPSAkKCIjIiArIGNvbmZpZy51cGRhdGVJZCk7CgoJCQkkLmVhY2goJC5qUGxheWVyLmV2ZW50LCBmdW5jdGlvbihldmVudE5hbWUsZXZlbnRUeXBlKSB7CgkJCQljb25maWcuZXZlbnRKcVtldmVudFR5cGVdID0gJCgiIyIgKyBjb25maWcuZXZlbnRJZFtldmVudFR5cGVdKTsKCQkJCWNvbmZpZy5ldmVudEpxW2V2ZW50VHlwZV0udGV4dChldmVudE5hbWUgKyAiICgiICsgY29uZmlnLmV2ZW50T2NjdXJyZW5jZVtldmVudFR5cGVdICsgIikiKTsgLy8gU2V0cyB0aGUgdGV4dCB0byB0aGUgZXZlbnQgbmFtZSBhbmQgKDApOwoJCQkJCgkJCQljb25maWcualBsYXllci5iaW5kKGV2ZW50VHlwZSArICIualBsYXllckluc3BlY3RvciIsIGZ1bmN0aW9uKGUpIHsKCQkJCQljb25maWcuZXZlbnRPY2N1cnJlbmNlW2UudHlwZV0rKzsKCQkJCQlpZihjb25maWcuZXZlbnRPY2N1cnJlbmNlW2UudHlwZV0gPiAxKSB7CgkJCQkJCWNvbmZpZy5ldmVudEpxW2UudHlwZV0uY3NzKCJiYWNrZ3JvdW5kLWNvbG9yIiwiI2ZmOSIpOwoJCQkJCX0gZWxzZSB7CgkJCQkJCWNvbmZpZy5ldmVudEpxW2UudHlwZV0uY3NzKCJiYWNrZ3JvdW5kLWNvbG9yIiwiIzlmOSIpOwoJCQkJCX0KCQkJCQljb25maWcuZXZlbnRKcVtlLnR5cGVdLnRleHQoZXZlbnROYW1lICsgIiAoIiArIGNvbmZpZy5ldmVudE9jY3VycmVuY2VbZS50eXBlXSArICIpIik7CgkJCQkJLy8gVGhlIHRpbWVyIHRvIGhhbmRsZSB0aGUgY29sb3IKCQkJCQljbGVhclRpbWVvdXQoY29uZmlnLmV2ZW50VGltZW91dFtlLnR5cGVdKTsKCQkJCQljb25maWcuZXZlbnRUaW1lb3V0W2UudHlwZV0gPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewoJCQkJCQljb25maWcuZXZlbnRKcVtlLnR5cGVdLmNzcygiYmFja2dyb3VuZC1jb2xvciIsIiNmZmYiKTsKCQkJCQl9LCAxMDAwKTsKCQkJCQkvLyBUaGUgdGltZXIgdG8gaGFuZGxlIHRoZSBvY2N1cmVuY2VzLgoJCQkJCXNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CgkJCQkJCWNvbmZpZy5ldmVudE9jY3VycmVuY2VbZS50eXBlXS0tOwoJCQkJCQljb25maWcuZXZlbnRKcVtlLnR5cGVdLnRleHQoZXZlbnROYW1lICsgIiAoIiArIGNvbmZpZy5ldmVudE9jY3VycmVuY2VbZS50eXBlXSArICIpIik7CgkJCQkJfSwgMTAwMCk7CgkJCQkJaWYoY29uZmlnLnZpc2libGUpIHsgLy8gVXBkYXRlIHRoZSBzdGF0dXMsIGlmIGluc3BlY3RvciBvcGVuLgoJCQkJCQkkdGhpcy5qUGxheWVySW5zcGVjdG9yKCJ1cGRhdGVTdGF0dXMiKTsKCQkJCQl9CgkJCQl9KTsKCQkJfSk7CgoJCQljb25maWcualBsYXllci5iaW5kKCQualBsYXllci5ldmVudC5yZWFkeSArICIualBsYXllckluc3BlY3RvciIsIGZ1bmN0aW9uKGUpIHsKCQkJCSR0aGlzLmpQbGF5ZXJJbnNwZWN0b3IoInVwZGF0ZUNvbmZpZyIpOwoJCQl9KTsKCgkJCWNvbmZpZy50b2dnbGVKcS5jbGljayhmdW5jdGlvbigpIHsKCQkJCWlmKGNvbmZpZy52aXNpYmxlKSB7CgkJCQkJJCh0aGlzKS50ZXh0KCJTaG93Iik7CgkJCQkJY29uZmlnLndpbmRvd0pxLmhpZGUoKTsKCQkJCQljb25maWcuc3RhdHVzSnEuZW1wdHkoKTsKCQkJCQljb25maWcuY29uZmlnSnEuZW1wdHkoKTsKCQkJCX0gZWxzZSB7CgkJCQkJJCh0aGlzKS50ZXh0KCJIaWRlIik7CgkJCQkJY29uZmlnLndpbmRvd0pxLnNob3coKTsKCQkJCQljb25maWcudXBkYXRlSnEuY2xpY2soKTsKCQkJCX0KCQkJCWNvbmZpZy52aXNpYmxlID0gIWNvbmZpZy52aXNpYmxlOwoJCQkJJCh0aGlzKS5ibHVyKCk7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0pOwoKCQkJY29uZmlnLmV2ZW50UmVzZXRKcS5jbGljayhmdW5jdGlvbigpIHsKCQkJCSQuZWFjaCgkLmpQbGF5ZXIuZXZlbnQsIGZ1bmN0aW9uKGV2ZW50TmFtZSxldmVudFR5cGUpIHsKCQkJCQljb25maWcuZXZlbnRKcVtldmVudFR5cGVdLmNzcygiYmFja2dyb3VuZC1jb2xvciIsIiNlZWUiKTsKCQkJCX0pOwoJCQkJJCh0aGlzKS5ibHVyKCk7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0pOwoKCQkJY29uZmlnLnVwZGF0ZUpxLmNsaWNrKGZ1bmN0aW9uKCkgewoJCQkJJHRoaXMualBsYXllckluc3BlY3RvcigidXBkYXRlU3RhdHVzIik7CgkJCQkkdGhpcy5qUGxheWVySW5zcGVjdG9yKCJ1cGRhdGVDb25maWciKTsKCQkJCXJldHVybiBmYWxzZTsKCQkJfSk7CgoJCQlpZighY29uZmlnLnZpc2libGUpIHsKCQkJCWNvbmZpZy53aW5kb3dKcS5oaWRlKCk7CgkJCX0gZWxzZSB7CgkJCQkvLyBjb25maWcudXBkYXRlSnEuY2xpY2soKTsKCQkJfQoJCQkKCQkJJC5qUGxheWVySW5zcGVjdG9yLmkrKzsKCgkJCXJldHVybiB0aGlzOwoJCX0sCgkJZGVzdHJveTogZnVuY3Rpb24oKSB7CgkJCSQodGhpcykuZGF0YSgialBsYXllckluc3BlY3RvciIpICYmICQodGhpcykuZGF0YSgialBsYXllckluc3BlY3RvciIpLmpQbGF5ZXIudW5iaW5kKCIualBsYXllckluc3BlY3RvciIpOwoJCQkkKHRoaXMpLmVtcHR5KCk7CgkJfSwKCQl1cGRhdGVDb25maWc6IGZ1bmN0aW9uKCkgeyAvLyBUaGlzIGRpc3BsYXlzIGluZm9ybWF0aW9uIGFib3V0IGpQbGF5ZXIncyBjb25maWd1cmF0aW9uIGluIGluc3BlY3RvcgoJCQoJCQl2YXIgalBsYXllckluZm8gPSAiPHA+VGhpcyBqUGxheWVyIGluc3RhbmNlIGlzIHJ1bm5pbmcgaW4geW91ciBicm93c2VyIHdoZXJlOjxiciAvPiIKCgkJCWZvcihpID0gMDsgaSA8ICQodGhpcykuZGF0YSgialBsYXllckluc3BlY3RvciIpLmpQbGF5ZXIuZGF0YSgialBsYXllciIpLnNvbHV0aW9ucy5sZW5ndGg7IGkrKykgewoJCQkJdmFyIHNvbHV0aW9uID0gJCh0aGlzKS5kYXRhKCJqUGxheWVySW5zcGVjdG9yIikualBsYXllci5kYXRhKCJqUGxheWVyIikuc29sdXRpb25zW2ldOwoJCQkJalBsYXllckluZm8gKz0gIiZuYnNwO2pQbGF5ZXIncyA8c3Ryb25nPiIgKyBzb2x1dGlvbiArICI8L3N0cm9uZz4gc29sdXRpb24gaXMiOwkJCQkKCQkJCWlmKCQodGhpcykuZGF0YSgialBsYXllckluc3BlY3RvciIpLmpQbGF5ZXIuZGF0YSgialBsYXllciIpW3NvbHV0aW9uXS51c2VkKSB7CgkJCQkJalBsYXllckluZm8gKz0gIiBiZWluZyA8c3Ryb25nPnVzZWQ8L3N0cm9uZz4gYW5kIHdpbGwgc3VwcG9ydDo8c3Ryb25nPiI7CgkJCQkJZm9yKGZvcm1hdCBpbiAkKHRoaXMpLmRhdGEoImpQbGF5ZXJJbnNwZWN0b3IiKS5qUGxheWVyLmRhdGEoImpQbGF5ZXIiKVtzb2x1dGlvbl0uc3VwcG9ydCkgewoJCQkJCQlpZigkKHRoaXMpLmRhdGEoImpQbGF5ZXJJbnNwZWN0b3IiKS5qUGxheWVyLmRhdGEoImpQbGF5ZXIiKVtzb2x1dGlvbl0uc3VwcG9ydFtmb3JtYXRdKSB7CgkJCQkJCQlqUGxheWVySW5mbyArPSAiICIgKyBmb3JtYXQ7CgkJCQkJCX0KCQkJCQl9CgkJCQkJalBsYXllckluZm8gKz0gIjwvc3Ryb25nPjxiciAvPiI7CgkJCQl9IGVsc2UgewoJCQkJCWpQbGF5ZXJJbmZvICs9ICIgPHN0cm9uZz5ub3QgcmVxdWlyZWQ8L3N0cm9uZz48YnIgLz4iOwoJCQkJfQoJCQl9CgkJCWpQbGF5ZXJJbmZvICs9ICI8L3A+IjsKCgkJCWlmKCQodGhpcykuZGF0YSgialBsYXllckluc3BlY3RvciIpLmpQbGF5ZXIuZGF0YSgialBsYXllciIpLmh0bWwuYWN0aXZlKSB7CgkJCQlpZigkKHRoaXMpLmRhdGEoImpQbGF5ZXJJbnNwZWN0b3IiKS5qUGxheWVyLmRhdGEoImpQbGF5ZXIiKS5mbGFzaC5hY3RpdmUpIHsKCQkJCQlqUGxheWVySW5mbyArPSAiPHN0cm9uZz5Qcm9ibGVtIHdpdGggalBsYXllciBzaW5jZSBib3RoIEhUTUw1IGFuZCBGbGFzaCBhcmUgYWN0aXZlLjwvc3Ryb25nPiI7CgkJCQl9IGVsc2UgewoJCQkJCWpQbGF5ZXJJbmZvICs9ICJUaGUgPHN0cm9uZz5IVE1MNSBpcyBhY3RpdmU8L3N0cm9uZz4uIjsKCQkJCX0KCQkJfSBlbHNlIHsKCQkJCWlmKCQodGhpcykuZGF0YSgialBsYXllckluc3BlY3RvciIpLmpQbGF5ZXIuZGF0YSgialBsYXllciIpLmZsYXNoLmFjdGl2ZSkgewoJCQkJCWpQbGF5ZXJJbmZvICs9ICJUaGUgPHN0cm9uZz5GbGFzaCBpcyBhY3RpdmU8L3N0cm9uZz4uIjsKCQkJCX0gZWxzZSB7CgkJCQkJalBsYXllckluZm8gKz0gIk5vIHNvbHV0aW9uIGlzIGN1cnJlbnRseSBhY3RpdmUuIGpQbGF5ZXIgbmVlZHMgYSBzZXRNZWRpYSgpLiI7CgkJCQl9CgkJCX0KCQkJalBsYXllckluZm8gKz0gIjwvcD4iOwoKCQkJdmFyIGZvcm1hdFR5cGUgPSAkKHRoaXMpLmRhdGEoImpQbGF5ZXJJbnNwZWN0b3IiKS5qUGxheWVyLmRhdGEoImpQbGF5ZXIiKS5zdGF0dXMuZm9ybWF0VHlwZTsKCQkJalBsYXllckluZm8gKz0gIjxwPjxjb2RlPnN0YXR1cy5mb3JtYXRUeXBlID0gJyIgKyBmb3JtYXRUeXBlICsgIic8L2NvZGU+PGJyIC8+IjsKCQkJaWYoZm9ybWF0VHlwZSkgewoJCQkJalBsYXllckluZm8gKz0gIjxjb2RlPkJyb3dzZXIgY2FuUGxheSgnIiArICQualBsYXllci5wcm90b3R5cGUuZm9ybWF0W2Zvcm1hdFR5cGVdLmNvZGVjICsgIicpPC9jb2RlPiI7CgkJCX0gZWxzZSB7CgkJCQlqUGxheWVySW5mbyArPSAiPC9wPiI7CgkJCX0KCQkJCgkJCWpQbGF5ZXJJbmZvICs9ICI8cD48Y29kZT5zdGF0dXMuc3JjID0gJyIgKyAkKHRoaXMpLmRhdGEoImpQbGF5ZXJJbnNwZWN0b3IiKS5qUGxheWVyLmRhdGEoImpQbGF5ZXIiKS5zdGF0dXMuc3JjICsgIic8L2NvZGU+PC9wPiI7CgoJCQlqUGxheWVySW5mbyArPSAiPHA+PGNvZGU+c3RhdHVzLm1lZGlhID0gezxiciAvPiI7CgkJCWZvcihwcm9wIGluICQodGhpcykuZGF0YSgialBsYXllckluc3BlY3RvciIpLmpQbGF5ZXIuZGF0YSgialBsYXllciIpLnN0YXR1cy5tZWRpYSkgewoJCQkJalBsYXllckluZm8gKz0gIiZuYnNwOyIgKyBwcm9wICsgIjogIiArICQodGhpcykuZGF0YSgialBsYXllckluc3BlY3RvciIpLmpQbGF5ZXIuZGF0YSgialBsYXllciIpLnN0YXR1cy5tZWRpYVtwcm9wXSArICI8YnIgLz4iOyAvLyBTb21lIGFyZSBzdHJpbmdzCgkJCX0KCQkJalBsYXllckluZm8gKz0gIn07PC9jb2RlPjwvcD4iCgoJCQlqUGxheWVySW5mbyArPSAiPHA+IjsKCQkJalBsYXllckluZm8gKz0gIjxjb2RlPnN0YXR1cy52aWRlb1dpZHRoID0gJyIgKyAkKHRoaXMpLmRhdGEoImpQbGF5ZXJJbnNwZWN0b3IiKS5qUGxheWVyLmRhdGEoImpQbGF5ZXIiKS5zdGF0dXMudmlkZW9XaWR0aCArICInPC9jb2RlPiI7CgkJCWpQbGF5ZXJJbmZvICs9ICIgfCA8Y29kZT5zdGF0dXMudmlkZW9IZWlnaHQgPSAnIiArICQodGhpcykuZGF0YSgialBsYXllckluc3BlY3RvciIpLmpQbGF5ZXIuZGF0YSgialBsYXllciIpLnN0YXR1cy52aWRlb0hlaWdodCArICInPC9jb2RlPiI7CgkJCWpQbGF5ZXJJbmZvICs9ICI8YnIgLz48Y29kZT5zdGF0dXMud2lkdGggPSAnIiArICQodGhpcykuZGF0YSgialBsYXllckluc3BlY3RvciIpLmpQbGF5ZXIuZGF0YSgialBsYXllciIpLnN0YXR1cy53aWR0aCArICInPC9jb2RlPiI7CgkJCWpQbGF5ZXJJbmZvICs9ICIgfCA8Y29kZT5zdGF0dXMuaGVpZ2h0ID0gJyIgKyAkKHRoaXMpLmRhdGEoImpQbGF5ZXJJbnNwZWN0b3IiKS5qUGxheWVyLmRhdGEoImpQbGF5ZXIiKS5zdGF0dXMuaGVpZ2h0ICsgIic8L2NvZGU+IjsKCQkJalBsYXllckluZm8gKz0gIjwvcD4iOwoKCQkJKyAiPHA+UmF3IGJyb3dzZXIgdGVzdCBmb3IgSFRNTDUgc3VwcG9ydC4gU2hvdWxkIGVxdWFsIGEgZnVuY3Rpb24gaWYgSFRNTDUgaXMgYXZhaWxhYmxlLjxiciAvPiI7CgkJCWlmKCQodGhpcykuZGF0YSgialBsYXllckluc3BlY3RvciIpLmpQbGF5ZXIuZGF0YSgialBsYXllciIpLmh0bWwuYXVkaW8uYXZhaWxhYmxlKSB7CgkJCQlqUGxheWVySW5mbyArPSAiPGNvZGU+aHRtbEVsZW1lbnQuYXVkaW8uY2FuUGxheVR5cGUgPSAiICsgKHR5cGVvZiAkKHRoaXMpLmRhdGEoImpQbGF5ZXJJbnNwZWN0b3IiKS5qUGxheWVyLmRhdGEoImpQbGF5ZXIiKS5odG1sRWxlbWVudC5hdWRpby5jYW5QbGF5VHlwZSkgKyI8L2NvZGU+PGJyIC8+IgoJCQl9CgkJCWlmKCQodGhpcykuZGF0YSgialBsYXllckluc3BlY3RvciIpLmpQbGF5ZXIuZGF0YSgialBsYXllciIpLmh0bWwudmlkZW8uYXZhaWxhYmxlKSB7CgkJCQlqUGxheWVySW5mbyArPSAiPGNvZGU+aHRtbEVsZW1lbnQudmlkZW8uY2FuUGxheVR5cGUgPSAiICsgKHR5cGVvZiAkKHRoaXMpLmRhdGEoImpQbGF5ZXJJbnNwZWN0b3IiKS5qUGxheWVyLmRhdGEoImpQbGF5ZXIiKS5odG1sRWxlbWVudC52aWRlby5jYW5QbGF5VHlwZSkgKyI8L2NvZGU+IjsKCQkJfQoJCQlqUGxheWVySW5mbyArPSAiPC9wPiI7CgoJCQlqUGxheWVySW5mbyArPSAiPHA+VGhpcyBpbnN0YW5jZSBpcyB1c2luZyB0aGUgY29uc3RydWN0b3Igb3B0aW9uczo8YnIgLz4iCgkJCSsgIjxjb2RlPiQoJyMiICsgJCh0aGlzKS5kYXRhKCJqUGxheWVySW5zcGVjdG9yIikualBsYXllci5kYXRhKCJqUGxheWVyIikuaW50ZXJuYWwuc2VsZi5pZCArICInKS5qUGxheWVyKHs8YnIgLz4iCgoJCQkrICImbmJzcDtzd2ZQYXRoOiAnIiArICQodGhpcykuZGF0YSgialBsYXllckluc3BlY3RvciIpLmpQbGF5ZXIualBsYXllcigib3B0aW9uIiwgInN3ZlBhdGgiKSArICInLDxiciAvPiIKCgkJCSsgIiZuYnNwO3NvbHV0aW9uOiAnIiArICQodGhpcykuZGF0YSgialBsYXllckluc3BlY3RvciIpLmpQbGF5ZXIualBsYXllcigib3B0aW9uIiwgInNvbHV0aW9uIikgKyAiJyw8YnIgLz4iCgoJCQkrICImbmJzcDtzdXBwbGllZDogJyIgKyAkKHRoaXMpLmRhdGEoImpQbGF5ZXJJbnNwZWN0b3IiKS5qUGxheWVyLmpQbGF5ZXIoIm9wdGlvbiIsICJzdXBwbGllZCIpICsgIicsPGJyIC8+IgoKCQkJKyAiJm5ic3A7cHJlbG9hZDogJyIgKyAkKHRoaXMpLmRhdGEoImpQbGF5ZXJJbnNwZWN0b3IiKS5qUGxheWVyLmpQbGF5ZXIoIm9wdGlvbiIsICJwcmVsb2FkIikgKyAiJyw8YnIgLz4iCgkJCQoJCQkrICImbmJzcDt2b2x1bWU6ICIgKyAkKHRoaXMpLmRhdGEoImpQbGF5ZXJJbnNwZWN0b3IiKS5qUGxheWVyLmpQbGF5ZXIoIm9wdGlvbiIsICJ2b2x1bWUiKSArICIsPGJyIC8+IgoJCQkKCQkJKyAiJm5ic3A7bXV0ZWQ6ICIgKyAkKHRoaXMpLmRhdGEoImpQbGF5ZXJJbnNwZWN0b3IiKS5qUGxheWVyLmpQbGF5ZXIoIm9wdGlvbiIsICJtdXRlZCIpICsgIiw8YnIgLz4iCgoJCQkrICImbmJzcDtiYWNrZ3JvdW5kQ29sb3I6ICciICsgJCh0aGlzKS5kYXRhKCJqUGxheWVySW5zcGVjdG9yIikualBsYXllci5qUGxheWVyKCJvcHRpb24iLCAiYmFja2dyb3VuZENvbG9yIikgKyAiJyw8YnIgLz4iCgoJCQkrICImbmJzcDtjc3NTZWxlY3RvckFuY2VzdG9yOiAnIiArICQodGhpcykuZGF0YSgialBsYXllckluc3BlY3RvciIpLmpQbGF5ZXIualBsYXllcigib3B0aW9uIiwgImNzc1NlbGVjdG9yQW5jZXN0b3IiKSArICInLDxiciAvPiIKCgkJCSsgIiZuYnNwO2Nzc1NlbGVjdG9yOiB7IjsKCgkJCXZhciBjc3NTZWxlY3RvciA9ICQodGhpcykuZGF0YSgialBsYXllckluc3BlY3RvciIpLmpQbGF5ZXIualBsYXllcigib3B0aW9uIiwgImNzc1NlbGVjdG9yIik7CgkJCWZvcihwcm9wIGluIGNzc1NlbGVjdG9yKSB7CgkJCQkKCQkJCS8vIGpQbGF5ZXJJbmZvICs9ICI8YnIgLz4mbmJzcDsmbmJzcDsiICsgcHJvcCArICI6ICciICsgY3NzU2VsZWN0b3JbcHJvcF0gKyAiJywiIC8vIFRoaXMgd29ya3MgdG9vIG9mIGNvdXJzZSwgYnV0IHdhbnQgdG8gdXNlIG9wdGlvbiBtZXRob2QgZm9yIGRlZXAga2V5cy4KCQkJCWpQbGF5ZXJJbmZvICs9ICI8YnIgLz4mbmJzcDsmbmJzcDsiICsgcHJvcCArICI6ICciICsgJCh0aGlzKS5kYXRhKCJqUGxheWVySW5zcGVjdG9yIikualBsYXllci5qUGxheWVyKCJvcHRpb24iLCAiY3NzU2VsZWN0b3IuIiArIHByb3ApICsgIicsIgoJCQl9CgoJCQlqUGxheWVySW5mbyA9IGpQbGF5ZXJJbmZvLnNsaWNlKDAsIC0xKTsgLy8gQmVjYXVzZSB0aGUgc2xvcHB5IGNvbW1hIHdhcyBidWdnaW5nIG1lLgoKCQkJalBsYXllckluZm8gKz0gIjxiciAvPiZuYnNwO30sPGJyIC8+IgoKCQkJKyAiJm5ic3A7ZXJyb3JBbGVydHM6ICIgKyAkKHRoaXMpLmRhdGEoImpQbGF5ZXJJbnNwZWN0b3IiKS5qUGxheWVyLmpQbGF5ZXIoIm9wdGlvbiIsICJlcnJvckFsZXJ0cyIpICsgIiw8YnIgLz4iCgkJCQoJCQkrICImbmJzcDt3YXJuaW5nQWxlcnRzOiAiICsgJCh0aGlzKS5kYXRhKCJqUGxheWVySW5zcGVjdG9yIikualBsYXllci5qUGxheWVyKCJvcHRpb24iLCAid2FybmluZ0FsZXJ0cyIpICsgIjxiciAvPiIKCgkJCSsgIn0pOzwvY29kZT48L3A+IjsKCQkJJCh0aGlzKS5kYXRhKCJqUGxheWVySW5zcGVjdG9yIikuY29uZmlnSnEuaHRtbChqUGxheWVySW5mbyk7CgkJCXJldHVybiB0aGlzOwoJCX0sCgkJdXBkYXRlU3RhdHVzOiBmdW5jdGlvbigpIHsgLy8gVGhpcyBkaXNwbGF5cyBpbmZvcm1hdGlvbiBhYm91dCBqUGxheWVyJ3Mgc3RhdHVzIGluIHRoZSBpbnNwZWN0b3IKCQkJJCh0aGlzKS5kYXRhKCJqUGxheWVySW5zcGVjdG9yIikuc3RhdHVzSnEuaHRtbCgKCQkJCSI8cD5qUGxheWVyIGlzICIgKwoJCQkJKCQodGhpcykuZGF0YSgialBsYXllckluc3BlY3RvciIpLmpQbGF5ZXIuZGF0YSgialBsYXllciIpLnN0YXR1cy5wYXVzZWQgPyAicGF1c2VkIiA6ICJwbGF5aW5nIikgKwoJCQkJIiBhdCB0aW1lOiAiICsgTWF0aC5mbG9vcigkKHRoaXMpLmRhdGEoImpQbGF5ZXJJbnNwZWN0b3IiKS5qUGxheWVyLmRhdGEoImpQbGF5ZXIiKS5zdGF0dXMuY3VycmVudFRpbWUqMTApLzEwICsgInMuIiArCgkJCQkiIChkOiAiICsgTWF0aC5mbG9vcigkKHRoaXMpLmRhdGEoImpQbGF5ZXJJbnNwZWN0b3IiKS5qUGxheWVyLmRhdGEoImpQbGF5ZXIiKS5zdGF0dXMuZHVyYXRpb24qMTApLzEwICsgInMiICsKCQkJCSIsIHNwOiAiICsgTWF0aC5mbG9vcigkKHRoaXMpLmRhdGEoImpQbGF5ZXJJbnNwZWN0b3IiKS5qUGxheWVyLmRhdGEoImpQbGF5ZXIiKS5zdGF0dXMuc2Vla1BlcmNlbnQpICsgIiUiICsKCQkJCSIsIGNwcjogIiArIE1hdGguZmxvb3IoJCh0aGlzKS5kYXRhKCJqUGxheWVySW5zcGVjdG9yIikualBsYXllci5kYXRhKCJqUGxheWVyIikuc3RhdHVzLmN1cnJlbnRQZXJjZW50UmVsYXRpdmUpICsgIiUiICsKCQkJCSIsIGNwYTogIiArIE1hdGguZmxvb3IoJCh0aGlzKS5kYXRhKCJqUGxheWVySW5zcGVjdG9yIikualBsYXllci5kYXRhKCJqUGxheWVyIikuc3RhdHVzLmN1cnJlbnRQZXJjZW50QWJzb2x1dGUpICsgIiUpPC9wPiIKCQkJKTsKCQkJcmV0dXJuIHRoaXM7CgkJfQoJfTsKCSQuZm4ualBsYXllckluc3BlY3RvciA9IGZ1bmN0aW9uKCBtZXRob2QgKSB7CgkJLy8gTWV0aG9kIGNhbGxpbmcgbG9naWMKCQlpZiAoIG1ldGhvZHNbbWV0aG9kXSApIHsKCQkJcmV0dXJuIG1ldGhvZHNbIG1ldGhvZCBdLmFwcGx5KCB0aGlzLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCggYXJndW1lbnRzLCAxICkpOwoJCX0gZWxzZSBpZiAoIHR5cGVvZiBtZXRob2QgPT09ICdvYmplY3QnIHx8ICEgbWV0aG9kICkgewoJCQlyZXR1cm4gbWV0aG9kcy5pbml0LmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTsKCQl9IGVsc2UgewoJCQkkLmVycm9yKCAnTWV0aG9kICcgKyAgbWV0aG9kICsgJyBkb2VzIG5vdCBleGlzdCBvbiBqUXVlcnkualBsYXllckluc3BlY3RvcicgKTsKCQl9ICAgIAoJfTsKfSkoalF1ZXJ5KTsK]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/add-on/jquery.jplayer.inspector.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohIGpQbGF5ZXJJbnNwZWN0b3IgZm9yIGpQbGF5ZXIgMi45LjIgfiAoYykgMjAwOS0yMDE0IEhhcHB5d29ybSBMdGQgfiBNSVQgTGljZW5zZSAqLwohZnVuY3Rpb24oYSxiKXthLmpQbGF5ZXJJbnNwZWN0b3I9e30sYS5qUGxheWVySW5zcGVjdG9yLmk9MCxhLmpQbGF5ZXJJbnNwZWN0b3IuZGVmYXVsdHM9e2pQbGF5ZXI6YixpZFByZWZpeDoianBsYXllcl9pbnNwZWN0b3JfIix2aXNpYmxlOiExfTt2YXIgYz17aW5pdDpmdW5jdGlvbihiKXt2YXIgYz1hKHRoaXMpLGQ9YS5leHRlbmQoe30sYS5qUGxheWVySW5zcGVjdG9yLmRlZmF1bHRzLGIpO2EodGhpcykuZGF0YSgialBsYXllckluc3BlY3RvciIsZCksZC5pZD1hKHRoaXMpLmF0dHIoImlkIiksZC5qUGxheWVySWQ9ZC5qUGxheWVyLmF0dHIoImlkIiksZC53aW5kb3dJZD1kLmlkUHJlZml4KyJ3aW5kb3dfIithLmpQbGF5ZXJJbnNwZWN0b3IuaSxkLnN0YXR1c0lkPWQuaWRQcmVmaXgrInN0YXR1c18iK2EualBsYXllckluc3BlY3Rvci5pLGQuY29uZmlnSWQ9ZC5pZFByZWZpeCsiY29uZmlnXyIrYS5qUGxheWVySW5zcGVjdG9yLmksZC50b2dnbGVJZD1kLmlkUHJlZml4KyJ0b2dnbGVfIithLmpQbGF5ZXJJbnNwZWN0b3IuaSxkLmV2ZW50UmVzZXRJZD1kLmlkUHJlZml4KyJldmVudF9yZXNldF8iK2EualBsYXllckluc3BlY3Rvci5pLGQudXBkYXRlSWQ9ZC5pZFByZWZpeCsidXBkYXRlXyIrYS5qUGxheWVySW5zcGVjdG9yLmksZC5ldmVudFdpbmRvd0lkPWQuaWRQcmVmaXgrImV2ZW50X3dpbmRvd18iK2EualBsYXllckluc3BlY3Rvci5pLGQuZXZlbnRJZD17fSxkLmV2ZW50SnE9e30sZC5ldmVudFRpbWVvdXQ9e30sZC5ldmVudE9jY3VycmVuY2U9e30sYS5lYWNoKGEualBsYXllci5ldmVudCxmdW5jdGlvbihiLGMpe2QuZXZlbnRJZFtjXT1kLmlkUHJlZml4KyJldmVudF8iK2IrIl8iK2EualBsYXllckluc3BlY3Rvci5pLGQuZXZlbnRPY2N1cnJlbmNlW2NdPTB9KTt2YXIgZT0nPHA+PGEgaHJlZj0iIyIgaWQ9IicrZC50b2dnbGVJZCsnIj4nKyhkLnZpc2libGU/IkhpZGUiOiJTaG93IikrJzwvYT4galBsYXllciBJbnNwZWN0b3I8L3A+PGRpdiBpZD0iJytkLndpbmRvd0lkKyciPjxkaXYgaWQ9IicrZC5zdGF0dXNJZCsnIj48L2Rpdj48ZGl2IGlkPSInK2QuZXZlbnRXaW5kb3dJZCsnIiBzdHlsZT0icGFkZGluZzo1cHggNXB4IDAgNXB4O2JhY2tncm91bmQtY29sb3I6I2VlZTtib3JkZXI6MXB4IGRvdHRlZCAjMDAwOyI+PHAgc3R5bGU9Im1hcmdpbjowIDAgMTBweCAwOyI+PHN0cm9uZz5qUGxheWVyIGV2ZW50cyB0aGF0IGhhdmUgb2NjdXJyZWQgb3ZlciB0aGUgcGFzdCAxIHNlY29uZDo8L3N0cm9uZz48YnIgLz4oQmFja2dyb3VuZHM6IDxzcGFuIHN0eWxlPSJwYWRkaW5nOjAgNXB4O2JhY2tncm91bmQtY29sb3I6I2VlZTtib3JkZXI6MXB4IGRvdHRlZCAjMDAwOyI+TmV2ZXIgb2NjdXJyZWQ8L3NwYW4+IDxzcGFuIHN0eWxlPSJwYWRkaW5nOjAgNXB4O2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXI6MXB4IGRvdHRlZCAjMDAwOyI+T2NjdXJyZWQgYmVmb3JlPC9zcGFuPiA8c3BhbiBzdHlsZT0icGFkZGluZzowIDVweDtiYWNrZ3JvdW5kLWNvbG9yOiM5Zjk7Ym9yZGVyOjFweCBkb3R0ZWQgIzAwMDsiPk9jY3VycmVkPC9zcGFuPiA8c3BhbiBzdHlsZT0icGFkZGluZzowIDVweDtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk7Ym9yZGVyOjFweCBkb3R0ZWQgIzAwMDsiPk11bHRpcGxlIG9jY3VycmVuY2VzPC9zcGFuPiA8YSBocmVmPSIjIiBpZD0iJytkLmV2ZW50UmVzZXRJZCsnIj5yZXNldDwvYT4pPC9wPicsZj0iZmxvYXQ6bGVmdDttYXJnaW46MCA1cHggNXB4IDA7cGFkZGluZzowIDVweDtib3JkZXI6MXB4IGRvdHRlZCAjMDAwOyI7cmV0dXJuIGUrPSc8ZGl2IGlkPSInK2QuZXZlbnRJZFthLmpQbGF5ZXIuZXZlbnQucmVhZHldKyciIHN0eWxlPSInK2YrJyI+PC9kaXY+PGRpdiBpZD0iJytkLmV2ZW50SWRbYS5qUGxheWVyLmV2ZW50LnNldG1lZGlhXSsnIiBzdHlsZT0iJytmKyciPjwvZGl2PjxkaXYgaWQ9IicrZC5ldmVudElkW2EualBsYXllci5ldmVudC5mbGFzaHJlc2V0XSsnIiBzdHlsZT0iJytmKyciPjwvZGl2PjxkaXYgaWQ9IicrZC5ldmVudElkW2EualBsYXllci5ldmVudC5yZXNpemVdKyciIHN0eWxlPSInK2YrJyI+PC9kaXY+PGRpdiBpZD0iJytkLmV2ZW50SWRbYS5qUGxheWVyLmV2ZW50LnJlcGVhdF0rJyIgc3R5bGU9IicrZisnIj48L2Rpdj48ZGl2IGlkPSInK2QuZXZlbnRJZFthLmpQbGF5ZXIuZXZlbnQuY2xpY2tdKyciIHN0eWxlPSInK2YrJyI+PC9kaXY+PGRpdiBpZD0iJytkLmV2ZW50SWRbYS5qUGxheWVyLmV2ZW50Lndhcm5pbmddKyciIHN0eWxlPSInK2YrJyI+PC9kaXY+PGRpdiBpZD0iJytkLmV2ZW50SWRbYS5qUGxheWVyLmV2ZW50LmxvYWRzdGFydF0rJyIgc3R5bGU9ImNsZWFyOmxlZnQ7JytmKyciPjwvZGl2PjxkaXYgaWQ9IicrZC5ldmVudElkW2EualBsYXllci5ldmVudC5wcm9ncmVzc10rJyIgc3R5bGU9IicrZisnIj48L2Rpdj48ZGl2IGlkPSInK2QuZXZlbnRJZFthLmpQbGF5ZXIuZXZlbnQudGltZXVwZGF0ZV0rJyIgc3R5bGU9IicrZisnIj48L2Rpdj48ZGl2IGlkPSInK2QuZXZlbnRJZFthLmpQbGF5ZXIuZXZlbnQudm9sdW1lY2hhbmdlXSsnIiBzdHlsZT0iJytmKyciPjwvZGl2PjxkaXYgaWQ9IicrZC5ldmVudElkW2EualBsYXllci5ldmVudC5lcnJvcl0rJyIgc3R5bGU9IicrZisnIj48L2Rpdj48ZGl2IGlkPSInK2QuZXZlbnRJZFthLmpQbGF5ZXIuZXZlbnQucGxheV0rJyIgc3R5bGU9ImNsZWFyOmxlZnQ7JytmKyciPjwvZGl2PjxkaXYgaWQ9IicrZC5ldmVudElkW2EualBsYXllci5ldmVudC5wYXVzZV0rJyIgc3R5bGU9IicrZisnIj48L2Rpdj48ZGl2IGlkPSInK2QuZXZlbnRJZFthLmpQbGF5ZXIuZXZlbnQud2FpdGluZ10rJyIgc3R5bGU9IicrZisnIj48L2Rpdj48ZGl2IGlkPSInK2QuZXZlbnRJZFthLmpQbGF5ZXIuZXZlbnQucGxheWluZ10rJyIgc3R5bGU9IicrZisnIj48L2Rpdj48ZGl2IGlkPSInK2QuZXZlbnRJZFthLmpQbGF5ZXIuZXZlbnQuc2Vla2luZ10rJyIgc3R5bGU9IicrZisnIj48L2Rpdj48ZGl2IGlkPSInK2QuZXZlbnRJZFthLmpQbGF5ZXIuZXZlbnQuc2Vla2VkXSsnIiBzdHlsZT0iJytmKyciPjwvZGl2PjxkaXYgaWQ9IicrZC5ldmVudElkW2EualBsYXllci5ldmVudC5lbmRlZF0rJyIgc3R5bGU9IicrZisnIj48L2Rpdj48ZGl2IGlkPSInK2QuZXZlbnRJZFthLmpQbGF5ZXIuZXZlbnQubG9hZGVkZGF0YV0rJyIgc3R5bGU9ImNsZWFyOmxlZnQ7JytmKyciPjwvZGl2PjxkaXYgaWQ9IicrZC5ldmVudElkW2EualBsYXllci5ldmVudC5sb2FkZWRtZXRhZGF0YV0rJyIgc3R5bGU9IicrZisnIj48L2Rpdj48ZGl2IGlkPSInK2QuZXZlbnRJZFthLmpQbGF5ZXIuZXZlbnQuY2FucGxheV0rJyIgc3R5bGU9IicrZisnIj48L2Rpdj48ZGl2IGlkPSInK2QuZXZlbnRJZFthLmpQbGF5ZXIuZXZlbnQuY2FucGxheXRocm91Z2hdKyciIHN0eWxlPSInK2YrJyI+PC9kaXY+PGRpdiBpZD0iJytkLmV2ZW50SWRbYS5qUGxheWVyLmV2ZW50LnN1c3BlbmRdKyciIHN0eWxlPSJjbGVhcjpsZWZ0OycrZisnIj48L2Rpdj48ZGl2IGlkPSInK2QuZXZlbnRJZFthLmpQbGF5ZXIuZXZlbnQuYWJvcnRdKyciIHN0eWxlPSInK2YrJyI+PC9kaXY+PGRpdiBpZD0iJytkLmV2ZW50SWRbYS5qUGxheWVyLmV2ZW50LmVtcHRpZWRdKyciIHN0eWxlPSInK2YrJyI+PC9kaXY+PGRpdiBpZD0iJytkLmV2ZW50SWRbYS5qUGxheWVyLmV2ZW50LnN0YWxsZWRdKyciIHN0eWxlPSInK2YrJyI+PC9kaXY+PGRpdiBpZD0iJytkLmV2ZW50SWRbYS5qUGxheWVyLmV2ZW50LnJhdGVjaGFuZ2VdKyciIHN0eWxlPSInK2YrJyI+PC9kaXY+PGRpdiBpZD0iJytkLmV2ZW50SWRbYS5qUGxheWVyLmV2ZW50LmR1cmF0aW9uY2hhbmdlXSsnIiBzdHlsZT0iJytmKyciPjwvZGl2PjxkaXYgc3R5bGU9ImNsZWFyOmJvdGgiPjwvZGl2PicsZSs9JzwvZGl2PjxwPjxhIGhyZWY9IiMiIGlkPSInK2QudXBkYXRlSWQrJyI+VXBkYXRlPC9hPiBqUGxheWVyIEluc3BlY3RvcjwvcD48ZGl2IGlkPSInK2QuY29uZmlnSWQrJyI+PC9kaXY+PC9kaXY+JyxhKHRoaXMpLmh0bWwoZSksZC53aW5kb3dKcT1hKCIjIitkLndpbmRvd0lkKSxkLnN0YXR1c0pxPWEoIiMiK2Quc3RhdHVzSWQpLGQuY29uZmlnSnE9YSgiIyIrZC5jb25maWdJZCksZC50b2dnbGVKcT1hKCIjIitkLnRvZ2dsZUlkKSxkLmV2ZW50UmVzZXRKcT1hKCIjIitkLmV2ZW50UmVzZXRJZCksZC51cGRhdGVKcT1hKCIjIitkLnVwZGF0ZUlkKSxhLmVhY2goYS5qUGxheWVyLmV2ZW50LGZ1bmN0aW9uKGIsZSl7ZC5ldmVudEpxW2VdPWEoIiMiK2QuZXZlbnRJZFtlXSksZC5ldmVudEpxW2VdLnRleHQoYisiICgiK2QuZXZlbnRPY2N1cnJlbmNlW2VdKyIpIiksZC5qUGxheWVyLmJpbmQoZSsiLmpQbGF5ZXJJbnNwZWN0b3IiLGZ1bmN0aW9uKGEpe2QuZXZlbnRPY2N1cnJlbmNlW2EudHlwZV0rKyxkLmV2ZW50T2NjdXJyZW5jZVthLnR5cGVdPjE/ZC5ldmVudEpxW2EudHlwZV0uY3NzKCJiYWNrZ3JvdW5kLWNvbG9yIiwiI2ZmOSIpOmQuZXZlbnRKcVthLnR5cGVdLmNzcygiYmFja2dyb3VuZC1jb2xvciIsIiM5ZjkiKSxkLmV2ZW50SnFbYS50eXBlXS50ZXh0KGIrIiAoIitkLmV2ZW50T2NjdXJyZW5jZVthLnR5cGVdKyIpIiksY2xlYXJUaW1lb3V0KGQuZXZlbnRUaW1lb3V0W2EudHlwZV0pLGQuZXZlbnRUaW1lb3V0W2EudHlwZV09c2V0VGltZW91dChmdW5jdGlvbigpe2QuZXZlbnRKcVthLnR5cGVdLmNzcygiYmFja2dyb3VuZC1jb2xvciIsIiNmZmYiKX0sMWUzKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZC5ldmVudE9jY3VycmVuY2VbYS50eXBlXS0tLGQuZXZlbnRKcVthLnR5cGVdLnRleHQoYisiICgiK2QuZXZlbnRPY2N1cnJlbmNlW2EudHlwZV0rIikiKX0sMWUzKSxkLnZpc2libGUmJmMualBsYXllckluc3BlY3RvcigidXBkYXRlU3RhdHVzIil9KX0pLGQualBsYXllci5iaW5kKGEualBsYXllci5ldmVudC5yZWFkeSsiLmpQbGF5ZXJJbnNwZWN0b3IiLGZ1bmN0aW9uKCl7Yy5qUGxheWVySW5zcGVjdG9yKCJ1cGRhdGVDb25maWciKX0pLGQudG9nZ2xlSnEuY2xpY2soZnVuY3Rpb24oKXtyZXR1cm4gZC52aXNpYmxlPyhhKHRoaXMpLnRleHQoIlNob3ciKSxkLndpbmRvd0pxLmhpZGUoKSxkLnN0YXR1c0pxLmVtcHR5KCksZC5jb25maWdKcS5lbXB0eSgpKTooYSh0aGlzKS50ZXh0KCJIaWRlIiksZC53aW5kb3dKcS5zaG93KCksZC51cGRhdGVKcS5jbGljaygpKSxkLnZpc2libGU9IWQudmlzaWJsZSxhKHRoaXMpLmJsdXIoKSwhMX0pLGQuZXZlbnRSZXNldEpxLmNsaWNrKGZ1bmN0aW9uKCl7cmV0dXJuIGEuZWFjaChhLmpQbGF5ZXIuZXZlbnQsZnVuY3Rpb24oYSxiKXtkLmV2ZW50SnFbYl0uY3NzKCJiYWNrZ3JvdW5kLWNvbG9yIiwiI2VlZSIpfSksYSh0aGlzKS5ibHVyKCksITF9KSxkLnVwZGF0ZUpxLmNsaWNrKGZ1bmN0aW9uKCl7cmV0dXJuIGMualBsYXllckluc3BlY3RvcigidXBkYXRlU3RhdHVzIiksYy5qUGxheWVySW5zcGVjdG9yKCJ1cGRhdGVDb25maWciKSwhMX0pLGQudmlzaWJsZXx8ZC53aW5kb3dKcS5oaWRlKCksYS5qUGxheWVySW5zcGVjdG9yLmkrKyx0aGlzfSxkZXN0cm95OmZ1bmN0aW9uKCl7YSh0aGlzKS5kYXRhKCJqUGxheWVySW5zcGVjdG9yIikmJmEodGhpcykuZGF0YSgialBsYXllckluc3BlY3RvciIpLmpQbGF5ZXIudW5iaW5kKCIualBsYXllckluc3BlY3RvciIpLGEodGhpcykuZW1wdHkoKX0sdXBkYXRlQ29uZmlnOmZ1bmN0aW9uKCl7dmFyIGI9IjxwPlRoaXMgalBsYXllciBpbnN0YW5jZSBpcyBydW5uaW5nIGluIHlvdXIgYnJvd3NlciB3aGVyZTo8YnIgLz4iO2ZvcihpPTA7aTxhKHRoaXMpLmRhdGEoImpQbGF5ZXJJbnNwZWN0b3IiKS5qUGxheWVyLmRhdGEoImpQbGF5ZXIiKS5zb2x1dGlvbnMubGVuZ3RoO2krKyl7dmFyIGM9YSh0aGlzKS5kYXRhKCJqUGxheWVySW5zcGVjdG9yIikualBsYXllci5kYXRhKCJqUGxheWVyIikuc29sdXRpb25zW2ldO2lmKGIrPSImbmJzcDtqUGxheWVyJ3MgPHN0cm9uZz4iK2MrIjwvc3Ryb25nPiBzb2x1dGlvbiBpcyIsYSh0aGlzKS5kYXRhKCJqUGxheWVySW5zcGVjdG9yIikualBsYXllci5kYXRhKCJqUGxheWVyIilbY10udXNlZCl7Yis9IiBiZWluZyA8c3Ryb25nPnVzZWQ8L3N0cm9uZz4gYW5kIHdpbGwgc3VwcG9ydDo8c3Ryb25nPiI7Zm9yKGZvcm1hdCBpbiBhKHRoaXMpLmRhdGEoImpQbGF5ZXJJbnNwZWN0b3IiKS5qUGxheWVyLmRhdGEoImpQbGF5ZXIiKVtjXS5zdXBwb3J0KWEodGhpcykuZGF0YSgialBsYXllckluc3BlY3RvciIpLmpQbGF5ZXIuZGF0YSgialBsYXllciIpW2NdLnN1cHBvcnRbZm9ybWF0XSYmKGIrPSIgIitmb3JtYXQpO2IrPSI8L3N0cm9uZz48YnIgLz4ifWVsc2UgYis9IiA8c3Ryb25nPm5vdCByZXF1aXJlZDwvc3Ryb25nPjxiciAvPiJ9Yis9IjwvcD4iLGIrPWEodGhpcykuZGF0YSgialBsYXllckluc3BlY3RvciIpLmpQbGF5ZXIuZGF0YSgialBsYXllciIpLmh0bWwuYWN0aXZlP2EodGhpcykuZGF0YSgialBsYXllckluc3BlY3RvciIpLmpQbGF5ZXIuZGF0YSgialBsYXllciIpLmZsYXNoLmFjdGl2ZT8iPHN0cm9uZz5Qcm9ibGVtIHdpdGggalBsYXllciBzaW5jZSBib3RoIEhUTUw1IGFuZCBGbGFzaCBhcmUgYWN0aXZlLjwvc3Ryb25nPiI6IlRoZSA8c3Ryb25nPkhUTUw1IGlzIGFjdGl2ZTwvc3Ryb25nPi4iOmEodGhpcykuZGF0YSgialBsYXllckluc3BlY3RvciIpLmpQbGF5ZXIuZGF0YSgialBsYXllciIpLmZsYXNoLmFjdGl2ZT8iVGhlIDxzdHJvbmc+Rmxhc2ggaXMgYWN0aXZlPC9zdHJvbmc+LiI6Ik5vIHNvbHV0aW9uIGlzIGN1cnJlbnRseSBhY3RpdmUuIGpQbGF5ZXIgbmVlZHMgYSBzZXRNZWRpYSgpLiIsYis9IjwvcD4iO3ZhciBkPWEodGhpcykuZGF0YSgialBsYXllckluc3BlY3RvciIpLmpQbGF5ZXIuZGF0YSgialBsYXllciIpLnN0YXR1cy5mb3JtYXRUeXBlO2IrPSI8cD48Y29kZT5zdGF0dXMuZm9ybWF0VHlwZSA9ICciK2QrIic8L2NvZGU+PGJyIC8+IixiKz1kPyI8Y29kZT5Ccm93c2VyIGNhblBsYXkoJyIrYS5qUGxheWVyLnByb3RvdHlwZS5mb3JtYXRbZF0uY29kZWMrIicpPC9jb2RlPiI6IjwvcD4iLGIrPSI8cD48Y29kZT5zdGF0dXMuc3JjID0gJyIrYSh0aGlzKS5kYXRhKCJqUGxheWVySW5zcGVjdG9yIikualBsYXllci5kYXRhKCJqUGxheWVyIikuc3RhdHVzLnNyYysiJzwvY29kZT48L3A+IixiKz0iPHA+PGNvZGU+c3RhdHVzLm1lZGlhID0gezxiciAvPiI7Zm9yKHByb3AgaW4gYSh0aGlzKS5kYXRhKCJqUGxheWVySW5zcGVjdG9yIikualBsYXllci5kYXRhKCJqUGxheWVyIikuc3RhdHVzLm1lZGlhKWIrPSImbmJzcDsiK3Byb3ArIjogIithKHRoaXMpLmRhdGEoImpQbGF5ZXJJbnNwZWN0b3IiKS5qUGxheWVyLmRhdGEoImpQbGF5ZXIiKS5zdGF0dXMubWVkaWFbcHJvcF0rIjxiciAvPiI7Yis9In07PC9jb2RlPjwvcD4iLGIrPSI8cD4iLGIrPSI8Y29kZT5zdGF0dXMudmlkZW9XaWR0aCA9ICciK2EodGhpcykuZGF0YSgialBsYXllckluc3BlY3RvciIpLmpQbGF5ZXIuZGF0YSgialBsYXllciIpLnN0YXR1cy52aWRlb1dpZHRoKyInPC9jb2RlPiIsYis9IiB8IDxjb2RlPnN0YXR1cy52aWRlb0hlaWdodCA9ICciK2EodGhpcykuZGF0YSgialBsYXllckluc3BlY3RvciIpLmpQbGF5ZXIuZGF0YSgialBsYXllciIpLnN0YXR1cy52aWRlb0hlaWdodCsiJzwvY29kZT4iLGIrPSI8YnIgLz48Y29kZT5zdGF0dXMud2lkdGggPSAnIithKHRoaXMpLmRhdGEoImpQbGF5ZXJJbnNwZWN0b3IiKS5qUGxheWVyLmRhdGEoImpQbGF5ZXIiKS5zdGF0dXMud2lkdGgrIic8L2NvZGU+IixiKz0iIHwgPGNvZGU+c3RhdHVzLmhlaWdodCA9ICciK2EodGhpcykuZGF0YSgialBsYXllckluc3BlY3RvciIpLmpQbGF5ZXIuZGF0YSgialBsYXllciIpLnN0YXR1cy5oZWlnaHQrIic8L2NvZGU+IixiKz0iPC9wPiIsYSh0aGlzKS5kYXRhKCJqUGxheWVySW5zcGVjdG9yIikualBsYXllci5kYXRhKCJqUGxheWVyIikuaHRtbC5hdWRpby5hdmFpbGFibGUmJihiKz0iPGNvZGU+aHRtbEVsZW1lbnQuYXVkaW8uY2FuUGxheVR5cGUgPSAiK3R5cGVvZiBhKHRoaXMpLmRhdGEoImpQbGF5ZXJJbnNwZWN0b3IiKS5qUGxheWVyLmRhdGEoImpQbGF5ZXIiKS5odG1sRWxlbWVudC5hdWRpby5jYW5QbGF5VHlwZSsiPC9jb2RlPjxiciAvPiIpLGEodGhpcykuZGF0YSgialBsYXllckluc3BlY3RvciIpLmpQbGF5ZXIuZGF0YSgialBsYXllciIpLmh0bWwudmlkZW8uYXZhaWxhYmxlJiYoYis9Ijxjb2RlPmh0bWxFbGVtZW50LnZpZGVvLmNhblBsYXlUeXBlID0gIit0eXBlb2YgYSh0aGlzKS5kYXRhKCJqUGxheWVySW5zcGVjdG9yIikualBsYXllci5kYXRhKCJqUGxheWVyIikuaHRtbEVsZW1lbnQudmlkZW8uY2FuUGxheVR5cGUrIjwvY29kZT4iKSxiKz0iPC9wPiIsYis9IjxwPlRoaXMgaW5zdGFuY2UgaXMgdXNpbmcgdGhlIGNvbnN0cnVjdG9yIG9wdGlvbnM6PGJyIC8+PGNvZGU+JCgnIyIrYSh0aGlzKS5kYXRhKCJqUGxheWVySW5zcGVjdG9yIikualBsYXllci5kYXRhKCJqUGxheWVyIikuaW50ZXJuYWwuc2VsZi5pZCsiJykualBsYXllcih7PGJyIC8+Jm5ic3A7c3dmUGF0aDogJyIrYSh0aGlzKS5kYXRhKCJqUGxheWVySW5zcGVjdG9yIikualBsYXllci5qUGxheWVyKCJvcHRpb24iLCJzd2ZQYXRoIikrIicsPGJyIC8+Jm5ic3A7c29sdXRpb246ICciK2EodGhpcykuZGF0YSgialBsYXllckluc3BlY3RvciIpLmpQbGF5ZXIualBsYXllcigib3B0aW9uIiwic29sdXRpb24iKSsiJyw8YnIgLz4mbmJzcDtzdXBwbGllZDogJyIrYSh0aGlzKS5kYXRhKCJqUGxheWVySW5zcGVjdG9yIikualBsYXllci5qUGxheWVyKCJvcHRpb24iLCJzdXBwbGllZCIpKyInLDxiciAvPiZuYnNwO3ByZWxvYWQ6ICciK2EodGhpcykuZGF0YSgialBsYXllckluc3BlY3RvciIpLmpQbGF5ZXIualBsYXllcigib3B0aW9uIiwicHJlbG9hZCIpKyInLDxiciAvPiZuYnNwO3ZvbHVtZTogIithKHRoaXMpLmRhdGEoImpQbGF5ZXJJbnNwZWN0b3IiKS5qUGxheWVyLmpQbGF5ZXIoIm9wdGlvbiIsInZvbHVtZSIpKyIsPGJyIC8+Jm5ic3A7bXV0ZWQ6ICIrYSh0aGlzKS5kYXRhKCJqUGxheWVySW5zcGVjdG9yIikualBsYXllci5qUGxheWVyKCJvcHRpb24iLCJtdXRlZCIpKyIsPGJyIC8+Jm5ic3A7YmFja2dyb3VuZENvbG9yOiAnIithKHRoaXMpLmRhdGEoImpQbGF5ZXJJbnNwZWN0b3IiKS5qUGxheWVyLmpQbGF5ZXIoIm9wdGlvbiIsImJhY2tncm91bmRDb2xvciIpKyInLDxiciAvPiZuYnNwO2Nzc1NlbGVjdG9yQW5jZXN0b3I6ICciK2EodGhpcykuZGF0YSgialBsYXllckluc3BlY3RvciIpLmpQbGF5ZXIualBsYXllcigib3B0aW9uIiwiY3NzU2VsZWN0b3JBbmNlc3RvciIpKyInLDxiciAvPiZuYnNwO2Nzc1NlbGVjdG9yOiB7Ijt2YXIgZT1hKHRoaXMpLmRhdGEoImpQbGF5ZXJJbnNwZWN0b3IiKS5qUGxheWVyLmpQbGF5ZXIoIm9wdGlvbiIsImNzc1NlbGVjdG9yIik7Zm9yKHByb3AgaW4gZSliKz0iPGJyIC8+Jm5ic3A7Jm5ic3A7Iitwcm9wKyI6ICciK2EodGhpcykuZGF0YSgialBsYXllckluc3BlY3RvciIpLmpQbGF5ZXIualBsYXllcigib3B0aW9uIiwiY3NzU2VsZWN0b3IuIitwcm9wKSsiJywiO3JldHVybiBiPWIuc2xpY2UoMCwtMSksYis9IjxiciAvPiZuYnNwO30sPGJyIC8+Jm5ic3A7ZXJyb3JBbGVydHM6ICIrYSh0aGlzKS5kYXRhKCJqUGxheWVySW5zcGVjdG9yIikualBsYXllci5qUGxheWVyKCJvcHRpb24iLCJlcnJvckFsZXJ0cyIpKyIsPGJyIC8+Jm5ic3A7d2FybmluZ0FsZXJ0czogIithKHRoaXMpLmRhdGEoImpQbGF5ZXJJbnNwZWN0b3IiKS5qUGxheWVyLmpQbGF5ZXIoIm9wdGlvbiIsIndhcm5pbmdBbGVydHMiKSsiPGJyIC8+fSk7PC9jb2RlPjwvcD4iLGEodGhpcykuZGF0YSgialBsYXllckluc3BlY3RvciIpLmNvbmZpZ0pxLmh0bWwoYiksdGhpc30sdXBkYXRlU3RhdHVzOmZ1bmN0aW9uKCl7cmV0dXJuIGEodGhpcykuZGF0YSgialBsYXllckluc3BlY3RvciIpLnN0YXR1c0pxLmh0bWwoIjxwPmpQbGF5ZXIgaXMgIisoYSh0aGlzKS5kYXRhKCJqUGxheWVySW5zcGVjdG9yIikualBsYXllci5kYXRhKCJqUGxheWVyIikuc3RhdHVzLnBhdXNlZD8icGF1c2VkIjoicGxheWluZyIpKyIgYXQgdGltZTogIitNYXRoLmZsb29yKDEwKmEodGhpcykuZGF0YSgialBsYXllckluc3BlY3RvciIpLmpQbGF5ZXIuZGF0YSgialBsYXllciIpLnN0YXR1cy5jdXJyZW50VGltZSkvMTArInMuIChkOiAiK01hdGguZmxvb3IoMTAqYSh0aGlzKS5kYXRhKCJqUGxheWVySW5zcGVjdG9yIikualBsYXllci5kYXRhKCJqUGxheWVyIikuc3RhdHVzLmR1cmF0aW9uKS8xMCsicywgc3A6ICIrTWF0aC5mbG9vcihhKHRoaXMpLmRhdGEoImpQbGF5ZXJJbnNwZWN0b3IiKS5qUGxheWVyLmRhdGEoImpQbGF5ZXIiKS5zdGF0dXMuc2Vla1BlcmNlbnQpKyIlLCBjcHI6ICIrTWF0aC5mbG9vcihhKHRoaXMpLmRhdGEoImpQbGF5ZXJJbnNwZWN0b3IiKS5qUGxheWVyLmRhdGEoImpQbGF5ZXIiKS5zdGF0dXMuY3VycmVudFBlcmNlbnRSZWxhdGl2ZSkrIiUsIGNwYTogIitNYXRoLmZsb29yKGEodGhpcykuZGF0YSgialBsYXllckluc3BlY3RvciIpLmpQbGF5ZXIuZGF0YSgialBsYXllciIpLnN0YXR1cy5jdXJyZW50UGVyY2VudEFic29sdXRlKSsiJSk8L3A+IiksdGhpc319O2EuZm4ualBsYXllckluc3BlY3Rvcj1mdW5jdGlvbihiKXtyZXR1cm4gY1tiXT9jW2JdLmFwcGx5KHRoaXMsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKToib2JqZWN0IiE9dHlwZW9mIGImJmI/dm9pZCBhLmVycm9yKCJNZXRob2QgIitiKyIgZG9lcyBub3QgZXhpc3Qgb24galF1ZXJ5LmpQbGF5ZXJJbnNwZWN0b3IiKTpjLmluaXQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oalF1ZXJ5KTs=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/jplayer.jquery.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewoJIm5hbWUiOiAianBsYXllciIsCgkidGl0bGUiOiAialBsYXllciA6IEhUTUw1IEF1ZGlvICYgVmlkZW8iLAoJImRlc2NyaXB0aW9uIjogImpQbGF5ZXIgYWxsb3dzIHlvdSB0byBjcmVhdGUgYSBtZWRpYSBwbGF5ZXIgd2l0aCBhIGNvbnNpc3RlbnQgaW50ZXJmYWNlIGFuZCBleHBlcmllbmNlIGFjcm9zcyBhbGwgYnJvd3NlcnMuIiwKCSJrZXl3b3JkcyI6IFsKCQkiYXVkaW8iLAoJCSJ2aWRlbyIsCgkJIm1lZGlhIiwKCQkicGxheWVyIiwKCQkianBsYXllciIsCgkJImh0bWw1IiwKCQkic3RyZWFtaW5nIgoJXSwKCSJ2ZXJzaW9uIjogIjIuNC4wIiwKCSJhdXRob3IiOiB7CgkJIm5hbWUiOiAiTWFyayBKIFBhbmFnaGlzdG9uIiwKCQkidXJsIjogImh0dHA6Ly9oYXBweXdvcm0uY29tLyIKCX0sCgkibGljZW5zZXMiOiBbCgkJewoJCQkidHlwZSI6ICJNSVQiLAoJCQkidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9oYXBweXdvcm0valBsYXllci9ibG9iL21hc3Rlci9NSVQtTElDRU5TRS50eHQiCgkJfQoJXSwKCSJkZXBlbmRlbmNpZXMiOiB7CgkJImpxdWVyeSI6ICI+PTEuNyIKCX0sCgkiaG9tZXBhZ2UiOiAiaHR0cDovL2pwbGF5ZXIub3JnLyIsCgkiZGVtbyI6ICJodHRwOi8vanBsYXllci5vcmcvbGF0ZXN0L2RlbW9zLyIsCgkiZG9jcyI6ICJodHRwOi8vanBsYXllci5vcmcvbGF0ZXN0L2RldmVsb3Blci1ndWlkZS8iLAoJImRvd25sb2FkIjogImh0dHA6Ly9qcGxheWVyLm9yZy9kb3dubG9hZC8iLAoJImJ1Z3MiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hhcHB5d29ybS9qUGxheWVyL2lzc3VlcyIKfQ==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/jplayer/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/jplayer/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/jplayer/jquery.jplayer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogalBsYXllciBQbHVnaW4gZm9yIGpRdWVyeSBKYXZhU2NyaXB0IExpYnJhcnkKICogaHR0cDovL3d3dy5qcGxheWVyLm9yZwogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDkgLSAyMDE0IEhhcHB5d29ybSBMdGQKICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLgogKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUCiAqCiAqIEF1dGhvcjogTWFyayBKIFBhbmFnaGlzdG9uCiAqIFZlcnNpb246IDIuOS4yCiAqIERhdGU6IDE0dGggRGVjZW1iZXIgMjAxNAogKi8KCi8qIFN1cHBvcnQgZm9yIFplcHRvIDEuMCBjb21waWxlZCB3aXRoIG9wdGlvbmFsIGRhdGEgbW9kdWxlLgogKiBGb3IgQU1EIG9yIE5PREUvQ29tbW9uSlMgc3VwcG9ydCwgeW91IHdpbGwgbmVlZCB0byBtYW51YWxseSBzd2l0Y2ggdGhlIHJlbGF0ZWQgMiBsaW5lcyBpbiB0aGUgY29kZSBiZWxvdy4KICogU2VhcmNoIHRlcm1zOiAialF1ZXJ5IFN3aXRjaCIgYW5kICJaZXB0byBTd2l0Y2giCiAqLwoKKGZ1bmN0aW9uIChyb290LCBmYWN0b3J5KSB7CglpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7CgkJLy8gQU1ELiBSZWdpc3RlciBhcyBhbiBhbm9ueW1vdXMgbW9kdWxlLgoJCWRlZmluZShbJ2pxdWVyeSddLCBmYWN0b3J5KTsgLy8galF1ZXJ5IFN3aXRjaAoJCS8vIGRlZmluZShbJ3plcHRvJ10sIGZhY3RvcnkpOyAvLyBaZXB0byBTd2l0Y2gKCX0gZWxzZSBpZiAodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKSB7CgkJLy8gTm9kZS9Db21tb25KUwoJCWZhY3RvcnkocmVxdWlyZSgnanF1ZXJ5JykpOyAvLyBqUXVlcnkgU3dpdGNoCgkJLy9mYWN0b3J5KHJlcXVpcmUoJ3plcHRvJykpOyAvLyBaZXB0byBTd2l0Y2gKCX0gZWxzZSB7CgkJLy8gQnJvd3NlciBnbG9iYWxzCgkJaWYocm9vdC5qUXVlcnkpIHsgLy8gVXNlIGpRdWVyeSBpZiBhdmFpbGFibGUKCQkJZmFjdG9yeShyb290LmpRdWVyeSk7CgkJfSBlbHNlIHsgLy8gT3RoZXJ3aXNlLCB1c2UgWmVwdG8KCQkJZmFjdG9yeShyb290LlplcHRvKTsKCQl9Cgl9Cn0odGhpcywgZnVuY3Rpb24gKCQsIHVuZGVmaW5lZCkgewoKCS8vIEFkYXB0ZWQgZnJvbSBqcXVlcnkudWkud2lkZ2V0LmpzICgxLjguNyk6ICQud2lkZ2V0LmJyaWRnZSAtIFR3ZWFrZWQgJC5kYXRhKHRoaXMsWFlaKSB0byAkKHRoaXMpLmRhdGEoWFlaKSBmb3IgWmVwdG8KCSQuZm4ualBsYXllciA9IGZ1bmN0aW9uKCBvcHRpb25zICkgewoJCXZhciBuYW1lID0gImpQbGF5ZXIiOwoJCXZhciBpc01ldGhvZENhbGwgPSB0eXBlb2Ygb3B0aW9ucyA9PT0gInN0cmluZyIsCgkJCWFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCggYXJndW1lbnRzLCAxICksCgkJCXJldHVyblZhbHVlID0gdGhpczsKCgkJLy8gYWxsb3cgbXVsdGlwbGUgaGFzaGVzIHRvIGJlIHBhc3NlZCBvbiBpbml0CgkJb3B0aW9ucyA9ICFpc01ldGhvZENhbGwgJiYgYXJncy5sZW5ndGggPwoJCQkkLmV4dGVuZC5hcHBseSggbnVsbCwgWyB0cnVlLCBvcHRpb25zIF0uY29uY2F0KGFyZ3MpICkgOgoJCQlvcHRpb25zOwoKCQkvLyBwcmV2ZW50IGNhbGxzIHRvIGludGVybmFsIG1ldGhvZHMKCQlpZiAoIGlzTWV0aG9kQ2FsbCAmJiBvcHRpb25zLmNoYXJBdCggMCApID09PSAiXyIgKSB7CgkJCXJldHVybiByZXR1cm5WYWx1ZTsKCQl9CgoJCWlmICggaXNNZXRob2RDYWxsICkgewoJCQl0aGlzLmVhY2goZnVuY3Rpb24oKSB7CgkJCQl2YXIgaW5zdGFuY2UgPSAkKHRoaXMpLmRhdGEoIG5hbWUgKSwKCQkJCQltZXRob2RWYWx1ZSA9IGluc3RhbmNlICYmICQuaXNGdW5jdGlvbiggaW5zdGFuY2Vbb3B0aW9uc10gKSA/CgkJCQkJCWluc3RhbmNlWyBvcHRpb25zIF0uYXBwbHkoIGluc3RhbmNlLCBhcmdzICkgOgoJCQkJCQlpbnN0YW5jZTsKCQkJCWlmICggbWV0aG9kVmFsdWUgIT09IGluc3RhbmNlICYmIG1ldGhvZFZhbHVlICE9PSB1bmRlZmluZWQgKSB7CgkJCQkJcmV0dXJuVmFsdWUgPSBtZXRob2RWYWx1ZTsKCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQl9CgkJCX0pOwoJCX0gZWxzZSB7CgkJCXRoaXMuZWFjaChmdW5jdGlvbigpIHsKCQkJCXZhciBpbnN0YW5jZSA9ICQodGhpcykuZGF0YSggbmFtZSApOwoJCQkJaWYgKCBpbnN0YW5jZSApIHsKCQkJCQkvLyBpbnN0YW5jZS5vcHRpb24oIG9wdGlvbnMgfHwge30gKS5faW5pdCgpOyAvLyBPcmlnIGpxdWVyeS51aS53aWRnZXQuanMgY29kZTogTm90IHJlY29tbWVuZCBmb3IgalBsYXllci4gaWUuLCBBcHBseWluZyBuZXcgb3B0aW9ucyB0byBhbiBleGlzdGluZyBpbnN0YW5jZSAodmlhIHRoZSBqUGxheWVyIGNvbnN0cnVjdG9yKSBhbmQgcGVyZm9ybWluZyB0aGUgX2luaXQoKS4gVGhlIF9pbml0KCkgaXMgd2hhdCBjb25jZXJucyBtZS4gSXQgd291bGQgbGVhdmUgYSBsb3Qgb2YgZXZlbnQgaGFuZGxlcnMgYWN0aW5nIG9uIGpQbGF5ZXIgaW5zdGFuY2UgYW5kIHRoZSBpbnRlcmZhY2UuCgkJCQkJaW5zdGFuY2Uub3B0aW9uKCBvcHRpb25zIHx8IHt9ICk7IC8vIFRoZSBuZXcgY29uc3RydWN0b3Igb25seSBjaGFuZ2VzIHRoZSBvcHRpb25zLiBDaGFuZ2luZyBvcHRpb25zIG9ubHkgaGFzIGJhc2ljIHN1cHBvcnQgYXRtLgoJCQkJfSBlbHNlIHsKCQkJCQkkKHRoaXMpLmRhdGEoIG5hbWUsIG5ldyAkLmpQbGF5ZXIoIG9wdGlvbnMsIHRoaXMgKSApOwoJCQkJfQoJCQl9KTsKCQl9CgoJCXJldHVybiByZXR1cm5WYWx1ZTsKCX07CgoJJC5qUGxheWVyID0gZnVuY3Rpb24oIG9wdGlvbnMsIGVsZW1lbnQgKSB7CgkJLy8gYWxsb3cgaW5zdGFudGlhdGlvbiB3aXRob3V0IGluaXRpYWxpemluZyBmb3Igc2ltcGxlIGluaGVyaXRhbmNlCgkJaWYgKCBhcmd1bWVudHMubGVuZ3RoICkgewoJCQl0aGlzLmVsZW1lbnQgPSAkKGVsZW1lbnQpOwoJCQl0aGlzLm9wdGlvbnMgPSAkLmV4dGVuZCh0cnVlLCB7fSwKCQkJCXRoaXMub3B0aW9ucywKCQkJCW9wdGlvbnMKCQkJKTsKCQkJdmFyIHNlbGYgPSB0aGlzOwoJCQl0aGlzLmVsZW1lbnQuYmluZCggInJlbW92ZS5qUGxheWVyIiwgZnVuY3Rpb24oKSB7CgkJCQlzZWxmLmRlc3Ryb3koKTsKCQkJfSk7CgkJCXRoaXMuX2luaXQoKTsKCQl9Cgl9OwoJLy8gRW5kIG9mOiAoQWRhcHRlZCBmcm9tIGpxdWVyeS51aS53aWRnZXQuanMgKDEuOC43KSkKCgkvLyBaZXB0byBpcyBtaXNzaW5nIG9uZSBvZiB0aGUgYW5pbWF0aW9uIG1ldGhvZHMuCglpZih0eXBlb2YgJC5mbi5zdG9wICE9PSAnZnVuY3Rpb24nKSB7CgkJJC5mbi5zdG9wID0gZnVuY3Rpb24oKSB7fTsKCX0KCgkvLyBFbXVsYXRlZCBIVE1MNSBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzCgkkLmpQbGF5ZXIuZW11bGF0ZU1ldGhvZHMgPSAibG9hZCBwbGF5IHBhdXNlIjsKCSQualBsYXllci5lbXVsYXRlU3RhdHVzID0gInNyYyByZWFkeVN0YXRlIG5ldHdvcmtTdGF0ZSBjdXJyZW50VGltZSBkdXJhdGlvbiBwYXVzZWQgZW5kZWQgcGxheWJhY2tSYXRlIjsKCSQualBsYXllci5lbXVsYXRlT3B0aW9ucyA9ICJtdXRlZCB2b2x1bWUiOwoKCS8vIFJlc2VydmVkIGV2ZW50IG5hbWVzIGdlbmVyYXRlZCBieSBqUGxheWVyIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIHRoZSBIVE1MNSBNZWRpYSBlbGVtZW50IHNwZWMKCSQualBsYXllci5yZXNlcnZlZEV2ZW50ID0gInJlYWR5IGZsYXNocmVzZXQgcmVzaXplIHJlcGVhdCBlcnJvciB3YXJuaW5nIjsKCgkvLyBFdmVudHMgZ2VuZXJhdGVkIGJ5IGpQbGF5ZXIKCSQualBsYXllci5ldmVudCA9IHt9OwoJJC5lYWNoKAoJCVsKCQkJJ3JlYWR5JywKCQkJJ3NldG1lZGlhJywgLy8gRmlyZXMgd2hlbiB0aGUgbWVkaWEgaXMgc2V0CgkJCSdmbGFzaHJlc2V0JywgLy8gU2ltaWxhciB0byB0aGUgcmVhZHkgZXZlbnQgaWYgdGhlIEZsYXNoIHNvbHV0aW9uIGlzIHNldCB0byBkaXNwbGF5Om5vbmUgYW5kIHRoZW4gc2hvd24gYWdhaW4gb3IgaWYgaXQncyByZWxvYWRlZCBmb3IgYW5vdGhlciByZWFzb24gYnkgdGhlIGJyb3dzZXIuIEZvciBleGFtcGxlLCB1c2luZyBDU1MgcG9zaXRpb246Zml4ZWQgb24gRmlyZWZveCBmb3IgdGhlIGZ1bGwgc2NyZWVuIGZlYXR1cmUuCgkJCSdyZXNpemUnLCAvLyBPY2N1cnMgd2hlbiB0aGUgc2l6ZSBjaGFuZ2VzIHRocm91Z2ggYSBmdWxsL3Jlc3RvcmUgc2NyZWVuIG9wZXJhdGlvbiBvciBpZiB0aGUgc2l6ZS9zaXplRnVsbCBvcHRpb25zIGFyZSBjaGFuZ2VkLgoJCQkncmVwZWF0JywgLy8gT2NjdXJzIHdoZW4gdGhlIHJlcGVhdCBzdGF0dXMgY2hhbmdlcy4gVXN1YWxseSB0aHJvdWdoIGNsaWNrcyBvbiB0aGUgcmVwZWF0IGJ1dHRvbiBvZiB0aGUgaW50ZXJmYWNlLgoJCQknY2xpY2snLCAvLyBPY2N1cnMgd2hlbiB0aGUgdXNlciBjbGlja3Mgb24gb25lIG9mIHRoZSBmb2xsb3dpbmc6IHBvc3RlciBpbWFnZSwgaHRtbCB2aWRlbywgZmxhc2ggdmlkZW8uCgkJCSdlcnJvcicsIC8vIEV2ZW50IGVycm9yIGNvZGUgaW4gZXZlbnQualBsYXllci5lcnJvci50eXBlLiBTZWUgJC5qUGxheWVyLmVycm9yCgkJCSd3YXJuaW5nJywgLy8gRXZlbnQgd2FybmluZyBjb2RlIGluIGV2ZW50LmpQbGF5ZXIud2FybmluZy50eXBlLiBTZWUgJC5qUGxheWVyLndhcm5pbmcKCgkJCS8vIE90aGVyIGV2ZW50cyBtYXRjaCBIVE1MNSBzcGVjLgoJCQknbG9hZHN0YXJ0JywKCQkJJ3Byb2dyZXNzJywKCQkJJ3N1c3BlbmQnLAoJCQknYWJvcnQnLAoJCQknZW1wdGllZCcsCgkJCSdzdGFsbGVkJywKCQkJJ3BsYXknLAoJCQkncGF1c2UnLAoJCQknbG9hZGVkbWV0YWRhdGEnLAoJCQknbG9hZGVkZGF0YScsCgkJCSd3YWl0aW5nJywKCQkJJ3BsYXlpbmcnLAoJCQknY2FucGxheScsCgkJCSdjYW5wbGF5dGhyb3VnaCcsCgkJCSdzZWVraW5nJywKCQkJJ3NlZWtlZCcsCgkJCSd0aW1ldXBkYXRlJywKCQkJJ2VuZGVkJywKCQkJJ3JhdGVjaGFuZ2UnLAoJCQknZHVyYXRpb25jaGFuZ2UnLAoJCQkndm9sdW1lY2hhbmdlJwoJCV0sCgkJZnVuY3Rpb24oKSB7CgkJCSQualBsYXllci5ldmVudFsgdGhpcyBdID0gJ2pQbGF5ZXJfJyArIHRoaXM7CgkJfQoJKTsKCgkkLmpQbGF5ZXIuaHRtbEV2ZW50ID0gWyAvLyBUaGVzZSBIVE1MIGV2ZW50cyBhcmUgYnViYmxlZCB0aHJvdWdoIHRvIHRoZSBqUGxheWVyIGV2ZW50LCB3aXRob3V0IGFueSBpbnRlcm5hbCBhY3Rpb24uCgkJImxvYWRzdGFydCIsCgkJLy8gInByb2dyZXNzIiwgLy8galBsYXllciB1c2VzIGludGVybmFsbHkgYmVmb3JlIGJ1YmJsaW5nLgoJCS8vICJzdXNwZW5kIiwgLy8galBsYXllciB1c2VzIGludGVybmFsbHkgYmVmb3JlIGJ1YmJsaW5nLgoJCSJhYm9ydCIsCgkJLy8gImVycm9yIiwgLy8galBsYXllciB1c2VzIGludGVybmFsbHkgYmVmb3JlIGJ1YmJsaW5nLgoJCSJlbXB0aWVkIiwKCQkic3RhbGxlZCIsCgkJLy8gInBsYXkiLCAvLyBqUGxheWVyIHVzZXMgaW50ZXJuYWxseSBiZWZvcmUgYnViYmxpbmcuCgkJLy8gInBhdXNlIiwgLy8galBsYXllciB1c2VzIGludGVybmFsbHkgYmVmb3JlIGJ1YmJsaW5nLgoJCSJsb2FkZWRtZXRhZGF0YSIsCgkJLy8gImxvYWRlZGRhdGEiLCAvLyBqUGxheWVyIHVzZXMgaW50ZXJuYWxseSBiZWZvcmUgYnViYmxpbmcuCgkJLy8gIndhaXRpbmciLCAvLyBqUGxheWVyIHVzZXMgaW50ZXJuYWxseSBiZWZvcmUgYnViYmxpbmcuCgkJLy8gInBsYXlpbmciLCAvLyBqUGxheWVyIHVzZXMgaW50ZXJuYWxseSBiZWZvcmUgYnViYmxpbmcuCgkJImNhbnBsYXkiLAoJCSJjYW5wbGF5dGhyb3VnaCIKCQkvLyAic2Vla2luZyIsIC8vIGpQbGF5ZXIgdXNlcyBpbnRlcm5hbGx5IGJlZm9yZSBidWJibGluZy4KCQkvLyAic2Vla2VkIiwgLy8galBsYXllciB1c2VzIGludGVybmFsbHkgYmVmb3JlIGJ1YmJsaW5nLgoJCS8vICJ0aW1ldXBkYXRlIiwgLy8galBsYXllciB1c2VzIGludGVybmFsbHkgYmVmb3JlIGJ1YmJsaW5nLgoJCS8vICJlbmRlZCIsIC8vIGpQbGF5ZXIgdXNlcyBpbnRlcm5hbGx5IGJlZm9yZSBidWJibGluZy4KCQkvLyAicmF0ZWNoYW5nZSIgLy8galBsYXllciB1c2VzIGludGVybmFsbHkgYmVmb3JlIGJ1YmJsaW5nLgoJCS8vICJkdXJhdGlvbmNoYW5nZSIgLy8galBsYXllciB1c2VzIGludGVybmFsbHkgYmVmb3JlIGJ1YmJsaW5nLgoJCS8vICJ2b2x1bWVjaGFuZ2UiIC8vIGpQbGF5ZXIgdXNlcyBpbnRlcm5hbGx5IGJlZm9yZSBidWJibGluZy4KCV07CgoJJC5qUGxheWVyLnBhdXNlID0gZnVuY3Rpb24oKSB7CgkJJC5qUGxheWVyLnByb3RvdHlwZS5kZXN0cm95UmVtb3ZlZCgpOwoJCSQuZWFjaCgkLmpQbGF5ZXIucHJvdG90eXBlLmluc3RhbmNlcywgZnVuY3Rpb24oaSwgZWxlbWVudCkgewoJCQlpZihlbGVtZW50LmRhdGEoImpQbGF5ZXIiKS5zdGF0dXMuc3JjU2V0KSB7IC8vIENoZWNrIHRoYXQgbWVkaWEgaXMgc2V0IG90aGVyd2lzZSB3b3VsZCBjYXVzZSBlcnJvciBldmVudC4KCQkJCWVsZW1lbnQualBsYXllcigicGF1c2UiKTsKCQkJfQoJCX0pOwoJfTsKCgkvLyBEZWZhdWx0IGZvciBqUGxheWVyIG9wdGlvbi50aW1lRm9ybWF0CgkkLmpQbGF5ZXIudGltZUZvcm1hdCA9IHsKCQlzaG93SG91cjogZmFsc2UsCgkJc2hvd01pbjogdHJ1ZSwKCQlzaG93U2VjOiB0cnVlLAoJCXBhZEhvdXI6IGZhbHNlLAoJCXBhZE1pbjogdHJ1ZSwKCQlwYWRTZWM6IHRydWUsCgkJc2VwSG91cjogIjoiLAoJCXNlcE1pbjogIjoiLAoJCXNlcFNlYzogIiIKCX07Cgl2YXIgQ29udmVydFRpbWUgPSBmdW5jdGlvbigpIHsKCQl0aGlzLmluaXQoKTsKCX07CglDb252ZXJ0VGltZS5wcm90b3R5cGUgPSB7CgkJaW5pdDogZnVuY3Rpb24oKSB7CgkJCXRoaXMub3B0aW9ucyA9IHsKCQkJCXRpbWVGb3JtYXQ6ICQualBsYXllci50aW1lRm9ybWF0CgkJCX07CgkJfSwKCQl0aW1lOiBmdW5jdGlvbihzKSB7IC8vIGZ1bmN0aW9uIHVzZWQgb24galBsYXllci5wcm90b3R5cGUuX2NvbnZlcnRUaW1lIHRvIGVuYWJsZSBwZXIgaW5zdGFuY2Ugb3B0aW9ucy4KCQkJcyA9IChzICYmIHR5cGVvZiBzID09PSAnbnVtYmVyJykgPyBzIDogMDsKCgkJCXZhciBteVRpbWUgPSBuZXcgRGF0ZShzICogMTAwMCksCgkJCQlob3VyID0gbXlUaW1lLmdldFVUQ0hvdXJzKCksCgkJCQltaW4gPSB0aGlzLm9wdGlvbnMudGltZUZvcm1hdC5zaG93SG91ciA/IG15VGltZS5nZXRVVENNaW51dGVzKCkgOiBteVRpbWUuZ2V0VVRDTWludXRlcygpICsgaG91ciAqIDYwLAoJCQkJc2VjID0gdGhpcy5vcHRpb25zLnRpbWVGb3JtYXQuc2hvd01pbiA/IG15VGltZS5nZXRVVENTZWNvbmRzKCkgOiBteVRpbWUuZ2V0VVRDU2Vjb25kcygpICsgbWluICogNjAsCgkJCQlzdHJIb3VyID0gKHRoaXMub3B0aW9ucy50aW1lRm9ybWF0LnBhZEhvdXIgJiYgaG91ciA8IDEwKSA/ICIwIiArIGhvdXIgOiBob3VyLAoJCQkJc3RyTWluID0gKHRoaXMub3B0aW9ucy50aW1lRm9ybWF0LnBhZE1pbiAmJiBtaW4gPCAxMCkgPyAiMCIgKyBtaW4gOiBtaW4sCgkJCQlzdHJTZWMgPSAodGhpcy5vcHRpb25zLnRpbWVGb3JtYXQucGFkU2VjICYmIHNlYyA8IDEwKSA/ICIwIiArIHNlYyA6IHNlYywKCQkJCXN0clRpbWUgPSAiIjsKCgkJCXN0clRpbWUgKz0gdGhpcy5vcHRpb25zLnRpbWVGb3JtYXQuc2hvd0hvdXIgPyBzdHJIb3VyICsgdGhpcy5vcHRpb25zLnRpbWVGb3JtYXQuc2VwSG91ciA6ICIiOwoJCQlzdHJUaW1lICs9IHRoaXMub3B0aW9ucy50aW1lRm9ybWF0LnNob3dNaW4gPyBzdHJNaW4gKyB0aGlzLm9wdGlvbnMudGltZUZvcm1hdC5zZXBNaW4gOiAiIjsKCQkJc3RyVGltZSArPSB0aGlzLm9wdGlvbnMudGltZUZvcm1hdC5zaG93U2VjID8gc3RyU2VjICsgdGhpcy5vcHRpb25zLnRpbWVGb3JtYXQuc2VwU2VjIDogIiI7CgoJCQlyZXR1cm4gc3RyVGltZTsKCQl9Cgl9OwoJdmFyIG15Q29udmVydFRpbWUgPSBuZXcgQ29udmVydFRpbWUoKTsKCSQualBsYXllci5jb252ZXJ0VGltZSA9IGZ1bmN0aW9uKHMpIHsKCQlyZXR1cm4gbXlDb252ZXJ0VGltZS50aW1lKHMpOwoJfTsKCgkvLyBBZGFwdGluZyBqUXVlcnkgMS40LjQgY29kZSBmb3IgalF1ZXJ5LmJyb3dzZXIuIFJlcXVpcmVkIHNpbmNlIGpRdWVyeSAxLjMuMiBkb2VzIG5vdCBkZXRlY3QgQ2hyb21lIGFzIHdlYmtpdC4KCSQualBsYXllci51YUJyb3dzZXIgPSBmdW5jdGlvbiggdXNlckFnZW50ICkgewoJCXZhciB1YSA9IHVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpOwoKCQkvLyBVc2VyYWdlbnQgUmVnRXhwCgkJdmFyIHJ3ZWJraXQgPSAvKHdlYmtpdClbIFwvXShbXHcuXSspLzsKCQl2YXIgcm9wZXJhID0gLyhvcGVyYSkoPzouKnZlcnNpb24pP1sgXC9dKFtcdy5dKykvOwoJCXZhciBybXNpZSA9IC8obXNpZSkgKFtcdy5dKykvOwoJCXZhciBybW96aWxsYSA9IC8obW96aWxsYSkoPzouKj8gcnY6KFtcdy5dKykpPy87CgoJCXZhciBtYXRjaCA9IHJ3ZWJraXQuZXhlYyggdWEgKSB8fAoJCQlyb3BlcmEuZXhlYyggdWEgKSB8fAoJCQlybXNpZS5leGVjKCB1YSApIHx8CgkJCXVhLmluZGV4T2YoImNvbXBhdGlibGUiKSA8IDAgJiYgcm1vemlsbGEuZXhlYyggdWEgKSB8fAoJCQlbXTsKCgkJcmV0dXJuIHsgYnJvd3NlcjogbWF0Y2hbMV0gfHwgIiIsIHZlcnNpb246IG1hdGNoWzJdIHx8ICIwIiB9OwoJfTsKCgkvLyBQbGF0Zm9ybSBzbmlmZmVyIGZvciBkZXRlY3RpbmcgbW9iaWxlIGRldmljZXMKCSQualBsYXllci51YVBsYXRmb3JtID0gZnVuY3Rpb24oIHVzZXJBZ2VudCApIHsKCQl2YXIgdWEgPSB1c2VyQWdlbnQudG9Mb3dlckNhc2UoKTsKCgkJLy8gVXNlcmFnZW50IFJlZ0V4cAoJCXZhciBycGxhdGZvcm0gPSAvKGlwYWR8aXBob25lfGlwb2R8YW5kcm9pZHxibGFja2JlcnJ5fHBsYXlib29rfHdpbmRvd3MgY2V8d2Vib3MpLzsKCQl2YXIgcnRhYmxldCA9IC8oaXBhZHxwbGF5Ym9vaykvOwoJCXZhciByYW5kcm9pZCA9IC8oYW5kcm9pZCkvOwoJCXZhciBybW9iaWxlID0gLyhtb2JpbGUpLzsKCgkJdmFyIHBsYXRmb3JtID0gcnBsYXRmb3JtLmV4ZWMoIHVhICkgfHwgW107CgkJdmFyIHRhYmxldCA9IHJ0YWJsZXQuZXhlYyggdWEgKSB8fAoJCQkhcm1vYmlsZS5leGVjKCB1YSApICYmIHJhbmRyb2lkLmV4ZWMoIHVhICkgfHwKCQkJW107CgoJCWlmKHBsYXRmb3JtWzFdKSB7CgkJCXBsYXRmb3JtWzFdID0gcGxhdGZvcm1bMV0ucmVwbGFjZSgvXHMvZywgIl8iKTsgLy8gQ2hhbmdlIHdoaXRlc3BhY2UgdG8gdW5kZXJzY29yZS4gRW5hYmxlcyBkb3Qgbm90YXRpb24uCgkJfQoKCQlyZXR1cm4geyBwbGF0Zm9ybTogcGxhdGZvcm1bMV0gfHwgIiIsIHRhYmxldDogdGFibGV0WzFdIHx8ICIiIH07Cgl9OwoKCSQualBsYXllci5icm93c2VyID0gewoJfTsKCSQualBsYXllci5wbGF0Zm9ybSA9IHsKCX07CgoJdmFyIGJyb3dzZXJNYXRjaCA9ICQualBsYXllci51YUJyb3dzZXIobmF2aWdhdG9yLnVzZXJBZ2VudCk7CglpZiAoIGJyb3dzZXJNYXRjaC5icm93c2VyICkgewoJCSQualBsYXllci5icm93c2VyWyBicm93c2VyTWF0Y2guYnJvd3NlciBdID0gdHJ1ZTsKCQkkLmpQbGF5ZXIuYnJvd3Nlci52ZXJzaW9uID0gYnJvd3Nlck1hdGNoLnZlcnNpb247Cgl9Cgl2YXIgcGxhdGZvcm1NYXRjaCA9ICQualBsYXllci51YVBsYXRmb3JtKG5hdmlnYXRvci51c2VyQWdlbnQpOwoJaWYgKCBwbGF0Zm9ybU1hdGNoLnBsYXRmb3JtICkgewoJCSQualBsYXllci5wbGF0Zm9ybVsgcGxhdGZvcm1NYXRjaC5wbGF0Zm9ybSBdID0gdHJ1ZTsKCQkkLmpQbGF5ZXIucGxhdGZvcm0ubW9iaWxlID0gIXBsYXRmb3JtTWF0Y2gudGFibGV0OwoJCSQualBsYXllci5wbGF0Zm9ybS50YWJsZXQgPSAhIXBsYXRmb3JtTWF0Y2gudGFibGV0OwoJfQoKCS8vIEludGVybmV0IEV4cGxvcmVyIChJRSkgQnJvd3NlciBEb2N1bWVudCBNb2RlIFNuaWZmZXIuIEJhc2VkIG9uIGNvZGUgYXQ6CgkvLyBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvY2MyODgzMjUlMjh2PXZzLjg1JTI5LmFzcHgjR2V0TW9kZQoJJC5qUGxheWVyLmdldERvY01vZGUgPSBmdW5jdGlvbigpIHsKCQl2YXIgZG9jTW9kZTsKCQlpZiAoJC5qUGxheWVyLmJyb3dzZXIubXNpZSkgewoJCQlpZiAoZG9jdW1lbnQuZG9jdW1lbnRNb2RlKSB7IC8vIElFOCBvciBsYXRlcgoJCQkJZG9jTW9kZSA9IGRvY3VtZW50LmRvY3VtZW50TW9kZTsKCQkJfSBlbHNlIHsgLy8gSUUgNS03CgkJCQlkb2NNb2RlID0gNTsgLy8gQXNzdW1lIHF1aXJrcyBtb2RlIHVubGVzcyBwcm92ZW4gb3RoZXJ3aXNlCgkJCQlpZiAoZG9jdW1lbnQuY29tcGF0TW9kZSkgewoJCQkJCWlmIChkb2N1bWVudC5jb21wYXRNb2RlID09PSAiQ1NTMUNvbXBhdCIpIHsKCQkJCQkJZG9jTW9kZSA9IDc7IC8vIHN0YW5kYXJkcyBtb2RlCgkJCQkJfQoJCQkJfQoJCQl9CgkJfQoJCXJldHVybiBkb2NNb2RlOwoJfTsKCSQualBsYXllci5icm93c2VyLmRvY3VtZW50TW9kZSA9ICQualBsYXllci5nZXREb2NNb2RlKCk7CgoJJC5qUGxheWVyLm5hdGl2ZUZlYXR1cmVzID0gewoJCWluaXQ6IGZ1bmN0aW9uKCkgewoKCQkJLyogRnVsbHNjcmVlbiBmdW5jdGlvbiBuYW1pbmcgaW5mbHVlbmNlZCBieSBXM0MgbmFtaW5nLgoJCQkgKiBObyBzdXBwb3J0IGZvcjogTW96aWxsYSBQcm9wb3NhbDogaHR0cHM6Ly93aWtpLm1vemlsbGEub3JnL0dlY2tvOkZ1bGxTY3JlZW5BUEkKCQkJICovCgoJCQl2YXIgZCA9IGRvY3VtZW50LAoJCQkJdiA9IGQuY3JlYXRlRWxlbWVudCgndmlkZW8nKSwKCQkJCXNwZWMgPSB7CgkJCQkJLy8gaHR0cDovL3d3dy53My5vcmcvVFIvZnVsbHNjcmVlbi8KCQkJCQl3M2M6IFsKCQkJCQkJJ2Z1bGxzY3JlZW5FbmFibGVkJywKCQkJCQkJJ2Z1bGxzY3JlZW5FbGVtZW50JywKCQkJCQkJJ3JlcXVlc3RGdWxsc2NyZWVuJywKCQkJCQkJJ2V4aXRGdWxsc2NyZWVuJywKCQkJCQkJJ2Z1bGxzY3JlZW5jaGFuZ2UnLAoJCQkJCQknZnVsbHNjcmVlbmVycm9yJwoJCQkJCV0sCgkJCQkJLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9ET00vVXNpbmdfZnVsbHNjcmVlbl9tb2RlCgkJCQkJbW96OiBbCgkJCQkJCSdtb3pGdWxsU2NyZWVuRW5hYmxlZCcsCgkJCQkJCSdtb3pGdWxsU2NyZWVuRWxlbWVudCcsCgkJCQkJCSdtb3pSZXF1ZXN0RnVsbFNjcmVlbicsCgkJCQkJCSdtb3pDYW5jZWxGdWxsU2NyZWVuJywKCQkJCQkJJ21vemZ1bGxzY3JlZW5jaGFuZ2UnLAoJCQkJCQknbW96ZnVsbHNjcmVlbmVycm9yJwoJCQkJCV0sCgkJCQkJLy8gaHR0cDovL2RldmVsb3Blci5hcHBsZS5jb20vbGlicmFyeS9zYWZhcmkvI2RvY3VtZW50YXRpb24vV2ViS2l0L1JlZmVyZW5jZS9FbGVtZW50Q2xhc3NSZWYvRWxlbWVudC9FbGVtZW50Lmh0bWwKCQkJCQkvLyBodHRwOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9saWJyYXJ5L3NhZmFyaS8jZG9jdW1lbnRhdGlvbi9Vc2VyRXhwZXJpZW5jZS9SZWZlcmVuY2UvRG9jdW1lbnRBZGRpdGlvbnNSZWZlcmVuY2UvRG9jdW1lbnRBZGRpdGlvbnMvRG9jdW1lbnRBZGRpdGlvbnMuaHRtbAoJCQkJCXdlYmtpdDogWwoJCQkJCQknJywKCQkJCQkJJ3dlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCcsCgkJCQkJCSd3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbicsCgkJCQkJCSd3ZWJraXRDYW5jZWxGdWxsU2NyZWVuJywKCQkJCQkJJ3dlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UnLAoJCQkJCQknJwoJCQkJCV0sCgkJCQkJLy8gaHR0cDovL2RldmVsb3Blci5hcHBsZS5jb20vbGlicmFyeS9zYWZhcmkvI2RvY3VtZW50YXRpb24vQXVkaW9WaWRlby9SZWZlcmVuY2UvSFRNTFZpZGVvRWxlbWVudENsYXNzUmVmZXJlbmNlL0hUTUxWaWRlb0VsZW1lbnQvSFRNTFZpZGVvRWxlbWVudC5odG1sCgkJCQkJLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2xpYnJhcnkvc2FmYXJpL3NhbXBsZWNvZGUvSFRNTDVWaWRlb0V2ZW50Rmxvdy9MaXN0aW5ncy9ldmVudHNfanMuaHRtbCMvL2FwcGxlX3JlZi9kb2MvdWlkL0RUUzQwMDEwMDg1LWV2ZW50c19qcy1Eb250TGlua0VsZW1lbnRJRF81CgkJCQkJLy8gRXZlbnRzOiAnd2Via2l0YmVnaW5mdWxsc2NyZWVuJyBhbmQgJ3dlYmtpdGVuZGZ1bGxzY3JlZW4nCgkJCQkJd2Via2l0VmlkZW86IFsKCQkJCQkJJ3dlYmtpdFN1cHBvcnRzRnVsbHNjcmVlbicsCgkJCQkJCSd3ZWJraXREaXNwbGF5aW5nRnVsbHNjcmVlbicsCgkJCQkJCSd3ZWJraXRFbnRlckZ1bGxzY3JlZW4nLAoJCQkJCQknd2Via2l0RXhpdEZ1bGxzY3JlZW4nLAoJCQkJCQknJywKCQkJCQkJJycKCQkJCQldLAoJCQkJCW1zOiBbCgkJCQkJCScnLAoJCQkJCQknbXNGdWxsc2NyZWVuRWxlbWVudCcsCgkJCQkJCSdtc1JlcXVlc3RGdWxsc2NyZWVuJywKCQkJCQkJJ21zRXhpdEZ1bGxzY3JlZW4nLAoJCQkJCQknTVNGdWxsc2NyZWVuQ2hhbmdlJywKCQkJCQkJJ01TRnVsbHNjcmVlbkVycm9yJwoJCQkJCV0KCQkJCX0sCgkJCQlzcGVjT3JkZXIgPSBbCgkJCQkJJ3czYycsCgkJCQkJJ21veicsCgkJCQkJJ3dlYmtpdCcsCgkJCQkJJ3dlYmtpdFZpZGVvJywKCQkJCQknbXMnCgkJCQldLAoJCQkJZnMsIGksIGlsOwoKCQkJdGhpcy5mdWxsc2NyZWVuID0gZnMgPSB7CgkJCQlzdXBwb3J0OiB7CgkJCQkJdzNjOiAhIWRbc3BlYy53M2NbMF1dLAoJCQkJCW1vejogISFkW3NwZWMubW96WzBdXSwKCQkJCQl3ZWJraXQ6IHR5cGVvZiBkW3NwZWMud2Via2l0WzNdXSA9PT0gJ2Z1bmN0aW9uJywKCQkJCQl3ZWJraXRWaWRlbzogdHlwZW9mIHZbc3BlYy53ZWJraXRWaWRlb1syXV0gPT09ICdmdW5jdGlvbicsCgkJCQkJbXM6IHR5cGVvZiB2W3NwZWMubXNbMl1dID09PSAnZnVuY3Rpb24nCgkJCQl9LAoJCQkJdXNlZDoge30KCQkJfTsKCgkJCS8vIFN0b3JlIHRoZSBuYW1lIG9mIHRoZSBzcGVjIGJlaW5nIHVzZWQgYW5kIGFzIGEgaGFuZHkgYm9vbGVhbi4KCQkJZm9yKGkgPSAwLCBpbCA9IHNwZWNPcmRlci5sZW5ndGg7IGkgPCBpbDsgaSsrKSB7CgkJCQl2YXIgbiA9IHNwZWNPcmRlcltpXTsKCQkJCWlmKGZzLnN1cHBvcnRbbl0pIHsKCQkJCQlmcy5zcGVjID0gbjsKCQkJCQlmcy51c2VkW25dID0gdHJ1ZTsKCQkJCQlicmVhazsKCQkJCX0KCQkJfQoKCQkJaWYoZnMuc3BlYykgewoJCQkJdmFyIHMgPSBzcGVjW2ZzLnNwZWNdOwoJCQkJZnMuYXBpID0gewoJCQkJCWZ1bGxzY3JlZW5FbmFibGVkOiB0cnVlLAoJCQkJCWZ1bGxzY3JlZW5FbGVtZW50OiBmdW5jdGlvbihlbGVtKSB7CgkJCQkJCWVsZW0gPSBlbGVtID8gZWxlbSA6IGQ7IC8vIFZpZGVvIGVsZW1lbnQgcmVxdWlyZWQgZm9yIHdlYmtpdFZpZGVvCgkJCQkJCXJldHVybiBlbGVtW3NbMV1dOwoJCQkJCX0sCgkJCQkJcmVxdWVzdEZ1bGxzY3JlZW46IGZ1bmN0aW9uKGVsZW0pIHsKCQkJCQkJcmV0dXJuIGVsZW1bc1syXV0oKTsgLy8gQ2hyb21lIGFuZCBPcGVyYSB3YW50IHBhcmFtZXRlciAoRWxlbWVudC5BTExPV19LRVlCT0FSRF9JTlBVVCkgYnV0IFNhZmFyaSBmYWlscyBpZiBmbGFnIHVzZWQuCgkJCQkJfSwKCQkJCQlleGl0RnVsbHNjcmVlbjogZnVuY3Rpb24oZWxlbSkgewoJCQkJCQllbGVtID0gZWxlbSA/IGVsZW0gOiBkOyAvLyBWaWRlbyBlbGVtZW50IHJlcXVpcmVkIGZvciB3ZWJraXRWaWRlbwoJCQkJCQlyZXR1cm4gZWxlbVtzWzNdXSgpOwoJCQkJCX0KCQkJCX07CgkJCQlmcy5ldmVudCA9IHsKCQkJCQlmdWxsc2NyZWVuY2hhbmdlOiBzWzRdLAoJCQkJCWZ1bGxzY3JlZW5lcnJvcjogc1s1XQoJCQkJfTsKCQkJfSBlbHNlIHsKCQkJCWZzLmFwaSA9IHsKCQkJCQlmdWxsc2NyZWVuRW5hYmxlZDogZmFsc2UsCgkJCQkJZnVsbHNjcmVlbkVsZW1lbnQ6IGZ1bmN0aW9uKCkgewoJCQkJCQlyZXR1cm4gbnVsbDsKCQkJCQl9LAoJCQkJCXJlcXVlc3RGdWxsc2NyZWVuOiBmdW5jdGlvbigpIHt9LAoJCQkJCWV4aXRGdWxsc2NyZWVuOiBmdW5jdGlvbigpIHt9CgkJCQl9OwoJCQkJZnMuZXZlbnQgPSB7fTsKCQkJfQoJCX0KCX07CgkkLmpQbGF5ZXIubmF0aXZlRmVhdHVyZXMuaW5pdCgpOwoKCS8vIFRoZSBrZXlib2FyZCBjb250cm9sIHN5c3RlbS4KCgkvLyBUaGUgY3VycmVudCBqUGxheWVyIGluc3RhbmNlIGluIGZvY3VzLgoJJC5qUGxheWVyLmZvY3VzID0gbnVsbDsKCgkvLyBUaGUgbGlzdCBvZiBlbGVtZW50IG5vZGUgbmFtZXMgdG8gaWdub3JlIHdpdGgga2V5IGNvbnRyb2xzLgoJJC5qUGxheWVyLmtleUlnbm9yZUVsZW1lbnROYW1lcyA9ICJBIElOUFVUIFRFWFRBUkVBIFNFTEVDVCBCVVRUT04iOwoKCS8vIFRoZSBmdW5jdGlvbiB0aGF0IGRlYWxzIHdpdGgga2V5IHByZXNzZXMuCgl2YXIga2V5QmluZGluZ3MgPSBmdW5jdGlvbihldmVudCkgewoJCXZhciBmID0gJC5qUGxheWVyLmZvY3VzLAoJCQlpZ25vcmVLZXk7CgoJCS8vIEEgalBsYXllciBpbnN0YW5jZSBtdXN0IGJlIGluIGZvY3VzLiBpZS4sIGtleUVuYWJsZWQgYW5kIHRoZSBsYXN0IG9uZSBwbGF5ZWQuCgkJaWYoZikgewoJCQkvLyBXaGF0IGdlbmVyYXRlZCB0aGUga2V5IHByZXNzPwoJCQkkLmVhY2goICQualBsYXllci5rZXlJZ25vcmVFbGVtZW50TmFtZXMuc3BsaXQoL1xzKy9nKSwgZnVuY3Rpb24oaSwgbmFtZSkgewoJCQkJLy8gVGhlIHN0cmluZ3Mgc2hvdWxkIGFscmVhZHkgYmUgdXBwZXJjYXNlLgoJCQkJaWYoZXZlbnQudGFyZ2V0Lm5vZGVOYW1lLnRvVXBwZXJDYXNlKCkgPT09IG5hbWUudG9VcHBlckNhc2UoKSkgewoJCQkJCWlnbm9yZUtleSA9IHRydWU7CgkJCQkJcmV0dXJuIGZhbHNlOyAvLyBleGl0IGVhY2guCgkJCQl9CgkJCX0pOwoJCQlpZighaWdub3JlS2V5KSB7CgkJCQkvLyBTZWUgaWYgdGhlIGtleSBwcmVzc2VkIG1hdGNoZXMgYW55IG9mIHRoZSBiaW5kaW5ncy4KCQkJCSQuZWFjaChmLm9wdGlvbnMua2V5QmluZGluZ3MsIGZ1bmN0aW9uKGFjdGlvbiwgYmluZGluZykgewoJCQkJCS8vIFRoZSBiaW5kaW5nIGNvdWxkIGJlIGEgbnVsbCB3aGVuIHRoZSBkZWZhdWx0IGhhcyBiZWVuIGRpc2FibGVkLiBpZS4sIDFzdCBjbGF1c2UgaW4gaWYoKQoJCQkJCWlmKAoJCQkJCQkoYmluZGluZyAmJiAkLmlzRnVuY3Rpb24oYmluZGluZy5mbikpICYmCgkJCQkJCSgodHlwZW9mIGJpbmRpbmcua2V5ID09PSAnbnVtYmVyJyAmJiBldmVudC53aGljaCA9PT0gYmluZGluZy5rZXkpIHx8CgkJCQkJCSh0eXBlb2YgYmluZGluZy5rZXkgPT09ICdzdHJpbmcnICYmIGV2ZW50LmtleSA9PT0gYmluZGluZy5rZXkpKQoJCQkJCSkgewoJCQkJCQlldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAvLyBLZXkgYmVpbmcgdXNlZCBieSBqUGxheWVyLCBzbyBwcmV2ZW50IGRlZmF1bHQgb3BlcmF0aW9uLgoJCQkJCQliaW5kaW5nLmZuKGYpOwoJCQkJCQlyZXR1cm4gZmFsc2U7IC8vIGV4aXQgZWFjaC4KCQkJCQl9CgkJCQl9KTsKCQkJfQoJCX0KCX07CgoJJC5qUGxheWVyLmtleXMgPSBmdW5jdGlvbihlbikgewoJCXZhciBldmVudCA9ICJrZXlkb3duLmpQbGF5ZXIiOwoJCS8vIFJlbW92ZSBhbnkgYmluZGluZywganVzdCBpbiBjYXNlIGVuYWJsZWQgbW9yZSB0aGFuIG9uY2UuCgkJJChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLnVuYmluZChldmVudCk7CgkJaWYoZW4pIHsKCQkJJChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmJpbmQoZXZlbnQsIGtleUJpbmRpbmdzKTsKCQl9Cgl9OwoKCS8vIEVuYWJsZSB0aGUgZ2xvYmFsIGtleSBjb250cm9sIGhhbmRsZXIgcmVhZHkgZm9yIGFueSBqUGxheWVyIGluc3RhbmNlIHdpdGggdGhlIGtleUVuYWJsZWQgb3B0aW9uIGVuYWJsZWQuCgkkLmpQbGF5ZXIua2V5cyh0cnVlKTsKCgkkLmpQbGF5ZXIucHJvdG90eXBlID0gewoJCWNvdW50OiAwLCAvLyBTdGF0aWMgVmFyaWFibGU6IENoYW5nZSBpdCB2aWEgcHJvdG90eXBlLgoJCXZlcnNpb246IHsgLy8gU3RhdGljIE9iamVjdAoJCQlzY3JpcHQ6ICIyLjkuMiIsCgkJCW5lZWRGbGFzaDogIjIuOS4wIiwKCQkJZmxhc2g6ICJ1bmtub3duIgoJCX0sCgkJb3B0aW9uczogeyAvLyBJbnN0YW5jZWQgaW4gJC5qUGxheWVyKCkgY29uc3RydWN0b3IKCQkJc3dmUGF0aDogImpzIiwgLy8gUGF0aCB0byBqcXVlcnkuanBsYXllci5zd2YuIENhbiBiZSByZWxhdGl2ZSwgYWJzb2x1dGUgb3Igc2VydmVyIHJvb3QgcmVsYXRpdmUuCgkJCXNvbHV0aW9uOiAiaHRtbCwgZmxhc2giLCAvLyBWYWxpZCBzb2x1dGlvbnM6IGh0bWwsIGZsYXNoLCBhdXJvcmEuIE9yZGVyIGRlZmluZXMgcHJpb3JpdHkuIDFzdCBpcyBoaWdoZXN0LAoJCQlzdXBwbGllZDogIm1wMyIsIC8vIERlZmluZXMgd2hpY2ggZm9ybWF0cyBqUGxheWVyIHdpbGwgdHJ5IGFuZCBzdXBwb3J0IGFuZCB0aGUgcHJpb3JpdHkgYnkgdGhlIG9yZGVyLiAxc3QgaXMgaGlnaGVzdCwKCQkJYXVyb3JhRm9ybWF0czogIndhdiIsIC8vIExpc3QgdGhlIGF1cm9yYS5qcyBjb2RlY3MgYmVpbmcgbG9hZGVkIGV4dGVybmFsbHkuIEl0cyBjb3JlIHN1cHBvcnRzICJ3YXYiLiBTcGVjaWZ5IGZvcm1hdCBpbiBqUGxheWVyIGNvbnRleHQuIEVHLiwgVGhlIGFhYy5qcyBjb2RlYyBnaXZlcyB0aGUgIm00YSIgZm9ybWF0LgoJCQlwcmVsb2FkOiAnbWV0YWRhdGEnLCAgLy8gSFRNTDUgU3BlYyB2YWx1ZXM6IG5vbmUsIG1ldGFkYXRhLCBhdXRvLgoJCQl2b2x1bWU6IDAuOCwgLy8gVGhlIHZvbHVtZS4gTnVtYmVyIDAgdG8gMS4KCQkJbXV0ZWQ6IGZhbHNlLAoJCQlyZW1haW5pbmdEdXJhdGlvbjogZmFsc2UsIC8vIFdoZW4gdHJ1ZSwgdGhlIHJlbWFpbmluZyB0aW1lIGlzIHNob3duIGluIHRoZSBkdXJhdGlvbiBHVUkgZWxlbWVudC4KCQkJdG9nZ2xlRHVyYXRpb246IGZhbHNlLCAvLyBXaGVuIHRydWUsIGNsaWNrcyBvbiB0aGUgZHVyYXRpb24gdG9nZ2xlIGJldHdlZW4gdGhlIGR1cmF0aW9uIGFuZCByZW1haW5pbmcgZGlzcGxheS4KCQkJY2FwdHVyZUR1cmF0aW9uOiB0cnVlLCAvLyBXaGVuIHRydWUsIGNsaWNrcyBvbiB0aGUgZHVyYXRpb24gYXJlIGNhcHR1cmVkIGFuZCBubyBsb25nZXIgcHJvcGFnYXRlIHVwIHRoZSBET00uCgkJCXBsYXliYWNrUmF0ZTogMSwKCQkJZGVmYXVsdFBsYXliYWNrUmF0ZTogMSwKCQkJbWluUGxheWJhY2tSYXRlOiAwLjUsCgkJCW1heFBsYXliYWNrUmF0ZTogNCwKCQkJd21vZGU6ICJvcGFxdWUiLCAvLyBWYWxpZCB3bW9kZTogd2luZG93LCB0cmFuc3BhcmVudCwgb3BhcXVlLCBkaXJlY3QsIGdwdS4gCgkJCWJhY2tncm91bmRDb2xvcjogIiMwMDAwMDAiLCAvLyBUbyBkZWZpbmUgdGhlIGpQbGF5ZXIgZGl2IGFuZCBGbGFzaCBiYWNrZ3JvdW5kIGNvbG9yLgoJCQljc3NTZWxlY3RvckFuY2VzdG9yOiAiI2pwX2NvbnRhaW5lcl8xIiwKCQkJY3NzU2VsZWN0b3I6IHsgLy8gKiBkZW5vdGVzIHByb3BlcnRpZXMgdGhhdCBzaG91bGQgb25seSBiZSByZXF1aXJlZCB3aGVuIHZpZGVvIG1lZGlhIHR5cGUgcmVxdWlyZWQuIF9jc3NTZWxlY3RvcigpIHdvdWxkIHJlcXVpcmUgY2hhbmdlcyB0byBlbmFibGUgc3BsaXR0aW5nIHRoZXNlIGludG8gQXVkaW8gYW5kIFZpZGVvIGRlZmF1bHRzLgoJCQkJdmlkZW9QbGF5OiAiLmpwLXZpZGVvLXBsYXkiLCAvLyAqCgkJCQlwbGF5OiAiLmpwLXBsYXkiLAoJCQkJcGF1c2U6ICIuanAtcGF1c2UiLAoJCQkJc3RvcDogIi5qcC1zdG9wIiwKCQkJCXNlZWtCYXI6ICIuanAtc2Vlay1iYXIiLAoJCQkJcGxheUJhcjogIi5qcC1wbGF5LWJhciIsCgkJCQltdXRlOiAiLmpwLW11dGUiLAoJCQkJdW5tdXRlOiAiLmpwLXVubXV0ZSIsCgkJCQl2b2x1bWVCYXI6ICIuanAtdm9sdW1lLWJhciIsCgkJCQl2b2x1bWVCYXJWYWx1ZTogIi5qcC12b2x1bWUtYmFyLXZhbHVlIiwKCQkJCXZvbHVtZU1heDogIi5qcC12b2x1bWUtbWF4IiwKCQkJCXBsYXliYWNrUmF0ZUJhcjogIi5qcC1wbGF5YmFjay1yYXRlLWJhciIsCgkJCQlwbGF5YmFja1JhdGVCYXJWYWx1ZTogIi5qcC1wbGF5YmFjay1yYXRlLWJhci12YWx1ZSIsCgkJCQljdXJyZW50VGltZTogIi5qcC1jdXJyZW50LXRpbWUiLAoJCQkJZHVyYXRpb246ICIuanAtZHVyYXRpb24iLAoJCQkJdGl0bGU6ICIuanAtdGl0bGUiLAoJCQkJZnVsbFNjcmVlbjogIi5qcC1mdWxsLXNjcmVlbiIsIC8vICoKCQkJCXJlc3RvcmVTY3JlZW46ICIuanAtcmVzdG9yZS1zY3JlZW4iLCAvLyAqCgkJCQlyZXBlYXQ6ICIuanAtcmVwZWF0IiwKCQkJCXJlcGVhdE9mZjogIi5qcC1yZXBlYXQtb2ZmIiwKCQkJCWd1aTogIi5qcC1ndWkiLCAvLyBUaGUgaW50ZXJmYWNlIHVzZWQgd2l0aCBhdXRvaGlkZSBmZWF0dXJlLgoJCQkJbm9Tb2x1dGlvbjogIi5qcC1uby1zb2x1dGlvbiIgLy8gRm9yIGVycm9yIGZlZWRiYWNrIHdoZW4galBsYXllciBjYW5ub3QgZmluZCBhIHNvbHV0aW9uLgoJCQl9LAoJCQlzdGF0ZUNsYXNzOiB7IC8vIENsYXNzZXMgYWRkZWQgdG8gdGhlIGNzc1NlbGVjdG9yQW5jZXN0b3IgdG8gaW5kaWNhdGUgdGhlIHN0YXRlLgoJCQkJcGxheWluZzogImpwLXN0YXRlLXBsYXlpbmciLAoJCQkJc2Vla2luZzogImpwLXN0YXRlLXNlZWtpbmciLAoJCQkJbXV0ZWQ6ICJqcC1zdGF0ZS1tdXRlZCIsCgkJCQlsb29wZWQ6ICJqcC1zdGF0ZS1sb29wZWQiLAoJCQkJZnVsbFNjcmVlbjogImpwLXN0YXRlLWZ1bGwtc2NyZWVuIiwKCQkJCW5vVm9sdW1lOiAianAtc3RhdGUtbm8tdm9sdW1lIgoJCQl9LAoJCQl1c2VTdGF0ZUNsYXNzU2tpbjogZmFsc2UsIC8vIEEgc3RhdGUgY2xhc3Mgc2tpbiByZWxpZXMgb24gdGhlIHN0YXRlIGNsYXNzZXMgdG8gY2hhbmdlIHRoZSB2aXN1YWwgYXBwZWFyYW5jZS4gVGhlIHNpbmdsZSBjb250cm9sIHRvZ2dsZXMgdGhlIGVmZmVjdCwgZm9yIGV4YW1wbGU6IHBsYXkgdGhlbiBwYXVzZSwgbXV0ZSB0aGVuIHVubXV0ZS4KCQkJYXV0b0JsdXI6IHRydWUsIC8vIEdVSSBjb250cm9sIGhhbmRsZXJzIHdpbGwgZHJvcCBmb2N1cyBhZnRlciBjbGlja3MuCgkJCXNtb290aFBsYXlCYXI6IGZhbHNlLCAvLyBTbW9vdGhzIHRoZSBwbGF5IGJhciB0cmFuc2l0aW9ucywgd2hpY2ggYWZmZWN0cyBjbGlja3MgYW5kIHNob3J0IG1lZGlhIHdpdGggYmlnIGNoYW5nZXMgcGVyIHNlY29uZC4KCQkJZnVsbFNjcmVlbjogZmFsc2UsIC8vIE5hdGl2ZSBGdWxsIFNjcmVlbgoJCQlmdWxsV2luZG93OiBmYWxzZSwKCQkJYXV0b2hpZGU6IHsKCQkJCXJlc3RvcmVkOiBmYWxzZSwgLy8gQ29udHJvbHMgdGhlIGludGVyZmFjZSBhdXRvaGlkZSBmZWF0dXJlLgoJCQkJZnVsbDogdHJ1ZSwgLy8gQ29udHJvbHMgdGhlIGludGVyZmFjZSBhdXRvaGlkZSBmZWF0dXJlLgoJCQkJZmFkZUluOiAyMDAsIC8vIE1pbGxpc2Vjb25kcy4gVGhlIHBlcmlvZCBvZiB0aGUgZmFkZUluIGFuaW0uCgkJCQlmYWRlT3V0OiA2MDAsIC8vIE1pbGxpc2Vjb25kcy4gVGhlIHBlcmlvZCBvZiB0aGUgZmFkZU91dCBhbmltLgoJCQkJaG9sZDogMTAwMCAvLyBNaWxsaXNlY29uZHMuIFRoZSBwZXJpb2Qgb2YgdGhlIHBhdXNlIGJlZm9yZSBhdXRvaGlkZSBiZWluZ3MuCgkJCX0sCgkJCWxvb3A6IGZhbHNlLAoJCQlyZXBlYXQ6IGZ1bmN0aW9uKGV2ZW50KSB7IC8vIFRoZSBkZWZhdWx0IGpQbGF5ZXIgcmVwZWF0IGV2ZW50IGhhbmRsZXIKCQkJCWlmKGV2ZW50LmpQbGF5ZXIub3B0aW9ucy5sb29wKSB7CgkJCQkJJCh0aGlzKS51bmJpbmQoIi5qUGxheWVyUmVwZWF0IikuYmluZCgkLmpQbGF5ZXIuZXZlbnQuZW5kZWQgKyAiLmpQbGF5ZXIualBsYXllclJlcGVhdCIsIGZ1bmN0aW9uKCkgewoJCQkJCQkkKHRoaXMpLmpQbGF5ZXIoInBsYXkiKTsKCQkJCQl9KTsKCQkJCX0gZWxzZSB7CgkJCQkJJCh0aGlzKS51bmJpbmQoIi5qUGxheWVyUmVwZWF0Iik7CgkJCQl9CgkJCX0sCgkJCW5hdGl2ZVZpZGVvQ29udHJvbHM6IHsKCQkJCS8vIFdvcmtzIHdlbGwgb24gc3RhbmRhcmQgYnJvd3NlcnMuCgkJCQkvLyBQaG9uZSBhbmQgdGFibGV0IGJyb3dzZXJzIGNhbiBoYXZlIHByb2JsZW1zIHdpdGggdGhlIGNvbnRyb2xzIGRpc2FwcGVhcmluZy4KCQkJfSwKCQkJbm9GdWxsV2luZG93OiB7CgkJCQltc2llOiAvbXNpZSBbMC02XVwuLywKCQkJCWlwYWQ6IC9pcGFkLio/b3MgWzAtNF1cLi8sCgkJCQlpcGhvbmU6IC9pcGhvbmUvLAoJCQkJaXBvZDogL2lwb2QvLAoJCQkJYW5kcm9pZF9wYWQ6IC9hbmRyb2lkIFswLTNdXC4oPyEuKj9tb2JpbGUpLywKCQkJCWFuZHJvaWRfcGhvbmU6IC8oPz0uKmFuZHJvaWQpKD8hLipjaHJvbWUpKD89Liptb2JpbGUpLywKCQkJCWJsYWNrYmVycnk6IC9ibGFja2JlcnJ5LywKCQkJCXdpbmRvd3NfY2U6IC93aW5kb3dzIGNlLywKCQkJCWllbW9iaWxlOiAvaWVtb2JpbGUvLAoJCQkJd2Vib3M6IC93ZWJvcy8KCQkJfSwKCQkJbm9Wb2x1bWU6IHsKCQkJCWlwYWQ6IC9pcGFkLywKCQkJCWlwaG9uZTogL2lwaG9uZS8sCgkJCQlpcG9kOiAvaXBvZC8sCgkJCQlhbmRyb2lkX3BhZDogL2FuZHJvaWQoPyEuKj9tb2JpbGUpLywKCQkJCWFuZHJvaWRfcGhvbmU6IC9hbmRyb2lkLio/bW9iaWxlLywKCQkJCWJsYWNrYmVycnk6IC9ibGFja2JlcnJ5LywKCQkJCXdpbmRvd3NfY2U6IC93aW5kb3dzIGNlLywKCQkJCWllbW9iaWxlOiAvaWVtb2JpbGUvLAoJCQkJd2Vib3M6IC93ZWJvcy8sCgkJCQlwbGF5Ym9vazogL3BsYXlib29rLwoJCQl9LAoJCQl0aW1lRm9ybWF0OiB7CgkJCQkvLyBTcGVjaWZpYyB0aW1lIGZvcm1hdCBmb3IgdGhpcyBpbnN0YW5jZS4gVGhlIHN1cHBvcnRlZCBvcHRpb25zIGFyZSBkZWZpbmVkIGluICQualBsYXllci50aW1lRm9ybWF0CgkJCQkvLyBGb3IgdGhlIHVuZGVmaW5lZCBvcHRpb25zIHdlIHVzZSB0aGUgZGVmYXVsdCBmcm9tICQualBsYXllci50aW1lRm9ybWF0CgkJCX0sCgkJCWtleUVuYWJsZWQ6IGZhbHNlLCAvLyBFbmFibGVzIGtleWJvYXJkIGNvbnRyb2xzLgoJCQlhdWRpb0Z1bGxTY3JlZW46IGZhbHNlLCAvLyBFbmFibGVzIGtleWJvYXJkIGNvbnRyb2xzIHRvIGVudGVyIGZ1bGwgc2NyZWVuIHdpdGggYXVkaW8gbWVkaWEuCgkJCWtleUJpbmRpbmdzOiB7IC8vIFRoZSBrZXkgY29udHJvbCBvYmplY3QsIGRlZmluaW5nIHRoZSBrZXkgY29kZXMgYW5kIHRoZSBmdW5jdGlvbnMgdG8gZXhlY3V0ZS4KCQkJCS8vIFRoZSBwYXJhbWV0ZXIsIGYgPSAkLmpQbGF5ZXIuZm9jdXMsIHdpbGwgYmUgY2hlY2tlZCB0cnVldGh5IGJlZm9yZSBhdHRlbXB0aW5nIHRvIGNhbGwgYW55IG9mIHRoZXNlIGZ1bmN0aW9ucy4KCQkJCS8vIFByb3BlcnRpZXMgbWF5IGJlIGFkZGVkIHRvIHRoaXMgb2JqZWN0LCBpbiBrZXkvZm4gcGFpcnMsIHRvIGVuYWJsZSBvdGhlciBrZXkgY29udHJvbHMuIEVHLCBmb3IgdGhlIHBsYXlsaXN0IGFkZC1vbi4KCQkJCXBsYXk6IHsKCQkJCQlrZXk6IDgwLCAvLyBwCgkJCQkJZm46IGZ1bmN0aW9uKGYpIHsKCQkJCQkJaWYoZi5zdGF0dXMucGF1c2VkKSB7CgkJCQkJCQlmLnBsYXkoKTsKCQkJCQkJfSBlbHNlIHsKCQkJCQkJCWYucGF1c2UoKTsKCQkJCQkJfQoJCQkJCX0KCQkJCX0sCgkJCQlmdWxsU2NyZWVuOiB7CgkJCQkJa2V5OiA3MCwgLy8gZgoJCQkJCWZuOiBmdW5jdGlvbihmKSB7CgkJCQkJCWlmKGYuc3RhdHVzLnZpZGVvIHx8IGYub3B0aW9ucy5hdWRpb0Z1bGxTY3JlZW4pIHsKCQkJCQkJCWYuX3NldE9wdGlvbigiZnVsbFNjcmVlbiIsICFmLm9wdGlvbnMuZnVsbFNjcmVlbik7CgkJCQkJCX0KCQkJCQl9CgkJCQl9LAoJCQkJbXV0ZWQ6IHsKCQkJCQlrZXk6IDc3LCAvLyBtCgkJCQkJZm46IGZ1bmN0aW9uKGYpIHsKCQkJCQkJZi5fbXV0ZWQoIWYub3B0aW9ucy5tdXRlZCk7CgkJCQkJfQoJCQkJfSwKCQkJCXZvbHVtZVVwOiB7CgkJCQkJa2V5OiAxOTAsIC8vIC4KCQkJCQlmbjogZnVuY3Rpb24oZikgewoJCQkJCQlmLnZvbHVtZShmLm9wdGlvbnMudm9sdW1lICsgMC4xKTsKCQkJCQl9CgkJCQl9LAoJCQkJdm9sdW1lRG93bjogewoJCQkJCWtleTogMTg4LCAvLyAsCgkJCQkJZm46IGZ1bmN0aW9uKGYpIHsKCQkJCQkJZi52b2x1bWUoZi5vcHRpb25zLnZvbHVtZSAtIDAuMSk7CgkJCQkJfQoJCQkJfSwKCQkJCWxvb3A6IHsKCQkJCQlrZXk6IDc2LCAvLyBsCgkJCQkJZm46IGZ1bmN0aW9uKGYpIHsKCQkJCQkJZi5fbG9vcCghZi5vcHRpb25zLmxvb3ApOwoJCQkJCX0KCQkJCX0KCQkJfSwKCQkJdmVydGljYWxWb2x1bWU6IGZhbHNlLCAvLyBDYWxjdWxhdGUgdm9sdW1lIGZyb20gdGhlIGJvdHRvbSBvZiB0aGUgdm9sdW1lIGJhci4gRGVmYXVsdCBpcyBmcm9tIHRoZSBsZWZ0LiBBbHNvIHZvbHVtZSBhZmZlY3RzIGVpdGhlciB3aWR0aCBvciBoZWlnaHQuCgkJCXZlcnRpY2FsUGxheWJhY2tSYXRlOiBmYWxzZSwKCQkJZ2xvYmFsVm9sdW1lOiBmYWxzZSwgLy8gU2V0IHRvIG1ha2Ugdm9sdW1lIGFuZCBtdXRlZCBjaGFuZ2VzIGFmZmVjdCBhbGwgalBsYXllciBpbnN0YW5jZXMgd2l0aCB0aGlzIG9wdGlvbiBlbmFibGVkCgkJCWlkUHJlZml4OiAianAiLCAvLyBQcmVmaXggZm9yIHRoZSBpZHMgb2YgaHRtbCBlbGVtZW50cyBjcmVhdGVkIGJ5IGpQbGF5ZXIuIEZvciBmbGFzaCwgdGhpcyBtdXN0IG5vdCBpbmNsdWRlIGNoYXJhY3RlcnM6IC4gLSArICogLyBcCgkJCW5vQ29uZmxpY3Q6ICJqUXVlcnkiLAoJCQllbXVsYXRlSHRtbDogZmFsc2UsIC8vIEVtdWxhdGVzIHRoZSBIVE1MNSBNZWRpYSBlbGVtZW50IG9uIHRoZSBqUGxheWVyIGVsZW1lbnQuCgkJCWNvbnNvbGVBbGVydHM6IHRydWUsIC8vIEFsZXJ0cyBhcmUgc2VudCB0byB0aGUgY29uc29sZS5sb2coKSBpbnN0ZWFkIG9mIGFsZXJ0KCkuCgkJCWVycm9yQWxlcnRzOiBmYWxzZSwKCQkJd2FybmluZ0FsZXJ0czogZmFsc2UKCQl9LAoJCW9wdGlvbnNBdWRpbzogewoJCQlzaXplOiB7CgkJCQl3aWR0aDogIjBweCIsCgkJCQloZWlnaHQ6ICIwcHgiLAoJCQkJY3NzQ2xhc3M6ICIiCgkJCX0sCgkJCXNpemVGdWxsOiB7CgkJCQl3aWR0aDogIjBweCIsCgkJCQloZWlnaHQ6ICIwcHgiLAoJCQkJY3NzQ2xhc3M6ICIiCgkJCX0KCQl9LAoJCW9wdGlvbnNWaWRlbzogewoJCQlzaXplOiB7CgkJCQl3aWR0aDogIjQ4MHB4IiwKCQkJCWhlaWdodDogIjI3MHB4IiwKCQkJCWNzc0NsYXNzOiAianAtdmlkZW8tMjcwcCIKCQkJfSwKCQkJc2l6ZUZ1bGw6IHsKCQkJCXdpZHRoOiAiMTAwJSIsCgkJCQloZWlnaHQ6ICIxMDAlIiwKCQkJCWNzc0NsYXNzOiAianAtdmlkZW8tZnVsbCIKCQkJfQoJCX0sCgkJaW5zdGFuY2VzOiB7fSwgLy8gU3RhdGljIE9iamVjdAoJCXN0YXR1czogeyAvLyBJbnN0YW5jZWQgaW4gX2luaXQoKQoJCQlzcmM6ICIiLAoJCQltZWRpYToge30sCgkJCXBhdXNlZDogdHJ1ZSwKCQkJZm9ybWF0OiB7fSwKCQkJZm9ybWF0VHlwZTogIiIsCgkJCXdhaXRGb3JQbGF5OiB0cnVlLCAvLyBTYW1lIGFzIHdhaXRGb3JMb2FkIGV4Y2VwdCBpbiBjYXNlIHdoZXJlIHByZWxvYWRpbmcuCgkJCXdhaXRGb3JMb2FkOiB0cnVlLAoJCQlzcmNTZXQ6IGZhbHNlLAoJCQl2aWRlbzogZmFsc2UsIC8vIFRydWUgaWYgcGxheWluZyBhIHZpZGVvCgkJCXNlZWtQZXJjZW50OiAwLAoJCQljdXJyZW50UGVyY2VudFJlbGF0aXZlOiAwLAoJCQljdXJyZW50UGVyY2VudEFic29sdXRlOiAwLAoJCQljdXJyZW50VGltZTogMCwKCQkJZHVyYXRpb246IDAsCgkJCXJlbWFpbmluZzogMCwKCQkJdmlkZW9XaWR0aDogMCwgLy8gSW50cmluc2ljIHdpZHRoIG9mIHRoZSB2aWRlbyBpbiBwaXhlbHMuCgkJCXZpZGVvSGVpZ2h0OiAwLCAvLyBJbnRyaW5zaWMgaGVpZ2h0IG9mIHRoZSB2aWRlbyBpbiBwaXhlbHMuCgkJCXJlYWR5U3RhdGU6IDAsCgkJCW5ldHdvcmtTdGF0ZTogMCwKCQkJcGxheWJhY2tSYXRlOiAxLCAvLyBXYXJuaW5nIC0gTm93IGJvdGggYW4gb3B0aW9uIGFuZCBhIHN0YXR1cyBwcm9wZXJ0eQoJCQllbmRlZDogMAoKLyoJCVBlcnNpc3RhbnQgc3RhdHVzIHByb3BlcnRpZXMgY3JlYXRlZCBkeW5hbWljYWxseSBhdCBfaW5pdCgpOgoJCQl3aWR0aAoJCQloZWlnaHQKCQkJY3NzQ2xhc3MKCQkJbmF0aXZlVmlkZW9Db250cm9scwoJCQlub0Z1bGxXaW5kb3cKCQkJbm9Wb2x1bWUKCQkJcGxheWJhY2tSYXRlRW5hYmxlZCAvLyBXYXJuaW5nIC0gVGVjaG5pY2FsbHksIHdlIGNhbiBoYXZlIGJvdGggRmxhc2ggYW5kIEhUTUwsIHNvIHRoaXMgbWlnaHQgbm90IGJlIGNvcnJlY3QgaWYgdGhlIEZsYXNoIGlzIGFjdGl2ZS4gVGhhdCBpcyBhIG5pY2hlIGNhc2UuCiovCgkJfSwKCgkJaW50ZXJuYWw6IHsgLy8gSW5zdGFuY2VkIGluIF9pbml0KCkKCQkJcmVhZHk6IGZhbHNlCgkJCS8vIGluc3RhbmNlOiB1bmRlZmluZWQKCQkJLy8gZG9tTm9kZTogdW5kZWZpbmVkCgkJCS8vIGh0bWxEbHlDbWRJZDogdW5kZWZpbmVkCgkJCS8vIGF1dG9oaWRlSWQ6IHVuZGVmaW5lZAoJCQkvLyBtb3VzZTogdW5kZWZpbmVkCgkJCS8vIGNtZHNJZ25vcmVkCgkJfSwKCQlzb2x1dGlvbjogeyAvLyBTdGF0aWMgT2JqZWN0OiBEZWZpbmVzIHRoZSBzb2x1dGlvbnMgYnVpbHQgaW4galBsYXllci4KCQkJaHRtbDogdHJ1ZSwKCQkJYXVyb3JhOiB0cnVlLAoJCQlmbGFzaDogdHJ1ZQoJCX0sCgkJLy8gJ01QRUctNCBzdXBwb3J0JyA6IGNhblBsYXlUeXBlKCd2aWRlby9tcDQ7IGNvZGVjcz0ibXA0di4yMC44IicpCgkJZm9ybWF0OiB7IC8vIFN0YXRpYyBPYmplY3QKCQkJbXAzOiB7CgkJCQljb2RlYzogJ2F1ZGlvL21wZWcnLAoJCQkJZmxhc2hDYW5QbGF5OiB0cnVlLAoJCQkJbWVkaWE6ICdhdWRpbycKCQkJfSwKCQkJbTRhOiB7IC8vIEFBQyAvIE1QNAoJCQkJY29kZWM6ICdhdWRpby9tcDQ7IGNvZGVjcz0ibXA0YS40MC4yIicsCgkJCQlmbGFzaENhblBsYXk6IHRydWUsCgkJCQltZWRpYTogJ2F1ZGlvJwoJCQl9LAoJCQltM3U4YTogeyAvLyBBQUMgLyBNUDQgLyBBcHBsZSBITFMKCQkJCWNvZGVjOiAnYXBwbGljYXRpb24vdm5kLmFwcGxlLm1wZWd1cmw7IGNvZGVjcz0ibXA0YS40MC4yIicsCgkJCQlmbGFzaENhblBsYXk6IGZhbHNlLAoJCQkJbWVkaWE6ICdhdWRpbycKCQkJfSwKCQkJbTN1YTogeyAvLyBNM1UKCQkJCWNvZGVjOiAnYXVkaW8vbXBlZ3VybCcsCgkJCQlmbGFzaENhblBsYXk6IGZhbHNlLAoJCQkJbWVkaWE6ICdhdWRpbycKCQkJfSwKCQkJb2dhOiB7IC8vIE9HRwoJCQkJY29kZWM6ICdhdWRpby9vZ2c7IGNvZGVjcz0idm9yYmlzLCBvcHVzIicsCgkJCQlmbGFzaENhblBsYXk6IGZhbHNlLAoJCQkJbWVkaWE6ICdhdWRpbycKCQkJfSwKCQkJZmxhYzogeyAvLyBGTEFDCgkJCQljb2RlYzogJ2F1ZGlvL3gtZmxhYycsCgkJCQlmbGFzaENhblBsYXk6IGZhbHNlLAoJCQkJbWVkaWE6ICdhdWRpbycKCQkJfSwKCQkJd2F2OiB7IC8vIFBDTQoJCQkJY29kZWM6ICdhdWRpby93YXY7IGNvZGVjcz0iMSInLAoJCQkJZmxhc2hDYW5QbGF5OiBmYWxzZSwKCQkJCW1lZGlhOiAnYXVkaW8nCgkJCX0sCgkJCXdlYm1hOiB7IC8vIFdFQk0KCQkJCWNvZGVjOiAnYXVkaW8vd2VibTsgY29kZWNzPSJ2b3JiaXMiJywKCQkJCWZsYXNoQ2FuUGxheTogZmFsc2UsCgkJCQltZWRpYTogJ2F1ZGlvJwoJCQl9LAoJCQlmbGE6IHsgLy8gRkxWIC8gRjRBCgkJCQljb2RlYzogJ2F1ZGlvL3gtZmx2JywKCQkJCWZsYXNoQ2FuUGxheTogdHJ1ZSwKCQkJCW1lZGlhOiAnYXVkaW8nCgkJCX0sCgkJCXJ0bXBhOiB7IC8vIFJUTVAgQVVESU8KCQkJCWNvZGVjOiAnYXVkaW8vcnRtcDsgY29kZWNzPSJydG1wIicsCgkJCQlmbGFzaENhblBsYXk6IHRydWUsCgkJCQltZWRpYTogJ2F1ZGlvJwoJCQl9LAoJCQltNHY6IHsgLy8gSC4yNjQgLyBNUDQKCQkJCWNvZGVjOiAndmlkZW8vbXA0OyBjb2RlY3M9ImF2YzEuNDJFMDFFLCBtcDRhLjQwLjIiJywKCQkJCWZsYXNoQ2FuUGxheTogdHJ1ZSwKCQkJCW1lZGlhOiAndmlkZW8nCgkJCX0sCgkJCW0zdTh2OiB7IC8vIEguMjY0IC8gQUFDIC8gTVA0IC8gQXBwbGUgSExTCgkJCQljb2RlYzogJ2FwcGxpY2F0aW9uL3ZuZC5hcHBsZS5tcGVndXJsOyBjb2RlY3M9ImF2YzEuNDJFMDFFLCBtcDRhLjQwLjIiJywKCQkJCWZsYXNoQ2FuUGxheTogZmFsc2UsCgkJCQltZWRpYTogJ3ZpZGVvJwoJCQl9LAoJCQltM3V2OiB7IC8vIE0zVQoJCQkJY29kZWM6ICdhdWRpby9tcGVndXJsJywKCQkJCWZsYXNoQ2FuUGxheTogZmFsc2UsCgkJCQltZWRpYTogJ3ZpZGVvJwoJCQl9LAoJCQlvZ3Y6IHsgLy8gT0dHCgkJCQljb2RlYzogJ3ZpZGVvL29nZzsgY29kZWNzPSJ0aGVvcmEsIHZvcmJpcyInLAoJCQkJZmxhc2hDYW5QbGF5OiBmYWxzZSwKCQkJCW1lZGlhOiAndmlkZW8nCgkJCX0sCgkJCXdlYm12OiB7IC8vIFdFQk0KCQkJCWNvZGVjOiAndmlkZW8vd2VibTsgY29kZWNzPSJ2b3JiaXMsIHZwOCInLAoJCQkJZmxhc2hDYW5QbGF5OiBmYWxzZSwKCQkJCW1lZGlhOiAndmlkZW8nCgkJCX0sCgkJCWZsdjogeyAvLyBGTFYgLyBGNFYKCQkJCWNvZGVjOiAndmlkZW8veC1mbHYnLAoJCQkJZmxhc2hDYW5QbGF5OiB0cnVlLAoJCQkJbWVkaWE6ICd2aWRlbycKCQkJfSwKCQkJcnRtcHY6IHsgLy8gUlRNUCBWSURFTwoJCQkJY29kZWM6ICd2aWRlby9ydG1wOyBjb2RlY3M9InJ0bXAiJywKCQkJCWZsYXNoQ2FuUGxheTogdHJ1ZSwKCQkJCW1lZGlhOiAndmlkZW8nCgkJCX0KCQl9LAoJCV9pbml0OiBmdW5jdGlvbigpIHsKCQkJdmFyIHNlbGYgPSB0aGlzOwoJCQkKCQkJdGhpcy5lbGVtZW50LmVtcHR5KCk7CgkJCQoJCQl0aGlzLnN0YXR1cyA9ICQuZXh0ZW5kKHt9LCB0aGlzLnN0YXR1cyk7IC8vIENvcHkgc3RhdGljIHRvIHVuaXF1ZSBpbnN0YW5jZS4KCQkJdGhpcy5pbnRlcm5hbCA9ICQuZXh0ZW5kKHt9LCB0aGlzLmludGVybmFsKTsgLy8gQ29weSBzdGF0aWMgdG8gdW5pcXVlIGluc3RhbmNlLgoKCQkJLy8gSW5pdGlhbGl6ZSB0aGUgdGltZSBmb3JtYXQKCQkJdGhpcy5vcHRpb25zLnRpbWVGb3JtYXQgPSAkLmV4dGVuZCh7fSwgJC5qUGxheWVyLnRpbWVGb3JtYXQsIHRoaXMub3B0aW9ucy50aW1lRm9ybWF0KTsKCgkJCS8vIE9uIGlPUywgYXNzdW1lIGNvbW1hbmRzIHdpbGwgYmUgaWdub3JlZCBiZWZvcmUgdXNlciBpbml0aWF0ZXMgdGhlbS4KCQkJdGhpcy5pbnRlcm5hbC5jbWRzSWdub3JlZCA9ICQualBsYXllci5wbGF0Zm9ybS5pcGFkIHx8ICQualBsYXllci5wbGF0Zm9ybS5pcGhvbmUgfHwgJC5qUGxheWVyLnBsYXRmb3JtLmlwb2Q7CgoJCQl0aGlzLmludGVybmFsLmRvbU5vZGUgPSB0aGlzLmVsZW1lbnQuZ2V0KDApOwoKCQkJLy8gQWRkIGtleSBiaW5kaW5ncyBmb2N1cyB0byAxc3QgalBsYXllciBpbnN0YW5jZWQgd2l0aCBrZXkgY29udHJvbCBlbmFibGVkLgoJCQlpZih0aGlzLm9wdGlvbnMua2V5RW5hYmxlZCAmJiAhJC5qUGxheWVyLmZvY3VzKSB7CgkJCQkkLmpQbGF5ZXIuZm9jdXMgPSB0aGlzOwoJCQl9CgoJCQkvLyBBIGZpeCBmb3IgQW5kcm9pZCB3aGVyZSBvbGRlciAoMi4zKSBhbmQgZXZlbiBzb21lIDQueCBkZXZpY2VzIGZhaWwgdG8gd29yayB3aGVuIGNoYW5naW5nIHRoZSAqYXVkaW8qIFNSQyBhbmQgdGhlbiBwbGF5aW5nIGltbWVkaWF0ZWx5LgoJCQl0aGlzLmFuZHJvaWRGaXggPSB7CgkJCQlzZXRNZWRpYTogZmFsc2UsIC8vIFRydWUgd2hlbiBtZWRpYSBzZXQKCQkJCXBsYXk6IGZhbHNlLCAvLyBUcnVlIHdoZW4gYSBwcm9ncmVzcyBldmVudCB3aWxsIGluc3RydWN0IHRoZSBtZWRpYSB0byBwbGF5CgkJCQlwYXVzZTogZmFsc2UsIC8vIFRydWUgd2hlbiBhIHByb2dyZXNzIGV2ZW50IHdpbGwgaW5zdHJ1Y3QgdGhlIG1lZGlhIHRvIHBhdXNlIGF0IGEgdGltZS4KCQkJCXRpbWU6IE5hTiAvLyBUaGUgcGxheSh0aW1lKSBwYXJhbWV0ZXIKCQkJfTsKCQkJaWYoJC5qUGxheWVyLnBsYXRmb3JtLmFuZHJvaWQpIHsKCQkJCXRoaXMub3B0aW9ucy5wcmVsb2FkID0gdGhpcy5vcHRpb25zLnByZWxvYWQgIT09ICdhdXRvJyA/ICdtZXRhZGF0YScgOiAnYXV0byc7IC8vIERlZmF1bHQgdG8gbWV0YWRhdGEsIGJ1dCBhbGxvdyBhdXRvLgoJCQl9CgoJCQl0aGlzLmZvcm1hdHMgPSBbXTsgLy8gQXJyYXkgYmFzZWQgb24gc3VwcGxpZWQgc3RyaW5nIG9wdGlvbi4gT3JkZXIgZGVmaW5lcyBwcmlvcml0eS4KCQkJdGhpcy5zb2x1dGlvbnMgPSBbXTsgLy8gQXJyYXkgYmFzZWQgb24gc29sdXRpb24gc3RyaW5nIG9wdGlvbi4gT3JkZXIgZGVmaW5lcyBwcmlvcml0eS4KCQkJdGhpcy5yZXF1aXJlID0ge307IC8vIFdoaWNoIG1lZGlhIHR5cGVzIGFyZSByZXF1aXJlZDogdmlkZW8sIGF1ZGlvLgoJCQkKCQkJdGhpcy5odG1sRWxlbWVudCA9IHt9OyAvLyBET00gZWxlbWVudHMgY3JlYXRlZCBieSBqUGxheWVyCgkJCXRoaXMuaHRtbCA9IHt9OyAvLyBJbiBfaW5pdCgpJ3MgdGhpcy5kZXNpcmVkIGNvZGUgYW5kIHNldG1lZGlhKCk6IEFjY2Vzc2VkIHZpYSB0aGlzW3NvbHV0aW9uXSwgd2hlcmUgc29sdXRpb24gZnJvbSB0aGlzLnNvbHV0aW9ucyBhcnJheS4KCQkJdGhpcy5odG1sLmF1ZGlvID0ge307CgkJCXRoaXMuaHRtbC52aWRlbyA9IHt9OwoJCQl0aGlzLmF1cm9yYSA9IHt9OyAvLyBJbiBfaW5pdCgpJ3MgdGhpcy5kZXNpcmVkIGNvZGUgYW5kIHNldG1lZGlhKCk6IEFjY2Vzc2VkIHZpYSB0aGlzW3NvbHV0aW9uXSwgd2hlcmUgc29sdXRpb24gZnJvbSB0aGlzLnNvbHV0aW9ucyBhcnJheS4KCQkJdGhpcy5hdXJvcmEuZm9ybWF0cyA9IFtdOwoJCQl0aGlzLmF1cm9yYS5wcm9wZXJ0aWVzID0gW107CgkJCXRoaXMuZmxhc2ggPSB7fTsgLy8gSW4gX2luaXQoKSdzIHRoaXMuZGVzaXJlZCBjb2RlIGFuZCBzZXRtZWRpYSgpOiBBY2Nlc3NlZCB2aWEgdGhpc1tzb2x1dGlvbl0sIHdoZXJlIHNvbHV0aW9uIGZyb20gdGhpcy5zb2x1dGlvbnMgYXJyYXkuCgkJCQoJCQl0aGlzLmNzcyA9IHt9OwoJCQl0aGlzLmNzcy5jcyA9IHt9OyAvLyBIb2xkcyB0aGUgY3NzIHNlbGVjdG9yIHN0cmluZ3MKCQkJdGhpcy5jc3MuanEgPSB7fTsgLy8gSG9sZHMgalF1ZXJ5IHNlbGVjdG9ycy4gaWUuLCAkKGNzcy5jcy5tZXRob2QpCgoJCQl0aGlzLmFuY2VzdG9ySnEgPSBbXTsgLy8gSG9sZHMgalF1ZXJ5IHNlbGVjdG9yIG9mIGNzc1NlbGVjdG9yQW5jZXN0b3IuIEluaXQgd291bGQgdXNlICQoKSBpbnN0ZWFkIG9mIFtdLCBidXQgaXQgaXMgb25seSAxLjQrCgoJCQl0aGlzLm9wdGlvbnMudm9sdW1lID0gdGhpcy5fbGltaXRWYWx1ZSh0aGlzLm9wdGlvbnMudm9sdW1lLCAwLCAxKTsgLy8gTGltaXQgdm9sdW1lIHZhbHVlJ3MgYm91bmRzLgoKCQkJLy8gQ3JlYXRlIHRoZSBmb3JtYXRzIGFycmF5LCB3aXRoIHByb3JpdHkgYmFzZWQgb24gdGhlIG9yZGVyIG9mIHRoZSBzdXBwbGllZCBmb3JtYXRzIHN0cmluZwoJCQkkLmVhY2godGhpcy5vcHRpb25zLnN1cHBsaWVkLnRvTG93ZXJDYXNlKCkuc3BsaXQoIiwiKSwgZnVuY3Rpb24oaW5kZXgxLCB2YWx1ZTEpIHsKCQkJCXZhciBmb3JtYXQgPSB2YWx1ZTEucmVwbGFjZSgvXlxzK3xccyskL2csICIiKTsgLy90cmltCgkJCQlpZihzZWxmLmZvcm1hdFtmb3JtYXRdKSB7IC8vIENoZWNrIGZvcm1hdCBpcyB2YWxpZC4KCQkJCQl2YXIgZHVwRm91bmQgPSBmYWxzZTsKCQkJCQkkLmVhY2goc2VsZi5mb3JtYXRzLCBmdW5jdGlvbihpbmRleDIsIHZhbHVlMikgeyAvLyBDaGVjayBmb3IgZHVwbGljYXRlcwoJCQkJCQlpZihmb3JtYXQgPT09IHZhbHVlMikgewoJCQkJCQkJZHVwRm91bmQgPSB0cnVlOwoJCQkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJCQl9CgkJCQkJfSk7CgkJCQkJaWYoIWR1cEZvdW5kKSB7CgkJCQkJCXNlbGYuZm9ybWF0cy5wdXNoKGZvcm1hdCk7CgkJCQkJfQoJCQkJfQoJCQl9KTsKCgkJCS8vIENyZWF0ZSB0aGUgc29sdXRpb25zIGFycmF5LCB3aXRoIHByb3JpdHkgYmFzZWQgb24gdGhlIG9yZGVyIG9mIHRoZSBzb2x1dGlvbiBzdHJpbmcKCQkJJC5lYWNoKHRoaXMub3B0aW9ucy5zb2x1dGlvbi50b0xvd2VyQ2FzZSgpLnNwbGl0KCIsIiksIGZ1bmN0aW9uKGluZGV4MSwgdmFsdWUxKSB7CgkJCQl2YXIgc29sdXRpb24gPSB2YWx1ZTEucmVwbGFjZSgvXlxzK3xccyskL2csICIiKTsgLy90cmltCgkJCQlpZihzZWxmLnNvbHV0aW9uW3NvbHV0aW9uXSkgeyAvLyBDaGVjayBzb2x1dGlvbiBpcyB2YWxpZC4KCQkJCQl2YXIgZHVwRm91bmQgPSBmYWxzZTsKCQkJCQkkLmVhY2goc2VsZi5zb2x1dGlvbnMsIGZ1bmN0aW9uKGluZGV4MiwgdmFsdWUyKSB7IC8vIENoZWNrIGZvciBkdXBsaWNhdGVzCgkJCQkJCWlmKHNvbHV0aW9uID09PSB2YWx1ZTIpIHsKCQkJCQkJCWR1cEZvdW5kID0gdHJ1ZTsKCQkJCQkJCXJldHVybiBmYWxzZTsKCQkJCQkJfQoJCQkJCX0pOwoJCQkJCWlmKCFkdXBGb3VuZCkgewoJCQkJCQlzZWxmLnNvbHV0aW9ucy5wdXNoKHNvbHV0aW9uKTsKCQkJCQl9CgkJCQl9CgkJCX0pOwoJCQkJCgkJCS8vIENyZWF0ZSBBdXJvcmEuanMgZm9ybWF0cyBhcnJheQoJCQkkLmVhY2godGhpcy5vcHRpb25zLmF1cm9yYUZvcm1hdHMudG9Mb3dlckNhc2UoKS5zcGxpdCgiLCIpLCBmdW5jdGlvbihpbmRleDEsIHZhbHVlMSkgewoJCQkJdmFyIGZvcm1hdCA9IHZhbHVlMS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgIiIpOyAvL3RyaW0KCQkJCWlmKHNlbGYuZm9ybWF0W2Zvcm1hdF0pIHsgLy8gQ2hlY2sgZm9ybWF0IGlzIHZhbGlkLgoJCQkJCXZhciBkdXBGb3VuZCA9IGZhbHNlOwoJCQkJCSQuZWFjaChzZWxmLmF1cm9yYS5mb3JtYXRzLCBmdW5jdGlvbihpbmRleDIsIHZhbHVlMikgeyAvLyBDaGVjayBmb3IgZHVwbGljYXRlcwoJCQkJCQlpZihmb3JtYXQgPT09IHZhbHVlMikgewoJCQkJCQkJZHVwRm91bmQgPSB0cnVlOwoJCQkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJCQl9CgkJCQkJfSk7CgkJCQkJaWYoIWR1cEZvdW5kKSB7CgkJCQkJCXNlbGYuYXVyb3JhLmZvcm1hdHMucHVzaChmb3JtYXQpOwoJCQkJCX0KCQkJCX0KCQkJfSk7CgoJCQl0aGlzLmludGVybmFsLmluc3RhbmNlID0gImpwXyIgKyB0aGlzLmNvdW50OwoJCQl0aGlzLmluc3RhbmNlc1t0aGlzLmludGVybmFsLmluc3RhbmNlXSA9IHRoaXMuZWxlbWVudDsKCgkJCS8vIENoZWNrIHRoZSBqUGxheWVyIGRpdiBoYXMgYW4gaWQgYW5kIGNyZWF0ZSBvbmUgaWYgcmVxdWlyZWQuIEltcG9ydGFudCBmb3IgRmxhc2ggdG8ga25vdyB0aGUgdW5pcXVlIGlkIGZvciBjb21tcy4KCQkJaWYoIXRoaXMuZWxlbWVudC5hdHRyKCJpZCIpKSB7CgkJCQl0aGlzLmVsZW1lbnQuYXR0cigiaWQiLCB0aGlzLm9wdGlvbnMuaWRQcmVmaXggKyAiX2pwbGF5ZXJfIiArIHRoaXMuY291bnQpOwoJCQl9CgoJCQl0aGlzLmludGVybmFsLnNlbGYgPSAkLmV4dGVuZCh7fSwgewoJCQkJaWQ6IHRoaXMuZWxlbWVudC5hdHRyKCJpZCIpLAoJCQkJanE6IHRoaXMuZWxlbWVudAoJCQl9KTsKCQkJdGhpcy5pbnRlcm5hbC5hdWRpbyA9ICQuZXh0ZW5kKHt9LCB7CgkJCQlpZDogdGhpcy5vcHRpb25zLmlkUHJlZml4ICsgIl9hdWRpb18iICsgdGhpcy5jb3VudCwKCQkJCWpxOiB1bmRlZmluZWQKCQkJfSk7CgkJCXRoaXMuaW50ZXJuYWwudmlkZW8gPSAkLmV4dGVuZCh7fSwgewoJCQkJaWQ6IHRoaXMub3B0aW9ucy5pZFByZWZpeCArICJfdmlkZW9fIiArIHRoaXMuY291bnQsCgkJCQlqcTogdW5kZWZpbmVkCgkJCX0pOwoJCQl0aGlzLmludGVybmFsLmZsYXNoID0gJC5leHRlbmQoe30sIHsKCQkJCWlkOiB0aGlzLm9wdGlvbnMuaWRQcmVmaXggKyAiX2ZsYXNoXyIgKyB0aGlzLmNvdW50LAoJCQkJanE6IHVuZGVmaW5lZCwKCQkJCXN3ZjogdGhpcy5vcHRpb25zLnN3ZlBhdGggKyAodGhpcy5vcHRpb25zLnN3ZlBhdGgudG9Mb3dlckNhc2UoKS5zbGljZSgtNCkgIT09ICIuc3dmIiA/ICh0aGlzLm9wdGlvbnMuc3dmUGF0aCAmJiB0aGlzLm9wdGlvbnMuc3dmUGF0aC5zbGljZSgtMSkgIT09ICIvIiA/ICIvIiA6ICIiKSArICJqcXVlcnkuanBsYXllci5zd2YiIDogIiIpCgkJCX0pOwoJCQl0aGlzLmludGVybmFsLnBvc3RlciA9ICQuZXh0ZW5kKHt9LCB7CgkJCQlpZDogdGhpcy5vcHRpb25zLmlkUHJlZml4ICsgIl9wb3N0ZXJfIiArIHRoaXMuY291bnQsCgkJCQlqcTogdW5kZWZpbmVkCgkJCX0pOwoKCQkJLy8gUmVnaXN0ZXIgbGlzdGVuZXJzIGRlZmluZWQgaW4gdGhlIGNvbnN0cnVjdG9yCgkJCSQuZWFjaCgkLmpQbGF5ZXIuZXZlbnQsIGZ1bmN0aW9uKGV2ZW50TmFtZSxldmVudFR5cGUpIHsKCQkJCWlmKHNlbGYub3B0aW9uc1tldmVudE5hbWVdICE9PSB1bmRlZmluZWQpIHsKCQkJCQlzZWxmLmVsZW1lbnQuYmluZChldmVudFR5cGUgKyAiLmpQbGF5ZXIiLCBzZWxmLm9wdGlvbnNbZXZlbnROYW1lXSk7IC8vIFdpdGggLmpQbGF5ZXIgbmFtZXNwYWNlLgoJCQkJCXNlbGYub3B0aW9uc1tldmVudE5hbWVdID0gdW5kZWZpbmVkOyAvLyBEZXN0cm95IHRoZSBoYW5kbGVyIHBvaW50ZXIgY29weSBvbiB0aGUgb3B0aW9ucy4gUmVhc29uLCBldmVudHMgY2FuIGJlIGFkZGVkL3JlbW92ZWQgaW4gb3RoZXIgd2F5cyBzbyB0aGlzIGNvdWxkIGJlIG9ic29sZXRlIGFuZCBtaXNsZWFkaW5nLgoJCQkJfQoJCQl9KTsKCgkJCS8vIERldGVybWluZSBpZiB3ZSByZXF1aXJlIHNvbHV0aW9ucyBmb3IgYXVkaW8sIHZpZGVvIG9yIGJvdGggbWVkaWEgdHlwZXMuCgkJCXRoaXMucmVxdWlyZS5hdWRpbyA9IGZhbHNlOwoJCQl0aGlzLnJlcXVpcmUudmlkZW8gPSBmYWxzZTsKCQkJJC5lYWNoKHRoaXMuZm9ybWF0cywgZnVuY3Rpb24ocHJpb3JpdHksIGZvcm1hdCkgewoJCQkJc2VsZi5yZXF1aXJlW3NlbGYuZm9ybWF0W2Zvcm1hdF0ubWVkaWFdID0gdHJ1ZTsKCQkJfSk7CgoJCQkvLyBOb3cgcmVxdWlyZWQgdHlwZXMgYXJlIGtub3duLCBmaW5pc2ggdGhlIG9wdGlvbnMgZGVmYXVsdCBzZXR0aW5ncy4KCQkJaWYodGhpcy5yZXF1aXJlLnZpZGVvKSB7CgkJCQl0aGlzLm9wdGlvbnMgPSAkLmV4dGVuZCh0cnVlLCB7fSwKCQkJCQl0aGlzLm9wdGlvbnNWaWRlbywKCQkJCQl0aGlzLm9wdGlvbnMKCQkJCSk7CgkJCX0gZWxzZSB7CgkJCQl0aGlzLm9wdGlvbnMgPSAkLmV4dGVuZCh0cnVlLCB7fSwKCQkJCQl0aGlzLm9wdGlvbnNBdWRpbywKCQkJCQl0aGlzLm9wdGlvbnMKCQkJCSk7CgkJCX0KCQkJdGhpcy5fc2V0U2l6ZSgpOyAvLyB1cGRhdGUgc3RhdHVzIGFuZCBqUGxheWVyIGVsZW1lbnQgc2l6ZQoKCQkJLy8gRGV0ZXJtaW5lIHRoZSBzdGF0dXMgZm9yIEJsb2NrbGlzdGVkIG9wdGlvbnMuCgkJCXRoaXMuc3RhdHVzLm5hdGl2ZVZpZGVvQ29udHJvbHMgPSB0aGlzLl91YUJsb2NrbGlzdCh0aGlzLm9wdGlvbnMubmF0aXZlVmlkZW9Db250cm9scyk7CgkJCXRoaXMuc3RhdHVzLm5vRnVsbFdpbmRvdyA9IHRoaXMuX3VhQmxvY2tsaXN0KHRoaXMub3B0aW9ucy5ub0Z1bGxXaW5kb3cpOwoJCQl0aGlzLnN0YXR1cy5ub1ZvbHVtZSA9IHRoaXMuX3VhQmxvY2tsaXN0KHRoaXMub3B0aW9ucy5ub1ZvbHVtZSk7CgoJCQkvLyBDcmVhdGUgZXZlbnQgaGFuZGxlcnMgaWYgbmF0aXZlIGZ1bGxzY3JlZW4gaXMgc3VwcG9ydGVkCgkJCWlmKCQualBsYXllci5uYXRpdmVGZWF0dXJlcy5mdWxsc2NyZWVuLmFwaS5mdWxsc2NyZWVuRW5hYmxlZCkgewoJCQkJdGhpcy5fZnVsbHNjcmVlbkFkZEV2ZW50TGlzdGVuZXJzKCk7CgkJCX0KCgkJCS8vIFRoZSBuYXRpdmUgY29udHJvbHMgYXJlIG9ubHkgZm9yIHZpZGVvIGFuZCBhcmUgZGlzYWJsZWQgd2hlbiBhdWRpbyBpcyBhbHNvIHVzZWQuCgkJCXRoaXMuX3Jlc3RyaWN0TmF0aXZlVmlkZW9Db250cm9scygpOwoKCQkJLy8gQ3JlYXRlIHRoZSBwb3N0ZXIgaW1hZ2UuCgkJCXRoaXMuaHRtbEVsZW1lbnQucG9zdGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJyk7CgkJCXRoaXMuaHRtbEVsZW1lbnQucG9zdGVyLmlkID0gdGhpcy5pbnRlcm5hbC5wb3N0ZXIuaWQ7CgkJCXRoaXMuaHRtbEVsZW1lbnQucG9zdGVyLm9ubG9hZCA9IGZ1bmN0aW9uKCkgeyAvLyBOb3RlIHRoYXQgdGhpcyBkaWQgbm90IHdvcmsgb24gRmlyZWZveCAzLjY6IHBvc3Rlci5hZGRFdmVudExpc3RlbmVyKCJvbmxvYWQiLCBmdW5jdGlvbigpIHt9LCBmYWxzZSk7IERpZCBub3QgaW52ZXN0aWdhdGUgeC1icm93c2VyLgoJCQkJaWYoIXNlbGYuc3RhdHVzLnZpZGVvIHx8IHNlbGYuc3RhdHVzLndhaXRGb3JQbGF5KSB7CgkJCQkJc2VsZi5pbnRlcm5hbC5wb3N0ZXIuanEuc2hvdygpOwoJCQkJfQoJCQl9OwoJCQl0aGlzLmVsZW1lbnQuYXBwZW5kKHRoaXMuaHRtbEVsZW1lbnQucG9zdGVyKTsKCQkJdGhpcy5pbnRlcm5hbC5wb3N0ZXIuanEgPSAkKCIjIiArIHRoaXMuaW50ZXJuYWwucG9zdGVyLmlkKTsKCQkJdGhpcy5pbnRlcm5hbC5wb3N0ZXIuanEuY3NzKHsnd2lkdGgnOiB0aGlzLnN0YXR1cy53aWR0aCwgJ2hlaWdodCc6IHRoaXMuc3RhdHVzLmhlaWdodH0pOwoJCQl0aGlzLmludGVybmFsLnBvc3Rlci5qcS5oaWRlKCk7CgkJCXRoaXMuaW50ZXJuYWwucG9zdGVyLmpxLmJpbmQoImNsaWNrLmpQbGF5ZXIiLCBmdW5jdGlvbigpIHsKCQkJCXNlbGYuX3RyaWdnZXIoJC5qUGxheWVyLmV2ZW50LmNsaWNrKTsKCQkJfSk7CgkJCQoJCQkvLyBHZW5lcmF0ZSB0aGUgcmVxdWlyZWQgbWVkaWEgZWxlbWVudHMKCQkJdGhpcy5odG1sLmF1ZGlvLmF2YWlsYWJsZSA9IGZhbHNlOwoJCQlpZih0aGlzLnJlcXVpcmUuYXVkaW8pIHsgLy8gSWYgYSBzdXBwbGllZCBmb3JtYXQgaXMgYXVkaW8KCQkJCXRoaXMuaHRtbEVsZW1lbnQuYXVkaW8gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhdWRpbycpOwoJCQkJdGhpcy5odG1sRWxlbWVudC5hdWRpby5pZCA9IHRoaXMuaW50ZXJuYWwuYXVkaW8uaWQ7CgkJCQl0aGlzLmh0bWwuYXVkaW8uYXZhaWxhYmxlID0gISF0aGlzLmh0bWxFbGVtZW50LmF1ZGlvLmNhblBsYXlUeXBlICYmIHRoaXMuX3Rlc3RDYW5QbGF5VHlwZSh0aGlzLmh0bWxFbGVtZW50LmF1ZGlvKTsgLy8gVGVzdCBpcyBmb3IgSUU5IG9uIFdpbiBTZXJ2ZXIgMjAwOC4KCQkJfQoJCQl0aGlzLmh0bWwudmlkZW8uYXZhaWxhYmxlID0gZmFsc2U7CgkJCWlmKHRoaXMucmVxdWlyZS52aWRlbykgeyAvLyBJZiBhIHN1cHBsaWVkIGZvcm1hdCBpcyB2aWRlbwoJCQkJdGhpcy5odG1sRWxlbWVudC52aWRlbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3ZpZGVvJyk7CgkJCQl0aGlzLmh0bWxFbGVtZW50LnZpZGVvLmlkID0gdGhpcy5pbnRlcm5hbC52aWRlby5pZDsKCQkJCXRoaXMuaHRtbC52aWRlby5hdmFpbGFibGUgPSAhIXRoaXMuaHRtbEVsZW1lbnQudmlkZW8uY2FuUGxheVR5cGUgJiYgdGhpcy5fdGVzdENhblBsYXlUeXBlKHRoaXMuaHRtbEVsZW1lbnQudmlkZW8pOyAvLyBUZXN0IGlzIGZvciBJRTkgb24gV2luIFNlcnZlciAyMDA4LgoJCQl9CgoJCQl0aGlzLmZsYXNoLmF2YWlsYWJsZSA9IHRoaXMuX2NoZWNrRm9yRmxhc2goMTAuMSk7CgoJCQl0aGlzLmh0bWwuY2FuUGxheSA9IHt9OwoJCQl0aGlzLmF1cm9yYS5jYW5QbGF5ID0ge307CgkJCXRoaXMuZmxhc2guY2FuUGxheSA9IHt9OwoJCQkkLmVhY2godGhpcy5mb3JtYXRzLCBmdW5jdGlvbihwcmlvcml0eSwgZm9ybWF0KSB7CgkJCQlzZWxmLmh0bWwuY2FuUGxheVtmb3JtYXRdID0gc2VsZi5odG1sW3NlbGYuZm9ybWF0W2Zvcm1hdF0ubWVkaWFdLmF2YWlsYWJsZSAmJiAiIiAhPT0gc2VsZi5odG1sRWxlbWVudFtzZWxmLmZvcm1hdFtmb3JtYXRdLm1lZGlhXS5jYW5QbGF5VHlwZShzZWxmLmZvcm1hdFtmb3JtYXRdLmNvZGVjKTsKCQkJCXNlbGYuYXVyb3JhLmNhblBsYXlbZm9ybWF0XSA9ICgkLmluQXJyYXkoZm9ybWF0LCBzZWxmLmF1cm9yYS5mb3JtYXRzKSA+IC0xKTsKCQkJCXNlbGYuZmxhc2guY2FuUGxheVtmb3JtYXRdID0gc2VsZi5mb3JtYXRbZm9ybWF0XS5mbGFzaENhblBsYXkgJiYgc2VsZi5mbGFzaC5hdmFpbGFibGU7CgkJCX0pOwoJCQl0aGlzLmh0bWwuZGVzaXJlZCA9IGZhbHNlOwoJCQl0aGlzLmF1cm9yYS5kZXNpcmVkID0gZmFsc2U7CgkJCXRoaXMuZmxhc2guZGVzaXJlZCA9IGZhbHNlOwoJCQkkLmVhY2godGhpcy5zb2x1dGlvbnMsIGZ1bmN0aW9uKHNvbHV0aW9uUHJpb3JpdHksIHNvbHV0aW9uKSB7CgkJCQlpZihzb2x1dGlvblByaW9yaXR5ID09PSAwKSB7CgkJCQkJc2VsZltzb2x1dGlvbl0uZGVzaXJlZCA9IHRydWU7CgkJCQl9IGVsc2UgewoJCQkJCXZhciBhdWRpb0NhblBsYXkgPSBmYWxzZTsKCQkJCQl2YXIgdmlkZW9DYW5QbGF5ID0gZmFsc2U7CgkJCQkJJC5lYWNoKHNlbGYuZm9ybWF0cywgZnVuY3Rpb24oZm9ybWF0UHJpb3JpdHksIGZvcm1hdCkgewoJCQkJCQlpZihzZWxmW3NlbGYuc29sdXRpb25zWzBdXS5jYW5QbGF5W2Zvcm1hdF0pIHsgLy8gVGhlIG90aGVyIHNvbHV0aW9uIGNhbiBwbGF5CgkJCQkJCQlpZihzZWxmLmZvcm1hdFtmb3JtYXRdLm1lZGlhID09PSAndmlkZW8nKSB7CgkJCQkJCQkJdmlkZW9DYW5QbGF5ID0gdHJ1ZTsKCQkJCQkJCX0gZWxzZSB7CgkJCQkJCQkJYXVkaW9DYW5QbGF5ID0gdHJ1ZTsKCQkJCQkJCX0KCQkJCQkJfQoJCQkJCX0pOwoJCQkJCXNlbGZbc29sdXRpb25dLmRlc2lyZWQgPSAoc2VsZi5yZXF1aXJlLmF1ZGlvICYmICFhdWRpb0NhblBsYXkpIHx8IChzZWxmLnJlcXVpcmUudmlkZW8gJiYgIXZpZGVvQ2FuUGxheSk7CgkJCQl9CgkJCX0pOwoJCQkvLyBUaGlzIGlzIHdoYXQgalBsYXllciB3aWxsIHN1cHBvcnQsIGJhc2VkIG9uIHNvbHV0aW9uIGFuZCBzdXBwbGllZC4KCQkJdGhpcy5odG1sLnN1cHBvcnQgPSB7fTsKCQkJdGhpcy5hdXJvcmEuc3VwcG9ydCA9IHt9OwoJCQl0aGlzLmZsYXNoLnN1cHBvcnQgPSB7fTsKCQkJJC5lYWNoKHRoaXMuZm9ybWF0cywgZnVuY3Rpb24ocHJpb3JpdHksIGZvcm1hdCkgewoJCQkJc2VsZi5odG1sLnN1cHBvcnRbZm9ybWF0XSA9IHNlbGYuaHRtbC5jYW5QbGF5W2Zvcm1hdF0gJiYgc2VsZi5odG1sLmRlc2lyZWQ7CgkJCQlzZWxmLmF1cm9yYS5zdXBwb3J0W2Zvcm1hdF0gPSBzZWxmLmF1cm9yYS5jYW5QbGF5W2Zvcm1hdF0gJiYgc2VsZi5hdXJvcmEuZGVzaXJlZDsKCQkJCXNlbGYuZmxhc2guc3VwcG9ydFtmb3JtYXRdID0gc2VsZi5mbGFzaC5jYW5QbGF5W2Zvcm1hdF0gJiYgc2VsZi5mbGFzaC5kZXNpcmVkOwoJCQl9KTsKCQkJLy8gSWYgalBsYXllciBpcyBzdXBwb3J0aW5nIGFueSBmb3JtYXQgaW4gYSBzb2x1dGlvbiwgdGhlbiB0aGUgc29sdXRpb24gaXMgdXNlZC4KCQkJdGhpcy5odG1sLnVzZWQgPSBmYWxzZTsKCQkJdGhpcy5hdXJvcmEudXNlZCA9IGZhbHNlOwoJCQl0aGlzLmZsYXNoLnVzZWQgPSBmYWxzZTsKCQkJJC5lYWNoKHRoaXMuc29sdXRpb25zLCBmdW5jdGlvbihzb2x1dGlvblByaW9yaXR5LCBzb2x1dGlvbikgewoJCQkJJC5lYWNoKHNlbGYuZm9ybWF0cywgZnVuY3Rpb24oZm9ybWF0UHJpb3JpdHksIGZvcm1hdCkgewoJCQkJCWlmKHNlbGZbc29sdXRpb25dLnN1cHBvcnRbZm9ybWF0XSkgewoJCQkJCQlzZWxmW3NvbHV0aW9uXS51c2VkID0gdHJ1ZTsKCQkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJCX0KCQkJCX0pOwoJCQl9KTsKCgkJCS8vIEluaXQgc29sdXRpb24gYWN0aXZlIHN0YXRlIGFuZCB0aGUgZXZlbnQgZ2F0ZXMgdG8gZmFsc2UuCgkJCXRoaXMuX3Jlc2V0QWN0aXZlKCk7CgkJCXRoaXMuX3Jlc2V0R2F0ZSgpOwoKCQkJLy8gU2V0IHVwIHRoZSBjc3Mgc2VsZWN0b3JzIGZvciB0aGUgY29udHJvbCBhbmQgZmVlZGJhY2sgZW50aXRpZXMuCgkJCXRoaXMuX2Nzc1NlbGVjdG9yQW5jZXN0b3IodGhpcy5vcHRpb25zLmNzc1NlbGVjdG9yQW5jZXN0b3IpOwoJCQkKCQkJLy8gSWYgbmVpdGhlciBodG1sIG5vciBhdXJvcmEgbm9yIGZsYXNoIGFyZSBiZWluZyB1c2VkIGJ5IHRoaXMgYnJvd3NlciwgdGhlbiBtZWRpYSBwbGF5YmFjayBpcyBub3QgcG9zc2libGUuIFRyaWdnZXIgYW4gZXJyb3IgZXZlbnQuCgkJCWlmKCEodGhpcy5odG1sLnVzZWQgfHwgdGhpcy5hdXJvcmEudXNlZCB8fCB0aGlzLmZsYXNoLnVzZWQpKSB7CgkJCQl0aGlzLl9lcnJvciggewoJCQkJCXR5cGU6ICQualBsYXllci5lcnJvci5OT19TT0xVVElPTiwgCgkJCQkJY29udGV4dDogIntzb2x1dGlvbjonIiArIHRoaXMub3B0aW9ucy5zb2x1dGlvbiArICInLCBzdXBwbGllZDonIiArIHRoaXMub3B0aW9ucy5zdXBwbGllZCArICInfSIsCgkJCQkJbWVzc2FnZTogJC5qUGxheWVyLmVycm9yTXNnLk5PX1NPTFVUSU9OLAoJCQkJCWhpbnQ6ICQualBsYXllci5lcnJvckhpbnQuTk9fU09MVVRJT04KCQkJCX0pOwoJCQkJaWYodGhpcy5jc3MuanEubm9Tb2x1dGlvbi5sZW5ndGgpIHsKCQkJCQl0aGlzLmNzcy5qcS5ub1NvbHV0aW9uLnNob3coKTsKCQkJCX0KCQkJfSBlbHNlIHsKCQkJCWlmKHRoaXMuY3NzLmpxLm5vU29sdXRpb24ubGVuZ3RoKSB7CgkJCQkJdGhpcy5jc3MuanEubm9Tb2x1dGlvbi5oaWRlKCk7CgkJCQl9CgkJCX0KCgkJCS8vIEFkZCB0aGUgZmxhc2ggc29sdXRpb24gaWYgaXQgaXMgYmVpbmcgdXNlZC4KCQkJaWYodGhpcy5mbGFzaC51c2VkKSB7CgkJCQl2YXIgaHRtbE9iaiwKCQkJCWZsYXNoVmFycyA9ICdqUXVlcnk9JyArIGVuY29kZVVSSSh0aGlzLm9wdGlvbnMubm9Db25mbGljdCkgKyAnJmlkPScgKyBlbmNvZGVVUkkodGhpcy5pbnRlcm5hbC5zZWxmLmlkKSArICcmdm9sPScgKyB0aGlzLm9wdGlvbnMudm9sdW1lICsgJyZtdXRlZD0nICsgdGhpcy5vcHRpb25zLm11dGVkOwoKCQkJCS8vIENvZGUgaW5mbHVlbmNlZCBieSBTV0ZPYmplY3QgMi4yOiBodHRwOi8vY29kZS5nb29nbGUuY29tL3Avc3dmb2JqZWN0LwoJCQkJLy8gTm9uIElFIGJyb3dzZXJzIGhhdmUgYW4gaW5pdGlhbCBGbGFzaCBzaXplIG9mIDEgYnkgMSBvdGhlcndpc2UgdGhlIHdtb2RlIGFmZmVjdGVkIHRoZSBGbGFzaCByZWFkeSBldmVudC4gCgoJCQkJaWYoJC5qUGxheWVyLmJyb3dzZXIubXNpZSAmJiAoTnVtYmVyKCQualBsYXllci5icm93c2VyLnZlcnNpb24pIDwgOSB8fCAkLmpQbGF5ZXIuYnJvd3Nlci5kb2N1bWVudE1vZGUgPCA5KSkgewoJCQkJCXZhciBvYmpTdHIgPSAnPG9iamVjdCBpZD0iJyArIHRoaXMuaW50ZXJuYWwuZmxhc2guaWQgKyAnIiBjbGFzc2lkPSJjbHNpZDpkMjdjZGI2ZS1hZTZkLTExY2YtOTZiOC00NDQ1NTM1NDAwMDAiIHdpZHRoPSIwIiBoZWlnaHQ9IjAiIHRhYmluZGV4PSItMSI+PC9vYmplY3Q+JzsKCgkJCQkJdmFyIHBhcmFtU3RyID0gWwoJCQkJCQknPHBhcmFtIG5hbWU9Im1vdmllIiB2YWx1ZT0iJyArIHRoaXMuaW50ZXJuYWwuZmxhc2guc3dmICsgJyIgLz4nLAoJCQkJCQknPHBhcmFtIG5hbWU9IkZsYXNoVmFycyIgdmFsdWU9IicgKyBmbGFzaFZhcnMgKyAnIiAvPicsCgkJCQkJCSc8cGFyYW0gbmFtZT0iYWxsb3dTY3JpcHRBY2Nlc3MiIHZhbHVlPSJhbHdheXMiIC8+JywKCQkJCQkJJzxwYXJhbSBuYW1lPSJiZ2NvbG9yIiB2YWx1ZT0iJyArIHRoaXMub3B0aW9ucy5iYWNrZ3JvdW5kQ29sb3IgKyAnIiAvPicsCgkJCQkJCSc8cGFyYW0gbmFtZT0id21vZGUiIHZhbHVlPSInICsgdGhpcy5vcHRpb25zLndtb2RlICsgJyIgLz4nCgkJCQkJXTsKCgkJCQkJaHRtbE9iaiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQob2JqU3RyKTsKCQkJCQlmb3IodmFyIGk9MDsgaSA8IHBhcmFtU3RyLmxlbmd0aDsgaSsrKSB7CgkJCQkJCWh0bWxPYmouYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudChwYXJhbVN0cltpXSkpOwoJCQkJCX0KCQkJCX0gZWxzZSB7CgkJCQkJdmFyIGNyZWF0ZVBhcmFtID0gZnVuY3Rpb24oZWwsIG4sIHYpIHsKCQkJCQkJdmFyIHAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwYXJhbSIpOwoJCQkJCQlwLnNldEF0dHJpYnV0ZSgibmFtZSIsIG4pOwkKCQkJCQkJcC5zZXRBdHRyaWJ1dGUoInZhbHVlIiwgdik7CgkJCQkJCWVsLmFwcGVuZENoaWxkKHApOwoJCQkJCX07CgoJCQkJCWh0bWxPYmogPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvYmplY3QiKTsKCQkJCQlodG1sT2JqLnNldEF0dHJpYnV0ZSgiaWQiLCB0aGlzLmludGVybmFsLmZsYXNoLmlkKTsKCQkJCQlodG1sT2JqLnNldEF0dHJpYnV0ZSgibmFtZSIsIHRoaXMuaW50ZXJuYWwuZmxhc2guaWQpOwoJCQkJCWh0bWxPYmouc2V0QXR0cmlidXRlKCJkYXRhIiwgdGhpcy5pbnRlcm5hbC5mbGFzaC5zd2YpOwoJCQkJCWh0bWxPYmouc2V0QXR0cmlidXRlKCJ0eXBlIiwgImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoIik7CgkJCQkJaHRtbE9iai5zZXRBdHRyaWJ1dGUoIndpZHRoIiwgIjEiKTsgLy8gTm9uLXplcm8KCQkJCQlodG1sT2JqLnNldEF0dHJpYnV0ZSgiaGVpZ2h0IiwgIjEiKTsgLy8gTm9uLXplcm8KCQkJCQlodG1sT2JqLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCAiLTEiKTsKCQkJCQljcmVhdGVQYXJhbShodG1sT2JqLCAiZmxhc2h2YXJzIiwgZmxhc2hWYXJzKTsKCQkJCQljcmVhdGVQYXJhbShodG1sT2JqLCAiYWxsb3dzY3JpcHRhY2Nlc3MiLCAiYWx3YXlzIik7CgkJCQkJY3JlYXRlUGFyYW0oaHRtbE9iaiwgImJnY29sb3IiLCB0aGlzLm9wdGlvbnMuYmFja2dyb3VuZENvbG9yKTsKCQkJCQljcmVhdGVQYXJhbShodG1sT2JqLCAid21vZGUiLCB0aGlzLm9wdGlvbnMud21vZGUpOwoJCQkJfQoKCQkJCXRoaXMuZWxlbWVudC5hcHBlbmQoaHRtbE9iaik7CgkJCQl0aGlzLmludGVybmFsLmZsYXNoLmpxID0gJChodG1sT2JqKTsKCQkJfQoKCQkJLy8gU2V0dXAgcGxheWJhY2tSYXRlIGFiaWxpdHkgYmVmb3JlIHVzaW5nIF9hZGRIdG1sRXZlbnRMaXN0ZW5lcnMoKQoJCQlpZih0aGlzLmh0bWwudXNlZCAmJiAhdGhpcy5mbGFzaC51c2VkKSB7IC8vIElmIG9ubHkgSFRNTAoJCQkJLy8gVXNpbmcgdGhlIGF1ZGlvIGVsZW1lbnQgY2FwYWJpbGl0aWVzIGZvciBwbGF5YmFja1JhdGUuIGllLiwgQXNzdW1pbmcgdmlkZW8gZWxlbWVudCBpcyB0aGUgc2FtZS4KCQkJCXRoaXMuc3RhdHVzLnBsYXliYWNrUmF0ZUVuYWJsZWQgPSB0aGlzLl90ZXN0UGxheWJhY2tSYXRlKCdhdWRpbycpOwoJCQl9IGVsc2UgewoJCQkJdGhpcy5zdGF0dXMucGxheWJhY2tSYXRlRW5hYmxlZCA9IGZhbHNlOwoJCQl9CgoJCQl0aGlzLl91cGRhdGVQbGF5YmFja1JhdGUoKTsKCgkJCS8vIEFkZCB0aGUgSFRNTCBzb2x1dGlvbiBpZiBiZWluZyB1c2VkLgoJCQlpZih0aGlzLmh0bWwudXNlZCkgewoKCQkJCS8vIFRoZSBIVE1MIEF1ZGlvIGhhbmRsZXJzCgkJCQlpZih0aGlzLmh0bWwuYXVkaW8uYXZhaWxhYmxlKSB7CgkJCQkJdGhpcy5fYWRkSHRtbEV2ZW50TGlzdGVuZXJzKHRoaXMuaHRtbEVsZW1lbnQuYXVkaW8sIHRoaXMuaHRtbC5hdWRpbyk7CgkJCQkJdGhpcy5lbGVtZW50LmFwcGVuZCh0aGlzLmh0bWxFbGVtZW50LmF1ZGlvKTsKCQkJCQl0aGlzLmludGVybmFsLmF1ZGlvLmpxID0gJCgiIyIgKyB0aGlzLmludGVybmFsLmF1ZGlvLmlkKTsKCQkJCX0KCgkJCQkvLyBUaGUgSFRNTCBWaWRlbyBoYW5kbGVycwoJCQkJaWYodGhpcy5odG1sLnZpZGVvLmF2YWlsYWJsZSkgewoJCQkJCXRoaXMuX2FkZEh0bWxFdmVudExpc3RlbmVycyh0aGlzLmh0bWxFbGVtZW50LnZpZGVvLCB0aGlzLmh0bWwudmlkZW8pOwoJCQkJCXRoaXMuZWxlbWVudC5hcHBlbmQodGhpcy5odG1sRWxlbWVudC52aWRlbyk7CgkJCQkJdGhpcy5pbnRlcm5hbC52aWRlby5qcSA9ICQoIiMiICsgdGhpcy5pbnRlcm5hbC52aWRlby5pZCk7CgkJCQkJaWYodGhpcy5zdGF0dXMubmF0aXZlVmlkZW9Db250cm9scykgewoJCQkJCQl0aGlzLmludGVybmFsLnZpZGVvLmpxLmNzcyh7J3dpZHRoJzogdGhpcy5zdGF0dXMud2lkdGgsICdoZWlnaHQnOiB0aGlzLnN0YXR1cy5oZWlnaHR9KTsKCQkJCQl9IGVsc2UgewoJCQkJCQl0aGlzLmludGVybmFsLnZpZGVvLmpxLmNzcyh7J3dpZHRoJzonMHB4JywgJ2hlaWdodCc6JzBweCd9KTsgLy8gVXNpbmcgc2l6ZSAweDAgc2luY2UgYSAuaGlkZSgpIGNhdXNlcyBpc3N1ZXMgaW4gaU9TCgkJCQkJfQoJCQkJCXRoaXMuaW50ZXJuYWwudmlkZW8uanEuYmluZCgiY2xpY2sualBsYXllciIsIGZ1bmN0aW9uKCkgewoJCQkJCQlzZWxmLl90cmlnZ2VyKCQualBsYXllci5ldmVudC5jbGljayk7CgkJCQkJfSk7CgkJCQl9CgkJCX0KCQkJCgkJCS8vIEFkZCB0aGUgQXVyb3JhLmpzIHNvbHV0aW9uIGlmIGJlaW5nIHVzZWQuCgkJCWlmKHRoaXMuYXVyb3JhLnVzZWQpIHsKCQkJCS8vIEF1cm9yYS5qcyBwbGF5ZXIgbmVlZCB0byBiZSBjcmVhdGVkIGZvciBlYWNoIG1lZGlhLCBzZWUgc2V0TWVkaWEgZnVuY3Rpb24uCgkJCX0KCgkJCS8vIENyZWF0ZSB0aGUgYnJpZGdlIHRoYXQgZW11bGF0ZXMgdGhlIEhUTUwgTWVkaWEgZWxlbWVudCBvbiB0aGUgalBsYXllciBESVYKCQkJaWYoIHRoaXMub3B0aW9ucy5lbXVsYXRlSHRtbCApIHsKCQkJCXRoaXMuX2VtdWxhdGVIdG1sQnJpZGdlKCk7CgkJCX0KCgkJCWlmKCh0aGlzLmh0bWwudXNlZCB8fCB0aGlzLmF1cm9yYS51c2VkKSAmJiAhdGhpcy5mbGFzaC51c2VkKSB7IC8vIElmIG9ubHkgSFRNTCwgdGhlbiBlbXVsYXRlIGZsYXNoIHJlYWR5KCkgY2FsbCBhZnRlciAxMDBtcy4KCQkJCXNldFRpbWVvdXQoIGZ1bmN0aW9uKCkgewoJCQkJCXNlbGYuaW50ZXJuYWwucmVhZHkgPSB0cnVlOwoJCQkJCXNlbGYudmVyc2lvbi5mbGFzaCA9ICJuL2EiOwoJCQkJCXNlbGYuX3RyaWdnZXIoJC5qUGxheWVyLmV2ZW50LnJlcGVhdCk7IC8vIFRyaWdnZXIgdGhlIHJlcGVhdCBldmVudCBzbyBpdHMgaGFuZGxlciBjYW4gaW5pdGlhbGl6ZSBpdHNlbGYgd2l0aCB0aGUgbG9vcCBvcHRpb24uCgkJCQkJc2VsZi5fdHJpZ2dlcigkLmpQbGF5ZXIuZXZlbnQucmVhZHkpOwoJCQkJfSwgMTAwKTsKCQkJfQoKCQkJLy8gSW5pdGlhbGl6ZSB0aGUgaW50ZXJmYWNlIGNvbXBvbmVudHMgd2l0aCB0aGUgb3B0aW9ucy4KCQkJdGhpcy5fdXBkYXRlTmF0aXZlVmlkZW9Db250cm9scygpOwoJCQkvLyBUaGUgb3RoZXIgY29udHJvbHMgYXJlIG5vdyBzZXR1cCBpbiBfY3NzU2VsZWN0b3JBbmNlc3RvcigpCgkJCWlmKHRoaXMuY3NzLmpxLnZpZGVvUGxheS5sZW5ndGgpIHsKCQkJCXRoaXMuY3NzLmpxLnZpZGVvUGxheS5oaWRlKCk7CgkJCX0KCgkJCSQualBsYXllci5wcm90b3R5cGUuY291bnQrKzsgLy8gQ2hhbmdlIHN0YXRpYyB2YXJpYWJsZSB2aWEgcHJvdG90eXBlLgoJCX0sCgkJZGVzdHJveTogZnVuY3Rpb24oKSB7CgkJCS8vIE1KUDogVGhlIGJhY2tncm91bmQgY2hhbmdlIHJlbWFpbnMuIFdvdWxkIG5lZWQgdG8gc3RvcmUgdGhlIG9yaWdpbmFsIHRvIHJlc3RvcmUgaXQgY29ycmVjdGx5LgoJCQkvLyBNSlA6IFRoZSBqUGxheWVyIGVsZW1lbnQncyBzaXplIGNoYW5nZSByZW1haW5zLgoKCQkJLy8gQ2xlYXIgdGhlIG1lZGlhIHRvIHJlc2V0IHRoZSBHVUkgYW5kIHN0b3AgYW55IGRvd25sb2Fkcy4gU3RyZWFtcyBvbiBzb21lIGJyb3dzZXJzIGhhZCBwZXJzaXRlZC4gKENocm9tZSkKCQkJdGhpcy5jbGVhck1lZGlhKCk7CgkJCS8vIFJlbW92ZSB0aGUgc2l6ZS9zaXplRnVsbCBjc3NDbGFzcyBmcm9tIHRoZSBjc3NTZWxlY3RvckFuY2VzdG9yCgkJCXRoaXMuX3JlbW92ZVVpQ2xhc3MoKTsKCQkJLy8gUmVtb3ZlIHRoZSB0aW1lcyBmcm9tIHRoZSBHVUkKCQkJaWYodGhpcy5jc3MuanEuY3VycmVudFRpbWUubGVuZ3RoKSB7CgkJCQl0aGlzLmNzcy5qcS5jdXJyZW50VGltZS50ZXh0KCIiKTsKCQkJfQoJCQlpZih0aGlzLmNzcy5qcS5kdXJhdGlvbi5sZW5ndGgpIHsKCQkJCXRoaXMuY3NzLmpxLmR1cmF0aW9uLnRleHQoIiIpOwoJCQl9CgkJCS8vIFJlbW92ZSBhbnkgYmluZGluZ3MgZnJvbSB0aGUgaW50ZXJmYWNlIGNvbnRyb2xzLgoJCQkkLmVhY2godGhpcy5jc3MuanEsIGZ1bmN0aW9uKGZuLCBqcSkgewoJCQkJLy8gQ2hlY2sgc2VsZWN0b3IgaXMgdmFsaWQgYmVmb3JlIHRyeWluZyB0byBleGVjdXRlIG1ldGhvZC4KCQkJCWlmKGpxLmxlbmd0aCkgewoJCQkJCWpxLnVuYmluZCgiLmpQbGF5ZXIiKTsKCQkJCX0KCQkJfSk7CgkJCS8vIFJlbW92ZSB0aGUgY2xpY2sgaGFuZGxlcnMgZm9yICQualBsYXllci5ldmVudC5jbGljawoJCQl0aGlzLmludGVybmFsLnBvc3Rlci5qcS51bmJpbmQoIi5qUGxheWVyIik7CgkJCWlmKHRoaXMuaW50ZXJuYWwudmlkZW8uanEpIHsKCQkJCXRoaXMuaW50ZXJuYWwudmlkZW8uanEudW5iaW5kKCIualBsYXllciIpOwoJCQl9CgkJCS8vIFJlbW92ZSB0aGUgZnVsbHNjcmVlbiBldmVudCBoYW5kbGVycwoJCQl0aGlzLl9mdWxsc2NyZWVuUmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKTsKCQkJLy8gUmVtb3ZlIGtleSBiaW5kaW5ncwoJCQlpZih0aGlzID09PSAkLmpQbGF5ZXIuZm9jdXMpIHsKCQkJCSQualBsYXllci5mb2N1cyA9IG51bGw7CgkJCX0KCQkJLy8gRGVzdHJveSB0aGUgSFRNTCBicmlkZ2UuCgkJCWlmKHRoaXMub3B0aW9ucy5lbXVsYXRlSHRtbCkgewoJCQkJdGhpcy5fZGVzdHJveUh0bWxCcmlkZ2UoKTsKCQkJfQoJCQl0aGlzLmVsZW1lbnQucmVtb3ZlRGF0YSgialBsYXllciIpOyAvLyBSZW1vdmUgalBsYXllciBkYXRhCgkJCXRoaXMuZWxlbWVudC51bmJpbmQoIi5qUGxheWVyIik7IC8vIFJlbW92ZSBhbGwgZXZlbnQgaGFuZGxlcnMgY3JlYXRlZCBieSB0aGUgalBsYXllciBjb25zdHJ1Y3RvcgoJCQl0aGlzLmVsZW1lbnQuZW1wdHkoKTsgLy8gUmVtb3ZlIHRoZSBpbnNlcnRlZCBjaGlsZCBlbGVtZW50cwoJCQkKCQkJZGVsZXRlIHRoaXMuaW5zdGFuY2VzW3RoaXMuaW50ZXJuYWwuaW5zdGFuY2VdOyAvLyBDbGVhciB0aGUgaW5zdGFuY2Ugb24gdGhlIHN0YXRpYyBpbnN0YW5jZSBvYmplY3QKCQl9LAoJCWRlc3Ryb3lSZW1vdmVkOiBmdW5jdGlvbigpIHsgLy8gRGVzdHJveSBhbnkgaW5zdGFuY2VzIHRoYXQgaGF2ZSBnb25lIGF3YXkuCgkJCXZhciBzZWxmID0gdGhpczsKCQkJJC5lYWNoKHRoaXMuaW5zdGFuY2VzLCBmdW5jdGlvbihpLCBlbGVtZW50KSB7CgkJCQlpZihzZWxmLmVsZW1lbnQgIT09IGVsZW1lbnQpIHsgLy8gRG8gbm90IGRlc3Ryb3kgdGhpcyBpbnN0YW5jZS4KCQkJCQlpZighZWxlbWVudC5kYXRhKCJqUGxheWVyIikpIHsgLy8gQ2hlY2sgdGhhdCBlbGVtZW50IGlzIGEgcmVhbCBqUGxheWVyLgoJCQkJCQllbGVtZW50LmpQbGF5ZXIoImRlc3Ryb3kiKTsKCQkJCQkJZGVsZXRlIHNlbGYuaW5zdGFuY2VzW2ldOwoJCQkJCX0KCQkJCX0KCQkJfSk7CgkJfSwKCQllbmFibGU6IGZ1bmN0aW9uKCkgeyAvLyBQbGFuIHRvIGltcGxlbWVudAoJCQkvLyBvcHRpb25zLmRpc2FibGVkID0gZmFsc2UKCQl9LAoJCWRpc2FibGU6IGZ1bmN0aW9uICgpIHsgLy8gUGxhbiB0byBpbXBsZW1lbnQKCQkJLy8gb3B0aW9ucy5kaXNhYmxlZCA9IHRydWUKCQl9LAoJCV90ZXN0Q2FuUGxheVR5cGU6IGZ1bmN0aW9uKGVsZW0pIHsKCQkJLy8gSUU5IG9uIFdpbiBTZXJ2ZXIgMjAwOCBkaWQgbm90IGltcGxlbWVudCBjYW5QbGF5VHlwZSgpLCBidXQgaXQgaGFzIHRoZSBwcm9wZXJ0eS4KCQkJdHJ5IHsKCQkJCWVsZW0uY2FuUGxheVR5cGUodGhpcy5mb3JtYXQubXAzLmNvZGVjKTsgLy8gVGhlIHR5cGUgaXMgaXJyZWxldmFudC4KCQkJCXJldHVybiB0cnVlOwoJCQl9IGNhdGNoKGVycikgewoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9CgkJfSwKCQlfdGVzdFBsYXliYWNrUmF0ZTogZnVuY3Rpb24odHlwZSkgewoJCQkvLyB0eXBlOiBTdHJpbmcgJ2F1ZGlvJyBvciAndmlkZW8nCgkJCXZhciBlbCwgcmF0ZSA9IDAuNTsKCQkJdHlwZSA9IHR5cGVvZiB0eXBlID09PSAnc3RyaW5nJyA/IHR5cGUgOiAnYXVkaW8nOwoJCQllbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodHlwZSk7CgkJCS8vIFdyYXBwaW5nIGluIGEgdHJ5L2NhdGNoLCBqdXN0IGluIGNhc2Ugb2xkZXIgSFRNTDUgYnJvd3NlcnMgdGhyb3cgYW5kIGVycm9yLgoJCQl0cnkgewoJCQkJaWYoJ3BsYXliYWNrUmF0ZScgaW4gZWwpIHsKCQkJCQllbC5wbGF5YmFja1JhdGUgPSByYXRlOwoJCQkJCXJldHVybiBlbC5wbGF5YmFja1JhdGUgPT09IHJhdGU7CgkJCQl9IGVsc2UgewoJCQkJCXJldHVybiBmYWxzZTsKCQkJCX0KCQkJfSBjYXRjaChlcnIpIHsKCQkJCXJldHVybiBmYWxzZTsKCQkJfQoJCX0sCgkJX3VhQmxvY2tsaXN0OiBmdW5jdGlvbihsaXN0KSB7CgkJCS8vIGxpc3QgOiBvYmplY3Qgd2l0aCBwcm9wZXJ0aWVzIHRoYXQgYXJlIGFsbCByZWd1bGFyIGV4cHJlc3Npb25zLiBQcm9wZXJ0eSBuYW1lcyBhcmUgaXJyZWxldmFudC4KCQkJLy8gUmV0dXJucyB0cnVlIGlmIHRoZSB1c2VyIGFnZW50IGlzIG1hdGNoZWQgaW4gbGlzdC4KCQkJdmFyCXVhID0gbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLAoJCQkJYmxvY2sgPSBmYWxzZTsKCgkJCSQuZWFjaChsaXN0LCBmdW5jdGlvbihwLCByZSkgewoJCQkJaWYocmUgJiYgcmUudGVzdCh1YSkpIHsKCQkJCQlibG9jayA9IHRydWU7CgkJCQkJcmV0dXJuIGZhbHNlOyAvLyBleGl0ICQuZWFjaC4KCQkJCX0KCQkJfSk7CgkJCXJldHVybiBibG9jazsKCQl9LAoJCV9yZXN0cmljdE5hdGl2ZVZpZGVvQ29udHJvbHM6IGZ1bmN0aW9uKCkgewoJCQkvLyBGYWxsYmFjayB0byBub0Z1bGxXaW5kb3cgd2hlbiBuYXRpdmVWaWRlb0NvbnRyb2xzIGlzIHRydWUgYW5kIGF1ZGlvIG1lZGlhIGlzIGJlaW5nIHVzZWQuIEFmZmVjdHMgd2hlbiBib3RoIG1lZGlhIHR5cGVzIGFyZSB1c2VkLgoJCQlpZih0aGlzLnJlcXVpcmUuYXVkaW8pIHsKCQkJCWlmKHRoaXMuc3RhdHVzLm5hdGl2ZVZpZGVvQ29udHJvbHMpIHsKCQkJCQl0aGlzLnN0YXR1cy5uYXRpdmVWaWRlb0NvbnRyb2xzID0gZmFsc2U7CgkJCQkJdGhpcy5zdGF0dXMubm9GdWxsV2luZG93ID0gdHJ1ZTsKCQkJCX0KCQkJfQoJCX0sCgkJX3VwZGF0ZU5hdGl2ZVZpZGVvQ29udHJvbHM6IGZ1bmN0aW9uKCkgewoJCQlpZih0aGlzLmh0bWwudmlkZW8uYXZhaWxhYmxlICYmIHRoaXMuaHRtbC51c2VkKSB7CgkJCQkvLyBUdXJuIHRoZSBIVE1MIFZpZGVvIGNvbnRyb2xzIG9uL29mZgoJCQkJdGhpcy5odG1sRWxlbWVudC52aWRlby5jb250cm9scyA9IHRoaXMuc3RhdHVzLm5hdGl2ZVZpZGVvQ29udHJvbHM7CgkJCQkvLyBTaG93L2hpZGUgdGhlIGpQbGF5ZXIgR1VJLgoJCQkJdGhpcy5fdXBkYXRlQXV0b2hpZGUoKTsKCQkJCS8vIEZvciB3aGVuIG9wdGlvbiBjaGFuZ2VkLiBUaGUgcG9zdGVyIGltYWdlIGlzIG5vdCB1cGRhdGVkLCBhcyBpdCBpcyBkZWFsdCB3aXRoIGluIHNldE1lZGlhKCkuIEFjY2VwdGFibGUgZGVncmFkYXRpb24gc2luY2Ugc2VyaW91c2x5IGRvdWJ0IHRoZXNlIG9wdGlvbnMgd2lsbCBjaGFuZ2Ugb24gdGhlIGZseS4gQ2FuIGFnYWluIHJldmlldyBsYXRlci4KCQkJCWlmKHRoaXMuc3RhdHVzLm5hdGl2ZVZpZGVvQ29udHJvbHMgJiYgdGhpcy5yZXF1aXJlLnZpZGVvKSB7CgkJCQkJdGhpcy5pbnRlcm5hbC5wb3N0ZXIuanEuaGlkZSgpOwoJCQkJCXRoaXMuaW50ZXJuYWwudmlkZW8uanEuY3NzKHsnd2lkdGgnOiB0aGlzLnN0YXR1cy53aWR0aCwgJ2hlaWdodCc6IHRoaXMuc3RhdHVzLmhlaWdodH0pOwoJCQkJfSBlbHNlIGlmKHRoaXMuc3RhdHVzLndhaXRGb3JQbGF5ICYmIHRoaXMuc3RhdHVzLnZpZGVvKSB7CgkJCQkJdGhpcy5pbnRlcm5hbC5wb3N0ZXIuanEuc2hvdygpOwoJCQkJCXRoaXMuaW50ZXJuYWwudmlkZW8uanEuY3NzKHsnd2lkdGgnOiAnMHB4JywgJ2hlaWdodCc6ICcwcHgnfSk7CgkJCQl9CgkJCX0KCQl9LAoJCV9hZGRIdG1sRXZlbnRMaXN0ZW5lcnM6IGZ1bmN0aW9uKG1lZGlhRWxlbWVudCwgZW50aXR5KSB7CgkJCXZhciBzZWxmID0gdGhpczsKCQkJbWVkaWFFbGVtZW50LnByZWxvYWQgPSB0aGlzLm9wdGlvbnMucHJlbG9hZDsKCQkJbWVkaWFFbGVtZW50Lm11dGVkID0gdGhpcy5vcHRpb25zLm11dGVkOwoJCQltZWRpYUVsZW1lbnQudm9sdW1lID0gdGhpcy5vcHRpb25zLnZvbHVtZTsKCgkJCWlmKHRoaXMuc3RhdHVzLnBsYXliYWNrUmF0ZUVuYWJsZWQpIHsKCQkJCW1lZGlhRWxlbWVudC5kZWZhdWx0UGxheWJhY2tSYXRlID0gdGhpcy5vcHRpb25zLmRlZmF1bHRQbGF5YmFja1JhdGU7CgkJCQltZWRpYUVsZW1lbnQucGxheWJhY2tSYXRlID0gdGhpcy5vcHRpb25zLnBsYXliYWNrUmF0ZTsKCQkJfQoKCQkJLy8gQ3JlYXRlIHRoZSBldmVudCBsaXN0ZW5lcnMKCQkJLy8gT25seSB3YW50IHRoZSBhY3RpdmUgZW50aXR5IHRvIGFmZmVjdCBqUGxheWVyIGFuZCBidWJibGUgZXZlbnRzLgoJCQkvLyBVc2luZyBlbnRpdHkuZ2F0ZSBzbyB0aGF0IG9iamVjdCBpcyByZWZlcmVuY2VkIGFuZCBnYXRlIHByb3BlcnR5IGFsd2F5cyBjdXJyZW50CgkJCQoJCQltZWRpYUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLCBmdW5jdGlvbigpIHsKCQkJCWlmKGVudGl0eS5nYXRlKSB7CgkJCQkJaWYoc2VsZi5pbnRlcm5hbC5jbWRzSWdub3JlZCAmJiB0aGlzLnJlYWR5U3RhdGUgPiAwKSB7IC8vIERldGVjdCBpT1MgZXhlY3V0ZWQgdGhlIGNvbW1hbmQKCQkJCQkJc2VsZi5pbnRlcm5hbC5jbWRzSWdub3JlZCA9IGZhbHNlOwoJCQkJCX0KCQkJCQlzZWxmLl9nZXRIdG1sU3RhdHVzKG1lZGlhRWxlbWVudCk7CgkJCQkJc2VsZi5fdXBkYXRlSW50ZXJmYWNlKCk7CgkJCQkJc2VsZi5fdHJpZ2dlcigkLmpQbGF5ZXIuZXZlbnQucHJvZ3Jlc3MpOwoJCQkJfQoJCQl9LCBmYWxzZSk7CgkJCW1lZGlhRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJsb2FkZWRkYXRhIiwgZnVuY3Rpb24oKSB7CgkJCQlpZihlbnRpdHkuZ2F0ZSkgewoJCQkJCXNlbGYuYW5kcm9pZEZpeC5zZXRNZWRpYSA9IGZhbHNlOyAvLyBEaXNhYmxlIHRoZSBmaXggYWZ0ZXIgdGhlIGZpcnN0IHByb2dyZXNzIGV2ZW50LgoJCQkJCWlmKHNlbGYuYW5kcm9pZEZpeC5wbGF5KSB7IC8vIFBsYXkgQW5kcm9pZCBhdWRpbyAtIHBlcmZvcm1pbmcgdGhlIGZpeC4KCQkJCQkJc2VsZi5hbmRyb2lkRml4LnBsYXkgPSBmYWxzZTsKCQkJCQkJc2VsZi5wbGF5KHNlbGYuYW5kcm9pZEZpeC50aW1lKTsKCQkJCQl9CgkJCQkJaWYoc2VsZi5hbmRyb2lkRml4LnBhdXNlKSB7IC8vIFBhdXNlIEFuZHJvaWQgYXVkaW8gYXQgdGltZSAtIHBlcmZvcm1pbmcgdGhlIGZpeC4KCQkJCQkJc2VsZi5hbmRyb2lkRml4LnBhdXNlID0gZmFsc2U7CgkJCQkJCXNlbGYucGF1c2Uoc2VsZi5hbmRyb2lkRml4LnRpbWUpOwoJCQkJCX0KCQkJCQlzZWxmLl90cmlnZ2VyKCQualBsYXllci5ldmVudC5sb2FkZWRkYXRhKTsKCQkJCX0KCQkJfSwgZmFsc2UpOwoJCQltZWRpYUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidGltZXVwZGF0ZSIsIGZ1bmN0aW9uKCkgewoJCQkJaWYoZW50aXR5LmdhdGUpIHsKCQkJCQlzZWxmLl9nZXRIdG1sU3RhdHVzKG1lZGlhRWxlbWVudCk7CgkJCQkJc2VsZi5fdXBkYXRlSW50ZXJmYWNlKCk7CgkJCQkJc2VsZi5fdHJpZ2dlcigkLmpQbGF5ZXIuZXZlbnQudGltZXVwZGF0ZSk7CgkJCQl9CgkJCX0sIGZhbHNlKTsKCQkJbWVkaWFFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImR1cmF0aW9uY2hhbmdlIiwgZnVuY3Rpb24oKSB7CgkJCQlpZihlbnRpdHkuZ2F0ZSkgewoJCQkJCXNlbGYuX2dldEh0bWxTdGF0dXMobWVkaWFFbGVtZW50KTsKCQkJCQlzZWxmLl91cGRhdGVJbnRlcmZhY2UoKTsKCQkJCQlzZWxmLl90cmlnZ2VyKCQualBsYXllci5ldmVudC5kdXJhdGlvbmNoYW5nZSk7CgkJCQl9CgkJCX0sIGZhbHNlKTsKCQkJbWVkaWFFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInBsYXkiLCBmdW5jdGlvbigpIHsKCQkJCWlmKGVudGl0eS5nYXRlKSB7CgkJCQkJc2VsZi5fdXBkYXRlQnV0dG9ucyh0cnVlKTsKCQkJCQlzZWxmLl9odG1sX2NoZWNrV2FpdEZvclBsYXkoKTsgLy8gU28gdGhlIG5hdGl2ZSBjb250cm9scyB1cGRhdGUgdGhpcyB2YXJpYWJsZSBhbmQgcHV0cyB0aGUgaGlkZGVuIGludGVyZmFjZSBpbiB0aGUgY29ycmVjdCBzdGF0ZS4gQWZmZWN0cyB0b2dnbGluZyBuYXRpdmUgY29udHJvbHMuCgkJCQkJc2VsZi5fdHJpZ2dlcigkLmpQbGF5ZXIuZXZlbnQucGxheSk7CgkJCQl9CgkJCX0sIGZhbHNlKTsKCQkJbWVkaWFFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInBsYXlpbmciLCBmdW5jdGlvbigpIHsKCQkJCWlmKGVudGl0eS5nYXRlKSB7CgkJCQkJc2VsZi5fdXBkYXRlQnV0dG9ucyh0cnVlKTsKCQkJCQlzZWxmLl9zZWVrZWQoKTsKCQkJCQlzZWxmLl90cmlnZ2VyKCQualBsYXllci5ldmVudC5wbGF5aW5nKTsKCQkJCX0KCQkJfSwgZmFsc2UpOwoJCQltZWRpYUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigicGF1c2UiLCBmdW5jdGlvbigpIHsKCQkJCWlmKGVudGl0eS5nYXRlKSB7CgkJCQkJc2VsZi5fdXBkYXRlQnV0dG9ucyhmYWxzZSk7CgkJCQkJc2VsZi5fdHJpZ2dlcigkLmpQbGF5ZXIuZXZlbnQucGF1c2UpOwoJCQkJfQoJCQl9LCBmYWxzZSk7CgkJCW1lZGlhRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ3YWl0aW5nIiwgZnVuY3Rpb24oKSB7CgkJCQlpZihlbnRpdHkuZ2F0ZSkgewoJCQkJCXNlbGYuX3NlZWtpbmcoKTsKCQkJCQlzZWxmLl90cmlnZ2VyKCQualBsYXllci5ldmVudC53YWl0aW5nKTsKCQkJCX0KCQkJfSwgZmFsc2UpOwoJCQltZWRpYUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigic2Vla2luZyIsIGZ1bmN0aW9uKCkgewoJCQkJaWYoZW50aXR5LmdhdGUpIHsKCQkJCQlzZWxmLl9zZWVraW5nKCk7CgkJCQkJc2VsZi5fdHJpZ2dlcigkLmpQbGF5ZXIuZXZlbnQuc2Vla2luZyk7CgkJCQl9CgkJCX0sIGZhbHNlKTsKCQkJbWVkaWFFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInNlZWtlZCIsIGZ1bmN0aW9uKCkgewoJCQkJaWYoZW50aXR5LmdhdGUpIHsKCQkJCQlzZWxmLl9zZWVrZWQoKTsKCQkJCQlzZWxmLl90cmlnZ2VyKCQualBsYXllci5ldmVudC5zZWVrZWQpOwoJCQkJfQoJCQl9LCBmYWxzZSk7CgkJCW1lZGlhRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ2b2x1bWVjaGFuZ2UiLCBmdW5jdGlvbigpIHsKCQkJCWlmKGVudGl0eS5nYXRlKSB7CgkJCQkJLy8gUmVhZCB0aGUgdmFsdWVzIGJhY2sgZnJvbSB0aGUgZWxlbWVudCBhcyB0aGUgQmxhY2tiZXJyeSBQbGF5Qm9vayBzaGFyZXMgdGhlIHZvbHVtZSB3aXRoIHRoZSBwaHlzaWNhbCBidXR0b25zIG1hc3RlciB2b2x1bWUgY29udHJvbC4KCQkJCQkvLyBIb3dldmVyLCB3aGVuIHRlc3RlZCA2dGggSnVseSAyMDExLCB0aG9zZSBidXR0b25zIGRvIG5vdCBnZW5lcmF0ZSBhbiBldmVudC4gVGhlIHBoeXNpY2FsIHBsYXkvcGF1c2UgYnV0dG9uIGRvZXMgdGhvdWdoLgoJCQkJCXNlbGYub3B0aW9ucy52b2x1bWUgPSBtZWRpYUVsZW1lbnQudm9sdW1lOwoJCQkJCXNlbGYub3B0aW9ucy5tdXRlZCA9IG1lZGlhRWxlbWVudC5tdXRlZDsKCQkJCQlzZWxmLl91cGRhdGVNdXRlKCk7CgkJCQkJc2VsZi5fdXBkYXRlVm9sdW1lKCk7CgkJCQkJc2VsZi5fdHJpZ2dlcigkLmpQbGF5ZXIuZXZlbnQudm9sdW1lY2hhbmdlKTsKCQkJCX0KCQkJfSwgZmFsc2UpOwoJCQltZWRpYUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigicmF0ZWNoYW5nZSIsIGZ1bmN0aW9uKCkgewoJCQkJaWYoZW50aXR5LmdhdGUpIHsKCQkJCQlzZWxmLm9wdGlvbnMuZGVmYXVsdFBsYXliYWNrUmF0ZSA9IG1lZGlhRWxlbWVudC5kZWZhdWx0UGxheWJhY2tSYXRlOwoJCQkJCXNlbGYub3B0aW9ucy5wbGF5YmFja1JhdGUgPSBtZWRpYUVsZW1lbnQucGxheWJhY2tSYXRlOwoJCQkJCXNlbGYuX3VwZGF0ZVBsYXliYWNrUmF0ZSgpOwoJCQkJCXNlbGYuX3RyaWdnZXIoJC5qUGxheWVyLmV2ZW50LnJhdGVjaGFuZ2UpOwoJCQkJfQoJCQl9LCBmYWxzZSk7CgkJCW1lZGlhRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJzdXNwZW5kIiwgZnVuY3Rpb24oKSB7IC8vIFNlZW1zIHRvIGJlIHRoZSBvbmx5IHdheSBvZiBjYXB0dXJpbmcgdGhhdCB0aGUgaU9TNCBicm93c2VyIGRpZCBub3QgYWN0dWFsbHkgcGxheSB0aGUgbWVkaWEgZnJvbSB0aGUgcGFnZSBjb2RlLiBpZS4sIEl0IG5lZWRzIGEgdXNlciBnZXN0dXJlLgoJCQkJaWYoZW50aXR5LmdhdGUpIHsKCQkJCQlzZWxmLl9zZWVrZWQoKTsKCQkJCQlzZWxmLl90cmlnZ2VyKCQualBsYXllci5ldmVudC5zdXNwZW5kKTsKCQkJCX0KCQkJfSwgZmFsc2UpOwoJCQltZWRpYUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZW5kZWQiLCBmdW5jdGlvbigpIHsKCQkJCWlmKGVudGl0eS5nYXRlKSB7CgkJCQkJLy8gT3JkZXIgb2YgdGhlIG5leHQgZmV3IGNvbW1hbmRzIGFyZSBpbXBvcnRhbnQuIENoYW5nZSB0aGUgdGltZSBhbmQgdGhlbiBwYXVzZS4KCQkJCQkvLyBTb2x2ZXMgYSBidWcgaW4gRmlyZWZveCwgd2hlcmUgaXNzdWluZyBwYXVzZSAxc3QgY2F1c2VzIHRoZSBtZWRpYSB0byBwbGF5IGZyb20gdGhlIHN0YXJ0LiBpZS4sIFRoZSBwYXVzZSBpcyBpZ25vcmVkLgoJCQkJCWlmKCEkLmpQbGF5ZXIuYnJvd3Nlci53ZWJraXQpIHsgLy8gQ2hyb21lIGNyYXNoZXMgaWYgeW91IGRvIHRoaXMgaW4gY29uanVuY3Rpb24gd2l0aCBhIHNldE1lZGlhIGNvbW1hbmQgaW4gYW4gZW5kZWQgZXZlbnQgaGFuZGxlci4gaWUuLCBUaGUgcGxheWxpc3QgZGVtby4KCQkJCQkJc2VsZi5odG1sRWxlbWVudC5tZWRpYS5jdXJyZW50VGltZSA9IDA7IC8vIFNhZmFyaSBkb2VzIG5vdCBjYXJlIGFib3V0IHRoaXMgY29tbWFuZC4gaWUuLCBJdCB3b3JrcyB3aXRoIG9yIHdpdGhvdXQgdGhpcyBsaW5lLiAoQm90aCBTYWZhcmkgYW5kIENocm9tZSBhcmUgV2Via2l0LikKCQkJCQl9CgkJCQkJc2VsZi5odG1sRWxlbWVudC5tZWRpYS5wYXVzZSgpOyAvLyBQYXVzZSBvdGhlcndpc2UgYSBjbGljayBvbiB0aGUgcHJvZ3Jlc3MgYmFyIHdpbGwgcGxheSBmcm9tIHRoYXQgcG9pbnQsIHdoZW4gaXQgc2hvdWxkbid0LCBzaW5jZSBpdCBzdG9wcGVkIHBsYXliYWNrLgoJCQkJCXNlbGYuX3VwZGF0ZUJ1dHRvbnMoZmFsc2UpOwoJCQkJCXNlbGYuX2dldEh0bWxTdGF0dXMobWVkaWFFbGVtZW50LCB0cnVlKTsgLy8gV2l0aCBvdmVycmlkZSB0cnVlLiBPdGhlcndpc2UgQ2hyb21lIGxlYXZlcyBwcm9ncmVzcyBhdCBmdWxsLgoJCQkJCXNlbGYuX3VwZGF0ZUludGVyZmFjZSgpOwoJCQkJCXNlbGYuX3RyaWdnZXIoJC5qUGxheWVyLmV2ZW50LmVuZGVkKTsKCQkJCX0KCQkJfSwgZmFsc2UpOwoJCQltZWRpYUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLCBmdW5jdGlvbigpIHsKCQkJCWlmKGVudGl0eS5nYXRlKSB7CgkJCQkJc2VsZi5fdXBkYXRlQnV0dG9ucyhmYWxzZSk7CgkJCQkJc2VsZi5fc2Vla2VkKCk7CgkJCQkJaWYoc2VsZi5zdGF0dXMuc3JjU2V0KSB7IC8vIERlYWxzIHdpdGggY2FzZSBvZiBjbGVhck1lZGlhKCkgY2F1c2luZyBhbiBlcnJvciBldmVudC4KCQkJCQkJY2xlYXJUaW1lb3V0KHNlbGYuaW50ZXJuYWwuaHRtbERseUNtZElkKTsgLy8gQ2xlYXJzIGFueSBkZWxheWVkIGNvbW1hbmRzIHVzZWQgaW4gdGhlIEhUTUwgc29sdXRpb24uCgkJCQkJCXNlbGYuc3RhdHVzLndhaXRGb3JMb2FkID0gdHJ1ZTsgLy8gQWxsb3dzIHRoZSBsb2FkIG9wZXJhdGlvbiB0byB0cnkgYWdhaW4uCgkJCQkJCXNlbGYuc3RhdHVzLndhaXRGb3JQbGF5ID0gdHJ1ZTsgLy8gUmVzZXQgc2luY2UgYSBwbGF5IHdhcyBjYXB0dXJlZC4KCQkJCQkJaWYoc2VsZi5zdGF0dXMudmlkZW8gJiYgIXNlbGYuc3RhdHVzLm5hdGl2ZVZpZGVvQ29udHJvbHMpIHsKCQkJCQkJCXNlbGYuaW50ZXJuYWwudmlkZW8uanEuY3NzKHsnd2lkdGgnOicwcHgnLCAnaGVpZ2h0JzonMHB4J30pOwoJCQkJCQl9CgkJCQkJCWlmKHNlbGYuX3ZhbGlkU3RyaW5nKHNlbGYuc3RhdHVzLm1lZGlhLnBvc3RlcikgJiYgIXNlbGYuc3RhdHVzLm5hdGl2ZVZpZGVvQ29udHJvbHMpIHsKCQkJCQkJCXNlbGYuaW50ZXJuYWwucG9zdGVyLmpxLnNob3coKTsKCQkJCQkJfQoJCQkJCQlpZihzZWxmLmNzcy5qcS52aWRlb1BsYXkubGVuZ3RoKSB7CgkJCQkJCQlzZWxmLmNzcy5qcS52aWRlb1BsYXkuc2hvdygpOwoJCQkJCQl9CgkJCQkJCXNlbGYuX2Vycm9yKCB7CgkJCQkJCQl0eXBlOiAkLmpQbGF5ZXIuZXJyb3IuVVJMLAoJCQkJCQkJY29udGV4dDogc2VsZi5zdGF0dXMuc3JjLCAvLyB0aGlzLnNyYyBzaG93cyBhYnNvbHV0ZSB1cmxzLiBXYW50IGNvbnRleHQgdG8gc2hvdyB0aGUgdXJsIGdpdmVuLgoJCQkJCQkJbWVzc2FnZTogJC5qUGxheWVyLmVycm9yTXNnLlVSTCwKCQkJCQkJCWhpbnQ6ICQualBsYXllci5lcnJvckhpbnQuVVJMCgkJCQkJCX0pOwoJCQkJCX0KCQkJCX0KCQkJfSwgZmFsc2UpOwoJCQkvLyBDcmVhdGUgYWxsIHRoZSBvdGhlciBldmVudCBsaXN0ZW5lcnMgdGhhdCBidWJibGUgdXAgdG8gYSBqUGxheWVyIGV2ZW50IGZyb20gaHRtbCwgd2l0aG91dCBiZWluZyB1c2VkIGJ5IGpQbGF5ZXIuCgkJCSQuZWFjaCgkLmpQbGF5ZXIuaHRtbEV2ZW50LCBmdW5jdGlvbihpLCBldmVudFR5cGUpIHsKCQkJCW1lZGlhRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKHRoaXMsIGZ1bmN0aW9uKCkgewoJCQkJCWlmKGVudGl0eS5nYXRlKSB7CgkJCQkJCXNlbGYuX3RyaWdnZXIoJC5qUGxheWVyLmV2ZW50W2V2ZW50VHlwZV0pOwoJCQkJCX0KCQkJCX0sIGZhbHNlKTsKCQkJfSk7CgkJfSwKCQlfYWRkQXVyb3JhRXZlbnRMaXN0ZW5lcnMgOiBmdW5jdGlvbihwbGF5ZXIsIGVudGl0eSkgewoJCQl2YXIgc2VsZiA9IHRoaXM7CgkJCS8vcGxheWVyLnByZWxvYWQgPSB0aGlzLm9wdGlvbnMucHJlbG9hZDsKCQkJLy9wbGF5ZXIubXV0ZWQgPSB0aGlzLm9wdGlvbnMubXV0ZWQ7CgkJCXBsYXllci52b2x1bWUgPSB0aGlzLm9wdGlvbnMudm9sdW1lICogMTAwOwoKCQkJLy8gQ3JlYXRlIHRoZSBldmVudCBsaXN0ZW5lcnMKCQkJLy8gT25seSB3YW50IHRoZSBhY3RpdmUgZW50aXR5IHRvIGFmZmVjdCBqUGxheWVyIGFuZCBidWJibGUgZXZlbnRzLgoJCQkvLyBVc2luZyBlbnRpdHkuZ2F0ZSBzbyB0aGF0IG9iamVjdCBpcyByZWZlcmVuY2VkIGFuZCBnYXRlIHByb3BlcnR5IGFsd2F5cyBjdXJyZW50CgkJCQoJCQlwbGF5ZXIub24oInByb2dyZXNzIiwgZnVuY3Rpb24oKSB7CgkJCQlpZihlbnRpdHkuZ2F0ZSkgewoJCQkJCWlmKHNlbGYuaW50ZXJuYWwuY21kc0lnbm9yZWQgJiYgdGhpcy5yZWFkeVN0YXRlID4gMCkgeyAvLyBEZXRlY3QgaU9TIGV4ZWN1dGVkIHRoZSBjb21tYW5kCgkJCQkJCXNlbGYuaW50ZXJuYWwuY21kc0lnbm9yZWQgPSBmYWxzZTsKCQkJCQl9CgkJCQkJc2VsZi5fZ2V0QXVyb3JhU3RhdHVzKHBsYXllcik7CgkJCQkJc2VsZi5fdXBkYXRlSW50ZXJmYWNlKCk7CgkJCQkJc2VsZi5fdHJpZ2dlcigkLmpQbGF5ZXIuZXZlbnQucHJvZ3Jlc3MpOwoJCQkJCS8vIFByb2dyZXNzIHdpdGggc29uZyBkdXJhdGlvbiwgd2UgZXN0aW1hdGUgdGltZXVwZGF0ZSBuZWVkIHRvIGJlIHRyaWdnZXJlZCB0b28uCgkJCQkJaWYgKHBsYXllci5kdXJhdGlvbiA+IDApIHsKCQkJCQkJc2VsZi5fdHJpZ2dlcigkLmpQbGF5ZXIuZXZlbnQudGltZXVwZGF0ZSk7CgkJCQkJfQoJCQkJfQoJCQl9LCBmYWxzZSk7CgkJCXBsYXllci5vbigicmVhZHkiLCBmdW5jdGlvbigpIHsKCQkJCWlmKGVudGl0eS5nYXRlKSB7CgkJCQkJc2VsZi5fdHJpZ2dlcigkLmpQbGF5ZXIuZXZlbnQubG9hZGVkZGF0YSk7CgkJCQl9CgkJCX0sIGZhbHNlKTsKCQkJcGxheWVyLm9uKCJkdXJhdGlvbiIsIGZ1bmN0aW9uKCkgewoJCQkJaWYoZW50aXR5LmdhdGUpIHsKCQkJCQlzZWxmLl9nZXRBdXJvcmFTdGF0dXMocGxheWVyKTsKCQkJCQlzZWxmLl91cGRhdGVJbnRlcmZhY2UoKTsKCQkJCQlzZWxmLl90cmlnZ2VyKCQualBsYXllci5ldmVudC5kdXJhdGlvbmNoYW5nZSk7CgkJCQl9CgkJCX0sIGZhbHNlKTsKCQkJcGxheWVyLm9uKCJlbmQiLCBmdW5jdGlvbigpIHsKCQkJCWlmKGVudGl0eS5nYXRlKSB7CgkJCQkJLy8gT3JkZXIgb2YgdGhlIG5leHQgZmV3IGNvbW1hbmRzIGFyZSBpbXBvcnRhbnQuIENoYW5nZSB0aGUgdGltZSBhbmQgdGhlbiBwYXVzZS4KCQkJCQlzZWxmLl91cGRhdGVCdXR0b25zKGZhbHNlKTsKCQkJCQlzZWxmLl9nZXRBdXJvcmFTdGF0dXMocGxheWVyLCB0cnVlKTsKCQkJCQlzZWxmLl91cGRhdGVJbnRlcmZhY2UoKTsKCQkJCQlzZWxmLl90cmlnZ2VyKCQualBsYXllci5ldmVudC5lbmRlZCk7CgkJCQl9CgkJCX0sIGZhbHNlKTsKCQkJcGxheWVyLm9uKCJlcnJvciIsIGZ1bmN0aW9uKCkgewoJCQkJaWYoZW50aXR5LmdhdGUpIHsKCQkJCQlzZWxmLl91cGRhdGVCdXR0b25zKGZhbHNlKTsKCQkJCQlzZWxmLl9zZWVrZWQoKTsKCQkJCQlpZihzZWxmLnN0YXR1cy5zcmNTZXQpIHsgLy8gRGVhbHMgd2l0aCBjYXNlIG9mIGNsZWFyTWVkaWEoKSBjYXVzaW5nIGFuIGVycm9yIGV2ZW50LgoJCQkJCQlzZWxmLnN0YXR1cy53YWl0Rm9yTG9hZCA9IHRydWU7IC8vIEFsbG93cyB0aGUgbG9hZCBvcGVyYXRpb24gdG8gdHJ5IGFnYWluLgoJCQkJCQlzZWxmLnN0YXR1cy53YWl0Rm9yUGxheSA9IHRydWU7IC8vIFJlc2V0IHNpbmNlIGEgcGxheSB3YXMgY2FwdHVyZWQuCgkJCQkJCWlmKHNlbGYuc3RhdHVzLnZpZGVvICYmICFzZWxmLnN0YXR1cy5uYXRpdmVWaWRlb0NvbnRyb2xzKSB7CgkJCQkJCQlzZWxmLmludGVybmFsLnZpZGVvLmpxLmNzcyh7J3dpZHRoJzonMHB4JywgJ2hlaWdodCc6JzBweCd9KTsKCQkJCQkJfQoJCQkJCQlpZihzZWxmLl92YWxpZFN0cmluZyhzZWxmLnN0YXR1cy5tZWRpYS5wb3N0ZXIpICYmICFzZWxmLnN0YXR1cy5uYXRpdmVWaWRlb0NvbnRyb2xzKSB7CgkJCQkJCQlzZWxmLmludGVybmFsLnBvc3Rlci5qcS5zaG93KCk7CgkJCQkJCX0KCQkJCQkJaWYoc2VsZi5jc3MuanEudmlkZW9QbGF5Lmxlbmd0aCkgewoJCQkJCQkJc2VsZi5jc3MuanEudmlkZW9QbGF5LnNob3coKTsKCQkJCQkJfQoJCQkJCQlzZWxmLl9lcnJvciggewoJCQkJCQkJdHlwZTogJC5qUGxheWVyLmVycm9yLlVSTCwKCQkJCQkJCWNvbnRleHQ6IHNlbGYuc3RhdHVzLnNyYywgLy8gdGhpcy5zcmMgc2hvd3MgYWJzb2x1dGUgdXJscy4gV2FudCBjb250ZXh0IHRvIHNob3cgdGhlIHVybCBnaXZlbi4KCQkJCQkJCW1lc3NhZ2U6ICQualBsYXllci5lcnJvck1zZy5VUkwsCgkJCQkJCQloaW50OiAkLmpQbGF5ZXIuZXJyb3JIaW50LlVSTAoJCQkJCQl9KTsKCQkJCQl9CgkJCQl9CgkJCX0sIGZhbHNlKTsKCQl9LAoJCV9nZXRIdG1sU3RhdHVzOiBmdW5jdGlvbihtZWRpYSwgb3ZlcnJpZGUpIHsKCQkJdmFyIGN0ID0gMCwgY3BhID0gMCwgc3AgPSAwLCBjcHIgPSAwOwoKCQkJLy8gRml4ZXMgdGhlIGR1cmF0aW9uIGJ1ZyBpbiBpT1MsIHdoZXJlIHRoZSBkdXJhdGlvbmNoYW5nZSBldmVudCBvY2N1cnMgd2hlbiBtZWRpYS5kdXJhdGlvbiBpcyBub3QgYWx3YXlzIGNvcnJlY3QuCgkJCS8vIEZpeGVzIHRoZSBpbml0aWFsIGR1cmF0aW9uIGJ1ZyBpbiBCQiBPUzcsIHdoZXJlIHRoZSBtZWRpYS5kdXJhdGlvbiBpcyBpbmZpbml0eSBhbmQgZGlzcGxheXMgYXMgTmFOOk5hTiBkdWUgdG8gRGF0ZSgpIHVzaW5nIGluaWZpdHkuCgkJCWlmKGlzRmluaXRlKG1lZGlhLmR1cmF0aW9uKSkgewoJCQkJdGhpcy5zdGF0dXMuZHVyYXRpb24gPSBtZWRpYS5kdXJhdGlvbjsKCQkJfQoKCQkJY3QgPSBtZWRpYS5jdXJyZW50VGltZTsKCQkJY3BhID0gKHRoaXMuc3RhdHVzLmR1cmF0aW9uID4gMCkgPyAxMDAgKiBjdCAvIHRoaXMuc3RhdHVzLmR1cmF0aW9uIDogMDsKCQkJaWYoKHR5cGVvZiBtZWRpYS5zZWVrYWJsZSA9PT0gIm9iamVjdCIpICYmIChtZWRpYS5zZWVrYWJsZS5sZW5ndGggPiAwKSkgewoJCQkJc3AgPSAodGhpcy5zdGF0dXMuZHVyYXRpb24gPiAwKSA/IDEwMCAqIG1lZGlhLnNlZWthYmxlLmVuZChtZWRpYS5zZWVrYWJsZS5sZW5ndGgtMSkgLyB0aGlzLnN0YXR1cy5kdXJhdGlvbiA6IDEwMDsKCQkJCWNwciA9ICh0aGlzLnN0YXR1cy5kdXJhdGlvbiA+IDApID8gMTAwICogbWVkaWEuY3VycmVudFRpbWUgLyBtZWRpYS5zZWVrYWJsZS5lbmQobWVkaWEuc2Vla2FibGUubGVuZ3RoLTEpIDogMDsgLy8gRHVyYXRpb24gY29uZGl0aW9uYWwgZm9yIGlPUyBkdXJhdGlvbiBidWcuIGllLiwgc2Vla2FibGUuZW5kIGlzIGEgTmFOIGluIHRoYXQgY2FzZS4KCQkJfSBlbHNlIHsKCQkJCXNwID0gMTAwOwoJCQkJY3ByID0gY3BhOwoJCQl9CgkJCQoJCQlpZihvdmVycmlkZSkgewoJCQkJY3QgPSAwOwoJCQkJY3ByID0gMDsKCQkJCWNwYSA9IDA7CgkJCX0KCgkJCXRoaXMuc3RhdHVzLnNlZWtQZXJjZW50ID0gc3A7CgkJCXRoaXMuc3RhdHVzLmN1cnJlbnRQZXJjZW50UmVsYXRpdmUgPSBjcHI7CgkJCXRoaXMuc3RhdHVzLmN1cnJlbnRQZXJjZW50QWJzb2x1dGUgPSBjcGE7CgkJCXRoaXMuc3RhdHVzLmN1cnJlbnRUaW1lID0gY3Q7CgoJCQl0aGlzLnN0YXR1cy5yZW1haW5pbmcgPSB0aGlzLnN0YXR1cy5kdXJhdGlvbiAtIHRoaXMuc3RhdHVzLmN1cnJlbnRUaW1lOwoKCQkJdGhpcy5zdGF0dXMudmlkZW9XaWR0aCA9IG1lZGlhLnZpZGVvV2lkdGg7CgkJCXRoaXMuc3RhdHVzLnZpZGVvSGVpZ2h0ID0gbWVkaWEudmlkZW9IZWlnaHQ7CgoJCQl0aGlzLnN0YXR1cy5yZWFkeVN0YXRlID0gbWVkaWEucmVhZHlTdGF0ZTsKCQkJdGhpcy5zdGF0dXMubmV0d29ya1N0YXRlID0gbWVkaWEubmV0d29ya1N0YXRlOwoJCQl0aGlzLnN0YXR1cy5wbGF5YmFja1JhdGUgPSBtZWRpYS5wbGF5YmFja1JhdGU7CgkJCXRoaXMuc3RhdHVzLmVuZGVkID0gbWVkaWEuZW5kZWQ7CgkJfSwKCQlfZ2V0QXVyb3JhU3RhdHVzOiBmdW5jdGlvbihwbGF5ZXIsIG92ZXJyaWRlKSB7CgkJCXZhciBjdCA9IDAsIGNwYSA9IDAsIHNwID0gMCwgY3ByID0gMDsKCgkJCXRoaXMuc3RhdHVzLmR1cmF0aW9uID0gcGxheWVyLmR1cmF0aW9uIC8gMTAwMDsKCgkJCWN0ID0gcGxheWVyLmN1cnJlbnRUaW1lIC8gMTAwMDsKCQkJY3BhID0gKHRoaXMuc3RhdHVzLmR1cmF0aW9uID4gMCkgPyAxMDAgKiBjdCAvIHRoaXMuc3RhdHVzLmR1cmF0aW9uIDogMDsKCQkJaWYocGxheWVyLmJ1ZmZlcmVkID4gMCkgewoJCQkJc3AgPSAodGhpcy5zdGF0dXMuZHVyYXRpb24gPiAwKSA/IChwbGF5ZXIuYnVmZmVyZWQgKiB0aGlzLnN0YXR1cy5kdXJhdGlvbikgLyB0aGlzLnN0YXR1cy5kdXJhdGlvbiA6IDEwMDsKCQkJCWNwciA9ICh0aGlzLnN0YXR1cy5kdXJhdGlvbiA+IDApID8gY3QgLyAocGxheWVyLmJ1ZmZlcmVkICogdGhpcy5zdGF0dXMuZHVyYXRpb24pIDogMDsKCQkJfSBlbHNlIHsKCQkJCXNwID0gMTAwOwoJCQkJY3ByID0gY3BhOwoJCQl9CgkJCQoJCQlpZihvdmVycmlkZSkgewoJCQkJY3QgPSAwOwoJCQkJY3ByID0gMDsKCQkJCWNwYSA9IDA7CgkJCX0KCgkJCXRoaXMuc3RhdHVzLnNlZWtQZXJjZW50ID0gc3A7CgkJCXRoaXMuc3RhdHVzLmN1cnJlbnRQZXJjZW50UmVsYXRpdmUgPSBjcHI7CgkJCXRoaXMuc3RhdHVzLmN1cnJlbnRQZXJjZW50QWJzb2x1dGUgPSBjcGE7CgkJCXRoaXMuc3RhdHVzLmN1cnJlbnRUaW1lID0gY3Q7CgoJCQl0aGlzLnN0YXR1cy5yZW1haW5pbmcgPSB0aGlzLnN0YXR1cy5kdXJhdGlvbiAtIHRoaXMuc3RhdHVzLmN1cnJlbnRUaW1lOwoKCQkJdGhpcy5zdGF0dXMucmVhZHlTdGF0ZSA9IDQ7IC8vIHN0YXR1cy5yZWFkeVN0YXRlOwoJCQl0aGlzLnN0YXR1cy5uZXR3b3JrU3RhdGUgPSAwOyAvLyBzdGF0dXMubmV0d29ya1N0YXRlOwoJCQl0aGlzLnN0YXR1cy5wbGF5YmFja1JhdGUgPSAxOyAvLyBzdGF0dXMucGxheWJhY2tSYXRlOwoJCQl0aGlzLnN0YXR1cy5lbmRlZCA9IGZhbHNlOyAvLyBzdGF0dXMuZW5kZWQ7CgkJfSwKCQlfcmVzZXRTdGF0dXM6IGZ1bmN0aW9uKCkgewoJCQl0aGlzLnN0YXR1cyA9ICQuZXh0ZW5kKHt9LCB0aGlzLnN0YXR1cywgJC5qUGxheWVyLnByb3RvdHlwZS5zdGF0dXMpOyAvLyBNYWludGFpbnMgdGhlIHN0YXR1cyBwcm9wZXJ0aWVzIHRoYXQgcGVyc2lzdCB0aHJvdWdoIGEgcmVzZXQuCgkJfSwKCQlfdHJpZ2dlcjogZnVuY3Rpb24oZXZlbnRUeXBlLCBlcnJvciwgd2FybmluZykgeyAvLyBldmVudFR5cGUgYWx3YXlzIHZhbGlkIGFzIGNhbGxlZCB1c2luZyAkLmpQbGF5ZXIuZXZlbnQuZXZlbnRUeXBlCgkJCXZhciBldmVudCA9ICQuRXZlbnQoZXZlbnRUeXBlKTsKCQkJZXZlbnQualBsYXllciA9IHt9OwoJCQlldmVudC5qUGxheWVyLnZlcnNpb24gPSAkLmV4dGVuZCh7fSwgdGhpcy52ZXJzaW9uKTsKCQkJZXZlbnQualBsYXllci5vcHRpb25zID0gJC5leHRlbmQodHJ1ZSwge30sIHRoaXMub3B0aW9ucyk7IC8vIERlZXAgY29weQoJCQlldmVudC5qUGxheWVyLnN0YXR1cyA9ICQuZXh0ZW5kKHRydWUsIHt9LCB0aGlzLnN0YXR1cyk7IC8vIERlZXAgY29weQoJCQlldmVudC5qUGxheWVyLmh0bWwgPSAkLmV4dGVuZCh0cnVlLCB7fSwgdGhpcy5odG1sKTsgLy8gRGVlcCBjb3B5CgkJCWV2ZW50LmpQbGF5ZXIuYXVyb3JhID0gJC5leHRlbmQodHJ1ZSwge30sIHRoaXMuYXVyb3JhKTsgLy8gRGVlcCBjb3B5CgkJCWV2ZW50LmpQbGF5ZXIuZmxhc2ggPSAkLmV4dGVuZCh0cnVlLCB7fSwgdGhpcy5mbGFzaCk7IC8vIERlZXAgY29weQoJCQlpZihlcnJvcikgewoJCQkJZXZlbnQualBsYXllci5lcnJvciA9ICQuZXh0ZW5kKHt9LCBlcnJvcik7CgkJCX0KCQkJaWYod2FybmluZykgewoJCQkJZXZlbnQualBsYXllci53YXJuaW5nID0gJC5leHRlbmQoe30sIHdhcm5pbmcpOwoJCQl9CgkJCXRoaXMuZWxlbWVudC50cmlnZ2VyKGV2ZW50KTsKCQl9LAoJCWpQbGF5ZXJGbGFzaEV2ZW50OiBmdW5jdGlvbihldmVudFR5cGUsIHN0YXR1cykgeyAvLyBDYWxsZWQgZnJvbSBGbGFzaAoJCQlpZihldmVudFR5cGUgPT09ICQualBsYXllci5ldmVudC5yZWFkeSkgewoJCQkJaWYoIXRoaXMuaW50ZXJuYWwucmVhZHkpIHsKCQkJCQl0aGlzLmludGVybmFsLnJlYWR5ID0gdHJ1ZTsKCQkJCQl0aGlzLmludGVybmFsLmZsYXNoLmpxLmNzcyh7J3dpZHRoJzonMHB4JywgJ2hlaWdodCc6JzBweCd9KTsgLy8gT25jZSBGbGFzaCBnZW5lcmF0ZXMgdGhlIHJlYWR5IGV2ZW50LCBtaW5pbWlzZSB0byB6ZXJvIGFzIGl0IGlzIG5vdCBhZmZlY3RlZCBieSB3bW9kZSBhbnltb3JlLgoKCQkJCQl0aGlzLnZlcnNpb24uZmxhc2ggPSBzdGF0dXMudmVyc2lvbjsKCQkJCQlpZih0aGlzLnZlcnNpb24ubmVlZEZsYXNoICE9PSB0aGlzLnZlcnNpb24uZmxhc2gpIHsKCQkJCQkJdGhpcy5fZXJyb3IoIHsKCQkJCQkJCXR5cGU6ICQualBsYXllci5lcnJvci5WRVJTSU9OLAoJCQkJCQkJY29udGV4dDogdGhpcy52ZXJzaW9uLmZsYXNoLAoJCQkJCQkJbWVzc2FnZTogJC5qUGxheWVyLmVycm9yTXNnLlZFUlNJT04gKyB0aGlzLnZlcnNpb24uZmxhc2gsCgkJCQkJCQloaW50OiAkLmpQbGF5ZXIuZXJyb3JIaW50LlZFUlNJT04KCQkJCQkJfSk7CgkJCQkJfQoJCQkJCXRoaXMuX3RyaWdnZXIoJC5qUGxheWVyLmV2ZW50LnJlcGVhdCk7IC8vIFRyaWdnZXIgdGhlIHJlcGVhdCBldmVudCBzbyBpdHMgaGFuZGxlciBjYW4gaW5pdGlhbGl6ZSBpdHNlbGYgd2l0aCB0aGUgbG9vcCBvcHRpb24uCgkJCQkJdGhpcy5fdHJpZ2dlcihldmVudFR5cGUpOwoJCQkJfSBlbHNlIHsKCQkJCQkvLyBUaGlzIGNvbmRpdGlvbiBvY2N1cnMgaWYgdGhlIEZsYXNoIGlzIGhpZGRlbiBhbmQgdGhlbiBzaG93biBhZ2Fpbi4KCQkJCQkvLyBGaXJlZm94IGFsc28gcmVsb2FkcyB0aGUgRmxhc2ggaWYgdGhlIENTUyBwb3NpdGlvbiBjaGFuZ2VzLiBwb3NpdGlvbjpmaXhlZCBpcyB1c2VkIGZvciBmdWxsIHNjcmVlbi4KCgkJCQkJLy8gT25seSBkbyB0aGlzIGlmIHRoZSBGbGFzaCBpcyB0aGUgc29sdXRpb24gYmVpbmcgdXNlZCBhdCB0aGUgbW9tZW50LiBBZmZlY3RzIE1lZGlhIHBsYXllcnMgd2hlcmUgYm90aCBzb2x1dGlvbiBtYXkgYmUgYmVpbmcgdXNlZC4KCQkJCQlpZih0aGlzLmZsYXNoLmdhdGUpIHsKCgkJCQkJCS8vIFNlbmQgdGhlIGN1cnJlbnQgc3RhdHVzIHRvIHRoZSBGbGFzaCBub3cgdGhhdCBpdCBpcyByZWFkeSAoYXZhaWxhYmxlKSBhZ2Fpbi4KCQkJCQkJaWYodGhpcy5zdGF0dXMuc3JjU2V0KSB7CgoJCQkJCQkJLy8gTmVlZCB0byByZWFkIG9yaWdpbmFsIHN0YXR1cyBiZWZvcmUgaXNzdWluZyB0aGUgc2V0TWVkaWEgY29tbWFuZC4KCQkJCQkJCXZhcgljdXJyZW50VGltZSA9IHRoaXMuc3RhdHVzLmN1cnJlbnRUaW1lLAoJCQkJCQkJCXBhdXNlZCA9IHRoaXMuc3RhdHVzLnBhdXNlZDsgCgoJCQkJCQkJdGhpcy5zZXRNZWRpYSh0aGlzLnN0YXR1cy5tZWRpYSk7CgkJCQkJCQl0aGlzLnZvbHVtZVdvcmtlcih0aGlzLm9wdGlvbnMudm9sdW1lKTsKCQkJCQkJCWlmKGN1cnJlbnRUaW1lID4gMCkgewoJCQkJCQkJCWlmKHBhdXNlZCkgewoJCQkJCQkJCQl0aGlzLnBhdXNlKGN1cnJlbnRUaW1lKTsKCQkJCQkJCQl9IGVsc2UgewoJCQkJCQkJCQl0aGlzLnBsYXkoY3VycmVudFRpbWUpOwoJCQkJCQkJCX0KCQkJCQkJCX0KCQkJCQkJfQoJCQkJCQl0aGlzLl90cmlnZ2VyKCQualBsYXllci5ldmVudC5mbGFzaHJlc2V0KTsKCQkJCQl9CgkJCQl9CgkJCX0KCQkJaWYodGhpcy5mbGFzaC5nYXRlKSB7CgkJCQlzd2l0Y2goZXZlbnRUeXBlKSB7CgkJCQkJY2FzZSAkLmpQbGF5ZXIuZXZlbnQucHJvZ3Jlc3M6CgkJCQkJCXRoaXMuX2dldEZsYXNoU3RhdHVzKHN0YXR1cyk7CgkJCQkJCXRoaXMuX3VwZGF0ZUludGVyZmFjZSgpOwoJCQkJCQl0aGlzLl90cmlnZ2VyKGV2ZW50VHlwZSk7CgkJCQkJCWJyZWFrOwoJCQkJCWNhc2UgJC5qUGxheWVyLmV2ZW50LnRpbWV1cGRhdGU6CgkJCQkJCXRoaXMuX2dldEZsYXNoU3RhdHVzKHN0YXR1cyk7CgkJCQkJCXRoaXMuX3VwZGF0ZUludGVyZmFjZSgpOwoJCQkJCQl0aGlzLl90cmlnZ2VyKGV2ZW50VHlwZSk7CgkJCQkJCWJyZWFrOwoJCQkJCWNhc2UgJC5qUGxheWVyLmV2ZW50LnBsYXk6CgkJCQkJCXRoaXMuX3NlZWtlZCgpOwoJCQkJCQl0aGlzLl91cGRhdGVCdXR0b25zKHRydWUpOwoJCQkJCQl0aGlzLl90cmlnZ2VyKGV2ZW50VHlwZSk7CgkJCQkJCWJyZWFrOwoJCQkJCWNhc2UgJC5qUGxheWVyLmV2ZW50LnBhdXNlOgoJCQkJCQl0aGlzLl91cGRhdGVCdXR0b25zKGZhbHNlKTsKCQkJCQkJdGhpcy5fdHJpZ2dlcihldmVudFR5cGUpOwoJCQkJCQlicmVhazsKCQkJCQljYXNlICQualBsYXllci5ldmVudC5lbmRlZDoKCQkJCQkJdGhpcy5fdXBkYXRlQnV0dG9ucyhmYWxzZSk7CgkJCQkJCXRoaXMuX3RyaWdnZXIoZXZlbnRUeXBlKTsKCQkJCQkJYnJlYWs7CgkJCQkJY2FzZSAkLmpQbGF5ZXIuZXZlbnQuY2xpY2s6CgkJCQkJCXRoaXMuX3RyaWdnZXIoZXZlbnRUeXBlKTsgLy8gVGhpcyBjb3VsZCBiZSBkZWFsdCB3aXRoIGJ5IHRoZSBkZWZhdWx0CgkJCQkJCWJyZWFrOwoJCQkJCWNhc2UgJC5qUGxheWVyLmV2ZW50LmVycm9yOgoJCQkJCQl0aGlzLnN0YXR1cy53YWl0Rm9yTG9hZCA9IHRydWU7IC8vIEFsbG93cyB0aGUgbG9hZCBvcGVyYXRpb24gdG8gdHJ5IGFnYWluLgoJCQkJCQl0aGlzLnN0YXR1cy53YWl0Rm9yUGxheSA9IHRydWU7IC8vIFJlc2V0IHNpbmNlIGEgcGxheSB3YXMgY2FwdHVyZWQuCgkJCQkJCWlmKHRoaXMuc3RhdHVzLnZpZGVvKSB7CgkJCQkJCQl0aGlzLmludGVybmFsLmZsYXNoLmpxLmNzcyh7J3dpZHRoJzonMHB4JywgJ2hlaWdodCc6JzBweCd9KTsKCQkJCQkJfQoJCQkJCQlpZih0aGlzLl92YWxpZFN0cmluZyh0aGlzLnN0YXR1cy5tZWRpYS5wb3N0ZXIpKSB7CgkJCQkJCQl0aGlzLmludGVybmFsLnBvc3Rlci5qcS5zaG93KCk7CgkJCQkJCX0KCQkJCQkJaWYodGhpcy5jc3MuanEudmlkZW9QbGF5Lmxlbmd0aCAmJiB0aGlzLnN0YXR1cy52aWRlbykgewoJCQkJCQkJdGhpcy5jc3MuanEudmlkZW9QbGF5LnNob3coKTsKCQkJCQkJfQoJCQkJCQlpZih0aGlzLnN0YXR1cy52aWRlbykgeyAvLyBTZXQgdXAgZm9yIGFub3RoZXIgdHJ5LiBFeGVjdXRlIGJlZm9yZSBlcnJvciBldmVudC4KCQkJCQkJCXRoaXMuX2ZsYXNoX3NldFZpZGVvKHRoaXMuc3RhdHVzLm1lZGlhKTsKCQkJCQkJfSBlbHNlIHsKCQkJCQkJCXRoaXMuX2ZsYXNoX3NldEF1ZGlvKHRoaXMuc3RhdHVzLm1lZGlhKTsKCQkJCQkJfQoJCQkJCQl0aGlzLl91cGRhdGVCdXR0b25zKGZhbHNlKTsKCQkJCQkJdGhpcy5fZXJyb3IoIHsKCQkJCQkJCXR5cGU6ICQualBsYXllci5lcnJvci5VUkwsCgkJCQkJCQljb250ZXh0OnN0YXR1cy5zcmMsCgkJCQkJCQltZXNzYWdlOiAkLmpQbGF5ZXIuZXJyb3JNc2cuVVJMLAoJCQkJCQkJaGludDogJC5qUGxheWVyLmVycm9ySGludC5VUkwKCQkJCQkJfSk7CgkJCQkJCWJyZWFrOwoJCQkJCWNhc2UgJC5qUGxheWVyLmV2ZW50LnNlZWtpbmc6CgkJCQkJCXRoaXMuX3NlZWtpbmcoKTsKCQkJCQkJdGhpcy5fdHJpZ2dlcihldmVudFR5cGUpOwoJCQkJCQlicmVhazsKCQkJCQljYXNlICQualBsYXllci5ldmVudC5zZWVrZWQ6CgkJCQkJCXRoaXMuX3NlZWtlZCgpOwoJCQkJCQl0aGlzLl90cmlnZ2VyKGV2ZW50VHlwZSk7CgkJCQkJCWJyZWFrOwoJCQkJCWNhc2UgJC5qUGxheWVyLmV2ZW50LnJlYWR5OgoJCQkJCQkvLyBUaGUgcmVhZHkgZXZlbnQgaXMgaGFuZGxlZCBvdXRzaWRlIHRoZSBzd2l0Y2ggc3RhdGVtZW50LgoJCQkJCQkvLyBDYXB0dXJlZCBoZXJlIG90aGVyd2lzZSAyIHJlYWR5IGV2ZW50cyB3b3VsZCBiZSBnZW5lcmF0ZWQgaWYgdGhlIHJlYWR5IGV2ZW50IGhhbmRsZXIgdXNlZCBzZXRNZWRpYS4KCQkJCQkJYnJlYWs7CgkJCQkJZGVmYXVsdDoKCQkJCQkJdGhpcy5fdHJpZ2dlcihldmVudFR5cGUpOwoJCQkJfQoJCQl9CgkJCXJldHVybiBmYWxzZTsKCQl9LAoJCV9nZXRGbGFzaFN0YXR1czogZnVuY3Rpb24oc3RhdHVzKSB7CgkJCXRoaXMuc3RhdHVzLnNlZWtQZXJjZW50ID0gc3RhdHVzLnNlZWtQZXJjZW50OwoJCQl0aGlzLnN0YXR1cy5jdXJyZW50UGVyY2VudFJlbGF0aXZlID0gc3RhdHVzLmN1cnJlbnRQZXJjZW50UmVsYXRpdmU7CgkJCXRoaXMuc3RhdHVzLmN1cnJlbnRQZXJjZW50QWJzb2x1dGUgPSBzdGF0dXMuY3VycmVudFBlcmNlbnRBYnNvbHV0ZTsKCQkJdGhpcy5zdGF0dXMuY3VycmVudFRpbWUgPSBzdGF0dXMuY3VycmVudFRpbWU7CgkJCXRoaXMuc3RhdHVzLmR1cmF0aW9uID0gc3RhdHVzLmR1cmF0aW9uOwoJCQl0aGlzLnN0YXR1cy5yZW1haW5pbmcgPSBzdGF0dXMuZHVyYXRpb24gLSBzdGF0dXMuY3VycmVudFRpbWU7CgoJCQl0aGlzLnN0YXR1cy52aWRlb1dpZHRoID0gc3RhdHVzLnZpZGVvV2lkdGg7CgkJCXRoaXMuc3RhdHVzLnZpZGVvSGVpZ2h0ID0gc3RhdHVzLnZpZGVvSGVpZ2h0OwoKCQkJLy8gVGhlIEZsYXNoIGRvZXMgbm90IGdlbmVyYXRlIHRoaXMgaW5mb3JtYXRpb24gaW4gdGhpcyByZWxlYXNlCgkJCXRoaXMuc3RhdHVzLnJlYWR5U3RhdGUgPSA0OyAvLyBzdGF0dXMucmVhZHlTdGF0ZTsKCQkJdGhpcy5zdGF0dXMubmV0d29ya1N0YXRlID0gMDsgLy8gc3RhdHVzLm5ldHdvcmtTdGF0ZTsKCQkJdGhpcy5zdGF0dXMucGxheWJhY2tSYXRlID0gMTsgLy8gc3RhdHVzLnBsYXliYWNrUmF0ZTsKCQkJdGhpcy5zdGF0dXMuZW5kZWQgPSBmYWxzZTsgLy8gc3RhdHVzLmVuZGVkOwoJCX0sCgkJX3VwZGF0ZUJ1dHRvbnM6IGZ1bmN0aW9uKHBsYXlpbmcpIHsKCQkJaWYocGxheWluZyA9PT0gdW5kZWZpbmVkKSB7CgkJCQlwbGF5aW5nID0gIXRoaXMuc3RhdHVzLnBhdXNlZDsKCQkJfSBlbHNlIHsKCQkJCXRoaXMuc3RhdHVzLnBhdXNlZCA9ICFwbGF5aW5nOwoJCQl9CgkJCS8vIEFwcGx5IHRoZSBzdGF0ZSBjbGFzc2VzLiAoRm9yIHRoZSB1c2VTdGF0ZUNsYXNzU2tpbjp0cnVlIG9wdGlvbikKCQkJaWYocGxheWluZykgewoJCQkJdGhpcy5hZGRTdGF0ZUNsYXNzKCdwbGF5aW5nJyk7CgkJCX0gZWxzZSB7CgkJCQl0aGlzLnJlbW92ZVN0YXRlQ2xhc3MoJ3BsYXlpbmcnKTsKCQkJfQoJCQlpZighdGhpcy5zdGF0dXMubm9GdWxsV2luZG93ICYmIHRoaXMub3B0aW9ucy5mdWxsV2luZG93KSB7CgkJCQl0aGlzLmFkZFN0YXRlQ2xhc3MoJ2Z1bGxTY3JlZW4nKTsKCQkJfSBlbHNlIHsKCQkJCXRoaXMucmVtb3ZlU3RhdGVDbGFzcygnZnVsbFNjcmVlbicpOwoJCQl9CgkJCWlmKHRoaXMub3B0aW9ucy5sb29wKSB7CgkJCQl0aGlzLmFkZFN0YXRlQ2xhc3MoJ2xvb3BlZCcpOwoJCQl9IGVsc2UgewoJCQkJdGhpcy5yZW1vdmVTdGF0ZUNsYXNzKCdsb29wZWQnKTsKCQkJfQoJCQkvLyBUb2dnbGUgdGhlIEdVSSBlbGVtZW50IHBhaXJzLiAoRm9yIHRoZSB1c2VTdGF0ZUNsYXNzU2tpbjpmYWxzZSBvcHRpb24pCgkJCWlmKHRoaXMuY3NzLmpxLnBsYXkubGVuZ3RoICYmIHRoaXMuY3NzLmpxLnBhdXNlLmxlbmd0aCkgewoJCQkJaWYocGxheWluZykgewoJCQkJCXRoaXMuY3NzLmpxLnBsYXkuaGlkZSgpOwoJCQkJCXRoaXMuY3NzLmpxLnBhdXNlLnNob3coKTsKCQkJCX0gZWxzZSB7CgkJCQkJdGhpcy5jc3MuanEucGxheS5zaG93KCk7CgkJCQkJdGhpcy5jc3MuanEucGF1c2UuaGlkZSgpOwoJCQkJfQoJCQl9CgkJCWlmKHRoaXMuY3NzLmpxLnJlc3RvcmVTY3JlZW4ubGVuZ3RoICYmIHRoaXMuY3NzLmpxLmZ1bGxTY3JlZW4ubGVuZ3RoKSB7CgkJCQlpZih0aGlzLnN0YXR1cy5ub0Z1bGxXaW5kb3cpIHsKCQkJCQl0aGlzLmNzcy5qcS5mdWxsU2NyZWVuLmhpZGUoKTsKCQkJCQl0aGlzLmNzcy5qcS5yZXN0b3JlU2NyZWVuLmhpZGUoKTsKCQkJCX0gZWxzZSBpZih0aGlzLm9wdGlvbnMuZnVsbFdpbmRvdykgewoJCQkJCXRoaXMuY3NzLmpxLmZ1bGxTY3JlZW4uaGlkZSgpOwoJCQkJCXRoaXMuY3NzLmpxLnJlc3RvcmVTY3JlZW4uc2hvdygpOwoJCQkJfSBlbHNlIHsKCQkJCQl0aGlzLmNzcy5qcS5mdWxsU2NyZWVuLnNob3coKTsKCQkJCQl0aGlzLmNzcy5qcS5yZXN0b3JlU2NyZWVuLmhpZGUoKTsKCQkJCX0KCQkJfQoJCQlpZih0aGlzLmNzcy5qcS5yZXBlYXQubGVuZ3RoICYmIHRoaXMuY3NzLmpxLnJlcGVhdE9mZi5sZW5ndGgpIHsKCQkJCWlmKHRoaXMub3B0aW9ucy5sb29wKSB7CgkJCQkJdGhpcy5jc3MuanEucmVwZWF0LmhpZGUoKTsKCQkJCQl0aGlzLmNzcy5qcS5yZXBlYXRPZmYuc2hvdygpOwoJCQkJfSBlbHNlIHsKCQkJCQl0aGlzLmNzcy5qcS5yZXBlYXQuc2hvdygpOwoJCQkJCXRoaXMuY3NzLmpxLnJlcGVhdE9mZi5oaWRlKCk7CgkJCQl9CgkJCX0KCQl9LAoJCV91cGRhdGVJbnRlcmZhY2U6IGZ1bmN0aW9uKCkgewoJCQlpZih0aGlzLmNzcy5qcS5zZWVrQmFyLmxlbmd0aCkgewoJCQkJdGhpcy5jc3MuanEuc2Vla0Jhci53aWR0aCh0aGlzLnN0YXR1cy5zZWVrUGVyY2VudCsiJSIpOwoJCQl9CgkJCWlmKHRoaXMuY3NzLmpxLnBsYXlCYXIubGVuZ3RoKSB7CgkJCQlpZih0aGlzLm9wdGlvbnMuc21vb3RoUGxheUJhcikgewoJCQkJCXRoaXMuY3NzLmpxLnBsYXlCYXIuc3RvcCgpLmFuaW1hdGUoewoJCQkJCQl3aWR0aDogdGhpcy5zdGF0dXMuY3VycmVudFBlcmNlbnRBYnNvbHV0ZSsiJSIKCQkJCQl9LCAyNTAsICJsaW5lYXIiKTsKCQkJCX0gZWxzZSB7CgkJCQkJdGhpcy5jc3MuanEucGxheUJhci53aWR0aCh0aGlzLnN0YXR1cy5jdXJyZW50UGVyY2VudFJlbGF0aXZlKyIlIik7CgkJCQl9CgkJCX0KCQkJdmFyIGN1cnJlbnRUaW1lVGV4dCA9ICcnOwoJCQlpZih0aGlzLmNzcy5qcS5jdXJyZW50VGltZS5sZW5ndGgpIHsKCQkJCWN1cnJlbnRUaW1lVGV4dCA9IHRoaXMuX2NvbnZlcnRUaW1lKHRoaXMuc3RhdHVzLmN1cnJlbnRUaW1lKTsKCQkJCWlmKGN1cnJlbnRUaW1lVGV4dCAhPT0gdGhpcy5jc3MuanEuY3VycmVudFRpbWUudGV4dCgpKSB7CgkJCQkJdGhpcy5jc3MuanEuY3VycmVudFRpbWUudGV4dCh0aGlzLl9jb252ZXJ0VGltZSh0aGlzLnN0YXR1cy5jdXJyZW50VGltZSkpOwoJCQkJfQoJCQl9CgkJCXZhciBkdXJhdGlvblRleHQgPSAnJywKCQkJCWR1cmF0aW9uID0gdGhpcy5zdGF0dXMuZHVyYXRpb24sCgkJCQlyZW1haW5pbmcgPSB0aGlzLnN0YXR1cy5yZW1haW5pbmc7CgkJCWlmKHRoaXMuY3NzLmpxLmR1cmF0aW9uLmxlbmd0aCkgewoJCQkJaWYodHlwZW9mIHRoaXMuc3RhdHVzLm1lZGlhLmR1cmF0aW9uID09PSAnc3RyaW5nJykgewoJCQkJCWR1cmF0aW9uVGV4dCA9IHRoaXMuc3RhdHVzLm1lZGlhLmR1cmF0aW9uOwoJCQkJfSBlbHNlIHsKCQkJCQlpZih0eXBlb2YgdGhpcy5zdGF0dXMubWVkaWEuZHVyYXRpb24gPT09ICdudW1iZXInKSB7CgkJCQkJCWR1cmF0aW9uID0gdGhpcy5zdGF0dXMubWVkaWEuZHVyYXRpb247CgkJCQkJCXJlbWFpbmluZyA9IGR1cmF0aW9uIC0gdGhpcy5zdGF0dXMuY3VycmVudFRpbWU7CgkJCQkJfQoJCQkJCWlmKHRoaXMub3B0aW9ucy5yZW1haW5pbmdEdXJhdGlvbikgewoJCQkJCQlkdXJhdGlvblRleHQgPSAocmVtYWluaW5nID4gMCA/ICctJyA6ICcnKSArIHRoaXMuX2NvbnZlcnRUaW1lKHJlbWFpbmluZyk7CgkJCQkJfSBlbHNlIHsKCQkJCQkJZHVyYXRpb25UZXh0ID0gdGhpcy5fY29udmVydFRpbWUoZHVyYXRpb24pOwoJCQkJCX0KCQkJCX0KCQkJCWlmKGR1cmF0aW9uVGV4dCAhPT0gdGhpcy5jc3MuanEuZHVyYXRpb24udGV4dCgpKSB7CgkJCQkJdGhpcy5jc3MuanEuZHVyYXRpb24udGV4dChkdXJhdGlvblRleHQpOwoJCQkJfQoJCQl9CgkJfSwKCQlfY29udmVydFRpbWU6IENvbnZlcnRUaW1lLnByb3RvdHlwZS50aW1lLAoJCV9zZWVraW5nOiBmdW5jdGlvbigpIHsKCQkJaWYodGhpcy5jc3MuanEuc2Vla0Jhci5sZW5ndGgpIHsKCQkJCXRoaXMuY3NzLmpxLnNlZWtCYXIuYWRkQ2xhc3MoImpwLXNlZWtpbmctYmciKTsKCQkJfQoJCQl0aGlzLmFkZFN0YXRlQ2xhc3MoJ3NlZWtpbmcnKTsKCQl9LAoJCV9zZWVrZWQ6IGZ1bmN0aW9uKCkgewoJCQlpZih0aGlzLmNzcy5qcS5zZWVrQmFyLmxlbmd0aCkgewoJCQkJdGhpcy5jc3MuanEuc2Vla0Jhci5yZW1vdmVDbGFzcygianAtc2Vla2luZy1iZyIpOwoJCQl9CgkJCXRoaXMucmVtb3ZlU3RhdGVDbGFzcygnc2Vla2luZycpOwoJCX0sCgkJX3Jlc2V0R2F0ZTogZnVuY3Rpb24oKSB7CgkJCXRoaXMuaHRtbC5hdWRpby5nYXRlID0gZmFsc2U7CgkJCXRoaXMuaHRtbC52aWRlby5nYXRlID0gZmFsc2U7CgkJCXRoaXMuYXVyb3JhLmdhdGUgPSBmYWxzZTsKCQkJdGhpcy5mbGFzaC5nYXRlID0gZmFsc2U7CgkJfSwKCQlfcmVzZXRBY3RpdmU6IGZ1bmN0aW9uKCkgewoJCQl0aGlzLmh0bWwuYWN0aXZlID0gZmFsc2U7CgkJCXRoaXMuYXVyb3JhLmFjdGl2ZSA9IGZhbHNlOwoJCQl0aGlzLmZsYXNoLmFjdGl2ZSA9IGZhbHNlOwoJCX0sCgkJX2VzY2FwZUh0bWw6IGZ1bmN0aW9uKHMpIHsKCQkJcmV0dXJuIHMuc3BsaXQoJyYnKS5qb2luKCcmYW1wOycpLnNwbGl0KCc8Jykuam9pbignJmx0OycpLnNwbGl0KCc+Jykuam9pbignJmd0OycpLnNwbGl0KCciJykuam9pbignJnF1b3Q7Jyk7CgkJfSwKCQlfcXVhbGlmeVVSTDogZnVuY3Rpb24odXJsKSB7CgkJCXZhciBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwoJCQllbC5pbm5lckhUTUw9ICc8YSBocmVmPSInICsgdGhpcy5fZXNjYXBlSHRtbCh1cmwpICsgJyI+eDwvYT4nOwoJCQlyZXR1cm4gZWwuZmlyc3RDaGlsZC5ocmVmOwoJCX0sCgkJX2Fic29sdXRlTWVkaWFVcmxzOiBmdW5jdGlvbihtZWRpYSkgewoJCQl2YXIgc2VsZiA9IHRoaXM7CgkJCSQuZWFjaChtZWRpYSwgZnVuY3Rpb24odHlwZSwgdXJsKSB7CgkJCQlpZih1cmwgJiYgc2VsZi5mb3JtYXRbdHlwZV0gJiYgdXJsLnN1YnN0cigwLCA1KSAhPT0gImRhdGE6IikgewoJCQkJCW1lZGlhW3R5cGVdID0gc2VsZi5fcXVhbGlmeVVSTCh1cmwpOwoJCQkJfQoJCQl9KTsKCQkJcmV0dXJuIG1lZGlhOwoJCX0sCgkJYWRkU3RhdGVDbGFzczogZnVuY3Rpb24oc3RhdGUpIHsKCQkJaWYodGhpcy5hbmNlc3RvckpxLmxlbmd0aCkgewoJCQkJdGhpcy5hbmNlc3RvckpxLmFkZENsYXNzKHRoaXMub3B0aW9ucy5zdGF0ZUNsYXNzW3N0YXRlXSk7CgkJCX0KCQl9LAoJCXJlbW92ZVN0YXRlQ2xhc3M6IGZ1bmN0aW9uKHN0YXRlKSB7CgkJCWlmKHRoaXMuYW5jZXN0b3JKcS5sZW5ndGgpIHsKCQkJCXRoaXMuYW5jZXN0b3JKcS5yZW1vdmVDbGFzcyh0aGlzLm9wdGlvbnMuc3RhdGVDbGFzc1tzdGF0ZV0pOwoJCQl9CgkJfSwKCQlzZXRNZWRpYTogZnVuY3Rpb24obWVkaWEpIHsKCQkKCQkJLyoJbWVkaWFbZm9ybWF0XSA9IFN0cmluZzogVVJMIG9mIGZvcm1hdC4gTXVzdCBjb250YWluIGFsbCBvZiB0aGUgc3VwcGxpZWQgb3B0aW9uJ3MgdmlkZW8gb3IgYXVkaW8gZm9ybWF0cy4KCQkJICoJbWVkaWEucG9zdGVyID0gU3RyaW5nOiBWaWRlbyBwb3N0ZXIgVVJMLgoJCQkgKgltZWRpYS50cmFjayA9IEFycmF5OiBPZiBvYmplY3RzIGRlZmluaW5nIHRoZSB0cmFjayBlbGVtZW50OiBraW5kLCBzcmMsIHNyY2xhbmcsIGxhYmVsLCBkZWYuCgkJCSAqCW1lZGlhLnN0cmVhbSA9IEJvb2xlYW46ICogTk9UIElNUExFTUVOVEVEICogRGVzaWduYXRpbmcgYWN0dWFsIG1lZGlhIHN0cmVhbXMuIGllLiwgImZhbHNlL3VuZGVmaW5lZCIgZm9yIGZpbGVzLiBQbGFuIHRvIHJlZnJlc2ggdGhlIGZsYXNoIGV2ZXJ5IHNvIG9mdGVuLgoJCQkgKi8KCgkJCXZhcglzZWxmID0gdGhpcywKCQkJCXN1cHBvcnRlZCA9IGZhbHNlLAoJCQkJcG9zdGVyQ2hhbmdlZCA9IHRoaXMuc3RhdHVzLm1lZGlhLnBvc3RlciAhPT0gbWVkaWEucG9zdGVyOyAvLyBDb21wYXJlIGJlZm9yZSByZXNldC4gSW1wb3J0YW50IGZvciBPU1ggU2FmYXJpIGFzIHRoaXMuaHRtbEVsZW1lbnQucG9zdGVyLnNyYyBpcyBhYnNvbHV0ZSwgZXZlbiBpZiBvcmlnaW5hbCBwb3N0ZXIgVVJMIHdhcyByZWxhdGl2ZS4KCgkJCXRoaXMuX3Jlc2V0TWVkaWEoKTsKCQkJdGhpcy5fcmVzZXRHYXRlKCk7CgkJCXRoaXMuX3Jlc2V0QWN0aXZlKCk7CgoJCQkvLyBDbGVhciB0aGUgQW5kcm9pZCBGaXguCgkJCXRoaXMuYW5kcm9pZEZpeC5zZXRNZWRpYSA9IGZhbHNlOwoJCQl0aGlzLmFuZHJvaWRGaXgucGxheSA9IGZhbHNlOwoJCQl0aGlzLmFuZHJvaWRGaXgucGF1c2UgPSBmYWxzZTsKCgkJCS8vIENvbnZlcnQgYWxsIG1lZGlhIFVSTHMgdG8gYWJzb2x1dGUgVVJMcy4KCQkJbWVkaWEgPSB0aGlzLl9hYnNvbHV0ZU1lZGlhVXJscyhtZWRpYSk7CgoJCQkkLmVhY2godGhpcy5mb3JtYXRzLCBmdW5jdGlvbihmb3JtYXRQcmlvcml0eSwgZm9ybWF0KSB7CgkJCQl2YXIgaXNWaWRlbyA9IHNlbGYuZm9ybWF0W2Zvcm1hdF0ubWVkaWEgPT09ICd2aWRlbyc7CgkJCQkkLmVhY2goc2VsZi5zb2x1dGlvbnMsIGZ1bmN0aW9uKHNvbHV0aW9uUHJpb3JpdHksIHNvbHV0aW9uKSB7CgkJCQkJaWYoc2VsZltzb2x1dGlvbl0uc3VwcG9ydFtmb3JtYXRdICYmIHNlbGYuX3ZhbGlkU3RyaW5nKG1lZGlhW2Zvcm1hdF0pKSB7IC8vIEZvcm1hdCBzdXBwb3J0ZWQgaW4gc29sdXRpb24gYW5kIHVybCBnaXZlbiBmb3IgZm9ybWF0LgoJCQkJCQl2YXIgaXNIdG1sID0gc29sdXRpb24gPT09ICdodG1sJzsKCQkJCQkJdmFyIGlzQXVyb3JhID0gc29sdXRpb24gPT09ICdhdXJvcmEnOwoKCQkJCQkJaWYoaXNWaWRlbykgewoJCQkJCQkJaWYoaXNIdG1sKSB7CgkJCQkJCQkJc2VsZi5odG1sLnZpZGVvLmdhdGUgPSB0cnVlOwoJCQkJCQkJCXNlbGYuX2h0bWxfc2V0VmlkZW8obWVkaWEpOwoJCQkJCQkJCXNlbGYuaHRtbC5hY3RpdmUgPSB0cnVlOwoJCQkJCQkJfSBlbHNlIHsKCQkJCQkJCQlzZWxmLmZsYXNoLmdhdGUgPSB0cnVlOwoJCQkJCQkJCXNlbGYuX2ZsYXNoX3NldFZpZGVvKG1lZGlhKTsKCQkJCQkJCQlzZWxmLmZsYXNoLmFjdGl2ZSA9IHRydWU7CgkJCQkJCQl9CgkJCQkJCQlpZihzZWxmLmNzcy5qcS52aWRlb1BsYXkubGVuZ3RoKSB7CgkJCQkJCQkJc2VsZi5jc3MuanEudmlkZW9QbGF5LnNob3coKTsKCQkJCQkJCX0KCQkJCQkJCXNlbGYuc3RhdHVzLnZpZGVvID0gdHJ1ZTsKCQkJCQkJfSBlbHNlIHsKCQkJCQkJCWlmKGlzSHRtbCkgewoJCQkJCQkJCXNlbGYuaHRtbC5hdWRpby5nYXRlID0gdHJ1ZTsKCQkJCQkJCQlzZWxmLl9odG1sX3NldEF1ZGlvKG1lZGlhKTsKCQkJCQkJCQlzZWxmLmh0bWwuYWN0aXZlID0gdHJ1ZTsKCgkJCQkJCQkJLy8gU2V0dXAgdGhlIEFuZHJvaWQgRml4IC0gT25seSBmb3IgSFRNTCBhdWRpby4KCQkJCQkJCQlpZigkLmpQbGF5ZXIucGxhdGZvcm0uYW5kcm9pZCkgewoJCQkJCQkJCQlzZWxmLmFuZHJvaWRGaXguc2V0TWVkaWEgPSB0cnVlOwoJCQkJCQkJCX0KCQkJCQkJCX0gZWxzZSBpZihpc0F1cm9yYSkgewoJCQkJCQkJCXNlbGYuYXVyb3JhLmdhdGUgPSB0cnVlOwoJCQkJCQkJCXNlbGYuX2F1cm9yYV9zZXRBdWRpbyhtZWRpYSk7CgkJCQkJCQkJc2VsZi5hdXJvcmEuYWN0aXZlID0gdHJ1ZTsKCQkJCQkJCX0gZWxzZSB7CgkJCQkJCQkJc2VsZi5mbGFzaC5nYXRlID0gdHJ1ZTsKCQkJCQkJCQlzZWxmLl9mbGFzaF9zZXRBdWRpbyhtZWRpYSk7CgkJCQkJCQkJc2VsZi5mbGFzaC5hY3RpdmUgPSB0cnVlOwoJCQkJCQkJfQoJCQkJCQkJaWYoc2VsZi5jc3MuanEudmlkZW9QbGF5Lmxlbmd0aCkgewoJCQkJCQkJCXNlbGYuY3NzLmpxLnZpZGVvUGxheS5oaWRlKCk7CgkJCQkJCQl9CgkJCQkJCQlzZWxmLnN0YXR1cy52aWRlbyA9IGZhbHNlOwoJCQkJCQl9CgkJCQkJCQoJCQkJCQlzdXBwb3J0ZWQgPSB0cnVlOwoJCQkJCQlyZXR1cm4gZmFsc2U7IC8vIEV4aXQgJC5lYWNoCgkJCQkJfQoJCQkJfSk7CgkJCQlpZihzdXBwb3J0ZWQpIHsKCQkJCQlyZXR1cm4gZmFsc2U7IC8vIEV4aXQgJC5lYWNoCgkJCQl9CgkJCX0pOwoKCQkJaWYoc3VwcG9ydGVkKSB7CgkJCQlpZighKHRoaXMuc3RhdHVzLm5hdGl2ZVZpZGVvQ29udHJvbHMgJiYgdGhpcy5odG1sLnZpZGVvLmdhdGUpKSB7CgkJCQkJLy8gU2V0IHBvc3RlciBJTUcgaWYgbmF0aXZlIHZpZGVvIGNvbnRyb2xzIGFyZSBub3QgYmVpbmcgdXNlZAoJCQkJCS8vIE5vdGU6IFdpdGggSUUgdGhlIElNRyBvbmxvYWQgZXZlbnQgb2NjdXJzIGltbWVkaWF0ZWx5IHdoZW4gY2FjaGVkLgoJCQkJCS8vIE5vdGU6IFBvc3RlciBoaWRkZW4gYnkgZGVmYXVsdCBpbiBfcmVzZXRNZWRpYSgpCgkJCQkJaWYodGhpcy5fdmFsaWRTdHJpbmcobWVkaWEucG9zdGVyKSkgewoJCQkJCQlpZihwb3N0ZXJDaGFuZ2VkKSB7IC8vIFNpbmNlIHNvbWUgYnJvd3NlcnMgZG8gbm90IGdlbmVyYXRlIGltZyBvbmxvYWQgZXZlbnQuCgkJCQkJCQl0aGlzLmh0bWxFbGVtZW50LnBvc3Rlci5zcmMgPSBtZWRpYS5wb3N0ZXI7CgkJCQkJCX0gZWxzZSB7CgkJCQkJCQl0aGlzLmludGVybmFsLnBvc3Rlci5qcS5zaG93KCk7CgkJCQkJCX0KCQkJCQl9CgkJCQl9CgkJCQlpZih0eXBlb2YgbWVkaWEudGl0bGUgPT09ICdzdHJpbmcnKSB7CgkJCQkJaWYodGhpcy5jc3MuanEudGl0bGUubGVuZ3RoKSB7CgkJCQkJCXRoaXMuY3NzLmpxLnRpdGxlLmh0bWwobWVkaWEudGl0bGUpOwoJCQkJCX0KCQkJCQlpZih0aGlzLmh0bWxFbGVtZW50LmF1ZGlvKSB7CgkJCQkJCXRoaXMuaHRtbEVsZW1lbnQuYXVkaW8uc2V0QXR0cmlidXRlKCd0aXRsZScsIG1lZGlhLnRpdGxlKTsKCQkJCQl9CgkJCQkJaWYodGhpcy5odG1sRWxlbWVudC52aWRlbykgewoJCQkJCQl0aGlzLmh0bWxFbGVtZW50LnZpZGVvLnNldEF0dHJpYnV0ZSgndGl0bGUnLCBtZWRpYS50aXRsZSk7CgkJCQkJfQoJCQkJfQoJCQkJdGhpcy5zdGF0dXMuc3JjU2V0ID0gdHJ1ZTsKCQkJCXRoaXMuc3RhdHVzLm1lZGlhID0gJC5leHRlbmQoe30sIG1lZGlhKTsKCQkJCXRoaXMuX3VwZGF0ZUJ1dHRvbnMoZmFsc2UpOwoJCQkJdGhpcy5fdXBkYXRlSW50ZXJmYWNlKCk7CgkJCQl0aGlzLl90cmlnZ2VyKCQualBsYXllci5ldmVudC5zZXRtZWRpYSk7CgkJCX0gZWxzZSB7IC8vIGpQbGF5ZXIgY2Fubm90IHN1cHBvcnQgYW55IGZvcm1hdHMgcHJvdmlkZWQgaW4gdGhpcyBicm93c2VyCgkJCQkvLyBTZW5kIGFuIGVycm9yIGV2ZW50CgkJCQl0aGlzLl9lcnJvciggewoJCQkJCXR5cGU6ICQualBsYXllci5lcnJvci5OT19TVVBQT1JULAoJCQkJCWNvbnRleHQ6ICJ7c3VwcGxpZWQ6JyIgKyB0aGlzLm9wdGlvbnMuc3VwcGxpZWQgKyAiJ30iLAoJCQkJCW1lc3NhZ2U6ICQualBsYXllci5lcnJvck1zZy5OT19TVVBQT1JULAoJCQkJCWhpbnQ6ICQualBsYXllci5lcnJvckhpbnQuTk9fU1VQUE9SVAoJCQkJfSk7CgkJCX0KCQl9LAoJCV9yZXNldE1lZGlhOiBmdW5jdGlvbigpIHsKCQkJdGhpcy5fcmVzZXRTdGF0dXMoKTsKCQkJdGhpcy5fdXBkYXRlQnV0dG9ucyhmYWxzZSk7CgkJCXRoaXMuX3VwZGF0ZUludGVyZmFjZSgpOwoJCQl0aGlzLl9zZWVrZWQoKTsKCQkJdGhpcy5pbnRlcm5hbC5wb3N0ZXIuanEuaGlkZSgpOwoKCQkJY2xlYXJUaW1lb3V0KHRoaXMuaW50ZXJuYWwuaHRtbERseUNtZElkKTsKCgkJCWlmKHRoaXMuaHRtbC5hY3RpdmUpIHsKCQkJCXRoaXMuX2h0bWxfcmVzZXRNZWRpYSgpOwoJCQl9IGVsc2UgaWYodGhpcy5hdXJvcmEuYWN0aXZlKSB7CgkJCQl0aGlzLl9hdXJvcmFfcmVzZXRNZWRpYSgpOwoJCQl9IGVsc2UgaWYodGhpcy5mbGFzaC5hY3RpdmUpIHsKCQkJCXRoaXMuX2ZsYXNoX3Jlc2V0TWVkaWEoKTsKCQkJfQoJCX0sCgkJY2xlYXJNZWRpYTogZnVuY3Rpb24oKSB7CgkJCXRoaXMuX3Jlc2V0TWVkaWEoKTsKCgkJCWlmKHRoaXMuaHRtbC5hY3RpdmUpIHsKCQkJCXRoaXMuX2h0bWxfY2xlYXJNZWRpYSgpOwoJCQl9IGVsc2UgaWYodGhpcy5hdXJvcmEuYWN0aXZlKSB7CgkJCQl0aGlzLl9hdXJvcmFfY2xlYXJNZWRpYSgpOwoJCQl9IGVsc2UgaWYodGhpcy5mbGFzaC5hY3RpdmUpIHsKCQkJCXRoaXMuX2ZsYXNoX2NsZWFyTWVkaWEoKTsKCQkJfQoKCQkJdGhpcy5fcmVzZXRHYXRlKCk7CgkJCXRoaXMuX3Jlc2V0QWN0aXZlKCk7CgkJfSwKCQlsb2FkOiBmdW5jdGlvbigpIHsKCQkJaWYodGhpcy5zdGF0dXMuc3JjU2V0KSB7CgkJCQlpZih0aGlzLmh0bWwuYWN0aXZlKSB7CgkJCQkJdGhpcy5faHRtbF9sb2FkKCk7CgkJCQl9IGVsc2UgaWYodGhpcy5hdXJvcmEuYWN0aXZlKSB7CgkJCQkJdGhpcy5fYXVyb3JhX2xvYWQoKTsKCQkJCX0gZWxzZSBpZih0aGlzLmZsYXNoLmFjdGl2ZSkgewoJCQkJCXRoaXMuX2ZsYXNoX2xvYWQoKTsKCQkJCX0KCQkJfSBlbHNlIHsKCQkJCXRoaXMuX3VybE5vdFNldEVycm9yKCJsb2FkIik7CgkJCX0KCQl9LAoJCWZvY3VzOiBmdW5jdGlvbigpIHsKCQkJaWYodGhpcy5vcHRpb25zLmtleUVuYWJsZWQpIHsKCQkJCSQualBsYXllci5mb2N1cyA9IHRoaXM7CgkJCX0KCQl9LAoJCXBsYXk6IGZ1bmN0aW9uKHRpbWUpIHsKCQkJdmFyIGd1aUFjdGlvbiA9IHR5cGVvZiB0aW1lID09PSAib2JqZWN0IjsgLy8gRmxhZ3MgR1VJIGNsaWNrIGV2ZW50cyBzbyB3ZSBrbm93IHRoaXMgd2FzIG5vdCBhIGRpcmVjdCBjb21tYW5kLCBidXQgYW4gYWN0aW9uIHRha2VuIGJ5IHRoZSB1c2VyIG9uIHRoZSBHVUkuCgkJCWlmKGd1aUFjdGlvbiAmJiB0aGlzLm9wdGlvbnMudXNlU3RhdGVDbGFzc1NraW4gJiYgIXRoaXMuc3RhdHVzLnBhdXNlZCkgewoJCQkJdGhpcy5wYXVzZSh0aW1lKTsgLy8gVGhlIHRpbWUgd291bGQgYmUgdGhlIGNsaWNrIGV2ZW50LCBidXQgcGFzc2luZyBpdCBvdmVyIHNvIGluZm8gaXMgbm90IGxvc3QuCgkJCX0gZWxzZSB7CgkJCQl0aW1lID0gKHR5cGVvZiB0aW1lID09PSAibnVtYmVyIikgPyB0aW1lIDogTmFOOyAvLyBSZW1vdmUgalF1ZXJ5IGV2ZW50IGZyb20gY2xpY2sgaGFuZGxlcgoJCQkJaWYodGhpcy5zdGF0dXMuc3JjU2V0KSB7CgkJCQkJdGhpcy5mb2N1cygpOwoJCQkJCWlmKHRoaXMuaHRtbC5hY3RpdmUpIHsKCQkJCQkJdGhpcy5faHRtbF9wbGF5KHRpbWUpOwoJCQkJCX0gZWxzZSBpZih0aGlzLmF1cm9yYS5hY3RpdmUpIHsKCQkJCQkJdGhpcy5fYXVyb3JhX3BsYXkodGltZSk7CgkJCQkJfSBlbHNlIGlmKHRoaXMuZmxhc2guYWN0aXZlKSB7CgkJCQkJCXRoaXMuX2ZsYXNoX3BsYXkodGltZSk7CgkJCQkJfQoJCQkJfSBlbHNlIHsKCQkJCQl0aGlzLl91cmxOb3RTZXRFcnJvcigicGxheSIpOwoJCQkJfQoJCQl9CgkJfSwKCQl2aWRlb1BsYXk6IGZ1bmN0aW9uKCkgeyAvLyBIYW5kbGVzIGNsaWNrcyBvbiB0aGUgcGxheSBidXR0b24gb3ZlciB0aGUgdmlkZW8gcG9zdGVyCgkJCXRoaXMucGxheSgpOwoJCX0sCgkJcGF1c2U6IGZ1bmN0aW9uKHRpbWUpIHsKCQkJdGltZSA9ICh0eXBlb2YgdGltZSA9PT0gIm51bWJlciIpID8gdGltZSA6IE5hTjsgLy8gUmVtb3ZlIGpRdWVyeSBldmVudCBmcm9tIGNsaWNrIGhhbmRsZXIKCQkJaWYodGhpcy5zdGF0dXMuc3JjU2V0KSB7CgkJCQlpZih0aGlzLmh0bWwuYWN0aXZlKSB7CgkJCQkJdGhpcy5faHRtbF9wYXVzZSh0aW1lKTsKCQkJCX0gZWxzZSBpZih0aGlzLmF1cm9yYS5hY3RpdmUpIHsKCQkJCQl0aGlzLl9hdXJvcmFfcGF1c2UodGltZSk7CgkJCQl9IGVsc2UgaWYodGhpcy5mbGFzaC5hY3RpdmUpIHsKCQkJCQl0aGlzLl9mbGFzaF9wYXVzZSh0aW1lKTsKCQkJCX0KCQkJfSBlbHNlIHsKCQkJCXRoaXMuX3VybE5vdFNldEVycm9yKCJwYXVzZSIpOwoJCQl9CgkJfSwKCQl0ZWxsT3RoZXJzOiBmdW5jdGlvbihjb21tYW5kLCBjb25kaXRpb25zKSB7CgkJCXZhciBzZWxmID0gdGhpcywKCQkJCWhhc0NvbmRpdGlvbnMgPSB0eXBlb2YgY29uZGl0aW9ucyA9PT0gJ2Z1bmN0aW9uJywKCQkJCWFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpOyAvLyBDb252ZXJ0IGFyZ3VtZW50cyB0byBhbiBBcnJheS4KCgkJCWlmKHR5cGVvZiBjb21tYW5kICE9PSAnc3RyaW5nJykgeyAvLyBJZ25vcmUsIHNpbmNlIG5vIGNvbW1hbmQuCgkJCQlyZXR1cm47IC8vIFJldHVybiB1bmRlZmluZWQgdG8gbWFpbnRhaW4gY2hhaW5pbmcuCgkJCX0KCQkJaWYoaGFzQ29uZGl0aW9ucykgewoJCQkJYXJncy5zcGxpY2UoMSwgMSk7IC8vIFJlbW92ZSB0aGUgY29uZGl0aW9ucyBmcm9tIHRoZSBhcmd1bWVudHMKCQkJfQoKCQkJJC5qUGxheWVyLnByb3RvdHlwZS5kZXN0cm95UmVtb3ZlZCgpOwoJCQkkLmVhY2godGhpcy5pbnN0YW5jZXMsIGZ1bmN0aW9uKCkgewoJCQkJLy8gUmVtZW1iZXIgdGhhdCAidGhpcyIgaXMgdGhlIGluc3RhbmNlJ3MgImVsZW1lbnQiIGluIHRoZSAkLmVhY2goKSBsb29wLgoJCQkJaWYoc2VsZi5lbGVtZW50ICE9PSB0aGlzKSB7IC8vIERvIG5vdCB0ZWxsIG15IGluc3RhbmNlLgoJCQkJCWlmKCFoYXNDb25kaXRpb25zIHx8IGNvbmRpdGlvbnMuY2FsbCh0aGlzLmRhdGEoImpQbGF5ZXIiKSwgc2VsZikpIHsKCQkJCQkJdGhpcy5qUGxheWVyLmFwcGx5KHRoaXMsIGFyZ3MpOwoJCQkJCX0KCQkJCX0KCQkJfSk7CgkJfSwKCQlwYXVzZU90aGVyczogZnVuY3Rpb24odGltZSkgewoJCQl0aGlzLnRlbGxPdGhlcnMoInBhdXNlIiwgZnVuY3Rpb24oKSB7CgkJCQkvLyBJbiB0aGUgY29uZGl0aW9ucyBmdW5jdGlvbiwgdGhlICJ0aGlzIiBjb250ZXh0IGlzIHRoZSBvdGhlciBpbnN0YW5jZSdzIGpQbGF5ZXIgb2JqZWN0LgoJCQkJcmV0dXJuIHRoaXMuc3RhdHVzLnNyY1NldDsKCQkJfSwgdGltZSk7CgkJfSwKCQlzdG9wOiBmdW5jdGlvbigpIHsKCQkJaWYodGhpcy5zdGF0dXMuc3JjU2V0KSB7CgkJCQlpZih0aGlzLmh0bWwuYWN0aXZlKSB7CgkJCQkJdGhpcy5faHRtbF9wYXVzZSgwKTsKCQkJCX0gZWxzZSBpZih0aGlzLmF1cm9yYS5hY3RpdmUpIHsKCQkJCQl0aGlzLl9hdXJvcmFfcGF1c2UoMCk7CgkJCQl9IGVsc2UgaWYodGhpcy5mbGFzaC5hY3RpdmUpIHsKCQkJCQl0aGlzLl9mbGFzaF9wYXVzZSgwKTsKCQkJCX0KCQkJfSBlbHNlIHsKCQkJCXRoaXMuX3VybE5vdFNldEVycm9yKCJzdG9wIik7CgkJCX0KCQl9LAoJCXBsYXlIZWFkOiBmdW5jdGlvbihwKSB7CgkJCXAgPSB0aGlzLl9saW1pdFZhbHVlKHAsIDAsIDEwMCk7CgkJCWlmKHRoaXMuc3RhdHVzLnNyY1NldCkgewoJCQkJaWYodGhpcy5odG1sLmFjdGl2ZSkgewoJCQkJCXRoaXMuX2h0bWxfcGxheUhlYWQocCk7CgkJCQl9IGVsc2UgaWYodGhpcy5hdXJvcmEuYWN0aXZlKSB7CgkJCQkJdGhpcy5fYXVyb3JhX3BsYXlIZWFkKHApOwoJCQkJfSBlbHNlIGlmKHRoaXMuZmxhc2guYWN0aXZlKSB7CgkJCQkJdGhpcy5fZmxhc2hfcGxheUhlYWQocCk7CgkJCQl9CgkJCX0gZWxzZSB7CgkJCQl0aGlzLl91cmxOb3RTZXRFcnJvcigicGxheUhlYWQiKTsKCQkJfQoJCX0sCgkJX211dGVkOiBmdW5jdGlvbihtdXRlZCkgewoJCQl0aGlzLm11dGVkV29ya2VyKG11dGVkKTsKCQkJaWYodGhpcy5vcHRpb25zLmdsb2JhbFZvbHVtZSkgewoJCQkJdGhpcy50ZWxsT3RoZXJzKCJtdXRlZFdvcmtlciIsIGZ1bmN0aW9uKCkgewoJCQkJCS8vIENoZWNrIHRoZSBvdGhlciBpbnN0YW5jZSBoYXMgZ2xvYmFsIHZvbHVtZSBlbmFibGVkLgoJCQkJCXJldHVybiB0aGlzLm9wdGlvbnMuZ2xvYmFsVm9sdW1lOwoJCQkJfSwgbXV0ZWQpOwoJCQl9CgkJfSwKCQltdXRlZFdvcmtlcjogZnVuY3Rpb24obXV0ZWQpIHsKCQkJdGhpcy5vcHRpb25zLm11dGVkID0gbXV0ZWQ7CgkJCWlmKHRoaXMuaHRtbC51c2VkKSB7CgkJCQl0aGlzLl9odG1sX3NldFByb3BlcnR5KCdtdXRlZCcsIG11dGVkKTsKCQkJfQoJCQlpZih0aGlzLmF1cm9yYS51c2VkKSB7CgkJCQl0aGlzLl9hdXJvcmFfbXV0ZShtdXRlZCk7CgkJCX0KCQkJaWYodGhpcy5mbGFzaC51c2VkKSB7CgkJCQl0aGlzLl9mbGFzaF9tdXRlKG11dGVkKTsKCQkJfQoKCQkJLy8gVGhlIEhUTUwgc29sdXRpb24gZ2VuZXJhdGVzIHRoaXMgZXZlbnQgZnJvbSB0aGUgbWVkaWEgZWxlbWVudCBpdHNlbGYuCgkJCWlmKCF0aGlzLmh0bWwudmlkZW8uZ2F0ZSAmJiAhdGhpcy5odG1sLmF1ZGlvLmdhdGUpIHsKCQkJCXRoaXMuX3VwZGF0ZU11dGUobXV0ZWQpOwoJCQkJdGhpcy5fdXBkYXRlVm9sdW1lKHRoaXMub3B0aW9ucy52b2x1bWUpOwoJCQkJdGhpcy5fdHJpZ2dlcigkLmpQbGF5ZXIuZXZlbnQudm9sdW1lY2hhbmdlKTsKCQkJfQoJCX0sCgkJbXV0ZTogZnVuY3Rpb24obXV0ZSkgeyAvLyBtdXRlIGlzIGVpdGhlcjogdW5kZWZpbmVkICh0cnVlKSwgYW4gZXZlbnQgb2JqZWN0ICh0cnVlKSBvciBhIGJvb2xlYW4gKG11dGVkKS4KCQkJdmFyIGd1aUFjdGlvbiA9IHR5cGVvZiBtdXRlID09PSAib2JqZWN0IjsgLy8gRmxhZ3MgR1VJIGNsaWNrIGV2ZW50cyBzbyB3ZSBrbm93IHRoaXMgd2FzIG5vdCBhIGRpcmVjdCBjb21tYW5kLCBidXQgYW4gYWN0aW9uIHRha2VuIGJ5IHRoZSB1c2VyIG9uIHRoZSBHVUkuCgkJCWlmKGd1aUFjdGlvbiAmJiB0aGlzLm9wdGlvbnMudXNlU3RhdGVDbGFzc1NraW4gJiYgdGhpcy5vcHRpb25zLm11dGVkKSB7CgkJCQl0aGlzLl9tdXRlZChmYWxzZSk7CgkJCX0gZWxzZSB7CgkJCQltdXRlID0gbXV0ZSA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6ICEhbXV0ZTsKCQkJCXRoaXMuX211dGVkKG11dGUpOwoJCQl9CgkJfSwKCQl1bm11dGU6IGZ1bmN0aW9uKHVubXV0ZSkgeyAvLyB1bm11dGUgaXMgZWl0aGVyOiB1bmRlZmluZWQgKHRydWUpLCBhbiBldmVudCBvYmplY3QgKHRydWUpIG9yIGEgYm9vbGVhbiAoIW11dGVkKS4KCQkJdW5tdXRlID0gdW5tdXRlID09PSB1bmRlZmluZWQgPyB0cnVlIDogISF1bm11dGU7CgkJCXRoaXMuX211dGVkKCF1bm11dGUpOwoJCX0sCgkJX3VwZGF0ZU11dGU6IGZ1bmN0aW9uKG11dGUpIHsKCQkJaWYobXV0ZSA9PT0gdW5kZWZpbmVkKSB7CgkJCQltdXRlID0gdGhpcy5vcHRpb25zLm11dGVkOwoJCQl9CgkJCWlmKG11dGUpIHsKCQkJCXRoaXMuYWRkU3RhdGVDbGFzcygnbXV0ZWQnKTsKCQkJfSBlbHNlIHsKCQkJCXRoaXMucmVtb3ZlU3RhdGVDbGFzcygnbXV0ZWQnKTsKCQkJfQoJCQlpZih0aGlzLmNzcy5qcS5tdXRlLmxlbmd0aCAmJiB0aGlzLmNzcy5qcS51bm11dGUubGVuZ3RoKSB7CgkJCQlpZih0aGlzLnN0YXR1cy5ub1ZvbHVtZSkgewoJCQkJCXRoaXMuY3NzLmpxLm11dGUuaGlkZSgpOwoJCQkJCXRoaXMuY3NzLmpxLnVubXV0ZS5oaWRlKCk7CgkJCQl9IGVsc2UgaWYobXV0ZSkgewoJCQkJCXRoaXMuY3NzLmpxLm11dGUuaGlkZSgpOwoJCQkJCXRoaXMuY3NzLmpxLnVubXV0ZS5zaG93KCk7CgkJCQl9IGVsc2UgewoJCQkJCXRoaXMuY3NzLmpxLm11dGUuc2hvdygpOwoJCQkJCXRoaXMuY3NzLmpxLnVubXV0ZS5oaWRlKCk7CgkJCQl9CgkJCX0KCQl9LAoJCXZvbHVtZTogZnVuY3Rpb24odikgewoJCQl0aGlzLnZvbHVtZVdvcmtlcih2KTsKCQkJaWYodGhpcy5vcHRpb25zLmdsb2JhbFZvbHVtZSkgewoJCQkJdGhpcy50ZWxsT3RoZXJzKCJ2b2x1bWVXb3JrZXIiLCBmdW5jdGlvbigpIHsKCQkJCQkvLyBDaGVjayB0aGUgb3RoZXIgaW5zdGFuY2UgaGFzIGdsb2JhbCB2b2x1bWUgZW5hYmxlZC4KCQkJCQlyZXR1cm4gdGhpcy5vcHRpb25zLmdsb2JhbFZvbHVtZTsKCQkJCX0sIHYpOwoJCQl9CgkJfSwKCQl2b2x1bWVXb3JrZXI6IGZ1bmN0aW9uKHYpIHsKCQkJdiA9IHRoaXMuX2xpbWl0VmFsdWUodiwgMCwgMSk7CgkJCXRoaXMub3B0aW9ucy52b2x1bWUgPSB2OwoKCQkJaWYodGhpcy5odG1sLnVzZWQpIHsKCQkJCXRoaXMuX2h0bWxfc2V0UHJvcGVydHkoJ3ZvbHVtZScsIHYpOwoJCQl9CgkJCWlmKHRoaXMuYXVyb3JhLnVzZWQpIHsKCQkJCXRoaXMuX2F1cm9yYV92b2x1bWUodik7CgkJCX0KCQkJaWYodGhpcy5mbGFzaC51c2VkKSB7CgkJCQl0aGlzLl9mbGFzaF92b2x1bWUodik7CgkJCX0KCgkJCS8vIFRoZSBIVE1MIHNvbHV0aW9uIGdlbmVyYXRlcyB0aGlzIGV2ZW50IGZyb20gdGhlIG1lZGlhIGVsZW1lbnQgaXRzZWxmLgoJCQlpZighdGhpcy5odG1sLnZpZGVvLmdhdGUgJiYgIXRoaXMuaHRtbC5hdWRpby5nYXRlKSB7CgkJCQl0aGlzLl91cGRhdGVWb2x1bWUodik7CgkJCQl0aGlzLl90cmlnZ2VyKCQualBsYXllci5ldmVudC52b2x1bWVjaGFuZ2UpOwoJCQl9CgkJfSwKCQl2b2x1bWVCYXI6IGZ1bmN0aW9uKGUpIHsgLy8gSGFuZGxlcyBjbGlja3Mgb24gdGhlIHZvbHVtZUJhcgoJCQlpZih0aGlzLmNzcy5qcS52b2x1bWVCYXIubGVuZ3RoKSB7CgkJCQkvLyBVc2luZyAkKGUuY3VycmVudFRhcmdldCkgdG8gZW5hYmxlIG11bHRpcGxlIHZvbHVtZSBiYXJzCgkJCQl2YXIgJGJhciA9ICQoZS5jdXJyZW50VGFyZ2V0KSwKCQkJCQlvZmZzZXQgPSAkYmFyLm9mZnNldCgpLAoJCQkJCXggPSBlLnBhZ2VYIC0gb2Zmc2V0LmxlZnQsCgkJCQkJdyA9ICRiYXIud2lkdGgoKSwKCQkJCQl5ID0gJGJhci5oZWlnaHQoKSAtIGUucGFnZVkgKyBvZmZzZXQudG9wLAoJCQkJCWggPSAkYmFyLmhlaWdodCgpOwoJCQkJaWYodGhpcy5vcHRpb25zLnZlcnRpY2FsVm9sdW1lKSB7CgkJCQkJdGhpcy52b2x1bWUoeS9oKTsKCQkJCX0gZWxzZSB7CgkJCQkJdGhpcy52b2x1bWUoeC93KTsKCQkJCX0KCQkJfQoJCQlpZih0aGlzLm9wdGlvbnMubXV0ZWQpIHsKCQkJCXRoaXMuX211dGVkKGZhbHNlKTsKCQkJfQoJCX0sCgkJX3VwZGF0ZVZvbHVtZTogZnVuY3Rpb24odikgewoJCQlpZih2ID09PSB1bmRlZmluZWQpIHsKCQkJCXYgPSB0aGlzLm9wdGlvbnMudm9sdW1lOwoJCQl9CgkJCXYgPSB0aGlzLm9wdGlvbnMubXV0ZWQgPyAwIDogdjsKCgkJCWlmKHRoaXMuc3RhdHVzLm5vVm9sdW1lKSB7CgkJCQl0aGlzLmFkZFN0YXRlQ2xhc3MoJ25vVm9sdW1lJyk7CgkJCQlpZih0aGlzLmNzcy5qcS52b2x1bWVCYXIubGVuZ3RoKSB7CgkJCQkJdGhpcy5jc3MuanEudm9sdW1lQmFyLmhpZGUoKTsKCQkJCX0KCQkJCWlmKHRoaXMuY3NzLmpxLnZvbHVtZUJhclZhbHVlLmxlbmd0aCkgewoJCQkJCXRoaXMuY3NzLmpxLnZvbHVtZUJhclZhbHVlLmhpZGUoKTsKCQkJCX0KCQkJCWlmKHRoaXMuY3NzLmpxLnZvbHVtZU1heC5sZW5ndGgpIHsKCQkJCQl0aGlzLmNzcy5qcS52b2x1bWVNYXguaGlkZSgpOwoJCQkJfQoJCQl9IGVsc2UgewoJCQkJdGhpcy5yZW1vdmVTdGF0ZUNsYXNzKCdub1ZvbHVtZScpOwoJCQkJaWYodGhpcy5jc3MuanEudm9sdW1lQmFyLmxlbmd0aCkgewoJCQkJCXRoaXMuY3NzLmpxLnZvbHVtZUJhci5zaG93KCk7CgkJCQl9CgkJCQlpZih0aGlzLmNzcy5qcS52b2x1bWVCYXJWYWx1ZS5sZW5ndGgpIHsKCQkJCQl0aGlzLmNzcy5qcS52b2x1bWVCYXJWYWx1ZS5zaG93KCk7CgkJCQkJdGhpcy5jc3MuanEudm9sdW1lQmFyVmFsdWVbdGhpcy5vcHRpb25zLnZlcnRpY2FsVm9sdW1lID8gImhlaWdodCIgOiAid2lkdGgiXSgodioxMDApKyIlIik7CgkJCQl9CgkJCQlpZih0aGlzLmNzcy5qcS52b2x1bWVNYXgubGVuZ3RoKSB7CgkJCQkJdGhpcy5jc3MuanEudm9sdW1lTWF4LnNob3coKTsKCQkJCX0KCQkJfQoJCX0sCgkJdm9sdW1lTWF4OiBmdW5jdGlvbigpIHsgLy8gSGFuZGxlcyBjbGlja3Mgb24gdGhlIHZvbHVtZSBtYXgKCQkJdGhpcy52b2x1bWUoMSk7CgkJCWlmKHRoaXMub3B0aW9ucy5tdXRlZCkgewoJCQkJdGhpcy5fbXV0ZWQoZmFsc2UpOwoJCQl9CgkJfSwKCQlfY3NzU2VsZWN0b3JBbmNlc3RvcjogZnVuY3Rpb24oYW5jZXN0b3IpIHsKCQkJdmFyIHNlbGYgPSB0aGlzOwoJCQl0aGlzLm9wdGlvbnMuY3NzU2VsZWN0b3JBbmNlc3RvciA9IGFuY2VzdG9yOwoJCQl0aGlzLl9yZW1vdmVVaUNsYXNzKCk7CgkJCXRoaXMuYW5jZXN0b3JKcSA9IGFuY2VzdG9yID8gJChhbmNlc3RvcikgOiBbXTsgLy8gV291bGQgdXNlICQoKSBpbnN0ZWFkIG9mIFtdLCBidXQgaXQgaXMgb25seSAxLjQrCgkJCWlmKGFuY2VzdG9yICYmIHRoaXMuYW5jZXN0b3JKcS5sZW5ndGggIT09IDEpIHsgLy8gU28gZW1wdHkgc3RyaW5ncyBkbyBub3QgZ2VuZXJhdGUgdGhlIHdhcm5pbmcuCgkJCQl0aGlzLl93YXJuaW5nKCB7CgkJCQkJdHlwZTogJC5qUGxheWVyLndhcm5pbmcuQ1NTX1NFTEVDVE9SX0NPVU5ULAoJCQkJCWNvbnRleHQ6IGFuY2VzdG9yLAoJCQkJCW1lc3NhZ2U6ICQualBsYXllci53YXJuaW5nTXNnLkNTU19TRUxFQ1RPUl9DT1VOVCArIHRoaXMuYW5jZXN0b3JKcS5sZW5ndGggKyAiIGZvdW5kIGZvciBjc3NTZWxlY3RvckFuY2VzdG9yLiIsCgkJCQkJaGludDogJC5qUGxheWVyLndhcm5pbmdIaW50LkNTU19TRUxFQ1RPUl9DT1VOVAoJCQkJfSk7CgkJCX0KCQkJdGhpcy5fYWRkVWlDbGFzcygpOwoJCQkkLmVhY2godGhpcy5vcHRpb25zLmNzc1NlbGVjdG9yLCBmdW5jdGlvbihmbiwgY3NzU2VsKSB7CgkJCQlzZWxmLl9jc3NTZWxlY3RvcihmbiwgY3NzU2VsKTsKCQkJfSk7CgoJCQkvLyBTZXQgdGhlIEdVSSB0byB0aGUgY3VycmVudCBzdGF0ZS4KCQkJdGhpcy5fdXBkYXRlSW50ZXJmYWNlKCk7CgkJCXRoaXMuX3VwZGF0ZUJ1dHRvbnMoKTsKCQkJdGhpcy5fdXBkYXRlQXV0b2hpZGUoKTsKCQkJdGhpcy5fdXBkYXRlVm9sdW1lKCk7CgkJCXRoaXMuX3VwZGF0ZU11dGUoKTsKCQl9LAoJCV9jc3NTZWxlY3RvcjogZnVuY3Rpb24oZm4sIGNzc1NlbCkgewoJCQl2YXIgc2VsZiA9IHRoaXM7CgkJCWlmKHR5cGVvZiBjc3NTZWwgPT09ICdzdHJpbmcnKSB7CgkJCQlpZigkLmpQbGF5ZXIucHJvdG90eXBlLm9wdGlvbnMuY3NzU2VsZWN0b3JbZm5dKSB7CgkJCQkJaWYodGhpcy5jc3MuanFbZm5dICYmIHRoaXMuY3NzLmpxW2ZuXS5sZW5ndGgpIHsKCQkJCQkJdGhpcy5jc3MuanFbZm5dLnVuYmluZCgiLmpQbGF5ZXIiKTsKCQkJCQl9CgkJCQkJdGhpcy5vcHRpb25zLmNzc1NlbGVjdG9yW2ZuXSA9IGNzc1NlbDsKCQkJCQl0aGlzLmNzcy5jc1tmbl0gPSB0aGlzLm9wdGlvbnMuY3NzU2VsZWN0b3JBbmNlc3RvciArICIgIiArIGNzc1NlbDsKCgkJCQkJaWYoY3NzU2VsKSB7IC8vIENoZWNrcyBmb3IgZW1wdHkgc3RyaW5nCgkJCQkJCXRoaXMuY3NzLmpxW2ZuXSA9ICQodGhpcy5jc3MuY3NbZm5dKTsKCQkJCQl9IGVsc2UgewoJCQkJCQl0aGlzLmNzcy5qcVtmbl0gPSBbXTsgLy8gVG8gY29tcGx5IHdpdGggdGhlIGNzcy5qcVtmbl0ubGVuZ3RoIGNoZWNrIGJlZm9yZSBpdHMgdXNlLiBBcyBvZiBqUXVlcnkgMS40IGNvdWxkIGhhdmUgdXNlZCAkKCkgZm9yIGFuIGVtcHR5IHNldC4gCgkJCQkJfQoKCQkJCQlpZih0aGlzLmNzcy5qcVtmbl0ubGVuZ3RoICYmIHRoaXNbZm5dKSB7CgkJCQkJCXZhciBoYW5kbGVyID0gZnVuY3Rpb24oZSkgewoJCQkJCQkJZS5wcmV2ZW50RGVmYXVsdCgpOwoJCQkJCQkJc2VsZltmbl0oZSk7CgkJCQkJCQlpZihzZWxmLm9wdGlvbnMuYXV0b0JsdXIpIHsKCQkJCQkJCQkkKHRoaXMpLmJsdXIoKTsKCQkJCQkJCX0gZWxzZSB7CgkJCQkJCQkJJCh0aGlzKS5mb2N1cygpOyAvLyBGb3JjZSBmb2N1cyBmb3IgQVJJQS4KCQkJCQkJCX0KCQkJCQkJfTsKCQkJCQkJdGhpcy5jc3MuanFbZm5dLmJpbmQoImNsaWNrLmpQbGF5ZXIiLCBoYW5kbGVyKTsgLy8gVXNpbmcgalBsYXllciBuYW1lc3BhY2UKCQkJCQl9CgoJCQkJCWlmKGNzc1NlbCAmJiB0aGlzLmNzcy5qcVtmbl0ubGVuZ3RoICE9PSAxKSB7IC8vIFNvIGVtcHR5IHN0cmluZ3MgZG8gbm90IGdlbmVyYXRlIHRoZSB3YXJuaW5nLiBpZS4sIHRoZXkganVzdCByZW1vdmUgdGhlIG9sZCBvbmUuCgkJCQkJCXRoaXMuX3dhcm5pbmcoIHsKCQkJCQkJCXR5cGU6ICQualBsYXllci53YXJuaW5nLkNTU19TRUxFQ1RPUl9DT1VOVCwKCQkJCQkJCWNvbnRleHQ6IHRoaXMuY3NzLmNzW2ZuXSwKCQkJCQkJCW1lc3NhZ2U6ICQualBsYXllci53YXJuaW5nTXNnLkNTU19TRUxFQ1RPUl9DT1VOVCArIHRoaXMuY3NzLmpxW2ZuXS5sZW5ndGggKyAiIGZvdW5kIGZvciAiICsgZm4gKyAiIG1ldGhvZC4iLAoJCQkJCQkJaGludDogJC5qUGxheWVyLndhcm5pbmdIaW50LkNTU19TRUxFQ1RPUl9DT1VOVAoJCQkJCQl9KTsKCQkJCQl9CgkJCQl9IGVsc2UgewoJCQkJCXRoaXMuX3dhcm5pbmcoIHsKCQkJCQkJdHlwZTogJC5qUGxheWVyLndhcm5pbmcuQ1NTX1NFTEVDVE9SX01FVEhPRCwKCQkJCQkJY29udGV4dDogZm4sCgkJCQkJCW1lc3NhZ2U6ICQualBsYXllci53YXJuaW5nTXNnLkNTU19TRUxFQ1RPUl9NRVRIT0QsCgkJCQkJCWhpbnQ6ICQualBsYXllci53YXJuaW5nSGludC5DU1NfU0VMRUNUT1JfTUVUSE9ECgkJCQkJfSk7CgkJCQl9CgkJCX0gZWxzZSB7CgkJCQl0aGlzLl93YXJuaW5nKCB7CgkJCQkJdHlwZTogJC5qUGxheWVyLndhcm5pbmcuQ1NTX1NFTEVDVE9SX1NUUklORywKCQkJCQljb250ZXh0OiBjc3NTZWwsCgkJCQkJbWVzc2FnZTogJC5qUGxheWVyLndhcm5pbmdNc2cuQ1NTX1NFTEVDVE9SX1NUUklORywKCQkJCQloaW50OiAkLmpQbGF5ZXIud2FybmluZ0hpbnQuQ1NTX1NFTEVDVE9SX1NUUklORwoJCQkJfSk7CgkJCX0KCQl9LAoJCWR1cmF0aW9uOiBmdW5jdGlvbihlKSB7CgkJCWlmKHRoaXMub3B0aW9ucy50b2dnbGVEdXJhdGlvbikgewoJCQkJaWYodGhpcy5vcHRpb25zLmNhcHR1cmVEdXJhdGlvbikgewoJCQkJCWUuc3RvcFByb3BhZ2F0aW9uKCk7CgkJCQl9CgkJCQl0aGlzLl9zZXRPcHRpb24oInJlbWFpbmluZ0R1cmF0aW9uIiwgIXRoaXMub3B0aW9ucy5yZW1haW5pbmdEdXJhdGlvbik7CgkJCX0KCQl9LAoJCXNlZWtCYXI6IGZ1bmN0aW9uKGUpIHsgLy8gSGFuZGxlcyBjbGlja3Mgb24gdGhlIHNlZWtCYXIKCQkJaWYodGhpcy5jc3MuanEuc2Vla0Jhci5sZW5ndGgpIHsKCQkJCS8vIFVzaW5nICQoZS5jdXJyZW50VGFyZ2V0KSB0byBlbmFibGUgbXVsdGlwbGUgc2VlayBiYXJzCgkJCQl2YXIgJGJhciA9ICQoZS5jdXJyZW50VGFyZ2V0KSwKCQkJCQlvZmZzZXQgPSAkYmFyLm9mZnNldCgpLAoJCQkJCXggPSBlLnBhZ2VYIC0gb2Zmc2V0LmxlZnQsCgkJCQkJdyA9ICRiYXIud2lkdGgoKSwKCQkJCQlwID0gMTAwICogeCAvIHc7CgkJCQl0aGlzLnBsYXlIZWFkKHApOwoJCQl9CgkJfSwKCQlwbGF5YmFja1JhdGU6IGZ1bmN0aW9uKHBicikgewoJCQl0aGlzLl9zZXRPcHRpb24oInBsYXliYWNrUmF0ZSIsIHBicik7CgkJfSwKCQlwbGF5YmFja1JhdGVCYXI6IGZ1bmN0aW9uKGUpIHsgLy8gSGFuZGxlcyBjbGlja3Mgb24gdGhlIHBsYXliYWNrUmF0ZUJhcgoJCQlpZih0aGlzLmNzcy5qcS5wbGF5YmFja1JhdGVCYXIubGVuZ3RoKSB7CgkJCQkvLyBVc2luZyAkKGUuY3VycmVudFRhcmdldCkgdG8gZW5hYmxlIG11bHRpcGxlIHBsYXliYWNrUmF0ZSBiYXJzCgkJCQl2YXIgJGJhciA9ICQoZS5jdXJyZW50VGFyZ2V0KSwKCQkJCQlvZmZzZXQgPSAkYmFyLm9mZnNldCgpLAoJCQkJCXggPSBlLnBhZ2VYIC0gb2Zmc2V0LmxlZnQsCgkJCQkJdyA9ICRiYXIud2lkdGgoKSwKCQkJCQl5ID0gJGJhci5oZWlnaHQoKSAtIGUucGFnZVkgKyBvZmZzZXQudG9wLAoJCQkJCWggPSAkYmFyLmhlaWdodCgpLAoJCQkJCXJhdGlvLCBwYnI7CgkJCQlpZih0aGlzLm9wdGlvbnMudmVydGljYWxQbGF5YmFja1JhdGUpIHsKCQkJCQlyYXRpbyA9IHkvaDsKCQkJCX0gZWxzZSB7CgkJCQkJcmF0aW8gPSB4L3c7CgkJCQl9CgkJCQlwYnIgPSByYXRpbyAqICh0aGlzLm9wdGlvbnMubWF4UGxheWJhY2tSYXRlIC0gdGhpcy5vcHRpb25zLm1pblBsYXliYWNrUmF0ZSkgKyB0aGlzLm9wdGlvbnMubWluUGxheWJhY2tSYXRlOwoJCQkJdGhpcy5wbGF5YmFja1JhdGUocGJyKTsKCQkJfQoJCX0sCgkJX3VwZGF0ZVBsYXliYWNrUmF0ZTogZnVuY3Rpb24oKSB7CgkJCXZhciBwYnIgPSB0aGlzLm9wdGlvbnMucGxheWJhY2tSYXRlLAoJCQkJcmF0aW8gPSAocGJyIC0gdGhpcy5vcHRpb25zLm1pblBsYXliYWNrUmF0ZSkgLyAodGhpcy5vcHRpb25zLm1heFBsYXliYWNrUmF0ZSAtIHRoaXMub3B0aW9ucy5taW5QbGF5YmFja1JhdGUpOwoJCQlpZih0aGlzLnN0YXR1cy5wbGF5YmFja1JhdGVFbmFibGVkKSB7CgkJCQlpZih0aGlzLmNzcy5qcS5wbGF5YmFja1JhdGVCYXIubGVuZ3RoKSB7CgkJCQkJdGhpcy5jc3MuanEucGxheWJhY2tSYXRlQmFyLnNob3coKTsKCQkJCX0KCQkJCWlmKHRoaXMuY3NzLmpxLnBsYXliYWNrUmF0ZUJhclZhbHVlLmxlbmd0aCkgewoJCQkJCXRoaXMuY3NzLmpxLnBsYXliYWNrUmF0ZUJhclZhbHVlLnNob3coKTsKCQkJCQl0aGlzLmNzcy5qcS5wbGF5YmFja1JhdGVCYXJWYWx1ZVt0aGlzLm9wdGlvbnMudmVydGljYWxQbGF5YmFja1JhdGUgPyAiaGVpZ2h0IiA6ICJ3aWR0aCJdKChyYXRpbyoxMDApKyIlIik7CgkJCQl9CgkJCX0gZWxzZSB7CgkJCQlpZih0aGlzLmNzcy5qcS5wbGF5YmFja1JhdGVCYXIubGVuZ3RoKSB7CgkJCQkJdGhpcy5jc3MuanEucGxheWJhY2tSYXRlQmFyLmhpZGUoKTsKCQkJCX0KCQkJCWlmKHRoaXMuY3NzLmpxLnBsYXliYWNrUmF0ZUJhclZhbHVlLmxlbmd0aCkgewoJCQkJCXRoaXMuY3NzLmpxLnBsYXliYWNrUmF0ZUJhclZhbHVlLmhpZGUoKTsKCQkJCX0KCQkJfQoJCX0sCgkJcmVwZWF0OiBmdW5jdGlvbihldmVudCkgeyAvLyBIYW5kbGUgY2xpY2tzIG9uIHRoZSByZXBlYXQgYnV0dG9uCgkJCXZhciBndWlBY3Rpb24gPSB0eXBlb2YgZXZlbnQgPT09ICJvYmplY3QiOyAvLyBGbGFncyBHVUkgY2xpY2sgZXZlbnRzIHNvIHdlIGtub3cgdGhpcyB3YXMgbm90IGEgZGlyZWN0IGNvbW1hbmQsIGJ1dCBhbiBhY3Rpb24gdGFrZW4gYnkgdGhlIHVzZXIgb24gdGhlIEdVSS4KCQkJaWYoZ3VpQWN0aW9uICYmIHRoaXMub3B0aW9ucy51c2VTdGF0ZUNsYXNzU2tpbiAmJiB0aGlzLm9wdGlvbnMubG9vcCkgewoJCQkJdGhpcy5fbG9vcChmYWxzZSk7CgkJCX0gZWxzZSB7CgkJCQl0aGlzLl9sb29wKHRydWUpOwoJCQl9CgkJfSwKCQlyZXBlYXRPZmY6IGZ1bmN0aW9uKCkgeyAvLyBIYW5kbGUgY2xpY2tzIG9uIHRoZSByZXBlYXRPZmYgYnV0dG9uCgkJCXRoaXMuX2xvb3AoZmFsc2UpOwoJCX0sCgkJX2xvb3A6IGZ1bmN0aW9uKGxvb3ApIHsKCQkJaWYodGhpcy5vcHRpb25zLmxvb3AgIT09IGxvb3ApIHsKCQkJCXRoaXMub3B0aW9ucy5sb29wID0gbG9vcDsKCQkJCXRoaXMuX3VwZGF0ZUJ1dHRvbnMoKTsKCQkJCXRoaXMuX3RyaWdnZXIoJC5qUGxheWVyLmV2ZW50LnJlcGVhdCk7CgkJCX0KCQl9LAoKCQkvLyBPcHRpb25zIGNvZGUgYWRhcHRlZCBmcm9tIHVpLndpZGdldC5qcyAoMS44LjcpLiAgTWFkZSBjaGFuZ2VzIHNvIHRoZSBrZXkgY2FuIHVzZSBkb3Qgbm90YXRpb24uIFRvIG1hdGNoIHByZXZpb3VzIGdldERhdGEgc29sdXRpb24gaW4galBsYXllciAxLgoJCW9wdGlvbjogZnVuY3Rpb24oa2V5LCB2YWx1ZSkgewoJCQl2YXIgb3B0aW9ucyA9IGtleTsKCgkJCSAvLyBFbmFibGVzIHVzZTogb3B0aW9ucygpLiAgUmV0dXJucyBhIGNvcHkgb2Ygb3B0aW9ucyBvYmplY3QKCQkJaWYgKCBhcmd1bWVudHMubGVuZ3RoID09PSAwICkgewoJCQkJcmV0dXJuICQuZXh0ZW5kKCB0cnVlLCB7fSwgdGhpcy5vcHRpb25zICk7CgkJCX0KCgkJCWlmKHR5cGVvZiBrZXkgPT09ICJzdHJpbmciKSB7CgkJCQl2YXIga2V5cyA9IGtleS5zcGxpdCgiLiIpOwoKCQkJCSAvLyBFbmFibGVzIHVzZTogb3B0aW9ucygic29tZU9wdGlvbiIpICBSZXR1cm5zIGEgY29weSBvZiB0aGUgb3B0aW9uLiBTdXBwb3J0cyBkb3Qgbm90YXRpb24uCgkJCQlpZih2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7CgoJCQkJCXZhciBvcHQgPSAkLmV4dGVuZCh0cnVlLCB7fSwgdGhpcy5vcHRpb25zKTsKCQkJCQlmb3IodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykgewoJCQkJCQlpZihvcHRba2V5c1tpXV0gIT09IHVuZGVmaW5lZCkgewoJCQkJCQkJb3B0ID0gb3B0W2tleXNbaV1dOwoJCQkJCQl9IGVsc2UgewoJCQkJCQkJdGhpcy5fd2FybmluZyggewoJCQkJCQkJCXR5cGU6ICQualBsYXllci53YXJuaW5nLk9QVElPTl9LRVksCgkJCQkJCQkJY29udGV4dDoga2V5LAoJCQkJCQkJCW1lc3NhZ2U6ICQualBsYXllci53YXJuaW5nTXNnLk9QVElPTl9LRVksCgkJCQkJCQkJaGludDogJC5qUGxheWVyLndhcm5pbmdIaW50Lk9QVElPTl9LRVkKCQkJCQkJCX0pOwoJCQkJCQkJcmV0dXJuIHVuZGVmaW5lZDsKCQkJCQkJfQoJCQkJCX0KCQkJCQlyZXR1cm4gb3B0OwoJCQkJfQoKCQkJCSAvLyBFbmFibGVzIHVzZTogb3B0aW9ucygic29tZU9wdGlvbk9iamVjdCIsIHNvbWVPYmplY3R9KS4gIENyZWF0ZXM6IHtzb21lT3B0aW9uT2JqZWN0OnNvbWVPYmplY3R9CgkJCQkgLy8gRW5hYmxlcyB1c2U6IG9wdGlvbnMoInNvbWVPcHRpb24iLCBzb21lVmFsdWUpLiAgQ3JlYXRlczoge3NvbWVPcHRpb246c29tZVZhbHVlfQoJCQkJIC8vIEVuYWJsZXMgdXNlOiBvcHRpb25zKCJzb21lT3B0aW9uT2JqZWN0LnNvbWVPcHRpb24iLCBzb21lVmFsdWUpLiAgQ3JlYXRlczoge3NvbWVPcHRpb25PYmplY3Q6e3NvbWVPcHRpb246c29tZVZhbHVlfX0KCgkJCQlvcHRpb25zID0ge307CgkJCQl2YXIgb3B0cyA9IG9wdGlvbnM7CgoJCQkJZm9yKHZhciBqID0gMDsgaiA8IGtleXMubGVuZ3RoOyBqKyspIHsKCQkJCQlpZihqIDwga2V5cy5sZW5ndGggLSAxKSB7CgkJCQkJCW9wdHNba2V5c1tqXV0gPSB7fTsKCQkJCQkJb3B0cyA9IG9wdHNba2V5c1tqXV07CgkJCQkJfSBlbHNlIHsKCQkJCQkJb3B0c1trZXlzW2pdXSA9IHZhbHVlOwoJCQkJCX0KCQkJCX0KCQkJfQoKCQkJIC8vIE90aGVyd2lzZSBlbmFibGVzIHVzZTogb3B0aW9ucyhvcHRpb25PYmplY3QpLiAgVXNlcyBvcmlnaW5hbCBvYmplY3QgKHRoZSBrZXkpCgoJCQl0aGlzLl9zZXRPcHRpb25zKG9wdGlvbnMpOwoKCQkJcmV0dXJuIHRoaXM7CgkJfSwKCQlfc2V0T3B0aW9uczogZnVuY3Rpb24ob3B0aW9ucykgewoJCQl2YXIgc2VsZiA9IHRoaXM7CgkJCSQuZWFjaChvcHRpb25zLCBmdW5jdGlvbihrZXksIHZhbHVlKSB7IC8vIFRoaXMgc3VwcG9ydHMgdGhlIDIgbGV2ZWwgZGVwdGggdGhhdCB0aGUgb3B0aW9ucyBvZiBqUGxheWVyIGhhcy4gV291bGQgcmV2aWV3IGlmIHdlIGV2ZXIgbmVlZCBtb3JlIGRlcHRoLgoJCQkJc2VsZi5fc2V0T3B0aW9uKGtleSwgdmFsdWUpOwoJCQl9KTsKCgkJCXJldHVybiB0aGlzOwoJCX0sCgkJX3NldE9wdGlvbjogZnVuY3Rpb24oa2V5LCB2YWx1ZSkgewoJCQl2YXIgc2VsZiA9IHRoaXM7CgoJCQkvLyBUaGUgYWJpbGl0eSB0byBzZXQgb3B0aW9ucyBpcyBsaW1pdGVkIGF0IHRoaXMgdGltZS4KCgkJCXN3aXRjaChrZXkpIHsKCQkJCWNhc2UgInZvbHVtZSIgOgoJCQkJCXRoaXMudm9sdW1lKHZhbHVlKTsKCQkJCQlicmVhazsKCQkJCWNhc2UgIm11dGVkIiA6CgkJCQkJdGhpcy5fbXV0ZWQodmFsdWUpOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSAiZ2xvYmFsVm9sdW1lIiA6CgkJCQkJdGhpcy5vcHRpb25zW2tleV0gPSB2YWx1ZTsKCQkJCQlicmVhazsKCQkJCWNhc2UgImNzc1NlbGVjdG9yQW5jZXN0b3IiIDoKCQkJCQl0aGlzLl9jc3NTZWxlY3RvckFuY2VzdG9yKHZhbHVlKTsgLy8gU2V0IGFuZCByZWZyZXNoIGFsbCBhc3NvY2lhdGlvbnMgZm9yIHRoZSBuZXcgYW5jZXN0b3IuCgkJCQkJYnJlYWs7CgkJCQljYXNlICJjc3NTZWxlY3RvciIgOgoJCQkJCSQuZWFjaCh2YWx1ZSwgZnVuY3Rpb24oZm4sIGNzc1NlbCkgewoJCQkJCQlzZWxmLl9jc3NTZWxlY3RvcihmbiwgY3NzU2VsKTsgLy8gTkI6IFRoZSBvcHRpb24gaXMgc2V0IGluc2lkZSB0aGlzIGZ1bmN0aW9uLCBhZnRlciBmdXJ0aGVyIHZhbGlkaXR5IGNoZWNrcy4KCQkJCQl9KTsKCQkJCQlicmVhazsKCQkJCWNhc2UgInBsYXliYWNrUmF0ZSIgOgoJCQkJCXRoaXMub3B0aW9uc1trZXldID0gdmFsdWUgPSB0aGlzLl9saW1pdFZhbHVlKHZhbHVlLCB0aGlzLm9wdGlvbnMubWluUGxheWJhY2tSYXRlLCB0aGlzLm9wdGlvbnMubWF4UGxheWJhY2tSYXRlKTsKCQkJCQlpZih0aGlzLmh0bWwudXNlZCkgewoJCQkJCQl0aGlzLl9odG1sX3NldFByb3BlcnR5KCdwbGF5YmFja1JhdGUnLCB2YWx1ZSk7CgkJCQkJfQoJCQkJCXRoaXMuX3VwZGF0ZVBsYXliYWNrUmF0ZSgpOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSAiZGVmYXVsdFBsYXliYWNrUmF0ZSIgOgoJCQkJCXRoaXMub3B0aW9uc1trZXldID0gdmFsdWUgPSB0aGlzLl9saW1pdFZhbHVlKHZhbHVlLCB0aGlzLm9wdGlvbnMubWluUGxheWJhY2tSYXRlLCB0aGlzLm9wdGlvbnMubWF4UGxheWJhY2tSYXRlKTsKCQkJCQlpZih0aGlzLmh0bWwudXNlZCkgewoJCQkJCQl0aGlzLl9odG1sX3NldFByb3BlcnR5KCdkZWZhdWx0UGxheWJhY2tSYXRlJywgdmFsdWUpOwoJCQkJCX0KCQkJCQl0aGlzLl91cGRhdGVQbGF5YmFja1JhdGUoKTsKCQkJCQlicmVhazsKCQkJCWNhc2UgIm1pblBsYXliYWNrUmF0ZSIgOgoJCQkJCXRoaXMub3B0aW9uc1trZXldID0gdmFsdWUgPSB0aGlzLl9saW1pdFZhbHVlKHZhbHVlLCAwLjEsIHRoaXMub3B0aW9ucy5tYXhQbGF5YmFja1JhdGUgLSAwLjEpOwoJCQkJCXRoaXMuX3VwZGF0ZVBsYXliYWNrUmF0ZSgpOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSAibWF4UGxheWJhY2tSYXRlIiA6CgkJCQkJdGhpcy5vcHRpb25zW2tleV0gPSB2YWx1ZSA9IHRoaXMuX2xpbWl0VmFsdWUodmFsdWUsIHRoaXMub3B0aW9ucy5taW5QbGF5YmFja1JhdGUgKyAwLjEsIDE2KTsKCQkJCQl0aGlzLl91cGRhdGVQbGF5YmFja1JhdGUoKTsKCQkJCQlicmVhazsKCQkJCWNhc2UgImZ1bGxTY3JlZW4iIDoKCQkJCQlpZih0aGlzLm9wdGlvbnNba2V5XSAhPT0gdmFsdWUpIHsgLy8gaWYgY2hhbmdlZAoJCQkJCQl2YXIgd2t2ID0gJC5qUGxheWVyLm5hdGl2ZUZlYXR1cmVzLmZ1bGxzY3JlZW4udXNlZC53ZWJraXRWaWRlbzsKCQkJCQkJaWYoIXdrdiB8fCB3a3YgJiYgIXRoaXMuc3RhdHVzLndhaXRGb3JQbGF5KSB7CgkJCQkJCQlpZighd2t2KSB7IC8vIE5vIHNlbnNpYmxlIHdheSB0byB1bnNldCBvcHRpb24gb24gdGhlc2UgZGV2aWNlcy4KCQkJCQkJCQl0aGlzLm9wdGlvbnNba2V5XSA9IHZhbHVlOwoJCQkJCQkJfQoJCQkJCQkJaWYodmFsdWUpIHsKCQkJCQkJCQl0aGlzLl9yZXF1ZXN0RnVsbHNjcmVlbigpOwoJCQkJCQkJfSBlbHNlIHsKCQkJCQkJCQl0aGlzLl9leGl0RnVsbHNjcmVlbigpOwoJCQkJCQkJfQoJCQkJCQkJaWYoIXdrdikgewoJCQkJCQkJCXRoaXMuX3NldE9wdGlvbigiZnVsbFdpbmRvdyIsIHZhbHVlKTsKCQkJCQkJCX0KCQkJCQkJfQoJCQkJCX0KCQkJCQlicmVhazsKCQkJCWNhc2UgImZ1bGxXaW5kb3ciIDoKCQkJCQlpZih0aGlzLm9wdGlvbnNba2V5XSAhPT0gdmFsdWUpIHsgLy8gaWYgY2hhbmdlZAoJCQkJCQl0aGlzLl9yZW1vdmVVaUNsYXNzKCk7CgkJCQkJCXRoaXMub3B0aW9uc1trZXldID0gdmFsdWU7CgkJCQkJCXRoaXMuX3JlZnJlc2hTaXplKCk7CgkJCQkJfQoJCQkJCWJyZWFrOwoJCQkJY2FzZSAic2l6ZSIgOgoJCQkJCWlmKCF0aGlzLm9wdGlvbnMuZnVsbFdpbmRvdyAmJiB0aGlzLm9wdGlvbnNba2V5XS5jc3NDbGFzcyAhPT0gdmFsdWUuY3NzQ2xhc3MpIHsKCQkJCQkJdGhpcy5fcmVtb3ZlVWlDbGFzcygpOwoJCQkJCX0KCQkJCQl0aGlzLm9wdGlvbnNba2V5XSA9ICQuZXh0ZW5kKHt9LCB0aGlzLm9wdGlvbnNba2V5XSwgdmFsdWUpOyAvLyBzdG9yZSBhIG1lcmdlZCBjb3B5IG9mIGl0LCBpbmNhc2Ugbm90IGFsbCBwcm9wZXJ0aWVzIGNoYW5nZWQuCgkJCQkJdGhpcy5fcmVmcmVzaFNpemUoKTsKCQkJCQlicmVhazsKCQkJCWNhc2UgInNpemVGdWxsIiA6CgkJCQkJaWYodGhpcy5vcHRpb25zLmZ1bGxXaW5kb3cgJiYgdGhpcy5vcHRpb25zW2tleV0uY3NzQ2xhc3MgIT09IHZhbHVlLmNzc0NsYXNzKSB7CgkJCQkJCXRoaXMuX3JlbW92ZVVpQ2xhc3MoKTsKCQkJCQl9CgkJCQkJdGhpcy5vcHRpb25zW2tleV0gPSAkLmV4dGVuZCh7fSwgdGhpcy5vcHRpb25zW2tleV0sIHZhbHVlKTsgLy8gc3RvcmUgYSBtZXJnZWQgY29weSBvZiBpdCwgaW5jYXNlIG5vdCBhbGwgcHJvcGVydGllcyBjaGFuZ2VkLgoJCQkJCXRoaXMuX3JlZnJlc2hTaXplKCk7CgkJCQkJYnJlYWs7CgkJCQljYXNlICJhdXRvaGlkZSIgOgoJCQkJCXRoaXMub3B0aW9uc1trZXldID0gJC5leHRlbmQoe30sIHRoaXMub3B0aW9uc1trZXldLCB2YWx1ZSk7IC8vIHN0b3JlIGEgbWVyZ2VkIGNvcHkgb2YgaXQsIGluY2FzZSBub3QgYWxsIHByb3BlcnRpZXMgY2hhbmdlZC4KCQkJCQl0aGlzLl91cGRhdGVBdXRvaGlkZSgpOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSAibG9vcCIgOgoJCQkJCXRoaXMuX2xvb3AodmFsdWUpOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSAicmVtYWluaW5nRHVyYXRpb24iIDoKCQkJCQl0aGlzLm9wdGlvbnNba2V5XSA9IHZhbHVlOwoJCQkJCXRoaXMuX3VwZGF0ZUludGVyZmFjZSgpOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSAidG9nZ2xlRHVyYXRpb24iIDoKCQkJCQl0aGlzLm9wdGlvbnNba2V5XSA9IHZhbHVlOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSAibmF0aXZlVmlkZW9Db250cm9scyIgOgoJCQkJCXRoaXMub3B0aW9uc1trZXldID0gJC5leHRlbmQoe30sIHRoaXMub3B0aW9uc1trZXldLCB2YWx1ZSk7IC8vIHN0b3JlIGEgbWVyZ2VkIGNvcHkgb2YgaXQsIGluY2FzZSBub3QgYWxsIHByb3BlcnRpZXMgY2hhbmdlZC4KCQkJCQl0aGlzLnN0YXR1cy5uYXRpdmVWaWRlb0NvbnRyb2xzID0gdGhpcy5fdWFCbG9ja2xpc3QodGhpcy5vcHRpb25zLm5hdGl2ZVZpZGVvQ29udHJvbHMpOwoJCQkJCXRoaXMuX3Jlc3RyaWN0TmF0aXZlVmlkZW9Db250cm9scygpOwoJCQkJCXRoaXMuX3VwZGF0ZU5hdGl2ZVZpZGVvQ29udHJvbHMoKTsKCQkJCQlicmVhazsKCQkJCWNhc2UgIm5vRnVsbFdpbmRvdyIgOgoJCQkJCXRoaXMub3B0aW9uc1trZXldID0gJC5leHRlbmQoe30sIHRoaXMub3B0aW9uc1trZXldLCB2YWx1ZSk7IC8vIHN0b3JlIGEgbWVyZ2VkIGNvcHkgb2YgaXQsIGluY2FzZSBub3QgYWxsIHByb3BlcnRpZXMgY2hhbmdlZC4KCQkJCQl0aGlzLnN0YXR1cy5uYXRpdmVWaWRlb0NvbnRyb2xzID0gdGhpcy5fdWFCbG9ja2xpc3QodGhpcy5vcHRpb25zLm5hdGl2ZVZpZGVvQ29udHJvbHMpOyAvLyBOZWVkIHRvIGNoZWNrIGFnYWluIGFzIG5vRnVsbFdpbmRvdyBjYW4gZGVwZW5kIG9uIHRoaXMgZmxhZyBhbmQgdGhlIHJlc3RyaWN0KCkgY2FuIG92ZXJyaWRlIGl0LgoJCQkJCXRoaXMuc3RhdHVzLm5vRnVsbFdpbmRvdyA9IHRoaXMuX3VhQmxvY2tsaXN0KHRoaXMub3B0aW9ucy5ub0Z1bGxXaW5kb3cpOwoJCQkJCXRoaXMuX3Jlc3RyaWN0TmF0aXZlVmlkZW9Db250cm9scygpOwoJCQkJCXRoaXMuX3VwZGF0ZUJ1dHRvbnMoKTsKCQkJCQlicmVhazsKCQkJCWNhc2UgIm5vVm9sdW1lIiA6CgkJCQkJdGhpcy5vcHRpb25zW2tleV0gPSAkLmV4dGVuZCh7fSwgdGhpcy5vcHRpb25zW2tleV0sIHZhbHVlKTsgLy8gc3RvcmUgYSBtZXJnZWQgY29weSBvZiBpdCwgaW5jYXNlIG5vdCBhbGwgcHJvcGVydGllcyBjaGFuZ2VkLgoJCQkJCXRoaXMuc3RhdHVzLm5vVm9sdW1lID0gdGhpcy5fdWFCbG9ja2xpc3QodGhpcy5vcHRpb25zLm5vVm9sdW1lKTsKCQkJCQl0aGlzLl91cGRhdGVWb2x1bWUoKTsKCQkJCQl0aGlzLl91cGRhdGVNdXRlKCk7CgkJCQkJYnJlYWs7CgkJCQljYXNlICJlbXVsYXRlSHRtbCIgOgoJCQkJCWlmKHRoaXMub3B0aW9uc1trZXldICE9PSB2YWx1ZSkgeyAvLyBUbyBhdm9pZCBtdWx0aXBsZSBldmVudCBoYW5kbGVycyBiZWluZyBjcmVhdGVkLCBpZiB0cnVlIGFscmVhZHkuCgkJCQkJCXRoaXMub3B0aW9uc1trZXldID0gdmFsdWU7CgkJCQkJCWlmKHZhbHVlKSB7CgkJCQkJCQl0aGlzLl9lbXVsYXRlSHRtbEJyaWRnZSgpOwoJCQkJCQl9IGVsc2UgewoJCQkJCQkJdGhpcy5fZGVzdHJveUh0bWxCcmlkZ2UoKTsKCQkJCQkJfQoJCQkJCX0KCQkJCQlicmVhazsKCQkJCWNhc2UgInRpbWVGb3JtYXQiIDoKCQkJCQl0aGlzLm9wdGlvbnNba2V5XSA9ICQuZXh0ZW5kKHt9LCB0aGlzLm9wdGlvbnNba2V5XSwgdmFsdWUpOyAvLyBzdG9yZSBhIG1lcmdlZCBjb3B5IG9mIGl0LCBpbmNhc2Ugbm90IGFsbCBwcm9wZXJ0aWVzIGNoYW5nZWQuCgkJCQkJYnJlYWs7CgkJCQljYXNlICJrZXlFbmFibGVkIiA6CgkJCQkJdGhpcy5vcHRpb25zW2tleV0gPSB2YWx1ZTsKCQkJCQlpZighdmFsdWUgJiYgdGhpcyA9PT0gJC5qUGxheWVyLmZvY3VzKSB7CgkJCQkJCSQualBsYXllci5mb2N1cyA9IG51bGw7CgkJCQkJfQoJCQkJCWJyZWFrOwoJCQkJY2FzZSAia2V5QmluZGluZ3MiIDoKCQkJCQl0aGlzLm9wdGlvbnNba2V5XSA9ICQuZXh0ZW5kKHRydWUsIHt9LCB0aGlzLm9wdGlvbnNba2V5XSwgdmFsdWUpOyAvLyBzdG9yZSBhIG1lcmdlZCBERUVQIGNvcHkgb2YgaXQsIGluY2FzZSBub3QgYWxsIHByb3BlcnRpZXMgY2hhbmdlZC4KCQkJCQlicmVhazsKCQkJCWNhc2UgImF1ZGlvRnVsbFNjcmVlbiIgOgoJCQkJCXRoaXMub3B0aW9uc1trZXldID0gdmFsdWU7CgkJCQkJYnJlYWs7CgkJCQljYXNlICJhdXRvQmx1ciIgOgoJCQkJCXRoaXMub3B0aW9uc1trZXldID0gdmFsdWU7CgkJCQkJYnJlYWs7CgkJCX0KCgkJCXJldHVybiB0aGlzOwoJCX0sCgkJLy8gRW5kIG9mOiAoT3B0aW9ucyBjb2RlIGFkYXB0ZWQgZnJvbSB1aS53aWRnZXQuanMpCgoJCV9yZWZyZXNoU2l6ZTogZnVuY3Rpb24oKSB7CgkJCXRoaXMuX3NldFNpemUoKTsgLy8gdXBkYXRlIHN0YXR1cyBhbmQgalBsYXllciBlbGVtZW50IHNpemUKCQkJdGhpcy5fYWRkVWlDbGFzcygpOyAvLyB1cGRhdGUgdGhlIHVpIGNsYXNzCgkJCXRoaXMuX3VwZGF0ZVNpemUoKTsgLy8gdXBkYXRlIGludGVybmFsIHNpemVzCgkJCXRoaXMuX3VwZGF0ZUJ1dHRvbnMoKTsKCQkJdGhpcy5fdXBkYXRlQXV0b2hpZGUoKTsKCQkJdGhpcy5fdHJpZ2dlcigkLmpQbGF5ZXIuZXZlbnQucmVzaXplKTsKCQl9LAoJCV9zZXRTaXplOiBmdW5jdGlvbigpIHsKCQkJLy8gRGV0ZXJtaW5lIHRoZSBjdXJyZW50IHNpemUgZnJvbSB0aGUgb3B0aW9ucwoJCQlpZih0aGlzLm9wdGlvbnMuZnVsbFdpbmRvdykgewoJCQkJdGhpcy5zdGF0dXMud2lkdGggPSB0aGlzLm9wdGlvbnMuc2l6ZUZ1bGwud2lkdGg7CgkJCQl0aGlzLnN0YXR1cy5oZWlnaHQgPSB0aGlzLm9wdGlvbnMuc2l6ZUZ1bGwuaGVpZ2h0OwoJCQkJdGhpcy5zdGF0dXMuY3NzQ2xhc3MgPSB0aGlzLm9wdGlvbnMuc2l6ZUZ1bGwuY3NzQ2xhc3M7CgkJCX0gZWxzZSB7CgkJCQl0aGlzLnN0YXR1cy53aWR0aCA9IHRoaXMub3B0aW9ucy5zaXplLndpZHRoOwoJCQkJdGhpcy5zdGF0dXMuaGVpZ2h0ID0gdGhpcy5vcHRpb25zLnNpemUuaGVpZ2h0OwoJCQkJdGhpcy5zdGF0dXMuY3NzQ2xhc3MgPSB0aGlzLm9wdGlvbnMuc2l6ZS5jc3NDbGFzczsKCQkJfQoKCQkJLy8gU2V0IHRoZSBzaXplIG9mIHRoZSBqUGxheWVyIGFyZWEuCgkJCXRoaXMuZWxlbWVudC5jc3Moeyd3aWR0aCc6IHRoaXMuc3RhdHVzLndpZHRoLCAnaGVpZ2h0JzogdGhpcy5zdGF0dXMuaGVpZ2h0fSk7CgkJfSwKCQlfYWRkVWlDbGFzczogZnVuY3Rpb24oKSB7CgkJCWlmKHRoaXMuYW5jZXN0b3JKcS5sZW5ndGgpIHsKCQkJCXRoaXMuYW5jZXN0b3JKcS5hZGRDbGFzcyh0aGlzLnN0YXR1cy5jc3NDbGFzcyk7CgkJCX0KCQl9LAoJCV9yZW1vdmVVaUNsYXNzOiBmdW5jdGlvbigpIHsKCQkJaWYodGhpcy5hbmNlc3RvckpxLmxlbmd0aCkgewoJCQkJdGhpcy5hbmNlc3RvckpxLnJlbW92ZUNsYXNzKHRoaXMuc3RhdHVzLmNzc0NsYXNzKTsKCQkJfQoJCX0sCgkJX3VwZGF0ZVNpemU6IGZ1bmN0aW9uKCkgewoJCQkvLyBUaGUgcG9zdGVyIHVzZXMgc2hvdy9oaWRlIHNvIGNhbiBzaW1wbHkgcmVzaXplIGl0LgoJCQl0aGlzLmludGVybmFsLnBvc3Rlci5qcS5jc3Moeyd3aWR0aCc6IHRoaXMuc3RhdHVzLndpZHRoLCAnaGVpZ2h0JzogdGhpcy5zdGF0dXMuaGVpZ2h0fSk7CgoJCQkvLyBWaWRlbyBodG1sIG9yIGZsYXNoIHJlc2l6ZWQgaWYgbmVjZXNzYXJ5IGF0IHRoaXMgdGltZSwgb3IgaWYgbmF0aXZlIHZpZGVvIGNvbnRyb2xzIGJlaW5nIHVzZWQuCgkJCWlmKCF0aGlzLnN0YXR1cy53YWl0Rm9yUGxheSAmJiB0aGlzLmh0bWwuYWN0aXZlICYmIHRoaXMuc3RhdHVzLnZpZGVvIHx8IHRoaXMuaHRtbC52aWRlby5hdmFpbGFibGUgJiYgdGhpcy5odG1sLnVzZWQgJiYgdGhpcy5zdGF0dXMubmF0aXZlVmlkZW9Db250cm9scykgewoJCQkJdGhpcy5pbnRlcm5hbC52aWRlby5qcS5jc3Moeyd3aWR0aCc6IHRoaXMuc3RhdHVzLndpZHRoLCAnaGVpZ2h0JzogdGhpcy5zdGF0dXMuaGVpZ2h0fSk7CgkJCX0KCQkJZWxzZSBpZighdGhpcy5zdGF0dXMud2FpdEZvclBsYXkgJiYgdGhpcy5mbGFzaC5hY3RpdmUgJiYgdGhpcy5zdGF0dXMudmlkZW8pIHsKCQkJCXRoaXMuaW50ZXJuYWwuZmxhc2guanEuY3NzKHsnd2lkdGgnOiB0aGlzLnN0YXR1cy53aWR0aCwgJ2hlaWdodCc6IHRoaXMuc3RhdHVzLmhlaWdodH0pOwoJCQl9CgkJfSwKCQlfdXBkYXRlQXV0b2hpZGU6IGZ1bmN0aW9uKCkgewoJCQl2YXIJc2VsZiA9IHRoaXMsCgkJCQlldmVudCA9ICJtb3VzZW1vdmUualBsYXllciIsCgkJCQluYW1lc3BhY2UgPSAiLmpQbGF5ZXJBdXRvaGlkZSIsCgkJCQlldmVudFR5cGUgPSBldmVudCArIG5hbWVzcGFjZSwKCQkJCWhhbmRsZXIgPSBmdW5jdGlvbihldmVudCkgewoJCQkJCXZhciBtb3ZlZCA9IGZhbHNlLAoJCQkJCQlkZWx0YVgsIGRlbHRhWTsKCQkJCQlpZih0eXBlb2Ygc2VsZi5pbnRlcm5hbC5tb3VzZSAhPT0gInVuZGVmaW5lZCIpIHsKCQkJCQkJLy9nZXQgdGhlIGNoYW5nZSBmcm9tIGxhc3QgcG9zaXRpb24gdG8gdGhpcyBwb3NpdGlvbgoJCQkJCQlkZWx0YVggPSBzZWxmLmludGVybmFsLm1vdXNlLnggLSBldmVudC5wYWdlWDsKCQkJCQkJZGVsdGFZID0gc2VsZi5pbnRlcm5hbC5tb3VzZS55IC0gZXZlbnQucGFnZVk7CgkJCQkJCW1vdmVkID0gKE1hdGguZmxvb3IoZGVsdGFYKSA+IDApIHx8IChNYXRoLmZsb29yKGRlbHRhWSk+MCk7IAoJCQkJCX0gZWxzZSB7CgkJCQkJCW1vdmVkID0gdHJ1ZTsKCQkJCQl9CgkJCQkJLy8gc3RvcmUgY3VycmVudCBwb3NpdGlvbiBmb3IgbmV4dCBtZXRob2QgZXhlY3V0aW9uCgkJCQkJc2VsZi5pbnRlcm5hbC5tb3VzZSA9IHsKCQkJCQkJCXggOiBldmVudC5wYWdlWCwKCQkJCQkJCXkgOiBldmVudC5wYWdlWQoJCQkJCX07CgkJCQkJLy8gaWYgbW91c2UgaGFzIGJlZW4gYWN0dWFsbHkgbW92ZWQsIGRvIHRoZSBndWkgZmFkZUluL2ZhZGVPdXQKCQkJCQlpZiAobW92ZWQpIHsKCQkJCQkJc2VsZi5jc3MuanEuZ3VpLmZhZGVJbihzZWxmLm9wdGlvbnMuYXV0b2hpZGUuZmFkZUluLCBmdW5jdGlvbigpIHsKCQkJCQkJCWNsZWFyVGltZW91dChzZWxmLmludGVybmFsLmF1dG9oaWRlSWQpOwoJCQkJCQkJc2VsZi5pbnRlcm5hbC5hdXRvaGlkZUlkID0gc2V0VGltZW91dCggZnVuY3Rpb24oKSB7CgkJCQkJCQkJc2VsZi5jc3MuanEuZ3VpLmZhZGVPdXQoc2VsZi5vcHRpb25zLmF1dG9oaWRlLmZhZGVPdXQpOwoJCQkJCQkJfSwgc2VsZi5vcHRpb25zLmF1dG9oaWRlLmhvbGQpOwoJCQkJCQl9KTsKCQkJCQl9CgkJCQl9OwoKCQkJaWYodGhpcy5jc3MuanEuZ3VpLmxlbmd0aCkgewoKCQkJCS8vIEVuZCBhbmltYXRpb25zIGZpcnN0IHNvIHRoYXQgaXRzIGNhbGxiYWNrIGlzIGV4ZWN1dGVkIG5vdy4KCQkJCS8vIE90aGVyd2lzZSBhbiBpbiBwcm9ncmVzcyBmYWRlSW4gYW5pbWF0aW9uIHN0aWxsIGhhcyB0aGUgY2FsbGJhY2sgdG8gZmFkZU91dCBhZ2Fpbi4KCQkJCXRoaXMuY3NzLmpxLmd1aS5zdG9wKHRydWUsIHRydWUpOwoKCQkJCS8vIFJlbW92ZXMgdGhlIGZhZGVPdXQgb3BlcmF0aW9uIGZyb20gdGhlIGZhZGVJbiBjYWxsYmFjay4KCQkJCWNsZWFyVGltZW91dCh0aGlzLmludGVybmFsLmF1dG9oaWRlSWQpOwoJCQkJLy8gdW5kZWZpbmUgbW91c2UKCQkJCWRlbGV0ZSB0aGlzLmludGVybmFsLm1vdXNlOwoKCQkJCXRoaXMuZWxlbWVudC51bmJpbmQobmFtZXNwYWNlKTsKCQkJCXRoaXMuY3NzLmpxLmd1aS51bmJpbmQobmFtZXNwYWNlKTsKCgkJCQlpZighdGhpcy5zdGF0dXMubmF0aXZlVmlkZW9Db250cm9scykgewoJCQkJCWlmKHRoaXMub3B0aW9ucy5mdWxsV2luZG93ICYmIHRoaXMub3B0aW9ucy5hdXRvaGlkZS5mdWxsIHx8ICF0aGlzLm9wdGlvbnMuZnVsbFdpbmRvdyAmJiB0aGlzLm9wdGlvbnMuYXV0b2hpZGUucmVzdG9yZWQpIHsKCQkJCQkJdGhpcy5lbGVtZW50LmJpbmQoZXZlbnRUeXBlLCBoYW5kbGVyKTsKCQkJCQkJdGhpcy5jc3MuanEuZ3VpLmJpbmQoZXZlbnRUeXBlLCBoYW5kbGVyKTsKCQkJCQkJdGhpcy5jc3MuanEuZ3VpLmhpZGUoKTsKCQkJCQl9IGVsc2UgewoJCQkJCQl0aGlzLmNzcy5qcS5ndWkuc2hvdygpOwoJCQkJCX0KCQkJCX0gZWxzZSB7CgkJCQkJdGhpcy5jc3MuanEuZ3VpLmhpZGUoKTsKCQkJCX0KCQkJfQoJCX0sCgkJZnVsbFNjcmVlbjogZnVuY3Rpb24oZXZlbnQpIHsKCQkJdmFyIGd1aUFjdGlvbiA9IHR5cGVvZiBldmVudCA9PT0gIm9iamVjdCI7IC8vIEZsYWdzIEdVSSBjbGljayBldmVudHMgc28gd2Uga25vdyB0aGlzIHdhcyBub3QgYSBkaXJlY3QgY29tbWFuZCwgYnV0IGFuIGFjdGlvbiB0YWtlbiBieSB0aGUgdXNlciBvbiB0aGUgR1VJLgoJCQlpZihndWlBY3Rpb24gJiYgdGhpcy5vcHRpb25zLnVzZVN0YXRlQ2xhc3NTa2luICYmIHRoaXMub3B0aW9ucy5mdWxsU2NyZWVuKSB7CgkJCQl0aGlzLl9zZXRPcHRpb24oImZ1bGxTY3JlZW4iLCBmYWxzZSk7CgkJCX0gZWxzZSB7CgkJCQl0aGlzLl9zZXRPcHRpb24oImZ1bGxTY3JlZW4iLCB0cnVlKTsKCQkJfQoJCX0sCgkJcmVzdG9yZVNjcmVlbjogZnVuY3Rpb24oKSB7CgkJCXRoaXMuX3NldE9wdGlvbigiZnVsbFNjcmVlbiIsIGZhbHNlKTsKCQl9LAoJCV9mdWxsc2NyZWVuQWRkRXZlbnRMaXN0ZW5lcnM6IGZ1bmN0aW9uKCkgewoJCQl2YXIgc2VsZiA9IHRoaXMsCgkJCQlmcyA9ICQualBsYXllci5uYXRpdmVGZWF0dXJlcy5mdWxsc2NyZWVuOwoKCQkJaWYoZnMuYXBpLmZ1bGxzY3JlZW5FbmFibGVkKSB7CgkJCQlpZihmcy5ldmVudC5mdWxsc2NyZWVuY2hhbmdlKSB7CgkJCQkJLy8gQ3JlYXRlIHRoZSBldmVudCBoYW5kbGVyIGZ1bmN0aW9uIGFuZCBzdG9yZSBpdCBmb3IgcmVtb3ZhbC4KCQkJCQlpZih0eXBlb2YgdGhpcy5pbnRlcm5hbC5mdWxsc2NyZWVuY2hhbmdlSGFuZGxlciAhPT0gJ2Z1bmN0aW9uJykgewoJCQkJCQl0aGlzLmludGVybmFsLmZ1bGxzY3JlZW5jaGFuZ2VIYW5kbGVyID0gZnVuY3Rpb24oKSB7CgkJCQkJCQlzZWxmLl9mdWxsc2NyZWVuY2hhbmdlKCk7CgkJCQkJCX07CgkJCQkJfQoJCQkJCWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoZnMuZXZlbnQuZnVsbHNjcmVlbmNoYW5nZSwgdGhpcy5pbnRlcm5hbC5mdWxsc2NyZWVuY2hhbmdlSGFuZGxlciwgZmFsc2UpOwoJCQkJfQoJCQkJLy8gTm8gcG9pbnQgY3JlYXRpbmcgaGFuZGxlciBmb3IgZnVsbHNjcmVlbmVycm9yLgoJCQkJLy8gRWl0aGVyIGxvZ2ljIGF2b2lkcyBmdWxsc2NyZWVuIG9jY3VycmluZyAodzNjL21veiksIG9yIHRoZWlyIGlzIG5vIGV2ZW50IG9uIHRoZSBicm93c2VyICh3ZWJraXQpLgoJCQl9CgkJfSwKCQlfZnVsbHNjcmVlblJlbW92ZUV2ZW50TGlzdGVuZXJzOiBmdW5jdGlvbigpIHsKCQkJdmFyIGZzID0gJC5qUGxheWVyLm5hdGl2ZUZlYXR1cmVzLmZ1bGxzY3JlZW47CgkJCWlmKHRoaXMuaW50ZXJuYWwuZnVsbHNjcmVlbmNoYW5nZUhhbmRsZXIpIHsKCQkJCWRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoZnMuZXZlbnQuZnVsbHNjcmVlbmNoYW5nZSwgdGhpcy5pbnRlcm5hbC5mdWxsc2NyZWVuY2hhbmdlSGFuZGxlciwgZmFsc2UpOwoJCQl9CgkJfSwKCQlfZnVsbHNjcmVlbmNoYW5nZTogZnVuY3Rpb24oKSB7CgkJCS8vIElmIG5vdGhpbmcgaXMgZnVsbHNjcmVlbiwgdGhlbiB3ZSBjYW5ub3QgYmUgaW4gZnVsbHNjcmVlbiBtb2RlLgoJCQlpZih0aGlzLm9wdGlvbnMuZnVsbFNjcmVlbiAmJiAhJC5qUGxheWVyLm5hdGl2ZUZlYXR1cmVzLmZ1bGxzY3JlZW4uYXBpLmZ1bGxzY3JlZW5FbGVtZW50KCkpIHsKCQkJCXRoaXMuX3NldE9wdGlvbigiZnVsbFNjcmVlbiIsIGZhbHNlKTsKCQkJfQoJCX0sCgkJX3JlcXVlc3RGdWxsc2NyZWVuOiBmdW5jdGlvbigpIHsKCQkJLy8gRWl0aGVyIHRoZSBjb250YWluZXIgb3IgdGhlIGpQbGF5ZXIgZGl2CgkJCXZhciBlID0gdGhpcy5hbmNlc3RvckpxLmxlbmd0aCA/IHRoaXMuYW5jZXN0b3JKcVswXSA6IHRoaXMuZWxlbWVudFswXSwKCQkJCWZzID0gJC5qUGxheWVyLm5hdGl2ZUZlYXR1cmVzLmZ1bGxzY3JlZW47CgoJCQkvLyBUaGlzIG1ldGhvZCBuZWVkcyB0aGUgdmlkZW8gZWxlbWVudC4gRm9yIGlPUyBhbmQgQW5kcm9pZC4KCQkJaWYoZnMudXNlZC53ZWJraXRWaWRlbykgewoJCQkJZSA9IHRoaXMuaHRtbEVsZW1lbnQudmlkZW87CgkJCX0KCgkJCWlmKGZzLmFwaS5mdWxsc2NyZWVuRW5hYmxlZCkgewoJCQkJZnMuYXBpLnJlcXVlc3RGdWxsc2NyZWVuKGUpOwoJCQl9CgkJfSwKCQlfZXhpdEZ1bGxzY3JlZW46IGZ1bmN0aW9uKCkgewoKCQkJdmFyIGZzID0gJC5qUGxheWVyLm5hdGl2ZUZlYXR1cmVzLmZ1bGxzY3JlZW4sCgkJCQllOwoKCQkJLy8gVGhpcyBtZXRob2QgbmVlZHMgdGhlIHZpZGVvIGVsZW1lbnQuIEZvciBpT1MgYW5kIEFuZHJvaWQuCgkJCWlmKGZzLnVzZWQud2Via2l0VmlkZW8pIHsKCQkJCWUgPSB0aGlzLmh0bWxFbGVtZW50LnZpZGVvOwoJCQl9CgoJCQlpZihmcy5hcGkuZnVsbHNjcmVlbkVuYWJsZWQpIHsKCQkJCWZzLmFwaS5leGl0RnVsbHNjcmVlbihlKTsKCQkJfQoJCX0sCgkJX2h0bWxfaW5pdE1lZGlhOiBmdW5jdGlvbihtZWRpYSkgewoJCQkvLyBSZW1vdmUgYW55IGV4aXN0aW5nIHRyYWNrIGVsZW1lbnRzCgkJCXZhciAkbWVkaWEgPSAkKHRoaXMuaHRtbEVsZW1lbnQubWVkaWEpLmVtcHR5KCk7CgoJCQkvLyBDcmVhdGUgYW55IHRyYWNrIGVsZW1lbnRzIGdpdmVuIHdpdGggdGhlIG1lZGlhLCBhcyBhbiBBcnJheSBvZiB0cmFjayBPYmplY3RzLgoJCQkkLmVhY2gobWVkaWEudHJhY2sgfHwgW10sIGZ1bmN0aW9uKGksdikgewoJCQkJdmFyIHRyYWNrID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHJhY2snKTsKCQkJCXRyYWNrLnNldEF0dHJpYnV0ZSgia2luZCIsIHYua2luZCA/IHYua2luZCA6ICIiKTsKCQkJCXRyYWNrLnNldEF0dHJpYnV0ZSgic3JjIiwgdi5zcmMgPyB2LnNyYyA6ICIiKTsKCQkJCXRyYWNrLnNldEF0dHJpYnV0ZSgic3JjbGFuZyIsIHYuc3JjbGFuZyA/IHYuc3JjbGFuZyA6ICIiKTsKCQkJCXRyYWNrLnNldEF0dHJpYnV0ZSgibGFiZWwiLCB2LmxhYmVsID8gdi5sYWJlbCA6ICIiKTsKCQkJCWlmKHYuZGVmKSB7CgkJCQkJdHJhY2suc2V0QXR0cmlidXRlKCJkZWZhdWx0Iiwgdi5kZWYpOwoJCQkJfQoJCQkJJG1lZGlhLmFwcGVuZCh0cmFjayk7CgkJCX0pOwoKCQkJdGhpcy5odG1sRWxlbWVudC5tZWRpYS5zcmMgPSB0aGlzLnN0YXR1cy5zcmM7CgoJCQlpZih0aGlzLm9wdGlvbnMucHJlbG9hZCAhPT0gJ25vbmUnKSB7CgkJCQl0aGlzLl9odG1sX2xvYWQoKTsgLy8gU2VlIGZ1bmN0aW9uIGZvciBjb21tZW50cwoJCQl9CgkJCXRoaXMuX3RyaWdnZXIoJC5qUGxheWVyLmV2ZW50LnRpbWV1cGRhdGUpOyAvLyBUaGUgZmxhc2ggZ2VuZXJhdGVzIHRoaXMgZXZlbnQgZm9yIGl0cyBzb2x1dGlvbi4KCQl9LAoJCV9odG1sX3NldEZvcm1hdDogZnVuY3Rpb24obWVkaWEpIHsKCQkJdmFyIHNlbGYgPSB0aGlzOwoJCQkvLyBBbHdheXMgZmluZHMgYSBmb3JtYXQgZHVlIHRvIGNoZWNrcyBpbiBzZXRNZWRpYSgpCgkJCSQuZWFjaCh0aGlzLmZvcm1hdHMsIGZ1bmN0aW9uKHByaW9yaXR5LCBmb3JtYXQpIHsKCQkJCWlmKHNlbGYuaHRtbC5zdXBwb3J0W2Zvcm1hdF0gJiYgbWVkaWFbZm9ybWF0XSkgewoJCQkJCXNlbGYuc3RhdHVzLnNyYyA9IG1lZGlhW2Zvcm1hdF07CgkJCQkJc2VsZi5zdGF0dXMuZm9ybWF0W2Zvcm1hdF0gPSB0cnVlOwoJCQkJCXNlbGYuc3RhdHVzLmZvcm1hdFR5cGUgPSBmb3JtYXQ7CgkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJfQoJCQl9KTsKCQl9LAoJCV9odG1sX3NldEF1ZGlvOiBmdW5jdGlvbihtZWRpYSkgewoJCQl0aGlzLl9odG1sX3NldEZvcm1hdChtZWRpYSk7CgkJCXRoaXMuaHRtbEVsZW1lbnQubWVkaWEgPSB0aGlzLmh0bWxFbGVtZW50LmF1ZGlvOwoJCQl0aGlzLl9odG1sX2luaXRNZWRpYShtZWRpYSk7CgkJfSwKCQlfaHRtbF9zZXRWaWRlbzogZnVuY3Rpb24obWVkaWEpIHsKCQkJdGhpcy5faHRtbF9zZXRGb3JtYXQobWVkaWEpOwoJCQlpZih0aGlzLnN0YXR1cy5uYXRpdmVWaWRlb0NvbnRyb2xzKSB7CgkJCQl0aGlzLmh0bWxFbGVtZW50LnZpZGVvLnBvc3RlciA9IHRoaXMuX3ZhbGlkU3RyaW5nKG1lZGlhLnBvc3RlcikgPyBtZWRpYS5wb3N0ZXIgOiAiIjsKCQkJfQoJCQl0aGlzLmh0bWxFbGVtZW50Lm1lZGlhID0gdGhpcy5odG1sRWxlbWVudC52aWRlbzsKCQkJdGhpcy5faHRtbF9pbml0TWVkaWEobWVkaWEpOwoJCX0sCgkJX2h0bWxfcmVzZXRNZWRpYTogZnVuY3Rpb24oKSB7CgkJCWlmKHRoaXMuaHRtbEVsZW1lbnQubWVkaWEpIHsKCQkJCWlmKHRoaXMuaHRtbEVsZW1lbnQubWVkaWEuaWQgPT09IHRoaXMuaW50ZXJuYWwudmlkZW8uaWQgJiYgIXRoaXMuc3RhdHVzLm5hdGl2ZVZpZGVvQ29udHJvbHMpIHsKCQkJCQl0aGlzLmludGVybmFsLnZpZGVvLmpxLmNzcyh7J3dpZHRoJzonMHB4JywgJ2hlaWdodCc6JzBweCd9KTsKCQkJCX0KCQkJCXRoaXMuaHRtbEVsZW1lbnQubWVkaWEucGF1c2UoKTsKCQkJfQoJCX0sCgkJX2h0bWxfY2xlYXJNZWRpYTogZnVuY3Rpb24oKSB7CgkJCWlmKHRoaXMuaHRtbEVsZW1lbnQubWVkaWEpIHsKCQkJCXRoaXMuaHRtbEVsZW1lbnQubWVkaWEuc3JjID0gImFib3V0OmJsYW5rIjsKCQkJCS8vIFRoZSBmb2xsb3dpbmcgbG9hZCgpIGlzIG9ubHkgcmVxdWlyZWQgZm9yIEZpcmVmb3ggMy42IChQb3dlck1hY3MpLgoJCQkJLy8gUmVjZW50IEhUTWw1IGJyb3dzZXJzIG9ubHkgcmVxdWlyZSB0aGUgc3JjIGNoYW5nZS4gRHVlIHRvIGNoYW5nZXMgaW4gVzNDIHNwZWMgYW5kIGxvYWQoKSBlZmZlY3QuCgkJCQl0aGlzLmh0bWxFbGVtZW50Lm1lZGlhLmxvYWQoKTsgLy8gU3RvcHMgYW4gb2xkLCAiaW4gcHJvZ3Jlc3MiIGRvd25sb2FkIGZyb20gY29udGludWluZyB0aGUgZG93bmxvYWQuIFRyaWdnZXJzIHRoZSBsb2Fkc3RhcnQsIGVycm9yIGFuZCBlbXB0aWVkIGV2ZW50cywgZHVlIHRvIHRoZSBlbXB0eSBzcmMuIEFsc28gYW4gYWJvcnQgZXZlbnQgaWYgYSBkb3dubG9hZCB3YXMgaW4gcHJvZ3Jlc3MuCgkJCX0KCQl9LAoJCV9odG1sX2xvYWQ6IGZ1bmN0aW9uKCkgewoJCQkvLyBUaGlzIGZ1bmN0aW9uIHJlbWFpbnMgdG8gYWxsb3cgdGhlIGVhcmx5IEhUTUw1IGJyb3dzZXJzIHRvIHdvcmssIHN1Y2ggYXMgRmlyZWZveCAzLjYKCQkJLy8gQSBjaGFuZ2UgaW4gdGhlIFczQyBzcGVjIGZvciB0aGUgbWVkaWEubG9hZCgpIGNvbW1hbmQgbWVhbnMgdGhhdCB0aGlzIGlzIG5vIGxvbmdlciBuZWNlc3NhcnkuCgkJCS8vIFRoaXMgY29tbWFuZCBzaG91bGQgYmUgcmVtb3ZlZCBhbmQgYWN0dWFsbHkgY2F1c2VzIG1pbm9yIHVuZGVzaXJhYmxlIGVmZmVjdHMgb24gc29tZSBicm93c2Vycy4gU3VjaCBhcyBsb2FkaW5nIHRoZSB3aG9sZSBmaWxlIGFuZCBub3Qgb25seSB0aGUgbWV0YWRhdGEuCgkJCWlmKHRoaXMuc3RhdHVzLndhaXRGb3JMb2FkKSB7CgkJCQl0aGlzLnN0YXR1cy53YWl0Rm9yTG9hZCA9IGZhbHNlOwoJCQkJdGhpcy5odG1sRWxlbWVudC5tZWRpYS5sb2FkKCk7CgkJCX0KCQkJY2xlYXJUaW1lb3V0KHRoaXMuaW50ZXJuYWwuaHRtbERseUNtZElkKTsKCQl9LAoJCV9odG1sX3BsYXk6IGZ1bmN0aW9uKHRpbWUpIHsKCQkJdmFyIHNlbGYgPSB0aGlzLAoJCQkJbWVkaWEgPSB0aGlzLmh0bWxFbGVtZW50Lm1lZGlhOwoKCQkJdGhpcy5hbmRyb2lkRml4LnBhdXNlID0gZmFsc2U7IC8vIENhbmNlbCB0aGUgcGF1c2UgZml4LgoKCQkJdGhpcy5faHRtbF9sb2FkKCk7IC8vIExvYWRzIGlmIHJlcXVpcmVkIGFuZCBjbGVhcnMgYW55IGRlbGF5ZWQgY29tbWFuZHMuCgoJCQkvLyBTZXR1cCB0aGUgQW5kcm9pZCBGaXguCgkJCWlmKHRoaXMuYW5kcm9pZEZpeC5zZXRNZWRpYSkgewoJCQkJdGhpcy5hbmRyb2lkRml4LnBsYXkgPSB0cnVlOwoJCQkJdGhpcy5hbmRyb2lkRml4LnRpbWUgPSB0aW1lOwoKCQkJfSBlbHNlIGlmKCFpc05hTih0aW1lKSkgewoKCQkJCS8vIEF0dGVtcHQgdG8gcGxheSBpdCwgc2luY2UgaU9TIGhhcyBiZWVuIGlnbm9yaW5nIGNvbW1hbmRzCgkJCQlpZih0aGlzLmludGVybmFsLmNtZHNJZ25vcmVkKSB7CgkJCQkJbWVkaWEucGxheSgpOwoJCQkJfQoKCQkJCXRyeSB7CgkJCQkJLy8gIW1lZGlhLnNlZWthYmxlIGlzIGZvciBvbGQgSFRNTDUgYnJvd3NlcnMsIGxpa2UgRmlyZWZveCAzLjYuCgkJCQkJLy8gQ2hlY2tpbmcgc2Vla2FibGUubGVuZ3RoIGlzIGltcG9ydGFudCBmb3IgaU9TNiB0byB3b3JrIHdpdGggc2V0TWVkaWEoKS5wbGF5KHRpbWUpCgkJCQkJaWYoIW1lZGlhLnNlZWthYmxlIHx8IHR5cGVvZiBtZWRpYS5zZWVrYWJsZSA9PT0gIm9iamVjdCIgJiYgbWVkaWEuc2Vla2FibGUubGVuZ3RoID4gMCkgewoJCQkJCQltZWRpYS5jdXJyZW50VGltZSA9IHRpbWU7CgkJCQkJCW1lZGlhLnBsYXkoKTsKCQkJCQl9IGVsc2UgewoJCQkJCQl0aHJvdyAxOwoJCQkJCX0KCQkJCX0gY2F0Y2goZXJyKSB7CgkJCQkJdGhpcy5pbnRlcm5hbC5odG1sRGx5Q21kSWQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewoJCQkJCQlzZWxmLnBsYXkodGltZSk7CgkJCQkJfSwgMjUwKTsKCQkJCQlyZXR1cm47IC8vIENhbmNlbCBleGVjdXRpb24gYW5kIHdhaXQgZm9yIHRoZSBkZWxheWVkIGNvbW1hbmQuCgkJCQl9CgkJCX0gZWxzZSB7CgkJCQltZWRpYS5wbGF5KCk7CgkJCX0KCQkJdGhpcy5faHRtbF9jaGVja1dhaXRGb3JQbGF5KCk7CgkJfSwKCQlfaHRtbF9wYXVzZTogZnVuY3Rpb24odGltZSkgewoJCQl2YXIgc2VsZiA9IHRoaXMsCgkJCQltZWRpYSA9IHRoaXMuaHRtbEVsZW1lbnQubWVkaWE7CgoJCQl0aGlzLmFuZHJvaWRGaXgucGxheSA9IGZhbHNlOyAvLyBDYW5jZWwgdGhlIHBsYXkgZml4LgoKCQkJaWYodGltZSA+IDApIHsgLy8gV2UgZG8gbm90IHdhbnQgdGhlIHN0b3AoKSBjb21tYW5kLCB3aGljaCBkb2VzIHBhdXNlKDApLCBjYXVzaW5nIGEgbG9hZCBvcGVyYXRpb24uCgkJCQl0aGlzLl9odG1sX2xvYWQoKTsgLy8gTG9hZHMgaWYgcmVxdWlyZWQgYW5kIGNsZWFycyBhbnkgZGVsYXllZCBjb21tYW5kcy4KCQkJfSBlbHNlIHsKCQkJCWNsZWFyVGltZW91dCh0aGlzLmludGVybmFsLmh0bWxEbHlDbWRJZCk7CgkJCX0KCgkJCS8vIE9yZGVyIG9mIHRoZXNlIGNvbW1hbmRzIGlzIGltcG9ydGFudCBmb3IgU2FmYXJpIChXaW4pIGFuZCBJRTkuIFBhdXNlIHRoZW4gY2hhbmdlIGN1cnJlbnRUaW1lLgoJCQltZWRpYS5wYXVzZSgpOwoKCQkJLy8gU2V0dXAgdGhlIEFuZHJvaWQgRml4LgoJCQlpZih0aGlzLmFuZHJvaWRGaXguc2V0TWVkaWEpIHsKCQkJCXRoaXMuYW5kcm9pZEZpeC5wYXVzZSA9IHRydWU7CgkJCQl0aGlzLmFuZHJvaWRGaXgudGltZSA9IHRpbWU7CgoJCQl9IGVsc2UgaWYoIWlzTmFOKHRpbWUpKSB7CgkJCQl0cnkgewoJCQkJCWlmKCFtZWRpYS5zZWVrYWJsZSB8fCB0eXBlb2YgbWVkaWEuc2Vla2FibGUgPT09ICJvYmplY3QiICYmIG1lZGlhLnNlZWthYmxlLmxlbmd0aCA+IDApIHsKCQkJCQkJbWVkaWEuY3VycmVudFRpbWUgPSB0aW1lOwoJCQkJCX0gZWxzZSB7CgkJCQkJCXRocm93IDE7CgkJCQkJfQoJCQkJfSBjYXRjaChlcnIpIHsKCQkJCQl0aGlzLmludGVybmFsLmh0bWxEbHlDbWRJZCA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CgkJCQkJCXNlbGYucGF1c2UodGltZSk7CgkJCQkJfSwgMjUwKTsKCQkJCQlyZXR1cm47IC8vIENhbmNlbCBleGVjdXRpb24gYW5kIHdhaXQgZm9yIHRoZSBkZWxheWVkIGNvbW1hbmQuCgkJCQl9CgkJCX0KCQkJaWYodGltZSA+IDApIHsgLy8gQXZvaWRzIGEgc2V0TWVkaWEoKSBmb2xsb3dlZCBieSBzdG9wKCkgb3IgcGF1c2UoMCkgaGlkaW5nIHRoZSB2aWRlbyBwbGF5IGJ1dHRvbi4KCQkJCXRoaXMuX2h0bWxfY2hlY2tXYWl0Rm9yUGxheSgpOwoJCQl9CgkJfSwKCQlfaHRtbF9wbGF5SGVhZDogZnVuY3Rpb24ocGVyY2VudCkgewoJCQl2YXIgc2VsZiA9IHRoaXMsCgkJCQltZWRpYSA9IHRoaXMuaHRtbEVsZW1lbnQubWVkaWE7CgoJCQl0aGlzLl9odG1sX2xvYWQoKTsgLy8gTG9hZHMgaWYgcmVxdWlyZWQgYW5kIGNsZWFycyBhbnkgZGVsYXllZCBjb21tYW5kcy4KCgkJCS8vIFRoaXMgcGxheUhlYWQoKSBtZXRob2QgbmVlZHMgYSByZWZhY3RvciB0byBhcHBseSB0aGUgYW5kcm9pZCBmaXguCgoJCQl0cnkgewoJCQkJaWYodHlwZW9mIG1lZGlhLnNlZWthYmxlID09PSAib2JqZWN0IiAmJiBtZWRpYS5zZWVrYWJsZS5sZW5ndGggPiAwKSB7CgkJCQkJbWVkaWEuY3VycmVudFRpbWUgPSBwZXJjZW50ICogbWVkaWEuc2Vla2FibGUuZW5kKG1lZGlhLnNlZWthYmxlLmxlbmd0aC0xKSAvIDEwMDsKCQkJCX0gZWxzZSBpZihtZWRpYS5kdXJhdGlvbiA+IDAgJiYgIWlzTmFOKG1lZGlhLmR1cmF0aW9uKSkgewoJCQkJCW1lZGlhLmN1cnJlbnRUaW1lID0gcGVyY2VudCAqIG1lZGlhLmR1cmF0aW9uIC8gMTAwOwoJCQkJfSBlbHNlIHsKCQkJCQl0aHJvdyAiZSI7CgkJCQl9CgkJCX0gY2F0Y2goZXJyKSB7CgkJCQl0aGlzLmludGVybmFsLmh0bWxEbHlDbWRJZCA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CgkJCQkJc2VsZi5wbGF5SGVhZChwZXJjZW50KTsKCQkJCX0sIDI1MCk7CgkJCQlyZXR1cm47IC8vIENhbmNlbCBleGVjdXRpb24gYW5kIHdhaXQgZm9yIHRoZSBkZWxheWVkIGNvbW1hbmQuCgkJCX0KCQkJaWYoIXRoaXMuc3RhdHVzLndhaXRGb3JMb2FkKSB7CgkJCQl0aGlzLl9odG1sX2NoZWNrV2FpdEZvclBsYXkoKTsKCQkJfQoJCX0sCgkJX2h0bWxfY2hlY2tXYWl0Rm9yUGxheTogZnVuY3Rpb24oKSB7CgkJCWlmKHRoaXMuc3RhdHVzLndhaXRGb3JQbGF5KSB7CgkJCQl0aGlzLnN0YXR1cy53YWl0Rm9yUGxheSA9IGZhbHNlOwoJCQkJaWYodGhpcy5jc3MuanEudmlkZW9QbGF5Lmxlbmd0aCkgewoJCQkJCXRoaXMuY3NzLmpxLnZpZGVvUGxheS5oaWRlKCk7CgkJCQl9CgkJCQlpZih0aGlzLnN0YXR1cy52aWRlbykgewoJCQkJCXRoaXMuaW50ZXJuYWwucG9zdGVyLmpxLmhpZGUoKTsKCQkJCQl0aGlzLmludGVybmFsLnZpZGVvLmpxLmNzcyh7J3dpZHRoJzogdGhpcy5zdGF0dXMud2lkdGgsICdoZWlnaHQnOiB0aGlzLnN0YXR1cy5oZWlnaHR9KTsKCQkJCX0KCQkJfQoJCX0sCgkJX2h0bWxfc2V0UHJvcGVydHk6IGZ1bmN0aW9uKHByb3BlcnR5LCB2YWx1ZSkgewoJCQlpZih0aGlzLmh0bWwuYXVkaW8uYXZhaWxhYmxlKSB7CgkJCQl0aGlzLmh0bWxFbGVtZW50LmF1ZGlvW3Byb3BlcnR5XSA9IHZhbHVlOwoJCQl9CgkJCWlmKHRoaXMuaHRtbC52aWRlby5hdmFpbGFibGUpIHsKCQkJCXRoaXMuaHRtbEVsZW1lbnQudmlkZW9bcHJvcGVydHldID0gdmFsdWU7CgkJCX0KCQl9LAoJCV9hdXJvcmFfc2V0QXVkaW86IGZ1bmN0aW9uKG1lZGlhKSB7CgkJCXZhciBzZWxmID0gdGhpczsgICAgICAgICAgICAKCQkJCgkJCS8vIEFsd2F5cyBmaW5kcyBhIGZvcm1hdCBkdWUgdG8gY2hlY2tzIGluIHNldE1lZGlhKCkKCQkJJC5lYWNoKHRoaXMuZm9ybWF0cywgZnVuY3Rpb24ocHJpb3JpdHksIGZvcm1hdCkgewoJCQkJaWYoc2VsZi5hdXJvcmEuc3VwcG9ydFtmb3JtYXRdICYmIG1lZGlhW2Zvcm1hdF0pIHsKCQkJCQlzZWxmLnN0YXR1cy5zcmMgPSBtZWRpYVtmb3JtYXRdOwoJCQkJCXNlbGYuc3RhdHVzLmZvcm1hdFtmb3JtYXRdID0gdHJ1ZTsKCQkJCQlzZWxmLnN0YXR1cy5mb3JtYXRUeXBlID0gZm9ybWF0OwoJCQkKCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQl9CgkJCX0pOwoJCQkKCQkJdGhpcy5hdXJvcmEucGxheWVyID0gbmV3IEFWLlBsYXllci5mcm9tVVJMKHRoaXMuc3RhdHVzLnNyYyk7CgkJCXRoaXMuX2FkZEF1cm9yYUV2ZW50TGlzdGVuZXJzKHRoaXMuYXVyb3JhLnBsYXllciwgdGhpcy5hdXJvcmEpOwoKCQkJaWYodGhpcy5vcHRpb25zLnByZWxvYWQgPT09ICdhdXRvJykgewoJCQkJdGhpcy5fYXVyb3JhX2xvYWQoKTsKCQkJCXRoaXMuc3RhdHVzLndhaXRGb3JMb2FkID0gZmFsc2U7CgkJCX0KCQl9LAoJCV9hdXJvcmFfcmVzZXRNZWRpYTogZnVuY3Rpb24oKSB7CgkJCWlmICh0aGlzLmF1cm9yYS5wbGF5ZXIpIHsKCQkJCXRoaXMuYXVyb3JhLnBsYXllci5zdG9wKCk7CgkJCX0KCQl9LAoJCV9hdXJvcmFfY2xlYXJNZWRpYTogZnVuY3Rpb24oKSB7CgkJCS8vIE5vdGhpbmcgdG8gY2xlYXIuCgkJfSwKCQlfYXVyb3JhX2xvYWQ6IGZ1bmN0aW9uKCkgewoJCQlpZih0aGlzLnN0YXR1cy53YWl0Rm9yTG9hZCkgewoJCQkJdGhpcy5zdGF0dXMud2FpdEZvckxvYWQgPSBmYWxzZTsKCQkJCXRoaXMuYXVyb3JhLnBsYXllci5wcmVsb2FkKCk7CgkJCX0KCQl9LAoJCV9hdXJvcmFfcGxheTogZnVuY3Rpb24odGltZSkgewoJCQlpZiAoIXRoaXMuc3RhdHVzLndhaXRGb3JMb2FkKSB7CgkJCQlpZiAoIWlzTmFOKHRpbWUpKSB7CgkJCQkJdGhpcy5hdXJvcmEucGxheWVyLnNlZWsodGltZSk7CgkJCQl9CgkJCX0KCQkJaWYgKCF0aGlzLmF1cm9yYS5wbGF5ZXIucGxheWluZykgewoJCQkJdGhpcy5hdXJvcmEucGxheWVyLnBsYXkoKTsKCQkJfQoJCQl0aGlzLnN0YXR1cy53YWl0Rm9yTG9hZCA9IGZhbHNlOwoJCQl0aGlzLl9hdXJvcmFfY2hlY2tXYWl0Rm9yUGxheSgpOwoJCQkKCQkJLy8gTm8gZXZlbnQgZnJvbSB0aGUgcGxheWVyLCB1cGRhdGUgVUkgbm93LgoJCQl0aGlzLl91cGRhdGVCdXR0b25zKHRydWUpOwoJCQl0aGlzLl90cmlnZ2VyKCQualBsYXllci5ldmVudC5wbGF5KTsKCQl9LAoJCV9hdXJvcmFfcGF1c2U6IGZ1bmN0aW9uKHRpbWUpIHsKCQkJaWYgKCFpc05hTih0aW1lKSkgewoJCQkJdGhpcy5hdXJvcmEucGxheWVyLnNlZWsodGltZSAqIDEwMDApOwoJCQl9CgkJCXRoaXMuYXVyb3JhLnBsYXllci5wYXVzZSgpOwoJCQkKCQkJaWYodGltZSA+IDApIHsgLy8gQXZvaWRzIGEgc2V0TWVkaWEoKSBmb2xsb3dlZCBieSBzdG9wKCkgb3IgcGF1c2UoMCkgaGlkaW5nIHRoZSB2aWRlbyBwbGF5IGJ1dHRvbi4KCQkJCXRoaXMuX2F1cm9yYV9jaGVja1dhaXRGb3JQbGF5KCk7CgkJCX0KCQkJCgkJCS8vIE5vIGV2ZW50IGZyb20gdGhlIHBsYXllciwgdXBkYXRlIFVJIG5vdy4KCQkJdGhpcy5fdXBkYXRlQnV0dG9ucyhmYWxzZSk7CgkJCXRoaXMuX3RyaWdnZXIoJC5qUGxheWVyLmV2ZW50LnBhdXNlKTsKCQl9LAoJCV9hdXJvcmFfcGxheUhlYWQ6IGZ1bmN0aW9uKHBlcmNlbnQpIHsKCQkJaWYodGhpcy5hdXJvcmEucGxheWVyLmR1cmF0aW9uID4gMCkgewoJCQkJLy8gVGhlIHNlZWsoKSBzb3VsZCBiZSBpbiBtaWxsaXNlY29uZHMsIGJ1dCB0aGUgb25seSBjb2RlYyB0aGF0IHdvcmtzIHdpdGggc2VlayAoYWFjLmpzKSB1c2VzIHNlY29uZHMuCgkJCQl0aGlzLmF1cm9yYS5wbGF5ZXIuc2VlayhwZXJjZW50ICogdGhpcy5hdXJvcmEucGxheWVyLmR1cmF0aW9uIC8gMTAwKTsgLy8gVXNpbmcgc2Vjb25kcwoJCQl9CgkJCQkKCQkJaWYoIXRoaXMuc3RhdHVzLndhaXRGb3JMb2FkKSB7CgkJCQl0aGlzLl9hdXJvcmFfY2hlY2tXYWl0Rm9yUGxheSgpOwoJCQl9CgkJfSwKCQlfYXVyb3JhX2NoZWNrV2FpdEZvclBsYXk6IGZ1bmN0aW9uKCkgewoJCQlpZih0aGlzLnN0YXR1cy53YWl0Rm9yUGxheSkgewoJCQkJdGhpcy5zdGF0dXMud2FpdEZvclBsYXkgPSBmYWxzZTsKCQkJfQoJCX0sCgkJX2F1cm9yYV92b2x1bWU6IGZ1bmN0aW9uKHYpIHsKCQkJdGhpcy5hdXJvcmEucGxheWVyLnZvbHVtZSA9IHYgKiAxMDA7CgkJfSwKCQlfYXVyb3JhX211dGU6IGZ1bmN0aW9uKG0pIHsKCQkJaWYgKG0pIHsKCQkJCXRoaXMuYXVyb3JhLnByb3BlcnRpZXMubGFzdHZvbHVtZSA9IHRoaXMuYXVyb3JhLnBsYXllci52b2x1bWU7CgkJCQl0aGlzLmF1cm9yYS5wbGF5ZXIudm9sdW1lID0gMDsKCQkJfSBlbHNlIHsKCQkJCXRoaXMuYXVyb3JhLnBsYXllci52b2x1bWUgPSB0aGlzLmF1cm9yYS5wcm9wZXJ0aWVzLmxhc3R2b2x1bWU7CgkJCX0KCQkJdGhpcy5hdXJvcmEucHJvcGVydGllcy5tdXRlZCA9IG07CgkJfSwKCQlfZmxhc2hfc2V0QXVkaW86IGZ1bmN0aW9uKG1lZGlhKSB7CgkJCXZhciBzZWxmID0gdGhpczsKCQkJdHJ5IHsKCQkJCS8vIEFsd2F5cyBmaW5kcyBhIGZvcm1hdCBkdWUgdG8gY2hlY2tzIGluIHNldE1lZGlhKCkKCQkJCSQuZWFjaCh0aGlzLmZvcm1hdHMsIGZ1bmN0aW9uKHByaW9yaXR5LCBmb3JtYXQpIHsKCQkJCQlpZihzZWxmLmZsYXNoLnN1cHBvcnRbZm9ybWF0XSAmJiBtZWRpYVtmb3JtYXRdKSB7CgkJCQkJCXN3aXRjaCAoZm9ybWF0KSB7CgkJCQkJCQljYXNlICJtNGEiIDoKCQkJCQkJCWNhc2UgImZsYSIgOgoJCQkJCQkJCXNlbGYuX2dldE1vdmllKCkuZmxfc2V0QXVkaW9fbTRhKG1lZGlhW2Zvcm1hdF0pOwoJCQkJCQkJCWJyZWFrOwoJCQkJCQkJY2FzZSAibXAzIiA6CgkJCQkJCQkJc2VsZi5fZ2V0TW92aWUoKS5mbF9zZXRBdWRpb19tcDMobWVkaWFbZm9ybWF0XSk7CgkJCQkJCQkJYnJlYWs7CgkJCQkJCQljYXNlICJydG1wYSI6CgkJCQkJCQkJc2VsZi5fZ2V0TW92aWUoKS5mbF9zZXRBdWRpb19ydG1wKG1lZGlhW2Zvcm1hdF0pOwoJCQkJCQkJCWJyZWFrOwoJCQkJCQl9CgkJCQkJCXNlbGYuc3RhdHVzLnNyYyA9IG1lZGlhW2Zvcm1hdF07CgkJCQkJCXNlbGYuc3RhdHVzLmZvcm1hdFtmb3JtYXRdID0gdHJ1ZTsKCQkJCQkJc2VsZi5zdGF0dXMuZm9ybWF0VHlwZSA9IGZvcm1hdDsKCQkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJCX0KCQkJCX0pOwoKCQkJCWlmKHRoaXMub3B0aW9ucy5wcmVsb2FkID09PSAnYXV0bycpIHsKCQkJCQl0aGlzLl9mbGFzaF9sb2FkKCk7CgkJCQkJdGhpcy5zdGF0dXMud2FpdEZvckxvYWQgPSBmYWxzZTsKCQkJCX0KCQkJfSBjYXRjaChlcnIpIHsgdGhpcy5fZmxhc2hFcnJvcihlcnIpOyB9CgkJfSwKCQlfZmxhc2hfc2V0VmlkZW86IGZ1bmN0aW9uKG1lZGlhKSB7CgkJCXZhciBzZWxmID0gdGhpczsKCQkJdHJ5IHsKCQkJCS8vIEFsd2F5cyBmaW5kcyBhIGZvcm1hdCBkdWUgdG8gY2hlY2tzIGluIHNldE1lZGlhKCkKCQkJCSQuZWFjaCh0aGlzLmZvcm1hdHMsIGZ1bmN0aW9uKHByaW9yaXR5LCBmb3JtYXQpIHsKCQkJCQlpZihzZWxmLmZsYXNoLnN1cHBvcnRbZm9ybWF0XSAmJiBtZWRpYVtmb3JtYXRdKSB7CgkJCQkJCXN3aXRjaCAoZm9ybWF0KSB7CgkJCQkJCQljYXNlICJtNHYiIDoKCQkJCQkJCWNhc2UgImZsdiIgOgoJCQkJCQkJCXNlbGYuX2dldE1vdmllKCkuZmxfc2V0VmlkZW9fbTR2KG1lZGlhW2Zvcm1hdF0pOwoJCQkJCQkJCWJyZWFrOwoJCQkJCQkJY2FzZSAicnRtcHYiOgoJCQkJCQkJCXNlbGYuX2dldE1vdmllKCkuZmxfc2V0VmlkZW9fcnRtcChtZWRpYVtmb3JtYXRdKTsKCQkJCQkJCQlicmVhazsJCQoJCQkJCQl9CgkJCQkJCXNlbGYuc3RhdHVzLnNyYyA9IG1lZGlhW2Zvcm1hdF07CgkJCQkJCXNlbGYuc3RhdHVzLmZvcm1hdFtmb3JtYXRdID0gdHJ1ZTsKCQkJCQkJc2VsZi5zdGF0dXMuZm9ybWF0VHlwZSA9IGZvcm1hdDsKCQkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJCX0KCQkJCX0pOwoKCQkJCWlmKHRoaXMub3B0aW9ucy5wcmVsb2FkID09PSAnYXV0bycpIHsKCQkJCQl0aGlzLl9mbGFzaF9sb2FkKCk7CgkJCQkJdGhpcy5zdGF0dXMud2FpdEZvckxvYWQgPSBmYWxzZTsKCQkJCX0KCQkJfSBjYXRjaChlcnIpIHsgdGhpcy5fZmxhc2hFcnJvcihlcnIpOyB9CgkJfSwKCQlfZmxhc2hfcmVzZXRNZWRpYTogZnVuY3Rpb24oKSB7CgkJCXRoaXMuaW50ZXJuYWwuZmxhc2guanEuY3NzKHsnd2lkdGgnOicwcHgnLCAnaGVpZ2h0JzonMHB4J30pOyAvLyBNdXN0IGRvIHZpYSBDU1MgYXMgc2V0dGluZyBhdHRyKCkgdG8gemVybyBjYXVzZXMgYSBqUXVlcnkgZXJyb3IgaW4gSUUuCgkJCXRoaXMuX2ZsYXNoX3BhdXNlKE5hTik7CgkJfSwKCQlfZmxhc2hfY2xlYXJNZWRpYTogZnVuY3Rpb24oKSB7CgkJCXRyeSB7CgkJCQl0aGlzLl9nZXRNb3ZpZSgpLmZsX2NsZWFyTWVkaWEoKTsKCQkJfSBjYXRjaChlcnIpIHsgdGhpcy5fZmxhc2hFcnJvcihlcnIpOyB9CgkJfSwKCQlfZmxhc2hfbG9hZDogZnVuY3Rpb24oKSB7CgkJCXRyeSB7CgkJCQl0aGlzLl9nZXRNb3ZpZSgpLmZsX2xvYWQoKTsKCQkJfSBjYXRjaChlcnIpIHsgdGhpcy5fZmxhc2hFcnJvcihlcnIpOyB9CgkJCXRoaXMuc3RhdHVzLndhaXRGb3JMb2FkID0gZmFsc2U7CgkJfSwKCQlfZmxhc2hfcGxheTogZnVuY3Rpb24odGltZSkgewoJCQl0cnkgewoJCQkJdGhpcy5fZ2V0TW92aWUoKS5mbF9wbGF5KHRpbWUpOwoJCQl9IGNhdGNoKGVycikgeyB0aGlzLl9mbGFzaEVycm9yKGVycik7IH0KCQkJdGhpcy5zdGF0dXMud2FpdEZvckxvYWQgPSBmYWxzZTsKCQkJdGhpcy5fZmxhc2hfY2hlY2tXYWl0Rm9yUGxheSgpOwoJCX0sCgkJX2ZsYXNoX3BhdXNlOiBmdW5jdGlvbih0aW1lKSB7CgkJCXRyeSB7CgkJCQl0aGlzLl9nZXRNb3ZpZSgpLmZsX3BhdXNlKHRpbWUpOwoJCQl9IGNhdGNoKGVycikgeyB0aGlzLl9mbGFzaEVycm9yKGVycik7IH0KCQkJaWYodGltZSA+IDApIHsgLy8gQXZvaWRzIGEgc2V0TWVkaWEoKSBmb2xsb3dlZCBieSBzdG9wKCkgb3IgcGF1c2UoMCkgaGlkaW5nIHRoZSB2aWRlbyBwbGF5IGJ1dHRvbi4KCQkJCXRoaXMuc3RhdHVzLndhaXRGb3JMb2FkID0gZmFsc2U7CgkJCQl0aGlzLl9mbGFzaF9jaGVja1dhaXRGb3JQbGF5KCk7CgkJCX0KCQl9LAoJCV9mbGFzaF9wbGF5SGVhZDogZnVuY3Rpb24ocCkgewoJCQl0cnkgewoJCQkJdGhpcy5fZ2V0TW92aWUoKS5mbF9wbGF5X2hlYWQocCk7CgkJCX0gY2F0Y2goZXJyKSB7IHRoaXMuX2ZsYXNoRXJyb3IoZXJyKTsgfQoJCQlpZighdGhpcy5zdGF0dXMud2FpdEZvckxvYWQpIHsKCQkJCXRoaXMuX2ZsYXNoX2NoZWNrV2FpdEZvclBsYXkoKTsKCQkJfQoJCX0sCgkJX2ZsYXNoX2NoZWNrV2FpdEZvclBsYXk6IGZ1bmN0aW9uKCkgewoJCQlpZih0aGlzLnN0YXR1cy53YWl0Rm9yUGxheSkgewoJCQkJdGhpcy5zdGF0dXMud2FpdEZvclBsYXkgPSBmYWxzZTsKCQkJCWlmKHRoaXMuY3NzLmpxLnZpZGVvUGxheS5sZW5ndGgpIHsKCQkJCQl0aGlzLmNzcy5qcS52aWRlb1BsYXkuaGlkZSgpOwoJCQkJfQoJCQkJaWYodGhpcy5zdGF0dXMudmlkZW8pIHsKCQkJCQl0aGlzLmludGVybmFsLnBvc3Rlci5qcS5oaWRlKCk7CgkJCQkJdGhpcy5pbnRlcm5hbC5mbGFzaC5qcS5jc3Moeyd3aWR0aCc6IHRoaXMuc3RhdHVzLndpZHRoLCAnaGVpZ2h0JzogdGhpcy5zdGF0dXMuaGVpZ2h0fSk7CgkJCQl9CgkJCX0KCQl9LAoJCV9mbGFzaF92b2x1bWU6IGZ1bmN0aW9uKHYpIHsKCQkJdHJ5IHsKCQkJCXRoaXMuX2dldE1vdmllKCkuZmxfdm9sdW1lKHYpOwoJCQl9IGNhdGNoKGVycikgeyB0aGlzLl9mbGFzaEVycm9yKGVycik7IH0KCQl9LAoJCV9mbGFzaF9tdXRlOiBmdW5jdGlvbihtKSB7CgkJCXRyeSB7CgkJCQl0aGlzLl9nZXRNb3ZpZSgpLmZsX211dGUobSk7CgkJCX0gY2F0Y2goZXJyKSB7IHRoaXMuX2ZsYXNoRXJyb3IoZXJyKTsgfQoJCX0sCgkJX2dldE1vdmllOiBmdW5jdGlvbigpIHsKCQkJcmV0dXJuIGRvY3VtZW50W3RoaXMuaW50ZXJuYWwuZmxhc2guaWRdOwoJCX0sCgkJX2dldEZsYXNoUGx1Z2luVmVyc2lvbjogZnVuY3Rpb24oKSB7CgoJCQkvLyBfZ2V0Rmxhc2hQbHVnaW5WZXJzaW9uKCkgY29kZSBpbmZsdWVuY2VkIGJ5OgoJCQkvLyAtIEZsYXNoUmVwbGFjZSAxLjAxOiBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZmxhc2hyZXBsYWNlLwoJCQkvLyAtIFNXRk9iamVjdCAyLjI6IGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9zd2ZvYmplY3QvCgoJCQl2YXIgdmVyc2lvbiA9IDAsCgkJCQlmbGFzaDsKCQkJaWYod2luZG93LkFjdGl2ZVhPYmplY3QpIHsKCQkJCXRyeSB7CgkJCQkJZmxhc2ggPSBuZXcgQWN0aXZlWE9iamVjdCgiU2hvY2t3YXZlRmxhc2guU2hvY2t3YXZlRmxhc2giKTsKCQkJCQlpZiAoZmxhc2gpIHsgLy8gZmxhc2ggd2lsbCByZXR1cm4gbnVsbCB3aGVuIEFjdGl2ZVggaXMgZGlzYWJsZWQKCQkJCQkJdmFyIHYgPSBmbGFzaC5HZXRWYXJpYWJsZSgiJHZlcnNpb24iKTsKCQkJCQkJaWYodikgewoJCQkJCQkJdiA9IHYuc3BsaXQoIiAiKVsxXS5zcGxpdCgiLCIpOwoJCQkJCQkJdmVyc2lvbiA9IHBhcnNlSW50KHZbMF0sIDEwKSArICIuIiArIHBhcnNlSW50KHZbMV0sIDEwKTsKCQkJCQkJfQoJCQkJCX0KCQkJCX0gY2F0Y2goZSkge30KCQkJfQoJCQllbHNlIGlmKG5hdmlnYXRvci5wbHVnaW5zICYmIG5hdmlnYXRvci5taW1lVHlwZXMubGVuZ3RoID4gMCkgewoJCQkJZmxhc2ggPSBuYXZpZ2F0b3IucGx1Z2luc1siU2hvY2t3YXZlIEZsYXNoIl07CgkJCQlpZihmbGFzaCkgewoJCQkJCXZlcnNpb24gPSBuYXZpZ2F0b3IucGx1Z2luc1siU2hvY2t3YXZlIEZsYXNoIl0uZGVzY3JpcHRpb24ucmVwbGFjZSgvLipccyhcZCtcLlxkKykuKi8sICIkMSIpOwoJCQkJfQoJCQl9CgkJCXJldHVybiB2ZXJzaW9uICogMTsgLy8gQ29udmVydHMgdG8gYSBudW1iZXIKCQl9LAoJCV9jaGVja0ZvckZsYXNoOiBmdW5jdGlvbiAodmVyc2lvbikgewoJCQl2YXIgZmxhc2hPayA9IGZhbHNlOwoJCQlpZih0aGlzLl9nZXRGbGFzaFBsdWdpblZlcnNpb24oKSA+PSB2ZXJzaW9uKSB7CgkJCQlmbGFzaE9rID0gdHJ1ZTsKCQkJfQoJCQlyZXR1cm4gZmxhc2hPazsKCQl9LAoJCV92YWxpZFN0cmluZzogZnVuY3Rpb24odXJsKSB7CgkJCXJldHVybiAodXJsICYmIHR5cGVvZiB1cmwgPT09ICJzdHJpbmciKTsgLy8gRW1wdHkgc3RyaW5ncyByZXR1cm4gZmFsc2UKCQl9LAoJCV9saW1pdFZhbHVlOiBmdW5jdGlvbih2YWx1ZSwgbWluLCBtYXgpIHsKCQkJcmV0dXJuICh2YWx1ZSA8IG1pbikgPyBtaW4gOiAoKHZhbHVlID4gbWF4KSA/IG1heCA6IHZhbHVlKTsKCQl9LAoJCV91cmxOb3RTZXRFcnJvcjogZnVuY3Rpb24oY29udGV4dCkgewoJCQl0aGlzLl9lcnJvciggewoJCQkJdHlwZTogJC5qUGxheWVyLmVycm9yLlVSTF9OT1RfU0VULAoJCQkJY29udGV4dDogY29udGV4dCwKCQkJCW1lc3NhZ2U6ICQualBsYXllci5lcnJvck1zZy5VUkxfTk9UX1NFVCwKCQkJCWhpbnQ6ICQualBsYXllci5lcnJvckhpbnQuVVJMX05PVF9TRVQKCQkJfSk7CgkJfSwKCQlfZmxhc2hFcnJvcjogZnVuY3Rpb24oZXJyb3IpIHsKCQkJdmFyIGVycm9yVHlwZTsKCQkJaWYoIXRoaXMuaW50ZXJuYWwucmVhZHkpIHsKCQkJCWVycm9yVHlwZSA9ICJGTEFTSCI7CgkJCX0gZWxzZSB7CgkJCQllcnJvclR5cGUgPSAiRkxBU0hfRElTQUJMRUQiOwoJCQl9CgkJCXRoaXMuX2Vycm9yKCB7CgkJCQl0eXBlOiAkLmpQbGF5ZXIuZXJyb3JbZXJyb3JUeXBlXSwKCQkJCWNvbnRleHQ6IHRoaXMuaW50ZXJuYWwuZmxhc2guc3dmLAoJCQkJbWVzc2FnZTogJC5qUGxheWVyLmVycm9yTXNnW2Vycm9yVHlwZV0gKyBlcnJvci5tZXNzYWdlLAoJCQkJaGludDogJC5qUGxheWVyLmVycm9ySGludFtlcnJvclR5cGVdCgkJCX0pOwoJCQkvLyBBbGxvdyB0aGUgYXVkaW8gcGxheWVyIHRvIHJlY292ZXIgaWYgZGlzcGxheTpub25lIGFuZCB0aGVuIHNob3duIGFnYWluLCBvciB3aXRoIHBvc2l0aW9uOmZpeGVkIG9uIEZpcmVmb3guCgkJCS8vIFRoaXMgcmVhbGx5IG9ubHkgYWZmZWN0cyBhdWRpbyBpbiBhIG1lZGlhIHBsYXllciwgYXMgYW4gYXVkaW8gcGxheWVyIGNvdWxkIGVhc2lseSBtb3ZlIHRoZSBqUGxheWVyIGVsZW1lbnQgYXdheSBmcm9tIHN1Y2ggaXNzdWVzLgoJCQl0aGlzLmludGVybmFsLmZsYXNoLmpxLmNzcyh7J3dpZHRoJzonMXB4JywgJ2hlaWdodCc6JzFweCd9KTsKCQl9LAoJCV9lcnJvcjogZnVuY3Rpb24oZXJyb3IpIHsKCQkJdGhpcy5fdHJpZ2dlcigkLmpQbGF5ZXIuZXZlbnQuZXJyb3IsIGVycm9yKTsKCQkJaWYodGhpcy5vcHRpb25zLmVycm9yQWxlcnRzKSB7CgkJCQl0aGlzLl9hbGVydCgiRXJyb3IhIiArIChlcnJvci5tZXNzYWdlID8gIlxuIiArIGVycm9yLm1lc3NhZ2UgOiAiIikgKyAoZXJyb3IuaGludCA/ICJcbiIgKyBlcnJvci5oaW50IDogIiIpICsgIlxuQ29udGV4dDogIiArIGVycm9yLmNvbnRleHQpOwoJCQl9CgkJfSwKCQlfd2FybmluZzogZnVuY3Rpb24od2FybmluZykgewoJCQl0aGlzLl90cmlnZ2VyKCQualBsYXllci5ldmVudC53YXJuaW5nLCB1bmRlZmluZWQsIHdhcm5pbmcpOwoJCQlpZih0aGlzLm9wdGlvbnMud2FybmluZ0FsZXJ0cykgewoJCQkJdGhpcy5fYWxlcnQoIldhcm5pbmchIiArICh3YXJuaW5nLm1lc3NhZ2UgPyAiXG4iICsgd2FybmluZy5tZXNzYWdlIDogIiIpICsgKHdhcm5pbmcuaGludCA/ICJcbiIgKyB3YXJuaW5nLmhpbnQgOiAiIikgKyAiXG5Db250ZXh0OiAiICsgd2FybmluZy5jb250ZXh0KTsKCQkJfQoJCX0sCgkJX2FsZXJ0OiBmdW5jdGlvbihtZXNzYWdlKSB7CgkJCXZhciBtc2cgPSAialBsYXllciAiICsgdGhpcy52ZXJzaW9uLnNjcmlwdCArICIgOiBpZD0nIiArIHRoaXMuaW50ZXJuYWwuc2VsZi5pZCArIicgOiAiICsgbWVzc2FnZTsKCQkJaWYoIXRoaXMub3B0aW9ucy5jb25zb2xlQWxlcnRzKSB7CgkJCQlhbGVydChtc2cpOwoJCQl9IGVsc2UgaWYod2luZG93LmNvbnNvbGUgJiYgd2luZG93LmNvbnNvbGUubG9nKSB7CgkJCQl3aW5kb3cuY29uc29sZS5sb2cobXNnKTsKCQkJfQoJCX0sCgkJX2VtdWxhdGVIdG1sQnJpZGdlOiBmdW5jdGlvbigpIHsKCQkJdmFyIHNlbGYgPSB0aGlzOwoKCQkJLy8gRW11bGF0ZSBtZXRob2RzIG9uIGpQbGF5ZXIncyBET00gZWxlbWVudC4KCQkJJC5lYWNoKCAkLmpQbGF5ZXIuZW11bGF0ZU1ldGhvZHMuc3BsaXQoL1xzKy9nKSwgZnVuY3Rpb24oaSwgbmFtZSkgewoJCQkJc2VsZi5pbnRlcm5hbC5kb21Ob2RlW25hbWVdID0gZnVuY3Rpb24oYXJnKSB7CgkJCQkJc2VsZltuYW1lXShhcmcpOwoJCQkJfTsKCgkJCX0pOwoKCQkJLy8gQnViYmxlIGpQbGF5ZXIgZXZlbnRzIHRvIGl0cyBET00gZWxlbWVudC4KCQkJJC5lYWNoKCQualBsYXllci5ldmVudCwgZnVuY3Rpb24oZXZlbnROYW1lLGV2ZW50VHlwZSkgewoJCQkJdmFyIG5hdGl2ZUV2ZW50ID0gdHJ1ZTsKCQkJCSQuZWFjaCggJC5qUGxheWVyLnJlc2VydmVkRXZlbnQuc3BsaXQoL1xzKy9nKSwgZnVuY3Rpb24oaSwgbmFtZSkgewoJCQkJCWlmKG5hbWUgPT09IGV2ZW50TmFtZSkgewoJCQkJCQluYXRpdmVFdmVudCA9IGZhbHNlOwoJCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQkJfQoJCQkJfSk7CgkJCQlpZihuYXRpdmVFdmVudCkgewoJCQkJCXNlbGYuZWxlbWVudC5iaW5kKGV2ZW50VHlwZSArICIualBsYXllci5qUGxheWVySHRtbCIsIGZ1bmN0aW9uKCkgeyAvLyBXaXRoIC5qUGxheWVyICYgLmpQbGF5ZXJIdG1sIG5hbWVzcGFjZXMuCgkJCQkJCXNlbGYuX2VtdWxhdGVIdG1sVXBkYXRlKCk7CgkJCQkJCXZhciBkb21FdmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJFdmVudCIpOwoJCQkJCQlkb21FdmVudC5pbml0RXZlbnQoZXZlbnROYW1lLCBmYWxzZSwgdHJ1ZSk7CgkJCQkJCXNlbGYuaW50ZXJuYWwuZG9tTm9kZS5kaXNwYXRjaEV2ZW50KGRvbUV2ZW50KTsKCQkJCQl9KTsKCQkJCX0KCQkJCS8vIFRoZSBlcnJvciBldmVudCB3b3VsZCByZXF1aXJlIGEgc3BlY2lhbCBjYXNlCgkJCX0pOwoKCQkJLy8gSUU5IGhhcyBhIHJlYWR5U3RhdGUgcHJvcGVydHkgb24gYWxsIGVsZW1lbnRzLiBUaGUgZG9jdW1lbnQgc2hvdWxkIGhhdmUgaXQsIGJ1dCBhbGwgKGV4Y2VwdCBtZWRpYSkgZWxlbWVudHMgaW5oZXJpdCBpdCBpbiBJRTkuIFRoaXMgY29uZmxpY3RzIHdpdGggUG9wY29ybiwgd2hpY2ggcG9sbHMgdGhlIHJlYWR5U3RhdGUuCgkJfSwKCQlfZW11bGF0ZUh0bWxVcGRhdGU6IGZ1bmN0aW9uKCkgewoJCQl2YXIgc2VsZiA9IHRoaXM7CgoJCQkkLmVhY2goICQualBsYXllci5lbXVsYXRlU3RhdHVzLnNwbGl0KC9ccysvZyksIGZ1bmN0aW9uKGksIG5hbWUpIHsKCQkJCXNlbGYuaW50ZXJuYWwuZG9tTm9kZVtuYW1lXSA9IHNlbGYuc3RhdHVzW25hbWVdOwoJCQl9KTsKCQkJJC5lYWNoKCAkLmpQbGF5ZXIuZW11bGF0ZU9wdGlvbnMuc3BsaXQoL1xzKy9nKSwgZnVuY3Rpb24oaSwgbmFtZSkgewoJCQkJc2VsZi5pbnRlcm5hbC5kb21Ob2RlW25hbWVdID0gc2VsZi5vcHRpb25zW25hbWVdOwoJCQl9KTsKCQl9LAoJCV9kZXN0cm95SHRtbEJyaWRnZTogZnVuY3Rpb24oKSB7CgkJCXZhciBzZWxmID0gdGhpczsKCgkJCS8vIEJyaWRnZSBldmVudCBoYW5kbGVycyBhcmUgYWxzbyByZW1vdmVkIGJ5IGRlc3Ryb3koKSB0aHJvdWdoIC5qUGxheWVyIG5hbWVzcGFjZS4KCQkJdGhpcy5lbGVtZW50LnVuYmluZCgiLmpQbGF5ZXJIdG1sIik7IC8vIFJlbW92ZSBhbGwgZXZlbnQgaGFuZGxlcnMgY3JlYXRlZCBieSB0aGUgalBsYXllciBicmlkZ2UuIFNvIHlvdSBjYW4gY2hhbmdlIHRoZSBlbXVsYXRlSHRtbCBvcHRpb24uCgoJCQkvLyBSZW1vdmUgdGhlIG1ldGhvZHMgYW5kIHByb3BlcnRpZXMKCQkJdmFyIGVtdWxhdGVkID0gJC5qUGxheWVyLmVtdWxhdGVNZXRob2RzICsgIiAiICsgJC5qUGxheWVyLmVtdWxhdGVTdGF0dXMgKyAiICIgKyAkLmpQbGF5ZXIuZW11bGF0ZU9wdGlvbnM7CgkJCSQuZWFjaCggZW11bGF0ZWQuc3BsaXQoL1xzKy9nKSwgZnVuY3Rpb24oaSwgbmFtZSkgewoJCQkJZGVsZXRlIHNlbGYuaW50ZXJuYWwuZG9tTm9kZVtuYW1lXTsKCQkJfSk7CgkJfQoJfTsKCgkkLmpQbGF5ZXIuZXJyb3IgPSB7CgkJRkxBU0g6ICJlX2ZsYXNoIiwKCQlGTEFTSF9ESVNBQkxFRDogImVfZmxhc2hfZGlzYWJsZWQiLAoJCU5PX1NPTFVUSU9OOiAiZV9ub19zb2x1dGlvbiIsCgkJTk9fU1VQUE9SVDogImVfbm9fc3VwcG9ydCIsCgkJVVJMOiAiZV91cmwiLAoJCVVSTF9OT1RfU0VUOiAiZV91cmxfbm90X3NldCIsCgkJVkVSU0lPTjogImVfdmVyc2lvbiIKCX07CgoJJC5qUGxheWVyLmVycm9yTXNnID0gewoJCUZMQVNIOiAialBsYXllcidzIEZsYXNoIGZhbGxiYWNrIGlzIG5vdCBjb25maWd1cmVkIGNvcnJlY3RseSwgb3IgYSBjb21tYW5kIHdhcyBpc3N1ZWQgYmVmb3JlIHRoZSBqUGxheWVyIFJlYWR5IGV2ZW50LiBEZXRhaWxzOiAiLCAvLyBVc2VkIGluOiBfZmxhc2hFcnJvcigpCgkJRkxBU0hfRElTQUJMRUQ6ICJqUGxheWVyJ3MgRmxhc2ggZmFsbGJhY2sgaGFzIGJlZW4gZGlzYWJsZWQgYnkgdGhlIGJyb3dzZXIgZHVlIHRvIHRoZSBDU1MgcnVsZXMgeW91IGhhdmUgdXNlZC4gRGV0YWlsczogIiwgLy8gVXNlZCBpbjogX2ZsYXNoRXJyb3IoKQoJCU5PX1NPTFVUSU9OOiAiTm8gc29sdXRpb24gY2FuIGJlIGZvdW5kIGJ5IGpQbGF5ZXIgaW4gdGhpcyBicm93c2VyLiBOZWl0aGVyIEhUTUwgbm9yIEZsYXNoIGNhbiBiZSB1c2VkLiIsIC8vIFVzZWQgaW46IF9pbml0KCkKCQlOT19TVVBQT1JUOiAiSXQgaXMgbm90IHBvc3NpYmxlIHRvIHBsYXkgYW55IG1lZGlhIGZvcm1hdCBwcm92aWRlZCBpbiBzZXRNZWRpYSgpIG9uIHRoaXMgYnJvd3NlciB1c2luZyB5b3VyIGN1cnJlbnQgb3B0aW9ucy4iLCAvLyBVc2VkIGluOiBzZXRNZWRpYSgpCgkJVVJMOiAiTWVkaWEgVVJMIGNvdWxkIG5vdCBiZSBsb2FkZWQuIiwgLy8gVXNlZCBpbjogalBsYXllckZsYXNoRXZlbnQoKSBhbmQgX2FkZEh0bWxFdmVudExpc3RlbmVycygpCgkJVVJMX05PVF9TRVQ6ICJBdHRlbXB0IHRvIGlzc3VlIG1lZGlhIHBsYXliYWNrIGNvbW1hbmRzLCB3aGlsZSBubyBtZWRpYSB1cmwgaXMgc2V0LiIsIC8vIFVzZWQgaW46IGxvYWQoKSwgcGxheSgpLCBwYXVzZSgpLCBzdG9wKCkgYW5kIHBsYXlIZWFkKCkKCQlWRVJTSU9OOiAialBsYXllciAiICsgJC5qUGxheWVyLnByb3RvdHlwZS52ZXJzaW9uLnNjcmlwdCArICIgbmVlZHMgSnBsYXllci5zd2YgdmVyc2lvbiAiICsgJC5qUGxheWVyLnByb3RvdHlwZS52ZXJzaW9uLm5lZWRGbGFzaCArICIgYnV0IGZvdW5kICIgLy8gVXNlZCBpbjogalBsYXllclJlYWR5KCkKCX07CgoJJC5qUGxheWVyLmVycm9ySGludCA9IHsKCQlGTEFTSDogIkNoZWNrIHlvdXIgc3dmUGF0aCBvcHRpb24gYW5kIHRoYXQgSnBsYXllci5zd2YgaXMgdGhlcmUuIiwKCQlGTEFTSF9ESVNBQkxFRDogIkNoZWNrIHRoYXQgeW91IGhhdmUgbm90IGRpc3BsYXk6bm9uZTsgdGhlIGpQbGF5ZXIgZW50aXR5IG9yIGFueSBhbmNlc3Rvci4iLAoJCU5PX1NPTFVUSU9OOiAiUmV2aWV3IHRoZSBqUGxheWVyIG9wdGlvbnM6IHN1cHBvcnQgYW5kIHN1cHBsaWVkLiIsCgkJTk9fU1VQUE9SVDogIlZpZGVvIG9yIGF1ZGlvIGZvcm1hdHMgZGVmaW5lZCBpbiB0aGUgc3VwcGxpZWQgb3B0aW9uIGFyZSBtaXNzaW5nLiIsCgkJVVJMOiAiQ2hlY2sgbWVkaWEgVVJMIGlzIHZhbGlkLiIsCgkJVVJMX05PVF9TRVQ6ICJVc2Ugc2V0TWVkaWEoKSB0byBzZXQgdGhlIG1lZGlhIFVSTC4iLAoJCVZFUlNJT046ICJVcGRhdGUgalBsYXllciBmaWxlcy4iCgl9OwoKCSQualBsYXllci53YXJuaW5nID0gewoJCUNTU19TRUxFQ1RPUl9DT1VOVDogImVfY3NzX3NlbGVjdG9yX2NvdW50IiwKCQlDU1NfU0VMRUNUT1JfTUVUSE9EOiAiZV9jc3Nfc2VsZWN0b3JfbWV0aG9kIiwKCQlDU1NfU0VMRUNUT1JfU1RSSU5HOiAiZV9jc3Nfc2VsZWN0b3Jfc3RyaW5nIiwKCQlPUFRJT05fS0VZOiAiZV9vcHRpb25fa2V5IgoJfTsKCgkkLmpQbGF5ZXIud2FybmluZ01zZyA9IHsKCQlDU1NfU0VMRUNUT1JfQ09VTlQ6ICJUaGUgbnVtYmVyIG9mIGNzcyBzZWxlY3RvcnMgZm91bmQgZGlkIG5vdCBlcXVhbCBvbmU6ICIsCgkJQ1NTX1NFTEVDVE9SX01FVEhPRDogIlRoZSBtZXRob2ROYW1lIGdpdmVuIGluIGpQbGF5ZXIoJ2Nzc1NlbGVjdG9yJykgaXMgbm90IGEgdmFsaWQgalBsYXllciBtZXRob2QuIiwKCQlDU1NfU0VMRUNUT1JfU1RSSU5HOiAiVGhlIG1ldGhvZENzc1NlbGVjdG9yIGdpdmVuIGluIGpQbGF5ZXIoJ2Nzc1NlbGVjdG9yJykgaXMgbm90IGEgU3RyaW5nIG9yIGlzIGVtcHR5LiIsCgkJT1BUSU9OX0tFWTogIlRoZSBvcHRpb24gcmVxdWVzdGVkIGluIGpQbGF5ZXIoJ29wdGlvbicpIGlzIHVuZGVmaW5lZC4iCgl9OwoKCSQualBsYXllci53YXJuaW5nSGludCA9IHsKCQlDU1NfU0VMRUNUT1JfQ09VTlQ6ICJDaGVjayB5b3VyIGNzcyBzZWxlY3RvciBhbmQgdGhlIGFuY2VzdG9yLiIsCgkJQ1NTX1NFTEVDVE9SX01FVEhPRDogIkNoZWNrIHlvdXIgbWV0aG9kIG5hbWUuIiwKCQlDU1NfU0VMRUNUT1JfU1RSSU5HOiAiQ2hlY2sgeW91ciBjc3Mgc2VsZWN0b3IgaXMgYSBzdHJpbmcuIiwKCQlPUFRJT05fS0VZOiAiQ2hlY2sgeW91ciBvcHRpb24gbmFtZS4iCgl9Owp9KSk7Cg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/jplayer/jquery.jplayer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohIGpQbGF5ZXIgMi45LjIgZm9yIGpRdWVyeSB+IChjKSAyMDA5LTIwMTQgSGFwcHl3b3JtIEx0ZCB+IE1JVCBMaWNlbnNlICovCiFmdW5jdGlvbihhLGIpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5Il0sYik6Yigib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHM/cmVxdWlyZSgianF1ZXJ5Iik6YS5qUXVlcnk/YS5qUXVlcnk6YS5aZXB0byl9KHRoaXMsZnVuY3Rpb24oYSxiKXthLmZuLmpQbGF5ZXI9ZnVuY3Rpb24oYyl7dmFyIGQ9ImpQbGF5ZXIiLGU9InN0cmluZyI9PXR5cGVvZiBjLGY9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpLGc9dGhpcztyZXR1cm4gYz0hZSYmZi5sZW5ndGg/YS5leHRlbmQuYXBwbHkobnVsbCxbITAsY10uY29uY2F0KGYpKTpjLGUmJiJfIj09PWMuY2hhckF0KDApP2c6KHRoaXMuZWFjaChlP2Z1bmN0aW9uKCl7dmFyIGU9YSh0aGlzKS5kYXRhKGQpLGg9ZSYmYS5pc0Z1bmN0aW9uKGVbY10pP2VbY10uYXBwbHkoZSxmKTplO3JldHVybiBoIT09ZSYmaCE9PWI/KGc9aCwhMSk6dm9pZCAwfTpmdW5jdGlvbigpe3ZhciBiPWEodGhpcykuZGF0YShkKTtiP2Iub3B0aW9uKGN8fHt9KTphKHRoaXMpLmRhdGEoZCxuZXcgYS5qUGxheWVyKGMsdGhpcykpfSksZyl9LGEualBsYXllcj1mdW5jdGlvbihiLGMpe2lmKGFyZ3VtZW50cy5sZW5ndGgpe3RoaXMuZWxlbWVudD1hKGMpLHRoaXMub3B0aW9ucz1hLmV4dGVuZCghMCx7fSx0aGlzLm9wdGlvbnMsYik7dmFyIGQ9dGhpczt0aGlzLmVsZW1lbnQuYmluZCgicmVtb3ZlLmpQbGF5ZXIiLGZ1bmN0aW9uKCl7ZC5kZXN0cm95KCl9KSx0aGlzLl9pbml0KCl9fSwiZnVuY3Rpb24iIT10eXBlb2YgYS5mbi5zdG9wJiYoYS5mbi5zdG9wPWZ1bmN0aW9uKCl7fSksYS5qUGxheWVyLmVtdWxhdGVNZXRob2RzPSJsb2FkIHBsYXkgcGF1c2UiLGEualBsYXllci5lbXVsYXRlU3RhdHVzPSJzcmMgcmVhZHlTdGF0ZSBuZXR3b3JrU3RhdGUgY3VycmVudFRpbWUgZHVyYXRpb24gcGF1c2VkIGVuZGVkIHBsYXliYWNrUmF0ZSIsYS5qUGxheWVyLmVtdWxhdGVPcHRpb25zPSJtdXRlZCB2b2x1bWUiLGEualBsYXllci5yZXNlcnZlZEV2ZW50PSJyZWFkeSBmbGFzaHJlc2V0IHJlc2l6ZSByZXBlYXQgZXJyb3Igd2FybmluZyIsYS5qUGxheWVyLmV2ZW50PXt9LGEuZWFjaChbInJlYWR5Iiwic2V0bWVkaWEiLCJmbGFzaHJlc2V0IiwicmVzaXplIiwicmVwZWF0IiwiY2xpY2siLCJlcnJvciIsIndhcm5pbmciLCJsb2Fkc3RhcnQiLCJwcm9ncmVzcyIsInN1c3BlbmQiLCJhYm9ydCIsImVtcHRpZWQiLCJzdGFsbGVkIiwicGxheSIsInBhdXNlIiwibG9hZGVkbWV0YWRhdGEiLCJsb2FkZWRkYXRhIiwid2FpdGluZyIsInBsYXlpbmciLCJjYW5wbGF5IiwiY2FucGxheXRocm91Z2giLCJzZWVraW5nIiwic2Vla2VkIiwidGltZXVwZGF0ZSIsImVuZGVkIiwicmF0ZWNoYW5nZSIsImR1cmF0aW9uY2hhbmdlIiwidm9sdW1lY2hhbmdlIl0sZnVuY3Rpb24oKXthLmpQbGF5ZXIuZXZlbnRbdGhpc109ImpQbGF5ZXJfIit0aGlzfSksYS5qUGxheWVyLmh0bWxFdmVudD1bImxvYWRzdGFydCIsImFib3J0IiwiZW1wdGllZCIsInN0YWxsZWQiLCJsb2FkZWRtZXRhZGF0YSIsImNhbnBsYXkiLCJjYW5wbGF5dGhyb3VnaCJdLGEualBsYXllci5wYXVzZT1mdW5jdGlvbigpe2EualBsYXllci5wcm90b3R5cGUuZGVzdHJveVJlbW92ZWQoKSxhLmVhY2goYS5qUGxheWVyLnByb3RvdHlwZS5pbnN0YW5jZXMsZnVuY3Rpb24oYSxiKXtiLmRhdGEoImpQbGF5ZXIiKS5zdGF0dXMuc3JjU2V0JiZiLmpQbGF5ZXIoInBhdXNlIil9KX0sYS5qUGxheWVyLnRpbWVGb3JtYXQ9e3Nob3dIb3VyOiExLHNob3dNaW46ITAsc2hvd1NlYzohMCxwYWRIb3VyOiExLHBhZE1pbjohMCxwYWRTZWM6ITAsc2VwSG91cjoiOiIsc2VwTWluOiI6IixzZXBTZWM6IiJ9O3ZhciBjPWZ1bmN0aW9uKCl7dGhpcy5pbml0KCl9O2MucHJvdG90eXBlPXtpbml0OmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zPXt0aW1lRm9ybWF0OmEualBsYXllci50aW1lRm9ybWF0fX0sdGltZTpmdW5jdGlvbihhKXthPWEmJiJudW1iZXIiPT10eXBlb2YgYT9hOjA7dmFyIGI9bmV3IERhdGUoMWUzKmEpLGM9Yi5nZXRVVENIb3VycygpLGQ9dGhpcy5vcHRpb25zLnRpbWVGb3JtYXQuc2hvd0hvdXI/Yi5nZXRVVENNaW51dGVzKCk6Yi5nZXRVVENNaW51dGVzKCkrNjAqYyxlPXRoaXMub3B0aW9ucy50aW1lRm9ybWF0LnNob3dNaW4/Yi5nZXRVVENTZWNvbmRzKCk6Yi5nZXRVVENTZWNvbmRzKCkrNjAqZCxmPXRoaXMub3B0aW9ucy50aW1lRm9ybWF0LnBhZEhvdXImJjEwPmM/IjAiK2M6YyxnPXRoaXMub3B0aW9ucy50aW1lRm9ybWF0LnBhZE1pbiYmMTA+ZD8iMCIrZDpkLGg9dGhpcy5vcHRpb25zLnRpbWVGb3JtYXQucGFkU2VjJiYxMD5lPyIwIitlOmUsaT0iIjtyZXR1cm4gaSs9dGhpcy5vcHRpb25zLnRpbWVGb3JtYXQuc2hvd0hvdXI/Zit0aGlzLm9wdGlvbnMudGltZUZvcm1hdC5zZXBIb3VyOiIiLGkrPXRoaXMub3B0aW9ucy50aW1lRm9ybWF0LnNob3dNaW4/Zyt0aGlzLm9wdGlvbnMudGltZUZvcm1hdC5zZXBNaW46IiIsaSs9dGhpcy5vcHRpb25zLnRpbWVGb3JtYXQuc2hvd1NlYz9oK3RoaXMub3B0aW9ucy50aW1lRm9ybWF0LnNlcFNlYzoiIn19O3ZhciBkPW5ldyBjO2EualBsYXllci5jb252ZXJ0VGltZT1mdW5jdGlvbihhKXtyZXR1cm4gZC50aW1lKGEpfSxhLmpQbGF5ZXIudWFCcm93c2VyPWZ1bmN0aW9uKGEpe3ZhciBiPWEudG9Mb3dlckNhc2UoKSxjPS8od2Via2l0KVsgXC9dKFtcdy5dKykvLGQ9LyhvcGVyYSkoPzouKnZlcnNpb24pP1sgXC9dKFtcdy5dKykvLGU9Lyhtc2llKSAoW1x3Ll0rKS8sZj0vKG1vemlsbGEpKD86Lio/IHJ2OihbXHcuXSspKT8vLGc9Yy5leGVjKGIpfHxkLmV4ZWMoYil8fGUuZXhlYyhiKXx8Yi5pbmRleE9mKCJjb21wYXRpYmxlIik8MCYmZi5leGVjKGIpfHxbXTtyZXR1cm57YnJvd3NlcjpnWzFdfHwiIix2ZXJzaW9uOmdbMl18fCIwIn19LGEualBsYXllci51YVBsYXRmb3JtPWZ1bmN0aW9uKGEpe3ZhciBiPWEudG9Mb3dlckNhc2UoKSxjPS8oaXBhZHxpcGhvbmV8aXBvZHxhbmRyb2lkfGJsYWNrYmVycnl8cGxheWJvb2t8d2luZG93cyBjZXx3ZWJvcykvLGQ9LyhpcGFkfHBsYXlib29rKS8sZT0vKGFuZHJvaWQpLyxmPS8obW9iaWxlKS8sZz1jLmV4ZWMoYil8fFtdLGg9ZC5leGVjKGIpfHwhZi5leGVjKGIpJiZlLmV4ZWMoYil8fFtdO3JldHVybiBnWzFdJiYoZ1sxXT1nWzFdLnJlcGxhY2UoL1xzL2csIl8iKSkse3BsYXRmb3JtOmdbMV18fCIiLHRhYmxldDpoWzFdfHwiIn19LGEualBsYXllci5icm93c2VyPXt9LGEualBsYXllci5wbGF0Zm9ybT17fTt2YXIgZT1hLmpQbGF5ZXIudWFCcm93c2VyKG5hdmlnYXRvci51c2VyQWdlbnQpO2UuYnJvd3NlciYmKGEualBsYXllci5icm93c2VyW2UuYnJvd3Nlcl09ITAsYS5qUGxheWVyLmJyb3dzZXIudmVyc2lvbj1lLnZlcnNpb24pO3ZhciBmPWEualBsYXllci51YVBsYXRmb3JtKG5hdmlnYXRvci51c2VyQWdlbnQpO2YucGxhdGZvcm0mJihhLmpQbGF5ZXIucGxhdGZvcm1bZi5wbGF0Zm9ybV09ITAsYS5qUGxheWVyLnBsYXRmb3JtLm1vYmlsZT0hZi50YWJsZXQsYS5qUGxheWVyLnBsYXRmb3JtLnRhYmxldD0hIWYudGFibGV0KSxhLmpQbGF5ZXIuZ2V0RG9jTW9kZT1mdW5jdGlvbigpe3ZhciBiO3JldHVybiBhLmpQbGF5ZXIuYnJvd3Nlci5tc2llJiYoZG9jdW1lbnQuZG9jdW1lbnRNb2RlP2I9ZG9jdW1lbnQuZG9jdW1lbnRNb2RlOihiPTUsZG9jdW1lbnQuY29tcGF0TW9kZSYmIkNTUzFDb21wYXQiPT09ZG9jdW1lbnQuY29tcGF0TW9kZSYmKGI9NykpKSxifSxhLmpQbGF5ZXIuYnJvd3Nlci5kb2N1bWVudE1vZGU9YS5qUGxheWVyLmdldERvY01vZGUoKSxhLmpQbGF5ZXIubmF0aXZlRmVhdHVyZXM9e2luaXQ6ZnVuY3Rpb24oKXt2YXIgYSxiLGMsZD1kb2N1bWVudCxlPWQuY3JlYXRlRWxlbWVudCgidmlkZW8iKSxmPXt3M2M6WyJmdWxsc2NyZWVuRW5hYmxlZCIsImZ1bGxzY3JlZW5FbGVtZW50IiwicmVxdWVzdEZ1bGxzY3JlZW4iLCJleGl0RnVsbHNjcmVlbiIsImZ1bGxzY3JlZW5jaGFuZ2UiLCJmdWxsc2NyZWVuZXJyb3IiXSxtb3o6WyJtb3pGdWxsU2NyZWVuRW5hYmxlZCIsIm1vekZ1bGxTY3JlZW5FbGVtZW50IiwibW96UmVxdWVzdEZ1bGxTY3JlZW4iLCJtb3pDYW5jZWxGdWxsU2NyZWVuIiwibW96ZnVsbHNjcmVlbmNoYW5nZSIsIm1vemZ1bGxzY3JlZW5lcnJvciJdLHdlYmtpdDpbIiIsIndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCIsIndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuIiwid2Via2l0Q2FuY2VsRnVsbFNjcmVlbiIsIndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UiLCIiXSx3ZWJraXRWaWRlbzpbIndlYmtpdFN1cHBvcnRzRnVsbHNjcmVlbiIsIndlYmtpdERpc3BsYXlpbmdGdWxsc2NyZWVuIiwid2Via2l0RW50ZXJGdWxsc2NyZWVuIiwid2Via2l0RXhpdEZ1bGxzY3JlZW4iLCIiLCIiXSxtczpbIiIsIm1zRnVsbHNjcmVlbkVsZW1lbnQiLCJtc1JlcXVlc3RGdWxsc2NyZWVuIiwibXNFeGl0RnVsbHNjcmVlbiIsIk1TRnVsbHNjcmVlbkNoYW5nZSIsIk1TRnVsbHNjcmVlbkVycm9yIl19LGc9WyJ3M2MiLCJtb3oiLCJ3ZWJraXQiLCJ3ZWJraXRWaWRlbyIsIm1zIl07Zm9yKHRoaXMuZnVsbHNjcmVlbj1hPXtzdXBwb3J0Ont3M2M6ISFkW2YudzNjWzBdXSxtb3o6ISFkW2YubW96WzBdXSx3ZWJraXQ6ImZ1bmN0aW9uIj09dHlwZW9mIGRbZi53ZWJraXRbM11dLHdlYmtpdFZpZGVvOiJmdW5jdGlvbiI9PXR5cGVvZiBlW2Yud2Via2l0VmlkZW9bMl1dLG1zOiJmdW5jdGlvbiI9PXR5cGVvZiBlW2YubXNbMl1dfSx1c2VkOnt9fSxiPTAsYz1nLmxlbmd0aDtjPmI7YisrKXt2YXIgaD1nW2JdO2lmKGEuc3VwcG9ydFtoXSl7YS5zcGVjPWgsYS51c2VkW2hdPSEwO2JyZWFrfX1pZihhLnNwZWMpe3ZhciBpPWZbYS5zcGVjXTthLmFwaT17ZnVsbHNjcmVlbkVuYWJsZWQ6ITAsZnVsbHNjcmVlbkVsZW1lbnQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9YT9hOmQsYVtpWzFdXX0scmVxdWVzdEZ1bGxzY3JlZW46ZnVuY3Rpb24oYSl7cmV0dXJuIGFbaVsyXV0oKX0sZXhpdEZ1bGxzY3JlZW46ZnVuY3Rpb24oYSl7cmV0dXJuIGE9YT9hOmQsYVtpWzNdXSgpfX0sYS5ldmVudD17ZnVsbHNjcmVlbmNoYW5nZTppWzRdLGZ1bGxzY3JlZW5lcnJvcjppWzVdfX1lbHNlIGEuYXBpPXtmdWxsc2NyZWVuRW5hYmxlZDohMSxmdWxsc2NyZWVuRWxlbWVudDpmdW5jdGlvbigpe3JldHVybiBudWxsfSxyZXF1ZXN0RnVsbHNjcmVlbjpmdW5jdGlvbigpe30sZXhpdEZ1bGxzY3JlZW46ZnVuY3Rpb24oKXt9fSxhLmV2ZW50PXt9fX0sYS5qUGxheWVyLm5hdGl2ZUZlYXR1cmVzLmluaXQoKSxhLmpQbGF5ZXIuZm9jdXM9bnVsbCxhLmpQbGF5ZXIua2V5SWdub3JlRWxlbWVudE5hbWVzPSJBIElOUFVUIFRFWFRBUkVBIFNFTEVDVCBCVVRUT04iO3ZhciBnPWZ1bmN0aW9uKGIpe3ZhciBjLGQ9YS5qUGxheWVyLmZvY3VzO2QmJihhLmVhY2goYS5qUGxheWVyLmtleUlnbm9yZUVsZW1lbnROYW1lcy5zcGxpdCgvXHMrL2cpLGZ1bmN0aW9uKGEsZCl7cmV0dXJuIGIudGFyZ2V0Lm5vZGVOYW1lLnRvVXBwZXJDYXNlKCk9PT1kLnRvVXBwZXJDYXNlKCk/KGM9ITAsITEpOnZvaWQgMH0pLGN8fGEuZWFjaChkLm9wdGlvbnMua2V5QmluZGluZ3MsZnVuY3Rpb24oYyxlKXtyZXR1cm4gZSYmYS5pc0Z1bmN0aW9uKGUuZm4pJiYoIm51bWJlciI9PXR5cGVvZiBlLmtleSYmYi53aGljaD09PWUua2V5fHwic3RyaW5nIj09dHlwZW9mIGUua2V5JiZiLmtleT09PWUua2V5KT8oYi5wcmV2ZW50RGVmYXVsdCgpLGUuZm4oZCksITEpOnZvaWQgMH0pKX07YS5qUGxheWVyLmtleXM9ZnVuY3Rpb24oYil7dmFyIGM9ImtleWRvd24ualBsYXllciI7YShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLnVuYmluZChjKSxiJiZhKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkuYmluZChjLGcpfSxhLmpQbGF5ZXIua2V5cyghMCksYS5qUGxheWVyLnByb3RvdHlwZT17Y291bnQ6MCx2ZXJzaW9uOntzY3JpcHQ6IjIuOS4yIixuZWVkRmxhc2g6IjIuOS4wIixmbGFzaDoidW5rbm93biJ9LG9wdGlvbnM6e3N3ZlBhdGg6ImpzIixzb2x1dGlvbjoiaHRtbCwgZmxhc2giLHN1cHBsaWVkOiJtcDMiLGF1cm9yYUZvcm1hdHM6IndhdiIscHJlbG9hZDoibWV0YWRhdGEiLHZvbHVtZTouOCxtdXRlZDohMSxyZW1haW5pbmdEdXJhdGlvbjohMSx0b2dnbGVEdXJhdGlvbjohMSxjYXB0dXJlRHVyYXRpb246ITAscGxheWJhY2tSYXRlOjEsZGVmYXVsdFBsYXliYWNrUmF0ZToxLG1pblBsYXliYWNrUmF0ZTouNSxtYXhQbGF5YmFja1JhdGU6NCx3bW9kZToib3BhcXVlIixiYWNrZ3JvdW5kQ29sb3I6IiMwMDAwMDAiLGNzc1NlbGVjdG9yQW5jZXN0b3I6IiNqcF9jb250YWluZXJfMSIsY3NzU2VsZWN0b3I6e3ZpZGVvUGxheToiLmpwLXZpZGVvLXBsYXkiLHBsYXk6Ii5qcC1wbGF5IixwYXVzZToiLmpwLXBhdXNlIixzdG9wOiIuanAtc3RvcCIsc2Vla0JhcjoiLmpwLXNlZWstYmFyIixwbGF5QmFyOiIuanAtcGxheS1iYXIiLG11dGU6Ii5qcC1tdXRlIix1bm11dGU6Ii5qcC11bm11dGUiLHZvbHVtZUJhcjoiLmpwLXZvbHVtZS1iYXIiLHZvbHVtZUJhclZhbHVlOiIuanAtdm9sdW1lLWJhci12YWx1ZSIsdm9sdW1lTWF4OiIuanAtdm9sdW1lLW1heCIscGxheWJhY2tSYXRlQmFyOiIuanAtcGxheWJhY2stcmF0ZS1iYXIiLHBsYXliYWNrUmF0ZUJhclZhbHVlOiIuanAtcGxheWJhY2stcmF0ZS1iYXItdmFsdWUiLGN1cnJlbnRUaW1lOiIuanAtY3VycmVudC10aW1lIixkdXJhdGlvbjoiLmpwLWR1cmF0aW9uIix0aXRsZToiLmpwLXRpdGxlIixmdWxsU2NyZWVuOiIuanAtZnVsbC1zY3JlZW4iLHJlc3RvcmVTY3JlZW46Ii5qcC1yZXN0b3JlLXNjcmVlbiIscmVwZWF0OiIuanAtcmVwZWF0IixyZXBlYXRPZmY6Ii5qcC1yZXBlYXQtb2ZmIixndWk6Ii5qcC1ndWkiLG5vU29sdXRpb246Ii5qcC1uby1zb2x1dGlvbiJ9LHN0YXRlQ2xhc3M6e3BsYXlpbmc6ImpwLXN0YXRlLXBsYXlpbmciLHNlZWtpbmc6ImpwLXN0YXRlLXNlZWtpbmciLG11dGVkOiJqcC1zdGF0ZS1tdXRlZCIsbG9vcGVkOiJqcC1zdGF0ZS1sb29wZWQiLGZ1bGxTY3JlZW46ImpwLXN0YXRlLWZ1bGwtc2NyZWVuIixub1ZvbHVtZToianAtc3RhdGUtbm8tdm9sdW1lIn0sdXNlU3RhdGVDbGFzc1NraW46ITEsYXV0b0JsdXI6ITAsc21vb3RoUGxheUJhcjohMSxmdWxsU2NyZWVuOiExLGZ1bGxXaW5kb3c6ITEsYXV0b2hpZGU6e3Jlc3RvcmVkOiExLGZ1bGw6ITAsZmFkZUluOjIwMCxmYWRlT3V0OjYwMCxob2xkOjFlM30sbG9vcDohMSxyZXBlYXQ6ZnVuY3Rpb24oYil7Yi5qUGxheWVyLm9wdGlvbnMubG9vcD9hKHRoaXMpLnVuYmluZCgiLmpQbGF5ZXJSZXBlYXQiKS5iaW5kKGEualBsYXllci5ldmVudC5lbmRlZCsiLmpQbGF5ZXIualBsYXllclJlcGVhdCIsZnVuY3Rpb24oKXthKHRoaXMpLmpQbGF5ZXIoInBsYXkiKX0pOmEodGhpcykudW5iaW5kKCIualBsYXllclJlcGVhdCIpfSxuYXRpdmVWaWRlb0NvbnRyb2xzOnt9LG5vRnVsbFdpbmRvdzp7bXNpZTovbXNpZSBbMC02XVwuLyxpcGFkOi9pcGFkLio/b3MgWzAtNF1cLi8saXBob25lOi9pcGhvbmUvLGlwb2Q6L2lwb2QvLGFuZHJvaWRfcGFkOi9hbmRyb2lkIFswLTNdXC4oPyEuKj9tb2JpbGUpLyxhbmRyb2lkX3Bob25lOi8oPz0uKmFuZHJvaWQpKD8hLipjaHJvbWUpKD89Liptb2JpbGUpLyxibGFja2JlcnJ5Oi9ibGFja2JlcnJ5Lyx3aW5kb3dzX2NlOi93aW5kb3dzIGNlLyxpZW1vYmlsZTovaWVtb2JpbGUvLHdlYm9zOi93ZWJvcy99LG5vVm9sdW1lOntpcGFkOi9pcGFkLyxpcGhvbmU6L2lwaG9uZS8saXBvZDovaXBvZC8sYW5kcm9pZF9wYWQ6L2FuZHJvaWQoPyEuKj9tb2JpbGUpLyxhbmRyb2lkX3Bob25lOi9hbmRyb2lkLio/bW9iaWxlLyxibGFja2JlcnJ5Oi9ibGFja2JlcnJ5Lyx3aW5kb3dzX2NlOi93aW5kb3dzIGNlLyxpZW1vYmlsZTovaWVtb2JpbGUvLHdlYm9zOi93ZWJvcy8scGxheWJvb2s6L3BsYXlib29rL30sdGltZUZvcm1hdDp7fSxrZXlFbmFibGVkOiExLGF1ZGlvRnVsbFNjcmVlbjohMSxrZXlCaW5kaW5nczp7cGxheTp7a2V5OjgwLGZuOmZ1bmN0aW9uKGEpe2Euc3RhdHVzLnBhdXNlZD9hLnBsYXkoKTphLnBhdXNlKCl9fSxmdWxsU2NyZWVuOntrZXk6NzAsZm46ZnVuY3Rpb24oYSl7KGEuc3RhdHVzLnZpZGVvfHxhLm9wdGlvbnMuYXVkaW9GdWxsU2NyZWVuKSYmYS5fc2V0T3B0aW9uKCJmdWxsU2NyZWVuIiwhYS5vcHRpb25zLmZ1bGxTY3JlZW4pfX0sbXV0ZWQ6e2tleTo3NyxmbjpmdW5jdGlvbihhKXthLl9tdXRlZCghYS5vcHRpb25zLm11dGVkKX19LHZvbHVtZVVwOntrZXk6MTkwLGZuOmZ1bmN0aW9uKGEpe2Eudm9sdW1lKGEub3B0aW9ucy52b2x1bWUrLjEpfX0sdm9sdW1lRG93bjp7a2V5OjE4OCxmbjpmdW5jdGlvbihhKXthLnZvbHVtZShhLm9wdGlvbnMudm9sdW1lLS4xKX19LGxvb3A6e2tleTo3NixmbjpmdW5jdGlvbihhKXthLl9sb29wKCFhLm9wdGlvbnMubG9vcCl9fX0sdmVydGljYWxWb2x1bWU6ITEsdmVydGljYWxQbGF5YmFja1JhdGU6ITEsZ2xvYmFsVm9sdW1lOiExLGlkUHJlZml4OiJqcCIsbm9Db25mbGljdDoialF1ZXJ5IixlbXVsYXRlSHRtbDohMSxjb25zb2xlQWxlcnRzOiEwLGVycm9yQWxlcnRzOiExLHdhcm5pbmdBbGVydHM6ITF9LG9wdGlvbnNBdWRpbzp7c2l6ZTp7d2lkdGg6IjBweCIsaGVpZ2h0OiIwcHgiLGNzc0NsYXNzOiIifSxzaXplRnVsbDp7d2lkdGg6IjBweCIsaGVpZ2h0OiIwcHgiLGNzc0NsYXNzOiIifX0sb3B0aW9uc1ZpZGVvOntzaXplOnt3aWR0aDoiNDgwcHgiLGhlaWdodDoiMjcwcHgiLGNzc0NsYXNzOiJqcC12aWRlby0yNzBwIn0sc2l6ZUZ1bGw6e3dpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLGNzc0NsYXNzOiJqcC12aWRlby1mdWxsIn19LGluc3RhbmNlczp7fSxzdGF0dXM6e3NyYzoiIixtZWRpYTp7fSxwYXVzZWQ6ITAsZm9ybWF0Ont9LGZvcm1hdFR5cGU6IiIsd2FpdEZvclBsYXk6ITAsd2FpdEZvckxvYWQ6ITAsc3JjU2V0OiExLHZpZGVvOiExLHNlZWtQZXJjZW50OjAsY3VycmVudFBlcmNlbnRSZWxhdGl2ZTowLGN1cnJlbnRQZXJjZW50QWJzb2x1dGU6MCxjdXJyZW50VGltZTowLGR1cmF0aW9uOjAscmVtYWluaW5nOjAsdmlkZW9XaWR0aDowLHZpZGVvSGVpZ2h0OjAscmVhZHlTdGF0ZTowLG5ldHdvcmtTdGF0ZTowLHBsYXliYWNrUmF0ZToxLGVuZGVkOjB9LGludGVybmFsOntyZWFkeTohMX0sc29sdXRpb246e2h0bWw6ITAsYXVyb3JhOiEwLGZsYXNoOiEwfSxmb3JtYXQ6e21wMzp7Y29kZWM6ImF1ZGlvL21wZWciLGZsYXNoQ2FuUGxheTohMCxtZWRpYToiYXVkaW8ifSxtNGE6e2NvZGVjOidhdWRpby9tcDQ7IGNvZGVjcz0ibXA0YS40MC4yIicsZmxhc2hDYW5QbGF5OiEwLG1lZGlhOiJhdWRpbyJ9LG0zdThhOntjb2RlYzonYXBwbGljYXRpb24vdm5kLmFwcGxlLm1wZWd1cmw7IGNvZGVjcz0ibXA0YS40MC4yIicsZmxhc2hDYW5QbGF5OiExLG1lZGlhOiJhdWRpbyJ9LG0zdWE6e2NvZGVjOiJhdWRpby9tcGVndXJsIixmbGFzaENhblBsYXk6ITEsbWVkaWE6ImF1ZGlvIn0sb2dhOntjb2RlYzonYXVkaW8vb2dnOyBjb2RlY3M9InZvcmJpcywgb3B1cyInLGZsYXNoQ2FuUGxheTohMSxtZWRpYToiYXVkaW8ifSxmbGFjOntjb2RlYzoiYXVkaW8veC1mbGFjIixmbGFzaENhblBsYXk6ITEsbWVkaWE6ImF1ZGlvIn0sd2F2Ontjb2RlYzonYXVkaW8vd2F2OyBjb2RlY3M9IjEiJyxmbGFzaENhblBsYXk6ITEsbWVkaWE6ImF1ZGlvIn0sd2VibWE6e2NvZGVjOidhdWRpby93ZWJtOyBjb2RlY3M9InZvcmJpcyInLGZsYXNoQ2FuUGxheTohMSxtZWRpYToiYXVkaW8ifSxmbGE6e2NvZGVjOiJhdWRpby94LWZsdiIsZmxhc2hDYW5QbGF5OiEwLG1lZGlhOiJhdWRpbyJ9LHJ0bXBhOntjb2RlYzonYXVkaW8vcnRtcDsgY29kZWNzPSJydG1wIicsZmxhc2hDYW5QbGF5OiEwLG1lZGlhOiJhdWRpbyJ9LG00djp7Y29kZWM6J3ZpZGVvL21wNDsgY29kZWNzPSJhdmMxLjQyRTAxRSwgbXA0YS40MC4yIicsZmxhc2hDYW5QbGF5OiEwLG1lZGlhOiJ2aWRlbyJ9LG0zdTh2Ontjb2RlYzonYXBwbGljYXRpb24vdm5kLmFwcGxlLm1wZWd1cmw7IGNvZGVjcz0iYXZjMS40MkUwMUUsIG1wNGEuNDAuMiInLGZsYXNoQ2FuUGxheTohMSxtZWRpYToidmlkZW8ifSxtM3V2Ontjb2RlYzoiYXVkaW8vbXBlZ3VybCIsZmxhc2hDYW5QbGF5OiExLG1lZGlhOiJ2aWRlbyJ9LG9ndjp7Y29kZWM6J3ZpZGVvL29nZzsgY29kZWNzPSJ0aGVvcmEsIHZvcmJpcyInLGZsYXNoQ2FuUGxheTohMSxtZWRpYToidmlkZW8ifSx3ZWJtdjp7Y29kZWM6J3ZpZGVvL3dlYm07IGNvZGVjcz0idm9yYmlzLCB2cDgiJyxmbGFzaENhblBsYXk6ITEsbWVkaWE6InZpZGVvIn0sZmx2Ontjb2RlYzoidmlkZW8veC1mbHYiLGZsYXNoQ2FuUGxheTohMCxtZWRpYToidmlkZW8ifSxydG1wdjp7Y29kZWM6J3ZpZGVvL3J0bXA7IGNvZGVjcz0icnRtcCInLGZsYXNoQ2FuUGxheTohMCxtZWRpYToidmlkZW8ifX0sX2luaXQ6ZnVuY3Rpb24oKXt2YXIgYz10aGlzO2lmKHRoaXMuZWxlbWVudC5lbXB0eSgpLHRoaXMuc3RhdHVzPWEuZXh0ZW5kKHt9LHRoaXMuc3RhdHVzKSx0aGlzLmludGVybmFsPWEuZXh0ZW5kKHt9LHRoaXMuaW50ZXJuYWwpLHRoaXMub3B0aW9ucy50aW1lRm9ybWF0PWEuZXh0ZW5kKHt9LGEualBsYXllci50aW1lRm9ybWF0LHRoaXMub3B0aW9ucy50aW1lRm9ybWF0KSx0aGlzLmludGVybmFsLmNtZHNJZ25vcmVkPWEualBsYXllci5wbGF0Zm9ybS5pcGFkfHxhLmpQbGF5ZXIucGxhdGZvcm0uaXBob25lfHxhLmpQbGF5ZXIucGxhdGZvcm0uaXBvZCx0aGlzLmludGVybmFsLmRvbU5vZGU9dGhpcy5lbGVtZW50LmdldCgwKSx0aGlzLm9wdGlvbnMua2V5RW5hYmxlZCYmIWEualBsYXllci5mb2N1cyYmKGEualBsYXllci5mb2N1cz10aGlzKSx0aGlzLmFuZHJvaWRGaXg9e3NldE1lZGlhOiExLHBsYXk6ITEscGF1c2U6ITEsdGltZTowLzB9LGEualBsYXllci5wbGF0Zm9ybS5hbmRyb2lkJiYodGhpcy5vcHRpb25zLnByZWxvYWQ9ImF1dG8iIT09dGhpcy5vcHRpb25zLnByZWxvYWQ/Im1ldGFkYXRhIjoiYXV0byIpLHRoaXMuZm9ybWF0cz1bXSx0aGlzLnNvbHV0aW9ucz1bXSx0aGlzLnJlcXVpcmU9e30sdGhpcy5odG1sRWxlbWVudD17fSx0aGlzLmh0bWw9e30sdGhpcy5odG1sLmF1ZGlvPXt9LHRoaXMuaHRtbC52aWRlbz17fSx0aGlzLmF1cm9yYT17fSx0aGlzLmF1cm9yYS5mb3JtYXRzPVtdLHRoaXMuYXVyb3JhLnByb3BlcnRpZXM9W10sdGhpcy5mbGFzaD17fSx0aGlzLmNzcz17fSx0aGlzLmNzcy5jcz17fSx0aGlzLmNzcy5qcT17fSx0aGlzLmFuY2VzdG9ySnE9W10sdGhpcy5vcHRpb25zLnZvbHVtZT10aGlzLl9saW1pdFZhbHVlKHRoaXMub3B0aW9ucy52b2x1bWUsMCwxKSxhLmVhY2godGhpcy5vcHRpb25zLnN1cHBsaWVkLnRvTG93ZXJDYXNlKCkuc3BsaXQoIiwiKSxmdW5jdGlvbihiLGQpe3ZhciBlPWQucmVwbGFjZSgvXlxzK3xccyskL2csIiIpO2lmKGMuZm9ybWF0W2VdKXt2YXIgZj0hMTthLmVhY2goYy5mb3JtYXRzLGZ1bmN0aW9uKGEsYil7cmV0dXJuIGU9PT1iPyhmPSEwLCExKTp2b2lkIDB9KSxmfHxjLmZvcm1hdHMucHVzaChlKX19KSxhLmVhY2godGhpcy5vcHRpb25zLnNvbHV0aW9uLnRvTG93ZXJDYXNlKCkuc3BsaXQoIiwiKSxmdW5jdGlvbihiLGQpe3ZhciBlPWQucmVwbGFjZSgvXlxzK3xccyskL2csIiIpO2lmKGMuc29sdXRpb25bZV0pe3ZhciBmPSExO2EuZWFjaChjLnNvbHV0aW9ucyxmdW5jdGlvbihhLGIpe3JldHVybiBlPT09Yj8oZj0hMCwhMSk6dm9pZCAwfSksZnx8Yy5zb2x1dGlvbnMucHVzaChlKX19KSxhLmVhY2godGhpcy5vcHRpb25zLmF1cm9yYUZvcm1hdHMudG9Mb3dlckNhc2UoKS5zcGxpdCgiLCIpLGZ1bmN0aW9uKGIsZCl7dmFyIGU9ZC5yZXBsYWNlKC9eXHMrfFxzKyQvZywiIik7aWYoYy5mb3JtYXRbZV0pe3ZhciBmPSExO2EuZWFjaChjLmF1cm9yYS5mb3JtYXRzLGZ1bmN0aW9uKGEsYil7cmV0dXJuIGU9PT1iPyhmPSEwLCExKTp2b2lkIDB9KSxmfHxjLmF1cm9yYS5mb3JtYXRzLnB1c2goZSl9fSksdGhpcy5pbnRlcm5hbC5pbnN0YW5jZT0ianBfIit0aGlzLmNvdW50LHRoaXMuaW5zdGFuY2VzW3RoaXMuaW50ZXJuYWwuaW5zdGFuY2VdPXRoaXMuZWxlbWVudCx0aGlzLmVsZW1lbnQuYXR0cigiaWQiKXx8dGhpcy5lbGVtZW50LmF0dHIoImlkIix0aGlzLm9wdGlvbnMuaWRQcmVmaXgrIl9qcGxheWVyXyIrdGhpcy5jb3VudCksdGhpcy5pbnRlcm5hbC5zZWxmPWEuZXh0ZW5kKHt9LHtpZDp0aGlzLmVsZW1lbnQuYXR0cigiaWQiKSxqcTp0aGlzLmVsZW1lbnR9KSx0aGlzLmludGVybmFsLmF1ZGlvPWEuZXh0ZW5kKHt9LHtpZDp0aGlzLm9wdGlvbnMuaWRQcmVmaXgrIl9hdWRpb18iK3RoaXMuY291bnQsanE6Yn0pLHRoaXMuaW50ZXJuYWwudmlkZW89YS5leHRlbmQoe30se2lkOnRoaXMub3B0aW9ucy5pZFByZWZpeCsiX3ZpZGVvXyIrdGhpcy5jb3VudCxqcTpifSksdGhpcy5pbnRlcm5hbC5mbGFzaD1hLmV4dGVuZCh7fSx7aWQ6dGhpcy5vcHRpb25zLmlkUHJlZml4KyJfZmxhc2hfIit0aGlzLmNvdW50LGpxOmIsc3dmOnRoaXMub3B0aW9ucy5zd2ZQYXRoKygiLnN3ZiIhPT10aGlzLm9wdGlvbnMuc3dmUGF0aC50b0xvd2VyQ2FzZSgpLnNsaWNlKC00KT8odGhpcy5vcHRpb25zLnN3ZlBhdGgmJiIvIiE9PXRoaXMub3B0aW9ucy5zd2ZQYXRoLnNsaWNlKC0xKT8iLyI6IiIpKyJqcXVlcnkuanBsYXllci5zd2YiOiIiKX0pLHRoaXMuaW50ZXJuYWwucG9zdGVyPWEuZXh0ZW5kKHt9LHtpZDp0aGlzLm9wdGlvbnMuaWRQcmVmaXgrIl9wb3N0ZXJfIit0aGlzLmNvdW50LGpxOmJ9KSxhLmVhY2goYS5qUGxheWVyLmV2ZW50LGZ1bmN0aW9uKGEsZCl7Yy5vcHRpb25zW2FdIT09YiYmKGMuZWxlbWVudC5iaW5kKGQrIi5qUGxheWVyIixjLm9wdGlvbnNbYV0pLGMub3B0aW9uc1thXT1iKX0pLHRoaXMucmVxdWlyZS5hdWRpbz0hMSx0aGlzLnJlcXVpcmUudmlkZW89ITEsYS5lYWNoKHRoaXMuZm9ybWF0cyxmdW5jdGlvbihhLGIpe2MucmVxdWlyZVtjLmZvcm1hdFtiXS5tZWRpYV09ITB9KSx0aGlzLm9wdGlvbnM9dGhpcy5yZXF1aXJlLnZpZGVvP2EuZXh0ZW5kKCEwLHt9LHRoaXMub3B0aW9uc1ZpZGVvLHRoaXMub3B0aW9ucyk6YS5leHRlbmQoITAse30sdGhpcy5vcHRpb25zQXVkaW8sdGhpcy5vcHRpb25zKSx0aGlzLl9zZXRTaXplKCksdGhpcy5zdGF0dXMubmF0aXZlVmlkZW9Db250cm9scz10aGlzLl91YUJsb2NrbGlzdCh0aGlzLm9wdGlvbnMubmF0aXZlVmlkZW9Db250cm9scyksdGhpcy5zdGF0dXMubm9GdWxsV2luZG93PXRoaXMuX3VhQmxvY2tsaXN0KHRoaXMub3B0aW9ucy5ub0Z1bGxXaW5kb3cpLHRoaXMuc3RhdHVzLm5vVm9sdW1lPXRoaXMuX3VhQmxvY2tsaXN0KHRoaXMub3B0aW9ucy5ub1ZvbHVtZSksYS5qUGxheWVyLm5hdGl2ZUZlYXR1cmVzLmZ1bGxzY3JlZW4uYXBpLmZ1bGxzY3JlZW5FbmFibGVkJiZ0aGlzLl9mdWxsc2NyZWVuQWRkRXZlbnRMaXN0ZW5lcnMoKSx0aGlzLl9yZXN0cmljdE5hdGl2ZVZpZGVvQ29udHJvbHMoKSx0aGlzLmh0bWxFbGVtZW50LnBvc3Rlcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKSx0aGlzLmh0bWxFbGVtZW50LnBvc3Rlci5pZD10aGlzLmludGVybmFsLnBvc3Rlci5pZCx0aGlzLmh0bWxFbGVtZW50LnBvc3Rlci5vbmxvYWQ9ZnVuY3Rpb24oKXsoIWMuc3RhdHVzLnZpZGVvfHxjLnN0YXR1cy53YWl0Rm9yUGxheSkmJmMuaW50ZXJuYWwucG9zdGVyLmpxLnNob3coKX0sdGhpcy5lbGVtZW50LmFwcGVuZCh0aGlzLmh0bWxFbGVtZW50LnBvc3RlciksdGhpcy5pbnRlcm5hbC5wb3N0ZXIuanE9YSgiIyIrdGhpcy5pbnRlcm5hbC5wb3N0ZXIuaWQpLHRoaXMuaW50ZXJuYWwucG9zdGVyLmpxLmNzcyh7d2lkdGg6dGhpcy5zdGF0dXMud2lkdGgsaGVpZ2h0OnRoaXMuc3RhdHVzLmhlaWdodH0pLHRoaXMuaW50ZXJuYWwucG9zdGVyLmpxLmhpZGUoKSx0aGlzLmludGVybmFsLnBvc3Rlci5qcS5iaW5kKCJjbGljay5qUGxheWVyIixmdW5jdGlvbigpe2MuX3RyaWdnZXIoYS5qUGxheWVyLmV2ZW50LmNsaWNrKX0pLHRoaXMuaHRtbC5hdWRpby5hdmFpbGFibGU9ITEsdGhpcy5yZXF1aXJlLmF1ZGlvJiYodGhpcy5odG1sRWxlbWVudC5hdWRpbz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhdWRpbyIpLHRoaXMuaHRtbEVsZW1lbnQuYXVkaW8uaWQ9dGhpcy5pbnRlcm5hbC5hdWRpby5pZCx0aGlzLmh0bWwuYXVkaW8uYXZhaWxhYmxlPSEhdGhpcy5odG1sRWxlbWVudC5hdWRpby5jYW5QbGF5VHlwZSYmdGhpcy5fdGVzdENhblBsYXlUeXBlKHRoaXMuaHRtbEVsZW1lbnQuYXVkaW8pKSx0aGlzLmh0bWwudmlkZW8uYXZhaWxhYmxlPSExLHRoaXMucmVxdWlyZS52aWRlbyYmKHRoaXMuaHRtbEVsZW1lbnQudmlkZW89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidmlkZW8iKSx0aGlzLmh0bWxFbGVtZW50LnZpZGVvLmlkPXRoaXMuaW50ZXJuYWwudmlkZW8uaWQsdGhpcy5odG1sLnZpZGVvLmF2YWlsYWJsZT0hIXRoaXMuaHRtbEVsZW1lbnQudmlkZW8uY2FuUGxheVR5cGUmJnRoaXMuX3Rlc3RDYW5QbGF5VHlwZSh0aGlzLmh0bWxFbGVtZW50LnZpZGVvKSksdGhpcy5mbGFzaC5hdmFpbGFibGU9dGhpcy5fY2hlY2tGb3JGbGFzaCgxMC4xKSx0aGlzLmh0bWwuY2FuUGxheT17fSx0aGlzLmF1cm9yYS5jYW5QbGF5PXt9LHRoaXMuZmxhc2guY2FuUGxheT17fSxhLmVhY2godGhpcy5mb3JtYXRzLGZ1bmN0aW9uKGIsZCl7Yy5odG1sLmNhblBsYXlbZF09Yy5odG1sW2MuZm9ybWF0W2RdLm1lZGlhXS5hdmFpbGFibGUmJiIiIT09Yy5odG1sRWxlbWVudFtjLmZvcm1hdFtkXS5tZWRpYV0uY2FuUGxheVR5cGUoYy5mb3JtYXRbZF0uY29kZWMpLGMuYXVyb3JhLmNhblBsYXlbZF09YS5pbkFycmF5KGQsYy5hdXJvcmEuZm9ybWF0cyk+LTEsYy5mbGFzaC5jYW5QbGF5W2RdPWMuZm9ybWF0W2RdLmZsYXNoQ2FuUGxheSYmYy5mbGFzaC5hdmFpbGFibGV9KSx0aGlzLmh0bWwuZGVzaXJlZD0hMSx0aGlzLmF1cm9yYS5kZXNpcmVkPSExLHRoaXMuZmxhc2guZGVzaXJlZD0hMSxhLmVhY2godGhpcy5zb2x1dGlvbnMsZnVuY3Rpb24oYixkKXtpZigwPT09YiljW2RdLmRlc2lyZWQ9ITA7ZWxzZXt2YXIgZT0hMSxmPSExO2EuZWFjaChjLmZvcm1hdHMsZnVuY3Rpb24oYSxiKXtjW2Muc29sdXRpb25zWzBdXS5jYW5QbGF5W2JdJiYoInZpZGVvIj09PWMuZm9ybWF0W2JdLm1lZGlhP2Y9ITA6ZT0hMCl9KSxjW2RdLmRlc2lyZWQ9Yy5yZXF1aXJlLmF1ZGlvJiYhZXx8Yy5yZXF1aXJlLnZpZGVvJiYhZn19KSx0aGlzLmh0bWwuc3VwcG9ydD17fSx0aGlzLmF1cm9yYS5zdXBwb3J0PXt9LHRoaXMuZmxhc2guc3VwcG9ydD17fSxhLmVhY2godGhpcy5mb3JtYXRzLGZ1bmN0aW9uKGEsYil7Yy5odG1sLnN1cHBvcnRbYl09Yy5odG1sLmNhblBsYXlbYl0mJmMuaHRtbC5kZXNpcmVkLGMuYXVyb3JhLnN1cHBvcnRbYl09Yy5hdXJvcmEuY2FuUGxheVtiXSYmYy5hdXJvcmEuZGVzaXJlZCxjLmZsYXNoLnN1cHBvcnRbYl09Yy5mbGFzaC5jYW5QbGF5W2JdJiZjLmZsYXNoLmRlc2lyZWR9KSx0aGlzLmh0bWwudXNlZD0hMSx0aGlzLmF1cm9yYS51c2VkPSExLHRoaXMuZmxhc2gudXNlZD0hMSxhLmVhY2godGhpcy5zb2x1dGlvbnMsZnVuY3Rpb24oYixkKXthLmVhY2goYy5mb3JtYXRzLGZ1bmN0aW9uKGEsYil7cmV0dXJuIGNbZF0uc3VwcG9ydFtiXT8oY1tkXS51c2VkPSEwLCExKTp2b2lkIDB9KX0pLHRoaXMuX3Jlc2V0QWN0aXZlKCksdGhpcy5fcmVzZXRHYXRlKCksdGhpcy5fY3NzU2VsZWN0b3JBbmNlc3Rvcih0aGlzLm9wdGlvbnMuY3NzU2VsZWN0b3JBbmNlc3RvciksdGhpcy5odG1sLnVzZWR8fHRoaXMuYXVyb3JhLnVzZWR8fHRoaXMuZmxhc2gudXNlZD90aGlzLmNzcy5qcS5ub1NvbHV0aW9uLmxlbmd0aCYmdGhpcy5jc3MuanEubm9Tb2x1dGlvbi5oaWRlKCk6KHRoaXMuX2Vycm9yKHt0eXBlOmEualBsYXllci5lcnJvci5OT19TT0xVVElPTixjb250ZXh0OiJ7c29sdXRpb246JyIrdGhpcy5vcHRpb25zLnNvbHV0aW9uKyInLCBzdXBwbGllZDonIit0aGlzLm9wdGlvbnMuc3VwcGxpZWQrIid9IixtZXNzYWdlOmEualBsYXllci5lcnJvck1zZy5OT19TT0xVVElPTixoaW50OmEualBsYXllci5lcnJvckhpbnQuTk9fU09MVVRJT059KSx0aGlzLmNzcy5qcS5ub1NvbHV0aW9uLmxlbmd0aCYmdGhpcy5jc3MuanEubm9Tb2x1dGlvbi5zaG93KCkpLHRoaXMuZmxhc2gudXNlZCl7dmFyIGQsZT0ialF1ZXJ5PSIrZW5jb2RlVVJJKHRoaXMub3B0aW9ucy5ub0NvbmZsaWN0KSsiJmlkPSIrZW5jb2RlVVJJKHRoaXMuaW50ZXJuYWwuc2VsZi5pZCkrIiZ2b2w9Iit0aGlzLm9wdGlvbnMudm9sdW1lKyImbXV0ZWQ9Iit0aGlzLm9wdGlvbnMubXV0ZWQ7aWYoYS5qUGxheWVyLmJyb3dzZXIubXNpZSYmKE51bWJlcihhLmpQbGF5ZXIuYnJvd3Nlci52ZXJzaW9uKTw5fHxhLmpQbGF5ZXIuYnJvd3Nlci5kb2N1bWVudE1vZGU8OSkpe3ZhciBmPSc8b2JqZWN0IGlkPSInK3RoaXMuaW50ZXJuYWwuZmxhc2guaWQrJyIgY2xhc3NpZD0iY2xzaWQ6ZDI3Y2RiNmUtYWU2ZC0xMWNmLTk2YjgtNDQ0NTUzNTQwMDAwIiB3aWR0aD0iMCIgaGVpZ2h0PSIwIiB0YWJpbmRleD0iLTEiPjwvb2JqZWN0PicsZz1bJzxwYXJhbSBuYW1lPSJtb3ZpZSIgdmFsdWU9IicrdGhpcy5pbnRlcm5hbC5mbGFzaC5zd2YrJyIgLz4nLCc8cGFyYW0gbmFtZT0iRmxhc2hWYXJzIiB2YWx1ZT0iJytlKyciIC8+JywnPHBhcmFtIG5hbWU9ImFsbG93U2NyaXB0QWNjZXNzIiB2YWx1ZT0iYWx3YXlzIiAvPicsJzxwYXJhbSBuYW1lPSJiZ2NvbG9yIiB2YWx1ZT0iJyt0aGlzLm9wdGlvbnMuYmFja2dyb3VuZENvbG9yKyciIC8+JywnPHBhcmFtIG5hbWU9Indtb2RlIiB2YWx1ZT0iJyt0aGlzLm9wdGlvbnMud21vZGUrJyIgLz4nXTtkPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZik7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspZC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KGdbaF0pKX1lbHNle3ZhciBpPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwYXJhbSIpO2Quc2V0QXR0cmlidXRlKCJuYW1lIixiKSxkLnNldEF0dHJpYnV0ZSgidmFsdWUiLGMpLGEuYXBwZW5kQ2hpbGQoZCl9O2Q9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib2JqZWN0IiksZC5zZXRBdHRyaWJ1dGUoImlkIix0aGlzLmludGVybmFsLmZsYXNoLmlkKSxkLnNldEF0dHJpYnV0ZSgibmFtZSIsdGhpcy5pbnRlcm5hbC5mbGFzaC5pZCksZC5zZXRBdHRyaWJ1dGUoImRhdGEiLHRoaXMuaW50ZXJuYWwuZmxhc2guc3dmKSxkLnNldEF0dHJpYnV0ZSgidHlwZSIsImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoIiksZC5zZXRBdHRyaWJ1dGUoIndpZHRoIiwiMSIpLGQuc2V0QXR0cmlidXRlKCJoZWlnaHQiLCIxIiksZC5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiLTEiKSxpKGQsImZsYXNodmFycyIsZSksaShkLCJhbGxvd3NjcmlwdGFjY2VzcyIsImFsd2F5cyIpLGkoZCwiYmdjb2xvciIsdGhpcy5vcHRpb25zLmJhY2tncm91bmRDb2xvciksaShkLCJ3bW9kZSIsdGhpcy5vcHRpb25zLndtb2RlKX10aGlzLmVsZW1lbnQuYXBwZW5kKGQpLHRoaXMuaW50ZXJuYWwuZmxhc2guanE9YShkKX10aGlzLnN0YXR1cy5wbGF5YmFja1JhdGVFbmFibGVkPXRoaXMuaHRtbC51c2VkJiYhdGhpcy5mbGFzaC51c2VkP3RoaXMuX3Rlc3RQbGF5YmFja1JhdGUoImF1ZGlvIik6ITEsdGhpcy5fdXBkYXRlUGxheWJhY2tSYXRlKCksdGhpcy5odG1sLnVzZWQmJih0aGlzLmh0bWwuYXVkaW8uYXZhaWxhYmxlJiYodGhpcy5fYWRkSHRtbEV2ZW50TGlzdGVuZXJzKHRoaXMuaHRtbEVsZW1lbnQuYXVkaW8sdGhpcy5odG1sLmF1ZGlvKSx0aGlzLmVsZW1lbnQuYXBwZW5kKHRoaXMuaHRtbEVsZW1lbnQuYXVkaW8pLHRoaXMuaW50ZXJuYWwuYXVkaW8uanE9YSgiIyIrdGhpcy5pbnRlcm5hbC5hdWRpby5pZCkpLHRoaXMuaHRtbC52aWRlby5hdmFpbGFibGUmJih0aGlzLl9hZGRIdG1sRXZlbnRMaXN0ZW5lcnModGhpcy5odG1sRWxlbWVudC52aWRlbyx0aGlzLmh0bWwudmlkZW8pLHRoaXMuZWxlbWVudC5hcHBlbmQodGhpcy5odG1sRWxlbWVudC52aWRlbyksdGhpcy5pbnRlcm5hbC52aWRlby5qcT1hKCIjIit0aGlzLmludGVybmFsLnZpZGVvLmlkKSx0aGlzLmludGVybmFsLnZpZGVvLmpxLmNzcyh0aGlzLnN0YXR1cy5uYXRpdmVWaWRlb0NvbnRyb2xzP3t3aWR0aDp0aGlzLnN0YXR1cy53aWR0aCxoZWlnaHQ6dGhpcy5zdGF0dXMuaGVpZ2h0fTp7d2lkdGg6IjBweCIsaGVpZ2h0OiIwcHgifSksdGhpcy5pbnRlcm5hbC52aWRlby5qcS5iaW5kKCJjbGljay5qUGxheWVyIixmdW5jdGlvbigpe2MuX3RyaWdnZXIoYS5qUGxheWVyLmV2ZW50LmNsaWNrKX0pKSksdGhpcy5hdXJvcmEudXNlZCx0aGlzLm9wdGlvbnMuZW11bGF0ZUh0bWwmJnRoaXMuX2VtdWxhdGVIdG1sQnJpZGdlKCksIXRoaXMuaHRtbC51c2VkJiYhdGhpcy5hdXJvcmEudXNlZHx8dGhpcy5mbGFzaC51c2VkfHxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yy5pbnRlcm5hbC5yZWFkeT0hMCxjLnZlcnNpb24uZmxhc2g9Im4vYSIsYy5fdHJpZ2dlcihhLmpQbGF5ZXIuZXZlbnQucmVwZWF0KSxjLl90cmlnZ2VyKGEualBsYXllci5ldmVudC5yZWFkeSl9LDEwMCksdGhpcy5fdXBkYXRlTmF0aXZlVmlkZW9Db250cm9scygpLHRoaXMuY3NzLmpxLnZpZGVvUGxheS5sZW5ndGgmJnRoaXMuY3NzLmpxLnZpZGVvUGxheS5oaWRlKCksYS5qUGxheWVyLnByb3RvdHlwZS5jb3VudCsrfSxkZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5jbGVhck1lZGlhKCksdGhpcy5fcmVtb3ZlVWlDbGFzcygpLHRoaXMuY3NzLmpxLmN1cnJlbnRUaW1lLmxlbmd0aCYmdGhpcy5jc3MuanEuY3VycmVudFRpbWUudGV4dCgiIiksdGhpcy5jc3MuanEuZHVyYXRpb24ubGVuZ3RoJiZ0aGlzLmNzcy5qcS5kdXJhdGlvbi50ZXh0KCIiKSxhLmVhY2godGhpcy5jc3MuanEsZnVuY3Rpb24oYSxiKXtiLmxlbmd0aCYmYi51bmJpbmQoIi5qUGxheWVyIil9KSx0aGlzLmludGVybmFsLnBvc3Rlci5qcS51bmJpbmQoIi5qUGxheWVyIiksdGhpcy5pbnRlcm5hbC52aWRlby5qcSYmdGhpcy5pbnRlcm5hbC52aWRlby5qcS51bmJpbmQoIi5qUGxheWVyIiksdGhpcy5fZnVsbHNjcmVlblJlbW92ZUV2ZW50TGlzdGVuZXJzKCksdGhpcz09PWEualBsYXllci5mb2N1cyYmKGEualBsYXllci5mb2N1cz1udWxsKSx0aGlzLm9wdGlvbnMuZW11bGF0ZUh0bWwmJnRoaXMuX2Rlc3Ryb3lIdG1sQnJpZGdlKCksdGhpcy5lbGVtZW50LnJlbW92ZURhdGEoImpQbGF5ZXIiKSx0aGlzLmVsZW1lbnQudW5iaW5kKCIualBsYXllciIpLHRoaXMuZWxlbWVudC5lbXB0eSgpLGRlbGV0ZSB0aGlzLmluc3RhbmNlc1t0aGlzLmludGVybmFsLmluc3RhbmNlXX0sZGVzdHJveVJlbW92ZWQ6ZnVuY3Rpb24oKXt2YXIgYj10aGlzO2EuZWFjaCh0aGlzLmluc3RhbmNlcyxmdW5jdGlvbihhLGMpe2IuZWxlbWVudCE9PWMmJihjLmRhdGEoImpQbGF5ZXIiKXx8KGMualBsYXllcigiZGVzdHJveSIpLGRlbGV0ZSBiLmluc3RhbmNlc1thXSkpfSl9LGVuYWJsZTpmdW5jdGlvbigpe30sZGlzYWJsZTpmdW5jdGlvbigpe30sX3Rlc3RDYW5QbGF5VHlwZTpmdW5jdGlvbihhKXt0cnl7cmV0dXJuIGEuY2FuUGxheVR5cGUodGhpcy5mb3JtYXQubXAzLmNvZGVjKSwhMH1jYXRjaChiKXtyZXR1cm4hMX19LF90ZXN0UGxheWJhY2tSYXRlOmZ1bmN0aW9uKGEpe3ZhciBiLGM9LjU7YT0ic3RyaW5nIj09dHlwZW9mIGE/YToiYXVkaW8iLGI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChhKTt0cnl7cmV0dXJuInBsYXliYWNrUmF0ZSJpbiBiPyhiLnBsYXliYWNrUmF0ZT1jLGIucGxheWJhY2tSYXRlPT09Yyk6ITF9Y2F0Y2goZCl7cmV0dXJuITF9fSxfdWFCbG9ja2xpc3Q6ZnVuY3Rpb24oYil7dmFyIGM9bmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLGQ9ITE7cmV0dXJuIGEuZWFjaChiLGZ1bmN0aW9uKGEsYil7cmV0dXJuIGImJmIudGVzdChjKT8oZD0hMCwhMSk6dm9pZCAwfSksZH0sX3Jlc3RyaWN0TmF0aXZlVmlkZW9Db250cm9sczpmdW5jdGlvbigpe3RoaXMucmVxdWlyZS5hdWRpbyYmdGhpcy5zdGF0dXMubmF0aXZlVmlkZW9Db250cm9scyYmKHRoaXMuc3RhdHVzLm5hdGl2ZVZpZGVvQ29udHJvbHM9ITEsdGhpcy5zdGF0dXMubm9GdWxsV2luZG93PSEwKX0sX3VwZGF0ZU5hdGl2ZVZpZGVvQ29udHJvbHM6ZnVuY3Rpb24oKXt0aGlzLmh0bWwudmlkZW8uYXZhaWxhYmxlJiZ0aGlzLmh0bWwudXNlZCYmKHRoaXMuaHRtbEVsZW1lbnQudmlkZW8uY29udHJvbHM9dGhpcy5zdGF0dXMubmF0aXZlVmlkZW9Db250cm9scyx0aGlzLl91cGRhdGVBdXRvaGlkZSgpLHRoaXMuc3RhdHVzLm5hdGl2ZVZpZGVvQ29udHJvbHMmJnRoaXMucmVxdWlyZS52aWRlbz8odGhpcy5pbnRlcm5hbC5wb3N0ZXIuanEuaGlkZSgpLHRoaXMuaW50ZXJuYWwudmlkZW8uanEuY3NzKHt3aWR0aDp0aGlzLnN0YXR1cy53aWR0aCxoZWlnaHQ6dGhpcy5zdGF0dXMuaGVpZ2h0fSkpOnRoaXMuc3RhdHVzLndhaXRGb3JQbGF5JiZ0aGlzLnN0YXR1cy52aWRlbyYmKHRoaXMuaW50ZXJuYWwucG9zdGVyLmpxLnNob3coKSx0aGlzLmludGVybmFsLnZpZGVvLmpxLmNzcyh7d2lkdGg6IjBweCIsaGVpZ2h0OiIwcHgifSkpKX0sX2FkZEh0bWxFdmVudExpc3RlbmVyczpmdW5jdGlvbihiLGMpe3ZhciBkPXRoaXM7Yi5wcmVsb2FkPXRoaXMub3B0aW9ucy5wcmVsb2FkLGIubXV0ZWQ9dGhpcy5vcHRpb25zLm11dGVkLGIudm9sdW1lPXRoaXMub3B0aW9ucy52b2x1bWUsdGhpcy5zdGF0dXMucGxheWJhY2tSYXRlRW5hYmxlZCYmKGIuZGVmYXVsdFBsYXliYWNrUmF0ZT10aGlzLm9wdGlvbnMuZGVmYXVsdFBsYXliYWNrUmF0ZSxiLnBsYXliYWNrUmF0ZT10aGlzLm9wdGlvbnMucGxheWJhY2tSYXRlKSxiLmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixmdW5jdGlvbigpe2MuZ2F0ZSYmKGQuaW50ZXJuYWwuY21kc0lnbm9yZWQmJnRoaXMucmVhZHlTdGF0ZT4wJiYoZC5pbnRlcm5hbC5jbWRzSWdub3JlZD0hMSksZC5fZ2V0SHRtbFN0YXR1cyhiKSxkLl91cGRhdGVJbnRlcmZhY2UoKSxkLl90cmlnZ2VyKGEualBsYXllci5ldmVudC5wcm9ncmVzcykpfSwhMSksYi5hZGRFdmVudExpc3RlbmVyKCJsb2FkZWRkYXRhIixmdW5jdGlvbigpe2MuZ2F0ZSYmKGQuYW5kcm9pZEZpeC5zZXRNZWRpYT0hMSxkLmFuZHJvaWRGaXgucGxheSYmKGQuYW5kcm9pZEZpeC5wbGF5PSExLGQucGxheShkLmFuZHJvaWRGaXgudGltZSkpLGQuYW5kcm9pZEZpeC5wYXVzZSYmKGQuYW5kcm9pZEZpeC5wYXVzZT0hMSxkLnBhdXNlKGQuYW5kcm9pZEZpeC50aW1lKSksZC5fdHJpZ2dlcihhLmpQbGF5ZXIuZXZlbnQubG9hZGVkZGF0YSkpfSwhMSksYi5hZGRFdmVudExpc3RlbmVyKCJ0aW1ldXBkYXRlIixmdW5jdGlvbigpe2MuZ2F0ZSYmKGQuX2dldEh0bWxTdGF0dXMoYiksZC5fdXBkYXRlSW50ZXJmYWNlKCksZC5fdHJpZ2dlcihhLmpQbGF5ZXIuZXZlbnQudGltZXVwZGF0ZSkpfSwhMSksYi5hZGRFdmVudExpc3RlbmVyKCJkdXJhdGlvbmNoYW5nZSIsZnVuY3Rpb24oKXtjLmdhdGUmJihkLl9nZXRIdG1sU3RhdHVzKGIpLGQuX3VwZGF0ZUludGVyZmFjZSgpLGQuX3RyaWdnZXIoYS5qUGxheWVyLmV2ZW50LmR1cmF0aW9uY2hhbmdlKSl9LCExKSxiLmFkZEV2ZW50TGlzdGVuZXIoInBsYXkiLGZ1bmN0aW9uKCl7Yy5nYXRlJiYoZC5fdXBkYXRlQnV0dG9ucyghMCksZC5faHRtbF9jaGVja1dhaXRGb3JQbGF5KCksZC5fdHJpZ2dlcihhLmpQbGF5ZXIuZXZlbnQucGxheSkpfSwhMSksYi5hZGRFdmVudExpc3RlbmVyKCJwbGF5aW5nIixmdW5jdGlvbigpe2MuZ2F0ZSYmKGQuX3VwZGF0ZUJ1dHRvbnMoITApLGQuX3NlZWtlZCgpLGQuX3RyaWdnZXIoYS5qUGxheWVyLmV2ZW50LnBsYXlpbmcpKX0sITEpLGIuYWRkRXZlbnRMaXN0ZW5lcigicGF1c2UiLGZ1bmN0aW9uKCl7Yy5nYXRlJiYoZC5fdXBkYXRlQnV0dG9ucyghMSksZC5fdHJpZ2dlcihhLmpQbGF5ZXIuZXZlbnQucGF1c2UpKX0sITEpLGIuYWRkRXZlbnRMaXN0ZW5lcigid2FpdGluZyIsZnVuY3Rpb24oKXtjLmdhdGUmJihkLl9zZWVraW5nKCksZC5fdHJpZ2dlcihhLmpQbGF5ZXIuZXZlbnQud2FpdGluZykpfSwhMSksYi5hZGRFdmVudExpc3RlbmVyKCJzZWVraW5nIixmdW5jdGlvbigpe2MuZ2F0ZSYmKGQuX3NlZWtpbmcoKSxkLl90cmlnZ2VyKGEualBsYXllci5ldmVudC5zZWVraW5nKSl9LCExKSxiLmFkZEV2ZW50TGlzdGVuZXIoInNlZWtlZCIsZnVuY3Rpb24oKXtjLmdhdGUmJihkLl9zZWVrZWQoKSxkLl90cmlnZ2VyKGEualBsYXllci5ldmVudC5zZWVrZWQpKX0sITEpLGIuYWRkRXZlbnRMaXN0ZW5lcigidm9sdW1lY2hhbmdlIixmdW5jdGlvbigpe2MuZ2F0ZSYmKGQub3B0aW9ucy52b2x1bWU9Yi52b2x1bWUsZC5vcHRpb25zLm11dGVkPWIubXV0ZWQsZC5fdXBkYXRlTXV0ZSgpLGQuX3VwZGF0ZVZvbHVtZSgpLGQuX3RyaWdnZXIoYS5qUGxheWVyLmV2ZW50LnZvbHVtZWNoYW5nZSkpfSwhMSksYi5hZGRFdmVudExpc3RlbmVyKCJyYXRlY2hhbmdlIixmdW5jdGlvbigpe2MuZ2F0ZSYmKGQub3B0aW9ucy5kZWZhdWx0UGxheWJhY2tSYXRlPWIuZGVmYXVsdFBsYXliYWNrUmF0ZSxkLm9wdGlvbnMucGxheWJhY2tSYXRlPWIucGxheWJhY2tSYXRlLGQuX3VwZGF0ZVBsYXliYWNrUmF0ZSgpLGQuX3RyaWdnZXIoYS5qUGxheWVyLmV2ZW50LnJhdGVjaGFuZ2UpKX0sITEpLGIuYWRkRXZlbnRMaXN0ZW5lcigic3VzcGVuZCIsZnVuY3Rpb24oKXtjLmdhdGUmJihkLl9zZWVrZWQoKSxkLl90cmlnZ2VyKGEualBsYXllci5ldmVudC5zdXNwZW5kKSl9LCExKSxiLmFkZEV2ZW50TGlzdGVuZXIoImVuZGVkIixmdW5jdGlvbigpe2MuZ2F0ZSYmKGEualBsYXllci5icm93c2VyLndlYmtpdHx8KGQuaHRtbEVsZW1lbnQubWVkaWEuY3VycmVudFRpbWU9MCksZC5odG1sRWxlbWVudC5tZWRpYS5wYXVzZSgpLGQuX3VwZGF0ZUJ1dHRvbnMoITEpLGQuX2dldEh0bWxTdGF0dXMoYiwhMCksZC5fdXBkYXRlSW50ZXJmYWNlKCksZC5fdHJpZ2dlcihhLmpQbGF5ZXIuZXZlbnQuZW5kZWQpKX0sITEpLGIuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLGZ1bmN0aW9uKCl7Yy5nYXRlJiYoZC5fdXBkYXRlQnV0dG9ucyghMSksZC5fc2Vla2VkKCksZC5zdGF0dXMuc3JjU2V0JiYoY2xlYXJUaW1lb3V0KGQuaW50ZXJuYWwuaHRtbERseUNtZElkKSxkLnN0YXR1cy53YWl0Rm9yTG9hZD0hMCxkLnN0YXR1cy53YWl0Rm9yUGxheT0hMCxkLnN0YXR1cy52aWRlbyYmIWQuc3RhdHVzLm5hdGl2ZVZpZGVvQ29udHJvbHMmJmQuaW50ZXJuYWwudmlkZW8uanEuY3NzKHt3aWR0aDoiMHB4IixoZWlnaHQ6IjBweCJ9KSxkLl92YWxpZFN0cmluZyhkLnN0YXR1cy5tZWRpYS5wb3N0ZXIpJiYhZC5zdGF0dXMubmF0aXZlVmlkZW9Db250cm9scyYmZC5pbnRlcm5hbC5wb3N0ZXIuanEuc2hvdygpLGQuY3NzLmpxLnZpZGVvUGxheS5sZW5ndGgmJmQuY3NzLmpxLnZpZGVvUGxheS5zaG93KCksZC5fZXJyb3Ioe3R5cGU6YS5qUGxheWVyLmVycm9yLlVSTCxjb250ZXh0OmQuc3RhdHVzLnNyYyxtZXNzYWdlOmEualBsYXllci5lcnJvck1zZy5VUkwsaGludDphLmpQbGF5ZXIuZXJyb3JIaW50LlVSTH0pKSl9LCExKSxhLmVhY2goYS5qUGxheWVyLmh0bWxFdmVudCxmdW5jdGlvbihlLGYpe2IuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLGZ1bmN0aW9uKCl7Yy5nYXRlJiZkLl90cmlnZ2VyKGEualBsYXllci5ldmVudFtmXSl9LCExKX0pfSxfYWRkQXVyb3JhRXZlbnRMaXN0ZW5lcnM6ZnVuY3Rpb24oYixjKXt2YXIgZD10aGlzO2Iudm9sdW1lPTEwMCp0aGlzLm9wdGlvbnMudm9sdW1lLGIub24oInByb2dyZXNzIixmdW5jdGlvbigpe2MuZ2F0ZSYmKGQuaW50ZXJuYWwuY21kc0lnbm9yZWQmJnRoaXMucmVhZHlTdGF0ZT4wJiYoZC5pbnRlcm5hbC5jbWRzSWdub3JlZD0hMSksZC5fZ2V0QXVyb3JhU3RhdHVzKGIpLGQuX3VwZGF0ZUludGVyZmFjZSgpLGQuX3RyaWdnZXIoYS5qUGxheWVyLmV2ZW50LnByb2dyZXNzKSxiLmR1cmF0aW9uPjAmJmQuX3RyaWdnZXIoYS5qUGxheWVyLmV2ZW50LnRpbWV1cGRhdGUpKX0sITEpLGIub24oInJlYWR5IixmdW5jdGlvbigpe2MuZ2F0ZSYmZC5fdHJpZ2dlcihhLmpQbGF5ZXIuZXZlbnQubG9hZGVkZGF0YSl9LCExKSxiLm9uKCJkdXJhdGlvbiIsZnVuY3Rpb24oKXtjLmdhdGUmJihkLl9nZXRBdXJvcmFTdGF0dXMoYiksZC5fdXBkYXRlSW50ZXJmYWNlKCksZC5fdHJpZ2dlcihhLmpQbGF5ZXIuZXZlbnQuZHVyYXRpb25jaGFuZ2UpKX0sITEpLGIub24oImVuZCIsZnVuY3Rpb24oKXtjLmdhdGUmJihkLl91cGRhdGVCdXR0b25zKCExKSxkLl9nZXRBdXJvcmFTdGF0dXMoYiwhMCksZC5fdXBkYXRlSW50ZXJmYWNlKCksZC5fdHJpZ2dlcihhLmpQbGF5ZXIuZXZlbnQuZW5kZWQpKX0sITEpLGIub24oImVycm9yIixmdW5jdGlvbigpe2MuZ2F0ZSYmKGQuX3VwZGF0ZUJ1dHRvbnMoITEpLGQuX3NlZWtlZCgpLGQuc3RhdHVzLnNyY1NldCYmKGQuc3RhdHVzLndhaXRGb3JMb2FkPSEwLGQuc3RhdHVzLndhaXRGb3JQbGF5PSEwLGQuc3RhdHVzLnZpZGVvJiYhZC5zdGF0dXMubmF0aXZlVmlkZW9Db250cm9scyYmZC5pbnRlcm5hbC52aWRlby5qcS5jc3Moe3dpZHRoOiIwcHgiLGhlaWdodDoiMHB4In0pLGQuX3ZhbGlkU3RyaW5nKGQuc3RhdHVzLm1lZGlhLnBvc3RlcikmJiFkLnN0YXR1cy5uYXRpdmVWaWRlb0NvbnRyb2xzJiZkLmludGVybmFsLnBvc3Rlci5qcS5zaG93KCksZC5jc3MuanEudmlkZW9QbGF5Lmxlbmd0aCYmZC5jc3MuanEudmlkZW9QbGF5LnNob3coKSxkLl9lcnJvcih7dHlwZTphLmpQbGF5ZXIuZXJyb3IuVVJMLGNvbnRleHQ6ZC5zdGF0dXMuc3JjLG1lc3NhZ2U6YS5qUGxheWVyLmVycm9yTXNnLlVSTCxoaW50OmEualBsYXllci5lcnJvckhpbnQuVVJMfSkpKX0sITEpfSxfZ2V0SHRtbFN0YXR1czpmdW5jdGlvbihhLGIpe3ZhciBjPTAsZD0wLGU9MCxmPTA7aXNGaW5pdGUoYS5kdXJhdGlvbikmJih0aGlzLnN0YXR1cy5kdXJhdGlvbj1hLmR1cmF0aW9uKSxjPWEuY3VycmVudFRpbWUsZD10aGlzLnN0YXR1cy5kdXJhdGlvbj4wPzEwMCpjL3RoaXMuc3RhdHVzLmR1cmF0aW9uOjAsIm9iamVjdCI9PXR5cGVvZiBhLnNlZWthYmxlJiZhLnNlZWthYmxlLmxlbmd0aD4wPyhlPXRoaXMuc3RhdHVzLmR1cmF0aW9uPjA/MTAwKmEuc2Vla2FibGUuZW5kKGEuc2Vla2FibGUubGVuZ3RoLTEpL3RoaXMuc3RhdHVzLmR1cmF0aW9uOjEwMCxmPXRoaXMuc3RhdHVzLmR1cmF0aW9uPjA/MTAwKmEuY3VycmVudFRpbWUvYS5zZWVrYWJsZS5lbmQoYS5zZWVrYWJsZS5sZW5ndGgtMSk6MCk6KGU9MTAwLGY9ZCksYiYmKGM9MCxmPTAsZD0wKSx0aGlzLnN0YXR1cy5zZWVrUGVyY2VudD1lLHRoaXMuc3RhdHVzLmN1cnJlbnRQZXJjZW50UmVsYXRpdmU9Zix0aGlzLnN0YXR1cy5jdXJyZW50UGVyY2VudEFic29sdXRlPWQsdGhpcy5zdGF0dXMuY3VycmVudFRpbWU9Yyx0aGlzLnN0YXR1cy5yZW1haW5pbmc9dGhpcy5zdGF0dXMuZHVyYXRpb24tdGhpcy5zdGF0dXMuY3VycmVudFRpbWUsdGhpcy5zdGF0dXMudmlkZW9XaWR0aD1hLnZpZGVvV2lkdGgsdGhpcy5zdGF0dXMudmlkZW9IZWlnaHQ9YS52aWRlb0hlaWdodCx0aGlzLnN0YXR1cy5yZWFkeVN0YXRlPWEucmVhZHlTdGF0ZSx0aGlzLnN0YXR1cy5uZXR3b3JrU3RhdGU9YS5uZXR3b3JrU3RhdGUsdGhpcy5zdGF0dXMucGxheWJhY2tSYXRlPWEucGxheWJhY2tSYXRlLHRoaXMuc3RhdHVzLmVuZGVkPWEuZW5kZWR9LF9nZXRBdXJvcmFTdGF0dXM6ZnVuY3Rpb24oYSxiKXt2YXIgYz0wLGQ9MCxlPTAsZj0wO3RoaXMuc3RhdHVzLmR1cmF0aW9uPWEuZHVyYXRpb24vMWUzLGM9YS5jdXJyZW50VGltZS8xZTMsZD10aGlzLnN0YXR1cy5kdXJhdGlvbj4wPzEwMCpjL3RoaXMuc3RhdHVzLmR1cmF0aW9uOjAsYS5idWZmZXJlZD4wPyhlPXRoaXMuc3RhdHVzLmR1cmF0aW9uPjA/YS5idWZmZXJlZCp0aGlzLnN0YXR1cy5kdXJhdGlvbi90aGlzLnN0YXR1cy5kdXJhdGlvbjoxMDAsZj10aGlzLnN0YXR1cy5kdXJhdGlvbj4wP2MvKGEuYnVmZmVyZWQqdGhpcy5zdGF0dXMuZHVyYXRpb24pOjApOihlPTEwMCxmPWQpLGImJihjPTAsZj0wLGQ9MCksdGhpcy5zdGF0dXMuc2Vla1BlcmNlbnQ9ZSx0aGlzLnN0YXR1cy5jdXJyZW50UGVyY2VudFJlbGF0aXZlPWYsdGhpcy5zdGF0dXMuY3VycmVudFBlcmNlbnRBYnNvbHV0ZT1kLHRoaXMuc3RhdHVzLmN1cnJlbnRUaW1lPWMsdGhpcy5zdGF0dXMucmVtYWluaW5nPXRoaXMuc3RhdHVzLmR1cmF0aW9uLXRoaXMuc3RhdHVzLmN1cnJlbnRUaW1lLHRoaXMuc3RhdHVzLnJlYWR5U3RhdGU9NCx0aGlzLnN0YXR1cy5uZXR3b3JrU3RhdGU9MCx0aGlzLnN0YXR1cy5wbGF5YmFja1JhdGU9MSx0aGlzLnN0YXR1cy5lbmRlZD0hMX0sX3Jlc2V0U3RhdHVzOmZ1bmN0aW9uKCl7dGhpcy5zdGF0dXM9YS5leHRlbmQoe30sdGhpcy5zdGF0dXMsYS5qUGxheWVyLnByb3RvdHlwZS5zdGF0dXMpfSxfdHJpZ2dlcjpmdW5jdGlvbihiLGMsZCl7dmFyIGU9YS5FdmVudChiKTtlLmpQbGF5ZXI9e30sZS5qUGxheWVyLnZlcnNpb249YS5leHRlbmQoe30sdGhpcy52ZXJzaW9uKSxlLmpQbGF5ZXIub3B0aW9ucz1hLmV4dGVuZCghMCx7fSx0aGlzLm9wdGlvbnMpLGUualBsYXllci5zdGF0dXM9YS5leHRlbmQoITAse30sdGhpcy5zdGF0dXMpLGUualBsYXllci5odG1sPWEuZXh0ZW5kKCEwLHt9LHRoaXMuaHRtbCksZS5qUGxheWVyLmF1cm9yYT1hLmV4dGVuZCghMCx7fSx0aGlzLmF1cm9yYSksZS5qUGxheWVyLmZsYXNoPWEuZXh0ZW5kKCEwLHt9LHRoaXMuZmxhc2gpLGMmJihlLmpQbGF5ZXIuZXJyb3I9YS5leHRlbmQoe30sYykpLGQmJihlLmpQbGF5ZXIud2FybmluZz1hLmV4dGVuZCh7fSxkKSksdGhpcy5lbGVtZW50LnRyaWdnZXIoZSl9LGpQbGF5ZXJGbGFzaEV2ZW50OmZ1bmN0aW9uKGIsYyl7aWYoYj09PWEualBsYXllci5ldmVudC5yZWFkeSlpZih0aGlzLmludGVybmFsLnJlYWR5KXtpZih0aGlzLmZsYXNoLmdhdGUpe2lmKHRoaXMuc3RhdHVzLnNyY1NldCl7dmFyIGQ9dGhpcy5zdGF0dXMuY3VycmVudFRpbWUsZT10aGlzLnN0YXR1cy5wYXVzZWQ7dGhpcy5zZXRNZWRpYSh0aGlzLnN0YXR1cy5tZWRpYSksdGhpcy52b2x1bWVXb3JrZXIodGhpcy5vcHRpb25zLnZvbHVtZSksZD4wJiYoZT90aGlzLnBhdXNlKGQpOnRoaXMucGxheShkKSl9dGhpcy5fdHJpZ2dlcihhLmpQbGF5ZXIuZXZlbnQuZmxhc2hyZXNldCl9fWVsc2UgdGhpcy5pbnRlcm5hbC5yZWFkeT0hMCx0aGlzLmludGVybmFsLmZsYXNoLmpxLmNzcyh7d2lkdGg6IjBweCIsaGVpZ2h0OiIwcHgifSksdGhpcy52ZXJzaW9uLmZsYXNoPWMudmVyc2lvbix0aGlzLnZlcnNpb24ubmVlZEZsYXNoIT09dGhpcy52ZXJzaW9uLmZsYXNoJiZ0aGlzLl9lcnJvcih7dHlwZTphLmpQbGF5ZXIuZXJyb3IuVkVSU0lPTixjb250ZXh0OnRoaXMudmVyc2lvbi5mbGFzaCxtZXNzYWdlOmEualBsYXllci5lcnJvck1zZy5WRVJTSU9OK3RoaXMudmVyc2lvbi5mbGFzaCxoaW50OmEualBsYXllci5lcnJvckhpbnQuVkVSU0lPTn0pLHRoaXMuX3RyaWdnZXIoYS5qUGxheWVyLmV2ZW50LnJlcGVhdCksdGhpcy5fdHJpZ2dlcihiKTtpZih0aGlzLmZsYXNoLmdhdGUpc3dpdGNoKGIpe2Nhc2UgYS5qUGxheWVyLmV2ZW50LnByb2dyZXNzOnRoaXMuX2dldEZsYXNoU3RhdHVzKGMpLHRoaXMuX3VwZGF0ZUludGVyZmFjZSgpLHRoaXMuX3RyaWdnZXIoYik7YnJlYWs7Y2FzZSBhLmpQbGF5ZXIuZXZlbnQudGltZXVwZGF0ZTp0aGlzLl9nZXRGbGFzaFN0YXR1cyhjKSx0aGlzLl91cGRhdGVJbnRlcmZhY2UoKSx0aGlzLl90cmlnZ2VyKGIpO2JyZWFrO2Nhc2UgYS5qUGxheWVyLmV2ZW50LnBsYXk6dGhpcy5fc2Vla2VkKCksdGhpcy5fdXBkYXRlQnV0dG9ucyghMCksdGhpcy5fdHJpZ2dlcihiKTticmVhaztjYXNlIGEualBsYXllci5ldmVudC5wYXVzZTp0aGlzLl91cGRhdGVCdXR0b25zKCExKSx0aGlzLl90cmlnZ2VyKGIpO2JyZWFrO2Nhc2UgYS5qUGxheWVyLmV2ZW50LmVuZGVkOnRoaXMuX3VwZGF0ZUJ1dHRvbnMoITEpLHRoaXMuX3RyaWdnZXIoYik7YnJlYWs7Y2FzZSBhLmpQbGF5ZXIuZXZlbnQuY2xpY2s6dGhpcy5fdHJpZ2dlcihiKTticmVhaztjYXNlIGEualBsYXllci5ldmVudC5lcnJvcjp0aGlzLnN0YXR1cy53YWl0Rm9yTG9hZD0hMCx0aGlzLnN0YXR1cy53YWl0Rm9yUGxheT0hMCx0aGlzLnN0YXR1cy52aWRlbyYmdGhpcy5pbnRlcm5hbC5mbGFzaC5qcS5jc3Moe3dpZHRoOiIwcHgiLGhlaWdodDoiMHB4In0pLHRoaXMuX3ZhbGlkU3RyaW5nKHRoaXMuc3RhdHVzLm1lZGlhLnBvc3RlcikmJnRoaXMuaW50ZXJuYWwucG9zdGVyLmpxLnNob3coKSx0aGlzLmNzcy5qcS52aWRlb1BsYXkubGVuZ3RoJiZ0aGlzLnN0YXR1cy52aWRlbyYmdGhpcy5jc3MuanEudmlkZW9QbGF5LnNob3coKSx0aGlzLnN0YXR1cy52aWRlbz90aGlzLl9mbGFzaF9zZXRWaWRlbyh0aGlzLnN0YXR1cy5tZWRpYSk6dGhpcy5fZmxhc2hfc2V0QXVkaW8odGhpcy5zdGF0dXMubWVkaWEpLHRoaXMuX3VwZGF0ZUJ1dHRvbnMoITEpLHRoaXMuX2Vycm9yKHt0eXBlOmEualBsYXllci5lcnJvci5VUkwsY29udGV4dDpjLnNyYyxtZXNzYWdlOmEualBsYXllci5lcnJvck1zZy5VUkwsaGludDphLmpQbGF5ZXIuZXJyb3JIaW50LlVSTH0pO2JyZWFrO2Nhc2UgYS5qUGxheWVyLmV2ZW50LnNlZWtpbmc6dGhpcy5fc2Vla2luZygpLHRoaXMuX3RyaWdnZXIoYik7YnJlYWs7Y2FzZSBhLmpQbGF5ZXIuZXZlbnQuc2Vla2VkOnRoaXMuX3NlZWtlZCgpLHRoaXMuX3RyaWdnZXIoYik7YnJlYWs7Y2FzZSBhLmpQbGF5ZXIuZXZlbnQucmVhZHk6YnJlYWs7ZGVmYXVsdDp0aGlzLl90cmlnZ2VyKGIpfXJldHVybiExfSxfZ2V0Rmxhc2hTdGF0dXM6ZnVuY3Rpb24oYSl7dGhpcy5zdGF0dXMuc2Vla1BlcmNlbnQ9YS5zZWVrUGVyY2VudCx0aGlzLnN0YXR1cy5jdXJyZW50UGVyY2VudFJlbGF0aXZlPWEuY3VycmVudFBlcmNlbnRSZWxhdGl2ZSx0aGlzLnN0YXR1cy5jdXJyZW50UGVyY2VudEFic29sdXRlPWEuY3VycmVudFBlcmNlbnRBYnNvbHV0ZSx0aGlzLnN0YXR1cy5jdXJyZW50VGltZT1hLmN1cnJlbnRUaW1lLHRoaXMuc3RhdHVzLmR1cmF0aW9uPWEuZHVyYXRpb24sdGhpcy5zdGF0dXMucmVtYWluaW5nPWEuZHVyYXRpb24tYS5jdXJyZW50VGltZSx0aGlzLnN0YXR1cy52aWRlb1dpZHRoPWEudmlkZW9XaWR0aCx0aGlzLnN0YXR1cy52aWRlb0hlaWdodD1hLnZpZGVvSGVpZ2h0LHRoaXMuc3RhdHVzLnJlYWR5U3RhdGU9NCx0aGlzLnN0YXR1cy5uZXR3b3JrU3RhdGU9MCx0aGlzLnN0YXR1cy5wbGF5YmFja1JhdGU9MSx0aGlzLnN0YXR1cy5lbmRlZD0hMX0sX3VwZGF0ZUJ1dHRvbnM6ZnVuY3Rpb24oYSl7YT09PWI/YT0hdGhpcy5zdGF0dXMucGF1c2VkOnRoaXMuc3RhdHVzLnBhdXNlZD0hYSxhP3RoaXMuYWRkU3RhdGVDbGFzcygicGxheWluZyIpOnRoaXMucmVtb3ZlU3RhdGVDbGFzcygicGxheWluZyIpLCF0aGlzLnN0YXR1cy5ub0Z1bGxXaW5kb3cmJnRoaXMub3B0aW9ucy5mdWxsV2luZG93P3RoaXMuYWRkU3RhdGVDbGFzcygiZnVsbFNjcmVlbiIpOnRoaXMucmVtb3ZlU3RhdGVDbGFzcygiZnVsbFNjcmVlbiIpLHRoaXMub3B0aW9ucy5sb29wP3RoaXMuYWRkU3RhdGVDbGFzcygibG9vcGVkIik6dGhpcy5yZW1vdmVTdGF0ZUNsYXNzKCJsb29wZWQiKSx0aGlzLmNzcy5qcS5wbGF5Lmxlbmd0aCYmdGhpcy5jc3MuanEucGF1c2UubGVuZ3RoJiYoYT8odGhpcy5jc3MuanEucGxheS5oaWRlKCksdGhpcy5jc3MuanEucGF1c2Uuc2hvdygpKToodGhpcy5jc3MuanEucGxheS5zaG93KCksdGhpcy5jc3MuanEucGF1c2UuaGlkZSgpKSksdGhpcy5jc3MuanEucmVzdG9yZVNjcmVlbi5sZW5ndGgmJnRoaXMuY3NzLmpxLmZ1bGxTY3JlZW4ubGVuZ3RoJiYodGhpcy5zdGF0dXMubm9GdWxsV2luZG93Pyh0aGlzLmNzcy5qcS5mdWxsU2NyZWVuLmhpZGUoKSx0aGlzLmNzcy5qcS5yZXN0b3JlU2NyZWVuLmhpZGUoKSk6dGhpcy5vcHRpb25zLmZ1bGxXaW5kb3c/KHRoaXMuY3NzLmpxLmZ1bGxTY3JlZW4uaGlkZSgpLHRoaXMuY3NzLmpxLnJlc3RvcmVTY3JlZW4uc2hvdygpKToodGhpcy5jc3MuanEuZnVsbFNjcmVlbi5zaG93KCksdGhpcy5jc3MuanEucmVzdG9yZVNjcmVlbi5oaWRlKCkpKSx0aGlzLmNzcy5qcS5yZXBlYXQubGVuZ3RoJiZ0aGlzLmNzcy5qcS5yZXBlYXRPZmYubGVuZ3RoJiYodGhpcy5vcHRpb25zLmxvb3A/KHRoaXMuY3NzLmpxLnJlcGVhdC5oaWRlKCksdGhpcy5jc3MuanEucmVwZWF0T2ZmLnNob3coKSk6KHRoaXMuY3NzLmpxLnJlcGVhdC5zaG93KCksdGhpcy5jc3MuanEucmVwZWF0T2ZmLmhpZGUoKSkpfSxfdXBkYXRlSW50ZXJmYWNlOmZ1bmN0aW9uKCl7dGhpcy5jc3MuanEuc2Vla0Jhci5sZW5ndGgmJnRoaXMuY3NzLmpxLnNlZWtCYXIud2lkdGgodGhpcy5zdGF0dXMuc2Vla1BlcmNlbnQrIiUiKSx0aGlzLmNzcy5qcS5wbGF5QmFyLmxlbmd0aCYmKHRoaXMub3B0aW9ucy5zbW9vdGhQbGF5QmFyP3RoaXMuY3NzLmpxLnBsYXlCYXIuc3RvcCgpLmFuaW1hdGUoe3dpZHRoOnRoaXMuc3RhdHVzLmN1cnJlbnRQZXJjZW50QWJzb2x1dGUrIiUifSwyNTAsImxpbmVhciIpOnRoaXMuY3NzLmpxLnBsYXlCYXIud2lkdGgodGhpcy5zdGF0dXMuY3VycmVudFBlcmNlbnRSZWxhdGl2ZSsiJSIpKTt2YXIgYT0iIjt0aGlzLmNzcy5qcS5jdXJyZW50VGltZS5sZW5ndGgmJihhPXRoaXMuX2NvbnZlcnRUaW1lKHRoaXMuc3RhdHVzLmN1cnJlbnRUaW1lKSxhIT09dGhpcy5jc3MuanEuY3VycmVudFRpbWUudGV4dCgpJiZ0aGlzLmNzcy5qcS5jdXJyZW50VGltZS50ZXh0KHRoaXMuX2NvbnZlcnRUaW1lKHRoaXMuc3RhdHVzLmN1cnJlbnRUaW1lKSkpO3ZhciBiPSIiLGM9dGhpcy5zdGF0dXMuZHVyYXRpb24sZD10aGlzLnN0YXR1cy5yZW1haW5pbmc7dGhpcy5jc3MuanEuZHVyYXRpb24ubGVuZ3RoJiYoInN0cmluZyI9PXR5cGVvZiB0aGlzLnN0YXR1cy5tZWRpYS5kdXJhdGlvbj9iPXRoaXMuc3RhdHVzLm1lZGlhLmR1cmF0aW9uOigibnVtYmVyIj09dHlwZW9mIHRoaXMuc3RhdHVzLm1lZGlhLmR1cmF0aW9uJiYoYz10aGlzLnN0YXR1cy5tZWRpYS5kdXJhdGlvbixkPWMtdGhpcy5zdGF0dXMuY3VycmVudFRpbWUpLGI9dGhpcy5vcHRpb25zLnJlbWFpbmluZ0R1cmF0aW9uPyhkPjA/Ii0iOiIiKSt0aGlzLl9jb252ZXJ0VGltZShkKTp0aGlzLl9jb252ZXJ0VGltZShjKSksYiE9PXRoaXMuY3NzLmpxLmR1cmF0aW9uLnRleHQoKSYmdGhpcy5jc3MuanEuZHVyYXRpb24udGV4dChiKSl9LF9jb252ZXJ0VGltZTpjLnByb3RvdHlwZS50aW1lLF9zZWVraW5nOmZ1bmN0aW9uKCl7dGhpcy5jc3MuanEuc2Vla0Jhci5sZW5ndGgmJnRoaXMuY3NzLmpxLnNlZWtCYXIuYWRkQ2xhc3MoImpwLXNlZWtpbmctYmciKSx0aGlzLmFkZFN0YXRlQ2xhc3MoInNlZWtpbmciKX0sX3NlZWtlZDpmdW5jdGlvbigpe3RoaXMuY3NzLmpxLnNlZWtCYXIubGVuZ3RoJiZ0aGlzLmNzcy5qcS5zZWVrQmFyLnJlbW92ZUNsYXNzKCJqcC1zZWVraW5nLWJnIiksdGhpcy5yZW1vdmVTdGF0ZUNsYXNzKCJzZWVraW5nIil9LF9yZXNldEdhdGU6ZnVuY3Rpb24oKXt0aGlzLmh0bWwuYXVkaW8uZ2F0ZT0hMSx0aGlzLmh0bWwudmlkZW8uZ2F0ZT0hMSx0aGlzLmF1cm9yYS5nYXRlPSExLHRoaXMuZmxhc2guZ2F0ZT0hMX0sX3Jlc2V0QWN0aXZlOmZ1bmN0aW9uKCl7dGhpcy5odG1sLmFjdGl2ZT0hMSx0aGlzLmF1cm9yYS5hY3RpdmU9ITEsdGhpcy5mbGFzaC5hY3RpdmU9ITF9LF9lc2NhcGVIdG1sOmZ1bmN0aW9uKGEpe3JldHVybiBhLnNwbGl0KCImIikuam9pbigiJmFtcDsiKS5zcGxpdCgiPCIpLmpvaW4oIiZsdDsiKS5zcGxpdCgiPiIpLmpvaW4oIiZndDsiKS5zcGxpdCgnIicpLmpvaW4oIiZxdW90OyIpfSxfcXVhbGlmeVVSTDpmdW5jdGlvbihhKXt2YXIgYj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKcmV0dXJuIGIuaW5uZXJIVE1MPSc8YSBocmVmPSInK3RoaXMuX2VzY2FwZUh0bWwoYSkrJyI+eDwvYT4nLGIuZmlyc3RDaGlsZC5ocmVmfSxfYWJzb2x1dGVNZWRpYVVybHM6ZnVuY3Rpb24oYil7dmFyIGM9dGhpcztyZXR1cm4gYS5lYWNoKGIsZnVuY3Rpb24oYSxkKXtkJiZjLmZvcm1hdFthXSYmImRhdGE6IiE9PWQuc3Vic3RyKDAsNSkmJihiW2FdPWMuX3F1YWxpZnlVUkwoZCkpfSksYn0sYWRkU3RhdGVDbGFzczpmdW5jdGlvbihhKXt0aGlzLmFuY2VzdG9ySnEubGVuZ3RoJiZ0aGlzLmFuY2VzdG9ySnEuYWRkQ2xhc3ModGhpcy5vcHRpb25zLnN0YXRlQ2xhc3NbYV0pfSxyZW1vdmVTdGF0ZUNsYXNzOmZ1bmN0aW9uKGEpe3RoaXMuYW5jZXN0b3JKcS5sZW5ndGgmJnRoaXMuYW5jZXN0b3JKcS5yZW1vdmVDbGFzcyh0aGlzLm9wdGlvbnMuc3RhdGVDbGFzc1thXSl9LHNldE1lZGlhOmZ1bmN0aW9uKGIpe3ZhciBjPXRoaXMsZD0hMSxlPXRoaXMuc3RhdHVzLm1lZGlhLnBvc3RlciE9PWIucG9zdGVyO3RoaXMuX3Jlc2V0TWVkaWEoKSx0aGlzLl9yZXNldEdhdGUoKSx0aGlzLl9yZXNldEFjdGl2ZSgpLHRoaXMuYW5kcm9pZEZpeC5zZXRNZWRpYT0hMSx0aGlzLmFuZHJvaWRGaXgucGxheT0hMSx0aGlzLmFuZHJvaWRGaXgucGF1c2U9ITEsYj10aGlzLl9hYnNvbHV0ZU1lZGlhVXJscyhiKSxhLmVhY2godGhpcy5mb3JtYXRzLGZ1bmN0aW9uKGUsZil7dmFyIGc9InZpZGVvIj09PWMuZm9ybWF0W2ZdLm1lZGlhO3JldHVybiBhLmVhY2goYy5zb2x1dGlvbnMsZnVuY3Rpb24oZSxoKXtpZihjW2hdLnN1cHBvcnRbZl0mJmMuX3ZhbGlkU3RyaW5nKGJbZl0pKXt2YXIgaT0iaHRtbCI9PT1oLGo9ImF1cm9yYSI9PT1oO3JldHVybiBnPyhpPyhjLmh0bWwudmlkZW8uZ2F0ZT0hMCxjLl9odG1sX3NldFZpZGVvKGIpLGMuaHRtbC5hY3RpdmU9ITApOihjLmZsYXNoLmdhdGU9ITAsYy5fZmxhc2hfc2V0VmlkZW8oYiksYy5mbGFzaC5hY3RpdmU9ITApLGMuY3NzLmpxLnZpZGVvUGxheS5sZW5ndGgmJmMuY3NzLmpxLnZpZGVvUGxheS5zaG93KCksYy5zdGF0dXMudmlkZW89ITApOihpPyhjLmh0bWwuYXVkaW8uZ2F0ZT0hMCxjLl9odG1sX3NldEF1ZGlvKGIpLGMuaHRtbC5hY3RpdmU9ITAsYS5qUGxheWVyLnBsYXRmb3JtLmFuZHJvaWQmJihjLmFuZHJvaWRGaXguc2V0TWVkaWE9ITApKTpqPyhjLmF1cm9yYS5nYXRlPSEwLGMuX2F1cm9yYV9zZXRBdWRpbyhiKSxjLmF1cm9yYS5hY3RpdmU9ITApOihjLmZsYXNoLmdhdGU9ITAsYy5fZmxhc2hfc2V0QXVkaW8oYiksYy5mbGFzaC5hY3RpdmU9ITApLGMuY3NzLmpxLnZpZGVvUGxheS5sZW5ndGgmJmMuY3NzLmpxLnZpZGVvUGxheS5oaWRlKCksYy5zdGF0dXMudmlkZW89ITEpLGQ9ITAsITF9fSksZD8hMTp2b2lkIDB9KSxkPyh0aGlzLnN0YXR1cy5uYXRpdmVWaWRlb0NvbnRyb2xzJiZ0aGlzLmh0bWwudmlkZW8uZ2F0ZXx8dGhpcy5fdmFsaWRTdHJpbmcoYi5wb3N0ZXIpJiYoZT90aGlzLmh0bWxFbGVtZW50LnBvc3Rlci5zcmM9Yi5wb3N0ZXI6dGhpcy5pbnRlcm5hbC5wb3N0ZXIuanEuc2hvdygpKSwic3RyaW5nIj09dHlwZW9mIGIudGl0bGUmJih0aGlzLmNzcy5qcS50aXRsZS5sZW5ndGgmJnRoaXMuY3NzLmpxLnRpdGxlLmh0bWwoYi50aXRsZSksdGhpcy5odG1sRWxlbWVudC5hdWRpbyYmdGhpcy5odG1sRWxlbWVudC5hdWRpby5zZXRBdHRyaWJ1dGUoInRpdGxlIixiLnRpdGxlKSx0aGlzLmh0bWxFbGVtZW50LnZpZGVvJiZ0aGlzLmh0bWxFbGVtZW50LnZpZGVvLnNldEF0dHJpYnV0ZSgidGl0bGUiLGIudGl0bGUpKSx0aGlzLnN0YXR1cy5zcmNTZXQ9ITAsdGhpcy5zdGF0dXMubWVkaWE9YS5leHRlbmQoe30sYiksdGhpcy5fdXBkYXRlQnV0dG9ucyghMSksdGhpcy5fdXBkYXRlSW50ZXJmYWNlKCksdGhpcy5fdHJpZ2dlcihhLmpQbGF5ZXIuZXZlbnQuc2V0bWVkaWEpKTp0aGlzLl9lcnJvcih7dHlwZTphLmpQbGF5ZXIuZXJyb3IuTk9fU1VQUE9SVCxjb250ZXh0OiJ7c3VwcGxpZWQ6JyIrdGhpcy5vcHRpb25zLnN1cHBsaWVkKyInfSIsbWVzc2FnZTphLmpQbGF5ZXIuZXJyb3JNc2cuTk9fU1VQUE9SVCxoaW50OmEualBsYXllci5lcnJvckhpbnQuTk9fU1VQUE9SVH0pfSxfcmVzZXRNZWRpYTpmdW5jdGlvbigpe3RoaXMuX3Jlc2V0U3RhdHVzKCksdGhpcy5fdXBkYXRlQnV0dG9ucyghMSksdGhpcy5fdXBkYXRlSW50ZXJmYWNlKCksdGhpcy5fc2Vla2VkKCksdGhpcy5pbnRlcm5hbC5wb3N0ZXIuanEuaGlkZSgpLGNsZWFyVGltZW91dCh0aGlzLmludGVybmFsLmh0bWxEbHlDbWRJZCksdGhpcy5odG1sLmFjdGl2ZT90aGlzLl9odG1sX3Jlc2V0TWVkaWEoKTp0aGlzLmF1cm9yYS5hY3RpdmU/dGhpcy5fYXVyb3JhX3Jlc2V0TWVkaWEoKTp0aGlzLmZsYXNoLmFjdGl2ZSYmdGhpcy5fZmxhc2hfcmVzZXRNZWRpYSgpfSxjbGVhck1lZGlhOmZ1bmN0aW9uKCl7dGhpcy5fcmVzZXRNZWRpYSgpLHRoaXMuaHRtbC5hY3RpdmU/dGhpcy5faHRtbF9jbGVhck1lZGlhKCk6dGhpcy5hdXJvcmEuYWN0aXZlP3RoaXMuX2F1cm9yYV9jbGVhck1lZGlhKCk6dGhpcy5mbGFzaC5hY3RpdmUmJnRoaXMuX2ZsYXNoX2NsZWFyTWVkaWEoKSx0aGlzLl9yZXNldEdhdGUoKSx0aGlzLl9yZXNldEFjdGl2ZSgpfSxsb2FkOmZ1bmN0aW9uKCl7dGhpcy5zdGF0dXMuc3JjU2V0P3RoaXMuaHRtbC5hY3RpdmU/dGhpcy5faHRtbF9sb2FkKCk6dGhpcy5hdXJvcmEuYWN0aXZlP3RoaXMuX2F1cm9yYV9sb2FkKCk6dGhpcy5mbGFzaC5hY3RpdmUmJnRoaXMuX2ZsYXNoX2xvYWQoKTp0aGlzLl91cmxOb3RTZXRFcnJvcigibG9hZCIpfSxmb2N1czpmdW5jdGlvbigpe3RoaXMub3B0aW9ucy5rZXlFbmFibGVkJiYoYS5qUGxheWVyLmZvY3VzPXRoaXMpfSxwbGF5OmZ1bmN0aW9uKGEpe3ZhciBiPSJvYmplY3QiPT10eXBlb2YgYTtiJiZ0aGlzLm9wdGlvbnMudXNlU3RhdGVDbGFzc1NraW4mJiF0aGlzLnN0YXR1cy5wYXVzZWQ/dGhpcy5wYXVzZShhKTooYT0ibnVtYmVyIj09dHlwZW9mIGE/YTowLzAsdGhpcy5zdGF0dXMuc3JjU2V0Pyh0aGlzLmZvY3VzKCksdGhpcy5odG1sLmFjdGl2ZT90aGlzLl9odG1sX3BsYXkoYSk6dGhpcy5hdXJvcmEuYWN0aXZlP3RoaXMuX2F1cm9yYV9wbGF5KGEpOnRoaXMuZmxhc2guYWN0aXZlJiZ0aGlzLl9mbGFzaF9wbGF5KGEpKTp0aGlzLl91cmxOb3RTZXRFcnJvcigicGxheSIpKX0sdmlkZW9QbGF5OmZ1bmN0aW9uKCl7dGhpcy5wbGF5KCl9LHBhdXNlOmZ1bmN0aW9uKGEpe2E9Im51bWJlciI9PXR5cGVvZiBhP2E6MC8wLHRoaXMuc3RhdHVzLnNyY1NldD90aGlzLmh0bWwuYWN0aXZlP3RoaXMuX2h0bWxfcGF1c2UoYSk6dGhpcy5hdXJvcmEuYWN0aXZlP3RoaXMuX2F1cm9yYV9wYXVzZShhKTp0aGlzLmZsYXNoLmFjdGl2ZSYmdGhpcy5fZmxhc2hfcGF1c2UoYSk6dGhpcy5fdXJsTm90U2V0RXJyb3IoInBhdXNlIil9LHRlbGxPdGhlcnM6ZnVuY3Rpb24oYixjKXt2YXIgZD10aGlzLGU9ImZ1bmN0aW9uIj09dHlwZW9mIGMsZj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpOyJzdHJpbmciPT10eXBlb2YgYiYmKGUmJmYuc3BsaWNlKDEsMSksYS5qUGxheWVyLnByb3RvdHlwZS5kZXN0cm95UmVtb3ZlZCgpLGEuZWFjaCh0aGlzLmluc3RhbmNlcyxmdW5jdGlvbigpe2QuZWxlbWVudCE9PXRoaXMmJighZXx8Yy5jYWxsKHRoaXMuZGF0YSgialBsYXllciIpLGQpKSYmdGhpcy5qUGxheWVyLmFwcGx5KHRoaXMsZil9KSl9LHBhdXNlT3RoZXJzOmZ1bmN0aW9uKGEpe3RoaXMudGVsbE90aGVycygicGF1c2UiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RhdHVzLnNyY1NldH0sYSl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLnN0YXR1cy5zcmNTZXQ/dGhpcy5odG1sLmFjdGl2ZT90aGlzLl9odG1sX3BhdXNlKDApOnRoaXMuYXVyb3JhLmFjdGl2ZT90aGlzLl9hdXJvcmFfcGF1c2UoMCk6dGhpcy5mbGFzaC5hY3RpdmUmJnRoaXMuX2ZsYXNoX3BhdXNlKDApOnRoaXMuX3VybE5vdFNldEVycm9yKCJzdG9wIil9LHBsYXlIZWFkOmZ1bmN0aW9uKGEpe2E9dGhpcy5fbGltaXRWYWx1ZShhLDAsMTAwKSx0aGlzLnN0YXR1cy5zcmNTZXQ/dGhpcy5odG1sLmFjdGl2ZT90aGlzLl9odG1sX3BsYXlIZWFkKGEpOnRoaXMuYXVyb3JhLmFjdGl2ZT90aGlzLl9hdXJvcmFfcGxheUhlYWQoYSk6dGhpcy5mbGFzaC5hY3RpdmUmJnRoaXMuX2ZsYXNoX3BsYXlIZWFkKGEpOnRoaXMuX3VybE5vdFNldEVycm9yKCJwbGF5SGVhZCIpfSxfbXV0ZWQ6ZnVuY3Rpb24oYSl7dGhpcy5tdXRlZFdvcmtlcihhKSx0aGlzLm9wdGlvbnMuZ2xvYmFsVm9sdW1lJiZ0aGlzLnRlbGxPdGhlcnMoIm11dGVkV29ya2VyIixmdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdGlvbnMuZ2xvYmFsVm9sdW1lfSxhKX0sbXV0ZWRXb3JrZXI6ZnVuY3Rpb24oYil7dGhpcy5vcHRpb25zLm11dGVkPWIsdGhpcy5odG1sLnVzZWQmJnRoaXMuX2h0bWxfc2V0UHJvcGVydHkoIm11dGVkIixiKSx0aGlzLmF1cm9yYS51c2VkJiZ0aGlzLl9hdXJvcmFfbXV0ZShiKSx0aGlzLmZsYXNoLnVzZWQmJnRoaXMuX2ZsYXNoX211dGUoYiksdGhpcy5odG1sLnZpZGVvLmdhdGV8fHRoaXMuaHRtbC5hdWRpby5nYXRlfHwodGhpcy5fdXBkYXRlTXV0ZShiKSx0aGlzLl91cGRhdGVWb2x1bWUodGhpcy5vcHRpb25zLnZvbHVtZSksdGhpcy5fdHJpZ2dlcihhLmpQbGF5ZXIuZXZlbnQudm9sdW1lY2hhbmdlKSl9LG11dGU6ZnVuY3Rpb24oYSl7dmFyIGM9Im9iamVjdCI9PXR5cGVvZiBhO2MmJnRoaXMub3B0aW9ucy51c2VTdGF0ZUNsYXNzU2tpbiYmdGhpcy5vcHRpb25zLm11dGVkP3RoaXMuX211dGVkKCExKTooYT1hPT09Yj8hMDohIWEsdGhpcy5fbXV0ZWQoYSkpfSx1bm11dGU6ZnVuY3Rpb24oYSl7YT1hPT09Yj8hMDohIWEsdGhpcy5fbXV0ZWQoIWEpfSxfdXBkYXRlTXV0ZTpmdW5jdGlvbihhKXthPT09YiYmKGE9dGhpcy5vcHRpb25zLm11dGVkKSxhP3RoaXMuYWRkU3RhdGVDbGFzcygibXV0ZWQiKTp0aGlzLnJlbW92ZVN0YXRlQ2xhc3MoIm11dGVkIiksdGhpcy5jc3MuanEubXV0ZS5sZW5ndGgmJnRoaXMuY3NzLmpxLnVubXV0ZS5sZW5ndGgmJih0aGlzLnN0YXR1cy5ub1ZvbHVtZT8odGhpcy5jc3MuanEubXV0ZS5oaWRlKCksdGhpcy5jc3MuanEudW5tdXRlLmhpZGUoKSk6YT8odGhpcy5jc3MuanEubXV0ZS5oaWRlKCksdGhpcy5jc3MuanEudW5tdXRlLnNob3coKSk6KHRoaXMuY3NzLmpxLm11dGUuc2hvdygpLHRoaXMuY3NzLmpxLnVubXV0ZS5oaWRlKCkpKX0sdm9sdW1lOmZ1bmN0aW9uKGEpe3RoaXMudm9sdW1lV29ya2VyKGEpLHRoaXMub3B0aW9ucy5nbG9iYWxWb2x1bWUmJnRoaXMudGVsbE90aGVycygidm9sdW1lV29ya2VyIixmdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdGlvbnMuZ2xvYmFsVm9sdW1lfSxhKX0sdm9sdW1lV29ya2VyOmZ1bmN0aW9uKGIpe2I9dGhpcy5fbGltaXRWYWx1ZShiLDAsMSksdGhpcy5vcHRpb25zLnZvbHVtZT1iLHRoaXMuaHRtbC51c2VkJiZ0aGlzLl9odG1sX3NldFByb3BlcnR5KCJ2b2x1bWUiLGIpLHRoaXMuYXVyb3JhLnVzZWQmJnRoaXMuX2F1cm9yYV92b2x1bWUoYiksdGhpcy5mbGFzaC51c2VkJiZ0aGlzLl9mbGFzaF92b2x1bWUoYiksdGhpcy5odG1sLnZpZGVvLmdhdGV8fHRoaXMuaHRtbC5hdWRpby5nYXRlfHwodGhpcy5fdXBkYXRlVm9sdW1lKGIpLHRoaXMuX3RyaWdnZXIoYS5qUGxheWVyLmV2ZW50LnZvbHVtZWNoYW5nZSkpfSx2b2x1bWVCYXI6ZnVuY3Rpb24oYil7aWYodGhpcy5jc3MuanEudm9sdW1lQmFyLmxlbmd0aCl7dmFyIGM9YShiLmN1cnJlbnRUYXJnZXQpLGQ9Yy5vZmZzZXQoKSxlPWIucGFnZVgtZC5sZWZ0LGY9Yy53aWR0aCgpLGc9Yy5oZWlnaHQoKS1iLnBhZ2VZK2QudG9wLGg9Yy5oZWlnaHQoKTt0aGlzLnZvbHVtZSh0aGlzLm9wdGlvbnMudmVydGljYWxWb2x1bWU/Zy9oOmUvZil9dGhpcy5vcHRpb25zLm11dGVkJiZ0aGlzLl9tdXRlZCghMSl9LF91cGRhdGVWb2x1bWU6ZnVuY3Rpb24oYSl7YT09PWImJihhPXRoaXMub3B0aW9ucy52b2x1bWUpLGE9dGhpcy5vcHRpb25zLm11dGVkPzA6YSx0aGlzLnN0YXR1cy5ub1ZvbHVtZT8odGhpcy5hZGRTdGF0ZUNsYXNzKCJub1ZvbHVtZSIpLHRoaXMuY3NzLmpxLnZvbHVtZUJhci5sZW5ndGgmJnRoaXMuY3NzLmpxLnZvbHVtZUJhci5oaWRlKCksdGhpcy5jc3MuanEudm9sdW1lQmFyVmFsdWUubGVuZ3RoJiZ0aGlzLmNzcy5qcS52b2x1bWVCYXJWYWx1ZS5oaWRlKCksdGhpcy5jc3MuanEudm9sdW1lTWF4Lmxlbmd0aCYmdGhpcy5jc3MuanEudm9sdW1lTWF4LmhpZGUoKSk6KHRoaXMucmVtb3ZlU3RhdGVDbGFzcygibm9Wb2x1bWUiKSx0aGlzLmNzcy5qcS52b2x1bWVCYXIubGVuZ3RoJiZ0aGlzLmNzcy5qcS52b2x1bWVCYXIuc2hvdygpLHRoaXMuY3NzLmpxLnZvbHVtZUJhclZhbHVlLmxlbmd0aCYmKHRoaXMuY3NzLmpxLnZvbHVtZUJhclZhbHVlLnNob3coKSx0aGlzLmNzcy5qcS52b2x1bWVCYXJWYWx1ZVt0aGlzLm9wdGlvbnMudmVydGljYWxWb2x1bWU/ImhlaWdodCI6IndpZHRoIl0oMTAwKmErIiUiKSksdGhpcy5jc3MuanEudm9sdW1lTWF4Lmxlbmd0aCYmdGhpcy5jc3MuanEudm9sdW1lTWF4LnNob3coKSl9LHZvbHVtZU1heDpmdW5jdGlvbigpe3RoaXMudm9sdW1lKDEpLHRoaXMub3B0aW9ucy5tdXRlZCYmdGhpcy5fbXV0ZWQoITEpfSxfY3NzU2VsZWN0b3JBbmNlc3RvcjpmdW5jdGlvbihiKXt2YXIgYz10aGlzO3RoaXMub3B0aW9ucy5jc3NTZWxlY3RvckFuY2VzdG9yPWIsdGhpcy5fcmVtb3ZlVWlDbGFzcygpLHRoaXMuYW5jZXN0b3JKcT1iP2EoYik6W10sYiYmMSE9PXRoaXMuYW5jZXN0b3JKcS5sZW5ndGgmJnRoaXMuX3dhcm5pbmcoe3R5cGU6YS5qUGxheWVyLndhcm5pbmcuQ1NTX1NFTEVDVE9SX0NPVU5ULGNvbnRleHQ6YixtZXNzYWdlOmEualBsYXllci53YXJuaW5nTXNnLkNTU19TRUxFQ1RPUl9DT1VOVCt0aGlzLmFuY2VzdG9ySnEubGVuZ3RoKyIgZm91bmQgZm9yIGNzc1NlbGVjdG9yQW5jZXN0b3IuIixoaW50OmEualBsYXllci53YXJuaW5nSGludC5DU1NfU0VMRUNUT1JfQ09VTlR9KSx0aGlzLl9hZGRVaUNsYXNzKCksYS5lYWNoKHRoaXMub3B0aW9ucy5jc3NTZWxlY3RvcixmdW5jdGlvbihhLGIpe2MuX2Nzc1NlbGVjdG9yKGEsYil9KSx0aGlzLl91cGRhdGVJbnRlcmZhY2UoKSx0aGlzLl91cGRhdGVCdXR0b25zKCksdGhpcy5fdXBkYXRlQXV0b2hpZGUoKSx0aGlzLl91cGRhdGVWb2x1bWUoKSx0aGlzLl91cGRhdGVNdXRlKCl9LF9jc3NTZWxlY3RvcjpmdW5jdGlvbihiLGMpe3ZhciBkPXRoaXM7aWYoInN0cmluZyI9PXR5cGVvZiBjKWlmKGEualBsYXllci5wcm90b3R5cGUub3B0aW9ucy5jc3NTZWxlY3RvcltiXSl7aWYodGhpcy5jc3MuanFbYl0mJnRoaXMuY3NzLmpxW2JdLmxlbmd0aCYmdGhpcy5jc3MuanFbYl0udW5iaW5kKCIualBsYXllciIpLHRoaXMub3B0aW9ucy5jc3NTZWxlY3RvcltiXT1jLHRoaXMuY3NzLmNzW2JdPXRoaXMub3B0aW9ucy5jc3NTZWxlY3RvckFuY2VzdG9yKyIgIitjLHRoaXMuY3NzLmpxW2JdPWM/YSh0aGlzLmNzcy5jc1tiXSk6W10sdGhpcy5jc3MuanFbYl0ubGVuZ3RoJiZ0aGlzW2JdKXt2YXIgZT1mdW5jdGlvbihjKXtjLnByZXZlbnREZWZhdWx0KCksZFtiXShjKSxkLm9wdGlvbnMuYXV0b0JsdXI/YSh0aGlzKS5ibHVyKCk6YSh0aGlzKS5mb2N1cygpfTt0aGlzLmNzcy5qcVtiXS5iaW5kKCJjbGljay5qUGxheWVyIixlKX1jJiYxIT09dGhpcy5jc3MuanFbYl0ubGVuZ3RoJiZ0aGlzLl93YXJuaW5nKHt0eXBlOmEualBsYXllci53YXJuaW5nLkNTU19TRUxFQ1RPUl9DT1VOVCxjb250ZXh0OnRoaXMuY3NzLmNzW2JdLG1lc3NhZ2U6YS5qUGxheWVyLndhcm5pbmdNc2cuQ1NTX1NFTEVDVE9SX0NPVU5UK3RoaXMuY3NzLmpxW2JdLmxlbmd0aCsiIGZvdW5kIGZvciAiK2IrIiBtZXRob2QuIixoaW50OmEualBsYXllci53YXJuaW5nSGludC5DU1NfU0VMRUNUT1JfQ09VTlR9KX1lbHNlIHRoaXMuX3dhcm5pbmcoe3R5cGU6YS5qUGxheWVyLndhcm5pbmcuQ1NTX1NFTEVDVE9SX01FVEhPRCxjb250ZXh0OmIsbWVzc2FnZTphLmpQbGF5ZXIud2FybmluZ01zZy5DU1NfU0VMRUNUT1JfTUVUSE9ELGhpbnQ6YS5qUGxheWVyLndhcm5pbmdIaW50LkNTU19TRUxFQ1RPUl9NRVRIT0R9KTtlbHNlIHRoaXMuX3dhcm5pbmcoe3R5cGU6YS5qUGxheWVyLndhcm5pbmcuQ1NTX1NFTEVDVE9SX1NUUklORyxjb250ZXh0OmMsbWVzc2FnZTphLmpQbGF5ZXIud2FybmluZ01zZy5DU1NfU0VMRUNUT1JfU1RSSU5HLGhpbnQ6YS5qUGxheWVyLndhcm5pbmdIaW50LkNTU19TRUxFQ1RPUl9TVFJJTkd9KX0sZHVyYXRpb246ZnVuY3Rpb24oYSl7dGhpcy5vcHRpb25zLnRvZ2dsZUR1cmF0aW9uJiYodGhpcy5vcHRpb25zLmNhcHR1cmVEdXJhdGlvbiYmYS5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLl9zZXRPcHRpb24oInJlbWFpbmluZ0R1cmF0aW9uIiwhdGhpcy5vcHRpb25zLnJlbWFpbmluZ0R1cmF0aW9uKSl9LHNlZWtCYXI6ZnVuY3Rpb24oYil7aWYodGhpcy5jc3MuanEuc2Vla0Jhci5sZW5ndGgpe3ZhciBjPWEoYi5jdXJyZW50VGFyZ2V0KSxkPWMub2Zmc2V0KCksZT1iLnBhZ2VYLWQubGVmdCxmPWMud2lkdGgoKSxnPTEwMCplL2Y7dGhpcy5wbGF5SGVhZChnKX19LHBsYXliYWNrUmF0ZTpmdW5jdGlvbihhKXt0aGlzLl9zZXRPcHRpb24oInBsYXliYWNrUmF0ZSIsYSl9LHBsYXliYWNrUmF0ZUJhcjpmdW5jdGlvbihiKXtpZih0aGlzLmNzcy5qcS5wbGF5YmFja1JhdGVCYXIubGVuZ3RoKXt2YXIgYyxkLGU9YShiLmN1cnJlbnRUYXJnZXQpLGY9ZS5vZmZzZXQoKSxnPWIucGFnZVgtZi5sZWZ0LGg9ZS53aWR0aCgpLGk9ZS5oZWlnaHQoKS1iLnBhZ2VZK2YudG9wLGo9ZS5oZWlnaHQoKTtjPXRoaXMub3B0aW9ucy52ZXJ0aWNhbFBsYXliYWNrUmF0ZT9pL2o6Zy9oLGQ9YyoodGhpcy5vcHRpb25zLm1heFBsYXliYWNrUmF0ZS10aGlzLm9wdGlvbnMubWluUGxheWJhY2tSYXRlKSt0aGlzLm9wdGlvbnMubWluUGxheWJhY2tSYXRlLHRoaXMucGxheWJhY2tSYXRlKGQpfX0sX3VwZGF0ZVBsYXliYWNrUmF0ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3B0aW9ucy5wbGF5YmFja1JhdGUsYj0oYS10aGlzLm9wdGlvbnMubWluUGxheWJhY2tSYXRlKS8odGhpcy5vcHRpb25zLm1heFBsYXliYWNrUmF0ZS10aGlzLm9wdGlvbnMubWluUGxheWJhY2tSYXRlKTt0aGlzLnN0YXR1cy5wbGF5YmFja1JhdGVFbmFibGVkPyh0aGlzLmNzcy5qcS5wbGF5YmFja1JhdGVCYXIubGVuZ3RoJiZ0aGlzLmNzcy5qcS5wbGF5YmFja1JhdGVCYXIuc2hvdygpLHRoaXMuY3NzLmpxLnBsYXliYWNrUmF0ZUJhclZhbHVlLmxlbmd0aCYmKHRoaXMuY3NzLmpxLnBsYXliYWNrUmF0ZUJhclZhbHVlLnNob3coKSx0aGlzLmNzcy5qcS5wbGF5YmFja1JhdGVCYXJWYWx1ZVt0aGlzLm9wdGlvbnMudmVydGljYWxQbGF5YmFja1JhdGU/ImhlaWdodCI6IndpZHRoIl0oMTAwKmIrIiUiKSkpOih0aGlzLmNzcy5qcS5wbGF5YmFja1JhdGVCYXIubGVuZ3RoJiZ0aGlzLmNzcy5qcS5wbGF5YmFja1JhdGVCYXIuaGlkZSgpLHRoaXMuY3NzLmpxLnBsYXliYWNrUmF0ZUJhclZhbHVlLmxlbmd0aCYmdGhpcy5jc3MuanEucGxheWJhY2tSYXRlQmFyVmFsdWUuaGlkZSgpKX0scmVwZWF0OmZ1bmN0aW9uKGEpe3ZhciBiPSJvYmplY3QiPT10eXBlb2YgYTt0aGlzLl9sb29wKGImJnRoaXMub3B0aW9ucy51c2VTdGF0ZUNsYXNzU2tpbiYmdGhpcy5vcHRpb25zLmxvb3A/ITE6ITApfSxyZXBlYXRPZmY6ZnVuY3Rpb24oKXt0aGlzLl9sb29wKCExKX0sX2xvb3A6ZnVuY3Rpb24oYil7dGhpcy5vcHRpb25zLmxvb3AhPT1iJiYodGhpcy5vcHRpb25zLmxvb3A9Yix0aGlzLl91cGRhdGVCdXR0b25zKCksdGhpcy5fdHJpZ2dlcihhLmpQbGF5ZXIuZXZlbnQucmVwZWF0KSl9LG9wdGlvbjpmdW5jdGlvbihjLGQpe3ZhciBlPWM7aWYoMD09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGEuZXh0ZW5kKCEwLHt9LHRoaXMub3B0aW9ucyk7aWYoInN0cmluZyI9PXR5cGVvZiBjKXt2YXIgZj1jLnNwbGl0KCIuIik7aWYoZD09PWIpe2Zvcih2YXIgZz1hLmV4dGVuZCghMCx7fSx0aGlzLm9wdGlvbnMpLGg9MDtoPGYubGVuZ3RoO2grKyl7aWYoZ1tmW2hdXT09PWIpcmV0dXJuIHRoaXMuX3dhcm5pbmcoe3R5cGU6YS5qUGxheWVyLndhcm5pbmcuT1BUSU9OX0tFWSxjb250ZXh0OmMsbWVzc2FnZTphLmpQbGF5ZXIud2FybmluZ01zZy5PUFRJT05fS0VZLGhpbnQ6YS5qUGxheWVyLndhcm5pbmdIaW50Lk9QVElPTl9LRVl9KSxiO2c9Z1tmW2hdXX1yZXR1cm4gZ31lPXt9O2Zvcih2YXIgaT1lLGo9MDtqPGYubGVuZ3RoO2orKylqPGYubGVuZ3RoLTE/KGlbZltqXV09e30saT1pW2Zbal1dKTppW2Zbal1dPWR9cmV0dXJuIHRoaXMuX3NldE9wdGlvbnMoZSksdGhpc30sX3NldE9wdGlvbnM6ZnVuY3Rpb24oYil7dmFyIGM9dGhpcztyZXR1cm4gYS5lYWNoKGIsZnVuY3Rpb24oYSxiKXtjLl9zZXRPcHRpb24oYSxiKX0pLHRoaXN9LF9zZXRPcHRpb246ZnVuY3Rpb24oYixjKXt2YXIgZD10aGlzO3N3aXRjaChiKXtjYXNlInZvbHVtZSI6dGhpcy52b2x1bWUoYyk7YnJlYWs7Y2FzZSJtdXRlZCI6dGhpcy5fbXV0ZWQoYyk7YnJlYWs7Y2FzZSJnbG9iYWxWb2x1bWUiOnRoaXMub3B0aW9uc1tiXT1jO2JyZWFrO2Nhc2UiY3NzU2VsZWN0b3JBbmNlc3RvciI6dGhpcy5fY3NzU2VsZWN0b3JBbmNlc3RvcihjKTticmVhaztjYXNlImNzc1NlbGVjdG9yIjphLmVhY2goYyxmdW5jdGlvbihhLGIpe2QuX2Nzc1NlbGVjdG9yKGEsYil9KTticmVhaztjYXNlInBsYXliYWNrUmF0ZSI6dGhpcy5vcHRpb25zW2JdPWM9dGhpcy5fbGltaXRWYWx1ZShjLHRoaXMub3B0aW9ucy5taW5QbGF5YmFja1JhdGUsdGhpcy5vcHRpb25zLm1heFBsYXliYWNrUmF0ZSksdGhpcy5odG1sLnVzZWQmJnRoaXMuX2h0bWxfc2V0UHJvcGVydHkoInBsYXliYWNrUmF0ZSIsYyksdGhpcy5fdXBkYXRlUGxheWJhY2tSYXRlKCk7YnJlYWs7Y2FzZSJkZWZhdWx0UGxheWJhY2tSYXRlIjp0aGlzLm9wdGlvbnNbYl09Yz10aGlzLl9saW1pdFZhbHVlKGMsdGhpcy5vcHRpb25zLm1pblBsYXliYWNrUmF0ZSx0aGlzLm9wdGlvbnMubWF4UGxheWJhY2tSYXRlKSx0aGlzLmh0bWwudXNlZCYmdGhpcy5faHRtbF9zZXRQcm9wZXJ0eSgiZGVmYXVsdFBsYXliYWNrUmF0ZSIsYyksdGhpcy5fdXBkYXRlUGxheWJhY2tSYXRlKCk7YnJlYWs7Y2FzZSJtaW5QbGF5YmFja1JhdGUiOnRoaXMub3B0aW9uc1tiXT1jPXRoaXMuX2xpbWl0VmFsdWUoYywuMSx0aGlzLm9wdGlvbnMubWF4UGxheWJhY2tSYXRlLS4xKSx0aGlzLl91cGRhdGVQbGF5YmFja1JhdGUoKTticmVhaztjYXNlIm1heFBsYXliYWNrUmF0ZSI6dGhpcy5vcHRpb25zW2JdPWM9dGhpcy5fbGltaXRWYWx1ZShjLHRoaXMub3B0aW9ucy5taW5QbGF5YmFja1JhdGUrLjEsMTYpLHRoaXMuX3VwZGF0ZVBsYXliYWNrUmF0ZSgpO2JyZWFrO2Nhc2UiZnVsbFNjcmVlbiI6aWYodGhpcy5vcHRpb25zW2JdIT09Yyl7dmFyIGU9YS5qUGxheWVyLm5hdGl2ZUZlYXR1cmVzLmZ1bGxzY3JlZW4udXNlZC53ZWJraXRWaWRlbzsoIWV8fGUmJiF0aGlzLnN0YXR1cy53YWl0Rm9yUGxheSkmJihlfHwodGhpcy5vcHRpb25zW2JdPWMpLGM/dGhpcy5fcmVxdWVzdEZ1bGxzY3JlZW4oKTp0aGlzLl9leGl0RnVsbHNjcmVlbigpLGV8fHRoaXMuX3NldE9wdGlvbigiZnVsbFdpbmRvdyIsYykpfWJyZWFrO2Nhc2UiZnVsbFdpbmRvdyI6dGhpcy5vcHRpb25zW2JdIT09YyYmKHRoaXMuX3JlbW92ZVVpQ2xhc3MoKSx0aGlzLm9wdGlvbnNbYl09Yyx0aGlzLl9yZWZyZXNoU2l6ZSgpKTticmVhaztjYXNlInNpemUiOnRoaXMub3B0aW9ucy5mdWxsV2luZG93fHx0aGlzLm9wdGlvbnNbYl0uY3NzQ2xhc3M9PT1jLmNzc0NsYXNzfHx0aGlzLl9yZW1vdmVVaUNsYXNzKCksdGhpcy5vcHRpb25zW2JdPWEuZXh0ZW5kKHt9LHRoaXMub3B0aW9uc1tiXSxjKSx0aGlzLl9yZWZyZXNoU2l6ZSgpO2JyZWFrO2Nhc2Uic2l6ZUZ1bGwiOnRoaXMub3B0aW9ucy5mdWxsV2luZG93JiZ0aGlzLm9wdGlvbnNbYl0uY3NzQ2xhc3MhPT1jLmNzc0NsYXNzJiZ0aGlzLl9yZW1vdmVVaUNsYXNzKCksdGhpcy5vcHRpb25zW2JdPWEuZXh0ZW5kKHt9LHRoaXMub3B0aW9uc1tiXSxjKSx0aGlzLl9yZWZyZXNoU2l6ZSgpO2JyZWFrO2Nhc2UiYXV0b2hpZGUiOnRoaXMub3B0aW9uc1tiXT1hLmV4dGVuZCh7fSx0aGlzLm9wdGlvbnNbYl0sYyksdGhpcy5fdXBkYXRlQXV0b2hpZGUoKTticmVhaztjYXNlImxvb3AiOnRoaXMuX2xvb3AoYyk7YnJlYWs7Y2FzZSJyZW1haW5pbmdEdXJhdGlvbiI6dGhpcy5vcHRpb25zW2JdPWMsdGhpcy5fdXBkYXRlSW50ZXJmYWNlKCk7YnJlYWs7Y2FzZSJ0b2dnbGVEdXJhdGlvbiI6dGhpcy5vcHRpb25zW2JdPWM7YnJlYWs7Y2FzZSJuYXRpdmVWaWRlb0NvbnRyb2xzIjp0aGlzLm9wdGlvbnNbYl09YS5leHRlbmQoe30sdGhpcy5vcHRpb25zW2JdLGMpLHRoaXMuc3RhdHVzLm5hdGl2ZVZpZGVvQ29udHJvbHM9dGhpcy5fdWFCbG9ja2xpc3QodGhpcy5vcHRpb25zLm5hdGl2ZVZpZGVvQ29udHJvbHMpLHRoaXMuX3Jlc3RyaWN0TmF0aXZlVmlkZW9Db250cm9scygpLHRoaXMuX3VwZGF0ZU5hdGl2ZVZpZGVvQ29udHJvbHMoKTticmVhaztjYXNlIm5vRnVsbFdpbmRvdyI6dGhpcy5vcHRpb25zW2JdPWEuZXh0ZW5kKHt9LHRoaXMub3B0aW9uc1tiXSxjKSx0aGlzLnN0YXR1cy5uYXRpdmVWaWRlb0NvbnRyb2xzPXRoaXMuX3VhQmxvY2tsaXN0KHRoaXMub3B0aW9ucy5uYXRpdmVWaWRlb0NvbnRyb2xzKSx0aGlzLnN0YXR1cy5ub0Z1bGxXaW5kb3c9dGhpcy5fdWFCbG9ja2xpc3QodGhpcy5vcHRpb25zLm5vRnVsbFdpbmRvdyksdGhpcy5fcmVzdHJpY3ROYXRpdmVWaWRlb0NvbnRyb2xzKCksdGhpcy5fdXBkYXRlQnV0dG9ucygpO2JyZWFrO2Nhc2Uibm9Wb2x1bWUiOnRoaXMub3B0aW9uc1tiXT1hLmV4dGVuZCh7fSx0aGlzLm9wdGlvbnNbYl0sYyksdGhpcy5zdGF0dXMubm9Wb2x1bWU9dGhpcy5fdWFCbG9ja2xpc3QodGhpcy5vcHRpb25zLm5vVm9sdW1lKSx0aGlzLl91cGRhdGVWb2x1bWUoKSx0aGlzLl91cGRhdGVNdXRlKCk7YnJlYWs7Y2FzZSJlbXVsYXRlSHRtbCI6dGhpcy5vcHRpb25zW2JdIT09YyYmKHRoaXMub3B0aW9uc1tiXT1jLGM/dGhpcy5fZW11bGF0ZUh0bWxCcmlkZ2UoKTp0aGlzLl9kZXN0cm95SHRtbEJyaWRnZSgpKTticmVhaztjYXNlInRpbWVGb3JtYXQiOnRoaXMub3B0aW9uc1tiXT1hLmV4dGVuZCh7fSx0aGlzLm9wdGlvbnNbYl0sYyk7YnJlYWs7Y2FzZSJrZXlFbmFibGVkIjp0aGlzLm9wdGlvbnNbYl09YyxjfHx0aGlzIT09YS5qUGxheWVyLmZvY3VzfHwoYS5qUGxheWVyLmZvY3VzPW51bGwpO2JyZWFrO2Nhc2Uia2V5QmluZGluZ3MiOnRoaXMub3B0aW9uc1tiXT1hLmV4dGVuZCghMCx7fSx0aGlzLm9wdGlvbnNbYl0sYyk7YnJlYWs7Y2FzZSJhdWRpb0Z1bGxTY3JlZW4iOnRoaXMub3B0aW9uc1tiXT1jO2JyZWFrO2Nhc2UiYXV0b0JsdXIiOnRoaXMub3B0aW9uc1tiXT1jfXJldHVybiB0aGlzfSxfcmVmcmVzaFNpemU6ZnVuY3Rpb24oKXt0aGlzLl9zZXRTaXplKCksdGhpcy5fYWRkVWlDbGFzcygpLHRoaXMuX3VwZGF0ZVNpemUoKSx0aGlzLl91cGRhdGVCdXR0b25zKCksdGhpcy5fdXBkYXRlQXV0b2hpZGUoKSx0aGlzLl90cmlnZ2VyKGEualBsYXllci5ldmVudC5yZXNpemUpfSxfc2V0U2l6ZTpmdW5jdGlvbigpe3RoaXMub3B0aW9ucy5mdWxsV2luZG93Pyh0aGlzLnN0YXR1cy53aWR0aD10aGlzLm9wdGlvbnMuc2l6ZUZ1bGwud2lkdGgsdGhpcy5zdGF0dXMuaGVpZ2h0PXRoaXMub3B0aW9ucy5zaXplRnVsbC5oZWlnaHQsdGhpcy5zdGF0dXMuY3NzQ2xhc3M9dGhpcy5vcHRpb25zLnNpemVGdWxsLmNzc0NsYXNzKToodGhpcy5zdGF0dXMud2lkdGg9dGhpcy5vcHRpb25zLnNpemUud2lkdGgsdGhpcy5zdGF0dXMuaGVpZ2h0PXRoaXMub3B0aW9ucy5zaXplLmhlaWdodCx0aGlzLnN0YXR1cy5jc3NDbGFzcz10aGlzLm9wdGlvbnMuc2l6ZS5jc3NDbGFzcyksdGhpcy5lbGVtZW50LmNzcyh7d2lkdGg6dGhpcy5zdGF0dXMud2lkdGgsaGVpZ2h0OnRoaXMuc3RhdHVzLmhlaWdodH0pfSxfYWRkVWlDbGFzczpmdW5jdGlvbigpe3RoaXMuYW5jZXN0b3JKcS5sZW5ndGgmJnRoaXMuYW5jZXN0b3JKcS5hZGRDbGFzcyh0aGlzLnN0YXR1cy5jc3NDbGFzcyl9LF9yZW1vdmVVaUNsYXNzOmZ1bmN0aW9uKCl7dGhpcy5hbmNlc3RvckpxLmxlbmd0aCYmdGhpcy5hbmNlc3RvckpxLnJlbW92ZUNsYXNzKHRoaXMuc3RhdHVzLmNzc0NsYXNzKX0sX3VwZGF0ZVNpemU6ZnVuY3Rpb24oKXt0aGlzLmludGVybmFsLnBvc3Rlci5qcS5jc3Moe3dpZHRoOnRoaXMuc3RhdHVzLndpZHRoLGhlaWdodDp0aGlzLnN0YXR1cy5oZWlnaHR9KSwhdGhpcy5zdGF0dXMud2FpdEZvclBsYXkmJnRoaXMuaHRtbC5hY3RpdmUmJnRoaXMuc3RhdHVzLnZpZGVvfHx0aGlzLmh0bWwudmlkZW8uYXZhaWxhYmxlJiZ0aGlzLmh0bWwudXNlZCYmdGhpcy5zdGF0dXMubmF0aXZlVmlkZW9Db250cm9scz90aGlzLmludGVybmFsLnZpZGVvLmpxLmNzcyh7d2lkdGg6dGhpcy5zdGF0dXMud2lkdGgsaGVpZ2h0OnRoaXMuc3RhdHVzLmhlaWdodH0pOiF0aGlzLnN0YXR1cy53YWl0Rm9yUGxheSYmdGhpcy5mbGFzaC5hY3RpdmUmJnRoaXMuc3RhdHVzLnZpZGVvJiZ0aGlzLmludGVybmFsLmZsYXNoLmpxLmNzcyh7d2lkdGg6dGhpcy5zdGF0dXMud2lkdGgsaGVpZ2h0OnRoaXMuc3RhdHVzLmhlaWdodH0pfSxfdXBkYXRlQXV0b2hpZGU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGI9Im1vdXNlbW92ZS5qUGxheWVyIixjPSIualBsYXllckF1dG9oaWRlIixkPWIrYyxlPWZ1bmN0aW9uKGIpe3ZhciBjLGQsZT0hMTsidW5kZWZpbmVkIiE9dHlwZW9mIGEuaW50ZXJuYWwubW91c2U/KGM9YS5pbnRlcm5hbC5tb3VzZS54LWIucGFnZVgsZD1hLmludGVybmFsLm1vdXNlLnktYi5wYWdlWSxlPU1hdGguZmxvb3IoYyk+MHx8TWF0aC5mbG9vcihkKT4wKTplPSEwLGEuaW50ZXJuYWwubW91c2U9e3g6Yi5wYWdlWCx5OmIucGFnZVl9LGUmJmEuY3NzLmpxLmd1aS5mYWRlSW4oYS5vcHRpb25zLmF1dG9oaWRlLmZhZGVJbixmdW5jdGlvbigpe2NsZWFyVGltZW91dChhLmludGVybmFsLmF1dG9oaWRlSWQpLGEuaW50ZXJuYWwuYXV0b2hpZGVJZD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YS5jc3MuanEuZ3VpLmZhZGVPdXQoYS5vcHRpb25zLmF1dG9oaWRlLmZhZGVPdXQpfSxhLm9wdGlvbnMuYXV0b2hpZGUuaG9sZCl9KX07dGhpcy5jc3MuanEuZ3VpLmxlbmd0aCYmKHRoaXMuY3NzLmpxLmd1aS5zdG9wKCEwLCEwKSxjbGVhclRpbWVvdXQodGhpcy5pbnRlcm5hbC5hdXRvaGlkZUlkKSxkZWxldGUgdGhpcy5pbnRlcm5hbC5tb3VzZSx0aGlzLmVsZW1lbnQudW5iaW5kKGMpLHRoaXMuY3NzLmpxLmd1aS51bmJpbmQoYyksdGhpcy5zdGF0dXMubmF0aXZlVmlkZW9Db250cm9scz90aGlzLmNzcy5qcS5ndWkuaGlkZSgpOnRoaXMub3B0aW9ucy5mdWxsV2luZG93JiZ0aGlzLm9wdGlvbnMuYXV0b2hpZGUuZnVsbHx8IXRoaXMub3B0aW9ucy5mdWxsV2luZG93JiZ0aGlzLm9wdGlvbnMuYXV0b2hpZGUucmVzdG9yZWQ/KHRoaXMuZWxlbWVudC5iaW5kKGQsZSksdGhpcy5jc3MuanEuZ3VpLmJpbmQoZCxlKSx0aGlzLmNzcy5qcS5ndWkuaGlkZSgpKTp0aGlzLmNzcy5qcS5ndWkuc2hvdygpKX0sZnVsbFNjcmVlbjpmdW5jdGlvbihhKXt2YXIgYj0ib2JqZWN0Ij09dHlwZW9mIGE7YiYmdGhpcy5vcHRpb25zLnVzZVN0YXRlQ2xhc3NTa2luJiZ0aGlzLm9wdGlvbnMuZnVsbFNjcmVlbj90aGlzLl9zZXRPcHRpb24oImZ1bGxTY3JlZW4iLCExKTp0aGlzLl9zZXRPcHRpb24oImZ1bGxTY3JlZW4iLCEwKX0scmVzdG9yZVNjcmVlbjpmdW5jdGlvbigpe3RoaXMuX3NldE9wdGlvbigiZnVsbFNjcmVlbiIsITEpfSxfZnVsbHNjcmVlbkFkZEV2ZW50TGlzdGVuZXJzOmZ1bmN0aW9uKCl7dmFyIGI9dGhpcyxjPWEualBsYXllci5uYXRpdmVGZWF0dXJlcy5mdWxsc2NyZWVuO2MuYXBpLmZ1bGxzY3JlZW5FbmFibGVkJiZjLmV2ZW50LmZ1bGxzY3JlZW5jaGFuZ2UmJigiZnVuY3Rpb24iIT10eXBlb2YgdGhpcy5pbnRlcm5hbC5mdWxsc2NyZWVuY2hhbmdlSGFuZGxlciYmKHRoaXMuaW50ZXJuYWwuZnVsbHNjcmVlbmNoYW5nZUhhbmRsZXI9ZnVuY3Rpb24oKXtiLl9mdWxsc2NyZWVuY2hhbmdlKCl9KSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKGMuZXZlbnQuZnVsbHNjcmVlbmNoYW5nZSx0aGlzLmludGVybmFsLmZ1bGxzY3JlZW5jaGFuZ2VIYW5kbGVyLCExKSl9LF9mdWxsc2NyZWVuUmVtb3ZlRXZlbnRMaXN0ZW5lcnM6ZnVuY3Rpb24oKXt2YXIgYj1hLmpQbGF5ZXIubmF0aXZlRmVhdHVyZXMuZnVsbHNjcmVlbjt0aGlzLmludGVybmFsLmZ1bGxzY3JlZW5jaGFuZ2VIYW5kbGVyJiZkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKGIuZXZlbnQuZnVsbHNjcmVlbmNoYW5nZSx0aGlzLmludGVybmFsLmZ1bGxzY3JlZW5jaGFuZ2VIYW5kbGVyLCExKX0sX2Z1bGxzY3JlZW5jaGFuZ2U6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMuZnVsbFNjcmVlbiYmIWEualBsYXllci5uYXRpdmVGZWF0dXJlcy5mdWxsc2NyZWVuLmFwaS5mdWxsc2NyZWVuRWxlbWVudCgpJiZ0aGlzLl9zZXRPcHRpb24oImZ1bGxTY3JlZW4iLCExKX0sX3JlcXVlc3RGdWxsc2NyZWVuOmZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5hbmNlc3RvckpxLmxlbmd0aD90aGlzLmFuY2VzdG9ySnFbMF06dGhpcy5lbGVtZW50WzBdLGM9YS5qUGxheWVyLm5hdGl2ZUZlYXR1cmVzLmZ1bGxzY3JlZW47Yy51c2VkLndlYmtpdFZpZGVvJiYoYj10aGlzLmh0bWxFbGVtZW50LnZpZGVvKSxjLmFwaS5mdWxsc2NyZWVuRW5hYmxlZCYmYy5hcGkucmVxdWVzdEZ1bGxzY3JlZW4oYil9LF9leGl0RnVsbHNjcmVlbjpmdW5jdGlvbigpe3ZhciBiLGM9YS5qUGxheWVyLm5hdGl2ZUZlYXR1cmVzLmZ1bGxzY3JlZW47Yy51c2VkLndlYmtpdFZpZGVvJiYoYj10aGlzLmh0bWxFbGVtZW50LnZpZGVvKSxjLmFwaS5mdWxsc2NyZWVuRW5hYmxlZCYmYy5hcGkuZXhpdEZ1bGxzY3JlZW4oYil9LF9odG1sX2luaXRNZWRpYTpmdW5jdGlvbihiKXt2YXIgYz1hKHRoaXMuaHRtbEVsZW1lbnQubWVkaWEpLmVtcHR5KCk7YS5lYWNoKGIudHJhY2t8fFtdLGZ1bmN0aW9uKGEsYil7dmFyIGQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHJhY2siKTtkLnNldEF0dHJpYnV0ZSgia2luZCIsYi5raW5kP2Iua2luZDoiIiksZC5zZXRBdHRyaWJ1dGUoInNyYyIsYi5zcmM/Yi5zcmM6IiIpLGQuc2V0QXR0cmlidXRlKCJzcmNsYW5nIixiLnNyY2xhbmc/Yi5zcmNsYW5nOiIiKSxkLnNldEF0dHJpYnV0ZSgibGFiZWwiLGIubGFiZWw/Yi5sYWJlbDoiIiksYi5kZWYmJmQuc2V0QXR0cmlidXRlKCJkZWZhdWx0IixiLmRlZiksYy5hcHBlbmQoZCl9KSx0aGlzLmh0bWxFbGVtZW50Lm1lZGlhLnNyYz10aGlzLnN0YXR1cy5zcmMsIm5vbmUiIT09dGhpcy5vcHRpb25zLnByZWxvYWQmJnRoaXMuX2h0bWxfbG9hZCgpLHRoaXMuX3RyaWdnZXIoYS5qUGxheWVyLmV2ZW50LnRpbWV1cGRhdGUpfSxfaHRtbF9zZXRGb3JtYXQ6ZnVuY3Rpb24oYil7dmFyIGM9dGhpczthLmVhY2godGhpcy5mb3JtYXRzLGZ1bmN0aW9uKGEsZCl7cmV0dXJuIGMuaHRtbC5zdXBwb3J0W2RdJiZiW2RdPyhjLnN0YXR1cy5zcmM9YltkXSxjLnN0YXR1cy5mb3JtYXRbZF09ITAsYy5zdGF0dXMuZm9ybWF0VHlwZT1kLCExKTp2b2lkIDB9KX0sX2h0bWxfc2V0QXVkaW86ZnVuY3Rpb24oYSl7dGhpcy5faHRtbF9zZXRGb3JtYXQoYSksdGhpcy5odG1sRWxlbWVudC5tZWRpYT10aGlzLmh0bWxFbGVtZW50LmF1ZGlvLHRoaXMuX2h0bWxfaW5pdE1lZGlhKGEpfSxfaHRtbF9zZXRWaWRlbzpmdW5jdGlvbihhKXt0aGlzLl9odG1sX3NldEZvcm1hdChhKSx0aGlzLnN0YXR1cy5uYXRpdmVWaWRlb0NvbnRyb2xzJiYodGhpcy5odG1sRWxlbWVudC52aWRlby5wb3N0ZXI9dGhpcy5fdmFsaWRTdHJpbmcoYS5wb3N0ZXIpP2EucG9zdGVyOiIiKSx0aGlzLmh0bWxFbGVtZW50Lm1lZGlhPXRoaXMuaHRtbEVsZW1lbnQudmlkZW8sdGhpcy5faHRtbF9pbml0TWVkaWEoYSl9LF9odG1sX3Jlc2V0TWVkaWE6ZnVuY3Rpb24oKXt0aGlzLmh0bWxFbGVtZW50Lm1lZGlhJiYodGhpcy5odG1sRWxlbWVudC5tZWRpYS5pZCE9PXRoaXMuaW50ZXJuYWwudmlkZW8uaWR8fHRoaXMuc3RhdHVzLm5hdGl2ZVZpZGVvQ29udHJvbHN8fHRoaXMuaW50ZXJuYWwudmlkZW8uanEuY3NzKHt3aWR0aDoiMHB4IixoZWlnaHQ6IjBweCJ9KSx0aGlzLmh0bWxFbGVtZW50Lm1lZGlhLnBhdXNlKCkpfSxfaHRtbF9jbGVhck1lZGlhOmZ1bmN0aW9uKCl7dGhpcy5odG1sRWxlbWVudC5tZWRpYSYmKHRoaXMuaHRtbEVsZW1lbnQubWVkaWEuc3JjPSJhYm91dDpibGFuayIsdGhpcy5odG1sRWxlbWVudC5tZWRpYS5sb2FkKCkpfSxfaHRtbF9sb2FkOmZ1bmN0aW9uKCl7dGhpcy5zdGF0dXMud2FpdEZvckxvYWQmJih0aGlzLnN0YXR1cy53YWl0Rm9yTG9hZD0hMSx0aGlzLmh0bWxFbGVtZW50Lm1lZGlhLmxvYWQoKSksY2xlYXJUaW1lb3V0KHRoaXMuaW50ZXJuYWwuaHRtbERseUNtZElkKX0sX2h0bWxfcGxheTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLGM9dGhpcy5odG1sRWxlbWVudC5tZWRpYTtpZih0aGlzLmFuZHJvaWRGaXgucGF1c2U9ITEsdGhpcy5faHRtbF9sb2FkKCksdGhpcy5hbmRyb2lkRml4LnNldE1lZGlhKXRoaXMuYW5kcm9pZEZpeC5wbGF5PSEwLHRoaXMuYW5kcm9pZEZpeC50aW1lPWE7ZWxzZSBpZihpc05hTihhKSljLnBsYXkoKTtlbHNle3RoaXMuaW50ZXJuYWwuY21kc0lnbm9yZWQmJmMucGxheSgpO3RyeXtpZihjLnNlZWthYmxlJiYhKCJvYmplY3QiPT10eXBlb2YgYy5zZWVrYWJsZSYmYy5zZWVrYWJsZS5sZW5ndGg+MCkpdGhyb3cgMTtjLmN1cnJlbnRUaW1lPWEsYy5wbGF5KCl9Y2F0Y2goZCl7cmV0dXJuIHZvaWQodGhpcy5pbnRlcm5hbC5odG1sRGx5Q21kSWQ9c2V0VGltZW91dChmdW5jdGlvbigpe2IucGxheShhKX0sMjUwKSl9fXRoaXMuX2h0bWxfY2hlY2tXYWl0Rm9yUGxheSgpfSxfaHRtbF9wYXVzZTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLGM9dGhpcy5odG1sRWxlbWVudC5tZWRpYTtpZih0aGlzLmFuZHJvaWRGaXgucGxheT0hMSxhPjA/dGhpcy5faHRtbF9sb2FkKCk6Y2xlYXJUaW1lb3V0KHRoaXMuaW50ZXJuYWwuaHRtbERseUNtZElkKSxjLnBhdXNlKCksdGhpcy5hbmRyb2lkRml4LnNldE1lZGlhKXRoaXMuYW5kcm9pZEZpeC5wYXVzZT0hMCx0aGlzLmFuZHJvaWRGaXgudGltZT1hO2Vsc2UgaWYoIWlzTmFOKGEpKXRyeXtpZihjLnNlZWthYmxlJiYhKCJvYmplY3QiPT10eXBlb2YgYy5zZWVrYWJsZSYmYy5zZWVrYWJsZS5sZW5ndGg+MCkpdGhyb3cgMTtjLmN1cnJlbnRUaW1lPWF9Y2F0Y2goZCl7cmV0dXJuIHZvaWQodGhpcy5pbnRlcm5hbC5odG1sRGx5Q21kSWQ9c2V0VGltZW91dChmdW5jdGlvbigpe2IucGF1c2UoYSl9LDI1MCkpfWE+MCYmdGhpcy5faHRtbF9jaGVja1dhaXRGb3JQbGF5KCl9LF9odG1sX3BsYXlIZWFkOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMsYz10aGlzLmh0bWxFbGVtZW50Lm1lZGlhO3RoaXMuX2h0bWxfbG9hZCgpO3RyeXtpZigib2JqZWN0Ij09dHlwZW9mIGMuc2Vla2FibGUmJmMuc2Vla2FibGUubGVuZ3RoPjApYy5jdXJyZW50VGltZT1hKmMuc2Vla2FibGUuZW5kKGMuc2Vla2FibGUubGVuZ3RoLTEpLzEwMDtlbHNle2lmKCEoYy5kdXJhdGlvbj4wKXx8aXNOYU4oYy5kdXJhdGlvbikpdGhyb3ciZSI7Yy5jdXJyZW50VGltZT1hKmMuZHVyYXRpb24vMTAwfX1jYXRjaChkKXtyZXR1cm4gdm9pZCh0aGlzLmludGVybmFsLmh0bWxEbHlDbWRJZD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yi5wbGF5SGVhZChhKX0sMjUwKSl9dGhpcy5zdGF0dXMud2FpdEZvckxvYWR8fHRoaXMuX2h0bWxfY2hlY2tXYWl0Rm9yUGxheSgpfSxfaHRtbF9jaGVja1dhaXRGb3JQbGF5OmZ1bmN0aW9uKCl7dGhpcy5zdGF0dXMud2FpdEZvclBsYXkmJih0aGlzLnN0YXR1cy53YWl0Rm9yUGxheT0hMSx0aGlzLmNzcy5qcS52aWRlb1BsYXkubGVuZ3RoJiZ0aGlzLmNzcy5qcS52aWRlb1BsYXkuaGlkZSgpLHRoaXMuc3RhdHVzLnZpZGVvJiYodGhpcy5pbnRlcm5hbC5wb3N0ZXIuanEuaGlkZSgpLHRoaXMuaW50ZXJuYWwudmlkZW8uanEuY3NzKHt3aWR0aDp0aGlzLnN0YXR1cy53aWR0aCxoZWlnaHQ6dGhpcy5zdGF0dXMuaGVpZ2h0fSkpKX0sX2h0bWxfc2V0UHJvcGVydHk6ZnVuY3Rpb24oYSxiKXt0aGlzLmh0bWwuYXVkaW8uYXZhaWxhYmxlJiYodGhpcy5odG1sRWxlbWVudC5hdWRpb1thXT1iKSx0aGlzLmh0bWwudmlkZW8uYXZhaWxhYmxlJiYodGhpcy5odG1sRWxlbWVudC52aWRlb1thXT1iKX0sX2F1cm9yYV9zZXRBdWRpbzpmdW5jdGlvbihiKXt2YXIgYz10aGlzO2EuZWFjaCh0aGlzLmZvcm1hdHMsZnVuY3Rpb24oYSxkKXtyZXR1cm4gYy5hdXJvcmEuc3VwcG9ydFtkXSYmYltkXT8oYy5zdGF0dXMuc3JjPWJbZF0sYy5zdGF0dXMuZm9ybWF0W2RdPSEwLGMuc3RhdHVzLmZvcm1hdFR5cGU9ZCwhMSk6dm9pZCAwfSksdGhpcy5hdXJvcmEucGxheWVyPW5ldyBBVi5QbGF5ZXIuZnJvbVVSTCh0aGlzLnN0YXR1cy5zcmMpLHRoaXMuX2FkZEF1cm9yYUV2ZW50TGlzdGVuZXJzKHRoaXMuYXVyb3JhLnBsYXllcix0aGlzLmF1cm9yYSksImF1dG8iPT09dGhpcy5vcHRpb25zLnByZWxvYWQmJih0aGlzLl9hdXJvcmFfbG9hZCgpLHRoaXMuc3RhdHVzLndhaXRGb3JMb2FkPSExKX0sX2F1cm9yYV9yZXNldE1lZGlhOmZ1bmN0aW9uKCl7dGhpcy5hdXJvcmEucGxheWVyJiZ0aGlzLmF1cm9yYS5wbGF5ZXIuc3RvcCgpfSxfYXVyb3JhX2NsZWFyTWVkaWE6ZnVuY3Rpb24oKXt9LF9hdXJvcmFfbG9hZDpmdW5jdGlvbigpe3RoaXMuc3RhdHVzLndhaXRGb3JMb2FkJiYodGhpcy5zdGF0dXMud2FpdEZvckxvYWQ9ITEsdGhpcy5hdXJvcmEucGxheWVyLnByZWxvYWQoKSl9LF9hdXJvcmFfcGxheTpmdW5jdGlvbihiKXt0aGlzLnN0YXR1cy53YWl0Rm9yTG9hZHx8aXNOYU4oYil8fHRoaXMuYXVyb3JhLnBsYXllci5zZWVrKGIpLHRoaXMuYXVyb3JhLnBsYXllci5wbGF5aW5nfHx0aGlzLmF1cm9yYS5wbGF5ZXIucGxheSgpLHRoaXMuc3RhdHVzLndhaXRGb3JMb2FkPSExLHRoaXMuX2F1cm9yYV9jaGVja1dhaXRGb3JQbGF5KCksdGhpcy5fdXBkYXRlQnV0dG9ucyghMCksdGhpcy5fdHJpZ2dlcihhLmpQbGF5ZXIuZXZlbnQucGxheSl9LF9hdXJvcmFfcGF1c2U6ZnVuY3Rpb24oYil7aXNOYU4oYil8fHRoaXMuYXVyb3JhLnBsYXllci5zZWVrKDFlMypiKSx0aGlzLmF1cm9yYS5wbGF5ZXIucGF1c2UoKSxiPjAmJnRoaXMuX2F1cm9yYV9jaGVja1dhaXRGb3JQbGF5KCksdGhpcy5fdXBkYXRlQnV0dG9ucyghMSksdGhpcy5fdHJpZ2dlcihhLmpQbGF5ZXIuZXZlbnQucGF1c2UpfSxfYXVyb3JhX3BsYXlIZWFkOmZ1bmN0aW9uKGEpe3RoaXMuYXVyb3JhLnBsYXllci5kdXJhdGlvbj4wJiZ0aGlzLmF1cm9yYS5wbGF5ZXIuc2VlayhhKnRoaXMuYXVyb3JhLnBsYXllci5kdXJhdGlvbi8xMDApLHRoaXMuc3RhdHVzLndhaXRGb3JMb2FkfHx0aGlzLl9hdXJvcmFfY2hlY2tXYWl0Rm9yUGxheSgpfSxfYXVyb3JhX2NoZWNrV2FpdEZvclBsYXk6ZnVuY3Rpb24oKXt0aGlzLnN0YXR1cy53YWl0Rm9yUGxheSYmKHRoaXMuc3RhdHVzLndhaXRGb3JQbGF5PSExKX0sX2F1cm9yYV92b2x1bWU6ZnVuY3Rpb24oYSl7dGhpcy5hdXJvcmEucGxheWVyLnZvbHVtZT0xMDAqYX0sX2F1cm9yYV9tdXRlOmZ1bmN0aW9uKGEpe2E/KHRoaXMuYXVyb3JhLnByb3BlcnRpZXMubGFzdHZvbHVtZT10aGlzLmF1cm9yYS5wbGF5ZXIudm9sdW1lLHRoaXMuYXVyb3JhLnBsYXllci52b2x1bWU9MCk6dGhpcy5hdXJvcmEucGxheWVyLnZvbHVtZT10aGlzLmF1cm9yYS5wcm9wZXJ0aWVzLmxhc3R2b2x1bWUsdGhpcy5hdXJvcmEucHJvcGVydGllcy5tdXRlZD1hfSxfZmxhc2hfc2V0QXVkaW86ZnVuY3Rpb24oYil7dmFyIGM9dGhpczt0cnl7YS5lYWNoKHRoaXMuZm9ybWF0cyxmdW5jdGlvbihhLGQpe2lmKGMuZmxhc2guc3VwcG9ydFtkXSYmYltkXSl7c3dpdGNoKGQpe2Nhc2UibTRhIjpjYXNlImZsYSI6Yy5fZ2V0TW92aWUoKS5mbF9zZXRBdWRpb19tNGEoYltkXSk7YnJlYWs7Y2FzZSJtcDMiOmMuX2dldE1vdmllKCkuZmxfc2V0QXVkaW9fbXAzKGJbZF0pO2JyZWFrO2Nhc2UicnRtcGEiOmMuX2dldE1vdmllKCkuZmxfc2V0QXVkaW9fcnRtcChiW2RdKX1yZXR1cm4gYy5zdGF0dXMuc3JjPWJbZF0sYy5zdGF0dXMuZm9ybWF0W2RdPSEwLGMuc3RhdHVzLmZvcm1hdFR5cGU9ZCwhMX19KSwiYXV0byI9PT10aGlzLm9wdGlvbnMucHJlbG9hZCYmKHRoaXMuX2ZsYXNoX2xvYWQoKSx0aGlzLnN0YXR1cy53YWl0Rm9yTG9hZD0hMSl9Y2F0Y2goZCl7dGhpcy5fZmxhc2hFcnJvcihkKX19LF9mbGFzaF9zZXRWaWRlbzpmdW5jdGlvbihiKXt2YXIgYz10aGlzO3RyeXthLmVhY2godGhpcy5mb3JtYXRzLGZ1bmN0aW9uKGEsZCl7aWYoYy5mbGFzaC5zdXBwb3J0W2RdJiZiW2RdKXtzd2l0Y2goZCl7Y2FzZSJtNHYiOmNhc2UiZmx2IjpjLl9nZXRNb3ZpZSgpLmZsX3NldFZpZGVvX200dihiW2RdKTticmVhaztjYXNlInJ0bXB2IjpjLl9nZXRNb3ZpZSgpLmZsX3NldFZpZGVvX3J0bXAoYltkXSl9cmV0dXJuIGMuc3RhdHVzLnNyYz1iW2RdLGMuc3RhdHVzLmZvcm1hdFtkXT0hMCxjLnN0YXR1cy5mb3JtYXRUeXBlPWQsITF9fSksImF1dG8iPT09dGhpcy5vcHRpb25zLnByZWxvYWQmJih0aGlzLl9mbGFzaF9sb2FkKCksdGhpcy5zdGF0dXMud2FpdEZvckxvYWQ9ITEpfWNhdGNoKGQpe3RoaXMuX2ZsYXNoRXJyb3IoZCl9fSxfZmxhc2hfcmVzZXRNZWRpYTpmdW5jdGlvbigpe3RoaXMuaW50ZXJuYWwuZmxhc2guanEuY3NzKHt3aWR0aDoiMHB4IixoZWlnaHQ6IjBweCJ9KSx0aGlzLl9mbGFzaF9wYXVzZSgwLzApfSxfZmxhc2hfY2xlYXJNZWRpYTpmdW5jdGlvbigpe3RyeXt0aGlzLl9nZXRNb3ZpZSgpLmZsX2NsZWFyTWVkaWEoKX1jYXRjaChhKXt0aGlzLl9mbGFzaEVycm9yKGEpfX0sX2ZsYXNoX2xvYWQ6ZnVuY3Rpb24oKXt0cnl7dGhpcy5fZ2V0TW92aWUoKS5mbF9sb2FkKCl9Y2F0Y2goYSl7dGhpcy5fZmxhc2hFcnJvcihhKX10aGlzLnN0YXR1cy53YWl0Rm9yTG9hZD0hMX0sX2ZsYXNoX3BsYXk6ZnVuY3Rpb24oYSl7dHJ5e3RoaXMuX2dldE1vdmllKCkuZmxfcGxheShhKX1jYXRjaChiKXt0aGlzLl9mbGFzaEVycm9yKGIpfXRoaXMuc3RhdHVzLndhaXRGb3JMb2FkPSExLHRoaXMuX2ZsYXNoX2NoZWNrV2FpdEZvclBsYXkoKX0sX2ZsYXNoX3BhdXNlOmZ1bmN0aW9uKGEpe3RyeXt0aGlzLl9nZXRNb3ZpZSgpLmZsX3BhdXNlKGEpfWNhdGNoKGIpe3RoaXMuX2ZsYXNoRXJyb3IoYil9YT4wJiYodGhpcy5zdGF0dXMud2FpdEZvckxvYWQ9ITEsdGhpcy5fZmxhc2hfY2hlY2tXYWl0Rm9yUGxheSgpKX0sX2ZsYXNoX3BsYXlIZWFkOmZ1bmN0aW9uKGEpe3RyeXt0aGlzLl9nZXRNb3ZpZSgpLmZsX3BsYXlfaGVhZChhKX1jYXRjaChiKXt0aGlzLl9mbGFzaEVycm9yKGIpfXRoaXMuc3RhdHVzLndhaXRGb3JMb2FkfHx0aGlzLl9mbGFzaF9jaGVja1dhaXRGb3JQbGF5KCl9LF9mbGFzaF9jaGVja1dhaXRGb3JQbGF5OmZ1bmN0aW9uKCl7dGhpcy5zdGF0dXMud2FpdEZvclBsYXkmJih0aGlzLnN0YXR1cy53YWl0Rm9yUGxheT0hMSx0aGlzLmNzcy5qcS52aWRlb1BsYXkubGVuZ3RoJiZ0aGlzLmNzcy5qcS52aWRlb1BsYXkuaGlkZSgpLHRoaXMuc3RhdHVzLnZpZGVvJiYodGhpcy5pbnRlcm5hbC5wb3N0ZXIuanEuaGlkZSgpLHRoaXMuaW50ZXJuYWwuZmxhc2guanEuY3NzKHt3aWR0aDp0aGlzLnN0YXR1cy53aWR0aCxoZWlnaHQ6dGhpcy5zdGF0dXMuaGVpZ2h0fSkpKX0sX2ZsYXNoX3ZvbHVtZTpmdW5jdGlvbihhKXt0cnl7dGhpcy5fZ2V0TW92aWUoKS5mbF92b2x1bWUoYSl9Y2F0Y2goYil7dGhpcy5fZmxhc2hFcnJvcihiKX19LF9mbGFzaF9tdXRlOmZ1bmN0aW9uKGEpe3RyeXt0aGlzLl9nZXRNb3ZpZSgpLmZsX211dGUoYSl9Y2F0Y2goYil7dGhpcy5fZmxhc2hFcnJvcihiKX19LF9nZXRNb3ZpZTpmdW5jdGlvbigpe3JldHVybiBkb2N1bWVudFt0aGlzLmludGVybmFsLmZsYXNoLmlkXX0sX2dldEZsYXNoUGx1Z2luVmVyc2lvbjpmdW5jdGlvbigpe3ZhciBhLGI9MDtpZih3aW5kb3cuQWN0aXZlWE9iamVjdCl0cnl7aWYoYT1uZXcgQWN0aXZlWE9iamVjdCgiU2hvY2t3YXZlRmxhc2guU2hvY2t3YXZlRmxhc2giKSl7dmFyIGM9YS5HZXRWYXJpYWJsZSgiJHZlcnNpb24iKTtjJiYoYz1jLnNwbGl0KCIgIilbMV0uc3BsaXQoIiwiKSxiPXBhcnNlSW50KGNbMF0sMTApKyIuIitwYXJzZUludChjWzFdLDEwKSl9fWNhdGNoKGQpe31lbHNlIG5hdmlnYXRvci5wbHVnaW5zJiZuYXZpZ2F0b3IubWltZVR5cGVzLmxlbmd0aD4wJiYoYT1uYXZpZ2F0b3IucGx1Z2luc1siU2hvY2t3YXZlIEZsYXNoIl0sYSYmKGI9bmF2aWdhdG9yLnBsdWdpbnNbIlNob2Nrd2F2ZSBGbGFzaCJdLmRlc2NyaXB0aW9uLnJlcGxhY2UoLy4qXHMoXGQrXC5cZCspLiovLCIkMSIpKSk7cmV0dXJuIDEqYn0sX2NoZWNrRm9yRmxhc2g6ZnVuY3Rpb24oYSl7dmFyIGI9ITE7cmV0dXJuIHRoaXMuX2dldEZsYXNoUGx1Z2luVmVyc2lvbigpPj1hJiYoYj0hMCksYn0sX3ZhbGlkU3RyaW5nOmZ1bmN0aW9uKGEpe3JldHVybiBhJiYic3RyaW5nIj09dHlwZW9mIGF9LF9saW1pdFZhbHVlOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYj5hP2I6YT5jP2M6YX0sX3VybE5vdFNldEVycm9yOmZ1bmN0aW9uKGIpe3RoaXMuX2Vycm9yKHt0eXBlOmEualBsYXllci5lcnJvci5VUkxfTk9UX1NFVCxjb250ZXh0OmIsbWVzc2FnZTphLmpQbGF5ZXIuZXJyb3JNc2cuVVJMX05PVF9TRVQsaGludDphLmpQbGF5ZXIuZXJyb3JIaW50LlVSTF9OT1RfU0VUfSl9LF9mbGFzaEVycm9yOmZ1bmN0aW9uKGIpe3ZhciBjO2M9dGhpcy5pbnRlcm5hbC5yZWFkeT8iRkxBU0hfRElTQUJMRUQiOiJGTEFTSCIsdGhpcy5fZXJyb3Ioe3R5cGU6YS5qUGxheWVyLmVycm9yW2NdLGNvbnRleHQ6dGhpcy5pbnRlcm5hbC5mbGFzaC5zd2YsbWVzc2FnZTphLmpQbGF5ZXIuZXJyb3JNc2dbY10rYi5tZXNzYWdlLGhpbnQ6YS5qUGxheWVyLmVycm9ySGludFtjXX0pLHRoaXMuaW50ZXJuYWwuZmxhc2guanEuY3NzKHt3aWR0aDoiMXB4IixoZWlnaHQ6IjFweCJ9KX0sX2Vycm9yOmZ1bmN0aW9uKGIpe3RoaXMuX3RyaWdnZXIoYS5qUGxheWVyLmV2ZW50LmVycm9yLGIpLHRoaXMub3B0aW9ucy5lcnJvckFsZXJ0cyYmdGhpcy5fYWxlcnQoIkVycm9yISIrKGIubWVzc2FnZT8iXG4iK2IubWVzc2FnZToiIikrKGIuaGludD8iXG4iK2IuaGludDoiIikrIlxuQ29udGV4dDogIitiLmNvbnRleHQpfSxfd2FybmluZzpmdW5jdGlvbihjKXt0aGlzLl90cmlnZ2VyKGEualBsYXllci5ldmVudC53YXJuaW5nLGIsYyksdGhpcy5vcHRpb25zLndhcm5pbmdBbGVydHMmJnRoaXMuX2FsZXJ0KCJXYXJuaW5nISIrKGMubWVzc2FnZT8iXG4iK2MubWVzc2FnZToiIikrKGMuaGludD8iXG4iK2MuaGludDoiIikrIlxuQ29udGV4dDogIitjLmNvbnRleHQpfSxfYWxlcnQ6ZnVuY3Rpb24oYSl7dmFyIGI9ImpQbGF5ZXIgIit0aGlzLnZlcnNpb24uc2NyaXB0KyIgOiBpZD0nIit0aGlzLmludGVybmFsLnNlbGYuaWQrIicgOiAiK2E7dGhpcy5vcHRpb25zLmNvbnNvbGVBbGVydHM/d2luZG93LmNvbnNvbGUmJndpbmRvdy5jb25zb2xlLmxvZyYmd2luZG93LmNvbnNvbGUubG9nKGIpOmFsZXJ0KGIpfSxfZW11bGF0ZUh0bWxCcmlkZ2U6ZnVuY3Rpb24oKXt2YXIgYj10aGlzO2EuZWFjaChhLmpQbGF5ZXIuZW11bGF0ZU1ldGhvZHMuc3BsaXQoL1xzKy9nKSxmdW5jdGlvbihhLGMpe2IuaW50ZXJuYWwuZG9tTm9kZVtjXT1mdW5jdGlvbihhKXtiW2NdKGEpfX0pLGEuZWFjaChhLmpQbGF5ZXIuZXZlbnQsZnVuY3Rpb24oYyxkKXt2YXIgZT0hMDthLmVhY2goYS5qUGxheWVyLnJlc2VydmVkRXZlbnQuc3BsaXQoL1xzKy9nKSxmdW5jdGlvbihhLGIpe3JldHVybiBiPT09Yz8oZT0hMSwhMSk6dm9pZCAwfSksZSYmYi5lbGVtZW50LmJpbmQoZCsiLmpQbGF5ZXIualBsYXllckh0bWwiLGZ1bmN0aW9uKCl7Yi5fZW11bGF0ZUh0bWxVcGRhdGUoKTt2YXIgYT1kb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKTthLmluaXRFdmVudChjLCExLCEwKSxiLmludGVybmFsLmRvbU5vZGUuZGlzcGF0Y2hFdmVudChhKX0pfSl9LF9lbXVsYXRlSHRtbFVwZGF0ZTpmdW5jdGlvbigpe3ZhciBiPXRoaXM7YS5lYWNoKGEualBsYXllci5lbXVsYXRlU3RhdHVzLnNwbGl0KC9ccysvZyksZnVuY3Rpb24oYSxjKXtiLmludGVybmFsLmRvbU5vZGVbY109Yi5zdGF0dXNbY119KSxhLmVhY2goYS5qUGxheWVyLmVtdWxhdGVPcHRpb25zLnNwbGl0KC9ccysvZyksZnVuY3Rpb24oYSxjKXtiLmludGVybmFsLmRvbU5vZGVbY109Yi5vcHRpb25zW2NdfSl9LF9kZXN0cm95SHRtbEJyaWRnZTpmdW5jdGlvbigpe3ZhciBiPXRoaXM7dGhpcy5lbGVtZW50LnVuYmluZCgiLmpQbGF5ZXJIdG1sIik7dmFyIGM9YS5qUGxheWVyLmVtdWxhdGVNZXRob2RzKyIgIithLmpQbGF5ZXIuZW11bGF0ZVN0YXR1cysiICIrYS5qUGxheWVyLmVtdWxhdGVPcHRpb25zO2EuZWFjaChjLnNwbGl0KC9ccysvZyksZnVuY3Rpb24oYSxjKXtkZWxldGUgYi5pbnRlcm5hbC5kb21Ob2RlW2NdfSl9fSxhLmpQbGF5ZXIuZXJyb3I9e0ZMQVNIOiJlX2ZsYXNoIixGTEFTSF9ESVNBQkxFRDoiZV9mbGFzaF9kaXNhYmxlZCIsTk9fU09MVVRJT046ImVfbm9fc29sdXRpb24iLE5PX1NVUFBPUlQ6ImVfbm9fc3VwcG9ydCIsVVJMOiJlX3VybCIsVVJMX05PVF9TRVQ6ImVfdXJsX25vdF9zZXQiLFZFUlNJT046ImVfdmVyc2lvbiJ9LGEualBsYXllci5lcnJvck1zZz17RkxBU0g6ImpQbGF5ZXIncyBGbGFzaCBmYWxsYmFjayBpcyBub3QgY29uZmlndXJlZCBjb3JyZWN0bHksIG9yIGEgY29tbWFuZCB3YXMgaXNzdWVkIGJlZm9yZSB0aGUgalBsYXllciBSZWFkeSBldmVudC4gRGV0YWlsczogIixGTEFTSF9ESVNBQkxFRDoialBsYXllcidzIEZsYXNoIGZhbGxiYWNrIGhhcyBiZWVuIGRpc2FibGVkIGJ5IHRoZSBicm93c2VyIGR1ZSB0byB0aGUgQ1NTIHJ1bGVzIHlvdSBoYXZlIHVzZWQuIERldGFpbHM6ICIsTk9fU09MVVRJT046Ik5vIHNvbHV0aW9uIGNhbiBiZSBmb3VuZCBieSBqUGxheWVyIGluIHRoaXMgYnJvd3Nlci4gTmVpdGhlciBIVE1MIG5vciBGbGFzaCBjYW4gYmUgdXNlZC4iLE5PX1NVUFBPUlQ6Ikl0IGlzIG5vdCBwb3NzaWJsZSB0byBwbGF5IGFueSBtZWRpYSBmb3JtYXQgcHJvdmlkZWQgaW4gc2V0TWVkaWEoKSBvbiB0aGlzIGJyb3dzZXIgdXNpbmcgeW91ciBjdXJyZW50IG9wdGlvbnMuIixVUkw6Ik1lZGlhIFVSTCBjb3VsZCBub3QgYmUgbG9hZGVkLiIsVVJMX05PVF9TRVQ6IkF0dGVtcHQgdG8gaXNzdWUgbWVkaWEgcGxheWJhY2sgY29tbWFuZHMsIHdoaWxlIG5vIG1lZGlhIHVybCBpcyBzZXQuIixWRVJTSU9OOiJqUGxheWVyICIrYS5qUGxheWVyLnByb3RvdHlwZS52ZXJzaW9uLnNjcmlwdCsiIG5lZWRzIEpwbGF5ZXIuc3dmIHZlcnNpb24gIithLmpQbGF5ZXIucHJvdG90eXBlLnZlcnNpb24ubmVlZEZsYXNoKyIgYnV0IGZvdW5kICJ9LGEualBsYXllci5lcnJvckhpbnQ9e0ZMQVNIOiJDaGVjayB5b3VyIHN3ZlBhdGggb3B0aW9uIGFuZCB0aGF0IEpwbGF5ZXIuc3dmIGlzIHRoZXJlLiIsRkxBU0hfRElTQUJMRUQ6IkNoZWNrIHRoYXQgeW91IGhhdmUgbm90IGRpc3BsYXk6bm9uZTsgdGhlIGpQbGF5ZXIgZW50aXR5IG9yIGFueSBhbmNlc3Rvci4iLE5PX1NPTFVUSU9OOiJSZXZpZXcgdGhlIGpQbGF5ZXIgb3B0aW9uczogc3VwcG9ydCBhbmQgc3VwcGxpZWQuIixOT19TVVBQT1JUOiJWaWRlbyBvciBhdWRpbyBmb3JtYXRzIGRlZmluZWQgaW4gdGhlIHN1cHBsaWVkIG9wdGlvbiBhcmUgbWlzc2luZy4iLFVSTDoiQ2hlY2sgbWVkaWEgVVJMIGlzIHZhbGlkLiIsVVJMX05PVF9TRVQ6IlVzZSBzZXRNZWRpYSgpIHRvIHNldCB0aGUgbWVkaWEgVVJMLiIsVkVSU0lPTjoiVXBkYXRlIGpQbGF5ZXIgZmlsZXMuIn0sYS5qUGxheWVyLndhcm5pbmc9e0NTU19TRUxFQ1RPUl9DT1VOVDoiZV9jc3Nfc2VsZWN0b3JfY291bnQiLENTU19TRUxFQ1RPUl9NRVRIT0Q6ImVfY3NzX3NlbGVjdG9yX21ldGhvZCIsQ1NTX1NFTEVDVE9SX1NUUklORzoiZV9jc3Nfc2VsZWN0b3Jfc3RyaW5nIixPUFRJT05fS0VZOiJlX29wdGlvbl9rZXkifSxhLmpQbGF5ZXIud2FybmluZ01zZz17Q1NTX1NFTEVDVE9SX0NPVU5UOiJUaGUgbnVtYmVyIG9mIGNzcyBzZWxlY3RvcnMgZm91bmQgZGlkIG5vdCBlcXVhbCBvbmU6ICIsQ1NTX1NFTEVDVE9SX01FVEhPRDoiVGhlIG1ldGhvZE5hbWUgZ2l2ZW4gaW4galBsYXllcignY3NzU2VsZWN0b3InKSBpcyBub3QgYSB2YWxpZCBqUGxheWVyIG1ldGhvZC4iLENTU19TRUxFQ1RPUl9TVFJJTkc6IlRoZSBtZXRob2RDc3NTZWxlY3RvciBnaXZlbiBpbiBqUGxheWVyKCdjc3NTZWxlY3RvcicpIGlzIG5vdCBhIFN0cmluZyBvciBpcyBlbXB0eS4iLE9QVElPTl9LRVk6IlRoZSBvcHRpb24gcmVxdWVzdGVkIGluIGpQbGF5ZXIoJ29wdGlvbicpIGlzIHVuZGVmaW5lZC4ifSxhLmpQbGF5ZXIud2FybmluZ0hpbnQ9e0NTU19TRUxFQ1RPUl9DT1VOVDoiQ2hlY2sgeW91ciBjc3Mgc2VsZWN0b3IgYW5kIHRoZSBhbmNlc3Rvci4iLENTU19TRUxFQ1RPUl9NRVRIT0Q6IkNoZWNrIHlvdXIgbWV0aG9kIG5hbWUuIixDU1NfU0VMRUNUT1JfU1RSSU5HOiJDaGVjayB5b3VyIGNzcyBzZWxlY3RvciBpcyBhIHN0cmluZy4iLE9QVElPTl9LRVk6IkNoZWNrIHlvdXIgb3B0aW9uIG5hbWUuIn19KTs=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/jplayer/jquery.jplayer.swf</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/jquery.jplayer/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/jquery.jplayer/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/jquery.jplayer/Jplayer.swf</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/jquery.jplayer/jquery.jplayer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogalBsYXllciBQbHVnaW4gZm9yIGpRdWVyeSBKYXZhU2NyaXB0IExpYnJhcnkKICogaHR0cDovL3d3dy5qcGxheWVyLm9yZwogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDkgLSAyMDEzIEhhcHB5d29ybSBMdGQKICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLgogKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUCiAqCiAqIEF1dGhvcjogTWFyayBKIFBhbmFnaGlzdG9uCiAqIFZlcnNpb246IDIuNC4wCiAqIERhdGU6IDV0aCBKdW5lIDIwMTMKICovCgovKiBDb2RlIHZlcmlmaWVkIHVzaW5nIGh0dHA6Ly93d3cuanNoaW50LmNvbS8gKi8KLypqc2hpbnQgYXNpOmZhbHNlLCBiaXR3aXNlOmZhbHNlLCBib3NzOmZhbHNlLCBicm93c2VyOnRydWUsIGN1cmx5OnRydWUsIGRlYnVnOmZhbHNlLCBlcWVxZXE6dHJ1ZSwgZXFudWxsOmZhbHNlLCBldmlsOmZhbHNlLCBmb3JpbjpmYWxzZSwgaW1tZWQ6ZmFsc2UsIGpxdWVyeTp0cnVlLCBsYXhicmVhazpmYWxzZSwgbmV3Y2FwOnRydWUsIG5vYXJnOnRydWUsIG5vZW1wdHk6dHJ1ZSwgbm9uZXc6dHJ1ZSwgb25ldmFyOmZhbHNlLCBwYXNzZmFpbDpmYWxzZSwgcGx1c3BsdXM6ZmFsc2UsIHJlZ2V4cDpmYWxzZSwgdW5kZWY6dHJ1ZSwgc3ViOmZhbHNlLCBzdHJpY3Q6ZmFsc2UsIHdoaXRlOmZhbHNlLCBzbWFydHRhYnM6dHJ1ZSAqLwovKmdsb2JhbCBkZWZpbmU6ZmFsc2UsIEFjdGl2ZVhPYmplY3Q6ZmFsc2UsIGFsZXJ0OmZhbHNlICovCgovKiBTdXBwb3J0IGZvciBaZXB0byAxLjAgY29tcGlsZWQgd2l0aCBvcHRpb25hbCBkYXRhIG1vZHVsZS4KICogRm9yIEFNRCBzdXBwb3J0LCB5b3Ugd2lsbCBuZWVkIHRvIG1hbnVhbGx5IHN3aXRjaCB0aGUgMiBsaW5lcyBpbiB0aGUgY29kZSBiZWxvdy4KICogU2VhcmNoIHRlcm1zOiAialF1ZXJ5IFN3aXRjaCIgYW5kICJaZXB0byBTd2l0Y2giCiAqLwoKKGZ1bmN0aW9uIChyb290LCBmYWN0b3J5KSB7CglpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7CgkJLy8gQU1ELiBSZWdpc3RlciBhcyBhbiBhbm9ueW1vdXMgbW9kdWxlLgoJCWRlZmluZShbJ2pxdWVyeSddLCBmYWN0b3J5KTsgLy8galF1ZXJ5IFN3aXRjaAoJCS8vIGRlZmluZShbJ3plcHRvJ10sIGZhY3RvcnkpOyAvLyBaZXB0byBTd2l0Y2gKCX0gZWxzZSB7CgkJLy8gQnJvd3NlciBnbG9iYWxzCgkJaWYocm9vdC5qUXVlcnkpIHsgLy8gVXNlIGpRdWVyeSBpZiBhdmFpbGFibGUKCQkJZmFjdG9yeShyb290LmpRdWVyeSk7CgkJfSBlbHNlIHsgLy8gT3RoZXJ3aXNlLCB1c2UgWmVwdG8KCQkJZmFjdG9yeShyb290LlplcHRvKTsKCQl9Cgl9Cn0odGhpcywgZnVuY3Rpb24gKCQsIHVuZGVmaW5lZCkgewoKCS8vIEFkYXB0ZWQgZnJvbSBqcXVlcnkudWkud2lkZ2V0LmpzICgxLjguNyk6ICQud2lkZ2V0LmJyaWRnZSAtIFR3ZWFrZWQgJC5kYXRhKHRoaXMsWFlaKSB0byAkKHRoaXMpLmRhdGEoWFlaKSBmb3IgWmVwdG8KCSQuZm4ualBsYXllciA9IGZ1bmN0aW9uKCBvcHRpb25zICkgewoJCXZhciBuYW1lID0gImpQbGF5ZXIiOwoJCXZhciBpc01ldGhvZENhbGwgPSB0eXBlb2Ygb3B0aW9ucyA9PT0gInN0cmluZyIsCgkJCWFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCggYXJndW1lbnRzLCAxICksCgkJCXJldHVyblZhbHVlID0gdGhpczsKCgkJLy8gYWxsb3cgbXVsdGlwbGUgaGFzaGVzIHRvIGJlIHBhc3NlZCBvbiBpbml0CgkJb3B0aW9ucyA9ICFpc01ldGhvZENhbGwgJiYgYXJncy5sZW5ndGggPwoJCQkkLmV4dGVuZC5hcHBseSggbnVsbCwgWyB0cnVlLCBvcHRpb25zIF0uY29uY2F0KGFyZ3MpICkgOgoJCQlvcHRpb25zOwoKCQkvLyBwcmV2ZW50IGNhbGxzIHRvIGludGVybmFsIG1ldGhvZHMKCQlpZiAoIGlzTWV0aG9kQ2FsbCAmJiBvcHRpb25zLmNoYXJBdCggMCApID09PSAiXyIgKSB7CgkJCXJldHVybiByZXR1cm5WYWx1ZTsKCQl9CgoJCWlmICggaXNNZXRob2RDYWxsICkgewoJCQl0aGlzLmVhY2goZnVuY3Rpb24oKSB7CgkJCQl2YXIgaW5zdGFuY2UgPSAkKHRoaXMpLmRhdGEoIG5hbWUgKSwKCQkJCQltZXRob2RWYWx1ZSA9IGluc3RhbmNlICYmICQuaXNGdW5jdGlvbiggaW5zdGFuY2Vbb3B0aW9uc10gKSA/CgkJCQkJCWluc3RhbmNlWyBvcHRpb25zIF0uYXBwbHkoIGluc3RhbmNlLCBhcmdzICkgOgoJCQkJCQlpbnN0YW5jZTsKCQkJCWlmICggbWV0aG9kVmFsdWUgIT09IGluc3RhbmNlICYmIG1ldGhvZFZhbHVlICE9PSB1bmRlZmluZWQgKSB7CgkJCQkJcmV0dXJuVmFsdWUgPSBtZXRob2RWYWx1ZTsKCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQl9CgkJCX0pOwoJCX0gZWxzZSB7CgkJCXRoaXMuZWFjaChmdW5jdGlvbigpIHsKCQkJCXZhciBpbnN0YW5jZSA9ICQodGhpcykuZGF0YSggbmFtZSApOwoJCQkJaWYgKCBpbnN0YW5jZSApIHsKCQkJCQkvLyBpbnN0YW5jZS5vcHRpb24oIG9wdGlvbnMgfHwge30gKS5faW5pdCgpOyAvLyBPcmlnIGpxdWVyeS51aS53aWRnZXQuanMgY29kZTogTm90IHJlY29tbWVuZCBmb3IgalBsYXllci4gaWUuLCBBcHBseWluZyBuZXcgb3B0aW9ucyB0byBhbiBleGlzdGluZyBpbnN0YW5jZSAodmlhIHRoZSBqUGxheWVyIGNvbnN0cnVjdG9yKSBhbmQgcGVyZm9ybWluZyB0aGUgX2luaXQoKS4gVGhlIF9pbml0KCkgaXMgd2hhdCBjb25jZXJucyBtZS4gSXQgd291bGQgbGVhdmUgYSBsb3Qgb2YgZXZlbnQgaGFuZGxlcnMgYWN0aW5nIG9uIGpQbGF5ZXIgaW5zdGFuY2UgYW5kIHRoZSBpbnRlcmZhY2UuCgkJCQkJaW5zdGFuY2Uub3B0aW9uKCBvcHRpb25zIHx8IHt9ICk7IC8vIFRoZSBuZXcgY29uc3RydWN0b3Igb25seSBjaGFuZ2VzIHRoZSBvcHRpb25zLiBDaGFuZ2luZyBvcHRpb25zIG9ubHkgaGFzIGJhc2ljIHN1cHBvcnQgYXRtLgoJCQkJfSBlbHNlIHsKCQkJCQkkKHRoaXMpLmRhdGEoIG5hbWUsIG5ldyAkLmpQbGF5ZXIoIG9wdGlvbnMsIHRoaXMgKSApOwoJCQkJfQoJCQl9KTsKCQl9CgoJCXJldHVybiByZXR1cm5WYWx1ZTsKCX07CgoJJC5qUGxheWVyID0gZnVuY3Rpb24oIG9wdGlvbnMsIGVsZW1lbnQgKSB7CgkJLy8gYWxsb3cgaW5zdGFudGlhdGlvbiB3aXRob3V0IGluaXRpYWxpemluZyBmb3Igc2ltcGxlIGluaGVyaXRhbmNlCgkJaWYgKCBhcmd1bWVudHMubGVuZ3RoICkgewoJCQl0aGlzLmVsZW1lbnQgPSAkKGVsZW1lbnQpOwoJCQl0aGlzLm9wdGlvbnMgPSAkLmV4dGVuZCh0cnVlLCB7fSwKCQkJCXRoaXMub3B0aW9ucywKCQkJCW9wdGlvbnMKCQkJKTsKCQkJdmFyIHNlbGYgPSB0aGlzOwoJCQl0aGlzLmVsZW1lbnQuYmluZCggInJlbW92ZS5qUGxheWVyIiwgZnVuY3Rpb24oKSB7CgkJCQlzZWxmLmRlc3Ryb3koKTsKCQkJfSk7CgkJCXRoaXMuX2luaXQoKTsKCQl9Cgl9OwoJLy8gRW5kIG9mOiAoQWRhcHRlZCBmcm9tIGpxdWVyeS51aS53aWRnZXQuanMgKDEuOC43KSkKCgkvLyBaZXB0byBpcyBtaXNzaW5nIG9uZSBvZiB0aGUgYW5pbWF0aW9uIG1ldGhvZHMuCglpZih0eXBlb2YgJC5mbi5zdG9wICE9PSAnZnVuY3Rpb24nKSB7CgkJJC5mbi5zdG9wID0gZnVuY3Rpb24oKSB7fTsKCX0KCgkvLyBFbXVsYXRlZCBIVE1MNSBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzCgkkLmpQbGF5ZXIuZW11bGF0ZU1ldGhvZHMgPSAibG9hZCBwbGF5IHBhdXNlIjsKCSQualBsYXllci5lbXVsYXRlU3RhdHVzID0gInNyYyByZWFkeVN0YXRlIG5ldHdvcmtTdGF0ZSBjdXJyZW50VGltZSBkdXJhdGlvbiBwYXVzZWQgZW5kZWQgcGxheWJhY2tSYXRlIjsKCSQualBsYXllci5lbXVsYXRlT3B0aW9ucyA9ICJtdXRlZCB2b2x1bWUiOwoKCS8vIFJlc2VydmVkIGV2ZW50IG5hbWVzIGdlbmVyYXRlZCBieSBqUGxheWVyIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIHRoZSBIVE1MNSBNZWRpYSBlbGVtZW50IHNwZWMKCSQualBsYXllci5yZXNlcnZlZEV2ZW50ID0gInJlYWR5IGZsYXNocmVzZXQgcmVzaXplIHJlcGVhdCBlcnJvciB3YXJuaW5nIjsKCgkvLyBFdmVudHMgZ2VuZXJhdGVkIGJ5IGpQbGF5ZXIKCSQualBsYXllci5ldmVudCA9IHt9OwoJJC5lYWNoKAoJCVsKCQkJJ3JlYWR5JywKCQkJJ2ZsYXNocmVzZXQnLCAvLyBTaW1pbGFyIHRvIHRoZSByZWFkeSBldmVudCBpZiB0aGUgRmxhc2ggc29sdXRpb24gaXMgc2V0IHRvIGRpc3BsYXk6bm9uZSBhbmQgdGhlbiBzaG93biBhZ2FpbiBvciBpZiBpdCdzIHJlbG9hZGVkIGZvciBhbm90aGVyIHJlYXNvbiBieSB0aGUgYnJvd3Nlci4gRm9yIGV4YW1wbGUsIHVzaW5nIENTUyBwb3NpdGlvbjpmaXhlZCBvbiBGaXJlZm94IGZvciB0aGUgZnVsbCBzY3JlZW4gZmVhdHVyZS4KCQkJJ3Jlc2l6ZScsIC8vIE9jY3VycyB3aGVuIHRoZSBzaXplIGNoYW5nZXMgdGhyb3VnaCBhIGZ1bGwvcmVzdG9yZSBzY3JlZW4gb3BlcmF0aW9uIG9yIGlmIHRoZSBzaXplL3NpemVGdWxsIG9wdGlvbnMgYXJlIGNoYW5nZWQuCgkJCSdyZXBlYXQnLCAvLyBPY2N1cnMgd2hlbiB0aGUgcmVwZWF0IHN0YXR1cyBjaGFuZ2VzLiBVc3VhbGx5IHRocm91Z2ggY2xpY2tzIG9uIHRoZSByZXBlYXQgYnV0dG9uIG9mIHRoZSBpbnRlcmZhY2UuCgkJCSdjbGljaycsIC8vIE9jY3VycyB3aGVuIHRoZSB1c2VyIGNsaWNrcyBvbiBvbmUgb2YgdGhlIGZvbGxvd2luZzogcG9zdGVyIGltYWdlLCBodG1sIHZpZGVvLCBmbGFzaCB2aWRlby4KCQkJJ2Vycm9yJywgLy8gRXZlbnQgZXJyb3IgY29kZSBpbiBldmVudC5qUGxheWVyLmVycm9yLnR5cGUuIFNlZSAkLmpQbGF5ZXIuZXJyb3IKCQkJJ3dhcm5pbmcnLCAvLyBFdmVudCB3YXJuaW5nIGNvZGUgaW4gZXZlbnQualBsYXllci53YXJuaW5nLnR5cGUuIFNlZSAkLmpQbGF5ZXIud2FybmluZwoKCQkJLy8gT3RoZXIgZXZlbnRzIG1hdGNoIEhUTUw1IHNwZWMuCgkJCSdsb2Fkc3RhcnQnLAoJCQkncHJvZ3Jlc3MnLAoJCQknc3VzcGVuZCcsCgkJCSdhYm9ydCcsCgkJCSdlbXB0aWVkJywKCQkJJ3N0YWxsZWQnLAoJCQkncGxheScsCgkJCSdwYXVzZScsCgkJCSdsb2FkZWRtZXRhZGF0YScsCgkJCSdsb2FkZWRkYXRhJywKCQkJJ3dhaXRpbmcnLAoJCQkncGxheWluZycsCgkJCSdjYW5wbGF5JywKCQkJJ2NhbnBsYXl0aHJvdWdoJywKCQkJJ3NlZWtpbmcnLAoJCQknc2Vla2VkJywKCQkJJ3RpbWV1cGRhdGUnLAoJCQknZW5kZWQnLAoJCQkncmF0ZWNoYW5nZScsCgkJCSdkdXJhdGlvbmNoYW5nZScsCgkJCSd2b2x1bWVjaGFuZ2UnCgkJXSwKCQlmdW5jdGlvbigpIHsKCQkJJC5qUGxheWVyLmV2ZW50WyB0aGlzIF0gPSAnalBsYXllcl8nICsgdGhpczsKCQl9CgkpOwoKCSQualBsYXllci5odG1sRXZlbnQgPSBbIC8vIFRoZXNlIEhUTUwgZXZlbnRzIGFyZSBidWJibGVkIHRocm91Z2ggdG8gdGhlIGpQbGF5ZXIgZXZlbnQsIHdpdGhvdXQgYW55IGludGVybmFsIGFjdGlvbi4KCQkibG9hZHN0YXJ0IiwKCQkvLyAicHJvZ3Jlc3MiLCAvLyBqUGxheWVyIHVzZXMgaW50ZXJuYWxseSBiZWZvcmUgYnViYmxpbmcuCgkJLy8gInN1c3BlbmQiLCAvLyBqUGxheWVyIHVzZXMgaW50ZXJuYWxseSBiZWZvcmUgYnViYmxpbmcuCgkJImFib3J0IiwKCQkvLyAiZXJyb3IiLCAvLyBqUGxheWVyIHVzZXMgaW50ZXJuYWxseSBiZWZvcmUgYnViYmxpbmcuCgkJImVtcHRpZWQiLAoJCSJzdGFsbGVkIiwKCQkvLyAicGxheSIsIC8vIGpQbGF5ZXIgdXNlcyBpbnRlcm5hbGx5IGJlZm9yZSBidWJibGluZy4KCQkvLyAicGF1c2UiLCAvLyBqUGxheWVyIHVzZXMgaW50ZXJuYWxseSBiZWZvcmUgYnViYmxpbmcuCgkJImxvYWRlZG1ldGFkYXRhIiwKCQkibG9hZGVkZGF0YSIsCgkJLy8gIndhaXRpbmciLCAvLyBqUGxheWVyIHVzZXMgaW50ZXJuYWxseSBiZWZvcmUgYnViYmxpbmcuCgkJLy8gInBsYXlpbmciLCAvLyBqUGxheWVyIHVzZXMgaW50ZXJuYWxseSBiZWZvcmUgYnViYmxpbmcuCgkJImNhbnBsYXkiLAoJCSJjYW5wbGF5dGhyb3VnaCIsCgkJLy8gInNlZWtpbmciLCAvLyBqUGxheWVyIHVzZXMgaW50ZXJuYWxseSBiZWZvcmUgYnViYmxpbmcuCgkJLy8gInNlZWtlZCIsIC8vIGpQbGF5ZXIgdXNlcyBpbnRlcm5hbGx5IGJlZm9yZSBidWJibGluZy4KCQkvLyAidGltZXVwZGF0ZSIsIC8vIGpQbGF5ZXIgdXNlcyBpbnRlcm5hbGx5IGJlZm9yZSBidWJibGluZy4KCQkvLyAiZW5kZWQiLCAvLyBqUGxheWVyIHVzZXMgaW50ZXJuYWxseSBiZWZvcmUgYnViYmxpbmcuCgkJInJhdGVjaGFuZ2UiCgkJLy8gImR1cmF0aW9uY2hhbmdlIiAvLyBqUGxheWVyIHVzZXMgaW50ZXJuYWxseSBiZWZvcmUgYnViYmxpbmcuCgkJLy8gInZvbHVtZWNoYW5nZSIgLy8galBsYXllciB1c2VzIGludGVybmFsbHkgYmVmb3JlIGJ1YmJsaW5nLgoJXTsKCgkkLmpQbGF5ZXIucGF1c2UgPSBmdW5jdGlvbigpIHsKCQkkLmVhY2goJC5qUGxheWVyLnByb3RvdHlwZS5pbnN0YW5jZXMsIGZ1bmN0aW9uKGksIGVsZW1lbnQpIHsKCQkJaWYoZWxlbWVudC5kYXRhKCJqUGxheWVyIikuc3RhdHVzLnNyY1NldCkgeyAvLyBDaGVjayB0aGF0IG1lZGlhIGlzIHNldCBvdGhlcndpc2Ugd291bGQgY2F1c2UgZXJyb3IgZXZlbnQuCgkJCQllbGVtZW50LmpQbGF5ZXIoInBhdXNlIik7CgkJCX0KCQl9KTsKCX07CgoJLy8gRGVmYXVsdCBmb3IgalBsYXllciBvcHRpb24udGltZUZvcm1hdAoJJC5qUGxheWVyLnRpbWVGb3JtYXQgPSB7CgkJc2hvd0hvdXI6IGZhbHNlLAoJCXNob3dNaW46IHRydWUsCgkJc2hvd1NlYzogdHJ1ZSwKCQlwYWRIb3VyOiBmYWxzZSwKCQlwYWRNaW46IHRydWUsCgkJcGFkU2VjOiB0cnVlLAoJCXNlcEhvdXI6ICI6IiwKCQlzZXBNaW46ICI6IiwKCQlzZXBTZWM6ICIiCgl9OwoJdmFyIENvbnZlcnRUaW1lID0gZnVuY3Rpb24oKSB7CgkJdGhpcy5pbml0KCk7Cgl9OwoJQ29udmVydFRpbWUucHJvdG90eXBlID0gewoJCWluaXQ6IGZ1bmN0aW9uKCkgewoJCQl0aGlzLm9wdGlvbnMgPSB7CgkJCQl0aW1lRm9ybWF0OiAkLmpQbGF5ZXIudGltZUZvcm1hdAoJCQl9OwoJCX0sCgkJdGltZTogZnVuY3Rpb24ocykgeyAvLyBmdW5jdGlvbiB1c2VkIG9uIGpQbGF5ZXIucHJvdG90eXBlLl9jb252ZXJ0VGltZSB0byBlbmFibGUgcGVyIGluc3RhbmNlIG9wdGlvbnMuCgkJCXMgPSAocyAmJiB0eXBlb2YgcyA9PT0gJ251bWJlcicpID8gcyA6IDA7CgoJCQl2YXIgbXlUaW1lID0gbmV3IERhdGUocyAqIDEwMDApLAoJCQkJaG91ciA9IG15VGltZS5nZXRVVENIb3VycygpLAoJCQkJbWluID0gdGhpcy5vcHRpb25zLnRpbWVGb3JtYXQuc2hvd0hvdXIgPyBteVRpbWUuZ2V0VVRDTWludXRlcygpIDogbXlUaW1lLmdldFVUQ01pbnV0ZXMoKSArIGhvdXIgKiA2MCwKCQkJCXNlYyA9IHRoaXMub3B0aW9ucy50aW1lRm9ybWF0LnNob3dNaW4gPyBteVRpbWUuZ2V0VVRDU2Vjb25kcygpIDogbXlUaW1lLmdldFVUQ1NlY29uZHMoKSArIG1pbiAqIDYwLAoJCQkJc3RySG91ciA9ICh0aGlzLm9wdGlvbnMudGltZUZvcm1hdC5wYWRIb3VyICYmIGhvdXIgPCAxMCkgPyAiMCIgKyBob3VyIDogaG91ciwKCQkJCXN0ck1pbiA9ICh0aGlzLm9wdGlvbnMudGltZUZvcm1hdC5wYWRNaW4gJiYgbWluIDwgMTApID8gIjAiICsgbWluIDogbWluLAoJCQkJc3RyU2VjID0gKHRoaXMub3B0aW9ucy50aW1lRm9ybWF0LnBhZFNlYyAmJiBzZWMgPCAxMCkgPyAiMCIgKyBzZWMgOiBzZWMsCgkJCQlzdHJUaW1lID0gIiI7CgoJCQlzdHJUaW1lICs9IHRoaXMub3B0aW9ucy50aW1lRm9ybWF0LnNob3dIb3VyID8gc3RySG91ciArIHRoaXMub3B0aW9ucy50aW1lRm9ybWF0LnNlcEhvdXIgOiAiIjsKCQkJc3RyVGltZSArPSB0aGlzLm9wdGlvbnMudGltZUZvcm1hdC5zaG93TWluID8gc3RyTWluICsgdGhpcy5vcHRpb25zLnRpbWVGb3JtYXQuc2VwTWluIDogIiI7CgkJCXN0clRpbWUgKz0gdGhpcy5vcHRpb25zLnRpbWVGb3JtYXQuc2hvd1NlYyA/IHN0clNlYyArIHRoaXMub3B0aW9ucy50aW1lRm9ybWF0LnNlcFNlYyA6ICIiOwoKCQkJcmV0dXJuIHN0clRpbWU7CgkJfQoJfTsKCXZhciBteUNvbnZlcnRUaW1lID0gbmV3IENvbnZlcnRUaW1lKCk7CgkkLmpQbGF5ZXIuY29udmVydFRpbWUgPSBmdW5jdGlvbihzKSB7CgkJcmV0dXJuIG15Q29udmVydFRpbWUudGltZShzKTsKCX07CgoJLy8gQWRhcHRpbmcgalF1ZXJ5IDEuNC40IGNvZGUgZm9yIGpRdWVyeS5icm93c2VyLiBSZXF1aXJlZCBzaW5jZSBqUXVlcnkgMS4zLjIgZG9lcyBub3QgZGV0ZWN0IENocm9tZSBhcyB3ZWJraXQuCgkkLmpQbGF5ZXIudWFCcm93c2VyID0gZnVuY3Rpb24oIHVzZXJBZ2VudCApIHsKCQl2YXIgdWEgPSB1c2VyQWdlbnQudG9Mb3dlckNhc2UoKTsKCgkJLy8gVXNlcmFnZW50IFJlZ0V4cAoJCXZhciByd2Via2l0ID0gLyh3ZWJraXQpWyBcL10oW1x3Ll0rKS87CgkJdmFyIHJvcGVyYSA9IC8ob3BlcmEpKD86Lip2ZXJzaW9uKT9bIFwvXShbXHcuXSspLzsKCQl2YXIgcm1zaWUgPSAvKG1zaWUpIChbXHcuXSspLzsKCQl2YXIgcm1vemlsbGEgPSAvKG1vemlsbGEpKD86Lio/IHJ2OihbXHcuXSspKT8vOwoKCQl2YXIgbWF0Y2ggPSByd2Via2l0LmV4ZWMoIHVhICkgfHwKCQkJcm9wZXJhLmV4ZWMoIHVhICkgfHwKCQkJcm1zaWUuZXhlYyggdWEgKSB8fAoJCQl1YS5pbmRleE9mKCJjb21wYXRpYmxlIikgPCAwICYmIHJtb3ppbGxhLmV4ZWMoIHVhICkgfHwKCQkJW107CgoJCXJldHVybiB7IGJyb3dzZXI6IG1hdGNoWzFdIHx8ICIiLCB2ZXJzaW9uOiBtYXRjaFsyXSB8fCAiMCIgfTsKCX07CgoJLy8gUGxhdGZvcm0gc25pZmZlciBmb3IgZGV0ZWN0aW5nIG1vYmlsZSBkZXZpY2VzCgkkLmpQbGF5ZXIudWFQbGF0Zm9ybSA9IGZ1bmN0aW9uKCB1c2VyQWdlbnQgKSB7CgkJdmFyIHVhID0gdXNlckFnZW50LnRvTG93ZXJDYXNlKCk7CgoJCS8vIFVzZXJhZ2VudCBSZWdFeHAKCQl2YXIgcnBsYXRmb3JtID0gLyhpcGFkfGlwaG9uZXxpcG9kfGFuZHJvaWR8YmxhY2tiZXJyeXxwbGF5Ym9va3x3aW5kb3dzIGNlfHdlYm9zKS87CgkJdmFyIHJ0YWJsZXQgPSAvKGlwYWR8cGxheWJvb2spLzsKCQl2YXIgcmFuZHJvaWQgPSAvKGFuZHJvaWQpLzsKCQl2YXIgcm1vYmlsZSA9IC8obW9iaWxlKS87CgoJCXZhciBwbGF0Zm9ybSA9IHJwbGF0Zm9ybS5leGVjKCB1YSApIHx8IFtdOwoJCXZhciB0YWJsZXQgPSBydGFibGV0LmV4ZWMoIHVhICkgfHwKCQkJIXJtb2JpbGUuZXhlYyggdWEgKSAmJiByYW5kcm9pZC5leGVjKCB1YSApIHx8CgkJCVtdOwoKCQlpZihwbGF0Zm9ybVsxXSkgewoJCQlwbGF0Zm9ybVsxXSA9IHBsYXRmb3JtWzFdLnJlcGxhY2UoL1xzL2csICJfIik7IC8vIENoYW5nZSB3aGl0ZXNwYWNlIHRvIHVuZGVyc2NvcmUuIEVuYWJsZXMgZG90IG5vdGF0aW9uLgoJCX0KCgkJcmV0dXJuIHsgcGxhdGZvcm06IHBsYXRmb3JtWzFdIHx8ICIiLCB0YWJsZXQ6IHRhYmxldFsxXSB8fCAiIiB9OwoJfTsKCgkkLmpQbGF5ZXIuYnJvd3NlciA9IHsKCX07CgkkLmpQbGF5ZXIucGxhdGZvcm0gPSB7Cgl9OwoKCXZhciBicm93c2VyTWF0Y2ggPSAkLmpQbGF5ZXIudWFCcm93c2VyKG5hdmlnYXRvci51c2VyQWdlbnQpOwoJaWYgKCBicm93c2VyTWF0Y2guYnJvd3NlciApIHsKCQkkLmpQbGF5ZXIuYnJvd3NlclsgYnJvd3Nlck1hdGNoLmJyb3dzZXIgXSA9IHRydWU7CgkJJC5qUGxheWVyLmJyb3dzZXIudmVyc2lvbiA9IGJyb3dzZXJNYXRjaC52ZXJzaW9uOwoJfQoJdmFyIHBsYXRmb3JtTWF0Y2ggPSAkLmpQbGF5ZXIudWFQbGF0Zm9ybShuYXZpZ2F0b3IudXNlckFnZW50KTsKCWlmICggcGxhdGZvcm1NYXRjaC5wbGF0Zm9ybSApIHsKCQkkLmpQbGF5ZXIucGxhdGZvcm1bIHBsYXRmb3JtTWF0Y2gucGxhdGZvcm0gXSA9IHRydWU7CgkJJC5qUGxheWVyLnBsYXRmb3JtLm1vYmlsZSA9ICFwbGF0Zm9ybU1hdGNoLnRhYmxldDsKCQkkLmpQbGF5ZXIucGxhdGZvcm0udGFibGV0ID0gISFwbGF0Zm9ybU1hdGNoLnRhYmxldDsKCX0KCgkvLyBJbnRlcm5ldCBFeHBsb3JlciAoSUUpIEJyb3dzZXIgRG9jdW1lbnQgTW9kZSBTbmlmZmVyLiBCYXNlZCBvbiBjb2RlIGF0OgoJLy8gaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2NjMjg4MzI1JTI4dj12cy44NSUyOS5hc3B4I0dldE1vZGUKCSQualBsYXllci5nZXREb2NNb2RlID0gZnVuY3Rpb24oKSB7CgkJdmFyIGRvY01vZGU7CgkJaWYgKCQualBsYXllci5icm93c2VyLm1zaWUpIHsKCQkJaWYgKGRvY3VtZW50LmRvY3VtZW50TW9kZSkgeyAvLyBJRTggb3IgbGF0ZXIKCQkJCWRvY01vZGUgPSBkb2N1bWVudC5kb2N1bWVudE1vZGU7CgkJCX0gZWxzZSB7IC8vIElFIDUtNwoJCQkJZG9jTW9kZSA9IDU7IC8vIEFzc3VtZSBxdWlya3MgbW9kZSB1bmxlc3MgcHJvdmVuIG90aGVyd2lzZQoJCQkJaWYgKGRvY3VtZW50LmNvbXBhdE1vZGUpIHsKCQkJCQlpZiAoZG9jdW1lbnQuY29tcGF0TW9kZSA9PT0gIkNTUzFDb21wYXQiKSB7CgkJCQkJCWRvY01vZGUgPSA3OyAvLyBzdGFuZGFyZHMgbW9kZQoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCQlyZXR1cm4gZG9jTW9kZTsKCX07CgkkLmpQbGF5ZXIuYnJvd3Nlci5kb2N1bWVudE1vZGUgPSAkLmpQbGF5ZXIuZ2V0RG9jTW9kZSgpOwoKCSQualBsYXllci5uYXRpdmVGZWF0dXJlcyA9IHsKCQlpbml0OiBmdW5jdGlvbigpIHsKCgkJCS8qIEZ1bGxzY3JlZW4gZnVuY3Rpb24gbmFtaW5nIGluZmx1ZW5jZWQgYnkgVzNDIG5hbWluZy4KCQkJICogTm8gc3VwcG9ydCBmb3I6IE1vemlsbGEgUHJvcG9zYWw6IGh0dHBzOi8vd2lraS5tb3ppbGxhLm9yZy9HZWNrbzpGdWxsU2NyZWVuQVBJCgkJCSAqLwoKCQkJdmFyIGQgPSBkb2N1bWVudCwKCQkJCXYgPSBkLmNyZWF0ZUVsZW1lbnQoJ3ZpZGVvJyksCgkJCQlzcGVjID0gewoJCQkJCS8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2Z1bGxzY3JlZW4vCgkJCQkJdzNjOiBbCgkJCQkJCSdmdWxsc2NyZWVuRW5hYmxlZCcsCgkJCQkJCSdmdWxsc2NyZWVuRWxlbWVudCcsCgkJCQkJCSdyZXF1ZXN0RnVsbHNjcmVlbicsCgkJCQkJCSdleGl0RnVsbHNjcmVlbicsCgkJCQkJCSdmdWxsc2NyZWVuY2hhbmdlJywKCQkJCQkJJ2Z1bGxzY3JlZW5lcnJvcicKCQkJCQldLAoJCQkJCS8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvRE9NL1VzaW5nX2Z1bGxzY3JlZW5fbW9kZQoJCQkJCW1vejogWwoJCQkJCQknbW96RnVsbFNjcmVlbkVuYWJsZWQnLAoJCQkJCQknbW96RnVsbFNjcmVlbkVsZW1lbnQnLAoJCQkJCQknbW96UmVxdWVzdEZ1bGxTY3JlZW4nLAoJCQkJCQknbW96Q2FuY2VsRnVsbFNjcmVlbicsCgkJCQkJCSdtb3pmdWxsc2NyZWVuY2hhbmdlJywKCQkJCQkJJ21vemZ1bGxzY3JlZW5lcnJvcicKCQkJCQldLAoJCQkJCS8vIGh0dHA6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2xpYnJhcnkvc2FmYXJpLyNkb2N1bWVudGF0aW9uL1dlYktpdC9SZWZlcmVuY2UvRWxlbWVudENsYXNzUmVmL0VsZW1lbnQvRWxlbWVudC5odG1sCgkJCQkJLy8gaHR0cDovL2RldmVsb3Blci5hcHBsZS5jb20vbGlicmFyeS9zYWZhcmkvI2RvY3VtZW50YXRpb24vVXNlckV4cGVyaWVuY2UvUmVmZXJlbmNlL0RvY3VtZW50QWRkaXRpb25zUmVmZXJlbmNlL0RvY3VtZW50QWRkaXRpb25zL0RvY3VtZW50QWRkaXRpb25zLmh0bWwKCQkJCQl3ZWJraXQ6IFsKCQkJCQkJJycsCgkJCQkJCSd3ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQnLAoJCQkJCQknd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4nLAoJCQkJCQknd2Via2l0Q2FuY2VsRnVsbFNjcmVlbicsCgkJCQkJCSd3ZWJraXRmdWxsc2NyZWVuY2hhbmdlJywKCQkJCQkJJycKCQkJCQldLAoJCQkJCS8vIGh0dHA6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2xpYnJhcnkvc2FmYXJpLyNkb2N1bWVudGF0aW9uL0F1ZGlvVmlkZW8vUmVmZXJlbmNlL0hUTUxWaWRlb0VsZW1lbnRDbGFzc1JlZmVyZW5jZS9IVE1MVmlkZW9FbGVtZW50L0hUTUxWaWRlb0VsZW1lbnQuaHRtbAoJCQkJCXdlYmtpdFZpZGVvOiBbCgkJCQkJCSd3ZWJraXRTdXBwb3J0c0Z1bGxzY3JlZW4nLAoJCQkJCQknd2Via2l0RGlzcGxheWluZ0Z1bGxzY3JlZW4nLAoJCQkJCQknd2Via2l0RW50ZXJGdWxsc2NyZWVuJywKCQkJCQkJJ3dlYmtpdEV4aXRGdWxsc2NyZWVuJywKCQkJCQkJJycsCgkJCQkJCScnCgkJCQkJXQoJCQkJfSwKCQkJCXNwZWNPcmRlciA9IFsKCQkJCQkndzNjJywKCQkJCQknbW96JywKCQkJCQknd2Via2l0JywKCQkJCQknd2Via2l0VmlkZW8nCgkJCQldLAoJCQkJZnMsIGksIGlsOwoKCQkJdGhpcy5mdWxsc2NyZWVuID0gZnMgPSB7CgkJCQlzdXBwb3J0OiB7CgkJCQkJdzNjOiAhIWRbc3BlYy53M2NbMF1dLAoJCQkJCW1vejogISFkW3NwZWMubW96WzBdXSwKCQkJCQl3ZWJraXQ6IHR5cGVvZiBkW3NwZWMud2Via2l0WzNdXSA9PT0gJ2Z1bmN0aW9uJywKCQkJCQl3ZWJraXRWaWRlbzogdHlwZW9mIHZbc3BlYy53ZWJraXRWaWRlb1syXV0gPT09ICdmdW5jdGlvbicKCQkJCX0sCgkJCQl1c2VkOiB7fQoJCQl9OwoKCQkJLy8gU3RvcmUgdGhlIG5hbWUgb2YgdGhlIHNwZWMgYmVpbmcgdXNlZCBhbmQgYXMgYSBoYW5keSBib29sZWFuLgoJCQlmb3IoaSA9IDAsIGlsID0gc3BlY09yZGVyLmxlbmd0aDsgaSA8IGlsOyBpKyspIHsKCQkJCXZhciBuID0gc3BlY09yZGVyW2ldOwoJCQkJaWYoZnMuc3VwcG9ydFtuXSkgewoJCQkJCWZzLnNwZWMgPSBuOwoJCQkJCWZzLnVzZWRbbl0gPSB0cnVlOwoJCQkJCWJyZWFrOwoJCQkJfQoJCQl9CgoJCQlpZihmcy5zcGVjKSB7CgkJCQl2YXIgcyA9IHNwZWNbZnMuc3BlY107CgkJCQlmcy5hcGkgPSB7CgkJCQkJZnVsbHNjcmVlbkVuYWJsZWQ6IHRydWUsCgkJCQkJZnVsbHNjcmVlbkVsZW1lbnQ6IGZ1bmN0aW9uKGVsZW0pIHsKCQkJCQkJZWxlbSA9IGVsZW0gPyBlbGVtIDogZDsgLy8gVmlkZW8gZWxlbWVudCByZXF1aXJlZCBmb3Igd2Via2l0VmlkZW8KCQkJCQkJcmV0dXJuIGVsZW1bc1sxXV07CgkJCQkJfSwKCQkJCQlyZXF1ZXN0RnVsbHNjcmVlbjogZnVuY3Rpb24oZWxlbSkgewoJCQkJCQlyZXR1cm4gZWxlbVtzWzJdXSgpOwoJCQkJCX0sCgkJCQkJZXhpdEZ1bGxzY3JlZW46IGZ1bmN0aW9uKGVsZW0pIHsKCQkJCQkJZWxlbSA9IGVsZW0gPyBlbGVtIDogZDsgLy8gVmlkZW8gZWxlbWVudCByZXF1aXJlZCBmb3Igd2Via2l0VmlkZW8KCQkJCQkJcmV0dXJuIGVsZW1bc1szXV0oKTsKCQkJCQl9CgkJCQl9OwoJCQkJZnMuZXZlbnQgPSB7CgkJCQkJZnVsbHNjcmVlbmNoYW5nZTogc1s0XSwKCQkJCQlmdWxsc2NyZWVuZXJyb3I6IHNbNV0KCQkJCX07CgkJCX0gZWxzZSB7CgkJCQlmcy5hcGkgPSB7CgkJCQkJZnVsbHNjcmVlbkVuYWJsZWQ6IGZhbHNlLAoJCQkJCWZ1bGxzY3JlZW5FbGVtZW50OiBmdW5jdGlvbigpIHsKCQkJCQkJcmV0dXJuIG51bGw7CgkJCQkJfSwKCQkJCQlyZXF1ZXN0RnVsbHNjcmVlbjogZnVuY3Rpb24oKSB7fSwKCQkJCQlleGl0RnVsbHNjcmVlbjogZnVuY3Rpb24oKSB7fQoJCQkJfTsKCQkJCWZzLmV2ZW50ID0ge307CgkJCX0KCQl9Cgl9OwoJJC5qUGxheWVyLm5hdGl2ZUZlYXR1cmVzLmluaXQoKTsKCgkvLyBUaGUga2V5Ym9hcmQgY29udHJvbCBzeXN0ZW0uCgoJLy8gVGhlIGN1cnJlbnQgalBsYXllciBpbnN0YW5jZSBpbiBmb2N1cy4KCSQualBsYXllci5mb2N1cyA9IG51bGw7CgoJLy8gVGhlIGxpc3Qgb2YgZWxlbWVudCBub2RlIG5hbWVzIHRvIGlnbm9yZSB3aXRoIGtleSBjb250cm9scy4KCSQualBsYXllci5rZXlJZ25vcmVFbGVtZW50TmFtZXMgPSAiSU5QVVQgVEVYVEFSRUEiOwoKCS8vIFRoZSBmdW5jdGlvbiB0aGF0IGRlYWxzIHdpdGgga2V5IHByZXNzZXMuCgl2YXIga2V5QmluZGluZ3MgPSBmdW5jdGlvbihldmVudCkgewoKCQl2YXIgZiA9ICQualBsYXllci5mb2N1cywKCQkJaWdub3JlS2V5OwoKCQkvLyBBIGpQbGF5ZXIgaW5zdGFuY2UgbXVzdCBiZSBpbiBmb2N1cy4gaWUuLCBrZXlFbmFibGVkIGFuZCB0aGUgbGFzdCBvbmUgcGxheWVkLgoJCWlmKGYpIHsKCQkJLy8gV2hhdCBnZW5lcmF0ZWQgdGhlIGtleSBwcmVzcz8KCQkJJC5lYWNoKCAkLmpQbGF5ZXIua2V5SWdub3JlRWxlbWVudE5hbWVzLnNwbGl0KC9ccysvZyksIGZ1bmN0aW9uKGksIG5hbWUpIHsKCQkJCS8vIFRoZSBzdHJpbmdzIHNob3VsZCBhbHJlYWR5IGJlIHVwcGVyY2FzZS4KCQkJCWlmKGV2ZW50LnRhcmdldC5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpID09PSBuYW1lLnRvVXBwZXJDYXNlKCkpIHsKCQkJCQlpZ25vcmVLZXkgPSB0cnVlOwoJCQkJCXJldHVybiBmYWxzZTsgLy8gZXhpdCBlYWNoLgoJCQkJfQoJCQl9KTsKCQkJaWYoIWlnbm9yZUtleSkgewoJCQkJLy8gU2VlIGlmIHRoZSBrZXkgcHJlc3NlZCBtYXRjaGVzIGFueSBvZiB0aGUgYmluZGluZ3MuCgkJCQkkLmVhY2goZi5vcHRpb25zLmtleUJpbmRpbmdzLCBmdW5jdGlvbihhY3Rpb24sIGJpbmRpbmcpIHsKCQkJCQkvLyBUaGUgYmluZGluZyBjb3VsZCBiZSBhIG51bGwgd2hlbiB0aGUgZGVmYXVsdCBoYXMgYmVlbiBkaXNhYmxlZC4gaWUuLCAxc3QgY2xhdXNlIGluIGlmKCkKCQkJCQlpZihiaW5kaW5nICYmIGV2ZW50LndoaWNoID09PSBiaW5kaW5nLmtleSAmJiAkLmlzRnVuY3Rpb24oYmluZGluZy5mbikpIHsKCQkJCQkJZXZlbnQucHJldmVudERlZmF1bHQoKTsgLy8gS2V5IGJlaW5nIHVzZWQgYnkgalBsYXllciwgc28gcHJldmVudCBkZWZhdWx0IG9wZXJhdGlvbi4KCQkJCQkJYmluZGluZy5mbihmKTsKCQkJCQkJcmV0dXJuIGZhbHNlOyAvLyBleGl0IGVhY2guCgkJCQkJfQoJCQkJfSk7CgkJCX0KCQl9Cgl9OwoKCSQualBsYXllci5rZXlzID0gZnVuY3Rpb24oZW4pIHsKCQl2YXIgZXZlbnQgPSAia2V5ZG93bi5qUGxheWVyIjsKCQkvLyBSZW1vdmUgYW55IGJpbmRpbmcsIGp1c3QgaW4gY2FzZSBlbmFibGVkIG1vcmUgdGhhbiBvbmNlLgoJCSQoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS51bmJpbmQoZXZlbnQpOwoJCWlmKGVuKSB7CgkJCSQoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5iaW5kKGV2ZW50LCBrZXlCaW5kaW5ncyk7CgkJfQoJfTsKCgkvLyBFbmFibGUgdGhlIGdsb2JhbCBrZXkgY29udHJvbCBoYW5kbGVyIHJlYWR5IGZvciBhbnkgalBsYXllciBpbnN0YW5jZSB3aXRoIHRoZSBrZXlFbmFibGVkIG9wdGlvbiBlbmFibGVkLgoJJC5qUGxheWVyLmtleXModHJ1ZSk7CgoJJC5qUGxheWVyLnByb3RvdHlwZSA9IHsKCQljb3VudDogMCwgLy8gU3RhdGljIFZhcmlhYmxlOiBDaGFuZ2UgaXQgdmlhIHByb3RvdHlwZS4KCQl2ZXJzaW9uOiB7IC8vIFN0YXRpYyBPYmplY3QKCQkJc2NyaXB0OiAiMi40LjAiLAoJCQluZWVkRmxhc2g6ICIyLjQuMCIsCgkJCWZsYXNoOiAidW5rbm93biIKCQl9LAoJCW9wdGlvbnM6IHsgLy8gSW5zdGFuY2VkIGluICQualBsYXllcigpIGNvbnN0cnVjdG9yCgkJCXN3ZlBhdGg6ICJqcyIsIC8vIFBhdGggdG8gSnBsYXllci5zd2YuIENhbiBiZSByZWxhdGl2ZSwgYWJzb2x1dGUgb3Igc2VydmVyIHJvb3QgcmVsYXRpdmUuCgkJCXNvbHV0aW9uOiAiaHRtbCwgZmxhc2giLCAvLyBWYWxpZCBzb2x1dGlvbnM6IGh0bWwsIGZsYXNoLiBPcmRlciBkZWZpbmVzIHByaW9yaXR5LiAxc3QgaXMgaGlnaGVzdCwKCQkJc3VwcGxpZWQ6ICJtcDMiLCAvLyBEZWZpbmVzIHdoaWNoIGZvcm1hdHMgalBsYXllciB3aWxsIHRyeSBhbmQgc3VwcG9ydCBhbmQgdGhlIHByaW9yaXR5IGJ5IHRoZSBvcmRlci4gMXN0IGlzIGhpZ2hlc3QsCgkJCXByZWxvYWQ6ICdtZXRhZGF0YScsICAvLyBIVE1MNSBTcGVjIHZhbHVlczogbm9uZSwgbWV0YWRhdGEsIGF1dG8uCgkJCXZvbHVtZTogMC44LCAvLyBUaGUgdm9sdW1lLiBOdW1iZXIgMCB0byAxLgoJCQltdXRlZDogZmFsc2UsCgkJCXdtb2RlOiAib3BhcXVlIiwgLy8gVmFsaWQgd21vZGU6IHdpbmRvdywgdHJhbnNwYXJlbnQsIG9wYXF1ZSwgZGlyZWN0LCBncHUuIAoJCQliYWNrZ3JvdW5kQ29sb3I6ICIjMDAwMDAwIiwgLy8gVG8gZGVmaW5lIHRoZSBqUGxheWVyIGRpdiBhbmQgRmxhc2ggYmFja2dyb3VuZCBjb2xvci4KCQkJY3NzU2VsZWN0b3JBbmNlc3RvcjogIiNqcF9jb250YWluZXJfMSIsCgkJCWNzc1NlbGVjdG9yOiB7IC8vICogZGVub3RlcyBwcm9wZXJ0aWVzIHRoYXQgc2hvdWxkIG9ubHkgYmUgcmVxdWlyZWQgd2hlbiB2aWRlbyBtZWRpYSB0eXBlIHJlcXVpcmVkLiBfY3NzU2VsZWN0b3IoKSB3b3VsZCByZXF1aXJlIGNoYW5nZXMgdG8gZW5hYmxlIHNwbGl0dGluZyB0aGVzZSBpbnRvIEF1ZGlvIGFuZCBWaWRlbyBkZWZhdWx0cy4KCQkJCXZpZGVvUGxheTogIi5qcC12aWRlby1wbGF5IiwgLy8gKgoJCQkJcGxheTogIi5qcC1wbGF5IiwKCQkJCXBhdXNlOiAiLmpwLXBhdXNlIiwKCQkJCXN0b3A6ICIuanAtc3RvcCIsCgkJCQlzZWVrQmFyOiAiLmpwLXNlZWstYmFyIiwKCQkJCXBsYXlCYXI6ICIuanAtcGxheS1iYXIiLAoJCQkJbXV0ZTogIi5qcC1tdXRlIiwKCQkJCXVubXV0ZTogIi5qcC11bm11dGUiLAoJCQkJdm9sdW1lQmFyOiAiLmpwLXZvbHVtZS1iYXIiLAoJCQkJdm9sdW1lQmFyVmFsdWU6ICIuanAtdm9sdW1lLWJhci12YWx1ZSIsCgkJCQl2b2x1bWVNYXg6ICIuanAtdm9sdW1lLW1heCIsCgkJCQljdXJyZW50VGltZTogIi5qcC1jdXJyZW50LXRpbWUiLAoJCQkJZHVyYXRpb246ICIuanAtZHVyYXRpb24iLAoJCQkJZnVsbFNjcmVlbjogIi5qcC1mdWxsLXNjcmVlbiIsIC8vICoKCQkJCXJlc3RvcmVTY3JlZW46ICIuanAtcmVzdG9yZS1zY3JlZW4iLCAvLyAqCgkJCQlyZXBlYXQ6ICIuanAtcmVwZWF0IiwKCQkJCXJlcGVhdE9mZjogIi5qcC1yZXBlYXQtb2ZmIiwKCQkJCWd1aTogIi5qcC1ndWkiLCAvLyBUaGUgaW50ZXJmYWNlIHVzZWQgd2l0aCBhdXRvaGlkZSBmZWF0dXJlLgoJCQkJbm9Tb2x1dGlvbjogIi5qcC1uby1zb2x1dGlvbiIgLy8gRm9yIGVycm9yIGZlZWRiYWNrIHdoZW4galBsYXllciBjYW5ub3QgZmluZCBhIHNvbHV0aW9uLgoJCQl9LAoJCQlzbW9vdGhQbGF5QmFyOiBmYWxzZSwgLy8gU21vb3RocyB0aGUgcGxheSBiYXIgdHJhbnNpdGlvbnMsIHdoaWNoIGFmZmVjdHMgY2xpY2tzIGFuZCBzaG9ydCBtZWRpYSB3aXRoIGJpZyBjaGFuZ2VzIHBlciBzZWNvbmQuCgkJCWZ1bGxTY3JlZW46IGZhbHNlLCAvLyBOYXRpdmUgRnVsbCBTY3JlZW4KCQkJZnVsbFdpbmRvdzogZmFsc2UsCgkJCWF1dG9oaWRlOiB7CgkJCQlyZXN0b3JlZDogZmFsc2UsIC8vIENvbnRyb2xzIHRoZSBpbnRlcmZhY2UgYXV0b2hpZGUgZmVhdHVyZS4KCQkJCWZ1bGw6IHRydWUsIC8vIENvbnRyb2xzIHRoZSBpbnRlcmZhY2UgYXV0b2hpZGUgZmVhdHVyZS4KCQkJCWZhZGVJbjogMjAwLCAvLyBNaWxsaXNlY29uZHMuIFRoZSBwZXJpb2Qgb2YgdGhlIGZhZGVJbiBhbmltLgoJCQkJZmFkZU91dDogNjAwLCAvLyBNaWxsaXNlY29uZHMuIFRoZSBwZXJpb2Qgb2YgdGhlIGZhZGVPdXQgYW5pbS4KCQkJCWhvbGQ6IDEwMDAgLy8gTWlsbGlzZWNvbmRzLiBUaGUgcGVyaW9kIG9mIHRoZSBwYXVzZSBiZWZvcmUgYXV0b2hpZGUgYmVpbmdzLgoJCQl9LAoJCQlsb29wOiBmYWxzZSwKCQkJcmVwZWF0OiBmdW5jdGlvbihldmVudCkgeyAvLyBUaGUgZGVmYXVsdCBqUGxheWVyIHJlcGVhdCBldmVudCBoYW5kbGVyCgkJCQlpZihldmVudC5qUGxheWVyLm9wdGlvbnMubG9vcCkgewoJCQkJCSQodGhpcykudW5iaW5kKCIualBsYXllclJlcGVhdCIpLmJpbmQoJC5qUGxheWVyLmV2ZW50LmVuZGVkICsgIi5qUGxheWVyLmpQbGF5ZXJSZXBlYXQiLCBmdW5jdGlvbigpIHsKCQkJCQkJJCh0aGlzKS5qUGxheWVyKCJwbGF5Iik7CgkJCQkJfSk7CgkJCQl9IGVsc2UgewoJCQkJCSQodGhpcykudW5iaW5kKCIualBsYXllclJlcGVhdCIpOwoJCQkJfQoJCQl9LAoJCQluYXRpdmVWaWRlb0NvbnRyb2xzOiB7CgkJCQkvLyBXb3JrcyB3ZWxsIG9uIHN0YW5kYXJkIGJyb3dzZXJzLgoJCQkJLy8gUGhvbmUgYW5kIHRhYmxldCBicm93c2VycyBjYW4gaGF2ZSBwcm9ibGVtcyB3aXRoIHRoZSBjb250cm9scyBkaXNhcHBlYXJpbmcuCgkJCX0sCgkJCW5vRnVsbFdpbmRvdzogewoJCQkJbXNpZTogL21zaWUgWzAtNl1cLi8sCgkJCQlpcGFkOiAvaXBhZC4qP29zIFswLTRdXC4vLAoJCQkJaXBob25lOiAvaXBob25lLywKCQkJCWlwb2Q6IC9pcG9kLywKCQkJCWFuZHJvaWRfcGFkOiAvYW5kcm9pZCBbMC0zXVwuKD8hLio/bW9iaWxlKS8sCgkJCQlhbmRyb2lkX3Bob25lOiAvYW5kcm9pZC4qP21vYmlsZS8sCgkJCQlibGFja2JlcnJ5OiAvYmxhY2tiZXJyeS8sCgkJCQl3aW5kb3dzX2NlOiAvd2luZG93cyBjZS8sCgkJCQlpZW1vYmlsZTogL2llbW9iaWxlLywKCQkJCXdlYm9zOiAvd2Vib3MvCgkJCX0sCgkJCW5vVm9sdW1lOiB7CgkJCQlpcGFkOiAvaXBhZC8sCgkJCQlpcGhvbmU6IC9pcGhvbmUvLAoJCQkJaXBvZDogL2lwb2QvLAoJCQkJYW5kcm9pZF9wYWQ6IC9hbmRyb2lkKD8hLio/bW9iaWxlKS8sCgkJCQlhbmRyb2lkX3Bob25lOiAvYW5kcm9pZC4qP21vYmlsZS8sCgkJCQlibGFja2JlcnJ5OiAvYmxhY2tiZXJyeS8sCgkJCQl3aW5kb3dzX2NlOiAvd2luZG93cyBjZS8sCgkJCQlpZW1vYmlsZTogL2llbW9iaWxlLywKCQkJCXdlYm9zOiAvd2Vib3MvLAoJCQkJcGxheWJvb2s6IC9wbGF5Ym9vay8KCQkJfSwKCQkJdGltZUZvcm1hdDogewoJCQkJLy8gU3BlY2lmaWMgdGltZSBmb3JtYXQgZm9yIHRoaXMgaW5zdGFuY2UuIFRoZSBzdXBwb3J0ZWQgb3B0aW9ucyBhcmUgZGVmaW5lZCBpbiAkLmpQbGF5ZXIudGltZUZvcm1hdAoJCQkJLy8gRm9yIHRoZSB1bmRlZmluZWQgb3B0aW9ucyB3ZSB1c2UgdGhlIGRlZmF1bHQgZnJvbSAkLmpQbGF5ZXIudGltZUZvcm1hdAoJCQl9LAoJCQlrZXlFbmFibGVkOiBmYWxzZSwgLy8gRW5hYmxlcyBrZXlib2FyZCBjb250cm9scy4KCQkJYXVkaW9GdWxsU2NyZWVuOiBmYWxzZSwgLy8gRW5hYmxlcyBrZXlib2FyZCBjb250cm9scyB0byBlbnRlciBmdWxsIHNjcmVlbiB3aXRoIGF1ZGlvIG1lZGlhLgoJCQlrZXlCaW5kaW5nczogeyAvLyBUaGUga2V5IGNvbnRyb2wgb2JqZWN0LCBkZWZpbmluZyB0aGUga2V5IGNvZGVzIGFuZCB0aGUgZnVuY3Rpb25zIHRvIGV4ZWN1dGUuCgkJCQkvLyBUaGUgcGFyYW1ldGVyLCBmID0gJC5qUGxheWVyLmZvY3VzLCB3aWxsIGJlIGNoZWNrZWQgdHJ1ZXRoeSBiZWZvcmUgYXR0ZW1wdGluZyB0byBjYWxsIGFueSBvZiB0aGVzZSBmdW5jdGlvbnMuCgkJCQkvLyBQcm9wZXJ0aWVzIG1heSBiZSBhZGRlZCB0byB0aGlzIG9iamVjdCwgaW4ga2V5L2ZuIHBhaXJzLCB0byBlbmFibGUgb3RoZXIga2V5IGNvbnRyb2xzLiBFRywgZm9yIHRoZSBwbGF5bGlzdCBhZGQtb24uCgkJCQlwbGF5OiB7CgkJCQkJa2V5OiAzMiwgLy8gc3BhY2UKCQkJCQlmbjogZnVuY3Rpb24oZikgewoJCQkJCQlpZihmLnN0YXR1cy5wYXVzZWQpIHsKCQkJCQkJCWYucGxheSgpOwoJCQkJCQl9IGVsc2UgewoJCQkJCQkJZi5wYXVzZSgpOwoJCQkJCQl9CgkJCQkJfQoJCQkJfSwKCQkJCWZ1bGxTY3JlZW46IHsKCQkJCQlrZXk6IDEzLCAvLyBlbnRlcgoJCQkJCWZuOiBmdW5jdGlvbihmKSB7CgkJCQkJCWlmKGYuc3RhdHVzLnZpZGVvIHx8IGYub3B0aW9ucy5hdWRpb0Z1bGxTY3JlZW4pIHsKCQkJCQkJCWYuX3NldE9wdGlvbigiZnVsbFNjcmVlbiIsICFmLm9wdGlvbnMuZnVsbFNjcmVlbik7CgkJCQkJCX0KCQkJCQl9CgkJCQl9LAoJCQkJbXV0ZWQ6IHsKCQkJCQlrZXk6IDgsIC8vIGJhY2tzcGFjZQoJCQkJCWZuOiBmdW5jdGlvbihmKSB7CgkJCQkJCWYuX211dGVkKCFmLm9wdGlvbnMubXV0ZWQpOwoJCQkJCX0KCQkJCX0sCgkJCQl2b2x1bWVVcDogewoJCQkJCWtleTogMzgsIC8vIFVQCgkJCQkJZm46IGZ1bmN0aW9uKGYpIHsKCQkJCQkJZi52b2x1bWUoZi5vcHRpb25zLnZvbHVtZSArIDAuMSk7CgkJCQkJfQoJCQkJfSwKCQkJCXZvbHVtZURvd246IHsKCQkJCQlrZXk6IDQwLCAvLyBET1dOCgkJCQkJZm46IGZ1bmN0aW9uKGYpIHsKCQkJCQkJZi52b2x1bWUoZi5vcHRpb25zLnZvbHVtZSAtIDAuMSk7CgkJCQkJfQoJCQkJfQoJCQl9LAoJCQl2ZXJ0aWNhbFZvbHVtZTogZmFsc2UsIC8vIENhbGN1bGF0ZSB2b2x1bWUgZnJvbSB0aGUgYm90dG9tIG9mIHRoZSB2b2x1bWUgYmFyLiBEZWZhdWx0IGlzIGZyb20gdGhlIGxlZnQuIEFsc28gdm9sdW1lIGFmZmVjdHMgZWl0aGVyIHdpZHRoIG9yIGhlaWdodC4KCQkJLy8gZ2xvYmFsVm9sdW1lOiBmYWxzZSwgLy8gTm90IGltcGxlbWVudGVkOiBTZXQgdG8gbWFrZSB2b2x1bWUgY2hhbmdlcyBhZmZlY3QgYWxsIGpQbGF5ZXIgaW5zdGFuY2VzCgkJCS8vIGdsb2JhbE11dGU6IGZhbHNlLCAvLyBOb3QgaW1wbGVtZW50ZWQ6IFNldCB0byBtYWtlIG11dGUgY2hhbmdlcyBhZmZlY3QgYWxsIGpQbGF5ZXIgaW5zdGFuY2VzCgkJCWlkUHJlZml4OiAianAiLCAvLyBQcmVmaXggZm9yIHRoZSBpZHMgb2YgaHRtbCBlbGVtZW50cyBjcmVhdGVkIGJ5IGpQbGF5ZXIuIEZvciBmbGFzaCwgdGhpcyBtdXN0IG5vdCBpbmNsdWRlIGNoYXJhY3RlcnM6IC4gLSArICogLyBcCgkJCW5vQ29uZmxpY3Q6ICJqUXVlcnkiLAoJCQllbXVsYXRlSHRtbDogZmFsc2UsIC8vIEVtdWxhdGVzIHRoZSBIVE1MNSBNZWRpYSBlbGVtZW50IG9uIHRoZSBqUGxheWVyIGVsZW1lbnQuCgkJCWVycm9yQWxlcnRzOiBmYWxzZSwKCQkJd2FybmluZ0FsZXJ0czogZmFsc2UKCQl9LAoJCW9wdGlvbnNBdWRpbzogewoJCQlzaXplOiB7CgkJCQl3aWR0aDogIjBweCIsCgkJCQloZWlnaHQ6ICIwcHgiLAoJCQkJY3NzQ2xhc3M6ICIiCgkJCX0sCgkJCXNpemVGdWxsOiB7CgkJCQl3aWR0aDogIjBweCIsCgkJCQloZWlnaHQ6ICIwcHgiLAoJCQkJY3NzQ2xhc3M6ICIiCgkJCX0KCQl9LAoJCW9wdGlvbnNWaWRlbzogewoJCQlzaXplOiB7CgkJCQl3aWR0aDogIjQ4MHB4IiwKCQkJCWhlaWdodDogIjI3MHB4IiwKCQkJCWNzc0NsYXNzOiAianAtdmlkZW8tMjcwcCIKCQkJfSwKCQkJc2l6ZUZ1bGw6IHsKCQkJCXdpZHRoOiAiMTAwJSIsCgkJCQloZWlnaHQ6ICIxMDAlIiwKCQkJCWNzc0NsYXNzOiAianAtdmlkZW8tZnVsbCIKCQkJfQoJCX0sCgkJaW5zdGFuY2VzOiB7fSwgLy8gU3RhdGljIE9iamVjdAoJCXN0YXR1czogeyAvLyBJbnN0YW5jZWQgaW4gX2luaXQoKQoJCQlzcmM6ICIiLAoJCQltZWRpYToge30sCgkJCXBhdXNlZDogdHJ1ZSwKCQkJZm9ybWF0OiB7fSwKCQkJZm9ybWF0VHlwZTogIiIsCgkJCXdhaXRGb3JQbGF5OiB0cnVlLCAvLyBTYW1lIGFzIHdhaXRGb3JMb2FkIGV4Y2VwdCBpbiBjYXNlIHdoZXJlIHByZWxvYWRpbmcuCgkJCXdhaXRGb3JMb2FkOiB0cnVlLAoJCQlzcmNTZXQ6IGZhbHNlLAoJCQl2aWRlbzogZmFsc2UsIC8vIFRydWUgaWYgcGxheWluZyBhIHZpZGVvCgkJCXNlZWtQZXJjZW50OiAwLAoJCQljdXJyZW50UGVyY2VudFJlbGF0aXZlOiAwLAoJCQljdXJyZW50UGVyY2VudEFic29sdXRlOiAwLAoJCQljdXJyZW50VGltZTogMCwKCQkJZHVyYXRpb246IDAsCgkJCXZpZGVvV2lkdGg6IDAsIC8vIEludHJpbnNpYyB3aWR0aCBvZiB0aGUgdmlkZW8gaW4gcGl4ZWxzLgoJCQl2aWRlb0hlaWdodDogMCwgLy8gSW50cmluc2ljIGhlaWdodCBvZiB0aGUgdmlkZW8gaW4gcGl4ZWxzLgoJCQlyZWFkeVN0YXRlOiAwLAoJCQluZXR3b3JrU3RhdGU6IDAsCgkJCXBsYXliYWNrUmF0ZTogMSwKCQkJZW5kZWQ6IDAKCi8qCQlQZXJzaXN0YW50IHN0YXR1cyBwcm9wZXJ0aWVzIGNyZWF0ZWQgZHluYW1pY2FsbHkgYXQgX2luaXQoKToKCQkJd2lkdGgKCQkJaGVpZ2h0CgkJCWNzc0NsYXNzCgkJCW5hdGl2ZVZpZGVvQ29udHJvbHMKCQkJbm9GdWxsV2luZG93CgkJCW5vVm9sdW1lCiovCgkJfSwKCgkJaW50ZXJuYWw6IHsgLy8gSW5zdGFuY2VkIGluIF9pbml0KCkKCQkJcmVhZHk6IGZhbHNlCgkJCS8vIGluc3RhbmNlOiB1bmRlZmluZWQKCQkJLy8gZG9tTm9kZTogdW5kZWZpbmVkCgkJCS8vIGh0bWxEbHlDbWRJZDogdW5kZWZpbmVkCgkJCS8vIGF1dG9oaWRlSWQ6IHVuZGVmaW5lZAoJCQkvLyBjbWRzSWdub3JlZAoJCX0sCgkJc29sdXRpb246IHsgLy8gU3RhdGljIE9iamVjdDogRGVmaW5lcyB0aGUgc29sdXRpb25zIGJ1aWx0IGluIGpQbGF5ZXIuCgkJCWh0bWw6IHRydWUsCgkJCWZsYXNoOiB0cnVlCgkJfSwKCQkvLyAnTVBFRy00IHN1cHBvcnQnIDogY2FuUGxheVR5cGUoJ3ZpZGVvL21wNDsgY29kZWNzPSJtcDR2LjIwLjgiJykKCQlmb3JtYXQ6IHsgLy8gU3RhdGljIE9iamVjdAoJCQltcDM6IHsKCQkJCWNvZGVjOiAnYXVkaW8vbXBlZzsgY29kZWNzPSJtcDMiJywKCQkJCWZsYXNoQ2FuUGxheTogdHJ1ZSwKCQkJCW1lZGlhOiAnYXVkaW8nCgkJCX0sCgkJCW00YTogeyAvLyBBQUMgLyBNUDQKCQkJCWNvZGVjOiAnYXVkaW8vbXA0OyBjb2RlY3M9Im1wNGEuNDAuMiInLAoJCQkJZmxhc2hDYW5QbGF5OiB0cnVlLAoJCQkJbWVkaWE6ICdhdWRpbycKCQkJfSwKCQkJb2dhOiB7IC8vIE9HRwoJCQkJY29kZWM6ICdhdWRpby9vZ2c7IGNvZGVjcz0idm9yYmlzIicsCgkJCQlmbGFzaENhblBsYXk6IGZhbHNlLAoJCQkJbWVkaWE6ICdhdWRpbycKCQkJfSwKCQkJd2F2OiB7IC8vIFBDTQoJCQkJY29kZWM6ICdhdWRpby93YXY7IGNvZGVjcz0iMSInLAoJCQkJZmxhc2hDYW5QbGF5OiBmYWxzZSwKCQkJCW1lZGlhOiAnYXVkaW8nCgkJCX0sCgkJCXdlYm1hOiB7IC8vIFdFQk0KCQkJCWNvZGVjOiAnYXVkaW8vd2VibTsgY29kZWNzPSJ2b3JiaXMiJywKCQkJCWZsYXNoQ2FuUGxheTogZmFsc2UsCgkJCQltZWRpYTogJ2F1ZGlvJwoJCQl9LAoJCQlmbGE6IHsgLy8gRkxWIC8gRjRBCgkJCQljb2RlYzogJ2F1ZGlvL3gtZmx2JywKCQkJCWZsYXNoQ2FuUGxheTogdHJ1ZSwKCQkJCW1lZGlhOiAnYXVkaW8nCgkJCX0sCgkJCXJ0bXBhOiB7IC8vIFJUTVAgQVVESU8KCQkJCWNvZGVjOiAnYXVkaW8vcnRtcDsgY29kZWNzPSJydG1wIicsCgkJCQlmbGFzaENhblBsYXk6IHRydWUsCgkJCQltZWRpYTogJ2F1ZGlvJwoJCQl9LAoJCQltNHY6IHsgLy8gSC4yNjQgLyBNUDQKCQkJCWNvZGVjOiAndmlkZW8vbXA0OyBjb2RlY3M9ImF2YzEuNDJFMDFFLCBtcDRhLjQwLjIiJywKCQkJCWZsYXNoQ2FuUGxheTogdHJ1ZSwKCQkJCW1lZGlhOiAndmlkZW8nCgkJCX0sCgkJCW9ndjogeyAvLyBPR0cKCQkJCWNvZGVjOiAndmlkZW8vb2dnOyBjb2RlY3M9InRoZW9yYSwgdm9yYmlzIicsCgkJCQlmbGFzaENhblBsYXk6IGZhbHNlLAoJCQkJbWVkaWE6ICd2aWRlbycKCQkJfSwKCQkJd2VibXY6IHsgLy8gV0VCTQoJCQkJY29kZWM6ICd2aWRlby93ZWJtOyBjb2RlY3M9InZvcmJpcywgdnA4IicsCgkJCQlmbGFzaENhblBsYXk6IGZhbHNlLAoJCQkJbWVkaWE6ICd2aWRlbycKCQkJfSwKCQkJZmx2OiB7IC8vIEZMViAvIEY0VgoJCQkJY29kZWM6ICd2aWRlby94LWZsdicsCgkJCQlmbGFzaENhblBsYXk6IHRydWUsCgkJCQltZWRpYTogJ3ZpZGVvJwoJCQl9LAoJCQlydG1wdjogeyAvLyBSVE1QIFZJREVPCgkJCQljb2RlYzogJ3ZpZGVvL3J0bXA7IGNvZGVjcz0icnRtcCInLAoJCQkJZmxhc2hDYW5QbGF5OiB0cnVlLAoJCQkJbWVkaWE6ICd2aWRlbycKCQkJfQoJCX0sCgkJX2luaXQ6IGZ1bmN0aW9uKCkgewoJCQl2YXIgc2VsZiA9IHRoaXM7CgkJCQoJCQl0aGlzLmVsZW1lbnQuZW1wdHkoKTsKCQkJCgkJCXRoaXMuc3RhdHVzID0gJC5leHRlbmQoe30sIHRoaXMuc3RhdHVzKTsgLy8gQ29weSBzdGF0aWMgdG8gdW5pcXVlIGluc3RhbmNlLgoJCQl0aGlzLmludGVybmFsID0gJC5leHRlbmQoe30sIHRoaXMuaW50ZXJuYWwpOyAvLyBDb3B5IHN0YXRpYyB0byB1bmlxdWUgaW5zdGFuY2UuCgoJCQkvLyBJbml0aWFsaXplIHRoZSB0aW1lIGZvcm1hdAoJCQl0aGlzLm9wdGlvbnMudGltZUZvcm1hdCA9ICQuZXh0ZW5kKHt9LCAkLmpQbGF5ZXIudGltZUZvcm1hdCwgdGhpcy5vcHRpb25zLnRpbWVGb3JtYXQpOwoKCQkJLy8gT24gaU9TLCBhc3N1bWUgY29tbWFuZHMgd2lsbCBiZSBpZ25vcmVkIGJlZm9yZSB1c2VyIGluaXRpYXRlcyB0aGVtLgoJCQl0aGlzLmludGVybmFsLmNtZHNJZ25vcmVkID0gJC5qUGxheWVyLnBsYXRmb3JtLmlwYWQgfHwgJC5qUGxheWVyLnBsYXRmb3JtLmlwaG9uZSB8fCAkLmpQbGF5ZXIucGxhdGZvcm0uaXBvZDsKCgkJCXRoaXMuaW50ZXJuYWwuZG9tTm9kZSA9IHRoaXMuZWxlbWVudC5nZXQoMCk7CgoJCQkvLyBBZGQga2V5IGJpbmRpbmdzIGZvY3VzIHRvIDFzdCBqUGxheWVyIGluc3RhbmNlZCB3aXRoIGtleSBjb250cm9sIGVuYWJsZWQuCgkJCWlmKHRoaXMub3B0aW9ucy5rZXlFbmFibGVkICYmICEkLmpQbGF5ZXIuZm9jdXMpIHsKCQkJCSQualBsYXllci5mb2N1cyA9IHRoaXM7CgkJCX0KCgkJCXRoaXMuZm9ybWF0cyA9IFtdOyAvLyBBcnJheSBiYXNlZCBvbiBzdXBwbGllZCBzdHJpbmcgb3B0aW9uLiBPcmRlciBkZWZpbmVzIHByaW9yaXR5LgoJCQl0aGlzLnNvbHV0aW9ucyA9IFtdOyAvLyBBcnJheSBiYXNlZCBvbiBzb2x1dGlvbiBzdHJpbmcgb3B0aW9uLiBPcmRlciBkZWZpbmVzIHByaW9yaXR5LgoJCQl0aGlzLnJlcXVpcmUgPSB7fTsgLy8gV2hpY2ggbWVkaWEgdHlwZXMgYXJlIHJlcXVpcmVkOiB2aWRlbywgYXVkaW8uCgkJCQoJCQl0aGlzLmh0bWxFbGVtZW50ID0ge307IC8vIERPTSBlbGVtZW50cyBjcmVhdGVkIGJ5IGpQbGF5ZXIKCQkJdGhpcy5odG1sID0ge307IC8vIEluIF9pbml0KCkncyB0aGlzLmRlc2lyZWQgY29kZSBhbmQgc2V0bWVkaWEoKTogQWNjZXNzZWQgdmlhIHRoaXNbc29sdXRpb25dLCB3aGVyZSBzb2x1dGlvbiBmcm9tIHRoaXMuc29sdXRpb25zIGFycmF5LgoJCQl0aGlzLmh0bWwuYXVkaW8gPSB7fTsKCQkJdGhpcy5odG1sLnZpZGVvID0ge307CgkJCXRoaXMuZmxhc2ggPSB7fTsgLy8gSW4gX2luaXQoKSdzIHRoaXMuZGVzaXJlZCBjb2RlIGFuZCBzZXRtZWRpYSgpOiBBY2Nlc3NlZCB2aWEgdGhpc1tzb2x1dGlvbl0sIHdoZXJlIHNvbHV0aW9uIGZyb20gdGhpcy5zb2x1dGlvbnMgYXJyYXkuCgkJCQoJCQl0aGlzLmNzcyA9IHt9OwoJCQl0aGlzLmNzcy5jcyA9IHt9OyAvLyBIb2xkcyB0aGUgY3NzIHNlbGVjdG9yIHN0cmluZ3MKCQkJdGhpcy5jc3MuanEgPSB7fTsgLy8gSG9sZHMgalF1ZXJ5IHNlbGVjdG9ycy4gaWUuLCAkKGNzcy5jcy5tZXRob2QpCgoJCQl0aGlzLmFuY2VzdG9ySnEgPSBbXTsgLy8gSG9sZHMgalF1ZXJ5IHNlbGVjdG9yIG9mIGNzc1NlbGVjdG9yQW5jZXN0b3IuIEluaXQgd291bGQgdXNlICQoKSBpbnN0ZWFkIG9mIFtdLCBidXQgaXQgaXMgb25seSAxLjQrCgoJCQl0aGlzLm9wdGlvbnMudm9sdW1lID0gdGhpcy5fbGltaXRWYWx1ZSh0aGlzLm9wdGlvbnMudm9sdW1lLCAwLCAxKTsgLy8gTGltaXQgdm9sdW1lIHZhbHVlJ3MgYm91bmRzLgoKCQkJLy8gQ3JlYXRlIHRoZSBmb3JtYXRzIGFycmF5LCB3aXRoIHByb3JpdHkgYmFzZWQgb24gdGhlIG9yZGVyIG9mIHRoZSBzdXBwbGllZCBmb3JtYXRzIHN0cmluZwoJCQkkLmVhY2godGhpcy5vcHRpb25zLnN1cHBsaWVkLnRvTG93ZXJDYXNlKCkuc3BsaXQoIiwiKSwgZnVuY3Rpb24oaW5kZXgxLCB2YWx1ZTEpIHsKCQkJCXZhciBmb3JtYXQgPSB2YWx1ZTEucmVwbGFjZSgvXlxzK3xccyskL2csICIiKTsgLy90cmltCgkJCQlpZihzZWxmLmZvcm1hdFtmb3JtYXRdKSB7IC8vIENoZWNrIGZvcm1hdCBpcyB2YWxpZC4KCQkJCQl2YXIgZHVwRm91bmQgPSBmYWxzZTsKCQkJCQkkLmVhY2goc2VsZi5mb3JtYXRzLCBmdW5jdGlvbihpbmRleDIsIHZhbHVlMikgeyAvLyBDaGVjayBmb3IgZHVwbGljYXRlcwoJCQkJCQlpZihmb3JtYXQgPT09IHZhbHVlMikgewoJCQkJCQkJZHVwRm91bmQgPSB0cnVlOwoJCQkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJCQl9CgkJCQkJfSk7CgkJCQkJaWYoIWR1cEZvdW5kKSB7CgkJCQkJCXNlbGYuZm9ybWF0cy5wdXNoKGZvcm1hdCk7CgkJCQkJfQoJCQkJfQoJCQl9KTsKCgkJCS8vIENyZWF0ZSB0aGUgc29sdXRpb25zIGFycmF5LCB3aXRoIHByb3JpdHkgYmFzZWQgb24gdGhlIG9yZGVyIG9mIHRoZSBzb2x1dGlvbiBzdHJpbmcKCQkJJC5lYWNoKHRoaXMub3B0aW9ucy5zb2x1dGlvbi50b0xvd2VyQ2FzZSgpLnNwbGl0KCIsIiksIGZ1bmN0aW9uKGluZGV4MSwgdmFsdWUxKSB7CgkJCQl2YXIgc29sdXRpb24gPSB2YWx1ZTEucmVwbGFjZSgvXlxzK3xccyskL2csICIiKTsgLy90cmltCgkJCQlpZihzZWxmLnNvbHV0aW9uW3NvbHV0aW9uXSkgeyAvLyBDaGVjayBzb2x1dGlvbiBpcyB2YWxpZC4KCQkJCQl2YXIgZHVwRm91bmQgPSBmYWxzZTsKCQkJCQkkLmVhY2goc2VsZi5zb2x1dGlvbnMsIGZ1bmN0aW9uKGluZGV4MiwgdmFsdWUyKSB7IC8vIENoZWNrIGZvciBkdXBsaWNhdGVzCgkJCQkJCWlmKHNvbHV0aW9uID09PSB2YWx1ZTIpIHsKCQkJCQkJCWR1cEZvdW5kID0gdHJ1ZTsKCQkJCQkJCXJldHVybiBmYWxzZTsKCQkJCQkJfQoJCQkJCX0pOwoJCQkJCWlmKCFkdXBGb3VuZCkgewoJCQkJCQlzZWxmLnNvbHV0aW9ucy5wdXNoKHNvbHV0aW9uKTsKCQkJCQl9CgkJCQl9CgkJCX0pOwoKCQkJdGhpcy5pbnRlcm5hbC5pbnN0YW5jZSA9ICJqcF8iICsgdGhpcy5jb3VudDsKCQkJdGhpcy5pbnN0YW5jZXNbdGhpcy5pbnRlcm5hbC5pbnN0YW5jZV0gPSB0aGlzLmVsZW1lbnQ7CgoJCQkvLyBDaGVjayB0aGUgalBsYXllciBkaXYgaGFzIGFuIGlkIGFuZCBjcmVhdGUgb25lIGlmIHJlcXVpcmVkLiBJbXBvcnRhbnQgZm9yIEZsYXNoIHRvIGtub3cgdGhlIHVuaXF1ZSBpZCBmb3IgY29tbXMuCgkJCWlmKCF0aGlzLmVsZW1lbnQuYXR0cigiaWQiKSkgewoJCQkJdGhpcy5lbGVtZW50LmF0dHIoImlkIiwgdGhpcy5vcHRpb25zLmlkUHJlZml4ICsgIl9qcGxheWVyXyIgKyB0aGlzLmNvdW50KTsKCQkJfQoKCQkJdGhpcy5pbnRlcm5hbC5zZWxmID0gJC5leHRlbmQoe30sIHsKCQkJCWlkOiB0aGlzLmVsZW1lbnQuYXR0cigiaWQiKSwKCQkJCWpxOiB0aGlzLmVsZW1lbnQKCQkJfSk7CgkJCXRoaXMuaW50ZXJuYWwuYXVkaW8gPSAkLmV4dGVuZCh7fSwgewoJCQkJaWQ6IHRoaXMub3B0aW9ucy5pZFByZWZpeCArICJfYXVkaW9fIiArIHRoaXMuY291bnQsCgkJCQlqcTogdW5kZWZpbmVkCgkJCX0pOwoJCQl0aGlzLmludGVybmFsLnZpZGVvID0gJC5leHRlbmQoe30sIHsKCQkJCWlkOiB0aGlzLm9wdGlvbnMuaWRQcmVmaXggKyAiX3ZpZGVvXyIgKyB0aGlzLmNvdW50LAoJCQkJanE6IHVuZGVmaW5lZAoJCQl9KTsKCQkJdGhpcy5pbnRlcm5hbC5mbGFzaCA9ICQuZXh0ZW5kKHt9LCB7CgkJCQlpZDogdGhpcy5vcHRpb25zLmlkUHJlZml4ICsgIl9mbGFzaF8iICsgdGhpcy5jb3VudCwKCQkJCWpxOiB1bmRlZmluZWQsCgkJCQlzd2Y6IHRoaXMub3B0aW9ucy5zd2ZQYXRoICsgKHRoaXMub3B0aW9ucy5zd2ZQYXRoLnRvTG93ZXJDYXNlKCkuc2xpY2UoLTQpICE9PSAiLnN3ZiIgPyAodGhpcy5vcHRpb25zLnN3ZlBhdGggJiYgdGhpcy5vcHRpb25zLnN3ZlBhdGguc2xpY2UoLTEpICE9PSAiLyIgPyAiLyIgOiAiIikgKyAiSnBsYXllci5zd2YiIDogIiIpCgkJCX0pOwoJCQl0aGlzLmludGVybmFsLnBvc3RlciA9ICQuZXh0ZW5kKHt9LCB7CgkJCQlpZDogdGhpcy5vcHRpb25zLmlkUHJlZml4ICsgIl9wb3N0ZXJfIiArIHRoaXMuY291bnQsCgkJCQlqcTogdW5kZWZpbmVkCgkJCX0pOwoKCQkJLy8gUmVnaXN0ZXIgbGlzdGVuZXJzIGRlZmluZWQgaW4gdGhlIGNvbnN0cnVjdG9yCgkJCSQuZWFjaCgkLmpQbGF5ZXIuZXZlbnQsIGZ1bmN0aW9uKGV2ZW50TmFtZSxldmVudFR5cGUpIHsKCQkJCWlmKHNlbGYub3B0aW9uc1tldmVudE5hbWVdICE9PSB1bmRlZmluZWQpIHsKCQkJCQlzZWxmLmVsZW1lbnQuYmluZChldmVudFR5cGUgKyAiLmpQbGF5ZXIiLCBzZWxmLm9wdGlvbnNbZXZlbnROYW1lXSk7IC8vIFdpdGggLmpQbGF5ZXIgbmFtZXNwYWNlLgoJCQkJCXNlbGYub3B0aW9uc1tldmVudE5hbWVdID0gdW5kZWZpbmVkOyAvLyBEZXN0cm95IHRoZSBoYW5kbGVyIHBvaW50ZXIgY29weSBvbiB0aGUgb3B0aW9ucy4gUmVhc29uLCBldmVudHMgY2FuIGJlIGFkZGVkL3JlbW92ZWQgaW4gb3RoZXIgd2F5cyBzbyB0aGlzIGNvdWxkIGJlIG9ic29sZXRlIGFuZCBtaXNsZWFkaW5nLgoJCQkJfQoJCQl9KTsKCgkJCS8vIERldGVybWluZSBpZiB3ZSByZXF1aXJlIHNvbHV0aW9ucyBmb3IgYXVkaW8sIHZpZGVvIG9yIGJvdGggbWVkaWEgdHlwZXMuCgkJCXRoaXMucmVxdWlyZS5hdWRpbyA9IGZhbHNlOwoJCQl0aGlzLnJlcXVpcmUudmlkZW8gPSBmYWxzZTsKCQkJJC5lYWNoKHRoaXMuZm9ybWF0cywgZnVuY3Rpb24ocHJpb3JpdHksIGZvcm1hdCkgewoJCQkJc2VsZi5yZXF1aXJlW3NlbGYuZm9ybWF0W2Zvcm1hdF0ubWVkaWFdID0gdHJ1ZTsKCQkJfSk7CgoJCQkvLyBOb3cgcmVxdWlyZWQgdHlwZXMgYXJlIGtub3duLCBmaW5pc2ggdGhlIG9wdGlvbnMgZGVmYXVsdCBzZXR0aW5ncy4KCQkJaWYodGhpcy5yZXF1aXJlLnZpZGVvKSB7CgkJCQl0aGlzLm9wdGlvbnMgPSAkLmV4dGVuZCh0cnVlLCB7fSwKCQkJCQl0aGlzLm9wdGlvbnNWaWRlbywKCQkJCQl0aGlzLm9wdGlvbnMKCQkJCSk7CgkJCX0gZWxzZSB7CgkJCQl0aGlzLm9wdGlvbnMgPSAkLmV4dGVuZCh0cnVlLCB7fSwKCQkJCQl0aGlzLm9wdGlvbnNBdWRpbywKCQkJCQl0aGlzLm9wdGlvbnMKCQkJCSk7CgkJCX0KCQkJdGhpcy5fc2V0U2l6ZSgpOyAvLyB1cGRhdGUgc3RhdHVzIGFuZCBqUGxheWVyIGVsZW1lbnQgc2l6ZQoKCQkJLy8gRGV0ZXJtaW5lIHRoZSBzdGF0dXMgZm9yIEJsb2NrbGlzdGVkIG9wdGlvbnMuCgkJCXRoaXMuc3RhdHVzLm5hdGl2ZVZpZGVvQ29udHJvbHMgPSB0aGlzLl91YUJsb2NrbGlzdCh0aGlzLm9wdGlvbnMubmF0aXZlVmlkZW9Db250cm9scyk7CgkJCXRoaXMuc3RhdHVzLm5vRnVsbFdpbmRvdyA9IHRoaXMuX3VhQmxvY2tsaXN0KHRoaXMub3B0aW9ucy5ub0Z1bGxXaW5kb3cpOwoJCQl0aGlzLnN0YXR1cy5ub1ZvbHVtZSA9IHRoaXMuX3VhQmxvY2tsaXN0KHRoaXMub3B0aW9ucy5ub1ZvbHVtZSk7CgoJCQkvLyBDcmVhdGUgZXZlbnQgaGFuZGxlcnMgaWYgbmF0aXZlIGZ1bGxzY3JlZW4gaXMgc3VwcG9ydGVkCgkJCWlmKCQualBsYXllci5uYXRpdmVGZWF0dXJlcy5mdWxsc2NyZWVuLmFwaS5mdWxsc2NyZWVuRW5hYmxlZCkgewoJCQkJdGhpcy5fZnVsbHNjcmVlbkFkZEV2ZW50TGlzdGVuZXJzKCk7CgkJCX0KCgkJCS8vIFRoZSBuYXRpdmUgY29udHJvbHMgYXJlIG9ubHkgZm9yIHZpZGVvIGFuZCBhcmUgZGlzYWJsZWQgd2hlbiBhdWRpbyBpcyBhbHNvIHVzZWQuCgkJCXRoaXMuX3Jlc3RyaWN0TmF0aXZlVmlkZW9Db250cm9scygpOwoKCQkJLy8gQ3JlYXRlIHRoZSBwb3N0ZXIgaW1hZ2UuCgkJCXRoaXMuaHRtbEVsZW1lbnQucG9zdGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJyk7CgkJCXRoaXMuaHRtbEVsZW1lbnQucG9zdGVyLmlkID0gdGhpcy5pbnRlcm5hbC5wb3N0ZXIuaWQ7CgkJCXRoaXMuaHRtbEVsZW1lbnQucG9zdGVyLm9ubG9hZCA9IGZ1bmN0aW9uKCkgeyAvLyBOb3RlIHRoYXQgdGhpcyBkaWQgbm90IHdvcmsgb24gRmlyZWZveCAzLjY6IHBvc3Rlci5hZGRFdmVudExpc3RlbmVyKCJvbmxvYWQiLCBmdW5jdGlvbigpIHt9LCBmYWxzZSk7IERpZCBub3QgaW52ZXN0aWdhdGUgeC1icm93c2VyLgoJCQkJaWYoIXNlbGYuc3RhdHVzLnZpZGVvIHx8IHNlbGYuc3RhdHVzLndhaXRGb3JQbGF5KSB7CgkJCQkJc2VsZi5pbnRlcm5hbC5wb3N0ZXIuanEuc2hvdygpOwoJCQkJfQoJCQl9OwoJCQl0aGlzLmVsZW1lbnQuYXBwZW5kKHRoaXMuaHRtbEVsZW1lbnQucG9zdGVyKTsKCQkJdGhpcy5pbnRlcm5hbC5wb3N0ZXIuanEgPSAkKCIjIiArIHRoaXMuaW50ZXJuYWwucG9zdGVyLmlkKTsKCQkJdGhpcy5pbnRlcm5hbC5wb3N0ZXIuanEuY3NzKHsnd2lkdGgnOiB0aGlzLnN0YXR1cy53aWR0aCwgJ2hlaWdodCc6IHRoaXMuc3RhdHVzLmhlaWdodH0pOwoJCQl0aGlzLmludGVybmFsLnBvc3Rlci5qcS5oaWRlKCk7CgkJCXRoaXMuaW50ZXJuYWwucG9zdGVyLmpxLmJpbmQoImNsaWNrLmpQbGF5ZXIiLCBmdW5jdGlvbigpIHsKCQkJCXNlbGYuX3RyaWdnZXIoJC5qUGxheWVyLmV2ZW50LmNsaWNrKTsKCQkJfSk7CgkJCQoJCQkvLyBHZW5lcmF0ZSB0aGUgcmVxdWlyZWQgbWVkaWEgZWxlbWVudHMKCQkJdGhpcy5odG1sLmF1ZGlvLmF2YWlsYWJsZSA9IGZhbHNlOwoJCQlpZih0aGlzLnJlcXVpcmUuYXVkaW8pIHsgLy8gSWYgYSBzdXBwbGllZCBmb3JtYXQgaXMgYXVkaW8KCQkJCXRoaXMuaHRtbEVsZW1lbnQuYXVkaW8gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhdWRpbycpOwoJCQkJdGhpcy5odG1sRWxlbWVudC5hdWRpby5pZCA9IHRoaXMuaW50ZXJuYWwuYXVkaW8uaWQ7CgkJCQl0aGlzLmh0bWwuYXVkaW8uYXZhaWxhYmxlID0gISF0aGlzLmh0bWxFbGVtZW50LmF1ZGlvLmNhblBsYXlUeXBlICYmIHRoaXMuX3Rlc3RDYW5QbGF5VHlwZSh0aGlzLmh0bWxFbGVtZW50LmF1ZGlvKTsgLy8gVGVzdCBpcyBmb3IgSUU5IG9uIFdpbiBTZXJ2ZXIgMjAwOC4KCQkJfQoJCQl0aGlzLmh0bWwudmlkZW8uYXZhaWxhYmxlID0gZmFsc2U7CgkJCWlmKHRoaXMucmVxdWlyZS52aWRlbykgeyAvLyBJZiBhIHN1cHBsaWVkIGZvcm1hdCBpcyB2aWRlbwoJCQkJdGhpcy5odG1sRWxlbWVudC52aWRlbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3ZpZGVvJyk7CgkJCQl0aGlzLmh0bWxFbGVtZW50LnZpZGVvLmlkID0gdGhpcy5pbnRlcm5hbC52aWRlby5pZDsKCQkJCXRoaXMuaHRtbC52aWRlby5hdmFpbGFibGUgPSAhIXRoaXMuaHRtbEVsZW1lbnQudmlkZW8uY2FuUGxheVR5cGUgJiYgdGhpcy5fdGVzdENhblBsYXlUeXBlKHRoaXMuaHRtbEVsZW1lbnQudmlkZW8pOyAvLyBUZXN0IGlzIGZvciBJRTkgb24gV2luIFNlcnZlciAyMDA4LgoJCQl9CgoJCQl0aGlzLmZsYXNoLmF2YWlsYWJsZSA9IHRoaXMuX2NoZWNrRm9yRmxhc2goMTAuMSk7CgoJCQl0aGlzLmh0bWwuY2FuUGxheSA9IHt9OwoJCQl0aGlzLmZsYXNoLmNhblBsYXkgPSB7fTsKCQkJJC5lYWNoKHRoaXMuZm9ybWF0cywgZnVuY3Rpb24ocHJpb3JpdHksIGZvcm1hdCkgewoJCQkJc2VsZi5odG1sLmNhblBsYXlbZm9ybWF0XSA9IHNlbGYuaHRtbFtzZWxmLmZvcm1hdFtmb3JtYXRdLm1lZGlhXS5hdmFpbGFibGUgJiYgIiIgIT09IHNlbGYuaHRtbEVsZW1lbnRbc2VsZi5mb3JtYXRbZm9ybWF0XS5tZWRpYV0uY2FuUGxheVR5cGUoc2VsZi5mb3JtYXRbZm9ybWF0XS5jb2RlYyk7CgkJCQlzZWxmLmZsYXNoLmNhblBsYXlbZm9ybWF0XSA9IHNlbGYuZm9ybWF0W2Zvcm1hdF0uZmxhc2hDYW5QbGF5ICYmIHNlbGYuZmxhc2guYXZhaWxhYmxlOwoJCQl9KTsKCQkJdGhpcy5odG1sLmRlc2lyZWQgPSBmYWxzZTsKCQkJdGhpcy5mbGFzaC5kZXNpcmVkID0gZmFsc2U7CgkJCSQuZWFjaCh0aGlzLnNvbHV0aW9ucywgZnVuY3Rpb24oc29sdXRpb25Qcmlvcml0eSwgc29sdXRpb24pIHsKCQkJCWlmKHNvbHV0aW9uUHJpb3JpdHkgPT09IDApIHsKCQkJCQlzZWxmW3NvbHV0aW9uXS5kZXNpcmVkID0gdHJ1ZTsKCQkJCX0gZWxzZSB7CgkJCQkJdmFyIGF1ZGlvQ2FuUGxheSA9IGZhbHNlOwoJCQkJCXZhciB2aWRlb0NhblBsYXkgPSBmYWxzZTsKCQkJCQkkLmVhY2goc2VsZi5mb3JtYXRzLCBmdW5jdGlvbihmb3JtYXRQcmlvcml0eSwgZm9ybWF0KSB7CgkJCQkJCWlmKHNlbGZbc2VsZi5zb2x1dGlvbnNbMF1dLmNhblBsYXlbZm9ybWF0XSkgeyAvLyBUaGUgb3RoZXIgc29sdXRpb24gY2FuIHBsYXkKCQkJCQkJCWlmKHNlbGYuZm9ybWF0W2Zvcm1hdF0ubWVkaWEgPT09ICd2aWRlbycpIHsKCQkJCQkJCQl2aWRlb0NhblBsYXkgPSB0cnVlOwoJCQkJCQkJfSBlbHNlIHsKCQkJCQkJCQlhdWRpb0NhblBsYXkgPSB0cnVlOwoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJfSk7CgkJCQkJc2VsZltzb2x1dGlvbl0uZGVzaXJlZCA9IChzZWxmLnJlcXVpcmUuYXVkaW8gJiYgIWF1ZGlvQ2FuUGxheSkgfHwgKHNlbGYucmVxdWlyZS52aWRlbyAmJiAhdmlkZW9DYW5QbGF5KTsKCQkJCX0KCQkJfSk7CgkJCS8vIFRoaXMgaXMgd2hhdCBqUGxheWVyIHdpbGwgc3VwcG9ydCwgYmFzZWQgb24gc29sdXRpb24gYW5kIHN1cHBsaWVkLgoJCQl0aGlzLmh0bWwuc3VwcG9ydCA9IHt9OwoJCQl0aGlzLmZsYXNoLnN1cHBvcnQgPSB7fTsKCQkJJC5lYWNoKHRoaXMuZm9ybWF0cywgZnVuY3Rpb24ocHJpb3JpdHksIGZvcm1hdCkgewoJCQkJc2VsZi5odG1sLnN1cHBvcnRbZm9ybWF0XSA9IHNlbGYuaHRtbC5jYW5QbGF5W2Zvcm1hdF0gJiYgc2VsZi5odG1sLmRlc2lyZWQ7CgkJCQlzZWxmLmZsYXNoLnN1cHBvcnRbZm9ybWF0XSA9IHNlbGYuZmxhc2guY2FuUGxheVtmb3JtYXRdICYmIHNlbGYuZmxhc2guZGVzaXJlZDsKCQkJfSk7CgkJCS8vIElmIGpQbGF5ZXIgaXMgc3VwcG9ydGluZyBhbnkgZm9ybWF0IGluIGEgc29sdXRpb24sIHRoZW4gdGhlIHNvbHV0aW9uIGlzIHVzZWQuCgkJCXRoaXMuaHRtbC51c2VkID0gZmFsc2U7CgkJCXRoaXMuZmxhc2gudXNlZCA9IGZhbHNlOwoJCQkkLmVhY2godGhpcy5zb2x1dGlvbnMsIGZ1bmN0aW9uKHNvbHV0aW9uUHJpb3JpdHksIHNvbHV0aW9uKSB7CgkJCQkkLmVhY2goc2VsZi5mb3JtYXRzLCBmdW5jdGlvbihmb3JtYXRQcmlvcml0eSwgZm9ybWF0KSB7CgkJCQkJaWYoc2VsZltzb2x1dGlvbl0uc3VwcG9ydFtmb3JtYXRdKSB7CgkJCQkJCXNlbGZbc29sdXRpb25dLnVzZWQgPSB0cnVlOwoJCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQkJfQoJCQkJfSk7CgkJCX0pOwoKCQkJLy8gSW5pdCBzb2x1dGlvbiBhY3RpdmUgc3RhdGUgYW5kIHRoZSBldmVudCBnYXRlcyB0byBmYWxzZS4KCQkJdGhpcy5fcmVzZXRBY3RpdmUoKTsKCQkJdGhpcy5fcmVzZXRHYXRlKCk7CgoJCQkvLyBTZXQgdXAgdGhlIGNzcyBzZWxlY3RvcnMgZm9yIHRoZSBjb250cm9sIGFuZCBmZWVkYmFjayBlbnRpdGllcy4KCQkJdGhpcy5fY3NzU2VsZWN0b3JBbmNlc3Rvcih0aGlzLm9wdGlvbnMuY3NzU2VsZWN0b3JBbmNlc3Rvcik7CgkJCQoJCQkvLyBJZiBuZWl0aGVyIGh0bWwgbm9yIGZsYXNoIGFyZSBiZWluZyB1c2VkIGJ5IHRoaXMgYnJvd3NlciwgdGhlbiBtZWRpYSBwbGF5YmFjayBpcyBub3QgcG9zc2libGUuIFRyaWdnZXIgYW4gZXJyb3IgZXZlbnQuCgkJCWlmKCEodGhpcy5odG1sLnVzZWQgfHwgdGhpcy5mbGFzaC51c2VkKSkgewoJCQkJdGhpcy5fZXJyb3IoIHsKCQkJCQl0eXBlOiAkLmpQbGF5ZXIuZXJyb3IuTk9fU09MVVRJT04sIAoJCQkJCWNvbnRleHQ6ICJ7c29sdXRpb246JyIgKyB0aGlzLm9wdGlvbnMuc29sdXRpb24gKyAiJywgc3VwcGxpZWQ6JyIgKyB0aGlzLm9wdGlvbnMuc3VwcGxpZWQgKyAiJ30iLAoJCQkJCW1lc3NhZ2U6ICQualBsYXllci5lcnJvck1zZy5OT19TT0xVVElPTiwKCQkJCQloaW50OiAkLmpQbGF5ZXIuZXJyb3JIaW50Lk5PX1NPTFVUSU9OCgkJCQl9KTsKCQkJCWlmKHRoaXMuY3NzLmpxLm5vU29sdXRpb24ubGVuZ3RoKSB7CgkJCQkJdGhpcy5jc3MuanEubm9Tb2x1dGlvbi5zaG93KCk7CgkJCQl9CgkJCX0gZWxzZSB7CgkJCQlpZih0aGlzLmNzcy5qcS5ub1NvbHV0aW9uLmxlbmd0aCkgewoJCQkJCXRoaXMuY3NzLmpxLm5vU29sdXRpb24uaGlkZSgpOwoJCQkJfQoJCQl9CgoJCQkvLyBBZGQgdGhlIGZsYXNoIHNvbHV0aW9uIGlmIGl0IGlzIGJlaW5nIHVzZWQuCgkJCWlmKHRoaXMuZmxhc2gudXNlZCkgewoJCQkJdmFyIGh0bWxPYmosCgkJCQlmbGFzaFZhcnMgPSAnalF1ZXJ5PScgKyBlbmNvZGVVUkkodGhpcy5vcHRpb25zLm5vQ29uZmxpY3QpICsgJyZpZD0nICsgZW5jb2RlVVJJKHRoaXMuaW50ZXJuYWwuc2VsZi5pZCkgKyAnJnZvbD0nICsgdGhpcy5vcHRpb25zLnZvbHVtZSArICcmbXV0ZWQ9JyArIHRoaXMub3B0aW9ucy5tdXRlZDsKCgkJCQkvLyBDb2RlIGluZmx1ZW5jZWQgYnkgU1dGT2JqZWN0IDIuMjogaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL3N3Zm9iamVjdC8KCQkJCS8vIE5vbiBJRSBicm93c2VycyBoYXZlIGFuIGluaXRpYWwgRmxhc2ggc2l6ZSBvZiAxIGJ5IDEgb3RoZXJ3aXNlIHRoZSB3bW9kZSBhZmZlY3RlZCB0aGUgRmxhc2ggcmVhZHkgZXZlbnQuIAoKCQkJCWlmKCQualBsYXllci5icm93c2VyLm1zaWUgJiYgKE51bWJlcigkLmpQbGF5ZXIuYnJvd3Nlci52ZXJzaW9uKSA8IDkgfHwgJC5qUGxheWVyLmJyb3dzZXIuZG9jdW1lbnRNb2RlIDwgOSkpIHsKCQkJCQl2YXIgb2JqU3RyID0gJzxvYmplY3QgaWQ9IicgKyB0aGlzLmludGVybmFsLmZsYXNoLmlkICsgJyIgY2xhc3NpZD0iY2xzaWQ6ZDI3Y2RiNmUtYWU2ZC0xMWNmLTk2YjgtNDQ0NTUzNTQwMDAwIiB3aWR0aD0iMCIgaGVpZ2h0PSIwIiB0YWJpbmRleD0iLTEiPjwvb2JqZWN0Pic7CgoJCQkJCXZhciBwYXJhbVN0ciA9IFsKCQkJCQkJJzxwYXJhbSBuYW1lPSJtb3ZpZSIgdmFsdWU9IicgKyB0aGlzLmludGVybmFsLmZsYXNoLnN3ZiArICciIC8+JywKCQkJCQkJJzxwYXJhbSBuYW1lPSJGbGFzaFZhcnMiIHZhbHVlPSInICsgZmxhc2hWYXJzICsgJyIgLz4nLAoJCQkJCQknPHBhcmFtIG5hbWU9ImFsbG93U2NyaXB0QWNjZXNzIiB2YWx1ZT0iYWx3YXlzIiAvPicsCgkJCQkJCSc8cGFyYW0gbmFtZT0iYmdjb2xvciIgdmFsdWU9IicgKyB0aGlzLm9wdGlvbnMuYmFja2dyb3VuZENvbG9yICsgJyIgLz4nLAoJCQkJCQknPHBhcmFtIG5hbWU9Indtb2RlIiB2YWx1ZT0iJyArIHRoaXMub3B0aW9ucy53bW9kZSArICciIC8+JwoJCQkJCV07CgoJCQkJCWh0bWxPYmogPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KG9ialN0cik7CgkJCQkJZm9yKHZhciBpPTA7IGkgPCBwYXJhbVN0ci5sZW5ndGg7IGkrKykgewoJCQkJCQlodG1sT2JqLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQocGFyYW1TdHJbaV0pKTsKCQkJCQl9CgkJCQl9IGVsc2UgewoJCQkJCXZhciBjcmVhdGVQYXJhbSA9IGZ1bmN0aW9uKGVsLCBuLCB2KSB7CgkJCQkJCXZhciBwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicGFyYW0iKTsKCQkJCQkJcC5zZXRBdHRyaWJ1dGUoIm5hbWUiLCBuKTsJCgkJCQkJCXAuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsIHYpOwoJCQkJCQllbC5hcHBlbmRDaGlsZChwKTsKCQkJCQl9OwoKCQkJCQlodG1sT2JqID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib2JqZWN0Iik7CgkJCQkJaHRtbE9iai5zZXRBdHRyaWJ1dGUoImlkIiwgdGhpcy5pbnRlcm5hbC5mbGFzaC5pZCk7CgkJCQkJaHRtbE9iai5zZXRBdHRyaWJ1dGUoIm5hbWUiLCB0aGlzLmludGVybmFsLmZsYXNoLmlkKTsKCQkJCQlodG1sT2JqLnNldEF0dHJpYnV0ZSgiZGF0YSIsIHRoaXMuaW50ZXJuYWwuZmxhc2guc3dmKTsKCQkJCQlodG1sT2JqLnNldEF0dHJpYnV0ZSgidHlwZSIsICJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIpOwoJCQkJCWh0bWxPYmouc2V0QXR0cmlidXRlKCJ3aWR0aCIsICIxIik7IC8vIE5vbi16ZXJvCgkJCQkJaHRtbE9iai5zZXRBdHRyaWJ1dGUoImhlaWdodCIsICIxIik7IC8vIE5vbi16ZXJvCgkJCQkJaHRtbE9iai5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwgIi0xIik7CgkJCQkJY3JlYXRlUGFyYW0oaHRtbE9iaiwgImZsYXNodmFycyIsIGZsYXNoVmFycyk7CgkJCQkJY3JlYXRlUGFyYW0oaHRtbE9iaiwgImFsbG93c2NyaXB0YWNjZXNzIiwgImFsd2F5cyIpOwoJCQkJCWNyZWF0ZVBhcmFtKGh0bWxPYmosICJiZ2NvbG9yIiwgdGhpcy5vcHRpb25zLmJhY2tncm91bmRDb2xvcik7CgkJCQkJY3JlYXRlUGFyYW0oaHRtbE9iaiwgIndtb2RlIiwgdGhpcy5vcHRpb25zLndtb2RlKTsKCQkJCX0KCgkJCQl0aGlzLmVsZW1lbnQuYXBwZW5kKGh0bWxPYmopOwoJCQkJdGhpcy5pbnRlcm5hbC5mbGFzaC5qcSA9ICQoaHRtbE9iaik7CgkJCX0KCQkJCgkJCS8vIEFkZCB0aGUgSFRNTCBzb2x1dGlvbiBpZiBiZWluZyB1c2VkLgoJCQlpZih0aGlzLmh0bWwudXNlZCkgewoKCQkJCS8vIFRoZSBIVE1MIEF1ZGlvIGhhbmRsZXJzCgkJCQlpZih0aGlzLmh0bWwuYXVkaW8uYXZhaWxhYmxlKSB7CgkJCQkJdGhpcy5fYWRkSHRtbEV2ZW50TGlzdGVuZXJzKHRoaXMuaHRtbEVsZW1lbnQuYXVkaW8sIHRoaXMuaHRtbC5hdWRpbyk7CgkJCQkJdGhpcy5lbGVtZW50LmFwcGVuZCh0aGlzLmh0bWxFbGVtZW50LmF1ZGlvKTsKCQkJCQl0aGlzLmludGVybmFsLmF1ZGlvLmpxID0gJCgiIyIgKyB0aGlzLmludGVybmFsLmF1ZGlvLmlkKTsKCQkJCX0KCgkJCQkvLyBUaGUgSFRNTCBWaWRlbyBoYW5kbGVycwoJCQkJaWYodGhpcy5odG1sLnZpZGVvLmF2YWlsYWJsZSkgewoJCQkJCXRoaXMuX2FkZEh0bWxFdmVudExpc3RlbmVycyh0aGlzLmh0bWxFbGVtZW50LnZpZGVvLCB0aGlzLmh0bWwudmlkZW8pOwoJCQkJCXRoaXMuZWxlbWVudC5hcHBlbmQodGhpcy5odG1sRWxlbWVudC52aWRlbyk7CgkJCQkJdGhpcy5pbnRlcm5hbC52aWRlby5qcSA9ICQoIiMiICsgdGhpcy5pbnRlcm5hbC52aWRlby5pZCk7CgkJCQkJaWYodGhpcy5zdGF0dXMubmF0aXZlVmlkZW9Db250cm9scykgewoJCQkJCQl0aGlzLmludGVybmFsLnZpZGVvLmpxLmNzcyh7J3dpZHRoJzogdGhpcy5zdGF0dXMud2lkdGgsICdoZWlnaHQnOiB0aGlzLnN0YXR1cy5oZWlnaHR9KTsKCQkJCQl9IGVsc2UgewoJCQkJCQl0aGlzLmludGVybmFsLnZpZGVvLmpxLmNzcyh7J3dpZHRoJzonMHB4JywgJ2hlaWdodCc6JzBweCd9KTsgLy8gVXNpbmcgc2l6ZSAweDAgc2luY2UgYSAuaGlkZSgpIGNhdXNlcyBpc3N1ZXMgaW4gaU9TCgkJCQkJfQoJCQkJCXRoaXMuaW50ZXJuYWwudmlkZW8uanEuYmluZCgiY2xpY2sualBsYXllciIsIGZ1bmN0aW9uKCkgewoJCQkJCQlzZWxmLl90cmlnZ2VyKCQualBsYXllci5ldmVudC5jbGljayk7CgkJCQkJfSk7CgkJCQl9CgkJCX0KCgkJCS8vIENyZWF0ZSB0aGUgYnJpZGdlIHRoYXQgZW11bGF0ZXMgdGhlIEhUTUwgTWVkaWEgZWxlbWVudCBvbiB0aGUgalBsYXllciBESVYKCQkJaWYoIHRoaXMub3B0aW9ucy5lbXVsYXRlSHRtbCApIHsKCQkJCXRoaXMuX2VtdWxhdGVIdG1sQnJpZGdlKCk7CgkJCX0KCgkJCWlmKHRoaXMuaHRtbC51c2VkICYmICF0aGlzLmZsYXNoLnVzZWQpIHsgLy8gSWYgb25seSBIVE1MLCB0aGVuIGVtdWxhdGUgZmxhc2ggcmVhZHkoKSBjYWxsIGFmdGVyIDEwMG1zLgoJCQkJc2V0VGltZW91dCggZnVuY3Rpb24oKSB7CgkJCQkJc2VsZi5pbnRlcm5hbC5yZWFkeSA9IHRydWU7CgkJCQkJc2VsZi52ZXJzaW9uLmZsYXNoID0gIm4vYSI7CgkJCQkJc2VsZi5fdHJpZ2dlcigkLmpQbGF5ZXIuZXZlbnQucmVwZWF0KTsgLy8gVHJpZ2dlciB0aGUgcmVwZWF0IGV2ZW50IHNvIGl0cyBoYW5kbGVyIGNhbiBpbml0aWFsaXplIGl0c2VsZiB3aXRoIHRoZSBsb29wIG9wdGlvbi4KCQkJCQlzZWxmLl90cmlnZ2VyKCQualBsYXllci5ldmVudC5yZWFkeSk7CgkJCQl9LCAxMDApOwoJCQl9CgoJCQkvLyBJbml0aWFsaXplIHRoZSBpbnRlcmZhY2UgY29tcG9uZW50cyB3aXRoIHRoZSBvcHRpb25zLgoJCQl0aGlzLl91cGRhdGVOYXRpdmVWaWRlb0NvbnRyb2xzKCk7CgkJCS8vIFRoZSBvdGhlciBjb250cm9scyBhcmUgbm93IHNldHVwIGluIF9jc3NTZWxlY3RvckFuY2VzdG9yKCkKCQkJaWYodGhpcy5jc3MuanEudmlkZW9QbGF5Lmxlbmd0aCkgewoJCQkJdGhpcy5jc3MuanEudmlkZW9QbGF5LmhpZGUoKTsKCQkJfQoKCQkJJC5qUGxheWVyLnByb3RvdHlwZS5jb3VudCsrOyAvLyBDaGFuZ2Ugc3RhdGljIHZhcmlhYmxlIHZpYSBwcm90b3R5cGUuCgkJfSwKCQlkZXN0cm95OiBmdW5jdGlvbigpIHsKCQkJLy8gTUpQOiBUaGUgYmFja2dyb3VuZCBjaGFuZ2UgcmVtYWlucy4gV291bGQgbmVlZCB0byBzdG9yZSB0aGUgb3JpZ2luYWwgdG8gcmVzdG9yZSBpdCBjb3JyZWN0bHkuCgkJCS8vIE1KUDogVGhlIGpQbGF5ZXIgZWxlbWVudCdzIHNpemUgY2hhbmdlIHJlbWFpbnMuCgoJCQkvLyBDbGVhciB0aGUgbWVkaWEgdG8gcmVzZXQgdGhlIEdVSSBhbmQgc3RvcCBhbnkgZG93bmxvYWRzLiBTdHJlYW1zIG9uIHNvbWUgYnJvd3NlcnMgaGFkIHBlcnNpdGVkLiAoQ2hyb21lKQoJCQl0aGlzLmNsZWFyTWVkaWEoKTsKCQkJLy8gUmVtb3ZlIHRoZSBzaXplL3NpemVGdWxsIGNzc0NsYXNzIGZyb20gdGhlIGNzc1NlbGVjdG9yQW5jZXN0b3IKCQkJdGhpcy5fcmVtb3ZlVWlDbGFzcygpOwoJCQkvLyBSZW1vdmUgdGhlIHRpbWVzIGZyb20gdGhlIEdVSQoJCQlpZih0aGlzLmNzcy5qcS5jdXJyZW50VGltZS5sZW5ndGgpIHsKCQkJCXRoaXMuY3NzLmpxLmN1cnJlbnRUaW1lLnRleHQoIiIpOwoJCQl9CgkJCWlmKHRoaXMuY3NzLmpxLmR1cmF0aW9uLmxlbmd0aCkgewoJCQkJdGhpcy5jc3MuanEuZHVyYXRpb24udGV4dCgiIik7CgkJCX0KCQkJLy8gUmVtb3ZlIGFueSBiaW5kaW5ncyBmcm9tIHRoZSBpbnRlcmZhY2UgY29udHJvbHMuCgkJCSQuZWFjaCh0aGlzLmNzcy5qcSwgZnVuY3Rpb24oZm4sIGpxKSB7CgkJCQkvLyBDaGVjayBzZWxlY3RvciBpcyB2YWxpZCBiZWZvcmUgdHJ5aW5nIHRvIGV4ZWN1dGUgbWV0aG9kLgoJCQkJaWYoanEubGVuZ3RoKSB7CgkJCQkJanEudW5iaW5kKCIualBsYXllciIpOwoJCQkJfQoJCQl9KTsKCQkJLy8gUmVtb3ZlIHRoZSBjbGljayBoYW5kbGVycyBmb3IgJC5qUGxheWVyLmV2ZW50LmNsaWNrCgkJCXRoaXMuaW50ZXJuYWwucG9zdGVyLmpxLnVuYmluZCgiLmpQbGF5ZXIiKTsKCQkJaWYodGhpcy5pbnRlcm5hbC52aWRlby5qcSkgewoJCQkJdGhpcy5pbnRlcm5hbC52aWRlby5qcS51bmJpbmQoIi5qUGxheWVyIik7CgkJCX0KCQkJLy8gUmVtb3ZlIHRoZSBmdWxsc2NyZWVuIGV2ZW50IGhhbmRsZXJzCgkJCXRoaXMuX2Z1bGxzY3JlZW5SZW1vdmVFdmVudExpc3RlbmVycygpOwoJCQkvLyBSZW1vdmUga2V5IGJpbmRpbmdzCgkJCWlmKHRoaXMgPT09ICQualBsYXllci5mb2N1cykgewoJCQkJJC5qUGxheWVyLmZvY3VzID0gbnVsbDsKCQkJfQoJCQkvLyBEZXN0cm95IHRoZSBIVE1MIGJyaWRnZS4KCQkJaWYodGhpcy5vcHRpb25zLmVtdWxhdGVIdG1sKSB7CgkJCQl0aGlzLl9kZXN0cm95SHRtbEJyaWRnZSgpOwoJCQl9CgkJCXRoaXMuZWxlbWVudC5yZW1vdmVEYXRhKCJqUGxheWVyIik7IC8vIFJlbW92ZSBqUGxheWVyIGRhdGEKCQkJdGhpcy5lbGVtZW50LnVuYmluZCgiLmpQbGF5ZXIiKTsgLy8gUmVtb3ZlIGFsbCBldmVudCBoYW5kbGVycyBjcmVhdGVkIGJ5IHRoZSBqUGxheWVyIGNvbnN0cnVjdG9yCgkJCXRoaXMuZWxlbWVudC5lbXB0eSgpOyAvLyBSZW1vdmUgdGhlIGluc2VydGVkIGNoaWxkIGVsZW1lbnRzCgkJCQoJCQlkZWxldGUgdGhpcy5pbnN0YW5jZXNbdGhpcy5pbnRlcm5hbC5pbnN0YW5jZV07IC8vIENsZWFyIHRoZSBpbnN0YW5jZSBvbiB0aGUgc3RhdGljIGluc3RhbmNlIG9iamVjdAoJCX0sCgkJZW5hYmxlOiBmdW5jdGlvbigpIHsgLy8gUGxhbiB0byBpbXBsZW1lbnQKCQkJLy8gb3B0aW9ucy5kaXNhYmxlZCA9IGZhbHNlCgkJfSwKCQlkaXNhYmxlOiBmdW5jdGlvbiAoKSB7IC8vIFBsYW4gdG8gaW1wbGVtZW50CgkJCS8vIG9wdGlvbnMuZGlzYWJsZWQgPSB0cnVlCgkJfSwKCQlfdGVzdENhblBsYXlUeXBlOiBmdW5jdGlvbihlbGVtKSB7CgkJCS8vIElFOSBvbiBXaW4gU2VydmVyIDIwMDggZGlkIG5vdCBpbXBsZW1lbnQgY2FuUGxheVR5cGUoKSwgYnV0IGl0IGhhcyB0aGUgcHJvcGVydHkuCgkJCXRyeSB7CgkJCQllbGVtLmNhblBsYXlUeXBlKHRoaXMuZm9ybWF0Lm1wMy5jb2RlYyk7IC8vIFRoZSB0eXBlIGlzIGlycmVsZXZhbnQuCgkJCQlyZXR1cm4gdHJ1ZTsKCQkJfSBjYXRjaChlcnIpIHsKCQkJCXJldHVybiBmYWxzZTsKCQkJfQoJCX0sCgkJX3VhQmxvY2tsaXN0OiBmdW5jdGlvbihsaXN0KSB7CgkJCS8vIGxpc3QgOiBvYmplY3Qgd2l0aCBwcm9wZXJ0aWVzIHRoYXQgYXJlIGFsbCByZWd1bGFyIGV4cHJlc3Npb25zLiBQcm9wZXJ0eSBuYW1lcyBhcmUgaXJyZWxldmFudC4KCQkJLy8gUmV0dXJucyB0cnVlIGlmIHRoZSB1c2VyIGFnZW50IGlzIG1hdGNoZWQgaW4gbGlzdC4KCQkJdmFyCXVhID0gbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLAoJCQkJYmxvY2sgPSBmYWxzZTsKCgkJCSQuZWFjaChsaXN0LCBmdW5jdGlvbihwLCByZSkgewoJCQkJaWYocmUgJiYgcmUudGVzdCh1YSkpIHsKCQkJCQlibG9jayA9IHRydWU7CgkJCQkJcmV0dXJuIGZhbHNlOyAvLyBleGl0ICQuZWFjaC4KCQkJCX0KCQkJfSk7CgkJCXJldHVybiBibG9jazsKCQl9LAoJCV9yZXN0cmljdE5hdGl2ZVZpZGVvQ29udHJvbHM6IGZ1bmN0aW9uKCkgewoJCQkvLyBGYWxsYmFjayB0byBub0Z1bGxXaW5kb3cgd2hlbiBuYXRpdmVWaWRlb0NvbnRyb2xzIGlzIHRydWUgYW5kIGF1ZGlvIG1lZGlhIGlzIGJlaW5nIHVzZWQuIEFmZmVjdHMgd2hlbiBib3RoIG1lZGlhIHR5cGVzIGFyZSB1c2VkLgoJCQlpZih0aGlzLnJlcXVpcmUuYXVkaW8pIHsKCQkJCWlmKHRoaXMuc3RhdHVzLm5hdGl2ZVZpZGVvQ29udHJvbHMpIHsKCQkJCQl0aGlzLnN0YXR1cy5uYXRpdmVWaWRlb0NvbnRyb2xzID0gZmFsc2U7CgkJCQkJdGhpcy5zdGF0dXMubm9GdWxsV2luZG93ID0gdHJ1ZTsKCQkJCX0KCQkJfQoJCX0sCgkJX3VwZGF0ZU5hdGl2ZVZpZGVvQ29udHJvbHM6IGZ1bmN0aW9uKCkgewoJCQlpZih0aGlzLmh0bWwudmlkZW8uYXZhaWxhYmxlICYmIHRoaXMuaHRtbC51c2VkKSB7CgkJCQkvLyBUdXJuIHRoZSBIVE1MIFZpZGVvIGNvbnRyb2xzIG9uL29mZgoJCQkJdGhpcy5odG1sRWxlbWVudC52aWRlby5jb250cm9scyA9IHRoaXMuc3RhdHVzLm5hdGl2ZVZpZGVvQ29udHJvbHM7CgkJCQkvLyBTaG93L2hpZGUgdGhlIGpQbGF5ZXIgR1VJLgoJCQkJdGhpcy5fdXBkYXRlQXV0b2hpZGUoKTsKCQkJCS8vIEZvciB3aGVuIG9wdGlvbiBjaGFuZ2VkLiBUaGUgcG9zdGVyIGltYWdlIGlzIG5vdCB1cGRhdGVkLCBhcyBpdCBpcyBkZWFsdCB3aXRoIGluIHNldE1lZGlhKCkuIEFjY2VwdGFibGUgZGVncmFkYXRpb24gc2luY2Ugc2VyaW91c2x5IGRvdWJ0IHRoZXNlIG9wdGlvbnMgd2lsbCBjaGFuZ2Ugb24gdGhlIGZseS4gQ2FuIGFnYWluIHJldmlldyBsYXRlci4KCQkJCWlmKHRoaXMuc3RhdHVzLm5hdGl2ZVZpZGVvQ29udHJvbHMgJiYgdGhpcy5yZXF1aXJlLnZpZGVvKSB7CgkJCQkJdGhpcy5pbnRlcm5hbC5wb3N0ZXIuanEuaGlkZSgpOwoJCQkJCXRoaXMuaW50ZXJuYWwudmlkZW8uanEuY3NzKHsnd2lkdGgnOiB0aGlzLnN0YXR1cy53aWR0aCwgJ2hlaWdodCc6IHRoaXMuc3RhdHVzLmhlaWdodH0pOwoJCQkJfSBlbHNlIGlmKHRoaXMuc3RhdHVzLndhaXRGb3JQbGF5ICYmIHRoaXMuc3RhdHVzLnZpZGVvKSB7CgkJCQkJdGhpcy5pbnRlcm5hbC5wb3N0ZXIuanEuc2hvdygpOwoJCQkJCXRoaXMuaW50ZXJuYWwudmlkZW8uanEuY3NzKHsnd2lkdGgnOiAnMHB4JywgJ2hlaWdodCc6ICcwcHgnfSk7CgkJCQl9CgkJCX0KCQl9LAoJCV9hZGRIdG1sRXZlbnRMaXN0ZW5lcnM6IGZ1bmN0aW9uKG1lZGlhRWxlbWVudCwgZW50aXR5KSB7CgkJCXZhciBzZWxmID0gdGhpczsKCQkJbWVkaWFFbGVtZW50LnByZWxvYWQgPSB0aGlzLm9wdGlvbnMucHJlbG9hZDsKCQkJbWVkaWFFbGVtZW50Lm11dGVkID0gdGhpcy5vcHRpb25zLm11dGVkOwoJCQltZWRpYUVsZW1lbnQudm9sdW1lID0gdGhpcy5vcHRpb25zLnZvbHVtZTsKCgkJCS8vIENyZWF0ZSB0aGUgZXZlbnQgbGlzdGVuZXJzCgkJCS8vIE9ubHkgd2FudCB0aGUgYWN0aXZlIGVudGl0eSB0byBhZmZlY3QgalBsYXllciBhbmQgYnViYmxlIGV2ZW50cy4KCQkJLy8gVXNpbmcgZW50aXR5LmdhdGUgc28gdGhhdCBvYmplY3QgaXMgcmVmZXJlbmNlZCBhbmQgZ2F0ZSBwcm9wZXJ0eSBhbHdheXMgY3VycmVudAoJCQkKCQkJbWVkaWFFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIiwgZnVuY3Rpb24oKSB7CgkJCQlpZihlbnRpdHkuZ2F0ZSkgewoJCQkJCWlmKHNlbGYuaW50ZXJuYWwuY21kc0lnbm9yZWQgJiYgdGhpcy5yZWFkeVN0YXRlID4gMCkgeyAvLyBEZXRlY3QgaU9TIGV4ZWN1dGVkIHRoZSBjb21tYW5kCgkJCQkJCXNlbGYuaW50ZXJuYWwuY21kc0lnbm9yZWQgPSBmYWxzZTsKCQkJCQl9CgkJCQkJc2VsZi5fZ2V0SHRtbFN0YXR1cyhtZWRpYUVsZW1lbnQpOwoJCQkJCXNlbGYuX3VwZGF0ZUludGVyZmFjZSgpOwoJCQkJCXNlbGYuX3RyaWdnZXIoJC5qUGxheWVyLmV2ZW50LnByb2dyZXNzKTsKCQkJCX0KCQkJfSwgZmFsc2UpOwoJCQltZWRpYUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidGltZXVwZGF0ZSIsIGZ1bmN0aW9uKCkgewoJCQkJaWYoZW50aXR5LmdhdGUpIHsKCQkJCQlzZWxmLl9nZXRIdG1sU3RhdHVzKG1lZGlhRWxlbWVudCk7CgkJCQkJc2VsZi5fdXBkYXRlSW50ZXJmYWNlKCk7CgkJCQkJc2VsZi5fdHJpZ2dlcigkLmpQbGF5ZXIuZXZlbnQudGltZXVwZGF0ZSk7CgkJCQl9CgkJCX0sIGZhbHNlKTsKCQkJbWVkaWFFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImR1cmF0aW9uY2hhbmdlIiwgZnVuY3Rpb24oKSB7CgkJCQlpZihlbnRpdHkuZ2F0ZSkgewoJCQkJCXNlbGYuX2dldEh0bWxTdGF0dXMobWVkaWFFbGVtZW50KTsKCQkJCQlzZWxmLl91cGRhdGVJbnRlcmZhY2UoKTsKCQkJCQlzZWxmLl90cmlnZ2VyKCQualBsYXllci5ldmVudC5kdXJhdGlvbmNoYW5nZSk7CgkJCQl9CgkJCX0sIGZhbHNlKTsKCQkJbWVkaWFFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInBsYXkiLCBmdW5jdGlvbigpIHsKCQkJCWlmKGVudGl0eS5nYXRlKSB7CgkJCQkJc2VsZi5fdXBkYXRlQnV0dG9ucyh0cnVlKTsKCQkJCQlzZWxmLl9odG1sX2NoZWNrV2FpdEZvclBsYXkoKTsgLy8gU28gdGhlIG5hdGl2ZSBjb250cm9scyB1cGRhdGUgdGhpcyB2YXJpYWJsZSBhbmQgcHV0cyB0aGUgaGlkZGVuIGludGVyZmFjZSBpbiB0aGUgY29ycmVjdCBzdGF0ZS4gQWZmZWN0cyB0b2dnbGluZyBuYXRpdmUgY29udHJvbHMuCgkJCQkJc2VsZi5fdHJpZ2dlcigkLmpQbGF5ZXIuZXZlbnQucGxheSk7CgkJCQl9CgkJCX0sIGZhbHNlKTsKCQkJbWVkaWFFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInBsYXlpbmciLCBmdW5jdGlvbigpIHsKCQkJCWlmKGVudGl0eS5nYXRlKSB7CgkJCQkJc2VsZi5fdXBkYXRlQnV0dG9ucyh0cnVlKTsKCQkJCQlzZWxmLl9zZWVrZWQoKTsKCQkJCQlzZWxmLl90cmlnZ2VyKCQualBsYXllci5ldmVudC5wbGF5aW5nKTsKCQkJCX0KCQkJfSwgZmFsc2UpOwoJCQltZWRpYUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigicGF1c2UiLCBmdW5jdGlvbigpIHsKCQkJCWlmKGVudGl0eS5nYXRlKSB7CgkJCQkJc2VsZi5fdXBkYXRlQnV0dG9ucyhmYWxzZSk7CgkJCQkJc2VsZi5fdHJpZ2dlcigkLmpQbGF5ZXIuZXZlbnQucGF1c2UpOwoJCQkJfQoJCQl9LCBmYWxzZSk7CgkJCW1lZGlhRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ3YWl0aW5nIiwgZnVuY3Rpb24oKSB7CgkJCQlpZihlbnRpdHkuZ2F0ZSkgewoJCQkJCXNlbGYuX3NlZWtpbmcoKTsKCQkJCQlzZWxmLl90cmlnZ2VyKCQualBsYXllci5ldmVudC53YWl0aW5nKTsKCQkJCX0KCQkJfSwgZmFsc2UpOwoJCQltZWRpYUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigic2Vla2luZyIsIGZ1bmN0aW9uKCkgewoJCQkJaWYoZW50aXR5LmdhdGUpIHsKCQkJCQlzZWxmLl9zZWVraW5nKCk7CgkJCQkJc2VsZi5fdHJpZ2dlcigkLmpQbGF5ZXIuZXZlbnQuc2Vla2luZyk7CgkJCQl9CgkJCX0sIGZhbHNlKTsKCQkJbWVkaWFFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInNlZWtlZCIsIGZ1bmN0aW9uKCkgewoJCQkJaWYoZW50aXR5LmdhdGUpIHsKCQkJCQlzZWxmLl9zZWVrZWQoKTsKCQkJCQlzZWxmLl90cmlnZ2VyKCQualBsYXllci5ldmVudC5zZWVrZWQpOwoJCQkJfQoJCQl9LCBmYWxzZSk7CgkJCW1lZGlhRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ2b2x1bWVjaGFuZ2UiLCBmdW5jdGlvbigpIHsKCQkJCWlmKGVudGl0eS5nYXRlKSB7CgkJCQkJLy8gUmVhZCB0aGUgdmFsdWVzIGJhY2sgZnJvbSB0aGUgZWxlbWVudCBhcyB0aGUgQmxhY2tiZXJyeSBQbGF5Qm9vayBzaGFyZXMgdGhlIHZvbHVtZSB3aXRoIHRoZSBwaHlzaWNhbCBidXR0b25zIG1hc3RlciB2b2x1bWUgY29udHJvbC4KCQkJCQkvLyBIb3dldmVyLCB3aGVuIHRlc3RlZCA2dGggSnVseSAyMDExLCB0aG9zZSBidXR0b25zIGRvIG5vdCBnZW5lcmF0ZSBhbiBldmVudC4gVGhlIHBoeXNpY2FsIHBsYXkvcGF1c2UgYnV0dG9uIGRvZXMgdGhvdWdoLgoJCQkJCXNlbGYub3B0aW9ucy52b2x1bWUgPSBtZWRpYUVsZW1lbnQudm9sdW1lOwoJCQkJCXNlbGYub3B0aW9ucy5tdXRlZCA9IG1lZGlhRWxlbWVudC5tdXRlZDsKCQkJCQlzZWxmLl91cGRhdGVNdXRlKCk7CgkJCQkJc2VsZi5fdXBkYXRlVm9sdW1lKCk7CgkJCQkJc2VsZi5fdHJpZ2dlcigkLmpQbGF5ZXIuZXZlbnQudm9sdW1lY2hhbmdlKTsKCQkJCX0KCQkJfSwgZmFsc2UpOwoJCQltZWRpYUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigic3VzcGVuZCIsIGZ1bmN0aW9uKCkgeyAvLyBTZWVtcyB0byBiZSB0aGUgb25seSB3YXkgb2YgY2FwdHVyaW5nIHRoYXQgdGhlIGlPUzQgYnJvd3NlciBkaWQgbm90IGFjdHVhbGx5IHBsYXkgdGhlIG1lZGlhIGZyb20gdGhlIHBhZ2UgY29kZS4gaWUuLCBJdCBuZWVkcyBhIHVzZXIgZ2VzdHVyZS4KCQkJCWlmKGVudGl0eS5nYXRlKSB7CgkJCQkJc2VsZi5fc2Vla2VkKCk7CgkJCQkJc2VsZi5fdHJpZ2dlcigkLmpQbGF5ZXIuZXZlbnQuc3VzcGVuZCk7CgkJCQl9CgkJCX0sIGZhbHNlKTsKCQkJbWVkaWFFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImVuZGVkIiwgZnVuY3Rpb24oKSB7CgkJCQlpZihlbnRpdHkuZ2F0ZSkgewoJCQkJCS8vIE9yZGVyIG9mIHRoZSBuZXh0IGZldyBjb21tYW5kcyBhcmUgaW1wb3J0YW50LiBDaGFuZ2UgdGhlIHRpbWUgYW5kIHRoZW4gcGF1c2UuCgkJCQkJLy8gU29sdmVzIGEgYnVnIGluIEZpcmVmb3gsIHdoZXJlIGlzc3VpbmcgcGF1c2UgMXN0IGNhdXNlcyB0aGUgbWVkaWEgdG8gcGxheSBmcm9tIHRoZSBzdGFydC4gaWUuLCBUaGUgcGF1c2UgaXMgaWdub3JlZC4KCQkJCQlpZighJC5qUGxheWVyLmJyb3dzZXIud2Via2l0KSB7IC8vIENocm9tZSBjcmFzaGVzIGlmIHlvdSBkbyB0aGlzIGluIGNvbmp1bmN0aW9uIHdpdGggYSBzZXRNZWRpYSBjb21tYW5kIGluIGFuIGVuZGVkIGV2ZW50IGhhbmRsZXIuIGllLiwgVGhlIHBsYXlsaXN0IGRlbW8uCgkJCQkJCXNlbGYuaHRtbEVsZW1lbnQubWVkaWEuY3VycmVudFRpbWUgPSAwOyAvLyBTYWZhcmkgZG9lcyBub3QgY2FyZSBhYm91dCB0aGlzIGNvbW1hbmQuIGllLiwgSXQgd29ya3Mgd2l0aCBvciB3aXRob3V0IHRoaXMgbGluZS4gKEJvdGggU2FmYXJpIGFuZCBDaHJvbWUgYXJlIFdlYmtpdC4pCgkJCQkJfQoJCQkJCXNlbGYuaHRtbEVsZW1lbnQubWVkaWEucGF1c2UoKTsgLy8gUGF1c2Ugb3RoZXJ3aXNlIGEgY2xpY2sgb24gdGhlIHByb2dyZXNzIGJhciB3aWxsIHBsYXkgZnJvbSB0aGF0IHBvaW50LCB3aGVuIGl0IHNob3VsZG4ndCwgc2luY2UgaXQgc3RvcHBlZCBwbGF5YmFjay4KCQkJCQlzZWxmLl91cGRhdGVCdXR0b25zKGZhbHNlKTsKCQkJCQlzZWxmLl9nZXRIdG1sU3RhdHVzKG1lZGlhRWxlbWVudCwgdHJ1ZSk7IC8vIFdpdGggb3ZlcnJpZGUgdHJ1ZS4gT3RoZXJ3aXNlIENocm9tZSBsZWF2ZXMgcHJvZ3Jlc3MgYXQgZnVsbC4KCQkJCQlzZWxmLl91cGRhdGVJbnRlcmZhY2UoKTsKCQkJCQlzZWxmLl90cmlnZ2VyKCQualBsYXllci5ldmVudC5lbmRlZCk7CgkJCQl9CgkJCX0sIGZhbHNlKTsKCQkJbWVkaWFFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIiwgZnVuY3Rpb24oKSB7CgkJCQlpZihlbnRpdHkuZ2F0ZSkgewoJCQkJCXNlbGYuX3VwZGF0ZUJ1dHRvbnMoZmFsc2UpOwoJCQkJCXNlbGYuX3NlZWtlZCgpOwoJCQkJCWlmKHNlbGYuc3RhdHVzLnNyY1NldCkgeyAvLyBEZWFscyB3aXRoIGNhc2Ugb2YgY2xlYXJNZWRpYSgpIGNhdXNpbmcgYW4gZXJyb3IgZXZlbnQuCgkJCQkJCWNsZWFyVGltZW91dChzZWxmLmludGVybmFsLmh0bWxEbHlDbWRJZCk7IC8vIENsZWFycyBhbnkgZGVsYXllZCBjb21tYW5kcyB1c2VkIGluIHRoZSBIVE1MIHNvbHV0aW9uLgoJCQkJCQlzZWxmLnN0YXR1cy53YWl0Rm9yTG9hZCA9IHRydWU7IC8vIEFsbG93cyB0aGUgbG9hZCBvcGVyYXRpb24gdG8gdHJ5IGFnYWluLgoJCQkJCQlzZWxmLnN0YXR1cy53YWl0Rm9yUGxheSA9IHRydWU7IC8vIFJlc2V0IHNpbmNlIGEgcGxheSB3YXMgY2FwdHVyZWQuCgkJCQkJCWlmKHNlbGYuc3RhdHVzLnZpZGVvICYmICFzZWxmLnN0YXR1cy5uYXRpdmVWaWRlb0NvbnRyb2xzKSB7CgkJCQkJCQlzZWxmLmludGVybmFsLnZpZGVvLmpxLmNzcyh7J3dpZHRoJzonMHB4JywgJ2hlaWdodCc6JzBweCd9KTsKCQkJCQkJfQoJCQkJCQlpZihzZWxmLl92YWxpZFN0cmluZyhzZWxmLnN0YXR1cy5tZWRpYS5wb3N0ZXIpICYmICFzZWxmLnN0YXR1cy5uYXRpdmVWaWRlb0NvbnRyb2xzKSB7CgkJCQkJCQlzZWxmLmludGVybmFsLnBvc3Rlci5qcS5zaG93KCk7CgkJCQkJCX0KCQkJCQkJaWYoc2VsZi5jc3MuanEudmlkZW9QbGF5Lmxlbmd0aCkgewoJCQkJCQkJc2VsZi5jc3MuanEudmlkZW9QbGF5LnNob3coKTsKCQkJCQkJfQoJCQkJCQlzZWxmLl9lcnJvciggewoJCQkJCQkJdHlwZTogJC5qUGxheWVyLmVycm9yLlVSTCwKCQkJCQkJCWNvbnRleHQ6IHNlbGYuc3RhdHVzLnNyYywgLy8gdGhpcy5zcmMgc2hvd3MgYWJzb2x1dGUgdXJscy4gV2FudCBjb250ZXh0IHRvIHNob3cgdGhlIHVybCBnaXZlbi4KCQkJCQkJCW1lc3NhZ2U6ICQualBsYXllci5lcnJvck1zZy5VUkwsCgkJCQkJCQloaW50OiAkLmpQbGF5ZXIuZXJyb3JIaW50LlVSTAoJCQkJCQl9KTsKCQkJCQl9CgkJCQl9CgkJCX0sIGZhbHNlKTsKCQkJLy8gQ3JlYXRlIGFsbCB0aGUgb3RoZXIgZXZlbnQgbGlzdGVuZXJzIHRoYXQgYnViYmxlIHVwIHRvIGEgalBsYXllciBldmVudCBmcm9tIGh0bWwsIHdpdGhvdXQgYmVpbmcgdXNlZCBieSBqUGxheWVyLgoJCQkkLmVhY2goJC5qUGxheWVyLmh0bWxFdmVudCwgZnVuY3Rpb24oaSwgZXZlbnRUeXBlKSB7CgkJCQltZWRpYUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLCBmdW5jdGlvbigpIHsKCQkJCQlpZihlbnRpdHkuZ2F0ZSkgewoJCQkJCQlzZWxmLl90cmlnZ2VyKCQualBsYXllci5ldmVudFtldmVudFR5cGVdKTsKCQkJCQl9CgkJCQl9LCBmYWxzZSk7CgkJCX0pOwoJCX0sCgkJX2dldEh0bWxTdGF0dXM6IGZ1bmN0aW9uKG1lZGlhLCBvdmVycmlkZSkgewoJCQl2YXIgY3QgPSAwLCBjcGEgPSAwLCBzcCA9IDAsIGNwciA9IDA7CgoJCQkvLyBGaXhlcyB0aGUgZHVyYXRpb24gYnVnIGluIGlPUywgd2hlcmUgdGhlIGR1cmF0aW9uY2hhbmdlIGV2ZW50IG9jY3VycyB3aGVuIG1lZGlhLmR1cmF0aW9uIGlzIG5vdCBhbHdheXMgY29ycmVjdC4KCQkJLy8gRml4ZXMgdGhlIGluaXRpYWwgZHVyYXRpb24gYnVnIGluIEJCIE9TNywgd2hlcmUgdGhlIG1lZGlhLmR1cmF0aW9uIGlzIGluZmluaXR5IGFuZCBkaXNwbGF5cyBhcyBOYU46TmFOIGR1ZSB0byBEYXRlKCkgdXNpbmcgaW5pZml0eS4KCQkJaWYoaXNGaW5pdGUobWVkaWEuZHVyYXRpb24pKSB7CgkJCQl0aGlzLnN0YXR1cy5kdXJhdGlvbiA9IG1lZGlhLmR1cmF0aW9uOwoJCQl9CgoJCQljdCA9IG1lZGlhLmN1cnJlbnRUaW1lOwoJCQljcGEgPSAodGhpcy5zdGF0dXMuZHVyYXRpb24gPiAwKSA/IDEwMCAqIGN0IC8gdGhpcy5zdGF0dXMuZHVyYXRpb24gOiAwOwoJCQlpZigodHlwZW9mIG1lZGlhLnNlZWthYmxlID09PSAib2JqZWN0IikgJiYgKG1lZGlhLnNlZWthYmxlLmxlbmd0aCA+IDApKSB7CgkJCQlzcCA9ICh0aGlzLnN0YXR1cy5kdXJhdGlvbiA+IDApID8gMTAwICogbWVkaWEuc2Vla2FibGUuZW5kKG1lZGlhLnNlZWthYmxlLmxlbmd0aC0xKSAvIHRoaXMuc3RhdHVzLmR1cmF0aW9uIDogMTAwOwoJCQkJY3ByID0gKHRoaXMuc3RhdHVzLmR1cmF0aW9uID4gMCkgPyAxMDAgKiBtZWRpYS5jdXJyZW50VGltZSAvIG1lZGlhLnNlZWthYmxlLmVuZChtZWRpYS5zZWVrYWJsZS5sZW5ndGgtMSkgOiAwOyAvLyBEdXJhdGlvbiBjb25kaXRpb25hbCBmb3IgaU9TIGR1cmF0aW9uIGJ1Zy4gaWUuLCBzZWVrYWJsZS5lbmQgaXMgYSBOYU4gaW4gdGhhdCBjYXNlLgoJCQl9IGVsc2UgewoJCQkJc3AgPSAxMDA7CgkJCQljcHIgPSBjcGE7CgkJCX0KCQkJCgkJCWlmKG92ZXJyaWRlKSB7CgkJCQljdCA9IDA7CgkJCQljcHIgPSAwOwoJCQkJY3BhID0gMDsKCQkJfQoKCQkJdGhpcy5zdGF0dXMuc2Vla1BlcmNlbnQgPSBzcDsKCQkJdGhpcy5zdGF0dXMuY3VycmVudFBlcmNlbnRSZWxhdGl2ZSA9IGNwcjsKCQkJdGhpcy5zdGF0dXMuY3VycmVudFBlcmNlbnRBYnNvbHV0ZSA9IGNwYTsKCQkJdGhpcy5zdGF0dXMuY3VycmVudFRpbWUgPSBjdDsKCgkJCXRoaXMuc3RhdHVzLnZpZGVvV2lkdGggPSBtZWRpYS52aWRlb1dpZHRoOwoJCQl0aGlzLnN0YXR1cy52aWRlb0hlaWdodCA9IG1lZGlhLnZpZGVvSGVpZ2h0OwoKCQkJdGhpcy5zdGF0dXMucmVhZHlTdGF0ZSA9IG1lZGlhLnJlYWR5U3RhdGU7CgkJCXRoaXMuc3RhdHVzLm5ldHdvcmtTdGF0ZSA9IG1lZGlhLm5ldHdvcmtTdGF0ZTsKCQkJdGhpcy5zdGF0dXMucGxheWJhY2tSYXRlID0gbWVkaWEucGxheWJhY2tSYXRlOwoJCQl0aGlzLnN0YXR1cy5lbmRlZCA9IG1lZGlhLmVuZGVkOwoJCX0sCgkJX3Jlc2V0U3RhdHVzOiBmdW5jdGlvbigpIHsKCQkJdGhpcy5zdGF0dXMgPSAkLmV4dGVuZCh7fSwgdGhpcy5zdGF0dXMsICQualBsYXllci5wcm90b3R5cGUuc3RhdHVzKTsgLy8gTWFpbnRhaW5zIHRoZSBzdGF0dXMgcHJvcGVydGllcyB0aGF0IHBlcnNpc3QgdGhyb3VnaCBhIHJlc2V0LgoJCX0sCgkJX3RyaWdnZXI6IGZ1bmN0aW9uKGV2ZW50VHlwZSwgZXJyb3IsIHdhcm5pbmcpIHsgLy8gZXZlbnRUeXBlIGFsd2F5cyB2YWxpZCBhcyBjYWxsZWQgdXNpbmcgJC5qUGxheWVyLmV2ZW50LmV2ZW50VHlwZQoJCQl2YXIgZXZlbnQgPSAkLkV2ZW50KGV2ZW50VHlwZSk7CgkJCWV2ZW50LmpQbGF5ZXIgPSB7fTsKCQkJZXZlbnQualBsYXllci52ZXJzaW9uID0gJC5leHRlbmQoe30sIHRoaXMudmVyc2lvbik7CgkJCWV2ZW50LmpQbGF5ZXIub3B0aW9ucyA9ICQuZXh0ZW5kKHRydWUsIHt9LCB0aGlzLm9wdGlvbnMpOyAvLyBEZWVwIGNvcHkKCQkJZXZlbnQualBsYXllci5zdGF0dXMgPSAkLmV4dGVuZCh0cnVlLCB7fSwgdGhpcy5zdGF0dXMpOyAvLyBEZWVwIGNvcHkKCQkJZXZlbnQualBsYXllci5odG1sID0gJC5leHRlbmQodHJ1ZSwge30sIHRoaXMuaHRtbCk7IC8vIERlZXAgY29weQoJCQlldmVudC5qUGxheWVyLmZsYXNoID0gJC5leHRlbmQodHJ1ZSwge30sIHRoaXMuZmxhc2gpOyAvLyBEZWVwIGNvcHkKCQkJaWYoZXJyb3IpIHsKCQkJCWV2ZW50LmpQbGF5ZXIuZXJyb3IgPSAkLmV4dGVuZCh7fSwgZXJyb3IpOwoJCQl9CgkJCWlmKHdhcm5pbmcpIHsKCQkJCWV2ZW50LmpQbGF5ZXIud2FybmluZyA9ICQuZXh0ZW5kKHt9LCB3YXJuaW5nKTsKCQkJfQoJCQl0aGlzLmVsZW1lbnQudHJpZ2dlcihldmVudCk7CgkJfSwKCQlqUGxheWVyRmxhc2hFdmVudDogZnVuY3Rpb24oZXZlbnRUeXBlLCBzdGF0dXMpIHsgLy8gQ2FsbGVkIGZyb20gRmxhc2gKCQkJaWYoZXZlbnRUeXBlID09PSAkLmpQbGF5ZXIuZXZlbnQucmVhZHkpIHsKCQkJCWlmKCF0aGlzLmludGVybmFsLnJlYWR5KSB7CgkJCQkJdGhpcy5pbnRlcm5hbC5yZWFkeSA9IHRydWU7CgkJCQkJdGhpcy5pbnRlcm5hbC5mbGFzaC5qcS5jc3Moeyd3aWR0aCc6JzBweCcsICdoZWlnaHQnOicwcHgnfSk7IC8vIE9uY2UgRmxhc2ggZ2VuZXJhdGVzIHRoZSByZWFkeSBldmVudCwgbWluaW1pc2UgdG8gemVybyBhcyBpdCBpcyBub3QgYWZmZWN0ZWQgYnkgd21vZGUgYW55bW9yZS4KCgkJCQkJdGhpcy52ZXJzaW9uLmZsYXNoID0gc3RhdHVzLnZlcnNpb247CgkJCQkJaWYodGhpcy52ZXJzaW9uLm5lZWRGbGFzaCAhPT0gdGhpcy52ZXJzaW9uLmZsYXNoKSB7CgkJCQkJCXRoaXMuX2Vycm9yKCB7CgkJCQkJCQl0eXBlOiAkLmpQbGF5ZXIuZXJyb3IuVkVSU0lPTiwKCQkJCQkJCWNvbnRleHQ6IHRoaXMudmVyc2lvbi5mbGFzaCwKCQkJCQkJCW1lc3NhZ2U6ICQualBsYXllci5lcnJvck1zZy5WRVJTSU9OICsgdGhpcy52ZXJzaW9uLmZsYXNoLAoJCQkJCQkJaGludDogJC5qUGxheWVyLmVycm9ySGludC5WRVJTSU9OCgkJCQkJCX0pOwoJCQkJCX0KCQkJCQl0aGlzLl90cmlnZ2VyKCQualBsYXllci5ldmVudC5yZXBlYXQpOyAvLyBUcmlnZ2VyIHRoZSByZXBlYXQgZXZlbnQgc28gaXRzIGhhbmRsZXIgY2FuIGluaXRpYWxpemUgaXRzZWxmIHdpdGggdGhlIGxvb3Agb3B0aW9uLgoJCQkJCXRoaXMuX3RyaWdnZXIoZXZlbnRUeXBlKTsKCQkJCX0gZWxzZSB7CgkJCQkJLy8gVGhpcyBjb25kaXRpb24gb2NjdXJzIGlmIHRoZSBGbGFzaCBpcyBoaWRkZW4gYW5kIHRoZW4gc2hvd24gYWdhaW4uCgkJCQkJLy8gRmlyZWZveCBhbHNvIHJlbG9hZHMgdGhlIEZsYXNoIGlmIHRoZSBDU1MgcG9zaXRpb24gY2hhbmdlcy4gcG9zaXRpb246Zml4ZWQgaXMgdXNlZCBmb3IgZnVsbCBzY3JlZW4uCgoJCQkJCS8vIE9ubHkgZG8gdGhpcyBpZiB0aGUgRmxhc2ggaXMgdGhlIHNvbHV0aW9uIGJlaW5nIHVzZWQgYXQgdGhlIG1vbWVudC4gQWZmZWN0cyBNZWRpYSBwbGF5ZXJzIHdoZXJlIGJvdGggc29sdXRpb24gbWF5IGJlIGJlaW5nIHVzZWQuCgkJCQkJaWYodGhpcy5mbGFzaC5nYXRlKSB7CgoJCQkJCQkvLyBTZW5kIHRoZSBjdXJyZW50IHN0YXR1cyB0byB0aGUgRmxhc2ggbm93IHRoYXQgaXQgaXMgcmVhZHkgKGF2YWlsYWJsZSkgYWdhaW4uCgkJCQkJCWlmKHRoaXMuc3RhdHVzLnNyY1NldCkgewoKCQkJCQkJCS8vIE5lZWQgdG8gcmVhZCBvcmlnaW5hbCBzdGF0dXMgYmVmb3JlIGlzc3VpbmcgdGhlIHNldE1lZGlhIGNvbW1hbmQuCgkJCQkJCQl2YXIJY3VycmVudFRpbWUgPSB0aGlzLnN0YXR1cy5jdXJyZW50VGltZSwKCQkJCQkJCQlwYXVzZWQgPSB0aGlzLnN0YXR1cy5wYXVzZWQ7IAoKCQkJCQkJCXRoaXMuc2V0TWVkaWEodGhpcy5zdGF0dXMubWVkaWEpOwoJCQkJCQkJaWYoY3VycmVudFRpbWUgPiAwKSB7CgkJCQkJCQkJaWYocGF1c2VkKSB7CgkJCQkJCQkJCXRoaXMucGF1c2UoY3VycmVudFRpbWUpOwoJCQkJCQkJCX0gZWxzZSB7CgkJCQkJCQkJCXRoaXMucGxheShjdXJyZW50VGltZSk7CgkJCQkJCQkJfQoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJCXRoaXMuX3RyaWdnZXIoJC5qUGxheWVyLmV2ZW50LmZsYXNocmVzZXQpOwoJCQkJCX0KCQkJCX0KCQkJfQoJCQlpZih0aGlzLmZsYXNoLmdhdGUpIHsKCQkJCXN3aXRjaChldmVudFR5cGUpIHsKCQkJCQljYXNlICQualBsYXllci5ldmVudC5wcm9ncmVzczoKCQkJCQkJdGhpcy5fZ2V0Rmxhc2hTdGF0dXMoc3RhdHVzKTsKCQkJCQkJdGhpcy5fdXBkYXRlSW50ZXJmYWNlKCk7CgkJCQkJCXRoaXMuX3RyaWdnZXIoZXZlbnRUeXBlKTsKCQkJCQkJYnJlYWs7CgkJCQkJY2FzZSAkLmpQbGF5ZXIuZXZlbnQudGltZXVwZGF0ZToKCQkJCQkJdGhpcy5fZ2V0Rmxhc2hTdGF0dXMoc3RhdHVzKTsKCQkJCQkJdGhpcy5fdXBkYXRlSW50ZXJmYWNlKCk7CgkJCQkJCXRoaXMuX3RyaWdnZXIoZXZlbnRUeXBlKTsKCQkJCQkJYnJlYWs7CgkJCQkJY2FzZSAkLmpQbGF5ZXIuZXZlbnQucGxheToKCQkJCQkJdGhpcy5fc2Vla2VkKCk7CgkJCQkJCXRoaXMuX3VwZGF0ZUJ1dHRvbnModHJ1ZSk7CgkJCQkJCXRoaXMuX3RyaWdnZXIoZXZlbnRUeXBlKTsKCQkJCQkJYnJlYWs7CgkJCQkJY2FzZSAkLmpQbGF5ZXIuZXZlbnQucGF1c2U6CgkJCQkJCXRoaXMuX3VwZGF0ZUJ1dHRvbnMoZmFsc2UpOwoJCQkJCQl0aGlzLl90cmlnZ2VyKGV2ZW50VHlwZSk7CgkJCQkJCWJyZWFrOwoJCQkJCWNhc2UgJC5qUGxheWVyLmV2ZW50LmVuZGVkOgoJCQkJCQl0aGlzLl91cGRhdGVCdXR0b25zKGZhbHNlKTsKCQkJCQkJdGhpcy5fdHJpZ2dlcihldmVudFR5cGUpOwoJCQkJCQlicmVhazsKCQkJCQljYXNlICQualBsYXllci5ldmVudC5jbGljazoKCQkJCQkJdGhpcy5fdHJpZ2dlcihldmVudFR5cGUpOyAvLyBUaGlzIGNvdWxkIGJlIGRlYWx0IHdpdGggYnkgdGhlIGRlZmF1bHQKCQkJCQkJYnJlYWs7CgkJCQkJY2FzZSAkLmpQbGF5ZXIuZXZlbnQuZXJyb3I6CgkJCQkJCXRoaXMuc3RhdHVzLndhaXRGb3JMb2FkID0gdHJ1ZTsgLy8gQWxsb3dzIHRoZSBsb2FkIG9wZXJhdGlvbiB0byB0cnkgYWdhaW4uCgkJCQkJCXRoaXMuc3RhdHVzLndhaXRGb3JQbGF5ID0gdHJ1ZTsgLy8gUmVzZXQgc2luY2UgYSBwbGF5IHdhcyBjYXB0dXJlZC4KCQkJCQkJaWYodGhpcy5zdGF0dXMudmlkZW8pIHsKCQkJCQkJCXRoaXMuaW50ZXJuYWwuZmxhc2guanEuY3NzKHsnd2lkdGgnOicwcHgnLCAnaGVpZ2h0JzonMHB4J30pOwoJCQkJCQl9CgkJCQkJCWlmKHRoaXMuX3ZhbGlkU3RyaW5nKHRoaXMuc3RhdHVzLm1lZGlhLnBvc3RlcikpIHsKCQkJCQkJCXRoaXMuaW50ZXJuYWwucG9zdGVyLmpxLnNob3coKTsKCQkJCQkJfQoJCQkJCQlpZih0aGlzLmNzcy5qcS52aWRlb1BsYXkubGVuZ3RoICYmIHRoaXMuc3RhdHVzLnZpZGVvKSB7CgkJCQkJCQl0aGlzLmNzcy5qcS52aWRlb1BsYXkuc2hvdygpOwoJCQkJCQl9CgkJCQkJCWlmKHRoaXMuc3RhdHVzLnZpZGVvKSB7IC8vIFNldCB1cCBmb3IgYW5vdGhlciB0cnkuIEV4ZWN1dGUgYmVmb3JlIGVycm9yIGV2ZW50LgoJCQkJCQkJdGhpcy5fZmxhc2hfc2V0VmlkZW8odGhpcy5zdGF0dXMubWVkaWEpOwoJCQkJCQl9IGVsc2UgewoJCQkJCQkJdGhpcy5fZmxhc2hfc2V0QXVkaW8odGhpcy5zdGF0dXMubWVkaWEpOwoJCQkJCQl9CgkJCQkJCXRoaXMuX3VwZGF0ZUJ1dHRvbnMoZmFsc2UpOwoJCQkJCQl0aGlzLl9lcnJvciggewoJCQkJCQkJdHlwZTogJC5qUGxheWVyLmVycm9yLlVSTCwKCQkJCQkJCWNvbnRleHQ6c3RhdHVzLnNyYywKCQkJCQkJCW1lc3NhZ2U6ICQualBsYXllci5lcnJvck1zZy5VUkwsCgkJCQkJCQloaW50OiAkLmpQbGF5ZXIuZXJyb3JIaW50LlVSTAoJCQkJCQl9KTsKCQkJCQkJYnJlYWs7CgkJCQkJY2FzZSAkLmpQbGF5ZXIuZXZlbnQuc2Vla2luZzoKCQkJCQkJdGhpcy5fc2Vla2luZygpOwoJCQkJCQl0aGlzLl90cmlnZ2VyKGV2ZW50VHlwZSk7CgkJCQkJCWJyZWFrOwoJCQkJCWNhc2UgJC5qUGxheWVyLmV2ZW50LnNlZWtlZDoKCQkJCQkJdGhpcy5fc2Vla2VkKCk7CgkJCQkJCXRoaXMuX3RyaWdnZXIoZXZlbnRUeXBlKTsKCQkJCQkJYnJlYWs7CgkJCQkJY2FzZSAkLmpQbGF5ZXIuZXZlbnQucmVhZHk6CgkJCQkJCS8vIFRoZSByZWFkeSBldmVudCBpcyBoYW5kbGVkIG91dHNpZGUgdGhlIHN3aXRjaCBzdGF0ZW1lbnQuCgkJCQkJCS8vIENhcHR1cmVkIGhlcmUgb3RoZXJ3aXNlIDIgcmVhZHkgZXZlbnRzIHdvdWxkIGJlIGdlbmVyYXRlZCBpZiB0aGUgcmVhZHkgZXZlbnQgaGFuZGxlciB1c2VkIHNldE1lZGlhLgoJCQkJCQlicmVhazsKCQkJCQlkZWZhdWx0OgoJCQkJCQl0aGlzLl90cmlnZ2VyKGV2ZW50VHlwZSk7CgkJCQl9CgkJCX0KCQkJcmV0dXJuIGZhbHNlOwoJCX0sCgkJX2dldEZsYXNoU3RhdHVzOiBmdW5jdGlvbihzdGF0dXMpIHsKCQkJdGhpcy5zdGF0dXMuc2Vla1BlcmNlbnQgPSBzdGF0dXMuc2Vla1BlcmNlbnQ7CgkJCXRoaXMuc3RhdHVzLmN1cnJlbnRQZXJjZW50UmVsYXRpdmUgPSBzdGF0dXMuY3VycmVudFBlcmNlbnRSZWxhdGl2ZTsKCQkJdGhpcy5zdGF0dXMuY3VycmVudFBlcmNlbnRBYnNvbHV0ZSA9IHN0YXR1cy5jdXJyZW50UGVyY2VudEFic29sdXRlOwoJCQl0aGlzLnN0YXR1cy5jdXJyZW50VGltZSA9IHN0YXR1cy5jdXJyZW50VGltZTsKCQkJdGhpcy5zdGF0dXMuZHVyYXRpb24gPSBzdGF0dXMuZHVyYXRpb247CgoJCQl0aGlzLnN0YXR1cy52aWRlb1dpZHRoID0gc3RhdHVzLnZpZGVvV2lkdGg7CgkJCXRoaXMuc3RhdHVzLnZpZGVvSGVpZ2h0ID0gc3RhdHVzLnZpZGVvSGVpZ2h0OwoKCQkJLy8gVGhlIEZsYXNoIGRvZXMgbm90IGdlbmVyYXRlIHRoaXMgaW5mb3JtYXRpb24gaW4gdGhpcyByZWxlYXNlCgkJCXRoaXMuc3RhdHVzLnJlYWR5U3RhdGUgPSA0OyAvLyBzdGF0dXMucmVhZHlTdGF0ZTsKCQkJdGhpcy5zdGF0dXMubmV0d29ya1N0YXRlID0gMDsgLy8gc3RhdHVzLm5ldHdvcmtTdGF0ZTsKCQkJdGhpcy5zdGF0dXMucGxheWJhY2tSYXRlID0gMTsgLy8gc3RhdHVzLnBsYXliYWNrUmF0ZTsKCQkJdGhpcy5zdGF0dXMuZW5kZWQgPSBmYWxzZTsgLy8gc3RhdHVzLmVuZGVkOwoJCX0sCgkJX3VwZGF0ZUJ1dHRvbnM6IGZ1bmN0aW9uKHBsYXlpbmcpIHsKCQkJaWYocGxheWluZyA9PT0gdW5kZWZpbmVkKSB7CgkJCQlwbGF5aW5nID0gIXRoaXMuc3RhdHVzLnBhdXNlZDsKCQkJfSBlbHNlIHsKCQkJCXRoaXMuc3RhdHVzLnBhdXNlZCA9ICFwbGF5aW5nOwoJCQl9CgkJCWlmKHRoaXMuY3NzLmpxLnBsYXkubGVuZ3RoICYmIHRoaXMuY3NzLmpxLnBhdXNlLmxlbmd0aCkgewoJCQkJaWYocGxheWluZykgewoJCQkJCXRoaXMuY3NzLmpxLnBsYXkuaGlkZSgpOwoJCQkJCXRoaXMuY3NzLmpxLnBhdXNlLnNob3coKTsKCQkJCX0gZWxzZSB7CgkJCQkJdGhpcy5jc3MuanEucGxheS5zaG93KCk7CgkJCQkJdGhpcy5jc3MuanEucGF1c2UuaGlkZSgpOwoJCQkJfQoJCQl9CgkJCWlmKHRoaXMuY3NzLmpxLnJlc3RvcmVTY3JlZW4ubGVuZ3RoICYmIHRoaXMuY3NzLmpxLmZ1bGxTY3JlZW4ubGVuZ3RoKSB7CgkJCQlpZih0aGlzLnN0YXR1cy5ub0Z1bGxXaW5kb3cpIHsKCQkJCQl0aGlzLmNzcy5qcS5mdWxsU2NyZWVuLmhpZGUoKTsKCQkJCQl0aGlzLmNzcy5qcS5yZXN0b3JlU2NyZWVuLmhpZGUoKTsKCQkJCX0gZWxzZSBpZih0aGlzLm9wdGlvbnMuZnVsbFdpbmRvdykgewoJCQkJCXRoaXMuY3NzLmpxLmZ1bGxTY3JlZW4uaGlkZSgpOwoJCQkJCXRoaXMuY3NzLmpxLnJlc3RvcmVTY3JlZW4uc2hvdygpOwoJCQkJfSBlbHNlIHsKCQkJCQl0aGlzLmNzcy5qcS5mdWxsU2NyZWVuLnNob3coKTsKCQkJCQl0aGlzLmNzcy5qcS5yZXN0b3JlU2NyZWVuLmhpZGUoKTsKCQkJCX0KCQkJfQoJCQlpZih0aGlzLmNzcy5qcS5yZXBlYXQubGVuZ3RoICYmIHRoaXMuY3NzLmpxLnJlcGVhdE9mZi5sZW5ndGgpIHsKCQkJCWlmKHRoaXMub3B0aW9ucy5sb29wKSB7CgkJCQkJdGhpcy5jc3MuanEucmVwZWF0LmhpZGUoKTsKCQkJCQl0aGlzLmNzcy5qcS5yZXBlYXRPZmYuc2hvdygpOwoJCQkJfSBlbHNlIHsKCQkJCQl0aGlzLmNzcy5qcS5yZXBlYXQuc2hvdygpOwoJCQkJCXRoaXMuY3NzLmpxLnJlcGVhdE9mZi5oaWRlKCk7CgkJCQl9CgkJCX0KCQl9LAoJCV91cGRhdGVJbnRlcmZhY2U6IGZ1bmN0aW9uKCkgewoJCQlpZih0aGlzLmNzcy5qcS5zZWVrQmFyLmxlbmd0aCkgewoJCQkJdGhpcy5jc3MuanEuc2Vla0Jhci53aWR0aCh0aGlzLnN0YXR1cy5zZWVrUGVyY2VudCsiJSIpOwoJCQl9CgkJCWlmKHRoaXMuY3NzLmpxLnBsYXlCYXIubGVuZ3RoKSB7CgkJCQlpZih0aGlzLm9wdGlvbnMuc21vb3RoUGxheUJhcikgewoJCQkJCXRoaXMuY3NzLmpxLnBsYXlCYXIuc3RvcCgpLmFuaW1hdGUoewoJCQkJCQl3aWR0aDogdGhpcy5zdGF0dXMuY3VycmVudFBlcmNlbnRBYnNvbHV0ZSsiJSIKCQkJCQl9LCAyNTAsICJsaW5lYXIiKTsKCQkJCX0gZWxzZSB7CgkJCQkJdGhpcy5jc3MuanEucGxheUJhci53aWR0aCh0aGlzLnN0YXR1cy5jdXJyZW50UGVyY2VudFJlbGF0aXZlKyIlIik7CgkJCQl9CgkJCX0KCQkJaWYodGhpcy5jc3MuanEuY3VycmVudFRpbWUubGVuZ3RoKSB7CgkJCQl0aGlzLmNzcy5qcS5jdXJyZW50VGltZS50ZXh0KHRoaXMuX2NvbnZlcnRUaW1lKHRoaXMuc3RhdHVzLmN1cnJlbnRUaW1lKSk7CgkJCX0KCQkJaWYodGhpcy5jc3MuanEuZHVyYXRpb24ubGVuZ3RoKSB7CgkJCQl0aGlzLmNzcy5qcS5kdXJhdGlvbi50ZXh0KHRoaXMuX2NvbnZlcnRUaW1lKHRoaXMuc3RhdHVzLmR1cmF0aW9uKSk7CgkJCX0KCQl9LAoJCV9jb252ZXJ0VGltZTogQ29udmVydFRpbWUucHJvdG90eXBlLnRpbWUsCgkJX3NlZWtpbmc6IGZ1bmN0aW9uKCkgewoJCQlpZih0aGlzLmNzcy5qcS5zZWVrQmFyLmxlbmd0aCkgewoJCQkJdGhpcy5jc3MuanEuc2Vla0Jhci5hZGRDbGFzcygianAtc2Vla2luZy1iZyIpOwoJCQl9CgkJfSwKCQlfc2Vla2VkOiBmdW5jdGlvbigpIHsKCQkJaWYodGhpcy5jc3MuanEuc2Vla0Jhci5sZW5ndGgpIHsKCQkJCXRoaXMuY3NzLmpxLnNlZWtCYXIucmVtb3ZlQ2xhc3MoImpwLXNlZWtpbmctYmciKTsKCQkJfQoJCX0sCgkJX3Jlc2V0R2F0ZTogZnVuY3Rpb24oKSB7CgkJCXRoaXMuaHRtbC5hdWRpby5nYXRlID0gZmFsc2U7CgkJCXRoaXMuaHRtbC52aWRlby5nYXRlID0gZmFsc2U7CgkJCXRoaXMuZmxhc2guZ2F0ZSA9IGZhbHNlOwoJCX0sCgkJX3Jlc2V0QWN0aXZlOiBmdW5jdGlvbigpIHsKCQkJdGhpcy5odG1sLmFjdGl2ZSA9IGZhbHNlOwoJCQl0aGlzLmZsYXNoLmFjdGl2ZSA9IGZhbHNlOwoJCX0sCgkJc2V0TWVkaWE6IGZ1bmN0aW9uKG1lZGlhKSB7CgkJCgkJCS8qCW1lZGlhW2Zvcm1hdF0gPSBTdHJpbmc6IFVSTCBvZiBmb3JtYXQuIE11c3QgY29udGFpbiBhbGwgb2YgdGhlIHN1cHBsaWVkIG9wdGlvbidzIHZpZGVvIG9yIGF1ZGlvIGZvcm1hdHMuCgkJCSAqCW1lZGlhLnBvc3RlciA9IFN0cmluZzogVmlkZW8gcG9zdGVyIFVSTC4KCQkJICoJbWVkaWEuc3VidGl0bGVzID0gU3RyaW5nOiAqIE5PVCBJTVBMRU1FTlRFRCAqIFVSTCBvZiBzdWJ0aXRsZXMgU1JUIGZpbGUKCQkJICoJbWVkaWEuY2hhcHRlcnMgPSBTdHJpbmc6ICogTk9UIElNUExFTUVOVEVEICogVVJMIG9mIGNoYXB0ZXJzIFNSVCBmaWxlCgkJCSAqCW1lZGlhLnN0cmVhbSA9IEJvb2xlYW46ICogTk9UIElNUExFTUVOVEVEICogRGVzaWduYXRpbmcgYWN0dWFsIG1lZGlhIHN0cmVhbXMuIGllLiwgImZhbHNlL3VuZGVmaW5lZCIgZm9yIGZpbGVzLiBQbGFuIHRvIHJlZnJlc2ggdGhlIGZsYXNoIGV2ZXJ5IHNvIG9mdGVuLgoJCQkgKi8KCgkJCXZhcglzZWxmID0gdGhpcywKCQkJCXN1cHBvcnRlZCA9IGZhbHNlLAoJCQkJcG9zdGVyQ2hhbmdlZCA9IHRoaXMuc3RhdHVzLm1lZGlhLnBvc3RlciAhPT0gbWVkaWEucG9zdGVyOyAvLyBDb21wYXJlIGJlZm9yZSByZXNldC4gSW1wb3J0YW50IGZvciBPU1ggU2FmYXJpIGFzIHRoaXMuaHRtbEVsZW1lbnQucG9zdGVyLnNyYyBpcyBhYnNvbHV0ZSwgZXZlbiBpZiBvcmlnaW5hbCBwb3N0ZXIgVVJMIHdhcyByZWxhdGl2ZS4KCgkJCXRoaXMuX3Jlc2V0TWVkaWEoKTsKCQkJdGhpcy5fcmVzZXRHYXRlKCk7CgkJCXRoaXMuX3Jlc2V0QWN0aXZlKCk7CgoJCQkkLmVhY2godGhpcy5mb3JtYXRzLCBmdW5jdGlvbihmb3JtYXRQcmlvcml0eSwgZm9ybWF0KSB7CgkJCQl2YXIgaXNWaWRlbyA9IHNlbGYuZm9ybWF0W2Zvcm1hdF0ubWVkaWEgPT09ICd2aWRlbyc7CgkJCQkkLmVhY2goc2VsZi5zb2x1dGlvbnMsIGZ1bmN0aW9uKHNvbHV0aW9uUHJpb3JpdHksIHNvbHV0aW9uKSB7CgkJCQkJaWYoc2VsZltzb2x1dGlvbl0uc3VwcG9ydFtmb3JtYXRdICYmIHNlbGYuX3ZhbGlkU3RyaW5nKG1lZGlhW2Zvcm1hdF0pKSB7IC8vIEZvcm1hdCBzdXBwb3J0ZWQgaW4gc29sdXRpb24gYW5kIHVybCBnaXZlbiBmb3IgZm9ybWF0LgoJCQkJCQl2YXIgaXNIdG1sID0gc29sdXRpb24gPT09ICdodG1sJzsKCgkJCQkJCWlmKGlzVmlkZW8pIHsKCQkJCQkJCWlmKGlzSHRtbCkgewoJCQkJCQkJCXNlbGYuaHRtbC52aWRlby5nYXRlID0gdHJ1ZTsKCQkJCQkJCQlzZWxmLl9odG1sX3NldFZpZGVvKG1lZGlhKTsKCQkJCQkJCQlzZWxmLmh0bWwuYWN0aXZlID0gdHJ1ZTsKCQkJCQkJCX0gZWxzZSB7CgkJCQkJCQkJc2VsZi5mbGFzaC5nYXRlID0gdHJ1ZTsKCQkJCQkJCQlzZWxmLl9mbGFzaF9zZXRWaWRlbyhtZWRpYSk7CgkJCQkJCQkJc2VsZi5mbGFzaC5hY3RpdmUgPSB0cnVlOwoJCQkJCQkJfQoJCQkJCQkJaWYoc2VsZi5jc3MuanEudmlkZW9QbGF5Lmxlbmd0aCkgewoJCQkJCQkJCXNlbGYuY3NzLmpxLnZpZGVvUGxheS5zaG93KCk7CgkJCQkJCQl9CgkJCQkJCQlzZWxmLnN0YXR1cy52aWRlbyA9IHRydWU7CgkJCQkJCX0gZWxzZSB7CgkJCQkJCQlpZihpc0h0bWwpIHsKCQkJCQkJCQlzZWxmLmh0bWwuYXVkaW8uZ2F0ZSA9IHRydWU7CgkJCQkJCQkJc2VsZi5faHRtbF9zZXRBdWRpbyhtZWRpYSk7CgkJCQkJCQkJc2VsZi5odG1sLmFjdGl2ZSA9IHRydWU7CgkJCQkJCQl9IGVsc2UgewoJCQkJCQkJCXNlbGYuZmxhc2guZ2F0ZSA9IHRydWU7CgkJCQkJCQkJc2VsZi5fZmxhc2hfc2V0QXVkaW8obWVkaWEpOwoJCQkJCQkJCXNlbGYuZmxhc2guYWN0aXZlID0gdHJ1ZTsKCQkJCQkJCX0KCQkJCQkJCWlmKHNlbGYuY3NzLmpxLnZpZGVvUGxheS5sZW5ndGgpIHsKCQkJCQkJCQlzZWxmLmNzcy5qcS52aWRlb1BsYXkuaGlkZSgpOwoJCQkJCQkJfQoJCQkJCQkJc2VsZi5zdGF0dXMudmlkZW8gPSBmYWxzZTsKCQkJCQkJfQoJCQkJCQkKCQkJCQkJc3VwcG9ydGVkID0gdHJ1ZTsKCQkJCQkJcmV0dXJuIGZhbHNlOyAvLyBFeGl0ICQuZWFjaAoJCQkJCX0KCQkJCX0pOwoJCQkJaWYoc3VwcG9ydGVkKSB7CgkJCQkJcmV0dXJuIGZhbHNlOyAvLyBFeGl0ICQuZWFjaAoJCQkJfQoJCQl9KTsKCgkJCWlmKHN1cHBvcnRlZCkgewoJCQkJaWYoISh0aGlzLnN0YXR1cy5uYXRpdmVWaWRlb0NvbnRyb2xzICYmIHRoaXMuaHRtbC52aWRlby5nYXRlKSkgewoJCQkJCS8vIFNldCBwb3N0ZXIgSU1HIGlmIG5hdGl2ZSB2aWRlbyBjb250cm9scyBhcmUgbm90IGJlaW5nIHVzZWQKCQkJCQkvLyBOb3RlOiBXaXRoIElFIHRoZSBJTUcgb25sb2FkIGV2ZW50IG9jY3VycyBpbW1lZGlhdGVseSB3aGVuIGNhY2hlZC4KCQkJCQkvLyBOb3RlOiBQb3N0ZXIgaGlkZGVuIGJ5IGRlZmF1bHQgaW4gX3Jlc2V0TWVkaWEoKQoJCQkJCWlmKHRoaXMuX3ZhbGlkU3RyaW5nKG1lZGlhLnBvc3RlcikpIHsKCQkJCQkJaWYocG9zdGVyQ2hhbmdlZCkgeyAvLyBTaW5jZSBzb21lIGJyb3dzZXJzIGRvIG5vdCBnZW5lcmF0ZSBpbWcgb25sb2FkIGV2ZW50LgoJCQkJCQkJdGhpcy5odG1sRWxlbWVudC5wb3N0ZXIuc3JjID0gbWVkaWEucG9zdGVyOwoJCQkJCQl9IGVsc2UgewoJCQkJCQkJdGhpcy5pbnRlcm5hbC5wb3N0ZXIuanEuc2hvdygpOwoJCQkJCQl9CgkJCQkJfQoJCQkJfQoJCQkJdGhpcy5zdGF0dXMuc3JjU2V0ID0gdHJ1ZTsKCQkJCXRoaXMuc3RhdHVzLm1lZGlhID0gJC5leHRlbmQoe30sIG1lZGlhKTsKCQkJCXRoaXMuX3VwZGF0ZUJ1dHRvbnMoZmFsc2UpOwoJCQkJdGhpcy5fdXBkYXRlSW50ZXJmYWNlKCk7CgkJCX0gZWxzZSB7IC8vIGpQbGF5ZXIgY2Fubm90IHN1cHBvcnQgYW55IGZvcm1hdHMgcHJvdmlkZWQgaW4gdGhpcyBicm93c2VyCgkJCQkvLyBTZW5kIGFuIGVycm9yIGV2ZW50CgkJCQl0aGlzLl9lcnJvciggewoJCQkJCXR5cGU6ICQualBsYXllci5lcnJvci5OT19TVVBQT1JULAoJCQkJCWNvbnRleHQ6ICJ7c3VwcGxpZWQ6JyIgKyB0aGlzLm9wdGlvbnMuc3VwcGxpZWQgKyAiJ30iLAoJCQkJCW1lc3NhZ2U6ICQualBsYXllci5lcnJvck1zZy5OT19TVVBQT1JULAoJCQkJCWhpbnQ6ICQualBsYXllci5lcnJvckhpbnQuTk9fU1VQUE9SVAoJCQkJfSk7CgkJCX0KCQl9LAoJCV9yZXNldE1lZGlhOiBmdW5jdGlvbigpIHsKCQkJdGhpcy5fcmVzZXRTdGF0dXMoKTsKCQkJdGhpcy5fdXBkYXRlQnV0dG9ucyhmYWxzZSk7CgkJCXRoaXMuX3VwZGF0ZUludGVyZmFjZSgpOwoJCQl0aGlzLl9zZWVrZWQoKTsKCQkJdGhpcy5pbnRlcm5hbC5wb3N0ZXIuanEuaGlkZSgpOwoKCQkJY2xlYXJUaW1lb3V0KHRoaXMuaW50ZXJuYWwuaHRtbERseUNtZElkKTsKCgkJCWlmKHRoaXMuaHRtbC5hY3RpdmUpIHsKCQkJCXRoaXMuX2h0bWxfcmVzZXRNZWRpYSgpOwoJCQl9IGVsc2UgaWYodGhpcy5mbGFzaC5hY3RpdmUpIHsKCQkJCXRoaXMuX2ZsYXNoX3Jlc2V0TWVkaWEoKTsKCQkJfQoJCX0sCgkJY2xlYXJNZWRpYTogZnVuY3Rpb24oKSB7CgkJCXRoaXMuX3Jlc2V0TWVkaWEoKTsKCgkJCWlmKHRoaXMuaHRtbC5hY3RpdmUpIHsKCQkJCXRoaXMuX2h0bWxfY2xlYXJNZWRpYSgpOwoJCQl9IGVsc2UgaWYodGhpcy5mbGFzaC5hY3RpdmUpIHsKCQkJCXRoaXMuX2ZsYXNoX2NsZWFyTWVkaWEoKTsKCQkJfQoKCQkJdGhpcy5fcmVzZXRHYXRlKCk7CgkJCXRoaXMuX3Jlc2V0QWN0aXZlKCk7CgkJfSwKCQlsb2FkOiBmdW5jdGlvbigpIHsKCQkJaWYodGhpcy5zdGF0dXMuc3JjU2V0KSB7CgkJCQlpZih0aGlzLmh0bWwuYWN0aXZlKSB7CgkJCQkJdGhpcy5faHRtbF9sb2FkKCk7CgkJCQl9IGVsc2UgaWYodGhpcy5mbGFzaC5hY3RpdmUpIHsKCQkJCQl0aGlzLl9mbGFzaF9sb2FkKCk7CgkJCQl9CgkJCX0gZWxzZSB7CgkJCQl0aGlzLl91cmxOb3RTZXRFcnJvcigibG9hZCIpOwoJCQl9CgkJfSwKCQlmb2N1czogZnVuY3Rpb24oKSB7CgkJCWlmKHRoaXMub3B0aW9ucy5rZXlFbmFibGVkKSB7CgkJCQkkLmpQbGF5ZXIuZm9jdXMgPSB0aGlzOwoJCQl9CgkJfSwKCQlwbGF5OiBmdW5jdGlvbih0aW1lKSB7CgkJCXRpbWUgPSAodHlwZW9mIHRpbWUgPT09ICJudW1iZXIiKSA/IHRpbWUgOiBOYU47IC8vIFJlbW92ZSBqUXVlcnkgZXZlbnQgZnJvbSBjbGljayBoYW5kbGVyCgkJCWlmKHRoaXMuc3RhdHVzLnNyY1NldCkgewoJCQkJdGhpcy5mb2N1cygpOwoJCQkJaWYodGhpcy5odG1sLmFjdGl2ZSkgewoJCQkJCXRoaXMuX2h0bWxfcGxheSh0aW1lKTsKCQkJCX0gZWxzZSBpZih0aGlzLmZsYXNoLmFjdGl2ZSkgewoJCQkJCXRoaXMuX2ZsYXNoX3BsYXkodGltZSk7CgkJCQl9CgkJCX0gZWxzZSB7CgkJCQl0aGlzLl91cmxOb3RTZXRFcnJvcigicGxheSIpOwoJCQl9CgkJfSwKCQl2aWRlb1BsYXk6IGZ1bmN0aW9uKCkgeyAvLyBIYW5kbGVzIGNsaWNrcyBvbiB0aGUgcGxheSBidXR0b24gb3ZlciB0aGUgdmlkZW8gcG9zdGVyCgkJCXRoaXMucGxheSgpOwoJCX0sCgkJcGF1c2U6IGZ1bmN0aW9uKHRpbWUpIHsKCQkJdGltZSA9ICh0eXBlb2YgdGltZSA9PT0gIm51bWJlciIpID8gdGltZSA6IE5hTjsgLy8gUmVtb3ZlIGpRdWVyeSBldmVudCBmcm9tIGNsaWNrIGhhbmRsZXIKCQkJaWYodGhpcy5zdGF0dXMuc3JjU2V0KSB7CgkJCQlpZih0aGlzLmh0bWwuYWN0aXZlKSB7CgkJCQkJdGhpcy5faHRtbF9wYXVzZSh0aW1lKTsKCQkJCX0gZWxzZSBpZih0aGlzLmZsYXNoLmFjdGl2ZSkgewoJCQkJCXRoaXMuX2ZsYXNoX3BhdXNlKHRpbWUpOwoJCQkJfQoJCQl9IGVsc2UgewoJCQkJdGhpcy5fdXJsTm90U2V0RXJyb3IoInBhdXNlIik7CgkJCX0KCQl9LAoJCXBhdXNlT3RoZXJzOiBmdW5jdGlvbigpIHsKCQkJdmFyIHNlbGYgPSB0aGlzOwoJCQkkLmVhY2godGhpcy5pbnN0YW5jZXMsIGZ1bmN0aW9uKGksIGVsZW1lbnQpIHsKCQkJCWlmKHNlbGYuZWxlbWVudCAhPT0gZWxlbWVudCkgeyAvLyBEbyBub3QgdGhpcyBpbnN0YW5jZS4KCQkJCQlpZihlbGVtZW50LmRhdGEoImpQbGF5ZXIiKS5zdGF0dXMuc3JjU2V0KSB7IC8vIENoZWNrIHRoYXQgbWVkaWEgaXMgc2V0IG90aGVyd2lzZSB3b3VsZCBjYXVzZSBlcnJvciBldmVudC4KCQkJCQkJZWxlbWVudC5qUGxheWVyKCJwYXVzZSIpOwoJCQkJCX0KCQkJCX0KCQkJfSk7CgkJfSwKCQlzdG9wOiBmdW5jdGlvbigpIHsKCQkJaWYodGhpcy5zdGF0dXMuc3JjU2V0KSB7CgkJCQlpZih0aGlzLmh0bWwuYWN0aXZlKSB7CgkJCQkJdGhpcy5faHRtbF9wYXVzZSgwKTsKCQkJCX0gZWxzZSBpZih0aGlzLmZsYXNoLmFjdGl2ZSkgewoJCQkJCXRoaXMuX2ZsYXNoX3BhdXNlKDApOwoJCQkJfQoJCQl9IGVsc2UgewoJCQkJdGhpcy5fdXJsTm90U2V0RXJyb3IoInN0b3AiKTsKCQkJfQoJCX0sCgkJcGxheUhlYWQ6IGZ1bmN0aW9uKHApIHsKCQkJcCA9IHRoaXMuX2xpbWl0VmFsdWUocCwgMCwgMTAwKTsKCQkJaWYodGhpcy5zdGF0dXMuc3JjU2V0KSB7CgkJCQlpZih0aGlzLmh0bWwuYWN0aXZlKSB7CgkJCQkJdGhpcy5faHRtbF9wbGF5SGVhZChwKTsKCQkJCX0gZWxzZSBpZih0aGlzLmZsYXNoLmFjdGl2ZSkgewoJCQkJCXRoaXMuX2ZsYXNoX3BsYXlIZWFkKHApOwoJCQkJfQoJCQl9IGVsc2UgewoJCQkJdGhpcy5fdXJsTm90U2V0RXJyb3IoInBsYXlIZWFkIik7CgkJCX0KCQl9LAoJCV9tdXRlZDogZnVuY3Rpb24obXV0ZWQpIHsKCQkJdGhpcy5vcHRpb25zLm11dGVkID0gbXV0ZWQ7CgkJCWlmKHRoaXMuaHRtbC51c2VkKSB7CgkJCQl0aGlzLl9odG1sX211dGUobXV0ZWQpOwoJCQl9CgkJCWlmKHRoaXMuZmxhc2gudXNlZCkgewoJCQkJdGhpcy5fZmxhc2hfbXV0ZShtdXRlZCk7CgkJCX0KCgkJCS8vIFRoZSBIVE1MIHNvbHV0aW9uIGdlbmVyYXRlcyB0aGlzIGV2ZW50IGZyb20gdGhlIG1lZGlhIGVsZW1lbnQgaXRzZWxmLgoJCQlpZighdGhpcy5odG1sLnZpZGVvLmdhdGUgJiYgIXRoaXMuaHRtbC5hdWRpby5nYXRlKSB7CgkJCQl0aGlzLl91cGRhdGVNdXRlKG11dGVkKTsKCQkJCXRoaXMuX3VwZGF0ZVZvbHVtZSh0aGlzLm9wdGlvbnMudm9sdW1lKTsKCQkJCXRoaXMuX3RyaWdnZXIoJC5qUGxheWVyLmV2ZW50LnZvbHVtZWNoYW5nZSk7CgkJCX0KCQl9LAoJCW11dGU6IGZ1bmN0aW9uKG11dGUpIHsgLy8gbXV0ZSBpcyBlaXRoZXI6IHVuZGVmaW5lZCAodHJ1ZSksIGFuIGV2ZW50IG9iamVjdCAodHJ1ZSkgb3IgYSBib29sZWFuIChtdXRlZCkuCgkJCW11dGUgPSBtdXRlID09PSB1bmRlZmluZWQgPyB0cnVlIDogISFtdXRlOwoJCQl0aGlzLl9tdXRlZChtdXRlKTsKCQl9LAoJCXVubXV0ZTogZnVuY3Rpb24odW5tdXRlKSB7IC8vIHVubXV0ZSBpcyBlaXRoZXI6IHVuZGVmaW5lZCAodHJ1ZSksIGFuIGV2ZW50IG9iamVjdCAodHJ1ZSkgb3IgYSBib29sZWFuICghbXV0ZWQpLgoJCQl1bm11dGUgPSB1bm11dGUgPT09IHVuZGVmaW5lZCA/IHRydWUgOiAhIXVubXV0ZTsKCQkJdGhpcy5fbXV0ZWQoIXVubXV0ZSk7CgkJfSwKCQlfdXBkYXRlTXV0ZTogZnVuY3Rpb24obXV0ZSkgewoJCQlpZihtdXRlID09PSB1bmRlZmluZWQpIHsKCQkJCW11dGUgPSB0aGlzLm9wdGlvbnMubXV0ZWQ7CgkJCX0KCQkJaWYodGhpcy5jc3MuanEubXV0ZS5sZW5ndGggJiYgdGhpcy5jc3MuanEudW5tdXRlLmxlbmd0aCkgewoJCQkJaWYodGhpcy5zdGF0dXMubm9Wb2x1bWUpIHsKCQkJCQl0aGlzLmNzcy5qcS5tdXRlLmhpZGUoKTsKCQkJCQl0aGlzLmNzcy5qcS51bm11dGUuaGlkZSgpOwoJCQkJfSBlbHNlIGlmKG11dGUpIHsKCQkJCQl0aGlzLmNzcy5qcS5tdXRlLmhpZGUoKTsKCQkJCQl0aGlzLmNzcy5qcS51bm11dGUuc2hvdygpOwoJCQkJfSBlbHNlIHsKCQkJCQl0aGlzLmNzcy5qcS5tdXRlLnNob3coKTsKCQkJCQl0aGlzLmNzcy5qcS51bm11dGUuaGlkZSgpOwoJCQkJfQoJCQl9CgkJfSwKCQl2b2x1bWU6IGZ1bmN0aW9uKHYpIHsKCQkJdiA9IHRoaXMuX2xpbWl0VmFsdWUodiwgMCwgMSk7CgkJCXRoaXMub3B0aW9ucy52b2x1bWUgPSB2OwoKCQkJaWYodGhpcy5odG1sLnVzZWQpIHsKCQkJCXRoaXMuX2h0bWxfdm9sdW1lKHYpOwoJCQl9CgkJCWlmKHRoaXMuZmxhc2gudXNlZCkgewoJCQkJdGhpcy5fZmxhc2hfdm9sdW1lKHYpOwoJCQl9CgoJCQkvLyBUaGUgSFRNTCBzb2x1dGlvbiBnZW5lcmF0ZXMgdGhpcyBldmVudCBmcm9tIHRoZSBtZWRpYSBlbGVtZW50IGl0c2VsZi4KCQkJaWYoIXRoaXMuaHRtbC52aWRlby5nYXRlICYmICF0aGlzLmh0bWwuYXVkaW8uZ2F0ZSkgewoJCQkJdGhpcy5fdXBkYXRlVm9sdW1lKHYpOwoJCQkJdGhpcy5fdHJpZ2dlcigkLmpQbGF5ZXIuZXZlbnQudm9sdW1lY2hhbmdlKTsKCQkJfQoJCX0sCgkJdm9sdW1lQmFyOiBmdW5jdGlvbihlKSB7IC8vIEhhbmRsZXMgY2xpY2tzIG9uIHRoZSB2b2x1bWVCYXIKCQkJaWYodGhpcy5jc3MuanEudm9sdW1lQmFyLmxlbmd0aCkgewoJCQkJLy8gVXNpbmcgJChlLmN1cnJlbnRUYXJnZXQpIHRvIGVuYWJsZSBtdWx0aXBsZSB2b2x1bWUgYmFycwoJCQkJdmFyICRiYXIgPSAkKGUuY3VycmVudFRhcmdldCksCgkJCQkJb2Zmc2V0ID0gJGJhci5vZmZzZXQoKSwKCQkJCQl4ID0gZS5wYWdlWCAtIG9mZnNldC5sZWZ0LAoJCQkJCXcgPSAkYmFyLndpZHRoKCksCgkJCQkJeSA9ICRiYXIuaGVpZ2h0KCkgLSBlLnBhZ2VZICsgb2Zmc2V0LnRvcCwKCQkJCQloID0gJGJhci5oZWlnaHQoKTsKCQkJCWlmKHRoaXMub3B0aW9ucy52ZXJ0aWNhbFZvbHVtZSkgewoJCQkJCXRoaXMudm9sdW1lKHkvaCk7CgkJCQl9IGVsc2UgewoJCQkJCXRoaXMudm9sdW1lKHgvdyk7CgkJCQl9CgkJCX0KCQkJaWYodGhpcy5vcHRpb25zLm11dGVkKSB7CgkJCQl0aGlzLl9tdXRlZChmYWxzZSk7CgkJCX0KCQl9LAoJCXZvbHVtZUJhclZhbHVlOiBmdW5jdGlvbigpIHsgLy8gSGFuZGxlcyBjbGlja3Mgb24gdGhlIHZvbHVtZUJhclZhbHVlCgkJCS8vIFRoZSB2b2x1bWVCYXIgaGFuZGxlcyB0aGlzIGV2ZW50IGFzIHRoZSBldmVudCBwcm9wYWdhdGVzIHVwIHRoZSBET00uCgkJfSwKCQlfdXBkYXRlVm9sdW1lOiBmdW5jdGlvbih2KSB7CgkJCWlmKHYgPT09IHVuZGVmaW5lZCkgewoJCQkJdiA9IHRoaXMub3B0aW9ucy52b2x1bWU7CgkJCX0KCQkJdiA9IHRoaXMub3B0aW9ucy5tdXRlZCA/IDAgOiB2OwoKCQkJaWYodGhpcy5zdGF0dXMubm9Wb2x1bWUpIHsKCQkJCWlmKHRoaXMuY3NzLmpxLnZvbHVtZUJhci5sZW5ndGgpIHsKCQkJCQl0aGlzLmNzcy5qcS52b2x1bWVCYXIuaGlkZSgpOwoJCQkJfQoJCQkJaWYodGhpcy5jc3MuanEudm9sdW1lQmFyVmFsdWUubGVuZ3RoKSB7CgkJCQkJdGhpcy5jc3MuanEudm9sdW1lQmFyVmFsdWUuaGlkZSgpOwoJCQkJfQoJCQkJaWYodGhpcy5jc3MuanEudm9sdW1lTWF4Lmxlbmd0aCkgewoJCQkJCXRoaXMuY3NzLmpxLnZvbHVtZU1heC5oaWRlKCk7CgkJCQl9CgkJCX0gZWxzZSB7CgkJCQlpZih0aGlzLmNzcy5qcS52b2x1bWVCYXIubGVuZ3RoKSB7CgkJCQkJdGhpcy5jc3MuanEudm9sdW1lQmFyLnNob3coKTsKCQkJCX0KCQkJCWlmKHRoaXMuY3NzLmpxLnZvbHVtZUJhclZhbHVlLmxlbmd0aCkgewoJCQkJCXRoaXMuY3NzLmpxLnZvbHVtZUJhclZhbHVlLnNob3coKTsKCQkJCQl0aGlzLmNzcy5qcS52b2x1bWVCYXJWYWx1ZVt0aGlzLm9wdGlvbnMudmVydGljYWxWb2x1bWUgPyAiaGVpZ2h0IiA6ICJ3aWR0aCJdKCh2KjEwMCkrIiUiKTsKCQkJCX0KCQkJCWlmKHRoaXMuY3NzLmpxLnZvbHVtZU1heC5sZW5ndGgpIHsKCQkJCQl0aGlzLmNzcy5qcS52b2x1bWVNYXguc2hvdygpOwoJCQkJfQoJCQl9CgkJfSwKCQl2b2x1bWVNYXg6IGZ1bmN0aW9uKCkgeyAvLyBIYW5kbGVzIGNsaWNrcyBvbiB0aGUgdm9sdW1lIG1heAoJCQl0aGlzLnZvbHVtZSgxKTsKCQkJaWYodGhpcy5vcHRpb25zLm11dGVkKSB7CgkJCQl0aGlzLl9tdXRlZChmYWxzZSk7CgkJCX0KCQl9LAoJCV9jc3NTZWxlY3RvckFuY2VzdG9yOiBmdW5jdGlvbihhbmNlc3RvcikgewoJCQl2YXIgc2VsZiA9IHRoaXM7CgkJCXRoaXMub3B0aW9ucy5jc3NTZWxlY3RvckFuY2VzdG9yID0gYW5jZXN0b3I7CgkJCXRoaXMuX3JlbW92ZVVpQ2xhc3MoKTsKCQkJdGhpcy5hbmNlc3RvckpxID0gYW5jZXN0b3IgPyAkKGFuY2VzdG9yKSA6IFtdOyAvLyBXb3VsZCB1c2UgJCgpIGluc3RlYWQgb2YgW10sIGJ1dCBpdCBpcyBvbmx5IDEuNCsKCQkJaWYoYW5jZXN0b3IgJiYgdGhpcy5hbmNlc3RvckpxLmxlbmd0aCAhPT0gMSkgeyAvLyBTbyBlbXB0eSBzdHJpbmdzIGRvIG5vdCBnZW5lcmF0ZSB0aGUgd2FybmluZy4KCQkJCXRoaXMuX3dhcm5pbmcoIHsKCQkJCQl0eXBlOiAkLmpQbGF5ZXIud2FybmluZy5DU1NfU0VMRUNUT1JfQ09VTlQsCgkJCQkJY29udGV4dDogYW5jZXN0b3IsCgkJCQkJbWVzc2FnZTogJC5qUGxheWVyLndhcm5pbmdNc2cuQ1NTX1NFTEVDVE9SX0NPVU5UICsgdGhpcy5hbmNlc3RvckpxLmxlbmd0aCArICIgZm91bmQgZm9yIGNzc1NlbGVjdG9yQW5jZXN0b3IuIiwKCQkJCQloaW50OiAkLmpQbGF5ZXIud2FybmluZ0hpbnQuQ1NTX1NFTEVDVE9SX0NPVU5UCgkJCQl9KTsKCQkJfQoJCQl0aGlzLl9hZGRVaUNsYXNzKCk7CgkJCSQuZWFjaCh0aGlzLm9wdGlvbnMuY3NzU2VsZWN0b3IsIGZ1bmN0aW9uKGZuLCBjc3NTZWwpIHsKCQkJCXNlbGYuX2Nzc1NlbGVjdG9yKGZuLCBjc3NTZWwpOwoJCQl9KTsKCgkJCS8vIFNldCB0aGUgR1VJIHRvIHRoZSBjdXJyZW50IHN0YXRlLgoJCQl0aGlzLl91cGRhdGVJbnRlcmZhY2UoKTsKCQkJdGhpcy5fdXBkYXRlQnV0dG9ucygpOwoJCQl0aGlzLl91cGRhdGVBdXRvaGlkZSgpOwoJCQl0aGlzLl91cGRhdGVWb2x1bWUoKTsKCQkJdGhpcy5fdXBkYXRlTXV0ZSgpOwoJCX0sCgkJX2Nzc1NlbGVjdG9yOiBmdW5jdGlvbihmbiwgY3NzU2VsKSB7CgkJCXZhciBzZWxmID0gdGhpczsKCQkJaWYodHlwZW9mIGNzc1NlbCA9PT0gJ3N0cmluZycpIHsKCQkJCWlmKCQualBsYXllci5wcm90b3R5cGUub3B0aW9ucy5jc3NTZWxlY3Rvcltmbl0pIHsKCQkJCQlpZih0aGlzLmNzcy5qcVtmbl0gJiYgdGhpcy5jc3MuanFbZm5dLmxlbmd0aCkgewoJCQkJCQl0aGlzLmNzcy5qcVtmbl0udW5iaW5kKCIualBsYXllciIpOwoJCQkJCX0KCQkJCQl0aGlzLm9wdGlvbnMuY3NzU2VsZWN0b3JbZm5dID0gY3NzU2VsOwoJCQkJCXRoaXMuY3NzLmNzW2ZuXSA9IHRoaXMub3B0aW9ucy5jc3NTZWxlY3RvckFuY2VzdG9yICsgIiAiICsgY3NzU2VsOwoKCQkJCQlpZihjc3NTZWwpIHsgLy8gQ2hlY2tzIGZvciBlbXB0eSBzdHJpbmcKCQkJCQkJdGhpcy5jc3MuanFbZm5dID0gJCh0aGlzLmNzcy5jc1tmbl0pOwoJCQkJCX0gZWxzZSB7CgkJCQkJCXRoaXMuY3NzLmpxW2ZuXSA9IFtdOyAvLyBUbyBjb21wbHkgd2l0aCB0aGUgY3NzLmpxW2ZuXS5sZW5ndGggY2hlY2sgYmVmb3JlIGl0cyB1c2UuIEFzIG9mIGpRdWVyeSAxLjQgY291bGQgaGF2ZSB1c2VkICQoKSBmb3IgYW4gZW1wdHkgc2V0LiAKCQkJCQl9CgoJCQkJCWlmKHRoaXMuY3NzLmpxW2ZuXS5sZW5ndGgpIHsKCQkJCQkJdmFyIGhhbmRsZXIgPSBmdW5jdGlvbihlKSB7CgkJCQkJCQllLnByZXZlbnREZWZhdWx0KCk7CgkJCQkJCQlzZWxmW2ZuXShlKTsKCQkJCQkJCSQodGhpcykuYmx1cigpOwoJCQkJCQl9OwoJCQkJCQl0aGlzLmNzcy5qcVtmbl0uYmluZCgiY2xpY2sualBsYXllciIsIGhhbmRsZXIpOyAvLyBVc2luZyBqUGxheWVyIG5hbWVzcGFjZQoJCQkJCX0KCgkJCQkJaWYoY3NzU2VsICYmIHRoaXMuY3NzLmpxW2ZuXS5sZW5ndGggIT09IDEpIHsgLy8gU28gZW1wdHkgc3RyaW5ncyBkbyBub3QgZ2VuZXJhdGUgdGhlIHdhcm5pbmcuIGllLiwgdGhleSBqdXN0IHJlbW92ZSB0aGUgb2xkIG9uZS4KCQkJCQkJdGhpcy5fd2FybmluZyggewoJCQkJCQkJdHlwZTogJC5qUGxheWVyLndhcm5pbmcuQ1NTX1NFTEVDVE9SX0NPVU5ULAoJCQkJCQkJY29udGV4dDogdGhpcy5jc3MuY3NbZm5dLAoJCQkJCQkJbWVzc2FnZTogJC5qUGxheWVyLndhcm5pbmdNc2cuQ1NTX1NFTEVDVE9SX0NPVU5UICsgdGhpcy5jc3MuanFbZm5dLmxlbmd0aCArICIgZm91bmQgZm9yICIgKyBmbiArICIgbWV0aG9kLiIsCgkJCQkJCQloaW50OiAkLmpQbGF5ZXIud2FybmluZ0hpbnQuQ1NTX1NFTEVDVE9SX0NPVU5UCgkJCQkJCX0pOwoJCQkJCX0KCQkJCX0gZWxzZSB7CgkJCQkJdGhpcy5fd2FybmluZyggewoJCQkJCQl0eXBlOiAkLmpQbGF5ZXIud2FybmluZy5DU1NfU0VMRUNUT1JfTUVUSE9ELAoJCQkJCQljb250ZXh0OiBmbiwKCQkJCQkJbWVzc2FnZTogJC5qUGxheWVyLndhcm5pbmdNc2cuQ1NTX1NFTEVDVE9SX01FVEhPRCwKCQkJCQkJaGludDogJC5qUGxheWVyLndhcm5pbmdIaW50LkNTU19TRUxFQ1RPUl9NRVRIT0QKCQkJCQl9KTsKCQkJCX0KCQkJfSBlbHNlIHsKCQkJCXRoaXMuX3dhcm5pbmcoIHsKCQkJCQl0eXBlOiAkLmpQbGF5ZXIud2FybmluZy5DU1NfU0VMRUNUT1JfU1RSSU5HLAoJCQkJCWNvbnRleHQ6IGNzc1NlbCwKCQkJCQltZXNzYWdlOiAkLmpQbGF5ZXIud2FybmluZ01zZy5DU1NfU0VMRUNUT1JfU1RSSU5HLAoJCQkJCWhpbnQ6ICQualBsYXllci53YXJuaW5nSGludC5DU1NfU0VMRUNUT1JfU1RSSU5HCgkJCQl9KTsKCQkJfQoJCX0sCgkJc2Vla0JhcjogZnVuY3Rpb24oZSkgeyAvLyBIYW5kbGVzIGNsaWNrcyBvbiB0aGUgc2Vla0JhcgoJCQlpZih0aGlzLmNzcy5qcS5zZWVrQmFyLmxlbmd0aCkgewoJCQkJLy8gVXNpbmcgJChlLmN1cnJlbnRUYXJnZXQpIHRvIGVuYWJsZSBtdWx0aXBsZSBzZWVrIGJhcnMKCQkJCXZhciAkYmFyID0gJChlLmN1cnJlbnRUYXJnZXQpLAoJCQkJCW9mZnNldCA9ICRiYXIub2Zmc2V0KCksCgkJCQkJeCA9IGUucGFnZVggLSBvZmZzZXQubGVmdCwKCQkJCQl3ID0gJGJhci53aWR0aCgpLAoJCQkJCXAgPSAxMDAgKiB4IC8gdzsKCQkJCXRoaXMucGxheUhlYWQocCk7CgkJCX0KCQl9LAoJCXBsYXlCYXI6IGZ1bmN0aW9uKCkgeyAvLyBIYW5kbGVzIGNsaWNrcyBvbiB0aGUgcGxheUJhcgoJCQkvLyBUaGUgc2Vla0JhciBoYW5kbGVzIHRoaXMgZXZlbnQgYXMgdGhlIGV2ZW50IHByb3BhZ2F0ZXMgdXAgdGhlIERPTS4KCQl9LAoJCXJlcGVhdDogZnVuY3Rpb24oKSB7IC8vIEhhbmRsZSBjbGlja3Mgb24gdGhlIHJlcGVhdCBidXR0b24KCQkJdGhpcy5fbG9vcCh0cnVlKTsKCQl9LAoJCXJlcGVhdE9mZjogZnVuY3Rpb24oKSB7IC8vIEhhbmRsZSBjbGlja3Mgb24gdGhlIHJlcGVhdE9mZiBidXR0b24KCQkJdGhpcy5fbG9vcChmYWxzZSk7CgkJfSwKCQlfbG9vcDogZnVuY3Rpb24obG9vcCkgewoJCQlpZih0aGlzLm9wdGlvbnMubG9vcCAhPT0gbG9vcCkgewoJCQkJdGhpcy5vcHRpb25zLmxvb3AgPSBsb29wOwoJCQkJdGhpcy5fdXBkYXRlQnV0dG9ucygpOwoJCQkJdGhpcy5fdHJpZ2dlcigkLmpQbGF5ZXIuZXZlbnQucmVwZWF0KTsKCQkJfQoJCX0sCgoJCS8vIFBsYW4gdG8gcmV2aWV3IHRoZSBjc3NTZWxlY3RvciBtZXRob2QgdG8gY29wZSB3aXRoIG1pc3NpbmcgYXNzb2NpYXRlZCBmdW5jdGlvbnMgYWNjb3JkaW5nbHkuCgoJCWN1cnJlbnRUaW1lOiBmdW5jdGlvbigpIHsgLy8gSGFuZGxlcyBjbGlja3Mgb24gdGhlIHRleHQKCQkJLy8gQWRkZWQgdG8gYXZvaWQgZXJyb3JzIHVzaW5nIGNzc1NlbGVjdG9yIHN5c3RlbSBmb3IgdGhlIHRleHQKCQl9LAoJCWR1cmF0aW9uOiBmdW5jdGlvbigpIHsgLy8gSGFuZGxlcyBjbGlja3Mgb24gdGhlIHRleHQKCQkJLy8gQWRkZWQgdG8gYXZvaWQgZXJyb3JzIHVzaW5nIGNzc1NlbGVjdG9yIHN5c3RlbSBmb3IgdGhlIHRleHQKCQl9LAoJCWd1aTogZnVuY3Rpb24oKSB7IC8vIEhhbmRsZXMgY2xpY2tzIG9uIHRoZSBndWkKCQkJLy8gQWRkZWQgdG8gYXZvaWQgZXJyb3JzIHVzaW5nIGNzc1NlbGVjdG9yIHN5c3RlbSBmb3IgdGhlIGd1aQoJCX0sCgkJbm9Tb2x1dGlvbjogZnVuY3Rpb24oKSB7IC8vIEhhbmRsZXMgY2xpY2tzIG9uIHRoZSBlcnJvciBtZXNzYWdlCgkJCS8vIEFkZGVkIHRvIGF2b2lkIGVycm9ycyB1c2luZyBjc3NTZWxlY3RvciBzeXN0ZW0gZm9yIG5vLXNvbHV0aW9uCgkJfSwKCgkJLy8gT3B0aW9ucyBjb2RlIGFkYXB0ZWQgZnJvbSB1aS53aWRnZXQuanMgKDEuOC43KS4gIE1hZGUgY2hhbmdlcyBzbyB0aGUga2V5IGNhbiB1c2UgZG90IG5vdGF0aW9uLiBUbyBtYXRjaCBwcmV2aW91cyBnZXREYXRhIHNvbHV0aW9uIGluIGpQbGF5ZXIgMS4KCQlvcHRpb246IGZ1bmN0aW9uKGtleSwgdmFsdWUpIHsKCQkJdmFyIG9wdGlvbnMgPSBrZXk7CgoJCQkgLy8gRW5hYmxlcyB1c2U6IG9wdGlvbnMoKS4gIFJldHVybnMgYSBjb3B5IG9mIG9wdGlvbnMgb2JqZWN0CgkJCWlmICggYXJndW1lbnRzLmxlbmd0aCA9PT0gMCApIHsKCQkJCXJldHVybiAkLmV4dGVuZCggdHJ1ZSwge30sIHRoaXMub3B0aW9ucyApOwoJCQl9CgoJCQlpZih0eXBlb2Yga2V5ID09PSAic3RyaW5nIikgewoJCQkJdmFyIGtleXMgPSBrZXkuc3BsaXQoIi4iKTsKCgkJCQkgLy8gRW5hYmxlcyB1c2U6IG9wdGlvbnMoInNvbWVPcHRpb24iKSAgUmV0dXJucyBhIGNvcHkgb2YgdGhlIG9wdGlvbi4gU3VwcG9ydHMgZG90IG5vdGF0aW9uLgoJCQkJaWYodmFsdWUgPT09IHVuZGVmaW5lZCkgewoKCQkJCQl2YXIgb3B0ID0gJC5leHRlbmQodHJ1ZSwge30sIHRoaXMub3B0aW9ucyk7CgkJCQkJZm9yKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHsKCQkJCQkJaWYob3B0W2tleXNbaV1dICE9PSB1bmRlZmluZWQpIHsKCQkJCQkJCW9wdCA9IG9wdFtrZXlzW2ldXTsKCQkJCQkJfSBlbHNlIHsKCQkJCQkJCXRoaXMuX3dhcm5pbmcoIHsKCQkJCQkJCQl0eXBlOiAkLmpQbGF5ZXIud2FybmluZy5PUFRJT05fS0VZLAoJCQkJCQkJCWNvbnRleHQ6IGtleSwKCQkJCQkJCQltZXNzYWdlOiAkLmpQbGF5ZXIud2FybmluZ01zZy5PUFRJT05fS0VZLAoJCQkJCQkJCWhpbnQ6ICQualBsYXllci53YXJuaW5nSGludC5PUFRJT05fS0VZCgkJCQkJCQl9KTsKCQkJCQkJCXJldHVybiB1bmRlZmluZWQ7CgkJCQkJCX0KCQkJCQl9CgkJCQkJcmV0dXJuIG9wdDsKCQkJCX0KCgkJCQkgLy8gRW5hYmxlcyB1c2U6IG9wdGlvbnMoInNvbWVPcHRpb25PYmplY3QiLCBzb21lT2JqZWN0fSkuICBDcmVhdGVzOiB7c29tZU9wdGlvbk9iamVjdDpzb21lT2JqZWN0fQoJCQkJIC8vIEVuYWJsZXMgdXNlOiBvcHRpb25zKCJzb21lT3B0aW9uIiwgc29tZVZhbHVlKS4gIENyZWF0ZXM6IHtzb21lT3B0aW9uOnNvbWVWYWx1ZX0KCQkJCSAvLyBFbmFibGVzIHVzZTogb3B0aW9ucygic29tZU9wdGlvbk9iamVjdC5zb21lT3B0aW9uIiwgc29tZVZhbHVlKS4gIENyZWF0ZXM6IHtzb21lT3B0aW9uT2JqZWN0Ontzb21lT3B0aW9uOnNvbWVWYWx1ZX19CgoJCQkJb3B0aW9ucyA9IHt9OwoJCQkJdmFyIG9wdHMgPSBvcHRpb25zOwoKCQkJCWZvcih2YXIgaiA9IDA7IGogPCBrZXlzLmxlbmd0aDsgaisrKSB7CgkJCQkJaWYoaiA8IGtleXMubGVuZ3RoIC0gMSkgewoJCQkJCQlvcHRzW2tleXNbal1dID0ge307CgkJCQkJCW9wdHMgPSBvcHRzW2tleXNbal1dOwoJCQkJCX0gZWxzZSB7CgkJCQkJCW9wdHNba2V5c1tqXV0gPSB2YWx1ZTsKCQkJCQl9CgkJCQl9CgkJCX0KCgkJCSAvLyBPdGhlcndpc2UgZW5hYmxlcyB1c2U6IG9wdGlvbnMob3B0aW9uT2JqZWN0KS4gIFVzZXMgb3JpZ2luYWwgb2JqZWN0ICh0aGUga2V5KQoKCQkJdGhpcy5fc2V0T3B0aW9ucyhvcHRpb25zKTsKCgkJCXJldHVybiB0aGlzOwoJCX0sCgkJX3NldE9wdGlvbnM6IGZ1bmN0aW9uKG9wdGlvbnMpIHsKCQkJdmFyIHNlbGYgPSB0aGlzOwoJCQkkLmVhY2gob3B0aW9ucywgZnVuY3Rpb24oa2V5LCB2YWx1ZSkgeyAvLyBUaGlzIHN1cHBvcnRzIHRoZSAyIGxldmVsIGRlcHRoIHRoYXQgdGhlIG9wdGlvbnMgb2YgalBsYXllciBoYXMuIFdvdWxkIHJldmlldyBpZiB3ZSBldmVyIG5lZWQgbW9yZSBkZXB0aC4KCQkJCXNlbGYuX3NldE9wdGlvbihrZXksIHZhbHVlKTsKCQkJfSk7CgoJCQlyZXR1cm4gdGhpczsKCQl9LAoJCV9zZXRPcHRpb246IGZ1bmN0aW9uKGtleSwgdmFsdWUpIHsKCQkJdmFyIHNlbGYgPSB0aGlzOwoKCQkJLy8gVGhlIGFiaWxpdHkgdG8gc2V0IG9wdGlvbnMgaXMgbGltaXRlZCBhdCB0aGlzIHRpbWUuCgoJCQlzd2l0Y2goa2V5KSB7CgkJCQljYXNlICJ2b2x1bWUiIDoKCQkJCQl0aGlzLnZvbHVtZSh2YWx1ZSk7CgkJCQkJYnJlYWs7CgkJCQljYXNlICJtdXRlZCIgOgoJCQkJCXRoaXMuX211dGVkKHZhbHVlKTsKCQkJCQlicmVhazsKCQkJCWNhc2UgImNzc1NlbGVjdG9yQW5jZXN0b3IiIDoKCQkJCQl0aGlzLl9jc3NTZWxlY3RvckFuY2VzdG9yKHZhbHVlKTsgLy8gU2V0IGFuZCByZWZyZXNoIGFsbCBhc3NvY2lhdGlvbnMgZm9yIHRoZSBuZXcgYW5jZXN0b3IuCgkJCQkJYnJlYWs7CgkJCQljYXNlICJjc3NTZWxlY3RvciIgOgoJCQkJCSQuZWFjaCh2YWx1ZSwgZnVuY3Rpb24oZm4sIGNzc1NlbCkgewoJCQkJCQlzZWxmLl9jc3NTZWxlY3RvcihmbiwgY3NzU2VsKTsgLy8gTkI6IFRoZSBvcHRpb24gaXMgc2V0IGluc2lkZSB0aGlzIGZ1bmN0aW9uLCBhZnRlciBmdXJ0aGVyIHZhbGlkaXR5IGNoZWNrcy4KCQkJCQl9KTsKCQkJCQlicmVhazsKCQkJCWNhc2UgImZ1bGxTY3JlZW4iIDoKCQkJCQlpZih0aGlzLm9wdGlvbnNba2V5XSAhPT0gdmFsdWUpIHsgLy8gaWYgY2hhbmdlZAoJCQkJCQl2YXIgd2t2ID0gJC5qUGxheWVyLm5hdGl2ZUZlYXR1cmVzLmZ1bGxzY3JlZW4udXNlZC53ZWJraXRWaWRlbzsKCQkJCQkJaWYoIXdrdiB8fCB3a3YgJiYgIXRoaXMuc3RhdHVzLndhaXRGb3JQbGF5KSB7CgkJCQkJCQlpZighd2t2KSB7IC8vIE5vIHNlbnNpYmxlIHdheSB0byB1bnNldCBvcHRpb24gb24gdGhlc2UgZGV2aWNlcy4KCQkJCQkJCQl0aGlzLm9wdGlvbnNba2V5XSA9IHZhbHVlOwoJCQkJCQkJfQoJCQkJCQkJaWYodmFsdWUpIHsKCQkJCQkJCQl0aGlzLl9yZXF1ZXN0RnVsbHNjcmVlbigpOwoJCQkJCQkJfSBlbHNlIHsKCQkJCQkJCQl0aGlzLl9leGl0RnVsbHNjcmVlbigpOwoJCQkJCQkJfQoJCQkJCQkJaWYoIXdrdikgewoJCQkJCQkJCXRoaXMuX3NldE9wdGlvbigiZnVsbFdpbmRvdyIsIHZhbHVlKTsKCQkJCQkJCX0KCQkJCQkJfQoJCQkJCX0KCQkJCQlicmVhazsKCQkJCWNhc2UgImZ1bGxXaW5kb3ciIDoKCQkJCQlpZih0aGlzLm9wdGlvbnNba2V5XSAhPT0gdmFsdWUpIHsgLy8gaWYgY2hhbmdlZAoJCQkJCQl0aGlzLl9yZW1vdmVVaUNsYXNzKCk7CgkJCQkJCXRoaXMub3B0aW9uc1trZXldID0gdmFsdWU7CgkJCQkJCXRoaXMuX3JlZnJlc2hTaXplKCk7CgkJCQkJfQoJCQkJCWJyZWFrOwoJCQkJY2FzZSAic2l6ZSIgOgoJCQkJCWlmKCF0aGlzLm9wdGlvbnMuZnVsbFdpbmRvdyAmJiB0aGlzLm9wdGlvbnNba2V5XS5jc3NDbGFzcyAhPT0gdmFsdWUuY3NzQ2xhc3MpIHsKCQkJCQkJdGhpcy5fcmVtb3ZlVWlDbGFzcygpOwoJCQkJCX0KCQkJCQl0aGlzLm9wdGlvbnNba2V5XSA9ICQuZXh0ZW5kKHt9LCB0aGlzLm9wdGlvbnNba2V5XSwgdmFsdWUpOyAvLyBzdG9yZSBhIG1lcmdlZCBjb3B5IG9mIGl0LCBpbmNhc2Ugbm90IGFsbCBwcm9wZXJ0aWVzIGNoYW5nZWQuCgkJCQkJdGhpcy5fcmVmcmVzaFNpemUoKTsKCQkJCQlicmVhazsKCQkJCWNhc2UgInNpemVGdWxsIiA6CgkJCQkJaWYodGhpcy5vcHRpb25zLmZ1bGxXaW5kb3cgJiYgdGhpcy5vcHRpb25zW2tleV0uY3NzQ2xhc3MgIT09IHZhbHVlLmNzc0NsYXNzKSB7CgkJCQkJCXRoaXMuX3JlbW92ZVVpQ2xhc3MoKTsKCQkJCQl9CgkJCQkJdGhpcy5vcHRpb25zW2tleV0gPSAkLmV4dGVuZCh7fSwgdGhpcy5vcHRpb25zW2tleV0sIHZhbHVlKTsgLy8gc3RvcmUgYSBtZXJnZWQgY29weSBvZiBpdCwgaW5jYXNlIG5vdCBhbGwgcHJvcGVydGllcyBjaGFuZ2VkLgoJCQkJCXRoaXMuX3JlZnJlc2hTaXplKCk7CgkJCQkJYnJlYWs7CgkJCQljYXNlICJhdXRvaGlkZSIgOgoJCQkJCXRoaXMub3B0aW9uc1trZXldID0gJC5leHRlbmQoe30sIHRoaXMub3B0aW9uc1trZXldLCB2YWx1ZSk7IC8vIHN0b3JlIGEgbWVyZ2VkIGNvcHkgb2YgaXQsIGluY2FzZSBub3QgYWxsIHByb3BlcnRpZXMgY2hhbmdlZC4KCQkJCQl0aGlzLl91cGRhdGVBdXRvaGlkZSgpOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSAibG9vcCIgOgoJCQkJCXRoaXMuX2xvb3AodmFsdWUpOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSAibmF0aXZlVmlkZW9Db250cm9scyIgOgoJCQkJCXRoaXMub3B0aW9uc1trZXldID0gJC5leHRlbmQoe30sIHRoaXMub3B0aW9uc1trZXldLCB2YWx1ZSk7IC8vIHN0b3JlIGEgbWVyZ2VkIGNvcHkgb2YgaXQsIGluY2FzZSBub3QgYWxsIHByb3BlcnRpZXMgY2hhbmdlZC4KCQkJCQl0aGlzLnN0YXR1cy5uYXRpdmVWaWRlb0NvbnRyb2xzID0gdGhpcy5fdWFCbG9ja2xpc3QodGhpcy5vcHRpb25zLm5hdGl2ZVZpZGVvQ29udHJvbHMpOwoJCQkJCXRoaXMuX3Jlc3RyaWN0TmF0aXZlVmlkZW9Db250cm9scygpOwoJCQkJCXRoaXMuX3VwZGF0ZU5hdGl2ZVZpZGVvQ29udHJvbHMoKTsKCQkJCQlicmVhazsKCQkJCWNhc2UgIm5vRnVsbFdpbmRvdyIgOgoJCQkJCXRoaXMub3B0aW9uc1trZXldID0gJC5leHRlbmQoe30sIHRoaXMub3B0aW9uc1trZXldLCB2YWx1ZSk7IC8vIHN0b3JlIGEgbWVyZ2VkIGNvcHkgb2YgaXQsIGluY2FzZSBub3QgYWxsIHByb3BlcnRpZXMgY2hhbmdlZC4KCQkJCQl0aGlzLnN0YXR1cy5uYXRpdmVWaWRlb0NvbnRyb2xzID0gdGhpcy5fdWFCbG9ja2xpc3QodGhpcy5vcHRpb25zLm5hdGl2ZVZpZGVvQ29udHJvbHMpOyAvLyBOZWVkIHRvIGNoZWNrIGFnYWluIGFzIG5vRnVsbFdpbmRvdyBjYW4gZGVwZW5kIG9uIHRoaXMgZmxhZyBhbmQgdGhlIHJlc3RyaWN0KCkgY2FuIG92ZXJyaWRlIGl0LgoJCQkJCXRoaXMuc3RhdHVzLm5vRnVsbFdpbmRvdyA9IHRoaXMuX3VhQmxvY2tsaXN0KHRoaXMub3B0aW9ucy5ub0Z1bGxXaW5kb3cpOwoJCQkJCXRoaXMuX3Jlc3RyaWN0TmF0aXZlVmlkZW9Db250cm9scygpOwoJCQkJCXRoaXMuX3VwZGF0ZUJ1dHRvbnMoKTsKCQkJCQlicmVhazsKCQkJCWNhc2UgIm5vVm9sdW1lIiA6CgkJCQkJdGhpcy5vcHRpb25zW2tleV0gPSAkLmV4dGVuZCh7fSwgdGhpcy5vcHRpb25zW2tleV0sIHZhbHVlKTsgLy8gc3RvcmUgYSBtZXJnZWQgY29weSBvZiBpdCwgaW5jYXNlIG5vdCBhbGwgcHJvcGVydGllcyBjaGFuZ2VkLgoJCQkJCXRoaXMuc3RhdHVzLm5vVm9sdW1lID0gdGhpcy5fdWFCbG9ja2xpc3QodGhpcy5vcHRpb25zLm5vVm9sdW1lKTsKCQkJCQl0aGlzLl91cGRhdGVWb2x1bWUoKTsKCQkJCQl0aGlzLl91cGRhdGVNdXRlKCk7CgkJCQkJYnJlYWs7CgkJCQljYXNlICJlbXVsYXRlSHRtbCIgOgoJCQkJCWlmKHRoaXMub3B0aW9uc1trZXldICE9PSB2YWx1ZSkgeyAvLyBUbyBhdm9pZCBtdWx0aXBsZSBldmVudCBoYW5kbGVycyBiZWluZyBjcmVhdGVkLCBpZiB0cnVlIGFscmVhZHkuCgkJCQkJCXRoaXMub3B0aW9uc1trZXldID0gdmFsdWU7CgkJCQkJCWlmKHZhbHVlKSB7CgkJCQkJCQl0aGlzLl9lbXVsYXRlSHRtbEJyaWRnZSgpOwoJCQkJCQl9IGVsc2UgewoJCQkJCQkJdGhpcy5fZGVzdHJveUh0bWxCcmlkZ2UoKTsKCQkJCQkJfQoJCQkJCX0KCQkJCQlicmVhazsKCQkJCWNhc2UgInRpbWVGb3JtYXQiIDoKCQkJCQl0aGlzLm9wdGlvbnNba2V5XSA9ICQuZXh0ZW5kKHt9LCB0aGlzLm9wdGlvbnNba2V5XSwgdmFsdWUpOyAvLyBzdG9yZSBhIG1lcmdlZCBjb3B5IG9mIGl0LCBpbmNhc2Ugbm90IGFsbCBwcm9wZXJ0aWVzIGNoYW5nZWQuCgkJCQkJYnJlYWs7CgkJCQljYXNlICJrZXlFbmFibGVkIiA6CgkJCQkJdGhpcy5vcHRpb25zW2tleV0gPSB2YWx1ZTsKCQkJCQlpZighdmFsdWUgJiYgdGhpcyA9PT0gJC5qUGxheWVyLmZvY3VzKSB7CgkJCQkJCSQualBsYXllci5mb2N1cyA9IG51bGw7CgkJCQkJfQoJCQkJCWJyZWFrOwoJCQkJY2FzZSAia2V5QmluZGluZ3MiIDoKCQkJCQl0aGlzLm9wdGlvbnNba2V5XSA9ICQuZXh0ZW5kKHRydWUsIHt9LCB0aGlzLm9wdGlvbnNba2V5XSwgdmFsdWUpOyAvLyBzdG9yZSBhIG1lcmdlZCBERUVQIGNvcHkgb2YgaXQsIGluY2FzZSBub3QgYWxsIHByb3BlcnRpZXMgY2hhbmdlZC4KCQkJCQlicmVhazsKCQkJCWNhc2UgImF1ZGlvRnVsbFNjcmVlbiIgOgoJCQkJCXRoaXMub3B0aW9uc1trZXldID0gdmFsdWU7CgkJCQkJYnJlYWs7CgkJCX0KCgkJCXJldHVybiB0aGlzOwoJCX0sCgkJLy8gRW5kIG9mOiAoT3B0aW9ucyBjb2RlIGFkYXB0ZWQgZnJvbSB1aS53aWRnZXQuanMpCgoJCV9yZWZyZXNoU2l6ZTogZnVuY3Rpb24oKSB7CgkJCXRoaXMuX3NldFNpemUoKTsgLy8gdXBkYXRlIHN0YXR1cyBhbmQgalBsYXllciBlbGVtZW50IHNpemUKCQkJdGhpcy5fYWRkVWlDbGFzcygpOyAvLyB1cGRhdGUgdGhlIHVpIGNsYXNzCgkJCXRoaXMuX3VwZGF0ZVNpemUoKTsgLy8gdXBkYXRlIGludGVybmFsIHNpemVzCgkJCXRoaXMuX3VwZGF0ZUJ1dHRvbnMoKTsKCQkJdGhpcy5fdXBkYXRlQXV0b2hpZGUoKTsKCQkJdGhpcy5fdHJpZ2dlcigkLmpQbGF5ZXIuZXZlbnQucmVzaXplKTsKCQl9LAoJCV9zZXRTaXplOiBmdW5jdGlvbigpIHsKCQkJLy8gRGV0ZXJtaW5lIHRoZSBjdXJyZW50IHNpemUgZnJvbSB0aGUgb3B0aW9ucwoJCQlpZih0aGlzLm9wdGlvbnMuZnVsbFdpbmRvdykgewoJCQkJdGhpcy5zdGF0dXMud2lkdGggPSB0aGlzLm9wdGlvbnMuc2l6ZUZ1bGwud2lkdGg7CgkJCQl0aGlzLnN0YXR1cy5oZWlnaHQgPSB0aGlzLm9wdGlvbnMuc2l6ZUZ1bGwuaGVpZ2h0OwoJCQkJdGhpcy5zdGF0dXMuY3NzQ2xhc3MgPSB0aGlzLm9wdGlvbnMuc2l6ZUZ1bGwuY3NzQ2xhc3M7CgkJCX0gZWxzZSB7CgkJCQl0aGlzLnN0YXR1cy53aWR0aCA9IHRoaXMub3B0aW9ucy5zaXplLndpZHRoOwoJCQkJdGhpcy5zdGF0dXMuaGVpZ2h0ID0gdGhpcy5vcHRpb25zLnNpemUuaGVpZ2h0OwoJCQkJdGhpcy5zdGF0dXMuY3NzQ2xhc3MgPSB0aGlzLm9wdGlvbnMuc2l6ZS5jc3NDbGFzczsKCQkJfQoKCQkJLy8gU2V0IHRoZSBzaXplIG9mIHRoZSBqUGxheWVyIGFyZWEuCgkJCXRoaXMuZWxlbWVudC5jc3Moeyd3aWR0aCc6IHRoaXMuc3RhdHVzLndpZHRoLCAnaGVpZ2h0JzogdGhpcy5zdGF0dXMuaGVpZ2h0fSk7CgkJfSwKCQlfYWRkVWlDbGFzczogZnVuY3Rpb24oKSB7CgkJCWlmKHRoaXMuYW5jZXN0b3JKcS5sZW5ndGgpIHsKCQkJCXRoaXMuYW5jZXN0b3JKcS5hZGRDbGFzcyh0aGlzLnN0YXR1cy5jc3NDbGFzcyk7CgkJCX0KCQl9LAoJCV9yZW1vdmVVaUNsYXNzOiBmdW5jdGlvbigpIHsKCQkJaWYodGhpcy5hbmNlc3RvckpxLmxlbmd0aCkgewoJCQkJdGhpcy5hbmNlc3RvckpxLnJlbW92ZUNsYXNzKHRoaXMuc3RhdHVzLmNzc0NsYXNzKTsKCQkJfQoJCX0sCgkJX3VwZGF0ZVNpemU6IGZ1bmN0aW9uKCkgewoJCQkvLyBUaGUgcG9zdGVyIHVzZXMgc2hvdy9oaWRlIHNvIGNhbiBzaW1wbHkgcmVzaXplIGl0LgoJCQl0aGlzLmludGVybmFsLnBvc3Rlci5qcS5jc3Moeyd3aWR0aCc6IHRoaXMuc3RhdHVzLndpZHRoLCAnaGVpZ2h0JzogdGhpcy5zdGF0dXMuaGVpZ2h0fSk7CgoJCQkvLyBWaWRlbyBodG1sIG9yIGZsYXNoIHJlc2l6ZWQgaWYgbmVjZXNzYXJ5IGF0IHRoaXMgdGltZSwgb3IgaWYgbmF0aXZlIHZpZGVvIGNvbnRyb2xzIGJlaW5nIHVzZWQuCgkJCWlmKCF0aGlzLnN0YXR1cy53YWl0Rm9yUGxheSAmJiB0aGlzLmh0bWwuYWN0aXZlICYmIHRoaXMuc3RhdHVzLnZpZGVvIHx8IHRoaXMuaHRtbC52aWRlby5hdmFpbGFibGUgJiYgdGhpcy5odG1sLnVzZWQgJiYgdGhpcy5zdGF0dXMubmF0aXZlVmlkZW9Db250cm9scykgewoJCQkJdGhpcy5pbnRlcm5hbC52aWRlby5qcS5jc3Moeyd3aWR0aCc6IHRoaXMuc3RhdHVzLndpZHRoLCAnaGVpZ2h0JzogdGhpcy5zdGF0dXMuaGVpZ2h0fSk7CgkJCX0KCQkJZWxzZSBpZighdGhpcy5zdGF0dXMud2FpdEZvclBsYXkgJiYgdGhpcy5mbGFzaC5hY3RpdmUgJiYgdGhpcy5zdGF0dXMudmlkZW8pIHsKCQkJCXRoaXMuaW50ZXJuYWwuZmxhc2guanEuY3NzKHsnd2lkdGgnOiB0aGlzLnN0YXR1cy53aWR0aCwgJ2hlaWdodCc6IHRoaXMuc3RhdHVzLmhlaWdodH0pOwoJCQl9CgkJfSwKCQlfdXBkYXRlQXV0b2hpZGU6IGZ1bmN0aW9uKCkgewoJCQl2YXIJc2VsZiA9IHRoaXMsCgkJCQlldmVudCA9ICJtb3VzZW1vdmUualBsYXllciIsCgkJCQluYW1lc3BhY2UgPSAiLmpQbGF5ZXJBdXRvaGlkZSIsCgkJCQlldmVudFR5cGUgPSBldmVudCArIG5hbWVzcGFjZSwKCQkJCWhhbmRsZXIgPSBmdW5jdGlvbigpIHsKCQkJCQlzZWxmLmNzcy5qcS5ndWkuZmFkZUluKHNlbGYub3B0aW9ucy5hdXRvaGlkZS5mYWRlSW4sIGZ1bmN0aW9uKCkgewoJCQkJCQljbGVhclRpbWVvdXQoc2VsZi5pbnRlcm5hbC5hdXRvaGlkZUlkKTsKCQkJCQkJc2VsZi5pbnRlcm5hbC5hdXRvaGlkZUlkID0gc2V0VGltZW91dCggZnVuY3Rpb24oKSB7CgkJCQkJCQlzZWxmLmNzcy5qcS5ndWkuZmFkZU91dChzZWxmLm9wdGlvbnMuYXV0b2hpZGUuZmFkZU91dCk7CgkJCQkJCX0sIHNlbGYub3B0aW9ucy5hdXRvaGlkZS5ob2xkKTsKCQkJCQl9KTsKCQkJCX07CgoJCQlpZih0aGlzLmNzcy5qcS5ndWkubGVuZ3RoKSB7CgoJCQkJLy8gRW5kIGFuaW1hdGlvbnMgZmlyc3Qgc28gdGhhdCBpdHMgY2FsbGJhY2sgaXMgZXhlY3V0ZWQgbm93LgoJCQkJLy8gT3RoZXJ3aXNlIGFuIGluIHByb2dyZXNzIGZhZGVJbiBhbmltYXRpb24gc3RpbGwgaGFzIHRoZSBjYWxsYmFjayB0byBmYWRlT3V0IGFnYWluLgoJCQkJdGhpcy5jc3MuanEuZ3VpLnN0b3AodHJ1ZSwgdHJ1ZSk7CgoJCQkJLy8gUmVtb3ZlcyB0aGUgZmFkZU91dCBvcGVyYXRpb24gZnJvbSB0aGUgZmFkZUluIGNhbGxiYWNrLgoJCQkJY2xlYXJUaW1lb3V0KHRoaXMuaW50ZXJuYWwuYXV0b2hpZGVJZCk7CgoJCQkJdGhpcy5lbGVtZW50LnVuYmluZChuYW1lc3BhY2UpOwoJCQkJdGhpcy5jc3MuanEuZ3VpLnVuYmluZChuYW1lc3BhY2UpOwoKCQkJCWlmKCF0aGlzLnN0YXR1cy5uYXRpdmVWaWRlb0NvbnRyb2xzKSB7CgkJCQkJaWYodGhpcy5vcHRpb25zLmZ1bGxXaW5kb3cgJiYgdGhpcy5vcHRpb25zLmF1dG9oaWRlLmZ1bGwgfHwgIXRoaXMub3B0aW9ucy5mdWxsV2luZG93ICYmIHRoaXMub3B0aW9ucy5hdXRvaGlkZS5yZXN0b3JlZCkgewoJCQkJCQl0aGlzLmVsZW1lbnQuYmluZChldmVudFR5cGUsIGhhbmRsZXIpOwoJCQkJCQl0aGlzLmNzcy5qcS5ndWkuYmluZChldmVudFR5cGUsIGhhbmRsZXIpOwoJCQkJCQl0aGlzLmNzcy5qcS5ndWkuaGlkZSgpOwoJCQkJCX0gZWxzZSB7CgkJCQkJCXRoaXMuY3NzLmpxLmd1aS5zaG93KCk7CgkJCQkJfQoJCQkJfSBlbHNlIHsKCQkJCQl0aGlzLmNzcy5qcS5ndWkuaGlkZSgpOwoJCQkJfQoJCQl9CgkJfSwKCQlmdWxsU2NyZWVuOiBmdW5jdGlvbigpIHsKCQkJdGhpcy5fc2V0T3B0aW9uKCJmdWxsU2NyZWVuIiwgdHJ1ZSk7CgkJfSwKCQlyZXN0b3JlU2NyZWVuOiBmdW5jdGlvbigpIHsKCQkJdGhpcy5fc2V0T3B0aW9uKCJmdWxsU2NyZWVuIiwgZmFsc2UpOwoJCX0sCgkJX2Z1bGxzY3JlZW5BZGRFdmVudExpc3RlbmVyczogZnVuY3Rpb24oKSB7CgkJCXZhciBzZWxmID0gdGhpcywKCQkJCWZzID0gJC5qUGxheWVyLm5hdGl2ZUZlYXR1cmVzLmZ1bGxzY3JlZW47CgoJCQlpZihmcy5hcGkuZnVsbHNjcmVlbkVuYWJsZWQpIHsKCQkJCWlmKGZzLmV2ZW50LmZ1bGxzY3JlZW5jaGFuZ2UpIHsKCQkJCQkvLyBDcmVhdGUgdGhlIGV2ZW50IGhhbmRsZXIgZnVuY3Rpb24gYW5kIHN0b3JlIGl0IGZvciByZW1vdmFsLgoJCQkJCWlmKHR5cGVvZiB0aGlzLmludGVybmFsLmZ1bGxzY3JlZW5jaGFuZ2VIYW5kbGVyICE9PSAnZnVuY3Rpb24nKSB7CgkJCQkJCXRoaXMuaW50ZXJuYWwuZnVsbHNjcmVlbmNoYW5nZUhhbmRsZXIgPSBmdW5jdGlvbigpIHsKCQkJCQkJCXNlbGYuX2Z1bGxzY3JlZW5jaGFuZ2UoKTsKCQkJCQkJfTsKCQkJCQl9CgkJCQkJZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihmcy5ldmVudC5mdWxsc2NyZWVuY2hhbmdlLCB0aGlzLmludGVybmFsLmZ1bGxzY3JlZW5jaGFuZ2VIYW5kbGVyLCBmYWxzZSk7CgkJCQl9CgkJCQkvLyBObyBwb2ludCBjcmVhdGluZyBoYW5kbGVyIGZvciBmdWxsc2NyZWVuZXJyb3IuCgkJCQkvLyBFaXRoZXIgbG9naWMgYXZvaWRzIGZ1bGxzY3JlZW4gb2NjdXJyaW5nICh3M2MvbW96KSwgb3IgdGhlaXIgaXMgbm8gZXZlbnQgb24gdGhlIGJyb3dzZXIgKHdlYmtpdCkuCgkJCX0KCQl9LAoJCV9mdWxsc2NyZWVuUmVtb3ZlRXZlbnRMaXN0ZW5lcnM6IGZ1bmN0aW9uKCkgewoJCQl2YXIgZnMgPSAkLmpQbGF5ZXIubmF0aXZlRmVhdHVyZXMuZnVsbHNjcmVlbjsKCQkJaWYodGhpcy5pbnRlcm5hbC5mdWxsc2NyZWVuY2hhbmdlSGFuZGxlcikgewoJCQkJZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihmcy5ldmVudC5mdWxsc2NyZWVuY2hhbmdlLCB0aGlzLmludGVybmFsLmZ1bGxzY3JlZW5jaGFuZ2VIYW5kbGVyLCBmYWxzZSk7CgkJCX0KCQl9LAoJCV9mdWxsc2NyZWVuY2hhbmdlOiBmdW5jdGlvbigpIHsKCQkJLy8gSWYgbm90aGluZyBpcyBmdWxsc2NyZWVuLCB0aGVuIHdlIGNhbm5vdCBiZSBpbiBmdWxsc2NyZWVuIG1vZGUuCgkJCWlmKHRoaXMub3B0aW9ucy5mdWxsU2NyZWVuICYmICEkLmpQbGF5ZXIubmF0aXZlRmVhdHVyZXMuZnVsbHNjcmVlbi5hcGkuZnVsbHNjcmVlbkVsZW1lbnQoKSkgewoJCQkJdGhpcy5fc2V0T3B0aW9uKCJmdWxsU2NyZWVuIiwgZmFsc2UpOwoJCQl9CgkJfSwKCQlfcmVxdWVzdEZ1bGxzY3JlZW46IGZ1bmN0aW9uKCkgewoJCQkvLyBFaXRoZXIgdGhlIGNvbnRhaW5lciBvciB0aGUgalBsYXllciBkaXYKCQkJdmFyIGUgPSB0aGlzLmFuY2VzdG9ySnEubGVuZ3RoID8gdGhpcy5hbmNlc3RvckpxWzBdIDogdGhpcy5lbGVtZW50WzBdLAoJCQkJZnMgPSAkLmpQbGF5ZXIubmF0aXZlRmVhdHVyZXMuZnVsbHNjcmVlbjsKCgkJCS8vIFRoaXMgbWV0aG9kIG5lZWRzIHRoZSB2aWRlbyBlbGVtZW50LiBGb3IgaU9TIGFuZCBBbmRyb2lkLgoJCQlpZihmcy51c2VkLndlYmtpdFZpZGVvKSB7CgkJCQllID0gdGhpcy5odG1sRWxlbWVudC52aWRlbzsKCQkJfQoKCQkJaWYoZnMuYXBpLmZ1bGxzY3JlZW5FbmFibGVkKSB7CgkJCQlmcy5hcGkucmVxdWVzdEZ1bGxzY3JlZW4oZSk7CgkJCX0KCQl9LAoJCV9leGl0RnVsbHNjcmVlbjogZnVuY3Rpb24oKSB7CgoJCQl2YXIgZnMgPSAkLmpQbGF5ZXIubmF0aXZlRmVhdHVyZXMuZnVsbHNjcmVlbiwKCQkJCWU7CgoJCQkvLyBUaGlzIG1ldGhvZCBuZWVkcyB0aGUgdmlkZW8gZWxlbWVudC4gRm9yIGlPUyBhbmQgQW5kcm9pZC4KCQkJaWYoZnMudXNlZC53ZWJraXRWaWRlbykgewoJCQkJZSA9IHRoaXMuaHRtbEVsZW1lbnQudmlkZW87CgkJCX0KCgkJCWlmKGZzLmFwaS5mdWxsc2NyZWVuRW5hYmxlZCkgewoJCQkJZnMuYXBpLmV4aXRGdWxsc2NyZWVuKGUpOwoJCQl9CgkJfSwKCQlfaHRtbF9pbml0TWVkaWE6IGZ1bmN0aW9uKG1lZGlhKSB7CgkJCS8vIFJlbW92ZSBhbnkgZXhpc3RpbmcgdHJhY2sgZWxlbWVudHMKCQkJdmFyICRtZWRpYSA9ICQodGhpcy5odG1sRWxlbWVudC5tZWRpYSkuZW1wdHkoKTsKCgkJCS8vIENyZWF0ZSBhbnkgdHJhY2sgZWxlbWVudHMgZ2l2ZW4gd2l0aCB0aGUgbWVkaWEsIGFzIGFuIEFycmF5IG9mIHRyYWNrIE9iamVjdHMuCgkJCSQuZWFjaChtZWRpYS50cmFjayB8fCBbXSwgZnVuY3Rpb24oaSx2KSB7CgkJCQl2YXIgdHJhY2sgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cmFjaycpOwoJCQkJdHJhY2suc2V0QXR0cmlidXRlKCJraW5kIiwgdi5raW5kID8gdi5raW5kIDogIiIpOwoJCQkJdHJhY2suc2V0QXR0cmlidXRlKCJzcmMiLCB2LnNyYyA/IHYuc3JjIDogIiIpOwoJCQkJdHJhY2suc2V0QXR0cmlidXRlKCJzcmNsYW5nIiwgdi5zcmNsYW5nID8gdi5zcmNsYW5nIDogIiIpOwoJCQkJdHJhY2suc2V0QXR0cmlidXRlKCJsYWJlbCIsIHYubGFiZWwgPyB2LmxhYmVsIDogIiIpOwoJCQkJaWYodi5kZWYpIHsKCQkJCQl0cmFjay5zZXRBdHRyaWJ1dGUoImRlZmF1bHQiLCB2LmRlZik7CgkJCQl9CgkJCQkkbWVkaWEuYXBwZW5kKHRyYWNrKTsKCQkJfSk7CgoJCQl0aGlzLmh0bWxFbGVtZW50Lm1lZGlhLnNyYyA9IHRoaXMuc3RhdHVzLnNyYzsKCgkJCWlmKHRoaXMub3B0aW9ucy5wcmVsb2FkICE9PSAnbm9uZScpIHsKCQkJCXRoaXMuX2h0bWxfbG9hZCgpOyAvLyBTZWUgZnVuY3Rpb24gZm9yIGNvbW1lbnRzCgkJCX0KCQkJdGhpcy5fdHJpZ2dlcigkLmpQbGF5ZXIuZXZlbnQudGltZXVwZGF0ZSk7IC8vIFRoZSBmbGFzaCBnZW5lcmF0ZXMgdGhpcyBldmVudCBmb3IgaXRzIHNvbHV0aW9uLgoJCX0sCgkJX2h0bWxfc2V0Rm9ybWF0OiBmdW5jdGlvbihtZWRpYSkgewoJCQl2YXIgc2VsZiA9IHRoaXM7CgkJCS8vIEFsd2F5cyBmaW5kcyBhIGZvcm1hdCBkdWUgdG8gY2hlY2tzIGluIHNldE1lZGlhKCkKCQkJJC5lYWNoKHRoaXMuZm9ybWF0cywgZnVuY3Rpb24ocHJpb3JpdHksIGZvcm1hdCkgewoJCQkJaWYoc2VsZi5odG1sLnN1cHBvcnRbZm9ybWF0XSAmJiBtZWRpYVtmb3JtYXRdKSB7CgkJCQkJc2VsZi5zdGF0dXMuc3JjID0gbWVkaWFbZm9ybWF0XTsKCQkJCQlzZWxmLnN0YXR1cy5mb3JtYXRbZm9ybWF0XSA9IHRydWU7CgkJCQkJc2VsZi5zdGF0dXMuZm9ybWF0VHlwZSA9IGZvcm1hdDsKCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQl9CgkJCX0pOwoJCX0sCgkJX2h0bWxfc2V0QXVkaW86IGZ1bmN0aW9uKG1lZGlhKSB7CgkJCXRoaXMuX2h0bWxfc2V0Rm9ybWF0KG1lZGlhKTsKCQkJdGhpcy5odG1sRWxlbWVudC5tZWRpYSA9IHRoaXMuaHRtbEVsZW1lbnQuYXVkaW87CgkJCXRoaXMuX2h0bWxfaW5pdE1lZGlhKG1lZGlhKTsKCQl9LAoJCV9odG1sX3NldFZpZGVvOiBmdW5jdGlvbihtZWRpYSkgewoJCQl0aGlzLl9odG1sX3NldEZvcm1hdChtZWRpYSk7CgkJCWlmKHRoaXMuc3RhdHVzLm5hdGl2ZVZpZGVvQ29udHJvbHMpIHsKCQkJCXRoaXMuaHRtbEVsZW1lbnQudmlkZW8ucG9zdGVyID0gdGhpcy5fdmFsaWRTdHJpbmcobWVkaWEucG9zdGVyKSA/IG1lZGlhLnBvc3RlciA6ICIiOwoJCQl9CgkJCXRoaXMuaHRtbEVsZW1lbnQubWVkaWEgPSB0aGlzLmh0bWxFbGVtZW50LnZpZGVvOwoJCQl0aGlzLl9odG1sX2luaXRNZWRpYShtZWRpYSk7CgkJfSwKCQlfaHRtbF9yZXNldE1lZGlhOiBmdW5jdGlvbigpIHsKCQkJaWYodGhpcy5odG1sRWxlbWVudC5tZWRpYSkgewoJCQkJaWYodGhpcy5odG1sRWxlbWVudC5tZWRpYS5pZCA9PT0gdGhpcy5pbnRlcm5hbC52aWRlby5pZCAmJiAhdGhpcy5zdGF0dXMubmF0aXZlVmlkZW9Db250cm9scykgewoJCQkJCXRoaXMuaW50ZXJuYWwudmlkZW8uanEuY3NzKHsnd2lkdGgnOicwcHgnLCAnaGVpZ2h0JzonMHB4J30pOwoJCQkJfQoJCQkJdGhpcy5odG1sRWxlbWVudC5tZWRpYS5wYXVzZSgpOwoJCQl9CgkJfSwKCQlfaHRtbF9jbGVhck1lZGlhOiBmdW5jdGlvbigpIHsKCQkJaWYodGhpcy5odG1sRWxlbWVudC5tZWRpYSkgewoJCQkJdGhpcy5odG1sRWxlbWVudC5tZWRpYS5zcmMgPSAiYWJvdXQ6YmxhbmsiOwoJCQkJLy8gVGhlIGZvbGxvd2luZyBsb2FkKCkgaXMgb25seSByZXF1aXJlZCBmb3IgRmlyZWZveCAzLjYgKFBvd2VyTWFjcykuCgkJCQkvLyBSZWNlbnQgSFRNbDUgYnJvd3NlcnMgb25seSByZXF1aXJlIHRoZSBzcmMgY2hhbmdlLiBEdWUgdG8gY2hhbmdlcyBpbiBXM0Mgc3BlYyBhbmQgbG9hZCgpIGVmZmVjdC4KCQkJCXRoaXMuaHRtbEVsZW1lbnQubWVkaWEubG9hZCgpOyAvLyBTdG9wcyBhbiBvbGQsICJpbiBwcm9ncmVzcyIgZG93bmxvYWQgZnJvbSBjb250aW51aW5nIHRoZSBkb3dubG9hZC4gVHJpZ2dlcnMgdGhlIGxvYWRzdGFydCwgZXJyb3IgYW5kIGVtcHRpZWQgZXZlbnRzLCBkdWUgdG8gdGhlIGVtcHR5IHNyYy4gQWxzbyBhbiBhYm9ydCBldmVudCBpZiBhIGRvd25sb2FkIHdhcyBpbiBwcm9ncmVzcy4KCQkJfQoJCX0sCgkJX2h0bWxfbG9hZDogZnVuY3Rpb24oKSB7CgkJCS8vIFRoaXMgZnVuY3Rpb24gcmVtYWlucyB0byBhbGxvdyB0aGUgZWFybHkgSFRNTDUgYnJvd3NlcnMgdG8gd29yaywgc3VjaCBhcyBGaXJlZm94IDMuNgoJCQkvLyBBIGNoYW5nZSBpbiB0aGUgVzNDIHNwZWMgZm9yIHRoZSBtZWRpYS5sb2FkKCkgY29tbWFuZCBtZWFucyB0aGF0IHRoaXMgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeS4KCQkJLy8gVGhpcyBjb21tYW5kIHNob3VsZCBiZSByZW1vdmVkIGFuZCBhY3R1YWxseSBjYXVzZXMgbWlub3IgdW5kZXNpcmFibGUgZWZmZWN0cyBvbiBzb21lIGJyb3dzZXJzLiBTdWNoIGFzIGxvYWRpbmcgdGhlIHdob2xlIGZpbGUgYW5kIG5vdCBvbmx5IHRoZSBtZXRhZGF0YS4KCQkJaWYodGhpcy5zdGF0dXMud2FpdEZvckxvYWQpIHsKCQkJCXRoaXMuc3RhdHVzLndhaXRGb3JMb2FkID0gZmFsc2U7CgkJCQl0aGlzLmh0bWxFbGVtZW50Lm1lZGlhLmxvYWQoKTsKCQkJfQoJCQljbGVhclRpbWVvdXQodGhpcy5pbnRlcm5hbC5odG1sRGx5Q21kSWQpOwoJCX0sCgkJX2h0bWxfcGxheTogZnVuY3Rpb24odGltZSkgewoJCQl2YXIgc2VsZiA9IHRoaXMsCgkJCQltZWRpYSA9IHRoaXMuaHRtbEVsZW1lbnQubWVkaWE7CgoJCQl0aGlzLl9odG1sX2xvYWQoKTsgLy8gTG9hZHMgaWYgcmVxdWlyZWQgYW5kIGNsZWFycyBhbnkgZGVsYXllZCBjb21tYW5kcy4KCgkJCWlmKCFpc05hTih0aW1lKSkgewoKCQkJCS8vIEF0dGVtcHQgdG8gcGxheSBpdCwgc2luY2UgaU9TIGhhcyBiZWVuIGlnbm9yaW5nIGNvbW1hbmRzCgkJCQlpZih0aGlzLmludGVybmFsLmNtZHNJZ25vcmVkKSB7CgkJCQkJbWVkaWEucGxheSgpOwoJCQkJfQoKCQkJCXRyeSB7CgkJCQkJLy8gIW1lZGlhLnNlZWthYmxlIGlzIGZvciBvbGQgSFRNTDUgYnJvd3NlcnMsIGxpa2UgRmlyZWZveCAzLjYuCgkJCQkJLy8gQ2hlY2tpbmcgc2Vla2FibGUubGVuZ3RoIGlzIGltcG9ydGFudCBmb3IgaU9TNiB0byB3b3JrIHdpdGggc2V0TWVkaWEoKS5wbGF5KHRpbWUpCgkJCQkJaWYoIW1lZGlhLnNlZWthYmxlIHx8IHR5cGVvZiBtZWRpYS5zZWVrYWJsZSA9PT0gIm9iamVjdCIgJiYgbWVkaWEuc2Vla2FibGUubGVuZ3RoID4gMCkgewoJCQkJCQltZWRpYS5jdXJyZW50VGltZSA9IHRpbWU7CgkJCQkJCW1lZGlhLnBsYXkoKTsKCQkJCQl9IGVsc2UgewoJCQkJCQl0aHJvdyAxOwoJCQkJCX0KCQkJCX0gY2F0Y2goZXJyKSB7CgkJCQkJdGhpcy5pbnRlcm5hbC5odG1sRGx5Q21kSWQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewoJCQkJCQlzZWxmLnBsYXkodGltZSk7CgkJCQkJfSwgMjUwKTsKCQkJCQlyZXR1cm47IC8vIENhbmNlbCBleGVjdXRpb24gYW5kIHdhaXQgZm9yIHRoZSBkZWxheWVkIGNvbW1hbmQuCgkJCQl9CgkJCX0gZWxzZSB7CgkJCQltZWRpYS5wbGF5KCk7CgkJCX0KCQkJdGhpcy5faHRtbF9jaGVja1dhaXRGb3JQbGF5KCk7CgkJfSwKCQlfaHRtbF9wYXVzZTogZnVuY3Rpb24odGltZSkgewoJCQl2YXIgc2VsZiA9IHRoaXMsCgkJCQltZWRpYSA9IHRoaXMuaHRtbEVsZW1lbnQubWVkaWE7CgkJCQoJCQlpZih0aW1lID4gMCkgeyAvLyBXZSBkbyBub3Qgd2FudCB0aGUgc3RvcCgpIGNvbW1hbmQsIHdoaWNoIGRvZXMgcGF1c2UoMCksIGNhdXNpbmcgYSBsb2FkIG9wZXJhdGlvbi4KCQkJCXRoaXMuX2h0bWxfbG9hZCgpOyAvLyBMb2FkcyBpZiByZXF1aXJlZCBhbmQgY2xlYXJzIGFueSBkZWxheWVkIGNvbW1hbmRzLgoJCQl9IGVsc2UgewoJCQkJY2xlYXJUaW1lb3V0KHRoaXMuaW50ZXJuYWwuaHRtbERseUNtZElkKTsKCQkJfQoKCQkJLy8gT3JkZXIgb2YgdGhlc2UgY29tbWFuZHMgaXMgaW1wb3J0YW50IGZvciBTYWZhcmkgKFdpbikgYW5kIElFOS4gUGF1c2UgdGhlbiBjaGFuZ2UgY3VycmVudFRpbWUuCgkJCW1lZGlhLnBhdXNlKCk7CgoJCQlpZighaXNOYU4odGltZSkpIHsKCQkJCXRyeSB7CgkJCQkJaWYoIW1lZGlhLnNlZWthYmxlIHx8IHR5cGVvZiBtZWRpYS5zZWVrYWJsZSA9PT0gIm9iamVjdCIgJiYgbWVkaWEuc2Vla2FibGUubGVuZ3RoID4gMCkgewoJCQkJCQltZWRpYS5jdXJyZW50VGltZSA9IHRpbWU7CgkJCQkJfSBlbHNlIHsKCQkJCQkJdGhyb3cgMTsKCQkJCQl9CgkJCQl9IGNhdGNoKGVycikgewoJCQkJCXRoaXMuaW50ZXJuYWwuaHRtbERseUNtZElkID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsKCQkJCQkJc2VsZi5wYXVzZSh0aW1lKTsKCQkJCQl9LCAyNTApOwoJCQkJCXJldHVybjsgLy8gQ2FuY2VsIGV4ZWN1dGlvbiBhbmQgd2FpdCBmb3IgdGhlIGRlbGF5ZWQgY29tbWFuZC4KCQkJCX0KCQkJfQoJCQlpZih0aW1lID4gMCkgeyAvLyBBdm9pZHMgYSBzZXRNZWRpYSgpIGZvbGxvd2VkIGJ5IHN0b3AoKSBvciBwYXVzZSgwKSBoaWRpbmcgdGhlIHZpZGVvIHBsYXkgYnV0dG9uLgoJCQkJdGhpcy5faHRtbF9jaGVja1dhaXRGb3JQbGF5KCk7CgkJCX0KCQl9LAoJCV9odG1sX3BsYXlIZWFkOiBmdW5jdGlvbihwZXJjZW50KSB7CgkJCXZhciBzZWxmID0gdGhpcywKCQkJCW1lZGlhID0gdGhpcy5odG1sRWxlbWVudC5tZWRpYTsKCgkJCXRoaXMuX2h0bWxfbG9hZCgpOyAvLyBMb2FkcyBpZiByZXF1aXJlZCBhbmQgY2xlYXJzIGFueSBkZWxheWVkIGNvbW1hbmRzLgoKCQkJdHJ5IHsKCQkJCWlmKHR5cGVvZiBtZWRpYS5zZWVrYWJsZSA9PT0gIm9iamVjdCIgJiYgbWVkaWEuc2Vla2FibGUubGVuZ3RoID4gMCkgewoJCQkJCW1lZGlhLmN1cnJlbnRUaW1lID0gcGVyY2VudCAqIG1lZGlhLnNlZWthYmxlLmVuZChtZWRpYS5zZWVrYWJsZS5sZW5ndGgtMSkgLyAxMDA7CgkJCQl9IGVsc2UgaWYobWVkaWEuZHVyYXRpb24gPiAwICYmICFpc05hTihtZWRpYS5kdXJhdGlvbikpIHsKCQkJCQltZWRpYS5jdXJyZW50VGltZSA9IHBlcmNlbnQgKiBtZWRpYS5kdXJhdGlvbiAvIDEwMDsKCQkJCX0gZWxzZSB7CgkJCQkJdGhyb3cgImUiOwoJCQkJfQoJCQl9IGNhdGNoKGVycikgewoJCQkJdGhpcy5pbnRlcm5hbC5odG1sRGx5Q21kSWQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewoJCQkJCXNlbGYucGxheUhlYWQocGVyY2VudCk7CgkJCQl9LCAyNTApOwoJCQkJcmV0dXJuOyAvLyBDYW5jZWwgZXhlY3V0aW9uIGFuZCB3YWl0IGZvciB0aGUgZGVsYXllZCBjb21tYW5kLgoJCQl9CgkJCWlmKCF0aGlzLnN0YXR1cy53YWl0Rm9yTG9hZCkgewoJCQkJdGhpcy5faHRtbF9jaGVja1dhaXRGb3JQbGF5KCk7CgkJCX0KCQl9LAoJCV9odG1sX2NoZWNrV2FpdEZvclBsYXk6IGZ1bmN0aW9uKCkgewoJCQlpZih0aGlzLnN0YXR1cy53YWl0Rm9yUGxheSkgewoJCQkJdGhpcy5zdGF0dXMud2FpdEZvclBsYXkgPSBmYWxzZTsKCQkJCWlmKHRoaXMuY3NzLmpxLnZpZGVvUGxheS5sZW5ndGgpIHsKCQkJCQl0aGlzLmNzcy5qcS52aWRlb1BsYXkuaGlkZSgpOwoJCQkJfQoJCQkJaWYodGhpcy5zdGF0dXMudmlkZW8pIHsKCQkJCQl0aGlzLmludGVybmFsLnBvc3Rlci5qcS5oaWRlKCk7CgkJCQkJdGhpcy5pbnRlcm5hbC52aWRlby5qcS5jc3Moeyd3aWR0aCc6IHRoaXMuc3RhdHVzLndpZHRoLCAnaGVpZ2h0JzogdGhpcy5zdGF0dXMuaGVpZ2h0fSk7CgkJCQl9CgkJCX0KCQl9LAoJCV9odG1sX3ZvbHVtZTogZnVuY3Rpb24odikgewoJCQlpZih0aGlzLmh0bWwuYXVkaW8uYXZhaWxhYmxlKSB7CgkJCQl0aGlzLmh0bWxFbGVtZW50LmF1ZGlvLnZvbHVtZSA9IHY7CgkJCX0KCQkJaWYodGhpcy5odG1sLnZpZGVvLmF2YWlsYWJsZSkgewoJCQkJdGhpcy5odG1sRWxlbWVudC52aWRlby52b2x1bWUgPSB2OwoJCQl9CgkJfSwKCQlfaHRtbF9tdXRlOiBmdW5jdGlvbihtKSB7CgkJCWlmKHRoaXMuaHRtbC5hdWRpby5hdmFpbGFibGUpIHsKCQkJCXRoaXMuaHRtbEVsZW1lbnQuYXVkaW8ubXV0ZWQgPSBtOwoJCQl9CgkJCWlmKHRoaXMuaHRtbC52aWRlby5hdmFpbGFibGUpIHsKCQkJCXRoaXMuaHRtbEVsZW1lbnQudmlkZW8ubXV0ZWQgPSBtOwoJCQl9CgkJfSwKCQlfZmxhc2hfc2V0QXVkaW86IGZ1bmN0aW9uKG1lZGlhKSB7CgkJCXZhciBzZWxmID0gdGhpczsKCQkJdHJ5IHsKCQkJCS8vIEFsd2F5cyBmaW5kcyBhIGZvcm1hdCBkdWUgdG8gY2hlY2tzIGluIHNldE1lZGlhKCkKCQkJCSQuZWFjaCh0aGlzLmZvcm1hdHMsIGZ1bmN0aW9uKHByaW9yaXR5LCBmb3JtYXQpIHsKCQkJCQlpZihzZWxmLmZsYXNoLnN1cHBvcnRbZm9ybWF0XSAmJiBtZWRpYVtmb3JtYXRdKSB7CgkJCQkJCXN3aXRjaCAoZm9ybWF0KSB7CgkJCQkJCQljYXNlICJtNGEiIDoKCQkJCQkJCWNhc2UgImZsYSIgOgoJCQkJCQkJCXNlbGYuX2dldE1vdmllKCkuZmxfc2V0QXVkaW9fbTRhKG1lZGlhW2Zvcm1hdF0pOwoJCQkJCQkJCWJyZWFrOwoJCQkJCQkJY2FzZSAibXAzIiA6CgkJCQkJCQkJc2VsZi5fZ2V0TW92aWUoKS5mbF9zZXRBdWRpb19tcDMobWVkaWFbZm9ybWF0XSk7CgkJCQkJCQkJYnJlYWs7CgkJCQkJCQljYXNlICJydG1wYSI6CgkJCQkJCQkJc2VsZi5fZ2V0TW92aWUoKS5mbF9zZXRBdWRpb19ydG1wKG1lZGlhW2Zvcm1hdF0pOwoJCQkJCQkJCWJyZWFrOwoJCQkJCQl9CgkJCQkJCXNlbGYuc3RhdHVzLnNyYyA9IG1lZGlhW2Zvcm1hdF07CgkJCQkJCXNlbGYuc3RhdHVzLmZvcm1hdFtmb3JtYXRdID0gdHJ1ZTsKCQkJCQkJc2VsZi5zdGF0dXMuZm9ybWF0VHlwZSA9IGZvcm1hdDsKCQkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJCX0KCQkJCX0pOwoKCQkJCWlmKHRoaXMub3B0aW9ucy5wcmVsb2FkID09PSAnYXV0bycpIHsKCQkJCQl0aGlzLl9mbGFzaF9sb2FkKCk7CgkJCQkJdGhpcy5zdGF0dXMud2FpdEZvckxvYWQgPSBmYWxzZTsKCQkJCX0KCQkJfSBjYXRjaChlcnIpIHsgdGhpcy5fZmxhc2hFcnJvcihlcnIpOyB9CgkJfSwKCQlfZmxhc2hfc2V0VmlkZW86IGZ1bmN0aW9uKG1lZGlhKSB7CgkJCXZhciBzZWxmID0gdGhpczsKCQkJdHJ5IHsKCQkJCS8vIEFsd2F5cyBmaW5kcyBhIGZvcm1hdCBkdWUgdG8gY2hlY2tzIGluIHNldE1lZGlhKCkKCQkJCSQuZWFjaCh0aGlzLmZvcm1hdHMsIGZ1bmN0aW9uKHByaW9yaXR5LCBmb3JtYXQpIHsKCQkJCQlpZihzZWxmLmZsYXNoLnN1cHBvcnRbZm9ybWF0XSAmJiBtZWRpYVtmb3JtYXRdKSB7CgkJCQkJCXN3aXRjaCAoZm9ybWF0KSB7CgkJCQkJCQljYXNlICJtNHYiIDoKCQkJCQkJCWNhc2UgImZsdiIgOgoJCQkJCQkJCXNlbGYuX2dldE1vdmllKCkuZmxfc2V0VmlkZW9fbTR2KG1lZGlhW2Zvcm1hdF0pOwoJCQkJCQkJCWJyZWFrOwoJCQkJCQkJY2FzZSAicnRtcHYiOgoJCQkJCQkJCXNlbGYuX2dldE1vdmllKCkuZmxfc2V0VmlkZW9fcnRtcChtZWRpYVtmb3JtYXRdKTsKCQkJCQkJCQlicmVhazsJCQoJCQkJCQl9CgkJCQkJCXNlbGYuc3RhdHVzLnNyYyA9IG1lZGlhW2Zvcm1hdF07CgkJCQkJCXNlbGYuc3RhdHVzLmZvcm1hdFtmb3JtYXRdID0gdHJ1ZTsKCQkJCQkJc2VsZi5zdGF0dXMuZm9ybWF0VHlwZSA9IGZvcm1hdDsKCQkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJCX0KCQkJCX0pOwoKCQkJCWlmKHRoaXMub3B0aW9ucy5wcmVsb2FkID09PSAnYXV0bycpIHsKCQkJCQl0aGlzLl9mbGFzaF9sb2FkKCk7CgkJCQkJdGhpcy5zdGF0dXMud2FpdEZvckxvYWQgPSBmYWxzZTsKCQkJCX0KCQkJfSBjYXRjaChlcnIpIHsgdGhpcy5fZmxhc2hFcnJvcihlcnIpOyB9CgkJfSwKCQlfZmxhc2hfcmVzZXRNZWRpYTogZnVuY3Rpb24oKSB7CgkJCXRoaXMuaW50ZXJuYWwuZmxhc2guanEuY3NzKHsnd2lkdGgnOicwcHgnLCAnaGVpZ2h0JzonMHB4J30pOyAvLyBNdXN0IGRvIHZpYSBDU1MgYXMgc2V0dGluZyBhdHRyKCkgdG8gemVybyBjYXVzZXMgYSBqUXVlcnkgZXJyb3IgaW4gSUUuCgkJCXRoaXMuX2ZsYXNoX3BhdXNlKE5hTik7CgkJfSwKCQlfZmxhc2hfY2xlYXJNZWRpYTogZnVuY3Rpb24oKSB7CgkJCXRyeSB7CgkJCQl0aGlzLl9nZXRNb3ZpZSgpLmZsX2NsZWFyTWVkaWEoKTsKCQkJfSBjYXRjaChlcnIpIHsgdGhpcy5fZmxhc2hFcnJvcihlcnIpOyB9CgkJfSwKCQlfZmxhc2hfbG9hZDogZnVuY3Rpb24oKSB7CgkJCXRyeSB7CgkJCQl0aGlzLl9nZXRNb3ZpZSgpLmZsX2xvYWQoKTsKCQkJfSBjYXRjaChlcnIpIHsgdGhpcy5fZmxhc2hFcnJvcihlcnIpOyB9CgkJCXRoaXMuc3RhdHVzLndhaXRGb3JMb2FkID0gZmFsc2U7CgkJfSwKCQlfZmxhc2hfcGxheTogZnVuY3Rpb24odGltZSkgewoJCQl0cnkgewoJCQkJdGhpcy5fZ2V0TW92aWUoKS5mbF9wbGF5KHRpbWUpOwoJCQl9IGNhdGNoKGVycikgeyB0aGlzLl9mbGFzaEVycm9yKGVycik7IH0KCQkJdGhpcy5zdGF0dXMud2FpdEZvckxvYWQgPSBmYWxzZTsKCQkJdGhpcy5fZmxhc2hfY2hlY2tXYWl0Rm9yUGxheSgpOwoJCX0sCgkJX2ZsYXNoX3BhdXNlOiBmdW5jdGlvbih0aW1lKSB7CgkJCXRyeSB7CgkJCQl0aGlzLl9nZXRNb3ZpZSgpLmZsX3BhdXNlKHRpbWUpOwoJCQl9IGNhdGNoKGVycikgeyB0aGlzLl9mbGFzaEVycm9yKGVycik7IH0KCQkJaWYodGltZSA+IDApIHsgLy8gQXZvaWRzIGEgc2V0TWVkaWEoKSBmb2xsb3dlZCBieSBzdG9wKCkgb3IgcGF1c2UoMCkgaGlkaW5nIHRoZSB2aWRlbyBwbGF5IGJ1dHRvbi4KCQkJCXRoaXMuc3RhdHVzLndhaXRGb3JMb2FkID0gZmFsc2U7CgkJCQl0aGlzLl9mbGFzaF9jaGVja1dhaXRGb3JQbGF5KCk7CgkJCX0KCQl9LAoJCV9mbGFzaF9wbGF5SGVhZDogZnVuY3Rpb24ocCkgewoJCQl0cnkgewoJCQkJdGhpcy5fZ2V0TW92aWUoKS5mbF9wbGF5X2hlYWQocCk7CgkJCX0gY2F0Y2goZXJyKSB7IHRoaXMuX2ZsYXNoRXJyb3IoZXJyKTsgfQoJCQlpZighdGhpcy5zdGF0dXMud2FpdEZvckxvYWQpIHsKCQkJCXRoaXMuX2ZsYXNoX2NoZWNrV2FpdEZvclBsYXkoKTsKCQkJfQoJCX0sCgkJX2ZsYXNoX2NoZWNrV2FpdEZvclBsYXk6IGZ1bmN0aW9uKCkgewoJCQlpZih0aGlzLnN0YXR1cy53YWl0Rm9yUGxheSkgewoJCQkJdGhpcy5zdGF0dXMud2FpdEZvclBsYXkgPSBmYWxzZTsKCQkJCWlmKHRoaXMuY3NzLmpxLnZpZGVvUGxheS5sZW5ndGgpIHsKCQkJCQl0aGlzLmNzcy5qcS52aWRlb1BsYXkuaGlkZSgpOwoJCQkJfQoJCQkJaWYodGhpcy5zdGF0dXMudmlkZW8pIHsKCQkJCQl0aGlzLmludGVybmFsLnBvc3Rlci5qcS5oaWRlKCk7CgkJCQkJdGhpcy5pbnRlcm5hbC5mbGFzaC5qcS5jc3Moeyd3aWR0aCc6IHRoaXMuc3RhdHVzLndpZHRoLCAnaGVpZ2h0JzogdGhpcy5zdGF0dXMuaGVpZ2h0fSk7CgkJCQl9CgkJCX0KCQl9LAoJCV9mbGFzaF92b2x1bWU6IGZ1bmN0aW9uKHYpIHsKCQkJdHJ5IHsKCQkJCXRoaXMuX2dldE1vdmllKCkuZmxfdm9sdW1lKHYpOwoJCQl9IGNhdGNoKGVycikgeyB0aGlzLl9mbGFzaEVycm9yKGVycik7IH0KCQl9LAoJCV9mbGFzaF9tdXRlOiBmdW5jdGlvbihtKSB7CgkJCXRyeSB7CgkJCQl0aGlzLl9nZXRNb3ZpZSgpLmZsX211dGUobSk7CgkJCX0gY2F0Y2goZXJyKSB7IHRoaXMuX2ZsYXNoRXJyb3IoZXJyKTsgfQoJCX0sCgkJX2dldE1vdmllOiBmdW5jdGlvbigpIHsKCQkJcmV0dXJuIGRvY3VtZW50W3RoaXMuaW50ZXJuYWwuZmxhc2guaWRdOwoJCX0sCgkJX2dldEZsYXNoUGx1Z2luVmVyc2lvbjogZnVuY3Rpb24oKSB7CgoJCQkvLyBfZ2V0Rmxhc2hQbHVnaW5WZXJzaW9uKCkgY29kZSBpbmZsdWVuY2VkIGJ5OgoJCQkvLyAtIEZsYXNoUmVwbGFjZSAxLjAxOiBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZmxhc2hyZXBsYWNlLwoJCQkvLyAtIFNXRk9iamVjdCAyLjI6IGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9zd2ZvYmplY3QvCgoJCQl2YXIgdmVyc2lvbiA9IDAsCgkJCQlmbGFzaDsKCQkJaWYod2luZG93LkFjdGl2ZVhPYmplY3QpIHsKCQkJCXRyeSB7CgkJCQkJZmxhc2ggPSBuZXcgQWN0aXZlWE9iamVjdCgiU2hvY2t3YXZlRmxhc2guU2hvY2t3YXZlRmxhc2giKTsKCQkJCQlpZiAoZmxhc2gpIHsgLy8gZmxhc2ggd2lsbCByZXR1cm4gbnVsbCB3aGVuIEFjdGl2ZVggaXMgZGlzYWJsZWQKCQkJCQkJdmFyIHYgPSBmbGFzaC5HZXRWYXJpYWJsZSgiJHZlcnNpb24iKTsKCQkJCQkJaWYodikgewoJCQkJCQkJdiA9IHYuc3BsaXQoIiAiKVsxXS5zcGxpdCgiLCIpOwoJCQkJCQkJdmVyc2lvbiA9IHBhcnNlSW50KHZbMF0sIDEwKSArICIuIiArIHBhcnNlSW50KHZbMV0sIDEwKTsKCQkJCQkJfQoJCQkJCX0KCQkJCX0gY2F0Y2goZSkge30KCQkJfQoJCQllbHNlIGlmKG5hdmlnYXRvci5wbHVnaW5zICYmIG5hdmlnYXRvci5taW1lVHlwZXMubGVuZ3RoID4gMCkgewoJCQkJZmxhc2ggPSBuYXZpZ2F0b3IucGx1Z2luc1siU2hvY2t3YXZlIEZsYXNoIl07CgkJCQlpZihmbGFzaCkgewoJCQkJCXZlcnNpb24gPSBuYXZpZ2F0b3IucGx1Z2luc1siU2hvY2t3YXZlIEZsYXNoIl0uZGVzY3JpcHRpb24ucmVwbGFjZSgvLipccyhcZCtcLlxkKykuKi8sICIkMSIpOwoJCQkJfQoJCQl9CgkJCXJldHVybiB2ZXJzaW9uICogMTsgLy8gQ29udmVydHMgdG8gYSBudW1iZXIKCQl9LAoJCV9jaGVja0ZvckZsYXNoOiBmdW5jdGlvbiAodmVyc2lvbikgewoJCQl2YXIgZmxhc2hPayA9IGZhbHNlOwoJCQlpZih0aGlzLl9nZXRGbGFzaFBsdWdpblZlcnNpb24oKSA+PSB2ZXJzaW9uKSB7CgkJCQlmbGFzaE9rID0gdHJ1ZTsKCQkJfQoJCQlyZXR1cm4gZmxhc2hPazsKCQl9LAoJCV92YWxpZFN0cmluZzogZnVuY3Rpb24odXJsKSB7CgkJCXJldHVybiAodXJsICYmIHR5cGVvZiB1cmwgPT09ICJzdHJpbmciKTsgLy8gRW1wdHkgc3RyaW5ncyByZXR1cm4gZmFsc2UKCQl9LAoJCV9saW1pdFZhbHVlOiBmdW5jdGlvbih2YWx1ZSwgbWluLCBtYXgpIHsKCQkJcmV0dXJuICh2YWx1ZSA8IG1pbikgPyBtaW4gOiAoKHZhbHVlID4gbWF4KSA/IG1heCA6IHZhbHVlKTsKCQl9LAoJCV91cmxOb3RTZXRFcnJvcjogZnVuY3Rpb24oY29udGV4dCkgewoJCQl0aGlzLl9lcnJvciggewoJCQkJdHlwZTogJC5qUGxheWVyLmVycm9yLlVSTF9OT1RfU0VULAoJCQkJY29udGV4dDogY29udGV4dCwKCQkJCW1lc3NhZ2U6ICQualBsYXllci5lcnJvck1zZy5VUkxfTk9UX1NFVCwKCQkJCWhpbnQ6ICQualBsYXllci5lcnJvckhpbnQuVVJMX05PVF9TRVQKCQkJfSk7CgkJfSwKCQlfZmxhc2hFcnJvcjogZnVuY3Rpb24oZXJyb3IpIHsKCQkJdmFyIGVycm9yVHlwZTsKCQkJaWYoIXRoaXMuaW50ZXJuYWwucmVhZHkpIHsKCQkJCWVycm9yVHlwZSA9ICJGTEFTSCI7CgkJCX0gZWxzZSB7CgkJCQllcnJvclR5cGUgPSAiRkxBU0hfRElTQUJMRUQiOwoJCQl9CgkJCXRoaXMuX2Vycm9yKCB7CgkJCQl0eXBlOiAkLmpQbGF5ZXIuZXJyb3JbZXJyb3JUeXBlXSwKCQkJCWNvbnRleHQ6IHRoaXMuaW50ZXJuYWwuZmxhc2guc3dmLAoJCQkJbWVzc2FnZTogJC5qUGxheWVyLmVycm9yTXNnW2Vycm9yVHlwZV0gKyBlcnJvci5tZXNzYWdlLAoJCQkJaGludDogJC5qUGxheWVyLmVycm9ySGludFtlcnJvclR5cGVdCgkJCX0pOwoJCQkvLyBBbGxvdyB0aGUgYXVkaW8gcGxheWVyIHRvIHJlY292ZXIgaWYgZGlzcGxheTpub25lIGFuZCB0aGVuIHNob3duIGFnYWluLCBvciB3aXRoIHBvc2l0aW9uOmZpeGVkIG9uIEZpcmVmb3guCgkJCS8vIFRoaXMgcmVhbGx5IG9ubHkgYWZmZWN0cyBhdWRpbyBpbiBhIG1lZGlhIHBsYXllciwgYXMgYW4gYXVkaW8gcGxheWVyIGNvdWxkIGVhc2lseSBtb3ZlIHRoZSBqUGxheWVyIGVsZW1lbnQgYXdheSBmcm9tIHN1Y2ggaXNzdWVzLgoJCQl0aGlzLmludGVybmFsLmZsYXNoLmpxLmNzcyh7J3dpZHRoJzonMXB4JywgJ2hlaWdodCc6JzFweCd9KTsKCQl9LAoJCV9lcnJvcjogZnVuY3Rpb24oZXJyb3IpIHsKCQkJdGhpcy5fdHJpZ2dlcigkLmpQbGF5ZXIuZXZlbnQuZXJyb3IsIGVycm9yKTsKCQkJaWYodGhpcy5vcHRpb25zLmVycm9yQWxlcnRzKSB7CgkJCQl0aGlzLl9hbGVydCgiRXJyb3IhIiArIChlcnJvci5tZXNzYWdlID8gIlxuXG4iICsgZXJyb3IubWVzc2FnZSA6ICIiKSArIChlcnJvci5oaW50ID8gIlxuXG4iICsgZXJyb3IuaGludCA6ICIiKSArICJcblxuQ29udGV4dDogIiArIGVycm9yLmNvbnRleHQpOwoJCQl9CgkJfSwKCQlfd2FybmluZzogZnVuY3Rpb24od2FybmluZykgewoJCQl0aGlzLl90cmlnZ2VyKCQualBsYXllci5ldmVudC53YXJuaW5nLCB1bmRlZmluZWQsIHdhcm5pbmcpOwoJCQlpZih0aGlzLm9wdGlvbnMud2FybmluZ0FsZXJ0cykgewoJCQkJdGhpcy5fYWxlcnQoIldhcm5pbmchIiArICh3YXJuaW5nLm1lc3NhZ2UgPyAiXG5cbiIgKyB3YXJuaW5nLm1lc3NhZ2UgOiAiIikgKyAod2FybmluZy5oaW50ID8gIlxuXG4iICsgd2FybmluZy5oaW50IDogIiIpICsgIlxuXG5Db250ZXh0OiAiICsgd2FybmluZy5jb250ZXh0KTsKCQkJfQoJCX0sCgkJX2FsZXJ0OiBmdW5jdGlvbihtZXNzYWdlKSB7CgkJCWFsZXJ0KCJqUGxheWVyICIgKyB0aGlzLnZlcnNpb24uc2NyaXB0ICsgIiA6IGlkPSciICsgdGhpcy5pbnRlcm5hbC5zZWxmLmlkICsiJyA6ICIgKyBtZXNzYWdlKTsKCQl9LAoJCV9lbXVsYXRlSHRtbEJyaWRnZTogZnVuY3Rpb24oKSB7CgkJCXZhciBzZWxmID0gdGhpczsKCgkJCS8vIEVtdWxhdGUgbWV0aG9kcyBvbiBqUGxheWVyJ3MgRE9NIGVsZW1lbnQuCgkJCSQuZWFjaCggJC5qUGxheWVyLmVtdWxhdGVNZXRob2RzLnNwbGl0KC9ccysvZyksIGZ1bmN0aW9uKGksIG5hbWUpIHsKCQkJCXNlbGYuaW50ZXJuYWwuZG9tTm9kZVtuYW1lXSA9IGZ1bmN0aW9uKGFyZykgewoJCQkJCXNlbGZbbmFtZV0oYXJnKTsKCQkJCX07CgoJCQl9KTsKCgkJCS8vIEJ1YmJsZSBqUGxheWVyIGV2ZW50cyB0byBpdHMgRE9NIGVsZW1lbnQuCgkJCSQuZWFjaCgkLmpQbGF5ZXIuZXZlbnQsIGZ1bmN0aW9uKGV2ZW50TmFtZSxldmVudFR5cGUpIHsKCQkJCXZhciBuYXRpdmVFdmVudCA9IHRydWU7CgkJCQkkLmVhY2goICQualBsYXllci5yZXNlcnZlZEV2ZW50LnNwbGl0KC9ccysvZyksIGZ1bmN0aW9uKGksIG5hbWUpIHsKCQkJCQlpZihuYW1lID09PSBldmVudE5hbWUpIHsKCQkJCQkJbmF0aXZlRXZlbnQgPSBmYWxzZTsKCQkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJCX0KCQkJCX0pOwoJCQkJaWYobmF0aXZlRXZlbnQpIHsKCQkJCQlzZWxmLmVsZW1lbnQuYmluZChldmVudFR5cGUgKyAiLmpQbGF5ZXIualBsYXllckh0bWwiLCBmdW5jdGlvbigpIHsgLy8gV2l0aCAualBsYXllciAmIC5qUGxheWVySHRtbCBuYW1lc3BhY2VzLgoJCQkJCQlzZWxmLl9lbXVsYXRlSHRtbFVwZGF0ZSgpOwoJCQkJCQl2YXIgZG9tRXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKTsKCQkJCQkJZG9tRXZlbnQuaW5pdEV2ZW50KGV2ZW50TmFtZSwgZmFsc2UsIHRydWUpOwoJCQkJCQlzZWxmLmludGVybmFsLmRvbU5vZGUuZGlzcGF0Y2hFdmVudChkb21FdmVudCk7CgkJCQkJfSk7CgkJCQl9CgkJCQkvLyBUaGUgZXJyb3IgZXZlbnQgd291bGQgcmVxdWlyZSBhIHNwZWNpYWwgY2FzZQoJCQl9KTsKCgkJCS8vIElFOSBoYXMgYSByZWFkeVN0YXRlIHByb3BlcnR5IG9uIGFsbCBlbGVtZW50cy4gVGhlIGRvY3VtZW50IHNob3VsZCBoYXZlIGl0LCBidXQgYWxsIChleGNlcHQgbWVkaWEpIGVsZW1lbnRzIGluaGVyaXQgaXQgaW4gSUU5LiBUaGlzIGNvbmZsaWN0cyB3aXRoIFBvcGNvcm4sIHdoaWNoIHBvbGxzIHRoZSByZWFkeVN0YXRlLgoJCX0sCgkJX2VtdWxhdGVIdG1sVXBkYXRlOiBmdW5jdGlvbigpIHsKCQkJdmFyIHNlbGYgPSB0aGlzOwoKCQkJJC5lYWNoKCAkLmpQbGF5ZXIuZW11bGF0ZVN0YXR1cy5zcGxpdCgvXHMrL2cpLCBmdW5jdGlvbihpLCBuYW1lKSB7CgkJCQlzZWxmLmludGVybmFsLmRvbU5vZGVbbmFtZV0gPSBzZWxmLnN0YXR1c1tuYW1lXTsKCQkJfSk7CgkJCSQuZWFjaCggJC5qUGxheWVyLmVtdWxhdGVPcHRpb25zLnNwbGl0KC9ccysvZyksIGZ1bmN0aW9uKGksIG5hbWUpIHsKCQkJCXNlbGYuaW50ZXJuYWwuZG9tTm9kZVtuYW1lXSA9IHNlbGYub3B0aW9uc1tuYW1lXTsKCQkJfSk7CgkJfSwKCQlfZGVzdHJveUh0bWxCcmlkZ2U6IGZ1bmN0aW9uKCkgewoJCQl2YXIgc2VsZiA9IHRoaXM7CgoJCQkvLyBCcmlkZ2UgZXZlbnQgaGFuZGxlcnMgYXJlIGFsc28gcmVtb3ZlZCBieSBkZXN0cm95KCkgdGhyb3VnaCAualBsYXllciBuYW1lc3BhY2UuCgkJCXRoaXMuZWxlbWVudC51bmJpbmQoIi5qUGxheWVySHRtbCIpOyAvLyBSZW1vdmUgYWxsIGV2ZW50IGhhbmRsZXJzIGNyZWF0ZWQgYnkgdGhlIGpQbGF5ZXIgYnJpZGdlLiBTbyB5b3UgY2FuIGNoYW5nZSB0aGUgZW11bGF0ZUh0bWwgb3B0aW9uLgoKCQkJLy8gUmVtb3ZlIHRoZSBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzCgkJCXZhciBlbXVsYXRlZCA9ICQualBsYXllci5lbXVsYXRlTWV0aG9kcyArICIgIiArICQualBsYXllci5lbXVsYXRlU3RhdHVzICsgIiAiICsgJC5qUGxheWVyLmVtdWxhdGVPcHRpb25zOwoJCQkkLmVhY2goIGVtdWxhdGVkLnNwbGl0KC9ccysvZyksIGZ1bmN0aW9uKGksIG5hbWUpIHsKCQkJCWRlbGV0ZSBzZWxmLmludGVybmFsLmRvbU5vZGVbbmFtZV07CgkJCX0pOwoJCX0KCX07CgoJJC5qUGxheWVyLmVycm9yID0gewoJCUZMQVNIOiAiZV9mbGFzaCIsCgkJRkxBU0hfRElTQUJMRUQ6ICJlX2ZsYXNoX2Rpc2FibGVkIiwKCQlOT19TT0xVVElPTjogImVfbm9fc29sdXRpb24iLAoJCU5PX1NVUFBPUlQ6ICJlX25vX3N1cHBvcnQiLAoJCVVSTDogImVfdXJsIiwKCQlVUkxfTk9UX1NFVDogImVfdXJsX25vdF9zZXQiLAoJCVZFUlNJT046ICJlX3ZlcnNpb24iCgl9OwoKCSQualBsYXllci5lcnJvck1zZyA9IHsKCQlGTEFTSDogImpQbGF5ZXIncyBGbGFzaCBmYWxsYmFjayBpcyBub3QgY29uZmlndXJlZCBjb3JyZWN0bHksIG9yIGEgY29tbWFuZCB3YXMgaXNzdWVkIGJlZm9yZSB0aGUgalBsYXllciBSZWFkeSBldmVudC4gRGV0YWlsczogIiwgLy8gVXNlZCBpbjogX2ZsYXNoRXJyb3IoKQoJCUZMQVNIX0RJU0FCTEVEOiAialBsYXllcidzIEZsYXNoIGZhbGxiYWNrIGhhcyBiZWVuIGRpc2FibGVkIGJ5IHRoZSBicm93c2VyIGR1ZSB0byB0aGUgQ1NTIHJ1bGVzIHlvdSBoYXZlIHVzZWQuIERldGFpbHM6ICIsIC8vIFVzZWQgaW46IF9mbGFzaEVycm9yKCkKCQlOT19TT0xVVElPTjogIk5vIHNvbHV0aW9uIGNhbiBiZSBmb3VuZCBieSBqUGxheWVyIGluIHRoaXMgYnJvd3Nlci4gTmVpdGhlciBIVE1MIG5vciBGbGFzaCBjYW4gYmUgdXNlZC4iLCAvLyBVc2VkIGluOiBfaW5pdCgpCgkJTk9fU1VQUE9SVDogIkl0IGlzIG5vdCBwb3NzaWJsZSB0byBwbGF5IGFueSBtZWRpYSBmb3JtYXQgcHJvdmlkZWQgaW4gc2V0TWVkaWEoKSBvbiB0aGlzIGJyb3dzZXIgdXNpbmcgeW91ciBjdXJyZW50IG9wdGlvbnMuIiwgLy8gVXNlZCBpbjogc2V0TWVkaWEoKQoJCVVSTDogIk1lZGlhIFVSTCBjb3VsZCBub3QgYmUgbG9hZGVkLiIsIC8vIFVzZWQgaW46IGpQbGF5ZXJGbGFzaEV2ZW50KCkgYW5kIF9hZGRIdG1sRXZlbnRMaXN0ZW5lcnMoKQoJCVVSTF9OT1RfU0VUOiAiQXR0ZW1wdCB0byBpc3N1ZSBtZWRpYSBwbGF5YmFjayBjb21tYW5kcywgd2hpbGUgbm8gbWVkaWEgdXJsIGlzIHNldC4iLCAvLyBVc2VkIGluOiBsb2FkKCksIHBsYXkoKSwgcGF1c2UoKSwgc3RvcCgpIGFuZCBwbGF5SGVhZCgpCgkJVkVSU0lPTjogImpQbGF5ZXIgIiArICQualBsYXllci5wcm90b3R5cGUudmVyc2lvbi5zY3JpcHQgKyAiIG5lZWRzIEpwbGF5ZXIuc3dmIHZlcnNpb24gIiArICQualBsYXllci5wcm90b3R5cGUudmVyc2lvbi5uZWVkRmxhc2ggKyAiIGJ1dCBmb3VuZCAiIC8vIFVzZWQgaW46IGpQbGF5ZXJSZWFkeSgpCgl9OwoKCSQualBsYXllci5lcnJvckhpbnQgPSB7CgkJRkxBU0g6ICJDaGVjayB5b3VyIHN3ZlBhdGggb3B0aW9uIGFuZCB0aGF0IEpwbGF5ZXIuc3dmIGlzIHRoZXJlLiIsCgkJRkxBU0hfRElTQUJMRUQ6ICJDaGVjayB0aGF0IHlvdSBoYXZlIG5vdCBkaXNwbGF5Om5vbmU7IHRoZSBqUGxheWVyIGVudGl0eSBvciBhbnkgYW5jZXN0b3IuIiwKCQlOT19TT0xVVElPTjogIlJldmlldyB0aGUgalBsYXllciBvcHRpb25zOiBzdXBwb3J0IGFuZCBzdXBwbGllZC4iLAoJCU5PX1NVUFBPUlQ6ICJWaWRlbyBvciBhdWRpbyBmb3JtYXRzIGRlZmluZWQgaW4gdGhlIHN1cHBsaWVkIG9wdGlvbiBhcmUgbWlzc2luZy4iLAoJCVVSTDogIkNoZWNrIG1lZGlhIFVSTCBpcyB2YWxpZC4iLAoJCVVSTF9OT1RfU0VUOiAiVXNlIHNldE1lZGlhKCkgdG8gc2V0IHRoZSBtZWRpYSBVUkwuIiwKCQlWRVJTSU9OOiAiVXBkYXRlIGpQbGF5ZXIgZmlsZXMuIgoJfTsKCgkkLmpQbGF5ZXIud2FybmluZyA9IHsKCQlDU1NfU0VMRUNUT1JfQ09VTlQ6ICJlX2Nzc19zZWxlY3Rvcl9jb3VudCIsCgkJQ1NTX1NFTEVDVE9SX01FVEhPRDogImVfY3NzX3NlbGVjdG9yX21ldGhvZCIsCgkJQ1NTX1NFTEVDVE9SX1NUUklORzogImVfY3NzX3NlbGVjdG9yX3N0cmluZyIsCgkJT1BUSU9OX0tFWTogImVfb3B0aW9uX2tleSIKCX07CgoJJC5qUGxheWVyLndhcm5pbmdNc2cgPSB7CgkJQ1NTX1NFTEVDVE9SX0NPVU5UOiAiVGhlIG51bWJlciBvZiBjc3Mgc2VsZWN0b3JzIGZvdW5kIGRpZCBub3QgZXF1YWwgb25lOiAiLAoJCUNTU19TRUxFQ1RPUl9NRVRIT0Q6ICJUaGUgbWV0aG9kTmFtZSBnaXZlbiBpbiBqUGxheWVyKCdjc3NTZWxlY3RvcicpIGlzIG5vdCBhIHZhbGlkIGpQbGF5ZXIgbWV0aG9kLiIsCgkJQ1NTX1NFTEVDVE9SX1NUUklORzogIlRoZSBtZXRob2RDc3NTZWxlY3RvciBnaXZlbiBpbiBqUGxheWVyKCdjc3NTZWxlY3RvcicpIGlzIG5vdCBhIFN0cmluZyBvciBpcyBlbXB0eS4iLAoJCU9QVElPTl9LRVk6ICJUaGUgb3B0aW9uIHJlcXVlc3RlZCBpbiBqUGxheWVyKCdvcHRpb24nKSBpcyB1bmRlZmluZWQuIgoJfTsKCgkkLmpQbGF5ZXIud2FybmluZ0hpbnQgPSB7CgkJQ1NTX1NFTEVDVE9SX0NPVU5UOiAiQ2hlY2sgeW91ciBjc3Mgc2VsZWN0b3IgYW5kIHRoZSBhbmNlc3Rvci4iLAoJCUNTU19TRUxFQ1RPUl9NRVRIT0Q6ICJDaGVjayB5b3VyIG1ldGhvZCBuYW1lLiIsCgkJQ1NTX1NFTEVDVE9SX1NUUklORzogIkNoZWNrIHlvdXIgY3NzIHNlbGVjdG9yIGlzIGEgc3RyaW5nLiIsCgkJT1BUSU9OX0tFWTogIkNoZWNrIHlvdXIgb3B0aW9uIG5hbWUuIgoJfTsKfSkpOwo=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/MIT-LICENSE.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDA5IC0gMjAxMyBIYXBweXdvcm0gTHRkCmh0dHA6Ly9oYXBweXdvcm0uY29tCmh0dHA6Ly9qcGxheWVyLm9yZwoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAppbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgphbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLApGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOClRIRSBTT0ZUV0FSRS4=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/package.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICJuYW1lIjogImpwbGF5ZXIiLAogICJ2ZXJzaW9uIjogIjIuNC4wIiwKICAiZGVzY3JpcHRpb24iOiAiVGhlIGpRdWVyeSBIVE1MNSBBdWRpbyAvIFZpZGVvIExpYnJhcnkiLAogICJob21lcGFnZSI6ICJodHRwOi8vd3d3LmpwbGF5ZXIub3JnLyIsCiAgImtleXdvcmRzIjogWwogICAgImF1ZGlvIiwKICAgICJ2aWRlbyIKICBdLAogICJkZXBlbmRlbmNpZXMiOiB7CiAgICAianF1ZXJ5IjogIj4xLjcuMCIKICB9LAogICJsaWNlbnNlcyI6IFsKICAgIHsKICAgICAgInR5cGUiOiAiTUlUIiwKICAgICAgInVybCI6ICJodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCIKICAgIH0KICBdLAogICJyZXBvc2l0b3JpZXMiOiBbCiAgICB7CiAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2hhcHB5d29ybS9qUGxheWVyLmdpdCIKICAgIH0KICBdLAogICJnaXRodWIiOiAiaHR0cDovL2dpdGh1Yi5jb20vaGFwcHl3b3JtL2pQbGF5ZXIiLAogICJtYWluIjogImpxdWVyeS5qcGxheWVyL2pxdWVyeS5qcGxheWVyLmpzIgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/popcorn/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/popcorn/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/popcorn/player/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/popcorn/player/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/popcorn/player/popcorn.jplayer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogalBsYXllciBQbGF5ZXIgUGx1Z2luIGZvciBQb3Bjb3JuIEphdmFTY3JpcHQgTGlicmFyeQogKiBodHRwOi8vd3d3LmpwbGF5ZXIub3JnCiAqCiAqIENvcHlyaWdodCAoYykgMjAxMyBIYXBweXdvcm0gTHRkCiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4KICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVAogKgogKiBBdXRob3I6IE1hcmsgSiBQYW5hZ2hpc3RvbgogKiBWZXJzaW9uOiAxLjEuMQogKiBEYXRlOiA1dGggSnVuZSAyMDEzCiAqCiAqIEZvciBQb3Bjb3JuIFZlcnNpb246IDEuMwogKiBGb3IgalBsYXllciBWZXJzaW9uOiAyLjQuMAogKiBSZXF1aXJlczogalF1ZXJ5IDEuMy4yKwogKiBOb3RlOiBqUXVlcnkgZGVwZW5kYW5jeSBjYW5ub3QgYmUgcmVtb3ZlZCBzaW5jZSBqUGxheWVyIDIgaXMgYSBqUXVlcnkgcGx1Z2luLiBVc2Ugb2YgalF1ZXJ5IHdpbGwgYmUga2VwdCB0byBhIG1pbmltdW0uCiAqLwoKLyogQ29kZSB2ZXJpZmllZCB1c2luZyBodHRwOi8vd3d3LmpzaGludC5jb20vICovCi8qanNoaW50IGFzaTpmYWxzZSwgYml0d2lzZTpmYWxzZSwgYm9zczpmYWxzZSwgYnJvd3Nlcjp0cnVlLCBjdXJseTpmYWxzZSwgZGVidWc6ZmFsc2UsIGVxZXFlcTp0cnVlLCBlcW51bGw6ZmFsc2UsIGV2aWw6ZmFsc2UsIGZvcmluOmZhbHNlLCBpbW1lZDpmYWxzZSwganF1ZXJ5OnRydWUsIGxheGJyZWFrOmZhbHNlLCBuZXdjYXA6dHJ1ZSwgbm9hcmc6dHJ1ZSwgbm9lbXB0eTp0cnVlLCBub25ldzp0cnVlLCBvbmV2YXI6ZmFsc2UsIHBhc3NmYWlsOmZhbHNlLCBwbHVzcGx1czpmYWxzZSwgcmVnZXhwOmZhbHNlLCB1bmRlZjp0cnVlLCBzdWI6ZmFsc2UsIHN0cmljdDpmYWxzZSwgd2hpdGU6ZmFsc2UsIHNtYXJ0dGFiczp0cnVlICovCi8qZ2xvYmFsIFBvcGNvcm46ZmFsc2UsIGNvbnNvbGU6ZmFsc2UgKi8KCihmdW5jdGlvbihQb3Bjb3JuKSB7CgoJdmFyIEpRVUVSWV9TQ1JJUFQgPSAnaHR0cDovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjgvanF1ZXJ5Lm1pbi5qcycsIC8vIFVzZWQgaWYgalF1ZXJ5IG5vdCBhbHJlYWR5IHByZXNlbnQuCglKUExBWUVSX1NDUklQVCA9ICdodHRwOi8vd3d3LmpwbGF5ZXIub3JnLzIuNC4wL2pzL2pxdWVyeS5qcGxheWVyLm1pbi5qcycsIC8vIFVzZWQgaWYgalBsYXllciBub3QgYWxyZWFkeSBwcmVzZW50LgoJSlBMQVlFUl9TV0ZQQVRIID0gJ2h0dHA6Ly93d3cuanBsYXllci5vcmcvMi40LjAvanMvSnBsYXllci5zd2YnLCAvLyBVc2VkIGlmIG5vdCBzcGVjaWZpZWQgaW4galBsYXllciBvcHRpb25zIHZpYSBTUkMgT2JqZWN0LgoJU09MVVRJT04gPSAnaHRtbCxmbGFzaCcsIC8vIFRoZSBkZWZhdWx0IHNvbHV0aW9uIG9wdGlvbi4KCURFQlVHID0gZmFsc2UsIC8vIERlY2lkZWQgdG8gbGVhdmUgdGhlIGRlYnVnZ2luZyBvcHRpb24gYW5kIGNvbnNvbGUgb3V0cHV0IGluIGZvciB0aGUgdGltZSBiZWluZy4gT3ZlcmhlYWQgaXMgdHJpdmlhbC4KCWpRdWVyeURvd25sb2FkaW5nID0gZmFsc2UsIC8vIEZsYWcgdG8gc3RvcCBtdWx0aXBsZSBpbnN0YW5jZXMgZnJvbSBlYWNoIHB1bGxpbmcgaW4galF1ZXJ5LCB0aHVzIGNvcnJ1cHRpbmcgaXQuCglqUGxheWVyRG93bmxvYWRpbmcgPSBmYWxzZSwgLy8gRmxhZyB0byBzdG9wIG11bHRpcGxlIGluc3RhbmNlcyBmcm9tIGVhY2ggcHVsbGluZyBpbiBqUGxheWVyLCB0aHVzIGNvcnJ1cHRpbmcgaXQuCglmb3JtYXQgPSB7IC8vIER1cGxpY2F0ZSBvZiBqUGxheWVyIDIuNC4wIG9iamVjdCwgdG8gYXZvaWQgYWx3YXlzIHJlcXVpcmluZyBqUXVlcnkgYW5kIGpQbGF5ZXIgdG8gYmUgbG9hZGVkIGJlZm9yZSBwZXJmb3JtaW5nIHRoZSBfY2FuUGxheVR5cGUoKSB0ZXN0LgoJCW1wMzogewoJCQljb2RlYzogJ2F1ZGlvL21wZWc7IGNvZGVjcz0ibXAzIicsCgkJCWZsYXNoQ2FuUGxheTogdHJ1ZSwKCQkJbWVkaWE6ICdhdWRpbycKCQl9LAoJCW00YTogeyAvLyBBQUMgLyBNUDQKCQkJY29kZWM6ICdhdWRpby9tcDQ7IGNvZGVjcz0ibXA0YS40MC4yIicsCgkJCWZsYXNoQ2FuUGxheTogdHJ1ZSwKCQkJbWVkaWE6ICdhdWRpbycKCQl9LAoJCW9nYTogeyAvLyBPR0cKCQkJY29kZWM6ICdhdWRpby9vZ2c7IGNvZGVjcz0idm9yYmlzIicsCgkJCWZsYXNoQ2FuUGxheTogZmFsc2UsCgkJCW1lZGlhOiAnYXVkaW8nCgkJfSwKCQl3YXY6IHsgLy8gUENNCgkJCWNvZGVjOiAnYXVkaW8vd2F2OyBjb2RlY3M9IjEiJywKCQkJZmxhc2hDYW5QbGF5OiBmYWxzZSwKCQkJbWVkaWE6ICdhdWRpbycKCQl9LAoJCXdlYm1hOiB7IC8vIFdFQk0KCQkJY29kZWM6ICdhdWRpby93ZWJtOyBjb2RlY3M9InZvcmJpcyInLAoJCQlmbGFzaENhblBsYXk6IGZhbHNlLAoJCQltZWRpYTogJ2F1ZGlvJwoJCX0sCgkJZmxhOiB7IC8vIEZMViAvIEY0QQoJCQljb2RlYzogJ2F1ZGlvL3gtZmx2JywKCQkJZmxhc2hDYW5QbGF5OiB0cnVlLAoJCQltZWRpYTogJ2F1ZGlvJwoJCX0sCgkJcnRtcGE6IHsgLy8gUlRNUCBBVURJTwoJCQljb2RlYzogJ2F1ZGlvL3J0bXA7IGNvZGVjcz0icnRtcCInLAoJCQlmbGFzaENhblBsYXk6IHRydWUsCgkJCW1lZGlhOiAnYXVkaW8nCgkJfSwKCQltNHY6IHsgLy8gSC4yNjQgLyBNUDQKCQkJY29kZWM6ICd2aWRlby9tcDQ7IGNvZGVjcz0iYXZjMS40MkUwMUUsIG1wNGEuNDAuMiInLAoJCQlmbGFzaENhblBsYXk6IHRydWUsCgkJCW1lZGlhOiAndmlkZW8nCgkJfSwKCQlvZ3Y6IHsgLy8gT0dHCgkJCWNvZGVjOiAndmlkZW8vb2dnOyBjb2RlY3M9InRoZW9yYSwgdm9yYmlzIicsCgkJCWZsYXNoQ2FuUGxheTogZmFsc2UsCgkJCW1lZGlhOiAndmlkZW8nCgkJfSwKCQl3ZWJtdjogeyAvLyBXRUJNCgkJCWNvZGVjOiAndmlkZW8vd2VibTsgY29kZWNzPSJ2b3JiaXMsIHZwOCInLAoJCQlmbGFzaENhblBsYXk6IGZhbHNlLAoJCQltZWRpYTogJ3ZpZGVvJwoJCX0sCgkJZmx2OiB7IC8vIEZMViAvIEY0VgoJCQljb2RlYzogJ3ZpZGVvL3gtZmx2JywKCQkJZmxhc2hDYW5QbGF5OiB0cnVlLAoJCQltZWRpYTogJ3ZpZGVvJwoJCX0sCgkJcnRtcHY6IHsgLy8gUlRNUCBWSURFTwoJCQljb2RlYzogJ3ZpZGVvL3J0bXA7IGNvZGVjcz0icnRtcCInLAoJCQlmbGFzaENhblBsYXk6IHRydWUsCgkJCW1lZGlhOiAndmlkZW8nCgkJfQoJfSwKCWlzT2JqZWN0ID0gZnVuY3Rpb24odmFsKSB7IC8vIEJhc2ljIGNoZWNrIGZvciBPYmplY3QKCQlpZih2YWwgJiYgdHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgJiYgdmFsLmhhc093blByb3BlcnR5KSB7CgkJCXJldHVybiB0cnVlOwoJCX0gZWxzZSB7CgkJCXJldHVybiBmYWxzZTsKCQl9Cgl9LAoJZ2V0TWVkaWFUeXBlID0gZnVuY3Rpb24odXJsKSB7IC8vIEZ1bmN0aW9uIHRvIGdsZWFtIHRoZSBtZWRpYSB0eXBlIGZyb20gdGhlIFVSTAoJCXZhciBtZWRpYVR5cGUgPSBmYWxzZTsKCQlpZigvXC5tcDMkL2kudGVzdCh1cmwpKSB7CgkJCW1lZGlhVHlwZSA9ICdtcDMnOwoJCX0gZWxzZSBpZigvXC5tcDQkL2kudGVzdCh1cmwpIHx8IC9cLm00diQvaS50ZXN0KHVybCkpIHsKCQkJbWVkaWFUeXBlID0gJ200dic7CgkJfSBlbHNlIGlmKC9cLm00YSQvaS50ZXN0KHVybCkpIHsKCQkJbWVkaWFUeXBlID0gJ200YSc7CgkJfSBlbHNlIGlmKC9cLm9nZyQvaS50ZXN0KHVybCkgfHwgL1wub2dhJC9pLnRlc3QodXJsKSkgewoJCQltZWRpYVR5cGUgPSAnb2dhJzsKCQl9IGVsc2UgaWYoL1wub2d2JC9pLnRlc3QodXJsKSkgewoJCQltZWRpYVR5cGUgPSAnb2d2JzsKCQl9IGVsc2UgaWYoL1wud2VibSQvaS50ZXN0KHVybCkpIHsKCQkJbWVkaWFUeXBlID0gJ3dlYm12JzsKCQl9CgkJcmV0dXJuIG1lZGlhVHlwZTsKCX0sCglnZXRTdXBwbGllZCA9IGZ1bmN0aW9uKHVybCkgeyAvLyBGdW5jdGlvbiB0byBnZW5lcmF0ZSBhIHN1cHBsaWVkIG9wdGlvbiBmcm9tIGFuIHNyYyBvYmplY3QuIGllLiwgV2hlbiBzdXBwbGllZCBub3Qgc3BlY2lmaWVkLgoJCXZhciBzdXBwbGllZCA9ICcnLAoJCXNlcGFyYXRvciA9ICcnOwoJCWlmKGlzT2JqZWN0KHVybCkpIHsKCQkJLy8gR2VuZXJhdGUgc3VwcGxpZWQgb3B0aW9uIGZyb20gb2JqZWN0J3MgcHJvcGVydGllcy4gTm9uLWZvcm1hdCBwcm9wZXJ0aWVzIHdvdWxkIGJlIGlnbm9yZWQgYnkgalBsYXllci4gT3JkZXIgaXMgdW5wcmVkaWN0YWJsZS4KCQkJZm9yKHZhciBwcm9wIGluIHVybCkgewoJCQkJaWYodXJsLmhhc093blByb3BlcnR5KHByb3ApKSB7CgkJCQkJc3VwcGxpZWQgKz0gc2VwYXJhdG9yICsgcHJvcDsKCQkJCQlzZXBhcmF0b3IgPSAnLCc7CgkJCQl9CgkJCX0KCQl9CgkJaWYoREVCVUcpIGNvbnNvbGUubG9nKCdnZXRTdXBwbGllZCgpOiBHZW5lcmF0ZWQ6IHN1cHBsaWVkID0gIicgKyBzdXBwbGllZCArICciJyk7CgkJcmV0dXJuIHN1cHBsaWVkOwoJfTsKCglQb3Bjb3JuLnBsYXllciggJ2pwbGF5ZXInLCB7CgkJX2NhblBsYXlUeXBlOiBmdW5jdGlvbiggY29udGFpbmVyVHlwZSwgdXJsICkgewoJCQkvLyB1cmwgOiBFaXRoZXIgYSBTdHJpbmcgb3IgYW4gT2JqZWN0IHN0cnVjdHVyZWQgc2ltaWxhciBhIGpQbGF5ZXIgbWVkaWEgb2JqZWN0LiBpZS4sIEFzIHVzZWQgYnkgc2V0TWVkaWEgaW4galBsYXllci4KCQkJLy8gVGhlIHVybCBvYmplY3QgbWF5IGFsc28gY29udGFpbiBhIHNvbHV0aW9uIGFuZCBzdXBwbGllZCBwcm9wZXJ0eS4KCgkJCS8vIERlZmluZSB0aGUgc3JjIG9iamVjdCBzdHJ1Y3R1cmUgaGVyZSEKCgkJCXZhciBjVHlwZSA9IGNvbnRhaW5lclR5cGUudG9Mb3dlckNhc2UoKSwKCQkJc3JjT2JqID0gewoJCQkJbWVkaWE6e30sCgkJCQlvcHRpb25zOnt9CgkJCX0sCgkJCXJWYWwgPSBmYWxzZSwgLy8gT25seSBhIGJvb2xlYW4gZmFsc2UgbWVhbnMgaXQgaXMgbm90IHN1cHBvcnRlZC4KCQkJbWVkaWFUeXBlOwoKCQkJaWYoY1R5cGUgIT09ICd2aWRlbycgJiYgY1R5cGUgIT09ICdhdWRpbycpIHsKCgkJCQlpZih0eXBlb2YgdXJsID09PSAnc3RyaW5nJykgewoJCQkJCS8vIENoZWNrIGl0IHN0YXJ0cyB3aXRoIGh0dHAsIHNvIHRoZSBVUkwgaXMgYWJzb2x1dGUuLi4gV2VsbCwgaXQgaXMgbm90IGEgcGVyZmVjdCBjaGVjay4KCQkJCQlpZigvXmh0dHAuKi9pLnRlc3QodXJsKSkgewoJCQkJCQltZWRpYVR5cGUgPSBnZXRNZWRpYVR5cGUodXJsKTsKCQkJCQkJaWYobWVkaWFUeXBlKSB7CgkJCQkJCQlzcmNPYmoubWVkaWFbbWVkaWFUeXBlXSA9IHVybDsKCQkJCQkJCXNyY09iai5vcHRpb25zLnNvbHV0aW9uID0gU09MVVRJT047CgkJCQkJCQlzcmNPYmoub3B0aW9ucy5zdXBwbGllZCA9IG1lZGlhVHlwZTsKCQkJCQkJfQoJCQkJCX0KCQkJCX0gZWxzZSB7CgkJCQkJc3JjT2JqID0gdXJsOyAvLyBBc3N1bWUgdGhlIHVybCBpcyBhbiBzcmMgb2JqZWN0LgoJCQkJfQoKCQkJCS8vIENoZWNrIGZvciBPYmplY3QgYW5kIGFwcHJvcHJpYXRlIG1pbmltdW0gZGF0YSBzdHJ1Y3R1cmUuCgkJCQlpZihpc09iamVjdChzcmNPYmopICYmIGlzT2JqZWN0KHNyY09iai5tZWRpYSkpIHsKCgkJCQkJaWYoIWlzT2JqZWN0KHNyY09iai5vcHRpb25zKSkgewoJCQkJCQlzcmNPYmoub3B0aW9ucyA9IHt9OwoJCQkJCX0KCgkJCQkJaWYoIXNyY09iai5vcHRpb25zLnNvbHV0aW9uKSB7CgkJCQkJCXNyY09iai5vcHRpb25zLnNvbHV0aW9uID0gU09MVVRJT047CgkJCQkJfQoKCQkJCQlpZighc3JjT2JqLm9wdGlvbnMuc3VwcGxpZWQpIHsKCQkJCQkJc3JjT2JqLm9wdGlvbnMuc3VwcGxpZWQgPSBnZXRTdXBwbGllZChzcmNPYmoubWVkaWEpOwoJCQkJCX0KCgkJCQkJLy8gRmlndXJlIG91dCBob3cgalBsYXllciB3aWxsIHBsYXkgaXQuCgkJCQkJLy8gVGhpcyBtYXkgbm90IHdvcmsgcHJvcGVybHkgd2hlbiBib3RoIGF1ZGlvIGFuZCB2aWRlbyBpcyBzdXBwbGllZC4gaWUuLCBBIG1lZGlhIHBsYXllci4gQnV0IGl0IHNob3VsZCByZXR1cm4gdHJ1ZXRoeSBhbmQgalBsYXllciBjYW4gZmlndXJlIGl0IG91dC4KCQkJCQkKCQkJCQl2YXIgc29sdXRpb24gPSBzcmNPYmoub3B0aW9ucy5zb2x1dGlvbi50b0xvd2VyQ2FzZSgpLnNwbGl0KCIsIiksIC8vIENyZWF0ZSB0aGUgc29sdXRpb24gYXJyYXksIHdpdGggcHJvcml0eSBiYXNlZCBvbiB0aGUgb3JkZXIgb2YgdGhlIHNvbHV0aW9uIHN0cmluZy4KCQkJCQlzdXBwbGllZCA9IHNyY09iai5vcHRpb25zLnN1cHBsaWVkLnRvTG93ZXJDYXNlKCkuc3BsaXQoIiwiKTsgLy8gQ3JlYXRlIHRoZSBzdXBwbGllZCBmb3JtYXRzIGFycmF5LCB3aXRoIHByb3JpdHkgYmFzZWQgb24gdGhlIG9yZGVyIG9mIHRoZSBzdXBwbGllZCBmb3JtYXRzIHN0cmluZy4KCgkJCQkJZm9yKHZhciBzb2wgPSAwOyBzb2wgPCBzb2x1dGlvbi5sZW5ndGg7IHNvbCsrKSB7CgoJCQkJCQl2YXIgc29sdXRpb25UeXBlID0gc29sdXRpb25bc29sXS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgIiIpLCAvL3RyaW0KCQkJCQkJY2hlY2tpbmdIdG1sID0gc29sdXRpb25UeXBlID09PSAnaHRtbCcsCgkJCQkJCWNoZWNraW5nRmxhc2ggPSBzb2x1dGlvblR5cGUgPT09ICdmbGFzaCcsCgkJCQkJCW1lZGlhRWxlbTsKCgkJCQkJCWZvcih2YXIgZm10ID0gMDsgZm10IDwgc3VwcGxpZWQubGVuZ3RoOyBmbXQrKykgewoJCQkJCQkJbWVkaWFUeXBlID0gc3VwcGxpZWRbZm10XS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgIiIpOyAvL3RyaW0KCQkJCQkJCWlmKGZvcm1hdFttZWRpYVR5cGVdKSB7IC8vIENoZWNrIGZvcm1hdCBpcyB2YWxpZC4KCgkJCQkJCQkJLy8gQ3JlYXRlIGFuIEhUTUw1IG1lZGlhIGVsZW1lbnQgZm9yIHRoZSB0eXBlIG9mIG1lZGlhLgoJCQkJCQkJCWlmKCFtZWRpYUVsZW0gJiYgY2hlY2tpbmdIdG1sKSB7CgkJCQkJCQkJCW1lZGlhRWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZm9ybWF0W21lZGlhVHlwZV0ubWVkaWEpOwoJCQkJCQkJCX0KCQkJCQkJCQkvLyBTZWUgaWYgdGhlIEhUTUw1IG1lZGlhIGVsZW1lbnQgY2FuIHBsYXkgdGhlIE1JTUUgLyBDb2RlYyB0eXBlLgoJCQkJCQkJCS8vIEZsYXNoIGFsc28gcmV0dXJucyB0aGUgb2JqZWN0IGlmIHRoZSBmb3JtYXQgaXMgcGxheWFibGUsIHNvIGl0IGlzIHRydWV0aHksIGJ1dCB0aGF0IGh0bWwgcHJvcGVydHkgaXMgZmFsc2UuCgkJCQkJCQkJLy8gVGhpcyBhc3N1bWVzIEZsYXNoIGlzIGF2YWlsYWJsZSwgYnV0IHRoYXQgc2hvdWxkIGJlIGRlYWx0IHdpdGggYnkgalBsYXllciBpZiB0aGF0IGhhcHBlbnMuCgkJCQkJCQkJdmFyIGh0bWxDYW5QbGF5ID0gISEobWVkaWFFbGVtICYmIG1lZGlhRWxlbS5jYW5QbGF5VHlwZSAmJiBtZWRpYUVsZW0uY2FuUGxheVR5cGUoZm9ybWF0W21lZGlhVHlwZV0uY29kZWMpKSwKCQkJCQkJCQlodG1sV2lsbFBsYXkgPSBodG1sQ2FuUGxheSAmJiBjaGVja2luZ0h0bWwsCgkJCQkJCQkJZmxhc2hXaWxsUGxheSA9IGZvcm1hdFttZWRpYVR5cGVdLmZsYXNoQ2FuUGxheSAmJiBjaGVja2luZ0ZsYXNoOwoJCQkJCQkJCS8vIFRoZSBmaXJzdCBvbmUgZm91bmQgd2lsbCBtYXRjaCB3aGF0IGpQbGF5ZXIgdXNlcy4KCQkJCQkJCQlpZihodG1sV2lsbFBsYXkgfHwgZmxhc2hXaWxsUGxheSkgewoJCQkJCQkJCQlyVmFsID0gewoJCQkJCQkJCQkJaHRtbDogaHRtbFdpbGxQbGF5LAoJCQkJCQkJCQkJdHlwZTogbWVkaWFUeXBlCgkJCQkJCQkJCX07CgkJCQkJCQkJCXNvbCA9IHNvbHV0aW9uLmxlbmd0aDsgLy8gRXhpdCBzb2x1dGlvbiBsb29wCgkJCQkJCQkJCWZtdCA9IHN1cHBsaWVkLmxlbmd0aDsgLy8gRXhpdCBzdXBwbGllZCBsb29wCgkJCQkJCQkJfQoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJfQoJCQkJfQoJCQl9CgkJCXJldHVybiByVmFsOwoJCX0sCgkJLy8gX3NldHVwOiBmdW5jdGlvbiggb3B0aW9ucyApIHsgLy8gV2FybmluZzogb3B0aW9ucyBpcyBkZXByZWNhdGVkLgoJCV9zZXR1cDogZnVuY3Rpb24oKSB7CgkJCXZhciBtZWRpYSA9IHRoaXMsCgkJCW15UGxheWVyLCAvLyBUaGUgalF1ZXJ5IHNlbGVjdG9yIG9mIHRoZSBqUGxheWVyIGVsZW1lbnQuIFVzdWFsbHkgYSA8ZGl2PgoJCQlqUGxheWVyT2JqLCAvLyBUaGUgalBsYXllciBkYXRhIGluc3RhbmNlLiBGb3IgcGVyZm9ybWFuY2UgYW5kIERSWSBjb2RlLgoJCQltZWRpYVR5cGUgPSAndW5rbm93bicsCgkJCWpwTWVkaWEgPSB7fSwKCQkJanBPcHRpb25zID0ge30sCgkJCXJlYWR5ID0gZmFsc2UsIC8vIFVzZWQgZHVyaW5nIGluaXQgdG8gb3ZlcnJpZGUgdGhlIGFubm95aW5nIGR1cmF0aW9uIGRlcGVuZGFuY2UgaW4gdGhlIHRyYWNrIGV2ZW50IHBhZGRpbmcgZHVyaW5nIFBvcGNvcm4ncyBpc1JlYWR5KCkuIGllLiwgV2UgaXMgcmVhZHkgYWZ0ZXIgbG9hZGVkZGF0YSBhbmQgZHVyYXRpb24gY2FuIHRoZW4gYmUgc2V0IHJlYWwgdmFsdWUgYXQgbGVpc3VyZS4KCQkJZHVyYXRpb24gPSAwLCAvLyBGb3IgdGhlIGR1cmF0aW9uY2hhbmdlIGV2ZW50IHdpdGggYm90aCBIVE1MNSBhbmQgRmxhc2ggc29sdXRpb25zLiBVc2VkIHdpdGggJ3JlYWR5JyB0byBrZWVwIGNvbnRyb2wgZHVyaW5nIHRoZSBQb3Bjb3JuIGlzUmVhZHkoKSB2aWEgbG9hZGVkZGF0YSBldmVudC4gKER1cmF0aW9uPTAgaXMgYmFkLikKCQkJZHVyYXRpb25jaGFuZ2VJZCA9IG51bGwsIC8vIEEgdGltZW91dCBJRCB1c2VkIHdpdGggZGVsYXllZCBkdXJhdGlvbmNoYW5nZSBldmVudC4gKEJlY2F1c2Ugb2YgdGhlIGR1cmF0aW9uPU5hTiBmdWRnZSB0byBhdm9pZCBQb3Bjb3JuIHRyYWNrIGV2ZW50IGNvcnJ1cHRpb24uKQoJCQljYW5wbGF5dGhyb3VnaCA9IGZhbHNlLAoJCQllcnJvciA9IG51bGwsIC8vIFRoZSBNZWRpYUVycm9yIG9iamVjdC4KCgkJCWRpc3BhdGNoRHVyYXRpb25DaGFuZ2UgPSBmdW5jdGlvbigpIHsKCQkJCWlmKHJlYWR5KSB7CgkJCQkJaWYoREVCVUcpIGNvbnNvbGUubG9nKCdEaXNwYXRjaGVkIGV2ZW50IDogZHVyYXRpb25jaGFuZ2UgOiAnICsgZHVyYXRpb24pOwoJCQkJCW1lZGlhLmRpc3BhdGNoRXZlbnQoJ2R1cmF0aW9uY2hhbmdlJyk7CgkJCQl9IGVsc2UgewoJCQkJCWlmKERFQlVHKSBjb25zb2xlLmxvZygnREVMQVlFRCBFVkVOVCAoIXJlYWR5KSA6IGR1cmF0aW9uY2hhbmdlIDogJyArIGR1cmF0aW9uKTsKCQkJCQljbGVhclRpbWVvdXQoZHVyYXRpb25jaGFuZ2VJZCk7IC8vIFN0b3AgbXVsdGlwbGUgdHJpZ2dlcnMgY2F1c2luZyBtdWx0aXBsZSB0aW1lb3V0cyBydW5uaW5nIGluIHBhcmFsbGVsLgoJCQkJCWR1cmF0aW9uY2hhbmdlSWQgPSBzZXRUaW1lb3V0KGRpc3BhdGNoRHVyYXRpb25DaGFuZ2UsIDI1MCk7CgkJCQl9CgkJCX0sCgoJCQlqUGxheWVyRmxhc2hFdmVudHNQYXRjaCA9IGZ1bmN0aW9uKCkgewoKCQkJCS8qIEV2ZW50cyBhbHJlYWR5IHN1cHBvcnRlZCBieSBqUGxheWVyIEZsYXNoOgoJCQkJICogbG9hZHN0YXJ0CgkJCQkgKiBsb2FkZWRtZXRhZGF0YSAoTTRBLCBNNFYpCgkJCQkgKiBwcm9ncmVzcwoJCQkJICogcGxheQoJCQkJICogcGF1c2UKCQkJCSAqIHNlZWtpbmcKCQkJCSAqIHNlZWtlZAoJCQkJICogdGltZXVwZGF0ZQoJCQkJICogZW5kZWQKCQkJCSAqIHZvbHVtZWNoYW5nZQoJCQkJICogZXJyb3IgPC0gU2VlIHRoZSBjdXN0b20gaGFuZGxlciBpbiBqUGxheWVySW5pdCgpCgkJCQkgKi8KCgkJCQkvKiBFdmVudHMgcGF0Y2hlZDoKCQkJCSAqIGxvYWRlZGRhdGEKCQkJCSAqIGR1cmF0aW9uY2hhbmdlCgkJCQkgKiBjYW5wbGF5dGhyb3VnaAoJCQkJICogcGxheWluZwoJCQkJICovCgoJCQkJLyogRXZlbnRzIE5PVCBwYXRjaGVkOgoJCQkJICogc3VzcGVuZAoJCQkJICogYWJvcnQKCQkJCSAqIGVtcHRpZWQKCQkJCSAqIHN0YWxsZWQKCQkJCSAqIGxvYWRlZG1ldGFkYXRhIChNUDMpCgkJCQkgKiB3YWl0aW5nCgkJCQkgKiBjYW5wbGF5CgkJCQkgKiByYXRlY2hhbmdlCgkJCQkgKi8KCgkJCQkvLyBUcmlnZ2VyaW5nIHBhdGNoZWQgZXZlbnRzIHRocm91Z2ggdGhlIGpQbGF5ZXIgT2JqZWN0IHNvIHRoZSBldmVudHMgYXJlIGhvbW9nZW5lb3VzLiBpZS4sIFRoZSBjb250YWluIHRoZSBldmVudC5qUGxheWVyIGRhdGEgc3RydWN0dXJlLgoKCQkJCXZhciBjaGVja0R1cmF0aW9uID0gZnVuY3Rpb24oZXZlbnQpIHsKCQkJCQlpZihldmVudC5qUGxheWVyLnN0YXR1cy5kdXJhdGlvbiAhPT0gZHVyYXRpb24pIHsKCQkJCQkJZHVyYXRpb24gPSBldmVudC5qUGxheWVyLnN0YXR1cy5kdXJhdGlvbjsKCQkJCQkJZGlzcGF0Y2hEdXJhdGlvbkNoYW5nZSgpOwoJCQkJCX0KCQkJCX0sCgoJCQkJY2hlY2tDYW5QbGF5VGhyb3VnaCA9IGZ1bmN0aW9uKGV2ZW50KSB7CgkJCQkJaWYoIWNhbnBsYXl0aHJvdWdoICYmIGV2ZW50LmpQbGF5ZXIuc3RhdHVzLnNlZWtQZXJjZW50ID09PSAxMDApIHsKCQkJCQkJY2FucGxheXRocm91Z2ggPSB0cnVlOwoJCQkJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewoJCQkJCQkJaWYoREVCVUcpIGNvbnNvbGUubG9nKCdUcmlnZ2VyIDogY2FucGxheXRocm91Z2gnKTsKCQkJCQkJCWpQbGF5ZXJPYmouX3RyaWdnZXIoJC5qUGxheWVyLmV2ZW50LmNhbnBsYXl0aHJvdWdoKTsKCQkJCQkJfSwgMCk7CgkJCQkJfQoJCQkJfTsKCgkJCQlteVBsYXllci5iaW5kKCQualBsYXllci5ldmVudC5sb2Fkc3RhcnQsIGZ1bmN0aW9uKCkgewoJCQkJCXNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CgkJCQkJCWlmKERFQlVHKSBjb25zb2xlLmxvZygnVHJpZ2dlciA6IGxvYWRlZGRhdGEnKTsKCQkJCQkJalBsYXllck9iai5fdHJpZ2dlcigkLmpQbGF5ZXIuZXZlbnQubG9hZGVkZGF0YSk7CgkJCQkJfSwgMCk7CgkJCQl9KQoJCQkJLmJpbmQoJC5qUGxheWVyLmV2ZW50LnByb2dyZXNzLCBmdW5jdGlvbihldmVudCkgewoJCQkJCWNoZWNrRHVyYXRpb24oZXZlbnQpOwoJCQkJCWNoZWNrQ2FuUGxheVRocm91Z2goZXZlbnQpOwoJCQkJfSkKCQkJCS5iaW5kKCQualBsYXllci5ldmVudC50aW1ldXBkYXRlLCBmdW5jdGlvbihldmVudCkgewoJCQkJCWNoZWNrRHVyYXRpb24oZXZlbnQpOwoJCQkJCWNoZWNrQ2FuUGxheVRocm91Z2goZXZlbnQpOwoJCQkJfSkKCQkJCS5iaW5kKCQualBsYXllci5ldmVudC5wbGF5LCBmdW5jdGlvbigpIHsKCQkJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewoJCQkJCQlpZihERUJVRykgY29uc29sZS5sb2coJ1RyaWdnZXIgOiBwbGF5aW5nJyk7CgkJCQkJCWpQbGF5ZXJPYmouX3RyaWdnZXIoJC5qUGxheWVyLmV2ZW50LnBsYXlpbmcpOwoJCQkJCX0sIDApOwoJCQkJfSk7CgoJCQkJaWYoREVCVUcpIGNvbnNvbGUubG9nKCdDcmVhdGVkIENVU1RPTSBldmVudCBoYW5kbGVycyBmb3IgRkxBU0gnKTsKCQkJfSwKCgkJCWpQbGF5ZXJJbml0ID0gZnVuY3Rpb24oKSB7CgkJCQkoZnVuY3Rpb24oJCkgewoKCQkJCQlteVBsYXllciA9ICQoJyMnICsgIG1lZGlhLmlkKTsKCgkJCQkJaWYodHlwZW9mIG1lZGlhLnNyYyA9PT0gJ3N0cmluZycpIHsKCQkJCQkJbWVkaWFUeXBlID0gZ2V0TWVkaWFUeXBlKG1lZGlhLnNyYyk7CgkJCQkJCWpwTWVkaWFbbWVkaWFUeXBlXSA9IG1lZGlhLnNyYzsKCQkJCQkJanBPcHRpb25zLnN1cHBsaWVkID0gbWVkaWFUeXBlOwoJCQkJCQlqcE9wdGlvbnMuc29sdXRpb24gPSBTT0xVVElPTjsKCQkJCQl9IGVsc2UgaWYoaXNPYmplY3QobWVkaWEuc3JjKSkgewoJCQkJCQlqcE1lZGlhID0gaXNPYmplY3QobWVkaWEuc3JjLm1lZGlhKSA/IG1lZGlhLnNyYy5tZWRpYSA6IHt9OwoJCQkJCQlqcE9wdGlvbnMgPSBpc09iamVjdChtZWRpYS5zcmMub3B0aW9ucykgPyBtZWRpYS5zcmMub3B0aW9ucyA6IHt9OwoJCQkJCQlqcE9wdGlvbnMuc29sdXRpb24gPSBqcE9wdGlvbnMuc29sdXRpb24gfHwgU09MVVRJT047CgkJCQkJCWpwT3B0aW9ucy5zdXBwbGllZCA9IGpwT3B0aW9ucy5zdXBwbGllZCB8fCBnZXRTdXBwbGllZChtZWRpYS5zcmMubWVkaWEpOwoJCQkJCX0KCgkJCQkJLy8gQWxsb3cgdGhlIHN3ZlBhdGggdG8gYmUgc2V0IHRvIGxvY2FsIHNlcnZlci4gaWUuLCBJZiB0aGUgalBsYXllciBQbHVnaW4gaXMgbG9jYWwgYW5kIGFscmVhZHkgb24gdGhlIHBhZ2UsIHRoZW4geW91IGNhbiBhbHNvIHVzZSB0aGUgbG9jYWwgU1dGLgoJCQkJCWpwT3B0aW9ucy5zd2ZQYXRoID0ganBPcHRpb25zLnN3ZlBhdGggfHwgSlBMQVlFUl9TV0ZQQVRIOwoKCQkJCQlteVBsYXllci5iaW5kKCQualBsYXllci5ldmVudC5yZWFkeSwgZnVuY3Rpb24oZXZlbnQpIHsKCQkJCQkJaWYoZXZlbnQualBsYXllci5mbGFzaC51c2VkKSB7CgkJCQkJCQlqUGxheWVyRmxhc2hFdmVudHNQYXRjaCgpOwoJCQkJCQl9CgkJCQkJCS8vIFNldCB0aGUgbWVkaWEgYW5kZCBsb2FkIGl0LCBzbyB0aGF0IHRoZSBGbGFzaCBzb2x1dGlvbiBiZWhhdmVzIHNpbWlsYXIgdG8gSFRNTDUgc29sdXRpb24uCgkJCQkJCS8vIFRoaXMgYWxzbyBhbGxvd3MgdGhlIGxvYWRzdGFydCBldmVudCB0byBiZSB1c2VkIHRvIGtub3cgalBsYXllciBpcyByZWFkeS4KCQkJCQkJJCh0aGlzKS5qUGxheWVyKCdzZXRNZWRpYScsIGpwTWVkaWEpLmpQbGF5ZXIoJ2xvYWQnKTsKCQkJCQl9KTsKCgkJCQkJLy8gRG8gbm90IGF1dG8tYnViYmxlIHRoZSByZXNlcnZlZCBldmVudHMsIG5vciB0aGUgbG9hZGVkZGF0YSBhbmQgZHVyYXRpb25jaGFuZ2UgZXZlbnQsIHNpbmNlIHRoZSBkdXJhdGlvbiBtdXN0IGJlIGNhcmVmdWxseSBoYW5kbGVkIHdoZW4gbG9hZGVkZGF0YSBldmVudCBvY2N1cnMuCgkJCQkJLy8gU2VlIHRoZSBkdXJhdGlvbiBwcm9wZXJ0eSBjb2RlIGZvciBtb3JlIGRldGFpbHMuIChSYW50aW5nLikKCgkJCQkJdmFyIHJlc2VydmVkRXZlbnRzID0gJC5qUGxheWVyLnJlc2VydmVkRXZlbnQgKyAnIGxvYWRlZGRhdGEgZHVyYXRpb25jaGFuZ2UnLAoJCQkJCXJlc2VydmVkRXZlbnQgPSByZXNlcnZlZEV2ZW50cy5zcGxpdCgvXHMrL2cpOwoKCQkJCQkvLyBHZW5lcmF0ZSBldmVudCBoYW5kbGVycyBmb3IgYWxsIHRoZSBzdGFuZGFyZCBIVE1MNSBtZWRpYSBldmVudHMuIChFeGNlcHQgZHVyYXRpb25jaGFuZ2UpCgoJCQkJCXZhciBiaW5kRXZlbnQgPSBmdW5jdGlvbihuYW1lKSB7CgkJCQkJCW15UGxheWVyLmJpbmQoJC5qUGxheWVyLmV2ZW50W25hbWVdLCBmdW5jdGlvbihldmVudCkgewoJCQkJCQkJaWYoREVCVUcpIGNvbnNvbGUubG9nKCdEaXNwYXRjaGVkIGV2ZW50OiAnICsgbmFtZSArIChldmVudCAmJiBldmVudC5qUGxheWVyID8gJyAoJyArIGV2ZW50LmpQbGF5ZXIuc3RhdHVzLmN1cnJlbnRUaW1lICsgJ3MpJyA6ICcnKSk7IC8vIE11c3QgYmUgYWZ0ZXIgZGlzcGF0Y2ggZm9yIHNvbWUgcmVhc29uIG9uIEZpcmVmb3gvT3BlcmEKCQkJCQkJCW1lZGlhLmRpc3BhdGNoRXZlbnQobmFtZSk7CgkJCQkJCX0pOwoJCQkJCQlpZihERUJVRykgY29uc29sZS5sb2coJ0NyZWF0ZWQgZXZlbnQgaGFuZGxlciBmb3I6ICcgKyBuYW1lKTsKCQkJCQl9OwoKCQkJCQlmb3IodmFyIGV2ZW50TmFtZSBpbiAkLmpQbGF5ZXIuZXZlbnQpIHsKCQkJCQkJaWYoJC5qUGxheWVyLmV2ZW50Lmhhc093blByb3BlcnR5KGV2ZW50TmFtZSkpIHsKCQkJCQkJCXZhciBuYXRpdmVFdmVudCA9IHRydWU7CgkJCQkJCQlmb3IodmFyIGlSZXMgaW4gcmVzZXJ2ZWRFdmVudCkgewoJCQkJCQkJCWlmKHJlc2VydmVkRXZlbnQuaGFzT3duUHJvcGVydHkoaVJlcykpIHsKCQkJCQkJCQkJaWYocmVzZXJ2ZWRFdmVudFtpUmVzXSA9PT0gZXZlbnROYW1lKSB7CgkJCQkJCQkJCQluYXRpdmVFdmVudCA9IGZhbHNlOwoJCQkJCQkJCQkJYnJlYWs7CgkJCQkJCQkJCX0KCQkJCQkJCQl9CgkJCQkJCQl9CgkJCQkJCQlpZihuYXRpdmVFdmVudCkgewoJCQkJCQkJCWJpbmRFdmVudChldmVudE5hbWUpOwoJCQkJCQkJfSBlbHNlIHsKCQkJCQkJCQlpZihERUJVRykgY29uc29sZS5sb2coJ1NraXBwZWQgYXV0byBldmVudCBoYW5kbGVyIGNyZWF0aW9uIGZvcjogJyArIGV2ZW50TmFtZSk7CgkJCQkJCQl9CgkJCQkJCX0KCQkJCQl9CgoJCQkJCW15UGxheWVyLmJpbmQoJC5qUGxheWVyLmV2ZW50LmxvYWRlZGRhdGEsIGZ1bmN0aW9uKGV2ZW50KSB7CgkJCQkJCWlmKERFQlVHKSBjb25zb2xlLmxvZygnRGlzcGF0Y2hlZCBldmVudDogbG9hZGVkZGF0YScgKyAoZXZlbnQgJiYgZXZlbnQualBsYXllciA/ICcgKCcgKyBldmVudC5qUGxheWVyLnN0YXR1cy5jdXJyZW50VGltZSArICdzKScgOiAnJykpOwoJCQkJCQltZWRpYS5kaXNwYXRjaEV2ZW50KCdsb2FkZWRkYXRhJyk7CgkJCQkJCXJlYWR5ID0gdHJ1ZTsKCQkJCQl9KTsKCQkJCQlpZihERUJVRykgY29uc29sZS5sb2coJ0NyZWF0ZWQgQ1VTVE9NIGV2ZW50IGhhbmRsZXIgZm9yOiBsb2FkZWRkYXRhJyk7CgoJCQkJCW15UGxheWVyLmJpbmQoJC5qUGxheWVyLmV2ZW50LmR1cmF0aW9uY2hhbmdlLCBmdW5jdGlvbihldmVudCkgewoJCQkJCQlkdXJhdGlvbiA9IGV2ZW50LmpQbGF5ZXIuc3RhdHVzLmR1cmF0aW9uOwoJCQkJCQlkaXNwYXRjaER1cmF0aW9uQ2hhbmdlKCk7CgkJCQkJfSk7CgkJCQkJaWYoREVCVUcpIGNvbnNvbGUubG9nKCdDcmVhdGVkIENVU1RPTSBldmVudCBoYW5kbGVyIGZvcjogZHVyYXRpb25jaGFuZ2UnKTsKCgkJCQkJLy8gVGhlIGVycm9yIGV2ZW50IGlzIGEgc3BlY2lhbCBjYXNlLiBQbHVzIGpQbGF5ZXIgZXJyb3IgZXZlbnQgYXNzdW1lcyBpdCBpcyBhIGJyb2tlbiBVUkwuIChJdCBjb3VsZCBhbHNvIGJlIGEgZGVjb2RlciBlcnJvci4uLiBPciBhYm9ydGVkIG9yIGEgTmV0d29yayBlcnJvci4pCgkJCQkJbXlQbGF5ZXIuYmluZCgkLmpQbGF5ZXIuZXZlbnQuZXJyb3IsIGZ1bmN0aW9uKGV2ZW50KSB7CgkJCQkJCS8vIE5vdCBzdXJlIGhvdyB0byBoYW5kbGUgdGhlIGVycm9yIHNpdHVhdGlvbi4gUG9wY29ybiBkb2VzIG5vdCBhcHBlYXIgdG8gaGF2ZSB0aGUgZXJyb3Igb3IgZXJyb3IuY29kZSBwcm9wZXJ0eSBkb2N1bWVudGVkIGhlcmU6IGh0dHA6Ly9wb3Bjb3JuanMub3JnL3BvcGNvcm4tZG9jcy9tZWRpYS1tZXRob2RzLwoJCQkJCQkvLyBJZiBhbnkgZXJyb3IgZXZlbnQgaGFwcGVucywgdGhlbiBzb21ldGhpbmcgaGFzIGdvbmUgcGVhciBzaGFwZWQuCgoJCQkJCQllcnJvciA9IGV2ZW50LmpQbGF5ZXIuZXJyb3I7IC8vIFNhdmluZyBvYmplY3QgcG9pbnRlciwgbm90IGEgY29weSBvZiB0aGUgb2JqZWN0LiBQb3NzaWJsZSBnYXJiYWdlIGNvbGxlY3Rpb24gaXNzdWUuLi4gQnV0IHRoZSBwbGF5ZXIgaXMgZGVhZCBhbnl3YXksIHNvIGRvbid0IGNhcmUuCgoJCQkJCQlpZihlcnJvci50eXBlID09PSAkLmpQbGF5ZXIuZXJyb3IuVVJMKSB7CgkJCQkJCQllcnJvci5jb2RlID0gNDsgLy8gTUVESUFfRVJSX1NSQ19OT1RfU1VQUE9SVEVEIHNpbmNlIGpQbGF5ZXIgbWFrZXMgdGhpcyBhc3N1bXB0aW9uLiBJdCBpcyB0aGUgbW9zdCBjb21tb24gZXJyb3IsIHRoZW4gdGhlIGRlY29kZSBlcnJvci4gTmV2ZXIgc2VlbiBlaXRoZXIgb2YgdGhlIG90aGVyIDIgZXJyb3IgdHlwZXMgb2NjdXIuCgkJCQkJCX0gZWxzZSB7CgkJCQkJCQllcnJvci5jb2RlID0gMDsgLy8gSXQgd2FzIGEgalBsYXllciBlcnJvciwgbm90IGFuIEhUTUw1IG1lZGlhIGVycm9yLgoJCQkJCQl9CgoJCQkJCQlpZihERUJVRykgY29uc29sZS5sb2coJ0Rpc3BhdGNoZWQgZXZlbnQ6IGVycm9yJyk7CgkJCQkJCWlmKERFQlVHKSBjb25zb2xlLmRpcihlcnJvcik7CgkJCQkJCW1lZGlhLmRpc3BhdGNoRXZlbnQoJ2Vycm9yJyk7CgkJCQkJfSk7CgkJCQkJaWYoREVCVUcpIGNvbnNvbGUubG9nKCdDcmVhdGVkIENVU1RPTSBldmVudCBoYW5kbGVyIGZvcjogZXJyb3InKTsKCgkJCQkJUG9wY29ybi5wbGF5ZXIuZGVmaW5lUHJvcGVydHkoIG1lZGlhLCAnZXJyb3InLCB7CgkJCQkJCXNldDogZnVuY3Rpb24oKSB7CgkJCQkJCQkvLyBSZWFkLW9ubHkgcHJvcGVydHkKCQkJCQkJCXJldHVybiBlcnJvcjsKCQkJCQkJfSwKCQkJCQkJZ2V0OiBmdW5jdGlvbigpIHsKCQkJCQkJCXJldHVybiBlcnJvcjsKCQkJCQkJfQoJCQkJCX0pOwoKCQkJCQlQb3Bjb3JuLnBsYXllci5kZWZpbmVQcm9wZXJ0eSggbWVkaWEsICdjdXJyZW50VGltZScsIHsKCQkJCQkJc2V0OiBmdW5jdGlvbiggdmFsICkgewoJCQkJCQkJaWYoalBsYXllck9iai5zdGF0dXMucGF1c2VkKSB7CgkJCQkJCQkJbXlQbGF5ZXIualBsYXllcigncGF1c2UnLCB2YWwpOwoJCQkJCQkJfSBlbHNlIHsKCQkJCQkJCQlteVBsYXllci5qUGxheWVyKCdwbGF5JywgdmFsKTsKCQkJCQkJCX0KCQkJCQkJCXJldHVybiB2YWw7CgkJCQkJCX0sCgkJCQkJCWdldDogZnVuY3Rpb24oKSB7CgkJCQkJCQlyZXR1cm4galBsYXllck9iai5zdGF0dXMuY3VycmVudFRpbWU7CgkJCQkJCX0KCQkJCQl9KTsKCgkJCQkJLyogVGhlIGpveSBvZiBkdXJhdGlvbiBhbmQgdGhlIGxvYWRlZGRhdGEgZXZlbnQgaXNSZWFkeSgpIGhhbmRsZXIKCQkJCQkgKiBUaGUgZHVyYXRpb24gaXMgYXNzdW1lZCB0byBiZSBhIE5hTiBvciBhIHZhbGlkIGR1cmF0aW9uLgoJCQkJCSAqIGpQbGF5ZXIgdXNlcyB6ZXJvIGluc3RlYWQgb2YgYSBOYU4gYW5kIHRoaXMgc2NyZXdzIHVwIHRoZSBQb3Bjb3JuIHRyYWNrIGV2ZW50IHN0YXJ0L2VuZCBhcnJheXMgcGFkZGluZy4KCQkJCQkgKiBUaGlzIGxpbmUgaGVyZToKCQkJCQkgKiAgdmlkZW9EdXJhdGlvblBsdXMgPSBkdXJhdGlvbiAhPSBkdXJhdGlvbiA/IE51bWJlci5NQVhfVkFMVUUgOiBkdXJhdGlvbiArIDE7CgkJCQkJICogTm90IHN1cmUgd2h5IGl0IGlzIG5vdCBzaW1wbHk6CgkJCQkJICogIHZpZGVvRHVyYXRpb25QbHVzID0gTnVtYmVyLk1BWF9WQUxVRTsgLy8gV2hvIGNhcmVzIGlmIHRoZSBwYWRkaW5nIGlzIGNsb3NlIHRvIHRoZSByZWFsIGR1cmF0aW9uPwoJCQkJCSAqIFNvIGlmIHlvdSB0cmlnZ2VyIGxvYWRlZGRhdGEgYmVmb3JlIHRoZSBkdXJhdGlvbiBpcyBjb3JyZWN0LCB0aGUgdHJhY2sgZXZlbnQgcGFkZGluZyBpcyBzY3Jld2VkIHVwLiAoSXQgcGFkcyB0aGUgc3RhcnQsIG5vdCB0aGUgZW5kLi4uIFdlbGwsIGR1cmF0aW9uKzEgPSAwKzEgPSAxcykKCQkJCQkgKiBUaGF0IGxpbmUgbWFrZXMgdGhlIE1QMyBGbGFzaCBmYWxsYmFjayBkaWZmaWN1bHQgdG8gc2V0dXAuIFRoZSB3aG9sZSBNUDMgd2lsbCBuZWVkIHRvIGxvYWQgYmVmb3JlIHRoZSBkdXJhdGlvbiBpcyBrbm93bi4KCQkJCQkgKiBQbGFubmluZyBvbiB1c2luZyBhIE5hTiBmb3IgZHVyYXRpb24gdW50aWwgYSA+MCB2YWx1ZSBpcyBmb3VuZC4uLiBFeGNlcHQgd2l0aCBNUDMsIHdoZXJlIHNlZWtQZXJjZW50IG11c3QgYmUgMTAwJSBiZWZvcmUgc2V0dGluZyB0aGUgZHVyYXRpb24uCgkJCQkJICogV2h5IG5vdCBqdXN0IHVzZSBhIE5hTiBkdXJpbmcgaW5pdC4uLiBBbmQgdGhlbiBjb3JyZWN0IHRoZSBkdXJhdGlvbiBsYXRlcj8KCQkJCQkgKi8KCgkJCQkJUG9wY29ybi5wbGF5ZXIuZGVmaW5lUHJvcGVydHkoIG1lZGlhLCAnZHVyYXRpb24nLCB7CgkJCQkJCXNldDogZnVuY3Rpb24oKSB7CgkJCQkJCQkvLyBSZWFkLW9ubHkgcHJvcGVydHkKCQkJCQkJCWlmKHJlYWR5KSB7CgkJCQkJCQkJcmV0dXJuIGR1cmF0aW9uOwoJCQkJCQkJfSBlbHNlIHsKCQkJCQkJCQlyZXR1cm4gTmFOOwoJCQkJCQkJfQoJCQkJCQl9LAoJCQkJCQlnZXQ6IGZ1bmN0aW9uKCkgewoJCQkJCQkJaWYocmVhZHkpIHsKCQkJCQkJCQlyZXR1cm4gZHVyYXRpb247IC8vIFBvcGNvcm4gaGFzIGluaXRpYWxpemVkLCB3ZSBjYW4gbm93IHVzZSBkdXJhdGlvbiB6ZXJvIG9yIHdoYXRldmVyIHdpdGhvdXQgZmVhci4KCQkJCQkJCX0gZWxzZSB7CgkJCQkJCQkJcmV0dXJuIE5hTjsgLy8gS2VlcCB0aGUgZHVyYXRpb24gYSBOYU4gdW50aWwgYWZ0ZXIgbG9hZGVkZGF0YSBldmVudCBoYXMgb2NjdXJyZWQuIE90aGVyd2lzZSBQb3Bjb3JuIHRyYWNrIGV2ZW50IHBhZGRpbmcgaXMgY29ycnVwdGVkLgoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJfSk7CgoJCQkJCVBvcGNvcm4ucGxheWVyLmRlZmluZVByb3BlcnR5KCBtZWRpYSwgJ211dGVkJywgewoJCQkJCQlzZXQ6IGZ1bmN0aW9uKCB2YWwgKSB7CgkJCQkJCQlteVBsYXllci5qUGxheWVyKCdtdXRlJywgdmFsKTsKCQkJCQkJCXJldHVybiBqUGxheWVyT2JqLm9wdGlvbnMubXV0ZWQ7CgkJCQkJCX0sCgkJCQkJCWdldDogZnVuY3Rpb24oKSB7CgkJCQkJCQlyZXR1cm4galBsYXllck9iai5vcHRpb25zLm11dGVkOwoJCQkJCQl9CgkJCQkJfSk7CgoJCQkJCVBvcGNvcm4ucGxheWVyLmRlZmluZVByb3BlcnR5KCBtZWRpYSwgJ3ZvbHVtZScsIHsKCQkJCQkJc2V0OiBmdW5jdGlvbiggdmFsICkgewoJCQkJCQkJbXlQbGF5ZXIualBsYXllcigndm9sdW1lJywgdmFsKTsKCQkJCQkJCXJldHVybiBqUGxheWVyT2JqLm9wdGlvbnMudm9sdW1lOwoJCQkJCQl9LAoJCQkJCQlnZXQ6IGZ1bmN0aW9uKCkgewoJCQkJCQkJcmV0dXJuIGpQbGF5ZXJPYmoub3B0aW9ucy52b2x1bWU7CgkJCQkJCX0KCQkJCQl9KTsKCgkJCQkJUG9wY29ybi5wbGF5ZXIuZGVmaW5lUHJvcGVydHkoIG1lZGlhLCAncGF1c2VkJywgewoJCQkJCQlzZXQ6IGZ1bmN0aW9uKCkgewoJCQkJCQkJLy8gUmVhZC1vbmx5IHByb3BlcnR5CgkJCQkJCQlyZXR1cm4galBsYXllck9iai5zdGF0dXMucGF1c2VkOwoJCQkJCQl9LAoJCQkJCQlnZXQ6IGZ1bmN0aW9uKCkgewoJCQkJCQkJcmV0dXJuIGpQbGF5ZXJPYmouc3RhdHVzLnBhdXNlZDsKCQkJCQkJfQoJCQkJCX0pOwoKCQkJCQltZWRpYS5wbGF5ID0gZnVuY3Rpb24oKSB7CgkJCQkJCW15UGxheWVyLmpQbGF5ZXIoJ3BsYXknKTsKCQkJCQl9OwoJCQkJCW1lZGlhLnBhdXNlID0gZnVuY3Rpb24oKSB7CgkJCQkJCW15UGxheWVyLmpQbGF5ZXIoJ3BhdXNlJyk7CgkJCQkJfTsKCgkJCQkJbXlQbGF5ZXIualBsYXllcihqcE9wdGlvbnMpOyAvLyBJbnN0YW5jZSBqUGxheWVyLiBOb3RlIHRoYXQgdGhlIG9wdGlvbnMgc2hvdWxkIG5vdCBoYXZlIGEgcmVhZHkgZXZlbnQgZGVmaW5lZC4uLiBLaWxsIGl0IGJ5IGRlZmF1bHQ/CgkJCQkJalBsYXllck9iaiA9IG15UGxheWVyLmRhdGEoJ2pQbGF5ZXInKTsKCgkJCQl9KGpRdWVyeSkpOwoJCQl9LAoKCQkJalBsYXllckNoZWNrID0gZnVuY3Rpb24oKSB7CgkJCQlpZiAoIWpRdWVyeS5qUGxheWVyKSB7CgkJCQkJaWYgKCFqUGxheWVyRG93bmxvYWRpbmcpIHsKCQkJCQkJalBsYXllckRvd25sb2FkaW5nID0gdHJ1ZTsKCQkJCQkJUG9wY29ybi5nZXRTY3JpcHQoSlBMQVlFUl9TQ1JJUFQsIGZ1bmN0aW9uKCkgewoJCQkJCQkJalBsYXllckRvd25sb2FkaW5nID0gZmFsc2U7CgkJCQkJCQlqUGxheWVySW5pdCgpOwoJCQkJCQl9KTsKCQkJCQl9IGVsc2UgewoJCQkJCQlzZXRUaW1lb3V0KGpQbGF5ZXJDaGVjaywgMjUwKTsKCQkJCQl9CgkJCQl9IGVsc2UgewoJCQkJCWpQbGF5ZXJJbml0KCk7CgkJCQl9CgkJCX0sCgoJCQlqUXVlcnlDaGVjayA9IGZ1bmN0aW9uKCkgewoJCQkJaWYgKCF3aW5kb3cualF1ZXJ5KSB7CgkJCQkJaWYgKCFqUXVlcnlEb3dubG9hZGluZykgewoJCQkJCQlqUXVlcnlEb3dubG9hZGluZyA9IHRydWU7CgkJCQkJCVBvcGNvcm4uZ2V0U2NyaXB0KEpRVUVSWV9TQ1JJUFQsIGZ1bmN0aW9uKCkgewoJCQkJCQkJalF1ZXJ5RG93bmxvYWRpbmcgPSBmYWxzZTsKCQkJCQkJCWpQbGF5ZXJDaGVjaygpOwoJCQkJCQl9KTsKCQkJCQl9IGVsc2UgewoJCQkJCQlzZXRUaW1lb3V0KGpRdWVyeUNoZWNrLCAyNTApOwoJCQkJCX0KCQkJCX0gZWxzZSB7CgkJCQkJalBsYXllckNoZWNrKCk7CgkJCQl9CgkJCX07CgoJCQlqUXVlcnlDaGVjaygpOwoJCX0sCgkJX3RlYXJkb3duOiBmdW5jdGlvbigpIHsKCQkJalF1ZXJ5KCcjJyArICB0aGlzLmlkKS5qUGxheWVyKCdkZXN0cm95Jyk7CgkJfQoJfSk7Cgp9KFBvcGNvcm4pKTs=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/popcorn/popcorn.jplayer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogalBsYXllciBQbGF5ZXIgUGx1Z2luIGZvciBQb3Bjb3JuIEphdmFTY3JpcHQgTGlicmFyeQogKiBodHRwOi8vd3d3LmpwbGF5ZXIub3JnCiAqCiAqIENvcHlyaWdodCAoYykgMjAxMiAtIDIwMTQgSGFwcHl3b3JtIEx0ZAogKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuCiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQKICoKICogQXV0aG9yOiBNYXJrIEogUGFuYWdoaXN0b24KICogVmVyc2lvbjogMS4xLjYKICogRGF0ZTogMjd0aCBOb3ZlbWJlciAyMDE0CiAqCiAqIEZvciBQb3Bjb3JuIFZlcnNpb246IDEuMwogKiBGb3IgalBsYXllciBWZXJzaW9uOiAyLjkuMAogKiBSZXF1aXJlczogalF1ZXJ5IDEuNysKICogTm90ZTogalF1ZXJ5IGRlcGVuZGFuY3kgY2Fubm90IGJlIHJlbW92ZWQgc2luY2UgalBsYXllciAyIGlzIGEgalF1ZXJ5IHBsdWdpbi4gVXNlIG9mIGpRdWVyeSB3aWxsIGJlIGtlcHQgdG8gYSBtaW5pbXVtLgogKi8KCihmdW5jdGlvbihQb3Bjb3JuKSB7CgoJdmFyIEpRVUVSWV9TQ1JJUFQgPSAnLy9jb2RlLmpxdWVyeS5jb20vanF1ZXJ5LTEuMTEuMS5taW4uanMnLCAvLyBVc2VkIGlmIGpRdWVyeSBub3QgYWxyZWFkeSBwcmVzZW50LgoJSlBMQVlFUl9TQ1JJUFQgPSAnLy9jb2RlLmpwbGF5ZXIub3JnLzIuOS4wL2pwbGF5ZXIvanF1ZXJ5LmpwbGF5ZXIubWluLmpzJywgLy8gVXNlZCBpZiBqUGxheWVyIG5vdCBhbHJlYWR5IHByZXNlbnQuCglKUExBWUVSX1NXRlBBVEggPSAnLy9jb2RlLmpwbGF5ZXIub3JnLzIuOS4wL2pwbGF5ZXIvanF1ZXJ5LmpwbGF5ZXIuc3dmJywgLy8gVXNlZCBpZiBub3Qgc3BlY2lmaWVkIGluIGpQbGF5ZXIgb3B0aW9ucyB2aWEgU1JDIE9iamVjdC4KCVNPTFVUSU9OID0gJ2h0bWwsZmxhc2gnLCAvLyBUaGUgZGVmYXVsdCBzb2x1dGlvbiBvcHRpb24uCglERUJVRyA9IGZhbHNlLCAvLyBEZWNpZGVkIHRvIGxlYXZlIHRoZSBkZWJ1Z2dpbmcgb3B0aW9uIGFuZCBjb25zb2xlIG91dHB1dCBpbiBmb3IgdGhlIHRpbWUgYmVpbmcuIE92ZXJoZWFkIGlzIHRyaXZpYWwuCglqUXVlcnlEb3dubG9hZGluZyA9IGZhbHNlLCAvLyBGbGFnIHRvIHN0b3AgbXVsdGlwbGUgaW5zdGFuY2VzIGZyb20gZWFjaCBwdWxsaW5nIGluIGpRdWVyeSwgdGh1cyBjb3JydXB0aW5nIGl0LgoJalBsYXllckRvd25sb2FkaW5nID0gZmFsc2UsIC8vIEZsYWcgdG8gc3RvcCBtdWx0aXBsZSBpbnN0YW5jZXMgZnJvbSBlYWNoIHB1bGxpbmcgaW4galBsYXllciwgdGh1cyBjb3JydXB0aW5nIGl0LgoJZm9ybWF0ID0geyAvLyBEdXBsaWNhdGUgb2YgalBsYXllciAyLjUuMCBvYmplY3QsIHRvIGF2b2lkIGFsd2F5cyByZXF1aXJpbmcgalF1ZXJ5IGFuZCBqUGxheWVyIHRvIGJlIGxvYWRlZCBiZWZvcmUgcGVyZm9ybWluZyB0aGUgX2NhblBsYXlUeXBlKCkgdGVzdC4KCQltcDM6IHsKCQkJY29kZWM6ICdhdWRpby9tcGVnJywKCQkJZmxhc2hDYW5QbGF5OiB0cnVlLAoJCQltZWRpYTogJ2F1ZGlvJwoJCX0sCgkJbTRhOiB7IC8vIEFBQyAvIE1QNAoJCQljb2RlYzogJ2F1ZGlvL21wNDsgY29kZWNzPSJtcDRhLjQwLjIiJywKCQkJZmxhc2hDYW5QbGF5OiB0cnVlLAoJCQltZWRpYTogJ2F1ZGlvJwoJCX0sCgkJbTN1OGE6IHsgLy8gQUFDIC8gTVA0IC8gQXBwbGUgSExTCgkJCWNvZGVjOiAnYXBwbGljYXRpb24vdm5kLmFwcGxlLm1wZWd1cmw7IGNvZGVjcz0ibXA0YS40MC4yIicsCgkJCWZsYXNoQ2FuUGxheTogZmFsc2UsCgkJCW1lZGlhOiAnYXVkaW8nCgkJfSwKCQltM3VhOiB7IC8vIE0zVQoJCQljb2RlYzogJ2F1ZGlvL21wZWd1cmwnLAoJCQlmbGFzaENhblBsYXk6IGZhbHNlLAoJCQltZWRpYTogJ2F1ZGlvJwoJCX0sCgkJb2dhOiB7IC8vIE9HRwoJCQljb2RlYzogJ2F1ZGlvL29nZzsgY29kZWNzPSJ2b3JiaXMsIG9wdXMiJywKCQkJZmxhc2hDYW5QbGF5OiBmYWxzZSwKCQkJbWVkaWE6ICdhdWRpbycKCQl9LAoJCWZsYWM6IHsgLy8gRkxBQwoJCQljb2RlYzogJ2F1ZGlvL3gtZmxhYycsCgkJCWZsYXNoQ2FuUGxheTogZmFsc2UsCgkJCW1lZGlhOiAnYXVkaW8nCgkJfSwKCQl3YXY6IHsgLy8gUENNCgkJCWNvZGVjOiAnYXVkaW8vd2F2OyBjb2RlY3M9IjEiJywKCQkJZmxhc2hDYW5QbGF5OiBmYWxzZSwKCQkJbWVkaWE6ICdhdWRpbycKCQl9LAoJCXdlYm1hOiB7IC8vIFdFQk0KCQkJY29kZWM6ICdhdWRpby93ZWJtOyBjb2RlY3M9InZvcmJpcyInLAoJCQlmbGFzaENhblBsYXk6IGZhbHNlLAoJCQltZWRpYTogJ2F1ZGlvJwoJCX0sCgkJZmxhOiB7IC8vIEZMViAvIEY0QQoJCQljb2RlYzogJ2F1ZGlvL3gtZmx2JywKCQkJZmxhc2hDYW5QbGF5OiB0cnVlLAoJCQltZWRpYTogJ2F1ZGlvJwoJCX0sCgkJcnRtcGE6IHsgLy8gUlRNUCBBVURJTwoJCQljb2RlYzogJ2F1ZGlvL3J0bXA7IGNvZGVjcz0icnRtcCInLAoJCQlmbGFzaENhblBsYXk6IHRydWUsCgkJCW1lZGlhOiAnYXVkaW8nCgkJfSwKCQltNHY6IHsgLy8gSC4yNjQgLyBNUDQKCQkJY29kZWM6ICd2aWRlby9tcDQ7IGNvZGVjcz0iYXZjMS40MkUwMUUsIG1wNGEuNDAuMiInLAoJCQlmbGFzaENhblBsYXk6IHRydWUsCgkJCW1lZGlhOiAndmlkZW8nCgkJfSwKCQltM3U4djogeyAvLyBILjI2NCAvIEFBQyAvIE1QNCAvIEFwcGxlIEhMUwoJCQljb2RlYzogJ2FwcGxpY2F0aW9uL3ZuZC5hcHBsZS5tcGVndXJsOyBjb2RlY3M9ImF2YzEuNDJFMDFFLCBtcDRhLjQwLjIiJywKCQkJZmxhc2hDYW5QbGF5OiBmYWxzZSwKCQkJbWVkaWE6ICd2aWRlbycKCQl9LAoJCW0zdXY6IHsgLy8gTTNVCgkJCWNvZGVjOiAnYXVkaW8vbXBlZ3VybCcsCgkJCWZsYXNoQ2FuUGxheTogZmFsc2UsCgkJCW1lZGlhOiAndmlkZW8nCgkJfSwKCQlvZ3Y6IHsgLy8gT0dHCgkJCWNvZGVjOiAndmlkZW8vb2dnOyBjb2RlY3M9InRoZW9yYSwgdm9yYmlzIicsCgkJCWZsYXNoQ2FuUGxheTogZmFsc2UsCgkJCW1lZGlhOiAndmlkZW8nCgkJfSwKCQl3ZWJtdjogeyAvLyBXRUJNCgkJCWNvZGVjOiAndmlkZW8vd2VibTsgY29kZWNzPSJ2b3JiaXMsIHZwOCInLAoJCQlmbGFzaENhblBsYXk6IGZhbHNlLAoJCQltZWRpYTogJ3ZpZGVvJwoJCX0sCgkJZmx2OiB7IC8vIEZMViAvIEY0VgoJCQljb2RlYzogJ3ZpZGVvL3gtZmx2JywKCQkJZmxhc2hDYW5QbGF5OiB0cnVlLAoJCQltZWRpYTogJ3ZpZGVvJwoJCX0sCgkJcnRtcHY6IHsgLy8gUlRNUCBWSURFTwoJCQljb2RlYzogJ3ZpZGVvL3J0bXA7IGNvZGVjcz0icnRtcCInLAoJCQlmbGFzaENhblBsYXk6IHRydWUsCgkJCW1lZGlhOiAndmlkZW8nCgkJfQoJfSwKCWlzT2JqZWN0ID0gZnVuY3Rpb24odmFsKSB7IC8vIEJhc2ljIGNoZWNrIGZvciBPYmplY3QKCQlpZih2YWwgJiYgdHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgJiYgdmFsLmhhc093blByb3BlcnR5KSB7CgkJCXJldHVybiB0cnVlOwoJCX0gZWxzZSB7CgkJCXJldHVybiBmYWxzZTsKCQl9Cgl9LAoJZ2V0TWVkaWFUeXBlID0gZnVuY3Rpb24odXJsKSB7IC8vIEZ1bmN0aW9uIHRvIGdsZWFtIHRoZSBtZWRpYSB0eXBlIGZyb20gdGhlIFVSTAoJCXZhciBtZWRpYVR5cGUgPSBmYWxzZTsKCQlpZigvXC5tcDMkL2kudGVzdCh1cmwpKSB7CgkJCW1lZGlhVHlwZSA9ICdtcDMnOwoJCX0gZWxzZSBpZigvXC5tcDQkL2kudGVzdCh1cmwpIHx8IC9cLm00diQvaS50ZXN0KHVybCkpIHsKCQkJbWVkaWFUeXBlID0gJ200dic7CgkJfSBlbHNlIGlmKC9cLm00YSQvaS50ZXN0KHVybCkpIHsKCQkJbWVkaWFUeXBlID0gJ200YSc7CgkJfSBlbHNlIGlmKC9cLm9nZyQvaS50ZXN0KHVybCkgfHwgL1wub2dhJC9pLnRlc3QodXJsKSkgewoJCQltZWRpYVR5cGUgPSAnb2dhJzsKCQl9IGVsc2UgaWYoL1wub2d2JC9pLnRlc3QodXJsKSkgewoJCQltZWRpYVR5cGUgPSAnb2d2JzsKCQl9IGVsc2UgaWYoL1wud2VibSQvaS50ZXN0KHVybCkpIHsKCQkJbWVkaWFUeXBlID0gJ3dlYm12JzsKCQl9CgkJcmV0dXJuIG1lZGlhVHlwZTsKCX0sCglnZXRTdXBwbGllZCA9IGZ1bmN0aW9uKHVybCkgeyAvLyBGdW5jdGlvbiB0byBnZW5lcmF0ZSBhIHN1cHBsaWVkIG9wdGlvbiBmcm9tIGFuIHNyYyBvYmplY3QuIGllLiwgV2hlbiBzdXBwbGllZCBub3Qgc3BlY2lmaWVkLgoJCXZhciBzdXBwbGllZCA9ICcnLAoJCXNlcGFyYXRvciA9ICcnOwoJCWlmKGlzT2JqZWN0KHVybCkpIHsKCQkJLy8gR2VuZXJhdGUgc3VwcGxpZWQgb3B0aW9uIGZyb20gb2JqZWN0J3MgcHJvcGVydGllcy4gTm9uLWZvcm1hdCBwcm9wZXJ0aWVzIHdvdWxkIGJlIGlnbm9yZWQgYnkgalBsYXllci4gT3JkZXIgaXMgdW5wcmVkaWN0YWJsZS4KCQkJZm9yKHZhciBwcm9wIGluIHVybCkgewoJCQkJaWYodXJsLmhhc093blByb3BlcnR5KHByb3ApKSB7CgkJCQkJc3VwcGxpZWQgKz0gc2VwYXJhdG9yICsgcHJvcDsKCQkJCQlzZXBhcmF0b3IgPSAnLCc7CgkJCQl9CgkJCX0KCQl9CgkJaWYoREVCVUcpIGNvbnNvbGUubG9nKCdnZXRTdXBwbGllZCgpOiBHZW5lcmF0ZWQ6IHN1cHBsaWVkID0gIicgKyBzdXBwbGllZCArICciJyk7CgkJcmV0dXJuIHN1cHBsaWVkOwoJfTsKCglQb3Bjb3JuLnBsYXllciggJ2pwbGF5ZXInLCB7CgkJX2NhblBsYXlUeXBlOiBmdW5jdGlvbiggY29udGFpbmVyVHlwZSwgdXJsICkgewoJCQkvLyB1cmwgOiBFaXRoZXIgYSBTdHJpbmcgb3IgYW4gT2JqZWN0IHN0cnVjdHVyZWQgc2ltaWxhciBhIGpQbGF5ZXIgbWVkaWEgb2JqZWN0LiBpZS4sIEFzIHVzZWQgYnkgc2V0TWVkaWEgaW4galBsYXllci4KCQkJLy8gVGhlIHVybCBvYmplY3QgbWF5IGFsc28gY29udGFpbiBhIHNvbHV0aW9uIGFuZCBzdXBwbGllZCBwcm9wZXJ0eS4KCgkJCS8vIERlZmluZSB0aGUgc3JjIG9iamVjdCBzdHJ1Y3R1cmUgaGVyZSEKCgkJCXZhciBjVHlwZSA9IGNvbnRhaW5lclR5cGUudG9Mb3dlckNhc2UoKSwKCQkJc3JjT2JqID0gewoJCQkJbWVkaWE6e30sCgkJCQlvcHRpb25zOnt9CgkJCX0sCgkJCXJWYWwgPSBmYWxzZSwgLy8gT25seSBhIGJvb2xlYW4gZmFsc2UgbWVhbnMgaXQgaXMgbm90IHN1cHBvcnRlZC4KCQkJbWVkaWFUeXBlOwoKCQkJaWYoY1R5cGUgIT09ICd2aWRlbycgJiYgY1R5cGUgIT09ICdhdWRpbycpIHsKCgkJCQlpZih0eXBlb2YgdXJsID09PSAnc3RyaW5nJykgewoJCQkJCS8vIENoZWNrIGl0IHN0YXJ0cyB3aXRoIGh0dHAsIHNvIHRoZSBVUkwgaXMgYWJzb2x1dGUuLi4gV2VsbCwgaXQgaXMgbm90IGEgcGVyZmVjdCBjaGVjay4KCQkJCQlpZigvXmh0dHAuKi9pLnRlc3QodXJsKSkgewoJCQkJCQltZWRpYVR5cGUgPSBnZXRNZWRpYVR5cGUodXJsKTsKCQkJCQkJaWYobWVkaWFUeXBlKSB7CgkJCQkJCQlzcmNPYmoubWVkaWFbbWVkaWFUeXBlXSA9IHVybDsKCQkJCQkJCXNyY09iai5vcHRpb25zLnNvbHV0aW9uID0gU09MVVRJT047CgkJCQkJCQlzcmNPYmoub3B0aW9ucy5zdXBwbGllZCA9IG1lZGlhVHlwZTsKCQkJCQkJfQoJCQkJCX0KCQkJCX0gZWxzZSB7CgkJCQkJc3JjT2JqID0gdXJsOyAvLyBBc3N1bWUgdGhlIHVybCBpcyBhbiBzcmMgb2JqZWN0LgoJCQkJfQoKCQkJCS8vIENoZWNrIGZvciBPYmplY3QgYW5kIGFwcHJvcHJpYXRlIG1pbmltdW0gZGF0YSBzdHJ1Y3R1cmUuCgkJCQlpZihpc09iamVjdChzcmNPYmopICYmIGlzT2JqZWN0KHNyY09iai5tZWRpYSkpIHsKCgkJCQkJaWYoIWlzT2JqZWN0KHNyY09iai5vcHRpb25zKSkgewoJCQkJCQlzcmNPYmoub3B0aW9ucyA9IHt9OwoJCQkJCX0KCgkJCQkJaWYoIXNyY09iai5vcHRpb25zLnNvbHV0aW9uKSB7CgkJCQkJCXNyY09iai5vcHRpb25zLnNvbHV0aW9uID0gU09MVVRJT047CgkJCQkJfQoKCQkJCQlpZighc3JjT2JqLm9wdGlvbnMuc3VwcGxpZWQpIHsKCQkJCQkJc3JjT2JqLm9wdGlvbnMuc3VwcGxpZWQgPSBnZXRTdXBwbGllZChzcmNPYmoubWVkaWEpOwoJCQkJCX0KCgkJCQkJLy8gRmlndXJlIG91dCBob3cgalBsYXllciB3aWxsIHBsYXkgaXQuCgkJCQkJLy8gVGhpcyBtYXkgbm90IHdvcmsgcHJvcGVybHkgd2hlbiBib3RoIGF1ZGlvIGFuZCB2aWRlbyBpcyBzdXBwbGllZC4gaWUuLCBBIG1lZGlhIHBsYXllci4gQnV0IGl0IHNob3VsZCByZXR1cm4gdHJ1ZXRoeSBhbmQgalBsYXllciBjYW4gZmlndXJlIGl0IG91dC4KCQkJCQkKCQkJCQl2YXIgc29sdXRpb24gPSBzcmNPYmoub3B0aW9ucy5zb2x1dGlvbi50b0xvd2VyQ2FzZSgpLnNwbGl0KCIsIiksIC8vIENyZWF0ZSB0aGUgc29sdXRpb24gYXJyYXksIHdpdGggcHJvcml0eSBiYXNlZCBvbiB0aGUgb3JkZXIgb2YgdGhlIHNvbHV0aW9uIHN0cmluZy4KCQkJCQlzdXBwbGllZCA9IHNyY09iai5vcHRpb25zLnN1cHBsaWVkLnRvTG93ZXJDYXNlKCkuc3BsaXQoIiwiKTsgLy8gQ3JlYXRlIHRoZSBzdXBwbGllZCBmb3JtYXRzIGFycmF5LCB3aXRoIHByb3JpdHkgYmFzZWQgb24gdGhlIG9yZGVyIG9mIHRoZSBzdXBwbGllZCBmb3JtYXRzIHN0cmluZy4KCgkJCQkJZm9yKHZhciBzb2wgPSAwOyBzb2wgPCBzb2x1dGlvbi5sZW5ndGg7IHNvbCsrKSB7CgoJCQkJCQl2YXIgc29sdXRpb25UeXBlID0gc29sdXRpb25bc29sXS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgIiIpLCAvL3RyaW0KCQkJCQkJY2hlY2tpbmdIdG1sID0gc29sdXRpb25UeXBlID09PSAnaHRtbCcsCgkJCQkJCWNoZWNraW5nRmxhc2ggPSBzb2x1dGlvblR5cGUgPT09ICdmbGFzaCcsCgkJCQkJCW1lZGlhRWxlbTsKCgkJCQkJCWZvcih2YXIgZm10ID0gMDsgZm10IDwgc3VwcGxpZWQubGVuZ3RoOyBmbXQrKykgewoJCQkJCQkJbWVkaWFUeXBlID0gc3VwcGxpZWRbZm10XS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgIiIpOyAvL3RyaW0KCQkJCQkJCWlmKGZvcm1hdFttZWRpYVR5cGVdKSB7IC8vIENoZWNrIGZvcm1hdCBpcyB2YWxpZC4KCgkJCQkJCQkJLy8gQ3JlYXRlIGFuIEhUTUw1IG1lZGlhIGVsZW1lbnQgZm9yIHRoZSB0eXBlIG9mIG1lZGlhLgoJCQkJCQkJCWlmKCFtZWRpYUVsZW0gJiYgY2hlY2tpbmdIdG1sKSB7CgkJCQkJCQkJCW1lZGlhRWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZm9ybWF0W21lZGlhVHlwZV0ubWVkaWEpOwoJCQkJCQkJCX0KCQkJCQkJCQkvLyBTZWUgaWYgdGhlIEhUTUw1IG1lZGlhIGVsZW1lbnQgY2FuIHBsYXkgdGhlIE1JTUUgLyBDb2RlYyB0eXBlLgoJCQkJCQkJCS8vIEZsYXNoIGFsc28gcmV0dXJucyB0aGUgb2JqZWN0IGlmIHRoZSBmb3JtYXQgaXMgcGxheWFibGUsIHNvIGl0IGlzIHRydWV0aHksIGJ1dCB0aGF0IGh0bWwgcHJvcGVydHkgaXMgZmFsc2UuCgkJCQkJCQkJLy8gVGhpcyBhc3N1bWVzIEZsYXNoIGlzIGF2YWlsYWJsZSwgYnV0IHRoYXQgc2hvdWxkIGJlIGRlYWx0IHdpdGggYnkgalBsYXllciBpZiB0aGF0IGhhcHBlbnMuCgkJCQkJCQkJdmFyIGh0bWxDYW5QbGF5ID0gISEobWVkaWFFbGVtICYmIG1lZGlhRWxlbS5jYW5QbGF5VHlwZSAmJiBtZWRpYUVsZW0uY2FuUGxheVR5cGUoZm9ybWF0W21lZGlhVHlwZV0uY29kZWMpKSwKCQkJCQkJCQlodG1sV2lsbFBsYXkgPSBodG1sQ2FuUGxheSAmJiBjaGVja2luZ0h0bWwsCgkJCQkJCQkJZmxhc2hXaWxsUGxheSA9IGZvcm1hdFttZWRpYVR5cGVdLmZsYXNoQ2FuUGxheSAmJiBjaGVja2luZ0ZsYXNoOwoJCQkJCQkJCS8vIFRoZSBmaXJzdCBvbmUgZm91bmQgd2lsbCBtYXRjaCB3aGF0IGpQbGF5ZXIgdXNlcy4KCQkJCQkJCQlpZihodG1sV2lsbFBsYXkgfHwgZmxhc2hXaWxsUGxheSkgewoJCQkJCQkJCQlyVmFsID0gewoJCQkJCQkJCQkJaHRtbDogaHRtbFdpbGxQbGF5LAoJCQkJCQkJCQkJdHlwZTogbWVkaWFUeXBlCgkJCQkJCQkJCX07CgkJCQkJCQkJCXNvbCA9IHNvbHV0aW9uLmxlbmd0aDsgLy8gRXhpdCBzb2x1dGlvbiBsb29wCgkJCQkJCQkJCWZtdCA9IHN1cHBsaWVkLmxlbmd0aDsgLy8gRXhpdCBzdXBwbGllZCBsb29wCgkJCQkJCQkJfQoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJfQoJCQkJfQoJCQl9CgkJCXJldHVybiByVmFsOwoJCX0sCgkJLy8gX3NldHVwOiBmdW5jdGlvbiggb3B0aW9ucyApIHsgLy8gV2FybmluZzogb3B0aW9ucyBpcyBkZXByZWNhdGVkLgoJCV9zZXR1cDogZnVuY3Rpb24oKSB7CgkJCXZhciBtZWRpYSA9IHRoaXMsCgkJCW15UGxheWVyLCAvLyBUaGUgalF1ZXJ5IHNlbGVjdG9yIG9mIHRoZSBqUGxheWVyIGVsZW1lbnQuIFVzdWFsbHkgYSA8ZGl2PgoJCQlqUGxheWVyT2JqLCAvLyBUaGUgalBsYXllciBkYXRhIGluc3RhbmNlLiBGb3IgcGVyZm9ybWFuY2UgYW5kIERSWSBjb2RlLgoJCQltZWRpYVR5cGUgPSAndW5rbm93bicsCgkJCWpwTWVkaWEgPSB7fSwKCQkJanBPcHRpb25zID0ge30sCgkJCXJlYWR5ID0gZmFsc2UsIC8vIFVzZWQgZHVyaW5nIGluaXQgdG8gb3ZlcnJpZGUgdGhlIGFubm95aW5nIGR1cmF0aW9uIGRlcGVuZGFuY2UgaW4gdGhlIHRyYWNrIGV2ZW50IHBhZGRpbmcgZHVyaW5nIFBvcGNvcm4ncyBpc1JlYWR5KCkuIGllLiwgV2UgaXMgcmVhZHkgYWZ0ZXIgbG9hZGVkZGF0YSBhbmQgZHVyYXRpb24gY2FuIHRoZW4gYmUgc2V0IHJlYWwgdmFsdWUgYXQgbGVpc3VyZS4KCQkJZHVyYXRpb24gPSAwLCAvLyBGb3IgdGhlIGR1cmF0aW9uY2hhbmdlIGV2ZW50IHdpdGggYm90aCBIVE1MNSBhbmQgRmxhc2ggc29sdXRpb25zLiBVc2VkIHdpdGggJ3JlYWR5JyB0byBrZWVwIGNvbnRyb2wgZHVyaW5nIHRoZSBQb3Bjb3JuIGlzUmVhZHkoKSB2aWEgbG9hZGVkZGF0YSBldmVudC4gKER1cmF0aW9uPTAgaXMgYmFkLikKCQkJZHVyYXRpb25jaGFuZ2VJZCA9IG51bGwsIC8vIEEgdGltZW91dCBJRCB1c2VkIHdpdGggZGVsYXllZCBkdXJhdGlvbmNoYW5nZSBldmVudC4gKEJlY2F1c2Ugb2YgdGhlIGR1cmF0aW9uPU5hTiBmdWRnZSB0byBhdm9pZCBQb3Bjb3JuIHRyYWNrIGV2ZW50IGNvcnJ1cHRpb24uKQoJCQljYW5wbGF5dGhyb3VnaCA9IGZhbHNlLAoJCQllcnJvciA9IG51bGwsIC8vIFRoZSBNZWRpYUVycm9yIG9iamVjdC4KCgkJCWRpc3BhdGNoRHVyYXRpb25DaGFuZ2UgPSBmdW5jdGlvbigpIHsKCQkJCWlmKHJlYWR5KSB7CgkJCQkJaWYoREVCVUcpIGNvbnNvbGUubG9nKCdEaXNwYXRjaGVkIGV2ZW50IDogZHVyYXRpb25jaGFuZ2UgOiAnICsgZHVyYXRpb24pOwoJCQkJCW1lZGlhLmRpc3BhdGNoRXZlbnQoJ2R1cmF0aW9uY2hhbmdlJyk7CgkJCQl9IGVsc2UgewoJCQkJCWlmKERFQlVHKSBjb25zb2xlLmxvZygnREVMQVlFRCBFVkVOVCAoIXJlYWR5KSA6IGR1cmF0aW9uY2hhbmdlIDogJyArIGR1cmF0aW9uKTsKCQkJCQljbGVhclRpbWVvdXQoZHVyYXRpb25jaGFuZ2VJZCk7IC8vIFN0b3AgbXVsdGlwbGUgdHJpZ2dlcnMgY2F1c2luZyBtdWx0aXBsZSB0aW1lb3V0cyBydW5uaW5nIGluIHBhcmFsbGVsLgoJCQkJCWR1cmF0aW9uY2hhbmdlSWQgPSBzZXRUaW1lb3V0KGRpc3BhdGNoRHVyYXRpb25DaGFuZ2UsIDI1MCk7CgkJCQl9CgkJCX0sCgoJCQlqUGxheWVyRmxhc2hFdmVudHNQYXRjaCA9IGZ1bmN0aW9uKCkgewoKCQkJCS8qIEV2ZW50cyBhbHJlYWR5IHN1cHBvcnRlZCBieSBqUGxheWVyIEZsYXNoOgoJCQkJICogbG9hZHN0YXJ0CgkJCQkgKiBsb2FkZWRtZXRhZGF0YSAoTTRBLCBNNFYpCgkJCQkgKiBwcm9ncmVzcwoJCQkJICogcGxheQoJCQkJICogcGF1c2UKCQkJCSAqIHNlZWtpbmcKCQkJCSAqIHNlZWtlZAoJCQkJICogdGltZXVwZGF0ZQoJCQkJICogZW5kZWQKCQkJCSAqIHZvbHVtZWNoYW5nZQoJCQkJICogZXJyb3IgPC0gU2VlIHRoZSBjdXN0b20gaGFuZGxlciBpbiBqUGxheWVySW5pdCgpCgkJCQkgKi8KCgkJCQkvKiBFdmVudHMgcGF0Y2hlZDoKCQkJCSAqIGxvYWRlZGRhdGEKCQkJCSAqIGR1cmF0aW9uY2hhbmdlCgkJCQkgKiBjYW5wbGF5dGhyb3VnaAoJCQkJICogcGxheWluZwoJCQkJICovCgoJCQkJLyogRXZlbnRzIE5PVCBwYXRjaGVkOgoJCQkJICogc3VzcGVuZAoJCQkJICogYWJvcnQKCQkJCSAqIGVtcHRpZWQKCQkJCSAqIHN0YWxsZWQKCQkJCSAqIGxvYWRlZG1ldGFkYXRhIChNUDMpCgkJCQkgKiB3YWl0aW5nCgkJCQkgKiBjYW5wbGF5CgkJCQkgKiByYXRlY2hhbmdlCgkJCQkgKi8KCgkJCQkvLyBUcmlnZ2VyaW5nIHBhdGNoZWQgZXZlbnRzIHRocm91Z2ggdGhlIGpQbGF5ZXIgT2JqZWN0IHNvIHRoZSBldmVudHMgYXJlIGhvbW9nZW5lb3VzLiBpZS4sIFRoZSBjb250YWluIHRoZSBldmVudC5qUGxheWVyIGRhdGEgc3RydWN0dXJlLgoKCQkJCXZhciBjaGVja0R1cmF0aW9uID0gZnVuY3Rpb24oZXZlbnQpIHsKCQkJCQlpZihldmVudC5qUGxheWVyLnN0YXR1cy5kdXJhdGlvbiAhPT0gZHVyYXRpb24pIHsKCQkJCQkJZHVyYXRpb24gPSBldmVudC5qUGxheWVyLnN0YXR1cy5kdXJhdGlvbjsKCQkJCQkJZGlzcGF0Y2hEdXJhdGlvbkNoYW5nZSgpOwoJCQkJCX0KCQkJCX0sCgoJCQkJY2hlY2tDYW5QbGF5VGhyb3VnaCA9IGZ1bmN0aW9uKGV2ZW50KSB7CgkJCQkJaWYoIWNhbnBsYXl0aHJvdWdoICYmIGV2ZW50LmpQbGF5ZXIuc3RhdHVzLnNlZWtQZXJjZW50ID09PSAxMDApIHsKCQkJCQkJY2FucGxheXRocm91Z2ggPSB0cnVlOwoJCQkJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewoJCQkJCQkJaWYoREVCVUcpIGNvbnNvbGUubG9nKCdUcmlnZ2VyIDogY2FucGxheXRocm91Z2gnKTsKCQkJCQkJCWpQbGF5ZXJPYmouX3RyaWdnZXIoJC5qUGxheWVyLmV2ZW50LmNhbnBsYXl0aHJvdWdoKTsKCQkJCQkJfSwgMCk7CgkJCQkJfQoJCQkJfTsKCgkJCQlteVBsYXllci5iaW5kKCQualBsYXllci5ldmVudC5sb2Fkc3RhcnQsIGZ1bmN0aW9uKCkgewoJCQkJCXNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CgkJCQkJCWlmKERFQlVHKSBjb25zb2xlLmxvZygnVHJpZ2dlciA6IGxvYWRlZGRhdGEnKTsKCQkJCQkJalBsYXllck9iai5fdHJpZ2dlcigkLmpQbGF5ZXIuZXZlbnQubG9hZGVkZGF0YSk7CgkJCQkJfSwgMCk7CgkJCQl9KQoJCQkJLmJpbmQoJC5qUGxheWVyLmV2ZW50LnByb2dyZXNzLCBmdW5jdGlvbihldmVudCkgewoJCQkJCWNoZWNrRHVyYXRpb24oZXZlbnQpOwoJCQkJCWNoZWNrQ2FuUGxheVRocm91Z2goZXZlbnQpOwoJCQkJfSkKCQkJCS5iaW5kKCQualBsYXllci5ldmVudC50aW1ldXBkYXRlLCBmdW5jdGlvbihldmVudCkgewoJCQkJCWNoZWNrRHVyYXRpb24oZXZlbnQpOwoJCQkJCWNoZWNrQ2FuUGxheVRocm91Z2goZXZlbnQpOwoJCQkJfSkKCQkJCS5iaW5kKCQualBsYXllci5ldmVudC5wbGF5LCBmdW5jdGlvbigpIHsKCQkJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewoJCQkJCQlpZihERUJVRykgY29uc29sZS5sb2coJ1RyaWdnZXIgOiBwbGF5aW5nJyk7CgkJCQkJCWpQbGF5ZXJPYmouX3RyaWdnZXIoJC5qUGxheWVyLmV2ZW50LnBsYXlpbmcpOwoJCQkJCX0sIDApOwoJCQkJfSk7CgoJCQkJaWYoREVCVUcpIGNvbnNvbGUubG9nKCdDcmVhdGVkIENVU1RPTSBldmVudCBoYW5kbGVycyBmb3IgRkxBU0gnKTsKCQkJfSwKCgkJCWpQbGF5ZXJJbml0ID0gZnVuY3Rpb24oKSB7CgkJCQkoZnVuY3Rpb24oJCkgewoKCQkJCQlteVBsYXllciA9ICQoJyMnICsgIG1lZGlhLmlkKTsKCgkJCQkJaWYodHlwZW9mIG1lZGlhLnNyYyA9PT0gJ3N0cmluZycpIHsKCQkJCQkJbWVkaWFUeXBlID0gZ2V0TWVkaWFUeXBlKG1lZGlhLnNyYyk7CgkJCQkJCWpwTWVkaWFbbWVkaWFUeXBlXSA9IG1lZGlhLnNyYzsKCQkJCQkJanBPcHRpb25zLnN1cHBsaWVkID0gbWVkaWFUeXBlOwoJCQkJCQlqcE9wdGlvbnMuc29sdXRpb24gPSBTT0xVVElPTjsKCQkJCQl9IGVsc2UgaWYoaXNPYmplY3QobWVkaWEuc3JjKSkgewoJCQkJCQlqcE1lZGlhID0gaXNPYmplY3QobWVkaWEuc3JjLm1lZGlhKSA/IG1lZGlhLnNyYy5tZWRpYSA6IHt9OwoJCQkJCQlqcE9wdGlvbnMgPSBpc09iamVjdChtZWRpYS5zcmMub3B0aW9ucykgPyBtZWRpYS5zcmMub3B0aW9ucyA6IHt9OwoJCQkJCQlqcE9wdGlvbnMuc29sdXRpb24gPSBqcE9wdGlvbnMuc29sdXRpb24gfHwgU09MVVRJT047CgkJCQkJCWpwT3B0aW9ucy5zdXBwbGllZCA9IGpwT3B0aW9ucy5zdXBwbGllZCB8fCBnZXRTdXBwbGllZChtZWRpYS5zcmMubWVkaWEpOwoJCQkJCX0KCgkJCQkJLy8gQWxsb3cgdGhlIHN3ZlBhdGggdG8gYmUgc2V0IHRvIGxvY2FsIHNlcnZlci4gaWUuLCBJZiB0aGUgalBsYXllciBQbHVnaW4gaXMgbG9jYWwgYW5kIGFscmVhZHkgb24gdGhlIHBhZ2UsIHRoZW4geW91IGNhbiBhbHNvIHVzZSB0aGUgbG9jYWwgU1dGLgoJCQkJCWpwT3B0aW9ucy5zd2ZQYXRoID0ganBPcHRpb25zLnN3ZlBhdGggfHwgSlBMQVlFUl9TV0ZQQVRIOwoKCQkJCQlteVBsYXllci5iaW5kKCQualBsYXllci5ldmVudC5yZWFkeSwgZnVuY3Rpb24oZXZlbnQpIHsKCQkJCQkJaWYoZXZlbnQualBsYXllci5mbGFzaC51c2VkKSB7CgkJCQkJCQlqUGxheWVyRmxhc2hFdmVudHNQYXRjaCgpOwoJCQkJCQl9CgkJCQkJCS8vIFNldCB0aGUgbWVkaWEgYW5kZCBsb2FkIGl0LCBzbyB0aGF0IHRoZSBGbGFzaCBzb2x1dGlvbiBiZWhhdmVzIHNpbWlsYXIgdG8gSFRNTDUgc29sdXRpb24uCgkJCQkJCS8vIFRoaXMgYWxzbyBhbGxvd3MgdGhlIGxvYWRzdGFydCBldmVudCB0byBiZSB1c2VkIHRvIGtub3cgalBsYXllciBpcyByZWFkeS4KCQkJCQkJJCh0aGlzKS5qUGxheWVyKCdzZXRNZWRpYScsIGpwTWVkaWEpLmpQbGF5ZXIoJ2xvYWQnKTsKCQkJCQl9KTsKCgkJCQkJLy8gRG8gbm90IGF1dG8tYnViYmxlIHRoZSByZXNlcnZlZCBldmVudHMsIG5vciB0aGUgbG9hZGVkZGF0YSBhbmQgZHVyYXRpb25jaGFuZ2UgZXZlbnQsIHNpbmNlIHRoZSBkdXJhdGlvbiBtdXN0IGJlIGNhcmVmdWxseSBoYW5kbGVkIHdoZW4gbG9hZGVkZGF0YSBldmVudCBvY2N1cnMuCgkJCQkJLy8gU2VlIHRoZSBkdXJhdGlvbiBwcm9wZXJ0eSBjb2RlIGZvciBtb3JlIGRldGFpbHMuIChSYW50aW5nLikKCgkJCQkJdmFyIHJlc2VydmVkRXZlbnRzID0gJC5qUGxheWVyLnJlc2VydmVkRXZlbnQgKyAnIGxvYWRlZGRhdGEgZHVyYXRpb25jaGFuZ2UnLAoJCQkJCXJlc2VydmVkRXZlbnQgPSByZXNlcnZlZEV2ZW50cy5zcGxpdCgvXHMrL2cpOwoKCQkJCQkvLyBHZW5lcmF0ZSBldmVudCBoYW5kbGVycyBmb3IgYWxsIHRoZSBzdGFuZGFyZCBIVE1MNSBtZWRpYSBldmVudHMuIChFeGNlcHQgZHVyYXRpb25jaGFuZ2UpCgoJCQkJCXZhciBiaW5kRXZlbnQgPSBmdW5jdGlvbihuYW1lKSB7CgkJCQkJCW15UGxheWVyLmJpbmQoJC5qUGxheWVyLmV2ZW50W25hbWVdLCBmdW5jdGlvbihldmVudCkgewoJCQkJCQkJaWYoREVCVUcpIGNvbnNvbGUubG9nKCdEaXNwYXRjaGVkIGV2ZW50OiAnICsgbmFtZSArIChldmVudCAmJiBldmVudC5qUGxheWVyID8gJyAoJyArIGV2ZW50LmpQbGF5ZXIuc3RhdHVzLmN1cnJlbnRUaW1lICsgJ3MpJyA6ICcnKSk7IC8vIE11c3QgYmUgYWZ0ZXIgZGlzcGF0Y2ggZm9yIHNvbWUgcmVhc29uIG9uIEZpcmVmb3gvT3BlcmEKCQkJCQkJCW1lZGlhLmRpc3BhdGNoRXZlbnQobmFtZSk7CgkJCQkJCX0pOwoJCQkJCQlpZihERUJVRykgY29uc29sZS5sb2coJ0NyZWF0ZWQgZXZlbnQgaGFuZGxlciBmb3I6ICcgKyBuYW1lKTsKCQkJCQl9OwoKCQkJCQlmb3IodmFyIGV2ZW50TmFtZSBpbiAkLmpQbGF5ZXIuZXZlbnQpIHsKCQkJCQkJaWYoJC5qUGxheWVyLmV2ZW50Lmhhc093blByb3BlcnR5KGV2ZW50TmFtZSkpIHsKCQkJCQkJCXZhciBuYXRpdmVFdmVudCA9IHRydWU7CgkJCQkJCQlmb3IodmFyIGlSZXMgaW4gcmVzZXJ2ZWRFdmVudCkgewoJCQkJCQkJCWlmKHJlc2VydmVkRXZlbnQuaGFzT3duUHJvcGVydHkoaVJlcykpIHsKCQkJCQkJCQkJaWYocmVzZXJ2ZWRFdmVudFtpUmVzXSA9PT0gZXZlbnROYW1lKSB7CgkJCQkJCQkJCQluYXRpdmVFdmVudCA9IGZhbHNlOwoJCQkJCQkJCQkJYnJlYWs7CgkJCQkJCQkJCX0KCQkJCQkJCQl9CgkJCQkJCQl9CgkJCQkJCQlpZihuYXRpdmVFdmVudCkgewoJCQkJCQkJCWJpbmRFdmVudChldmVudE5hbWUpOwoJCQkJCQkJfSBlbHNlIHsKCQkJCQkJCQlpZihERUJVRykgY29uc29sZS5sb2coJ1NraXBwZWQgYXV0byBldmVudCBoYW5kbGVyIGNyZWF0aW9uIGZvcjogJyArIGV2ZW50TmFtZSk7CgkJCQkJCQl9CgkJCQkJCX0KCQkJCQl9CgoJCQkJCW15UGxheWVyLmJpbmQoJC5qUGxheWVyLmV2ZW50LmxvYWRlZGRhdGEsIGZ1bmN0aW9uKGV2ZW50KSB7CgkJCQkJCWlmKERFQlVHKSBjb25zb2xlLmxvZygnRGlzcGF0Y2hlZCBldmVudDogbG9hZGVkZGF0YScgKyAoZXZlbnQgJiYgZXZlbnQualBsYXllciA/ICcgKCcgKyBldmVudC5qUGxheWVyLnN0YXR1cy5jdXJyZW50VGltZSArICdzKScgOiAnJykpOwoJCQkJCQltZWRpYS5kaXNwYXRjaEV2ZW50KCdsb2FkZWRkYXRhJyk7CgkJCQkJCXJlYWR5ID0gdHJ1ZTsKCQkJCQl9KTsKCQkJCQlpZihERUJVRykgY29uc29sZS5sb2coJ0NyZWF0ZWQgQ1VTVE9NIGV2ZW50IGhhbmRsZXIgZm9yOiBsb2FkZWRkYXRhJyk7CgoJCQkJCW15UGxheWVyLmJpbmQoJC5qUGxheWVyLmV2ZW50LmR1cmF0aW9uY2hhbmdlLCBmdW5jdGlvbihldmVudCkgewoJCQkJCQlkdXJhdGlvbiA9IGV2ZW50LmpQbGF5ZXIuc3RhdHVzLmR1cmF0aW9uOwoJCQkJCQlkaXNwYXRjaER1cmF0aW9uQ2hhbmdlKCk7CgkJCQkJfSk7CgkJCQkJaWYoREVCVUcpIGNvbnNvbGUubG9nKCdDcmVhdGVkIENVU1RPTSBldmVudCBoYW5kbGVyIGZvcjogZHVyYXRpb25jaGFuZ2UnKTsKCgkJCQkJLy8gVGhlIGVycm9yIGV2ZW50IGlzIGEgc3BlY2lhbCBjYXNlLiBQbHVzIGpQbGF5ZXIgZXJyb3IgZXZlbnQgYXNzdW1lcyBpdCBpcyBhIGJyb2tlbiBVUkwuIChJdCBjb3VsZCBhbHNvIGJlIGEgZGVjb2RlciBlcnJvci4uLiBPciBhYm9ydGVkIG9yIGEgTmV0d29yayBlcnJvci4pCgkJCQkJbXlQbGF5ZXIuYmluZCgkLmpQbGF5ZXIuZXZlbnQuZXJyb3IsIGZ1bmN0aW9uKGV2ZW50KSB7CgkJCQkJCS8vIE5vdCBzdXJlIGhvdyB0byBoYW5kbGUgdGhlIGVycm9yIHNpdHVhdGlvbi4gUG9wY29ybiBkb2VzIG5vdCBhcHBlYXIgdG8gaGF2ZSB0aGUgZXJyb3Igb3IgZXJyb3IuY29kZSBwcm9wZXJ0eSBkb2N1bWVudGVkIGhlcmU6IGh0dHA6Ly9wb3Bjb3JuanMub3JnL3BvcGNvcm4tZG9jcy9tZWRpYS1tZXRob2RzLwoJCQkJCQkvLyBJZiBhbnkgZXJyb3IgZXZlbnQgaGFwcGVucywgdGhlbiBzb21ldGhpbmcgaGFzIGdvbmUgcGVhciBzaGFwZWQuCgoJCQkJCQllcnJvciA9IGV2ZW50LmpQbGF5ZXIuZXJyb3I7IC8vIFNhdmluZyBvYmplY3QgcG9pbnRlciwgbm90IGEgY29weSBvZiB0aGUgb2JqZWN0LiBQb3NzaWJsZSBnYXJiYWdlIGNvbGxlY3Rpb24gaXNzdWUuLi4gQnV0IHRoZSBwbGF5ZXIgaXMgZGVhZCBhbnl3YXksIHNvIGRvbid0IGNhcmUuCgoJCQkJCQlpZihlcnJvci50eXBlID09PSAkLmpQbGF5ZXIuZXJyb3IuVVJMKSB7CgkJCQkJCQllcnJvci5jb2RlID0gNDsgLy8gTUVESUFfRVJSX1NSQ19OT1RfU1VQUE9SVEVEIHNpbmNlIGpQbGF5ZXIgbWFrZXMgdGhpcyBhc3N1bXB0aW9uLiBJdCBpcyB0aGUgbW9zdCBjb21tb24gZXJyb3IsIHRoZW4gdGhlIGRlY29kZSBlcnJvci4gTmV2ZXIgc2VlbiBlaXRoZXIgb2YgdGhlIG90aGVyIDIgZXJyb3IgdHlwZXMgb2NjdXIuCgkJCQkJCX0gZWxzZSB7CgkJCQkJCQllcnJvci5jb2RlID0gMDsgLy8gSXQgd2FzIGEgalBsYXllciBlcnJvciwgbm90IGFuIEhUTUw1IG1lZGlhIGVycm9yLgoJCQkJCQl9CgoJCQkJCQlpZihERUJVRykgY29uc29sZS5sb2coJ0Rpc3BhdGNoZWQgZXZlbnQ6IGVycm9yJyk7CgkJCQkJCWlmKERFQlVHKSBjb25zb2xlLmRpcihlcnJvcik7CgkJCQkJCW1lZGlhLmRpc3BhdGNoRXZlbnQoJ2Vycm9yJyk7CgkJCQkJfSk7CgkJCQkJaWYoREVCVUcpIGNvbnNvbGUubG9nKCdDcmVhdGVkIENVU1RPTSBldmVudCBoYW5kbGVyIGZvcjogZXJyb3InKTsKCgkJCQkJUG9wY29ybi5wbGF5ZXIuZGVmaW5lUHJvcGVydHkoIG1lZGlhLCAnZXJyb3InLCB7CgkJCQkJCXNldDogZnVuY3Rpb24oKSB7CgkJCQkJCQkvLyBSZWFkLW9ubHkgcHJvcGVydHkKCQkJCQkJCXJldHVybiBlcnJvcjsKCQkJCQkJfSwKCQkJCQkJZ2V0OiBmdW5jdGlvbigpIHsKCQkJCQkJCXJldHVybiBlcnJvcjsKCQkJCQkJfQoJCQkJCX0pOwoKCQkJCQlQb3Bjb3JuLnBsYXllci5kZWZpbmVQcm9wZXJ0eSggbWVkaWEsICdjdXJyZW50VGltZScsIHsKCQkJCQkJc2V0OiBmdW5jdGlvbiggdmFsICkgewoJCQkJCQkJaWYoalBsYXllck9iai5zdGF0dXMucGF1c2VkKSB7CgkJCQkJCQkJbXlQbGF5ZXIualBsYXllcigncGF1c2UnLCB2YWwpOwoJCQkJCQkJfSBlbHNlIHsKCQkJCQkJCQlteVBsYXllci5qUGxheWVyKCdwbGF5JywgdmFsKTsKCQkJCQkJCX0KCQkJCQkJCXJldHVybiB2YWw7CgkJCQkJCX0sCgkJCQkJCWdldDogZnVuY3Rpb24oKSB7CgkJCQkJCQlyZXR1cm4galBsYXllck9iai5zdGF0dXMuY3VycmVudFRpbWU7CgkJCQkJCX0KCQkJCQl9KTsKCgkJCQkJLyogVGhlIGpveSBvZiBkdXJhdGlvbiBhbmQgdGhlIGxvYWRlZGRhdGEgZXZlbnQgaXNSZWFkeSgpIGhhbmRsZXIKCQkJCQkgKiBUaGUgZHVyYXRpb24gaXMgYXNzdW1lZCB0byBiZSBhIE5hTiBvciBhIHZhbGlkIGR1cmF0aW9uLgoJCQkJCSAqIGpQbGF5ZXIgdXNlcyB6ZXJvIGluc3RlYWQgb2YgYSBOYU4gYW5kIHRoaXMgc2NyZXdzIHVwIHRoZSBQb3Bjb3JuIHRyYWNrIGV2ZW50IHN0YXJ0L2VuZCBhcnJheXMgcGFkZGluZy4KCQkJCQkgKiBUaGlzIGxpbmUgaGVyZToKCQkJCQkgKiAgdmlkZW9EdXJhdGlvblBsdXMgPSBkdXJhdGlvbiAhPSBkdXJhdGlvbiA/IE51bWJlci5NQVhfVkFMVUUgOiBkdXJhdGlvbiArIDE7CgkJCQkJICogTm90IHN1cmUgd2h5IGl0IGlzIG5vdCBzaW1wbHk6CgkJCQkJICogIHZpZGVvRHVyYXRpb25QbHVzID0gTnVtYmVyLk1BWF9WQUxVRTsgLy8gV2hvIGNhcmVzIGlmIHRoZSBwYWRkaW5nIGlzIGNsb3NlIHRvIHRoZSByZWFsIGR1cmF0aW9uPwoJCQkJCSAqIFNvIGlmIHlvdSB0cmlnZ2VyIGxvYWRlZGRhdGEgYmVmb3JlIHRoZSBkdXJhdGlvbiBpcyBjb3JyZWN0LCB0aGUgdHJhY2sgZXZlbnQgcGFkZGluZyBpcyBzY3Jld2VkIHVwLiAoSXQgcGFkcyB0aGUgc3RhcnQsIG5vdCB0aGUgZW5kLi4uIFdlbGwsIGR1cmF0aW9uKzEgPSAwKzEgPSAxcykKCQkJCQkgKiBUaGF0IGxpbmUgbWFrZXMgdGhlIE1QMyBGbGFzaCBmYWxsYmFjayBkaWZmaWN1bHQgdG8gc2V0dXAuIFRoZSB3aG9sZSBNUDMgd2lsbCBuZWVkIHRvIGxvYWQgYmVmb3JlIHRoZSBkdXJhdGlvbiBpcyBrbm93bi4KCQkJCQkgKiBQbGFubmluZyBvbiB1c2luZyBhIE5hTiBmb3IgZHVyYXRpb24gdW50aWwgYSA+MCB2YWx1ZSBpcyBmb3VuZC4uLiBFeGNlcHQgd2l0aCBNUDMsIHdoZXJlIHNlZWtQZXJjZW50IG11c3QgYmUgMTAwJSBiZWZvcmUgc2V0dGluZyB0aGUgZHVyYXRpb24uCgkJCQkJICogV2h5IG5vdCBqdXN0IHVzZSBhIE5hTiBkdXJpbmcgaW5pdC4uLiBBbmQgdGhlbiBjb3JyZWN0IHRoZSBkdXJhdGlvbiBsYXRlcj8KCQkJCQkgKi8KCgkJCQkJUG9wY29ybi5wbGF5ZXIuZGVmaW5lUHJvcGVydHkoIG1lZGlhLCAnZHVyYXRpb24nLCB7CgkJCQkJCXNldDogZnVuY3Rpb24oKSB7CgkJCQkJCQkvLyBSZWFkLW9ubHkgcHJvcGVydHkKCQkJCQkJCWlmKHJlYWR5KSB7CgkJCQkJCQkJcmV0dXJuIGR1cmF0aW9uOwoJCQkJCQkJfSBlbHNlIHsKCQkJCQkJCQlyZXR1cm4gTmFOOwoJCQkJCQkJfQoJCQkJCQl9LAoJCQkJCQlnZXQ6IGZ1bmN0aW9uKCkgewoJCQkJCQkJaWYocmVhZHkpIHsKCQkJCQkJCQlyZXR1cm4gZHVyYXRpb247IC8vIFBvcGNvcm4gaGFzIGluaXRpYWxpemVkLCB3ZSBjYW4gbm93IHVzZSBkdXJhdGlvbiB6ZXJvIG9yIHdoYXRldmVyIHdpdGhvdXQgZmVhci4KCQkJCQkJCX0gZWxzZSB7CgkJCQkJCQkJcmV0dXJuIE5hTjsgLy8gS2VlcCB0aGUgZHVyYXRpb24gYSBOYU4gdW50aWwgYWZ0ZXIgbG9hZGVkZGF0YSBldmVudCBoYXMgb2NjdXJyZWQuIE90aGVyd2lzZSBQb3Bjb3JuIHRyYWNrIGV2ZW50IHBhZGRpbmcgaXMgY29ycnVwdGVkLgoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJfSk7CgoJCQkJCVBvcGNvcm4ucGxheWVyLmRlZmluZVByb3BlcnR5KCBtZWRpYSwgJ211dGVkJywgewoJCQkJCQlzZXQ6IGZ1bmN0aW9uKCB2YWwgKSB7CgkJCQkJCQlteVBsYXllci5qUGxheWVyKCdtdXRlJywgdmFsKTsKCQkJCQkJCXJldHVybiBqUGxheWVyT2JqLm9wdGlvbnMubXV0ZWQ7CgkJCQkJCX0sCgkJCQkJCWdldDogZnVuY3Rpb24oKSB7CgkJCQkJCQlyZXR1cm4galBsYXllck9iai5vcHRpb25zLm11dGVkOwoJCQkJCQl9CgkJCQkJfSk7CgoJCQkJCVBvcGNvcm4ucGxheWVyLmRlZmluZVByb3BlcnR5KCBtZWRpYSwgJ3ZvbHVtZScsIHsKCQkJCQkJc2V0OiBmdW5jdGlvbiggdmFsICkgewoJCQkJCQkJbXlQbGF5ZXIualBsYXllcigndm9sdW1lJywgdmFsKTsKCQkJCQkJCXJldHVybiBqUGxheWVyT2JqLm9wdGlvbnMudm9sdW1lOwoJCQkJCQl9LAoJCQkJCQlnZXQ6IGZ1bmN0aW9uKCkgewoJCQkJCQkJcmV0dXJuIGpQbGF5ZXJPYmoub3B0aW9ucy52b2x1bWU7CgkJCQkJCX0KCQkJCQl9KTsKCgkJCQkJUG9wY29ybi5wbGF5ZXIuZGVmaW5lUHJvcGVydHkoIG1lZGlhLCAncGF1c2VkJywgewoJCQkJCQlzZXQ6IGZ1bmN0aW9uKCkgewoJCQkJCQkJLy8gUmVhZC1vbmx5IHByb3BlcnR5CgkJCQkJCQlyZXR1cm4galBsYXllck9iai5zdGF0dXMucGF1c2VkOwoJCQkJCQl9LAoJCQkJCQlnZXQ6IGZ1bmN0aW9uKCkgewoJCQkJCQkJcmV0dXJuIGpQbGF5ZXJPYmouc3RhdHVzLnBhdXNlZDsKCQkJCQkJfQoJCQkJCX0pOwoKCQkJCQltZWRpYS5wbGF5ID0gZnVuY3Rpb24oKSB7CgkJCQkJCW15UGxheWVyLmpQbGF5ZXIoJ3BsYXknKTsKCQkJCQl9OwoJCQkJCW1lZGlhLnBhdXNlID0gZnVuY3Rpb24oKSB7CgkJCQkJCW15UGxheWVyLmpQbGF5ZXIoJ3BhdXNlJyk7CgkJCQkJfTsKCgkJCQkJbXlQbGF5ZXIualBsYXllcihqcE9wdGlvbnMpOyAvLyBJbnN0YW5jZSBqUGxheWVyLiBOb3RlIHRoYXQgdGhlIG9wdGlvbnMgc2hvdWxkIG5vdCBoYXZlIGEgcmVhZHkgZXZlbnQgZGVmaW5lZC4uLiBLaWxsIGl0IGJ5IGRlZmF1bHQ/CgkJCQkJalBsYXllck9iaiA9IG15UGxheWVyLmRhdGEoJ2pQbGF5ZXInKTsKCgkJCQl9KGpRdWVyeSkpOwoJCQl9LAoKCQkJalBsYXllckNoZWNrID0gZnVuY3Rpb24oKSB7CgkJCQlpZiAoIWpRdWVyeS5qUGxheWVyKSB7CgkJCQkJaWYgKCFqUGxheWVyRG93bmxvYWRpbmcpIHsKCQkJCQkJalBsYXllckRvd25sb2FkaW5nID0gdHJ1ZTsKCQkJCQkJUG9wY29ybi5nZXRTY3JpcHQoSlBMQVlFUl9TQ1JJUFQsIGZ1bmN0aW9uKCkgewoJCQkJCQkJalBsYXllckRvd25sb2FkaW5nID0gZmFsc2U7CgkJCQkJCQlqUGxheWVySW5pdCgpOwoJCQkJCQl9KTsKCQkJCQl9IGVsc2UgewoJCQkJCQlzZXRUaW1lb3V0KGpQbGF5ZXJDaGVjaywgMjUwKTsKCQkJCQl9CgkJCQl9IGVsc2UgewoJCQkJCWpQbGF5ZXJJbml0KCk7CgkJCQl9CgkJCX0sCgoJCQlqUXVlcnlDaGVjayA9IGZ1bmN0aW9uKCkgewoJCQkJaWYgKCF3aW5kb3cualF1ZXJ5KSB7CgkJCQkJaWYgKCFqUXVlcnlEb3dubG9hZGluZykgewoJCQkJCQlqUXVlcnlEb3dubG9hZGluZyA9IHRydWU7CgkJCQkJCVBvcGNvcm4uZ2V0U2NyaXB0KEpRVUVSWV9TQ1JJUFQsIGZ1bmN0aW9uKCkgewoJCQkJCQkJalF1ZXJ5RG93bmxvYWRpbmcgPSBmYWxzZTsKCQkJCQkJCWpQbGF5ZXJDaGVjaygpOwoJCQkJCQl9KTsKCQkJCQl9IGVsc2UgewoJCQkJCQlzZXRUaW1lb3V0KGpRdWVyeUNoZWNrLCAyNTApOwoJCQkJCX0KCQkJCX0gZWxzZSB7CgkJCQkJalBsYXllckNoZWNrKCk7CgkJCQl9CgkJCX07CgoJCQlqUXVlcnlDaGVjaygpOwoJCX0sCgkJX3RlYXJkb3duOiBmdW5jdGlvbigpIHsKCQkJalF1ZXJ5KCcjJyArICB0aGlzLmlkKS5qUGxheWVyKCdkZXN0cm95Jyk7CgkJfQoJfSk7Cgp9KFBvcGNvcm4pKTs=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/popcorn/popcorn.jplayer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohIFBvcGNvcm4gUGxheWVyIGZvciBqUGxheWVyIDIuOS4yIH4gKGMpIDIwMDktMjAxNCBIYXBweXdvcm0gTHRkIH4gTUlUIExpY2Vuc2UgKi8KIWZ1bmN0aW9uKGEpe3ZhciBiPSIvL2NvZGUuanF1ZXJ5LmNvbS9qcXVlcnktMS4xMS4xLm1pbi5qcyIsYz0iLy9jb2RlLmpwbGF5ZXIub3JnLzIuOS4wL2pwbGF5ZXIvanF1ZXJ5LmpwbGF5ZXIubWluLmpzIixkPSIvL2NvZGUuanBsYXllci5vcmcvMi45LjAvanBsYXllci9qcXVlcnkuanBsYXllci5zd2YiLGU9Imh0bWwsZmxhc2giLGY9ITEsZz0hMSxoPSExLGk9e21wMzp7Y29kZWM6ImF1ZGlvL21wZWciLGZsYXNoQ2FuUGxheTohMCxtZWRpYToiYXVkaW8ifSxtNGE6e2NvZGVjOidhdWRpby9tcDQ7IGNvZGVjcz0ibXA0YS40MC4yIicsZmxhc2hDYW5QbGF5OiEwLG1lZGlhOiJhdWRpbyJ9LG0zdThhOntjb2RlYzonYXBwbGljYXRpb24vdm5kLmFwcGxlLm1wZWd1cmw7IGNvZGVjcz0ibXA0YS40MC4yIicsZmxhc2hDYW5QbGF5OiExLG1lZGlhOiJhdWRpbyJ9LG0zdWE6e2NvZGVjOiJhdWRpby9tcGVndXJsIixmbGFzaENhblBsYXk6ITEsbWVkaWE6ImF1ZGlvIn0sb2dhOntjb2RlYzonYXVkaW8vb2dnOyBjb2RlY3M9InZvcmJpcywgb3B1cyInLGZsYXNoQ2FuUGxheTohMSxtZWRpYToiYXVkaW8ifSxmbGFjOntjb2RlYzoiYXVkaW8veC1mbGFjIixmbGFzaENhblBsYXk6ITEsbWVkaWE6ImF1ZGlvIn0sd2F2Ontjb2RlYzonYXVkaW8vd2F2OyBjb2RlY3M9IjEiJyxmbGFzaENhblBsYXk6ITEsbWVkaWE6ImF1ZGlvIn0sd2VibWE6e2NvZGVjOidhdWRpby93ZWJtOyBjb2RlY3M9InZvcmJpcyInLGZsYXNoQ2FuUGxheTohMSxtZWRpYToiYXVkaW8ifSxmbGE6e2NvZGVjOiJhdWRpby94LWZsdiIsZmxhc2hDYW5QbGF5OiEwLG1lZGlhOiJhdWRpbyJ9LHJ0bXBhOntjb2RlYzonYXVkaW8vcnRtcDsgY29kZWNzPSJydG1wIicsZmxhc2hDYW5QbGF5OiEwLG1lZGlhOiJhdWRpbyJ9LG00djp7Y29kZWM6J3ZpZGVvL21wNDsgY29kZWNzPSJhdmMxLjQyRTAxRSwgbXA0YS40MC4yIicsZmxhc2hDYW5QbGF5OiEwLG1lZGlhOiJ2aWRlbyJ9LG0zdTh2Ontjb2RlYzonYXBwbGljYXRpb24vdm5kLmFwcGxlLm1wZWd1cmw7IGNvZGVjcz0iYXZjMS40MkUwMUUsIG1wNGEuNDAuMiInLGZsYXNoQ2FuUGxheTohMSxtZWRpYToidmlkZW8ifSxtM3V2Ontjb2RlYzoiYXVkaW8vbXBlZ3VybCIsZmxhc2hDYW5QbGF5OiExLG1lZGlhOiJ2aWRlbyJ9LG9ndjp7Y29kZWM6J3ZpZGVvL29nZzsgY29kZWNzPSJ0aGVvcmEsIHZvcmJpcyInLGZsYXNoQ2FuUGxheTohMSxtZWRpYToidmlkZW8ifSx3ZWJtdjp7Y29kZWM6J3ZpZGVvL3dlYm07IGNvZGVjcz0idm9yYmlzLCB2cDgiJyxmbGFzaENhblBsYXk6ITEsbWVkaWE6InZpZGVvIn0sZmx2Ontjb2RlYzoidmlkZW8veC1mbHYiLGZsYXNoQ2FuUGxheTohMCxtZWRpYToidmlkZW8ifSxydG1wdjp7Y29kZWM6J3ZpZGVvL3J0bXA7IGNvZGVjcz0icnRtcCInLGZsYXNoQ2FuUGxheTohMCxtZWRpYToidmlkZW8ifX0saj1mdW5jdGlvbihhKXtyZXR1cm4gYSYmIm9iamVjdCI9PXR5cGVvZiBhJiZhLmhhc093blByb3BlcnR5PyEwOiExfSxrPWZ1bmN0aW9uKGEpe3ZhciBiPSExO3JldHVybi9cLm1wMyQvaS50ZXN0KGEpP2I9Im1wMyI6L1wubXA0JC9pLnRlc3QoYSl8fC9cLm00diQvaS50ZXN0KGEpP2I9Im00diI6L1wubTRhJC9pLnRlc3QoYSk/Yj0ibTRhIjovXC5vZ2ckL2kudGVzdChhKXx8L1wub2dhJC9pLnRlc3QoYSk/Yj0ib2dhIjovXC5vZ3YkL2kudGVzdChhKT9iPSJvZ3YiOi9cLndlYm0kL2kudGVzdChhKSYmKGI9IndlYm12IiksYn0sbD1mdW5jdGlvbihhKXt2YXIgYj0iIixjPSIiO2lmKGooYSkpZm9yKHZhciBkIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShkKSYmKGIrPWMrZCxjPSIsIik7cmV0dXJuIGYmJmNvbnNvbGUubG9nKCdnZXRTdXBwbGllZCgpOiBHZW5lcmF0ZWQ6IHN1cHBsaWVkID0gIicrYisnIicpLGJ9O2EucGxheWVyKCJqcGxheWVyIix7X2NhblBsYXlUeXBlOmZ1bmN0aW9uKGEsYil7dmFyIGMsZD1hLnRvTG93ZXJDYXNlKCksZj17bWVkaWE6e30sb3B0aW9uczp7fX0sZz0hMTtpZigidmlkZW8iIT09ZCYmImF1ZGlvIiE9PWQmJigic3RyaW5nIj09dHlwZW9mIGI/L15odHRwLiovaS50ZXN0KGIpJiYoYz1rKGIpLGMmJihmLm1lZGlhW2NdPWIsZi5vcHRpb25zLnNvbHV0aW9uPWUsZi5vcHRpb25zLnN1cHBsaWVkPWMpKTpmPWIsaihmKSYmaihmLm1lZGlhKSkpe2ooZi5vcHRpb25zKXx8KGYub3B0aW9ucz17fSksZi5vcHRpb25zLnNvbHV0aW9ufHwoZi5vcHRpb25zLnNvbHV0aW9uPWUpLGYub3B0aW9ucy5zdXBwbGllZHx8KGYub3B0aW9ucy5zdXBwbGllZD1sKGYubWVkaWEpKTtmb3IodmFyIGg9Zi5vcHRpb25zLnNvbHV0aW9uLnRvTG93ZXJDYXNlKCkuc3BsaXQoIiwiKSxtPWYub3B0aW9ucy5zdXBwbGllZC50b0xvd2VyQ2FzZSgpLnNwbGl0KCIsIiksbj0wO248aC5sZW5ndGg7bisrKWZvcih2YXIgbyxwPWhbbl0ucmVwbGFjZSgvXlxzK3xccyskL2csIiIpLHE9Imh0bWwiPT09cCxyPSJmbGFzaCI9PT1wLHM9MDtzPG0ubGVuZ3RoO3MrKylpZihjPW1bc10ucmVwbGFjZSgvXlxzK3xccyskL2csIiIpLGlbY10peyFvJiZxJiYobz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KGlbY10ubWVkaWEpKTt2YXIgdD0hIShvJiZvLmNhblBsYXlUeXBlJiZvLmNhblBsYXlUeXBlKGlbY10uY29kZWMpKSx1PXQmJnEsdj1pW2NdLmZsYXNoQ2FuUGxheSYmcjsodXx8dikmJihnPXtodG1sOnUsdHlwZTpjfSxuPWgubGVuZ3RoLHM9bS5sZW5ndGgpfX1yZXR1cm4gZ30sX3NldHVwOmZ1bmN0aW9uKCl7dmFyIGksbSxuPXRoaXMsbz0idW5rbm93biIscD17fSxxPXt9LHI9ITEscz0wLHQ9bnVsbCx1PSExLHY9bnVsbCx3PWZ1bmN0aW9uKCl7cj8oZiYmY29uc29sZS5sb2coIkRpc3BhdGNoZWQgZXZlbnQgOiBkdXJhdGlvbmNoYW5nZSA6ICIrcyksbi5kaXNwYXRjaEV2ZW50KCJkdXJhdGlvbmNoYW5nZSIpKTooZiYmY29uc29sZS5sb2coIkRFTEFZRUQgRVZFTlQgKCFyZWFkeSkgOiBkdXJhdGlvbmNoYW5nZSA6ICIrcyksY2xlYXJUaW1lb3V0KHQpLHQ9c2V0VGltZW91dCh3LDI1MCkpfSx4PWZ1bmN0aW9uKCl7dmFyIGE9ZnVuY3Rpb24oYSl7YS5qUGxheWVyLnN0YXR1cy5kdXJhdGlvbiE9PXMmJihzPWEualBsYXllci5zdGF0dXMuZHVyYXRpb24sdygpKX0sYj1mdW5jdGlvbihhKXt1fHwxMDAhPT1hLmpQbGF5ZXIuc3RhdHVzLnNlZWtQZXJjZW50fHwodT0hMCxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZiYmY29uc29sZS5sb2coIlRyaWdnZXIgOiBjYW5wbGF5dGhyb3VnaCIpLG0uX3RyaWdnZXIoJC5qUGxheWVyLmV2ZW50LmNhbnBsYXl0aHJvdWdoKX0sMCkpfTtpLmJpbmQoJC5qUGxheWVyLmV2ZW50LmxvYWRzdGFydCxmdW5jdGlvbigpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtmJiZjb25zb2xlLmxvZygiVHJpZ2dlciA6IGxvYWRlZGRhdGEiKSxtLl90cmlnZ2VyKCQualBsYXllci5ldmVudC5sb2FkZWRkYXRhKX0sMCl9KS5iaW5kKCQualBsYXllci5ldmVudC5wcm9ncmVzcyxmdW5jdGlvbihjKXthKGMpLGIoYyl9KS5iaW5kKCQualBsYXllci5ldmVudC50aW1ldXBkYXRlLGZ1bmN0aW9uKGMpe2EoYyksYihjKX0pLmJpbmQoJC5qUGxheWVyLmV2ZW50LnBsYXksZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZiYmY29uc29sZS5sb2coIlRyaWdnZXIgOiBwbGF5aW5nIiksbS5fdHJpZ2dlcigkLmpQbGF5ZXIuZXZlbnQucGxheWluZyl9LDApfSksZiYmY29uc29sZS5sb2coIkNyZWF0ZWQgQ1VTVE9NIGV2ZW50IGhhbmRsZXJzIGZvciBGTEFTSCIpfSx5PWZ1bmN0aW9uKCl7IWZ1bmN0aW9uKGIpe2k9YigiIyIrbi5pZCksInN0cmluZyI9PXR5cGVvZiBuLnNyYz8obz1rKG4uc3JjKSxwW29dPW4uc3JjLHEuc3VwcGxpZWQ9byxxLnNvbHV0aW9uPWUpOmoobi5zcmMpJiYocD1qKG4uc3JjLm1lZGlhKT9uLnNyYy5tZWRpYTp7fSxxPWoobi5zcmMub3B0aW9ucyk/bi5zcmMub3B0aW9uczp7fSxxLnNvbHV0aW9uPXEuc29sdXRpb258fGUscS5zdXBwbGllZD1xLnN1cHBsaWVkfHxsKG4uc3JjLm1lZGlhKSkscS5zd2ZQYXRoPXEuc3dmUGF0aHx8ZCxpLmJpbmQoYi5qUGxheWVyLmV2ZW50LnJlYWR5LGZ1bmN0aW9uKGEpe2EualBsYXllci5mbGFzaC51c2VkJiZ4KCksYih0aGlzKS5qUGxheWVyKCJzZXRNZWRpYSIscCkualBsYXllcigibG9hZCIpfSk7dmFyIGM9Yi5qUGxheWVyLnJlc2VydmVkRXZlbnQrIiBsb2FkZWRkYXRhIGR1cmF0aW9uY2hhbmdlIixnPWMuc3BsaXQoL1xzKy9nKSxoPWZ1bmN0aW9uKGEpe2kuYmluZChiLmpQbGF5ZXIuZXZlbnRbYV0sZnVuY3Rpb24oYil7ZiYmY29uc29sZS5sb2coIkRpc3BhdGNoZWQgZXZlbnQ6ICIrYSsoYiYmYi5qUGxheWVyPyIgKCIrYi5qUGxheWVyLnN0YXR1cy5jdXJyZW50VGltZSsicykiOiIiKSksbi5kaXNwYXRjaEV2ZW50KGEpfSksZiYmY29uc29sZS5sb2coIkNyZWF0ZWQgZXZlbnQgaGFuZGxlciBmb3I6ICIrYSl9O2Zvcih2YXIgdCBpbiBiLmpQbGF5ZXIuZXZlbnQpaWYoYi5qUGxheWVyLmV2ZW50Lmhhc093blByb3BlcnR5KHQpKXt2YXIgdT0hMDtmb3IodmFyIHkgaW4gZylpZihnLmhhc093blByb3BlcnR5KHkpJiZnW3ldPT09dCl7dT0hMTticmVha311P2godCk6ZiYmY29uc29sZS5sb2coIlNraXBwZWQgYXV0byBldmVudCBoYW5kbGVyIGNyZWF0aW9uIGZvcjogIit0KX1pLmJpbmQoYi5qUGxheWVyLmV2ZW50LmxvYWRlZGRhdGEsZnVuY3Rpb24oYSl7ZiYmY29uc29sZS5sb2coIkRpc3BhdGNoZWQgZXZlbnQ6IGxvYWRlZGRhdGEiKyhhJiZhLmpQbGF5ZXI/IiAoIithLmpQbGF5ZXIuc3RhdHVzLmN1cnJlbnRUaW1lKyJzKSI6IiIpKSxuLmRpc3BhdGNoRXZlbnQoImxvYWRlZGRhdGEiKSxyPSEwfSksZiYmY29uc29sZS5sb2coIkNyZWF0ZWQgQ1VTVE9NIGV2ZW50IGhhbmRsZXIgZm9yOiBsb2FkZWRkYXRhIiksaS5iaW5kKGIualBsYXllci5ldmVudC5kdXJhdGlvbmNoYW5nZSxmdW5jdGlvbihhKXtzPWEualBsYXllci5zdGF0dXMuZHVyYXRpb24sdygpfSksZiYmY29uc29sZS5sb2coIkNyZWF0ZWQgQ1VTVE9NIGV2ZW50IGhhbmRsZXIgZm9yOiBkdXJhdGlvbmNoYW5nZSIpLGkuYmluZChiLmpQbGF5ZXIuZXZlbnQuZXJyb3IsZnVuY3Rpb24oYSl7dj1hLmpQbGF5ZXIuZXJyb3Isdi5jb2RlPXYudHlwZT09PWIualBsYXllci5lcnJvci5VUkw/NDowLGYmJmNvbnNvbGUubG9nKCJEaXNwYXRjaGVkIGV2ZW50OiBlcnJvciIpLGYmJmNvbnNvbGUuZGlyKHYpLG4uZGlzcGF0Y2hFdmVudCgiZXJyb3IiKX0pLGYmJmNvbnNvbGUubG9nKCJDcmVhdGVkIENVU1RPTSBldmVudCBoYW5kbGVyIGZvcjogZXJyb3IiKSxhLnBsYXllci5kZWZpbmVQcm9wZXJ0eShuLCJlcnJvciIse3NldDpmdW5jdGlvbigpe3JldHVybiB2fSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdn19KSxhLnBsYXllci5kZWZpbmVQcm9wZXJ0eShuLCJjdXJyZW50VGltZSIse3NldDpmdW5jdGlvbihhKXtyZXR1cm4gbS5zdGF0dXMucGF1c2VkP2kualBsYXllcigicGF1c2UiLGEpOmkualBsYXllcigicGxheSIsYSksYX0sZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG0uc3RhdHVzLmN1cnJlbnRUaW1lfX0pLGEucGxheWVyLmRlZmluZVByb3BlcnR5KG4sImR1cmF0aW9uIix7c2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHI/czowLzB9LGdldDpmdW5jdGlvbigpe3JldHVybiByP3M6MC8wfX0pLGEucGxheWVyLmRlZmluZVByb3BlcnR5KG4sIm11dGVkIix7c2V0OmZ1bmN0aW9uKGEpe3JldHVybiBpLmpQbGF5ZXIoIm11dGUiLGEpLG0ub3B0aW9ucy5tdXRlZH0sZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG0ub3B0aW9ucy5tdXRlZH19KSxhLnBsYXllci5kZWZpbmVQcm9wZXJ0eShuLCJ2b2x1bWUiLHtzZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGkualBsYXllcigidm9sdW1lIixhKSxtLm9wdGlvbnMudm9sdW1lfSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbS5vcHRpb25zLnZvbHVtZX19KSxhLnBsYXllci5kZWZpbmVQcm9wZXJ0eShuLCJwYXVzZWQiLHtzZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbS5zdGF0dXMucGF1c2VkfSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbS5zdGF0dXMucGF1c2VkfX0pLG4ucGxheT1mdW5jdGlvbigpe2kualBsYXllcigicGxheSIpfSxuLnBhdXNlPWZ1bmN0aW9uKCl7aS5qUGxheWVyKCJwYXVzZSIpfSxpLmpQbGF5ZXIocSksbT1pLmRhdGEoImpQbGF5ZXIiKX0oalF1ZXJ5KX0sej1mdW5jdGlvbigpe2pRdWVyeS5qUGxheWVyP3koKTpoP3NldFRpbWVvdXQoeiwyNTApOihoPSEwLGEuZ2V0U2NyaXB0KGMsZnVuY3Rpb24oKXtoPSExLHkoKX0pKX0sQT1mdW5jdGlvbigpe3dpbmRvdy5qUXVlcnk/eigpOmc/c2V0VGltZW91dChBLDI1MCk6KGc9ITAsYS5nZXRTY3JpcHQoYixmdW5jdGlvbigpe2c9ITEseigpfSkpfTtBKCl9LF90ZWFyZG93bjpmdW5jdGlvbigpe2pRdWVyeSgiIyIrdGhpcy5pZCkualBsYXllcigiZGVzdHJveSIpfX0pfShQb3Bjb3JuKTs=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBbalBsYXllcl0oaHR0cDovL2pwbGF5ZXIub3JnLykgOiBIVE1MNSBBdWRpbyAmIFZpZGVvIGZvciBbalF1ZXJ5XShodHRwOi8vanF1ZXJ5LmNvbS8pCgpTdXBwb3J0IGZvciBbWmVwdG9dKGh0dHA6Ly96ZXB0b2pzLmNvbS8pIDEuMCsgY29tcGlsZWQgd2l0aCB0aGUgZGF0YSBtb2R1bGUuCgojIyBXaGF0IGlzIGpQbGF5ZXI/CgojIyMgalBsYXllciBpcyBhIGpRdWVyeS9aZXB0byBwbHVnaW4gdGhhdCBhbGxvd3MgeW91IHRvOgoqICoqcGxheSBhbmQgY29udHJvbCBtZWRpYSoqIGZpbGVzIGluIHlvdXIgd2VicGFnZS4KKiBjcmVhdGUgYSAqKmNvbnNpc3RlbnQgaW50ZXJmYWNlKiogYW5kIGV4cGVyaWVuY2UgYWNyb3NzIGFsbCBicm93c2Vycy4KKiBjcmVhdGUgYW5kIHN0eWxlIGEgbWVkaWEgcGxheWVyIHVzaW5nICoqanVzdCBIVE1MIGFuZCBDU1MqKi4KKiBhZGQgKiphdWRpbyoqIGFuZCAqKnZpZGVvKiogdG8geW91ciBqUXVlcnkvWmVwdG8gcHJvamVjdHMuCiogc3VwcG9ydCBtb3JlIGRldmljZXMgdXNpbmcgKipIVE1MNSoqLgoqIHN1cHBvcnQgb2xkZXIgYnJvd3NlcnMgdXNpbmcgYSBGbGFzaCBfZmFsbC1iYWNrL2ZvcndhcmRfLgoqIGNvbnRyb2wgbWVkaWEgb24geW91ciB3ZWJzaXRlIHVzaW5nIGEgW0phdmFTY3JpcHQgQVBJXShodHRwOi8vd3d3LmpwbGF5ZXIub3JnL2xhdGVzdC9kZXZlbG9wZXItZ3VpZGUvKS4KCiMjIyBqUGxheWVyIHN1cHBvcnRzOgoqIEhUTUw1OiAqKm1wMywgbTRhIChBQUMpLCBtNHYgKEguMjY0KSwqKiBvZ3YqLCBvZ2EqLCB3YXYqLCB3ZWJtKgoqIEZsYXNoOiAqKm1wMywgbTRhIChBQUMpLCBtNHYgKEguMjY0KSwqKiBydG1wLCBmbHYuCgpfKCopIE9wdGlvbmFsIGNvdW50ZXJwYXJ0IGZvcm1hdHMgdG8gaW5jcmVhc2UgSFRNTDUgY3Jvc3MtYnJvd3NlciBzdXBwb3J0Ll8KCiMjIExpY2Vuc2UKW2pQbGF5ZXJdKGh0dHA6Ly9qcGxheWVyLm9yZy8pIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBbTUlUIGxpY2Vuc2VdKGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQpLgoKIyMgTW9yZSBpbmZvcm1hdGlvbjoKKiBbalBsYXllci5vcmddKGh0dHA6Ly9qcGxheWVyLm9yZy8pCiogW1F1aWNrIFN0YXJ0IEd1aWRlXShodHRwOi8vd3d3LmpwbGF5ZXIub3JnL2xhdGVzdC9xdWljay1zdGFydC1ndWlkZS8pCiogW0RldmVsb3BlciBHdWlkZSBhbmQgQVBJIFJlZmVyZW5jZV0oaHR0cDovL3d3dy5qcGxheWVyLm9yZy9sYXRlc3QvZGV2ZWxvcGVyLWd1aWRlLykKCiMjIEF1dGhvcjoKTWFyayBKIFBhbmFnaGlzdG9uIFtAdGhlcGFnXShodHRwOi8vdHdpdHRlci5jb20vdGhlcGFnKQpbaGFwcHl3b3JtLmNvbV0oaHR0cDovL2hhcHB5d29ybS5jb20vKQo=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin/blue.monday/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin/blue.monday/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin/blue.monday/css/jplayer.blue.monday.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohIEJsdWUgTW9uZGF5IFNraW4gZm9yIGpQbGF5ZXIgMi45LjIgfiAoYykgMjAwOS0yMDE0IEhhcHB5d29ybSBMdGQgfiBNSVQgTGljZW5zZSAqLwoKLyoKICogU2tpbiBmb3IgalBsYXllciBQbHVnaW4gKGpRdWVyeSBKYXZhU2NyaXB0IExpYnJhcnkpCiAqIGh0dHA6Ly93d3cuanBsYXllci5vcmcKICoKICogU2tpbiBOYW1lOiBCbHVlIE1vbmRheQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTAgLSAyMDE0IEhhcHB5d29ybSBMdGQKICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLgogKiAgLSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocAogKgogKiBBdXRob3I6IFNpbHZpYSBCZW52ZW51dGkKICogU2tpbiBWZXJzaW9uOiA1LjEgKGpQbGF5ZXIgMi44LjApCiAqIERhdGU6IDEzdGggTm92ZW1iZXIgMjAxNAogKi8KLmpwLWF1ZGlvICo6Zm9jdXMsCi5qcC1hdWRpby1zdHJlYW0gKjpmb2N1cywKLmpwLXZpZGVvICo6Zm9jdXMgewogIC8qIERpc2FibGUgdGhlIGJyb3dzZXIgZm9jdXMgaGlnaGxpZ2h0aW5nLiAqLwogIG91dGxpbmU6IG5vbmU7IH0KCi5qcC1hdWRpbyBidXR0b246Oi1tb3otZm9jdXMtaW5uZXIsCi5qcC1hdWRpby1zdHJlYW0gYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLAouanAtdmlkZW8gYnV0dG9uOjotbW96LWZvY3VzLWlubmVyIHsKICAvKiBEaXNhYmxlIHRoZSBicm93c2VyIENTUzMgZm9jdXMgaGlnaGxpZ2h0aW5nLiAqLwogIGJvcmRlcjogMDsgfQoKLmpwLWF1ZGlvLAouanAtYXVkaW8tc3RyZWFtLAouanAtdmlkZW8gewogIGZvbnQtc2l6ZTogMTZweDsKICBmb250LWZhbWlseTogVmVyZGFuYSwgQXJpYWwsIHNhbnMtc2VyaWY7CiAgbGluZS1oZWlnaHQ6IDEuNjsKICBjb2xvcjogIzY2NjsKICBib3JkZXI6IDFweCBzb2xpZCAjMDA5YmUzOwogIGJhY2tncm91bmQtY29sb3I6ICNlZWU7IH0KCi5qcC1hdWRpbyB7CiAgd2lkdGg6IDQyMHB4OyB9CgouanAtYXVkaW8tc3RyZWFtIHsKICB3aWR0aDogMTgycHg7IH0KCi5qcC12aWRlby0yNzBwIHsKICB3aWR0aDogNDgwcHg7IH0KCi5qcC12aWRlby0zNjBwIHsKICB3aWR0aDogNjQwcHg7IH0KCi5qcC12aWRlby1mdWxsIHsKICAvKiBSdWxlcyBmb3IgSUU2IChmdWxsLXNjcmVlbikgKi8KICB3aWR0aDogNDgwcHg7CiAgaGVpZ2h0OiAyNzBweDsKICAvKiBSdWxlcyBmb3IgSUU3IChmdWxsLXNjcmVlbikgLSBPdGhlcndpc2UgdGhlIHJlbGF0aXZlIGNvbnRhaW5lciBjYXVzZXMgb3RoZXIgcGFnZSBpdGVtcyB0aGF0IGFyZSBub3QgcG9zaXRpb246c3RhdGljIChkZWZhdWx0KSB0byBhcHBlYXIgb3ZlciB0aGUgdmlkZW8vZ3VpLiAqLwogIHBvc2l0aW9uOiBzdGF0aWMgIWltcG9ydGFudDsKICBwb3NpdGlvbjogcmVsYXRpdmU7IH0KCi8qIFRoZSB6LWluZGV4IHJ1bGUgaXMgZGVmaW5lZCBpbiB0aGlzIG1hbm5lciB0byBlbmFibGUgUG9wY29ybiBwbHVnaW5zIHRoYXQgYWRkIG92ZXJsYXlzIHRvIHZpZGVvIGFyZWEuIEVHLiBTdWJ0aXRsZXMuICovCi5qcC12aWRlby1mdWxsIGRpdiBkaXYgewogIHotaW5kZXg6IDEwMDA7IH0KCi5qcC12aWRlby1mdWxsIC5qcC1qcGxheWVyIHsKICB0b3A6IDA7CiAgbGVmdDogMDsKICBwb3NpdGlvbjogZml4ZWQgIWltcG9ydGFudDsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgLyogUnVsZXMgZm9yIElFNiAoZnVsbC1zY3JlZW4pICovCiAgb3ZlcmZsb3c6IGhpZGRlbjsgfQoKLmpwLXZpZGVvLWZ1bGwgLmpwLWd1aSB7CiAgcG9zaXRpb246IGZpeGVkICFpbXBvcnRhbnQ7CiAgcG9zaXRpb246IHN0YXRpYzsKICAvKiBSdWxlcyBmb3IgSUU2IChmdWxsLXNjcmVlbikgKi8KICB0b3A6IDA7CiAgbGVmdDogMDsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDEwMCU7CiAgei1pbmRleDogMTAwMTsKICAvKiAxIGxheWVyIGFib3ZlIHRoZSBvdGhlcnMuICovIH0KCi5qcC12aWRlby1mdWxsIC5qcC1pbnRlcmZhY2UgewogIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50OwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAvKiBSdWxlcyBmb3IgSUU2IChmdWxsLXNjcmVlbikgKi8KICBib3R0b206IDA7CiAgbGVmdDogMDsgfQoKLmpwLWludGVyZmFjZSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGJhY2tncm91bmQtY29sb3I6ICNlZWU7CiAgd2lkdGg6IDEwMCU7IH0KCi5qcC1hdWRpbyAuanAtaW50ZXJmYWNlIHsKICBoZWlnaHQ6IDgwcHg7IH0KCi5qcC1hdWRpby1zdHJlYW0gLmpwLWludGVyZmFjZSB7CiAgaGVpZ2h0OiA4MHB4OyB9CgouanAtdmlkZW8gLmpwLWludGVyZmFjZSB7CiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICMwMDliZTM7IH0KCi8qIEBncm91cCBDT05UUk9MUyAqLwouanAtY29udHJvbHMtaG9sZGVyIHsKICBjbGVhcjogYm90aDsKICB3aWR0aDogNDQwcHg7CiAgbWFyZ2luOiAwIGF1dG87CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIG92ZXJmbG93OiBoaWRkZW47CiAgdG9wOiAtOHB4OwogIC8qIFRoaXMgbmVnYXRpdmUgdmFsdWUgZGVwZW5kcyBvbiB0aGUgc2l6ZSBvZiB0aGUgdGV4dCBpbiBqcC1jdXJyZW50VGltZSBhbmQganAtZHVyYXRpb24gKi8gfQoKLmpwLWludGVyZmFjZSAuanAtY29udHJvbHMgewogIG1hcmdpbjogMDsKICBwYWRkaW5nOiAwOwogIG92ZXJmbG93OiBoaWRkZW47IH0KCi5qcC1hdWRpbyAuanAtY29udHJvbHMgewogIHdpZHRoOiAzODBweDsKICBwYWRkaW5nOiAyMHB4IDIwcHggMCAyMHB4OyB9CgouanAtYXVkaW8tc3RyZWFtIC5qcC1jb250cm9scyB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMjBweDsKICBsZWZ0OiAyMHB4OwogIHdpZHRoOiAxNDJweDsgfQoKLmpwLXZpZGVvIC5qcC10eXBlLXNpbmdsZSAuanAtY29udHJvbHMgewogIHdpZHRoOiA3OHB4OwogIG1hcmdpbi1sZWZ0OiAyMDBweDsgfQoKLmpwLXZpZGVvIC5qcC10eXBlLXBsYXlsaXN0IC5qcC1jb250cm9scyB7CiAgd2lkdGg6IDEzNHB4OwogIG1hcmdpbi1sZWZ0OiAxNzJweDsgfQoKLmpwLXZpZGVvIC5qcC1jb250cm9scyB7CiAgZmxvYXQ6IGxlZnQ7IH0KCi5qcC1jb250cm9scyBidXR0b24gewogIGRpc3BsYXk6IGJsb2NrOwogIGZsb2F0OiBsZWZ0OwogIG92ZXJmbG93OiBoaWRkZW47CiAgdGV4dC1pbmRlbnQ6IC05OTk5cHg7CiAgYm9yZGVyOiBub25lOwogIGN1cnNvcjogcG9pbnRlcjsgfQoKLmpwLXBsYXkgewogIHdpZHRoOiA0MHB4OwogIGhlaWdodDogNDBweDsgfQoKLmpwLXBsYXkgewogIGJhY2tncm91bmQ6IHVybCgiLi4vaW1hZ2UvanBsYXllci5ibHVlLm1vbmRheS5qcGciKSAwIDAgbm8tcmVwZWF0OyB9CgouanAtcGxheTpmb2N1cyB7CiAgYmFja2dyb3VuZDogdXJsKCIuLi9pbWFnZS9qcGxheWVyLmJsdWUubW9uZGF5LmpwZyIpIC00MXB4IDAgbm8tcmVwZWF0OyB9CgouanAtc3RhdGUtcGxheWluZyAuanAtcGxheSB7CiAgYmFja2dyb3VuZDogdXJsKCIuLi9pbWFnZS9qcGxheWVyLmJsdWUubW9uZGF5LmpwZyIpIDAgLTQycHggbm8tcmVwZWF0OyB9CgouanAtc3RhdGUtcGxheWluZyAuanAtcGxheTpmb2N1cyB7CiAgYmFja2dyb3VuZDogdXJsKCIuLi9pbWFnZS9qcGxheWVyLmJsdWUubW9uZGF5LmpwZyIpIC00MXB4IC00MnB4IG5vLXJlcGVhdDsgfQoKLmpwLXN0b3AsIC5qcC1wcmV2aW91cywgLmpwLW5leHQgewogIHdpZHRoOiAyOHB4OwogIGhlaWdodDogMjhweDsKICBtYXJnaW4tdG9wOiA2cHg7IH0KCi5qcC1zdG9wIHsKICBiYWNrZ3JvdW5kOiB1cmwoIi4uL2ltYWdlL2pwbGF5ZXIuYmx1ZS5tb25kYXkuanBnIikgMCAtODNweCBuby1yZXBlYXQ7CiAgbWFyZ2luLWxlZnQ6IDEwcHg7IH0KCi5qcC1zdG9wOmZvY3VzIHsKICBiYWNrZ3JvdW5kOiB1cmwoIi4uL2ltYWdlL2pwbGF5ZXIuYmx1ZS5tb25kYXkuanBnIikgLTI5cHggLTgzcHggbm8tcmVwZWF0OyB9CgouanAtcHJldmlvdXMgewogIGJhY2tncm91bmQ6IHVybCgiLi4vaW1hZ2UvanBsYXllci5ibHVlLm1vbmRheS5qcGciKSAwIC0xMTJweCBuby1yZXBlYXQ7IH0KCi5qcC1wcmV2aW91czpmb2N1cyB7CiAgYmFja2dyb3VuZDogdXJsKCIuLi9pbWFnZS9qcGxheWVyLmJsdWUubW9uZGF5LmpwZyIpIC0yOXB4IC0xMTJweCBuby1yZXBlYXQ7IH0KCi5qcC1uZXh0IHsKICBiYWNrZ3JvdW5kOiB1cmwoIi4uL2ltYWdlL2pwbGF5ZXIuYmx1ZS5tb25kYXkuanBnIikgMCAtMTQxcHggbm8tcmVwZWF0OyB9CgouanAtbmV4dDpmb2N1cyB7CiAgYmFja2dyb3VuZDogdXJsKCIuLi9pbWFnZS9qcGxheWVyLmJsdWUubW9uZGF5LmpwZyIpIC0yOXB4IC0xNDFweCBuby1yZXBlYXQ7IH0KCi8qIEBlbmQgKi8KLyogQGdyb3VwIHByb2dyZXNzIGJhciAqLwouanAtcHJvZ3Jlc3MgewogIG92ZXJmbG93OiBoaWRkZW47CiAgYmFja2dyb3VuZC1jb2xvcjogI2RkZDsgfQoKLmpwLWF1ZGlvIC5qcC1wcm9ncmVzcyB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMzJweDsKICBoZWlnaHQ6IDE1cHg7IH0KCi5qcC1hdWRpbyAuanAtdHlwZS1zaW5nbGUgLmpwLXByb2dyZXNzIHsKICBsZWZ0OiAxMTBweDsKICB3aWR0aDogMTg2cHg7IH0KCi5qcC1hdWRpbyAuanAtdHlwZS1wbGF5bGlzdCAuanAtcHJvZ3Jlc3MgewogIGxlZnQ6IDE2NnB4OwogIHdpZHRoOiAxMzBweDsgfQoKLmpwLXZpZGVvIC5qcC1wcm9ncmVzcyB7CiAgdG9wOiAwcHg7CiAgbGVmdDogMHB4OwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMTBweDsgfQoKLmpwLXNlZWstYmFyIHsKICBiYWNrZ3JvdW5kOiB1cmwoIi4uL2ltYWdlL2pwbGF5ZXIuYmx1ZS5tb25kYXkuanBnIikgMCAtMjAycHggcmVwZWF0LXg7CiAgd2lkdGg6IDBweDsKICBoZWlnaHQ6IDEwMCU7CiAgY3Vyc29yOiBwb2ludGVyOyB9CgouanAtcGxheS1iYXIgewogIGJhY2tncm91bmQ6IHVybCgiLi4vaW1hZ2UvanBsYXllci5ibHVlLm1vbmRheS5qcGciKSAwIC0yMThweCByZXBlYXQteDsKICB3aWR0aDogMHB4OwogIGhlaWdodDogMTAwJTsgfQoKLyogVGhlIHNlZWtpbmcgY2xhc3MgaXMgYWRkZWQvcmVtb3ZlZCBpbnNpZGUgalBsYXllciAqLwouanAtc2Vla2luZy1iZyB7CiAgYmFja2dyb3VuZDogdXJsKCIuLi9pbWFnZS9qcGxheWVyLmJsdWUubW9uZGF5LnNlZWtpbmcuZ2lmIik7IH0KCi8qIEBlbmQgKi8KLyogQGdyb3VwIHZvbHVtZSBjb250cm9scyAqLwouanAtc3RhdGUtbm8tdm9sdW1lIC5qcC12b2x1bWUtY29udHJvbHMgewogIGRpc3BsYXk6IG5vbmU7IH0KCi5qcC12b2x1bWUtY29udHJvbHMgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDMycHg7CiAgbGVmdDogMzA4cHg7CiAgd2lkdGg6IDIwMHB4OyB9CgouanAtYXVkaW8tc3RyZWFtIC5qcC12b2x1bWUtY29udHJvbHMgewogIGxlZnQ6IDcwcHg7IH0KCi5qcC12aWRlbyAuanAtdm9sdW1lLWNvbnRyb2xzIHsKICB0b3A6IDEycHg7CiAgbGVmdDogNTBweDsgfQoKLmpwLXZvbHVtZS1jb250cm9scyBidXR0b24gewogIGRpc3BsYXk6IGJsb2NrOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBvdmVyZmxvdzogaGlkZGVuOwogIHRleHQtaW5kZW50OiAtOTk5OXB4OwogIGJvcmRlcjogbm9uZTsKICBjdXJzb3I6IHBvaW50ZXI7IH0KCi5qcC1tdXRlLAouanAtdm9sdW1lLW1heCB7CiAgd2lkdGg6IDE4cHg7CiAgaGVpZ2h0OiAxNXB4OyB9CgouanAtdm9sdW1lLW1heCB7CiAgbGVmdDogNzRweDsgfQoKLmpwLW11dGUgewogIGJhY2tncm91bmQ6IHVybCgiLi4vaW1hZ2UvanBsYXllci5ibHVlLm1vbmRheS5qcGciKSAwIC0xNzBweCBuby1yZXBlYXQ7IH0KCi5qcC1tdXRlOmZvY3VzIHsKICBiYWNrZ3JvdW5kOiB1cmwoIi4uL2ltYWdlL2pwbGF5ZXIuYmx1ZS5tb25kYXkuanBnIikgLTE5cHggLTE3MHB4IG5vLXJlcGVhdDsgfQoKLmpwLXN0YXRlLW11dGVkIC5qcC1tdXRlIHsKICBiYWNrZ3JvdW5kOiB1cmwoIi4uL2ltYWdlL2pwbGF5ZXIuYmx1ZS5tb25kYXkuanBnIikgLTYwcHggLTE3MHB4IG5vLXJlcGVhdDsgfQoKLmpwLXN0YXRlLW11dGVkIC5qcC1tdXRlOmZvY3VzIHsKICBiYWNrZ3JvdW5kOiB1cmwoIi4uL2ltYWdlL2pwbGF5ZXIuYmx1ZS5tb25kYXkuanBnIikgLTc5cHggLTE3MHB4IG5vLXJlcGVhdDsgfQoKLmpwLXZvbHVtZS1tYXggewogIGJhY2tncm91bmQ6IHVybCgiLi4vaW1hZ2UvanBsYXllci5ibHVlLm1vbmRheS5qcGciKSAwIC0xODZweCBuby1yZXBlYXQ7IH0KCi5qcC12b2x1bWUtbWF4OmZvY3VzIHsKICBiYWNrZ3JvdW5kOiB1cmwoIi4uL2ltYWdlL2pwbGF5ZXIuYmx1ZS5tb25kYXkuanBnIikgLTE5cHggLTE4NnB4IG5vLXJlcGVhdDsgfQoKLmpwLXZvbHVtZS1iYXIgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBvdmVyZmxvdzogaGlkZGVuOwogIGJhY2tncm91bmQ6IHVybCgiLi4vaW1hZ2UvanBsYXllci5ibHVlLm1vbmRheS5qcGciKSAwIC0yNTBweCByZXBlYXQteDsKICB0b3A6IDVweDsKICBsZWZ0OiAyMnB4OwogIHdpZHRoOiA0NnB4OwogIGhlaWdodDogNXB4OwogIGN1cnNvcjogcG9pbnRlcjsgfQoKLmpwLXZvbHVtZS1iYXItdmFsdWUgewogIGJhY2tncm91bmQ6IHVybCgiLi4vaW1hZ2UvanBsYXllci5ibHVlLm1vbmRheS5qcGciKSAwIC0yNTZweCByZXBlYXQteDsKICB3aWR0aDogMHB4OwogIGhlaWdodDogNXB4OyB9CgovKiBAZW5kICovCi8qIEBncm91cCBjdXJyZW50IHRpbWUgYW5kIGR1cmF0aW9uICovCi5qcC1hdWRpbyAuanAtdGltZS1ob2xkZXIgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDUwcHg7IH0KCi5qcC1hdWRpbyAuanAtdHlwZS1zaW5nbGUgLmpwLXRpbWUtaG9sZGVyIHsKICBsZWZ0OiAxMTBweDsKICB3aWR0aDogMTg2cHg7IH0KCi5qcC1hdWRpbyAuanAtdHlwZS1wbGF5bGlzdCAuanAtdGltZS1ob2xkZXIgewogIGxlZnQ6IDE2NnB4OwogIHdpZHRoOiAxMzBweDsgfQoKLmpwLWN1cnJlbnQtdGltZSwKLmpwLWR1cmF0aW9uIHsKICB3aWR0aDogNjBweDsKICBmb250LXNpemU6IC42NGVtOwogIGZvbnQtc3R5bGU6IG9ibGlxdWU7IH0KCi5qcC1jdXJyZW50LXRpbWUgewogIGZsb2F0OiBsZWZ0OwogIGRpc3BsYXk6IGlubGluZTsKICBjdXJzb3I6IGRlZmF1bHQ7IH0KCi5qcC1kdXJhdGlvbiB7CiAgZmxvYXQ6IHJpZ2h0OwogIGRpc3BsYXk6IGlubGluZTsKICB0ZXh0LWFsaWduOiByaWdodDsKICBjdXJzb3I6IHBvaW50ZXI7IH0KCi5qcC12aWRlbyAuanAtY3VycmVudC10aW1lIHsKICBtYXJnaW4tbGVmdDogMjBweDsgfQoKLmpwLXZpZGVvIC5qcC1kdXJhdGlvbiB7CiAgbWFyZ2luLXJpZ2h0OiAyMHB4OyB9CgovKiBAZW5kICovCi8qIEBncm91cCBwbGF5bGlzdCAqLwouanAtZGV0YWlscyB7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIGN1cnNvcjogZGVmYXVsdDsgfQoKLmpwLWRldGFpbHMsCi5qcC1wbGF5bGlzdCB7CiAgd2lkdGg6IDEwMCU7CiAgYmFja2dyb3VuZC1jb2xvcjogI2NjYzsKICBib3JkZXItdG9wOiAxcHggc29saWQgIzAwOWJlMzsgfQoKLmpwLXR5cGUtc2luZ2xlIC5qcC1kZXRhaWxzLAouanAtdHlwZS1wbGF5bGlzdCAuanAtZGV0YWlscyB7CiAgYm9yZGVyLXRvcDogbm9uZTsgfQoKLmpwLWRldGFpbHMgLmpwLXRpdGxlIHsKICBtYXJnaW46IDA7CiAgcGFkZGluZzogNXB4IDIwcHg7CiAgZm9udC1zaXplOiAuNzJlbTsKICBmb250LXdlaWdodDogYm9sZDsgfQoKLmpwLXBsYXlsaXN0IHVsIHsKICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7CiAgbWFyZ2luOiAwOwogIHBhZGRpbmc6IDAgMjBweDsKICBmb250LXNpemU6IC43MmVtOyB9CgouanAtcGxheWxpc3QgbGkgewogIHBhZGRpbmc6IDVweCAwIDRweCAyMHB4OwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVlOyB9CgouanAtcGxheWxpc3QgbGkgZGl2IHsKICBkaXNwbGF5OiBpbmxpbmU7IH0KCi8qIE5vdGUgdGhhdCB0aGUgZmlyc3QtY2hpbGQgKElFNikgYW5kIGxhc3QtY2hpbGQgKElFNi83LzgpIHNlbGVjdG9ycyBkbyBub3Qgd29yayBvbiBJRSAqLwpkaXYuanAtdHlwZS1wbGF5bGlzdCBkaXYuanAtcGxheWxpc3QgbGk6bGFzdC1jaGlsZCB7CiAgcGFkZGluZzogNXB4IDAgNXB4IDIwcHg7CiAgYm9yZGVyLWJvdHRvbTogbm9uZTsgfQoKZGl2LmpwLXR5cGUtcGxheWxpc3QgZGl2LmpwLXBsYXlsaXN0IGxpLmpwLXBsYXlsaXN0LWN1cnJlbnQgewogIGxpc3Qtc3R5bGUtdHlwZTogc3F1YXJlOwogIGxpc3Qtc3R5bGUtcG9zaXRpb246IGluc2lkZTsKICBwYWRkaW5nLWxlZnQ6IDdweDsgfQoKZGl2LmpwLXR5cGUtcGxheWxpc3QgZGl2LmpwLXBsYXlsaXN0IGEgewogIGNvbG9yOiAjMzMzOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfQoKZGl2LmpwLXR5cGUtcGxheWxpc3QgZGl2LmpwLXBsYXlsaXN0IGE6aG92ZXIgewogIGNvbG9yOiAjMGQ4OGMxOyB9CgpkaXYuanAtdHlwZS1wbGF5bGlzdCBkaXYuanAtcGxheWxpc3QgYS5qcC1wbGF5bGlzdC1jdXJyZW50IHsKICBjb2xvcjogIzBkODhjMTsgfQoKZGl2LmpwLXR5cGUtcGxheWxpc3QgZGl2LmpwLXBsYXlsaXN0IGEuanAtcGxheWxpc3QtaXRlbS1yZW1vdmUgewogIGZsb2F0OiByaWdodDsKICBkaXNwbGF5OiBpbmxpbmU7CiAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgbWFyZ2luLXJpZ2h0OiAxMHB4OwogIGZvbnQtd2VpZ2h0OiBib2xkOwogIGNvbG9yOiAjNjY2OyB9CgpkaXYuanAtdHlwZS1wbGF5bGlzdCBkaXYuanAtcGxheWxpc3QgYS5qcC1wbGF5bGlzdC1pdGVtLXJlbW92ZTpob3ZlciB7CiAgY29sb3I6ICMwZDg4YzE7IH0KCmRpdi5qcC10eXBlLXBsYXlsaXN0IGRpdi5qcC1wbGF5bGlzdCBzcGFuLmpwLWZyZWUtbWVkaWEgewogIGZsb2F0OiByaWdodDsKICBkaXNwbGF5OiBpbmxpbmU7CiAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgbWFyZ2luLXJpZ2h0OiAxMHB4OyB9CgpkaXYuanAtdHlwZS1wbGF5bGlzdCBkaXYuanAtcGxheWxpc3Qgc3Bhbi5qcC1mcmVlLW1lZGlhIGEgewogIGNvbG9yOiAjNjY2OyB9CgpkaXYuanAtdHlwZS1wbGF5bGlzdCBkaXYuanAtcGxheWxpc3Qgc3Bhbi5qcC1mcmVlLW1lZGlhIGE6aG92ZXIgewogIGNvbG9yOiAjMGQ4OGMxOyB9CgpzcGFuLmpwLWFydGlzdCB7CiAgZm9udC1zaXplOiAuOGVtOwogIGNvbG9yOiAjNjY2OyB9CgovKiBAZW5kICovCi5qcC12aWRlby1wbGF5IHsKICB3aWR0aDogMTAwJTsKICBvdmVyZmxvdzogaGlkZGVuOwogIC8qIEltcG9ydGFudCBmb3IgbmVzdGVkIG5lZ2F0aXZlIG1hcmdpbnMgdG8gd29yayBpbiBtb2Rlcm4gYnJvd3NlcnMgKi8KICBjdXJzb3I6IHBvaW50ZXI7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgLyogTWFrZXMgSUU5IHdvcmsgd2l0aCB0aGUgYWN0aXZlIGFyZWEgb3ZlciB0aGUgd2hvbGUgdmlkZW8gYXJlYS4gSUU2LzcvOCBvbmx5IGhhdmUgdGhlIGJ1dHRvbiBhcyBhY3RpdmUgYXJlYS4gKi8gfQoKLmpwLXZpZGVvLTI3MHAgLmpwLXZpZGVvLXBsYXkgewogIG1hcmdpbi10b3A6IC0yNzBweDsKICBoZWlnaHQ6IDI3MHB4OyB9CgouanAtdmlkZW8tMzYwcCAuanAtdmlkZW8tcGxheSB7CiAgbWFyZ2luLXRvcDogLTM2MHB4OwogIGhlaWdodDogMzYwcHg7IH0KCi5qcC12aWRlby1mdWxsIC5qcC12aWRlby1wbGF5IHsKICBoZWlnaHQ6IDEwMCU7IH0KCi5qcC12aWRlby1wbGF5LWljb24gewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMTEycHg7CiAgaGVpZ2h0OiAxMDBweDsKICBtYXJnaW4tbGVmdDogLTU2cHg7CiAgbWFyZ2luLXRvcDogLTUwcHg7CiAgbGVmdDogNTAlOwogIHRvcDogNTAlOwogIGJhY2tncm91bmQ6IHVybCgiLi4vaW1hZ2UvanBsYXllci5ibHVlLm1vbmRheS52aWRlby5wbGF5LnBuZyIpIDAgMCBuby1yZXBlYXQ7CiAgdGV4dC1pbmRlbnQ6IC05OTk5cHg7CiAgYm9yZGVyOiBub25lOwogIGN1cnNvcjogcG9pbnRlcjsgfQoKLmpwLXZpZGVvLXBsYXktaWNvbjpmb2N1cyB7CiAgYmFja2dyb3VuZDogdXJsKCIuLi9pbWFnZS9qcGxheWVyLmJsdWUubW9uZGF5LnZpZGVvLnBsYXkucG5nIikgMCAtMTAwcHggbm8tcmVwZWF0OyB9CgouanAtanBsYXllciBhdWRpbywKLmpwLWpwbGF5ZXIgewogIHdpZHRoOiAwcHg7CiAgaGVpZ2h0OiAwcHg7IH0KCi5qcC1qcGxheWVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwOyB9CgovKiBAZ3JvdXAgVE9HR0xFUyAqLwovKiBUaGUgYXVkaW8gdG9nZ2xlcyBhcmUgbmVzdGVkIGluc2lkZSBqcC10aW1lLWhvbGRlciAqLwouanAtdG9nZ2xlcyB7CiAgcGFkZGluZzogMDsKICBtYXJnaW46IDAgYXV0bzsKICBvdmVyZmxvdzogaGlkZGVuOyB9CgouanAtYXVkaW8gLmpwLXR5cGUtc2luZ2xlIC5qcC10b2dnbGVzIHsKICB3aWR0aDogMjVweDsgfQoKLmpwLWF1ZGlvIC5qcC10eXBlLXBsYXlsaXN0IC5qcC10b2dnbGVzIHsKICB3aWR0aDogNTVweDsKICBtYXJnaW46IDA7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxlZnQ6IDMyNXB4OwogIHRvcDogNTBweDsgfQoKLmpwLXZpZGVvIC5qcC10b2dnbGVzIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgcmlnaHQ6IDE2cHg7CiAgbWFyZ2luOiAwOwogIG1hcmdpbi10b3A6IDEwcHg7CiAgd2lkdGg6IDEwMHB4OyB9CgouanAtdG9nZ2xlcyBidXR0b24gewogIGRpc3BsYXk6IGJsb2NrOwogIGZsb2F0OiBsZWZ0OwogIHdpZHRoOiAyNXB4OwogIGhlaWdodDogMThweDsKICB0ZXh0LWluZGVudDogLTk5OTlweDsKICBsaW5lLWhlaWdodDogMTAwJTsKICAvKiBuZWVkIHRoaXMgZm9yIElFNiAqLwogIGJvcmRlcjogbm9uZTsKICBjdXJzb3I6IHBvaW50ZXI7IH0KCi5qcC1mdWxsLXNjcmVlbiB7CiAgYmFja2dyb3VuZDogdXJsKCIuLi9pbWFnZS9qcGxheWVyLmJsdWUubW9uZGF5LmpwZyIpIDAgLTMxMHB4IG5vLXJlcGVhdDsKICBtYXJnaW4tbGVmdDogMjBweDsgfQoKLmpwLWZ1bGwtc2NyZWVuOmZvY3VzIHsKICBiYWNrZ3JvdW5kOiB1cmwoIi4uL2ltYWdlL2pwbGF5ZXIuYmx1ZS5tb25kYXkuanBnIikgLTMwcHggLTMxMHB4IG5vLXJlcGVhdDsgfQoKLmpwLXN0YXRlLWZ1bGwtc2NyZWVuIC5qcC1mdWxsLXNjcmVlbiB7CiAgYmFja2dyb3VuZDogdXJsKCIuLi9pbWFnZS9qcGxheWVyLmJsdWUubW9uZGF5LmpwZyIpIC02MHB4IC0zMTBweCBuby1yZXBlYXQ7IH0KCi5qcC1zdGF0ZS1mdWxsLXNjcmVlbiAuanAtZnVsbC1zY3JlZW46Zm9jdXMgewogIGJhY2tncm91bmQ6IHVybCgiLi4vaW1hZ2UvanBsYXllci5ibHVlLm1vbmRheS5qcGciKSAtOTBweCAtMzEwcHggbm8tcmVwZWF0OyB9CgouanAtcmVwZWF0IHsKICBiYWNrZ3JvdW5kOiB1cmwoIi4uL2ltYWdlL2pwbGF5ZXIuYmx1ZS5tb25kYXkuanBnIikgMCAtMjkwcHggbm8tcmVwZWF0OyB9CgouanAtcmVwZWF0OmZvY3VzIHsKICBiYWNrZ3JvdW5kOiB1cmwoIi4uL2ltYWdlL2pwbGF5ZXIuYmx1ZS5tb25kYXkuanBnIikgLTMwcHggLTI5MHB4IG5vLXJlcGVhdDsgfQoKLmpwLXN0YXRlLWxvb3BlZCAuanAtcmVwZWF0IHsKICBiYWNrZ3JvdW5kOiB1cmwoIi4uL2ltYWdlL2pwbGF5ZXIuYmx1ZS5tb25kYXkuanBnIikgLTYwcHggLTI5MHB4IG5vLXJlcGVhdDsgfQoKLmpwLXN0YXRlLWxvb3BlZCAuanAtcmVwZWF0OmZvY3VzIHsKICBiYWNrZ3JvdW5kOiB1cmwoIi4uL2ltYWdlL2pwbGF5ZXIuYmx1ZS5tb25kYXkuanBnIikgLTkwcHggLTI5MHB4IG5vLXJlcGVhdDsgfQoKLmpwLXNodWZmbGUgewogIGJhY2tncm91bmQ6IHVybCgiLi4vaW1hZ2UvanBsYXllci5ibHVlLm1vbmRheS5qcGciKSAwIC0yNzBweCBuby1yZXBlYXQ7CiAgbWFyZ2luLWxlZnQ6IDVweDsgfQoKLmpwLXNodWZmbGU6Zm9jdXMgewogIGJhY2tncm91bmQ6IHVybCgiLi4vaW1hZ2UvanBsYXllci5ibHVlLm1vbmRheS5qcGciKSAtMzBweCAtMjcwcHggbm8tcmVwZWF0OyB9CgouanAtc3RhdGUtc2h1ZmZsZWQgLmpwLXNodWZmbGUgewogIGJhY2tncm91bmQ6IHVybCgiLi4vaW1hZ2UvanBsYXllci5ibHVlLm1vbmRheS5qcGciKSAtNjBweCAtMjcwcHggbm8tcmVwZWF0OyB9CgouanAtc3RhdGUtc2h1ZmZsZWQgLmpwLXNodWZmbGU6Zm9jdXMgewogIGJhY2tncm91bmQ6IHVybCgiLi4vaW1hZ2UvanBsYXllci5ibHVlLm1vbmRheS5qcGciKSAtOTBweCAtMjcwcHggbm8tcmVwZWF0OyB9CgovKiBAZW5kICovCi8qIEBncm91cCBOTyBTT0xVVElPTiBlcnJvciBmZWVkYmFjayAqLwouanAtbm8tc29sdXRpb24gewogIHBhZGRpbmc6IDVweDsKICBmb250LXNpemU6IC44ZW07CiAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsKICBib3JkZXI6IDJweCBzb2xpZCAjMDA5YmUzOwogIGNvbG9yOiAjMDAwOwogIGRpc3BsYXk6IG5vbmU7IH0KCi5qcC1uby1zb2x1dGlvbiBhIHsKICBjb2xvcjogIzAwMDsgfQoKLmpwLW5vLXNvbHV0aW9uIHNwYW4gewogIGZvbnQtc2l6ZTogMWVtOwogIGRpc3BsYXk6IGJsb2NrOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICBmb250LXdlaWdodDogYm9sZDsgfQoKLyogQGVuZCAqLwo=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin/blue.monday/css/jplayer.blue.monday.min.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohIEJsdWUgTW9uZGF5IFNraW4gZm9yIGpQbGF5ZXIgMi45LjIgfiAoYykgMjAwOS0yMDE0IEhhcHB5d29ybSBMdGQgfiBNSVQgTGljZW5zZSAqLy5qcC1hdWRpbyA6Zm9jdXMsLmpwLWF1ZGlvLXN0cmVhbSA6Zm9jdXMsLmpwLXZpZGVvIDpmb2N1c3tvdXRsaW5lOjB9LmpwLWF1ZGlvIGJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwuanAtYXVkaW8tc3RyZWFtIGJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwuanAtdmlkZW8gYnV0dG9uOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5qcC1hdWRpbywuanAtYXVkaW8tc3RyZWFtLC5qcC12aWRlb3tmb250LXNpemU6MTZweDtmb250LWZhbWlseTpWZXJkYW5hLEFyaWFsLHNhbnMtc2VyaWY7bGluZS1oZWlnaHQ6MS42O2NvbG9yOiM2NjY7Ym9yZGVyOjFweCBzb2xpZCAjMDA5YmUzO2JhY2tncm91bmQtY29sb3I6I2VlZX0uanAtYXVkaW97d2lkdGg6NDIwcHh9LmpwLWF1ZGlvLXN0cmVhbXt3aWR0aDoxODJweH0uanAtdmlkZW8tMjcwcHt3aWR0aDo0ODBweH0uanAtdmlkZW8tMzYwcHt3aWR0aDo2NDBweH0uanAtdmlkZW8tZnVsbHt3aWR0aDo0ODBweDtoZWlnaHQ6MjcwcHg7cG9zaXRpb246c3RhdGljIWltcG9ydGFudDtwb3NpdGlvbjpyZWxhdGl2ZX0uanAtdmlkZW8tZnVsbCBkaXYgZGl2e3otaW5kZXg6MTAwMH0uanAtdmlkZW8tZnVsbCAuanAtanBsYXllcnt0b3A6MDtsZWZ0OjA7cG9zaXRpb246Zml4ZWQhaW1wb3J0YW50O3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbn0uanAtdmlkZW8tZnVsbCAuanAtZ3Vpe3Bvc2l0aW9uOmZpeGVkIWltcG9ydGFudDtwb3NpdGlvbjpzdGF0aWM7dG9wOjA7bGVmdDowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7ei1pbmRleDoxMDAxfS5qcC12aWRlby1mdWxsIC5qcC1pbnRlcmZhY2V7cG9zaXRpb246YWJzb2x1dGUhaW1wb3J0YW50O3Bvc2l0aW9uOnJlbGF0aXZlO2JvdHRvbTowO2xlZnQ6MH0uanAtaW50ZXJmYWNle3Bvc2l0aW9uOnJlbGF0aXZlO2JhY2tncm91bmQtY29sb3I6I2VlZTt3aWR0aDoxMDAlfS5qcC1hdWRpbyAuanAtaW50ZXJmYWNlLC5qcC1hdWRpby1zdHJlYW0gLmpwLWludGVyZmFjZXtoZWlnaHQ6ODBweH0uanAtdmlkZW8gLmpwLWludGVyZmFjZXtib3JkZXItdG9wOjFweCBzb2xpZCAjMDA5YmUzfS5qcC1jb250cm9scy1ob2xkZXJ7Y2xlYXI6Ym90aDt3aWR0aDo0NDBweDttYXJnaW46MCBhdXRvO3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbjt0b3A6LThweH0uanAtaW50ZXJmYWNlIC5qcC1jb250cm9sc3ttYXJnaW46MDtwYWRkaW5nOjA7b3ZlcmZsb3c6aGlkZGVufS5qcC1hdWRpbyAuanAtY29udHJvbHN7d2lkdGg6MzgwcHg7cGFkZGluZzoyMHB4IDIwcHggMH0uanAtYXVkaW8tc3RyZWFtIC5qcC1jb250cm9sc3twb3NpdGlvbjphYnNvbHV0ZTt0b3A6MjBweDtsZWZ0OjIwcHg7d2lkdGg6MTQycHh9LmpwLXZpZGVvIC5qcC10eXBlLXNpbmdsZSAuanAtY29udHJvbHN7d2lkdGg6NzhweDttYXJnaW4tbGVmdDoyMDBweH0uanAtdmlkZW8gLmpwLXR5cGUtcGxheWxpc3QgLmpwLWNvbnRyb2xze3dpZHRoOjEzNHB4O21hcmdpbi1sZWZ0OjE3MnB4fS5qcC12aWRlbyAuanAtY29udHJvbHN7ZmxvYXQ6bGVmdH0uanAtY29udHJvbHMgYnV0dG9ue2Rpc3BsYXk6YmxvY2s7ZmxvYXQ6bGVmdDtvdmVyZmxvdzpoaWRkZW47dGV4dC1pbmRlbnQ6LTk5OTlweDtib3JkZXI6bm9uZTtjdXJzb3I6cG9pbnRlcn0uanAtcGxheXt3aWR0aDo0MHB4O2hlaWdodDo0MHB4O2JhY2tncm91bmQ6dXJsKC4uL2ltYWdlL2pwbGF5ZXIuYmx1ZS5tb25kYXkuanBnKSBuby1yZXBlYXR9LmpwLXBsYXk6Zm9jdXN7YmFja2dyb3VuZDp1cmwoLi4vaW1hZ2UvanBsYXllci5ibHVlLm1vbmRheS5qcGcpIC00MXB4IDAgbm8tcmVwZWF0fS5qcC1zdGF0ZS1wbGF5aW5nIC5qcC1wbGF5e2JhY2tncm91bmQ6dXJsKC4uL2ltYWdlL2pwbGF5ZXIuYmx1ZS5tb25kYXkuanBnKSAwIC00MnB4IG5vLXJlcGVhdH0uanAtc3RhdGUtcGxheWluZyAuanAtcGxheTpmb2N1c3tiYWNrZ3JvdW5kOnVybCguLi9pbWFnZS9qcGxheWVyLmJsdWUubW9uZGF5LmpwZykgLTQxcHggLTQycHggbm8tcmVwZWF0fS5qcC1uZXh0LC5qcC1wcmV2aW91cywuanAtc3RvcHt3aWR0aDoyOHB4O2hlaWdodDoyOHB4O21hcmdpbi10b3A6NnB4fS5qcC1zdG9we2JhY2tncm91bmQ6dXJsKC4uL2ltYWdlL2pwbGF5ZXIuYmx1ZS5tb25kYXkuanBnKSAwIC04M3B4IG5vLXJlcGVhdDttYXJnaW4tbGVmdDoxMHB4fS5qcC1zdG9wOmZvY3Vze2JhY2tncm91bmQ6dXJsKC4uL2ltYWdlL2pwbGF5ZXIuYmx1ZS5tb25kYXkuanBnKSAtMjlweCAtODNweCBuby1yZXBlYXR9LmpwLXByZXZpb3Vze2JhY2tncm91bmQ6dXJsKC4uL2ltYWdlL2pwbGF5ZXIuYmx1ZS5tb25kYXkuanBnKSAwIC0xMTJweCBuby1yZXBlYXR9LmpwLXByZXZpb3VzOmZvY3Vze2JhY2tncm91bmQ6dXJsKC4uL2ltYWdlL2pwbGF5ZXIuYmx1ZS5tb25kYXkuanBnKSAtMjlweCAtMTEycHggbm8tcmVwZWF0fS5qcC1uZXh0e2JhY2tncm91bmQ6dXJsKC4uL2ltYWdlL2pwbGF5ZXIuYmx1ZS5tb25kYXkuanBnKSAwIC0xNDFweCBuby1yZXBlYXR9LmpwLW5leHQ6Zm9jdXN7YmFja2dyb3VuZDp1cmwoLi4vaW1hZ2UvanBsYXllci5ibHVlLm1vbmRheS5qcGcpIC0yOXB4IC0xNDFweCBuby1yZXBlYXR9LmpwLXByb2dyZXNze292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kLWNvbG9yOiNkZGR9LmpwLWF1ZGlvIC5qcC1wcm9ncmVzc3twb3NpdGlvbjphYnNvbHV0ZTt0b3A6MzJweDtoZWlnaHQ6MTVweH0uanAtYXVkaW8gLmpwLXR5cGUtc2luZ2xlIC5qcC1wcm9ncmVzc3tsZWZ0OjExMHB4O3dpZHRoOjE4NnB4fS5qcC1hdWRpbyAuanAtdHlwZS1wbGF5bGlzdCAuanAtcHJvZ3Jlc3N7bGVmdDoxNjZweDt3aWR0aDoxMzBweH0uanAtdmlkZW8gLmpwLXByb2dyZXNze3RvcDowO2xlZnQ6MDt3aWR0aDoxMDAlO2hlaWdodDoxMHB4fS5qcC1zZWVrLWJhcntiYWNrZ3JvdW5kOnVybCguLi9pbWFnZS9qcGxheWVyLmJsdWUubW9uZGF5LmpwZykgMCAtMjAycHggcmVwZWF0LXg7d2lkdGg6MDtoZWlnaHQ6MTAwJTtjdXJzb3I6cG9pbnRlcn0uanAtcGxheS1iYXJ7YmFja2dyb3VuZDp1cmwoLi4vaW1hZ2UvanBsYXllci5ibHVlLm1vbmRheS5qcGcpIDAgLTIxOHB4IHJlcGVhdC14O3dpZHRoOjA7aGVpZ2h0OjEwMCV9LmpwLXNlZWtpbmctYmd7YmFja2dyb3VuZDp1cmwoLi4vaW1hZ2UvanBsYXllci5ibHVlLm1vbmRheS5zZWVraW5nLmdpZil9LmpwLXN0YXRlLW5vLXZvbHVtZSAuanAtdm9sdW1lLWNvbnRyb2xze2Rpc3BsYXk6bm9uZX0uanAtdm9sdW1lLWNvbnRyb2xze3Bvc2l0aW9uOmFic29sdXRlO3RvcDozMnB4O2xlZnQ6MzA4cHg7d2lkdGg6MjAwcHh9LmpwLWF1ZGlvLXN0cmVhbSAuanAtdm9sdW1lLWNvbnRyb2xze2xlZnQ6NzBweH0uanAtdmlkZW8gLmpwLXZvbHVtZS1jb250cm9sc3t0b3A6MTJweDtsZWZ0OjUwcHh9LmpwLXZvbHVtZS1jb250cm9scyBidXR0b257ZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0ZTtvdmVyZmxvdzpoaWRkZW47dGV4dC1pbmRlbnQ6LTk5OTlweDtib3JkZXI6bm9uZTtjdXJzb3I6cG9pbnRlcn0uanAtbXV0ZSwuanAtdm9sdW1lLW1heHt3aWR0aDoxOHB4O2hlaWdodDoxNXB4fS5qcC12b2x1bWUtbWF4e2xlZnQ6NzRweH0uanAtbXV0ZXtiYWNrZ3JvdW5kOnVybCguLi9pbWFnZS9qcGxheWVyLmJsdWUubW9uZGF5LmpwZykgMCAtMTcwcHggbm8tcmVwZWF0fS5qcC1tdXRlOmZvY3Vze2JhY2tncm91bmQ6dXJsKC4uL2ltYWdlL2pwbGF5ZXIuYmx1ZS5tb25kYXkuanBnKSAtMTlweCAtMTcwcHggbm8tcmVwZWF0fS5qcC1zdGF0ZS1tdXRlZCAuanAtbXV0ZXtiYWNrZ3JvdW5kOnVybCguLi9pbWFnZS9qcGxheWVyLmJsdWUubW9uZGF5LmpwZykgLTYwcHggLTE3MHB4IG5vLXJlcGVhdH0uanAtc3RhdGUtbXV0ZWQgLmpwLW11dGU6Zm9jdXN7YmFja2dyb3VuZDp1cmwoLi4vaW1hZ2UvanBsYXllci5ibHVlLm1vbmRheS5qcGcpIC03OXB4IC0xNzBweCBuby1yZXBlYXR9LmpwLXZvbHVtZS1tYXh7YmFja2dyb3VuZDp1cmwoLi4vaW1hZ2UvanBsYXllci5ibHVlLm1vbmRheS5qcGcpIDAgLTE4NnB4IG5vLXJlcGVhdH0uanAtdm9sdW1lLW1heDpmb2N1c3tiYWNrZ3JvdW5kOnVybCguLi9pbWFnZS9qcGxheWVyLmJsdWUubW9uZGF5LmpwZykgLTE5cHggLTE4NnB4IG5vLXJlcGVhdH0uanAtdm9sdW1lLWJhcntwb3NpdGlvbjphYnNvbHV0ZTtvdmVyZmxvdzpoaWRkZW47YmFja2dyb3VuZDp1cmwoLi4vaW1hZ2UvanBsYXllci5ibHVlLm1vbmRheS5qcGcpIDAgLTI1MHB4IHJlcGVhdC14O3RvcDo1cHg7bGVmdDoyMnB4O3dpZHRoOjQ2cHg7aGVpZ2h0OjVweDtjdXJzb3I6cG9pbnRlcn0uanAtdm9sdW1lLWJhci12YWx1ZXtiYWNrZ3JvdW5kOnVybCguLi9pbWFnZS9qcGxheWVyLmJsdWUubW9uZGF5LmpwZykgMCAtMjU2cHggcmVwZWF0LXg7d2lkdGg6MDtoZWlnaHQ6NXB4fS5qcC1hdWRpbyAuanAtdGltZS1ob2xkZXJ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwcHh9LmpwLWF1ZGlvIC5qcC10eXBlLXNpbmdsZSAuanAtdGltZS1ob2xkZXJ7bGVmdDoxMTBweDt3aWR0aDoxODZweH0uanAtYXVkaW8gLmpwLXR5cGUtcGxheWxpc3QgLmpwLXRpbWUtaG9sZGVye2xlZnQ6MTY2cHg7d2lkdGg6MTMwcHh9LmpwLWN1cnJlbnQtdGltZSwuanAtZHVyYXRpb257d2lkdGg6NjBweDtmb250LXNpemU6LjY0ZW07Zm9udC1zdHlsZTpvYmxpcXVlfS5qcC1jdXJyZW50LXRpbWV7ZmxvYXQ6bGVmdDtkaXNwbGF5OmlubGluZTtjdXJzb3I6ZGVmYXVsdH0uanAtZHVyYXRpb257ZmxvYXQ6cmlnaHQ7ZGlzcGxheTppbmxpbmU7dGV4dC1hbGlnbjpyaWdodDtjdXJzb3I6cG9pbnRlcn0uanAtdmlkZW8gLmpwLWN1cnJlbnQtdGltZXttYXJnaW4tbGVmdDoyMHB4fS5qcC12aWRlbyAuanAtZHVyYXRpb257bWFyZ2luLXJpZ2h0OjIwcHh9LmpwLWRldGFpbHN7Zm9udC13ZWlnaHQ6NzAwO3RleHQtYWxpZ246Y2VudGVyO2N1cnNvcjpkZWZhdWx0fS5qcC1kZXRhaWxzLC5qcC1wbGF5bGlzdHt3aWR0aDoxMDAlO2JhY2tncm91bmQtY29sb3I6I2NjYztib3JkZXItdG9wOjFweCBzb2xpZCAjMDA5YmUzfS5qcC10eXBlLXBsYXlsaXN0IC5qcC1kZXRhaWxzLC5qcC10eXBlLXNpbmdsZSAuanAtZGV0YWlsc3tib3JkZXItdG9wOm5vbmV9LmpwLWRldGFpbHMgLmpwLXRpdGxle21hcmdpbjowO3BhZGRpbmc6NXB4IDIwcHg7Zm9udC1zaXplOi43MmVtO2ZvbnQtd2VpZ2h0OjcwMH0uanAtcGxheWxpc3QgdWx7bGlzdC1zdHlsZS10eXBlOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowIDIwcHg7Zm9udC1zaXplOi43MmVtfS5qcC1wbGF5bGlzdCBsaXtwYWRkaW5nOjVweCAwIDRweCAyMHB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlZWV9LmpwLXBsYXlsaXN0IGxpIGRpdntkaXNwbGF5OmlubGluZX1kaXYuanAtdHlwZS1wbGF5bGlzdCBkaXYuanAtcGxheWxpc3QgbGk6bGFzdC1jaGlsZHtwYWRkaW5nOjVweCAwIDVweCAyMHB4O2JvcmRlci1ib3R0b206bm9uZX1kaXYuanAtdHlwZS1wbGF5bGlzdCBkaXYuanAtcGxheWxpc3QgbGkuanAtcGxheWxpc3QtY3VycmVudHtsaXN0LXN0eWxlLXR5cGU6c3F1YXJlO2xpc3Qtc3R5bGUtcG9zaXRpb246aW5zaWRlO3BhZGRpbmctbGVmdDo3cHh9ZGl2LmpwLXR5cGUtcGxheWxpc3QgZGl2LmpwLXBsYXlsaXN0IGF7Y29sb3I6IzMzMzt0ZXh0LWRlY29yYXRpb246bm9uZX1kaXYuanAtdHlwZS1wbGF5bGlzdCBkaXYuanAtcGxheWxpc3QgYS5qcC1wbGF5bGlzdC1jdXJyZW50LGRpdi5qcC10eXBlLXBsYXlsaXN0IGRpdi5qcC1wbGF5bGlzdCBhOmhvdmVye2NvbG9yOiMwZDg4YzF9ZGl2LmpwLXR5cGUtcGxheWxpc3QgZGl2LmpwLXBsYXlsaXN0IGEuanAtcGxheWxpc3QtaXRlbS1yZW1vdmV7ZmxvYXQ6cmlnaHQ7ZGlzcGxheTppbmxpbmU7dGV4dC1hbGlnbjpyaWdodDttYXJnaW4tcmlnaHQ6MTBweDtmb250LXdlaWdodDo3MDA7Y29sb3I6IzY2Nn1kaXYuanAtdHlwZS1wbGF5bGlzdCBkaXYuanAtcGxheWxpc3QgYS5qcC1wbGF5bGlzdC1pdGVtLXJlbW92ZTpob3Zlcntjb2xvcjojMGQ4OGMxfWRpdi5qcC10eXBlLXBsYXlsaXN0IGRpdi5qcC1wbGF5bGlzdCBzcGFuLmpwLWZyZWUtbWVkaWF7ZmxvYXQ6cmlnaHQ7ZGlzcGxheTppbmxpbmU7dGV4dC1hbGlnbjpyaWdodDttYXJnaW4tcmlnaHQ6MTBweH1kaXYuanAtdHlwZS1wbGF5bGlzdCBkaXYuanAtcGxheWxpc3Qgc3Bhbi5qcC1mcmVlLW1lZGlhIGF7Y29sb3I6IzY2Nn1kaXYuanAtdHlwZS1wbGF5bGlzdCBkaXYuanAtcGxheWxpc3Qgc3Bhbi5qcC1mcmVlLW1lZGlhIGE6aG92ZXJ7Y29sb3I6IzBkODhjMX1zcGFuLmpwLWFydGlzdHtmb250LXNpemU6LjhlbTtjb2xvcjojNjY2fS5qcC12aWRlby1wbGF5e3dpZHRoOjEwMCU7b3ZlcmZsb3c6aGlkZGVuO2N1cnNvcjpwb2ludGVyO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LmpwLXZpZGVvLTI3MHAgLmpwLXZpZGVvLXBsYXl7bWFyZ2luLXRvcDotMjcwcHg7aGVpZ2h0OjI3MHB4fS5qcC12aWRlby0zNjBwIC5qcC12aWRlby1wbGF5e21hcmdpbi10b3A6LTM2MHB4O2hlaWdodDozNjBweH0uanAtdmlkZW8tZnVsbCAuanAtdmlkZW8tcGxheXtoZWlnaHQ6MTAwJX0uanAtdmlkZW8tcGxheS1pY29ue3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTEycHg7aGVpZ2h0OjEwMHB4O21hcmdpbi1sZWZ0Oi01NnB4O21hcmdpbi10b3A6LTUwcHg7bGVmdDo1MCU7dG9wOjUwJTtiYWNrZ3JvdW5kOnVybCguLi9pbWFnZS9qcGxheWVyLmJsdWUubW9uZGF5LnZpZGVvLnBsYXkucG5nKSBuby1yZXBlYXQ7dGV4dC1pbmRlbnQ6LTk5OTlweDtib3JkZXI6bm9uZTtjdXJzb3I6cG9pbnRlcn0uanAtdmlkZW8tcGxheS1pY29uOmZvY3Vze2JhY2tncm91bmQ6dXJsKC4uL2ltYWdlL2pwbGF5ZXIuYmx1ZS5tb25kYXkudmlkZW8ucGxheS5wbmcpIDAgLTEwMHB4IG5vLXJlcGVhdH0uanAtanBsYXllciwuanAtanBsYXllciBhdWRpb3t3aWR0aDowO2hlaWdodDowfS5qcC1qcGxheWVye2JhY2tncm91bmQtY29sb3I6IzAwMH0uanAtdG9nZ2xlc3twYWRkaW5nOjA7bWFyZ2luOjAgYXV0bztvdmVyZmxvdzpoaWRkZW59LmpwLWF1ZGlvIC5qcC10eXBlLXNpbmdsZSAuanAtdG9nZ2xlc3t3aWR0aDoyNXB4fS5qcC1hdWRpbyAuanAtdHlwZS1wbGF5bGlzdCAuanAtdG9nZ2xlc3t3aWR0aDo1NXB4O21hcmdpbjowO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MzI1cHg7dG9wOjUwcHh9LmpwLXZpZGVvIC5qcC10b2dnbGVze3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjE2cHg7bWFyZ2luOjEwcHggMCAwO3dpZHRoOjEwMHB4fS5qcC10b2dnbGVzIGJ1dHRvbntkaXNwbGF5OmJsb2NrO2Zsb2F0OmxlZnQ7d2lkdGg6MjVweDtoZWlnaHQ6MThweDt0ZXh0LWluZGVudDotOTk5OXB4O2xpbmUtaGVpZ2h0OjEwMCU7Ym9yZGVyOm5vbmU7Y3Vyc29yOnBvaW50ZXJ9LmpwLWZ1bGwtc2NyZWVue2JhY2tncm91bmQ6dXJsKC4uL2ltYWdlL2pwbGF5ZXIuYmx1ZS5tb25kYXkuanBnKSAwIC0zMTBweCBuby1yZXBlYXQ7bWFyZ2luLWxlZnQ6MjBweH0uanAtZnVsbC1zY3JlZW46Zm9jdXN7YmFja2dyb3VuZDp1cmwoLi4vaW1hZ2UvanBsYXllci5ibHVlLm1vbmRheS5qcGcpIC0zMHB4IC0zMTBweCBuby1yZXBlYXR9LmpwLXN0YXRlLWZ1bGwtc2NyZWVuIC5qcC1mdWxsLXNjcmVlbntiYWNrZ3JvdW5kOnVybCguLi9pbWFnZS9qcGxheWVyLmJsdWUubW9uZGF5LmpwZykgLTYwcHggLTMxMHB4IG5vLXJlcGVhdH0uanAtc3RhdGUtZnVsbC1zY3JlZW4gLmpwLWZ1bGwtc2NyZWVuOmZvY3Vze2JhY2tncm91bmQ6dXJsKC4uL2ltYWdlL2pwbGF5ZXIuYmx1ZS5tb25kYXkuanBnKSAtOTBweCAtMzEwcHggbm8tcmVwZWF0fS5qcC1yZXBlYXR7YmFja2dyb3VuZDp1cmwoLi4vaW1hZ2UvanBsYXllci5ibHVlLm1vbmRheS5qcGcpIDAgLTI5MHB4IG5vLXJlcGVhdH0uanAtcmVwZWF0OmZvY3Vze2JhY2tncm91bmQ6dXJsKC4uL2ltYWdlL2pwbGF5ZXIuYmx1ZS5tb25kYXkuanBnKSAtMzBweCAtMjkwcHggbm8tcmVwZWF0fS5qcC1zdGF0ZS1sb29wZWQgLmpwLXJlcGVhdHtiYWNrZ3JvdW5kOnVybCguLi9pbWFnZS9qcGxheWVyLmJsdWUubW9uZGF5LmpwZykgLTYwcHggLTI5MHB4IG5vLXJlcGVhdH0uanAtc3RhdGUtbG9vcGVkIC5qcC1yZXBlYXQ6Zm9jdXN7YmFja2dyb3VuZDp1cmwoLi4vaW1hZ2UvanBsYXllci5ibHVlLm1vbmRheS5qcGcpIC05MHB4IC0yOTBweCBuby1yZXBlYXR9LmpwLXNodWZmbGV7YmFja2dyb3VuZDp1cmwoLi4vaW1hZ2UvanBsYXllci5ibHVlLm1vbmRheS5qcGcpIDAgLTI3MHB4IG5vLXJlcGVhdDttYXJnaW4tbGVmdDo1cHh9LmpwLXNodWZmbGU6Zm9jdXN7YmFja2dyb3VuZDp1cmwoLi4vaW1hZ2UvanBsYXllci5ibHVlLm1vbmRheS5qcGcpIC0zMHB4IC0yNzBweCBuby1yZXBlYXR9LmpwLXN0YXRlLXNodWZmbGVkIC5qcC1zaHVmZmxle2JhY2tncm91bmQ6dXJsKC4uL2ltYWdlL2pwbGF5ZXIuYmx1ZS5tb25kYXkuanBnKSAtNjBweCAtMjcwcHggbm8tcmVwZWF0fS5qcC1zdGF0ZS1zaHVmZmxlZCAuanAtc2h1ZmZsZTpmb2N1c3tiYWNrZ3JvdW5kOnVybCguLi9pbWFnZS9qcGxheWVyLmJsdWUubW9uZGF5LmpwZykgLTkwcHggLTI3MHB4IG5vLXJlcGVhdH0uanAtbm8tc29sdXRpb257cGFkZGluZzo1cHg7Zm9udC1zaXplOi44ZW07YmFja2dyb3VuZC1jb2xvcjojZWVlO2JvcmRlcjoycHggc29saWQgIzAwOWJlMztjb2xvcjojMDAwO2Rpc3BsYXk6bm9uZX0uanAtbm8tc29sdXRpb24gYXtjb2xvcjojMDAwfS5qcC1uby1zb2x1dGlvbiBzcGFue2ZvbnQtc2l6ZToxZW07ZGlzcGxheTpibG9jazt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXdlaWdodDo3MDB9]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin/blue.monday/image/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin/blue.monday/image/jplayer.blue.monday.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin/blue.monday/image/jplayer.blue.monday.seeking.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin/blue.monday/image/jplayer.blue.monday.video.play.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin/blue.monday/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin/blue.monday/jplayer.blue.monday.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoNCiAqIFNraW4gZm9yIGpQbGF5ZXIgUGx1Z2luIChqUXVlcnkgSmF2YVNjcmlwdCBMaWJyYXJ5KQ0KICogaHR0cDovL3d3dy5qcGxheWVyLm9yZw0KICoNCiAqIFNraW4gTmFtZTogQmx1ZSBNb25kYXkNCiAqDQogKiBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxMiBIYXBweXdvcm0gTHRkDQogKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIEdQTCBsaWNlbnNlcy4NCiAqICAtIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwDQogKiAgLSBodHRwOi8vd3d3LmdudS5vcmcvY29weWxlZnQvZ3BsLmh0bWwNCiAqDQogKiBBdXRob3I6IFNpbHZpYSBCZW52ZW51dGkNCiAqIFNraW4gVmVyc2lvbjogNC4zIChqUGxheWVyIDIuMi4wKQ0KICogRGF0ZTogMTl0aCBOb3ZlbWJlciAyMDEyDQogKi8NCg0KZGl2LmpwLWF1ZGlvLA0KZGl2LmpwLWF1ZGlvLXN0cmVhbSwNCmRpdi5qcC12aWRlbyB7DQoNCgkvKiBFZGl0IHRoZSBmb250LXNpemUgdG8gY291bnRlcmFjdCBpbmhlcml0ZWQgZm9udCBzaXppbmcuDQoJICogRWcuIDEuMjVlbSA9IDEgLyAwLjhlbQ0KCSAqLw0KDQoJZm9udC1zaXplOjEuMjVlbTsgLyogMS4yNWVtIGZvciB0ZXN0aW5nIGluIHNpdGUgcGFnZXMgKi8gLyogTm8gcGFyZW50IENTUyB0aGF0IGNhbiBlZmZlY3QgdGhlIHNpemUgaW4gdGhlIGRlbW9zIFpJUCAqLw0KDQoJZm9udC1mYW1pbHk6VmVyZGFuYSwgQXJpYWwsIHNhbnMtc2VyaWY7DQoJbGluZS1oZWlnaHQ6MS42Ow0KCWNvbG9yOiAjNjY2Ow0KCWJvcmRlcjoxcHggc29saWQgIzAwOWJlMzsNCgliYWNrZ3JvdW5kLWNvbG9yOiNlZWU7DQp9DQpkaXYuanAtYXVkaW8gew0KCXdpZHRoOjQyMHB4Ow0KfQ0KZGl2LmpwLWF1ZGlvLXN0cmVhbSB7DQoJd2lkdGg6MTgycHg7DQp9DQpkaXYuanAtdmlkZW8tMjcwcCB7DQoJd2lkdGg6NDgwcHg7DQp9DQpkaXYuanAtdmlkZW8tMzYwcCB7DQoJd2lkdGg6NjQwcHg7DQp9DQpkaXYuanAtdmlkZW8tZnVsbCB7DQoJLyogUnVsZXMgZm9yIElFNiAoZnVsbC1zY3JlZW4pICovDQoJd2lkdGg6NDgwcHg7DQoJaGVpZ2h0OjI3MHB4Ow0KCS8qIFJ1bGVzIGZvciBJRTcgKGZ1bGwtc2NyZWVuKSAtIE90aGVyd2lzZSB0aGUgcmVsYXRpdmUgY29udGFpbmVyIGNhdXNlcyBvdGhlciBwYWdlIGl0ZW1zIHRoYXQgYXJlIG5vdCBwb3NpdGlvbjpzdGF0aWMgKGRlZmF1bHQpIHRvIGFwcGVhciBvdmVyIHRoZSB2aWRlby9ndWkuICovDQoJcG9zaXRpb246c3RhdGljICFpbXBvcnRhbnQ7IHBvc2l0aW9uOnJlbGF0aXZlOw0KfQ0KDQovKiBUaGUgei1pbmRleCBydWxlIGlzIGRlZmluZWQgaW4gdGhpcyBtYW5uZXIgdG8gZW5hYmxlIFBvcGNvcm4gcGx1Z2lucyB0aGF0IGFkZCBvdmVybGF5cyB0byB2aWRlbyBhcmVhLiBFRy4gU3VidGl0bGVzLiAqLw0KZGl2LmpwLXZpZGVvLWZ1bGwgZGl2IGRpdiB7DQoJei1pbmRleDoxMDAwOw0KfQ0KDQpkaXYuanAtdmlkZW8tZnVsbCBkaXYuanAtanBsYXllciB7DQoJdG9wOiAwOw0KCWxlZnQ6IDA7DQoJcG9zaXRpb246IGZpeGVkICFpbXBvcnRhbnQ7IHBvc2l0aW9uOiByZWxhdGl2ZTsgLyogUnVsZXMgZm9yIElFNiAoZnVsbC1zY3JlZW4pICovDQoJb3ZlcmZsb3c6IGhpZGRlbjsNCn0NCg0KZGl2LmpwLXZpZGVvLWZ1bGwgZGl2LmpwLWd1aSB7DQoJcG9zaXRpb246IGZpeGVkICFpbXBvcnRhbnQ7IHBvc2l0aW9uOiBzdGF0aWM7IC8qIFJ1bGVzIGZvciBJRTYgKGZ1bGwtc2NyZWVuKSAqLw0KCXRvcDogMDsNCglsZWZ0OiAwOw0KCXdpZHRoOjEwMCU7DQoJaGVpZ2h0OjEwMCU7DQoJei1pbmRleDoxMDAxOyAvKiAxIGxheWVyIGFib3ZlIHRoZSBvdGhlcnMuICovDQp9DQoNCmRpdi5qcC12aWRlby1mdWxsIGRpdi5qcC1pbnRlcmZhY2Ugew0KCXBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50OyBwb3NpdGlvbjogcmVsYXRpdmU7IC8qIFJ1bGVzIGZvciBJRTYgKGZ1bGwtc2NyZWVuKSAqLw0KCWJvdHRvbTogMDsNCglsZWZ0OiAwOw0KfQ0KDQpkaXYuanAtaW50ZXJmYWNlIHsNCglwb3NpdGlvbjogcmVsYXRpdmU7DQoJYmFja2dyb3VuZC1jb2xvcjojZWVlOw0KCXdpZHRoOjEwMCU7DQp9DQoNCmRpdi5qcC1hdWRpbyBkaXYuanAtdHlwZS1zaW5nbGUgZGl2LmpwLWludGVyZmFjZSB7DQoJaGVpZ2h0OjgwcHg7DQp9DQpkaXYuanAtYXVkaW8gZGl2LmpwLXR5cGUtcGxheWxpc3QgZGl2LmpwLWludGVyZmFjZSB7DQoJaGVpZ2h0OjgwcHg7DQp9DQoNCmRpdi5qcC1hdWRpby1zdHJlYW0gZGl2LmpwLXR5cGUtc2luZ2xlIGRpdi5qcC1pbnRlcmZhY2Ugew0KCWhlaWdodDo4MHB4Ow0KfQ0KDQpkaXYuanAtdmlkZW8gZGl2LmpwLWludGVyZmFjZSB7DQoJYm9yZGVyLXRvcDoxcHggc29saWQgIzAwOWJlMzsNCn0NCg0KLyogQGdyb3VwIENPTlRST0xTICovDQoNCmRpdi5qcC1jb250cm9scy1ob2xkZXIgew0KCWNsZWFyOiBib3RoOw0KCXdpZHRoOjQ0MHB4Ow0KCW1hcmdpbjowIGF1dG87DQoJcG9zaXRpb246IHJlbGF0aXZlOw0KCW92ZXJmbG93OmhpZGRlbjsNCgl0b3A6LThweDsgLyogVGhpcyBuZWdhdGl2ZSB2YWx1ZSBkZXBlbmRzIG9uIHRoZSBzaXplIG9mIHRoZSB0ZXh0IGluIGpwLWN1cnJlbnRUaW1lIGFuZCBqcC1kdXJhdGlvbiAqLw0KfQ0KDQpkaXYuanAtaW50ZXJmYWNlIHVsLmpwLWNvbnRyb2xzIHsNCglsaXN0LXN0eWxlLXR5cGU6bm9uZTsNCgltYXJnaW46MDsNCglwYWRkaW5nOiAwOw0KCW92ZXJmbG93OmhpZGRlbjsNCn0NCg0KZGl2LmpwLWF1ZGlvIHVsLmpwLWNvbnRyb2xzIHsNCgl3aWR0aDogMzgwcHg7DQoJcGFkZGluZzoyMHB4IDIwcHggMCAyMHB4Ow0KfQ0KDQpkaXYuanAtYXVkaW8tc3RyZWFtIHVsLmpwLWNvbnRyb2xzIHsNCgl3aWR0aDogMTQycHg7DQoJcGFkZGluZzoyMHB4IDIwcHggMCAyMHB4Ow0KfQ0KDQpkaXYuanAtdmlkZW8gZGl2LmpwLXR5cGUtc2luZ2xlIHVsLmpwLWNvbnRyb2xzIHsNCgl3aWR0aDogNzhweDsNCgltYXJnaW4tbGVmdDogMjAwcHg7DQp9DQoNCmRpdi5qcC12aWRlbyBkaXYuanAtdHlwZS1wbGF5bGlzdCB1bC5qcC1jb250cm9scyB7DQoJd2lkdGg6IDEzNHB4Ow0KCW1hcmdpbi1sZWZ0OiAxNzJweDsNCn0NCmRpdi5qcC12aWRlbyB1bC5qcC1jb250cm9scywNCmRpdi5qcC1pbnRlcmZhY2UgdWwuanAtY29udHJvbHMgbGkgew0KCWRpc3BsYXk6aW5saW5lOw0KCWZsb2F0OiBsZWZ0Ow0KfQ0KDQpkaXYuanAtaW50ZXJmYWNlIHVsLmpwLWNvbnRyb2xzIGEgew0KCWRpc3BsYXk6YmxvY2s7DQoJb3ZlcmZsb3c6aGlkZGVuOw0KCXRleHQtaW5kZW50Oi05OTk5cHg7DQp9DQphLmpwLXBsYXksDQphLmpwLXBhdXNlIHsNCgl3aWR0aDo0MHB4Ow0KCWhlaWdodDo0MHB4Ow0KfQ0KDQphLmpwLXBsYXkgew0KCWJhY2tncm91bmQ6IHVybCgianBsYXllci5ibHVlLm1vbmRheS5qcGciKSAwIDAgbm8tcmVwZWF0Ow0KfQ0KYS5qcC1wbGF5OmhvdmVyIHsNCgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIuYmx1ZS5tb25kYXkuanBnIikgLTQxcHggMCBuby1yZXBlYXQ7DQp9DQphLmpwLXBhdXNlIHsNCgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIuYmx1ZS5tb25kYXkuanBnIikgMCAtNDJweCBuby1yZXBlYXQ7DQoJZGlzcGxheTogbm9uZTsNCn0NCmEuanAtcGF1c2U6aG92ZXIgew0KCWJhY2tncm91bmQ6IHVybCgianBsYXllci5ibHVlLm1vbmRheS5qcGciKSAtNDFweCAtNDJweCBuby1yZXBlYXQ7DQp9DQoNCmEuanAtc3RvcCwgYS5qcC1wcmV2aW91cywgYS5qcC1uZXh0IHsNCgl3aWR0aDoyOHB4Ow0KCWhlaWdodDoyOHB4Ow0KCW1hcmdpbi10b3A6NnB4Ow0KfQ0KDQphLmpwLXN0b3Agew0KCWJhY2tncm91bmQ6IHVybCgianBsYXllci5ibHVlLm1vbmRheS5qcGciKSAwIC04M3B4IG5vLXJlcGVhdDsNCgltYXJnaW4tbGVmdDoxMHB4Ow0KfQ0KDQphLmpwLXN0b3A6aG92ZXIgew0KCWJhY2tncm91bmQ6IHVybCgianBsYXllci5ibHVlLm1vbmRheS5qcGciKSAtMjlweCAtODNweCBuby1yZXBlYXQ7DQp9DQoNCmEuanAtcHJldmlvdXMgew0KCWJhY2tncm91bmQ6IHVybCgianBsYXllci5ibHVlLm1vbmRheS5qcGciKSAwIC0xMTJweCBuby1yZXBlYXQ7DQp9DQphLmpwLXByZXZpb3VzOmhvdmVyIHsNCgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIuYmx1ZS5tb25kYXkuanBnIikgLTI5cHggLTExMnB4IG5vLXJlcGVhdDsNCn0NCg0KYS5qcC1uZXh0IHsNCgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIuYmx1ZS5tb25kYXkuanBnIikgMCAtMTQxcHggbm8tcmVwZWF0Ow0KfQ0KYS5qcC1uZXh0OmhvdmVyIHsNCgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIuYmx1ZS5tb25kYXkuanBnIikgLTI5cHggLTE0MXB4IG5vLXJlcGVhdDsNCn0NCg0KLyogQGVuZCAqLw0KDQovKiBAZ3JvdXAgcHJvZ3Jlc3MgYmFyICovDQoNCmRpdi5qcC1wcm9ncmVzcyB7DQoJb3ZlcmZsb3c6aGlkZGVuOw0KCWJhY2tncm91bmQtY29sb3I6ICNkZGQ7DQp9DQpkaXYuanAtYXVkaW8gZGl2LmpwLXByb2dyZXNzIHsNCglwb3NpdGlvbjogYWJzb2x1dGU7DQoJdG9wOjMycHg7DQoJaGVpZ2h0OjE1cHg7DQp9DQpkaXYuanAtYXVkaW8gZGl2LmpwLXR5cGUtc2luZ2xlIGRpdi5qcC1wcm9ncmVzcyB7DQoJbGVmdDoxMTBweDsNCgl3aWR0aDoxODZweDsNCn0NCmRpdi5qcC1hdWRpbyBkaXYuanAtdHlwZS1wbGF5bGlzdCBkaXYuanAtcHJvZ3Jlc3Mgew0KCWxlZnQ6MTY2cHg7DQoJd2lkdGg6MTMwcHg7DQp9DQpkaXYuanAtdmlkZW8gZGl2LmpwLXByb2dyZXNzIHsNCgl0b3A6MHB4Ow0KCWxlZnQ6MHB4Ow0KCXdpZHRoOjEwMCU7DQoJaGVpZ2h0OjEwcHg7DQp9DQpkaXYuanAtc2Vlay1iYXIgew0KCWJhY2tncm91bmQ6IHVybCgianBsYXllci5ibHVlLm1vbmRheS5qcGciKSAwIC0yMDJweCByZXBlYXQteDsNCgl3aWR0aDowcHg7DQoJaGVpZ2h0OjEwMCU7DQoJY3Vyc29yOiBwb2ludGVyOw0KfQ0KZGl2LmpwLXBsYXktYmFyIHsNCgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIuYmx1ZS5tb25kYXkuanBnIikgMCAtMjE4cHggcmVwZWF0LXggOw0KCXdpZHRoOjBweDsNCgloZWlnaHQ6MTAwJTsNCn0NCg0KLyogVGhlIHNlZWtpbmcgY2xhc3MgaXMgYWRkZWQvcmVtb3ZlZCBpbnNpZGUgalBsYXllciAqLw0KZGl2LmpwLXNlZWtpbmctYmcgew0KCWJhY2tncm91bmQ6IHVybCgianBsYXllci5ibHVlLm1vbmRheS5zZWVraW5nLmdpZiIpOw0KfQ0KDQovKiBAZW5kICovDQoNCi8qIEBncm91cCB2b2x1bWUgY29udHJvbHMgKi8NCg0KDQphLmpwLW11dGUsDQphLmpwLXVubXV0ZSwNCmEuanAtdm9sdW1lLW1heCB7DQoJd2lkdGg6MThweDsNCgloZWlnaHQ6MTVweDsNCgltYXJnaW4tdG9wOjEycHg7DQp9DQoNCmRpdi5qcC1hdWRpbyBkaXYuanAtdHlwZS1zaW5nbGUgYS5qcC1tdXRlLA0KZGl2LmpwLWF1ZGlvIGRpdi5qcC10eXBlLXNpbmdsZSBhLmpwLXVubXV0ZSB7DQoJbWFyZ2luLWxlZnQ6IDIxMHB4OwkNCn0NCmRpdi5qcC1hdWRpbyBkaXYuanAtdHlwZS1wbGF5bGlzdCBhLmpwLW11dGUsDQpkaXYuanAtYXVkaW8gZGl2LmpwLXR5cGUtcGxheWxpc3QgYS5qcC11bm11dGUgew0KCW1hcmdpbi1sZWZ0OiAxNTRweDsNCn0NCg0KZGl2LmpwLWF1ZGlvLXN0cmVhbSBkaXYuanAtdHlwZS1zaW5nbGUgYS5qcC1tdXRlLA0KZGl2LmpwLWF1ZGlvLXN0cmVhbSBkaXYuanAtdHlwZS1zaW5nbGUgYS5qcC11bm11dGUgew0KCW1hcmdpbi1sZWZ0OjEwcHg7DQp9DQoNCmRpdi5qcC1hdWRpbyBhLmpwLXZvbHVtZS1tYXgsDQpkaXYuanAtYXVkaW8tc3RyZWFtIGEuanAtdm9sdW1lLW1heCB7DQoJbWFyZ2luLWxlZnQ6IDU2cHg7CQ0KfQ0KDQpkaXYuanAtdmlkZW8gYS5qcC1tdXRlLA0KZGl2LmpwLXZpZGVvIGEuanAtdW5tdXRlLA0KZGl2LmpwLXZpZGVvIGEuanAtdm9sdW1lLW1heCB7DQoJcG9zaXRpb246IGFic29sdXRlOw0KCXRvcDoxMnB4Ow0KCW1hcmdpbi10b3A6MDsNCn0NCg0KZGl2LmpwLXZpZGVvIGEuanAtbXV0ZSwNCmRpdi5qcC12aWRlbyBhLmpwLXVubXV0ZSB7DQoJbGVmdDogNTBweDsNCn0NCg0KZGl2LmpwLXZpZGVvIGEuanAtdm9sdW1lLW1heCB7DQoJbGVmdDogMTM0cHg7DQp9DQoNCmEuanAtbXV0ZSB7DQoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLmJsdWUubW9uZGF5LmpwZyIpIDAgLTE3MHB4IG5vLXJlcGVhdDsNCn0NCmEuanAtbXV0ZTpob3ZlciB7DQoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLmJsdWUubW9uZGF5LmpwZyIpIC0xOXB4IC0xNzBweCBuby1yZXBlYXQ7DQp9DQphLmpwLXVubXV0ZSB7DQoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLmJsdWUubW9uZGF5LmpwZyIpIC02MHB4IC0xNzBweCBuby1yZXBlYXQ7DQoJZGlzcGxheTogbm9uZTsNCn0NCmEuanAtdW5tdXRlOmhvdmVyIHsNCgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIuYmx1ZS5tb25kYXkuanBnIikgLTc5cHggLTE3MHB4IG5vLXJlcGVhdDsNCn0NCmEuanAtdm9sdW1lLW1heCB7DQoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLmJsdWUubW9uZGF5LmpwZyIpIDAgLTE4NnB4IG5vLXJlcGVhdDsNCn0NCmEuanAtdm9sdW1lLW1heDpob3ZlciB7DQoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLmJsdWUubW9uZGF5LmpwZyIpIC0xOXB4IC0xODZweCBuby1yZXBlYXQ7DQp9DQoNCmRpdi5qcC12b2x1bWUtYmFyIHsNCglwb3NpdGlvbjogYWJzb2x1dGU7DQoJb3ZlcmZsb3c6aGlkZGVuOw0KCWJhY2tncm91bmQ6IHVybCgianBsYXllci5ibHVlLm1vbmRheS5qcGciKSAwIC0yNTBweCByZXBlYXQteDsNCgl3aWR0aDo0NnB4Ow0KCWhlaWdodDo1cHg7DQoJY3Vyc29yOiBwb2ludGVyOw0KfQ0KZGl2LmpwLWF1ZGlvIGRpdi5qcC12b2x1bWUtYmFyIHsNCgl0b3A6MzdweDsNCglsZWZ0OjMzMHB4Ow0KfQ0KZGl2LmpwLWF1ZGlvLXN0cmVhbSBkaXYuanAtdm9sdW1lLWJhciB7DQoJdG9wOjM3cHg7DQoJbGVmdDo5MnB4Ow0KfQ0KZGl2LmpwLXZpZGVvIGRpdi5qcC12b2x1bWUtYmFyIHsNCgl0b3A6MTdweDsNCglsZWZ0OjcycHg7DQp9DQpkaXYuanAtdm9sdW1lLWJhci12YWx1ZSB7DQoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLmJsdWUubW9uZGF5LmpwZyIpIDAgLTI1NnB4IHJlcGVhdC14Ow0KCXdpZHRoOjBweDsNCgloZWlnaHQ6NXB4Ow0KfQ0KDQovKiBAZW5kICovDQoNCi8qIEBncm91cCBjdXJyZW50IHRpbWUgYW5kIGR1cmF0aW9uICovDQoNCmRpdi5qcC1hdWRpbyBkaXYuanAtdGltZS1ob2xkZXIgew0KCXBvc2l0aW9uOmFic29sdXRlOw0KCXRvcDo1MHB4Ow0KfQ0KZGl2LmpwLWF1ZGlvIGRpdi5qcC10eXBlLXNpbmdsZSBkaXYuanAtdGltZS1ob2xkZXIgew0KCWxlZnQ6MTEwcHg7DQoJd2lkdGg6MTg2cHg7DQp9DQpkaXYuanAtYXVkaW8gZGl2LmpwLXR5cGUtcGxheWxpc3QgZGl2LmpwLXRpbWUtaG9sZGVyIHsNCglsZWZ0OjE2NnB4Ow0KCXdpZHRoOjEzMHB4Ow0KfQ0KDQpkaXYuanAtY3VycmVudC10aW1lLA0KZGl2LmpwLWR1cmF0aW9uIHsNCgl3aWR0aDo2MHB4Ow0KCWZvbnQtc2l6ZTouNjRlbTsNCglmb250LXN0eWxlOm9ibGlxdWU7DQp9DQpkaXYuanAtY3VycmVudC10aW1lIHsNCglmbG9hdDogbGVmdDsNCglkaXNwbGF5OmlubGluZTsNCn0NCmRpdi5qcC1kdXJhdGlvbiB7DQoJZmxvYXQ6IHJpZ2h0Ow0KCWRpc3BsYXk6aW5saW5lOw0KCXRleHQtYWxpZ246IHJpZ2h0Ow0KfQ0KDQpkaXYuanAtdmlkZW8gZGl2LmpwLWN1cnJlbnQtdGltZSB7DQoJbWFyZ2luLWxlZnQ6MjBweDsNCn0NCmRpdi5qcC12aWRlbyBkaXYuanAtZHVyYXRpb24gew0KCW1hcmdpbi1yaWdodDoyMHB4Ow0KfQ0KDQovKiBAZW5kICovDQoNCi8qIEBncm91cCBwbGF5bGlzdCAqLw0KDQpkaXYuanAtdGl0bGUgew0KCWZvbnQtd2VpZ2h0OmJvbGQ7DQoJdGV4dC1hbGlnbjpjZW50ZXI7DQp9DQoNCmRpdi5qcC10aXRsZSwNCmRpdi5qcC1wbGF5bGlzdCB7DQoJd2lkdGg6MTAwJTsNCgliYWNrZ3JvdW5kLWNvbG9yOiNjY2M7DQoJYm9yZGVyLXRvcDoxcHggc29saWQgIzAwOWJlMzsNCn0NCmRpdi5qcC10eXBlLXNpbmdsZSBkaXYuanAtdGl0bGUsDQpkaXYuanAtdHlwZS1wbGF5bGlzdCBkaXYuanAtdGl0bGUsDQpkaXYuanAtdHlwZS1zaW5nbGUgZGl2LmpwLXBsYXlsaXN0IHsNCglib3JkZXItdG9wOm5vbmU7DQp9DQpkaXYuanAtdGl0bGUgdWwsDQpkaXYuanAtcGxheWxpc3QgdWwgew0KCWxpc3Qtc3R5bGUtdHlwZTpub25lOw0KCW1hcmdpbjowOw0KCXBhZGRpbmc6MCAyMHB4Ow0KCWZvbnQtc2l6ZTouNzJlbTsNCn0NCg0KZGl2LmpwLXRpdGxlIGxpIHsNCglwYWRkaW5nOjVweCAwOw0KCWZvbnQtd2VpZ2h0OmJvbGQ7DQp9DQpkaXYuanAtcGxheWxpc3QgbGkgew0KCXBhZGRpbmc6NXB4IDAgNHB4IDIwcHg7DQoJYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2VlZTsNCn0NCg0KZGl2LmpwLXBsYXlsaXN0IGxpIGRpdiB7DQoJZGlzcGxheTppbmxpbmU7DQp9DQoNCi8qIE5vdGUgdGhhdCB0aGUgZmlyc3QtY2hpbGQgKElFNikgYW5kIGxhc3QtY2hpbGQgKElFNi83LzgpIHNlbGVjdG9ycyBkbyBub3Qgd29yayBvbiBJRSAqLw0KDQpkaXYuanAtdHlwZS1wbGF5bGlzdCBkaXYuanAtcGxheWxpc3QgbGk6bGFzdC1jaGlsZCB7DQoJcGFkZGluZzo1cHggMCA1cHggMjBweDsNCglib3JkZXItYm90dG9tOm5vbmU7DQp9DQpkaXYuanAtdHlwZS1wbGF5bGlzdCBkaXYuanAtcGxheWxpc3QgbGkuanAtcGxheWxpc3QtY3VycmVudCB7DQoJbGlzdC1zdHlsZS10eXBlOnNxdWFyZTsNCglsaXN0LXN0eWxlLXBvc2l0aW9uOmluc2lkZTsNCglwYWRkaW5nLWxlZnQ6N3B4Ow0KfQ0KZGl2LmpwLXR5cGUtcGxheWxpc3QgZGl2LmpwLXBsYXlsaXN0IGEgew0KCWNvbG9yOiAjMzMzOw0KCXRleHQtZGVjb3JhdGlvbjogbm9uZTsNCn0NCmRpdi5qcC10eXBlLXBsYXlsaXN0IGRpdi5qcC1wbGF5bGlzdCBhOmhvdmVyIHsNCgljb2xvcjojMGQ4OGMxOw0KfQ0KZGl2LmpwLXR5cGUtcGxheWxpc3QgZGl2LmpwLXBsYXlsaXN0IGEuanAtcGxheWxpc3QtY3VycmVudCB7DQoJY29sb3I6IzBkODhjMTsNCn0NCg0KZGl2LmpwLXR5cGUtcGxheWxpc3QgZGl2LmpwLXBsYXlsaXN0IGEuanAtcGxheWxpc3QtaXRlbS1yZW1vdmUgew0KCWZsb2F0OnJpZ2h0Ow0KCWRpc3BsYXk6aW5saW5lOw0KCXRleHQtYWxpZ246cmlnaHQ7DQoJbWFyZ2luLXJpZ2h0OjEwcHg7DQoJZm9udC13ZWlnaHQ6Ym9sZDsNCgljb2xvcjojNjY2Ow0KfQ0KZGl2LmpwLXR5cGUtcGxheWxpc3QgZGl2LmpwLXBsYXlsaXN0IGEuanAtcGxheWxpc3QtaXRlbS1yZW1vdmU6aG92ZXIgew0KCWNvbG9yOiMwZDg4YzE7DQp9DQpkaXYuanAtdHlwZS1wbGF5bGlzdCBkaXYuanAtcGxheWxpc3Qgc3Bhbi5qcC1mcmVlLW1lZGlhIHsNCglmbG9hdDpyaWdodDsNCglkaXNwbGF5OmlubGluZTsNCgl0ZXh0LWFsaWduOnJpZ2h0Ow0KCW1hcmdpbi1yaWdodDoxMHB4Ow0KfQ0KZGl2LmpwLXR5cGUtcGxheWxpc3QgZGl2LmpwLXBsYXlsaXN0IHNwYW4uanAtZnJlZS1tZWRpYSBhew0KCWNvbG9yOiM2NjY7DQp9DQpkaXYuanAtdHlwZS1wbGF5bGlzdCBkaXYuanAtcGxheWxpc3Qgc3Bhbi5qcC1mcmVlLW1lZGlhIGE6aG92ZXJ7DQoJY29sb3I6IzBkODhjMTsNCn0NCnNwYW4uanAtYXJ0aXN0IHsNCglmb250LXNpemU6LjhlbTsNCgljb2xvcjojNjY2Ow0KfQ0KDQovKiBAZW5kICovDQoNCmRpdi5qcC12aWRlby1wbGF5IHsNCgl3aWR0aDoxMDAlOw0KCW92ZXJmbG93OmhpZGRlbjsgLyogSW1wb3J0YW50IGZvciBuZXN0ZWQgbmVnYXRpdmUgbWFyZ2lucyB0byB3b3JrIGluIG1vZGVybiBicm93c2VycyAqLw0KCWN1cnNvcjpwb2ludGVyOw0KCWJhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwKTsgLyogTWFrZXMgSUU5IHdvcmsgd2l0aCB0aGUgYWN0aXZlIGFyZWEgb3ZlciB0aGUgd2hvbGUgdmlkZW8gYXJlYS4gSUU2LzcvOCBvbmx5IGhhdmUgdGhlIGJ1dHRvbiBhcyBhY3RpdmUgYXJlYS4gKi8NCn0NCmRpdi5qcC12aWRlby0yNzBwIGRpdi5qcC12aWRlby1wbGF5IHsNCgltYXJnaW4tdG9wOi0yNzBweDsNCgloZWlnaHQ6MjcwcHg7DQp9DQpkaXYuanAtdmlkZW8tMzYwcCBkaXYuanAtdmlkZW8tcGxheSB7DQoJbWFyZ2luLXRvcDotMzYwcHg7DQoJaGVpZ2h0OjM2MHB4Ow0KfQ0KZGl2LmpwLXZpZGVvLWZ1bGwgZGl2LmpwLXZpZGVvLXBsYXkgew0KCWhlaWdodDoxMDAlOw0KfQ0KYS5qcC12aWRlby1wbGF5LWljb24gew0KCXBvc2l0aW9uOnJlbGF0aXZlOw0KCWRpc3BsYXk6YmxvY2s7DQoJd2lkdGg6IDExMnB4Ow0KCWhlaWdodDogMTAwcHg7DQoNCgltYXJnaW4tbGVmdDotNTZweDsNCgltYXJnaW4tdG9wOi01MHB4Ow0KCWxlZnQ6NTAlOw0KCXRvcDo1MCU7DQoNCgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIuYmx1ZS5tb25kYXkudmlkZW8ucGxheS5wbmciKSAwIDAgbm8tcmVwZWF0Ow0KCXRleHQtaW5kZW50Oi05OTk5cHg7DQp9DQpkaXYuanAtdmlkZW8tcGxheTpob3ZlciBhLmpwLXZpZGVvLXBsYXktaWNvbiB7DQoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLmJsdWUubW9uZGF5LnZpZGVvLnBsYXkucG5nIikgMCAtMTAwcHggbm8tcmVwZWF0Ow0KfQ0KDQoNCg0KDQoNCmRpdi5qcC1qcGxheWVyIGF1ZGlvLA0KZGl2LmpwLWpwbGF5ZXIgew0KCXdpZHRoOjBweDsNCgloZWlnaHQ6MHB4Ow0KfQ0KDQpkaXYuanAtanBsYXllciB7DQoJYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDsNCn0NCg0KDQoNCg0KDQovKiBAZ3JvdXAgVE9HR0xFUyAqLw0KDQovKiBUaGUgYXVkaW8gdG9nZ2xlcyBhcmUgbmVzdGVkIGluc2lkZSBqcC10aW1lLWhvbGRlciAqLw0KDQp1bC5qcC10b2dnbGVzIHsNCglsaXN0LXN0eWxlLXR5cGU6bm9uZTsNCglwYWRkaW5nOjA7DQoJbWFyZ2luOjAgYXV0bzsNCglvdmVyZmxvdzpoaWRkZW47DQp9DQoNCmRpdi5qcC1hdWRpbyAuanAtdHlwZS1zaW5nbGUgdWwuanAtdG9nZ2xlcyB7DQoJd2lkdGg6MjVweDsNCn0NCmRpdi5qcC1hdWRpbyAuanAtdHlwZS1wbGF5bGlzdCB1bC5qcC10b2dnbGVzIHsNCgl3aWR0aDo1NXB4Ow0KCW1hcmdpbjogMDsNCglwb3NpdGlvbjogYWJzb2x1dGU7DQoJbGVmdDogMzI1cHg7DQoJdG9wOiA1MHB4Ow0KfQ0KDQpkaXYuanAtdmlkZW8gdWwuanAtdG9nZ2xlcyB7DQoJbWFyZ2luLXRvcDoxMHB4Ow0KCXdpZHRoOjEwMHB4Ow0KfQ0KDQp1bC5qcC10b2dnbGVzIGxpIHsNCglkaXNwbGF5OmJsb2NrOw0KCWZsb2F0OnJpZ2h0Ow0KfQ0KDQp1bC5qcC10b2dnbGVzIGxpIGEgew0KCWRpc3BsYXk6YmxvY2s7DQoJd2lkdGg6MjVweDsNCgloZWlnaHQ6MThweDsNCgl0ZXh0LWluZGVudDotOTk5OXB4Ow0KCWxpbmUtaGVpZ2h0OjEwMCU7IC8qIG5lZWQgdGhpcyBmb3IgSUU2ICovDQp9DQoNCmEuanAtZnVsbC1zY3JlZW4gew0KCWJhY2tncm91bmQ6IHVybCgianBsYXllci5ibHVlLm1vbmRheS5qcGciKSAwIC0zMTBweCBuby1yZXBlYXQ7DQoJbWFyZ2luLWxlZnQ6IDIwcHg7DQp9DQoNCmEuanAtZnVsbC1zY3JlZW46aG92ZXIgew0KCWJhY2tncm91bmQ6IHVybCgianBsYXllci5ibHVlLm1vbmRheS5qcGciKSAtMzBweCAtMzEwcHggbm8tcmVwZWF0Ow0KfQ0KDQphLmpwLXJlc3RvcmUtc2NyZWVuIHsNCgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIuYmx1ZS5tb25kYXkuanBnIikgLTYwcHggLTMxMHB4IG5vLXJlcGVhdDsNCgltYXJnaW4tbGVmdDogMjBweDsNCn0NCg0KYS5qcC1yZXN0b3JlLXNjcmVlbjpob3ZlciB7DQoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLmJsdWUubW9uZGF5LmpwZyIpIC05MHB4IC0zMTBweCBuby1yZXBlYXQ7DQp9DQoNCmEuanAtcmVwZWF0IHsNCgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIuYmx1ZS5tb25kYXkuanBnIikgMCAtMjkwcHggbm8tcmVwZWF0Ow0KfQ0KDQphLmpwLXJlcGVhdDpob3ZlciB7DQoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLmJsdWUubW9uZGF5LmpwZyIpIC0zMHB4IC0yOTBweCBuby1yZXBlYXQ7DQp9DQoNCmEuanAtcmVwZWF0LW9mZiB7DQoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLmJsdWUubW9uZGF5LmpwZyIpIC02MHB4IC0yOTBweCBuby1yZXBlYXQ7DQp9DQoNCmEuanAtcmVwZWF0LW9mZjpob3ZlciB7DQoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLmJsdWUubW9uZGF5LmpwZyIpIC05MHB4IC0yOTBweCBuby1yZXBlYXQ7DQp9DQoNCmEuanAtc2h1ZmZsZSB7DQoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLmJsdWUubW9uZGF5LmpwZyIpIDAgLTI3MHB4IG5vLXJlcGVhdDsNCgltYXJnaW4tbGVmdDogNXB4Ow0KfQ0KDQphLmpwLXNodWZmbGU6aG92ZXIgew0KCWJhY2tncm91bmQ6IHVybCgianBsYXllci5ibHVlLm1vbmRheS5qcGciKSAtMzBweCAtMjcwcHggbm8tcmVwZWF0Ow0KfQ0KDQphLmpwLXNodWZmbGUtb2ZmIHsNCgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIuYmx1ZS5tb25kYXkuanBnIikgLTYwcHggLTI3MHB4IG5vLXJlcGVhdDsNCgltYXJnaW4tbGVmdDogNXB4Ow0KfQ0KDQphLmpwLXNodWZmbGUtb2ZmOmhvdmVyIHsNCgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIuYmx1ZS5tb25kYXkuanBnIikgLTkwcHggLTI3MHB4IG5vLXJlcGVhdDsNCn0NCg0KDQovKiBAZW5kICovDQoNCi8qIEBncm91cCBOTyBTT0xVVElPTiBlcnJvciBmZWVkYmFjayAqLw0KDQouanAtbm8tc29sdXRpb24gew0KCXBhZGRpbmc6NXB4Ow0KCWZvbnQtc2l6ZTouOGVtOw0KCWJhY2tncm91bmQtY29sb3I6I2VlZTsNCglib3JkZXI6MnB4IHNvbGlkICMwMDliZTM7DQoJY29sb3I6IzAwMDsNCglkaXNwbGF5Om5vbmU7DQp9DQoNCi5qcC1uby1zb2x1dGlvbiBhIHsNCgljb2xvcjojMDAwOw0KfQ0KDQouanAtbm8tc29sdXRpb24gc3BhbiB7DQoJZm9udC1zaXplOjFlbTsNCglkaXNwbGF5OmJsb2NrOw0KCXRleHQtYWxpZ246Y2VudGVyOw0KCWZvbnQtd2VpZ2h0OmJvbGQ7DQp9DQoNCi8qIEBlbmQgKi8NCg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin/blue.monday/jplayer.blue.monday.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin/blue.monday/jplayer.blue.monday.seeking.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin/blue.monday/jplayer.blue.monday.video.play.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin/blue.monday/mustache/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin/blue.monday/mustache/jplayer.blue.monday.audio.playlist.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBpZD0ie3tKUExBWUVSfX0iIGNsYXNzPSJqcC1qcGxheWVyIj48L2Rpdj4KPGRpdiBpZD0ie3tXUkFQUEVSfX0iIGNsYXNzPSJqcC1hdWRpbyIgcm9sZT0iYXBwbGljYXRpb24iIGFyaWEtbGFiZWw9Im1lZGlhIHBsYXllciI+Cgk8ZGl2IGNsYXNzPSJqcC10eXBlLXBsYXlsaXN0Ij4KCQk8ZGl2IGNsYXNzPSJqcC1ndWkganAtaW50ZXJmYWNlIj4KCQkJPGRpdiBjbGFzcz0ianAtY29udHJvbHMiPgoJCQkJPGJ1dHRvbiBjbGFzcz0ianAtcHJldmlvdXMiIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiPnByZXZpb3VzPC9idXR0b24+CgkJCQk8YnV0dG9uIGNsYXNzPSJqcC1wbGF5IiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIj5wbGF5PC9idXR0b24+CgkJCQk8YnV0dG9uIGNsYXNzPSJqcC1uZXh0IiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIj5uZXh0PC9idXR0b24+CgkJCQk8YnV0dG9uIGNsYXNzPSJqcC1zdG9wIiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIj5zdG9wPC9idXR0b24+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJqcC1wcm9ncmVzcyI+CgkJCQk8ZGl2IGNsYXNzPSJqcC1zZWVrLWJhciI+CgkJCQkJPGRpdiBjbGFzcz0ianAtcGxheS1iYXIiPjwvZGl2PgoJCQkJPC9kaXY+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJqcC12b2x1bWUtY29udHJvbHMiPgoJCQkJPGJ1dHRvbiBjbGFzcz0ianAtbXV0ZSIgcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCI+bXV0ZTwvYnV0dG9uPgoJCQkJPGJ1dHRvbiBjbGFzcz0ianAtdm9sdW1lLW1heCIgcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCI+bWF4IHZvbHVtZTwvYnV0dG9uPgoJCQkJPGRpdiBjbGFzcz0ianAtdm9sdW1lLWJhciI+CgkJCQkJPGRpdiBjbGFzcz0ianAtdm9sdW1lLWJhci12YWx1ZSI+PC9kaXY+CgkJCQk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImpwLXRpbWUtaG9sZGVyIj4KCQkJCTxkaXYgY2xhc3M9ImpwLWN1cnJlbnQtdGltZSIgcm9sZT0idGltZXIiIGFyaWEtbGFiZWw9InRpbWUiPiZuYnNwOzwvZGl2PgoJCQkJPGRpdiBjbGFzcz0ianAtZHVyYXRpb24iIHJvbGU9InRpbWVyIiBhcmlhLWxhYmVsPSJkdXJhdGlvbiI+Jm5ic3A7PC9kaXY+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJqcC10b2dnbGVzIj4KCQkJCTxidXR0b24gY2xhc3M9ImpwLXJlcGVhdCIgcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCI+cmVwZWF0PC9idXR0b24+CgkJCQk8YnV0dG9uIGNsYXNzPSJqcC1zaHVmZmxlIiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIj5zaHVmZmxlPC9idXR0b24+CgkJCTwvZGl2PgoJCTwvZGl2PgoJCTxkaXYgY2xhc3M9ImpwLXBsYXlsaXN0Ij4KCQkJPHVsPgoJCQkJPGxpPiZuYnNwOzwvbGk+CgkJCTwvdWw+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ianAtbm8tc29sdXRpb24iPgoJCQk8c3Bhbj5VcGRhdGUgUmVxdWlyZWQ8L3NwYW4+CgkJCVRvIHBsYXkgdGhlIG1lZGlhIHlvdSB3aWxsIG5lZWQgdG8gZWl0aGVyIHVwZGF0ZSB5b3VyIGJyb3dzZXIgdG8gYSByZWNlbnQgdmVyc2lvbiBvciB1cGRhdGUgeW91ciA8YSBocmVmPSJodHRwOi8vZ2V0LmFkb2JlLmNvbS9mbGFzaHBsYXllci8iIHRhcmdldD0iX2JsYW5rIj5GbGFzaCBwbHVnaW48L2E+LgoJCTwvZGl2PgoJPC9kaXY+CjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin/blue.monday/mustache/jplayer.blue.monday.audio.single.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBpZD0ie3tKUExBWUVSfX0iIGNsYXNzPSJqcC1qcGxheWVyIj48L2Rpdj4KPGRpdiBpZD0ie3tXUkFQUEVSfX0iIGNsYXNzPSJqcC1hdWRpbyIgcm9sZT0iYXBwbGljYXRpb24iIGFyaWEtbGFiZWw9Im1lZGlhIHBsYXllciI+Cgk8ZGl2IGNsYXNzPSJqcC10eXBlLXNpbmdsZSI+CgkJPGRpdiBjbGFzcz0ianAtZ3VpIGpwLWludGVyZmFjZSI+CgkJCTxkaXYgY2xhc3M9ImpwLWNvbnRyb2xzIj4KCQkJCTxidXR0b24gY2xhc3M9ImpwLXBsYXkiIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiPnBsYXk8L2J1dHRvbj4KCQkJCTxidXR0b24gY2xhc3M9ImpwLXN0b3AiIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiPnN0b3A8L2J1dHRvbj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImpwLXByb2dyZXNzIj4KCQkJCTxkaXYgY2xhc3M9ImpwLXNlZWstYmFyIj4KCQkJCQk8ZGl2IGNsYXNzPSJqcC1wbGF5LWJhciI+PC9kaXY+CgkJCQk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImpwLXZvbHVtZS1jb250cm9scyI+CgkJCQk8YnV0dG9uIGNsYXNzPSJqcC1tdXRlIiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIj5tdXRlPC9idXR0b24+CgkJCQk8YnV0dG9uIGNsYXNzPSJqcC12b2x1bWUtbWF4IiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIj5tYXggdm9sdW1lPC9idXR0b24+CgkJCQk8ZGl2IGNsYXNzPSJqcC12b2x1bWUtYmFyIj4KCQkJCQk8ZGl2IGNsYXNzPSJqcC12b2x1bWUtYmFyLXZhbHVlIj48L2Rpdj4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0ianAtdGltZS1ob2xkZXIiPgoJCQkJPGRpdiBjbGFzcz0ianAtY3VycmVudC10aW1lIiByb2xlPSJ0aW1lciIgYXJpYS1sYWJlbD0idGltZSI+Jm5ic3A7PC9kaXY+CgkJCQk8ZGl2IGNsYXNzPSJqcC1kdXJhdGlvbiIgcm9sZT0idGltZXIiIGFyaWEtbGFiZWw9ImR1cmF0aW9uIj4mbmJzcDs8L2Rpdj4KCQkJCTxkaXYgY2xhc3M9ImpwLXRvZ2dsZXMiPgoJCQkJCTxidXR0b24gY2xhc3M9ImpwLXJlcGVhdCIgcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCI+cmVwZWF0PC9idXR0b24+CgkJCQk8L2Rpdj4KCQkJPC9kaXY+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ianAtZGV0YWlscyI+CgkJCTxkaXYgY2xhc3M9ImpwLXRpdGxlIiBhcmlhLWxhYmVsPSJ0aXRsZSI+Jm5ic3A7PC9kaXY+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ianAtbm8tc29sdXRpb24iPgoJCQk8c3Bhbj5VcGRhdGUgUmVxdWlyZWQ8L3NwYW4+CgkJCVRvIHBsYXkgdGhlIG1lZGlhIHlvdSB3aWxsIG5lZWQgdG8gZWl0aGVyIHVwZGF0ZSB5b3VyIGJyb3dzZXIgdG8gYSByZWNlbnQgdmVyc2lvbiBvciB1cGRhdGUgeW91ciA8YSBocmVmPSJodHRwOi8vZ2V0LmFkb2JlLmNvbS9mbGFzaHBsYXllci8iIHRhcmdldD0iX2JsYW5rIj5GbGFzaCBwbHVnaW48L2E+LgoJCTwvZGl2PgoJPC9kaXY+CjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin/blue.monday/mustache/jplayer.blue.monday.audio.stream.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBpZD0ie3tKUExBWUVSfX0iIGNsYXNzPSJqcC1qcGxheWVyIj48L2Rpdj4KPGRpdiBpZD0ie3tXUkFQUEVSfX0iIGNsYXNzPSJqcC1hdWRpby1zdHJlYW0iIHJvbGU9ImFwcGxpY2F0aW9uIiBhcmlhLWxhYmVsPSJtZWRpYSBwbGF5ZXIiPgoJPGRpdiBjbGFzcz0ianAtdHlwZS1zaW5nbGUiPgoJCTxkaXYgY2xhc3M9ImpwLWd1aSBqcC1pbnRlcmZhY2UiPgoJCQk8ZGl2IGNsYXNzPSJqcC1jb250cm9scyI+CgkJCQk8YnV0dG9uIGNsYXNzPSJqcC1wbGF5IiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIj5wbGF5PC9idXR0b24+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJqcC12b2x1bWUtY29udHJvbHMiPgoJCQkJPGJ1dHRvbiBjbGFzcz0ianAtbXV0ZSIgcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCI+bXV0ZTwvYnV0dG9uPgoJCQkJPGJ1dHRvbiBjbGFzcz0ianAtdm9sdW1lLW1heCIgcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCI+bWF4IHZvbHVtZTwvYnV0dG9uPgoJCQkJPGRpdiBjbGFzcz0ianAtdm9sdW1lLWJhciI+CgkJCQkJPGRpdiBjbGFzcz0ianAtdm9sdW1lLWJhci12YWx1ZSI+PC9kaXY+CgkJCQk8L2Rpdj4KCQkJPC9kaXY+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ianAtZGV0YWlscyI+CgkJCTxkaXYgY2xhc3M9ImpwLXRpdGxlIiBhcmlhLWxhYmVsPSJ0aXRsZSI+Jm5ic3A7PC9kaXY+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ianAtbm8tc29sdXRpb24iPgoJCQk8c3Bhbj5VcGRhdGUgUmVxdWlyZWQ8L3NwYW4+CgkJCVRvIHBsYXkgdGhlIG1lZGlhIHlvdSB3aWxsIG5lZWQgdG8gZWl0aGVyIHVwZGF0ZSB5b3VyIGJyb3dzZXIgdG8gYSByZWNlbnQgdmVyc2lvbiBvciB1cGRhdGUgeW91ciA8YSBocmVmPSJodHRwOi8vZ2V0LmFkb2JlLmNvbS9mbGFzaHBsYXllci8iIHRhcmdldD0iX2JsYW5rIj5GbGFzaCBwbHVnaW48L2E+LgoJCTwvZGl2PgoJPC9kaXY+CjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin/blue.monday/mustache/jplayer.blue.monday.video.playlist.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBpZD0ie3tXUkFQUEVSfX0iIGNsYXNzPSJqcC12aWRlbyAiIHJvbGU9ImFwcGxpY2F0aW9uIiBhcmlhLWxhYmVsPSJtZWRpYSBwbGF5ZXIiPgoJPGRpdiBjbGFzcz0ianAtdHlwZS1wbGF5bGlzdCI+CgkJPGRpdiBpZD0ie3tKUExBWUVSfX0iIGNsYXNzPSJqcC1qcGxheWVyIj48L2Rpdj4KCQk8ZGl2IGNsYXNzPSJqcC1ndWkiPgoJCQk8ZGl2IGNsYXNzPSJqcC12aWRlby1wbGF5Ij4KCQkJCTxidXR0b24gY2xhc3M9ImpwLXZpZGVvLXBsYXktaWNvbiIgcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCI+cGxheTwvYnV0dG9uPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0ianAtaW50ZXJmYWNlIj4KCQkJCTxkaXYgY2xhc3M9ImpwLXByb2dyZXNzIj4KCQkJCQk8ZGl2IGNsYXNzPSJqcC1zZWVrLWJhciI+CgkJCQkJCTxkaXYgY2xhc3M9ImpwLXBsYXktYmFyIj48L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQkJPGRpdiBjbGFzcz0ianAtY3VycmVudC10aW1lIiByb2xlPSJ0aW1lciIgYXJpYS1sYWJlbD0idGltZSI+Jm5ic3A7PC9kaXY+CgkJCQk8ZGl2IGNsYXNzPSJqcC1kdXJhdGlvbiIgcm9sZT0idGltZXIiIGFyaWEtbGFiZWw9ImR1cmF0aW9uIj4mbmJzcDs8L2Rpdj4KCQkJCTxkaXYgY2xhc3M9ImpwLWNvbnRyb2xzLWhvbGRlciI+CgkJCQkJPGRpdiBjbGFzcz0ianAtY29udHJvbHMiPgoJCQkJCQk8YnV0dG9uIGNsYXNzPSJqcC1wcmV2aW91cyIgcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCI+cHJldmlvdXM8L2J1dHRvbj4KCQkJCQkJPGJ1dHRvbiBjbGFzcz0ianAtcGxheSIgcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCI+cGxheTwvYnV0dG9uPgoJCQkJCQk8YnV0dG9uIGNsYXNzPSJqcC1uZXh0IiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIj5uZXh0PC9idXR0b24+CgkJCQkJCTxidXR0b24gY2xhc3M9ImpwLXN0b3AiIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiPnN0b3A8L2J1dHRvbj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJqcC12b2x1bWUtY29udHJvbHMiPgoJCQkJCQk8YnV0dG9uIGNsYXNzPSJqcC1tdXRlIiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIj5tdXRlPC9idXR0b24+CgkJCQkJCTxidXR0b24gY2xhc3M9ImpwLXZvbHVtZS1tYXgiIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiPm1heCB2b2x1bWU8L2J1dHRvbj4KCQkJCQkJPGRpdiBjbGFzcz0ianAtdm9sdW1lLWJhciI+CgkJCQkJCQk8ZGl2IGNsYXNzPSJqcC12b2x1bWUtYmFyLXZhbHVlIj48L2Rpdj4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ianAtdG9nZ2xlcyI+CgkJCQkJCTxidXR0b24gY2xhc3M9ImpwLXJlcGVhdCIgcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCI+cmVwZWF0PC9idXR0b24+CgkJCQkJCTxidXR0b24gY2xhc3M9ImpwLXNodWZmbGUiIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiPnNodWZmbGU8L2J1dHRvbj4KCQkJCQkJPGJ1dHRvbiBjbGFzcz0ianAtZnVsbC1zY3JlZW4iIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiPmZ1bGwgc2NyZWVuPC9idXR0b24+CgkJCQkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJCTxkaXYgY2xhc3M9ImpwLWRldGFpbHMiPgoJCQkJCTxkaXYgY2xhc3M9ImpwLXRpdGxlIiBhcmlhLWxhYmVsPSJ0aXRsZSI+Jm5ic3A7PC9kaXY+CgkJCQk8L2Rpdj4KCQkJPC9kaXY+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ianAtcGxheWxpc3QiPgoJCQk8dWw+CgkJCQk8IS0tIFRoZSBtZXRob2QgUGxheWxpc3QuZGlzcGxheVBsYXlsaXN0KCkgdXNlcyB0aGlzIHVub3JkZXJlZCBsaXN0IC0tPgoJCQkJPGxpPiZuYnNwOzwvbGk+CgkJCTwvdWw+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ianAtbm8tc29sdXRpb24iPgoJCQk8c3Bhbj5VcGRhdGUgUmVxdWlyZWQ8L3NwYW4+CgkJCVRvIHBsYXkgdGhlIG1lZGlhIHlvdSB3aWxsIG5lZWQgdG8gZWl0aGVyIHVwZGF0ZSB5b3VyIGJyb3dzZXIgdG8gYSByZWNlbnQgdmVyc2lvbiBvciB1cGRhdGUgeW91ciA8YSBocmVmPSJodHRwOi8vZ2V0LmFkb2JlLmNvbS9mbGFzaHBsYXllci8iIHRhcmdldD0iX2JsYW5rIj5GbGFzaCBwbHVnaW48L2E+LgoJCTwvZGl2PgoJPC9kaXY+CjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin/blue.monday/mustache/jplayer.blue.monday.video.single.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBpZD0ie3tXUkFQUEVSfX0iIGNsYXNzPSJqcC12aWRlbyAiIHJvbGU9ImFwcGxpY2F0aW9uIiBhcmlhLWxhYmVsPSJtZWRpYSBwbGF5ZXIiPgoJPGRpdiBjbGFzcz0ianAtdHlwZS1zaW5nbGUiPgoJCTxkaXYgaWQ9Int7SlBMQVlFUn19IiBjbGFzcz0ianAtanBsYXllciI+PC9kaXY+CgkJPGRpdiBjbGFzcz0ianAtZ3VpIj4KCQkJPGRpdiBjbGFzcz0ianAtdmlkZW8tcGxheSI+CgkJCQk8YnV0dG9uIGNsYXNzPSJqcC12aWRlby1wbGF5LWljb24iIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiPnBsYXk8L2J1dHRvbj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImpwLWludGVyZmFjZSI+CgkJCQk8ZGl2IGNsYXNzPSJqcC1wcm9ncmVzcyI+CgkJCQkJPGRpdiBjbGFzcz0ianAtc2Vlay1iYXIiPgoJCQkJCQk8ZGl2IGNsYXNzPSJqcC1wbGF5LWJhciI+PC9kaXY+CgkJCQkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJCTxkaXYgY2xhc3M9ImpwLWN1cnJlbnQtdGltZSIgcm9sZT0idGltZXIiIGFyaWEtbGFiZWw9InRpbWUiPiZuYnNwOzwvZGl2PgoJCQkJPGRpdiBjbGFzcz0ianAtZHVyYXRpb24iIHJvbGU9InRpbWVyIiBhcmlhLWxhYmVsPSJkdXJhdGlvbiI+Jm5ic3A7PC9kaXY+CgkJCQk8ZGl2IGNsYXNzPSJqcC1jb250cm9scy1ob2xkZXIiPgoJCQkJCTxkaXYgY2xhc3M9ImpwLWNvbnRyb2xzIj4KCQkJCQkJPGJ1dHRvbiBjbGFzcz0ianAtcGxheSIgcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCI+cGxheTwvYnV0dG9uPgoJCQkJCQk8YnV0dG9uIGNsYXNzPSJqcC1zdG9wIiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIj5zdG9wPC9idXR0b24+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ianAtdm9sdW1lLWNvbnRyb2xzIj4KCQkJCQkJPGJ1dHRvbiBjbGFzcz0ianAtbXV0ZSIgcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCI+bXV0ZTwvYnV0dG9uPgoJCQkJCQk8YnV0dG9uIGNsYXNzPSJqcC12b2x1bWUtbWF4IiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIj5tYXggdm9sdW1lPC9idXR0b24+CgkJCQkJCTxkaXYgY2xhc3M9ImpwLXZvbHVtZS1iYXIiPgoJCQkJCQkJPGRpdiBjbGFzcz0ianAtdm9sdW1lLWJhci12YWx1ZSI+PC9kaXY+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImpwLXRvZ2dsZXMiPgoJCQkJCQk8YnV0dG9uIGNsYXNzPSJqcC1yZXBlYXQiIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiPnJlcGVhdDwvYnV0dG9uPgoJCQkJCQk8YnV0dG9uIGNsYXNzPSJqcC1mdWxsLXNjcmVlbiIgcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCI+ZnVsbCBzY3JlZW48L2J1dHRvbj4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQkJPGRpdiBjbGFzcz0ianAtZGV0YWlscyI+CgkJCQkJPGRpdiBjbGFzcz0ianAtdGl0bGUiIGFyaWEtbGFiZWw9InRpdGxlIj4mbmJzcDs8L2Rpdj4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJqcC1uby1zb2x1dGlvbiI+CgkJCTxzcGFuPlVwZGF0ZSBSZXF1aXJlZDwvc3Bhbj4KCQkJVG8gcGxheSB0aGUgbWVkaWEgeW91IHdpbGwgbmVlZCB0byBlaXRoZXIgdXBkYXRlIHlvdXIgYnJvd3NlciB0byBhIHJlY2VudCB2ZXJzaW9uIG9yIHVwZGF0ZSB5b3VyIDxhIGhyZWY9Imh0dHA6Ly9nZXQuYWRvYmUuY29tL2ZsYXNocGxheWVyLyIgdGFyZ2V0PSJfYmxhbmsiPkZsYXNoIHBsdWdpbjwvYT4uCgkJPC9kaXY+Cgk8L2Rpdj4KPC9kaXY+Cg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin/blue.monday/skin.handlebars</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBpZD0ie3tqcXVlcnlfanBsYXllcl9pZH19IiBjbGFzcz0ianAtanBsYXllciI+PC9kaXY+CjxkaXYgaWQ9Int7anBfY29udGFpbmVyX2lkfX0iIGNsYXNzPSJqcC1hdWRpbyI+CiAgPGRpdiBjbGFzcz0ianAtdHlwZS1zaW5nbGUiPgogICAgPGRpdiBjbGFzcz0ianAtZ3VpIGpwLWludGVyZmFjZSI+CiAgICAgIDx1bCBjbGFzcz0ianAtY29udHJvbHMiPgogICAgICAgIDxsaT48YSBocmVmPSJqYXZhc2NyaXB0OjsiIGNsYXNzPSJqcC1wbGF5IiB0YWJpbmRleD0iMSI+cGxheTwvYT48L2xpPgogICAgICAgIDxsaT48YSBocmVmPSJqYXZhc2NyaXB0OjsiIGNsYXNzPSJqcC1wYXVzZSIgdGFiaW5kZXg9IjEiPnBhdXNlPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGhyZWY9ImphdmFzY3JpcHQ6OyIgY2xhc3M9ImpwLXN0b3AiIHRhYmluZGV4PSIxIj5zdG9wPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGhyZWY9ImphdmFzY3JpcHQ6OyIgY2xhc3M9ImpwLW11dGUiIHRhYmluZGV4PSIxIiB0aXRsZT0ibXV0ZSI+bXV0ZTwvYT48L2xpPgogICAgICAgIDxsaT48YSBocmVmPSJqYXZhc2NyaXB0OjsiIGNsYXNzPSJqcC11bm11dGUiIHRhYmluZGV4PSIxIiB0aXRsZT0idW5tdXRlIj51bm11dGU8L2E+PC9saT4KICAgICAgICA8bGk+PGEgaHJlZj0iamF2YXNjcmlwdDo7IiBjbGFzcz0ianAtdm9sdW1lLW1heCIgdGFiaW5kZXg9IjEiIHRpdGxlPSJtYXggdm9sdW1lIj5tYXggdm9sdW1lPC9hPjwvbGk+CiAgICAgIDwvdWw+CiAgICAgIDxkaXYgY2xhc3M9ImpwLXByb2dyZXNzIj4KICAgICAgICA8ZGl2IGNsYXNzPSJqcC1zZWVrLWJhciI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJqcC1wbGF5LWJhciI+PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJqcC12b2x1bWUtYmFyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJqcC12b2x1bWUtYmFyLXZhbHVlIj48L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImpwLXRpbWUtaG9sZGVyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJqcC1jdXJyZW50LXRpbWUiPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImpwLWR1cmF0aW9uIj48L2Rpdj4KICAgICAgICA8dWwgY2xhc3M9ImpwLXRvZ2dsZXMiPgogICAgICAgICAgPGxpPjxhIGhyZWY9ImphdmFzY3JpcHQ6OyIgY2xhc3M9ImpwLXJlcGVhdCIgdGFiaW5kZXg9IjEiIHRpdGxlPSJyZXBlYXQiPnJlcGVhdDwvYT48L2xpPgogICAgICAgICAgPGxpPjxhIGhyZWY9ImphdmFzY3JpcHQ6OyIgY2xhc3M9ImpwLXJlcGVhdC1vZmYiIHRhYmluZGV4PSIxIiB0aXRsZT0icmVwZWF0IG9mZiI+cmVwZWF0IG9mZjwvYT48L2xpPgogICAgICAgIDwvdWw+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJqcC10aXRsZSI+CiAgICAgIDx1bD4KICAgICAgICA8bGk+e3t0aXRsZX19PC9saT4KICAgICAgPC91bD4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0ianAtbm8tc29sdXRpb24iPgogICAgICA8c3Bhbj5VcGRhdGUgUmVxdWlyZWQ8L3NwYW4+CiAgICAgIFRvIHBsYXkgdGhlIG1lZGlhIHlvdSB3aWxsIG5lZWQgdG8gZWl0aGVyIHVwZGF0ZSB5b3VyIGJyb3dzZXIgdG8gYSByZWNlbnQgdmVyc2lvbiBvciB1cGRhdGUgeW91ciA8YSBocmVmPSJodHRwOi8vZ2V0LmFkb2JlLmNvbS9mbGFzaHBsYXllci8iIHRhcmdldD0iX2JsYW5rIj5GbGFzaCBwbHVnaW48L2E+LgogICAgPC9kaXY+CiAgPC9kaXY+CjwvZGl2Pg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin/pink.flag/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin/pink.flag/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin/pink.flag/css/jplayer.pink.flag.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohIFBpbmsgRmxhZyBTa2luIGZvciBqUGxheWVyIDIuOS4yIH4gKGMpIDIwMDktMjAxNCBIYXBweXdvcm0gTHRkIH4gTUlUIExpY2Vuc2UgKi8KCi8qCiAqIFNraW4gZm9yIGpQbGF5ZXIgUGx1Z2luIChqUXVlcnkgSmF2YVNjcmlwdCBMaWJyYXJ5KQogKiBodHRwOi8vd3d3LmpwbGF5ZXIub3JnCiAqCiAqIFNraW4gTmFtZTogUGluayBGbGFnCiAqCiAqIENvcHlyaWdodCAoYykgMjAxMiAtIDIwMTQgSGFwcHl3b3JtIEx0ZAogKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuCiAqICAtIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwCiAqCiAqIEF1dGhvcjogU2lsdmlhIEJlbnZlbnV0aQogKiBTa2luIFZlcnNpb246IDIuMSAoalBsYXllciAyLjguMCkKICogRGF0ZTogMTN0aCBOb3ZlbWJlciAyMDE0CiAqLwouanAtYXVkaW8gKjpmb2N1cywKLmpwLWF1ZGlvLXN0cmVhbSAqOmZvY3VzLAouanAtdmlkZW8gKjpmb2N1cyB7CiAgLyogRGlzYWJsZSB0aGUgYnJvd3NlciBmb2N1cyBoaWdobGlnaHRpbmcuICovCiAgb3V0bGluZTogbm9uZTsgfQoKLmpwLWF1ZGlvIGJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwKLmpwLWF1ZGlvLXN0cmVhbSBidXR0b246Oi1tb3otZm9jdXMtaW5uZXIsCi5qcC12aWRlbyBidXR0b246Oi1tb3otZm9jdXMtaW5uZXIgewogIC8qIERpc2FibGUgdGhlIGJyb3dzZXIgQ1NTMyBmb2N1cyBoaWdobGlnaHRpbmcuICovCiAgYm9yZGVyOiAwOyB9CgouanAtYXVkaW8sCi5qcC1hdWRpby1zdHJlYW0sCi5qcC12aWRlbyB7CiAgZm9udC1zaXplOiAxNnB4OwogIGZvbnQtZmFtaWx5OiBWZXJkYW5hLCBBcmlhbCwgc2Fucy1zZXJpZjsKICBsaW5lLWhlaWdodDogMS42OwogIGNvbG9yOiAjZmZmOwogIGJvcmRlci10b3A6IDFweCBzb2xpZCAjNTU0NDYxOwogIGJvcmRlci1sZWZ0OiAxcHggc29saWQgIzU1NDQ2MTsKICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjMTgwYTFmOwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjMTgwYTFmOwogIGJhY2tncm91bmQtY29sb3I6ICMzYTJhNDU7IH0KCi5qcC1hdWRpbyB7CiAgd2lkdGg6IDIwMXB4OwogIHBhZGRpbmc6IDIwcHg7IH0KCi5qcC1hdWRpby1zdHJlYW0gewogIHdpZHRoOiAxMDFweDsKICBwYWRkaW5nOiAyMHB4IDIwcHggMTBweCAyMHB4OyB9CgouanAtdmlkZW8tMjcwcCB7CiAgd2lkdGg6IDQ4MHB4OyB9CgouanAtdmlkZW8tMzYwcCB7CiAgd2lkdGg6IDY0MHB4OyB9CgouanAtdmlkZW8tZnVsbCB7CiAgLyogUnVsZXMgZm9yIElFNiAoZnVsbC1zY3JlZW4pICovCiAgd2lkdGg6IDQ4MHB4OwogIGhlaWdodDogMjcwcHg7CiAgLyogUnVsZXMgZm9yIElFNyAoZnVsbC1zY3JlZW4pIC0gT3RoZXJ3aXNlIHRoZSByZWxhdGl2ZSBjb250YWluZXIgY2F1c2VzIG90aGVyIHBhZ2UgaXRlbXMgdGhhdCBhcmUgbm90IHBvc2l0aW9uOnN0YXRpYyAoZGVmYXVsdCkgdG8gYXBwZWFyIG92ZXIgdGhlIHZpZGVvL2d1aS4gKi8KICBwb3NpdGlvbjogc3RhdGljICFpbXBvcnRhbnQ7CiAgcG9zaXRpb246IHJlbGF0aXZlOyB9CgovKiBUaGUgei1pbmRleCBydWxlIGlzIGRlZmluZWQgaW4gdGhpcyBtYW5uZXIgdG8gZW5hYmxlIFBvcGNvcm4gcGx1Z2lucyB0aGF0IGFkZCBvdmVybGF5cyB0byB2aWRlbyBhcmVhLiBFRy4gU3VidGl0bGVzLiAqLwouanAtdmlkZW8tZnVsbCBkaXYgZGl2IHsKICB6LWluZGV4OiAxMDAwOyB9CgouanAtdmlkZW8tZnVsbCAuanAtanBsYXllciB7CiAgdG9wOiAwOwogIGxlZnQ6IDA7CiAgcG9zaXRpb246IGZpeGVkICFpbXBvcnRhbnQ7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIC8qIFJ1bGVzIGZvciBJRTYgKGZ1bGwtc2NyZWVuKSAqLwogIG92ZXJmbG93OiBoaWRkZW47IH0KCi5qcC12aWRlby1mdWxsIC5qcC1ndWkgewogIHBvc2l0aW9uOiBmaXhlZCAhaW1wb3J0YW50OwogIHBvc2l0aW9uOiBzdGF0aWM7CiAgLyogUnVsZXMgZm9yIElFNiAoZnVsbC1zY3JlZW4pICovCiAgdG9wOiAwOwogIGxlZnQ6IDA7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAxMDAlOwogIHotaW5kZXg6IDEwMDE7CiAgLyogMSBsYXllciBhYm92ZSB0aGUgb3RoZXJzLiAqLyB9CgouanAtdmlkZW8tZnVsbCAuanAtaW50ZXJmYWNlIHsKICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgLyogUnVsZXMgZm9yIElFNiAoZnVsbC1zY3JlZW4pICovCiAgYm90dG9tOiAwOwogIGxlZnQ6IDA7IH0KCi5qcC1pbnRlcmZhY2UgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB3aWR0aDogMTAwJTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjM2EyYTQ1OwogIC8qIFJlcXVpcmVkIGZvciB0aGUgZnVsbCBzY3JlZW4gKi8gfQoKLyogQGdyb3VwIENPTlRST0xTICovCi5qcC12aWRlbyAuanAtY29udHJvbHMtaG9sZGVyIHsKICBjbGVhcjogYm90aDsKICB3aWR0aDogNDQwcHg7CiAgbWFyZ2luOiAwIGF1dG8gMTBweCBhdXRvOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBvdmVyZmxvdzogaGlkZGVuOyB9CgouanAtYXVkaW8gLmpwLWNvbnRyb2xzLWhvbGRlciB7CiAgaGVpZ2h0OiA4MHB4OyB9CgouanAtYXVkaW8tc3RyZWFtIC5qcC1jb250cm9scy1ob2xkZXIgewogIGhlaWdodDogNTBweDsgfQoKLmpwLWNvbnRyb2xzIHsKICBiYWNrZ3JvdW5kOiB1cmwoIi4uL2ltYWdlL2pwbGF5ZXIucGluay5mbGFnLmpwZyIpIDAgMCBuby1yZXBlYXQ7CiAgcGFkZGluZzogMXB4IDAgMnB4IDFweDsKICBvdmVyZmxvdzogaGlkZGVuOwogIHdpZHRoOiAyMDFweDsKICBoZWlnaHQ6IDM0cHg7IH0KCi5qcC1hdWRpbyAuanAtY29udHJvbHMsCi5qcC1hdWRpby1zdHJlYW0gLmpwLWNvbnRyb2xzIHsKICBtYXJnaW46IDAgYXV0bzsgfQoKLmpwLWF1ZGlvLXN0cmVhbSAuanAtY29udHJvbHMgewogIHdpZHRoOiAxMDBweDsgfQoKLmpwLXZpZGVvIC5qcC1jb250cm9scyB7CiAgbWFyZ2luOiAwIDAgMCAxMTVweDsKICBmbG9hdDogbGVmdDsKICBkaXNwbGF5OiBpbmxpbmU7CiAgLyogbmVlZCB0aGlzIHRvIGZpeCBJRTYgZG91YmxlIG1hcmdpbiAqLyB9CgouanAtY29udHJvbHMgYnV0dG9uIHsKICBkaXNwbGF5OiBibG9jazsKICBmbG9hdDogbGVmdDsKICBvdmVyZmxvdzogaGlkZGVuOwogIHRleHQtaW5kZW50OiAtOTk5OXB4OwogIGhlaWdodDogMzRweDsKICBtYXJnaW46IDAgMXB4IDJweCAwOwogIHBhZGRpbmc6IDA7CiAgYm9yZGVyOiBub25lOwogIGN1cnNvcjogcG9pbnRlcjsgfQoKLyogQGdyb3VwIHNpbmdsZSBwbGF5ZXIgY29udHJvbHMgKi8KLmpwLXR5cGUtc2luZ2xlIC5qcC1jb250cm9scyBidXR0b24gewogIHdpZHRoOiA5OXB4OyB9CgouanAtdHlwZS1zaW5nbGUgLmpwLXBsYXkgewogIGJhY2tncm91bmQ6IHVybCgiLi4vaW1hZ2UvanBsYXllci5waW5rLmZsYWcuanBnIikgMHB4IC00MHB4IG5vLXJlcGVhdDsgfQoKLmpwLXR5cGUtc2luZ2xlIC5qcC1wbGF5OmZvY3VzIHsKICBiYWNrZ3JvdW5kOiB1cmwoIi4uL2ltYWdlL2pwbGF5ZXIucGluay5mbGFnLmpwZyIpIC0xMDBweCAtNDBweCBuby1yZXBlYXQ7IH0KCi5qcC1zdGF0ZS1wbGF5aW5nIC5qcC10eXBlLXNpbmdsZSAuanAtcGxheSB7CiAgYmFja2dyb3VuZDogdXJsKCIuLi9pbWFnZS9qcGxheWVyLnBpbmsuZmxhZy5qcGciKSAwcHggLTEyMHB4IG5vLXJlcGVhdDsgfQoKLmpwLXN0YXRlLXBsYXlpbmcgLmpwLXR5cGUtc2luZ2xlIC5qcC1wbGF5OmZvY3VzIHsKICBiYWNrZ3JvdW5kOiB1cmwoIi4uL2ltYWdlL2pwbGF5ZXIucGluay5mbGFnLmpwZyIpIC0xMDBweCAtMTIwcHggbm8tcmVwZWF0OyB9CgovKiBUaGUgcmlnaHQgYm9yZGVyIGlzIG5vcm1hbGx5IGluIHRoZSB1bCBiYWNrZ3JvdW5kIGltYWdlLiAqLwouanAtYXVkaW8tc3RyZWFtIC5qcC1wbGF5LAouanAtYXVkaW8tc3RyZWFtIC5qcC1wYXVzZSB7CiAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgIzE4MDkyMDsgfQoKLmpwLXR5cGUtc2luZ2xlIC5qcC1zdG9wIHsKICBiYWNrZ3JvdW5kOiB1cmwoIi4uL2ltYWdlL2pwbGF5ZXIucGluay5mbGFnLmpwZyIpIDBweCAtODBweCBuby1yZXBlYXQ7IH0KCi5qcC10eXBlLXNpbmdsZSAuanAtc3RvcDpmb2N1cyB7CiAgYmFja2dyb3VuZDogdXJsKCIuLi9pbWFnZS9qcGxheWVyLnBpbmsuZmxhZy5qcGciKSAtMTAwcHggLTgwcHggbm8tcmVwZWF0OyB9CgovKiBAZW5kICovCi8qIEBncm91cCBwbGF5bGlzdCBwbGF5ZXIgY29udHJvbHMgKi8KLmpwLXR5cGUtcGxheWxpc3QgLmpwLWNvbnRyb2xzIGJ1dHRvbiB7CiAgd2lkdGg6IDQ5cHg7IH0KCi5qcC10eXBlLXBsYXlsaXN0IC5qcC1wbGF5IHsKICBiYWNrZ3JvdW5kOiB1cmwoIi4uL2ltYWdlL2pwbGF5ZXIucGluay5mbGFnLmpwZyIpIC0yNHB4IC00MHB4IG5vLXJlcGVhdDsgfQoKLmpwLXR5cGUtcGxheWxpc3QgLmpwLXBsYXk6Zm9jdXMgewogIGJhY2tncm91bmQ6IHVybCgiLi4vaW1hZ2UvanBsYXllci5waW5rLmZsYWcuanBnIikgLTEyNHB4IC00MHB4IG5vLXJlcGVhdDsgfQoKLmpwLXN0YXRlLXBsYXlpbmcgZGl2LmpwLXR5cGUtcGxheWxpc3QgLmpwLXBsYXkgewogIGJhY2tncm91bmQ6IHVybCgiLi4vaW1hZ2UvanBsYXllci5waW5rLmZsYWcuanBnIikgLTI0cHggLTEyMHB4IG5vLXJlcGVhdDsgfQoKLmpwLXN0YXRlLXBsYXlpbmcgZGl2LmpwLXR5cGUtcGxheWxpc3QgLmpwLXBsYXk6Zm9jdXMgewogIGJhY2tncm91bmQ6IHVybCgiLi4vaW1hZ2UvanBsYXllci5waW5rLmZsYWcuanBnIikgLTEyNHB4IC0xMjBweCBuby1yZXBlYXQ7IH0KCi5qcC10eXBlLXBsYXlsaXN0IC5qcC1zdG9wIHsKICBiYWNrZ3JvdW5kOiB1cmwoIi4uL2ltYWdlL2pwbGF5ZXIucGluay5mbGFnLmpwZyIpIC0yNHB4IC04MHB4IG5vLXJlcGVhdDsgfQoKLmpwLXR5cGUtcGxheWxpc3QgLmpwLXN0b3A6Zm9jdXMgewogIGJhY2tncm91bmQ6IHVybCgiLi4vaW1hZ2UvanBsYXllci5waW5rLmZsYWcuanBnIikgLTEyNHB4IC04MHB4IG5vLXJlcGVhdDsgfQoKLmpwLXR5cGUtcGxheWxpc3QgLmpwLXByZXZpb3VzIHsKICBiYWNrZ3JvdW5kOiB1cmwoIi4uL2ltYWdlL2pwbGF5ZXIucGluay5mbGFnLmpwZyIpIC0yNHB4IC0yMDBweCBuby1yZXBlYXQ7IH0KCi5qcC10eXBlLXBsYXlsaXN0IC5qcC1wcmV2aW91czpmb2N1cyB7CiAgYmFja2dyb3VuZDogdXJsKCIuLi9pbWFnZS9qcGxheWVyLnBpbmsuZmxhZy5qcGciKSAtMTI0cHggLTIwMHB4IG5vLXJlcGVhdDsgfQoKLmpwLXR5cGUtcGxheWxpc3QgLmpwLW5leHQgewogIGJhY2tncm91bmQ6IHVybCgiLi4vaW1hZ2UvanBsYXllci5waW5rLmZsYWcuanBnIikgLTI0cHggLTE2MHB4IG5vLXJlcGVhdDsgfQoKLmpwLXR5cGUtcGxheWxpc3QgLmpwLW5leHQ6Zm9jdXMgewogIGJhY2tncm91bmQ6IHVybCgiLi4vaW1hZ2UvanBsYXllci5waW5rLmZsYWcuanBnIikgLTEyNHB4IC0xNjBweCBuby1yZXBlYXQ7IH0KCi8qIEBlbmQgKi8KLyogQGdyb3VwIFRPR0dMRVMgKi8KLmpwLXRvZ2dsZXMgewogIHBhZGRpbmc6IDA7CiAgbWFyZ2luOiAwIGF1dG87CiAgb3ZlcmZsb3c6IGhpZGRlbjsgfQoKLmpwLWF1ZGlvIC5qcC10b2dnbGVzIHsKICB3aWR0aDogNTVweDsgfQoKLmpwLWF1ZGlvIC5qcC10eXBlLXNpbmdsZSAuanAtdG9nZ2xlcyB7CiAgd2lkdGg6IDI1cHg7IH0KCi5qcC12aWRlbyAuanAtdG9nZ2xlcyB7CiAgZmxvYXQ6IGxlZnQ7CiAgd2lkdGg6IDEwNXB4OwogIG1hcmdpbjogMTBweCAwIDAgMTVweDsgfQoKLmpwLXRvZ2dsZXMgYnV0dG9uIHsKICBkaXNwbGF5OiBibG9jazsKICBmbG9hdDogbGVmdDsKICB3aWR0aDogMjVweDsKICBoZWlnaHQ6IDE4cHg7CiAgdGV4dC1pbmRlbnQ6IC05OTk5cHg7CiAgbGluZS1oZWlnaHQ6IDEwMCU7CiAgLyogbmVlZCB0aGlzIGZvciBJRTYgKi8KICBib3JkZXI6IG5vbmU7CiAgY3Vyc29yOiBwb2ludGVyOyB9CgouanAtZnVsbC1zY3JlZW4gewogIGJhY2tncm91bmQ6IHVybCgiLi4vaW1hZ2UvanBsYXllci5waW5rLmZsYWcuanBnIikgMCAtNDIwcHggbm8tcmVwZWF0OwogIG1hcmdpbi1sZWZ0OiAxNXB4OyB9CgouanAtZnVsbC1zY3JlZW46Zm9jdXMgewogIGJhY2tncm91bmQ6IHVybCgiLi4vaW1hZ2UvanBsYXllci5waW5rLmZsYWcuanBnIikgLTMwcHggLTQyMHB4IG5vLXJlcGVhdDsgfQoKLmpwLXN0YXRlLWZ1bGwtc2NyZWVuIC5qcC1mdWxsLXNjcmVlbiB7CiAgYmFja2dyb3VuZDogdXJsKCIuLi9pbWFnZS9qcGxheWVyLnBpbmsuZmxhZy5qcGciKSAtNjBweCAtNDIwcHggbm8tcmVwZWF0OyB9CgouanAtc3RhdGUtZnVsbC1zY3JlZW4gLmpwLWZ1bGwtc2NyZWVuOmZvY3VzIHsKICBiYWNrZ3JvdW5kOiB1cmwoIi4uL2ltYWdlL2pwbGF5ZXIucGluay5mbGFnLmpwZyIpIC05MHB4IC00MjBweCBuby1yZXBlYXQ7IH0KCi5qcC1yZXBlYXQgewogIGJhY2tncm91bmQ6IHVybCgiLi4vaW1hZ2UvanBsYXllci5waW5rLmZsYWcuanBnIikgMCAtNDQwcHggbm8tcmVwZWF0OwogIG1hcmdpbi1sZWZ0OiAwOyB9CgouanAtcmVwZWF0OmZvY3VzIHsKICBiYWNrZ3JvdW5kOiB1cmwoIi4uL2ltYWdlL2pwbGF5ZXIucGluay5mbGFnLmpwZyIpIC0zMHB4IC00NDBweCBuby1yZXBlYXQ7IH0KCi5qcC1zdGF0ZS1sb29wZWQgLmpwLXJlcGVhdCB7CiAgYmFja2dyb3VuZDogdXJsKCIuLi9pbWFnZS9qcGxheWVyLnBpbmsuZmxhZy5qcGciKSAtNjBweCAtNDQwcHggbm8tcmVwZWF0OyB9CgouanAtc3RhdGUtbG9vcGVkIC5qcC1yZXBlYXQ6Zm9jdXMgewogIGJhY2tncm91bmQ6IHVybCgiLi4vaW1hZ2UvanBsYXllci5waW5rLmZsYWcuanBnIikgLTkwcHggLTQ0MHB4IG5vLXJlcGVhdDsgfQoKLmpwLXNodWZmbGUgewogIGJhY2tncm91bmQ6IHVybCgiLi4vaW1hZ2UvanBsYXllci5waW5rLmZsYWcuanBnIikgMCAtNDYwcHggbm8tcmVwZWF0OwogIG1hcmdpbi1sZWZ0OiAxNXB4OyB9CgouanAtc2h1ZmZsZTpmb2N1cyB7CiAgYmFja2dyb3VuZDogdXJsKCIuLi9pbWFnZS9qcGxheWVyLnBpbmsuZmxhZy5qcGciKSAtMzBweCAtNDYwcHggbm8tcmVwZWF0OyB9CgouanAtc3RhdGUtc2h1ZmZsZWQgLmpwLXNodWZmbGUgewogIGJhY2tncm91bmQ6IHVybCgiLi4vaW1hZ2UvanBsYXllci5waW5rLmZsYWcuanBnIikgLTYwcHggLTQ2MHB4IG5vLXJlcGVhdDsgfQoKLmpwLXN0YXRlLXNodWZmbGVkIC5qcC1zaHVmZmxlOmZvY3VzIHsKICBiYWNrZ3JvdW5kOiB1cmwoIi4uL2ltYWdlL2pwbGF5ZXIucGluay5mbGFnLmpwZyIpIC05MHB4IC00NjBweCBuby1yZXBlYXQ7IH0KCi5qcC1hdWRpbyAuanAtc2h1ZmZsZSB7CiAgbWFyZ2luLWxlZnQ6IDVweDsgfQoKLyogQGVuZCAqLwovKiBAZ3JvdXAgcHJvZ3Jlc3MgYmFyICovCi8qIFRoZSBzZWVraW5nIGNsYXNzIGlzIGFkZGVkL3JlbW92ZWQgaW5zaWRlIGpQbGF5ZXIgKi8KZGl2LmpwLXNlZWtpbmctYmcgewogIGJhY2tncm91bmQ6IHVybCgiLi4vaW1hZ2UvanBsYXllci5waW5rLmZsYWcuc2Vla2luZy5naWYiKTsgfQoKLmpwLXByb2dyZXNzIHsKICBiYWNrZ3JvdW5kOiB1cmwoIi4uL2ltYWdlL2pwbGF5ZXIucGluay5mbGFnLmpwZyIpIDBweCAtMjQwcHggbm8tcmVwZWF0OwogIHdpZHRoOiAxOTdweDsKICBoZWlnaHQ6IDEzcHg7CiAgcGFkZGluZzogMCAycHggMnB4IDJweDsKICBtYXJnaW4tYm90dG9tOiA0cHg7CiAgb3ZlcmZsb3c6IGhpZGRlbjsgfQoKZGl2LmpwLXZpZGVvIC5qcC1wcm9ncmVzcyB7CiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICMxODBhMWY7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM1NTQ1NjA7CiAgd2lkdGg6IDEwMCU7CiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKICBwYWRkaW5nOiAwOyB9CgouanAtc2Vlay1iYXIgewogIGJhY2tncm91bmQ6IHVybCgiLi4vaW1hZ2UvanBsYXllci5waW5rLmZsYWcuanBnIikgMHB4IC0yNjBweCByZXBlYXQteDsKICB3aWR0aDogMHB4OwogIGhlaWdodDogMTAwJTsKICBvdmVyZmxvdzogaGlkZGVuOwogIGN1cnNvcjogcG9pbnRlcjsgfQoKLmpwLXBsYXktYmFyIHsKICBiYWNrZ3JvdW5kOiB1cmwoIi4uL2ltYWdlL2pwbGF5ZXIucGluay5mbGFnLmpwZyIpIDBweCAtMjgwcHggcmVwZWF0LXg7CiAgd2lkdGg6IDBweDsKICBoZWlnaHQ6IDEwMCU7CiAgb3ZlcmZsb3c6IGhpZGRlbjsgfQoKLyogQGVuZCAqLwovKiBAZ3JvdXAgdm9sdW1lIGNvbnRyb2xzICovCi5qcC1zdGF0ZS1uby12b2x1bWUgLmpwLXZvbHVtZS1jb250cm9scyB7CiAgZGlzcGxheTogbm9uZTsgfQoKLmpwLWF1ZGlvIC5qcC12b2x1bWUtY29udHJvbHMsCi5qcC1hdWRpby1zdHJlYW0gLmpwLXZvbHVtZS1jb250cm9scyB7CiAgaGVpZ2h0OiAzMHB4OyB9CgouanAtdm9sdW1lLWNvbnRyb2xzIGJ1dHRvbiB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGRpc3BsYXk6IGJsb2NrOwogIG92ZXJmbG93OiBoaWRkZW47CiAgdGV4dC1pbmRlbnQ6IC05OTk5cHg7CiAgbWFyZ2luOiAwOwogIHBhZGRpbmc6IDA7CiAgd2lkdGg6IDE2cHg7CiAgaGVpZ2h0OiAxMXB4OwogIGJvcmRlcjogbm9uZTsKICBjdXJzb3I6IHBvaW50ZXI7IH0KCi5qcC1hdWRpbyAuanAtdm9sdW1lLWNvbnRyb2xzIC5qcC1tdXRlLAouanAtYXVkaW8tc3RyZWFtIC5qcC12b2x1bWUtY29udHJvbHMgLmpwLW11dGUgewogIHRvcDogLTZweDsKICBsZWZ0OiAwOyB9CgouanAtYXVkaW8gLmpwLXZvbHVtZS1jb250cm9scyAuanAtdm9sdW1lLW1heCwKLmpwLWF1ZGlvLXN0cmVhbSAuanAtdm9sdW1lLWNvbnRyb2xzIC5qcC12b2x1bWUtbWF4IHsKICB0b3A6IC02cHg7CiAgcmlnaHQ6IDA7IH0KCi5qcC12aWRlbyAuanAtdm9sdW1lLWNvbnRyb2xzIC5qcC1tdXRlLAouanAtdmlkZW8gLmpwLXZvbHVtZS1jb250cm9scyAuanAtdW5tdXRlIHsKICBsZWZ0OiAwOwogIHRvcDogMTRweDsgfQoKLmpwLXZpZGVvIC5qcC12b2x1bWUtY29udHJvbHMgLmpwLXZvbHVtZS1tYXggewogIGxlZnQ6IDg0cHg7CiAgdG9wOiAxNHB4OyB9CgouanAtdm9sdW1lLWNvbnRyb2xzIC5qcC1tdXRlIHsKICBiYWNrZ3JvdW5kOiB1cmwoIi4uL2ltYWdlL2pwbGF5ZXIucGluay5mbGFnLmpwZyIpIDBweCAtMzMwcHggbm8tcmVwZWF0OyB9CgouanAtdm9sdW1lLWNvbnRyb2xzIC5qcC1tdXRlOmZvY3VzIHsKICBiYWNrZ3JvdW5kOiB1cmwoIi4uL2ltYWdlL2pwbGF5ZXIucGluay5mbGFnLmpwZyIpIC0yNXB4IC0zMzBweCBuby1yZXBlYXQ7IH0KCi5qcC1zdGF0ZS1tdXRlZCAuanAtdm9sdW1lLWNvbnRyb2xzIC5qcC1tdXRlIHsKICBiYWNrZ3JvdW5kOiB1cmwoIi4uL2ltYWdlL2pwbGF5ZXIucGluay5mbGFnLmpwZyIpIC02MHB4IC0zMzBweCBuby1yZXBlYXQ7IH0KCi5qcC1zdGF0ZS1tdXRlZCAuanAtdm9sdW1lLWNvbnRyb2xzIC5qcC1tdXRlOmZvY3VzIHsKICBiYWNrZ3JvdW5kOiB1cmwoIi4uL2ltYWdlL2pwbGF5ZXIucGluay5mbGFnLmpwZyIpIC04NXB4IC0zMzBweCBuby1yZXBlYXQ7IH0KCi5qcC12b2x1bWUtY29udHJvbHMgLmpwLXZvbHVtZS1tYXggewogIGJhY2tncm91bmQ6IHVybCgiLi4vaW1hZ2UvanBsYXllci5waW5rLmZsYWcuanBnIikgMHB4IC0zNTBweCBuby1yZXBlYXQ7IH0KCi5qcC12b2x1bWUtY29udHJvbHMgLmpwLXZvbHVtZS1tYXg6Zm9jdXMgewogIGJhY2tncm91bmQ6IHVybCgiLi4vaW1hZ2UvanBsYXllci5waW5rLmZsYWcuanBnIikgLTI1cHggLTM1MHB4IG5vLXJlcGVhdDsgfQoKLmpwLXZvbHVtZS1iYXIgewogIGJhY2tncm91bmQ6IHVybCgiLi4vaW1hZ2UvanBsYXllci5waW5rLmZsYWcuanBnIikgMHB4IC0zMDBweCByZXBlYXQteDsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgd2lkdGg6IDE5N3B4OwogIGhlaWdodDogNHB4OwogIHBhZGRpbmc6IDJweCAycHggMXB4IDJweDsKICBvdmVyZmxvdzogaGlkZGVuOwogIGN1cnNvcjogcG9pbnRlcjsgfQoKLmpwLWF1ZGlvIC5qcC1pbnRlcmZhY2UgLmpwLXZvbHVtZS1iYXIsCi5qcC1hdWRpby1zdHJlYW0gLmpwLWludGVyZmFjZSAuanAtdm9sdW1lLWJhciB7CiAgdG9wOiAxMHB4OwogIGxlZnQ6IDA7IH0KCi5qcC1hdWRpby1zdHJlYW0gLmpwLWludGVyZmFjZSAuanAtdm9sdW1lLWJhciB7CiAgd2lkdGg6IDk3cHg7CiAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgIzE4MDkyMDsKICBwYWRkaW5nLXJpZ2h0OiAxcHg7IH0KCi5qcC12aWRlbyAuanAtdm9sdW1lLWJhciB7CiAgdG9wOiAwOwogIGxlZnQ6IDA7CiAgd2lkdGg6IDk1cHg7CiAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgIzE4MDkyMDsKICBwYWRkaW5nLXJpZ2h0OiAxcHg7CiAgbWFyZ2luLXRvcDogMzBweDsgfQoKLmpwLXZvbHVtZS1iYXItdmFsdWUgewogIGJhY2tncm91bmQ6IHVybCgiLi4vaW1hZ2UvanBsYXllci5waW5rLmZsYWcuanBnIikgMHB4IC0zMjBweCByZXBlYXQteDsKICBoZWlnaHQ6IDRweDsgfQoKLyogQGVuZCAqLwovKiBAZ3JvdXAgY3VycmVudCB0aW1lIGFuZCBkdXJhdGlvbiAqLwouanAtY3VycmVudC10aW1lLCAuanAtZHVyYXRpb24gewogIHdpZHRoOiA3MHB4OwogIGZvbnQtc2l6ZTogLjVlbTsKICBjb2xvcjogIzhjN2E5OTsgfQoKLmpwLWN1cnJlbnQtdGltZSB7CiAgZmxvYXQ6IGxlZnQ7CiAgY3Vyc29yOiBkZWZhdWx0OyB9CgouanAtZHVyYXRpb24gewogIGZsb2F0OiByaWdodDsKICB0ZXh0LWFsaWduOiByaWdodDsKICBjdXJzb3I6IHBvaW50ZXI7IH0KCi5qcC12aWRlbyAuanAtY3VycmVudC10aW1lIHsKICBwYWRkaW5nLWxlZnQ6IDIwcHg7IH0KCi5qcC12aWRlbyAuanAtZHVyYXRpb24gewogIHBhZGRpbmctcmlnaHQ6IDIwcHg7IH0KCi8qIEBlbmQgKi8KLyogQGdyb3VwIHBsYXlsaXN0ICovCi5qcC1kZXRhaWxzIHsKICBmb250LXNpemU6IC43ZW07CiAgbWFyZ2luOiAwOwogIHBhZGRpbmc6IDA7IH0KCi5qcC1kZXRhaWxzIC5qcC10aXRsZSB7CiAgcGFkZGluZzogMDsKICBtYXJnaW46IDA7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgY3Vyc29yOiBkZWZhdWx0OyB9CgouanAtdmlkZW8gLmpwLWRldGFpbHMgewogIG1hcmdpbjogMCA5MHB4IDEwcHg7IH0KCi5qcC1wbGF5bGlzdCB1bCB7CiAgbGlzdC1zdHlsZS10eXBlOiBub25lOwogIGZvbnQtc2l6ZTogLjdlbTsKICBtYXJnaW46IDA7CiAgcGFkZGluZzogMDsgfQoKLmpwLXZpZGVvIC5qcC1wbGF5bGlzdCB1bCB7CiAgbWFyZ2luOiAwIDIwcHg7IH0KCi5qcC1wbGF5bGlzdCBsaSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHBhZGRpbmc6IDJweCAwOwogIGJvcmRlci10b3A6IDFweCBzb2xpZCAjNTU0NDYxOwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjMTgwYTFmOwogIG92ZXJmbG93OiBoaWRkZW47IH0KCi8qIE5vdGUgdGhhdCB0aGUgZmlyc3QtY2hpbGQgKElFNikgYW5kIGxhc3QtY2hpbGQgKElFNi83LzgpIHNlbGVjdG9ycyBkbyBub3Qgd29yayBvbiBJRSAqLwpkaXYuanAtdHlwZS1wbGF5bGlzdCBkaXYuanAtcGxheWxpc3QgbGk6Zmlyc3QtY2hpbGQgewogIGJvcmRlci10b3A6IG5vbmU7CiAgcGFkZGluZy10b3A6IDNweDsgfQoKZGl2LmpwLXR5cGUtcGxheWxpc3QgZGl2LmpwLXBsYXlsaXN0IGxpOmxhc3QtY2hpbGQgewogIGJvcmRlci1ib3R0b206IG5vbmU7CiAgcGFkZGluZy1ib3R0b206IDNweDsgfQoKZGl2LmpwLXR5cGUtcGxheWxpc3QgZGl2LmpwLXBsYXlsaXN0IGEgewogIGNvbG9yOiAjZmZmOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfQoKZGl2LmpwLXR5cGUtcGxheWxpc3QgZGl2LmpwLXBsYXlsaXN0IGE6aG92ZXIgewogIGNvbG9yOiAjZTg5MmU5OyB9CgpkaXYuanAtdHlwZS1wbGF5bGlzdCBkaXYuanAtcGxheWxpc3QgbGkuanAtcGxheWxpc3QtY3VycmVudCB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzI2MTAyZTsKICBtYXJnaW46IDAgLTIwcHg7CiAgcGFkZGluZzogMnB4IDIwcHg7CiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICMyNjEwMmU7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICMyNjEwMmU7IH0KCmRpdi5qcC10eXBlLXBsYXlsaXN0IGRpdi5qcC1wbGF5bGlzdCBsaS5qcC1wbGF5bGlzdC1jdXJyZW50IGEgewogIGNvbG9yOiAjZTg5MmU5OyB9CgpkaXYuanAtdHlwZS1wbGF5bGlzdCBkaXYuanAtcGxheWxpc3QgYS5qcC1wbGF5bGlzdC1pdGVtLXJlbW92ZSB7CiAgZmxvYXQ6IHJpZ2h0OwogIGRpc3BsYXk6IGlubGluZTsKICB0ZXh0LWFsaWduOiByaWdodDsKICBtYXJnaW4tbGVmdDogMTBweDsKICBmb250LXdlaWdodDogYm9sZDsKICBjb2xvcjogIzhDN0E5OTsgfQoKZGl2LmpwLXR5cGUtcGxheWxpc3QgZGl2LmpwLXBsYXlsaXN0IGEuanAtcGxheWxpc3QtaXRlbS1yZW1vdmU6aG92ZXIgewogIGNvbG9yOiAjRTg5MkU5OyB9CgpkaXYuanAtdHlwZS1wbGF5bGlzdCBkaXYuanAtcGxheWxpc3Qgc3Bhbi5qcC1mcmVlLW1lZGlhIHsKICBmbG9hdDogcmlnaHQ7CiAgZGlzcGxheTogaW5saW5lOwogIHRleHQtYWxpZ246IHJpZ2h0OwogIGNvbG9yOiAjOEM3QTk5OyB9CgpkaXYuanAtdHlwZS1wbGF5bGlzdCBkaXYuanAtcGxheWxpc3Qgc3Bhbi5qcC1mcmVlLW1lZGlhIGEgewogIGNvbG9yOiAjOEM3QTk5OyB9CgpkaXYuanAtdHlwZS1wbGF5bGlzdCBkaXYuanAtcGxheWxpc3Qgc3Bhbi5qcC1mcmVlLW1lZGlhIGE6aG92ZXIgewogIGNvbG9yOiAjRTg5MkU5OyB9CgpzcGFuLmpwLWFydGlzdCB7CiAgZm9udC1zaXplOiAuOGVtOwogIGNvbG9yOiAjOEM3QTk5OyB9CgovKiBAZW5kICovCi5qcC12aWRlbyAuanAtdmlkZW8tcGxheSB7CiAgd2lkdGg6IDEwMCU7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICAvKiBJbXBvcnRhbnQgZm9yIG5lc3RlZCBuZWdhdGl2ZSBtYXJnaW5zIHRvIHdvcmsgaW4gbW9kZXJuIGJyb3dzZXJzICovIH0KCi5qcC12aWRlby0yNzBwIC5qcC12aWRlby1wbGF5IHsKICBtYXJnaW4tdG9wOiAtMjcwcHg7CiAgaGVpZ2h0OiAyNzBweDsgfQoKLmpwLXZpZGVvLTM2MHAgLmpwLXZpZGVvLXBsYXkgewogIG1hcmdpbi10b3A6IC0zNjBweDsKICBoZWlnaHQ6IDM2MHB4OyB9CgouanAtdmlkZW8tZnVsbCAuanAtdmlkZW8tcGxheSB7CiAgaGVpZ2h0OiAxMDAlOyB9CgouanAtdmlkZW8tcGxheS1pY29uIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDExMnB4OwogIGhlaWdodDogMTAwcHg7CiAgbWFyZ2luLWxlZnQ6IC01NnB4OwogIG1hcmdpbi10b3A6IC01MHB4OwogIGxlZnQ6IDUwJTsKICB0b3A6IDUwJTsKICBib3JkZXI6IG5vbmU7CiAgY3Vyc29yOiBwb2ludGVyOwogIGJhY2tncm91bmQ6IHVybCgiLi4vaW1hZ2UvanBsYXllci5waW5rLmZsYWcudmlkZW8ucGxheS5wbmciKSAwIDAgbm8tcmVwZWF0OwogIHRleHQtaW5kZW50OiAtOTk5OXB4OyB9CgouanAtdmlkZW8tcGxheS1pY29uOmZvY3VzIHsKICBiYWNrZ3JvdW5kOiB1cmwoIi4uL2ltYWdlL2pwbGF5ZXIucGluay5mbGFnLnZpZGVvLnBsYXkucG5nIikgMCAtMTAwcHggbm8tcmVwZWF0OyB9CgouanAtanBsYXllciBhdWRpbywKLmpwLWpwbGF5ZXIgewogIHdpZHRoOiAwcHg7CiAgaGVpZ2h0OiAwcHg7IH0KCi5qcC1qcGxheWVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwOyB9CgovKiBAZ3JvdXAgTk8gU09MVVRJT04gZXJyb3IgZmVlZGJhY2sgKi8KLmpwLW5vLXNvbHV0aW9uIHsKICBwYWRkaW5nOiA1cHg7CiAgZm9udC1zaXplOiAuOGVtOwogIGJhY2tncm91bmQtY29sb3I6ICMzYTJhNDU7CiAgYm9yZGVyLXRvcDogMnB4IHNvbGlkICM1NTQ0NjE7CiAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjNTU0NDYxOwogIGJvcmRlci1yaWdodDogMnB4IHNvbGlkICMxODBhMWY7CiAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICMxODBhMWY7CiAgY29sb3I6ICNGRkY7CiAgZGlzcGxheTogbm9uZTsgfQoKLmpwLW5vLXNvbHV0aW9uIGEgewogIGNvbG9yOiAjRkZGOyB9CgouanAtbm8tc29sdXRpb24gc3BhbiB7CiAgZm9udC1zaXplOiAxZW07CiAgZGlzcGxheTogYmxvY2s7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIGZvbnQtd2VpZ2h0OiBib2xkOyB9CgovKiBAZW5kICovCg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin/pink.flag/css/jplayer.pink.flag.min.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohIFBpbmsgRmxhZyBTa2luIGZvciBqUGxheWVyIDIuOS4yIH4gKGMpIDIwMDktMjAxNCBIYXBweXdvcm0gTHRkIH4gTUlUIExpY2Vuc2UgKi8uanAtYXVkaW8gOmZvY3VzLC5qcC1hdWRpby1zdHJlYW0gOmZvY3VzLC5qcC12aWRlbyA6Zm9jdXN7b3V0bGluZTowfS5qcC1hdWRpbyBidXR0b246Oi1tb3otZm9jdXMtaW5uZXIsLmpwLWF1ZGlvLXN0cmVhbSBidXR0b246Oi1tb3otZm9jdXMtaW5uZXIsLmpwLXZpZGVvIGJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0uanAtYXVkaW8sLmpwLWF1ZGlvLXN0cmVhbSwuanAtdmlkZW97Zm9udC1zaXplOjE2cHg7Zm9udC1mYW1pbHk6VmVyZGFuYSxBcmlhbCxzYW5zLXNlcmlmO2xpbmUtaGVpZ2h0OjEuNjtjb2xvcjojZmZmO2JvcmRlci10b3A6MXB4IHNvbGlkICM1NTQ0NjE7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICM1NTQ0NjE7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjMTgwYTFmO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICMxODBhMWY7YmFja2dyb3VuZC1jb2xvcjojM2EyYTQ1fS5qcC1hdWRpb3t3aWR0aDoyMDFweDtwYWRkaW5nOjIwcHh9LmpwLWF1ZGlvLXN0cmVhbXt3aWR0aDoxMDFweDtwYWRkaW5nOjIwcHggMjBweCAxMHB4fS5qcC12aWRlby0yNzBwe3dpZHRoOjQ4MHB4fS5qcC12aWRlby0zNjBwe3dpZHRoOjY0MHB4fS5qcC12aWRlby1mdWxse3dpZHRoOjQ4MHB4O2hlaWdodDoyNzBweDtwb3NpdGlvbjpzdGF0aWMhaW1wb3J0YW50O3Bvc2l0aW9uOnJlbGF0aXZlfS5qcC12aWRlby1mdWxsIGRpdiBkaXZ7ei1pbmRleDoxMDAwfS5qcC12aWRlby1mdWxsIC5qcC1qcGxheWVye3RvcDowO2xlZnQ6MDtwb3NpdGlvbjpmaXhlZCFpbXBvcnRhbnQ7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVufS5qcC12aWRlby1mdWxsIC5qcC1ndWl7cG9zaXRpb246Zml4ZWQhaW1wb3J0YW50O3Bvc2l0aW9uOnN0YXRpYzt0b3A6MDtsZWZ0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTt6LWluZGV4OjEwMDF9LmpwLXZpZGVvLWZ1bGwgLmpwLWludGVyZmFjZXtwb3NpdGlvbjphYnNvbHV0ZSFpbXBvcnRhbnQ7cG9zaXRpb246cmVsYXRpdmU7Ym90dG9tOjA7bGVmdDowfS5qcC1pbnRlcmZhY2V7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTAwJTtiYWNrZ3JvdW5kLWNvbG9yOiMzYTJhNDV9LmpwLXZpZGVvIC5qcC1jb250cm9scy1ob2xkZXJ7Y2xlYXI6Ym90aDt3aWR0aDo0NDBweDttYXJnaW46MCBhdXRvIDEwcHg7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVufS5qcC1hdWRpbyAuanAtY29udHJvbHMtaG9sZGVye2hlaWdodDo4MHB4fS5qcC1hdWRpby1zdHJlYW0gLmpwLWNvbnRyb2xzLWhvbGRlcntoZWlnaHQ6NTBweH0uanAtY29udHJvbHN7YmFja2dyb3VuZDp1cmwoLi4vaW1hZ2UvanBsYXllci5waW5rLmZsYWcuanBnKSBuby1yZXBlYXQ7cGFkZGluZzoxcHggMCAycHggMXB4O292ZXJmbG93OmhpZGRlbjt3aWR0aDoyMDFweDtoZWlnaHQ6MzRweH0uanAtYXVkaW8gLmpwLWNvbnRyb2xzLC5qcC1hdWRpby1zdHJlYW0gLmpwLWNvbnRyb2xze21hcmdpbjowIGF1dG99LmpwLWF1ZGlvLXN0cmVhbSAuanAtY29udHJvbHN7d2lkdGg6MTAwcHh9LmpwLXZpZGVvIC5qcC1jb250cm9sc3ttYXJnaW46MCAwIDAgMTE1cHg7ZmxvYXQ6bGVmdDtkaXNwbGF5OmlubGluZX0uanAtY29udHJvbHMgYnV0dG9ue2Rpc3BsYXk6YmxvY2s7ZmxvYXQ6bGVmdDtvdmVyZmxvdzpoaWRkZW47dGV4dC1pbmRlbnQ6LTk5OTlweDtoZWlnaHQ6MzRweDttYXJnaW46MCAxcHggMnB4IDA7cGFkZGluZzowO2JvcmRlcjpub25lO2N1cnNvcjpwb2ludGVyfS5qcC10eXBlLXNpbmdsZSAuanAtY29udHJvbHMgYnV0dG9ue3dpZHRoOjk5cHh9LmpwLXR5cGUtc2luZ2xlIC5qcC1wbGF5e2JhY2tncm91bmQ6dXJsKC4uL2ltYWdlL2pwbGF5ZXIucGluay5mbGFnLmpwZykgMCAtNDBweCBuby1yZXBlYXR9LmpwLXR5cGUtc2luZ2xlIC5qcC1wbGF5OmZvY3Vze2JhY2tncm91bmQ6dXJsKC4uL2ltYWdlL2pwbGF5ZXIucGluay5mbGFnLmpwZykgLTEwMHB4IC00MHB4IG5vLXJlcGVhdH0uanAtc3RhdGUtcGxheWluZyAuanAtdHlwZS1zaW5nbGUgLmpwLXBsYXl7YmFja2dyb3VuZDp1cmwoLi4vaW1hZ2UvanBsYXllci5waW5rLmZsYWcuanBnKSAwIC0xMjBweCBuby1yZXBlYXR9LmpwLXN0YXRlLXBsYXlpbmcgLmpwLXR5cGUtc2luZ2xlIC5qcC1wbGF5OmZvY3Vze2JhY2tncm91bmQ6dXJsKC4uL2ltYWdlL2pwbGF5ZXIucGluay5mbGFnLmpwZykgLTEwMHB4IC0xMjBweCBuby1yZXBlYXR9LmpwLWF1ZGlvLXN0cmVhbSAuanAtcGF1c2UsLmpwLWF1ZGlvLXN0cmVhbSAuanAtcGxheXtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICMxODA5MjB9LmpwLXR5cGUtc2luZ2xlIC5qcC1zdG9we2JhY2tncm91bmQ6dXJsKC4uL2ltYWdlL2pwbGF5ZXIucGluay5mbGFnLmpwZykgMCAtODBweCBuby1yZXBlYXR9LmpwLXR5cGUtc2luZ2xlIC5qcC1zdG9wOmZvY3Vze2JhY2tncm91bmQ6dXJsKC4uL2ltYWdlL2pwbGF5ZXIucGluay5mbGFnLmpwZykgLTEwMHB4IC04MHB4IG5vLXJlcGVhdH0uanAtdHlwZS1wbGF5bGlzdCAuanAtY29udHJvbHMgYnV0dG9ue3dpZHRoOjQ5cHh9LmpwLXR5cGUtcGxheWxpc3QgLmpwLXBsYXl7YmFja2dyb3VuZDp1cmwoLi4vaW1hZ2UvanBsYXllci5waW5rLmZsYWcuanBnKSAtMjRweCAtNDBweCBuby1yZXBlYXR9LmpwLXR5cGUtcGxheWxpc3QgLmpwLXBsYXk6Zm9jdXN7YmFja2dyb3VuZDp1cmwoLi4vaW1hZ2UvanBsYXllci5waW5rLmZsYWcuanBnKSAtMTI0cHggLTQwcHggbm8tcmVwZWF0fS5qcC1zdGF0ZS1wbGF5aW5nIGRpdi5qcC10eXBlLXBsYXlsaXN0IC5qcC1wbGF5e2JhY2tncm91bmQ6dXJsKC4uL2ltYWdlL2pwbGF5ZXIucGluay5mbGFnLmpwZykgLTI0cHggLTEyMHB4IG5vLXJlcGVhdH0uanAtc3RhdGUtcGxheWluZyBkaXYuanAtdHlwZS1wbGF5bGlzdCAuanAtcGxheTpmb2N1c3tiYWNrZ3JvdW5kOnVybCguLi9pbWFnZS9qcGxheWVyLnBpbmsuZmxhZy5qcGcpIC0xMjRweCAtMTIwcHggbm8tcmVwZWF0fS5qcC10eXBlLXBsYXlsaXN0IC5qcC1zdG9we2JhY2tncm91bmQ6dXJsKC4uL2ltYWdlL2pwbGF5ZXIucGluay5mbGFnLmpwZykgLTI0cHggLTgwcHggbm8tcmVwZWF0fS5qcC10eXBlLXBsYXlsaXN0IC5qcC1zdG9wOmZvY3Vze2JhY2tncm91bmQ6dXJsKC4uL2ltYWdlL2pwbGF5ZXIucGluay5mbGFnLmpwZykgLTEyNHB4IC04MHB4IG5vLXJlcGVhdH0uanAtdHlwZS1wbGF5bGlzdCAuanAtcHJldmlvdXN7YmFja2dyb3VuZDp1cmwoLi4vaW1hZ2UvanBsYXllci5waW5rLmZsYWcuanBnKSAtMjRweCAtMjAwcHggbm8tcmVwZWF0fS5qcC10eXBlLXBsYXlsaXN0IC5qcC1wcmV2aW91czpmb2N1c3tiYWNrZ3JvdW5kOnVybCguLi9pbWFnZS9qcGxheWVyLnBpbmsuZmxhZy5qcGcpIC0xMjRweCAtMjAwcHggbm8tcmVwZWF0fS5qcC10eXBlLXBsYXlsaXN0IC5qcC1uZXh0e2JhY2tncm91bmQ6dXJsKC4uL2ltYWdlL2pwbGF5ZXIucGluay5mbGFnLmpwZykgLTI0cHggLTE2MHB4IG5vLXJlcGVhdH0uanAtdHlwZS1wbGF5bGlzdCAuanAtbmV4dDpmb2N1c3tiYWNrZ3JvdW5kOnVybCguLi9pbWFnZS9qcGxheWVyLnBpbmsuZmxhZy5qcGcpIC0xMjRweCAtMTYwcHggbm8tcmVwZWF0fS5qcC10b2dnbGVze3BhZGRpbmc6MDttYXJnaW46MCBhdXRvO292ZXJmbG93OmhpZGRlbn0uanAtYXVkaW8gLmpwLXRvZ2dsZXN7d2lkdGg6NTVweH0uanAtYXVkaW8gLmpwLXR5cGUtc2luZ2xlIC5qcC10b2dnbGVze3dpZHRoOjI1cHh9LmpwLXZpZGVvIC5qcC10b2dnbGVze2Zsb2F0OmxlZnQ7d2lkdGg6MTA1cHg7bWFyZ2luOjEwcHggMCAwIDE1cHh9LmpwLXRvZ2dsZXMgYnV0dG9ue2Rpc3BsYXk6YmxvY2s7ZmxvYXQ6bGVmdDt3aWR0aDoyNXB4O2hlaWdodDoxOHB4O3RleHQtaW5kZW50Oi05OTk5cHg7bGluZS1oZWlnaHQ6MTAwJTtib3JkZXI6bm9uZTtjdXJzb3I6cG9pbnRlcn0uanAtZnVsbC1zY3JlZW57YmFja2dyb3VuZDp1cmwoLi4vaW1hZ2UvanBsYXllci5waW5rLmZsYWcuanBnKSAwIC00MjBweCBuby1yZXBlYXQ7bWFyZ2luLWxlZnQ6MTVweH0uanAtZnVsbC1zY3JlZW46Zm9jdXN7YmFja2dyb3VuZDp1cmwoLi4vaW1hZ2UvanBsYXllci5waW5rLmZsYWcuanBnKSAtMzBweCAtNDIwcHggbm8tcmVwZWF0fS5qcC1zdGF0ZS1mdWxsLXNjcmVlbiAuanAtZnVsbC1zY3JlZW57YmFja2dyb3VuZDp1cmwoLi4vaW1hZ2UvanBsYXllci5waW5rLmZsYWcuanBnKSAtNjBweCAtNDIwcHggbm8tcmVwZWF0fS5qcC1zdGF0ZS1mdWxsLXNjcmVlbiAuanAtZnVsbC1zY3JlZW46Zm9jdXN7YmFja2dyb3VuZDp1cmwoLi4vaW1hZ2UvanBsYXllci5waW5rLmZsYWcuanBnKSAtOTBweCAtNDIwcHggbm8tcmVwZWF0fS5qcC1yZXBlYXR7YmFja2dyb3VuZDp1cmwoLi4vaW1hZ2UvanBsYXllci5waW5rLmZsYWcuanBnKSAwIC00NDBweCBuby1yZXBlYXQ7bWFyZ2luLWxlZnQ6MH0uanAtcmVwZWF0OmZvY3Vze2JhY2tncm91bmQ6dXJsKC4uL2ltYWdlL2pwbGF5ZXIucGluay5mbGFnLmpwZykgLTMwcHggLTQ0MHB4IG5vLXJlcGVhdH0uanAtc3RhdGUtbG9vcGVkIC5qcC1yZXBlYXR7YmFja2dyb3VuZDp1cmwoLi4vaW1hZ2UvanBsYXllci5waW5rLmZsYWcuanBnKSAtNjBweCAtNDQwcHggbm8tcmVwZWF0fS5qcC1zdGF0ZS1sb29wZWQgLmpwLXJlcGVhdDpmb2N1c3tiYWNrZ3JvdW5kOnVybCguLi9pbWFnZS9qcGxheWVyLnBpbmsuZmxhZy5qcGcpIC05MHB4IC00NDBweCBuby1yZXBlYXR9LmpwLXNodWZmbGV7YmFja2dyb3VuZDp1cmwoLi4vaW1hZ2UvanBsYXllci5waW5rLmZsYWcuanBnKSAwIC00NjBweCBuby1yZXBlYXQ7bWFyZ2luLWxlZnQ6MTVweH0uanAtc2h1ZmZsZTpmb2N1c3tiYWNrZ3JvdW5kOnVybCguLi9pbWFnZS9qcGxheWVyLnBpbmsuZmxhZy5qcGcpIC0zMHB4IC00NjBweCBuby1yZXBlYXR9LmpwLXN0YXRlLXNodWZmbGVkIC5qcC1zaHVmZmxle2JhY2tncm91bmQ6dXJsKC4uL2ltYWdlL2pwbGF5ZXIucGluay5mbGFnLmpwZykgLTYwcHggLTQ2MHB4IG5vLXJlcGVhdH0uanAtc3RhdGUtc2h1ZmZsZWQgLmpwLXNodWZmbGU6Zm9jdXN7YmFja2dyb3VuZDp1cmwoLi4vaW1hZ2UvanBsYXllci5waW5rLmZsYWcuanBnKSAtOTBweCAtNDYwcHggbm8tcmVwZWF0fS5qcC1hdWRpbyAuanAtc2h1ZmZsZXttYXJnaW4tbGVmdDo1cHh9ZGl2LmpwLXNlZWtpbmctYmd7YmFja2dyb3VuZDp1cmwoLi4vaW1hZ2UvanBsYXllci5waW5rLmZsYWcuc2Vla2luZy5naWYpfS5qcC1wcm9ncmVzc3tiYWNrZ3JvdW5kOnVybCguLi9pbWFnZS9qcGxheWVyLnBpbmsuZmxhZy5qcGcpIDAgLTI0MHB4IG5vLXJlcGVhdDt3aWR0aDoxOTdweDtoZWlnaHQ6MTNweDtwYWRkaW5nOjAgMnB4IDJweDttYXJnaW4tYm90dG9tOjRweDtvdmVyZmxvdzpoaWRkZW59ZGl2LmpwLXZpZGVvIC5qcC1wcm9ncmVzc3tib3JkZXItdG9wOjFweCBzb2xpZCAjMTgwYTFmO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM1NTQ1NjA7d2lkdGg6MTAwJTtiYWNrZ3JvdW5kLWltYWdlOm5vbmU7cGFkZGluZzowfS5qcC1zZWVrLWJhcntiYWNrZ3JvdW5kOnVybCguLi9pbWFnZS9qcGxheWVyLnBpbmsuZmxhZy5qcGcpIDAgLTI2MHB4IHJlcGVhdC14O3dpZHRoOjA7aGVpZ2h0OjEwMCU7b3ZlcmZsb3c6aGlkZGVuO2N1cnNvcjpwb2ludGVyfS5qcC1wbGF5LWJhcntiYWNrZ3JvdW5kOnVybCguLi9pbWFnZS9qcGxheWVyLnBpbmsuZmxhZy5qcGcpIDAgLTI4MHB4IHJlcGVhdC14O3dpZHRoOjA7aGVpZ2h0OjEwMCU7b3ZlcmZsb3c6aGlkZGVufS5qcC1zdGF0ZS1uby12b2x1bWUgLmpwLXZvbHVtZS1jb250cm9sc3tkaXNwbGF5Om5vbmV9LmpwLWF1ZGlvIC5qcC12b2x1bWUtY29udHJvbHMsLmpwLWF1ZGlvLXN0cmVhbSAuanAtdm9sdW1lLWNvbnRyb2xze2hlaWdodDozMHB4fS5qcC12b2x1bWUtY29udHJvbHMgYnV0dG9ue3Bvc2l0aW9uOmFic29sdXRlO2Rpc3BsYXk6YmxvY2s7b3ZlcmZsb3c6aGlkZGVuO3RleHQtaW5kZW50Oi05OTk5cHg7bWFyZ2luOjA7cGFkZGluZzowO3dpZHRoOjE2cHg7aGVpZ2h0OjExcHg7Ym9yZGVyOm5vbmU7Y3Vyc29yOnBvaW50ZXJ9LmpwLWF1ZGlvIC5qcC12b2x1bWUtY29udHJvbHMgLmpwLW11dGUsLmpwLWF1ZGlvLXN0cmVhbSAuanAtdm9sdW1lLWNvbnRyb2xzIC5qcC1tdXRle3RvcDotNnB4O2xlZnQ6MH0uanAtYXVkaW8gLmpwLXZvbHVtZS1jb250cm9scyAuanAtdm9sdW1lLW1heCwuanAtYXVkaW8tc3RyZWFtIC5qcC12b2x1bWUtY29udHJvbHMgLmpwLXZvbHVtZS1tYXh7dG9wOi02cHg7cmlnaHQ6MH0uanAtdmlkZW8gLmpwLXZvbHVtZS1jb250cm9scyAuanAtbXV0ZSwuanAtdmlkZW8gLmpwLXZvbHVtZS1jb250cm9scyAuanAtdW5tdXRle2xlZnQ6MDt0b3A6MTRweH0uanAtdmlkZW8gLmpwLXZvbHVtZS1jb250cm9scyAuanAtdm9sdW1lLW1heHtsZWZ0Ojg0cHg7dG9wOjE0cHh9LmpwLXZvbHVtZS1jb250cm9scyAuanAtbXV0ZXtiYWNrZ3JvdW5kOnVybCguLi9pbWFnZS9qcGxheWVyLnBpbmsuZmxhZy5qcGcpIDAgLTMzMHB4IG5vLXJlcGVhdH0uanAtdm9sdW1lLWNvbnRyb2xzIC5qcC1tdXRlOmZvY3Vze2JhY2tncm91bmQ6dXJsKC4uL2ltYWdlL2pwbGF5ZXIucGluay5mbGFnLmpwZykgLTI1cHggLTMzMHB4IG5vLXJlcGVhdH0uanAtc3RhdGUtbXV0ZWQgLmpwLXZvbHVtZS1jb250cm9scyAuanAtbXV0ZXtiYWNrZ3JvdW5kOnVybCguLi9pbWFnZS9qcGxheWVyLnBpbmsuZmxhZy5qcGcpIC02MHB4IC0zMzBweCBuby1yZXBlYXR9LmpwLXN0YXRlLW11dGVkIC5qcC12b2x1bWUtY29udHJvbHMgLmpwLW11dGU6Zm9jdXN7YmFja2dyb3VuZDp1cmwoLi4vaW1hZ2UvanBsYXllci5waW5rLmZsYWcuanBnKSAtODVweCAtMzMwcHggbm8tcmVwZWF0fS5qcC12b2x1bWUtY29udHJvbHMgLmpwLXZvbHVtZS1tYXh7YmFja2dyb3VuZDp1cmwoLi4vaW1hZ2UvanBsYXllci5waW5rLmZsYWcuanBnKSAwIC0zNTBweCBuby1yZXBlYXR9LmpwLXZvbHVtZS1jb250cm9scyAuanAtdm9sdW1lLW1heDpmb2N1c3tiYWNrZ3JvdW5kOnVybCguLi9pbWFnZS9qcGxheWVyLnBpbmsuZmxhZy5qcGcpIC0yNXB4IC0zNTBweCBuby1yZXBlYXR9LmpwLXZvbHVtZS1iYXJ7YmFja2dyb3VuZDp1cmwoLi4vaW1hZ2UvanBsYXllci5waW5rLmZsYWcuanBnKSAwIC0zMDBweCByZXBlYXQteDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxOTdweDtoZWlnaHQ6NHB4O3BhZGRpbmc6MnB4IDJweCAxcHg7b3ZlcmZsb3c6aGlkZGVuO2N1cnNvcjpwb2ludGVyfS5qcC1hdWRpbyAuanAtaW50ZXJmYWNlIC5qcC12b2x1bWUtYmFyLC5qcC1hdWRpby1zdHJlYW0gLmpwLWludGVyZmFjZSAuanAtdm9sdW1lLWJhcnt0b3A6MTBweDtsZWZ0OjB9LmpwLWF1ZGlvLXN0cmVhbSAuanAtaW50ZXJmYWNlIC5qcC12b2x1bWUtYmFye3dpZHRoOjk3cHg7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjMTgwOTIwO3BhZGRpbmctcmlnaHQ6MXB4fS5qcC12aWRlbyAuanAtdm9sdW1lLWJhcnt0b3A6MDtsZWZ0OjA7d2lkdGg6OTVweDtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICMxODA5MjA7cGFkZGluZy1yaWdodDoxcHg7bWFyZ2luLXRvcDozMHB4fS5qcC12b2x1bWUtYmFyLXZhbHVle2JhY2tncm91bmQ6dXJsKC4uL2ltYWdlL2pwbGF5ZXIucGluay5mbGFnLmpwZykgMCAtMzIwcHggcmVwZWF0LXg7aGVpZ2h0OjRweH0uanAtY3VycmVudC10aW1lLC5qcC1kdXJhdGlvbnt3aWR0aDo3MHB4O2ZvbnQtc2l6ZTouNWVtO2NvbG9yOiM4YzdhOTl9LmpwLWN1cnJlbnQtdGltZXtmbG9hdDpsZWZ0O2N1cnNvcjpkZWZhdWx0fS5qcC1kdXJhdGlvbntmbG9hdDpyaWdodDt0ZXh0LWFsaWduOnJpZ2h0O2N1cnNvcjpwb2ludGVyfS5qcC12aWRlbyAuanAtY3VycmVudC10aW1le3BhZGRpbmctbGVmdDoyMHB4fS5qcC12aWRlbyAuanAtZHVyYXRpb257cGFkZGluZy1yaWdodDoyMHB4fS5qcC1kZXRhaWxze2ZvbnQtc2l6ZTouN2VtO21hcmdpbjowO3BhZGRpbmc6MH0uanAtZGV0YWlscyAuanAtdGl0bGV7cGFkZGluZzowO21hcmdpbjowO292ZXJmbG93OmhpZGRlbjt0ZXh0LWFsaWduOmNlbnRlcjtjdXJzb3I6ZGVmYXVsdH0uanAtdmlkZW8gLmpwLWRldGFpbHN7bWFyZ2luOjAgOTBweCAxMHB4fS5qcC1wbGF5bGlzdCB1bHtsaXN0LXN0eWxlLXR5cGU6bm9uZTtmb250LXNpemU6LjdlbTttYXJnaW46MDtwYWRkaW5nOjB9LmpwLXZpZGVvIC5qcC1wbGF5bGlzdCB1bHttYXJnaW46MCAyMHB4fS5qcC1wbGF5bGlzdCBsaXtwb3NpdGlvbjpyZWxhdGl2ZTtwYWRkaW5nOjJweCAwO2JvcmRlci10b3A6MXB4IHNvbGlkICM1NTQ0NjE7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzE4MGExZjtvdmVyZmxvdzpoaWRkZW59ZGl2LmpwLXR5cGUtcGxheWxpc3QgZGl2LmpwLXBsYXlsaXN0IGxpOmZpcnN0LWNoaWxke2JvcmRlci10b3A6bm9uZTtwYWRkaW5nLXRvcDozcHh9ZGl2LmpwLXR5cGUtcGxheWxpc3QgZGl2LmpwLXBsYXlsaXN0IGxpOmxhc3QtY2hpbGR7Ym9yZGVyLWJvdHRvbTpub25lO3BhZGRpbmctYm90dG9tOjNweH1kaXYuanAtdHlwZS1wbGF5bGlzdCBkaXYuanAtcGxheWxpc3QgYXtjb2xvcjojZmZmO3RleHQtZGVjb3JhdGlvbjpub25lfWRpdi5qcC10eXBlLXBsYXlsaXN0IGRpdi5qcC1wbGF5bGlzdCBhOmhvdmVye2NvbG9yOiNlODkyZTl9ZGl2LmpwLXR5cGUtcGxheWxpc3QgZGl2LmpwLXBsYXlsaXN0IGxpLmpwLXBsYXlsaXN0LWN1cnJlbnR7YmFja2dyb3VuZC1jb2xvcjojMjYxMDJlO21hcmdpbjowIC0yMHB4O3BhZGRpbmc6MnB4IDIwcHg7Ym9yZGVyLXRvcDoxcHggc29saWQgIzI2MTAyZTtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjMjYxMDJlfWRpdi5qcC10eXBlLXBsYXlsaXN0IGRpdi5qcC1wbGF5bGlzdCBsaS5qcC1wbGF5bGlzdC1jdXJyZW50IGF7Y29sb3I6I2U4OTJlOX1kaXYuanAtdHlwZS1wbGF5bGlzdCBkaXYuanAtcGxheWxpc3QgYS5qcC1wbGF5bGlzdC1pdGVtLXJlbW92ZXtmbG9hdDpyaWdodDtkaXNwbGF5OmlubGluZTt0ZXh0LWFsaWduOnJpZ2h0O21hcmdpbi1sZWZ0OjEwcHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOiM4QzdBOTl9ZGl2LmpwLXR5cGUtcGxheWxpc3QgZGl2LmpwLXBsYXlsaXN0IGEuanAtcGxheWxpc3QtaXRlbS1yZW1vdmU6aG92ZXJ7Y29sb3I6I0U4OTJFOX1kaXYuanAtdHlwZS1wbGF5bGlzdCBkaXYuanAtcGxheWxpc3Qgc3Bhbi5qcC1mcmVlLW1lZGlhe2Zsb2F0OnJpZ2h0O2Rpc3BsYXk6aW5saW5lO3RleHQtYWxpZ246cmlnaHQ7Y29sb3I6IzhDN0E5OX1kaXYuanAtdHlwZS1wbGF5bGlzdCBkaXYuanAtcGxheWxpc3Qgc3Bhbi5qcC1mcmVlLW1lZGlhIGF7Y29sb3I6IzhDN0E5OX1kaXYuanAtdHlwZS1wbGF5bGlzdCBkaXYuanAtcGxheWxpc3Qgc3Bhbi5qcC1mcmVlLW1lZGlhIGE6aG92ZXJ7Y29sb3I6I0U4OTJFOX1zcGFuLmpwLWFydGlzdHtmb250LXNpemU6LjhlbTtjb2xvcjojOEM3QTk5fS5qcC12aWRlbyAuanAtdmlkZW8tcGxheXt3aWR0aDoxMDAlO292ZXJmbG93OmhpZGRlbn0uanAtdmlkZW8tMjcwcCAuanAtdmlkZW8tcGxheXttYXJnaW4tdG9wOi0yNzBweDtoZWlnaHQ6MjcwcHh9LmpwLXZpZGVvLTM2MHAgLmpwLXZpZGVvLXBsYXl7bWFyZ2luLXRvcDotMzYwcHg7aGVpZ2h0OjM2MHB4fS5qcC12aWRlby1mdWxsIC5qcC12aWRlby1wbGF5e2hlaWdodDoxMDAlfS5qcC12aWRlby1wbGF5LWljb257cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jazt3aWR0aDoxMTJweDtoZWlnaHQ6MTAwcHg7bWFyZ2luLWxlZnQ6LTU2cHg7bWFyZ2luLXRvcDotNTBweDtsZWZ0OjUwJTt0b3A6NTAlO2JvcmRlcjpub25lO2N1cnNvcjpwb2ludGVyO2JhY2tncm91bmQ6dXJsKC4uL2ltYWdlL2pwbGF5ZXIucGluay5mbGFnLnZpZGVvLnBsYXkucG5nKSBuby1yZXBlYXQ7dGV4dC1pbmRlbnQ6LTk5OTlweH0uanAtdmlkZW8tcGxheS1pY29uOmZvY3Vze2JhY2tncm91bmQ6dXJsKC4uL2ltYWdlL2pwbGF5ZXIucGluay5mbGFnLnZpZGVvLnBsYXkucG5nKSAwIC0xMDBweCBuby1yZXBlYXR9LmpwLWpwbGF5ZXIsLmpwLWpwbGF5ZXIgYXVkaW97d2lkdGg6MDtoZWlnaHQ6MH0uanAtanBsYXllcntiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9LmpwLW5vLXNvbHV0aW9ue3BhZGRpbmc6NXB4O2ZvbnQtc2l6ZTouOGVtO2JhY2tncm91bmQtY29sb3I6IzNhMmE0NTtib3JkZXItdG9wOjJweCBzb2xpZCAjNTU0NDYxO2JvcmRlci1sZWZ0OjJweCBzb2xpZCAjNTU0NDYxO2JvcmRlci1yaWdodDoycHggc29saWQgIzE4MGExZjtib3JkZXItYm90dG9tOjJweCBzb2xpZCAjMTgwYTFmO2NvbG9yOiNGRkY7ZGlzcGxheTpub25lfS5qcC1uby1zb2x1dGlvbiBhe2NvbG9yOiNGRkZ9LmpwLW5vLXNvbHV0aW9uIHNwYW57Zm9udC1zaXplOjFlbTtkaXNwbGF5OmJsb2NrO3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtd2VpZ2h0OjcwMH0=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin/pink.flag/image/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin/pink.flag/image/jplayer.pink.flag.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin/pink.flag/image/jplayer.pink.flag.seeking.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin/pink.flag/image/jplayer.pink.flag.video.play.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin/pink.flag/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin/pink.flag/jplayer.pink.flag.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogU2tpbiBmb3IgalBsYXllciBQbHVnaW4gKGpRdWVyeSBKYXZhU2NyaXB0IExpYnJhcnkpCiAqIGh0dHA6Ly93d3cuanBsYXllci5vcmcKICoKICogU2tpbiBOYW1lOiBQaW5rIEZsYWcKICoKICogQ29weXJpZ2h0IChjKSAyMDEyIEhhcHB5d29ybSBMdGQKICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCBHUEwgbGljZW5zZXMuCiAqICAtIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwCiAqICAtIGh0dHA6Ly93d3cuZ251Lm9yZy9jb3B5bGVmdC9ncGwuaHRtbAogKgogKiBBdXRob3I6IFNpbHZpYSBCZW52ZW51dGkKICogU2tpbiBWZXJzaW9uOiAxLjIgKGpQbGF5ZXIgMi4yLjApCiAqIERhdGU6IDIybmQgT2N0b2JlciAyMDEyCiAqLwoKZGl2LmpwLWF1ZGlvLApkaXYuanAtYXVkaW8tc3RyZWFtLApkaXYuanAtdmlkZW8gewoKCS8qIEVkaXQgdGhlIGZvbnQtc2l6ZSB0byBjb3VudGVyYWN0IGluaGVyaXRlZCBmb250IHNpemluZy4KCSAqIEVnLiAxLjI1ZW0gPSAxIC8gMC44ZW0KCSAqLwoKCWZvbnQtc2l6ZToxLjI1ZW07IC8qIDEuMjVlbSBmb3IgdGVzdGluZyBpbiBzaXRlIHBhZ2VzICovIC8qIE5vIHBhcmVudCBDU1MgdGhhdCBjYW4gZWZmZWN0IHRoZSBzaXplIGluIHRoZSBkZW1vcyBaSVAgKi8KCglmb250LWZhbWlseTpWZXJkYW5hLCBBcmlhbCwgc2Fucy1zZXJpZjsKCWxpbmUtaGVpZ2h0OjEuNjsKCWNvbG9yOiAjZmZmOwoJYm9yZGVyLXRvcDoxcHggc29saWQgIzU1NDQ2MTsKCWJvcmRlci1sZWZ0OjFweCBzb2xpZCAjNTU0NDYxOwoJYm9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjMTgwYTFmOwoJYm9yZGVyLWJvdHRvbToxcHggc29saWQgIzE4MGExZjsKCWJhY2tncm91bmQtY29sb3I6IzNhMmE0NTsKfQpkaXYuanAtYXVkaW8gewoJd2lkdGg6MjAxcHg7CglwYWRkaW5nOjIwcHg7Cn0KCmRpdi5qcC1hdWRpby1zdHJlYW0gewoJd2lkdGg6MTAxcHg7CglwYWRkaW5nOjIwcHggMjBweCAxMHB4IDIwcHg7Cn0KCmRpdi5qcC12aWRlby0yNzBwIHsKCXdpZHRoOjQ4MHB4Owp9CmRpdi5qcC12aWRlby0zNjBwIHsKCXdpZHRoOjY0MHB4Owp9CmRpdi5qcC12aWRlby1mdWxsIHsKCS8qIFJ1bGVzIGZvciBJRTYgKGZ1bGwtc2NyZWVuKSAqLwoJd2lkdGg6NDgwcHg7CgloZWlnaHQ6MjcwcHg7CgkvKiBSdWxlcyBmb3IgSUU3IChmdWxsLXNjcmVlbikgLSBPdGhlcndpc2UgdGhlIHJlbGF0aXZlIGNvbnRhaW5lciBjYXVzZXMgb3RoZXIgcGFnZSBpdGVtcyB0aGF0IGFyZSBub3QgcG9zaXRpb246c3RhdGljIChkZWZhdWx0KSB0byBhcHBlYXIgb3ZlciB0aGUgdmlkZW8vZ3VpLiAqLwoJcG9zaXRpb246c3RhdGljICFpbXBvcnRhbnQ7IHBvc2l0aW9uOnJlbGF0aXZlOwp9CgovKiBUaGUgei1pbmRleCBydWxlIGlzIGRlZmluZWQgaW4gdGhpcyBtYW5uZXIgdG8gZW5hYmxlIFBvcGNvcm4gcGx1Z2lucyB0aGF0IGFkZCBvdmVybGF5cyB0byB2aWRlbyBhcmVhLiBFRy4gU3VidGl0bGVzLiAqLwpkaXYuanAtdmlkZW8tZnVsbCBkaXYgZGl2IHsKCXotaW5kZXg6MTAwMDsKfQoKZGl2LmpwLXZpZGVvLWZ1bGwgZGl2LmpwLWpwbGF5ZXIgewoJdG9wOiAwOwoJbGVmdDogMDsKCXBvc2l0aW9uOiBmaXhlZCAhaW1wb3J0YW50OyBwb3NpdGlvbjogcmVsYXRpdmU7IC8qIFJ1bGVzIGZvciBJRTYgKGZ1bGwtc2NyZWVuKSAqLwoJb3ZlcmZsb3c6IGhpZGRlbjsKfQoKZGl2LmpwLXZpZGVvLWZ1bGwgZGl2LmpwLWd1aSB7Cglwb3NpdGlvbjogZml4ZWQgIWltcG9ydGFudDsgcG9zaXRpb246IHN0YXRpYzsgLyogUnVsZXMgZm9yIElFNiAoZnVsbC1zY3JlZW4pICovCgl0b3A6IDA7CglsZWZ0OiAwOwoJd2lkdGg6MTAwJTsKCWhlaWdodDoxMDAlOwoJei1pbmRleDoxMDAxOyAvKiAxIGxheWVyIGFib3ZlIHRoZSBvdGhlcnMuICovCn0KZGl2LmpwLXZpZGVvLWZ1bGwgZGl2LmpwLWludGVyZmFjZSB7Cglwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDsgcG9zaXRpb246IHJlbGF0aXZlOyAvKiBSdWxlcyBmb3IgSUU2IChmdWxsLXNjcmVlbikgKi8KCWJvdHRvbTogMDsKCWxlZnQ6IDA7Cn0KCmRpdi5qcC1pbnRlcmZhY2UgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJd2lkdGg6MTAwJTsKCWJhY2tncm91bmQtY29sb3I6IzNhMmE0NTsgLyogUmVxdWlyZWQgZm9yIHRoZSBmdWxsIHNjcmVlbiAqLwp9CgoKZGl2LmpwLWF1ZGlvIC5qcC1pbnRlcmZhY2UgewoJaGVpZ2h0OiA4MHB4OwoJcGFkZGluZy10b3A6MzBweDsKfQoKZGl2LmpwLWF1ZGlvLXN0cmVhbSAuanAtaW50ZXJmYWNlIHsKCWhlaWdodDogNTBweDsKCXBhZGRpbmctdG9wOjMwcHg7Cn0KCi8qIEBncm91cCBDT05UUk9MUyAqLwoKZGl2LmpwLWNvbnRyb2xzLWhvbGRlciB7CgljbGVhcjogYm90aDsKCXdpZHRoOjQ0MHB4OwoJbWFyZ2luOjAgYXV0byAxMHB4IGF1dG87Cglwb3NpdGlvbjogcmVsYXRpdmU7CglvdmVyZmxvdzpoaWRkZW47Cn0KCmRpdi5qcC1pbnRlcmZhY2UgdWwuanAtY29udHJvbHMgewoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLnBpbmsuZmxhZy5qcGciKSAwIDAgbm8tcmVwZWF0OwoJbGlzdC1zdHlsZS10eXBlOm5vbmU7CglwYWRkaW5nOiAxcHggMCAycHggMXB4OwoJb3ZlcmZsb3c6aGlkZGVuOwoJd2lkdGg6IDIwMXB4OwoJaGVpZ2h0OiAzNHB4Owp9CgpkaXYuanAtYXVkaW8gdWwuanAtY29udHJvbHMsCmRpdi5qcC1hdWRpby1zdHJlYW0gdWwuanAtY29udHJvbHMgewoJbWFyZ2luOjAgYXV0bzsKfQoKZGl2LmpwLWF1ZGlvLXN0cmVhbSB1bC5qcC1jb250cm9scyB7Cgl3aWR0aDogMTAwcHg7Cn0KCmRpdi5qcC12aWRlbyB1bC5qcC1jb250cm9scyB7CgltYXJnaW46MCAwIDAgMTE1cHg7CglmbG9hdDpsZWZ0OwoJZGlzcGxheTppbmxpbmU7IC8qIG5lZWQgdGhpcyB0byBmaXggSUU2IGRvdWJsZSBtYXJnaW4gKi8KfQoKZGl2LmpwLWludGVyZmFjZSB1bC5qcC1jb250cm9scyBsaSB7CglkaXNwbGF5OmlubGluZTsKCWZsb2F0OiBsZWZ0Owp9CmRpdi5qcC1pbnRlcmZhY2UgdWwuanAtY29udHJvbHMgYSB7CglkaXNwbGF5OmJsb2NrOwoJb3ZlcmZsb3c6aGlkZGVuOwoJdGV4dC1pbmRlbnQ6LTk5OTlweDsKCWhlaWdodDogMzRweDsKCW1hcmdpbjogMCAxcHggMnB4IDA7CglwYWRkaW5nOiAwOwp9CgoKLyogQGdyb3VwIHNpbmdsZSBwbGF5ZXIgY29udHJvbHMgKi8KCmRpdi5qcC10eXBlLXNpbmdsZSAgLmpwLWNvbnRyb2xzIGxpIGF7Cgl3aWR0aDogOTlweDsKfQoKZGl2LmpwLXR5cGUtc2luZ2xlICAuanAtcGxheSB7CgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIucGluay5mbGFnLmpwZyIpIDBweCAtNDBweCBuby1yZXBlYXQ7Cn0KCmRpdi5qcC10eXBlLXNpbmdsZSAgLmpwLXBsYXk6aG92ZXIgewoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLnBpbmsuZmxhZy5qcGciKSAtMTAwcHggLTQwcHggbm8tcmVwZWF0Owp9CgpkaXYuanAtdHlwZS1zaW5nbGUgIC5qcC1wYXVzZSB7CgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIucGluay5mbGFnLmpwZyIpIDBweCAtMTIwcHggbm8tcmVwZWF0Owp9CgpkaXYuanAtdHlwZS1zaW5nbGUgIC5qcC1wYXVzZTpob3ZlciB7CgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIucGluay5mbGFnLmpwZyIpIC0xMDBweCAtMTIwcHggbm8tcmVwZWF0Owp9CgovKiBUaGUgcmlnaHQgYm9yZGVyIGlzIG5vcm1hbGx5IGluIHRoZSB1bCBiYWNrZ3JvdW5kIGltYWdlLiAqLwpkaXYuanAtYXVkaW8tc3RyZWFtIC5qcC1wbGF5LApkaXYuanAtYXVkaW8tc3RyZWFtIC5qcC1wYXVzZSB7Cglib3JkZXItcmlnaHQ6MXB4IHNvbGlkICMxODA5MjA7Cn0KCmRpdi5qcC10eXBlLXNpbmdsZSAgLmpwLXN0b3AgewoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLnBpbmsuZmxhZy5qcGciKSAwcHggLTgwcHggbm8tcmVwZWF0Owp9CgpkaXYuanAtdHlwZS1zaW5nbGUgIC5qcC1zdG9wOmhvdmVyIHsKCWJhY2tncm91bmQ6IHVybCgianBsYXllci5waW5rLmZsYWcuanBnIikgLTEwMHB4IC04MHB4IG5vLXJlcGVhdDsKfQoKLyogQGVuZCAqLwoKLyogQGdyb3VwIHBsYXlsaXN0IHBsYXllciBjb250cm9scyAqLwoKZGl2LmpwLXR5cGUtcGxheWxpc3QgLmpwLWNvbnRyb2xzIGxpIGF7Cgl3aWR0aDogNDlweDsKfQoKZGl2LmpwLXR5cGUtcGxheWxpc3QgLmpwLXBsYXkgewoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLnBpbmsuZmxhZy5qcGciKSAtMjRweCAtNDBweCBuby1yZXBlYXQ7Cn0KCmRpdi5qcC10eXBlLXBsYXlsaXN0IC5qcC1wbGF5OmhvdmVyIHsKCWJhY2tncm91bmQ6IHVybCgianBsYXllci5waW5rLmZsYWcuanBnIikgLTEyNHB4IC00MHB4IG5vLXJlcGVhdDsKfQoKZGl2LmpwLXR5cGUtcGxheWxpc3QgLmpwLXBhdXNlIHsKCWJhY2tncm91bmQ6IHVybCgianBsYXllci5waW5rLmZsYWcuanBnIikgLTI0cHggLTEyMHB4IG5vLXJlcGVhdDsKfQoKZGl2LmpwLXR5cGUtcGxheWxpc3QgLmpwLXBhdXNlOmhvdmVyIHsKCWJhY2tncm91bmQ6IHVybCgianBsYXllci5waW5rLmZsYWcuanBnIikgLTEyNHB4IC0xMjBweCBuby1yZXBlYXQ7Cn0KCmRpdi5qcC10eXBlLXBsYXlsaXN0IC5qcC1zdG9wIHsKCWJhY2tncm91bmQ6IHVybCgianBsYXllci5waW5rLmZsYWcuanBnIikgLTI0cHggLTgwcHggbm8tcmVwZWF0Owp9CgpkaXYuanAtdHlwZS1wbGF5bGlzdCAuanAtc3RvcDpob3ZlciB7CgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIucGluay5mbGFnLmpwZyIpIC0xMjRweCAtODBweCBuby1yZXBlYXQ7Cn0KCmRpdi5qcC10eXBlLXBsYXlsaXN0IC5qcC1wcmV2aW91cyB7CgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIucGluay5mbGFnLmpwZyIpIC0yNHB4IC0yMDBweCBuby1yZXBlYXQ7Cn0KCmRpdi5qcC10eXBlLXBsYXlsaXN0IC5qcC1wcmV2aW91czpob3ZlciB7CgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIucGluay5mbGFnLmpwZyIpIC0xMjRweCAtMjAwcHggbm8tcmVwZWF0Owp9CgpkaXYuanAtdHlwZS1wbGF5bGlzdCAuanAtbmV4dCB7CgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIucGluay5mbGFnLmpwZyIpIC0yNHB4IC0xNjBweCBuby1yZXBlYXQ7Cn0KCmRpdi5qcC10eXBlLXBsYXlsaXN0IC5qcC1uZXh0OmhvdmVyIHsKCWJhY2tncm91bmQ6IHVybCgianBsYXllci5waW5rLmZsYWcuanBnIikgLTEyNHB4IC0xNjBweCBuby1yZXBlYXQ7Cn0KCi8qIEBlbmQgKi8KCi8qIEBlbmQgKi8KCgoKCi8qIEBncm91cCBUT0dHTEVTICovCgp1bC5qcC10b2dnbGVzIHsKCWxpc3Qtc3R5bGUtdHlwZTpub25lOwoJcGFkZGluZzowOwoJbWFyZ2luOjAgYXV0bzsKCW92ZXJmbG93OmhpZGRlbjsKfQoKZGl2LmpwLWF1ZGlvIHVsLmpwLXRvZ2dsZXMgewoJd2lkdGg6NTVweDsKfQoKZGl2LmpwLWF1ZGlvIC5qcC10eXBlLXNpbmdsZSB1bC5qcC10b2dnbGVzIHsKCXdpZHRoOjI1cHg7Cn0KCmRpdi5qcC12aWRlbyB1bC5qcC10b2dnbGVzIHsKCXdpZHRoOjEwMHB4OwoJbWFyZ2luLXRvcDogMTBweDsKfQoKdWwuanAtdG9nZ2xlcyBsaXsKCWRpc3BsYXk6YmxvY2s7CglmbG9hdDpyaWdodDsKfQoKdWwuanAtdG9nZ2xlcyBsaSBhewoJZGlzcGxheTpibG9jazsKCXdpZHRoOjI1cHg7CgloZWlnaHQ6MThweDsKCXRleHQtaW5kZW50Oi05OTk5cHg7CglsaW5lLWhlaWdodDoxMDAlOyAvKiBuZWVkIHRoaXMgZm9yIElFNiAqLwp9CgouanAtZnVsbC1zY3JlZW4gewoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLnBpbmsuZmxhZy5qcGciKSAwIC00MjBweCBuby1yZXBlYXQ7CgltYXJnaW4tbGVmdDogMjBweDsKfQoKLmpwLWZ1bGwtc2NyZWVuOmhvdmVyIHsKCWJhY2tncm91bmQ6IHVybCgianBsYXllci5waW5rLmZsYWcuanBnIikgLTMwcHggLTQyMHB4IG5vLXJlcGVhdDsKfQoKLmpwLXJlc3RvcmUtc2NyZWVuIHsKCWJhY2tncm91bmQ6IHVybCgianBsYXllci5waW5rLmZsYWcuanBnIikgLTYwcHggLTQyMHB4IG5vLXJlcGVhdDsKCW1hcmdpbi1sZWZ0OiAyMHB4Owp9CgouanAtcmVzdG9yZS1zY3JlZW46aG92ZXIgewoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLnBpbmsuZmxhZy5qcGciKSAtOTBweCAtNDIwcHggbm8tcmVwZWF0Owp9CgouanAtcmVwZWF0IHsKCWJhY2tncm91bmQ6IHVybCgianBsYXllci5waW5rLmZsYWcuanBnIikgMCAtNDQwcHggbm8tcmVwZWF0Owp9CgouanAtcmVwZWF0OmhvdmVyIHsKCWJhY2tncm91bmQ6IHVybCgianBsYXllci5waW5rLmZsYWcuanBnIikgLTMwcHggLTQ0MHB4IG5vLXJlcGVhdDsKfQoKLmpwLXJlcGVhdC1vZmYgewoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLnBpbmsuZmxhZy5qcGciKSAtNjBweCAtNDQwcHggbm8tcmVwZWF0Owp9CgouanAtcmVwZWF0LW9mZjpob3ZlciB7CgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIucGluay5mbGFnLmpwZyIpIC05MHB4IC00NDBweCBuby1yZXBlYXQ7Cn0KCi5qcC1zaHVmZmxlIHsKCWJhY2tncm91bmQ6IHVybCgianBsYXllci5waW5rLmZsYWcuanBnIikgMCAtNDYwcHggbm8tcmVwZWF0OwoJbWFyZ2luLWxlZnQ6IDVweDsKfQoKLmpwLXNodWZmbGU6aG92ZXIgewoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLnBpbmsuZmxhZy5qcGciKSAtMzBweCAtNDYwcHggbm8tcmVwZWF0Owp9CgouanAtc2h1ZmZsZS1vZmYgewoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLnBpbmsuZmxhZy5qcGciKSAtNjBweCAtNDYwcHggbm8tcmVwZWF0OwoJbWFyZ2luLWxlZnQ6IDVweDsKfQoKLmpwLXNodWZmbGUtb2ZmOmhvdmVyIHsKCWJhY2tncm91bmQ6IHVybCgianBsYXllci5waW5rLmZsYWcuanBnIikgLTkwcHggLTQ2MHB4IG5vLXJlcGVhdDsKfQoKCi8qIEBlbmQgKi8KCi8qIEBncm91cCBwcm9ncmVzcyBiYXIgKi8KCi8qIFRoZSBzZWVraW5nIGNsYXNzIGlzIGFkZGVkL3JlbW92ZWQgaW5zaWRlIGpQbGF5ZXIgKi8KZGl2LmpwLXNlZWtpbmctYmcgewoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLnBpbmsuZmxhZy5zZWVraW5nLmdpZiIpOwp9CgouanAtcHJvZ3Jlc3MgewoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLnBpbmsuZmxhZy5qcGciKSAwcHggLTI0MHB4IG5vLXJlcGVhdDsKCXdpZHRoOiAxOTdweDsKCWhlaWdodDogMTNweDsKCXBhZGRpbmc6IDAgMnB4IDJweCAycHg7CgltYXJnaW4tYm90dG9tOiA0cHg7CglvdmVyZmxvdzpoaWRkZW47Cn0KCmRpdi5qcC12aWRlbyAuanAtcHJvZ3Jlc3MgewoJYm9yZGVyLXRvcDoxcHggc29saWQgIzE4MGExZjsKCWJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjNTU0NTYwOwoJd2lkdGg6MTAwJTsKCWJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CglwYWRkaW5nOiAwOwp9CgouanAtc2Vlay1iYXIgewoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLnBpbmsuZmxhZy5qcGciKSAwcHggLTI2MHB4IHJlcGVhdC14OwoJd2lkdGg6MHB4OwoJaGVpZ2h0OiAxMDAlOwoJb3ZlcmZsb3c6aGlkZGVuOwoJY3Vyc29yOnBvaW50ZXI7Cn0KCi5qcC1wbGF5LWJhciB7CgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIucGluay5mbGFnLmpwZyIpIDBweCAtMjgwcHggcmVwZWF0LXg7Cgl3aWR0aDowcHg7CgloZWlnaHQ6IDEwMCU7CglvdmVyZmxvdzpoaWRkZW47Cn0KCgovKiBAZW5kICovCgovKiBAZ3JvdXAgdm9sdW1lIGNvbnRyb2xzICovCgpkaXYuanAtaW50ZXJmYWNlIHVsLmpwLWNvbnRyb2xzIGEuanAtbXV0ZSwKZGl2LmpwLWludGVyZmFjZSB1bC5qcC1jb250cm9scyBhLmpwLXVubXV0ZSwKZGl2LmpwLWludGVyZmFjZSB1bC5qcC1jb250cm9scyBhLmpwLXZvbHVtZS1tYXggewoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLnBpbmsuZmxhZy5qcGciKSAwcHggLTMzMHB4IG5vLXJlcGVhdDsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCXdpZHRoOiAxNnB4OwoJaGVpZ2h0OiAxMXB4Owp9CgpkaXYuanAtYXVkaW8gdWwuanAtY29udHJvbHMgYS5qcC1tdXRlLApkaXYuanAtYXVkaW8gdWwuanAtY29udHJvbHMgYS5qcC11bm11dGUsCmRpdi5qcC1hdWRpby1zdHJlYW0gdWwuanAtY29udHJvbHMgYS5qcC1tdXRlLApkaXYuanAtYXVkaW8tc3RyZWFtIHVsLmpwLWNvbnRyb2xzIGEuanAtdW5tdXRlIHsKCXRvcDotNnB4OwoJbGVmdDogMDsKfQoKZGl2LmpwLWF1ZGlvIHVsLmpwLWNvbnRyb2xzIGEuanAtdm9sdW1lLW1heCwKZGl2LmpwLWF1ZGlvLXN0cmVhbSB1bC5qcC1jb250cm9scyBhLmpwLXZvbHVtZS1tYXggewoJdG9wOi02cHg7CglyaWdodDogMDsKfQoKCmRpdi5qcC12aWRlbyB1bC5qcC1jb250cm9scyBhLmpwLW11dGUsCmRpdi5qcC12aWRlbyB1bC5qcC1jb250cm9scyBhLmpwLXVubXV0ZSB7CglsZWZ0OiAwOwoJdG9wOjE0cHg7Cn0KCmRpdi5qcC12aWRlbyB1bC5qcC1jb250cm9scyBhLmpwLXZvbHVtZS1tYXggewoJbGVmdDogODRweDsKCXRvcDoxNHB4Owp9CgpkaXYuanAtaW50ZXJmYWNlIHVsLmpwLWNvbnRyb2xzIGEuanAtbXV0ZTpob3ZlciB7CgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIucGluay5mbGFnLmpwZyIpIC0yNXB4IC0zMzBweCBuby1yZXBlYXQ7Cn0KCmRpdi5qcC1pbnRlcmZhY2UgdWwuanAtY29udHJvbHMgYS5qcC11bm11dGUgewoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLnBpbmsuZmxhZy5qcGciKSAtNjBweCAtMzMwcHggbm8tcmVwZWF0Owp9CgpkaXYuanAtaW50ZXJmYWNlIHVsLmpwLWNvbnRyb2xzIGEuanAtdW5tdXRlOmhvdmVyIHsKCWJhY2tncm91bmQ6IHVybCgianBsYXllci5waW5rLmZsYWcuanBnIikgLTg1cHggLTMzMHB4IG5vLXJlcGVhdDsKfQoKZGl2LmpwLWludGVyZmFjZSB1bC5qcC1jb250cm9scyBhLmpwLXZvbHVtZS1tYXggewoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLnBpbmsuZmxhZy5qcGciKSAwcHggLTM1MHB4IG5vLXJlcGVhdDsKfQoKZGl2LmpwLWludGVyZmFjZSB1bC5qcC1jb250cm9scyBhLmpwLXZvbHVtZS1tYXg6aG92ZXIgewoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLnBpbmsuZmxhZy5qcGciKSAtMjVweCAtMzUwcHggbm8tcmVwZWF0Owp9CgouanAtdm9sdW1lLWJhciB7CgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIucGluay5mbGFnLmpwZyIpIDBweCAtMzAwcHggcmVwZWF0LXg7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl3aWR0aDogMTk3cHg7CgloZWlnaHQ6IDRweDsKCXBhZGRpbmc6IDJweCAycHggMXB4IDJweDsKCW92ZXJmbG93OiBoaWRkZW47Cn0KCi5qcC12b2x1bWUtYmFyOmhvdmVyIHsKCWN1cnNvcjogIHBvaW50ZXI7Cn0KCgpkaXYuanAtYXVkaW8gLmpwLWludGVyZmFjZSAuanAtdm9sdW1lLWJhciwKZGl2LmpwLWF1ZGlvLXN0cmVhbSAuanAtaW50ZXJmYWNlIC5qcC12b2x1bWUtYmFyIHsKCXRvcDoxMHB4OwoJbGVmdDogMDsKfQoKZGl2LmpwLWF1ZGlvLXN0cmVhbSAuanAtaW50ZXJmYWNlIC5qcC12b2x1bWUtYmFyIHsKCXdpZHRoOiA5N3B4OwoJYm9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjMTgwOTIwOwoJcGFkZGluZy1yaWdodDoxcHg7Cn0KCmRpdi5qcC12aWRlbyAuanAtdm9sdW1lLWJhciB7Cgl0b3A6IDA7CglsZWZ0OiAwOwoJd2lkdGg6OTVweDsKCWJvcmRlci1yaWdodDoxcHggc29saWQgIzE4MDkyMDsKCXBhZGRpbmctcmlnaHQ6MXB4OwoJbWFyZ2luLXRvcDogMzBweDsKfQoKLmpwLXZvbHVtZS1iYXItdmFsdWUgewoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLnBpbmsuZmxhZy5qcGciKSAwcHggLTMyMHB4IHJlcGVhdC14OwoJaGVpZ2h0OiA0cHg7Cn0KCi8qIEBlbmQgKi8KCi8qIEBncm91cCBjdXJyZW50IHRpbWUgYW5kIGR1cmF0aW9uICovCgouanAtY3VycmVudC10aW1lLCAuanAtZHVyYXRpb24gewoJd2lkdGg6NzBweDsKCWZvbnQtc2l6ZTouNWVtOwoJY29sb3I6ICM4YzdhOTk7Cn0KCi5qcC1jdXJyZW50LXRpbWUgewoJZmxvYXQ6IGxlZnQ7Cn0KCi5qcC1kdXJhdGlvbiB7CglmbG9hdDogcmlnaHQ7Cgl0ZXh0LWFsaWduOnJpZ2h0Owp9CgouanAtdmlkZW8gLmpwLWN1cnJlbnQtdGltZSB7CglwYWRkaW5nLWxlZnQ6MjBweDsKfQoKLmpwLXZpZGVvIC5qcC1kdXJhdGlvbiB7CglwYWRkaW5nLXJpZ2h0OjIwcHg7Cn0KCi8qIEBlbmQgKi8KCi8qIEBncm91cCBwbGF5bGlzdCAqLwoKLmpwLXRpdGxlIHVsLAouanAtcGxheWxpc3QgdWwgewoJbGlzdC1zdHlsZS10eXBlOm5vbmU7CQoJZm9udC1zaXplOi43ZW07CgltYXJnaW46IDA7CglwYWRkaW5nOiAwOwp9CgouanAtdmlkZW8gLmpwLXRpdGxlIHVsIHsKCW1hcmdpbjogMCAyMHB4IDEwcHg7Cn0KCi5qcC12aWRlbyAuanAtcGxheWxpc3QgdWwgewoJbWFyZ2luOiAwIDIwcHg7Cn0KCi5qcC10aXRsZSBsaSwKLmpwLXBsYXlsaXN0IGxpIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXBhZGRpbmc6IDJweCAwOwoJYm9yZGVyLXRvcDoxcHggc29saWQgIzU1NDQ2MTsKCWJvcmRlci1ib3R0b206MXB4IHNvbGlkICMxODBhMWY7CglvdmVyZmxvdzogaGlkZGVuOwp9CgouanAtdGl0bGUgbGl7Cglib3JkZXItYm90dG9tOm5vbmU7Cglib3JkZXItdG9wOm5vbmU7CglwYWRkaW5nOjA7Cgl0ZXh0LWFsaWduOmNlbnRlcjsKfQoKLyogTm90ZSB0aGF0IHRoZSBmaXJzdC1jaGlsZCAoSUU2KSBhbmQgbGFzdC1jaGlsZCAoSUU2LzcvOCkgc2VsZWN0b3JzIGRvIG5vdCB3b3JrIG9uIElFICovCgpkaXYuanAtdHlwZS1wbGF5bGlzdCBkaXYuanAtcGxheWxpc3QgbGk6Zmlyc3QtY2hpbGQgewoJYm9yZGVyLXRvcDpub25lOwoJcGFkZGluZy10b3A6M3B4Owp9CgpkaXYuanAtdHlwZS1wbGF5bGlzdCBkaXYuanAtcGxheWxpc3QgbGk6bGFzdC1jaGlsZCB7Cglib3JkZXItYm90dG9tOm5vbmU7CglwYWRkaW5nLWJvdHRvbTozcHg7Cn0KCmRpdi5qcC10eXBlLXBsYXlsaXN0IGRpdi5qcC1wbGF5bGlzdCBhIHsKCWNvbG9yOiAjZmZmOwoJdGV4dC1kZWNvcmF0aW9uOm5vbmU7Cn0KCmRpdi5qcC10eXBlLXBsYXlsaXN0IGRpdi5qcC1wbGF5bGlzdCBhOmhvdmVyIHsKCWNvbG9yOiAjZTg5MmU5Owp9CgpkaXYuanAtdHlwZS1wbGF5bGlzdCBkaXYuanAtcGxheWxpc3QgbGkuanAtcGxheWxpc3QtY3VycmVudCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMjYxMDJlOwoJbWFyZ2luOiAwIC0yMHB4OwoJcGFkZGluZzogMnB4IDIwcHg7Cglib3JkZXItdG9wOiAxcHggc29saWQgIzI2MTAyZTsKCWJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjMjYxMDJlOwp9CgpkaXYuanAtdHlwZS1wbGF5bGlzdCBkaXYuanAtcGxheWxpc3QgbGkuanAtcGxheWxpc3QtY3VycmVudCBhewoJY29sb3I6ICNlODkyZTk7Cn0KCmRpdi5qcC10eXBlLXBsYXlsaXN0IGRpdi5qcC1wbGF5bGlzdCBhLmpwLXBsYXlsaXN0LWl0ZW0tcmVtb3ZlIHsKCWZsb2F0OnJpZ2h0OwoJZGlzcGxheTppbmxpbmU7Cgl0ZXh0LWFsaWduOnJpZ2h0OwoJbWFyZ2luLWxlZnQ6MTBweDsKCWZvbnQtd2VpZ2h0OmJvbGQ7Cgljb2xvcjojOEM3QTk5Owp9CmRpdi5qcC10eXBlLXBsYXlsaXN0IGRpdi5qcC1wbGF5bGlzdCBhLmpwLXBsYXlsaXN0LWl0ZW0tcmVtb3ZlOmhvdmVyIHsKCWNvbG9yOiNFODkyRTk7Cn0KCmRpdi5qcC10eXBlLXBsYXlsaXN0IGRpdi5qcC1wbGF5bGlzdCBzcGFuLmpwLWZyZWUtbWVkaWEgewoJZmxvYXQ6IHJpZ2h0OwoJZGlzcGxheTppbmxpbmU7Cgl0ZXh0LWFsaWduOnJpZ2h0OwoJY29sb3I6IzhDN0E5OTsKfQoKZGl2LmpwLXR5cGUtcGxheWxpc3QgZGl2LmpwLXBsYXlsaXN0IHNwYW4uanAtZnJlZS1tZWRpYSBhewoJY29sb3I6IzhDN0E5OTsKfQoKZGl2LmpwLXR5cGUtcGxheWxpc3QgZGl2LmpwLXBsYXlsaXN0IHNwYW4uanAtZnJlZS1tZWRpYSBhOmhvdmVyewoJY29sb3I6I0U4OTJFOTsKfQpzcGFuLmpwLWFydGlzdCB7Cglmb250LXNpemU6LjhlbTsKCWNvbG9yOiM4QzdBOTk7Cn0KCi8qIEBlbmQgKi8KCgpkaXYuanAtdmlkZW8gZGl2LmpwLXZpZGVvLXBsYXkgewoJd2lkdGg6MTAwJTsKCW92ZXJmbG93OmhpZGRlbjsgLyogSW1wb3J0YW50IGZvciBuZXN0ZWQgbmVnYXRpdmUgbWFyZ2lucyB0byB3b3JrIGluIG1vZGVybiBicm93c2VycyAqLwoJY3Vyc29yOnBvaW50ZXI7Cn0KZGl2LmpwLXZpZGVvLTI3MHAgZGl2LmpwLXZpZGVvLXBsYXkgewoJbWFyZ2luLXRvcDotMjcwcHg7CgloZWlnaHQ6MjcwcHg7Cn0KZGl2LmpwLXZpZGVvLTM2MHAgZGl2LmpwLXZpZGVvLXBsYXkgewoJbWFyZ2luLXRvcDotMzYwcHg7CgloZWlnaHQ6MzYwcHg7Cn0KZGl2LmpwLXZpZGVvLWZ1bGwgZGl2LmpwLXZpZGVvLXBsYXkgewoJaGVpZ2h0OjEwMCU7Cn0KYS5qcC12aWRlby1wbGF5LWljb24gewoJcG9zaXRpb246cmVsYXRpdmU7CglkaXNwbGF5OmJsb2NrOwoJd2lkdGg6IDExMnB4OwoJaGVpZ2h0OiAxMDBweDsKCgltYXJnaW4tbGVmdDotNTZweDsKCW1hcmdpbi10b3A6LTUwcHg7CglsZWZ0OjUwJTsKCXRvcDo1MCU7CgoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLnBpbmsuZmxhZy52aWRlby5wbGF5LnBuZyIpIDAgMCBuby1yZXBlYXQ7Cgl0ZXh0LWluZGVudDotOTk5OXB4Owp9CmRpdi5qcC12aWRlby1wbGF5OmhvdmVyIGEuanAtdmlkZW8tcGxheS1pY29uIHsKCWJhY2tncm91bmQ6IHVybCgianBsYXllci5waW5rLmZsYWcudmlkZW8ucGxheS5wbmciKSAwIC0xMDBweCBuby1yZXBlYXQ7Cn0KCgpkaXYuanAtanBsYXllciBhdWRpbywKZGl2LmpwLWpwbGF5ZXIgewoJd2lkdGg6MHB4OwoJaGVpZ2h0OjBweDsKfQoKZGl2LmpwLWpwbGF5ZXIgewoJYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDsKfQoKLyogQGdyb3VwIE5PIFNPTFVUSU9OIGVycm9yIGZlZWRiYWNrICovCgouanAtbm8tc29sdXRpb24gewoJcGFkZGluZzo1cHg7Cglmb250LXNpemU6LjhlbTsKCWJhY2tncm91bmQtY29sb3I6IzNhMmE0NTsKCWJvcmRlci10b3A6MnB4IHNvbGlkICM1NTQ0NjE7Cglib3JkZXItbGVmdDoycHggc29saWQgIzU1NDQ2MTsKCWJvcmRlci1yaWdodDoycHggc29saWQgIzE4MGExZjsKCWJvcmRlci1ib3R0b206MnB4IHNvbGlkICMxODBhMWY7Cgljb2xvcjojRkZGOwoJZGlzcGxheTpub25lOwp9CgouanAtbm8tc29sdXRpb24gYSB7Cgljb2xvcjojRkZGOwp9CgouanAtbm8tc29sdXRpb24gc3BhbiB7Cglmb250LXNpemU6MWVtOwoJZGlzcGxheTpibG9jazsKCXRleHQtYWxpZ246Y2VudGVyOwoJZm9udC13ZWlnaHQ6Ym9sZDsKfQovKiBAZW5kICovCg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin/pink.flag/jplayer.pink.flag.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAUAAA/+4ADkFkb2JlAGTAAAAAAf/bAIQAAgICAgICAgICAgMCAgIDBAMCAgMEBQQEBAQEBQYFBQUFBQUGBgcHCAcHBgkJCgoJCQwMDAwMDAwMDAwMDAwMDAEDAwMFBAUJBgYJDQsJCw0PDg4ODg8PDAwMDAwPDwwMDAwMDA8MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/8AAEQgB4ADSAwERAAIRAQMRAf/EAMAAAQABBQEBAQAAAAAAAAAAAAAGAQMEBQcCCAkBAQACAwEBAAAAAAAAAAAAAAABAgMEBQYHEAAABQEEAwsJBAYIBAYDAAAAAQIDBAUREhQGIWETMVGRoVKT09RVlRdBcdKjVBUWVgciU+OUgTJCoiOzYnKCYzR0NQixwjNz0ZJDg0S0ZCV1EQEAAQIDAgwEBgICAgMAAAAAARECEgMEITFBUWGRUpLiE1MFFRZxgdEUscEiMtIG8KHhM0JyYoI0/9oADAMBAAIRAxEAPwD8qKXS6Y7TKc45Tozji4rKlrUygzMzQVpmZlpHbiIo32d7opPZcTmG/RE0gPdFJ7Licw36IUgPdFJ7Licw36IUgPdFJ7Licw36IUgPdFJ7Licw36IUgPdFJ7Licw36IUgPdFJ7Licw36IUgPdFJ7Licw36IUgPdFJ7Licw36IUgPdFJ7Licw36IUgPdFJ7Licw36IUgPdFJ7Licw36IUgPdFJ7Licw36IUgPdFJ7Licw36IUgPdFJ7Licw36IUgPdFJ7Licw36IUgPdFJ7Licw36IUgPdFJ7Licw36IUgPdFJ7Licw36IUgPdFJ7Licw36IUgPdFJ7Licw36IUgPdFJ7Licw36IUgPdFJ7Licw36IUgPdFJ7Licw36IUgKR/pNL/yjH8tIRuGwEjX0j/SaX/lGP5aREbhsBIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADX0j/SaX/lGP5aREbhsBI19I/wBJpf8AlGP5aREbhsBIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADX0j/SaX/lGP5aREbhsBI19I/0ml/5Rj+WkRG4bASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA19I/0ml/5Rj+WkRG4bASMSJAcjRY0YqumyO0hsv/15q/USRbuNTbubthCIgZGHc7XT3afXgDDudrp7tPrwBh3O1092n14Aw7na6e7T68AYdztdPdp9eAMO52unu0+vAGHc7XT3afXgDDudrp7tPrwBh3O1092n14Aw7na6e7T68AYdztdPdp9eAMO52unu0+vAGHc7XT3afXgDDudrp7tPrwBh3O1092n14Aw7na6e7T68AYdztdPdp9eAMO52unu0+vAGHc7XT3afXgDDudrp7tPrwBh3O1092n14Aw7na6e7T68AYdztdPdp9eAMO52unu0+vAPEZhEWOxGbMzbjtpaQat0yQRJK2yzToAXhI7ttxjVNuAbcA24BtwGIirQnJb0BuWyubHSlT8QlpNxCVFak1IttIjIwGXtwDbgG3ANuAbcA24BtwDbgBP6QFTf0gKbcBjS6nEgR3Jc2S3Eis2G7IeUSEJtMklao7CK0zIgomIruXm5bbqEOtOJdbcIlNuIMlJUR7hkZaDIKIe9uAbcA24BtwDbgMCqP20yolvxXi/cMIHGBkWAHWMRrFEGI1gGI1gGI1gGI1gPmDP0uRGzzVZcR9yPIaOMpp9tRpUkyjtaSMtIpO8SzLX1ZkMk3EzG2chsrElUmS+2Rf3iC0K85adRhFw7RCq8Oox0S4MpEqO5+q62ZGWsj3jLeMXGXiNYBiNYBiNYBiNYBiNYBiNYAUnTugKnJ07oCmI1gInnhaH8szmllfQt2ISknuGWKaGxpLYuzrYnjb/ldsXarLid1UGgv1Ohqv0WTcYttcpj1qo6rd2wt1Bnvp/TaPU6zyXLzdtmyXvfMv63k6j9WX+m5PaRnKFUVoiSkqplSVoKI8ZXVn/dOaCV5tB6h5fUaTMyJpfDwet8sz9JdS+NnGlGI1jWc8xGsAxGsAxGsBiT37YM0rd1hwv3TCBzIXSAJxidfGKoMTr4wDE6+MAxOvjAMTr4wHzpnklyM31JLaFOOOqjpbbSRmpSjYbIiIi0mZjHdvE2y99JHyS1PztKXQYiiJbVFaJKqk8k99CvssEe+5p/oGIiKjq6HKZCiRqZRaWzSKZENamY7Zmtxa3CSS3HnVfacWZJLSegrLCIiGSIoPOJ18YkMTr4wDE6+MAxOvjAMTr4wDE6+MAxOsAOTrAMTr4wEdzW/foclO+9F/wDsNjZ0X/dZ8XR8p/8A1ZfxWaRQanWlrwTBFHZ/xU55RNx2S33HFaC826fkIe51WsytNFb5pycM/J9T13mWRorcWbdTijhn4R/kJnFi5doC23Y7SMwVhhRLaqUlFkVhxOklMMq0rUR7il+ckjyev82v1MYYjDb/ALn/ADkfPvNv7Dma2JstjDZz3T8Z4PhHPLExOvjHJecMTr4wDE6+MAxOvjAWJUi9GkFbutLLiMEocLAA3OI1iAxGsAxGsAxGsAxGsBdp0tilSZVRgwozVXlWEqtGi/JQkkki60tRmTegtJpIlaxGEo8LlrcUpbizWtZma1qMzMzPdMzMSPOI1gGI1gGI1gGI1gGI1gGI1gGI1gGI1gGI1gGI1gLbimH0k3JZTJZJaFrYWarqriiWRHdMjstItwxay6bJiY3wyZWZdlXRfbNJjc206vS56G2VqRHhsf4anx0k0w3/AFUJ0W6ztPWF91184rprM8Mmbm35t03XzMzPDLW4jWKsZiNYBiNYBiNYBiNYDw4/a24Vu6ky4gGpEgA9Xlco+EAvK5R8IBeVyj4QC8rlHwgF5XKPhALyuUfCAXlco+EAvK5R8IBeVyj4QC8rlHwgF5XKPhALyuUfCAXlco+EAvK5R8IBeVyj4QC8rlHwgF5XKPhALyuUfCAXlco+EAvK5R8IBeVyj4QC8rlHwgF5XKPhALyuUfCAXj3zAeQAB3bbjGqbcA24BtwDbgG3ANuAbcA24BtwDbgG3ANuAbcAJ/SAqb+kBTbgG3ANuAbcA24BtwDbgG3AYFUftplRLfivF+4YQOMDIsAOsYjWKIMRrAMRrAMRrAMRrAfKeaMyVuZXqopVTkttsyXWY7LTq0IQ22s0pIkpMi3C074pMjURcxV2HIaksVaWl1lRKTeeWpJ2eQ0mdhkflIxFR9kPO7NSSt0LbbdIt4nEJWRfovWC8C1iNYkMRrAMRrAMRrAMRrAMRrACk6d0BU5OndAUxGsBBM9zphxaTTokx2EiqTTamvsKNDpstsuOmhC0mRpvGkiMy02Wja0WmjUZ9mXdumtflEzR0vKNFbrNVZlX/tmtflEzT5oSVMikRFfk6P8A8p/pB7D0bSeHHPP1fR/b2g8KP9/V0rJSDRAqyCedU1C2LjSXXFu2E4pSFERrUZlpsMcTzrQZWni27LilZmHlv7P5Xp9JbZfk24azMT/kpPiNY4Dx5iNYBiNYBiNYDEnv2wZpW7rDhfumEDmQukATjE6+MVQYnXxgGJ18YBidfGAYnXxgPl3MUWRErdTRJaU0pyS663eLQpC1maVJPykYxSNbDhy6hKjwYMdyXMlLJuNGaSalrWrQRJItJgPsSqOHHmuRVLSpcRDUd00naV9ltKFWGW7YaTGSNxDX4nXxiQxOvjAMTr4wDE6+MAxOvjAMTr4wDE6wA5OsAxOvjARTM7b8pyiOtINbcSW4uQZabqVR3UEZ6rTIh0fKJiNXZM8v4S7n9bvi3X5czNN8c8TRqR7t9WTzLLL8eiVye4g240lcaNGcVoJxxK1LUSd+6RabNweZ/sObbSyyu2sy8R/cc+ybcvLr+qszTkou4nXxjzLwhidfGAYnXxgGJ18YCxKkXo0grd1pZcRglDhYAG5xGsQGI1gGI1gGI1gGI1gMuNV5sQlJiy3WEqO1SULMiM9+zcEUKMosy1kiUSapJRfI0qNLqkmZHulaRkGGCjVYjXxiQxGsAxGsAxGsAxGsAxGsAxGsAxGsAxGsAxGsB6TKUhSVoWaVpMjSojMjIy3DIwG1LM1aIiIqrJsL+9V/4iaytju42JLrE6eaDmzXpZtFY1tXFKulvJIz0foEKsPEawDEawDEawDEawHhx+1twrd1JlxANSJAB6vK5R8IBeVyj4QC8rlHwgF5XKPhALyuUfCAXlco+EAvK5R8IBeVyj4QC8rlHwgF5XKPhALyuUfCAXlco+EAvK5R8IBeVyj4QC8rlHwgF5XKPhALyuUfCAXlco+EAvK5R8IBeVyj4QC8rlHwgF5XKPhALyuUfCAXlco+EAvHvmA8gADu23GNU24BtwDbgG3ANuAbcA24BtwDbgG3ANuAbcA24AT+kBU39ICm3ANuAbcA24BtwDbgG3ANuAwKo/bTKiW/FeL9wwgcYGRYAdYxGsUQYjWAYjWAYjWAYjWA+es85rrsHOT6YdSfZj0w2MPFQtSWlWtIcUS0kZEq01GR2+QUmdozvqZmGt0P6h1eBAqkhuJQZSWYsdK1JbWlKUqPaJSZEq8Znbb5AmR9CVMkQalUISFmpEOS6whR7pk2s0kZ8AtAwsRrEhiNYBiNYBiNYBiNYBiNYAUnTugKnJ07oCmI1gI3m2oSY9BlqhyFxZDrkaOiQjQtBPyG2lKSfkMkrOwxm0+XGZmW2TwzEc8tvQ5EZ2osy7t110Rzyj7b0yLkevvR6hKRJjz6ZDjyXHluuITUHFtuqStw1GRkSNFh6DO0dvzLy7Ky83KssikXTSeeOP4vVec+T6fK1Onsy7cMXzMTz28fxSTJyVJotUcckvv4KXEaaN91byrJCJClWqcUo9BslZp8pjF51osrTzZ3cUrWvyp9Wr/aPLcjSTld1bTFir8qcfxSDEaxw3lDEawDEawDEawGJPftgzSt3WHC/dMIHMhdIAnGJ18YqgxOvjAMTr4wDE6+MAxOvjAfPedosuZnKUyxHcefqCoyIbSUmanVKabbIkl5bVFYMd28bf6rRZU36oZlajsLfeqNSuwm0EZm6arG0kizdtUVgiR9CZglW16tmRkZHPk2Hb/eqGSNxDUYnXxiQxOvjAMTr4wDE6+MAxOvjAMTr4wDE6wA5OsAxOvjAaDMy1v0hbaEmsylQlmRafsolNLUf6CIzMbOi/78v/2j8YdDyqYjV5Venb+K04y+eRK6pLSjQ9XKJcURaD2Djy3bP6qVEZ7w9J5tdH3ORFdsXfnb9Ht/Psy373SRXbF1eebafhLf5d2jOW6y8aDS0/UoCGnD0EpTbMs1kXmvpt841v7FdGLLjh2/k5/9zvibsm2u2Iu/3hp+EruJ18Y828QYnXxgGJ18YBidfGAsSpF6NIK3daWXEYJQ4WABucRrEBiNYBiNYBiNYBiNYDKiVaXBWbsOSuO7YZE4g7FFaVh2HukdnlIRQorFq0yE4b0WSth4yP8AioOxRW6DMj3SPWQUKMU5JmZmajMz0mZmJFMRrAMRrAMRrAMRrAMRrAMRrAMRrAMRrAMRrAMSZaSOwy3DtAZsmszpiGG5Mtx5uMRkw2pR2It3TIt8/KYmZmZrKbrpumszWVJNYnTEMtSpbj7UcjJhtSjNKbd0yLctPymEzMzWS66bprM1lh4jWIQYjWAYjWAYjWA8OP2tuFbupMuIBqRIAPV5XKPhALyuUfCAXlco+EAvK5R8IBeVyj4QC8rlHwgF5XKPhALyuUfCAXlco+EAvK5R8IBeVyj4QC8rlHwgF5XKPhALyuUfCAXlco+EAvK5R8IBeVyj4QC8rlHwgF5XKPhALyuUfCAXlco+EAvK5R8IBeVyj4QC8rlHwgF498wHkAAd224xqm3ANuAbcA24BtwDbgG3ANuAbcA24BtwDbgG3ACf0gKm/pAU24BtwDbgG3ANuAbcA24BtwGBVH7aZUS34rxfuGEDjAyLADrGI1iiDEawDEawDEawEVztV5lMyzUp1PfOPLYNg2XSIjsvPtpPQdpaSMyESIflv6rxZdyLX0FBkHYRTUW7FR/0i3Uf8BEXDQZb+rE2MaIuYUHMZtsKe2RE6m0/2klYSiLVYfnERI7XT63AqsdMqny0SmFftIPcPeUW6R6jFhnYjWJDEawDEawDEawDEawDEawApOndAVOTp3QFMRrAc1mZlrsDMdaSypE+msOMJRTl2IUgjYbUo21kW6ZmZ2HaOppfLLtRlTfbO2J3PRaDyK7W6bvLJ/VE7lmq5zmS5lGVQZRxnG0SVVOmyW90y2VxK+FVhpMV0vlt+bmTl3bJiFdB5FmZ2bdlZkYZiNiSUrOkSYtEWoIOlzz0E24drTh/3bmgj8x2GMGp0Wbp5pdHzaWv8pz9HP642caWYjWNRzDEawDEawDEawGJPftgzSt3WHC/dMIHMhdIAnGJ18YqgxOvjAMTr4wDE6+MBEM+P38p1VO/sP57Yi7cOeZX+mNZrrLVTqbicuUBf2k1GWk9o8W9GY0LcM9/Qn+kMY0GWclZgzY4v3XEJEJk7JdWkq2MRny/bdVot1Fae8QDvdAy1l3J0aU1BfdrdYmNk1Lq7lrTCEktKzKOzu6TTZfWdtlthFaLRA22J18YuGJ18YBidfGAYnXxgGJ18YBidfGAYnWAHJ1gGJ18YCFMwJ1XzJW49PiuS5C3WD2bZW2EUdu0zPcIi3zHq/Js6zK083XzERV9D/rWpy9PopvzLotivCzqxQ2aRIpsQpjNQrE0ndtGiJNwmrhoIkE4Whajvabugt8xu6TzLK1GZdSKUjfPDx/B0vL/ADrI1ubfFsUi2I2zsrvr8IjlbxnJkJlonc3O4dCtKKIzdVLWX9O21LJf1tOoaPmHnOVSbMuIunj4P+XL83/suRETl5URfPHP7Y+v4crYPSoxrSmFFTBiNNtsxoqVKXcQ0hKE2qVpUZkm0zPdMeVmavAXTimZnhWsTr4wVMTr4wDE6+MBYlSL0aQVu60suIwShwsADc4jWIDEawDEawDEawApCbyFKQh3ZrQ4lDiUuIvIUSkmaVkaTsMiPSQUGTKqkqc8qRLkLkPL3XFnadm8W8RbxBQoLqchyLFhG5chQUE3EiNkTbTaS3kIIit3zstPyiIihRjYjWJDEawDEawDEawDEawDEawDEawDEawDEawDEawGUzVZUeLIhx3thHluE7LS2RJN1RJJJX1ERKUREkiIjOwNqZumYpXZCkSpyID+KiOExK2a2UySJJuJQsyNRIUZGabbpaSsMTtIumImInZLHVKUtRqWs1KUdqlGZmZmflMxCFMRrAMRrAMRrAMRrAeHH7W3Ct3UmXEA1IkAHq8rlHwgF5XKPhALyuUfCAXlco+EAvK5R8IBeVyj4QC8rlHwgF5XKPhALyuUfCAXlco+EAvK5R8IBeVyj4QC8rlHwgF5XKPhALyuUfCAXlco+EAvK5R8IBeVyj4QC8rlHwgF5XKPhALyuUfCAXlco+EAvK5R8IBeVyj4QC8e+YDyAAO7bcY1TbgG3ANuAbcA24BtwDbgG3ANuAbcA24BtwDbgBP6QFTf0gKbcA24BtwDbgG3ANuAbcA24DAqj9tMqJb8V4v3DCBxgZFgB1jEaxRBiNYBiNYBiNYDGlVSLBYXJmSURo7ZWrdcUSUl+kwHHcyfVlR7SJltuzdSdTeTxttn/wAVcArNw3FX+qNOplMpLFMWdZqq6XAXPeUdjSJS4rSpBKMiK0ydNRWFublojEJNkGsTa1lNVZqcg35r9amxtBElCGmY8NxCUpIi3DeUJiaiW4jWLBiNYBiNYBiNYBiNYBiNYAUnTugKnJ07oCmI1gInW88UykLVEZJdUqu4mmxrDUk/7xf6qC8+nUYvlZV+bdhsistjTaTN1N2HLtmZaih5mmoXXKzmqcUaMxT7aXRoiLxbc5LBERHYalr2Zr8pF5h09R5PmZGTF87bq7o4IpP/AA7us/rebptPF/7r5ujZHBFJ/OitDr1ezRmjLsVSToVDk1SI09GK6uU+0t5CVJWoyNKCMjPQnhDL8nze6uzczZS2ZiOHZHCnK/rWbGnvzs6aYbZmI+EV2uhYjWOS8yYjWAYjWAYjWAxJ79sGaVu6w4X7phA5kLpAE4xOvjFUGJ18YBidfGAYnXxgI9mGhU/MrDbM5x5lce8cV9lX6il2WmaD0KL7O5o85CJio4dXsnVahX3loKbT0n9moMEZpIj3NondQfn0bxmMcxQber/TuqwoVOn05wqs1Np0Oe9HbSaX2sXGbkGkkWnfJN+y1OnUQUHTfpw4bWQmEnoP4gqVpHo/+LTxa0S7E6+MXDE6+MAxOvjAMTr4wDE6+MAxOvjAMTrADk6wDE6+MBEW8r0+C1do5Eye6tl1VprPymTp+U95XCO95X5pl6e2LL7aRxx+b2Hkf9gytNbGVm2REdKPzj845l+nUZc86q285g3aZEKSaHEGdpm+0yST8pF/FttsMd3V+Y5eTl25kfqtmabPhM/k9V5h5zlabJtzo/XbddEbJ5Jmv+tzOy3Gfh5sywT7dy2qwzbWWlKrH0fqqLQYrnavK1GlzJsmv6bvjulTUeYZGs0OddlXV/Rds4Y/TO+G5xOvjHhnygxOvjAMTr4wDE6+MBYlSL0aQVu60suIwShwsADc4jWIDEawDEawDEawDEawFSkmW4rdIyPWR7pGAuvT3JC0uOGkjQ2202lCUtpShpCW20pSgiSRJSkiIiIKAuoOrZRHNSSabcceIkpSkzcdJCVrUoiI1GZNpK1RnoIgoUWcRrAMRrAMRrAMRrAMRrAMRrAMRrAMRrAMRrAMRrAZLdTkNMvsIcIm5KCaeIySZmglpcJJKMjMivJI7CPyCazSnAtiuphrs304KkWpyITzUiO4SHWFpdaMySsiWg7UquqIytI9JHZoCJmNxbddbumldnyY2I1iFTEawDEawDEawHhx+1twrd1JlxANSJAB6vK5R8IBeVyj4QC8rlHwgF5XKPhALyuUfCAXlco+EAvK5R8IBeVyj4QC8rlHwgF5XKPhALyuUfCAXlco+EAvK5R8IBeVyj4QC8rlHwgF5XKPhALyuUfCAXlco+EAvK5R8IBeVyj4QC8rlHwgF5XKPhALyuUfCAXlco+EAvHvmA8gADwx/gKR/wDy6f8A/UaERuHsSAAAAAAAAAAAAAAAAAAAAAAAAAAAAADLg/4yN/3CAaSkf6TS/wDKMfy0iI3DYCRaaTNwdLS3AU6TdOgoUrEQ2zJSIzaVpNDr6FkaVEZGRpLSIgerlQ7MV+bp/WgC5UOzFfm6f1oAuVDsxX5un9aALlQ7MV+bp/WgC5UOzFfm6f1oAuVDsxX5un9aALlQ7MV+bp/WgC5UOzFfm6f1oAuVDsxX5un9aALlQ7MV+bp/WgC5UOzFfm6f1oAuVDsxX5un9aALlQ7MV+bp/WgC5UOzFfm6f1oAuVDsxX5un9aALlQ7MV+bp/WgC5UOzFfm6f1oAuVDsxX5un9aALlQ7MV+bp/WgC5UOzFfm6f1oAuVDsxX5un9aALlQ7MV+bp/WgC5UOzFfm6f1oBlQsYiXHU9ANlpKyNx1UqCokl5TMkSVKP9BGYDVUtC26ZTm3EmhxEVlK0KKwyMkERkZHuGQRuGcJHYfDjK3z273UfWhg76eJTFyHhxlb57d7qPrQd9PEYuQ8OMrfPbvdR9aDvp4jFyHhxlb57d7qPrQd9PEYuQ8OMrfPbvdR9aDvp4jFyHhxlb57d7qPrQd9PEYuQ8OMrfPbvdR9aDvp4jFyHhxlb57d7qPrQd9PEYuQ8OMrfPbvdR9aDvp4jFyHhxlb57d7qPrQd9PEYuQ8OMrfPbvdR9aDvp4jFyHhxlb57d7qPrQd9PEYuQ8OMrfPbvdR9aDvp4jFyHhxlb57d7qPrQd9PEYuQ8OMrfPbvdR9aDvp4jFyHhxlb57d7qPrQd9PEYuQ8OMrfPbvdR9aDvp4jFyHhxlb57d7qPrQd9PEYuQ8OMrfPbvdR9aDvp4jFyHhxlb57d7qPrQd9PEYuQ8OMrfPbvdR9aDvp4jFyHhxlb57d7qPrQd9PEYuQ8OMrfPbvdR9aDvp4jFyHhxlb57d7qPrQd9PEYuQ8OMrfPbvdR9aDvp4jFyHhxlb57d7qPrQd9PEYuQ8OMrfPbvdR9aDvp4jFyPkvxBzh2yrmWejEYYTQ8Qc4dsq5lnowwwUPEHOHbKuZZ6MMMFDxBzh2yrmWejDDBQ8Qc4dsq5lnowwwUPEHOHbKuZZ6MMMFDxBzh2yrmWejDDBQ8Qc4dsq5lnowwwUPEHOHbKuZZ6MMMFDxBzh2yrmWejDDBQ8Qc4dsq5lnowwwUPEHOHbKuZZ6MMMFDxBzh2yrmWejDDBQ8Qc4dsq5lnowwwUPEHOHbKuZZ6MMMFDxBzh2yrmWejDDBQ8Qc4dsq5lnowwwUPEHOHbKuZZ6MMMFDxBzh2yrmWejDDBQ8Qc4dsq5lnowwwUPEHOHbKuZZ6MMMFDxBzh2yrmWejDDBQ8Qc4dsq5lnowwwUPEHOHbKuZZ6MMMFDxBzh2yrmWejDDBQ8Qc4dsq5lnowwwUPEHOHbKuZZ6MMMFEy+FKB7B6130xmwwsfClA9g9a76YYYD4UoHsHrXfTDDAfClA9g9a76YYYD4UoHsHrXfTDDAfClA9g9a76YYYD4UoHsHrXfTDDAfClA9g9a76YYYD4UoHsHrXfTDDAfClA9g9a76YYYD4UoHsHrXfTDDAfClA9g9a76YYYD4UoHsHrXfTDDAfClA9g9a76YYYD4UoHsHrXfTDDAfClA9g9a76YYYD4UoHsHrXfTDDAfClA9g9a76YYYD4UoHsHrXfTDDAfClA9g9a76YYYD4UoHsHrXfTDDAfClA9g9a76YYYD4UoHsHrXfTDDAfClA9g9a76YYYD4UoHsHrXfTDDAfClA9g9a76YYYD4UoHsHrXfTDDA+0vHln5ge5p3ox7X7DkfVPTZ6J48s/MD3NO9GH2HIemz0Tx5Z+YHuad6MPsOQ9Nnonjyz8wPc070YfYch6bPRPHln5ge5p3ow+w5D02eiePLPzA9zTvRh9hyHps9E8eWfmB7mnejD7DkPTZ6J48s/MD3NO9GH2HIemz0Tx5Z+YHuad6MPsOQ9Nnonjyz8wPc070YfYch6bPRPHln5ge5p3ow+w5D02eiePLPzA9zTvRh9hyHps9E8eWfmB7mnejD7DkPTZ6J48s/MD3NO9GH2HIemz0Tx5Z+YHuad6MPsOQ9Nnonjyz8wPc070YfYch6bPRPHln5ge5p3ow+w5D02eiePLPzA9zTvRh9hyHps9E8eWfmB7mnejD7DkPTZ6J48s/MD3NO9GH2HIemz0Tx5Z+YHuad6MPsOQ9Nnonjyz8wPc070YfYch6bPRPHln5ge5p3ow+w5D02eiePLPzA9zTvRh9hyHps9E8eWfmB7mnejD7DkPTZ6J48s/MD3NO9GH2HIemz0Tx5Z+YHuad6MPsOQ9NnovknZnvkMXr+R0buaPq0vd+k6N/Nb/I2Z75B6/kdG7mj6nu/SdG/mt/kbM98g9fyOjdzR9T3fpOjfzW/wAjZnvkHr+R0buaPqe79J0b+a3+Rsz3yD1/I6N3NH1Pd+k6N/Nb/I2Z75B6/kdG7mj6nu/SdG/mt/kbM98g9fyOjdzR9T3fpOjfzW/yNme+Qev5HRu5o+p7v0nRv5rf5GzPfIPX8jo3c0fU936To381v8jZnvkHr+R0buaPqe79J0b+a3+Rsz3yD1/I6N3NH1Pd+k6N/Nb/ACNme+Qev5HRu5o+p7v0nRv5rf5GzPfIPX8jo3c0fU936To381v8jZnvkHr+R0buaPqe79J0b+a3+Rsz3yD1/I6N3NH1Pd+k6N/Nb/I2Z75B6/kdG7mj6nu/SdG/mt/kbM98g9fyOjdzR9T3fpOjfzW/yNme+Qev5HRu5o+p7v0nRv5rf5GzPfIPX8jo3c0fU936To381v8AI2Z75B6/kdG7mj6nu/SdG/mt/kbM98g9fyOjdzR9T3fpOjfzW/yNme+Qev5HRu5o+p7v0nRv5rf5GzPfIPX8jo3c0fU936To381v8jZnvkHr+R0buaPqe79J0b+a3+Rsz3yD1/I6N3NH1Pd+k6N/Nb/I2Z75B6/kdG7mj6nu/SdG/mt/kbM98g9fyOjdzR9T3fpOjfzW/wAm+pWVM21imwKrEh0wotRYbkME5PWlZJcSSiJRYc7DK3SPGzmRD5vVn/AWdfY6T3gvqwd5Big+As6+x0nvBfVg7yDFB8BZ19jpPeC+rB3kGKD4Czr7HSe8F9WDvIMUHwFnX2Ok94L6sHeQYoPgLOvsdJ7wX1YO8gxQfAWdfY6T3gvqwd5Big+As6+x0nvBfVg7yDFB8BZ19jpPeC+rB3kGKD4Czr7HSe8F9WDvIMUHwFnX2Ok94L6sHeQYoPgLOvsdJ7wX1YO8gxQfAWdfY6T3gvqwd5Big+As6+x0nvBfVg7yDFB8BZ19jpPeC+rB3kGKD4Czr7HSe8F9WDvIMUHwFnX2Ok94L6sHeQYoPgLOvsdJ7wX1YO8gxQfAWdfY6T3gvqwd5Big+As6+x0nvBfVg7yDFB8BZ19jpPeC+rB3kGKD4Czr7HSe8F9WDvIMUHwFnX2Ok94L6sHeQYoeHcjZzZadeciUkm2Umtw/eCzsSkrT0FGtMIzIkxQiUORiokWVc2eJZQ7cttu30kqy2wrbLReEsgSLaGVkzEaKuV+IUWLHjbGFUTjsfwGkNXkNbJV29dvGVp6TMUmyJKK7Fz5lzV3ufQB3dpSDYufMuau9z6AO7tKQbFz5lzV3ufQB3dpSDYufMuau9z6AO7tKQbFz5lzV3ufQB3dpSDYufMuau9z6AO7tKQbFz5lzV3ufQB3dpSDYufMuau9z6AO7tKQbFz5lzV3ufQB3dpSDYufMuau9z6AO7tKQbFz5lzV3ufQB3dpSDYufMuau9z6AO7tKQbFz5lzV3ufQB3dpSDYufMuau9z6AO7tKQbFz5lzV3ufQB3dpSDYufMuau9z6AO7tKQbFz5lzV3ufQB3dpSDYufMuau9z6AO7tKQbFz5lzV3ufQB3dpSDYufMuau9z6AO7tKQbFz5lzV3ufQB3dpSDYufMuau9z6AO7tKQbFz5lzV3ufQB3dpSF1glsPNPHXsySSaUSjjyKqa2l2HbdcRsSvJPylbpCLIgpDFhx8LEixb+0wzKGr9ll64kk22WnZbYLQMgSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOt+NGb/uKdzT3TDs+qZfhz1uy9V7iy/Bnr9g8aM3/AHFO5p7pg9Uy/Dnrdk9xZfgz1+weNGb/ALinc090weqZfhz1uye4svwZ6/YPGjN/3FO5p7pg9Uy/Dnrdk9xZfgz1+weNGb/uKdzT3TB6pl+HPW7J7iy/Bnr9g8aM3/cU7mnumD1TL8Oet2T3Fl+DPX7B40Zv+4p3NPdMHqmX4c9bsnuLL8Gev2Dxozf9xTuae6YPVMvw563ZPcWX4M9fsHjRm/7inc090weqZfhz1uye4svwZ6/YPGjN/wBxTuae6YPVMvw563ZPcWX4M9fsHjRm/wC4p3NPdMHqmX4c9bsnuLL8Gev2Dxozf9xTuae6YPVMvw563ZPcWX4M9fsHjRm/7inc090weqZfhz1uye4svwZ6/YPGjN/3FO5p7pg9Uy/Dnrdk9xZfgz1+weNGb/uKdzT3TB6pl+HPW7J7iy/Bnr9g8aM3/cU7mnumD1TL8Oet2T3Fl+DPX7B40Zv+4p3NPdMHqmX4c9bsnuLL8Gev2Dxozf8AcU7mnumD1TL8Oet2T3Fl+DPX7B40Zv8AuKdzT3TB6pl+HPW7J7iy/Bnr9g8aM3/cU7mnumD1TL8Oet2T3Fl+DPX7B40Zv+4p3NPdMHqmX4c9bsnuLL8Gev2Dxozf9xTuae6YPVMvw563ZPcWX4M9fsHjRm/7inc090weqZfhz1uye4svwZ6/YPGjN/3FO5p7pg9Uy/Dnrdk9xZfgz1+weNGb/uKdzT3TB6pl+HPW7J7iy/Bnr9g8aM3/AHFO5p7pg9Uy/Dnrdk9xZfgz1+wr405v+4pu7b/0nunD1TL8Oet2T3Fl+DPX7Ce5a/29VFqrR3s11CE/R2f4jsSA68br6iMrralLabuIPTeNJ3vIVhneTyIteWo+ZhVAA+rMif7Vsy5jayvXqzXqZEyrXIsaoyEwnHl1Ao0hknkIQhyOTRLMlEkzNRknSdi7Lp9nT+T35mG66Ywzt2b6c1HpdH/W83Oiy++6IsuiJ2VxUmK8VK/hyvn7PdNhUbPGcqPTWcNTqTXajDp8e8pezYYkuNtovLNSjsSkitMzPfHM1NkWZt1sbomY/wBuJrcu3Lz8yy3ZEXTEfCJRQYWqAJ7kj6d1rPvvP3PKgxvdOxxGMW4i9t9pdubNty2zZnbbYJiKpT3M30ij0RnKNDZqBOZorbNQcW8duwkymSjG1EbNRoJtNil3VqK1Sv1rCMrihRxmtQI9Lqk2nRppVFuEvYrmJQbaVuJIicuEZmZpJdpJP9oitsK2woEt+m/03rn1QrkqgUCVBhzIcFdQddqC3W2jabdaaMiNpp071rpeSyy3SNnS6W7U3TbbMVpXa3dBoMzW5k2WTETEV2/KOCJ43cs0f7doGSMm5ePMtfZZzVmXMzNMXV45OvQIbTkWYphpKVbJSiddQ3tXFJtQX6qTuq2nQzvK4ycu3Hd+qbqV4I2T+M0rPB+PY1HkVumybe8u/XdfEV/8Y2XUjg3zSs8HBGzb875yyurJ1YKgSZyZdXhx2jrzDaSJESYu1S4qXCUondmk03llYV68krSTeVzM/J7q7DM7eHkni5XD1Wn+3vwTNbojbyTxctOPjRQYWqAAAAAAAAAAAAAAAAAO4Za+uub4FXjvZjl+/KOr+HMiJYjsupSoy/iNKaQ3atNmglHdMrS0GZKTMXJq4eIQAO9ZP/3G/UvKjmX4jtUarGWqE0zELLr0aM0lyIy2TSWikNsk8lSUEV1ZqP7REaiWVqT6OR5pnZWGK1tjgpG740q7Wl8+1WRhitbLaRhpG6NlK0r8+erlOcqxGzDm/NVfhIdah1ysTqhEafJKXUtSZC3UEskqURKIlFbYZlb5Rp598ZmZddG6ZmeeXN1WbGbnX3xuuumeeao2MTXAEpy1nTMuUMb8O1L3d7x2eM/gsvX9jeuf9ZC7LL6twIlKY5j+rFXzBTcvqWgo2YaXHnwp1VbQkicallHInmbNLTqktqSu6VlhmabL11M1HNapU5VYnyKlNuHLlmlUlbaCQS1kkkqWaU2FeUZXlH5TMzEDd5PzvmjIVTfrGU6n7pqMmKqG9I2LD95ha0OKRdfbcSVqm0naRW6BmyNRfkXYrJpO7/KtnS6zN0t2PKmkzFN0Ts+deJ16r/7ic0ZgyfSKbWUNSs35eryKpSsx7Bkm1tYWWza6wlKUJeYW+lTSkJsOwjMiUi1zdv8ANL78uIu/dE1iflP+4rs/yvTzfPc3Nybbb9t9t1YupHFMbuOK7PrG3iNczBU8xvw5dXeTKmQ4bULGmkieebYtJtT691xaUmSLytN1KSPcGhmZt2ZMTdvpRyM7PuzpibtsxFK8dOPj4mkGNhAAAAAAAAAAAAAAAAAGwpdKqFbqEWl0qI5OqE1ZNxozZaVHumZmdhERFpMzMiItJmRAldm0Wp0+JCnyoppg1BBLiTEKQ60q1JKumts1ElZEZWoOxReUiAaoEMiJElT5UeFBjOzJstxLMSIwhTjrrizJKEIQkjNSlGdhERWmJttm6aRvWttm6YiIrMpJWMkZpoMWTNqdKNqJBmv06e+y6zITHlR3lsLafNhbmzO+2ok37L5FeTamwxlv0+ZZFZjZE0+bYzdHm5UTN0bImYndNJiaUmm7dw7+BExhaoAAAAAAAAAAAAAAAAAAAAAAAAAAAD70yhmX6UTqvg8nlS41YfYWRFGp5wnXGkmSloStTLV/cJRpIzOwr1liTMrxMLPnisOR2Pp+0qWV051OiMwCctvOPIOGpq4paEGvYpRJM1ERpQl1LV49wq8CHEhCH6PfR/On0FTEyBSqeVCh/UL3ZChuS/dKo0k6gcRLb6McuMhJuOKvIt2n8QzuleNREfqdDn6SllsUx0iN1JrTbtp+e173yvV6CmXbbhjNpEftpOKm39VN8/Hb83M81PQ4kH6iTqmm7TyqmaoZrevGlxb0urIQw2tbaUqNyW5EdS02pezNhbyrl77WpnTERfM7q3fjds58M020wzLn6mYttzZu3VzI55v2fO6bJpFaYZu2VfFo4LyQAAAAAAAAAAAAAAAAAAAAAAAAAAAC8w+/FfZkxnlx5MdaXY8hpRoW2tB3kqSpNhkZGVpGQJUceeeuG86t3ZoS23fUarqElYlJW7hEW4QC0CABnTanUqm4b1SqEmoOqcddU7JdW6o3Hlm46szWZnatajUo/KZ2npFrr7rt81XvzLr5rdMz8eXewRVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPvgdPavqPxBXEip8Dp7V9R+IGIqfA6e1fUfiBiKnwOntX1H4gYip8Dp7V9R+IGIqfA6e1fUfiBiKnwOntX1H4gYip8Dp7V9R+IGIqfA6e1fUfiBiKnwOntX1H4gYip8Dp7V9R+IGIqfA6e1fUfiBiKnwOntX1H4gYip8Dp7V9R+IGIqr8Dp7V9R+IGIqfA6e1fUfiBiKqfA6e1fUfiBiKnwOntX1H4gYip8Dp7V9R+IGIqfA6e1fUfiBiKnwOntX1H4gYip8Dp7V9R+IGIqfA6e1fUfiBiKnwOntX1H4gYiqxLycUWLJk+8tph2lu3NjZeuJNVlt87LbAxFUIFkgDs+JGNBiQDEgGJAMSAx5VUiQWFyZspqHGb/6kh9aW0Jt31KMiIJmI3onYtwa1T6m0cimz49QYI7pvRnUOot3ryDMhETE7iJqzMSJSYkAxIBiQDEgGJAMSAqUnSWkAOTp3QQpiQSYkBq3cy0RmYVOerEJqoKMiTBXIbS8ZnuETZqvafMIxW1pVWsNpiRKxiQDEgGJAMSAwqlIvU6eW/GdL9wxMDkoukAdIxOsUQYnWAYnWAYnWAYnWA+bPqXUJdRzTJiSVqODSkMogxjP+HecbS4t27uGozXdt1DBMYrprwKUrKv01kS2s6UGFFUokVeW1BlNpM7DQ+q5eURbuztv/oF130lidYyBidYBidYBidYBidYBidYBidYCuJ1gBydO6ApidYCO5sqU2Nl+eunuqZmPGzGZfTut4h5DJuFrQSzV+gWty5zLosjZWYjnmjLkZPfZluXuxXRHPNECh02FAYOPHYSlKrTeWr7S3FHuqcUelRn5TMfQtPpMrT2YLLYiPx+PG+xaXQ5Oly+7y7YiPx+PG6tSVLTQKdKWZlffkRkWnupYJtRKLV/Fu/oHj/ONPZk6ilkUiYiacW983/smkytNq5ty4pExE0jdEzX6V+bJxOsctwDE6wDE6wDE6wGNMkXoctNu6y4X7piRABZIAlGJFQxIBiQDEgGJARmuZao+YXEPTFOxJSUkgpzBJUokkZmRKQoyJZFaei0j1is21Q2eWKBlrJy11CnOS6zXlNraj1OY0iO3FS4k0LUywhx21ZpMyvKXo8hWhFg2eJFkmJAMSAYkAxIBiQDEgGJADkgGJAWnltSGnGHkE406k0uIPykYmKwm26bZrG+CNTaAtRLmyp7KSP7UZhppy95nVuIu/wDkUO/b/YMyLKTbE3cdfy/5evy/7jnRl0uy4m7jrSOrT84bWfVWZBRY0OKUGnQGzagxCVeNJGZqUpajsvKUZ2mY4mdm351833zWZeW1WpzNTmTmZk1ulr8SMTAYkAxIBiQFp9+1l4t9Ci4hIjgkAGViPOIDEecAxHnAMR5wDEecAxHnAMR5wDEecAxHnAMR5wDEecAxHnAMR5wDEecBXEecAxHnAUxHnAMR5wDEecAxHnAMR5wDEecAxHnAMR5wFFP2pMtOkrAGMJABdaYefNRMMreNCTWskJNRkktBmdm4WkBb3NB7pALi2HmkNuOMrbbdt2S1JMiVdstume7ZaQJWgQyCiylR1S0xnVRUr2apJIUbZKIiO6arLLbDLQJpNKrYZpWmxZSlS1EhCTWpR2JSkrTM9RCERFVx9h+M6pmSy5HeQRGpp1JoURKIlFaR2HpIyMhMxMb0zbNs0lr333GnGm22idN0lHpVdsu2aj3xSZVmVVqntEhTkDZk4RKbNSzIlEe4ZWo0kFZRUaVPfUSGYG2We4hCzUfASArJVdYOQ6hx1bSG221JSZku8ZqWSjLRdLkn5RMSmqyl2U9KVFixMQ5fQ22lKjvLUsiMiSkkmZmZnYQiszNIgiszSFXlVCO4pp+BsHUaFtOLNKi85GgjEzWN8ExMTSYe0pqa2HZKKapcZizbSEqUaEWmSSvKJFhWmZFpD9VK0TEXTFabF5KXtm048hLZvJNSEpVe+ySjTp0F5UmESiASAAAAAAAAAAAAAAAnv04rFYomZUS6JSjrcxcWQ0qlkdm1QaLxkeg9BGklWFvBCUtlGVRzHAzDVpTdHzOprbN5IQSELW61Zsm2lKSaGkvWmd177fJvXisVQ0P1MzDmTMD2WlZhy8nLWEhvKiwkEaEubVwiW4SFFeSX8MisM/IE1neOZgPov6O51zvl3LGZKZlnI5ZygS6hFXLUsr6Ii3Um2o7pJVYpaUlYo/spMrTIyHU0Oozcuy6LLMUVj5O95Vq8/Kyr7cvLxxMx8v8AP9NllN08lVyuV3I0pn6n5jckIblZXuIWcZt66tx1+4kikKbcUaCXFM20nYtR2HcK2TPc3Tdl/ru4uL48f/12fgy6aft8y6/JnvLq/t4vjx0nZ+nZwzxONfUurViufUDNlVr9OOj1WVNuyqQpRLOLsW0MoZNRERHdQgitsGjq77r866bopNd3E5PmObfm6i+6+KTXdxcFHOpH+Ki/1Hf+Uas72jLsjVZrlRytS6HUKUVOy9g1Iczad28222uxJkayu3Ssumi28r9k7RM1HvL1aq+XqWqNlant5phvxX3pFcSm6mO6TZ2pbJSSWgkfrGTpWq8hEQVngHJoSbtNeSZ3rrrBXt/7LoiCCiy5VPr8efBtxsKdGkQ7N3at3FIs/tEQtl3TbfWN8TDJlXTbfF0b4mH1T9TarVM/mrxHgMfR5mlTm00t55o3kz9oaEukttts33XG0makuILZfsru2ksdnV33Z/8A2x3dJ2cv5/PdxvR+YZl2q/747qk7OX85mOONnBNN7XfUTOOdF/TKo5QPJuCycxMp0aLnc1NqVOYaPbNKW4ynZO7ZTaVJU2diSK6dp6RTVZ+Z3E2Yf01j9XH+U15FNdqs77Wcru6WViMXHG+N2ya8j5ud/wAPA/7Cv5zg5EPOQxxIAAAAAAAAAAAAAACRZazRVsoz3apRTYTOXHXHQ6+3tCQlw0maklaX2vs2aQFmVmOsz658STZDT9YvocxGwbJJqR+qZoJN07NZCBm5oznmDOSqYuvvsSXKUh5Ed9tom1qJ40GZLsOw7Lmiwi3TDaIsJHScpfVnOmRaFUKBleTDgRapJOTOlORkvPrM20t3LXDNF0iTuXfKY2snW5mTbNtlIryOjpfM87TZc2ZdIiZrOza0mUs85lyRVn65lyUxDqkklJdfVHacK6tV5SUpUmxJH/Rs0aBjydRfk3YrN7Dptbm6e+b8uYiZ5GvzRmSqZwzDVMz1rYFU6uppcvDNm00ammkM3iQalWGokEZ6d20Vzs27Nvm+7fLHqdRdqMycy+lZ4vhRGzjm9JYUbiGUNocvOLvWWndsKxJKPybwwzvYJTKdmevT6LHy4urU9qix2W2ExER1maib3FKUptR3jPTaVgTWUbXqhZoruW464lJq0BER4zVIjPR3FpcMysO8ZNko9GsTWTajDTLcWCqOUpuQtTjRlcJZaEJWRmd5KeUQiIIe6I69TKwxWWnIxPU+axLisSkuLbcUxcWRLS2R2pNSbDK0jFrLpsuxRwTVfLvnLvi6OCYnmTnPf1Czd9SXojubK3TpRQFLVCaYiqZJq/8ArJJRNGsy1Goxn1GrzdRMY+Bua3zHO1dO8mNm7Yzan9Uc51jJbmQJ9Zpb+WzTGRHYKIptxgorqHUbJbbaSIzNFh2kdpGflO0Wv1ubfl91P7dnBxLZnmmffkdxdTDs4N1HOH7hIitIdS9sWjStaSURWm4tWi8ST3FF5Bqw58MYSAAAAAAAAAAAAAAA3VGoFRrq5BQkNtx4SCcqFQkuIYjR2zOwlOvOGSUkfkK20/IRglNq/krLdIyZSMwtZzgyKrM2xHTmzW4iWbb7jdsX+GlwiSSbpmtF01Ef2iKy1NEITUKBUabCg1J1DT9NqJFhqhGdQ81tLpKNlakGdxxJbqFWHqsAaUBNqNkSpVSlpr8+o03K2XXFraj1ytSNg0+42di0R2kJcefNPl2baiLymQ2MvT3XW4pmLbeOfy4Z+TcydFfmW45mLbeO6aV+G+Z+UJv9V/pplbJecImXMtZ6gVVU9/ZPwJjhIdphqOwsZJQnYEkvKZmlReVFn2hn1mksycyLLL4mvHwfGdzc8y8uytPnRZl5kTWd0/8Aj/7Tu/D4OWV/L1YyxUVUutw1Q5ZNoeb+0lxt1lwrUOsutmpDjavIpBmR7408zKuy5pdG1zc/IvybsN8Un/NsTwwisttt2RFS4glldd0H/ZGKYrLBLoWXfp3Cl1aDBzHMh0XGNPOpp6nUlOupYW4lw2iSom0ldvHtDTakjs8gYYKQjysqQpVZnUig1CBXMMRnGkNqJkpJkZFs2tqZEtepKlW/smYikSbGvYhNRmZlsYmJLL7bThKTdWg7HLyDI9JaU6S1CYjaQtUqgzMxVv3VS6auqVSc8hqJEaTeWtWzIzsLeIiMzM9BFpPQJsy5zLqRFZlfLyrs2/DbFZngd6y19DcnzMuZ0n5p+omX6JVMtlDNKoklM2PFW8Ui8xLU2kkLWs2iJBMOrURkq1J6CHSyvL8ubLpvvtiYpw1pv2T/AMTLtafyjKuy75zM222babprEb9k/GmzDMuPxcizajQ6lmGksxKvTqO44VTTEdSqSyyiyyUuKu4+TCrf+oaLC03ro0Y083WzdbSYjfx/Gm+nK5dukvusm+2kxG+m+I46b6ctPi1mxZZjwiZbS2TjSlLulZararK0/wBBEQxxDXh4EgAAAAAAAAAAAAAAJbR5tIlUSdlitzHaVGlTGahEqqEKebQ+yhbdyQ0j7akKS4dikkZpP9k7QA8oxzUS0Zty2toiMkPnOufZIz/9NaEuF5rtuoRsHqozaNSqFLy5R6mdel1WVGk1aptIcahMlFJy42wTqULcUZuHeWaUkRaCtttARASOpuuZZzzRstx5+ZGcqZjytTvdLDNTQ+umzI6XnX0ONvsNumw7a6ZKStF1VhKvkZmQ3JmzOttibsN1sU27p+kunM5Wpy7Ym/DdbFNtcMxWZ3xWk7dtdnKwE/T+CytTtR+oeUIMU1GciU3UFTXN8zSzEaedUZ/1f0iv20RvvtiPjX8FPsYjbdm2RHxr/qImWBnKvUmpJy5QsvLlSqFlCC7BiVaanZPTHH5C5DrpM2q2Td5djaDMzs0npMyKmfmW3Ybba0tilZ4dtflyKavOsviyyys22RSs8NZrOzgjihA9sqPUadISklKYNTiUq3DNJoMiPgGtO9oyllRg0Wuzp1Xg1+LDkVV5yTNplWUtl1px0zUtKXzSbTiCMzsO8R2bqQ2DGbotDg3XatmaAUduxRQ6WpUyS7Z+y2SEk2kzs3VrKwNgx51ScrMiuVdxnDe8Z7byY5qvmhJpdsI1aLTs3T8phG8hnZEzDDy5mGpvVNqQ5SqtBlUiqOQ1EmU1Hnxtgt1g1WEa0Eq8RGZEr9UzK20Z9Nmxl3zXdMTE037Y4G3o8+3JzJm6tJiYmm+kxSsN059P6K/9qhfUbK8+nGZKaOfJcpUhO7YTseW2ixRabbill/SGSdNbP7b7Zjlmn+pZZ0Nk/szbJjlnDPzifyq29JVln6cOSq2vNcPNWaMFMhUmgULbOxUKmMORlOzZq222zQhLhncavms7CM0lpF7MGn/Vii66kxERu2xTbP0qy5Xd6Ot83xdfSYiLa02xT9V2yKckVq5kojTFpxGdplHMjP8A95waUOXCyJAAAAAAAAAAAAAAAAFLqT3SIwGTJiyYMh2JMjuRJUdVx+M8g0OIVvKSoiMjAY4AAyoVOmVKSmJToT0+WtLi0Ro7anXDS0hTjhklBGZklCTUe8RGYm22bppEVleyy6+aWxWeRiiFGM7IXHkMG1HbfdUhwkm5dMkl9m3QpKi0isolcOpTT3YEQ/7DPRCBeRIqi2HpTdJjqjxlITIkJaaNCDctuEpRM2FeunZbugPSJMyQw6brDLLCFovE2SCM1mSrv6qE7hEflEwQwkTXmHpLbERlz7aTcccJCjMzQnloVZo1iOEXTqM092BEP+wz0QDLeXW4saFLkURuPEqSFrp0lxhtLb6W1m2tTSjZIlklaTSdm4egWm26IiZjZK02XRETMbJ3crytyS83HckobbvoPYobsIiQS1FuJSki+0R+QIRC2JAAAAAAAAAAAAAAAbOm1WVS1uKjMQpJPWJdamw48tJkVuhO2Qs0W27qDSesB0SvQ2MvUqJWqVl6M3VKkaCrcaYlE1mirWhKmmijvXyI5BGbidsSrpfYK0yMwka36mZrzLmWvrRmGjs0A6daiLTNgRSEoPcN19SSWu3yWWI8pF5QmsyOdAOg5Kqk2ZNpmVVZWpuaqfUH9kum4KO1PUTirVrbqTTaZKDQRmZGtw202faTdKwbORfMzFmGLongpFetv/Jv6TMm66MrBF0TO6kYut+7nmnydcplTn/TD6g0SD9OcoRc3Qm4MqXRK4pluTMr16E9tXmJKUOGy2wq8RtR7qz2akLUZqMbtl86bOiMq3FFJpO+btk8PBTijipLqZd86LUW25FkXxSZid837J2xO2kRxW7dlJ3uBZpzDWM1V+p12vMxI1UnOqVKjQoqIjTaiOw07NJEZmW4almaz/aUZjm52bdm3zddSs8UUcTU59+fmTffERM8UU/z57USkf4qL/Ud/wCUYZ3taXQcvJYzK67ErsWLFp8ZCVKr0VliCqOd4koQ4ptKGlk6Z3CvleIzvW2JMhIzoGbM00WnZri07KkOA2S2I0xtUUllAQW2KyRam+8pRbinVGkjI/s/asEVmhtQKOajhS1LMlLVIZNRkkklaaXT0JSRERaiIIIY1NnP02qOzoyI6347iVNolxmJbJmbZF9tiShxpZadxSTFrLpturH1/Fey+bLqxT5xExzTWHfqNTIOYcqzM7zslQ3c1UxL50GhREJhwq+lq5iJJwGjRaUBKjW4mOSUuFoMiuLt6NlkZmXOZNsYo3Rui7jmn/x4ab/lLtZWXbnZU505cY4rSI2Rfxzhjob5w0iflLAzV9T89VH6XZVyrKyrTaTleZinWq83TWENy1lLfM0w0oaSxH2dpoUaE7QzK+a/tHbXO1ebdkW2TbEW7dtI27Z3cEfipqfMc+/S2Zc2RFk120jbtn9uykU5NvDXa447/h4H/YV/OcHPhxoY4kAAAAAAAAAAAAAABs6dWatSDdVSqg7TnHrt95mxLn2bbppXZeSZWnpSZALcGqVSmSnpsCpSY0yTeKVJS4q88SztUTtpnfIz0mSrbRFBIs557zBnqeiVWHGWYsYzKn06O2SUNJPdtWdq1GfltOzeIhO2RDgG+bzTmRijroEWtyodGeQpuRAjL2KXULUa1IdUgiUtJmdt1RmQyRnXxbhiZozxqc22zBF0xbxQkf0/+pmZ/pxUY82iSjkQ4u3cTQZS1qgrfeYWyl1TSVFYpN4jtSaTOywzsGXTau/T3Vt3cXBubGh8wzdJdE2TWIrsndWlKozmLMlczdWZuYMxTSnVaeolSHkNNspsLQlKUNpSRERaN/fMzGLNzbs26brprMtfUai/UXzffNZlHjjm9JYUbiGUNocvOLvWWndsKxJKPybwwzvYJbie/PqiGmahXylRmFX2YijeSylVll4m0tEm2zy2WghI6XnLMlEpk+mwK7HWc1LLTUqUl59UZpolkaWSW2Zab1liiMis0EFZ4DaihJSzFeQqWiU88824ZpJZH9knLxneQkt1RbgQQpR3ptMqK6pCnt0+W0u2K6tJrMrWiQo7uzcTuGZaRay6bLqwvl33Zd2K3e2cyq1yo1Vmu1DNkiXWo1zCVRx+Tt2Ca0tkyskEbZI/ZJNlnkFrs2+67FMzXjXvz8y+/HN0zdHDXbHw4nQa99Xs85gyXTshzK7C90xydVVZqmXHJk9bj63iN51bR3STeIvsESjstUo7Rs5mvzb8qMud3Dxztb2d5vn5uRGTM7OGeG7bXb/w5W/cJEVpDqXti0aVrSSiK03Fq/aJJ7ii8g04cyGMJAAAAAAAAAAAAAAAf//Z]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin/pink.flag/jplayer.pink.flag.seeking.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin/pink.flag/jplayer.pink.flag.video.play.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin/pink.flag/mustache/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin/pink.flag/mustache/jplayer.pink.flag.audio.playlist.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBpZD0ie3tKUExBWUVSfX0iIGNsYXNzPSJqcC1qcGxheWVyIj48L2Rpdj4KPGRpdiBpZD0ie3tXUkFQUEVSfX0iIGNsYXNzPSJqcC1hdWRpbyIgcm9sZT0iYXBwbGljYXRpb24iIGFyaWEtbGFiZWw9Im1lZGlhIHBsYXllciI+Cgk8ZGl2IGNsYXNzPSJqcC10eXBlLXBsYXlsaXN0Ij4KCQk8ZGl2IGNsYXNzPSJqcC1ndWkganAtaW50ZXJmYWNlIj4KCQkJPGRpdiBjbGFzcz0ianAtdm9sdW1lLWNvbnRyb2xzIj4KCQkJCTxidXR0b24gY2xhc3M9ImpwLW11dGUiIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiPm11dGU8L2J1dHRvbj4KCQkJCTxidXR0b24gY2xhc3M9ImpwLXZvbHVtZS1tYXgiIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiPm1heCB2b2x1bWU8L2J1dHRvbj4KCQkJCTxkaXYgY2xhc3M9ImpwLXZvbHVtZS1iYXIiPgoJCQkJCTxkaXYgY2xhc3M9ImpwLXZvbHVtZS1iYXItdmFsdWUiPjwvZGl2PgoJCQkJPC9kaXY+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJqcC1jb250cm9scy1ob2xkZXIiPgoJCQkJPGRpdiBjbGFzcz0ianAtY29udHJvbHMiPgoJCQkJCTxidXR0b24gY2xhc3M9ImpwLXByZXZpb3VzIiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIj5wcmV2aW91czwvYnV0dG9uPgoJCQkJCTxidXR0b24gY2xhc3M9ImpwLXBsYXkiIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiPnBsYXk8L2J1dHRvbj4KCQkJCQk8YnV0dG9uIGNsYXNzPSJqcC1zdG9wIiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIj5zdG9wPC9idXR0b24+CgkJCQkJPGJ1dHRvbiBjbGFzcz0ianAtbmV4dCIgcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCI+bmV4dDwvYnV0dG9uPgoJCQkJPC9kaXY+CgkJCQk8ZGl2IGNsYXNzPSJqcC1wcm9ncmVzcyI+CgkJCQkJPGRpdiBjbGFzcz0ianAtc2Vlay1iYXIiPgoJCQkJCQk8ZGl2IGNsYXNzPSJqcC1wbGF5LWJhciI+PC9kaXY+CgkJCQkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJCTxkaXYgY2xhc3M9ImpwLWN1cnJlbnQtdGltZSIgcm9sZT0idGltZXIiIGFyaWEtbGFiZWw9InRpbWUiPiZuYnNwOzwvZGl2PgoJCQkJPGRpdiBjbGFzcz0ianAtZHVyYXRpb24iIHJvbGU9InRpbWVyIiBhcmlhLWxhYmVsPSJkdXJhdGlvbiI+Jm5ic3A7PC9kaXY+CgkJCQk8ZGl2IGNsYXNzPSJqcC10b2dnbGVzIj4KCQkJCQk8YnV0dG9uIGNsYXNzPSJqcC1yZXBlYXQiIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiPnJlcGVhdDwvYnV0dG9uPgoJCQkJCTxidXR0b24gY2xhc3M9ImpwLXNodWZmbGUiIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiPnNodWZmbGU8L2J1dHRvbj4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJqcC1wbGF5bGlzdCI+CgkJCTx1bD4KCQkJCTxsaT4mbmJzcDs8L2xpPgoJCQk8L3VsPgoJCTwvZGl2PgoJCTxkaXYgY2xhc3M9ImpwLW5vLXNvbHV0aW9uIj4KCQkJPHNwYW4+VXBkYXRlIFJlcXVpcmVkPC9zcGFuPgoJCQlUbyBwbGF5IHRoZSBtZWRpYSB5b3Ugd2lsbCBuZWVkIHRvIGVpdGhlciB1cGRhdGUgeW91ciBicm93c2VyIHRvIGEgcmVjZW50IHZlcnNpb24gb3IgdXBkYXRlIHlvdXIgPGEgaHJlZj0iaHR0cDovL2dldC5hZG9iZS5jb20vZmxhc2hwbGF5ZXIvIiB0YXJnZXQ9Il9ibGFuayI+Rmxhc2ggcGx1Z2luPC9hPi4KCQk8L2Rpdj4KCTwvZGl2Pgo8L2Rpdj4K]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin/pink.flag/mustache/jplayer.pink.flag.audio.single.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBpZD0ie3tKUExBWUVSfX0iIGNsYXNzPSJqcC1qcGxheWVyIj48L2Rpdj4KPGRpdiBpZD0ie3tXUkFQUEVSfX0iIGNsYXNzPSJqcC1hdWRpbyIgcm9sZT0iYXBwbGljYXRpb24iIGFyaWEtbGFiZWw9Im1lZGlhIHBsYXllciI+Cgk8ZGl2IGNsYXNzPSJqcC10eXBlLXNpbmdsZSI+CgkJPGRpdiBjbGFzcz0ianAtZ3VpIGpwLWludGVyZmFjZSI+CgkJCTxkaXYgY2xhc3M9ImpwLXZvbHVtZS1jb250cm9scyI+CgkJCQk8YnV0dG9uIGNsYXNzPSJqcC1tdXRlIiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIj5tdXRlPC9idXR0b24+CgkJCQk8YnV0dG9uIGNsYXNzPSJqcC12b2x1bWUtbWF4IiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIj5tYXggdm9sdW1lPC9idXR0b24+CgkJCQk8ZGl2IGNsYXNzPSJqcC12b2x1bWUtYmFyIj4KCQkJCQk8ZGl2IGNsYXNzPSJqcC12b2x1bWUtYmFyLXZhbHVlIj48L2Rpdj4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0ianAtY29udHJvbHMtaG9sZGVyIj4KCQkJCTxkaXYgY2xhc3M9ImpwLWNvbnRyb2xzIj4KCQkJCQk8YnV0dG9uIGNsYXNzPSJqcC1wbGF5IiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIj5wbGF5PC9idXR0b24+CgkJCQkJPGJ1dHRvbiBjbGFzcz0ianAtc3RvcCIgcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCI+c3RvcDwvYnV0dG9uPgoJCQkJPC9kaXY+CgkJCQk8ZGl2IGNsYXNzPSJqcC1wcm9ncmVzcyI+CgkJCQkJPGRpdiBjbGFzcz0ianAtc2Vlay1iYXIiPgoJCQkJCQk8ZGl2IGNsYXNzPSJqcC1wbGF5LWJhciI+PC9kaXY+CgkJCQkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJCTxkaXYgY2xhc3M9ImpwLWN1cnJlbnQtdGltZSIgcm9sZT0idGltZXIiIGFyaWEtbGFiZWw9InRpbWUiPiZuYnNwOzwvZGl2PgoJCQkJPGRpdiBjbGFzcz0ianAtZHVyYXRpb24iIHJvbGU9InRpbWVyIiBhcmlhLWxhYmVsPSJkdXJhdGlvbiI+Jm5ic3A7PC9kaXY+CgkJCQk8ZGl2IGNsYXNzPSJqcC10b2dnbGVzIj4KCQkJCQk8YnV0dG9uIGNsYXNzPSJqcC1yZXBlYXQiIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiPnJlcGVhdDwvYnV0dG9uPgoJCQkJPC9kaXY+CgkJCTwvZGl2PgoJCTwvZGl2PgoJCTxkaXYgY2xhc3M9ImpwLWRldGFpbHMiPgoJCQk8ZGl2IGNsYXNzPSJqcC10aXRsZSIgYXJpYS1sYWJlbD0idGl0bGUiPiZuYnNwOzwvZGl2PgoJCTwvZGl2PgoJCTxkaXYgY2xhc3M9ImpwLW5vLXNvbHV0aW9uIj4KCQkJPHNwYW4+VXBkYXRlIFJlcXVpcmVkPC9zcGFuPgoJCQlUbyBwbGF5IHRoZSBtZWRpYSB5b3Ugd2lsbCBuZWVkIHRvIGVpdGhlciB1cGRhdGUgeW91ciBicm93c2VyIHRvIGEgcmVjZW50IHZlcnNpb24gb3IgdXBkYXRlIHlvdXIgPGEgaHJlZj0iaHR0cDovL2dldC5hZG9iZS5jb20vZmxhc2hwbGF5ZXIvIiB0YXJnZXQ9Il9ibGFuayI+Rmxhc2ggcGx1Z2luPC9hPi4KCQk8L2Rpdj4KCTwvZGl2Pgo8L2Rpdj4K]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin/pink.flag/mustache/jplayer.pink.flag.audio.stream.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBpZD0ie3tKUExBWUVSfX0iIGNsYXNzPSJqcC1qcGxheWVyIj48L2Rpdj4KPGRpdiBpZD0ie3tXUkFQUEVSfX0iIGNsYXNzPSJqcC1hdWRpby1zdHJlYW0iIHJvbGU9ImFwcGxpY2F0aW9uIiBhcmlhLWxhYmVsPSJtZWRpYSBwbGF5ZXIiPgoJPGRpdiBjbGFzcz0ianAtdHlwZS1zaW5nbGUiPgoJCTxkaXYgY2xhc3M9ImpwLWd1aSBqcC1pbnRlcmZhY2UiPgoJCQk8ZGl2IGNsYXNzPSJqcC12b2x1bWUtY29udHJvbHMiPgoJCQkJPGJ1dHRvbiBjbGFzcz0ianAtbXV0ZSIgcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCI+bXV0ZTwvYnV0dG9uPgoJCQkJPGJ1dHRvbiBjbGFzcz0ianAtdm9sdW1lLW1heCIgcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCI+bWF4IHZvbHVtZTwvYnV0dG9uPgoJCQkJPGRpdiBjbGFzcz0ianAtdm9sdW1lLWJhciI+CgkJCQkJPGRpdiBjbGFzcz0ianAtdm9sdW1lLWJhci12YWx1ZSI+PC9kaXY+CgkJCQk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImpwLWNvbnRyb2xzIj4KCQkJCTxidXR0b24gY2xhc3M9ImpwLXBsYXkiIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiPnBsYXk8L2J1dHRvbj4KCQkJPC9kaXY+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ianAtZGV0YWlscyI+CgkJCTxkaXYgY2xhc3M9ImpwLXRpdGxlIiBhcmlhLWxhYmVsPSJ0aXRsZSI+Jm5ic3A7PC9kaXY+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ianAtbm8tc29sdXRpb24iPgoJCQk8c3Bhbj5VcGRhdGUgUmVxdWlyZWQ8L3NwYW4+CgkJCVRvIHBsYXkgdGhlIG1lZGlhIHlvdSB3aWxsIG5lZWQgdG8gZWl0aGVyIHVwZGF0ZSB5b3VyIGJyb3dzZXIgdG8gYSByZWNlbnQgdmVyc2lvbiBvciB1cGRhdGUgeW91ciA8YSBocmVmPSJodHRwOi8vZ2V0LmFkb2JlLmNvbS9mbGFzaHBsYXllci8iIHRhcmdldD0iX2JsYW5rIj5GbGFzaCBwbHVnaW48L2E+LgoJCTwvZGl2PgoJPC9kaXY+CjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin/pink.flag/mustache/jplayer.pink.flag.video.playlist.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBpZD0ie3tXUkFQUEVSfX0iIGNsYXNzPSJqcC12aWRlbyAiIHJvbGU9ImFwcGxpY2F0aW9uIiBhcmlhLWxhYmVsPSJtZWRpYSBwbGF5ZXIiPgoJPGRpdiBjbGFzcz0ianAtdHlwZS1wbGF5bGlzdCI+CgkJPGRpdiBpZD0ie3tKUExBWUVSfX0iIGNsYXNzPSJqcC1qcGxheWVyIj48L2Rpdj4KCQk8ZGl2IGNsYXNzPSJqcC1ndWkiPgoJCQk8ZGl2IGNsYXNzPSJqcC12aWRlby1wbGF5Ij4KCQkJCTxidXR0b24gY2xhc3M9ImpwLXZpZGVvLXBsYXktaWNvbiIgcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCI+cGxheTwvYnV0dG9uPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0ianAtaW50ZXJmYWNlIj4KCQkJCTxkaXYgY2xhc3M9ImpwLXByb2dyZXNzIj4KCQkJCQk8ZGl2IGNsYXNzPSJqcC1zZWVrLWJhciI+CgkJCQkJCTxkaXYgY2xhc3M9ImpwLXBsYXktYmFyIj48L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQkJPGRpdiBjbGFzcz0ianAtY3VycmVudC10aW1lIiByb2xlPSJ0aW1lciIgYXJpYS1sYWJlbD0idGltZSI+Jm5ic3A7PC9kaXY+CgkJCQk8ZGl2IGNsYXNzPSJqcC1kdXJhdGlvbiIgcm9sZT0idGltZXIiIGFyaWEtbGFiZWw9ImR1cmF0aW9uIj4mbmJzcDs8L2Rpdj4KCQkJCTxkaXYgY2xhc3M9ImpwLWRldGFpbHMiPgoJCQkJCTxkaXYgY2xhc3M9ImpwLXRpdGxlIiBhcmlhLWxhYmVsPSJ0aXRsZSI+Jm5ic3A7PC9kaXY+CgkJCQk8L2Rpdj4KCQkJCTxkaXYgY2xhc3M9ImpwLWNvbnRyb2xzLWhvbGRlciI+CgkJCQkJPGRpdiBjbGFzcz0ianAtdm9sdW1lLWNvbnRyb2xzIj4KCQkJCQkJPGJ1dHRvbiBjbGFzcz0ianAtbXV0ZSIgcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCI+bXV0ZTwvYnV0dG9uPgoJCQkJCQk8YnV0dG9uIGNsYXNzPSJqcC12b2x1bWUtbWF4IiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIj5tYXggdm9sdW1lPC9idXR0b24+CgkJCQkJCTxkaXYgY2xhc3M9ImpwLXZvbHVtZS1iYXIiPgoJCQkJCQkJPGRpdiBjbGFzcz0ianAtdm9sdW1lLWJhci12YWx1ZSI+PC9kaXY+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImpwLWNvbnRyb2xzIj4KCQkJCQkJPGJ1dHRvbiBjbGFzcz0ianAtcHJldmlvdXMiIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiPnByZXZpb3VzPC9idXR0b24+CgkJCQkJCTxidXR0b24gY2xhc3M9ImpwLXBsYXkiIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiPnBsYXk8L2J1dHRvbj4KCQkJCQkJPGJ1dHRvbiBjbGFzcz0ianAtc3RvcCIgcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCI+c3RvcDwvYnV0dG9uPgoJCQkJCQk8YnV0dG9uIGNsYXNzPSJqcC1uZXh0IiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIj5uZXh0PC9idXR0b24+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ianAtdG9nZ2xlcyI+CgkJCQkJCTxidXR0b24gY2xhc3M9ImpwLXJlcGVhdCIgcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCI+cmVwZWF0PC9idXR0b24+CgkJCQkJCTxidXR0b24gY2xhc3M9ImpwLXNodWZmbGUiIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiPnNodWZmbGU8L2J1dHRvbj4KCQkJCQkJPGJ1dHRvbiBjbGFzcz0ianAtZnVsbC1zY3JlZW4iIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiPmZ1bGwgc2NyZWVuPC9idXR0b24+CgkJCQkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJPC9kaXY+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ianAtcGxheWxpc3QiPgoJCQk8dWw+CgkJCQk8IS0tIFRoZSBtZXRob2QgUGxheWxpc3QuZGlzcGxheVBsYXlsaXN0KCkgdXNlcyB0aGlzIHVub3JkZXJlZCBsaXN0IC0tPgoJCQkJPGxpPjwvbGk+CgkJCTwvdWw+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ianAtbm8tc29sdXRpb24iPgoJCQk8c3Bhbj5VcGRhdGUgUmVxdWlyZWQ8L3NwYW4+CgkJCVRvIHBsYXkgdGhlIG1lZGlhIHlvdSB3aWxsIG5lZWQgdG8gZWl0aGVyIHVwZGF0ZSB5b3VyIGJyb3dzZXIgdG8gYSByZWNlbnQgdmVyc2lvbiBvciB1cGRhdGUgeW91ciA8YSBocmVmPSJodHRwOi8vZ2V0LmFkb2JlLmNvbS9mbGFzaHBsYXllci8iIHRhcmdldD0iX2JsYW5rIj5GbGFzaCBwbHVnaW48L2E+LgoJCTwvZGl2PgoJPC9kaXY+CjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin/pink.flag/mustache/jplayer.pink.flag.video.single.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBpZD0ie3tXUkFQUEVSfX0iIGNsYXNzPSJqcC12aWRlbyAiIHJvbGU9ImFwcGxpY2F0aW9uIiBhcmlhLWxhYmVsPSJtZWRpYSBwbGF5ZXIiPgoJPGRpdiBjbGFzcz0ianAtdHlwZS1zaW5nbGUiPgoJCTxkaXYgaWQ9Int7SlBMQVlFUn19IiBjbGFzcz0ianAtanBsYXllciI+PC9kaXY+CgkJPGRpdiBjbGFzcz0ianAtZ3VpIj4KCQkJPGRpdiBjbGFzcz0ianAtdmlkZW8tcGxheSI+CgkJCQk8YnV0dG9uIGNsYXNzPSJqcC12aWRlby1wbGF5LWljb24iIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiPnBsYXk8L2J1dHRvbj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImpwLWludGVyZmFjZSI+CgkJCQk8ZGl2IGNsYXNzPSJqcC1wcm9ncmVzcyI+CgkJCQkJPGRpdiBjbGFzcz0ianAtc2Vlay1iYXIiPgoJCQkJCQk8ZGl2IGNsYXNzPSJqcC1wbGF5LWJhciI+PC9kaXY+CgkJCQkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJCTxkaXYgY2xhc3M9ImpwLWN1cnJlbnQtdGltZSIgcm9sZT0idGltZXIiIGFyaWEtbGFiZWw9InRpbWUiPiZuYnNwOzwvZGl2PgoJCQkJPGRpdiBjbGFzcz0ianAtZHVyYXRpb24iIHJvbGU9InRpbWVyIiBhcmlhLWxhYmVsPSJkdXJhdGlvbiI+Jm5ic3A7PC9kaXY+CgkJCQk8ZGl2IGNsYXNzPSJqcC1kZXRhaWxzIj4KCQkJCQk8ZGl2IGNsYXNzPSJqcC10aXRsZSIgYXJpYS1sYWJlbD0idGl0bGUiPiZuYnNwOzwvZGl2PgoJCQkJPC9kaXY+CgkJCQk8ZGl2IGNsYXNzPSJqcC1jb250cm9scy1ob2xkZXIiPgoJCQkJCTxkaXYgY2xhc3M9ImpwLXZvbHVtZS1jb250cm9scyI+CgkJCQkJCTxidXR0b24gY2xhc3M9ImpwLW11dGUiIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiPm11dGU8L2J1dHRvbj4KCQkJCQkJPGJ1dHRvbiBjbGFzcz0ianAtdm9sdW1lLW1heCIgcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCI+bWF4IHZvbHVtZTwvYnV0dG9uPgoJCQkJCQk8ZGl2IGNsYXNzPSJqcC12b2x1bWUtYmFyIj4KCQkJCQkJCTxkaXYgY2xhc3M9ImpwLXZvbHVtZS1iYXItdmFsdWUiPjwvZGl2PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJqcC1jb250cm9scyI+CgkJCQkJCTxidXR0b24gY2xhc3M9ImpwLXBsYXkiIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiPnBsYXk8L2J1dHRvbj4KCQkJCQkJPGJ1dHRvbiBjbGFzcz0ianAtc3RvcCIgcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCI+c3RvcDwvYnV0dG9uPgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImpwLXRvZ2dsZXMiPgoJCQkJCQk8YnV0dG9uIGNsYXNzPSJqcC1yZXBlYXQiIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiPnJlcGVhdDwvYnV0dG9uPgoJCQkJCQk8YnV0dG9uIGNsYXNzPSJqcC1mdWxsLXNjcmVlbiIgcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCI+ZnVsbCBzY3JlZW48L2J1dHRvbj4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJqcC1uby1zb2x1dGlvbiI+CgkJCTxzcGFuPlVwZGF0ZSBSZXF1aXJlZDwvc3Bhbj4KCQkJVG8gcGxheSB0aGUgbWVkaWEgeW91IHdpbGwgbmVlZCB0byBlaXRoZXIgdXBkYXRlIHlvdXIgYnJvd3NlciB0byBhIHJlY2VudCB2ZXJzaW9uIG9yIHVwZGF0ZSB5b3VyIDxhIGhyZWY9Imh0dHA6Ly9nZXQuYWRvYmUuY29tL2ZsYXNocGxheWVyLyIgdGFyZ2V0PSJfYmxhbmsiPkZsYXNoIHBsdWdpbjwvYT4uCgkJPC9kaXY+Cgk8L2Rpdj4KPC9kaXY+Cg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin_ol/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin_ol/blue.monday/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin_ol/blue.monday/jplayer.blue.monday.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoNCiAqIFNraW4gZm9yIGpQbGF5ZXIgUGx1Z2luIChqUXVlcnkgSmF2YVNjcmlwdCBMaWJyYXJ5KQ0KICogaHR0cDovL3d3dy5qcGxheWVyLm9yZw0KICoNCiAqIFNraW4gTmFtZTogQmx1ZSBNb25kYXkNCiAqDQogKiBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxMiBIYXBweXdvcm0gTHRkDQogKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIEdQTCBsaWNlbnNlcy4NCiAqICAtIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwDQogKiAgLSBodHRwOi8vd3d3LmdudS5vcmcvY29weWxlZnQvZ3BsLmh0bWwNCiAqDQogKiBBdXRob3I6IFNpbHZpYSBCZW52ZW51dGkNCiAqIFNraW4gVmVyc2lvbjogNC4zIChqUGxheWVyIDIuMi4wKQ0KICogRGF0ZTogMTl0aCBOb3ZlbWJlciAyMDEyDQogKi8NCg0KZGl2LmpwLWF1ZGlvLA0KZGl2LmpwLWF1ZGlvLXN0cmVhbSwNCmRpdi5qcC12aWRlbyB7DQoNCgkvKiBFZGl0IHRoZSBmb250LXNpemUgdG8gY291bnRlcmFjdCBpbmhlcml0ZWQgZm9udCBzaXppbmcuDQoJICogRWcuIDEuMjVlbSA9IDEgLyAwLjhlbQ0KCSAqLw0KDQoJZm9udC1zaXplOjEuMjVlbTsgLyogMS4yNWVtIGZvciB0ZXN0aW5nIGluIHNpdGUgcGFnZXMgKi8gLyogTm8gcGFyZW50IENTUyB0aGF0IGNhbiBlZmZlY3QgdGhlIHNpemUgaW4gdGhlIGRlbW9zIFpJUCAqLw0KDQoJZm9udC1mYW1pbHk6VmVyZGFuYSwgQXJpYWwsIHNhbnMtc2VyaWY7DQoJbGluZS1oZWlnaHQ6MS42Ow0KCWNvbG9yOiAjNjY2Ow0KCWJvcmRlcjoxcHggc29saWQgIzAwOWJlMzsNCgliYWNrZ3JvdW5kLWNvbG9yOiNlZWU7DQp9DQpkaXYuanAtYXVkaW8gew0KCXdpZHRoOjQyMHB4Ow0KfQ0KZGl2LmpwLWF1ZGlvLXN0cmVhbSB7DQoJd2lkdGg6MTgycHg7DQp9DQpkaXYuanAtdmlkZW8tMjcwcCB7DQoJd2lkdGg6NDgwcHg7DQp9DQpkaXYuanAtdmlkZW8tMzYwcCB7DQoJd2lkdGg6NjQwcHg7DQp9DQpkaXYuanAtdmlkZW8tZnVsbCB7DQoJLyogUnVsZXMgZm9yIElFNiAoZnVsbC1zY3JlZW4pICovDQoJd2lkdGg6NDgwcHg7DQoJaGVpZ2h0OjI3MHB4Ow0KCS8qIFJ1bGVzIGZvciBJRTcgKGZ1bGwtc2NyZWVuKSAtIE90aGVyd2lzZSB0aGUgcmVsYXRpdmUgY29udGFpbmVyIGNhdXNlcyBvdGhlciBwYWdlIGl0ZW1zIHRoYXQgYXJlIG5vdCBwb3NpdGlvbjpzdGF0aWMgKGRlZmF1bHQpIHRvIGFwcGVhciBvdmVyIHRoZSB2aWRlby9ndWkuICovDQoJcG9zaXRpb246c3RhdGljICFpbXBvcnRhbnQ7IHBvc2l0aW9uOnJlbGF0aXZlOw0KfQ0KDQovKiBUaGUgei1pbmRleCBydWxlIGlzIGRlZmluZWQgaW4gdGhpcyBtYW5uZXIgdG8gZW5hYmxlIFBvcGNvcm4gcGx1Z2lucyB0aGF0IGFkZCBvdmVybGF5cyB0byB2aWRlbyBhcmVhLiBFRy4gU3VidGl0bGVzLiAqLw0KZGl2LmpwLXZpZGVvLWZ1bGwgZGl2IGRpdiB7DQoJei1pbmRleDoxMDAwOw0KfQ0KDQpkaXYuanAtdmlkZW8tZnVsbCBkaXYuanAtanBsYXllciB7DQoJdG9wOiAwOw0KCWxlZnQ6IDA7DQoJcG9zaXRpb246IGZpeGVkICFpbXBvcnRhbnQ7IHBvc2l0aW9uOiByZWxhdGl2ZTsgLyogUnVsZXMgZm9yIElFNiAoZnVsbC1zY3JlZW4pICovDQoJb3ZlcmZsb3c6IGhpZGRlbjsNCn0NCg0KZGl2LmpwLXZpZGVvLWZ1bGwgZGl2LmpwLWd1aSB7DQoJcG9zaXRpb246IGZpeGVkICFpbXBvcnRhbnQ7IHBvc2l0aW9uOiBzdGF0aWM7IC8qIFJ1bGVzIGZvciBJRTYgKGZ1bGwtc2NyZWVuKSAqLw0KCXRvcDogMDsNCglsZWZ0OiAwOw0KCXdpZHRoOjEwMCU7DQoJaGVpZ2h0OjEwMCU7DQoJei1pbmRleDoxMDAxOyAvKiAxIGxheWVyIGFib3ZlIHRoZSBvdGhlcnMuICovDQp9DQoNCmRpdi5qcC12aWRlby1mdWxsIGRpdi5qcC1pbnRlcmZhY2Ugew0KCXBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50OyBwb3NpdGlvbjogcmVsYXRpdmU7IC8qIFJ1bGVzIGZvciBJRTYgKGZ1bGwtc2NyZWVuKSAqLw0KCWJvdHRvbTogMDsNCglsZWZ0OiAwOw0KfQ0KDQpkaXYuanAtaW50ZXJmYWNlIHsNCglwb3NpdGlvbjogcmVsYXRpdmU7DQoJYmFja2dyb3VuZC1jb2xvcjojZWVlOw0KCXdpZHRoOjEwMCU7DQp9DQoNCmRpdi5qcC1hdWRpbyBkaXYuanAtdHlwZS1zaW5nbGUgZGl2LmpwLWludGVyZmFjZSB7DQoJaGVpZ2h0OjgwcHg7DQp9DQpkaXYuanAtYXVkaW8gZGl2LmpwLXR5cGUtcGxheWxpc3QgZGl2LmpwLWludGVyZmFjZSB7DQoJaGVpZ2h0OjgwcHg7DQp9DQoNCmRpdi5qcC1hdWRpby1zdHJlYW0gZGl2LmpwLXR5cGUtc2luZ2xlIGRpdi5qcC1pbnRlcmZhY2Ugew0KCWhlaWdodDo4MHB4Ow0KfQ0KDQpkaXYuanAtdmlkZW8gZGl2LmpwLWludGVyZmFjZSB7DQoJYm9yZGVyLXRvcDoxcHggc29saWQgIzAwOWJlMzsNCn0NCg0KLyogQGdyb3VwIENPTlRST0xTICovDQoNCmRpdi5qcC1jb250cm9scy1ob2xkZXIgew0KCWNsZWFyOiBib3RoOw0KCXdpZHRoOjQ0MHB4Ow0KCW1hcmdpbjowIGF1dG87DQoJcG9zaXRpb246IHJlbGF0aXZlOw0KCW92ZXJmbG93OmhpZGRlbjsNCgl0b3A6LThweDsgLyogVGhpcyBuZWdhdGl2ZSB2YWx1ZSBkZXBlbmRzIG9uIHRoZSBzaXplIG9mIHRoZSB0ZXh0IGluIGpwLWN1cnJlbnRUaW1lIGFuZCBqcC1kdXJhdGlvbiAqLw0KfQ0KDQpkaXYuanAtaW50ZXJmYWNlIHVsLmpwLWNvbnRyb2xzIHsNCglsaXN0LXN0eWxlLXR5cGU6bm9uZTsNCgltYXJnaW46MDsNCglwYWRkaW5nOiAwOw0KCW92ZXJmbG93OmhpZGRlbjsNCn0NCg0KZGl2LmpwLWF1ZGlvIHVsLmpwLWNvbnRyb2xzIHsNCgl3aWR0aDogMzgwcHg7DQoJcGFkZGluZzoyMHB4IDIwcHggMCAyMHB4Ow0KfQ0KDQpkaXYuanAtYXVkaW8tc3RyZWFtIHVsLmpwLWNvbnRyb2xzIHsNCgl3aWR0aDogMTQycHg7DQoJcGFkZGluZzoyMHB4IDIwcHggMCAyMHB4Ow0KfQ0KDQpkaXYuanAtdmlkZW8gZGl2LmpwLXR5cGUtc2luZ2xlIHVsLmpwLWNvbnRyb2xzIHsNCgl3aWR0aDogNzhweDsNCgltYXJnaW4tbGVmdDogMjAwcHg7DQp9DQoNCmRpdi5qcC12aWRlbyBkaXYuanAtdHlwZS1wbGF5bGlzdCB1bC5qcC1jb250cm9scyB7DQoJd2lkdGg6IDEzNHB4Ow0KCW1hcmdpbi1sZWZ0OiAxNzJweDsNCn0NCmRpdi5qcC12aWRlbyB1bC5qcC1jb250cm9scywNCmRpdi5qcC1pbnRlcmZhY2UgdWwuanAtY29udHJvbHMgbGkgew0KCWRpc3BsYXk6aW5saW5lOw0KCWZsb2F0OiBsZWZ0Ow0KfQ0KDQpkaXYuanAtaW50ZXJmYWNlIHVsLmpwLWNvbnRyb2xzIGEgew0KCWRpc3BsYXk6YmxvY2s7DQoJb3ZlcmZsb3c6aGlkZGVuOw0KCXRleHQtaW5kZW50Oi05OTk5cHg7DQp9DQphLmpwLXBsYXksDQphLmpwLXBhdXNlIHsNCgl3aWR0aDo0MHB4Ow0KCWhlaWdodDo0MHB4Ow0KfQ0KDQphLmpwLXBsYXkgew0KCWJhY2tncm91bmQ6IHVybCgianBsYXllci5ibHVlLm1vbmRheS5qcGciKSAwIDAgbm8tcmVwZWF0Ow0KfQ0KYS5qcC1wbGF5OmhvdmVyIHsNCgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIuYmx1ZS5tb25kYXkuanBnIikgLTQxcHggMCBuby1yZXBlYXQ7DQp9DQphLmpwLXBhdXNlIHsNCgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIuYmx1ZS5tb25kYXkuanBnIikgMCAtNDJweCBuby1yZXBlYXQ7DQoJZGlzcGxheTogbm9uZTsNCn0NCmEuanAtcGF1c2U6aG92ZXIgew0KCWJhY2tncm91bmQ6IHVybCgianBsYXllci5ibHVlLm1vbmRheS5qcGciKSAtNDFweCAtNDJweCBuby1yZXBlYXQ7DQp9DQoNCmEuanAtc3RvcCwgYS5qcC1wcmV2aW91cywgYS5qcC1uZXh0IHsNCgl3aWR0aDoyOHB4Ow0KCWhlaWdodDoyOHB4Ow0KCW1hcmdpbi10b3A6NnB4Ow0KfQ0KDQphLmpwLXN0b3Agew0KCWJhY2tncm91bmQ6IHVybCgianBsYXllci5ibHVlLm1vbmRheS5qcGciKSAwIC04M3B4IG5vLXJlcGVhdDsNCgltYXJnaW4tbGVmdDoxMHB4Ow0KfQ0KDQphLmpwLXN0b3A6aG92ZXIgew0KCWJhY2tncm91bmQ6IHVybCgianBsYXllci5ibHVlLm1vbmRheS5qcGciKSAtMjlweCAtODNweCBuby1yZXBlYXQ7DQp9DQoNCmEuanAtcHJldmlvdXMgew0KCWJhY2tncm91bmQ6IHVybCgianBsYXllci5ibHVlLm1vbmRheS5qcGciKSAwIC0xMTJweCBuby1yZXBlYXQ7DQp9DQphLmpwLXByZXZpb3VzOmhvdmVyIHsNCgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIuYmx1ZS5tb25kYXkuanBnIikgLTI5cHggLTExMnB4IG5vLXJlcGVhdDsNCn0NCg0KYS5qcC1uZXh0IHsNCgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIuYmx1ZS5tb25kYXkuanBnIikgMCAtMTQxcHggbm8tcmVwZWF0Ow0KfQ0KYS5qcC1uZXh0OmhvdmVyIHsNCgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIuYmx1ZS5tb25kYXkuanBnIikgLTI5cHggLTE0MXB4IG5vLXJlcGVhdDsNCn0NCg0KLyogQGVuZCAqLw0KDQovKiBAZ3JvdXAgcHJvZ3Jlc3MgYmFyICovDQoNCmRpdi5qcC1wcm9ncmVzcyB7DQoJb3ZlcmZsb3c6aGlkZGVuOw0KCWJhY2tncm91bmQtY29sb3I6ICNkZGQ7DQp9DQpkaXYuanAtYXVkaW8gZGl2LmpwLXByb2dyZXNzIHsNCglwb3NpdGlvbjogYWJzb2x1dGU7DQoJdG9wOjMycHg7DQoJaGVpZ2h0OjE1cHg7DQp9DQpkaXYuanAtYXVkaW8gZGl2LmpwLXR5cGUtc2luZ2xlIGRpdi5qcC1wcm9ncmVzcyB7DQoJbGVmdDoxMTBweDsNCgl3aWR0aDoxODZweDsNCn0NCmRpdi5qcC1hdWRpbyBkaXYuanAtdHlwZS1wbGF5bGlzdCBkaXYuanAtcHJvZ3Jlc3Mgew0KCWxlZnQ6MTY2cHg7DQoJd2lkdGg6MTMwcHg7DQp9DQpkaXYuanAtdmlkZW8gZGl2LmpwLXByb2dyZXNzIHsNCgl0b3A6MHB4Ow0KCWxlZnQ6MHB4Ow0KCXdpZHRoOjEwMCU7DQoJaGVpZ2h0OjEwcHg7DQp9DQpkaXYuanAtc2Vlay1iYXIgew0KCWJhY2tncm91bmQ6IHVybCgianBsYXllci5ibHVlLm1vbmRheS5qcGciKSAwIC0yMDJweCByZXBlYXQteDsNCgl3aWR0aDowcHg7DQoJaGVpZ2h0OjEwMCU7DQoJY3Vyc29yOiBwb2ludGVyOw0KfQ0KZGl2LmpwLXBsYXktYmFyIHsNCgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIuYmx1ZS5tb25kYXkuanBnIikgMCAtMjE4cHggcmVwZWF0LXggOw0KCXdpZHRoOjBweDsNCgloZWlnaHQ6MTAwJTsNCn0NCg0KLyogVGhlIHNlZWtpbmcgY2xhc3MgaXMgYWRkZWQvcmVtb3ZlZCBpbnNpZGUgalBsYXllciAqLw0KZGl2LmpwLXNlZWtpbmctYmcgew0KCWJhY2tncm91bmQ6IHVybCgianBsYXllci5ibHVlLm1vbmRheS5zZWVraW5nLmdpZiIpOw0KfQ0KDQovKiBAZW5kICovDQoNCi8qIEBncm91cCB2b2x1bWUgY29udHJvbHMgKi8NCg0KDQphLmpwLW11dGUsDQphLmpwLXVubXV0ZSwNCmEuanAtdm9sdW1lLW1heCB7DQoJd2lkdGg6MThweDsNCgloZWlnaHQ6MTVweDsNCgltYXJnaW4tdG9wOjEycHg7DQp9DQoNCmRpdi5qcC1hdWRpbyBkaXYuanAtdHlwZS1zaW5nbGUgYS5qcC1tdXRlLA0KZGl2LmpwLWF1ZGlvIGRpdi5qcC10eXBlLXNpbmdsZSBhLmpwLXVubXV0ZSB7DQoJbWFyZ2luLWxlZnQ6IDIxMHB4OwkNCn0NCmRpdi5qcC1hdWRpbyBkaXYuanAtdHlwZS1wbGF5bGlzdCBhLmpwLW11dGUsDQpkaXYuanAtYXVkaW8gZGl2LmpwLXR5cGUtcGxheWxpc3QgYS5qcC11bm11dGUgew0KCW1hcmdpbi1sZWZ0OiAxNTRweDsNCn0NCg0KZGl2LmpwLWF1ZGlvLXN0cmVhbSBkaXYuanAtdHlwZS1zaW5nbGUgYS5qcC1tdXRlLA0KZGl2LmpwLWF1ZGlvLXN0cmVhbSBkaXYuanAtdHlwZS1zaW5nbGUgYS5qcC11bm11dGUgew0KCW1hcmdpbi1sZWZ0OjEwcHg7DQp9DQoNCmRpdi5qcC1hdWRpbyBhLmpwLXZvbHVtZS1tYXgsDQpkaXYuanAtYXVkaW8tc3RyZWFtIGEuanAtdm9sdW1lLW1heCB7DQoJbWFyZ2luLWxlZnQ6IDU2cHg7CQ0KfQ0KDQpkaXYuanAtdmlkZW8gYS5qcC1tdXRlLA0KZGl2LmpwLXZpZGVvIGEuanAtdW5tdXRlLA0KZGl2LmpwLXZpZGVvIGEuanAtdm9sdW1lLW1heCB7DQoJcG9zaXRpb246IGFic29sdXRlOw0KCXRvcDoxMnB4Ow0KCW1hcmdpbi10b3A6MDsNCn0NCg0KZGl2LmpwLXZpZGVvIGEuanAtbXV0ZSwNCmRpdi5qcC12aWRlbyBhLmpwLXVubXV0ZSB7DQoJbGVmdDogNTBweDsNCn0NCg0KZGl2LmpwLXZpZGVvIGEuanAtdm9sdW1lLW1heCB7DQoJbGVmdDogMTM0cHg7DQp9DQoNCmEuanAtbXV0ZSB7DQoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLmJsdWUubW9uZGF5LmpwZyIpIDAgLTE3MHB4IG5vLXJlcGVhdDsNCn0NCmEuanAtbXV0ZTpob3ZlciB7DQoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLmJsdWUubW9uZGF5LmpwZyIpIC0xOXB4IC0xNzBweCBuby1yZXBlYXQ7DQp9DQphLmpwLXVubXV0ZSB7DQoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLmJsdWUubW9uZGF5LmpwZyIpIC02MHB4IC0xNzBweCBuby1yZXBlYXQ7DQoJZGlzcGxheTogbm9uZTsNCn0NCmEuanAtdW5tdXRlOmhvdmVyIHsNCgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIuYmx1ZS5tb25kYXkuanBnIikgLTc5cHggLTE3MHB4IG5vLXJlcGVhdDsNCn0NCmEuanAtdm9sdW1lLW1heCB7DQoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLmJsdWUubW9uZGF5LmpwZyIpIDAgLTE4NnB4IG5vLXJlcGVhdDsNCn0NCmEuanAtdm9sdW1lLW1heDpob3ZlciB7DQoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLmJsdWUubW9uZGF5LmpwZyIpIC0xOXB4IC0xODZweCBuby1yZXBlYXQ7DQp9DQoNCmRpdi5qcC12b2x1bWUtYmFyIHsNCglwb3NpdGlvbjogYWJzb2x1dGU7DQoJb3ZlcmZsb3c6aGlkZGVuOw0KCWJhY2tncm91bmQ6IHVybCgianBsYXllci5ibHVlLm1vbmRheS5qcGciKSAwIC0yNTBweCByZXBlYXQteDsNCgl3aWR0aDo0NnB4Ow0KCWhlaWdodDo1cHg7DQoJY3Vyc29yOiBwb2ludGVyOw0KfQ0KZGl2LmpwLWF1ZGlvIGRpdi5qcC12b2x1bWUtYmFyIHsNCgl0b3A6MzdweDsNCglsZWZ0OjMzMHB4Ow0KfQ0KZGl2LmpwLWF1ZGlvLXN0cmVhbSBkaXYuanAtdm9sdW1lLWJhciB7DQoJdG9wOjM3cHg7DQoJbGVmdDo5MnB4Ow0KfQ0KZGl2LmpwLXZpZGVvIGRpdi5qcC12b2x1bWUtYmFyIHsNCgl0b3A6MTdweDsNCglsZWZ0OjcycHg7DQp9DQpkaXYuanAtdm9sdW1lLWJhci12YWx1ZSB7DQoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLmJsdWUubW9uZGF5LmpwZyIpIDAgLTI1NnB4IHJlcGVhdC14Ow0KCXdpZHRoOjBweDsNCgloZWlnaHQ6NXB4Ow0KfQ0KDQovKiBAZW5kICovDQoNCi8qIEBncm91cCBjdXJyZW50IHRpbWUgYW5kIGR1cmF0aW9uICovDQoNCmRpdi5qcC1hdWRpbyBkaXYuanAtdGltZS1ob2xkZXIgew0KCXBvc2l0aW9uOmFic29sdXRlOw0KCXRvcDo1MHB4Ow0KfQ0KZGl2LmpwLWF1ZGlvIGRpdi5qcC10eXBlLXNpbmdsZSBkaXYuanAtdGltZS1ob2xkZXIgew0KCWxlZnQ6MTEwcHg7DQoJd2lkdGg6MTg2cHg7DQp9DQpkaXYuanAtYXVkaW8gZGl2LmpwLXR5cGUtcGxheWxpc3QgZGl2LmpwLXRpbWUtaG9sZGVyIHsNCglsZWZ0OjE2NnB4Ow0KCXdpZHRoOjEzMHB4Ow0KfQ0KDQpkaXYuanAtY3VycmVudC10aW1lLA0KZGl2LmpwLWR1cmF0aW9uIHsNCgl3aWR0aDo2MHB4Ow0KCWZvbnQtc2l6ZTouNjRlbTsNCglmb250LXN0eWxlOm9ibGlxdWU7DQp9DQpkaXYuanAtY3VycmVudC10aW1lIHsNCglmbG9hdDogbGVmdDsNCglkaXNwbGF5OmlubGluZTsNCn0NCmRpdi5qcC1kdXJhdGlvbiB7DQoJZmxvYXQ6IHJpZ2h0Ow0KCWRpc3BsYXk6aW5saW5lOw0KCXRleHQtYWxpZ246IHJpZ2h0Ow0KfQ0KDQpkaXYuanAtdmlkZW8gZGl2LmpwLWN1cnJlbnQtdGltZSB7DQoJbWFyZ2luLWxlZnQ6MjBweDsNCn0NCmRpdi5qcC12aWRlbyBkaXYuanAtZHVyYXRpb24gew0KCW1hcmdpbi1yaWdodDoyMHB4Ow0KfQ0KDQovKiBAZW5kICovDQoNCi8qIEBncm91cCBwbGF5bGlzdCAqLw0KDQpkaXYuanAtdGl0bGUgew0KCWZvbnQtd2VpZ2h0OmJvbGQ7DQoJdGV4dC1hbGlnbjpjZW50ZXI7DQp9DQoNCmRpdi5qcC10aXRsZSwNCmRpdi5qcC1wbGF5bGlzdCB7DQoJd2lkdGg6MTAwJTsNCgliYWNrZ3JvdW5kLWNvbG9yOiNjY2M7DQoJYm9yZGVyLXRvcDoxcHggc29saWQgIzAwOWJlMzsNCn0NCmRpdi5qcC10eXBlLXNpbmdsZSBkaXYuanAtdGl0bGUsDQpkaXYuanAtdHlwZS1wbGF5bGlzdCBkaXYuanAtdGl0bGUsDQpkaXYuanAtdHlwZS1zaW5nbGUgZGl2LmpwLXBsYXlsaXN0IHsNCglib3JkZXItdG9wOm5vbmU7DQp9DQpkaXYuanAtdGl0bGUgdWwsDQpkaXYuanAtcGxheWxpc3QgdWwgew0KCWxpc3Qtc3R5bGUtdHlwZTpub25lOw0KCW1hcmdpbjowOw0KCXBhZGRpbmc6MCAyMHB4Ow0KCWZvbnQtc2l6ZTouNzJlbTsNCn0NCg0KZGl2LmpwLXRpdGxlIGxpIHsNCglwYWRkaW5nOjVweCAwOw0KCWZvbnQtd2VpZ2h0OmJvbGQ7DQp9DQpkaXYuanAtcGxheWxpc3QgbGkgew0KCXBhZGRpbmc6NXB4IDAgNHB4IDIwcHg7DQoJYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2VlZTsNCn0NCg0KZGl2LmpwLXBsYXlsaXN0IGxpIGRpdiB7DQoJZGlzcGxheTppbmxpbmU7DQp9DQoNCi8qIE5vdGUgdGhhdCB0aGUgZmlyc3QtY2hpbGQgKElFNikgYW5kIGxhc3QtY2hpbGQgKElFNi83LzgpIHNlbGVjdG9ycyBkbyBub3Qgd29yayBvbiBJRSAqLw0KDQpkaXYuanAtdHlwZS1wbGF5bGlzdCBkaXYuanAtcGxheWxpc3QgbGk6bGFzdC1jaGlsZCB7DQoJcGFkZGluZzo1cHggMCA1cHggMjBweDsNCglib3JkZXItYm90dG9tOm5vbmU7DQp9DQpkaXYuanAtdHlwZS1wbGF5bGlzdCBkaXYuanAtcGxheWxpc3QgbGkuanAtcGxheWxpc3QtY3VycmVudCB7DQoJbGlzdC1zdHlsZS10eXBlOnNxdWFyZTsNCglsaXN0LXN0eWxlLXBvc2l0aW9uOmluc2lkZTsNCglwYWRkaW5nLWxlZnQ6N3B4Ow0KfQ0KZGl2LmpwLXR5cGUtcGxheWxpc3QgZGl2LmpwLXBsYXlsaXN0IGEgew0KCWNvbG9yOiAjMzMzOw0KCXRleHQtZGVjb3JhdGlvbjogbm9uZTsNCn0NCmRpdi5qcC10eXBlLXBsYXlsaXN0IGRpdi5qcC1wbGF5bGlzdCBhOmhvdmVyIHsNCgljb2xvcjojMGQ4OGMxOw0KfQ0KZGl2LmpwLXR5cGUtcGxheWxpc3QgZGl2LmpwLXBsYXlsaXN0IGEuanAtcGxheWxpc3QtY3VycmVudCB7DQoJY29sb3I6IzBkODhjMTsNCn0NCg0KZGl2LmpwLXR5cGUtcGxheWxpc3QgZGl2LmpwLXBsYXlsaXN0IGEuanAtcGxheWxpc3QtaXRlbS1yZW1vdmUgew0KCWZsb2F0OnJpZ2h0Ow0KCWRpc3BsYXk6aW5saW5lOw0KCXRleHQtYWxpZ246cmlnaHQ7DQoJbWFyZ2luLXJpZ2h0OjEwcHg7DQoJZm9udC13ZWlnaHQ6Ym9sZDsNCgljb2xvcjojNjY2Ow0KfQ0KZGl2LmpwLXR5cGUtcGxheWxpc3QgZGl2LmpwLXBsYXlsaXN0IGEuanAtcGxheWxpc3QtaXRlbS1yZW1vdmU6aG92ZXIgew0KCWNvbG9yOiMwZDg4YzE7DQp9DQpkaXYuanAtdHlwZS1wbGF5bGlzdCBkaXYuanAtcGxheWxpc3Qgc3Bhbi5qcC1mcmVlLW1lZGlhIHsNCglmbG9hdDpyaWdodDsNCglkaXNwbGF5OmlubGluZTsNCgl0ZXh0LWFsaWduOnJpZ2h0Ow0KCW1hcmdpbi1yaWdodDoxMHB4Ow0KfQ0KZGl2LmpwLXR5cGUtcGxheWxpc3QgZGl2LmpwLXBsYXlsaXN0IHNwYW4uanAtZnJlZS1tZWRpYSBhew0KCWNvbG9yOiM2NjY7DQp9DQpkaXYuanAtdHlwZS1wbGF5bGlzdCBkaXYuanAtcGxheWxpc3Qgc3Bhbi5qcC1mcmVlLW1lZGlhIGE6aG92ZXJ7DQoJY29sb3I6IzBkODhjMTsNCn0NCnNwYW4uanAtYXJ0aXN0IHsNCglmb250LXNpemU6LjhlbTsNCgljb2xvcjojNjY2Ow0KfQ0KDQovKiBAZW5kICovDQoNCmRpdi5qcC12aWRlby1wbGF5IHsNCgl3aWR0aDoxMDAlOw0KCW92ZXJmbG93OmhpZGRlbjsgLyogSW1wb3J0YW50IGZvciBuZXN0ZWQgbmVnYXRpdmUgbWFyZ2lucyB0byB3b3JrIGluIG1vZGVybiBicm93c2VycyAqLw0KCWN1cnNvcjpwb2ludGVyOw0KCWJhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwKTsgLyogTWFrZXMgSUU5IHdvcmsgd2l0aCB0aGUgYWN0aXZlIGFyZWEgb3ZlciB0aGUgd2hvbGUgdmlkZW8gYXJlYS4gSUU2LzcvOCBvbmx5IGhhdmUgdGhlIGJ1dHRvbiBhcyBhY3RpdmUgYXJlYS4gKi8NCn0NCmRpdi5qcC12aWRlby0yNzBwIGRpdi5qcC12aWRlby1wbGF5IHsNCgltYXJnaW4tdG9wOi0yNzBweDsNCgloZWlnaHQ6MjcwcHg7DQp9DQpkaXYuanAtdmlkZW8tMzYwcCBkaXYuanAtdmlkZW8tcGxheSB7DQoJbWFyZ2luLXRvcDotMzYwcHg7DQoJaGVpZ2h0OjM2MHB4Ow0KfQ0KZGl2LmpwLXZpZGVvLWZ1bGwgZGl2LmpwLXZpZGVvLXBsYXkgew0KCWhlaWdodDoxMDAlOw0KfQ0KYS5qcC12aWRlby1wbGF5LWljb24gew0KCXBvc2l0aW9uOnJlbGF0aXZlOw0KCWRpc3BsYXk6YmxvY2s7DQoJd2lkdGg6IDExMnB4Ow0KCWhlaWdodDogMTAwcHg7DQoNCgltYXJnaW4tbGVmdDotNTZweDsNCgltYXJnaW4tdG9wOi01MHB4Ow0KCWxlZnQ6NTAlOw0KCXRvcDo1MCU7DQoNCgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIuYmx1ZS5tb25kYXkudmlkZW8ucGxheS5wbmciKSAwIDAgbm8tcmVwZWF0Ow0KCXRleHQtaW5kZW50Oi05OTk5cHg7DQp9DQpkaXYuanAtdmlkZW8tcGxheTpob3ZlciBhLmpwLXZpZGVvLXBsYXktaWNvbiB7DQoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLmJsdWUubW9uZGF5LnZpZGVvLnBsYXkucG5nIikgMCAtMTAwcHggbm8tcmVwZWF0Ow0KfQ0KDQoNCg0KDQoNCmRpdi5qcC1qcGxheWVyIGF1ZGlvLA0KZGl2LmpwLWpwbGF5ZXIgew0KCXdpZHRoOjBweDsNCgloZWlnaHQ6MHB4Ow0KfQ0KDQpkaXYuanAtanBsYXllciB7DQoJYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDsNCn0NCg0KDQoNCg0KDQovKiBAZ3JvdXAgVE9HR0xFUyAqLw0KDQovKiBUaGUgYXVkaW8gdG9nZ2xlcyBhcmUgbmVzdGVkIGluc2lkZSBqcC10aW1lLWhvbGRlciAqLw0KDQp1bC5qcC10b2dnbGVzIHsNCglsaXN0LXN0eWxlLXR5cGU6bm9uZTsNCglwYWRkaW5nOjA7DQoJbWFyZ2luOjAgYXV0bzsNCglvdmVyZmxvdzpoaWRkZW47DQp9DQoNCmRpdi5qcC1hdWRpbyAuanAtdHlwZS1zaW5nbGUgdWwuanAtdG9nZ2xlcyB7DQoJd2lkdGg6MjVweDsNCn0NCmRpdi5qcC1hdWRpbyAuanAtdHlwZS1wbGF5bGlzdCB1bC5qcC10b2dnbGVzIHsNCgl3aWR0aDo1NXB4Ow0KCW1hcmdpbjogMDsNCglwb3NpdGlvbjogYWJzb2x1dGU7DQoJbGVmdDogMzI1cHg7DQoJdG9wOiA1MHB4Ow0KfQ0KDQpkaXYuanAtdmlkZW8gdWwuanAtdG9nZ2xlcyB7DQoJbWFyZ2luLXRvcDoxMHB4Ow0KCXdpZHRoOjEwMHB4Ow0KfQ0KDQp1bC5qcC10b2dnbGVzIGxpIHsNCglkaXNwbGF5OmJsb2NrOw0KCWZsb2F0OnJpZ2h0Ow0KfQ0KDQp1bC5qcC10b2dnbGVzIGxpIGEgew0KCWRpc3BsYXk6YmxvY2s7DQoJd2lkdGg6MjVweDsNCgloZWlnaHQ6MThweDsNCgl0ZXh0LWluZGVudDotOTk5OXB4Ow0KCWxpbmUtaGVpZ2h0OjEwMCU7IC8qIG5lZWQgdGhpcyBmb3IgSUU2ICovDQp9DQoNCmEuanAtZnVsbC1zY3JlZW4gew0KCWJhY2tncm91bmQ6IHVybCgianBsYXllci5ibHVlLm1vbmRheS5qcGciKSAwIC0zMTBweCBuby1yZXBlYXQ7DQoJbWFyZ2luLWxlZnQ6IDIwcHg7DQp9DQoNCmEuanAtZnVsbC1zY3JlZW46aG92ZXIgew0KCWJhY2tncm91bmQ6IHVybCgianBsYXllci5ibHVlLm1vbmRheS5qcGciKSAtMzBweCAtMzEwcHggbm8tcmVwZWF0Ow0KfQ0KDQphLmpwLXJlc3RvcmUtc2NyZWVuIHsNCgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIuYmx1ZS5tb25kYXkuanBnIikgLTYwcHggLTMxMHB4IG5vLXJlcGVhdDsNCgltYXJnaW4tbGVmdDogMjBweDsNCn0NCg0KYS5qcC1yZXN0b3JlLXNjcmVlbjpob3ZlciB7DQoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLmJsdWUubW9uZGF5LmpwZyIpIC05MHB4IC0zMTBweCBuby1yZXBlYXQ7DQp9DQoNCmEuanAtcmVwZWF0IHsNCgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIuYmx1ZS5tb25kYXkuanBnIikgMCAtMjkwcHggbm8tcmVwZWF0Ow0KfQ0KDQphLmpwLXJlcGVhdDpob3ZlciB7DQoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLmJsdWUubW9uZGF5LmpwZyIpIC0zMHB4IC0yOTBweCBuby1yZXBlYXQ7DQp9DQoNCmEuanAtcmVwZWF0LW9mZiB7DQoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLmJsdWUubW9uZGF5LmpwZyIpIC02MHB4IC0yOTBweCBuby1yZXBlYXQ7DQp9DQoNCmEuanAtcmVwZWF0LW9mZjpob3ZlciB7DQoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLmJsdWUubW9uZGF5LmpwZyIpIC05MHB4IC0yOTBweCBuby1yZXBlYXQ7DQp9DQoNCmEuanAtc2h1ZmZsZSB7DQoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLmJsdWUubW9uZGF5LmpwZyIpIDAgLTI3MHB4IG5vLXJlcGVhdDsNCgltYXJnaW4tbGVmdDogNXB4Ow0KfQ0KDQphLmpwLXNodWZmbGU6aG92ZXIgew0KCWJhY2tncm91bmQ6IHVybCgianBsYXllci5ibHVlLm1vbmRheS5qcGciKSAtMzBweCAtMjcwcHggbm8tcmVwZWF0Ow0KfQ0KDQphLmpwLXNodWZmbGUtb2ZmIHsNCgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIuYmx1ZS5tb25kYXkuanBnIikgLTYwcHggLTI3MHB4IG5vLXJlcGVhdDsNCgltYXJnaW4tbGVmdDogNXB4Ow0KfQ0KDQphLmpwLXNodWZmbGUtb2ZmOmhvdmVyIHsNCgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIuYmx1ZS5tb25kYXkuanBnIikgLTkwcHggLTI3MHB4IG5vLXJlcGVhdDsNCn0NCg0KDQovKiBAZW5kICovDQoNCi8qIEBncm91cCBOTyBTT0xVVElPTiBlcnJvciBmZWVkYmFjayAqLw0KDQouanAtbm8tc29sdXRpb24gew0KCXBhZGRpbmc6NXB4Ow0KCWZvbnQtc2l6ZTouOGVtOw0KCWJhY2tncm91bmQtY29sb3I6I2VlZTsNCglib3JkZXI6MnB4IHNvbGlkICMwMDliZTM7DQoJY29sb3I6IzAwMDsNCglkaXNwbGF5Om5vbmU7DQp9DQoNCi5qcC1uby1zb2x1dGlvbiBhIHsNCgljb2xvcjojMDAwOw0KfQ0KDQouanAtbm8tc29sdXRpb24gc3BhbiB7DQoJZm9udC1zaXplOjFlbTsNCglkaXNwbGF5OmJsb2NrOw0KCXRleHQtYWxpZ246Y2VudGVyOw0KCWZvbnQtd2VpZ2h0OmJvbGQ7DQp9DQoNCi8qIEBlbmQgKi8NCg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin_ol/blue.monday/jplayer.blue.monday.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin_ol/blue.monday/jplayer.blue.monday.seeking.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhMAAWALMMAFaky26x0mOrz3e21UCYxE+gyUmdxzyWwzqRvEWbxkueyF+pzv///wAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFBwAMACwAAAAAMAAWAAAEpFDISauVYejNu9dBIY5kaRbAoq5s66rAKZ/pa79xoex87/u1mxD2KxoVweENcGzykkqc0wmNtpjTY9W6wmaLW+7C+wWKpeVfmEv+Hd7w+JtgqNvv+HydIO/743R6gnp8f4aAg4l3hYeHBAmQkZKTlJCMjX+PlZuVl40IoKEImpyllqKoqaqkppwHqrCrraavsbagrLOUtbexB7quvba/wJW8wqgRACH5BAUHAAwALAAAAAAwABYAAAR0cARGq71YiIl7H4AnWkURjuOyoGN5sp36wpaizHQl55eN8ztexSe0BIvEIuUoTCqZPGcRmpMKqTQrcPGjHQ4EJcVgCCu/ZiU5LUSLGWux+51g8+biuhiBeFP0Snx+CQkHe310hYeDioEIhnmNRXyQSoSVPBEAIfkEBQcADAAsAAAAADAAFgAABHWQjRGYvThrIar+2rIAYIkVBWma42qiqvu18qcocY2JunbnPYYIqPsFd7Sj8WgZMhlLppMZPU6VuKcwGawGr8HDgaA1GMhMMZppXofH5fNTrWUk3D269v5EIOp2eDp+dQkJB31/e4eJhYxMfohPhpJHkYuVNREAIfkEBQcADAAsAAAAADAAFgAABHWQyTGCvDhrJoTdILYsQGhKRVGe4LiyW/rCIklvijLfks1juR3P95MEi5cR0qhbMlzL4xKKlCKpRWsR+9P+uLzDgeA0GMhIMRppXv/U5fMS7ky4w2Mnw75EIPR7dzd+egkJB31/dYeJhYxIfohLhpJFkYuVLBEAIfkEBQcADAAsAAAAADAAFgAABHWQSTlGmDjrKcTdILYsQGhKRVGe4LiyW/rCIklvijLfjMtnud3N95sEixMbknFcKpFN5GjJ1FGJxWgR+9P+uLzDgUA1GMhIMRppXv/U5fMSTk24w2Mqw75EIPR7dzd+egkJB31/dYeJhYxIfohLhpJFkYuVJhEAIfkEBQcADAAsAAAAADAAFgAABHWQycnGCDRrLQTeILUsQGhKRVGe4LiyW/rCIklvijLfjMtnud3N95sEixIi8ohUFplN4Q1atCEZ1N/oitVxnbzDgcA1GMhIMRppXv/U5fMVzk24w2Muw35FIPR7dzd+egkJB31/dYeJhYxIfohXhpJFkYuVIBEAIfkEBQcADAAsAAAAADAAFgAABIOQyTmHDTTrLDre4LSMQGgyRVqe27isrJYWcCyStqbsde72uZ0CGPvlMkIiy3icJJsSJvQJlTapTesRm31BJdzjwkD4Mg7o8tdANqMPaijb4E6b5/HjO99MJPg2b2YSfoAxCIiDDIVfiAiDfgkHjYlmkZNQjpB+mE2OnX2clAigR5cgEQAh+QQFBwAMACwAAAAAMAAWAAAEcJDJSeUYoeo9hchcKC0LIJ5FYZ4cubJb+sKUS2+KMt+MzVO53c33kwSLoxLSqFsSi0fk8xctTnnV3/WW5RkMhCXjcAgjv2YkOV0Ei9di9xIuTrzL9QSbh0CIGQl6S31/gQeDfnmHSISKiItIho+OFREAIfkEBQcADAAsAAAAADAAFgAABHSQyUnpGKHqPYXIXCgtCyCeRWGeHLmyW/rClEtvijLfjM1Tud3N95MEi6MS0qhbEotH5PMXLU551d/1luUZDIQl43AII79mJDn9Q4vX4gT7B1/K3+X4nIdAiCUJYn1/CQkHS4Nxhoh+iodIfY9IhZI/kY4UEQAh+QQFBwAMACwAAAAAMAAWAAAEcZDJSSsbI9jNhdBcKC0LIJ5FYZ4cubJb+sKUS2+KMt+MzVO53c33kwSLoxLSqFsSi0fk8xctTnnV3/WW5RkMhCXjcAgjv2YkOf1Di9fiBPsHX8rf5fich0CIGQkHYn1/gYN+cQmHhYZIfYJ2jUWPiZARACH5BAUHAAwALAAAAAAwABYAAAR0kMlJ6xwj2M2F0FwoLQsgnkVhnhy5slv6wpRLb4oy34zNU7ndzfeTBIujEtKoWxKLR+TzFy1OedXf9ZblGQyEJeNwCCO/ZiQ5/UOL1+IE+wdfyt/l+JyHQMQTB2J9f4FLg3GFSId2iUV9jT8JCYIIkDySBxEAIfkEBQcADAAsAAAAADAAFgAABHKQyUlrHSPYzYXQXCgtCyCeRWGeHLmyW/rClEtvijLfjM1Tud3N95MEi6MS0qhbEotH5PMXLU551d/1luUZDIQl43AII79mJDn9Q4vX4gT7B1/K3+X4nIdAxBMHYn1/gUuDdoCCfoiFSH2NRYmGCJA/CREAIfkEBQcADAAsAAAAADAAFgAABHEwsEmrvWPIy7kQXVgtCyCeRWGeHbmyXPrCY0lzijLfjMtbud3N96MEixMi8ohUFplF5w/6k/KoPOsNezMYCMjJ4QBGesvIMfp3DjPU7sT6Bw/L3XXkPYxAxBMHbn1/gXx+doCCh3qJhoVFCY1IfY8/EQAh+QQFBwAMACwAAAAAMAAWAAAEcVCIwKq9OI9Bs/cF8I3XsogkGaakibJgAX/u7CnKa1f1fuG6Xc9XARJ5p2MxpxwSjUenD0qU7qg+qw27MxgISsbhAD56y8cx2ncOq8OJte+tjLvJcPkOgYAnDmF8foBKgnV/gX2HhEd8jD4JiIUIjzMRACH5BAUHAAwALAAAAAAwABYAAAR0kDEhgrw4azaG3SBWFEBoSstSnuC4slv6wpky05eMa/ae6b6LQhHMqYqS4Q0HLCqRzeCzGPVNg9Xd1ZfFbXcGAwHJOBzGxTC6aF771OQ2OeH2yZH0+Hle3yEQcwkHZH+Bg0iFeIKEgIqHRX+PPgmLiAiSLBEAIfkEBQcADAAsAAAAADAAFgAABHGQSSZEmDjrOcbdIFYUQGhKy1Ke4LiyW/rCmKLM9CTnmY3zO17tlwsKJbejTqVEKpoM49HXlAqpSisPe9TmuEKDgQA9HMhKMVppXofH5TM04Ra253XevUmHIhBzCQd+gHyChIGDTX+JhIpHCYeLCI8nEQAh+QQFBwAMACwAAAAAMAAWAAAEcZDJKUSYOOs5xt0gVhRAaErLUp7guLJb+sKYosz0JOeZjfM73sQnxASLxCJKpZTcmowj8peTCm1QKy9Z1Oa4QoOBAD0cyEoxWmleh8flMzThFrbndd69SYciEHMJB36AfIKEgYNNf4mEikUJh4sIjyERACH5BAUHAAwALAAAAAAwABYAAARxkMkphQg0az0G3iBVFEBoSstSnuC4slv6wpSizPQk55mN8zvexCekBIvEIkqlZCSVR+GzGJX+clXercnI5mxcg4HAPRzISjFaaV4L1eUzN+EWtud13r1J5yIQcwkHfoB8goSBg01/iYSKRQmHiwiPGxEAIfkEBQcADAAsAAAAADAAFgAABIGQyUmFDTTrPDre4FSMQGgyS1qe21isrJYucDwpeG1Ls27jCp+tt6MAhTFiUXJcTpTLphOlmkqd0OJ1md1ti93d4UCYMgzo8nSsdqIN7SXb/I4XxwczI5Gwi8d6fH42eIF9ZgiJZnwJeVOJCIt8jk6Qko2IilOMlEuQnTucmQigEhEAIfkEBQcADAAsAAAAADAAFgAABHSQyUmnEKHqPcfIXCgVBSCey2KeHLmyW/rClKLM9CTnlY3zO97EJ6QEi8Si5ChMKpk8ZxGakwqpNCtQpWQcDoQuw2AIK79mJTktRIvXYrCYkWC353Q77zuvixEIYgkJB3+BXYOFXYCChIaNikqAkUKJhpQMEQAh+QQFBwAMACwAAAAAMAAWAAAEc5DJSasQoeo9x8hcKBUFIJ7LYp4cubJb+sKUosz0JOeVjfM73sQnpASLxKLkKEwqmTxnEZqTCqk0K1ClZBwOhC7DYAgrv2YlOS1Ei9ddtzjB5sm7dDFCLMl393MJB3qASgmChIGDf4VFh4tKCAiQQo+EkBEAIfkEBQcADAAsAAAAADAAFgAABHOQyUmrFCLYzcfQXCgVBSCey2KeHLmyW/rClKLM9CTnlY3zO97EJ6QEi8Si5ChMKpk8ZxGakwqpNCtQpWQcDoQuw2AIK79mJTktRIvXXbc4webJu/QuAiGW5JV7fQkJB2J8c4SGgol6h0qDhY2RRZCGCIURACH5BAUHAAwALAAAAAAwABYAAARykMlJKxUi2M3H0FwoFQUgnstinhy5slv6wpSizPQk55WN8zvexCekBIvEouQoTCqZPGcRmpMKqTQrUKVkHA6ELsNgCCu/ZiU5LUSL1123OMHmybv0LgIhluSVe30JCQd6fHOEhoKJeoV4jICOSoOSRXsRADs=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin_ol/blue.monday/jplayer.blue.monday.video.play.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAHAAAADICAYAAAAweWVTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAOkdJREFUeNrsvWuUVNW5Nvq+c65LVXX1hUZBCBdFiEhziQoIAdOKBMWhyVZ3J+6djG+YvY3fGXucmO3x80d+JGjOUPMjBzOiBlCDknQINBCIMlRQbpoEL5gdWmmxuQTobvreFF2r1n3NeX4wZ7F6dVVfoBsa6DnGHFXVtbrWqvXU816e911rIucchselO8jwKRgGcHhcxKEM5Ich4kAfH4oJAMDFHB6DBeAAgUVCjwoAUAFcAAA+ADDxmg0DOjQARAESBQBVHFP4kQqwJICeeO6J14GYfBjACw8cAQANABIAoPcDQD/03AUACwAcsc0VNfBipBF4xlkqABADgAIx4wIwFQAURVG0HCbUAwAfET0ACBDRRUSHUpoxTdMQQAacczYM4OAFMTh58mSttbU14bpuMgiCJOe8gHOeAACdcx5lYT4AfQBwEdFCRIMQYiqKYsbjcWvChAnOfffdFyxbtqynLzckTO75Bn4XlIGIiJMnT9ZaWloKXNctZIwVcs4lgN1YKMDMmlBEDJtQDwAcRMwAQAYRTUKIRQixFEWxEomENW7cOPdSAXLIM/Cpp54iGzZsUOrr6wscxylijBUxxgoBoJBzngSAhGBhLOIDiWQgIcQHAE8A6TLGTAFeBgAswUYLEW3BSCeRSFg33nijs2vXrr74Rz7MwO6BCgAAfOc73yE7duwosCyrOAiCYsZYkQCvEAAKCSGShQVhE8o5p4jII5GnZF8aAExEtASAJiI6iGgJNjqapmU45+kxY8bY06ZNC6qqqvrjH/kVy0DOefbF008/jS+//HIslUoV+75fwjkvFrOQEFIEAEkJpPSFAKASQmR6AREAXUS0AcBARCPEPjsIAgmkSwgxCSEZRVEyuq5bJSUlVjKZtPtgVi8YoEOVgV2Oavbs2UptbW2x67oljLFiSmkJY6yYc14sQCsGgCQiFgKADGiyQQwhhEfSCAcRpfk0GWOWANIV4NmCiRnGmBH2jbquWyNHjrQWLFjgrFq16lzzxyHDzEGR0sI/iqeffhrb29up7/s65zxOKQ0HLQWIWISISc55EQAUImIyZEYx8nlcRKEW51yRqYhgnw4ANiJq0owiooqICiLq4n3d9/14U1OTsX379swdd9xh33777f6yZcv6q+rgQAF5vgwcUADDZlOOAwcOoGEYqqZpmud5WhAEGuc8LnxeUppPwT4Z0FBCSK7cEUXirwKAKkCxOOeafI6IMQBwGGOdiEgRURXRrel5XiwIAktRFMWyLO3YsWNWZWWleeDAAbusrIwJIPvDNDxfVp6vBVQGy2zKcfToUeJ5nsI5l2mBSgjROOcxAEggogxckoiYFCcde/mlolRvJLs45zYiagAQF0EM5ZyrwpxaYts4ImY456rjOKrv+zFN0/R9+/bZJ06csA4cOGBXVFQEFRUV/ByYdk5gDikG5hqTJk3Curo6zTRNVVEUJQgClTGmEkJUAaguTGlSHo/8UvPnzy/4xje+UaQoClZXV5u7d+9OZzKZcDpABfjSjMYkkOKHoHPOpX9MUEpNYXo1zrnOObd839cdx7Hr6ur0trY2++TJk1ZNTY2zbNky/zzA6fP2Q4WBeX9G9fX1NAgCRZw4lXOuEkIUxpiCiPK1yjlXJHCEELj77rtLfvnLX14/ceLEAgCAdDrtbdmypfm1115r/vTTT82opso5pwAQI4TY0j8KxlniR+IwxigiKgCgU0p1znmMcx4LgsDinGuWZTlNTU36li1b0seOHbPnz58fPProo1H/2F//hz1tO1Si0JxHsWHDBvLTn/40kUqlrrJtu9T3/VJEHMkYKwWAqzjnpQBQiogjOedJ6fduvfXW5MqVK786ZcqUZPQz6+rqzI0bNza/+uqrLfX19W6OXzOXCT0A2ABgAoDDObcIIWlCiCFYaolHm3NuUkptSqmJiIamaVZhYaGZTCbNuXPnOtOnT2cCyHzA9fUkDnj0qgwi+/C9994jjuNQxhjlnFNKqRIEgWSeIiJEyRYQExcuXFiYCzwAgPHjxycef/zx65YsWTJy9erVJ9evX99umiYLAYhC1dFEwKMBgEMIkcKANKumYKsp2GhzzjXOueL7vm4Yhp7JZGK7du2yDh8+bDU2Ntrl5eXs9ttvzwVGX1nZbbsh7wNjsRjNZDKoKArxfZ9QSgkAIGNMlpOoeAQ8M2Ds2LF6b59bVlZW9Oyzzxbcc889I1977bWmHTt2dLquGz6BqjCrccFEBQA0YVZNEUTZIqByCSGmNOdBEMSEpBdLp9PxEydOZNrb2zNHjhyxW1tbvYqKiiCPn+svkMDP0wQqg8W+XH+klCLnHBljEEoTunz5aPrQ09B1nd55551Xz549u+TNN99sWb16ddPnn39uhdhIGGOysq+EghpV+EuLc64LM6oIX6wRQuKMMZNSGvN93zJNU3UcR62urrZbWlqsvXv3WvPnzw8EkLmA60/Qg+LHy4ccA8eOHYviRIPruuh5ngxSMGLyIGxC+7uf4uJi9fvf//5XFixYULJhw4bm9evXtzU0NHiccy4+DjnncQDQCCE65zwm0gsNAHRCiC1yS0OAbBJC9CAIEoqiGL7vq4ioG4ZhNTY2am1tbfo///lPq6amxr733nuDW265Rfbr4LmaV5FD86EAYBcACgoK0DAMyUDgnKOcYeVGgkcIOWe/cN111xU8+eSTk5YuXTpyzZo1jW+88UbKMIyAMSb3QznnBVKVEemGLQCT6YVFCNEYYw4AmIwxKvxoTIAYI4SYQRDoDQ0N9oEDB6zbbrvN/tGPfhSEgDpXIPvNxsFkYBYFTdOQMYZBECBjDDjnWfYJ8BAAkFKaZeL5SFMzZswofuaZZ5JLlixpX716ddMHH3yQDitFjDFVVDlinHOLUqoJ8LL5pFB1FMHSWBAEMUVRdN/3LVVVNcMwYrqu20ePHjVs21ZPnDhhLVq0yF+6dGkuIPvlJ0OKFh9MALG3v5WWlmJvJ1vS8HxMaD7/uGTJklE33XRTyfbt21tfffXVpsOHDzucc04IAc45EVNBREXIcZZUiYRYrgrlJoaIehAEMUqp5XleTFEU27ZtEwDUhoYGra2tTT9+/Lh18OBBa+rUqSwEZD5WDggjlcFmXyKRQMMw0Pd9lIEmY0yaUMnAbJAzkCACAFx99dXa9773va/MmzevZOPGjc1VVVXtbW1tXsisgixhCebFRA6pitRDslETvlIHAM33fUdRFM1xHNXzPM33/dixY8f0VCoV27dvn3Xw4EH7rrvuCqZNm8YiYOE5MpJflDQi1xAMCOdBGA1mBnpcf/31BU888cS15eXlJVVVVc1bt25Nua7LZVQsckQiZTYBnvR9MQDQGWMWpVQTAZEp1CSNMRazbTvDGIs5jmOfPn06097ebldXV1v33HOPU1FR4ecAD3P4SN6zwerOxEH1gYWFhRhJI0D4ICCEIGMsyzYZvEgWDkrtTFHIvHnzSmfNmlW8ZMmS9jVr1jR99NFHGUKITMeyZlXqtIQQmzHWLX+UAoR4rTPGdMdxLEKICQBaU1OTk06njUwmY9bU1Fjl5eX+7bffHvSi0PTIxlxMHPRqRDweR03T0Pd9cF0XKKV4tjrUxRdmE/nBAjB0TPTuu+8eddNNNxW/+eabzZWVlS319fWeCLC4CK5iQs3RCSE6nGlZzJrUkBgf45zrABDnnFuc85hlWbamaaZpmuqJEye0VCql1tXV2bW1tfb48eODpUuXsggLc5lV3hcmKgMJVm/vUUoxCIJsOiES+6wIQynN5ogXYowePVr/wQ9+ML68vLx0w4YNzZs3b+5IpVK+NO+MMcoYS4hIVE5XACmFATNUztIFmLbrupqQDDXf92OZTMasr683J02aZBuGYZeVlQXTpk3jOQKdXkEMM/GC+EBVVVEyT+w8CxxjDKX6gojSlF4wECmlOGXKlOSTTz6ZWLRoUWllZWXTu+++ezoUrSLnXBX5YBzOFJAVRNSEihMTBWpLCAFxQojJGFNd19VEThkTJjbhOE66qalJnTVrll1eXu5GzGouEPOZVEREPphRKBYUFGAsFsNoACMjQOHzsol8KAq94IGVqqpk3rx5I6ZOnZq8884729etW9dSXV1tymMlhEhZLilF8UgXQAzONCY7UlNFRJ0xpotyVYxzbvq+r3iep//tb38zv/zyS2vfvn1WWVmZL8xqT76R52LiBYtCFUXBIAggJFpjOBIlhGD48WKNkpIS9f7777/m1ltvLd66dWvr2rVrW1tbWz3BRAiCAATjNMaYBNER5lUXflBWXHQZpfq+HyeEaACgpdNp3TTNmGEYRkdHh3rw4EGnrq7OXrhwoR9KO/pkUge6oIv5TKjneSgYhlKJCeWCGIpCYSiMsWPHxn/4wx+O//rXv17y+9//vnHPnj2dhmEwmQKFBQBR7dBEq6O8PEAXNUeNc+4QQkxEVEVPkB42q5lMJlNfX2/t3bvXKi8vtx9++OGgr35x0BlYUFAQTSNkKSnLNGk2L6YJzRfuTZ8+vejnP/95wSeffJKqqqpq2bNnTyfnXKZCXPhHJZReqALMmFRwAEB2CaiMMZ1zbgGAIQQBzXVdLZ1Ox9PptHH69Gl66tQp8/HHH/f7AuKgitnxeByl+cyXzEsGRqS0fiG4f/9+2LFjB6TTaZg4cSJ861vfgtLS0l7/7/Tp03D8+HGor6+HdDoNiAjJZBLGjx8PEyZMgOLi4qwst3DhwpFlZWWFO3fubH/99deb6urqXGlWGWMo9FVFBjihyFUXArkiIlabc64FQaD7vm8ioixrZYR/pO+88w7t7Ow0KioqpEnlA2lCsY/bYNQHyi8cKvFgNIARqUSfD+bIkSPwhz/8AdLpNAAANDU1gWma8Mgjj4CmaTn/x3Vd+Pvf/w7vv/8+HDt2TPq1LnnptddeCwsWLIB58+ZlP2fEiBHagw8+OGbOnDnFb7zxRsuWLVva29vbA8FEDIIAOedxkfjrISVHFQyMc84zcKbYbAlTq3meFxOAq4Zh0CAIyI4dO2hLS0v6pZdesntSbehTTz01kCI2hmdtbS2pra2NdXR0JDzPS4icSnZex4W6kRCht6IoChJCYMGCBUUzZ84s6svBbN++HQ4dOpRVchARWltbYeLEiXDNNdd02z6VSsH69evhrbfeglQq1SV9CZeyTp06BdXV1dDS0gKTJ0+GWCzWpf44Z86cktmzZydt2/aPHz/uyjqnFJZk85TIF4mIXJWQgqMK1UfnnFPGGBGxALquSxhj3HEc1tbW5s+fP5/lOO94QfNARVEgCIJsJCpYhpF6YL+jUNu2czJW1iCjf/vDH/4AX3zxRTZYksyLMlCOv//972AYBvznf/5n1qTKbcrKyop+9rOfJe+44472TZs2tezbty8TBAGKVInAmY4Aeem4rPzLbjhTBDi2AJgwxtD3fcI5R8dxWCqV8vfu3etHqhtd2DiotxnRNC2X75N1P4yAhqFEvs/7mDRpUpY9chYWFsKUKVOiORO8++678OWXX3Zhq3wu/5dSmjXjch4+fBj+/Oc/5ytbkcWLF1/93HPPTfnJT34yfuzYsZqiKEApRVVVUVVVQgiJiUsIihGxmBBShIgliFiKiCUAUIKIhZzzkiAIihAxGQRBgWVZydbW1sTu3bu1XG4JAHAgu9JyUlyCSClFSikIvRHDfjCqhfYniJk/fz60tbXBp59+Cq7rQmFhIXzrW9+CUaNGddnu2LFj8Ne//hXCka+MjG+44QYYO3YscM6hsbERamtrwXXdLsz8xz/+AbfccguUlZXlyx+1Bx54YMzcuXNL1q1b1/j222+f6uzsDIIgQETkjDEaBEFcpBGaLEsJs0qECSWEkIBz7jHG3CAI3FQqZR86dMiqqalxQtLboElpYR8ImqahpmmYSCSQMUYYYyQIAkIplaq/RAwJISglt/7kgqqqwgMPPADz5s2DTCYDo0ePhqKiopyRKiEEdF0Pi9pwzz33wNy5c7tcmFNdXQ2bN28GwzDC3QNQXV2dF0A5xo0bF3/iiSeu++Y3vzly48aNLTt37jzNGOO+73PhQpAxlgyCIMYY08QlADIfZuLycU9cHudQSmOmaWp/+ctflGnTpnnR1GKw0ggEABKPx0kikSC6rhPP8xAAiO/7yDmXshSR9p9SSiSAudKO3kYsFgPOeU5/6HkeNDQ0dAlEKKWwaNEiuPXWW6O5H8yaNQs8z4M///nPXQBsbW3tc/44a9as4qlTpxYuXry4Y+3atS1ffvmlJUDkvu9z3/e1IAio8JGyJulzzj1KqQsAGUVRVE3TFE3T1FOnTqlw5vK6Lrqpco7msqfoM/taURRUVRV1XSeO4xAAIIqiyIiLyPobIhJKKWqaRhRFkcJ3n8eHH34In3zyCfi+D7FYDO666y6YNGlS9v10Og1BEEA8Hg9HknDzzTfn/cxp06bBP/7xD2hubs4Z6PRl6LpOysvLr5o5c2bRe++9175u3bqWjo4OXwLpeR4NgiDBGAsYY17oIhyNECKnjoiabduyfzasmQ4qA5FSivF4nMTjcfQ8T9p4EgZQmlBFUYg0uf1hYCqVgv3794PneYCIYNs2fP7553DddddlzSJjDFRVhXg8ngWhoKAAEolETwEYjB49Gk6fPp1l4bkqRCNGjNAqKirGLFy4cERVVVXTtm3bTlmWxQgh3HVdFJGpJnpSVdlVrmmapiiKioia67pqY2MjGTNmDD8fBvbGyi7PKaWo6zoRzMqa0jD7hNCPiqKgpmlE07R+MdC2baCUgq7r2RPsOA4wxrKpAiKCrutdGKSqao+gMMbAdd0uYkBPgPdljBkzJvbYY49dO3ny5PiaNWua29raPEQE3/dlcVhjjGmUUhXO9LBqhBAtCALVsizl6NGjdMyYMV2UGTKAwEXNqay+ywhUFm2JyAslaKiqKpHmViTzfQZQBiaapmWnqqrd/Fr4/VzbREdrayucPn26y/8kk8mB0Fdh6dKloxYtWlQi0gxUFIVSSlVEVMSjJrrjVM656vu+lk6ntePHjyvRcz+YeSBKZoVyIvmayGBFRp3yPVVVsT9SGiKCoihdZjSKlduoqtpl9mSWP/nkE0DE7LaKosCIESMG5MQQQrCsrKxAfn8iBhUDESkhRKGUKuI6R2rbNrUsK0qUfqcRPM/zbgqGDPbg7P3LwjcqcEUNTd51gom8CAAAZsyYUbB48eKr+3JAbW1tUFVVlZXFAACmTJkCd911VxbIU6dOwR//+Efo7OzMbjNhwgS49957gRACnudBc3Mz+L4P+/fvh40bN0J9fX23ff33f//3gP26Gxsbnbfeeuu0tNgAcBoATgFAh5jt4vVpMTsrKyszjzzyiHNBy0lDeRBCwDRNWLlyJezYsQMsy8obaU6bNg0WLVo0IPt1HCfYvXt3KvQn+cOOTg+63twvGKyC7iUL4Icffghvvvlmj9uNHDkSHnvsMSgsLDzvffq+z1588cXj69ataw//GbrfhTHX62EAo6O5ubk3ZQV+/OMfww033HDe+zp48GD6ueeeO7Z27doO3/fD6YAbAikfkAEMYkvFJTtmzJgBhYWF2XqiHIWFhfC1r30NHn30URg3btx57aOhocFavXp1w/LlyxtTqVS0C82Cs/c7lYC5OYDM2RR8RQMYBAFMnz4dfvzjH8M777wDruvCyJEj4Stf+QrcfPPNMHPmzPPq0TEMw9+yZUvzL37xi/oDBw5YOQJCCwDScKa9Ql7T70TY6OXzf1c8gDJgufPOO+Eb3/gGuK7bpYfnPPwc37lzZ9sLL7zQsHXr1lQO4NwQ8zICxE4RbRohRro9+b9hExoaveWGfR01NTXp559//sS6devaDcNgEeB8OHvnDFOAZAoAUwJEMzTDjOTDAA7iaGxstKuqqhqfffbZhpaWFj9KyhBYZghEW8xOMTPi0RDPM4KNXr79XrEADtRdGqWfe+GFF05+/PHHmRzmUoJl5ZiGADYTMqVGCERD/K9/xQMoW+TDOeD59J8GQcA//PDDjuXLl9f/6U9/OtWDn7MFOGbEfEr/54S2CYMnGen1dBxXBICjRo2Cq666qkuj01e/+tVzjjBramrSK1asqF+7dm17R0dHLnNphUCyQ2yL+jc75AszodkZYie/rAHMJXxH2ZZMJuG//uu/4JVXXoHOzk6YPHkyPPzww+eS9NtVVVVNzzzzTENzc7OXx89ZPfi5fKY0zNRMiJmDepODITE8zwPZqihHQUFBN2DnzJkDM2fOhHQ6DVdddVW/9pHJZPzt27e3rlq1qnHbtm2dOcylEwo4woCYITCMCDPNyHZO6G9uX4/tkgdw165d3XpAR40aBYrS/avput6lqakPfpPv3bu34/nnn6/funVrynEcnsPP2SFAMiEgMhE22pHIMjrD1Rm4bAFkjMHJkyfh9OnTsHPnTnjjjTe6RZSTJ08+7/0cPnzY+N3vfte4YsWK5ra2tnx+zoqwx4gwzM7DSCviC/sN3CUL4LPPPgsffPABMMbA97t/5+Li4m6dZv31c5s3b25esWJFU3V1tdVDWpDpxc/lSh/CLJRJun8+5+OSA3DHjh09vv/QQw/Btdde2+/PtW072LVrV/uLL77YECq05pO/ogBG/ZwV8XNWDlA9GID7h15WacS9994L999/f7/+x/d9tn///s5XXnnl5Nq1a9vT6XSQQ/4KgxH2cUbEjIYZFjWh5rn6ucsKQE3Tsm3vcpSUlEBFRQU8+OCD/QpSTpw4Ya5Zs+bkypUrm0+ePJkrLbBzmMSwucz04ufCvtAdSOAuWQD/4z/+A3bs2JFt1P3a174GCxYsgKlTp/ZZWZHy10svvXTyww8/zPSQFkRZFJW/rD5Em25vasqQATAaDQ7GpdLf/e534bvf/e45/a/jOMGePXvaV61a1diD/GWHgDFzBC2ZPObSiigvFgC4fJAXp7pitNADBw50rl69+uTrr7/eFpG/eB5zKdmWi2FmhKWZqJ/jnPsX4ntd9gDW19dbmzZtan7hhRcajxw54uSRv6L1uZ78XL60wBosP3dFApjJZPy33367dfny5fV79+7N9FH+ClfJ+yt/efwirGd72QHo+z77+OOPUytWrGjYtGnTKcuyolVxD7qWdS64/HW5ADjgEc4XX3yR/u1vf9tQWVnZnqdakCupDstfEsxcaUFUIrtgfm4oMzAniP2NXltbW52qqqqm3/zmN401NTV2Hvkrk8PPWXnkLzuyjRkyp+5QAO5CAhhuYOU5XveajuQbpmkG27Zta125cuXJ7du3d/Ygf0U1SCv0vF/y18XwcxcTQA5iBWrxyEKvozM7mpube62Hffrpp6lf//rX9VVVVR22befzc9FqQSYCmJ1H/jIjgYo3lFh3oQHsqVU8fCFH9s6177//fuehQ4eMXOsnHTp0yKisrGxctWpVSz/8XDQtcHKwLqf8NVSBy7qbwbYI4uZvIwBgZGiW5nhdAmcXPIZvf/vbJb/61a+mTJw4MQEA0N7e7q5fv77x5Zdfbu6lzJPLh/Vb/uKce3AJjAsBoAIART0AVyoALoYzq3JmI5gFCxYk586dm1QUBT/77DNzz5496RxpQbTMY0byuXzyV77eFHeo+bmLDSCBM6ts5gKuRIBXFJrxPqYYHuSuimd6kb/MSEAzpNKCoRqFhn2gGzJnCpy5jxiBs9fW8ygT85hLA3ru/uqz/HUpAnfBABQriIUvq7bgzG0YJXjRY2ACaLmNbC8LryOfyxRG/Vwu+WvIpwVDNZEPIsDR0AxfuC9TDDsEbhhAGcG6oeQ6A7m7nPO1+TmXqrm8aACKe4BZYn9KCEQSMotBiGVhdtLQ++GURJpLA/KXecyIj3QvF+AuhpQWiBOZC7wwQGH2Sf/IIybUh9z1uMvSzw0JAIUv9MRJxTzgychS6QXAAM5Wz/NVxS8bPzdUGChNqZ0HPMkqJWJCc/nAcESbK3W4rPzckAEwAmKUeTLyVIWJzecDo8HMFWMuhwSAERDDWqgTYV4+Exr2g2EWWpxzF66wgRfbPQilRhdghYMX2gOA3W6McyWxbkgBGAISI/khzZPIh0tQ7HIOUIasCe2D5AYiUiWRJJ/B8BiaDBwe5zbI8CkYBnB4DAM4PIYBHAZweAwDODwu7TxwEK4HDBd78zYCDwM4RHLSSPJOoLuYLe9wz0OPwwAOAeCkdBbWQsOaKIPu9cBwg3BwpYJ5sa9OInCmhJSAs4J2XwCM1gTlpV7BlQbgRZHShHCtAEAMzvSMFsCZftBsRUJRFA3y9MSIyn6AiC4iOpTSjGma8pqHgHPOhgEcvCAGJ0+erLW2tiZc100GQZDknMuFkXWxCFSPTU0CQB8AXES0ENEghJiKopjxeNyaMGGCc9999wXLli3r6csNCZN7voHfBWUgIuLkyZO1lpaWAtd1CxljhZxzCWA3FgowsyZU9JeGi7kOImYAIIOIJiHEIoRYiqJYiUTCGjdunHupADnkGfjUU0+RDRs2KPX19QWO4xQxxooYY4UAUMg5TwJAQrAwBnm60gghPpxZntQHAJcxZgrwMgBgCTZaiGgLRjqJRMK68cYbnV27dvXFP/JhBnYPVAAA4Dvf+Q7ZsWNHgWVZxUEQFDPGigR4hQBQSAiRLCwIm1DOOUXEaPOTZF8aAEzRc2ohoomIDiJago2OpmkZznl6zJgx9rRp04Kqqqr++Ed+xTKQc5598fTTT+PLL78cS6VSxb7vl3DOi8UsJIQUAUBSAil9IQCohBCZXkAEQFf01BiIaITYZwdBIIF0CSEmISSjKEpG13WrpKTESiaTdh/M6gUDdKgysMtRzZ49W6mtrS12XbeEMVZMKS1hjBVzzosFaMUAkETEQgCQAU02iCGERPtCHUSU5tNkjFkCSFeAZwsmZhhjRtg36rpujRw50lqwYIGzatWqc80fhwwzB0VKC/8onn76aWxvb6e+7+uc8zilNBy0FCBiESImOedFAFCIiMmQGcXI53ERhVqcc9m5FhPs0wHARkRNmlFEVBFRQURdvK/7vh9vamoytm/fnrnjjjvs22+/3V+2bFl/VR0cKCDPl4EDfa+0bkdz4MABNAxD1TRN8zxPC4JA45zHhc9LSvMp2CcDGhq957VcLBnO9o6qAhSLc67J54gYAwCHMdYpVr9URXRrep4XC4LAUhRFsSxLO3bsmFVZWWkeOHDALisrYwLI/jANz5eV52sBlcEym3IcPXqUeJ6ncM5lWqCK9WFjAJBARBm4JBExKU469vJLRaneSHZxzm1E1AAgLoIYyjlXhTmVy3vHETHDOVcdx1F9349pmqbv27fPPnHihHXgwAG7oqIiqKio4OfAtHMCc0gxMNeYNGkS1tXVaaZpqoqiKEEQqIwxVSy3rYqApUCYTiX8pebPn1/wjW98o0hRFKyurjZ3796dzmQy4XSACvClGY1JIMUPQeecS/+YoJSawvRqYulvy/d93XEcu66uTm9ra7NPnjxp1dTUOMuWLfPPA5w+bz9UGJj3Z1RfX0+DIFDEiVM55yohRGGMKYgoX6ucc0UCRwiBu+++u+SXv/zl9RMnTiwAAEin096WLVuaX3vtteZPP/3UjGqqnHMKADFCiC39o2CcJX4kDmOMimv2dUqpzjmPcc5jQRBYnHPNsiynqalJ37JlS/rYsWP2/Pnzg0cffTTqH/vr/7CnbYdKFJrzKDZs2EB++tOfJlKp1FW2bZf6vl+KiCMZY6UAcBXnvBQAShFxJOc8Kf3erbfemly5cuVXc91mpK6uzty4cWPzq6++2lJfX+/m+DVzmdBD6JpBzrlFCEkTQgzBUks82pxzk1JqU0pNRDQ0TbMKCwvNZDJpzp0715k+fToTQOYDrq8nccCjV2UQ2YfvvfcecRyHMsYo55xSSpUgCCTzFBEhSraAmLhw4cLCXOABAIwfPz7x+OOPX7dkyZKRq1evPrl+/fp20zRZCEAUqo4mAh4NABxCiBQGpFk1BVtNwUabc65xzhXf93XDMPRMJhPbtWuXdfjwYauxsdEuLy9nt99+ey4w+srKbtsNeR8Yi8VoJpNBRVGI7/uEUkoAABljspyUvdgTzwwYO3Zsrze+LisrK3r22WcL7rnnnpGvvfZa044dOzpd1w2fQFWY1bhgogIAmjCrpgiibBFQuYQQU5rzIAhiQtKLpdPp+IkTJzLt7e2ZI0eO2K2trV5FRUWQx8/1F0g430sDlMFiX64/UkqRc46MsfDSOF2+fK61kPINXdfpnXfeefXs2bNL3nzzzZbVq1c3ff7551aIjYQxJiv7SiioUYW/tDjnujCjivDFGiEkzhgzKaUx3/ct0zRVx3HU6upqu6Wlxdq7d681f/78QACZC7j+BD0ofrx8yDFw7NixKE40uK6LnufJIAUjJg/CJrS/+ykuLla///3vf2XBggUlGzZsaF6/fn1bQ0ODJ64Klr4+DgAaIUTnnMdEeqEBgE4IkZd1GwJkkxCiB0GQUBTF8H1fRUTdMAyrsbFRa2tr0//5z39aNTU19r333hvccsstsl8Hz9W8ihyaDwUAuwBQUFCAcm0jSilwzlHOsHIjwTufdf2uu+66gieffHLS0qVLR65Zs6bxjTfeSBmGEcjVzDjnlHNeIFUZkW7YAjCZXliEEI0x5gCAyRijwo/GBIgxQogZBIHe0NBgHzhwwLrtttvsH/3oR0EIqHMFst9sHEwGZlHQNA0ZYxgEATLGgHOeZZ8ADwEAKaVZJp6PNDVjxoziZ555JrlkyZL21atXN33wwQfpsFLEGFNFlSPGObcopZoAL5tPClVHESyNBUEQUxRF933fUlVVMwwjpuu6ffToUcO2bfXEiRPWokWL/KVLl+YCsl9+MqRoDeryc9jb30pLS7G3ky1peD4mNJ9/XLJkyaibbrqpZPv27a2vvvpq0+HDhx3OOSeEAOeciKkgoiLkOEuqREIsV4VyE0NEPQiCGKXU8jwvpiiKbdu2CQBqQ0OD1tbWph8/ftw6ePCgNXXqVBYCMh8rB4SRymCzL5FIoGEY6Ps+ykCTMSZNqGRgNsgZSBABAK6++mrte9/73lfmzZtXsnHjxuaqqqr2trY2L2RWQZawBPNiIodUReoh2agJX6kDgOb7vqMoiuY4jup5nub7fuzYsWN6KpWK7du3zzp48KB91113BdOmTWMRsPAcGTl0VrEWDAjnQRgNZgZ6XH/99QVPPPHEteXl5SVVVVXNW7duTbmuy2VULHJEImU2AZ70fTEA0BljFqVUEwGRKdQkjTEWs207wxiLOY5jnz59OtPe3m5XV1db99xzj1NRUeHnAA9z+Ejes8HqzsRB9YGFhYUYSSNA+CAghCBjLMs2GbxIFg5K7UxRyLx580pnzZpVvGTJkvY1a9Y0ffTRRxlCiEzHsmZV6rSEEJsx1i1/lAKEeK0zxnTHcSxCiAkAWlNTk5NOp41MJmPW1NRY5eXl/u233x70otD0yMZcTBz0akQ8HkdN09D3fXBdFyileLY61MUXZhP5wQIwdEz07rvvHnXTTTcVv/nmm82VlZUt9fX1ngiwuAiuYkLN0QkhOpxpWcya1JAYH+Oc6wAQ55xbnPOYZVm2pmmmaZrqiRMntFQqpdbV1dm1tbX2+PHjg6VLl7IIC3OZVd4XJioDCVZv71FKMQiCbDohEvusCEMpzeaIF2KMHj1a/8EPfjC+vLy8dMOGDc2bN2/uSKVSvjTvjDHKGEuISFROVwAphQEzVM7SBZi267qakAw13/djmUzGrK+vNydNmmQbhmGXlZUF06ZN4zkCnV5BDDPxgvhAVVVRMk/sPAscYwyl+oKI0pReMBAppThlypTkk08+mVi0aFFpZWVl07vvvns6FK0i51wV+WAczhSQFUTUhIoTEwVqSwgBcUKIyRhTXdfVRE4ZEyY24ThOuqmpSZ01a5ZdXl7uRsxqLhDzmVRERD6YUSgWFBRgLBbDaAAjI0Dh87KJfCgKveCBlaqqZN68eSOmTp2avPPOO9vXrVvXUl1dbcpjJYRIWS4pRfFIF0AMzjQmO1JTRUSdMaaLclWMc276vq94nqf/7W9/M7/88ktr3759VllZmS/Mak++kedi4gWLQhVFQblcuPB1GI5ECSEYfrxYo6SkRL3//vuvufXWW4u3bt3aunbt2tbW1lZPMBGCIADBOI0xJkF0hHnVhR+UFRddRqm+78cJIRoAaOl0WjdNM2YYhtHR0aEePHjQqaursxcuXOiH0o4+mdSBLuhiPhPqeR4KhqFUYkK5IIaiUBgKY+zYsfEf/vCH47/+9a+X/P73v2/cs2dPp2EYTKZAYQFAVDs00eooLw/QRc1R45w7hBATEVXRE6SHzWomk8nU19dbe/futcrLy+2HH3446KtfHHQGFhQURNMIWUrKMk2azYtpQvOFe9OnTy/6+c9/XvDJJ5+kqqqqWvbs2dPJOZepEBf+UQmlF6oAMyYVHACQXQIqY0znnMtbRGu+72uu62rpdDqeTqeN06dP01OnTpmPP/643xcQB1XMjsfjKM1nvmReMjAipfULwT2NDqw9YkLK5XBjiQL/e2oSxiR6L0sZhgGNjY3Q0tICmUwGEBESiQSMHj0arrnmGkgmk1lZbuHChSPLysoKd+7c2f7666831dXVudKsMsZQ6KuKDHBCkasuBHJFRKw251wLgkD3fd9ERFnWygj/SN955x3a2dlpVFRUSJPKB9KEYh+3wagPlF84VOLBaAAjUok+H8z+Dg+e25+GU86ZGOBY2odOl8Fzc4pBp7kP1fd9+OKLL+B//ud/4OTJkxAR2EEUlWHWrFkwc+ZMUJQzp2nEiBHagw8+OGbOnDnFb7zxRsuWLVva29vbA8FEDIIAOedxkfjrISVHFQyMc84zcKbYbAlTq3meFxOAq4Zh0CAIyI4dO2hLS0v6pZdesntSbehTTz01kCI2hmdtbS2pra2NdXR0JDzPS4icSnZex4W6kRCht6IoChJCYMGCBUUzZ84s6svB/O6QCf/T7gFBABSzPhPAjSNUmJjs/vtMp9Pw7rvvwl//+ldIp9NdTLj0w4gI6XQaDh8+DB0dHTBu3Lguq2MXFxerc+bMKZk9e3bStm3/+PHjrqxzSmFJNk+JfJGIyFUJKTiqUH10zjlljBERC6DruoQxxh3HYW1tbf78+fNZjvOOFzQPVBQFgiDIRqKCZRipB/Y7CrV8DrmIdsrpnjqZpgnvvPMOHD16tBvL8y3gfPDgQTBNE/7lX/4la1Ll+2VlZUU/+9nPknfccUf7pk2bWvbt25cJggBFqkTgTEeAvHRcVv5lN5wpAhxbAEwYY+j7PuGco+M4LJVK+Xv37vUj1Y0ubBzU24xompbL98m6H0ZAwzAL+jqml6pAELvMEo3ATVep3QD66KOP4NixY12YFmZfvllfXw979uzJV7Yiixcvvvq5556b8pOf/GT82LFjNUVRgFKKqqqiqqqEEBITlxAUI2IxIaQIEUsQsRQRSwCgBBELOeclQRAUIWIyCIICy7KSra2tid27d2u53BIA4EB2peWkuASRUoqUUulvMOwHo1pof4KYe8fHoD4TwI4GG5wAoERH+L+mJmFCQdd0pLGxEfbv3w/hyFdGxhMnToSrrroKOOfQ1tYGJ06cANn+gYjAOYfa2lq48cYbYdKkSfnyR+2BBx4YM3fu3JJ169Y1vv3226c6OzuDIAgQETljjAZBEBdphCbLUsKsEmFCCSEk4Jx7jDE3CAI3lUrZhw4dsmpqapyQ9DZoUlrYB4KmaahpGiYSCWSMEcYYCYKAUEql6i8RQ0IISsmtP7mgThF+XJaEe8fHoNPjMKGAwshYd8NSW1sLhBDQNC1sIWDhwoVQVlbW5cKcQ4cOwa5du8CyrC6mtba2Ni+AcowbNy7+xBNPXPfNb35z5MaNG1t27tx5mjHGfd/nwoUgYywZBEGMMaaJSwBkPszE5eOeuDzOoZTGTNPU/vKXvyjTpk3zoqnFYKURCAAkHo+TRCJBdF0nnuchABDf95FzLmUpIu0/pZRIAHOlHb3mmyoCAwCawyl4ngctLS1dwCOEwJw5c2D69OndfN9Xv/pV8H0f9uzZkwWQcw6pVKrP+eOsWbOKp06dWrh48eKOtWvXtnz55ZeWAJH7vs9939eCIKDCR8qapM859yilLgBkFEVRNU1TNE1TT506pULXxZb5uZhQ7EP0mX2tKAqqqoq6rhPHcQgAEEVRZMRFZP0NEQmlFDVNI4qiSOG7z+OtOhu21dvgMoCEgvDwlATMKD3rAy3LAsZYl0gymUzC1KlT837mpEmToLa2Fjo6OrqkGP0Zuq6T8vLyq2bOnFn03nvvta9bt66lo6PDl0B6nkeDIEgwxgLGmBe6CEcjhMipI6Jm27bsn+2y/N5gMhAppRiPx0k8HkfP86SNJ2EApQlVFIVIk9sfBrbYDPY0OuAEHBABTJ/DX5tdKBuhgixMMcZAURTQdT0LRDweh1gs1lPkDKWlpWAYRhbAc1WIRowYoVVUVIxZuHDhiKqqqqZt27adsiyLEUK467ooIlNN9KSqsqtc0zRNURQVETXXddXGxkYyZswYfj4M7I2VXZ5TSlHXdSKYlTWlYfYJoR8VRUFN04imaf1iYMbjoCBAXMHszq2AA+OQBRARQVXVLixSFKVHUBhj4HkeqKqaNaFhBp/LGDNmTOyxxx67dvLkyfE1a9Y0t7W1eYgIvu/L4rDGGNMopSqc6WHVCCFaEASqZVnK0aNH6ZgxY7ooM2QAgYuaU1l9lxGoLNoSkRdK0FBVVSLNrUjm+wwgRYCYghCjZ6dGupbQJIDhKdWVfOPUqVNgGEZ2W1VVu+i656GvwtKlS0ctWrSoRKQZqCgKpZSqiKiIR010x6mcc9X3fS2dTmvHjx9Xoud+MPNAlMwK5UTyNZHBiow65XuqqmJ/pDSCABrBM5OemaqUZUInjVIKiqJ0mflGOp2Gmpqabv9XWFg4ICeGEIJlZWUF8vsTMagYiEgJIQqlVBHXOVLbtqllWVGi9DuN4Hmed8mtwgSBs/cvC9+oQC4GKe86wUReBAAAM2bMKFi8ePHVfTmghkwA/99naWgNrUR+81Uq/K8pCVCEJe7s7IRt27ZBJpPJbnPNNdfAbbfdltVGOzo6wPd9OHToELz33nvQ0tLSbV///u//PmC/7sbGRuett946LS02AJwGgFMA0CFmu3h9WszOysrKzCOPPOJc0HLSUB6ICLZtw6ZNm+Djjz8Gx3HyRpuTJk2COXPmDMh+HccJdu/eHc5JoqvS5Fq23YccN/O7ogEkhMBnn30G77//fo/bFRcXw0MPPQSJROK89+n7PnvxxRePr1u3rj38Z+h+F8Zcr4cBjI6Ojo4e3x81ahT827/9G0ycOPG893Xw4MH0c889d2zt2rUdvu+H0wEXuq7ilgvIAAaxpeKSHZMnT4aCgoIu/hEAIJFIwA033AD3338/jB49+rz20dDQYK1evbph+fLljalUKtqFJhetdEKAuTmAzNkUfEUDyBiD66+/Hh566CHYu3cveJ4HxcXFMGrUKJg6dSpMmTKlX8Xl6DAMw9+yZUvzL37xi/oDBw5YOQJCCwDScKa9Ql7T70TY6OXzf1c8gDJgmTt3Ltx8883geR7E4/GB8HN8586dbS+88ELD1q1bUzmAc0PMywgQO0W0aYQY6fbk/4ZNaPhE9JIb9nXU1NSkn3/++RPr1q1rNwyDRYCTq2/LFbYd8ZgGgJQA0QzNMCP5MICDOBobG+2qqqrGZ599tqGlpSW6GKUfAssMgSiXT+8UMwNnl1YPLyvr5f3hXUmmMvq3gbhHjvRzL7zwwsmPP/44k8NchlfUjk4Dzi6nngn5QwmiIf7Xv6IBzAWibJc41xEEAf/www87li9fXv+nP/3pVA9+Ti7SbEbMp/R/TmibMHiSkV6Ppv9KAK+0tBRKSkrANM/eoWvChAnnDGBNTU16xYoV9WvXrm3v6OjIZS6tEEh2iG1R/2aHfGEmNDtD7OSXNYCUdNGtz7AjcplIIpGAf/3Xf4XNmzeDaZowbtw4uO+++/q9r+bmZruqqqrpmWeeaWhubvby+DmrBz+Xz5SGmZoJMXNQb3IwJIYTAHgRwIo00q3VsKysDKZMmQKmaUJJSUm/9pHJZPzt27e3rlq1qnHbtm2dOcylEwo4woCYITCMCDPNyHZO6G99Xk79kgew6qgJp92uCE5I0jMlpcjQNK1LX0wfEn2+d+/ejueff75+69atKcdxeA4/Z4cAyYSAyETYaEciy+gMV2fgsgUw4ABHO31ocxj88YgJq77IAIsYmq+NVM97P4cPHzZ+97vfNa5YsaK5ra0tn5+zIuwxIgyz8zDSivjCfgN3yQL4v3Z3wJ+OWcA4gMu6u4irYgSWjoud8+c3Nzfbmzdvbl6xYkVTdXW11UNakOnFz+VKH8IslEm6fz7n45IDcO0Rs8f3n5xZCGUj+s9A27aDXbt2tb/44osNoUJrPvkrCmDUz1kRP2flANWDAbh/6GWVRjw6tQD+72nJ/uqWbP/+/Z2vvPLKybVr17an0+kgh/wVBiPs44yIGQ0zLGpCzXP1c5cVgDGKYAddf7hXxwj8PzMK4cdlSYj3oyf4xIkT5po1a06uXLmy+eTJk7nSAjuHSQyby0wvfi7sC92BBO6SBfD/nV0Efzxigs8AChSEO8bq8K0JcZg7SuvzBRVS/nrppZdOfvjhh5ke0oIoi6Lyl9WHaNPtTU25ogD8PzMK4f/MOLfuMMdxgj179rSvWrWqsQf5yw4BY+YIWjJ5zKUVUV4keIO6yssVo4UeOHCgc/Xq1Sdff/31toj8xfOYS8m2XAwzIyzNDKafu6IBrK+vtzZt2tT8wgsvNB45csTJI39F63M9+bl8aYE1WH7uigQwk8n4b7/9duvy5cvr9+7dm+mj/BWukvdX/hqQtOCKB9D3ffbxxx+nVqxY0bBp06ZTlmVFq+IedC3rXHD563IBcMBvBvPFF1+kf/vb3zZUVla256kW5Eqqw/KXBDNXWhCVyC4qcEOFgTlB7O9lXK2trU5VVVXTb37zm8aamho7j/yVyeHnrDzylx3ZxgyZU3coAHchAQw3sPIcr7v/Qx9bHUzTDLZt29a6cuXKk9u3b+/sQf6KapBW6PkFl78uJQA5iBWoxSMLvY7O7Ghubu61Hvbpp5+mfv3rX9dXVVV12Ladz89FqwWZCGB2HvnLjAQq3lBi3YUGsKdW8fCFHNk7177//vudhw4dMnKtn3To0CGjsrKycdWqVS398HPRtMDJwboLJn8NqA+6AMuQqwAwAgBGhmZpjtclcHbBY/j2t79d8qtf/WrKxIkTEwAA7e3t7vr16xtffvnl5l7KPLl82JCSvy41ABUAKOoBuFIBcDGcWZUz+yELFixIzp07N6koCn722Wfmnj170jnSgmiZx4zkc/nkr3y9KYMuf11qABI4s8pmLuBKBHhFoRnvY4rhQe6qeKYX+cuMBDRDKi0YqlFo2Ae6IXOmCBNL4Oy19TzKxDzm0oCeu7+GrPx1qQLohoIHLQRe9BiYAFpuI5s3w+vI5zKFUT+XS/4a8mnBUE3kgwhwNDTDF+7LFMMOgRsG0Av9GGRynYHcXc752vycS9VcXkwAmTiJSmjSEDg8lA/6EXbS0PvhlESaSwPyl3nMiI90LxfgLoaUFogTmQu8MEBh9kn/yCMm1Ifc9bjL0s8NFQBlUp+BrgtahMHzIkzNB2AAZ6vn+aril42fGyoASlNq5wFPskqJmNBcPjAc0eZKHS4rPzeUAAyDGGWejDxVYWLz+cBoMHPFmMuhAmAYxLAW6kSYl8+Ehv1gmIX9uihkGMCB84mSUWokeKE9AJjrxjg+XIHjQkhpff73SH5I8yTy4RIUu5wDlEsNwFyAkkiSz2B4DB6Aw+PCDzJ8CoYBHB7DAA6Pcx3//wDewefNKS+1EQAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin_ol/blue.monday/skin.handlebars</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBpZD0ie3tqcXVlcnlfanBsYXllcl9pZH19IiBjbGFzcz0ianAtanBsYXllciI+PC9kaXY+CjxkaXYgaWQ9Int7anBfY29udGFpbmVyX2lkfX0iIGNsYXNzPSJqcC1hdWRpbyI+CiAgPGRpdiBjbGFzcz0ianAtdHlwZS1zaW5nbGUiPgogICAgPGRpdiBjbGFzcz0ianAtZ3VpIGpwLWludGVyZmFjZSI+CiAgICAgIDx1bCBjbGFzcz0ianAtY29udHJvbHMiPgogICAgICAgIDxsaT48YSBocmVmPSJqYXZhc2NyaXB0OjsiIGNsYXNzPSJqcC1wbGF5IiB0YWJpbmRleD0iMSI+cGxheTwvYT48L2xpPgogICAgICAgIDxsaT48YSBocmVmPSJqYXZhc2NyaXB0OjsiIGNsYXNzPSJqcC1wYXVzZSIgdGFiaW5kZXg9IjEiPnBhdXNlPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGhyZWY9ImphdmFzY3JpcHQ6OyIgY2xhc3M9ImpwLXN0b3AiIHRhYmluZGV4PSIxIj5zdG9wPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGhyZWY9ImphdmFzY3JpcHQ6OyIgY2xhc3M9ImpwLW11dGUiIHRhYmluZGV4PSIxIiB0aXRsZT0ibXV0ZSI+bXV0ZTwvYT48L2xpPgogICAgICAgIDxsaT48YSBocmVmPSJqYXZhc2NyaXB0OjsiIGNsYXNzPSJqcC11bm11dGUiIHRhYmluZGV4PSIxIiB0aXRsZT0idW5tdXRlIj51bm11dGU8L2E+PC9saT4KICAgICAgICA8bGk+PGEgaHJlZj0iamF2YXNjcmlwdDo7IiBjbGFzcz0ianAtdm9sdW1lLW1heCIgdGFiaW5kZXg9IjEiIHRpdGxlPSJtYXggdm9sdW1lIj5tYXggdm9sdW1lPC9hPjwvbGk+CiAgICAgIDwvdWw+CiAgICAgIDxkaXYgY2xhc3M9ImpwLXByb2dyZXNzIj4KICAgICAgICA8ZGl2IGNsYXNzPSJqcC1zZWVrLWJhciI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJqcC1wbGF5LWJhciI+PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJqcC12b2x1bWUtYmFyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJqcC12b2x1bWUtYmFyLXZhbHVlIj48L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImpwLXRpbWUtaG9sZGVyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJqcC1jdXJyZW50LXRpbWUiPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImpwLWR1cmF0aW9uIj48L2Rpdj4KICAgICAgICA8dWwgY2xhc3M9ImpwLXRvZ2dsZXMiPgogICAgICAgICAgPGxpPjxhIGhyZWY9ImphdmFzY3JpcHQ6OyIgY2xhc3M9ImpwLXJlcGVhdCIgdGFiaW5kZXg9IjEiIHRpdGxlPSJyZXBlYXQiPnJlcGVhdDwvYT48L2xpPgogICAgICAgICAgPGxpPjxhIGhyZWY9ImphdmFzY3JpcHQ6OyIgY2xhc3M9ImpwLXJlcGVhdC1vZmYiIHRhYmluZGV4PSIxIiB0aXRsZT0icmVwZWF0IG9mZiI+cmVwZWF0IG9mZjwvYT48L2xpPgogICAgICAgIDwvdWw+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJqcC10aXRsZSI+CiAgICAgIDx1bD4KICAgICAgICA8bGk+e3t0aXRsZX19PC9saT4KICAgICAgPC91bD4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0ianAtbm8tc29sdXRpb24iPgogICAgICA8c3Bhbj5VcGRhdGUgUmVxdWlyZWQ8L3NwYW4+CiAgICAgIFRvIHBsYXkgdGhlIG1lZGlhIHlvdSB3aWxsIG5lZWQgdG8gZWl0aGVyIHVwZGF0ZSB5b3VyIGJyb3dzZXIgdG8gYSByZWNlbnQgdmVyc2lvbiBvciB1cGRhdGUgeW91ciA8YSBocmVmPSJodHRwOi8vZ2V0LmFkb2JlLmNvbS9mbGFzaHBsYXllci8iIHRhcmdldD0iX2JsYW5rIj5GbGFzaCBwbHVnaW48L2E+LgogICAgPC9kaXY+CiAgPC9kaXY+CjwvZGl2Pg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin_ol/pink.flag/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin_ol/pink.flag/jplayer.pink.flag.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogU2tpbiBmb3IgalBsYXllciBQbHVnaW4gKGpRdWVyeSBKYXZhU2NyaXB0IExpYnJhcnkpCiAqIGh0dHA6Ly93d3cuanBsYXllci5vcmcKICoKICogU2tpbiBOYW1lOiBQaW5rIEZsYWcKICoKICogQ29weXJpZ2h0IChjKSAyMDEyIEhhcHB5d29ybSBMdGQKICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCBHUEwgbGljZW5zZXMuCiAqICAtIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwCiAqICAtIGh0dHA6Ly93d3cuZ251Lm9yZy9jb3B5bGVmdC9ncGwuaHRtbAogKgogKiBBdXRob3I6IFNpbHZpYSBCZW52ZW51dGkKICogU2tpbiBWZXJzaW9uOiAxLjIgKGpQbGF5ZXIgMi4yLjApCiAqIERhdGU6IDIybmQgT2N0b2JlciAyMDEyCiAqLwoKZGl2LmpwLWF1ZGlvLApkaXYuanAtYXVkaW8tc3RyZWFtLApkaXYuanAtdmlkZW8gewoKCS8qIEVkaXQgdGhlIGZvbnQtc2l6ZSB0byBjb3VudGVyYWN0IGluaGVyaXRlZCBmb250IHNpemluZy4KCSAqIEVnLiAxLjI1ZW0gPSAxIC8gMC44ZW0KCSAqLwoKCWZvbnQtc2l6ZToxLjI1ZW07IC8qIDEuMjVlbSBmb3IgdGVzdGluZyBpbiBzaXRlIHBhZ2VzICovIC8qIE5vIHBhcmVudCBDU1MgdGhhdCBjYW4gZWZmZWN0IHRoZSBzaXplIGluIHRoZSBkZW1vcyBaSVAgKi8KCglmb250LWZhbWlseTpWZXJkYW5hLCBBcmlhbCwgc2Fucy1zZXJpZjsKCWxpbmUtaGVpZ2h0OjEuNjsKCWNvbG9yOiAjZmZmOwoJYm9yZGVyLXRvcDoxcHggc29saWQgIzU1NDQ2MTsKCWJvcmRlci1sZWZ0OjFweCBzb2xpZCAjNTU0NDYxOwoJYm9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjMTgwYTFmOwoJYm9yZGVyLWJvdHRvbToxcHggc29saWQgIzE4MGExZjsKCWJhY2tncm91bmQtY29sb3I6IzNhMmE0NTsKfQpkaXYuanAtYXVkaW8gewoJd2lkdGg6MjAxcHg7CglwYWRkaW5nOjIwcHg7Cn0KCmRpdi5qcC1hdWRpby1zdHJlYW0gewoJd2lkdGg6MTAxcHg7CglwYWRkaW5nOjIwcHggMjBweCAxMHB4IDIwcHg7Cn0KCmRpdi5qcC12aWRlby0yNzBwIHsKCXdpZHRoOjQ4MHB4Owp9CmRpdi5qcC12aWRlby0zNjBwIHsKCXdpZHRoOjY0MHB4Owp9CmRpdi5qcC12aWRlby1mdWxsIHsKCS8qIFJ1bGVzIGZvciBJRTYgKGZ1bGwtc2NyZWVuKSAqLwoJd2lkdGg6NDgwcHg7CgloZWlnaHQ6MjcwcHg7CgkvKiBSdWxlcyBmb3IgSUU3IChmdWxsLXNjcmVlbikgLSBPdGhlcndpc2UgdGhlIHJlbGF0aXZlIGNvbnRhaW5lciBjYXVzZXMgb3RoZXIgcGFnZSBpdGVtcyB0aGF0IGFyZSBub3QgcG9zaXRpb246c3RhdGljIChkZWZhdWx0KSB0byBhcHBlYXIgb3ZlciB0aGUgdmlkZW8vZ3VpLiAqLwoJcG9zaXRpb246c3RhdGljICFpbXBvcnRhbnQ7IHBvc2l0aW9uOnJlbGF0aXZlOwp9CgovKiBUaGUgei1pbmRleCBydWxlIGlzIGRlZmluZWQgaW4gdGhpcyBtYW5uZXIgdG8gZW5hYmxlIFBvcGNvcm4gcGx1Z2lucyB0aGF0IGFkZCBvdmVybGF5cyB0byB2aWRlbyBhcmVhLiBFRy4gU3VidGl0bGVzLiAqLwpkaXYuanAtdmlkZW8tZnVsbCBkaXYgZGl2IHsKCXotaW5kZXg6MTAwMDsKfQoKZGl2LmpwLXZpZGVvLWZ1bGwgZGl2LmpwLWpwbGF5ZXIgewoJdG9wOiAwOwoJbGVmdDogMDsKCXBvc2l0aW9uOiBmaXhlZCAhaW1wb3J0YW50OyBwb3NpdGlvbjogcmVsYXRpdmU7IC8qIFJ1bGVzIGZvciBJRTYgKGZ1bGwtc2NyZWVuKSAqLwoJb3ZlcmZsb3c6IGhpZGRlbjsKfQoKZGl2LmpwLXZpZGVvLWZ1bGwgZGl2LmpwLWd1aSB7Cglwb3NpdGlvbjogZml4ZWQgIWltcG9ydGFudDsgcG9zaXRpb246IHN0YXRpYzsgLyogUnVsZXMgZm9yIElFNiAoZnVsbC1zY3JlZW4pICovCgl0b3A6IDA7CglsZWZ0OiAwOwoJd2lkdGg6MTAwJTsKCWhlaWdodDoxMDAlOwoJei1pbmRleDoxMDAxOyAvKiAxIGxheWVyIGFib3ZlIHRoZSBvdGhlcnMuICovCn0KZGl2LmpwLXZpZGVvLWZ1bGwgZGl2LmpwLWludGVyZmFjZSB7Cglwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDsgcG9zaXRpb246IHJlbGF0aXZlOyAvKiBSdWxlcyBmb3IgSUU2IChmdWxsLXNjcmVlbikgKi8KCWJvdHRvbTogMDsKCWxlZnQ6IDA7Cn0KCmRpdi5qcC1pbnRlcmZhY2UgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJd2lkdGg6MTAwJTsKCWJhY2tncm91bmQtY29sb3I6IzNhMmE0NTsgLyogUmVxdWlyZWQgZm9yIHRoZSBmdWxsIHNjcmVlbiAqLwp9CgoKZGl2LmpwLWF1ZGlvIC5qcC1pbnRlcmZhY2UgewoJaGVpZ2h0OiA4MHB4OwoJcGFkZGluZy10b3A6MzBweDsKfQoKZGl2LmpwLWF1ZGlvLXN0cmVhbSAuanAtaW50ZXJmYWNlIHsKCWhlaWdodDogNTBweDsKCXBhZGRpbmctdG9wOjMwcHg7Cn0KCi8qIEBncm91cCBDT05UUk9MUyAqLwoKZGl2LmpwLWNvbnRyb2xzLWhvbGRlciB7CgljbGVhcjogYm90aDsKCXdpZHRoOjQ0MHB4OwoJbWFyZ2luOjAgYXV0byAxMHB4IGF1dG87Cglwb3NpdGlvbjogcmVsYXRpdmU7CglvdmVyZmxvdzpoaWRkZW47Cn0KCmRpdi5qcC1pbnRlcmZhY2UgdWwuanAtY29udHJvbHMgewoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLnBpbmsuZmxhZy5qcGciKSAwIDAgbm8tcmVwZWF0OwoJbGlzdC1zdHlsZS10eXBlOm5vbmU7CglwYWRkaW5nOiAxcHggMCAycHggMXB4OwoJb3ZlcmZsb3c6aGlkZGVuOwoJd2lkdGg6IDIwMXB4OwoJaGVpZ2h0OiAzNHB4Owp9CgpkaXYuanAtYXVkaW8gdWwuanAtY29udHJvbHMsCmRpdi5qcC1hdWRpby1zdHJlYW0gdWwuanAtY29udHJvbHMgewoJbWFyZ2luOjAgYXV0bzsKfQoKZGl2LmpwLWF1ZGlvLXN0cmVhbSB1bC5qcC1jb250cm9scyB7Cgl3aWR0aDogMTAwcHg7Cn0KCmRpdi5qcC12aWRlbyB1bC5qcC1jb250cm9scyB7CgltYXJnaW46MCAwIDAgMTE1cHg7CglmbG9hdDpsZWZ0OwoJZGlzcGxheTppbmxpbmU7IC8qIG5lZWQgdGhpcyB0byBmaXggSUU2IGRvdWJsZSBtYXJnaW4gKi8KfQoKZGl2LmpwLWludGVyZmFjZSB1bC5qcC1jb250cm9scyBsaSB7CglkaXNwbGF5OmlubGluZTsKCWZsb2F0OiBsZWZ0Owp9CmRpdi5qcC1pbnRlcmZhY2UgdWwuanAtY29udHJvbHMgYSB7CglkaXNwbGF5OmJsb2NrOwoJb3ZlcmZsb3c6aGlkZGVuOwoJdGV4dC1pbmRlbnQ6LTk5OTlweDsKCWhlaWdodDogMzRweDsKCW1hcmdpbjogMCAxcHggMnB4IDA7CglwYWRkaW5nOiAwOwp9CgoKLyogQGdyb3VwIHNpbmdsZSBwbGF5ZXIgY29udHJvbHMgKi8KCmRpdi5qcC10eXBlLXNpbmdsZSAgLmpwLWNvbnRyb2xzIGxpIGF7Cgl3aWR0aDogOTlweDsKfQoKZGl2LmpwLXR5cGUtc2luZ2xlICAuanAtcGxheSB7CgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIucGluay5mbGFnLmpwZyIpIDBweCAtNDBweCBuby1yZXBlYXQ7Cn0KCmRpdi5qcC10eXBlLXNpbmdsZSAgLmpwLXBsYXk6aG92ZXIgewoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLnBpbmsuZmxhZy5qcGciKSAtMTAwcHggLTQwcHggbm8tcmVwZWF0Owp9CgpkaXYuanAtdHlwZS1zaW5nbGUgIC5qcC1wYXVzZSB7CgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIucGluay5mbGFnLmpwZyIpIDBweCAtMTIwcHggbm8tcmVwZWF0Owp9CgpkaXYuanAtdHlwZS1zaW5nbGUgIC5qcC1wYXVzZTpob3ZlciB7CgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIucGluay5mbGFnLmpwZyIpIC0xMDBweCAtMTIwcHggbm8tcmVwZWF0Owp9CgovKiBUaGUgcmlnaHQgYm9yZGVyIGlzIG5vcm1hbGx5IGluIHRoZSB1bCBiYWNrZ3JvdW5kIGltYWdlLiAqLwpkaXYuanAtYXVkaW8tc3RyZWFtIC5qcC1wbGF5LApkaXYuanAtYXVkaW8tc3RyZWFtIC5qcC1wYXVzZSB7Cglib3JkZXItcmlnaHQ6MXB4IHNvbGlkICMxODA5MjA7Cn0KCmRpdi5qcC10eXBlLXNpbmdsZSAgLmpwLXN0b3AgewoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLnBpbmsuZmxhZy5qcGciKSAwcHggLTgwcHggbm8tcmVwZWF0Owp9CgpkaXYuanAtdHlwZS1zaW5nbGUgIC5qcC1zdG9wOmhvdmVyIHsKCWJhY2tncm91bmQ6IHVybCgianBsYXllci5waW5rLmZsYWcuanBnIikgLTEwMHB4IC04MHB4IG5vLXJlcGVhdDsKfQoKLyogQGVuZCAqLwoKLyogQGdyb3VwIHBsYXlsaXN0IHBsYXllciBjb250cm9scyAqLwoKZGl2LmpwLXR5cGUtcGxheWxpc3QgLmpwLWNvbnRyb2xzIGxpIGF7Cgl3aWR0aDogNDlweDsKfQoKZGl2LmpwLXR5cGUtcGxheWxpc3QgLmpwLXBsYXkgewoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLnBpbmsuZmxhZy5qcGciKSAtMjRweCAtNDBweCBuby1yZXBlYXQ7Cn0KCmRpdi5qcC10eXBlLXBsYXlsaXN0IC5qcC1wbGF5OmhvdmVyIHsKCWJhY2tncm91bmQ6IHVybCgianBsYXllci5waW5rLmZsYWcuanBnIikgLTEyNHB4IC00MHB4IG5vLXJlcGVhdDsKfQoKZGl2LmpwLXR5cGUtcGxheWxpc3QgLmpwLXBhdXNlIHsKCWJhY2tncm91bmQ6IHVybCgianBsYXllci5waW5rLmZsYWcuanBnIikgLTI0cHggLTEyMHB4IG5vLXJlcGVhdDsKfQoKZGl2LmpwLXR5cGUtcGxheWxpc3QgLmpwLXBhdXNlOmhvdmVyIHsKCWJhY2tncm91bmQ6IHVybCgianBsYXllci5waW5rLmZsYWcuanBnIikgLTEyNHB4IC0xMjBweCBuby1yZXBlYXQ7Cn0KCmRpdi5qcC10eXBlLXBsYXlsaXN0IC5qcC1zdG9wIHsKCWJhY2tncm91bmQ6IHVybCgianBsYXllci5waW5rLmZsYWcuanBnIikgLTI0cHggLTgwcHggbm8tcmVwZWF0Owp9CgpkaXYuanAtdHlwZS1wbGF5bGlzdCAuanAtc3RvcDpob3ZlciB7CgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIucGluay5mbGFnLmpwZyIpIC0xMjRweCAtODBweCBuby1yZXBlYXQ7Cn0KCmRpdi5qcC10eXBlLXBsYXlsaXN0IC5qcC1wcmV2aW91cyB7CgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIucGluay5mbGFnLmpwZyIpIC0yNHB4IC0yMDBweCBuby1yZXBlYXQ7Cn0KCmRpdi5qcC10eXBlLXBsYXlsaXN0IC5qcC1wcmV2aW91czpob3ZlciB7CgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIucGluay5mbGFnLmpwZyIpIC0xMjRweCAtMjAwcHggbm8tcmVwZWF0Owp9CgpkaXYuanAtdHlwZS1wbGF5bGlzdCAuanAtbmV4dCB7CgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIucGluay5mbGFnLmpwZyIpIC0yNHB4IC0xNjBweCBuby1yZXBlYXQ7Cn0KCmRpdi5qcC10eXBlLXBsYXlsaXN0IC5qcC1uZXh0OmhvdmVyIHsKCWJhY2tncm91bmQ6IHVybCgianBsYXllci5waW5rLmZsYWcuanBnIikgLTEyNHB4IC0xNjBweCBuby1yZXBlYXQ7Cn0KCi8qIEBlbmQgKi8KCi8qIEBlbmQgKi8KCgoKCi8qIEBncm91cCBUT0dHTEVTICovCgp1bC5qcC10b2dnbGVzIHsKCWxpc3Qtc3R5bGUtdHlwZTpub25lOwoJcGFkZGluZzowOwoJbWFyZ2luOjAgYXV0bzsKCW92ZXJmbG93OmhpZGRlbjsKfQoKZGl2LmpwLWF1ZGlvIHVsLmpwLXRvZ2dsZXMgewoJd2lkdGg6NTVweDsKfQoKZGl2LmpwLWF1ZGlvIC5qcC10eXBlLXNpbmdsZSB1bC5qcC10b2dnbGVzIHsKCXdpZHRoOjI1cHg7Cn0KCmRpdi5qcC12aWRlbyB1bC5qcC10b2dnbGVzIHsKCXdpZHRoOjEwMHB4OwoJbWFyZ2luLXRvcDogMTBweDsKfQoKdWwuanAtdG9nZ2xlcyBsaXsKCWRpc3BsYXk6YmxvY2s7CglmbG9hdDpyaWdodDsKfQoKdWwuanAtdG9nZ2xlcyBsaSBhewoJZGlzcGxheTpibG9jazsKCXdpZHRoOjI1cHg7CgloZWlnaHQ6MThweDsKCXRleHQtaW5kZW50Oi05OTk5cHg7CglsaW5lLWhlaWdodDoxMDAlOyAvKiBuZWVkIHRoaXMgZm9yIElFNiAqLwp9CgouanAtZnVsbC1zY3JlZW4gewoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLnBpbmsuZmxhZy5qcGciKSAwIC00MjBweCBuby1yZXBlYXQ7CgltYXJnaW4tbGVmdDogMjBweDsKfQoKLmpwLWZ1bGwtc2NyZWVuOmhvdmVyIHsKCWJhY2tncm91bmQ6IHVybCgianBsYXllci5waW5rLmZsYWcuanBnIikgLTMwcHggLTQyMHB4IG5vLXJlcGVhdDsKfQoKLmpwLXJlc3RvcmUtc2NyZWVuIHsKCWJhY2tncm91bmQ6IHVybCgianBsYXllci5waW5rLmZsYWcuanBnIikgLTYwcHggLTQyMHB4IG5vLXJlcGVhdDsKCW1hcmdpbi1sZWZ0OiAyMHB4Owp9CgouanAtcmVzdG9yZS1zY3JlZW46aG92ZXIgewoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLnBpbmsuZmxhZy5qcGciKSAtOTBweCAtNDIwcHggbm8tcmVwZWF0Owp9CgouanAtcmVwZWF0IHsKCWJhY2tncm91bmQ6IHVybCgianBsYXllci5waW5rLmZsYWcuanBnIikgMCAtNDQwcHggbm8tcmVwZWF0Owp9CgouanAtcmVwZWF0OmhvdmVyIHsKCWJhY2tncm91bmQ6IHVybCgianBsYXllci5waW5rLmZsYWcuanBnIikgLTMwcHggLTQ0MHB4IG5vLXJlcGVhdDsKfQoKLmpwLXJlcGVhdC1vZmYgewoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLnBpbmsuZmxhZy5qcGciKSAtNjBweCAtNDQwcHggbm8tcmVwZWF0Owp9CgouanAtcmVwZWF0LW9mZjpob3ZlciB7CgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIucGluay5mbGFnLmpwZyIpIC05MHB4IC00NDBweCBuby1yZXBlYXQ7Cn0KCi5qcC1zaHVmZmxlIHsKCWJhY2tncm91bmQ6IHVybCgianBsYXllci5waW5rLmZsYWcuanBnIikgMCAtNDYwcHggbm8tcmVwZWF0OwoJbWFyZ2luLWxlZnQ6IDVweDsKfQoKLmpwLXNodWZmbGU6aG92ZXIgewoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLnBpbmsuZmxhZy5qcGciKSAtMzBweCAtNDYwcHggbm8tcmVwZWF0Owp9CgouanAtc2h1ZmZsZS1vZmYgewoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLnBpbmsuZmxhZy5qcGciKSAtNjBweCAtNDYwcHggbm8tcmVwZWF0OwoJbWFyZ2luLWxlZnQ6IDVweDsKfQoKLmpwLXNodWZmbGUtb2ZmOmhvdmVyIHsKCWJhY2tncm91bmQ6IHVybCgianBsYXllci5waW5rLmZsYWcuanBnIikgLTkwcHggLTQ2MHB4IG5vLXJlcGVhdDsKfQoKCi8qIEBlbmQgKi8KCi8qIEBncm91cCBwcm9ncmVzcyBiYXIgKi8KCi8qIFRoZSBzZWVraW5nIGNsYXNzIGlzIGFkZGVkL3JlbW92ZWQgaW5zaWRlIGpQbGF5ZXIgKi8KZGl2LmpwLXNlZWtpbmctYmcgewoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLnBpbmsuZmxhZy5zZWVraW5nLmdpZiIpOwp9CgouanAtcHJvZ3Jlc3MgewoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLnBpbmsuZmxhZy5qcGciKSAwcHggLTI0MHB4IG5vLXJlcGVhdDsKCXdpZHRoOiAxOTdweDsKCWhlaWdodDogMTNweDsKCXBhZGRpbmc6IDAgMnB4IDJweCAycHg7CgltYXJnaW4tYm90dG9tOiA0cHg7CglvdmVyZmxvdzpoaWRkZW47Cn0KCmRpdi5qcC12aWRlbyAuanAtcHJvZ3Jlc3MgewoJYm9yZGVyLXRvcDoxcHggc29saWQgIzE4MGExZjsKCWJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjNTU0NTYwOwoJd2lkdGg6MTAwJTsKCWJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CglwYWRkaW5nOiAwOwp9CgouanAtc2Vlay1iYXIgewoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLnBpbmsuZmxhZy5qcGciKSAwcHggLTI2MHB4IHJlcGVhdC14OwoJd2lkdGg6MHB4OwoJaGVpZ2h0OiAxMDAlOwoJb3ZlcmZsb3c6aGlkZGVuOwoJY3Vyc29yOnBvaW50ZXI7Cn0KCi5qcC1wbGF5LWJhciB7CgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIucGluay5mbGFnLmpwZyIpIDBweCAtMjgwcHggcmVwZWF0LXg7Cgl3aWR0aDowcHg7CgloZWlnaHQ6IDEwMCU7CglvdmVyZmxvdzpoaWRkZW47Cn0KCgovKiBAZW5kICovCgovKiBAZ3JvdXAgdm9sdW1lIGNvbnRyb2xzICovCgpkaXYuanAtaW50ZXJmYWNlIHVsLmpwLWNvbnRyb2xzIGEuanAtbXV0ZSwKZGl2LmpwLWludGVyZmFjZSB1bC5qcC1jb250cm9scyBhLmpwLXVubXV0ZSwKZGl2LmpwLWludGVyZmFjZSB1bC5qcC1jb250cm9scyBhLmpwLXZvbHVtZS1tYXggewoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLnBpbmsuZmxhZy5qcGciKSAwcHggLTMzMHB4IG5vLXJlcGVhdDsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCXdpZHRoOiAxNnB4OwoJaGVpZ2h0OiAxMXB4Owp9CgpkaXYuanAtYXVkaW8gdWwuanAtY29udHJvbHMgYS5qcC1tdXRlLApkaXYuanAtYXVkaW8gdWwuanAtY29udHJvbHMgYS5qcC11bm11dGUsCmRpdi5qcC1hdWRpby1zdHJlYW0gdWwuanAtY29udHJvbHMgYS5qcC1tdXRlLApkaXYuanAtYXVkaW8tc3RyZWFtIHVsLmpwLWNvbnRyb2xzIGEuanAtdW5tdXRlIHsKCXRvcDotNnB4OwoJbGVmdDogMDsKfQoKZGl2LmpwLWF1ZGlvIHVsLmpwLWNvbnRyb2xzIGEuanAtdm9sdW1lLW1heCwKZGl2LmpwLWF1ZGlvLXN0cmVhbSB1bC5qcC1jb250cm9scyBhLmpwLXZvbHVtZS1tYXggewoJdG9wOi02cHg7CglyaWdodDogMDsKfQoKCmRpdi5qcC12aWRlbyB1bC5qcC1jb250cm9scyBhLmpwLW11dGUsCmRpdi5qcC12aWRlbyB1bC5qcC1jb250cm9scyBhLmpwLXVubXV0ZSB7CglsZWZ0OiAwOwoJdG9wOjE0cHg7Cn0KCmRpdi5qcC12aWRlbyB1bC5qcC1jb250cm9scyBhLmpwLXZvbHVtZS1tYXggewoJbGVmdDogODRweDsKCXRvcDoxNHB4Owp9CgpkaXYuanAtaW50ZXJmYWNlIHVsLmpwLWNvbnRyb2xzIGEuanAtbXV0ZTpob3ZlciB7CgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIucGluay5mbGFnLmpwZyIpIC0yNXB4IC0zMzBweCBuby1yZXBlYXQ7Cn0KCmRpdi5qcC1pbnRlcmZhY2UgdWwuanAtY29udHJvbHMgYS5qcC11bm11dGUgewoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLnBpbmsuZmxhZy5qcGciKSAtNjBweCAtMzMwcHggbm8tcmVwZWF0Owp9CgpkaXYuanAtaW50ZXJmYWNlIHVsLmpwLWNvbnRyb2xzIGEuanAtdW5tdXRlOmhvdmVyIHsKCWJhY2tncm91bmQ6IHVybCgianBsYXllci5waW5rLmZsYWcuanBnIikgLTg1cHggLTMzMHB4IG5vLXJlcGVhdDsKfQoKZGl2LmpwLWludGVyZmFjZSB1bC5qcC1jb250cm9scyBhLmpwLXZvbHVtZS1tYXggewoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLnBpbmsuZmxhZy5qcGciKSAwcHggLTM1MHB4IG5vLXJlcGVhdDsKfQoKZGl2LmpwLWludGVyZmFjZSB1bC5qcC1jb250cm9scyBhLmpwLXZvbHVtZS1tYXg6aG92ZXIgewoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLnBpbmsuZmxhZy5qcGciKSAtMjVweCAtMzUwcHggbm8tcmVwZWF0Owp9CgouanAtdm9sdW1lLWJhciB7CgliYWNrZ3JvdW5kOiB1cmwoImpwbGF5ZXIucGluay5mbGFnLmpwZyIpIDBweCAtMzAwcHggcmVwZWF0LXg7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl3aWR0aDogMTk3cHg7CgloZWlnaHQ6IDRweDsKCXBhZGRpbmc6IDJweCAycHggMXB4IDJweDsKCW92ZXJmbG93OiBoaWRkZW47Cn0KCi5qcC12b2x1bWUtYmFyOmhvdmVyIHsKCWN1cnNvcjogIHBvaW50ZXI7Cn0KCgpkaXYuanAtYXVkaW8gLmpwLWludGVyZmFjZSAuanAtdm9sdW1lLWJhciwKZGl2LmpwLWF1ZGlvLXN0cmVhbSAuanAtaW50ZXJmYWNlIC5qcC12b2x1bWUtYmFyIHsKCXRvcDoxMHB4OwoJbGVmdDogMDsKfQoKZGl2LmpwLWF1ZGlvLXN0cmVhbSAuanAtaW50ZXJmYWNlIC5qcC12b2x1bWUtYmFyIHsKCXdpZHRoOiA5N3B4OwoJYm9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjMTgwOTIwOwoJcGFkZGluZy1yaWdodDoxcHg7Cn0KCmRpdi5qcC12aWRlbyAuanAtdm9sdW1lLWJhciB7Cgl0b3A6IDA7CglsZWZ0OiAwOwoJd2lkdGg6OTVweDsKCWJvcmRlci1yaWdodDoxcHggc29saWQgIzE4MDkyMDsKCXBhZGRpbmctcmlnaHQ6MXB4OwoJbWFyZ2luLXRvcDogMzBweDsKfQoKLmpwLXZvbHVtZS1iYXItdmFsdWUgewoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLnBpbmsuZmxhZy5qcGciKSAwcHggLTMyMHB4IHJlcGVhdC14OwoJaGVpZ2h0OiA0cHg7Cn0KCi8qIEBlbmQgKi8KCi8qIEBncm91cCBjdXJyZW50IHRpbWUgYW5kIGR1cmF0aW9uICovCgouanAtY3VycmVudC10aW1lLCAuanAtZHVyYXRpb24gewoJd2lkdGg6NzBweDsKCWZvbnQtc2l6ZTouNWVtOwoJY29sb3I6ICM4YzdhOTk7Cn0KCi5qcC1jdXJyZW50LXRpbWUgewoJZmxvYXQ6IGxlZnQ7Cn0KCi5qcC1kdXJhdGlvbiB7CglmbG9hdDogcmlnaHQ7Cgl0ZXh0LWFsaWduOnJpZ2h0Owp9CgouanAtdmlkZW8gLmpwLWN1cnJlbnQtdGltZSB7CglwYWRkaW5nLWxlZnQ6MjBweDsKfQoKLmpwLXZpZGVvIC5qcC1kdXJhdGlvbiB7CglwYWRkaW5nLXJpZ2h0OjIwcHg7Cn0KCi8qIEBlbmQgKi8KCi8qIEBncm91cCBwbGF5bGlzdCAqLwoKLmpwLXRpdGxlIHVsLAouanAtcGxheWxpc3QgdWwgewoJbGlzdC1zdHlsZS10eXBlOm5vbmU7CQoJZm9udC1zaXplOi43ZW07CgltYXJnaW46IDA7CglwYWRkaW5nOiAwOwp9CgouanAtdmlkZW8gLmpwLXRpdGxlIHVsIHsKCW1hcmdpbjogMCAyMHB4IDEwcHg7Cn0KCi5qcC12aWRlbyAuanAtcGxheWxpc3QgdWwgewoJbWFyZ2luOiAwIDIwcHg7Cn0KCi5qcC10aXRsZSBsaSwKLmpwLXBsYXlsaXN0IGxpIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXBhZGRpbmc6IDJweCAwOwoJYm9yZGVyLXRvcDoxcHggc29saWQgIzU1NDQ2MTsKCWJvcmRlci1ib3R0b206MXB4IHNvbGlkICMxODBhMWY7CglvdmVyZmxvdzogaGlkZGVuOwp9CgouanAtdGl0bGUgbGl7Cglib3JkZXItYm90dG9tOm5vbmU7Cglib3JkZXItdG9wOm5vbmU7CglwYWRkaW5nOjA7Cgl0ZXh0LWFsaWduOmNlbnRlcjsKfQoKLyogTm90ZSB0aGF0IHRoZSBmaXJzdC1jaGlsZCAoSUU2KSBhbmQgbGFzdC1jaGlsZCAoSUU2LzcvOCkgc2VsZWN0b3JzIGRvIG5vdCB3b3JrIG9uIElFICovCgpkaXYuanAtdHlwZS1wbGF5bGlzdCBkaXYuanAtcGxheWxpc3QgbGk6Zmlyc3QtY2hpbGQgewoJYm9yZGVyLXRvcDpub25lOwoJcGFkZGluZy10b3A6M3B4Owp9CgpkaXYuanAtdHlwZS1wbGF5bGlzdCBkaXYuanAtcGxheWxpc3QgbGk6bGFzdC1jaGlsZCB7Cglib3JkZXItYm90dG9tOm5vbmU7CglwYWRkaW5nLWJvdHRvbTozcHg7Cn0KCmRpdi5qcC10eXBlLXBsYXlsaXN0IGRpdi5qcC1wbGF5bGlzdCBhIHsKCWNvbG9yOiAjZmZmOwoJdGV4dC1kZWNvcmF0aW9uOm5vbmU7Cn0KCmRpdi5qcC10eXBlLXBsYXlsaXN0IGRpdi5qcC1wbGF5bGlzdCBhOmhvdmVyIHsKCWNvbG9yOiAjZTg5MmU5Owp9CgpkaXYuanAtdHlwZS1wbGF5bGlzdCBkaXYuanAtcGxheWxpc3QgbGkuanAtcGxheWxpc3QtY3VycmVudCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMjYxMDJlOwoJbWFyZ2luOiAwIC0yMHB4OwoJcGFkZGluZzogMnB4IDIwcHg7Cglib3JkZXItdG9wOiAxcHggc29saWQgIzI2MTAyZTsKCWJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjMjYxMDJlOwp9CgpkaXYuanAtdHlwZS1wbGF5bGlzdCBkaXYuanAtcGxheWxpc3QgbGkuanAtcGxheWxpc3QtY3VycmVudCBhewoJY29sb3I6ICNlODkyZTk7Cn0KCmRpdi5qcC10eXBlLXBsYXlsaXN0IGRpdi5qcC1wbGF5bGlzdCBhLmpwLXBsYXlsaXN0LWl0ZW0tcmVtb3ZlIHsKCWZsb2F0OnJpZ2h0OwoJZGlzcGxheTppbmxpbmU7Cgl0ZXh0LWFsaWduOnJpZ2h0OwoJbWFyZ2luLWxlZnQ6MTBweDsKCWZvbnQtd2VpZ2h0OmJvbGQ7Cgljb2xvcjojOEM3QTk5Owp9CmRpdi5qcC10eXBlLXBsYXlsaXN0IGRpdi5qcC1wbGF5bGlzdCBhLmpwLXBsYXlsaXN0LWl0ZW0tcmVtb3ZlOmhvdmVyIHsKCWNvbG9yOiNFODkyRTk7Cn0KCmRpdi5qcC10eXBlLXBsYXlsaXN0IGRpdi5qcC1wbGF5bGlzdCBzcGFuLmpwLWZyZWUtbWVkaWEgewoJZmxvYXQ6IHJpZ2h0OwoJZGlzcGxheTppbmxpbmU7Cgl0ZXh0LWFsaWduOnJpZ2h0OwoJY29sb3I6IzhDN0E5OTsKfQoKZGl2LmpwLXR5cGUtcGxheWxpc3QgZGl2LmpwLXBsYXlsaXN0IHNwYW4uanAtZnJlZS1tZWRpYSBhewoJY29sb3I6IzhDN0E5OTsKfQoKZGl2LmpwLXR5cGUtcGxheWxpc3QgZGl2LmpwLXBsYXlsaXN0IHNwYW4uanAtZnJlZS1tZWRpYSBhOmhvdmVyewoJY29sb3I6I0U4OTJFOTsKfQpzcGFuLmpwLWFydGlzdCB7Cglmb250LXNpemU6LjhlbTsKCWNvbG9yOiM4QzdBOTk7Cn0KCi8qIEBlbmQgKi8KCgpkaXYuanAtdmlkZW8gZGl2LmpwLXZpZGVvLXBsYXkgewoJd2lkdGg6MTAwJTsKCW92ZXJmbG93OmhpZGRlbjsgLyogSW1wb3J0YW50IGZvciBuZXN0ZWQgbmVnYXRpdmUgbWFyZ2lucyB0byB3b3JrIGluIG1vZGVybiBicm93c2VycyAqLwoJY3Vyc29yOnBvaW50ZXI7Cn0KZGl2LmpwLXZpZGVvLTI3MHAgZGl2LmpwLXZpZGVvLXBsYXkgewoJbWFyZ2luLXRvcDotMjcwcHg7CgloZWlnaHQ6MjcwcHg7Cn0KZGl2LmpwLXZpZGVvLTM2MHAgZGl2LmpwLXZpZGVvLXBsYXkgewoJbWFyZ2luLXRvcDotMzYwcHg7CgloZWlnaHQ6MzYwcHg7Cn0KZGl2LmpwLXZpZGVvLWZ1bGwgZGl2LmpwLXZpZGVvLXBsYXkgewoJaGVpZ2h0OjEwMCU7Cn0KYS5qcC12aWRlby1wbGF5LWljb24gewoJcG9zaXRpb246cmVsYXRpdmU7CglkaXNwbGF5OmJsb2NrOwoJd2lkdGg6IDExMnB4OwoJaGVpZ2h0OiAxMDBweDsKCgltYXJnaW4tbGVmdDotNTZweDsKCW1hcmdpbi10b3A6LTUwcHg7CglsZWZ0OjUwJTsKCXRvcDo1MCU7CgoJYmFja2dyb3VuZDogdXJsKCJqcGxheWVyLnBpbmsuZmxhZy52aWRlby5wbGF5LnBuZyIpIDAgMCBuby1yZXBlYXQ7Cgl0ZXh0LWluZGVudDotOTk5OXB4Owp9CmRpdi5qcC12aWRlby1wbGF5OmhvdmVyIGEuanAtdmlkZW8tcGxheS1pY29uIHsKCWJhY2tncm91bmQ6IHVybCgianBsYXllci5waW5rLmZsYWcudmlkZW8ucGxheS5wbmciKSAwIC0xMDBweCBuby1yZXBlYXQ7Cn0KCgpkaXYuanAtanBsYXllciBhdWRpbywKZGl2LmpwLWpwbGF5ZXIgewoJd2lkdGg6MHB4OwoJaGVpZ2h0OjBweDsKfQoKZGl2LmpwLWpwbGF5ZXIgewoJYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDsKfQoKLyogQGdyb3VwIE5PIFNPTFVUSU9OIGVycm9yIGZlZWRiYWNrICovCgouanAtbm8tc29sdXRpb24gewoJcGFkZGluZzo1cHg7Cglmb250LXNpemU6LjhlbTsKCWJhY2tncm91bmQtY29sb3I6IzNhMmE0NTsKCWJvcmRlci10b3A6MnB4IHNvbGlkICM1NTQ0NjE7Cglib3JkZXItbGVmdDoycHggc29saWQgIzU1NDQ2MTsKCWJvcmRlci1yaWdodDoycHggc29saWQgIzE4MGExZjsKCWJvcmRlci1ib3R0b206MnB4IHNvbGlkICMxODBhMWY7Cgljb2xvcjojRkZGOwoJZGlzcGxheTpub25lOwp9CgouanAtbm8tc29sdXRpb24gYSB7Cgljb2xvcjojRkZGOwp9CgouanAtbm8tc29sdXRpb24gc3BhbiB7Cglmb250LXNpemU6MWVtOwoJZGlzcGxheTpibG9jazsKCXRleHQtYWxpZ246Y2VudGVyOwoJZm9udC13ZWlnaHQ6Ym9sZDsKfQovKiBAZW5kICovCg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin_ol/pink.flag/jplayer.pink.flag.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin_ol/pink.flag/jplayer.pink.flag.seeking.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jPlayer/skin_ol/pink.flag/jplayer.pink.flag.video.play.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jquery.fileupload-angular.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogalF1ZXJ5IEZpbGUgVXBsb2FkIEFuZ3VsYXJKUyBQbHVnaW4KICogaHR0cHM6Ly9naXRodWIuY29tL2JsdWVpbXAvalF1ZXJ5LUZpbGUtVXBsb2FkCiAqCiAqIENvcHlyaWdodCAyMDEzLCBTZWJhc3RpYW4gVHNjaGFuCiAqIGh0dHBzOi8vYmx1ZWltcC5uZXQKICoKICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlOgogKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVAogKi8KCi8qIGpzaGludCBub21lbjpmYWxzZSAqLwovKiBnbG9iYWwgZGVmaW5lLCBhbmd1bGFyLCByZXF1aXJlICovCgo7KGZ1bmN0aW9uIChmYWN0b3J5KSB7CiAgICAndXNlIHN0cmljdCc7CiAgICBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7CiAgICAgICAgLy8gUmVnaXN0ZXIgYXMgYW4gYW5vbnltb3VzIEFNRCBtb2R1bGU6CiAgICAgICAgZGVmaW5lKFsKICAgICAgICAgICAgJ2pxdWVyeScsCiAgICAgICAgICAgICdhbmd1bGFyJywKICAgICAgICAgICAgJy4vanF1ZXJ5LmZpbGV1cGxvYWQtaW1hZ2UnLAogICAgICAgICAgICAnLi9qcXVlcnkuZmlsZXVwbG9hZC1hdWRpbycsCiAgICAgICAgICAgICcuL2pxdWVyeS5maWxldXBsb2FkLXZpZGVvJywKICAgICAgICAgICAgJy4vanF1ZXJ5LmZpbGV1cGxvYWQtdmFsaWRhdGUnCiAgICAgICAgXSwgZmFjdG9yeSk7CiAgICB9IGVsc2UgaWYgKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JykgewogICAgICAgIC8vIE5vZGUvQ29tbW9uSlM6CiAgICAgICAgZmFjdG9yeSgKICAgICAgICAgICAgcmVxdWlyZSgnanF1ZXJ5JyksCiAgICAgICAgICAgIHJlcXVpcmUoJ2FuZ3VsYXInKSwKICAgICAgICAgICAgcmVxdWlyZSgnLi9qcXVlcnkuZmlsZXVwbG9hZC1pbWFnZScpLAogICAgICAgICAgICByZXF1aXJlKCcuL2pxdWVyeS5maWxldXBsb2FkLWF1ZGlvJyksCiAgICAgICAgICAgIHJlcXVpcmUoJy4vanF1ZXJ5LmZpbGV1cGxvYWQtdmlkZW8nKSwKICAgICAgICAgICAgcmVxdWlyZSgnLi9qcXVlcnkuZmlsZXVwbG9hZC12YWxpZGF0ZScpCiAgICAgICAgKTsKICAgIH0gZWxzZSB7CiAgICAgICAgZmFjdG9yeSgpOwogICAgfQp9KGZ1bmN0aW9uICgpIHsKICAgICd1c2Ugc3RyaWN0JzsKCiAgICBhbmd1bGFyLm1vZHVsZSgnYmx1ZWltcC5maWxldXBsb2FkJywgW10pCgogICAgICAgIC8vIFRoZSBmaWxlVXBsb2FkIHNlcnZpY2UgcHJvdmlkZXMgY29uZmlndXJhdGlvbiBvcHRpb25zCiAgICAgICAgLy8gZm9yIHRoZSBmaWxlVXBsb2FkIGRpcmVjdGl2ZSBhbmQgZGVmYXVsdCBoYW5kbGVycyBmb3IKICAgICAgICAvLyBGaWxlIFVwbG9hZCBldmVudHM6CiAgICAgICAgLnByb3ZpZGVyKCdmaWxlVXBsb2FkJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgc2NvcGVFdmFsQXN5bmMgPSBmdW5jdGlvbiAoZXhwcmVzc2lvbikgewogICAgICAgICAgICAgICAgICAgIHZhciBzY29wZSA9IGFuZ3VsYXIuZWxlbWVudCh0aGlzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbGV1cGxvYWQoJ29wdGlvbicsICdzY29wZScpOwogICAgICAgICAgICAgICAgICAgIC8vIFNjaGVkdWxlIGEgbmV3ICRkaWdlc3QgY3ljbGUgaWYgbm90IGFscmVhZHkgaW5zaWRlIG9mIG9uZQogICAgICAgICAgICAgICAgICAgIC8vIGFuZCBldmFsdWF0ZSB0aGUgZ2l2ZW4gZXhwcmVzc2lvbjoKICAgICAgICAgICAgICAgICAgICBzY29wZS4kZXZhbEFzeW5jKGV4cHJlc3Npb24pOwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGFkZEZpbGVNZXRob2RzID0gZnVuY3Rpb24gKHNjb3BlLCBkYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGZpbGVzID0gZGF0YS5maWxlcywKICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSA9IGZpbGVzWzBdOwogICAgICAgICAgICAgICAgICAgIGFuZ3VsYXIuZm9yRWFjaChmaWxlcywgZnVuY3Rpb24gKGZpbGUsIGluZGV4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUuX2luZGV4ID0gaW5kZXg7CiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUuJHN0YXRlID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEuc3RhdGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS4kcHJvY2Vzc2luZyA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLnByb2Nlc3NpbmcoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS4kcHJvZ3Jlc3MgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YS5wcm9ncmVzcygpOwogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICBmaWxlLiRyZXNwb25zZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLnJlc3BvbnNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgZmlsZS4kc3VibWl0ID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWZpbGUuZXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLnN1Ym1pdCgpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICBmaWxlLiRjYW5jZWwgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLmFib3J0KCk7CiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAkY29uZmlnOwogICAgICAgICAgICAkY29uZmlnID0gdGhpcy5kZWZhdWx0cyA9IHsKICAgICAgICAgICAgICAgIGhhbmRsZVJlc3BvbnNlOiBmdW5jdGlvbiAoZSwgZGF0YSkgewogICAgICAgICAgICAgICAgICAgIHZhciBmaWxlcyA9IGRhdGEucmVzdWx0ICYmIGRhdGEucmVzdWx0LmZpbGVzOwogICAgICAgICAgICAgICAgICAgIGlmIChmaWxlcykgewogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnNjb3BlLnJlcGxhY2UoZGF0YS5maWxlcywgZmlsZXMpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YS5lcnJvclRocm93biB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS50ZXh0U3RhdHVzID09PSAnZXJyb3InKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuZmlsZXNbMF0uZXJyb3IgPSBkYXRhLmVycm9yVGhyb3duIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnRleHRTdGF0dXM7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGFkZDogZnVuY3Rpb24gKGUsIGRhdGEpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHZhciBzY29wZSA9IGRhdGEuc2NvcGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzQ29weSA9IFtdOwogICAgICAgICAgICAgICAgICAgIGFuZ3VsYXIuZm9yRWFjaChkYXRhLmZpbGVzLCBmdW5jdGlvbiAoZmlsZSkgewogICAgICAgICAgICAgICAgICAgICAgICBmaWxlc0NvcHkucHVzaChmaWxlKTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICBzY29wZS4kcGFyZW50LiRhcHBseUFzeW5jKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYWRkRmlsZU1ldGhvZHMoc2NvcGUsIGRhdGEpOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWV0aG9kID0gc2NvcGUub3B0aW9uKCdwcmVwZW5kRmlsZXMnKSA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Vuc2hpZnQnIDogJ3B1c2gnOwogICAgICAgICAgICAgICAgICAgICAgICBBcnJheS5wcm90b3R5cGVbbWV0aG9kXS5hcHBseShzY29wZS5xdWV1ZSwgZGF0YS5maWxlcyk7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgZGF0YS5wcm9jZXNzKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNjb3BlLnByb2Nlc3MoZGF0YSk7CiAgICAgICAgICAgICAgICAgICAgfSkuYWx3YXlzKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuJHBhcmVudC4kYXBwbHlBc3luYyhmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRGaWxlTWV0aG9kcyhzY29wZSwgZGF0YSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5yZXBsYWNlKGZpbGVzQ29weSwgZGF0YS5maWxlcyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHNjb3BlLm9wdGlvbignYXV0b1VwbG9hZCcpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5hdXRvVXBsb2FkKSAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuYXV0b1VwbG9hZCAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuc3VibWl0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBkb25lOiBmdW5jdGlvbiAoZSwgZGF0YSkgewogICAgICAgICAgICAgICAgICAgIGlmIChlLmlzRGVmYXVsdFByZXZlbnRlZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgIGRhdGEuc2NvcGUuJGFwcGx5KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5oYW5kbGVSZXNwb25zZS5jYWxsKHRoYXQsIGUsIGRhdGEpOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGZhaWw6IGZ1bmN0aW9uIChlLCBkYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGUuaXNEZWZhdWx0UHJldmVudGVkKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB2YXIgdGhhdCA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlID0gZGF0YS5zY29wZTsKICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5lcnJvclRocm93biA9PT0gJ2Fib3J0JykgewogICAgICAgICAgICAgICAgICAgICAgICBzY29wZS5jbGVhcihkYXRhLmZpbGVzKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBzY29wZS4kYXBwbHkoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmhhbmRsZVJlc3BvbnNlLmNhbGwodGhhdCwgZSwgZGF0YSk7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc3RvcDogc2NvcGVFdmFsQXN5bmMsCiAgICAgICAgICAgICAgICBwcm9jZXNzc3RhcnQ6IHNjb3BlRXZhbEFzeW5jLAogICAgICAgICAgICAgICAgcHJvY2Vzc3N0b3A6IHNjb3BlRXZhbEFzeW5jLAogICAgICAgICAgICAgICAgZ2V0TnVtYmVyT2ZGaWxlczogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBzY29wZSA9IHRoaXMuc2NvcGU7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNjb3BlLnF1ZXVlLmxlbmd0aCAtIHNjb3BlLnByb2Nlc3NpbmcoKTsKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2pzb24nLAogICAgICAgICAgICAgICAgYXV0b1VwbG9hZDogZmFsc2UKICAgICAgICAgICAgfTsKICAgICAgICAgICAgdGhpcy4kZ2V0ID0gWwogICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRzOiAkY29uZmlnCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXTsKICAgICAgICB9KQoKICAgICAgICAvLyBGb3JtYXQgYnl0ZSBudW1iZXJzIHRvIHJlYWRhYmxlIHByZXNlbnRhdGlvbnM6CiAgICAgICAgLnByb3ZpZGVyKCdmb3JtYXRGaWxlU2l6ZUZpbHRlcicsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdmFyICRjb25maWcgPSB7CiAgICAgICAgICAgICAgICAvLyBCeXRlIHVuaXRzIGZvbGxvd2luZyB0aGUgSUVDIGZvcm1hdAogICAgICAgICAgICAgICAgLy8gaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9LaWxvYnl0ZQogICAgICAgICAgICAgICAgdW5pdHM6IFsKICAgICAgICAgICAgICAgICAgICB7c2l6ZTogMTAwMDAwMDAwMCwgc3VmZml4OiAnIEdCJ30sCiAgICAgICAgICAgICAgICAgICAge3NpemU6IDEwMDAwMDAsIHN1ZmZpeDogJyBNQid9LAogICAgICAgICAgICAgICAgICAgIHtzaXplOiAxMDAwLCBzdWZmaXg6ICcgS0InfQogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9OwogICAgICAgICAgICB0aGlzLmRlZmF1bHRzID0gJGNvbmZpZzsKICAgICAgICAgICAgdGhpcy4kZ2V0ID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChieXRlcykgewogICAgICAgICAgICAgICAgICAgIGlmICghYW5ndWxhci5pc051bWJlcihieXRlcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB2YXIgdW5pdCA9IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXgsCiAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeDsKICAgICAgICAgICAgICAgICAgICB3aGlsZSAodW5pdCkgewogICAgICAgICAgICAgICAgICAgICAgICB1bml0ID0gJGNvbmZpZy51bml0c1tpXTsKICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4ID0gdW5pdC5wcmVmaXggfHwgJyc7CiAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeCA9IHVuaXQuc3VmZml4IHx8ICcnOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gJGNvbmZpZy51bml0cy5sZW5ndGggLSAxIHx8IGJ5dGVzID49IHVuaXQuc2l6ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByZWZpeCArIChieXRlcyAvIHVuaXQuc2l6ZSkudG9GaXhlZCgyKSArIHN1ZmZpeDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpICs9IDE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfTsKICAgICAgICB9KQoKICAgICAgICAvLyBUaGUgRmlsZVVwbG9hZENvbnRyb2xsZXIgaW5pdGlhbGl6ZXMgdGhlIGZpbGV1cGxvYWQgd2lkZ2V0IGFuZAogICAgICAgIC8vIHByb3ZpZGVzIHNjb3BlIG1ldGhvZHMgdG8gY29udHJvbCB0aGUgRmlsZSBVcGxvYWQgZnVuY3Rpb25hbGl0eToKICAgICAgICAuY29udHJvbGxlcignRmlsZVVwbG9hZENvbnRyb2xsZXInLCBbCiAgICAgICAgICAgICckc2NvcGUnLCAnJGVsZW1lbnQnLCAnJGF0dHJzJywgJyR3aW5kb3cnLCAnZmlsZVVwbG9hZCcsJyRxJywKICAgICAgICAgICAgZnVuY3Rpb24gKCRzY29wZSwgJGVsZW1lbnQsICRhdHRycywgJHdpbmRvdywgZmlsZVVwbG9hZCwgJHEpIHsKICAgICAgICAgICAgICAgIHZhciB1cGxvYWRNZXRob2RzID0gewogICAgICAgICAgICAgICAgICAgIHByb2dyZXNzOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkZWxlbWVudC5maWxldXBsb2FkKCdwcm9ncmVzcycpOwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkZWxlbWVudC5maWxldXBsb2FkKCdhY3RpdmUnKTsKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIG9wdGlvbjogZnVuY3Rpb24gKG9wdGlvbiwgZGF0YSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRlbGVtZW50LmZpbGV1cGxvYWQoJ29wdGlvbicsIG9wdGlvbik7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgJGVsZW1lbnQuZmlsZXVwbG9hZCgnb3B0aW9uJywgb3B0aW9uLCBkYXRhKTsKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGFkZDogZnVuY3Rpb24gKGRhdGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRlbGVtZW50LmZpbGV1cGxvYWQoJ2FkZCcsIGRhdGEpOwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgc2VuZDogZnVuY3Rpb24gKGRhdGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRlbGVtZW50LmZpbGV1cGxvYWQoJ3NlbmQnLCBkYXRhKTsKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHByb2Nlc3M6IGZ1bmN0aW9uIChkYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkZWxlbWVudC5maWxldXBsb2FkKCdwcm9jZXNzJywgZGF0YSk7CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBwcm9jZXNzaW5nOiBmdW5jdGlvbiAoZGF0YSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJGVsZW1lbnQuZmlsZXVwbG9hZCgncHJvY2Vzc2luZycsIGRhdGEpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAkc2NvcGUuZGlzYWJsZWQgPSAhJHdpbmRvdy5qUXVlcnkuc3VwcG9ydC5maWxlSW5wdXQ7CiAgICAgICAgICAgICAgICAkc2NvcGUucXVldWUgPSAkc2NvcGUucXVldWUgfHwgW107CiAgICAgICAgICAgICAgICAkc2NvcGUuY2xlYXIgPSBmdW5jdGlvbiAoZmlsZXMpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgcXVldWUgPSB0aGlzLnF1ZXVlLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gcXVldWUubGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICBmaWxlID0gZmlsZXMsCiAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9IDE7CiAgICAgICAgICAgICAgICAgICAgaWYgKGFuZ3VsYXIuaXNBcnJheShmaWxlcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSA9IGZpbGVzWzBdOwogICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSBmaWxlcy5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHdoaWxlIChpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGkgLT0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHF1ZXVlW2ldID09PSBmaWxlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcXVldWUuc3BsaWNlKGksIGxlbmd0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgJHNjb3BlLnJlcGxhY2UgPSBmdW5jdGlvbiAob2xkRmlsZXMsIG5ld0ZpbGVzKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHF1ZXVlID0gdGhpcy5xdWV1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSA9IG9sZEZpbGVzWzBdLAogICAgICAgICAgICAgICAgICAgICAgICBpLAogICAgICAgICAgICAgICAgICAgICAgICBqOwogICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBxdWV1ZS5sZW5ndGg7IGkgKz0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAocXVldWVbaV0gPT09IGZpbGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBuZXdGaWxlcy5sZW5ndGg7IGogKz0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXVlW2kgKyBqXSA9IG5ld0ZpbGVzW2pdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICRzY29wZS5hcHBseU9uUXVldWUgPSBmdW5jdGlvbiAobWV0aG9kKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGxpc3QgPSB0aGlzLnF1ZXVlLnNsaWNlKDApLAogICAgICAgICAgICAgICAgICAgICAgICBpLAogICAgICAgICAgICAgICAgICAgICAgICBmaWxlLAogICAgICAgICAgICAgICAgICAgICAgICBwcm9taXNlcyA9IFtdOwogICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSArPSAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgPSBsaXN0W2ldOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlsZVttZXRob2RdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9taXNlcy5wdXNoKGZpbGVbbWV0aG9kXSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHEuYWxsKHByb21pc2VzKTsKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAkc2NvcGUuc3VibWl0ID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFwcGx5T25RdWV1ZSgnJHN1Ym1pdCcpOwogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICRzY29wZS5jYW5jZWwgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXBwbHlPblF1ZXVlKCckY2FuY2VsJyk7CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgLy8gQWRkIHVwbG9hZCBtZXRob2RzIHRvIHRoZSBzY29wZToKICAgICAgICAgICAgICAgIGFuZ3VsYXIuZXh0ZW5kKCRzY29wZSwgdXBsb2FkTWV0aG9kcyk7CiAgICAgICAgICAgICAgICAvLyBUaGUgZmlsZXVwbG9hZCB3aWRnZXQgd2lsbCBpbml0aWFsaXplIHdpdGgKICAgICAgICAgICAgICAgIC8vIHRoZSBvcHRpb25zIHByb3ZpZGVkIHZpYSAiZGF0YS0iLXBhcmFtZXRlcnMsCiAgICAgICAgICAgICAgICAvLyBhcyB3ZWxsIGFzIHRob3NlIGdpdmVuIHZpYSBvcHRpb25zIG9iamVjdDoKICAgICAgICAgICAgICAgICRlbGVtZW50LmZpbGV1cGxvYWQoYW5ndWxhci5leHRlbmQoCiAgICAgICAgICAgICAgICAgICAge3Njb3BlOiAkc2NvcGV9LAogICAgICAgICAgICAgICAgICAgIGZpbGVVcGxvYWQuZGVmYXVsdHMKICAgICAgICAgICAgICAgICkpLm9uKCdmaWxldXBsb2FkYWRkJywgZnVuY3Rpb24gKGUsIGRhdGEpIHsKICAgICAgICAgICAgICAgICAgICBkYXRhLnNjb3BlID0gJHNjb3BlOwogICAgICAgICAgICAgICAgfSkub24oJ2ZpbGV1cGxvYWRmYWlsJywgZnVuY3Rpb24gKGUsIGRhdGEpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5lcnJvclRocm93biA9PT0gJ2Fib3J0JykgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmRhdGFUeXBlICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmRhdGFUeXBlLmluZGV4T2YoJ2pzb24nKSA9PT0gZGF0YS5kYXRhVHlwZS5sZW5ndGggLSA0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnJlc3VsdCA9IGFuZ3VsYXIuZnJvbUpzb24oZGF0YS5qcVhIUi5yZXNwb25zZVRleHQpOwogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChpZ25vcmUpIHt9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkub24oWwogICAgICAgICAgICAgICAgICAgICdmaWxldXBsb2FkYWRkJywKICAgICAgICAgICAgICAgICAgICAnZmlsZXVwbG9hZHN1Ym1pdCcsCiAgICAgICAgICAgICAgICAgICAgJ2ZpbGV1cGxvYWRzZW5kJywKICAgICAgICAgICAgICAgICAgICAnZmlsZXVwbG9hZGRvbmUnLAogICAgICAgICAgICAgICAgICAgICdmaWxldXBsb2FkZmFpbCcsCiAgICAgICAgICAgICAgICAgICAgJ2ZpbGV1cGxvYWRhbHdheXMnLAogICAgICAgICAgICAgICAgICAgICdmaWxldXBsb2FkcHJvZ3Jlc3MnLAogICAgICAgICAgICAgICAgICAgICdmaWxldXBsb2FkcHJvZ3Jlc3NhbGwnLAogICAgICAgICAgICAgICAgICAgICdmaWxldXBsb2Fkc3RhcnQnLAogICAgICAgICAgICAgICAgICAgICdmaWxldXBsb2Fkc3RvcCcsCiAgICAgICAgICAgICAgICAgICAgJ2ZpbGV1cGxvYWRjaGFuZ2UnLAogICAgICAgICAgICAgICAgICAgICdmaWxldXBsb2FkcGFzdGUnLAogICAgICAgICAgICAgICAgICAgICdmaWxldXBsb2FkZHJvcCcsCiAgICAgICAgICAgICAgICAgICAgJ2ZpbGV1cGxvYWRkcmFnb3ZlcicsCiAgICAgICAgICAgICAgICAgICAgJ2ZpbGV1cGxvYWRjaHVua2JlZm9yZXNlbmQnLAogICAgICAgICAgICAgICAgICAgICdmaWxldXBsb2FkY2h1bmtzZW5kJywKICAgICAgICAgICAgICAgICAgICAnZmlsZXVwbG9hZGNodW5rZG9uZScsCiAgICAgICAgICAgICAgICAgICAgJ2ZpbGV1cGxvYWRjaHVua2ZhaWwnLAogICAgICAgICAgICAgICAgICAgICdmaWxldXBsb2FkY2h1bmthbHdheXMnLAogICAgICAgICAgICAgICAgICAgICdmaWxldXBsb2FkcHJvY2Vzc3N0YXJ0JywKICAgICAgICAgICAgICAgICAgICAnZmlsZXVwbG9hZHByb2Nlc3MnLAogICAgICAgICAgICAgICAgICAgICdmaWxldXBsb2FkcHJvY2Vzc2RvbmUnLAogICAgICAgICAgICAgICAgICAgICdmaWxldXBsb2FkcHJvY2Vzc2ZhaWwnLAogICAgICAgICAgICAgICAgICAgICdmaWxldXBsb2FkcHJvY2Vzc2Fsd2F5cycsCiAgICAgICAgICAgICAgICAgICAgJ2ZpbGV1cGxvYWRwcm9jZXNzc3RvcCcKICAgICAgICAgICAgICAgIF0uam9pbignICcpLCBmdW5jdGlvbiAoZSwgZGF0YSkgewogICAgICAgICAgICAgICAgICAgICRzY29wZS4kcGFyZW50LiRhcHBseUFzeW5jKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzY29wZS4kZW1pdChlLnR5cGUsIGRhdGEpLmRlZmF1bHRQcmV2ZW50ZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfSkub24oJ3JlbW92ZScsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAvLyBSZW1vdmUgdXBsb2FkIG1ldGhvZHMgZnJvbSB0aGUgc2NvcGUsCiAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiB0aGUgd2lkZ2V0IGlzIHJlbW92ZWQ6CiAgICAgICAgICAgICAgICAgICAgdmFyIG1ldGhvZDsKICAgICAgICAgICAgICAgICAgICBmb3IgKG1ldGhvZCBpbiB1cGxvYWRNZXRob2RzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1cGxvYWRNZXRob2RzLmhhc093blByb3BlcnR5KG1ldGhvZCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkc2NvcGVbbWV0aG9kXTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgLy8gT2JzZXJ2ZSBvcHRpb24gY2hhbmdlczoKICAgICAgICAgICAgICAgICRzY29wZS4kd2F0Y2goCiAgICAgICAgICAgICAgICAgICAgJGF0dHJzLmZpbGVVcGxvYWQsCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKG5ld09wdGlvbnMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5ld09wdGlvbnMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRlbGVtZW50LmZpbGV1cGxvYWQoJ29wdGlvbicsIG5ld09wdGlvbnMpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIF0pCgogICAgICAgIC8vIFByb3ZpZGUgRmlsZSBVcGxvYWQgcHJvZ3Jlc3MgZmVlZGJhY2s6CiAgICAgICAgLmNvbnRyb2xsZXIoJ0ZpbGVVcGxvYWRQcm9ncmVzc0NvbnRyb2xsZXInLCBbCiAgICAgICAgICAgICckc2NvcGUnLCAnJGF0dHJzJywgJyRwYXJzZScsCiAgICAgICAgICAgIGZ1bmN0aW9uICgkc2NvcGUsICRhdHRycywgJHBhcnNlKSB7CiAgICAgICAgICAgICAgICB2YXIgZm4gPSAkcGFyc2UoJGF0dHJzLmZpbGVVcGxvYWRQcm9ncmVzcyksCiAgICAgICAgICAgICAgICAgICAgdXBkYXRlID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcHJvZ3Jlc3MgPSBmbigkc2NvcGUpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByb2dyZXNzIHx8ICFwcm9ncmVzcy50b3RhbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICRzY29wZS5udW0gPSBNYXRoLmZsb29yKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3Jlc3MubG9hZGVkIC8gcHJvZ3Jlc3MudG90YWwgKiAxMDAKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgdXBkYXRlKCk7CiAgICAgICAgICAgICAgICAkc2NvcGUuJHdhdGNoKAogICAgICAgICAgICAgICAgICAgICRhdHRycy5maWxlVXBsb2FkUHJvZ3Jlc3MgKyAnLmxvYWRlZCcsCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKG5ld1ZhbHVlLCBvbGRWYWx1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV3VmFsdWUgIT09IG9sZFZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICBdKQoKICAgICAgICAvLyBEaXNwbGF5IEZpbGUgVXBsb2FkIHByZXZpZXdzOgogICAgICAgIC5jb250cm9sbGVyKCdGaWxlVXBsb2FkUHJldmlld0NvbnRyb2xsZXInLCBbCiAgICAgICAgICAgICckc2NvcGUnLCAnJGVsZW1lbnQnLCAnJGF0dHJzJywKICAgICAgICAgICAgZnVuY3Rpb24gKCRzY29wZSwgJGVsZW1lbnQsICRhdHRycykgewogICAgICAgICAgICAgICAgJHNjb3BlLiR3YXRjaCgKICAgICAgICAgICAgICAgICAgICAkYXR0cnMuZmlsZVVwbG9hZFByZXZpZXcgKyAnLnByZXZpZXcnLAogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChwcmV2aWV3KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRlbGVtZW50LmVtcHR5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcmV2aWV3KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZWxlbWVudC5hcHBlbmQocHJldmlldyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgXSkKCiAgICAgICAgLmRpcmVjdGl2ZSgnZmlsZVVwbG9hZCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6ICdGaWxlVXBsb2FkQ29udHJvbGxlcicsCiAgICAgICAgICAgICAgICBzY29wZTogdHJ1ZQogICAgICAgICAgICB9OwogICAgICAgIH0pCgogICAgICAgIC5kaXJlY3RpdmUoJ2ZpbGVVcGxvYWRQcm9ncmVzcycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIGNvbnRyb2xsZXI6ICdGaWxlVXBsb2FkUHJvZ3Jlc3NDb250cm9sbGVyJywKICAgICAgICAgICAgICAgIHNjb3BlOiB0cnVlCiAgICAgICAgICAgIH07CiAgICAgICAgfSkKCiAgICAgICAgLmRpcmVjdGl2ZSgnZmlsZVVwbG9hZFByZXZpZXcnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBjb250cm9sbGVyOiAnRmlsZVVwbG9hZFByZXZpZXdDb250cm9sbGVyJwogICAgICAgICAgICB9OwogICAgICAgIH0pCgogICAgICAgIC8vIEVuaGFuY2UgdGhlIEhUTUw1IGRvd25sb2FkIGF0dHJpYnV0ZSB0bwogICAgICAgIC8vIGFsbG93IGRyYWcmZHJvcCBvZiBmaWxlcyB0byB0aGUgZGVza3RvcDoKICAgICAgICAuZGlyZWN0aXZlKCdkb3dubG9hZCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChzY29wZSwgZWxtKSB7CiAgICAgICAgICAgICAgICBlbG0ub24oJ2RyYWdzdGFydCcsIGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5vcmlnaW5hbEV2ZW50LmRhdGFUcmFuc2Zlci5zZXREYXRhKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Rvd25sb2FkVVJMJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbG0ucHJvcCgnZG93bmxvYWQnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbG0ucHJvcCgnaHJlZicpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLmpvaW4oJzonKQogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGlnbm9yZSkge30KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9OwogICAgICAgIH0pOwoKfSkpOwo=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jquery.fileupload-audio.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogalF1ZXJ5IEZpbGUgVXBsb2FkIEF1ZGlvIFByZXZpZXcgUGx1Z2luCiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9ibHVlaW1wL2pRdWVyeS1GaWxlLVVwbG9hZAogKgogKiBDb3B5cmlnaHQgMjAxMywgU2ViYXN0aWFuIFRzY2hhbgogKiBodHRwczovL2JsdWVpbXAubmV0CiAqCiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZToKICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQKICovCgovKiBqc2hpbnQgbm9tZW46ZmFsc2UgKi8KLyogZ2xvYmFsIGRlZmluZSwgcmVxdWlyZSwgd2luZG93LCBkb2N1bWVudCAqLwoKOyhmdW5jdGlvbiAoZmFjdG9yeSkgewogICAgJ3VzZSBzdHJpY3QnOwogICAgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkgewogICAgICAgIC8vIFJlZ2lzdGVyIGFzIGFuIGFub255bW91cyBBTUQgbW9kdWxlOgogICAgICAgIGRlZmluZShbCiAgICAgICAgICAgICdqcXVlcnknLAogICAgICAgICAgICAnbG9hZC1pbWFnZScsCiAgICAgICAgICAgICcuL2pxdWVyeS5maWxldXBsb2FkLXByb2Nlc3MnCiAgICAgICAgXSwgZmFjdG9yeSk7CiAgICB9IGVsc2UgaWYgKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JykgewogICAgICAgIC8vIE5vZGUvQ29tbW9uSlM6CiAgICAgICAgZmFjdG9yeSgKICAgICAgICAgICAgcmVxdWlyZSgnanF1ZXJ5JyksCiAgICAgICAgICAgIHJlcXVpcmUoJ2JsdWVpbXAtbG9hZC1pbWFnZS9qcy9sb2FkLWltYWdlJyksCiAgICAgICAgICAgIHJlcXVpcmUoJy4vanF1ZXJ5LmZpbGV1cGxvYWQtcHJvY2VzcycpCiAgICAgICAgKTsKICAgIH0gZWxzZSB7CiAgICAgICAgLy8gQnJvd3NlciBnbG9iYWxzOgogICAgICAgIGZhY3RvcnkoCiAgICAgICAgICAgIHdpbmRvdy5qUXVlcnksCiAgICAgICAgICAgIHdpbmRvdy5sb2FkSW1hZ2UKICAgICAgICApOwogICAgfQp9KGZ1bmN0aW9uICgkLCBsb2FkSW1hZ2UpIHsKICAgICd1c2Ugc3RyaWN0JzsKCiAgICAvLyBQcmVwZW5kIHRvIHRoZSBkZWZhdWx0IHByb2Nlc3NRdWV1ZToKICAgICQuYmx1ZWltcC5maWxldXBsb2FkLnByb3RvdHlwZS5vcHRpb25zLnByb2Nlc3NRdWV1ZS51bnNoaWZ0KAogICAgICAgIHsKICAgICAgICAgICAgYWN0aW9uOiAnbG9hZEF1ZGlvJywKICAgICAgICAgICAgLy8gVXNlIHRoZSBhY3Rpb24gYXMgcHJlZml4IGZvciB0aGUgIkAiIG9wdGlvbnM6CiAgICAgICAgICAgIHByZWZpeDogdHJ1ZSwKICAgICAgICAgICAgZmlsZVR5cGVzOiAnQCcsCiAgICAgICAgICAgIG1heEZpbGVTaXplOiAnQCcsCiAgICAgICAgICAgIGRpc2FibGVkOiAnQGRpc2FibGVBdWRpb1ByZXZpZXcnCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIGFjdGlvbjogJ3NldEF1ZGlvJywKICAgICAgICAgICAgbmFtZTogJ0BhdWRpb1ByZXZpZXdOYW1lJywKICAgICAgICAgICAgZGlzYWJsZWQ6ICdAZGlzYWJsZUF1ZGlvUHJldmlldycKICAgICAgICB9CiAgICApOwoKICAgIC8vIFRoZSBGaWxlIFVwbG9hZCBBdWRpbyBQcmV2aWV3IHBsdWdpbiBleHRlbmRzIHRoZSBmaWxldXBsb2FkIHdpZGdldAogICAgLy8gd2l0aCBhdWRpbyBwcmV2aWV3IGZ1bmN0aW9uYWxpdHk6CiAgICAkLndpZGdldCgnYmx1ZWltcC5maWxldXBsb2FkJywgJC5ibHVlaW1wLmZpbGV1cGxvYWQsIHsKCiAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICAvLyBUaGUgcmVndWxhciBleHByZXNzaW9uIGZvciB0aGUgdHlwZXMgb2YgYXVkaW8gZmlsZXMgdG8gbG9hZCwKICAgICAgICAgICAgLy8gbWF0Y2hlZCBhZ2FpbnN0IHRoZSBmaWxlIHR5cGU6CiAgICAgICAgICAgIGxvYWRBdWRpb0ZpbGVUeXBlczogL15hdWRpb1wvLiokLwogICAgICAgIH0sCgogICAgICAgIF9hdWRpb0VsZW1lbnQ6IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2F1ZGlvJyksCgogICAgICAgIHByb2Nlc3NBY3Rpb25zOiB7CgogICAgICAgICAgICAvLyBMb2FkcyB0aGUgYXVkaW8gZmlsZSBnaXZlbiB2aWEgZGF0YS5maWxlcyBhbmQgZGF0YS5pbmRleAogICAgICAgICAgICAvLyBhcyBhdWRpbyBlbGVtZW50IGlmIHRoZSBicm93c2VyIHN1cHBvcnRzIHBsYXlpbmcgaXQuCiAgICAgICAgICAgIC8vIEFjY2VwdHMgdGhlIG9wdGlvbnMgZmlsZVR5cGVzIChyZWd1bGFyIGV4cHJlc3Npb24pCiAgICAgICAgICAgIC8vIGFuZCBtYXhGaWxlU2l6ZSAoaW50ZWdlcikgdG8gbGltaXQgdGhlIGZpbGVzIHRvIGxvYWQ6CiAgICAgICAgICAgIGxvYWRBdWRpbzogZnVuY3Rpb24gKGRhdGEsIG9wdGlvbnMpIHsKICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmRpc2FibGVkKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgZmlsZSA9IGRhdGEuZmlsZXNbZGF0YS5pbmRleF0sCiAgICAgICAgICAgICAgICAgICAgdXJsLAogICAgICAgICAgICAgICAgICAgIGF1ZGlvOwogICAgICAgICAgICAgICAgaWYgKHRoaXMuX2F1ZGlvRWxlbWVudC5jYW5QbGF5VHlwZSAmJgogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9hdWRpb0VsZW1lbnQuY2FuUGxheVR5cGUoZmlsZS50eXBlKSAmJgogICAgICAgICAgICAgICAgICAgICAgICAoJC50eXBlKG9wdGlvbnMubWF4RmlsZVNpemUpICE9PSAnbnVtYmVyJyB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5zaXplIDw9IG9wdGlvbnMubWF4RmlsZVNpemUpICYmCiAgICAgICAgICAgICAgICAgICAgICAgICghb3B0aW9ucy5maWxlVHlwZXMgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuZmlsZVR5cGVzLnRlc3QoZmlsZS50eXBlKSkpIHsKICAgICAgICAgICAgICAgICAgICB1cmwgPSBsb2FkSW1hZ2UuY3JlYXRlT2JqZWN0VVJMKGZpbGUpOwogICAgICAgICAgICAgICAgICAgIGlmICh1cmwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8gPSB0aGlzLl9hdWRpb0VsZW1lbnQuY2xvbmVOb2RlKGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8uc3JjID0gdXJsOwogICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5jb250cm9scyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuYXVkaW8gPSBhdWRpbzsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGRhdGE7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAvLyBTZXRzIHRoZSBhdWRpbyBlbGVtZW50IGFzIGEgcHJvcGVydHkgb2YgdGhlIGZpbGUgb2JqZWN0OgogICAgICAgICAgICBzZXRBdWRpbzogZnVuY3Rpb24gKGRhdGEsIG9wdGlvbnMpIHsKICAgICAgICAgICAgICAgIGlmIChkYXRhLmF1ZGlvICYmICFvcHRpb25zLmRpc2FibGVkKSB7CiAgICAgICAgICAgICAgICAgICAgZGF0YS5maWxlc1tkYXRhLmluZGV4XVtvcHRpb25zLm5hbWUgfHwgJ3ByZXZpZXcnXSA9IGRhdGEuYXVkaW87CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YTsKICAgICAgICAgICAgfQoKICAgICAgICB9CgogICAgfSk7Cgp9KSk7Cg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jquery.fileupload-image.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogalF1ZXJ5IEZpbGUgVXBsb2FkIEltYWdlIFByZXZpZXcgJiBSZXNpemUgUGx1Z2luCiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9ibHVlaW1wL2pRdWVyeS1GaWxlLVVwbG9hZAogKgogKiBDb3B5cmlnaHQgMjAxMywgU2ViYXN0aWFuIFRzY2hhbgogKiBodHRwczovL2JsdWVpbXAubmV0CiAqCiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZToKICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQKICovCgovKiBqc2hpbnQgbm9tZW46ZmFsc2UgKi8KLyogZ2xvYmFsIGRlZmluZSwgcmVxdWlyZSwgd2luZG93LCBCbG9iICovCgo7KGZ1bmN0aW9uIChmYWN0b3J5KSB7CiAgICAndXNlIHN0cmljdCc7CiAgICBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7CiAgICAgICAgLy8gUmVnaXN0ZXIgYXMgYW4gYW5vbnltb3VzIEFNRCBtb2R1bGU6CiAgICAgICAgZGVmaW5lKFsKICAgICAgICAgICAgJ2pxdWVyeScsCiAgICAgICAgICAgICdsb2FkLWltYWdlJywKICAgICAgICAgICAgJ2xvYWQtaW1hZ2UtbWV0YScsCiAgICAgICAgICAgICdsb2FkLWltYWdlLXNjYWxlJywKICAgICAgICAgICAgJ2xvYWQtaW1hZ2UtZXhpZicsCiAgICAgICAgICAgICdjYW52YXMtdG8tYmxvYicsCiAgICAgICAgICAgICcuL2pxdWVyeS5maWxldXBsb2FkLXByb2Nlc3MnCiAgICAgICAgXSwgZmFjdG9yeSk7CiAgICB9IGVsc2UgaWYgKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JykgewogICAgICAgIC8vIE5vZGUvQ29tbW9uSlM6CiAgICAgICAgZmFjdG9yeSgKICAgICAgICAgICAgcmVxdWlyZSgnanF1ZXJ5JyksCiAgICAgICAgICAgIHJlcXVpcmUoJ2JsdWVpbXAtbG9hZC1pbWFnZS9qcy9sb2FkLWltYWdlJyksCiAgICAgICAgICAgIHJlcXVpcmUoJ2JsdWVpbXAtbG9hZC1pbWFnZS9qcy9sb2FkLWltYWdlLW1ldGEnKSwKICAgICAgICAgICAgcmVxdWlyZSgnYmx1ZWltcC1sb2FkLWltYWdlL2pzL2xvYWQtaW1hZ2Utc2NhbGUnKSwKICAgICAgICAgICAgcmVxdWlyZSgnYmx1ZWltcC1sb2FkLWltYWdlL2pzL2xvYWQtaW1hZ2UtZXhpZicpLAogICAgICAgICAgICByZXF1aXJlKCdibHVlaW1wLWNhbnZhcy10by1ibG9iJyksCiAgICAgICAgICAgIHJlcXVpcmUoJy4vanF1ZXJ5LmZpbGV1cGxvYWQtcHJvY2VzcycpCiAgICAgICAgKTsKICAgIH0gZWxzZSB7CiAgICAgICAgLy8gQnJvd3NlciBnbG9iYWxzOgogICAgICAgIGZhY3RvcnkoCiAgICAgICAgICAgIHdpbmRvdy5qUXVlcnksCiAgICAgICAgICAgIHdpbmRvdy5sb2FkSW1hZ2UKICAgICAgICApOwogICAgfQp9KGZ1bmN0aW9uICgkLCBsb2FkSW1hZ2UpIHsKICAgICd1c2Ugc3RyaWN0JzsKCiAgICAvLyBQcmVwZW5kIHRvIHRoZSBkZWZhdWx0IHByb2Nlc3NRdWV1ZToKICAgICQuYmx1ZWltcC5maWxldXBsb2FkLnByb3RvdHlwZS5vcHRpb25zLnByb2Nlc3NRdWV1ZS51bnNoaWZ0KAogICAgICAgIHsKICAgICAgICAgICAgYWN0aW9uOiAnbG9hZEltYWdlTWV0YURhdGEnLAogICAgICAgICAgICBkaXNhYmxlSW1hZ2VIZWFkOiAnQCcsCiAgICAgICAgICAgIGRpc2FibGVFeGlmOiAnQCcsCiAgICAgICAgICAgIGRpc2FibGVFeGlmVGh1bWJuYWlsOiAnQCcsCiAgICAgICAgICAgIGRpc2FibGVFeGlmU3ViOiAnQCcsCiAgICAgICAgICAgIGRpc2FibGVFeGlmR3BzOiAnQCcsCiAgICAgICAgICAgIGRpc2FibGVkOiAnQGRpc2FibGVJbWFnZU1ldGFEYXRhTG9hZCcKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgYWN0aW9uOiAnbG9hZEltYWdlJywKICAgICAgICAgICAgLy8gVXNlIHRoZSBhY3Rpb24gYXMgcHJlZml4IGZvciB0aGUgIkAiIG9wdGlvbnM6CiAgICAgICAgICAgIHByZWZpeDogdHJ1ZSwKICAgICAgICAgICAgZmlsZVR5cGVzOiAnQCcsCiAgICAgICAgICAgIG1heEZpbGVTaXplOiAnQCcsCiAgICAgICAgICAgIG5vUmV2b2tlOiAnQCcsCiAgICAgICAgICAgIGRpc2FibGVkOiAnQGRpc2FibGVJbWFnZUxvYWQnCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIGFjdGlvbjogJ3Jlc2l6ZUltYWdlJywKICAgICAgICAgICAgLy8gVXNlICJpbWFnZSIgYXMgcHJlZml4IGZvciB0aGUgIkAiIG9wdGlvbnM6CiAgICAgICAgICAgIHByZWZpeDogJ2ltYWdlJywKICAgICAgICAgICAgbWF4V2lkdGg6ICdAJywKICAgICAgICAgICAgbWF4SGVpZ2h0OiAnQCcsCiAgICAgICAgICAgIG1pbldpZHRoOiAnQCcsCiAgICAgICAgICAgIG1pbkhlaWdodDogJ0AnLAogICAgICAgICAgICBjcm9wOiAnQCcsCiAgICAgICAgICAgIG9yaWVudGF0aW9uOiAnQCcsCiAgICAgICAgICAgIGZvcmNlUmVzaXplOiAnQCcsCiAgICAgICAgICAgIGRpc2FibGVkOiAnQGRpc2FibGVJbWFnZVJlc2l6ZScKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgYWN0aW9uOiAnc2F2ZUltYWdlJywKICAgICAgICAgICAgcXVhbGl0eTogJ0BpbWFnZVF1YWxpdHknLAogICAgICAgICAgICB0eXBlOiAnQGltYWdlVHlwZScsCiAgICAgICAgICAgIGRpc2FibGVkOiAnQGRpc2FibGVJbWFnZVJlc2l6ZScKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgYWN0aW9uOiAnc2F2ZUltYWdlTWV0YURhdGEnLAogICAgICAgICAgICBkaXNhYmxlZDogJ0BkaXNhYmxlSW1hZ2VNZXRhRGF0YVNhdmUnCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIGFjdGlvbjogJ3Jlc2l6ZUltYWdlJywKICAgICAgICAgICAgLy8gVXNlICJwcmV2aWV3IiBhcyBwcmVmaXggZm9yIHRoZSAiQCIgb3B0aW9uczoKICAgICAgICAgICAgcHJlZml4OiAncHJldmlldycsCiAgICAgICAgICAgIG1heFdpZHRoOiAnQCcsCiAgICAgICAgICAgIG1heEhlaWdodDogJ0AnLAogICAgICAgICAgICBtaW5XaWR0aDogJ0AnLAogICAgICAgICAgICBtaW5IZWlnaHQ6ICdAJywKICAgICAgICAgICAgY3JvcDogJ0AnLAogICAgICAgICAgICBvcmllbnRhdGlvbjogJ0AnLAogICAgICAgICAgICB0aHVtYm5haWw6ICdAJywKICAgICAgICAgICAgY2FudmFzOiAnQCcsCiAgICAgICAgICAgIGRpc2FibGVkOiAnQGRpc2FibGVJbWFnZVByZXZpZXcnCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIGFjdGlvbjogJ3NldEltYWdlJywKICAgICAgICAgICAgbmFtZTogJ0BpbWFnZVByZXZpZXdOYW1lJywKICAgICAgICAgICAgZGlzYWJsZWQ6ICdAZGlzYWJsZUltYWdlUHJldmlldycKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgYWN0aW9uOiAnZGVsZXRlSW1hZ2VSZWZlcmVuY2VzJywKICAgICAgICAgICAgZGlzYWJsZWQ6ICdAZGlzYWJsZUltYWdlUmVmZXJlbmNlc0RlbGV0aW9uJwogICAgICAgIH0KICAgICk7CgogICAgLy8gVGhlIEZpbGUgVXBsb2FkIFJlc2l6ZSBwbHVnaW4gZXh0ZW5kcyB0aGUgZmlsZXVwbG9hZCB3aWRnZXQKICAgIC8vIHdpdGggaW1hZ2UgcmVzaXplIGZ1bmN0aW9uYWxpdHk6CiAgICAkLndpZGdldCgnYmx1ZWltcC5maWxldXBsb2FkJywgJC5ibHVlaW1wLmZpbGV1cGxvYWQsIHsKCiAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICAvLyBUaGUgcmVndWxhciBleHByZXNzaW9uIGZvciB0aGUgdHlwZXMgb2YgaW1hZ2VzIHRvIGxvYWQ6CiAgICAgICAgICAgIC8vIG1hdGNoZWQgYWdhaW5zdCB0aGUgZmlsZSB0eXBlOgogICAgICAgICAgICBsb2FkSW1hZ2VGaWxlVHlwZXM6IC9eaW1hZ2VcLyhnaWZ8anBlZ3xwbmd8c3ZnXCt4bWwpJC8sCiAgICAgICAgICAgIC8vIFRoZSBtYXhpbXVtIGZpbGUgc2l6ZSBvZiBpbWFnZXMgdG8gbG9hZDoKICAgICAgICAgICAgbG9hZEltYWdlTWF4RmlsZVNpemU6IDEwMDAwMDAwLCAvLyAxME1CCiAgICAgICAgICAgIC8vIFRoZSBtYXhpbXVtIHdpZHRoIG9mIHJlc2l6ZWQgaW1hZ2VzOgogICAgICAgICAgICBpbWFnZU1heFdpZHRoOiAxOTIwLAogICAgICAgICAgICAvLyBUaGUgbWF4aW11bSBoZWlnaHQgb2YgcmVzaXplZCBpbWFnZXM6CiAgICAgICAgICAgIGltYWdlTWF4SGVpZ2h0OiAxMDgwLAogICAgICAgICAgICAvLyBEZWZpbmVzIHRoZSBpbWFnZSBvcmllbnRhdGlvbiAoMS04KSBvciB0YWtlcyB0aGUgb3JpZW50YXRpb24KICAgICAgICAgICAgLy8gdmFsdWUgZnJvbSBFeGlmIGRhdGEgaWYgc2V0IHRvIHRydWU6CiAgICAgICAgICAgIGltYWdlT3JpZW50YXRpb246IGZhbHNlLAogICAgICAgICAgICAvLyBEZWZpbmUgaWYgcmVzaXplZCBpbWFnZXMgc2hvdWxkIGJlIGNyb3BwZWQgb3Igb25seSBzY2FsZWQ6CiAgICAgICAgICAgIGltYWdlQ3JvcDogZmFsc2UsCiAgICAgICAgICAgIC8vIERpc2FibGUgdGhlIHJlc2l6ZSBpbWFnZSBmdW5jdGlvbmFsaXR5IGJ5IGRlZmF1bHQ6CiAgICAgICAgICAgIGRpc2FibGVJbWFnZVJlc2l6ZTogdHJ1ZSwKICAgICAgICAgICAgLy8gVGhlIG1heGltdW0gd2lkdGggb2YgdGhlIHByZXZpZXcgaW1hZ2VzOgogICAgICAgICAgICBwcmV2aWV3TWF4V2lkdGg6IDgwLAogICAgICAgICAgICAvLyBUaGUgbWF4aW11bSBoZWlnaHQgb2YgdGhlIHByZXZpZXcgaW1hZ2VzOgogICAgICAgICAgICBwcmV2aWV3TWF4SGVpZ2h0OiA4MCwKICAgICAgICAgICAgLy8gRGVmaW5lcyB0aGUgcHJldmlldyBvcmllbnRhdGlvbiAoMS04KSBvciB0YWtlcyB0aGUgb3JpZW50YXRpb24KICAgICAgICAgICAgLy8gdmFsdWUgZnJvbSBFeGlmIGRhdGEgaWYgc2V0IHRvIHRydWU6CiAgICAgICAgICAgIHByZXZpZXdPcmllbnRhdGlvbjogdHJ1ZSwKICAgICAgICAgICAgLy8gQ3JlYXRlIHRoZSBwcmV2aWV3IHVzaW5nIHRoZSBFeGlmIGRhdGEgdGh1bWJuYWlsOgogICAgICAgICAgICBwcmV2aWV3VGh1bWJuYWlsOiB0cnVlLAogICAgICAgICAgICAvLyBEZWZpbmUgaWYgcHJldmlldyBpbWFnZXMgc2hvdWxkIGJlIGNyb3BwZWQgb3Igb25seSBzY2FsZWQ6CiAgICAgICAgICAgIHByZXZpZXdDcm9wOiBmYWxzZSwKICAgICAgICAgICAgLy8gRGVmaW5lIGlmIHByZXZpZXcgaW1hZ2VzIHNob3VsZCBiZSByZXNpemVkIGFzIGNhbnZhcyBlbGVtZW50czoKICAgICAgICAgICAgcHJldmlld0NhbnZhczogdHJ1ZQogICAgICAgIH0sCgogICAgICAgIHByb2Nlc3NBY3Rpb25zOiB7CgogICAgICAgICAgICAvLyBMb2FkcyB0aGUgaW1hZ2UgZ2l2ZW4gdmlhIGRhdGEuZmlsZXMgYW5kIGRhdGEuaW5kZXgKICAgICAgICAgICAgLy8gYXMgaW1nIGVsZW1lbnQsIGlmIHRoZSBicm93c2VyIHN1cHBvcnRzIHRoZSBGaWxlIEFQSS4KICAgICAgICAgICAgLy8gQWNjZXB0cyB0aGUgb3B0aW9ucyBmaWxlVHlwZXMgKHJlZ3VsYXIgZXhwcmVzc2lvbikKICAgICAgICAgICAgLy8gYW5kIG1heEZpbGVTaXplIChpbnRlZ2VyKSB0byBsaW1pdCB0aGUgZmlsZXMgdG8gbG9hZDoKICAgICAgICAgICAgbG9hZEltYWdlOiBmdW5jdGlvbiAoZGF0YSwgb3B0aW9ucykgewogICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuZGlzYWJsZWQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHZhciB0aGF0ID0gdGhpcywKICAgICAgICAgICAgICAgICAgICBmaWxlID0gZGF0YS5maWxlc1tkYXRhLmluZGV4XSwKICAgICAgICAgICAgICAgICAgICBkZmQgPSAkLkRlZmVycmVkKCk7CiAgICAgICAgICAgICAgICBpZiAoKCQudHlwZShvcHRpb25zLm1heEZpbGVTaXplKSA9PT0gJ251bWJlcicgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUuc2l6ZSA+IG9wdGlvbnMubWF4RmlsZVNpemUpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgIChvcHRpb25zLmZpbGVUeXBlcyAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIW9wdGlvbnMuZmlsZVR5cGVzLnRlc3QoZmlsZS50eXBlKSkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgIWxvYWRJbWFnZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoaW1nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGltZy5zcmMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5pbWcgPSBpbWc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRmZC5yZXNvbHZlV2l0aCh0aGF0LCBbZGF0YV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMKICAgICAgICAgICAgICAgICAgICAgICAgKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGRmZC5wcm9taXNlKCk7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAvLyBSZXNpemVzIHRoZSBpbWFnZSBnaXZlbiBhcyBkYXRhLmNhbnZhcyBvciBkYXRhLmltZwogICAgICAgICAgICAvLyBhbmQgdXBkYXRlcyBkYXRhLmNhbnZhcyBvciBkYXRhLmltZyB3aXRoIHRoZSByZXNpemVkIGltYWdlLgogICAgICAgICAgICAvLyBBbHNvIHN0b3JlcyB0aGUgcmVzaXplZCBpbWFnZSBhcyBwcmV2aWV3IHByb3BlcnR5LgogICAgICAgICAgICAvLyBBY2NlcHRzIHRoZSBvcHRpb25zIG1heFdpZHRoLCBtYXhIZWlnaHQsIG1pbldpZHRoLAogICAgICAgICAgICAvLyBtaW5IZWlnaHQsIGNhbnZhcyBhbmQgY3JvcDoKICAgICAgICAgICAgcmVzaXplSW1hZ2U6IGZ1bmN0aW9uIChkYXRhLCBvcHRpb25zKSB7CiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5kaXNhYmxlZCB8fCAhKGRhdGEuY2FudmFzIHx8IGRhdGEuaW1nKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgb3B0aW9ucyA9ICQuZXh0ZW5kKHtjYW52YXM6IHRydWV9LCBvcHRpb25zKTsKICAgICAgICAgICAgICAgIHZhciB0aGF0ID0gdGhpcywKICAgICAgICAgICAgICAgICAgICBkZmQgPSAkLkRlZmVycmVkKCksCiAgICAgICAgICAgICAgICAgICAgaW1nID0gKG9wdGlvbnMuY2FudmFzICYmIGRhdGEuY2FudmFzKSB8fCBkYXRhLmltZywKICAgICAgICAgICAgICAgICAgICByZXNvbHZlID0gZnVuY3Rpb24gKG5ld0ltZykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV3SW1nICYmIChuZXdJbWcud2lkdGggIT09IGltZy53aWR0aCB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0ltZy5oZWlnaHQgIT09IGltZy5oZWlnaHQgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmZvcmNlUmVzaXplKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVtuZXdJbWcuZ2V0Q29udGV4dCA/ICdjYW52YXMnIDogJ2ltZyddID0gbmV3SW1nOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEucHJldmlldyA9IG5ld0ltZzsKICAgICAgICAgICAgICAgICAgICAgICAgZGZkLnJlc29sdmVXaXRoKHRoYXQsIFtkYXRhXSk7CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB0aHVtYm5haWw7CiAgICAgICAgICAgICAgICBpZiAoZGF0YS5leGlmKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMub3JpZW50YXRpb24gPT09IHRydWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5vcmllbnRhdGlvbiA9IGRhdGEuZXhpZi5nZXQoJ09yaWVudGF0aW9uJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnRodW1ibmFpbCkgewogICAgICAgICAgICAgICAgICAgICAgICB0aHVtYm5haWwgPSBkYXRhLmV4aWYuZ2V0KCdUaHVtYm5haWwnKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRodW1ibmFpbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZEltYWdlKHRodW1ibmFpbCwgcmVzb2x2ZSwgb3B0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGZkLnByb21pc2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAvLyBQcmV2ZW50IG9yaWVudGluZyB0aGUgc2FtZSBpbWFnZSB0d2ljZToKICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5vcmllbnRhdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgb3B0aW9ucy5vcmllbnRhdGlvbjsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLm9yaWVudGF0aW9uID0gb3B0aW9ucy5vcmllbnRhdGlvbjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoaW1nKSB7CiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShsb2FkSW1hZ2Uuc2NhbGUoaW1nLCBvcHRpb25zKSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRmZC5wcm9taXNlKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIC8vIFNhdmVzIHRoZSBwcm9jZXNzZWQgaW1hZ2UgZ2l2ZW4gYXMgZGF0YS5jYW52YXMKICAgICAgICAgICAgLy8gaW5wbGFjZSBhdCBkYXRhLmluZGV4IG9mIGRhdGEuZmlsZXM6CiAgICAgICAgICAgIHNhdmVJbWFnZTogZnVuY3Rpb24gKGRhdGEsIG9wdGlvbnMpIHsKICAgICAgICAgICAgICAgIGlmICghZGF0YS5jYW52YXMgfHwgb3B0aW9ucy5kaXNhYmxlZCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzLAogICAgICAgICAgICAgICAgICAgIGZpbGUgPSBkYXRhLmZpbGVzW2RhdGEuaW5kZXhdLAogICAgICAgICAgICAgICAgICAgIGRmZCA9ICQuRGVmZXJyZWQoKTsKICAgICAgICAgICAgICAgIGlmIChkYXRhLmNhbnZhcy50b0Jsb2IpIHsKICAgICAgICAgICAgICAgICAgICBkYXRhLmNhbnZhcy50b0Jsb2IoCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChibG9iKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWJsb2IubmFtZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWxlLnR5cGUgPT09IGJsb2IudHlwZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9iLm5hbWUgPSBmaWxlLm5hbWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmaWxlLm5hbWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvYi5uYW1lID0gZmlsZS5uYW1lLnJlcGxhY2UoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvXC5cdyskLywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcuJyArIGJsb2IudHlwZS5zdWJzdHIoNikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEb24ndCByZXN0b3JlIGludmFsaWQgbWV0YSBkYXRhOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbGUudHlwZSAhPT0gYmxvYi50eXBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGRhdGEuaW1hZ2VIZWFkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3RvcmUgdGhlIGNyZWF0ZWQgYmxvYiBhdCB0aGUgcG9zaXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9mIHRoZSBvcmlnaW5hbCBmaWxlIGluIHRoZSBmaWxlcyBsaXN0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5maWxlc1tkYXRhLmluZGV4XSA9IGJsb2I7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZmQucmVzb2x2ZVdpdGgodGhhdCwgW2RhdGFdKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy50eXBlIHx8IGZpbGUudHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5xdWFsaXR5CiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gZGZkLnByb21pc2UoKTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGxvYWRJbWFnZU1ldGFEYXRhOiBmdW5jdGlvbiAoZGF0YSwgb3B0aW9ucykgewogICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuZGlzYWJsZWQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHZhciB0aGF0ID0gdGhpcywKICAgICAgICAgICAgICAgICAgICBkZmQgPSAkLkRlZmVycmVkKCk7CiAgICAgICAgICAgICAgICBsb2FkSW1hZ2UucGFyc2VNZXRhRGF0YShkYXRhLmZpbGVzW2RhdGEuaW5kZXhdLCBmdW5jdGlvbiAocmVzdWx0KSB7CiAgICAgICAgICAgICAgICAgICAgJC5leHRlbmQoZGF0YSwgcmVzdWx0KTsKICAgICAgICAgICAgICAgICAgICBkZmQucmVzb2x2ZVdpdGgodGhhdCwgW2RhdGFdKTsKICAgICAgICAgICAgICAgIH0sIG9wdGlvbnMpOwogICAgICAgICAgICAgICAgcmV0dXJuIGRmZC5wcm9taXNlKCk7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBzYXZlSW1hZ2VNZXRhRGF0YTogZnVuY3Rpb24gKGRhdGEsIG9wdGlvbnMpIHsKICAgICAgICAgICAgICAgIGlmICghKGRhdGEuaW1hZ2VIZWFkICYmIGRhdGEuY2FudmFzICYmCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuY2FudmFzLnRvQmxvYiAmJiAhb3B0aW9ucy5kaXNhYmxlZCkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHZhciBmaWxlID0gZGF0YS5maWxlc1tkYXRhLmluZGV4XSwKICAgICAgICAgICAgICAgICAgICBibG9iID0gbmV3IEJsb2IoWwogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmltYWdlSGVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzaXplZCBpbWFnZXMgYWx3YXlzIGhhdmUgYSBoZWFkIHNpemUgb2YgMjAgYnl0ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluY2x1ZGluZyB0aGUgSlBFRyBtYXJrZXIgYW5kIGEgbWluaW1hbCBKRklGIGhlYWRlcjoKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fYmxvYlNsaWNlLmNhbGwoZmlsZSwgMjApCiAgICAgICAgICAgICAgICAgICAgXSwge3R5cGU6IGZpbGUudHlwZX0pOwogICAgICAgICAgICAgICAgYmxvYi5uYW1lID0gZmlsZS5uYW1lOwogICAgICAgICAgICAgICAgZGF0YS5maWxlc1tkYXRhLmluZGV4XSA9IGJsb2I7CiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIC8vIFNldHMgdGhlIHJlc2l6ZWQgdmVyc2lvbiBvZiB0aGUgaW1hZ2UgYXMgYSBwcm9wZXJ0eSBvZiB0aGUKICAgICAgICAgICAgLy8gZmlsZSBvYmplY3QsIG11c3QgYmUgY2FsbGVkIGFmdGVyICJzYXZlSW1hZ2UiOgogICAgICAgICAgICBzZXRJbWFnZTogZnVuY3Rpb24gKGRhdGEsIG9wdGlvbnMpIHsKICAgICAgICAgICAgICAgIGlmIChkYXRhLnByZXZpZXcgJiYgIW9wdGlvbnMuZGlzYWJsZWQpIHsKICAgICAgICAgICAgICAgICAgICBkYXRhLmZpbGVzW2RhdGEuaW5kZXhdW29wdGlvbnMubmFtZSB8fCAncHJldmlldyddID0gZGF0YS5wcmV2aWV3OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGRhdGE7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBkZWxldGVJbWFnZVJlZmVyZW5jZXM6IGZ1bmN0aW9uIChkYXRhLCBvcHRpb25zKSB7CiAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbnMuZGlzYWJsZWQpIHsKICAgICAgICAgICAgICAgICAgICBkZWxldGUgZGF0YS5pbWc7CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGRhdGEuY2FudmFzOwogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBkYXRhLnByZXZpZXc7CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGRhdGEuaW1hZ2VIZWFkOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGRhdGE7CiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgIH0pOwoKfSkpOwo=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jquery.fileupload-jquery-ui.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogalF1ZXJ5IEZpbGUgVXBsb2FkIGpRdWVyeSBVSSBQbHVnaW4KICogaHR0cHM6Ly9naXRodWIuY29tL2JsdWVpbXAvalF1ZXJ5LUZpbGUtVXBsb2FkCiAqCiAqIENvcHlyaWdodCAyMDEzLCBTZWJhc3RpYW4gVHNjaGFuCiAqIGh0dHBzOi8vYmx1ZWltcC5uZXQKICoKICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlOgogKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVAogKi8KCi8qIGpzaGludCBub21lbjpmYWxzZSAqLwovKiBnbG9iYWwgZGVmaW5lLCByZXF1aXJlLCB3aW5kb3cgKi8KCjsoZnVuY3Rpb24gKGZhY3RvcnkpIHsKICAgICd1c2Ugc3RyaWN0JzsKICAgIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHsKICAgICAgICAvLyBSZWdpc3RlciBhcyBhbiBhbm9ueW1vdXMgQU1EIG1vZHVsZToKICAgICAgICBkZWZpbmUoWwogICAgICAgICAgICAnanF1ZXJ5JywKICAgICAgICAgICAgJy4vanF1ZXJ5LmZpbGV1cGxvYWQtdWknCiAgICAgICAgXSwgZmFjdG9yeSk7CiAgICB9IGVsc2UgaWYgKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JykgewogICAgICAgIC8vIE5vZGUvQ29tbW9uSlM6CiAgICAgICAgZmFjdG9yeSgKICAgICAgICAgICAgcmVxdWlyZSgnanF1ZXJ5JyksCiAgICAgICAgICAgIHJlcXVpcmUoJy4vanF1ZXJ5LmZpbGV1cGxvYWQtdWknKQogICAgICAgICk7CiAgICB9IGVsc2UgewogICAgICAgIC8vIEJyb3dzZXIgZ2xvYmFsczoKICAgICAgICBmYWN0b3J5KHdpbmRvdy5qUXVlcnkpOwogICAgfQp9KGZ1bmN0aW9uICgkKSB7CiAgICAndXNlIHN0cmljdCc7CgogICAgJC53aWRnZXQoJ2JsdWVpbXAuZmlsZXVwbG9hZCcsICQuYmx1ZWltcC5maWxldXBsb2FkLCB7CgogICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgICAgcHJvY2Vzc2RvbmU6IGZ1bmN0aW9uIChlLCBkYXRhKSB7CiAgICAgICAgICAgICAgICBkYXRhLmNvbnRleHQuZmluZCgnLnN0YXJ0JykuYnV0dG9uKCdlbmFibGUnKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgcHJvZ3Jlc3M6IGZ1bmN0aW9uIChlLCBkYXRhKSB7CiAgICAgICAgICAgICAgICBpZiAoZGF0YS5jb250ZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgZGF0YS5jb250ZXh0LmZpbmQoJy5wcm9ncmVzcycpLnByb2dyZXNzYmFyKAogICAgICAgICAgICAgICAgICAgICAgICAnb3B0aW9uJywKICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlJywKICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VJbnQoZGF0YS5sb2FkZWQgLyBkYXRhLnRvdGFsICogMTAwLCAxMCkKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBwcm9ncmVzc2FsbDogZnVuY3Rpb24gKGUsIGRhdGEpIHsKICAgICAgICAgICAgICAgIHZhciAkdGhpcyA9ICQodGhpcyk7CiAgICAgICAgICAgICAgICAkdGhpcy5maW5kKCcuZmlsZXVwbG9hZC1wcm9ncmVzcycpCiAgICAgICAgICAgICAgICAgICAgLmZpbmQoJy5wcm9ncmVzcycpLnByb2dyZXNzYmFyKAogICAgICAgICAgICAgICAgICAgICAgICAnb3B0aW9uJywKICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlJywKICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VJbnQoZGF0YS5sb2FkZWQgLyBkYXRhLnRvdGFsICogMTAwLCAxMCkKICAgICAgICAgICAgICAgICAgICApLmVuZCgpCiAgICAgICAgICAgICAgICAgICAgLmZpbmQoJy5wcm9ncmVzcy1leHRlbmRlZCcpLmVhY2goZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmh0bWwoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJHRoaXMuZGF0YSgnYmx1ZWltcC1maWxldXBsb2FkJykgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMuZGF0YSgnZmlsZXVwbG9hZCcpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5fcmVuZGVyRXh0ZW5kZWRQcm9ncmVzcyhkYXRhKQogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CiAgICAgICAgfSwKCiAgICAgICAgX3JlbmRlclVwbG9hZDogZnVuY3Rpb24gKGZ1bmMsIGZpbGVzKSB7CiAgICAgICAgICAgIHZhciBub2RlID0gdGhpcy5fc3VwZXIoZnVuYywgZmlsZXMpLAogICAgICAgICAgICAgICAgc2hvd0ljb25UZXh0ID0gJCh3aW5kb3cpLndpZHRoKCkgPiA0ODA7CiAgICAgICAgICAgIG5vZGUuZmluZCgnLnByb2dyZXNzJykuZW1wdHkoKS5wcm9ncmVzc2JhcigpOwogICAgICAgICAgICBub2RlLmZpbmQoJy5zdGFydCcpLmJ1dHRvbih7CiAgICAgICAgICAgICAgICBpY29uczoge3ByaW1hcnk6ICd1aS1pY29uLWNpcmNsZS1hcnJvdy1lJ30sCiAgICAgICAgICAgICAgICB0ZXh0OiBzaG93SWNvblRleHQKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIG5vZGUuZmluZCgnLmNhbmNlbCcpLmJ1dHRvbih7CiAgICAgICAgICAgICAgICBpY29uczoge3ByaW1hcnk6ICd1aS1pY29uLWNhbmNlbCd9LAogICAgICAgICAgICAgICAgdGV4dDogc2hvd0ljb25UZXh0CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBpZiAobm9kZS5oYXNDbGFzcygnZmFkZScpKSB7CiAgICAgICAgICAgICAgICBub2RlLmhpZGUoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gbm9kZTsKICAgICAgICB9LAoKICAgICAgICBfcmVuZGVyRG93bmxvYWQ6IGZ1bmN0aW9uIChmdW5jLCBmaWxlcykgewogICAgICAgICAgICB2YXIgbm9kZSA9IHRoaXMuX3N1cGVyKGZ1bmMsIGZpbGVzKSwKICAgICAgICAgICAgICAgIHNob3dJY29uVGV4dCA9ICQod2luZG93KS53aWR0aCgpID4gNDgwOwogICAgICAgICAgICBub2RlLmZpbmQoJy5kZWxldGUnKS5idXR0b24oewogICAgICAgICAgICAgICAgaWNvbnM6IHtwcmltYXJ5OiAndWktaWNvbi10cmFzaCd9LAogICAgICAgICAgICAgICAgdGV4dDogc2hvd0ljb25UZXh0CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBpZiAobm9kZS5oYXNDbGFzcygnZmFkZScpKSB7CiAgICAgICAgICAgICAgICBub2RlLmhpZGUoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gbm9kZTsKICAgICAgICB9LAoKICAgICAgICBfc3RhcnRIYW5kbGVyOiBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICAkKGUuY3VycmVudFRhcmdldCkuYnV0dG9uKCdkaXNhYmxlJyk7CiAgICAgICAgICAgIHRoaXMuX3N1cGVyKGUpOwogICAgICAgIH0sCgogICAgICAgIF90cmFuc2l0aW9uOiBmdW5jdGlvbiAobm9kZSkgewogICAgICAgICAgICB2YXIgZGVmZXJyZWQgPSAkLkRlZmVycmVkKCk7CiAgICAgICAgICAgIGlmIChub2RlLmhhc0NsYXNzKCdmYWRlJykpIHsKICAgICAgICAgICAgICAgIG5vZGUuZmFkZVRvZ2dsZSgKICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMudHJhbnNpdGlvbkR1cmF0aW9uLAogICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy50cmFuc2l0aW9uRWFzaW5nLAogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZVdpdGgobm9kZSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmVXaXRoKG5vZGUpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZDsKICAgICAgICB9LAoKICAgICAgICBfY3JlYXRlOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHRoaXMuX3N1cGVyKCk7CiAgICAgICAgICAgIHRoaXMuZWxlbWVudAogICAgICAgICAgICAgICAgLmZpbmQoJy5maWxldXBsb2FkLWJ1dHRvbmJhcicpCiAgICAgICAgICAgICAgICAuZmluZCgnLmZpbGVpbnB1dC1idXR0b24nKS5lYWNoKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaW5wdXQgPSAkKHRoaXMpLmZpbmQoJ2lucHV0OmZpbGUnKS5kZXRhY2goKTsKICAgICAgICAgICAgICAgICAgICAkKHRoaXMpCiAgICAgICAgICAgICAgICAgICAgICAgIC5idXR0b24oe2ljb25zOiB7cHJpbWFyeTogJ3VpLWljb24tcGx1c3RoaWNrJ319KQogICAgICAgICAgICAgICAgICAgICAgICAuYXBwZW5kKGlucHV0KTsKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAuZW5kKCkuZmluZCgnLnN0YXJ0JykKICAgICAgICAgICAgICAgIC5idXR0b24oe2ljb25zOiB7cHJpbWFyeTogJ3VpLWljb24tY2lyY2xlLWFycm93LWUnfX0pCiAgICAgICAgICAgICAgICAuZW5kKCkuZmluZCgnLmNhbmNlbCcpCiAgICAgICAgICAgICAgICAuYnV0dG9uKHtpY29uczoge3ByaW1hcnk6ICd1aS1pY29uLWNhbmNlbCd9fSkKICAgICAgICAgICAgICAgIC5lbmQoKS5maW5kKCcuZGVsZXRlJykKICAgICAgICAgICAgICAgIC5idXR0b24oe2ljb25zOiB7cHJpbWFyeTogJ3VpLWljb24tdHJhc2gnfX0pCiAgICAgICAgICAgICAgICAuZW5kKCkuZmluZCgnLnByb2dyZXNzJykucHJvZ3Jlc3NiYXIoKTsKICAgICAgICB9LAoKICAgICAgICBfZGVzdHJveTogZnVuY3Rpb24gKCkgewogICAgICAgICAgICB0aGlzLmVsZW1lbnQKICAgICAgICAgICAgICAgIC5maW5kKCcuZmlsZXVwbG9hZC1idXR0b25iYXInKQogICAgICAgICAgICAgICAgLmZpbmQoJy5maWxlaW5wdXQtYnV0dG9uJykuZWFjaChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGlucHV0ID0gJCh0aGlzKS5maW5kKCdpbnB1dDpmaWxlJykuZGV0YWNoKCk7CiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKQogICAgICAgICAgICAgICAgICAgICAgICAuYnV0dG9uKCdkZXN0cm95JykKICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZChpbnB1dCk7CiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgLmVuZCgpLmZpbmQoJy5zdGFydCcpCiAgICAgICAgICAgICAgICAuYnV0dG9uKCdkZXN0cm95JykKICAgICAgICAgICAgICAgIC5lbmQoKS5maW5kKCcuY2FuY2VsJykKICAgICAgICAgICAgICAgIC5idXR0b24oJ2Rlc3Ryb3knKQogICAgICAgICAgICAgICAgLmVuZCgpLmZpbmQoJy5kZWxldGUnKQogICAgICAgICAgICAgICAgLmJ1dHRvbignZGVzdHJveScpCiAgICAgICAgICAgICAgICAuZW5kKCkuZmluZCgnLnByb2dyZXNzJykucHJvZ3Jlc3NiYXIoJ2Rlc3Ryb3knKTsKICAgICAgICAgICAgdGhpcy5fc3VwZXIoKTsKICAgICAgICB9CgogICAgfSk7Cgp9KSk7Cg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jquery.fileupload-process.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogalF1ZXJ5IEZpbGUgVXBsb2FkIFByb2Nlc3NpbmcgUGx1Z2luCiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9ibHVlaW1wL2pRdWVyeS1GaWxlLVVwbG9hZAogKgogKiBDb3B5cmlnaHQgMjAxMiwgU2ViYXN0aWFuIFRzY2hhbgogKiBodHRwczovL2JsdWVpbXAubmV0CiAqCiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZToKICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQKICovCgovKiBqc2hpbnQgbm9tZW46ZmFsc2UgKi8KLyogZ2xvYmFsIGRlZmluZSwgcmVxdWlyZSwgd2luZG93ICovCgo7KGZ1bmN0aW9uIChmYWN0b3J5KSB7CiAgICAndXNlIHN0cmljdCc7CiAgICBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7CiAgICAgICAgLy8gUmVnaXN0ZXIgYXMgYW4gYW5vbnltb3VzIEFNRCBtb2R1bGU6CiAgICAgICAgZGVmaW5lKFsKICAgICAgICAgICAgJ2pxdWVyeScsCiAgICAgICAgICAgICcuL2pxdWVyeS5maWxldXBsb2FkJwogICAgICAgIF0sIGZhY3RvcnkpOwogICAgfSBlbHNlIGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpIHsKICAgICAgICAvLyBOb2RlL0NvbW1vbkpTOgogICAgICAgIGZhY3RvcnkoCiAgICAgICAgICAgIHJlcXVpcmUoJ2pxdWVyeScpLAogICAgICAgICAgICByZXF1aXJlKCcuL2pxdWVyeS5maWxldXBsb2FkJykKICAgICAgICApOwogICAgfSBlbHNlIHsKICAgICAgICAvLyBCcm93c2VyIGdsb2JhbHM6CiAgICAgICAgZmFjdG9yeSgKICAgICAgICAgICAgd2luZG93LmpRdWVyeQogICAgICAgICk7CiAgICB9Cn0oZnVuY3Rpb24gKCQpIHsKICAgICd1c2Ugc3RyaWN0JzsKCiAgICB2YXIgb3JpZ2luYWxBZGQgPSAkLmJsdWVpbXAuZmlsZXVwbG9hZC5wcm90b3R5cGUub3B0aW9ucy5hZGQ7CgogICAgLy8gVGhlIEZpbGUgVXBsb2FkIFByb2Nlc3NpbmcgcGx1Z2luIGV4dGVuZHMgdGhlIGZpbGV1cGxvYWQgd2lkZ2V0CiAgICAvLyB3aXRoIGZpbGUgcHJvY2Vzc2luZyBmdW5jdGlvbmFsaXR5OgogICAgJC53aWRnZXQoJ2JsdWVpbXAuZmlsZXVwbG9hZCcsICQuYmx1ZWltcC5maWxldXBsb2FkLCB7CgogICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgICAgLy8gVGhlIGxpc3Qgb2YgcHJvY2Vzc2luZyBhY3Rpb25zOgogICAgICAgICAgICBwcm9jZXNzUXVldWU6IFsKICAgICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAnbG9nJywKICAgICAgICAgICAgICAgICAgICB0eXBlOiAnZGVidWcnCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAqLwogICAgICAgICAgICBdLAogICAgICAgICAgICBhZGQ6IGZ1bmN0aW9uIChlLCBkYXRhKSB7CiAgICAgICAgICAgICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpOwogICAgICAgICAgICAgICAgZGF0YS5wcm9jZXNzKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMuZmlsZXVwbG9hZCgncHJvY2VzcycsIGRhdGEpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBvcmlnaW5hbEFkZC5jYWxsKHRoaXMsIGUsIGRhdGEpOwogICAgICAgICAgICB9CiAgICAgICAgfSwKCiAgICAgICAgcHJvY2Vzc0FjdGlvbnM6IHsKICAgICAgICAgICAgLyoKICAgICAgICAgICAgbG9nOiBmdW5jdGlvbiAoZGF0YSwgb3B0aW9ucykgewogICAgICAgICAgICAgICAgY29uc29sZVtvcHRpb25zLnR5cGVdKAogICAgICAgICAgICAgICAgICAgICdQcm9jZXNzaW5nICInICsgZGF0YS5maWxlc1tkYXRhLmluZGV4XS5uYW1lICsgJyInCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgICovCiAgICAgICAgfSwKCiAgICAgICAgX3Byb2Nlc3NGaWxlOiBmdW5jdGlvbiAoZGF0YSwgb3JpZ2luYWxEYXRhKSB7CiAgICAgICAgICAgIHZhciB0aGF0ID0gdGhpcywKICAgICAgICAgICAgICAgIGRmZCA9ICQuRGVmZXJyZWQoKS5yZXNvbHZlV2l0aCh0aGF0LCBbZGF0YV0pLAogICAgICAgICAgICAgICAgY2hhaW4gPSBkZmQucHJvbWlzZSgpOwogICAgICAgICAgICB0aGlzLl90cmlnZ2VyKCdwcm9jZXNzJywgbnVsbCwgZGF0YSk7CiAgICAgICAgICAgICQuZWFjaChkYXRhLnByb2Nlc3NRdWV1ZSwgZnVuY3Rpb24gKGksIHNldHRpbmdzKSB7CiAgICAgICAgICAgICAgICB2YXIgZnVuYyA9IGZ1bmN0aW9uIChkYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKG9yaWdpbmFsRGF0YS5lcnJvclRocm93bikgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5EZWZlcnJlZCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlamVjdFdpdGgodGhhdCwgW29yaWdpbmFsRGF0YV0pLnByb21pc2UoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoYXQucHJvY2Vzc0FjdGlvbnNbc2V0dGluZ3MuYWN0aW9uXS5jYWxsKAogICAgICAgICAgICAgICAgICAgICAgICB0aGF0LAogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncwogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgY2hhaW4gPSBjaGFpbi50aGVuKGZ1bmMsIHNldHRpbmdzLmFsd2F5cyAmJiBmdW5jKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGNoYWluCiAgICAgICAgICAgICAgICAuZG9uZShmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgdGhhdC5fdHJpZ2dlcigncHJvY2Vzc2RvbmUnLCBudWxsLCBkYXRhKTsKICAgICAgICAgICAgICAgICAgICB0aGF0Ll90cmlnZ2VyKCdwcm9jZXNzYWx3YXlzJywgbnVsbCwgZGF0YSk7CiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgLmZhaWwoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIHRoYXQuX3RyaWdnZXIoJ3Byb2Nlc3NmYWlsJywgbnVsbCwgZGF0YSk7CiAgICAgICAgICAgICAgICAgICAgdGhhdC5fdHJpZ2dlcigncHJvY2Vzc2Fsd2F5cycsIG51bGwsIGRhdGEpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHJldHVybiBjaGFpbjsKICAgICAgICB9LAoKICAgICAgICAvLyBSZXBsYWNlcyB0aGUgc2V0dGluZ3Mgb2YgZWFjaCBwcm9jZXNzUXVldWUgaXRlbSB0aGF0CiAgICAgICAgLy8gYXJlIHN0cmluZ3Mgc3RhcnRpbmcgd2l0aCBhbiAiQCIsIHVzaW5nIHRoZSByZW1haW5pbmcKICAgICAgICAvLyBzdWJzdHJpbmcgYXMga2V5IGZvciB0aGUgb3B0aW9uIG1hcCwKICAgICAgICAvLyBlLmcuICJAYXV0b1VwbG9hZCIgaXMgcmVwbGFjZWQgd2l0aCBvcHRpb25zLmF1dG9VcGxvYWQ6CiAgICAgICAgX3RyYW5zZm9ybVByb2Nlc3NRdWV1ZTogZnVuY3Rpb24gKG9wdGlvbnMpIHsKICAgICAgICAgICAgdmFyIHByb2Nlc3NRdWV1ZSA9IFtdOwogICAgICAgICAgICAkLmVhY2gob3B0aW9ucy5wcm9jZXNzUXVldWUsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHZhciBzZXR0aW5ncyA9IHt9LAogICAgICAgICAgICAgICAgICAgIGFjdGlvbiA9IHRoaXMuYWN0aW9uLAogICAgICAgICAgICAgICAgICAgIHByZWZpeCA9IHRoaXMucHJlZml4ID09PSB0cnVlID8gYWN0aW9uIDogdGhpcy5wcmVmaXg7CiAgICAgICAgICAgICAgICAkLmVhY2godGhpcywgZnVuY3Rpb24gKGtleSwgdmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJC50eXBlKHZhbHVlKSA9PT0gJ3N0cmluZycgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLmNoYXJBdCgwKSA9PT0gJ0AnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzW2tleV0gPSBvcHRpb25zWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUuc2xpY2UoMSkgfHwgKHByZWZpeCA/IHByZWZpeCArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsga2V5LnNsaWNlKDEpIDoga2V5KQogICAgICAgICAgICAgICAgICAgICAgICBdOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzW2tleV0gPSB2YWx1ZTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBwcm9jZXNzUXVldWUucHVzaChzZXR0aW5ncyk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBvcHRpb25zLnByb2Nlc3NRdWV1ZSA9IHByb2Nlc3NRdWV1ZTsKICAgICAgICB9LAoKICAgICAgICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZmlsZXMgY3VycmVudGx5IGluIHRoZSBwcm9jZXNzc2luZyBxdWV1ZToKICAgICAgICBwcm9jZXNzaW5nOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9wcm9jZXNzaW5nOwogICAgICAgIH0sCgogICAgICAgIC8vIFByb2Nlc3NlcyB0aGUgZmlsZXMgZ2l2ZW4gYXMgZmlsZXMgcHJvcGVydHkgb2YgdGhlIGRhdGEgcGFyYW1ldGVyLAogICAgICAgIC8vIHJldHVybnMgYSBQcm9taXNlIG9iamVjdCB0aGF0IGFsbG93cyB0byBiaW5kIGNhbGxiYWNrczoKICAgICAgICBwcm9jZXNzOiBmdW5jdGlvbiAoZGF0YSkgewogICAgICAgICAgICB2YXIgdGhhdCA9IHRoaXMsCiAgICAgICAgICAgICAgICBvcHRpb25zID0gJC5leHRlbmQoe30sIHRoaXMub3B0aW9ucywgZGF0YSk7CiAgICAgICAgICAgIGlmIChvcHRpb25zLnByb2Nlc3NRdWV1ZSAmJiBvcHRpb25zLnByb2Nlc3NRdWV1ZS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zZm9ybVByb2Nlc3NRdWV1ZShvcHRpb25zKTsKICAgICAgICAgICAgICAgIGlmICh0aGlzLl9wcm9jZXNzaW5nID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdHJpZ2dlcigncHJvY2Vzc3N0YXJ0Jyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkLmVhY2goZGF0YS5maWxlcywgZnVuY3Rpb24gKGluZGV4KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG9wdHMgPSBpbmRleCA/ICQuZXh0ZW5kKHt9LCBvcHRpb25zKSA6IG9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmMgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5lcnJvclRocm93bikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkLkRlZmVycmVkKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZWplY3RXaXRoKHRoYXQsIFtkYXRhXSkucHJvbWlzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoYXQuX3Byb2Nlc3NGaWxlKG9wdHMsIGRhdGEpOwogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIG9wdHMuaW5kZXggPSBpbmRleDsKICAgICAgICAgICAgICAgICAgICB0aGF0Ll9wcm9jZXNzaW5nICs9IDE7CiAgICAgICAgICAgICAgICAgICAgdGhhdC5fcHJvY2Vzc2luZ1F1ZXVlID0gdGhhdC5fcHJvY2Vzc2luZ1F1ZXVlLnRoZW4oZnVuYywgZnVuYykKICAgICAgICAgICAgICAgICAgICAgICAgLmFsd2F5cyhmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9wcm9jZXNzaW5nIC09IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhhdC5fcHJvY2Vzc2luZyA9PT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX3RyaWdnZXIoJ3Byb2Nlc3NzdG9wJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Byb2Nlc3NpbmdRdWV1ZTsKICAgICAgICB9LAoKICAgICAgICBfY3JlYXRlOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHRoaXMuX3N1cGVyKCk7CiAgICAgICAgICAgIHRoaXMuX3Byb2Nlc3NpbmcgPSAwOwogICAgICAgICAgICB0aGlzLl9wcm9jZXNzaW5nUXVldWUgPSAkLkRlZmVycmVkKCkucmVzb2x2ZVdpdGgodGhpcykKICAgICAgICAgICAgICAgIC5wcm9taXNlKCk7CiAgICAgICAgfQoKICAgIH0pOwoKfSkpOwo=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jquery.fileupload-ui.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogalF1ZXJ5IEZpbGUgVXBsb2FkIFVzZXIgSW50ZXJmYWNlIFBsdWdpbgogKiBodHRwczovL2dpdGh1Yi5jb20vYmx1ZWltcC9qUXVlcnktRmlsZS1VcGxvYWQKICoKICogQ29weXJpZ2h0IDIwMTAsIFNlYmFzdGlhbiBUc2NoYW4KICogaHR0cHM6Ly9ibHVlaW1wLm5ldAogKgogKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2U6CiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUCiAqLwoKLyoganNoaW50IG5vbWVuOmZhbHNlICovCi8qIGdsb2JhbCBkZWZpbmUsIHJlcXVpcmUsIHdpbmRvdyAqLwoKOyhmdW5jdGlvbiAoZmFjdG9yeSkgewogICAgJ3VzZSBzdHJpY3QnOwogICAgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkgewogICAgICAgIC8vIFJlZ2lzdGVyIGFzIGFuIGFub255bW91cyBBTUQgbW9kdWxlOgogICAgICAgIGRlZmluZShbCiAgICAgICAgICAgICdqcXVlcnknLAogICAgICAgICAgICAnYmx1ZWltcC10bXBsJywKICAgICAgICAgICAgJy4vanF1ZXJ5LmZpbGV1cGxvYWQtaW1hZ2UnLAogICAgICAgICAgICAnLi9qcXVlcnkuZmlsZXVwbG9hZC1hdWRpbycsCiAgICAgICAgICAgICcuL2pxdWVyeS5maWxldXBsb2FkLXZpZGVvJywKICAgICAgICAgICAgJy4vanF1ZXJ5LmZpbGV1cGxvYWQtdmFsaWRhdGUnCiAgICAgICAgXSwgZmFjdG9yeSk7CiAgICB9IGVsc2UgaWYgKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JykgewogICAgICAgIC8vIE5vZGUvQ29tbW9uSlM6CiAgICAgICAgZmFjdG9yeSgKICAgICAgICAgICAgcmVxdWlyZSgnanF1ZXJ5JyksCiAgICAgICAgICAgIHJlcXVpcmUoJ2JsdWVpbXAtdG1wbCcpLAogICAgICAgICAgICByZXF1aXJlKCcuL2pxdWVyeS5maWxldXBsb2FkLWltYWdlJyksCiAgICAgICAgICAgIHJlcXVpcmUoJy4vanF1ZXJ5LmZpbGV1cGxvYWQtYXVkaW8nKSwKICAgICAgICAgICAgcmVxdWlyZSgnLi9qcXVlcnkuZmlsZXVwbG9hZC12aWRlbycpLAogICAgICAgICAgICByZXF1aXJlKCcuL2pxdWVyeS5maWxldXBsb2FkLXZhbGlkYXRlJykKICAgICAgICApOwogICAgfSBlbHNlIHsKICAgICAgICAvLyBCcm93c2VyIGdsb2JhbHM6CiAgICAgICAgZmFjdG9yeSgKICAgICAgICAgICAgd2luZG93LmpRdWVyeSwKICAgICAgICAgICAgd2luZG93LnRtcGwKICAgICAgICApOwogICAgfQp9KGZ1bmN0aW9uICgkLCB0bXBsKSB7CiAgICAndXNlIHN0cmljdCc7CgogICAgJC5ibHVlaW1wLmZpbGV1cGxvYWQucHJvdG90eXBlLl9zcGVjaWFsT3B0aW9ucy5wdXNoKAogICAgICAgICdmaWxlc0NvbnRhaW5lcicsCiAgICAgICAgJ3VwbG9hZFRlbXBsYXRlSWQnLAogICAgICAgICdkb3dubG9hZFRlbXBsYXRlSWQnCiAgICApOwoKICAgIC8vIFRoZSBVSSB2ZXJzaW9uIGV4dGVuZHMgdGhlIGZpbGUgdXBsb2FkIHdpZGdldAogICAgLy8gYW5kIGFkZHMgY29tcGxldGUgdXNlciBpbnRlcmZhY2UgaW50ZXJhY3Rpb246CiAgICAkLndpZGdldCgnYmx1ZWltcC5maWxldXBsb2FkJywgJC5ibHVlaW1wLmZpbGV1cGxvYWQsIHsKCiAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICAvLyBCeSBkZWZhdWx0LCBmaWxlcyBhZGRlZCB0byB0aGUgd2lkZ2V0IGFyZSB1cGxvYWRlZCBhcyBzb29uCiAgICAgICAgICAgIC8vIGFzIHRoZSB1c2VyIGNsaWNrcyBvbiB0aGUgc3RhcnQgYnV0dG9ucy4gVG8gZW5hYmxlIGF1dG9tYXRpYwogICAgICAgICAgICAvLyB1cGxvYWRzLCBzZXQgdGhlIGZvbGxvd2luZyBvcHRpb24gdG8gdHJ1ZToKICAgICAgICAgICAgYXV0b1VwbG9hZDogZmFsc2UsCiAgICAgICAgICAgIC8vIFRoZSBJRCBvZiB0aGUgdXBsb2FkIHRlbXBsYXRlOgogICAgICAgICAgICB1cGxvYWRUZW1wbGF0ZUlkOiAndGVtcGxhdGUtdXBsb2FkJywKICAgICAgICAgICAgLy8gVGhlIElEIG9mIHRoZSBkb3dubG9hZCB0ZW1wbGF0ZToKICAgICAgICAgICAgZG93bmxvYWRUZW1wbGF0ZUlkOiAndGVtcGxhdGUtZG93bmxvYWQnLAogICAgICAgICAgICAvLyBUaGUgY29udGFpbmVyIGZvciB0aGUgbGlzdCBvZiBmaWxlcy4gSWYgdW5kZWZpbmVkLCBpdCBpcyBzZXQgdG8KICAgICAgICAgICAgLy8gYW4gZWxlbWVudCB3aXRoIGNsYXNzICJmaWxlcyIgaW5zaWRlIG9mIHRoZSB3aWRnZXQgZWxlbWVudDoKICAgICAgICAgICAgZmlsZXNDb250YWluZXI6IHVuZGVmaW5lZCwKICAgICAgICAgICAgLy8gQnkgZGVmYXVsdCwgZmlsZXMgYXJlIGFwcGVuZGVkIHRvIHRoZSBmaWxlcyBjb250YWluZXIuCiAgICAgICAgICAgIC8vIFNldCB0aGUgZm9sbG93aW5nIG9wdGlvbiB0byB0cnVlLCB0byBwcmVwZW5kIGZpbGVzIGluc3RlYWQ6CiAgICAgICAgICAgIHByZXBlbmRGaWxlczogZmFsc2UsCiAgICAgICAgICAgIC8vIFRoZSBleHBlY3RlZCBkYXRhIHR5cGUgb2YgdGhlIHVwbG9hZCByZXNwb25zZSwgc2V0cyB0aGUgZGF0YVR5cGUKICAgICAgICAgICAgLy8gb3B0aW9uIG9mIHRoZSAkLmFqYXggdXBsb2FkIHJlcXVlc3RzOgogICAgICAgICAgICBkYXRhVHlwZTogJ2pzb24nLAoKICAgICAgICAgICAgLy8gRXJyb3IgYW5kIGluZm8gbWVzc2FnZXM6CiAgICAgICAgICAgIG1lc3NhZ2VzOiB7CiAgICAgICAgICAgICAgICB1bmtub3duRXJyb3I6ICdVbmtub3duIGVycm9yJwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgLy8gRnVuY3Rpb24gcmV0dXJuaW5nIHRoZSBjdXJyZW50IG51bWJlciBvZiBmaWxlcywKICAgICAgICAgICAgLy8gdXNlZCBieSB0aGUgbWF4TnVtYmVyT2ZGaWxlcyB2YWxpZGF0aW9uOgogICAgICAgICAgICBnZXROdW1iZXJPZkZpbGVzOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5maWxlc0NvbnRhaW5lci5jaGlsZHJlbigpCiAgICAgICAgICAgICAgICAgICAgLm5vdCgnLnByb2Nlc3NpbmcnKS5sZW5ndGg7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAvLyBDYWxsYmFjayB0byByZXRyaWV2ZSB0aGUgbGlzdCBvZiBmaWxlcyBmcm9tIHRoZSBzZXJ2ZXIgcmVzcG9uc2U6CiAgICAgICAgICAgIGdldEZpbGVzRnJvbVJlc3BvbnNlOiBmdW5jdGlvbiAoZGF0YSkgewogICAgICAgICAgICAgICAgaWYgKGRhdGEucmVzdWx0ICYmICQuaXNBcnJheShkYXRhLnJlc3VsdC5maWxlcykpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YS5yZXN1bHQuZmlsZXM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gW107CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAvLyBUaGUgYWRkIGNhbGxiYWNrIGlzIGludm9rZWQgYXMgc29vbiBhcyBmaWxlcyBhcmUgYWRkZWQgdG8gdGhlIGZpbGV1cGxvYWQKICAgICAgICAgICAgLy8gd2lkZ2V0ICh2aWEgZmlsZSBpbnB1dCBzZWxlY3Rpb24sIGRyYWcgJiBkcm9wIG9yIGFkZCBBUEkgY2FsbCkuCiAgICAgICAgICAgIC8vIFNlZSB0aGUgYmFzaWMgZmlsZSB1cGxvYWQgd2lkZ2V0IGZvciBtb3JlIGluZm9ybWF0aW9uOgogICAgICAgICAgICBhZGQ6IGZ1bmN0aW9uIChlLCBkYXRhKSB7CiAgICAgICAgICAgICAgICBpZiAoZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHZhciAkdGhpcyA9ICQodGhpcyksCiAgICAgICAgICAgICAgICAgICAgdGhhdCA9ICR0aGlzLmRhdGEoJ2JsdWVpbXAtZmlsZXVwbG9hZCcpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLmRhdGEoJ2ZpbGV1cGxvYWQnKSwKICAgICAgICAgICAgICAgICAgICBvcHRpb25zID0gdGhhdC5vcHRpb25zOwogICAgICAgICAgICAgICAgZGF0YS5jb250ZXh0ID0gdGhhdC5fcmVuZGVyVXBsb2FkKGRhdGEuZmlsZXMpCiAgICAgICAgICAgICAgICAgICAgLmRhdGEoJ2RhdGEnLCBkYXRhKQogICAgICAgICAgICAgICAgICAgIC5hZGRDbGFzcygncHJvY2Vzc2luZycpOwogICAgICAgICAgICAgICAgb3B0aW9ucy5maWxlc0NvbnRhaW5lclsKICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnByZXBlbmRGaWxlcyA/ICdwcmVwZW5kJyA6ICdhcHBlbmQnCiAgICAgICAgICAgICAgICBdKGRhdGEuY29udGV4dCk7CiAgICAgICAgICAgICAgICB0aGF0Ll9mb3JjZVJlZmxvdyhkYXRhLmNvbnRleHQpOwogICAgICAgICAgICAgICAgdGhhdC5fdHJhbnNpdGlvbihkYXRhLmNvbnRleHQpOwogICAgICAgICAgICAgICAgZGF0YS5wcm9jZXNzKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMuZmlsZXVwbG9hZCgncHJvY2VzcycsIGRhdGEpOwogICAgICAgICAgICAgICAgfSkuYWx3YXlzKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICBkYXRhLmNvbnRleHQuZWFjaChmdW5jdGlvbiAoaW5kZXgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5maW5kKCcuc2l6ZScpLnRleHQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9mb3JtYXRGaWxlU2l6ZShkYXRhLmZpbGVzW2luZGV4XS5zaXplKQogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0pLnJlbW92ZUNsYXNzKCdwcm9jZXNzaW5nJyk7CiAgICAgICAgICAgICAgICAgICAgdGhhdC5fcmVuZGVyUHJldmlld3MoZGF0YSk7CiAgICAgICAgICAgICAgICB9KS5kb25lKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICBkYXRhLmNvbnRleHQuZmluZCgnLnN0YXJ0JykucHJvcCgnZGlzYWJsZWQnLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCh0aGF0Ll90cmlnZ2VyKCdhZGRlZCcsIGUsIGRhdGEpICE9PSBmYWxzZSkgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvcHRpb25zLmF1dG9VcGxvYWQgfHwgZGF0YS5hdXRvVXBsb2FkKSAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5hdXRvVXBsb2FkICE9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnN1Ym1pdCgpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pLmZhaWwoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmZpbGVzLmVycm9yKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuY29udGV4dC5lYWNoKGZ1bmN0aW9uIChpbmRleCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVycm9yID0gZGF0YS5maWxlc1tpbmRleF0uZXJyb3I7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmZpbmQoJy5lcnJvcicpLnRleHQoZXJyb3IpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgLy8gQ2FsbGJhY2sgZm9yIHRoZSBzdGFydCBvZiBlYWNoIGZpbGUgdXBsb2FkIHJlcXVlc3Q6CiAgICAgICAgICAgIHNlbmQ6IGZ1bmN0aW9uIChlLCBkYXRhKSB7CiAgICAgICAgICAgICAgICBpZiAoZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHZhciB0aGF0ID0gJCh0aGlzKS5kYXRhKCdibHVlaW1wLWZpbGV1cGxvYWQnKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmRhdGEoJ2ZpbGV1cGxvYWQnKTsKICAgICAgICAgICAgICAgIGlmIChkYXRhLmNvbnRleHQgJiYgZGF0YS5kYXRhVHlwZSAmJgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmRhdGFUeXBlLnN1YnN0cigwLCA2KSA9PT0gJ2lmcmFtZScpIHsKICAgICAgICAgICAgICAgICAgICAvLyBJZnJhbWUgVHJhbnNwb3J0IGRvZXMgbm90IHN1cHBvcnQgcHJvZ3Jlc3MgZXZlbnRzLgogICAgICAgICAgICAgICAgICAgIC8vIEluIGxhY2sgb2YgYW4gaW5kZXRlcm1pbmF0ZSBwcm9ncmVzcyBiYXIsIHdlIHNldAogICAgICAgICAgICAgICAgICAgIC8vIHRoZSBwcm9ncmVzcyB0byAxMDAlLCBzaG93aW5nIHRoZSBmdWxsIGFuaW1hdGVkIGJhcjoKICAgICAgICAgICAgICAgICAgICBkYXRhLmNvbnRleHQKICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJy5wcm9ncmVzcycpLmFkZENsYXNzKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgISQuc3VwcG9ydC50cmFuc2l0aW9uICYmICdwcm9ncmVzcy1hbmltYXRlZCcKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICAuYXR0cignYXJpYS12YWx1ZW5vdycsIDEwMCkKICAgICAgICAgICAgICAgICAgICAgICAgLmNoaWxkcmVuKCkuZmlyc3QoKS5jc3MoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2lkdGgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJzEwMCUnCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gdGhhdC5fdHJpZ2dlcignc2VudCcsIGUsIGRhdGEpOwogICAgICAgICAgICB9LAogICAgICAgICAgICAvLyBDYWxsYmFjayBmb3Igc3VjY2Vzc2Z1bCB1cGxvYWRzOgogICAgICAgICAgICBkb25lOiBmdW5jdGlvbiAoZSwgZGF0YSkgewogICAgICAgICAgICAgICAgaWYgKGUuaXNEZWZhdWx0UHJldmVudGVkKCkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgdGhhdCA9ICQodGhpcykuZGF0YSgnYmx1ZWltcC1maWxldXBsb2FkJykgfHwKICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5kYXRhKCdmaWxldXBsb2FkJyksCiAgICAgICAgICAgICAgICAgICAgZ2V0RmlsZXNGcm9tUmVzcG9uc2UgPSBkYXRhLmdldEZpbGVzRnJvbVJlc3BvbnNlIHx8CiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQub3B0aW9ucy5nZXRGaWxlc0Zyb21SZXNwb25zZSwKICAgICAgICAgICAgICAgICAgICBmaWxlcyA9IGdldEZpbGVzRnJvbVJlc3BvbnNlKGRhdGEpLAogICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlLAogICAgICAgICAgICAgICAgICAgIGRlZmVycmVkOwogICAgICAgICAgICAgICAgaWYgKGRhdGEuY29udGV4dCkgewogICAgICAgICAgICAgICAgICAgIGRhdGEuY29udGV4dC5lYWNoKGZ1bmN0aW9uIChpbmRleCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZmlsZSA9IGZpbGVzW2luZGV4XSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtlcnJvcjogJ0VtcHR5IGZpbGUgdXBsb2FkIHJlc3VsdCd9OwogICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZCA9IHRoYXQuX2FkZEZpbmlzaGVkRGVmZXJyZWRzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX3RyYW5zaXRpb24oJCh0aGlzKSkuZG9uZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbm9kZSA9ICQodGhpcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGUgPSB0aGF0Ll9yZW5kZXJEb3dubG9hZChbZmlsZV0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlQWxsKG5vZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX2ZvcmNlUmVmbG93KHRlbXBsYXRlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll90cmFuc2l0aW9uKHRlbXBsYXRlKS5kb25lKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmNvbnRleHQgPSAkKHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fdHJpZ2dlcignY29tcGxldGVkJywgZSwgZGF0YSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll90cmlnZ2VyKCdmaW5pc2hlZCcsIGUsIGRhdGEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGUgPSB0aGF0Ll9yZW5kZXJEb3dubG9hZChmaWxlcylbCiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQub3B0aW9ucy5wcmVwZW5kRmlsZXMgPyAncHJlcGVuZFRvJyA6ICdhcHBlbmRUbycKICAgICAgICAgICAgICAgICAgICBdKHRoYXQub3B0aW9ucy5maWxlc0NvbnRhaW5lcik7CiAgICAgICAgICAgICAgICAgICAgdGhhdC5fZm9yY2VSZWZsb3codGVtcGxhdGUpOwogICAgICAgICAgICAgICAgICAgIGRlZmVycmVkID0gdGhhdC5fYWRkRmluaXNoZWREZWZlcnJlZHMoKTsKICAgICAgICAgICAgICAgICAgICB0aGF0Ll90cmFuc2l0aW9uKHRlbXBsYXRlKS5kb25lKAogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmNvbnRleHQgPSAkKHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fdHJpZ2dlcignY29tcGxldGVkJywgZSwgZGF0YSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll90cmlnZ2VyKCdmaW5pc2hlZCcsIGUsIGRhdGEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgLy8gQ2FsbGJhY2sgZm9yIGZhaWxlZCAoYWJvcnQgb3IgZXJyb3IpIHVwbG9hZHM6CiAgICAgICAgICAgIGZhaWw6IGZ1bmN0aW9uIChlLCBkYXRhKSB7CiAgICAgICAgICAgICAgICBpZiAoZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHZhciB0aGF0ID0gJCh0aGlzKS5kYXRhKCdibHVlaW1wLWZpbGV1cGxvYWQnKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmRhdGEoJ2ZpbGV1cGxvYWQnKSwKICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZSwKICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZDsKICAgICAgICAgICAgICAgIGlmIChkYXRhLmNvbnRleHQpIHsKICAgICAgICAgICAgICAgICAgICBkYXRhLmNvbnRleHQuZWFjaChmdW5jdGlvbiAoaW5kZXgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuZXJyb3JUaHJvd24gIT09ICdhYm9ydCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmaWxlID0gZGF0YS5maWxlc1tpbmRleF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLmVycm9yID0gZmlsZS5lcnJvciB8fCBkYXRhLmVycm9yVGhyb3duIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5pMThuKCd1bmtub3duRXJyb3InKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkID0gdGhhdC5fYWRkRmluaXNoZWREZWZlcnJlZHMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX3RyYW5zaXRpb24oJCh0aGlzKSkuZG9uZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBub2RlID0gJCh0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGUgPSB0aGF0Ll9yZW5kZXJEb3dubG9hZChbZmlsZV0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZUFsbChub2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fZm9yY2VSZWZsb3codGVtcGxhdGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll90cmFuc2l0aW9uKHRlbXBsYXRlKS5kb25lKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuY29udGV4dCA9ICQodGhpcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fdHJpZ2dlcignZmFpbGVkJywgZSwgZGF0YSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fdHJpZ2dlcignZmluaXNoZWQnLCBlLCBkYXRhKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkID0gdGhhdC5fYWRkRmluaXNoZWREZWZlcnJlZHMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX3RyYW5zaXRpb24oJCh0aGlzKSkuZG9uZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykucmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX3RyaWdnZXIoJ2ZhaWxlZCcsIGUsIGRhdGEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll90cmlnZ2VyKCdmaW5pc2hlZCcsIGUsIGRhdGEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkYXRhLmVycm9yVGhyb3duICE9PSAnYWJvcnQnKSB7CiAgICAgICAgICAgICAgICAgICAgZGF0YS5jb250ZXh0ID0gdGhhdC5fcmVuZGVyVXBsb2FkKGRhdGEuZmlsZXMpWwogICAgICAgICAgICAgICAgICAgICAgICB0aGF0Lm9wdGlvbnMucHJlcGVuZEZpbGVzID8gJ3ByZXBlbmRUbycgOiAnYXBwZW5kVG8nCiAgICAgICAgICAgICAgICAgICAgXSh0aGF0Lm9wdGlvbnMuZmlsZXNDb250YWluZXIpCiAgICAgICAgICAgICAgICAgICAgICAgIC5kYXRhKCdkYXRhJywgZGF0YSk7CiAgICAgICAgICAgICAgICAgICAgdGhhdC5fZm9yY2VSZWZsb3coZGF0YS5jb250ZXh0KTsKICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZCA9IHRoYXQuX2FkZEZpbmlzaGVkRGVmZXJyZWRzKCk7CiAgICAgICAgICAgICAgICAgICAgdGhhdC5fdHJhbnNpdGlvbihkYXRhLmNvbnRleHQpLmRvbmUoCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuY29udGV4dCA9ICQodGhpcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll90cmlnZ2VyKCdmYWlsZWQnLCBlLCBkYXRhKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX3RyaWdnZXIoJ2ZpbmlzaGVkJywgZSwgZGF0YSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB0aGF0Ll90cmlnZ2VyKCdmYWlsZWQnLCBlLCBkYXRhKTsKICAgICAgICAgICAgICAgICAgICB0aGF0Ll90cmlnZ2VyKCdmaW5pc2hlZCcsIGUsIGRhdGEpOwogICAgICAgICAgICAgICAgICAgIHRoYXQuX2FkZEZpbmlzaGVkRGVmZXJyZWRzKCkucmVzb2x2ZSgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAvLyBDYWxsYmFjayBmb3IgdXBsb2FkIHByb2dyZXNzIGV2ZW50czoKICAgICAgICAgICAgcHJvZ3Jlc3M6IGZ1bmN0aW9uIChlLCBkYXRhKSB7CiAgICAgICAgICAgICAgICBpZiAoZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHZhciBwcm9ncmVzcyA9IE1hdGguZmxvb3IoZGF0YS5sb2FkZWQgLyBkYXRhLnRvdGFsICogMTAwKTsKICAgICAgICAgICAgICAgIGlmIChkYXRhLmNvbnRleHQpIHsKICAgICAgICAgICAgICAgICAgICBkYXRhLmNvbnRleHQuZWFjaChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuZmluZCgnLnByb2dyZXNzJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCdhcmlhLXZhbHVlbm93JywgcHJvZ3Jlc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY2hpbGRyZW4oKS5maXJzdCgpLmNzcygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2lkdGgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyZXNzICsgJyUnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAvLyBDYWxsYmFjayBmb3IgZ2xvYmFsIHVwbG9hZCBwcm9ncmVzcyBldmVudHM6CiAgICAgICAgICAgIHByb2dyZXNzYWxsOiBmdW5jdGlvbiAoZSwgZGF0YSkgewogICAgICAgICAgICAgICAgaWYgKGUuaXNEZWZhdWx0UHJldmVudGVkKCkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpLAogICAgICAgICAgICAgICAgICAgIHByb2dyZXNzID0gTWF0aC5mbG9vcihkYXRhLmxvYWRlZCAvIGRhdGEudG90YWwgKiAxMDApLAogICAgICAgICAgICAgICAgICAgIGdsb2JhbFByb2dyZXNzTm9kZSA9ICR0aGlzLmZpbmQoJy5maWxldXBsb2FkLXByb2dyZXNzJyksCiAgICAgICAgICAgICAgICAgICAgZXh0ZW5kZWRQcm9ncmVzc05vZGUgPSBnbG9iYWxQcm9ncmVzc05vZGUKICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJy5wcm9ncmVzcy1leHRlbmRlZCcpOwogICAgICAgICAgICAgICAgaWYgKGV4dGVuZGVkUHJvZ3Jlc3NOb2RlLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgIGV4dGVuZGVkUHJvZ3Jlc3NOb2RlLmh0bWwoCiAgICAgICAgICAgICAgICAgICAgICAgICgkdGhpcy5kYXRhKCdibHVlaW1wLWZpbGV1cGxvYWQnKSB8fCAkdGhpcy5kYXRhKCdmaWxldXBsb2FkJykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuX3JlbmRlckV4dGVuZGVkUHJvZ3Jlc3MoZGF0YSkKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ2xvYmFsUHJvZ3Jlc3NOb2RlCiAgICAgICAgICAgICAgICAgICAgLmZpbmQoJy5wcm9ncmVzcycpCiAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2FyaWEtdmFsdWVub3cnLCBwcm9ncmVzcykKICAgICAgICAgICAgICAgICAgICAuY2hpbGRyZW4oKS5maXJzdCgpLmNzcygKICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZHRoJywKICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3Jlc3MgKyAnJScKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9LAogICAgICAgICAgICAvLyBDYWxsYmFjayBmb3IgdXBsb2FkcyBzdGFydCwgZXF1aXZhbGVudCB0byB0aGUgZ2xvYmFsIGFqYXhTdGFydCBldmVudDoKICAgICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgICAgICBpZiAoZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHZhciB0aGF0ID0gJCh0aGlzKS5kYXRhKCdibHVlaW1wLWZpbGV1cGxvYWQnKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmRhdGEoJ2ZpbGV1cGxvYWQnKTsKICAgICAgICAgICAgICAgIHRoYXQuX3Jlc2V0RmluaXNoZWREZWZlcnJlZHMoKTsKICAgICAgICAgICAgICAgIHRoYXQuX3RyYW5zaXRpb24oJCh0aGlzKS5maW5kKCcuZmlsZXVwbG9hZC1wcm9ncmVzcycpKS5kb25lKAogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fdHJpZ2dlcignc3RhcnRlZCcsIGUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIC8vIENhbGxiYWNrIGZvciB1cGxvYWRzIHN0b3AsIGVxdWl2YWxlbnQgdG8gdGhlIGdsb2JhbCBhamF4U3RvcCBldmVudDoKICAgICAgICAgICAgc3RvcDogZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgICAgIGlmIChlLmlzRGVmYXVsdFByZXZlbnRlZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIHRoYXQgPSAkKHRoaXMpLmRhdGEoJ2JsdWVpbXAtZmlsZXVwbG9hZCcpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuZGF0YSgnZmlsZXVwbG9hZCcpLAogICAgICAgICAgICAgICAgICAgIGRlZmVycmVkID0gdGhhdC5fYWRkRmluaXNoZWREZWZlcnJlZHMoKTsKICAgICAgICAgICAgICAgICQud2hlbi5hcHBseSgkLCB0aGF0Ll9nZXRGaW5pc2hlZERlZmVycmVkcygpKQogICAgICAgICAgICAgICAgICAgIC5kb25lKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fdHJpZ2dlcignc3RvcHBlZCcsIGUpOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgdGhhdC5fdHJhbnNpdGlvbigkKHRoaXMpLmZpbmQoJy5maWxldXBsb2FkLXByb2dyZXNzJykpLmRvbmUoCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmZpbmQoJy5wcm9ncmVzcycpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cignYXJpYS12YWx1ZW5vdycsICcwJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jaGlsZHJlbigpLmZpcnN0KCkuY3NzKCd3aWR0aCcsICcwJScpOwogICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmZpbmQoJy5wcm9ncmVzcy1leHRlbmRlZCcpLmh0bWwoJyZuYnNwOycpOwogICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgcHJvY2Vzc3N0YXJ0OiBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICAgICAgaWYgKGUuaXNEZWZhdWx0UHJldmVudGVkKCkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkKHRoaXMpLmFkZENsYXNzKCdmaWxldXBsb2FkLXByb2Nlc3NpbmcnKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgcHJvY2Vzc3N0b3A6IGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgICAgICBpZiAoZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICQodGhpcykucmVtb3ZlQ2xhc3MoJ2ZpbGV1cGxvYWQtcHJvY2Vzc2luZycpOwogICAgICAgICAgICB9LAogICAgICAgICAgICAvLyBDYWxsYmFjayBmb3IgZmlsZSBkZWxldGlvbjoKICAgICAgICAgICAgZGVzdHJveTogZnVuY3Rpb24gKGUsIGRhdGEpIHsKICAgICAgICAgICAgICAgIGlmIChlLmlzRGVmYXVsdFByZXZlbnRlZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIHRoYXQgPSAkKHRoaXMpLmRhdGEoJ2JsdWVpbXAtZmlsZXVwbG9hZCcpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuZGF0YSgnZmlsZXVwbG9hZCcpLAogICAgICAgICAgICAgICAgICAgIHJlbW92ZU5vZGUgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX3RyYW5zaXRpb24oZGF0YS5jb250ZXh0KS5kb25lKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykucmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fdHJpZ2dlcignZGVzdHJveWVkJywgZSwgZGF0YSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIGlmIChkYXRhLnVybCkgewogICAgICAgICAgICAgICAgICAgIGRhdGEuZGF0YVR5cGUgPSBkYXRhLmRhdGFUeXBlIHx8IHRoYXQub3B0aW9ucy5kYXRhVHlwZTsKICAgICAgICAgICAgICAgICAgICAkLmFqYXgoZGF0YSkuZG9uZShyZW1vdmVOb2RlKS5mYWlsKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fdHJpZ2dlcignZGVzdHJveWZhaWxlZCcsIGUsIGRhdGEpOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICByZW1vdmVOb2RlKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAoKICAgICAgICBfcmVzZXRGaW5pc2hlZERlZmVycmVkczogZnVuY3Rpb24gKCkgewogICAgICAgICAgICB0aGlzLl9maW5pc2hlZFVwbG9hZHMgPSBbXTsKICAgICAgICB9LAoKICAgICAgICBfYWRkRmluaXNoZWREZWZlcnJlZHM6IGZ1bmN0aW9uIChkZWZlcnJlZCkgewogICAgICAgICAgICBpZiAoIWRlZmVycmVkKSB7CiAgICAgICAgICAgICAgICBkZWZlcnJlZCA9ICQuRGVmZXJyZWQoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0aGlzLl9maW5pc2hlZFVwbG9hZHMucHVzaChkZWZlcnJlZCk7CiAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZDsKICAgICAgICB9LAoKICAgICAgICBfZ2V0RmluaXNoZWREZWZlcnJlZHM6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbmlzaGVkVXBsb2FkczsKICAgICAgICB9LAoKICAgICAgICAvLyBMaW5rIGhhbmRsZXIsIHRoYXQgYWxsb3dzIHRvIGRvd25sb2FkIGZpbGVzCiAgICAgICAgLy8gYnkgZHJhZyAmIGRyb3Agb2YgdGhlIGxpbmtzIHRvIHRoZSBkZXNrdG9wOgogICAgICAgIF9lbmFibGVEcmFnVG9EZXNrdG9wOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHZhciBsaW5rID0gJCh0aGlzKSwKICAgICAgICAgICAgICAgIHVybCA9IGxpbmsucHJvcCgnaHJlZicpLAogICAgICAgICAgICAgICAgbmFtZSA9IGxpbmsucHJvcCgnZG93bmxvYWQnKSwKICAgICAgICAgICAgICAgIHR5cGUgPSAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJzsKICAgICAgICAgICAgbGluay5iaW5kKCdkcmFnc3RhcnQnLCBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICBlLm9yaWdpbmFsRXZlbnQuZGF0YVRyYW5zZmVyLnNldERhdGEoCiAgICAgICAgICAgICAgICAgICAgICAgICdEb3dubG9hZFVSTCcsCiAgICAgICAgICAgICAgICAgICAgICAgIFt0eXBlLCBuYW1lLCB1cmxdLmpvaW4oJzonKQogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9IGNhdGNoIChpZ25vcmUpIHt9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0sCgogICAgICAgIF9mb3JtYXRGaWxlU2l6ZTogZnVuY3Rpb24gKGJ5dGVzKSB7CiAgICAgICAgICAgIGlmICh0eXBlb2YgYnl0ZXMgIT09ICdudW1iZXInKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGJ5dGVzID49IDEwMDAwMDAwMDApIHsKICAgICAgICAgICAgICAgIHJldHVybiAoYnl0ZXMgLyAxMDAwMDAwMDAwKS50b0ZpeGVkKDIpICsgJyBHQic7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGJ5dGVzID49IDEwMDAwMDApIHsKICAgICAgICAgICAgICAgIHJldHVybiAoYnl0ZXMgLyAxMDAwMDAwKS50b0ZpeGVkKDIpICsgJyBNQic7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIChieXRlcyAvIDEwMDApLnRvRml4ZWQoMikgKyAnIEtCJzsKICAgICAgICB9LAoKICAgICAgICBfZm9ybWF0Qml0cmF0ZTogZnVuY3Rpb24gKGJpdHMpIHsKICAgICAgICAgICAgaWYgKHR5cGVvZiBiaXRzICE9PSAnbnVtYmVyJykgewogICAgICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChiaXRzID49IDEwMDAwMDAwMDApIHsKICAgICAgICAgICAgICAgIHJldHVybiAoYml0cyAvIDEwMDAwMDAwMDApLnRvRml4ZWQoMikgKyAnIEdiaXQvcyc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGJpdHMgPj0gMTAwMDAwMCkgewogICAgICAgICAgICAgICAgcmV0dXJuIChiaXRzIC8gMTAwMDAwMCkudG9GaXhlZCgyKSArICcgTWJpdC9zJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoYml0cyA+PSAxMDAwKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gKGJpdHMgLyAxMDAwKS50b0ZpeGVkKDIpICsgJyBrYml0L3MnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBiaXRzLnRvRml4ZWQoMikgKyAnIGJpdC9zJzsKICAgICAgICB9LAoKICAgICAgICBfZm9ybWF0VGltZTogZnVuY3Rpb24gKHNlY29uZHMpIHsKICAgICAgICAgICAgdmFyIGRhdGUgPSBuZXcgRGF0ZShzZWNvbmRzICogMTAwMCksCiAgICAgICAgICAgICAgICBkYXlzID0gTWF0aC5mbG9vcihzZWNvbmRzIC8gODY0MDApOwogICAgICAgICAgICBkYXlzID0gZGF5cyA/IGRheXMgKyAnZCAnIDogJyc7CiAgICAgICAgICAgIHJldHVybiBkYXlzICsKICAgICAgICAgICAgICAgICgnMCcgKyBkYXRlLmdldFVUQ0hvdXJzKCkpLnNsaWNlKC0yKSArICc6JyArCiAgICAgICAgICAgICAgICAoJzAnICsgZGF0ZS5nZXRVVENNaW51dGVzKCkpLnNsaWNlKC0yKSArICc6JyArCiAgICAgICAgICAgICAgICAoJzAnICsgZGF0ZS5nZXRVVENTZWNvbmRzKCkpLnNsaWNlKC0yKTsKICAgICAgICB9LAoKICAgICAgICBfZm9ybWF0UGVyY2VudGFnZTogZnVuY3Rpb24gKGZsb2F0VmFsdWUpIHsKICAgICAgICAgICAgcmV0dXJuIChmbG9hdFZhbHVlICogMTAwKS50b0ZpeGVkKDIpICsgJyAlJzsKICAgICAgICB9LAoKICAgICAgICBfcmVuZGVyRXh0ZW5kZWRQcm9ncmVzczogZnVuY3Rpb24gKGRhdGEpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2Zvcm1hdEJpdHJhdGUoZGF0YS5iaXRyYXRlKSArICcgfCAnICsKICAgICAgICAgICAgICAgIHRoaXMuX2Zvcm1hdFRpbWUoCiAgICAgICAgICAgICAgICAgICAgKGRhdGEudG90YWwgLSBkYXRhLmxvYWRlZCkgKiA4IC8gZGF0YS5iaXRyYXRlCiAgICAgICAgICAgICAgICApICsgJyB8ICcgKwogICAgICAgICAgICAgICAgdGhpcy5fZm9ybWF0UGVyY2VudGFnZSgKICAgICAgICAgICAgICAgICAgICBkYXRhLmxvYWRlZCAvIGRhdGEudG90YWwKICAgICAgICAgICAgICAgICkgKyAnIHwgJyArCiAgICAgICAgICAgICAgICB0aGlzLl9mb3JtYXRGaWxlU2l6ZShkYXRhLmxvYWRlZCkgKyAnIC8gJyArCiAgICAgICAgICAgICAgICB0aGlzLl9mb3JtYXRGaWxlU2l6ZShkYXRhLnRvdGFsKTsKICAgICAgICB9LAoKICAgICAgICBfcmVuZGVyVGVtcGxhdGU6IGZ1bmN0aW9uIChmdW5jLCBmaWxlcykgewogICAgICAgICAgICBpZiAoIWZ1bmMpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGZ1bmMoewogICAgICAgICAgICAgICAgZmlsZXM6IGZpbGVzLAogICAgICAgICAgICAgICAgZm9ybWF0RmlsZVNpemU6IHRoaXMuX2Zvcm1hdEZpbGVTaXplLAogICAgICAgICAgICAgICAgb3B0aW9uczogdGhpcy5vcHRpb25zCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgJCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gJCh0aGlzLm9wdGlvbnMudGVtcGxhdGVzQ29udGFpbmVyKS5odG1sKHJlc3VsdCkuY2hpbGRyZW4oKTsKICAgICAgICB9LAoKICAgICAgICBfcmVuZGVyUHJldmlld3M6IGZ1bmN0aW9uIChkYXRhKSB7CiAgICAgICAgICAgIGRhdGEuY29udGV4dC5maW5kKCcucHJldmlldycpLmVhY2goZnVuY3Rpb24gKGluZGV4LCBlbG0pIHsKICAgICAgICAgICAgICAgICQoZWxtKS5hcHBlbmQoZGF0YS5maWxlc1tpbmRleF0ucHJldmlldyk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0sCgogICAgICAgIF9yZW5kZXJVcGxvYWQ6IGZ1bmN0aW9uIChmaWxlcykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fcmVuZGVyVGVtcGxhdGUoCiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMudXBsb2FkVGVtcGxhdGUsCiAgICAgICAgICAgICAgICBmaWxlcwogICAgICAgICAgICApOwogICAgICAgIH0sCgogICAgICAgIF9yZW5kZXJEb3dubG9hZDogZnVuY3Rpb24gKGZpbGVzKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9yZW5kZXJUZW1wbGF0ZSgKICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5kb3dubG9hZFRlbXBsYXRlLAogICAgICAgICAgICAgICAgZmlsZXMKICAgICAgICAgICAgKS5maW5kKCdhW2Rvd25sb2FkXScpLmVhY2godGhpcy5fZW5hYmxlRHJhZ1RvRGVza3RvcCkuZW5kKCk7CiAgICAgICAgfSwKCiAgICAgICAgX3N0YXJ0SGFuZGxlcjogZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICB2YXIgYnV0dG9uID0gJChlLmN1cnJlbnRUYXJnZXQpLAogICAgICAgICAgICAgICAgdGVtcGxhdGUgPSBidXR0b24uY2xvc2VzdCgnLnRlbXBsYXRlLXVwbG9hZCcpLAogICAgICAgICAgICAgICAgZGF0YSA9IHRlbXBsYXRlLmRhdGEoJ2RhdGEnKTsKICAgICAgICAgICAgYnV0dG9uLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7CiAgICAgICAgICAgIGlmIChkYXRhICYmIGRhdGEuc3VibWl0KSB7CiAgICAgICAgICAgICAgICBkYXRhLnN1Ym1pdCgpOwogICAgICAgICAgICB9CiAgICAgICAgfSwKCiAgICAgICAgX2NhbmNlbEhhbmRsZXI6IGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgdmFyIHRlbXBsYXRlID0gJChlLmN1cnJlbnRUYXJnZXQpCiAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy50ZW1wbGF0ZS11cGxvYWQsLnRlbXBsYXRlLWRvd25sb2FkJyksCiAgICAgICAgICAgICAgICBkYXRhID0gdGVtcGxhdGUuZGF0YSgnZGF0YScpIHx8IHt9OwogICAgICAgICAgICBkYXRhLmNvbnRleHQgPSBkYXRhLmNvbnRleHQgfHwgdGVtcGxhdGU7CiAgICAgICAgICAgIGlmIChkYXRhLmFib3J0KSB7CiAgICAgICAgICAgICAgICBkYXRhLmFib3J0KCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBkYXRhLmVycm9yVGhyb3duID0gJ2Fib3J0JzsKICAgICAgICAgICAgICAgIHRoaXMuX3RyaWdnZXIoJ2ZhaWwnLCBlLCBkYXRhKTsKICAgICAgICAgICAgfQogICAgICAgIH0sCgogICAgICAgIF9kZWxldGVIYW5kbGVyOiBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIHZhciBidXR0b24gPSAkKGUuY3VycmVudFRhcmdldCk7CiAgICAgICAgICAgIHRoaXMuX3RyaWdnZXIoJ2Rlc3Ryb3knLCBlLCAkLmV4dGVuZCh7CiAgICAgICAgICAgICAgICBjb250ZXh0OiBidXR0b24uY2xvc2VzdCgnLnRlbXBsYXRlLWRvd25sb2FkJyksCiAgICAgICAgICAgICAgICB0eXBlOiAnREVMRVRFJwogICAgICAgICAgICB9LCBidXR0b24uZGF0YSgpKSk7CiAgICAgICAgfSwKCiAgICAgICAgX2ZvcmNlUmVmbG93OiBmdW5jdGlvbiAobm9kZSkgewogICAgICAgICAgICByZXR1cm4gJC5zdXBwb3J0LnRyYW5zaXRpb24gJiYgbm9kZS5sZW5ndGggJiYKICAgICAgICAgICAgICAgIG5vZGVbMF0ub2Zmc2V0V2lkdGg7CiAgICAgICAgfSwKCiAgICAgICAgX3RyYW5zaXRpb246IGZ1bmN0aW9uIChub2RlKSB7CiAgICAgICAgICAgIHZhciBkZmQgPSAkLkRlZmVycmVkKCk7CiAgICAgICAgICAgIGlmICgkLnN1cHBvcnQudHJhbnNpdGlvbiAmJiBub2RlLmhhc0NsYXNzKCdmYWRlJykgJiYgbm9kZS5pcygnOnZpc2libGUnKSkgewogICAgICAgICAgICAgICAgbm9kZS5iaW5kKAogICAgICAgICAgICAgICAgICAgICQuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCwKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgd2UgZG9uJ3QgcmVzcG9uZCB0byBvdGhlciB0cmFuc2l0aW9ucyBldmVudHMKICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW4gdGhlIGNvbnRhaW5lciBlbGVtZW50LCBlLmcuIGZyb20gYnV0dG9uIGVsZW1lbnRzOgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS50YXJnZXQgPT09IG5vZGVbMF0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUudW5iaW5kKCQuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZmQucmVzb2x2ZVdpdGgobm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApLnRvZ2dsZUNsYXNzKCdpbicpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgbm9kZS50b2dnbGVDbGFzcygnaW4nKTsKICAgICAgICAgICAgICAgIGRmZC5yZXNvbHZlV2l0aChub2RlKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gZGZkOwogICAgICAgIH0sCgogICAgICAgIF9pbml0QnV0dG9uQmFyRXZlbnRIYW5kbGVyczogZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgZmlsZVVwbG9hZEJ1dHRvbkJhciA9IHRoaXMuZWxlbWVudC5maW5kKCcuZmlsZXVwbG9hZC1idXR0b25iYXInKSwKICAgICAgICAgICAgICAgIGZpbGVzTGlzdCA9IHRoaXMub3B0aW9ucy5maWxlc0NvbnRhaW5lcjsKICAgICAgICAgICAgdGhpcy5fb24oZmlsZVVwbG9hZEJ1dHRvbkJhci5maW5kKCcuc3RhcnQnKSwgewogICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgICAgIGZpbGVzTGlzdC5maW5kKCcuc3RhcnQnKS5jbGljaygpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgdGhpcy5fb24oZmlsZVVwbG9hZEJ1dHRvbkJhci5maW5kKCcuY2FuY2VsJyksIHsKICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICAgICBmaWxlc0xpc3QuZmluZCgnLmNhbmNlbCcpLmNsaWNrKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICB0aGlzLl9vbihmaWxlVXBsb2FkQnV0dG9uQmFyLmZpbmQoJy5kZWxldGUnKSwgewogICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgICAgIGZpbGVzTGlzdC5maW5kKCcudG9nZ2xlOmNoZWNrZWQnKQogICAgICAgICAgICAgICAgICAgICAgICAuY2xvc2VzdCgnLnRlbXBsYXRlLWRvd25sb2FkJykKICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJy5kZWxldGUnKS5jbGljaygpOwogICAgICAgICAgICAgICAgICAgIGZpbGVVcGxvYWRCdXR0b25CYXIuZmluZCgnLnRvZ2dsZScpCiAgICAgICAgICAgICAgICAgICAgICAgIC5wcm9wKCdjaGVja2VkJywgZmFsc2UpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgdGhpcy5fb24oZmlsZVVwbG9hZEJ1dHRvbkJhci5maW5kKCcudG9nZ2xlJyksIHsKICAgICAgICAgICAgICAgIGNoYW5nZTogZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgICAgICAgICBmaWxlc0xpc3QuZmluZCgnLnRvZ2dsZScpLnByb3AoCiAgICAgICAgICAgICAgICAgICAgICAgICdjaGVja2VkJywKICAgICAgICAgICAgICAgICAgICAgICAgJChlLmN1cnJlbnRUYXJnZXQpLmlzKCc6Y2hlY2tlZCcpCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfSwKCiAgICAgICAgX2Rlc3Ryb3lCdXR0b25CYXJFdmVudEhhbmRsZXJzOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHRoaXMuX29mZigKICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5maW5kKCcuZmlsZXVwbG9hZC1idXR0b25iYXInKQogICAgICAgICAgICAgICAgICAgIC5maW5kKCcuc3RhcnQsIC5jYW5jZWwsIC5kZWxldGUnKSwKICAgICAgICAgICAgICAgICdjbGljaycKICAgICAgICAgICAgKTsKICAgICAgICAgICAgdGhpcy5fb2ZmKAogICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmZpbmQoJy5maWxldXBsb2FkLWJ1dHRvbmJhciAudG9nZ2xlJyksCiAgICAgICAgICAgICAgICAnY2hhbmdlLicKICAgICAgICAgICAgKTsKICAgICAgICB9LAoKICAgICAgICBfaW5pdEV2ZW50SGFuZGxlcnM6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdGhpcy5fc3VwZXIoKTsKICAgICAgICAgICAgdGhpcy5fb24odGhpcy5vcHRpb25zLmZpbGVzQ29udGFpbmVyLCB7CiAgICAgICAgICAgICAgICAnY2xpY2sgLnN0YXJ0JzogdGhpcy5fc3RhcnRIYW5kbGVyLAogICAgICAgICAgICAgICAgJ2NsaWNrIC5jYW5jZWwnOiB0aGlzLl9jYW5jZWxIYW5kbGVyLAogICAgICAgICAgICAgICAgJ2NsaWNrIC5kZWxldGUnOiB0aGlzLl9kZWxldGVIYW5kbGVyCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICB0aGlzLl9pbml0QnV0dG9uQmFyRXZlbnRIYW5kbGVycygpOwogICAgICAgIH0sCgogICAgICAgIF9kZXN0cm95RXZlbnRIYW5kbGVyczogZnVuY3Rpb24gKCkgewogICAgICAgICAgICB0aGlzLl9kZXN0cm95QnV0dG9uQmFyRXZlbnRIYW5kbGVycygpOwogICAgICAgICAgICB0aGlzLl9vZmYodGhpcy5vcHRpb25zLmZpbGVzQ29udGFpbmVyLCAnY2xpY2snKTsKICAgICAgICAgICAgdGhpcy5fc3VwZXIoKTsKICAgICAgICB9LAoKICAgICAgICBfZW5hYmxlRmlsZUlucHV0QnV0dG9uOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5maW5kKCcuZmlsZWlucHV0LWJ1dHRvbiBpbnB1dCcpCiAgICAgICAgICAgICAgICAucHJvcCgnZGlzYWJsZWQnLCBmYWxzZSkKICAgICAgICAgICAgICAgIC5wYXJlbnQoKS5yZW1vdmVDbGFzcygnZGlzYWJsZWQnKTsKICAgICAgICB9LAoKICAgICAgICBfZGlzYWJsZUZpbGVJbnB1dEJ1dHRvbjogZnVuY3Rpb24gKCkgewogICAgICAgICAgICB0aGlzLmVsZW1lbnQuZmluZCgnLmZpbGVpbnB1dC1idXR0b24gaW5wdXQnKQogICAgICAgICAgICAgICAgLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSkKICAgICAgICAgICAgICAgIC5wYXJlbnQoKS5hZGRDbGFzcygnZGlzYWJsZWQnKTsKICAgICAgICB9LAoKICAgICAgICBfaW5pdFRlbXBsYXRlczogZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9uczsKICAgICAgICAgICAgb3B0aW9ucy50ZW1wbGF0ZXNDb250YWluZXIgPSB0aGlzLmRvY3VtZW50WzBdLmNyZWF0ZUVsZW1lbnQoCiAgICAgICAgICAgICAgICBvcHRpb25zLmZpbGVzQ29udGFpbmVyLnByb3AoJ25vZGVOYW1lJykKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKHRtcGwpIHsKICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnVwbG9hZFRlbXBsYXRlSWQpIHsKICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnVwbG9hZFRlbXBsYXRlID0gdG1wbChvcHRpb25zLnVwbG9hZFRlbXBsYXRlSWQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuZG93bmxvYWRUZW1wbGF0ZUlkKSB7CiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5kb3dubG9hZFRlbXBsYXRlID0gdG1wbChvcHRpb25zLmRvd25sb2FkVGVtcGxhdGVJZCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAoKICAgICAgICBfaW5pdEZpbGVzQ29udGFpbmVyOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHZhciBvcHRpb25zID0gdGhpcy5vcHRpb25zOwogICAgICAgICAgICBpZiAob3B0aW9ucy5maWxlc0NvbnRhaW5lciA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICBvcHRpb25zLmZpbGVzQ29udGFpbmVyID0gdGhpcy5lbGVtZW50LmZpbmQoJy5maWxlcycpOwogICAgICAgICAgICB9IGVsc2UgaWYgKCEob3B0aW9ucy5maWxlc0NvbnRhaW5lciBpbnN0YW5jZW9mICQpKSB7CiAgICAgICAgICAgICAgICBvcHRpb25zLmZpbGVzQ29udGFpbmVyID0gJChvcHRpb25zLmZpbGVzQ29udGFpbmVyKTsKICAgICAgICAgICAgfQogICAgICAgIH0sCgogICAgICAgIF9pbml0U3BlY2lhbE9wdGlvbnM6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdGhpcy5fc3VwZXIoKTsKICAgICAgICAgICAgdGhpcy5faW5pdEZpbGVzQ29udGFpbmVyKCk7CiAgICAgICAgICAgIHRoaXMuX2luaXRUZW1wbGF0ZXMoKTsKICAgICAgICB9LAoKICAgICAgICBfY3JlYXRlOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHRoaXMuX3N1cGVyKCk7CiAgICAgICAgICAgIHRoaXMuX3Jlc2V0RmluaXNoZWREZWZlcnJlZHMoKTsKICAgICAgICAgICAgaWYgKCEkLnN1cHBvcnQuZmlsZUlucHV0KSB7CiAgICAgICAgICAgICAgICB0aGlzLl9kaXNhYmxlRmlsZUlucHV0QnV0dG9uKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9LAoKICAgICAgICBlbmFibGU6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdmFyIHdhc0Rpc2FibGVkID0gZmFsc2U7CiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGlzYWJsZWQpIHsKICAgICAgICAgICAgICAgIHdhc0Rpc2FibGVkID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0aGlzLl9zdXBlcigpOwogICAgICAgICAgICBpZiAod2FzRGlzYWJsZWQpIHsKICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5maW5kKCdpbnB1dCwgYnV0dG9uJykucHJvcCgnZGlzYWJsZWQnLCBmYWxzZSk7CiAgICAgICAgICAgICAgICB0aGlzLl9lbmFibGVGaWxlSW5wdXRCdXR0b24oKTsKICAgICAgICAgICAgfQogICAgICAgIH0sCgogICAgICAgIGRpc2FibGU6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuZGlzYWJsZWQpIHsKICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5maW5kKCdpbnB1dCwgYnV0dG9uJykucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTsKICAgICAgICAgICAgICAgIHRoaXMuX2Rpc2FibGVGaWxlSW5wdXRCdXR0b24oKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0aGlzLl9zdXBlcigpOwogICAgICAgIH0KCiAgICB9KTsKCn0pKTsK]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jquery.fileupload-validate.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogalF1ZXJ5IEZpbGUgVXBsb2FkIFZhbGlkYXRpb24gUGx1Z2luCiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9ibHVlaW1wL2pRdWVyeS1GaWxlLVVwbG9hZAogKgogKiBDb3B5cmlnaHQgMjAxMywgU2ViYXN0aWFuIFRzY2hhbgogKiBodHRwczovL2JsdWVpbXAubmV0CiAqCiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZToKICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQKICovCgovKiBnbG9iYWwgZGVmaW5lLCByZXF1aXJlLCB3aW5kb3cgKi8KCjsoZnVuY3Rpb24gKGZhY3RvcnkpIHsKICAgICd1c2Ugc3RyaWN0JzsKICAgIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHsKICAgICAgICAvLyBSZWdpc3RlciBhcyBhbiBhbm9ueW1vdXMgQU1EIG1vZHVsZToKICAgICAgICBkZWZpbmUoWwogICAgICAgICAgICAnanF1ZXJ5JywKICAgICAgICAgICAgJy4vanF1ZXJ5LmZpbGV1cGxvYWQtcHJvY2VzcycKICAgICAgICBdLCBmYWN0b3J5KTsKICAgIH0gZWxzZSBpZiAodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKSB7CiAgICAgICAgLy8gTm9kZS9Db21tb25KUzoKICAgICAgICBmYWN0b3J5KAogICAgICAgICAgICByZXF1aXJlKCdqcXVlcnknKSwKICAgICAgICAgICAgcmVxdWlyZSgnLi9qcXVlcnkuZmlsZXVwbG9hZC1wcm9jZXNzJykKICAgICAgICApOwogICAgfSBlbHNlIHsKICAgICAgICAvLyBCcm93c2VyIGdsb2JhbHM6CiAgICAgICAgZmFjdG9yeSgKICAgICAgICAgICAgd2luZG93LmpRdWVyeQogICAgICAgICk7CiAgICB9Cn0oZnVuY3Rpb24gKCQpIHsKICAgICd1c2Ugc3RyaWN0JzsKCiAgICAvLyBBcHBlbmQgdG8gdGhlIGRlZmF1bHQgcHJvY2Vzc1F1ZXVlOgogICAgJC5ibHVlaW1wLmZpbGV1cGxvYWQucHJvdG90eXBlLm9wdGlvbnMucHJvY2Vzc1F1ZXVlLnB1c2goCiAgICAgICAgewogICAgICAgICAgICBhY3Rpb246ICd2YWxpZGF0ZScsCiAgICAgICAgICAgIC8vIEFsd2F5cyB0cmlnZ2VyIHRoaXMgYWN0aW9uLAogICAgICAgICAgICAvLyBldmVuIGlmIHRoZSBwcmV2aW91cyBhY3Rpb24gd2FzIHJlamVjdGVkOgogICAgICAgICAgICBhbHdheXM6IHRydWUsCiAgICAgICAgICAgIC8vIE9wdGlvbnMgdGFrZW4gZnJvbSB0aGUgZ2xvYmFsIG9wdGlvbnMgbWFwOgogICAgICAgICAgICBhY2NlcHRGaWxlVHlwZXM6ICdAJywKICAgICAgICAgICAgbWF4RmlsZVNpemU6ICdAJywKICAgICAgICAgICAgbWluRmlsZVNpemU6ICdAJywKICAgICAgICAgICAgbWF4TnVtYmVyT2ZGaWxlczogJ0AnLAogICAgICAgICAgICBkaXNhYmxlZDogJ0BkaXNhYmxlVmFsaWRhdGlvbicKICAgICAgICB9CiAgICApOwoKICAgIC8vIFRoZSBGaWxlIFVwbG9hZCBWYWxpZGF0aW9uIHBsdWdpbiBleHRlbmRzIHRoZSBmaWxldXBsb2FkIHdpZGdldAogICAgLy8gd2l0aCBmaWxlIHZhbGlkYXRpb24gZnVuY3Rpb25hbGl0eToKICAgICQud2lkZ2V0KCdibHVlaW1wLmZpbGV1cGxvYWQnLCAkLmJsdWVpbXAuZmlsZXVwbG9hZCwgewoKICAgICAgICBvcHRpb25zOiB7CiAgICAgICAgICAgIC8qCiAgICAgICAgICAgIC8vIFRoZSByZWd1bGFyIGV4cHJlc3Npb24gZm9yIGFsbG93ZWQgZmlsZSB0eXBlcywgbWF0Y2hlcwogICAgICAgICAgICAvLyBhZ2FpbnN0IGVpdGhlciBmaWxlIHR5cGUgb3IgZmlsZSBuYW1lOgogICAgICAgICAgICBhY2NlcHRGaWxlVHlwZXM6IC8oXC58XC8pKGdpZnxqcGU/Z3xwbmcpJC9pLAogICAgICAgICAgICAvLyBUaGUgbWF4aW11bSBhbGxvd2VkIGZpbGUgc2l6ZSBpbiBieXRlczoKICAgICAgICAgICAgbWF4RmlsZVNpemU6IDEwMDAwMDAwLCAvLyAxMCBNQgogICAgICAgICAgICAvLyBUaGUgbWluaW11bSBhbGxvd2VkIGZpbGUgc2l6ZSBpbiBieXRlczoKICAgICAgICAgICAgbWluRmlsZVNpemU6IHVuZGVmaW5lZCwgLy8gTm8gbWluaW1hbCBmaWxlIHNpemUKICAgICAgICAgICAgLy8gVGhlIGxpbWl0IG9mIGZpbGVzIHRvIGJlIHVwbG9hZGVkOgogICAgICAgICAgICBtYXhOdW1iZXJPZkZpbGVzOiAxMCwKICAgICAgICAgICAgKi8KCiAgICAgICAgICAgIC8vIEZ1bmN0aW9uIHJldHVybmluZyB0aGUgY3VycmVudCBudW1iZXIgb2YgZmlsZXMsCiAgICAgICAgICAgIC8vIGhhcyB0byBiZSBvdmVycmlkZW4gZm9yIG1heE51bWJlck9mRmlsZXMgdmFsaWRhdGlvbjoKICAgICAgICAgICAgZ2V0TnVtYmVyT2ZGaWxlczogJC5ub29wLAoKICAgICAgICAgICAgLy8gRXJyb3IgYW5kIGluZm8gbWVzc2FnZXM6CiAgICAgICAgICAgIG1lc3NhZ2VzOiB7CiAgICAgICAgICAgICAgICBtYXhOdW1iZXJPZkZpbGVzOiAnTWF4aW11bSBudW1iZXIgb2YgZmlsZXMgZXhjZWVkZWQnLAogICAgICAgICAgICAgICAgYWNjZXB0RmlsZVR5cGVzOiAnRmlsZSB0eXBlIG5vdCBhbGxvd2VkJywKICAgICAgICAgICAgICAgIG1heEZpbGVTaXplOiAnRmlsZSBpcyB0b28gbGFyZ2UnLAogICAgICAgICAgICAgICAgbWluRmlsZVNpemU6ICdGaWxlIGlzIHRvbyBzbWFsbCcKICAgICAgICAgICAgfQogICAgICAgIH0sCgogICAgICAgIHByb2Nlc3NBY3Rpb25zOiB7CgogICAgICAgICAgICB2YWxpZGF0ZTogZnVuY3Rpb24gKGRhdGEsIG9wdGlvbnMpIHsKICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmRpc2FibGVkKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgZGZkID0gJC5EZWZlcnJlZCgpLAogICAgICAgICAgICAgICAgICAgIHNldHRpbmdzID0gdGhpcy5vcHRpb25zLAogICAgICAgICAgICAgICAgICAgIGZpbGUgPSBkYXRhLmZpbGVzW2RhdGEuaW5kZXhdLAogICAgICAgICAgICAgICAgICAgIGZpbGVTaXplOwogICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMubWluRmlsZVNpemUgfHwgb3B0aW9ucy5tYXhGaWxlU2l6ZSkgewogICAgICAgICAgICAgICAgICAgIGZpbGVTaXplID0gZmlsZS5zaXplOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCQudHlwZShvcHRpb25zLm1heE51bWJlck9mRmlsZXMpID09PSAnbnVtYmVyJyAmJgogICAgICAgICAgICAgICAgICAgICAgICAoc2V0dGluZ3MuZ2V0TnVtYmVyT2ZGaWxlcygpIHx8IDApICsgZGF0YS5maWxlcy5sZW5ndGggPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5tYXhOdW1iZXJPZkZpbGVzKSB7CiAgICAgICAgICAgICAgICAgICAgZmlsZS5lcnJvciA9IHNldHRpbmdzLmkxOG4oJ21heE51bWJlck9mRmlsZXMnKTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy5hY2NlcHRGaWxlVHlwZXMgJiYKICAgICAgICAgICAgICAgICAgICAgICAgIShvcHRpb25zLmFjY2VwdEZpbGVUeXBlcy50ZXN0KGZpbGUudHlwZSkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5hY2NlcHRGaWxlVHlwZXMudGVzdChmaWxlLm5hbWUpKSkgewogICAgICAgICAgICAgICAgICAgIGZpbGUuZXJyb3IgPSBzZXR0aW5ncy5pMThuKCdhY2NlcHRGaWxlVHlwZXMnKTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZmlsZVNpemUgPiBvcHRpb25zLm1heEZpbGVTaXplKSB7CiAgICAgICAgICAgICAgICAgICAgZmlsZS5lcnJvciA9IHNldHRpbmdzLmkxOG4oJ21heEZpbGVTaXplJyk7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCQudHlwZShmaWxlU2l6ZSkgPT09ICdudW1iZXInICYmCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVTaXplIDwgb3B0aW9ucy5taW5GaWxlU2l6ZSkgewogICAgICAgICAgICAgICAgICAgIGZpbGUuZXJyb3IgPSBzZXR0aW5ncy5pMThuKCdtaW5GaWxlU2l6ZScpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBkZWxldGUgZmlsZS5lcnJvcjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChmaWxlLmVycm9yIHx8IGRhdGEuZmlsZXMuZXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICBkYXRhLmZpbGVzLmVycm9yID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICBkZmQucmVqZWN0V2l0aCh0aGlzLCBbZGF0YV0pOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBkZmQucmVzb2x2ZVdpdGgodGhpcywgW2RhdGFdKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBkZmQucHJvbWlzZSgpOwogICAgICAgICAgICB9CgogICAgICAgIH0KCiAgICB9KTsKCn0pKTsK]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jquery.fileupload-video.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogalF1ZXJ5IEZpbGUgVXBsb2FkIFZpZGVvIFByZXZpZXcgUGx1Z2luCiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9ibHVlaW1wL2pRdWVyeS1GaWxlLVVwbG9hZAogKgogKiBDb3B5cmlnaHQgMjAxMywgU2ViYXN0aWFuIFRzY2hhbgogKiBodHRwczovL2JsdWVpbXAubmV0CiAqCiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZToKICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQKICovCgovKiBqc2hpbnQgbm9tZW46ZmFsc2UgKi8KLyogZ2xvYmFsIGRlZmluZSwgcmVxdWlyZSwgd2luZG93LCBkb2N1bWVudCAqLwoKOyhmdW5jdGlvbiAoZmFjdG9yeSkgewogICAgJ3VzZSBzdHJpY3QnOwogICAgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkgewogICAgICAgIC8vIFJlZ2lzdGVyIGFzIGFuIGFub255bW91cyBBTUQgbW9kdWxlOgogICAgICAgIGRlZmluZShbCiAgICAgICAgICAgICdqcXVlcnknLAogICAgICAgICAgICAnbG9hZC1pbWFnZScsCiAgICAgICAgICAgICcuL2pxdWVyeS5maWxldXBsb2FkLXByb2Nlc3MnCiAgICAgICAgXSwgZmFjdG9yeSk7CiAgICB9IGVsc2UgaWYgKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JykgewogICAgICAgIC8vIE5vZGUvQ29tbW9uSlM6CiAgICAgICAgZmFjdG9yeSgKICAgICAgICAgICAgcmVxdWlyZSgnanF1ZXJ5JyksCiAgICAgICAgICAgIHJlcXVpcmUoJ2JsdWVpbXAtbG9hZC1pbWFnZS9qcy9sb2FkLWltYWdlJyksCiAgICAgICAgICAgIHJlcXVpcmUoJy4vanF1ZXJ5LmZpbGV1cGxvYWQtcHJvY2VzcycpCiAgICAgICAgKTsKICAgIH0gZWxzZSB7CiAgICAgICAgLy8gQnJvd3NlciBnbG9iYWxzOgogICAgICAgIGZhY3RvcnkoCiAgICAgICAgICAgIHdpbmRvdy5qUXVlcnksCiAgICAgICAgICAgIHdpbmRvdy5sb2FkSW1hZ2UKICAgICAgICApOwogICAgfQp9KGZ1bmN0aW9uICgkLCBsb2FkSW1hZ2UpIHsKICAgICd1c2Ugc3RyaWN0JzsKCiAgICAvLyBQcmVwZW5kIHRvIHRoZSBkZWZhdWx0IHByb2Nlc3NRdWV1ZToKICAgICQuYmx1ZWltcC5maWxldXBsb2FkLnByb3RvdHlwZS5vcHRpb25zLnByb2Nlc3NRdWV1ZS51bnNoaWZ0KAogICAgICAgIHsKICAgICAgICAgICAgYWN0aW9uOiAnbG9hZFZpZGVvJywKICAgICAgICAgICAgLy8gVXNlIHRoZSBhY3Rpb24gYXMgcHJlZml4IGZvciB0aGUgIkAiIG9wdGlvbnM6CiAgICAgICAgICAgIHByZWZpeDogdHJ1ZSwKICAgICAgICAgICAgZmlsZVR5cGVzOiAnQCcsCiAgICAgICAgICAgIG1heEZpbGVTaXplOiAnQCcsCiAgICAgICAgICAgIGRpc2FibGVkOiAnQGRpc2FibGVWaWRlb1ByZXZpZXcnCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIGFjdGlvbjogJ3NldFZpZGVvJywKICAgICAgICAgICAgbmFtZTogJ0B2aWRlb1ByZXZpZXdOYW1lJywKICAgICAgICAgICAgZGlzYWJsZWQ6ICdAZGlzYWJsZVZpZGVvUHJldmlldycKICAgICAgICB9CiAgICApOwoKICAgIC8vIFRoZSBGaWxlIFVwbG9hZCBWaWRlbyBQcmV2aWV3IHBsdWdpbiBleHRlbmRzIHRoZSBmaWxldXBsb2FkIHdpZGdldAogICAgLy8gd2l0aCB2aWRlbyBwcmV2aWV3IGZ1bmN0aW9uYWxpdHk6CiAgICAkLndpZGdldCgnYmx1ZWltcC5maWxldXBsb2FkJywgJC5ibHVlaW1wLmZpbGV1cGxvYWQsIHsKCiAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICAvLyBUaGUgcmVndWxhciBleHByZXNzaW9uIGZvciB0aGUgdHlwZXMgb2YgdmlkZW8gZmlsZXMgdG8gbG9hZCwKICAgICAgICAgICAgLy8gbWF0Y2hlZCBhZ2FpbnN0IHRoZSBmaWxlIHR5cGU6CiAgICAgICAgICAgIGxvYWRWaWRlb0ZpbGVUeXBlczogL152aWRlb1wvLiokLwogICAgICAgIH0sCgogICAgICAgIF92aWRlb0VsZW1lbnQ6IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3ZpZGVvJyksCgogICAgICAgIHByb2Nlc3NBY3Rpb25zOiB7CgogICAgICAgICAgICAvLyBMb2FkcyB0aGUgdmlkZW8gZmlsZSBnaXZlbiB2aWEgZGF0YS5maWxlcyBhbmQgZGF0YS5pbmRleAogICAgICAgICAgICAvLyBhcyB2aWRlbyBlbGVtZW50IGlmIHRoZSBicm93c2VyIHN1cHBvcnRzIHBsYXlpbmcgaXQuCiAgICAgICAgICAgIC8vIEFjY2VwdHMgdGhlIG9wdGlvbnMgZmlsZVR5cGVzIChyZWd1bGFyIGV4cHJlc3Npb24pCiAgICAgICAgICAgIC8vIGFuZCBtYXhGaWxlU2l6ZSAoaW50ZWdlcikgdG8gbGltaXQgdGhlIGZpbGVzIHRvIGxvYWQ6CiAgICAgICAgICAgIGxvYWRWaWRlbzogZnVuY3Rpb24gKGRhdGEsIG9wdGlvbnMpIHsKICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmRpc2FibGVkKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgZmlsZSA9IGRhdGEuZmlsZXNbZGF0YS5pbmRleF0sCiAgICAgICAgICAgICAgICAgICAgdXJsLAogICAgICAgICAgICAgICAgICAgIHZpZGVvOwogICAgICAgICAgICAgICAgaWYgKHRoaXMuX3ZpZGVvRWxlbWVudC5jYW5QbGF5VHlwZSAmJgogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl92aWRlb0VsZW1lbnQuY2FuUGxheVR5cGUoZmlsZS50eXBlKSAmJgogICAgICAgICAgICAgICAgICAgICAgICAoJC50eXBlKG9wdGlvbnMubWF4RmlsZVNpemUpICE9PSAnbnVtYmVyJyB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5zaXplIDw9IG9wdGlvbnMubWF4RmlsZVNpemUpICYmCiAgICAgICAgICAgICAgICAgICAgICAgICghb3B0aW9ucy5maWxlVHlwZXMgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuZmlsZVR5cGVzLnRlc3QoZmlsZS50eXBlKSkpIHsKICAgICAgICAgICAgICAgICAgICB1cmwgPSBsb2FkSW1hZ2UuY3JlYXRlT2JqZWN0VVJMKGZpbGUpOwogICAgICAgICAgICAgICAgICAgIGlmICh1cmwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW8gPSB0aGlzLl92aWRlb0VsZW1lbnQuY2xvbmVOb2RlKGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW8uc3JjID0gdXJsOwogICAgICAgICAgICAgICAgICAgICAgICB2aWRlby5jb250cm9scyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEudmlkZW8gPSB2aWRlbzsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGRhdGE7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAvLyBTZXRzIHRoZSB2aWRlbyBlbGVtZW50IGFzIGEgcHJvcGVydHkgb2YgdGhlIGZpbGUgb2JqZWN0OgogICAgICAgICAgICBzZXRWaWRlbzogZnVuY3Rpb24gKGRhdGEsIG9wdGlvbnMpIHsKICAgICAgICAgICAgICAgIGlmIChkYXRhLnZpZGVvICYmICFvcHRpb25zLmRpc2FibGVkKSB7CiAgICAgICAgICAgICAgICAgICAgZGF0YS5maWxlc1tkYXRhLmluZGV4XVtvcHRpb25zLm5hbWUgfHwgJ3ByZXZpZXcnXSA9IGRhdGEudmlkZW87CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YTsKICAgICAgICAgICAgfQoKICAgICAgICB9CgogICAgfSk7Cgp9KSk7Cg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jquery.fileupload.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogalF1ZXJ5IEZpbGUgVXBsb2FkIFBsdWdpbgogKiBodHRwczovL2dpdGh1Yi5jb20vYmx1ZWltcC9qUXVlcnktRmlsZS1VcGxvYWQKICoKICogQ29weXJpZ2h0IDIwMTAsIFNlYmFzdGlhbiBUc2NoYW4KICogaHR0cHM6Ly9ibHVlaW1wLm5ldAogKgogKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2U6CiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUCiAqLwoKLyoganNoaW50IG5vbWVuOmZhbHNlICovCi8qIGdsb2JhbCBkZWZpbmUsIHJlcXVpcmUsIHdpbmRvdywgZG9jdW1lbnQsIGxvY2F0aW9uLCBCbG9iLCBGb3JtRGF0YSAqLwoKOyhmdW5jdGlvbiAoZmFjdG9yeSkgewogICAgJ3VzZSBzdHJpY3QnOwogICAgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkgewogICAgICAgIC8vIFJlZ2lzdGVyIGFzIGFuIGFub255bW91cyBBTUQgbW9kdWxlOgogICAgICAgIGRlZmluZShbCiAgICAgICAgICAgICdqcXVlcnknLAogICAgICAgICAgICAnanF1ZXJ5LXVpL3VpL3dpZGdldCcKICAgICAgICBdLCBmYWN0b3J5KTsKICAgIH0gZWxzZSBpZiAodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKSB7CiAgICAgICAgLy8gTm9kZS9Db21tb25KUzoKICAgICAgICBmYWN0b3J5KAogICAgICAgICAgICByZXF1aXJlKCdqcXVlcnknKSwKICAgICAgICAgICAgcmVxdWlyZSgnLi92ZW5kb3IvanF1ZXJ5LnVpLndpZGdldCcpCiAgICAgICAgKTsKICAgIH0gZWxzZSB7CiAgICAgICAgLy8gQnJvd3NlciBnbG9iYWxzOgogICAgICAgIGZhY3Rvcnkod2luZG93LmpRdWVyeSk7CiAgICB9Cn0oZnVuY3Rpb24gKCQpIHsKICAgICd1c2Ugc3RyaWN0JzsKCiAgICAvLyBEZXRlY3QgZmlsZSBpbnB1dCBzdXBwb3J0LCBiYXNlZCBvbgogICAgLy8gaHR0cDovL3ZpbGphbWlzLmNvbS9ibG9nLzIwMTIvZmlsZS11cGxvYWQtc3VwcG9ydC1vbi1tb2JpbGUvCiAgICAkLnN1cHBvcnQuZmlsZUlucHV0ID0gIShuZXcgUmVnRXhwKAogICAgICAgIC8vIEhhbmRsZSBkZXZpY2VzIHdoaWNoIGdpdmUgZmFsc2UgcG9zaXRpdmVzIGZvciB0aGUgZmVhdHVyZSBkZXRlY3Rpb246CiAgICAgICAgJyhBbmRyb2lkICgxXFwuWzAxNTZdfDJcXC5bMDFdKSknICsKICAgICAgICAgICAgJ3woV2luZG93cyBQaG9uZSAoT1MgN3w4XFwuMCkpfChYQkxXUCl8KFp1bmVXUCl8KFdQRGVza3RvcCknICsKICAgICAgICAgICAgJ3wodyhlYik/T1NCcm93c2VyKXwod2ViT1MpJyArCiAgICAgICAgICAgICd8KEtpbmRsZS8oMVxcLjB8MlxcLlswNV18M1xcLjApKScKICAgICkudGVzdCh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCkgfHwKICAgICAgICAvLyBGZWF0dXJlIGRldGVjdGlvbiBmb3IgYWxsIG90aGVyIGRldmljZXM6CiAgICAgICAgJCgnPGlucHV0IHR5cGU9ImZpbGUiLz4nKS5wcm9wKCdkaXNhYmxlZCcpKTsKCiAgICAvLyBUaGUgRmlsZVJlYWRlciBBUEkgaXMgbm90IGFjdHVhbGx5IHVzZWQsIGJ1dCB3b3JrcyBhcyBmZWF0dXJlIGRldGVjdGlvbiwKICAgIC8vIGFzIHNvbWUgU2FmYXJpIHZlcnNpb25zICg1Pykgc3VwcG9ydCBYSFIgZmlsZSB1cGxvYWRzIHZpYSB0aGUgRm9ybURhdGEgQVBJLAogICAgLy8gYnV0IG5vdCBub24tbXVsdGlwYXJ0IFhIUiBmaWxlIHVwbG9hZHMuCiAgICAvLyB3aW5kb3cuWE1MSHR0cFJlcXVlc3RVcGxvYWQgaXMgbm90IGF2YWlsYWJsZSBvbiBJRTEwLCBzbyB3ZSBjaGVjayBmb3IKICAgIC8vIHdpbmRvdy5Qcm9ncmVzc0V2ZW50IGluc3RlYWQgdG8gZGV0ZWN0IFhIUjIgZmlsZSB1cGxvYWQgY2FwYWJpbGl0eToKICAgICQuc3VwcG9ydC54aHJGaWxlVXBsb2FkID0gISEod2luZG93LlByb2dyZXNzRXZlbnQgJiYgd2luZG93LkZpbGVSZWFkZXIpOwogICAgJC5zdXBwb3J0LnhockZvcm1EYXRhRmlsZVVwbG9hZCA9ICEhd2luZG93LkZvcm1EYXRhOwoKICAgIC8vIERldGVjdCBzdXBwb3J0IGZvciBCbG9iIHNsaWNpbmcgKHJlcXVpcmVkIGZvciBjaHVua2VkIHVwbG9hZHMpOgogICAgJC5zdXBwb3J0LmJsb2JTbGljZSA9IHdpbmRvdy5CbG9iICYmIChCbG9iLnByb3RvdHlwZS5zbGljZSB8fAogICAgICAgIEJsb2IucHJvdG90eXBlLndlYmtpdFNsaWNlIHx8IEJsb2IucHJvdG90eXBlLm1velNsaWNlKTsKCiAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gY3JlYXRlIGRyYWcgaGFuZGxlcnMgZm9yIGRyYWdvdmVyL2RyYWdlbnRlci9kcmFnbGVhdmU6CiAgICBmdW5jdGlvbiBnZXREcmFnSGFuZGxlcih0eXBlKSB7CiAgICAgICAgdmFyIGlzRHJhZ092ZXIgPSB0eXBlID09PSAnZHJhZ292ZXInOwogICAgICAgIHJldHVybiBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICBlLmRhdGFUcmFuc2ZlciA9IGUub3JpZ2luYWxFdmVudCAmJiBlLm9yaWdpbmFsRXZlbnQuZGF0YVRyYW5zZmVyOwogICAgICAgICAgICB2YXIgZGF0YVRyYW5zZmVyID0gZS5kYXRhVHJhbnNmZXI7CiAgICAgICAgICAgIGlmIChkYXRhVHJhbnNmZXIgJiYgJC5pbkFycmF5KCdGaWxlcycsIGRhdGFUcmFuc2Zlci50eXBlcykgIT09IC0xICYmCiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdHJpZ2dlcigKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgJC5FdmVudCh0eXBlLCB7ZGVsZWdhdGVkRXZlbnQ6IGV9KQogICAgICAgICAgICAgICAgICAgICkgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICBpZiAoaXNEcmFnT3ZlcikgewogICAgICAgICAgICAgICAgICAgIGRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gJ2NvcHknOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgIH0KCiAgICAvLyBUaGUgZmlsZXVwbG9hZCB3aWRnZXQgbGlzdGVucyBmb3IgY2hhbmdlIGV2ZW50cyBvbiBmaWxlIGlucHV0IGZpZWxkcyBkZWZpbmVkCiAgICAvLyB2aWEgZmlsZUlucHV0IHNldHRpbmcgYW5kIHBhc3RlIG9yIGRyb3AgZXZlbnRzIG9mIHRoZSBnaXZlbiBkcm9wWm9uZS4KICAgIC8vIEluIGFkZGl0aW9uIHRvIHRoZSBkZWZhdWx0IGpRdWVyeSBXaWRnZXQgbWV0aG9kcywgdGhlIGZpbGV1cGxvYWQgd2lkZ2V0CiAgICAvLyBleHBvc2VzIHRoZSAiYWRkIiBhbmQgInNlbmQiIG1ldGhvZHMsIHRvIGFkZCBvciBkaXJlY3RseSBzZW5kIGZpbGVzIHVzaW5nCiAgICAvLyB0aGUgZmlsZXVwbG9hZCBBUEkuCiAgICAvLyBCeSBkZWZhdWx0LCBmaWxlcyBhZGRlZCB2aWEgZmlsZSBpbnB1dCBzZWxlY3Rpb24sIHBhc3RlLCBkcmFnICYgZHJvcCBvcgogICAgLy8gImFkZCIgbWV0aG9kIGFyZSB1cGxvYWRlZCBpbW1lZGlhdGVseSwgYnV0IGl0IGlzIHBvc3NpYmxlIHRvIG92ZXJyaWRlCiAgICAvLyB0aGUgImFkZCIgY2FsbGJhY2sgb3B0aW9uIHRvIHF1ZXVlIGZpbGUgdXBsb2Fkcy4KICAgICQud2lkZ2V0KCdibHVlaW1wLmZpbGV1cGxvYWQnLCB7CgogICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgICAgLy8gVGhlIGRyb3AgdGFyZ2V0IGVsZW1lbnQocyksIGJ5IHRoZSBkZWZhdWx0IHRoZSBjb21wbGV0ZSBkb2N1bWVudC4KICAgICAgICAgICAgLy8gU2V0IHRvIG51bGwgdG8gZGlzYWJsZSBkcmFnICYgZHJvcCBzdXBwb3J0OgogICAgICAgICAgICBkcm9wWm9uZTogJChkb2N1bWVudCksCiAgICAgICAgICAgIC8vIFRoZSBwYXN0ZSB0YXJnZXQgZWxlbWVudChzKSwgYnkgdGhlIGRlZmF1bHQgdW5kZWZpbmVkLgogICAgICAgICAgICAvLyBTZXQgdG8gYSBET00gbm9kZSBvciBqUXVlcnkgb2JqZWN0IHRvIGVuYWJsZSBmaWxlIHBhc3Rpbmc6CiAgICAgICAgICAgIHBhc3RlWm9uZTogdW5kZWZpbmVkLAogICAgICAgICAgICAvLyBUaGUgZmlsZSBpbnB1dCBmaWVsZChzKSwgdGhhdCBhcmUgbGlzdGVuZWQgdG8gZm9yIGNoYW5nZSBldmVudHMuCiAgICAgICAgICAgIC8vIElmIHVuZGVmaW5lZCwgaXQgaXMgc2V0IHRvIHRoZSBmaWxlIGlucHV0IGZpZWxkcyBpbnNpZGUKICAgICAgICAgICAgLy8gb2YgdGhlIHdpZGdldCBlbGVtZW50IG9uIHBsdWdpbiBpbml0aWFsaXphdGlvbi4KICAgICAgICAgICAgLy8gU2V0IHRvIG51bGwgdG8gZGlzYWJsZSB0aGUgY2hhbmdlIGxpc3RlbmVyLgogICAgICAgICAgICBmaWxlSW5wdXQ6IHVuZGVmaW5lZCwKICAgICAgICAgICAgLy8gQnkgZGVmYXVsdCwgdGhlIGZpbGUgaW5wdXQgZmllbGQgaXMgcmVwbGFjZWQgd2l0aCBhIGNsb25lIGFmdGVyCiAgICAgICAgICAgIC8vIGVhY2ggaW5wdXQgZmllbGQgY2hhbmdlIGV2ZW50LiBUaGlzIGlzIHJlcXVpcmVkIGZvciBpZnJhbWUgdHJhbnNwb3J0CiAgICAgICAgICAgIC8vIHF1ZXVlcyBhbmQgYWxsb3dzIGNoYW5nZSBldmVudHMgdG8gYmUgZmlyZWQgZm9yIHRoZSBzYW1lIGZpbGUKICAgICAgICAgICAgLy8gc2VsZWN0aW9uLCBidXQgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGZvbGxvd2luZyBvcHRpb24gdG8gZmFsc2U6CiAgICAgICAgICAgIHJlcGxhY2VGaWxlSW5wdXQ6IHRydWUsCiAgICAgICAgICAgIC8vIFRoZSBwYXJhbWV0ZXIgbmFtZSBmb3IgdGhlIGZpbGUgZm9ybSBkYXRhICh0aGUgcmVxdWVzdCBhcmd1bWVudCBuYW1lKS4KICAgICAgICAgICAgLy8gSWYgdW5kZWZpbmVkIG9yIGVtcHR5LCB0aGUgbmFtZSBwcm9wZXJ0eSBvZiB0aGUgZmlsZSBpbnB1dCBmaWVsZCBpcwogICAgICAgICAgICAvLyB1c2VkLCBvciAiZmlsZXNbXSIgaWYgdGhlIGZpbGUgaW5wdXQgbmFtZSBwcm9wZXJ0eSBpcyBhbHNvIGVtcHR5LAogICAgICAgICAgICAvLyBjYW4gYmUgYSBzdHJpbmcgb3IgYW4gYXJyYXkgb2Ygc3RyaW5nczoKICAgICAgICAgICAgcGFyYW1OYW1lOiB1bmRlZmluZWQsCiAgICAgICAgICAgIC8vIEJ5IGRlZmF1bHQsIGVhY2ggZmlsZSBvZiBhIHNlbGVjdGlvbiBpcyB1cGxvYWRlZCB1c2luZyBhbiBpbmRpdmlkdWFsCiAgICAgICAgICAgIC8vIHJlcXVlc3QgZm9yIFhIUiB0eXBlIHVwbG9hZHMuIFNldCB0byBmYWxzZSB0byB1cGxvYWQgZmlsZQogICAgICAgICAgICAvLyBzZWxlY3Rpb25zIGluIG9uZSByZXF1ZXN0IGVhY2g6CiAgICAgICAgICAgIHNpbmdsZUZpbGVVcGxvYWRzOiB0cnVlLAogICAgICAgICAgICAvLyBUbyBsaW1pdCB0aGUgbnVtYmVyIG9mIGZpbGVzIHVwbG9hZGVkIHdpdGggb25lIFhIUiByZXF1ZXN0LAogICAgICAgICAgICAvLyBzZXQgdGhlIGZvbGxvd2luZyBvcHRpb24gdG8gYW4gaW50ZWdlciBncmVhdGVyIHRoYW4gMDoKICAgICAgICAgICAgbGltaXRNdWx0aUZpbGVVcGxvYWRzOiB1bmRlZmluZWQsCiAgICAgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgb3B0aW9uIGxpbWl0cyB0aGUgbnVtYmVyIG9mIGZpbGVzIHVwbG9hZGVkIHdpdGggb25lCiAgICAgICAgICAgIC8vIFhIUiByZXF1ZXN0IHRvIGtlZXAgdGhlIHJlcXVlc3Qgc2l6ZSB1bmRlciBvciBlcXVhbCB0byB0aGUgZGVmaW5lZAogICAgICAgICAgICAvLyBsaW1pdCBpbiBieXRlczoKICAgICAgICAgICAgbGltaXRNdWx0aUZpbGVVcGxvYWRTaXplOiB1bmRlZmluZWQsCiAgICAgICAgICAgIC8vIE11bHRpcGFydCBmaWxlIHVwbG9hZHMgYWRkIGEgbnVtYmVyIG9mIGJ5dGVzIHRvIGVhY2ggdXBsb2FkZWQgZmlsZSwKICAgICAgICAgICAgLy8gdGhlcmVmb3JlIHRoZSBmb2xsb3dpbmcgb3B0aW9uIGFkZHMgYW4gb3ZlcmhlYWQgZm9yIGVhY2ggZmlsZSB1c2VkCiAgICAgICAgICAgIC8vIGluIHRoZSBsaW1pdE11bHRpRmlsZVVwbG9hZFNpemUgY29uZmlndXJhdGlvbjoKICAgICAgICAgICAgbGltaXRNdWx0aUZpbGVVcGxvYWRTaXplT3ZlcmhlYWQ6IDUxMiwKICAgICAgICAgICAgLy8gU2V0IHRoZSBmb2xsb3dpbmcgb3B0aW9uIHRvIHRydWUgdG8gaXNzdWUgYWxsIGZpbGUgdXBsb2FkIHJlcXVlc3RzCiAgICAgICAgICAgIC8vIGluIGEgc2VxdWVudGlhbCBvcmRlcjoKICAgICAgICAgICAgc2VxdWVudGlhbFVwbG9hZHM6IGZhbHNlLAogICAgICAgICAgICAvLyBUbyBsaW1pdCB0aGUgbnVtYmVyIG9mIGNvbmN1cnJlbnQgdXBsb2FkcywKICAgICAgICAgICAgLy8gc2V0IHRoZSBmb2xsb3dpbmcgb3B0aW9uIHRvIGFuIGludGVnZXIgZ3JlYXRlciB0aGFuIDA6CiAgICAgICAgICAgIGxpbWl0Q29uY3VycmVudFVwbG9hZHM6IHVuZGVmaW5lZCwKICAgICAgICAgICAgLy8gU2V0IHRoZSBmb2xsb3dpbmcgb3B0aW9uIHRvIHRydWUgdG8gZm9yY2UgaWZyYW1lIHRyYW5zcG9ydCB1cGxvYWRzOgogICAgICAgICAgICBmb3JjZUlmcmFtZVRyYW5zcG9ydDogZmFsc2UsCiAgICAgICAgICAgIC8vIFNldCB0aGUgZm9sbG93aW5nIG9wdGlvbiB0byB0aGUgbG9jYXRpb24gb2YgYSByZWRpcmVjdCB1cmwgb24gdGhlCiAgICAgICAgICAgIC8vIG9yaWdpbiBzZXJ2ZXIsIGZvciBjcm9zcy1kb21haW4gaWZyYW1lIHRyYW5zcG9ydCB1cGxvYWRzOgogICAgICAgICAgICByZWRpcmVjdDogdW5kZWZpbmVkLAogICAgICAgICAgICAvLyBUaGUgcGFyYW1ldGVyIG5hbWUgZm9yIHRoZSByZWRpcmVjdCB1cmwsIHNlbnQgYXMgcGFydCBvZiB0aGUgZm9ybQogICAgICAgICAgICAvLyBkYXRhIGFuZCBzZXQgdG8gJ3JlZGlyZWN0JyBpZiB0aGlzIG9wdGlvbiBpcyBlbXB0eToKICAgICAgICAgICAgcmVkaXJlY3RQYXJhbU5hbWU6IHVuZGVmaW5lZCwKICAgICAgICAgICAgLy8gU2V0IHRoZSBmb2xsb3dpbmcgb3B0aW9uIHRvIHRoZSBsb2NhdGlvbiBvZiBhIHBvc3RNZXNzYWdlIHdpbmRvdywKICAgICAgICAgICAgLy8gdG8gZW5hYmxlIHBvc3RNZXNzYWdlIHRyYW5zcG9ydCB1cGxvYWRzOgogICAgICAgICAgICBwb3N0TWVzc2FnZTogdW5kZWZpbmVkLAogICAgICAgICAgICAvLyBCeSBkZWZhdWx0LCBYSFIgZmlsZSB1cGxvYWRzIGFyZSBzZW50IGFzIG11bHRpcGFydC9mb3JtLWRhdGEuCiAgICAgICAgICAgIC8vIFRoZSBpZnJhbWUgdHJhbnNwb3J0IGlzIGFsd2F5cyB1c2luZyBtdWx0aXBhcnQvZm9ybS1kYXRhLgogICAgICAgICAgICAvLyBTZXQgdG8gZmFsc2UgdG8gZW5hYmxlIG5vbi1tdWx0aXBhcnQgWEhSIHVwbG9hZHM6CiAgICAgICAgICAgIG11bHRpcGFydDogdHJ1ZSwKICAgICAgICAgICAgLy8gVG8gdXBsb2FkIGxhcmdlIGZpbGVzIGluIHNtYWxsZXIgY2h1bmtzLCBzZXQgdGhlIGZvbGxvd2luZyBvcHRpb24KICAgICAgICAgICAgLy8gdG8gYSBwcmVmZXJyZWQgbWF4aW11bSBjaHVuayBzaXplLiBJZiBzZXQgdG8gMCwgbnVsbCBvciB1bmRlZmluZWQsCiAgICAgICAgICAgIC8vIG9yIHRoZSBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgdGhlIHJlcXVpcmVkIEJsb2IgQVBJLCBmaWxlcyB3aWxsCiAgICAgICAgICAgIC8vIGJlIHVwbG9hZGVkIGFzIGEgd2hvbGUuCiAgICAgICAgICAgIG1heENodW5rU2l6ZTogdW5kZWZpbmVkLAogICAgICAgICAgICAvLyBXaGVuIGEgbm9uLW11bHRpcGFydCB1cGxvYWQgb3IgYSBjaHVua2VkIG11bHRpcGFydCB1cGxvYWQgaGFzIGJlZW4KICAgICAgICAgICAgLy8gYWJvcnRlZCwgdGhpcyBvcHRpb24gY2FuIGJlIHVzZWQgdG8gcmVzdW1lIHRoZSB1cGxvYWQgYnkgc2V0dGluZwogICAgICAgICAgICAvLyBpdCB0byB0aGUgc2l6ZSBvZiB0aGUgYWxyZWFkeSB1cGxvYWRlZCBieXRlcy4gVGhpcyBvcHRpb24gaXMgbW9zdAogICAgICAgICAgICAvLyB1c2VmdWwgd2hlbiBtb2RpZnlpbmcgdGhlIG9wdGlvbnMgb2JqZWN0IGluc2lkZSBvZiB0aGUgImFkZCIgb3IKICAgICAgICAgICAgLy8gInNlbmQiIGNhbGxiYWNrcywgYXMgdGhlIG9wdGlvbnMgYXJlIGNsb25lZCBmb3IgZWFjaCBmaWxlIHVwbG9hZC4KICAgICAgICAgICAgdXBsb2FkZWRCeXRlczogdW5kZWZpbmVkLAogICAgICAgICAgICAvLyBCeSBkZWZhdWx0LCBmYWlsZWQgKGFib3J0IG9yIGVycm9yKSBmaWxlIHVwbG9hZHMgYXJlIHJlbW92ZWQgZnJvbSB0aGUKICAgICAgICAgICAgLy8gZ2xvYmFsIHByb2dyZXNzIGNhbGN1bGF0aW9uLiBTZXQgdGhlIGZvbGxvd2luZyBvcHRpb24gdG8gZmFsc2UgdG8KICAgICAgICAgICAgLy8gcHJldmVudCByZWNhbGN1bGF0aW5nIHRoZSBnbG9iYWwgcHJvZ3Jlc3MgZGF0YToKICAgICAgICAgICAgcmVjYWxjdWxhdGVQcm9ncmVzczogdHJ1ZSwKICAgICAgICAgICAgLy8gSW50ZXJ2YWwgaW4gbWlsbGlzZWNvbmRzIHRvIGNhbGN1bGF0ZSBhbmQgdHJpZ2dlciBwcm9ncmVzcyBldmVudHM6CiAgICAgICAgICAgIHByb2dyZXNzSW50ZXJ2YWw6IDEwMCwKICAgICAgICAgICAgLy8gSW50ZXJ2YWwgaW4gbWlsbGlzZWNvbmRzIHRvIGNhbGN1bGF0ZSBwcm9ncmVzcyBiaXRyYXRlOgogICAgICAgICAgICBiaXRyYXRlSW50ZXJ2YWw6IDUwMCwKICAgICAgICAgICAgLy8gQnkgZGVmYXVsdCwgdXBsb2FkcyBhcmUgc3RhcnRlZCBhdXRvbWF0aWNhbGx5IHdoZW4gYWRkaW5nIGZpbGVzOgogICAgICAgICAgICBhdXRvVXBsb2FkOiB0cnVlLAoKICAgICAgICAgICAgLy8gRXJyb3IgYW5kIGluZm8gbWVzc2FnZXM6CiAgICAgICAgICAgIG1lc3NhZ2VzOiB7CiAgICAgICAgICAgICAgICB1cGxvYWRlZEJ5dGVzOiAnVXBsb2FkZWQgYnl0ZXMgZXhjZWVkIGZpbGUgc2l6ZScKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIC8vIFRyYW5zbGF0aW9uIGZ1bmN0aW9uLCBnZXRzIHRoZSBtZXNzYWdlIGtleSB0byBiZSB0cmFuc2xhdGVkCiAgICAgICAgICAgIC8vIGFuZCBhbiBvYmplY3Qgd2l0aCBjb250ZXh0IHNwZWNpZmljIGRhdGEgYXMgYXJndW1lbnRzOgogICAgICAgICAgICBpMThuOiBmdW5jdGlvbiAobWVzc2FnZSwgY29udGV4dCkgewogICAgICAgICAgICAgICAgbWVzc2FnZSA9IHRoaXMubWVzc2FnZXNbbWVzc2FnZV0gfHwgbWVzc2FnZS50b1N0cmluZygpOwogICAgICAgICAgICAgICAgaWYgKGNvbnRleHQpIHsKICAgICAgICAgICAgICAgICAgICAkLmVhY2goY29udGV4dCwgZnVuY3Rpb24gKGtleSwgdmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZSgneycgKyBrZXkgKyAnfScsIHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBtZXNzYWdlOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgLy8gQWRkaXRpb25hbCBmb3JtIGRhdGEgdG8gYmUgc2VudCBhbG9uZyB3aXRoIHRoZSBmaWxlIHVwbG9hZHMgY2FuIGJlIHNldAogICAgICAgICAgICAvLyB1c2luZyB0aGlzIG9wdGlvbiwgd2hpY2ggYWNjZXB0cyBhbiBhcnJheSBvZiBvYmplY3RzIHdpdGggbmFtZSBhbmQKICAgICAgICAgICAgLy8gdmFsdWUgcHJvcGVydGllcywgYSBmdW5jdGlvbiByZXR1cm5pbmcgc3VjaCBhbiBhcnJheSwgYSBGb3JtRGF0YQogICAgICAgICAgICAvLyBvYmplY3QgKGZvciBYSFIgZmlsZSB1cGxvYWRzKSwgb3IgYSBzaW1wbGUgb2JqZWN0LgogICAgICAgICAgICAvLyBUaGUgZm9ybSBvZiB0aGUgZmlyc3QgZmlsZUlucHV0IGlzIGdpdmVuIGFzIHBhcmFtZXRlciB0byB0aGUgZnVuY3Rpb246CiAgICAgICAgICAgIGZvcm1EYXRhOiBmdW5jdGlvbiAoZm9ybSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZvcm0uc2VyaWFsaXplQXJyYXkoKTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIC8vIFRoZSBhZGQgY2FsbGJhY2sgaXMgaW52b2tlZCBhcyBzb29uIGFzIGZpbGVzIGFyZSBhZGRlZCB0byB0aGUgZmlsZXVwbG9hZAogICAgICAgICAgICAvLyB3aWRnZXQgKHZpYSBmaWxlIGlucHV0IHNlbGVjdGlvbiwgZHJhZyAmIGRyb3AsIHBhc3RlIG9yIGFkZCBBUEkgY2FsbCkuCiAgICAgICAgICAgIC8vIElmIHRoZSBzaW5nbGVGaWxlVXBsb2FkcyBvcHRpb24gaXMgZW5hYmxlZCwgdGhpcyBjYWxsYmFjayB3aWxsIGJlCiAgICAgICAgICAgIC8vIGNhbGxlZCBvbmNlIGZvciBlYWNoIGZpbGUgaW4gdGhlIHNlbGVjdGlvbiBmb3IgWEhSIGZpbGUgdXBsb2FkcywgZWxzZQogICAgICAgICAgICAvLyBvbmNlIGZvciBlYWNoIGZpbGUgc2VsZWN0aW9uLgogICAgICAgICAgICAvLwogICAgICAgICAgICAvLyBUaGUgdXBsb2FkIHN0YXJ0cyB3aGVuIHRoZSBzdWJtaXQgbWV0aG9kIGlzIGludm9rZWQgb24gdGhlIGRhdGEgcGFyYW1ldGVyLgogICAgICAgICAgICAvLyBUaGUgZGF0YSBvYmplY3QgY29udGFpbnMgYSBmaWxlcyBwcm9wZXJ0eSBob2xkaW5nIHRoZSBhZGRlZCBmaWxlcwogICAgICAgICAgICAvLyBhbmQgYWxsb3dzIHlvdSB0byBvdmVycmlkZSBwbHVnaW4gb3B0aW9ucyBhcyB3ZWxsIGFzIGRlZmluZSBhamF4IHNldHRpbmdzLgogICAgICAgICAgICAvLwogICAgICAgICAgICAvLyBMaXN0ZW5lcnMgZm9yIHRoaXMgY2FsbGJhY2sgY2FuIGFsc28gYmUgYm91bmQgdGhlIGZvbGxvd2luZyB3YXk6CiAgICAgICAgICAgIC8vIC5iaW5kKCdmaWxldXBsb2FkYWRkJywgZnVuYyk7CiAgICAgICAgICAgIC8vCiAgICAgICAgICAgIC8vIGRhdGEuc3VibWl0KCkgcmV0dXJucyBhIFByb21pc2Ugb2JqZWN0IGFuZCBhbGxvd3MgdG8gYXR0YWNoIGFkZGl0aW9uYWwKICAgICAgICAgICAgLy8gaGFuZGxlcnMgdXNpbmcgalF1ZXJ5J3MgRGVmZXJyZWQgY2FsbGJhY2tzOgogICAgICAgICAgICAvLyBkYXRhLnN1Ym1pdCgpLmRvbmUoZnVuYykuZmFpbChmdW5jKS5hbHdheXMoZnVuYyk7CiAgICAgICAgICAgIGFkZDogZnVuY3Rpb24gKGUsIGRhdGEpIHsKICAgICAgICAgICAgICAgIGlmIChlLmlzRGVmYXVsdFByZXZlbnRlZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGRhdGEuYXV0b1VwbG9hZCB8fCAoZGF0YS5hdXRvVXBsb2FkICE9PSBmYWxzZSAmJgogICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmZpbGV1cGxvYWQoJ29wdGlvbicsICdhdXRvVXBsb2FkJykpKSB7CiAgICAgICAgICAgICAgICAgICAgZGF0YS5wcm9jZXNzKCkuZG9uZShmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuc3VibWl0KCk7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAvLyBPdGhlciBjYWxsYmFja3M6CgogICAgICAgICAgICAvLyBDYWxsYmFjayBmb3IgdGhlIHN1Ym1pdCBldmVudCBvZiBlYWNoIGZpbGUgdXBsb2FkOgogICAgICAgICAgICAvLyBzdWJtaXQ6IGZ1bmN0aW9uIChlLCBkYXRhKSB7fSwgLy8gLmJpbmQoJ2ZpbGV1cGxvYWRzdWJtaXQnLCBmdW5jKTsKCiAgICAgICAgICAgIC8vIENhbGxiYWNrIGZvciB0aGUgc3RhcnQgb2YgZWFjaCBmaWxlIHVwbG9hZCByZXF1ZXN0OgogICAgICAgICAgICAvLyBzZW5kOiBmdW5jdGlvbiAoZSwgZGF0YSkge30sIC8vIC5iaW5kKCdmaWxldXBsb2Fkc2VuZCcsIGZ1bmMpOwoKICAgICAgICAgICAgLy8gQ2FsbGJhY2sgZm9yIHN1Y2Nlc3NmdWwgdXBsb2FkczoKICAgICAgICAgICAgLy8gZG9uZTogZnVuY3Rpb24gKGUsIGRhdGEpIHt9LCAvLyAuYmluZCgnZmlsZXVwbG9hZGRvbmUnLCBmdW5jKTsKCiAgICAgICAgICAgIC8vIENhbGxiYWNrIGZvciBmYWlsZWQgKGFib3J0IG9yIGVycm9yKSB1cGxvYWRzOgogICAgICAgICAgICAvLyBmYWlsOiBmdW5jdGlvbiAoZSwgZGF0YSkge30sIC8vIC5iaW5kKCdmaWxldXBsb2FkZmFpbCcsIGZ1bmMpOwoKICAgICAgICAgICAgLy8gQ2FsbGJhY2sgZm9yIGNvbXBsZXRlZCAoc3VjY2VzcywgYWJvcnQgb3IgZXJyb3IpIHJlcXVlc3RzOgogICAgICAgICAgICAvLyBhbHdheXM6IGZ1bmN0aW9uIChlLCBkYXRhKSB7fSwgLy8gLmJpbmQoJ2ZpbGV1cGxvYWRhbHdheXMnLCBmdW5jKTsKCiAgICAgICAgICAgIC8vIENhbGxiYWNrIGZvciB1cGxvYWQgcHJvZ3Jlc3MgZXZlbnRzOgogICAgICAgICAgICAvLyBwcm9ncmVzczogZnVuY3Rpb24gKGUsIGRhdGEpIHt9LCAvLyAuYmluZCgnZmlsZXVwbG9hZHByb2dyZXNzJywgZnVuYyk7CgogICAgICAgICAgICAvLyBDYWxsYmFjayBmb3IgZ2xvYmFsIHVwbG9hZCBwcm9ncmVzcyBldmVudHM6CiAgICAgICAgICAgIC8vIHByb2dyZXNzYWxsOiBmdW5jdGlvbiAoZSwgZGF0YSkge30sIC8vIC5iaW5kKCdmaWxldXBsb2FkcHJvZ3Jlc3NhbGwnLCBmdW5jKTsKCiAgICAgICAgICAgIC8vIENhbGxiYWNrIGZvciB1cGxvYWRzIHN0YXJ0LCBlcXVpdmFsZW50IHRvIHRoZSBnbG9iYWwgYWpheFN0YXJ0IGV2ZW50OgogICAgICAgICAgICAvLyBzdGFydDogZnVuY3Rpb24gKGUpIHt9LCAvLyAuYmluZCgnZmlsZXVwbG9hZHN0YXJ0JywgZnVuYyk7CgogICAgICAgICAgICAvLyBDYWxsYmFjayBmb3IgdXBsb2FkcyBzdG9wLCBlcXVpdmFsZW50IHRvIHRoZSBnbG9iYWwgYWpheFN0b3AgZXZlbnQ6CiAgICAgICAgICAgIC8vIHN0b3A6IGZ1bmN0aW9uIChlKSB7fSwgLy8gLmJpbmQoJ2ZpbGV1cGxvYWRzdG9wJywgZnVuYyk7CgogICAgICAgICAgICAvLyBDYWxsYmFjayBmb3IgY2hhbmdlIGV2ZW50cyBvZiB0aGUgZmlsZUlucHV0KHMpOgogICAgICAgICAgICAvLyBjaGFuZ2U6IGZ1bmN0aW9uIChlLCBkYXRhKSB7fSwgLy8gLmJpbmQoJ2ZpbGV1cGxvYWRjaGFuZ2UnLCBmdW5jKTsKCiAgICAgICAgICAgIC8vIENhbGxiYWNrIGZvciBwYXN0ZSBldmVudHMgdG8gdGhlIHBhc3RlWm9uZShzKToKICAgICAgICAgICAgLy8gcGFzdGU6IGZ1bmN0aW9uIChlLCBkYXRhKSB7fSwgLy8gLmJpbmQoJ2ZpbGV1cGxvYWRwYXN0ZScsIGZ1bmMpOwoKICAgICAgICAgICAgLy8gQ2FsbGJhY2sgZm9yIGRyb3AgZXZlbnRzIG9mIHRoZSBkcm9wWm9uZShzKToKICAgICAgICAgICAgLy8gZHJvcDogZnVuY3Rpb24gKGUsIGRhdGEpIHt9LCAvLyAuYmluZCgnZmlsZXVwbG9hZGRyb3AnLCBmdW5jKTsKCiAgICAgICAgICAgIC8vIENhbGxiYWNrIGZvciBkcmFnb3ZlciBldmVudHMgb2YgdGhlIGRyb3Bab25lKHMpOgogICAgICAgICAgICAvLyBkcmFnb3ZlcjogZnVuY3Rpb24gKGUpIHt9LCAvLyAuYmluZCgnZmlsZXVwbG9hZGRyYWdvdmVyJywgZnVuYyk7CgogICAgICAgICAgICAvLyBDYWxsYmFjayBiZWZvcmUgdGhlIHN0YXJ0IG9mIGVhY2ggY2h1bmsgdXBsb2FkIHJlcXVlc3QgKGJlZm9yZSBmb3JtIGRhdGEgaW5pdGlhbGl6YXRpb24pOgogICAgICAgICAgICAvLyBjaHVua2JlZm9yZXNlbmQ6IGZ1bmN0aW9uIChlLCBkYXRhKSB7fSwgLy8gLmJpbmQoJ2ZpbGV1cGxvYWRjaHVua2JlZm9yZXNlbmQnLCBmdW5jKTsKCiAgICAgICAgICAgIC8vIENhbGxiYWNrIGZvciB0aGUgc3RhcnQgb2YgZWFjaCBjaHVuayB1cGxvYWQgcmVxdWVzdDoKICAgICAgICAgICAgLy8gY2h1bmtzZW5kOiBmdW5jdGlvbiAoZSwgZGF0YSkge30sIC8vIC5iaW5kKCdmaWxldXBsb2FkY2h1bmtzZW5kJywgZnVuYyk7CgogICAgICAgICAgICAvLyBDYWxsYmFjayBmb3Igc3VjY2Vzc2Z1bCBjaHVuayB1cGxvYWRzOgogICAgICAgICAgICAvLyBjaHVua2RvbmU6IGZ1bmN0aW9uIChlLCBkYXRhKSB7fSwgLy8gLmJpbmQoJ2ZpbGV1cGxvYWRjaHVua2RvbmUnLCBmdW5jKTsKCiAgICAgICAgICAgIC8vIENhbGxiYWNrIGZvciBmYWlsZWQgKGFib3J0IG9yIGVycm9yKSBjaHVuayB1cGxvYWRzOgogICAgICAgICAgICAvLyBjaHVua2ZhaWw6IGZ1bmN0aW9uIChlLCBkYXRhKSB7fSwgLy8gLmJpbmQoJ2ZpbGV1cGxvYWRjaHVua2ZhaWwnLCBmdW5jKTsKCiAgICAgICAgICAgIC8vIENhbGxiYWNrIGZvciBjb21wbGV0ZWQgKHN1Y2Nlc3MsIGFib3J0IG9yIGVycm9yKSBjaHVuayB1cGxvYWQgcmVxdWVzdHM6CiAgICAgICAgICAgIC8vIGNodW5rYWx3YXlzOiBmdW5jdGlvbiAoZSwgZGF0YSkge30sIC8vIC5iaW5kKCdmaWxldXBsb2FkY2h1bmthbHdheXMnLCBmdW5jKTsKCiAgICAgICAgICAgIC8vIFRoZSBwbHVnaW4gb3B0aW9ucyBhcmUgdXNlZCBhcyBzZXR0aW5ncyBvYmplY3QgZm9yIHRoZSBhamF4IGNhbGxzLgogICAgICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGFyZSBqUXVlcnkgYWpheCBzZXR0aW5ncyByZXF1aXJlZCBmb3IgdGhlIGZpbGUgdXBsb2FkczoKICAgICAgICAgICAgcHJvY2Vzc0RhdGE6IGZhbHNlLAogICAgICAgICAgICBjb250ZW50VHlwZTogZmFsc2UsCiAgICAgICAgICAgIGNhY2hlOiBmYWxzZSwKICAgICAgICAgICAgdGltZW91dDogMAogICAgICAgIH0sCgogICAgICAgIC8vIEEgbGlzdCBvZiBvcHRpb25zIHRoYXQgcmVxdWlyZSByZWluaXRpYWxpemluZyBldmVudCBsaXN0ZW5lcnMgYW5kL29yCiAgICAgICAgLy8gc3BlY2lhbCBpbml0aWFsaXphdGlvbiBjb2RlOgogICAgICAgIF9zcGVjaWFsT3B0aW9uczogWwogICAgICAgICAgICAnZmlsZUlucHV0JywKICAgICAgICAgICAgJ2Ryb3Bab25lJywKICAgICAgICAgICAgJ3Bhc3RlWm9uZScsCiAgICAgICAgICAgICdtdWx0aXBhcnQnLAogICAgICAgICAgICAnZm9yY2VJZnJhbWVUcmFuc3BvcnQnCiAgICAgICAgXSwKCiAgICAgICAgX2Jsb2JTbGljZTogJC5zdXBwb3J0LmJsb2JTbGljZSAmJiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHZhciBzbGljZSA9IHRoaXMuc2xpY2UgfHwgdGhpcy53ZWJraXRTbGljZSB8fCB0aGlzLm1velNsaWNlOwogICAgICAgICAgICByZXR1cm4gc2xpY2UuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgICB9LAoKICAgICAgICBfQml0cmF0ZVRpbWVyOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHRoaXMudGltZXN0YW1wID0gKChEYXRlLm5vdykgPyBEYXRlLm5vdygpIDogKG5ldyBEYXRlKCkpLmdldFRpbWUoKSk7CiAgICAgICAgICAgIHRoaXMubG9hZGVkID0gMDsKICAgICAgICAgICAgdGhpcy5iaXRyYXRlID0gMDsKICAgICAgICAgICAgdGhpcy5nZXRCaXRyYXRlID0gZnVuY3Rpb24gKG5vdywgbG9hZGVkLCBpbnRlcnZhbCkgewogICAgICAgICAgICAgICAgdmFyIHRpbWVEaWZmID0gbm93IC0gdGhpcy50aW1lc3RhbXA7CiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuYml0cmF0ZSB8fCAhaW50ZXJ2YWwgfHwgdGltZURpZmYgPiBpbnRlcnZhbCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuYml0cmF0ZSA9IChsb2FkZWQgLSB0aGlzLmxvYWRlZCkgKiAoMTAwMCAvIHRpbWVEaWZmKSAqIDg7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkZWQgPSBsb2FkZWQ7CiAgICAgICAgICAgICAgICAgICAgdGhpcy50aW1lc3RhbXAgPSBub3c7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5iaXRyYXRlOwogICAgICAgICAgICB9OwogICAgICAgIH0sCgogICAgICAgIF9pc1hIUlVwbG9hZDogZnVuY3Rpb24gKG9wdGlvbnMpIHsKICAgICAgICAgICAgcmV0dXJuICFvcHRpb25zLmZvcmNlSWZyYW1lVHJhbnNwb3J0ICYmCiAgICAgICAgICAgICAgICAoKCFvcHRpb25zLm11bHRpcGFydCAmJiAkLnN1cHBvcnQueGhyRmlsZVVwbG9hZCkgfHwKICAgICAgICAgICAgICAgICQuc3VwcG9ydC54aHJGb3JtRGF0YUZpbGVVcGxvYWQpOwogICAgICAgIH0sCgogICAgICAgIF9nZXRGb3JtRGF0YTogZnVuY3Rpb24gKG9wdGlvbnMpIHsKICAgICAgICAgICAgdmFyIGZvcm1EYXRhOwogICAgICAgICAgICBpZiAoJC50eXBlKG9wdGlvbnMuZm9ybURhdGEpID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5mb3JtRGF0YShvcHRpb25zLmZvcm0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgkLmlzQXJyYXkob3B0aW9ucy5mb3JtRGF0YSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLmZvcm1EYXRhOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgkLnR5cGUob3B0aW9ucy5mb3JtRGF0YSkgPT09ICdvYmplY3QnKSB7CiAgICAgICAgICAgICAgICBmb3JtRGF0YSA9IFtdOwogICAgICAgICAgICAgICAgJC5lYWNoKG9wdGlvbnMuZm9ybURhdGEsIGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSkgewogICAgICAgICAgICAgICAgICAgIGZvcm1EYXRhLnB1c2goe25hbWU6IG5hbWUsIHZhbHVlOiB2YWx1ZX0pOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICByZXR1cm4gZm9ybURhdGE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIFtdOwogICAgICAgIH0sCgogICAgICAgIF9nZXRUb3RhbDogZnVuY3Rpb24gKGZpbGVzKSB7CiAgICAgICAgICAgIHZhciB0b3RhbCA9IDA7CiAgICAgICAgICAgICQuZWFjaChmaWxlcywgZnVuY3Rpb24gKGluZGV4LCBmaWxlKSB7CiAgICAgICAgICAgICAgICB0b3RhbCArPSBmaWxlLnNpemUgfHwgMTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHJldHVybiB0b3RhbDsKICAgICAgICB9LAoKICAgICAgICBfaW5pdFByb2dyZXNzT2JqZWN0OiBmdW5jdGlvbiAob2JqKSB7CiAgICAgICAgICAgIHZhciBwcm9ncmVzcyA9IHsKICAgICAgICAgICAgICAgIGxvYWRlZDogMCwKICAgICAgICAgICAgICAgIHRvdGFsOiAwLAogICAgICAgICAgICAgICAgYml0cmF0ZTogMAogICAgICAgICAgICB9OwogICAgICAgICAgICBpZiAob2JqLl9wcm9ncmVzcykgewogICAgICAgICAgICAgICAgJC5leHRlbmQob2JqLl9wcm9ncmVzcywgcHJvZ3Jlc3MpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgb2JqLl9wcm9ncmVzcyA9IHByb2dyZXNzOwogICAgICAgICAgICB9CiAgICAgICAgfSwKCiAgICAgICAgX2luaXRSZXNwb25zZU9iamVjdDogZnVuY3Rpb24gKG9iaikgewogICAgICAgICAgICB2YXIgcHJvcDsKICAgICAgICAgICAgaWYgKG9iai5fcmVzcG9uc2UpIHsKICAgICAgICAgICAgICAgIGZvciAocHJvcCBpbiBvYmouX3Jlc3BvbnNlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKG9iai5fcmVzcG9uc2UuaGFzT3duUHJvcGVydHkocHJvcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG9iai5fcmVzcG9uc2VbcHJvcF07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgb2JqLl9yZXNwb25zZSA9IHt9OwogICAgICAgICAgICB9CiAgICAgICAgfSwKCiAgICAgICAgX29uUHJvZ3Jlc3M6IGZ1bmN0aW9uIChlLCBkYXRhKSB7CiAgICAgICAgICAgIGlmIChlLmxlbmd0aENvbXB1dGFibGUpIHsKICAgICAgICAgICAgICAgIHZhciBub3cgPSAoKERhdGUubm93KSA/IERhdGUubm93KCkgOiAobmV3IERhdGUoKSkuZ2V0VGltZSgpKSwKICAgICAgICAgICAgICAgICAgICBsb2FkZWQ7CiAgICAgICAgICAgICAgICBpZiAoZGF0YS5fdGltZSAmJiBkYXRhLnByb2dyZXNzSW50ZXJ2YWwgJiYKICAgICAgICAgICAgICAgICAgICAgICAgKG5vdyAtIGRhdGEuX3RpbWUgPCBkYXRhLnByb2dyZXNzSW50ZXJ2YWwpICYmCiAgICAgICAgICAgICAgICAgICAgICAgIGUubG9hZGVkICE9PSBlLnRvdGFsKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZGF0YS5fdGltZSA9IG5vdzsKICAgICAgICAgICAgICAgIGxvYWRlZCA9IE1hdGguZmxvb3IoCiAgICAgICAgICAgICAgICAgICAgZS5sb2FkZWQgLyBlLnRvdGFsICogKGRhdGEuY2h1bmtTaXplIHx8IGRhdGEuX3Byb2dyZXNzLnRvdGFsKQogICAgICAgICAgICAgICAgKSArIChkYXRhLnVwbG9hZGVkQnl0ZXMgfHwgMCk7CiAgICAgICAgICAgICAgICAvLyBBZGQgdGhlIGRpZmZlcmVuY2UgZnJvbSB0aGUgcHJldmlvdXNseSBsb2FkZWQgc3RhdGUKICAgICAgICAgICAgICAgIC8vIHRvIHRoZSBnbG9iYWwgbG9hZGVkIGNvdW50ZXI6CiAgICAgICAgICAgICAgICB0aGlzLl9wcm9ncmVzcy5sb2FkZWQgKz0gKGxvYWRlZCAtIGRhdGEuX3Byb2dyZXNzLmxvYWRlZCk7CiAgICAgICAgICAgICAgICB0aGlzLl9wcm9ncmVzcy5iaXRyYXRlID0gdGhpcy5fYml0cmF0ZVRpbWVyLmdldEJpdHJhdGUoCiAgICAgICAgICAgICAgICAgICAgbm93LAogICAgICAgICAgICAgICAgICAgIHRoaXMuX3Byb2dyZXNzLmxvYWRlZCwKICAgICAgICAgICAgICAgICAgICBkYXRhLmJpdHJhdGVJbnRlcnZhbAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGRhdGEuX3Byb2dyZXNzLmxvYWRlZCA9IGRhdGEubG9hZGVkID0gbG9hZGVkOwogICAgICAgICAgICAgICAgZGF0YS5fcHJvZ3Jlc3MuYml0cmF0ZSA9IGRhdGEuYml0cmF0ZSA9IGRhdGEuX2JpdHJhdGVUaW1lci5nZXRCaXRyYXRlKAogICAgICAgICAgICAgICAgICAgIG5vdywKICAgICAgICAgICAgICAgICAgICBsb2FkZWQsCiAgICAgICAgICAgICAgICAgICAgZGF0YS5iaXRyYXRlSW50ZXJ2YWwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAvLyBUcmlnZ2VyIGEgY3VzdG9tIHByb2dyZXNzIGV2ZW50IHdpdGggYSB0b3RhbCBkYXRhIHByb3BlcnR5IHNldAogICAgICAgICAgICAgICAgLy8gdG8gdGhlIGZpbGUgc2l6ZShzKSBvZiB0aGUgY3VycmVudCB1cGxvYWQgYW5kIGEgbG9hZGVkIGRhdGEKICAgICAgICAgICAgICAgIC8vIHByb3BlcnR5IGNhbGN1bGF0ZWQgYWNjb3JkaW5nbHk6CiAgICAgICAgICAgICAgICB0aGlzLl90cmlnZ2VyKAogICAgICAgICAgICAgICAgICAgICdwcm9ncmVzcycsCiAgICAgICAgICAgICAgICAgICAgJC5FdmVudCgncHJvZ3Jlc3MnLCB7ZGVsZWdhdGVkRXZlbnQ6IGV9KSwKICAgICAgICAgICAgICAgICAgICBkYXRhCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgLy8gVHJpZ2dlciBhIGdsb2JhbCBwcm9ncmVzcyBldmVudCBmb3IgYWxsIGN1cnJlbnQgZmlsZSB1cGxvYWRzLAogICAgICAgICAgICAgICAgLy8gaW5jbHVkaW5nIGFqYXggY2FsbHMgcXVldWVkIGZvciBzZXF1ZW50aWFsIGZpbGUgdXBsb2FkczoKICAgICAgICAgICAgICAgIHRoaXMuX3RyaWdnZXIoCiAgICAgICAgICAgICAgICAgICAgJ3Byb2dyZXNzYWxsJywKICAgICAgICAgICAgICAgICAgICAkLkV2ZW50KCdwcm9ncmVzc2FsbCcsIHtkZWxlZ2F0ZWRFdmVudDogZX0pLAogICAgICAgICAgICAgICAgICAgIHRoaXMuX3Byb2dyZXNzCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfSwKCiAgICAgICAgX2luaXRQcm9ncmVzc0xpc3RlbmVyOiBmdW5jdGlvbiAob3B0aW9ucykgewogICAgICAgICAgICB2YXIgdGhhdCA9IHRoaXMsCiAgICAgICAgICAgICAgICB4aHIgPSBvcHRpb25zLnhociA/IG9wdGlvbnMueGhyKCkgOiAkLmFqYXhTZXR0aW5ncy54aHIoKTsKICAgICAgICAgICAgLy8gQWNjZXNzcyB0byB0aGUgbmF0aXZlIFhIUiBvYmplY3QgaXMgcmVxdWlyZWQgdG8gYWRkIGV2ZW50IGxpc3RlbmVycwogICAgICAgICAgICAvLyBmb3IgdGhlIHVwbG9hZCBwcm9ncmVzcyBldmVudDoKICAgICAgICAgICAgaWYgKHhoci51cGxvYWQpIHsKICAgICAgICAgICAgICAgICQoeGhyLnVwbG9hZCkuYmluZCgncHJvZ3Jlc3MnLCBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICAgICAgICAgIHZhciBvZSA9IGUub3JpZ2luYWxFdmVudDsKICAgICAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIHByb2dyZXNzIGV2ZW50IHByb3BlcnRpZXMgZ2V0IGNvcGllZCBvdmVyOgogICAgICAgICAgICAgICAgICAgIGUubGVuZ3RoQ29tcHV0YWJsZSA9IG9lLmxlbmd0aENvbXB1dGFibGU7CiAgICAgICAgICAgICAgICAgICAgZS5sb2FkZWQgPSBvZS5sb2FkZWQ7CiAgICAgICAgICAgICAgICAgICAgZS50b3RhbCA9IG9lLnRvdGFsOwogICAgICAgICAgICAgICAgICAgIHRoYXQuX29uUHJvZ3Jlc3MoZSwgb3B0aW9ucyk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIG9wdGlvbnMueGhyID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB4aHI7CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgfSwKCiAgICAgICAgX2RlaW5pdFByb2dyZXNzTGlzdGVuZXI6IGZ1bmN0aW9uIChvcHRpb25zKSB7CiAgICAgICAgICAgIHZhciB4aHIgPSBvcHRpb25zLnhociA/IG9wdGlvbnMueGhyKCkgOiAkLmFqYXhTZXR0aW5ncy54aHIoKTsKICAgICAgICAgICAgaWYgKHhoci51cGxvYWQpIHsKICAgICAgICAgICAgICAgICQoeGhyLnVwbG9hZCkudW5iaW5kKCdwcm9ncmVzcycpOwogICAgICAgICAgICB9CiAgICAgICAgfSwKCiAgICAgICAgX2lzSW5zdGFuY2VPZjogZnVuY3Rpb24gKHR5cGUsIG9iaikgewogICAgICAgICAgICAvLyBDcm9zcy1mcmFtZSBpbnN0YW5jZW9mIGNoZWNrCiAgICAgICAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKSA9PT0gJ1tvYmplY3QgJyArIHR5cGUgKyAnXSc7CiAgICAgICAgfSwKCiAgICAgICAgX2luaXRYSFJEYXRhOiBmdW5jdGlvbiAob3B0aW9ucykgewogICAgICAgICAgICB2YXIgdGhhdCA9IHRoaXMsCiAgICAgICAgICAgICAgICBmb3JtRGF0YSwKICAgICAgICAgICAgICAgIGZpbGUgPSBvcHRpb25zLmZpbGVzWzBdLAogICAgICAgICAgICAgICAgLy8gSWdub3JlIG5vbi1tdWx0aXBhcnQgc2V0dGluZyBpZiBub3Qgc3VwcG9ydGVkOgogICAgICAgICAgICAgICAgbXVsdGlwYXJ0ID0gb3B0aW9ucy5tdWx0aXBhcnQgfHwgISQuc3VwcG9ydC54aHJGaWxlVXBsb2FkLAogICAgICAgICAgICAgICAgcGFyYW1OYW1lID0gJC50eXBlKG9wdGlvbnMucGFyYW1OYW1lKSA9PT0gJ2FycmF5JyA/CiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5wYXJhbU5hbWVbMF0gOiBvcHRpb25zLnBhcmFtTmFtZTsKICAgICAgICAgICAgb3B0aW9ucy5oZWFkZXJzID0gJC5leHRlbmQoe30sIG9wdGlvbnMuaGVhZGVycyk7CiAgICAgICAgICAgIGlmIChvcHRpb25zLmNvbnRlbnRSYW5nZSkgewogICAgICAgICAgICAgICAgb3B0aW9ucy5oZWFkZXJzWydDb250ZW50LVJhbmdlJ10gPSBvcHRpb25zLmNvbnRlbnRSYW5nZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIW11bHRpcGFydCB8fCBvcHRpb25zLmJsb2IgfHwgIXRoaXMuX2lzSW5zdGFuY2VPZignRmlsZScsIGZpbGUpKSB7CiAgICAgICAgICAgICAgICBvcHRpb25zLmhlYWRlcnNbJ0NvbnRlbnQtRGlzcG9zaXRpb24nXSA9ICdhdHRhY2htZW50OyBmaWxlbmFtZT0iJyArCiAgICAgICAgICAgICAgICAgICAgZW5jb2RlVVJJKGZpbGUudXBsb2FkTmFtZSB8fCBmaWxlLm5hbWUpICsgJyInOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghbXVsdGlwYXJ0KSB7CiAgICAgICAgICAgICAgICBvcHRpb25zLmNvbnRlbnRUeXBlID0gZmlsZS50eXBlIHx8ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nOwogICAgICAgICAgICAgICAgb3B0aW9ucy5kYXRhID0gb3B0aW9ucy5ibG9iIHx8IGZpbGU7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoJC5zdXBwb3J0LnhockZvcm1EYXRhRmlsZVVwbG9hZCkgewogICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMucG9zdE1lc3NhZ2UpIHsKICAgICAgICAgICAgICAgICAgICAvLyB3aW5kb3cucG9zdE1lc3NhZ2UgZG9lcyBub3QgYWxsb3cgc2VuZGluZyBGb3JtRGF0YQogICAgICAgICAgICAgICAgICAgIC8vIG9iamVjdHMsIHNvIHdlIGp1c3QgYWRkIHRoZSBGaWxlL0Jsb2Igb2JqZWN0cyB0bwogICAgICAgICAgICAgICAgICAgIC8vIHRoZSBmb3JtRGF0YSBhcnJheSBhbmQgbGV0IHRoZSBwb3N0TWVzc2FnZSB3aW5kb3cKICAgICAgICAgICAgICAgICAgICAvLyBjcmVhdGUgdGhlIEZvcm1EYXRhIG9iamVjdCBvdXQgb2YgdGhpcyBhcnJheToKICAgICAgICAgICAgICAgICAgICBmb3JtRGF0YSA9IHRoaXMuX2dldEZvcm1EYXRhKG9wdGlvbnMpOwogICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmJsb2IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9ybURhdGEucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBwYXJhbU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogb3B0aW9ucy5ibG9iCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICQuZWFjaChvcHRpb25zLmZpbGVzLCBmdW5jdGlvbiAoaW5kZXgsIGZpbGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EYXRhLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICgkLnR5cGUob3B0aW9ucy5wYXJhbU5hbWUpID09PSAnYXJyYXknICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMucGFyYW1OYW1lW2luZGV4XSkgfHwgcGFyYW1OYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBmaWxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAodGhhdC5faXNJbnN0YW5jZU9mKCdGb3JtRGF0YScsIG9wdGlvbnMuZm9ybURhdGEpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EYXRhID0gb3B0aW9ucy5mb3JtRGF0YTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpOwogICAgICAgICAgICAgICAgICAgICAgICAkLmVhY2godGhpcy5fZ2V0Rm9ybURhdGEob3B0aW9ucyksIGZ1bmN0aW9uIChpbmRleCwgZmllbGQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChmaWVsZC5uYW1lLCBmaWVsZC52YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5ibG9iKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuYmxvYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUudXBsb2FkTmFtZSB8fCBmaWxlLm5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkLmVhY2gob3B0aW9ucy5maWxlcywgZnVuY3Rpb24gKGluZGV4LCBmaWxlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGNoZWNrIGFsbG93cyB0aGUgdGVzdHMgdG8gcnVuIHdpdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGR1bW15IG9iamVjdHM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhhdC5faXNJbnN0YW5jZU9mKCdGaWxlJywgZmlsZSkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5faXNJbnN0YW5jZU9mKCdCbG9iJywgZmlsZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgkLnR5cGUob3B0aW9ucy5wYXJhbU5hbWUpID09PSAnYXJyYXknICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnBhcmFtTmFtZVtpbmRleF0pIHx8IHBhcmFtTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS51cGxvYWROYW1lIHx8IGZpbGUubmFtZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9wdGlvbnMuZGF0YSA9IGZvcm1EYXRhOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIEJsb2IgcmVmZXJlbmNlIGlzIG5vdCBuZWVkZWQgYW55bW9yZSwgZnJlZSBtZW1vcnk6CiAgICAgICAgICAgIG9wdGlvbnMuYmxvYiA9IG51bGw7CiAgICAgICAgfSwKCiAgICAgICAgX2luaXRJZnJhbWVTZXR0aW5nczogZnVuY3Rpb24gKG9wdGlvbnMpIHsKICAgICAgICAgICAgdmFyIHRhcmdldEhvc3QgPSAkKCc8YT48L2E+JykucHJvcCgnaHJlZicsIG9wdGlvbnMudXJsKS5wcm9wKCdob3N0Jyk7CiAgICAgICAgICAgIC8vIFNldHRpbmcgdGhlIGRhdGFUeXBlIHRvIGlmcmFtZSBlbmFibGVzIHRoZSBpZnJhbWUgdHJhbnNwb3J0OgogICAgICAgICAgICBvcHRpb25zLmRhdGFUeXBlID0gJ2lmcmFtZSAnICsgKG9wdGlvbnMuZGF0YVR5cGUgfHwgJycpOwogICAgICAgICAgICAvLyBUaGUgaWZyYW1lIHRyYW5zcG9ydCBhY2NlcHRzIGEgc2VyaWFsaXplZCBhcnJheSBhcyBmb3JtIGRhdGE6CiAgICAgICAgICAgIG9wdGlvbnMuZm9ybURhdGEgPSB0aGlzLl9nZXRGb3JtRGF0YShvcHRpb25zKTsKICAgICAgICAgICAgLy8gQWRkIHJlZGlyZWN0IHVybCB0byBmb3JtIGRhdGEgb24gY3Jvc3MtZG9tYWluIHVwbG9hZHM6CiAgICAgICAgICAgIGlmIChvcHRpb25zLnJlZGlyZWN0ICYmIHRhcmdldEhvc3QgJiYgdGFyZ2V0SG9zdCAhPT0gbG9jYXRpb24uaG9zdCkgewogICAgICAgICAgICAgICAgb3B0aW9ucy5mb3JtRGF0YS5wdXNoKHsKICAgICAgICAgICAgICAgICAgICBuYW1lOiBvcHRpb25zLnJlZGlyZWN0UGFyYW1OYW1lIHx8ICdyZWRpcmVjdCcsCiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG9wdGlvbnMucmVkaXJlY3QKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CiAgICAgICAgfSwKCiAgICAgICAgX2luaXREYXRhU2V0dGluZ3M6IGZ1bmN0aW9uIChvcHRpb25zKSB7CiAgICAgICAgICAgIGlmICh0aGlzLl9pc1hIUlVwbG9hZChvcHRpb25zKSkgewogICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9jaHVua2VkVXBsb2FkKG9wdGlvbnMsIHRydWUpKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRpb25zLmRhdGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5pdFhIUkRhdGEob3B0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHRoaXMuX2luaXRQcm9ncmVzc0xpc3RlbmVyKG9wdGlvbnMpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMucG9zdE1lc3NhZ2UpIHsKICAgICAgICAgICAgICAgICAgICAvLyBTZXR0aW5nIHRoZSBkYXRhVHlwZSB0byBwb3N0bWVzc2FnZSBlbmFibGVzIHRoZQogICAgICAgICAgICAgICAgICAgIC8vIHBvc3RNZXNzYWdlIHRyYW5zcG9ydDoKICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmRhdGFUeXBlID0gJ3Bvc3RtZXNzYWdlICcgKyAob3B0aW9ucy5kYXRhVHlwZSB8fCAnJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB0aGlzLl9pbml0SWZyYW1lU2V0dGluZ3Mob3B0aW9ucyk7CiAgICAgICAgICAgIH0KICAgICAgICB9LAoKICAgICAgICBfZ2V0UGFyYW1OYW1lOiBmdW5jdGlvbiAob3B0aW9ucykgewogICAgICAgICAgICB2YXIgZmlsZUlucHV0ID0gJChvcHRpb25zLmZpbGVJbnB1dCksCiAgICAgICAgICAgICAgICBwYXJhbU5hbWUgPSBvcHRpb25zLnBhcmFtTmFtZTsKICAgICAgICAgICAgaWYgKCFwYXJhbU5hbWUpIHsKICAgICAgICAgICAgICAgIHBhcmFtTmFtZSA9IFtdOwogICAgICAgICAgICAgICAgZmlsZUlucHV0LmVhY2goZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBpbnB1dCA9ICQodGhpcyksCiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBpbnB1dC5wcm9wKCduYW1lJykgfHwgJ2ZpbGVzW10nLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gKGlucHV0LnByb3AoJ2ZpbGVzJykgfHwgWzFdKS5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1OYW1lLnB1c2gobmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGkgLT0gMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIGlmICghcGFyYW1OYW1lLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgIHBhcmFtTmFtZSA9IFtmaWxlSW5wdXQucHJvcCgnbmFtZScpIHx8ICdmaWxlc1tdJ107CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSBpZiAoISQuaXNBcnJheShwYXJhbU5hbWUpKSB7CiAgICAgICAgICAgICAgICBwYXJhbU5hbWUgPSBbcGFyYW1OYW1lXTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcGFyYW1OYW1lOwogICAgICAgIH0sCgogICAgICAgIF9pbml0Rm9ybVNldHRpbmdzOiBmdW5jdGlvbiAob3B0aW9ucykgewogICAgICAgICAgICAvLyBSZXRyaWV2ZSBtaXNzaW5nIG9wdGlvbnMgZnJvbSB0aGUgaW5wdXQgZmllbGQgYW5kIHRoZQogICAgICAgICAgICAvLyBhc3NvY2lhdGVkIGZvcm0sIGlmIGF2YWlsYWJsZToKICAgICAgICAgICAgaWYgKCFvcHRpb25zLmZvcm0gfHwgIW9wdGlvbnMuZm9ybS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgIG9wdGlvbnMuZm9ybSA9ICQob3B0aW9ucy5maWxlSW5wdXQucHJvcCgnZm9ybScpKTsKICAgICAgICAgICAgICAgIC8vIElmIHRoZSBnaXZlbiBmaWxlIGlucHV0IGRvZXNuJ3QgaGF2ZSBhbiBhc3NvY2lhdGVkIGZvcm0sCiAgICAgICAgICAgICAgICAvLyB1c2UgdGhlIGRlZmF1bHQgd2lkZ2V0IGZpbGUgaW5wdXQncyBmb3JtOgogICAgICAgICAgICAgICAgaWYgKCFvcHRpb25zLmZvcm0ubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mb3JtID0gJCh0aGlzLm9wdGlvbnMuZmlsZUlucHV0LnByb3AoJ2Zvcm0nKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgb3B0aW9ucy5wYXJhbU5hbWUgPSB0aGlzLl9nZXRQYXJhbU5hbWUob3B0aW9ucyk7CiAgICAgICAgICAgIGlmICghb3B0aW9ucy51cmwpIHsKICAgICAgICAgICAgICAgIG9wdGlvbnMudXJsID0gb3B0aW9ucy5mb3JtLnByb3AoJ2FjdGlvbicpIHx8IGxvY2F0aW9uLmhyZWY7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gVGhlIEhUVFAgcmVxdWVzdCBtZXRob2QgbXVzdCBiZSAiUE9TVCIgb3IgIlBVVCI6CiAgICAgICAgICAgIG9wdGlvbnMudHlwZSA9IChvcHRpb25zLnR5cGUgfHwKICAgICAgICAgICAgICAgICgkLnR5cGUob3B0aW9ucy5mb3JtLnByb3AoJ21ldGhvZCcpKSA9PT0gJ3N0cmluZycgJiYKICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmZvcm0ucHJvcCgnbWV0aG9kJykpIHx8ICcnCiAgICAgICAgICAgICAgICApLnRvVXBwZXJDYXNlKCk7CiAgICAgICAgICAgIGlmIChvcHRpb25zLnR5cGUgIT09ICdQT1NUJyAmJiBvcHRpb25zLnR5cGUgIT09ICdQVVQnICYmCiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy50eXBlICE9PSAnUEFUQ0gnKSB7CiAgICAgICAgICAgICAgICBvcHRpb25zLnR5cGUgPSAnUE9TVCc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCFvcHRpb25zLmZvcm1BY2NlcHRDaGFyc2V0KSB7CiAgICAgICAgICAgICAgICBvcHRpb25zLmZvcm1BY2NlcHRDaGFyc2V0ID0gb3B0aW9ucy5mb3JtLmF0dHIoJ2FjY2VwdC1jaGFyc2V0Jyk7CiAgICAgICAgICAgIH0KICAgICAgICB9LAoKICAgICAgICBfZ2V0QUpBWFNldHRpbmdzOiBmdW5jdGlvbiAoZGF0YSkgewogICAgICAgICAgICB2YXIgb3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCB0aGlzLm9wdGlvbnMsIGRhdGEpOwogICAgICAgICAgICB0aGlzLl9pbml0Rm9ybVNldHRpbmdzKG9wdGlvbnMpOwogICAgICAgICAgICB0aGlzLl9pbml0RGF0YVNldHRpbmdzKG9wdGlvbnMpOwogICAgICAgICAgICByZXR1cm4gb3B0aW9uczsKICAgICAgICB9LAoKICAgICAgICAvLyBqUXVlcnkgMS42IGRvZXNuJ3QgcHJvdmlkZSAuc3RhdGUoKSwKICAgICAgICAvLyB3aGlsZSBqUXVlcnkgMS44KyByZW1vdmVkIC5pc1JlamVjdGVkKCkgYW5kIC5pc1Jlc29sdmVkKCk6CiAgICAgICAgX2dldERlZmVycmVkU3RhdGU6IGZ1bmN0aW9uIChkZWZlcnJlZCkgewogICAgICAgICAgICBpZiAoZGVmZXJyZWQuc3RhdGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZC5zdGF0ZSgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChkZWZlcnJlZC5pc1Jlc29sdmVkKCkpIHsKICAgICAgICAgICAgICAgIHJldHVybiAncmVzb2x2ZWQnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChkZWZlcnJlZC5pc1JlamVjdGVkKCkpIHsKICAgICAgICAgICAgICAgIHJldHVybiAncmVqZWN0ZWQnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAncGVuZGluZyc7CiAgICAgICAgfSwKCiAgICAgICAgLy8gTWFwcyBqcVhIUiBjYWxsYmFja3MgdG8gdGhlIGVxdWl2YWxlbnQKICAgICAgICAvLyBtZXRob2RzIG9mIHRoZSBnaXZlbiBQcm9taXNlIG9iamVjdDoKICAgICAgICBfZW5oYW5jZVByb21pc2U6IGZ1bmN0aW9uIChwcm9taXNlKSB7CiAgICAgICAgICAgIHByb21pc2Uuc3VjY2VzcyA9IHByb21pc2UuZG9uZTsKICAgICAgICAgICAgcHJvbWlzZS5lcnJvciA9IHByb21pc2UuZmFpbDsKICAgICAgICAgICAgcHJvbWlzZS5jb21wbGV0ZSA9IHByb21pc2UuYWx3YXlzOwogICAgICAgICAgICByZXR1cm4gcHJvbWlzZTsKICAgICAgICB9LAoKICAgICAgICAvLyBDcmVhdGVzIGFuZCByZXR1cm5zIGEgUHJvbWlzZSBvYmplY3QgZW5oYW5jZWQgd2l0aAogICAgICAgIC8vIHRoZSBqcVhIUiBtZXRob2RzIGFib3J0LCBzdWNjZXNzLCBlcnJvciBhbmQgY29tcGxldGU6CiAgICAgICAgX2dldFhIUlByb21pc2U6IGZ1bmN0aW9uIChyZXNvbHZlT3JSZWplY3QsIGNvbnRleHQsIGFyZ3MpIHsKICAgICAgICAgICAgdmFyIGRmZCA9ICQuRGVmZXJyZWQoKSwKICAgICAgICAgICAgICAgIHByb21pc2UgPSBkZmQucHJvbWlzZSgpOwogICAgICAgICAgICBjb250ZXh0ID0gY29udGV4dCB8fCB0aGlzLm9wdGlvbnMuY29udGV4dCB8fCBwcm9taXNlOwogICAgICAgICAgICBpZiAocmVzb2x2ZU9yUmVqZWN0ID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICBkZmQucmVzb2x2ZVdpdGgoY29udGV4dCwgYXJncyk7CiAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzb2x2ZU9yUmVqZWN0ID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgZGZkLnJlamVjdFdpdGgoY29udGV4dCwgYXJncyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcHJvbWlzZS5hYm9ydCA9IGRmZC5wcm9taXNlOwogICAgICAgICAgICByZXR1cm4gdGhpcy5fZW5oYW5jZVByb21pc2UocHJvbWlzZSk7CiAgICAgICAgfSwKCiAgICAgICAgLy8gQWRkcyBjb252ZW5pZW5jZSBtZXRob2RzIHRvIHRoZSBkYXRhIGNhbGxiYWNrIGFyZ3VtZW50OgogICAgICAgIF9hZGRDb252ZW5pZW5jZU1ldGhvZHM6IGZ1bmN0aW9uIChlLCBkYXRhKSB7CiAgICAgICAgICAgIHZhciB0aGF0ID0gdGhpcywKICAgICAgICAgICAgICAgIGdldFByb21pc2UgPSBmdW5jdGlvbiAoYXJncykgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkLkRlZmVycmVkKCkucmVzb2x2ZVdpdGgodGhhdCwgYXJncykucHJvbWlzZSgpOwogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgZGF0YS5wcm9jZXNzID0gZnVuY3Rpb24gKHJlc29sdmVGdW5jLCByZWplY3RGdW5jKSB7CiAgICAgICAgICAgICAgICBpZiAocmVzb2x2ZUZ1bmMgfHwgcmVqZWN0RnVuYykgewogICAgICAgICAgICAgICAgICAgIGRhdGEuX3Byb2Nlc3NRdWV1ZSA9IHRoaXMuX3Byb2Nlc3NRdWV1ZSA9CiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLl9wcm9jZXNzUXVldWUgfHwgZ2V0UHJvbWlzZShbdGhpc10pKS50aGVuKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmVycm9yVGhyb3duKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkLkRlZmVycmVkKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZWplY3RXaXRoKHRoYXQsIFtkYXRhXSkucHJvbWlzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0UHJvbWlzZShhcmd1bWVudHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICApLnRoZW4ocmVzb2x2ZUZ1bmMsIHJlamVjdEZ1bmMpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Byb2Nlc3NRdWV1ZSB8fCBnZXRQcm9taXNlKFt0aGlzXSk7CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIGRhdGEuc3VibWl0ID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhdGUoKSAhPT0gJ3BlbmRpbmcnKSB7CiAgICAgICAgICAgICAgICAgICAgZGF0YS5qcVhIUiA9IHRoaXMuanFYSFIgPQogICAgICAgICAgICAgICAgICAgICAgICAodGhhdC5fdHJpZ2dlcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzdWJtaXQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJC5FdmVudCgnc3VibWl0Jywge2RlbGVnYXRlZEV2ZW50OiBlfSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzCiAgICAgICAgICAgICAgICAgICAgICAgICkgIT09IGZhbHNlKSAmJiB0aGF0Ll9vblNlbmQoZSwgdGhpcyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5qcVhIUiB8fCB0aGF0Ll9nZXRYSFJQcm9taXNlKCk7CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIGRhdGEuYWJvcnQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBpZiAodGhpcy5qcVhIUikgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmpxWEhSLmFib3J0KCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0aGlzLmVycm9yVGhyb3duID0gJ2Fib3J0JzsKICAgICAgICAgICAgICAgIHRoYXQuX3RyaWdnZXIoJ2ZhaWwnLCBudWxsLCB0aGlzKTsKICAgICAgICAgICAgICAgIHJldHVybiB0aGF0Ll9nZXRYSFJQcm9taXNlKGZhbHNlKTsKICAgICAgICAgICAgfTsKICAgICAgICAgICAgZGF0YS5zdGF0ZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmICh0aGlzLmpxWEhSKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoYXQuX2dldERlZmVycmVkU3RhdGUodGhpcy5qcVhIUik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAodGhpcy5fcHJvY2Vzc1F1ZXVlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoYXQuX2dldERlZmVycmVkU3RhdGUodGhpcy5fcHJvY2Vzc1F1ZXVlKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKICAgICAgICAgICAgZGF0YS5wcm9jZXNzaW5nID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgcmV0dXJuICF0aGlzLmpxWEhSICYmIHRoaXMuX3Byb2Nlc3NRdWV1ZSAmJiB0aGF0CiAgICAgICAgICAgICAgICAgICAgLl9nZXREZWZlcnJlZFN0YXRlKHRoaXMuX3Byb2Nlc3NRdWV1ZSkgPT09ICdwZW5kaW5nJzsKICAgICAgICAgICAgfTsKICAgICAgICAgICAgZGF0YS5wcm9ncmVzcyA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9wcm9ncmVzczsKICAgICAgICAgICAgfTsKICAgICAgICAgICAgZGF0YS5yZXNwb25zZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9yZXNwb25zZTsKICAgICAgICAgICAgfTsKICAgICAgICB9LAoKICAgICAgICAvLyBQYXJzZXMgdGhlIFJhbmdlIGhlYWRlciBmcm9tIHRoZSBzZXJ2ZXIgcmVzcG9uc2UKICAgICAgICAvLyBhbmQgcmV0dXJucyB0aGUgdXBsb2FkZWQgYnl0ZXM6CiAgICAgICAgX2dldFVwbG9hZGVkQnl0ZXM6IGZ1bmN0aW9uIChqcVhIUikgewogICAgICAgICAgICB2YXIgcmFuZ2UgPSBqcVhIUi5nZXRSZXNwb25zZUhlYWRlcignUmFuZ2UnKSwKICAgICAgICAgICAgICAgIHBhcnRzID0gcmFuZ2UgJiYgcmFuZ2Uuc3BsaXQoJy0nKSwKICAgICAgICAgICAgICAgIHVwcGVyQnl0ZXNQb3MgPSBwYXJ0cyAmJiBwYXJ0cy5sZW5ndGggPiAxICYmCiAgICAgICAgICAgICAgICAgICAgcGFyc2VJbnQocGFydHNbMV0sIDEwKTsKICAgICAgICAgICAgcmV0dXJuIHVwcGVyQnl0ZXNQb3MgJiYgdXBwZXJCeXRlc1BvcyArIDE7CiAgICAgICAgfSwKCiAgICAgICAgLy8gVXBsb2FkcyBhIGZpbGUgaW4gbXVsdGlwbGUsIHNlcXVlbnRpYWwgcmVxdWVzdHMKICAgICAgICAvLyBieSBzcGxpdHRpbmcgdGhlIGZpbGUgdXAgaW4gbXVsdGlwbGUgYmxvYiBjaHVua3MuCiAgICAgICAgLy8gSWYgdGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgdHJ1ZSwgb25seSB0ZXN0cyBpZiB0aGUgZmlsZQogICAgICAgIC8vIHNob3VsZCBiZSB1cGxvYWRlZCBpbiBjaHVua3MsIGJ1dCBkb2VzIG5vdCBpbnZva2UgYW55CiAgICAgICAgLy8gdXBsb2FkIHJlcXVlc3RzOgogICAgICAgIF9jaHVua2VkVXBsb2FkOiBmdW5jdGlvbiAob3B0aW9ucywgdGVzdE9ubHkpIHsKICAgICAgICAgICAgb3B0aW9ucy51cGxvYWRlZEJ5dGVzID0gb3B0aW9ucy51cGxvYWRlZEJ5dGVzIHx8IDA7CiAgICAgICAgICAgIHZhciB0aGF0ID0gdGhpcywKICAgICAgICAgICAgICAgIGZpbGUgPSBvcHRpb25zLmZpbGVzWzBdLAogICAgICAgICAgICAgICAgZnMgPSBmaWxlLnNpemUsCiAgICAgICAgICAgICAgICB1YiA9IG9wdGlvbnMudXBsb2FkZWRCeXRlcywKICAgICAgICAgICAgICAgIG1jcyA9IG9wdGlvbnMubWF4Q2h1bmtTaXplIHx8IGZzLAogICAgICAgICAgICAgICAgc2xpY2UgPSB0aGlzLl9ibG9iU2xpY2UsCiAgICAgICAgICAgICAgICBkZmQgPSAkLkRlZmVycmVkKCksCiAgICAgICAgICAgICAgICBwcm9taXNlID0gZGZkLnByb21pc2UoKSwKICAgICAgICAgICAgICAgIGpxWEhSLAogICAgICAgICAgICAgICAgdXBsb2FkOwogICAgICAgICAgICBpZiAoISh0aGlzLl9pc1hIUlVwbG9hZChvcHRpb25zKSAmJiBzbGljZSAmJiAodWIgfHwgKCQudHlwZShtY3MpID09PSAnZnVuY3Rpb24nID8gbWNzKG9wdGlvbnMpIDogbWNzKSA8IGZzKSkgfHwKICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmRhdGEpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAodGVzdE9ubHkpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICh1YiA+PSBmcykgewogICAgICAgICAgICAgICAgZmlsZS5lcnJvciA9IG9wdGlvbnMuaTE4bigndXBsb2FkZWRCeXRlcycpOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2dldFhIUlByb21pc2UoCiAgICAgICAgICAgICAgICAgICAgZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5jb250ZXh0LAogICAgICAgICAgICAgICAgICAgIFtudWxsLCAnZXJyb3InLCBmaWxlLmVycm9yXQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBUaGUgY2h1bmsgdXBsb2FkIG1ldGhvZDoKICAgICAgICAgICAgdXBsb2FkID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgLy8gQ2xvbmUgdGhlIG9wdGlvbnMgb2JqZWN0IGZvciBlYWNoIGNodW5rIHVwbG9hZDoKICAgICAgICAgICAgICAgIHZhciBvID0gJC5leHRlbmQoe30sIG9wdGlvbnMpLAogICAgICAgICAgICAgICAgICAgIGN1cnJlbnRMb2FkZWQgPSBvLl9wcm9ncmVzcy5sb2FkZWQ7CiAgICAgICAgICAgICAgICBvLmJsb2IgPSBzbGljZS5jYWxsKAogICAgICAgICAgICAgICAgICAgIGZpbGUsCiAgICAgICAgICAgICAgICAgICAgdWIsCiAgICAgICAgICAgICAgICAgICAgdWIgKyAoJC50eXBlKG1jcykgPT09ICdmdW5jdGlvbicgPyBtY3MobykgOiBtY3MpLAogICAgICAgICAgICAgICAgICAgIGZpbGUudHlwZQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIC8vIFN0b3JlIHRoZSBjdXJyZW50IGNodW5rIHNpemUsIGFzIHRoZSBibG9iIGl0c2VsZgogICAgICAgICAgICAgICAgLy8gd2lsbCBiZSBkZXJlZmVyZW5jZWQgYWZ0ZXIgZGF0YSBwcm9jZXNzaW5nOgogICAgICAgICAgICAgICAgby5jaHVua1NpemUgPSBvLmJsb2Iuc2l6ZTsKICAgICAgICAgICAgICAgIC8vIEV4cG9zZSB0aGUgY2h1bmsgYnl0ZXMgcG9zaXRpb24gcmFuZ2U6CiAgICAgICAgICAgICAgICBvLmNvbnRlbnRSYW5nZSA9ICdieXRlcyAnICsgdWIgKyAnLScgKwogICAgICAgICAgICAgICAgICAgICh1YiArIG8uY2h1bmtTaXplIC0gMSkgKyAnLycgKyBmczsKICAgICAgICAgICAgICAgIC8vIFRyaWdnZXIgY2h1bmtiZWZvcmVzZW5kIHRvIGFsbG93IGZvcm0gZGF0YSB0byBiZSB1cGRhdGVkIGZvciB0aGlzIGNodW5rCiAgICAgICAgICAgICAgICB0aGF0Ll90cmlnZ2VyKCdjaHVua2JlZm9yZXNlbmQnLCBudWxsLCBvKTsKICAgICAgICAgICAgICAgIC8vIFByb2Nlc3MgdGhlIHVwbG9hZCBkYXRhICh0aGUgYmxvYiBhbmQgcG90ZW50aWFsIGZvcm0gZGF0YSk6CiAgICAgICAgICAgICAgICB0aGF0Ll9pbml0WEhSRGF0YShvKTsKICAgICAgICAgICAgICAgIC8vIEFkZCBwcm9ncmVzcyBsaXN0ZW5lcnMgZm9yIHRoaXMgY2h1bmsgdXBsb2FkOgogICAgICAgICAgICAgICAgdGhhdC5faW5pdFByb2dyZXNzTGlzdGVuZXIobyk7CiAgICAgICAgICAgICAgICBqcVhIUiA9ICgodGhhdC5fdHJpZ2dlcignY2h1bmtzZW5kJywgbnVsbCwgbykgIT09IGZhbHNlICYmICQuYWpheChvKSkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fZ2V0WEhSUHJvbWlzZShmYWxzZSwgby5jb250ZXh0KSkKICAgICAgICAgICAgICAgICAgICAuZG9uZShmdW5jdGlvbiAocmVzdWx0LCB0ZXh0U3RhdHVzLCBqcVhIUikgewogICAgICAgICAgICAgICAgICAgICAgICB1YiA9IHRoYXQuX2dldFVwbG9hZGVkQnl0ZXMoanFYSFIpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodWIgKyBvLmNodW5rU2l6ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhIHByb2dyZXNzIGV2ZW50IGlmIG5vIGZpbmFsIHByb2dyZXNzIGV2ZW50CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpdGggbG9hZGVkIGVxdWFsaW5nIHRvdGFsIGhhcyBiZWVuIHRyaWdnZXJlZAogICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgdGhpcyBjaHVuazoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRMb2FkZWQgKyBvLmNodW5rU2l6ZSAtIG8uX3Byb2dyZXNzLmxvYWRlZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fb25Qcm9ncmVzcygkLkV2ZW50KCdwcm9ncmVzcycsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGhDb21wdXRhYmxlOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlZDogdWIgLSBvLnVwbG9hZGVkQnl0ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWw6IHViIC0gby51cGxvYWRlZEJ5dGVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgbyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy51cGxvYWRlZEJ5dGVzID0gby51cGxvYWRlZEJ5dGVzID0gdWI7CiAgICAgICAgICAgICAgICAgICAgICAgIG8ucmVzdWx0ID0gcmVzdWx0OwogICAgICAgICAgICAgICAgICAgICAgICBvLnRleHRTdGF0dXMgPSB0ZXh0U3RhdHVzOwogICAgICAgICAgICAgICAgICAgICAgICBvLmpxWEhSID0ganFYSFI7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX3RyaWdnZXIoJ2NodW5rZG9uZScsIG51bGwsIG8pOwogICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll90cmlnZ2VyKCdjaHVua2Fsd2F5cycsIG51bGwsIG8pOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodWIgPCBmcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmlsZSB1cGxvYWQgbm90IHlldCBjb21wbGV0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRpbnVlIHdpdGggdGhlIG5leHQgY2h1bms6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGxvYWQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRmZC5yZXNvbHZlV2l0aCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Jlc3VsdCwgdGV4dFN0YXR1cywganFYSFJdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAuZmFpbChmdW5jdGlvbiAoanFYSFIsIHRleHRTdGF0dXMsIGVycm9yVGhyb3duKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG8uanFYSFIgPSBqcVhIUjsKICAgICAgICAgICAgICAgICAgICAgICAgby50ZXh0U3RhdHVzID0gdGV4dFN0YXR1czsKICAgICAgICAgICAgICAgICAgICAgICAgby5lcnJvclRocm93biA9IGVycm9yVGhyb3duOwogICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll90cmlnZ2VyKCdjaHVua2ZhaWwnLCBudWxsLCBvKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fdHJpZ2dlcignY2h1bmthbHdheXMnLCBudWxsLCBvKTsKICAgICAgICAgICAgICAgICAgICAgICAgZGZkLnJlamVjdFdpdGgoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbanFYSFIsIHRleHRTdGF0dXMsIGVycm9yVGhyb3duXQogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgLmFsd2F5cyhmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX2RlaW5pdFByb2dyZXNzTGlzdGVuZXIobyk7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHRoaXMuX2VuaGFuY2VQcm9taXNlKHByb21pc2UpOwogICAgICAgICAgICBwcm9taXNlLmFib3J0ID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGpxWEhSLmFib3J0KCk7CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHVwbG9hZCgpOwogICAgICAgICAgICByZXR1cm4gcHJvbWlzZTsKICAgICAgICB9LAoKICAgICAgICBfYmVmb3JlU2VuZDogZnVuY3Rpb24gKGUsIGRhdGEpIHsKICAgICAgICAgICAgaWYgKHRoaXMuX2FjdGl2ZSA9PT0gMCkgewogICAgICAgICAgICAgICAgLy8gdGhlIHN0YXJ0IGNhbGxiYWNrIGlzIHRyaWdnZXJlZCB3aGVuIGFuIHVwbG9hZCBzdGFydHMKICAgICAgICAgICAgICAgIC8vIGFuZCBubyBvdGhlciB1cGxvYWRzIGFyZSBjdXJyZW50bHkgcnVubmluZywKICAgICAgICAgICAgICAgIC8vIGVxdWl2YWxlbnQgdG8gdGhlIGdsb2JhbCBhamF4U3RhcnQgZXZlbnQ6CiAgICAgICAgICAgICAgICB0aGlzLl90cmlnZ2VyKCdzdGFydCcpOwogICAgICAgICAgICAgICAgLy8gU2V0IHRpbWVyIGZvciBnbG9iYWwgYml0cmF0ZSBwcm9ncmVzcyBjYWxjdWxhdGlvbjoKICAgICAgICAgICAgICAgIHRoaXMuX2JpdHJhdGVUaW1lciA9IG5ldyB0aGlzLl9CaXRyYXRlVGltZXIoKTsKICAgICAgICAgICAgICAgIC8vIFJlc2V0IHRoZSBnbG9iYWwgcHJvZ3Jlc3MgdmFsdWVzOgogICAgICAgICAgICAgICAgdGhpcy5fcHJvZ3Jlc3MubG9hZGVkID0gdGhpcy5fcHJvZ3Jlc3MudG90YWwgPSAwOwogICAgICAgICAgICAgICAgdGhpcy5fcHJvZ3Jlc3MuYml0cmF0ZSA9IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBjb250YWluZXIgb2JqZWN0cyBmb3IgdGhlIC5yZXNwb25zZSgpIGFuZAogICAgICAgICAgICAvLyAucHJvZ3Jlc3MoKSBtZXRob2RzIG9uIHRoZSBkYXRhIG9iamVjdCBhcmUgYXZhaWxhYmxlCiAgICAgICAgICAgIC8vIGFuZCByZXNldCB0byB0aGVpciBpbml0aWFsIHN0YXRlOgogICAgICAgICAgICB0aGlzLl9pbml0UmVzcG9uc2VPYmplY3QoZGF0YSk7CiAgICAgICAgICAgIHRoaXMuX2luaXRQcm9ncmVzc09iamVjdChkYXRhKTsKICAgICAgICAgICAgZGF0YS5fcHJvZ3Jlc3MubG9hZGVkID0gZGF0YS5sb2FkZWQgPSBkYXRhLnVwbG9hZGVkQnl0ZXMgfHwgMDsKICAgICAgICAgICAgZGF0YS5fcHJvZ3Jlc3MudG90YWwgPSBkYXRhLnRvdGFsID0gdGhpcy5fZ2V0VG90YWwoZGF0YS5maWxlcykgfHwgMTsKICAgICAgICAgICAgZGF0YS5fcHJvZ3Jlc3MuYml0cmF0ZSA9IGRhdGEuYml0cmF0ZSA9IDA7CiAgICAgICAgICAgIHRoaXMuX2FjdGl2ZSArPSAxOwogICAgICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBnbG9iYWwgcHJvZ3Jlc3MgdmFsdWVzOgogICAgICAgICAgICB0aGlzLl9wcm9ncmVzcy5sb2FkZWQgKz0gZGF0YS5sb2FkZWQ7CiAgICAgICAgICAgIHRoaXMuX3Byb2dyZXNzLnRvdGFsICs9IGRhdGEudG90YWw7CiAgICAgICAgfSwKCiAgICAgICAgX29uRG9uZTogZnVuY3Rpb24gKHJlc3VsdCwgdGV4dFN0YXR1cywganFYSFIsIG9wdGlvbnMpIHsKICAgICAgICAgICAgdmFyIHRvdGFsID0gb3B0aW9ucy5fcHJvZ3Jlc3MudG90YWwsCiAgICAgICAgICAgICAgICByZXNwb25zZSA9IG9wdGlvbnMuX3Jlc3BvbnNlOwogICAgICAgICAgICBpZiAob3B0aW9ucy5fcHJvZ3Jlc3MubG9hZGVkIDwgdG90YWwpIHsKICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhIHByb2dyZXNzIGV2ZW50IGlmIG5vIGZpbmFsIHByb2dyZXNzIGV2ZW50CiAgICAgICAgICAgICAgICAvLyB3aXRoIGxvYWRlZCBlcXVhbGluZyB0b3RhbCBoYXMgYmVlbiB0cmlnZ2VyZWQ6CiAgICAgICAgICAgICAgICB0aGlzLl9vblByb2dyZXNzKCQuRXZlbnQoJ3Byb2dyZXNzJywgewogICAgICAgICAgICAgICAgICAgIGxlbmd0aENvbXB1dGFibGU6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgbG9hZGVkOiB0b3RhbCwKICAgICAgICAgICAgICAgICAgICB0b3RhbDogdG90YWwKICAgICAgICAgICAgICAgIH0pLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXNwb25zZS5yZXN1bHQgPSBvcHRpb25zLnJlc3VsdCA9IHJlc3VsdDsKICAgICAgICAgICAgcmVzcG9uc2UudGV4dFN0YXR1cyA9IG9wdGlvbnMudGV4dFN0YXR1cyA9IHRleHRTdGF0dXM7CiAgICAgICAgICAgIHJlc3BvbnNlLmpxWEhSID0gb3B0aW9ucy5qcVhIUiA9IGpxWEhSOwogICAgICAgICAgICB0aGlzLl90cmlnZ2VyKCdkb25lJywgbnVsbCwgb3B0aW9ucyk7CiAgICAgICAgfSwKCiAgICAgICAgX29uRmFpbDogZnVuY3Rpb24gKGpxWEhSLCB0ZXh0U3RhdHVzLCBlcnJvclRocm93biwgb3B0aW9ucykgewogICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSBvcHRpb25zLl9yZXNwb25zZTsKICAgICAgICAgICAgaWYgKG9wdGlvbnMucmVjYWxjdWxhdGVQcm9ncmVzcykgewogICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBmYWlsZWQgKGVycm9yIG9yIGFib3J0KSBmaWxlIHVwbG9hZCBmcm9tCiAgICAgICAgICAgICAgICAvLyB0aGUgZ2xvYmFsIHByb2dyZXNzIGNhbGN1bGF0aW9uOgogICAgICAgICAgICAgICAgdGhpcy5fcHJvZ3Jlc3MubG9hZGVkIC09IG9wdGlvbnMuX3Byb2dyZXNzLmxvYWRlZDsKICAgICAgICAgICAgICAgIHRoaXMuX3Byb2dyZXNzLnRvdGFsIC09IG9wdGlvbnMuX3Byb2dyZXNzLnRvdGFsOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJlc3BvbnNlLmpxWEhSID0gb3B0aW9ucy5qcVhIUiA9IGpxWEhSOwogICAgICAgICAgICByZXNwb25zZS50ZXh0U3RhdHVzID0gb3B0aW9ucy50ZXh0U3RhdHVzID0gdGV4dFN0YXR1czsKICAgICAgICAgICAgcmVzcG9uc2UuZXJyb3JUaHJvd24gPSBvcHRpb25zLmVycm9yVGhyb3duID0gZXJyb3JUaHJvd247CiAgICAgICAgICAgIHRoaXMuX3RyaWdnZXIoJ2ZhaWwnLCBudWxsLCBvcHRpb25zKTsKICAgICAgICB9LAoKICAgICAgICBfb25BbHdheXM6IGZ1bmN0aW9uIChqcVhIUm9yUmVzdWx0LCB0ZXh0U3RhdHVzLCBqcVhIUm9yRXJyb3IsIG9wdGlvbnMpIHsKICAgICAgICAgICAgLy8ganFYSFJvclJlc3VsdCwgdGV4dFN0YXR1cyBhbmQganFYSFJvckVycm9yIGFyZSBhZGRlZCB0byB0aGUKICAgICAgICAgICAgLy8gb3B0aW9ucyBvYmplY3QgdmlhIGRvbmUgYW5kIGZhaWwgY2FsbGJhY2tzCiAgICAgICAgICAgIHRoaXMuX3RyaWdnZXIoJ2Fsd2F5cycsIG51bGwsIG9wdGlvbnMpOwogICAgICAgIH0sCgogICAgICAgIF9vblNlbmQ6IGZ1bmN0aW9uIChlLCBkYXRhKSB7CiAgICAgICAgICAgIGlmICghZGF0YS5zdWJtaXQpIHsKICAgICAgICAgICAgICAgIHRoaXMuX2FkZENvbnZlbmllbmNlTWV0aG9kcyhlLCBkYXRhKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgdGhhdCA9IHRoaXMsCiAgICAgICAgICAgICAgICBqcVhIUiwKICAgICAgICAgICAgICAgIGFib3J0ZWQsCiAgICAgICAgICAgICAgICBzbG90LAogICAgICAgICAgICAgICAgcGlwZSwKICAgICAgICAgICAgICAgIG9wdGlvbnMgPSB0aGF0Ll9nZXRBSkFYU2V0dGluZ3MoZGF0YSksCiAgICAgICAgICAgICAgICBzZW5kID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIHRoYXQuX3NlbmRpbmcgKz0gMTsKICAgICAgICAgICAgICAgICAgICAvLyBTZXQgdGltZXIgZm9yIGJpdHJhdGUgcHJvZ3Jlc3MgY2FsY3VsYXRpb246CiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5fYml0cmF0ZVRpbWVyID0gbmV3IHRoYXQuX0JpdHJhdGVUaW1lcigpOwogICAgICAgICAgICAgICAgICAgIGpxWEhSID0ganFYSFIgfHwgKAogICAgICAgICAgICAgICAgICAgICAgICAoKGFib3J0ZWQgfHwgdGhhdC5fdHJpZ2dlcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZW5kJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQuRXZlbnQoJ3NlbmQnLCB7ZGVsZWdhdGVkRXZlbnQ6IGV9KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMKICAgICAgICAgICAgICAgICAgICAgICAgKSA9PT0gZmFsc2UpICYmCiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX2dldFhIUlByb21pc2UoZmFsc2UsIG9wdGlvbnMuY29udGV4dCwgYWJvcnRlZCkpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX2NodW5rZWRVcGxvYWQob3B0aW9ucykgfHwgJC5hamF4KG9wdGlvbnMpCiAgICAgICAgICAgICAgICAgICAgKS5kb25lKGZ1bmN0aW9uIChyZXN1bHQsIHRleHRTdGF0dXMsIGpxWEhSKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX29uRG9uZShyZXN1bHQsIHRleHRTdGF0dXMsIGpxWEhSLCBvcHRpb25zKTsKICAgICAgICAgICAgICAgICAgICB9KS5mYWlsKGZ1bmN0aW9uIChqcVhIUiwgdGV4dFN0YXR1cywgZXJyb3JUaHJvd24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fb25GYWlsKGpxWEhSLCB0ZXh0U3RhdHVzLCBlcnJvclRocm93biwgb3B0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgfSkuYWx3YXlzKGZ1bmN0aW9uIChqcVhIUm9yUmVzdWx0LCB0ZXh0U3RhdHVzLCBqcVhIUm9yRXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fZGVpbml0UHJvZ3Jlc3NMaXN0ZW5lcihvcHRpb25zKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fb25BbHdheXMoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqcVhIUm9yUmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFN0YXR1cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpxWEhSb3JFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fc2VuZGluZyAtPSAxOwogICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9hY3RpdmUgLT0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMubGltaXRDb25jdXJyZW50VXBsb2FkcyAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMubGltaXRDb25jdXJyZW50VXBsb2FkcyA+IHRoYXQuX3NlbmRpbmcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN0YXJ0IHRoZSBuZXh0IHF1ZXVlZCB1cGxvYWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGF0IGhhcyBub3QgYmVlbiBhYm9ydGVkOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5leHRTbG90ID0gdGhhdC5fc2xvdHMuc2hpZnQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChuZXh0U2xvdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGF0Ll9nZXREZWZlcnJlZFN0YXRlKG5leHRTbG90KSA9PT0gJ3BlbmRpbmcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRTbG90LnJlc29sdmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRTbG90ID0gdGhhdC5fc2xvdHMuc2hpZnQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhhdC5fYWN0aXZlID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgc3RvcCBjYWxsYmFjayBpcyB0cmlnZ2VyZWQgd2hlbiBhbGwgdXBsb2FkcyBoYXZlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZWVuIGNvbXBsZXRlZCwgZXF1aXZhbGVudCB0byB0aGUgZ2xvYmFsIGFqYXhTdG9wIGV2ZW50OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fdHJpZ2dlcignc3RvcCcpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpxWEhSOwogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgdGhpcy5fYmVmb3JlU2VuZChlLCBvcHRpb25zKTsKICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zZXF1ZW50aWFsVXBsb2FkcyB8fAogICAgICAgICAgICAgICAgICAgICh0aGlzLm9wdGlvbnMubGltaXRDb25jdXJyZW50VXBsb2FkcyAmJgogICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5saW1pdENvbmN1cnJlbnRVcGxvYWRzIDw9IHRoaXMuX3NlbmRpbmcpKSB7CiAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmxpbWl0Q29uY3VycmVudFVwbG9hZHMgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgc2xvdCA9ICQuRGVmZXJyZWQoKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9zbG90cy5wdXNoKHNsb3QpOwogICAgICAgICAgICAgICAgICAgIHBpcGUgPSBzbG90LnRoZW4oc2VuZCk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlcXVlbmNlID0gdGhpcy5fc2VxdWVuY2UudGhlbihzZW5kLCBzZW5kKTsKICAgICAgICAgICAgICAgICAgICBwaXBlID0gdGhpcy5fc2VxdWVuY2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAvLyBSZXR1cm4gdGhlIHBpcGVkIFByb21pc2Ugb2JqZWN0LCBlbmhhbmNlZCB3aXRoIGFuIGFib3J0IG1ldGhvZCwKICAgICAgICAgICAgICAgIC8vIHdoaWNoIGlzIGRlbGVnYXRlZCB0byB0aGUganFYSFIgb2JqZWN0IG9mIHRoZSBjdXJyZW50IHVwbG9hZCwKICAgICAgICAgICAgICAgIC8vIGFuZCBqcVhIUiBjYWxsYmFja3MgbWFwcGVkIHRvIHRoZSBlcXVpdmFsZW50IFByb21pc2UgbWV0aG9kczoKICAgICAgICAgICAgICAgIHBpcGUuYWJvcnQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgYWJvcnRlZCA9IFt1bmRlZmluZWQsICdhYm9ydCcsICdhYm9ydCddOwogICAgICAgICAgICAgICAgICAgIGlmICghanFYSFIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNsb3QpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3QucmVqZWN0V2l0aChvcHRpb25zLmNvbnRleHQsIGFib3J0ZWQpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZW5kKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBqcVhIUi5hYm9ydCgpOwogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9lbmhhbmNlUHJvbWlzZShwaXBlKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VuZCgpOwogICAgICAgIH0sCgogICAgICAgIF9vbkFkZDogZnVuY3Rpb24gKGUsIGRhdGEpIHsKICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzLAogICAgICAgICAgICAgICAgcmVzdWx0ID0gdHJ1ZSwKICAgICAgICAgICAgICAgIG9wdGlvbnMgPSAkLmV4dGVuZCh7fSwgdGhpcy5vcHRpb25zLCBkYXRhKSwKICAgICAgICAgICAgICAgIGZpbGVzID0gZGF0YS5maWxlcywKICAgICAgICAgICAgICAgIGZpbGVzTGVuZ3RoID0gZmlsZXMubGVuZ3RoLAogICAgICAgICAgICAgICAgbGltaXQgPSBvcHRpb25zLmxpbWl0TXVsdGlGaWxlVXBsb2FkcywKICAgICAgICAgICAgICAgIGxpbWl0U2l6ZSA9IG9wdGlvbnMubGltaXRNdWx0aUZpbGVVcGxvYWRTaXplLAogICAgICAgICAgICAgICAgb3ZlcmhlYWQgPSBvcHRpb25zLmxpbWl0TXVsdGlGaWxlVXBsb2FkU2l6ZU92ZXJoZWFkLAogICAgICAgICAgICAgICAgYmF0Y2hTaXplID0gMCwKICAgICAgICAgICAgICAgIHBhcmFtTmFtZSA9IHRoaXMuX2dldFBhcmFtTmFtZShvcHRpb25zKSwKICAgICAgICAgICAgICAgIHBhcmFtTmFtZVNldCwKICAgICAgICAgICAgICAgIHBhcmFtTmFtZVNsaWNlLAogICAgICAgICAgICAgICAgZmlsZVNldCwKICAgICAgICAgICAgICAgIGksCiAgICAgICAgICAgICAgICBqID0gMDsKICAgICAgICAgICAgaWYgKCFmaWxlc0xlbmd0aCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChsaW1pdFNpemUgJiYgZmlsZXNbMF0uc2l6ZSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICBsaW1pdFNpemUgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCEob3B0aW9ucy5zaW5nbGVGaWxlVXBsb2FkcyB8fCBsaW1pdCB8fCBsaW1pdFNpemUpIHx8CiAgICAgICAgICAgICAgICAgICAgIXRoaXMuX2lzWEhSVXBsb2FkKG9wdGlvbnMpKSB7CiAgICAgICAgICAgICAgICBmaWxlU2V0ID0gW2ZpbGVzXTsKICAgICAgICAgICAgICAgIHBhcmFtTmFtZVNldCA9IFtwYXJhbU5hbWVdOwogICAgICAgICAgICB9IGVsc2UgaWYgKCEob3B0aW9ucy5zaW5nbGVGaWxlVXBsb2FkcyB8fCBsaW1pdFNpemUpICYmIGxpbWl0KSB7CiAgICAgICAgICAgICAgICBmaWxlU2V0ID0gW107CiAgICAgICAgICAgICAgICBwYXJhbU5hbWVTZXQgPSBbXTsKICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBmaWxlc0xlbmd0aDsgaSArPSBsaW1pdCkgewogICAgICAgICAgICAgICAgICAgIGZpbGVTZXQucHVzaChmaWxlcy5zbGljZShpLCBpICsgbGltaXQpKTsKICAgICAgICAgICAgICAgICAgICBwYXJhbU5hbWVTbGljZSA9IHBhcmFtTmFtZS5zbGljZShpLCBpICsgbGltaXQpOwogICAgICAgICAgICAgICAgICAgIGlmICghcGFyYW1OYW1lU2xpY2UubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtTmFtZVNsaWNlID0gcGFyYW1OYW1lOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBwYXJhbU5hbWVTZXQucHVzaChwYXJhbU5hbWVTbGljZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSBpZiAoIW9wdGlvbnMuc2luZ2xlRmlsZVVwbG9hZHMgJiYgbGltaXRTaXplKSB7CiAgICAgICAgICAgICAgICBmaWxlU2V0ID0gW107CiAgICAgICAgICAgICAgICBwYXJhbU5hbWVTZXQgPSBbXTsKICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBmaWxlc0xlbmd0aDsgaSA9IGkgKyAxKSB7CiAgICAgICAgICAgICAgICAgICAgYmF0Y2hTaXplICs9IGZpbGVzW2ldLnNpemUgKyBvdmVyaGVhZDsKICAgICAgICAgICAgICAgICAgICBpZiAoaSArIDEgPT09IGZpbGVzTGVuZ3RoIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGJhdGNoU2l6ZSArIGZpbGVzW2kgKyAxXS5zaXplICsgb3ZlcmhlYWQpID4gbGltaXRTaXplKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbWl0ICYmIGkgKyAxIC0gaiA+PSBsaW1pdCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZmlsZVNldC5wdXNoKGZpbGVzLnNsaWNlKGosIGkgKyAxKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtTmFtZVNsaWNlID0gcGFyYW1OYW1lLnNsaWNlKGosIGkgKyAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXJhbU5hbWVTbGljZS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtTmFtZVNsaWNlID0gcGFyYW1OYW1lOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtTmFtZVNldC5wdXNoKHBhcmFtTmFtZVNsaWNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgaiA9IGkgKyAxOwogICAgICAgICAgICAgICAgICAgICAgICBiYXRjaFNpemUgPSAwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHBhcmFtTmFtZVNldCA9IHBhcmFtTmFtZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBkYXRhLm9yaWdpbmFsRmlsZXMgPSBmaWxlczsKICAgICAgICAgICAgJC5lYWNoKGZpbGVTZXQgfHwgZmlsZXMsIGZ1bmN0aW9uIChpbmRleCwgZWxlbWVudCkgewogICAgICAgICAgICAgICAgdmFyIG5ld0RhdGEgPSAkLmV4dGVuZCh7fSwgZGF0YSk7CiAgICAgICAgICAgICAgICBuZXdEYXRhLmZpbGVzID0gZmlsZVNldCA/IGVsZW1lbnQgOiBbZWxlbWVudF07CiAgICAgICAgICAgICAgICBuZXdEYXRhLnBhcmFtTmFtZSA9IHBhcmFtTmFtZVNldFtpbmRleF07CiAgICAgICAgICAgICAgICB0aGF0Ll9pbml0UmVzcG9uc2VPYmplY3QobmV3RGF0YSk7CiAgICAgICAgICAgICAgICB0aGF0Ll9pbml0UHJvZ3Jlc3NPYmplY3QobmV3RGF0YSk7CiAgICAgICAgICAgICAgICB0aGF0Ll9hZGRDb252ZW5pZW5jZU1ldGhvZHMoZSwgbmV3RGF0YSk7CiAgICAgICAgICAgICAgICByZXN1bHQgPSB0aGF0Ll90cmlnZ2VyKAogICAgICAgICAgICAgICAgICAgICdhZGQnLAogICAgICAgICAgICAgICAgICAgICQuRXZlbnQoJ2FkZCcsIHtkZWxlZ2F0ZWRFdmVudDogZX0pLAogICAgICAgICAgICAgICAgICAgIG5ld0RhdGEKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICB9LAoKICAgICAgICBfcmVwbGFjZUZpbGVJbnB1dDogZnVuY3Rpb24gKGRhdGEpIHsKICAgICAgICAgICAgdmFyIGlucHV0ID0gZGF0YS5maWxlSW5wdXQsCiAgICAgICAgICAgICAgICBpbnB1dENsb25lID0gaW5wdXQuY2xvbmUodHJ1ZSksCiAgICAgICAgICAgICAgICByZXN0b3JlRm9jdXMgPSBpbnB1dC5pcyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KTsKICAgICAgICAgICAgLy8gQWRkIGEgcmVmZXJlbmNlIGZvciB0aGUgbmV3IGNsb25lZCBmaWxlIGlucHV0IHRvIHRoZSBkYXRhIGFyZ3VtZW50OgogICAgICAgICAgICBkYXRhLmZpbGVJbnB1dENsb25lID0gaW5wdXRDbG9uZTsKICAgICAgICAgICAgJCgnPGZvcm0+PC9mb3JtPicpLmFwcGVuZChpbnB1dENsb25lKVswXS5yZXNldCgpOwogICAgICAgICAgICAvLyBEZXRhY2hpbmcgYWxsb3dzIHRvIGluc2VydCB0aGUgZmlsZUlucHV0IG9uIGFub3RoZXIgZm9ybQogICAgICAgICAgICAvLyB3aXRob3V0IGxvb3NpbmcgdGhlIGZpbGUgaW5wdXQgdmFsdWU6CiAgICAgICAgICAgIGlucHV0LmFmdGVyKGlucHV0Q2xvbmUpLmRldGFjaCgpOwogICAgICAgICAgICAvLyBJZiB0aGUgZmlsZUlucHV0IGhhZCBmb2N1cyBiZWZvcmUgaXQgd2FzIGRldGFjaGVkLAogICAgICAgICAgICAvLyByZXN0b3JlIGZvY3VzIHRvIHRoZSBpbnB1dENsb25lLgogICAgICAgICAgICBpZiAocmVzdG9yZUZvY3VzKSB7CiAgICAgICAgICAgICAgICBpbnB1dENsb25lLmZvY3VzKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gQXZvaWQgbWVtb3J5IGxlYWtzIHdpdGggdGhlIGRldGFjaGVkIGZpbGUgaW5wdXQ6CiAgICAgICAgICAgICQuY2xlYW5EYXRhKGlucHV0LnVuYmluZCgncmVtb3ZlJykpOwogICAgICAgICAgICAvLyBSZXBsYWNlIHRoZSBvcmlnaW5hbCBmaWxlIGlucHV0IGVsZW1lbnQgaW4gdGhlIGZpbGVJbnB1dAogICAgICAgICAgICAvLyBlbGVtZW50cyBzZXQgd2l0aCB0aGUgY2xvbmUsIHdoaWNoIGhhcyBiZWVuIGNvcGllZCBpbmNsdWRpbmcKICAgICAgICAgICAgLy8gZXZlbnQgaGFuZGxlcnM6CiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5maWxlSW5wdXQgPSB0aGlzLm9wdGlvbnMuZmlsZUlucHV0Lm1hcChmdW5jdGlvbiAoaSwgZWwpIHsKICAgICAgICAgICAgICAgIGlmIChlbCA9PT0gaW5wdXRbMF0pIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5wdXRDbG9uZVswXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBlbDsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIC8vIElmIHRoZSB3aWRnZXQgaGFzIGJlZW4gaW5pdGlhbGl6ZWQgb24gdGhlIGZpbGUgaW5wdXQgaXRzZWxmLAogICAgICAgICAgICAvLyBvdmVycmlkZSB0aGlzLmVsZW1lbnQgd2l0aCB0aGUgZmlsZSBpbnB1dCBjbG9uZToKICAgICAgICAgICAgaWYgKGlucHV0WzBdID09PSB0aGlzLmVsZW1lbnRbMF0pIHsKICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudCA9IGlucHV0Q2xvbmU7CiAgICAgICAgICAgIH0KICAgICAgICB9LAoKICAgICAgICBfaGFuZGxlRmlsZVRyZWVFbnRyeTogZnVuY3Rpb24gKGVudHJ5LCBwYXRoKSB7CiAgICAgICAgICAgIHZhciB0aGF0ID0gdGhpcywKICAgICAgICAgICAgICAgIGRmZCA9ICQuRGVmZXJyZWQoKSwKICAgICAgICAgICAgICAgIGVudHJpZXMgPSBbXSwKICAgICAgICAgICAgICAgIGRpclJlYWRlciwKICAgICAgICAgICAgICAgIGVycm9ySGFuZGxlciA9IGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGUgJiYgIWUuZW50cnkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5lbnRyeSA9IGVudHJ5OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAvLyBTaW5jZSAkLndoZW4gcmV0dXJucyBpbW1lZGlhdGVseSBpZiBvbmUKICAgICAgICAgICAgICAgICAgICAvLyBEZWZlcnJlZCBpcyByZWplY3RlZCwgd2UgdXNlIHJlc29sdmUgaW5zdGVhZC4KICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGFsbG93cyB2YWxpZCBmaWxlcyBhbmQgaW52YWxpZCBpdGVtcwogICAgICAgICAgICAgICAgICAgIC8vIHRvIGJlIHJldHVybmVkIHRvZ2V0aGVyIGluIG9uZSBzZXQ6CiAgICAgICAgICAgICAgICAgICAgZGZkLnJlc29sdmUoW2VdKTsKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzdWNjZXNzSGFuZGxlciA9IGZ1bmN0aW9uIChlbnRyaWVzKSB7CiAgICAgICAgICAgICAgICAgICAgdGhhdC5faGFuZGxlRmlsZVRyZWVFbnRyaWVzKAogICAgICAgICAgICAgICAgICAgICAgICBlbnRyaWVzLAogICAgICAgICAgICAgICAgICAgICAgICBwYXRoICsgZW50cnkubmFtZSArICcvJwogICAgICAgICAgICAgICAgICAgICkuZG9uZShmdW5jdGlvbiAoZmlsZXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGZkLnJlc29sdmUoZmlsZXMpOwogICAgICAgICAgICAgICAgICAgIH0pLmZhaWwoZXJyb3JIYW5kbGVyKTsKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICByZWFkRW50cmllcyA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICBkaXJSZWFkZXIucmVhZEVudHJpZXMoZnVuY3Rpb24gKHJlc3VsdHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHRzLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2Vzc0hhbmRsZXIoZW50cmllcyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyaWVzID0gZW50cmllcy5jb25jYXQocmVzdWx0cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkRW50cmllcygpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwgZXJyb3JIYW5kbGVyKTsKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIHBhdGggPSBwYXRoIHx8ICcnOwogICAgICAgICAgICBpZiAoZW50cnkuaXNGaWxlKSB7CiAgICAgICAgICAgICAgICBpZiAoZW50cnkuX2ZpbGUpIHsKICAgICAgICAgICAgICAgICAgICAvLyBXb3JrYXJvdW5kIGZvciBDaHJvbWUgYnVnICMxNDk3MzUKICAgICAgICAgICAgICAgICAgICBlbnRyeS5fZmlsZS5yZWxhdGl2ZVBhdGggPSBwYXRoOwogICAgICAgICAgICAgICAgICAgIGRmZC5yZXNvbHZlKGVudHJ5Ll9maWxlKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgZW50cnkuZmlsZShmdW5jdGlvbiAoZmlsZSkgewogICAgICAgICAgICAgICAgICAgICAgICBmaWxlLnJlbGF0aXZlUGF0aCA9IHBhdGg7CiAgICAgICAgICAgICAgICAgICAgICAgIGRmZC5yZXNvbHZlKGZpbGUpOwogICAgICAgICAgICAgICAgICAgIH0sIGVycm9ySGFuZGxlcik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSBpZiAoZW50cnkuaXNEaXJlY3RvcnkpIHsKICAgICAgICAgICAgICAgIGRpclJlYWRlciA9IGVudHJ5LmNyZWF0ZVJlYWRlcigpOwogICAgICAgICAgICAgICAgcmVhZEVudHJpZXMoKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIC8vIFJldHVybiBhbiBlbXB0eSBsaXN0IGZvciBmaWxlIHN5c3RlbSBpdGVtcwogICAgICAgICAgICAgICAgLy8gb3RoZXIgdGhhbiBmaWxlcyBvciBkaXJlY3RvcmllczoKICAgICAgICAgICAgICAgIGRmZC5yZXNvbHZlKFtdKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gZGZkLnByb21pc2UoKTsKICAgICAgICB9LAoKICAgICAgICBfaGFuZGxlRmlsZVRyZWVFbnRyaWVzOiBmdW5jdGlvbiAoZW50cmllcywgcGF0aCkgewogICAgICAgICAgICB2YXIgdGhhdCA9IHRoaXM7CiAgICAgICAgICAgIHJldHVybiAkLndoZW4uYXBwbHkoCiAgICAgICAgICAgICAgICAkLAogICAgICAgICAgICAgICAgJC5tYXAoZW50cmllcywgZnVuY3Rpb24gKGVudHJ5KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoYXQuX2hhbmRsZUZpbGVUcmVlRW50cnkoZW50cnksIHBhdGgpOwogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgKS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHJldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KAogICAgICAgICAgICAgICAgICAgIFtdLAogICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cwogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSwKCiAgICAgICAgX2dldERyb3BwZWRGaWxlczogZnVuY3Rpb24gKGRhdGFUcmFuc2ZlcikgewogICAgICAgICAgICBkYXRhVHJhbnNmZXIgPSBkYXRhVHJhbnNmZXIgfHwge307CiAgICAgICAgICAgIHZhciBpdGVtcyA9IGRhdGFUcmFuc2Zlci5pdGVtczsKICAgICAgICAgICAgaWYgKGl0ZW1zICYmIGl0ZW1zLmxlbmd0aCAmJiAoaXRlbXNbMF0ud2Via2l0R2V0QXNFbnRyeSB8fAogICAgICAgICAgICAgICAgICAgIGl0ZW1zWzBdLmdldEFzRW50cnkpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5faGFuZGxlRmlsZVRyZWVFbnRyaWVzKAogICAgICAgICAgICAgICAgICAgICQubWFwKGl0ZW1zLCBmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZW50cnk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLndlYmtpdEdldEFzRW50cnkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5ID0gaXRlbS53ZWJraXRHZXRBc0VudHJ5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZW50cnkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXb3JrYXJvdW5kIGZvciBDaHJvbWUgYnVnICMxNDk3MzU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnkuX2ZpbGUgPSBpdGVtLmdldEFzRmlsZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLmdldEFzRW50cnkoKTsKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gJC5EZWZlcnJlZCgpLnJlc29sdmUoCiAgICAgICAgICAgICAgICAkLm1ha2VBcnJheShkYXRhVHJhbnNmZXIuZmlsZXMpCiAgICAgICAgICAgICkucHJvbWlzZSgpOwogICAgICAgIH0sCgogICAgICAgIF9nZXRTaW5nbGVGaWxlSW5wdXRGaWxlczogZnVuY3Rpb24gKGZpbGVJbnB1dCkgewogICAgICAgICAgICBmaWxlSW5wdXQgPSAkKGZpbGVJbnB1dCk7CiAgICAgICAgICAgIHZhciBlbnRyaWVzID0gZmlsZUlucHV0LnByb3AoJ3dlYmtpdEVudHJpZXMnKSB8fAogICAgICAgICAgICAgICAgICAgIGZpbGVJbnB1dC5wcm9wKCdlbnRyaWVzJyksCiAgICAgICAgICAgICAgICBmaWxlcywKICAgICAgICAgICAgICAgIHZhbHVlOwogICAgICAgICAgICBpZiAoZW50cmllcyAmJiBlbnRyaWVzLmxlbmd0aCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2hhbmRsZUZpbGVUcmVlRW50cmllcyhlbnRyaWVzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmaWxlcyA9ICQubWFrZUFycmF5KGZpbGVJbnB1dC5wcm9wKCdmaWxlcycpKTsKICAgICAgICAgICAgaWYgKCFmaWxlcy5sZW5ndGgpIHsKICAgICAgICAgICAgICAgIHZhbHVlID0gZmlsZUlucHV0LnByb3AoJ3ZhbHVlJyk7CiAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQuRGVmZXJyZWQoKS5yZXNvbHZlKFtdKS5wcm9taXNlKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgZmlsZXMgcHJvcGVydHkgaXMgbm90IGF2YWlsYWJsZSwgdGhlIGJyb3dzZXIgZG9lcyBub3QKICAgICAgICAgICAgICAgIC8vIHN1cHBvcnQgdGhlIEZpbGUgQVBJIGFuZCB3ZSBhZGQgYSBwc2V1ZG8gRmlsZSBvYmplY3Qgd2l0aAogICAgICAgICAgICAgICAgLy8gdGhlIGlucHV0IHZhbHVlIGFzIG5hbWUgd2l0aCBwYXRoIGluZm9ybWF0aW9uIHJlbW92ZWQ6CiAgICAgICAgICAgICAgICBmaWxlcyA9IFt7bmFtZTogdmFsdWUucmVwbGFjZSgvXi4qXFwvLCAnJyl9XTsKICAgICAgICAgICAgfSBlbHNlIGlmIChmaWxlc1swXS5uYW1lID09PSB1bmRlZmluZWQgJiYgZmlsZXNbMF0uZmlsZU5hbWUpIHsKICAgICAgICAgICAgICAgIC8vIEZpbGUgbm9ybWFsaXphdGlvbiBmb3IgU2FmYXJpIDQgYW5kIEZpcmVmb3ggMzoKICAgICAgICAgICAgICAgICQuZWFjaChmaWxlcywgZnVuY3Rpb24gKGluZGV4LCBmaWxlKSB7CiAgICAgICAgICAgICAgICAgICAgZmlsZS5uYW1lID0gZmlsZS5maWxlTmFtZTsKICAgICAgICAgICAgICAgICAgICBmaWxlLnNpemUgPSBmaWxlLmZpbGVTaXplOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuICQuRGVmZXJyZWQoKS5yZXNvbHZlKGZpbGVzKS5wcm9taXNlKCk7CiAgICAgICAgfSwKCiAgICAgICAgX2dldEZpbGVJbnB1dEZpbGVzOiBmdW5jdGlvbiAoZmlsZUlucHV0KSB7CiAgICAgICAgICAgIGlmICghKGZpbGVJbnB1dCBpbnN0YW5jZW9mICQpIHx8IGZpbGVJbnB1dC5sZW5ndGggPT09IDEpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9nZXRTaW5nbGVGaWxlSW5wdXRGaWxlcyhmaWxlSW5wdXQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAkLndoZW4uYXBwbHkoCiAgICAgICAgICAgICAgICAkLAogICAgICAgICAgICAgICAgJC5tYXAoZmlsZUlucHV0LCB0aGlzLl9nZXRTaW5nbGVGaWxlSW5wdXRGaWxlcykKICAgICAgICAgICAgKS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHJldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KAogICAgICAgICAgICAgICAgICAgIFtdLAogICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cwogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSwKCiAgICAgICAgX29uQ2hhbmdlOiBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICB2YXIgdGhhdCA9IHRoaXMsCiAgICAgICAgICAgICAgICBkYXRhID0gewogICAgICAgICAgICAgICAgICAgIGZpbGVJbnB1dDogJChlLnRhcmdldCksCiAgICAgICAgICAgICAgICAgICAgZm9ybTogJChlLnRhcmdldC5mb3JtKQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgdGhpcy5fZ2V0RmlsZUlucHV0RmlsZXMoZGF0YS5maWxlSW5wdXQpLmFsd2F5cyhmdW5jdGlvbiAoZmlsZXMpIHsKICAgICAgICAgICAgICAgIGRhdGEuZmlsZXMgPSBmaWxlczsKICAgICAgICAgICAgICAgIGlmICh0aGF0Lm9wdGlvbnMucmVwbGFjZUZpbGVJbnB1dCkgewogICAgICAgICAgICAgICAgICAgIHRoYXQuX3JlcGxhY2VGaWxlSW5wdXQoZGF0YSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAodGhhdC5fdHJpZ2dlcigKICAgICAgICAgICAgICAgICAgICAgICAgJ2NoYW5nZScsCiAgICAgICAgICAgICAgICAgICAgICAgICQuRXZlbnQoJ2NoYW5nZScsIHtkZWxlZ2F0ZWRFdmVudDogZX0pLAogICAgICAgICAgICAgICAgICAgICAgICBkYXRhCiAgICAgICAgICAgICAgICAgICAgKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICB0aGF0Ll9vbkFkZChlLCBkYXRhKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfSwKCiAgICAgICAgX29uUGFzdGU6IGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgIHZhciBpdGVtcyA9IGUub3JpZ2luYWxFdmVudCAmJiBlLm9yaWdpbmFsRXZlbnQuY2xpcGJvYXJkRGF0YSAmJgogICAgICAgICAgICAgICAgICAgIGUub3JpZ2luYWxFdmVudC5jbGlwYm9hcmREYXRhLml0ZW1zLAogICAgICAgICAgICAgICAgZGF0YSA9IHtmaWxlczogW119OwogICAgICAgICAgICBpZiAoaXRlbXMgJiYgaXRlbXMubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAkLmVhY2goaXRlbXMsIGZ1bmN0aW9uIChpbmRleCwgaXRlbSkgewogICAgICAgICAgICAgICAgICAgIHZhciBmaWxlID0gaXRlbS5nZXRBc0ZpbGUgJiYgaXRlbS5nZXRBc0ZpbGUoKTsKICAgICAgICAgICAgICAgICAgICBpZiAoZmlsZSkgewogICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmZpbGVzLnB1c2goZmlsZSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBpZiAodGhpcy5fdHJpZ2dlcigKICAgICAgICAgICAgICAgICAgICAgICAgJ3Bhc3RlJywKICAgICAgICAgICAgICAgICAgICAgICAgJC5FdmVudCgncGFzdGUnLCB7ZGVsZWdhdGVkRXZlbnQ6IGV9KSwKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YQogICAgICAgICAgICAgICAgICAgICkgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb25BZGQoZSwgZGF0YSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAoKICAgICAgICBfb25Ecm9wOiBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICBlLmRhdGFUcmFuc2ZlciA9IGUub3JpZ2luYWxFdmVudCAmJiBlLm9yaWdpbmFsRXZlbnQuZGF0YVRyYW5zZmVyOwogICAgICAgICAgICB2YXIgdGhhdCA9IHRoaXMsCiAgICAgICAgICAgICAgICBkYXRhVHJhbnNmZXIgPSBlLmRhdGFUcmFuc2ZlciwKICAgICAgICAgICAgICAgIGRhdGEgPSB7fTsKICAgICAgICAgICAgaWYgKGRhdGFUcmFuc2ZlciAmJiBkYXRhVHJhbnNmZXIuZmlsZXMgJiYgZGF0YVRyYW5zZmVyLmZpbGVzLmxlbmd0aCkgewogICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgdGhpcy5fZ2V0RHJvcHBlZEZpbGVzKGRhdGFUcmFuc2ZlcikuYWx3YXlzKGZ1bmN0aW9uIChmaWxlcykgewogICAgICAgICAgICAgICAgICAgIGRhdGEuZmlsZXMgPSBmaWxlczsKICAgICAgICAgICAgICAgICAgICBpZiAodGhhdC5fdHJpZ2dlcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkcm9wJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQuRXZlbnQoJ2Ryb3AnLCB7ZGVsZWdhdGVkRXZlbnQ6IGV9KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEKICAgICAgICAgICAgICAgICAgICAgICAgKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5fb25BZGQoZSwgZGF0YSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICB9LAoKICAgICAgICBfb25EcmFnT3ZlcjogZ2V0RHJhZ0hhbmRsZXIoJ2RyYWdvdmVyJyksCgogICAgICAgIF9vbkRyYWdFbnRlcjogZ2V0RHJhZ0hhbmRsZXIoJ2RyYWdlbnRlcicpLAoKICAgICAgICBfb25EcmFnTGVhdmU6IGdldERyYWdIYW5kbGVyKCdkcmFnbGVhdmUnKSwKCiAgICAgICAgX2luaXRFdmVudEhhbmRsZXJzOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGlmICh0aGlzLl9pc1hIUlVwbG9hZCh0aGlzLm9wdGlvbnMpKSB7CiAgICAgICAgICAgICAgICB0aGlzLl9vbih0aGlzLm9wdGlvbnMuZHJvcFpvbmUsIHsKICAgICAgICAgICAgICAgICAgICBkcmFnb3ZlcjogdGhpcy5fb25EcmFnT3ZlciwKICAgICAgICAgICAgICAgICAgICBkcm9wOiB0aGlzLl9vbkRyb3AsCiAgICAgICAgICAgICAgICAgICAgLy8gZXZlbnQucHJldmVudERlZmF1bHQoKSBvbiBkcmFnZW50ZXIgaXMgcmVxdWlyZWQgZm9yIElFMTArOgogICAgICAgICAgICAgICAgICAgIGRyYWdlbnRlcjogdGhpcy5fb25EcmFnRW50ZXIsCiAgICAgICAgICAgICAgICAgICAgLy8gZHJhZ2xlYXZlIGlzIG5vdCByZXF1aXJlZCwgYnV0IGFkZGVkIGZvciBjb21wbGV0ZW5lc3M6CiAgICAgICAgICAgICAgICAgICAgZHJhZ2xlYXZlOiB0aGlzLl9vbkRyYWdMZWF2ZQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB0aGlzLl9vbih0aGlzLm9wdGlvbnMucGFzdGVab25lLCB7CiAgICAgICAgICAgICAgICAgICAgcGFzdGU6IHRoaXMuX29uUGFzdGUKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgkLnN1cHBvcnQuZmlsZUlucHV0KSB7CiAgICAgICAgICAgICAgICB0aGlzLl9vbih0aGlzLm9wdGlvbnMuZmlsZUlucHV0LCB7CiAgICAgICAgICAgICAgICAgICAgY2hhbmdlOiB0aGlzLl9vbkNoYW5nZQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICB9LAoKICAgICAgICBfZGVzdHJveUV2ZW50SGFuZGxlcnM6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdGhpcy5fb2ZmKHRoaXMub3B0aW9ucy5kcm9wWm9uZSwgJ2RyYWdlbnRlciBkcmFnbGVhdmUgZHJhZ292ZXIgZHJvcCcpOwogICAgICAgICAgICB0aGlzLl9vZmYodGhpcy5vcHRpb25zLnBhc3RlWm9uZSwgJ3Bhc3RlJyk7CiAgICAgICAgICAgIHRoaXMuX29mZih0aGlzLm9wdGlvbnMuZmlsZUlucHV0LCAnY2hhbmdlJyk7CiAgICAgICAgfSwKCiAgICAgICAgX2Rlc3Ryb3k6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdGhpcy5fZGVzdHJveUV2ZW50SGFuZGxlcnMoKTsKICAgICAgICB9LAoKICAgICAgICBfc2V0T3B0aW9uOiBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkgewogICAgICAgICAgICB2YXIgcmVpbml0ID0gJC5pbkFycmF5KGtleSwgdGhpcy5fc3BlY2lhbE9wdGlvbnMpICE9PSAtMTsKICAgICAgICAgICAgaWYgKHJlaW5pdCkgewogICAgICAgICAgICAgICAgdGhpcy5fZGVzdHJveUV2ZW50SGFuZGxlcnMoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0aGlzLl9zdXBlcihrZXksIHZhbHVlKTsKICAgICAgICAgICAgaWYgKHJlaW5pdCkgewogICAgICAgICAgICAgICAgdGhpcy5faW5pdFNwZWNpYWxPcHRpb25zKCk7CiAgICAgICAgICAgICAgICB0aGlzLl9pbml0RXZlbnRIYW5kbGVycygpOwogICAgICAgICAgICB9CiAgICAgICAgfSwKCiAgICAgICAgX2luaXRTcGVjaWFsT3B0aW9uczogZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9uczsKICAgICAgICAgICAgaWYgKG9wdGlvbnMuZmlsZUlucHV0ID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgIG9wdGlvbnMuZmlsZUlucHV0ID0gdGhpcy5lbGVtZW50LmlzKCdpbnB1dFt0eXBlPSJmaWxlIl0nKSA/CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudCA6IHRoaXMuZWxlbWVudC5maW5kKCdpbnB1dFt0eXBlPSJmaWxlIl0nKTsKICAgICAgICAgICAgfSBlbHNlIGlmICghKG9wdGlvbnMuZmlsZUlucHV0IGluc3RhbmNlb2YgJCkpIHsKICAgICAgICAgICAgICAgIG9wdGlvbnMuZmlsZUlucHV0ID0gJChvcHRpb25zLmZpbGVJbnB1dCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCEob3B0aW9ucy5kcm9wWm9uZSBpbnN0YW5jZW9mICQpKSB7CiAgICAgICAgICAgICAgICBvcHRpb25zLmRyb3Bab25lID0gJChvcHRpb25zLmRyb3Bab25lKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIShvcHRpb25zLnBhc3RlWm9uZSBpbnN0YW5jZW9mICQpKSB7CiAgICAgICAgICAgICAgICBvcHRpb25zLnBhc3RlWm9uZSA9ICQob3B0aW9ucy5wYXN0ZVpvbmUpOwogICAgICAgICAgICB9CiAgICAgICAgfSwKCiAgICAgICAgX2dldFJlZ0V4cDogZnVuY3Rpb24gKHN0cikgewogICAgICAgICAgICB2YXIgcGFydHMgPSBzdHIuc3BsaXQoJy8nKSwKICAgICAgICAgICAgICAgIG1vZGlmaWVycyA9IHBhcnRzLnBvcCgpOwogICAgICAgICAgICBwYXJ0cy5zaGlmdCgpOwogICAgICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChwYXJ0cy5qb2luKCcvJyksIG1vZGlmaWVycyk7CiAgICAgICAgfSwKCiAgICAgICAgX2lzUmVnRXhwT3B0aW9uOiBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkgewogICAgICAgICAgICByZXR1cm4ga2V5ICE9PSAndXJsJyAmJiAkLnR5cGUodmFsdWUpID09PSAnc3RyaW5nJyAmJgogICAgICAgICAgICAgICAgL15cLy4qXC9baWdtXXswLDN9JC8udGVzdCh2YWx1ZSk7CiAgICAgICAgfSwKCiAgICAgICAgX2luaXREYXRhQXR0cmlidXRlczogZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgdGhhdCA9IHRoaXMsCiAgICAgICAgICAgICAgICBvcHRpb25zID0gdGhpcy5vcHRpb25zLAogICAgICAgICAgICAgICAgZGF0YSA9IHRoaXMuZWxlbWVudC5kYXRhKCk7CiAgICAgICAgICAgIC8vIEluaXRpYWxpemUgb3B0aW9ucyBzZXQgdmlhIEhUTUw1IGRhdGEtYXR0cmlidXRlczoKICAgICAgICAgICAgJC5lYWNoKAogICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50WzBdLmF0dHJpYnV0ZXMsCiAgICAgICAgICAgICAgICBmdW5jdGlvbiAoaW5kZXgsIGF0dHIpIHsKICAgICAgICAgICAgICAgICAgICB2YXIga2V5ID0gYXR0ci5uYW1lLnRvTG93ZXJDYXNlKCksCiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOwogICAgICAgICAgICAgICAgICAgIGlmICgvXmRhdGEtLy50ZXN0KGtleSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29udmVydCBoeXBoZW4tYXRlZCBrZXkgdG8gY2FtZWxDYXNlOgogICAgICAgICAgICAgICAgICAgICAgICBrZXkgPSBrZXkuc2xpY2UoNSkucmVwbGFjZSgvLVthLXpdL2csIGZ1bmN0aW9uIChzdHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdHIuY2hhckF0KDEpLnRvVXBwZXJDYXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGRhdGFba2V5XTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoYXQuX2lzUmVnRXhwT3B0aW9uKGtleSwgdmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHRoYXQuX2dldFJlZ0V4cCh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uc1trZXldID0gdmFsdWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApOwogICAgICAgIH0sCgogICAgICAgIF9jcmVhdGU6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdGhpcy5faW5pdERhdGFBdHRyaWJ1dGVzKCk7CiAgICAgICAgICAgIHRoaXMuX2luaXRTcGVjaWFsT3B0aW9ucygpOwogICAgICAgICAgICB0aGlzLl9zbG90cyA9IFtdOwogICAgICAgICAgICB0aGlzLl9zZXF1ZW5jZSA9IHRoaXMuX2dldFhIUlByb21pc2UodHJ1ZSk7CiAgICAgICAgICAgIHRoaXMuX3NlbmRpbmcgPSB0aGlzLl9hY3RpdmUgPSAwOwogICAgICAgICAgICB0aGlzLl9pbml0UHJvZ3Jlc3NPYmplY3QodGhpcyk7CiAgICAgICAgICAgIHRoaXMuX2luaXRFdmVudEhhbmRsZXJzKCk7CiAgICAgICAgfSwKCiAgICAgICAgLy8gVGhpcyBtZXRob2QgaXMgZXhwb3NlZCB0byB0aGUgd2lkZ2V0IEFQSSBhbmQgYWxsb3dzIHRvIHF1ZXJ5CiAgICAgICAgLy8gdGhlIG51bWJlciBvZiBhY3RpdmUgdXBsb2FkczoKICAgICAgICBhY3RpdmU6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGl2ZTsKICAgICAgICB9LAoKICAgICAgICAvLyBUaGlzIG1ldGhvZCBpcyBleHBvc2VkIHRvIHRoZSB3aWRnZXQgQVBJIGFuZCBhbGxvd3MgdG8gcXVlcnkKICAgICAgICAvLyB0aGUgd2lkZ2V0IHVwbG9hZCBwcm9ncmVzcy4KICAgICAgICAvLyBJdCByZXR1cm5zIGFuIG9iamVjdCB3aXRoIGxvYWRlZCwgdG90YWwgYW5kIGJpdHJhdGUgcHJvcGVydGllcwogICAgICAgIC8vIGZvciB0aGUgcnVubmluZyB1cGxvYWRzOgogICAgICAgIHByb2dyZXNzOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9wcm9ncmVzczsKICAgICAgICB9LAoKICAgICAgICAvLyBUaGlzIG1ldGhvZCBpcyBleHBvc2VkIHRvIHRoZSB3aWRnZXQgQVBJIGFuZCBhbGxvd3MgYWRkaW5nIGZpbGVzCiAgICAgICAgLy8gdXNpbmcgdGhlIGZpbGV1cGxvYWQgQVBJLiBUaGUgZGF0YSBwYXJhbWV0ZXIgYWNjZXB0cyBhbiBvYmplY3Qgd2hpY2gKICAgICAgICAvLyBtdXN0IGhhdmUgYSBmaWxlcyBwcm9wZXJ0eSBhbmQgY2FuIGNvbnRhaW4gYWRkaXRpb25hbCBvcHRpb25zOgogICAgICAgIC8vIC5maWxldXBsb2FkKCdhZGQnLCB7ZmlsZXM6IGZpbGVzTGlzdH0pOwogICAgICAgIGFkZDogZnVuY3Rpb24gKGRhdGEpIHsKICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzOwogICAgICAgICAgICBpZiAoIWRhdGEgfHwgdGhpcy5vcHRpb25zLmRpc2FibGVkKSB7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGRhdGEuZmlsZUlucHV0ICYmICFkYXRhLmZpbGVzKSB7CiAgICAgICAgICAgICAgICB0aGlzLl9nZXRGaWxlSW5wdXRGaWxlcyhkYXRhLmZpbGVJbnB1dCkuYWx3YXlzKGZ1bmN0aW9uIChmaWxlcykgewogICAgICAgICAgICAgICAgICAgIGRhdGEuZmlsZXMgPSBmaWxlczsKICAgICAgICAgICAgICAgICAgICB0aGF0Ll9vbkFkZChudWxsLCBkYXRhKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZGF0YS5maWxlcyA9ICQubWFrZUFycmF5KGRhdGEuZmlsZXMpOwogICAgICAgICAgICAgICAgdGhpcy5fb25BZGQobnVsbCwgZGF0YSk7CiAgICAgICAgICAgIH0KICAgICAgICB9LAoKICAgICAgICAvLyBUaGlzIG1ldGhvZCBpcyBleHBvc2VkIHRvIHRoZSB3aWRnZXQgQVBJIGFuZCBhbGxvd3Mgc2VuZGluZyBmaWxlcwogICAgICAgIC8vIHVzaW5nIHRoZSBmaWxldXBsb2FkIEFQSS4gVGhlIGRhdGEgcGFyYW1ldGVyIGFjY2VwdHMgYW4gb2JqZWN0IHdoaWNoCiAgICAgICAgLy8gbXVzdCBoYXZlIGEgZmlsZXMgb3IgZmlsZUlucHV0IHByb3BlcnR5IGFuZCBjYW4gY29udGFpbiBhZGRpdGlvbmFsIG9wdGlvbnM6CiAgICAgICAgLy8gLmZpbGV1cGxvYWQoJ3NlbmQnLCB7ZmlsZXM6IGZpbGVzTGlzdH0pOwogICAgICAgIC8vIFRoZSBtZXRob2QgcmV0dXJucyBhIFByb21pc2Ugb2JqZWN0IGZvciB0aGUgZmlsZSB1cGxvYWQgY2FsbC4KICAgICAgICBzZW5kOiBmdW5jdGlvbiAoZGF0YSkgewogICAgICAgICAgICBpZiAoZGF0YSAmJiAhdGhpcy5vcHRpb25zLmRpc2FibGVkKSB7CiAgICAgICAgICAgICAgICBpZiAoZGF0YS5maWxlSW5wdXQgJiYgIWRhdGEuZmlsZXMpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdGhhdCA9IHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgIGRmZCA9ICQuRGVmZXJyZWQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZSA9IGRmZC5wcm9taXNlKCksCiAgICAgICAgICAgICAgICAgICAgICAgIGpxWEhSLAogICAgICAgICAgICAgICAgICAgICAgICBhYm9ydGVkOwogICAgICAgICAgICAgICAgICAgIHByb21pc2UuYWJvcnQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGFib3J0ZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoanFYSFIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBqcVhIUi5hYm9ydCgpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGRmZC5yZWplY3QobnVsbCwgJ2Fib3J0JywgJ2Fib3J0Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9taXNlOwogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZ2V0RmlsZUlucHV0RmlsZXMoZGF0YS5maWxlSW5wdXQpLmFsd2F5cygKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKGZpbGVzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWJvcnRlZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZmlsZXMubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGZkLnJlamVjdCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuZmlsZXMgPSBmaWxlczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpxWEhSID0gdGhhdC5fb25TZW5kKG51bGwsIGRhdGEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAganFYSFIudGhlbigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAocmVzdWx0LCB0ZXh0U3RhdHVzLCBqcVhIUikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZmQucmVzb2x2ZShyZXN1bHQsIHRleHRTdGF0dXMsIGpxWEhSKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChqcVhIUiwgdGV4dFN0YXR1cywgZXJyb3JUaHJvd24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGZkLnJlamVjdChqcVhIUiwgdGV4dFN0YXR1cywgZXJyb3JUaHJvd24pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9lbmhhbmNlUHJvbWlzZShwcm9taXNlKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRhdGEuZmlsZXMgPSAkLm1ha2VBcnJheShkYXRhLmZpbGVzKTsKICAgICAgICAgICAgICAgIGlmIChkYXRhLmZpbGVzLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9vblNlbmQobnVsbCwgZGF0YSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2dldFhIUlByb21pc2UoZmFsc2UsIGRhdGEgJiYgZGF0YS5jb250ZXh0KTsKICAgICAgICB9CgogICAgfSk7Cgp9KSk7Cg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/jquery.iframe-transport.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogalF1ZXJ5IElmcmFtZSBUcmFuc3BvcnQgUGx1Z2luCiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9ibHVlaW1wL2pRdWVyeS1GaWxlLVVwbG9hZAogKgogKiBDb3B5cmlnaHQgMjAxMSwgU2ViYXN0aWFuIFRzY2hhbgogKiBodHRwczovL2JsdWVpbXAubmV0CiAqCiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZToKICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQKICovCgovKiBnbG9iYWwgZGVmaW5lLCByZXF1aXJlLCB3aW5kb3csIGRvY3VtZW50LCBKU09OICovCgo7KGZ1bmN0aW9uIChmYWN0b3J5KSB7CiAgICAndXNlIHN0cmljdCc7CiAgICBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7CiAgICAgICAgLy8gUmVnaXN0ZXIgYXMgYW4gYW5vbnltb3VzIEFNRCBtb2R1bGU6CiAgICAgICAgZGVmaW5lKFsnanF1ZXJ5J10sIGZhY3RvcnkpOwogICAgfSBlbHNlIGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpIHsKICAgICAgICAvLyBOb2RlL0NvbW1vbkpTOgogICAgICAgIGZhY3RvcnkocmVxdWlyZSgnanF1ZXJ5JykpOwogICAgfSBlbHNlIHsKICAgICAgICAvLyBCcm93c2VyIGdsb2JhbHM6CiAgICAgICAgZmFjdG9yeSh3aW5kb3cualF1ZXJ5KTsKICAgIH0KfShmdW5jdGlvbiAoJCkgewogICAgJ3VzZSBzdHJpY3QnOwoKICAgIC8vIEhlbHBlciB2YXJpYWJsZSB0byBjcmVhdGUgdW5pcXVlIG5hbWVzIGZvciB0aGUgdHJhbnNwb3J0IGlmcmFtZXM6CiAgICB2YXIgY291bnRlciA9IDAsCiAgICAgICAganNvbkFQSSA9ICQsCiAgICAgICAganNvblBhcnNlID0gJ3BhcnNlSlNPTic7CgogICAgaWYgKCdKU09OJyBpbiB3aW5kb3cgJiYgJ3BhcnNlJyBpbiBKU09OKSB7CiAgICAgIGpzb25BUEkgPSBKU09OOwogICAgICBqc29uUGFyc2UgPSAncGFyc2UnOwogICAgfQoKICAgIC8vIFRoZSBpZnJhbWUgdHJhbnNwb3J0IGFjY2VwdHMgZm91ciBhZGRpdGlvbmFsIG9wdGlvbnM6CiAgICAvLyBvcHRpb25zLmZpbGVJbnB1dDogYSBqUXVlcnkgY29sbGVjdGlvbiBvZiBmaWxlIGlucHV0IGZpZWxkcwogICAgLy8gb3B0aW9ucy5wYXJhbU5hbWU6IHRoZSBwYXJhbWV0ZXIgbmFtZSBmb3IgdGhlIGZpbGUgZm9ybSBkYXRhLAogICAgLy8gIG92ZXJyaWRlcyB0aGUgbmFtZSBwcm9wZXJ0eSBvZiB0aGUgZmlsZSBpbnB1dCBmaWVsZChzKSwKICAgIC8vICBjYW4gYmUgYSBzdHJpbmcgb3IgYW4gYXJyYXkgb2Ygc3RyaW5ncy4KICAgIC8vIG9wdGlvbnMuZm9ybURhdGE6IGFuIGFycmF5IG9mIG9iamVjdHMgd2l0aCBuYW1lIGFuZCB2YWx1ZSBwcm9wZXJ0aWVzLAogICAgLy8gIGVxdWl2YWxlbnQgdG8gdGhlIHJldHVybiBkYXRhIG9mIC5zZXJpYWxpemVBcnJheSgpLCBlLmcuOgogICAgLy8gIFt7bmFtZTogJ2EnLCB2YWx1ZTogMX0sIHtuYW1lOiAnYicsIHZhbHVlOiAyfV0KICAgIC8vIG9wdGlvbnMuaW5pdGlhbElmcmFtZVNyYzogdGhlIFVSTCBvZiB0aGUgaW5pdGlhbCBpZnJhbWUgc3JjLAogICAgLy8gIGJ5IGRlZmF1bHQgc2V0IHRvICJqYXZhc2NyaXB0OmZhbHNlOyIKICAgICQuYWpheFRyYW5zcG9ydCgnaWZyYW1lJywgZnVuY3Rpb24gKG9wdGlvbnMpIHsKICAgICAgICBpZiAob3B0aW9ucy5hc3luYykgewogICAgICAgICAgICAvLyBqYXZhc2NyaXB0OmZhbHNlIGFzIGluaXRpYWwgaWZyYW1lIHNyYwogICAgICAgICAgICAvLyBwcmV2ZW50cyB3YXJuaW5nIHBvcHVwcyBvbiBIVFRQUyBpbiBJRTY6CiAgICAgICAgICAgIC8qanNoaW50IHNjcmlwdHVybDogdHJ1ZSAqLwogICAgICAgICAgICB2YXIgaW5pdGlhbElmcmFtZVNyYyA9IG9wdGlvbnMuaW5pdGlhbElmcmFtZVNyYyB8fCAnamF2YXNjcmlwdDpmYWxzZTsnLAogICAgICAgICAgICAvKmpzaGludCBzY3JpcHR1cmw6IGZhbHNlICovCiAgICAgICAgICAgICAgICBmb3JtLAogICAgICAgICAgICAgICAgaWZyYW1lLAogICAgICAgICAgICAgICAgYWRkUGFyYW1DaGFyOwogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgc2VuZDogZnVuY3Rpb24gKF8sIGNvbXBsZXRlQ2FsbGJhY2spIHsKICAgICAgICAgICAgICAgICAgICBmb3JtID0gJCgnPGZvcm0gc3R5bGU9ImRpc3BsYXk6bm9uZTsiPjwvZm9ybT4nKTsKICAgICAgICAgICAgICAgICAgICBmb3JtLmF0dHIoJ2FjY2VwdC1jaGFyc2V0Jywgb3B0aW9ucy5mb3JtQWNjZXB0Q2hhcnNldCk7CiAgICAgICAgICAgICAgICAgICAgYWRkUGFyYW1DaGFyID0gL1w/Ly50ZXN0KG9wdGlvbnMudXJsKSA/ICcmJyA6ICc/JzsKICAgICAgICAgICAgICAgICAgICAvLyBYRG9tYWluUmVxdWVzdCBvbmx5IHN1cHBvcnRzIEdFVCBhbmQgUE9TVDoKICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy50eXBlID09PSAnREVMRVRFJykgewogICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnVybCA9IG9wdGlvbnMudXJsICsgYWRkUGFyYW1DaGFyICsgJ19tZXRob2Q9REVMRVRFJzsKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy50eXBlID0gJ1BPU1QnOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy50eXBlID09PSAnUFVUJykgewogICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnVybCA9IG9wdGlvbnMudXJsICsgYWRkUGFyYW1DaGFyICsgJ19tZXRob2Q9UFVUJzsKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy50eXBlID0gJ1BPU1QnOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy50eXBlID09PSAnUEFUQ0gnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMudXJsID0gb3B0aW9ucy51cmwgKyBhZGRQYXJhbUNoYXIgKyAnX21ldGhvZD1QQVRDSCc7CiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMudHlwZSA9ICdQT1NUJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgLy8gSUUgdmVyc2lvbnMgYmVsb3cgSUU4IGNhbm5vdCBzZXQgdGhlIG5hbWUgcHJvcGVydHkgb2YKICAgICAgICAgICAgICAgICAgICAvLyBlbGVtZW50cyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIGFkZGVkIHRvIHRoZSBET00sCiAgICAgICAgICAgICAgICAgICAgLy8gc28gd2Ugc2V0IHRoZSBuYW1lIGFsb25nIHdpdGggdGhlIGlmcmFtZSBIVE1MIG1hcmt1cDoKICAgICAgICAgICAgICAgICAgICBjb3VudGVyICs9IDE7CiAgICAgICAgICAgICAgICAgICAgaWZyYW1lID0gJCgKICAgICAgICAgICAgICAgICAgICAgICAgJzxpZnJhbWUgc3JjPSInICsgaW5pdGlhbElmcmFtZVNyYyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIiBuYW1lPSJpZnJhbWUtdHJhbnNwb3J0LScgKyBjb3VudGVyICsgJyI+PC9pZnJhbWU+JwogICAgICAgICAgICAgICAgICAgICkuYmluZCgnbG9hZCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZpbGVJbnB1dENsb25lcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtTmFtZXMgPSAkLmlzQXJyYXkob3B0aW9ucy5wYXJhbU5hbWUpID8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5wYXJhbU5hbWUgOiBbb3B0aW9ucy5wYXJhbU5hbWVdOwogICAgICAgICAgICAgICAgICAgICAgICBpZnJhbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC51bmJpbmQoJ2xvYWQnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLmJpbmQoJ2xvYWQnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdyYXAgaW4gYSB0cnkvY2F0Y2ggYmxvY2sgdG8gY2F0Y2ggZXhjZXB0aW9ucyB0aHJvd24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIHRyeWluZyB0byBhY2Nlc3MgY3Jvc3MtZG9tYWluIGlmcmFtZSBjb250ZW50czoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IGlmcmFtZS5jb250ZW50cygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHb29nbGUgQ2hyb21lIGFuZCBGaXJlZm94IGRvIG5vdCB0aHJvdyBhbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBleGNlcHRpb24gd2hlbiBjYWxsaW5nIGlmcmFtZS5jb250ZW50cygpIG9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNyb3NzLWRvbWFpbiByZXF1ZXN0cywgc28gd2UgdW5pZnkgdGhlIHJlc3BvbnNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlLmxlbmd0aCB8fCAhcmVzcG9uc2VbMF0uZmlyc3RDaGlsZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgY29tcGxldGUgY2FsbGJhY2sgcmV0dXJucyB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZnJhbWUgY29udGVudCBkb2N1bWVudCBhcyByZXNwb25zZSBvYmplY3Q6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGVDYWxsYmFjaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3VjY2VzcycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsnaWZyYW1lJzogcmVzcG9uc2V9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGaXggZm9yIElFIGVuZGxlc3MgcHJvZ3Jlc3MgYmFyIGFjdGl2aXR5IGJ1ZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChoYXBwZW5zIG9uIGZvcm0gc3VibWl0cyB0byBpZnJhbWUgdGFyZ2V0cyk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnPGlmcmFtZSBzcmM9IicgKyBpbml0aWFsSWZyYW1lU3JjICsgJyI+PC9pZnJhbWU+JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZFRvKGZvcm0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZpbmcgdGhlIGZvcm0gaW4gYSBzZXRUaW1lb3V0IGNhbGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsb3dzIENocm9tZSdzIGRldmVsb3BlciB0b29scyB0byBkaXNwbGF5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSByZXNwb25zZSByZXN1bHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybS5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICBmb3JtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAucHJvcCgndGFyZ2V0JywgaWZyYW1lLnByb3AoJ25hbWUnKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5wcm9wKCdhY3Rpb24nLCBvcHRpb25zLnVybCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5wcm9wKCdtZXRob2QnLCBvcHRpb25zLnR5cGUpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5mb3JtRGF0YSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJC5lYWNoKG9wdGlvbnMuZm9ybURhdGEsIGZ1bmN0aW9uIChpbmRleCwgZmllbGQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCc8aW5wdXQgdHlwZT0iaGlkZGVuIi8+JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnByb3AoJ25hbWUnLCBmaWVsZC5uYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsKGZpZWxkLnZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXBwZW5kVG8oZm9ybSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5maWxlSW5wdXQgJiYgb3B0aW9ucy5maWxlSW5wdXQubGVuZ3RoICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy50eXBlID09PSAnUE9TVCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVJbnB1dENsb25lcyA9IG9wdGlvbnMuZmlsZUlucHV0LmNsb25lKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJbnNlcnQgYSBjbG9uZSBmb3IgZWFjaCBmaWxlIGlucHV0IGZpZWxkOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5maWxlSW5wdXQuYWZ0ZXIoZnVuY3Rpb24gKGluZGV4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbGVJbnB1dENsb25lc1tpbmRleF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnBhcmFtTmFtZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuZmlsZUlucHV0LmVhY2goZnVuY3Rpb24gKGluZGV4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykucHJvcCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICduYW1lJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtTmFtZXNbaW5kZXhdIHx8IG9wdGlvbnMucGFyYW1OYW1lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBcHBlbmRpbmcgdGhlIGZpbGUgaW5wdXQgZmllbGRzIHRvIHRoZSBoaWRkZW4gZm9ybQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVtb3ZlcyB0aGVtIGZyb20gdGhlaXIgb3JpZ2luYWwgbG9jYXRpb246CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZChvcHRpb25zLmZpbGVJbnB1dCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucHJvcCgnZW5jdHlwZScsICdtdWx0aXBhcnQvZm9ybS1kYXRhJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmN0eXBlIG11c3QgYmUgc2V0IGFzIGVuY29kaW5nIGZvciBJRToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucHJvcCgnZW5jb2RpbmcnLCAnbXVsdGlwYXJ0L2Zvcm0tZGF0YScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBIVE1MNSBmb3JtIGF0dHJpYnV0ZSBmcm9tIHRoZSBpbnB1dChzKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuZmlsZUlucHV0LnJlbW92ZUF0dHIoJ2Zvcm0nKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBmb3JtLnN1Ym1pdCgpOwogICAgICAgICAgICAgICAgICAgICAgICAvLyBJbnNlcnQgdGhlIGZpbGUgaW5wdXQgZmllbGRzIGF0IHRoZWlyIG9yaWdpbmFsIGxvY2F0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ5IHJlcGxhY2luZyB0aGUgY2xvbmVzIHdpdGggdGhlIG9yaWdpbmFsczoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbGVJbnB1dENsb25lcyAmJiBmaWxlSW5wdXRDbG9uZXMubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmZpbGVJbnB1dC5lYWNoKGZ1bmN0aW9uIChpbmRleCwgaW5wdXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2xvbmUgPSAkKGZpbGVJbnB1dENsb25lc1tpbmRleF0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlc3RvcmUgdGhlIG9yaWdpbmFsIG5hbWUgYW5kIGZvcm0gcHJvcGVydGllczoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGlucHV0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucHJvcCgnbmFtZScsIGNsb25lLnByb3AoJ25hbWUnKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2Zvcm0nLCBjbG9uZS5hdHRyKCdmb3JtJykpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb25lLnJlcGxhY2VXaXRoKGlucHV0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgZm9ybS5hcHBlbmQoaWZyYW1lKS5hcHBlbmRUbyhkb2N1bWVudC5ib2R5KTsKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBhYm9ydDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIGlmIChpZnJhbWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gamF2YXNjcmlwdDpmYWxzZSBhcyBpZnJhbWUgc3JjIGFib3J0cyB0aGUgcmVxdWVzdAogICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgcHJldmVudHMgd2FybmluZyBwb3B1cHMgb24gSFRUUFMgaW4gSUU2LgogICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25jYXQgaXMgdXNlZCB0byBhdm9pZCB0aGUgIlNjcmlwdCBVUkwiIEpTTGludCBlcnJvcjoKICAgICAgICAgICAgICAgICAgICAgICAgaWZyYW1lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudW5iaW5kKCdsb2FkJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5wcm9wKCdzcmMnLCBpbml0aWFsSWZyYW1lU3JjKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGZvcm0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9ybS5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfSk7CgogICAgLy8gVGhlIGlmcmFtZSB0cmFuc3BvcnQgcmV0dXJucyB0aGUgaWZyYW1lIGNvbnRlbnQgZG9jdW1lbnQgYXMgcmVzcG9uc2UuCiAgICAvLyBUaGUgZm9sbG93aW5nIGFkZHMgY29udmVydGVycyBmcm9tIGlmcmFtZSB0byB0ZXh0LCBqc29uLCBodG1sLCB4bWwKICAgIC8vIGFuZCBzY3JpcHQuCiAgICAvLyBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBDb250ZW50LVR5cGUgZm9yIEpTT04gcmVzcG9uc2VzIGhhcyB0byBiZSB0ZXh0L3BsYWluCiAgICAvLyBvciB0ZXh0L2h0bWwsIGlmIHRoZSBicm93c2VyIGRvZXNuJ3QgaW5jbHVkZSBhcHBsaWNhdGlvbi9qc29uIGluIHRoZQogICAgLy8gQWNjZXB0IGhlYWRlciwgZWxzZSBJRSB3aWxsIHNob3cgYSBkb3dubG9hZCBkaWFsb2cuCiAgICAvLyBUaGUgQ29udGVudC1UeXBlIGZvciBYTUwgcmVzcG9uc2VzIG9uIHRoZSBvdGhlciBoYW5kIGhhcyB0byBiZSBhbHdheXMKICAgIC8vIGFwcGxpY2F0aW9uL3htbCBvciB0ZXh0L3htbCwgc28gSUUgcHJvcGVybHkgcGFyc2VzIHRoZSBYTUwgcmVzcG9uc2UuCiAgICAvLyBTZWUgYWxzbwogICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2JsdWVpbXAvalF1ZXJ5LUZpbGUtVXBsb2FkL3dpa2kvU2V0dXAjY29udGVudC10eXBlLW5lZ290aWF0aW9uCiAgICAkLmFqYXhTZXR1cCh7CiAgICAgICAgY29udmVydGVyczogewogICAgICAgICAgICAnaWZyYW1lIHRleHQnOiBmdW5jdGlvbiAoaWZyYW1lKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gaWZyYW1lICYmICQoaWZyYW1lWzBdLmJvZHkpLnRleHQoKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ2lmcmFtZSBqc29uJzogZnVuY3Rpb24gKGlmcmFtZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGlmcmFtZSAmJiBqc29uQVBJW2pzb25QYXJzZV0oJChpZnJhbWVbMF0uYm9keSkudGV4dCgpKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ2lmcmFtZSBodG1sJzogZnVuY3Rpb24gKGlmcmFtZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGlmcmFtZSAmJiAkKGlmcmFtZVswXS5ib2R5KS5odG1sKCk7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICdpZnJhbWUgeG1sJzogZnVuY3Rpb24gKGlmcmFtZSkgewogICAgICAgICAgICAgICAgdmFyIHhtbERvYyA9IGlmcmFtZSAmJiBpZnJhbWVbMF07CiAgICAgICAgICAgICAgICByZXR1cm4geG1sRG9jICYmICQuaXNYTUxEb2MoeG1sRG9jKSA/IHhtbERvYyA6CiAgICAgICAgICAgICAgICAgICAgICAgICQucGFyc2VYTUwoKHhtbERvYy5YTUxEb2N1bWVudCAmJiB4bWxEb2MuWE1MRG9jdW1lbnQueG1sKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh4bWxEb2MuYm9keSkuaHRtbCgpKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ2lmcmFtZSBzY3JpcHQnOiBmdW5jdGlvbiAoaWZyYW1lKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gaWZyYW1lICYmICQuZ2xvYmFsRXZhbCgkKGlmcmFtZVswXS5ib2R5KS50ZXh0KCkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSk7Cgp9KSk7Cg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/modernizr.custom.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogTW9kZXJuaXpyIDIuNy4xIChDdXN0b20gQnVpbGQpIHwgTUlUICYgQlNECiAqIEJ1aWxkOiBodHRwOi8vbW9kZXJuaXpyLmNvbS9kb3dubG9hZC8jLWZvbnRmYWNlLWJhY2tncm91bmRzaXplLWJvcmRlcmltYWdlLWJvcmRlcnJhZGl1cy1ib3hzaGFkb3ctZmxleGJveC1mbGV4Ym94bGVnYWN5LWhzbGEtbXVsdGlwbGViZ3Mtb3BhY2l0eS1yZ2JhLXRleHRzaGFkb3ctY3NzYW5pbWF0aW9ucy1jc3Njb2x1bW5zLWdlbmVyYXRlZGNvbnRlbnQtY3NzZ3JhZGllbnRzLWNzc3JlZmxlY3Rpb25zLWNzc3RyYW5zZm9ybXMtY3NzdHJhbnNmb3JtczNkLWNzc3RyYW5zaXRpb25zLWFwcGxpY2F0aW9uY2FjaGUtY2FudmFzLWNhbnZhc3RleHQtZHJhZ2FuZGRyb3AtaGFzaGNoYW5nZS1oaXN0b3J5LWF1ZGlvLXZpZGVvLWluZGV4ZWRkYi1pbnB1dC1pbnB1dHR5cGVzLWxvY2Fsc3RvcmFnZS1wb3N0bWVzc2FnZS1zZXNzaW9uc3RvcmFnZS13ZWJzb2NrZXRzLXdlYnNxbGRhdGFiYXNlLXdlYndvcmtlcnMtc2hpdi1jc3NjbGFzc2VzLXRlc3RzdHlsZXMtdGVzdHByb3AtdGVzdGFsbHByb3BzLWhhc2V2ZW50LXByZWZpeGVzLWRvbXByZWZpeGVzLWxvYWQKICovCjt3aW5kb3cuTW9kZXJuaXpyPWZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBCKGEpe2ouY3NzVGV4dD1hfWZ1bmN0aW9uIEMoYSxiKXtyZXR1cm4gQihuLmpvaW4oYSsiOyIpKyhifHwiIikpfWZ1bmN0aW9uIEQoYSxiKXtyZXR1cm4gdHlwZW9mIGE9PT1ifWZ1bmN0aW9uIEUoYSxiKXtyZXR1cm4hIX4oIiIrYSkuaW5kZXhPZihiKX1mdW5jdGlvbiBGKGEsYil7Zm9yKHZhciBkIGluIGEpe3ZhciBlPWFbZF07aWYoIUUoZSwiLSIpJiZqW2VdIT09YylyZXR1cm4gYj09InBmeCI/ZTohMH1yZXR1cm4hMX1mdW5jdGlvbiBHKGEsYixkKXtmb3IodmFyIGUgaW4gYSl7dmFyIGY9YlthW2VdXTtpZihmIT09YylyZXR1cm4gZD09PSExP2FbZV06RChmLCJmdW5jdGlvbiIpP2YuYmluZChkfHxiKTpmfXJldHVybiExfWZ1bmN0aW9uIEgoYSxiLGMpe3ZhciBkPWEuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrYS5zbGljZSgxKSxlPShhKyIgIitwLmpvaW4oZCsiICIpK2QpLnNwbGl0KCIgIik7cmV0dXJuIEQoYiwic3RyaW5nIil8fEQoYiwidW5kZWZpbmVkIik/RihlLGIpOihlPShhKyIgIitxLmpvaW4oZCsiICIpK2QpLnNwbGl0KCIgIiksRyhlLGIsYykpfWZ1bmN0aW9uIEkoKXtlLmlucHV0PWZ1bmN0aW9uKGMpe2Zvcih2YXIgZD0wLGU9Yy5sZW5ndGg7ZDxlO2QrKyl0W2NbZF1dPWNbZF1pbiBrO3JldHVybiB0Lmxpc3QmJih0Lmxpc3Q9ISFiLmNyZWF0ZUVsZW1lbnQoImRhdGFsaXN0IikmJiEhYS5IVE1MRGF0YUxpc3RFbGVtZW50KSx0fSgiYXV0b2NvbXBsZXRlIGF1dG9mb2N1cyBsaXN0IHBsYWNlaG9sZGVyIG1heCBtaW4gbXVsdGlwbGUgcGF0dGVybiByZXF1aXJlZCBzdGVwIi5zcGxpdCgiICIpKSxlLmlucHV0dHlwZXM9ZnVuY3Rpb24oYSl7Zm9yKHZhciBkPTAsZSxmLGgsaT1hLmxlbmd0aDtkPGk7ZCsrKWsuc2V0QXR0cmlidXRlKCJ0eXBlIixmPWFbZF0pLGU9ay50eXBlIT09InRleHQiLGUmJihrLnZhbHVlPWwsay5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjphYnNvbHV0ZTt2aXNpYmlsaXR5OmhpZGRlbjsiLC9ecmFuZ2UkLy50ZXN0KGYpJiZrLnN0eWxlLldlYmtpdEFwcGVhcmFuY2UhPT1jPyhnLmFwcGVuZENoaWxkKGspLGg9Yi5kZWZhdWx0VmlldyxlPWguZ2V0Q29tcHV0ZWRTdHlsZSYmaC5nZXRDb21wdXRlZFN0eWxlKGssbnVsbCkuV2Via2l0QXBwZWFyYW5jZSE9PSJ0ZXh0ZmllbGQiJiZrLm9mZnNldEhlaWdodCE9PTAsZy5yZW1vdmVDaGlsZChrKSk6L14oc2VhcmNofHRlbCkkLy50ZXN0KGYpfHwoL14odXJsfGVtYWlsKSQvLnRlc3QoZik/ZT1rLmNoZWNrVmFsaWRpdHkmJmsuY2hlY2tWYWxpZGl0eSgpPT09ITE6ZT1rLnZhbHVlIT1sKSksc1thW2RdXT0hIWU7cmV0dXJuIHN9KCJzZWFyY2ggdGVsIHVybCBlbWFpbCBkYXRldGltZSBkYXRlIG1vbnRoIHdlZWsgdGltZSBkYXRldGltZS1sb2NhbCBudW1iZXIgcmFuZ2UgY29sb3IiLnNwbGl0KCIgIikpfXZhciBkPSIyLjcuMSIsZT17fSxmPSEwLGc9Yi5kb2N1bWVudEVsZW1lbnQsaD0ibW9kZXJuaXpyIixpPWIuY3JlYXRlRWxlbWVudChoKSxqPWkuc3R5bGUsaz1iLmNyZWF0ZUVsZW1lbnQoImlucHV0IiksbD0iOikiLG09e30udG9TdHJpbmcsbj0iIC13ZWJraXQtIC1tb3otIC1vLSAtbXMtICIuc3BsaXQoIiAiKSxvPSJXZWJraXQgTW96IE8gbXMiLHA9by5zcGxpdCgiICIpLHE9by50b0xvd2VyQ2FzZSgpLnNwbGl0KCIgIikscj17fSxzPXt9LHQ9e30sdT1bXSx2PXUuc2xpY2Usdyx4PWZ1bmN0aW9uKGEsYyxkLGUpe3ZhciBmLGksaixrLGw9Yi5jcmVhdGVFbGVtZW50KCJkaXYiKSxtPWIuYm9keSxuPW18fGIuY3JlYXRlRWxlbWVudCgiYm9keSIpO2lmKHBhcnNlSW50KGQsMTApKXdoaWxlKGQtLSlqPWIuY3JlYXRlRWxlbWVudCgiZGl2Iiksai5pZD1lP2VbZF06aCsoZCsxKSxsLmFwcGVuZENoaWxkKGopO3JldHVybiBmPVsiJiMxNzM7IiwnPHN0eWxlIGlkPSJzJyxoLCciPicsYSwiPC9zdHlsZT4iXS5qb2luKCIiKSxsLmlkPWgsKG0/bDpuKS5pbm5lckhUTUwrPWYsbi5hcHBlbmRDaGlsZChsKSxtfHwobi5zdHlsZS5iYWNrZ3JvdW5kPSIiLG4uc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIsaz1nLnN0eWxlLm92ZXJmbG93LGcuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIsZy5hcHBlbmRDaGlsZChuKSksaT1jKGwsYSksbT9sLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobCk6KG4ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChuKSxnLnN0eWxlLm92ZXJmbG93PWspLCEhaX0seT1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoZCxlKXtlPWV8fGIuY3JlYXRlRWxlbWVudChhW2RdfHwiZGl2IiksZD0ib24iK2Q7dmFyIGY9ZCBpbiBlO3JldHVybiBmfHwoZS5zZXRBdHRyaWJ1dGV8fChlPWIuY3JlYXRlRWxlbWVudCgiZGl2IikpLGUuc2V0QXR0cmlidXRlJiZlLnJlbW92ZUF0dHJpYnV0ZSYmKGUuc2V0QXR0cmlidXRlKGQsIiIpLGY9RChlW2RdLCJmdW5jdGlvbiIpLEQoZVtkXSwidW5kZWZpbmVkIil8fChlW2RdPWMpLGUucmVtb3ZlQXR0cmlidXRlKGQpKSksZT1udWxsLGZ9dmFyIGE9e3NlbGVjdDoiaW5wdXQiLGNoYW5nZToiaW5wdXQiLHN1Ym1pdDoiZm9ybSIscmVzZXQ6ImZvcm0iLGVycm9yOiJpbWciLGxvYWQ6ImltZyIsYWJvcnQ6ImltZyJ9O3JldHVybiBkfSgpLHo9e30uaGFzT3duUHJvcGVydHksQTshRCh6LCJ1bmRlZmluZWQiKSYmIUQoei5jYWxsLCJ1bmRlZmluZWQiKT9BPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHouY2FsbChhLGIpfTpBPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGIgaW4gYSYmRChhLmNvbnN0cnVjdG9yLnByb3RvdHlwZVtiXSwidW5kZWZpbmVkIil9LEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kfHwoRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24oYil7dmFyIGM9dGhpcztpZih0eXBlb2YgYyE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yO3ZhciBkPXYuY2FsbChhcmd1bWVudHMsMSksZT1mdW5jdGlvbigpe2lmKHRoaXMgaW5zdGFuY2VvZiBlKXt2YXIgYT1mdW5jdGlvbigpe307YS5wcm90b3R5cGU9Yy5wcm90b3R5cGU7dmFyIGY9bmV3IGEsZz1jLmFwcGx5KGYsZC5jb25jYXQodi5jYWxsKGFyZ3VtZW50cykpKTtyZXR1cm4gT2JqZWN0KGcpPT09Zz9nOmZ9cmV0dXJuIGMuYXBwbHkoYixkLmNvbmNhdCh2LmNhbGwoYXJndW1lbnRzKSkpfTtyZXR1cm4gZX0pLHIuZmxleGJveD1mdW5jdGlvbigpe3JldHVybiBIKCJmbGV4V3JhcCIpfSxyLmZsZXhib3hsZWdhY3k9ZnVuY3Rpb24oKXtyZXR1cm4gSCgiYm94RGlyZWN0aW9uIil9LHIuY2FudmFzPWZ1bmN0aW9uKCl7dmFyIGE9Yi5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTtyZXR1cm4hIWEuZ2V0Q29udGV4dCYmISFhLmdldENvbnRleHQoIjJkIil9LHIuY2FudmFzdGV4dD1mdW5jdGlvbigpe3JldHVybiEhZS5jYW52YXMmJiEhRChiLmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLmdldENvbnRleHQoIjJkIikuZmlsbFRleHQsImZ1bmN0aW9uIil9LHIucG9zdG1lc3NhZ2U9ZnVuY3Rpb24oKXtyZXR1cm4hIWEucG9zdE1lc3NhZ2V9LHIud2Vic3FsZGF0YWJhc2U9ZnVuY3Rpb24oKXtyZXR1cm4hIWEub3BlbkRhdGFiYXNlfSxyLmluZGV4ZWREQj1mdW5jdGlvbigpe3JldHVybiEhSCgiaW5kZXhlZERCIixhKX0sci5oYXNoY2hhbmdlPWZ1bmN0aW9uKCl7cmV0dXJuIHkoImhhc2hjaGFuZ2UiLGEpJiYoYi5kb2N1bWVudE1vZGU9PT1jfHxiLmRvY3VtZW50TW9kZT43KX0sci5oaXN0b3J5PWZ1bmN0aW9uKCl7cmV0dXJuISFhLmhpc3RvcnkmJiEhaGlzdG9yeS5wdXNoU3RhdGV9LHIuZHJhZ2FuZGRyb3A9ZnVuY3Rpb24oKXt2YXIgYT1iLmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiJkcmFnZ2FibGUiaW4gYXx8Im9uZHJhZ3N0YXJ0ImluIGEmJiJvbmRyb3AiaW4gYX0sci53ZWJzb2NrZXRzPWZ1bmN0aW9uKCl7cmV0dXJuIldlYlNvY2tldCJpbiBhfHwiTW96V2ViU29ja2V0ImluIGF9LHIucmdiYT1mdW5jdGlvbigpe3JldHVybiBCKCJiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMTUwLDI1NSwxNTAsLjUpIiksRShqLmJhY2tncm91bmRDb2xvciwicmdiYSIpfSxyLmhzbGE9ZnVuY3Rpb24oKXtyZXR1cm4gQigiYmFja2dyb3VuZC1jb2xvcjpoc2xhKDEyMCw0MCUsMTAwJSwuNSkiKSxFKGouYmFja2dyb3VuZENvbG9yLCJyZ2JhIil8fEUoai5iYWNrZ3JvdW5kQ29sb3IsImhzbGEiKX0sci5tdWx0aXBsZWJncz1mdW5jdGlvbigpe3JldHVybiBCKCJiYWNrZ3JvdW5kOnVybChodHRwczovLyksdXJsKGh0dHBzOi8vKSxyZWQgdXJsKGh0dHBzOi8vKSIpLC8odXJsXHMqXCguKj8pezN9Ly50ZXN0KGouYmFja2dyb3VuZCl9LHIuYmFja2dyb3VuZHNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gSCgiYmFja2dyb3VuZFNpemUiKX0sci5ib3JkZXJpbWFnZT1mdW5jdGlvbigpe3JldHVybiBIKCJib3JkZXJJbWFnZSIpfSxyLmJvcmRlcnJhZGl1cz1mdW5jdGlvbigpe3JldHVybiBIKCJib3JkZXJSYWRpdXMiKX0sci5ib3hzaGFkb3c9ZnVuY3Rpb24oKXtyZXR1cm4gSCgiYm94U2hhZG93Iil9LHIudGV4dHNoYWRvdz1mdW5jdGlvbigpe3JldHVybiBiLmNyZWF0ZUVsZW1lbnQoImRpdiIpLnN0eWxlLnRleHRTaGFkb3c9PT0iIn0sci5vcGFjaXR5PWZ1bmN0aW9uKCl7cmV0dXJuIEMoIm9wYWNpdHk6LjU1IiksL14wLjU1JC8udGVzdChqLm9wYWNpdHkpfSxyLmNzc2FuaW1hdGlvbnM9ZnVuY3Rpb24oKXtyZXR1cm4gSCgiYW5pbWF0aW9uTmFtZSIpfSxyLmNzc2NvbHVtbnM9ZnVuY3Rpb24oKXtyZXR1cm4gSCgiY29sdW1uQ291bnQiKX0sci5jc3NncmFkaWVudHM9ZnVuY3Rpb24oKXt2YXIgYT0iYmFja2dyb3VuZC1pbWFnZToiLGI9ImdyYWRpZW50KGxpbmVhcixsZWZ0IHRvcCxyaWdodCBib3R0b20sZnJvbSgjOWY5KSx0byh3aGl0ZSkpOyIsYz0ibGluZWFyLWdyYWRpZW50KGxlZnQgdG9wLCM5ZjksIHdoaXRlKTsiO3JldHVybiBCKChhKyItd2Via2l0LSAiLnNwbGl0KCIgIikuam9pbihiK2EpK24uam9pbihjK2EpKS5zbGljZSgwLC1hLmxlbmd0aCkpLEUoai5iYWNrZ3JvdW5kSW1hZ2UsImdyYWRpZW50Iil9LHIuY3NzcmVmbGVjdGlvbnM9ZnVuY3Rpb24oKXtyZXR1cm4gSCgiYm94UmVmbGVjdCIpfSxyLmNzc3RyYW5zZm9ybXM9ZnVuY3Rpb24oKXtyZXR1cm4hIUgoInRyYW5zZm9ybSIpfSxyLmNzc3RyYW5zZm9ybXMzZD1mdW5jdGlvbigpe3ZhciBhPSEhSCgicGVyc3BlY3RpdmUiKTtyZXR1cm4gYSYmIndlYmtpdFBlcnNwZWN0aXZlImluIGcuc3R5bGUmJngoIkBtZWRpYSAodHJhbnNmb3JtLTNkKSwoLXdlYmtpdC10cmFuc2Zvcm0tM2QpeyNtb2Rlcm5penJ7bGVmdDo5cHg7cG9zaXRpb246YWJzb2x1dGU7aGVpZ2h0OjNweDt9fSIsZnVuY3Rpb24oYixjKXthPWIub2Zmc2V0TGVmdD09PTkmJmIub2Zmc2V0SGVpZ2h0PT09M30pLGF9LHIuY3NzdHJhbnNpdGlvbnM9ZnVuY3Rpb24oKXtyZXR1cm4gSCgidHJhbnNpdGlvbiIpfSxyLmZvbnRmYWNlPWZ1bmN0aW9uKCl7dmFyIGE7cmV0dXJuIHgoJ0Bmb250LWZhY2Uge2ZvbnQtZmFtaWx5OiJmb250IjtzcmM6dXJsKCJodHRwczovLyIpfScsZnVuY3Rpb24oYyxkKXt2YXIgZT1iLmdldEVsZW1lbnRCeUlkKCJzbW9kZXJuaXpyIiksZj1lLnNoZWV0fHxlLnN0eWxlU2hlZXQsZz1mP2YuY3NzUnVsZXMmJmYuY3NzUnVsZXNbMF0/Zi5jc3NSdWxlc1swXS5jc3NUZXh0OmYuY3NzVGV4dHx8IiI6IiI7YT0vc3JjL2kudGVzdChnKSYmZy5pbmRleE9mKGQuc3BsaXQoIiAiKVswXSk9PT0wfSksYX0sci5nZW5lcmF0ZWRjb250ZW50PWZ1bmN0aW9uKCl7dmFyIGE7cmV0dXJuIHgoWyIjIixoLCJ7Zm9udDowLzAgYX0jIixoLCc6YWZ0ZXJ7Y29udGVudDoiJyxsLCciO3Zpc2liaWxpdHk6aGlkZGVuO2ZvbnQ6M3B4LzEgYX0nXS5qb2luKCIiKSxmdW5jdGlvbihiKXthPWIub2Zmc2V0SGVpZ2h0Pj0zfSksYX0sci52aWRlbz1mdW5jdGlvbigpe3ZhciBhPWIuY3JlYXRlRWxlbWVudCgidmlkZW8iKSxjPSExO3RyeXtpZihjPSEhYS5jYW5QbGF5VHlwZSljPW5ldyBCb29sZWFuKGMpLGMub2dnPWEuY2FuUGxheVR5cGUoJ3ZpZGVvL29nZzsgY29kZWNzPSJ0aGVvcmEiJykucmVwbGFjZSgvXm5vJC8sIiIpLGMuaDI2ND1hLmNhblBsYXlUeXBlKCd2aWRlby9tcDQ7IGNvZGVjcz0iYXZjMS40MkUwMUUiJykucmVwbGFjZSgvXm5vJC8sIiIpLGMud2VibT1hLmNhblBsYXlUeXBlKCd2aWRlby93ZWJtOyBjb2RlY3M9InZwOCwgdm9yYmlzIicpLnJlcGxhY2UoL15ubyQvLCIiKX1jYXRjaChkKXt9cmV0dXJuIGN9LHIuYXVkaW89ZnVuY3Rpb24oKXt2YXIgYT1iLmNyZWF0ZUVsZW1lbnQoImF1ZGlvIiksYz0hMTt0cnl7aWYoYz0hIWEuY2FuUGxheVR5cGUpYz1uZXcgQm9vbGVhbihjKSxjLm9nZz1hLmNhblBsYXlUeXBlKCdhdWRpby9vZ2c7IGNvZGVjcz0idm9yYmlzIicpLnJlcGxhY2UoL15ubyQvLCIiKSxjLm1wMz1hLmNhblBsYXlUeXBlKCJhdWRpby9tcGVnOyIpLnJlcGxhY2UoL15ubyQvLCIiKSxjLndhdj1hLmNhblBsYXlUeXBlKCdhdWRpby93YXY7IGNvZGVjcz0iMSInKS5yZXBsYWNlKC9ebm8kLywiIiksYy5tNGE9KGEuY2FuUGxheVR5cGUoImF1ZGlvL3gtbTRhOyIpfHxhLmNhblBsYXlUeXBlKCJhdWRpby9hYWM7IikpLnJlcGxhY2UoL15ubyQvLCIiKX1jYXRjaChkKXt9cmV0dXJuIGN9LHIubG9jYWxzdG9yYWdlPWZ1bmN0aW9uKCl7dHJ5e3JldHVybiBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShoLGgpLGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGgpLCEwfWNhdGNoKGEpe3JldHVybiExfX0sci5zZXNzaW9uc3RvcmFnZT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShoLGgpLHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oaCksITB9Y2F0Y2goYSl7cmV0dXJuITF9fSxyLndlYndvcmtlcnM9ZnVuY3Rpb24oKXtyZXR1cm4hIWEuV29ya2VyfSxyLmFwcGxpY2F0aW9uY2FjaGU9ZnVuY3Rpb24oKXtyZXR1cm4hIWEuYXBwbGljYXRpb25DYWNoZX07Zm9yKHZhciBKIGluIHIpQShyLEopJiYodz1KLnRvTG93ZXJDYXNlKCksZVt3XT1yW0pdKCksdS5wdXNoKChlW3ddPyIiOiJuby0iKSt3KSk7cmV0dXJuIGUuaW5wdXR8fEkoKSxlLmFkZFRlc3Q9ZnVuY3Rpb24oYSxiKXtpZih0eXBlb2YgYT09Im9iamVjdCIpZm9yKHZhciBkIGluIGEpQShhLGQpJiZlLmFkZFRlc3QoZCxhW2RdKTtlbHNle2E9YS50b0xvd2VyQ2FzZSgpO2lmKGVbYV0hPT1jKXJldHVybiBlO2I9dHlwZW9mIGI9PSJmdW5jdGlvbiI/YigpOmIsdHlwZW9mIGYhPSJ1bmRlZmluZWQiJiZmJiYoZy5jbGFzc05hbWUrPSIgIisoYj8iIjoibm8tIikrYSksZVthXT1ifXJldHVybiBlfSxCKCIiKSxpPWs9bnVsbCxmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGwoYSxiKXt2YXIgYz1hLmNyZWF0ZUVsZW1lbnQoInAiKSxkPWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXXx8YS5kb2N1bWVudEVsZW1lbnQ7cmV0dXJuIGMuaW5uZXJIVE1MPSJ4PHN0eWxlPiIrYisiPC9zdHlsZT4iLGQuaW5zZXJ0QmVmb3JlKGMubGFzdENoaWxkLGQuZmlyc3RDaGlsZCl9ZnVuY3Rpb24gbSgpe3ZhciBhPXMuZWxlbWVudHM7cmV0dXJuIHR5cGVvZiBhPT0ic3RyaW5nIj9hLnNwbGl0KCIgIik6YX1mdW5jdGlvbiBuKGEpe3ZhciBiPWpbYVtoXV07cmV0dXJuIGJ8fChiPXt9LGkrKyxhW2hdPWksaltpXT1iKSxifWZ1bmN0aW9uIG8oYSxjLGQpe2N8fChjPWIpO2lmKGspcmV0dXJuIGMuY3JlYXRlRWxlbWVudChhKTtkfHwoZD1uKGMpKTt2YXIgZztyZXR1cm4gZC5jYWNoZVthXT9nPWQuY2FjaGVbYV0uY2xvbmVOb2RlKCk6Zi50ZXN0KGEpP2c9KGQuY2FjaGVbYV09ZC5jcmVhdGVFbGVtKGEpKS5jbG9uZU5vZGUoKTpnPWQuY3JlYXRlRWxlbShhKSxnLmNhbkhhdmVDaGlsZHJlbiYmIWUudGVzdChhKSYmIWcudGFnVXJuP2QuZnJhZy5hcHBlbmRDaGlsZChnKTpnfWZ1bmN0aW9uIHAoYSxjKXthfHwoYT1iKTtpZihrKXJldHVybiBhLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtjPWN8fG4oYSk7dmFyIGQ9Yy5mcmFnLmNsb25lTm9kZSgpLGU9MCxmPW0oKSxnPWYubGVuZ3RoO2Zvcig7ZTxnO2UrKylkLmNyZWF0ZUVsZW1lbnQoZltlXSk7cmV0dXJuIGR9ZnVuY3Rpb24gcShhLGIpe2IuY2FjaGV8fChiLmNhY2hlPXt9LGIuY3JlYXRlRWxlbT1hLmNyZWF0ZUVsZW1lbnQsYi5jcmVhdGVGcmFnPWEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCxiLmZyYWc9Yi5jcmVhdGVGcmFnKCkpLGEuY3JlYXRlRWxlbWVudD1mdW5jdGlvbihjKXtyZXR1cm4gcy5zaGl2TWV0aG9kcz9vKGMsYSxiKTpiLmNyZWF0ZUVsZW0oYyl9LGEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudD1GdW5jdGlvbigiaCxmIiwicmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49Zi5jbG9uZU5vZGUoKSxjPW4uY3JlYXRlRWxlbWVudDtoLnNoaXZNZXRob2RzJiYoIittKCkuam9pbigpLnJlcGxhY2UoL1tcd1wtXSsvZyxmdW5jdGlvbihhKXtyZXR1cm4gYi5jcmVhdGVFbGVtKGEpLGIuZnJhZy5jcmVhdGVFbGVtZW50KGEpLCdjKCInK2ErJyIpJ30pKyIpO3JldHVybiBufSIpKHMsYi5mcmFnKX1mdW5jdGlvbiByKGEpe2F8fChhPWIpO3ZhciBjPW4oYSk7cmV0dXJuIHMuc2hpdkNTUyYmIWcmJiFjLmhhc0NTUyYmKGMuaGFzQ1NTPSEhbChhLCJhcnRpY2xlLGFzaWRlLGRpYWxvZyxmaWdjYXB0aW9uLGZpZ3VyZSxmb290ZXIsaGVhZGVyLGhncm91cCxtYWluLG5hdixzZWN0aW9ue2Rpc3BsYXk6YmxvY2t9bWFya3tiYWNrZ3JvdW5kOiNGRjA7Y29sb3I6IzAwMH10ZW1wbGF0ZXtkaXNwbGF5Om5vbmV9IikpLGt8fHEoYSxjKSxhfXZhciBjPSIzLjcuMCIsZD1hLmh0bWw1fHx7fSxlPS9ePHxeKD86YnV0dG9ufG1hcHxzZWxlY3R8dGV4dGFyZWF8b2JqZWN0fGlmcmFtZXxvcHRpb258b3B0Z3JvdXApJC9pLGY9L14oPzphfGJ8Y29kZXxkaXZ8ZmllbGRzZXR8aDF8aDJ8aDN8aDR8aDV8aDZ8aXxsYWJlbHxsaXxvbHxwfHF8c3BhbnxzdHJvbmd8c3R5bGV8dGFibGV8dGJvZHl8dGR8dGh8dHJ8dWwpJC9pLGcsaD0iX2h0bWw1c2hpdiIsaT0wLGo9e30sazsoZnVuY3Rpb24oKXt0cnl7dmFyIGE9Yi5jcmVhdGVFbGVtZW50KCJhIik7YS5pbm5lckhUTUw9Ijx4eXo+PC94eXo+IixnPSJoaWRkZW4iaW4gYSxrPWEuY2hpbGROb2Rlcy5sZW5ndGg9PTF8fGZ1bmN0aW9uKCl7Yi5jcmVhdGVFbGVtZW50KCJhIik7dmFyIGE9Yi5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7cmV0dXJuIHR5cGVvZiBhLmNsb25lTm9kZT09InVuZGVmaW5lZCJ8fHR5cGVvZiBhLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQ9PSJ1bmRlZmluZWQifHx0eXBlb2YgYS5jcmVhdGVFbGVtZW50PT0idW5kZWZpbmVkIn0oKX1jYXRjaChjKXtnPSEwLGs9ITB9fSkoKTt2YXIgcz17ZWxlbWVudHM6ZC5lbGVtZW50c3x8ImFiYnIgYXJ0aWNsZSBhc2lkZSBhdWRpbyBiZGkgY2FudmFzIGRhdGEgZGF0YWxpc3QgZGV0YWlscyBkaWFsb2cgZmlnY2FwdGlvbiBmaWd1cmUgZm9vdGVyIGhlYWRlciBoZ3JvdXAgbWFpbiBtYXJrIG1ldGVyIG5hdiBvdXRwdXQgcHJvZ3Jlc3Mgc2VjdGlvbiBzdW1tYXJ5IHRlbXBsYXRlIHRpbWUgdmlkZW8iLHZlcnNpb246YyxzaGl2Q1NTOmQuc2hpdkNTUyE9PSExLHN1cHBvcnRzVW5rbm93bkVsZW1lbnRzOmssc2hpdk1ldGhvZHM6ZC5zaGl2TWV0aG9kcyE9PSExLHR5cGU6ImRlZmF1bHQiLHNoaXZEb2N1bWVudDpyLGNyZWF0ZUVsZW1lbnQ6byxjcmVhdGVEb2N1bWVudEZyYWdtZW50OnB9O2EuaHRtbDU9cyxyKGIpfSh0aGlzLGIpLGUuX3ZlcnNpb249ZCxlLl9wcmVmaXhlcz1uLGUuX2RvbVByZWZpeGVzPXEsZS5fY3Nzb21QcmVmaXhlcz1wLGUuaGFzRXZlbnQ9eSxlLnRlc3RQcm9wPWZ1bmN0aW9uKGEpe3JldHVybiBGKFthXSl9LGUudGVzdEFsbFByb3BzPUgsZS50ZXN0U3R5bGVzPXgsZy5jbGFzc05hbWU9Zy5jbGFzc05hbWUucmVwbGFjZSgvKF58XHMpbm8tanMoXHN8JCkvLCIkMSQyIikrKGY/IiBqcyAiK3Uuam9pbigiICIpOiIiKSxlfSh0aGlzLHRoaXMuZG9jdW1lbnQpLGZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBkKGEpe3JldHVybiJbb2JqZWN0IEZ1bmN0aW9uXSI9PW8uY2FsbChhKX1mdW5jdGlvbiBlKGEpe3JldHVybiJzdHJpbmciPT10eXBlb2YgYX1mdW5jdGlvbiBmKCl7fWZ1bmN0aW9uIGcoYSl7cmV0dXJuIWF8fCJsb2FkZWQiPT1hfHwiY29tcGxldGUiPT1hfHwidW5pbml0aWFsaXplZCI9PWF9ZnVuY3Rpb24gaCgpe3ZhciBhPXAuc2hpZnQoKTtxPTEsYT9hLnQ/bShmdW5jdGlvbigpeygiYyI9PWEudD9CLmluamVjdENzczpCLmluamVjdEpzKShhLnMsMCxhLmEsYS54LGEuZSwxKX0sMCk6KGEoKSxoKCkpOnE9MH1mdW5jdGlvbiBpKGEsYyxkLGUsZixpLGope2Z1bmN0aW9uIGsoYil7aWYoIW8mJmcobC5yZWFkeVN0YXRlKSYmKHUucj1vPTEsIXEmJmgoKSxsLm9ubG9hZD1sLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLGIpKXsiaW1nIiE9YSYmbShmdW5jdGlvbigpe3QucmVtb3ZlQ2hpbGQobCl9LDUwKTtmb3IodmFyIGQgaW4geVtjXSl5W2NdLmhhc093blByb3BlcnR5KGQpJiZ5W2NdW2RdLm9ubG9hZCgpfX12YXIgaj1qfHxCLmVycm9yVGltZW91dCxsPWIuY3JlYXRlRWxlbWVudChhKSxvPTAscj0wLHU9e3Q6ZCxzOmMsZTpmLGE6aSx4Omp9OzE9PT15W2NdJiYocj0xLHlbY109W10pLCJvYmplY3QiPT1hP2wuZGF0YT1jOihsLnNyYz1jLGwudHlwZT1hKSxsLndpZHRoPWwuaGVpZ2h0PSIwIixsLm9uZXJyb3I9bC5vbmxvYWQ9bC5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtrLmNhbGwodGhpcyxyKX0scC5zcGxpY2UoZSwwLHUpLCJpbWciIT1hJiYocnx8Mj09PXlbY10/KHQuaW5zZXJ0QmVmb3JlKGwscz9udWxsOm4pLG0oayxqKSk6eVtjXS5wdXNoKGwpKX1mdW5jdGlvbiBqKGEsYixjLGQsZil7cmV0dXJuIHE9MCxiPWJ8fCJqIixlKGEpP2koImMiPT1iP3Y6dSxhLGIsdGhpcy5pKyssYyxkLGYpOihwLnNwbGljZSh0aGlzLmkrKywwLGEpLDE9PXAubGVuZ3RoJiZoKCkpLHRoaXN9ZnVuY3Rpb24gaygpe3ZhciBhPUI7cmV0dXJuIGEubG9hZGVyPXtsb2FkOmosaTowfSxhfXZhciBsPWIuZG9jdW1lbnRFbGVtZW50LG09YS5zZXRUaW1lb3V0LG49Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IilbMF0sbz17fS50b1N0cmluZyxwPVtdLHE9MCxyPSJNb3pBcHBlYXJhbmNlImluIGwuc3R5bGUscz1yJiYhIWIuY3JlYXRlUmFuZ2UoKS5jb21wYXJlTm9kZSx0PXM/bDpuLnBhcmVudE5vZGUsbD1hLm9wZXJhJiYiW29iamVjdCBPcGVyYV0iPT1vLmNhbGwoYS5vcGVyYSksbD0hIWIuYXR0YWNoRXZlbnQmJiFsLHU9cj8ib2JqZWN0IjpsPyJzY3JpcHQiOiJpbWciLHY9bD8ic2NyaXB0Ijp1LHc9QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24oYSl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09by5jYWxsKGEpfSx4PVtdLHk9e30sej17dGltZW91dDpmdW5jdGlvbihhLGIpe3JldHVybiBiLmxlbmd0aCYmKGEudGltZW91dD1iWzBdKSxhfX0sQSxCO0I9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihhKXt2YXIgYT1hLnNwbGl0KCIhIiksYj14Lmxlbmd0aCxjPWEucG9wKCksZD1hLmxlbmd0aCxjPXt1cmw6YyxvcmlnVXJsOmMscHJlZml4ZXM6YX0sZSxmLGc7Zm9yKGY9MDtmPGQ7ZisrKWc9YVtmXS5zcGxpdCgiPSIpLChlPXpbZy5zaGlmdCgpXSkmJihjPWUoYyxnKSk7Zm9yKGY9MDtmPGI7ZisrKWM9eFtmXShjKTtyZXR1cm4gY31mdW5jdGlvbiBnKGEsZSxmLGcsaCl7dmFyIGk9YihhKSxqPWkuYXV0b0NhbGxiYWNrO2kudXJsLnNwbGl0KCIuIikucG9wKCkuc3BsaXQoIj8iKS5zaGlmdCgpLGkuYnlwYXNzfHwoZSYmKGU9ZChlKT9lOmVbYV18fGVbZ118fGVbYS5zcGxpdCgiLyIpLnBvcCgpLnNwbGl0KCI/IilbMF1dKSxpLmluc3RlYWQ/aS5pbnN0ZWFkKGEsZSxmLGcsaCk6KHlbaS51cmxdP2kubm9leGVjPSEwOnlbaS51cmxdPTEsZi5sb2FkKGkudXJsLGkuZm9yY2VDU1N8fCFpLmZvcmNlSlMmJiJjc3MiPT1pLnVybC5zcGxpdCgiLiIpLnBvcCgpLnNwbGl0KCI/Iikuc2hpZnQoKT8iYyI6YyxpLm5vZXhlYyxpLmF0dHJzLGkudGltZW91dCksKGQoZSl8fGQoaikpJiZmLmxvYWQoZnVuY3Rpb24oKXtrKCksZSYmZShpLm9yaWdVcmwsaCxnKSxqJiZqKGkub3JpZ1VybCxoLGcpLHlbaS51cmxdPTJ9KSkpfWZ1bmN0aW9uIGgoYSxiKXtmdW5jdGlvbiBjKGEsYyl7aWYoYSl7aWYoZShhKSljfHwoaj1mdW5jdGlvbigpe3ZhciBhPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtrLmFwcGx5KHRoaXMsYSksbCgpfSksZyhhLGosYiwwLGgpO2Vsc2UgaWYoT2JqZWN0KGEpPT09YSlmb3IobiBpbiBtPWZ1bmN0aW9uKCl7dmFyIGI9MCxjO2ZvcihjIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShjKSYmYisrO3JldHVybiBifSgpLGEpYS5oYXNPd25Qcm9wZXJ0eShuKSYmKCFjJiYhLS1tJiYoZChqKT9qPWZ1bmN0aW9uKCl7dmFyIGE9W10uc2xpY2UuY2FsbChhcmd1bWVudHMpO2suYXBwbHkodGhpcyxhKSxsKCl9Ompbbl09ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGI9W10uc2xpY2UuY2FsbChhcmd1bWVudHMpO2EmJmEuYXBwbHkodGhpcyxiKSxsKCl9fShrW25dKSksZyhhW25dLGosYixuLGgpKX1lbHNlIWMmJmwoKX12YXIgaD0hIWEudGVzdCxpPWEubG9hZHx8YS5ib3RoLGo9YS5jYWxsYmFja3x8ZixrPWosbD1hLmNvbXBsZXRlfHxmLG0sbjtjKGg/YS55ZXA6YS5ub3BlLCEhaSksaSYmYyhpKX12YXIgaSxqLGw9dGhpcy55ZXBub3BlLmxvYWRlcjtpZihlKGEpKWcoYSwwLGwsMCk7ZWxzZSBpZih3KGEpKWZvcihpPTA7aTxhLmxlbmd0aDtpKyspaj1hW2ldLGUoaik/ZyhqLDAsbCwwKTp3KGopP0Ioaik6T2JqZWN0KGopPT09aiYmaChqLGwpO2Vsc2UgT2JqZWN0KGEpPT09YSYmaChhLGwpfSxCLmFkZFByZWZpeD1mdW5jdGlvbihhLGIpe3pbYV09Yn0sQi5hZGRGaWx0ZXI9ZnVuY3Rpb24oYSl7eC5wdXNoKGEpfSxCLmVycm9yVGltZW91dD0xZTQsbnVsbD09Yi5yZWFkeVN0YXRlJiZiLmFkZEV2ZW50TGlzdGVuZXImJihiLnJlYWR5U3RhdGU9ImxvYWRpbmciLGIuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsQT1mdW5jdGlvbigpe2IucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsQSwwKSxiLnJlYWR5U3RhdGU9ImNvbXBsZXRlIn0sMCkpLGEueWVwbm9wZT1rKCksYS55ZXBub3BlLmV4ZWN1dGVTdGFjaz1oLGEueWVwbm9wZS5pbmplY3RKcz1mdW5jdGlvbihhLGMsZCxlLGksail7dmFyIGs9Yi5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSxsLG8sZT1lfHxCLmVycm9yVGltZW91dDtrLnNyYz1hO2ZvcihvIGluIGQpay5zZXRBdHRyaWJ1dGUobyxkW29dKTtjPWo/aDpjfHxmLGsub25yZWFkeXN0YXRlY2hhbmdlPWsub25sb2FkPWZ1bmN0aW9uKCl7IWwmJmcoay5yZWFkeVN0YXRlKSYmKGw9MSxjKCksay5vbmxvYWQ9ay5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbCl9LG0oZnVuY3Rpb24oKXtsfHwobD0xLGMoMSkpfSxlKSxpP2sub25sb2FkKCk6bi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShrLG4pfSxhLnllcG5vcGUuaW5qZWN0Q3NzPWZ1bmN0aW9uKGEsYyxkLGUsZyxpKXt2YXIgZT1iLmNyZWF0ZUVsZW1lbnQoImxpbmsiKSxqLGM9aT9oOmN8fGY7ZS5ocmVmPWEsZS5yZWw9InN0eWxlc2hlZXQiLGUudHlwZT0idGV4dC9jc3MiO2ZvcihqIGluIGQpZS5zZXRBdHRyaWJ1dGUoaixkW2pdKTtnfHwobi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlLG4pLG0oYywwKSl9fSh0aGlzLGRvY3VtZW50KSxNb2Rlcm5penIubG9hZD1mdW5jdGlvbigpe3llcG5vcGUuYXBwbHkod2luZG93LFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApKX07]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/plugins.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtlKGZ1bmN0aW9uKCl7ZS5zdXBwb3J0LnRyYW5zaXRpb249ZnVuY3Rpb24oKXt2YXIgZT1mdW5jdGlvbigpe3ZhciBlLHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYm9vdHN0cmFwIiksbj17V2Via2l0VHJhbnNpdGlvbjoid2Via2l0VHJhbnNpdGlvbkVuZCIsTW96VHJhbnNpdGlvbjoidHJhbnNpdGlvbmVuZCIsT1RyYW5zaXRpb246Im9UcmFuc2l0aW9uRW5kIG90cmFuc2l0aW9uZW5kIix0cmFuc2l0aW9uOiJ0cmFuc2l0aW9uZW5kIn07Zm9yKGUgaW4gbilpZih2b2lkIDAhPT10LnN0eWxlW2VdKXJldHVybiBuW2VdfSgpO3JldHVybiBlJiZ7ZW5kOmV9fSgpfSl9KHdpbmRvdy5qUXVlcnkpLCFmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7dmFyIHQ9ZnVuY3Rpb24odCxuKXt0aGlzLm9wdGlvbnM9ZS5leHRlbmQoe30sZS5mbi5hZmZpeC5kZWZhdWx0cyxuKSx0aGlzLiR3aW5kb3c9ZSh3aW5kb3cpLm9uKCJzY3JvbGwuYWZmaXguZGF0YS1hcGkiLGUucHJveHkodGhpcy5jaGVja1Bvc2l0aW9uLHRoaXMpKS5vbigiY2xpY2suYWZmaXguZGF0YS1hcGkiLGUucHJveHkoZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGUucHJveHkodGhpcy5jaGVja1Bvc2l0aW9uLHRoaXMpLDEpfSx0aGlzKSksdGhpcy4kZWxlbWVudD1lKHQpLHRoaXMuY2hlY2tQb3NpdGlvbigpfTt0LnByb3RvdHlwZS5jaGVja1Bvc2l0aW9uPWZ1bmN0aW9uKCl7aWYodGhpcy4kZWxlbWVudC5pcygiOnZpc2libGUiKSl7dmFyIHQsbj1lKGRvY3VtZW50KS5oZWlnaHQoKSxvPXRoaXMuJHdpbmRvdy5zY3JvbGxUb3AoKSxpPXRoaXMuJGVsZW1lbnQub2Zmc2V0KCksYT10aGlzLm9wdGlvbnMub2Zmc2V0LHI9YS5ib3R0b20scz1hLnRvcCxjPSJhZmZpeCBhZmZpeC10b3AgYWZmaXgtYm90dG9tIjsib2JqZWN0IiE9dHlwZW9mIGEmJihyPXM9YSksImZ1bmN0aW9uIj09dHlwZW9mIHMmJihzPWEudG9wKCkpLCJmdW5jdGlvbiI9PXR5cGVvZiByJiYocj1hLmJvdHRvbSgpKSx0PSEobnVsbCE9dGhpcy51bnBpbiYmbyt0aGlzLnVucGluPD1pLnRvcCkmJihudWxsIT1yJiZpLnRvcCt0aGlzLiRlbGVtZW50LmhlaWdodCgpPj1uLXI/ImJvdHRvbSI6bnVsbCE9cyYmbzw9cyYmInRvcCIpLHRoaXMuYWZmaXhlZCE9PXQmJih0aGlzLmFmZml4ZWQ9dCx0aGlzLnVucGluPSJib3R0b20iPT10P2kudG9wLW86bnVsbCx0aGlzLiRlbGVtZW50LnJlbW92ZUNsYXNzKGMpLmFkZENsYXNzKCJhZmZpeCIrKHQ/Ii0iK3Q6IiIpKSl9fTt2YXIgbj1lLmZuLmFmZml4O2UuZm4uYWZmaXg9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBvPWUodGhpcyksaT1vLmRhdGEoImFmZml4IiksYT0ib2JqZWN0Ij09dHlwZW9mIG4mJm47aXx8by5kYXRhKCJhZmZpeCIsaT1uZXcgdCh0aGlzLGEpKSwic3RyaW5nIj09dHlwZW9mIG4mJmlbbl0oKX0pfSxlLmZuLmFmZml4LkNvbnN0cnVjdG9yPXQsZS5mbi5hZmZpeC5kZWZhdWx0cz17b2Zmc2V0OjB9LGUuZm4uYWZmaXgubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBlLmZuLmFmZml4PW4sdGhpc30sZSh3aW5kb3cpLm9uKCJsb2FkIixmdW5jdGlvbigpe2UoJ1tkYXRhLXNweT0iYWZmaXgiXScpLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpLG49dC5kYXRhKCk7bi5vZmZzZXQ9bi5vZmZzZXR8fHt9LG4ub2Zmc2V0Qm90dG9tJiYobi5vZmZzZXQuYm90dG9tPW4ub2Zmc2V0Qm90dG9tKSxuLm9mZnNldFRvcCYmKG4ub2Zmc2V0LnRvcD1uLm9mZnNldFRvcCksdC5hZmZpeChuKX0pfSl9KHdpbmRvdy5qUXVlcnkpLCFmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdCgpe2UoIi5kcm9wZG93bi1iYWNrZHJvcCIpLnJlbW92ZSgpLGUobykuZWFjaChmdW5jdGlvbigpe24oZSh0aGlzKSkucmVtb3ZlQ2xhc3MoIm9wZW4iKX0pfWZ1bmN0aW9uIG4odCl7dmFyIG4sbz10LmF0dHIoImRhdGEtdGFyZ2V0Iik7cmV0dXJuIG98fChvPXQuYXR0cigiaHJlZiIpLG89byYmLyMvLnRlc3QobykmJm8ucmVwbGFjZSgvLiooPz0jW15cc10qJCkvLCIiKSksbj1vJiZlKG8pLG4mJm4ubGVuZ3RofHwobj10LnBhcmVudCgpKSxufXZhciBvPSJbZGF0YS10b2dnbGU9ZHJvcGRvd25dIixpPWZ1bmN0aW9uKHQpe3ZhciBuPWUodCkub24oImNsaWNrLmRyb3Bkb3duLmRhdGEtYXBpIix0aGlzLnRvZ2dsZSk7ZSgiaHRtbCIpLm9uKCJjbGljay5kcm9wZG93bi5kYXRhLWFwaSIsZnVuY3Rpb24oKXtuLnBhcmVudCgpLnJlbW92ZUNsYXNzKCJvcGVuIil9KX07aS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmksdG9nZ2xlOmZ1bmN0aW9uKG8pe3ZhciBpLGEscj1lKHRoaXMpO2lmKCFyLmlzKCIuZGlzYWJsZWQsIDpkaXNhYmxlZCIpKXJldHVybiBpPW4ociksYT1pLmhhc0NsYXNzKCJvcGVuIiksdCgpLGF8fCgib250b3VjaHN0YXJ0ImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCYmZSgnPGRpdiBjbGFzcz0iZHJvcGRvd24tYmFja2Ryb3AiLz4nKS5pbnNlcnRCZWZvcmUoZSh0aGlzKSkub24oImNsaWNrIix0KSxpLnRvZ2dsZUNsYXNzKCJvcGVuIikpLHIuZm9jdXMoKSwhMX0sa2V5ZG93bjpmdW5jdGlvbih0KXt2YXIgaSxhLHIscyxjO2lmKC8oMzh8NDB8MjcpLy50ZXN0KHQua2V5Q29kZSkmJihpPWUodGhpcyksdC5wcmV2ZW50RGVmYXVsdCgpLHQuc3RvcFByb3BhZ2F0aW9uKCksIWkuaXMoIi5kaXNhYmxlZCwgOmRpc2FibGVkIikpKXtpZihyPW4oaSkscz1yLmhhc0NsYXNzKCJvcGVuIiksIXN8fHMmJjI3PT10LmtleUNvZGUpcmV0dXJuIDI3PT10LndoaWNoJiZyLmZpbmQobykuZm9jdXMoKSxpLmNsaWNrKCk7YT1lKCJbcm9sZT1tZW51XSBsaTpub3QoLmRpdmlkZXIpOnZpc2libGUgYSIsciksYS5sZW5ndGgmJihjPWEuaW5kZXgoYS5maWx0ZXIoIjpmb2N1cyIpKSwzOD09dC5rZXlDb2RlJiZjPjAmJmMtLSw0MD09dC5rZXlDb2RlJiZjPGEubGVuZ3RoLTEmJmMrKyx+Y3x8KGM9MCksYS5lcShjKS5mb2N1cygpKX19fTt2YXIgYT1lLmZuLmRyb3Bkb3duO2UuZm4uZHJvcGRvd249ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBuPWUodGhpcyksbz1uLmRhdGEoImRyb3Bkb3duIik7b3x8bi5kYXRhKCJkcm9wZG93biIsbz1uZXcgaSh0aGlzKSksInN0cmluZyI9PXR5cGVvZiB0JiZvW3RdLmNhbGwobil9KX0sZS5mbi5kcm9wZG93bi5Db25zdHJ1Y3Rvcj1pLGUuZm4uZHJvcGRvd24ubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBlLmZuLmRyb3Bkb3duPWEsdGhpc30sZShkb2N1bWVudCkub24oImNsaWNrLmRyb3Bkb3duLmRhdGEtYXBpIix0KS5vbigiY2xpY2suZHJvcGRvd24uZGF0YS1hcGkiLCIuZHJvcGRvd24gZm9ybSIsZnVuY3Rpb24oZSl7ZS5zdG9wUHJvcGFnYXRpb24oKX0pLm9uKCJjbGljay5kcm9wZG93bi5kYXRhLWFwaSIsbyxpLnByb3RvdHlwZS50b2dnbGUpLm9uKCJrZXlkb3duLmRyb3Bkb3duLmRhdGEtYXBpIixvKyIsIFtyb2xlPW1lbnVdIixpLnByb3RvdHlwZS5rZXlkb3duKX0od2luZG93LmpRdWVyeSksIWZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0Ijt2YXIgdD0nW2RhdGEtZGlzbWlzcz0iYWxlcnQiXScsbj1mdW5jdGlvbihuKXtlKG4pLm9uKCJjbGljayIsdCx0aGlzLmNsb3NlKX07bi5wcm90b3R5cGUuY2xvc2U9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gbigpe28udHJpZ2dlcigiY2xvc2VkIikucmVtb3ZlKCl9dmFyIG8saT1lKHRoaXMpLGE9aS5hdHRyKCJkYXRhLXRhcmdldCIpO2F8fChhPWkuYXR0cigiaHJlZiIpLGE9YSYmYS5yZXBsYWNlKC8uKig/PSNbXlxzXSokKS8sIiIpKSxvPWUoYSksdCYmdC5wcmV2ZW50RGVmYXVsdCgpLG8ubGVuZ3RofHwobz1pLmhhc0NsYXNzKCJhbGVydCIpP2k6aS5wYXJlbnQoKSksby50cmlnZ2VyKHQ9ZS5FdmVudCgiY2xvc2UiKSksdC5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8KG8ucmVtb3ZlQ2xhc3MoImluIiksZS5zdXBwb3J0LnRyYW5zaXRpb24mJm8uaGFzQ2xhc3MoImZhZGUiKT9vLm9uKGUuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCxuKTpuKCkpfTt2YXIgbz1lLmZuLmFsZXJ0O2UuZm4uYWxlcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBvPWUodGhpcyksaT1vLmRhdGEoImFsZXJ0Iik7aXx8by5kYXRhKCJhbGVydCIsaT1uZXcgbih0aGlzKSksInN0cmluZyI9PXR5cGVvZiB0JiZpW3RdLmNhbGwobyl9KX0sZS5mbi5hbGVydC5Db25zdHJ1Y3Rvcj1uLGUuZm4uYWxlcnQubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBlLmZuLmFsZXJ0PW8sdGhpc30sZShkb2N1bWVudCkub24oImNsaWNrLmFsZXJ0LmRhdGEtYXBpIix0LG4ucHJvdG90eXBlLmNsb3NlKX0od2luZG93LmpRdWVyeSksIWZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0Ijt2YXIgdD1mdW5jdGlvbih0LG4pe3RoaXMuJGVsZW1lbnQ9ZSh0KSx0aGlzLm9wdGlvbnM9ZS5leHRlbmQoe30sZS5mbi5idXR0b24uZGVmYXVsdHMsbil9O3QucHJvdG90eXBlLnNldFN0YXRlPWZ1bmN0aW9uKGUpe3ZhciB0PSJkaXNhYmxlZCIsbj10aGlzLiRlbGVtZW50LG89bi5kYXRhKCksaT1uLmlzKCJpbnB1dCIpPyJ2YWwiOiJodG1sIjtlKz0iVGV4dCIsby5yZXNldFRleHR8fG4uZGF0YSgicmVzZXRUZXh0IixuW2ldKCkpLG5baV0ob1tlXXx8dGhpcy5vcHRpb25zW2VdKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ImxvYWRpbmdUZXh0Ij09ZT9uLmFkZENsYXNzKHQpLmF0dHIodCx0KTpuLnJlbW92ZUNsYXNzKHQpLnJlbW92ZUF0dHIodCl9LDApfSx0LnByb3RvdHlwZS50b2dnbGU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLiRlbGVtZW50LmNsb3Nlc3QoJ1tkYXRhLXRvZ2dsZT0iYnV0dG9ucy1yYWRpbyJdJyk7ZSYmZS5maW5kKCIuYWN0aXZlIikucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpLHRoaXMuJGVsZW1lbnQudG9nZ2xlQ2xhc3MoImFjdGl2ZSIpfTt2YXIgbj1lLmZuLmJ1dHRvbjtlLmZuLmJ1dHRvbj1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIG89ZSh0aGlzKSxpPW8uZGF0YSgiYnV0dG9uIiksYT0ib2JqZWN0Ij09dHlwZW9mIG4mJm47aXx8by5kYXRhKCJidXR0b24iLGk9bmV3IHQodGhpcyxhKSksInRvZ2dsZSI9PW4/aS50b2dnbGUoKTpuJiZpLnNldFN0YXRlKG4pfSl9LGUuZm4uYnV0dG9uLmRlZmF1bHRzPXtsb2FkaW5nVGV4dDoibG9hZGluZy4uLiJ9LGUuZm4uYnV0dG9uLkNvbnN0cnVjdG9yPXQsZS5mbi5idXR0b24ubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBlLmZuLmJ1dHRvbj1uLHRoaXN9LGUoZG9jdW1lbnQpLm9uKCJjbGljay5idXR0b24uZGF0YS1hcGkiLCJbZGF0YS10b2dnbGVePWJ1dHRvbl0iLGZ1bmN0aW9uKHQpe3ZhciBuPWUodC50YXJnZXQpO24uaGFzQ2xhc3MoImJ0biIpfHwobj1uLmNsb3Nlc3QoIi5idG4iKSksbi5idXR0b24oInRvZ2dsZSIpfSl9KHdpbmRvdy5qUXVlcnkpLCFmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7dmFyIHQ9ZnVuY3Rpb24odCxuKXt0aGlzLiRlbGVtZW50PWUodCksdGhpcy5vcHRpb25zPWUuZXh0ZW5kKHt9LGUuZm4uY29sbGFwc2UuZGVmYXVsdHMsbiksdGhpcy5vcHRpb25zLnBhcmVudCYmKHRoaXMuJHBhcmVudD1lKHRoaXMub3B0aW9ucy5wYXJlbnQpKSx0aGlzLm9wdGlvbnMudG9nZ2xlJiZ0aGlzLnRvZ2dsZSgpfTt0LnByb3RvdHlwZT17Y29uc3RydWN0b3I6dCxkaW1lbnNpb246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJ3aWR0aCIpO3JldHVybiBlPyJ3aWR0aCI6ImhlaWdodCJ9LHNob3c6ZnVuY3Rpb24oKXt2YXIgdCxuLG8saTtpZighdGhpcy50cmFuc2l0aW9uaW5nJiYhdGhpcy4kZWxlbWVudC5oYXNDbGFzcygiaW4iKSl7aWYodD10aGlzLmRpbWVuc2lvbigpLG49ZS5jYW1lbENhc2UoWyJzY3JvbGwiLHRdLmpvaW4oIi0iKSksbz10aGlzLiRwYXJlbnQmJnRoaXMuJHBhcmVudC5maW5kKCI+IC5hY2NvcmRpb24tZ3JvdXAgPiAuaW4iKSxvJiZvLmxlbmd0aCl7aWYoaT1vLmRhdGEoImNvbGxhcHNlIiksaSYmaS50cmFuc2l0aW9uaW5nKXJldHVybjtvLmNvbGxhcHNlKCJoaWRlIiksaXx8by5kYXRhKCJjb2xsYXBzZSIsbnVsbCl9dGhpcy4kZWxlbWVudFt0XSgwKSx0aGlzLnRyYW5zaXRpb24oImFkZENsYXNzIixlLkV2ZW50KCJzaG93IiksInNob3duIiksZS5zdXBwb3J0LnRyYW5zaXRpb24mJnRoaXMuJGVsZW1lbnRbdF0odGhpcy4kZWxlbWVudFswXVtuXSl9fSxoaWRlOmZ1bmN0aW9uKCl7dmFyIHQ7IXRoaXMudHJhbnNpdGlvbmluZyYmdGhpcy4kZWxlbWVudC5oYXNDbGFzcygiaW4iKSYmKHQ9dGhpcy5kaW1lbnNpb24oKSx0aGlzLnJlc2V0KHRoaXMuJGVsZW1lbnRbdF0oKSksdGhpcy50cmFuc2l0aW9uKCJyZW1vdmVDbGFzcyIsZS5FdmVudCgiaGlkZSIpLCJoaWRkZW4iKSx0aGlzLiRlbGVtZW50W3RdKDApKX0scmVzZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5kaW1lbnNpb24oKTtyZXR1cm4gdGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcygiY29sbGFwc2UiKVt0XShlfHwiYXV0byIpWzBdLm9mZnNldFdpZHRoLHRoaXMuJGVsZW1lbnRbbnVsbCE9PWU/ImFkZENsYXNzIjoicmVtb3ZlQ2xhc3MiXSgiY29sbGFwc2UiKSx0aGlzfSx0cmFuc2l0aW9uOmZ1bmN0aW9uKHQsbixvKXt2YXIgaT10aGlzLGE9ZnVuY3Rpb24oKXsic2hvdyI9PW4udHlwZSYmaS5yZXNldCgpLGkudHJhbnNpdGlvbmluZz0wLGkuJGVsZW1lbnQudHJpZ2dlcihvKX07dGhpcy4kZWxlbWVudC50cmlnZ2VyKG4pLG4uaXNEZWZhdWx0UHJldmVudGVkKCl8fCh0aGlzLnRyYW5zaXRpb25pbmc9MSx0aGlzLiRlbGVtZW50W3RdKCJpbiIpLGUuc3VwcG9ydC50cmFuc2l0aW9uJiZ0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJjb2xsYXBzZSIpP3RoaXMuJGVsZW1lbnQub25lKGUuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCxhKTphKCkpfSx0b2dnbGU6ZnVuY3Rpb24oKXt0aGlzW3RoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoImluIik/ImhpZGUiOiJzaG93Il0oKX19O3ZhciBuPWUuZm4uY29sbGFwc2U7ZS5mbi5jb2xsYXBzZT1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIG89ZSh0aGlzKSxpPW8uZGF0YSgiY29sbGFwc2UiKSxhPWUuZXh0ZW5kKHt9LGUuZm4uY29sbGFwc2UuZGVmYXVsdHMsby5kYXRhKCksIm9iamVjdCI9PXR5cGVvZiBuJiZuKTtpfHxvLmRhdGEoImNvbGxhcHNlIixpPW5ldyB0KHRoaXMsYSkpLCJzdHJpbmciPT10eXBlb2YgbiYmaVtuXSgpfSl9LGUuZm4uY29sbGFwc2UuZGVmYXVsdHM9e3RvZ2dsZTohMH0sZS5mbi5jb2xsYXBzZS5Db25zdHJ1Y3Rvcj10LGUuZm4uY29sbGFwc2Uubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBlLmZuLmNvbGxhcHNlPW4sdGhpc30sZShkb2N1bWVudCkub24oImNsaWNrLmNvbGxhcHNlLmRhdGEtYXBpIiwiW2RhdGEtdG9nZ2xlPWNvbGxhcHNlXSIsZnVuY3Rpb24odCl7dmFyIG4sbz1lKHRoaXMpLGk9by5hdHRyKCJkYXRhLXRhcmdldCIpfHx0LnByZXZlbnREZWZhdWx0KCl8fChuPW8uYXR0cigiaHJlZiIpKSYmbi5yZXBsYWNlKC8uKig/PSNbXlxzXSskKS8sIiIpLGE9ZShpKS5kYXRhKCJjb2xsYXBzZSIpPyJ0b2dnbGUiOm8uZGF0YSgpO29bZShpKS5oYXNDbGFzcygiaW4iKT8iYWRkQ2xhc3MiOiJyZW1vdmVDbGFzcyJdKCJjb2xsYXBzZWQiKSxlKGkpLmNvbGxhcHNlKGEpfSl9KHdpbmRvdy5qUXVlcnkpLCFmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7dmFyIHQ9ZnVuY3Rpb24odCxuKXt0aGlzLm9wdGlvbnM9bix0aGlzLiRlbGVtZW50PWUodCkuZGVsZWdhdGUoJ1tkYXRhLWRpc21pc3M9Im1vZGFsIl0nLCJjbGljay5kaXNtaXNzLm1vZGFsIixlLnByb3h5KHRoaXMuaGlkZSx0aGlzKSksdGhpcy5vcHRpb25zLnJlbW90ZSYmdGhpcy4kZWxlbWVudC5maW5kKCIubW9kYWwtYm9keSIpLmxvYWQodGhpcy5vcHRpb25zLnJlbW90ZSl9O3QucHJvdG90eXBlPXtjb25zdHJ1Y3Rvcjp0LHRvZ2dsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzW3RoaXMuaXNTaG93bj8iaGlkZSI6InNob3ciXSgpfSxzaG93OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxuPWUuRXZlbnQoInNob3ciKTt0aGlzLiRlbGVtZW50LnRyaWdnZXIobiksdGhpcy5pc1Nob3dufHxuLmlzRGVmYXVsdFByZXZlbnRlZCgpfHwodGhpcy5pc1Nob3duPSEwLHRoaXMuZXNjYXBlKCksdGhpcy5iYWNrZHJvcChmdW5jdGlvbigpe3ZhciBuPWUuc3VwcG9ydC50cmFuc2l0aW9uJiZ0LiRlbGVtZW50Lmhhc0NsYXNzKCJmYWRlIik7dC4kZWxlbWVudC5wYXJlbnQoKS5sZW5ndGh8fHQuJGVsZW1lbnQuYXBwZW5kVG8oZG9jdW1lbnQuYm9keSksdC4kZWxlbWVudC5zaG93KCksbiYmdC4kZWxlbWVudFswXS5vZmZzZXRXaWR0aCx0LiRlbGVtZW50LmFkZENsYXNzKCJpbiIpLmF0dHIoImFyaWEtaGlkZGVuIiwhMSksdC5lbmZvcmNlRm9jdXMoKSxuP3QuJGVsZW1lbnQub25lKGUuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCxmdW5jdGlvbigpe3QuJGVsZW1lbnQuZm9jdXMoKS50cmlnZ2VyKCJzaG93biIpfSk6dC4kZWxlbWVudC5mb2N1cygpLnRyaWdnZXIoInNob3duIil9KSl9LGhpZGU6ZnVuY3Rpb24odCl7dCYmdC5wcmV2ZW50RGVmYXVsdCgpO3Q9ZS5FdmVudCgiaGlkZSIpLHRoaXMuJGVsZW1lbnQudHJpZ2dlcih0KSx0aGlzLmlzU2hvd24mJiF0LmlzRGVmYXVsdFByZXZlbnRlZCgpJiYodGhpcy5pc1Nob3duPSExLHRoaXMuZXNjYXBlKCksZShkb2N1bWVudCkub2ZmKCJmb2N1c2luLm1vZGFsIiksdGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcygiaW4iKS5hdHRyKCJhcmlhLWhpZGRlbiIsITApLGUuc3VwcG9ydC50cmFuc2l0aW9uJiZ0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJmYWRlIik/dGhpcy5oaWRlV2l0aFRyYW5zaXRpb24oKTp0aGlzLmhpZGVNb2RhbCgpKX0sZW5mb3JjZUZvY3VzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztlKGRvY3VtZW50KS5vbigiZm9jdXNpbi5tb2RhbCIsZnVuY3Rpb24oZSl7dC4kZWxlbWVudFswXT09PWUudGFyZ2V0fHx0LiRlbGVtZW50LmhhcyhlLnRhcmdldCkubGVuZ3RofHx0LiRlbGVtZW50LmZvY3VzKCl9KX0sZXNjYXBlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLmlzU2hvd24mJnRoaXMub3B0aW9ucy5rZXlib2FyZD90aGlzLiRlbGVtZW50Lm9uKCJrZXl1cC5kaXNtaXNzLm1vZGFsIixmdW5jdGlvbih0KXsyNz09dC53aGljaCYmZS5oaWRlKCl9KTp0aGlzLmlzU2hvd258fHRoaXMuJGVsZW1lbnQub2ZmKCJrZXl1cC5kaXNtaXNzLm1vZGFsIil9LGhpZGVXaXRoVHJhbnNpdGlvbjpmdW5jdGlvbigpe3ZhciB0PXRoaXMsbj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dC4kZWxlbWVudC5vZmYoZS5zdXBwb3J0LnRyYW5zaXRpb24uZW5kKSx0LmhpZGVNb2RhbCgpfSw1MDApO3RoaXMuJGVsZW1lbnQub25lKGUuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCxmdW5jdGlvbigpe2NsZWFyVGltZW91dChuKSx0LmhpZGVNb2RhbCgpfSl9LGhpZGVNb2RhbDpmdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy4kZWxlbWVudC5oaWRlKCksdGhpcy5iYWNrZHJvcChmdW5jdGlvbigpe2UucmVtb3ZlQmFja2Ryb3AoKSxlLiRlbGVtZW50LnRyaWdnZXIoImhpZGRlbiIpfSl9LHJlbW92ZUJhY2tkcm9wOmZ1bmN0aW9uKCl7dGhpcy4kYmFja2Ryb3AmJnRoaXMuJGJhY2tkcm9wLnJlbW92ZSgpLHRoaXMuJGJhY2tkcm9wPW51bGx9LGJhY2tkcm9wOmZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoImZhZGUiKT8iZmFkZSI6IiI7aWYodGhpcy5pc1Nob3duJiZ0aGlzLm9wdGlvbnMuYmFja2Ryb3Ape3ZhciBvPWUuc3VwcG9ydC50cmFuc2l0aW9uJiZuO2lmKHRoaXMuJGJhY2tkcm9wPWUoJzxkaXYgY2xhc3M9Im1vZGFsLWJhY2tkcm9wICcrbisnIiAvPicpLmFwcGVuZFRvKGRvY3VtZW50LmJvZHkpLHRoaXMuJGJhY2tkcm9wLmNsaWNrKCJzdGF0aWMiPT10aGlzLm9wdGlvbnMuYmFja2Ryb3A/ZS5wcm94eSh0aGlzLiRlbGVtZW50WzBdLmZvY3VzLHRoaXMuJGVsZW1lbnRbMF0pOmUucHJveHkodGhpcy5oaWRlLHRoaXMpKSxvJiZ0aGlzLiRiYWNrZHJvcFswXS5vZmZzZXRXaWR0aCx0aGlzLiRiYWNrZHJvcC5hZGRDbGFzcygiaW4iKSwhdClyZXR1cm47bz90aGlzLiRiYWNrZHJvcC5vbmUoZS5zdXBwb3J0LnRyYW5zaXRpb24uZW5kLHQpOnQoKX1lbHNlIXRoaXMuaXNTaG93biYmdGhpcy4kYmFja2Ryb3A/KHRoaXMuJGJhY2tkcm9wLnJlbW92ZUNsYXNzKCJpbiIpLGUuc3VwcG9ydC50cmFuc2l0aW9uJiZ0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJmYWRlIik/dGhpcy4kYmFja2Ryb3Aub25lKGUuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCx0KTp0KCkpOnQmJnQoKX19O3ZhciBuPWUuZm4ubW9kYWw7ZS5mbi5tb2RhbD1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIG89ZSh0aGlzKSxpPW8uZGF0YSgibW9kYWwiKSxhPWUuZXh0ZW5kKHt9LGUuZm4ubW9kYWwuZGVmYXVsdHMsby5kYXRhKCksIm9iamVjdCI9PXR5cGVvZiBuJiZuKTtpfHxvLmRhdGEoIm1vZGFsIixpPW5ldyB0KHRoaXMsYSkpLCJzdHJpbmciPT10eXBlb2Ygbj9pW25dKCk6YS5zaG93JiZpLnNob3coKX0pfSxlLmZuLm1vZGFsLmRlZmF1bHRzPXtiYWNrZHJvcDohMCxrZXlib2FyZDohMCxzaG93OiEwfSxlLmZuLm1vZGFsLkNvbnN0cnVjdG9yPXQsZS5mbi5tb2RhbC5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGUuZm4ubW9kYWw9bix0aGlzfSxlKGRvY3VtZW50KS5vbigiY2xpY2subW9kYWwuZGF0YS1hcGkiLCdbZGF0YS10b2dnbGU9Im1vZGFsIl0nLGZ1bmN0aW9uKHQpe3ZhciBuPWUodGhpcyksbz1uLmF0dHIoImhyZWYiKSxpPWUobi5hdHRyKCJkYXRhLXRhcmdldCIpfHxvJiZvLnJlcGxhY2UoLy4qKD89I1teXHNdKyQpLywiIikpLGE9aS5kYXRhKCJtb2RhbCIpPyJ0b2dnbGUiOmUuZXh0ZW5kKHtyZW1vdGU6IS8jLy50ZXN0KG8pJiZvfSxpLmRhdGEoKSxuLmRhdGEoKSk7dC5wcmV2ZW50RGVmYXVsdCgpLGkubW9kYWwoYSkub25lKCJoaWRlIixmdW5jdGlvbigpe24uZm9jdXMoKX0pfSl9KHdpbmRvdy5qUXVlcnkpLCFmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7dmFyIHQ9ZnVuY3Rpb24oZSx0KXt0aGlzLmluaXQoInRvb2x0aXAiLGUsdCl9O3QucHJvdG90eXBlPXtjb25zdHJ1Y3Rvcjp0LGluaXQ6ZnVuY3Rpb24odCxuLG8pe3ZhciBpLGEscixzLGM7Zm9yKHRoaXMudHlwZT10LHRoaXMuJGVsZW1lbnQ9ZShuKSx0aGlzLm9wdGlvbnM9dGhpcy5nZXRPcHRpb25zKG8pLHRoaXMuZW5hYmxlZD0hMCxyPXRoaXMub3B0aW9ucy50cmlnZ2VyLnNwbGl0KCIgIiksYz1yLmxlbmd0aDtjLS07KXM9cltjXSwiY2xpY2siPT1zP3RoaXMuJGVsZW1lbnQub24oImNsaWNrLiIrdGhpcy50eXBlLHRoaXMub3B0aW9ucy5zZWxlY3RvcixlLnByb3h5KHRoaXMudG9nZ2xlLHRoaXMpKToibWFudWFsIiE9cyYmKGk9ImhvdmVyIj09cz8ibW91c2VlbnRlciI6ImZvY3VzIixhPSJob3ZlciI9PXM/Im1vdXNlbGVhdmUiOiJibHVyIix0aGlzLiRlbGVtZW50Lm9uKGkrIi4iK3RoaXMudHlwZSx0aGlzLm9wdGlvbnMuc2VsZWN0b3IsZS5wcm94eSh0aGlzLmVudGVyLHRoaXMpKSx0aGlzLiRlbGVtZW50Lm9uKGErIi4iK3RoaXMudHlwZSx0aGlzLm9wdGlvbnMuc2VsZWN0b3IsZS5wcm94eSh0aGlzLmxlYXZlLHRoaXMpKSk7dGhpcy5vcHRpb25zLnNlbGVjdG9yP3RoaXMuX29wdGlvbnM9ZS5leHRlbmQoe30sdGhpcy5vcHRpb25zLHt0cmlnZ2VyOiJtYW51YWwiLHNlbGVjdG9yOiIifSk6dGhpcy5maXhUaXRsZSgpfSxnZXRPcHRpb25zOmZ1bmN0aW9uKHQpe3JldHVybiB0PWUuZXh0ZW5kKHt9LGUuZm5bdGhpcy50eXBlXS5kZWZhdWx0cyx0aGlzLiRlbGVtZW50LmRhdGEoKSx0KSx0LmRlbGF5JiYibnVtYmVyIj09dHlwZW9mIHQuZGVsYXkmJih0LmRlbGF5PXtzaG93OnQuZGVsYXksaGlkZTp0LmRlbGF5fSksdH0sZW50ZXI6ZnVuY3Rpb24odCl7dmFyIG4sbz1lLmZuW3RoaXMudHlwZV0uZGVmYXVsdHMsaT17fTtyZXR1cm4gdGhpcy5fb3B0aW9ucyYmZS5lYWNoKHRoaXMuX29wdGlvbnMsZnVuY3Rpb24oZSx0KXtvW2VdIT10JiYoaVtlXT10KX0sdGhpcyksbj1lKHQuY3VycmVudFRhcmdldClbdGhpcy50eXBlXShpKS5kYXRhKHRoaXMudHlwZSksbi5vcHRpb25zLmRlbGF5JiZuLm9wdGlvbnMuZGVsYXkuc2hvdz8oY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCksbi5ob3ZlclN0YXRlPSJpbiIsdm9pZCh0aGlzLnRpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbigpeyJpbiI9PW4uaG92ZXJTdGF0ZSYmbi5zaG93KCl9LG4ub3B0aW9ucy5kZWxheS5zaG93KSkpOm4uc2hvdygpfSxsZWF2ZTpmdW5jdGlvbih0KXt2YXIgbj1lKHQuY3VycmVudFRhcmdldClbdGhpcy50eXBlXSh0aGlzLl9vcHRpb25zKS5kYXRhKHRoaXMudHlwZSk7cmV0dXJuIHRoaXMudGltZW91dCYmY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCksbi5vcHRpb25zLmRlbGF5JiZuLm9wdGlvbnMuZGVsYXkuaGlkZT8obi5ob3ZlclN0YXRlPSJvdXQiLHZvaWQodGhpcy50aW1lb3V0PXNldFRpbWVvdXQoZnVuY3Rpb24oKXsib3V0Ij09bi5ob3ZlclN0YXRlJiZuLmhpZGUoKX0sbi5vcHRpb25zLmRlbGF5LmhpZGUpKSk6bi5oaWRlKCl9LHNob3c6ZnVuY3Rpb24oKXt2YXIgdCxuLG8saSxhLHIscz1lLkV2ZW50KCJzaG93Iik7aWYodGhpcy5oYXNDb250ZW50KCkmJnRoaXMuZW5hYmxlZCl7aWYodGhpcy4kZWxlbWVudC50cmlnZ2VyKHMpLHMuaXNEZWZhdWx0UHJldmVudGVkKCkpcmV0dXJuO3N3aXRjaCh0PXRoaXMudGlwKCksdGhpcy5zZXRDb250ZW50KCksdGhpcy5vcHRpb25zLmFuaW1hdGlvbiYmdC5hZGRDbGFzcygiZmFkZSIpLGE9ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMub3B0aW9ucy5wbGFjZW1lbnQ/dGhpcy5vcHRpb25zLnBsYWNlbWVudC5jYWxsKHRoaXMsdFswXSx0aGlzLiRlbGVtZW50WzBdKTp0aGlzLm9wdGlvbnMucGxhY2VtZW50LHQuZGV0YWNoKCkuY3NzKHt0b3A6MCxsZWZ0OjAsZGlzcGxheToiYmxvY2sifSksdGhpcy5vcHRpb25zLmNvbnRhaW5lcj90LmFwcGVuZFRvKHRoaXMub3B0aW9ucy5jb250YWluZXIpOnQuaW5zZXJ0QWZ0ZXIodGhpcy4kZWxlbWVudCksbj10aGlzLmdldFBvc2l0aW9uKCksbz10WzBdLm9mZnNldFdpZHRoLGk9dFswXS5vZmZzZXRIZWlnaHQsYSl7Y2FzZSJib3R0b20iOnI9e3RvcDpuLnRvcCtuLmhlaWdodCxsZWZ0Om4ubGVmdCtuLndpZHRoLzItby8yfTticmVhaztjYXNlInRvcCI6cj17dG9wOm4udG9wLWksbGVmdDpuLmxlZnQrbi53aWR0aC8yLW8vMn07YnJlYWs7Y2FzZSJsZWZ0IjpyPXt0b3A6bi50b3Arbi5oZWlnaHQvMi1pLzIsbGVmdDpuLmxlZnQtb307YnJlYWs7Y2FzZSJyaWdodCI6cj17dG9wOm4udG9wK24uaGVpZ2h0LzItaS8yLGxlZnQ6bi5sZWZ0K24ud2lkdGh9fXRoaXMuYXBwbHlQbGFjZW1lbnQocixhKSx0aGlzLiRlbGVtZW50LnRyaWdnZXIoInNob3duIil9fSxhcHBseVBsYWNlbWVudDpmdW5jdGlvbihlLHQpe3ZhciBuLG8saSxhLHI9dGhpcy50aXAoKSxzPXJbMF0ub2Zmc2V0V2lkdGgsYz1yWzBdLm9mZnNldEhlaWdodDtyLm9mZnNldChlKS5hZGRDbGFzcyh0KS5hZGRDbGFzcygiaW4iKSxuPXJbMF0ub2Zmc2V0V2lkdGgsbz1yWzBdLm9mZnNldEhlaWdodCwidG9wIj09dCYmbyE9YyYmKGUudG9wPWUudG9wK2MtbyxhPSEwKSwiYm90dG9tIj09dHx8InRvcCI9PXQ/KGk9MCxlLmxlZnQ8MCYmKGk9ZS5sZWZ0Ki0yLGUubGVmdD0wLHIub2Zmc2V0KGUpLG49clswXS5vZmZzZXRXaWR0aCxvPXJbMF0ub2Zmc2V0SGVpZ2h0KSx0aGlzLnJlcGxhY2VBcnJvdyhpLXMrbixuLCJsZWZ0IikpOnRoaXMucmVwbGFjZUFycm93KG8tYyxvLCJ0b3AiKSxhJiZyLm9mZnNldChlKX0scmVwbGFjZUFycm93OmZ1bmN0aW9uKGUsdCxuKXt0aGlzLmFycm93KCkuY3NzKG4sZT81MCooMS1lL3QpKyIlIjoiIil9LHNldENvbnRlbnQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnRpcCgpLHQ9dGhpcy5nZXRUaXRsZSgpO2UuZmluZCgiLnRvb2x0aXAtaW5uZXIiKVt0aGlzLm9wdGlvbnMuaHRtbD8iaHRtbCI6InRleHQiXSh0KSxlLnJlbW92ZUNsYXNzKCJmYWRlIGluIHRvcCBib3R0b20gbGVmdCByaWdodCIpfSxoaWRlOmZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3ZhciB0PXNldFRpbWVvdXQoZnVuY3Rpb24oKXtuLm9mZihlLnN1cHBvcnQudHJhbnNpdGlvbi5lbmQpLmRldGFjaCgpfSw1MDApO24ub25lKGUuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCxmdW5jdGlvbigpe2NsZWFyVGltZW91dCh0KSxuLmRldGFjaCgpfSl9dmFyIG49dGhpcy50aXAoKSxvPWUuRXZlbnQoImhpZGUiKTtpZih0aGlzLiRlbGVtZW50LnRyaWdnZXIobyksIW8uaXNEZWZhdWx0UHJldmVudGVkKCkpcmV0dXJuIG4ucmVtb3ZlQ2xhc3MoImluIiksZS5zdXBwb3J0LnRyYW5zaXRpb24mJnRoaXMuJHRpcC5oYXNDbGFzcygiZmFkZSIpP3QoKTpuLmRldGFjaCgpLHRoaXMuJGVsZW1lbnQudHJpZ2dlcigiaGlkZGVuIiksdGhpc30sZml4VGl0bGU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLiRlbGVtZW50OyhlLmF0dHIoInRpdGxlIil8fCJzdHJpbmciIT10eXBlb2YgZS5hdHRyKCJkYXRhLW9yaWdpbmFsLXRpdGxlIikpJiZlLmF0dHIoImRhdGEtb3JpZ2luYWwtdGl0bGUiLGUuYXR0cigidGl0bGUiKXx8IiIpLmF0dHIoInRpdGxlIiwiIil9LGhhc0NvbnRlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRUaXRsZSgpfSxnZXRQb3NpdGlvbjpmdW5jdGlvbigpe3ZhciB0PXRoaXMuJGVsZW1lbnRbMF07cmV0dXJuIGUuZXh0ZW5kKHt9LCJmdW5jdGlvbiI9PXR5cGVvZiB0LmdldEJvdW5kaW5nQ2xpZW50UmVjdD90LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOnt3aWR0aDp0Lm9mZnNldFdpZHRoLGhlaWdodDp0Lm9mZnNldEhlaWdodH0sdGhpcy4kZWxlbWVudC5vZmZzZXQoKSl9LGdldFRpdGxlOmZ1bmN0aW9uKCl7dmFyIGUsdD10aGlzLiRlbGVtZW50LG49dGhpcy5vcHRpb25zO3JldHVybiBlPXQuYXR0cigiZGF0YS1vcmlnaW5hbC10aXRsZSIpfHwoImZ1bmN0aW9uIj09dHlwZW9mIG4udGl0bGU/bi50aXRsZS5jYWxsKHRbMF0pOm4udGl0bGUpfSx0aXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kdGlwPXRoaXMuJHRpcHx8ZSh0aGlzLm9wdGlvbnMudGVtcGxhdGUpfSxhcnJvdzpmdW5jdGlvbigpe3JldHVybiB0aGlzLiRhcnJvdz10aGlzLiRhcnJvd3x8dGhpcy50aXAoKS5maW5kKCIudG9vbHRpcC1hcnJvdyIpfSx2YWxpZGF0ZTpmdW5jdGlvbigpe3RoaXMuJGVsZW1lbnRbMF0ucGFyZW50Tm9kZXx8KHRoaXMuaGlkZSgpLHRoaXMuJGVsZW1lbnQ9bnVsbCx0aGlzLm9wdGlvbnM9bnVsbCl9LGVuYWJsZTpmdW5jdGlvbigpe3RoaXMuZW5hYmxlZD0hMH0sZGlzYWJsZTpmdW5jdGlvbigpe3RoaXMuZW5hYmxlZD0hMX0sdG9nZ2xlRW5hYmxlZDpmdW5jdGlvbigpe3RoaXMuZW5hYmxlZD0hdGhpcy5lbmFibGVkfSx0b2dnbGU6ZnVuY3Rpb24odCl7dmFyIG49dD9lKHQuY3VycmVudFRhcmdldClbdGhpcy50eXBlXSh0aGlzLl9vcHRpb25zKS5kYXRhKHRoaXMudHlwZSk6dGhpcztuLnRpcCgpLmhhc0NsYXNzKCJpbiIpP24uaGlkZSgpOm4uc2hvdygpfSxkZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5oaWRlKCkuJGVsZW1lbnQub2ZmKCIuIit0aGlzLnR5cGUpLnJlbW92ZURhdGEodGhpcy50eXBlKX19O3ZhciBuPWUuZm4udG9vbHRpcDtlLmZuLnRvb2x0aXA9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBvPWUodGhpcyksaT1vLmRhdGEoInRvb2x0aXAiKSxhPSJvYmplY3QiPT10eXBlb2YgbiYmbjtpfHxvLmRhdGEoInRvb2x0aXAiLGk9bmV3IHQodGhpcyxhKSksInN0cmluZyI9PXR5cGVvZiBuJiZpW25dKCl9KX0sZS5mbi50b29sdGlwLkNvbnN0cnVjdG9yPXQsZS5mbi50b29sdGlwLmRlZmF1bHRzPXthbmltYXRpb246ITAscGxhY2VtZW50OiJ0b3AiLHNlbGVjdG9yOiExLHRlbXBsYXRlOic8ZGl2IGNsYXNzPSJ0b29sdGlwIj48ZGl2IGNsYXNzPSJ0b29sdGlwLWFycm93Ij48L2Rpdj48ZGl2IGNsYXNzPSJ0b29sdGlwLWlubmVyIj48L2Rpdj48L2Rpdj4nLHRyaWdnZXI6ImhvdmVyIGZvY3VzIix0aXRsZToiIixkZWxheTowLGh0bWw6ITEsY29udGFpbmVyOiExfSxlLmZuLnRvb2x0aXAubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBlLmZuLnRvb2x0aXA9bix0aGlzfX0od2luZG93LmpRdWVyeSksIWZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0Ijt2YXIgdD1mdW5jdGlvbihlLHQpe3RoaXMuaW5pdCgicG9wb3ZlciIsZSx0KX07dC5wcm90b3R5cGU9ZS5leHRlbmQoe30sZS5mbi50b29sdGlwLkNvbnN0cnVjdG9yLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6dCxzZXRDb250ZW50OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy50aXAoKSx0PXRoaXMuZ2V0VGl0bGUoKSxuPXRoaXMuZ2V0Q29udGVudCgpO2UuZmluZCgiLnBvcG92ZXItdGl0bGUiKVt0aGlzLm9wdGlvbnMuaHRtbD8iaHRtbCI6InRleHQiXSh0KSxlLmZpbmQoIi5wb3BvdmVyLWNvbnRlbnQiKVt0aGlzLm9wdGlvbnMuaHRtbD8iaHRtbCI6InRleHQiXShuKSxlLnJlbW92ZUNsYXNzKCJmYWRlIHRvcCBib3R0b20gbGVmdCByaWdodCBpbiIpfSxoYXNDb250ZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0VGl0bGUoKXx8dGhpcy5nZXRDb250ZW50KCl9LGdldENvbnRlbnQ6ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMuJGVsZW1lbnQsbj10aGlzLm9wdGlvbnM7cmV0dXJuIGU9KCJmdW5jdGlvbiI9PXR5cGVvZiBuLmNvbnRlbnQ/bi5jb250ZW50LmNhbGwodFswXSk6bi5jb250ZW50KXx8dC5hdHRyKCJkYXRhLWNvbnRlbnQiKX0sdGlwOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHRpcHx8KHRoaXMuJHRpcD1lKHRoaXMub3B0aW9ucy50ZW1wbGF0ZSkpLHRoaXMuJHRpcH0sZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuaGlkZSgpLiRlbGVtZW50Lm9mZigiLiIrdGhpcy50eXBlKS5yZW1vdmVEYXRhKHRoaXMudHlwZSl9fSk7dmFyIG49ZS5mbi5wb3BvdmVyO2UuZm4ucG9wb3Zlcj1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIG89ZSh0aGlzKSxpPW8uZGF0YSgicG9wb3ZlciIpLGE9Im9iamVjdCI9PXR5cGVvZiBuJiZuO2l8fG8uZGF0YSgicG9wb3ZlciIsaT1uZXcgdCh0aGlzLGEpKSwic3RyaW5nIj09dHlwZW9mIG4mJmlbbl0oKX0pfSxlLmZuLnBvcG92ZXIuQ29uc3RydWN0b3I9dCxlLmZuLnBvcG92ZXIuZGVmYXVsdHM9ZS5leHRlbmQoe30sZS5mbi50b29sdGlwLmRlZmF1bHRzLHtwbGFjZW1lbnQ6InJpZ2h0Iix0cmlnZ2VyOiJjbGljayIsY29udGVudDoiIix0ZW1wbGF0ZTonPGRpdiBjbGFzcz0icG9wb3ZlciI+PGRpdiBjbGFzcz0iYXJyb3ciPjwvZGl2PjxoMyBjbGFzcz0icG9wb3Zlci10aXRsZSI+PC9oMz48ZGl2IGNsYXNzPSJwb3BvdmVyLWNvbnRlbnQiPjwvZGl2PjwvZGl2Pid9KSxlLmZuLnBvcG92ZXIubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBlLmZuLnBvcG92ZXI9bix0aGlzfX0od2luZG93LmpRdWVyeSksIWZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB0KHQsbil7dmFyIG8saT1lLnByb3h5KHRoaXMucHJvY2Vzcyx0aGlzKSxhPWUoZSh0KS5pcygiYm9keSIpP3dpbmRvdzp0KTt0aGlzLm9wdGlvbnM9ZS5leHRlbmQoe30sZS5mbi5zY3JvbGxzcHkuZGVmYXVsdHMsbiksdGhpcy4kc2Nyb2xsRWxlbWVudD1hLm9uKCJzY3JvbGwuc2Nyb2xsLXNweS5kYXRhLWFwaSIsaSksdGhpcy5zZWxlY3Rvcj0odGhpcy5vcHRpb25zLnRhcmdldHx8KG89ZSh0KS5hdHRyKCJocmVmIikpJiZvLnJlcGxhY2UoLy4qKD89I1teXHNdKyQpLywiIil8fCIiKSsiIC5uYXYgbGkgPiBhIix0aGlzLiRib2R5PWUoImJvZHkiKSx0aGlzLnJlZnJlc2goKSx0aGlzLnByb2Nlc3MoKX10LnByb3RvdHlwZT17Y29uc3RydWN0b3I6dCxyZWZyZXNoOmZ1bmN0aW9uKCl7dmFyIHQsbj10aGlzO3RoaXMub2Zmc2V0cz1lKFtdKSx0aGlzLnRhcmdldHM9ZShbXSksdD10aGlzLiRib2R5LmZpbmQodGhpcy5zZWxlY3RvcikubWFwKGZ1bmN0aW9uKCl7dmFyIHQ9ZSh0aGlzKSxvPXQuZGF0YSgidGFyZ2V0Iil8fHQuYXR0cigiaHJlZiIpLGk9L14jXHcvLnRlc3QobykmJmUobyk7cmV0dXJuIGkmJmkubGVuZ3RoJiZbW2kucG9zaXRpb24oKS50b3ArKCFlLmlzV2luZG93KG4uJHNjcm9sbEVsZW1lbnQuZ2V0KDApKSYmbi4kc2Nyb2xsRWxlbWVudC5zY3JvbGxUb3AoKSksb11dfHxudWxsfSkuc29ydChmdW5jdGlvbihlLHQpe3JldHVybiBlWzBdLXRbMF19KS5lYWNoKGZ1bmN0aW9uKCl7bi5vZmZzZXRzLnB1c2godGhpc1swXSksbi50YXJnZXRzLnB1c2godGhpc1sxXSl9KX0scHJvY2VzczpmdW5jdGlvbigpe3ZhciBlLHQ9dGhpcy4kc2Nyb2xsRWxlbWVudC5zY3JvbGxUb3AoKSt0aGlzLm9wdGlvbnMub2Zmc2V0LG49dGhpcy4kc2Nyb2xsRWxlbWVudFswXS5zY3JvbGxIZWlnaHR8fHRoaXMuJGJvZHlbMF0uc2Nyb2xsSGVpZ2h0LG89bi10aGlzLiRzY3JvbGxFbGVtZW50LmhlaWdodCgpLGk9dGhpcy5vZmZzZXRzLGE9dGhpcy50YXJnZXRzLHI9dGhpcy5hY3RpdmVUYXJnZXQ7aWYodD49bylyZXR1cm4gciE9KGU9YS5sYXN0KClbMF0pJiZ0aGlzLmFjdGl2YXRlKGUpO2ZvcihlPWkubGVuZ3RoO2UtLTspciE9YVtlXSYmdD49aVtlXSYmKCFpW2UrMV18fHQ8PWlbZSsxXSkmJnRoaXMuYWN0aXZhdGUoYVtlXSl9LGFjdGl2YXRlOmZ1bmN0aW9uKHQpe3ZhciBuLG87dGhpcy5hY3RpdmVUYXJnZXQ9dCxlKHRoaXMuc2VsZWN0b3IpLnBhcmVudCgiLmFjdGl2ZSIpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKSxvPXRoaXMuc2VsZWN0b3IrJ1tkYXRhLXRhcmdldD0iJyt0KyciXSwnK3RoaXMuc2VsZWN0b3IrJ1tocmVmPSInK3QrJyJdJyxuPWUobykucGFyZW50KCJsaSIpLmFkZENsYXNzKCJhY3RpdmUiKSxuLnBhcmVudCgiLmRyb3Bkb3duLW1lbnUiKS5sZW5ndGgmJihuPW4uY2xvc2VzdCgibGkuZHJvcGRvd24iKS5hZGRDbGFzcygiYWN0aXZlIikpLG4udHJpZ2dlcigiYWN0aXZhdGUiKX19O3ZhciBuPWUuZm4uc2Nyb2xsc3B5O2UuZm4uc2Nyb2xsc3B5PWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgbz1lKHRoaXMpLGk9by5kYXRhKCJzY3JvbGxzcHkiKSxhPSJvYmplY3QiPT10eXBlb2YgbiYmbjtpfHxvLmRhdGEoInNjcm9sbHNweSIsaT1uZXcgdCh0aGlzLGEpKSwic3RyaW5nIj09dHlwZW9mIG4mJmlbbl0oKX0pfSxlLmZuLnNjcm9sbHNweS5Db25zdHJ1Y3Rvcj10LGUuZm4uc2Nyb2xsc3B5LmRlZmF1bHRzPXtvZmZzZXQ6MTB9LGUuZm4uc2Nyb2xsc3B5Lm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gZS5mbi5zY3JvbGxzcHk9bix0aGlzfSxlKHdpbmRvdykub24oImxvYWQiLGZ1bmN0aW9uKCl7ZSgnW2RhdGEtc3B5PSJzY3JvbGwiXScpLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpO3Quc2Nyb2xsc3B5KHQuZGF0YSgpKX0pfSl9KHdpbmRvdy5qUXVlcnkpLCFmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7dmFyIHQ9ZnVuY3Rpb24odCl7dGhpcy5lbGVtZW50PWUodCl9O3QucHJvdG90eXBlPXtjb25zdHJ1Y3Rvcjp0LHNob3c6ZnVuY3Rpb24oKXt2YXIgdCxuLG8saT10aGlzLmVsZW1lbnQsYT1pLmNsb3Nlc3QoInVsOm5vdCguZHJvcGRvd24tbWVudSkiKSxyPWkuYXR0cigiZGF0YS10YXJnZXQiKTtyfHwocj1pLmF0dHIoImhyZWYiKSxyPXImJnIucmVwbGFjZSgvLiooPz0jW15cc10qJCkvLCIiKSksaS5wYXJlbnQoImxpIikuaGFzQ2xhc3MoImFjdGl2ZSIpfHwodD1hLmZpbmQoIi5hY3RpdmU6bGFzdCBhIilbMF0sbz1lLkV2ZW50KCJzaG93Iix7cmVsYXRlZFRhcmdldDp0fSksaS50cmlnZ2VyKG8pLG8uaXNEZWZhdWx0UHJldmVudGVkKCl8fChuPWUociksdGhpcy5hY3RpdmF0ZShpLnBhcmVudCgibGkiKSxhKSx0aGlzLmFjdGl2YXRlKG4sbi5wYXJlbnQoKSxmdW5jdGlvbigpe2kudHJpZ2dlcih7dHlwZToic2hvd24iLHJlbGF0ZWRUYXJnZXQ6dH0pfSkpKX0sYWN0aXZhdGU6ZnVuY3Rpb24odCxuLG8pe2Z1bmN0aW9uIGkoKXthLnJlbW92ZUNsYXNzKCJhY3RpdmUiKS5maW5kKCI+IC5kcm9wZG93bi1tZW51ID4gLmFjdGl2ZSIpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKSx0LmFkZENsYXNzKCJhY3RpdmUiKSxyPyh0WzBdLm9mZnNldFdpZHRoLHQuYWRkQ2xhc3MoImluIikpOnQucmVtb3ZlQ2xhc3MoImZhZGUiKSx0LnBhcmVudCgiLmRyb3Bkb3duLW1lbnUiKSYmdC5jbG9zZXN0KCJsaS5kcm9wZG93biIpLmFkZENsYXNzKCJhY3RpdmUiKSxvJiZvKCl9dmFyIGE9bi5maW5kKCI+IC5hY3RpdmUiKSxyPW8mJmUuc3VwcG9ydC50cmFuc2l0aW9uJiZhLmhhc0NsYXNzKCJmYWRlIik7cj9hLm9uZShlLnN1cHBvcnQudHJhbnNpdGlvbi5lbmQsaSk6aSgpLGEucmVtb3ZlQ2xhc3MoImluIil9fTt2YXIgbj1lLmZuLnRhYjtlLmZuLnRhYj1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIG89ZSh0aGlzKSxpPW8uZGF0YSgidGFiIik7aXx8by5kYXRhKCJ0YWIiLGk9bmV3IHQodGhpcykpLCJzdHJpbmciPT10eXBlb2YgbiYmaVtuXSgpfSl9LGUuZm4udGFiLkNvbnN0cnVjdG9yPXQsZS5mbi50YWIubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBlLmZuLnRhYj1uLHRoaXN9LGUoZG9jdW1lbnQpLm9uKCJjbGljay50YWIuZGF0YS1hcGkiLCdbZGF0YS10b2dnbGU9InRhYiJdLCBbZGF0YS10b2dnbGU9InBpbGwiXScsZnVuY3Rpb24odCl7dC5wcmV2ZW50RGVmYXVsdCgpLGUodGhpcykudGFiKCJzaG93Iil9KX0od2luZG93LmpRdWVyeSksIWZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0Ijt2YXIgdD1mdW5jdGlvbih0LG4pe3RoaXMuJGVsZW1lbnQ9ZSh0KSx0aGlzLm9wdGlvbnM9ZS5leHRlbmQoe30sZS5mbi50eXBlYWhlYWQuZGVmYXVsdHMsbiksdGhpcy5tYXRjaGVyPXRoaXMub3B0aW9ucy5tYXRjaGVyfHx0aGlzLm1hdGNoZXIsdGhpcy5zb3J0ZXI9dGhpcy5vcHRpb25zLnNvcnRlcnx8dGhpcy5zb3J0ZXIsdGhpcy5oaWdobGlnaHRlcj10aGlzLm9wdGlvbnMuaGlnaGxpZ2h0ZXJ8fHRoaXMuaGlnaGxpZ2h0ZXIsdGhpcy51cGRhdGVyPXRoaXMub3B0aW9ucy51cGRhdGVyfHx0aGlzLnVwZGF0ZXIsdGhpcy5zb3VyY2U9dGhpcy5vcHRpb25zLnNvdXJjZSx0aGlzLiRtZW51PWUodGhpcy5vcHRpb25zLm1lbnUpLHRoaXMuc2hvd249ITEsdGhpcy5saXN0ZW4oKX07dC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOnQsc2VsZWN0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy4kbWVudS5maW5kKCIuYWN0aXZlIikuYXR0cigiZGF0YS12YWx1ZSIpO3JldHVybiB0aGlzLiRlbGVtZW50LnZhbCh0aGlzLnVwZGF0ZXIoZSkpLmNoYW5nZSgpLHRoaXMuaGlkZSgpfSx1cGRhdGVyOmZ1bmN0aW9uKGUpe3JldHVybiBlfSxzaG93OmZ1bmN0aW9uKCl7dmFyIHQ9ZS5leHRlbmQoe30sdGhpcy4kZWxlbWVudC5wb3NpdGlvbigpLHtoZWlnaHQ6dGhpcy4kZWxlbWVudFswXS5vZmZzZXRIZWlnaHR9KTtyZXR1cm4gdGhpcy4kbWVudS5pbnNlcnRBZnRlcih0aGlzLiRlbGVtZW50KS5jc3Moe3RvcDp0LnRvcCt0LmhlaWdodCxsZWZ0OnQubGVmdH0pLnNob3coKSx0aGlzLnNob3duPSEwLHRoaXN9LGhpZGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kbWVudS5oaWRlKCksdGhpcy5zaG93bj0hMSx0aGlzfSxsb29rdXA6ZnVuY3Rpb24odCl7dmFyIG47cmV0dXJuIHRoaXMucXVlcnk9dGhpcy4kZWxlbWVudC52YWwoKSwhdGhpcy5xdWVyeXx8dGhpcy5xdWVyeS5sZW5ndGg8dGhpcy5vcHRpb25zLm1pbkxlbmd0aD90aGlzLnNob3duP3RoaXMuaGlkZSgpOnRoaXM6KG49ZS5pc0Z1bmN0aW9uKHRoaXMuc291cmNlKT90aGlzLnNvdXJjZSh0aGlzLnF1ZXJ5LGUucHJveHkodGhpcy5wcm9jZXNzLHRoaXMpKTp0aGlzLnNvdXJjZSxuP3RoaXMucHJvY2VzcyhuKTp0aGlzKX0scHJvY2VzczpmdW5jdGlvbih0KXt2YXIgbj10aGlzO3JldHVybiB0PWUuZ3JlcCh0LGZ1bmN0aW9uKGUpe3JldHVybiBuLm1hdGNoZXIoZSl9KSx0PXRoaXMuc29ydGVyKHQpLHQubGVuZ3RoP3RoaXMucmVuZGVyKHQuc2xpY2UoMCx0aGlzLm9wdGlvbnMuaXRlbXMpKS5zaG93KCk6dGhpcy5zaG93bj90aGlzLmhpZGUoKTp0aGlzfSxtYXRjaGVyOmZ1bmN0aW9uKGUpe3JldHVybn5lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0aGlzLnF1ZXJ5LnRvTG93ZXJDYXNlKCkpfSxzb3J0ZXI6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG49W10sbz1bXSxpPVtdO3Q9ZS5zaGlmdCgpOyl0LnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0aGlzLnF1ZXJ5LnRvTG93ZXJDYXNlKCkpP350LmluZGV4T2YodGhpcy5xdWVyeSk/by5wdXNoKHQpOmkucHVzaCh0KTpuLnB1c2godCk7cmV0dXJuIG4uY29uY2F0KG8saSl9LGhpZ2hsaWdodGVyOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucXVlcnkucmVwbGFjZSgvW1wtXFtcXXt9KCkqKz8uLFxcXF4kfCNcc10vZywiXFwkJiIpO3JldHVybiBlLnJlcGxhY2UobmV3IFJlZ0V4cCgiKCIrdCsiKSIsImlnIiksZnVuY3Rpb24oZSx0KXtyZXR1cm4iPHN0cm9uZz4iK3QrIjwvc3Ryb25nPiJ9KX0scmVuZGVyOmZ1bmN0aW9uKHQpe3ZhciBuPXRoaXM7cmV0dXJuIHQ9ZSh0KS5tYXAoZnVuY3Rpb24odCxvKXtyZXR1cm4gdD1lKG4ub3B0aW9ucy5pdGVtKS5hdHRyKCJkYXRhLXZhbHVlIixvKSx0LmZpbmQoImEiKS5odG1sKG4uaGlnaGxpZ2h0ZXIobykpLHRbMF19KSx0LmZpcnN0KCkuYWRkQ2xhc3MoImFjdGl2ZSIpLHRoaXMuJG1lbnUuaHRtbCh0KSx0aGlzfSxuZXh0OmZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMuJG1lbnUuZmluZCgiLmFjdGl2ZSIpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKSxvPW4ubmV4dCgpO28ubGVuZ3RofHwobz1lKHRoaXMuJG1lbnUuZmluZCgibGkiKVswXSkpLG8uYWRkQ2xhc3MoImFjdGl2ZSIpfSxwcmV2OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuJG1lbnUuZmluZCgiLmFjdGl2ZSIpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKSxuPXQucHJldigpO24ubGVuZ3RofHwobj10aGlzLiRtZW51LmZpbmQoImxpIikubGFzdCgpKSxuLmFkZENsYXNzKCJhY3RpdmUiKX0sbGlzdGVuOmZ1bmN0aW9uKCl7dGhpcy4kZWxlbWVudC5vbigiZm9jdXMiLGUucHJveHkodGhpcy5mb2N1cyx0aGlzKSkub24oImJsdXIiLGUucHJveHkodGhpcy5ibHVyLHRoaXMpKS5vbigia2V5cHJlc3MiLGUucHJveHkodGhpcy5rZXlwcmVzcyx0aGlzKSkub24oImtleXVwIixlLnByb3h5KHRoaXMua2V5dXAsdGhpcykpLHRoaXMuZXZlbnRTdXBwb3J0ZWQoImtleWRvd24iKSYmdGhpcy4kZWxlbWVudC5vbigia2V5ZG93biIsZS5wcm94eSh0aGlzLmtleWRvd24sdGhpcykpLHRoaXMuJG1lbnUub24oImNsaWNrIixlLnByb3h5KHRoaXMuY2xpY2ssdGhpcykpLm9uKCJtb3VzZWVudGVyIiwibGkiLGUucHJveHkodGhpcy5tb3VzZWVudGVyLHRoaXMpKS5vbigibW91c2VsZWF2ZSIsImxpIixlLnByb3h5KHRoaXMubW91c2VsZWF2ZSx0aGlzKSl9LGV2ZW50U3VwcG9ydGVkOmZ1bmN0aW9uKGUpe3ZhciB0PWUgaW4gdGhpcy4kZWxlbWVudDtyZXR1cm4gdHx8KHRoaXMuJGVsZW1lbnQuc2V0QXR0cmlidXRlKGUsInJldHVybjsiKSx0PSJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLiRlbGVtZW50W2VdKSx0fSxtb3ZlOmZ1bmN0aW9uKGUpe2lmKHRoaXMuc2hvd24pe3N3aXRjaChlLmtleUNvZGUpe2Nhc2UgOTpjYXNlIDEzOmNhc2UgMjc6ZS5wcmV2ZW50RGVmYXVsdCgpO2JyZWFrO2Nhc2UgMzg6ZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMucHJldigpO2JyZWFrO2Nhc2UgNDA6ZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMubmV4dCgpfWUuc3RvcFByb3BhZ2F0aW9uKCl9fSxrZXlkb3duOmZ1bmN0aW9uKHQpe3RoaXMuc3VwcHJlc3NLZXlQcmVzc1JlcGVhdD1+ZS5pbkFycmF5KHQua2V5Q29kZSxbNDAsMzgsOSwxMywyN10pLHRoaXMubW92ZSh0KX0sa2V5cHJlc3M6ZnVuY3Rpb24oZSl7dGhpcy5zdXBwcmVzc0tleVByZXNzUmVwZWF0fHx0aGlzLm1vdmUoZSl9LGtleXVwOmZ1bmN0aW9uKGUpe3N3aXRjaChlLmtleUNvZGUpe2Nhc2UgNDA6Y2FzZSAzODpjYXNlIDE2OmNhc2UgMTc6Y2FzZSAxODpicmVhaztjYXNlIDk6Y2FzZSAxMzppZighdGhpcy5zaG93bilyZXR1cm47dGhpcy5zZWxlY3QoKTticmVhaztjYXNlIDI3OmlmKCF0aGlzLnNob3duKXJldHVybjt0aGlzLmhpZGUoKTticmVhaztkZWZhdWx0OnRoaXMubG9va3VwKCl9ZS5zdG9wUHJvcGFnYXRpb24oKSxlLnByZXZlbnREZWZhdWx0KCl9LGZvY3VzOmZ1bmN0aW9uKGUpe3RoaXMuZm9jdXNlZD0hMH0sYmx1cjpmdW5jdGlvbihlKXt0aGlzLmZvY3VzZWQ9ITEsIXRoaXMubW91c2Vkb3ZlciYmdGhpcy5zaG93biYmdGhpcy5oaWRlKCl9LGNsaWNrOmZ1bmN0aW9uKGUpe2Uuc3RvcFByb3BhZ2F0aW9uKCksZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuc2VsZWN0KCksdGhpcy4kZWxlbWVudC5mb2N1cygpfSxtb3VzZWVudGVyOmZ1bmN0aW9uKHQpe3RoaXMubW91c2Vkb3Zlcj0hMCx0aGlzLiRtZW51LmZpbmQoIi5hY3RpdmUiKS5yZW1vdmVDbGFzcygiYWN0aXZlIiksZSh0LmN1cnJlbnRUYXJnZXQpLmFkZENsYXNzKCJhY3RpdmUiKX0sbW91c2VsZWF2ZTpmdW5jdGlvbihlKXt0aGlzLm1vdXNlZG92ZXI9ITEsIXRoaXMuZm9jdXNlZCYmdGhpcy5zaG93biYmdGhpcy5oaWRlKCl9fTt2YXIgbj1lLmZuLnR5cGVhaGVhZDtlLmZuLnR5cGVhaGVhZD1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIG89ZSh0aGlzKSxpPW8uZGF0YSgidHlwZWFoZWFkIiksYT0ib2JqZWN0Ij09dHlwZW9mIG4mJm47aXx8by5kYXRhKCJ0eXBlYWhlYWQiLGk9bmV3IHQodGhpcyxhKSksInN0cmluZyI9PXR5cGVvZiBuJiZpW25dKCl9KX0sZS5mbi50eXBlYWhlYWQuZGVmYXVsdHM9e3NvdXJjZTpbXSxpdGVtczo4LG1lbnU6Jzx1bCBjbGFzcz0idHlwZWFoZWFkIGRyb3Bkb3duLW1lbnUiPjwvdWw+JyxpdGVtOic8bGk+PGEgaHJlZj0iIyI+PC9hPjwvbGk+JyxtaW5MZW5ndGg6MX0sZS5mbi50eXBlYWhlYWQuQ29uc3RydWN0b3I9dCxlLmZuLnR5cGVhaGVhZC5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGUuZm4udHlwZWFoZWFkPW4sdGhpc30sZShkb2N1bWVudCkub24oImZvY3VzLnR5cGVhaGVhZC5kYXRhLWFwaSIsJ1tkYXRhLXByb3ZpZGU9InR5cGVhaGVhZCJdJyxmdW5jdGlvbih0KXt2YXIgbj1lKHRoaXMpO24uZGF0YSgidHlwZWFoZWFkIil8fG4udHlwZWFoZWFkKG4uZGF0YSgpKX0pfSh3aW5kb3cualF1ZXJ5KSxmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdChlLG4pe2lmKCEodGhpcyBpbnN0YW5jZW9mIHQpKXt2YXIgbz1uZXcgdChlLG4pO3JldHVybiBvLm9wZW4oKSxvfXRoaXMuaWQ9dC5pZCsrLHRoaXMuc2V0dXAoZSxuKSx0aGlzLmNoYWluQ2FsbGJhY2tzKHQuX2NhbGxiYWNrQ2hhaW4pfWZ1bmN0aW9uIG4oZSx0KXt2YXIgbj17fTtmb3IodmFyIG8gaW4gZSlvIGluIHQmJihuW29dPWVbb10sZGVsZXRlIGVbb10pO3JldHVybiBufWZ1bmN0aW9uIG8oZSx0KXt2YXIgbj17fSxvPW5ldyBSZWdFeHAoIl4iK3QrIihbQS1aXSkoLiopIik7Zm9yKHZhciBpIGluIGUpe3ZhciBhPWkubWF0Y2gobyk7aWYoYSl7dmFyIHI9KGFbMV0rYVsyXS5yZXBsYWNlKC8oW0EtWl0pL2csIi0kMSIpKS50b0xvd2VyQ2FzZSgpO25bcl09ZVtpXX19cmV0dXJuIG59aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBlKXJldHVybiB2b2lkKCJjb25zb2xlImluIHdpbmRvdyYmd2luZG93LmNvbnNvbGUuaW5mbygiVG9vIG11Y2ggbGlnaHRuZXNzLCBGZWF0aGVybGlnaHQgbmVlZHMgalF1ZXJ5LiIpKTtpZihlLmZuLmpxdWVyeS5tYXRjaCgvLWFqYXgvKSlyZXR1cm4gdm9pZCgiY29uc29sZSJpbiB3aW5kb3cmJndpbmRvdy5jb25zb2xlLmluZm8oIkZlYXRoZXJsaWdodCBuZWVkcyByZWd1bGFyIGpRdWVyeSwgbm90IHRoZSBzbGltIHZlcnNpb24uIikpO3ZhciBpPVtdLGE9ZnVuY3Rpb24odCl7cmV0dXJuIGk9ZS5ncmVwKGksZnVuY3Rpb24oZSl7cmV0dXJuIGUhPT10JiZlLiRpbnN0YW5jZS5jbG9zZXN0KCJib2R5IikubGVuZ3RoPjB9KX0scj17YWxsb3c6MSxhbGxvd2Z1bGxzY3JlZW46MSxmcmFtZWJvcmRlcjoxLGhlaWdodDoxLGxvbmdkZXNjOjEsbWFyZ2luaGVpZ2h0OjEsbWFyZ2lud2lkdGg6MSxtb3phbGxvd2Z1bGxzY3JlZW46MSxuYW1lOjEscmVmZXJyZXJwb2xpY3k6MSxzYW5kYm94OjEsc2Nyb2xsaW5nOjEsc3JjOjEsc3JjZG9jOjEsc3R5bGU6MSx3ZWJraXRhbGxvd2Z1bGxzY3JlZW46MSx3aWR0aDoxfSxzPXtrZXl1cDoib25LZXlVcCIscmVzaXplOiJvblJlc2l6ZSJ9LGM9ZnVuY3Rpb24obil7ZS5lYWNoKHQub3BlbmVkKCkucmV2ZXJzZSgpLGZ1bmN0aW9uKCl7aWYoIW4uaXNEZWZhdWx0UHJldmVudGVkKCkmJiExPT09dGhpc1tzW24udHlwZV1dKG4pKXJldHVybiBuLnByZXZlbnREZWZhdWx0KCksbi5zdG9wUHJvcGFnYXRpb24oKSwhMX0pfSxsPWZ1bmN0aW9uKG4pe2lmKG4hPT10Ll9nbG9iYWxIYW5kbGVySW5zdGFsbGVkKXt0Ll9nbG9iYWxIYW5kbGVySW5zdGFsbGVkPW47dmFyIG89ZS5tYXAocyxmdW5jdGlvbihlLG4pe3JldHVybiBuKyIuIit0LnByb3RvdHlwZS5uYW1lc3BhY2V9KS5qb2luKCIgIik7ZSh3aW5kb3cpW24/Im9uIjoib2ZmIl0obyxjKX19O3QucHJvdG90eXBlPXtjb25zdHJ1Y3Rvcjp0LG5hbWVzcGFjZToiZmVhdGhlcmxpZ2h0Iix0YXJnZXRBdHRyOiJkYXRhLWZlYXRoZXJsaWdodCIsdmFyaWFudDpudWxsLHJlc2V0Q3NzOiExLGJhY2tncm91bmQ6bnVsbCxvcGVuVHJpZ2dlcjoiY2xpY2siLGNsb3NlVHJpZ2dlcjoiY2xpY2siLGZpbHRlcjpudWxsLHJvb3Q6ImJvZHkiLG9wZW5TcGVlZDoyNTAsY2xvc2VTcGVlZDoyNTAsY2xvc2VPbkNsaWNrOiJiYWNrZ3JvdW5kIixjbG9zZU9uRXNjOiEwLGNsb3NlSWNvbjoiJiMxMDAwNTsiLGxvYWRpbmc6IiIscGVyc2lzdDohMSxvdGhlckNsb3NlOm51bGwsYmVmb3JlT3BlbjplLm5vb3AsYmVmb3JlQ29udGVudDplLm5vb3AsYmVmb3JlQ2xvc2U6ZS5ub29wLGFmdGVyT3BlbjplLm5vb3AsYWZ0ZXJDb250ZW50OmUubm9vcCxhZnRlckNsb3NlOmUubm9vcCxvbktleVVwOmUubm9vcCxvblJlc2l6ZTplLm5vb3AsdHlwZTpudWxsLGNvbnRlbnRGaWx0ZXJzOlsianF1ZXJ5IiwiaW1hZ2UiLCJodG1sIiwiYWpheCIsImlmcmFtZSIsInRleHQiXSxzZXR1cDpmdW5jdGlvbih0LG4peyJvYmplY3QiIT10eXBlb2YgdHx8dCBpbnN0YW5jZW9mIGUhPSExfHxufHwobj10LHQ9dm9pZCAwKTt2YXIgbz1lLmV4dGVuZCh0aGlzLG4se3RhcmdldDp0fSksaT1vLnJlc2V0Q3NzP28ubmFtZXNwYWNlKyItcmVzZXQiOm8ubmFtZXNwYWNlLGE9ZShvLmJhY2tncm91bmR8fFsnPGRpdiBjbGFzcz0iJytpKyItbG9hZGluZyAiK2krJyI+JywnPGRpdiBjbGFzcz0iJytpKyctY29udGVudCI+JywnPGJ1dHRvbiBjbGFzcz0iJytpKyItY2xvc2UtaWNvbiAiK28ubmFtZXNwYWNlKyctY2xvc2UiIGFyaWEtbGFiZWw9IkNsb3NlIj4nLG8uY2xvc2VJY29uLCI8L2J1dHRvbj4iLCc8ZGl2IGNsYXNzPSInK28ubmFtZXNwYWNlKyctaW5uZXIiPicrby5sb2FkaW5nKyI8L2Rpdj4iLCI8L2Rpdj4iLCI8L2Rpdj4iXS5qb2luKCIiKSkscj0iLiIrby5uYW1lc3BhY2UrIi1jbG9zZSIrKG8ub3RoZXJDbG9zZT8iLCIrby5vdGhlckNsb3NlOiIiKTtyZXR1cm4gby4kaW5zdGFuY2U9YS5jbG9uZSgpLmFkZENsYXNzKG8udmFyaWFudCksby4kaW5zdGFuY2Uub24oby5jbG9zZVRyaWdnZXIrIi4iK28ubmFtZXNwYWNlLGZ1bmN0aW9uKHQpe2lmKCF0LmlzRGVmYXVsdFByZXZlbnRlZCgpKXt2YXIgbj1lKHQudGFyZ2V0KTsoImJhY2tncm91bmQiPT09by5jbG9zZU9uQ2xpY2smJm4uaXMoIi4iK28ubmFtZXNwYWNlKXx8ImFueXdoZXJlIj09PW8uY2xvc2VPbkNsaWNrfHxuLmNsb3Nlc3QocikubGVuZ3RoKSYmKG8uY2xvc2UodCksdC5wcmV2ZW50RGVmYXVsdCgpKX19KSx0aGlzfSxnZXRDb250ZW50OmZ1bmN0aW9uKCl7aWYodGhpcy5wZXJzaXN0IT09ITEmJnRoaXMuJGNvbnRlbnQpcmV0dXJuIHRoaXMuJGNvbnRlbnQ7dmFyIHQ9dGhpcyxuPXRoaXMuY29uc3RydWN0b3IuY29udGVudEZpbHRlcnMsbz1mdW5jdGlvbihlKXtyZXR1cm4gdC4kY3VycmVudFRhcmdldCYmdC4kY3VycmVudFRhcmdldC5hdHRyKGUpfSxpPW8odC50YXJnZXRBdHRyKSxhPXQudGFyZ2V0fHxpfHwiIixyPW5bdC50eXBlXTtpZighciYmYSBpbiBuJiYocj1uW2FdLGE9dC50YXJnZXQmJmkpLGE9YXx8bygiaHJlZiIpfHwiIiwhcilmb3IodmFyIHMgaW4gbil0W3NdJiYocj1uW3NdLGE9dFtzXSk7aWYoIXIpe3ZhciBjPWE7aWYoYT1udWxsLGUuZWFjaCh0LmNvbnRlbnRGaWx0ZXJzLGZ1bmN0aW9uKCl7cmV0dXJuIHI9blt0aGlzXSxyLnRlc3QmJihhPXIudGVzdChjKSksIWEmJnIucmVnZXgmJmMubWF0Y2gmJmMubWF0Y2goci5yZWdleCkmJihhPWMpLCFhfSksIWEpcmV0dXJuImNvbnNvbGUiaW4gd2luZG93JiZ3aW5kb3cuY29uc29sZS5lcnJvcigiRmVhdGhlcmxpZ2h0OiBubyBjb250ZW50IGZpbHRlciBmb3VuZCAiKyhjPycgZm9yICInK2MrJyInOiIgKG5vIHRhcmdldCBzcGVjaWZpZWQpIikpLCExfXJldHVybiByLnByb2Nlc3MuY2FsbCh0LGEpfSxzZXRDb250ZW50OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLiRpbnN0YW5jZS5yZW1vdmVDbGFzcyh0aGlzLm5hbWVzcGFjZSsiLWxvYWRpbmciKSx0aGlzLiRpbnN0YW5jZS50b2dnbGVDbGFzcyh0aGlzLm5hbWVzcGFjZSsiLWlmcmFtZSIsdC5pcygiaWZyYW1lIikpLHRoaXMuJGluc3RhbmNlLmZpbmQoIi4iK3RoaXMubmFtZXNwYWNlKyItaW5uZXIiKS5ub3QodCkuc2xpY2UoMSkucmVtb3ZlKCkuZW5kKCkucmVwbGFjZVdpdGgoZS5jb250YWlucyh0aGlzLiRpbnN0YW5jZVswXSx0WzBdKT8iIjp0KSx0aGlzLiRjb250ZW50PXQuYWRkQ2xhc3ModGhpcy5uYW1lc3BhY2UrIi1pbm5lciIpLHRoaXN9LG9wZW46ZnVuY3Rpb24odCl7dmFyIG49dGhpcztpZihuLiRpbnN0YW5jZS5oaWRlKCkuYXBwZW5kVG8obi5yb290KSwhKHQmJnQuaXNEZWZhdWx0UHJldmVudGVkKCl8fG4uYmVmb3JlT3Blbih0KT09PSExKSl7dCYmdC5wcmV2ZW50RGVmYXVsdCgpO3ZhciBvPW4uZ2V0Q29udGVudCgpO2lmKG8pcmV0dXJuIGkucHVzaChuKSxsKCEwKSxuLiRpbnN0YW5jZS5mYWRlSW4obi5vcGVuU3BlZWQpLG4uYmVmb3JlQ29udGVudCh0KSxlLndoZW4obykuYWx3YXlzKGZ1bmN0aW9uKGUpe24uc2V0Q29udGVudChlKSxuLmFmdGVyQ29udGVudCh0KX0pLnRoZW4obi4kaW5zdGFuY2UucHJvbWlzZSgpKS5kb25lKGZ1bmN0aW9uKCl7bi5hZnRlck9wZW4odCl9KX1yZXR1cm4gbi4kaW5zdGFuY2UuZGV0YWNoKCksZS5EZWZlcnJlZCgpLnJlamVjdCgpLnByb21pc2UoKX0sY2xvc2U6ZnVuY3Rpb24odCl7dmFyIG49dGhpcyxvPWUuRGVmZXJyZWQoKTtyZXR1cm4gbi5iZWZvcmVDbG9zZSh0KT09PSExP28ucmVqZWN0KCk6KDA9PT1hKG4pLmxlbmd0aCYmbCghMSksbi4kaW5zdGFuY2UuZmFkZU91dChuLmNsb3NlU3BlZWQsZnVuY3Rpb24oKXtuLiRpbnN0YW5jZS5kZXRhY2goKSxuLmFmdGVyQ2xvc2UodCksby5yZXNvbHZlKCl9KSksby5wcm9taXNlKCl9LHJlc2l6ZTpmdW5jdGlvbihlLHQpe2lmKGUmJnQpe3RoaXMuJGNvbnRlbnQuY3NzKCJ3aWR0aCIsIiIpLmNzcygiaGVpZ2h0IiwiIik7dmFyIG49TWF0aC5tYXgoZS8odGhpcy4kY29udGVudC5wYXJlbnQoKS53aWR0aCgpLTEpLHQvKHRoaXMuJGNvbnRlbnQucGFyZW50KCkuaGVpZ2h0KCktMSkpO24+MSYmKG49dC9NYXRoLmZsb29yKHQvbiksdGhpcy4kY29udGVudC5jc3MoIndpZHRoIiwiIitlL24rInB4IikuY3NzKCJoZWlnaHQiLCIiK3QvbisicHgiKSl9fSxjaGFpbkNhbGxiYWNrczpmdW5jdGlvbih0KXtmb3IodmFyIG4gaW4gdCl0aGlzW25dPWUucHJveHkodFtuXSx0aGlzLGUucHJveHkodGhpc1tuXSx0aGlzKSl9fSxlLmV4dGVuZCh0LHtpZDowLGF1dG9CaW5kOiJbZGF0YS1mZWF0aGVybGlnaHRdIixkZWZhdWx0czp0LnByb3RvdHlwZSxjb250ZW50RmlsdGVyczp7anF1ZXJ5OntyZWdleDovXlsjLl1cdy8sdGVzdDpmdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIGUmJnR9LHByb2Nlc3M6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucGVyc2lzdCE9PSExP2UodCk6ZSh0KS5jbG9uZSghMCl9fSxpbWFnZTp7cmVnZXg6L1wuKHBuZ3xqcGd8anBlZ3xnaWZ8dGlmZj98Ym1wfHN2ZykoXD9cUyopPyQvaSxwcm9jZXNzOmZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMsbz1lLkRlZmVycmVkKCksaT1uZXcgSW1hZ2UsYT1lKCc8aW1nIHNyYz0iJyt0KyciIGFsdD0iIiBjbGFzcz0iJytuLm5hbWVzcGFjZSsnLWltYWdlIiAvPicpO3JldHVybiBpLm9ubG9hZD1mdW5jdGlvbigpe2EubmF0dXJhbFdpZHRoPWkud2lkdGgsYS5uYXR1cmFsSGVpZ2h0PWkuaGVpZ2h0LG8ucmVzb2x2ZShhKX0saS5vbmVycm9yPWZ1bmN0aW9uKCl7by5yZWplY3QoYSl9LGkuc3JjPXQsby5wcm9taXNlKCl9fSxodG1sOntyZWdleDovXlxzKjxbXHchXVtePF0qPi8scHJvY2VzczpmdW5jdGlvbih0KXtyZXR1cm4gZSh0KX19LGFqYXg6e3JlZ2V4Oi8uLyxwcm9jZXNzOmZ1bmN0aW9uKHQpe3ZhciBuPWUuRGVmZXJyZWQoKSxvPWUoIjxkaXY+PC9kaXY+IikubG9hZCh0LGZ1bmN0aW9uKGUsdCl7ImVycm9yIiE9PXQmJm4ucmVzb2x2ZShvLmNvbnRlbnRzKCkpLG4uZmFpbCgpfSk7cmV0dXJuIG4ucHJvbWlzZSgpfX0saWZyYW1lOntwcm9jZXNzOmZ1bmN0aW9uKHQpe3ZhciBpPW5ldyBlLkRlZmVycmVkLGE9ZSgiPGlmcmFtZS8+Iikscz1vKHRoaXMsImlmcmFtZSIpLGM9bihzLHIpO3JldHVybiBhLmhpZGUoKS5hdHRyKCJzcmMiLHQpLmF0dHIoYykuY3NzKHMpLm9uKCJsb2FkIixmdW5jdGlvbigpe2kucmVzb2x2ZShhLnNob3coKSl9KS5hcHBlbmRUbyh0aGlzLiRpbnN0YW5jZS5maW5kKCIuIit0aGlzLm5hbWVzcGFjZSsiLWNvbnRlbnQiKSksaS5wcm9taXNlKCl9fSx0ZXh0Ontwcm9jZXNzOmZ1bmN0aW9uKHQpe3JldHVybiBlKCI8ZGl2PiIse3RleHQ6dH0pfX19LGZ1bmN0aW9uQXR0cmlidXRlczpbImJlZm9yZU9wZW4iLCJhZnRlck9wZW4iLCJiZWZvcmVDb250ZW50IiwiYWZ0ZXJDb250ZW50IiwiYmVmb3JlQ2xvc2UiLCJhZnRlckNsb3NlIl0scmVhZEVsZW1lbnRDb25maWc6ZnVuY3Rpb24odCxuKXt2YXIgbz10aGlzLGk9bmV3IFJlZ0V4cCgiXmRhdGEtIituKyItKC4qKSIpLGE9e307cmV0dXJuIHQmJnQuYXR0cmlidXRlcyYmZS5lYWNoKHQuYXR0cmlidXRlcyxmdW5jdGlvbigpe3ZhciB0PXRoaXMubmFtZS5tYXRjaChpKTtpZih0KXt2YXIgbj10aGlzLnZhbHVlLHI9ZS5jYW1lbENhc2UodFsxXSk7aWYoZS5pbkFycmF5KHIsby5mdW5jdGlvbkF0dHJpYnV0ZXMpPj0wKW49bmV3IEZ1bmN0aW9uKG4pO2Vsc2UgdHJ5e249SlNPTi5wYXJzZShuKX1jYXRjaChzKXt9YVtyXT1ufX0pLGF9LGV4dGVuZDpmdW5jdGlvbih0LG4pe3ZhciBvPWZ1bmN0aW9uKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fTtyZXR1cm4gby5wcm90b3R5cGU9dGhpcy5wcm90b3R5cGUsdC5wcm90b3R5cGU9bmV3IG8sdC5fX3N1cGVyX189dGhpcy5wcm90b3R5cGUsZS5leHRlbmQodCx0aGlzLG4pLHQuZGVmYXVsdHM9dC5wcm90b3R5cGUsdH0sYXR0YWNoOmZ1bmN0aW9uKHQsbixvKXt2YXIgaT10aGlzOyJvYmplY3QiIT10eXBlb2Ygbnx8biBpbnN0YW5jZW9mIGUhPSExfHxvfHwobz1uLG49dm9pZCAwKSxvPWUuZXh0ZW5kKHt9LG8pO3ZhciBhLHI9by5uYW1lc3BhY2V8fGkuZGVmYXVsdHMubmFtZXNwYWNlLHM9ZS5leHRlbmQoe30saS5kZWZhdWx0cyxpLnJlYWRFbGVtZW50Q29uZmlnKHRbMF0sciksbyksYz1mdW5jdGlvbihyKXt2YXIgYz1lKHIuY3VycmVudFRhcmdldCksbD1lLmV4dGVuZCh7JHNvdXJjZTp0LCRjdXJyZW50VGFyZ2V0OmN9LGkucmVhZEVsZW1lbnRDb25maWcodFswXSxzLm5hbWVzcGFjZSksaS5yZWFkRWxlbWVudENvbmZpZyhyLmN1cnJlbnRUYXJnZXQscy5uYW1lc3BhY2UpLG8pLHU9YXx8Yy5kYXRhKCJmZWF0aGVybGlnaHQtcGVyc2lzdGVkIil8fG5ldyBpKG4sbCk7CiJzaGFyZWQiPT09dS5wZXJzaXN0P2E9dTp1LnBlcnNpc3QhPT0hMSYmYy5kYXRhKCJmZWF0aGVybGlnaHQtcGVyc2lzdGVkIix1KSxsLiRjdXJyZW50VGFyZ2V0LmJsdXImJmwuJGN1cnJlbnRUYXJnZXQuYmx1cigpLHUub3BlbihyKX07cmV0dXJuIHQub24ocy5vcGVuVHJpZ2dlcisiLiIrcy5uYW1lc3BhY2Uscy5maWx0ZXIsYykse2ZpbHRlcjpzLmZpbHRlcixoYW5kbGVyOmN9fSxjdXJyZW50OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcGVuZWQoKTtyZXR1cm4gZVtlLmxlbmd0aC0xXXx8bnVsbH0sb3BlbmVkOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gYSgpLGUuZ3JlcChpLGZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2YgdH0pfSxjbG9zZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmN1cnJlbnQoKTtpZih0KXJldHVybiB0LmNsb3NlKGUpfSxfb25SZWFkeTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7aWYodC5hdXRvQmluZCl7dmFyIG49ZSh0LmF1dG9CaW5kKTtuLmVhY2goZnVuY3Rpb24oKXt0LmF0dGFjaChlKHRoaXMpKX0pLGUoZG9jdW1lbnQpLm9uKCJjbGljayIsdC5hdXRvQmluZCxmdW5jdGlvbihvKXtpZighby5pc0RlZmF1bHRQcmV2ZW50ZWQoKSl7dmFyIGk9ZShvLmN1cnJlbnRUYXJnZXQpLGE9bi5sZW5ndGg7aWYobj1uLmFkZChpKSxhIT09bi5sZW5ndGgpe3ZhciByPXQuYXR0YWNoKGkpOyghci5maWx0ZXJ8fGUoby50YXJnZXQpLnBhcmVudHNVbnRpbChpLHIuZmlsdGVyKS5sZW5ndGg+MCkmJnIuaGFuZGxlcihvKX19fSl9fSxfY2FsbGJhY2tDaGFpbjp7b25LZXlVcDpmdW5jdGlvbih0LG4pe3JldHVybiAyNz09PW4ua2V5Q29kZT8odGhpcy5jbG9zZU9uRXNjJiZlLmZlYXRoZXJsaWdodC5jbG9zZShuKSwhMSk6dChuKX0sYmVmb3JlT3BlbjpmdW5jdGlvbih0LG4pe3JldHVybiBlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkuYWRkQ2xhc3MoIndpdGgtZmVhdGhlcmxpZ2h0IiksdGhpcy5fcHJldmlvdXNseUFjdGl2ZT1kb2N1bWVudC5hY3RpdmVFbGVtZW50LHRoaXMuXyRwcmV2aW91c2x5VGFiYmFibGU9ZSgiYSwgaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIGlmcmFtZSwgYnV0dG9uLCBpZnJhbWUsIFtjb250ZW50RWRpdGFibGU9dHJ1ZV0iKS5ub3QoIlt0YWJpbmRleF0iKS5ub3QodGhpcy4kaW5zdGFuY2UuZmluZCgiYnV0dG9uIikpLHRoaXMuXyRwcmV2aW91c2x5V2l0aFRhYkluZGV4PWUoIlt0YWJpbmRleF0iKS5ub3QoJ1t0YWJpbmRleD0iLTEiXScpLHRoaXMuX3ByZXZpb3VzV2l0aFRhYkluZGljZXM9dGhpcy5fJHByZXZpb3VzbHlXaXRoVGFiSW5kZXgubWFwKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUobikuYXR0cigidGFiaW5kZXgiKX0pLHRoaXMuXyRwcmV2aW91c2x5V2l0aFRhYkluZGV4LmFkZCh0aGlzLl8kcHJldmlvdXNseVRhYmJhYmxlKS5hdHRyKCJ0YWJpbmRleCIsLTEpLGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuYmx1ciYmZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5ibHVyKCksdChuKX0sYWZ0ZXJDbG9zZTpmdW5jdGlvbihuLG8pe3ZhciBpPW4obyksYT10aGlzO3JldHVybiB0aGlzLl8kcHJldmlvdXNseVRhYmJhYmxlLnJlbW92ZUF0dHIoInRhYmluZGV4IiksdGhpcy5fJHByZXZpb3VzbHlXaXRoVGFiSW5kZXguZWFjaChmdW5jdGlvbih0LG4pe2UobikuYXR0cigidGFiaW5kZXgiLGEuX3ByZXZpb3VzV2l0aFRhYkluZGljZXNbdF0pfSksdGhpcy5fcHJldmlvdXNseUFjdGl2ZS5mb2N1cygpLDA9PT10Lm9wZW5lZCgpLmxlbmd0aCYmZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLnJlbW92ZUNsYXNzKCJ3aXRoLWZlYXRoZXJsaWdodCIpLGl9LG9uUmVzaXplOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMucmVzaXplKHRoaXMuJGNvbnRlbnQubmF0dXJhbFdpZHRoLHRoaXMuJGNvbnRlbnQubmF0dXJhbEhlaWdodCksZSh0KX0sYWZ0ZXJDb250ZW50OmZ1bmN0aW9uKGUsdCl7dmFyIG49ZSh0KTtyZXR1cm4gdGhpcy4kaW5zdGFuY2UuZmluZCgiW2F1dG9mb2N1c106bm90KFtkaXNhYmxlZF0pIikuZm9jdXMoKSx0aGlzLm9uUmVzaXplKHQpLG59fX0pLGUuZmVhdGhlcmxpZ2h0PXQsZS5mbi5mZWF0aGVybGlnaHQ9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gdC5hdHRhY2godGhpcyxlLG4pLHRoaXN9LGUoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7dC5fb25SZWFkeSgpfSl9KGpRdWVyeSksZnVuY3Rpb24oZSl7ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyJqcXVlcnkiXSxlKTplKCJvYmplY3QiPT10eXBlb2YgZXhwb3J0cz9yZXF1aXJlKCJqcXVlcnkiKTpqUXVlcnkpfShmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdChlKXtmb3IodmFyIHQsbj1lLnNwbGl0KC9ccysvKSxvPVtdLGk9MDt0PW5baV07aSsrKXQ9dC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSxvLnB1c2godCk7cmV0dXJuIG99ZnVuY3Rpb24gbih0KXtyZXR1cm4gdC5pZCYmZSgnbGFiZWxbZm9yPSInK3QuaWQrJyJdJykudmFsKCl8fHQubmFtZX1mdW5jdGlvbiBvKHQsaSxhKXtyZXR1cm4gYXx8KGE9MCksaS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGkscixzPWUodGhpcyksYz10aGlzLGw9dGhpcy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3N3aXRjaCgibGFiZWwiPT09bCYmcy5maW5kKCJpbnB1dCwgdGV4dGFyZWEsIHNlbGVjdCIpLmxlbmd0aCYmKGk9cy50ZXh0KCkscz1zLmNoaWxkcmVuKCkuZmlyc3QoKSxjPXMuZ2V0KDApLGw9Yy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKSxsKXtjYXNlIm1lbnUiOnI9e25hbWU6cy5hdHRyKCJsYWJlbCIpLGl0ZW1zOnt9fSxhPW8oci5pdGVtcyxzLmNoaWxkcmVuKCksYSk7YnJlYWs7Y2FzZSJhIjpjYXNlImJ1dHRvbiI6cj17bmFtZTpzLnRleHQoKSxkaXNhYmxlZDohIXMuYXR0cigiZGlzYWJsZWQiKSxjYWxsYmFjazpmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe3MuY2xpY2soKX19KCl9O2JyZWFrO2Nhc2UibWVudWl0ZW0iOmNhc2UiY29tbWFuZCI6c3dpdGNoKHMuYXR0cigidHlwZSIpKXtjYXNlIHZvaWQgMDpjYXNlImNvbW1hbmQiOmNhc2UibWVudWl0ZW0iOnI9e25hbWU6cy5hdHRyKCJsYWJlbCIpLGRpc2FibGVkOiEhcy5hdHRyKCJkaXNhYmxlZCIpLGljb246cy5hdHRyKCJpY29uIiksY2FsbGJhY2s6ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXtzLmNsaWNrKCl9fSgpfTticmVhaztjYXNlImNoZWNrYm94IjpyPXt0eXBlOiJjaGVja2JveCIsZGlzYWJsZWQ6ISFzLmF0dHIoImRpc2FibGVkIiksbmFtZTpzLmF0dHIoImxhYmVsIiksc2VsZWN0ZWQ6ISFzLmF0dHIoImNoZWNrZWQiKX07YnJlYWs7Y2FzZSJyYWRpbyI6cj17dHlwZToicmFkaW8iLGRpc2FibGVkOiEhcy5hdHRyKCJkaXNhYmxlZCIpLG5hbWU6cy5hdHRyKCJsYWJlbCIpLHJhZGlvOnMuYXR0cigicmFkaW9ncm91cCIpLHZhbHVlOnMuYXR0cigiaWQiKSxzZWxlY3RlZDohIXMuYXR0cigiY2hlY2tlZCIpfTticmVhaztkZWZhdWx0OnI9dm9pZCAwfWJyZWFrO2Nhc2UiaHIiOnI9Ii0tLS0tLS0iO2JyZWFrO2Nhc2UiaW5wdXQiOnN3aXRjaChzLmF0dHIoInR5cGUiKSl7Y2FzZSJ0ZXh0IjpyPXt0eXBlOiJ0ZXh0IixuYW1lOml8fG4oYyksZGlzYWJsZWQ6ISFzLmF0dHIoImRpc2FibGVkIiksdmFsdWU6cy52YWwoKX07YnJlYWs7Y2FzZSJjaGVja2JveCI6cj17dHlwZToiY2hlY2tib3giLG5hbWU6aXx8bihjKSxkaXNhYmxlZDohIXMuYXR0cigiZGlzYWJsZWQiKSxzZWxlY3RlZDohIXMuYXR0cigiY2hlY2tlZCIpfTticmVhaztjYXNlInJhZGlvIjpyPXt0eXBlOiJyYWRpbyIsbmFtZTppfHxuKGMpLGRpc2FibGVkOiEhcy5hdHRyKCJkaXNhYmxlZCIpLHJhZGlvOiEhcy5hdHRyKCJuYW1lIiksdmFsdWU6cy52YWwoKSxzZWxlY3RlZDohIXMuYXR0cigiY2hlY2tlZCIpfTticmVhaztkZWZhdWx0OnI9dm9pZCAwfWJyZWFrO2Nhc2Uic2VsZWN0IjpyPXt0eXBlOiJzZWxlY3QiLG5hbWU6aXx8bihjKSxkaXNhYmxlZDohIXMuYXR0cigiZGlzYWJsZWQiKSxzZWxlY3RlZDpzLnZhbCgpLG9wdGlvbnM6e319LHMuY2hpbGRyZW4oKS5lYWNoKGZ1bmN0aW9uKCl7ci5vcHRpb25zW3RoaXMudmFsdWVdPWUodGhpcykudGV4dCgpfSk7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6cj17dHlwZToidGV4dGFyZWEiLG5hbWU6aXx8bihjKSxkaXNhYmxlZDohIXMuYXR0cigiZGlzYWJsZWQiKSx2YWx1ZTpzLnZhbCgpfTticmVhaztjYXNlImxhYmVsIjpicmVhaztkZWZhdWx0OnI9e3R5cGU6Imh0bWwiLGh0bWw6cy5jbG9uZSghMCl9fXImJihhKyssdFsia2V5IithXT1yKX0pLGF9ZS5zdXBwb3J0Lmh0bWxNZW51aXRlbT0iSFRNTE1lbnVJdGVtRWxlbWVudCJpbiB3aW5kb3csZS5zdXBwb3J0Lmh0bWxDb21tYW5kPSJIVE1MQ29tbWFuZEVsZW1lbnQiaW4gd2luZG93LGUuc3VwcG9ydC5ldmVudFNlbGVjdHN0YXJ0PSJvbnNlbGVjdHN0YXJ0ImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxlLnVpJiZlLndpZGdldHx8KGUuY2xlYW5EYXRhPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihuKXt2YXIgbyxpLGE7Zm9yKGE9MDtudWxsIT0oaT1uW2FdKTthKyspdHJ5e289ZS5fZGF0YShpLCJldmVudHMiKSxvJiZvLnJlbW92ZSYmZShpKS50cmlnZ2VySGFuZGxlcigicmVtb3ZlIil9Y2F0Y2gocil7fXQobil9fShlLmNsZWFuRGF0YSkpO3ZhciBpPW51bGwsYT0hMSxyPWUod2luZG93KSxzPTAsYz17fSxsPXt9LHU9e30sZD17c2VsZWN0b3I6bnVsbCxhcHBlbmRUbzpudWxsLHRyaWdnZXI6InJpZ2h0IixhdXRvSGlkZTohMSxkZWxheToyMDAscmVwb3NpdGlvbjohMCxjbGFzc05hbWVzOntob3ZlcjoiaG92ZXIiLGRpc2FibGVkOiJkaXNhYmxlZCIsdmlzaWJsZToidmlzaWJsZSIsbm90U2VsZWN0YWJsZToibm90LXNlbGVjdGFibGUiLGljb246Imljb24iLGljb25FZGl0OiJpY29uLWVkaXQiLGljb25DdXQ6Imljb24tY3V0IixpY29uQ29weToiaWNvbi1jb3B5IixpY29uUGFzdGU6Imljb24tcGFzdGUiLGljb25EZWxldGU6Imljb24tZGVsZXRlIixpY29uQWRkOiJpY29uLWFkZCIsaWNvblF1aXQ6Imljb24tcXVpdCJ9LGRldGVybWluZVBvc2l0aW9uOmZ1bmN0aW9uKHQpe2lmKGUudWkmJmUudWkucG9zaXRpb24pdC5jc3MoImRpc3BsYXkiLCJibG9jayIpLnBvc2l0aW9uKHtteToiY2VudGVyIHRvcCIsYXQ6ImNlbnRlciBib3R0b20iLG9mOnRoaXMsb2Zmc2V0OiIwIDUiLGNvbGxpc2lvbjoiZml0In0pLmNzcygiZGlzcGxheSIsIm5vbmUiKTtlbHNle3ZhciBuPXRoaXMub2Zmc2V0KCk7bi50b3ArPXRoaXMub3V0ZXJIZWlnaHQoKSxuLmxlZnQrPXRoaXMub3V0ZXJXaWR0aCgpLzItdC5vdXRlcldpZHRoKCkvMix0LmNzcyhuKX19LHBvc2l0aW9uOmZ1bmN0aW9uKGUsdCxuKXt2YXIgbztpZighdCYmIW4pcmV0dXJuIHZvaWQgZS5kZXRlcm1pbmVQb3NpdGlvbi5jYWxsKHRoaXMsZS4kbWVudSk7bz0ibWFpbnRhaW4iPT09dCYmIm1haW50YWluIj09PW4/ZS4kbWVudS5wb3NpdGlvbigpOnt0b3A6bixsZWZ0OnR9O3ZhciBpPXIuc2Nyb2xsVG9wKCkrci5oZWlnaHQoKSxhPXIuc2Nyb2xsTGVmdCgpK3Iud2lkdGgoKSxzPWUuJG1lbnUub3V0ZXJIZWlnaHQoKSxjPWUuJG1lbnUub3V0ZXJXaWR0aCgpO28udG9wK3M+aSYmKG8udG9wLT1zKSxvLnRvcDwwJiYoby50b3A9MCksby5sZWZ0K2M+YSYmKG8ubGVmdC09Yyksby5sZWZ0PDAmJihvLmxlZnQ9MCksZS4kbWVudS5jc3Mobyl9LHBvc2l0aW9uU3VibWVudTpmdW5jdGlvbih0KXtpZihlLnVpJiZlLnVpLnBvc2l0aW9uKXQuY3NzKCJkaXNwbGF5IiwiYmxvY2siKS5wb3NpdGlvbih7bXk6ImxlZnQgdG9wIixhdDoicmlnaHQgdG9wIixvZjp0aGlzLGNvbGxpc2lvbjoiZmxpcGZpdCBmaXQifSkuY3NzKCJkaXNwbGF5IiwiIik7ZWxzZXt2YXIgbj17dG9wOjAsbGVmdDp0aGlzLm91dGVyV2lkdGgoKX07dC5jc3Mobil9fSx6SW5kZXg6MSxhbmltYXRpb246e2R1cmF0aW9uOjUwLHNob3c6InNsaWRlRG93biIsaGlkZToic2xpZGVVcCJ9LGV2ZW50czp7c2hvdzplLm5vb3AsaGlkZTplLm5vb3B9LGNhbGxiYWNrOm51bGwsaXRlbXM6e319LGY9e3RpbWVyOm51bGwscGFnZVg6bnVsbCxwYWdlWTpudWxsfSxoPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wLG49ZTs7KWlmKHQ9TWF0aC5tYXgodCxwYXJzZUludChuLmNzcygiei1pbmRleCIpLDEwKXx8MCksbj1uLnBhcmVudCgpLCFufHwhbi5sZW5ndGh8fCJodG1sIGJvZHkiLmluZGV4T2Yobi5wcm9wKCJub2RlTmFtZSIpLnRvTG93ZXJDYXNlKCkpPi0xKWJyZWFrO3JldHVybiB0fSxwPXthYm9ydGV2ZW50OmZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKSxlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfSxjb250ZXh0bWVudTpmdW5jdGlvbih0KXt2YXIgbj1lKHRoaXMpO2lmKCJyaWdodCI9PT10LmRhdGEudHJpZ2dlciYmKHQucHJldmVudERlZmF1bHQoKSx0LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpKSwhKCJyaWdodCIhPT10LmRhdGEudHJpZ2dlciYmImRlbWFuZCIhPT10LmRhdGEudHJpZ2dlciYmdC5vcmlnaW5hbEV2ZW50fHwhKHZvaWQgMD09PXQubW91c2VCdXR0b258fCF0LmRhdGF8fCJsZWZ0Ij09dC5kYXRhLnRyaWdnZXImJjA9PT10Lm1vdXNlQnV0dG9ufHwicmlnaHQiPT10LmRhdGEudHJpZ2dlciYmMj09PXQubW91c2VCdXR0b24pfHxuLmhhc0NsYXNzKCJjb250ZXh0LW1lbnUtYWN0aXZlIil8fG4uaGFzQ2xhc3MoImNvbnRleHQtbWVudS1kaXNhYmxlZCIpKSl7aWYoaT1uLHQuZGF0YS5idWlsZCl7dmFyIG89dC5kYXRhLmJ1aWxkKGksdCk7aWYobz09PSExKXJldHVybjtpZih0LmRhdGE9ZS5leHRlbmQoITAse30sZCx0LmRhdGEsb3x8e30pLCF0LmRhdGEuaXRlbXN8fGUuaXNFbXB0eU9iamVjdCh0LmRhdGEuaXRlbXMpKXRocm93IHdpbmRvdy5jb25zb2xlJiYoY29uc29sZS5lcnJvcnx8Y29uc29sZS5sb2cpLmNhbGwoY29uc29sZSwiTm8gaXRlbXMgc3BlY2lmaWVkIHRvIHNob3cgaW4gY29udGV4dE1lbnUiKSxuZXcgRXJyb3IoIk5vIEl0ZW1zIHNwZWNpZmllZCIpO3QuZGF0YS4kdHJpZ2dlcj1pLG0uY3JlYXRlKHQuZGF0YSl9dmFyIGE9ITE7Zm9yKHZhciByIGluIHQuZGF0YS5pdGVtcylpZih0LmRhdGEuaXRlbXMuaGFzT3duUHJvcGVydHkocikpe3ZhciBzO3M9ZS5pc0Z1bmN0aW9uKHQuZGF0YS5pdGVtc1tyXS52aXNpYmxlKT90LmRhdGEuaXRlbXNbcl0udmlzaWJsZS5jYWxsKGUodC5jdXJyZW50VGFyZ2V0KSxyLHQuZGF0YSk6InVuZGVmaW5lZCI9PXR5cGVvZiByLnZpc2libGV8fHQuZGF0YS5pdGVtc1tyXS52aXNpYmxlPT09ITAscyYmKGE9ITApfWEmJm0uc2hvdy5jYWxsKG4sdC5kYXRhLHQucGFnZVgsdC5wYWdlWSl9fSxjbGljazpmdW5jdGlvbih0KXt0LnByZXZlbnREZWZhdWx0KCksdC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSxlKHRoaXMpLnRyaWdnZXIoZS5FdmVudCgiY29udGV4dG1lbnUiLHtkYXRhOnQuZGF0YSxwYWdlWDp0LnBhZ2VYLHBhZ2VZOnQucGFnZVl9KSl9LG1vdXNlZG93bjpmdW5jdGlvbih0KXt2YXIgbj1lKHRoaXMpO2kmJmkubGVuZ3RoJiYhaS5pcyhuKSYmaS5kYXRhKCJjb250ZXh0TWVudSIpLiRtZW51LnRyaWdnZXIoImNvbnRleHRtZW51OmhpZGUiKSwyPT09dC5idXR0b24mJihpPW4uZGF0YSgiY29udGV4dE1lbnVBY3RpdmUiLCEwKSl9LG1vdXNldXA6ZnVuY3Rpb24odCl7dmFyIG49ZSh0aGlzKTtuLmRhdGEoImNvbnRleHRNZW51QWN0aXZlIikmJmkmJmkubGVuZ3RoJiZpLmlzKG4pJiYhbi5oYXNDbGFzcygiY29udGV4dC1tZW51LWRpc2FibGVkIikmJih0LnByZXZlbnREZWZhdWx0KCksdC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSxpPW4sbi50cmlnZ2VyKGUuRXZlbnQoImNvbnRleHRtZW51Iix7ZGF0YTp0LmRhdGEscGFnZVg6dC5wYWdlWCxwYWdlWTp0LnBhZ2VZfSkpKSxuLnJlbW92ZURhdGEoImNvbnRleHRNZW51QWN0aXZlIil9LG1vdXNlZW50ZXI6ZnVuY3Rpb24odCl7dmFyIG49ZSh0aGlzKSxvPWUodC5yZWxhdGVkVGFyZ2V0KSxhPWUoZG9jdW1lbnQpO28uaXMoIi5jb250ZXh0LW1lbnUtbGlzdCIpfHxvLmNsb3Nlc3QoIi5jb250ZXh0LW1lbnUtbGlzdCIpLmxlbmd0aHx8aSYmaS5sZW5ndGh8fChmLnBhZ2VYPXQucGFnZVgsZi5wYWdlWT10LnBhZ2VZLGYuZGF0YT10LmRhdGEsYS5vbigibW91c2Vtb3ZlLmNvbnRleHRNZW51U2hvdyIscC5tb3VzZW1vdmUpLGYudGltZXI9c2V0VGltZW91dChmdW5jdGlvbigpe2YudGltZXI9bnVsbCxhLm9mZigibW91c2Vtb3ZlLmNvbnRleHRNZW51U2hvdyIpLGk9bixuLnRyaWdnZXIoZS5FdmVudCgiY29udGV4dG1lbnUiLHtkYXRhOmYuZGF0YSxwYWdlWDpmLnBhZ2VYLHBhZ2VZOmYucGFnZVl9KSl9LHQuZGF0YS5kZWxheSkpfSxtb3VzZW1vdmU6ZnVuY3Rpb24oZSl7Zi5wYWdlWD1lLnBhZ2VYLGYucGFnZVk9ZS5wYWdlWX0sbW91c2VsZWF2ZTpmdW5jdGlvbih0KXt2YXIgbj1lKHQucmVsYXRlZFRhcmdldCk7aWYoIW4uaXMoIi5jb250ZXh0LW1lbnUtbGlzdCIpJiYhbi5jbG9zZXN0KCIuY29udGV4dC1tZW51LWxpc3QiKS5sZW5ndGgpe3RyeXtjbGVhclRpbWVvdXQoZi50aW1lcil9Y2F0Y2godCl7fWYudGltZXI9bnVsbH19LGxheWVyQ2xpY2s6ZnVuY3Rpb24odCl7dmFyIG4sbyxpPWUodGhpcyksYT1pLmRhdGEoImNvbnRleHRNZW51Um9vdCIpLHM9dC5idXR0b24sYz10LnBhZ2VYLGw9dC5wYWdlWTt0LnByZXZlbnREZWZhdWx0KCksdC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIGksdT0ibGVmdCI9PT1hLnRyaWdnZXImJjA9PT1zfHwicmlnaHQiPT09YS50cmlnZ2VyJiYyPT09cztpZihkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50JiZhLiRsYXllciYmKGEuJGxheWVyLmhpZGUoKSxuPWRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoYy1yLnNjcm9sbExlZnQoKSxsLXIuc2Nyb2xsVG9wKCkpLGEuJGxheWVyLnNob3coKSksYS5yZXBvc2l0aW9uJiZ1KWlmKGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQpe2lmKGEuJHRyaWdnZXIuaXMobil8fGEuJHRyaWdnZXIuaGFzKG4pLmxlbmd0aClyZXR1cm4gdm9pZCBhLnBvc2l0aW9uLmNhbGwoYS4kdHJpZ2dlcixhLGMsbCl9ZWxzZSBpZihvPWEuJHRyaWdnZXIub2Zmc2V0KCksaT1lKHdpbmRvdyksby50b3ArPWkuc2Nyb2xsVG9wKCksby50b3A8PXQucGFnZVkmJihvLmxlZnQrPWkuc2Nyb2xsTGVmdCgpLG8ubGVmdDw9dC5wYWdlWCYmKG8uYm90dG9tPW8udG9wK2EuJHRyaWdnZXIub3V0ZXJIZWlnaHQoKSxvLmJvdHRvbT49dC5wYWdlWSYmKG8ucmlnaHQ9by5sZWZ0K2EuJHRyaWdnZXIub3V0ZXJXaWR0aCgpLG8ucmlnaHQ+PXQucGFnZVgpKSkpcmV0dXJuIHZvaWQgYS5wb3NpdGlvbi5jYWxsKGEuJHRyaWdnZXIsYSxjLGwpO24mJnUmJmEuJHRyaWdnZXIub25lKCJjb250ZXh0bWVudTpoaWRkZW4iLGZ1bmN0aW9uKCl7ZShuKS5jb250ZXh0TWVudSh7eDpjLHk6bCxidXR0b246c30pfSksYS4kbWVudS50cmlnZ2VyKCJjb250ZXh0bWVudTpoaWRlIil9LDUwKX0sa2V5U3RvcDpmdW5jdGlvbihlLHQpe3QuaXNJbnB1dHx8ZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCl9LGtleTpmdW5jdGlvbihlKXt2YXIgdD17fTtzd2l0Y2goaSYmKHQ9aS5kYXRhKCJjb250ZXh0TWVudSIpfHx7fSksZS5rZXlDb2RlKXtjYXNlIDk6Y2FzZSAzODppZihwLmtleVN0b3AoZSx0KSx0LmlzSW5wdXQpe2lmKDk9PT1lLmtleUNvZGUmJmUuc2hpZnRLZXkpcmV0dXJuIGUucHJldmVudERlZmF1bHQoKSx0LiRzZWxlY3RlZCYmdC4kc2VsZWN0ZWQuZmluZCgiaW5wdXQsIHRleHRhcmVhLCBzZWxlY3QiKS5ibHVyKCksdm9pZCB0LiRtZW51LnRyaWdnZXIoInByZXZjb21tYW5kIik7aWYoMzg9PT1lLmtleUNvZGUmJiJjaGVja2JveCI9PT10LiRzZWxlY3RlZC5maW5kKCJpbnB1dCwgdGV4dGFyZWEsIHNlbGVjdCIpLnByb3AoInR5cGUiKSlyZXR1cm4gdm9pZCBlLnByZXZlbnREZWZhdWx0KCl9ZWxzZSBpZig5IT09ZS5rZXlDb2RlfHxlLnNoaWZ0S2V5KXJldHVybiB2b2lkIHQuJG1lbnUudHJpZ2dlcigicHJldmNvbW1hbmQiKTtjYXNlIDQwOmlmKHAua2V5U3RvcChlLHQpLCF0LmlzSW5wdXQpcmV0dXJuIHZvaWQgdC4kbWVudS50cmlnZ2VyKCJuZXh0Y29tbWFuZCIpO2lmKDk9PT1lLmtleUNvZGUpcmV0dXJuIGUucHJldmVudERlZmF1bHQoKSx0LiRzZWxlY3RlZCYmdC4kc2VsZWN0ZWQuZmluZCgiaW5wdXQsIHRleHRhcmVhLCBzZWxlY3QiKS5ibHVyKCksdm9pZCB0LiRtZW51LnRyaWdnZXIoIm5leHRjb21tYW5kIik7aWYoNDA9PT1lLmtleUNvZGUmJiJjaGVja2JveCI9PT10LiRzZWxlY3RlZC5maW5kKCJpbnB1dCwgdGV4dGFyZWEsIHNlbGVjdCIpLnByb3AoInR5cGUiKSlyZXR1cm4gdm9pZCBlLnByZXZlbnREZWZhdWx0KCk7YnJlYWs7Y2FzZSAzNzppZihwLmtleVN0b3AoZSx0KSx0LmlzSW5wdXR8fCF0LiRzZWxlY3RlZHx8IXQuJHNlbGVjdGVkLmxlbmd0aClicmVhaztpZighdC4kc2VsZWN0ZWQucGFyZW50KCkuaGFzQ2xhc3MoImNvbnRleHQtbWVudS1yb290Iikpe3ZhciBuPXQuJHNlbGVjdGVkLnBhcmVudCgpLnBhcmVudCgpO3JldHVybiB0LiRzZWxlY3RlZC50cmlnZ2VyKCJjb250ZXh0bWVudTpibHVyIiksdm9pZCh0LiRzZWxlY3RlZD1uKX1icmVhaztjYXNlIDM5OmlmKHAua2V5U3RvcChlLHQpLHQuaXNJbnB1dHx8IXQuJHNlbGVjdGVkfHwhdC4kc2VsZWN0ZWQubGVuZ3RoKWJyZWFrO3ZhciBvPXQuJHNlbGVjdGVkLmRhdGEoImNvbnRleHRNZW51Iil8fHt9O2lmKG8uJG1lbnUmJnQuJHNlbGVjdGVkLmhhc0NsYXNzKCJjb250ZXh0LW1lbnUtc3VibWVudSIpKXJldHVybiB0LiRzZWxlY3RlZD1udWxsLG8uJHNlbGVjdGVkPW51bGwsdm9pZCBvLiRtZW51LnRyaWdnZXIoIm5leHRjb21tYW5kIik7YnJlYWs7Y2FzZSAzNTpjYXNlIDM2OnJldHVybiB0LiRzZWxlY3RlZCYmdC4kc2VsZWN0ZWQuZmluZCgiaW5wdXQsIHRleHRhcmVhLCBzZWxlY3QiKS5sZW5ndGg/dm9pZCAwOigodC4kc2VsZWN0ZWQmJnQuJHNlbGVjdGVkLnBhcmVudCgpfHx0LiRtZW51KS5jaGlsZHJlbigiOm5vdCguIit0LmNsYXNzTmFtZXMuZGlzYWJsZWQrIiwgLiIrdC5jbGFzc05hbWVzLm5vdFNlbGVjdGFibGUrIikiKVszNj09PWUua2V5Q29kZT8iZmlyc3QiOiJsYXN0Il0oKS50cmlnZ2VyKCJjb250ZXh0bWVudTpmb2N1cyIpLHZvaWQgZS5wcmV2ZW50RGVmYXVsdCgpKTtjYXNlIDEzOmlmKHAua2V5U3RvcChlLHQpLHQuaXNJbnB1dCl7aWYodC4kc2VsZWN0ZWQmJiF0LiRzZWxlY3RlZC5pcygidGV4dGFyZWEsIHNlbGVjdCIpKXJldHVybiB2b2lkIGUucHJldmVudERlZmF1bHQoKTticmVha31yZXR1cm4gdm9pZCgidW5kZWZpbmVkIiE9dHlwZW9mIHQuJHNlbGVjdGVkJiZudWxsIT09dC4kc2VsZWN0ZWQmJnQuJHNlbGVjdGVkLnRyaWdnZXIoIm1vdXNldXAiKSk7Y2FzZSAzMjpjYXNlIDMzOmNhc2UgMzQ6cmV0dXJuIHZvaWQgcC5rZXlTdG9wKGUsdCk7Y2FzZSAyNzpyZXR1cm4gcC5rZXlTdG9wKGUsdCksdm9pZCB0LiRtZW51LnRyaWdnZXIoImNvbnRleHRtZW51OmhpZGUiKTtkZWZhdWx0OnZhciBhPVN0cmluZy5mcm9tQ2hhckNvZGUoZS5rZXlDb2RlKS50b1VwcGVyQ2FzZSgpO2lmKHQuYWNjZXNza2V5cyYmdC5hY2Nlc3NrZXlzW2FdKXJldHVybiB2b2lkIHQuYWNjZXNza2V5c1thXS4kbm9kZS50cmlnZ2VyKHQuYWNjZXNza2V5c1thXS4kbWVudT8iY29udGV4dG1lbnU6Zm9jdXMiOiJtb3VzZXVwIil9ZS5zdG9wUHJvcGFnYXRpb24oKSwidW5kZWZpbmVkIiE9dHlwZW9mIHQuJHNlbGVjdGVkJiZudWxsIT09dC4kc2VsZWN0ZWQmJnQuJHNlbGVjdGVkLnRyaWdnZXIoZSl9LHByZXZJdGVtOmZ1bmN0aW9uKHQpe3Quc3RvcFByb3BhZ2F0aW9uKCk7dmFyIG49ZSh0aGlzKS5kYXRhKCJjb250ZXh0TWVudSIpfHx7fSxvPWUodGhpcykuZGF0YSgiY29udGV4dE1lbnVSb290Iil8fHt9O2lmKG4uJHNlbGVjdGVkKXt2YXIgaT1uLiRzZWxlY3RlZDtuPW4uJHNlbGVjdGVkLnBhcmVudCgpLmRhdGEoImNvbnRleHRNZW51Iil8fHt9LG4uJHNlbGVjdGVkPWl9Zm9yKHZhciBhPW4uJG1lbnUuY2hpbGRyZW4oKSxyPW4uJHNlbGVjdGVkJiZuLiRzZWxlY3RlZC5wcmV2KCkubGVuZ3RoP24uJHNlbGVjdGVkLnByZXYoKTphLmxhc3QoKSxzPXI7ci5oYXNDbGFzcyhvLmNsYXNzTmFtZXMuZGlzYWJsZWQpfHxyLmhhc0NsYXNzKG8uY2xhc3NOYW1lcy5ub3RTZWxlY3RhYmxlKTspaWYocj1yLnByZXYoKS5sZW5ndGg/ci5wcmV2KCk6YS5sYXN0KCksci5pcyhzKSlyZXR1cm47bi4kc2VsZWN0ZWQmJnAuaXRlbU1vdXNlbGVhdmUuY2FsbChuLiRzZWxlY3RlZC5nZXQoMCksdCkscC5pdGVtTW91c2VlbnRlci5jYWxsKHIuZ2V0KDApLHQpO3ZhciBjPXIuZmluZCgiaW5wdXQsIHRleHRhcmVhLCBzZWxlY3QiKTtjLmxlbmd0aCYmYy5mb2N1cygpfSxuZXh0SXRlbTpmdW5jdGlvbih0KXt0LnN0b3BQcm9wYWdhdGlvbigpO3ZhciBuPWUodGhpcykuZGF0YSgiY29udGV4dE1lbnUiKXx8e30sbz1lKHRoaXMpLmRhdGEoImNvbnRleHRNZW51Um9vdCIpfHx7fTtpZihuLiRzZWxlY3RlZCl7dmFyIGk9bi4kc2VsZWN0ZWQ7bj1uLiRzZWxlY3RlZC5wYXJlbnQoKS5kYXRhKCJjb250ZXh0TWVudSIpfHx7fSxuLiRzZWxlY3RlZD1pfWZvcih2YXIgYT1uLiRtZW51LmNoaWxkcmVuKCkscj1uLiRzZWxlY3RlZCYmbi4kc2VsZWN0ZWQubmV4dCgpLmxlbmd0aD9uLiRzZWxlY3RlZC5uZXh0KCk6YS5maXJzdCgpLHM9cjtyLmhhc0NsYXNzKG8uY2xhc3NOYW1lcy5kaXNhYmxlZCl8fHIuaGFzQ2xhc3Moby5jbGFzc05hbWVzLm5vdFNlbGVjdGFibGUpOylpZihyPXIubmV4dCgpLmxlbmd0aD9yLm5leHQoKTphLmZpcnN0KCksci5pcyhzKSlyZXR1cm47bi4kc2VsZWN0ZWQmJnAuaXRlbU1vdXNlbGVhdmUuY2FsbChuLiRzZWxlY3RlZC5nZXQoMCksdCkscC5pdGVtTW91c2VlbnRlci5jYWxsKHIuZ2V0KDApLHQpO3ZhciBjPXIuZmluZCgiaW5wdXQsIHRleHRhcmVhLCBzZWxlY3QiKTtjLmxlbmd0aCYmYy5mb2N1cygpfSxmb2N1c0lucHV0OmZ1bmN0aW9uKCl7dmFyIHQ9ZSh0aGlzKS5jbG9zZXN0KCIuY29udGV4dC1tZW51LWl0ZW0iKSxuPXQuZGF0YSgpLG89bi5jb250ZXh0TWVudSxpPW4uY29udGV4dE1lbnVSb290O2kuJHNlbGVjdGVkPW8uJHNlbGVjdGVkPXQsaS5pc0lucHV0PW8uaXNJbnB1dD0hMH0sYmx1cklucHV0OmZ1bmN0aW9uKCl7dmFyIHQ9ZSh0aGlzKS5jbG9zZXN0KCIuY29udGV4dC1tZW51LWl0ZW0iKSxuPXQuZGF0YSgpLG89bi5jb250ZXh0TWVudSxpPW4uY29udGV4dE1lbnVSb290O2kuaXNJbnB1dD1vLmlzSW5wdXQ9ITF9LG1lbnVNb3VzZWVudGVyOmZ1bmN0aW9uKCl7dmFyIHQ9ZSh0aGlzKS5kYXRhKCkuY29udGV4dE1lbnVSb290O3QuaG92ZXJpbmc9ITB9LG1lbnVNb3VzZWxlYXZlOmZ1bmN0aW9uKHQpe3ZhciBuPWUodGhpcykuZGF0YSgpLmNvbnRleHRNZW51Um9vdDtuLiRsYXllciYmbi4kbGF5ZXIuaXModC5yZWxhdGVkVGFyZ2V0KSYmKG4uaG92ZXJpbmc9ITEpfSxpdGVtTW91c2VlbnRlcjpmdW5jdGlvbih0KXt2YXIgbj1lKHRoaXMpLG89bi5kYXRhKCksaT1vLmNvbnRleHRNZW51LGE9by5jb250ZXh0TWVudVJvb3Q7cmV0dXJuIGEuaG92ZXJpbmc9ITAsdCYmYS4kbGF5ZXImJmEuJGxheWVyLmlzKHQucmVsYXRlZFRhcmdldCkmJih0LnByZXZlbnREZWZhdWx0KCksdC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSksKGkuJG1lbnU/aTphKS4kbWVudS5jaGlsZHJlbigiLmhvdmVyIikudHJpZ2dlcigiY29udGV4dG1lbnU6Ymx1ciIpLG4uaGFzQ2xhc3MoYS5jbGFzc05hbWVzLmRpc2FibGVkKXx8bi5oYXNDbGFzcyhhLmNsYXNzTmFtZXMubm90U2VsZWN0YWJsZSk/dm9pZChpLiRzZWxlY3RlZD1udWxsKTp2b2lkIG4udHJpZ2dlcigiY29udGV4dG1lbnU6Zm9jdXMiKX0saXRlbU1vdXNlbGVhdmU6ZnVuY3Rpb24odCl7dmFyIG49ZSh0aGlzKSxvPW4uZGF0YSgpLGk9by5jb250ZXh0TWVudSxhPW8uY29udGV4dE1lbnVSb290O3JldHVybiBhIT09aSYmYS4kbGF5ZXImJmEuJGxheWVyLmlzKHQucmVsYXRlZFRhcmdldCk/KCJ1bmRlZmluZWQiIT10eXBlb2YgYS4kc2VsZWN0ZWQmJm51bGwhPT1hLiRzZWxlY3RlZCYmYS4kc2VsZWN0ZWQudHJpZ2dlcigiY29udGV4dG1lbnU6Ymx1ciIpLHQucHJldmVudERlZmF1bHQoKSx0LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLHZvaWQoYS4kc2VsZWN0ZWQ9aS4kc2VsZWN0ZWQ9aS4kbm9kZSkpOnZvaWQgbi50cmlnZ2VyKCJjb250ZXh0bWVudTpibHVyIil9LGl0ZW1DbGljazpmdW5jdGlvbih0KXt2YXIgbixvPWUodGhpcyksaT1vLmRhdGEoKSxhPWkuY29udGV4dE1lbnUscj1pLmNvbnRleHRNZW51Um9vdCxzPWkuY29udGV4dE1lbnVLZXk7aWYoYS5pdGVtc1tzXSYmIW8uaXMoIi4iK3IuY2xhc3NOYW1lcy5kaXNhYmxlZCsiLCAuY29udGV4dC1tZW51LXN1Ym1lbnUsIC5jb250ZXh0LW1lbnUtc2VwYXJhdG9yLCAuIityLmNsYXNzTmFtZXMubm90U2VsZWN0YWJsZSkpe2lmKHQucHJldmVudERlZmF1bHQoKSx0LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLGUuaXNGdW5jdGlvbihyLmNhbGxiYWNrc1tzXSkmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyLmNhbGxiYWNrcyxzKSluPXIuY2FsbGJhY2tzW3NdO2Vsc2V7aWYoIWUuaXNGdW5jdGlvbihyLmNhbGxiYWNrKSlyZXR1cm47bj1yLmNhbGxiYWNrfW4uY2FsbChyLiR0cmlnZ2VyLHMscikhPT0hMT9yLiRtZW51LnRyaWdnZXIoImNvbnRleHRtZW51OmhpZGUiKTpyLiRtZW51LnBhcmVudCgpLmxlbmd0aCYmbS51cGRhdGUuY2FsbChyLiR0cmlnZ2VyLHIpfX0saW5wdXRDbGljazpmdW5jdGlvbihlKXtlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfSxoaWRlTWVudTpmdW5jdGlvbih0LG4pe3ZhciBvPWUodGhpcykuZGF0YSgiY29udGV4dE1lbnVSb290Iik7bS5oaWRlLmNhbGwoby4kdHJpZ2dlcixvLG4mJm4uZm9yY2UpfSxmb2N1c0l0ZW06ZnVuY3Rpb24odCl7dC5zdG9wUHJvcGFnYXRpb24oKTt2YXIgbj1lKHRoaXMpLG89bi5kYXRhKCksaT1vLmNvbnRleHRNZW51LGE9by5jb250ZXh0TWVudVJvb3Q7bi5hZGRDbGFzcyhbYS5jbGFzc05hbWVzLmhvdmVyLGEuY2xhc3NOYW1lcy52aXNpYmxlXS5qb2luKCIgIikpLnNpYmxpbmdzKCkucmVtb3ZlQ2xhc3MoYS5jbGFzc05hbWVzLnZpc2libGUpLmZpbHRlcihhLmNsYXNzTmFtZXMuaG92ZXIpLnRyaWdnZXIoImNvbnRleHRtZW51OmJsdXIiKSxpLiRzZWxlY3RlZD1hLiRzZWxlY3RlZD1uLGkuJG5vZGUmJmEucG9zaXRpb25TdWJtZW51LmNhbGwoaS4kbm9kZSxpLiRtZW51KX0sYmx1ckl0ZW06ZnVuY3Rpb24odCl7dC5zdG9wUHJvcGFnYXRpb24oKTt2YXIgbj1lKHRoaXMpLG89bi5kYXRhKCksaT1vLmNvbnRleHRNZW51LGE9by5jb250ZXh0TWVudVJvb3Q7aS5hdXRvSGlkZSYmbi5yZW1vdmVDbGFzcyhhLmNsYXNzTmFtZXMudmlzaWJsZSksbi5yZW1vdmVDbGFzcyhhLmNsYXNzTmFtZXMuaG92ZXIpLGkuJHNlbGVjdGVkPW51bGx9fSxtPXtzaG93OmZ1bmN0aW9uKHQsbixvKXt2YXIgYT1lKHRoaXMpLHI9e307cmV0dXJuIGUoIiNjb250ZXh0LW1lbnUtbGF5ZXIiKS50cmlnZ2VyKCJtb3VzZWRvd24iKSx0LiR0cmlnZ2VyPWEsdC5ldmVudHMuc2hvdy5jYWxsKGEsdCk9PT0hMT92b2lkKGk9bnVsbCk6KG0udXBkYXRlLmNhbGwoYSx0KSx0LnBvc2l0aW9uLmNhbGwoYSx0LG4sbyksdC56SW5kZXgmJihyLnpJbmRleD1oKGEpK3QuekluZGV4KSxtLmxheWVyLmNhbGwodC4kbWVudSx0LHIuekluZGV4KSx0LiRtZW51LmZpbmQoInVsIikuY3NzKCJ6SW5kZXgiLHIuekluZGV4KzEpLHQuJG1lbnUuY3NzKHIpW3QuYW5pbWF0aW9uLnNob3ddKHQuYW5pbWF0aW9uLmR1cmF0aW9uLGZ1bmN0aW9uKCl7YS50cmlnZ2VyKCJjb250ZXh0bWVudTp2aXNpYmxlIil9KSxhLmRhdGEoImNvbnRleHRNZW51Iix0KS5hZGRDbGFzcygiY29udGV4dC1tZW51LWFjdGl2ZSIpLGUoZG9jdW1lbnQpLm9mZigia2V5ZG93bi5jb250ZXh0TWVudSIpLm9uKCJrZXlkb3duLmNvbnRleHRNZW51IixwLmtleSksdm9pZCh0LmF1dG9IaWRlJiZlKGRvY3VtZW50KS5vbigibW91c2Vtb3ZlLmNvbnRleHRNZW51QXV0b0hpZGUiLGZ1bmN0aW9uKGUpe3ZhciBuPWEub2Zmc2V0KCk7bi5yaWdodD1uLmxlZnQrYS5vdXRlcldpZHRoKCksbi5ib3R0b209bi50b3ArYS5vdXRlckhlaWdodCgpLCF0LiRsYXllcnx8dC5ob3ZlcmluZ3x8ZS5wYWdlWD49bi5sZWZ0JiZlLnBhZ2VYPD1uLnJpZ2h0JiZlLnBhZ2VZPj1uLnRvcCYmZS5wYWdlWTw9bi5ib3R0b218fHQuJG1lbnUudHJpZ2dlcigiY29udGV4dG1lbnU6aGlkZSIpfSkpKX0saGlkZTpmdW5jdGlvbih0LG4pe3ZhciBvPWUodGhpcyk7aWYodHx8KHQ9by5kYXRhKCJjb250ZXh0TWVudSIpfHx7fSksbnx8IXQuZXZlbnRzfHx0LmV2ZW50cy5oaWRlLmNhbGwobyx0KSE9PSExKXtpZihvLnJlbW92ZURhdGEoImNvbnRleHRNZW51IikucmVtb3ZlQ2xhc3MoImNvbnRleHQtbWVudS1hY3RpdmUiKSx0LiRsYXllcil7c2V0VGltZW91dChmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtlLnJlbW92ZSgpfX0odC4kbGF5ZXIpLDEwKTt0cnl7ZGVsZXRlIHQuJGxheWVyfWNhdGNoKGEpe3QuJGxheWVyPW51bGx9fWk9bnVsbCx0LiRtZW51LmZpbmQoIi4iK3QuY2xhc3NOYW1lcy5ob3ZlcikudHJpZ2dlcigiY29udGV4dG1lbnU6Ymx1ciIpLHQuJHNlbGVjdGVkPW51bGwsZShkb2N1bWVudCkub2ZmKCIuY29udGV4dE1lbnVBdXRvSGlkZSIpLm9mZigia2V5ZG93bi5jb250ZXh0TWVudSIpLHQuJG1lbnUmJnQuJG1lbnVbdC5hbmltYXRpb24uaGlkZV0odC5hbmltYXRpb24uZHVyYXRpb24sZnVuY3Rpb24oKXt0LmJ1aWxkJiYodC4kbWVudS5yZW1vdmUoKSxlLmVhY2godCxmdW5jdGlvbihlKXtzd2l0Y2goZSl7Y2FzZSJucyI6Y2FzZSJzZWxlY3RvciI6Y2FzZSJidWlsZCI6Y2FzZSJ0cmlnZ2VyIjpyZXR1cm4hMDtkZWZhdWx0OnRbZV09dm9pZCAwO3RyeXtkZWxldGUgdFtlXX1jYXRjaChuKXt9cmV0dXJuITB9fSkpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtvLnRyaWdnZXIoImNvbnRleHRtZW51OmhpZGRlbiIpfSwxMCl9KX19LGNyZWF0ZTpmdW5jdGlvbihuLG8pe2Z1bmN0aW9uIGkodCl7dmFyIG49ZSgiPHNwYW4+PC9zcGFuPiIpO3JldHVybiB0Ll9hY2Nlc3NrZXk/KHQuX2JlZm9yZUFjY2Vzc2tleSYmbi5hcHBlbmQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodC5fYmVmb3JlQWNjZXNza2V5KSksZSgiPHNwYW4+PC9zcGFuPiIpLmFkZENsYXNzKCJjb250ZXh0LW1lbnUtYWNjZXNza2V5IikudGV4dCh0Ll9hY2Nlc3NrZXkpLmFwcGVuZFRvKG4pLHQuX2FmdGVyQWNjZXNza2V5JiZuLmFwcGVuZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0Ll9hZnRlckFjY2Vzc2tleSkpKTpuLnRleHQodC5uYW1lKSxufXZvaWQgMD09PW8mJihvPW4pLG4uJG1lbnU9ZSgnPHVsIGNsYXNzPSJjb250ZXh0LW1lbnUtbGlzdCI+PC91bD4nKS5hZGRDbGFzcyhuLmNsYXNzTmFtZXx8IiIpLmRhdGEoe2NvbnRleHRNZW51Om4sY29udGV4dE1lbnVSb290Om99KSxlLmVhY2goWyJjYWxsYmFja3MiLCJjb21tYW5kcyIsImlucHV0cyJdLGZ1bmN0aW9uKGUsdCl7blt0XT17fSxvW3RdfHwob1t0XT17fSl9KSxvLmFjY2Vzc2tleXN8fChvLmFjY2Vzc2tleXM9e30pLGUuZWFjaChuLml0ZW1zLGZ1bmN0aW9uKGEscil7dmFyIHM9ZSgnPGxpIGNsYXNzPSJjb250ZXh0LW1lbnUtaXRlbSI+PC9saT4nKS5hZGRDbGFzcyhyLmNsYXNzTmFtZXx8IiIpLGM9bnVsbCxsPW51bGw7aWYocy5vbigiY2xpY2siLGUubm9vcCksInN0cmluZyI9PXR5cGVvZiByJiYocj17dHlwZToiY21fc2VwZXJhdG9yIn0pLHIuJG5vZGU9cy5kYXRhKHtjb250ZXh0TWVudTpuLGNvbnRleHRNZW51Um9vdDpvLGNvbnRleHRNZW51S2V5OmF9KSwidW5kZWZpbmVkIiE9dHlwZW9mIHIuYWNjZXNza2V5KWZvcih2YXIgZCxmPXQoci5hY2Nlc3NrZXkpLGg9MDtkPWZbaF07aCsrKWlmKCFvLmFjY2Vzc2tleXNbZF0pe28uYWNjZXNza2V5c1tkXT1yO3ZhciB2PXIubmFtZS5tYXRjaChuZXcgUmVnRXhwKCJeKC4qPykoIitkKyIpKC4qKSQiLCJpIikpO3YmJihyLl9iZWZvcmVBY2Nlc3NrZXk9dlsxXSxyLl9hY2Nlc3NrZXk9dlsyXSxyLl9hZnRlckFjY2Vzc2tleT12WzNdKTticmVha31pZihyLnR5cGUmJnVbci50eXBlXSl1W3IudHlwZV0uY2FsbChzLHIsbixvKSxlLmVhY2goW24sb10sZnVuY3Rpb24odCxuKXtuLmNvbW1hbmRzW2FdPXIsZS5pc0Z1bmN0aW9uKHIuY2FsbGJhY2spJiYobi5jYWxsYmFja3NbYV09ci5jYWxsYmFjayl9KTtlbHNle3N3aXRjaCgiY21fc2VwZXJhdG9yIj09PXIudHlwZT9zLmFkZENsYXNzKCJjb250ZXh0LW1lbnUtc2VwYXJhdG9yICIrby5jbGFzc05hbWVzLm5vdFNlbGVjdGFibGUpOiJodG1sIj09PXIudHlwZT9zLmFkZENsYXNzKCJjb250ZXh0LW1lbnUtaHRtbCAiK28uY2xhc3NOYW1lcy5ub3RTZWxlY3RhYmxlKTpyLnR5cGU/KGM9ZSgiPGxhYmVsPjwvbGFiZWw+IikuYXBwZW5kVG8ocyksaShyKS5hcHBlbmRUbyhjKSxzLmFkZENsYXNzKCJjb250ZXh0LW1lbnUtaW5wdXQiKSxuLmhhc1R5cGVzPSEwLGUuZWFjaChbbixvXSxmdW5jdGlvbihlLHQpe3QuY29tbWFuZHNbYV09cix0LmlucHV0c1thXT1yfSkpOnIuaXRlbXMmJihyLnR5cGU9InN1YiIpLHIudHlwZSl7Y2FzZSJzZXBlcmF0b3IiOmJyZWFrO2Nhc2UidGV4dCI6bD1lKCc8aW5wdXQgdHlwZT0idGV4dCIgdmFsdWU9IjEiIG5hbWU9IiIgdmFsdWU9IiI+JykuYXR0cigibmFtZSIsImNvbnRleHQtbWVudS1pbnB1dC0iK2EpLnZhbChyLnZhbHVlfHwiIikuYXBwZW5kVG8oYyk7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6bD1lKCc8dGV4dGFyZWEgbmFtZT0iIj48L3RleHRhcmVhPicpLmF0dHIoIm5hbWUiLCJjb250ZXh0LW1lbnUtaW5wdXQtIithKS52YWwoci52YWx1ZXx8IiIpLmFwcGVuZFRvKGMpLHIuaGVpZ2h0JiZsLmhlaWdodChyLmhlaWdodCk7YnJlYWs7Y2FzZSJjaGVja2JveCI6bD1lKCc8aW5wdXQgdHlwZT0iY2hlY2tib3giIHZhbHVlPSIxIiBuYW1lPSIiIHZhbHVlPSIiPicpLmF0dHIoIm5hbWUiLCJjb250ZXh0LW1lbnUtaW5wdXQtIithKS52YWwoci52YWx1ZXx8IiIpLnByb3AoImNoZWNrZWQiLCEhci5zZWxlY3RlZCkucHJlcGVuZFRvKGMpO2JyZWFrO2Nhc2UicmFkaW8iOmw9ZSgnPGlucHV0IHR5cGU9InJhZGlvIiB2YWx1ZT0iMSIgbmFtZT0iIiB2YWx1ZT0iIj4nKS5hdHRyKCJuYW1lIiwiY29udGV4dC1tZW51LWlucHV0LSIrci5yYWRpbykudmFsKHIudmFsdWV8fCIiKS5wcm9wKCJjaGVja2VkIiwhIXIuc2VsZWN0ZWQpLnByZXBlbmRUbyhjKTticmVhaztjYXNlInNlbGVjdCI6bD1lKCc8c2VsZWN0IG5hbWU9IiI+JykuYXR0cigibmFtZSIsImNvbnRleHQtbWVudS1pbnB1dC0iK2EpLmFwcGVuZFRvKGMpLHIub3B0aW9ucyYmKGUuZWFjaChyLm9wdGlvbnMsZnVuY3Rpb24odCxuKXtlKCI8b3B0aW9uPjwvb3B0aW9uPiIpLnZhbCh0KS50ZXh0KG4pLmFwcGVuZFRvKGwpfSksbC52YWwoci5zZWxlY3RlZCkpO2JyZWFrO2Nhc2Uic3ViIjppKHIpLmFwcGVuZFRvKHMpLHIuYXBwZW5kVG89ci4kbm9kZSxtLmNyZWF0ZShyLG8pLHMuZGF0YSgiY29udGV4dE1lbnUiLHIpLmFkZENsYXNzKCJjb250ZXh0LW1lbnUtc3VibWVudSIpLHIuY2FsbGJhY2s9bnVsbDticmVhaztjYXNlImh0bWwiOmUoci5odG1sKS5hcHBlbmRUbyhzKTticmVhaztkZWZhdWx0OmUuZWFjaChbbixvXSxmdW5jdGlvbih0LG4pe24uY29tbWFuZHNbYV09cixlLmlzRnVuY3Rpb24oci5jYWxsYmFjaykmJihuLmNhbGxiYWNrc1thXT1yLmNhbGxiYWNrKX0pLGkocikuYXBwZW5kVG8ocyl9ci50eXBlJiYic3ViIiE9PXIudHlwZSYmImh0bWwiIT09ci50eXBlJiYiY21fc2VwZXJhdG9yIiE9PXIudHlwZSYmKGwub24oImZvY3VzIixwLmZvY3VzSW5wdXQpLm9uKCJibHVyIixwLmJsdXJJbnB1dCksci5ldmVudHMmJmwub24oci5ldmVudHMsbikpLHIuaWNvbiYmKGUuaXNGdW5jdGlvbihyLmljb24pP3IuX2ljb249ci5pY29uLmNhbGwodGhpcyx0aGlzLHMsYSxyKTpyLl9pY29uPW8uY2xhc3NOYW1lcy5pY29uKyIgIitvLmNsYXNzTmFtZXMuaWNvbisiLSIrci5pY29uLHMuYWRkQ2xhc3Moci5faWNvbikpfXIuJGlucHV0PWwsci4kbGFiZWw9YyxzLmFwcGVuZFRvKG4uJG1lbnUpLCFuLmhhc1R5cGVzJiZlLnN1cHBvcnQuZXZlbnRTZWxlY3RzdGFydCYmcy5vbigic2VsZWN0c3RhcnQuZGlzYWJsZVRleHRTZWxlY3QiLHAuYWJvcnRldmVudCl9KSxuLiRub2RlfHxuLiRtZW51LmNzcygiZGlzcGxheSIsIm5vbmUiKS5hZGRDbGFzcygiY29udGV4dC1tZW51LXJvb3QiKSxuLiRtZW51LmFwcGVuZFRvKG4uYXBwZW5kVG98fGRvY3VtZW50LmJvZHkpfSxyZXNpemU6ZnVuY3Rpb24odCxuKXt0LmNzcyh7cG9zaXRpb246ImFic29sdXRlIixkaXNwbGF5OiJibG9jayJ9KSx0LmRhdGEoIndpZHRoIixNYXRoLmNlaWwodC53aWR0aCgpKSksdC5jc3Moe3Bvc2l0aW9uOiJzdGF0aWMiLG1pbldpZHRoOiIwcHgiLG1heFdpZHRoOiIxMDAwMDBweCJ9KSx0LmZpbmQoIj4gbGkgPiB1bCIpLmVhY2goZnVuY3Rpb24oKXttLnJlc2l6ZShlKHRoaXMpLCEwKX0pLG58fHQuZmluZCgidWwiKS5hZGRCYWNrKCkuY3NzKHtwb3NpdGlvbjoiIixkaXNwbGF5OiIiLG1pbldpZHRoOiIiLG1heFdpZHRoOiIifSkud2lkdGgoZnVuY3Rpb24oKXtyZXR1cm4gZSh0aGlzKS5kYXRhKCJ3aWR0aCIpfSl9LHVwZGF0ZTpmdW5jdGlvbih0LG4pe3ZhciBvPXRoaXM7dm9pZCAwPT09biYmKG49dCxtLnJlc2l6ZSh0LiRtZW51KSksdC4kbWVudS5jaGlsZHJlbigpLmVhY2goZnVuY3Rpb24oKXt2YXIgaSxhPWUodGhpcykscj1hLmRhdGEoImNvbnRleHRNZW51S2V5Iikscz10Lml0ZW1zW3JdLGM9ZS5pc0Z1bmN0aW9uKHMuZGlzYWJsZWQpJiZzLmRpc2FibGVkLmNhbGwobyxyLG4pfHxzLmRpc2FibGVkPT09ITA7aWYoaT1lLmlzRnVuY3Rpb24ocy52aXNpYmxlKT9zLnZpc2libGUuY2FsbChvLHIsbik6InVuZGVmaW5lZCI9PXR5cGVvZiBzLnZpc2libGV8fHMudmlzaWJsZT09PSEwLGFbaT8ic2hvdyI6ImhpZGUiXSgpLGFbYz8iYWRkQ2xhc3MiOiJyZW1vdmVDbGFzcyJdKG4uY2xhc3NOYW1lcy5kaXNhYmxlZCksZS5pc0Z1bmN0aW9uKHMuaWNvbikmJihhLnJlbW92ZUNsYXNzKHMuX2ljb24pLHMuX2ljb249cy5pY29uLmNhbGwodGhpcyxvLGEscixzKSxhLmFkZENsYXNzKHMuX2ljb24pKSxzLnR5cGUpc3dpdGNoKGEuZmluZCgiaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEiKS5wcm9wKCJkaXNhYmxlZCIsYykscy50eXBlKXtjYXNlInRleHQiOmNhc2UidGV4dGFyZWEiOnMuJGlucHV0LnZhbChzLnZhbHVlfHwiIik7YnJlYWs7Y2FzZSJjaGVja2JveCI6Y2FzZSJyYWRpbyI6cy4kaW5wdXQudmFsKHMudmFsdWV8fCIiKS5wcm9wKCJjaGVja2VkIiwhIXMuc2VsZWN0ZWQpO2JyZWFrO2Nhc2Uic2VsZWN0IjpzLiRpbnB1dC52YWwocy5zZWxlY3RlZHx8IiIpfXMuJG1lbnUmJm0udXBkYXRlLmNhbGwobyxzLG4pfSl9LGxheWVyOmZ1bmN0aW9uKHQsbil7dmFyIG89dC4kbGF5ZXI9ZSgnPGRpdiBpZD0iY29udGV4dC1tZW51LWxheWVyIiBzdHlsZT0icG9zaXRpb246Zml4ZWQ7IHotaW5kZXg6JytuKyc7IHRvcDowOyBsZWZ0OjA7IG9wYWNpdHk6IDA7IGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTsgYmFja2dyb3VuZC1jb2xvcjogIzAwMDsiPjwvZGl2PicpLmNzcyh7aGVpZ2h0OnIuaGVpZ2h0KCksd2lkdGg6ci53aWR0aCgpLGRpc3BsYXk6ImJsb2NrIn0pLmRhdGEoImNvbnRleHRNZW51Um9vdCIsdCkuaW5zZXJ0QmVmb3JlKHRoaXMpLm9uKCJjb250ZXh0bWVudSIscC5hYm9ydGV2ZW50KS5vbigibW91c2Vkb3duIixwLmxheWVyQ2xpY2spO3JldHVybiB2b2lkIDA9PT1kb2N1bWVudC5ib2R5LnN0eWxlLm1heFdpZHRoJiZvLmNzcyh7cG9zaXRpb246ImFic29sdXRlIixoZWlnaHQ6ZShkb2N1bWVudCkuaGVpZ2h0KCl9KSxvfX07ZS5mbi5jb250ZXh0TWVudT1mdW5jdGlvbih0KXt2YXIgbj10aGlzLG89dDtpZih0aGlzLmxlbmd0aD4wKWlmKHZvaWQgMD09PXQpdGhpcy5maXJzdCgpLnRyaWdnZXIoImNvbnRleHRtZW51Iik7ZWxzZSBpZih2b2lkIDAhPT10LngmJnZvaWQgMCE9PXQueSl0aGlzLmZpcnN0KCkudHJpZ2dlcihlLkV2ZW50KCJjb250ZXh0bWVudSIse3BhZ2VYOnQueCxwYWdlWTp0LnksbW91c2VCdXR0b246dC5idXR0b259KSk7ZWxzZSBpZigiaGlkZSI9PT10KXt2YXIgaT10aGlzLmZpcnN0KCkuZGF0YSgiY29udGV4dE1lbnUiKT90aGlzLmZpcnN0KCkuZGF0YSgiY29udGV4dE1lbnUiKS4kbWVudTpudWxsO2kmJmkudHJpZ2dlcigiY29udGV4dG1lbnU6aGlkZSIpfWVsc2UiZGVzdHJveSI9PT10P2UuY29udGV4dE1lbnUoImRlc3Ryb3kiLHtjb250ZXh0OnRoaXN9KTplLmlzUGxhaW5PYmplY3QodCk/KHQuY29udGV4dD10aGlzLGUuY29udGV4dE1lbnUoImNyZWF0ZSIsdCkpOnQ/dGhpcy5yZW1vdmVDbGFzcygiY29udGV4dC1tZW51LWRpc2FibGVkIik6dHx8dGhpcy5hZGRDbGFzcygiY29udGV4dC1tZW51LWRpc2FibGVkIik7ZWxzZSBlLmVhY2gobCxmdW5jdGlvbigpe3RoaXMuc2VsZWN0b3I9PT1uLnNlbGVjdG9yJiYoby5kYXRhPXRoaXMsZS5leHRlbmQoby5kYXRhLHt0cmlnZ2VyOiJkZW1hbmQifSkpfSkscC5jb250ZXh0bWVudS5jYWxsKG8udGFyZ2V0LG8pO3JldHVybiB0aGlzfSxlLmNvbnRleHRNZW51PWZ1bmN0aW9uKHQsbil7InN0cmluZyIhPXR5cGVvZiB0JiYobj10LHQ9ImNyZWF0ZSIpLCJzdHJpbmciPT10eXBlb2Ygbj9uPXtzZWxlY3RvcjpufTp2b2lkIDA9PT1uJiYobj17fSk7dmFyIG89ZS5leHRlbmQoITAse30sZCxufHx7fSksaT1lKGRvY3VtZW50KSxyPWksdT0hMTtzd2l0Y2goby5jb250ZXh0JiZvLmNvbnRleHQubGVuZ3RoPyhyPWUoby5jb250ZXh0KS5maXJzdCgpLG8uY29udGV4dD1yLmdldCgwKSx1PW8uY29udGV4dCE9PWRvY3VtZW50KTpvLmNvbnRleHQ9ZG9jdW1lbnQsdCl7Y2FzZSJjcmVhdGUiOmlmKCFvLnNlbGVjdG9yKXRocm93IG5ldyBFcnJvcigiTm8gc2VsZWN0b3Igc3BlY2lmaWVkIik7aWYoby5zZWxlY3Rvci5tYXRjaCgvLmNvbnRleHQtbWVudS0obGlzdHxpdGVtfGlucHV0KSgkfFxzKS8pKXRocm93IG5ldyBFcnJvcignQ2Fubm90IGJpbmQgdG8gc2VsZWN0b3IgIicrby5zZWxlY3RvcisnIiBhcyBpdCBjb250YWlucyBhIHJlc2VydmVkIGNsYXNzTmFtZScpO2lmKCFvLmJ1aWxkJiYoIW8uaXRlbXN8fGUuaXNFbXB0eU9iamVjdChvLml0ZW1zKSkpdGhyb3cgbmV3IEVycm9yKCJObyBJdGVtcyBzcGVjaWZpZWQiKTtzd2l0Y2gocysrLG8ubnM9Ii5jb250ZXh0TWVudSIrcyx1fHwoY1tvLnNlbGVjdG9yXT1vLm5zKSxsW28ubnNdPW8sby50cmlnZ2VyfHwoby50cmlnZ2VyPSJyaWdodCIpLGF8fChpLm9uKHsiY29udGV4dG1lbnU6aGlkZS5jb250ZXh0TWVudSI6cC5oaWRlTWVudSwicHJldmNvbW1hbmQuY29udGV4dE1lbnUiOnAucHJldkl0ZW0sIm5leHRjb21tYW5kLmNvbnRleHRNZW51IjpwLm5leHRJdGVtLCJjb250ZXh0bWVudS5jb250ZXh0TWVudSI6cC5hYm9ydGV2ZW50LCJtb3VzZWVudGVyLmNvbnRleHRNZW51IjpwLm1lbnVNb3VzZWVudGVyLCJtb3VzZWxlYXZlLmNvbnRleHRNZW51IjpwLm1lbnVNb3VzZWxlYXZlfSwiLmNvbnRleHQtbWVudS1saXN0Iikub24oIm1vdXNldXAuY29udGV4dE1lbnUiLCIuY29udGV4dC1tZW51LWlucHV0IixwLmlucHV0Q2xpY2spLm9uKHsibW91c2V1cC5jb250ZXh0TWVudSI6cC5pdGVtQ2xpY2ssImNvbnRleHRtZW51OmZvY3VzLmNvbnRleHRNZW51IjpwLmZvY3VzSXRlbSwiY29udGV4dG1lbnU6Ymx1ci5jb250ZXh0TWVudSI6cC5ibHVySXRlbSwiY29udGV4dG1lbnUuY29udGV4dE1lbnUiOnAuYWJvcnRldmVudCwibW91c2VlbnRlci5jb250ZXh0TWVudSI6cC5pdGVtTW91c2VlbnRlciwibW91c2VsZWF2ZS5jb250ZXh0TWVudSI6cC5pdGVtTW91c2VsZWF2ZX0sIi5jb250ZXh0LW1lbnUtaXRlbSIpLGE9ITApLHIub24oImNvbnRleHRtZW51IitvLm5zLG8uc2VsZWN0b3IsbyxwLmNvbnRleHRtZW51KSx1JiZyLm9uKCJyZW1vdmUiK28ubnMsZnVuY3Rpb24oKXtlKHRoaXMpLmNvbnRleHRNZW51KCJkZXN0cm95Iil9KSxvLnRyaWdnZXIpe2Nhc2UiaG92ZXIiOnIub24oIm1vdXNlZW50ZXIiK28ubnMsby5zZWxlY3RvcixvLHAubW91c2VlbnRlcikub24oIm1vdXNlbGVhdmUiK28ubnMsby5zZWxlY3RvcixvLHAubW91c2VsZWF2ZSk7YnJlYWs7Y2FzZSJsZWZ0IjpyLm9uKCJjbGljayIrby5ucyxvLnNlbGVjdG9yLG8scC5jbGljayl9by5idWlsZHx8bS5jcmVhdGUobyk7YnJlYWs7Y2FzZSJkZXN0cm95Ijp2YXIgZjtpZih1KXt2YXIgaD1vLmNvbnRleHQ7ZS5lYWNoKGwsZnVuY3Rpb24odCxuKXtpZihuLmNvbnRleHQhPT1oKXJldHVybiEwO2Y9ZSgiLmNvbnRleHQtbWVudS1saXN0IikuZmlsdGVyKCI6dmlzaWJsZSIpLGYubGVuZ3RoJiZmLmRhdGEoKS5jb250ZXh0TWVudVJvb3QuJHRyaWdnZXIuaXMoZShuLmNvbnRleHQpLmZpbmQobi5zZWxlY3RvcikpJiZmLnRyaWdnZXIoImNvbnRleHRtZW51OmhpZGUiLHtmb3JjZTohMH0pO3RyeXtsW24ubnNdLiRtZW51JiZsW24ubnNdLiRtZW51LnJlbW92ZSgpLGRlbGV0ZSBsW24ubnNdfWNhdGNoKG8pe2xbbi5uc109bnVsbH1yZXR1cm4gZShuLmNvbnRleHQpLm9mZihuLm5zKSwhMH0pfWVsc2UgaWYoby5zZWxlY3Rvcil7aWYoY1tvLnNlbGVjdG9yXSl7Zj1lKCIuY29udGV4dC1tZW51LWxpc3QiKS5maWx0ZXIoIjp2aXNpYmxlIiksZi5sZW5ndGgmJmYuZGF0YSgpLmNvbnRleHRNZW51Um9vdC4kdHJpZ2dlci5pcyhvLnNlbGVjdG9yKSYmZi50cmlnZ2VyKCJjb250ZXh0bWVudTpoaWRlIix7Zm9yY2U6ITB9KTt0cnl7bFtjW28uc2VsZWN0b3JdXS4kbWVudSYmbFtjW28uc2VsZWN0b3JdXS4kbWVudS5yZW1vdmUoKSxkZWxldGUgbFtjW28uc2VsZWN0b3JdXX1jYXRjaCh2KXtsW2Nbby5zZWxlY3Rvcl1dPW51bGx9aS5vZmYoY1tvLnNlbGVjdG9yXSl9fWVsc2UgaS5vZmYoIi5jb250ZXh0TWVudSAuY29udGV4dE1lbnVBdXRvSGlkZSIpLGUuZWFjaChsLGZ1bmN0aW9uKHQsbil7ZShuLmNvbnRleHQpLm9mZihuLm5zKX0pLGM9e30sbD17fSxzPTAsYT0hMSxlKCIjY29udGV4dC1tZW51LWxheWVyLCAuY29udGV4dC1tZW51LWxpc3QiKS5yZW1vdmUoKTticmVhaztjYXNlImh0bWw1IjooIWUuc3VwcG9ydC5odG1sQ29tbWFuZCYmIWUuc3VwcG9ydC5odG1sTWVudWl0ZW18fCJib29sZWFuIj09dHlwZW9mIG4mJm4pJiZlKCdtZW51W3R5cGU9ImNvbnRleHQiXScpLmVhY2goZnVuY3Rpb24oKXt0aGlzLmlkJiZlLmNvbnRleHRNZW51KHtzZWxlY3RvcjoiW2NvbnRleHRtZW51PSIrdGhpcy5pZCsiXSIsaXRlbXM6ZS5jb250ZXh0TWVudS5mcm9tTWVudSh0aGlzKX0pfSkuY3NzKCJkaXNwbGF5Iiwibm9uZSIpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCdVbmtub3duIG9wZXJhdGlvbiAiJyt0KyciJyl9cmV0dXJuIHRoaXN9LGUuY29udGV4dE1lbnUuc2V0SW5wdXRWYWx1ZXM9ZnVuY3Rpb24odCxuKXt2b2lkIDA9PT1uJiYobj17fSksZS5lYWNoKHQuaW5wdXRzLGZ1bmN0aW9uKGUsdCl7c3dpdGNoKHQudHlwZSl7Y2FzZSJ0ZXh0IjpjYXNlInRleHRhcmVhIjp0LnZhbHVlPW5bZV18fCIiO2JyZWFrO2Nhc2UiY2hlY2tib3giOnQuc2VsZWN0ZWQ9ISFuW2VdO2JyZWFrO2Nhc2UicmFkaW8iOnQuc2VsZWN0ZWQ9KG5bdC5yYWRpb118fCIiKT09PXQudmFsdWU7YnJlYWs7Y2FzZSJzZWxlY3QiOnQuc2VsZWN0ZWQ9bltlXXx8IiJ9fSl9LGUuY29udGV4dE1lbnUuZ2V0SW5wdXRWYWx1ZXM9ZnVuY3Rpb24odCxuKXtyZXR1cm4gdm9pZCAwPT09biYmKG49e30pLGUuZWFjaCh0LmlucHV0cyxmdW5jdGlvbihlLHQpe3N3aXRjaCh0LnR5cGUpe2Nhc2UidGV4dCI6Y2FzZSJ0ZXh0YXJlYSI6Y2FzZSJzZWxlY3QiOm5bZV09dC4kaW5wdXQudmFsKCk7YnJlYWs7Y2FzZSJjaGVja2JveCI6bltlXT10LiRpbnB1dC5wcm9wKCJjaGVja2VkIik7YnJlYWs7Y2FzZSJyYWRpbyI6dC4kaW5wdXQucHJvcCgiY2hlY2tlZCIpJiYoblt0LnJhZGlvXT10LnZhbHVlKX19KSxufSxlLmNvbnRleHRNZW51LmZyb21NZW51PWZ1bmN0aW9uKHQpe3ZhciBuPWUodCksaT17fTtyZXR1cm4gbyhpLG4uY2hpbGRyZW4oKSksaX0sZS5jb250ZXh0TWVudS5kZWZhdWx0cz1kLGUuY29udGV4dE1lbnUudHlwZXM9dSxlLmNvbnRleHRNZW51LmhhbmRsZT1wLGUuY29udGV4dE1lbnUub3A9bSxlLmNvbnRleHRNZW51Lm1lbnVzPWx9KTt2YXIgX2V4dGVuZHM9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgbyBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLG8pJiYoZVtvXT1uW29dKX1yZXR1cm4gZX0sX3R5cGVvZj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX07IWZ1bmN0aW9uKGUsdCl7Im9iamVjdCI9PT0oInVuZGVmaW5lZCI9PXR5cGVvZiBleHBvcnRzPyJ1bmRlZmluZWQiOl90eXBlb2YoZXhwb3J0cykpJiYidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz10KCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUodCk6ZS5MYXp5TG9hZD10KCl9KHRoaXMsZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZShlLHQpe2lmKHQpaWYodC5sZW5ndGgpZm9yKHZhciBuLG89MDtuPXRbb107bys9MSl2KGUsbik7ZWxzZSB2KGUsdCl9ZnVuY3Rpb24gdChlLHQsbil7dmFyIG89dC5fc2V0dGluZ3M7IW4mJmQoZSl8fChqKG8uY2FsbGJhY2tfZW50ZXIsZSkscS5pbmRleE9mKGUudGFnTmFtZSk+LTEmJih6KGUsdCksQShlLG8uY2xhc3NfbG9hZGluZykpLEkoZSx0KSx1KGUpLGooby5jYWxsYmFja19zZXQsZSkpfXZhciBuPXtlbGVtZW50c19zZWxlY3RvcjoiaW1nIixjb250YWluZXI6ZG9jdW1lbnQsdGhyZXNob2xkOjMwMCx0aHJlc2hvbGRzOm51bGwsZGF0YV9zcmM6InNyYyIsZGF0YV9zcmNzZXQ6InNyY3NldCIsZGF0YV9zaXplczoic2l6ZXMiLGRhdGFfYmc6ImJnIixjbGFzc19sb2FkaW5nOiJsb2FkaW5nIixjbGFzc19sb2FkZWQ6ImxvYWRlZCIsY2xhc3NfZXJyb3I6ImVycm9yIixsb2FkX2RlbGF5OjAsY2FsbGJhY2tfbG9hZDpudWxsLGNhbGxiYWNrX2Vycm9yOm51bGwsY2FsbGJhY2tfc2V0Om51bGwsY2FsbGJhY2tfZW50ZXI6bnVsbCxjYWxsYmFja19maW5pc2g6bnVsbCx0b193ZWJwOiExfSxvPWZ1bmN0aW9uKGUpe3JldHVybiBfZXh0ZW5kcyh7fSxuLGUpfSxpPSJkYXRhLSIsYT0id2FzLXByb2Nlc3NlZCIscj0ibGwtdGltZW91dCIscz0idHJ1ZSIsYz1mdW5jdGlvbihlLHQpe3JldHVybiBlLmdldEF0dHJpYnV0ZShpK3QpfSxsPWZ1bmN0aW9uKGUsdCxuKXt2YXIgbz1pK3Q7cmV0dXJuIG51bGw9PT1uP3ZvaWQgZS5yZW1vdmVBdHRyaWJ1dGUobyk6dm9pZCBlLnNldEF0dHJpYnV0ZShvLG4pfSx1PWZ1bmN0aW9uKGUpe3JldHVybiBsKGUsYSxzKX0sZD1mdW5jdGlvbihlKXtyZXR1cm4gYyhlLGEpPT09c30sZj1mdW5jdGlvbihlLHQpe3JldHVybiBsKGUscix0KX0saD1mdW5jdGlvbihlKXtyZXR1cm4gYyhlLHIpfSxwPWZ1bmN0aW9uKGUpe3JldHVybiBlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZChlKX0pfSxtPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlIT09dH0pfSx2PWZ1bmN0aW9uKGUsdCl7dmFyIG4sbz0iTGF6eUxvYWQ6OkluaXRpYWxpemVkIixpPW5ldyBlKHQpO3RyeXtuPW5ldyBDdXN0b21FdmVudChvLHtkZXRhaWw6e2luc3RhbmNlOml9fSl9Y2F0Y2goYSl7bj1kb2N1bWVudC5jcmVhdGVFdmVudCgiQ3VzdG9tRXZlbnQiKSxuLmluaXRDdXN0b21FdmVudChvLCExLCExLHtpbnN0YW5jZTppfSl9d2luZG93LmRpc3BhdGNoRXZlbnQobil9LGc9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD9lLnJlcGxhY2UoL1wuKGpwZT9nfHBuZykvZ2ksIi53ZWJwIik6ZX0seT1mdW5jdGlvbigpe3ZhciBlPSJpbWFnZS93ZWJwIix0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO3JldHVybiEoIXQuZ2V0Q29udGV4dHx8IXQuZ2V0Q29udGV4dCgiMmQiKSkmJjA9PT10LnRvRGF0YVVSTChlKS5pbmRleE9mKCJkYXRhOiIrZSl9LGI9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cseD1iJiYhKCJvbnNjcm9sbCJpbiB3aW5kb3cpfHwvKGdsZXxpbmd8cm8pYm90fGNyYXdsfHNwaWRlci9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCksdz1iJiYiSW50ZXJzZWN0aW9uT2JzZXJ2ZXIiaW4gd2luZG93LGs9YiYmImNsYXNzTGlzdCJpbiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwIiksJD1iJiZ5KCksQz1mdW5jdGlvbihlLHQsbixvKXtmb3IodmFyIGksYT0wO2k9ZS5jaGlsZHJlblthXTthKz0xKWlmKCJTT1VSQ0UiPT09aS50YWdOYW1lKXt2YXIgcj1jKGksbik7VChpLHQscixvKX19LFQ9ZnVuY3Rpb24oZSx0LG4sbyl7biYmZS5zZXRBdHRyaWJ1dGUodCxnKG4sbykpfSxFPWZ1bmN0aW9uKGUsdCl7dmFyIG49JCYmdC50b193ZWJwLG89dC5kYXRhX3NyY3NldCxpPWUucGFyZW50Tm9kZTtpJiYiUElDVFVSRSI9PT1pLnRhZ05hbWUmJkMoaSwic3Jjc2V0IixvLG4pO3ZhciBhPWMoZSx0LmRhdGFfc2l6ZXMpO1QoZSwic2l6ZXMiLGEpO3ZhciByPWMoZSxvKTtUKGUsInNyY3NldCIscixuKTt2YXIgcz1jKGUsdC5kYXRhX3NyYyk7VChlLCJzcmMiLHMsbil9LE09ZnVuY3Rpb24oZSx0KXt2YXIgbj1jKGUsdC5kYXRhX3NyYyk7VChlLCJzcmMiLG4pfSxfPWZ1bmN0aW9uKGUsdCl7dmFyIG49dC5kYXRhX3NyYyxvPWMoZSxuKTtDKGUsInNyYyIsbiksVChlLCJzcmMiLG8pLGUubG9hZCgpfSxPPWZ1bmN0aW9uKGUsdCl7dmFyIG49JCYmdC50b193ZWJwLG89YyhlLHQuZGF0YV9zcmMpLGk9YyhlLHQuZGF0YV9iZyk7aWYobyl7dmFyIGE9ZyhvLG4pO2Uuc3R5bGUuYmFja2dyb3VuZEltYWdlPSd1cmwoIicrYSsnIiknfWlmKGkpe3ZhciByPWcoaSxuKTtlLnN0eWxlLmJhY2tncm91bmRJbWFnZT1yfX0sUz17SU1HOkUsSUZSQU1FOk0sVklERU86X30sST1mdW5jdGlvbihlLHQpe3ZhciBuPXQuX3NldHRpbmdzLG89ZS50YWdOYW1lLGk9U1tvXTtyZXR1cm4gaT8oaShlLG4pLHQuX3VwZGF0ZUxvYWRpbmdDb3VudCgxKSx2b2lkKHQuX2VsZW1lbnRzPW0odC5fZWxlbWVudHMsZSkpKTp2b2lkIE8oZSxuKX0sQT1mdW5jdGlvbihlLHQpe3JldHVybiBrP3ZvaWQgZS5jbGFzc0xpc3QuYWRkKHQpOnZvaWQoZS5jbGFzc05hbWUrPShlLmNsYXNzTmFtZT8iICI6IiIpK3QpfSxOPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGs/dm9pZCBlLmNsYXNzTGlzdC5yZW1vdmUodCk6dm9pZChlLmNsYXNzTmFtZT1lLmNsYXNzTmFtZS5yZXBsYWNlKG5ldyBSZWdFeHAoIihefFxccyspIit0KyIoXFxzK3wkKSIpLCIgIikucmVwbGFjZSgvXlxzKy8sIiIpLnJlcGxhY2UoL1xzKyQvLCIiKSl9LGo9ZnVuY3Rpb24oZSx0KXtlJiZlKHQpfSxEPSJsb2FkIixMPSJsb2FkZWRkYXRhIixQPSJlcnJvciIsUj1mdW5jdGlvbihlLHQsbil7ZS5hZGRFdmVudExpc3RlbmVyKHQsbil9LEY9ZnVuY3Rpb24oZSx0LG4pe2UucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LG4pfSxIPWZ1bmN0aW9uKGUsdCxuKXtSKGUsRCx0KSxSKGUsTCx0KSxSKGUsUCxuKX0sSz1mdW5jdGlvbihlLHQsbil7RihlLEQsdCksRihlLEwsdCksRihlLFAsbil9LFc9ZnVuY3Rpb24oZSx0LG4pe3ZhciBvPW4uX3NldHRpbmdzLGk9dD9vLmNsYXNzX2xvYWRlZDpvLmNsYXNzX2Vycm9yLGE9dD9vLmNhbGxiYWNrX2xvYWQ6by5jYWxsYmFja19lcnJvcixyPWUudGFyZ2V0O04ocixvLmNsYXNzX2xvYWRpbmcpLEEocixpKSxqKGEsciksbi5fdXBkYXRlTG9hZGluZ0NvdW50KC0xKX0sej1mdW5jdGlvbihlLHQpe3ZhciBuPWZ1bmN0aW9uIGkobil7VyhuLCEwLHQpLEsoZSxpLG8pfSxvPWZ1bmN0aW9uIGEobyl7VyhvLCExLHQpLEsoZSxuLGEpfTtIKGUsbixvKX0scT1bIklNRyIsIklGUkFNRSIsIlZJREVPIl0sWT1mdW5jdGlvbihlLG4sbyl7dChlLG8pLG4udW5vYnNlcnZlKGUpfSxRPWZ1bmN0aW9uKGUpe3ZhciB0PWgoZSk7dCYmKGNsZWFyVGltZW91dCh0KSxmKGUsbnVsbCkpfSxVPWZ1bmN0aW9uKGUsdCxuKXt2YXIgbz1uLl9zZXR0aW5ncy5sb2FkX2RlbGF5LGk9aChlKTtpfHwoaT1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7WShlLHQsbiksUShlKX0sbyksZihlLGkpKX0sWD1mdW5jdGlvbihlKXtyZXR1cm4gZS5pc0ludGVyc2VjdGluZ3x8ZS5pbnRlcnNlY3Rpb25SYXRpbz4wfSxCPWZ1bmN0aW9uKGUpe3JldHVybntyb290OmUuY29udGFpbmVyPT09ZG9jdW1lbnQ/bnVsbDplLmNvbnRhaW5lcixyb290TWFyZ2luOmUudGhyZXNob2xkc3x8ZS50aHJlc2hvbGQrInB4In19LFY9ZnVuY3Rpb24oZSx0KXt0aGlzLl9zZXR0aW5ncz1vKGUpLHRoaXMuX3NldE9ic2VydmVyKCksdGhpcy5fbG9hZGluZ0NvdW50PTAsdGhpcy51cGRhdGUodCl9O3JldHVybiBWLnByb3RvdHlwZT17X21hbmFnZUludGVyc2VjdGlvbjpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9vYnNlcnZlcixuPXRoaXMuX3NldHRpbmdzLmxvYWRfZGVsYXksbz1lLnRhcmdldDtyZXR1cm4gbj92b2lkKFgoZSk/VShvLHQsdGhpcyk6UShvKSk6dm9pZChYKGUpJiZZKG8sdCx0aGlzKSl9LF9vbkludGVyc2VjdGlvbjpmdW5jdGlvbihlKXtlLmZvckVhY2godGhpcy5fbWFuYWdlSW50ZXJzZWN0aW9uLmJpbmQodGhpcykpfSxfc2V0T2JzZXJ2ZXI6ZnVuY3Rpb24oKXt3JiYodGhpcy5fb2JzZXJ2ZXI9bmV3IEludGVyc2VjdGlvbk9ic2VydmVyKHRoaXMuX29uSW50ZXJzZWN0aW9uLmJpbmQodGhpcyksQih0aGlzLl9zZXR0aW5ncykpKX0sX3VwZGF0ZUxvYWRpbmdDb3VudDpmdW5jdGlvbihlKXt0aGlzLl9sb2FkaW5nQ291bnQrPWUsMD09PXRoaXMuX2VsZW1lbnRzLmxlbmd0aCYmMD09PXRoaXMuX2xvYWRpbmdDb3VudCYmaih0aGlzLl9zZXR0aW5ncy5jYWxsYmFja19maW5pc2gpfSx1cGRhdGU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxuPXRoaXMuX3NldHRpbmdzLG89ZXx8bi5jb250YWluZXIucXVlcnlTZWxlY3RvckFsbChuLmVsZW1lbnRzX3NlbGVjdG9yKTtyZXR1cm4gdGhpcy5fZWxlbWVudHM9cChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChvKSkseHx8IXRoaXMuX29ic2VydmVyP3ZvaWQgdGhpcy5sb2FkQWxsKCk6dm9pZCB0aGlzLl9lbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uKGUpe3QuX29ic2VydmVyLm9ic2VydmUoZSl9KX0sZGVzdHJveTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy5fb2JzZXJ2ZXImJih0aGlzLl9lbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uKHQpe2UuX29ic2VydmVyLnVub2JzZXJ2ZSh0KX0pLHRoaXMuX29ic2VydmVyPW51bGwpLHRoaXMuX2VsZW1lbnRzPW51bGwsdGhpcy5fc2V0dGluZ3M9bnVsbH0sbG9hZDpmdW5jdGlvbihlLG4pe3QoZSx0aGlzLG4pfSxsb2FkQWxsOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMuX2VsZW1lbnRzO3QuZm9yRWFjaChmdW5jdGlvbih0KXtlLmxvYWQodCl9KX19LGImJmUoVix3aW5kb3cubGF6eUxvYWRPcHRpb25zKSxWfSksZnVuY3Rpb24oZSl7ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyJqcXVlcnkiXSxlKToib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9ZShyZXF1aXJlKCJqcXVlcnkiKSk6ZShqUXVlcnkpOwp9KGZ1bmN0aW9uKGUpe3ZhciB0PWUuZXZlbnQuZGlzcGF0Y2h8fGUuZXZlbnQuaGFuZGxlLG49ZS5ldmVudC5zcGVjaWFsLG89IkQiKyArbmV3IERhdGUsaT0iRCIrKCtuZXcgRGF0ZSsxKTtuLnNjcm9sbHN0YXJ0PXtzZXR1cDpmdW5jdGlvbihpKXt2YXIgYSxyPWUuZXh0ZW5kKHtsYXRlbmN5Om4uc2Nyb2xsc3RvcC5sYXRlbmN5fSxpKSxzPWZ1bmN0aW9uKGUpe3ZhciBuPXRoaXMsbz1hcmd1bWVudHM7YT9jbGVhclRpbWVvdXQoYSk6KGUudHlwZT0ic2Nyb2xsc3RhcnQiLHQuYXBwbHkobixvKSksYT1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YT1udWxsfSxyLmxhdGVuY3kpfTtlKHRoaXMpLmJpbmQoInNjcm9sbCIscykuZGF0YShvLHMpfSx0ZWFyZG93bjpmdW5jdGlvbigpe2UodGhpcykudW5iaW5kKCJzY3JvbGwiLGUodGhpcykuZGF0YShvKSl9fSxuLnNjcm9sbHN0b3A9e2xhdGVuY3k6MjUwLHNldHVwOmZ1bmN0aW9uKG8pe3ZhciBhLHI9ZS5leHRlbmQoe2xhdGVuY3k6bi5zY3JvbGxzdG9wLmxhdGVuY3l9LG8pLHM9ZnVuY3Rpb24oZSl7dmFyIG49dGhpcyxvPWFyZ3VtZW50czthJiZjbGVhclRpbWVvdXQoYSksYT1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YT1udWxsLGUudHlwZT0ic2Nyb2xsc3RvcCIsdC5hcHBseShuLG8pfSxyLmxhdGVuY3kpfTtlKHRoaXMpLmJpbmQoInNjcm9sbCIscykuZGF0YShpLHMpfSx0ZWFyZG93bjpmdW5jdGlvbigpe2UodGhpcykudW5iaW5kKCJzY3JvbGwiLGUodGhpcykuZGF0YShpKSl9fX0pO3ZhciBib290Ym94PXdpbmRvdy5ib290Ym94fHxmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG4oZSx0KXtyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIHQmJih0PW8pLCJzdHJpbmciPT10eXBlb2YgZlt0XVtlXT9mW3RdW2VdOnQhPWk/bihlLGkpOmV9dmFyIG89ImVuIixpPSJlbiIsYT0hMCxyPSJzdGF0aWMiLHM9ImphdmFzY3JpcHQ6OyIsYz0iIixsPXt9LHU9e30sZD17fTtkLnNldExvY2FsZT1mdW5jdGlvbihlKXtmb3IodmFyIHQgaW4gZilpZih0PT1lKXJldHVybiB2b2lkKG89ZSk7dGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGxvY2FsZTogIitlKX0sZC5hZGRMb2NhbGU9ZnVuY3Rpb24oZSx0KXsidW5kZWZpbmVkIj09dHlwZW9mIGZbZV0mJihmW2VdPXt9KTtmb3IodmFyIG4gaW4gdClmW2VdW25dPXRbbl19LGQuc2V0SWNvbnM9ZnVuY3Rpb24oZSl7dT1lLCJvYmplY3QiPT10eXBlb2YgdSYmbnVsbCE9PXV8fCh1PXt9KX0sZC5zZXRCdG5DbGFzc2VzPWZ1bmN0aW9uKGUpe2w9ZSwib2JqZWN0Ij09dHlwZW9mIGwmJm51bGwhPT1sfHwobD17fSl9LGQuYWxlcnQ9ZnVuY3Rpb24oKXt2YXIgZT0iIix0PW4oIk9LIiksbz1udWxsO3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDE6ZT1hcmd1bWVudHNbMF07YnJlYWs7Y2FzZSAyOmU9YXJndW1lbnRzWzBdLCJmdW5jdGlvbiI9PXR5cGVvZiBhcmd1bWVudHNbMV0/bz1hcmd1bWVudHNbMV06dD1hcmd1bWVudHNbMV07YnJlYWs7Y2FzZSAzOmU9YXJndW1lbnRzWzBdLHQ9YXJndW1lbnRzWzFdLG89YXJndW1lbnRzWzJdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJJbmNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50czogZXhwZWN0ZWQgMS0zIil9cmV0dXJuIGQuZGlhbG9nKGUse2xhYmVsOnQsaWNvbjp1Lk9LLCJjbGFzcyI6bC5PSyxjYWxsYmFjazpvfSx7b25Fc2NhcGU6b3x8ITB9KX0sZC5jb25maXJtPWZ1bmN0aW9uKCl7dmFyIGU9IiIsdD1uKCJDQU5DRUwiKSxvPW4oIkNPTkZJUk0iKSxpPW51bGw7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMTplPWFyZ3VtZW50c1swXTticmVhaztjYXNlIDI6ZT1hcmd1bWVudHNbMF0sImZ1bmN0aW9uIj09dHlwZW9mIGFyZ3VtZW50c1sxXT9pPWFyZ3VtZW50c1sxXTp0PWFyZ3VtZW50c1sxXTticmVhaztjYXNlIDM6ZT1hcmd1bWVudHNbMF0sdD1hcmd1bWVudHNbMV0sImZ1bmN0aW9uIj09dHlwZW9mIGFyZ3VtZW50c1syXT9pPWFyZ3VtZW50c1syXTpvPWFyZ3VtZW50c1syXTticmVhaztjYXNlIDQ6ZT1hcmd1bWVudHNbMF0sdD1hcmd1bWVudHNbMV0sbz1hcmd1bWVudHNbMl0saT1hcmd1bWVudHNbM107YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkluY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzOiBleHBlY3RlZCAxLTQiKX12YXIgYT1mdW5jdGlvbigpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBpKXJldHVybiBpKCExKX0scj1mdW5jdGlvbigpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBpKXJldHVybiBpKCEwKX07cmV0dXJuIGQuZGlhbG9nKGUsW3tsYWJlbDp0LGljb246dS5DQU5DRUwsImNsYXNzIjpsLkNBTkNFTCxjYWxsYmFjazphfSx7bGFiZWw6byxpY29uOnUuQ09ORklSTSwiY2xhc3MiOmwuQ09ORklSTSxjYWxsYmFjazpyfV0se29uRXNjYXBlOmF9KX0sZC5wcm9tcHQ9ZnVuY3Rpb24oKXt2YXIgZT0iIixvPW4oIkNBTkNFTCIpLGk9bigiQ09ORklSTSIpLGE9bnVsbCxyPSIiO3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDE6ZT1hcmd1bWVudHNbMF07YnJlYWs7Y2FzZSAyOmU9YXJndW1lbnRzWzBdLCJmdW5jdGlvbiI9PXR5cGVvZiBhcmd1bWVudHNbMV0/YT1hcmd1bWVudHNbMV06bz1hcmd1bWVudHNbMV07YnJlYWs7Y2FzZSAzOmU9YXJndW1lbnRzWzBdLG89YXJndW1lbnRzWzFdLCJmdW5jdGlvbiI9PXR5cGVvZiBhcmd1bWVudHNbMl0/YT1hcmd1bWVudHNbMl06aT1hcmd1bWVudHNbMl07YnJlYWs7Y2FzZSA0OmU9YXJndW1lbnRzWzBdLG89YXJndW1lbnRzWzFdLGk9YXJndW1lbnRzWzJdLGE9YXJndW1lbnRzWzNdO2JyZWFrO2Nhc2UgNTplPWFyZ3VtZW50c1swXSxvPWFyZ3VtZW50c1sxXSxpPWFyZ3VtZW50c1syXSxhPWFyZ3VtZW50c1szXSxyPWFyZ3VtZW50c1s0XTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiSW5jb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHM6IGV4cGVjdGVkIDEtNSIpfXZhciBzPWUsYz10KCI8Zm9ybT48L2Zvcm0+Iik7Yy5hcHBlbmQoIjxpbnB1dCBjbGFzcz0naW5wdXQtYmxvY2stbGV2ZWwnIGF1dG9jb21wbGV0ZT1vZmYgdHlwZT10ZXh0IHZhbHVlPSciK3IrIicgLz4iKTt2YXIgZj1mdW5jdGlvbigpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBhKXJldHVybiBhKG51bGwpfSxoPWZ1bmN0aW9uKCl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGEpcmV0dXJuIGEoYy5maW5kKCJpbnB1dFt0eXBlPXRleHRdIikudmFsKCkpfSxwPWQuZGlhbG9nKGMsW3tsYWJlbDpvLGljb246dS5DQU5DRUwsImNsYXNzIjpsLkNBTkNFTCxjYWxsYmFjazpmfSx7bGFiZWw6aSxpY29uOnUuQ09ORklSTSwiY2xhc3MiOmwuQ09ORklSTSxjYWxsYmFjazpofV0se2hlYWRlcjpzLHNob3c6ITEsb25Fc2NhcGU6Zn0pO3JldHVybiBwLm9uKCJzaG93biIsZnVuY3Rpb24oKXtjLmZpbmQoImlucHV0W3R5cGU9dGV4dF0iKS5mb2N1cygpLGMub24oInN1Ym1pdCIsZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpLHAuZmluZCgiLmJ0bi1wcmltYXJ5IikuY2xpY2soKX0pfSkscC5tb2RhbCgic2hvdyIpLHB9LGQuZGlhbG9nPWZ1bmN0aW9uKG4sbyxpKXtmdW5jdGlvbiBsKGUpe3ZhciB0PW51bGw7ImZ1bmN0aW9uIj09dHlwZW9mIGkub25Fc2NhcGUmJih0PWkub25Fc2NhcGUoKSksdCE9PSExJiYkLm1vZGFsKCJoaWRlIil9dmFyIHU9IiIsZD1bXTtpfHwoaT17fSksInVuZGVmaW5lZCI9PXR5cGVvZiBvP289W106InVuZGVmaW5lZCI9PXR5cGVvZiBvLmxlbmd0aCYmKG89W29dKTtmb3IodmFyIGY9by5sZW5ndGg7Zi0tOyl7dmFyIGg9bnVsbCxwPW51bGwsbT1udWxsLHY9IiIsZz1udWxsO2lmKCJ1bmRlZmluZWQiPT10eXBlb2Ygb1tmXS5sYWJlbCYmInVuZGVmaW5lZCI9PXR5cGVvZiBvW2ZdWyJjbGFzcyJdJiYidW5kZWZpbmVkIj09dHlwZW9mIG9bZl0uY2FsbGJhY2spe3ZhciB5PTAsYj1udWxsO2Zvcih2YXIgeCBpbiBvW2ZdKWlmKGI9eCwrK3k+MSlicmVhazsxPT15JiYiZnVuY3Rpb24iPT10eXBlb2Ygb1tmXVt4XSYmKG9bZl0ubGFiZWw9YixvW2ZdLmNhbGxiYWNrPW9bZl1beF0pfSJmdW5jdGlvbiI9PXR5cGVvZiBvW2ZdLmNhbGxiYWNrJiYoZz1vW2ZdLmNhbGxiYWNrKSxvW2ZdWyJjbGFzcyJdP209b1tmXVsiY2xhc3MiXTpmPT1vLmxlbmd0aC0xJiZvLmxlbmd0aDw9MiYmKG09ImJ0bi1wcmltYXJ5Iiksb1tmXS5saW5rIT09ITAmJihtPSJidG4gIittKSxoPW9bZl0ubGFiZWw/b1tmXS5sYWJlbDoiT3B0aW9uICIrKGYrMSksb1tmXS5pY29uJiYodj0iPGkgY2xhc3M9JyIrb1tmXS5pY29uKyInPjwvaT4gIikscD1vW2ZdLmhyZWY/b1tmXS5ocmVmOnMsdT0iPGEgZGF0YS1oYW5kbGVyPSciK2YrIicgY2xhc3M9JyIrbSsiJyBocmVmPSciK3ArIic+Iit2K2grIjwvYT4iK3UsZFtmXT1nfXZhciB3PVsiPGRpdiBjbGFzcz0nYm9vdGJveCBtb2RhbCcgdGFiaW5kZXg9Jy0xJyBzdHlsZT0nb3ZlcmZsb3c6aGlkZGVuOyc+Il07aWYoaS5oZWFkZXIpe3ZhciBrPSIiOygidW5kZWZpbmVkIj09dHlwZW9mIGkuaGVhZGVyQ2xvc2VCdXR0b258fGkuaGVhZGVyQ2xvc2VCdXR0b24pJiYoaz0iPGEgaHJlZj0nIitzKyInIGNsYXNzPSdjbG9zZSc+JnRpbWVzOzwvYT4iKSx3LnB1c2goIjxkaXYgY2xhc3M9J21vZGFsLWhlYWRlcic+IitrKyI8aDM+IitpLmhlYWRlcisiPC9oMz48L2Rpdj4iKX13LnB1c2goIjxkaXYgY2xhc3M9J21vZGFsLWJvZHknPjwvZGl2PiIpLHUmJncucHVzaCgiPGRpdiBjbGFzcz0nbW9kYWwtZm9vdGVyJz4iK3UrIjwvZGl2PiIpLHcucHVzaCgiPC9kaXY+Iik7dmFyICQ9dCh3LmpvaW4oIlxuIikpLEM9InVuZGVmaW5lZCI9PXR5cGVvZiBpLmFuaW1hdGU/YTppLmFuaW1hdGU7QyYmJC5hZGRDbGFzcygiZmFkZSIpO3ZhciBUPSJ1bmRlZmluZWQiPT10eXBlb2YgaS5jbGFzc2VzP2M6aS5jbGFzc2VzO3JldHVybiBUJiYkLmFkZENsYXNzKFQpLCQuZmluZCgiLm1vZGFsLWJvZHkiKS5odG1sKG4pLCQub24oImtleXVwLmRpc21pc3MubW9kYWwiLGZ1bmN0aW9uKGUpezI3PT09ZS53aGljaCYmaS5vbkVzY2FwZSYmbCgiZXNjYXBlIil9KSwkLm9uKCJjbGljayIsImEuY2xvc2UiLGZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKSxsKCJjbG9zZSIpfSksJC5vbigic2hvd24iLGZ1bmN0aW9uKCl7JC5maW5kKCJhLmJ0bi1wcmltYXJ5OmZpcnN0IikuZm9jdXMoKX0pLCQub24oImhpZGRlbiIsZnVuY3Rpb24oZSl7ZS50YXJnZXQ9PT10aGlzJiYkLnJlbW92ZSgpfSksJC5vbigiY2xpY2siLCIubW9kYWwtZm9vdGVyIGEiLGZ1bmN0aW9uKGUpe3ZhciBuPXQodGhpcykuZGF0YSgiaGFuZGxlciIpLGk9ZFtuXSxhPW51bGw7InVuZGVmaW5lZCIhPXR5cGVvZiBuJiYidW5kZWZpbmVkIiE9dHlwZW9mIG9bbl0uaHJlZnx8KGUucHJldmVudERlZmF1bHQoKSwiZnVuY3Rpb24iPT10eXBlb2YgaSYmKGE9aShlKSksYSE9PSExJiYkLm1vZGFsKCJoaWRlIikpfSksdCgiYm9keSIpLmFwcGVuZCgkKSwkLm1vZGFsKHtiYWNrZHJvcDoidW5kZWZpbmVkIj09dHlwZW9mIGkuYmFja2Ryb3A/cjppLmJhY2tkcm9wLGtleWJvYXJkOiExLHNob3c6ITF9KSwkLm9uKCJzaG93IixmdW5jdGlvbihuKXt0KGUpLm9mZigiZm9jdXNpbi5tb2RhbCIpfSksInVuZGVmaW5lZCIhPXR5cGVvZiBpLnNob3cmJmkuc2hvdyE9PSEwfHwkLm1vZGFsKCJzaG93IiksJH0sZC5tb2RhbD1mdW5jdGlvbigpe3ZhciBlLG4sbyxpPXtvbkVzY2FwZTpudWxsLGtleWJvYXJkOiEwLGJhY2tkcm9wOnJ9O3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDE6ZT1hcmd1bWVudHNbMF07YnJlYWs7Y2FzZSAyOmU9YXJndW1lbnRzWzBdLCJvYmplY3QiPT10eXBlb2YgYXJndW1lbnRzWzFdP289YXJndW1lbnRzWzFdOm49YXJndW1lbnRzWzFdO2JyZWFrO2Nhc2UgMzplPWFyZ3VtZW50c1swXSxuPWFyZ3VtZW50c1sxXSxvPWFyZ3VtZW50c1syXTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiSW5jb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHM6IGV4cGVjdGVkIDEtMyIpfXJldHVybiBpLmhlYWRlcj1uLG89Im9iamVjdCI9PXR5cGVvZiBvP3QuZXh0ZW5kKGksbyk6aSxkLmRpYWxvZyhlLFtdLG8pfSxkLmhpZGVBbGw9ZnVuY3Rpb24oKXt0KCIuYm9vdGJveCIpLm1vZGFsKCJoaWRlIil9LGQuYW5pbWF0ZT1mdW5jdGlvbihlKXthPWV9LGQuYmFja2Ryb3A9ZnVuY3Rpb24oZSl7cj1lfSxkLmNsYXNzZXM9ZnVuY3Rpb24oZSl7Yz1lfTt2YXIgZj17YnI6e09LOiJPSyIsQ0FOQ0VMOiJDYW5jZWxhciIsQ09ORklSTToiU2ltIn0sZGE6e09LOiJPSyIsQ0FOQ0VMOiJBbm51bGxlciIsQ09ORklSTToiQWNjZXB0ZXIifSxkZTp7T0s6Ik9LIixDQU5DRUw6IkFiYnJlY2hlbiIsQ09ORklSTToiQWt6ZXB0aWVyZW4ifSxlbjp7T0s6Ik9LIixDQU5DRUw6IkNhbmNlbCIsQ09ORklSTToiT0sifSxlczp7T0s6Ik9LIixDQU5DRUw6IkNhbmNlbGFyIixDT05GSVJNOiJBY2VwdGFyIn0sZnI6e09LOiJPSyIsQ0FOQ0VMOiJBbm51bGVyIixDT05GSVJNOiJEJ2FjY29yZCJ9LGl0OntPSzoiT0siLENBTkNFTDoiQW5udWxsYSIsQ09ORklSTToiQ29uZmVybWEifSxubDp7T0s6Ik9LIixDQU5DRUw6IkFubnVsZXJlbiIsQ09ORklSTToiQWNjZXB0ZXJlbiJ9LHBsOntPSzoiT0siLENBTkNFTDoiQW51bHVqIixDT05GSVJNOiJQb3R3aWVyZMW6In0scnU6e09LOiJPSyIsQ0FOQ0VMOiLQntGC0LzQtdC90LAiLENPTkZJUk06ItCf0YDQuNC80LXQvdC40YLRjCJ9LHpoX0NOOntPSzoiT0siLENBTkNFTDoi5Y+W5raIIixDT05GSVJNOiLnoa7orqQifSx6aF9UVzp7T0s6Ik9LIixDQU5DRUw6IuWPlua2iCIsQ09ORklSTToi56K66KqNIn19O3JldHVybiBkfShkb2N1bWVudCx3aW5kb3cualF1ZXJ5KTt3aW5kb3cuYm9vdGJveD1ib290Ym94LGZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQmJmRlZmluZS5hbWQualF1ZXJ5P2RlZmluZShbImpxdWVyeSJdLGUpOmUoInVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzP3JlcXVpcmUoImpxdWVyeSIpOmpRdWVyeSl9KGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB0KHQpe3JldHVybiF0fHx2b2lkIDAhPT10LmFsbG93UGFnZVNjcm9sbHx8dm9pZCAwPT09dC5zd2lwZSYmdm9pZCAwPT09dC5zd2lwZVN0YXR1c3x8KHQuYWxsb3dQYWdlU2Nyb2xsPXUpLHZvaWQgMCE9PXQuY2xpY2smJnZvaWQgMD09PXQudGFwJiYodC50YXA9dC5jbGljayksdHx8KHQ9e30pLHQ9ZS5leHRlbmQoe30sZS5mbi5zd2lwZS5kZWZhdWx0cyx0KSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgbz1lKHRoaXMpLGk9by5kYXRhKF8pO2l8fChpPW5ldyBuKHRoaXMsdCksby5kYXRhKF8saSkpfSl9ZnVuY3Rpb24gbih0LG4pe2Z1bmN0aW9uIG8odCl7aWYoIShsZSgpfHxlKHQudGFyZ2V0KS5jbG9zZXN0KG4uZXhjbHVkZWRFbGVtZW50cyxZZSkubGVuZ3RoPjApKXt2YXIgbz10Lm9yaWdpbmFsRXZlbnQ/dC5vcmlnaW5hbEV2ZW50OnQ7aWYoIW8ucG9pbnRlclR5cGV8fCJtb3VzZSIhPW8ucG9pbnRlclR5cGV8fDAhPW4uZmFsbGJhY2tUb01vdXNlRXZlbnRzKXt2YXIgaSxhPW8udG91Y2hlcyxyPWE/YVswXTpvO3JldHVybiBRZT13LGE/VWU9YS5sZW5ndGg6bi5wcmV2ZW50RGVmYXVsdEV2ZW50cyE9PSExJiZ0LnByZXZlbnREZWZhdWx0KCksRGU9MCxMZT1udWxsLFBlPW51bGwsemU9bnVsbCxSZT0wLEZlPTAsSGU9MCxLZT0xLFdlPTAscWU9dmUoKSxzZSgpLGRlKDAsciksIWF8fFVlPT09bi5maW5nZXJzfHxuLmZpbmdlcnM9PT1ifHx6KCk/KEJlPVRlKCksMj09VWUmJihkZSgxLGFbMV0pLEZlPUhlPWJlKFhlWzBdLnN0YXJ0LFhlWzFdLnN0YXJ0KSksKG4uc3dpcGVTdGF0dXN8fG4ucGluY2hTdGF0dXMpJiYoaT1EKG8sUWUpKSk6aT0hMSxpPT09ITE/KFFlPUMsRChvLFFlKSxpKToobi5ob2xkJiYodHQ9c2V0VGltZW91dChlLnByb3h5KGZ1bmN0aW9uKCl7WWUudHJpZ2dlcigiaG9sZCIsW28udGFyZ2V0XSksbi5ob2xkJiYoaT1uLmhvbGQuY2FsbChZZSxvLG8udGFyZ2V0KSl9LHRoaXMpLG4ubG9uZ1RhcFRocmVzaG9sZCkpLHVlKCEwKSxudWxsKX19fWZ1bmN0aW9uIE8oZSl7dmFyIHQ9ZS5vcmlnaW5hbEV2ZW50P2Uub3JpZ2luYWxFdmVudDplO2lmKFFlIT09JCYmUWUhPT1DJiYhY2UoKSl7dmFyIG8saT10LnRvdWNoZXMsYT1pP2lbMF06dCxyPWZlKGEpO2lmKFZlPVRlKCksaSYmKFVlPWkubGVuZ3RoKSxuLmhvbGQmJmNsZWFyVGltZW91dCh0dCksUWU9aywyPT1VZSYmKDA9PUZlPyhkZSgxLGlbMV0pLEZlPUhlPWJlKFhlWzBdLnN0YXJ0LFhlWzFdLnN0YXJ0KSk6KGZlKGlbMV0pLEhlPWJlKFhlWzBdLmVuZCxYZVsxXS5lbmQpLHplPXdlKFhlWzBdLmVuZCxYZVsxXS5lbmQpKSxLZT14ZShGZSxIZSksV2U9TWF0aC5hYnMoRmUtSGUpKSxVZT09PW4uZmluZ2Vyc3x8bi5maW5nZXJzPT09Ynx8IWl8fHooKSl7aWYoTGU9Q2Uoci5zdGFydCxyLmVuZCksUGU9Q2Uoci5sYXN0LHIuZW5kKSxLKGUsUGUpLERlPWtlKHIuc3RhcnQsci5lbmQpLFJlPXllKCkscGUoTGUsRGUpLG89RCh0LFFlKSwhbi50cmlnZ2VyT25Ub3VjaEVuZHx8bi50cmlnZ2VyT25Ub3VjaExlYXZlKXt2YXIgcz0hMDtpZihuLnRyaWdnZXJPblRvdWNoTGVhdmUpe3ZhciBjPUVlKHRoaXMpO3M9TWUoci5lbmQsYyl9IW4udHJpZ2dlck9uVG91Y2hFbmQmJnM/UWU9aihrKTpuLnRyaWdnZXJPblRvdWNoTGVhdmUmJiFzJiYoUWU9aigkKSksUWUhPUMmJlFlIT0kfHxEKHQsUWUpfX1lbHNlIFFlPUMsRCh0LFFlKTtvPT09ITEmJihRZT1DLEQodCxRZSkpfX1mdW5jdGlvbiBTKGUpe3ZhciB0PWUub3JpZ2luYWxFdmVudD9lLm9yaWdpbmFsRXZlbnQ6ZSxvPXQudG91Y2hlcztpZihvKXtpZihvLmxlbmd0aCYmIWNlKCkpcmV0dXJuIHJlKHQpLCEwO2lmKG8ubGVuZ3RoJiZjZSgpKXJldHVybiEwfXJldHVybiBjZSgpJiYoVWU9WmUpLFZlPVRlKCksUmU9eWUoKSxSKCl8fCFQKCk/KFFlPUMsRCh0LFFlKSk6bi50cmlnZ2VyT25Ub3VjaEVuZHx8bi50cmlnZ2VyT25Ub3VjaEVuZD09PSExJiZRZT09PWs/KG4ucHJldmVudERlZmF1bHRFdmVudHMhPT0hMSYmZS5jYW5jZWxhYmxlIT09ITEmJmUucHJldmVudERlZmF1bHQoKSxRZT0kLEQodCxRZSkpOiFuLnRyaWdnZXJPblRvdWNoRW5kJiZWKCk/KFFlPSQsTCh0LFFlLHApKTpRZT09PWsmJihRZT1DLEQodCxRZSkpLHVlKCExKSxudWxsfWZ1bmN0aW9uIEkoKXtVZT0wLFZlPTAsQmU9MCxGZT0wLEhlPTAsS2U9MSxzZSgpLHVlKCExKX1mdW5jdGlvbiBBKGUpe3ZhciB0PWUub3JpZ2luYWxFdmVudD9lLm9yaWdpbmFsRXZlbnQ6ZTtuLnRyaWdnZXJPblRvdWNoTGVhdmUmJihRZT1qKCQpLEQodCxRZSkpfWZ1bmN0aW9uIE4oKXtZZS5vZmYoU2UsbyksWWUub2ZmKGplLEkpLFllLm9mZihJZSxPKSxZZS5vZmYoQWUsUyksTmUmJlllLm9mZihOZSxBKSx1ZSghMSl9ZnVuY3Rpb24gaihlKXt2YXIgdD1lLG89SCgpLGk9UCgpLGE9UigpO3JldHVybiFvfHxhP3Q9QzohaXx8ZSE9a3x8bi50cmlnZ2VyT25Ub3VjaEVuZCYmIW4udHJpZ2dlck9uVG91Y2hMZWF2ZT8haSYmZT09JCYmbi50cmlnZ2VyT25Ub3VjaExlYXZlJiYodD1DKTp0PSQsdH1mdW5jdGlvbiBEKGUsdCl7dmFyIG4sbz1lLnRvdWNoZXM7cmV0dXJuKFUoKXx8USgpKSYmKG49TChlLHQsZikpLChxKCl8fHooKSkmJm4hPT0hMSYmKG49TChlLHQsaCkpLGllKCkmJm4hPT0hMT9uPUwoZSx0LG0pOmFlKCkmJm4hPT0hMT9uPUwoZSx0LHYpOm9lKCkmJm4hPT0hMSYmKG49TChlLHQscCkpLHQ9PT1DJiZJKGUpLHQ9PT0kJiYobz9vLmxlbmd0aHx8SShlKTpJKGUpKSxufWZ1bmN0aW9uIEwodCxvLHUpe3ZhciBkO2lmKHU9PWYpe2lmKFllLnRyaWdnZXIoInN3aXBlU3RhdHVzIixbbyxMZXx8bnVsbCxEZXx8MCxSZXx8MCxVZSxYZSxQZV0pLG4uc3dpcGVTdGF0dXMmJihkPW4uc3dpcGVTdGF0dXMuY2FsbChZZSx0LG8sTGV8fG51bGwsRGV8fDAsUmV8fDAsVWUsWGUsUGUpLGQ9PT0hMSkpcmV0dXJuITE7aWYobz09JCYmWSgpKXtpZihjbGVhclRpbWVvdXQoZXQpLGNsZWFyVGltZW91dCh0dCksWWUudHJpZ2dlcigic3dpcGUiLFtMZSxEZSxSZSxVZSxYZSxQZV0pLG4uc3dpcGUmJihkPW4uc3dpcGUuY2FsbChZZSx0LExlLERlLFJlLFVlLFhlLFBlKSxkPT09ITEpKXJldHVybiExO3N3aXRjaChMZSl7Y2FzZSBpOlllLnRyaWdnZXIoInN3aXBlTGVmdCIsW0xlLERlLFJlLFVlLFhlLFBlXSksbi5zd2lwZUxlZnQmJihkPW4uc3dpcGVMZWZ0LmNhbGwoWWUsdCxMZSxEZSxSZSxVZSxYZSxQZSkpO2JyZWFrO2Nhc2UgYTpZZS50cmlnZ2VyKCJzd2lwZVJpZ2h0IixbTGUsRGUsUmUsVWUsWGUsUGVdKSxuLnN3aXBlUmlnaHQmJihkPW4uc3dpcGVSaWdodC5jYWxsKFllLHQsTGUsRGUsUmUsVWUsWGUsUGUpKTticmVhaztjYXNlIHI6WWUudHJpZ2dlcigic3dpcGVVcCIsW0xlLERlLFJlLFVlLFhlLFBlXSksbi5zd2lwZVVwJiYoZD1uLnN3aXBlVXAuY2FsbChZZSx0LExlLERlLFJlLFVlLFhlLFBlKSk7YnJlYWs7Y2FzZSBzOlllLnRyaWdnZXIoInN3aXBlRG93biIsW0xlLERlLFJlLFVlLFhlLFBlXSksbi5zd2lwZURvd24mJihkPW4uc3dpcGVEb3duLmNhbGwoWWUsdCxMZSxEZSxSZSxVZSxYZSxQZSkpfX19aWYodT09aCl7aWYoWWUudHJpZ2dlcigicGluY2hTdGF0dXMiLFtvLHplfHxudWxsLFdlfHwwLFJlfHwwLFVlLEtlLFhlXSksbi5waW5jaFN0YXR1cyYmKGQ9bi5waW5jaFN0YXR1cy5jYWxsKFllLHQsbyx6ZXx8bnVsbCxXZXx8MCxSZXx8MCxVZSxLZSxYZSksZD09PSExKSlyZXR1cm4hMTtpZihvPT0kJiZXKCkpc3dpdGNoKHplKXtjYXNlIGM6WWUudHJpZ2dlcigicGluY2hJbiIsW3plfHxudWxsLFdlfHwwLFJlfHwwLFVlLEtlLFhlXSksbi5waW5jaEluJiYoZD1uLnBpbmNoSW4uY2FsbChZZSx0LHplfHxudWxsLFdlfHwwLFJlfHwwLFVlLEtlLFhlKSk7YnJlYWs7Y2FzZSBsOlllLnRyaWdnZXIoInBpbmNoT3V0IixbemV8fG51bGwsV2V8fDAsUmV8fDAsVWUsS2UsWGVdKSxuLnBpbmNoT3V0JiYoZD1uLnBpbmNoT3V0LmNhbGwoWWUsdCx6ZXx8bnVsbCxXZXx8MCxSZXx8MCxVZSxLZSxYZSkpfX1yZXR1cm4gdT09cD9vIT09QyYmbyE9PSR8fChjbGVhclRpbWVvdXQoZXQpLGNsZWFyVGltZW91dCh0dCksRygpJiYhZWUoKT8oSmU9VGUoKSxldD1zZXRUaW1lb3V0KGUucHJveHkoZnVuY3Rpb24oKXtKZT1udWxsLFllLnRyaWdnZXIoInRhcCIsW3QudGFyZ2V0XSksbi50YXAmJihkPW4udGFwLmNhbGwoWWUsdCx0LnRhcmdldCkpfSx0aGlzKSxuLmRvdWJsZVRhcFRocmVzaG9sZCkpOihKZT1udWxsLFllLnRyaWdnZXIoInRhcCIsW3QudGFyZ2V0XSksbi50YXAmJihkPW4udGFwLmNhbGwoWWUsdCx0LnRhcmdldCkpKSk6dT09bT9vIT09QyYmbyE9PSR8fChjbGVhclRpbWVvdXQoZXQpLGNsZWFyVGltZW91dCh0dCksSmU9bnVsbCxZZS50cmlnZ2VyKCJkb3VibGV0YXAiLFt0LnRhcmdldF0pLG4uZG91YmxlVGFwJiYoZD1uLmRvdWJsZVRhcC5jYWxsKFllLHQsdC50YXJnZXQpKSk6dT09diYmKG8hPT1DJiZvIT09JHx8KGNsZWFyVGltZW91dChldCksSmU9bnVsbCxZZS50cmlnZ2VyKCJsb25ndGFwIixbdC50YXJnZXRdKSxuLmxvbmdUYXAmJihkPW4ubG9uZ1RhcC5jYWxsKFllLHQsdC50YXJnZXQpKSkpLGR9ZnVuY3Rpb24gUCgpe3ZhciBlPSEwO3JldHVybiBudWxsIT09bi50aHJlc2hvbGQmJihlPURlPj1uLnRocmVzaG9sZCksZX1mdW5jdGlvbiBSKCl7dmFyIGU9ITE7cmV0dXJuIG51bGwhPT1uLmNhbmNlbFRocmVzaG9sZCYmbnVsbCE9PUxlJiYoZT1tZShMZSktRGU+PW4uY2FuY2VsVGhyZXNob2xkKSxlfWZ1bmN0aW9uIEYoKXtyZXR1cm4gbnVsbD09PW4ucGluY2hUaHJlc2hvbGR8fFdlPj1uLnBpbmNoVGhyZXNob2xkfWZ1bmN0aW9uIEgoKXt2YXIgZTtyZXR1cm4gZT0hbi5tYXhUaW1lVGhyZXNob2xkfHwhKFJlPj1uLm1heFRpbWVUaHJlc2hvbGQpfWZ1bmN0aW9uIEsoZSx0KXtpZihuLnByZXZlbnREZWZhdWx0RXZlbnRzIT09ITEpaWYobi5hbGxvd1BhZ2VTY3JvbGw9PT11KWUucHJldmVudERlZmF1bHQoKTtlbHNle3ZhciBvPW4uYWxsb3dQYWdlU2Nyb2xsPT09ZDtzd2l0Y2godCl7Y2FzZSBpOihuLnN3aXBlTGVmdCYmb3x8IW8mJm4uYWxsb3dQYWdlU2Nyb2xsIT1nKSYmZS5wcmV2ZW50RGVmYXVsdCgpO2JyZWFrO2Nhc2UgYToobi5zd2lwZVJpZ2h0JiZvfHwhbyYmbi5hbGxvd1BhZ2VTY3JvbGwhPWcpJiZlLnByZXZlbnREZWZhdWx0KCk7YnJlYWs7Y2FzZSByOihuLnN3aXBlVXAmJm98fCFvJiZuLmFsbG93UGFnZVNjcm9sbCE9eSkmJmUucHJldmVudERlZmF1bHQoKTticmVhaztjYXNlIHM6KG4uc3dpcGVEb3duJiZvfHwhbyYmbi5hbGxvd1BhZ2VTY3JvbGwhPXkpJiZlLnByZXZlbnREZWZhdWx0KCk7YnJlYWs7Y2FzZSB1On19fWZ1bmN0aW9uIFcoKXt2YXIgZT1YKCksdD1CKCksbj1GKCk7cmV0dXJuIGUmJnQmJm59ZnVuY3Rpb24geigpe3JldHVybiEhKG4ucGluY2hTdGF0dXN8fG4ucGluY2hJbnx8bi5waW5jaE91dCl9ZnVuY3Rpb24gcSgpe3JldHVybiEoIVcoKXx8IXooKSl9ZnVuY3Rpb24gWSgpe3ZhciBlPUgoKSx0PVAoKSxuPVgoKSxvPUIoKSxpPVIoKSxhPSFpJiZvJiZuJiZ0JiZlO3JldHVybiBhfWZ1bmN0aW9uIFEoKXtyZXR1cm4hIShuLnN3aXBlfHxuLnN3aXBlU3RhdHVzfHxuLnN3aXBlTGVmdHx8bi5zd2lwZVJpZ2h0fHxuLnN3aXBlVXB8fG4uc3dpcGVEb3duKX1mdW5jdGlvbiBVKCl7cmV0dXJuISghWSgpfHwhUSgpKX1mdW5jdGlvbiBYKCl7cmV0dXJuIFVlPT09bi5maW5nZXJzfHxuLmZpbmdlcnM9PT1ifHwhVH1mdW5jdGlvbiBCKCl7cmV0dXJuIDAhPT1YZVswXS5lbmQueH1mdW5jdGlvbiBWKCl7cmV0dXJuISFuLnRhcH1mdW5jdGlvbiBHKCl7cmV0dXJuISFuLmRvdWJsZVRhcH1mdW5jdGlvbiBaKCl7cmV0dXJuISFuLmxvbmdUYXB9ZnVuY3Rpb24gSigpe2lmKG51bGw9PUplKXJldHVybiExO3ZhciBlPVRlKCk7cmV0dXJuIEcoKSYmZS1KZTw9bi5kb3VibGVUYXBUaHJlc2hvbGR9ZnVuY3Rpb24gZWUoKXtyZXR1cm4gSigpfWZ1bmN0aW9uIHRlKCl7cmV0dXJuKDE9PT1VZXx8IVQpJiYoaXNOYU4oRGUpfHxEZTxuLnRocmVzaG9sZCl9ZnVuY3Rpb24gbmUoKXtyZXR1cm4gUmU+bi5sb25nVGFwVGhyZXNob2xkJiZEZTx4fWZ1bmN0aW9uIG9lKCl7cmV0dXJuISghdGUoKXx8IVYoKSl9ZnVuY3Rpb24gaWUoKXtyZXR1cm4hKCFKKCl8fCFHKCkpfWZ1bmN0aW9uIGFlKCl7cmV0dXJuISghbmUoKXx8IVooKSl9ZnVuY3Rpb24gcmUoZSl7R2U9VGUoKSxaZT1lLnRvdWNoZXMubGVuZ3RoKzF9ZnVuY3Rpb24gc2UoKXtHZT0wLFplPTB9ZnVuY3Rpb24gY2UoKXt2YXIgZT0hMTtpZihHZSl7dmFyIHQ9VGUoKS1HZTt0PD1uLmZpbmdlclJlbGVhc2VUaHJlc2hvbGQmJihlPSEwKX1yZXR1cm4gZX1mdW5jdGlvbiBsZSgpe3JldHVybiEoWWUuZGF0YShfKyJfaW50b3VjaCIpIT09ITApfWZ1bmN0aW9uIHVlKGUpe1llJiYoZT09PSEwPyhZZS5vbihJZSxPKSxZZS5vbihBZSxTKSxOZSYmWWUub24oTmUsQSkpOihZZS5vZmYoSWUsTywhMSksWWUub2ZmKEFlLFMsITEpLE5lJiZZZS5vZmYoTmUsQSwhMSkpLFllLmRhdGEoXysiX2ludG91Y2giLGU9PT0hMCkpfWZ1bmN0aW9uIGRlKGUsdCl7dmFyIG49e3N0YXJ0Ont4OjAseTowfSxsYXN0Ont4OjAseTowfSxlbmQ6e3g6MCx5OjB9fTtyZXR1cm4gbi5zdGFydC54PW4ubGFzdC54PW4uZW5kLng9dC5wYWdlWHx8dC5jbGllbnRYLG4uc3RhcnQueT1uLmxhc3QueT1uLmVuZC55PXQucGFnZVl8fHQuY2xpZW50WSxYZVtlXT1uLG59ZnVuY3Rpb24gZmUoZSl7dmFyIHQ9dm9pZCAwIT09ZS5pZGVudGlmaWVyP2UuaWRlbnRpZmllcjowLG49aGUodCk7cmV0dXJuIG51bGw9PT1uJiYobj1kZSh0LGUpKSxuLmxhc3QueD1uLmVuZC54LG4ubGFzdC55PW4uZW5kLnksbi5lbmQueD1lLnBhZ2VYfHxlLmNsaWVudFgsbi5lbmQueT1lLnBhZ2VZfHxlLmNsaWVudFksbn1mdW5jdGlvbiBoZShlKXtyZXR1cm4gWGVbZV18fG51bGx9ZnVuY3Rpb24gcGUoZSx0KXtlIT11JiYodD1NYXRoLm1heCh0LG1lKGUpKSxxZVtlXS5kaXN0YW5jZT10KX1mdW5jdGlvbiBtZShlKXtpZihxZVtlXSlyZXR1cm4gcWVbZV0uZGlzdGFuY2V9ZnVuY3Rpb24gdmUoKXt2YXIgZT17fTtyZXR1cm4gZVtpXT1nZShpKSxlW2FdPWdlKGEpLGVbcl09Z2UociksZVtzXT1nZShzKSxlfWZ1bmN0aW9uIGdlKGUpe3JldHVybntkaXJlY3Rpb246ZSxkaXN0YW5jZTowfX1mdW5jdGlvbiB5ZSgpe3JldHVybiBWZS1CZX1mdW5jdGlvbiBiZShlLHQpe3ZhciBuPU1hdGguYWJzKGUueC10LngpLG89TWF0aC5hYnMoZS55LXQueSk7cmV0dXJuIE1hdGgucm91bmQoTWF0aC5zcXJ0KG4qbitvKm8pKX1mdW5jdGlvbiB4ZShlLHQpe3ZhciBuPXQvZSoxO3JldHVybiBuLnRvRml4ZWQoMil9ZnVuY3Rpb24gd2UoKXtyZXR1cm4gS2U8MT9sOmN9ZnVuY3Rpb24ga2UoZSx0KXtyZXR1cm4gTWF0aC5yb3VuZChNYXRoLnNxcnQoTWF0aC5wb3codC54LWUueCwyKStNYXRoLnBvdyh0LnktZS55LDIpKSl9ZnVuY3Rpb24gJGUoZSx0KXt2YXIgbj1lLngtdC54LG89dC55LWUueSxpPU1hdGguYXRhbjIobyxuKSxhPU1hdGgucm91bmQoMTgwKmkvTWF0aC5QSSk7cmV0dXJuIGE8MCYmKGE9MzYwLU1hdGguYWJzKGEpKSxhfWZ1bmN0aW9uIENlKGUsdCl7aWYoX2UoZSx0KSlyZXR1cm4gdTt2YXIgbj0kZShlLHQpO3JldHVybiBuPD00NSYmbj49MD9pOm48PTM2MCYmbj49MzE1P2k6bj49MTM1JiZuPD0yMjU/YTpuPjQ1JiZuPDEzNT9zOnJ9ZnVuY3Rpb24gVGUoKXt2YXIgZT1uZXcgRGF0ZTtyZXR1cm4gZS5nZXRUaW1lKCl9ZnVuY3Rpb24gRWUodCl7dD1lKHQpO3ZhciBuPXQub2Zmc2V0KCksbz17bGVmdDpuLmxlZnQscmlnaHQ6bi5sZWZ0K3Qub3V0ZXJXaWR0aCgpLHRvcDpuLnRvcCxib3R0b206bi50b3ArdC5vdXRlckhlaWdodCgpfTtyZXR1cm4gb31mdW5jdGlvbiBNZShlLHQpe3JldHVybiBlLng+dC5sZWZ0JiZlLng8dC5yaWdodCYmZS55PnQudG9wJiZlLnk8dC5ib3R0b219ZnVuY3Rpb24gX2UoZSx0KXtyZXR1cm4gZS54PT10LngmJmUueT09dC55fXZhciBuPWUuZXh0ZW5kKHt9LG4pLE9lPVR8fE18fCFuLmZhbGxiYWNrVG9Nb3VzZUV2ZW50cyxTZT1PZT9NP0U/Ik1TUG9pbnRlckRvd24iOiJwb2ludGVyZG93biI6InRvdWNoc3RhcnQiOiJtb3VzZWRvd24iLEllPU9lP00/RT8iTVNQb2ludGVyTW92ZSI6InBvaW50ZXJtb3ZlIjoidG91Y2htb3ZlIjoibW91c2Vtb3ZlIixBZT1PZT9NP0U/Ik1TUG9pbnRlclVwIjoicG9pbnRlcnVwIjoidG91Y2hlbmQiOiJtb3VzZXVwIixOZT1PZT9NPyJtb3VzZWxlYXZlIjpudWxsOiJtb3VzZWxlYXZlIixqZT1NP0U/Ik1TUG9pbnRlckNhbmNlbCI6InBvaW50ZXJjYW5jZWwiOiJ0b3VjaGNhbmNlbCIsRGU9MCxMZT1udWxsLFBlPW51bGwsUmU9MCxGZT0wLEhlPTAsS2U9MSxXZT0wLHplPTAscWU9bnVsbCxZZT1lKHQpLFFlPSJzdGFydCIsVWU9MCxYZT17fSxCZT0wLFZlPTAsR2U9MCxaZT0wLEplPTAsZXQ9bnVsbCx0dD1udWxsO3RyeXtZZS5vbihTZSxvKSxZZS5vbihqZSxJKX1jYXRjaChudCl7ZS5lcnJvcigiZXZlbnRzIG5vdCBzdXBwb3J0ZWQgIitTZSsiLCIramUrIiBvbiBqUXVlcnkuc3dpcGUiKX10aGlzLmVuYWJsZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRpc2FibGUoKSxZZS5vbihTZSxvKSxZZS5vbihqZSxJKSxZZX0sdGhpcy5kaXNhYmxlPWZ1bmN0aW9uKCl7cmV0dXJuIE4oKSxZZX0sdGhpcy5kZXN0cm95PWZ1bmN0aW9uKCl7TigpLFllLmRhdGEoXyxudWxsKSxZZT1udWxsfSx0aGlzLm9wdGlvbj1mdW5jdGlvbih0LG8pe2lmKCJvYmplY3QiPT10eXBlb2YgdCluPWUuZXh0ZW5kKG4sdCk7ZWxzZSBpZih2b2lkIDAhPT1uW3RdKXtpZih2b2lkIDA9PT1vKXJldHVybiBuW3RdO25bdF09b31lbHNle2lmKCF0KXJldHVybiBuO2UuZXJyb3IoIk9wdGlvbiAiK3QrIiBkb2VzIG5vdCBleGlzdCBvbiBqUXVlcnkuc3dpcGUub3B0aW9ucyIpfXJldHVybiBudWxsfX12YXIgbz0iMS42LjE4IixpPSJsZWZ0IixhPSJyaWdodCIscj0idXAiLHM9ImRvd24iLGM9ImluIixsPSJvdXQiLHU9Im5vbmUiLGQ9ImF1dG8iLGY9InN3aXBlIixoPSJwaW5jaCIscD0idGFwIixtPSJkb3VibGV0YXAiLHY9Imxvbmd0YXAiLGc9Imhvcml6b250YWwiLHk9InZlcnRpY2FsIixiPSJhbGwiLHg9MTAsdz0ic3RhcnQiLGs9Im1vdmUiLCQ9ImVuZCIsQz0iY2FuY2VsIixUPSJvbnRvdWNoc3RhcnQiaW4gd2luZG93LEU9d2luZG93Lm5hdmlnYXRvci5tc1BvaW50ZXJFbmFibGVkJiYhd2luZG93LlBvaW50ZXJFdmVudCYmIVQsTT0od2luZG93LlBvaW50ZXJFdmVudHx8d2luZG93Lm5hdmlnYXRvci5tc1BvaW50ZXJFbmFibGVkKSYmIVQsXz0iVG91Y2hTd2lwZSIsTz17ZmluZ2VyczoxLHRocmVzaG9sZDo3NSxjYW5jZWxUaHJlc2hvbGQ6bnVsbCxwaW5jaFRocmVzaG9sZDoyMCxtYXhUaW1lVGhyZXNob2xkOm51bGwsZmluZ2VyUmVsZWFzZVRocmVzaG9sZDoyNTAsbG9uZ1RhcFRocmVzaG9sZDo1MDAsZG91YmxlVGFwVGhyZXNob2xkOjIwMCxzd2lwZTpudWxsLHN3aXBlTGVmdDpudWxsLHN3aXBlUmlnaHQ6bnVsbCxzd2lwZVVwOm51bGwsc3dpcGVEb3duOm51bGwsc3dpcGVTdGF0dXM6bnVsbCxwaW5jaEluOm51bGwscGluY2hPdXQ6bnVsbCxwaW5jaFN0YXR1czpudWxsLGNsaWNrOm51bGwsdGFwOm51bGwsZG91YmxlVGFwOm51bGwsbG9uZ1RhcDpudWxsLGhvbGQ6bnVsbCx0cmlnZ2VyT25Ub3VjaEVuZDohMCx0cmlnZ2VyT25Ub3VjaExlYXZlOiExLGFsbG93UGFnZVNjcm9sbDoiYXV0byIsZmFsbGJhY2tUb01vdXNlRXZlbnRzOiEwLGV4Y2x1ZGVkRWxlbWVudHM6Ii5ub1N3aXBlIixwcmV2ZW50RGVmYXVsdEV2ZW50czohMH07ZS5mbi5zd2lwZT1mdW5jdGlvbihuKXt2YXIgbz1lKHRoaXMpLGk9by5kYXRhKF8pO2lmKGkmJiJzdHJpbmciPT10eXBlb2Ygbil7aWYoaVtuXSlyZXR1cm4gaVtuXS5hcHBseShpLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSk7ZS5lcnJvcigiTWV0aG9kICIrbisiIGRvZXMgbm90IGV4aXN0IG9uIGpRdWVyeS5zd2lwZSIpfWVsc2UgaWYoaSYmIm9iamVjdCI9PXR5cGVvZiBuKWkub3B0aW9uLmFwcGx5KGksYXJndW1lbnRzKTtlbHNlIGlmKCEoaXx8Im9iamVjdCIhPXR5cGVvZiBuJiZuKSlyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIG99LGUuZm4uc3dpcGUudmVyc2lvbj1vLGUuZm4uc3dpcGUuZGVmYXVsdHM9TyxlLmZuLnN3aXBlLnBoYXNlcz17UEhBU0VfU1RBUlQ6dyxQSEFTRV9NT1ZFOmssUEhBU0VfRU5EOiQsUEhBU0VfQ0FOQ0VMOkN9LGUuZm4uc3dpcGUuZGlyZWN0aW9ucz17TEVGVDppLFJJR0hUOmEsVVA6cixET1dOOnMsSU46YyxPVVQ6bH0sZS5mbi5zd2lwZS5wYWdlU2Nyb2xsPXtOT05FOnUsSE9SSVpPTlRBTDpnLFZFUlRJQ0FMOnksQVVUTzpkfSxlLmZuLnN3aXBlLmZpbmdlcnM9e09ORToxLFRXTzoyLFRIUkVFOjMsRk9VUjo0LEZJVkU6NSxBTEw6Yn19KSxmdW5jdGlvbihlKXtpZigib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMmJiJ1bmRlZmluZWQiIT10eXBlb2YgbW9kdWxlKW1vZHVsZS5leHBvcnRzPWUoKTtlbHNlIGlmKCJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQpZGVmaW5lKFtdLGUpO2Vsc2V7dmFyIHQ7dD0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnRoaXMsdC5DbGlwYm9hcmQ9ZSgpfX0oZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm4gZnVuY3Rpb24gdChlLG4sbyl7ZnVuY3Rpb24gaShyLHMpe2lmKCFuW3JdKXtpZighZVtyXSl7dmFyIGM9ImZ1bmN0aW9uIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmU7aWYoIXMmJmMpcmV0dXJuIGMociwhMCk7aWYoYSlyZXR1cm4gYShyLCEwKTt2YXIgbD1uZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIityKyInIik7dGhyb3cgbC5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIixsfXZhciB1PW5bcl09e2V4cG9ydHM6e319O2Vbcl1bMF0uY2FsbCh1LmV4cG9ydHMsZnVuY3Rpb24odCl7dmFyIG49ZVtyXVsxXVt0XTtyZXR1cm4gaShuP246dCl9LHUsdS5leHBvcnRzLHQsZSxuLG8pfXJldHVybiBuW3JdLmV4cG9ydHN9Zm9yKHZhciBhPSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlLHI9MDtyPG8ubGVuZ3RoO3IrKylpKG9bcl0pO3JldHVybiBpfSh7MTpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIG8oZSx0KXtmb3IoO2UmJmUubm9kZVR5cGUhPT1pOyl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUubWF0Y2hlcyYmZS5tYXRjaGVzKHQpKXJldHVybiBlO2U9ZS5wYXJlbnROb2RlfX12YXIgaT05O2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgRWxlbWVudCYmIUVsZW1lbnQucHJvdG90eXBlLm1hdGNoZXMpe3ZhciBhPUVsZW1lbnQucHJvdG90eXBlO2EubWF0Y2hlcz1hLm1hdGNoZXNTZWxlY3Rvcnx8YS5tb3pNYXRjaGVzU2VsZWN0b3J8fGEubXNNYXRjaGVzU2VsZWN0b3J8fGEub01hdGNoZXNTZWxlY3Rvcnx8YS53ZWJraXRNYXRjaGVzU2VsZWN0b3J9dC5leHBvcnRzPW99LHt9XSwyOltmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gbyhlLHQsbixvLGEpe3ZhciByPWkuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBlLmFkZEV2ZW50TGlzdGVuZXIobixyLGEpLHtkZXN0cm95OmZ1bmN0aW9uKCl7ZS5yZW1vdmVFdmVudExpc3RlbmVyKG4scixhKX19fWZ1bmN0aW9uIGkoZSx0LG4sbyl7cmV0dXJuIGZ1bmN0aW9uKG4pe24uZGVsZWdhdGVUYXJnZXQ9YShuLnRhcmdldCx0KSxuLmRlbGVnYXRlVGFyZ2V0JiZvLmNhbGwoZSxuKX19dmFyIGE9ZSgiLi9jbG9zZXN0Iik7dC5leHBvcnRzPW99LHsiLi9jbG9zZXN0IjoxfV0sMzpbZnVuY3Rpb24oZSx0LG4pe24ubm9kZT1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwIT09ZSYmZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50JiYxPT09ZS5ub2RlVHlwZX0sbi5ub2RlTGlzdD1mdW5jdGlvbihlKXt2YXIgdD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSk7cmV0dXJuIHZvaWQgMCE9PWUmJigiW29iamVjdCBOb2RlTGlzdF0iPT09dHx8IltvYmplY3QgSFRNTENvbGxlY3Rpb25dIj09PXQpJiYibGVuZ3RoImluIGUmJigwPT09ZS5sZW5ndGh8fG4ubm9kZShlWzBdKSl9LG4uc3RyaW5nPWZ1bmN0aW9uKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZXx8ZSBpbnN0YW5jZW9mIFN0cmluZ30sbi5mbj1mdW5jdGlvbihlKXt2YXIgdD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSk7cmV0dXJuIltvYmplY3QgRnVuY3Rpb25dIj09PXR9fSx7fV0sNDpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIG8oZSx0LG4pe2lmKCFlJiYhdCYmIW4pdGhyb3cgbmV3IEVycm9yKCJNaXNzaW5nIHJlcXVpcmVkIGFyZ3VtZW50cyIpO2lmKCFzLnN0cmluZyh0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJTZWNvbmQgYXJndW1lbnQgbXVzdCBiZSBhIFN0cmluZyIpO2lmKCFzLmZuKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIlRoaXJkIGFyZ3VtZW50IG11c3QgYmUgYSBGdW5jdGlvbiIpO2lmKHMubm9kZShlKSlyZXR1cm4gaShlLHQsbik7aWYocy5ub2RlTGlzdChlKSlyZXR1cm4gYShlLHQsbik7aWYocy5zdHJpbmcoZSkpcmV0dXJuIHIoZSx0LG4pO3Rocm93IG5ldyBUeXBlRXJyb3IoIkZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBTdHJpbmcsIEhUTUxFbGVtZW50LCBIVE1MQ29sbGVjdGlvbiwgb3IgTm9kZUxpc3QiKX1mdW5jdGlvbiBpKGUsdCxuKXtyZXR1cm4gZS5hZGRFdmVudExpc3RlbmVyKHQsbikse2Rlc3Ryb3k6ZnVuY3Rpb24oKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxuKX19fWZ1bmN0aW9uIGEoZSx0LG4pe3JldHVybiBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGUsZnVuY3Rpb24oZSl7ZS5hZGRFdmVudExpc3RlbmVyKHQsbil9KSx7ZGVzdHJveTpmdW5jdGlvbigpe0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZSxmdW5jdGlvbihlKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxuKX0pfX19ZnVuY3Rpb24gcihlLHQsbil7cmV0dXJuIGMoZG9jdW1lbnQuYm9keSxlLHQsbil9dmFyIHM9ZSgiLi9pcyIpLGM9ZSgiZGVsZWdhdGUiKTt0LmV4cG9ydHM9b30seyIuL2lzIjozLGRlbGVnYXRlOjJ9XSw1OltmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gbyhlKXt2YXIgdDtpZigiU0VMRUNUIj09PWUubm9kZU5hbWUpZS5mb2N1cygpLHQ9ZS52YWx1ZTtlbHNlIGlmKCJJTlBVVCI9PT1lLm5vZGVOYW1lfHwiVEVYVEFSRUEiPT09ZS5ub2RlTmFtZSl7dmFyIG49ZS5oYXNBdHRyaWJ1dGUoInJlYWRvbmx5Iik7bnx8ZS5zZXRBdHRyaWJ1dGUoInJlYWRvbmx5IiwiIiksZS5zZWxlY3QoKSxlLnNldFNlbGVjdGlvblJhbmdlKDAsZS52YWx1ZS5sZW5ndGgpLG58fGUucmVtb3ZlQXR0cmlidXRlKCJyZWFkb25seSIpLHQ9ZS52YWx1ZX1lbHNle2UuaGFzQXR0cmlidXRlKCJjb250ZW50ZWRpdGFibGUiKSYmZS5mb2N1cygpO3ZhciBvPXdpbmRvdy5nZXRTZWxlY3Rpb24oKSxpPWRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7aS5zZWxlY3ROb2RlQ29udGVudHMoZSksby5yZW1vdmVBbGxSYW5nZXMoKSxvLmFkZFJhbmdlKGkpLHQ9by50b1N0cmluZygpfXJldHVybiB0fXQuZXhwb3J0cz1vfSx7fV0sNjpbZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIG8oKXt9by5wcm90b3R5cGU9e29uOmZ1bmN0aW9uKGUsdCxuKXt2YXIgbz10aGlzLmV8fCh0aGlzLmU9e30pO3JldHVybihvW2VdfHwob1tlXT1bXSkpLnB1c2goe2ZuOnQsY3R4Om59KSx0aGlzfSxvbmNlOmZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiBvKCl7aS5vZmYoZSxvKSx0LmFwcGx5KG4sYXJndW1lbnRzKX12YXIgaT10aGlzO3JldHVybiBvLl89dCx0aGlzLm9uKGUsbyxuKX0sZW1pdDpmdW5jdGlvbihlKXt2YXIgdD1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSxuPSgodGhpcy5lfHwodGhpcy5lPXt9KSlbZV18fFtdKS5zbGljZSgpLG89MCxpPW4ubGVuZ3RoO2ZvcihvO288aTtvKyspbltvXS5mbi5hcHBseShuW29dLmN0eCx0KTtyZXR1cm4gdGhpc30sb2ZmOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5lfHwodGhpcy5lPXt9KSxvPW5bZV0saT1bXTtpZihvJiZ0KWZvcih2YXIgYT0wLHI9by5sZW5ndGg7YTxyO2ErKylvW2FdLmZuIT09dCYmb1thXS5mbi5fIT09dCYmaS5wdXNoKG9bYV0pO3JldHVybiBpLmxlbmd0aD9uW2VdPWk6ZGVsZXRlIG5bZV0sdGhpc319LHQuZXhwb3J0cz1vfSx7fV0sNzpbZnVuY3Rpb24odCxuLG8peyFmdW5jdGlvbihpLGEpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlLmFtZCllKFsibW9kdWxlIiwic2VsZWN0Il0sYSk7ZWxzZSBpZigidW5kZWZpbmVkIiE9dHlwZW9mIG8pYShuLHQoInNlbGVjdCIpKTtlbHNle3ZhciByPXtleHBvcnRzOnt9fTthKHIsaS5zZWxlY3QpLGkuY2xpcGJvYXJkQWN0aW9uPXIuZXhwb3J0c319KHRoaXMsZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6eyJkZWZhdWx0IjplfX1mdW5jdGlvbiBvKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9dmFyIGk9bih0KSxhPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgbz10W25dO28uZW51bWVyYWJsZT1vLmVudW1lcmFibGV8fCExLG8uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBvJiYoby53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsby5rZXksbyl9fXJldHVybiBmdW5jdGlvbih0LG4sbyl7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksbyYmZSh0LG8pLHR9fSgpLHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe28odGhpcyxlKSx0aGlzLnJlc29sdmVPcHRpb25zKHQpLHRoaXMuaW5pdFNlbGVjdGlvbigpfXJldHVybiByKGUsW3trZXk6InJlc29sdmVPcHRpb25zIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fTt0aGlzLmFjdGlvbj1lLmFjdGlvbix0aGlzLmNvbnRhaW5lcj1lLmNvbnRhaW5lcix0aGlzLmVtaXR0ZXI9ZS5lbWl0dGVyLHRoaXMudGFyZ2V0PWUudGFyZ2V0LHRoaXMudGV4dD1lLnRleHQsdGhpcy50cmlnZ2VyPWUudHJpZ2dlcix0aGlzLnNlbGVjdGVkVGV4dD0iIn19LHtrZXk6ImluaXRTZWxlY3Rpb24iLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy50ZXh0P3RoaXMuc2VsZWN0RmFrZSgpOnRoaXMudGFyZ2V0JiZ0aGlzLnNlbGVjdFRhcmdldCgpfX0se2tleToic2VsZWN0RmFrZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9InJ0bCI9PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoImRpciIpO3RoaXMucmVtb3ZlRmFrZSgpLHRoaXMuZmFrZUhhbmRsZXJDYWxsYmFjaz1mdW5jdGlvbigpe3JldHVybiBlLnJlbW92ZUZha2UoKX0sdGhpcy5mYWtlSGFuZGxlcj10aGlzLmNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5mYWtlSGFuZGxlckNhbGxiYWNrKXx8ITAsdGhpcy5mYWtlRWxlbT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZXh0YXJlYSIpLHRoaXMuZmFrZUVsZW0uc3R5bGUuZm9udFNpemU9IjEycHQiLHRoaXMuZmFrZUVsZW0uc3R5bGUuYm9yZGVyPSIwIix0aGlzLmZha2VFbGVtLnN0eWxlLnBhZGRpbmc9IjAiLHRoaXMuZmFrZUVsZW0uc3R5bGUubWFyZ2luPSIwIix0aGlzLmZha2VFbGVtLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsdGhpcy5mYWtlRWxlbS5zdHlsZVt0PyJyaWdodCI6ImxlZnQiXT0iLTk5OTlweCI7dmFyIG49d2luZG93LnBhZ2VZT2Zmc2V0fHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wO3RoaXMuZmFrZUVsZW0uc3R5bGUudG9wPW4rInB4Iix0aGlzLmZha2VFbGVtLnNldEF0dHJpYnV0ZSgicmVhZG9ubHkiLCIiKSx0aGlzLmZha2VFbGVtLnZhbHVlPXRoaXMudGV4dCx0aGlzLmNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLmZha2VFbGVtKSx0aGlzLnNlbGVjdGVkVGV4dD0oMCxpWyJkZWZhdWx0Il0pKHRoaXMuZmFrZUVsZW0pLHRoaXMuY29weVRleHQoKX19LHtrZXk6InJlbW92ZUZha2UiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5mYWtlSGFuZGxlciYmKHRoaXMuY29udGFpbmVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNrIix0aGlzLmZha2VIYW5kbGVyQ2FsbGJhY2spLHRoaXMuZmFrZUhhbmRsZXI9bnVsbCx0aGlzLmZha2VIYW5kbGVyQ2FsbGJhY2s9bnVsbCksdGhpcy5mYWtlRWxlbSYmKHRoaXMuY29udGFpbmVyLnJlbW92ZUNoaWxkKHRoaXMuZmFrZUVsZW0pLHRoaXMuZmFrZUVsZW09bnVsbCl9fSx7a2V5OiJzZWxlY3RUYXJnZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5zZWxlY3RlZFRleHQ9KDAsaVsiZGVmYXVsdCJdKSh0aGlzLnRhcmdldCksdGhpcy5jb3B5VGV4dCgpfX0se2tleToiY29weVRleHQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dm9pZCAwO3RyeXtlPWRvY3VtZW50LmV4ZWNDb21tYW5kKHRoaXMuYWN0aW9uKX1jYXRjaCh0KXtlPSExfXRoaXMuaGFuZGxlUmVzdWx0KGUpfX0se2tleToiaGFuZGxlUmVzdWx0Iix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLmVtaXR0ZXIuZW1pdChlPyJzdWNjZXNzIjoiZXJyb3IiLHthY3Rpb246dGhpcy5hY3Rpb24sdGV4dDp0aGlzLnNlbGVjdGVkVGV4dCx0cmlnZ2VyOnRoaXMudHJpZ2dlcixjbGVhclNlbGVjdGlvbjp0aGlzLmNsZWFyU2VsZWN0aW9uLmJpbmQodGhpcyl9KX19LHtrZXk6ImNsZWFyU2VsZWN0aW9uIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMudHJpZ2dlciYmdGhpcy50cmlnZ2VyLmZvY3VzKCksd2luZG93LmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpfX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUZha2UoKX19LHtrZXk6ImFjdGlvbiIsc2V0OmZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOiJjb3B5IjtpZih0aGlzLl9hY3Rpb249ZSwiY29weSIhPT10aGlzLl9hY3Rpb24mJiJjdXQiIT09dGhpcy5fYWN0aW9uKXRocm93IG5ldyBFcnJvcignSW52YWxpZCAiYWN0aW9uIiB2YWx1ZSwgdXNlIGVpdGhlciAiY29weSIgb3IgImN1dCInKX0sZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FjdGlvbn19LHtrZXk6InRhcmdldCIsc2V0OmZ1bmN0aW9uKGUpe2lmKHZvaWQgMCE9PWUpe2lmKCFlfHwib2JqZWN0IiE9PSgidW5kZWZpbmVkIj09dHlwZW9mIGU/InVuZGVmaW5lZCI6YShlKSl8fDEhPT1lLm5vZGVUeXBlKXRocm93IG5ldyBFcnJvcignSW52YWxpZCAidGFyZ2V0IiB2YWx1ZSwgdXNlIGEgdmFsaWQgRWxlbWVudCcpO2lmKCJjb3B5Ij09PXRoaXMuYWN0aW9uJiZlLmhhc0F0dHJpYnV0ZSgiZGlzYWJsZWQiKSl0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgInRhcmdldCIgYXR0cmlidXRlLiBQbGVhc2UgdXNlICJyZWFkb25seSIgaW5zdGVhZCBvZiAiZGlzYWJsZWQiIGF0dHJpYnV0ZScpO2lmKCJjdXQiPT09dGhpcy5hY3Rpb24mJihlLmhhc0F0dHJpYnV0ZSgicmVhZG9ubHkiKXx8ZS5oYXNBdHRyaWJ1dGUoImRpc2FibGVkIikpKXRocm93IG5ldyBFcnJvcignSW52YWxpZCAidGFyZ2V0IiBhdHRyaWJ1dGUuIFlvdSBjYW5cJ3QgY3V0IHRleHQgZnJvbSBlbGVtZW50cyB3aXRoICJyZWFkb25seSIgb3IgImRpc2FibGVkIiBhdHRyaWJ1dGVzJyk7dGhpcy5fdGFyZ2V0PWV9fSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdGFyZ2V0fX1dKSxlfSgpO2UuZXhwb3J0cz1zfSl9LHtzZWxlY3Q6NX1dLDg6W2Z1bmN0aW9uKHQsbixvKXshZnVuY3Rpb24oaSxhKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgZSYmZS5hbWQpZShbIm1vZHVsZSIsIi4vY2xpcGJvYXJkLWFjdGlvbiIsInRpbnktZW1pdHRlciIsImdvb2QtbGlzdGVuZXIiXSxhKTtlbHNlIGlmKCJ1bmRlZmluZWQiIT10eXBlb2YgbylhKG4sdCgiLi9jbGlwYm9hcmQtYWN0aW9uIiksdCgidGlueS1lbWl0dGVyIiksdCgiZ29vZC1saXN0ZW5lciIpKTtlbHNle3ZhciByPXtleHBvcnRzOnt9fTthKHIsaS5jbGlwYm9hcmRBY3Rpb24saS50aW55RW1pdHRlcixpLmdvb2RMaXN0ZW5lciksaS5jbGlwYm9hcmQ9ci5leHBvcnRzfX0odGhpcyxmdW5jdGlvbihlLHQsbixvKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6eyJkZWZhdWx0IjplfX1mdW5jdGlvbiBhKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gcihlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZTp0fWZ1bmN0aW9uIHMoZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfWZ1bmN0aW9uIGMoZSx0KXt2YXIgbj0iZGF0YS1jbGlwYm9hcmQtIitlO2lmKHQuaGFzQXR0cmlidXRlKG4pKXJldHVybiB0LmdldEF0dHJpYnV0ZShuKX12YXIgbD1pKHQpLHU9aShuKSxkPWkobyksZj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0saD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIG89dFtuXTtvLmVudW1lcmFibGU9by5lbnVtZXJhYmxlfHwhMSxvLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gbyYmKG8ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG8ua2V5LG8pfX1yZXR1cm4gZnVuY3Rpb24odCxuLG8pe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLG8mJmUodCxvKSx0fX0oKSxwPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSxuKXthKHRoaXMsdCk7dmFyIG89cih0aGlzLCh0Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsKHRoaXMpKTtyZXR1cm4gby5yZXNvbHZlT3B0aW9ucyhuKSxvLmxpc3RlbkNsaWNrKGUpLG99cmV0dXJuIHModCxlKSxoKHQsW3trZXk6InJlc29sdmVPcHRpb25zIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fTt0aGlzLmFjdGlvbj0iZnVuY3Rpb24iPT10eXBlb2YgZS5hY3Rpb24/ZS5hY3Rpb246dGhpcy5kZWZhdWx0QWN0aW9uLHRoaXMudGFyZ2V0PSJmdW5jdGlvbiI9PXR5cGVvZiBlLnRhcmdldD9lLnRhcmdldDp0aGlzLmRlZmF1bHRUYXJnZXQsdGhpcy50ZXh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlLnRleHQ/ZS50ZXh0OnRoaXMuZGVmYXVsdFRleHQsdGhpcy5jb250YWluZXI9Im9iamVjdCI9PT1mKGUuY29udGFpbmVyKT9lLmNvbnRhaW5lcjpkb2N1bWVudC5ib2R5fX0se2tleToibGlzdGVuQ2xpY2siLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7dGhpcy5saXN0ZW5lcj0oMCxkWyJkZWZhdWx0Il0pKGUsImNsaWNrIixmdW5jdGlvbihlKXtyZXR1cm4gdC5vbkNsaWNrKGUpfSl9fSx7a2V5OiJvbkNsaWNrIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLmRlbGVnYXRlVGFyZ2V0fHxlLmN1cnJlbnRUYXJnZXQ7dGhpcy5jbGlwYm9hcmRBY3Rpb24mJih0aGlzLmNsaXBib2FyZEFjdGlvbj1udWxsKSx0aGlzLmNsaXBib2FyZEFjdGlvbj1uZXcgbFsiZGVmYXVsdCJdKHthY3Rpb246dGhpcy5hY3Rpb24odCksdGFyZ2V0OnRoaXMudGFyZ2V0KHQpLHRleHQ6dGhpcy50ZXh0KHQpLGNvbnRhaW5lcjp0aGlzLmNvbnRhaW5lcix0cmlnZ2VyOnQsZW1pdHRlcjp0aGlzfSl9fSx7a2V5OiJkZWZhdWx0QWN0aW9uIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gYygiYWN0aW9uIixlKX19LHtrZXk6ImRlZmF1bHRUYXJnZXQiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWMoInRhcmdldCIsZSk7aWYodClyZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0KX19LHtrZXk6ImRlZmF1bHRUZXh0Iix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gYygidGV4dCIsZSl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMubGlzdGVuZXIuZGVzdHJveSgpLHRoaXMuY2xpcGJvYXJkQWN0aW9uJiYodGhpcy5jbGlwYm9hcmRBY3Rpb24uZGVzdHJveSgpLHRoaXMuY2xpcGJvYXJkQWN0aW9uPW51bGwpfX1dLFt7a2V5OiJpc1N1cHBvcnRlZCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06WyJjb3B5IiwiY3V0Il0sdD0ic3RyaW5nIj09dHlwZW9mIGU/W2VdOmUsbj0hIWRvY3VtZW50LnF1ZXJ5Q29tbWFuZFN1cHBvcnRlZDtyZXR1cm4gdC5mb3JFYWNoKGZ1bmN0aW9uKGUpe249biYmISFkb2N1bWVudC5xdWVyeUNvbW1hbmRTdXBwb3J0ZWQoZSl9KSxufX1dKSx0fSh1WyJkZWZhdWx0Il0pO2UuZXhwb3J0cz1wfSl9LHsiLi9jbGlwYm9hcmQtYWN0aW9uIjo3LCJnb29kLWxpc3RlbmVyIjo0LCJ0aW55LWVtaXR0ZXIiOjZ9XX0se30sWzhdKSg4KX0pLGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSx0KXtpZighKGUub3JpZ2luYWxFdmVudC50b3VjaGVzLmxlbmd0aD4xKSl7ZS5wcmV2ZW50RGVmYXVsdCgpO3ZhciBuPWUub3JpZ2luYWxFdmVudC5jaGFuZ2VkVG91Y2hlc1swXSxvPWRvY3VtZW50LmNyZWF0ZUV2ZW50KCJNb3VzZUV2ZW50cyIpO28uaW5pdE1vdXNlRXZlbnQodCwhMCwhMCx3aW5kb3csMSxuLnNjcmVlblgsbi5zY3JlZW5ZLG4uY2xpZW50WCxuLmNsaWVudFksITEsITEsITEsITEsMCxudWxsKSxlLnRhcmdldC5kaXNwYXRjaEV2ZW50KG8pfX1pZihlLnN1cHBvcnQudG91Y2g9Im9udG91Y2hlbmQiaW4gZG9jdW1lbnQsZS5zdXBwb3J0LnRvdWNoKXt2YXIgbixvPWUudWkubW91c2UucHJvdG90eXBlLGk9by5fbW91c2VJbml0LGE9by5fbW91c2VEZXN0cm95O28uX3RvdWNoU3RhcnQ9ZnVuY3Rpb24oZSl7dmFyIG89dGhpczshbiYmby5fbW91c2VDYXB0dXJlKGUub3JpZ2luYWxFdmVudC5jaGFuZ2VkVG91Y2hlc1swXSkmJihuPSEwLG8uX3RvdWNoTW92ZWQ9ITEsdChlLCJtb3VzZW92ZXIiKSx0KGUsIm1vdXNlbW92ZSIpLHQoZSwibW91c2Vkb3duIikpfSxvLl90b3VjaE1vdmU9ZnVuY3Rpb24oZSl7biYmKHRoaXMuX3RvdWNoTW92ZWQ9ITAsdChlLCJtb3VzZW1vdmUiKSl9LG8uX3RvdWNoRW5kPWZ1bmN0aW9uKGUpe24mJih0KGUsIm1vdXNldXAiKSx0KGUsIm1vdXNlb3V0IiksdGhpcy5fdG91Y2hNb3ZlZHx8dChlLCJjbGljayIpLG49ITEpfSxvLl9tb3VzZUluaXQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3QuZWxlbWVudC5iaW5kKHt0b3VjaHN0YXJ0OmUucHJveHkodCwiX3RvdWNoU3RhcnQiKSx0b3VjaG1vdmU6ZS5wcm94eSh0LCJfdG91Y2hNb3ZlIiksdG91Y2hlbmQ6ZS5wcm94eSh0LCJfdG91Y2hFbmQiKX0pLGkuY2FsbCh0KX0sby5fbW91c2VEZXN0cm95PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0LmVsZW1lbnQudW5iaW5kKHt0b3VjaHN0YXJ0OmUucHJveHkodCwiX3RvdWNoU3RhcnQiKSx0b3VjaG1vdmU6ZS5wcm94eSh0LCJfdG91Y2hNb3ZlIiksdG91Y2hlbmQ6ZS5wcm94eSh0LCJfdG91Y2hFbmQiKX0pLGEuY2FsbCh0KX19fShqUXVlcnkpOw==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/vendor/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/vendor/jquery.ui.widget.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohIGpRdWVyeSBVSSAtIHYxLjExLjQrQ29tbW9uSlMgLSAyMDE1LTA4LTI4CiogaHR0cDovL2pxdWVyeXVpLmNvbQoqIEluY2x1ZGVzOiB3aWRnZXQuanMKKiBDb3B5cmlnaHQgMjAxNSBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzOyBMaWNlbnNlZCBNSVQgKi8KCihmdW5jdGlvbiggZmFjdG9yeSApIHsKCWlmICggdHlwZW9mIGRlZmluZSA9PT0gImZ1bmN0aW9uIiAmJiBkZWZpbmUuYW1kICkgewoKCQkvLyBBTUQuIFJlZ2lzdGVyIGFzIGFuIGFub255bW91cyBtb2R1bGUuCgkJZGVmaW5lKFsgImpxdWVyeSIgXSwgZmFjdG9yeSApOwoKCX0gZWxzZSBpZiAoIHR5cGVvZiBleHBvcnRzID09PSAib2JqZWN0IiApIHsKCgkJLy8gTm9kZS9Db21tb25KUwoJCWZhY3RvcnkoIHJlcXVpcmUoICJqcXVlcnkiICkgKTsKCgl9IGVsc2UgewoKCQkvLyBCcm93c2VyIGdsb2JhbHMKCQlmYWN0b3J5KCBqUXVlcnkgKTsKCX0KfShmdW5jdGlvbiggJCApIHsKLyohCiAqIGpRdWVyeSBVSSBXaWRnZXQgMS4xMS40CiAqIGh0dHA6Ly9qcXVlcnl1aS5jb20KICoKICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnMKICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLgogKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCiAqCiAqIGh0dHA6Ly9hcGkuanF1ZXJ5dWkuY29tL2pRdWVyeS53aWRnZXQvCiAqLwoKCnZhciB3aWRnZXRfdXVpZCA9IDAsCgl3aWRnZXRfc2xpY2UgPSBBcnJheS5wcm90b3R5cGUuc2xpY2U7CgokLmNsZWFuRGF0YSA9IChmdW5jdGlvbiggb3JpZyApIHsKCXJldHVybiBmdW5jdGlvbiggZWxlbXMgKSB7CgkJdmFyIGV2ZW50cywgZWxlbSwgaTsKCQlmb3IgKCBpID0gMDsgKGVsZW0gPSBlbGVtc1tpXSkgIT0gbnVsbDsgaSsrICkgewoJCQl0cnkgewoKCQkJCS8vIE9ubHkgdHJpZ2dlciByZW1vdmUgd2hlbiBuZWNlc3NhcnkgdG8gc2F2ZSB0aW1lCgkJCQlldmVudHMgPSAkLl9kYXRhKCBlbGVtLCAiZXZlbnRzIiApOwoJCQkJaWYgKCBldmVudHMgJiYgZXZlbnRzLnJlbW92ZSApIHsKCQkJCQkkKCBlbGVtICkudHJpZ2dlckhhbmRsZXIoICJyZW1vdmUiICk7CgkJCQl9CgoJCQkvLyBodHRwOi8vYnVncy5qcXVlcnkuY29tL3RpY2tldC84MjM1CgkJCX0gY2F0Y2ggKCBlICkge30KCQl9CgkJb3JpZyggZWxlbXMgKTsKCX07Cn0pKCAkLmNsZWFuRGF0YSApOwoKJC53aWRnZXQgPSBmdW5jdGlvbiggbmFtZSwgYmFzZSwgcHJvdG90eXBlICkgewoJdmFyIGZ1bGxOYW1lLCBleGlzdGluZ0NvbnN0cnVjdG9yLCBjb25zdHJ1Y3RvciwgYmFzZVByb3RvdHlwZSwKCQkvLyBwcm94aWVkUHJvdG90eXBlIGFsbG93cyB0aGUgcHJvdmlkZWQgcHJvdG90eXBlIHRvIHJlbWFpbiB1bm1vZGlmaWVkCgkJLy8gc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBhcyBhIG1peGluIGZvciBtdWx0aXBsZSB3aWRnZXRzICgjODg3NikKCQlwcm94aWVkUHJvdG90eXBlID0ge30sCgkJbmFtZXNwYWNlID0gbmFtZS5zcGxpdCggIi4iIClbIDAgXTsKCgluYW1lID0gbmFtZS5zcGxpdCggIi4iIClbIDEgXTsKCWZ1bGxOYW1lID0gbmFtZXNwYWNlICsgIi0iICsgbmFtZTsKCglpZiAoICFwcm90b3R5cGUgKSB7CgkJcHJvdG90eXBlID0gYmFzZTsKCQliYXNlID0gJC5XaWRnZXQ7Cgl9CgoJLy8gY3JlYXRlIHNlbGVjdG9yIGZvciBwbHVnaW4KCSQuZXhwclsgIjoiIF1bIGZ1bGxOYW1lLnRvTG93ZXJDYXNlKCkgXSA9IGZ1bmN0aW9uKCBlbGVtICkgewoJCXJldHVybiAhISQuZGF0YSggZWxlbSwgZnVsbE5hbWUgKTsKCX07CgoJJFsgbmFtZXNwYWNlIF0gPSAkWyBuYW1lc3BhY2UgXSB8fCB7fTsKCWV4aXN0aW5nQ29uc3RydWN0b3IgPSAkWyBuYW1lc3BhY2UgXVsgbmFtZSBdOwoJY29uc3RydWN0b3IgPSAkWyBuYW1lc3BhY2UgXVsgbmFtZSBdID0gZnVuY3Rpb24oIG9wdGlvbnMsIGVsZW1lbnQgKSB7CgkJLy8gYWxsb3cgaW5zdGFudGlhdGlvbiB3aXRob3V0ICJuZXciIGtleXdvcmQKCQlpZiAoICF0aGlzLl9jcmVhdGVXaWRnZXQgKSB7CgkJCXJldHVybiBuZXcgY29uc3RydWN0b3IoIG9wdGlvbnMsIGVsZW1lbnQgKTsKCQl9CgoJCS8vIGFsbG93IGluc3RhbnRpYXRpb24gd2l0aG91dCBpbml0aWFsaXppbmcgZm9yIHNpbXBsZSBpbmhlcml0YW5jZQoJCS8vIG11c3QgdXNlICJuZXciIGtleXdvcmQgKHRoZSBjb2RlIGFib3ZlIGFsd2F5cyBwYXNzZXMgYXJncykKCQlpZiAoIGFyZ3VtZW50cy5sZW5ndGggKSB7CgkJCXRoaXMuX2NyZWF0ZVdpZGdldCggb3B0aW9ucywgZWxlbWVudCApOwoJCX0KCX07CgkvLyBleHRlbmQgd2l0aCB0aGUgZXhpc3RpbmcgY29uc3RydWN0b3IgdG8gY2Fycnkgb3ZlciBhbnkgc3RhdGljIHByb3BlcnRpZXMKCSQuZXh0ZW5kKCBjb25zdHJ1Y3RvciwgZXhpc3RpbmdDb25zdHJ1Y3RvciwgewoJCXZlcnNpb246IHByb3RvdHlwZS52ZXJzaW9uLAoJCS8vIGNvcHkgdGhlIG9iamVjdCB1c2VkIHRvIGNyZWF0ZSB0aGUgcHJvdG90eXBlIGluIGNhc2Ugd2UgbmVlZCB0bwoJCS8vIHJlZGVmaW5lIHRoZSB3aWRnZXQgbGF0ZXIKCQlfcHJvdG86ICQuZXh0ZW5kKCB7fSwgcHJvdG90eXBlICksCgkJLy8gdHJhY2sgd2lkZ2V0cyB0aGF0IGluaGVyaXQgZnJvbSB0aGlzIHdpZGdldCBpbiBjYXNlIHRoaXMgd2lkZ2V0IGlzCgkJLy8gcmVkZWZpbmVkIGFmdGVyIGEgd2lkZ2V0IGluaGVyaXRzIGZyb20gaXQKCQlfY2hpbGRDb25zdHJ1Y3RvcnM6IFtdCgl9KTsKCgliYXNlUHJvdG90eXBlID0gbmV3IGJhc2UoKTsKCS8vIHdlIG5lZWQgdG8gbWFrZSB0aGUgb3B0aW9ucyBoYXNoIGEgcHJvcGVydHkgZGlyZWN0bHkgb24gdGhlIG5ldyBpbnN0YW5jZQoJLy8gb3RoZXJ3aXNlIHdlJ2xsIG1vZGlmeSB0aGUgb3B0aW9ucyBoYXNoIG9uIHRoZSBwcm90b3R5cGUgdGhhdCB3ZSdyZQoJLy8gaW5oZXJpdGluZyBmcm9tCgliYXNlUHJvdG90eXBlLm9wdGlvbnMgPSAkLndpZGdldC5leHRlbmQoIHt9LCBiYXNlUHJvdG90eXBlLm9wdGlvbnMgKTsKCSQuZWFjaCggcHJvdG90eXBlLCBmdW5jdGlvbiggcHJvcCwgdmFsdWUgKSB7CgkJaWYgKCAhJC5pc0Z1bmN0aW9uKCB2YWx1ZSApICkgewoJCQlwcm94aWVkUHJvdG90eXBlWyBwcm9wIF0gPSB2YWx1ZTsKCQkJcmV0dXJuOwoJCX0KCQlwcm94aWVkUHJvdG90eXBlWyBwcm9wIF0gPSAoZnVuY3Rpb24oKSB7CgkJCXZhciBfc3VwZXIgPSBmdW5jdGlvbigpIHsKCQkJCQlyZXR1cm4gYmFzZS5wcm90b3R5cGVbIHByb3AgXS5hcHBseSggdGhpcywgYXJndW1lbnRzICk7CgkJCQl9LAoJCQkJX3N1cGVyQXBwbHkgPSBmdW5jdGlvbiggYXJncyApIHsKCQkJCQlyZXR1cm4gYmFzZS5wcm90b3R5cGVbIHByb3AgXS5hcHBseSggdGhpcywgYXJncyApOwoJCQkJfTsKCQkJcmV0dXJuIGZ1bmN0aW9uKCkgewoJCQkJdmFyIF9fc3VwZXIgPSB0aGlzLl9zdXBlciwKCQkJCQlfX3N1cGVyQXBwbHkgPSB0aGlzLl9zdXBlckFwcGx5LAoJCQkJCXJldHVyblZhbHVlOwoKCQkJCXRoaXMuX3N1cGVyID0gX3N1cGVyOwoJCQkJdGhpcy5fc3VwZXJBcHBseSA9IF9zdXBlckFwcGx5OwoKCQkJCXJldHVyblZhbHVlID0gdmFsdWUuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApOwoKCQkJCXRoaXMuX3N1cGVyID0gX19zdXBlcjsKCQkJCXRoaXMuX3N1cGVyQXBwbHkgPSBfX3N1cGVyQXBwbHk7CgoJCQkJcmV0dXJuIHJldHVyblZhbHVlOwoJCQl9OwoJCX0pKCk7Cgl9KTsKCWNvbnN0cnVjdG9yLnByb3RvdHlwZSA9ICQud2lkZ2V0LmV4dGVuZCggYmFzZVByb3RvdHlwZSwgewoJCS8vIFRPRE86IHJlbW92ZSBzdXBwb3J0IGZvciB3aWRnZXRFdmVudFByZWZpeAoJCS8vIGFsd2F5cyB1c2UgdGhlIG5hbWUgKyBhIGNvbG9uIGFzIHRoZSBwcmVmaXgsIGUuZy4sIGRyYWdnYWJsZTpzdGFydAoJCS8vIGRvbid0IHByZWZpeCBmb3Igd2lkZ2V0cyB0aGF0IGFyZW4ndCBET00tYmFzZWQKCQl3aWRnZXRFdmVudFByZWZpeDogZXhpc3RpbmdDb25zdHJ1Y3RvciA/IChiYXNlUHJvdG90eXBlLndpZGdldEV2ZW50UHJlZml4IHx8IG5hbWUpIDogbmFtZQoJfSwgcHJveGllZFByb3RvdHlwZSwgewoJCWNvbnN0cnVjdG9yOiBjb25zdHJ1Y3RvciwKCQluYW1lc3BhY2U6IG5hbWVzcGFjZSwKCQl3aWRnZXROYW1lOiBuYW1lLAoJCXdpZGdldEZ1bGxOYW1lOiBmdWxsTmFtZQoJfSk7CgoJLy8gSWYgdGhpcyB3aWRnZXQgaXMgYmVpbmcgcmVkZWZpbmVkIHRoZW4gd2UgbmVlZCB0byBmaW5kIGFsbCB3aWRnZXRzIHRoYXQKCS8vIGFyZSBpbmhlcml0aW5nIGZyb20gaXQgYW5kIHJlZGVmaW5lIGFsbCBvZiB0aGVtIHNvIHRoYXQgdGhleSBpbmhlcml0IGZyb20KCS8vIHRoZSBuZXcgdmVyc2lvbiBvZiB0aGlzIHdpZGdldC4gV2UncmUgZXNzZW50aWFsbHkgdHJ5aW5nIHRvIHJlcGxhY2Ugb25lCgkvLyBsZXZlbCBpbiB0aGUgcHJvdG90eXBlIGNoYWluLgoJaWYgKCBleGlzdGluZ0NvbnN0cnVjdG9yICkgewoJCSQuZWFjaCggZXhpc3RpbmdDb25zdHJ1Y3Rvci5fY2hpbGRDb25zdHJ1Y3RvcnMsIGZ1bmN0aW9uKCBpLCBjaGlsZCApIHsKCQkJdmFyIGNoaWxkUHJvdG90eXBlID0gY2hpbGQucHJvdG90eXBlOwoKCQkJLy8gcmVkZWZpbmUgdGhlIGNoaWxkIHdpZGdldCB1c2luZyB0aGUgc2FtZSBwcm90b3R5cGUgdGhhdCB3YXMKCQkJLy8gb3JpZ2luYWxseSB1c2VkLCBidXQgaW5oZXJpdCBmcm9tIHRoZSBuZXcgdmVyc2lvbiBvZiB0aGUgYmFzZQoJCQkkLndpZGdldCggY2hpbGRQcm90b3R5cGUubmFtZXNwYWNlICsgIi4iICsgY2hpbGRQcm90b3R5cGUud2lkZ2V0TmFtZSwgY29uc3RydWN0b3IsIGNoaWxkLl9wcm90byApOwoJCX0pOwoJCS8vIHJlbW92ZSB0aGUgbGlzdCBvZiBleGlzdGluZyBjaGlsZCBjb25zdHJ1Y3RvcnMgZnJvbSB0aGUgb2xkIGNvbnN0cnVjdG9yCgkJLy8gc28gdGhlIG9sZCBjaGlsZCBjb25zdHJ1Y3RvcnMgY2FuIGJlIGdhcmJhZ2UgY29sbGVjdGVkCgkJZGVsZXRlIGV4aXN0aW5nQ29uc3RydWN0b3IuX2NoaWxkQ29uc3RydWN0b3JzOwoJfSBlbHNlIHsKCQliYXNlLl9jaGlsZENvbnN0cnVjdG9ycy5wdXNoKCBjb25zdHJ1Y3RvciApOwoJfQoKCSQud2lkZ2V0LmJyaWRnZSggbmFtZSwgY29uc3RydWN0b3IgKTsKCglyZXR1cm4gY29uc3RydWN0b3I7Cn07CgokLndpZGdldC5leHRlbmQgPSBmdW5jdGlvbiggdGFyZ2V0ICkgewoJdmFyIGlucHV0ID0gd2lkZ2V0X3NsaWNlLmNhbGwoIGFyZ3VtZW50cywgMSApLAoJCWlucHV0SW5kZXggPSAwLAoJCWlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoLAoJCWtleSwKCQl2YWx1ZTsKCWZvciAoIDsgaW5wdXRJbmRleCA8IGlucHV0TGVuZ3RoOyBpbnB1dEluZGV4KysgKSB7CgkJZm9yICgga2V5IGluIGlucHV0WyBpbnB1dEluZGV4IF0gKSB7CgkJCXZhbHVlID0gaW5wdXRbIGlucHV0SW5kZXggXVsga2V5IF07CgkJCWlmICggaW5wdXRbIGlucHV0SW5kZXggXS5oYXNPd25Qcm9wZXJ0eSgga2V5ICkgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCApIHsKCQkJCS8vIENsb25lIG9iamVjdHMKCQkJCWlmICggJC5pc1BsYWluT2JqZWN0KCB2YWx1ZSApICkgewoJCQkJCXRhcmdldFsga2V5IF0gPSAkLmlzUGxhaW5PYmplY3QoIHRhcmdldFsga2V5IF0gKSA/CgkJCQkJCSQud2lkZ2V0LmV4dGVuZCgge30sIHRhcmdldFsga2V5IF0sIHZhbHVlICkgOgoJCQkJCQkvLyBEb24ndCBleHRlbmQgc3RyaW5ncywgYXJyYXlzLCBldGMuIHdpdGggb2JqZWN0cwoJCQkJCQkkLndpZGdldC5leHRlbmQoIHt9LCB2YWx1ZSApOwoJCQkJLy8gQ29weSBldmVyeXRoaW5nIGVsc2UgYnkgcmVmZXJlbmNlCgkJCQl9IGVsc2UgewoJCQkJCXRhcmdldFsga2V5IF0gPSB2YWx1ZTsKCQkJCX0KCQkJfQoJCX0KCX0KCXJldHVybiB0YXJnZXQ7Cn07CgokLndpZGdldC5icmlkZ2UgPSBmdW5jdGlvbiggbmFtZSwgb2JqZWN0ICkgewoJdmFyIGZ1bGxOYW1lID0gb2JqZWN0LnByb3RvdHlwZS53aWRnZXRGdWxsTmFtZSB8fCBuYW1lOwoJJC5mblsgbmFtZSBdID0gZnVuY3Rpb24oIG9wdGlvbnMgKSB7CgkJdmFyIGlzTWV0aG9kQ2FsbCA9IHR5cGVvZiBvcHRpb25zID09PSAic3RyaW5nIiwKCQkJYXJncyA9IHdpZGdldF9zbGljZS5jYWxsKCBhcmd1bWVudHMsIDEgKSwKCQkJcmV0dXJuVmFsdWUgPSB0aGlzOwoKCQlpZiAoIGlzTWV0aG9kQ2FsbCApIHsKCQkJdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewoJCQkJdmFyIG1ldGhvZFZhbHVlLAoJCQkJCWluc3RhbmNlID0gJC5kYXRhKCB0aGlzLCBmdWxsTmFtZSApOwoJCQkJaWYgKCBvcHRpb25zID09PSAiaW5zdGFuY2UiICkgewoJCQkJCXJldHVyblZhbHVlID0gaW5zdGFuY2U7CgkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJfQoJCQkJaWYgKCAhaW5zdGFuY2UgKSB7CgkJCQkJcmV0dXJuICQuZXJyb3IoICJjYW5ub3QgY2FsbCBtZXRob2RzIG9uICIgKyBuYW1lICsgIiBwcmlvciB0byBpbml0aWFsaXphdGlvbjsgIiArCgkJCQkJCSJhdHRlbXB0ZWQgdG8gY2FsbCBtZXRob2QgJyIgKyBvcHRpb25zICsgIiciICk7CgkJCQl9CgkJCQlpZiAoICEkLmlzRnVuY3Rpb24oIGluc3RhbmNlW29wdGlvbnNdICkgfHwgb3B0aW9ucy5jaGFyQXQoIDAgKSA9PT0gIl8iICkgewoJCQkJCXJldHVybiAkLmVycm9yKCAibm8gc3VjaCBtZXRob2QgJyIgKyBvcHRpb25zICsgIicgZm9yICIgKyBuYW1lICsgIiB3aWRnZXQgaW5zdGFuY2UiICk7CgkJCQl9CgkJCQltZXRob2RWYWx1ZSA9IGluc3RhbmNlWyBvcHRpb25zIF0uYXBwbHkoIGluc3RhbmNlLCBhcmdzICk7CgkJCQlpZiAoIG1ldGhvZFZhbHVlICE9PSBpbnN0YW5jZSAmJiBtZXRob2RWYWx1ZSAhPT0gdW5kZWZpbmVkICkgewoJCQkJCXJldHVyblZhbHVlID0gbWV0aG9kVmFsdWUgJiYgbWV0aG9kVmFsdWUuanF1ZXJ5ID8KCQkJCQkJcmV0dXJuVmFsdWUucHVzaFN0YWNrKCBtZXRob2RWYWx1ZS5nZXQoKSApIDoKCQkJCQkJbWV0aG9kVmFsdWU7CgkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJfQoJCQl9KTsKCQl9IGVsc2UgewoKCQkJLy8gQWxsb3cgbXVsdGlwbGUgaGFzaGVzIHRvIGJlIHBhc3NlZCBvbiBpbml0CgkJCWlmICggYXJncy5sZW5ndGggKSB7CgkJCQlvcHRpb25zID0gJC53aWRnZXQuZXh0ZW5kLmFwcGx5KCBudWxsLCBbIG9wdGlvbnMgXS5jb25jYXQoYXJncykgKTsKCQkJfQoKCQkJdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewoJCQkJdmFyIGluc3RhbmNlID0gJC5kYXRhKCB0aGlzLCBmdWxsTmFtZSApOwoJCQkJaWYgKCBpbnN0YW5jZSApIHsKCQkJCQlpbnN0YW5jZS5vcHRpb24oIG9wdGlvbnMgfHwge30gKTsKCQkJCQlpZiAoIGluc3RhbmNlLl9pbml0ICkgewoJCQkJCQlpbnN0YW5jZS5faW5pdCgpOwoJCQkJCX0KCQkJCX0gZWxzZSB7CgkJCQkJJC5kYXRhKCB0aGlzLCBmdWxsTmFtZSwgbmV3IG9iamVjdCggb3B0aW9ucywgdGhpcyApICk7CgkJCQl9CgkJCX0pOwoJCX0KCgkJcmV0dXJuIHJldHVyblZhbHVlOwoJfTsKfTsKCiQuV2lkZ2V0ID0gZnVuY3Rpb24oIC8qIG9wdGlvbnMsIGVsZW1lbnQgKi8gKSB7fTsKJC5XaWRnZXQuX2NoaWxkQ29uc3RydWN0b3JzID0gW107CgokLldpZGdldC5wcm90b3R5cGUgPSB7Cgl3aWRnZXROYW1lOiAid2lkZ2V0IiwKCXdpZGdldEV2ZW50UHJlZml4OiAiIiwKCWRlZmF1bHRFbGVtZW50OiAiPGRpdj4iLAoJb3B0aW9uczogewoJCWRpc2FibGVkOiBmYWxzZSwKCgkJLy8gY2FsbGJhY2tzCgkJY3JlYXRlOiBudWxsCgl9LAoJX2NyZWF0ZVdpZGdldDogZnVuY3Rpb24oIG9wdGlvbnMsIGVsZW1lbnQgKSB7CgkJZWxlbWVudCA9ICQoIGVsZW1lbnQgfHwgdGhpcy5kZWZhdWx0RWxlbWVudCB8fCB0aGlzIClbIDAgXTsKCQl0aGlzLmVsZW1lbnQgPSAkKCBlbGVtZW50ICk7CgkJdGhpcy51dWlkID0gd2lkZ2V0X3V1aWQrKzsKCQl0aGlzLmV2ZW50TmFtZXNwYWNlID0gIi4iICsgdGhpcy53aWRnZXROYW1lICsgdGhpcy51dWlkOwoKCQl0aGlzLmJpbmRpbmdzID0gJCgpOwoJCXRoaXMuaG92ZXJhYmxlID0gJCgpOwoJCXRoaXMuZm9jdXNhYmxlID0gJCgpOwoKCQlpZiAoIGVsZW1lbnQgIT09IHRoaXMgKSB7CgkJCSQuZGF0YSggZWxlbWVudCwgdGhpcy53aWRnZXRGdWxsTmFtZSwgdGhpcyApOwoJCQl0aGlzLl9vbiggdHJ1ZSwgdGhpcy5lbGVtZW50LCB7CgkJCQlyZW1vdmU6IGZ1bmN0aW9uKCBldmVudCApIHsKCQkJCQlpZiAoIGV2ZW50LnRhcmdldCA9PT0gZWxlbWVudCApIHsKCQkJCQkJdGhpcy5kZXN0cm95KCk7CgkJCQkJfQoJCQkJfQoJCQl9KTsKCQkJdGhpcy5kb2N1bWVudCA9ICQoIGVsZW1lbnQuc3R5bGUgPwoJCQkJLy8gZWxlbWVudCB3aXRoaW4gdGhlIGRvY3VtZW50CgkJCQllbGVtZW50Lm93bmVyRG9jdW1lbnQgOgoJCQkJLy8gZWxlbWVudCBpcyB3aW5kb3cgb3IgZG9jdW1lbnQKCQkJCWVsZW1lbnQuZG9jdW1lbnQgfHwgZWxlbWVudCApOwoJCQl0aGlzLndpbmRvdyA9ICQoIHRoaXMuZG9jdW1lbnRbMF0uZGVmYXVsdFZpZXcgfHwgdGhpcy5kb2N1bWVudFswXS5wYXJlbnRXaW5kb3cgKTsKCQl9CgoJCXRoaXMub3B0aW9ucyA9ICQud2lkZ2V0LmV4dGVuZCgge30sCgkJCXRoaXMub3B0aW9ucywKCQkJdGhpcy5fZ2V0Q3JlYXRlT3B0aW9ucygpLAoJCQlvcHRpb25zICk7CgoJCXRoaXMuX2NyZWF0ZSgpOwoJCXRoaXMuX3RyaWdnZXIoICJjcmVhdGUiLCBudWxsLCB0aGlzLl9nZXRDcmVhdGVFdmVudERhdGEoKSApOwoJCXRoaXMuX2luaXQoKTsKCX0sCglfZ2V0Q3JlYXRlT3B0aW9uczogJC5ub29wLAoJX2dldENyZWF0ZUV2ZW50RGF0YTogJC5ub29wLAoJX2NyZWF0ZTogJC5ub29wLAoJX2luaXQ6ICQubm9vcCwKCglkZXN0cm95OiBmdW5jdGlvbigpIHsKCQl0aGlzLl9kZXN0cm95KCk7CgkJLy8gd2UgY2FuIHByb2JhYmx5IHJlbW92ZSB0aGUgdW5iaW5kIGNhbGxzIGluIDIuMAoJCS8vIGFsbCBldmVudCBiaW5kaW5ncyBzaG91bGQgZ28gdGhyb3VnaCB0aGlzLl9vbigpCgkJdGhpcy5lbGVtZW50CgkJCS51bmJpbmQoIHRoaXMuZXZlbnROYW1lc3BhY2UgKQoJCQkucmVtb3ZlRGF0YSggdGhpcy53aWRnZXRGdWxsTmFtZSApCgkJCS8vIHN1cHBvcnQ6IGpxdWVyeSA8MS42LjMKCQkJLy8gaHR0cDovL2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvOTQxMwoJCQkucmVtb3ZlRGF0YSggJC5jYW1lbENhc2UoIHRoaXMud2lkZ2V0RnVsbE5hbWUgKSApOwoJCXRoaXMud2lkZ2V0KCkKCQkJLnVuYmluZCggdGhpcy5ldmVudE5hbWVzcGFjZSApCgkJCS5yZW1vdmVBdHRyKCAiYXJpYS1kaXNhYmxlZCIgKQoJCQkucmVtb3ZlQ2xhc3MoCgkJCQl0aGlzLndpZGdldEZ1bGxOYW1lICsgIi1kaXNhYmxlZCAiICsKCQkJCSJ1aS1zdGF0ZS1kaXNhYmxlZCIgKTsKCgkJLy8gY2xlYW4gdXAgZXZlbnRzIGFuZCBzdGF0ZXMKCQl0aGlzLmJpbmRpbmdzLnVuYmluZCggdGhpcy5ldmVudE5hbWVzcGFjZSApOwoJCXRoaXMuaG92ZXJhYmxlLnJlbW92ZUNsYXNzKCAidWktc3RhdGUtaG92ZXIiICk7CgkJdGhpcy5mb2N1c2FibGUucmVtb3ZlQ2xhc3MoICJ1aS1zdGF0ZS1mb2N1cyIgKTsKCX0sCglfZGVzdHJveTogJC5ub29wLAoKCXdpZGdldDogZnVuY3Rpb24oKSB7CgkJcmV0dXJuIHRoaXMuZWxlbWVudDsKCX0sCgoJb3B0aW9uOiBmdW5jdGlvbigga2V5LCB2YWx1ZSApIHsKCQl2YXIgb3B0aW9ucyA9IGtleSwKCQkJcGFydHMsCgkJCWN1ck9wdGlvbiwKCQkJaTsKCgkJaWYgKCBhcmd1bWVudHMubGVuZ3RoID09PSAwICkgewoJCQkvLyBkb24ndCByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhlIGludGVybmFsIGhhc2gKCQkJcmV0dXJuICQud2lkZ2V0LmV4dGVuZCgge30sIHRoaXMub3B0aW9ucyApOwoJCX0KCgkJaWYgKCB0eXBlb2Yga2V5ID09PSAic3RyaW5nIiApIHsKCQkJLy8gaGFuZGxlIG5lc3RlZCBrZXlzLCBlLmcuLCAiZm9vLmJhciIgPT4geyBmb286IHsgYmFyOiBfX18gfSB9CgkJCW9wdGlvbnMgPSB7fTsKCQkJcGFydHMgPSBrZXkuc3BsaXQoICIuIiApOwoJCQlrZXkgPSBwYXJ0cy5zaGlmdCgpOwoJCQlpZiAoIHBhcnRzLmxlbmd0aCApIHsKCQkJCWN1ck9wdGlvbiA9IG9wdGlvbnNbIGtleSBdID0gJC53aWRnZXQuZXh0ZW5kKCB7fSwgdGhpcy5vcHRpb25zWyBrZXkgXSApOwoJCQkJZm9yICggaSA9IDA7IGkgPCBwYXJ0cy5sZW5ndGggLSAxOyBpKysgKSB7CgkJCQkJY3VyT3B0aW9uWyBwYXJ0c1sgaSBdIF0gPSBjdXJPcHRpb25bIHBhcnRzWyBpIF0gXSB8fCB7fTsKCQkJCQljdXJPcHRpb24gPSBjdXJPcHRpb25bIHBhcnRzWyBpIF0gXTsKCQkJCX0KCQkJCWtleSA9IHBhcnRzLnBvcCgpOwoJCQkJaWYgKCBhcmd1bWVudHMubGVuZ3RoID09PSAxICkgewoJCQkJCXJldHVybiBjdXJPcHRpb25bIGtleSBdID09PSB1bmRlZmluZWQgPyBudWxsIDogY3VyT3B0aW9uWyBrZXkgXTsKCQkJCX0KCQkJCWN1ck9wdGlvblsga2V5IF0gPSB2YWx1ZTsKCQkJfSBlbHNlIHsKCQkJCWlmICggYXJndW1lbnRzLmxlbmd0aCA9PT0gMSApIHsKCQkJCQlyZXR1cm4gdGhpcy5vcHRpb25zWyBrZXkgXSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IHRoaXMub3B0aW9uc1sga2V5IF07CgkJCQl9CgkJCQlvcHRpb25zWyBrZXkgXSA9IHZhbHVlOwoJCQl9CgkJfQoKCQl0aGlzLl9zZXRPcHRpb25zKCBvcHRpb25zICk7CgoJCXJldHVybiB0aGlzOwoJfSwKCV9zZXRPcHRpb25zOiBmdW5jdGlvbiggb3B0aW9ucyApIHsKCQl2YXIga2V5OwoKCQlmb3IgKCBrZXkgaW4gb3B0aW9ucyApIHsKCQkJdGhpcy5fc2V0T3B0aW9uKCBrZXksIG9wdGlvbnNbIGtleSBdICk7CgkJfQoKCQlyZXR1cm4gdGhpczsKCX0sCglfc2V0T3B0aW9uOiBmdW5jdGlvbigga2V5LCB2YWx1ZSApIHsKCQl0aGlzLm9wdGlvbnNbIGtleSBdID0gdmFsdWU7CgoJCWlmICgga2V5ID09PSAiZGlzYWJsZWQiICkgewoJCQl0aGlzLndpZGdldCgpCgkJCQkudG9nZ2xlQ2xhc3MoIHRoaXMud2lkZ2V0RnVsbE5hbWUgKyAiLWRpc2FibGVkIiwgISF2YWx1ZSApOwoKCQkJLy8gSWYgdGhlIHdpZGdldCBpcyBiZWNvbWluZyBkaXNhYmxlZCwgdGhlbiBub3RoaW5nIGlzIGludGVyYWN0aXZlCgkJCWlmICggdmFsdWUgKSB7CgkJCQl0aGlzLmhvdmVyYWJsZS5yZW1vdmVDbGFzcyggInVpLXN0YXRlLWhvdmVyIiApOwoJCQkJdGhpcy5mb2N1c2FibGUucmVtb3ZlQ2xhc3MoICJ1aS1zdGF0ZS1mb2N1cyIgKTsKCQkJfQoJCX0KCgkJcmV0dXJuIHRoaXM7Cgl9LAoKCWVuYWJsZTogZnVuY3Rpb24oKSB7CgkJcmV0dXJuIHRoaXMuX3NldE9wdGlvbnMoeyBkaXNhYmxlZDogZmFsc2UgfSk7Cgl9LAoJZGlzYWJsZTogZnVuY3Rpb24oKSB7CgkJcmV0dXJuIHRoaXMuX3NldE9wdGlvbnMoeyBkaXNhYmxlZDogdHJ1ZSB9KTsKCX0sCgoJX29uOiBmdW5jdGlvbiggc3VwcHJlc3NEaXNhYmxlZENoZWNrLCBlbGVtZW50LCBoYW5kbGVycyApIHsKCQl2YXIgZGVsZWdhdGVFbGVtZW50LAoJCQlpbnN0YW5jZSA9IHRoaXM7CgoJCS8vIG5vIHN1cHByZXNzRGlzYWJsZWRDaGVjayBmbGFnLCBzaHVmZmxlIGFyZ3VtZW50cwoJCWlmICggdHlwZW9mIHN1cHByZXNzRGlzYWJsZWRDaGVjayAhPT0gImJvb2xlYW4iICkgewoJCQloYW5kbGVycyA9IGVsZW1lbnQ7CgkJCWVsZW1lbnQgPSBzdXBwcmVzc0Rpc2FibGVkQ2hlY2s7CgkJCXN1cHByZXNzRGlzYWJsZWRDaGVjayA9IGZhbHNlOwoJCX0KCgkJLy8gbm8gZWxlbWVudCBhcmd1bWVudCwgc2h1ZmZsZSBhbmQgdXNlIHRoaXMuZWxlbWVudAoJCWlmICggIWhhbmRsZXJzICkgewoJCQloYW5kbGVycyA9IGVsZW1lbnQ7CgkJCWVsZW1lbnQgPSB0aGlzLmVsZW1lbnQ7CgkJCWRlbGVnYXRlRWxlbWVudCA9IHRoaXMud2lkZ2V0KCk7CgkJfSBlbHNlIHsKCQkJZWxlbWVudCA9IGRlbGVnYXRlRWxlbWVudCA9ICQoIGVsZW1lbnQgKTsKCQkJdGhpcy5iaW5kaW5ncyA9IHRoaXMuYmluZGluZ3MuYWRkKCBlbGVtZW50ICk7CgkJfQoKCQkkLmVhY2goIGhhbmRsZXJzLCBmdW5jdGlvbiggZXZlbnQsIGhhbmRsZXIgKSB7CgkJCWZ1bmN0aW9uIGhhbmRsZXJQcm94eSgpIHsKCQkJCS8vIGFsbG93IHdpZGdldHMgdG8gY3VzdG9taXplIHRoZSBkaXNhYmxlZCBoYW5kbGluZwoJCQkJLy8gLSBkaXNhYmxlZCBhcyBhbiBhcnJheSBpbnN0ZWFkIG9mIGJvb2xlYW4KCQkJCS8vIC0gZGlzYWJsZWQgY2xhc3MgYXMgbWV0aG9kIGZvciBkaXNhYmxpbmcgaW5kaXZpZHVhbCBwYXJ0cwoJCQkJaWYgKCAhc3VwcHJlc3NEaXNhYmxlZENoZWNrICYmCgkJCQkJCSggaW5zdGFuY2Uub3B0aW9ucy5kaXNhYmxlZCA9PT0gdHJ1ZSB8fAoJCQkJCQkJJCggdGhpcyApLmhhc0NsYXNzKCAidWktc3RhdGUtZGlzYWJsZWQiICkgKSApIHsKCQkJCQlyZXR1cm47CgkJCQl9CgkJCQlyZXR1cm4gKCB0eXBlb2YgaGFuZGxlciA9PT0gInN0cmluZyIgPyBpbnN0YW5jZVsgaGFuZGxlciBdIDogaGFuZGxlciApCgkJCQkJLmFwcGx5KCBpbnN0YW5jZSwgYXJndW1lbnRzICk7CgkJCX0KCgkJCS8vIGNvcHkgdGhlIGd1aWQgc28gZGlyZWN0IHVuYmluZGluZyB3b3JrcwoJCQlpZiAoIHR5cGVvZiBoYW5kbGVyICE9PSAic3RyaW5nIiApIHsKCQkJCWhhbmRsZXJQcm94eS5ndWlkID0gaGFuZGxlci5ndWlkID0KCQkJCQloYW5kbGVyLmd1aWQgfHwgaGFuZGxlclByb3h5Lmd1aWQgfHwgJC5ndWlkKys7CgkJCX0KCgkJCXZhciBtYXRjaCA9IGV2ZW50Lm1hdGNoKCAvXihbXHc6LV0qKVxzKiguKikkLyApLAoJCQkJZXZlbnROYW1lID0gbWF0Y2hbMV0gKyBpbnN0YW5jZS5ldmVudE5hbWVzcGFjZSwKCQkJCXNlbGVjdG9yID0gbWF0Y2hbMl07CgkJCWlmICggc2VsZWN0b3IgKSB7CgkJCQlkZWxlZ2F0ZUVsZW1lbnQuZGVsZWdhdGUoIHNlbGVjdG9yLCBldmVudE5hbWUsIGhhbmRsZXJQcm94eSApOwoJCQl9IGVsc2UgewoJCQkJZWxlbWVudC5iaW5kKCBldmVudE5hbWUsIGhhbmRsZXJQcm94eSApOwoJCQl9CgkJfSk7Cgl9LAoKCV9vZmY6IGZ1bmN0aW9uKCBlbGVtZW50LCBldmVudE5hbWUgKSB7CgkJZXZlbnROYW1lID0gKGV2ZW50TmFtZSB8fCAiIikuc3BsaXQoICIgIiApLmpvaW4oIHRoaXMuZXZlbnROYW1lc3BhY2UgKyAiICIgKSArCgkJCXRoaXMuZXZlbnROYW1lc3BhY2U7CgkJZWxlbWVudC51bmJpbmQoIGV2ZW50TmFtZSApLnVuZGVsZWdhdGUoIGV2ZW50TmFtZSApOwoKCQkvLyBDbGVhciB0aGUgc3RhY2sgdG8gYXZvaWQgbWVtb3J5IGxlYWtzICgjMTAwNTYpCgkJdGhpcy5iaW5kaW5ncyA9ICQoIHRoaXMuYmluZGluZ3Mubm90KCBlbGVtZW50ICkuZ2V0KCkgKTsKCQl0aGlzLmZvY3VzYWJsZSA9ICQoIHRoaXMuZm9jdXNhYmxlLm5vdCggZWxlbWVudCApLmdldCgpICk7CgkJdGhpcy5ob3ZlcmFibGUgPSAkKCB0aGlzLmhvdmVyYWJsZS5ub3QoIGVsZW1lbnQgKS5nZXQoKSApOwoJfSwKCglfZGVsYXk6IGZ1bmN0aW9uKCBoYW5kbGVyLCBkZWxheSApIHsKCQlmdW5jdGlvbiBoYW5kbGVyUHJveHkoKSB7CgkJCXJldHVybiAoIHR5cGVvZiBoYW5kbGVyID09PSAic3RyaW5nIiA/IGluc3RhbmNlWyBoYW5kbGVyIF0gOiBoYW5kbGVyICkKCQkJCS5hcHBseSggaW5zdGFuY2UsIGFyZ3VtZW50cyApOwoJCX0KCQl2YXIgaW5zdGFuY2UgPSB0aGlzOwoJCXJldHVybiBzZXRUaW1lb3V0KCBoYW5kbGVyUHJveHksIGRlbGF5IHx8IDAgKTsKCX0sCgoJX2hvdmVyYWJsZTogZnVuY3Rpb24oIGVsZW1lbnQgKSB7CgkJdGhpcy5ob3ZlcmFibGUgPSB0aGlzLmhvdmVyYWJsZS5hZGQoIGVsZW1lbnQgKTsKCQl0aGlzLl9vbiggZWxlbWVudCwgewoJCQltb3VzZWVudGVyOiBmdW5jdGlvbiggZXZlbnQgKSB7CgkJCQkkKCBldmVudC5jdXJyZW50VGFyZ2V0ICkuYWRkQ2xhc3MoICJ1aS1zdGF0ZS1ob3ZlciIgKTsKCQkJfSwKCQkJbW91c2VsZWF2ZTogZnVuY3Rpb24oIGV2ZW50ICkgewoJCQkJJCggZXZlbnQuY3VycmVudFRhcmdldCApLnJlbW92ZUNsYXNzKCAidWktc3RhdGUtaG92ZXIiICk7CgkJCX0KCQl9KTsKCX0sCgoJX2ZvY3VzYWJsZTogZnVuY3Rpb24oIGVsZW1lbnQgKSB7CgkJdGhpcy5mb2N1c2FibGUgPSB0aGlzLmZvY3VzYWJsZS5hZGQoIGVsZW1lbnQgKTsKCQl0aGlzLl9vbiggZWxlbWVudCwgewoJCQlmb2N1c2luOiBmdW5jdGlvbiggZXZlbnQgKSB7CgkJCQkkKCBldmVudC5jdXJyZW50VGFyZ2V0ICkuYWRkQ2xhc3MoICJ1aS1zdGF0ZS1mb2N1cyIgKTsKCQkJfSwKCQkJZm9jdXNvdXQ6IGZ1bmN0aW9uKCBldmVudCApIHsKCQkJCSQoIGV2ZW50LmN1cnJlbnRUYXJnZXQgKS5yZW1vdmVDbGFzcyggInVpLXN0YXRlLWZvY3VzIiApOwoJCQl9CgkJfSk7Cgl9LAoKCV90cmlnZ2VyOiBmdW5jdGlvbiggdHlwZSwgZXZlbnQsIGRhdGEgKSB7CgkJdmFyIHByb3AsIG9yaWcsCgkJCWNhbGxiYWNrID0gdGhpcy5vcHRpb25zWyB0eXBlIF07CgoJCWRhdGEgPSBkYXRhIHx8IHt9OwoJCWV2ZW50ID0gJC5FdmVudCggZXZlbnQgKTsKCQlldmVudC50eXBlID0gKCB0eXBlID09PSB0aGlzLndpZGdldEV2ZW50UHJlZml4ID8KCQkJdHlwZSA6CgkJCXRoaXMud2lkZ2V0RXZlbnRQcmVmaXggKyB0eXBlICkudG9Mb3dlckNhc2UoKTsKCQkvLyB0aGUgb3JpZ2luYWwgZXZlbnQgbWF5IGNvbWUgZnJvbSBhbnkgZWxlbWVudAoJCS8vIHNvIHdlIG5lZWQgdG8gcmVzZXQgdGhlIHRhcmdldCBvbiB0aGUgbmV3IGV2ZW50CgkJZXZlbnQudGFyZ2V0ID0gdGhpcy5lbGVtZW50WyAwIF07CgoJCS8vIGNvcHkgb3JpZ2luYWwgZXZlbnQgcHJvcGVydGllcyBvdmVyIHRvIHRoZSBuZXcgZXZlbnQKCQlvcmlnID0gZXZlbnQub3JpZ2luYWxFdmVudDsKCQlpZiAoIG9yaWcgKSB7CgkJCWZvciAoIHByb3AgaW4gb3JpZyApIHsKCQkJCWlmICggISggcHJvcCBpbiBldmVudCApICkgewoJCQkJCWV2ZW50WyBwcm9wIF0gPSBvcmlnWyBwcm9wIF07CgkJCQl9CgkJCX0KCQl9CgoJCXRoaXMuZWxlbWVudC50cmlnZ2VyKCBldmVudCwgZGF0YSApOwoJCXJldHVybiAhKCAkLmlzRnVuY3Rpb24oIGNhbGxiYWNrICkgJiYKCQkJY2FsbGJhY2suYXBwbHkoIHRoaXMuZWxlbWVudFswXSwgWyBldmVudCBdLmNvbmNhdCggZGF0YSApICkgPT09IGZhbHNlIHx8CgkJCWV2ZW50LmlzRGVmYXVsdFByZXZlbnRlZCgpICk7Cgl9Cn07CgokLmVhY2goIHsgc2hvdzogImZhZGVJbiIsIGhpZGU6ICJmYWRlT3V0IiB9LCBmdW5jdGlvbiggbWV0aG9kLCBkZWZhdWx0RWZmZWN0ICkgewoJJC5XaWRnZXQucHJvdG90eXBlWyAiXyIgKyBtZXRob2QgXSA9IGZ1bmN0aW9uKCBlbGVtZW50LCBvcHRpb25zLCBjYWxsYmFjayApIHsKCQlpZiAoIHR5cGVvZiBvcHRpb25zID09PSAic3RyaW5nIiApIHsKCQkJb3B0aW9ucyA9IHsgZWZmZWN0OiBvcHRpb25zIH07CgkJfQoJCXZhciBoYXNPcHRpb25zLAoJCQllZmZlY3ROYW1lID0gIW9wdGlvbnMgPwoJCQkJbWV0aG9kIDoKCQkJCW9wdGlvbnMgPT09IHRydWUgfHwgdHlwZW9mIG9wdGlvbnMgPT09ICJudW1iZXIiID8KCQkJCQlkZWZhdWx0RWZmZWN0IDoKCQkJCQlvcHRpb25zLmVmZmVjdCB8fCBkZWZhdWx0RWZmZWN0OwoJCW9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwoJCWlmICggdHlwZW9mIG9wdGlvbnMgPT09ICJudW1iZXIiICkgewoJCQlvcHRpb25zID0geyBkdXJhdGlvbjogb3B0aW9ucyB9OwoJCX0KCQloYXNPcHRpb25zID0gISQuaXNFbXB0eU9iamVjdCggb3B0aW9ucyApOwoJCW9wdGlvbnMuY29tcGxldGUgPSBjYWxsYmFjazsKCQlpZiAoIG9wdGlvbnMuZGVsYXkgKSB7CgkJCWVsZW1lbnQuZGVsYXkoIG9wdGlvbnMuZGVsYXkgKTsKCQl9CgkJaWYgKCBoYXNPcHRpb25zICYmICQuZWZmZWN0cyAmJiAkLmVmZmVjdHMuZWZmZWN0WyBlZmZlY3ROYW1lIF0gKSB7CgkJCWVsZW1lbnRbIG1ldGhvZCBdKCBvcHRpb25zICk7CgkJfSBlbHNlIGlmICggZWZmZWN0TmFtZSAhPT0gbWV0aG9kICYmIGVsZW1lbnRbIGVmZmVjdE5hbWUgXSApIHsKCQkJZWxlbWVudFsgZWZmZWN0TmFtZSBdKCBvcHRpb25zLmR1cmF0aW9uLCBvcHRpb25zLmVhc2luZywgY2FsbGJhY2sgKTsKCQl9IGVsc2UgewoJCQllbGVtZW50LnF1ZXVlKGZ1bmN0aW9uKCBuZXh0ICkgewoJCQkJJCggdGhpcyApWyBtZXRob2QgXSgpOwoJCQkJaWYgKCBjYWxsYmFjayApIHsKCQkJCQljYWxsYmFjay5jYWxsKCBlbGVtZW50WyAwIF0gKTsKCQkJCX0KCQkJCW5leHQoKTsKCQkJfSk7CgkJfQoJfTsKfSk7Cgp2YXIgd2lkZ2V0ID0gJC53aWRnZXQ7CgoKCn0pKTsK]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/ViewerJS/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/ViewerJS/AGPL-3.0.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ICAgICAgICAgICAgICAgICAgICBHTlUgQUZGRVJPIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uIDMsIDE5IE5vdmVtYmVyIDIwMDcKCiBDb3B5cmlnaHQgKEMpIDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuIDxodHRwOi8vZnNmLm9yZy8+CiBFdmVyeW9uZSBpcyBwZXJtaXR0ZWQgdG8gY29weSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBjb3BpZXMKIG9mIHRoaXMgbGljZW5zZSBkb2N1bWVudCwgYnV0IGNoYW5naW5nIGl0IGlzIG5vdCBhbGxvd2VkLgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByZWFtYmxlCgogIFRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgYSBmcmVlLCBjb3B5bGVmdCBsaWNlbnNlIGZvcgpzb2Z0d2FyZSBhbmQgb3RoZXIga2luZHMgb2Ygd29ya3MsIHNwZWNpZmljYWxseSBkZXNpZ25lZCB0byBlbnN1cmUKY29vcGVyYXRpb24gd2l0aCB0aGUgY29tbXVuaXR5IGluIHRoZSBjYXNlIG9mIG5ldHdvcmsgc2VydmVyIHNvZnR3YXJlLgoKICBUaGUgbGljZW5zZXMgZm9yIG1vc3Qgc29mdHdhcmUgYW5kIG90aGVyIHByYWN0aWNhbCB3b3JrcyBhcmUgZGVzaWduZWQKdG8gdGFrZSBhd2F5IHlvdXIgZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlIHRoZSB3b3Jrcy4gIEJ5IGNvbnRyYXN0LApvdXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZXMgYXJlIGludGVuZGVkIHRvIGd1YXJhbnRlZSB5b3VyIGZyZWVkb20gdG8Kc2hhcmUgYW5kIGNoYW5nZSBhbGwgdmVyc2lvbnMgb2YgYSBwcm9ncmFtLS10byBtYWtlIHN1cmUgaXQgcmVtYWlucyBmcmVlCnNvZnR3YXJlIGZvciBhbGwgaXRzIHVzZXJzLgoKICBXaGVuIHdlIHNwZWFrIG9mIGZyZWUgc29mdHdhcmUsIHdlIGFyZSByZWZlcnJpbmcgdG8gZnJlZWRvbSwgbm90CnByaWNlLiAgT3VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VzIGFyZSBkZXNpZ25lZCB0byBtYWtlIHN1cmUgdGhhdCB5b3UKaGF2ZSB0aGUgZnJlZWRvbSB0byBkaXN0cmlidXRlIGNvcGllcyBvZiBmcmVlIHNvZnR3YXJlIChhbmQgY2hhcmdlIGZvcgp0aGVtIGlmIHlvdSB3aXNoKSwgdGhhdCB5b3UgcmVjZWl2ZSBzb3VyY2UgY29kZSBvciBjYW4gZ2V0IGl0IGlmIHlvdQp3YW50IGl0LCB0aGF0IHlvdSBjYW4gY2hhbmdlIHRoZSBzb2Z0d2FyZSBvciB1c2UgcGllY2VzIG9mIGl0IGluIG5ldwpmcmVlIHByb2dyYW1zLCBhbmQgdGhhdCB5b3Uga25vdyB5b3UgY2FuIGRvIHRoZXNlIHRoaW5ncy4KCiAgRGV2ZWxvcGVycyB0aGF0IHVzZSBvdXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZXMgcHJvdGVjdCB5b3VyIHJpZ2h0cwp3aXRoIHR3byBzdGVwczogKDEpIGFzc2VydCBjb3B5cmlnaHQgb24gdGhlIHNvZnR3YXJlLCBhbmQgKDIpIG9mZmVyCnlvdSB0aGlzIExpY2Vuc2Ugd2hpY2ggZ2l2ZXMgeW91IGxlZ2FsIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZQphbmQvb3IgbW9kaWZ5IHRoZSBzb2Z0d2FyZS4KCiAgQSBzZWNvbmRhcnkgYmVuZWZpdCBvZiBkZWZlbmRpbmcgYWxsIHVzZXJzJyBmcmVlZG9tIGlzIHRoYXQKaW1wcm92ZW1lbnRzIG1hZGUgaW4gYWx0ZXJuYXRlIHZlcnNpb25zIG9mIHRoZSBwcm9ncmFtLCBpZiB0aGV5CnJlY2VpdmUgd2lkZXNwcmVhZCB1c2UsIGJlY29tZSBhdmFpbGFibGUgZm9yIG90aGVyIGRldmVsb3BlcnMgdG8KaW5jb3Jwb3JhdGUuICBNYW55IGRldmVsb3BlcnMgb2YgZnJlZSBzb2Z0d2FyZSBhcmUgaGVhcnRlbmVkIGFuZAplbmNvdXJhZ2VkIGJ5IHRoZSByZXN1bHRpbmcgY29vcGVyYXRpb24uICBIb3dldmVyLCBpbiB0aGUgY2FzZSBvZgpzb2Z0d2FyZSB1c2VkIG9uIG5ldHdvcmsgc2VydmVycywgdGhpcyByZXN1bHQgbWF5IGZhaWwgdG8gY29tZSBhYm91dC4KVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHBlcm1pdHMgbWFraW5nIGEgbW9kaWZpZWQgdmVyc2lvbiBhbmQKbGV0dGluZyB0aGUgcHVibGljIGFjY2VzcyBpdCBvbiBhIHNlcnZlciB3aXRob3V0IGV2ZXIgcmVsZWFzaW5nIGl0cwpzb3VyY2UgY29kZSB0byB0aGUgcHVibGljLgoKICBUaGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIGRlc2lnbmVkIHNwZWNpZmljYWxseSB0bwplbnN1cmUgdGhhdCwgaW4gc3VjaCBjYXNlcywgdGhlIG1vZGlmaWVkIHNvdXJjZSBjb2RlIGJlY29tZXMgYXZhaWxhYmxlCnRvIHRoZSBjb21tdW5pdHkuICBJdCByZXF1aXJlcyB0aGUgb3BlcmF0b3Igb2YgYSBuZXR3b3JrIHNlcnZlciB0bwpwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBvZiB0aGUgbW9kaWZpZWQgdmVyc2lvbiBydW5uaW5nIHRoZXJlIHRvIHRoZQp1c2VycyBvZiB0aGF0IHNlcnZlci4gIFRoZXJlZm9yZSwgcHVibGljIHVzZSBvZiBhIG1vZGlmaWVkIHZlcnNpb24sIG9uCmEgcHVibGljbHkgYWNjZXNzaWJsZSBzZXJ2ZXIsIGdpdmVzIHRoZSBwdWJsaWMgYWNjZXNzIHRvIHRoZSBzb3VyY2UKY29kZSBvZiB0aGUgbW9kaWZpZWQgdmVyc2lvbi4KCiAgQW4gb2xkZXIgbGljZW5zZSwgY2FsbGVkIHRoZSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbmQKcHVibGlzaGVkIGJ5IEFmZmVybywgd2FzIGRlc2lnbmVkIHRvIGFjY29tcGxpc2ggc2ltaWxhciBnb2Fscy4gIFRoaXMgaXMKYSBkaWZmZXJlbnQgbGljZW5zZSwgbm90IGEgdmVyc2lvbiBvZiB0aGUgQWZmZXJvIEdQTCwgYnV0IEFmZmVybyBoYXMKcmVsZWFzZWQgYSBuZXcgdmVyc2lvbiBvZiB0aGUgQWZmZXJvIEdQTCB3aGljaCBwZXJtaXRzIHJlbGljZW5zaW5nIHVuZGVyCnRoaXMgbGljZW5zZS4KCiAgVGhlIHByZWNpc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIGNvcHlpbmcsIGRpc3RyaWJ1dGlvbiBhbmQKbW9kaWZpY2F0aW9uIGZvbGxvdy4KCiAgICAgICAgICAgICAgICAgICAgICAgVEVSTVMgQU5EIENPTkRJVElPTlMKCiAgMC4gRGVmaW5pdGlvbnMuCgogICJUaGlzIExpY2Vuc2UiIHJlZmVycyB0byB2ZXJzaW9uIDMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KCiAgIkNvcHlyaWdodCIgYWxzbyBtZWFucyBjb3B5cmlnaHQtbGlrZSBsYXdzIHRoYXQgYXBwbHkgdG8gb3RoZXIga2luZHMgb2YKd29ya3MsIHN1Y2ggYXMgc2VtaWNvbmR1Y3RvciBtYXNrcy4KCiAgIlRoZSBQcm9ncmFtIiByZWZlcnMgdG8gYW55IGNvcHlyaWdodGFibGUgd29yayBsaWNlbnNlZCB1bmRlciB0aGlzCkxpY2Vuc2UuICBFYWNoIGxpY2Vuc2VlIGlzIGFkZHJlc3NlZCBhcyAieW91Ii4gICJMaWNlbnNlZXMiIGFuZAoicmVjaXBpZW50cyIgbWF5IGJlIGluZGl2aWR1YWxzIG9yIG9yZ2FuaXphdGlvbnMuCgogIFRvICJtb2RpZnkiIGEgd29yayBtZWFucyB0byBjb3B5IGZyb20gb3IgYWRhcHQgYWxsIG9yIHBhcnQgb2YgdGhlIHdvcmsKaW4gYSBmYXNoaW9uIHJlcXVpcmluZyBjb3B5cmlnaHQgcGVybWlzc2lvbiwgb3RoZXIgdGhhbiB0aGUgbWFraW5nIG9mIGFuCmV4YWN0IGNvcHkuICBUaGUgcmVzdWx0aW5nIHdvcmsgaXMgY2FsbGVkIGEgIm1vZGlmaWVkIHZlcnNpb24iIG9mIHRoZQplYXJsaWVyIHdvcmsgb3IgYSB3b3JrICJiYXNlZCBvbiIgdGhlIGVhcmxpZXIgd29yay4KCiAgQSAiY292ZXJlZCB3b3JrIiBtZWFucyBlaXRoZXIgdGhlIHVubW9kaWZpZWQgUHJvZ3JhbSBvciBhIHdvcmsgYmFzZWQKb24gdGhlIFByb2dyYW0uCgogIFRvICJwcm9wYWdhdGUiIGEgd29yayBtZWFucyB0byBkbyBhbnl0aGluZyB3aXRoIGl0IHRoYXQsIHdpdGhvdXQKcGVybWlzc2lvbiwgd291bGQgbWFrZSB5b3UgZGlyZWN0bHkgb3Igc2Vjb25kYXJpbHkgbGlhYmxlIGZvcgppbmZyaW5nZW1lbnQgdW5kZXIgYXBwbGljYWJsZSBjb3B5cmlnaHQgbGF3LCBleGNlcHQgZXhlY3V0aW5nIGl0IG9uIGEKY29tcHV0ZXIgb3IgbW9kaWZ5aW5nIGEgcHJpdmF0ZSBjb3B5LiAgUHJvcGFnYXRpb24gaW5jbHVkZXMgY29weWluZywKZGlzdHJpYnV0aW9uICh3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uKSwgbWFraW5nIGF2YWlsYWJsZSB0byB0aGUKcHVibGljLCBhbmQgaW4gc29tZSBjb3VudHJpZXMgb3RoZXIgYWN0aXZpdGllcyBhcyB3ZWxsLgoKICBUbyAiY29udmV5IiBhIHdvcmsgbWVhbnMgYW55IGtpbmQgb2YgcHJvcGFnYXRpb24gdGhhdCBlbmFibGVzIG90aGVyCnBhcnRpZXMgdG8gbWFrZSBvciByZWNlaXZlIGNvcGllcy4gIE1lcmUgaW50ZXJhY3Rpb24gd2l0aCBhIHVzZXIgdGhyb3VnaAphIGNvbXB1dGVyIG5ldHdvcmssIHdpdGggbm8gdHJhbnNmZXIgb2YgYSBjb3B5LCBpcyBub3QgY29udmV5aW5nLgoKICBBbiBpbnRlcmFjdGl2ZSB1c2VyIGludGVyZmFjZSBkaXNwbGF5cyAiQXBwcm9wcmlhdGUgTGVnYWwgTm90aWNlcyIKdG8gdGhlIGV4dGVudCB0aGF0IGl0IGluY2x1ZGVzIGEgY29udmVuaWVudCBhbmQgcHJvbWluZW50bHkgdmlzaWJsZQpmZWF0dXJlIHRoYXQgKDEpIGRpc3BsYXlzIGFuIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2UsIGFuZCAoMikKdGVsbHMgdGhlIHVzZXIgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhlIHdvcmsgKGV4Y2VwdCB0byB0aGUKZXh0ZW50IHRoYXQgd2FycmFudGllcyBhcmUgcHJvdmlkZWQpLCB0aGF0IGxpY2Vuc2VlcyBtYXkgY29udmV5IHRoZQp3b3JrIHVuZGVyIHRoaXMgTGljZW5zZSwgYW5kIGhvdyB0byB2aWV3IGEgY29weSBvZiB0aGlzIExpY2Vuc2UuICBJZgp0aGUgaW50ZXJmYWNlIHByZXNlbnRzIGEgbGlzdCBvZiB1c2VyIGNvbW1hbmRzIG9yIG9wdGlvbnMsIHN1Y2ggYXMgYQptZW51LCBhIHByb21pbmVudCBpdGVtIGluIHRoZSBsaXN0IG1lZXRzIHRoaXMgY3JpdGVyaW9uLgoKICAxLiBTb3VyY2UgQ29kZS4KCiAgVGhlICJzb3VyY2UgY29kZSIgZm9yIGEgd29yayBtZWFucyB0aGUgcHJlZmVycmVkIGZvcm0gb2YgdGhlIHdvcmsKZm9yIG1ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgIk9iamVjdCBjb2RlIiBtZWFucyBhbnkgbm9uLXNvdXJjZQpmb3JtIG9mIGEgd29yay4KCiAgQSAiU3RhbmRhcmQgSW50ZXJmYWNlIiBtZWFucyBhbiBpbnRlcmZhY2UgdGhhdCBlaXRoZXIgaXMgYW4gb2ZmaWNpYWwKc3RhbmRhcmQgZGVmaW5lZCBieSBhIHJlY29nbml6ZWQgc3RhbmRhcmRzIGJvZHksIG9yLCBpbiB0aGUgY2FzZSBvZgppbnRlcmZhY2VzIHNwZWNpZmllZCBmb3IgYSBwYXJ0aWN1bGFyIHByb2dyYW1taW5nIGxhbmd1YWdlLCBvbmUgdGhhdAppcyB3aWRlbHkgdXNlZCBhbW9uZyBkZXZlbG9wZXJzIHdvcmtpbmcgaW4gdGhhdCBsYW5ndWFnZS4KCiAgVGhlICJTeXN0ZW0gTGlicmFyaWVzIiBvZiBhbiBleGVjdXRhYmxlIHdvcmsgaW5jbHVkZSBhbnl0aGluZywgb3RoZXIKdGhhbiB0aGUgd29yayBhcyBhIHdob2xlLCB0aGF0IChhKSBpcyBpbmNsdWRlZCBpbiB0aGUgbm9ybWFsIGZvcm0gb2YKcGFja2FnaW5nIGEgTWFqb3IgQ29tcG9uZW50LCBidXQgd2hpY2ggaXMgbm90IHBhcnQgb2YgdGhhdCBNYWpvcgpDb21wb25lbnQsIGFuZCAoYikgc2VydmVzIG9ubHkgdG8gZW5hYmxlIHVzZSBvZiB0aGUgd29yayB3aXRoIHRoYXQKTWFqb3IgQ29tcG9uZW50LCBvciB0byBpbXBsZW1lbnQgYSBTdGFuZGFyZCBJbnRlcmZhY2UgZm9yIHdoaWNoIGFuCmltcGxlbWVudGF0aW9uIGlzIGF2YWlsYWJsZSB0byB0aGUgcHVibGljIGluIHNvdXJjZSBjb2RlIGZvcm0uICBBCiJNYWpvciBDb21wb25lbnQiLCBpbiB0aGlzIGNvbnRleHQsIG1lYW5zIGEgbWFqb3IgZXNzZW50aWFsIGNvbXBvbmVudAooa2VybmVsLCB3aW5kb3cgc3lzdGVtLCBhbmQgc28gb24pIG9mIHRoZSBzcGVjaWZpYyBvcGVyYXRpbmcgc3lzdGVtCihpZiBhbnkpIG9uIHdoaWNoIHRoZSBleGVjdXRhYmxlIHdvcmsgcnVucywgb3IgYSBjb21waWxlciB1c2VkIHRvCnByb2R1Y2UgdGhlIHdvcmssIG9yIGFuIG9iamVjdCBjb2RlIGludGVycHJldGVyIHVzZWQgdG8gcnVuIGl0LgoKICBUaGUgIkNvcnJlc3BvbmRpbmcgU291cmNlIiBmb3IgYSB3b3JrIGluIG9iamVjdCBjb2RlIGZvcm0gbWVhbnMgYWxsCnRoZSBzb3VyY2UgY29kZSBuZWVkZWQgdG8gZ2VuZXJhdGUsIGluc3RhbGwsIGFuZCAoZm9yIGFuIGV4ZWN1dGFibGUKd29yaykgcnVuIHRoZSBvYmplY3QgY29kZSBhbmQgdG8gbW9kaWZ5IHRoZSB3b3JrLCBpbmNsdWRpbmcgc2NyaXB0cyB0bwpjb250cm9sIHRob3NlIGFjdGl2aXRpZXMuICBIb3dldmVyLCBpdCBkb2VzIG5vdCBpbmNsdWRlIHRoZSB3b3JrJ3MKU3lzdGVtIExpYnJhcmllcywgb3IgZ2VuZXJhbC1wdXJwb3NlIHRvb2xzIG9yIGdlbmVyYWxseSBhdmFpbGFibGUgZnJlZQpwcm9ncmFtcyB3aGljaCBhcmUgdXNlZCB1bm1vZGlmaWVkIGluIHBlcmZvcm1pbmcgdGhvc2UgYWN0aXZpdGllcyBidXQKd2hpY2ggYXJlIG5vdCBwYXJ0IG9mIHRoZSB3b3JrLiAgRm9yIGV4YW1wbGUsIENvcnJlc3BvbmRpbmcgU291cmNlCmluY2x1ZGVzIGludGVyZmFjZSBkZWZpbml0aW9uIGZpbGVzIGFzc29jaWF0ZWQgd2l0aCBzb3VyY2UgZmlsZXMgZm9yCnRoZSB3b3JrLCBhbmQgdGhlIHNvdXJjZSBjb2RlIGZvciBzaGFyZWQgbGlicmFyaWVzIGFuZCBkeW5hbWljYWxseQpsaW5rZWQgc3VicHJvZ3JhbXMgdGhhdCB0aGUgd29yayBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgdG8gcmVxdWlyZSwKc3VjaCBhcyBieSBpbnRpbWF0ZSBkYXRhIGNvbW11bmljYXRpb24gb3IgY29udHJvbCBmbG93IGJldHdlZW4gdGhvc2UKc3VicHJvZ3JhbXMgYW5kIG90aGVyIHBhcnRzIG9mIHRoZSB3b3JrLgoKICBUaGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgbmVlZCBub3QgaW5jbHVkZSBhbnl0aGluZyB0aGF0IHVzZXJzCmNhbiByZWdlbmVyYXRlIGF1dG9tYXRpY2FsbHkgZnJvbSBvdGhlciBwYXJ0cyBvZiB0aGUgQ29ycmVzcG9uZGluZwpTb3VyY2UuCgogIFRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBmb3IgYSB3b3JrIGluIHNvdXJjZSBjb2RlIGZvcm0gaXMgdGhhdApzYW1lIHdvcmsuCgogIDIuIEJhc2ljIFBlcm1pc3Npb25zLgoKICBBbGwgcmlnaHRzIGdyYW50ZWQgdW5kZXIgdGhpcyBMaWNlbnNlIGFyZSBncmFudGVkIGZvciB0aGUgdGVybSBvZgpjb3B5cmlnaHQgb24gdGhlIFByb2dyYW0sIGFuZCBhcmUgaXJyZXZvY2FibGUgcHJvdmlkZWQgdGhlIHN0YXRlZApjb25kaXRpb25zIGFyZSBtZXQuICBUaGlzIExpY2Vuc2UgZXhwbGljaXRseSBhZmZpcm1zIHlvdXIgdW5saW1pdGVkCnBlcm1pc3Npb24gdG8gcnVuIHRoZSB1bm1vZGlmaWVkIFByb2dyYW0uICBUaGUgb3V0cHV0IGZyb20gcnVubmluZyBhCmNvdmVyZWQgd29yayBpcyBjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZSBvbmx5IGlmIHRoZSBvdXRwdXQsIGdpdmVuIGl0cwpjb250ZW50LCBjb25zdGl0dXRlcyBhIGNvdmVyZWQgd29yay4gIFRoaXMgTGljZW5zZSBhY2tub3dsZWRnZXMgeW91cgpyaWdodHMgb2YgZmFpciB1c2Ugb3Igb3RoZXIgZXF1aXZhbGVudCwgYXMgcHJvdmlkZWQgYnkgY29weXJpZ2h0IGxhdy4KCiAgWW91IG1heSBtYWtlLCBydW4gYW5kIHByb3BhZ2F0ZSBjb3ZlcmVkIHdvcmtzIHRoYXQgeW91IGRvIG5vdApjb252ZXksIHdpdGhvdXQgY29uZGl0aW9ucyBzbyBsb25nIGFzIHlvdXIgbGljZW5zZSBvdGhlcndpc2UgcmVtYWlucwppbiBmb3JjZS4gIFlvdSBtYXkgY29udmV5IGNvdmVyZWQgd29ya3MgdG8gb3RoZXJzIGZvciB0aGUgc29sZSBwdXJwb3NlCm9mIGhhdmluZyB0aGVtIG1ha2UgbW9kaWZpY2F0aW9ucyBleGNsdXNpdmVseSBmb3IgeW91LCBvciBwcm92aWRlIHlvdQp3aXRoIGZhY2lsaXRpZXMgZm9yIHJ1bm5pbmcgdGhvc2Ugd29ya3MsIHByb3ZpZGVkIHRoYXQgeW91IGNvbXBseSB3aXRoCnRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UgaW4gY29udmV5aW5nIGFsbCBtYXRlcmlhbCBmb3Igd2hpY2ggeW91IGRvCm5vdCBjb250cm9sIGNvcHlyaWdodC4gIFRob3NlIHRodXMgbWFraW5nIG9yIHJ1bm5pbmcgdGhlIGNvdmVyZWQgd29ya3MKZm9yIHlvdSBtdXN0IGRvIHNvIGV4Y2x1c2l2ZWx5IG9uIHlvdXIgYmVoYWxmLCB1bmRlciB5b3VyIGRpcmVjdGlvbgphbmQgY29udHJvbCwgb24gdGVybXMgdGhhdCBwcm9oaWJpdCB0aGVtIGZyb20gbWFraW5nIGFueSBjb3BpZXMgb2YKeW91ciBjb3B5cmlnaHRlZCBtYXRlcmlhbCBvdXRzaWRlIHRoZWlyIHJlbGF0aW9uc2hpcCB3aXRoIHlvdS4KCiAgQ29udmV5aW5nIHVuZGVyIGFueSBvdGhlciBjaXJjdW1zdGFuY2VzIGlzIHBlcm1pdHRlZCBzb2xlbHkgdW5kZXIKdGhlIGNvbmRpdGlvbnMgc3RhdGVkIGJlbG93LiAgU3VibGljZW5zaW5nIGlzIG5vdCBhbGxvd2VkOyBzZWN0aW9uIDEwCm1ha2VzIGl0IHVubmVjZXNzYXJ5LgoKICAzLiBQcm90ZWN0aW5nIFVzZXJzJyBMZWdhbCBSaWdodHMgRnJvbSBBbnRpLUNpcmN1bXZlbnRpb24gTGF3LgoKICBObyBjb3ZlcmVkIHdvcmsgc2hhbGwgYmUgZGVlbWVkIHBhcnQgb2YgYW4gZWZmZWN0aXZlIHRlY2hub2xvZ2ljYWwKbWVhc3VyZSB1bmRlciBhbnkgYXBwbGljYWJsZSBsYXcgZnVsZmlsbGluZyBvYmxpZ2F0aW9ucyB1bmRlciBhcnRpY2xlCjExIG9mIHRoZSBXSVBPIGNvcHlyaWdodCB0cmVhdHkgYWRvcHRlZCBvbiAyMCBEZWNlbWJlciAxOTk2LCBvcgpzaW1pbGFyIGxhd3MgcHJvaGliaXRpbmcgb3IgcmVzdHJpY3RpbmcgY2lyY3VtdmVudGlvbiBvZiBzdWNoCm1lYXN1cmVzLgoKICBXaGVuIHlvdSBjb252ZXkgYSBjb3ZlcmVkIHdvcmssIHlvdSB3YWl2ZSBhbnkgbGVnYWwgcG93ZXIgdG8gZm9yYmlkCmNpcmN1bXZlbnRpb24gb2YgdGVjaG5vbG9naWNhbCBtZWFzdXJlcyB0byB0aGUgZXh0ZW50IHN1Y2ggY2lyY3VtdmVudGlvbgppcyBlZmZlY3RlZCBieSBleGVyY2lzaW5nIHJpZ2h0cyB1bmRlciB0aGlzIExpY2Vuc2Ugd2l0aCByZXNwZWN0IHRvCnRoZSBjb3ZlcmVkIHdvcmssIGFuZCB5b3UgZGlzY2xhaW0gYW55IGludGVudGlvbiB0byBsaW1pdCBvcGVyYXRpb24gb3IKbW9kaWZpY2F0aW9uIG9mIHRoZSB3b3JrIGFzIGEgbWVhbnMgb2YgZW5mb3JjaW5nLCBhZ2FpbnN0IHRoZSB3b3JrJ3MKdXNlcnMsIHlvdXIgb3IgdGhpcmQgcGFydGllcycgbGVnYWwgcmlnaHRzIHRvIGZvcmJpZCBjaXJjdW12ZW50aW9uIG9mCnRlY2hub2xvZ2ljYWwgbWVhc3VyZXMuCgogIDQuIENvbnZleWluZyBWZXJiYXRpbSBDb3BpZXMuCgogIFlvdSBtYXkgY29udmV5IHZlcmJhdGltIGNvcGllcyBvZiB0aGUgUHJvZ3JhbSdzIHNvdXJjZSBjb2RlIGFzIHlvdQpyZWNlaXZlIGl0LCBpbiBhbnkgbWVkaXVtLCBwcm92aWRlZCB0aGF0IHlvdSBjb25zcGljdW91c2x5IGFuZAphcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2U7CmtlZXAgaW50YWN0IGFsbCBub3RpY2VzIHN0YXRpbmcgdGhhdCB0aGlzIExpY2Vuc2UgYW5kIGFueQpub24tcGVybWlzc2l2ZSB0ZXJtcyBhZGRlZCBpbiBhY2NvcmQgd2l0aCBzZWN0aW9uIDcgYXBwbHkgdG8gdGhlIGNvZGU7CmtlZXAgaW50YWN0IGFsbCBub3RpY2VzIG9mIHRoZSBhYnNlbmNlIG9mIGFueSB3YXJyYW50eTsgYW5kIGdpdmUgYWxsCnJlY2lwaWVudHMgYSBjb3B5IG9mIHRoaXMgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBQcm9ncmFtLgoKICBZb3UgbWF5IGNoYXJnZSBhbnkgcHJpY2Ugb3Igbm8gcHJpY2UgZm9yIGVhY2ggY29weSB0aGF0IHlvdSBjb252ZXksCmFuZCB5b3UgbWF5IG9mZmVyIHN1cHBvcnQgb3Igd2FycmFudHkgcHJvdGVjdGlvbiBmb3IgYSBmZWUuCgogIDUuIENvbnZleWluZyBNb2RpZmllZCBTb3VyY2UgVmVyc2lvbnMuCgogIFlvdSBtYXkgY29udmV5IGEgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSwgb3IgdGhlIG1vZGlmaWNhdGlvbnMgdG8KcHJvZHVjZSBpdCBmcm9tIHRoZSBQcm9ncmFtLCBpbiB0aGUgZm9ybSBvZiBzb3VyY2UgY29kZSB1bmRlciB0aGUKdGVybXMgb2Ygc2VjdGlvbiA0LCBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIG1lZXQgYWxsIG9mIHRoZXNlIGNvbmRpdGlvbnM6CgogICAgYSkgVGhlIHdvcmsgbXVzdCBjYXJyeSBwcm9taW5lbnQgbm90aWNlcyBzdGF0aW5nIHRoYXQgeW91IG1vZGlmaWVkCiAgICBpdCwgYW5kIGdpdmluZyBhIHJlbGV2YW50IGRhdGUuCgogICAgYikgVGhlIHdvcmsgbXVzdCBjYXJyeSBwcm9taW5lbnQgbm90aWNlcyBzdGF0aW5nIHRoYXQgaXQgaXMKICAgIHJlbGVhc2VkIHVuZGVyIHRoaXMgTGljZW5zZSBhbmQgYW55IGNvbmRpdGlvbnMgYWRkZWQgdW5kZXIgc2VjdGlvbgogICAgNy4gIFRoaXMgcmVxdWlyZW1lbnQgbW9kaWZpZXMgdGhlIHJlcXVpcmVtZW50IGluIHNlY3Rpb24gNCB0bwogICAgImtlZXAgaW50YWN0IGFsbCBub3RpY2VzIi4KCiAgICBjKSBZb3UgbXVzdCBsaWNlbnNlIHRoZSBlbnRpcmUgd29yaywgYXMgYSB3aG9sZSwgdW5kZXIgdGhpcwogICAgTGljZW5zZSB0byBhbnlvbmUgd2hvIGNvbWVzIGludG8gcG9zc2Vzc2lvbiBvZiBhIGNvcHkuICBUaGlzCiAgICBMaWNlbnNlIHdpbGwgdGhlcmVmb3JlIGFwcGx5LCBhbG9uZyB3aXRoIGFueSBhcHBsaWNhYmxlIHNlY3Rpb24gNwogICAgYWRkaXRpb25hbCB0ZXJtcywgdG8gdGhlIHdob2xlIG9mIHRoZSB3b3JrLCBhbmQgYWxsIGl0cyBwYXJ0cywKICAgIHJlZ2FyZGxlc3Mgb2YgaG93IHRoZXkgYXJlIHBhY2thZ2VkLiAgVGhpcyBMaWNlbnNlIGdpdmVzIG5vCiAgICBwZXJtaXNzaW9uIHRvIGxpY2Vuc2UgdGhlIHdvcmsgaW4gYW55IG90aGVyIHdheSwgYnV0IGl0IGRvZXMgbm90CiAgICBpbnZhbGlkYXRlIHN1Y2ggcGVybWlzc2lvbiBpZiB5b3UgaGF2ZSBzZXBhcmF0ZWx5IHJlY2VpdmVkIGl0LgoKICAgIGQpIElmIHRoZSB3b3JrIGhhcyBpbnRlcmFjdGl2ZSB1c2VyIGludGVyZmFjZXMsIGVhY2ggbXVzdCBkaXNwbGF5CiAgICBBcHByb3ByaWF0ZSBMZWdhbCBOb3RpY2VzOyBob3dldmVyLCBpZiB0aGUgUHJvZ3JhbSBoYXMgaW50ZXJhY3RpdmUKICAgIGludGVyZmFjZXMgdGhhdCBkbyBub3QgZGlzcGxheSBBcHByb3ByaWF0ZSBMZWdhbCBOb3RpY2VzLCB5b3VyCiAgICB3b3JrIG5lZWQgbm90IG1ha2UgdGhlbSBkbyBzby4KCiAgQSBjb21waWxhdGlvbiBvZiBhIGNvdmVyZWQgd29yayB3aXRoIG90aGVyIHNlcGFyYXRlIGFuZCBpbmRlcGVuZGVudAp3b3Jrcywgd2hpY2ggYXJlIG5vdCBieSB0aGVpciBuYXR1cmUgZXh0ZW5zaW9ucyBvZiB0aGUgY292ZXJlZCB3b3JrLAphbmQgd2hpY2ggYXJlIG5vdCBjb21iaW5lZCB3aXRoIGl0IHN1Y2ggYXMgdG8gZm9ybSBhIGxhcmdlciBwcm9ncmFtLAppbiBvciBvbiBhIHZvbHVtZSBvZiBhIHN0b3JhZ2Ugb3IgZGlzdHJpYnV0aW9uIG1lZGl1bSwgaXMgY2FsbGVkIGFuCiJhZ2dyZWdhdGUiIGlmIHRoZSBjb21waWxhdGlvbiBhbmQgaXRzIHJlc3VsdGluZyBjb3B5cmlnaHQgYXJlIG5vdAp1c2VkIHRvIGxpbWl0IHRoZSBhY2Nlc3Mgb3IgbGVnYWwgcmlnaHRzIG9mIHRoZSBjb21waWxhdGlvbidzIHVzZXJzCmJleW9uZCB3aGF0IHRoZSBpbmRpdmlkdWFsIHdvcmtzIHBlcm1pdC4gIEluY2x1c2lvbiBvZiBhIGNvdmVyZWQgd29yawppbiBhbiBhZ2dyZWdhdGUgZG9lcyBub3QgY2F1c2UgdGhpcyBMaWNlbnNlIHRvIGFwcGx5IHRvIHRoZSBvdGhlcgpwYXJ0cyBvZiB0aGUgYWdncmVnYXRlLgoKICA2LiBDb252ZXlpbmcgTm9uLVNvdXJjZSBGb3Jtcy4KCiAgWW91IG1heSBjb252ZXkgYSBjb3ZlcmVkIHdvcmsgaW4gb2JqZWN0IGNvZGUgZm9ybSB1bmRlciB0aGUgdGVybXMKb2Ygc2VjdGlvbnMgNCBhbmQgNSwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBjb252ZXkgdGhlCm1hY2hpbmUtcmVhZGFibGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZSwKaW4gb25lIG9mIHRoZXNlIHdheXM6CgogICAgYSkgQ29udmV5IHRoZSBvYmplY3QgY29kZSBpbiwgb3IgZW1ib2RpZWQgaW4sIGEgcGh5c2ljYWwgcHJvZHVjdAogICAgKGluY2x1ZGluZyBhIHBoeXNpY2FsIGRpc3RyaWJ1dGlvbiBtZWRpdW0pLCBhY2NvbXBhbmllZCBieSB0aGUKICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGZpeGVkIG9uIGEgZHVyYWJsZSBwaHlzaWNhbCBtZWRpdW0KICAgIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlLgoKICAgIGIpIENvbnZleSB0aGUgb2JqZWN0IGNvZGUgaW4sIG9yIGVtYm9kaWVkIGluLCBhIHBoeXNpY2FsIHByb2R1Y3QKICAgIChpbmNsdWRpbmcgYSBwaHlzaWNhbCBkaXN0cmlidXRpb24gbWVkaXVtKSwgYWNjb21wYW5pZWQgYnkgYQogICAgd3JpdHRlbiBvZmZlciwgdmFsaWQgZm9yIGF0IGxlYXN0IHRocmVlIHllYXJzIGFuZCB2YWxpZCBmb3IgYXMKICAgIGxvbmcgYXMgeW91IG9mZmVyIHNwYXJlIHBhcnRzIG9yIGN1c3RvbWVyIHN1cHBvcnQgZm9yIHRoYXQgcHJvZHVjdAogICAgbW9kZWwsIHRvIGdpdmUgYW55b25lIHdobyBwb3NzZXNzZXMgdGhlIG9iamVjdCBjb2RlIGVpdGhlciAoMSkgYQogICAgY29weSBvZiB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgZm9yIGFsbCB0aGUgc29mdHdhcmUgaW4gdGhlCiAgICBwcm9kdWN0IHRoYXQgaXMgY292ZXJlZCBieSB0aGlzIExpY2Vuc2UsIG9uIGEgZHVyYWJsZSBwaHlzaWNhbAogICAgbWVkaXVtIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlLCBmb3IgYSBwcmljZSBubwogICAgbW9yZSB0aGFuIHlvdXIgcmVhc29uYWJsZSBjb3N0IG9mIHBoeXNpY2FsbHkgcGVyZm9ybWluZyB0aGlzCiAgICBjb252ZXlpbmcgb2Ygc291cmNlLCBvciAoMikgYWNjZXNzIHRvIGNvcHkgdGhlCiAgICBDb3JyZXNwb25kaW5nIFNvdXJjZSBmcm9tIGEgbmV0d29yayBzZXJ2ZXIgYXQgbm8gY2hhcmdlLgoKICAgIGMpIENvbnZleSBpbmRpdmlkdWFsIGNvcGllcyBvZiB0aGUgb2JqZWN0IGNvZGUgd2l0aCBhIGNvcHkgb2YgdGhlCiAgICB3cml0dGVuIG9mZmVyIHRvIHByb3ZpZGUgdGhlIENvcnJlc3BvbmRpbmcgU291cmNlLiAgVGhpcwogICAgYWx0ZXJuYXRpdmUgaXMgYWxsb3dlZCBvbmx5IG9jY2FzaW9uYWxseSBhbmQgbm9uY29tbWVyY2lhbGx5LCBhbmQKICAgIG9ubHkgaWYgeW91IHJlY2VpdmVkIHRoZSBvYmplY3QgY29kZSB3aXRoIHN1Y2ggYW4gb2ZmZXIsIGluIGFjY29yZAogICAgd2l0aCBzdWJzZWN0aW9uIDZiLgoKICAgIGQpIENvbnZleSB0aGUgb2JqZWN0IGNvZGUgYnkgb2ZmZXJpbmcgYWNjZXNzIGZyb20gYSBkZXNpZ25hdGVkCiAgICBwbGFjZSAoZ3JhdGlzIG9yIGZvciBhIGNoYXJnZSksIGFuZCBvZmZlciBlcXVpdmFsZW50IGFjY2VzcyB0byB0aGUKICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGluIHRoZSBzYW1lIHdheSB0aHJvdWdoIHRoZSBzYW1lIHBsYWNlIGF0IG5vCiAgICBmdXJ0aGVyIGNoYXJnZS4gIFlvdSBuZWVkIG5vdCByZXF1aXJlIHJlY2lwaWVudHMgdG8gY29weSB0aGUKICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGFsb25nIHdpdGggdGhlIG9iamVjdCBjb2RlLiAgSWYgdGhlIHBsYWNlIHRvCiAgICBjb3B5IHRoZSBvYmplY3QgY29kZSBpcyBhIG5ldHdvcmsgc2VydmVyLCB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UKICAgIG1heSBiZSBvbiBhIGRpZmZlcmVudCBzZXJ2ZXIgKG9wZXJhdGVkIGJ5IHlvdSBvciBhIHRoaXJkIHBhcnR5KQogICAgdGhhdCBzdXBwb3J0cyBlcXVpdmFsZW50IGNvcHlpbmcgZmFjaWxpdGllcywgcHJvdmlkZWQgeW91IG1haW50YWluCiAgICBjbGVhciBkaXJlY3Rpb25zIG5leHQgdG8gdGhlIG9iamVjdCBjb2RlIHNheWluZyB3aGVyZSB0byBmaW5kIHRoZQogICAgQ29ycmVzcG9uZGluZyBTb3VyY2UuICBSZWdhcmRsZXNzIG9mIHdoYXQgc2VydmVyIGhvc3RzIHRoZQogICAgQ29ycmVzcG9uZGluZyBTb3VyY2UsIHlvdSByZW1haW4gb2JsaWdhdGVkIHRvIGVuc3VyZSB0aGF0IGl0IGlzCiAgICBhdmFpbGFibGUgZm9yIGFzIGxvbmcgYXMgbmVlZGVkIHRvIHNhdGlzZnkgdGhlc2UgcmVxdWlyZW1lbnRzLgoKICAgIGUpIENvbnZleSB0aGUgb2JqZWN0IGNvZGUgdXNpbmcgcGVlci10by1wZWVyIHRyYW5zbWlzc2lvbiwgcHJvdmlkZWQKICAgIHlvdSBpbmZvcm0gb3RoZXIgcGVlcnMgd2hlcmUgdGhlIG9iamVjdCBjb2RlIGFuZCBDb3JyZXNwb25kaW5nCiAgICBTb3VyY2Ugb2YgdGhlIHdvcmsgYXJlIGJlaW5nIG9mZmVyZWQgdG8gdGhlIGdlbmVyYWwgcHVibGljIGF0IG5vCiAgICBjaGFyZ2UgdW5kZXIgc3Vic2VjdGlvbiA2ZC4KCiAgQSBzZXBhcmFibGUgcG9ydGlvbiBvZiB0aGUgb2JqZWN0IGNvZGUsIHdob3NlIHNvdXJjZSBjb2RlIGlzIGV4Y2x1ZGVkCmZyb20gdGhlIENvcnJlc3BvbmRpbmcgU291cmNlIGFzIGEgU3lzdGVtIExpYnJhcnksIG5lZWQgbm90IGJlCmluY2x1ZGVkIGluIGNvbnZleWluZyB0aGUgb2JqZWN0IGNvZGUgd29yay4KCiAgQSAiVXNlciBQcm9kdWN0IiBpcyBlaXRoZXIgKDEpIGEgImNvbnN1bWVyIHByb2R1Y3QiLCB3aGljaCBtZWFucyBhbnkKdGFuZ2libGUgcGVyc29uYWwgcHJvcGVydHkgd2hpY2ggaXMgbm9ybWFsbHkgdXNlZCBmb3IgcGVyc29uYWwsIGZhbWlseSwKb3IgaG91c2Vob2xkIHB1cnBvc2VzLCBvciAoMikgYW55dGhpbmcgZGVzaWduZWQgb3Igc29sZCBmb3IgaW5jb3Jwb3JhdGlvbgppbnRvIGEgZHdlbGxpbmcuICBJbiBkZXRlcm1pbmluZyB3aGV0aGVyIGEgcHJvZHVjdCBpcyBhIGNvbnN1bWVyIHByb2R1Y3QsCmRvdWJ0ZnVsIGNhc2VzIHNoYWxsIGJlIHJlc29sdmVkIGluIGZhdm9yIG9mIGNvdmVyYWdlLiAgRm9yIGEgcGFydGljdWxhcgpwcm9kdWN0IHJlY2VpdmVkIGJ5IGEgcGFydGljdWxhciB1c2VyLCAibm9ybWFsbHkgdXNlZCIgcmVmZXJzIHRvIGEKdHlwaWNhbCBvciBjb21tb24gdXNlIG9mIHRoYXQgY2xhc3Mgb2YgcHJvZHVjdCwgcmVnYXJkbGVzcyBvZiB0aGUgc3RhdHVzCm9mIHRoZSBwYXJ0aWN1bGFyIHVzZXIgb3Igb2YgdGhlIHdheSBpbiB3aGljaCB0aGUgcGFydGljdWxhciB1c2VyCmFjdHVhbGx5IHVzZXMsIG9yIGV4cGVjdHMgb3IgaXMgZXhwZWN0ZWQgdG8gdXNlLCB0aGUgcHJvZHVjdC4gIEEgcHJvZHVjdAppcyBhIGNvbnN1bWVyIHByb2R1Y3QgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZSBwcm9kdWN0IGhhcyBzdWJzdGFudGlhbApjb21tZXJjaWFsLCBpbmR1c3RyaWFsIG9yIG5vbi1jb25zdW1lciB1c2VzLCB1bmxlc3Mgc3VjaCB1c2VzIHJlcHJlc2VudAp0aGUgb25seSBzaWduaWZpY2FudCBtb2RlIG9mIHVzZSBvZiB0aGUgcHJvZHVjdC4KCiAgIkluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbiIgZm9yIGEgVXNlciBQcm9kdWN0IG1lYW5zIGFueSBtZXRob2RzLApwcm9jZWR1cmVzLCBhdXRob3JpemF0aW9uIGtleXMsIG9yIG90aGVyIGluZm9ybWF0aW9uIHJlcXVpcmVkIHRvIGluc3RhbGwKYW5kIGV4ZWN1dGUgbW9kaWZpZWQgdmVyc2lvbnMgb2YgYSBjb3ZlcmVkIHdvcmsgaW4gdGhhdCBVc2VyIFByb2R1Y3QgZnJvbQphIG1vZGlmaWVkIHZlcnNpb24gb2YgaXRzIENvcnJlc3BvbmRpbmcgU291cmNlLiAgVGhlIGluZm9ybWF0aW9uIG11c3QKc3VmZmljZSB0byBlbnN1cmUgdGhhdCB0aGUgY29udGludWVkIGZ1bmN0aW9uaW5nIG9mIHRoZSBtb2RpZmllZCBvYmplY3QKY29kZSBpcyBpbiBubyBjYXNlIHByZXZlbnRlZCBvciBpbnRlcmZlcmVkIHdpdGggc29sZWx5IGJlY2F1c2UKbW9kaWZpY2F0aW9uIGhhcyBiZWVuIG1hZGUuCgogIElmIHlvdSBjb252ZXkgYW4gb2JqZWN0IGNvZGUgd29yayB1bmRlciB0aGlzIHNlY3Rpb24gaW4sIG9yIHdpdGgsIG9yCnNwZWNpZmljYWxseSBmb3IgdXNlIGluLCBhIFVzZXIgUHJvZHVjdCwgYW5kIHRoZSBjb252ZXlpbmcgb2NjdXJzIGFzCnBhcnQgb2YgYSB0cmFuc2FjdGlvbiBpbiB3aGljaCB0aGUgcmlnaHQgb2YgcG9zc2Vzc2lvbiBhbmQgdXNlIG9mIHRoZQpVc2VyIFByb2R1Y3QgaXMgdHJhbnNmZXJyZWQgdG8gdGhlIHJlY2lwaWVudCBpbiBwZXJwZXR1aXR5IG9yIGZvciBhCmZpeGVkIHRlcm0gKHJlZ2FyZGxlc3Mgb2YgaG93IHRoZSB0cmFuc2FjdGlvbiBpcyBjaGFyYWN0ZXJpemVkKSwgdGhlCkNvcnJlc3BvbmRpbmcgU291cmNlIGNvbnZleWVkIHVuZGVyIHRoaXMgc2VjdGlvbiBtdXN0IGJlIGFjY29tcGFuaWVkCmJ5IHRoZSBJbnN0YWxsYXRpb24gSW5mb3JtYXRpb24uICBCdXQgdGhpcyByZXF1aXJlbWVudCBkb2VzIG5vdCBhcHBseQppZiBuZWl0aGVyIHlvdSBub3IgYW55IHRoaXJkIHBhcnR5IHJldGFpbnMgdGhlIGFiaWxpdHkgdG8gaW5zdGFsbAptb2RpZmllZCBvYmplY3QgY29kZSBvbiB0aGUgVXNlciBQcm9kdWN0IChmb3IgZXhhbXBsZSwgdGhlIHdvcmsgaGFzCmJlZW4gaW5zdGFsbGVkIGluIFJPTSkuCgogIFRoZSByZXF1aXJlbWVudCB0byBwcm92aWRlIEluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbiBkb2VzIG5vdCBpbmNsdWRlIGEKcmVxdWlyZW1lbnQgdG8gY29udGludWUgdG8gcHJvdmlkZSBzdXBwb3J0IHNlcnZpY2UsIHdhcnJhbnR5LCBvciB1cGRhdGVzCmZvciBhIHdvcmsgdGhhdCBoYXMgYmVlbiBtb2RpZmllZCBvciBpbnN0YWxsZWQgYnkgdGhlIHJlY2lwaWVudCwgb3IgZm9yCnRoZSBVc2VyIFByb2R1Y3QgaW4gd2hpY2ggaXQgaGFzIGJlZW4gbW9kaWZpZWQgb3IgaW5zdGFsbGVkLiAgQWNjZXNzIHRvIGEKbmV0d29yayBtYXkgYmUgZGVuaWVkIHdoZW4gdGhlIG1vZGlmaWNhdGlvbiBpdHNlbGYgbWF0ZXJpYWxseSBhbmQKYWR2ZXJzZWx5IGFmZmVjdHMgdGhlIG9wZXJhdGlvbiBvZiB0aGUgbmV0d29yayBvciB2aW9sYXRlcyB0aGUgcnVsZXMgYW5kCnByb3RvY29scyBmb3IgY29tbXVuaWNhdGlvbiBhY3Jvc3MgdGhlIG5ldHdvcmsuCgogIENvcnJlc3BvbmRpbmcgU291cmNlIGNvbnZleWVkLCBhbmQgSW5zdGFsbGF0aW9uIEluZm9ybWF0aW9uIHByb3ZpZGVkLAppbiBhY2NvcmQgd2l0aCB0aGlzIHNlY3Rpb24gbXVzdCBiZSBpbiBhIGZvcm1hdCB0aGF0IGlzIHB1YmxpY2x5CmRvY3VtZW50ZWQgKGFuZCB3aXRoIGFuIGltcGxlbWVudGF0aW9uIGF2YWlsYWJsZSB0byB0aGUgcHVibGljIGluCnNvdXJjZSBjb2RlIGZvcm0pLCBhbmQgbXVzdCByZXF1aXJlIG5vIHNwZWNpYWwgcGFzc3dvcmQgb3Iga2V5IGZvcgp1bnBhY2tpbmcsIHJlYWRpbmcgb3IgY29weWluZy4KCiAgNy4gQWRkaXRpb25hbCBUZXJtcy4KCiAgIkFkZGl0aW9uYWwgcGVybWlzc2lvbnMiIGFyZSB0ZXJtcyB0aGF0IHN1cHBsZW1lbnQgdGhlIHRlcm1zIG9mIHRoaXMKTGljZW5zZSBieSBtYWtpbmcgZXhjZXB0aW9ucyBmcm9tIG9uZSBvciBtb3JlIG9mIGl0cyBjb25kaXRpb25zLgpBZGRpdGlvbmFsIHBlcm1pc3Npb25zIHRoYXQgYXJlIGFwcGxpY2FibGUgdG8gdGhlIGVudGlyZSBQcm9ncmFtIHNoYWxsCmJlIHRyZWF0ZWQgYXMgdGhvdWdoIHRoZXkgd2VyZSBpbmNsdWRlZCBpbiB0aGlzIExpY2Vuc2UsIHRvIHRoZSBleHRlbnQKdGhhdCB0aGV5IGFyZSB2YWxpZCB1bmRlciBhcHBsaWNhYmxlIGxhdy4gIElmIGFkZGl0aW9uYWwgcGVybWlzc2lvbnMKYXBwbHkgb25seSB0byBwYXJ0IG9mIHRoZSBQcm9ncmFtLCB0aGF0IHBhcnQgbWF5IGJlIHVzZWQgc2VwYXJhdGVseQp1bmRlciB0aG9zZSBwZXJtaXNzaW9ucywgYnV0IHRoZSBlbnRpcmUgUHJvZ3JhbSByZW1haW5zIGdvdmVybmVkIGJ5CnRoaXMgTGljZW5zZSB3aXRob3V0IHJlZ2FyZCB0byB0aGUgYWRkaXRpb25hbCBwZXJtaXNzaW9ucy4KCiAgV2hlbiB5b3UgY29udmV5IGEgY29weSBvZiBhIGNvdmVyZWQgd29yaywgeW91IG1heSBhdCB5b3VyIG9wdGlvbgpyZW1vdmUgYW55IGFkZGl0aW9uYWwgcGVybWlzc2lvbnMgZnJvbSB0aGF0IGNvcHksIG9yIGZyb20gYW55IHBhcnQgb2YKaXQuICAoQWRkaXRpb25hbCBwZXJtaXNzaW9ucyBtYXkgYmUgd3JpdHRlbiB0byByZXF1aXJlIHRoZWlyIG93bgpyZW1vdmFsIGluIGNlcnRhaW4gY2FzZXMgd2hlbiB5b3UgbW9kaWZ5IHRoZSB3b3JrLikgIFlvdSBtYXkgcGxhY2UKYWRkaXRpb25hbCBwZXJtaXNzaW9ucyBvbiBtYXRlcmlhbCwgYWRkZWQgYnkgeW91IHRvIGEgY292ZXJlZCB3b3JrLApmb3Igd2hpY2ggeW91IGhhdmUgb3IgY2FuIGdpdmUgYXBwcm9wcmlhdGUgY29weXJpZ2h0IHBlcm1pc3Npb24uCgogIE5vdHdpdGhzdGFuZGluZyBhbnkgb3RoZXIgcHJvdmlzaW9uIG9mIHRoaXMgTGljZW5zZSwgZm9yIG1hdGVyaWFsIHlvdQphZGQgdG8gYSBjb3ZlcmVkIHdvcmssIHlvdSBtYXkgKGlmIGF1dGhvcml6ZWQgYnkgdGhlIGNvcHlyaWdodCBob2xkZXJzIG9mCnRoYXQgbWF0ZXJpYWwpIHN1cHBsZW1lbnQgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZSB3aXRoIHRlcm1zOgoKICAgIGEpIERpc2NsYWltaW5nIHdhcnJhbnR5IG9yIGxpbWl0aW5nIGxpYWJpbGl0eSBkaWZmZXJlbnRseSBmcm9tIHRoZQogICAgdGVybXMgb2Ygc2VjdGlvbnMgMTUgYW5kIDE2IG9mIHRoaXMgTGljZW5zZTsgb3IKCiAgICBiKSBSZXF1aXJpbmcgcHJlc2VydmF0aW9uIG9mIHNwZWNpZmllZCByZWFzb25hYmxlIGxlZ2FsIG5vdGljZXMgb3IKICAgIGF1dGhvciBhdHRyaWJ1dGlvbnMgaW4gdGhhdCBtYXRlcmlhbCBvciBpbiB0aGUgQXBwcm9wcmlhdGUgTGVnYWwKICAgIE5vdGljZXMgZGlzcGxheWVkIGJ5IHdvcmtzIGNvbnRhaW5pbmcgaXQ7IG9yCgogICAgYykgUHJvaGliaXRpbmcgbWlzcmVwcmVzZW50YXRpb24gb2YgdGhlIG9yaWdpbiBvZiB0aGF0IG1hdGVyaWFsLCBvcgogICAgcmVxdWlyaW5nIHRoYXQgbW9kaWZpZWQgdmVyc2lvbnMgb2Ygc3VjaCBtYXRlcmlhbCBiZSBtYXJrZWQgaW4KICAgIHJlYXNvbmFibGUgd2F5cyBhcyBkaWZmZXJlbnQgZnJvbSB0aGUgb3JpZ2luYWwgdmVyc2lvbjsgb3IKCiAgICBkKSBMaW1pdGluZyB0aGUgdXNlIGZvciBwdWJsaWNpdHkgcHVycG9zZXMgb2YgbmFtZXMgb2YgbGljZW5zb3JzIG9yCiAgICBhdXRob3JzIG9mIHRoZSBtYXRlcmlhbDsgb3IKCiAgICBlKSBEZWNsaW5pbmcgdG8gZ3JhbnQgcmlnaHRzIHVuZGVyIHRyYWRlbWFyayBsYXcgZm9yIHVzZSBvZiBzb21lCiAgICB0cmFkZSBuYW1lcywgdHJhZGVtYXJrcywgb3Igc2VydmljZSBtYXJrczsgb3IKCiAgICBmKSBSZXF1aXJpbmcgaW5kZW1uaWZpY2F0aW9uIG9mIGxpY2Vuc29ycyBhbmQgYXV0aG9ycyBvZiB0aGF0CiAgICBtYXRlcmlhbCBieSBhbnlvbmUgd2hvIGNvbnZleXMgdGhlIG1hdGVyaWFsIChvciBtb2RpZmllZCB2ZXJzaW9ucyBvZgogICAgaXQpIHdpdGggY29udHJhY3R1YWwgYXNzdW1wdGlvbnMgb2YgbGlhYmlsaXR5IHRvIHRoZSByZWNpcGllbnQsIGZvcgogICAgYW55IGxpYWJpbGl0eSB0aGF0IHRoZXNlIGNvbnRyYWN0dWFsIGFzc3VtcHRpb25zIGRpcmVjdGx5IGltcG9zZSBvbgogICAgdGhvc2UgbGljZW5zb3JzIGFuZCBhdXRob3JzLgoKICBBbGwgb3RoZXIgbm9uLXBlcm1pc3NpdmUgYWRkaXRpb25hbCB0ZXJtcyBhcmUgY29uc2lkZXJlZCAiZnVydGhlcgpyZXN0cmljdGlvbnMiIHdpdGhpbiB0aGUgbWVhbmluZyBvZiBzZWN0aW9uIDEwLiAgSWYgdGhlIFByb2dyYW0gYXMgeW91CnJlY2VpdmVkIGl0LCBvciBhbnkgcGFydCBvZiBpdCwgY29udGFpbnMgYSBub3RpY2Ugc3RhdGluZyB0aGF0IGl0IGlzCmdvdmVybmVkIGJ5IHRoaXMgTGljZW5zZSBhbG9uZyB3aXRoIGEgdGVybSB0aGF0IGlzIGEgZnVydGhlcgpyZXN0cmljdGlvbiwgeW91IG1heSByZW1vdmUgdGhhdCB0ZXJtLiAgSWYgYSBsaWNlbnNlIGRvY3VtZW50IGNvbnRhaW5zCmEgZnVydGhlciByZXN0cmljdGlvbiBidXQgcGVybWl0cyByZWxpY2Vuc2luZyBvciBjb252ZXlpbmcgdW5kZXIgdGhpcwpMaWNlbnNlLCB5b3UgbWF5IGFkZCB0byBhIGNvdmVyZWQgd29yayBtYXRlcmlhbCBnb3Zlcm5lZCBieSB0aGUgdGVybXMKb2YgdGhhdCBsaWNlbnNlIGRvY3VtZW50LCBwcm92aWRlZCB0aGF0IHRoZSBmdXJ0aGVyIHJlc3RyaWN0aW9uIGRvZXMKbm90IHN1cnZpdmUgc3VjaCByZWxpY2Vuc2luZyBvciBjb252ZXlpbmcuCgogIElmIHlvdSBhZGQgdGVybXMgdG8gYSBjb3ZlcmVkIHdvcmsgaW4gYWNjb3JkIHdpdGggdGhpcyBzZWN0aW9uLCB5b3UKbXVzdCBwbGFjZSwgaW4gdGhlIHJlbGV2YW50IHNvdXJjZSBmaWxlcywgYSBzdGF0ZW1lbnQgb2YgdGhlCmFkZGl0aW9uYWwgdGVybXMgdGhhdCBhcHBseSB0byB0aG9zZSBmaWxlcywgb3IgYSBub3RpY2UgaW5kaWNhdGluZwp3aGVyZSB0byBmaW5kIHRoZSBhcHBsaWNhYmxlIHRlcm1zLgoKICBBZGRpdGlvbmFsIHRlcm1zLCBwZXJtaXNzaXZlIG9yIG5vbi1wZXJtaXNzaXZlLCBtYXkgYmUgc3RhdGVkIGluIHRoZQpmb3JtIG9mIGEgc2VwYXJhdGVseSB3cml0dGVuIGxpY2Vuc2UsIG9yIHN0YXRlZCBhcyBleGNlcHRpb25zOwp0aGUgYWJvdmUgcmVxdWlyZW1lbnRzIGFwcGx5IGVpdGhlciB3YXkuCgogIDguIFRlcm1pbmF0aW9uLgoKICBZb3UgbWF5IG5vdCBwcm9wYWdhdGUgb3IgbW9kaWZ5IGEgY292ZXJlZCB3b3JrIGV4Y2VwdCBhcyBleHByZXNzbHkKcHJvdmlkZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgQW55IGF0dGVtcHQgb3RoZXJ3aXNlIHRvIHByb3BhZ2F0ZSBvcgptb2RpZnkgaXQgaXMgdm9pZCwgYW5kIHdpbGwgYXV0b21hdGljYWxseSB0ZXJtaW5hdGUgeW91ciByaWdodHMgdW5kZXIKdGhpcyBMaWNlbnNlIChpbmNsdWRpbmcgYW55IHBhdGVudCBsaWNlbnNlcyBncmFudGVkIHVuZGVyIHRoZSB0aGlyZApwYXJhZ3JhcGggb2Ygc2VjdGlvbiAxMSkuCgogIEhvd2V2ZXIsIGlmIHlvdSBjZWFzZSBhbGwgdmlvbGF0aW9uIG9mIHRoaXMgTGljZW5zZSwgdGhlbiB5b3VyCmxpY2Vuc2UgZnJvbSBhIHBhcnRpY3VsYXIgY29weXJpZ2h0IGhvbGRlciBpcyByZWluc3RhdGVkIChhKQpwcm92aXNpb25hbGx5LCB1bmxlc3MgYW5kIHVudGlsIHRoZSBjb3B5cmlnaHQgaG9sZGVyIGV4cGxpY2l0bHkgYW5kCmZpbmFsbHkgdGVybWluYXRlcyB5b3VyIGxpY2Vuc2UsIGFuZCAoYikgcGVybWFuZW50bHksIGlmIHRoZSBjb3B5cmlnaHQKaG9sZGVyIGZhaWxzIHRvIG5vdGlmeSB5b3Ugb2YgdGhlIHZpb2xhdGlvbiBieSBzb21lIHJlYXNvbmFibGUgbWVhbnMKcHJpb3IgdG8gNjAgZGF5cyBhZnRlciB0aGUgY2Vzc2F0aW9uLgoKICBNb3Jlb3ZlciwgeW91ciBsaWNlbnNlIGZyb20gYSBwYXJ0aWN1bGFyIGNvcHlyaWdodCBob2xkZXIgaXMKcmVpbnN0YXRlZCBwZXJtYW5lbnRseSBpZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3RpZmllcyB5b3Ugb2YgdGhlCnZpb2xhdGlvbiBieSBzb21lIHJlYXNvbmFibGUgbWVhbnMsIHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgeW91IGhhdmUKcmVjZWl2ZWQgbm90aWNlIG9mIHZpb2xhdGlvbiBvZiB0aGlzIExpY2Vuc2UgKGZvciBhbnkgd29yaykgZnJvbSB0aGF0CmNvcHlyaWdodCBob2xkZXIsIGFuZCB5b3UgY3VyZSB0aGUgdmlvbGF0aW9uIHByaW9yIHRvIDMwIGRheXMgYWZ0ZXIKeW91ciByZWNlaXB0IG9mIHRoZSBub3RpY2UuCgogIFRlcm1pbmF0aW9uIG9mIHlvdXIgcmlnaHRzIHVuZGVyIHRoaXMgc2VjdGlvbiBkb2VzIG5vdCB0ZXJtaW5hdGUgdGhlCmxpY2Vuc2VzIG9mIHBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzIG9yIHJpZ2h0cyBmcm9tIHlvdSB1bmRlcgp0aGlzIExpY2Vuc2UuICBJZiB5b3VyIHJpZ2h0cyBoYXZlIGJlZW4gdGVybWluYXRlZCBhbmQgbm90IHBlcm1hbmVudGx5CnJlaW5zdGF0ZWQsIHlvdSBkbyBub3QgcXVhbGlmeSB0byByZWNlaXZlIG5ldyBsaWNlbnNlcyBmb3IgdGhlIHNhbWUKbWF0ZXJpYWwgdW5kZXIgc2VjdGlvbiAxMC4KCiAgOS4gQWNjZXB0YW5jZSBOb3QgUmVxdWlyZWQgZm9yIEhhdmluZyBDb3BpZXMuCgogIFlvdSBhcmUgbm90IHJlcXVpcmVkIHRvIGFjY2VwdCB0aGlzIExpY2Vuc2UgaW4gb3JkZXIgdG8gcmVjZWl2ZSBvcgpydW4gYSBjb3B5IG9mIHRoZSBQcm9ncmFtLiAgQW5jaWxsYXJ5IHByb3BhZ2F0aW9uIG9mIGEgY292ZXJlZCB3b3JrCm9jY3VycmluZyBzb2xlbHkgYXMgYSBjb25zZXF1ZW5jZSBvZiB1c2luZyBwZWVyLXRvLXBlZXIgdHJhbnNtaXNzaW9uCnRvIHJlY2VpdmUgYSBjb3B5IGxpa2V3aXNlIGRvZXMgbm90IHJlcXVpcmUgYWNjZXB0YW5jZS4gIEhvd2V2ZXIsCm5vdGhpbmcgb3RoZXIgdGhhbiB0aGlzIExpY2Vuc2UgZ3JhbnRzIHlvdSBwZXJtaXNzaW9uIHRvIHByb3BhZ2F0ZSBvcgptb2RpZnkgYW55IGNvdmVyZWQgd29yay4gIFRoZXNlIGFjdGlvbnMgaW5mcmluZ2UgY29weXJpZ2h0IGlmIHlvdSBkbwpub3QgYWNjZXB0IHRoaXMgTGljZW5zZS4gIFRoZXJlZm9yZSwgYnkgbW9kaWZ5aW5nIG9yIHByb3BhZ2F0aW5nIGEKY292ZXJlZCB3b3JrLCB5b3UgaW5kaWNhdGUgeW91ciBhY2NlcHRhbmNlIG9mIHRoaXMgTGljZW5zZSB0byBkbyBzby4KCiAgMTAuIEF1dG9tYXRpYyBMaWNlbnNpbmcgb2YgRG93bnN0cmVhbSBSZWNpcGllbnRzLgoKICBFYWNoIHRpbWUgeW91IGNvbnZleSBhIGNvdmVyZWQgd29yaywgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNhbGx5CnJlY2VpdmVzIGEgbGljZW5zZSBmcm9tIHRoZSBvcmlnaW5hbCBsaWNlbnNvcnMsIHRvIHJ1biwgbW9kaWZ5IGFuZApwcm9wYWdhdGUgdGhhdCB3b3JrLCBzdWJqZWN0IHRvIHRoaXMgTGljZW5zZS4gIFlvdSBhcmUgbm90IHJlc3BvbnNpYmxlCmZvciBlbmZvcmNpbmcgY29tcGxpYW5jZSBieSB0aGlyZCBwYXJ0aWVzIHdpdGggdGhpcyBMaWNlbnNlLgoKICBBbiAiZW50aXR5IHRyYW5zYWN0aW9uIiBpcyBhIHRyYW5zYWN0aW9uIHRyYW5zZmVycmluZyBjb250cm9sIG9mIGFuCm9yZ2FuaXphdGlvbiwgb3Igc3Vic3RhbnRpYWxseSBhbGwgYXNzZXRzIG9mIG9uZSwgb3Igc3ViZGl2aWRpbmcgYW4Kb3JnYW5pemF0aW9uLCBvciBtZXJnaW5nIG9yZ2FuaXphdGlvbnMuICBJZiBwcm9wYWdhdGlvbiBvZiBhIGNvdmVyZWQKd29yayByZXN1bHRzIGZyb20gYW4gZW50aXR5IHRyYW5zYWN0aW9uLCBlYWNoIHBhcnR5IHRvIHRoYXQKdHJhbnNhY3Rpb24gd2hvIHJlY2VpdmVzIGEgY29weSBvZiB0aGUgd29yayBhbHNvIHJlY2VpdmVzIHdoYXRldmVyCmxpY2Vuc2VzIHRvIHRoZSB3b3JrIHRoZSBwYXJ0eSdzIHByZWRlY2Vzc29yIGluIGludGVyZXN0IGhhZCBvciBjb3VsZApnaXZlIHVuZGVyIHRoZSBwcmV2aW91cyBwYXJhZ3JhcGgsIHBsdXMgYSByaWdodCB0byBwb3NzZXNzaW9uIG9mIHRoZQpDb3JyZXNwb25kaW5nIFNvdXJjZSBvZiB0aGUgd29yayBmcm9tIHRoZSBwcmVkZWNlc3NvciBpbiBpbnRlcmVzdCwgaWYKdGhlIHByZWRlY2Vzc29yIGhhcyBpdCBvciBjYW4gZ2V0IGl0IHdpdGggcmVhc29uYWJsZSBlZmZvcnRzLgoKICBZb3UgbWF5IG5vdCBpbXBvc2UgYW55IGZ1cnRoZXIgcmVzdHJpY3Rpb25zIG9uIHRoZSBleGVyY2lzZSBvZiB0aGUKcmlnaHRzIGdyYW50ZWQgb3IgYWZmaXJtZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgRm9yIGV4YW1wbGUsIHlvdSBtYXkKbm90IGltcG9zZSBhIGxpY2Vuc2UgZmVlLCByb3lhbHR5LCBvciBvdGhlciBjaGFyZ2UgZm9yIGV4ZXJjaXNlIG9mCnJpZ2h0cyBncmFudGVkIHVuZGVyIHRoaXMgTGljZW5zZSwgYW5kIHlvdSBtYXkgbm90IGluaXRpYXRlIGxpdGlnYXRpb24KKGluY2x1ZGluZyBhIGNyb3NzLWNsYWltIG9yIGNvdW50ZXJjbGFpbSBpbiBhIGxhd3N1aXQpIGFsbGVnaW5nIHRoYXQKYW55IHBhdGVudCBjbGFpbSBpcyBpbmZyaW5nZWQgYnkgbWFraW5nLCB1c2luZywgc2VsbGluZywgb2ZmZXJpbmcgZm9yCnNhbGUsIG9yIGltcG9ydGluZyB0aGUgUHJvZ3JhbSBvciBhbnkgcG9ydGlvbiBvZiBpdC4KCiAgMTEuIFBhdGVudHMuCgogIEEgImNvbnRyaWJ1dG9yIiBpcyBhIGNvcHlyaWdodCBob2xkZXIgd2hvIGF1dGhvcml6ZXMgdXNlIHVuZGVyIHRoaXMKTGljZW5zZSBvZiB0aGUgUHJvZ3JhbSBvciBhIHdvcmsgb24gd2hpY2ggdGhlIFByb2dyYW0gaXMgYmFzZWQuICBUaGUKd29yayB0aHVzIGxpY2Vuc2VkIGlzIGNhbGxlZCB0aGUgY29udHJpYnV0b3IncyAiY29udHJpYnV0b3IgdmVyc2lvbiIuCgogIEEgY29udHJpYnV0b3IncyAiZXNzZW50aWFsIHBhdGVudCBjbGFpbXMiIGFyZSBhbGwgcGF0ZW50IGNsYWltcwpvd25lZCBvciBjb250cm9sbGVkIGJ5IHRoZSBjb250cmlidXRvciwgd2hldGhlciBhbHJlYWR5IGFjcXVpcmVkIG9yCmhlcmVhZnRlciBhY3F1aXJlZCwgdGhhdCB3b3VsZCBiZSBpbmZyaW5nZWQgYnkgc29tZSBtYW5uZXIsIHBlcm1pdHRlZApieSB0aGlzIExpY2Vuc2UsIG9mIG1ha2luZywgdXNpbmcsIG9yIHNlbGxpbmcgaXRzIGNvbnRyaWJ1dG9yIHZlcnNpb24sCmJ1dCBkbyBub3QgaW5jbHVkZSBjbGFpbXMgdGhhdCB3b3VsZCBiZSBpbmZyaW5nZWQgb25seSBhcyBhCmNvbnNlcXVlbmNlIG9mIGZ1cnRoZXIgbW9kaWZpY2F0aW9uIG9mIHRoZSBjb250cmlidXRvciB2ZXJzaW9uLiAgRm9yCnB1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwgImNvbnRyb2wiIGluY2x1ZGVzIHRoZSByaWdodCB0byBncmFudApwYXRlbnQgc3VibGljZW5zZXMgaW4gYSBtYW5uZXIgY29uc2lzdGVudCB3aXRoIHRoZSByZXF1aXJlbWVudHMgb2YKdGhpcyBMaWNlbnNlLgoKICBFYWNoIGNvbnRyaWJ1dG9yIGdyYW50cyB5b3UgYSBub24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsIHJveWFsdHktZnJlZQpwYXRlbnQgbGljZW5zZSB1bmRlciB0aGUgY29udHJpYnV0b3IncyBlc3NlbnRpYWwgcGF0ZW50IGNsYWltcywgdG8KbWFrZSwgdXNlLCBzZWxsLCBvZmZlciBmb3Igc2FsZSwgaW1wb3J0IGFuZCBvdGhlcndpc2UgcnVuLCBtb2RpZnkgYW5kCnByb3BhZ2F0ZSB0aGUgY29udGVudHMgb2YgaXRzIGNvbnRyaWJ1dG9yIHZlcnNpb24uCgogIEluIHRoZSBmb2xsb3dpbmcgdGhyZWUgcGFyYWdyYXBocywgYSAicGF0ZW50IGxpY2Vuc2UiIGlzIGFueSBleHByZXNzCmFncmVlbWVudCBvciBjb21taXRtZW50LCBob3dldmVyIGRlbm9taW5hdGVkLCBub3QgdG8gZW5mb3JjZSBhIHBhdGVudAooc3VjaCBhcyBhbiBleHByZXNzIHBlcm1pc3Npb24gdG8gcHJhY3RpY2UgYSBwYXRlbnQgb3IgY292ZW5hbnQgbm90IHRvCnN1ZSBmb3IgcGF0ZW50IGluZnJpbmdlbWVudCkuICBUbyAiZ3JhbnQiIHN1Y2ggYSBwYXRlbnQgbGljZW5zZSB0byBhCnBhcnR5IG1lYW5zIHRvIG1ha2Ugc3VjaCBhbiBhZ3JlZW1lbnQgb3IgY29tbWl0bWVudCBub3QgdG8gZW5mb3JjZSBhCnBhdGVudCBhZ2FpbnN0IHRoZSBwYXJ0eS4KCiAgSWYgeW91IGNvbnZleSBhIGNvdmVyZWQgd29yaywga25vd2luZ2x5IHJlbHlpbmcgb24gYSBwYXRlbnQgbGljZW5zZSwKYW5kIHRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBvZiB0aGUgd29yayBpcyBub3QgYXZhaWxhYmxlIGZvciBhbnlvbmUKdG8gY29weSwgZnJlZSBvZiBjaGFyZ2UgYW5kIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UsIHRocm91Z2ggYQpwdWJsaWNseSBhdmFpbGFibGUgbmV0d29yayBzZXJ2ZXIgb3Igb3RoZXIgcmVhZGlseSBhY2Nlc3NpYmxlIG1lYW5zLAp0aGVuIHlvdSBtdXN0IGVpdGhlciAoMSkgY2F1c2UgdGhlIENvcnJlc3BvbmRpbmcgU291cmNlIHRvIGJlIHNvCmF2YWlsYWJsZSwgb3IgKDIpIGFycmFuZ2UgdG8gZGVwcml2ZSB5b3Vyc2VsZiBvZiB0aGUgYmVuZWZpdCBvZiB0aGUKcGF0ZW50IGxpY2Vuc2UgZm9yIHRoaXMgcGFydGljdWxhciB3b3JrLCBvciAoMykgYXJyYW5nZSwgaW4gYSBtYW5uZXIKY29uc2lzdGVudCB3aXRoIHRoZSByZXF1aXJlbWVudHMgb2YgdGhpcyBMaWNlbnNlLCB0byBleHRlbmQgdGhlIHBhdGVudApsaWNlbnNlIHRvIGRvd25zdHJlYW0gcmVjaXBpZW50cy4gICJLbm93aW5nbHkgcmVseWluZyIgbWVhbnMgeW91IGhhdmUKYWN0dWFsIGtub3dsZWRnZSB0aGF0LCBidXQgZm9yIHRoZSBwYXRlbnQgbGljZW5zZSwgeW91ciBjb252ZXlpbmcgdGhlCmNvdmVyZWQgd29yayBpbiBhIGNvdW50cnksIG9yIHlvdXIgcmVjaXBpZW50J3MgdXNlIG9mIHRoZSBjb3ZlcmVkIHdvcmsKaW4gYSBjb3VudHJ5LCB3b3VsZCBpbmZyaW5nZSBvbmUgb3IgbW9yZSBpZGVudGlmaWFibGUgcGF0ZW50cyBpbiB0aGF0CmNvdW50cnkgdGhhdCB5b3UgaGF2ZSByZWFzb24gdG8gYmVsaWV2ZSBhcmUgdmFsaWQuCgogIElmLCBwdXJzdWFudCB0byBvciBpbiBjb25uZWN0aW9uIHdpdGggYSBzaW5nbGUgdHJhbnNhY3Rpb24gb3IKYXJyYW5nZW1lbnQsIHlvdSBjb252ZXksIG9yIHByb3BhZ2F0ZSBieSBwcm9jdXJpbmcgY29udmV5YW5jZSBvZiwgYQpjb3ZlcmVkIHdvcmssIGFuZCBncmFudCBhIHBhdGVudCBsaWNlbnNlIHRvIHNvbWUgb2YgdGhlIHBhcnRpZXMKcmVjZWl2aW5nIHRoZSBjb3ZlcmVkIHdvcmsgYXV0aG9yaXppbmcgdGhlbSB0byB1c2UsIHByb3BhZ2F0ZSwgbW9kaWZ5Cm9yIGNvbnZleSBhIHNwZWNpZmljIGNvcHkgb2YgdGhlIGNvdmVyZWQgd29yaywgdGhlbiB0aGUgcGF0ZW50IGxpY2Vuc2UKeW91IGdyYW50IGlzIGF1dG9tYXRpY2FsbHkgZXh0ZW5kZWQgdG8gYWxsIHJlY2lwaWVudHMgb2YgdGhlIGNvdmVyZWQKd29yayBhbmQgd29ya3MgYmFzZWQgb24gaXQuCgogIEEgcGF0ZW50IGxpY2Vuc2UgaXMgImRpc2NyaW1pbmF0b3J5IiBpZiBpdCBkb2VzIG5vdCBpbmNsdWRlIHdpdGhpbgp0aGUgc2NvcGUgb2YgaXRzIGNvdmVyYWdlLCBwcm9oaWJpdHMgdGhlIGV4ZXJjaXNlIG9mLCBvciBpcwpjb25kaXRpb25lZCBvbiB0aGUgbm9uLWV4ZXJjaXNlIG9mIG9uZSBvciBtb3JlIG9mIHRoZSByaWdodHMgdGhhdCBhcmUKc3BlY2lmaWNhbGx5IGdyYW50ZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgWW91IG1heSBub3QgY29udmV5IGEgY292ZXJlZAp3b3JrIGlmIHlvdSBhcmUgYSBwYXJ0eSB0byBhbiBhcnJhbmdlbWVudCB3aXRoIGEgdGhpcmQgcGFydHkgdGhhdCBpcwppbiB0aGUgYnVzaW5lc3Mgb2YgZGlzdHJpYnV0aW5nIHNvZnR3YXJlLCB1bmRlciB3aGljaCB5b3UgbWFrZSBwYXltZW50CnRvIHRoZSB0aGlyZCBwYXJ0eSBiYXNlZCBvbiB0aGUgZXh0ZW50IG9mIHlvdXIgYWN0aXZpdHkgb2YgY29udmV5aW5nCnRoZSB3b3JrLCBhbmQgdW5kZXIgd2hpY2ggdGhlIHRoaXJkIHBhcnR5IGdyYW50cywgdG8gYW55IG9mIHRoZQpwYXJ0aWVzIHdobyB3b3VsZCByZWNlaXZlIHRoZSBjb3ZlcmVkIHdvcmsgZnJvbSB5b3UsIGEgZGlzY3JpbWluYXRvcnkKcGF0ZW50IGxpY2Vuc2UgKGEpIGluIGNvbm5lY3Rpb24gd2l0aCBjb3BpZXMgb2YgdGhlIGNvdmVyZWQgd29yawpjb252ZXllZCBieSB5b3UgKG9yIGNvcGllcyBtYWRlIGZyb20gdGhvc2UgY29waWVzKSwgb3IgKGIpIHByaW1hcmlseQpmb3IgYW5kIGluIGNvbm5lY3Rpb24gd2l0aCBzcGVjaWZpYyBwcm9kdWN0cyBvciBjb21waWxhdGlvbnMgdGhhdApjb250YWluIHRoZSBjb3ZlcmVkIHdvcmssIHVubGVzcyB5b3UgZW50ZXJlZCBpbnRvIHRoYXQgYXJyYW5nZW1lbnQsCm9yIHRoYXQgcGF0ZW50IGxpY2Vuc2Ugd2FzIGdyYW50ZWQsIHByaW9yIHRvIDI4IE1hcmNoIDIwMDcuCgogIE5vdGhpbmcgaW4gdGhpcyBMaWNlbnNlIHNoYWxsIGJlIGNvbnN0cnVlZCBhcyBleGNsdWRpbmcgb3IgbGltaXRpbmcKYW55IGltcGxpZWQgbGljZW5zZSBvciBvdGhlciBkZWZlbnNlcyB0byBpbmZyaW5nZW1lbnQgdGhhdCBtYXkKb3RoZXJ3aXNlIGJlIGF2YWlsYWJsZSB0byB5b3UgdW5kZXIgYXBwbGljYWJsZSBwYXRlbnQgbGF3LgoKICAxMi4gTm8gU3VycmVuZGVyIG9mIE90aGVycycgRnJlZWRvbS4KCiAgSWYgY29uZGl0aW9ucyBhcmUgaW1wb3NlZCBvbiB5b3UgKHdoZXRoZXIgYnkgY291cnQgb3JkZXIsIGFncmVlbWVudCBvcgpvdGhlcndpc2UpIHRoYXQgY29udHJhZGljdCB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UsIHRoZXkgZG8gbm90CmV4Y3VzZSB5b3UgZnJvbSB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UuICBJZiB5b3UgY2Fubm90IGNvbnZleSBhCmNvdmVyZWQgd29yayBzbyBhcyB0byBzYXRpc2Z5IHNpbXVsdGFuZW91c2x5IHlvdXIgb2JsaWdhdGlvbnMgdW5kZXIgdGhpcwpMaWNlbnNlIGFuZCBhbnkgb3RoZXIgcGVydGluZW50IG9ibGlnYXRpb25zLCB0aGVuIGFzIGEgY29uc2VxdWVuY2UgeW91IG1heQpub3QgY29udmV5IGl0IGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiB5b3UgYWdyZWUgdG8gdGVybXMgdGhhdCBvYmxpZ2F0ZSB5b3UKdG8gY29sbGVjdCBhIHJveWFsdHkgZm9yIGZ1cnRoZXIgY29udmV5aW5nIGZyb20gdGhvc2UgdG8gd2hvbSB5b3UgY29udmV5CnRoZSBQcm9ncmFtLCB0aGUgb25seSB3YXkgeW91IGNvdWxkIHNhdGlzZnkgYm90aCB0aG9zZSB0ZXJtcyBhbmQgdGhpcwpMaWNlbnNlIHdvdWxkIGJlIHRvIHJlZnJhaW4gZW50aXJlbHkgZnJvbSBjb252ZXlpbmcgdGhlIFByb2dyYW0uCgogIDEzLiBSZW1vdGUgTmV0d29yayBJbnRlcmFjdGlvbjsgVXNlIHdpdGggdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgoKICBOb3R3aXRoc3RhbmRpbmcgYW55IG90aGVyIHByb3Zpc2lvbiBvZiB0aGlzIExpY2Vuc2UsIGlmIHlvdSBtb2RpZnkgdGhlClByb2dyYW0sIHlvdXIgbW9kaWZpZWQgdmVyc2lvbiBtdXN0IHByb21pbmVudGx5IG9mZmVyIGFsbCB1c2VycwppbnRlcmFjdGluZyB3aXRoIGl0IHJlbW90ZWx5IHRocm91Z2ggYSBjb21wdXRlciBuZXR3b3JrIChpZiB5b3VyIHZlcnNpb24Kc3VwcG9ydHMgc3VjaCBpbnRlcmFjdGlvbikgYW4gb3Bwb3J0dW5pdHkgdG8gcmVjZWl2ZSB0aGUgQ29ycmVzcG9uZGluZwpTb3VyY2Ugb2YgeW91ciB2ZXJzaW9uIGJ5IHByb3ZpZGluZyBhY2Nlc3MgdG8gdGhlIENvcnJlc3BvbmRpbmcgU291cmNlCmZyb20gYSBuZXR3b3JrIHNlcnZlciBhdCBubyBjaGFyZ2UsIHRocm91Z2ggc29tZSBzdGFuZGFyZCBvciBjdXN0b21hcnkKbWVhbnMgb2YgZmFjaWxpdGF0aW5nIGNvcHlpbmcgb2Ygc29mdHdhcmUuICBUaGlzIENvcnJlc3BvbmRpbmcgU291cmNlCnNoYWxsIGluY2x1ZGUgdGhlIENvcnJlc3BvbmRpbmcgU291cmNlIGZvciBhbnkgd29yayBjb3ZlcmVkIGJ5IHZlcnNpb24gMwpvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdGhhdCBpcyBpbmNvcnBvcmF0ZWQgcHVyc3VhbnQgdG8gdGhlCmZvbGxvd2luZyBwYXJhZ3JhcGguCgogIE5vdHdpdGhzdGFuZGluZyBhbnkgb3RoZXIgcHJvdmlzaW9uIG9mIHRoaXMgTGljZW5zZSwgeW91IGhhdmUKcGVybWlzc2lvbiB0byBsaW5rIG9yIGNvbWJpbmUgYW55IGNvdmVyZWQgd29yayB3aXRoIGEgd29yayBsaWNlbnNlZAp1bmRlciB2ZXJzaW9uIDMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGludG8gYSBzaW5nbGUKY29tYmluZWQgd29yaywgYW5kIHRvIGNvbnZleSB0aGUgcmVzdWx0aW5nIHdvcmsuICBUaGUgdGVybXMgb2YgdGhpcwpMaWNlbnNlIHdpbGwgY29udGludWUgdG8gYXBwbHkgdG8gdGhlIHBhcnQgd2hpY2ggaXMgdGhlIGNvdmVyZWQgd29yaywKYnV0IHRoZSB3b3JrIHdpdGggd2hpY2ggaXQgaXMgY29tYmluZWQgd2lsbCByZW1haW4gZ292ZXJuZWQgYnkgdmVyc2lvbgozIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KCiAgMTQuIFJldmlzZWQgVmVyc2lvbnMgb2YgdGhpcyBMaWNlbnNlLgoKICBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldyB2ZXJzaW9ucyBvZgp0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZyb20gdGltZSB0byB0aW1lLiAgU3VjaCBuZXcgdmVyc2lvbnMKd2lsbCBiZSBzaW1pbGFyIGluIHNwaXJpdCB0byB0aGUgcHJlc2VudCB2ZXJzaW9uLCBidXQgbWF5IGRpZmZlciBpbiBkZXRhaWwgdG8KYWRkcmVzcyBuZXcgcHJvYmxlbXMgb3IgY29uY2VybnMuCgogIEVhY2ggdmVyc2lvbiBpcyBnaXZlbiBhIGRpc3Rpbmd1aXNoaW5nIHZlcnNpb24gbnVtYmVyLiAgSWYgdGhlClByb2dyYW0gc3BlY2lmaWVzIHRoYXQgYSBjZXJ0YWluIG51bWJlcmVkIHZlcnNpb24gb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbApQdWJsaWMgTGljZW5zZSAib3IgYW55IGxhdGVyIHZlcnNpb24iIGFwcGxpZXMgdG8gaXQsIHlvdSBoYXZlIHRoZQpvcHRpb24gb2YgZm9sbG93aW5nIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBlaXRoZXIgb2YgdGhhdCBudW1iZXJlZAp2ZXJzaW9uIG9yIG9mIGFueSBsYXRlciB2ZXJzaW9uIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQpGb3VuZGF0aW9uLiAgSWYgdGhlIFByb2dyYW0gZG9lcyBub3Qgc3BlY2lmeSBhIHZlcnNpb24gbnVtYmVyIG9mIHRoZQpHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHlvdSBtYXkgY2hvb3NlIGFueSB2ZXJzaW9uIGV2ZXIgcHVibGlzaGVkCmJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCgogIElmIHRoZSBQcm9ncmFtIHNwZWNpZmllcyB0aGF0IGEgcHJveHkgY2FuIGRlY2lkZSB3aGljaCBmdXR1cmUKdmVyc2lvbnMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBjYW4gYmUgdXNlZCwgdGhhdCBwcm94eSdzCnB1YmxpYyBzdGF0ZW1lbnQgb2YgYWNjZXB0YW5jZSBvZiBhIHZlcnNpb24gcGVybWFuZW50bHkgYXV0aG9yaXplcyB5b3UKdG8gY2hvb3NlIHRoYXQgdmVyc2lvbiBmb3IgdGhlIFByb2dyYW0uCgogIExhdGVyIGxpY2Vuc2UgdmVyc2lvbnMgbWF5IGdpdmUgeW91IGFkZGl0aW9uYWwgb3IgZGlmZmVyZW50CnBlcm1pc3Npb25zLiAgSG93ZXZlciwgbm8gYWRkaXRpb25hbCBvYmxpZ2F0aW9ucyBhcmUgaW1wb3NlZCBvbiBhbnkKYXV0aG9yIG9yIGNvcHlyaWdodCBob2xkZXIgYXMgYSByZXN1bHQgb2YgeW91ciBjaG9vc2luZyB0byBmb2xsb3cgYQpsYXRlciB2ZXJzaW9uLgoKICAxNS4gRGlzY2xhaW1lciBvZiBXYXJyYW50eS4KCiAgVEhFUkUgSVMgTk8gV0FSUkFOVFkgRk9SIFRIRSBQUk9HUkFNLCBUTyBUSEUgRVhURU5UIFBFUk1JVFRFRCBCWQpBUFBMSUNBQkxFIExBVy4gIEVYQ0VQVCBXSEVOIE9USEVSV0lTRSBTVEFURUQgSU4gV1JJVElORyBUSEUgQ09QWVJJR0hUCkhPTERFUlMgQU5EL09SIE9USEVSIFBBUlRJRVMgUFJPVklERSBUSEUgUFJPR1JBTSAiQVMgSVMiIFdJVEhPVVQgV0FSUkFOVFkKT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTRUQgT1IgSU1QTElFRCwgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sClRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKUFVSUE9TRS4gIFRIRSBFTlRJUkUgUklTSyBBUyBUTyBUSEUgUVVBTElUWSBBTkQgUEVSRk9STUFOQ0UgT0YgVEhFIFBST0dSQU0KSVMgV0lUSCBZT1UuICBTSE9VTEQgVEhFIFBST0dSQU0gUFJPVkUgREVGRUNUSVZFLCBZT1UgQVNTVU1FIFRIRSBDT1NUIE9GCkFMTCBORUNFU1NBUlkgU0VSVklDSU5HLCBSRVBBSVIgT1IgQ09SUkVDVElPTi4KCiAgMTYuIExpbWl0YXRpb24gb2YgTGlhYmlsaXR5LgoKICBJTiBOTyBFVkVOVCBVTkxFU1MgUkVRVUlSRUQgQlkgQVBQTElDQUJMRSBMQVcgT1IgQUdSRUVEIFRPIElOIFdSSVRJTkcKV0lMTCBBTlkgQ09QWVJJR0hUIEhPTERFUiwgT1IgQU5ZIE9USEVSIFBBUlRZIFdITyBNT0RJRklFUyBBTkQvT1IgQ09OVkVZUwpUSEUgUFJPR1JBTSBBUyBQRVJNSVRURUQgQUJPVkUsIEJFIExJQUJMRSBUTyBZT1UgRk9SIERBTUFHRVMsIElOQ0xVRElORyBBTlkKR0VORVJBTCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgQVJJU0lORyBPVVQgT0YgVEhFClVTRSBPUiBJTkFCSUxJVFkgVE8gVVNFIFRIRSBQUk9HUkFNIChJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIExPU1MgT0YKREFUQSBPUiBEQVRBIEJFSU5HIFJFTkRFUkVEIElOQUNDVVJBVEUgT1IgTE9TU0VTIFNVU1RBSU5FRCBCWSBZT1UgT1IgVEhJUkQKUEFSVElFUyBPUiBBIEZBSUxVUkUgT0YgVEhFIFBST0dSQU0gVE8gT1BFUkFURSBXSVRIIEFOWSBPVEhFUiBQUk9HUkFNUyksCkVWRU4gSUYgU1VDSCBIT0xERVIgT1IgT1RIRVIgUEFSVFkgSEFTIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKU1VDSCBEQU1BR0VTLgoKICAxNy4gSW50ZXJwcmV0YXRpb24gb2YgU2VjdGlvbnMgMTUgYW5kIDE2LgoKICBJZiB0aGUgZGlzY2xhaW1lciBvZiB3YXJyYW50eSBhbmQgbGltaXRhdGlvbiBvZiBsaWFiaWxpdHkgcHJvdmlkZWQKYWJvdmUgY2Fubm90IGJlIGdpdmVuIGxvY2FsIGxlZ2FsIGVmZmVjdCBhY2NvcmRpbmcgdG8gdGhlaXIgdGVybXMsCnJldmlld2luZyBjb3VydHMgc2hhbGwgYXBwbHkgbG9jYWwgbGF3IHRoYXQgbW9zdCBjbG9zZWx5IGFwcHJveGltYXRlcwphbiBhYnNvbHV0ZSB3YWl2ZXIgb2YgYWxsIGNpdmlsIGxpYWJpbGl0eSBpbiBjb25uZWN0aW9uIHdpdGggdGhlClByb2dyYW0sIHVubGVzcyBhIHdhcnJhbnR5IG9yIGFzc3VtcHRpb24gb2YgbGlhYmlsaXR5IGFjY29tcGFuaWVzIGEKY29weSBvZiB0aGUgUHJvZ3JhbSBpbiByZXR1cm4gZm9yIGEgZmVlLgoKICAgICAgICAgICAgICAgICAgICAgRU5EIE9GIFRFUk1TIEFORCBDT05ESVRJT05TCgogICAgICAgICAgICBIb3cgdG8gQXBwbHkgVGhlc2UgVGVybXMgdG8gWW91ciBOZXcgUHJvZ3JhbXMKCiAgSWYgeW91IGRldmVsb3AgYSBuZXcgcHJvZ3JhbSwgYW5kIHlvdSB3YW50IGl0IHRvIGJlIG9mIHRoZSBncmVhdGVzdApwb3NzaWJsZSB1c2UgdG8gdGhlIHB1YmxpYywgdGhlIGJlc3Qgd2F5IHRvIGFjaGlldmUgdGhpcyBpcyB0byBtYWtlIGl0CmZyZWUgc29mdHdhcmUgd2hpY2ggZXZlcnlvbmUgY2FuIHJlZGlzdHJpYnV0ZSBhbmQgY2hhbmdlIHVuZGVyIHRoZXNlIHRlcm1zLgoKICBUbyBkbyBzbywgYXR0YWNoIHRoZSBmb2xsb3dpbmcgbm90aWNlcyB0byB0aGUgcHJvZ3JhbS4gIEl0IGlzIHNhZmVzdAp0byBhdHRhY2ggdGhlbSB0byB0aGUgc3RhcnQgb2YgZWFjaCBzb3VyY2UgZmlsZSB0byBtb3N0IGVmZmVjdGl2ZWx5CnN0YXRlIHRoZSBleGNsdXNpb24gb2Ygd2FycmFudHk7IGFuZCBlYWNoIGZpbGUgc2hvdWxkIGhhdmUgYXQgbGVhc3QKdGhlICJjb3B5cmlnaHQiIGxpbmUgYW5kIGEgcG9pbnRlciB0byB3aGVyZSB0aGUgZnVsbCBub3RpY2UgaXMgZm91bmQuCgogICAgPG9uZSBsaW5lIHRvIGdpdmUgdGhlIHByb2dyYW0ncyBuYW1lIGFuZCBhIGJyaWVmIGlkZWEgb2Ygd2hhdCBpdCBkb2VzLj4KICAgIENvcHlyaWdodCAoQykgPHllYXI+ICA8bmFtZSBvZiBhdXRob3I+CgogICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCgogICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KCkFsc28gYWRkIGluZm9ybWF0aW9uIG9uIGhvdyB0byBjb250YWN0IHlvdSBieSBlbGVjdHJvbmljIGFuZCBwYXBlciBtYWlsLgoKICBJZiB5b3VyIHNvZnR3YXJlIGNhbiBpbnRlcmFjdCB3aXRoIHVzZXJzIHJlbW90ZWx5IHRocm91Z2ggYSBjb21wdXRlcgpuZXR3b3JrLCB5b3Ugc2hvdWxkIGFsc28gbWFrZSBzdXJlIHRoYXQgaXQgcHJvdmlkZXMgYSB3YXkgZm9yIHVzZXJzIHRvCmdldCBpdHMgc291cmNlLiAgRm9yIGV4YW1wbGUsIGlmIHlvdXIgcHJvZ3JhbSBpcyBhIHdlYiBhcHBsaWNhdGlvbiwgaXRzCmludGVyZmFjZSBjb3VsZCBkaXNwbGF5IGEgIlNvdXJjZSIgbGluayB0aGF0IGxlYWRzIHVzZXJzIHRvIGFuIGFyY2hpdmUKb2YgdGhlIGNvZGUuICBUaGVyZSBhcmUgbWFueSB3YXlzIHlvdSBjb3VsZCBvZmZlciBzb3VyY2UsIGFuZCBkaWZmZXJlbnQKc29sdXRpb25zIHdpbGwgYmUgYmV0dGVyIGZvciBkaWZmZXJlbnQgcHJvZ3JhbXM7IHNlZSBzZWN0aW9uIDEzIGZvciB0aGUKc3BlY2lmaWMgcmVxdWlyZW1lbnRzLgoKICBZb3Ugc2hvdWxkIGFsc28gZ2V0IHlvdXIgZW1wbG95ZXIgKGlmIHlvdSB3b3JrIGFzIGEgcHJvZ3JhbW1lcikgb3Igc2Nob29sLAppZiBhbnksIHRvIHNpZ24gYSAiY29weXJpZ2h0IGRpc2NsYWltZXIiIGZvciB0aGUgcHJvZ3JhbSwgaWYgbmVjZXNzYXJ5LgpGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzLCBhbmQgaG93IHRvIGFwcGx5IGFuZCBmb2xsb3cgdGhlIEdOVSBBR1BMLCBzZWUKPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lgo=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/ViewerJS/compatibility.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogLSotIE1vZGU6IEphdmE7IHRhYi13aWR0aDogMjsgaW5kZW50LXRhYnMtbW9kZTogbmlsOyBjLWJhc2ljLW9mZnNldDogMiAtKi0gKi8KLyogdmltOiBzZXQgc2hpZnR3aWR0aD0yIHRhYnN0b3A9MiBhdXRvaW5kZW50IGNpbmRlbnQgZXhwYW5kdGFiOiAqLwovKiBDb3B5cmlnaHQgMjAxMiBNb3ppbGxhIEZvdW5kYXRpb24KICoKICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAqCiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKICoKICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAogKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KICovCi8qIGdsb2JhbHMgVkJBcnJheSwgUERGSlMgKi8KCid1c2Ugc3RyaWN0JzsKCi8vIEluaXRpYWxpemluZyBQREZKUyBnbG9iYWwgb2JqZWN0IGhlcmUsIGl0IGNhc2UgaWYgd2UgbmVlZCB0byBjaGFuZ2UvZGlzYWJsZQovLyBzb21lIFBERi5qcyBmZWF0dXJlcywgZS5nLiByYW5nZSByZXF1ZXN0cwppZiAodHlwZW9mIFBERkpTID09PSAndW5kZWZpbmVkJykgewogICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdyA6IHRoaXMpLlBERkpTID0ge307Cn0KCi8vIENoZWNraW5nIGlmIHRoZSB0eXBlZCBhcnJheXMgYXJlIHN1cHBvcnRlZAovLyBTdXBwb3J0OiBpT1M8Ni4wIChzdWJhcnJheSksIElFPDEwLCBBbmRyb2lkPDQuMAooZnVuY3Rpb24gY2hlY2tUeXBlZEFycmF5Q29tcGF0aWJpbGl0eSgpIHsKICBpZiAodHlwZW9mIFVpbnQ4QXJyYXkgIT09ICd1bmRlZmluZWQnKSB7CiAgICAvLyBTdXBwb3J0OiBpT1M8Ni4wCiAgICBpZiAodHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLnN1YmFycmF5ID09PSAndW5kZWZpbmVkJykgewogICAgICAgIFVpbnQ4QXJyYXkucHJvdG90eXBlLnN1YmFycmF5ID0gZnVuY3Rpb24gc3ViYXJyYXkoc3RhcnQsIGVuZCkgewogICAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KHRoaXMuc2xpY2Uoc3RhcnQsIGVuZCkpOwogICAgICAgIH07CiAgICAgICAgRmxvYXQzMkFycmF5LnByb3RvdHlwZS5zdWJhcnJheSA9IGZ1bmN0aW9uIHN1YmFycmF5KHN0YXJ0LCBlbmQpIHsKICAgICAgICAgIHJldHVybiBuZXcgRmxvYXQzMkFycmF5KHRoaXMuc2xpY2Uoc3RhcnQsIGVuZCkpOwogICAgICAgIH07CiAgICB9CgogICAgLy8gU3VwcG9ydDogQW5kcm9pZDw0LjEKICAgIGlmICh0eXBlb2YgRmxvYXQ2NEFycmF5ID09PSAndW5kZWZpbmVkJykgewogICAgICB3aW5kb3cuRmxvYXQ2NEFycmF5ID0gRmxvYXQzMkFycmF5OwogICAgfQogICAgcmV0dXJuOwogIH0KCiAgZnVuY3Rpb24gc3ViYXJyYXkoc3RhcnQsIGVuZCkgewogICAgcmV0dXJuIG5ldyBUeXBlZEFycmF5KHRoaXMuc2xpY2Uoc3RhcnQsIGVuZCkpOwogIH0KCiAgZnVuY3Rpb24gc2V0QXJyYXlPZmZzZXQoYXJyYXksIG9mZnNldCkgewogICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSB7CiAgICAgIG9mZnNldCA9IDA7CiAgICB9CiAgICBmb3IgKHZhciBpID0gMCwgbiA9IGFycmF5Lmxlbmd0aDsgaSA8IG47ICsraSwgKytvZmZzZXQpIHsKICAgICAgdGhpc1tvZmZzZXRdID0gYXJyYXlbaV0gJiAweEZGOwogICAgfQogIH0KCiAgZnVuY3Rpb24gVHlwZWRBcnJheShhcmcxKSB7CiAgICB2YXIgcmVzdWx0LCBpLCBuOwogICAgaWYgKHR5cGVvZiBhcmcxID09PSAnbnVtYmVyJykgewogICAgICByZXN1bHQgPSBbXTsKICAgICAgZm9yIChpID0gMDsgaSA8IGFyZzE7ICsraSkgewogICAgICAgIHJlc3VsdFtpXSA9IDA7CiAgICAgIH0KICAgIH0gZWxzZSBpZiAoJ3NsaWNlJyBpbiBhcmcxKSB7CiAgICAgIHJlc3VsdCA9IGFyZzEuc2xpY2UoMCk7CiAgICB9IGVsc2UgewogICAgICByZXN1bHQgPSBbXTsKICAgICAgZm9yIChpID0gMCwgbiA9IGFyZzEubGVuZ3RoOyBpIDwgbjsgKytpKSB7CiAgICAgICAgcmVzdWx0W2ldID0gYXJnMVtpXTsKICAgICAgfQogICAgfQoKICAgIHJlc3VsdC5zdWJhcnJheSA9IHN1YmFycmF5OwogICAgcmVzdWx0LmJ1ZmZlciA9IHJlc3VsdDsKICAgIHJlc3VsdC5ieXRlTGVuZ3RoID0gcmVzdWx0Lmxlbmd0aDsKICAgIHJlc3VsdC5zZXQgPSBzZXRBcnJheU9mZnNldDsKCiAgICBpZiAodHlwZW9mIGFyZzEgPT09ICdvYmplY3QnICYmIGFyZzEuYnVmZmVyKSB7CiAgICAgIHJlc3VsdC5idWZmZXIgPSBhcmcxLmJ1ZmZlcjsKICAgIH0KICAgIHJldHVybiByZXN1bHQ7CiAgfQoKICB3aW5kb3cuVWludDhBcnJheSA9IFR5cGVkQXJyYXk7CiAgd2luZG93LkludDhBcnJheSA9IFR5cGVkQXJyYXk7CgogIC8vIHdlIGRvbid0IG5lZWQgc3VwcG9ydCBmb3Igc2V0LCBieXRlTGVuZ3RoIGZvciAzMi1iaXQgYXJyYXkKICAvLyBzbyB3ZSBjYW4gdXNlIHRoZSBUeXBlZEFycmF5IGFzIHdlbGwKICB3aW5kb3cuVWludDMyQXJyYXkgPSBUeXBlZEFycmF5OwogIHdpbmRvdy5JbnQzMkFycmF5ID0gVHlwZWRBcnJheTsKICB3aW5kb3cuVWludDE2QXJyYXkgPSBUeXBlZEFycmF5OwogIHdpbmRvdy5GbG9hdDMyQXJyYXkgPSBUeXBlZEFycmF5OwogIHdpbmRvdy5GbG9hdDY0QXJyYXkgPSBUeXBlZEFycmF5Owp9KSgpOwoKLy8gVVJMID0gVVJMIHx8IHdlYmtpdFVSTAovLyBTdXBwb3J0OiBTYWZhcmk8NywgQW5kcm9pZCA0LjIrCihmdW5jdGlvbiBub3JtYWxpemVVUkxPYmplY3QoKSB7CiAgaWYgKCF3aW5kb3cuVVJMKSB7CiAgICB3aW5kb3cuVVJMID0gd2luZG93LndlYmtpdFVSTDsKICB9Cn0pKCk7CgovLyBPYmplY3QuZGVmaW5lUHJvcGVydHkoKT8KLy8gU3VwcG9ydDogQW5kcm9pZDw0LjAsIFNhZmFyaTw1LjEKKGZ1bmN0aW9uIGNoZWNrT2JqZWN0RGVmaW5lUHJvcGVydHlDb21wYXRpYmlsaXR5KCkgewogIGlmICh0eXBlb2YgT2JqZWN0LmRlZmluZVByb3BlcnR5ICE9PSAndW5kZWZpbmVkJykgewogICAgdmFyIGRlZmluZVByb3BlcnR5UG9zc2libGUgPSB0cnVlOwogICAgdHJ5IHsKICAgICAgLy8gc29tZSBicm93c2VycyAoZS5nLiBzYWZhcmkpIGNhbm5vdCB1c2UgZGVmaW5lUHJvcGVydHkoKSBvbiBET00gb2JqZWN0cwogICAgICAvLyBhbmQgdGh1cyB0aGUgbmF0aXZlIHZlcnNpb24gaXMgbm90IHN1ZmZpY2llbnQKICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBJbWFnZSgpLCAnaWQnLCB7IHZhbHVlOiAndGVzdCcgfSk7CiAgICAgIC8vIC4uLiBhbm90aGVyIHRlc3QgZm9yIGFuZHJvaWQgZ2IgYnJvd3NlciBmb3Igbm9uLURPTSBvYmplY3RzCiAgICAgIHZhciBUZXN0ID0gZnVuY3Rpb24gVGVzdCgpIHt9OwogICAgICBUZXN0LnByb3RvdHlwZSA9IHsgZ2V0IGlkKCkgeyB9IH07CiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgVGVzdCgpLCAnaWQnLAogICAgICAgIHsgdmFsdWU6ICcnLCBjb25maWd1cmFibGU6IHRydWUsIGVudW1lcmFibGU6IHRydWUsIHdyaXRhYmxlOiBmYWxzZSB9KTsKICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgZGVmaW5lUHJvcGVydHlQb3NzaWJsZSA9IGZhbHNlOwogICAgfQogICAgaWYgKGRlZmluZVByb3BlcnR5UG9zc2libGUpIHsKICAgICAgcmV0dXJuOwogICAgfQogIH0KCiAgT2JqZWN0LmRlZmluZVByb3BlcnR5ID0gZnVuY3Rpb24gb2JqZWN0RGVmaW5lUHJvcGVydHkob2JqLCBuYW1lLCBkZWYpIHsKICAgIGRlbGV0ZSBvYmpbbmFtZV07CiAgICBpZiAoJ2dldCcgaW4gZGVmKSB7CiAgICAgIG9iai5fX2RlZmluZUdldHRlcl9fKG5hbWUsIGRlZlsnZ2V0J10pOwogICAgfQogICAgaWYgKCdzZXQnIGluIGRlZikgewogICAgICBvYmouX19kZWZpbmVTZXR0ZXJfXyhuYW1lLCBkZWZbJ3NldCddKTsKICAgIH0KICAgIGlmICgndmFsdWUnIGluIGRlZikgewogICAgICBvYmouX19kZWZpbmVTZXR0ZXJfXyhuYW1lLCBmdW5jdGlvbiBvYmplY3REZWZpbmVQcm9wZXJ0eVNldHRlcih2YWx1ZSkgewogICAgICAgIHRoaXMuX19kZWZpbmVHZXR0ZXJfXyhuYW1lLCBmdW5jdGlvbiBvYmplY3REZWZpbmVQcm9wZXJ0eUdldHRlcigpIHsKICAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAgICB9KTsKICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgIH0pOwogICAgICBvYmpbbmFtZV0gPSBkZWYudmFsdWU7CiAgICB9CiAgfTsKfSkoKTsKCgovLyBObyBYTUxIdHRwUmVxdWVzdCNyZXNwb25zZT8KLy8gU3VwcG9ydDogSUU8MTEsIEFuZHJvaWQgPDQuMAooZnVuY3Rpb24gY2hlY2tYTUxIdHRwUmVxdWVzdFJlc3BvbnNlQ29tcGF0aWJpbGl0eSgpIHsKICB2YXIgeGhyUHJvdG90eXBlID0gWE1MSHR0cFJlcXVlc3QucHJvdG90eXBlOwogIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKICBpZiAoISgnb3ZlcnJpZGVNaW1lVHlwZScgaW4geGhyKSkgewogICAgLy8gSUUxMCBtaWdodCBoYXZlIHJlc3BvbnNlLCBidXQgbm90IG92ZXJyaWRlTWltZVR5cGUKICAgIC8vIFN1cHBvcnQ6IElFMTAKICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh4aHJQcm90b3R5cGUsICdvdmVycmlkZU1pbWVUeXBlJywgewogICAgICB2YWx1ZTogZnVuY3Rpb24geG1sSHR0cFJlcXVlc3RPdmVycmlkZU1pbWVUeXBlKG1pbWVUeXBlKSB7fQogICAgfSk7CiAgfQogIGlmICgncmVzcG9uc2VUeXBlJyBpbiB4aHIpIHsKICAgIHJldHVybjsKICB9CgogIC8vIFRoZSB3b3JrZXIgd2lsbCBiZSB1c2luZyBYSFIsIHNvIHdlIGNhbiBzYXZlIHRpbWUgYW5kIGRpc2FibGUgd29ya2VyLgogIFBERkpTLmRpc2FibGVXb3JrZXIgPSB0cnVlOwoKICBPYmplY3QuZGVmaW5lUHJvcGVydHkoeGhyUHJvdG90eXBlLCAncmVzcG9uc2VUeXBlJywgewogICAgZ2V0OiBmdW5jdGlvbiB4bWxIdHRwUmVxdWVzdEdldFJlc3BvbnNlVHlwZSgpIHsKICAgICAgcmV0dXJuIHRoaXMuX3Jlc3BvbnNlVHlwZSB8fCAndGV4dCc7CiAgICB9LAogICAgc2V0OiBmdW5jdGlvbiB4bWxIdHRwUmVxdWVzdFNldFJlc3BvbnNlVHlwZSh2YWx1ZSkgewogICAgICBpZiAodmFsdWUgPT09ICd0ZXh0JyB8fCB2YWx1ZSA9PT0gJ2FycmF5YnVmZmVyJykgewogICAgICAgIHRoaXMuX3Jlc3BvbnNlVHlwZSA9IHZhbHVlOwogICAgICAgIGlmICh2YWx1ZSA9PT0gJ2FycmF5YnVmZmVyJyAmJgogICAgICAgICAgICB0eXBlb2YgdGhpcy5vdmVycmlkZU1pbWVUeXBlID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICB0aGlzLm92ZXJyaWRlTWltZVR5cGUoJ3RleHQvcGxhaW47IGNoYXJzZXQ9eC11c2VyLWRlZmluZWQnKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9KTsKCiAgLy8gU3VwcG9ydDogSUU5CiAgaWYgKHR5cGVvZiBWQkFycmF5ICE9PSAndW5kZWZpbmVkJykgewogICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHhoclByb3RvdHlwZSwgJ3Jlc3BvbnNlJywgewogICAgICBnZXQ6IGZ1bmN0aW9uIHhtbEh0dHBSZXF1ZXN0UmVzcG9uc2VHZXQoKSB7CiAgICAgICAgaWYgKHRoaXMucmVzcG9uc2VUeXBlID09PSAnYXJyYXlidWZmZXInKSB7CiAgICAgICAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkobmV3IFZCQXJyYXkodGhpcy5yZXNwb25zZUJvZHkpLnRvQXJyYXkoKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHJldHVybiB0aGlzLnJlc3BvbnNlVGV4dDsKICAgICAgICB9CiAgICAgIH0KICAgIH0pOwogICAgcmV0dXJuOwogIH0KCiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHhoclByb3RvdHlwZSwgJ3Jlc3BvbnNlJywgewogICAgZ2V0OiBmdW5jdGlvbiB4bWxIdHRwUmVxdWVzdFJlc3BvbnNlR2V0KCkgewogICAgICBpZiAodGhpcy5yZXNwb25zZVR5cGUgIT09ICdhcnJheWJ1ZmZlcicpIHsKICAgICAgICByZXR1cm4gdGhpcy5yZXNwb25zZVRleHQ7CiAgICAgIH0KICAgICAgdmFyIHRleHQgPSB0aGlzLnJlc3BvbnNlVGV4dDsKICAgICAgdmFyIGksIG4gPSB0ZXh0Lmxlbmd0aDsKICAgICAgdmFyIHJlc3VsdCA9IG5ldyBVaW50OEFycmF5KG4pOwogICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7CiAgICAgICAgcmVzdWx0W2ldID0gdGV4dC5jaGFyQ29kZUF0KGkpICYgMHhGRjsKICAgICAgfQogICAgICByZXR1cm4gcmVzdWx0LmJ1ZmZlcjsKICAgIH0KICB9KTsKfSkoKTsKCi8vIHdpbmRvdy5idG9hIChiYXNlNjQgZW5jb2RlIGZ1bmN0aW9uKSA/Ci8vIFN1cHBvcnQ6IElFPDEwCihmdW5jdGlvbiBjaGVja1dpbmRvd0J0b2FDb21wYXRpYmlsaXR5KCkgewogIGlmICgnYnRvYScgaW4gd2luZG93KSB7CiAgICByZXR1cm47CiAgfQoKICB2YXIgZGlnaXRzID0KICAgICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPSc7CgogIHdpbmRvdy5idG9hID0gZnVuY3Rpb24gd2luZG93QnRvYShjaGFycykgewogICAgdmFyIGJ1ZmZlciA9ICcnOwogICAgdmFyIGksIG47CiAgICBmb3IgKGkgPSAwLCBuID0gY2hhcnMubGVuZ3RoOyBpIDwgbjsgaSArPSAzKSB7CiAgICAgIHZhciBiMSA9IGNoYXJzLmNoYXJDb2RlQXQoaSkgJiAweEZGOwogICAgICB2YXIgYjIgPSBjaGFycy5jaGFyQ29kZUF0KGkgKyAxKSAmIDB4RkY7CiAgICAgIHZhciBiMyA9IGNoYXJzLmNoYXJDb2RlQXQoaSArIDIpICYgMHhGRjsKICAgICAgdmFyIGQxID0gYjEgPj4gMiwgZDIgPSAoKGIxICYgMykgPDwgNCkgfCAoYjIgPj4gNCk7CiAgICAgIHZhciBkMyA9IGkgKyAxIDwgbiA/ICgoYjIgJiAweEYpIDw8IDIpIHwgKGIzID4+IDYpIDogNjQ7CiAgICAgIHZhciBkNCA9IGkgKyAyIDwgbiA/IChiMyAmIDB4M0YpIDogNjQ7CiAgICAgIGJ1ZmZlciArPSAoZGlnaXRzLmNoYXJBdChkMSkgKyBkaWdpdHMuY2hhckF0KGQyKSArCiAgICAgICAgICAgICAgICAgZGlnaXRzLmNoYXJBdChkMykgKyBkaWdpdHMuY2hhckF0KGQ0KSk7CiAgICB9CiAgICByZXR1cm4gYnVmZmVyOwogIH07Cn0pKCk7CgovLyB3aW5kb3cuYXRvYiAoYmFzZTY0IGVuY29kZSBmdW5jdGlvbik/Ci8vIFN1cHBvcnQ6IElFPDEwCihmdW5jdGlvbiBjaGVja1dpbmRvd0F0b2JDb21wYXRpYmlsaXR5KCkgewogIGlmICgnYXRvYicgaW4gd2luZG93KSB7CiAgICByZXR1cm47CiAgfQoKICAvLyBodHRwczovL2dpdGh1Yi5jb20vZGF2aWRjaGFtYmVycy9CYXNlNjQuanMKICB2YXIgZGlnaXRzID0KICAgICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPSc7CiAgd2luZG93LmF0b2IgPSBmdW5jdGlvbiAoaW5wdXQpIHsKICAgIGlucHV0ID0gaW5wdXQucmVwbGFjZSgvPSskLywgJycpOwogICAgaWYgKGlucHV0Lmxlbmd0aCAlIDQgPT09IDEpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgYXRvYiBpbnB1dCcpOwogICAgfQogICAgZm9yICgKICAgICAgLy8gaW5pdGlhbGl6ZSByZXN1bHQgYW5kIGNvdW50ZXJzCiAgICAgIHZhciBiYyA9IDAsIGJzLCBidWZmZXIsIGlkeCA9IDAsIG91dHB1dCA9ICcnOwogICAgICAvLyBnZXQgbmV4dCBjaGFyYWN0ZXIKICAgICAgYnVmZmVyID0gaW5wdXQuY2hhckF0KGlkeCsrKTsKICAgICAgLy8gY2hhcmFjdGVyIGZvdW5kIGluIHRhYmxlPwogICAgICAvLyBpbml0aWFsaXplIGJpdCBzdG9yYWdlIGFuZCBhZGQgaXRzIGFzY2lpIHZhbHVlCiAgICAgIH5idWZmZXIgJiYgKGJzID0gYmMgJSA0ID8gYnMgKiA2NCArIGJ1ZmZlciA6IGJ1ZmZlciwKICAgICAgICAvLyBhbmQgaWYgbm90IGZpcnN0IG9mIGVhY2ggNCBjaGFyYWN0ZXJzLAogICAgICAgIC8vIGNvbnZlcnQgdGhlIGZpcnN0IDggYml0cyB0byBvbmUgYXNjaWkgY2hhcmFjdGVyCiAgICAgICAgYmMrKyAlIDQpID8gb3V0cHV0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMjU1ICYgYnMgPj4gKC0yICogYmMgJiA2KSkgOiAwCiAgICApIHsKICAgICAgLy8gdHJ5IHRvIGZpbmQgY2hhcmFjdGVyIGluIHRhYmxlICgwLTYzLCBub3QgZm91bmQgPT4gLTEpCiAgICAgIGJ1ZmZlciA9IGRpZ2l0cy5pbmRleE9mKGJ1ZmZlcik7CiAgICB9CiAgICByZXR1cm4gb3V0cHV0OwogIH07Cn0pKCk7CgovLyBGdW5jdGlvbi5wcm90b3R5cGUuYmluZD8KLy8gU3VwcG9ydDogQW5kcm9pZDw0LjAsIGlPUzw2LjAKKGZ1bmN0aW9uIGNoZWNrRnVuY3Rpb25Qcm90b3R5cGVCaW5kQ29tcGF0aWJpbGl0eSgpIHsKICBpZiAodHlwZW9mIEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kICE9PSAndW5kZWZpbmVkJykgewogICAgcmV0dXJuOwogIH0KCiAgRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbiBmdW5jdGlvblByb3RvdHlwZUJpbmQob2JqKSB7CiAgICB2YXIgZm4gPSB0aGlzLCBoZWFkQXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7CiAgICB2YXIgYm91bmQgPSBmdW5jdGlvbiBmdW5jdGlvblByb3RvdHlwZUJpbmRCb3VuZCgpIHsKICAgICAgdmFyIGFyZ3MgPSBoZWFkQXJncy5jb25jYXQoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSk7CiAgICAgIHJldHVybiBmbi5hcHBseShvYmosIGFyZ3MpOwogICAgfTsKICAgIHJldHVybiBib3VuZDsKICB9Owp9KSgpOwoKLy8gSFRNTEVsZW1lbnQgZGF0YXNldCBwcm9wZXJ0eQovLyBTdXBwb3J0OiBJRTwxMSwgU2FmYXJpPDUuMSwgQW5kcm9pZDw0LjAKKGZ1bmN0aW9uIGNoZWNrRGF0YXNldFByb3BlcnR5KCkgewogIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICBpZiAoJ2RhdGFzZXQnIGluIGRpdikgewogICAgcmV0dXJuOyAvLyBkYXRhc2V0IHByb3BlcnR5IGV4aXN0cwogIH0KCiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEhUTUxFbGVtZW50LnByb3RvdHlwZSwgJ2RhdGFzZXQnLCB7CiAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICBpZiAodGhpcy5fZGF0YXNldCkgewogICAgICAgIHJldHVybiB0aGlzLl9kYXRhc2V0OwogICAgICB9CgogICAgICB2YXIgZGF0YXNldCA9IHt9OwogICAgICBmb3IgKHZhciBqID0gMCwgamogPSB0aGlzLmF0dHJpYnV0ZXMubGVuZ3RoOyBqIDwgamo7IGorKykgewogICAgICAgIHZhciBhdHRyaWJ1dGUgPSB0aGlzLmF0dHJpYnV0ZXNbal07CiAgICAgICAgaWYgKGF0dHJpYnV0ZS5uYW1lLnN1YnN0cmluZygwLCA1KSAhPT0gJ2RhdGEtJykgewogICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIHZhciBrZXkgPSBhdHRyaWJ1dGUubmFtZS5zdWJzdHJpbmcoNSkucmVwbGFjZSgvXC0oW2Etel0pL2csCiAgICAgICAgICBmdW5jdGlvbihhbGwsIGNoKSB7CiAgICAgICAgICAgIHJldHVybiBjaC50b1VwcGVyQ2FzZSgpOwogICAgICAgICAgfSk7CiAgICAgICAgZGF0YXNldFtrZXldID0gYXR0cmlidXRlLnZhbHVlOwogICAgICB9CgogICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ19kYXRhc2V0JywgewogICAgICAgIHZhbHVlOiBkYXRhc2V0LAogICAgICAgIHdyaXRhYmxlOiBmYWxzZSwKICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZQogICAgICB9KTsKICAgICAgcmV0dXJuIGRhdGFzZXQ7CiAgICB9LAogICAgZW51bWVyYWJsZTogdHJ1ZQogIH0pOwp9KSgpOwoKLy8gSFRNTEVsZW1lbnQgY2xhc3NMaXN0IHByb3BlcnR5Ci8vIFN1cHBvcnQ6IElFPDEwLCBBbmRyb2lkPDQuMCwgaU9TPDUuMAooZnVuY3Rpb24gY2hlY2tDbGFzc0xpc3RQcm9wZXJ0eSgpIHsKICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgaWYgKCdjbGFzc0xpc3QnIGluIGRpdikgewogICAgcmV0dXJuOyAvLyBjbGFzc0xpc3QgcHJvcGVydHkgZXhpc3RzCiAgfQoKICBmdW5jdGlvbiBjaGFuZ2VMaXN0KGVsZW1lbnQsIGl0ZW1OYW1lLCBhZGQsIHJlbW92ZSkgewogICAgdmFyIHMgPSBlbGVtZW50LmNsYXNzTmFtZSB8fCAnJzsKICAgIHZhciBsaXN0ID0gcy5zcGxpdCgvXHMrL2cpOwogICAgaWYgKGxpc3RbMF0gPT09ICcnKSB7CiAgICAgIGxpc3Quc2hpZnQoKTsKICAgIH0KICAgIHZhciBpbmRleCA9IGxpc3QuaW5kZXhPZihpdGVtTmFtZSk7CiAgICBpZiAoaW5kZXggPCAwICYmIGFkZCkgewogICAgICBsaXN0LnB1c2goaXRlbU5hbWUpOwogICAgfQogICAgaWYgKGluZGV4ID49IDAgJiYgcmVtb3ZlKSB7CiAgICAgIGxpc3Quc3BsaWNlKGluZGV4LCAxKTsKICAgIH0KICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gbGlzdC5qb2luKCcgJyk7CiAgICByZXR1cm4gKGluZGV4ID49IDApOwogIH0KCiAgdmFyIGNsYXNzTGlzdFByb3RvdHlwZSA9IHsKICAgIGFkZDogZnVuY3Rpb24obmFtZSkgewogICAgICBjaGFuZ2VMaXN0KHRoaXMuZWxlbWVudCwgbmFtZSwgdHJ1ZSwgZmFsc2UpOwogICAgfSwKICAgIGNvbnRhaW5zOiBmdW5jdGlvbihuYW1lKSB7CiAgICAgIHJldHVybiBjaGFuZ2VMaXN0KHRoaXMuZWxlbWVudCwgbmFtZSwgZmFsc2UsIGZhbHNlKTsKICAgIH0sCiAgICByZW1vdmU6IGZ1bmN0aW9uKG5hbWUpIHsKICAgICAgY2hhbmdlTGlzdCh0aGlzLmVsZW1lbnQsIG5hbWUsIGZhbHNlLCB0cnVlKTsKICAgIH0sCiAgICB0b2dnbGU6IGZ1bmN0aW9uKG5hbWUpIHsKICAgICAgY2hhbmdlTGlzdCh0aGlzLmVsZW1lbnQsIG5hbWUsIHRydWUsIHRydWUpOwogICAgfQogIH07CgogIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShIVE1MRWxlbWVudC5wcm90b3R5cGUsICdjbGFzc0xpc3QnLCB7CiAgICBnZXQ6IGZ1bmN0aW9uKCkgewogICAgICBpZiAodGhpcy5fY2xhc3NMaXN0KSB7CiAgICAgICAgcmV0dXJuIHRoaXMuX2NsYXNzTGlzdDsKICAgICAgfQoKICAgICAgdmFyIGNsYXNzTGlzdCA9IE9iamVjdC5jcmVhdGUoY2xhc3NMaXN0UHJvdG90eXBlLCB7CiAgICAgICAgZWxlbWVudDogewogICAgICAgICAgdmFsdWU6IHRoaXMsCiAgICAgICAgICB3cml0YWJsZTogZmFsc2UsCiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlCiAgICAgICAgfQogICAgICB9KTsKICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdfY2xhc3NMaXN0JywgewogICAgICAgIHZhbHVlOiBjbGFzc0xpc3QsCiAgICAgICAgd3JpdGFibGU6IGZhbHNlLAogICAgICAgIGVudW1lcmFibGU6IGZhbHNlCiAgICAgIH0pOwogICAgICByZXR1cm4gY2xhc3NMaXN0OwogICAgfSwKICAgIGVudW1lcmFibGU6IHRydWUKICB9KTsKfSkoKTsKCi8vIENoZWNrIGNvbnNvbGUgY29tcGF0aWJpbGl0eQovLyBJbiBvbGRlciBJRSB2ZXJzaW9ucyB0aGUgY29uc29sZSBvYmplY3QgaXMgbm90IGF2YWlsYWJsZQovLyB1bmxlc3MgY29uc29sZSBpcyBvcGVuLgovLyBTdXBwb3J0OiBJRTwxMAooZnVuY3Rpb24gY2hlY2tDb25zb2xlQ29tcGF0aWJpbGl0eSgpIHsKICBpZiAoISgnY29uc29sZScgaW4gd2luZG93KSkgewogICAgd2luZG93LmNvbnNvbGUgPSB7CiAgICAgIGxvZzogZnVuY3Rpb24oKSB7fSwKICAgICAgZXJyb3I6IGZ1bmN0aW9uKCkge30sCiAgICAgIHdhcm46IGZ1bmN0aW9uKCkge30KICAgIH07CiAgfSBlbHNlIGlmICghKCdiaW5kJyBpbiBjb25zb2xlLmxvZykpIHsKICAgIC8vIG5hdGl2ZSBmdW5jdGlvbnMgaW4gSUU5IG1pZ2h0IG5vdCBoYXZlIGJpbmQKICAgIGNvbnNvbGUubG9nID0gKGZ1bmN0aW9uKGZuKSB7CiAgICAgIHJldHVybiBmdW5jdGlvbihtc2cpIHsgcmV0dXJuIGZuKG1zZyk7IH07CiAgICB9KShjb25zb2xlLmxvZyk7CiAgICBjb25zb2xlLmVycm9yID0gKGZ1bmN0aW9uKGZuKSB7CiAgICAgIHJldHVybiBmdW5jdGlvbihtc2cpIHsgcmV0dXJuIGZuKG1zZyk7IH07CiAgICB9KShjb25zb2xlLmVycm9yKTsKICAgIGNvbnNvbGUud2FybiA9IChmdW5jdGlvbihmbikgewogICAgICByZXR1cm4gZnVuY3Rpb24obXNnKSB7IHJldHVybiBmbihtc2cpOyB9OwogICAgfSkoY29uc29sZS53YXJuKTsKICB9Cn0pKCk7CgovLyBDaGVjayBvbmNsaWNrIGNvbXBhdGliaWxpdHkgaW4gT3BlcmEKLy8gU3VwcG9ydDogT3BlcmE8MTUKKGZ1bmN0aW9uIGNoZWNrT25DbGlja0NvbXBhdGliaWxpdHkoKSB7CiAgLy8gd29ya2Fyb3VuZCBmb3IgcmVwb3J0ZWQgT3BlcmEgYnVnIERTSy0zNTQ0NDg6CiAgLy8gb25jbGljayBmaXJlcyBvbiBkaXNhYmxlZCBidXR0b25zIHdpdGggb3BhcXVlIGNvbnRlbnQKICBmdW5jdGlvbiBpZ25vcmVJZlRhcmdldERpc2FibGVkKGV2ZW50KSB7CiAgICBpZiAoaXNEaXNhYmxlZChldmVudC50YXJnZXQpKSB7CiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgfQogIH0KICBmdW5jdGlvbiBpc0Rpc2FibGVkKG5vZGUpIHsKICAgIHJldHVybiBub2RlLmRpc2FibGVkIHx8IChub2RlLnBhcmVudE5vZGUgJiYgaXNEaXNhYmxlZChub2RlLnBhcmVudE5vZGUpKTsKICB9CiAgaWYgKG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignT3BlcmEnKSAhPT0gLTEpIHsKICAgIC8vIHVzZSBicm93c2VyIGRldGVjdGlvbiBzaW5jZSB3ZSBjYW5ub3QgZmVhdHVyZS1jaGVjayB0aGlzIGJ1ZwogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBpZ25vcmVJZlRhcmdldERpc2FibGVkLCB0cnVlKTsKICB9Cn0pKCk7CgovLyBDaGVja3MgaWYgcG9zc2libGUgdG8gdXNlIFVSTC5jcmVhdGVPYmplY3RVUkwoKQovLyBTdXBwb3J0OiBJRQooZnVuY3Rpb24gY2hlY2tPbkJsb2JTdXBwb3J0KCkgewogIC8vIHNvbWV0aW1lcyBJRSBsb29zaW5nIHRoZSBkYXRhIGNyZWF0ZWQgd2l0aCBjcmVhdGVPYmplY3RVUkwoKSwgc2VlICMzOTc3CiAgaWYgKG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignVHJpZGVudCcpID49IDApIHsKICAgIFBERkpTLmRpc2FibGVDcmVhdGVPYmplY3RVUkwgPSB0cnVlOwogIH0KfSkoKTsKCi8vIENoZWNrcyBpZiBuYXZpZ2F0b3IubGFuZ3VhZ2UgaXMgc3VwcG9ydGVkCihmdW5jdGlvbiBjaGVja05hdmlnYXRvckxhbmd1YWdlKCkgewogIGlmICgnbGFuZ3VhZ2UnIGluIG5hdmlnYXRvcikgewogICAgcmV0dXJuOwogIH0KICBQREZKUy5sb2NhbGUgPSBuYXZpZ2F0b3IudXNlckxhbmd1YWdlIHx8ICdlbi1VUyc7Cn0pKCk7CgooZnVuY3Rpb24gY2hlY2tSYW5nZVJlcXVlc3RzKCkgewogIC8vIFNhZmFyaSBoYXMgaXNzdWVzIHdpdGggY2FjaGVkIHJhbmdlIHJlcXVlc3RzIHNlZToKICAvLyBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9wZGYuanMvaXNzdWVzLzMyNjAKICAvLyBMYXN0IHRlc3RlZCB3aXRoIHZlcnNpb24gNi4wLjQuCiAgLy8gU3VwcG9ydDogU2FmYXJpIDYuMCsKICB2YXIgaXNTYWZhcmkgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoCiAgICAgICAgICAgICAgICAgIHdpbmRvdy5IVE1MRWxlbWVudCkuaW5kZXhPZignQ29uc3RydWN0b3InKSA+IDA7CgogIC8vIE9sZGVyIHZlcnNpb25zIG9mIEFuZHJvaWQgKHByZSAzLjApIGhhcyBpc3N1ZXMgd2l0aCByYW5nZSByZXF1ZXN0cywgc2VlOgogIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL3BkZi5qcy9pc3N1ZXMvMzM4MS4KICAvLyBNYWtlIHN1cmUgdGhhdCB3ZSBvbmx5IG1hdGNoIHdlYmtpdC1iYXNlZCBBbmRyb2lkIGJyb3dzZXJzLAogIC8vIHNpbmNlIEZpcmVmb3gvRmVubmVjIHdvcmtzIGFzIGV4cGVjdGVkLgogIC8vIFN1cHBvcnQ6IEFuZHJvaWQ8My4wCiAgdmFyIHJlZ2V4ID0gL0FuZHJvaWRcc1swLTJdW15cZF0vOwogIHZhciBpc09sZEFuZHJvaWQgPSByZWdleC50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpOwoKICAvLyBSYW5nZSByZXF1ZXN0cyBhcmUgYnJva2VuIGluIENocm9tZSAzOSBhbmQgNDAsIGh0dHBzOi8vY3JidWcuY29tLzQ0MjMxOAogIHZhciBpc0Nocm9tZVdpdGhSYW5nZUJ1ZyA9IC9DaHJvbWVcLygzOXw0MClcLi8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTsKCiAgaWYgKGlzU2FmYXJpIHx8IGlzT2xkQW5kcm9pZCB8fCBpc0Nocm9tZVdpdGhSYW5nZUJ1ZykgewogICAgUERGSlMuZGlzYWJsZVJhbmdlID0gdHJ1ZTsKICAgIFBERkpTLmRpc2FibGVTdHJlYW0gPSB0cnVlOwogIH0KfSkoKTsKCi8vIENoZWNrIGlmIHRoZSBicm93c2VyIHN1cHBvcnRzIG1hbmlwdWxhdGlvbiBvZiB0aGUgaGlzdG9yeS4KLy8gU3VwcG9ydDogSUU8MTAsIEFuZHJvaWQ8NC4yCihmdW5jdGlvbiBjaGVja0hpc3RvcnlNYW5pcHVsYXRpb24oKSB7CiAgLy8gQW5kcm9pZCAyLnggaGFzIHNvIGJ1Z2d5IHB1c2hTdGF0ZSBzdXBwb3J0IHRoYXQgaXQgd2FzIHJlbW92ZWQgaW4KICAvLyBBbmRyb2lkIDMuMCBhbmQgcmVzdG9yZWQgYXMgbGF0ZSBhcyBpbiBBbmRyb2lkIDQuMi4KICAvLyBTdXBwb3J0OiBBbmRyb2lkIDIueAogIGlmICghaGlzdG9yeS5wdXNoU3RhdGUgfHwgbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdBbmRyb2lkIDIuJykgPj0gMCkgewogICAgUERGSlMuZGlzYWJsZUhpc3RvcnkgPSB0cnVlOwogIH0KfSkoKTsKCi8vIFN1cHBvcnQ6IElFPDExLCBDaHJvbWU8MjEsIEFuZHJvaWQ8NC40LCBTYWZhcmk8NgooZnVuY3Rpb24gY2hlY2tTZXRQcmVzZW5jZUluSW1hZ2VEYXRhKCkgewogIC8vIElFIDwgMTEgd2lsbCB1c2Ugd2luZG93LkNhbnZhc1BpeGVsQXJyYXkgd2hpY2ggbGFja3Mgc2V0IGZ1bmN0aW9uLgogIGlmICh3aW5kb3cuQ2FudmFzUGl4ZWxBcnJheSkgewogICAgaWYgKHR5cGVvZiB3aW5kb3cuQ2FudmFzUGl4ZWxBcnJheS5wcm90b3R5cGUuc2V0ICE9PSAnZnVuY3Rpb24nKSB7CiAgICAgIHdpbmRvdy5DYW52YXNQaXhlbEFycmF5LnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbihhcnIpIHsKICAgICAgICBmb3IgKHZhciBpID0gMCwgaWkgPSB0aGlzLmxlbmd0aDsgaSA8IGlpOyBpKyspIHsKICAgICAgICAgIHRoaXNbaV0gPSBhcnJbaV07CiAgICAgICAgfQogICAgICB9OwogICAgfQogIH0gZWxzZSB7CiAgICAvLyBPbGQgQ2hyb21lIGFuZCBBbmRyb2lkIHVzZSBhbiBpbmFjY2Vzc2libGUgQ2FudmFzUGl4ZWxBcnJheSBwcm90b3R5cGUuCiAgICAvLyBCZWNhdXNlIHdlIGNhbm5vdCBmZWF0dXJlIGRldGVjdCBpdCwgd2UgcmVseSBvbiB1c2VyIGFnZW50IHBhcnNpbmcuCiAgICB2YXIgcG9seWZpbGwgPSBmYWxzZSwgdmVyc2lvbk1hdGNoOwogICAgaWYgKG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignQ2hyb20nKSA+PSAwKSB7CiAgICAgIHZlcnNpb25NYXRjaCA9IG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL0Nocm9tKGV8aXVtKVwvKFswLTldKylcLi8pOwogICAgICAvLyBDaHJvbWUgPCAyMSBsYWNrcyB0aGUgc2V0IGZ1bmN0aW9uLgogICAgICBwb2x5ZmlsbCA9IHZlcnNpb25NYXRjaCAmJiBwYXJzZUludCh2ZXJzaW9uTWF0Y2hbMl0pIDwgMjE7CiAgICB9IGVsc2UgaWYgKG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignQW5kcm9pZCcpID49IDApIHsKICAgICAgLy8gQW5kcm9pZCA8IDQuNCBsYWNrcyB0aGUgc2V0IGZ1bmN0aW9uLgogICAgICAvLyBBbmRyb2lkID49IDQuNCB3aWxsIGNvbnRhaW4gQ2hyb21lIGluIHRoZSB1c2VyIGFnZW50LAogICAgICAvLyB0aHVzIHBhc3MgdGhlIENocm9tZSBjaGVjayBhYm92ZSBhbmQgbm90IHJlYWNoIHRoaXMgYmxvY2suCiAgICAgIHBvbHlmaWxsID0gL0FuZHJvaWRcc1swLTRdW15cZF0vZy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpOwogICAgfSBlbHNlIGlmIChuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ1NhZmFyaScpID49IDApIHsKICAgICAgdmVyc2lvbk1hdGNoID0gbmF2aWdhdG9yLnVzZXJBZ2VudC4KICAgICAgICBtYXRjaCgvVmVyc2lvblwvKFswLTldKylcLihbMC05XSspXC4oWzAtOV0rKSBTYWZhcmlcLy8pOwogICAgICAvLyBTYWZhcmkgPCA2IGxhY2tzIHRoZSBzZXQgZnVuY3Rpb24uCiAgICAgIHBvbHlmaWxsID0gdmVyc2lvbk1hdGNoICYmIHBhcnNlSW50KHZlcnNpb25NYXRjaFsxXSkgPCA2OwogICAgfQoKICAgIGlmIChwb2x5ZmlsbCkgewogICAgICB2YXIgY29udGV4dFByb3RvdHlwZSA9IHdpbmRvdy5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQucHJvdG90eXBlOwogICAgICBjb250ZXh0UHJvdG90eXBlLl9jcmVhdGVJbWFnZURhdGEgPSBjb250ZXh0UHJvdG90eXBlLmNyZWF0ZUltYWdlRGF0YTsKICAgICAgY29udGV4dFByb3RvdHlwZS5jcmVhdGVJbWFnZURhdGEgPSBmdW5jdGlvbih3LCBoKSB7CiAgICAgICAgdmFyIGltYWdlRGF0YSA9IHRoaXMuX2NyZWF0ZUltYWdlRGF0YSh3LCBoKTsKICAgICAgICBpbWFnZURhdGEuZGF0YS5zZXQgPSBmdW5jdGlvbihhcnIpIHsKICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBpaSA9IHRoaXMubGVuZ3RoOyBpIDwgaWk7IGkrKykgewogICAgICAgICAgICB0aGlzW2ldID0gYXJyW2ldOwogICAgICAgICAgfQogICAgICAgIH07CiAgICAgICAgcmV0dXJuIGltYWdlRGF0YTsKICAgICAgfTsKICAgIH0KICB9Cn0pKCk7CgovLyBTdXBwb3J0OiBJRTwxMCwgQW5kcm9pZDw0LjAsIGlPUwooZnVuY3Rpb24gY2hlY2tSZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKSB7CiAgZnVuY3Rpb24gZmFrZVJlcXVlc3RBbmltYXRpb25GcmFtZShjYWxsYmFjaykgewogICAgd2luZG93LnNldFRpbWVvdXQoY2FsbGJhY2ssIDIwKTsKICB9CgogIHZhciBpc0lPUyA9IC8oaVBhZHxpUGhvbmV8aVBvZCkvZy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpOwogIGlmIChpc0lPUykgewogICAgLy8gcmVxdWVzdEFuaW1hdGlvbkZyYW1lIG9uIGlPUyBpcyBicm9rZW4sIHJlcGxhY2luZyB3aXRoIGZha2Ugb25lLgogICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSA9IGZha2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWU7CiAgICByZXR1cm47CiAgfQogIGlmICgncmVxdWVzdEFuaW1hdGlvbkZyYW1lJyBpbiB3aW5kb3cpIHsKICAgIHJldHVybjsKICB9CiAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSA9CiAgICB3aW5kb3cubW96UmVxdWVzdEFuaW1hdGlvbkZyYW1lIHx8CiAgICB3aW5kb3cud2Via2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lIHx8CiAgICBmYWtlUmVxdWVzdEFuaW1hdGlvbkZyYW1lOwp9KSgpOwoKKGZ1bmN0aW9uIGNoZWNrQ2FudmFzU2l6ZUxpbWl0YXRpb24oKSB7CiAgdmFyIGlzSU9TID0gLyhpUGFkfGlQaG9uZXxpUG9kKS9nLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7CiAgdmFyIGlzQW5kcm9pZCA9IC9BbmRyb2lkL2cudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTsKICBpZiAoaXNJT1MgfHwgaXNBbmRyb2lkKSB7CiAgICAvLyA1TVAKICAgIFBERkpTLm1heENhbnZhc1BpeGVscyA9IDUyNDI4ODA7CiAgfQp9KSgpOwoKLy8gRGlzYWJsZSBmdWxsc2NyZWVuIHN1cHBvcnQgZm9yIGNlcnRhaW4gcHJvYmxlbWF0aWMgY29uZmlndXJhdGlvbnMuCi8vIFN1cHBvcnQ6IElFMTErICh3aGVuIGVtYmVkZGVkKS4KKGZ1bmN0aW9uIGNoZWNrRnVsbHNjcmVlblN1cHBvcnQoKSB7CiAgdmFyIGlzRW1iZWRkZWRJRSA9IChuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ1RyaWRlbnQnKSA+PSAwICYmCiAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cucGFyZW50ICE9PSB3aW5kb3cpOwogIGlmIChpc0VtYmVkZGVkSUUpIHsKICAgIFBERkpTLmRpc2FibGVGdWxsc2NyZWVuID0gdHJ1ZTsKICB9Cn0pKCk7Cg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/ViewerJS/example.local.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogVGhpcyBpcyBqdXN0IGEgc2FtcGxlIGZpbGUgd2l0aCBDU1MgcnVsZXMuIFlvdSBzaG91bGQgd3JpdGUgeW91ciBvd24gQGZvbnQtZmFjZSBkZWNsYXJhdGlvbnMKICogdG8gYWRkIHN1cHBvcnQgZm9yIHlvdXIgZGVzaXJlZCBmb250cy4KICovCgpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ05vdmVjZW50b3dpZGUgQm9vayc7CiAgc3JjOiB1cmwoIi9WaWV3ZXJKUy9mb250cy9Ob3ZlY2VudG93aWRlLUJvbGQtd2ViZm9udC5lb3QiKTsKICBzcmM6IHVybCgiL1ZpZXdlckpTL2ZvbnRzL05vdmVjZW50b3dpZGUtQm9sZC13ZWJmb250LmVvdD8jaWVmaXgiKSBmb3JtYXQoImVtYmVkZGVkLW9wZW50eXBlIiksCiAgdXJsKCIvVmlld2VySlMvZm9udHMvTm92ZWNlbnRvd2lkZS1Cb2xkLXdlYmZvbnQud29mZiIpIGZvcm1hdCgid29mZiIpLAogIHVybCgiL2ZvbnRzL05vdmVjZW50b3dpZGUtQm9sZC13ZWJmb250LnR0ZiIpIGZvcm1hdCgidHJ1ZXR5cGUiKSwKICB1cmwoIi9mb250cy9Ob3ZlY2VudG93aWRlLUJvbGQtd2ViZm9udC5zdmcjTm92ZWNlbnRvd2lkZUJvb2tCb2xkIikgZm9ybWF0KCJzdmciKTsKICBmb250LXdlaWdodDogbm9ybWFsOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKfQoKQGZvbnQtZmFjZSB7CiAgICBmb250LWZhbWlseTogJ2V4b3RpY2EnOwogICAgc3JjOiB1cmwoJy9WaWV3ZXJKUy9mb250cy9FeG90aWNhLXdlYmZvbnQuZW90Jyk7CiAgICBzcmM6IHVybCgnL1ZpZXdlckpTL2ZvbnRzL0V4b3RpY2Etd2ViZm9udC5lb3Q/I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLAogICAgICAgICB1cmwoJy9WaWV3ZXJKUy9mb250cy9FeG90aWNhLXdlYmZvbnQud29mZicpIGZvcm1hdCgnd29mZicpLAogICAgICAgICB1cmwoJy9WaWV3ZXJKUy9mb250cy9FeG90aWNhLXdlYmZvbnQudHRmJykgZm9ybWF0KCd0cnVldHlwZScpLAogICAgICAgICB1cmwoJy9WaWV3ZXJKUy9mb250cy9FeG90aWNhLXdlYmZvbnQuc3ZnI2V4b3RpY2FtZWRpdW0nKSBmb3JtYXQoJ3N2ZycpOwogICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKCn0KCg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/ViewerJS/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/ViewerJS/images/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/ViewerJS/images/kogmbh.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/ViewerJS/images/nlnet.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/ViewerJS/images/texture.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/ViewerJS/images/toolbarButton-download.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAaJJREFUeNp8U09LAlEQf6tttRARbWsb1CWj7OBNchU9qBc/gAl+gqDP0KVTH0TwkieRjtpJkDp68c/NSyKUKSGu5TYT82LYdhv48Wbezt/fm1UcxxGKomwKIfYA24CA+CsfgAnABizpFBi7Rg77g8HgLhwOG8JHoMhtq9VKJZPJezCHMomspkPwFlXyw0kikUhVKpVr0I8A6zwBGgtqzw8bgHmpVDpuNpuXZP+OoJCTrxQKBQPGeCSzB0DeZgqRmIDzSvwvWDHIOLmBmB5n3OaIRCJ9cHpARKPRPlajl5DY4SMI4uBXut3uMxxPqHc6nXc4TFdHQXcC2+WAFd+YbnvN5dsBPZ3D9IVXgoArwSIWi81hbmx9xL6N8M6yrLn080rwQ169XlfT6TTOt6LviFUmk1FrtZrKiPZOYJrmrFqtnudyuQvcUPxH8vm8BXdnoVBo5k4g9yAOZ5yPNh6PtWKxONQ0LVAulw91XeecYEwbYtqSxGmj0Vhls9kv6WAYxhJW9oDMCQ8GX4yb8g52QT+lt5ZJP9l6q677F1xniH39FmAAFper9FGt37sAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/ViewerJS/images/toolbarButton-fullscreen.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAY1JREFUKFNFUU0vQ0EUPfXxRLVlVV1QaTQI0lbQVJQQqZ0QaicRQcrKxgKRtJGgLOqjiXSDRj00PsJa7PwHi6al8UOuM+8R52Qmd865c2fuDFAHD7rJdjihQUFj1G5oHrrwyqvJ9y3YjQT7+9afBi8QlBdFPY2wyiesCOtpU0UQGJAnxa/bwCTqYSEdXRPFG1PFANAv9xeZUk4evm9GB1EDbTD0pctj+foyI/foB1oftzHlXSpl5S6/DgdsuTXJl7Mdy5ii0wpKTWiEp2PmbBM9qCUD6Y3ALC0XHQdQgSoOjUktaGBUwdnNlYZKw/mFhTsdvIGCxnZr/y2NzWmwBfv0Rdao5i53bmEoyCTTgettFb7OseKxZK5WYIPtfFEy5RP/OPx0XIBPTnPxQkpSxYPecVaz+sYK+5L6PNITcgofEJKkpOSwsNc2j2YeUIkm99zHnhxSTSKkXnJXMZ3ACA+w8JJ1GD6Jm6p6Sb/sGEw+x1TXhP05xqqGCj/4tSOIYhoRtPGbFKyMIlSidJw/OjSbfU+tbHYAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/ViewerJS/images/toolbarButton-menuArrows.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAcAAAAQCAQAAABwiK17AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAI9JREFUCFtjYCARMDJwMggCMSNEH5eRxe3ZRhYMXCAOO7fe1fn/119bwK3HwM7AIHCs6f+y/4v/LzvRyCDAwMDDoMXgyRAExNpANtAIBQYTBksgVgCyGfgP5/3vA8HDeQz8QMUsNvtK/5ftK+WwBSlmZpAQ99+WK+7PIAFkAwErgySDJhCzwpzPzMAGkcEPAPi8H7JRgYIZAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/ViewerJS/images/toolbarButton-pageDown.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABKElEQVR42o2SsUrEQBRFZyPIIqhgYQRB0GZZsNpKEf0CPyA/YCGCjYJEY0wI2AQrK0XQZm1sxEKE9CF/kCJfkibxXhhhWJ8zPjgQ8u65Q8goPQMwBGtgBLY1Y7ABlsCcsowXRdFmVVVZ3/fFD23bfjVNM03T9IjlthJPn7JXluUT5HeDj67rPnEAS5aVZdi+HgTBOaS3Weq6fsZ+Szlm6Pv+IYTXWfA5U+wnroIB2IfwIoHdDnDOLsKPEtxJwjxYNX5fgPC9BHc6M6KjXbVYFMUxAg8GdxJmhg5doBbAJM/zKyxu/wOzdLSrPLACDrIsu0bgxgYzzGoHLsYsSZLkEsFQgjtJ/lWCW3cB4cyE7yT5z5IwDHkjTwmfJdlZEsfxCbHIzpIxscnfjwdV53mkOFcAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/ViewerJS/images/toolbarButton-pageUp.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAPpJREFUKFN1zz1Lw2AUhuG7EV5CpSHgIji+kMGPVdBJCKVrqI4igi4VGih1cXIIhELJ5FSXhpZkCZKlHQou/iZd5bikJsT4XOs9nAPVKWxsFP9ModfBOkA3JwqdRrKSVRo1JQqdTCWXTDLJk2k9UejlRDJJC9lyUk0UehFKInFFsgi3iULHgczltWYeF+d2NkOZyUuD2WZIB9o4dOkzkqjEiD5dHNpgYGJh40pYwsXGwsQoPzmT5xLn/Nnp15P82nPZqQdHH48y3vKuserBvnf37UvhbcwJJq1qYHLcu3/3Px9kIAPx89ubg+qJ0GIXhws8rrikxyEWBvwA4IWcm9Bvq1EAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/ViewerJS/images/toolbarButton-presentation.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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TUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS4xLjIiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxMy0wNy0xM1QxODowNzoxOTwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6Q3JlYXRvclRvb2w+UGl4ZWxtYXRvciAyLjI8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIj4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+NzI8L3RpZmY6WVJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOkNvbXByZXNzaW9uPjU8L3RpZmY6Q29tcHJlc3Npb24+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjE8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyPC90aWZmOlhSZXNvbHV0aW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+MjU8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjI1PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CtwGYAwAAAJFSURBVDgRnVNLq1JRFN77+H41EC9XBw58kEKTBsUdNRQn15yEk2gc4cRB/yDRSXBBmjTr0ij/wSW7oYUQTkMhUSwxzMA3evR4zulbO/blDgqiBfusffZa37e+vc46bL/f3zH/04C9ay2VSstIJPLGMAwFPOxfjHPOFEUxxuPxkgPAu93u80Ag8Giz2TAi+RMRgaR5PB42nU5fx2Kxp1ZSr+u612KxHFEAzGy73TICEJHT6WS73Y65XC4R0zSN2Ww25vP5vIRViPVwOAjy2Wy26PV6X0Emzoik3W5/QdzodDrtWq32fjKZfL+OEQRW2Gg06lcqlVNc44WsRgr8fv8RiDj8cTQajSN2gwgoRiYIIEvHnc6KxeLHRCKhkkxcywCvORwOB2iwgQKDZrP5abFY/CQgqSOz0oMqhEIhG+2z2ewF7vwwmUwel8vlYhyGsBIOh28Gg8Gw2+32UZ5UIDYAvFJV9fN6vQ5SAMupqpsznBvL5dKcz+cm+dVqJTziJhr9knKFAmx2DofjFmR/QA/O8X4K+ScYFAb1VPDKS+nSCwIkC/mQF0fuM4HAA6RiS5XIJIj2EiMIqtVqHY3zYV2NogRRsjRJgDngmI96Lpf7fYV0On3bbrenqfsSiG+vAcgxExznOkBWEChEQoOE/vxA/FwqeIcG0r8gFCBBy2Qy93G2wiB9S6VS9xqNxtt+vz+kfwYkHPNwmc/nGZcVpUzp6/X6E+Q9QFNNjK3earUeFwqFgYxL/1cCqoIkLxb5PQqpEnTd/wJK4oZqTRL5GAAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/ViewerJS/images/toolbarButton-zoomIn.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAq0lEQVR42q2RoQpCQRBFDds0mLYLNgWbYBP8BYP/YNJoNVutYrL5A37ceg/MlGWRZZ4PDu9ydziws6NSyiD+J2h8YzEDcnXWJZir/wA5IlirfwM5ItiofwG5R+B3XhoH9Q8ge+87aQm487PiDnXPbEuw0P/WA7MtQRZbsTdO6q9A9t5mckuQxERMjZ36C5C9t5nU+wpnIEeecaX+COSIwHcCOSLwnUD6JRjEF3X4tHRD9cn8AAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/ViewerJS/images/toolbarButton-zoomOut.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAVklEQVR42u3SsQkAIQxAUQs7LazshevuhnAI13Iih8t9+0AELQ080oRfxYnIlhs4GWACCj5DQdACD3usmLda4GX3FfNWC2RUNENF1gIeEckQ4e8jHQz8T0uYqR7eZeAAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/ViewerJS/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+Cgo8IS0tCiAgQ29weXJpZ2h0IChDKSAyMDEyLTIwMTQgS08gR21iSCA8Y29weXJpZ2h0QGtvZ21iaC5jb20+CgogIEBsaWNzdGFydAogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIFdlYk9ERi4KCiAgV2ViT0RGIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR05VIEFHUEwpCiAgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YKICB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KCiAgV2ViT0RGIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAogIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiAgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCgogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogIGFsb25nIHdpdGggV2ViT0RGLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogIEBsaWNlbmQKCiAgQHNvdXJjZTogaHR0cDovL3d3dy53ZWJvZGYub3JnLwogIEBzb3VyY2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9rb2dtYmgvV2ViT0RGLwotLT4KCjwhLS0KICBUaGlzIGZpbGUgaXMgYSBkZXJpdmF0aXZlIGZyb20gYSBwYXJ0IG9mIE1vemlsbGEncyBQREYuanMgcHJvamVjdC4gVGhlCiAgb3JpZ2luYWwgbGljZW5zZSBoZWFkZXIgZm9sbG93cy4KLS0+Cgo8IS0tCkNvcHlyaWdodCAyMDEyIE1vemlsbGEgRm91bmRhdGlvbgoKTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgpodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKClVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuClNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0tPgoKPGh0bWwgZGlyPSJsdHIiIGxhbmc9ImVuLVVTIj4KICAgIDxoZWFkPgogICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ii8+CiAgICAgICAgPHRpdGxlPlZpZXdlckpTPC90aXRsZT4KICAgICAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgdXNlci1zY2FsYWJsZT1ubywgbWluaW11bS1zY2FsZT0xLjAsIG1heGltdW0tc2NhbGU9MS4wIj4KICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJ2aWV3ZXIuY3NzIiBtZWRpYT0ic2NyZWVuIi8+CiAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0ibG9jYWwuY3NzIiBtZWRpYT0ic2NyZWVuIi8+CiAgICAgICAgPGxpbmsgaHJlZj0iLy9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9mb250LWF3ZXNvbWUvNC40LjAvY3NzL2ZvbnQtYXdlc29tZS5taW4uY3NzIiByZWw9InN0eWxlc2hlZXQiPgogICAgICAgIDxzY3JpcHQgc3JjPSJ2aWV3ZXIuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPjwvc2NyaXB0PgogICAgICAgIDxzY3JpcHQgc3JjPSJQbHVnaW5Mb2FkZXIuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPjwvc2NyaXB0PgogICAgICAgIDxzY3JpcHQ+CiAgICAgICAgICAgIGxvYWREb2N1bWVudCh3aW5kb3cubG9jYXRpb24uaGFzaCk7CiAgICAgICAgPC9zY3JpcHQ+CiAgICA8L2hlYWQ+CgogICAgPGJvZHk+CiAgICAgICAgPGRpdiBpZCA9ICJ2aWV3ZXIiPgogICAgICAgICAgICA8ZGl2IGlkID0gInRpdGxlYmFyIj4KICAgICAgICAgICAgICAgIDxkaXYgaWQgPSAiZG9jdW1lbnROYW1lIj48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgaWQgPSAidG9vbGJhclJpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlkID0gInByZXNlbnRhdGlvbiIgY2xhc3MgPSAidG9vbGJhckJ1dHRvbiBwcmVzZW50YXRpb24iIHRpdGxlID0gIlByZXNlbnRhdGlvbiI+PGkgY2xhc3M9ImZhIGZhLXBsYXkiPjwvaT48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlkID0gImZ1bGxzY3JlZW4iIGNsYXNzID0gInRvb2xiYXJCdXR0b24gZnVsbHNjcmVlbiIgdGl0bGUgPSAiRnVsbHNjcmVlbiI+PGkgY2xhc3M9ImZhIGZhLWV4cGFuZCI+PC9pPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gaWQgPSAiZG93bmxvYWQiIGNsYXNzID0gInRvb2xiYXJCdXR0b24gZG93bmxvYWQiIHRpdGxlID0gIkRvd25sb2FkIj48aSBjbGFzcz0iZmEgZmEtZG93bmxvYWQiPjwvaT48L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkID0gInRvb2xiYXJDb250YWluZXIiPgogICAgICAgICAgICAgICAgPGRpdiBpZCA9ICJ0b29sYmFyIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkID0gInRvb2xiYXJMZWZ0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZCA9ICJuYXZCdXR0b25zIiBjbGFzcyA9ICJzcGxpdFRvb2xiYXJCdXR0b24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBpZCA9ICJwcmV2aW91cyIgY2xhc3MgPSAidG9vbGJhckJ1dHRvbiBwYWdlVXAiIHRpdGxlID0gIlByZXZpb3VzIFBhZ2UiPjxpIGNsYXNzPSJmYSBmYS1jaGV2cm9uLXVwIj48L2k+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzcGxpdFRvb2xiYXJCdXR0b25TZXBhcmF0b3IiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBpZCA9ICJuZXh0IiBjbGFzcyA9ICJ0b29sYmFyQnV0dG9uIHBhZ2VEb3duIiB0aXRsZSA9ICJOZXh0IFBhZ2UiPjxpIGNsYXNzPSJmYSBmYS1jaGV2cm9uLWRvd24iPjwvaT48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBpZCA9ICJwYWdlTnVtYmVyTGFiZWwiIGNsYXNzID0gInRvb2xiYXJMYWJlbCIgZm9yID0gInBhZ2VOdW1iZXIiPlBhZ2U6PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGUgPSAibnVtYmVyIiBpZCA9ICJwYWdlTnVtYmVyIiBjbGFzcyA9ICJ0b29sYmFyRmllbGQgcGFnZU51bWJlciIvPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZCA9ICJudW1QYWdlcyIgY2xhc3MgPSAidG9vbGJhckxhYmVsIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZCA9ICJ0b29sYmFyTWlkZGxlQ29udGFpbmVyIiBjbGFzcyA9ICJvdXRlckNlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQgPSAidG9vbGJhck1pZGRsZSIgY2xhc3MgPSAiaW5uZXJDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZCA9ICd6b29tQnV0dG9ucycgY2xhc3MgPSAic3BsaXRUb29sYmFyQnV0dG9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlkID0gInpvb21PdXQiIGNsYXNzID0gInRvb2xiYXJCdXR0b24gem9vbU91dCIgdGl0bGUgPSAiWm9vbSBPdXQiPjxpIGNsYXNzPSJmYSBmYS1zZWFyY2gtbWludXMiPjwvaT48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzcGxpdFRvb2xiYXJCdXR0b25TZXBhcmF0b3IiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gaWQgPSAiem9vbUluIiBjbGFzcyA9ICJ0b29sYmFyQnV0dG9uIHpvb21JbiIgdGl0bGUgPSAiWm9vbSBJbiI+PGkgY2xhc3M9ImZhIGZhLXNlYXJjaC1wbHVzIj48L2k+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGlkPSJzY2FsZVNlbGVjdENvbnRhaW5lciIgY2xhc3M9ImRyb3Bkb3duVG9vbGJhckJ1dHRvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBpZD0ic2NhbGVTZWxlY3QiIHRpdGxlPSJab29tIiBvbmNvbnRleHRtZW51PSJyZXR1cm4gZmFsc2U7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBpZD0icGFnZUF1dG9PcHRpb24iIHZhbHVlPSJhdXRvIiBzZWxlY3RlZD5BdXRvbWF0aWM8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBpZD0icGFnZUFjdHVhbE9wdGlvbiIgdmFsdWU9InBhZ2UtYWN0dWFsIj5BY3R1YWwgU2l6ZTwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIGlkPSJwYWdlV2lkdGhPcHRpb24iIHZhbHVlPSJwYWdlLXdpZHRoIj5GdWxsIFdpZHRoPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gaWQ9ImN1c3RvbVNjYWxlT3B0aW9uIiB2YWx1ZT0iY3VzdG9tIj4gPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjAuNSI+NTAlPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjAuNzUiPjc1JTwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxIj4xMDAlPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEuMjUiPjEyNSU8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMS41Ij4xNTAlPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjIiPjIwMCU8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQgPSAic2xpZGVyQ29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkID0gInNsaWRlciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQgPSAiY2FudmFzQ29udGFpbmVyIj4KICAgICAgICAgICAgICAgIDxkaXYgaWQgPSAiY2FudmFzIj48L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQgPSAib3ZlcmxheU5hdmlnYXRvciI+CiAgICAgICAgICAgICAgICA8ZGl2IGlkID0gInByZXZpb3VzUGFnZSI+PGkgY2xhc3M9ImZhIGZhLWNoZXZyb24tdXAiPjwvaT48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgaWQgPSAibmV4dFBhZ2UiPjxpIGNsYXNzPSJmYSBmYS1jaGV2cm9uLWRvd24iPjwvaT48L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQgPSAib3ZlcmxheUNsb3NlQnV0dG9uIj4KICAgICAgICAgICAgJiMxMDAwNjsKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQgPSAiZGlhbG9nT3ZlcmxheSI+PC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQgPSAiYmxhbmtlZCI+PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2JvZHk+CjwvaHRtbD4K]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/ViewerJS/local.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Cmh0bWxbZGlyPSdsdHInXSAub3V0ZXJDZW50ZXJ7CiAgcmlnaHQ6IDAgIWltcG9ydGFudDsKfQpodG1sW2Rpcj0nbHRyJ10gLmlubmVyQ2VudGVyewogIHJpZ2h0OiAwICFpbXBvcnRhbnQ7Cn0KCiN0aXRsZWJhciwjdG9vbGJhckNvbnRhaW5lcnsKICBiYWNrZ3JvdW5kOiAjMzMzOwogIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7Cn0KI2RvY3VtZW50TmFtZSwudG9vbGJhckxhYmVsewogIGNvbG9yOiNlZWU7Cn0KLnRvb2xiYXJGaWVsZHsKICBjb2xvcjojZmZmOwp9Ci50b29sYmFyRmllbGQ6aG92ZXIsLnRvb2xiYXJGaWVsZDpmb2N1c3sKICBjb2xvcjojYWFhOwp9CgoudG9vbGJhckZpZWxkLC50b29sYmFyQnV0dG9uLC5kcm9wZG93blRvb2xiYXJCdXR0b257CiAgYm9yZGVyOjFweCBzb2xpZCAjNTU1ICFpbXBvcnRhbnQ7CiAgYmFja2dyb3VuZDogIzIyMjsKfQoudG9vbGJhckJ1dHRvbjpob3Zlciwuc3BsaXRUb29sYmFyQnV0dG9uOmhvdmVyID4gLnRvb2xiYXJCdXR0b24sIC5zcGxpdFRvb2xiYXJCdXR0b246Zm9jdXMgPiAudG9vbGJhckJ1dHRvbiwgLnNwbGl0VG9vbGJhckJ1dHRvbi50b2dnbGVkID4gLnRvb2xiYXJCdXR0b24sIC50b29sYmFyQnV0dG9uLnRleHRCdXR0b257CiAgYmFja2dyb3VuZDogIzAwMCAhaW1wb3J0YW50Owp9CiN0b29sYmFyUmlnaHQgLnRvb2xiYXJCdXR0b257CiAgcGFkZGluZy1sZWZ0OiAxNHB4OwogIHBhZGRpbmctcmlnaHQ6IDE0cHg7Cn0KLnRvb2xiYXJCdXR0b24uYWJvdXR7CiAgYmFja2dyb3VuZDogIzMzMyAhaW1wb3J0YW50OyAKICBwYWRkaW5nOiA0cHggIWltcG9ydGFudDsKICBib3JkZXI6bm9uZSAhaW1wb3J0YW50OwogIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsKfQojY2FudmFzQ29udGFpbmVyewogIGJhY2tncm91bmQ6ICNlZWU7Cn0KLnRvb2xiYXJCdXR0b257CiAgY3Vyc29yOiBwb2ludGVyOwp9Ci50b29sYmFyQnV0dG9uOmZvY3VzewogIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsKICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7Cn0KLnRvb2xiYXJCdXR0b24ucHJlc2VudGF0aW9uOjpiZWZvcmUsLnRvb2xiYXJCdXR0b24uZnVsbHNjcmVlbjo6YmVmb3JlLC50b29sYmFyQnV0dG9uLmRvd25sb2FkOjpiZWZvcmUKLC50b29sYmFyQnV0dG9uLnByZXZpb3VzUGFnZTo6YmVmb3JlLC50b29sYmFyQnV0dG9uLm5leHRQYWdlOjpiZWZvcmUsLnRvb2xiYXJCdXR0b24ucGFnZURvd246OmJlZm9yZQosLnRvb2xiYXJCdXR0b24ucGFnZVVwOjpiZWZvcmUsLnRvb2xiYXJCdXR0b24uem9vbU91dDo6YmVmb3JlLC50b29sYmFyQnV0dG9uLnpvb21Jbjo6YmVmb3JlewogIGNvbnRlbnQ6ICcnOwp9Ci5kcm9wZG93blRvb2xiYXJCdXR0b24gPiBzZWxlY3R7CiAgcGFkZGluZy1sZWZ0OjJweDsKfQojc2NhbGVTZWxlY3RDb250YWluZXJ7CiAgcGFkZGluZy1sZWZ0OiA0cHg7Cn0KI2Fib3V0ewogIGN1cnNvcjogaGVscDsKICBmb250LXdlaWdodDogbm9ybWFsOwogIGZvbnQtc2l6ZTogMTBweDsKfQ==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/ViewerJS/ODFViewerPlugin.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE0IEtPIEdtYkggPGNvcHlyaWdodEBrb2dtYmguY29tPgogKgogKiBAbGljc3RhcnQKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgV2ViT0RGLgogKgogKiBXZWJPREYgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAogKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR05VIEFHUEwpCiAqIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mCiAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBXZWJPREYgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CiAqIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogKiBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqIGFsb25nIHdpdGggV2ViT0RGLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogKiBAbGljZW5kCiAqCiAqIEBzb3VyY2U6IGh0dHA6Ly93d3cud2Vib2RmLm9yZy8KICogQHNvdXJjZTogaHR0cHM6Ly9naXRodWIuY29tL2tvZ21iaC9XZWJPREYvCiAqLwoKQG5hbWVzcGFjZSBjdXJzb3IgdXJsKHVybjp3ZWJvZGY6bmFtZXM6Y3Vyc29yKTsKCi5jYXJldCB7CiAgICBvcGFjaXR5OiAwICFpbXBvcnRhbnQ7Cn0K]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/ViewerJS/ODFViewerPlugin.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoQykgMjAxMiBLTyBHbWJIIDxjb3B5cmlnaHRAa29nbWJoLmNvbT4KICoKICogQGxpY3N0YXJ0CiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIFdlYk9ERi4KICoKICogV2ViT0RGIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdOVSBBR1BMKQogKiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZgogKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogV2ViT0RGIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAogKiBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogKiBhbG9uZyB3aXRoIFdlYk9ERi4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KICogQGxpY2VuZAogKgogKiBAc291cmNlOiBodHRwOi8vd3d3LndlYm9kZi5vcmcvCiAqIEBzb3VyY2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9rb2dtYmgvV2ViT0RGLwogKi8KCi8qZ2xvYmFsIHJ1bnRpbWUsIGRvY3VtZW50LCBvZGYsIGd1aSwgY29uc29sZSwgd2Vib2RmKi8KCmZ1bmN0aW9uIE9ERlZpZXdlclBsdWdpbigpIHsKICAgICJ1c2Ugc3RyaWN0IjsKCiAgICBmdW5jdGlvbiBpbml0KGNhbGxiYWNrKSB7CiAgICAgICAgdmFyIGxpYiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpLAogICAgICAgICAgICBwbHVnaW5DU1M7CgogICAgICAgIGxpYi5hc3luYyA9IGZhbHNlOwogICAgICAgIGxpYi5zcmMgPSAnLi93ZWJvZGYuanMnOwogICAgICAgIGxpYi50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7CiAgICAgICAgbGliLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgcnVudGltZS5sb2FkQ2xhc3MoJ2d1aS5IeXBlcmxpbmtDbGlja0hhbmRsZXInKTsKICAgICAgICAgICAgcnVudGltZS5sb2FkQ2xhc3MoJ29kZi5PZGZDYW52YXMnKTsKICAgICAgICAgICAgcnVudGltZS5sb2FkQ2xhc3MoJ29wcy5TZXNzaW9uJyk7CiAgICAgICAgICAgIHJ1bnRpbWUubG9hZENsYXNzKCdndWkuQ2FyZXRNYW5hZ2VyJyk7CiAgICAgICAgICAgIHJ1bnRpbWUubG9hZENsYXNzKCJndWkuSHlwZXJsaW5rVG9vbHRpcFZpZXciKTsKICAgICAgICAgICAgcnVudGltZS5sb2FkQ2xhc3MoJ2d1aS5TZXNzaW9uQ29udHJvbGxlcicpOwogICAgICAgICAgICBydW50aW1lLmxvYWRDbGFzcygnZ3VpLlN2Z1NlbGVjdGlvblZpZXcnKTsKICAgICAgICAgICAgcnVudGltZS5sb2FkQ2xhc3MoJ2d1aS5TZWxlY3Rpb25WaWV3TWFuYWdlcicpOwogICAgICAgICAgICBydW50aW1lLmxvYWRDbGFzcygnZ3VpLlNoYWRvd0N1cnNvcicpOwogICAgICAgICAgICBydW50aW1lLmxvYWRDbGFzcygnZ3VpLlNlc3Npb25WaWV3Jyk7CgogICAgICAgICAgICBjYWxsYmFjaygpOwogICAgICAgIH07CgogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0uYXBwZW5kQ2hpbGQobGliKTsKCiAgICAgICAgcGx1Z2luQ1NTID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGluaycpOwogICAgICAgIHBsdWdpbkNTUy5zZXRBdHRyaWJ1dGUoInJlbCIsICJzdHlsZXNoZWV0Iik7CiAgICAgICAgcGx1Z2luQ1NTLnNldEF0dHJpYnV0ZSgidHlwZSIsICJ0ZXh0L2NzcyIpOwogICAgICAgIHBsdWdpbkNTUy5zZXRBdHRyaWJ1dGUoImhyZWYiLCAiLi9PREZWaWV3ZXJQbHVnaW4uY3NzIik7CiAgICAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChwbHVnaW5DU1MpOwogICAgfQoKICAgIC8vIHRoYXQgc2hvdWxkIHByb2JhYmx5IGJlIHByb3ZpZGVkIGJ5IHdlYm9kZgogICAgZnVuY3Rpb24gbnNSZXNvbHZlcihwcmVmaXgpIHsKICAgICAgICB2YXIgbnMgPSB7CiAgICAgICAgICAgICdkcmF3JyA6ICJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOmRyYXdpbmc6MS4wIiwKICAgICAgICAgICAgJ3ByZXNlbnRhdGlvbicgOiAidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpwcmVzZW50YXRpb246MS4wIiwKICAgICAgICAgICAgJ3RleHQnIDogInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6dGV4dDoxLjAiLAogICAgICAgICAgICAnb2ZmaWNlJyA6ICJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm9mZmljZToxLjAiCiAgICAgICAgfTsKICAgICAgICByZXR1cm4gbnNbcHJlZml4XSB8fCBjb25zb2xlLmxvZygncHJlZml4IFsnICsgcHJlZml4ICsgJ10gdW5rbm93bi4nKTsKICAgIH0KCiAgICB2YXIgc2VsZiA9IHRoaXMsCiAgICAgICAgcGx1Z2luTmFtZSA9ICJXZWJPREYiLAogICAgICAgIHBsdWdpblVSTCA9ICJodHRwOi8vd2Vib2RmLm9yZyIsCiAgICAgICAgb2RmQ2FudmFzID0gbnVsbCwKICAgICAgICBvZGZFbGVtZW50ID0gbnVsbCwKICAgICAgICBpbml0aWFsaXplZCA9IGZhbHNlLAogICAgICAgIHJvb3QgPSBudWxsLAogICAgICAgIGRvY3VtZW50VHlwZSA9IG51bGwsCiAgICAgICAgcGFnZXMgPSBbXSwKICAgICAgICBjdXJyZW50UGFnZSA9IG51bGw7CgogICAgdGhpcy5pbml0aWFsaXplID0gZnVuY3Rpb24gKHZpZXdlckVsZW1lbnQsIGRvY3VtZW50VXJsKSB7CiAgICAgICAgLy8gSWYgdGhlIFVSTCBoYXMgYSBmcmFnbWVudCAoIy4uLiksIHRyeSB0byBsb2FkIHRoZSBmaWxlIGl0IHJlcHJlc2VudHMKICAgICAgICBpbml0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdmFyIHNlc3Npb24sCiAgICAgICAgICAgICAgICBzZXNzaW9uQ29udHJvbGxlciwKICAgICAgICAgICAgICAgIHNlc3Npb25WaWV3LAogICAgICAgICAgICAgICAgb2R0RG9jdW1lbnQsCiAgICAgICAgICAgICAgICBzaGFkb3dDdXJzb3IsCiAgICAgICAgICAgICAgICBzZWxlY3Rpb25WaWV3TWFuYWdlciwKICAgICAgICAgICAgICAgIGNhcmV0TWFuYWdlciwKICAgICAgICAgICAgICAgIGxvY2FsTWVtYmVySWQgPSAnbG9jYWx1c2VyJywKICAgICAgICAgICAgICAgIGh5cGVybGlua1Rvb2x0aXBWaWV3LAogICAgICAgICAgICAgICAgZXZlbnRNYW5hZ2VyOwoKICAgICAgICAgICAgb2RmRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYW52YXMnKTsKICAgICAgICAgICAgb2RmQ2FudmFzID0gbmV3IG9kZi5PZGZDYW52YXMob2RmRWxlbWVudCk7CiAgICAgICAgICAgIG9kZkNhbnZhcy5sb2FkKGRvY3VtZW50VXJsKTsKCiAgICAgICAgICAgIG9kZkNhbnZhcy5hZGRMaXN0ZW5lcignc3RhdGVyZWFkeWNoYW5nZScsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHJvb3QgPSBvZGZDYW52YXMub2RmQ29udGFpbmVyKCkucm9vdEVsZW1lbnQ7CiAgICAgICAgICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7CiAgICAgICAgICAgICAgICBkb2N1bWVudFR5cGUgPSBvZGZDYW52YXMub2RmQ29udGFpbmVyKCkuZ2V0RG9jdW1lbnRUeXBlKHJvb3QpOwogICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50VHlwZSA9PT0gJ3RleHQnKSB7CiAgICAgICAgICAgICAgICAgICAgb2RmQ2FudmFzLmVuYWJsZUFubm90YXRpb25zKHRydWUsIGZhbHNlKTsKCiAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbiA9IG5ldyBvcHMuU2Vzc2lvbihvZGZDYW52YXMpOwogICAgICAgICAgICAgICAgICAgIG9kdERvY3VtZW50ID0gc2Vzc2lvbi5nZXRPZHREb2N1bWVudCgpOwogICAgICAgICAgICAgICAgICAgIHNoYWRvd0N1cnNvciA9IG5ldyBndWkuU2hhZG93Q3Vyc29yKG9kdERvY3VtZW50KTsKICAgICAgICAgICAgICAgICAgICBzZXNzaW9uQ29udHJvbGxlciA9IG5ldyBndWkuU2Vzc2lvbkNvbnRyb2xsZXIoc2Vzc2lvbiwgbG9jYWxNZW1iZXJJZCwgc2hhZG93Q3Vyc29yLCB7fSk7CiAgICAgICAgICAgICAgICAgICAgZXZlbnRNYW5hZ2VyID0gc2Vzc2lvbkNvbnRyb2xsZXIuZ2V0RXZlbnRNYW5hZ2VyKCk7CiAgICAgICAgICAgICAgICAgICAgY2FyZXRNYW5hZ2VyID0gbmV3IGd1aS5DYXJldE1hbmFnZXIoc2Vzc2lvbkNvbnRyb2xsZXIsIG9kZkNhbnZhcy5nZXRWaWV3cG9ydCgpKTsKICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25WaWV3TWFuYWdlciA9IG5ldyBndWkuU2VsZWN0aW9uVmlld01hbmFnZXIoZ3VpLlN2Z1NlbGVjdGlvblZpZXcpOwogICAgICAgICAgICAgICAgICAgIHNlc3Npb25WaWV3ID0gbmV3IGd1aS5TZXNzaW9uVmlldyh7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhcmV0QXZhdGFyc0luaXRpYWxseVZpc2libGU6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfSwgbG9jYWxNZW1iZXJJZCwgc2Vzc2lvbiwgc2Vzc2lvbkNvbnRyb2xsZXIuZ2V0U2Vzc2lvbkNvbnN0cmFpbnRzKCksIGNhcmV0TWFuYWdlciwgc2VsZWN0aW9uVmlld01hbmFnZXIpOwogICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblZpZXdNYW5hZ2VyLnJlZ2lzdGVyQ3Vyc29yKHNoYWRvd0N1cnNvcik7CiAgICAgICAgICAgICAgICAgICAgaHlwZXJsaW5rVG9vbHRpcFZpZXcgPSBuZXcgZ3VpLkh5cGVybGlua1Rvb2x0aXBWaWV3KG9kZkNhbnZhcywKICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbkNvbnRyb2xsZXIuZ2V0SHlwZXJsaW5rQ2xpY2tIYW5kbGVyKCkuZ2V0TW9kaWZpZXIpOwogICAgICAgICAgICAgICAgICAgIGV2ZW50TWFuYWdlci5zdWJzY3JpYmUoIm1vdXNlbW92ZSIsIGh5cGVybGlua1Rvb2x0aXBWaWV3LnNob3dUb29sdGlwKTsKICAgICAgICAgICAgICAgICAgICBldmVudE1hbmFnZXIuc3Vic2NyaWJlKCJtb3VzZW91dCIsIGh5cGVybGlua1Rvb2x0aXBWaWV3LmhpZGVUb29sdGlwKTsKCiAgICAgICAgICAgICAgICAgICAgdmFyIG9wID0gbmV3IG9wcy5PcEFkZE1lbWJlcigpOwogICAgICAgICAgICAgICAgICAgIG9wLmluaXQoewogICAgICAgICAgICAgICAgICAgICAgICBtZW1iZXJpZDogbG9jYWxNZW1iZXJJZCwKICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvcGVydGllczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbE5hbWU6IHJ1bnRpbWUudHIoIlVua25vd24gQXV0aG9yIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogImJsdWUiCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLmVucXVldWUoW29wXSk7CiAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbkNvbnRyb2xsZXIuaW5zZXJ0TG9jYWxDdXJzb3IoKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBzZWxmLm9uTG9hZCgpOwogICAgICAgICAgICB9KTsKICAgICAgICB9KTsKICAgIH07CgogICAgdGhpcy5pc1NsaWRlc2hvdyA9IGZ1bmN0aW9uICgpIHsKICAgICAgICByZXR1cm4gZG9jdW1lbnRUeXBlID09PSAncHJlc2VudGF0aW9uJzsKICAgIH07CgogICAgdGhpcy5vbkxvYWQgPSBmdW5jdGlvbiAoKSB7fTsKCiAgICB0aGlzLmdldFdpZHRoID0gZnVuY3Rpb24gKCkgewogICAgICAgIHJldHVybiBvZGZFbGVtZW50LmNsaWVudFdpZHRoOwogICAgfTsKCiAgICB0aGlzLmdldEhlaWdodCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICByZXR1cm4gb2RmRWxlbWVudC5jbGllbnRIZWlnaHQ7CiAgICB9OwoKICAgIHRoaXMuZml0VG9XaWR0aCA9IGZ1bmN0aW9uICh3aWR0aCkgewogICAgICAgIG9kZkNhbnZhcy5maXRUb1dpZHRoKHdpZHRoKTsKICAgIH07CgogICAgdGhpcy5maXRUb0hlaWdodCA9IGZ1bmN0aW9uIChoZWlnaHQpIHsKICAgICAgICBvZGZDYW52YXMuZml0VG9IZWlnaHQoaGVpZ2h0KTsKICAgIH07CgogICAgdGhpcy5maXRUb1BhZ2UgPSBmdW5jdGlvbiAod2lkdGgsIGhlaWdodCkgewogICAgICAgIG9kZkNhbnZhcy5maXRUb0NvbnRhaW5pbmdFbGVtZW50KHdpZHRoLCBoZWlnaHQpOwogICAgfTsKCiAgICB0aGlzLmZpdFNtYXJ0ID0gZnVuY3Rpb24gKHdpZHRoKSB7CiAgICAgICAgb2RmQ2FudmFzLmZpdFNtYXJ0KHdpZHRoKTsKICAgIH07CgogICAgdGhpcy5nZXRab29tTGV2ZWwgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgcmV0dXJuIG9kZkNhbnZhcy5nZXRab29tTGV2ZWwoKTsKICAgIH07CgogICAgdGhpcy5zZXRab29tTGV2ZWwgPSBmdW5jdGlvbiAodmFsdWUpIHsKICAgICAgICBvZGZDYW52YXMuc2V0Wm9vbUxldmVsKHZhbHVlKTsKICAgIH07CgogICAgLy8gcmV0dXJuIGEgbGlzdCBvZiB0dXBsZXMgKHBhZ2VuYW1lLCBwYWdlbm9kZSkKICAgIHRoaXMuZ2V0UGFnZXMgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIHBhZ2VOb2RlcyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHJvb3QuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhuc1Jlc29sdmVyKCdkcmF3JyksICdwYWdlJykpLAogICAgICAgICAgICBwYWdlcyAgPSBbXSwKICAgICAgICAgICAgaSwKICAgICAgICAgICAgdHVwbGU7CgogICAgICAgIGZvciAoaSA9IDA7IGkgPCBwYWdlTm9kZXMubGVuZ3RoOyBpICs9IDEpIHsKICAgICAgICAgICAgdHVwbGUgPSBbCiAgICAgICAgICAgICAgICBwYWdlTm9kZXNbaV0uZ2V0QXR0cmlidXRlKCdkcmF3Om5hbWUnKSwKICAgICAgICAgICAgICAgIHBhZ2VOb2Rlc1tpXQogICAgICAgICAgICBdOwogICAgICAgICAgICBwYWdlcy5wdXNoKHR1cGxlKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHBhZ2VzOwogICAgfTsKCiAgICB0aGlzLnNob3dQYWdlID0gZnVuY3Rpb24gKG4pIHsKICAgICAgICBvZGZDYW52YXMuc2hvd1BhZ2Uobik7CiAgICB9OwoKICAgIHRoaXMuZ2V0UGx1Z2luTmFtZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICByZXR1cm4gcGx1Z2luTmFtZTsKICAgIH07CgogICAgdGhpcy5nZXRQbHVnaW5WZXJzaW9uID0gZnVuY3Rpb24gKCkgewogICAgICAgIHZhciB2ZXJzaW9uOwoKICAgICAgICBpZiAoU3RyaW5nKHR5cGVvZiB3ZWJvZGYpICE9PSAidW5kZWZpbmVkIikgewogICAgICAgICAgICB2ZXJzaW9uID0gd2Vib2RmLlZlcnNpb247CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdmVyc2lvbiA9ICJVbmtub3duIjsKICAgICAgICB9CgogICAgICAgIHJldHVybiB2ZXJzaW9uOwogICAgfTsKCiAgICB0aGlzLmdldFBsdWdpblVSTCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICByZXR1cm4gcGx1Z2luVVJMOwogICAgfTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/ViewerJS/pdf.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogLSotIE1vZGU6IEphdmE7IHRhYi13aWR0aDogMjsgaW5kZW50LXRhYnMtbW9kZTogbmlsOyBjLWJhc2ljLW9mZnNldDogMiAtKi0gKi8KLyogdmltOiBzZXQgc2hpZnR3aWR0aD0yIHRhYnN0b3A9MiBhdXRvaW5kZW50IGNpbmRlbnQgZXhwYW5kdGFiOiAqLwovKiBDb3B5cmlnaHQgMjAxMiBNb3ppbGxhIEZvdW5kYXRpb24KICoKICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAqCiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKICoKICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAogKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KICovCi8qanNoaW50IGdsb2JhbHN0cmljdDogZmFsc2UgKi8KLyogZ2xvYmFscyBQREZKUyAqLwoKLy8gSW5pdGlhbGl6aW5nIFBERkpTIGdsb2JhbCBvYmplY3QgKGlmIHN0aWxsIHVuZGVmaW5lZCkKaWYgKHR5cGVvZiBQREZKUyA9PT0gJ3VuZGVmaW5lZCcpIHsKICAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiB0aGlzKS5QREZKUyA9IHt9Owp9CgpQREZKUy52ZXJzaW9uID0gJzEuMS4xMTQnOwpQREZKUy5idWlsZCA9ICczZmQ0NGZkJzsKCihmdW5jdGlvbiBwZGZqc1dyYXBwZXIoKSB7CiAgLy8gVXNlIHN0cmljdCBpbiBvdXIgY29udGV4dCBvbmx5IC0gdXNlcnMgbWlnaHQgbm90IHdhbnQgaXQKICAndXNlIHN0cmljdCc7CgovKiAtKi0gTW9kZTogSmF2YTsgdGFiLXdpZHRoOiAyOyBpbmRlbnQtdGFicy1tb2RlOiBuaWw7IGMtYmFzaWMtb2Zmc2V0OiAyIC0qLSAqLwovKiB2aW06IHNldCBzaGlmdHdpZHRoPTIgdGFic3RvcD0yIGF1dG9pbmRlbnQgY2luZGVudCBleHBhbmR0YWI6ICovCi8qIENvcHlyaWdodCAyMDEyIE1vemlsbGEgRm91bmRhdGlvbgogKgogKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICoKICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogKgogKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogKi8KLyogZ2xvYmFscyBDbWQsIENvbG9yU3BhY2UsIERpY3QsIE1vekJsb2JCdWlsZGVyLCBOYW1lLCBQREZKUywgUmVmLCBVUkwsCiAgICAgICAgICAgUHJvbWlzZSAqLwoKJ3VzZSBzdHJpY3QnOwoKdmFyIGdsb2JhbFNjb3BlID0gKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSA/IHRoaXMgOiB3aW5kb3c7Cgp2YXIgaXNXb3JrZXIgPSAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpOwoKdmFyIEZPTlRfSURFTlRJVFlfTUFUUklYID0gWzAuMDAxLCAwLCAwLCAwLjAwMSwgMCwgMF07Cgp2YXIgVGV4dFJlbmRlcmluZ01vZGUgPSB7CiAgRklMTDogMCwKICBTVFJPS0U6IDEsCiAgRklMTF9TVFJPS0U6IDIsCiAgSU5WSVNJQkxFOiAzLAogIEZJTExfQUREX1RPX1BBVEg6IDQsCiAgU1RST0tFX0FERF9UT19QQVRIOiA1LAogIEZJTExfU1RST0tFX0FERF9UT19QQVRIOiA2LAogIEFERF9UT19QQVRIOiA3LAogIEZJTExfU1RST0tFX01BU0s6IDMsCiAgQUREX1RPX1BBVEhfRkxBRzogNAp9OwoKdmFyIEltYWdlS2luZCA9IHsKICBHUkFZU0NBTEVfMUJQUDogMSwKICBSR0JfMjRCUFA6IDIsCiAgUkdCQV8zMkJQUDogMwp9OwoKdmFyIEFubm90YXRpb25UeXBlID0gewogIFdJREdFVDogMSwKICBURVhUOiAyLAogIExJTks6IDMKfTsKCnZhciBTdHJlYW1UeXBlID0gewogIFVOS05PV046IDAsCiAgRkxBVEU6IDEsCiAgTFpXOiAyLAogIERDVDogMywKICBKUFg6IDQsCiAgSkJJRzogNSwKICBBODU6IDYsCiAgQUhYOiA3LAogIENDRjogOCwKICBSTDogOQp9OwoKdmFyIEZvbnRUeXBlID0gewogIFVOS05PV046IDAsCiAgVFlQRTE6IDEsCiAgVFlQRTFDOiAyLAogIENJREZPTlRUWVBFMDogMywKICBDSURGT05UVFlQRTBDOiA0LAogIFRSVUVUWVBFOiA1LAogIENJREZPTlRUWVBFMjogNiwKICBUWVBFMzogNywKICBPUEVOVFlQRTogOCwKICBUWVBFMDogOSwKICBNTVRZUEUxOiAxMAp9OwoKLy8gVGhlIGdsb2JhbCBQREZKUyBvYmplY3QgZXhwb3NlcyB0aGUgQVBJCi8vIEluIHByb2R1Y3Rpb24sIGl0IHdpbGwgYmUgZGVjbGFyZWQgb3V0c2lkZSBhIGdsb2JhbCB3cmFwcGVyCi8vIEluIGRldmVsb3BtZW50LCBpdCB3aWxsIGJlIGRlY2xhcmVkIGhlcmUKaWYgKCFnbG9iYWxTY29wZS5QREZKUykgewogIGdsb2JhbFNjb3BlLlBERkpTID0ge307Cn0KCmdsb2JhbFNjb3BlLlBERkpTLnBkZkJ1ZyA9IGZhbHNlOwoKUERGSlMuVkVSQk9TSVRZX0xFVkVMUyA9IHsKICBlcnJvcnM6IDAsCiAgd2FybmluZ3M6IDEsCiAgaW5mb3M6IDUKfTsKCi8vIEFsbCB0aGUgcG9zc2libGUgb3BlcmF0aW9ucyBmb3IgYW4gb3BlcmF0b3IgbGlzdC4KdmFyIE9QUyA9IFBERkpTLk9QUyA9IHsKICAvLyBJbnRlbnRpb25hbGx5IHN0YXJ0IGZyb20gMSBzbyBpdCBpcyBlYXN5IHRvIHNwb3QgYmFkIG9wZXJhdG9ycyB0aGF0IHdpbGwgYmUKICAvLyAwJ3MuCiAgZGVwZW5kZW5jeTogMSwKICBzZXRMaW5lV2lkdGg6IDIsCiAgc2V0TGluZUNhcDogMywKICBzZXRMaW5lSm9pbjogNCwKICBzZXRNaXRlckxpbWl0OiA1LAogIHNldERhc2g6IDYsCiAgc2V0UmVuZGVyaW5nSW50ZW50OiA3LAogIHNldEZsYXRuZXNzOiA4LAogIHNldEdTdGF0ZTogOSwKICBzYXZlOiAxMCwKICByZXN0b3JlOiAxMSwKICB0cmFuc2Zvcm06IDEyLAogIG1vdmVUbzogMTMsCiAgbGluZVRvOiAxNCwKICBjdXJ2ZVRvOiAxNSwKICBjdXJ2ZVRvMjogMTYsCiAgY3VydmVUbzM6IDE3LAogIGNsb3NlUGF0aDogMTgsCiAgcmVjdGFuZ2xlOiAxOSwKICBzdHJva2U6IDIwLAogIGNsb3NlU3Ryb2tlOiAyMSwKICBmaWxsOiAyMiwKICBlb0ZpbGw6IDIzLAogIGZpbGxTdHJva2U6IDI0LAogIGVvRmlsbFN0cm9rZTogMjUsCiAgY2xvc2VGaWxsU3Ryb2tlOiAyNiwKICBjbG9zZUVPRmlsbFN0cm9rZTogMjcsCiAgZW5kUGF0aDogMjgsCiAgY2xpcDogMjksCiAgZW9DbGlwOiAzMCwKICBiZWdpblRleHQ6IDMxLAogIGVuZFRleHQ6IDMyLAogIHNldENoYXJTcGFjaW5nOiAzMywKICBzZXRXb3JkU3BhY2luZzogMzQsCiAgc2V0SFNjYWxlOiAzNSwKICBzZXRMZWFkaW5nOiAzNiwKICBzZXRGb250OiAzNywKICBzZXRUZXh0UmVuZGVyaW5nTW9kZTogMzgsCiAgc2V0VGV4dFJpc2U6IDM5LAogIG1vdmVUZXh0OiA0MCwKICBzZXRMZWFkaW5nTW92ZVRleHQ6IDQxLAogIHNldFRleHRNYXRyaXg6IDQyLAogIG5leHRMaW5lOiA0MywKICBzaG93VGV4dDogNDQsCiAgc2hvd1NwYWNlZFRleHQ6IDQ1LAogIG5leHRMaW5lU2hvd1RleHQ6IDQ2LAogIG5leHRMaW5lU2V0U3BhY2luZ1Nob3dUZXh0OiA0NywKICBzZXRDaGFyV2lkdGg6IDQ4LAogIHNldENoYXJXaWR0aEFuZEJvdW5kczogNDksCiAgc2V0U3Ryb2tlQ29sb3JTcGFjZTogNTAsCiAgc2V0RmlsbENvbG9yU3BhY2U6IDUxLAogIHNldFN0cm9rZUNvbG9yOiA1MiwKICBzZXRTdHJva2VDb2xvck46IDUzLAogIHNldEZpbGxDb2xvcjogNTQsCiAgc2V0RmlsbENvbG9yTjogNTUsCiAgc2V0U3Ryb2tlR3JheTogNTYsCiAgc2V0RmlsbEdyYXk6IDU3LAogIHNldFN0cm9rZVJHQkNvbG9yOiA1OCwKICBzZXRGaWxsUkdCQ29sb3I6IDU5LAogIHNldFN0cm9rZUNNWUtDb2xvcjogNjAsCiAgc2V0RmlsbENNWUtDb2xvcjogNjEsCiAgc2hhZGluZ0ZpbGw6IDYyLAogIGJlZ2luSW5saW5lSW1hZ2U6IDYzLAogIGJlZ2luSW1hZ2VEYXRhOiA2NCwKICBlbmRJbmxpbmVJbWFnZTogNjUsCiAgcGFpbnRYT2JqZWN0OiA2NiwKICBtYXJrUG9pbnQ6IDY3LAogIG1hcmtQb2ludFByb3BzOiA2OCwKICBiZWdpbk1hcmtlZENvbnRlbnQ6IDY5LAogIGJlZ2luTWFya2VkQ29udGVudFByb3BzOiA3MCwKICBlbmRNYXJrZWRDb250ZW50OiA3MSwKICBiZWdpbkNvbXBhdDogNzIsCiAgZW5kQ29tcGF0OiA3MywKICBwYWludEZvcm1YT2JqZWN0QmVnaW46IDc0LAogIHBhaW50Rm9ybVhPYmplY3RFbmQ6IDc1LAogIGJlZ2luR3JvdXA6IDc2LAogIGVuZEdyb3VwOiA3NywKICBiZWdpbkFubm90YXRpb25zOiA3OCwKICBlbmRBbm5vdGF0aW9uczogNzksCiAgYmVnaW5Bbm5vdGF0aW9uOiA4MCwKICBlbmRBbm5vdGF0aW9uOiA4MSwKICBwYWludEpwZWdYT2JqZWN0OiA4MiwKICBwYWludEltYWdlTWFza1hPYmplY3Q6IDgzLAogIHBhaW50SW1hZ2VNYXNrWE9iamVjdEdyb3VwOiA4NCwKICBwYWludEltYWdlWE9iamVjdDogODUsCiAgcGFpbnRJbmxpbmVJbWFnZVhPYmplY3Q6IDg2LAogIHBhaW50SW5saW5lSW1hZ2VYT2JqZWN0R3JvdXA6IDg3LAogIHBhaW50SW1hZ2VYT2JqZWN0UmVwZWF0OiA4OCwKICBwYWludEltYWdlTWFza1hPYmplY3RSZXBlYXQ6IDg5LAogIHBhaW50U29saWRDb2xvckltYWdlTWFzazogOTAsCiAgY29uc3RydWN0UGF0aDogOTEKfTsKCi8vIEEgbm90aWNlIGZvciBkZXZzLiBUaGVzZSBhcmUgZ29vZCBmb3IgdGhpbmdzIHRoYXQgYXJlIGhlbHBmdWwgdG8gZGV2cywgc3VjaAovLyBhcyB3YXJuaW5nIHRoYXQgV29ya2VycyB3ZXJlIGRpc2FibGVkLCB3aGljaCBpcyBpbXBvcnRhbnQgdG8gZGV2cyBidXQgbm90Ci8vIGVuZCB1c2Vycy4KZnVuY3Rpb24gaW5mbyhtc2cpIHsKICBpZiAoUERGSlMudmVyYm9zaXR5ID49IFBERkpTLlZFUkJPU0lUWV9MRVZFTFMuaW5mb3MpIHsKICAgIGNvbnNvbGUubG9nKCdJbmZvOiAnICsgbXNnKTsKICB9Cn0KCi8vIE5vbi1mYXRhbCB3YXJuaW5ncy4KZnVuY3Rpb24gd2Fybihtc2cpIHsKICBpZiAoUERGSlMudmVyYm9zaXR5ID49IFBERkpTLlZFUkJPU0lUWV9MRVZFTFMud2FybmluZ3MpIHsKICAgIGNvbnNvbGUubG9nKCdXYXJuaW5nOiAnICsgbXNnKTsKICB9Cn0KCi8vIEZhdGFsIGVycm9ycyB0aGF0IHNob3VsZCB0cmlnZ2VyIHRoZSBmYWxsYmFjayBVSSBhbmQgaGFsdCBleGVjdXRpb24gYnkKLy8gdGhyb3dpbmcgYW4gZXhjZXB0aW9uLgpmdW5jdGlvbiBlcnJvcihtc2cpIHsKICBpZiAoUERGSlMudmVyYm9zaXR5ID49IFBERkpTLlZFUkJPU0lUWV9MRVZFTFMuZXJyb3JzKSB7CiAgICBjb25zb2xlLmxvZygnRXJyb3I6ICcgKyBtc2cpOwogICAgY29uc29sZS5sb2coYmFja3RyYWNlKCkpOwogIH0KICBVbnN1cHBvcnRlZE1hbmFnZXIubm90aWZ5KFVOU1VQUE9SVEVEX0ZFQVRVUkVTLnVua25vd24pOwogIHRocm93IG5ldyBFcnJvcihtc2cpOwp9CgpmdW5jdGlvbiBiYWNrdHJhY2UoKSB7CiAgdHJ5IHsKICAgIHRocm93IG5ldyBFcnJvcigpOwogIH0gY2F0Y2ggKGUpIHsKICAgIHJldHVybiBlLnN0YWNrID8gZS5zdGFjay5zcGxpdCgnXG4nKS5zbGljZSgyKS5qb2luKCdcbicpIDogJyc7CiAgfQp9CgpmdW5jdGlvbiBhc3NlcnQoY29uZCwgbXNnKSB7CiAgaWYgKCFjb25kKSB7CiAgICBlcnJvcihtc2cpOwogIH0KfQoKdmFyIFVOU1VQUE9SVEVEX0ZFQVRVUkVTID0gUERGSlMuVU5TVVBQT1JURURfRkVBVFVSRVMgPSB7CiAgdW5rbm93bjogJ3Vua25vd24nLAogIGZvcm1zOiAnZm9ybXMnLAogIGphdmFTY3JpcHQ6ICdqYXZhU2NyaXB0JywKICBzbWFzazogJ3NtYXNrJywKICBzaGFkaW5nUGF0dGVybjogJ3NoYWRpbmdQYXR0ZXJuJywKICBmb250OiAnZm9udCcKfTsKCnZhciBVbnN1cHBvcnRlZE1hbmFnZXIgPSBQREZKUy5VbnN1cHBvcnRlZE1hbmFnZXIgPQogIChmdW5jdGlvbiBVbnN1cHBvcnRlZE1hbmFnZXJDbG9zdXJlKCkgewogIHZhciBsaXN0ZW5lcnMgPSBbXTsKICByZXR1cm4gewogICAgbGlzdGVuOiBmdW5jdGlvbiAoY2IpIHsKICAgICAgbGlzdGVuZXJzLnB1c2goY2IpOwogICAgfSwKICAgIG5vdGlmeTogZnVuY3Rpb24gKGZlYXR1cmVJZCkgewogICAgICB3YXJuKCdVbnN1cHBvcnRlZCBmZWF0dXJlICInICsgZmVhdHVyZUlkICsgJyInKTsKICAgICAgZm9yICh2YXIgaSA9IDAsIGlpID0gbGlzdGVuZXJzLmxlbmd0aDsgaSA8IGlpOyBpKyspIHsKICAgICAgICBsaXN0ZW5lcnNbaV0oZmVhdHVyZUlkKTsKICAgICAgfQogICAgfQogIH07Cn0pKCk7CgovLyBDb21iaW5lcyB0d28gVVJMcy4gVGhlIGJhc2VVcmwgc2hhbGwgYmUgYWJzb2x1dGUgVVJMLiBJZiB0aGUgdXJsIGlzIGFuCi8vIGFic29sdXRlIFVSTCwgaXQgd2lsbCBiZSByZXR1cm5lZCBhcyBpcy4KZnVuY3Rpb24gY29tYmluZVVybChiYXNlVXJsLCB1cmwpIHsKICBpZiAoIXVybCkgewogICAgcmV0dXJuIGJhc2VVcmw7CiAgfQogIGlmICgvXlthLXpdW2EtejAtOStcLS5dKjovaS50ZXN0KHVybCkpIHsKICAgIHJldHVybiB1cmw7CiAgfQogIHZhciBpOwogIGlmICh1cmwuY2hhckF0KDApID09PSAnLycpIHsKICAgIC8vIGFic29sdXRlIHBhdGgKICAgIGkgPSBiYXNlVXJsLmluZGV4T2YoJzovLycpOwogICAgaWYgKHVybC5jaGFyQXQoMSkgPT09ICcvJykgewogICAgICArK2k7CiAgICB9IGVsc2UgewogICAgICBpID0gYmFzZVVybC5pbmRleE9mKCcvJywgaSArIDMpOwogICAgfQogICAgcmV0dXJuIGJhc2VVcmwuc3Vic3RyaW5nKDAsIGkpICsgdXJsOwogIH0gZWxzZSB7CiAgICAvLyByZWxhdGl2ZSBwYXRoCiAgICB2YXIgcGF0aExlbmd0aCA9IGJhc2VVcmwubGVuZ3RoOwogICAgaSA9IGJhc2VVcmwubGFzdEluZGV4T2YoJyMnKTsKICAgIHBhdGhMZW5ndGggPSBpID49IDAgPyBpIDogcGF0aExlbmd0aDsKICAgIGkgPSBiYXNlVXJsLmxhc3RJbmRleE9mKCc/JywgcGF0aExlbmd0aCk7CiAgICBwYXRoTGVuZ3RoID0gaSA+PSAwID8gaSA6IHBhdGhMZW5ndGg7CiAgICB2YXIgcHJlZml4TGVuZ3RoID0gYmFzZVVybC5sYXN0SW5kZXhPZignLycsIHBhdGhMZW5ndGgpOwogICAgcmV0dXJuIGJhc2VVcmwuc3Vic3RyaW5nKDAsIHByZWZpeExlbmd0aCArIDEpICsgdXJsOwogIH0KfQoKLy8gVmFsaWRhdGVzIGlmIFVSTCBpcyBzYWZlIGFuZCBhbGxvd2VkLCBlLmcuIHRvIGF2b2lkIFhTUy4KZnVuY3Rpb24gaXNWYWxpZFVybCh1cmwsIGFsbG93UmVsYXRpdmUpIHsKICBpZiAoIXVybCkgewogICAgcmV0dXJuIGZhbHNlOwogIH0KICAvLyBSRkMgMzk4NiAoaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTMuMSkKICAvLyBzY2hlbWUgPSBBTFBIQSAqKCBBTFBIQSAvIERJR0lUIC8gIisiIC8gIi0iIC8gIi4iICkKICB2YXIgcHJvdG9jb2wgPSAvXlthLXpdW2EtejAtOStcLS5dKig/PTopL2kuZXhlYyh1cmwpOwogIGlmICghcHJvdG9jb2wpIHsKICAgIHJldHVybiBhbGxvd1JlbGF0aXZlOwogIH0KICBwcm90b2NvbCA9IHByb3RvY29sWzBdLnRvTG93ZXJDYXNlKCk7CiAgc3dpdGNoIChwcm90b2NvbCkgewogICAgY2FzZSAnaHR0cCc6CiAgICBjYXNlICdodHRwcyc6CiAgICBjYXNlICdmdHAnOgogICAgY2FzZSAnbWFpbHRvJzoKICAgIGNhc2UgJ3RlbCc6CiAgICAgIHJldHVybiB0cnVlOwogICAgZGVmYXVsdDoKICAgICAgcmV0dXJuIGZhbHNlOwogIH0KfQpQREZKUy5pc1ZhbGlkVXJsID0gaXNWYWxpZFVybDsKCmZ1bmN0aW9uIHNoYWRvdyhvYmosIHByb3AsIHZhbHVlKSB7CiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwgcHJvcCwgeyB2YWx1ZTogdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6IGZhbHNlIH0pOwogIHJldHVybiB2YWx1ZTsKfQpQREZKUy5zaGFkb3cgPSBzaGFkb3c7Cgp2YXIgUGFzc3dvcmRSZXNwb25zZXMgPSBQREZKUy5QYXNzd29yZFJlc3BvbnNlcyA9IHsKICBORUVEX1BBU1NXT1JEOiAxLAogIElOQ09SUkVDVF9QQVNTV09SRDogMgp9OwoKdmFyIFBhc3N3b3JkRXhjZXB0aW9uID0gKGZ1bmN0aW9uIFBhc3N3b3JkRXhjZXB0aW9uQ2xvc3VyZSgpIHsKICBmdW5jdGlvbiBQYXNzd29yZEV4Y2VwdGlvbihtc2csIGNvZGUpIHsKICAgIHRoaXMubmFtZSA9ICdQYXNzd29yZEV4Y2VwdGlvbic7CiAgICB0aGlzLm1lc3NhZ2UgPSBtc2c7CiAgICB0aGlzLmNvZGUgPSBjb2RlOwogIH0KCiAgUGFzc3dvcmRFeGNlcHRpb24ucHJvdG90eXBlID0gbmV3IEVycm9yKCk7CiAgUGFzc3dvcmRFeGNlcHRpb24uY29uc3RydWN0b3IgPSBQYXNzd29yZEV4Y2VwdGlvbjsKCiAgcmV0dXJuIFBhc3N3b3JkRXhjZXB0aW9uOwp9KSgpOwpQREZKUy5QYXNzd29yZEV4Y2VwdGlvbiA9IFBhc3N3b3JkRXhjZXB0aW9uOwoKdmFyIFVua25vd25FcnJvckV4Y2VwdGlvbiA9IChmdW5jdGlvbiBVbmtub3duRXJyb3JFeGNlcHRpb25DbG9zdXJlKCkgewogIGZ1bmN0aW9uIFVua25vd25FcnJvckV4Y2VwdGlvbihtc2csIGRldGFpbHMpIHsKICAgIHRoaXMubmFtZSA9ICdVbmtub3duRXJyb3JFeGNlcHRpb24nOwogICAgdGhpcy5tZXNzYWdlID0gbXNnOwogICAgdGhpcy5kZXRhaWxzID0gZGV0YWlsczsKICB9CgogIFVua25vd25FcnJvckV4Y2VwdGlvbi5wcm90b3R5cGUgPSBuZXcgRXJyb3IoKTsKICBVbmtub3duRXJyb3JFeGNlcHRpb24uY29uc3RydWN0b3IgPSBVbmtub3duRXJyb3JFeGNlcHRpb247CgogIHJldHVybiBVbmtub3duRXJyb3JFeGNlcHRpb247Cn0pKCk7ClBERkpTLlVua25vd25FcnJvckV4Y2VwdGlvbiA9IFVua25vd25FcnJvckV4Y2VwdGlvbjsKCnZhciBJbnZhbGlkUERGRXhjZXB0aW9uID0gKGZ1bmN0aW9uIEludmFsaWRQREZFeGNlcHRpb25DbG9zdXJlKCkgewogIGZ1bmN0aW9uIEludmFsaWRQREZFeGNlcHRpb24obXNnKSB7CiAgICB0aGlzLm5hbWUgPSAnSW52YWxpZFBERkV4Y2VwdGlvbic7CiAgICB0aGlzLm1lc3NhZ2UgPSBtc2c7CiAgfQoKICBJbnZhbGlkUERGRXhjZXB0aW9uLnByb3RvdHlwZSA9IG5ldyBFcnJvcigpOwogIEludmFsaWRQREZFeGNlcHRpb24uY29uc3RydWN0b3IgPSBJbnZhbGlkUERGRXhjZXB0aW9uOwoKICByZXR1cm4gSW52YWxpZFBERkV4Y2VwdGlvbjsKfSkoKTsKUERGSlMuSW52YWxpZFBERkV4Y2VwdGlvbiA9IEludmFsaWRQREZFeGNlcHRpb247Cgp2YXIgTWlzc2luZ1BERkV4Y2VwdGlvbiA9IChmdW5jdGlvbiBNaXNzaW5nUERGRXhjZXB0aW9uQ2xvc3VyZSgpIHsKICBmdW5jdGlvbiBNaXNzaW5nUERGRXhjZXB0aW9uKG1zZykgewogICAgdGhpcy5uYW1lID0gJ01pc3NpbmdQREZFeGNlcHRpb24nOwogICAgdGhpcy5tZXNzYWdlID0gbXNnOwogIH0KCiAgTWlzc2luZ1BERkV4Y2VwdGlvbi5wcm90b3R5cGUgPSBuZXcgRXJyb3IoKTsKICBNaXNzaW5nUERGRXhjZXB0aW9uLmNvbnN0cnVjdG9yID0gTWlzc2luZ1BERkV4Y2VwdGlvbjsKCiAgcmV0dXJuIE1pc3NpbmdQREZFeGNlcHRpb247Cn0pKCk7ClBERkpTLk1pc3NpbmdQREZFeGNlcHRpb24gPSBNaXNzaW5nUERGRXhjZXB0aW9uOwoKdmFyIFVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbiA9CiAgICAoZnVuY3Rpb24gVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uQ2xvc3VyZSgpIHsKICBmdW5jdGlvbiBVbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24obXNnLCBzdGF0dXMpIHsKICAgIHRoaXMubmFtZSA9ICdVbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24nOwogICAgdGhpcy5tZXNzYWdlID0gbXNnOwogICAgdGhpcy5zdGF0dXMgPSBzdGF0dXM7CiAgfQoKICBVbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24ucHJvdG90eXBlID0gbmV3IEVycm9yKCk7CiAgVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uLmNvbnN0cnVjdG9yID0gVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uOwoKICByZXR1cm4gVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uOwp9KSgpOwpQREZKUy5VbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24gPSBVbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb247Cgp2YXIgTm90SW1wbGVtZW50ZWRFeGNlcHRpb24gPSAoZnVuY3Rpb24gTm90SW1wbGVtZW50ZWRFeGNlcHRpb25DbG9zdXJlKCkgewogIGZ1bmN0aW9uIE5vdEltcGxlbWVudGVkRXhjZXB0aW9uKG1zZykgewogICAgdGhpcy5tZXNzYWdlID0gbXNnOwogIH0KCiAgTm90SW1wbGVtZW50ZWRFeGNlcHRpb24ucHJvdG90eXBlID0gbmV3IEVycm9yKCk7CiAgTm90SW1wbGVtZW50ZWRFeGNlcHRpb24ucHJvdG90eXBlLm5hbWUgPSAnTm90SW1wbGVtZW50ZWRFeGNlcHRpb24nOwogIE5vdEltcGxlbWVudGVkRXhjZXB0aW9uLmNvbnN0cnVjdG9yID0gTm90SW1wbGVtZW50ZWRFeGNlcHRpb247CgogIHJldHVybiBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbjsKfSkoKTsKCnZhciBNaXNzaW5nRGF0YUV4Y2VwdGlvbiA9IChmdW5jdGlvbiBNaXNzaW5nRGF0YUV4Y2VwdGlvbkNsb3N1cmUoKSB7CiAgZnVuY3Rpb24gTWlzc2luZ0RhdGFFeGNlcHRpb24oYmVnaW4sIGVuZCkgewogICAgdGhpcy5iZWdpbiA9IGJlZ2luOwogICAgdGhpcy5lbmQgPSBlbmQ7CiAgICB0aGlzLm1lc3NhZ2UgPSAnTWlzc2luZyBkYXRhIFsnICsgYmVnaW4gKyAnLCAnICsgZW5kICsgJyknOwogIH0KCiAgTWlzc2luZ0RhdGFFeGNlcHRpb24ucHJvdG90eXBlID0gbmV3IEVycm9yKCk7CiAgTWlzc2luZ0RhdGFFeGNlcHRpb24ucHJvdG90eXBlLm5hbWUgPSAnTWlzc2luZ0RhdGFFeGNlcHRpb24nOwogIE1pc3NpbmdEYXRhRXhjZXB0aW9uLmNvbnN0cnVjdG9yID0gTWlzc2luZ0RhdGFFeGNlcHRpb247CgogIHJldHVybiBNaXNzaW5nRGF0YUV4Y2VwdGlvbjsKfSkoKTsKCnZhciBYUmVmUGFyc2VFeGNlcHRpb24gPSAoZnVuY3Rpb24gWFJlZlBhcnNlRXhjZXB0aW9uQ2xvc3VyZSgpIHsKICBmdW5jdGlvbiBYUmVmUGFyc2VFeGNlcHRpb24obXNnKSB7CiAgICB0aGlzLm1lc3NhZ2UgPSBtc2c7CiAgfQoKICBYUmVmUGFyc2VFeGNlcHRpb24ucHJvdG90eXBlID0gbmV3IEVycm9yKCk7CiAgWFJlZlBhcnNlRXhjZXB0aW9uLnByb3RvdHlwZS5uYW1lID0gJ1hSZWZQYXJzZUV4Y2VwdGlvbic7CiAgWFJlZlBhcnNlRXhjZXB0aW9uLmNvbnN0cnVjdG9yID0gWFJlZlBhcnNlRXhjZXB0aW9uOwoKICByZXR1cm4gWFJlZlBhcnNlRXhjZXB0aW9uOwp9KSgpOwoKCmZ1bmN0aW9uIGJ5dGVzVG9TdHJpbmcoYnl0ZXMpIHsKICBhc3NlcnQoYnl0ZXMgIT09IG51bGwgJiYgdHlwZW9mIGJ5dGVzID09PSAnb2JqZWN0JyAmJgogICAgICAgICBieXRlcy5sZW5ndGggIT09IHVuZGVmaW5lZCwgJ0ludmFsaWQgYXJndW1lbnQgZm9yIGJ5dGVzVG9TdHJpbmcnKTsKICB2YXIgbGVuZ3RoID0gYnl0ZXMubGVuZ3RoOwogIHZhciBNQVhfQVJHVU1FTlRfQ09VTlQgPSA4MTkyOwogIGlmIChsZW5ndGggPCBNQVhfQVJHVU1FTlRfQ09VTlQpIHsKICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsIGJ5dGVzKTsKICB9CiAgdmFyIHN0ckJ1ZiA9IFtdOwogIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpICs9IE1BWF9BUkdVTUVOVF9DT1VOVCkgewogICAgdmFyIGNodW5rRW5kID0gTWF0aC5taW4oaSArIE1BWF9BUkdVTUVOVF9DT1VOVCwgbGVuZ3RoKTsKICAgIHZhciBjaHVuayA9IGJ5dGVzLnN1YmFycmF5KGksIGNodW5rRW5kKTsKICAgIHN0ckJ1Zi5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCwgY2h1bmspKTsKICB9CiAgcmV0dXJuIHN0ckJ1Zi5qb2luKCcnKTsKfQoKZnVuY3Rpb24gc3RyaW5nVG9CeXRlcyhzdHIpIHsKICBhc3NlcnQodHlwZW9mIHN0ciA9PT0gJ3N0cmluZycsICdJbnZhbGlkIGFyZ3VtZW50IGZvciBzdHJpbmdUb0J5dGVzJyk7CiAgdmFyIGxlbmd0aCA9IHN0ci5sZW5ndGg7CiAgdmFyIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkobGVuZ3RoKTsKICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICBieXRlc1tpXSA9IHN0ci5jaGFyQ29kZUF0KGkpICYgMHhGRjsKICB9CiAgcmV0dXJuIGJ5dGVzOwp9CgpmdW5jdGlvbiBzdHJpbmczMih2YWx1ZSkgewogIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKCh2YWx1ZSA+PiAyNCkgJiAweGZmLCAodmFsdWUgPj4gMTYpICYgMHhmZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUgPj4gOCkgJiAweGZmLCB2YWx1ZSAmIDB4ZmYpOwp9CgpmdW5jdGlvbiBsb2cyKHgpIHsKICB2YXIgbiA9IDEsIGkgPSAwOwogIHdoaWxlICh4ID4gbikgewogICAgbiA8PD0gMTsKICAgIGkrKzsKICB9CiAgcmV0dXJuIGk7Cn0KCmZ1bmN0aW9uIHJlYWRJbnQ4KGRhdGEsIHN0YXJ0KSB7CiAgcmV0dXJuIChkYXRhW3N0YXJ0XSA8PCAyNCkgPj4gMjQ7Cn0KCmZ1bmN0aW9uIHJlYWRVaW50MTYoZGF0YSwgb2Zmc2V0KSB7CiAgcmV0dXJuIChkYXRhW29mZnNldF0gPDwgOCkgfCBkYXRhW29mZnNldCArIDFdOwp9CgpmdW5jdGlvbiByZWFkVWludDMyKGRhdGEsIG9mZnNldCkgewogIHJldHVybiAoKGRhdGFbb2Zmc2V0XSA8PCAyNCkgfCAoZGF0YVtvZmZzZXQgKyAxXSA8PCAxNikgfAogICAgICAgICAoZGF0YVtvZmZzZXQgKyAyXSA8PCA4KSB8IGRhdGFbb2Zmc2V0ICsgM10pID4+PiAwOwp9CgovLyBMYXp5IHRlc3QgdGhlIGVuZGlhbm5lc3Mgb2YgdGhlIHBsYXRmb3JtCi8vIE5PVEU6IFRoaXMgd2lsbCBiZSAndHJ1ZScgZm9yIHNpbXVsYXRlZCBUeXBlZEFycmF5cwpmdW5jdGlvbiBpc0xpdHRsZUVuZGlhbigpIHsKICB2YXIgYnVmZmVyOCA9IG5ldyBVaW50OEFycmF5KDIpOwogIGJ1ZmZlcjhbMF0gPSAxOwogIHZhciBidWZmZXIxNiA9IG5ldyBVaW50MTZBcnJheShidWZmZXI4LmJ1ZmZlcik7CiAgcmV0dXJuIChidWZmZXIxNlswXSA9PT0gMSk7Cn0KCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShQREZKUywgJ2lzTGl0dGxlRW5kaWFuJywgewogIGNvbmZpZ3VyYWJsZTogdHJ1ZSwKICBnZXQ6IGZ1bmN0aW9uIFBERkpTX2lzTGl0dGxlRW5kaWFuKCkgewogICAgcmV0dXJuIHNoYWRvdyhQREZKUywgJ2lzTGl0dGxlRW5kaWFuJywgaXNMaXR0bGVFbmRpYW4oKSk7CiAgfQp9KTsKCi8vI2lmICEoRklSRUZPWCB8fCBNT1pDRU5UUkFMIHx8IEIyRyB8fCBDSFJPTUUpCi8vLy8gTGF6eSB0ZXN0IGlmIHRoZSB1c2VyQWdhbnQgc3VwcG9ydCBDYW52YXNUeXBlZEFycmF5cwpmdW5jdGlvbiBoYXNDYW52YXNUeXBlZEFycmF5cygpIHsKICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7CiAgY2FudmFzLndpZHRoID0gY2FudmFzLmhlaWdodCA9IDE7CiAgdmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOwogIHZhciBpbWFnZURhdGEgPSBjdHguY3JlYXRlSW1hZ2VEYXRhKDEsIDEpOwogIHJldHVybiAodHlwZW9mIGltYWdlRGF0YS5kYXRhLmJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcpOwp9CgpPYmplY3QuZGVmaW5lUHJvcGVydHkoUERGSlMsICdoYXNDYW52YXNUeXBlZEFycmF5cycsIHsKICBjb25maWd1cmFibGU6IHRydWUsCiAgZ2V0OiBmdW5jdGlvbiBQREZKU19oYXNDYW52YXNUeXBlZEFycmF5cygpIHsKICAgIHJldHVybiBzaGFkb3coUERGSlMsICdoYXNDYW52YXNUeXBlZEFycmF5cycsIGhhc0NhbnZhc1R5cGVkQXJyYXlzKCkpOwogIH0KfSk7Cgp2YXIgVWludDMyQXJyYXlWaWV3ID0gKGZ1bmN0aW9uIFVpbnQzMkFycmF5Vmlld0Nsb3N1cmUoKSB7CgogIGZ1bmN0aW9uIFVpbnQzMkFycmF5VmlldyhidWZmZXIsIGxlbmd0aCkgewogICAgdGhpcy5idWZmZXIgPSBidWZmZXI7CiAgICB0aGlzLmJ5dGVMZW5ndGggPSBidWZmZXIubGVuZ3RoOwogICAgdGhpcy5sZW5ndGggPSBsZW5ndGggPT09IHVuZGVmaW5lZCA/ICh0aGlzLmJ5dGVMZW5ndGggPj4gMikgOiBsZW5ndGg7CiAgICBlbnN1cmVVaW50MzJBcnJheVZpZXdQcm9wcyh0aGlzLmxlbmd0aCk7CiAgfQogIFVpbnQzMkFycmF5Vmlldy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKG51bGwpOwoKICB2YXIgdWludDMyQXJyYXlWaWV3U2V0dGVycyA9IDA7CiAgZnVuY3Rpb24gY3JlYXRlVWludDMyQXJyYXlQcm9wKGluZGV4KSB7CiAgICByZXR1cm4gewogICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsKICAgICAgICB2YXIgYnVmZmVyID0gdGhpcy5idWZmZXIsIG9mZnNldCA9IGluZGV4IDw8IDI7CiAgICAgICAgcmV0dXJuIChidWZmZXJbb2Zmc2V0XSB8IChidWZmZXJbb2Zmc2V0ICsgMV0gPDwgOCkgfAogICAgICAgICAgKGJ1ZmZlcltvZmZzZXQgKyAyXSA8PCAxNikgfCAoYnVmZmVyW29mZnNldCArIDNdIDw8IDI0KSkgPj4+IDA7CiAgICAgIH0sCiAgICAgIHNldDogZnVuY3Rpb24gKHZhbHVlKSB7CiAgICAgICAgdmFyIGJ1ZmZlciA9IHRoaXMuYnVmZmVyLCBvZmZzZXQgPSBpbmRleCA8PCAyOwogICAgICAgIGJ1ZmZlcltvZmZzZXRdID0gdmFsdWUgJiAyNTU7CiAgICAgICAgYnVmZmVyW29mZnNldCArIDFdID0gKHZhbHVlID4+IDgpICYgMjU1OwogICAgICAgIGJ1ZmZlcltvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+PiAxNikgJiAyNTU7CiAgICAgICAgYnVmZmVyW29mZnNldCArIDNdID0gKHZhbHVlID4+PiAyNCkgJiAyNTU7CiAgICAgIH0KICAgIH07CiAgfQoKICBmdW5jdGlvbiBlbnN1cmVVaW50MzJBcnJheVZpZXdQcm9wcyhsZW5ndGgpIHsKICAgIHdoaWxlICh1aW50MzJBcnJheVZpZXdTZXR0ZXJzIDwgbGVuZ3RoKSB7CiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShVaW50MzJBcnJheVZpZXcucHJvdG90eXBlLAogICAgICAgIHVpbnQzMkFycmF5Vmlld1NldHRlcnMsCiAgICAgICAgY3JlYXRlVWludDMyQXJyYXlQcm9wKHVpbnQzMkFycmF5Vmlld1NldHRlcnMpKTsKICAgICAgdWludDMyQXJyYXlWaWV3U2V0dGVycysrOwogICAgfQogIH0KCiAgcmV0dXJuIFVpbnQzMkFycmF5VmlldzsKfSkoKTsKLy8jZWxzZQovL1BERkpTLmhhc0NhbnZhc1R5cGVkQXJyYXlzID0gdHJ1ZTsKLy8jZW5kaWYKCnZhciBJREVOVElUWV9NQVRSSVggPSBbMSwgMCwgMCwgMSwgMCwgMF07Cgp2YXIgVXRpbCA9IFBERkpTLlV0aWwgPSAoZnVuY3Rpb24gVXRpbENsb3N1cmUoKSB7CiAgZnVuY3Rpb24gVXRpbCgpIHt9CgogIHZhciByZ2JCdWYgPSBbJ3JnYignLCAwLCAnLCcsIDAsICcsJywgMCwgJyknXTsKCiAgLy8gbWFrZUNzc1JnYigpIGNhbiBiZSBjYWxsZWQgdGhvdXNhbmRzIG9mIHRpbWVzLiBVc2luZyB8cmdiQnVmfCBhdm9pZHMKICAvLyBjcmVhdGluZyBtYW55IGludGVybWVkaWF0ZSBzdHJpbmdzLgogIFV0aWwubWFrZUNzc1JnYiA9IGZ1bmN0aW9uIFV0aWxfbWFrZUNzc1JnYihyLCBnLCBiKSB7CiAgICByZ2JCdWZbMV0gPSByOwogICAgcmdiQnVmWzNdID0gZzsKICAgIHJnYkJ1Zls1XSA9IGI7CiAgICByZXR1cm4gcmdiQnVmLmpvaW4oJycpOwogIH07CgogIC8vIENvbmNhdGVuYXRlcyB0d28gdHJhbnNmb3JtYXRpb24gbWF0cmljZXMgdG9nZXRoZXIgYW5kIHJldHVybnMgdGhlIHJlc3VsdC4KICBVdGlsLnRyYW5zZm9ybSA9IGZ1bmN0aW9uIFV0aWxfdHJhbnNmb3JtKG0xLCBtMikgewogICAgcmV0dXJuIFsKICAgICAgbTFbMF0gKiBtMlswXSArIG0xWzJdICogbTJbMV0sCiAgICAgIG0xWzFdICogbTJbMF0gKyBtMVszXSAqIG0yWzFdLAogICAgICBtMVswXSAqIG0yWzJdICsgbTFbMl0gKiBtMlszXSwKICAgICAgbTFbMV0gKiBtMlsyXSArIG0xWzNdICogbTJbM10sCiAgICAgIG0xWzBdICogbTJbNF0gKyBtMVsyXSAqIG0yWzVdICsgbTFbNF0sCiAgICAgIG0xWzFdICogbTJbNF0gKyBtMVszXSAqIG0yWzVdICsgbTFbNV0KICAgIF07CiAgfTsKCiAgLy8gRm9yIDJkIGFmZmluZSB0cmFuc2Zvcm1zCiAgVXRpbC5hcHBseVRyYW5zZm9ybSA9IGZ1bmN0aW9uIFV0aWxfYXBwbHlUcmFuc2Zvcm0ocCwgbSkgewogICAgdmFyIHh0ID0gcFswXSAqIG1bMF0gKyBwWzFdICogbVsyXSArIG1bNF07CiAgICB2YXIgeXQgPSBwWzBdICogbVsxXSArIHBbMV0gKiBtWzNdICsgbVs1XTsKICAgIHJldHVybiBbeHQsIHl0XTsKICB9OwoKICBVdGlsLmFwcGx5SW52ZXJzZVRyYW5zZm9ybSA9IGZ1bmN0aW9uIFV0aWxfYXBwbHlJbnZlcnNlVHJhbnNmb3JtKHAsIG0pIHsKICAgIHZhciBkID0gbVswXSAqIG1bM10gLSBtWzFdICogbVsyXTsKICAgIHZhciB4dCA9IChwWzBdICogbVszXSAtIHBbMV0gKiBtWzJdICsgbVsyXSAqIG1bNV0gLSBtWzRdICogbVszXSkgLyBkOwogICAgdmFyIHl0ID0gKC1wWzBdICogbVsxXSArIHBbMV0gKiBtWzBdICsgbVs0XSAqIG1bMV0gLSBtWzVdICogbVswXSkgLyBkOwogICAgcmV0dXJuIFt4dCwgeXRdOwogIH07CgogIC8vIEFwcGxpZXMgdGhlIHRyYW5zZm9ybSB0byB0aGUgcmVjdGFuZ2xlIGFuZCBmaW5kcyB0aGUgbWluaW11bSBheGlhbGx5CiAgLy8gYWxpZ25lZCBib3VuZGluZyBib3guCiAgVXRpbC5nZXRBeGlhbEFsaWduZWRCb3VuZGluZ0JveCA9CiAgICBmdW5jdGlvbiBVdGlsX2dldEF4aWFsQWxpZ25lZEJvdW5kaW5nQm94KHIsIG0pIHsKCiAgICB2YXIgcDEgPSBVdGlsLmFwcGx5VHJhbnNmb3JtKHIsIG0pOwogICAgdmFyIHAyID0gVXRpbC5hcHBseVRyYW5zZm9ybShyLnNsaWNlKDIsIDQpLCBtKTsKICAgIHZhciBwMyA9IFV0aWwuYXBwbHlUcmFuc2Zvcm0oW3JbMF0sIHJbM11dLCBtKTsKICAgIHZhciBwNCA9IFV0aWwuYXBwbHlUcmFuc2Zvcm0oW3JbMl0sIHJbMV1dLCBtKTsKICAgIHJldHVybiBbCiAgICAgIE1hdGgubWluKHAxWzBdLCBwMlswXSwgcDNbMF0sIHA0WzBdKSwKICAgICAgTWF0aC5taW4ocDFbMV0sIHAyWzFdLCBwM1sxXSwgcDRbMV0pLAogICAgICBNYXRoLm1heChwMVswXSwgcDJbMF0sIHAzWzBdLCBwNFswXSksCiAgICAgIE1hdGgubWF4KHAxWzFdLCBwMlsxXSwgcDNbMV0sIHA0WzFdKQogICAgXTsKICB9OwoKICBVdGlsLmludmVyc2VUcmFuc2Zvcm0gPSBmdW5jdGlvbiBVdGlsX2ludmVyc2VUcmFuc2Zvcm0obSkgewogICAgdmFyIGQgPSBtWzBdICogbVszXSAtIG1bMV0gKiBtWzJdOwogICAgcmV0dXJuIFttWzNdIC8gZCwgLW1bMV0gLyBkLCAtbVsyXSAvIGQsIG1bMF0gLyBkLAogICAgICAobVsyXSAqIG1bNV0gLSBtWzRdICogbVszXSkgLyBkLCAobVs0XSAqIG1bMV0gLSBtWzVdICogbVswXSkgLyBkXTsKICB9OwoKICAvLyBBcHBseSBhIGdlbmVyaWMgM2QgbWF0cml4IE0gb24gYSAzLXZlY3RvciB2OgogIC8vICAgfCBhIGIgYyB8ICAgfCBYIHwKICAvLyAgIHwgZCBlIGYgfCB4IHwgWSB8CiAgLy8gICB8IGcgaCBpIHwgICB8IFogfAogIC8vIE0gaXMgYXNzdW1lZCB0byBiZSBzZXJpYWxpemVkIGFzIFthLGIsYyxkLGUsZixnLGgsaV0sCiAgLy8gd2l0aCB2IGFzIFtYLFksWl0KICBVdGlsLmFwcGx5M2RUcmFuc2Zvcm0gPSBmdW5jdGlvbiBVdGlsX2FwcGx5M2RUcmFuc2Zvcm0obSwgdikgewogICAgcmV0dXJuIFsKICAgICAgbVswXSAqIHZbMF0gKyBtWzFdICogdlsxXSArIG1bMl0gKiB2WzJdLAogICAgICBtWzNdICogdlswXSArIG1bNF0gKiB2WzFdICsgbVs1XSAqIHZbMl0sCiAgICAgIG1bNl0gKiB2WzBdICsgbVs3XSAqIHZbMV0gKyBtWzhdICogdlsyXQogICAgXTsKICB9OwoKICAvLyBUaGlzIGNhbGN1bGF0aW9uIHVzZXMgU2luZ3VsYXIgVmFsdWUgRGVjb21wb3NpdGlvbi4KICAvLyBUaGUgU1ZEIGNhbiBiZSByZXByZXNlbnRlZCB3aXRoIGZvcm11bGEgQSA9IFVTVi4gV2UgYXJlIGludGVyZXN0ZWQgaW4gdGhlCiAgLy8gbWF0cml4IFMgaGVyZSBiZWNhdXNlIGl0IHJlcHJlc2VudHMgdGhlIHNjYWxlIHZhbHVlcy4KICBVdGlsLnNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlID0KICAgIGZ1bmN0aW9uIFV0aWxfc2luZ3VsYXJWYWx1ZURlY29tcG9zZTJkU2NhbGUobSkgewoKICAgIHZhciB0cmFuc3Bvc2UgPSBbbVswXSwgbVsyXSwgbVsxXSwgbVszXV07CgogICAgLy8gTXVsdGlwbHkgbWF0cml4IG0gd2l0aCBpdHMgdHJhbnNwb3NlLgogICAgdmFyIGEgPSBtWzBdICogdHJhbnNwb3NlWzBdICsgbVsxXSAqIHRyYW5zcG9zZVsyXTsKICAgIHZhciBiID0gbVswXSAqIHRyYW5zcG9zZVsxXSArIG1bMV0gKiB0cmFuc3Bvc2VbM107CiAgICB2YXIgYyA9IG1bMl0gKiB0cmFuc3Bvc2VbMF0gKyBtWzNdICogdHJhbnNwb3NlWzJdOwogICAgdmFyIGQgPSBtWzJdICogdHJhbnNwb3NlWzFdICsgbVszXSAqIHRyYW5zcG9zZVszXTsKCiAgICAvLyBTb2x2ZSB0aGUgc2Vjb25kIGRlZ3JlZSBwb2x5bm9taWFsIHRvIGdldCByb290cy4KICAgIHZhciBmaXJzdCA9IChhICsgZCkgLyAyOwogICAgdmFyIHNlY29uZCA9IE1hdGguc3FydCgoYSArIGQpICogKGEgKyBkKSAtIDQgKiAoYSAqIGQgLSBjICogYikpIC8gMjsKICAgIHZhciBzeCA9IGZpcnN0ICsgc2Vjb25kIHx8IDE7CiAgICB2YXIgc3kgPSBmaXJzdCAtIHNlY29uZCB8fCAxOwoKICAgIC8vIFNjYWxlIHZhbHVlcyBhcmUgdGhlIHNxdWFyZSByb290cyBvZiB0aGUgZWlnZW52YWx1ZXMuCiAgICByZXR1cm4gW01hdGguc3FydChzeCksIE1hdGguc3FydChzeSldOwogIH07CgogIC8vIE5vcm1hbGl6ZSByZWN0YW5nbGUgcmVjdD1beDEsIHkxLCB4MiwgeTJdIHNvIHRoYXQgKHgxLHkxKSA8ICh4Mix5MikKICAvLyBGb3IgY29vcmRpbmF0ZSBzeXN0ZW1zIHdob3NlIG9yaWdpbiBsaWVzIGluIHRoZSBib3R0b20tbGVmdCwgdGhpcwogIC8vIG1lYW5zIG5vcm1hbGl6YXRpb24gdG8gKEJMLFRSKSBvcmRlcmluZy4gRm9yIHN5c3RlbXMgd2l0aCBvcmlnaW4gaW4gdGhlCiAgLy8gdG9wLWxlZnQsIHRoaXMgbWVhbnMgKFRMLEJSKSBvcmRlcmluZy4KICBVdGlsLm5vcm1hbGl6ZVJlY3QgPSBmdW5jdGlvbiBVdGlsX25vcm1hbGl6ZVJlY3QocmVjdCkgewogICAgdmFyIHIgPSByZWN0LnNsaWNlKDApOyAvLyBjbG9uZSByZWN0CiAgICBpZiAocmVjdFswXSA+IHJlY3RbMl0pIHsKICAgICAgclswXSA9IHJlY3RbMl07CiAgICAgIHJbMl0gPSByZWN0WzBdOwogICAgfQogICAgaWYgKHJlY3RbMV0gPiByZWN0WzNdKSB7CiAgICAgIHJbMV0gPSByZWN0WzNdOwogICAgICByWzNdID0gcmVjdFsxXTsKICAgIH0KICAgIHJldHVybiByOwogIH07CgogIC8vIFJldHVybnMgYSByZWN0YW5nbGUgW3gxLCB5MSwgeDIsIHkyXSBjb3JyZXNwb25kaW5nIHRvIHRoZQogIC8vIGludGVyc2VjdGlvbiBvZiByZWN0MSBhbmQgcmVjdDIuIElmIG5vIGludGVyc2VjdGlvbiwgcmV0dXJucyAnZmFsc2UnCiAgLy8gVGhlIHJlY3RhbmdsZSBjb29yZGluYXRlcyBvZiByZWN0MSwgcmVjdDIgc2hvdWxkIGJlIFt4MSwgeTEsIHgyLCB5Ml0KICBVdGlsLmludGVyc2VjdCA9IGZ1bmN0aW9uIFV0aWxfaW50ZXJzZWN0KHJlY3QxLCByZWN0MikgewogICAgZnVuY3Rpb24gY29tcGFyZShhLCBiKSB7CiAgICAgIHJldHVybiBhIC0gYjsKICAgIH0KCiAgICAvLyBPcmRlciBwb2ludHMgYWxvbmcgdGhlIGF4ZXMKICAgIHZhciBvcmRlcmVkWCA9IFtyZWN0MVswXSwgcmVjdDFbMl0sIHJlY3QyWzBdLCByZWN0MlsyXV0uc29ydChjb21wYXJlKSwKICAgICAgICBvcmRlcmVkWSA9IFtyZWN0MVsxXSwgcmVjdDFbM10sIHJlY3QyWzFdLCByZWN0MlszXV0uc29ydChjb21wYXJlKSwKICAgICAgICByZXN1bHQgPSBbXTsKCiAgICByZWN0MSA9IFV0aWwubm9ybWFsaXplUmVjdChyZWN0MSk7CiAgICByZWN0MiA9IFV0aWwubm9ybWFsaXplUmVjdChyZWN0Mik7CgogICAgLy8gWDogZmlyc3QgYW5kIHNlY29uZCBwb2ludHMgYmVsb25nIHRvIGRpZmZlcmVudCByZWN0YW5nbGVzPwogICAgaWYgKChvcmRlcmVkWFswXSA9PT0gcmVjdDFbMF0gJiYgb3JkZXJlZFhbMV0gPT09IHJlY3QyWzBdKSB8fAogICAgICAgIChvcmRlcmVkWFswXSA9PT0gcmVjdDJbMF0gJiYgb3JkZXJlZFhbMV0gPT09IHJlY3QxWzBdKSkgewogICAgICAvLyBJbnRlcnNlY3Rpb24gbXVzdCBiZSBiZXR3ZWVuIHNlY29uZCBhbmQgdGhpcmQgcG9pbnRzCiAgICAgIHJlc3VsdFswXSA9IG9yZGVyZWRYWzFdOwogICAgICByZXN1bHRbMl0gPSBvcmRlcmVkWFsyXTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvLyBZOiBmaXJzdCBhbmQgc2Vjb25kIHBvaW50cyBiZWxvbmcgdG8gZGlmZmVyZW50IHJlY3RhbmdsZXM/CiAgICBpZiAoKG9yZGVyZWRZWzBdID09PSByZWN0MVsxXSAmJiBvcmRlcmVkWVsxXSA9PT0gcmVjdDJbMV0pIHx8CiAgICAgICAgKG9yZGVyZWRZWzBdID09PSByZWN0MlsxXSAmJiBvcmRlcmVkWVsxXSA9PT0gcmVjdDFbMV0pKSB7CiAgICAgIC8vIEludGVyc2VjdGlvbiBtdXN0IGJlIGJldHdlZW4gc2Vjb25kIGFuZCB0aGlyZCBwb2ludHMKICAgICAgcmVzdWx0WzFdID0gb3JkZXJlZFlbMV07CiAgICAgIHJlc3VsdFszXSA9IG9yZGVyZWRZWzJdOwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHJldHVybiByZXN1bHQ7CiAgfTsKCiAgVXRpbC5zaWduID0gZnVuY3Rpb24gVXRpbF9zaWduKG51bSkgewogICAgcmV0dXJuIG51bSA8IDAgPyAtMSA6IDE7CiAgfTsKCiAgVXRpbC5hcHBlbmRUb0FycmF5ID0gZnVuY3Rpb24gVXRpbF9hcHBlbmRUb0FycmF5KGFycjEsIGFycjIpIHsKICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGFycjEsIGFycjIpOwogIH07CgogIFV0aWwucHJlcGVuZFRvQXJyYXkgPSBmdW5jdGlvbiBVdGlsX3ByZXBlbmRUb0FycmF5KGFycjEsIGFycjIpIHsKICAgIEFycmF5LnByb3RvdHlwZS51bnNoaWZ0LmFwcGx5KGFycjEsIGFycjIpOwogIH07CgogIFV0aWwuZXh0ZW5kT2JqID0gZnVuY3Rpb24gZXh0ZW5kT2JqKG9iajEsIG9iajIpIHsKICAgIGZvciAodmFyIGtleSBpbiBvYmoyKSB7CiAgICAgIG9iajFba2V5XSA9IG9iajJba2V5XTsKICAgIH0KICB9OwoKICBVdGlsLmdldEluaGVyaXRhYmxlUHJvcGVydHkgPSBmdW5jdGlvbiBVdGlsX2dldEluaGVyaXRhYmxlUHJvcGVydHkoZGljdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSkgewogICAgd2hpbGUgKGRpY3QgJiYgIWRpY3QuaGFzKG5hbWUpKSB7CiAgICAgIGRpY3QgPSBkaWN0LmdldCgnUGFyZW50Jyk7CiAgICB9CiAgICBpZiAoIWRpY3QpIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9CiAgICByZXR1cm4gZGljdC5nZXQobmFtZSk7CiAgfTsKCiAgVXRpbC5pbmhlcml0ID0gZnVuY3Rpb24gVXRpbF9pbmhlcml0KHN1YiwgYmFzZSwgcHJvdG90eXBlKSB7CiAgICBzdWIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShiYXNlLnByb3RvdHlwZSk7CiAgICBzdWIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gc3ViOwogICAgZm9yICh2YXIgcHJvcCBpbiBwcm90b3R5cGUpIHsKICAgICAgc3ViLnByb3RvdHlwZVtwcm9wXSA9IHByb3RvdHlwZVtwcm9wXTsKICAgIH0KICB9OwoKICBVdGlsLmxvYWRTY3JpcHQgPSBmdW5jdGlvbiBVdGlsX2xvYWRTY3JpcHQoc3JjLCBjYWxsYmFjaykgewogICAgdmFyIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpOwogICAgdmFyIGxvYWRlZCA9IGZhbHNlOwogICAgc2NyaXB0LnNldEF0dHJpYnV0ZSgnc3JjJywgc3JjKTsKICAgIGlmIChjYWxsYmFjaykgewogICAgICBzY3JpcHQub25sb2FkID0gZnVuY3Rpb24oKSB7CiAgICAgICAgaWYgKCFsb2FkZWQpIHsKICAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAgICAgfQogICAgICAgIGxvYWRlZCA9IHRydWU7CiAgICAgIH07CiAgICB9CiAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdLmFwcGVuZENoaWxkKHNjcmlwdCk7CiAgfTsKCiAgcmV0dXJuIFV0aWw7Cn0pKCk7CgovKioKICogUERGIHBhZ2Ugdmlld3BvcnQgY3JlYXRlZCBiYXNlZCBvbiBzY2FsZSwgcm90YXRpb24gYW5kIG9mZnNldC4KICogQGNsYXNzCiAqIEBhbGlhcyBQREZKUy5QYWdlVmlld3BvcnQKICovCnZhciBQYWdlVmlld3BvcnQgPSBQREZKUy5QYWdlVmlld3BvcnQgPSAoZnVuY3Rpb24gUGFnZVZpZXdwb3J0Q2xvc3VyZSgpIHsKICAvKioKICAgKiBAY29uc3RydWN0b3IKICAgKiBAcHJpdmF0ZQogICAqIEBwYXJhbSB2aWV3Qm94IHtBcnJheX0geE1pbiwgeU1pbiwgeE1heCBhbmQgeU1heCBjb29yZGluYXRlcy4KICAgKiBAcGFyYW0gc2NhbGUge251bWJlcn0gc2NhbGUgb2YgdGhlIHZpZXdwb3J0LgogICAqIEBwYXJhbSByb3RhdGlvbiB7bnVtYmVyfSByb3RhdGlvbnMgb2YgdGhlIHZpZXdwb3J0IGluIGRlZ3JlZXMuCiAgICogQHBhcmFtIG9mZnNldFgge251bWJlcn0gb2Zmc2V0IFgKICAgKiBAcGFyYW0gb2Zmc2V0WSB7bnVtYmVyfSBvZmZzZXQgWQogICAqIEBwYXJhbSBkb250RmxpcCB7Ym9vbGVhbn0gaWYgdHJ1ZSwgYXhpcyBZIHdpbGwgbm90IGJlIGZsaXBwZWQuCiAgICovCiAgZnVuY3Rpb24gUGFnZVZpZXdwb3J0KHZpZXdCb3gsIHNjYWxlLCByb3RhdGlvbiwgb2Zmc2V0WCwgb2Zmc2V0WSwgZG9udEZsaXApIHsKICAgIHRoaXMudmlld0JveCA9IHZpZXdCb3g7CiAgICB0aGlzLnNjYWxlID0gc2NhbGU7CiAgICB0aGlzLnJvdGF0aW9uID0gcm90YXRpb247CiAgICB0aGlzLm9mZnNldFggPSBvZmZzZXRYOwogICAgdGhpcy5vZmZzZXRZID0gb2Zmc2V0WTsKCiAgICAvLyBjcmVhdGluZyB0cmFuc2Zvcm0gdG8gY29udmVydCBwZGYgY29vcmRpbmF0ZSBzeXN0ZW0gdG8gdGhlIG5vcm1hbAogICAgLy8gY2FudmFzIGxpa2UgY29vcmRpbmF0ZXMgdGFraW5nIGluIGFjY291bnQgc2NhbGUgYW5kIHJvdGF0aW9uCiAgICB2YXIgY2VudGVyWCA9ICh2aWV3Qm94WzJdICsgdmlld0JveFswXSkgLyAyOwogICAgdmFyIGNlbnRlclkgPSAodmlld0JveFszXSArIHZpZXdCb3hbMV0pIC8gMjsKICAgIHZhciByb3RhdGVBLCByb3RhdGVCLCByb3RhdGVDLCByb3RhdGVEOwogICAgcm90YXRpb24gPSByb3RhdGlvbiAlIDM2MDsKICAgIHJvdGF0aW9uID0gcm90YXRpb24gPCAwID8gcm90YXRpb24gKyAzNjAgOiByb3RhdGlvbjsKICAgIHN3aXRjaCAocm90YXRpb24pIHsKICAgICAgY2FzZSAxODA6CiAgICAgICAgcm90YXRlQSA9IC0xOyByb3RhdGVCID0gMDsgcm90YXRlQyA9IDA7IHJvdGF0ZUQgPSAxOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlIDkwOgogICAgICAgIHJvdGF0ZUEgPSAwOyByb3RhdGVCID0gMTsgcm90YXRlQyA9IDE7IHJvdGF0ZUQgPSAwOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlIDI3MDoKICAgICAgICByb3RhdGVBID0gMDsgcm90YXRlQiA9IC0xOyByb3RhdGVDID0gLTE7IHJvdGF0ZUQgPSAwOwogICAgICAgIGJyZWFrOwogICAgICAvL2Nhc2UgMDoKICAgICAgZGVmYXVsdDoKICAgICAgICByb3RhdGVBID0gMTsgcm90YXRlQiA9IDA7IHJvdGF0ZUMgPSAwOyByb3RhdGVEID0gLTE7CiAgICAgICAgYnJlYWs7CiAgICB9CgogICAgaWYgKGRvbnRGbGlwKSB7CiAgICAgIHJvdGF0ZUMgPSAtcm90YXRlQzsgcm90YXRlRCA9IC1yb3RhdGVEOwogICAgfQoKICAgIHZhciBvZmZzZXRDYW52YXNYLCBvZmZzZXRDYW52YXNZOwogICAgdmFyIHdpZHRoLCBoZWlnaHQ7CiAgICBpZiAocm90YXRlQSA9PT0gMCkgewogICAgICBvZmZzZXRDYW52YXNYID0gTWF0aC5hYnMoY2VudGVyWSAtIHZpZXdCb3hbMV0pICogc2NhbGUgKyBvZmZzZXRYOwogICAgICBvZmZzZXRDYW52YXNZID0gTWF0aC5hYnMoY2VudGVyWCAtIHZpZXdCb3hbMF0pICogc2NhbGUgKyBvZmZzZXRZOwogICAgICB3aWR0aCA9IE1hdGguYWJzKHZpZXdCb3hbM10gLSB2aWV3Qm94WzFdKSAqIHNjYWxlOwogICAgICBoZWlnaHQgPSBNYXRoLmFicyh2aWV3Qm94WzJdIC0gdmlld0JveFswXSkgKiBzY2FsZTsKICAgIH0gZWxzZSB7CiAgICAgIG9mZnNldENhbnZhc1ggPSBNYXRoLmFicyhjZW50ZXJYIC0gdmlld0JveFswXSkgKiBzY2FsZSArIG9mZnNldFg7CiAgICAgIG9mZnNldENhbnZhc1kgPSBNYXRoLmFicyhjZW50ZXJZIC0gdmlld0JveFsxXSkgKiBzY2FsZSArIG9mZnNldFk7CiAgICAgIHdpZHRoID0gTWF0aC5hYnModmlld0JveFsyXSAtIHZpZXdCb3hbMF0pICogc2NhbGU7CiAgICAgIGhlaWdodCA9IE1hdGguYWJzKHZpZXdCb3hbM10gLSB2aWV3Qm94WzFdKSAqIHNjYWxlOwogICAgfQogICAgLy8gY3JlYXRpbmcgdHJhbnNmb3JtIGZvciB0aGUgZm9sbG93aW5nIG9wZXJhdGlvbnM6CiAgICAvLyB0cmFuc2xhdGUoLWNlbnRlclgsIC1jZW50ZXJZKSwgcm90YXRlIGFuZCBmbGlwIHZlcnRpY2FsbHksCiAgICAvLyBzY2FsZSwgYW5kIHRyYW5zbGF0ZShvZmZzZXRDYW52YXNYLCBvZmZzZXRDYW52YXNZKQogICAgdGhpcy50cmFuc2Zvcm0gPSBbCiAgICAgIHJvdGF0ZUEgKiBzY2FsZSwKICAgICAgcm90YXRlQiAqIHNjYWxlLAogICAgICByb3RhdGVDICogc2NhbGUsCiAgICAgIHJvdGF0ZUQgKiBzY2FsZSwKICAgICAgb2Zmc2V0Q2FudmFzWCAtIHJvdGF0ZUEgKiBzY2FsZSAqIGNlbnRlclggLSByb3RhdGVDICogc2NhbGUgKiBjZW50ZXJZLAogICAgICBvZmZzZXRDYW52YXNZIC0gcm90YXRlQiAqIHNjYWxlICogY2VudGVyWCAtIHJvdGF0ZUQgKiBzY2FsZSAqIGNlbnRlclkKICAgIF07CgogICAgdGhpcy53aWR0aCA9IHdpZHRoOwogICAgdGhpcy5oZWlnaHQgPSBoZWlnaHQ7CiAgICB0aGlzLmZvbnRTY2FsZSA9IHNjYWxlOwogIH0KICBQYWdlVmlld3BvcnQucHJvdG90eXBlID0gLyoqIEBsZW5kcyBQREZKUy5QYWdlVmlld3BvcnQucHJvdG90eXBlICovIHsKICAgIC8qKgogICAgICogQ2xvbmVzIHZpZXdwb3J0IHdpdGggYWRkaXRpb25hbCBwcm9wZXJ0aWVzLgogICAgICogQHBhcmFtIGFyZ3Mge09iamVjdH0gKG9wdGlvbmFsKSBJZiBzcGVjaWZpZWQsIG1heSBjb250YWluIHRoZSAnc2NhbGUnIG9yCiAgICAgKiAncm90YXRpb24nIHByb3BlcnRpZXMgdG8gb3ZlcnJpZGUgdGhlIGNvcnJlc3BvbmRpbmcgcHJvcGVydGllcyBpbgogICAgICogdGhlIGNsb25lZCB2aWV3cG9ydC4KICAgICAqIEByZXR1cm5zIHtQREZKUy5QYWdlVmlld3BvcnR9IENsb25lZCB2aWV3cG9ydC4KICAgICAqLwogICAgY2xvbmU6IGZ1bmN0aW9uIFBhZ2VWaWV3UG9ydF9jbG9uZShhcmdzKSB7CiAgICAgIGFyZ3MgPSBhcmdzIHx8IHt9OwogICAgICB2YXIgc2NhbGUgPSAnc2NhbGUnIGluIGFyZ3MgPyBhcmdzLnNjYWxlIDogdGhpcy5zY2FsZTsKICAgICAgdmFyIHJvdGF0aW9uID0gJ3JvdGF0aW9uJyBpbiBhcmdzID8gYXJncy5yb3RhdGlvbiA6IHRoaXMucm90YXRpb247CiAgICAgIHJldHVybiBuZXcgUGFnZVZpZXdwb3J0KHRoaXMudmlld0JveC5zbGljZSgpLCBzY2FsZSwgcm90YXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub2Zmc2V0WCwgdGhpcy5vZmZzZXRZLCBhcmdzLmRvbnRGbGlwKTsKICAgIH0sCiAgICAvKioKICAgICAqIENvbnZlcnRzIFBERiBwb2ludCB0byB0aGUgdmlld3BvcnQgY29vcmRpbmF0ZXMuIEZvciBleGFtcGxlcywgdXNlZnVsIGZvcgogICAgICogY29udmVydGluZyBQREYgbG9jYXRpb24gaW50byBjYW52YXMgcGl4ZWwgY29vcmRpbmF0ZXMuCiAgICAgKiBAcGFyYW0geCB7bnVtYmVyfSBYIGNvb3JkaW5hdGUuCiAgICAgKiBAcGFyYW0geSB7bnVtYmVyfSBZIGNvb3JkaW5hdGUuCiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBPYmplY3QgdGhhdCBjb250YWlucyAneCcgYW5kICd5JyBwcm9wZXJ0aWVzIG9mIHRoZQogICAgICogcG9pbnQgaW4gdGhlIHZpZXdwb3J0IGNvb3JkaW5hdGUgc3BhY2UuCiAgICAgKiBAc2VlIHtAbGluayBjb252ZXJ0VG9QZGZQb2ludH0KICAgICAqIEBzZWUge0BsaW5rIGNvbnZlcnRUb1ZpZXdwb3J0UmVjdGFuZ2xlfQogICAgICovCiAgICBjb252ZXJ0VG9WaWV3cG9ydFBvaW50OiBmdW5jdGlvbiBQYWdlVmlld3BvcnRfY29udmVydFRvVmlld3BvcnRQb2ludCh4LCB5KSB7CiAgICAgIHJldHVybiBVdGlsLmFwcGx5VHJhbnNmb3JtKFt4LCB5XSwgdGhpcy50cmFuc2Zvcm0pOwogICAgfSwKICAgIC8qKgogICAgICogQ29udmVydHMgUERGIHJlY3RhbmdsZSB0byB0aGUgdmlld3BvcnQgY29vcmRpbmF0ZXMuCiAgICAgKiBAcGFyYW0gcmVjdCB7QXJyYXl9IHhNaW4sIHlNaW4sIHhNYXggYW5kIHlNYXggY29vcmRpbmF0ZXMuCiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IENvbnRhaW5zIGNvcnJlc3BvbmRpbmcgY29vcmRpbmF0ZXMgb2YgdGhlIHJlY3RhbmdsZQogICAgICogaW4gdGhlIHZpZXdwb3J0IGNvb3JkaW5hdGUgc3BhY2UuCiAgICAgKiBAc2VlIHtAbGluayBjb252ZXJ0VG9WaWV3cG9ydFBvaW50fQogICAgICovCiAgICBjb252ZXJ0VG9WaWV3cG9ydFJlY3RhbmdsZToKICAgICAgZnVuY3Rpb24gUGFnZVZpZXdwb3J0X2NvbnZlcnRUb1ZpZXdwb3J0UmVjdGFuZ2xlKHJlY3QpIHsKICAgICAgdmFyIHRsID0gVXRpbC5hcHBseVRyYW5zZm9ybShbcmVjdFswXSwgcmVjdFsxXV0sIHRoaXMudHJhbnNmb3JtKTsKICAgICAgdmFyIGJyID0gVXRpbC5hcHBseVRyYW5zZm9ybShbcmVjdFsyXSwgcmVjdFszXV0sIHRoaXMudHJhbnNmb3JtKTsKICAgICAgcmV0dXJuIFt0bFswXSwgdGxbMV0sIGJyWzBdLCBiclsxXV07CiAgICB9LAogICAgLyoqCiAgICAgKiBDb252ZXJ0cyB2aWV3cG9ydCBjb29yZGluYXRlcyB0byB0aGUgUERGIGxvY2F0aW9uLiBGb3IgZXhhbXBsZXMsIHVzZWZ1bAogICAgICogZm9yIGNvbnZlcnRpbmcgY2FudmFzIHBpeGVsIGxvY2F0aW9uIGludG8gUERGIG9uZS4KICAgICAqIEBwYXJhbSB4IHtudW1iZXJ9IFggY29vcmRpbmF0ZS4KICAgICAqIEBwYXJhbSB5IHtudW1iZXJ9IFkgY29vcmRpbmF0ZS4KICAgICAqIEByZXR1cm5zIHtPYmplY3R9IE9iamVjdCB0aGF0IGNvbnRhaW5zICd4JyBhbmQgJ3knIHByb3BlcnRpZXMgb2YgdGhlCiAgICAgKiBwb2ludCBpbiB0aGUgUERGIGNvb3JkaW5hdGUgc3BhY2UuCiAgICAgKiBAc2VlIHtAbGluayBjb252ZXJ0VG9WaWV3cG9ydFBvaW50fQogICAgICovCiAgICBjb252ZXJ0VG9QZGZQb2ludDogZnVuY3Rpb24gUGFnZVZpZXdwb3J0X2NvbnZlcnRUb1BkZlBvaW50KHgsIHkpIHsKICAgICAgcmV0dXJuIFV0aWwuYXBwbHlJbnZlcnNlVHJhbnNmb3JtKFt4LCB5XSwgdGhpcy50cmFuc2Zvcm0pOwogICAgfQogIH07CiAgcmV0dXJuIFBhZ2VWaWV3cG9ydDsKfSkoKTsKCnZhciBQREZTdHJpbmdUcmFuc2xhdGVUYWJsZSA9IFsKICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAogIDB4MkQ4LCAweDJDNywgMHgyQzYsIDB4MkQ5LCAweDJERCwgMHgyREIsIDB4MkRBLCAweDJEQywgMCwgMCwgMCwgMCwgMCwgMCwgMCwKICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAogIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCiAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAweDIwMjIsIDB4MjAyMCwgMHgyMDIxLCAweDIwMjYsIDB4MjAxNCwKICAweDIwMTMsIDB4MTkyLCAweDIwNDQsIDB4MjAzOSwgMHgyMDNBLCAweDIyMTIsIDB4MjAzMCwgMHgyMDFFLCAweDIwMUMsCiAgMHgyMDFELCAweDIwMTgsIDB4MjAxOSwgMHgyMDFBLCAweDIxMjIsIDB4RkIwMSwgMHhGQjAyLCAweDE0MSwgMHgxNTIsIDB4MTYwLAogIDB4MTc4LCAweDE3RCwgMHgxMzEsIDB4MTQyLCAweDE1MywgMHgxNjEsIDB4MTdFLCAwLCAweDIwQUMKXTsKCmZ1bmN0aW9uIHN0cmluZ1RvUERGU3RyaW5nKHN0cikgewogIHZhciBpLCBuID0gc3RyLmxlbmd0aCwgc3RyQnVmID0gW107CiAgaWYgKHN0clswXSA9PT0gJ1x4RkUnICYmIHN0clsxXSA9PT0gJ1x4RkYnKSB7CiAgICAvLyBVVEYxNkJFIEJPTQogICAgZm9yIChpID0gMjsgaSA8IG47IGkgKz0gMikgewogICAgICBzdHJCdWYucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKAogICAgICAgIChzdHIuY2hhckNvZGVBdChpKSA8PCA4KSB8IHN0ci5jaGFyQ29kZUF0KGkgKyAxKSkpOwogICAgfQogIH0gZWxzZSB7CiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7CiAgICAgIHZhciBjb2RlID0gUERGU3RyaW5nVHJhbnNsYXRlVGFibGVbc3RyLmNoYXJDb2RlQXQoaSldOwogICAgICBzdHJCdWYucHVzaChjb2RlID8gU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlKSA6IHN0ci5jaGFyQXQoaSkpOwogICAgfQogIH0KICByZXR1cm4gc3RyQnVmLmpvaW4oJycpOwp9CgpmdW5jdGlvbiBzdHJpbmdUb1VURjhTdHJpbmcoc3RyKSB7CiAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUoc3RyKSk7Cn0KCmZ1bmN0aW9uIGlzRW1wdHlPYmoob2JqKSB7CiAgZm9yICh2YXIga2V5IGluIG9iaikgewogICAgcmV0dXJuIGZhbHNlOwogIH0KICByZXR1cm4gdHJ1ZTsKfQoKZnVuY3Rpb24gaXNCb29sKHYpIHsKICByZXR1cm4gdHlwZW9mIHYgPT09ICdib29sZWFuJzsKfQoKZnVuY3Rpb24gaXNJbnQodikgewogIHJldHVybiB0eXBlb2YgdiA9PT0gJ251bWJlcicgJiYgKCh2IHwgMCkgPT09IHYpOwp9CgpmdW5jdGlvbiBpc051bSh2KSB7CiAgcmV0dXJuIHR5cGVvZiB2ID09PSAnbnVtYmVyJzsKfQoKZnVuY3Rpb24gaXNTdHJpbmcodikgewogIHJldHVybiB0eXBlb2YgdiA9PT0gJ3N0cmluZyc7Cn0KCmZ1bmN0aW9uIGlzTmFtZSh2KSB7CiAgcmV0dXJuIHYgaW5zdGFuY2VvZiBOYW1lOwp9CgpmdW5jdGlvbiBpc0NtZCh2LCBjbWQpIHsKICByZXR1cm4gdiBpbnN0YW5jZW9mIENtZCAmJiAoY21kID09PSB1bmRlZmluZWQgfHwgdi5jbWQgPT09IGNtZCk7Cn0KCmZ1bmN0aW9uIGlzRGljdCh2LCB0eXBlKSB7CiAgaWYgKCEodiBpbnN0YW5jZW9mIERpY3QpKSB7CiAgICByZXR1cm4gZmFsc2U7CiAgfQogIGlmICghdHlwZSkgewogICAgcmV0dXJuIHRydWU7CiAgfQogIHZhciBkaWN0VHlwZSA9IHYuZ2V0KCdUeXBlJyk7CiAgcmV0dXJuIGlzTmFtZShkaWN0VHlwZSkgJiYgZGljdFR5cGUubmFtZSA9PT0gdHlwZTsKfQoKZnVuY3Rpb24gaXNBcnJheSh2KSB7CiAgcmV0dXJuIHYgaW5zdGFuY2VvZiBBcnJheTsKfQoKZnVuY3Rpb24gaXNTdHJlYW0odikgewogIHJldHVybiB0eXBlb2YgdiA9PT0gJ29iamVjdCcgJiYgdiAhPT0gbnVsbCAmJiB2LmdldEJ5dGVzICE9PSB1bmRlZmluZWQ7Cn0KCmZ1bmN0aW9uIGlzQXJyYXlCdWZmZXIodikgewogIHJldHVybiB0eXBlb2YgdiA9PT0gJ29iamVjdCcgJiYgdiAhPT0gbnVsbCAmJiB2LmJ5dGVMZW5ndGggIT09IHVuZGVmaW5lZDsKfQoKZnVuY3Rpb24gaXNSZWYodikgewogIHJldHVybiB2IGluc3RhbmNlb2YgUmVmOwp9CgovKioKICogUHJvbWlzZSBDYXBhYmlsaXR5IG9iamVjdC4KICoKICogQHR5cGVkZWYge09iamVjdH0gUHJvbWlzZUNhcGFiaWxpdHkKICogQHByb3BlcnR5IHtQcm9taXNlfSBwcm9taXNlIC0gQSBwcm9taXNlIG9iamVjdC4KICogQHByb3BlcnR5IHtmdW5jdGlvbn0gcmVzb2x2ZSAtIEZ1bGxmaWxscyB0aGUgcHJvbWlzZS4KICogQHByb3BlcnR5IHtmdW5jdGlvbn0gcmVqZWN0IC0gUmVqZWN0cyB0aGUgcHJvbWlzZS4KICovCgovKioKICogQ3JlYXRlcyBhIHByb21pc2UgY2FwYWJpbGl0eSBvYmplY3QuCiAqIEBhbGlhcyBQREZKUy5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eQogKgogKiBAcmV0dXJuIHtQcm9taXNlQ2FwYWJpbGl0eX0gQSBjYXBhYmlsaXR5IG9iamVjdCBjb250YWluczoKICogLSBhIFByb21pc2UsIHJlc29sdmUgYW5kIHJlamVjdCBtZXRob2RzLgogKi8KZnVuY3Rpb24gY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkoKSB7CiAgdmFyIGNhcGFiaWxpdHkgPSB7fTsKICBjYXBhYmlsaXR5LnByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICBjYXBhYmlsaXR5LnJlc29sdmUgPSByZXNvbHZlOwogICAgY2FwYWJpbGl0eS5yZWplY3QgPSByZWplY3Q7CiAgfSk7CiAgcmV0dXJuIGNhcGFiaWxpdHk7Cn0KClBERkpTLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5ID0gY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHk7CgovKioKICogUG9seWZpbGwgZm9yIFByb21pc2VzOgogKiBUaGUgZm9sbG93aW5nIHByb21pc2UgaW1wbGVtZW50YXRpb24gdHJpZXMgdG8gZ2VuZXJhbGx5IGltcGxlbWVudCB0aGUKICogUHJvbWlzZS9BKyBzcGVjLiBTb21lIG5vdGFibGUgZGlmZmVyZW5jZXMgZnJvbSBvdGhlciBwcm9taXNlIGxpYmFyaWVzIGFyZToKICogLSBUaGVyZSBjdXJyZW50bHkgaXNuJ3QgYSBzZXBlcmF0ZSBkZWZlcnJlZCBhbmQgcHJvbWlzZSBvYmplY3QuCiAqIC0gVW5oYW5kbGVkIHJlamVjdGlvbnMgZXZlbnR1YWxseSBzaG93IGFuIGVycm9yIGlmIHRoZXkgYXJlbid0IGhhbmRsZWQuCiAqCiAqIEJhc2VkIG9mZiBvZiB0aGUgd29yayBpbjoKICogaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODEwNDkwCiAqLwooZnVuY3Rpb24gUHJvbWlzZUNsb3N1cmUoKSB7CiAgaWYgKGdsb2JhbFNjb3BlLlByb21pc2UpIHsKICAgIC8vIFByb21pc2VzIGV4aXN0aW5nIGluIHRoZSBET00vV29ya2VyLCBjaGVja2luZyBwcmVzZW5jZSBvZiBhbGwvcmVzb2x2ZQogICAgaWYgKHR5cGVvZiBnbG9iYWxTY29wZS5Qcm9taXNlLmFsbCAhPT0gJ2Z1bmN0aW9uJykgewogICAgICBnbG9iYWxTY29wZS5Qcm9taXNlLmFsbCA9IGZ1bmN0aW9uIChpdGVyYWJsZSkgewogICAgICAgIHZhciBjb3VudCA9IDAsIHJlc3VsdHMgPSBbXSwgcmVzb2x2ZSwgcmVqZWN0OwogICAgICAgIHZhciBwcm9taXNlID0gbmV3IGdsb2JhbFNjb3BlLlByb21pc2UoZnVuY3Rpb24gKHJlc29sdmVfLCByZWplY3RfKSB7CiAgICAgICAgICByZXNvbHZlID0gcmVzb2x2ZV87CiAgICAgICAgICByZWplY3QgPSByZWplY3RfOwogICAgICAgIH0pOwogICAgICAgIGl0ZXJhYmxlLmZvckVhY2goZnVuY3Rpb24gKHAsIGkpIHsKICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgICBwLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgewogICAgICAgICAgICByZXN1bHRzW2ldID0gcmVzdWx0OwogICAgICAgICAgICBjb3VudC0tOwogICAgICAgICAgICBpZiAoY291bnQgPT09IDApIHsKICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdHMpOwogICAgICAgICAgICB9CiAgICAgICAgICB9LCByZWplY3QpOwogICAgICAgIH0pOwogICAgICAgIGlmIChjb3VudCA9PT0gMCkgewogICAgICAgICAgcmVzb2x2ZShyZXN1bHRzKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHByb21pc2U7CiAgICAgIH07CiAgICB9CiAgICBpZiAodHlwZW9mIGdsb2JhbFNjb3BlLlByb21pc2UucmVzb2x2ZSAhPT0gJ2Z1bmN0aW9uJykgewogICAgICBnbG9iYWxTY29wZS5Qcm9taXNlLnJlc29sdmUgPSBmdW5jdGlvbiAodmFsdWUpIHsKICAgICAgICByZXR1cm4gbmV3IGdsb2JhbFNjb3BlLlByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOwogICAgICB9OwogICAgfQogICAgaWYgKHR5cGVvZiBnbG9iYWxTY29wZS5Qcm9taXNlLnJlamVjdCAhPT0gJ2Z1bmN0aW9uJykgewogICAgICBnbG9iYWxTY29wZS5Qcm9taXNlLnJlamVjdCA9IGZ1bmN0aW9uIChyZWFzb24pIHsKICAgICAgICByZXR1cm4gbmV3IGdsb2JhbFNjb3BlLlByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgcmVqZWN0KHJlYXNvbik7CiAgICAgICAgfSk7CiAgICAgIH07CiAgICB9CiAgICBpZiAodHlwZW9mIGdsb2JhbFNjb3BlLlByb21pc2UucHJvdG90eXBlLmNhdGNoICE9PSAnZnVuY3Rpb24nKSB7CiAgICAgIGdsb2JhbFNjb3BlLlByb21pc2UucHJvdG90eXBlLmNhdGNoID0gZnVuY3Rpb24gKG9uUmVqZWN0KSB7CiAgICAgICAgcmV0dXJuIGdsb2JhbFNjb3BlLlByb21pc2UucHJvdG90eXBlLnRoZW4odW5kZWZpbmVkLCBvblJlamVjdCk7CiAgICAgIH07CiAgICB9CiAgICByZXR1cm47CiAgfQovLyNpZiAhTU9aQ0VOVFJBTAogIHZhciBTVEFUVVNfUEVORElORyA9IDA7CiAgdmFyIFNUQVRVU19SRVNPTFZFRCA9IDE7CiAgdmFyIFNUQVRVU19SRUpFQ1RFRCA9IDI7CgogIC8vIEluIGFuIGF0dGVtcHQgdG8gYXZvaWQgc2lsZW50IGV4Y2VwdGlvbnMsIHVuaGFuZGxlZCByZWplY3Rpb25zIGFyZQogIC8vIHRyYWNrZWQgYW5kIGlmIHRoZXkgYXJlbid0IGhhbmRsZWQgaW4gYSBjZXJ0YWluIGFtb3VudCBvZiB0aW1lIGFuCiAgLy8gZXJyb3IgaXMgbG9nZ2VkLgogIHZhciBSRUpFQ1RJT05fVElNRU9VVCA9IDUwMDsKCiAgdmFyIEhhbmRsZXJNYW5hZ2VyID0gewogICAgaGFuZGxlcnM6IFtdLAogICAgcnVubmluZzogZmFsc2UsCiAgICB1bmhhbmRsZWRSZWplY3Rpb25zOiBbXSwKICAgIHBlbmRpbmdSZWplY3Rpb25DaGVjazogZmFsc2UsCgogICAgc2NoZWR1bGVIYW5kbGVyczogZnVuY3Rpb24gc2NoZWR1bGVIYW5kbGVycyhwcm9taXNlKSB7CiAgICAgIGlmIChwcm9taXNlLl9zdGF0dXMgPT09IFNUQVRVU19QRU5ESU5HKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICB0aGlzLmhhbmRsZXJzID0gdGhpcy5oYW5kbGVycy5jb25jYXQocHJvbWlzZS5faGFuZGxlcnMpOwogICAgICBwcm9taXNlLl9oYW5kbGVycyA9IFtdOwoKICAgICAgaWYgKHRoaXMucnVubmluZykgewogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICB0aGlzLnJ1bm5pbmcgPSB0cnVlOwoKICAgICAgc2V0VGltZW91dCh0aGlzLnJ1bkhhbmRsZXJzLmJpbmQodGhpcyksIDApOwogICAgfSwKCiAgICBydW5IYW5kbGVyczogZnVuY3Rpb24gcnVuSGFuZGxlcnMoKSB7CiAgICAgIHZhciBSVU5fVElNRU9VVCA9IDE7IC8vIG1zCiAgICAgIHZhciB0aW1lb3V0QXQgPSBEYXRlLm5vdygpICsgUlVOX1RJTUVPVVQ7CiAgICAgIHdoaWxlICh0aGlzLmhhbmRsZXJzLmxlbmd0aCA+IDApIHsKICAgICAgICB2YXIgaGFuZGxlciA9IHRoaXMuaGFuZGxlcnMuc2hpZnQoKTsKCiAgICAgICAgdmFyIG5leHRTdGF0dXMgPSBoYW5kbGVyLnRoaXNQcm9taXNlLl9zdGF0dXM7CiAgICAgICAgdmFyIG5leHRWYWx1ZSA9IGhhbmRsZXIudGhpc1Byb21pc2UuX3ZhbHVlOwoKICAgICAgICB0cnkgewogICAgICAgICAgaWYgKG5leHRTdGF0dXMgPT09IFNUQVRVU19SRVNPTFZFRCkgewogICAgICAgICAgICBpZiAodHlwZW9mIGhhbmRsZXIub25SZXNvbHZlID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICAgICAgbmV4dFZhbHVlID0gaGFuZGxlci5vblJlc29sdmUobmV4dFZhbHVlKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaGFuZGxlci5vblJlamVjdCA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgICAgICAgIG5leHRWYWx1ZSA9IGhhbmRsZXIub25SZWplY3QobmV4dFZhbHVlKTsKICAgICAgICAgICAgICBuZXh0U3RhdHVzID0gU1RBVFVTX1JFU09MVkVEOwoKICAgICAgICAgICAgICBpZiAoaGFuZGxlci50aGlzUHJvbWlzZS5fdW5oYW5kbGVkUmVqZWN0aW9uKSB7CiAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZVVuaGFuZGVsZWRSZWplY3Rpb24oaGFuZGxlci50aGlzUHJvbWlzZSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0gY2F0Y2ggKGV4KSB7CiAgICAgICAgICBuZXh0U3RhdHVzID0gU1RBVFVTX1JFSkVDVEVEOwogICAgICAgICAgbmV4dFZhbHVlID0gZXg7CiAgICAgICAgfQoKICAgICAgICBoYW5kbGVyLm5leHRQcm9taXNlLl91cGRhdGVTdGF0dXMobmV4dFN0YXR1cywgbmV4dFZhbHVlKTsKICAgICAgICBpZiAoRGF0ZS5ub3coKSA+PSB0aW1lb3V0QXQpIHsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgfQoKICAgICAgaWYgKHRoaXMuaGFuZGxlcnMubGVuZ3RoID4gMCkgewogICAgICAgIHNldFRpbWVvdXQodGhpcy5ydW5IYW5kbGVycy5iaW5kKHRoaXMpLCAwKTsKICAgICAgICByZXR1cm47CiAgICAgIH0KCiAgICAgIHRoaXMucnVubmluZyA9IGZhbHNlOwogICAgfSwKCiAgICBhZGRVbmhhbmRsZWRSZWplY3Rpb246IGZ1bmN0aW9uIGFkZFVuaGFuZGxlZFJlamVjdGlvbihwcm9taXNlKSB7CiAgICAgIHRoaXMudW5oYW5kbGVkUmVqZWN0aW9ucy5wdXNoKHsKICAgICAgICBwcm9taXNlOiBwcm9taXNlLAogICAgICAgIHRpbWU6IERhdGUubm93KCkKICAgICAgfSk7CiAgICAgIHRoaXMuc2NoZWR1bGVSZWplY3Rpb25DaGVjaygpOwogICAgfSwKCiAgICByZW1vdmVVbmhhbmRlbGVkUmVqZWN0aW9uOiBmdW5jdGlvbiByZW1vdmVVbmhhbmRlbGVkUmVqZWN0aW9uKHByb21pc2UpIHsKICAgICAgcHJvbWlzZS5fdW5oYW5kbGVkUmVqZWN0aW9uID0gZmFsc2U7CiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy51bmhhbmRsZWRSZWplY3Rpb25zLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgaWYgKHRoaXMudW5oYW5kbGVkUmVqZWN0aW9uc1tpXS5wcm9taXNlID09PSBwcm9taXNlKSB7CiAgICAgICAgICB0aGlzLnVuaGFuZGxlZFJlamVjdGlvbnMuc3BsaWNlKGkpOwogICAgICAgICAgaS0tOwogICAgICAgIH0KICAgICAgfQogICAgfSwKCiAgICBzY2hlZHVsZVJlamVjdGlvbkNoZWNrOiBmdW5jdGlvbiBzY2hlZHVsZVJlamVjdGlvbkNoZWNrKCkgewogICAgICBpZiAodGhpcy5wZW5kaW5nUmVqZWN0aW9uQ2hlY2spIHsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgdGhpcy5wZW5kaW5nUmVqZWN0aW9uQ2hlY2sgPSB0cnVlOwogICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uIHJlamVjdGlvbkNoZWNrKCkgewogICAgICAgIHRoaXMucGVuZGluZ1JlamVjdGlvbkNoZWNrID0gZmFsc2U7CiAgICAgICAgdmFyIG5vdyA9IERhdGUubm93KCk7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnVuaGFuZGxlZFJlamVjdGlvbnMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgIGlmIChub3cgLSB0aGlzLnVuaGFuZGxlZFJlamVjdGlvbnNbaV0udGltZSA+IFJFSkVDVElPTl9USU1FT1VUKSB7CiAgICAgICAgICAgIHZhciB1bmhhbmRsZWQgPSB0aGlzLnVuaGFuZGxlZFJlamVjdGlvbnNbaV0ucHJvbWlzZS5fdmFsdWU7CiAgICAgICAgICAgIHZhciBtc2cgPSAnVW5oYW5kbGVkIHJlamVjdGlvbjogJyArIHVuaGFuZGxlZDsKICAgICAgICAgICAgaWYgKHVuaGFuZGxlZC5zdGFjaykgewogICAgICAgICAgICAgIG1zZyArPSAnXG4nICsgdW5oYW5kbGVkLnN0YWNrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHdhcm4obXNnKTsKICAgICAgICAgICAgdGhpcy51bmhhbmRsZWRSZWplY3Rpb25zLnNwbGljZShpKTsKICAgICAgICAgICAgaS0tOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAodGhpcy51bmhhbmRsZWRSZWplY3Rpb25zLmxlbmd0aCkgewogICAgICAgICAgdGhpcy5zY2hlZHVsZVJlamVjdGlvbkNoZWNrKCk7CiAgICAgICAgfQogICAgICB9LmJpbmQodGhpcyksIFJFSkVDVElPTl9USU1FT1VUKTsKICAgIH0KICB9OwoKICBmdW5jdGlvbiBQcm9taXNlKHJlc29sdmVyKSB7CiAgICB0aGlzLl9zdGF0dXMgPSBTVEFUVVNfUEVORElORzsKICAgIHRoaXMuX2hhbmRsZXJzID0gW107CiAgICB0cnkgewogICAgICByZXNvbHZlci5jYWxsKHRoaXMsIHRoaXMuX3Jlc29sdmUuYmluZCh0aGlzKSwgdGhpcy5fcmVqZWN0LmJpbmQodGhpcykpOwogICAgfSBjYXRjaCAoZSkgewogICAgICB0aGlzLl9yZWplY3QoZSk7CiAgICB9CiAgfQogIC8qKgogICAqIEJ1aWxkcyBhIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCB3aGVuIGFsbCB0aGUgcGFzc2VkIGluIHByb21pc2VzIGFyZQogICAqIHJlc29sdmVkLgogICAqIEBwYXJhbSB7YXJyYXl9IGFycmF5IG9mIGRhdGEgYW5kL29yIHByb21pc2VzIHRvIHdhaXQgZm9yLgogICAqIEByZXR1cm4ge1Byb21pc2V9IE5ldyBkZXBlbmRhbnQgcHJvbWlzZS4KICAgKi8KICBQcm9taXNlLmFsbCA9IGZ1bmN0aW9uIFByb21pc2VfYWxsKHByb21pc2VzKSB7CiAgICB2YXIgcmVzb2x2ZUFsbCwgcmVqZWN0QWxsOwogICAgdmFyIGRlZmVycmVkID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICByZXNvbHZlQWxsID0gcmVzb2x2ZTsKICAgICAgcmVqZWN0QWxsID0gcmVqZWN0OwogICAgfSk7CiAgICB2YXIgdW5yZXNvbHZlZCA9IHByb21pc2VzLmxlbmd0aDsKICAgIHZhciByZXN1bHRzID0gW107CiAgICBpZiAodW5yZXNvbHZlZCA9PT0gMCkgewogICAgICByZXNvbHZlQWxsKHJlc3VsdHMpOwogICAgICByZXR1cm4gZGVmZXJyZWQ7CiAgICB9CiAgICBmdW5jdGlvbiByZWplY3QocmVhc29uKSB7CiAgICAgIGlmIChkZWZlcnJlZC5fc3RhdHVzID09PSBTVEFUVVNfUkVKRUNURUQpIHsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgcmVzdWx0cyA9IFtdOwogICAgICByZWplY3RBbGwocmVhc29uKTsKICAgIH0KICAgIGZvciAodmFyIGkgPSAwLCBpaSA9IHByb21pc2VzLmxlbmd0aDsgaSA8IGlpOyArK2kpIHsKICAgICAgdmFyIHByb21pc2UgPSBwcm9taXNlc1tpXTsKICAgICAgdmFyIHJlc29sdmUgPSAoZnVuY3Rpb24oaSkgewogICAgICAgIHJldHVybiBmdW5jdGlvbih2YWx1ZSkgewogICAgICAgICAgaWYgKGRlZmVycmVkLl9zdGF0dXMgPT09IFNUQVRVU19SRUpFQ1RFRCkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9CiAgICAgICAgICByZXN1bHRzW2ldID0gdmFsdWU7CiAgICAgICAgICB1bnJlc29sdmVkLS07CiAgICAgICAgICBpZiAodW5yZXNvbHZlZCA9PT0gMCkgewogICAgICAgICAgICByZXNvbHZlQWxsKHJlc3VsdHMpOwogICAgICAgICAgfQogICAgICAgIH07CiAgICAgIH0pKGkpOwogICAgICBpZiAoUHJvbWlzZS5pc1Byb21pc2UocHJvbWlzZSkpIHsKICAgICAgICBwcm9taXNlLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXNvbHZlKHByb21pc2UpOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gZGVmZXJyZWQ7CiAgfTsKCiAgLyoqCiAgICogQ2hlY2tzIGlmIHRoZSB2YWx1ZSBpcyBsaWtlbHkgYSBwcm9taXNlIChoYXMgYSAndGhlbicgZnVuY3Rpb24pLgogICAqIEByZXR1cm4ge2Jvb2xlYW59IHRydWUgaWYgdmFsdWUgaXMgdGhlbmFibGUKICAgKi8KICBQcm9taXNlLmlzUHJvbWlzZSA9IGZ1bmN0aW9uIFByb21pc2VfaXNQcm9taXNlKHZhbHVlKSB7CiAgICByZXR1cm4gdmFsdWUgJiYgdHlwZW9mIHZhbHVlLnRoZW4gPT09ICdmdW5jdGlvbic7CiAgfTsKCiAgLyoqCiAgICogQ3JlYXRlcyByZXNvbHZlZCBwcm9taXNlCiAgICogQHBhcmFtIHZhbHVlIHJlc29sdmUgdmFsdWUKICAgKiBAcmV0dXJucyB7UHJvbWlzZX0KICAgKi8KICBQcm9taXNlLnJlc29sdmUgPSBmdW5jdGlvbiBQcm9taXNlX3Jlc29sdmUodmFsdWUpIHsKICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7CiAgfTsKCiAgLyoqCiAgICogQ3JlYXRlcyByZWplY3RlZCBwcm9taXNlCiAgICogQHBhcmFtIHJlYXNvbiByZWplY3Rpb24gdmFsdWUKICAgKiBAcmV0dXJucyB7UHJvbWlzZX0KICAgKi8KICBQcm9taXNlLnJlamVjdCA9IGZ1bmN0aW9uIFByb21pc2VfcmVqZWN0KHJlYXNvbikgewogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgcmVqZWN0KHJlYXNvbik7IH0pOwogIH07CgogIFByb21pc2UucHJvdG90eXBlID0gewogICAgX3N0YXR1czogbnVsbCwKICAgIF92YWx1ZTogbnVsbCwKICAgIF9oYW5kbGVyczogbnVsbCwKICAgIF91bmhhbmRsZWRSZWplY3Rpb246IG51bGwsCgogICAgX3VwZGF0ZVN0YXR1czogZnVuY3Rpb24gUHJvbWlzZV9fdXBkYXRlU3RhdHVzKHN0YXR1cywgdmFsdWUpIHsKICAgICAgaWYgKHRoaXMuX3N0YXR1cyA9PT0gU1RBVFVTX1JFU09MVkVEIHx8CiAgICAgICAgICB0aGlzLl9zdGF0dXMgPT09IFNUQVRVU19SRUpFQ1RFRCkgewogICAgICAgIHJldHVybjsKICAgICAgfQoKICAgICAgaWYgKHN0YXR1cyA9PT0gU1RBVFVTX1JFU09MVkVEICYmCiAgICAgICAgICBQcm9taXNlLmlzUHJvbWlzZSh2YWx1ZSkpIHsKICAgICAgICB2YWx1ZS50aGVuKHRoaXMuX3VwZGF0ZVN0YXR1cy5iaW5kKHRoaXMsIFNUQVRVU19SRVNPTFZFRCksCiAgICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVTdGF0dXMuYmluZCh0aGlzLCBTVEFUVVNfUkVKRUNURUQpKTsKICAgICAgICByZXR1cm47CiAgICAgIH0KCiAgICAgIHRoaXMuX3N0YXR1cyA9IHN0YXR1czsKICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTsKCiAgICAgIGlmIChzdGF0dXMgPT09IFNUQVRVU19SRUpFQ1RFRCAmJiB0aGlzLl9oYW5kbGVycy5sZW5ndGggPT09IDApIHsKICAgICAgICB0aGlzLl91bmhhbmRsZWRSZWplY3Rpb24gPSB0cnVlOwogICAgICAgIEhhbmRsZXJNYW5hZ2VyLmFkZFVuaGFuZGxlZFJlamVjdGlvbih0aGlzKTsKICAgICAgfQoKICAgICAgSGFuZGxlck1hbmFnZXIuc2NoZWR1bGVIYW5kbGVycyh0aGlzKTsKICAgIH0sCgogICAgX3Jlc29sdmU6IGZ1bmN0aW9uIFByb21pc2VfcmVzb2x2ZSh2YWx1ZSkgewogICAgICB0aGlzLl91cGRhdGVTdGF0dXMoU1RBVFVTX1JFU09MVkVELCB2YWx1ZSk7CiAgICB9LAoKICAgIF9yZWplY3Q6IGZ1bmN0aW9uIFByb21pc2VfcmVqZWN0KHJlYXNvbikgewogICAgICB0aGlzLl91cGRhdGVTdGF0dXMoU1RBVFVTX1JFSkVDVEVELCByZWFzb24pOwogICAgfSwKCiAgICB0aGVuOiBmdW5jdGlvbiBQcm9taXNlX3RoZW4ob25SZXNvbHZlLCBvblJlamVjdCkgewogICAgICB2YXIgbmV4dFByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgdGhpcy5yZXNvbHZlID0gcmVzb2x2ZTsKICAgICAgICB0aGlzLnJlamVjdCA9IHJlamVjdDsKICAgICAgfSk7CiAgICAgIHRoaXMuX2hhbmRsZXJzLnB1c2goewogICAgICAgIHRoaXNQcm9taXNlOiB0aGlzLAogICAgICAgIG9uUmVzb2x2ZTogb25SZXNvbHZlLAogICAgICAgIG9uUmVqZWN0OiBvblJlamVjdCwKICAgICAgICBuZXh0UHJvbWlzZTogbmV4dFByb21pc2UKICAgICAgfSk7CiAgICAgIEhhbmRsZXJNYW5hZ2VyLnNjaGVkdWxlSGFuZGxlcnModGhpcyk7CiAgICAgIHJldHVybiBuZXh0UHJvbWlzZTsKICAgIH0sCgogICAgY2F0Y2g6IGZ1bmN0aW9uIFByb21pc2VfY2F0Y2gob25SZWplY3QpIHsKICAgICAgcmV0dXJuIHRoaXMudGhlbih1bmRlZmluZWQsIG9uUmVqZWN0KTsKICAgIH0KICB9OwoKICBnbG9iYWxTY29wZS5Qcm9taXNlID0gUHJvbWlzZTsKLy8jZWxzZQovL3Rocm93IG5ldyBFcnJvcignRE9NIFByb21pc2UgaXMgbm90IHByZXNlbnQnKTsKLy8jZW5kaWYKfSkoKTsKCnZhciBTdGF0VGltZXIgPSAoZnVuY3Rpb24gU3RhdFRpbWVyQ2xvc3VyZSgpIHsKICBmdW5jdGlvbiBycGFkKHN0ciwgcGFkLCBsZW5ndGgpIHsKICAgIHdoaWxlIChzdHIubGVuZ3RoIDwgbGVuZ3RoKSB7CiAgICAgIHN0ciArPSBwYWQ7CiAgICB9CiAgICByZXR1cm4gc3RyOwogIH0KICBmdW5jdGlvbiBTdGF0VGltZXIoKSB7CiAgICB0aGlzLnN0YXJ0ZWQgPSB7fTsKICAgIHRoaXMudGltZXMgPSBbXTsKICAgIHRoaXMuZW5hYmxlZCA9IHRydWU7CiAgfQogIFN0YXRUaW1lci5wcm90b3R5cGUgPSB7CiAgICB0aW1lOiBmdW5jdGlvbiBTdGF0VGltZXJfdGltZShuYW1lKSB7CiAgICAgIGlmICghdGhpcy5lbmFibGVkKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIGlmIChuYW1lIGluIHRoaXMuc3RhcnRlZCkgewogICAgICAgIHdhcm4oJ1RpbWVyIGlzIGFscmVhZHkgcnVubmluZyBmb3IgJyArIG5hbWUpOwogICAgICB9CiAgICAgIHRoaXMuc3RhcnRlZFtuYW1lXSA9IERhdGUubm93KCk7CiAgICB9LAogICAgdGltZUVuZDogZnVuY3Rpb24gU3RhdFRpbWVyX3RpbWVFbmQobmFtZSkgewogICAgICBpZiAoIXRoaXMuZW5hYmxlZCkgewogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBpZiAoIShuYW1lIGluIHRoaXMuc3RhcnRlZCkpIHsKICAgICAgICB3YXJuKCdUaW1lciBoYXMgbm90IGJlZW4gc3RhcnRlZCBmb3IgJyArIG5hbWUpOwogICAgICB9CiAgICAgIHRoaXMudGltZXMucHVzaCh7CiAgICAgICAgJ25hbWUnOiBuYW1lLAogICAgICAgICdzdGFydCc6IHRoaXMuc3RhcnRlZFtuYW1lXSwKICAgICAgICAnZW5kJzogRGF0ZS5ub3coKQogICAgICB9KTsKICAgICAgLy8gUmVtb3ZlIHRpbWVyIGZyb20gc3RhcnRlZCBzbyBpdCBjYW4gYmUgY2FsbGVkIGFnYWluLgogICAgICBkZWxldGUgdGhpcy5zdGFydGVkW25hbWVdOwogICAgfSwKICAgIHRvU3RyaW5nOiBmdW5jdGlvbiBTdGF0VGltZXJfdG9TdHJpbmcoKSB7CiAgICAgIHZhciBpLCBpaTsKICAgICAgdmFyIHRpbWVzID0gdGhpcy50aW1lczsKICAgICAgdmFyIG91dCA9ICcnOwogICAgICAvLyBGaW5kIHRoZSBsb25nZXN0IG5hbWUgZm9yIHBhZGRpbmcgcHVycG9zZXMuCiAgICAgIHZhciBsb25nZXN0ID0gMDsKICAgICAgZm9yIChpID0gMCwgaWkgPSB0aW1lcy5sZW5ndGg7IGkgPCBpaTsgKytpKSB7CiAgICAgICAgdmFyIG5hbWUgPSB0aW1lc1tpXVsnbmFtZSddOwogICAgICAgIGlmIChuYW1lLmxlbmd0aCA+IGxvbmdlc3QpIHsKICAgICAgICAgIGxvbmdlc3QgPSBuYW1lLmxlbmd0aDsKICAgICAgICB9CiAgICAgIH0KICAgICAgZm9yIChpID0gMCwgaWkgPSB0aW1lcy5sZW5ndGg7IGkgPCBpaTsgKytpKSB7CiAgICAgICAgdmFyIHNwYW4gPSB0aW1lc1tpXTsKICAgICAgICB2YXIgZHVyYXRpb24gPSBzcGFuLmVuZCAtIHNwYW4uc3RhcnQ7CiAgICAgICAgb3V0ICs9IHJwYWQoc3BhblsnbmFtZSddLCAnICcsIGxvbmdlc3QpICsgJyAnICsgZHVyYXRpb24gKyAnbXNcbic7CiAgICAgIH0KICAgICAgcmV0dXJuIG91dDsKICAgIH0KICB9OwogIHJldHVybiBTdGF0VGltZXI7Cn0pKCk7CgpQREZKUy5jcmVhdGVCbG9iID0gZnVuY3Rpb24gY3JlYXRlQmxvYihkYXRhLCBjb250ZW50VHlwZSkgewogIGlmICh0eXBlb2YgQmxvYiAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgIHJldHVybiBuZXcgQmxvYihbZGF0YV0sIHsgdHlwZTogY29udGVudFR5cGUgfSk7CiAgfQogIC8vIEJsb2IgYnVpbGRlciBpcyBkZXByZWNhdGVkIGluIEZGMTQgYW5kIHJlbW92ZWQgaW4gRkYxOC4KICB2YXIgYmIgPSBuZXcgTW96QmxvYkJ1aWxkZXIoKTsKICBiYi5hcHBlbmQoZGF0YSk7CiAgcmV0dXJuIGJiLmdldEJsb2IoY29udGVudFR5cGUpOwp9OwoKUERGSlMuY3JlYXRlT2JqZWN0VVJMID0gKGZ1bmN0aW9uIGNyZWF0ZU9iamVjdFVSTENsb3N1cmUoKSB7CiAgLy8gQmxvYi9jcmVhdGVPYmplY3RVUkwgaXMgbm90IGF2YWlsYWJsZSwgZmFsbGluZyBiYWNrIHRvIGRhdGEgc2NoZW1hLgogIHZhciBkaWdpdHMgPQogICAgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89JzsKCiAgcmV0dXJuIGZ1bmN0aW9uIGNyZWF0ZU9iamVjdFVSTChkYXRhLCBjb250ZW50VHlwZSkgewogICAgaWYgKCFQREZKUy5kaXNhYmxlQ3JlYXRlT2JqZWN0VVJMICYmCiAgICAgICAgdHlwZW9mIFVSTCAhPT0gJ3VuZGVmaW5lZCcgJiYgVVJMLmNyZWF0ZU9iamVjdFVSTCkgewogICAgICB2YXIgYmxvYiA9IFBERkpTLmNyZWF0ZUJsb2IoZGF0YSwgY29udGVudFR5cGUpOwogICAgICByZXR1cm4gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTsKICAgIH0KCiAgICB2YXIgYnVmZmVyID0gJ2RhdGE6JyArIGNvbnRlbnRUeXBlICsgJztiYXNlNjQsJzsKICAgIGZvciAodmFyIGkgPSAwLCBpaSA9IGRhdGEubGVuZ3RoOyBpIDwgaWk7IGkgKz0gMykgewogICAgICB2YXIgYjEgPSBkYXRhW2ldICYgMHhGRjsKICAgICAgdmFyIGIyID0gZGF0YVtpICsgMV0gJiAweEZGOwogICAgICB2YXIgYjMgPSBkYXRhW2kgKyAyXSAmIDB4RkY7CiAgICAgIHZhciBkMSA9IGIxID4+IDIsIGQyID0gKChiMSAmIDMpIDw8IDQpIHwgKGIyID4+IDQpOwogICAgICB2YXIgZDMgPSBpICsgMSA8IGlpID8gKChiMiAmIDB4RikgPDwgMikgfCAoYjMgPj4gNikgOiA2NDsKICAgICAgdmFyIGQ0ID0gaSArIDIgPCBpaSA/IChiMyAmIDB4M0YpIDogNjQ7CiAgICAgIGJ1ZmZlciArPSBkaWdpdHNbZDFdICsgZGlnaXRzW2QyXSArIGRpZ2l0c1tkM10gKyBkaWdpdHNbZDRdOwogICAgfQogICAgcmV0dXJuIGJ1ZmZlcjsKICB9Owp9KSgpOwoKZnVuY3Rpb24gTWVzc2FnZUhhbmRsZXIobmFtZSwgY29tT2JqKSB7CiAgdGhpcy5uYW1lID0gbmFtZTsKICB0aGlzLmNvbU9iaiA9IGNvbU9iajsKICB0aGlzLmNhbGxiYWNrSW5kZXggPSAxOwogIHRoaXMucG9zdE1lc3NhZ2VUcmFuc2ZlcnMgPSB0cnVlOwogIHZhciBjYWxsYmFja3NDYXBhYmlsaXRpZXMgPSB0aGlzLmNhbGxiYWNrc0NhcGFiaWxpdGllcyA9IHt9OwogIHZhciBhaCA9IHRoaXMuYWN0aW9uSGFuZGxlciA9IHt9OwoKICBhaFsnY29uc29sZV9sb2cnXSA9IFtmdW5jdGlvbiBhaENvbnNvbGVMb2coZGF0YSkgewogICAgY29uc29sZS5sb2cuYXBwbHkoY29uc29sZSwgZGF0YSk7CiAgfV07CiAgYWhbJ2NvbnNvbGVfZXJyb3InXSA9IFtmdW5jdGlvbiBhaENvbnNvbGVFcnJvcihkYXRhKSB7CiAgICBjb25zb2xlLmVycm9yLmFwcGx5KGNvbnNvbGUsIGRhdGEpOwogIH1dOwogIGFoWydfdW5zdXBwb3J0ZWRfZmVhdHVyZSddID0gW2Z1bmN0aW9uIGFoX3Vuc3VwcG9ydGVkRmVhdHVyZShkYXRhKSB7CiAgICBVbnN1cHBvcnRlZE1hbmFnZXIubm90aWZ5KGRhdGEpOwogIH1dOwoKICBjb21PYmoub25tZXNzYWdlID0gZnVuY3Rpb24gbWVzc2FnZUhhbmRsZXJDb21PYmpPbk1lc3NhZ2UoZXZlbnQpIHsKICAgIHZhciBkYXRhID0gZXZlbnQuZGF0YTsKICAgIGlmIChkYXRhLmlzUmVwbHkpIHsKICAgICAgdmFyIGNhbGxiYWNrSWQgPSBkYXRhLmNhbGxiYWNrSWQ7CiAgICAgIGlmIChkYXRhLmNhbGxiYWNrSWQgaW4gY2FsbGJhY2tzQ2FwYWJpbGl0aWVzKSB7CiAgICAgICAgdmFyIGNhbGxiYWNrID0gY2FsbGJhY2tzQ2FwYWJpbGl0aWVzW2NhbGxiYWNrSWRdOwogICAgICAgIGRlbGV0ZSBjYWxsYmFja3NDYXBhYmlsaXRpZXNbY2FsbGJhY2tJZF07CiAgICAgICAgaWYgKCdlcnJvcicgaW4gZGF0YSkgewogICAgICAgICAgY2FsbGJhY2sucmVqZWN0KGRhdGEuZXJyb3IpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBjYWxsYmFjay5yZXNvbHZlKGRhdGEuZGF0YSk7CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIGVycm9yKCdDYW5ub3QgcmVzb2x2ZSBjYWxsYmFjayAnICsgY2FsbGJhY2tJZCk7CiAgICAgIH0KICAgIH0gZWxzZSBpZiAoZGF0YS5hY3Rpb24gaW4gYWgpIHsKICAgICAgdmFyIGFjdGlvbiA9IGFoW2RhdGEuYWN0aW9uXTsKICAgICAgaWYgKGRhdGEuY2FsbGJhY2tJZCkgewogICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgICAgcmV0dXJuIGFjdGlvblswXS5jYWxsKGFjdGlvblsxXSwgZGF0YS5kYXRhKTsKICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKICAgICAgICAgIGNvbU9iai5wb3N0TWVzc2FnZSh7CiAgICAgICAgICAgIGlzUmVwbHk6IHRydWUsCiAgICAgICAgICAgIGNhbGxiYWNrSWQ6IGRhdGEuY2FsbGJhY2tJZCwKICAgICAgICAgICAgZGF0YTogcmVzdWx0CiAgICAgICAgICB9KTsKICAgICAgICB9LCBmdW5jdGlvbiAocmVhc29uKSB7CiAgICAgICAgICBjb21PYmoucG9zdE1lc3NhZ2UoewogICAgICAgICAgICBpc1JlcGx5OiB0cnVlLAogICAgICAgICAgICBjYWxsYmFja0lkOiBkYXRhLmNhbGxiYWNrSWQsCiAgICAgICAgICAgIGVycm9yOiByZWFzb24KICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgICB9IGVsc2UgewogICAgICAgIGFjdGlvblswXS5jYWxsKGFjdGlvblsxXSwgZGF0YS5kYXRhKTsKICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgZXJyb3IoJ1Vua25vd24gYWN0aW9uIGZyb20gd29ya2VyOiAnICsgZGF0YS5hY3Rpb24pOwogICAgfQogIH07Cn0KCk1lc3NhZ2VIYW5kbGVyLnByb3RvdHlwZSA9IHsKICBvbjogZnVuY3Rpb24gbWVzc2FnZUhhbmRsZXJPbihhY3Rpb25OYW1lLCBoYW5kbGVyLCBzY29wZSkgewogICAgdmFyIGFoID0gdGhpcy5hY3Rpb25IYW5kbGVyOwogICAgaWYgKGFoW2FjdGlvbk5hbWVdKSB7CiAgICAgIGVycm9yKCdUaGVyZSBpcyBhbHJlYWR5IGFuIGFjdGlvbk5hbWUgY2FsbGVkICInICsgYWN0aW9uTmFtZSArICciJyk7CiAgICB9CiAgICBhaFthY3Rpb25OYW1lXSA9IFtoYW5kbGVyLCBzY29wZV07CiAgfSwKICAvKioKICAgKiBTZW5kcyBhIG1lc3NhZ2UgdG8gdGhlIGNvbU9iaiB0byBpbnZva2UgdGhlIGFjdGlvbiB3aXRoIHRoZSBzdXBwbGllZCBkYXRhLgogICAqIEBwYXJhbSB7U3RyaW5nfSBhY3Rpb25OYW1lIEFjdGlvbiB0byBjYWxsLgogICAqIEBwYXJhbSB7SlNPTn0gZGF0YSBKU09OIGRhdGEgdG8gc2VuZC4KICAgKiBAcGFyYW0ge0FycmF5fSBbdHJhbnNmZXJzXSBPcHRpb25hbCBsaXN0IG9mIHRyYW5zZmVycy9BcnJheUJ1ZmZlcnMKICAgKi8KICBzZW5kOiBmdW5jdGlvbiBtZXNzYWdlSGFuZGxlclNlbmQoYWN0aW9uTmFtZSwgZGF0YSwgdHJhbnNmZXJzKSB7CiAgICB2YXIgbWVzc2FnZSA9IHsKICAgICAgYWN0aW9uOiBhY3Rpb25OYW1lLAogICAgICBkYXRhOiBkYXRhCiAgICB9OwogICAgdGhpcy5wb3N0TWVzc2FnZShtZXNzYWdlLCB0cmFuc2ZlcnMpOwogIH0sCiAgLyoqCiAgICogU2VuZHMgYSBtZXNzYWdlIHRvIHRoZSBjb21PYmogdG8gaW52b2tlIHRoZSBhY3Rpb24gd2l0aCB0aGUgc3VwcGxpZWQgZGF0YS4KICAgKiBFeHBlY3RzIHRoYXQgb3RoZXIgc2lkZSB3aWxsIGNhbGxiYWNrIHdpdGggdGhlIHJlc3BvbnNlLgogICAqIEBwYXJhbSB7U3RyaW5nfSBhY3Rpb25OYW1lIEFjdGlvbiB0byBjYWxsLgogICAqIEBwYXJhbSB7SlNPTn0gZGF0YSBKU09OIGRhdGEgdG8gc2VuZC4KICAgKiBAcGFyYW0ge0FycmF5fSBbdHJhbnNmZXJzXSBPcHRpb25hbCBsaXN0IG9mIHRyYW5zZmVycy9BcnJheUJ1ZmZlcnMuCiAgICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2UgdG8gYmUgcmVzb2x2ZWQgd2l0aCByZXNwb25zZSBkYXRhLgogICAqLwogIHNlbmRXaXRoUHJvbWlzZToKICAgIGZ1bmN0aW9uIG1lc3NhZ2VIYW5kbGVyU2VuZFdpdGhQcm9taXNlKGFjdGlvbk5hbWUsIGRhdGEsIHRyYW5zZmVycykgewogICAgdmFyIGNhbGxiYWNrSWQgPSB0aGlzLmNhbGxiYWNrSW5kZXgrKzsKICAgIHZhciBtZXNzYWdlID0gewogICAgICBhY3Rpb246IGFjdGlvbk5hbWUsCiAgICAgIGRhdGE6IGRhdGEsCiAgICAgIGNhbGxiYWNrSWQ6IGNhbGxiYWNrSWQKICAgIH07CiAgICB2YXIgY2FwYWJpbGl0eSA9IGNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KCk7CiAgICB0aGlzLmNhbGxiYWNrc0NhcGFiaWxpdGllc1tjYWxsYmFja0lkXSA9IGNhcGFiaWxpdHk7CiAgICB0cnkgewogICAgICB0aGlzLnBvc3RNZXNzYWdlKG1lc3NhZ2UsIHRyYW5zZmVycyk7CiAgICB9IGNhdGNoIChlKSB7CiAgICAgIGNhcGFiaWxpdHkucmVqZWN0KGUpOwogICAgfQogICAgcmV0dXJuIGNhcGFiaWxpdHkucHJvbWlzZTsKICB9LAogIC8qKgogICAqIFNlbmRzIHJhdyBtZXNzYWdlIHRvIHRoZSBjb21PYmouCiAgICogQHByaXZhdGUKICAgKiBAcGFyYW0gbWVzc2FnZSB7T2JqZWN0fSBSYXcgbWVzc2FnZS4KICAgKiBAcGFyYW0gdHJhbnNmZXJzIExpc3Qgb2YgdHJhbnNmZXJzL0FycmF5QnVmZmVycywgb3IgdW5kZWZpbmVkLgogICAqLwogIHBvc3RNZXNzYWdlOiBmdW5jdGlvbiAobWVzc2FnZSwgdHJhbnNmZXJzKSB7CiAgICBpZiAodHJhbnNmZXJzICYmIHRoaXMucG9zdE1lc3NhZ2VUcmFuc2ZlcnMpIHsKICAgICAgdGhpcy5jb21PYmoucG9zdE1lc3NhZ2UobWVzc2FnZSwgdHJhbnNmZXJzKTsKICAgIH0gZWxzZSB7CiAgICAgIHRoaXMuY29tT2JqLnBvc3RNZXNzYWdlKG1lc3NhZ2UpOwogICAgfQogIH0KfTsKCmZ1bmN0aW9uIGxvYWRKcGVnU3RyZWFtKGlkLCBpbWFnZVVybCwgb2JqcykgewogIHZhciBpbWcgPSBuZXcgSW1hZ2UoKTsKICBpbWcub25sb2FkID0gKGZ1bmN0aW9uIGxvYWRKcGVnU3RyZWFtX29ubG9hZENsb3N1cmUoKSB7CiAgICBvYmpzLnJlc29sdmUoaWQsIGltZyk7CiAgfSk7CiAgaW1nLm9uZXJyb3IgPSAoZnVuY3Rpb24gbG9hZEpwZWdTdHJlYW1fb25lcnJvckNsb3N1cmUoKSB7CiAgICBvYmpzLnJlc29sdmUoaWQsIG51bGwpOwogICAgd2FybignRXJyb3IgZHVyaW5nIEpQRUcgaW1hZ2UgbG9hZGluZycpOwogIH0pOwogIGltZy5zcmMgPSBpbWFnZVVybDsKfQoKCi8qKgogKiBUaGUgbWF4aW11bSBhbGxvd2VkIGltYWdlIHNpemUgaW4gdG90YWwgcGl4ZWxzIGUuZy4gd2lkdGggKiBoZWlnaHQuIEltYWdlcwogKiBhYm92ZSB0aGlzIHZhbHVlIHdpbGwgbm90IGJlIGRyYXduLiBVc2UgLTEgZm9yIG5vIGxpbWl0LgogKiBAdmFyIHtudW1iZXJ9CiAqLwpQREZKUy5tYXhJbWFnZVNpemUgPSAoUERGSlMubWF4SW1hZ2VTaXplID09PSB1bmRlZmluZWQgPwogICAgICAgICAgICAgICAgICAgICAgLTEgOiBQREZKUy5tYXhJbWFnZVNpemUpOwoKLyoqCiAqIFRoZSB1cmwgb2Ygd2hlcmUgdGhlIHByZWRlZmluZWQgQWRvYmUgQ01hcHMgYXJlIGxvY2F0ZWQuIEluY2x1ZGUgdHJhaWxpbmcKICogc2xhc2guCiAqIEB2YXIge3N0cmluZ30KICovClBERkpTLmNNYXBVcmwgPSAoUERGSlMuY01hcFVybCA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IFBERkpTLmNNYXBVcmwpOwoKLyoqCiAqIFNwZWNpZmllcyBpZiBDTWFwcyBhcmUgYmluYXJ5IHBhY2tlZC4KICogQHZhciB7Ym9vbGVhbn0KICovClBERkpTLmNNYXBQYWNrZWQgPSBQREZKUy5jTWFwUGFja2VkID09PSB1bmRlZmluZWQgPyBmYWxzZSA6IFBERkpTLmNNYXBQYWNrZWQ7CgovKioKICogQnkgZGVmYXVsdCBmb250cyBhcmUgY29udmVydGVkIHRvIE9wZW5UeXBlIGZvbnRzIGFuZCBsb2FkZWQgdmlhIGZvbnQgZmFjZQogKiBydWxlcy4gSWYgZGlzYWJsZWQsIHRoZSBmb250IHdpbGwgYmUgcmVuZGVyZWQgdXNpbmcgYSBidWlsdCBpbiBmb250IHJlbmRlcmVyCiAqIHRoYXQgY29uc3RydWN0cyB0aGUgZ2x5cGhzIHdpdGggcHJpbWl0aXZlIHBhdGggY29tbWFuZHMuCiAqIEB2YXIge2Jvb2xlYW59CiAqLwpQREZKUy5kaXNhYmxlRm9udEZhY2UgPSAoUERGSlMuZGlzYWJsZUZvbnRGYWNlID09PSB1bmRlZmluZWQgPwogICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UgOiBQREZKUy5kaXNhYmxlRm9udEZhY2UpOwoKLyoqCiAqIFBhdGggZm9yIGltYWdlIHJlc291cmNlcywgbWFpbmx5IGZvciBhbm5vdGF0aW9uIGljb25zLiBJbmNsdWRlIHRyYWlsaW5nCiAqIHNsYXNoLgogKiBAdmFyIHtzdHJpbmd9CiAqLwpQREZKUy5pbWFnZVJlc291cmNlc1BhdGggPSAoUERGSlMuaW1hZ2VSZXNvdXJjZXNQYXRoID09PSB1bmRlZmluZWQgPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJycgOiBQREZKUy5pbWFnZVJlc291cmNlc1BhdGgpOwoKLyoqCiAqIERpc2FibGUgdGhlIHdlYiB3b3JrZXIgYW5kIHJ1biBhbGwgY29kZSBvbiB0aGUgbWFpbiB0aHJlYWQuIFRoaXMgd2lsbCBoYXBwZW4KICogYXV0b21hdGljYWxseSBpZiB0aGUgYnJvd3NlciBkb2Vzbid0IHN1cHBvcnQgd29ya2VycyBvciBzZW5kaW5nIHR5cGVkIGFycmF5cwogKiB0byB3b3JrZXJzLgogKiBAdmFyIHtib29sZWFufQogKi8KUERGSlMuZGlzYWJsZVdvcmtlciA9IChQREZKUy5kaXNhYmxlV29ya2VyID09PSB1bmRlZmluZWQgPwogICAgICAgICAgICAgICAgICAgICAgIGZhbHNlIDogUERGSlMuZGlzYWJsZVdvcmtlcik7CgovKioKICogUGF0aCBhbmQgZmlsZW5hbWUgb2YgdGhlIHdvcmtlciBmaWxlLiBSZXF1aXJlZCB3aGVuIHRoZSB3b3JrZXIgaXMgZW5hYmxlZCBpbgogKiBkZXZlbG9wbWVudCBtb2RlLiBJZiB1bnNwZWNpZmllZCBpbiB0aGUgcHJvZHVjdGlvbiBidWlsZCwgdGhlIHdvcmtlciB3aWxsIGJlCiAqIGxvYWRlZCBiYXNlZCBvbiB0aGUgbG9jYXRpb24gb2YgdGhlIHBkZi5qcyBmaWxlLgogKiBAdmFyIHtzdHJpbmd9CiAqLwpQREZKUy53b3JrZXJTcmMgPSAoUERGSlMud29ya2VyU3JjID09PSB1bmRlZmluZWQgPyBudWxsIDogUERGSlMud29ya2VyU3JjKTsKCi8qKgogKiBEaXNhYmxlIHJhbmdlIHJlcXVlc3QgbG9hZGluZyBvZiBQREYgZmlsZXMuIFdoZW4gZW5hYmxlZCBhbmQgaWYgdGhlIHNlcnZlcgogKiBzdXBwb3J0cyBwYXJ0aWFsIGNvbnRlbnQgcmVxdWVzdHMgdGhlbiB0aGUgUERGIHdpbGwgYmUgZmV0Y2hlZCBpbiBjaHVua3MuCiAqIEVuYWJsZWQgKGZhbHNlKSBieSBkZWZhdWx0LgogKiBAdmFyIHtib29sZWFufQogKi8KUERGSlMuZGlzYWJsZVJhbmdlID0gKFBERkpTLmRpc2FibGVSYW5nZSA9PT0gdW5kZWZpbmVkID8KICAgICAgICAgICAgICAgICAgICAgIGZhbHNlIDogUERGSlMuZGlzYWJsZVJhbmdlKTsKCi8qKgogKiBEaXNhYmxlIHN0cmVhbWluZyBvZiBQREYgZmlsZSBkYXRhLiBCeSBkZWZhdWx0IFBERi5qcyBhdHRlbXB0cyB0byBsb2FkIFBERgogKiBpbiBjaHVua3MuIFRoaXMgZGVmYXVsdCBiZWhhdmlvciBjYW4gYmUgZGlzYWJsZWQuCiAqIEB2YXIge2Jvb2xlYW59CiAqLwpQREZKUy5kaXNhYmxlU3RyZWFtID0gKFBERkpTLmRpc2FibGVTdHJlYW0gPT09IHVuZGVmaW5lZCA/CiAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UgOiBQREZKUy5kaXNhYmxlU3RyZWFtKTsKCi8qKgogKiBEaXNhYmxlIHByZS1mZXRjaGluZyBvZiBQREYgZmlsZSBkYXRhLiBXaGVuIHJhbmdlIHJlcXVlc3RzIGFyZSBlbmFibGVkIFBERi5qcwogKiB3aWxsIGF1dG9tYXRpY2FsbHkga2VlcCBmZXRjaGluZyBtb3JlIGRhdGEgZXZlbiBpZiBpdCBpc24ndCBuZWVkZWQgdG8gZGlzcGxheQogKiB0aGUgY3VycmVudCBwYWdlLiBUaGlzIGRlZmF1bHQgYmVoYXZpb3IgY2FuIGJlIGRpc2FibGVkLgogKgogKiBOT1RFOiBJdCBpcyBhbHNvIG5lY2Vzc2FyeSB0byBkaXNhYmxlIHN0cmVhbWluZywgc2VlIGFib3ZlLAogKiAgICAgICBpbiBvcmRlciBmb3IgZGlzYWJsaW5nIG9mIHByZS1mZXRjaGluZyB0byB3b3JrIGNvcnJlY3RseS4KICogQHZhciB7Ym9vbGVhbn0KICovClBERkpTLmRpc2FibGVBdXRvRmV0Y2ggPSAoUERGSlMuZGlzYWJsZUF1dG9GZXRjaCA9PT0gdW5kZWZpbmVkID8KICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSA6IFBERkpTLmRpc2FibGVBdXRvRmV0Y2gpOwoKLyoqCiAqIEVuYWJsZXMgc3BlY2lhbCBob29rcyBmb3IgZGVidWdnaW5nIFBERi5qcy4KICogQHZhciB7Ym9vbGVhbn0KICovClBERkpTLnBkZkJ1ZyA9IChQREZKUy5wZGZCdWcgPT09IHVuZGVmaW5lZCA/IGZhbHNlIDogUERGSlMucGRmQnVnKTsKCi8qKgogKiBFbmFibGVzIHRyYW5zZmVyIHVzYWdlIGluIHBvc3RNZXNzYWdlIGZvciBBcnJheUJ1ZmZlcnMuCiAqIEB2YXIge2Jvb2xlYW59CiAqLwpQREZKUy5wb3N0TWVzc2FnZVRyYW5zZmVycyA9IChQREZKUy5wb3N0TWVzc2FnZVRyYW5zZmVycyA9PT0gdW5kZWZpbmVkID8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSA6IFBERkpTLnBvc3RNZXNzYWdlVHJhbnNmZXJzKTsKCi8qKgogKiBEaXNhYmxlcyBVUkwuY3JlYXRlT2JqZWN0VVJMIHVzYWdlLgogKiBAdmFyIHtib29sZWFufQogKi8KUERGSlMuZGlzYWJsZUNyZWF0ZU9iamVjdFVSTCA9IChQREZKUy5kaXNhYmxlQ3JlYXRlT2JqZWN0VVJMID09PSB1bmRlZmluZWQgPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlIDogUERGSlMuZGlzYWJsZUNyZWF0ZU9iamVjdFVSTCk7CgovKioKICogRGlzYWJsZXMgV2ViR0wgdXNhZ2UuCiAqIEB2YXIge2Jvb2xlYW59CiAqLwpQREZKUy5kaXNhYmxlV2ViR0wgPSAoUERGSlMuZGlzYWJsZVdlYkdMID09PSB1bmRlZmluZWQgPwogICAgICAgICAgICAgICAgICAgICAgdHJ1ZSA6IFBERkpTLmRpc2FibGVXZWJHTCk7CgovKioKICogRGlzYWJsZXMgZnVsbHNjcmVlbiBzdXBwb3J0LCBhbmQgYnkgZXh0ZW5zaW9uIFByZXNlbnRhdGlvbiBNb2RlLAogKiBpbiBicm93c2VycyB3aGljaCBzdXBwb3J0IHRoZSBmdWxsc2NyZWVuIEFQSS4KICogQHZhciB7Ym9vbGVhbn0KICovClBERkpTLmRpc2FibGVGdWxsc2NyZWVuID0gKFBERkpTLmRpc2FibGVGdWxsc2NyZWVuID09PSB1bmRlZmluZWQgPwogICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSA6IFBERkpTLmRpc2FibGVGdWxsc2NyZWVuKTsKCi8qKgogKiBFbmFibGVzIENTUyBvbmx5IHpvb21pbmcuCiAqIEB2YXIge2Jvb2xlYW59CiAqLwpQREZKUy51c2VPbmx5Q3NzWm9vbSA9IChQREZKUy51c2VPbmx5Q3NzWm9vbSA9PT0gdW5kZWZpbmVkID8KICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UgOiBQREZKUy51c2VPbmx5Q3NzWm9vbSk7CgovKioKICogQ29udHJvbHMgdGhlIGxvZ2dpbmcgbGV2ZWwuCiAqIFRoZSBjb25zdGFudHMgZnJvbSBQREZKUy5WRVJCT1NJVFlfTEVWRUxTIHNob3VsZCBiZSB1c2VkOgogKiAtIGVycm9ycwogKiAtIHdhcm5pbmdzIFtkZWZhdWx0XQogKiAtIGluZm9zCiAqIEB2YXIge251bWJlcn0KICovClBERkpTLnZlcmJvc2l0eSA9IChQREZKUy52ZXJib3NpdHkgPT09IHVuZGVmaW5lZCA/CiAgICAgICAgICAgICAgICAgICBQREZKUy5WRVJCT1NJVFlfTEVWRUxTLndhcm5pbmdzIDogUERGSlMudmVyYm9zaXR5KTsKCi8qKgogKiBUaGUgbWF4aW11bSBzdXBwb3J0ZWQgY2FudmFzIHNpemUgaW4gdG90YWwgcGl4ZWxzIGUuZy4gd2lkdGggKiBoZWlnaHQuCiAqIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDQwOTYgKiA0MDk2LiBVc2UgLTEgZm9yIG5vIGxpbWl0LgogKiBAdmFyIHtudW1iZXJ9CiAqLwpQREZKUy5tYXhDYW52YXNQaXhlbHMgPSAoUERGSlMubWF4Q2FudmFzUGl4ZWxzID09PSB1bmRlZmluZWQgPwogICAgICAgICAgICAgICAgICAgICAgICAgMTY3NzcyMTYgOiBQREZKUy5tYXhDYW52YXNQaXhlbHMpOwoKLyoqCiAqIE9wZW5zIGV4dGVybmFsIGxpbmtzIGluIGEgbmV3IHdpbmRvdyBpZiBlbmFibGVkLiBUaGUgZGVmYXVsdCBiZWhhdmlvciBvcGVucwogKiBleHRlcm5hbCBsaW5rcyBpbiB0aGUgUERGLmpzIHdpbmRvdy4KICogQHZhciB7Ym9vbGVhbn0KICovClBERkpTLm9wZW5FeHRlcm5hbExpbmtzSW5OZXdXaW5kb3cgPSAoCiAgUERGSlMub3BlbkV4dGVybmFsTGlua3NJbk5ld1dpbmRvdyA9PT0gdW5kZWZpbmVkID8KICAgIGZhbHNlIDogUERGSlMub3BlbkV4dGVybmFsTGlua3NJbk5ld1dpbmRvdyk7CgovKioKICogRG9jdW1lbnQgaW5pdGlhbGl6YXRpb24gLyBsb2FkaW5nIHBhcmFtZXRlcnMgb2JqZWN0LgogKgogKiBAdHlwZWRlZiB7T2JqZWN0fSBEb2N1bWVudEluaXRQYXJhbWV0ZXJzCiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSAgICAgdXJsICAgLSBUaGUgVVJMIG9mIHRoZSBQREYuCiAqIEBwcm9wZXJ0eSB7VHlwZWRBcnJheXxBcnJheXxzdHJpbmd9IGRhdGEgLSBCaW5hcnkgUERGIGRhdGEuIFVzZSB0eXBlZCBhcnJheXMKICogICAoVWludDhBcnJheSkgdG8gaW1wcm92ZSB0aGUgbWVtb3J5IHVzYWdlLiBJZiBQREYgZGF0YSBpcyBCQVNFNjQtZW5jb2RlZCwKICogICB1c2UgYXRvYigpIHRvIGNvbnZlcnQgaXQgdG8gYSBiaW5hcnkgc3RyaW5nIGZpcnN0LgogKiBAcHJvcGVydHkge09iamVjdH0gICAgIGh0dHBIZWFkZXJzIC0gQmFzaWMgYXV0aGVudGljYXRpb24gaGVhZGVycy4KICogQHByb3BlcnR5IHtib29sZWFufSAgICB3aXRoQ3JlZGVudGlhbHMgLSBJbmRpY2F0ZXMgd2hldGhlciBvciBub3QgY3Jvc3Mtc2l0ZQogKiAgIEFjY2Vzcy1Db250cm9sIHJlcXVlc3RzIHNob3VsZCBiZSBtYWRlIHVzaW5nIGNyZWRlbnRpYWxzIHN1Y2ggYXMgY29va2llcwogKiAgIG9yIGF1dGhvcml6YXRpb24gaGVhZGVycy4gVGhlIGRlZmF1bHQgaXMgZmFsc2UuCiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSAgICAgcGFzc3dvcmQgLSBGb3IgZGVjcnlwdGluZyBwYXNzd29yZC1wcm90ZWN0ZWQgUERGcy4KICogQHByb3BlcnR5IHtUeXBlZEFycmF5fSBpbml0aWFsRGF0YSAtIEEgdHlwZWQgYXJyYXkgd2l0aCB0aGUgZmlyc3QgcG9ydGlvbiBvcgogKiAgIGFsbCBvZiB0aGUgcGRmIGRhdGEuIFVzZWQgYnkgdGhlIGV4dGVuc2lvbiBzaW5jZSBzb21lIGRhdGEgaXMgYWxyZWFkeQogKiAgIGxvYWRlZCBiZWZvcmUgdGhlIHN3aXRjaCB0byByYW5nZSByZXF1ZXN0cy4KICogQHByb3BlcnR5IHtudW1iZXJ9ICAgICBsZW5ndGggLSBUaGUgUERGIGZpbGUgbGVuZ3RoLiBJdCdzIHVzZWQgZm9yIHByb2dyZXNzCiAqICAgcmVwb3J0cyBhbmQgcmFuZ2UgcmVxdWVzdHMgb3BlcmF0aW9ucy4KICogQHByb3BlcnR5IHtQREZEYXRhUmFuZ2VUcmFuc3BvcnR9IHJhbmdlCiAqLwoKLyoqCiAqIEB0eXBlZGVmIHtPYmplY3R9IFBERkRvY3VtZW50U3RhdHMKICogQHByb3BlcnR5IHtBcnJheX0gc3RyZWFtVHlwZXMgLSBVc2VkIHN0cmVhbSB0eXBlcyBpbiB0aGUgZG9jdW1lbnQgKGFuIGl0ZW0KICogICBpcyBzZXQgdG8gdHJ1ZSBpZiBzcGVjaWZpYyBzdHJlYW0gSUQgd2FzIHVzZWQgaW4gdGhlIGRvY3VtZW50KS4KICogQHByb3BlcnR5IHtBcnJheX0gZm9udFR5cGVzIC0gVXNlZCBmb250IHR5cGUgaW4gdGhlIGRvY3VtZW50IChhbiBpdGVtIGlzIHNldAogKiAgIHRvIHRydWUgaWYgc3BlY2lmaWMgZm9udCBJRCB3YXMgdXNlZCBpbiB0aGUgZG9jdW1lbnQpLgogKi8KCi8qKgogKiBUaGlzIGlzIHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciBsb2FkaW5nIGEgUERGIGFuZCBpbnRlcmFjdGluZyB3aXRoIGl0LgogKiBOT1RFOiBJZiBhIFVSTCBpcyB1c2VkIHRvIGZldGNoIHRoZSBQREYgZGF0YSBhIHN0YW5kYXJkIFhNTEh0dHBSZXF1ZXN0KFhIUikKICogaXMgdXNlZCwgd2hpY2ggbWVhbnMgaXQgbXVzdCBmb2xsb3cgdGhlIHNhbWUgb3JpZ2luIHJ1bGVzIHRoYXQgYW55IFhIUiBkb2VzCiAqIGUuZy4gTm8gY3Jvc3MgZG9tYWluIHJlcXVlc3RzIHdpdGhvdXQgQ09SUy4KICoKICogQHBhcmFtIHtzdHJpbmd8VHlwZWRBcnJheXxEb2N1bWVudEluaXRQYXJhbWV0ZXJzfFBERkRhdGFSYW5nZVRyYW5zcG9ydH0gc3JjCiAqIENhbiBiZSBhIHVybCB0byB3aGVyZSBhIFBERiBpcyBsb2NhdGVkLCBhIHR5cGVkIGFycmF5IChVaW50OEFycmF5KQogKiBhbHJlYWR5IHBvcHVsYXRlZCB3aXRoIGRhdGEgb3IgcGFyYW1ldGVyIG9iamVjdC4KICoKICogQHBhcmFtIHtQREZEYXRhUmFuZ2VUcmFuc3BvcnR9IHBkZkRhdGFSYW5nZVRyYW5zcG9ydCAoZGVwcmVjYXRlZCkgSXQgaXMgdXNlZAogKiBpZiB5b3Ugd2FudCB0byBtYW51YWxseSBzZXJ2ZSByYW5nZSByZXF1ZXN0cyBmb3IgZGF0YSBpbiB0aGUgUERGLgogKgogKiBAcGFyYW0ge2Z1bmN0aW9ufSBwYXNzd29yZENhbGxiYWNrIChkZXByZWNhdGVkKSBJdCBpcyB1c2VkIHRvIHJlcXVlc3QgYQogKiBwYXNzd29yZCBpZiB3cm9uZyBvciBubyBwYXNzd29yZCB3YXMgcHJvdmlkZWQuIFRoZSBjYWxsYmFjayByZWNlaXZlcyB0d28KICogcGFyYW1ldGVyczogZnVuY3Rpb24gdGhhdCBuZWVkcyB0byBiZSBjYWxsZWQgd2l0aCBuZXcgcGFzc3dvcmQgYW5kIHJlYXNvbgogKiAoc2VlIHtQYXNzd29yZFJlc3BvbnNlc30pLgogKgogKiBAcGFyYW0ge2Z1bmN0aW9ufSBwcm9ncmVzc0NhbGxiYWNrIChkZXByZWNhdGVkKSBJdCBpcyB1c2VkIHRvIGJlIGFibGUgdG8KICogbW9uaXRvciB0aGUgbG9hZGluZyBwcm9ncmVzcyBvZiB0aGUgUERGIGZpbGUgKG5lY2Vzc2FyeSB0byBpbXBsZW1lbnQgZS5nLgogKiBhIGxvYWRpbmcgYmFyKS4gVGhlIGNhbGxiYWNrIHJlY2VpdmVzIGFuIHtPYmplY3R9IHdpdGggdGhlIHByb3BlcnRpZXM6CiAqIHtudW1iZXJ9IGxvYWRlZCBhbmQge251bWJlcn0gdG90YWwuCiAqCiAqIEByZXR1cm4ge1BERkRvY3VtZW50TG9hZGluZ1Rhc2t9CiAqLwpQREZKUy5nZXREb2N1bWVudCA9IGZ1bmN0aW9uIGdldERvY3VtZW50KHNyYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZGZEYXRhUmFuZ2VUcmFuc3BvcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmRDYWxsYmFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmVzc0NhbGxiYWNrKSB7CiAgdmFyIHRhc2sgPSBuZXcgUERGRG9jdW1lbnRMb2FkaW5nVGFzaygpOwoKICAvLyBTdXBwb3J0IG9mIHRoZSBvYnNvbGV0ZSBhcmd1bWVudHMgKGZvciBjb21wYXRpYmlsaXR5IHdpdGggQVBJIHYxLjApCiAgaWYgKHBkZkRhdGFSYW5nZVRyYW5zcG9ydCkgewogICAgaWYgKCEocGRmRGF0YVJhbmdlVHJhbnNwb3J0IGluc3RhbmNlb2YgUERGRGF0YVJhbmdlVHJhbnNwb3J0KSkgewogICAgICAvLyBOb3QgYSBQREZEYXRhUmFuZ2VUcmFuc3BvcnQgaW5zdGFuY2UsIHRyeWluZyB0byBhZGQgbWlzc2luZyBwcm9wZXJ0aWVzLgogICAgICBwZGZEYXRhUmFuZ2VUcmFuc3BvcnQgPSBPYmplY3QuY3JlYXRlKHBkZkRhdGFSYW5nZVRyYW5zcG9ydCk7CiAgICAgIHBkZkRhdGFSYW5nZVRyYW5zcG9ydC5sZW5ndGggPSBzcmMubGVuZ3RoOwogICAgICBwZGZEYXRhUmFuZ2VUcmFuc3BvcnQuaW5pdGlhbERhdGEgPSBzcmMuaW5pdGlhbERhdGE7CiAgICB9CiAgICBzcmMgPSBPYmplY3QuY3JlYXRlKHNyYyk7CiAgICBzcmMucmFuZ2UgPSBwZGZEYXRhUmFuZ2VUcmFuc3BvcnQ7CiAgfQogIHRhc2sub25QYXNzd29yZCA9IHBhc3N3b3JkQ2FsbGJhY2sgfHwgbnVsbDsKICB0YXNrLm9uUHJvZ3Jlc3MgPSBwcm9ncmVzc0NhbGxiYWNrIHx8IG51bGw7CgogIHZhciB3b3JrZXJJbml0aWFsaXplZENhcGFiaWxpdHksIHRyYW5zcG9ydDsKICB2YXIgc291cmNlOwogIGlmICh0eXBlb2Ygc3JjID09PSAnc3RyaW5nJykgewogICAgc291cmNlID0geyB1cmw6IHNyYyB9OwogIH0gZWxzZSBpZiAoaXNBcnJheUJ1ZmZlcihzcmMpKSB7CiAgICBzb3VyY2UgPSB7IGRhdGE6IHNyYyB9OwogIH0gZWxzZSBpZiAoc3JjIGluc3RhbmNlb2YgUERGRGF0YVJhbmdlVHJhbnNwb3J0KSB7CiAgICBzb3VyY2UgPSB7IHJhbmdlOiBzcmMgfTsKICB9IGVsc2UgewogICAgaWYgKHR5cGVvZiBzcmMgIT09ICdvYmplY3QnKSB7CiAgICAgIGVycm9yKCdJbnZhbGlkIHBhcmFtZXRlciBpbiBnZXREb2N1bWVudCwgbmVlZCBlaXRoZXIgVWludDhBcnJheSwgJyArCiAgICAgICAgJ3N0cmluZyBvciBhIHBhcmFtZXRlciBvYmplY3QnKTsKICAgIH0KICAgIGlmICghc3JjLnVybCAmJiAhc3JjLmRhdGEgJiYgIXNyYy5yYW5nZSkgewogICAgICBlcnJvcignSW52YWxpZCBwYXJhbWV0ZXIgb2JqZWN0OiBuZWVkIGVpdGhlciAuZGF0YSwgLnJhbmdlIG9yIC51cmwnKTsKICAgIH0KCiAgICBzb3VyY2UgPSBzcmM7CiAgfQoKICB2YXIgcGFyYW1zID0ge307CiAgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgewogICAgaWYgKGtleSA9PT0gJ3VybCcgJiYgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgLy8gVGhlIGZ1bGwgcGF0aCBpcyByZXF1aXJlZCBpbiB0aGUgJ3VybCcgZmllbGQuCiAgICAgIHBhcmFtc1trZXldID0gY29tYmluZVVybCh3aW5kb3cubG9jYXRpb24uaHJlZiwgc291cmNlW2tleV0pOwogICAgICBjb250aW51ZTsKICAgIH0gZWxzZSBpZiAoa2V5ID09PSAncmFuZ2UnKSB7CiAgICAgIGNvbnRpbnVlOwogICAgfSBlbHNlIGlmIChrZXkgPT09ICdkYXRhJyAmJiAhKHNvdXJjZVtrZXldIGluc3RhbmNlb2YgVWludDhBcnJheSkpIHsKICAgICAgLy8gQ29udmVydGluZyBzdHJpbmcgb3IgYXJyYXktbGlrZSBkYXRhIHRvIFVpbnQ4QXJyYXkuCiAgICAgIHZhciBwZGZCeXRlcyA9IHNvdXJjZVtrZXldOwogICAgICBpZiAodHlwZW9mIHBkZkJ5dGVzID09PSAnc3RyaW5nJykgewogICAgICAgIHBhcmFtc1trZXldID0gc3RyaW5nVG9CeXRlcyhwZGZCeXRlcyk7CiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHBkZkJ5dGVzID09PSAnb2JqZWN0JyAmJiBwZGZCeXRlcyAhPT0gbnVsbCAmJgogICAgICAgICAgICAgICAgICFpc05hTihwZGZCeXRlcy5sZW5ndGgpKSB7CiAgICAgICAgcGFyYW1zW2tleV0gPSBuZXcgVWludDhBcnJheShwZGZCeXRlcyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZXJyb3IoJ0ludmFsaWQgUERGIGJpbmFyeSBkYXRhOiBlaXRoZXIgdHlwZWQgYXJyYXksIHN0cmluZyBvciAnICsKICAgICAgICAgICAgICAnYXJyYXktbGlrZSBvYmplY3QgaXMgZXhwZWN0ZWQgaW4gdGhlIGRhdGEgcHJvcGVydHkuJyk7CiAgICAgIH0KICAgICAgY29udGludWU7CiAgICB9CiAgICBwYXJhbXNba2V5XSA9IHNvdXJjZVtrZXldOwogIH0KCiAgd29ya2VySW5pdGlhbGl6ZWRDYXBhYmlsaXR5ID0gY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkoKTsKICB0cmFuc3BvcnQgPSBuZXcgV29ya2VyVHJhbnNwb3J0KHdvcmtlckluaXRpYWxpemVkQ2FwYWJpbGl0eSwgc291cmNlLnJhbmdlKTsKICB3b3JrZXJJbml0aWFsaXplZENhcGFiaWxpdHkucHJvbWlzZS50aGVuKGZ1bmN0aW9uIHRyYW5zcG9ydEluaXRpYWxpemVkKCkgewogICAgdHJhbnNwb3J0LmZldGNoRG9jdW1lbnQodGFzaywgcGFyYW1zKTsKICB9KTsKCiAgcmV0dXJuIHRhc2s7Cn07CgovKioKICogUERGIGRvY3VtZW50IGxvYWRpbmcgb3BlcmF0aW9uLgogKiBAY2xhc3MKICovCnZhciBQREZEb2N1bWVudExvYWRpbmdUYXNrID0gKGZ1bmN0aW9uIFBERkRvY3VtZW50TG9hZGluZ1Rhc2tDbG9zdXJlKCkgewogIC8qKiBAY29uc3RydWN0cyBQREZEb2N1bWVudExvYWRpbmdUYXNrICovCiAgZnVuY3Rpb24gUERGRG9jdW1lbnRMb2FkaW5nVGFzaygpIHsKICAgIHRoaXMuX2NhcGFiaWxpdHkgPSBjcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSgpOwoKICAgIC8qKgogICAgICogQ2FsbGJhY2sgdG8gcmVxdWVzdCBhIHBhc3N3b3JkIGlmIHdyb25nIG9yIG5vIHBhc3N3b3JkIHdhcyBwcm92aWRlZC4KICAgICAqIFRoZSBjYWxsYmFjayByZWNlaXZlcyB0d28gcGFyYW1ldGVyczogZnVuY3Rpb24gdGhhdCBuZWVkcyB0byBiZSBjYWxsZWQKICAgICAqIHdpdGggbmV3IHBhc3N3b3JkIGFuZCByZWFzb24gKHNlZSB7UGFzc3dvcmRSZXNwb25zZXN9KS4KICAgICAqLwogICAgdGhpcy5vblBhc3N3b3JkID0gbnVsbDsKCiAgICAvKioKICAgICAqIENhbGxiYWNrIHRvIGJlIGFibGUgdG8gbW9uaXRvciB0aGUgbG9hZGluZyBwcm9ncmVzcyBvZiB0aGUgUERGIGZpbGUKICAgICAqIChuZWNlc3NhcnkgdG8gaW1wbGVtZW50IGUuZy4gYSBsb2FkaW5nIGJhcikuIFRoZSBjYWxsYmFjayByZWNlaXZlcwogICAgICogYW4ge09iamVjdH0gd2l0aCB0aGUgcHJvcGVydGllczoge251bWJlcn0gbG9hZGVkIGFuZCB7bnVtYmVyfSB0b3RhbC4KICAgICAqLwogICAgdGhpcy5vblByb2dyZXNzID0gbnVsbDsKICB9CgogIFBERkRvY3VtZW50TG9hZGluZ1Rhc2sucHJvdG90eXBlID0KICAgICAgLyoqIEBsZW5kcyBQREZEb2N1bWVudExvYWRpbmdUYXNrLnByb3RvdHlwZSAqLyB7CiAgICAvKioKICAgICAqIEByZXR1cm4ge1Byb21pc2V9CiAgICAgKi8KICAgIGdldCBwcm9taXNlKCkgewogICAgICByZXR1cm4gdGhpcy5fY2FwYWJpbGl0eS5wcm9taXNlOwogICAgfSwKCiAgICAvLyBUT0RPIGFkZCBjYW5jZWwgb3IgYWJvcnQgbWV0aG9kCgogICAgLyoqCiAgICAgKiBSZWdpc3RlcnMgY2FsbGJhY2tzIHRvIGluZGljYXRlIHRoZSBkb2N1bWVudCBsb2FkaW5nIGNvbXBsZXRpb24uCiAgICAgKgogICAgICogQHBhcmFtIHtmdW5jdGlvbn0gb25GdWxmaWxsZWQgVGhlIGNhbGxiYWNrIGZvciB0aGUgbG9hZGluZyBjb21wbGV0aW9uLgogICAgICogQHBhcmFtIHtmdW5jdGlvbn0gb25SZWplY3RlZCBUaGUgY2FsbGJhY2sgZm9yIHRoZSBsb2FkaW5nIGZhaWx1cmUuCiAgICAgKiBAcmV0dXJuIHtQcm9taXNlfSBBIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCBhZnRlciB0aGUgb25GdWxmaWxsZWQgb3IKICAgICAqICAgICAgICAgICAgICAgICAgIG9uUmVqZWN0ZWQgY2FsbGJhY2suCiAgICAgKi8KICAgIHRoZW46IGZ1bmN0aW9uIFBERkRvY3VtZW50TG9hZGluZ1Rhc2tfdGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkgewogICAgICByZXR1cm4gdGhpcy5wcm9taXNlLnRoZW4uYXBwbHkodGhpcy5wcm9taXNlLCBhcmd1bWVudHMpOwogICAgfQogIH07CgogIHJldHVybiBQREZEb2N1bWVudExvYWRpbmdUYXNrOwp9KSgpOwoKLyoqCiAqIEFic3RyYWN0IGNsYXNzIHRvIHN1cHBvcnQgcmFuZ2UgcmVxdWVzdHMgZmlsZSBsb2FkaW5nLgogKiBAY2xhc3MKICovCnZhciBQREZEYXRhUmFuZ2VUcmFuc3BvcnQgPSAoZnVuY3Rpb24gcGRmRGF0YVJhbmdlVHJhbnNwb3J0Q2xvc3VyZSgpIHsKICAvKioKICAgKiBAY29uc3RydWN0cyBQREZEYXRhUmFuZ2VUcmFuc3BvcnQKICAgKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoCiAgICogQHBhcmFtIHtVaW50OEFycmF5fSBpbml0aWFsRGF0YQogICAqLwogIGZ1bmN0aW9uIFBERkRhdGFSYW5nZVRyYW5zcG9ydChsZW5ndGgsIGluaXRpYWxEYXRhKSB7CiAgICB0aGlzLmxlbmd0aCA9IGxlbmd0aDsKICAgIHRoaXMuaW5pdGlhbERhdGEgPSBpbml0aWFsRGF0YTsKCiAgICB0aGlzLl9yYW5nZUxpc3RlbmVycyA9IFtdOwogICAgdGhpcy5fcHJvZ3Jlc3NMaXN0ZW5lcnMgPSBbXTsKICAgIHRoaXMuX3Byb2dyZXNzaXZlUmVhZExpc3RlbmVycyA9IFtdOwogICAgdGhpcy5fcmVhZHlDYXBhYmlsaXR5ID0gY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkoKTsKICB9CiAgUERGRGF0YVJhbmdlVHJhbnNwb3J0LnByb3RvdHlwZSA9CiAgICAgIC8qKiBAbGVuZHMgUERGRGF0YVJhbmdlVHJhbnNwb3J0LnByb3RvdHlwZSAqLyB7CiAgICBhZGRSYW5nZUxpc3RlbmVyOgogICAgICAgIGZ1bmN0aW9uIFBERkRhdGFSYW5nZVRyYW5zcG9ydF9hZGRSYW5nZUxpc3RlbmVyKGxpc3RlbmVyKSB7CiAgICAgIHRoaXMuX3JhbmdlTGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpOwogICAgfSwKCiAgICBhZGRQcm9ncmVzc0xpc3RlbmVyOgogICAgICAgIGZ1bmN0aW9uIFBERkRhdGFSYW5nZVRyYW5zcG9ydF9hZGRQcm9ncmVzc0xpc3RlbmVyKGxpc3RlbmVyKSB7CiAgICAgIHRoaXMuX3Byb2dyZXNzTGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpOwogICAgfSwKCiAgICBhZGRQcm9ncmVzc2l2ZVJlYWRMaXN0ZW5lcjoKICAgICAgICBmdW5jdGlvbiBQREZEYXRhUmFuZ2VUcmFuc3BvcnRfYWRkUHJvZ3Jlc3NpdmVSZWFkTGlzdGVuZXIobGlzdGVuZXIpIHsKICAgICAgdGhpcy5fcHJvZ3Jlc3NpdmVSZWFkTGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpOwogICAgfSwKCiAgICBvbkRhdGFSYW5nZTogZnVuY3Rpb24gUERGRGF0YVJhbmdlVHJhbnNwb3J0X29uRGF0YVJhbmdlKGJlZ2luLCBjaHVuaykgewogICAgICB2YXIgbGlzdGVuZXJzID0gdGhpcy5fcmFuZ2VMaXN0ZW5lcnM7CiAgICAgIGZvciAodmFyIGkgPSAwLCBuID0gbGlzdGVuZXJzLmxlbmd0aDsgaSA8IG47ICsraSkgewogICAgICAgIGxpc3RlbmVyc1tpXShiZWdpbiwgY2h1bmspOwogICAgICB9CiAgICB9LAoKICAgIG9uRGF0YVByb2dyZXNzOiBmdW5jdGlvbiBQREZEYXRhUmFuZ2VUcmFuc3BvcnRfb25EYXRhUHJvZ3Jlc3MobG9hZGVkKSB7CiAgICAgIHRoaXMuX3JlYWR5Q2FwYWJpbGl0eS5wcm9taXNlLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBsaXN0ZW5lcnMgPSB0aGlzLl9wcm9ncmVzc0xpc3RlbmVyczsKICAgICAgICBmb3IgKHZhciBpID0gMCwgbiA9IGxpc3RlbmVycy5sZW5ndGg7IGkgPCBuOyArK2kpIHsKICAgICAgICAgIGxpc3RlbmVyc1tpXShsb2FkZWQpOwogICAgICAgIH0KICAgICAgfS5iaW5kKHRoaXMpKTsKICAgIH0sCgogICAgb25EYXRhUHJvZ3Jlc3NpdmVSZWFkOgogICAgICAgIGZ1bmN0aW9uIFBERkRhdGFSYW5nZVRyYW5zcG9ydF9vbkRhdGFQcm9ncmVzcyhjaHVuaykgewogICAgICB0aGlzLl9yZWFkeUNhcGFiaWxpdHkucHJvbWlzZS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICB2YXIgbGlzdGVuZXJzID0gdGhpcy5fcHJvZ3Jlc3NpdmVSZWFkTGlzdGVuZXJzOwogICAgICAgIGZvciAodmFyIGkgPSAwLCBuID0gbGlzdGVuZXJzLmxlbmd0aDsgaSA8IG47ICsraSkgewogICAgICAgICAgbGlzdGVuZXJzW2ldKGNodW5rKTsKICAgICAgICB9CiAgICAgIH0uYmluZCh0aGlzKSk7CiAgICB9LAoKICAgIHRyYW5zcG9ydFJlYWR5OiBmdW5jdGlvbiBQREZEYXRhUmFuZ2VUcmFuc3BvcnRfdHJhbnNwb3J0UmVhZHkoKSB7CiAgICAgIHRoaXMuX3JlYWR5Q2FwYWJpbGl0eS5yZXNvbHZlKCk7CiAgICB9LAoKICAgIHJlcXVlc3REYXRhUmFuZ2U6CiAgICAgICAgZnVuY3Rpb24gUERGRGF0YVJhbmdlVHJhbnNwb3J0X3JlcXVlc3REYXRhUmFuZ2UoYmVnaW4sIGVuZCkgewogICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Fic3RyYWN0IG1ldGhvZCBQREZEYXRhUmFuZ2VUcmFuc3BvcnQucmVxdWVzdERhdGFSYW5nZScpOwogICAgfQogIH07CiAgcmV0dXJuIFBERkRhdGFSYW5nZVRyYW5zcG9ydDsKfSkoKTsKClBERkpTLlBERkRhdGFSYW5nZVRyYW5zcG9ydCA9IFBERkRhdGFSYW5nZVRyYW5zcG9ydDsKCi8qKgogKiBQcm94eSB0byBhIFBERkRvY3VtZW50IGluIHRoZSB3b3JrZXIgdGhyZWFkLiBBbHNvLCBjb250YWlucyBjb21tb25seSB1c2VkCiAqIHByb3BlcnRpZXMgdGhhdCBjYW4gYmUgcmVhZCBzeW5jaHJvbm91c2x5LgogKiBAY2xhc3MKICovCnZhciBQREZEb2N1bWVudFByb3h5ID0gKGZ1bmN0aW9uIFBERkRvY3VtZW50UHJveHlDbG9zdXJlKCkgewogIGZ1bmN0aW9uIFBERkRvY3VtZW50UHJveHkocGRmSW5mbywgdHJhbnNwb3J0KSB7CiAgICB0aGlzLnBkZkluZm8gPSBwZGZJbmZvOwogICAgdGhpcy50cmFuc3BvcnQgPSB0cmFuc3BvcnQ7CiAgfQogIFBERkRvY3VtZW50UHJveHkucHJvdG90eXBlID0gLyoqIEBsZW5kcyBQREZEb2N1bWVudFByb3h5LnByb3RvdHlwZSAqLyB7CiAgICAvKioKICAgICAqIEByZXR1cm4ge251bWJlcn0gVG90YWwgbnVtYmVyIG9mIHBhZ2VzIHRoZSBQREYgY29udGFpbnMuCiAgICAgKi8KICAgIGdldCBudW1QYWdlcygpIHsKICAgICAgcmV0dXJuIHRoaXMucGRmSW5mby5udW1QYWdlczsKICAgIH0sCiAgICAvKioKICAgICAqIEByZXR1cm4ge3N0cmluZ30gQSB1bmlxdWUgSUQgdG8gaWRlbnRpZnkgYSBQREYuIE5vdCBndWFyYW50ZWVkIHRvIGJlCiAgICAgKiB1bmlxdWUuCiAgICAgKi8KICAgIGdldCBmaW5nZXJwcmludCgpIHsKICAgICAgcmV0dXJuIHRoaXMucGRmSW5mby5maW5nZXJwcmludDsKICAgIH0sCiAgICAvKioKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBwYWdlTnVtYmVyIFRoZSBwYWdlIG51bWJlciB0byBnZXQuIFRoZSBmaXJzdCBwYWdlIGlzIDEuCiAgICAgKiBAcmV0dXJuIHtQcm9taXNlfSBBIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCB3aXRoIGEge0BsaW5rIFBERlBhZ2VQcm94eX0KICAgICAqIG9iamVjdC4KICAgICAqLwogICAgZ2V0UGFnZTogZnVuY3Rpb24gUERGRG9jdW1lbnRQcm94eV9nZXRQYWdlKHBhZ2VOdW1iZXIpIHsKICAgICAgcmV0dXJuIHRoaXMudHJhbnNwb3J0LmdldFBhZ2UocGFnZU51bWJlcik7CiAgICB9LAogICAgLyoqCiAgICAgKiBAcGFyYW0ge3tudW06IG51bWJlciwgZ2VuOiBudW1iZXJ9fSByZWYgVGhlIHBhZ2UgcmVmZXJlbmNlLiBNdXN0IGhhdmUKICAgICAqICAgdGhlICdudW0nIGFuZCAnZ2VuJyBwcm9wZXJ0aWVzLgogICAgICogQHJldHVybiB7UHJvbWlzZX0gQSBwcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2l0aCB0aGUgcGFnZSBpbmRleCB0aGF0IGlzCiAgICAgKiBhc3NvY2lhdGVkIHdpdGggdGhlIHJlZmVyZW5jZS4KICAgICAqLwogICAgZ2V0UGFnZUluZGV4OiBmdW5jdGlvbiBQREZEb2N1bWVudFByb3h5X2dldFBhZ2VJbmRleChyZWYpIHsKICAgICAgcmV0dXJuIHRoaXMudHJhbnNwb3J0LmdldFBhZ2VJbmRleChyZWYpOwogICAgfSwKICAgIC8qKgogICAgICogQHJldHVybiB7UHJvbWlzZX0gQSBwcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2l0aCBhIGxvb2t1cCB0YWJsZSBmb3IKICAgICAqIG1hcHBpbmcgbmFtZWQgZGVzdGluYXRpb25zIHRvIHJlZmVyZW5jZSBudW1iZXJzLgogICAgICoKICAgICAqIFRoaXMgY2FuIGJlIHNsb3cgZm9yIGxhcmdlIGRvY3VtZW50czogdXNlIGdldERlc3RpbmF0aW9uIGluc3RlYWQKICAgICAqLwogICAgZ2V0RGVzdGluYXRpb25zOiBmdW5jdGlvbiBQREZEb2N1bWVudFByb3h5X2dldERlc3RpbmF0aW9ucygpIHsKICAgICAgcmV0dXJuIHRoaXMudHJhbnNwb3J0LmdldERlc3RpbmF0aW9ucygpOwogICAgfSwKICAgIC8qKgogICAgICogQHBhcmFtIHtzdHJpbmd9IGlkIFRoZSBuYW1lZCBkZXN0aW5hdGlvbiB0byBnZXQuCiAgICAgKiBAcmV0dXJuIHtQcm9taXNlfSBBIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCB3aXRoIGFsbCBpbmZvcm1hdGlvbgogICAgICogb2YgdGhlIGdpdmVuIG5hbWVkIGRlc3RpbmF0aW9uLgogICAgICovCiAgICBnZXREZXN0aW5hdGlvbjogZnVuY3Rpb24gUERGRG9jdW1lbnRQcm94eV9nZXREZXN0aW5hdGlvbihpZCkgewogICAgICByZXR1cm4gdGhpcy50cmFuc3BvcnQuZ2V0RGVzdGluYXRpb24oaWQpOwogICAgfSwKICAgIC8qKgogICAgICogQHJldHVybiB7UHJvbWlzZX0gQSBwcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2l0aCBhIGxvb2t1cCB0YWJsZSBmb3IKICAgICAqIG1hcHBpbmcgbmFtZWQgYXR0YWNobWVudHMgdG8gdGhlaXIgY29udGVudC4KICAgICAqLwogICAgZ2V0QXR0YWNobWVudHM6IGZ1bmN0aW9uIFBERkRvY3VtZW50UHJveHlfZ2V0QXR0YWNobWVudHMoKSB7CiAgICAgIHJldHVybiB0aGlzLnRyYW5zcG9ydC5nZXRBdHRhY2htZW50cygpOwogICAgfSwKICAgIC8qKgogICAgICogQHJldHVybiB7UHJvbWlzZX0gQSBwcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2l0aCBhbiBhcnJheSBvZiBhbGwgdGhlCiAgICAgKiBKYXZhU2NyaXB0IHN0cmluZ3MgaW4gdGhlIG5hbWUgdHJlZS4KICAgICAqLwogICAgZ2V0SmF2YVNjcmlwdDogZnVuY3Rpb24gUERGRG9jdW1lbnRQcm94eV9nZXRKYXZhU2NyaXB0KCkgewogICAgICByZXR1cm4gdGhpcy50cmFuc3BvcnQuZ2V0SmF2YVNjcmlwdCgpOwogICAgfSwKICAgIC8qKgogICAgICogQHJldHVybiB7UHJvbWlzZX0gQSBwcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2l0aCBhbiB7QXJyYXl9IHRoYXQgaXMgYQogICAgICogdHJlZSBvdXRsaW5lIChpZiBpdCBoYXMgb25lKSBvZiB0aGUgUERGLiBUaGUgdHJlZSBpcyBpbiB0aGUgZm9ybWF0IG9mOgogICAgICogWwogICAgICogIHsKICAgICAqICAgdGl0bGU6IHN0cmluZywKICAgICAqICAgYm9sZDogYm9vbGVhbiwKICAgICAqICAgaXRhbGljOiBib29sZWFuLAogICAgICogICBjb2xvcjogcmdiIGFycmF5LAogICAgICogICBkZXN0OiBkZXN0IG9iaiwKICAgICAqICAgaXRlbXM6IGFycmF5IG9mIG1vcmUgaXRlbXMgbGlrZSB0aGlzCiAgICAgKiAgfSwKICAgICAqICAuLi4KICAgICAqIF0uCiAgICAgKi8KICAgIGdldE91dGxpbmU6IGZ1bmN0aW9uIFBERkRvY3VtZW50UHJveHlfZ2V0T3V0bGluZSgpIHsKICAgICAgcmV0dXJuIHRoaXMudHJhbnNwb3J0LmdldE91dGxpbmUoKTsKICAgIH0sCiAgICAvKioKICAgICAqIEByZXR1cm4ge1Byb21pc2V9IEEgcHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIHdpdGggYW4ge09iamVjdH0gdGhhdCBoYXMKICAgICAqIGluZm8gYW5kIG1ldGFkYXRhIHByb3BlcnRpZXMuICBJbmZvIGlzIGFuIHtPYmplY3R9IGZpbGxlZCB3aXRoIGFueXRoaW5nCiAgICAgKiBhdmFpbGFibGUgaW4gdGhlIGluZm9ybWF0aW9uIGRpY3Rpb25hcnkgYW5kIHNpbWlsYXJseSBtZXRhZGF0YSBpcyBhCiAgICAgKiB7TWV0YWRhdGF9IG9iamVjdCB3aXRoIGluZm9ybWF0aW9uIGZyb20gdGhlIG1ldGFkYXRhIHNlY3Rpb24gb2YgdGhlIFBERi4KICAgICAqLwogICAgZ2V0TWV0YWRhdGE6IGZ1bmN0aW9uIFBERkRvY3VtZW50UHJveHlfZ2V0TWV0YWRhdGEoKSB7CiAgICAgIHJldHVybiB0aGlzLnRyYW5zcG9ydC5nZXRNZXRhZGF0YSgpOwogICAgfSwKICAgIC8qKgogICAgICogQHJldHVybiB7UHJvbWlzZX0gQSBwcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2l0aCBhIFR5cGVkQXJyYXkgdGhhdCBoYXMKICAgICAqIHRoZSByYXcgZGF0YSBmcm9tIHRoZSBQREYuCiAgICAgKi8KICAgIGdldERhdGE6IGZ1bmN0aW9uIFBERkRvY3VtZW50UHJveHlfZ2V0RGF0YSgpIHsKICAgICAgcmV0dXJuIHRoaXMudHJhbnNwb3J0LmdldERhdGEoKTsKICAgIH0sCiAgICAvKioKICAgICAqIEByZXR1cm4ge1Byb21pc2V9IEEgcHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIHdoZW4gdGhlIGRvY3VtZW50J3MgZGF0YQogICAgICogaXMgbG9hZGVkLiBJdCBpcyByZXNvbHZlZCB3aXRoIGFuIHtPYmplY3R9IHRoYXQgY29udGFpbnMgdGhlIGxlbmd0aAogICAgICogcHJvcGVydHkgdGhhdCBpbmRpY2F0ZXMgc2l6ZSBvZiB0aGUgUERGIGRhdGEgaW4gYnl0ZXMuCiAgICAgKi8KICAgIGdldERvd25sb2FkSW5mbzogZnVuY3Rpb24gUERGRG9jdW1lbnRQcm94eV9nZXREb3dubG9hZEluZm8oKSB7CiAgICAgIHJldHVybiB0aGlzLnRyYW5zcG9ydC5kb3dubG9hZEluZm9DYXBhYmlsaXR5LnByb21pc2U7CiAgICB9LAogICAgLyoqCiAgICAgKiBAcmV0dXJuIHtQcm9taXNlfSBBIHByb21pc2UgdGhpcyBpcyByZXNvbHZlZCB3aXRoIGN1cnJlbnQgc3RhdHMgYWJvdXQKICAgICAqIGRvY3VtZW50IHN0cnVjdHVyZXMgKHNlZSB7QGxpbmsgUERGRG9jdW1lbnRTdGF0c30pLgogICAgICovCiAgICBnZXRTdGF0czogZnVuY3Rpb24gUERGRG9jdW1lbnRQcm94eV9nZXRTdGF0cygpIHsKICAgICAgcmV0dXJuIHRoaXMudHJhbnNwb3J0LmdldFN0YXRzKCk7CiAgICB9LAogICAgLyoqCiAgICAgKiBDbGVhbnMgdXAgcmVzb3VyY2VzIGFsbG9jYXRlZCBieSB0aGUgZG9jdW1lbnQsIGUuZy4gY3JlYXRlZCBAZm9udC1mYWNlLgogICAgICovCiAgICBjbGVhbnVwOiBmdW5jdGlvbiBQREZEb2N1bWVudFByb3h5X2NsZWFudXAoKSB7CiAgICAgIHRoaXMudHJhbnNwb3J0LnN0YXJ0Q2xlYW51cCgpOwogICAgfSwKICAgIC8qKgogICAgICogRGVzdHJveXMgY3VycmVudCBkb2N1bWVudCBpbnN0YW5jZSBhbmQgdGVybWluYXRlcyB3b3JrZXIuCiAgICAgKi8KICAgIGRlc3Ryb3k6IGZ1bmN0aW9uIFBERkRvY3VtZW50UHJveHlfZGVzdHJveSgpIHsKICAgICAgdGhpcy50cmFuc3BvcnQuZGVzdHJveSgpOwogICAgfQogIH07CiAgcmV0dXJuIFBERkRvY3VtZW50UHJveHk7Cn0pKCk7CgovKioKICogUGFnZSB0ZXh0IGNvbnRlbnQuCiAqCiAqIEB0eXBlZGVmIHtPYmplY3R9IFRleHRDb250ZW50CiAqIEBwcm9wZXJ0eSB7YXJyYXl9IGl0ZW1zIC0gYXJyYXkgb2Yge0BsaW5rIFRleHRJdGVtfQogKiBAcHJvcGVydHkge09iamVjdH0gc3R5bGVzIC0ge0BsaW5rIFRleHRTdHlsZXN9IG9iamVjdHMsIGluZGV4ZWQgYnkgZm9udAogKiAgICAgICAgICAgICAgICAgICAgbmFtZS4KICovCgovKioKICogUGFnZSB0ZXh0IGNvbnRlbnQgcGFydC4KICoKICogQHR5cGVkZWYge09iamVjdH0gVGV4dEl0ZW0KICogQHByb3BlcnR5IHtzdHJpbmd9IHN0ciAtIHRleHQgY29udGVudC4KICogQHByb3BlcnR5IHtzdHJpbmd9IGRpciAtIHRleHQgZGlyZWN0aW9uOiAndHRiJywgJ2x0cicgb3IgJ3J0bCcuCiAqIEBwcm9wZXJ0eSB7YXJyYXl9IHRyYW5zZm9ybSAtIHRyYW5zZm9ybWF0aW9uIG1hdHJpeC4KICogQHByb3BlcnR5IHtudW1iZXJ9IHdpZHRoIC0gd2lkdGggaW4gZGV2aWNlIHNwYWNlLgogKiBAcHJvcGVydHkge251bWJlcn0gaGVpZ2h0IC0gaGVpZ2h0IGluIGRldmljZSBzcGFjZS4KICogQHByb3BlcnR5IHtzdHJpbmd9IGZvbnROYW1lIC0gZm9udCBuYW1lIHVzZWQgYnkgcGRmLmpzIGZvciBjb252ZXJ0ZWQgZm9udC4KICovCgovKioKICogVGV4dCBzdHlsZS4KICoKICogQHR5cGVkZWYge09iamVjdH0gVGV4dFN0eWxlCiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBhc2NlbnQgLSBmb250IGFzY2VudC4KICogQHByb3BlcnR5IHtudW1iZXJ9IGRlc2NlbnQgLSBmb250IGRlc2NlbnQuCiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gdmVydGljYWwgLSB0ZXh0IGlzIGluIHZlcnRpY2FsIG1vZGUuCiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBmb250RmFtaWx5IC0gcG9zc2libGUgZm9udCBmYW1pbHkKICovCgovKioKICogUGFnZSByZW5kZXIgcGFyYW1ldGVycy4KICoKICogQHR5cGVkZWYge09iamVjdH0gUmVuZGVyUGFyYW1ldGVycwogKiBAcHJvcGVydHkge09iamVjdH0gY2FudmFzQ29udGV4dCAtIEEgMkQgY29udGV4dCBvZiBhIERPTSBDYW52YXMgb2JqZWN0LgogKiBAcHJvcGVydHkge1BERkpTLlBhZ2VWaWV3cG9ydH0gdmlld3BvcnQgLSBSZW5kZXJpbmcgdmlld3BvcnQgb2J0YWluZWQgYnkKICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxpbmcgb2YgUERGUGFnZS5nZXRWaWV3cG9ydCBtZXRob2QuCiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBpbnRlbnQgLSBSZW5kZXJpbmcgaW50ZW50LCBjYW4gYmUgJ2Rpc3BsYXknIG9yICdwcmludCcKICogICAgICAgICAgICAgICAgICAgIChkZWZhdWx0IHZhbHVlIGlzICdkaXNwbGF5JykuCiAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBpbWFnZUxheWVyIC0gKG9wdGlvbmFsKSBBbiBvYmplY3QgdGhhdCBoYXMgYmVnaW5MYXlvdXQsCiAqICAgICAgICAgICAgICAgICAgICBlbmRMYXlvdXQgYW5kIGFwcGVuZEltYWdlIGZ1bmN0aW9ucy4KICogQHByb3BlcnR5IHtmdW5jdGlvbn0gY29udGludWVDYWxsYmFjayAtIChkZXByZWNhdGVkKSBBIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZQogKiAgICAgICAgICAgICAgICAgICAgICBjYWxsZWQgZWFjaCB0aW1lIHRoZSByZW5kZXJpbmcgaXMgcGF1c2VkLiAgVG8gY29udGludWUKICogICAgICAgICAgICAgICAgICAgICAgcmVuZGVyaW5nIGNhbGwgdGhlIGZ1bmN0aW9uIHRoYXQgaXMgdGhlIGZpcnN0IGFyZ3VtZW50CiAqICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSBjYWxsYmFjay4KICovCgovKioKICogUERGIHBhZ2Ugb3BlcmF0b3IgbGlzdC4KICoKICogQHR5cGVkZWYge09iamVjdH0gUERGT3BlcmF0b3JMaXN0CiAqIEBwcm9wZXJ0eSB7QXJyYXl9IGZuQXJyYXkgLSBBcnJheSBjb250YWluaW5nIHRoZSBvcGVyYXRvciBmdW5jdGlvbnMuCiAqIEBwcm9wZXJ0eSB7QXJyYXl9IGFyZ3NBcnJheSAtIEFycmF5IGNvbnRhaW5pbmcgdGhlIGFyZ3VtZW50cyBvZiB0aGUKICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25zLgogKi8KCi8qKgogKiBQcm94eSB0byBhIFBERlBhZ2UgaW4gdGhlIHdvcmtlciB0aHJlYWQuCiAqIEBjbGFzcwogKi8KdmFyIFBERlBhZ2VQcm94eSA9IChmdW5jdGlvbiBQREZQYWdlUHJveHlDbG9zdXJlKCkgewogIGZ1bmN0aW9uIFBERlBhZ2VQcm94eShwYWdlSW5kZXgsIHBhZ2VJbmZvLCB0cmFuc3BvcnQpIHsKICAgIHRoaXMucGFnZUluZGV4ID0gcGFnZUluZGV4OwogICAgdGhpcy5wYWdlSW5mbyA9IHBhZ2VJbmZvOwogICAgdGhpcy50cmFuc3BvcnQgPSB0cmFuc3BvcnQ7CiAgICB0aGlzLnN0YXRzID0gbmV3IFN0YXRUaW1lcigpOwogICAgdGhpcy5zdGF0cy5lbmFibGVkID0gISFnbG9iYWxTY29wZS5QREZKUy5lbmFibGVTdGF0czsKICAgIHRoaXMuY29tbW9uT2JqcyA9IHRyYW5zcG9ydC5jb21tb25PYmpzOwogICAgdGhpcy5vYmpzID0gbmV3IFBERk9iamVjdHMoKTsKICAgIHRoaXMuY2xlYW51cEFmdGVyUmVuZGVyID0gZmFsc2U7CiAgICB0aGlzLnBlbmRpbmdEZXN0cm95ID0gZmFsc2U7CiAgICB0aGlzLmludGVudFN0YXRlcyA9IHt9OwogIH0KICBQREZQYWdlUHJveHkucHJvdG90eXBlID0gLyoqIEBsZW5kcyBQREZQYWdlUHJveHkucHJvdG90eXBlICovIHsKICAgIC8qKgogICAgICogQHJldHVybiB7bnVtYmVyfSBQYWdlIG51bWJlciBvZiB0aGUgcGFnZS4gRmlyc3QgcGFnZSBpcyAxLgogICAgICovCiAgICBnZXQgcGFnZU51bWJlcigpIHsKICAgICAgcmV0dXJuIHRoaXMucGFnZUluZGV4ICsgMTsKICAgIH0sCiAgICAvKioKICAgICAqIEByZXR1cm4ge251bWJlcn0gVGhlIG51bWJlciBvZiBkZWdyZWVzIHRoZSBwYWdlIGlzIHJvdGF0ZWQgY2xvY2t3aXNlLgogICAgICovCiAgICBnZXQgcm90YXRlKCkgewogICAgICByZXR1cm4gdGhpcy5wYWdlSW5mby5yb3RhdGU7CiAgICB9LAogICAgLyoqCiAgICAgKiBAcmV0dXJuIHtPYmplY3R9IFRoZSByZWZlcmVuY2UgdGhhdCBwb2ludHMgdG8gdGhpcyBwYWdlLiBJdCBoYXMgJ251bScgYW5kCiAgICAgKiAnZ2VuJyBwcm9wZXJ0aWVzLgogICAgICovCiAgICBnZXQgcmVmKCkgewogICAgICByZXR1cm4gdGhpcy5wYWdlSW5mby5yZWY7CiAgICB9LAogICAgLyoqCiAgICAgKiBAcmV0dXJuIHtBcnJheX0gQW4gYXJyYXkgb2YgdGhlIHZpc2libGUgcG9ydGlvbiBvZiB0aGUgUERGIHBhZ2UgaW4gdGhlCiAgICAgKiB1c2VyIHNwYWNlIHVuaXRzIC0gW3gxLCB5MSwgeDIsIHkyXS4KICAgICAqLwogICAgZ2V0IHZpZXcoKSB7CiAgICAgIHJldHVybiB0aGlzLnBhZ2VJbmZvLnZpZXc7CiAgICB9LAogICAgLyoqCiAgICAgKiBAcGFyYW0ge251bWJlcn0gc2NhbGUgVGhlIGRlc2lyZWQgc2NhbGUgb2YgdGhlIHZpZXdwb3J0LgogICAgICogQHBhcmFtIHtudW1iZXJ9IHJvdGF0ZSBEZWdyZWVzIHRvIHJvdGF0ZSB0aGUgdmlld3BvcnQuIElmIG9taXR0ZWQgdGhpcwogICAgICogZGVmYXVsdHMgdG8gdGhlIHBhZ2Ugcm90YXRpb24uCiAgICAgKiBAcmV0dXJuIHtQREZKUy5QYWdlVmlld3BvcnR9IENvbnRhaW5zICd3aWR0aCcgYW5kICdoZWlnaHQnIHByb3BlcnRpZXMKICAgICAqIGFsb25nIHdpdGggdHJhbnNmb3JtcyByZXF1aXJlZCBmb3IgcmVuZGVyaW5nLgogICAgICovCiAgICBnZXRWaWV3cG9ydDogZnVuY3Rpb24gUERGUGFnZVByb3h5X2dldFZpZXdwb3J0KHNjYWxlLCByb3RhdGUpIHsKICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSB7CiAgICAgICAgcm90YXRlID0gdGhpcy5yb3RhdGU7CiAgICAgIH0KICAgICAgcmV0dXJuIG5ldyBQREZKUy5QYWdlVmlld3BvcnQodGhpcy52aWV3LCBzY2FsZSwgcm90YXRlLCAwLCAwKTsKICAgIH0sCiAgICAvKioKICAgICAqIEByZXR1cm4ge1Byb21pc2V9IEEgcHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIHdpdGggYW4ge0FycmF5fSBvZiB0aGUKICAgICAqIGFubm90YXRpb24gb2JqZWN0cy4KICAgICAqLwogICAgZ2V0QW5ub3RhdGlvbnM6IGZ1bmN0aW9uIFBERlBhZ2VQcm94eV9nZXRBbm5vdGF0aW9ucygpIHsKICAgICAgaWYgKHRoaXMuYW5ub3RhdGlvbnNQcm9taXNlKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuYW5ub3RhdGlvbnNQcm9taXNlOwogICAgICB9CgogICAgICB2YXIgcHJvbWlzZSA9IHRoaXMudHJhbnNwb3J0LmdldEFubm90YXRpb25zKHRoaXMucGFnZUluZGV4KTsKICAgICAgdGhpcy5hbm5vdGF0aW9uc1Byb21pc2UgPSBwcm9taXNlOwogICAgICByZXR1cm4gcHJvbWlzZTsKICAgIH0sCiAgICAvKioKICAgICAqIEJlZ2lucyB0aGUgcHJvY2VzcyBvZiByZW5kZXJpbmcgYSBwYWdlIHRvIHRoZSBkZXNpcmVkIGNvbnRleHQuCiAgICAgKiBAcGFyYW0ge1JlbmRlclBhcmFtZXRlcnN9IHBhcmFtcyBQYWdlIHJlbmRlciBwYXJhbWV0ZXJzLgogICAgICogQHJldHVybiB7UmVuZGVyVGFza30gQW4gb2JqZWN0IHRoYXQgY29udGFpbnMgdGhlIHByb21pc2UsIHdoaWNoCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICBpcyByZXNvbHZlZCB3aGVuIHRoZSBwYWdlIGZpbmlzaGVzIHJlbmRlcmluZy4KICAgICAqLwogICAgcmVuZGVyOiBmdW5jdGlvbiBQREZQYWdlUHJveHlfcmVuZGVyKHBhcmFtcykgewogICAgICB2YXIgc3RhdHMgPSB0aGlzLnN0YXRzOwogICAgICBzdGF0cy50aW1lKCdPdmVyYWxsJyk7CgogICAgICAvLyBJZiB0aGVyZSB3YXMgYSBwZW5kaW5nIGRlc3Ryb3kgY2FuY2VsIGl0IHNvIG5vIGNsZWFudXAgaGFwcGVucyBkdXJpbmcKICAgICAgLy8gdGhpcyBjYWxsIHRvIHJlbmRlci4KICAgICAgdGhpcy5wZW5kaW5nRGVzdHJveSA9IGZhbHNlOwoKICAgICAgdmFyIHJlbmRlcmluZ0ludGVudCA9IChwYXJhbXMuaW50ZW50ID09PSAncHJpbnQnID8gJ3ByaW50JyA6ICdkaXNwbGF5Jyk7CgogICAgICBpZiAoIXRoaXMuaW50ZW50U3RhdGVzW3JlbmRlcmluZ0ludGVudF0pIHsKICAgICAgICB0aGlzLmludGVudFN0YXRlc1tyZW5kZXJpbmdJbnRlbnRdID0ge307CiAgICAgIH0KICAgICAgdmFyIGludGVudFN0YXRlID0gdGhpcy5pbnRlbnRTdGF0ZXNbcmVuZGVyaW5nSW50ZW50XTsKCiAgICAgIC8vIElmIHRoZXJlJ3Mgbm8gZGlzcGxheVJlYWR5Q2FwYWJpbGl0eSB5ZXQsIHRoZW4gdGhlIG9wZXJhdG9yTGlzdAogICAgICAvLyB3YXMgbmV2ZXIgcmVxdWVzdGVkIGJlZm9yZS4gTWFrZSB0aGUgcmVxdWVzdCBhbmQgY3JlYXRlIHRoZSBwcm9taXNlLgogICAgICBpZiAoIWludGVudFN0YXRlLmRpc3BsYXlSZWFkeUNhcGFiaWxpdHkpIHsKICAgICAgICBpbnRlbnRTdGF0ZS5yZWNlaXZpbmdPcGVyYXRvckxpc3QgPSB0cnVlOwogICAgICAgIGludGVudFN0YXRlLmRpc3BsYXlSZWFkeUNhcGFiaWxpdHkgPSBjcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSgpOwogICAgICAgIGludGVudFN0YXRlLm9wZXJhdG9yTGlzdCA9IHsKICAgICAgICAgIGZuQXJyYXk6IFtdLAogICAgICAgICAgYXJnc0FycmF5OiBbXSwKICAgICAgICAgIGxhc3RDaHVuazogZmFsc2UKICAgICAgICB9OwoKICAgICAgICB0aGlzLnN0YXRzLnRpbWUoJ1BhZ2UgUmVxdWVzdCcpOwogICAgICAgIHRoaXMudHJhbnNwb3J0Lm1lc3NhZ2VIYW5kbGVyLnNlbmQoJ1JlbmRlclBhZ2VSZXF1ZXN0JywgewogICAgICAgICAgcGFnZUluZGV4OiB0aGlzLnBhZ2VOdW1iZXIgLSAxLAogICAgICAgICAgaW50ZW50OiByZW5kZXJpbmdJbnRlbnQKICAgICAgICB9KTsKICAgICAgfQoKICAgICAgdmFyIGludGVybmFsUmVuZGVyVGFzayA9IG5ldyBJbnRlcm5hbFJlbmRlclRhc2soY29tcGxldGUsIHBhcmFtcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vYmpzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbk9ianMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVudFN0YXRlLm9wZXJhdG9yTGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdlTnVtYmVyKTsKICAgICAgaWYgKCFpbnRlbnRTdGF0ZS5yZW5kZXJUYXNrcykgewogICAgICAgIGludGVudFN0YXRlLnJlbmRlclRhc2tzID0gW107CiAgICAgIH0KICAgICAgaW50ZW50U3RhdGUucmVuZGVyVGFza3MucHVzaChpbnRlcm5hbFJlbmRlclRhc2spOwogICAgICB2YXIgcmVuZGVyVGFzayA9IGludGVybmFsUmVuZGVyVGFzay50YXNrOwoKICAgICAgLy8gT2Jzb2xldGUgcGFyYW1ldGVyIHN1cHBvcnQKICAgICAgaWYgKHBhcmFtcy5jb250aW51ZUNhbGxiYWNrKSB7CiAgICAgICAgcmVuZGVyVGFzay5vbkNvbnRpbnVlID0gcGFyYW1zLmNvbnRpbnVlQ2FsbGJhY2s7CiAgICAgIH0KCiAgICAgIHZhciBzZWxmID0gdGhpczsKICAgICAgaW50ZW50U3RhdGUuZGlzcGxheVJlYWR5Q2FwYWJpbGl0eS5wcm9taXNlLnRoZW4oCiAgICAgICAgZnVuY3Rpb24gcGFnZURpc3BsYXlSZWFkeVByb21pc2UodHJhbnNwYXJlbmN5KSB7CiAgICAgICAgICBpZiAoc2VsZi5wZW5kaW5nRGVzdHJveSkgewogICAgICAgICAgICBjb21wbGV0ZSgpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9CiAgICAgICAgICBzdGF0cy50aW1lKCdSZW5kZXJpbmcnKTsKICAgICAgICAgIGludGVybmFsUmVuZGVyVGFzay5pbml0YWxpemVHcmFwaGljcyh0cmFuc3BhcmVuY3kpOwogICAgICAgICAgaW50ZXJuYWxSZW5kZXJUYXNrLm9wZXJhdG9yTGlzdENoYW5nZWQoKTsKICAgICAgICB9LAogICAgICAgIGZ1bmN0aW9uIHBhZ2VEaXNwbGF5UmVhZFByb21pc2VFcnJvcihyZWFzb24pIHsKICAgICAgICAgIGNvbXBsZXRlKHJlYXNvbik7CiAgICAgICAgfQogICAgICApOwoKICAgICAgZnVuY3Rpb24gY29tcGxldGUoZXJyb3IpIHsKICAgICAgICB2YXIgaSA9IGludGVudFN0YXRlLnJlbmRlclRhc2tzLmluZGV4T2YoaW50ZXJuYWxSZW5kZXJUYXNrKTsKICAgICAgICBpZiAoaSA+PSAwKSB7CiAgICAgICAgICBpbnRlbnRTdGF0ZS5yZW5kZXJUYXNrcy5zcGxpY2UoaSwgMSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoc2VsZi5jbGVhbnVwQWZ0ZXJSZW5kZXIpIHsKICAgICAgICAgIHNlbGYucGVuZGluZ0Rlc3Ryb3kgPSB0cnVlOwogICAgICAgIH0KICAgICAgICBzZWxmLl90cnlEZXN0cm95KCk7CgogICAgICAgIGlmIChlcnJvcikgewogICAgICAgICAgaW50ZXJuYWxSZW5kZXJUYXNrLmNhcGFiaWxpdHkucmVqZWN0KGVycm9yKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgaW50ZXJuYWxSZW5kZXJUYXNrLmNhcGFiaWxpdHkucmVzb2x2ZSgpOwogICAgICAgIH0KICAgICAgICBzdGF0cy50aW1lRW5kKCdSZW5kZXJpbmcnKTsKICAgICAgICBzdGF0cy50aW1lRW5kKCdPdmVyYWxsJyk7CiAgICAgIH0KCiAgICAgIHJldHVybiByZW5kZXJUYXNrOwogICAgfSwKCiAgICAvKioKICAgICAqIEByZXR1cm4ge1Byb21pc2V9IEEgcHJvbWlzZSByZXNvbHZlZCB3aXRoIGFuIHtAbGluayBQREZPcGVyYXRvckxpc3R9CiAgICAgKiBvYmplY3QgdGhhdCByZXByZXNlbnRzIHBhZ2UncyBvcGVyYXRvciBsaXN0LgogICAgICovCiAgICBnZXRPcGVyYXRvckxpc3Q6IGZ1bmN0aW9uIFBERlBhZ2VQcm94eV9nZXRPcGVyYXRvckxpc3QoKSB7CiAgICAgIGZ1bmN0aW9uIG9wZXJhdG9yTGlzdENoYW5nZWQoKSB7CiAgICAgICAgaWYgKGludGVudFN0YXRlLm9wZXJhdG9yTGlzdC5sYXN0Q2h1bmspIHsKICAgICAgICAgIGludGVudFN0YXRlLm9wTGlzdFJlYWRDYXBhYmlsaXR5LnJlc29sdmUoaW50ZW50U3RhdGUub3BlcmF0b3JMaXN0KTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIHZhciByZW5kZXJpbmdJbnRlbnQgPSAnb3BsaXN0JzsKICAgICAgaWYgKCF0aGlzLmludGVudFN0YXRlc1tyZW5kZXJpbmdJbnRlbnRdKSB7CiAgICAgICAgdGhpcy5pbnRlbnRTdGF0ZXNbcmVuZGVyaW5nSW50ZW50XSA9IHt9OwogICAgICB9CiAgICAgIHZhciBpbnRlbnRTdGF0ZSA9IHRoaXMuaW50ZW50U3RhdGVzW3JlbmRlcmluZ0ludGVudF07CgogICAgICBpZiAoIWludGVudFN0YXRlLm9wTGlzdFJlYWRDYXBhYmlsaXR5KSB7CiAgICAgICAgdmFyIG9wTGlzdFRhc2sgPSB7fTsKICAgICAgICBvcExpc3RUYXNrLm9wZXJhdG9yTGlzdENoYW5nZWQgPSBvcGVyYXRvckxpc3RDaGFuZ2VkOwogICAgICAgIGludGVudFN0YXRlLnJlY2VpdmluZ09wZXJhdG9yTGlzdCA9IHRydWU7CiAgICAgICAgaW50ZW50U3RhdGUub3BMaXN0UmVhZENhcGFiaWxpdHkgPSBjcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSgpOwogICAgICAgIGludGVudFN0YXRlLnJlbmRlclRhc2tzID0gW107CiAgICAgICAgaW50ZW50U3RhdGUucmVuZGVyVGFza3MucHVzaChvcExpc3RUYXNrKTsKICAgICAgICBpbnRlbnRTdGF0ZS5vcGVyYXRvckxpc3QgPSB7CiAgICAgICAgICBmbkFycmF5OiBbXSwKICAgICAgICAgIGFyZ3NBcnJheTogW10sCiAgICAgICAgICBsYXN0Q2h1bms6IGZhbHNlCiAgICAgICAgfTsKCiAgICAgICAgdGhpcy50cmFuc3BvcnQubWVzc2FnZUhhbmRsZXIuc2VuZCgnUmVuZGVyUGFnZVJlcXVlc3QnLCB7CiAgICAgICAgICBwYWdlSW5kZXg6IHRoaXMucGFnZUluZGV4LAogICAgICAgICAgaW50ZW50OiByZW5kZXJpbmdJbnRlbnQKICAgICAgICB9KTsKICAgICAgfQogICAgICByZXR1cm4gaW50ZW50U3RhdGUub3BMaXN0UmVhZENhcGFiaWxpdHkucHJvbWlzZTsKICAgIH0sCgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHtQcm9taXNlfSBUaGF0IGlzIHJlc29sdmVkIGEge0BsaW5rIFRleHRDb250ZW50fQogICAgICogb2JqZWN0IHRoYXQgcmVwcmVzZW50IHRoZSBwYWdlIHRleHQgY29udGVudC4KICAgICAqLwogICAgZ2V0VGV4dENvbnRlbnQ6IGZ1bmN0aW9uIFBERlBhZ2VQcm94eV9nZXRUZXh0Q29udGVudCgpIHsKICAgICAgcmV0dXJuIHRoaXMudHJhbnNwb3J0Lm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgnR2V0VGV4dENvbnRlbnQnLCB7CiAgICAgICAgcGFnZUluZGV4OiB0aGlzLnBhZ2VOdW1iZXIgLSAxCiAgICAgIH0pOwogICAgfSwKICAgIC8qKgogICAgICogRGVzdHJveXMgcmVzb3VyY2VzIGFsbG9jYXRlZCBieSB0aGUgcGFnZS4KICAgICAqLwogICAgZGVzdHJveTogZnVuY3Rpb24gUERGUGFnZVByb3h5X2Rlc3Ryb3koKSB7CiAgICAgIHRoaXMucGVuZGluZ0Rlc3Ryb3kgPSB0cnVlOwogICAgICB0aGlzLl90cnlEZXN0cm95KCk7CiAgICB9LAogICAgLyoqCiAgICAgKiBGb3IgaW50ZXJuYWwgdXNlIG9ubHkuIEF0dGVtcHRzIHRvIGNsZWFuIHVwIGlmIHJlbmRlcmluZyBpcyBpbiBhIHN0YXRlCiAgICAgKiB3aGVyZSB0aGF0J3MgcG9zc2libGUuCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIF90cnlEZXN0cm95OiBmdW5jdGlvbiBQREZQYWdlUHJveHlfX2Rlc3Ryb3koKSB7CiAgICAgIGlmICghdGhpcy5wZW5kaW5nRGVzdHJveSB8fAogICAgICAgICAgT2JqZWN0LmtleXModGhpcy5pbnRlbnRTdGF0ZXMpLnNvbWUoZnVuY3Rpb24oaW50ZW50KSB7CiAgICAgICAgICAgIHZhciBpbnRlbnRTdGF0ZSA9IHRoaXMuaW50ZW50U3RhdGVzW2ludGVudF07CiAgICAgICAgICAgIHJldHVybiAoaW50ZW50U3RhdGUucmVuZGVyVGFza3MubGVuZ3RoICE9PSAwIHx8CiAgICAgICAgICAgICAgICAgICAgaW50ZW50U3RhdGUucmVjZWl2aW5nT3BlcmF0b3JMaXN0KTsKICAgICAgICAgIH0sIHRoaXMpKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICBPYmplY3Qua2V5cyh0aGlzLmludGVudFN0YXRlcykuZm9yRWFjaChmdW5jdGlvbihpbnRlbnQpIHsKICAgICAgICBkZWxldGUgdGhpcy5pbnRlbnRTdGF0ZXNbaW50ZW50XTsKICAgICAgfSwgdGhpcyk7CiAgICAgIHRoaXMub2Jqcy5jbGVhcigpOwogICAgICB0aGlzLmFubm90YXRpb25zUHJvbWlzZSA9IG51bGw7CiAgICAgIHRoaXMucGVuZGluZ0Rlc3Ryb3kgPSBmYWxzZTsKICAgIH0sCiAgICAvKioKICAgICAqIEZvciBpbnRlcm5hbCB1c2Ugb25seS4KICAgICAqIEBpZ25vcmUKICAgICAqLwogICAgX3N0YXJ0UmVuZGVyUGFnZTogZnVuY3Rpb24gUERGUGFnZVByb3h5X3N0YXJ0UmVuZGVyUGFnZSh0cmFuc3BhcmVuY3ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVudCkgewogICAgICB2YXIgaW50ZW50U3RhdGUgPSB0aGlzLmludGVudFN0YXRlc1tpbnRlbnRdOwogICAgICAvLyBUT0RPIFJlZmFjdG9yIFJlbmRlclBhZ2VSZXF1ZXN0IHRvIHNlcGFyYXRlIHJlbmRlcmluZwogICAgICAvLyBhbmQgb3BlcmF0b3IgbGlzdCBsb2dpYwogICAgICBpZiAoaW50ZW50U3RhdGUuZGlzcGxheVJlYWR5Q2FwYWJpbGl0eSkgewogICAgICAgIGludGVudFN0YXRlLmRpc3BsYXlSZWFkeUNhcGFiaWxpdHkucmVzb2x2ZSh0cmFuc3BhcmVuY3kpOwogICAgICB9CiAgICB9LAogICAgLyoqCiAgICAgKiBGb3IgaW50ZXJuYWwgdXNlIG9ubHkuCiAgICAgKiBAaWdub3JlCiAgICAgKi8KICAgIF9yZW5kZXJQYWdlQ2h1bms6IGZ1bmN0aW9uIFBERlBhZ2VQcm94eV9yZW5kZXJQYWdlQ2h1bmsob3BlcmF0b3JMaXN0Q2h1bmssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVudCkgewogICAgICB2YXIgaW50ZW50U3RhdGUgPSB0aGlzLmludGVudFN0YXRlc1tpbnRlbnRdOwogICAgICB2YXIgaSwgaWk7CiAgICAgIC8vIEFkZCB0aGUgbmV3IGNodW5rIHRvIHRoZSBjdXJyZW50IG9wZXJhdG9yIGxpc3QuCiAgICAgIGZvciAoaSA9IDAsIGlpID0gb3BlcmF0b3JMaXN0Q2h1bmsubGVuZ3RoOyBpIDwgaWk7IGkrKykgewogICAgICAgIGludGVudFN0YXRlLm9wZXJhdG9yTGlzdC5mbkFycmF5LnB1c2gob3BlcmF0b3JMaXN0Q2h1bmsuZm5BcnJheVtpXSk7CiAgICAgICAgaW50ZW50U3RhdGUub3BlcmF0b3JMaXN0LmFyZ3NBcnJheS5wdXNoKAogICAgICAgICAgb3BlcmF0b3JMaXN0Q2h1bmsuYXJnc0FycmF5W2ldKTsKICAgICAgfQogICAgICBpbnRlbnRTdGF0ZS5vcGVyYXRvckxpc3QubGFzdENodW5rID0gb3BlcmF0b3JMaXN0Q2h1bmsubGFzdENodW5rOwoKICAgICAgLy8gTm90aWZ5IGFsbCB0aGUgcmVuZGVyaW5nIHRhc2tzIHRoZXJlIGFyZSBtb3JlIG9wZXJhdG9ycyB0byBiZSBjb25zdW1lZC4KICAgICAgZm9yIChpID0gMDsgaSA8IGludGVudFN0YXRlLnJlbmRlclRhc2tzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgaW50ZW50U3RhdGUucmVuZGVyVGFza3NbaV0ub3BlcmF0b3JMaXN0Q2hhbmdlZCgpOwogICAgICB9CgogICAgICBpZiAob3BlcmF0b3JMaXN0Q2h1bmsubGFzdENodW5rKSB7CiAgICAgICAgaW50ZW50U3RhdGUucmVjZWl2aW5nT3BlcmF0b3JMaXN0ID0gZmFsc2U7CiAgICAgICAgdGhpcy5fdHJ5RGVzdHJveSgpOwogICAgICB9CiAgICB9CiAgfTsKICByZXR1cm4gUERGUGFnZVByb3h5Owp9KSgpOwoKLyoqCiAqIEZvciBpbnRlcm5hbCB1c2Ugb25seS4KICogQGlnbm9yZQogKi8KdmFyIFdvcmtlclRyYW5zcG9ydCA9IChmdW5jdGlvbiBXb3JrZXJUcmFuc3BvcnRDbG9zdXJlKCkgewogIGZ1bmN0aW9uIFdvcmtlclRyYW5zcG9ydCh3b3JrZXJJbml0aWFsaXplZENhcGFiaWxpdHksIHBkZkRhdGFSYW5nZVRyYW5zcG9ydCkgewogICAgdGhpcy5wZGZEYXRhUmFuZ2VUcmFuc3BvcnQgPSBwZGZEYXRhUmFuZ2VUcmFuc3BvcnQ7CiAgICB0aGlzLndvcmtlckluaXRpYWxpemVkQ2FwYWJpbGl0eSA9IHdvcmtlckluaXRpYWxpemVkQ2FwYWJpbGl0eTsKICAgIHRoaXMuY29tbW9uT2JqcyA9IG5ldyBQREZPYmplY3RzKCk7CgogICAgdGhpcy5sb2FkaW5nVGFzayA9IG51bGw7CgogICAgdGhpcy5wYWdlQ2FjaGUgPSBbXTsKICAgIHRoaXMucGFnZVByb21pc2VzID0gW107CiAgICB0aGlzLmRvd25sb2FkSW5mb0NhcGFiaWxpdHkgPSBjcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSgpOwoKICAgIC8vIElmIHdvcmtlciBzdXBwb3J0IGlzbid0IGRpc2FibGVkIGV4cGxpY2l0IGFuZCB0aGUgYnJvd3NlciBoYXMgd29ya2VyCiAgICAvLyBzdXBwb3J0LCBjcmVhdGUgYSBuZXcgd2ViIHdvcmtlciBhbmQgdGVzdCBpZiBpdC90aGUgYnJvd3NlciBmdWxsZmlsbHMKICAgIC8vIGFsbCByZXF1aXJlbWVudHMgdG8gcnVuIHBhcnRzIG9mIHBkZi5qcyBpbiBhIHdlYiB3b3JrZXIuCiAgICAvLyBSaWdodCBub3csIHRoZSByZXF1aXJlbWVudCBpcywgdGhhdCBhbiBVaW50OEFycmF5IGlzIHN0aWxsIGFuIFVpbnQ4QXJyYXkKICAgIC8vIGFzIGl0IGFycml2ZXMgb24gdGhlIHdvcmtlci4gQ2hyb21lIGFkZGVkIHRoaXMgd2l0aCB2ZXJzaW9uIDE1LgovLyNpZiAhU0lOR0xFX0ZJTEUKICAgIGlmICghZ2xvYmFsU2NvcGUuUERGSlMuZGlzYWJsZVdvcmtlciAmJiB0eXBlb2YgV29ya2VyICE9PSAndW5kZWZpbmVkJykgewogICAgICB2YXIgd29ya2VyU3JjID0gUERGSlMud29ya2VyU3JjOwogICAgICBpZiAoIXdvcmtlclNyYykgewogICAgICAgIGVycm9yKCdObyBQREZKUy53b3JrZXJTcmMgc3BlY2lmaWVkJyk7CiAgICAgIH0KCiAgICAgIHRyeSB7CiAgICAgICAgLy8gU29tZSB2ZXJzaW9ucyBvZiBGRiBjYW4ndCBjcmVhdGUgYSB3b3JrZXIgb24gbG9jYWxob3N0LCBzZWU6CiAgICAgICAgLy8gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjgzMjgwCiAgICAgICAgdmFyIHdvcmtlciA9IG5ldyBXb3JrZXIod29ya2VyU3JjKTsKICAgICAgICB2YXIgbWVzc2FnZUhhbmRsZXIgPSBuZXcgTWVzc2FnZUhhbmRsZXIoJ21haW4nLCB3b3JrZXIpOwogICAgICAgIHRoaXMubWVzc2FnZUhhbmRsZXIgPSBtZXNzYWdlSGFuZGxlcjsKCiAgICAgICAgbWVzc2FnZUhhbmRsZXIub24oJ3Rlc3QnLCBmdW5jdGlvbiB0cmFuc3BvcnRUZXN0KGRhdGEpIHsKICAgICAgICAgIHZhciBzdXBwb3J0VHlwZWRBcnJheSA9IGRhdGEgJiYgZGF0YS5zdXBwb3J0VHlwZWRBcnJheTsKICAgICAgICAgIGlmIChzdXBwb3J0VHlwZWRBcnJheSkgewogICAgICAgICAgICB0aGlzLndvcmtlciA9IHdvcmtlcjsKICAgICAgICAgICAgaWYgKCFkYXRhLnN1cHBvcnRUcmFuc2ZlcnMpIHsKICAgICAgICAgICAgICBQREZKUy5wb3N0TWVzc2FnZVRyYW5zZmVycyA9IGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRoaXMuc2V0dXBNZXNzYWdlSGFuZGxlcihtZXNzYWdlSGFuZGxlcik7CiAgICAgICAgICAgIHdvcmtlckluaXRpYWxpemVkQ2FwYWJpbGl0eS5yZXNvbHZlKCk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aGlzLnNldHVwRmFrZVdvcmtlcigpOwogICAgICAgICAgfQogICAgICAgIH0uYmluZCh0aGlzKSk7CgogICAgICAgIHZhciB0ZXN0T2JqID0gbmV3IFVpbnQ4QXJyYXkoW1BERkpTLnBvc3RNZXNzYWdlVHJhbnNmZXJzID8gMjU1IDogMF0pOwogICAgICAgIC8vIFNvbWUgdmVyc2lvbnMgb2YgT3BlcmEgdGhyb3cgYSBEQVRBX0NMT05FX0VSUiBvbiBzZXJpYWxpemluZyB0aGUKICAgICAgICAvLyB0eXBlZCBhcnJheS4gQWxzbywgY2hlY2tpbmcgaWYgd2UgY2FuIHVzZSB0cmFuc2ZlcnMuCiAgICAgICAgdHJ5IHsKICAgICAgICAgIG1lc3NhZ2VIYW5kbGVyLnNlbmQoJ3Rlc3QnLCB0ZXN0T2JqLCBbdGVzdE9iai5idWZmZXJdKTsKICAgICAgICB9IGNhdGNoIChleCkgewogICAgICAgICAgaW5mbygnQ2Fubm90IHVzZSBwb3N0TWVzc2FnZSB0cmFuc2ZlcnMnKTsKICAgICAgICAgIHRlc3RPYmpbMF0gPSAwOwogICAgICAgICAgbWVzc2FnZUhhbmRsZXIuc2VuZCgndGVzdCcsIHRlc3RPYmopOwogICAgICAgIH0KICAgICAgICByZXR1cm47CiAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICBpbmZvKCdUaGUgd29ya2VyIGhhcyBiZWVuIGRpc2FibGVkLicpOwogICAgICB9CiAgICB9Ci8vI2VuZGlmCiAgICAvLyBFaXRoZXIgd29ya2VycyBhcmUgZGlzYWJsZWQsIG5vdCBzdXBwb3J0ZWQgb3IgaGF2ZSB0aHJvd24gYW4gZXhjZXB0aW9uLgogICAgLy8gVGh1cywgd2UgZmFsbGJhY2sgdG8gYSBmYWtlZCB3b3JrZXIuCiAgICB0aGlzLnNldHVwRmFrZVdvcmtlcigpOwogIH0KICBXb3JrZXJUcmFuc3BvcnQucHJvdG90eXBlID0gewogICAgZGVzdHJveTogZnVuY3Rpb24gV29ya2VyVHJhbnNwb3J0X2Rlc3Ryb3koKSB7CiAgICAgIHRoaXMucGFnZUNhY2hlID0gW107CiAgICAgIHRoaXMucGFnZVByb21pc2VzID0gW107CiAgICAgIHZhciBzZWxmID0gdGhpczsKICAgICAgdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoJ1Rlcm1pbmF0ZScsIG51bGwpLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgIEZvbnRMb2FkZXIuY2xlYXIoKTsKICAgICAgICBpZiAoc2VsZi53b3JrZXIpIHsKICAgICAgICAgIHNlbGYud29ya2VyLnRlcm1pbmF0ZSgpOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9LAoKICAgIHNldHVwRmFrZVdvcmtlcjogZnVuY3Rpb24gV29ya2VyVHJhbnNwb3J0X3NldHVwRmFrZVdvcmtlcigpIHsKICAgICAgZ2xvYmFsU2NvcGUuUERGSlMuZGlzYWJsZVdvcmtlciA9IHRydWU7CgogICAgICBpZiAoIVBERkpTLmZha2VXb3JrZXJGaWxlc0xvYWRlZENhcGFiaWxpdHkpIHsKICAgICAgICBQREZKUy5mYWtlV29ya2VyRmlsZXNMb2FkZWRDYXBhYmlsaXR5ID0gY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkoKTsKICAgICAgICAvLyBJbiB0aGUgZGV2ZWxvcGVyIGJ1aWxkIGxvYWQgd29ya2VyX2xvYWRlciB3aGljaCBpbiB0dXJuIGxvYWRzIGFsbCB0aGUKICAgICAgICAvLyBvdGhlciBmaWxlcyBhbmQgcmVzb2x2ZXMgdGhlIHByb21pc2UuIEluIHByb2R1Y3Rpb24gb25seSB0aGUKICAgICAgICAvLyBwZGYud29ya2VyLmpzIGZpbGUgaXMgbmVlZGVkLgovLyNpZiAhUFJPRFVDVElPTgogICAgICAgIFV0aWwubG9hZFNjcmlwdChQREZKUy53b3JrZXJTcmMpOwovLyNlbmRpZgovLyNpZiBQUk9EVUNUSU9OICYmIFNJTkdMRV9GSUxFCi8vICAgICAgUERGSlMuZmFrZVdvcmtlckZpbGVzTG9hZGVkQ2FwYWJpbGl0eS5yZXNvbHZlKCk7Ci8vI2VuZGlmCi8vI2lmIFBST0RVQ1RJT04gJiYgIVNJTkdMRV9GSUxFCi8vICAgICAgVXRpbC5sb2FkU2NyaXB0KFBERkpTLndvcmtlclNyYywgZnVuY3Rpb24oKSB7Ci8vICAgICAgICBQREZKUy5mYWtlV29ya2VyRmlsZXNMb2FkZWRDYXBhYmlsaXR5LnJlc29sdmUoKTsKLy8gICAgICB9KTsKLy8jZW5kaWYKICAgICAgfQogICAgICBQREZKUy5mYWtlV29ya2VyRmlsZXNMb2FkZWRDYXBhYmlsaXR5LnByb21pc2UudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgd2FybignU2V0dGluZyB1cCBmYWtlIHdvcmtlci4nKTsKICAgICAgICAvLyBJZiB3ZSBkb24ndCB1c2UgYSB3b3JrZXIsIGp1c3QgcG9zdC9zZW5kTWVzc2FnZSB0byB0aGUgbWFpbiB0aHJlYWQuCiAgICAgICAgdmFyIGZha2VXb3JrZXIgPSB7CiAgICAgICAgICBwb3N0TWVzc2FnZTogZnVuY3Rpb24gV29ya2VyVHJhbnNwb3J0X3Bvc3RNZXNzYWdlKG9iaikgewogICAgICAgICAgICBmYWtlV29ya2VyLm9ubWVzc2FnZSh7ZGF0YTogb2JqfSk7CiAgICAgICAgICB9LAogICAgICAgICAgdGVybWluYXRlOiBmdW5jdGlvbiBXb3JrZXJUcmFuc3BvcnRfdGVybWluYXRlKCkge30KICAgICAgICB9OwoKICAgICAgICB2YXIgbWVzc2FnZUhhbmRsZXIgPSBuZXcgTWVzc2FnZUhhbmRsZXIoJ21haW4nLCBmYWtlV29ya2VyKTsKICAgICAgICB0aGlzLnNldHVwTWVzc2FnZUhhbmRsZXIobWVzc2FnZUhhbmRsZXIpOwoKICAgICAgICAvLyBJZiB0aGUgbWFpbiB0aHJlYWQgaXMgb3VyIHdvcmtlciwgc2V0dXAgdGhlIGhhbmRsaW5nIGZvciB0aGUgbWVzc2FnZXMKICAgICAgICAvLyB0aGUgbWFpbiB0aHJlYWQgc2VuZHMgdG8gaXQgc2VsZi4KICAgICAgICBQREZKUy5Xb3JrZXJNZXNzYWdlSGFuZGxlci5zZXR1cChtZXNzYWdlSGFuZGxlcik7CgogICAgICAgIHRoaXMud29ya2VySW5pdGlhbGl6ZWRDYXBhYmlsaXR5LnJlc29sdmUoKTsKICAgICAgfS5iaW5kKHRoaXMpKTsKICAgIH0sCgogICAgc2V0dXBNZXNzYWdlSGFuZGxlcjoKICAgICAgZnVuY3Rpb24gV29ya2VyVHJhbnNwb3J0X3NldHVwTWVzc2FnZUhhbmRsZXIobWVzc2FnZUhhbmRsZXIpIHsKICAgICAgdGhpcy5tZXNzYWdlSGFuZGxlciA9IG1lc3NhZ2VIYW5kbGVyOwoKICAgICAgZnVuY3Rpb24gdXBkYXRlUGFzc3dvcmQocGFzc3dvcmQpIHsKICAgICAgICBtZXNzYWdlSGFuZGxlci5zZW5kKCdVcGRhdGVQYXNzd29yZCcsIHBhc3N3b3JkKTsKICAgICAgfQoKICAgICAgdmFyIHBkZkRhdGFSYW5nZVRyYW5zcG9ydCA9IHRoaXMucGRmRGF0YVJhbmdlVHJhbnNwb3J0OwogICAgICBpZiAocGRmRGF0YVJhbmdlVHJhbnNwb3J0KSB7CiAgICAgICAgcGRmRGF0YVJhbmdlVHJhbnNwb3J0LmFkZFJhbmdlTGlzdGVuZXIoZnVuY3Rpb24oYmVnaW4sIGNodW5rKSB7CiAgICAgICAgICBtZXNzYWdlSGFuZGxlci5zZW5kKCdPbkRhdGFSYW5nZScsIHsKICAgICAgICAgICAgYmVnaW46IGJlZ2luLAogICAgICAgICAgICBjaHVuazogY2h1bmsKICAgICAgICAgIH0pOwogICAgICAgIH0pOwoKICAgICAgICBwZGZEYXRhUmFuZ2VUcmFuc3BvcnQuYWRkUHJvZ3Jlc3NMaXN0ZW5lcihmdW5jdGlvbihsb2FkZWQpIHsKICAgICAgICAgIG1lc3NhZ2VIYW5kbGVyLnNlbmQoJ09uRGF0YVByb2dyZXNzJywgewogICAgICAgICAgICBsb2FkZWQ6IGxvYWRlZAogICAgICAgICAgfSk7CiAgICAgICAgfSk7CgogICAgICAgIHBkZkRhdGFSYW5nZVRyYW5zcG9ydC5hZGRQcm9ncmVzc2l2ZVJlYWRMaXN0ZW5lcihmdW5jdGlvbihjaHVuaykgewogICAgICAgICAgbWVzc2FnZUhhbmRsZXIuc2VuZCgnT25EYXRhUmFuZ2UnLCB7CiAgICAgICAgICAgIGNodW5rOiBjaHVuawogICAgICAgICAgfSk7CiAgICAgICAgfSk7CgogICAgICAgIG1lc3NhZ2VIYW5kbGVyLm9uKCdSZXF1ZXN0RGF0YVJhbmdlJywKICAgICAgICAgIGZ1bmN0aW9uIHRyYW5zcG9ydERhdGFSYW5nZShkYXRhKSB7CiAgICAgICAgICAgIHBkZkRhdGFSYW5nZVRyYW5zcG9ydC5yZXF1ZXN0RGF0YVJhbmdlKGRhdGEuYmVnaW4sIGRhdGEuZW5kKTsKICAgICAgICAgIH0sIHRoaXMpOwogICAgICB9CgogICAgICBtZXNzYWdlSGFuZGxlci5vbignR2V0RG9jJywgZnVuY3Rpb24gdHJhbnNwb3J0RG9jKGRhdGEpIHsKICAgICAgICB2YXIgcGRmSW5mbyA9IGRhdGEucGRmSW5mbzsKICAgICAgICB0aGlzLm51bVBhZ2VzID0gZGF0YS5wZGZJbmZvLm51bVBhZ2VzOwogICAgICAgIHZhciBwZGZEb2N1bWVudCA9IG5ldyBQREZEb2N1bWVudFByb3h5KHBkZkluZm8sIHRoaXMpOwogICAgICAgIHRoaXMucGRmRG9jdW1lbnQgPSBwZGZEb2N1bWVudDsKICAgICAgICB0aGlzLmxvYWRpbmdUYXNrLl9jYXBhYmlsaXR5LnJlc29sdmUocGRmRG9jdW1lbnQpOwogICAgICB9LCB0aGlzKTsKCiAgICAgIG1lc3NhZ2VIYW5kbGVyLm9uKCdOZWVkUGFzc3dvcmQnLAogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0cmFuc3BvcnROZWVkUGFzc3dvcmQoZXhjZXB0aW9uKSB7CiAgICAgICAgdmFyIGxvYWRpbmdUYXNrID0gdGhpcy5sb2FkaW5nVGFzazsKICAgICAgICBpZiAobG9hZGluZ1Rhc2sub25QYXNzd29yZCkgewogICAgICAgICAgcmV0dXJuIGxvYWRpbmdUYXNrLm9uUGFzc3dvcmQodXBkYXRlUGFzc3dvcmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzd29yZFJlc3BvbnNlcy5ORUVEX1BBU1NXT1JEKTsKICAgICAgICB9CiAgICAgICAgbG9hZGluZ1Rhc2suX2NhcGFiaWxpdHkucmVqZWN0KAogICAgICAgICAgbmV3IFBhc3N3b3JkRXhjZXB0aW9uKGV4Y2VwdGlvbi5tZXNzYWdlLCBleGNlcHRpb24uY29kZSkpOwogICAgICB9LCB0aGlzKTsKCiAgICAgIG1lc3NhZ2VIYW5kbGVyLm9uKCdJbmNvcnJlY3RQYXNzd29yZCcsCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHRyYW5zcG9ydEluY29ycmVjdFBhc3N3b3JkKGV4Y2VwdGlvbikgewogICAgICAgIHZhciBsb2FkaW5nVGFzayA9IHRoaXMubG9hZGluZ1Rhc2s7CiAgICAgICAgaWYgKGxvYWRpbmdUYXNrLm9uUGFzc3dvcmQpIHsKICAgICAgICAgIHJldHVybiBsb2FkaW5nVGFzay5vblBhc3N3b3JkKHVwZGF0ZVBhc3N3b3JkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc3dvcmRSZXNwb25zZXMuSU5DT1JSRUNUX1BBU1NXT1JEKTsKICAgICAgICB9CiAgICAgICAgbG9hZGluZ1Rhc2suX2NhcGFiaWxpdHkucmVqZWN0KAogICAgICAgICAgbmV3IFBhc3N3b3JkRXhjZXB0aW9uKGV4Y2VwdGlvbi5tZXNzYWdlLCBleGNlcHRpb24uY29kZSkpOwogICAgICB9LCB0aGlzKTsKCiAgICAgIG1lc3NhZ2VIYW5kbGVyLm9uKCdJbnZhbGlkUERGJywgZnVuY3Rpb24gdHJhbnNwb3J0SW52YWxpZFBERihleGNlcHRpb24pIHsKICAgICAgICB0aGlzLmxvYWRpbmdUYXNrLl9jYXBhYmlsaXR5LnJlamVjdCgKICAgICAgICAgIG5ldyBJbnZhbGlkUERGRXhjZXB0aW9uKGV4Y2VwdGlvbi5tZXNzYWdlKSk7CiAgICAgIH0sIHRoaXMpOwoKICAgICAgbWVzc2FnZUhhbmRsZXIub24oJ01pc3NpbmdQREYnLCBmdW5jdGlvbiB0cmFuc3BvcnRNaXNzaW5nUERGKGV4Y2VwdGlvbikgewogICAgICAgIHRoaXMubG9hZGluZ1Rhc2suX2NhcGFiaWxpdHkucmVqZWN0KAogICAgICAgICAgbmV3IE1pc3NpbmdQREZFeGNlcHRpb24oZXhjZXB0aW9uLm1lc3NhZ2UpKTsKICAgICAgfSwgdGhpcyk7CgogICAgICBtZXNzYWdlSGFuZGxlci5vbignVW5leHBlY3RlZFJlc3BvbnNlJywKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gdHJhbnNwb3J0VW5leHBlY3RlZFJlc3BvbnNlKGV4Y2VwdGlvbikgewogICAgICAgIHRoaXMubG9hZGluZ1Rhc2suX2NhcGFiaWxpdHkucmVqZWN0KAogICAgICAgICAgbmV3IFVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbihleGNlcHRpb24ubWVzc2FnZSwgZXhjZXB0aW9uLnN0YXR1cykpOwogICAgICB9LCB0aGlzKTsKCiAgICAgIG1lc3NhZ2VIYW5kbGVyLm9uKCdVbmtub3duRXJyb3InLAogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0cmFuc3BvcnRVbmtub3duRXJyb3IoZXhjZXB0aW9uKSB7CiAgICAgICAgdGhpcy5sb2FkaW5nVGFzay5fY2FwYWJpbGl0eS5yZWplY3QoCiAgICAgICAgICBuZXcgVW5rbm93bkVycm9yRXhjZXB0aW9uKGV4Y2VwdGlvbi5tZXNzYWdlLCBleGNlcHRpb24uZGV0YWlscykpOwogICAgICB9LCB0aGlzKTsKCiAgICAgIG1lc3NhZ2VIYW5kbGVyLm9uKCdEYXRhTG9hZGVkJywgZnVuY3Rpb24gdHJhbnNwb3J0UGFnZShkYXRhKSB7CiAgICAgICAgdGhpcy5kb3dubG9hZEluZm9DYXBhYmlsaXR5LnJlc29sdmUoZGF0YSk7CiAgICAgIH0sIHRoaXMpOwoKICAgICAgbWVzc2FnZUhhbmRsZXIub24oJ1BERk1hbmFnZXJSZWFkeScsIGZ1bmN0aW9uIHRyYW5zcG9ydFBhZ2UoZGF0YSkgewogICAgICAgIGlmICh0aGlzLnBkZkRhdGFSYW5nZVRyYW5zcG9ydCkgewogICAgICAgICAgdGhpcy5wZGZEYXRhUmFuZ2VUcmFuc3BvcnQudHJhbnNwb3J0UmVhZHkoKTsKICAgICAgICB9CiAgICAgIH0sIHRoaXMpOwoKICAgICAgbWVzc2FnZUhhbmRsZXIub24oJ1N0YXJ0UmVuZGVyUGFnZScsIGZ1bmN0aW9uIHRyYW5zcG9ydFJlbmRlcihkYXRhKSB7CiAgICAgICAgdmFyIHBhZ2UgPSB0aGlzLnBhZ2VDYWNoZVtkYXRhLnBhZ2VJbmRleF07CgogICAgICAgIHBhZ2Uuc3RhdHMudGltZUVuZCgnUGFnZSBSZXF1ZXN0Jyk7CiAgICAgICAgcGFnZS5fc3RhcnRSZW5kZXJQYWdlKGRhdGEudHJhbnNwYXJlbmN5LCBkYXRhLmludGVudCk7CiAgICAgIH0sIHRoaXMpOwoKICAgICAgbWVzc2FnZUhhbmRsZXIub24oJ1JlbmRlclBhZ2VDaHVuaycsIGZ1bmN0aW9uIHRyYW5zcG9ydFJlbmRlcihkYXRhKSB7CiAgICAgICAgdmFyIHBhZ2UgPSB0aGlzLnBhZ2VDYWNoZVtkYXRhLnBhZ2VJbmRleF07CgogICAgICAgIHBhZ2UuX3JlbmRlclBhZ2VDaHVuayhkYXRhLm9wZXJhdG9yTGlzdCwgZGF0YS5pbnRlbnQpOwogICAgICB9LCB0aGlzKTsKCiAgICAgIG1lc3NhZ2VIYW5kbGVyLm9uKCdjb21tb25vYmonLCBmdW5jdGlvbiB0cmFuc3BvcnRPYmooZGF0YSkgewogICAgICAgIHZhciBpZCA9IGRhdGFbMF07CiAgICAgICAgdmFyIHR5cGUgPSBkYXRhWzFdOwogICAgICAgIGlmICh0aGlzLmNvbW1vbk9ianMuaGFzRGF0YShpZCkpIHsKICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICAgY2FzZSAnRm9udCc6CiAgICAgICAgICAgIHZhciBleHBvcnRlZERhdGEgPSBkYXRhWzJdOwoKICAgICAgICAgICAgdmFyIGZvbnQ7CiAgICAgICAgICAgIGlmICgnZXJyb3InIGluIGV4cG9ydGVkRGF0YSkgewogICAgICAgICAgICAgIHZhciBlcnJvciA9IGV4cG9ydGVkRGF0YS5lcnJvcjsKICAgICAgICAgICAgICB3YXJuKCdFcnJvciBkdXJpbmcgZm9udCBsb2FkaW5nOiAnICsgZXJyb3IpOwogICAgICAgICAgICAgIHRoaXMuY29tbW9uT2Jqcy5yZXNvbHZlKGlkLCBlcnJvcik7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgZm9udCA9IG5ldyBGb250RmFjZU9iamVjdChleHBvcnRlZERhdGEpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBGb250TG9hZGVyLmJpbmQoCiAgICAgICAgICAgICAgW2ZvbnRdLAogICAgICAgICAgICAgIGZ1bmN0aW9uIGZvbnRSZWFkeShmb250T2JqcykgewogICAgICAgICAgICAgICAgdGhpcy5jb21tb25PYmpzLnJlc29sdmUoaWQsIGZvbnQpOwogICAgICAgICAgICAgIH0uYmluZCh0aGlzKQogICAgICAgICAgICApOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgJ0ZvbnRQYXRoJzoKICAgICAgICAgICAgdGhpcy5jb21tb25PYmpzLnJlc29sdmUoaWQsIGRhdGFbMl0pOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIGVycm9yKCdHb3QgdW5rbm93biBjb21tb24gb2JqZWN0IHR5cGUgJyArIHR5cGUpOwogICAgICAgIH0KICAgICAgfSwgdGhpcyk7CgogICAgICBtZXNzYWdlSGFuZGxlci5vbignb2JqJywgZnVuY3Rpb24gdHJhbnNwb3J0T2JqKGRhdGEpIHsKICAgICAgICB2YXIgaWQgPSBkYXRhWzBdOwogICAgICAgIHZhciBwYWdlSW5kZXggPSBkYXRhWzFdOwogICAgICAgIHZhciB0eXBlID0gZGF0YVsyXTsKICAgICAgICB2YXIgcGFnZVByb3h5ID0gdGhpcy5wYWdlQ2FjaGVbcGFnZUluZGV4XTsKICAgICAgICB2YXIgaW1hZ2VEYXRhOwogICAgICAgIGlmIChwYWdlUHJveHkub2Jqcy5oYXNEYXRhKGlkKSkgewogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgICBjYXNlICdKcGVnU3RyZWFtJzoKICAgICAgICAgICAgaW1hZ2VEYXRhID0gZGF0YVszXTsKICAgICAgICAgICAgbG9hZEpwZWdTdHJlYW0oaWQsIGltYWdlRGF0YSwgcGFnZVByb3h5Lm9ianMpOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgJ0ltYWdlJzoKICAgICAgICAgICAgaW1hZ2VEYXRhID0gZGF0YVszXTsKICAgICAgICAgICAgcGFnZVByb3h5Lm9ianMucmVzb2x2ZShpZCwgaW1hZ2VEYXRhKTsKCiAgICAgICAgICAgIC8vIGhldXJpc3RpY3MgdGhhdCB3aWxsIGFsbG93IG5vdCB0byBzdG9yZSBsYXJnZSBkYXRhCiAgICAgICAgICAgIHZhciBNQVhfSU1BR0VfU0laRV9UT19TVE9SRSA9IDgwMDAwMDA7CiAgICAgICAgICAgIGlmIChpbWFnZURhdGEgJiYgJ2RhdGEnIGluIGltYWdlRGF0YSAmJgogICAgICAgICAgICAgICAgaW1hZ2VEYXRhLmRhdGEubGVuZ3RoID4gTUFYX0lNQUdFX1NJWkVfVE9fU1RPUkUpIHsKICAgICAgICAgICAgICBwYWdlUHJveHkuY2xlYW51cEFmdGVyUmVuZGVyID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIGVycm9yKCdHb3QgdW5rbm93biBvYmplY3QgdHlwZSAnICsgdHlwZSk7CiAgICAgICAgfQogICAgICB9LCB0aGlzKTsKCiAgICAgIG1lc3NhZ2VIYW5kbGVyLm9uKCdEb2NQcm9ncmVzcycsIGZ1bmN0aW9uIHRyYW5zcG9ydERvY1Byb2dyZXNzKGRhdGEpIHsKICAgICAgICB2YXIgbG9hZGluZ1Rhc2sgPSB0aGlzLmxvYWRpbmdUYXNrOwogICAgICAgIGlmIChsb2FkaW5nVGFzay5vblByb2dyZXNzKSB7CiAgICAgICAgICBsb2FkaW5nVGFzay5vblByb2dyZXNzKHsKICAgICAgICAgICAgbG9hZGVkOiBkYXRhLmxvYWRlZCwKICAgICAgICAgICAgdG90YWw6IGRhdGEudG90YWwKICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgfSwgdGhpcyk7CgogICAgICBtZXNzYWdlSGFuZGxlci5vbignUGFnZUVycm9yJywgZnVuY3Rpb24gdHJhbnNwb3J0RXJyb3IoZGF0YSkgewogICAgICAgIHZhciBwYWdlID0gdGhpcy5wYWdlQ2FjaGVbZGF0YS5wYWdlTnVtIC0gMV07CiAgICAgICAgdmFyIGludGVudFN0YXRlID0gcGFnZS5pbnRlbnRTdGF0ZXNbZGF0YS5pbnRlbnRdOwogICAgICAgIGlmIChpbnRlbnRTdGF0ZS5kaXNwbGF5UmVhZHlDYXBhYmlsaXR5KSB7CiAgICAgICAgICBpbnRlbnRTdGF0ZS5kaXNwbGF5UmVhZHlDYXBhYmlsaXR5LnJlamVjdChkYXRhLmVycm9yKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgZXJyb3IoZGF0YS5lcnJvcik7CiAgICAgICAgfQogICAgICB9LCB0aGlzKTsKCiAgICAgIG1lc3NhZ2VIYW5kbGVyLm9uKCdKcGVnRGVjb2RlJywgZnVuY3Rpb24oZGF0YSkgewogICAgICAgIHZhciBpbWFnZVVybCA9IGRhdGFbMF07CiAgICAgICAgdmFyIGNvbXBvbmVudHMgPSBkYXRhWzFdOwogICAgICAgIGlmIChjb21wb25lbnRzICE9PSAzICYmIGNvbXBvbmVudHMgIT09IDEpIHsKICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgKICAgICAgICAgICAgbmV3IEVycm9yKCdPbmx5IDMgY29tcG9uZW50cyBvciAxIGNvbXBvbmVudCBjYW4gYmUgcmV0dXJuZWQnKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgdmFyIGltZyA9IG5ldyBJbWFnZSgpOwogICAgICAgICAgaW1nLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdmFyIHdpZHRoID0gaW1nLndpZHRoOwogICAgICAgICAgICB2YXIgaGVpZ2h0ID0gaW1nLmhlaWdodDsKICAgICAgICAgICAgdmFyIHNpemUgPSB3aWR0aCAqIGhlaWdodDsKICAgICAgICAgICAgdmFyIHJnYmFMZW5ndGggPSBzaXplICogNDsKICAgICAgICAgICAgdmFyIGJ1ZiA9IG5ldyBVaW50OEFycmF5KHNpemUgKiBjb21wb25lbnRzKTsKICAgICAgICAgICAgdmFyIHRtcENhbnZhcyA9IGNyZWF0ZVNjcmF0Y2hDYW52YXMod2lkdGgsIGhlaWdodCk7CiAgICAgICAgICAgIHZhciB0bXBDdHggPSB0bXBDYW52YXMuZ2V0Q29udGV4dCgnMmQnKTsKICAgICAgICAgICAgdG1wQ3R4LmRyYXdJbWFnZShpbWcsIDAsIDApOwogICAgICAgICAgICB2YXIgZGF0YSA9IHRtcEN0eC5nZXRJbWFnZURhdGEoMCwgMCwgd2lkdGgsIGhlaWdodCkuZGF0YTsKICAgICAgICAgICAgdmFyIGksIGo7CgogICAgICAgICAgICBpZiAoY29tcG9uZW50cyA9PT0gMykgewogICAgICAgICAgICAgIGZvciAoaSA9IDAsIGogPSAwOyBpIDwgcmdiYUxlbmd0aDsgaSArPSA0LCBqICs9IDMpIHsKICAgICAgICAgICAgICAgIGJ1ZltqXSA9IGRhdGFbaV07CiAgICAgICAgICAgICAgICBidWZbaiArIDFdID0gZGF0YVtpICsgMV07CiAgICAgICAgICAgICAgICBidWZbaiArIDJdID0gZGF0YVtpICsgMl07CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgaWYgKGNvbXBvbmVudHMgPT09IDEpIHsKICAgICAgICAgICAgICBmb3IgKGkgPSAwLCBqID0gMDsgaSA8IHJnYmFMZW5ndGg7IGkgKz0gNCwgaisrKSB7CiAgICAgICAgICAgICAgICBidWZbal0gPSBkYXRhW2ldOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXNvbHZlKHsgZGF0YTogYnVmLCB3aWR0aDogd2lkdGgsIGhlaWdodDogaGVpZ2h0fSk7CiAgICAgICAgICB9OwogICAgICAgICAgaW1nLm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ0pwZWdEZWNvZGUgZmFpbGVkIHRvIGxvYWQgaW1hZ2UnKSk7CiAgICAgICAgICB9OwogICAgICAgICAgaW1nLnNyYyA9IGltYWdlVXJsOwogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0sCgogICAgZmV0Y2hEb2N1bWVudDogZnVuY3Rpb24gV29ya2VyVHJhbnNwb3J0X2ZldGNoRG9jdW1lbnQobG9hZGluZ1Rhc2ssIHNvdXJjZSkgewogICAgICB0aGlzLmxvYWRpbmdUYXNrID0gbG9hZGluZ1Rhc2s7CgogICAgICBzb3VyY2UuZGlzYWJsZUF1dG9GZXRjaCA9IFBERkpTLmRpc2FibGVBdXRvRmV0Y2g7CiAgICAgIHNvdXJjZS5kaXNhYmxlU3RyZWFtID0gUERGSlMuZGlzYWJsZVN0cmVhbTsKICAgICAgc291cmNlLmNodW5rZWRWaWV3ZXJMb2FkaW5nID0gISF0aGlzLnBkZkRhdGFSYW5nZVRyYW5zcG9ydDsKICAgICAgaWYgKHRoaXMucGRmRGF0YVJhbmdlVHJhbnNwb3J0KSB7CiAgICAgICAgc291cmNlLmxlbmd0aCA9IHRoaXMucGRmRGF0YVJhbmdlVHJhbnNwb3J0Lmxlbmd0aDsKICAgICAgICBzb3VyY2UuaW5pdGlhbERhdGEgPSB0aGlzLnBkZkRhdGFSYW5nZVRyYW5zcG9ydC5pbml0aWFsRGF0YTsKICAgICAgfQogICAgICB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmQoJ0dldERvY1JlcXVlc3QnLCB7CiAgICAgICAgc291cmNlOiBzb3VyY2UsCiAgICAgICAgZGlzYWJsZVJhbmdlOiBQREZKUy5kaXNhYmxlUmFuZ2UsCiAgICAgICAgbWF4SW1hZ2VTaXplOiBQREZKUy5tYXhJbWFnZVNpemUsCiAgICAgICAgY01hcFVybDogUERGSlMuY01hcFVybCwKICAgICAgICBjTWFwUGFja2VkOiBQREZKUy5jTWFwUGFja2VkLAogICAgICAgIGRpc2FibGVGb250RmFjZTogUERGSlMuZGlzYWJsZUZvbnRGYWNlLAogICAgICAgIGRpc2FibGVDcmVhdGVPYmplY3RVUkw6IFBERkpTLmRpc2FibGVDcmVhdGVPYmplY3RVUkwsCiAgICAgICAgdmVyYm9zaXR5OiBQREZKUy52ZXJib3NpdHkKICAgICAgfSk7CiAgICB9LAoKICAgIGdldERhdGE6IGZ1bmN0aW9uIFdvcmtlclRyYW5zcG9ydF9nZXREYXRhKCkgewogICAgICByZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoJ0dldERhdGEnLCBudWxsKTsKICAgIH0sCgogICAgZ2V0UGFnZTogZnVuY3Rpb24gV29ya2VyVHJhbnNwb3J0X2dldFBhZ2UocGFnZU51bWJlciwgY2FwYWJpbGl0eSkgewogICAgICBpZiAocGFnZU51bWJlciA8PSAwIHx8IHBhZ2VOdW1iZXIgPiB0aGlzLm51bVBhZ2VzIHx8CiAgICAgICAgICAocGFnZU51bWJlcnwwKSAhPT0gcGFnZU51bWJlcikgewogICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ0ludmFsaWQgcGFnZSByZXF1ZXN0JykpOwogICAgICB9CgogICAgICB2YXIgcGFnZUluZGV4ID0gcGFnZU51bWJlciAtIDE7CiAgICAgIGlmIChwYWdlSW5kZXggaW4gdGhpcy5wYWdlUHJvbWlzZXMpIHsKICAgICAgICByZXR1cm4gdGhpcy5wYWdlUHJvbWlzZXNbcGFnZUluZGV4XTsKICAgICAgfQogICAgICB2YXIgcHJvbWlzZSA9IHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCdHZXRQYWdlJywgewogICAgICAgIHBhZ2VJbmRleDogcGFnZUluZGV4CiAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHBhZ2VJbmZvKSB7CiAgICAgICAgdmFyIHBhZ2UgPSBuZXcgUERGUGFnZVByb3h5KHBhZ2VJbmRleCwgcGFnZUluZm8sIHRoaXMpOwogICAgICAgIHRoaXMucGFnZUNhY2hlW3BhZ2VJbmRleF0gPSBwYWdlOwogICAgICAgIHJldHVybiBwYWdlOwogICAgICB9LmJpbmQodGhpcykpOwogICAgICB0aGlzLnBhZ2VQcm9taXNlc1twYWdlSW5kZXhdID0gcHJvbWlzZTsKICAgICAgcmV0dXJuIHByb21pc2U7CiAgICB9LAoKICAgIGdldFBhZ2VJbmRleDogZnVuY3Rpb24gV29ya2VyVHJhbnNwb3J0X2dldFBhZ2VJbmRleEJ5UmVmKHJlZikgewogICAgICByZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoJ0dldFBhZ2VJbmRleCcsIHsgcmVmOiByZWYgfSk7CiAgICB9LAoKICAgIGdldEFubm90YXRpb25zOiBmdW5jdGlvbiBXb3JrZXJUcmFuc3BvcnRfZ2V0QW5ub3RhdGlvbnMocGFnZUluZGV4KSB7CiAgICAgIHJldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgnR2V0QW5ub3RhdGlvbnMnLAogICAgICAgIHsgcGFnZUluZGV4OiBwYWdlSW5kZXggfSk7CiAgICB9LAoKICAgIGdldERlc3RpbmF0aW9uczogZnVuY3Rpb24gV29ya2VyVHJhbnNwb3J0X2dldERlc3RpbmF0aW9ucygpIHsKICAgICAgcmV0dXJuIHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCdHZXREZXN0aW5hdGlvbnMnLCBudWxsKTsKICAgIH0sCgogICAgZ2V0RGVzdGluYXRpb246IGZ1bmN0aW9uIFdvcmtlclRyYW5zcG9ydF9nZXREZXN0aW5hdGlvbihpZCkgewogICAgICByZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoJ0dldERlc3RpbmF0aW9uJywgeyBpZDogaWQgfSApOwogICAgfSwKCiAgICBnZXRBdHRhY2htZW50czogZnVuY3Rpb24gV29ya2VyVHJhbnNwb3J0X2dldEF0dGFjaG1lbnRzKCkgewogICAgICByZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoJ0dldEF0dGFjaG1lbnRzJywgbnVsbCk7CiAgICB9LAoKICAgIGdldEphdmFTY3JpcHQ6IGZ1bmN0aW9uIFdvcmtlclRyYW5zcG9ydF9nZXRKYXZhU2NyaXB0KCkgewogICAgICByZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoJ0dldEphdmFTY3JpcHQnLCBudWxsKTsKICAgIH0sCgogICAgZ2V0T3V0bGluZTogZnVuY3Rpb24gV29ya2VyVHJhbnNwb3J0X2dldE91dGxpbmUoKSB7CiAgICAgIHJldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgnR2V0T3V0bGluZScsIG51bGwpOwogICAgfSwKCiAgICBnZXRNZXRhZGF0YTogZnVuY3Rpb24gV29ya2VyVHJhbnNwb3J0X2dldE1ldGFkYXRhKCkgewogICAgICByZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoJ0dldE1ldGFkYXRhJywgbnVsbCkuCiAgICAgICAgdGhlbihmdW5jdGlvbiB0cmFuc3BvcnRNZXRhZGF0YShyZXN1bHRzKSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgIGluZm86IHJlc3VsdHNbMF0sCiAgICAgICAgICBtZXRhZGF0YTogKHJlc3VsdHNbMV0gPyBuZXcgUERGSlMuTWV0YWRhdGEocmVzdWx0c1sxXSkgOiBudWxsKQogICAgICAgIH07CiAgICAgIH0pOwogICAgfSwKCiAgICBnZXRTdGF0czogZnVuY3Rpb24gV29ya2VyVHJhbnNwb3J0X2dldFN0YXRzKCkgewogICAgICByZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoJ0dldFN0YXRzJywgbnVsbCk7CiAgICB9LAoKICAgIHN0YXJ0Q2xlYW51cDogZnVuY3Rpb24gV29ya2VyVHJhbnNwb3J0X3N0YXJ0Q2xlYW51cCgpIHsKICAgICAgdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoJ0NsZWFudXAnLCBudWxsKS4KICAgICAgICB0aGVuKGZ1bmN0aW9uIGVuZENsZWFudXAoKSB7CiAgICAgICAgZm9yICh2YXIgaSA9IDAsIGlpID0gdGhpcy5wYWdlQ2FjaGUubGVuZ3RoOyBpIDwgaWk7IGkrKykgewogICAgICAgICAgdmFyIHBhZ2UgPSB0aGlzLnBhZ2VDYWNoZVtpXTsKICAgICAgICAgIGlmIChwYWdlKSB7CiAgICAgICAgICAgIHBhZ2UuZGVzdHJveSgpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICB0aGlzLmNvbW1vbk9ianMuY2xlYXIoKTsKICAgICAgICBGb250TG9hZGVyLmNsZWFyKCk7CiAgICAgIH0uYmluZCh0aGlzKSk7CiAgICB9CiAgfTsKICByZXR1cm4gV29ya2VyVHJhbnNwb3J0OwoKfSkoKTsKCi8qKgogKiBBIFBERiBkb2N1bWVudCBhbmQgcGFnZSBpcyBidWlsdCBvZiBtYW55IG9iamVjdHMuIEUuZy4gdGhlcmUgYXJlIG9iamVjdHMKICogZm9yIGZvbnRzLCBpbWFnZXMsIHJlbmRlcmluZyBjb2RlIGFuZCBzdWNoLiBUaGVzZSBvYmplY3RzIG1pZ2h0IGdldCBwcm9jZXNzZWQKICogaW5zaWRlIG9mIGEgd29ya2VyLiBUaGUgYFBERk9iamVjdHNgIGltcGxlbWVudHMgc29tZSBiYXNpYyBmdW5jdGlvbnMgdG8KICogbWFuYWdlIHRoZXNlIG9iamVjdHMuCiAqIEBpZ25vcmUKICovCnZhciBQREZPYmplY3RzID0gKGZ1bmN0aW9uIFBERk9iamVjdHNDbG9zdXJlKCkgewogIGZ1bmN0aW9uIFBERk9iamVjdHMoKSB7CiAgICB0aGlzLm9ianMgPSB7fTsKICB9CgogIFBERk9iamVjdHMucHJvdG90eXBlID0gewogICAgLyoqCiAgICAgKiBJbnRlcm5hbCBmdW5jdGlvbi4KICAgICAqIEVuc3VyZXMgdGhlcmUgaXMgYW4gb2JqZWN0IGRlZmluZWQgZm9yIGBvYmpJZGAuCiAgICAgKi8KICAgIGVuc3VyZU9iajogZnVuY3Rpb24gUERGT2JqZWN0c19lbnN1cmVPYmoob2JqSWQpIHsKICAgICAgaWYgKHRoaXMub2Jqc1tvYmpJZF0pIHsKICAgICAgICByZXR1cm4gdGhpcy5vYmpzW29iaklkXTsKICAgICAgfQoKICAgICAgdmFyIG9iaiA9IHsKICAgICAgICBjYXBhYmlsaXR5OiBjcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSgpLAogICAgICAgIGRhdGE6IG51bGwsCiAgICAgICAgcmVzb2x2ZWQ6IGZhbHNlCiAgICAgIH07CiAgICAgIHRoaXMub2Jqc1tvYmpJZF0gPSBvYmo7CgogICAgICByZXR1cm4gb2JqOwogICAgfSwKCiAgICAvKioKICAgICAqIElmIGNhbGxlZCAqd2l0aG91dCogY2FsbGJhY2ssIHRoaXMgcmV0dXJucyB0aGUgZGF0YSBvZiBgb2JqSWRgIGJ1dCB0aGUKICAgICAqIG9iamVjdCBuZWVkcyB0byBiZSByZXNvbHZlZC4gSWYgaXQgaXNuJ3QsIHRoaXMgZnVuY3Rpb24gdGhyb3dzLgogICAgICoKICAgICAqIElmIGNhbGxlZCAqd2l0aCogYSBjYWxsYmFjaywgdGhlIGNhbGxiYWNrIGlzIGNhbGxlZCB3aXRoIHRoZSBkYXRhIG9mIHRoZQogICAgICogb2JqZWN0IG9uY2UgdGhlIG9iamVjdCBpcyByZXNvbHZlZC4gVGhhdCBtZWFucywgaWYgeW91IGNhbGwgdGhpcwogICAgICogZnVuY3Rpb24gYW5kIHRoZSBvYmplY3QgaXMgYWxyZWFkeSByZXNvbHZlZCwgdGhlIGNhbGxiYWNrIGdldHMgY2FsbGVkCiAgICAgKiByaWdodCBhd2F5LgogICAgICovCiAgICBnZXQ6IGZ1bmN0aW9uIFBERk9iamVjdHNfZ2V0KG9iaklkLCBjYWxsYmFjaykgewogICAgICAvLyBJZiB0aGVyZSBpcyBhIGNhbGxiYWNrLCB0aGVuIHRoZSBnZXQgY2FuIGJlIGFzeW5jIGFuZCB0aGUgb2JqZWN0IGlzCiAgICAgIC8vIG5vdCByZXF1aXJlZCB0byBiZSByZXNvbHZlZCByaWdodCBub3cKICAgICAgaWYgKGNhbGxiYWNrKSB7CiAgICAgICAgdGhpcy5lbnN1cmVPYmoob2JqSWQpLmNhcGFiaWxpdHkucHJvbWlzZS50aGVuKGNhbGxiYWNrKTsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQoKICAgICAgLy8gSWYgdGhlcmUgaXNuJ3QgYSBjYWxsYmFjaywgdGhlIHVzZXIgZXhwZWN0cyB0byBnZXQgdGhlIHJlc29sdmVkIGRhdGEKICAgICAgLy8gZGlyZWN0bHkuCiAgICAgIHZhciBvYmogPSB0aGlzLm9ianNbb2JqSWRdOwoKICAgICAgLy8gSWYgdGhlcmUgaXNuJ3QgYW4gb2JqZWN0IHlldCBvciB0aGUgb2JqZWN0IGlzbid0IHJlc29sdmVkLCB0aGVuIHRoZQogICAgICAvLyBkYXRhIGlzbid0IHJlYWR5IHlldCEKICAgICAgaWYgKCFvYmogfHwgIW9iai5yZXNvbHZlZCkgewogICAgICAgIGVycm9yKCdSZXF1ZXN0aW5nIG9iamVjdCB0aGF0IGlzblwndCByZXNvbHZlZCB5ZXQgJyArIG9iaklkKTsKICAgICAgfQoKICAgICAgcmV0dXJuIG9iai5kYXRhOwogICAgfSwKCiAgICAvKioKICAgICAqIFJlc29sdmVzIHRoZSBvYmplY3QgYG9iaklkYCB3aXRoIG9wdGlvbmFsIGBkYXRhYC4KICAgICAqLwogICAgcmVzb2x2ZTogZnVuY3Rpb24gUERGT2JqZWN0c19yZXNvbHZlKG9iaklkLCBkYXRhKSB7CiAgICAgIHZhciBvYmogPSB0aGlzLmVuc3VyZU9iaihvYmpJZCk7CgogICAgICBvYmoucmVzb2x2ZWQgPSB0cnVlOwogICAgICBvYmouZGF0YSA9IGRhdGE7CiAgICAgIG9iai5jYXBhYmlsaXR5LnJlc29sdmUoZGF0YSk7CiAgICB9LAoKICAgIGlzUmVzb2x2ZWQ6IGZ1bmN0aW9uIFBERk9iamVjdHNfaXNSZXNvbHZlZChvYmpJZCkgewogICAgICB2YXIgb2JqcyA9IHRoaXMub2JqczsKCiAgICAgIGlmICghb2Jqc1tvYmpJZF0pIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIG9ianNbb2JqSWRdLnJlc29sdmVkOwogICAgICB9CiAgICB9LAoKICAgIGhhc0RhdGE6IGZ1bmN0aW9uIFBERk9iamVjdHNfaGFzRGF0YShvYmpJZCkgewogICAgICByZXR1cm4gdGhpcy5pc1Jlc29sdmVkKG9iaklkKTsKICAgIH0sCgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBkYXRhIG9mIGBvYmpJZGAgaWYgb2JqZWN0IGV4aXN0cywgbnVsbCBvdGhlcndpc2UuCiAgICAgKi8KICAgIGdldERhdGE6IGZ1bmN0aW9uIFBERk9iamVjdHNfZ2V0RGF0YShvYmpJZCkgewogICAgICB2YXIgb2JqcyA9IHRoaXMub2JqczsKICAgICAgaWYgKCFvYmpzW29iaklkXSB8fCAhb2Jqc1tvYmpJZF0ucmVzb2x2ZWQpIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gb2Jqc1tvYmpJZF0uZGF0YTsKICAgICAgfQogICAgfSwKCiAgICBjbGVhcjogZnVuY3Rpb24gUERGT2JqZWN0c19jbGVhcigpIHsKICAgICAgdGhpcy5vYmpzID0ge307CiAgICB9CiAgfTsKICByZXR1cm4gUERGT2JqZWN0czsKfSkoKTsKCi8qKgogKiBBbGxvd3MgY29udHJvbGxpbmcgb2YgdGhlIHJlbmRlcmluZyB0YXNrcy4KICogQGNsYXNzCiAqLwp2YXIgUmVuZGVyVGFzayA9IChmdW5jdGlvbiBSZW5kZXJUYXNrQ2xvc3VyZSgpIHsKICBmdW5jdGlvbiBSZW5kZXJUYXNrKGludGVybmFsUmVuZGVyVGFzaykgewogICAgdGhpcy5faW50ZXJuYWxSZW5kZXJUYXNrID0gaW50ZXJuYWxSZW5kZXJUYXNrOwoKICAgIC8qKgogICAgICogQ2FsbGJhY2sgZm9yIGluY3JlbWVudGFsIHJlbmRlcmluZyAtLSBhIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQKICAgICAqIGVhY2ggdGltZSB0aGUgcmVuZGVyaW5nIGlzIHBhdXNlZC4gIFRvIGNvbnRpbnVlIHJlbmRlcmluZyBjYWxsIHRoZQogICAgICogZnVuY3Rpb24gdGhhdCBpcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlIGNhbGxiYWNrLgogICAgICogQHR5cGUge2Z1bmN0aW9ufQogICAgICovCiAgICB0aGlzLm9uQ29udGludWUgPSBudWxsOwogIH0KCiAgUmVuZGVyVGFzay5wcm90b3R5cGUgPSAvKiogQGxlbmRzIFJlbmRlclRhc2sucHJvdG90eXBlICovIHsKICAgIC8qKgogICAgICogUHJvbWlzZSBmb3IgcmVuZGVyaW5nIHRhc2sgY29tcGxldGlvbi4KICAgICAqIEByZXR1cm4ge1Byb21pc2V9CiAgICAgKi8KICAgIGdldCBwcm9taXNlKCkgewogICAgICByZXR1cm4gdGhpcy5faW50ZXJuYWxSZW5kZXJUYXNrLmNhcGFiaWxpdHkucHJvbWlzZTsKICAgIH0sCgogICAgLyoqCiAgICAgKiBDYW5jZWxzIHRoZSByZW5kZXJpbmcgdGFzay4gSWYgdGhlIHRhc2sgaXMgY3VycmVudGx5IHJlbmRlcmluZyBpdCB3aWxsCiAgICAgKiBub3QgYmUgY2FuY2VsbGVkIHVudGlsIGdyYXBoaWNzIHBhdXNlcyB3aXRoIGEgdGltZW91dC4gVGhlIHByb21pc2UgdGhhdAogICAgICogdGhpcyBvYmplY3QgZXh0ZW5kcyB3aWxsIHJlc29sdmVkIHdoZW4gY2FuY2VsbGVkLgogICAgICovCiAgICBjYW5jZWw6IGZ1bmN0aW9uIFJlbmRlclRhc2tfY2FuY2VsKCkgewogICAgICB0aGlzLl9pbnRlcm5hbFJlbmRlclRhc2suY2FuY2VsKCk7CiAgICB9LAoKICAgIC8qKgogICAgICogUmVnaXN0ZXJzIGNhbGxiYWNrcyB0byBpbmRpY2F0ZSB0aGUgcmVuZGVyaW5nIHRhc2sgY29tcGxldGlvbi4KICAgICAqCiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvbkZ1bGZpbGxlZCBUaGUgY2FsbGJhY2sgZm9yIHRoZSByZW5kZXJpbmcgY29tcGxldGlvbi4KICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9uUmVqZWN0ZWQgVGhlIGNhbGxiYWNrIGZvciB0aGUgcmVuZGVyaW5nIGZhaWx1cmUuCiAgICAgKiBAcmV0dXJuIHtQcm9taXNlfSBBIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCBhZnRlciB0aGUgb25GdWxmaWxsZWQgb3IKICAgICAqICAgICAgICAgICAgICAgICAgIG9uUmVqZWN0ZWQgY2FsbGJhY2suCiAgICAgKi8KICAgIHRoZW46IGZ1bmN0aW9uIFJlbmRlclRhc2tfdGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkgewogICAgICByZXR1cm4gdGhpcy5wcm9taXNlLnRoZW4uYXBwbHkodGhpcy5wcm9taXNlLCBhcmd1bWVudHMpOwogICAgfQogIH07CgogIHJldHVybiBSZW5kZXJUYXNrOwp9KSgpOwoKLyoqCiAqIEZvciBpbnRlcm5hbCB1c2Ugb25seS4KICogQGlnbm9yZQogKi8KdmFyIEludGVybmFsUmVuZGVyVGFzayA9IChmdW5jdGlvbiBJbnRlcm5hbFJlbmRlclRhc2tDbG9zdXJlKCkgewoKICBmdW5jdGlvbiBJbnRlcm5hbFJlbmRlclRhc2soY2FsbGJhY2ssIHBhcmFtcywgb2JqcywgY29tbW9uT2Jqcywgb3BlcmF0b3JMaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlTnVtYmVyKSB7CiAgICB0aGlzLmNhbGxiYWNrID0gY2FsbGJhY2s7CiAgICB0aGlzLnBhcmFtcyA9IHBhcmFtczsKICAgIHRoaXMub2JqcyA9IG9ianM7CiAgICB0aGlzLmNvbW1vbk9ianMgPSBjb21tb25PYmpzOwogICAgdGhpcy5vcGVyYXRvckxpc3RJZHggPSBudWxsOwogICAgdGhpcy5vcGVyYXRvckxpc3QgPSBvcGVyYXRvckxpc3Q7CiAgICB0aGlzLnBhZ2VOdW1iZXIgPSBwYWdlTnVtYmVyOwogICAgdGhpcy5ydW5uaW5nID0gZmFsc2U7CiAgICB0aGlzLmdyYXBoaWNzUmVhZHlDYWxsYmFjayA9IG51bGw7CiAgICB0aGlzLmdyYXBoaWNzUmVhZHkgPSBmYWxzZTsKICAgIHRoaXMuY2FuY2VsbGVkID0gZmFsc2U7CiAgICB0aGlzLmNhcGFiaWxpdHkgPSBjcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSgpOwogICAgdGhpcy50YXNrID0gbmV3IFJlbmRlclRhc2sodGhpcyk7CiAgICAvLyBjYWNoaW5nIHRoaXMtYm91bmQgbWV0aG9kcwogICAgdGhpcy5fY29udGludWVCb3VuZCA9IHRoaXMuX2NvbnRpbnVlLmJpbmQodGhpcyk7CiAgICB0aGlzLl9zY2hlZHVsZU5leHRCb3VuZCA9IHRoaXMuX3NjaGVkdWxlTmV4dC5iaW5kKHRoaXMpOwogICAgdGhpcy5fbmV4dEJvdW5kID0gdGhpcy5fbmV4dC5iaW5kKHRoaXMpOwogIH0KCiAgSW50ZXJuYWxSZW5kZXJUYXNrLnByb3RvdHlwZSA9IHsKCiAgICBpbml0YWxpemVHcmFwaGljczoKICAgICAgICBmdW5jdGlvbiBJbnRlcm5hbFJlbmRlclRhc2tfaW5pdGFsaXplR3JhcGhpY3ModHJhbnNwYXJlbmN5KSB7CgogICAgICBpZiAodGhpcy5jYW5jZWxsZWQpIHsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgaWYgKFBERkpTLnBkZkJ1ZyAmJiAnU3RlcHBlck1hbmFnZXInIGluIGdsb2JhbFNjb3BlICYmCiAgICAgICAgICBnbG9iYWxTY29wZS5TdGVwcGVyTWFuYWdlci5lbmFibGVkKSB7CiAgICAgICAgdGhpcy5zdGVwcGVyID0gZ2xvYmFsU2NvcGUuU3RlcHBlck1hbmFnZXIuY3JlYXRlKHRoaXMucGFnZU51bWJlciAtIDEpOwogICAgICAgIHRoaXMuc3RlcHBlci5pbml0KHRoaXMub3BlcmF0b3JMaXN0KTsKICAgICAgICB0aGlzLnN0ZXBwZXIubmV4dEJyZWFrUG9pbnQgPSB0aGlzLnN0ZXBwZXIuZ2V0TmV4dEJyZWFrUG9pbnQoKTsKICAgICAgfQoKICAgICAgdmFyIHBhcmFtcyA9IHRoaXMucGFyYW1zOwogICAgICB0aGlzLmdmeCA9IG5ldyBDYW52YXNHcmFwaGljcyhwYXJhbXMuY2FudmFzQ29udGV4dCwgdGhpcy5jb21tb25PYmpzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9ianMsIHBhcmFtcy5pbWFnZUxheWVyKTsKCiAgICAgIHRoaXMuZ2Z4LmJlZ2luRHJhd2luZyhwYXJhbXMudmlld3BvcnQsIHRyYW5zcGFyZW5jeSk7CiAgICAgIHRoaXMub3BlcmF0b3JMaXN0SWR4ID0gMDsKICAgICAgdGhpcy5ncmFwaGljc1JlYWR5ID0gdHJ1ZTsKICAgICAgaWYgKHRoaXMuZ3JhcGhpY3NSZWFkeUNhbGxiYWNrKSB7CiAgICAgICAgdGhpcy5ncmFwaGljc1JlYWR5Q2FsbGJhY2soKTsKICAgICAgfQogICAgfSwKCiAgICBjYW5jZWw6IGZ1bmN0aW9uIEludGVybmFsUmVuZGVyVGFza19jYW5jZWwoKSB7CiAgICAgIHRoaXMucnVubmluZyA9IGZhbHNlOwogICAgICB0aGlzLmNhbmNlbGxlZCA9IHRydWU7CiAgICAgIHRoaXMuY2FsbGJhY2soJ2NhbmNlbGxlZCcpOwogICAgfSwKCiAgICBvcGVyYXRvckxpc3RDaGFuZ2VkOiBmdW5jdGlvbiBJbnRlcm5hbFJlbmRlclRhc2tfb3BlcmF0b3JMaXN0Q2hhbmdlZCgpIHsKICAgICAgaWYgKCF0aGlzLmdyYXBoaWNzUmVhZHkpIHsKICAgICAgICBpZiAoIXRoaXMuZ3JhcGhpY3NSZWFkeUNhbGxiYWNrKSB7CiAgICAgICAgICB0aGlzLmdyYXBoaWNzUmVhZHlDYWxsYmFjayA9IHRoaXMuX2NvbnRpbnVlQm91bmQ7CiAgICAgICAgfQogICAgICAgIHJldHVybjsKICAgICAgfQoKICAgICAgaWYgKHRoaXMuc3RlcHBlcikgewogICAgICAgIHRoaXMuc3RlcHBlci51cGRhdGVPcGVyYXRvckxpc3QodGhpcy5vcGVyYXRvckxpc3QpOwogICAgICB9CgogICAgICBpZiAodGhpcy5ydW5uaW5nKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIHRoaXMuX2NvbnRpbnVlKCk7CiAgICB9LAoKICAgIF9jb250aW51ZTogZnVuY3Rpb24gSW50ZXJuYWxSZW5kZXJUYXNrX19jb250aW51ZSgpIHsKICAgICAgdGhpcy5ydW5uaW5nID0gdHJ1ZTsKICAgICAgaWYgKHRoaXMuY2FuY2VsbGVkKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIGlmICh0aGlzLnRhc2sub25Db250aW51ZSkgewogICAgICAgIHRoaXMudGFzay5vbkNvbnRpbnVlLmNhbGwodGhpcy50YXNrLCB0aGlzLl9zY2hlZHVsZU5leHRCb3VuZCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5fc2NoZWR1bGVOZXh0KCk7CiAgICAgIH0KICAgIH0sCgogICAgX3NjaGVkdWxlTmV4dDogZnVuY3Rpb24gSW50ZXJuYWxSZW5kZXJUYXNrX19zY2hlZHVsZU5leHQoKSB7CiAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5fbmV4dEJvdW5kKTsKICAgIH0sCgogICAgX25leHQ6IGZ1bmN0aW9uIEludGVybmFsUmVuZGVyVGFza19fbmV4dCgpIHsKICAgICAgaWYgKHRoaXMuY2FuY2VsbGVkKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIHRoaXMub3BlcmF0b3JMaXN0SWR4ID0gdGhpcy5nZnguZXhlY3V0ZU9wZXJhdG9yTGlzdCh0aGlzLm9wZXJhdG9yTGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3BlcmF0b3JMaXN0SWR4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY29udGludWVCb3VuZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RlcHBlcik7CiAgICAgIGlmICh0aGlzLm9wZXJhdG9yTGlzdElkeCA9PT0gdGhpcy5vcGVyYXRvckxpc3QuYXJnc0FycmF5Lmxlbmd0aCkgewogICAgICAgIHRoaXMucnVubmluZyA9IGZhbHNlOwogICAgICAgIGlmICh0aGlzLm9wZXJhdG9yTGlzdC5sYXN0Q2h1bmspIHsKICAgICAgICAgIHRoaXMuZ2Z4LmVuZERyYXdpbmcoKTsKICAgICAgICAgIHRoaXMuY2FsbGJhY2soKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgfTsKCiAgcmV0dXJuIEludGVybmFsUmVuZGVyVGFzazsKfSkoKTsKCgp2YXIgTWV0YWRhdGEgPSBQREZKUy5NZXRhZGF0YSA9IChmdW5jdGlvbiBNZXRhZGF0YUNsb3N1cmUoKSB7CiAgZnVuY3Rpb24gZml4TWV0YWRhdGEobWV0YSkgewogICAgcmV0dXJuIG1ldGEucmVwbGFjZSgvPlxcMzc2XFwzNzcoW148XSspL2csIGZ1bmN0aW9uKGFsbCwgY29kZXMpIHsKICAgICAgdmFyIGJ5dGVzID0gY29kZXMucmVwbGFjZSgvXFwoWzAtM10pKFswLTddKShbMC03XSkvZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihjb2RlLCBkMSwgZDIsIGQzKSB7CiAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoZDEgKiA2NCArIGQyICogOCArIGQzICogMSk7CiAgICAgIH0pOwogICAgICB2YXIgY2hhcnMgPSAnJzsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7IGkgKz0gMikgewogICAgICAgIHZhciBjb2RlID0gYnl0ZXMuY2hhckNvZGVBdChpKSAqIDI1NiArIGJ5dGVzLmNoYXJDb2RlQXQoaSArIDEpOwogICAgICAgIGNoYXJzICs9IGNvZGUgPj0gMzIgJiYgY29kZSA8IDEyNyAmJiBjb2RlICE9PSA2MCAmJiBjb2RlICE9PSA2MiAmJgogICAgICAgICAgY29kZSAhPT0gMzggJiYgZmFsc2UgPyBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUpIDoKICAgICAgICAgICcmI3gnICsgKDB4MTAwMDAgKyBjb2RlKS50b1N0cmluZygxNikuc3Vic3RyaW5nKDEpICsgJzsnOwogICAgICB9CiAgICAgIHJldHVybiAnPicgKyBjaGFyczsKICAgIH0pOwogIH0KCiAgZnVuY3Rpb24gTWV0YWRhdGEobWV0YSkgewogICAgaWYgKHR5cGVvZiBtZXRhID09PSAnc3RyaW5nJykgewogICAgICAvLyBHaG9zdHNjcmlwdCBwcm9kdWNlcyBpbnZhbGlkIG1ldGFkYXRhCiAgICAgIG1ldGEgPSBmaXhNZXRhZGF0YShtZXRhKTsKCiAgICAgIHZhciBwYXJzZXIgPSBuZXcgRE9NUGFyc2VyKCk7CiAgICAgIG1ldGEgPSBwYXJzZXIucGFyc2VGcm9tU3RyaW5nKG1ldGEsICdhcHBsaWNhdGlvbi94bWwnKTsKICAgIH0gZWxzZSBpZiAoIShtZXRhIGluc3RhbmNlb2YgRG9jdW1lbnQpKSB7CiAgICAgIGVycm9yKCdNZXRhZGF0YTogSW52YWxpZCBtZXRhZGF0YSBvYmplY3QnKTsKICAgIH0KCiAgICB0aGlzLm1ldGFEb2N1bWVudCA9IG1ldGE7CiAgICB0aGlzLm1ldGFkYXRhID0ge307CiAgICB0aGlzLnBhcnNlKCk7CiAgfQoKICBNZXRhZGF0YS5wcm90b3R5cGUgPSB7CiAgICBwYXJzZTogZnVuY3Rpb24gTWV0YWRhdGFfcGFyc2UoKSB7CiAgICAgIHZhciBkb2MgPSB0aGlzLm1ldGFEb2N1bWVudDsKICAgICAgdmFyIHJkZiA9IGRvYy5kb2N1bWVudEVsZW1lbnQ7CgogICAgICBpZiAocmRmLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT09ICdyZGY6cmRmJykgeyAvLyBXcmFwcGVkIGluIDx4bXBtZXRhPgogICAgICAgIHJkZiA9IHJkZi5maXJzdENoaWxkOwogICAgICAgIHdoaWxlIChyZGYgJiYgcmRmLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT09ICdyZGY6cmRmJykgewogICAgICAgICAgcmRmID0gcmRmLm5leHRTaWJsaW5nOwogICAgICAgIH0KICAgICAgfQoKICAgICAgdmFyIG5vZGVOYW1lID0gKHJkZikgPyByZGYubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA6IG51bGw7CiAgICAgIGlmICghcmRmIHx8IG5vZGVOYW1lICE9PSAncmRmOnJkZicgfHwgIXJkZi5oYXNDaGlsZE5vZGVzKCkpIHsKICAgICAgICByZXR1cm47CiAgICAgIH0KCiAgICAgIHZhciBjaGlsZHJlbiA9IHJkZi5jaGlsZE5vZGVzLCBkZXNjLCBlbnRyeSwgbmFtZSwgaSwgaWksIGxlbmd0aCwgaUxlbmd0aDsKICAgICAgZm9yIChpID0gMCwgbGVuZ3RoID0gY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgICBkZXNjID0gY2hpbGRyZW5baV07CiAgICAgICAgaWYgKGRlc2Mubm9kZU5hbWUudG9Mb3dlckNhc2UoKSAhPT0gJ3JkZjpkZXNjcmlwdGlvbicpIHsKICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KCiAgICAgICAgZm9yIChpaSA9IDAsIGlMZW5ndGggPSBkZXNjLmNoaWxkTm9kZXMubGVuZ3RoOyBpaSA8IGlMZW5ndGg7IGlpKyspIHsKICAgICAgICAgIGlmIChkZXNjLmNoaWxkTm9kZXNbaWldLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT09ICcjdGV4dCcpIHsKICAgICAgICAgICAgZW50cnkgPSBkZXNjLmNoaWxkTm9kZXNbaWldOwogICAgICAgICAgICBuYW1lID0gZW50cnkubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsKICAgICAgICAgICAgdGhpcy5tZXRhZGF0YVtuYW1lXSA9IGVudHJ5LnRleHRDb250ZW50LnRyaW0oKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0sCgogICAgZ2V0OiBmdW5jdGlvbiBNZXRhZGF0YV9nZXQobmFtZSkgewogICAgICByZXR1cm4gdGhpcy5tZXRhZGF0YVtuYW1lXSB8fCBudWxsOwogICAgfSwKCiAgICBoYXM6IGZ1bmN0aW9uIE1ldGFkYXRhX2hhcyhuYW1lKSB7CiAgICAgIHJldHVybiB0eXBlb2YgdGhpcy5tZXRhZGF0YVtuYW1lXSAhPT0gJ3VuZGVmaW5lZCc7CiAgICB9CiAgfTsKCiAgcmV0dXJuIE1ldGFkYXRhOwp9KSgpOwoKCi8vIDxjYW52YXM+IGNvbnRleHRzIHN0b3JlIG1vc3Qgb2YgdGhlIHN0YXRlIHdlIG5lZWQgbmF0aXZlbHkuCi8vIEhvd2V2ZXIsIFBERiBuZWVkcyBhIGJpdCBtb3JlIHN0YXRlLCB3aGljaCB3ZSBzdG9yZSBoZXJlLgoKLy8gTWluaW1hbCBmb250IHNpemUgdGhhdCB3b3VsZCBiZSB1c2VkIGR1cmluZyBjYW52YXMgZmlsbFRleHQgb3BlcmF0aW9ucy4KdmFyIE1JTl9GT05UX1NJWkUgPSAxNjsKLy8gTWF4aW11bSBmb250IHNpemUgdGhhdCB3b3VsZCBiZSB1c2VkIGR1cmluZyBjYW52YXMgZmlsbFRleHQgb3BlcmF0aW9ucy4KdmFyIE1BWF9GT05UX1NJWkUgPSAxMDA7CnZhciBNQVhfR1JPVVBfU0laRSA9IDQwOTY7CgovLyBIZXVyaXN0aWMgdmFsdWUgdXNlZCB3aGVuIGVuZm9yY2luZyBtaW5pbXVtIGxpbmUgd2lkdGhzLgp2YXIgTUlOX1dJRFRIX0ZBQ1RPUiA9IDAuNjU7Cgp2YXIgQ09NUElMRV9UWVBFM19HTFlQSFMgPSB0cnVlOwp2YXIgTUFYX1NJWkVfVE9fQ09NUElMRSA9IDEwMDA7Cgp2YXIgRlVMTF9DSFVOS19IRUlHSFQgPSAxNjsKCmZ1bmN0aW9uIGNyZWF0ZVNjcmF0Y2hDYW52YXMod2lkdGgsIGhlaWdodCkgewogIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsKICBjYW52YXMud2lkdGggPSB3aWR0aDsKICBjYW52YXMuaGVpZ2h0ID0gaGVpZ2h0OwogIHJldHVybiBjYW52YXM7Cn0KCmZ1bmN0aW9uIGFkZENvbnRleHRDdXJyZW50VHJhbnNmb3JtKGN0eCkgewogIC8vIElmIHRoZSBjb250ZXh0IGRvZXNuJ3QgZXhwb3NlIGEgYG1vekN1cnJlbnRUcmFuc2Zvcm1gLCBhZGQgYSBKUyBiYXNlZCBvbmUuCiAgaWYgKCFjdHgubW96Q3VycmVudFRyYW5zZm9ybSkgewogICAgY3R4Ll9vcmlnaW5hbFNhdmUgPSBjdHguc2F2ZTsKICAgIGN0eC5fb3JpZ2luYWxSZXN0b3JlID0gY3R4LnJlc3RvcmU7CiAgICBjdHguX29yaWdpbmFsUm90YXRlID0gY3R4LnJvdGF0ZTsKICAgIGN0eC5fb3JpZ2luYWxTY2FsZSA9IGN0eC5zY2FsZTsKICAgIGN0eC5fb3JpZ2luYWxUcmFuc2xhdGUgPSBjdHgudHJhbnNsYXRlOwogICAgY3R4Ll9vcmlnaW5hbFRyYW5zZm9ybSA9IGN0eC50cmFuc2Zvcm07CiAgICBjdHguX29yaWdpbmFsU2V0VHJhbnNmb3JtID0gY3R4LnNldFRyYW5zZm9ybTsKCiAgICBjdHguX3RyYW5zZm9ybU1hdHJpeCA9IGN0eC5fdHJhbnNmb3JtTWF0cml4IHx8IFsxLCAwLCAwLCAxLCAwLCAwXTsKICAgIGN0eC5fdHJhbnNmb3JtU3RhY2sgPSBbXTsKCiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3R4LCAnbW96Q3VycmVudFRyYW5zZm9ybScsIHsKICAgICAgZ2V0OiBmdW5jdGlvbiBnZXRDdXJyZW50VHJhbnNmb3JtKCkgewogICAgICAgIHJldHVybiB0aGlzLl90cmFuc2Zvcm1NYXRyaXg7CiAgICAgIH0KICAgIH0pOwoKICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjdHgsICdtb3pDdXJyZW50VHJhbnNmb3JtSW52ZXJzZScsIHsKICAgICAgZ2V0OiBmdW5jdGlvbiBnZXRDdXJyZW50VHJhbnNmb3JtSW52ZXJzZSgpIHsKICAgICAgICAvLyBDYWxjdWxhdGlvbiBkb25lIHVzaW5nIFdvbGZyYW1BbHBoYToKICAgICAgICAvLyBodHRwOi8vd3d3LndvbGZyYW1hbHBoYS5jb20vaW5wdXQvPwogICAgICAgIC8vICAgaT1JbnZlcnNlK3t7YSUyQytjJTJDK2V9JTJDK3tiJTJDK2QlMkMrZn0lMkMrezAlMkMrMCUyQysxfX0KCiAgICAgICAgdmFyIG0gPSB0aGlzLl90cmFuc2Zvcm1NYXRyaXg7CiAgICAgICAgdmFyIGEgPSBtWzBdLCBiID0gbVsxXSwgYyA9IG1bMl0sIGQgPSBtWzNdLCBlID0gbVs0XSwgZiA9IG1bNV07CgogICAgICAgIHZhciBhZF9iYyA9IGEgKiBkIC0gYiAqIGM7CiAgICAgICAgdmFyIGJjX2FkID0gYiAqIGMgLSBhICogZDsKCiAgICAgICAgcmV0dXJuIFsKICAgICAgICAgIGQgLyBhZF9iYywKICAgICAgICAgIGIgLyBiY19hZCwKICAgICAgICAgIGMgLyBiY19hZCwKICAgICAgICAgIGEgLyBhZF9iYywKICAgICAgICAgIChkICogZSAtIGMgKiBmKSAvIGJjX2FkLAogICAgICAgICAgKGIgKiBlIC0gYSAqIGYpIC8gYWRfYmMKICAgICAgICBdOwogICAgICB9CiAgICB9KTsKCiAgICBjdHguc2F2ZSA9IGZ1bmN0aW9uIGN0eFNhdmUoKSB7CiAgICAgIHZhciBvbGQgPSB0aGlzLl90cmFuc2Zvcm1NYXRyaXg7CiAgICAgIHRoaXMuX3RyYW5zZm9ybVN0YWNrLnB1c2gob2xkKTsKICAgICAgdGhpcy5fdHJhbnNmb3JtTWF0cml4ID0gb2xkLnNsaWNlKDAsIDYpOwoKICAgICAgdGhpcy5fb3JpZ2luYWxTYXZlKCk7CiAgICB9OwoKICAgIGN0eC5yZXN0b3JlID0gZnVuY3Rpb24gY3R4UmVzdG9yZSgpIHsKICAgICAgdmFyIHByZXYgPSB0aGlzLl90cmFuc2Zvcm1TdGFjay5wb3AoKTsKICAgICAgaWYgKHByZXYpIHsKICAgICAgICB0aGlzLl90cmFuc2Zvcm1NYXRyaXggPSBwcmV2OwogICAgICAgIHRoaXMuX29yaWdpbmFsUmVzdG9yZSgpOwogICAgICB9CiAgICB9OwoKICAgIGN0eC50cmFuc2xhdGUgPSBmdW5jdGlvbiBjdHhUcmFuc2xhdGUoeCwgeSkgewogICAgICB2YXIgbSA9IHRoaXMuX3RyYW5zZm9ybU1hdHJpeDsKICAgICAgbVs0XSA9IG1bMF0gKiB4ICsgbVsyXSAqIHkgKyBtWzRdOwogICAgICBtWzVdID0gbVsxXSAqIHggKyBtWzNdICogeSArIG1bNV07CgogICAgICB0aGlzLl9vcmlnaW5hbFRyYW5zbGF0ZSh4LCB5KTsKICAgIH07CgogICAgY3R4LnNjYWxlID0gZnVuY3Rpb24gY3R4U2NhbGUoeCwgeSkgewogICAgICB2YXIgbSA9IHRoaXMuX3RyYW5zZm9ybU1hdHJpeDsKICAgICAgbVswXSA9IG1bMF0gKiB4OwogICAgICBtWzFdID0gbVsxXSAqIHg7CiAgICAgIG1bMl0gPSBtWzJdICogeTsKICAgICAgbVszXSA9IG1bM10gKiB5OwoKICAgICAgdGhpcy5fb3JpZ2luYWxTY2FsZSh4LCB5KTsKICAgIH07CgogICAgY3R4LnRyYW5zZm9ybSA9IGZ1bmN0aW9uIGN0eFRyYW5zZm9ybShhLCBiLCBjLCBkLCBlLCBmKSB7CiAgICAgIHZhciBtID0gdGhpcy5fdHJhbnNmb3JtTWF0cml4OwogICAgICB0aGlzLl90cmFuc2Zvcm1NYXRyaXggPSBbCiAgICAgICAgbVswXSAqIGEgKyBtWzJdICogYiwKICAgICAgICBtWzFdICogYSArIG1bM10gKiBiLAogICAgICAgIG1bMF0gKiBjICsgbVsyXSAqIGQsCiAgICAgICAgbVsxXSAqIGMgKyBtWzNdICogZCwKICAgICAgICBtWzBdICogZSArIG1bMl0gKiBmICsgbVs0XSwKICAgICAgICBtWzFdICogZSArIG1bM10gKiBmICsgbVs1XQogICAgICBdOwoKICAgICAgY3R4Ll9vcmlnaW5hbFRyYW5zZm9ybShhLCBiLCBjLCBkLCBlLCBmKTsKICAgIH07CgogICAgY3R4LnNldFRyYW5zZm9ybSA9IGZ1bmN0aW9uIGN0eFNldFRyYW5zZm9ybShhLCBiLCBjLCBkLCBlLCBmKSB7CiAgICAgIHRoaXMuX3RyYW5zZm9ybU1hdHJpeCA9IFthLCBiLCBjLCBkLCBlLCBmXTsKCiAgICAgIGN0eC5fb3JpZ2luYWxTZXRUcmFuc2Zvcm0oYSwgYiwgYywgZCwgZSwgZik7CiAgICB9OwoKICAgIGN0eC5yb3RhdGUgPSBmdW5jdGlvbiBjdHhSb3RhdGUoYW5nbGUpIHsKICAgICAgdmFyIGNvc1ZhbHVlID0gTWF0aC5jb3MoYW5nbGUpOwogICAgICB2YXIgc2luVmFsdWUgPSBNYXRoLnNpbihhbmdsZSk7CgogICAgICB2YXIgbSA9IHRoaXMuX3RyYW5zZm9ybU1hdHJpeDsKICAgICAgdGhpcy5fdHJhbnNmb3JtTWF0cml4ID0gWwogICAgICAgIG1bMF0gKiBjb3NWYWx1ZSArIG1bMl0gKiBzaW5WYWx1ZSwKICAgICAgICBtWzFdICogY29zVmFsdWUgKyBtWzNdICogc2luVmFsdWUsCiAgICAgICAgbVswXSAqICgtc2luVmFsdWUpICsgbVsyXSAqIGNvc1ZhbHVlLAogICAgICAgIG1bMV0gKiAoLXNpblZhbHVlKSArIG1bM10gKiBjb3NWYWx1ZSwKICAgICAgICBtWzRdLAogICAgICAgIG1bNV0KICAgICAgXTsKCiAgICAgIHRoaXMuX29yaWdpbmFsUm90YXRlKGFuZ2xlKTsKICAgIH07CiAgfQp9Cgp2YXIgQ2FjaGVkQ2FudmFzZXMgPSAoZnVuY3Rpb24gQ2FjaGVkQ2FudmFzZXNDbG9zdXJlKCkgewogIHZhciBjYWNoZSA9IHt9OwogIHJldHVybiB7CiAgICBnZXRDYW52YXM6IGZ1bmN0aW9uIENhY2hlZENhbnZhc2VzX2dldENhbnZhcyhpZCwgd2lkdGgsIGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrVHJhbnNmb3JtKSB7CiAgICAgIHZhciBjYW52YXNFbnRyeTsKICAgICAgaWYgKGNhY2hlW2lkXSAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgY2FudmFzRW50cnkgPSBjYWNoZVtpZF07CiAgICAgICAgY2FudmFzRW50cnkuY2FudmFzLndpZHRoID0gd2lkdGg7CiAgICAgICAgY2FudmFzRW50cnkuY2FudmFzLmhlaWdodCA9IGhlaWdodDsKICAgICAgICAvLyByZXNldCBjYW52YXMgdHJhbnNmb3JtIGZvciBlbXVsYXRlZCBtb3pDdXJyZW50VHJhbnNmb3JtLCBpZiBuZWVkZWQKICAgICAgICBjYW52YXNFbnRyeS5jb250ZXh0LnNldFRyYW5zZm9ybSgxLCAwLCAwLCAxLCAwLCAwKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB2YXIgY2FudmFzID0gY3JlYXRlU2NyYXRjaENhbnZhcyh3aWR0aCwgaGVpZ2h0KTsKICAgICAgICB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7CiAgICAgICAgaWYgKHRyYWNrVHJhbnNmb3JtKSB7CiAgICAgICAgICBhZGRDb250ZXh0Q3VycmVudFRyYW5zZm9ybShjdHgpOwogICAgICAgIH0KICAgICAgICBjYWNoZVtpZF0gPSBjYW52YXNFbnRyeSA9IHtjYW52YXM6IGNhbnZhcywgY29udGV4dDogY3R4fTsKICAgICAgfQogICAgICByZXR1cm4gY2FudmFzRW50cnk7CiAgICB9LAogICAgY2xlYXI6IGZ1bmN0aW9uICgpIHsKICAgICAgZm9yICh2YXIgaWQgaW4gY2FjaGUpIHsKICAgICAgICB2YXIgY2FudmFzRW50cnkgPSBjYWNoZVtpZF07CiAgICAgICAgLy8gWmVyb2luZyB0aGUgd2lkdGggYW5kIGhlaWdodCBjYXVzZXMgRmlyZWZveCB0byByZWxlYXNlIGdyYXBoaWNzCiAgICAgICAgLy8gcmVzb3VyY2VzIGltbWVkaWF0ZWx5LCB3aGljaCBjYW4gZ3JlYXRseSByZWR1Y2UgbWVtb3J5IGNvbnN1bXB0aW9uLgogICAgICAgIGNhbnZhc0VudHJ5LmNhbnZhcy53aWR0aCA9IDA7CiAgICAgICAgY2FudmFzRW50cnkuY2FudmFzLmhlaWdodCA9IDA7CiAgICAgICAgZGVsZXRlIGNhY2hlW2lkXTsKICAgICAgfQogICAgfQogIH07Cn0pKCk7CgpmdW5jdGlvbiBjb21waWxlVHlwZTNHbHlwaChpbWdEYXRhKSB7CiAgdmFyIFBPSU5UX1RPX1BST0NFU1NfTElNSVQgPSAxMDAwOwoKICB2YXIgd2lkdGggPSBpbWdEYXRhLndpZHRoLCBoZWlnaHQgPSBpbWdEYXRhLmhlaWdodDsKICB2YXIgaSwgaiwgajAsIHdpZHRoMSA9IHdpZHRoICsgMTsKICB2YXIgcG9pbnRzID0gbmV3IFVpbnQ4QXJyYXkod2lkdGgxICogKGhlaWdodCArIDEpKTsKICB2YXIgUE9JTlRfVFlQRVMgPQogICAgICBuZXcgVWludDhBcnJheShbMCwgMiwgNCwgMCwgMSwgMCwgNSwgNCwgOCwgMTAsIDAsIDgsIDAsIDIsIDEsIDBdKTsKCiAgLy8gZGVjb2RlcyBiaXQtcGFja2VkIG1hc2sgZGF0YQogIHZhciBsaW5lU2l6ZSA9ICh3aWR0aCArIDcpICYgfjcsIGRhdGEwID0gaW1nRGF0YS5kYXRhOwogIHZhciBkYXRhID0gbmV3IFVpbnQ4QXJyYXkobGluZVNpemUgKiBoZWlnaHQpLCBwb3MgPSAwLCBpaTsKICBmb3IgKGkgPSAwLCBpaSA9IGRhdGEwLmxlbmd0aDsgaSA8IGlpOyBpKyspIHsKICAgIHZhciBtYXNrID0gMTI4LCBlbGVtID0gZGF0YTBbaV07CiAgICB3aGlsZSAobWFzayA+IDApIHsKICAgICAgZGF0YVtwb3MrK10gPSAoZWxlbSAmIG1hc2spID8gMCA6IDI1NTsKICAgICAgbWFzayA+Pj0gMTsKICAgIH0KICB9CgogIC8vIGZpbmRpbmcgaXRlcmVzdGluZyBwb2ludHM6IGV2ZXJ5IHBvaW50IGlzIGxvY2F0ZWQgYmV0d2VlbiBtYXNrIHBpeGVscywKICAvLyBzbyB0aGVyZSB3aWxsIGJlIHBvaW50cyBvZiB0aGUgKHdpZHRoICsgMSl4KGhlaWdodCArIDEpIGdyaWQuIEV2ZXJ5IHBvaW50CiAgLy8gd2lsbCBoYXZlIGZsYWdzIGFzc2lnbmVkIGJhc2VkIG9uIG5laWdoYm9yaW5nIG1hc2sgcGl4ZWxzOgogIC8vICAgNCB8IDgKICAvLyAgIC0tUC0tCiAgLy8gICAyIHwgMQogIC8vIFdlIGFyZSBpbnRlcmVzdGVkIG9ubHkgaW4gcG9pbnRzIHdpdGggdGhlIGZsYWdzOgogIC8vICAgLSBvdXRzaWRlIGNvcm5lcnM6IDEsIDIsIDQsIDg7CiAgLy8gICAtIGluc2lkZSBjb3JuZXJzOiA3LCAxMSwgMTMsIDE0OwogIC8vICAgLSBhbmQsIGludGVyc2VjdGlvbnM6IDUsIDEwLgogIHZhciBjb3VudCA9IDA7CiAgcG9zID0gMDsKICBpZiAoZGF0YVtwb3NdICE9PSAwKSB7CiAgICBwb2ludHNbMF0gPSAxOwogICAgKytjb3VudDsKICB9CiAgZm9yIChqID0gMTsgaiA8IHdpZHRoOyBqKyspIHsKICAgIGlmIChkYXRhW3Bvc10gIT09IGRhdGFbcG9zICsgMV0pIHsKICAgICAgcG9pbnRzW2pdID0gZGF0YVtwb3NdID8gMiA6IDE7CiAgICAgICsrY291bnQ7CiAgICB9CiAgICBwb3MrKzsKICB9CiAgaWYgKGRhdGFbcG9zXSAhPT0gMCkgewogICAgcG9pbnRzW2pdID0gMjsKICAgICsrY291bnQ7CiAgfQogIGZvciAoaSA9IDE7IGkgPCBoZWlnaHQ7IGkrKykgewogICAgcG9zID0gaSAqIGxpbmVTaXplOwogICAgajAgPSBpICogd2lkdGgxOwogICAgaWYgKGRhdGFbcG9zIC0gbGluZVNpemVdICE9PSBkYXRhW3Bvc10pIHsKICAgICAgcG9pbnRzW2owXSA9IGRhdGFbcG9zXSA/IDEgOiA4OwogICAgICArK2NvdW50OwogICAgfQogICAgLy8gJ3N1bScgaXMgdGhlIHBvc2l0aW9uIG9mIHRoZSBjdXJyZW50IHBpeGVsIGNvbmZpZ3VyYXRpb24gaW4gdGhlICdUWVBFUycKICAgIC8vIGFycmF5IChpbiBvcmRlciA4LTEtMi00LCBzbyB3ZSBjYW4gdXNlICc+PjInIHRvIHNoaWZ0IHRoZSBjb2x1bW4pLgogICAgdmFyIHN1bSA9IChkYXRhW3Bvc10gPyA0IDogMCkgKyAoZGF0YVtwb3MgLSBsaW5lU2l6ZV0gPyA4IDogMCk7CiAgICBmb3IgKGogPSAxOyBqIDwgd2lkdGg7IGorKykgewogICAgICBzdW0gPSAoc3VtID4+IDIpICsgKGRhdGFbcG9zICsgMV0gPyA0IDogMCkgKwogICAgICAgICAgICAoZGF0YVtwb3MgLSBsaW5lU2l6ZSArIDFdID8gOCA6IDApOwogICAgICBpZiAoUE9JTlRfVFlQRVNbc3VtXSkgewogICAgICAgIHBvaW50c1tqMCArIGpdID0gUE9JTlRfVFlQRVNbc3VtXTsKICAgICAgICArK2NvdW50OwogICAgICB9CiAgICAgIHBvcysrOwogICAgfQogICAgaWYgKGRhdGFbcG9zIC0gbGluZVNpemVdICE9PSBkYXRhW3Bvc10pIHsKICAgICAgcG9pbnRzW2owICsgal0gPSBkYXRhW3Bvc10gPyAyIDogNDsKICAgICAgKytjb3VudDsKICAgIH0KCiAgICBpZiAoY291bnQgPiBQT0lOVF9UT19QUk9DRVNTX0xJTUlUKSB7CiAgICAgIHJldHVybiBudWxsOwogICAgfQogIH0KCiAgcG9zID0gbGluZVNpemUgKiAoaGVpZ2h0IC0gMSk7CiAgajAgPSBpICogd2lkdGgxOwogIGlmIChkYXRhW3Bvc10gIT09IDApIHsKICAgIHBvaW50c1tqMF0gPSA4OwogICAgKytjb3VudDsKICB9CiAgZm9yIChqID0gMTsgaiA8IHdpZHRoOyBqKyspIHsKICAgIGlmIChkYXRhW3Bvc10gIT09IGRhdGFbcG9zICsgMV0pIHsKICAgICAgcG9pbnRzW2owICsgal0gPSBkYXRhW3Bvc10gPyA0IDogODsKICAgICAgKytjb3VudDsKICAgIH0KICAgIHBvcysrOwogIH0KICBpZiAoZGF0YVtwb3NdICE9PSAwKSB7CiAgICBwb2ludHNbajAgKyBqXSA9IDQ7CiAgICArK2NvdW50OwogIH0KICBpZiAoY291bnQgPiBQT0lOVF9UT19QUk9DRVNTX0xJTUlUKSB7CiAgICByZXR1cm4gbnVsbDsKICB9CgogIC8vIGJ1aWxkaW5nIG91dGxpbmVzCiAgdmFyIHN0ZXBzID0gbmV3IEludDMyQXJyYXkoWzAsIHdpZHRoMSwgLTEsIDAsIC13aWR0aDEsIDAsIDAsIDAsIDFdKTsKICB2YXIgb3V0bGluZXMgPSBbXTsKICBmb3IgKGkgPSAwOyBjb3VudCAmJiBpIDw9IGhlaWdodDsgaSsrKSB7CiAgICB2YXIgcCA9IGkgKiB3aWR0aDE7CiAgICB2YXIgZW5kID0gcCArIHdpZHRoOwogICAgd2hpbGUgKHAgPCBlbmQgJiYgIXBvaW50c1twXSkgewogICAgICBwKys7CiAgICB9CiAgICBpZiAocCA9PT0gZW5kKSB7CiAgICAgIGNvbnRpbnVlOwogICAgfQogICAgdmFyIGNvb3JkcyA9IFtwICUgd2lkdGgxLCBpXTsKCiAgICB2YXIgdHlwZSA9IHBvaW50c1twXSwgcDAgPSBwLCBwcDsKICAgIGRvIHsKICAgICAgdmFyIHN0ZXAgPSBzdGVwc1t0eXBlXTsKICAgICAgZG8gewogICAgICAgIHAgKz0gc3RlcDsKICAgICAgfSB3aGlsZSAoIXBvaW50c1twXSk7CgogICAgICBwcCA9IHBvaW50c1twXTsKICAgICAgaWYgKHBwICE9PSA1ICYmIHBwICE9PSAxMCkgewogICAgICAgIC8vIHNldCBuZXcgZGlyZWN0aW9uCiAgICAgICAgdHlwZSA9IHBwOwogICAgICAgIC8vIGRlbGV0ZSBtYXJrCiAgICAgICAgcG9pbnRzW3BdID0gMDsKICAgICAgfSBlbHNlIHsgLy8gdHlwZSBpcyA1IG9yIDEwLCBpZSwgYSBjcm9zc2luZwogICAgICAgIC8vIHNldCBuZXcgZGlyZWN0aW9uCiAgICAgICAgdHlwZSA9IHBwICYgKCgweDMzICogdHlwZSkgPj4gNCk7CiAgICAgICAgLy8gc2V0IG5ldyB0eXBlIGZvciAiZnV0dXJlIGhpdCIKICAgICAgICBwb2ludHNbcF0gJj0gKHR5cGUgPj4gMiB8IHR5cGUgPDwgMik7CiAgICAgIH0KCiAgICAgIGNvb3Jkcy5wdXNoKHAgJSB3aWR0aDEpOwogICAgICBjb29yZHMucHVzaCgocCAvIHdpZHRoMSkgfCAwKTsKICAgICAgLS1jb3VudDsKICAgIH0gd2hpbGUgKHAwICE9PSBwKTsKICAgIG91dGxpbmVzLnB1c2goY29vcmRzKTsKICAgIC0taTsKICB9CgogIHZhciBkcmF3T3V0bGluZSA9IGZ1bmN0aW9uKGMpIHsKICAgIGMuc2F2ZSgpOwogICAgLy8gdGhlIHBhdGggc2hhbGwgYmUgcGFpbnRlZCBpbiBbMC4uMV14WzAuLjFdIHNwYWNlCiAgICBjLnNjYWxlKDEgLyB3aWR0aCwgLTEgLyBoZWlnaHQpOwogICAgYy50cmFuc2xhdGUoMCwgLWhlaWdodCk7CiAgICBjLmJlZ2luUGF0aCgpOwogICAgZm9yICh2YXIgaSA9IDAsIGlpID0gb3V0bGluZXMubGVuZ3RoOyBpIDwgaWk7IGkrKykgewogICAgICB2YXIgbyA9IG91dGxpbmVzW2ldOwogICAgICBjLm1vdmVUbyhvWzBdLCBvWzFdKTsKICAgICAgZm9yICh2YXIgaiA9IDIsIGpqID0gby5sZW5ndGg7IGogPCBqajsgaiArPSAyKSB7CiAgICAgICAgYy5saW5lVG8ob1tqXSwgb1tqKzFdKTsKICAgICAgfQogICAgfQogICAgYy5maWxsKCk7CiAgICBjLmJlZ2luUGF0aCgpOwogICAgYy5yZXN0b3JlKCk7CiAgfTsKCiAgcmV0dXJuIGRyYXdPdXRsaW5lOwp9Cgp2YXIgQ2FudmFzRXh0cmFTdGF0ZSA9IChmdW5jdGlvbiBDYW52YXNFeHRyYVN0YXRlQ2xvc3VyZSgpIHsKICBmdW5jdGlvbiBDYW52YXNFeHRyYVN0YXRlKG9sZCkgewogICAgLy8gQXJlIHNvZnQgbWFza3MgYW5kIGFscGhhIHZhbHVlcyBzaGFwZXMgb3Igb3BhY2l0aWVzPwogICAgdGhpcy5hbHBoYUlzU2hhcGUgPSBmYWxzZTsKICAgIHRoaXMuZm9udFNpemUgPSAwOwogICAgdGhpcy5mb250U2l6ZVNjYWxlID0gMTsKICAgIHRoaXMudGV4dE1hdHJpeCA9IElERU5USVRZX01BVFJJWDsKICAgIHRoaXMudGV4dE1hdHJpeFNjYWxlID0gMTsKICAgIHRoaXMuZm9udE1hdHJpeCA9IEZPTlRfSURFTlRJVFlfTUFUUklYOwogICAgdGhpcy5sZWFkaW5nID0gMDsKICAgIC8vIEN1cnJlbnQgcG9pbnQgKGluIHVzZXIgY29vcmRpbmF0ZXMpCiAgICB0aGlzLnggPSAwOwogICAgdGhpcy55ID0gMDsKICAgIC8vIFN0YXJ0IG9mIHRleHQgbGluZSAoaW4gdGV4dCBjb29yZGluYXRlcykKICAgIHRoaXMubGluZVggPSAwOwogICAgdGhpcy5saW5lWSA9IDA7CiAgICAvLyBDaGFyYWN0ZXIgYW5kIHdvcmQgc3BhY2luZwogICAgdGhpcy5jaGFyU3BhY2luZyA9IDA7CiAgICB0aGlzLndvcmRTcGFjaW5nID0gMDsKICAgIHRoaXMudGV4dEhTY2FsZSA9IDE7CiAgICB0aGlzLnRleHRSZW5kZXJpbmdNb2RlID0gVGV4dFJlbmRlcmluZ01vZGUuRklMTDsKICAgIHRoaXMudGV4dFJpc2UgPSAwOwogICAgLy8gRGVmYXVsdCBmb3JlIGFuZCBiYWNrZ3JvdW5kIGNvbG9ycwogICAgdGhpcy5maWxsQ29sb3IgPSAnIzAwMDAwMCc7CiAgICB0aGlzLnN0cm9rZUNvbG9yID0gJyMwMDAwMDAnOwogICAgdGhpcy5wYXR0ZXJuRmlsbCA9IGZhbHNlOwogICAgLy8gTm90ZTogZmlsbCBhbHBoYSBhcHBsaWVzIHRvIGFsbCBub24tc3Ryb2tpbmcgb3BlcmF0aW9ucwogICAgdGhpcy5maWxsQWxwaGEgPSAxOwogICAgdGhpcy5zdHJva2VBbHBoYSA9IDE7CiAgICB0aGlzLmxpbmVXaWR0aCA9IDE7CiAgICB0aGlzLmFjdGl2ZVNNYXNrID0gbnVsbDsgLy8gbm9uY2xvbmFibGUgZmllbGQgKHNlZSB0aGUgc2F2ZSBtZXRob2QgYmVsb3cpCgogICAgdGhpcy5vbGQgPSBvbGQ7CiAgfQoKICBDYW52YXNFeHRyYVN0YXRlLnByb3RvdHlwZSA9IHsKICAgIGNsb25lOiBmdW5jdGlvbiBDYW52YXNFeHRyYVN0YXRlX2Nsb25lKCkgewogICAgICByZXR1cm4gT2JqZWN0LmNyZWF0ZSh0aGlzKTsKICAgIH0sCiAgICBzZXRDdXJyZW50UG9pbnQ6IGZ1bmN0aW9uIENhbnZhc0V4dHJhU3RhdGVfc2V0Q3VycmVudFBvaW50KHgsIHkpIHsKICAgICAgdGhpcy54ID0geDsKICAgICAgdGhpcy55ID0geTsKICAgIH0KICB9OwogIHJldHVybiBDYW52YXNFeHRyYVN0YXRlOwp9KSgpOwoKdmFyIENhbnZhc0dyYXBoaWNzID0gKGZ1bmN0aW9uIENhbnZhc0dyYXBoaWNzQ2xvc3VyZSgpIHsKICAvLyBEZWZpbmVzIHRoZSB0aW1lIHRoZSBleGVjdXRlT3BlcmF0b3JMaXN0IGlzIGdvaW5nIHRvIGJlIGV4ZWN1dGluZwogIC8vIGJlZm9yZSBpdCBzdG9wcyBhbmQgc2hlZHVsZXMgYSBjb250aW51ZSBvZiBleGVjdXRpb24uCiAgdmFyIEVYRUNVVElPTl9USU1FID0gMTU7CiAgLy8gRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHN0ZXBzIGJlZm9yZSBjaGVja2luZyB0aGUgZXhlY3V0aW9uIHRpbWUKICB2YXIgRVhFQ1VUSU9OX1NURVBTID0gMTA7CgogIGZ1bmN0aW9uIENhbnZhc0dyYXBoaWNzKGNhbnZhc0N0eCwgY29tbW9uT2Jqcywgb2JqcywgaW1hZ2VMYXllcikgewogICAgdGhpcy5jdHggPSBjYW52YXNDdHg7CiAgICB0aGlzLmN1cnJlbnQgPSBuZXcgQ2FudmFzRXh0cmFTdGF0ZSgpOwogICAgdGhpcy5zdGF0ZVN0YWNrID0gW107CiAgICB0aGlzLnBlbmRpbmdDbGlwID0gbnVsbDsKICAgIHRoaXMucGVuZGluZ0VPRmlsbCA9IGZhbHNlOwogICAgdGhpcy5yZXMgPSBudWxsOwogICAgdGhpcy54b2JqcyA9IG51bGw7CiAgICB0aGlzLmNvbW1vbk9ianMgPSBjb21tb25PYmpzOwogICAgdGhpcy5vYmpzID0gb2JqczsKICAgIHRoaXMuaW1hZ2VMYXllciA9IGltYWdlTGF5ZXI7CiAgICB0aGlzLmdyb3VwU3RhY2sgPSBbXTsKICAgIHRoaXMucHJvY2Vzc2luZ1R5cGUzID0gbnVsbDsKICAgIC8vIFBhdHRlcm5zIGFyZSBwYWludGVkIHJlbGF0aXZlIHRvIHRoZSBpbml0aWFsIHBhZ2UvZm9ybSB0cmFuc2Zvcm0sIHNlZSBwZGYKICAgIC8vIHNwZWMgOC43LjIgTk9URSAxLgogICAgdGhpcy5iYXNlVHJhbnNmb3JtID0gbnVsbDsKICAgIHRoaXMuYmFzZVRyYW5zZm9ybVN0YWNrID0gW107CiAgICB0aGlzLmdyb3VwTGV2ZWwgPSAwOwogICAgdGhpcy5zbWFza1N0YWNrID0gW107CiAgICB0aGlzLnNtYXNrQ291bnRlciA9IDA7CiAgICB0aGlzLnRlbXBTTWFzayA9IG51bGw7CiAgICBpZiAoY2FudmFzQ3R4KSB7CiAgICAgIC8vIE5PVEU6IGlmIG1vekN1cnJlbnRUcmFuc2Zvcm0gaXMgcG9seWZpbGxlZCwgdGhlbiB0aGUgY3VycmVudCBzdGF0ZSBvZgogICAgICAvLyB0aGUgdHJhbnNmb3JtYXRpb24gbXVzdCBhbHJlYWR5IGJlIHNldCBpbiBjYW52YXNDdHguX3RyYW5zZm9ybU1hdHJpeC4KICAgICAgYWRkQ29udGV4dEN1cnJlbnRUcmFuc2Zvcm0oY2FudmFzQ3R4KTsKICAgIH0KICAgIHRoaXMuY2FjaGVkR2V0U2luZ2xlUGl4ZWxXaWR0aCA9IG51bGw7CiAgfQoKICBmdW5jdGlvbiBwdXRCaW5hcnlJbWFnZURhdGEoY3R4LCBpbWdEYXRhKSB7CiAgICBpZiAodHlwZW9mIEltYWdlRGF0YSAhPT0gJ3VuZGVmaW5lZCcgJiYgaW1nRGF0YSBpbnN0YW5jZW9mIEltYWdlRGF0YSkgewogICAgICBjdHgucHV0SW1hZ2VEYXRhKGltZ0RhdGEsIDAsIDApOwogICAgICByZXR1cm47CiAgICB9CgogICAgLy8gUHV0IHRoZSBpbWFnZSBkYXRhIHRvIHRoZSBjYW52YXMgaW4gY2h1bmtzLCByYXRoZXIgdGhhbiBwdXR0aW5nIHRoZQogICAgLy8gd2hvbGUgaW1hZ2UgYXQgb25jZS4gIFRoaXMgc2F2ZXMgSlMgbWVtb3J5LCBiZWNhdXNlIHRoZSBJbWFnZURhdGEgb2JqZWN0CiAgICAvLyBpcyBzbWFsbGVyLiBJdCBhbHNvIHBvc3NpYmx5IHNhdmVzIEMrKyBtZW1vcnkgd2l0aGluIHRoZSBpbXBsZW1lbnRhdGlvbgogICAgLy8gb2YgcHV0SW1hZ2VEYXRhKCkuIChFLmcuIGluIEZpcmVmb3ggd2UgbWFrZSB0d28gc2hvcnQtbGl2ZWQgY29waWVzIG9mCiAgICAvLyB0aGUgZGF0YSBwYXNzZWQgdG8gcHV0SW1hZ2VEYXRhKCkpLiB8bnwgc2hvdWxkbid0IGJlIHRvbyBzbWFsbCwgaG93ZXZlciwKICAgIC8vIGJlY2F1c2UgdG9vIG1hbnkgcHV0SW1hZ2VEYXRhKCkgY2FsbHMgd2lsbCBzbG93IHRoaW5ncyBkb3duLgogICAgLy8KICAgIC8vIE5vdGU6IGFzIHdyaXR0ZW4sIGlmIHRoZSBsYXN0IGNodW5rIGlzIHBhcnRpYWwsIHRoZSBwdXRJbWFnZURhdGEoKSBjYWxsCiAgICAvLyB3aWxsIChjb25jZXB0dWFsbHkpIHB1dCBwaXhlbHMgcGFzdCB0aGUgYm91bmRzIG9mIHRoZSBjYW52YXMuICBCdXQKICAgIC8vIHRoYXQncyBvazsgYW55IHN1Y2ggcGl4ZWxzIGFyZSBpZ25vcmVkLgoKICAgIHZhciBoZWlnaHQgPSBpbWdEYXRhLmhlaWdodCwgd2lkdGggPSBpbWdEYXRhLndpZHRoOwogICAgdmFyIHBhcnRpYWxDaHVua0hlaWdodCA9IGhlaWdodCAlIEZVTExfQ0hVTktfSEVJR0hUOwogICAgdmFyIGZ1bGxDaHVua3MgPSAoaGVpZ2h0IC0gcGFydGlhbENodW5rSGVpZ2h0KSAvIEZVTExfQ0hVTktfSEVJR0hUOwogICAgdmFyIHRvdGFsQ2h1bmtzID0gcGFydGlhbENodW5rSGVpZ2h0ID09PSAwID8gZnVsbENodW5rcyA6IGZ1bGxDaHVua3MgKyAxOwoKICAgIHZhciBjaHVua0ltZ0RhdGEgPSBjdHguY3JlYXRlSW1hZ2VEYXRhKHdpZHRoLCBGVUxMX0NIVU5LX0hFSUdIVCk7CiAgICB2YXIgc3JjUG9zID0gMCwgZGVzdFBvczsKICAgIHZhciBzcmMgPSBpbWdEYXRhLmRhdGE7CiAgICB2YXIgZGVzdCA9IGNodW5rSW1nRGF0YS5kYXRhOwogICAgdmFyIGksIGosIHRoaXNDaHVua0hlaWdodCwgZWxlbXNJblRoaXNDaHVuazsKCiAgICAvLyBUaGVyZSBhcmUgbXVsdGlwbGUgZm9ybXMgaW4gd2hpY2ggdGhlIHBpeGVsIGRhdGEgY2FuIGJlIHBhc3NlZCwgYW5kCiAgICAvLyBpbWdEYXRhLmtpbmQgdGVsbHMgdXMgd2hpY2ggb25lIHRoaXMgaXMuCiAgICBpZiAoaW1nRGF0YS5raW5kID09PSBJbWFnZUtpbmQuR1JBWVNDQUxFXzFCUFApIHsKICAgICAgLy8gR3JheXNjYWxlLCAxIGJpdCBwZXIgcGl4ZWwgKGkuZS4gYmxhY2stYW5kLXdoaXRlKS4KICAgICAgdmFyIHNyY0xlbmd0aCA9IHNyYy5ieXRlTGVuZ3RoOwogICAgICB2YXIgZGVzdDMyID0gUERGSlMuaGFzQ2FudmFzVHlwZWRBcnJheXMgPyBuZXcgVWludDMyQXJyYXkoZGVzdC5idWZmZXIpIDoKICAgICAgICBuZXcgVWludDMyQXJyYXlWaWV3KGRlc3QpOwogICAgICB2YXIgZGVzdDMyRGF0YUxlbmd0aCA9IGRlc3QzMi5sZW5ndGg7CiAgICAgIHZhciBmdWxsU3JjRGlmZiA9ICh3aWR0aCArIDcpID4+IDM7CiAgICAgIHZhciB3aGl0ZSA9IDB4RkZGRkZGRkY7CiAgICAgIHZhciBibGFjayA9IChQREZKUy5pc0xpdHRsZUVuZGlhbiB8fCAhUERGSlMuaGFzQ2FudmFzVHlwZWRBcnJheXMpID8KICAgICAgICAweEZGMDAwMDAwIDogMHgwMDAwMDBGRjsKICAgICAgZm9yIChpID0gMDsgaSA8IHRvdGFsQ2h1bmtzOyBpKyspIHsKICAgICAgICB0aGlzQ2h1bmtIZWlnaHQgPQogICAgICAgICAgKGkgPCBmdWxsQ2h1bmtzKSA/IEZVTExfQ0hVTktfSEVJR0hUIDogcGFydGlhbENodW5rSGVpZ2h0OwogICAgICAgIGRlc3RQb3MgPSAwOwogICAgICAgIGZvciAoaiA9IDA7IGogPCB0aGlzQ2h1bmtIZWlnaHQ7IGorKykgewogICAgICAgICAgdmFyIHNyY0RpZmYgPSBzcmNMZW5ndGggLSBzcmNQb3M7CiAgICAgICAgICB2YXIgayA9IDA7CiAgICAgICAgICB2YXIga0VuZCA9IChzcmNEaWZmID4gZnVsbFNyY0RpZmYpID8gd2lkdGggOiBzcmNEaWZmICogOCAtIDc7CiAgICAgICAgICB2YXIga0VuZFVucm9sbGVkID0ga0VuZCAmIH43OwogICAgICAgICAgdmFyIG1hc2sgPSAwOwogICAgICAgICAgdmFyIHNyY0J5dGUgPSAwOwogICAgICAgICAgZm9yICg7IGsgPCBrRW5kVW5yb2xsZWQ7IGsgKz0gOCkgewogICAgICAgICAgICBzcmNCeXRlID0gc3JjW3NyY1BvcysrXTsKICAgICAgICAgICAgZGVzdDMyW2Rlc3RQb3MrK10gPSAoc3JjQnl0ZSAmIDEyOCkgPyB3aGl0ZSA6IGJsYWNrOwogICAgICAgICAgICBkZXN0MzJbZGVzdFBvcysrXSA9IChzcmNCeXRlICYgNjQpID8gd2hpdGUgOiBibGFjazsKICAgICAgICAgICAgZGVzdDMyW2Rlc3RQb3MrK10gPSAoc3JjQnl0ZSAmIDMyKSA/IHdoaXRlIDogYmxhY2s7CiAgICAgICAgICAgIGRlc3QzMltkZXN0UG9zKytdID0gKHNyY0J5dGUgJiAxNikgPyB3aGl0ZSA6IGJsYWNrOwogICAgICAgICAgICBkZXN0MzJbZGVzdFBvcysrXSA9IChzcmNCeXRlICYgOCkgPyB3aGl0ZSA6IGJsYWNrOwogICAgICAgICAgICBkZXN0MzJbZGVzdFBvcysrXSA9IChzcmNCeXRlICYgNCkgPyB3aGl0ZSA6IGJsYWNrOwogICAgICAgICAgICBkZXN0MzJbZGVzdFBvcysrXSA9IChzcmNCeXRlICYgMikgPyB3aGl0ZSA6IGJsYWNrOwogICAgICAgICAgICBkZXN0MzJbZGVzdFBvcysrXSA9IChzcmNCeXRlICYgMSkgPyB3aGl0ZSA6IGJsYWNrOwogICAgICAgICAgfQogICAgICAgICAgZm9yICg7IGsgPCBrRW5kOyBrKyspIHsKICAgICAgICAgICAgIGlmIChtYXNrID09PSAwKSB7CiAgICAgICAgICAgICAgIHNyY0J5dGUgPSBzcmNbc3JjUG9zKytdOwogICAgICAgICAgICAgICBtYXNrID0gMTI4OwogICAgICAgICAgICAgfQoKICAgICAgICAgICAgZGVzdDMyW2Rlc3RQb3MrK10gPSAoc3JjQnl0ZSAmIG1hc2spID8gd2hpdGUgOiBibGFjazsKICAgICAgICAgICAgbWFzayA+Pj0gMTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgLy8gV2UgcmFuIG91dCBvZiBpbnB1dC4gTWFrZSBhbGwgcmVtYWluaW5nIHBpeGVscyB0cmFuc3BhcmVudC4KICAgICAgICB3aGlsZSAoZGVzdFBvcyA8IGRlc3QzMkRhdGFMZW5ndGgpIHsKICAgICAgICAgIGRlc3QzMltkZXN0UG9zKytdID0gMDsKICAgICAgICB9CgogICAgICAgIGN0eC5wdXRJbWFnZURhdGEoY2h1bmtJbWdEYXRhLCAwLCBpICogRlVMTF9DSFVOS19IRUlHSFQpOwogICAgICB9CiAgICB9IGVsc2UgaWYgKGltZ0RhdGEua2luZCA9PT0gSW1hZ2VLaW5kLlJHQkFfMzJCUFApIHsKICAgICAgLy8gUkdCQSwgMzItYml0cyBwZXIgcGl4ZWwuCgogICAgICBqID0gMDsKICAgICAgZWxlbXNJblRoaXNDaHVuayA9IHdpZHRoICogRlVMTF9DSFVOS19IRUlHSFQgKiA0OwogICAgICBmb3IgKGkgPSAwOyBpIDwgZnVsbENodW5rczsgaSsrKSB7CiAgICAgICAgZGVzdC5zZXQoc3JjLnN1YmFycmF5KHNyY1Bvcywgc3JjUG9zICsgZWxlbXNJblRoaXNDaHVuaykpOwogICAgICAgIHNyY1BvcyArPSBlbGVtc0luVGhpc0NodW5rOwoKICAgICAgICBjdHgucHV0SW1hZ2VEYXRhKGNodW5rSW1nRGF0YSwgMCwgaik7CiAgICAgICAgaiArPSBGVUxMX0NIVU5LX0hFSUdIVDsKICAgICAgfQogICAgICBpZiAoaSA8IHRvdGFsQ2h1bmtzKSB7CiAgICAgICAgZWxlbXNJblRoaXNDaHVuayA9IHdpZHRoICogcGFydGlhbENodW5rSGVpZ2h0ICogNDsKICAgICAgICBkZXN0LnNldChzcmMuc3ViYXJyYXkoc3JjUG9zLCBzcmNQb3MgKyBlbGVtc0luVGhpc0NodW5rKSk7CiAgICAgICAgY3R4LnB1dEltYWdlRGF0YShjaHVua0ltZ0RhdGEsIDAsIGopOwogICAgICB9CgogICAgfSBlbHNlIGlmIChpbWdEYXRhLmtpbmQgPT09IEltYWdlS2luZC5SR0JfMjRCUFApIHsKICAgICAgLy8gUkdCLCAyNC1iaXRzIHBlciBwaXhlbC4KICAgICAgdGhpc0NodW5rSGVpZ2h0ID0gRlVMTF9DSFVOS19IRUlHSFQ7CiAgICAgIGVsZW1zSW5UaGlzQ2h1bmsgPSB3aWR0aCAqIHRoaXNDaHVua0hlaWdodDsKICAgICAgZm9yIChpID0gMDsgaSA8IHRvdGFsQ2h1bmtzOyBpKyspIHsKICAgICAgICBpZiAoaSA+PSBmdWxsQ2h1bmtzKSB7CiAgICAgICAgICB0aGlzQ2h1bmtIZWlnaHQgPSBwYXJ0aWFsQ2h1bmtIZWlnaHQ7CiAgICAgICAgICBlbGVtc0luVGhpc0NodW5rID0gd2lkdGggKiB0aGlzQ2h1bmtIZWlnaHQ7CiAgICAgICAgfQoKICAgICAgICBkZXN0UG9zID0gMDsKICAgICAgICBmb3IgKGogPSBlbGVtc0luVGhpc0NodW5rOyBqLS07KSB7CiAgICAgICAgICBkZXN0W2Rlc3RQb3MrK10gPSBzcmNbc3JjUG9zKytdOwogICAgICAgICAgZGVzdFtkZXN0UG9zKytdID0gc3JjW3NyY1BvcysrXTsKICAgICAgICAgIGRlc3RbZGVzdFBvcysrXSA9IHNyY1tzcmNQb3MrK107CiAgICAgICAgICBkZXN0W2Rlc3RQb3MrK10gPSAyNTU7CiAgICAgICAgfQogICAgICAgIGN0eC5wdXRJbWFnZURhdGEoY2h1bmtJbWdEYXRhLCAwLCBpICogRlVMTF9DSFVOS19IRUlHSFQpOwogICAgICB9CiAgICB9IGVsc2UgewogICAgICBlcnJvcignYmFkIGltYWdlIGtpbmQ6ICcgKyBpbWdEYXRhLmtpbmQpOwogICAgfQogIH0KCiAgZnVuY3Rpb24gcHV0QmluYXJ5SW1hZ2VNYXNrKGN0eCwgaW1nRGF0YSkgewogICAgdmFyIGhlaWdodCA9IGltZ0RhdGEuaGVpZ2h0LCB3aWR0aCA9IGltZ0RhdGEud2lkdGg7CiAgICB2YXIgcGFydGlhbENodW5rSGVpZ2h0ID0gaGVpZ2h0ICUgRlVMTF9DSFVOS19IRUlHSFQ7CiAgICB2YXIgZnVsbENodW5rcyA9IChoZWlnaHQgLSBwYXJ0aWFsQ2h1bmtIZWlnaHQpIC8gRlVMTF9DSFVOS19IRUlHSFQ7CiAgICB2YXIgdG90YWxDaHVua3MgPSBwYXJ0aWFsQ2h1bmtIZWlnaHQgPT09IDAgPyBmdWxsQ2h1bmtzIDogZnVsbENodW5rcyArIDE7CgogICAgdmFyIGNodW5rSW1nRGF0YSA9IGN0eC5jcmVhdGVJbWFnZURhdGEod2lkdGgsIEZVTExfQ0hVTktfSEVJR0hUKTsKICAgIHZhciBzcmNQb3MgPSAwOwogICAgdmFyIHNyYyA9IGltZ0RhdGEuZGF0YTsKICAgIHZhciBkZXN0ID0gY2h1bmtJbWdEYXRhLmRhdGE7CgogICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b3RhbENodW5rczsgaSsrKSB7CiAgICAgIHZhciB0aGlzQ2h1bmtIZWlnaHQgPQogICAgICAgIChpIDwgZnVsbENodW5rcykgPyBGVUxMX0NIVU5LX0hFSUdIVCA6IHBhcnRpYWxDaHVua0hlaWdodDsKCiAgICAgIC8vIEV4cGFuZCB0aGUgbWFzayBzbyBpdCBjYW4gYmUgdXNlZCBieSB0aGUgY2FudmFzLiAgQW55IHJlcXVpcmVkCiAgICAgIC8vIGludmVyc2lvbiBoYXMgYWxyZWFkeSBiZWVuIGhhbmRsZWQuCiAgICAgIHZhciBkZXN0UG9zID0gMzsgLy8gYWxwaGEgY29tcG9uZW50IG9mZnNldAogICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHRoaXNDaHVua0hlaWdodDsgaisrKSB7CiAgICAgICAgdmFyIG1hc2sgPSAwOwogICAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgd2lkdGg7IGsrKykgewogICAgICAgICAgaWYgKCFtYXNrKSB7CiAgICAgICAgICAgIHZhciBlbGVtID0gc3JjW3NyY1BvcysrXTsKICAgICAgICAgICAgbWFzayA9IDEyODsKICAgICAgICAgIH0KICAgICAgICAgIGRlc3RbZGVzdFBvc10gPSAoZWxlbSAmIG1hc2spID8gMCA6IDI1NTsKICAgICAgICAgIGRlc3RQb3MgKz0gNDsKICAgICAgICAgIG1hc2sgPj49IDE7CiAgICAgICAgfQogICAgICB9CiAgICAgIGN0eC5wdXRJbWFnZURhdGEoY2h1bmtJbWdEYXRhLCAwLCBpICogRlVMTF9DSFVOS19IRUlHSFQpOwogICAgfQogIH0KCiAgZnVuY3Rpb24gY29weUN0eFN0YXRlKHNvdXJjZUN0eCwgZGVzdEN0eCkgewogICAgdmFyIHByb3BlcnRpZXMgPSBbJ3N0cm9rZVN0eWxlJywgJ2ZpbGxTdHlsZScsICdmaWxsUnVsZScsICdnbG9iYWxBbHBoYScsCiAgICAgICAgICAgICAgICAgICAgICAnbGluZVdpZHRoJywgJ2xpbmVDYXAnLCAnbGluZUpvaW4nLCAnbWl0ZXJMaW1pdCcsCiAgICAgICAgICAgICAgICAgICAgICAnZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uJywgJ2ZvbnQnXTsKICAgIGZvciAodmFyIGkgPSAwLCBpaSA9IHByb3BlcnRpZXMubGVuZ3RoOyBpIDwgaWk7IGkrKykgewogICAgICB2YXIgcHJvcGVydHkgPSBwcm9wZXJ0aWVzW2ldOwogICAgICBpZiAoc291cmNlQ3R4W3Byb3BlcnR5XSAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgZGVzdEN0eFtwcm9wZXJ0eV0gPSBzb3VyY2VDdHhbcHJvcGVydHldOwogICAgICB9CiAgICB9CiAgICBpZiAoc291cmNlQ3R4LnNldExpbmVEYXNoICE9PSB1bmRlZmluZWQpIHsKICAgICAgZGVzdEN0eC5zZXRMaW5lRGFzaChzb3VyY2VDdHguZ2V0TGluZURhc2goKSk7CiAgICAgIGRlc3RDdHgubGluZURhc2hPZmZzZXQgPSAgc291cmNlQ3R4LmxpbmVEYXNoT2Zmc2V0OwogICAgfSBlbHNlIGlmIChzb3VyY2VDdHgubW96RGFzaE9mZnNldCAhPT0gdW5kZWZpbmVkKSB7CiAgICAgIGRlc3RDdHgubW96RGFzaCA9IHNvdXJjZUN0eC5tb3pEYXNoOwogICAgICBkZXN0Q3R4Lm1vekRhc2hPZmZzZXQgPSBzb3VyY2VDdHgubW96RGFzaE9mZnNldDsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGNvbXBvc2VTTWFza0JhY2tkcm9wKGJ5dGVzLCByMCwgZzAsIGIwKSB7CiAgICB2YXIgbGVuZ3RoID0gYnl0ZXMubGVuZ3RoOwogICAgZm9yICh2YXIgaSA9IDM7IGkgPCBsZW5ndGg7IGkgKz0gNCkgewogICAgICB2YXIgYWxwaGEgPSBieXRlc1tpXTsKICAgICAgaWYgKGFscGhhID09PSAwKSB7CiAgICAgICAgYnl0ZXNbaSAtIDNdID0gcjA7CiAgICAgICAgYnl0ZXNbaSAtIDJdID0gZzA7CiAgICAgICAgYnl0ZXNbaSAtIDFdID0gYjA7CiAgICAgIH0gZWxzZSBpZiAoYWxwaGEgPCAyNTUpIHsKICAgICAgICB2YXIgYWxwaGFfID0gMjU1IC0gYWxwaGE7CiAgICAgICAgYnl0ZXNbaSAtIDNdID0gKGJ5dGVzW2kgLSAzXSAqIGFscGhhICsgcjAgKiBhbHBoYV8pID4+IDg7CiAgICAgICAgYnl0ZXNbaSAtIDJdID0gKGJ5dGVzW2kgLSAyXSAqIGFscGhhICsgZzAgKiBhbHBoYV8pID4+IDg7CiAgICAgICAgYnl0ZXNbaSAtIDFdID0gKGJ5dGVzW2kgLSAxXSAqIGFscGhhICsgYjAgKiBhbHBoYV8pID4+IDg7CiAgICAgIH0KICAgIH0KICB9CgogIGZ1bmN0aW9uIGNvbXBvc2VTTWFza0FscGhhKG1hc2tEYXRhLCBsYXllckRhdGEpIHsKICAgIHZhciBsZW5ndGggPSBtYXNrRGF0YS5sZW5ndGg7CiAgICB2YXIgc2NhbGUgPSAxIC8gMjU1OwogICAgZm9yICh2YXIgaSA9IDM7IGkgPCBsZW5ndGg7IGkgKz0gNCkgewogICAgICB2YXIgYWxwaGEgPSBtYXNrRGF0YVtpXTsKICAgICAgbGF5ZXJEYXRhW2ldID0gKGxheWVyRGF0YVtpXSAqIGFscGhhICogc2NhbGUpIHwgMDsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGNvbXBvc2VTTWFza0x1bWlub3NpdHkobWFza0RhdGEsIGxheWVyRGF0YSkgewogICAgdmFyIGxlbmd0aCA9IG1hc2tEYXRhLmxlbmd0aDsKICAgIGZvciAodmFyIGkgPSAzOyBpIDwgbGVuZ3RoOyBpICs9IDQpIHsKICAgICAgdmFyIHkgPSAobWFza0RhdGFbaSAtIDNdICogNzcpICsgIC8vICogMC4zIC8gMjU1ICogMHgxMDAwMAogICAgICAgICAgICAgIChtYXNrRGF0YVtpIC0gMl0gKiAxNTIpICsgLy8gKiAwLjU5IC4uLi4KICAgICAgICAgICAgICAobWFza0RhdGFbaSAtIDFdICogMjgpOyAgIC8vICogMC4xMSAuLi4uCiAgICAgIGxheWVyRGF0YVtpXSA9IChsYXllckRhdGFbaV0gKiB5KSA+PiAxNjsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGdlbmVyaWNDb21wb3NlU01hc2sobWFza0N0eCwgbGF5ZXJDdHgsIHdpZHRoLCBoZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0eXBlLCBiYWNrZHJvcCkgewogICAgdmFyIGhhc0JhY2tkcm9wID0gISFiYWNrZHJvcDsKICAgIHZhciByMCA9IGhhc0JhY2tkcm9wID8gYmFja2Ryb3BbMF0gOiAwOwogICAgdmFyIGcwID0gaGFzQmFja2Ryb3AgPyBiYWNrZHJvcFsxXSA6IDA7CiAgICB2YXIgYjAgPSBoYXNCYWNrZHJvcCA/IGJhY2tkcm9wWzJdIDogMDsKCiAgICB2YXIgY29tcG9zZUZuOwogICAgaWYgKHN1YnR5cGUgPT09ICdMdW1pbm9zaXR5JykgewogICAgICBjb21wb3NlRm4gPSBjb21wb3NlU01hc2tMdW1pbm9zaXR5OwogICAgfSBlbHNlIHsKICAgICAgY29tcG9zZUZuID0gY29tcG9zZVNNYXNrQWxwaGE7CiAgICB9CgogICAgLy8gcHJvY2Vzc2luZyBpbWFnZSBpbiBjaHVua3MgdG8gc2F2ZSBtZW1vcnkKICAgIHZhciBQSVhFTFNfVE9fUFJPQ0VTUyA9IDEwNDg1NzY7CiAgICB2YXIgY2h1bmtTaXplID0gTWF0aC5taW4oaGVpZ2h0LCBNYXRoLmNlaWwoUElYRUxTX1RPX1BST0NFU1MgLyB3aWR0aCkpOwogICAgZm9yICh2YXIgcm93ID0gMDsgcm93IDwgaGVpZ2h0OyByb3cgKz0gY2h1bmtTaXplKSB7CiAgICAgIHZhciBjaHVua0hlaWdodCA9IE1hdGgubWluKGNodW5rU2l6ZSwgaGVpZ2h0IC0gcm93KTsKICAgICAgdmFyIG1hc2tEYXRhID0gbWFza0N0eC5nZXRJbWFnZURhdGEoMCwgcm93LCB3aWR0aCwgY2h1bmtIZWlnaHQpOwogICAgICB2YXIgbGF5ZXJEYXRhID0gbGF5ZXJDdHguZ2V0SW1hZ2VEYXRhKDAsIHJvdywgd2lkdGgsIGNodW5rSGVpZ2h0KTsKCiAgICAgIGlmIChoYXNCYWNrZHJvcCkgewogICAgICAgIGNvbXBvc2VTTWFza0JhY2tkcm9wKG1hc2tEYXRhLmRhdGEsIHIwLCBnMCwgYjApOwogICAgICB9CiAgICAgIGNvbXBvc2VGbihtYXNrRGF0YS5kYXRhLCBsYXllckRhdGEuZGF0YSk7CgogICAgICBtYXNrQ3R4LnB1dEltYWdlRGF0YShsYXllckRhdGEsIDAsIHJvdyk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBjb21wb3NlU01hc2soY3R4LCBzbWFzaywgbGF5ZXJDdHgpIHsKICAgIHZhciBtYXNrID0gc21hc2suY2FudmFzOwogICAgdmFyIG1hc2tDdHggPSBzbWFzay5jb250ZXh0OwoKICAgIGN0eC5zZXRUcmFuc2Zvcm0oc21hc2suc2NhbGVYLCAwLCAwLCBzbWFzay5zY2FsZVksCiAgICAgICAgICAgICAgICAgICAgIHNtYXNrLm9mZnNldFgsIHNtYXNrLm9mZnNldFkpOwoKICAgIHZhciBiYWNrZHJvcCA9IHNtYXNrLmJhY2tkcm9wIHx8IG51bGw7CiAgICBpZiAoV2ViR0xVdGlscy5pc0VuYWJsZWQpIHsKICAgICAgdmFyIGNvbXBvc2VkID0gV2ViR0xVdGlscy5jb21wb3NlU01hc2sobGF5ZXJDdHguY2FudmFzLCBtYXNrLAogICAgICAgIHtzdWJ0eXBlOiBzbWFzay5zdWJ0eXBlLCBiYWNrZHJvcDogYmFja2Ryb3B9KTsKICAgICAgY3R4LnNldFRyYW5zZm9ybSgxLCAwLCAwLCAxLCAwLCAwKTsKICAgICAgY3R4LmRyYXdJbWFnZShjb21wb3NlZCwgc21hc2sub2Zmc2V0WCwgc21hc2sub2Zmc2V0WSk7CiAgICAgIHJldHVybjsKICAgIH0KICAgIGdlbmVyaWNDb21wb3NlU01hc2sobWFza0N0eCwgbGF5ZXJDdHgsIG1hc2sud2lkdGgsIG1hc2suaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICBzbWFzay5zdWJ0eXBlLCBiYWNrZHJvcCk7CiAgICBjdHguZHJhd0ltYWdlKG1hc2ssIDAsIDApOwogIH0KCiAgdmFyIExJTkVfQ0FQX1NUWUxFUyA9IFsnYnV0dCcsICdyb3VuZCcsICdzcXVhcmUnXTsKICB2YXIgTElORV9KT0lOX1NUWUxFUyA9IFsnbWl0ZXInLCAncm91bmQnLCAnYmV2ZWwnXTsKICB2YXIgTk9STUFMX0NMSVAgPSB7fTsKICB2YXIgRU9fQ0xJUCA9IHt9OwoKICBDYW52YXNHcmFwaGljcy5wcm90b3R5cGUgPSB7CgogICAgYmVnaW5EcmF3aW5nOiBmdW5jdGlvbiBDYW52YXNHcmFwaGljc19iZWdpbkRyYXdpbmcodmlld3BvcnQsIHRyYW5zcGFyZW5jeSkgewogICAgICAvLyBGb3IgcGRmcyB0aGF0IHVzZSBibGVuZCBtb2RlcyB3ZSBoYXZlIHRvIGNsZWFyIHRoZSBjYW52YXMgZWxzZSBjZXJ0YWluCiAgICAgIC8vIGJsZW5kIG1vZGVzIGNhbiBsb29rIHdyb25nIHNpbmNlIHdlJ2QgYmUgYmxlbmRpbmcgd2l0aCBhIHdoaXRlCiAgICAgIC8vIGJhY2tkcm9wLiBUaGUgcHJvYmxlbSB3aXRoIGEgdHJhbnNwYXJlbnQgYmFja2Ryb3AgdGhvdWdoIGlzIHdlIHRoZW4KICAgICAgLy8gZG9uJ3QgZ2V0IHN1YiBwaXhlbCBhbnRpIGFsaWFzaW5nIG9uIHRleHQsIHNvIHdlIGZpbGwgd2l0aCB3aGl0ZSBpZgogICAgICAvLyB3ZSBjYW4uCiAgICAgIHZhciB3aWR0aCA9IHRoaXMuY3R4LmNhbnZhcy53aWR0aDsKICAgICAgdmFyIGhlaWdodCA9IHRoaXMuY3R4LmNhbnZhcy5oZWlnaHQ7CiAgICAgIGlmICh0cmFuc3BhcmVuY3kpIHsKICAgICAgICB0aGlzLmN0eC5jbGVhclJlY3QoMCwgMCwgd2lkdGgsIGhlaWdodCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5jdHgubW96T3BhcXVlID0gdHJ1ZTsKICAgICAgICB0aGlzLmN0eC5zYXZlKCk7CiAgICAgICAgdGhpcy5jdHguZmlsbFN0eWxlID0gJ3JnYigyNTUsIDI1NSwgMjU1KSc7CiAgICAgICAgdGhpcy5jdHguZmlsbFJlY3QoMCwgMCwgd2lkdGgsIGhlaWdodCk7CiAgICAgICAgdGhpcy5jdHgucmVzdG9yZSgpOwogICAgICB9CgogICAgICB2YXIgdHJhbnNmb3JtID0gdmlld3BvcnQudHJhbnNmb3JtOwoKICAgICAgdGhpcy5jdHguc2F2ZSgpOwogICAgICB0aGlzLmN0eC50cmFuc2Zvcm0uYXBwbHkodGhpcy5jdHgsIHRyYW5zZm9ybSk7CgogICAgICB0aGlzLmJhc2VUcmFuc2Zvcm0gPSB0aGlzLmN0eC5tb3pDdXJyZW50VHJhbnNmb3JtLnNsaWNlKCk7CgogICAgICBpZiAodGhpcy5pbWFnZUxheWVyKSB7CiAgICAgICAgdGhpcy5pbWFnZUxheWVyLmJlZ2luTGF5b3V0KCk7CiAgICAgIH0KICAgIH0sCgogICAgZXhlY3V0ZU9wZXJhdG9yTGlzdDogZnVuY3Rpb24gQ2FudmFzR3JhcGhpY3NfZXhlY3V0ZU9wZXJhdG9yTGlzdCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3JMaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRpb25TdGFydElkeCwgY29udGludWVDYWxsYmFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RlcHBlcikgewogICAgICB2YXIgYXJnc0FycmF5ID0gb3BlcmF0b3JMaXN0LmFyZ3NBcnJheTsKICAgICAgdmFyIGZuQXJyYXkgPSBvcGVyYXRvckxpc3QuZm5BcnJheTsKICAgICAgdmFyIGkgPSBleGVjdXRpb25TdGFydElkeCB8fCAwOwogICAgICB2YXIgYXJnc0FycmF5TGVuID0gYXJnc0FycmF5Lmxlbmd0aDsKCiAgICAgIC8vIFNvbWV0aW1lcyB0aGUgT3BlcmF0b3JMaXN0IHRvIGV4ZWN1dGUgaXMgZW1wdHkuCiAgICAgIGlmIChhcmdzQXJyYXlMZW4gPT09IGkpIHsKICAgICAgICByZXR1cm4gaTsKICAgICAgfQoKICAgICAgdmFyIGNodW5rT3BlcmF0aW9ucyA9IChhcmdzQXJyYXlMZW4gLSBpID4gRVhFQ1VUSU9OX1NURVBTICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGNvbnRpbnVlQ2FsbGJhY2sgPT09ICdmdW5jdGlvbicpOwogICAgICB2YXIgZW5kVGltZSA9IGNodW5rT3BlcmF0aW9ucyA/IERhdGUubm93KCkgKyBFWEVDVVRJT05fVElNRSA6IDA7CiAgICAgIHZhciBzdGVwcyA9IDA7CgogICAgICB2YXIgY29tbW9uT2JqcyA9IHRoaXMuY29tbW9uT2JqczsKICAgICAgdmFyIG9ianMgPSB0aGlzLm9ianM7CiAgICAgIHZhciBmbklkOwoKICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICBpZiAoc3RlcHBlciAhPT0gdW5kZWZpbmVkICYmIGkgPT09IHN0ZXBwZXIubmV4dEJyZWFrUG9pbnQpIHsKICAgICAgICAgIHN0ZXBwZXIuYnJlYWtJdChpLCBjb250aW51ZUNhbGxiYWNrKTsKICAgICAgICAgIHJldHVybiBpOwogICAgICAgIH0KCiAgICAgICAgZm5JZCA9IGZuQXJyYXlbaV07CgogICAgICAgIGlmIChmbklkICE9PSBPUFMuZGVwZW5kZW5jeSkgewogICAgICAgICAgdGhpc1tmbklkXS5hcHBseSh0aGlzLCBhcmdzQXJyYXlbaV0pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB2YXIgZGVwcyA9IGFyZ3NBcnJheVtpXTsKICAgICAgICAgIGZvciAodmFyIG4gPSAwLCBubiA9IGRlcHMubGVuZ3RoOyBuIDwgbm47IG4rKykgewogICAgICAgICAgICB2YXIgZGVwT2JqSWQgPSBkZXBzW25dOwogICAgICAgICAgICB2YXIgY29tbW9uID0gZGVwT2JqSWRbMF0gPT09ICdnJyAmJiBkZXBPYmpJZFsxXSA9PT0gJ18nOwogICAgICAgICAgICB2YXIgb2Jqc1Bvb2wgPSBjb21tb24gPyBjb21tb25PYmpzIDogb2JqczsKCiAgICAgICAgICAgIC8vIElmIHRoZSBwcm9taXNlIGlzbid0IHJlc29sdmVkIHlldCwgYWRkIHRoZSBjb250aW51ZUNhbGxiYWNrCiAgICAgICAgICAgIC8vIHRvIHRoZSBwcm9taXNlIGFuZCBiYWlsIG91dC4KICAgICAgICAgICAgaWYgKCFvYmpzUG9vbC5pc1Jlc29sdmVkKGRlcE9iaklkKSkgewogICAgICAgICAgICAgIG9ianNQb29sLmdldChkZXBPYmpJZCwgY29udGludWVDYWxsYmFjayk7CiAgICAgICAgICAgICAgcmV0dXJuIGk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGkrKzsKCiAgICAgICAgLy8gSWYgdGhlIGVudGlyZSBvcGVyYXRvckxpc3Qgd2FzIGV4ZWN1dGVkLCBzdG9wIGFzIHdlcmUgZG9uZS4KICAgICAgICBpZiAoaSA9PT0gYXJnc0FycmF5TGVuKSB7CiAgICAgICAgICByZXR1cm4gaTsKICAgICAgICB9CgogICAgICAgIC8vIElmIHRoZSBleGVjdXRpb24gdG9vayBsb25nZXIgdGhlbiBhIGNlcnRhaW4gYW1vdW50IG9mIHRpbWUgYW5kCiAgICAgICAgLy8gYGNvbnRpbnVlQ2FsbGJhY2tgIGlzIHNwZWNpZmllZCwgaW50ZXJydXB0IHRoZSBleGVjdXRpb24uCiAgICAgICAgaWYgKGNodW5rT3BlcmF0aW9ucyAmJiArK3N0ZXBzID4gRVhFQ1VUSU9OX1NURVBTKSB7CiAgICAgICAgICBpZiAoRGF0ZS5ub3coKSA+IGVuZFRpbWUpIHsKICAgICAgICAgICAgY29udGludWVDYWxsYmFjaygpOwogICAgICAgICAgICByZXR1cm4gaTsKICAgICAgICAgIH0KICAgICAgICAgIHN0ZXBzID0gMDsKICAgICAgICB9CgogICAgICAgIC8vIElmIHRoZSBvcGVyYXRvckxpc3QgaXNuJ3QgZXhlY3V0ZWQgY29tcGxldGVseSB5ZXQgT1IgdGhlIGV4ZWN1dGlvbgogICAgICAgIC8vIHRpbWUgd2FzIHNob3J0IGVub3VnaCwgZG8gYW5vdGhlciBleGVjdXRpb24gcm91bmQuCiAgICAgIH0KICAgIH0sCgogICAgZW5kRHJhd2luZzogZnVuY3Rpb24gQ2FudmFzR3JhcGhpY3NfZW5kRHJhd2luZygpIHsKICAgICAgdGhpcy5jdHgucmVzdG9yZSgpOwogICAgICBDYWNoZWRDYW52YXNlcy5jbGVhcigpOwogICAgICBXZWJHTFV0aWxzLmNsZWFyKCk7CgogICAgICBpZiAodGhpcy5pbWFnZUxheWVyKSB7CiAgICAgICAgdGhpcy5pbWFnZUxheWVyLmVuZExheW91dCgpOwogICAgICB9CiAgICB9LAoKICAgIC8vIEdyYXBoaWNzIHN0YXRlCiAgICBzZXRMaW5lV2lkdGg6IGZ1bmN0aW9uIENhbnZhc0dyYXBoaWNzX3NldExpbmVXaWR0aCh3aWR0aCkgewogICAgICB0aGlzLmN1cnJlbnQubGluZVdpZHRoID0gd2lkdGg7CiAgICAgIHRoaXMuY3R4LmxpbmVXaWR0aCA9IHdpZHRoOwogICAgfSwKICAgIHNldExpbmVDYXA6IGZ1bmN0aW9uIENhbnZhc0dyYXBoaWNzX3NldExpbmVDYXAoc3R5bGUpIHsKICAgICAgdGhpcy5jdHgubGluZUNhcCA9IExJTkVfQ0FQX1NUWUxFU1tzdHlsZV07CiAgICB9LAogICAgc2V0TGluZUpvaW46IGZ1bmN0aW9uIENhbnZhc0dyYXBoaWNzX3NldExpbmVKb2luKHN0eWxlKSB7CiAgICAgIHRoaXMuY3R4LmxpbmVKb2luID0gTElORV9KT0lOX1NUWUxFU1tzdHlsZV07CiAgICB9LAogICAgc2V0TWl0ZXJMaW1pdDogZnVuY3Rpb24gQ2FudmFzR3JhcGhpY3Nfc2V0TWl0ZXJMaW1pdChsaW1pdCkgewogICAgICB0aGlzLmN0eC5taXRlckxpbWl0ID0gbGltaXQ7CiAgICB9LAogICAgc2V0RGFzaDogZnVuY3Rpb24gQ2FudmFzR3JhcGhpY3Nfc2V0RGFzaChkYXNoQXJyYXksIGRhc2hQaGFzZSkgewogICAgICB2YXIgY3R4ID0gdGhpcy5jdHg7CiAgICAgIGlmIChjdHguc2V0TGluZURhc2ggIT09IHVuZGVmaW5lZCkgewogICAgICAgIGN0eC5zZXRMaW5lRGFzaChkYXNoQXJyYXkpOwogICAgICAgIGN0eC5saW5lRGFzaE9mZnNldCA9IGRhc2hQaGFzZTsKICAgICAgfSBlbHNlIHsKICAgICAgICBjdHgubW96RGFzaCA9IGRhc2hBcnJheTsKICAgICAgICBjdHgubW96RGFzaE9mZnNldCA9IGRhc2hQaGFzZTsKICAgICAgfQogICAgfSwKICAgIHNldFJlbmRlcmluZ0ludGVudDogZnVuY3Rpb24gQ2FudmFzR3JhcGhpY3Nfc2V0UmVuZGVyaW5nSW50ZW50KGludGVudCkgewogICAgICAvLyBNYXliZSBpZiB3ZSBvbmUgZGF5IGZ1bGx5IHN1cHBvcnQgY29sb3Igc3BhY2VzIHRoaXMgd2lsbCBiZSBpbXBvcnRhbnQKICAgICAgLy8gZm9yIG5vdyB3ZSBjYW4gaWdub3JlLgogICAgICAvLyBUT0RPIHNldCByZW5kZXJpbmcgaW50ZW50PwogICAgfSwKICAgIHNldEZsYXRuZXNzOiBmdW5jdGlvbiBDYW52YXNHcmFwaGljc19zZXRGbGF0bmVzcyhmbGF0bmVzcykgewogICAgICAvLyBUaGVyZSdzIG5vIHdheSB0byBjb250cm9sIHRoaXMgd2l0aCBjYW52YXMsIGJ1dCB3ZSBjYW4gc2FmZWx5IGlnbm9yZS4KICAgICAgLy8gVE9ETyBzZXQgZmxhdG5lc3M/CiAgICB9LAogICAgc2V0R1N0YXRlOiBmdW5jdGlvbiBDYW52YXNHcmFwaGljc19zZXRHU3RhdGUoc3RhdGVzKSB7CiAgICAgIGZvciAodmFyIGkgPSAwLCBpaSA9IHN0YXRlcy5sZW5ndGg7IGkgPCBpaTsgaSsrKSB7CiAgICAgICAgdmFyIHN0YXRlID0gc3RhdGVzW2ldOwogICAgICAgIHZhciBrZXkgPSBzdGF0ZVswXTsKICAgICAgICB2YXIgdmFsdWUgPSBzdGF0ZVsxXTsKCiAgICAgICAgc3dpdGNoIChrZXkpIHsKICAgICAgICAgIGNhc2UgJ0xXJzoKICAgICAgICAgICAgdGhpcy5zZXRMaW5lV2lkdGgodmFsdWUpOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgJ0xDJzoKICAgICAgICAgICAgdGhpcy5zZXRMaW5lQ2FwKHZhbHVlKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlICdMSic6CiAgICAgICAgICAgIHRoaXMuc2V0TGluZUpvaW4odmFsdWUpOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgJ01MJzoKICAgICAgICAgICAgdGhpcy5zZXRNaXRlckxpbWl0KHZhbHVlKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlICdEJzoKICAgICAgICAgICAgdGhpcy5zZXREYXNoKHZhbHVlWzBdLCB2YWx1ZVsxXSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAnUkknOgogICAgICAgICAgICB0aGlzLnNldFJlbmRlcmluZ0ludGVudCh2YWx1ZSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAnRkwnOgogICAgICAgICAgICB0aGlzLnNldEZsYXRuZXNzKHZhbHVlKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlICdGb250JzoKICAgICAgICAgICAgdGhpcy5zZXRGb250KHZhbHVlWzBdLCB2YWx1ZVsxXSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAnQ0EnOgogICAgICAgICAgICB0aGlzLmN1cnJlbnQuc3Ryb2tlQWxwaGEgPSBzdGF0ZVsxXTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlICdjYSc6CiAgICAgICAgICAgIHRoaXMuY3VycmVudC5maWxsQWxwaGEgPSBzdGF0ZVsxXTsKICAgICAgICAgICAgdGhpcy5jdHguZ2xvYmFsQWxwaGEgPSBzdGF0ZVsxXTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlICdCTSc6CiAgICAgICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5uYW1lICYmICh2YWx1ZS5uYW1lICE9PSAnTm9ybWFsJykpIHsKICAgICAgICAgICAgICB2YXIgbW9kZSA9IHZhbHVlLm5hbWUucmVwbGFjZSgvKFtBLVpdKS9nLAogICAgICAgICAgICAgICAgZnVuY3Rpb24oYykgewogICAgICAgICAgICAgICAgICByZXR1cm4gJy0nICsgYy50b0xvd2VyQ2FzZSgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICkuc3Vic3RyaW5nKDEpOwogICAgICAgICAgICAgIHRoaXMuY3R4Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9IG1vZGU7CiAgICAgICAgICAgICAgaWYgKHRoaXMuY3R4Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiAhPT0gbW9kZSkgewogICAgICAgICAgICAgICAgd2FybignZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uICInICsgbW9kZSArCiAgICAgICAgICAgICAgICAgICAgICciIGlzIG5vdCBzdXBwb3J0ZWQnKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgdGhpcy5jdHguZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gJ3NvdXJjZS1vdmVyJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgJ1NNYXNrJzoKICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudC5hY3RpdmVTTWFzaykgewogICAgICAgICAgICAgIHRoaXMuZW5kU01hc2tHcm91cCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRoaXMuY3VycmVudC5hY3RpdmVTTWFzayA9IHZhbHVlID8gdGhpcy50ZW1wU01hc2sgOiBudWxsOwogICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50LmFjdGl2ZVNNYXNrKSB7CiAgICAgICAgICAgICAgdGhpcy5iZWdpblNNYXNrR3JvdXAoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0aGlzLnRlbXBTTWFzayA9IG51bGw7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgIGJlZ2luU01hc2tHcm91cDogZnVuY3Rpb24gQ2FudmFzR3JhcGhpY3NfYmVnaW5TTWFza0dyb3VwKCkgewoKICAgICAgdmFyIGFjdGl2ZVNNYXNrID0gdGhpcy5jdXJyZW50LmFjdGl2ZVNNYXNrOwogICAgICB2YXIgZHJhd25XaWR0aCA9IGFjdGl2ZVNNYXNrLmNhbnZhcy53aWR0aDsKICAgICAgdmFyIGRyYXduSGVpZ2h0ID0gYWN0aXZlU01hc2suY2FudmFzLmhlaWdodDsKICAgICAgdmFyIGNhY2hlSWQgPSAnc21hc2tHcm91cEF0JyArIHRoaXMuZ3JvdXBMZXZlbDsKICAgICAgdmFyIHNjcmF0Y2hDYW52YXMgPSBDYWNoZWRDYW52YXNlcy5nZXRDYW52YXMoCiAgICAgICAgY2FjaGVJZCwgZHJhd25XaWR0aCwgZHJhd25IZWlnaHQsIHRydWUpOwoKICAgICAgdmFyIGN1cnJlbnRDdHggPSB0aGlzLmN0eDsKICAgICAgdmFyIGN1cnJlbnRUcmFuc2Zvcm0gPSBjdXJyZW50Q3R4Lm1vekN1cnJlbnRUcmFuc2Zvcm07CiAgICAgIHRoaXMuY3R4LnNhdmUoKTsKCiAgICAgIHZhciBncm91cEN0eCA9IHNjcmF0Y2hDYW52YXMuY29udGV4dDsKICAgICAgZ3JvdXBDdHguc2NhbGUoMSAvIGFjdGl2ZVNNYXNrLnNjYWxlWCwgMSAvIGFjdGl2ZVNNYXNrLnNjYWxlWSk7CiAgICAgIGdyb3VwQ3R4LnRyYW5zbGF0ZSgtYWN0aXZlU01hc2sub2Zmc2V0WCwgLWFjdGl2ZVNNYXNrLm9mZnNldFkpOwogICAgICBncm91cEN0eC50cmFuc2Zvcm0uYXBwbHkoZ3JvdXBDdHgsIGN1cnJlbnRUcmFuc2Zvcm0pOwoKICAgICAgY29weUN0eFN0YXRlKGN1cnJlbnRDdHgsIGdyb3VwQ3R4KTsKICAgICAgdGhpcy5jdHggPSBncm91cEN0eDsKICAgICAgdGhpcy5zZXRHU3RhdGUoWwogICAgICAgIFsnQk0nLCAnTm9ybWFsJ10sCiAgICAgICAgWydjYScsIDFdLAogICAgICAgIFsnQ0EnLCAxXQogICAgICBdKTsKICAgICAgdGhpcy5ncm91cFN0YWNrLnB1c2goY3VycmVudEN0eCk7CiAgICAgIHRoaXMuZ3JvdXBMZXZlbCsrOwogICAgfSwKICAgIGVuZFNNYXNrR3JvdXA6IGZ1bmN0aW9uIENhbnZhc0dyYXBoaWNzX2VuZFNNYXNrR3JvdXAoKSB7CiAgICAgIHZhciBncm91cEN0eCA9IHRoaXMuY3R4OwogICAgICB0aGlzLmdyb3VwTGV2ZWwtLTsKICAgICAgdGhpcy5jdHggPSB0aGlzLmdyb3VwU3RhY2sucG9wKCk7CgogICAgICBjb21wb3NlU01hc2sodGhpcy5jdHgsIHRoaXMuY3VycmVudC5hY3RpdmVTTWFzaywgZ3JvdXBDdHgpOwogICAgICB0aGlzLmN0eC5yZXN0b3JlKCk7CiAgICB9LAogICAgc2F2ZTogZnVuY3Rpb24gQ2FudmFzR3JhcGhpY3Nfc2F2ZSgpIHsKICAgICAgdGhpcy5jdHguc2F2ZSgpOwogICAgICB2YXIgb2xkID0gdGhpcy5jdXJyZW50OwogICAgICB0aGlzLnN0YXRlU3RhY2sucHVzaChvbGQpOwogICAgICB0aGlzLmN1cnJlbnQgPSBvbGQuY2xvbmUoKTsKICAgICAgdGhpcy5jdXJyZW50LmFjdGl2ZVNNYXNrID0gbnVsbDsKICAgIH0sCiAgICByZXN0b3JlOiBmdW5jdGlvbiBDYW52YXNHcmFwaGljc19yZXN0b3JlKCkgewogICAgICBpZiAodGhpcy5zdGF0ZVN0YWNrLmxlbmd0aCAhPT0gMCkgewogICAgICAgIGlmICh0aGlzLmN1cnJlbnQuYWN0aXZlU01hc2sgIT09IG51bGwpIHsKICAgICAgICAgIHRoaXMuZW5kU01hc2tHcm91cCgpOwogICAgICAgIH0KCiAgICAgICAgdGhpcy5jdXJyZW50ID0gdGhpcy5zdGF0ZVN0YWNrLnBvcCgpOwogICAgICAgIHRoaXMuY3R4LnJlc3RvcmUoKTsKCiAgICAgICAgdGhpcy5jYWNoZWRHZXRTaW5nbGVQaXhlbFdpZHRoID0gbnVsbDsKICAgICAgfQogICAgfSwKICAgIHRyYW5zZm9ybTogZnVuY3Rpb24gQ2FudmFzR3JhcGhpY3NfdHJhbnNmb3JtKGEsIGIsIGMsIGQsIGUsIGYpIHsKICAgICAgdGhpcy5jdHgudHJhbnNmb3JtKGEsIGIsIGMsIGQsIGUsIGYpOwoKICAgICAgdGhpcy5jYWNoZWRHZXRTaW5nbGVQaXhlbFdpZHRoID0gbnVsbDsKICAgIH0sCgogICAgLy8gUGF0aAogICAgY29uc3RydWN0UGF0aDogZnVuY3Rpb24gQ2FudmFzR3JhcGhpY3NfY29uc3RydWN0UGF0aChvcHMsIGFyZ3MpIHsKICAgICAgdmFyIGN0eCA9IHRoaXMuY3R4OwogICAgICB2YXIgY3VycmVudCA9IHRoaXMuY3VycmVudDsKICAgICAgdmFyIHggPSBjdXJyZW50LngsIHkgPSBjdXJyZW50Lnk7CiAgICAgIGZvciAodmFyIGkgPSAwLCBqID0gMCwgaWkgPSBvcHMubGVuZ3RoOyBpIDwgaWk7IGkrKykgewogICAgICAgIHN3aXRjaCAob3BzW2ldIHwgMCkgewogICAgICAgICAgY2FzZSBPUFMucmVjdGFuZ2xlOgogICAgICAgICAgICB4ID0gYXJnc1tqKytdOwogICAgICAgICAgICB5ID0gYXJnc1tqKytdOwogICAgICAgICAgICB2YXIgd2lkdGggPSBhcmdzW2orK107CiAgICAgICAgICAgIHZhciBoZWlnaHQgPSBhcmdzW2orK107CiAgICAgICAgICAgIGlmICh3aWR0aCA9PT0gMCkgewogICAgICAgICAgICAgIHdpZHRoID0gdGhpcy5nZXRTaW5nbGVQaXhlbFdpZHRoKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGhlaWdodCA9PT0gMCkgewogICAgICAgICAgICAgIGhlaWdodCA9IHRoaXMuZ2V0U2luZ2xlUGl4ZWxXaWR0aCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciB4dyA9IHggKyB3aWR0aDsKICAgICAgICAgICAgdmFyIHloID0geSArIGhlaWdodDsKICAgICAgICAgICAgdGhpcy5jdHgubW92ZVRvKHgsIHkpOwogICAgICAgICAgICB0aGlzLmN0eC5saW5lVG8oeHcsIHkpOwogICAgICAgICAgICB0aGlzLmN0eC5saW5lVG8oeHcsIHloKTsKICAgICAgICAgICAgdGhpcy5jdHgubGluZVRvKHgsIHloKTsKICAgICAgICAgICAgdGhpcy5jdHgubGluZVRvKHgsIHkpOwogICAgICAgICAgICB0aGlzLmN0eC5jbG9zZVBhdGgoKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlIE9QUy5tb3ZlVG86CiAgICAgICAgICAgIHggPSBhcmdzW2orK107CiAgICAgICAgICAgIHkgPSBhcmdzW2orK107CiAgICAgICAgICAgIGN0eC5tb3ZlVG8oeCwgeSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSBPUFMubGluZVRvOgogICAgICAgICAgICB4ID0gYXJnc1tqKytdOwogICAgICAgICAgICB5ID0gYXJnc1tqKytdOwogICAgICAgICAgICBjdHgubGluZVRvKHgsIHkpOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgT1BTLmN1cnZlVG86CiAgICAgICAgICAgIHggPSBhcmdzW2ogKyA0XTsKICAgICAgICAgICAgeSA9IGFyZ3NbaiArIDVdOwogICAgICAgICAgICBjdHguYmV6aWVyQ3VydmVUbyhhcmdzW2pdLCBhcmdzW2ogKyAxXSwgYXJnc1tqICsgMl0sIGFyZ3NbaiArIDNdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LCB5KTsKICAgICAgICAgICAgaiArPSA2OwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgT1BTLmN1cnZlVG8yOgogICAgICAgICAgICBjdHguYmV6aWVyQ3VydmVUbyh4LCB5LCBhcmdzW2pdLCBhcmdzW2ogKyAxXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1tqICsgMl0sIGFyZ3NbaiArIDNdKTsKICAgICAgICAgICAgeCA9IGFyZ3NbaiArIDJdOwogICAgICAgICAgICB5ID0gYXJnc1tqICsgM107CiAgICAgICAgICAgIGogKz0gNDsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlIE9QUy5jdXJ2ZVRvMzoKICAgICAgICAgICAgeCA9IGFyZ3NbaiArIDJdOwogICAgICAgICAgICB5ID0gYXJnc1tqICsgM107CiAgICAgICAgICAgIGN0eC5iZXppZXJDdXJ2ZVRvKGFyZ3Nbal0sIGFyZ3NbaiArIDFdLCB4LCB5LCB4LCB5KTsKICAgICAgICAgICAgaiArPSA0OwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgT1BTLmNsb3NlUGF0aDoKICAgICAgICAgICAgY3R4LmNsb3NlUGF0aCgpOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgIH0KICAgICAgY3VycmVudC5zZXRDdXJyZW50UG9pbnQoeCwgeSk7CiAgICB9LAogICAgY2xvc2VQYXRoOiBmdW5jdGlvbiBDYW52YXNHcmFwaGljc19jbG9zZVBhdGgoKSB7CiAgICAgIHRoaXMuY3R4LmNsb3NlUGF0aCgpOwogICAgfSwKICAgIHN0cm9rZTogZnVuY3Rpb24gQ2FudmFzR3JhcGhpY3Nfc3Ryb2tlKGNvbnN1bWVQYXRoKSB7CiAgICAgIGNvbnN1bWVQYXRoID0gdHlwZW9mIGNvbnN1bWVQYXRoICE9PSAndW5kZWZpbmVkJyA/IGNvbnN1bWVQYXRoIDogdHJ1ZTsKICAgICAgdmFyIGN0eCA9IHRoaXMuY3R4OwogICAgICB2YXIgc3Ryb2tlQ29sb3IgPSB0aGlzLmN1cnJlbnQuc3Ryb2tlQ29sb3I7CiAgICAgIC8vIFByZXZlbnQgZHJhd2luZyB0b28gdGhpbiBsaW5lcyBieSBlbmZvcmNpbmcgYSBtaW5pbXVtIGxpbmUgd2lkdGguCiAgICAgIGN0eC5saW5lV2lkdGggPSBNYXRoLm1heCh0aGlzLmdldFNpbmdsZVBpeGVsV2lkdGgoKSAqIE1JTl9XSURUSF9GQUNUT1IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnQubGluZVdpZHRoKTsKICAgICAgLy8gRm9yIHN0cm9rZSB3ZSB3YW50IHRvIHRlbXBvcmFyaWx5IGNoYW5nZSB0aGUgZ2xvYmFsIGFscGhhIHRvIHRoZQogICAgICAvLyBzdHJva2luZyBhbHBoYS4KICAgICAgY3R4Lmdsb2JhbEFscGhhID0gdGhpcy5jdXJyZW50LnN0cm9rZUFscGhhOwogICAgICBpZiAoc3Ryb2tlQ29sb3IgJiYgc3Ryb2tlQ29sb3IuaGFzT3duUHJvcGVydHkoJ3R5cGUnKSAmJgogICAgICAgICAgc3Ryb2tlQ29sb3IudHlwZSA9PT0gJ1BhdHRlcm4nKSB7CiAgICAgICAgLy8gZm9yIHBhdHRlcm5zLCB3ZSB0cmFuc2Zvcm0gdG8gcGF0dGVybiBzcGFjZSwgY2FsY3VsYXRlCiAgICAgICAgLy8gdGhlIHBhdHRlcm4sIGNhbGwgc3Ryb2tlLCBhbmQgcmVzdG9yZSB0byB1c2VyIHNwYWNlCiAgICAgICAgY3R4LnNhdmUoKTsKICAgICAgICBjdHguc3Ryb2tlU3R5bGUgPSBzdHJva2VDb2xvci5nZXRQYXR0ZXJuKGN0eCwgdGhpcyk7CiAgICAgICAgY3R4LnN0cm9rZSgpOwogICAgICAgIGN0eC5yZXN0b3JlKCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgY3R4LnN0cm9rZSgpOwogICAgICB9CiAgICAgIGlmIChjb25zdW1lUGF0aCkgewogICAgICAgIHRoaXMuY29uc3VtZVBhdGgoKTsKICAgICAgfQogICAgICAvLyBSZXN0b3JlIHRoZSBnbG9iYWwgYWxwaGEgdG8gdGhlIGZpbGwgYWxwaGEKICAgICAgY3R4Lmdsb2JhbEFscGhhID0gdGhpcy5jdXJyZW50LmZpbGxBbHBoYTsKICAgIH0sCiAgICBjbG9zZVN0cm9rZTogZnVuY3Rpb24gQ2FudmFzR3JhcGhpY3NfY2xvc2VTdHJva2UoKSB7CiAgICAgIHRoaXMuY2xvc2VQYXRoKCk7CiAgICAgIHRoaXMuc3Ryb2tlKCk7CiAgICB9LAogICAgZmlsbDogZnVuY3Rpb24gQ2FudmFzR3JhcGhpY3NfZmlsbChjb25zdW1lUGF0aCkgewogICAgICBjb25zdW1lUGF0aCA9IHR5cGVvZiBjb25zdW1lUGF0aCAhPT0gJ3VuZGVmaW5lZCcgPyBjb25zdW1lUGF0aCA6IHRydWU7CiAgICAgIHZhciBjdHggPSB0aGlzLmN0eDsKICAgICAgdmFyIGZpbGxDb2xvciA9IHRoaXMuY3VycmVudC5maWxsQ29sb3I7CiAgICAgIHZhciBpc1BhdHRlcm5GaWxsID0gdGhpcy5jdXJyZW50LnBhdHRlcm5GaWxsOwogICAgICB2YXIgbmVlZFJlc3RvcmUgPSBmYWxzZTsKCiAgICAgIGlmIChpc1BhdHRlcm5GaWxsKSB7CiAgICAgICAgY3R4LnNhdmUoKTsKICAgICAgICBjdHguZmlsbFN0eWxlID0gZmlsbENvbG9yLmdldFBhdHRlcm4oY3R4LCB0aGlzKTsKICAgICAgICBuZWVkUmVzdG9yZSA9IHRydWU7CiAgICAgIH0KCiAgICAgIGlmICh0aGlzLnBlbmRpbmdFT0ZpbGwpIHsKICAgICAgICBpZiAoY3R4Lm1vekZpbGxSdWxlICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgIGN0eC5tb3pGaWxsUnVsZSA9ICdldmVub2RkJzsKICAgICAgICAgIGN0eC5maWxsKCk7CiAgICAgICAgICBjdHgubW96RmlsbFJ1bGUgPSAnbm9uemVybyc7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgIGN0eC5maWxsKCdldmVub2RkJyk7CiAgICAgICAgICB9IGNhdGNoIChleCkgewogICAgICAgICAgICAvLyBzaG91bGRuJ3QgcmVhbGx5IGhhcHBlbiwgYnV0IGJyb3dzZXJzIG1pZ2h0IHRoaW5rIGRpZmZlcmVudGx5CiAgICAgICAgICAgIGN0eC5maWxsKCk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHRoaXMucGVuZGluZ0VPRmlsbCA9IGZhbHNlOwogICAgICB9IGVsc2UgewogICAgICAgIGN0eC5maWxsKCk7CiAgICAgIH0KCiAgICAgIGlmIChuZWVkUmVzdG9yZSkgewogICAgICAgIGN0eC5yZXN0b3JlKCk7CiAgICAgIH0KICAgICAgaWYgKGNvbnN1bWVQYXRoKSB7CiAgICAgICAgdGhpcy5jb25zdW1lUGF0aCgpOwogICAgICB9CiAgICB9LAogICAgZW9GaWxsOiBmdW5jdGlvbiBDYW52YXNHcmFwaGljc19lb0ZpbGwoKSB7CiAgICAgIHRoaXMucGVuZGluZ0VPRmlsbCA9IHRydWU7CiAgICAgIHRoaXMuZmlsbCgpOwogICAgfSwKICAgIGZpbGxTdHJva2U6IGZ1bmN0aW9uIENhbnZhc0dyYXBoaWNzX2ZpbGxTdHJva2UoKSB7CiAgICAgIHRoaXMuZmlsbChmYWxzZSk7CiAgICAgIHRoaXMuc3Ryb2tlKGZhbHNlKTsKCiAgICAgIHRoaXMuY29uc3VtZVBhdGgoKTsKICAgIH0sCiAgICBlb0ZpbGxTdHJva2U6IGZ1bmN0aW9uIENhbnZhc0dyYXBoaWNzX2VvRmlsbFN0cm9rZSgpIHsKICAgICAgdGhpcy5wZW5kaW5nRU9GaWxsID0gdHJ1ZTsKICAgICAgdGhpcy5maWxsU3Ryb2tlKCk7CiAgICB9LAogICAgY2xvc2VGaWxsU3Ryb2tlOiBmdW5jdGlvbiBDYW52YXNHcmFwaGljc19jbG9zZUZpbGxTdHJva2UoKSB7CiAgICAgIHRoaXMuY2xvc2VQYXRoKCk7CiAgICAgIHRoaXMuZmlsbFN0cm9rZSgpOwogICAgfSwKICAgIGNsb3NlRU9GaWxsU3Ryb2tlOiBmdW5jdGlvbiBDYW52YXNHcmFwaGljc19jbG9zZUVPRmlsbFN0cm9rZSgpIHsKICAgICAgdGhpcy5wZW5kaW5nRU9GaWxsID0gdHJ1ZTsKICAgICAgdGhpcy5jbG9zZVBhdGgoKTsKICAgICAgdGhpcy5maWxsU3Ryb2tlKCk7CiAgICB9LAogICAgZW5kUGF0aDogZnVuY3Rpb24gQ2FudmFzR3JhcGhpY3NfZW5kUGF0aCgpIHsKICAgICAgdGhpcy5jb25zdW1lUGF0aCgpOwogICAgfSwKCiAgICAvLyBDbGlwcGluZwogICAgY2xpcDogZnVuY3Rpb24gQ2FudmFzR3JhcGhpY3NfY2xpcCgpIHsKICAgICAgdGhpcy5wZW5kaW5nQ2xpcCA9IE5PUk1BTF9DTElQOwogICAgfSwKICAgIGVvQ2xpcDogZnVuY3Rpb24gQ2FudmFzR3JhcGhpY3NfZW9DbGlwKCkgewogICAgICB0aGlzLnBlbmRpbmdDbGlwID0gRU9fQ0xJUDsKICAgIH0sCgogICAgLy8gVGV4dAogICAgYmVnaW5UZXh0OiBmdW5jdGlvbiBDYW52YXNHcmFwaGljc19iZWdpblRleHQoKSB7CiAgICAgIHRoaXMuY3VycmVudC50ZXh0TWF0cml4ID0gSURFTlRJVFlfTUFUUklYOwogICAgICB0aGlzLmN1cnJlbnQudGV4dE1hdHJpeFNjYWxlID0gMTsKICAgICAgdGhpcy5jdXJyZW50LnggPSB0aGlzLmN1cnJlbnQubGluZVggPSAwOwogICAgICB0aGlzLmN1cnJlbnQueSA9IHRoaXMuY3VycmVudC5saW5lWSA9IDA7CiAgICB9LAogICAgZW5kVGV4dDogZnVuY3Rpb24gQ2FudmFzR3JhcGhpY3NfZW5kVGV4dCgpIHsKICAgICAgdmFyIHBhdGhzID0gdGhpcy5wZW5kaW5nVGV4dFBhdGhzOwogICAgICB2YXIgY3R4ID0gdGhpcy5jdHg7CiAgICAgIGlmIChwYXRocyA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgY3R4LmJlZ2luUGF0aCgpOwogICAgICAgIHJldHVybjsKICAgICAgfQoKICAgICAgY3R4LnNhdmUoKTsKICAgICAgY3R4LmJlZ2luUGF0aCgpOwogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhdGhzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgdmFyIHBhdGggPSBwYXRoc1tpXTsKICAgICAgICBjdHguc2V0VHJhbnNmb3JtLmFwcGx5KGN0eCwgcGF0aC50cmFuc2Zvcm0pOwogICAgICAgIGN0eC50cmFuc2xhdGUocGF0aC54LCBwYXRoLnkpOwogICAgICAgIHBhdGguYWRkVG9QYXRoKGN0eCwgcGF0aC5mb250U2l6ZSk7CiAgICAgIH0KICAgICAgY3R4LnJlc3RvcmUoKTsKICAgICAgY3R4LmNsaXAoKTsKICAgICAgY3R4LmJlZ2luUGF0aCgpOwogICAgICBkZWxldGUgdGhpcy5wZW5kaW5nVGV4dFBhdGhzOwogICAgfSwKICAgIHNldENoYXJTcGFjaW5nOiBmdW5jdGlvbiBDYW52YXNHcmFwaGljc19zZXRDaGFyU3BhY2luZyhzcGFjaW5nKSB7CiAgICAgIHRoaXMuY3VycmVudC5jaGFyU3BhY2luZyA9IHNwYWNpbmc7CiAgICB9LAogICAgc2V0V29yZFNwYWNpbmc6IGZ1bmN0aW9uIENhbnZhc0dyYXBoaWNzX3NldFdvcmRTcGFjaW5nKHNwYWNpbmcpIHsKICAgICAgdGhpcy5jdXJyZW50LndvcmRTcGFjaW5nID0gc3BhY2luZzsKICAgIH0sCiAgICBzZXRIU2NhbGU6IGZ1bmN0aW9uIENhbnZhc0dyYXBoaWNzX3NldEhTY2FsZShzY2FsZSkgewogICAgICB0aGlzLmN1cnJlbnQudGV4dEhTY2FsZSA9IHNjYWxlIC8gMTAwOwogICAgfSwKICAgIHNldExlYWRpbmc6IGZ1bmN0aW9uIENhbnZhc0dyYXBoaWNzX3NldExlYWRpbmcobGVhZGluZykgewogICAgICB0aGlzLmN1cnJlbnQubGVhZGluZyA9IC1sZWFkaW5nOwogICAgfSwKICAgIHNldEZvbnQ6IGZ1bmN0aW9uIENhbnZhc0dyYXBoaWNzX3NldEZvbnQoZm9udFJlZk5hbWUsIHNpemUpIHsKICAgICAgdmFyIGZvbnRPYmogPSB0aGlzLmNvbW1vbk9ianMuZ2V0KGZvbnRSZWZOYW1lKTsKICAgICAgdmFyIGN1cnJlbnQgPSB0aGlzLmN1cnJlbnQ7CgogICAgICBpZiAoIWZvbnRPYmopIHsKICAgICAgICBlcnJvcignQ2FuXCd0IGZpbmQgZm9udCBmb3IgJyArIGZvbnRSZWZOYW1lKTsKICAgICAgfQoKICAgICAgY3VycmVudC5mb250TWF0cml4ID0gKGZvbnRPYmouZm9udE1hdHJpeCA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250T2JqLmZvbnRNYXRyaXggOiBGT05UX0lERU5USVRZX01BVFJJWCk7CgogICAgICAvLyBBIHZhbGlkIG1hdHJpeCBuZWVkcyBhbGwgbWFpbiBkaWFnb25hbCBlbGVtZW50cyB0byBiZSBub24temVybwogICAgICAvLyBUaGlzIGFsc28gZW5zdXJlcyB3ZSBieXBhc3MgRkYgYnVnemlsbGEgYnVnICM3MTk4NDQuCiAgICAgIGlmIChjdXJyZW50LmZvbnRNYXRyaXhbMF0gPT09IDAgfHwKICAgICAgICAgIGN1cnJlbnQuZm9udE1hdHJpeFszXSA9PT0gMCkgewogICAgICAgIHdhcm4oJ0ludmFsaWQgZm9udCBtYXRyaXggZm9yIGZvbnQgJyArIGZvbnRSZWZOYW1lKTsKICAgICAgfQoKICAgICAgLy8gVGhlIHNwZWMgZm9yIFRmIChzZXRGb250KSBzYXlzIHRoYXQgJ3NpemUnIHNwZWNpZmllcyB0aGUgZm9udCAnc2NhbGUnLAogICAgICAvLyBhbmQgaW4gc29tZSBkb2NzIHRoaXMgY2FuIGJlIG5lZ2F0aXZlIChpbnZlcnRlZCB4LXkgYXhlcykuCiAgICAgIGlmIChzaXplIDwgMCkgewogICAgICAgIHNpemUgPSAtc2l6ZTsKICAgICAgICBjdXJyZW50LmZvbnREaXJlY3Rpb24gPSAtMTsKICAgICAgfSBlbHNlIHsKICAgICAgICBjdXJyZW50LmZvbnREaXJlY3Rpb24gPSAxOwogICAgICB9CgogICAgICB0aGlzLmN1cnJlbnQuZm9udCA9IGZvbnRPYmo7CiAgICAgIHRoaXMuY3VycmVudC5mb250U2l6ZSA9IHNpemU7CgogICAgICBpZiAoZm9udE9iai5pc1R5cGUzRm9udCkgewogICAgICAgIHJldHVybjsgLy8gd2UgZG9uJ3QgbmVlZCBjdHguZm9udCBmb3IgVHlwZTMgZm9udHMKICAgICAgfQoKICAgICAgdmFyIG5hbWUgPSBmb250T2JqLmxvYWRlZE5hbWUgfHwgJ3NhbnMtc2VyaWYnOwogICAgICB2YXIgYm9sZCA9IGZvbnRPYmouYmxhY2sgPyAoZm9udE9iai5ib2xkID8gJ2JvbGRlcicgOiAnYm9sZCcpIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvbnRPYmouYm9sZCA/ICdib2xkJyA6ICdub3JtYWwnKTsKCiAgICAgIHZhciBpdGFsaWMgPSBmb250T2JqLml0YWxpYyA/ICdpdGFsaWMnIDogJ25vcm1hbCc7CiAgICAgIHZhciB0eXBlZmFjZSA9ICciJyArIG5hbWUgKyAnIiwgJyArIGZvbnRPYmouZmFsbGJhY2tOYW1lOwoKICAgICAgLy8gU29tZSBmb250IGJhY2tlbmRzIGNhbm5vdCBoYW5kbGUgZm9udHMgYmVsb3cgY2VydGFpbiBzaXplLgogICAgICAvLyBLZWVwaW5nIHRoZSBmb250IGF0IG1pbmltYWwgc2l6ZSBhbmQgdXNpbmcgdGhlIGZvbnRTaXplU2NhbGUgdG8gY2hhbmdlCiAgICAgIC8vIHRoZSBjdXJyZW50IHRyYW5zZm9ybWF0aW9uIG1hdHJpeCBiZWZvcmUgdGhlIGZpbGxUZXh0L3N0cm9rZVRleHQuCiAgICAgIC8vIFNlZSBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD03MjYyMjcKICAgICAgdmFyIGJyb3dzZXJGb250U2l6ZSA9IHNpemUgPCBNSU5fRk9OVF9TSVpFID8gTUlOX0ZPTlRfU0laRSA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplID4gTUFYX0ZPTlRfU0laRSA/IE1BWF9GT05UX1NJWkUgOiBzaXplOwogICAgICB0aGlzLmN1cnJlbnQuZm9udFNpemVTY2FsZSA9IHNpemUgLyBicm93c2VyRm9udFNpemU7CgogICAgICB2YXIgcnVsZSA9IGl0YWxpYyArICcgJyArIGJvbGQgKyAnICcgKyBicm93c2VyRm9udFNpemUgKyAncHggJyArIHR5cGVmYWNlOwogICAgICB0aGlzLmN0eC5mb250ID0gcnVsZTsKICAgIH0sCiAgICBzZXRUZXh0UmVuZGVyaW5nTW9kZTogZnVuY3Rpb24gQ2FudmFzR3JhcGhpY3Nfc2V0VGV4dFJlbmRlcmluZ01vZGUobW9kZSkgewogICAgICB0aGlzLmN1cnJlbnQudGV4dFJlbmRlcmluZ01vZGUgPSBtb2RlOwogICAgfSwKICAgIHNldFRleHRSaXNlOiBmdW5jdGlvbiBDYW52YXNHcmFwaGljc19zZXRUZXh0UmlzZShyaXNlKSB7CiAgICAgIHRoaXMuY3VycmVudC50ZXh0UmlzZSA9IHJpc2U7CiAgICB9LAogICAgbW92ZVRleHQ6IGZ1bmN0aW9uIENhbnZhc0dyYXBoaWNzX21vdmVUZXh0KHgsIHkpIHsKICAgICAgdGhpcy5jdXJyZW50LnggPSB0aGlzLmN1cnJlbnQubGluZVggKz0geDsKICAgICAgdGhpcy5jdXJyZW50LnkgPSB0aGlzLmN1cnJlbnQubGluZVkgKz0geTsKICAgIH0sCiAgICBzZXRMZWFkaW5nTW92ZVRleHQ6IGZ1bmN0aW9uIENhbnZhc0dyYXBoaWNzX3NldExlYWRpbmdNb3ZlVGV4dCh4LCB5KSB7CiAgICAgIHRoaXMuc2V0TGVhZGluZygteSk7CiAgICAgIHRoaXMubW92ZVRleHQoeCwgeSk7CiAgICB9LAogICAgc2V0VGV4dE1hdHJpeDogZnVuY3Rpb24gQ2FudmFzR3JhcGhpY3Nfc2V0VGV4dE1hdHJpeChhLCBiLCBjLCBkLCBlLCBmKSB7CiAgICAgIHRoaXMuY3VycmVudC50ZXh0TWF0cml4ID0gW2EsIGIsIGMsIGQsIGUsIGZdOwogICAgICB0aGlzLmN1cnJlbnQudGV4dE1hdHJpeFNjYWxlID0gTWF0aC5zcXJ0KGEgKiBhICsgYiAqIGIpOwoKICAgICAgdGhpcy5jdXJyZW50LnggPSB0aGlzLmN1cnJlbnQubGluZVggPSAwOwogICAgICB0aGlzLmN1cnJlbnQueSA9IHRoaXMuY3VycmVudC5saW5lWSA9IDA7CiAgICB9LAogICAgbmV4dExpbmU6IGZ1bmN0aW9uIENhbnZhc0dyYXBoaWNzX25leHRMaW5lKCkgewogICAgICB0aGlzLm1vdmVUZXh0KDAsIHRoaXMuY3VycmVudC5sZWFkaW5nKTsKICAgIH0sCgogICAgcGFpbnRDaGFyOiBmdW5jdGlvbiBDYW52YXNHcmFwaGljc19wYWludENoYXIoY2hhcmFjdGVyLCB4LCB5KSB7CiAgICAgIHZhciBjdHggPSB0aGlzLmN0eDsKICAgICAgdmFyIGN1cnJlbnQgPSB0aGlzLmN1cnJlbnQ7CiAgICAgIHZhciBmb250ID0gY3VycmVudC5mb250OwogICAgICB2YXIgdGV4dFJlbmRlcmluZ01vZGUgPSBjdXJyZW50LnRleHRSZW5kZXJpbmdNb2RlOwogICAgICB2YXIgZm9udFNpemUgPSBjdXJyZW50LmZvbnRTaXplIC8gY3VycmVudC5mb250U2l6ZVNjYWxlOwogICAgICB2YXIgZmlsbFN0cm9rZU1vZGUgPSB0ZXh0UmVuZGVyaW5nTW9kZSAmCiAgICAgICAgVGV4dFJlbmRlcmluZ01vZGUuRklMTF9TVFJPS0VfTUFTSzsKICAgICAgdmFyIGlzQWRkVG9QYXRoU2V0ID0gISEodGV4dFJlbmRlcmluZ01vZGUgJgogICAgICAgIFRleHRSZW5kZXJpbmdNb2RlLkFERF9UT19QQVRIX0ZMQUcpOwoKICAgICAgdmFyIGFkZFRvUGF0aDsKICAgICAgaWYgKGZvbnQuZGlzYWJsZUZvbnRGYWNlIHx8IGlzQWRkVG9QYXRoU2V0KSB7CiAgICAgICAgYWRkVG9QYXRoID0gZm9udC5nZXRQYXRoR2VuZXJhdG9yKHRoaXMuY29tbW9uT2JqcywgY2hhcmFjdGVyKTsKICAgICAgfQoKICAgICAgaWYgKGZvbnQuZGlzYWJsZUZvbnRGYWNlKSB7CiAgICAgICAgY3R4LnNhdmUoKTsKICAgICAgICBjdHgudHJhbnNsYXRlKHgsIHkpOwogICAgICAgIGN0eC5iZWdpblBhdGgoKTsKICAgICAgICBhZGRUb1BhdGgoY3R4LCBmb250U2l6ZSk7CiAgICAgICAgaWYgKGZpbGxTdHJva2VNb2RlID09PSBUZXh0UmVuZGVyaW5nTW9kZS5GSUxMIHx8CiAgICAgICAgICAgIGZpbGxTdHJva2VNb2RlID09PSBUZXh0UmVuZGVyaW5nTW9kZS5GSUxMX1NUUk9LRSkgewogICAgICAgICAgY3R4LmZpbGwoKTsKICAgICAgICB9CiAgICAgICAgaWYgKGZpbGxTdHJva2VNb2RlID09PSBUZXh0UmVuZGVyaW5nTW9kZS5TVFJPS0UgfHwKICAgICAgICAgICAgZmlsbFN0cm9rZU1vZGUgPT09IFRleHRSZW5kZXJpbmdNb2RlLkZJTExfU1RST0tFKSB7CiAgICAgICAgICBjdHguc3Ryb2tlKCk7CiAgICAgICAgfQogICAgICAgIGN0eC5yZXN0b3JlKCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKGZpbGxTdHJva2VNb2RlID09PSBUZXh0UmVuZGVyaW5nTW9kZS5GSUxMIHx8CiAgICAgICAgICAgIGZpbGxTdHJva2VNb2RlID09PSBUZXh0UmVuZGVyaW5nTW9kZS5GSUxMX1NUUk9LRSkgewogICAgICAgICAgY3R4LmZpbGxUZXh0KGNoYXJhY3RlciwgeCwgeSk7CiAgICAgICAgfQogICAgICAgIGlmIChmaWxsU3Ryb2tlTW9kZSA9PT0gVGV4dFJlbmRlcmluZ01vZGUuU1RST0tFIHx8CiAgICAgICAgICAgIGZpbGxTdHJva2VNb2RlID09PSBUZXh0UmVuZGVyaW5nTW9kZS5GSUxMX1NUUk9LRSkgewogICAgICAgICAgY3R4LnN0cm9rZVRleHQoY2hhcmFjdGVyLCB4LCB5KTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGlmIChpc0FkZFRvUGF0aFNldCkgewogICAgICAgIHZhciBwYXRocyA9IHRoaXMucGVuZGluZ1RleHRQYXRocyB8fCAodGhpcy5wZW5kaW5nVGV4dFBhdGhzID0gW10pOwogICAgICAgIHBhdGhzLnB1c2goewogICAgICAgICAgdHJhbnNmb3JtOiBjdHgubW96Q3VycmVudFRyYW5zZm9ybSwKICAgICAgICAgIHg6IHgsCiAgICAgICAgICB5OiB5LAogICAgICAgICAgZm9udFNpemU6IGZvbnRTaXplLAogICAgICAgICAgYWRkVG9QYXRoOiBhZGRUb1BhdGgKICAgICAgICB9KTsKICAgICAgfQogICAgfSwKCiAgICBnZXQgaXNGb250U3VicGl4ZWxBQUVuYWJsZWQoKSB7CiAgICAgIC8vIENoZWNrcyBpZiBhbnRpLWFsaWFzaW5nIGlzIGVuYWJsZWQgd2hlbiBzY2FsZWQgdGV4dCBpcyBwYWludGVkLgogICAgICAvLyBPbiBXaW5kb3dzIEdESSBzY2FsZWQgZm9udHMgbG9va3MgYmFkLgogICAgICB2YXIgY3R4ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJykuZ2V0Q29udGV4dCgnMmQnKTsKICAgICAgY3R4LnNjYWxlKDEuNSwgMSk7CiAgICAgIGN0eC5maWxsVGV4dCgnSScsIDAsIDEwKTsKICAgICAgdmFyIGRhdGEgPSBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIDEwLCAxMCkuZGF0YTsKICAgICAgdmFyIGVuYWJsZWQgPSBmYWxzZTsKICAgICAgZm9yICh2YXIgaSA9IDM7IGkgPCBkYXRhLmxlbmd0aDsgaSArPSA0KSB7CiAgICAgICAgaWYgKGRhdGFbaV0gPiAwICYmIGRhdGFbaV0gPCAyNTUpIHsKICAgICAgICAgIGVuYWJsZWQgPSB0cnVlOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiBzaGFkb3codGhpcywgJ2lzRm9udFN1YnBpeGVsQUFFbmFibGVkJywgZW5hYmxlZCk7CiAgICB9LAoKICAgIHNob3dUZXh0OiBmdW5jdGlvbiBDYW52YXNHcmFwaGljc19zaG93VGV4dChnbHlwaHMpIHsKICAgICAgdmFyIGN1cnJlbnQgPSB0aGlzLmN1cnJlbnQ7CiAgICAgIHZhciBmb250ID0gY3VycmVudC5mb250OwogICAgICBpZiAoZm9udC5pc1R5cGUzRm9udCkgewogICAgICAgIHJldHVybiB0aGlzLnNob3dUeXBlM1RleHQoZ2x5cGhzKTsKICAgICAgfQoKICAgICAgdmFyIGZvbnRTaXplID0gY3VycmVudC5mb250U2l6ZTsKICAgICAgaWYgKGZvbnRTaXplID09PSAwKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICB2YXIgY3R4ID0gdGhpcy5jdHg7CiAgICAgIHZhciBmb250U2l6ZVNjYWxlID0gY3VycmVudC5mb250U2l6ZVNjYWxlOwogICAgICB2YXIgY2hhclNwYWNpbmcgPSBjdXJyZW50LmNoYXJTcGFjaW5nOwogICAgICB2YXIgd29yZFNwYWNpbmcgPSBjdXJyZW50LndvcmRTcGFjaW5nOwogICAgICB2YXIgZm9udERpcmVjdGlvbiA9IGN1cnJlbnQuZm9udERpcmVjdGlvbjsKICAgICAgdmFyIHRleHRIU2NhbGUgPSBjdXJyZW50LnRleHRIU2NhbGUgKiBmb250RGlyZWN0aW9uOwogICAgICB2YXIgZ2x5cGhzTGVuZ3RoID0gZ2x5cGhzLmxlbmd0aDsKICAgICAgdmFyIHZlcnRpY2FsID0gZm9udC52ZXJ0aWNhbDsKICAgICAgdmFyIGRlZmF1bHRWTWV0cmljcyA9IGZvbnQuZGVmYXVsdFZNZXRyaWNzOwogICAgICB2YXIgd2lkdGhBZHZhbmNlU2NhbGUgPSBmb250U2l6ZSAqIGN1cnJlbnQuZm9udE1hdHJpeFswXTsKCiAgICAgIHZhciBzaW1wbGVGaWxsVGV4dCA9CiAgICAgICAgY3VycmVudC50ZXh0UmVuZGVyaW5nTW9kZSA9PT0gVGV4dFJlbmRlcmluZ01vZGUuRklMTCAmJgogICAgICAgICFmb250LmRpc2FibGVGb250RmFjZTsKCiAgICAgIGN0eC5zYXZlKCk7CiAgICAgIGN0eC50cmFuc2Zvcm0uYXBwbHkoY3R4LCBjdXJyZW50LnRleHRNYXRyaXgpOwogICAgICBjdHgudHJhbnNsYXRlKGN1cnJlbnQueCwgY3VycmVudC55ICsgY3VycmVudC50ZXh0UmlzZSk7CgogICAgICBpZiAoZm9udERpcmVjdGlvbiA+IDApIHsKICAgICAgICBjdHguc2NhbGUodGV4dEhTY2FsZSwgLTEpOwogICAgICB9IGVsc2UgewogICAgICAgIGN0eC5zY2FsZSh0ZXh0SFNjYWxlLCAxKTsKICAgICAgfQoKICAgICAgdmFyIGxpbmVXaWR0aCA9IGN1cnJlbnQubGluZVdpZHRoOwogICAgICB2YXIgc2NhbGUgPSBjdXJyZW50LnRleHRNYXRyaXhTY2FsZTsKICAgICAgaWYgKHNjYWxlID09PSAwIHx8IGxpbmVXaWR0aCA9PT0gMCkgewogICAgICAgIHZhciBmaWxsU3Ryb2tlTW9kZSA9IGN1cnJlbnQudGV4dFJlbmRlcmluZ01vZGUgJgogICAgICAgICAgVGV4dFJlbmRlcmluZ01vZGUuRklMTF9TVFJPS0VfTUFTSzsKICAgICAgICBpZiAoZmlsbFN0cm9rZU1vZGUgPT09IFRleHRSZW5kZXJpbmdNb2RlLlNUUk9LRSB8fAogICAgICAgICAgICBmaWxsU3Ryb2tlTW9kZSA9PT0gVGV4dFJlbmRlcmluZ01vZGUuRklMTF9TVFJPS0UpIHsKICAgICAgICAgIHRoaXMuY2FjaGVkR2V0U2luZ2xlUGl4ZWxXaWR0aCA9IG51bGw7CiAgICAgICAgICBsaW5lV2lkdGggPSB0aGlzLmdldFNpbmdsZVBpeGVsV2lkdGgoKSAqIE1JTl9XSURUSF9GQUNUT1I7CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIGxpbmVXaWR0aCAvPSBzY2FsZTsKICAgICAgfQoKICAgICAgaWYgKGZvbnRTaXplU2NhbGUgIT09IDEuMCkgewogICAgICAgIGN0eC5zY2FsZShmb250U2l6ZVNjYWxlLCBmb250U2l6ZVNjYWxlKTsKICAgICAgICBsaW5lV2lkdGggLz0gZm9udFNpemVTY2FsZTsKICAgICAgfQoKICAgICAgY3R4LmxpbmVXaWR0aCA9IGxpbmVXaWR0aDsKCiAgICAgIHZhciB4ID0gMCwgaTsKICAgICAgZm9yIChpID0gMDsgaSA8IGdseXBoc0xlbmd0aDsgKytpKSB7CiAgICAgICAgdmFyIGdseXBoID0gZ2x5cGhzW2ldOwogICAgICAgIGlmIChnbHlwaCA9PT0gbnVsbCkgewogICAgICAgICAgLy8gd29yZCBicmVhawogICAgICAgICAgeCArPSBmb250RGlyZWN0aW9uICogd29yZFNwYWNpbmc7CiAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9IGVsc2UgaWYgKGlzTnVtKGdseXBoKSkgewogICAgICAgICAgeCArPSAtZ2x5cGggKiBmb250U2l6ZSAqIDAuMDAxOwogICAgICAgICAgY29udGludWU7CiAgICAgICAgfQoKICAgICAgICB2YXIgcmVzdG9yZU5lZWRlZCA9IGZhbHNlOwogICAgICAgIHZhciBjaGFyYWN0ZXIgPSBnbHlwaC5mb250Q2hhcjsKICAgICAgICB2YXIgYWNjZW50ID0gZ2x5cGguYWNjZW50OwogICAgICAgIHZhciBzY2FsZWRYLCBzY2FsZWRZLCBzY2FsZWRBY2NlbnRYLCBzY2FsZWRBY2NlbnRZOwogICAgICAgIHZhciB3aWR0aCA9IGdseXBoLndpZHRoOwogICAgICAgIGlmICh2ZXJ0aWNhbCkgewogICAgICAgICAgdmFyIHZtZXRyaWMsIHZ4LCB2eTsKICAgICAgICAgIHZtZXRyaWMgPSBnbHlwaC52bWV0cmljIHx8IGRlZmF1bHRWTWV0cmljczsKICAgICAgICAgIHZ4ID0gZ2x5cGgudm1ldHJpYyA/IHZtZXRyaWNbMV0gOiB3aWR0aCAqIDAuNTsKICAgICAgICAgIHZ4ID0gLXZ4ICogd2lkdGhBZHZhbmNlU2NhbGU7CiAgICAgICAgICB2eSA9IHZtZXRyaWNbMl0gKiB3aWR0aEFkdmFuY2VTY2FsZTsKCiAgICAgICAgICB3aWR0aCA9IHZtZXRyaWMgPyAtdm1ldHJpY1swXSA6IHdpZHRoOwogICAgICAgICAgc2NhbGVkWCA9IHZ4IC8gZm9udFNpemVTY2FsZTsKICAgICAgICAgIHNjYWxlZFkgPSAoeCArIHZ5KSAvIGZvbnRTaXplU2NhbGU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHNjYWxlZFggPSB4IC8gZm9udFNpemVTY2FsZTsKICAgICAgICAgIHNjYWxlZFkgPSAwOwogICAgICAgIH0KCiAgICAgICAgaWYgKGZvbnQucmVtZWFzdXJlICYmIHdpZHRoID4gMCAmJiB0aGlzLmlzRm9udFN1YnBpeGVsQUFFbmFibGVkKSB7CiAgICAgICAgICAvLyBzb21lIHN0YW5kYXJkIGZvbnRzIG1heSBub3QgaGF2ZSB0aGUgZXhhY3Qgd2lkdGgsIHRyeWluZyB0bwogICAgICAgICAgLy8gcmVzY2FsZSBwZXIgY2hhcmFjdGVyCiAgICAgICAgICB2YXIgbWVhc3VyZWRXaWR0aCA9IGN0eC5tZWFzdXJlVGV4dChjaGFyYWN0ZXIpLndpZHRoICogMTAwMCAvCiAgICAgICAgICAgIGZvbnRTaXplICogZm9udFNpemVTY2FsZTsKICAgICAgICAgIHZhciBjaGFyYWN0ZXJTY2FsZVggPSB3aWR0aCAvIG1lYXN1cmVkV2lkdGg7CiAgICAgICAgICByZXN0b3JlTmVlZGVkID0gdHJ1ZTsKICAgICAgICAgIGN0eC5zYXZlKCk7CiAgICAgICAgICBjdHguc2NhbGUoY2hhcmFjdGVyU2NhbGVYLCAxKTsKICAgICAgICAgIHNjYWxlZFggLz0gY2hhcmFjdGVyU2NhbGVYOwogICAgICAgIH0KCiAgICAgICAgaWYgKHNpbXBsZUZpbGxUZXh0ICYmICFhY2NlbnQpIHsKICAgICAgICAgIC8vIGNvbW1vbiBjYXNlCiAgICAgICAgICBjdHguZmlsbFRleHQoY2hhcmFjdGVyLCBzY2FsZWRYLCBzY2FsZWRZKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdGhpcy5wYWludENoYXIoY2hhcmFjdGVyLCBzY2FsZWRYLCBzY2FsZWRZKTsKICAgICAgICAgIGlmIChhY2NlbnQpIHsKICAgICAgICAgICAgc2NhbGVkQWNjZW50WCA9IHNjYWxlZFggKyBhY2NlbnQub2Zmc2V0LnggLyBmb250U2l6ZVNjYWxlOwogICAgICAgICAgICBzY2FsZWRBY2NlbnRZID0gc2NhbGVkWSAtIGFjY2VudC5vZmZzZXQueSAvIGZvbnRTaXplU2NhbGU7CiAgICAgICAgICAgIHRoaXMucGFpbnRDaGFyKGFjY2VudC5mb250Q2hhciwgc2NhbGVkQWNjZW50WCwgc2NhbGVkQWNjZW50WSk7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICB2YXIgY2hhcldpZHRoID0gd2lkdGggKiB3aWR0aEFkdmFuY2VTY2FsZSArIGNoYXJTcGFjaW5nICogZm9udERpcmVjdGlvbjsKICAgICAgICB4ICs9IGNoYXJXaWR0aDsKCiAgICAgICAgaWYgKHJlc3RvcmVOZWVkZWQpIHsKICAgICAgICAgIGN0eC5yZXN0b3JlKCk7CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmICh2ZXJ0aWNhbCkgewogICAgICAgIGN1cnJlbnQueSAtPSB4ICogdGV4dEhTY2FsZTsKICAgICAgfSBlbHNlIHsKICAgICAgICBjdXJyZW50LnggKz0geCAqIHRleHRIU2NhbGU7CiAgICAgIH0KICAgICAgY3R4LnJlc3RvcmUoKTsKICAgIH0sCgogICAgc2hvd1R5cGUzVGV4dDogZnVuY3Rpb24gQ2FudmFzR3JhcGhpY3Nfc2hvd1R5cGUzVGV4dChnbHlwaHMpIHsKICAgICAgLy8gVHlwZTMgZm9udHMgLSBlYWNoIGdseXBoIGlzIGEgIm1pbmktUERGIgogICAgICB2YXIgY3R4ID0gdGhpcy5jdHg7CiAgICAgIHZhciBjdXJyZW50ID0gdGhpcy5jdXJyZW50OwogICAgICB2YXIgZm9udCA9IGN1cnJlbnQuZm9udDsKICAgICAgdmFyIGZvbnRTaXplID0gY3VycmVudC5mb250U2l6ZTsKICAgICAgdmFyIGZvbnREaXJlY3Rpb24gPSBjdXJyZW50LmZvbnREaXJlY3Rpb247CiAgICAgIHZhciBjaGFyU3BhY2luZyA9IGN1cnJlbnQuY2hhclNwYWNpbmc7CiAgICAgIHZhciB3b3JkU3BhY2luZyA9IGN1cnJlbnQud29yZFNwYWNpbmc7CiAgICAgIHZhciB0ZXh0SFNjYWxlID0gY3VycmVudC50ZXh0SFNjYWxlICogZm9udERpcmVjdGlvbjsKICAgICAgdmFyIGZvbnRNYXRyaXggPSBjdXJyZW50LmZvbnRNYXRyaXggfHwgRk9OVF9JREVOVElUWV9NQVRSSVg7CiAgICAgIHZhciBnbHlwaHNMZW5ndGggPSBnbHlwaHMubGVuZ3RoOwogICAgICB2YXIgaXNUZXh0SW52aXNpYmxlID0KICAgICAgICBjdXJyZW50LnRleHRSZW5kZXJpbmdNb2RlID09PSBUZXh0UmVuZGVyaW5nTW9kZS5JTlZJU0lCTEU7CiAgICAgIHZhciBpLCBnbHlwaCwgd2lkdGg7CgogICAgICBpZiAoaXNUZXh0SW52aXNpYmxlIHx8IGZvbnRTaXplID09PSAwKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICBjdHguc2F2ZSgpOwogICAgICBjdHgudHJhbnNmb3JtLmFwcGx5KGN0eCwgY3VycmVudC50ZXh0TWF0cml4KTsKICAgICAgY3R4LnRyYW5zbGF0ZShjdXJyZW50LngsIGN1cnJlbnQueSk7CgogICAgICBjdHguc2NhbGUodGV4dEhTY2FsZSwgZm9udERpcmVjdGlvbik7CgogICAgICBmb3IgKGkgPSAwOyBpIDwgZ2x5cGhzTGVuZ3RoOyArK2kpIHsKICAgICAgICBnbHlwaCA9IGdseXBoc1tpXTsKICAgICAgICBpZiAoZ2x5cGggPT09IG51bGwpIHsKICAgICAgICAgIC8vIHdvcmQgYnJlYWsKICAgICAgICAgIHRoaXMuY3R4LnRyYW5zbGF0ZSh3b3JkU3BhY2luZywgMCk7CiAgICAgICAgICBjdXJyZW50LnggKz0gd29yZFNwYWNpbmcgKiB0ZXh0SFNjYWxlOwogICAgICAgICAgY29udGludWU7CiAgICAgICAgfSBlbHNlIGlmIChpc051bShnbHlwaCkpIHsKICAgICAgICAgIHZhciBzcGFjaW5nTGVuZ3RoID0gLWdseXBoICogMC4wMDEgKiBmb250U2l6ZTsKICAgICAgICAgIHRoaXMuY3R4LnRyYW5zbGF0ZShzcGFjaW5nTGVuZ3RoLCAwKTsKICAgICAgICAgIGN1cnJlbnQueCArPSBzcGFjaW5nTGVuZ3RoICogdGV4dEhTY2FsZTsKICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KCiAgICAgICAgdmFyIG9wZXJhdG9yTGlzdCA9IGZvbnQuY2hhclByb2NPcGVyYXRvckxpc3RbZ2x5cGgub3BlcmF0b3JMaXN0SWRdOwogICAgICAgIGlmICghb3BlcmF0b3JMaXN0KSB7CiAgICAgICAgICB3YXJuKCdUeXBlMyBjaGFyYWN0ZXIgXCInICsgZ2x5cGgub3BlcmF0b3JMaXN0SWQgKwogICAgICAgICAgICAgICAnXCIgaXMgbm90IGF2YWlsYWJsZScpOwogICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIHRoaXMucHJvY2Vzc2luZ1R5cGUzID0gZ2x5cGg7CiAgICAgICAgdGhpcy5zYXZlKCk7CiAgICAgICAgY3R4LnNjYWxlKGZvbnRTaXplLCBmb250U2l6ZSk7CiAgICAgICAgY3R4LnRyYW5zZm9ybS5hcHBseShjdHgsIGZvbnRNYXRyaXgpOwogICAgICAgIHRoaXMuZXhlY3V0ZU9wZXJhdG9yTGlzdChvcGVyYXRvckxpc3QpOwogICAgICAgIHRoaXMucmVzdG9yZSgpOwoKICAgICAgICB2YXIgdHJhbnNmb3JtZWQgPSBVdGlsLmFwcGx5VHJhbnNmb3JtKFtnbHlwaC53aWR0aCwgMF0sIGZvbnRNYXRyaXgpOwogICAgICAgIHdpZHRoID0gdHJhbnNmb3JtZWRbMF0gKiBmb250U2l6ZSArIGNoYXJTcGFjaW5nOwoKICAgICAgICBjdHgudHJhbnNsYXRlKHdpZHRoLCAwKTsKICAgICAgICBjdXJyZW50LnggKz0gd2lkdGggKiB0ZXh0SFNjYWxlOwogICAgICB9CiAgICAgIGN0eC5yZXN0b3JlKCk7CiAgICAgIHRoaXMucHJvY2Vzc2luZ1R5cGUzID0gbnVsbDsKICAgIH0sCgogICAgLy8gVHlwZTMgZm9udHMKICAgIHNldENoYXJXaWR0aDogZnVuY3Rpb24gQ2FudmFzR3JhcGhpY3Nfc2V0Q2hhcldpZHRoKHhXaWR0aCwgeVdpZHRoKSB7CiAgICAgIC8vIFdlIGNhbiBzYWZlbHkgaWdub3JlIHRoaXMgc2luY2UgdGhlIHdpZHRoIHNob3VsZCBiZSB0aGUgc2FtZQogICAgICAvLyBhcyB0aGUgd2lkdGggaW4gdGhlIFdpZHRocyBhcnJheS4KICAgIH0sCiAgICBzZXRDaGFyV2lkdGhBbmRCb3VuZHM6IGZ1bmN0aW9uIENhbnZhc0dyYXBoaWNzX3NldENoYXJXaWR0aEFuZEJvdW5kcyh4V2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlXaWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVyeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJ5KSB7CiAgICAgIC8vIFRPRE8gQWNjb3JkaW5nIHRvIHRoZSBzcGVjIHdlJ3JlIGFsc28gc3VwcG9zZSB0byBpZ25vcmUgYW55IG9wZXJhdG9ycwogICAgICAvLyB0aGF0IHNldCBjb2xvciBvciBpbmNsdWRlIGltYWdlcyB3aGlsZSBwcm9jZXNzaW5nIHRoaXMgdHlwZTMgZm9udC4KICAgICAgdGhpcy5jdHgucmVjdChsbHgsIGxseSwgdXJ4IC0gbGx4LCB1cnkgLSBsbHkpOwogICAgICB0aGlzLmNsaXAoKTsKICAgICAgdGhpcy5lbmRQYXRoKCk7CiAgICB9LAoKICAgIC8vIENvbG9yCiAgICBnZXRDb2xvck5fUGF0dGVybjogZnVuY3Rpb24gQ2FudmFzR3JhcGhpY3NfZ2V0Q29sb3JOX1BhdHRlcm4oSVIpIHsKICAgICAgdmFyIHBhdHRlcm47CiAgICAgIGlmIChJUlswXSA9PT0gJ1RpbGluZ1BhdHRlcm4nKSB7CiAgICAgICAgdmFyIGNvbG9yID0gSVJbMV07CiAgICAgICAgcGF0dGVybiA9IG5ldyBUaWxpbmdQYXR0ZXJuKElSLCBjb2xvciwgdGhpcy5jdHgsIHRoaXMub2JqcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25PYmpzLCB0aGlzLmJhc2VUcmFuc2Zvcm0pOwogICAgICB9IGVsc2UgewogICAgICAgIHBhdHRlcm4gPSBnZXRTaGFkaW5nUGF0dGVybkZyb21JUihJUik7CiAgICAgIH0KICAgICAgcmV0dXJuIHBhdHRlcm47CiAgICB9LAogICAgc2V0U3Ryb2tlQ29sb3JOOiBmdW5jdGlvbiBDYW52YXNHcmFwaGljc19zZXRTdHJva2VDb2xvck4oLyouLi4qLykgewogICAgICB0aGlzLmN1cnJlbnQuc3Ryb2tlQ29sb3IgPSB0aGlzLmdldENvbG9yTl9QYXR0ZXJuKGFyZ3VtZW50cyk7CiAgICB9LAogICAgc2V0RmlsbENvbG9yTjogZnVuY3Rpb24gQ2FudmFzR3JhcGhpY3Nfc2V0RmlsbENvbG9yTigvKi4uLiovKSB7CiAgICAgIHRoaXMuY3VycmVudC5maWxsQ29sb3IgPSB0aGlzLmdldENvbG9yTl9QYXR0ZXJuKGFyZ3VtZW50cyk7CiAgICAgIHRoaXMuY3VycmVudC5wYXR0ZXJuRmlsbCA9IHRydWU7CiAgICB9LAogICAgc2V0U3Ryb2tlUkdCQ29sb3I6IGZ1bmN0aW9uIENhbnZhc0dyYXBoaWNzX3NldFN0cm9rZVJHQkNvbG9yKHIsIGcsIGIpIHsKICAgICAgdmFyIGNvbG9yID0gVXRpbC5tYWtlQ3NzUmdiKHIsIGcsIGIpOwogICAgICB0aGlzLmN0eC5zdHJva2VTdHlsZSA9IGNvbG9yOwogICAgICB0aGlzLmN1cnJlbnQuc3Ryb2tlQ29sb3IgPSBjb2xvcjsKICAgIH0sCiAgICBzZXRGaWxsUkdCQ29sb3I6IGZ1bmN0aW9uIENhbnZhc0dyYXBoaWNzX3NldEZpbGxSR0JDb2xvcihyLCBnLCBiKSB7CiAgICAgIHZhciBjb2xvciA9IFV0aWwubWFrZUNzc1JnYihyLCBnLCBiKTsKICAgICAgdGhpcy5jdHguZmlsbFN0eWxlID0gY29sb3I7CiAgICAgIHRoaXMuY3VycmVudC5maWxsQ29sb3IgPSBjb2xvcjsKICAgICAgdGhpcy5jdXJyZW50LnBhdHRlcm5GaWxsID0gZmFsc2U7CiAgICB9LAoKICAgIHNoYWRpbmdGaWxsOiBmdW5jdGlvbiBDYW52YXNHcmFwaGljc19zaGFkaW5nRmlsbChwYXR0ZXJuSVIpIHsKICAgICAgdmFyIGN0eCA9IHRoaXMuY3R4OwoKICAgICAgdGhpcy5zYXZlKCk7CiAgICAgIHZhciBwYXR0ZXJuID0gZ2V0U2hhZGluZ1BhdHRlcm5Gcm9tSVIocGF0dGVybklSKTsKICAgICAgY3R4LmZpbGxTdHlsZSA9IHBhdHRlcm4uZ2V0UGF0dGVybihjdHgsIHRoaXMsIHRydWUpOwoKICAgICAgdmFyIGludiA9IGN0eC5tb3pDdXJyZW50VHJhbnNmb3JtSW52ZXJzZTsKICAgICAgaWYgKGludikgewogICAgICAgIHZhciBjYW52YXMgPSBjdHguY2FudmFzOwogICAgICAgIHZhciB3aWR0aCA9IGNhbnZhcy53aWR0aDsKICAgICAgICB2YXIgaGVpZ2h0ID0gY2FudmFzLmhlaWdodDsKCiAgICAgICAgdmFyIGJsID0gVXRpbC5hcHBseVRyYW5zZm9ybShbMCwgMF0sIGludik7CiAgICAgICAgdmFyIGJyID0gVXRpbC5hcHBseVRyYW5zZm9ybShbMCwgaGVpZ2h0XSwgaW52KTsKICAgICAgICB2YXIgdWwgPSBVdGlsLmFwcGx5VHJhbnNmb3JtKFt3aWR0aCwgMF0sIGludik7CiAgICAgICAgdmFyIHVyID0gVXRpbC5hcHBseVRyYW5zZm9ybShbd2lkdGgsIGhlaWdodF0sIGludik7CgogICAgICAgIHZhciB4MCA9IE1hdGgubWluKGJsWzBdLCBiclswXSwgdWxbMF0sIHVyWzBdKTsKICAgICAgICB2YXIgeTAgPSBNYXRoLm1pbihibFsxXSwgYnJbMV0sIHVsWzFdLCB1clsxXSk7CiAgICAgICAgdmFyIHgxID0gTWF0aC5tYXgoYmxbMF0sIGJyWzBdLCB1bFswXSwgdXJbMF0pOwogICAgICAgIHZhciB5MSA9IE1hdGgubWF4KGJsWzFdLCBiclsxXSwgdWxbMV0sIHVyWzFdKTsKCiAgICAgICAgdGhpcy5jdHguZmlsbFJlY3QoeDAsIHkwLCB4MSAtIHgwLCB5MSAtIHkwKTsKICAgICAgfSBlbHNlIHsKICAgICAgICAvLyBIQUNLIHRvIGRyYXcgdGhlIGdyYWRpZW50IG9udG8gYW4gaW5maW5pdGUgcmVjdGFuZ2xlLgogICAgICAgIC8vIFBERiBncmFkaWVudHMgYXJlIGRyYXduIGFjcm9zcyB0aGUgZW50aXJlIGltYWdlIHdoaWxlCiAgICAgICAgLy8gQ2FudmFzIG9ubHkgYWxsb3dzIGdyYWRpZW50cyB0byBiZSBkcmF3biBpbiBhIHJlY3RhbmdsZQogICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgYnVnIHNob3VsZCBhbGxvdyB1cyB0byByZW1vdmUgdGhpcy4KICAgICAgICAvLyBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD02NjQ4ODQKCiAgICAgICAgdGhpcy5jdHguZmlsbFJlY3QoLTFlMTAsIC0xZTEwLCAyZTEwLCAyZTEwKTsKICAgICAgfQoKICAgICAgdGhpcy5yZXN0b3JlKCk7CiAgICB9LAoKICAgIC8vIEltYWdlcwogICAgYmVnaW5JbmxpbmVJbWFnZTogZnVuY3Rpb24gQ2FudmFzR3JhcGhpY3NfYmVnaW5JbmxpbmVJbWFnZSgpIHsKICAgICAgZXJyb3IoJ1Nob3VsZCBub3QgY2FsbCBiZWdpbklubGluZUltYWdlJyk7CiAgICB9LAogICAgYmVnaW5JbWFnZURhdGE6IGZ1bmN0aW9uIENhbnZhc0dyYXBoaWNzX2JlZ2luSW1hZ2VEYXRhKCkgewogICAgICBlcnJvcignU2hvdWxkIG5vdCBjYWxsIGJlZ2luSW1hZ2VEYXRhJyk7CiAgICB9LAoKICAgIHBhaW50Rm9ybVhPYmplY3RCZWdpbjogZnVuY3Rpb24gQ2FudmFzR3JhcGhpY3NfcGFpbnRGb3JtWE9iamVjdEJlZ2luKG1hdHJpeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmJveCkgewogICAgICB0aGlzLnNhdmUoKTsKICAgICAgdGhpcy5iYXNlVHJhbnNmb3JtU3RhY2sucHVzaCh0aGlzLmJhc2VUcmFuc2Zvcm0pOwoKICAgICAgaWYgKGlzQXJyYXkobWF0cml4KSAmJiA2ID09PSBtYXRyaXgubGVuZ3RoKSB7CiAgICAgICAgdGhpcy50cmFuc2Zvcm0uYXBwbHkodGhpcywgbWF0cml4KTsKICAgICAgfQoKICAgICAgdGhpcy5iYXNlVHJhbnNmb3JtID0gdGhpcy5jdHgubW96Q3VycmVudFRyYW5zZm9ybTsKCiAgICAgIGlmIChpc0FycmF5KGJib3gpICYmIDQgPT09IGJib3gubGVuZ3RoKSB7CiAgICAgICAgdmFyIHdpZHRoID0gYmJveFsyXSAtIGJib3hbMF07CiAgICAgICAgdmFyIGhlaWdodCA9IGJib3hbM10gLSBiYm94WzFdOwogICAgICAgIHRoaXMuY3R4LnJlY3QoYmJveFswXSwgYmJveFsxXSwgd2lkdGgsIGhlaWdodCk7CiAgICAgICAgdGhpcy5jbGlwKCk7CiAgICAgICAgdGhpcy5lbmRQYXRoKCk7CiAgICAgIH0KICAgIH0sCgogICAgcGFpbnRGb3JtWE9iamVjdEVuZDogZnVuY3Rpb24gQ2FudmFzR3JhcGhpY3NfcGFpbnRGb3JtWE9iamVjdEVuZCgpIHsKICAgICAgdGhpcy5yZXN0b3JlKCk7CiAgICAgIHRoaXMuYmFzZVRyYW5zZm9ybSA9IHRoaXMuYmFzZVRyYW5zZm9ybVN0YWNrLnBvcCgpOwogICAgfSwKCiAgICBiZWdpbkdyb3VwOiBmdW5jdGlvbiBDYW52YXNHcmFwaGljc19iZWdpbkdyb3VwKGdyb3VwKSB7CiAgICAgIHRoaXMuc2F2ZSgpOwogICAgICB2YXIgY3VycmVudEN0eCA9IHRoaXMuY3R4OwogICAgICAvLyBUT0RPIG5vbi1pc29sYXRlZCBncm91cHMgLSBhY2NvcmRpbmcgdG8gUmlrIGF0IGFkb2JlIG5vbi1pc29sYXRlZAogICAgICAvLyBncm91cCByZXN1bHRzIGFyZW4ndCB1c3VhbGx5IHRoYXQgZGlmZmVyZW50IGFuZCB0aGV5IGV2ZW4gaGF2ZSB0b29scwogICAgICAvLyB0aGF0IGlnbm9yZSB0aGlzIHNldHRpbmcuIE5vdGVzIGZyb20gUmlrIG9uIGltcGxtZW50aW5nOgogICAgICAvLyAtIFdoZW4geW91IGVuY291bnRlciBhbiB0cmFuc3BhcmVuY3kgZ3JvdXAsIGNyZWF0ZSBhIG5ldyBjYW52YXMgd2l0aAogICAgICAvLyB0aGUgZGltZW5zaW9ucyBvZiB0aGUgYmJveAogICAgICAvLyAtIGNvcHkgdGhlIGNvbnRlbnQgZnJvbSB0aGUgcHJldmlvdXMgY2FudmFzIHRvIHRoZSBuZXcgY2FudmFzCiAgICAgIC8vIC0gZHJhdyBhcyB1c3VhbAogICAgICAvLyAtIHJlbW92ZSB0aGUgYmFja2Ryb3AgYWxwaGE6CiAgICAgIC8vIGFscGhhTmV3ID0gMSAtICgxIC0gYWxwaGEpLygxIC0gYWxwaGFCYWNrZHJvcCkgd2l0aCAnYWxwaGEnIHRoZSBhbHBoYQogICAgICAvLyB2YWx1ZSBvZiB5b3VyIHRyYW5zcGFyZW5jeSBncm91cCBhbmQgJ2FscGhhQmFja2Ryb3AnIHRoZSBhbHBoYSBvZiB0aGUKICAgICAgLy8gYmFja2Ryb3AKICAgICAgLy8gLSByZW1vdmUgYmFja2dyb3VuZCBjb2xvcjoKICAgICAgLy8gY29sb3JOZXcgPSBjb2xvciAtIGFscGhhTmV3ICpjb2xvckJhY2tkcm9wIC8oMSAtIGFscGhhTmV3KQogICAgICBpZiAoIWdyb3VwLmlzb2xhdGVkKSB7CiAgICAgICAgaW5mbygnVE9ETzogU3VwcG9ydCBub24taXNvbGF0ZWQgZ3JvdXBzLicpOwogICAgICB9CgogICAgICAvLyBUT0RPIGtub2Nrb3V0IC0gc3VwcG9zZWRseSBwb3NzaWJsZSB3aXRoIHRoZSBjbGV2ZXIgdXNlIG9mIGNvbXBvc2l0aW5nCiAgICAgIC8vIG1vZGVzLgogICAgICBpZiAoZ3JvdXAua25vY2tvdXQpIHsKICAgICAgICB3YXJuKCdLbm9ja291dCBncm91cHMgbm90IHN1cHBvcnRlZC4nKTsKICAgICAgfQoKICAgICAgdmFyIGN1cnJlbnRUcmFuc2Zvcm0gPSBjdXJyZW50Q3R4Lm1vekN1cnJlbnRUcmFuc2Zvcm07CiAgICAgIGlmIChncm91cC5tYXRyaXgpIHsKICAgICAgICBjdXJyZW50Q3R4LnRyYW5zZm9ybS5hcHBseShjdXJyZW50Q3R4LCBncm91cC5tYXRyaXgpOwogICAgICB9CiAgICAgIGFzc2VydChncm91cC5iYm94LCAnQm91bmRpbmcgYm94IGlzIHJlcXVpcmVkLicpOwoKICAgICAgLy8gQmFzZWQgb24gdGhlIGN1cnJlbnQgdHJhbnNmb3JtIGZpZ3VyZSBvdXQgaG93IGJpZyB0aGUgYm91bmRpbmcgYm94CiAgICAgIC8vIHdpbGwgYWN0dWFsbHkgYmUuCiAgICAgIHZhciBib3VuZHMgPSBVdGlsLmdldEF4aWFsQWxpZ25lZEJvdW5kaW5nQm94KAogICAgICAgICAgICAgICAgICAgIGdyb3VwLmJib3gsCiAgICAgICAgICAgICAgICAgICAgY3VycmVudEN0eC5tb3pDdXJyZW50VHJhbnNmb3JtKTsKICAgICAgLy8gQ2xpcCB0aGUgYm91bmRpbmcgYm94IHRvIHRoZSBjdXJyZW50IGNhbnZhcy4KICAgICAgdmFyIGNhbnZhc0JvdW5kcyA9IFswLAogICAgICAgICAgICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEN0eC5jYW52YXMud2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEN0eC5jYW52YXMuaGVpZ2h0XTsKICAgICAgYm91bmRzID0gVXRpbC5pbnRlcnNlY3QoYm91bmRzLCBjYW52YXNCb3VuZHMpIHx8IFswLCAwLCAwLCAwXTsKICAgICAgLy8gVXNlIGNlaWwgaW4gY2FzZSB3ZSdyZSBiZXR3ZWVuIHNpemVzIHNvIHdlIGRvbid0IGNyZWF0ZSBjYW52YXMgdGhhdCBpcwogICAgICAvLyB0b28gc21hbGwgYW5kIG1ha2UgdGhlIGNhbnZhcyBhdCBsZWFzdCAxeDEgcGl4ZWxzLgogICAgICB2YXIgb2Zmc2V0WCA9IE1hdGguZmxvb3IoYm91bmRzWzBdKTsKICAgICAgdmFyIG9mZnNldFkgPSBNYXRoLmZsb29yKGJvdW5kc1sxXSk7CiAgICAgIHZhciBkcmF3bldpZHRoID0gTWF0aC5tYXgoTWF0aC5jZWlsKGJvdW5kc1syXSkgLSBvZmZzZXRYLCAxKTsKICAgICAgdmFyIGRyYXduSGVpZ2h0ID0gTWF0aC5tYXgoTWF0aC5jZWlsKGJvdW5kc1szXSkgLSBvZmZzZXRZLCAxKTsKICAgICAgdmFyIHNjYWxlWCA9IDEsIHNjYWxlWSA9IDE7CiAgICAgIGlmIChkcmF3bldpZHRoID4gTUFYX0dST1VQX1NJWkUpIHsKICAgICAgICBzY2FsZVggPSBkcmF3bldpZHRoIC8gTUFYX0dST1VQX1NJWkU7CiAgICAgICAgZHJhd25XaWR0aCA9IE1BWF9HUk9VUF9TSVpFOwogICAgICB9CiAgICAgIGlmIChkcmF3bkhlaWdodCA+IE1BWF9HUk9VUF9TSVpFKSB7CiAgICAgICAgc2NhbGVZID0gZHJhd25IZWlnaHQgLyBNQVhfR1JPVVBfU0laRTsKICAgICAgICBkcmF3bkhlaWdodCA9IE1BWF9HUk9VUF9TSVpFOwogICAgICB9CgogICAgICB2YXIgY2FjaGVJZCA9ICdncm91cEF0JyArIHRoaXMuZ3JvdXBMZXZlbDsKICAgICAgaWYgKGdyb3VwLnNtYXNrKSB7CiAgICAgICAgLy8gVXNpbmcgdHdvIGNhY2hlIGVudHJpZXMgaXMgY2FzZSBpZiBtYXNrcyBhcmUgdXNlZCBvbmUgYWZ0ZXIgYW5vdGhlci4KICAgICAgICBjYWNoZUlkICs9ICAnX3NtYXNrXycgKyAoKHRoaXMuc21hc2tDb3VudGVyKyspICUgMik7CiAgICAgIH0KICAgICAgdmFyIHNjcmF0Y2hDYW52YXMgPSBDYWNoZWRDYW52YXNlcy5nZXRDYW52YXMoCiAgICAgICAgY2FjaGVJZCwgZHJhd25XaWR0aCwgZHJhd25IZWlnaHQsIHRydWUpOwogICAgICB2YXIgZ3JvdXBDdHggPSBzY3JhdGNoQ2FudmFzLmNvbnRleHQ7CgogICAgICAvLyBTaW5jZSB3ZSBjcmVhdGVkIGEgbmV3IGNhbnZhcyB0aGF0IGlzIGp1c3QgdGhlIHNpemUgb2YgdGhlIGJvdW5kaW5nIGJveAogICAgICAvLyB3ZSBoYXZlIHRvIHRyYW5zbGF0ZSB0aGUgZ3JvdXAgY3R4LgogICAgICBncm91cEN0eC5zY2FsZSgxIC8gc2NhbGVYLCAxIC8gc2NhbGVZKTsKICAgICAgZ3JvdXBDdHgudHJhbnNsYXRlKC1vZmZzZXRYLCAtb2Zmc2V0WSk7CiAgICAgIGdyb3VwQ3R4LnRyYW5zZm9ybS5hcHBseShncm91cEN0eCwgY3VycmVudFRyYW5zZm9ybSk7CgogICAgICBpZiAoZ3JvdXAuc21hc2spIHsKICAgICAgICAvLyBTYXZpbmcgc3RhdGUgYW5kIGNhY2hlZCBtYXNrIHRvIGJlIHVzZWQgaW4gc2V0R1N0YXRlLgogICAgICAgIHRoaXMuc21hc2tTdGFjay5wdXNoKHsKICAgICAgICAgIGNhbnZhczogc2NyYXRjaENhbnZhcy5jYW52YXMsCiAgICAgICAgICBjb250ZXh0OiBncm91cEN0eCwKICAgICAgICAgIG9mZnNldFg6IG9mZnNldFgsCiAgICAgICAgICBvZmZzZXRZOiBvZmZzZXRZLAogICAgICAgICAgc2NhbGVYOiBzY2FsZVgsCiAgICAgICAgICBzY2FsZVk6IHNjYWxlWSwKICAgICAgICAgIHN1YnR5cGU6IGdyb3VwLnNtYXNrLnN1YnR5cGUsCiAgICAgICAgICBiYWNrZHJvcDogZ3JvdXAuc21hc2suYmFja2Ryb3AKICAgICAgICB9KTsKICAgICAgfSBlbHNlIHsKICAgICAgICAvLyBTZXR1cCB0aGUgY3VycmVudCBjdHggc28gd2hlbiB0aGUgZ3JvdXAgaXMgcG9wcGVkIHdlIGRyYXcgaXQgYXQgdGhlCiAgICAgICAgLy8gcmlnaHQgbG9jYXRpb24uCiAgICAgICAgY3VycmVudEN0eC5zZXRUcmFuc2Zvcm0oMSwgMCwgMCwgMSwgMCwgMCk7CiAgICAgICAgY3VycmVudEN0eC50cmFuc2xhdGUob2Zmc2V0WCwgb2Zmc2V0WSk7CiAgICAgICAgY3VycmVudEN0eC5zY2FsZShzY2FsZVgsIHNjYWxlWSk7CiAgICAgIH0KICAgICAgLy8gVGhlIHRyYW5zcGFyZW5jeSBncm91cCBpbmhlcml0cyBhbGwgb2ZmIHRoZSBjdXJyZW50IGdyYXBoaWNzIHN0YXRlCiAgICAgIC8vIGV4Y2VwdCB0aGUgYmxlbmQgbW9kZSwgc29mdCBtYXNrLCBhbmQgYWxwaGEgY29uc3RhbnRzLgogICAgICBjb3B5Q3R4U3RhdGUoY3VycmVudEN0eCwgZ3JvdXBDdHgpOwogICAgICB0aGlzLmN0eCA9IGdyb3VwQ3R4OwogICAgICB0aGlzLnNldEdTdGF0ZShbCiAgICAgICAgWydCTScsICdOb3JtYWwnXSwKICAgICAgICBbJ2NhJywgMV0sCiAgICAgICAgWydDQScsIDFdCiAgICAgIF0pOwogICAgICB0aGlzLmdyb3VwU3RhY2sucHVzaChjdXJyZW50Q3R4KTsKICAgICAgdGhpcy5ncm91cExldmVsKys7CiAgICB9LAoKICAgIGVuZEdyb3VwOiBmdW5jdGlvbiBDYW52YXNHcmFwaGljc19lbmRHcm91cChncm91cCkgewogICAgICB0aGlzLmdyb3VwTGV2ZWwtLTsKICAgICAgdmFyIGdyb3VwQ3R4ID0gdGhpcy5jdHg7CiAgICAgIHRoaXMuY3R4ID0gdGhpcy5ncm91cFN0YWNrLnBvcCgpOwogICAgICAvLyBUdXJuIG9mZiBpbWFnZSBzbW9vdGhpbmcgdG8gYXZvaWQgc3ViIHBpeGVsIGludGVycG9sYXRpb24gd2hpY2ggY2FuCiAgICAgIC8vIGxvb2sga2luZCBvZiBibHVycnkgZm9yIHNvbWUgcGRmcy4KICAgICAgaWYgKHRoaXMuY3R4LmltYWdlU21vb3RoaW5nRW5hYmxlZCAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgdGhpcy5jdHguaW1hZ2VTbW9vdGhpbmdFbmFibGVkID0gZmFsc2U7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5jdHgubW96SW1hZ2VTbW9vdGhpbmdFbmFibGVkID0gZmFsc2U7CiAgICAgIH0KICAgICAgaWYgKGdyb3VwLnNtYXNrKSB7CiAgICAgICAgdGhpcy50ZW1wU01hc2sgPSB0aGlzLnNtYXNrU3RhY2sucG9wKCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5jdHguZHJhd0ltYWdlKGdyb3VwQ3R4LmNhbnZhcywgMCwgMCk7CiAgICAgIH0KICAgICAgdGhpcy5yZXN0b3JlKCk7CiAgICB9LAoKICAgIGJlZ2luQW5ub3RhdGlvbnM6IGZ1bmN0aW9uIENhbnZhc0dyYXBoaWNzX2JlZ2luQW5ub3RhdGlvbnMoKSB7CiAgICAgIHRoaXMuc2F2ZSgpOwogICAgICB0aGlzLmN1cnJlbnQgPSBuZXcgQ2FudmFzRXh0cmFTdGF0ZSgpOwogICAgfSwKCiAgICBlbmRBbm5vdGF0aW9uczogZnVuY3Rpb24gQ2FudmFzR3JhcGhpY3NfZW5kQW5ub3RhdGlvbnMoKSB7CiAgICAgIHRoaXMucmVzdG9yZSgpOwogICAgfSwKCiAgICBiZWdpbkFubm90YXRpb246IGZ1bmN0aW9uIENhbnZhc0dyYXBoaWNzX2JlZ2luQW5ub3RhdGlvbihyZWN0LCB0cmFuc2Zvcm0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRyaXgpIHsKICAgICAgdGhpcy5zYXZlKCk7CgogICAgICBpZiAoaXNBcnJheShyZWN0KSAmJiA0ID09PSByZWN0Lmxlbmd0aCkgewogICAgICAgIHZhciB3aWR0aCA9IHJlY3RbMl0gLSByZWN0WzBdOwogICAgICAgIHZhciBoZWlnaHQgPSByZWN0WzNdIC0gcmVjdFsxXTsKICAgICAgICB0aGlzLmN0eC5yZWN0KHJlY3RbMF0sIHJlY3RbMV0sIHdpZHRoLCBoZWlnaHQpOwogICAgICAgIHRoaXMuY2xpcCgpOwogICAgICAgIHRoaXMuZW5kUGF0aCgpOwogICAgICB9CgogICAgICB0aGlzLnRyYW5zZm9ybS5hcHBseSh0aGlzLCB0cmFuc2Zvcm0pOwogICAgICB0aGlzLnRyYW5zZm9ybS5hcHBseSh0aGlzLCBtYXRyaXgpOwogICAgfSwKCiAgICBlbmRBbm5vdGF0aW9uOiBmdW5jdGlvbiBDYW52YXNHcmFwaGljc19lbmRBbm5vdGF0aW9uKCkgewogICAgICB0aGlzLnJlc3RvcmUoKTsKICAgIH0sCgogICAgcGFpbnRKcGVnWE9iamVjdDogZnVuY3Rpb24gQ2FudmFzR3JhcGhpY3NfcGFpbnRKcGVnWE9iamVjdChvYmpJZCwgdywgaCkgewogICAgICB2YXIgZG9tSW1hZ2UgPSB0aGlzLm9ianMuZ2V0KG9iaklkKTsKICAgICAgaWYgKCFkb21JbWFnZSkgewogICAgICAgIHdhcm4oJ0RlcGVuZGVudCBpbWFnZSBpc25cJ3QgcmVhZHkgeWV0Jyk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICB0aGlzLnNhdmUoKTsKCiAgICAgIHZhciBjdHggPSB0aGlzLmN0eDsKICAgICAgLy8gc2NhbGUgdGhlIGltYWdlIHRvIHRoZSB1bml0IHNxdWFyZQogICAgICBjdHguc2NhbGUoMSAvIHcsIC0xIC8gaCk7CgogICAgICBjdHguZHJhd0ltYWdlKGRvbUltYWdlLCAwLCAwLCBkb21JbWFnZS53aWR0aCwgZG9tSW1hZ2UuaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgIDAsIC1oLCB3LCBoKTsKICAgICAgaWYgKHRoaXMuaW1hZ2VMYXllcikgewogICAgICAgIHZhciBjdXJyZW50VHJhbnNmb3JtID0gY3R4Lm1vekN1cnJlbnRUcmFuc2Zvcm1JbnZlcnNlOwogICAgICAgIHZhciBwb3NpdGlvbiA9IHRoaXMuZ2V0Q2FudmFzUG9zaXRpb24oMCwgMCk7CiAgICAgICAgdGhpcy5pbWFnZUxheWVyLmFwcGVuZEltYWdlKHsKICAgICAgICAgIG9iaklkOiBvYmpJZCwKICAgICAgICAgIGxlZnQ6IHBvc2l0aW9uWzBdLAogICAgICAgICAgdG9wOiBwb3NpdGlvblsxXSwKICAgICAgICAgIHdpZHRoOiB3IC8gY3VycmVudFRyYW5zZm9ybVswXSwKICAgICAgICAgIGhlaWdodDogaCAvIGN1cnJlbnRUcmFuc2Zvcm1bM10KICAgICAgICB9KTsKICAgICAgfQogICAgICB0aGlzLnJlc3RvcmUoKTsKICAgIH0sCgogICAgcGFpbnRJbWFnZU1hc2tYT2JqZWN0OiBmdW5jdGlvbiBDYW52YXNHcmFwaGljc19wYWludEltYWdlTWFza1hPYmplY3QoaW1nKSB7CiAgICAgIHZhciBjdHggPSB0aGlzLmN0eDsKICAgICAgdmFyIHdpZHRoID0gaW1nLndpZHRoLCBoZWlnaHQgPSBpbWcuaGVpZ2h0OwogICAgICB2YXIgZmlsbENvbG9yID0gdGhpcy5jdXJyZW50LmZpbGxDb2xvcjsKICAgICAgdmFyIGlzUGF0dGVybkZpbGwgPSB0aGlzLmN1cnJlbnQucGF0dGVybkZpbGw7CgogICAgICB2YXIgZ2x5cGggPSB0aGlzLnByb2Nlc3NpbmdUeXBlMzsKCiAgICAgIGlmIChDT01QSUxFX1RZUEUzX0dMWVBIUyAmJiBnbHlwaCAmJiBnbHlwaC5jb21waWxlZCA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgaWYgKHdpZHRoIDw9IE1BWF9TSVpFX1RPX0NPTVBJTEUgJiYgaGVpZ2h0IDw9IE1BWF9TSVpFX1RPX0NPTVBJTEUpIHsKICAgICAgICAgIGdseXBoLmNvbXBpbGVkID0KICAgICAgICAgICAgY29tcGlsZVR5cGUzR2x5cGgoe2RhdGE6IGltZy5kYXRhLCB3aWR0aDogd2lkdGgsIGhlaWdodDogaGVpZ2h0fSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGdseXBoLmNvbXBpbGVkID0gbnVsbDsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGlmIChnbHlwaCAmJiBnbHlwaC5jb21waWxlZCkgewogICAgICAgIGdseXBoLmNvbXBpbGVkKGN0eCk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICB2YXIgbWFza0NhbnZhcyA9IENhY2hlZENhbnZhc2VzLmdldENhbnZhcygnbWFza0NhbnZhcycsIHdpZHRoLCBoZWlnaHQpOwogICAgICB2YXIgbWFza0N0eCA9IG1hc2tDYW52YXMuY29udGV4dDsKICAgICAgbWFza0N0eC5zYXZlKCk7CgogICAgICBwdXRCaW5hcnlJbWFnZU1hc2sobWFza0N0eCwgaW1nKTsKCiAgICAgIG1hc2tDdHguZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gJ3NvdXJjZS1pbic7CgogICAgICBtYXNrQ3R4LmZpbGxTdHlsZSA9IGlzUGF0dGVybkZpbGwgPwogICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvci5nZXRQYXR0ZXJuKG1hc2tDdHgsIHRoaXMpIDogZmlsbENvbG9yOwogICAgICBtYXNrQ3R4LmZpbGxSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpOwoKICAgICAgbWFza0N0eC5yZXN0b3JlKCk7CgogICAgICB0aGlzLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0KG1hc2tDYW52YXMuY2FudmFzKTsKICAgIH0sCgogICAgcGFpbnRJbWFnZU1hc2tYT2JqZWN0UmVwZWF0OgogICAgICBmdW5jdGlvbiBDYW52YXNHcmFwaGljc19wYWludEltYWdlTWFza1hPYmplY3RSZXBlYXQoaW1nRGF0YSwgc2NhbGVYLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGVZLCBwb3NpdGlvbnMpIHsKICAgICAgdmFyIHdpZHRoID0gaW1nRGF0YS53aWR0aDsKICAgICAgdmFyIGhlaWdodCA9IGltZ0RhdGEuaGVpZ2h0OwogICAgICB2YXIgZmlsbENvbG9yID0gdGhpcy5jdXJyZW50LmZpbGxDb2xvcjsKICAgICAgdmFyIGlzUGF0dGVybkZpbGwgPSB0aGlzLmN1cnJlbnQucGF0dGVybkZpbGw7CgogICAgICB2YXIgbWFza0NhbnZhcyA9IENhY2hlZENhbnZhc2VzLmdldENhbnZhcygnbWFza0NhbnZhcycsIHdpZHRoLCBoZWlnaHQpOwogICAgICB2YXIgbWFza0N0eCA9IG1hc2tDYW52YXMuY29udGV4dDsKICAgICAgbWFza0N0eC5zYXZlKCk7CgogICAgICBwdXRCaW5hcnlJbWFnZU1hc2sobWFza0N0eCwgaW1nRGF0YSk7CgogICAgICBtYXNrQ3R4Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9ICdzb3VyY2UtaW4nOwoKICAgICAgbWFza0N0eC5maWxsU3R5bGUgPSBpc1BhdHRlcm5GaWxsID8KICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsQ29sb3IuZ2V0UGF0dGVybihtYXNrQ3R4LCB0aGlzKSA6IGZpbGxDb2xvcjsKICAgICAgbWFza0N0eC5maWxsUmVjdCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKCiAgICAgIG1hc2tDdHgucmVzdG9yZSgpOwoKICAgICAgdmFyIGN0eCA9IHRoaXMuY3R4OwogICAgICBmb3IgKHZhciBpID0gMCwgaWkgPSBwb3NpdGlvbnMubGVuZ3RoOyBpIDwgaWk7IGkgKz0gMikgewogICAgICAgIGN0eC5zYXZlKCk7CiAgICAgICAgY3R4LnRyYW5zZm9ybShzY2FsZVgsIDAsIDAsIHNjYWxlWSwgcG9zaXRpb25zW2ldLCBwb3NpdGlvbnNbaSArIDFdKTsKICAgICAgICBjdHguc2NhbGUoMSwgLTEpOwogICAgICAgIGN0eC5kcmF3SW1hZ2UobWFza0NhbnZhcy5jYW52YXMsIDAsIDAsIHdpZHRoLCBoZWlnaHQsCiAgICAgICAgICAwLCAtMSwgMSwgMSk7CiAgICAgICAgY3R4LnJlc3RvcmUoKTsKICAgICAgfQogICAgfSwKCiAgICBwYWludEltYWdlTWFza1hPYmplY3RHcm91cDoKICAgICAgZnVuY3Rpb24gQ2FudmFzR3JhcGhpY3NfcGFpbnRJbWFnZU1hc2tYT2JqZWN0R3JvdXAoaW1hZ2VzKSB7CiAgICAgIHZhciBjdHggPSB0aGlzLmN0eDsKCiAgICAgIHZhciBmaWxsQ29sb3IgPSB0aGlzLmN1cnJlbnQuZmlsbENvbG9yOwogICAgICB2YXIgaXNQYXR0ZXJuRmlsbCA9IHRoaXMuY3VycmVudC5wYXR0ZXJuRmlsbDsKICAgICAgZm9yICh2YXIgaSA9IDAsIGlpID0gaW1hZ2VzLmxlbmd0aDsgaSA8IGlpOyBpKyspIHsKICAgICAgICB2YXIgaW1hZ2UgPSBpbWFnZXNbaV07CiAgICAgICAgdmFyIHdpZHRoID0gaW1hZ2Uud2lkdGgsIGhlaWdodCA9IGltYWdlLmhlaWdodDsKCiAgICAgICAgdmFyIG1hc2tDYW52YXMgPSBDYWNoZWRDYW52YXNlcy5nZXRDYW52YXMoJ21hc2tDYW52YXMnLCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgICB2YXIgbWFza0N0eCA9IG1hc2tDYW52YXMuY29udGV4dDsKICAgICAgICBtYXNrQ3R4LnNhdmUoKTsKCiAgICAgICAgcHV0QmluYXJ5SW1hZ2VNYXNrKG1hc2tDdHgsIGltYWdlKTsKCiAgICAgICAgbWFza0N0eC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSAnc291cmNlLWluJzsKCiAgICAgICAgbWFza0N0eC5maWxsU3R5bGUgPSBpc1BhdHRlcm5GaWxsID8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvci5nZXRQYXR0ZXJuKG1hc2tDdHgsIHRoaXMpIDogZmlsbENvbG9yOwogICAgICAgIG1hc2tDdHguZmlsbFJlY3QoMCwgMCwgd2lkdGgsIGhlaWdodCk7CgogICAgICAgIG1hc2tDdHgucmVzdG9yZSgpOwoKICAgICAgICBjdHguc2F2ZSgpOwogICAgICAgIGN0eC50cmFuc2Zvcm0uYXBwbHkoY3R4LCBpbWFnZS50cmFuc2Zvcm0pOwogICAgICAgIGN0eC5zY2FsZSgxLCAtMSk7CiAgICAgICAgY3R4LmRyYXdJbWFnZShtYXNrQ2FudmFzLmNhbnZhcywgMCwgMCwgd2lkdGgsIGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgIDAsIC0xLCAxLCAxKTsKICAgICAgICBjdHgucmVzdG9yZSgpOwogICAgICB9CiAgICB9LAoKICAgIHBhaW50SW1hZ2VYT2JqZWN0OiBmdW5jdGlvbiBDYW52YXNHcmFwaGljc19wYWludEltYWdlWE9iamVjdChvYmpJZCkgewogICAgICB2YXIgaW1nRGF0YSA9IHRoaXMub2Jqcy5nZXQob2JqSWQpOwogICAgICBpZiAoIWltZ0RhdGEpIHsKICAgICAgICB3YXJuKCdEZXBlbmRlbnQgaW1hZ2UgaXNuXCd0IHJlYWR5IHlldCcpOwogICAgICAgIHJldHVybjsKICAgICAgfQoKICAgICAgdGhpcy5wYWludElubGluZUltYWdlWE9iamVjdChpbWdEYXRhKTsKICAgIH0sCgogICAgcGFpbnRJbWFnZVhPYmplY3RSZXBlYXQ6CiAgICAgIGZ1bmN0aW9uIENhbnZhc0dyYXBoaWNzX3BhaW50SW1hZ2VYT2JqZWN0UmVwZWF0KG9iaklkLCBzY2FsZVgsIHNjYWxlWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9ucykgewogICAgICB2YXIgaW1nRGF0YSA9IHRoaXMub2Jqcy5nZXQob2JqSWQpOwogICAgICBpZiAoIWltZ0RhdGEpIHsKICAgICAgICB3YXJuKCdEZXBlbmRlbnQgaW1hZ2UgaXNuXCd0IHJlYWR5IHlldCcpOwogICAgICAgIHJldHVybjsKICAgICAgfQoKICAgICAgdmFyIHdpZHRoID0gaW1nRGF0YS53aWR0aDsKICAgICAgdmFyIGhlaWdodCA9IGltZ0RhdGEuaGVpZ2h0OwogICAgICB2YXIgbWFwID0gW107CiAgICAgIGZvciAodmFyIGkgPSAwLCBpaSA9IHBvc2l0aW9ucy5sZW5ndGg7IGkgPCBpaTsgaSArPSAyKSB7CiAgICAgICAgbWFwLnB1c2goe3RyYW5zZm9ybTogW3NjYWxlWCwgMCwgMCwgc2NhbGVZLCBwb3NpdGlvbnNbaV0sCiAgICAgICAgICAgICAgICAgcG9zaXRpb25zW2kgKyAxXV0sIHg6IDAsIHk6IDAsIHc6IHdpZHRoLCBoOiBoZWlnaHR9KTsKICAgICAgfQogICAgICB0aGlzLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0R3JvdXAoaW1nRGF0YSwgbWFwKTsKICAgIH0sCgogICAgcGFpbnRJbmxpbmVJbWFnZVhPYmplY3Q6CiAgICAgIGZ1bmN0aW9uIENhbnZhc0dyYXBoaWNzX3BhaW50SW5saW5lSW1hZ2VYT2JqZWN0KGltZ0RhdGEpIHsKICAgICAgdmFyIHdpZHRoID0gaW1nRGF0YS53aWR0aDsKICAgICAgdmFyIGhlaWdodCA9IGltZ0RhdGEuaGVpZ2h0OwogICAgICB2YXIgY3R4ID0gdGhpcy5jdHg7CgogICAgICB0aGlzLnNhdmUoKTsKICAgICAgLy8gc2NhbGUgdGhlIGltYWdlIHRvIHRoZSB1bml0IHNxdWFyZQogICAgICBjdHguc2NhbGUoMSAvIHdpZHRoLCAtMSAvIGhlaWdodCk7CgogICAgICB2YXIgY3VycmVudFRyYW5zZm9ybSA9IGN0eC5tb3pDdXJyZW50VHJhbnNmb3JtSW52ZXJzZTsKICAgICAgdmFyIGEgPSBjdXJyZW50VHJhbnNmb3JtWzBdLCBiID0gY3VycmVudFRyYW5zZm9ybVsxXTsKICAgICAgdmFyIHdpZHRoU2NhbGUgPSBNYXRoLm1heChNYXRoLnNxcnQoYSAqIGEgKyBiICogYiksIDEpOwogICAgICB2YXIgYyA9IGN1cnJlbnRUcmFuc2Zvcm1bMl0sIGQgPSBjdXJyZW50VHJhbnNmb3JtWzNdOwogICAgICB2YXIgaGVpZ2h0U2NhbGUgPSBNYXRoLm1heChNYXRoLnNxcnQoYyAqIGMgKyBkICogZCksIDEpOwoKICAgICAgdmFyIGltZ1RvUGFpbnQsIHRtcENhbnZhczsKICAgICAgLy8gaW5zdGFuY2VvZiBIVE1MRWxlbWVudCBkb2VzIG5vdCB3b3JrIGluIGpzZG9tIG5vZGUuanMgbW9kdWxlCiAgICAgIGlmIChpbWdEYXRhIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgfHwgIWltZ0RhdGEuZGF0YSkgewogICAgICAgIGltZ1RvUGFpbnQgPSBpbWdEYXRhOwogICAgICB9IGVsc2UgewogICAgICAgIHRtcENhbnZhcyA9IENhY2hlZENhbnZhc2VzLmdldENhbnZhcygnaW5saW5lSW1hZ2UnLCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgICB2YXIgdG1wQ3R4ID0gdG1wQ2FudmFzLmNvbnRleHQ7CiAgICAgICAgcHV0QmluYXJ5SW1hZ2VEYXRhKHRtcEN0eCwgaW1nRGF0YSk7CiAgICAgICAgaW1nVG9QYWludCA9IHRtcENhbnZhcy5jYW52YXM7CiAgICAgIH0KCiAgICAgIHZhciBwYWludFdpZHRoID0gd2lkdGgsIHBhaW50SGVpZ2h0ID0gaGVpZ2h0OwogICAgICB2YXIgdG1wQ2FudmFzSWQgPSAncHJlc2NhbGUxJzsKICAgICAgLy8gVmVydGlhbCBvciBob3Jpem9udGFsIHNjYWxpbmcgc2hhbGwgbm90IGJlIG1vcmUgdGhhbiAyIHRvIG5vdCBsb29zZSB0aGUKICAgICAgLy8gcGl4ZWxzIGR1cmluZyBkcmF3SW1hZ2Ugb3BlcmF0aW9uLCBwYWludGluZyBvbiB0aGUgdGVtcG9yYXJ5IGNhbnZhcyhlcykKICAgICAgLy8gdGhhdCBhcmUgdHdpY2Ugc21hbGxlciBpbiBzaXplCiAgICAgIHdoaWxlICgod2lkdGhTY2FsZSA+IDIgJiYgcGFpbnRXaWR0aCA+IDEpIHx8CiAgICAgICAgICAgICAoaGVpZ2h0U2NhbGUgPiAyICYmIHBhaW50SGVpZ2h0ID4gMSkpIHsKICAgICAgICB2YXIgbmV3V2lkdGggPSBwYWludFdpZHRoLCBuZXdIZWlnaHQgPSBwYWludEhlaWdodDsKICAgICAgICBpZiAod2lkdGhTY2FsZSA+IDIgJiYgcGFpbnRXaWR0aCA+IDEpIHsKICAgICAgICAgIG5ld1dpZHRoID0gTWF0aC5jZWlsKHBhaW50V2lkdGggLyAyKTsKICAgICAgICAgIHdpZHRoU2NhbGUgLz0gcGFpbnRXaWR0aCAvIG5ld1dpZHRoOwogICAgICAgIH0KICAgICAgICBpZiAoaGVpZ2h0U2NhbGUgPiAyICYmIHBhaW50SGVpZ2h0ID4gMSkgewogICAgICAgICAgbmV3SGVpZ2h0ID0gTWF0aC5jZWlsKHBhaW50SGVpZ2h0IC8gMik7CiAgICAgICAgICBoZWlnaHRTY2FsZSAvPSBwYWludEhlaWdodCAvIG5ld0hlaWdodDsKICAgICAgICB9CiAgICAgICAgdG1wQ2FudmFzID0gQ2FjaGVkQ2FudmFzZXMuZ2V0Q2FudmFzKHRtcENhbnZhc0lkLCBuZXdXaWR0aCwgbmV3SGVpZ2h0KTsKICAgICAgICB0bXBDdHggPSB0bXBDYW52YXMuY29udGV4dDsKICAgICAgICB0bXBDdHguY2xlYXJSZWN0KDAsIDAsIG5ld1dpZHRoLCBuZXdIZWlnaHQpOwogICAgICAgIHRtcEN0eC5kcmF3SW1hZ2UoaW1nVG9QYWludCwgMCwgMCwgcGFpbnRXaWR0aCwgcGFpbnRIZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCBuZXdXaWR0aCwgbmV3SGVpZ2h0KTsKICAgICAgICBpbWdUb1BhaW50ID0gdG1wQ2FudmFzLmNhbnZhczsKICAgICAgICBwYWludFdpZHRoID0gbmV3V2lkdGg7CiAgICAgICAgcGFpbnRIZWlnaHQgPSBuZXdIZWlnaHQ7CiAgICAgICAgdG1wQ2FudmFzSWQgPSB0bXBDYW52YXNJZCA9PT0gJ3ByZXNjYWxlMScgPyAncHJlc2NhbGUyJyA6ICdwcmVzY2FsZTEnOwogICAgICB9CiAgICAgIGN0eC5kcmF3SW1hZ2UoaW1nVG9QYWludCwgMCwgMCwgcGFpbnRXaWR0aCwgcGFpbnRIZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgLWhlaWdodCwgd2lkdGgsIGhlaWdodCk7CgogICAgICBpZiAodGhpcy5pbWFnZUxheWVyKSB7CiAgICAgICAgdmFyIHBvc2l0aW9uID0gdGhpcy5nZXRDYW52YXNQb3NpdGlvbigwLCAtaGVpZ2h0KTsKICAgICAgICB0aGlzLmltYWdlTGF5ZXIuYXBwZW5kSW1hZ2UoewogICAgICAgICAgaW1nRGF0YTogaW1nRGF0YSwKICAgICAgICAgIGxlZnQ6IHBvc2l0aW9uWzBdLAogICAgICAgICAgdG9wOiBwb3NpdGlvblsxXSwKICAgICAgICAgIHdpZHRoOiB3aWR0aCAvIGN1cnJlbnRUcmFuc2Zvcm1bMF0sCiAgICAgICAgICBoZWlnaHQ6IGhlaWdodCAvIGN1cnJlbnRUcmFuc2Zvcm1bM10KICAgICAgICB9KTsKICAgICAgfQogICAgICB0aGlzLnJlc3RvcmUoKTsKICAgIH0sCgogICAgcGFpbnRJbmxpbmVJbWFnZVhPYmplY3RHcm91cDoKICAgICAgZnVuY3Rpb24gQ2FudmFzR3JhcGhpY3NfcGFpbnRJbmxpbmVJbWFnZVhPYmplY3RHcm91cChpbWdEYXRhLCBtYXApIHsKICAgICAgdmFyIGN0eCA9IHRoaXMuY3R4OwogICAgICB2YXIgdyA9IGltZ0RhdGEud2lkdGg7CiAgICAgIHZhciBoID0gaW1nRGF0YS5oZWlnaHQ7CgogICAgICB2YXIgdG1wQ2FudmFzID0gQ2FjaGVkQ2FudmFzZXMuZ2V0Q2FudmFzKCdpbmxpbmVJbWFnZScsIHcsIGgpOwogICAgICB2YXIgdG1wQ3R4ID0gdG1wQ2FudmFzLmNvbnRleHQ7CiAgICAgIHB1dEJpbmFyeUltYWdlRGF0YSh0bXBDdHgsIGltZ0RhdGEpOwoKICAgICAgZm9yICh2YXIgaSA9IDAsIGlpID0gbWFwLmxlbmd0aDsgaSA8IGlpOyBpKyspIHsKICAgICAgICB2YXIgZW50cnkgPSBtYXBbaV07CiAgICAgICAgY3R4LnNhdmUoKTsKICAgICAgICBjdHgudHJhbnNmb3JtLmFwcGx5KGN0eCwgZW50cnkudHJhbnNmb3JtKTsKICAgICAgICBjdHguc2NhbGUoMSwgLTEpOwogICAgICAgIGN0eC5kcmF3SW1hZ2UodG1wQ2FudmFzLmNhbnZhcywgZW50cnkueCwgZW50cnkueSwgZW50cnkudywgZW50cnkuaCwKICAgICAgICAgICAgICAgICAgICAgIDAsIC0xLCAxLCAxKTsKICAgICAgICBpZiAodGhpcy5pbWFnZUxheWVyKSB7CiAgICAgICAgICB2YXIgcG9zaXRpb24gPSB0aGlzLmdldENhbnZhc1Bvc2l0aW9uKGVudHJ5LngsIGVudHJ5LnkpOwogICAgICAgICAgdGhpcy5pbWFnZUxheWVyLmFwcGVuZEltYWdlKHsKICAgICAgICAgICAgaW1nRGF0YTogaW1nRGF0YSwKICAgICAgICAgICAgbGVmdDogcG9zaXRpb25bMF0sCiAgICAgICAgICAgIHRvcDogcG9zaXRpb25bMV0sCiAgICAgICAgICAgIHdpZHRoOiB3LAogICAgICAgICAgICBoZWlnaHQ6IGgKICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgICBjdHgucmVzdG9yZSgpOwogICAgICB9CiAgICB9LAoKICAgIHBhaW50U29saWRDb2xvckltYWdlTWFzazoKICAgICAgZnVuY3Rpb24gQ2FudmFzR3JhcGhpY3NfcGFpbnRTb2xpZENvbG9ySW1hZ2VNYXNrKCkgewogICAgICAgIHRoaXMuY3R4LmZpbGxSZWN0KDAsIDAsIDEsIDEpOwogICAgfSwKCiAgICAvLyBNYXJrZWQgY29udGVudAoKICAgIG1hcmtQb2ludDogZnVuY3Rpb24gQ2FudmFzR3JhcGhpY3NfbWFya1BvaW50KHRhZykgewogICAgICAvLyBUT0RPIE1hcmtlZCBjb250ZW50LgogICAgfSwKICAgIG1hcmtQb2ludFByb3BzOiBmdW5jdGlvbiBDYW52YXNHcmFwaGljc19tYXJrUG9pbnRQcm9wcyh0YWcsIHByb3BlcnRpZXMpIHsKICAgICAgLy8gVE9ETyBNYXJrZWQgY29udGVudC4KICAgIH0sCiAgICBiZWdpbk1hcmtlZENvbnRlbnQ6IGZ1bmN0aW9uIENhbnZhc0dyYXBoaWNzX2JlZ2luTWFya2VkQ29udGVudCh0YWcpIHsKICAgICAgLy8gVE9ETyBNYXJrZWQgY29udGVudC4KICAgIH0sCiAgICBiZWdpbk1hcmtlZENvbnRlbnRQcm9wczogZnVuY3Rpb24gQ2FudmFzR3JhcGhpY3NfYmVnaW5NYXJrZWRDb250ZW50UHJvcHMoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWcsIHByb3BlcnRpZXMpIHsKICAgICAgLy8gVE9ETyBNYXJrZWQgY29udGVudC4KICAgIH0sCiAgICBlbmRNYXJrZWRDb250ZW50OiBmdW5jdGlvbiBDYW52YXNHcmFwaGljc19lbmRNYXJrZWRDb250ZW50KCkgewogICAgICAvLyBUT0RPIE1hcmtlZCBjb250ZW50LgogICAgfSwKCiAgICAvLyBDb21wYXRpYmlsaXR5CgogICAgYmVnaW5Db21wYXQ6IGZ1bmN0aW9uIENhbnZhc0dyYXBoaWNzX2JlZ2luQ29tcGF0KCkgewogICAgICAvLyBUT0RPIGlnbm9yZSB1bmRlZmluZWQgb3BlcmF0b3JzIChzaG91bGQgd2UgZG8gdGhhdCBhbnl3YXk/KQogICAgfSwKICAgIGVuZENvbXBhdDogZnVuY3Rpb24gQ2FudmFzR3JhcGhpY3NfZW5kQ29tcGF0KCkgewogICAgICAvLyBUT0RPIHN0b3AgaWdub3JpbmcgdW5kZWZpbmVkIG9wZXJhdG9ycwogICAgfSwKCiAgICAvLyBIZWxwZXIgZnVuY3Rpb25zCgogICAgY29uc3VtZVBhdGg6IGZ1bmN0aW9uIENhbnZhc0dyYXBoaWNzX2NvbnN1bWVQYXRoKCkgewogICAgICB2YXIgY3R4ID0gdGhpcy5jdHg7CiAgICAgIGlmICh0aGlzLnBlbmRpbmdDbGlwKSB7CiAgICAgICAgaWYgKHRoaXMucGVuZGluZ0NsaXAgPT09IEVPX0NMSVApIHsKICAgICAgICAgIGlmIChjdHgubW96RmlsbFJ1bGUgIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICBjdHgubW96RmlsbFJ1bGUgPSAnZXZlbm9kZCc7CiAgICAgICAgICAgIGN0eC5jbGlwKCk7CiAgICAgICAgICAgIGN0eC5tb3pGaWxsUnVsZSA9ICdub256ZXJvJzsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgY3R4LmNsaXAoJ2V2ZW5vZGQnKTsKICAgICAgICAgICAgfSBjYXRjaCAoZXgpIHsKICAgICAgICAgICAgICAvLyBzaG91bGRuJ3QgcmVhbGx5IGhhcHBlbiwgYnV0IGJyb3dzZXJzIG1pZ2h0IHRoaW5rIGRpZmZlcmVudGx5CiAgICAgICAgICAgICAgY3R4LmNsaXAoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBjdHguY2xpcCgpOwogICAgICAgIH0KICAgICAgICB0aGlzLnBlbmRpbmdDbGlwID0gbnVsbDsKICAgICAgfQogICAgICBjdHguYmVnaW5QYXRoKCk7CiAgICB9LAogICAgZ2V0U2luZ2xlUGl4ZWxXaWR0aDogZnVuY3Rpb24gQ2FudmFzR3JhcGhpY3NfZ2V0U2luZ2xlUGl4ZWxXaWR0aChzY2FsZSkgewogICAgICBpZiAodGhpcy5jYWNoZWRHZXRTaW5nbGVQaXhlbFdpZHRoID09PSBudWxsKSB7CiAgICAgICAgdmFyIGludmVyc2UgPSB0aGlzLmN0eC5tb3pDdXJyZW50VHJhbnNmb3JtSW52ZXJzZTsKICAgICAgICAvLyBtYXggb2YgdGhlIGN1cnJlbnQgaG9yaXpvbnRhbCBhbmQgdmVydGljYWwgc2NhbGUKICAgICAgICB0aGlzLmNhY2hlZEdldFNpbmdsZVBpeGVsV2lkdGggPSBNYXRoLnNxcnQoTWF0aC5tYXgoCiAgICAgICAgICAoaW52ZXJzZVswXSAqIGludmVyc2VbMF0gKyBpbnZlcnNlWzFdICogaW52ZXJzZVsxXSksCiAgICAgICAgICAoaW52ZXJzZVsyXSAqIGludmVyc2VbMl0gKyBpbnZlcnNlWzNdICogaW52ZXJzZVszXSkpKTsKICAgICAgfQogICAgICByZXR1cm4gdGhpcy5jYWNoZWRHZXRTaW5nbGVQaXhlbFdpZHRoOwogICAgfSwKICAgIGdldENhbnZhc1Bvc2l0aW9uOiBmdW5jdGlvbiBDYW52YXNHcmFwaGljc19nZXRDYW52YXNQb3NpdGlvbih4LCB5KSB7CiAgICAgICAgdmFyIHRyYW5zZm9ybSA9IHRoaXMuY3R4Lm1vekN1cnJlbnRUcmFuc2Zvcm07CiAgICAgICAgcmV0dXJuIFsKICAgICAgICAgIHRyYW5zZm9ybVswXSAqIHggKyB0cmFuc2Zvcm1bMl0gKiB5ICsgdHJhbnNmb3JtWzRdLAogICAgICAgICAgdHJhbnNmb3JtWzFdICogeCArIHRyYW5zZm9ybVszXSAqIHkgKyB0cmFuc2Zvcm1bNV0KICAgICAgICBdOwogICAgfQogIH07CgogIGZvciAodmFyIG9wIGluIE9QUykgewogICAgQ2FudmFzR3JhcGhpY3MucHJvdG90eXBlW09QU1tvcF1dID0gQ2FudmFzR3JhcGhpY3MucHJvdG90eXBlW29wXTsKICB9CgogIHJldHVybiBDYW52YXNHcmFwaGljczsKfSkoKTsKCgp2YXIgV2ViR0xVdGlscyA9IChmdW5jdGlvbiBXZWJHTFV0aWxzQ2xvc3VyZSgpIHsKICBmdW5jdGlvbiBsb2FkU2hhZGVyKGdsLCBjb2RlLCBzaGFkZXJUeXBlKSB7CiAgICB2YXIgc2hhZGVyID0gZ2wuY3JlYXRlU2hhZGVyKHNoYWRlclR5cGUpOwogICAgZ2wuc2hhZGVyU291cmNlKHNoYWRlciwgY29kZSk7CiAgICBnbC5jb21waWxlU2hhZGVyKHNoYWRlcik7CiAgICB2YXIgY29tcGlsZWQgPSBnbC5nZXRTaGFkZXJQYXJhbWV0ZXIoc2hhZGVyLCBnbC5DT01QSUxFX1NUQVRVUyk7CiAgICBpZiAoIWNvbXBpbGVkKSB7CiAgICAgIHZhciBlcnJvck1zZyA9IGdsLmdldFNoYWRlckluZm9Mb2coc2hhZGVyKTsKICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvciBkdXJpbmcgc2hhZGVyIGNvbXBpbGF0aW9uOiAnICsgZXJyb3JNc2cpOwogICAgfQogICAgcmV0dXJuIHNoYWRlcjsKICB9CiAgZnVuY3Rpb24gY3JlYXRlVmVydGV4U2hhZGVyKGdsLCBjb2RlKSB7CiAgICByZXR1cm4gbG9hZFNoYWRlcihnbCwgY29kZSwgZ2wuVkVSVEVYX1NIQURFUik7CiAgfQogIGZ1bmN0aW9uIGNyZWF0ZUZyYWdtZW50U2hhZGVyKGdsLCBjb2RlKSB7CiAgICByZXR1cm4gbG9hZFNoYWRlcihnbCwgY29kZSwgZ2wuRlJBR01FTlRfU0hBREVSKTsKICB9CiAgZnVuY3Rpb24gY3JlYXRlUHJvZ3JhbShnbCwgc2hhZGVycykgewogICAgdmFyIHByb2dyYW0gPSBnbC5jcmVhdGVQcm9ncmFtKCk7CiAgICBmb3IgKHZhciBpID0gMCwgaWkgPSBzaGFkZXJzLmxlbmd0aDsgaSA8IGlpOyArK2kpIHsKICAgICAgZ2wuYXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlcnNbaV0pOwogICAgfQogICAgZ2wubGlua1Byb2dyYW0ocHJvZ3JhbSk7CiAgICB2YXIgbGlua2VkID0gZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihwcm9ncmFtLCBnbC5MSU5LX1NUQVRVUyk7CiAgICBpZiAoIWxpbmtlZCkgewogICAgICB2YXIgZXJyb3JNc2cgPSBnbC5nZXRQcm9ncmFtSW5mb0xvZyhwcm9ncmFtKTsKICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvciBkdXJpbmcgcHJvZ3JhbSBsaW5raW5nOiAnICsgZXJyb3JNc2cpOwogICAgfQogICAgcmV0dXJuIHByb2dyYW07CiAgfQogIGZ1bmN0aW9uIGNyZWF0ZVRleHR1cmUoZ2wsIGltYWdlLCB0ZXh0dXJlSWQpIHsKICAgIGdsLmFjdGl2ZVRleHR1cmUodGV4dHVyZUlkKTsKICAgIHZhciB0ZXh0dXJlID0gZ2wuY3JlYXRlVGV4dHVyZSgpOwogICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZSk7CgogICAgLy8gU2V0IHRoZSBwYXJhbWV0ZXJzIHNvIHdlIGNhbiByZW5kZXIgYW55IHNpemUgaW1hZ2UuCiAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9UT19FREdFKTsKICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsLkNMQU1QX1RPX0VER0UpOwogICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLk5FQVJFU1QpOwogICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLk5FQVJFU1QpOwoKICAgIC8vIFVwbG9hZCB0aGUgaW1hZ2UgaW50byB0aGUgdGV4dHVyZS4KICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgaW1hZ2UpOwogICAgcmV0dXJuIHRleHR1cmU7CiAgfQoKICB2YXIgY3VycmVudEdMLCBjdXJyZW50Q2FudmFzOwogIGZ1bmN0aW9uIGdlbmVyYXRlR0woKSB7CiAgICBpZiAoY3VycmVudEdMKSB7CiAgICAgIHJldHVybjsKICAgIH0KICAgIGN1cnJlbnRDYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsKICAgIGN1cnJlbnRHTCA9IGN1cnJlbnRDYW52YXMuZ2V0Q29udGV4dCgnd2ViZ2wnLAogICAgICB7IHByZW11bHRpcGxpZWRhbHBoYTogZmFsc2UgfSk7CiAgfQoKICB2YXIgc21hc2tWZXJ0ZXhTaGFkZXJDb2RlID0gJ1wKICBhdHRyaWJ1dGUgdmVjMiBhX3Bvc2l0aW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICBhdHRyaWJ1dGUgdmVjMiBhX3RleENvb3JkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB1bmlmb3JtIHZlYzIgdV9yZXNvbHV0aW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB2b2lkIG1haW4oKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHZlYzIgY2xpcFNwYWNlID0gKGFfcG9zaXRpb24gLyB1X3Jlc29sdXRpb24pICogMi4wIC0gMS4wOyAgIFwKICAgIGdsX1Bvc2l0aW9uID0gdmVjNChjbGlwU3BhY2UgKiB2ZWMyKDEsIC0xKSwgMCwgMSk7ICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIHZfdGV4Q29vcmQgPSBhX3RleENvb3JkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc7CgogIHZhciBzbWFza0ZyYWdtZW50U2hhZGVyQ29kZSA9ICdcCiAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgdW5pZm9ybSB2ZWM0IHVfYmFja2Ryb3A7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgdW5pZm9ybSBpbnQgdV9zdWJ0eXBlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgdW5pZm9ybSBzYW1wbGVyMkQgdV9pbWFnZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgdW5pZm9ybSBzYW1wbGVyMkQgdV9tYXNrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgdmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgdm9pZCBtYWluKCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB2ZWM0IGltYWdlQ29sb3IgPSB0ZXh0dXJlMkQodV9pbWFnZSwgdl90ZXhDb29yZCk7ICAgICAgICAgICBcCiAgICB2ZWM0IG1hc2tDb2xvciA9IHRleHR1cmUyRCh1X21hc2ssIHZfdGV4Q29vcmQpOyAgICAgICAgICAgICBcCiAgICBpZiAodV9iYWNrZHJvcC5hID4gMC4wKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIG1hc2tDb2xvci5yZ2IgPSBtYXNrQ29sb3IucmdiICogbWFza0NvbG9yLmEgKyAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICB1X2JhY2tkcm9wLnJnYiAqICgxLjAgLSBtYXNrQ29sb3IuYSk7ICAgICBcCiAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBmbG9hdCBsdW07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBpZiAodV9zdWJ0eXBlID09IDApIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGx1bSA9IG1hc2tDb2xvci5hOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGx1bSA9IG1hc2tDb2xvci5yICogMC4zICsgbWFza0NvbG9yLmcgKiAwLjU5ICsgICAgICAgICAgICBcCiAgICAgICAgICAgIG1hc2tDb2xvci5iICogMC4xMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBpbWFnZUNvbG9yLmEgKj0gbHVtOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBpbWFnZUNvbG9yLnJnYiAqPSBpbWFnZUNvbG9yLmE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBnbF9GcmFnQ29sb3IgPSBpbWFnZUNvbG9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnOwoKICB2YXIgc21hc2tDYWNoZSA9IG51bGw7CgogIGZ1bmN0aW9uIGluaXRTbWFza0dMKCkgewogICAgdmFyIGNhbnZhcywgZ2w7CgogICAgZ2VuZXJhdGVHTCgpOwogICAgY2FudmFzID0gY3VycmVudENhbnZhczsKICAgIGN1cnJlbnRDYW52YXMgPSBudWxsOwogICAgZ2wgPSBjdXJyZW50R0w7CiAgICBjdXJyZW50R0wgPSBudWxsOwoKICAgIC8vIHNldHVwIGEgR0xTTCBwcm9ncmFtCiAgICB2YXIgdmVydGV4U2hhZGVyID0gY3JlYXRlVmVydGV4U2hhZGVyKGdsLCBzbWFza1ZlcnRleFNoYWRlckNvZGUpOwogICAgdmFyIGZyYWdtZW50U2hhZGVyID0gY3JlYXRlRnJhZ21lbnRTaGFkZXIoZ2wsIHNtYXNrRnJhZ21lbnRTaGFkZXJDb2RlKTsKICAgIHZhciBwcm9ncmFtID0gY3JlYXRlUHJvZ3JhbShnbCwgW3ZlcnRleFNoYWRlciwgZnJhZ21lbnRTaGFkZXJdKTsKICAgIGdsLnVzZVByb2dyYW0ocHJvZ3JhbSk7CgogICAgdmFyIGNhY2hlID0ge307CiAgICBjYWNoZS5nbCA9IGdsOwogICAgY2FjaGUuY2FudmFzID0gY2FudmFzOwogICAgY2FjaGUucmVzb2x1dGlvbkxvY2F0aW9uID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICd1X3Jlc29sdXRpb24nKTsKICAgIGNhY2hlLnBvc2l0aW9uTG9jYXRpb24gPSBnbC5nZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCAnYV9wb3NpdGlvbicpOwogICAgY2FjaGUuYmFja2Ryb3BMb2NhdGlvbiA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAndV9iYWNrZHJvcCcpOwogICAgY2FjaGUuc3VidHlwZUxvY2F0aW9uID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICd1X3N1YnR5cGUnKTsKCiAgICB2YXIgdGV4Q29vcmRMb2NhdGlvbiA9IGdsLmdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sICdhX3RleENvb3JkJyk7CiAgICB2YXIgdGV4TGF5ZXJMb2NhdGlvbiA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAndV9pbWFnZScpOwogICAgdmFyIHRleE1hc2tMb2NhdGlvbiA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAndV9tYXNrJyk7CgogICAgLy8gcHJvdmlkZSB0ZXh0dXJlIGNvb3JkaW5hdGVzIGZvciB0aGUgcmVjdGFuZ2xlLgogICAgdmFyIHRleENvb3JkQnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CiAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgdGV4Q29vcmRCdWZmZXIpOwogICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkoWwogICAgICAwLjAsICAwLjAsCiAgICAgIDEuMCwgIDAuMCwKICAgICAgMC4wLCAgMS4wLAogICAgICAwLjAsICAxLjAsCiAgICAgIDEuMCwgIDAuMCwKICAgICAgMS4wLCAgMS4wXSksIGdsLlNUQVRJQ19EUkFXKTsKICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHRleENvb3JkTG9jYXRpb24pOwogICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcih0ZXhDb29yZExvY2F0aW9uLCAyLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOwoKICAgIGdsLnVuaWZvcm0xaSh0ZXhMYXllckxvY2F0aW9uLCAwKTsKICAgIGdsLnVuaWZvcm0xaSh0ZXhNYXNrTG9jYXRpb24sIDEpOwoKICAgIHNtYXNrQ2FjaGUgPSBjYWNoZTsKICB9CgogIGZ1bmN0aW9uIGNvbXBvc2VTTWFzayhsYXllciwgbWFzaywgcHJvcGVydGllcykgewogICAgdmFyIHdpZHRoID0gbGF5ZXIud2lkdGgsIGhlaWdodCA9IGxheWVyLmhlaWdodDsKCiAgICBpZiAoIXNtYXNrQ2FjaGUpIHsKICAgICAgaW5pdFNtYXNrR0woKTsKICAgIH0KICAgIHZhciBjYWNoZSA9IHNtYXNrQ2FjaGUsY2FudmFzID0gY2FjaGUuY2FudmFzLCBnbCA9IGNhY2hlLmdsOwogICAgY2FudmFzLndpZHRoID0gd2lkdGg7CiAgICBjYW52YXMuaGVpZ2h0ID0gaGVpZ2h0OwogICAgZ2wudmlld3BvcnQoMCwgMCwgZ2wuZHJhd2luZ0J1ZmZlcldpZHRoLCBnbC5kcmF3aW5nQnVmZmVySGVpZ2h0KTsKICAgIGdsLnVuaWZvcm0yZihjYWNoZS5yZXNvbHV0aW9uTG9jYXRpb24sIHdpZHRoLCBoZWlnaHQpOwoKICAgIGlmIChwcm9wZXJ0aWVzLmJhY2tkcm9wKSB7CiAgICAgIGdsLnVuaWZvcm00ZihjYWNoZS5yZXNvbHV0aW9uTG9jYXRpb24sIHByb3BlcnRpZXMuYmFja2Ryb3BbMF0sCiAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzLmJhY2tkcm9wWzFdLCBwcm9wZXJ0aWVzLmJhY2tkcm9wWzJdLCAxKTsKICAgIH0gZWxzZSB7CiAgICAgIGdsLnVuaWZvcm00ZihjYWNoZS5yZXNvbHV0aW9uTG9jYXRpb24sIDAsIDAsIDAsIDApOwogICAgfQogICAgZ2wudW5pZm9ybTFpKGNhY2hlLnN1YnR5cGVMb2NhdGlvbiwKICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzLnN1YnR5cGUgPT09ICdMdW1pbm9zaXR5JyA/IDEgOiAwKTsKCiAgICAvLyBDcmVhdGUgYSB0ZXh0dXJlcwogICAgdmFyIHRleHR1cmUgPSBjcmVhdGVUZXh0dXJlKGdsLCBsYXllciwgZ2wuVEVYVFVSRTApOwogICAgdmFyIG1hc2tUZXh0dXJlID0gY3JlYXRlVGV4dHVyZShnbCwgbWFzaywgZ2wuVEVYVFVSRTEpOwoKCiAgICAvLyBDcmVhdGUgYSBidWZmZXIgYW5kIHB1dCBhIHNpbmdsZSBjbGlwc3BhY2UgcmVjdGFuZ2xlIGluCiAgICAvLyBpdCAoMiB0cmlhbmdsZXMpCiAgICB2YXIgYnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CiAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgYnVmZmVyKTsKICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBuZXcgRmxvYXQzMkFycmF5KFsKICAgICAgMCwgMCwKICAgICAgd2lkdGgsIDAsCiAgICAgIDAsIGhlaWdodCwKICAgICAgMCwgaGVpZ2h0LAogICAgICB3aWR0aCwgMCwKICAgICAgd2lkdGgsIGhlaWdodF0pLCBnbC5TVEFUSUNfRFJBVyk7CiAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShjYWNoZS5wb3NpdGlvbkxvY2F0aW9uKTsKICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoY2FjaGUucG9zaXRpb25Mb2NhdGlvbiwgMiwgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKCiAgICAvLyBkcmF3CiAgICBnbC5jbGVhckNvbG9yKDAsIDAsIDAsIDApOwogICAgZ2wuZW5hYmxlKGdsLkJMRU5EKTsKICAgIGdsLmJsZW5kRnVuYyhnbC5PTkUsIGdsLk9ORV9NSU5VU19TUkNfQUxQSEEpOwogICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CgogICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIDYpOwoKICAgIGdsLmZsdXNoKCk7CgogICAgZ2wuZGVsZXRlVGV4dHVyZSh0ZXh0dXJlKTsKICAgIGdsLmRlbGV0ZVRleHR1cmUobWFza1RleHR1cmUpOwogICAgZ2wuZGVsZXRlQnVmZmVyKGJ1ZmZlcik7CgogICAgcmV0dXJuIGNhbnZhczsKICB9CgogIHZhciBmaWd1cmVzVmVydGV4U2hhZGVyQ29kZSA9ICdcCiAgYXR0cmlidXRlIHZlYzIgYV9wb3NpdGlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgYXR0cmlidXRlIHZlYzMgYV9jb2xvcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgdW5pZm9ybSB2ZWMyIHVfcmVzb2x1dGlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgdW5pZm9ybSB2ZWMyIHVfc2NhbGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgdW5pZm9ybSB2ZWMyIHVfb2Zmc2V0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgdmFyeWluZyB2ZWM0IHZfY29sb3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgdm9pZCBtYWluKCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB2ZWMyIHBvc2l0aW9uID0gKGFfcG9zaXRpb24gKyB1X29mZnNldCkgKiB1X3NjYWxlOyAgICAgICAgICBcCiAgICB2ZWMyIGNsaXBTcGFjZSA9IChwb3NpdGlvbiAvIHVfcmVzb2x1dGlvbikgKiAyLjAgLSAxLjA7ICAgICBcCiAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoY2xpcFNwYWNlICogdmVjMigxLCAtMSksIDAsIDEpOyAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB2X2NvbG9yID0gdmVjNChhX2NvbG9yIC8gMjU1LjAsIDEuMCk7ICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnOwoKICB2YXIgZmlndXJlc0ZyYWdtZW50U2hhZGVyQ29kZSA9ICdcCiAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgdmFyeWluZyB2ZWM0IHZfY29sb3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgdm9pZCBtYWluKCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBnbF9GcmFnQ29sb3IgPSB2X2NvbG9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnOwoKICB2YXIgZmlndXJlc0NhY2hlID0gbnVsbDsKCiAgZnVuY3Rpb24gaW5pdEZpZ3VyZXNHTCgpIHsKICAgIHZhciBjYW52YXMsIGdsOwoKICAgIGdlbmVyYXRlR0woKTsKICAgIGNhbnZhcyA9IGN1cnJlbnRDYW52YXM7CiAgICBjdXJyZW50Q2FudmFzID0gbnVsbDsKICAgIGdsID0gY3VycmVudEdMOwogICAgY3VycmVudEdMID0gbnVsbDsKCiAgICAvLyBzZXR1cCBhIEdMU0wgcHJvZ3JhbQogICAgdmFyIHZlcnRleFNoYWRlciA9IGNyZWF0ZVZlcnRleFNoYWRlcihnbCwgZmlndXJlc1ZlcnRleFNoYWRlckNvZGUpOwogICAgdmFyIGZyYWdtZW50U2hhZGVyID0gY3JlYXRlRnJhZ21lbnRTaGFkZXIoZ2wsIGZpZ3VyZXNGcmFnbWVudFNoYWRlckNvZGUpOwogICAgdmFyIHByb2dyYW0gPSBjcmVhdGVQcm9ncmFtKGdsLCBbdmVydGV4U2hhZGVyLCBmcmFnbWVudFNoYWRlcl0pOwogICAgZ2wudXNlUHJvZ3JhbShwcm9ncmFtKTsKCiAgICB2YXIgY2FjaGUgPSB7fTsKICAgIGNhY2hlLmdsID0gZ2w7CiAgICBjYWNoZS5jYW52YXMgPSBjYW52YXM7CiAgICBjYWNoZS5yZXNvbHV0aW9uTG9jYXRpb24gPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgJ3VfcmVzb2x1dGlvbicpOwogICAgY2FjaGUuc2NhbGVMb2NhdGlvbiA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAndV9zY2FsZScpOwogICAgY2FjaGUub2Zmc2V0TG9jYXRpb24gPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgJ3Vfb2Zmc2V0Jyk7CiAgICBjYWNoZS5wb3NpdGlvbkxvY2F0aW9uID0gZ2wuZ2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgJ2FfcG9zaXRpb24nKTsKICAgIGNhY2hlLmNvbG9yTG9jYXRpb24gPSBnbC5nZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCAnYV9jb2xvcicpOwoKICAgIGZpZ3VyZXNDYWNoZSA9IGNhY2hlOwogIH0KCiAgZnVuY3Rpb24gZHJhd0ZpZ3VyZXMod2lkdGgsIGhlaWdodCwgYmFja2dyb3VuZENvbG9yLCBmaWd1cmVzLCBjb250ZXh0KSB7CiAgICBpZiAoIWZpZ3VyZXNDYWNoZSkgewogICAgICBpbml0RmlndXJlc0dMKCk7CiAgICB9CiAgICB2YXIgY2FjaGUgPSBmaWd1cmVzQ2FjaGUsIGNhbnZhcyA9IGNhY2hlLmNhbnZhcywgZ2wgPSBjYWNoZS5nbDsKCiAgICBjYW52YXMud2lkdGggPSB3aWR0aDsKICAgIGNhbnZhcy5oZWlnaHQgPSBoZWlnaHQ7CiAgICBnbC52aWV3cG9ydCgwLCAwLCBnbC5kcmF3aW5nQnVmZmVyV2lkdGgsIGdsLmRyYXdpbmdCdWZmZXJIZWlnaHQpOwogICAgZ2wudW5pZm9ybTJmKGNhY2hlLnJlc29sdXRpb25Mb2NhdGlvbiwgd2lkdGgsIGhlaWdodCk7CgogICAgLy8gY291bnQgdHJpYW5nbGUgcG9pbnRzCiAgICB2YXIgY291bnQgPSAwOwogICAgdmFyIGksIGlpLCByb3dzOwogICAgZm9yIChpID0gMCwgaWkgPSBmaWd1cmVzLmxlbmd0aDsgaSA8IGlpOyBpKyspIHsKICAgICAgc3dpdGNoIChmaWd1cmVzW2ldLnR5cGUpIHsKICAgICAgICBjYXNlICdsYXR0aWNlJzoKICAgICAgICAgIHJvd3MgPSAoZmlndXJlc1tpXS5jb29yZHMubGVuZ3RoIC8gZmlndXJlc1tpXS52ZXJ0aWNlc1BlclJvdykgfCAwOwogICAgICAgICAgY291bnQgKz0gKHJvd3MgLSAxKSAqIChmaWd1cmVzW2ldLnZlcnRpY2VzUGVyUm93IC0gMSkgKiA2OwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAndHJpYW5nbGVzJzoKICAgICAgICAgIGNvdW50ICs9IGZpZ3VyZXNbaV0uY29vcmRzLmxlbmd0aDsKICAgICAgICAgIGJyZWFrOwogICAgICB9CiAgICB9CiAgICAvLyB0cmFuc2ZlciBkYXRhCiAgICB2YXIgY29vcmRzID0gbmV3IEZsb2F0MzJBcnJheShjb3VudCAqIDIpOwogICAgdmFyIGNvbG9ycyA9IG5ldyBVaW50OEFycmF5KGNvdW50ICogMyk7CiAgICB2YXIgY29vcmRzTWFwID0gY29udGV4dC5jb29yZHMsIGNvbG9yc01hcCA9IGNvbnRleHQuY29sb3JzOwogICAgdmFyIHBJbmRleCA9IDAsIGNJbmRleCA9IDA7CiAgICBmb3IgKGkgPSAwLCBpaSA9IGZpZ3VyZXMubGVuZ3RoOyBpIDwgaWk7IGkrKykgewogICAgICB2YXIgZmlndXJlID0gZmlndXJlc1tpXSwgcHMgPSBmaWd1cmUuY29vcmRzLCBjcyA9IGZpZ3VyZS5jb2xvcnM7CiAgICAgIHN3aXRjaCAoZmlndXJlLnR5cGUpIHsKICAgICAgICBjYXNlICdsYXR0aWNlJzoKICAgICAgICAgIHZhciBjb2xzID0gZmlndXJlLnZlcnRpY2VzUGVyUm93OwogICAgICAgICAgcm93cyA9IChwcy5sZW5ndGggLyBjb2xzKSB8IDA7CiAgICAgICAgICBmb3IgKHZhciByb3cgPSAxOyByb3cgPCByb3dzOyByb3crKykgewogICAgICAgICAgICB2YXIgb2Zmc2V0ID0gcm93ICogY29scyArIDE7CiAgICAgICAgICAgIGZvciAodmFyIGNvbCA9IDE7IGNvbCA8IGNvbHM7IGNvbCsrLCBvZmZzZXQrKykgewogICAgICAgICAgICAgIGNvb3Jkc1twSW5kZXhdID0gY29vcmRzTWFwW3BzW29mZnNldCAtIGNvbHMgLSAxXV07CiAgICAgICAgICAgICAgY29vcmRzW3BJbmRleCArIDFdID0gY29vcmRzTWFwW3BzW29mZnNldCAtIGNvbHMgLSAxXSArIDFdOwogICAgICAgICAgICAgIGNvb3Jkc1twSW5kZXggKyAyXSA9IGNvb3Jkc01hcFtwc1tvZmZzZXQgLSBjb2xzXV07CiAgICAgICAgICAgICAgY29vcmRzW3BJbmRleCArIDNdID0gY29vcmRzTWFwW3BzW29mZnNldCAtIGNvbHNdICsgMV07CiAgICAgICAgICAgICAgY29vcmRzW3BJbmRleCArIDRdID0gY29vcmRzTWFwW3BzW29mZnNldCAtIDFdXTsKICAgICAgICAgICAgICBjb29yZHNbcEluZGV4ICsgNV0gPSBjb29yZHNNYXBbcHNbb2Zmc2V0IC0gMV0gKyAxXTsKICAgICAgICAgICAgICBjb2xvcnNbY0luZGV4XSA9IGNvbG9yc01hcFtjc1tvZmZzZXQgLSBjb2xzIC0gMV1dOwogICAgICAgICAgICAgIGNvbG9yc1tjSW5kZXggKyAxXSA9IGNvbG9yc01hcFtjc1tvZmZzZXQgLSBjb2xzIC0gMV0gKyAxXTsKICAgICAgICAgICAgICBjb2xvcnNbY0luZGV4ICsgMl0gPSBjb2xvcnNNYXBbY3Nbb2Zmc2V0IC0gY29scyAtIDFdICsgMl07CiAgICAgICAgICAgICAgY29sb3JzW2NJbmRleCArIDNdID0gY29sb3JzTWFwW2NzW29mZnNldCAtIGNvbHNdXTsKICAgICAgICAgICAgICBjb2xvcnNbY0luZGV4ICsgNF0gPSBjb2xvcnNNYXBbY3Nbb2Zmc2V0IC0gY29sc10gKyAxXTsKICAgICAgICAgICAgICBjb2xvcnNbY0luZGV4ICsgNV0gPSBjb2xvcnNNYXBbY3Nbb2Zmc2V0IC0gY29sc10gKyAyXTsKICAgICAgICAgICAgICBjb2xvcnNbY0luZGV4ICsgNl0gPSBjb2xvcnNNYXBbY3Nbb2Zmc2V0IC0gMV1dOwogICAgICAgICAgICAgIGNvbG9yc1tjSW5kZXggKyA3XSA9IGNvbG9yc01hcFtjc1tvZmZzZXQgLSAxXSArIDFdOwogICAgICAgICAgICAgIGNvbG9yc1tjSW5kZXggKyA4XSA9IGNvbG9yc01hcFtjc1tvZmZzZXQgLSAxXSArIDJdOwoKICAgICAgICAgICAgICBjb29yZHNbcEluZGV4ICsgNl0gPSBjb29yZHNbcEluZGV4ICsgMl07CiAgICAgICAgICAgICAgY29vcmRzW3BJbmRleCArIDddID0gY29vcmRzW3BJbmRleCArIDNdOwogICAgICAgICAgICAgIGNvb3Jkc1twSW5kZXggKyA4XSA9IGNvb3Jkc1twSW5kZXggKyA0XTsKICAgICAgICAgICAgICBjb29yZHNbcEluZGV4ICsgOV0gPSBjb29yZHNbcEluZGV4ICsgNV07CiAgICAgICAgICAgICAgY29vcmRzW3BJbmRleCArIDEwXSA9IGNvb3Jkc01hcFtwc1tvZmZzZXRdXTsKICAgICAgICAgICAgICBjb29yZHNbcEluZGV4ICsgMTFdID0gY29vcmRzTWFwW3BzW29mZnNldF0gKyAxXTsKICAgICAgICAgICAgICBjb2xvcnNbY0luZGV4ICsgOV0gPSBjb2xvcnNbY0luZGV4ICsgM107CiAgICAgICAgICAgICAgY29sb3JzW2NJbmRleCArIDEwXSA9IGNvbG9yc1tjSW5kZXggKyA0XTsKICAgICAgICAgICAgICBjb2xvcnNbY0luZGV4ICsgMTFdID0gY29sb3JzW2NJbmRleCArIDVdOwogICAgICAgICAgICAgIGNvbG9yc1tjSW5kZXggKyAxMl0gPSBjb2xvcnNbY0luZGV4ICsgNl07CiAgICAgICAgICAgICAgY29sb3JzW2NJbmRleCArIDEzXSA9IGNvbG9yc1tjSW5kZXggKyA3XTsKICAgICAgICAgICAgICBjb2xvcnNbY0luZGV4ICsgMTRdID0gY29sb3JzW2NJbmRleCArIDhdOwogICAgICAgICAgICAgIGNvbG9yc1tjSW5kZXggKyAxNV0gPSBjb2xvcnNNYXBbY3Nbb2Zmc2V0XV07CiAgICAgICAgICAgICAgY29sb3JzW2NJbmRleCArIDE2XSA9IGNvbG9yc01hcFtjc1tvZmZzZXRdICsgMV07CiAgICAgICAgICAgICAgY29sb3JzW2NJbmRleCArIDE3XSA9IGNvbG9yc01hcFtjc1tvZmZzZXRdICsgMl07CiAgICAgICAgICAgICAgcEluZGV4ICs9IDEyOwogICAgICAgICAgICAgIGNJbmRleCArPSAxODsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAndHJpYW5nbGVzJzoKICAgICAgICAgIGZvciAodmFyIGogPSAwLCBqaiA9IHBzLmxlbmd0aDsgaiA8IGpqOyBqKyspIHsKICAgICAgICAgICAgY29vcmRzW3BJbmRleF0gPSBjb29yZHNNYXBbcHNbal1dOwogICAgICAgICAgICBjb29yZHNbcEluZGV4ICsgMV0gPSBjb29yZHNNYXBbcHNbal0gKyAxXTsKICAgICAgICAgICAgY29sb3JzW2NJbmRleF0gPSBjb2xvcnNNYXBbY3NbaV1dOwogICAgICAgICAgICBjb2xvcnNbY0luZGV4ICsgMV0gPSBjb2xvcnNNYXBbY3Nbal0gKyAxXTsKICAgICAgICAgICAgY29sb3JzW2NJbmRleCArIDJdID0gY29sb3JzTWFwW2NzW2pdICsgMl07CiAgICAgICAgICAgIHBJbmRleCArPSAyOwogICAgICAgICAgICBjSW5kZXggKz0gMzsKICAgICAgICAgIH0KICAgICAgICAgIGJyZWFrOwogICAgICB9CiAgICB9CgogICAgLy8gZHJhdwogICAgaWYgKGJhY2tncm91bmRDb2xvcikgewogICAgICBnbC5jbGVhckNvbG9yKGJhY2tncm91bmRDb2xvclswXSAvIDI1NSwgYmFja2dyb3VuZENvbG9yWzFdIC8gMjU1LAogICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvclsyXSAvIDI1NSwgMS4wKTsKICAgIH0gZWxzZSB7CiAgICAgIGdsLmNsZWFyQ29sb3IoMCwgMCwgMCwgMCk7CiAgICB9CiAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKCiAgICB2YXIgY29vcmRzQnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CiAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgY29vcmRzQnVmZmVyKTsKICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBjb29yZHMsIGdsLlNUQVRJQ19EUkFXKTsKICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGNhY2hlLnBvc2l0aW9uTG9jYXRpb24pOwogICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcihjYWNoZS5wb3NpdGlvbkxvY2F0aW9uLCAyLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOwoKICAgIHZhciBjb2xvcnNCdWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBjb2xvcnNCdWZmZXIpOwogICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIGNvbG9ycywgZ2wuU1RBVElDX0RSQVcpOwogICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoY2FjaGUuY29sb3JMb2NhdGlvbik7CiAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGNhY2hlLmNvbG9yTG9jYXRpb24sIDMsIGdsLlVOU0lHTkVEX0JZVEUsIGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwKTsKCiAgICBnbC51bmlmb3JtMmYoY2FjaGUuc2NhbGVMb2NhdGlvbiwgY29udGV4dC5zY2FsZVgsIGNvbnRleHQuc2NhbGVZKTsKICAgIGdsLnVuaWZvcm0yZihjYWNoZS5vZmZzZXRMb2NhdGlvbiwgY29udGV4dC5vZmZzZXRYLCBjb250ZXh0Lm9mZnNldFkpOwoKICAgIGdsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCBjb3VudCk7CgogICAgZ2wuZmx1c2goKTsKCiAgICBnbC5kZWxldGVCdWZmZXIoY29vcmRzQnVmZmVyKTsKICAgIGdsLmRlbGV0ZUJ1ZmZlcihjb2xvcnNCdWZmZXIpOwoKICAgIHJldHVybiBjYW52YXM7CiAgfQoKICBmdW5jdGlvbiBjbGVhbnVwKCkgewogICAgaWYgKHNtYXNrQ2FjaGUgJiYgc21hc2tDYWNoZS5jYW52YXMpIHsKICAgICAgc21hc2tDYWNoZS5jYW52YXMud2lkdGggPSAwOwogICAgICBzbWFza0NhY2hlLmNhbnZhcy5oZWlnaHQgPSAwOwogICAgfQogICAgaWYgKGZpZ3VyZXNDYWNoZSAmJiBmaWd1cmVzQ2FjaGUuY2FudmFzKSB7CiAgICAgIGZpZ3VyZXNDYWNoZS5jYW52YXMud2lkdGggPSAwOwogICAgICBmaWd1cmVzQ2FjaGUuY2FudmFzLmhlaWdodCA9IDA7CiAgICB9CiAgICBzbWFza0NhY2hlID0gbnVsbDsKICAgIGZpZ3VyZXNDYWNoZSA9IG51bGw7CiAgfQoKICByZXR1cm4gewogICAgZ2V0IGlzRW5hYmxlZCgpIHsKICAgICAgaWYgKFBERkpTLmRpc2FibGVXZWJHTCkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgICB2YXIgZW5hYmxlZCA9IGZhbHNlOwogICAgICB0cnkgewogICAgICAgIGdlbmVyYXRlR0woKTsKICAgICAgICBlbmFibGVkID0gISFjdXJyZW50R0w7CiAgICAgIH0gY2F0Y2ggKGUpIHsgfQogICAgICByZXR1cm4gc2hhZG93KHRoaXMsICdpc0VuYWJsZWQnLCBlbmFibGVkKTsKICAgIH0sCiAgICBjb21wb3NlU01hc2s6IGNvbXBvc2VTTWFzaywKICAgIGRyYXdGaWd1cmVzOiBkcmF3RmlndXJlcywKICAgIGNsZWFyOiBjbGVhbnVwCiAgfTsKfSkoKTsKCgp2YXIgU2hhZGluZ0lScyA9IHt9OwoKU2hhZGluZ0lScy5SYWRpYWxBeGlhbCA9IHsKICBmcm9tSVI6IGZ1bmN0aW9uIFJhZGlhbEF4aWFsX2Zyb21JUihyYXcpIHsKICAgIHZhciB0eXBlID0gcmF3WzFdOwogICAgdmFyIGNvbG9yU3RvcHMgPSByYXdbMl07CiAgICB2YXIgcDAgPSByYXdbM107CiAgICB2YXIgcDEgPSByYXdbNF07CiAgICB2YXIgcjAgPSByYXdbNV07CiAgICB2YXIgcjEgPSByYXdbNl07CiAgICByZXR1cm4gewogICAgICB0eXBlOiAnUGF0dGVybicsCiAgICAgIGdldFBhdHRlcm46IGZ1bmN0aW9uIFJhZGlhbEF4aWFsX2dldFBhdHRlcm4oY3R4KSB7CiAgICAgICAgdmFyIGdyYWQ7CiAgICAgICAgaWYgKHR5cGUgPT09ICdheGlhbCcpIHsKICAgICAgICAgIGdyYWQgPSBjdHguY3JlYXRlTGluZWFyR3JhZGllbnQocDBbMF0sIHAwWzFdLCBwMVswXSwgcDFbMV0pOwogICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3JhZGlhbCcpIHsKICAgICAgICAgIGdyYWQgPSBjdHguY3JlYXRlUmFkaWFsR3JhZGllbnQocDBbMF0sIHAwWzFdLCByMCwgcDFbMF0sIHAxWzFdLCByMSk7CiAgICAgICAgfQoKICAgICAgICBmb3IgKHZhciBpID0gMCwgaWkgPSBjb2xvclN0b3BzLmxlbmd0aDsgaSA8IGlpOyArK2kpIHsKICAgICAgICAgIHZhciBjID0gY29sb3JTdG9wc1tpXTsKICAgICAgICAgIGdyYWQuYWRkQ29sb3JTdG9wKGNbMF0sIGNbMV0pOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZ3JhZDsKICAgICAgfQogICAgfTsKICB9Cn07Cgp2YXIgY3JlYXRlTWVzaENhbnZhcyA9IChmdW5jdGlvbiBjcmVhdGVNZXNoQ2FudmFzQ2xvc3VyZSgpIHsKICBmdW5jdGlvbiBkcmF3VHJpYW5nbGUoZGF0YSwgY29udGV4dCwgcDEsIHAyLCBwMywgYzEsIGMyLCBjMykgewogICAgLy8gVmVyeSBiYXNpYyBHb3VyYXVkLXNoYWRlZCB0cmlhbmdsZSByYXN0ZXJpemF0aW9uIGFsZ29yaXRobS4KICAgIHZhciBjb29yZHMgPSBjb250ZXh0LmNvb3JkcywgY29sb3JzID0gY29udGV4dC5jb2xvcnM7CiAgICB2YXIgYnl0ZXMgPSBkYXRhLmRhdGEsIHJvd1NpemUgPSBkYXRhLndpZHRoICogNDsKICAgIHZhciB0bXA7CiAgICBpZiAoY29vcmRzW3AxICsgMV0gPiBjb29yZHNbcDIgKyAxXSkgewogICAgICB0bXAgPSBwMTsgcDEgPSBwMjsgcDIgPSB0bXA7IHRtcCA9IGMxOyBjMSA9IGMyOyBjMiA9IHRtcDsKICAgIH0KICAgIGlmIChjb29yZHNbcDIgKyAxXSA+IGNvb3Jkc1twMyArIDFdKSB7CiAgICAgIHRtcCA9IHAyOyBwMiA9IHAzOyBwMyA9IHRtcDsgdG1wID0gYzI7IGMyID0gYzM7IGMzID0gdG1wOwogICAgfQogICAgaWYgKGNvb3Jkc1twMSArIDFdID4gY29vcmRzW3AyICsgMV0pIHsKICAgICAgdG1wID0gcDE7IHAxID0gcDI7IHAyID0gdG1wOyB0bXAgPSBjMTsgYzEgPSBjMjsgYzIgPSB0bXA7CiAgICB9CiAgICB2YXIgeDEgPSAoY29vcmRzW3AxXSArIGNvbnRleHQub2Zmc2V0WCkgKiBjb250ZXh0LnNjYWxlWDsKICAgIHZhciB5MSA9IChjb29yZHNbcDEgKyAxXSArIGNvbnRleHQub2Zmc2V0WSkgKiBjb250ZXh0LnNjYWxlWTsKICAgIHZhciB4MiA9IChjb29yZHNbcDJdICsgY29udGV4dC5vZmZzZXRYKSAqIGNvbnRleHQuc2NhbGVYOwogICAgdmFyIHkyID0gKGNvb3Jkc1twMiArIDFdICsgY29udGV4dC5vZmZzZXRZKSAqIGNvbnRleHQuc2NhbGVZOwogICAgdmFyIHgzID0gKGNvb3Jkc1twM10gKyBjb250ZXh0Lm9mZnNldFgpICogY29udGV4dC5zY2FsZVg7CiAgICB2YXIgeTMgPSAoY29vcmRzW3AzICsgMV0gKyBjb250ZXh0Lm9mZnNldFkpICogY29udGV4dC5zY2FsZVk7CiAgICBpZiAoeTEgPj0geTMpIHsKICAgICAgcmV0dXJuOwogICAgfQogICAgdmFyIGMxciA9IGNvbG9yc1tjMV0sIGMxZyA9IGNvbG9yc1tjMSArIDFdLCBjMWIgPSBjb2xvcnNbYzEgKyAyXTsKICAgIHZhciBjMnIgPSBjb2xvcnNbYzJdLCBjMmcgPSBjb2xvcnNbYzIgKyAxXSwgYzJiID0gY29sb3JzW2MyICsgMl07CiAgICB2YXIgYzNyID0gY29sb3JzW2MzXSwgYzNnID0gY29sb3JzW2MzICsgMV0sIGMzYiA9IGNvbG9yc1tjMyArIDJdOwoKICAgIHZhciBtaW5ZID0gTWF0aC5yb3VuZCh5MSksIG1heFkgPSBNYXRoLnJvdW5kKHkzKTsKICAgIHZhciB4YSwgY2FyLCBjYWcsIGNhYjsKICAgIHZhciB4YiwgY2JyLCBjYmcsIGNiYjsKICAgIHZhciBrOwogICAgZm9yICh2YXIgeSA9IG1pblk7IHkgPD0gbWF4WTsgeSsrKSB7CiAgICAgIGlmICh5IDwgeTIpIHsKICAgICAgICBrID0geSA8IHkxID8gMCA6IHkxID09PSB5MiA/IDEgOiAoeTEgLSB5KSAvICh5MSAtIHkyKTsKICAgICAgICB4YSA9IHgxIC0gKHgxIC0geDIpICogazsKICAgICAgICBjYXIgPSBjMXIgLSAoYzFyIC0gYzJyKSAqIGs7CiAgICAgICAgY2FnID0gYzFnIC0gKGMxZyAtIGMyZykgKiBrOwogICAgICAgIGNhYiA9IGMxYiAtIChjMWIgLSBjMmIpICogazsKICAgICAgfSBlbHNlIHsKICAgICAgICBrID0geSA+IHkzID8gMSA6IHkyID09PSB5MyA/IDAgOiAoeTIgLSB5KSAvICh5MiAtIHkzKTsKICAgICAgICB4YSA9IHgyIC0gKHgyIC0geDMpICogazsKICAgICAgICBjYXIgPSBjMnIgLSAoYzJyIC0gYzNyKSAqIGs7CiAgICAgICAgY2FnID0gYzJnIC0gKGMyZyAtIGMzZykgKiBrOwogICAgICAgIGNhYiA9IGMyYiAtIChjMmIgLSBjM2IpICogazsKICAgICAgfQogICAgICBrID0geSA8IHkxID8gMCA6IHkgPiB5MyA/IDEgOiAoeTEgLSB5KSAvICh5MSAtIHkzKTsKICAgICAgeGIgPSB4MSAtICh4MSAtIHgzKSAqIGs7CiAgICAgIGNiciA9IGMxciAtIChjMXIgLSBjM3IpICogazsKICAgICAgY2JnID0gYzFnIC0gKGMxZyAtIGMzZykgKiBrOwogICAgICBjYmIgPSBjMWIgLSAoYzFiIC0gYzNiKSAqIGs7CiAgICAgIHZhciB4MV8gPSBNYXRoLnJvdW5kKE1hdGgubWluKHhhLCB4YikpOwogICAgICB2YXIgeDJfID0gTWF0aC5yb3VuZChNYXRoLm1heCh4YSwgeGIpKTsKICAgICAgdmFyIGogPSByb3dTaXplICogeSArIHgxXyAqIDQ7CiAgICAgIGZvciAodmFyIHggPSB4MV87IHggPD0geDJfOyB4KyspIHsKICAgICAgICBrID0gKHhhIC0geCkgLyAoeGEgLSB4Yik7CiAgICAgICAgayA9IGsgPCAwID8gMCA6IGsgPiAxID8gMSA6IGs7CiAgICAgICAgYnl0ZXNbaisrXSA9IChjYXIgLSAoY2FyIC0gY2JyKSAqIGspIHwgMDsKICAgICAgICBieXRlc1tqKytdID0gKGNhZyAtIChjYWcgLSBjYmcpICogaykgfCAwOwogICAgICAgIGJ5dGVzW2orK10gPSAoY2FiIC0gKGNhYiAtIGNiYikgKiBrKSB8IDA7CiAgICAgICAgYnl0ZXNbaisrXSA9IDI1NTsKICAgICAgfQogICAgfQogIH0KCiAgZnVuY3Rpb24gZHJhd0ZpZ3VyZShkYXRhLCBmaWd1cmUsIGNvbnRleHQpIHsKICAgIHZhciBwcyA9IGZpZ3VyZS5jb29yZHM7CiAgICB2YXIgY3MgPSBmaWd1cmUuY29sb3JzOwogICAgdmFyIGksIGlpOwogICAgc3dpdGNoIChmaWd1cmUudHlwZSkgewogICAgICBjYXNlICdsYXR0aWNlJzoKICAgICAgICB2YXIgdmVydGljZXNQZXJSb3cgPSBmaWd1cmUudmVydGljZXNQZXJSb3c7CiAgICAgICAgdmFyIHJvd3MgPSBNYXRoLmZsb29yKHBzLmxlbmd0aCAvIHZlcnRpY2VzUGVyUm93KSAtIDE7CiAgICAgICAgdmFyIGNvbHMgPSB2ZXJ0aWNlc1BlclJvdyAtIDE7CiAgICAgICAgZm9yIChpID0gMDsgaSA8IHJvd3M7IGkrKykgewogICAgICAgICAgdmFyIHEgPSBpICogdmVydGljZXNQZXJSb3c7CiAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGNvbHM7IGorKywgcSsrKSB7CiAgICAgICAgICAgIGRyYXdUcmlhbmdsZShkYXRhLCBjb250ZXh0LAogICAgICAgICAgICAgIHBzW3FdLCBwc1txICsgMV0sIHBzW3EgKyB2ZXJ0aWNlc1BlclJvd10sCiAgICAgICAgICAgICAgY3NbcV0sIGNzW3EgKyAxXSwgY3NbcSArIHZlcnRpY2VzUGVyUm93XSk7CiAgICAgICAgICAgIGRyYXdUcmlhbmdsZShkYXRhLCBjb250ZXh0LAogICAgICAgICAgICAgIHBzW3EgKyB2ZXJ0aWNlc1BlclJvdyArIDFdLCBwc1txICsgMV0sIHBzW3EgKyB2ZXJ0aWNlc1BlclJvd10sCiAgICAgICAgICAgICAgY3NbcSArIHZlcnRpY2VzUGVyUm93ICsgMV0sIGNzW3EgKyAxXSwgY3NbcSArIHZlcnRpY2VzUGVyUm93XSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGJyZWFrOwogICAgICBjYXNlICd0cmlhbmdsZXMnOgogICAgICAgIGZvciAoaSA9IDAsIGlpID0gcHMubGVuZ3RoOyBpIDwgaWk7IGkgKz0gMykgewogICAgICAgICAgZHJhd1RyaWFuZ2xlKGRhdGEsIGNvbnRleHQsCiAgICAgICAgICAgIHBzW2ldLCBwc1tpICsgMV0sIHBzW2kgKyAyXSwKICAgICAgICAgICAgY3NbaV0sIGNzW2kgKyAxXSwgY3NbaSArIDJdKTsKICAgICAgICB9CiAgICAgICAgYnJlYWs7CiAgICAgIGRlZmF1bHQ6CiAgICAgICAgZXJyb3IoJ2lsbGlnYWwgZmlndXJlJyk7CiAgICAgICAgYnJlYWs7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBjcmVhdGVNZXNoQ2FudmFzKGJvdW5kcywgY29tYmluZXNTY2FsZSwgY29vcmRzLCBjb2xvcnMsIGZpZ3VyZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3IpIHsKICAgIC8vIHdlIHdpbGwgaW5jcmVhc2Ugc2NhbGUgb24gc29tZSB3ZWlyZCBmYWN0b3IgdG8gbGV0IGFudGlhbGlhc2luZyB0YWtlCiAgICAvLyBjYXJlIG9mICJyb3VnaCIgZWRnZXMKICAgIHZhciBFWFBFQ1RFRF9TQ0FMRSA9IDEuMTsKICAgIC8vIE1BWF9QQVRURVJOX1NJWkUgaXMgdXNlZCB0byBhdm9pZCBPT00gc2l0dWF0aW9uLgogICAgdmFyIE1BWF9QQVRURVJOX1NJWkUgPSAzMDAwOyAvLyAxMGluIEAgMzAwZHBpIHNoYWxsIGJlIGVub3VnaAoKICAgIHZhciBvZmZzZXRYID0gTWF0aC5mbG9vcihib3VuZHNbMF0pOwogICAgdmFyIG9mZnNldFkgPSBNYXRoLmZsb29yKGJvdW5kc1sxXSk7CiAgICB2YXIgYm91bmRzV2lkdGggPSBNYXRoLmNlaWwoYm91bmRzWzJdKSAtIG9mZnNldFg7CiAgICB2YXIgYm91bmRzSGVpZ2h0ID0gTWF0aC5jZWlsKGJvdW5kc1szXSkgLSBvZmZzZXRZOwoKICAgIHZhciB3aWR0aCA9IE1hdGgubWluKE1hdGguY2VpbChNYXRoLmFicyhib3VuZHNXaWR0aCAqIGNvbWJpbmVzU2NhbGVbMF0gKgogICAgICBFWFBFQ1RFRF9TQ0FMRSkpLCBNQVhfUEFUVEVSTl9TSVpFKTsKICAgIHZhciBoZWlnaHQgPSBNYXRoLm1pbihNYXRoLmNlaWwoTWF0aC5hYnMoYm91bmRzSGVpZ2h0ICogY29tYmluZXNTY2FsZVsxXSAqCiAgICAgIEVYUEVDVEVEX1NDQUxFKSksIE1BWF9QQVRURVJOX1NJWkUpOwogICAgdmFyIHNjYWxlWCA9IGJvdW5kc1dpZHRoIC8gd2lkdGg7CiAgICB2YXIgc2NhbGVZID0gYm91bmRzSGVpZ2h0IC8gaGVpZ2h0OwoKICAgIHZhciBjb250ZXh0ID0gewogICAgICBjb29yZHM6IGNvb3JkcywKICAgICAgY29sb3JzOiBjb2xvcnMsCiAgICAgIG9mZnNldFg6IC1vZmZzZXRYLAogICAgICBvZmZzZXRZOiAtb2Zmc2V0WSwKICAgICAgc2NhbGVYOiAxIC8gc2NhbGVYLAogICAgICBzY2FsZVk6IDEgLyBzY2FsZVkKICAgIH07CgogICAgdmFyIGNhbnZhcywgdG1wQ2FudmFzLCBpLCBpaTsKICAgIGlmIChXZWJHTFV0aWxzLmlzRW5hYmxlZCkgewogICAgICBjYW52YXMgPSBXZWJHTFV0aWxzLmRyYXdGaWd1cmVzKHdpZHRoLCBoZWlnaHQsIGJhY2tncm91bmRDb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWd1cmVzLCBjb250ZXh0KTsKCiAgICAgIC8vIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTk3MjEyNgogICAgICB0bXBDYW52YXMgPSBDYWNoZWRDYW52YXNlcy5nZXRDYW52YXMoJ21lc2gnLCB3aWR0aCwgaGVpZ2h0LCBmYWxzZSk7CiAgICAgIHRtcENhbnZhcy5jb250ZXh0LmRyYXdJbWFnZShjYW52YXMsIDAsIDApOwogICAgICBjYW52YXMgPSB0bXBDYW52YXMuY2FudmFzOwogICAgfSBlbHNlIHsKICAgICAgdG1wQ2FudmFzID0gQ2FjaGVkQ2FudmFzZXMuZ2V0Q2FudmFzKCdtZXNoJywgd2lkdGgsIGhlaWdodCwgZmFsc2UpOwogICAgICB2YXIgdG1wQ3R4ID0gdG1wQ2FudmFzLmNvbnRleHQ7CgogICAgICB2YXIgZGF0YSA9IHRtcEN0eC5jcmVhdGVJbWFnZURhdGEod2lkdGgsIGhlaWdodCk7CiAgICAgIGlmIChiYWNrZ3JvdW5kQ29sb3IpIHsKICAgICAgICB2YXIgYnl0ZXMgPSBkYXRhLmRhdGE7CiAgICAgICAgZm9yIChpID0gMCwgaWkgPSBieXRlcy5sZW5ndGg7IGkgPCBpaTsgaSArPSA0KSB7CiAgICAgICAgICBieXRlc1tpXSA9IGJhY2tncm91bmRDb2xvclswXTsKICAgICAgICAgIGJ5dGVzW2kgKyAxXSA9IGJhY2tncm91bmRDb2xvclsxXTsKICAgICAgICAgIGJ5dGVzW2kgKyAyXSA9IGJhY2tncm91bmRDb2xvclsyXTsKICAgICAgICAgIGJ5dGVzW2kgKyAzXSA9IDI1NTsKICAgICAgICB9CiAgICAgIH0KICAgICAgZm9yIChpID0gMDsgaSA8IGZpZ3VyZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICBkcmF3RmlndXJlKGRhdGEsIGZpZ3VyZXNbaV0sIGNvbnRleHQpOwogICAgICB9CiAgICAgIHRtcEN0eC5wdXRJbWFnZURhdGEoZGF0YSwgMCwgMCk7CiAgICAgIGNhbnZhcyA9IHRtcENhbnZhcy5jYW52YXM7CiAgICB9CgogICAgcmV0dXJuIHtjYW52YXM6IGNhbnZhcywgb2Zmc2V0WDogb2Zmc2V0WCwgb2Zmc2V0WTogb2Zmc2V0WSwKICAgICAgICAgICAgc2NhbGVYOiBzY2FsZVgsIHNjYWxlWTogc2NhbGVZfTsKICB9CiAgcmV0dXJuIGNyZWF0ZU1lc2hDYW52YXM7Cn0pKCk7CgpTaGFkaW5nSVJzLk1lc2ggPSB7CiAgZnJvbUlSOiBmdW5jdGlvbiBNZXNoX2Zyb21JUihyYXcpIHsKICAgIC8vdmFyIHR5cGUgPSByYXdbMV07CiAgICB2YXIgY29vcmRzID0gcmF3WzJdOwogICAgdmFyIGNvbG9ycyA9IHJhd1szXTsKICAgIHZhciBmaWd1cmVzID0gcmF3WzRdOwogICAgdmFyIGJvdW5kcyA9IHJhd1s1XTsKICAgIHZhciBtYXRyaXggPSByYXdbNl07CiAgICAvL3ZhciBiYm94ID0gcmF3WzddOwogICAgdmFyIGJhY2tncm91bmQgPSByYXdbOF07CiAgICByZXR1cm4gewogICAgICB0eXBlOiAnUGF0dGVybicsCiAgICAgIGdldFBhdHRlcm46IGZ1bmN0aW9uIE1lc2hfZ2V0UGF0dGVybihjdHgsIG93bmVyLCBzaGFkaW5nRmlsbCkgewogICAgICAgIHZhciBzY2FsZTsKICAgICAgICBpZiAoc2hhZGluZ0ZpbGwpIHsKICAgICAgICAgIHNjYWxlID0gVXRpbC5zaW5ndWxhclZhbHVlRGVjb21wb3NlMmRTY2FsZShjdHgubW96Q3VycmVudFRyYW5zZm9ybSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIC8vIE9idGFpbiBzY2FsZSBmcm9tIG1hdHJpeCBhbmQgY3VycmVudCB0cmFuc2Zvcm1hdGlvbiBtYXRyaXguCiAgICAgICAgICBzY2FsZSA9IFV0aWwuc2luZ3VsYXJWYWx1ZURlY29tcG9zZTJkU2NhbGUob3duZXIuYmFzZVRyYW5zZm9ybSk7CiAgICAgICAgICBpZiAobWF0cml4KSB7CiAgICAgICAgICAgIHZhciBtYXRyaXhTY2FsZSA9IFV0aWwuc2luZ3VsYXJWYWx1ZURlY29tcG9zZTJkU2NhbGUobWF0cml4KTsKICAgICAgICAgICAgc2NhbGUgPSBbc2NhbGVbMF0gKiBtYXRyaXhTY2FsZVswXSwKICAgICAgICAgICAgICAgICAgICAgc2NhbGVbMV0gKiBtYXRyaXhTY2FsZVsxXV07CiAgICAgICAgICB9CiAgICAgICAgfQoKCiAgICAgICAgLy8gUmFzdGVyaXppbmcgb24gdGhlIG1haW4gdGhyZWFkIHNpbmNlIHNlbmRpbmcvcXVldWUgbGFyZ2UgY2FudmFzZXMKICAgICAgICAvLyBtaWdodCBjYXVzZSBPT00uCiAgICAgICAgdmFyIHRlbXBvcmFyeVBhdHRlcm5DYW52YXMgPSBjcmVhdGVNZXNoQ2FudmFzKGJvdW5kcywgc2NhbGUsIGNvb3JkcywKICAgICAgICAgIGNvbG9ycywgZmlndXJlcywgc2hhZGluZ0ZpbGwgPyBudWxsIDogYmFja2dyb3VuZCk7CgogICAgICAgIGlmICghc2hhZGluZ0ZpbGwpIHsKICAgICAgICAgIGN0eC5zZXRUcmFuc2Zvcm0uYXBwbHkoY3R4LCBvd25lci5iYXNlVHJhbnNmb3JtKTsKICAgICAgICAgIGlmIChtYXRyaXgpIHsKICAgICAgICAgICAgY3R4LnRyYW5zZm9ybS5hcHBseShjdHgsIG1hdHJpeCk7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBjdHgudHJhbnNsYXRlKHRlbXBvcmFyeVBhdHRlcm5DYW52YXMub2Zmc2V0WCwKICAgICAgICAgICAgICAgICAgICAgIHRlbXBvcmFyeVBhdHRlcm5DYW52YXMub2Zmc2V0WSk7CiAgICAgICAgY3R4LnNjYWxlKHRlbXBvcmFyeVBhdHRlcm5DYW52YXMuc2NhbGVYLAogICAgICAgICAgICAgICAgICB0ZW1wb3JhcnlQYXR0ZXJuQ2FudmFzLnNjYWxlWSk7CgogICAgICAgIHJldHVybiBjdHguY3JlYXRlUGF0dGVybih0ZW1wb3JhcnlQYXR0ZXJuQ2FudmFzLmNhbnZhcywgJ25vLXJlcGVhdCcpOwogICAgICB9CiAgICB9OwogIH0KfTsKClNoYWRpbmdJUnMuRHVtbXkgPSB7CiAgZnJvbUlSOiBmdW5jdGlvbiBEdW1teV9mcm9tSVIoKSB7CiAgICByZXR1cm4gewogICAgICB0eXBlOiAnUGF0dGVybicsCiAgICAgIGdldFBhdHRlcm46IGZ1bmN0aW9uIER1bW15X2Zyb21JUl9nZXRQYXR0ZXJuKCkgewogICAgICAgIHJldHVybiAnaG90cGluayc7CiAgICAgIH0KICAgIH07CiAgfQp9OwoKZnVuY3Rpb24gZ2V0U2hhZGluZ1BhdHRlcm5Gcm9tSVIocmF3KSB7CiAgdmFyIHNoYWRpbmdJUiA9IFNoYWRpbmdJUnNbcmF3WzBdXTsKICBpZiAoIXNoYWRpbmdJUikgewogICAgZXJyb3IoJ1Vua25vd24gSVIgdHlwZTogJyArIHJhd1swXSk7CiAgfQogIHJldHVybiBzaGFkaW5nSVIuZnJvbUlSKHJhdyk7Cn0KCnZhciBUaWxpbmdQYXR0ZXJuID0gKGZ1bmN0aW9uIFRpbGluZ1BhdHRlcm5DbG9zdXJlKCkgewogIHZhciBQYWludFR5cGUgPSB7CiAgICBDT0xPUkVEOiAxLAogICAgVU5DT0xPUkVEOiAyCiAgfTsKCiAgdmFyIE1BWF9QQVRURVJOX1NJWkUgPSAzMDAwOyAvLyAxMGluIEAgMzAwZHBpIHNoYWxsIGJlIGVub3VnaAoKICBmdW5jdGlvbiBUaWxpbmdQYXR0ZXJuKElSLCBjb2xvciwgY3R4LCBvYmpzLCBjb21tb25PYmpzLCBiYXNlVHJhbnNmb3JtKSB7CiAgICB0aGlzLm9wZXJhdG9yTGlzdCA9IElSWzJdOwogICAgdGhpcy5tYXRyaXggPSBJUlszXSB8fCBbMSwgMCwgMCwgMSwgMCwgMF07CiAgICB0aGlzLmJib3ggPSBJUls0XTsKICAgIHRoaXMueHN0ZXAgPSBJUls1XTsKICAgIHRoaXMueXN0ZXAgPSBJUls2XTsKICAgIHRoaXMucGFpbnRUeXBlID0gSVJbN107CiAgICB0aGlzLnRpbGluZ1R5cGUgPSBJUls4XTsKICAgIHRoaXMuY29sb3IgPSBjb2xvcjsKICAgIHRoaXMub2JqcyA9IG9ianM7CiAgICB0aGlzLmNvbW1vbk9ianMgPSBjb21tb25PYmpzOwogICAgdGhpcy5iYXNlVHJhbnNmb3JtID0gYmFzZVRyYW5zZm9ybTsKICAgIHRoaXMudHlwZSA9ICdQYXR0ZXJuJzsKICAgIHRoaXMuY3R4ID0gY3R4OwogIH0KCiAgVGlsaW5nUGF0dGVybi5wcm90b3R5cGUgPSB7CiAgICBjcmVhdGVQYXR0ZXJuQ2FudmFzOiBmdW5jdGlvbiBUaWxpblBhdHRlcm5fY3JlYXRlUGF0dGVybkNhbnZhcyhvd25lcikgewogICAgICB2YXIgb3BlcmF0b3JMaXN0ID0gdGhpcy5vcGVyYXRvckxpc3Q7CiAgICAgIHZhciBiYm94ID0gdGhpcy5iYm94OwogICAgICB2YXIgeHN0ZXAgPSB0aGlzLnhzdGVwOwogICAgICB2YXIgeXN0ZXAgPSB0aGlzLnlzdGVwOwogICAgICB2YXIgcGFpbnRUeXBlID0gdGhpcy5wYWludFR5cGU7CiAgICAgIHZhciB0aWxpbmdUeXBlID0gdGhpcy50aWxpbmdUeXBlOwogICAgICB2YXIgY29sb3IgPSB0aGlzLmNvbG9yOwogICAgICB2YXIgb2JqcyA9IHRoaXMub2JqczsKICAgICAgdmFyIGNvbW1vbk9ianMgPSB0aGlzLmNvbW1vbk9ianM7CgogICAgICBpbmZvKCdUaWxpbmdUeXBlOiAnICsgdGlsaW5nVHlwZSk7CgogICAgICB2YXIgeDAgPSBiYm94WzBdLCB5MCA9IGJib3hbMV0sIHgxID0gYmJveFsyXSwgeTEgPSBiYm94WzNdOwoKICAgICAgdmFyIHRvcExlZnQgPSBbeDAsIHkwXTsKICAgICAgLy8gd2Ugd2FudCB0aGUgY2FudmFzIHRvIGJlIGFzIGxhcmdlIGFzIHRoZSBzdGVwIHNpemUKICAgICAgdmFyIGJvdFJpZ2h0ID0gW3gwICsgeHN0ZXAsIHkwICsgeXN0ZXBdOwoKICAgICAgdmFyIHdpZHRoID0gYm90UmlnaHRbMF0gLSB0b3BMZWZ0WzBdOwogICAgICB2YXIgaGVpZ2h0ID0gYm90UmlnaHRbMV0gLSB0b3BMZWZ0WzFdOwoKICAgICAgLy8gT2J0YWluIHNjYWxlIGZyb20gbWF0cml4IGFuZCBjdXJyZW50IHRyYW5zZm9ybWF0aW9uIG1hdHJpeC4KICAgICAgdmFyIG1hdHJpeFNjYWxlID0gVXRpbC5zaW5ndWxhclZhbHVlRGVjb21wb3NlMmRTY2FsZSh0aGlzLm1hdHJpeCk7CiAgICAgIHZhciBjdXJNYXRyaXhTY2FsZSA9IFV0aWwuc2luZ3VsYXJWYWx1ZURlY29tcG9zZTJkU2NhbGUoCiAgICAgICAgdGhpcy5iYXNlVHJhbnNmb3JtKTsKICAgICAgdmFyIGNvbWJpbmVkU2NhbGUgPSBbbWF0cml4U2NhbGVbMF0gKiBjdXJNYXRyaXhTY2FsZVswXSwKICAgICAgICBtYXRyaXhTY2FsZVsxXSAqIGN1ck1hdHJpeFNjYWxlWzFdXTsKCiAgICAgIC8vIE1BWF9QQVRURVJOX1NJWkUgaXMgdXNlZCB0byBhdm9pZCBPT00gc2l0dWF0aW9uLgogICAgICAvLyBVc2Ugd2lkdGggYW5kIGhlaWdodCB2YWx1ZXMgdGhhdCBhcmUgYXMgY2xvc2UgYXMgcG9zc2libGUgdG8gdGhlIGVuZAogICAgICAvLyByZXN1bHQgd2hlbiB0aGUgcGF0dGVybiBpcyB1c2VkLiBUb28gbG93IHZhbHVlIG1ha2VzIHRoZSBwYXR0ZXJuIGxvb2sKICAgICAgLy8gYmx1cnJ5LiBUb28gbGFyZ2UgdmFsdWUgbWFrZXMgaXQgbG9vayB0b28gY3Jpc3B5LgogICAgICB3aWR0aCA9IE1hdGgubWluKE1hdGguY2VpbChNYXRoLmFicyh3aWR0aCAqIGNvbWJpbmVkU2NhbGVbMF0pKSwKICAgICAgICBNQVhfUEFUVEVSTl9TSVpFKTsKCiAgICAgIGhlaWdodCA9IE1hdGgubWluKE1hdGguY2VpbChNYXRoLmFicyhoZWlnaHQgKiBjb21iaW5lZFNjYWxlWzFdKSksCiAgICAgICAgTUFYX1BBVFRFUk5fU0laRSk7CgogICAgICB2YXIgdG1wQ2FudmFzID0gQ2FjaGVkQ2FudmFzZXMuZ2V0Q2FudmFzKCdwYXR0ZXJuJywgd2lkdGgsIGhlaWdodCwgdHJ1ZSk7CiAgICAgIHZhciB0bXBDdHggPSB0bXBDYW52YXMuY29udGV4dDsKICAgICAgdmFyIGdyYXBoaWNzID0gbmV3IENhbnZhc0dyYXBoaWNzKHRtcEN0eCwgY29tbW9uT2Jqcywgb2Jqcyk7CiAgICAgIGdyYXBoaWNzLmdyb3VwTGV2ZWwgPSBvd25lci5ncm91cExldmVsOwoKICAgICAgdGhpcy5zZXRGaWxsQW5kU3Ryb2tlU3R5bGVUb0NvbnRleHQodG1wQ3R4LCBwYWludFR5cGUsIGNvbG9yKTsKCiAgICAgIHRoaXMuc2V0U2NhbGUod2lkdGgsIGhlaWdodCwgeHN0ZXAsIHlzdGVwKTsKICAgICAgdGhpcy50cmFuc2Zvcm1Ub1NjYWxlKGdyYXBoaWNzKTsKCiAgICAgIC8vIHRyYW5zZm9ybSBjb29yZGluYXRlcyB0byBwYXR0ZXJuIHNwYWNlCiAgICAgIHZhciB0bXBUcmFuc2xhdGUgPSBbMSwgMCwgMCwgMSwgLXRvcExlZnRbMF0sIC10b3BMZWZ0WzFdXTsKICAgICAgZ3JhcGhpY3MudHJhbnNmb3JtLmFwcGx5KGdyYXBoaWNzLCB0bXBUcmFuc2xhdGUpOwoKICAgICAgdGhpcy5jbGlwQmJveChncmFwaGljcywgYmJveCwgeDAsIHkwLCB4MSwgeTEpOwoKICAgICAgZ3JhcGhpY3MuZXhlY3V0ZU9wZXJhdG9yTGlzdChvcGVyYXRvckxpc3QpOwogICAgICByZXR1cm4gdG1wQ2FudmFzLmNhbnZhczsKICAgIH0sCgogICAgc2V0U2NhbGU6IGZ1bmN0aW9uIFRpbGluZ1BhdHRlcm5fc2V0U2NhbGUod2lkdGgsIGhlaWdodCwgeHN0ZXAsIHlzdGVwKSB7CiAgICAgIHRoaXMuc2NhbGUgPSBbd2lkdGggLyB4c3RlcCwgaGVpZ2h0IC8geXN0ZXBdOwogICAgfSwKCiAgICB0cmFuc2Zvcm1Ub1NjYWxlOiBmdW5jdGlvbiBUaWxpbmdQYXR0ZXJuX3RyYW5zZm9ybVRvU2NhbGUoZ3JhcGhpY3MpIHsKICAgICAgdmFyIHNjYWxlID0gdGhpcy5zY2FsZTsKICAgICAgdmFyIHRtcFNjYWxlID0gW3NjYWxlWzBdLCAwLCAwLCBzY2FsZVsxXSwgMCwgMF07CiAgICAgIGdyYXBoaWNzLnRyYW5zZm9ybS5hcHBseShncmFwaGljcywgdG1wU2NhbGUpOwogICAgfSwKCiAgICBzY2FsZVRvQ29udGV4dDogZnVuY3Rpb24gVGlsaW5nUGF0dGVybl9zY2FsZVRvQ29udGV4dCgpIHsKICAgICAgdmFyIHNjYWxlID0gdGhpcy5zY2FsZTsKICAgICAgdGhpcy5jdHguc2NhbGUoMSAvIHNjYWxlWzBdLCAxIC8gc2NhbGVbMV0pOwogICAgfSwKCiAgICBjbGlwQmJveDogZnVuY3Rpb24gY2xpcEJib3goZ3JhcGhpY3MsIGJib3gsIHgwLCB5MCwgeDEsIHkxKSB7CiAgICAgIGlmIChiYm94ICYmIGlzQXJyYXkoYmJveCkgJiYgYmJveC5sZW5ndGggPT09IDQpIHsKICAgICAgICB2YXIgYmJveFdpZHRoID0geDEgLSB4MDsKICAgICAgICB2YXIgYmJveEhlaWdodCA9IHkxIC0geTA7CiAgICAgICAgZ3JhcGhpY3MuY3R4LnJlY3QoeDAsIHkwLCBiYm94V2lkdGgsIGJib3hIZWlnaHQpOwogICAgICAgIGdyYXBoaWNzLmNsaXAoKTsKICAgICAgICBncmFwaGljcy5lbmRQYXRoKCk7CiAgICAgIH0KICAgIH0sCgogICAgc2V0RmlsbEFuZFN0cm9rZVN0eWxlVG9Db250ZXh0OgogICAgICBmdW5jdGlvbiBzZXRGaWxsQW5kU3Ryb2tlU3R5bGVUb0NvbnRleHQoY29udGV4dCwgcGFpbnRUeXBlLCBjb2xvcikgewogICAgICAgIHN3aXRjaCAocGFpbnRUeXBlKSB7CiAgICAgICAgICBjYXNlIFBhaW50VHlwZS5DT0xPUkVEOgogICAgICAgICAgICB2YXIgY3R4ID0gdGhpcy5jdHg7CiAgICAgICAgICAgIGNvbnRleHQuZmlsbFN0eWxlID0gY3R4LmZpbGxTdHlsZTsKICAgICAgICAgICAgY29udGV4dC5zdHJva2VTdHlsZSA9IGN0eC5zdHJva2VTdHlsZTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlIFBhaW50VHlwZS5VTkNPTE9SRUQ6CiAgICAgICAgICAgIHZhciBjc3NDb2xvciA9IFV0aWwubWFrZUNzc1JnYihjb2xvclswXSwgY29sb3JbMV0sIGNvbG9yWzJdKTsKICAgICAgICAgICAgY29udGV4dC5maWxsU3R5bGUgPSBjc3NDb2xvcjsKICAgICAgICAgICAgY29udGV4dC5zdHJva2VTdHlsZSA9IGNzc0NvbG9yOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIGVycm9yKCdVbnN1cHBvcnRlZCBwYWludCB0eXBlOiAnICsgcGFpbnRUeXBlKTsKICAgICAgICB9CiAgICAgIH0sCgogICAgZ2V0UGF0dGVybjogZnVuY3Rpb24gVGlsaW5nUGF0dGVybl9nZXRQYXR0ZXJuKGN0eCwgb3duZXIpIHsKICAgICAgdmFyIHRlbXBvcmFyeVBhdHRlcm5DYW52YXMgPSB0aGlzLmNyZWF0ZVBhdHRlcm5DYW52YXMob3duZXIpOwoKICAgICAgY3R4ID0gdGhpcy5jdHg7CiAgICAgIGN0eC5zZXRUcmFuc2Zvcm0uYXBwbHkoY3R4LCB0aGlzLmJhc2VUcmFuc2Zvcm0pOwogICAgICBjdHgudHJhbnNmb3JtLmFwcGx5KGN0eCwgdGhpcy5tYXRyaXgpOwogICAgICB0aGlzLnNjYWxlVG9Db250ZXh0KCk7CgogICAgICByZXR1cm4gY3R4LmNyZWF0ZVBhdHRlcm4odGVtcG9yYXJ5UGF0dGVybkNhbnZhcywgJ3JlcGVhdCcpOwogICAgfQogIH07CgogIHJldHVybiBUaWxpbmdQYXR0ZXJuOwp9KSgpOwoKClBERkpTLmRpc2FibGVGb250RmFjZSA9IGZhbHNlOwoKdmFyIEZvbnRMb2FkZXIgPSB7CiAgaW5zZXJ0UnVsZTogZnVuY3Rpb24gZm9udExvYWRlckluc2VydFJ1bGUocnVsZSkgewogICAgdmFyIHN0eWxlRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdQREZKU19GT05UX1NUWUxFX1RBRycpOwogICAgaWYgKCFzdHlsZUVsZW1lbnQpIHsKICAgICAgc3R5bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKICAgICAgc3R5bGVFbGVtZW50LmlkID0gJ1BERkpTX0ZPTlRfU1RZTEVfVEFHJzsKICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0uYXBwZW5kQ2hpbGQoCiAgICAgICAgc3R5bGVFbGVtZW50KTsKICAgIH0KCiAgICB2YXIgc3R5bGVTaGVldCA9IHN0eWxlRWxlbWVudC5zaGVldDsKICAgIHN0eWxlU2hlZXQuaW5zZXJ0UnVsZShydWxlLCBzdHlsZVNoZWV0LmNzc1J1bGVzLmxlbmd0aCk7CiAgfSwKCiAgY2xlYXI6IGZ1bmN0aW9uIGZvbnRMb2FkZXJDbGVhcigpIHsKICAgIHZhciBzdHlsZUVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnUERGSlNfRk9OVF9TVFlMRV9UQUcnKTsKICAgIGlmIChzdHlsZUVsZW1lbnQpIHsKICAgICAgc3R5bGVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50KTsKICAgIH0KLy8jaWYgIShNT1pDRU5UUkFMKQogICAgdGhpcy5uYXRpdmVGb250RmFjZXMuZm9yRWFjaChmdW5jdGlvbihuYXRpdmVGb250RmFjZSkgewogICAgICBkb2N1bWVudC5mb250cy5kZWxldGUobmF0aXZlRm9udEZhY2UpOwogICAgfSk7CiAgICB0aGlzLm5hdGl2ZUZvbnRGYWNlcy5sZW5ndGggPSAwOwovLyNlbmRpZgogIH0sCi8vI2lmICEoTU9aQ0VOVFJBTCkKICBnZXQgbG9hZFRlc3RGb250KCkgewogICAgLy8gVGhpcyBpcyBhIENGRiBmb250IHdpdGggMSBnbHlwaCBmb3IgJy4nIHRoYXQgZmlsbHMgaXRzIGVudGlyZSB3aWR0aCBhbmQKICAgIC8vIGhlaWdodC4KICAgIHJldHVybiBzaGFkb3codGhpcywgJ2xvYWRUZXN0Rm9udCcsIGF0b2IoCiAgICAgICdUMVJVVHdBTEFJQUFBd0F3UTBaR0lESHRaZzRBQUFPWUFBQUFnVVpHVkUxbGt6WndBQUFFSEFBQUFCeEhSRVZHQUJRQUZRJyArCiAgICAgICdBQUJEZ0FBQUFlVDFNdk1sWU5Zd2tBQUFFZ0FBQUFZR050WVhBQkRRTFVBQUFDTkFBQUFVSm9aV0ZrL3hWRkRRQUFBTHdBJyArCiAgICAgICdBQUEyYUdobFlRZGtBK29BQUFEMEFBQUFKR2h0ZEhnRDZBQUFBQUFFV0FBQUFBWnRZWGh3QUFKUUFBQUFBUmdBQUFBR2JtJyArCiAgICAgICdGdFpWam1kSDRBQUFHQUFBQUFzWEJ2YzNUL2hnQXpBQUFEZUFBQUFDQUFBUUFBQUFFQUFMWlJGc1JmRHp6MUFBc0Q2QUFBJyArCiAgICAgICdBQURPQk9UTEFBQUFBTTRLSER3QUFBQUFBK2dESVFBQUFBZ0FBZ0FBQUFBQUFBQUJBQUFESVFBQUFGb0Q2QUFBQUFBRDZBJyArCiAgICAgICdBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQVVBQUFBZ0FBQUFRRDZBSDBBQVVBQUFLS0Fyd0FBQUNNQW9vQ3ZBQUFBZUFBJyArCiAgICAgICdNUUVDQUFBQ0FBWUpBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUZCbVJXUUF3QUF1QUM0RElQODRBRm9ESVFBQUFBJyArCiAgICAgICdBQUFRQUFBQUFBQUFBQUFDQUFJQUFCQUFBQURnQ3VBQUVBQUFBQUFBQUFBUUFBQUFFQUFBQUFBQUVBQVFBQUFBRUFBQUFBJyArCiAgICAgICdBQUlBQVFBQUFBRUFBQUFBQUFNQUFRQUFBQUVBQUFBQUFBUUFBUUFBQUFFQUFBQUFBQVVBQVFBQUFBRUFBQUFBQUFZQUFRJyArCiAgICAgICdBQUFBTUFBUVFKQUFBQUFnQUJBQU1BQVFRSkFBRUFBZ0FCQUFNQUFRUUpBQUlBQWdBQkFBTUFBUVFKQUFNQUFnQUJBQU1BJyArCiAgICAgICdBUVFKQUFRQUFnQUJBQU1BQVFRSkFBVUFBZ0FCQUFNQUFRUUpBQVlBQWdBQldBQllBQUFBQUFBQUF3QUFBQU1BQUFBY0FBJyArCiAgICAgICdFQUFBQUFBRHdBQXdBQkFBQUFIQUFFQUNBQUFBQUVBQVFBQVFBQUFDNy8vd0FBQUM3Ly8vL1RBQUVBQUFBQUFBQUJCZ0FBJyArCiAgICAgICdBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBJyArCiAgICAgICdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBJyArCiAgICAgICdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBJyArCiAgICAgICdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBJyArCiAgICAgICdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFNQUFBJyArCiAgICAgICdBQUFBRC9nd0F5QUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBUUVBQUVCQVFKWUFBRUJBU0g0RHdENEd3SEVBdmdjJyArCiAgICAgICdBL2dYQkl3TUFZdUwrbno1dFFYa0Q1ajNDQkxuRVFBQ0FRRUJJVmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGJyArCiAgICAgICdoWVdGaFlXRmhZQUFBQkFRQUFEd0FDQVFFRUUvdDNEb3Y2ZkFINmZBVCtmUHA4K253SERvc01Ddm0xQ3ZtMURBejZmQlFBJyArCiAgICAgICdBQUFBQUFBQkFBQUFBTW1KYnpFQUFBQUF6Z1RqRlFBQUFBRE9CT1FwQUFFQUFBQUFBQUFBREFBVUFBUUFBQUFCQUFBQUFnJyArCiAgICAgICdBQkFBQUFBQUFBQUFBRDZBQUFBQUFBQUE9PScKICAgICkpOwogIH0sCgogIGxvYWRUZXN0Rm9udElkOiAwLAoKICBsb2FkaW5nQ29udGV4dDogewogICAgcmVxdWVzdHM6IFtdLAogICAgbmV4dFJlcXVlc3RJZDogMAogIH0sCgogIGlzU3luY0ZvbnRMb2FkaW5nU3VwcG9ydGVkOiAoZnVuY3Rpb24gZGV0ZWN0U3luY0ZvbnRMb2FkaW5nU3VwcG9ydCgpIHsKICAgIGlmIChpc1dvcmtlcikgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLy8gVXNlciBhZ2VudCBzdHJpbmcgc25pZmZpbmcgaXMgYmFkLCBidXQgdGhlcmUgaXMgbm8gcmVsaWFibGUgd2F5IHRvIHRlbGwKICAgIC8vIGlmIGZvbnQgaXMgZnVsbHkgbG9hZGVkIGFuZCByZWFkeSB0byBiZSB1c2VkIHdpdGggY2FudmFzLgogICAgdmFyIHVzZXJBZ2VudCA9IHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50OwogICAgdmFyIG0gPSAvTW96aWxsYVwvNS4wLio/cnY6KFxkKykuKj8gR2Vja28vLmV4ZWModXNlckFnZW50KTsKICAgIGlmIChtICYmIG1bMV0gPj0gMTQpIHsKICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiAgICAvLyBUT0RPIG90aGVyIGJyb3dzZXJzCiAgICBpZiAodXNlckFnZW50ID09PSAnbm9kZScpIHsKICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiAgICByZXR1cm4gZmFsc2U7CiAgfSkoKSwKCiAgbmF0aXZlRm9udEZhY2VzOiBbXSwKCiAgaXNGb250TG9hZGluZ0FQSVN1cHBvcnRlZDogKCFpc1dvcmtlciAmJiB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEhZG9jdW1lbnQuZm9udHMpLAoKICBhZGROYXRpdmVGb250RmFjZTogZnVuY3Rpb24gZm9udExvYWRlcl9hZGROYXRpdmVGb250RmFjZShuYXRpdmVGb250RmFjZSkgewogICAgdGhpcy5uYXRpdmVGb250RmFjZXMucHVzaChuYXRpdmVGb250RmFjZSk7CiAgICBkb2N1bWVudC5mb250cy5hZGQobmF0aXZlRm9udEZhY2UpOwogIH0sCgogIGJpbmQ6IGZ1bmN0aW9uIGZvbnRMb2FkZXJCaW5kKGZvbnRzLCBjYWxsYmFjaykgewogICAgYXNzZXJ0KCFpc1dvcmtlciwgJ2JpbmQoKSBzaGFsbCBiZSBjYWxsZWQgZnJvbSBtYWluIHRocmVhZCcpOwoKICAgIHZhciBydWxlcyA9IFtdOwogICAgdmFyIGZvbnRzVG9Mb2FkID0gW107CiAgICB2YXIgZm9udExvYWRQcm9taXNlcyA9IFtdOwogICAgZm9yICh2YXIgaSA9IDAsIGlpID0gZm9udHMubGVuZ3RoOyBpIDwgaWk7IGkrKykgewogICAgICB2YXIgZm9udCA9IGZvbnRzW2ldOwoKICAgICAgLy8gQWRkIHRoZSBmb250IHRvIHRoZSBET00gb25seSBvbmNlIG9yIHNraXAgaWYgdGhlIGZvbnQKICAgICAgLy8gaXMgYWxyZWFkeSBsb2FkZWQuCiAgICAgIGlmIChmb250LmF0dGFjaGVkIHx8IGZvbnQubG9hZGluZyA9PT0gZmFsc2UpIHsKICAgICAgICBjb250aW51ZTsKICAgICAgfQogICAgICBmb250LmF0dGFjaGVkID0gdHJ1ZTsKCiAgICAgIGlmICh0aGlzLmlzRm9udExvYWRpbmdBUElTdXBwb3J0ZWQpIHsKICAgICAgICB2YXIgbmF0aXZlRm9udEZhY2UgPSBmb250LmNyZWF0ZU5hdGl2ZUZvbnRGYWNlKCk7CiAgICAgICAgaWYgKG5hdGl2ZUZvbnRGYWNlKSB7CiAgICAgICAgICBmb250TG9hZFByb21pc2VzLnB1c2gobmF0aXZlRm9udEZhY2UubG9hZGVkKTsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdmFyIHJ1bGUgPSBmb250LmJpbmRET00oKTsKICAgICAgICBpZiAocnVsZSkgewogICAgICAgICAgcnVsZXMucHVzaChydWxlKTsKICAgICAgICAgIGZvbnRzVG9Mb2FkLnB1c2goZm9udCk7CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgdmFyIHJlcXVlc3QgPSBGb250TG9hZGVyLnF1ZXVlTG9hZGluZ0NhbGxiYWNrKGNhbGxiYWNrKTsKICAgIGlmICh0aGlzLmlzRm9udExvYWRpbmdBUElTdXBwb3J0ZWQpIHsKICAgICAgUHJvbWlzZS5hbGwoZm9udHNUb0xvYWQpLnRoZW4oZnVuY3Rpb24oKSB7CiAgICAgICAgcmVxdWVzdC5jb21wbGV0ZSgpOwogICAgICB9KTsKICAgIH0gZWxzZSBpZiAocnVsZXMubGVuZ3RoID4gMCAmJiAhdGhpcy5pc1N5bmNGb250TG9hZGluZ1N1cHBvcnRlZCkgewogICAgICBGb250TG9hZGVyLnByZXBhcmVGb250TG9hZEV2ZW50KHJ1bGVzLCBmb250c1RvTG9hZCwgcmVxdWVzdCk7CiAgICB9IGVsc2UgewogICAgICByZXF1ZXN0LmNvbXBsZXRlKCk7CiAgICB9CiAgfSwKCiAgcXVldWVMb2FkaW5nQ2FsbGJhY2s6IGZ1bmN0aW9uIEZvbnRMb2FkZXJfcXVldWVMb2FkaW5nQ2FsbGJhY2soY2FsbGJhY2spIHsKICAgIGZ1bmN0aW9uIExvYWRMb2FkZXJfY29tcGxldGVSZXF1ZXN0KCkgewogICAgICBhc3NlcnQoIXJlcXVlc3QuZW5kLCAnY29tcGxldGVSZXF1ZXN0KCkgY2Fubm90IGJlIGNhbGxlZCB0d2ljZScpOwogICAgICByZXF1ZXN0LmVuZCA9IERhdGUubm93KCk7CgogICAgICAvLyBzZW5kaW5nIGFsbCBjb21wbGV0ZWQgcmVxdWVzdHMgaW4gb3JkZXIgaG93IHRoZXkgd2VyZSBxdWV1ZWQKICAgICAgd2hpbGUgKGNvbnRleHQucmVxdWVzdHMubGVuZ3RoID4gMCAmJiBjb250ZXh0LnJlcXVlc3RzWzBdLmVuZCkgewogICAgICAgIHZhciBvdGhlclJlcXVlc3QgPSBjb250ZXh0LnJlcXVlc3RzLnNoaWZ0KCk7CiAgICAgICAgc2V0VGltZW91dChvdGhlclJlcXVlc3QuY2FsbGJhY2ssIDApOwogICAgICB9CiAgICB9CgogICAgdmFyIGNvbnRleHQgPSBGb250TG9hZGVyLmxvYWRpbmdDb250ZXh0OwogICAgdmFyIHJlcXVlc3RJZCA9ICdwZGZqcy1mb250LWxvYWRpbmctJyArIChjb250ZXh0Lm5leHRSZXF1ZXN0SWQrKyk7CiAgICB2YXIgcmVxdWVzdCA9IHsKICAgICAgaWQ6IHJlcXVlc3RJZCwKICAgICAgY29tcGxldGU6IExvYWRMb2FkZXJfY29tcGxldGVSZXF1ZXN0LAogICAgICBjYWxsYmFjazogY2FsbGJhY2ssCiAgICAgIHN0YXJ0ZWQ6IERhdGUubm93KCkKICAgIH07CiAgICBjb250ZXh0LnJlcXVlc3RzLnB1c2gocmVxdWVzdCk7CiAgICByZXR1cm4gcmVxdWVzdDsKICB9LAoKICBwcmVwYXJlRm9udExvYWRFdmVudDogZnVuY3Rpb24gZm9udExvYWRlclByZXBhcmVGb250TG9hZEV2ZW50KHJ1bGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0KSB7CiAgICAgIC8qKiBIYWNrIGJlZ2luICovCiAgICAgIC8vIFRoZXJlJ3MgY3VycmVudGx5IG5vIGV2ZW50IHdoZW4gYSBmb250IGhhcyBmaW5pc2hlZCBkb3dubG9hZGluZyBzbyB0aGUKICAgICAgLy8gZm9sbG93aW5nIGNvZGUgaXMgYSBkaXJ0eSBoYWNrIHRvICdndWVzcycgd2hlbiBhIGZvbnQgaXMKICAgICAgLy8gcmVhZHkuIEl0J3MgYXNzdW1lZCBmb250cyBhcmUgbG9hZGVkIGluIG9yZGVyLCBzbyBhZGQgYSBrbm93biB0ZXN0CiAgICAgIC8vIGZvbnQgYWZ0ZXIgdGhlIGRlc2lyZWQgZm9udHMgYW5kIHRoZW4gdGVzdCBmb3IgdGhlIGxvYWRpbmcgb2YgdGhhdAogICAgICAvLyB0ZXN0IGZvbnQuCgogICAgICBmdW5jdGlvbiBpbnQzMihkYXRhLCBvZmZzZXQpIHsKICAgICAgICByZXR1cm4gKGRhdGEuY2hhckNvZGVBdChvZmZzZXQpIDw8IDI0KSB8CiAgICAgICAgICAgICAgIChkYXRhLmNoYXJDb2RlQXQob2Zmc2V0ICsgMSkgPDwgMTYpIHwKICAgICAgICAgICAgICAgKGRhdGEuY2hhckNvZGVBdChvZmZzZXQgKyAyKSA8PCA4KSB8CiAgICAgICAgICAgICAgIChkYXRhLmNoYXJDb2RlQXQob2Zmc2V0ICsgMykgJiAweGZmKTsKICAgICAgfQoKICAgICAgZnVuY3Rpb24gc3BsaWNlU3RyaW5nKHMsIG9mZnNldCwgcmVtb3ZlLCBpbnNlcnQpIHsKICAgICAgICB2YXIgY2h1bmsxID0gcy5zdWJzdHIoMCwgb2Zmc2V0KTsKICAgICAgICB2YXIgY2h1bmsyID0gcy5zdWJzdHIob2Zmc2V0ICsgcmVtb3ZlKTsKICAgICAgICByZXR1cm4gY2h1bmsxICsgaW5zZXJ0ICsgY2h1bmsyOwogICAgICB9CgogICAgICB2YXIgaSwgaWk7CgogICAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7CiAgICAgIGNhbnZhcy53aWR0aCA9IDE7CiAgICAgIGNhbnZhcy5oZWlnaHQgPSAxOwogICAgICB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7CgogICAgICB2YXIgY2FsbGVkID0gMDsKICAgICAgZnVuY3Rpb24gaXNGb250UmVhZHkobmFtZSwgY2FsbGJhY2spIHsKICAgICAgICBjYWxsZWQrKzsKICAgICAgICAvLyBXaXRoIHNldFRpbWVvdXQgY2xhbXBpbmcgdGhpcyBnaXZlcyB0aGUgZm9udCB+MTAwbXMgdG8gbG9hZC4KICAgICAgICBpZihjYWxsZWQgPiAzMCkgewogICAgICAgICAgd2FybignTG9hZCB0ZXN0IGZvbnQgbmV2ZXIgbG9hZGVkLicpOwogICAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgY3R4LmZvbnQgPSAnMzBweCAnICsgbmFtZTsKICAgICAgICBjdHguZmlsbFRleHQoJy4nLCAwLCAyMCk7CiAgICAgICAgdmFyIGltYWdlRGF0YSA9IGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgMSwgMSk7CiAgICAgICAgaWYgKGltYWdlRGF0YS5kYXRhWzNdID4gMCkgewogICAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgc2V0VGltZW91dChpc0ZvbnRSZWFkeS5iaW5kKG51bGwsIG5hbWUsIGNhbGxiYWNrKSk7CiAgICAgIH0KCiAgICAgIHZhciBsb2FkVGVzdEZvbnRJZCA9ICdsdCcgKyBEYXRlLm5vdygpICsgdGhpcy5sb2FkVGVzdEZvbnRJZCsrOwogICAgICAvLyBDaHJvbWl1bSBzZWVtcyB0byBjYWNoZSBmb250cyBiYXNlZCBvbiBhIGhhc2ggb2YgdGhlIGFjdHVhbCBmb250IGRhdGEsCiAgICAgIC8vIHNvIHRoZSBmb250IG11c3QgYmUgbW9kaWZpZWQgZm9yIGVhY2ggbG9hZCB0ZXN0IGVsc2UgaXQgd2lsbCBhcHBlYXIgdG8KICAgICAgLy8gYmUgbG9hZGVkIGFscmVhZHkuCiAgICAgIC8vIFRPRE86IFRoaXMgY291bGQgbWF5YmUgYmUgbWFkZSBmYXN0ZXIgYnkgYXZvaWRpbmcgdGhlIGJ0b2Egb2YgdGhlIGZ1bGwKICAgICAgLy8gZm9udCBieSBzcGxpdHRpbmcgaXQgaW4gY2h1bmtzIGJlZm9yZSBoYW5kIGFuZCBwYWRkaW5nIHRoZSBmb250IGlkLgogICAgICB2YXIgZGF0YSA9IHRoaXMubG9hZFRlc3RGb250OwogICAgICB2YXIgQ09NTUVOVF9PRkZTRVQgPSA5NzY7IC8vIGhhcyB0byBiZSBvbiA0IGJ5dGUgYm91bmRhcnkgKGZvciBjaGVja3N1bSkKICAgICAgZGF0YSA9IHNwbGljZVN0cmluZyhkYXRhLCBDT01NRU5UX09GRlNFVCwgbG9hZFRlc3RGb250SWQubGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRUZXN0Rm9udElkKTsKICAgICAgLy8gQ0ZGIGNoZWNrc3VtIGlzIGltcG9ydGFudCBmb3IgSUUsIGFkanVzdGluZyBpdAogICAgICB2YXIgQ0ZGX0NIRUNLU1VNX09GRlNFVCA9IDE2OwogICAgICB2YXIgWFhYWF9WQUxVRSA9IDB4NTg1ODU4NTg7IC8vIHRoZSAiY29tbWVudCIgZmlsbGVkIHdpdGggJ1gnCiAgICAgIHZhciBjaGVja3N1bSA9IGludDMyKGRhdGEsIENGRl9DSEVDS1NVTV9PRkZTRVQpOwogICAgICBmb3IgKGkgPSAwLCBpaSA9IGxvYWRUZXN0Rm9udElkLmxlbmd0aCAtIDM7IGkgPCBpaTsgaSArPSA0KSB7CiAgICAgICAgY2hlY2tzdW0gPSAoY2hlY2tzdW0gLSBYWFhYX1ZBTFVFICsgaW50MzIobG9hZFRlc3RGb250SWQsIGkpKSB8IDA7CiAgICAgIH0KICAgICAgaWYgKGkgPCBsb2FkVGVzdEZvbnRJZC5sZW5ndGgpIHsgLy8gYWxpZ24gdG8gNCBieXRlcyBib3VuZGFyeQogICAgICAgIGNoZWNrc3VtID0gKGNoZWNrc3VtIC0gWFhYWF9WQUxVRSArCiAgICAgICAgICAgICAgICAgICAgaW50MzIobG9hZFRlc3RGb250SWQgKyAnWFhYJywgaSkpIHwgMDsKICAgICAgfQogICAgICBkYXRhID0gc3BsaWNlU3RyaW5nKGRhdGEsIENGRl9DSEVDS1NVTV9PRkZTRVQsIDQsIHN0cmluZzMyKGNoZWNrc3VtKSk7CgogICAgICB2YXIgdXJsID0gJ3VybChkYXRhOmZvbnQvb3BlbnR5cGU7YmFzZTY0LCcgKyBidG9hKGRhdGEpICsgJyk7JzsKICAgICAgdmFyIHJ1bGUgPSAnQGZvbnQtZmFjZSB7IGZvbnQtZmFtaWx5OiInICsgbG9hZFRlc3RGb250SWQgKyAnIjtzcmM6JyArCiAgICAgICAgICAgICAgICAgdXJsICsgJ30nOwogICAgICBGb250TG9hZGVyLmluc2VydFJ1bGUocnVsZSk7CgogICAgICB2YXIgbmFtZXMgPSBbXTsKICAgICAgZm9yIChpID0gMCwgaWkgPSBmb250cy5sZW5ndGg7IGkgPCBpaTsgaSsrKSB7CiAgICAgICAgbmFtZXMucHVzaChmb250c1tpXS5sb2FkZWROYW1lKTsKICAgICAgfQogICAgICBuYW1lcy5wdXNoKGxvYWRUZXN0Rm9udElkKTsKCiAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgZGl2LnNldEF0dHJpYnV0ZSgnc3R5bGUnLAogICAgICAgICAgICAgICAgICAgICAgICd2aXNpYmlsaXR5OiBoaWRkZW47JyArCiAgICAgICAgICAgICAgICAgICAgICAgJ3dpZHRoOiAxMHB4OyBoZWlnaHQ6IDEwcHg7JyArCiAgICAgICAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwcHg7IGxlZnQ6IDBweDsnKTsKICAgICAgZm9yIChpID0gMCwgaWkgPSBuYW1lcy5sZW5ndGg7IGkgPCBpaTsgKytpKSB7CiAgICAgICAgdmFyIHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7CiAgICAgICAgc3Bhbi50ZXh0Q29udGVudCA9ICdIaSc7CiAgICAgICAgc3Bhbi5zdHlsZS5mb250RmFtaWx5ID0gbmFtZXNbaV07CiAgICAgICAgZGl2LmFwcGVuZENoaWxkKHNwYW4pOwogICAgICB9CiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTsKCiAgICAgIGlzRm9udFJlYWR5KGxvYWRUZXN0Rm9udElkLCBmdW5jdGlvbigpIHsKICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRpdik7CiAgICAgICAgcmVxdWVzdC5jb21wbGV0ZSgpOwogICAgICB9KTsKICAgICAgLyoqIEhhY2sgZW5kICovCiAgfQovLyNlbHNlCi8vYmluZDogZnVuY3Rpb24gZm9udExvYWRlckJpbmQoZm9udHMsIGNhbGxiYWNrKSB7Ci8vICBhc3NlcnQoIWlzV29ya2VyLCAnYmluZCgpIHNoYWxsIGJlIGNhbGxlZCBmcm9tIG1haW4gdGhyZWFkJyk7Ci8vCi8vICBmb3IgKHZhciBpID0gMCwgaWkgPSBmb250cy5sZW5ndGg7IGkgPCBpaTsgaSsrKSB7Ci8vICAgIHZhciBmb250ID0gZm9udHNbaV07Ci8vICAgIGlmIChmb250LmF0dGFjaGVkKSB7Ci8vICAgICAgY29udGludWU7Ci8vICAgIH0KLy8KLy8gICAgZm9udC5hdHRhY2hlZCA9IHRydWU7Ci8vICAgIGZvbnQuYmluZERPTSgpCi8vICB9Ci8vCi8vICBzZXRUaW1lb3V0KGNhbGxiYWNrKTsKLy99Ci8vI2VuZGlmCn07Cgp2YXIgRm9udEZhY2VPYmplY3QgPSAoZnVuY3Rpb24gRm9udEZhY2VPYmplY3RDbG9zdXJlKCkgewogIGZ1bmN0aW9uIEZvbnRGYWNlT2JqZWN0KG5hbWUsIGZpbGUsIHByb3BlcnRpZXMpIHsKICAgIHRoaXMuY29tcGlsZWRHbHlwaHMgPSB7fTsKICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKSB7CiAgICAgIC8vIGltcG9ydGluZyB0cmFuc2xhdGVkIGRhdGEKICAgICAgdmFyIGRhdGEgPSBhcmd1bWVudHNbMF07CiAgICAgIGZvciAodmFyIGkgaW4gZGF0YSkgewogICAgICAgIHRoaXNbaV0gPSBkYXRhW2ldOwogICAgICB9CiAgICAgIHJldHVybjsKICAgIH0KICB9CiAgRm9udEZhY2VPYmplY3QucHJvdG90eXBlID0gewovLyNpZiAhKE1PWkNFTlRSQUwpCiAgICBjcmVhdGVOYXRpdmVGb250RmFjZTogZnVuY3Rpb24gRm9udEZhY2VPYmplY3RfY3JlYXRlTmF0aXZlRm9udEZhY2UoKSB7CiAgICAgIGlmICghdGhpcy5kYXRhKSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KCiAgICAgIGlmIChQREZKUy5kaXNhYmxlRm9udEZhY2UpIHsKICAgICAgICB0aGlzLmRpc2FibGVGb250RmFjZSA9IHRydWU7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KCiAgICAgIHZhciBuYXRpdmVGb250RmFjZSA9IG5ldyBGb250RmFjZSh0aGlzLmxvYWRlZE5hbWUsIHRoaXMuZGF0YSwge30pOwoKICAgICAgRm9udExvYWRlci5hZGROYXRpdmVGb250RmFjZShuYXRpdmVGb250RmFjZSk7CgogICAgICBpZiAoUERGSlMucGRmQnVnICYmICdGb250SW5zcGVjdG9yJyBpbiBnbG9iYWxTY29wZSAmJgogICAgICAgICAgZ2xvYmFsU2NvcGVbJ0ZvbnRJbnNwZWN0b3InXS5lbmFibGVkKSB7CiAgICAgICAgZ2xvYmFsU2NvcGVbJ0ZvbnRJbnNwZWN0b3InXS5mb250QWRkZWQodGhpcyk7CiAgICAgIH0KICAgICAgcmV0dXJuIG5hdGl2ZUZvbnRGYWNlOwogICAgfSwKLy8jZW5kaWYKCiAgICBiaW5kRE9NOiBmdW5jdGlvbiBGb250RmFjZU9iamVjdF9iaW5kRE9NKCkgewogICAgICBpZiAoIXRoaXMuZGF0YSkgewogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CgogICAgICBpZiAoUERGSlMuZGlzYWJsZUZvbnRGYWNlKSB7CiAgICAgICAgdGhpcy5kaXNhYmxlRm9udEZhY2UgPSB0cnVlOwogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CgogICAgICB2YXIgZGF0YSA9IGJ5dGVzVG9TdHJpbmcobmV3IFVpbnQ4QXJyYXkodGhpcy5kYXRhKSk7CiAgICAgIHZhciBmb250TmFtZSA9IHRoaXMubG9hZGVkTmFtZTsKCiAgICAgIC8vIEFkZCB0aGUgZm9udC1mYWNlIHJ1bGUgdG8gdGhlIGRvY3VtZW50CiAgICAgIHZhciB1cmwgPSAoJ3VybChkYXRhOicgKyB0aGlzLm1pbWV0eXBlICsgJztiYXNlNjQsJyArCiAgICAgICAgICAgICAgICAgd2luZG93LmJ0b2EoZGF0YSkgKyAnKTsnKTsKICAgICAgdmFyIHJ1bGUgPSAnQGZvbnQtZmFjZSB7IGZvbnQtZmFtaWx5OiInICsgZm9udE5hbWUgKyAnIjtzcmM6JyArIHVybCArICd9JzsKICAgICAgRm9udExvYWRlci5pbnNlcnRSdWxlKHJ1bGUpOwoKICAgICAgaWYgKFBERkpTLnBkZkJ1ZyAmJiAnRm9udEluc3BlY3RvcicgaW4gZ2xvYmFsU2NvcGUgJiYKICAgICAgICAgIGdsb2JhbFNjb3BlWydGb250SW5zcGVjdG9yJ10uZW5hYmxlZCkgewogICAgICAgIGdsb2JhbFNjb3BlWydGb250SW5zcGVjdG9yJ10uZm9udEFkZGVkKHRoaXMsIHVybCk7CiAgICAgIH0KCiAgICAgIHJldHVybiBydWxlOwogICAgfSwKCiAgICBnZXRQYXRoR2VuZXJhdG9yOiBmdW5jdGlvbiBGb250TG9hZGVyX2dldFBhdGhHZW5lcmF0b3Iob2JqcywgY2hhcmFjdGVyKSB7CiAgICAgIGlmICghKGNoYXJhY3RlciBpbiB0aGlzLmNvbXBpbGVkR2x5cGhzKSkgewogICAgICAgIHZhciBqcyA9IG9ianMuZ2V0KHRoaXMubG9hZGVkTmFtZSArICdfcGF0aF8nICsgY2hhcmFjdGVyKTsKICAgICAgICAvKmpzaGludCAtVzA1NCAqLwogICAgICAgIHRoaXMuY29tcGlsZWRHbHlwaHNbY2hhcmFjdGVyXSA9IG5ldyBGdW5jdGlvbignYycsICdzaXplJywganMpOwogICAgICB9CiAgICAgIHJldHVybiB0aGlzLmNvbXBpbGVkR2x5cGhzW2NoYXJhY3Rlcl07CiAgICB9CiAgfTsKICByZXR1cm4gRm9udEZhY2VPYmplY3Q7Cn0pKCk7CgoKdmFyIEFOTk9UX01JTl9TSVpFID0gMTA7IC8vIHB4Cgp2YXIgQW5ub3RhdGlvblV0aWxzID0gKGZ1bmN0aW9uIEFubm90YXRpb25VdGlsc0Nsb3N1cmUoKSB7CiAgLy8gVE9ETyhtYWNrKTogVGhpcyBkdXBlcyBzb21lIG9mIHRoZSBsb2dpYyBpbiBDYW52YXNHcmFwaGljcy5zZXRGb250KCkKICBmdW5jdGlvbiBzZXRUZXh0U3R5bGVzKGVsZW1lbnQsIGl0ZW0sIGZvbnRPYmopIHsKCiAgICB2YXIgc3R5bGUgPSBlbGVtZW50LnN0eWxlOwogICAgc3R5bGUuZm9udFNpemUgPSBpdGVtLmZvbnRTaXplICsgJ3B4JzsKICAgIHN0eWxlLmRpcmVjdGlvbiA9IGl0ZW0uZm9udERpcmVjdGlvbiA8IDAgPyAncnRsJzogJ2x0cic7CgogICAgaWYgKCFmb250T2JqKSB7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICBzdHlsZS5mb250V2VpZ2h0ID0gZm9udE9iai5ibGFjayA/CiAgICAgIChmb250T2JqLmJvbGQgPyAnYm9sZGVyJyA6ICdib2xkJykgOgogICAgICAoZm9udE9iai5ib2xkID8gJ2JvbGQnIDogJ25vcm1hbCcpOwogICAgc3R5bGUuZm9udFN0eWxlID0gZm9udE9iai5pdGFsaWMgPyAnaXRhbGljJyA6ICdub3JtYWwnOwoKICAgIHZhciBmb250TmFtZSA9IGZvbnRPYmoubG9hZGVkTmFtZTsKICAgIHZhciBmb250RmFtaWx5ID0gZm9udE5hbWUgPyAnIicgKyBmb250TmFtZSArICciLCAnIDogJyc7CiAgICAvLyBVc2UgYSByZWFzb25hYmxlIGRlZmF1bHQgZm9udCBpZiB0aGUgZm9udCBkb2Vzbid0IHNwZWNpZnkgYSBmYWxsYmFjawogICAgdmFyIGZhbGxiYWNrTmFtZSA9IGZvbnRPYmouZmFsbGJhY2tOYW1lIHx8ICdIZWx2ZXRpY2EsIHNhbnMtc2VyaWYnOwogICAgc3R5bGUuZm9udEZhbWlseSA9IGZvbnRGYW1pbHkgKyBmYWxsYmFja05hbWU7CiAgfQoKICBmdW5jdGlvbiBpbml0Q29udGFpbmVyKGl0ZW0sIGRyYXdCb3JkZXIpIHsKICAgIHZhciBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzZWN0aW9uJyk7CiAgICB2YXIgY3N0eWxlID0gY29udGFpbmVyLnN0eWxlOwogICAgdmFyIHdpZHRoID0gaXRlbS5yZWN0WzJdIC0gaXRlbS5yZWN0WzBdOwogICAgdmFyIGhlaWdodCA9IGl0ZW0ucmVjdFszXSAtIGl0ZW0ucmVjdFsxXTsKCiAgICB2YXIgYldpZHRoID0gaXRlbS5ib3JkZXJXaWR0aCB8fCAwOwogICAgaWYgKGJXaWR0aCkgewogICAgICB3aWR0aCA9IHdpZHRoIC0gMiAqIGJXaWR0aDsKICAgICAgaGVpZ2h0ID0gaGVpZ2h0IC0gMiAqIGJXaWR0aDsKICAgICAgY3N0eWxlLmJvcmRlcldpZHRoID0gYldpZHRoICsgJ3B4JzsKICAgICAgdmFyIGNvbG9yID0gaXRlbS5jb2xvcjsKICAgICAgaWYgKGRyYXdCb3JkZXIgJiYgY29sb3IpIHsKICAgICAgICBjc3R5bGUuYm9yZGVyU3R5bGUgPSAnc29saWQnOwogICAgICAgIGNzdHlsZS5ib3JkZXJDb2xvciA9IFV0aWwubWFrZUNzc1JnYihNYXRoLnJvdW5kKGNvbG9yWzBdICogMjU1KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5yb3VuZChjb2xvclsxXSAqIDI1NSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGgucm91bmQoY29sb3JbMl0gKiAyNTUpKTsKICAgICAgfQogICAgfQogICAgY3N0eWxlLndpZHRoID0gd2lkdGggKyAncHgnOwogICAgY3N0eWxlLmhlaWdodCA9IGhlaWdodCArICdweCc7CiAgICByZXR1cm4gY29udGFpbmVyOwogIH0KCiAgZnVuY3Rpb24gZ2V0SHRtbEVsZW1lbnRGb3JUZXh0V2lkZ2V0QW5ub3RhdGlvbihpdGVtLCBjb21tb25PYmpzKSB7CiAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgdmFyIHdpZHRoID0gaXRlbS5yZWN0WzJdIC0gaXRlbS5yZWN0WzBdOwogICAgdmFyIGhlaWdodCA9IGl0ZW0ucmVjdFszXSAtIGl0ZW0ucmVjdFsxXTsKICAgIGVsZW1lbnQuc3R5bGUud2lkdGggPSB3aWR0aCArICdweCc7CiAgICBlbGVtZW50LnN0eWxlLmhlaWdodCA9IGhlaWdodCArICdweCc7CiAgICBlbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAndGFibGUnOwoKICAgIHZhciBjb250ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICBjb250ZW50LnRleHRDb250ZW50ID0gaXRlbS5maWVsZFZhbHVlOwogICAgdmFyIHRleHRBbGlnbm1lbnQgPSBpdGVtLnRleHRBbGlnbm1lbnQ7CiAgICBjb250ZW50LnN0eWxlLnRleHRBbGlnbiA9IFsnbGVmdCcsICdjZW50ZXInLCAncmlnaHQnXVt0ZXh0QWxpZ25tZW50XTsKICAgIGNvbnRlbnQuc3R5bGUudmVydGljYWxBbGlnbiA9ICdtaWRkbGUnOwogICAgY29udGVudC5zdHlsZS5kaXNwbGF5ID0gJ3RhYmxlLWNlbGwnOwoKICAgIHZhciBmb250T2JqID0gaXRlbS5mb250UmVmTmFtZSA/CiAgICAgIGNvbW1vbk9ianMuZ2V0RGF0YShpdGVtLmZvbnRSZWZOYW1lKSA6IG51bGw7CiAgICBzZXRUZXh0U3R5bGVzKGNvbnRlbnQsIGl0ZW0sIGZvbnRPYmopOwoKICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQoY29udGVudCk7CgogICAgcmV0dXJuIGVsZW1lbnQ7CiAgfQoKICBmdW5jdGlvbiBnZXRIdG1sRWxlbWVudEZvclRleHRBbm5vdGF0aW9uKGl0ZW0pIHsKICAgIHZhciByZWN0ID0gaXRlbS5yZWN0OwoKICAgIC8vIHNhbml0eSBjaGVjayBiZWNhdXNlIG9mIE9Pby1nZW5lcmF0ZWQgUERGcwogICAgaWYgKChyZWN0WzNdIC0gcmVjdFsxXSkgPCBBTk5PVF9NSU5fU0laRSkgewogICAgICByZWN0WzNdID0gcmVjdFsxXSArIEFOTk9UX01JTl9TSVpFOwogICAgfQogICAgaWYgKChyZWN0WzJdIC0gcmVjdFswXSkgPCBBTk5PVF9NSU5fU0laRSkgewogICAgICByZWN0WzJdID0gcmVjdFswXSArIChyZWN0WzNdIC0gcmVjdFsxXSk7IC8vIG1ha2UgaXQgc3F1YXJlCiAgICB9CgogICAgdmFyIGNvbnRhaW5lciA9IGluaXRDb250YWluZXIoaXRlbSwgZmFsc2UpOwogICAgY29udGFpbmVyLmNsYXNzTmFtZSA9ICdhbm5vdFRleHQnOwoKICAgIHZhciBpbWFnZSAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbWcnKTsKICAgIGltYWdlLnN0eWxlLmhlaWdodCA9IGNvbnRhaW5lci5zdHlsZS5oZWlnaHQ7CiAgICBpbWFnZS5zdHlsZS53aWR0aCA9IGNvbnRhaW5lci5zdHlsZS53aWR0aDsKICAgIHZhciBpY29uTmFtZSA9IGl0ZW0ubmFtZTsKICAgIGltYWdlLnNyYyA9IFBERkpTLmltYWdlUmVzb3VyY2VzUGF0aCArICdhbm5vdGF0aW9uLScgKwogICAgICBpY29uTmFtZS50b0xvd2VyQ2FzZSgpICsgJy5zdmcnOwogICAgaW1hZ2UuYWx0ID0gJ1t7e3R5cGV9fSBBbm5vdGF0aW9uXSc7CiAgICBpbWFnZS5kYXRhc2V0LmwxMG5JZCA9ICd0ZXh0X2Fubm90YXRpb25fdHlwZSc7CiAgICBpbWFnZS5kYXRhc2V0LmwxMG5BcmdzID0gSlNPTi5zdHJpbmdpZnkoe3R5cGU6IGljb25OYW1lfSk7CgogICAgdmFyIGNvbnRlbnRXcmFwcGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICBjb250ZW50V3JhcHBlci5jbGFzc05hbWUgPSAnYW5ub3RUZXh0Q29udGVudFdyYXBwZXInOwogICAgY29udGVudFdyYXBwZXIuc3R5bGUubGVmdCA9IE1hdGguZmxvb3IocmVjdFsyXSAtIHJlY3RbMF0gKyA1KSArICdweCc7CiAgICBjb250ZW50V3JhcHBlci5zdHlsZS50b3AgPSAnLTEwcHgnOwoKICAgIHZhciBjb250ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICBjb250ZW50LmNsYXNzTmFtZSA9ICdhbm5vdFRleHRDb250ZW50JzsKICAgIGNvbnRlbnQuc2V0QXR0cmlidXRlKCdoaWRkZW4nLCB0cnVlKTsKCiAgICB2YXIgaSwgaWk7CiAgICBpZiAoaXRlbS5oYXNCZ0NvbG9yKSB7CiAgICAgIHZhciBjb2xvciA9IGl0ZW0uY29sb3I7CgogICAgICAvLyBFbmxpZ2h0ZW4gdGhlIGNvbG9yICg3MCUpCiAgICAgIHZhciBCQUNLR1JPVU5EX0VOTElHSFQgPSAwLjc7CiAgICAgIHZhciByID0gQkFDS0dST1VORF9FTkxJR0hUICogKDEuMCAtIGNvbG9yWzBdKSArIGNvbG9yWzBdOwogICAgICB2YXIgZyA9IEJBQ0tHUk9VTkRfRU5MSUdIVCAqICgxLjAgLSBjb2xvclsxXSkgKyBjb2xvclsxXTsKICAgICAgdmFyIGIgPSBCQUNLR1JPVU5EX0VOTElHSFQgKiAoMS4wIC0gY29sb3JbMl0pICsgY29sb3JbMl07CiAgICAgIGNvbnRlbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gVXRpbC5tYWtlQ3NzUmdiKChyICogMjU1KSB8IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnICogMjU1KSB8IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiICogMjU1KSB8IDApOwogICAgfQoKICAgIHZhciB0aXRsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2gxJyk7CiAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTsKICAgIHRpdGxlLnRleHRDb250ZW50ID0gaXRlbS50aXRsZTsKCiAgICBpZiAoIWl0ZW0uY29udGVudCAmJiAhaXRlbS50aXRsZSkgewogICAgICBjb250ZW50LnNldEF0dHJpYnV0ZSgnaGlkZGVuJywgdHJ1ZSk7CiAgICB9IGVsc2UgewogICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKICAgICAgdmFyIGxpbmVzID0gaXRlbS5jb250ZW50LnNwbGl0KC8oPzpcclxuP3xcbikvKTsKICAgICAgZm9yIChpID0gMCwgaWkgPSBsaW5lcy5sZW5ndGg7IGkgPCBpaTsgKytpKSB7CiAgICAgICAgdmFyIGxpbmUgPSBsaW5lc1tpXTsKICAgICAgICBlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGxpbmUpKTsKICAgICAgICBpZiAoaSA8IChpaSAtIDEpKSB7CiAgICAgICAgICBlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2JyJykpOwogICAgICAgIH0KICAgICAgfQogICAgICB0ZXh0LmFwcGVuZENoaWxkKGUpOwoKICAgICAgdmFyIHBpbm5lZCA9IGZhbHNlOwoKICAgICAgdmFyIHNob3dBbm5vdGF0aW9uID0gZnVuY3Rpb24gc2hvd0Fubm90YXRpb24ocGluKSB7CiAgICAgICAgaWYgKHBpbikgewogICAgICAgICAgcGlubmVkID0gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgaWYgKGNvbnRlbnQuaGFzQXR0cmlidXRlKCdoaWRkZW4nKSkgewogICAgICAgICAgY29udGFpbmVyLnN0eWxlLnpJbmRleCArPSAxOwogICAgICAgICAgY29udGVudC5yZW1vdmVBdHRyaWJ1dGUoJ2hpZGRlbicpOwogICAgICAgIH0KICAgICAgfTsKCiAgICAgIHZhciBoaWRlQW5ub3RhdGlvbiA9IGZ1bmN0aW9uIGhpZGVBbm5vdGF0aW9uKHVucGluKSB7CiAgICAgICAgaWYgKHVucGluKSB7CiAgICAgICAgICBwaW5uZWQgPSBmYWxzZTsKICAgICAgICB9CiAgICAgICAgaWYgKCFjb250ZW50Lmhhc0F0dHJpYnV0ZSgnaGlkZGVuJykgJiYgIXBpbm5lZCkgewogICAgICAgICAgY29udGFpbmVyLnN0eWxlLnpJbmRleCAtPSAxOwogICAgICAgICAgY29udGVudC5zZXRBdHRyaWJ1dGUoJ2hpZGRlbicsIHRydWUpOwogICAgICAgIH0KICAgICAgfTsKCiAgICAgIHZhciB0b2dnbGVBbm5vdGF0aW9uID0gZnVuY3Rpb24gdG9nZ2xlQW5ub3RhdGlvbigpIHsKICAgICAgICBpZiAocGlubmVkKSB7CiAgICAgICAgICBoaWRlQW5ub3RhdGlvbih0cnVlKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgc2hvd0Fubm90YXRpb24odHJ1ZSk7CiAgICAgICAgfQogICAgICB9OwoKICAgICAgaW1hZ2UuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiBpbWFnZV9jbGlja0hhbmRsZXIoKSB7CiAgICAgICAgdG9nZ2xlQW5ub3RhdGlvbigpOwogICAgICB9LCBmYWxzZSk7CiAgICAgIGltYWdlLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlb3ZlcicsIGZ1bmN0aW9uIGltYWdlX21vdXNlT3ZlckhhbmRsZXIoKSB7CiAgICAgICAgc2hvd0Fubm90YXRpb24oKTsKICAgICAgfSwgZmFsc2UpOwogICAgICBpbWFnZS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW91dCcsIGZ1bmN0aW9uIGltYWdlX21vdXNlT3V0SGFuZGxlcigpIHsKICAgICAgICBoaWRlQW5ub3RhdGlvbigpOwogICAgICB9LCBmYWxzZSk7CgogICAgICBjb250ZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gY29udGVudF9jbGlja0hhbmRsZXIoKSB7CiAgICAgICAgaGlkZUFubm90YXRpb24odHJ1ZSk7CiAgICAgIH0sIGZhbHNlKTsKICAgIH0KCiAgICBjb250ZW50LmFwcGVuZENoaWxkKHRpdGxlKTsKICAgIGNvbnRlbnQuYXBwZW5kQ2hpbGQodGV4dCk7CiAgICBjb250ZW50V3JhcHBlci5hcHBlbmRDaGlsZChjb250ZW50KTsKICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChpbWFnZSk7CiAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoY29udGVudFdyYXBwZXIpOwoKICAgIHJldHVybiBjb250YWluZXI7CiAgfQoKICBmdW5jdGlvbiBnZXRIdG1sRWxlbWVudEZvckxpbmtBbm5vdGF0aW9uKGl0ZW0pIHsKICAgIHZhciBjb250YWluZXIgPSBpbml0Q29udGFpbmVyKGl0ZW0sIHRydWUpOwogICAgY29udGFpbmVyLmNsYXNzTmFtZSA9ICdhbm5vdExpbmsnOwoKICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOwogICAgbGluay5ocmVmID0gbGluay50aXRsZSA9IGl0ZW0udXJsIHx8ICcnOwogICAgaWYgKGl0ZW0udXJsICYmIFBERkpTLm9wZW5FeHRlcm5hbExpbmtzSW5OZXdXaW5kb3cpIHsKICAgICAgbGluay50YXJnZXQgPSAnX2JsYW5rJzsKICAgIH0KCiAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQobGluayk7CgogICAgcmV0dXJuIGNvbnRhaW5lcjsKICB9CgogIGZ1bmN0aW9uIGdldEh0bWxFbGVtZW50KGRhdGEsIG9ianMpIHsKICAgIHN3aXRjaCAoZGF0YS5hbm5vdGF0aW9uVHlwZSkgewogICAgICBjYXNlIEFubm90YXRpb25UeXBlLldJREdFVDoKICAgICAgICByZXR1cm4gZ2V0SHRtbEVsZW1lbnRGb3JUZXh0V2lkZ2V0QW5ub3RhdGlvbihkYXRhLCBvYmpzKTsKICAgICAgY2FzZSBBbm5vdGF0aW9uVHlwZS5URVhUOgogICAgICAgIHJldHVybiBnZXRIdG1sRWxlbWVudEZvclRleHRBbm5vdGF0aW9uKGRhdGEpOwogICAgICBjYXNlIEFubm90YXRpb25UeXBlLkxJTks6CiAgICAgICAgcmV0dXJuIGdldEh0bWxFbGVtZW50Rm9yTGlua0Fubm90YXRpb24oZGF0YSk7CiAgICAgIGRlZmF1bHQ6CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBhbm5vdGF0aW9uVHlwZTogJyArIGRhdGEuYW5ub3RhdGlvblR5cGUpOwogICAgfQogIH0KCiAgcmV0dXJuIHsKICAgIGdldEh0bWxFbGVtZW50OiBnZXRIdG1sRWxlbWVudAogIH07Cn0pKCk7ClBERkpTLkFubm90YXRpb25VdGlscyA9IEFubm90YXRpb25VdGlsczsKCgovLyNpZiAoR0VORVJJQyB8fCBTSU5HTEVfRklMRSkKdmFyIFNWR19ERUZBVUxUUyA9IHsKICBmb250U3R5bGU6ICdub3JtYWwnLAogIGZvbnRXZWlnaHQ6ICdub3JtYWwnLAogIGZpbGxDb2xvcjogJyMwMDAwMDAnCn07Cgp2YXIgY29udmVydEltZ0RhdGFUb1BuZyA9IChmdW5jdGlvbiBjb252ZXJ0SW1nRGF0YVRvUG5nQ2xvc3VyZSgpIHsKICB2YXIgUE5HX0hFQURFUiA9CiAgICBuZXcgVWludDhBcnJheShbMHg4OSwgMHg1MCwgMHg0ZSwgMHg0NywgMHgwZCwgMHgwYSwgMHgxYSwgMHgwYV0pOwoKICB2YXIgQ0hVTktfV1JBUFBFUl9TSVpFID0gMTI7CgogIHZhciBjcmNUYWJsZSA9IG5ldyBJbnQzMkFycmF5KDI1Nik7CiAgZm9yICh2YXIgaSA9IDA7IGkgPCAyNTY7IGkrKykgewogICAgdmFyIGMgPSBpOwogICAgZm9yICh2YXIgaCA9IDA7IGggPCA4OyBoKyspIHsKICAgICAgaWYgKGMgJiAxKSB7CiAgICAgICAgYyA9IDB4ZWRCODgzMjAgXiAoKGMgPj4gMSkgJiAweDdmZmZmZmZmKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBjID0gKGMgPj4gMSkgJiAweDdmZmZmZmZmOwogICAgICB9CiAgICB9CiAgICBjcmNUYWJsZVtpXSA9IGM7CiAgfQoKICBmdW5jdGlvbiBjcmMzMihkYXRhLCBzdGFydCwgZW5kKSB7CiAgICB2YXIgY3JjID0gLTE7CiAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkrKykgewogICAgICB2YXIgYSA9IChjcmMgXiBkYXRhW2ldKSAmIDB4ZmY7CiAgICAgIHZhciBiID0gY3JjVGFibGVbYV07CiAgICAgIGNyYyA9IChjcmMgPj4+IDgpIF4gYjsKICAgIH0KICAgIHJldHVybiBjcmMgXiAtMTsKICB9CgogIGZ1bmN0aW9uIHdyaXRlUG5nQ2h1bmsodHlwZSwgYm9keSwgZGF0YSwgb2Zmc2V0KSB7CiAgICB2YXIgcCA9IG9mZnNldDsKICAgIHZhciBsZW4gPSBib2R5Lmxlbmd0aDsKCiAgICBkYXRhW3BdID0gbGVuID4+IDI0ICYgMHhmZjsKICAgIGRhdGFbcCArIDFdID0gbGVuID4+IDE2ICYgMHhmZjsKICAgIGRhdGFbcCArIDJdID0gbGVuID4+IDggJiAweGZmOwogICAgZGF0YVtwICsgM10gPSBsZW4gJiAweGZmOwogICAgcCArPSA0OwoKICAgIGRhdGFbcF0gPSB0eXBlLmNoYXJDb2RlQXQoMCkgJiAweGZmOwogICAgZGF0YVtwICsgMV0gPSB0eXBlLmNoYXJDb2RlQXQoMSkgJiAweGZmOwogICAgZGF0YVtwICsgMl0gPSB0eXBlLmNoYXJDb2RlQXQoMikgJiAweGZmOwogICAgZGF0YVtwICsgM10gPSB0eXBlLmNoYXJDb2RlQXQoMykgJiAweGZmOwogICAgcCArPSA0OwoKICAgIGRhdGEuc2V0KGJvZHksIHApOwogICAgcCArPSBib2R5Lmxlbmd0aDsKCiAgICB2YXIgY3JjID0gY3JjMzIoZGF0YSwgb2Zmc2V0ICsgNCwgcCk7CgogICAgZGF0YVtwXSA9IGNyYyA+PiAyNCAmIDB4ZmY7CiAgICBkYXRhW3AgKyAxXSA9IGNyYyA+PiAxNiAmIDB4ZmY7CiAgICBkYXRhW3AgKyAyXSA9IGNyYyA+PiA4ICYgMHhmZjsKICAgIGRhdGFbcCArIDNdID0gY3JjICYgMHhmZjsKICB9CgogIGZ1bmN0aW9uIGFkbGVyMzIoZGF0YSwgc3RhcnQsIGVuZCkgewogICAgdmFyIGEgPSAxOwogICAgdmFyIGIgPSAwOwogICAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHsKICAgICAgYSA9IChhICsgKGRhdGFbaV0gJiAweGZmKSkgJSA2NTUyMTsKICAgICAgYiA9IChiICsgYSkgJSA2NTUyMTsKICAgIH0KICAgIHJldHVybiAoYiA8PCAxNikgfCBhOwogIH0KCiAgZnVuY3Rpb24gZW5jb2RlKGltZ0RhdGEsIGtpbmQpIHsKICAgIHZhciB3aWR0aCA9IGltZ0RhdGEud2lkdGg7CiAgICB2YXIgaGVpZ2h0ID0gaW1nRGF0YS5oZWlnaHQ7CiAgICB2YXIgYml0RGVwdGgsIGNvbG9yVHlwZSwgbGluZVNpemU7CiAgICB2YXIgYnl0ZXMgPSBpbWdEYXRhLmRhdGE7CgogICAgc3dpdGNoIChraW5kKSB7CiAgICAgIGNhc2UgSW1hZ2VLaW5kLkdSQVlTQ0FMRV8xQlBQOgogICAgICAgIGNvbG9yVHlwZSA9IDA7CiAgICAgICAgYml0RGVwdGggPSAxOwogICAgICAgIGxpbmVTaXplID0gKHdpZHRoICsgNykgPj4gMzsKICAgICAgICBicmVhazsKICAgICAgY2FzZSBJbWFnZUtpbmQuUkdCXzI0QlBQOgogICAgICAgIGNvbG9yVHlwZSA9IDI7CiAgICAgICAgYml0RGVwdGggPSA4OwogICAgICAgIGxpbmVTaXplID0gd2lkdGggKiAzOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlIEltYWdlS2luZC5SR0JBXzMyQlBQOgogICAgICAgIGNvbG9yVHlwZSA9IDY7CiAgICAgICAgYml0RGVwdGggPSA4OwogICAgICAgIGxpbmVTaXplID0gd2lkdGggKiA0OwogICAgICAgIGJyZWFrOwogICAgICBkZWZhdWx0OgogICAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBmb3JtYXQnKTsKICAgIH0KCiAgICAvLyBwcmVmaXggZXZlcnkgcm93IHdpdGggcHJlZGljdG9yIDAKICAgIHZhciBsaXRlcmFscyA9IG5ldyBVaW50OEFycmF5KCgxICsgbGluZVNpemUpICogaGVpZ2h0KTsKICAgIHZhciBvZmZzZXRMaXRlcmFscyA9IDAsIG9mZnNldEJ5dGVzID0gMDsKICAgIHZhciB5LCBpOwogICAgZm9yICh5ID0gMDsgeSA8IGhlaWdodDsgKyt5KSB7CiAgICAgIGxpdGVyYWxzW29mZnNldExpdGVyYWxzKytdID0gMDsgLy8gbm8gcHJlZGljdGlvbgogICAgICBsaXRlcmFscy5zZXQoYnl0ZXMuc3ViYXJyYXkob2Zmc2V0Qnl0ZXMsIG9mZnNldEJ5dGVzICsgbGluZVNpemUpLAogICAgICAgICAgICAgICAgICAgb2Zmc2V0TGl0ZXJhbHMpOwogICAgICBvZmZzZXRCeXRlcyArPSBsaW5lU2l6ZTsKICAgICAgb2Zmc2V0TGl0ZXJhbHMgKz0gbGluZVNpemU7CiAgICB9CgogICAgaWYgKGtpbmQgPT09IEltYWdlS2luZC5HUkFZU0NBTEVfMUJQUCkgewogICAgICAvLyBpbnZlcnRpbmcgZm9yIEIvVwogICAgICBvZmZzZXRMaXRlcmFscyA9IDA7CiAgICAgIGZvciAoeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykgewogICAgICAgIG9mZnNldExpdGVyYWxzKys7IC8vIHNraXBwaW5nIHByZWRpY3RvcgogICAgICAgIGZvciAoaSA9IDA7IGkgPCBsaW5lU2l6ZTsgaSsrKSB7CiAgICAgICAgICBsaXRlcmFsc1tvZmZzZXRMaXRlcmFscysrXSBePSAweEZGOwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIHZhciBpaGRyID0gbmV3IFVpbnQ4QXJyYXkoWwogICAgICB3aWR0aCA+PiAyNCAmIDB4ZmYsCiAgICAgIHdpZHRoID4+IDE2ICYgMHhmZiwKICAgICAgd2lkdGggPj4gOCAmIDB4ZmYsCiAgICAgIHdpZHRoICYgMHhmZiwKICAgICAgaGVpZ2h0ID4+IDI0ICYgMHhmZiwKICAgICAgaGVpZ2h0ID4+IDE2ICYgMHhmZiwKICAgICAgaGVpZ2h0ID4+IDggJiAweGZmLAogICAgICBoZWlnaHQgJiAweGZmLAogICAgICBiaXREZXB0aCwgLy8gYml0IGRlcHRoCiAgICAgIGNvbG9yVHlwZSwgLy8gY29sb3IgdHlwZQogICAgICAweDAwLCAvLyBjb21wcmVzc2lvbiBtZXRob2QKICAgICAgMHgwMCwgLy8gZmlsdGVyIG1ldGhvZAogICAgICAweDAwIC8vIGludGVybGFjZSBtZXRob2QKICAgIF0pOwoKICAgIHZhciBsZW4gPSBsaXRlcmFscy5sZW5ndGg7CiAgICB2YXIgbWF4QmxvY2tMZW5ndGggPSAweEZGRkY7CgogICAgdmFyIGRlZmxhdGVCbG9ja3MgPSBNYXRoLmNlaWwobGVuIC8gbWF4QmxvY2tMZW5ndGgpOwogICAgdmFyIGlkYXQgPSBuZXcgVWludDhBcnJheSgyICsgbGVuICsgZGVmbGF0ZUJsb2NrcyAqIDUgKyA0KTsKICAgIHZhciBwaSA9IDA7CiAgICBpZGF0W3BpKytdID0gMHg3ODsgLy8gY29tcHJlc3Npb24gbWV0aG9kIGFuZCBmbGFncwogICAgaWRhdFtwaSsrXSA9IDB4OWM7IC8vIGZsYWdzCgogICAgdmFyIHBvcyA9IDA7CiAgICB3aGlsZSAobGVuID4gbWF4QmxvY2tMZW5ndGgpIHsKICAgICAgLy8gd3JpdGluZyBub24tZmluYWwgREVGTEFURSBibG9ja3MgdHlwZSAwIGFuZCBsZW5ndGggb2YgNjU1MzUKICAgICAgaWRhdFtwaSsrXSA9IDB4MDA7CiAgICAgIGlkYXRbcGkrK10gPSAweGZmOwogICAgICBpZGF0W3BpKytdID0gMHhmZjsKICAgICAgaWRhdFtwaSsrXSA9IDB4MDA7CiAgICAgIGlkYXRbcGkrK10gPSAweDAwOwogICAgICBpZGF0LnNldChsaXRlcmFscy5zdWJhcnJheShwb3MsIHBvcyArIG1heEJsb2NrTGVuZ3RoKSwgcGkpOwogICAgICBwaSArPSBtYXhCbG9ja0xlbmd0aDsKICAgICAgcG9zICs9IG1heEJsb2NrTGVuZ3RoOwogICAgICBsZW4gLT0gbWF4QmxvY2tMZW5ndGg7CiAgICB9CgogICAgLy8gd3JpdGluZyBub24tZmluYWwgREVGTEFURSBibG9ja3MgdHlwZSAwCiAgICBpZGF0W3BpKytdID0gMHgwMTsKICAgIGlkYXRbcGkrK10gPSBsZW4gJiAweGZmOwogICAgaWRhdFtwaSsrXSA9IGxlbiA+PiA4ICYgMHhmZjsKICAgIGlkYXRbcGkrK10gPSAofmxlbiAmIDB4ZmZmZikgJiAweGZmOwogICAgaWRhdFtwaSsrXSA9ICh+bGVuICYgMHhmZmZmKSA+PiA4ICYgMHhmZjsKICAgIGlkYXQuc2V0KGxpdGVyYWxzLnN1YmFycmF5KHBvcyksIHBpKTsKICAgIHBpICs9IGxpdGVyYWxzLmxlbmd0aCAtIHBvczsKCiAgICB2YXIgYWRsZXIgPSBhZGxlcjMyKGxpdGVyYWxzLCAwLCBsaXRlcmFscy5sZW5ndGgpOyAvLyBjaGVja3N1bQogICAgaWRhdFtwaSsrXSA9IGFkbGVyID4+IDI0ICYgMHhmZjsKICAgIGlkYXRbcGkrK10gPSBhZGxlciA+PiAxNiAmIDB4ZmY7CiAgICBpZGF0W3BpKytdID0gYWRsZXIgPj4gOCAmIDB4ZmY7CiAgICBpZGF0W3BpKytdID0gYWRsZXIgJiAweGZmOwoKICAgIC8vIFBORyB3aWxsIGNvbnNpc3RzOiBoZWFkZXIsIElIRFIrZGF0YSwgSURBVCtkYXRhLCBhbmQgSUVORC4KICAgIHZhciBwbmdMZW5ndGggPSBQTkdfSEVBREVSLmxlbmd0aCArIChDSFVOS19XUkFQUEVSX1NJWkUgKiAzKSArCiAgICAgICAgICAgICAgICAgICAgaWhkci5sZW5ndGggKyBpZGF0Lmxlbmd0aDsKICAgIHZhciBkYXRhID0gbmV3IFVpbnQ4QXJyYXkocG5nTGVuZ3RoKTsKICAgIHZhciBvZmZzZXQgPSAwOwogICAgZGF0YS5zZXQoUE5HX0hFQURFUiwgb2Zmc2V0KTsKICAgIG9mZnNldCArPSBQTkdfSEVBREVSLmxlbmd0aDsKICAgIHdyaXRlUG5nQ2h1bmsoJ0lIRFInLCBpaGRyLCBkYXRhLCBvZmZzZXQpOwogICAgb2Zmc2V0ICs9IENIVU5LX1dSQVBQRVJfU0laRSArIGloZHIubGVuZ3RoOwogICAgd3JpdGVQbmdDaHVuaygnSURBVEEnLCBpZGF0LCBkYXRhLCBvZmZzZXQpOwogICAgb2Zmc2V0ICs9IENIVU5LX1dSQVBQRVJfU0laRSArIGlkYXQubGVuZ3RoOwogICAgd3JpdGVQbmdDaHVuaygnSUVORCcsIG5ldyBVaW50OEFycmF5KDApLCBkYXRhLCBvZmZzZXQpOwoKICAgIHJldHVybiBQREZKUy5jcmVhdGVPYmplY3RVUkwoZGF0YSwgJ2ltYWdlL3BuZycpOwogIH0KCiAgcmV0dXJuIGZ1bmN0aW9uIGNvbnZlcnRJbWdEYXRhVG9QbmcoaW1nRGF0YSkgewogICAgdmFyIGtpbmQgPSAoaW1nRGF0YS5raW5kID09PSB1bmRlZmluZWQgPwogICAgICAgICAgICAgICAgSW1hZ2VLaW5kLkdSQVlTQ0FMRV8xQlBQIDogaW1nRGF0YS5raW5kKTsKICAgIHJldHVybiBlbmNvZGUoaW1nRGF0YSwga2luZCk7CiAgfTsKfSkoKTsKCnZhciBTVkdFeHRyYVN0YXRlID0gKGZ1bmN0aW9uIFNWR0V4dHJhU3RhdGVDbG9zdXJlKCkgewogIGZ1bmN0aW9uIFNWR0V4dHJhU3RhdGUoKSB7CiAgICB0aGlzLmZvbnRTaXplU2NhbGUgPSAxOwogICAgdGhpcy5mb250V2VpZ2h0ID0gU1ZHX0RFRkFVTFRTLmZvbnRXZWlnaHQ7CiAgICB0aGlzLmZvbnRTaXplID0gMDsKCiAgICB0aGlzLnRleHRNYXRyaXggPSBJREVOVElUWV9NQVRSSVg7CiAgICB0aGlzLmZvbnRNYXRyaXggPSBGT05UX0lERU5USVRZX01BVFJJWDsKICAgIHRoaXMubGVhZGluZyA9IDA7CgogICAgLy8gQ3VycmVudCBwb2ludCAoaW4gdXNlciBjb29yZGluYXRlcykKICAgIHRoaXMueCA9IDA7CiAgICB0aGlzLnkgPSAwOwoKICAgIC8vIFN0YXJ0IG9mIHRleHQgbGluZSAoaW4gdGV4dCBjb29yZGluYXRlcykKICAgIHRoaXMubGluZVggPSAwOwogICAgdGhpcy5saW5lWSA9IDA7CgogICAgLy8gQ2hhcmFjdGVyIGFuZCB3b3JkIHNwYWNpbmcKICAgIHRoaXMuY2hhclNwYWNpbmcgPSAwOwogICAgdGhpcy53b3JkU3BhY2luZyA9IDA7CiAgICB0aGlzLnRleHRIU2NhbGUgPSAxOwogICAgdGhpcy50ZXh0UmlzZSA9IDA7CgogICAgLy8gRGVmYXVsdCBmb3JlZ3JvdW5kIGFuZCBiYWNrZ3JvdW5kIGNvbG9ycwogICAgdGhpcy5maWxsQ29sb3IgPSBTVkdfREVGQVVMVFMuZmlsbENvbG9yOwogICAgdGhpcy5zdHJva2VDb2xvciA9ICcjMDAwMDAwJzsKCiAgICB0aGlzLmZpbGxBbHBoYSA9IDE7CiAgICB0aGlzLnN0cm9rZUFscGhhID0gMTsKICAgIHRoaXMubGluZVdpZHRoID0gMTsKICAgIHRoaXMubGluZUpvaW4gPSAnJzsKICAgIHRoaXMubGluZUNhcCA9ICcnOwogICAgdGhpcy5taXRlckxpbWl0ID0gMDsKCiAgICB0aGlzLmRhc2hBcnJheSA9IFtdOwogICAgdGhpcy5kYXNoUGhhc2UgPSAwOwoKICAgIHRoaXMuZGVwZW5kZW5jaWVzID0gW107CgogICAgLy8gQ2xpcHBpbmcKICAgIHRoaXMuY2xpcElkID0gJyc7CiAgICB0aGlzLnBlbmRpbmdDbGlwID0gZmFsc2U7CgogICAgdGhpcy5tYXNrSWQgPSAnJzsKICB9CgogIFNWR0V4dHJhU3RhdGUucHJvdG90eXBlID0gewogICAgY2xvbmU6IGZ1bmN0aW9uIFNWR0V4dHJhU3RhdGVfY2xvbmUoKSB7CiAgICAgIHJldHVybiBPYmplY3QuY3JlYXRlKHRoaXMpOwogICAgfSwKICAgIHNldEN1cnJlbnRQb2ludDogZnVuY3Rpb24gU1ZHRXh0cmFTdGF0ZV9zZXRDdXJyZW50UG9pbnQoeCwgeSkgewogICAgICB0aGlzLnggPSB4OwogICAgICB0aGlzLnkgPSB5OwogICAgfQogIH07CiAgcmV0dXJuIFNWR0V4dHJhU3RhdGU7Cn0pKCk7Cgp2YXIgU1ZHR3JhcGhpY3MgPSAoZnVuY3Rpb24gU1ZHR3JhcGhpY3NDbG9zdXJlKCkgewogIGZ1bmN0aW9uIGNyZWF0ZVNjcmF0Y2hTVkcod2lkdGgsIGhlaWdodCkgewogICAgdmFyIE5TID0gJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJzsKICAgIHZhciBzdmcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoTlMsICdzdmc6c3ZnJyk7CiAgICBzdmcuc2V0QXR0cmlidXRlTlMobnVsbCwgJ3ZlcnNpb24nLCAnMS4xJyk7CiAgICBzdmcuc2V0QXR0cmlidXRlTlMobnVsbCwgJ3dpZHRoJywgd2lkdGggKyAncHgnKTsKICAgIHN2Zy5zZXRBdHRyaWJ1dGVOUyhudWxsLCAnaGVpZ2h0JywgaGVpZ2h0ICsgJ3B4Jyk7CiAgICBzdmcuc2V0QXR0cmlidXRlTlMobnVsbCwgJ3ZpZXdCb3gnLCAnMCAwICcgKyB3aWR0aCArICcgJyArIGhlaWdodCk7CiAgICByZXR1cm4gc3ZnOwogIH0KCiAgZnVuY3Rpb24gb3BMaXN0VG9UcmVlKG9wTGlzdCkgewogICAgdmFyIG9wVHJlZSA9IFtdOwogICAgdmFyIHRtcCA9IFtdOwogICAgdmFyIG9wTGlzdExlbiA9IG9wTGlzdC5sZW5ndGg7CgogICAgZm9yICh2YXIgeCA9IDA7IHggPCBvcExpc3RMZW47IHgrKykgewogICAgICBpZiAob3BMaXN0W3hdLmZuID09PSAnc2F2ZScpIHsKICAgICAgICBvcFRyZWUucHVzaCh7J2ZuSWQnOiA5MiwgJ2ZuJzogJ2dyb3VwJywgJ2l0ZW1zJzogW119KTsKICAgICAgICB0bXAucHVzaChvcFRyZWUpOwogICAgICAgIG9wVHJlZSA9IG9wVHJlZVtvcFRyZWUubGVuZ3RoIC0gMV0uaXRlbXM7CiAgICAgICAgY29udGludWU7CiAgICAgIH0KCiAgICAgIGlmKG9wTGlzdFt4XS5mbiA9PT0gJ3Jlc3RvcmUnKSB7CiAgICAgICAgb3BUcmVlID0gdG1wLnBvcCgpOwogICAgICB9IGVsc2UgewogICAgICAgIG9wVHJlZS5wdXNoKG9wTGlzdFt4XSk7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBvcFRyZWU7CiAgfQoKICAvKioKICAgKiBGb3JtYXRzIGZsb2F0IG51bWJlci4KICAgKiBAcGFyYW0gdmFsdWUge251bWJlcn0gbnVtYmVyIHRvIGZvcm1hdC4KICAgKiBAcmV0dXJucyB7c3RyaW5nfQogICAqLwogIGZ1bmN0aW9uIHBmKHZhbHVlKSB7CiAgICBpZiAodmFsdWUgPT09ICh2YWx1ZSB8IDApKSB7IC8vIGludGVnZXIgbnVtYmVyCiAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpOwogICAgfQogICAgdmFyIHMgPSB2YWx1ZS50b0ZpeGVkKDEwKTsKICAgIHZhciBpID0gcy5sZW5ndGggLSAxOwogICAgaWYgKHNbaV0gIT09ICcwJykgewogICAgICByZXR1cm4gczsKICAgIH0KICAgIC8vIHJlbW92aW5nIHRyYWlsaW5nIHplcm9zCiAgICBkbyB7CiAgICAgIGktLTsKICAgIH0gd2hpbGUgKHNbaV0gPT09ICcwJyk7CiAgICByZXR1cm4gcy5zdWJzdHIoMCwgc1tpXSA9PT0gJy4nID8gaSA6IGkgKyAxKTsKICB9CgogIC8qKgogICAqIEZvcm1hdHMgdHJhbnNmb3JtIG1hdHJpeC4gVGhlIHN0YW5kYXJkIHJvdGF0aW9uLCBzY2FsZSBhbmQgdHJhbnNsYXRlCiAgICogbWF0cmljZXMgYXJlIHJlcGxhY2VkIGJ5IHRoZWlyIHNob3J0ZXIgZm9ybXMsIGFuZCBmb3IgaWRlbnRpdHkgbWF0cml4CiAgICogcmV0dXJucyBlbXB0eSBzdHJpbmcgdG8gc2F2ZSB0aGUgbWVtb3J5LgogICAqIEBwYXJhbSBtIHtBcnJheX0gbWF0cml4IHRvIGZvcm1hdC4KICAgKiBAcmV0dXJucyB7c3RyaW5nfQogICAqLwogIGZ1bmN0aW9uIHBtKG0pIHsKICAgIGlmIChtWzRdID09PSAwICYmIG1bNV0gPT09IDApIHsKICAgICAgaWYgKG1bMV0gPT09IDAgJiYgbVsyXSA9PT0gMCkgewogICAgICAgIGlmIChtWzBdID09PSAxICYmIG1bM10gPT09IDEpIHsKICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICdzY2FsZSgnICsgcGYobVswXSkgKyAnICcgKyBwZihtWzNdKSArICcpJzsKICAgICAgfQogICAgICBpZiAobVswXSA9PT0gbVszXSAmJiBtWzFdID09PSAtbVsyXSkgewogICAgICAgIHZhciBhID0gTWF0aC5hY29zKG1bMF0pICogMTgwIC8gTWF0aC5QSTsKICAgICAgICByZXR1cm4gJ3JvdGF0ZSgnICsgcGYoYSkgKyAnKSc7CiAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgIGlmIChtWzBdID09PSAxICYmIG1bMV0gPT09IDAgJiYgbVsyXSA9PT0gMCAmJiBtWzNdID09PSAxKSB7CiAgICAgICAgcmV0dXJuICd0cmFuc2xhdGUoJyArIHBmKG1bNF0pICsgJyAnICsgcGYobVs1XSkgKyAnKSc7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiAnbWF0cml4KCcgKyBwZihtWzBdKSArICcgJyArIHBmKG1bMV0pICsgJyAnICsgcGYobVsyXSkgKyAnICcgKwogICAgICBwZihtWzNdKSArICcgJyArIHBmKG1bNF0pICsgJyAnICsgcGYobVs1XSkgKyAnKSc7CiAgfQoKICBmdW5jdGlvbiBTVkdHcmFwaGljcyhjb21tb25PYmpzLCBvYmpzKSB7CiAgICB0aGlzLmN1cnJlbnQgPSBuZXcgU1ZHRXh0cmFTdGF0ZSgpOwogICAgdGhpcy50cmFuc2Zvcm1NYXRyaXggPSBJREVOVElUWV9NQVRSSVg7IC8vIEdyYXBoaWNzIHN0YXRlIG1hdHJpeAogICAgdGhpcy50cmFuc2Zvcm1TdGFjayA9IFtdOwogICAgdGhpcy5leHRyYVN0YWNrID0gW107CiAgICB0aGlzLmNvbW1vbk9ianMgPSBjb21tb25PYmpzOwogICAgdGhpcy5vYmpzID0gb2JqczsKICAgIHRoaXMucGVuZGluZ0VPRmlsbCA9IGZhbHNlOwoKICAgIHRoaXMuZW1iZWRGb250cyA9IGZhbHNlOwogICAgdGhpcy5lbWJlZGRlZEZvbnRzID0ge307CiAgICB0aGlzLmNzc1N0eWxlID0gbnVsbDsKICB9CgogIHZhciBOUyA9ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc7CiAgdmFyIFhNTF9OUyA9ICdodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UnOwogIHZhciBYTElOS19OUyA9ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJzsKICB2YXIgTElORV9DQVBfU1RZTEVTID0gWydidXR0JywgJ3JvdW5kJywgJ3NxdWFyZSddOwogIHZhciBMSU5FX0pPSU5fU1RZTEVTID0gWydtaXRlcicsICdyb3VuZCcsICdiZXZlbCddOwogIHZhciBjbGlwQ291bnQgPSAwOwogIHZhciBtYXNrQ291bnQgPSAwOwoKICBTVkdHcmFwaGljcy5wcm90b3R5cGUgPSB7CiAgICBzYXZlOiBmdW5jdGlvbiBTVkdHcmFwaGljc19zYXZlKCkgewogICAgICB0aGlzLnRyYW5zZm9ybVN0YWNrLnB1c2godGhpcy50cmFuc2Zvcm1NYXRyaXgpOwogICAgICB2YXIgb2xkID0gdGhpcy5jdXJyZW50OwogICAgICB0aGlzLmV4dHJhU3RhY2sucHVzaChvbGQpOwogICAgICB0aGlzLmN1cnJlbnQgPSBvbGQuY2xvbmUoKTsKICAgIH0sCgogICAgcmVzdG9yZTogZnVuY3Rpb24gU1ZHR3JhcGhpY3NfcmVzdG9yZSgpIHsKICAgICAgdGhpcy50cmFuc2Zvcm1NYXRyaXggPSB0aGlzLnRyYW5zZm9ybVN0YWNrLnBvcCgpOwogICAgICB0aGlzLmN1cnJlbnQgPSB0aGlzLmV4dHJhU3RhY2sucG9wKCk7CgogICAgICB0aGlzLnRncnAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoTlMsICdzdmc6ZycpOwogICAgICB0aGlzLnRncnAuc2V0QXR0cmlidXRlTlMobnVsbCwgJ3RyYW5zZm9ybScsIHBtKHRoaXMudHJhbnNmb3JtTWF0cml4KSk7CiAgICAgIHRoaXMucGdycC5hcHBlbmRDaGlsZCh0aGlzLnRncnApOwogICAgfSwKCiAgICBncm91cDogZnVuY3Rpb24gU1ZHR3JhcGhpY3NfZ3JvdXAoaXRlbXMpIHsKICAgICAgdGhpcy5zYXZlKCk7CiAgICAgIHRoaXMuZXhlY3V0ZU9wVHJlZShpdGVtcyk7CiAgICAgIHRoaXMucmVzdG9yZSgpOwogICAgfSwKCiAgICBsb2FkRGVwZW5kZW5jaWVzOiBmdW5jdGlvbiBTVkdHcmFwaGljc19sb2FkRGVwZW5kZW5jaWVzKG9wZXJhdG9yTGlzdCkgewogICAgICB2YXIgZm5BcnJheSA9IG9wZXJhdG9yTGlzdC5mbkFycmF5OwogICAgICB2YXIgZm5BcnJheUxlbiA9IGZuQXJyYXkubGVuZ3RoOwogICAgICB2YXIgYXJnc0FycmF5ID0gb3BlcmF0b3JMaXN0LmFyZ3NBcnJheTsKCiAgICAgIHZhciBzZWxmID0gdGhpczsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmbkFycmF5TGVuOyBpKyspIHsKICAgICAgICBpZiAoT1BTLmRlcGVuZGVuY3kgPT09IGZuQXJyYXlbaV0pIHsKICAgICAgICAgIHZhciBkZXBzID0gYXJnc0FycmF5W2ldOwogICAgICAgICAgZm9yICh2YXIgbiA9IDAsIG5uID0gZGVwcy5sZW5ndGg7IG4gPCBubjsgbisrKSB7CiAgICAgICAgICAgIHZhciBvYmogPSBkZXBzW25dOwogICAgICAgICAgICB2YXIgY29tbW9uID0gb2JqLnN1YnN0cmluZygwLCAyKSA9PT0gJ2dfJzsKICAgICAgICAgICAgdmFyIHByb21pc2U7CiAgICAgICAgICAgIGlmIChjb21tb24pIHsKICAgICAgICAgICAgICBwcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSkgewogICAgICAgICAgICAgICAgc2VsZi5jb21tb25PYmpzLmdldChvYmosIHJlc29sdmUpOwogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlKSB7CiAgICAgICAgICAgICAgICBzZWxmLm9ianMuZ2V0KG9iaiwgcmVzb2x2ZSk7CiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGhpcy5jdXJyZW50LmRlcGVuZGVuY2llcy5wdXNoKHByb21pc2UpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gUHJvbWlzZS5hbGwodGhpcy5jdXJyZW50LmRlcGVuZGVuY2llcyk7CiAgICB9LAoKICAgIHRyYW5zZm9ybTogZnVuY3Rpb24gU1ZHR3JhcGhpY3NfdHJhbnNmb3JtKGEsIGIsIGMsIGQsIGUsIGYpIHsKICAgICAgdmFyIHRyYW5zZm9ybU1hdHJpeCA9IFthLCBiLCBjLCBkLCBlLCBmXTsKICAgICAgdGhpcy50cmFuc2Zvcm1NYXRyaXggPSBQREZKUy5VdGlsLnRyYW5zZm9ybSh0aGlzLnRyYW5zZm9ybU1hdHJpeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1NYXRyaXgpOwoKICAgICAgdGhpcy50Z3JwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKE5TLCAnc3ZnOmcnKTsKICAgICAgdGhpcy50Z3JwLnNldEF0dHJpYnV0ZU5TKG51bGwsICd0cmFuc2Zvcm0nLCBwbSh0aGlzLnRyYW5zZm9ybU1hdHJpeCkpOwogICAgfSwKCiAgICBnZXRTVkc6IGZ1bmN0aW9uIFNWR0dyYXBoaWNzX2dldFNWRyhvcGVyYXRvckxpc3QsIHZpZXdwb3J0KSB7CiAgICAgIHRoaXMuc3ZnID0gY3JlYXRlU2NyYXRjaFNWRyh2aWV3cG9ydC53aWR0aCwgdmlld3BvcnQuaGVpZ2h0KTsKICAgICAgdGhpcy52aWV3cG9ydCA9IHZpZXdwb3J0OwoKICAgICAgcmV0dXJuIHRoaXMubG9hZERlcGVuZGVuY2llcyhvcGVyYXRvckxpc3QpLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgIHRoaXMudHJhbnNmb3JtTWF0cml4ID0gSURFTlRJVFlfTUFUUklYOwogICAgICAgIHRoaXMucGdycCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhOUywgJ3N2ZzpnJyk7IC8vIFBhcmVudCBncm91cAogICAgICAgIHRoaXMucGdycC5zZXRBdHRyaWJ1dGVOUyhudWxsLCAndHJhbnNmb3JtJywgcG0odmlld3BvcnQudHJhbnNmb3JtKSk7CiAgICAgICAgdGhpcy50Z3JwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKE5TLCAnc3ZnOmcnKTsgLy8gVHJhbnNmb3JtIGdyb3VwCiAgICAgICAgdGhpcy50Z3JwLnNldEF0dHJpYnV0ZU5TKG51bGwsICd0cmFuc2Zvcm0nLCBwbSh0aGlzLnRyYW5zZm9ybU1hdHJpeCkpOwogICAgICAgIHRoaXMuZGVmcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhOUywgJ3N2ZzpkZWZzJyk7CiAgICAgICAgdGhpcy5wZ3JwLmFwcGVuZENoaWxkKHRoaXMuZGVmcyk7CiAgICAgICAgdGhpcy5wZ3JwLmFwcGVuZENoaWxkKHRoaXMudGdycCk7CiAgICAgICAgdGhpcy5zdmcuYXBwZW5kQ2hpbGQodGhpcy5wZ3JwKTsKICAgICAgICB2YXIgb3BUcmVlID0gdGhpcy5jb252ZXJ0T3BMaXN0KG9wZXJhdG9yTGlzdCk7CiAgICAgICAgdGhpcy5leGVjdXRlT3BUcmVlKG9wVHJlZSk7CiAgICAgICAgcmV0dXJuIHRoaXMuc3ZnOwogICAgICB9LmJpbmQodGhpcykpOwogICAgfSwKCiAgICBjb252ZXJ0T3BMaXN0OiBmdW5jdGlvbiBTVkdHcmFwaGljc19jb252ZXJ0T3BMaXN0KG9wZXJhdG9yTGlzdCkgewogICAgICB2YXIgYXJnc0FycmF5ID0gb3BlcmF0b3JMaXN0LmFyZ3NBcnJheTsKICAgICAgdmFyIGZuQXJyYXkgPSBvcGVyYXRvckxpc3QuZm5BcnJheTsKICAgICAgdmFyIGZuQXJyYXlMZW4gID0gZm5BcnJheS5sZW5ndGg7CiAgICAgIHZhciBSRVZPUFMgPSBbXTsKICAgICAgdmFyIG9wTGlzdCA9IFtdOwoKICAgICAgZm9yICh2YXIgb3AgaW4gT1BTKSB7CiAgICAgICAgUkVWT1BTW09QU1tvcF1dID0gb3A7CiAgICAgIH0KCiAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgZm5BcnJheUxlbjsgeCsrKSB7CiAgICAgICAgdmFyIGZuSWQgPSBmbkFycmF5W3hdOwogICAgICAgIG9wTGlzdC5wdXNoKHsnZm5JZCcgOiBmbklkLCAnZm4nOiBSRVZPUFNbZm5JZF0sICdhcmdzJzogYXJnc0FycmF5W3hdfSk7CiAgICAgIH0KICAgICAgcmV0dXJuIG9wTGlzdFRvVHJlZShvcExpc3QpOwogICAgfSwKCiAgICBleGVjdXRlT3BUcmVlOiBmdW5jdGlvbiBTVkdHcmFwaGljc19leGVjdXRlT3BUcmVlKG9wVHJlZSkgewogICAgICB2YXIgb3BUcmVlTGVuID0gb3BUcmVlLmxlbmd0aDsKICAgICAgZm9yKHZhciB4ID0gMDsgeCA8IG9wVHJlZUxlbjsgeCsrKSB7CiAgICAgICAgdmFyIGZuID0gb3BUcmVlW3hdLmZuOwogICAgICAgIHZhciBmbklkID0gb3BUcmVlW3hdLmZuSWQ7CiAgICAgICAgdmFyIGFyZ3MgPSBvcFRyZWVbeF0uYXJnczsKCiAgICAgICAgc3dpdGNoIChmbklkIHwgMCkgewogICAgICAgICAgY2FzZSBPUFMuYmVnaW5UZXh0OgogICAgICAgICAgICB0aGlzLmJlZ2luVGV4dCgpOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgT1BTLnNldExlYWRpbmc6CiAgICAgICAgICAgIHRoaXMuc2V0TGVhZGluZyhhcmdzKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlIE9QUy5zZXRMZWFkaW5nTW92ZVRleHQ6CiAgICAgICAgICAgIHRoaXMuc2V0TGVhZGluZ01vdmVUZXh0KGFyZ3NbMF0sIGFyZ3NbMV0pOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgT1BTLnNldEZvbnQ6CiAgICAgICAgICAgIHRoaXMuc2V0Rm9udChhcmdzKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlIE9QUy5zaG93VGV4dDoKICAgICAgICAgICAgdGhpcy5zaG93VGV4dChhcmdzWzBdKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlIE9QUy5zaG93U3BhY2VkVGV4dDoKICAgICAgICAgICAgdGhpcy5zaG93VGV4dChhcmdzWzBdKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlIE9QUy5lbmRUZXh0OgogICAgICAgICAgICB0aGlzLmVuZFRleHQoKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlIE9QUy5tb3ZlVGV4dDoKICAgICAgICAgICAgdGhpcy5tb3ZlVGV4dChhcmdzWzBdLCBhcmdzWzFdKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlIE9QUy5zZXRDaGFyU3BhY2luZzoKICAgICAgICAgICAgdGhpcy5zZXRDaGFyU3BhY2luZyhhcmdzWzBdKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlIE9QUy5zZXRXb3JkU3BhY2luZzoKICAgICAgICAgICAgdGhpcy5zZXRXb3JkU3BhY2luZyhhcmdzWzBdKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlIE9QUy5zZXRIU2NhbGU6CiAgICAgICAgICAgIHRoaXMuc2V0SFNjYWxlKGFyZ3NbMF0pOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgT1BTLnNldFRleHRNYXRyaXg6CiAgICAgICAgICAgIHRoaXMuc2V0VGV4dE1hdHJpeChhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1szXSwgYXJnc1s0XSwgYXJnc1s1XSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSBPUFMuc2V0TGluZVdpZHRoOgogICAgICAgICAgICB0aGlzLnNldExpbmVXaWR0aChhcmdzWzBdKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlIE9QUy5zZXRMaW5lSm9pbjoKICAgICAgICAgICAgdGhpcy5zZXRMaW5lSm9pbihhcmdzWzBdKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlIE9QUy5zZXRMaW5lQ2FwOgogICAgICAgICAgICB0aGlzLnNldExpbmVDYXAoYXJnc1swXSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSBPUFMuc2V0TWl0ZXJMaW1pdDoKICAgICAgICAgICAgdGhpcy5zZXRNaXRlckxpbWl0KGFyZ3NbMF0pOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgT1BTLnNldEZpbGxSR0JDb2xvcjoKICAgICAgICAgICAgdGhpcy5zZXRGaWxsUkdCQ29sb3IoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSBPUFMuc2V0U3Ryb2tlUkdCQ29sb3I6CiAgICAgICAgICAgIHRoaXMuc2V0U3Ryb2tlUkdCQ29sb3IoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSBPUFMuc2V0RGFzaDoKICAgICAgICAgICAgdGhpcy5zZXREYXNoKGFyZ3NbMF0sIGFyZ3NbMV0pOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgT1BTLnNldEdTdGF0ZToKICAgICAgICAgICAgdGhpcy5zZXRHU3RhdGUoYXJnc1swXSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSBPUFMuZmlsbDoKICAgICAgICAgICAgdGhpcy5maWxsKCk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSBPUFMuZW9GaWxsOgogICAgICAgICAgICB0aGlzLmVvRmlsbCgpOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgT1BTLnN0cm9rZToKICAgICAgICAgICAgdGhpcy5zdHJva2UoKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlIE9QUy5maWxsU3Ryb2tlOgogICAgICAgICAgICB0aGlzLmZpbGxTdHJva2UoKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlIE9QUy5lb0ZpbGxTdHJva2U6CiAgICAgICAgICAgIHRoaXMuZW9GaWxsU3Ryb2tlKCk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSBPUFMuY2xpcDoKICAgICAgICAgICAgdGhpcy5jbGlwKCdub256ZXJvJyk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSBPUFMuZW9DbGlwOgogICAgICAgICAgICB0aGlzLmNsaXAoJ2V2ZW5vZGQnKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlIE9QUy5wYWludFNvbGlkQ29sb3JJbWFnZU1hc2s6CiAgICAgICAgICAgIHRoaXMucGFpbnRTb2xpZENvbG9ySW1hZ2VNYXNrKCk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSBPUFMucGFpbnRKcGVnWE9iamVjdDoKICAgICAgICAgICAgdGhpcy5wYWludEpwZWdYT2JqZWN0KGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgT1BTLnBhaW50SW1hZ2VYT2JqZWN0OgogICAgICAgICAgICB0aGlzLnBhaW50SW1hZ2VYT2JqZWN0KGFyZ3NbMF0pOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgT1BTLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0OgogICAgICAgICAgICB0aGlzLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0KGFyZ3NbMF0pOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgT1BTLnBhaW50SW1hZ2VNYXNrWE9iamVjdDoKICAgICAgICAgICAgdGhpcy5wYWludEltYWdlTWFza1hPYmplY3QoYXJnc1swXSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSBPUFMucGFpbnRGb3JtWE9iamVjdEJlZ2luOgogICAgICAgICAgICB0aGlzLnBhaW50Rm9ybVhPYmplY3RCZWdpbihhcmdzWzBdLCBhcmdzWzFdKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlIE9QUy5wYWludEZvcm1YT2JqZWN0RW5kOgogICAgICAgICAgICB0aGlzLnBhaW50Rm9ybVhPYmplY3RFbmQoKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlIE9QUy5jbG9zZVBhdGg6CiAgICAgICAgICAgIHRoaXMuY2xvc2VQYXRoKCk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSBPUFMuY2xvc2VTdHJva2U6CiAgICAgICAgICAgIHRoaXMuY2xvc2VTdHJva2UoKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlIE9QUy5jbG9zZUZpbGxTdHJva2U6CiAgICAgICAgICAgIHRoaXMuY2xvc2VGaWxsU3Ryb2tlKCk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSBPUFMubmV4dExpbmU6CiAgICAgICAgICAgIHRoaXMubmV4dExpbmUoKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlIE9QUy50cmFuc2Zvcm06CiAgICAgICAgICAgIHRoaXMudHJhbnNmb3JtKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIGFyZ3NbM10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3NbNF0sIGFyZ3NbNV0pOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgT1BTLmNvbnN0cnVjdFBhdGg6CiAgICAgICAgICAgIHRoaXMuY29uc3RydWN0UGF0aChhcmdzWzBdLCBhcmdzWzFdKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlIE9QUy5lbmRQYXRoOgogICAgICAgICAgICB0aGlzLmVuZFBhdGgoKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlIDkyOgogICAgICAgICAgICB0aGlzLmdyb3VwKG9wVHJlZVt4XS5pdGVtcyk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgd2FybignVW5pbXBsZW1lbnRlZCBtZXRob2QgJysgZm4pOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgIH0KICAgIH0sCgogICAgc2V0V29yZFNwYWNpbmc6IGZ1bmN0aW9uIFNWR0dyYXBoaWNzX3NldFdvcmRTcGFjaW5nKHdvcmRTcGFjaW5nKSB7CiAgICAgIHRoaXMuY3VycmVudC53b3JkU3BhY2luZyA9IHdvcmRTcGFjaW5nOwogICAgfSwKCiAgICBzZXRDaGFyU3BhY2luZzogZnVuY3Rpb24gU1ZHR3JhcGhpY3Nfc2V0Q2hhclNwYWNpbmcoY2hhclNwYWNpbmcpIHsKICAgICAgdGhpcy5jdXJyZW50LmNoYXJTcGFjaW5nID0gY2hhclNwYWNpbmc7CiAgICB9LAoKICAgIG5leHRMaW5lOiBmdW5jdGlvbiBTVkdHcmFwaGljc19uZXh0TGluZSgpIHsKICAgICAgdGhpcy5tb3ZlVGV4dCgwLCB0aGlzLmN1cnJlbnQubGVhZGluZyk7CiAgICB9LAoKICAgIHNldFRleHRNYXRyaXg6IGZ1bmN0aW9uIFNWR0dyYXBoaWNzX3NldFRleHRNYXRyaXgoYSwgYiwgYywgZCwgZSwgZikgewogICAgICB2YXIgY3VycmVudCA9IHRoaXMuY3VycmVudDsKICAgICAgdGhpcy5jdXJyZW50LnRleHRNYXRyaXggPSB0aGlzLmN1cnJlbnQubGluZU1hdHJpeCA9IFthLCBiLCBjLCBkLCBlLCBmXTsKCiAgICAgIHRoaXMuY3VycmVudC54ID0gdGhpcy5jdXJyZW50LmxpbmVYID0gMDsKICAgICAgdGhpcy5jdXJyZW50LnkgPSB0aGlzLmN1cnJlbnQubGluZVkgPSAwOwoKICAgICAgY3VycmVudC54Y29vcmRzID0gW107CiAgICAgIGN1cnJlbnQudHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoTlMsICdzdmc6dHNwYW4nKTsKICAgICAgY3VycmVudC50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCAnZm9udC1mYW1pbHknLCBjdXJyZW50LmZvbnRGYW1pbHkpOwogICAgICBjdXJyZW50LnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsICdmb250LXNpemUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBmKGN1cnJlbnQuZm9udFNpemUpICsgJ3B4Jyk7CiAgICAgIGN1cnJlbnQudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwgJ3knLCBwZigtY3VycmVudC55KSk7CgogICAgICBjdXJyZW50LnR4dEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoTlMsICdzdmc6dGV4dCcpOwogICAgICBjdXJyZW50LnR4dEVsZW1lbnQuYXBwZW5kQ2hpbGQoY3VycmVudC50c3Bhbik7CiAgICB9LAoKICAgIGJlZ2luVGV4dDogZnVuY3Rpb24gU1ZHR3JhcGhpY3NfYmVnaW5UZXh0KCkgewogICAgICB0aGlzLmN1cnJlbnQueCA9IHRoaXMuY3VycmVudC5saW5lWCA9IDA7CiAgICAgIHRoaXMuY3VycmVudC55ID0gdGhpcy5jdXJyZW50LmxpbmVZID0gMDsKICAgICAgdGhpcy5jdXJyZW50LnRleHRNYXRyaXggPSBJREVOVElUWV9NQVRSSVg7CiAgICAgIHRoaXMuY3VycmVudC5saW5lTWF0cml4ID0gSURFTlRJVFlfTUFUUklYOwogICAgICB0aGlzLmN1cnJlbnQudHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoTlMsICdzdmc6dHNwYW4nKTsKICAgICAgdGhpcy5jdXJyZW50LnR4dEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoTlMsICdzdmc6dGV4dCcpOwogICAgICB0aGlzLmN1cnJlbnQudHh0Z3JwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKE5TLCAnc3ZnOmcnKTsKICAgICAgdGhpcy5jdXJyZW50Lnhjb29yZHMgPSBbXTsKICAgIH0sCgogICAgbW92ZVRleHQ6IGZ1bmN0aW9uIFNWR0dyYXBoaWNzX21vdmVUZXh0KHgsIHkpIHsKICAgICAgdmFyIGN1cnJlbnQgPSB0aGlzLmN1cnJlbnQ7CiAgICAgIHRoaXMuY3VycmVudC54ID0gdGhpcy5jdXJyZW50LmxpbmVYICs9IHg7CiAgICAgIHRoaXMuY3VycmVudC55ID0gdGhpcy5jdXJyZW50LmxpbmVZICs9IHk7CgogICAgICBjdXJyZW50Lnhjb29yZHMgPSBbXTsKICAgICAgY3VycmVudC50c3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhOUywgJ3N2Zzp0c3BhbicpOwogICAgICBjdXJyZW50LnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsICdmb250LWZhbWlseScsIGN1cnJlbnQuZm9udEZhbWlseSk7CiAgICAgIGN1cnJlbnQudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwgJ2ZvbnQtc2l6ZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGYoY3VycmVudC5mb250U2l6ZSkgKyAncHgnKTsKICAgICAgY3VycmVudC50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCAneScsIHBmKC1jdXJyZW50LnkpKTsKICAgIH0sCgogICAgc2hvd1RleHQ6IGZ1bmN0aW9uIFNWR0dyYXBoaWNzX3Nob3dUZXh0KGdseXBocykgewogICAgICB2YXIgY3VycmVudCA9IHRoaXMuY3VycmVudDsKICAgICAgdmFyIGZvbnQgPSBjdXJyZW50LmZvbnQ7CiAgICAgIHZhciBmb250U2l6ZSA9IGN1cnJlbnQuZm9udFNpemU7CgogICAgICBpZiAoZm9udFNpemUgPT09IDApIHsKICAgICAgICByZXR1cm47CiAgICAgIH0KCiAgICAgIHZhciBjaGFyU3BhY2luZyA9IGN1cnJlbnQuY2hhclNwYWNpbmc7CiAgICAgIHZhciB3b3JkU3BhY2luZyA9IGN1cnJlbnQud29yZFNwYWNpbmc7CiAgICAgIHZhciBmb250RGlyZWN0aW9uID0gY3VycmVudC5mb250RGlyZWN0aW9uOwogICAgICB2YXIgdGV4dEhTY2FsZSA9IGN1cnJlbnQudGV4dEhTY2FsZSAqIGZvbnREaXJlY3Rpb247CiAgICAgIHZhciBnbHlwaHNMZW5ndGggPSBnbHlwaHMubGVuZ3RoOwogICAgICB2YXIgdmVydGljYWwgPSBmb250LnZlcnRpY2FsOwogICAgICB2YXIgd2lkdGhBZHZhbmNlU2NhbGUgPSBmb250U2l6ZSAqIGN1cnJlbnQuZm9udE1hdHJpeFswXTsKCiAgICAgIHZhciB4ID0gMCwgaTsKICAgICAgZm9yIChpID0gMDsgaSA8IGdseXBoc0xlbmd0aDsgKytpKSB7CiAgICAgICAgdmFyIGdseXBoID0gZ2x5cGhzW2ldOwogICAgICAgIGlmIChnbHlwaCA9PT0gbnVsbCkgewogICAgICAgICAgLy8gd29yZCBicmVhawogICAgICAgICAgeCArPSBmb250RGlyZWN0aW9uICogd29yZFNwYWNpbmc7CiAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9IGVsc2UgaWYgKGlzTnVtKGdseXBoKSkgewogICAgICAgICAgeCArPSAtZ2x5cGggKiBmb250U2l6ZSAqIDAuMDAxOwogICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIGN1cnJlbnQueGNvb3Jkcy5wdXNoKGN1cnJlbnQueCArIHggKiB0ZXh0SFNjYWxlKTsKCiAgICAgICAgdmFyIHdpZHRoID0gZ2x5cGgud2lkdGg7CiAgICAgICAgdmFyIGNoYXJhY3RlciA9IGdseXBoLmZvbnRDaGFyOwogICAgICAgIHZhciBjaGFyV2lkdGggPSB3aWR0aCAqIHdpZHRoQWR2YW5jZVNjYWxlICsgY2hhclNwYWNpbmcgKiBmb250RGlyZWN0aW9uOwogICAgICAgIHggKz0gY2hhcldpZHRoOwoKICAgICAgICBjdXJyZW50LnRzcGFuLnRleHRDb250ZW50ICs9IGNoYXJhY3RlcjsKICAgICAgfQogICAgICBpZiAodmVydGljYWwpIHsKICAgICAgICBjdXJyZW50LnkgLT0geCAqIHRleHRIU2NhbGU7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgY3VycmVudC54ICs9IHggKiB0ZXh0SFNjYWxlOwogICAgICB9CgogICAgICBjdXJyZW50LnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsICd4JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Lnhjb29yZHMubWFwKHBmKS5qb2luKCcgJykpOwogICAgICBjdXJyZW50LnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsICd5JywgcGYoLWN1cnJlbnQueSkpOwogICAgICBjdXJyZW50LnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsICdmb250LWZhbWlseScsIGN1cnJlbnQuZm9udEZhbWlseSk7CiAgICAgIGN1cnJlbnQudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwgJ2ZvbnQtc2l6ZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGYoY3VycmVudC5mb250U2l6ZSkgKyAncHgnKTsKICAgICAgaWYgKGN1cnJlbnQuZm9udFN0eWxlICE9PSBTVkdfREVGQVVMVFMuZm9udFN0eWxlKSB7CiAgICAgICAgY3VycmVudC50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCAnZm9udC1zdHlsZScsIGN1cnJlbnQuZm9udFN0eWxlKTsKICAgICAgfQogICAgICBpZiAoY3VycmVudC5mb250V2VpZ2h0ICE9PSBTVkdfREVGQVVMVFMuZm9udFdlaWdodCkgewogICAgICAgIGN1cnJlbnQudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwgJ2ZvbnQtd2VpZ2h0JywgY3VycmVudC5mb250V2VpZ2h0KTsKICAgICAgfQogICAgICBpZiAoY3VycmVudC5maWxsQ29sb3IgIT09IFNWR19ERUZBVUxUUy5maWxsQ29sb3IpIHsKICAgICAgICBjdXJyZW50LnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsICdmaWxsJywgY3VycmVudC5maWxsQ29sb3IpOwogICAgICB9CgogICAgICBjdXJyZW50LnR4dEVsZW1lbnQuc2V0QXR0cmlidXRlTlMobnVsbCwgJ3RyYW5zZm9ybScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbShjdXJyZW50LnRleHRNYXRyaXgpICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgc2NhbGUoMSwgLTEpJyApOwogICAgICBjdXJyZW50LnR4dEVsZW1lbnQuc2V0QXR0cmlidXRlTlMoWE1MX05TLCAneG1sOnNwYWNlJywgJ3ByZXNlcnZlJyk7CiAgICAgIGN1cnJlbnQudHh0RWxlbWVudC5hcHBlbmRDaGlsZChjdXJyZW50LnRzcGFuKTsKICAgICAgY3VycmVudC50eHRncnAuYXBwZW5kQ2hpbGQoY3VycmVudC50eHRFbGVtZW50KTsKCiAgICAgIHRoaXMudGdycC5hcHBlbmRDaGlsZChjdXJyZW50LnR4dEVsZW1lbnQpOwoKICAgIH0sCgogICAgc2V0TGVhZGluZ01vdmVUZXh0OiBmdW5jdGlvbiBTVkdHcmFwaGljc19zZXRMZWFkaW5nTW92ZVRleHQoeCwgeSkgewogICAgICB0aGlzLnNldExlYWRpbmcoLXkpOwogICAgICB0aGlzLm1vdmVUZXh0KHgsIHkpOwogICAgfSwKCiAgICBhZGRGb250U3R5bGU6IGZ1bmN0aW9uIFNWR0dyYXBoaWNzX2FkZEZvbnRTdHlsZShmb250T2JqKSB7CiAgICAgIGlmICghdGhpcy5jc3NTdHlsZSkgewogICAgICAgIHRoaXMuY3NzU3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoTlMsICdzdmc6c3R5bGUnKTsKICAgICAgICB0aGlzLmNzc1N0eWxlLnNldEF0dHJpYnV0ZU5TKG51bGwsICd0eXBlJywgJ3RleHQvY3NzJyk7CiAgICAgICAgdGhpcy5kZWZzLmFwcGVuZENoaWxkKHRoaXMuY3NzU3R5bGUpOwogICAgICB9CgogICAgICB2YXIgdXJsID0gUERGSlMuY3JlYXRlT2JqZWN0VVJMKGZvbnRPYmouZGF0YSwgZm9udE9iai5taW1ldHlwZSk7CiAgICAgIHRoaXMuY3NzU3R5bGUudGV4dENvbnRlbnQgKz0KICAgICAgICAnQGZvbnQtZmFjZSB7IGZvbnQtZmFtaWx5OiAiJyArIGZvbnRPYmoubG9hZGVkTmFtZSArICciOycgKwogICAgICAgICcgc3JjOiB1cmwoJyArIHVybCArICcpOyB9XG4nOwogICAgfSwKCiAgICBzZXRGb250OiBmdW5jdGlvbiBTVkdHcmFwaGljc19zZXRGb250KGRldGFpbHMpIHsKICAgICAgdmFyIGN1cnJlbnQgPSB0aGlzLmN1cnJlbnQ7CiAgICAgIHZhciBmb250T2JqID0gdGhpcy5jb21tb25PYmpzLmdldChkZXRhaWxzWzBdKTsKICAgICAgdmFyIHNpemUgPSBkZXRhaWxzWzFdOwogICAgICB0aGlzLmN1cnJlbnQuZm9udCA9IGZvbnRPYmo7CgogICAgICBpZiAodGhpcy5lbWJlZEZvbnRzICYmIGZvbnRPYmouZGF0YSAmJgogICAgICAgICAgIXRoaXMuZW1iZWRkZWRGb250c1tmb250T2JqLmxvYWRlZE5hbWVdKSB7CiAgICAgICAgdGhpcy5hZGRGb250U3R5bGUoZm9udE9iaik7CiAgICAgICAgdGhpcy5lbWJlZGRlZEZvbnRzW2ZvbnRPYmoubG9hZGVkTmFtZV0gPSBmb250T2JqOwogICAgICB9CgogICAgICBjdXJyZW50LmZvbnRNYXRyaXggPSAoZm9udE9iai5mb250TWF0cml4ID8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRPYmouZm9udE1hdHJpeCA6IEZPTlRfSURFTlRJVFlfTUFUUklYKTsKCiAgICAgIHZhciBib2xkID0gZm9udE9iai5ibGFjayA/IChmb250T2JqLmJvbGQgPyAnYm9sZGVyJyA6ICdib2xkJykgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9udE9iai5ib2xkID8gJ2JvbGQnIDogJ25vcm1hbCcpOwogICAgICB2YXIgaXRhbGljID0gZm9udE9iai5pdGFsaWMgPyAnaXRhbGljJyA6ICdub3JtYWwnOwoKICAgICAgaWYgKHNpemUgPCAwKSB7CiAgICAgICAgc2l6ZSA9IC1zaXplOwogICAgICAgIGN1cnJlbnQuZm9udERpcmVjdGlvbiA9IC0xOwogICAgICB9IGVsc2UgewogICAgICAgIGN1cnJlbnQuZm9udERpcmVjdGlvbiA9IDE7CiAgICAgIH0KICAgICAgY3VycmVudC5mb250U2l6ZSA9IHNpemU7CiAgICAgIGN1cnJlbnQuZm9udEZhbWlseSA9IGZvbnRPYmoubG9hZGVkTmFtZTsKICAgICAgY3VycmVudC5mb250V2VpZ2h0ID0gYm9sZDsKICAgICAgY3VycmVudC5mb250U3R5bGUgPSBpdGFsaWM7CgogICAgICBjdXJyZW50LnRzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKE5TLCAnc3ZnOnRzcGFuJyk7CiAgICAgIGN1cnJlbnQudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwgJ3knLCBwZigtY3VycmVudC55KSk7CiAgICAgIGN1cnJlbnQueGNvb3JkcyA9IFtdOwogICAgfSwKCiAgICBlbmRUZXh0OiBmdW5jdGlvbiBTVkdHcmFwaGljc19lbmRUZXh0KCkgewogICAgICBpZiAodGhpcy5jdXJyZW50LnBlbmRpbmdDbGlwKSB7CiAgICAgICAgdGhpcy5jZ3JwLmFwcGVuZENoaWxkKHRoaXMudGdycCk7CiAgICAgICAgdGhpcy5wZ3JwLmFwcGVuZENoaWxkKHRoaXMuY2dycCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5wZ3JwLmFwcGVuZENoaWxkKHRoaXMudGdycCk7CiAgICAgIH0KICAgICAgdGhpcy50Z3JwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKE5TLCAnc3ZnOmcnKTsKICAgICAgdGhpcy50Z3JwLnNldEF0dHJpYnV0ZU5TKG51bGwsICd0cmFuc2Zvcm0nLCBwbSh0aGlzLnRyYW5zZm9ybU1hdHJpeCkpOwogICAgfSwKCiAgICAvLyBQYXRoIHByb3BlcnRpZXMKICAgIHNldExpbmVXaWR0aDogZnVuY3Rpb24gU1ZHR3JhcGhpY3Nfc2V0TGluZVdpZHRoKHdpZHRoKSB7CiAgICAgIHRoaXMuY3VycmVudC5saW5lV2lkdGggPSB3aWR0aDsKICAgIH0sCiAgICBzZXRMaW5lQ2FwOiBmdW5jdGlvbiBTVkdHcmFwaGljc19zZXRMaW5lQ2FwKHN0eWxlKSB7CiAgICAgIHRoaXMuY3VycmVudC5saW5lQ2FwID0gTElORV9DQVBfU1RZTEVTW3N0eWxlXTsKICAgIH0sCiAgICBzZXRMaW5lSm9pbjogZnVuY3Rpb24gU1ZHR3JhcGhpY3Nfc2V0TGluZUpvaW4oc3R5bGUpIHsKICAgICAgdGhpcy5jdXJyZW50LmxpbmVKb2luID0gTElORV9KT0lOX1NUWUxFU1tzdHlsZV07CiAgICB9LAogICAgc2V0TWl0ZXJMaW1pdDogZnVuY3Rpb24gU1ZHR3JhcGhpY3Nfc2V0TWl0ZXJMaW1pdChsaW1pdCkgewogICAgICB0aGlzLmN1cnJlbnQubWl0ZXJMaW1pdCA9IGxpbWl0OwogICAgfSwKICAgIHNldFN0cm9rZVJHQkNvbG9yOiBmdW5jdGlvbiBTVkdHcmFwaGljc19zZXRTdHJva2VSR0JDb2xvcihyLCBnLCBiKSB7CiAgICAgIHZhciBjb2xvciA9IFV0aWwubWFrZUNzc1JnYihyLCBnLCBiKTsKICAgICAgdGhpcy5jdXJyZW50LnN0cm9rZUNvbG9yID0gY29sb3I7CiAgICB9LAogICAgc2V0RmlsbFJHQkNvbG9yOiBmdW5jdGlvbiBTVkdHcmFwaGljc19zZXRGaWxsUkdCQ29sb3IociwgZywgYikgewogICAgICB2YXIgY29sb3IgPSBVdGlsLm1ha2VDc3NSZ2IociwgZywgYik7CiAgICAgIHRoaXMuY3VycmVudC5maWxsQ29sb3IgPSBjb2xvcjsKICAgICAgdGhpcy5jdXJyZW50LnRzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKE5TLCAnc3ZnOnRzcGFuJyk7CiAgICAgIHRoaXMuY3VycmVudC54Y29vcmRzID0gW107CiAgICB9LAogICAgc2V0RGFzaDogZnVuY3Rpb24gU1ZHR3JhcGhpY3Nfc2V0RGFzaChkYXNoQXJyYXksIGRhc2hQaGFzZSkgewogICAgICB0aGlzLmN1cnJlbnQuZGFzaEFycmF5ID0gZGFzaEFycmF5OwogICAgICB0aGlzLmN1cnJlbnQuZGFzaFBoYXNlID0gZGFzaFBoYXNlOwogICAgfSwKCiAgICBjb25zdHJ1Y3RQYXRoOiBmdW5jdGlvbiBTVkdHcmFwaGljc19jb25zdHJ1Y3RQYXRoKG9wcywgYXJncykgewogICAgICB2YXIgY3VycmVudCA9IHRoaXMuY3VycmVudDsKICAgICAgdmFyIHggPSBjdXJyZW50LngsIHkgPSBjdXJyZW50Lnk7CiAgICAgIGN1cnJlbnQucGF0aCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhOUywgJ3N2ZzpwYXRoJyk7CiAgICAgIHZhciBkID0gW107CiAgICAgIHZhciBvcExlbmd0aCA9IG9wcy5sZW5ndGg7CgogICAgICBmb3IgKHZhciBpID0gMCwgaiA9IDA7IGkgPCBvcExlbmd0aDsgaSsrKSB7CiAgICAgICAgc3dpdGNoIChvcHNbaV0gfCAwKSB7CiAgICAgICAgICBjYXNlIE9QUy5yZWN0YW5nbGU6CiAgICAgICAgICAgIHggPSBhcmdzW2orK107CiAgICAgICAgICAgIHkgPSBhcmdzW2orK107CiAgICAgICAgICAgIHZhciB3aWR0aCA9IGFyZ3NbaisrXTsKICAgICAgICAgICAgdmFyIGhlaWdodCA9IGFyZ3NbaisrXTsKICAgICAgICAgICAgdmFyIHh3ID0geCArIHdpZHRoOwogICAgICAgICAgICB2YXIgeWggPSB5ICsgaGVpZ2h0OwogICAgICAgICAgICBkLnB1c2goJ00nLCBwZih4KSwgcGYoeSksICdMJywgcGYoeHcpICwgcGYoeSksICdMJywgcGYoeHcpLCBwZih5aCksCiAgICAgICAgICAgICAgICAgICAnTCcsIHBmKHgpLCBwZih5aCksICdaJyk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSBPUFMubW92ZVRvOgogICAgICAgICAgICB4ID0gYXJnc1tqKytdOwogICAgICAgICAgICB5ID0gYXJnc1tqKytdOwogICAgICAgICAgICBkLnB1c2goJ00nLCBwZih4KSwgcGYoeSkpOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgT1BTLmxpbmVUbzoKICAgICAgICAgICAgeCA9IGFyZ3NbaisrXTsKICAgICAgICAgICAgeSA9IGFyZ3NbaisrXTsKICAgICAgICAgICAgZC5wdXNoKCdMJywgcGYoeCkgLCBwZih5KSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSBPUFMuY3VydmVUbzoKICAgICAgICAgICAgeCA9IGFyZ3NbaiArIDRdOwogICAgICAgICAgICB5ID0gYXJnc1tqICsgNV07CiAgICAgICAgICAgIGQucHVzaCgnQycsIHBmKGFyZ3Nbal0pLCBwZihhcmdzW2ogKyAxXSksIHBmKGFyZ3NbaiArIDJdKSwKICAgICAgICAgICAgICAgICAgIHBmKGFyZ3NbaiArIDNdKSwgcGYoeCksIHBmKHkpKTsKICAgICAgICAgICAgaiArPSA2OwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgT1BTLmN1cnZlVG8yOgogICAgICAgICAgICB4ID0gYXJnc1tqICsgMl07CiAgICAgICAgICAgIHkgPSBhcmdzW2ogKyAzXTsKICAgICAgICAgICAgZC5wdXNoKCdDJywgcGYoeCksIHBmKHkpLCBwZihhcmdzW2pdKSwgcGYoYXJnc1tqICsgMV0pLAogICAgICAgICAgICAgICAgICAgcGYoYXJnc1tqICsgMl0pLCBwZihhcmdzW2ogKyAzXSkpOwogICAgICAgICAgICBqICs9IDQ7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSBPUFMuY3VydmVUbzM6CiAgICAgICAgICAgIHggPSBhcmdzW2ogKyAyXTsKICAgICAgICAgICAgeSA9IGFyZ3NbaiArIDNdOwogICAgICAgICAgICBkLnB1c2goJ0MnLCBwZihhcmdzW2pdKSwgcGYoYXJnc1tqICsgMV0pLCBwZih4KSwgcGYoeSksCiAgICAgICAgICAgICAgICAgICBwZih4KSwgcGYoeSkpOwogICAgICAgICAgICBqICs9IDQ7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSBPUFMuY2xvc2VQYXRoOgogICAgICAgICAgICBkLnB1c2goJ1onKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICB9CiAgICAgIGN1cnJlbnQucGF0aC5zZXRBdHRyaWJ1dGVOUyhudWxsLCAnZCcsIGQuam9pbignICcpKTsKICAgICAgY3VycmVudC5wYXRoLnNldEF0dHJpYnV0ZU5TKG51bGwsICdzdHJva2UtbWl0ZXJsaW1pdCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZihjdXJyZW50Lm1pdGVyTGltaXQpKTsKICAgICAgY3VycmVudC5wYXRoLnNldEF0dHJpYnV0ZU5TKG51bGwsICdzdHJva2UtbGluZWNhcCcsIGN1cnJlbnQubGluZUNhcCk7CiAgICAgIGN1cnJlbnQucGF0aC5zZXRBdHRyaWJ1dGVOUyhudWxsLCAnc3Ryb2tlLWxpbmVqb2luJywgY3VycmVudC5saW5lSm9pbik7CiAgICAgIGN1cnJlbnQucGF0aC5zZXRBdHRyaWJ1dGVOUyhudWxsLCAnc3Ryb2tlLXdpZHRoJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBmKGN1cnJlbnQubGluZVdpZHRoKSArICdweCcpOwogICAgICBjdXJyZW50LnBhdGguc2V0QXR0cmlidXRlTlMobnVsbCwgJ3N0cm9rZS1kYXNoYXJyYXknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudC5kYXNoQXJyYXkubWFwKHBmKS5qb2luKCcgJykpOwogICAgICBjdXJyZW50LnBhdGguc2V0QXR0cmlidXRlTlMobnVsbCwgJ3N0cm9rZS1kYXNob2Zmc2V0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBmKGN1cnJlbnQuZGFzaFBoYXNlKSArICdweCcpOwogICAgICBjdXJyZW50LnBhdGguc2V0QXR0cmlidXRlTlMobnVsbCwgJ2ZpbGwnLCAnbm9uZScpOwoKICAgICAgdGhpcy50Z3JwLmFwcGVuZENoaWxkKGN1cnJlbnQucGF0aCk7CiAgICAgIGlmIChjdXJyZW50LnBlbmRpbmdDbGlwKSB7CiAgICAgICAgdGhpcy5jZ3JwLmFwcGVuZENoaWxkKHRoaXMudGdycCk7CiAgICAgICAgdGhpcy5wZ3JwLmFwcGVuZENoaWxkKHRoaXMuY2dycCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5wZ3JwLmFwcGVuZENoaWxkKHRoaXMudGdycCk7CiAgICAgIH0KICAgICAgLy8gU2F2aW5nIGEgcmVmZXJlbmNlIGluIGN1cnJlbnQuZWxlbWVudCBzbyB0aGF0IGl0IGNhbiBiZSBhZGRyZXNzZWQKICAgICAgLy8gaW4gJ2ZpbGwnIGFuZCAnc3Ryb2tlJwogICAgICBjdXJyZW50LmVsZW1lbnQgPSBjdXJyZW50LnBhdGg7CiAgICAgIGN1cnJlbnQuc2V0Q3VycmVudFBvaW50KHgsIHkpOwogICAgfSwKCiAgICBlbmRQYXRoOiBmdW5jdGlvbiBTVkdHcmFwaGljc19lbmRQYXRoKCkgewogICAgICB2YXIgY3VycmVudCA9IHRoaXMuY3VycmVudDsKICAgICAgaWYgKGN1cnJlbnQucGVuZGluZ0NsaXApIHsKICAgICAgICB0aGlzLmNncnAuYXBwZW5kQ2hpbGQodGhpcy50Z3JwKTsKICAgICAgICB0aGlzLnBncnAuYXBwZW5kQ2hpbGQodGhpcy5jZ3JwKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLnBncnAuYXBwZW5kQ2hpbGQodGhpcy50Z3JwKTsKICAgICAgfQogICAgICB0aGlzLnRncnAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoTlMsICdzdmc6ZycpOwogICAgICB0aGlzLnRncnAuc2V0QXR0cmlidXRlTlMobnVsbCwgJ3RyYW5zZm9ybScsIHBtKHRoaXMudHJhbnNmb3JtTWF0cml4KSk7CiAgICB9LAoKICAgIGNsaXA6IGZ1bmN0aW9uIFNWR0dyYXBoaWNzX2NsaXAodHlwZSkgewogICAgICB2YXIgY3VycmVudCA9IHRoaXMuY3VycmVudDsKICAgICAgLy8gQWRkIGN1cnJlbnQgcGF0aCB0byBjbGlwcGluZyBwYXRoCiAgICAgIGN1cnJlbnQuY2xpcElkID0gJ2NsaXBwYXRoJyArIGNsaXBDb3VudDsKICAgICAgY2xpcENvdW50Kys7CiAgICAgIHRoaXMuY2xpcHBhdGggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoTlMsICdzdmc6Y2xpcFBhdGgnKTsKICAgICAgdGhpcy5jbGlwcGF0aC5zZXRBdHRyaWJ1dGVOUyhudWxsLCAnaWQnLCBjdXJyZW50LmNsaXBJZCk7CiAgICAgIHZhciBjbGlwRWxlbWVudCA9IGN1cnJlbnQuZWxlbWVudC5jbG9uZU5vZGUoKTsKICAgICAgaWYgKHR5cGUgPT09ICdldmVub2RkJykgewogICAgICAgIGNsaXBFbGVtZW50LnNldEF0dHJpYnV0ZU5TKG51bGwsICdjbGlwLXJ1bGUnLCAnZXZlbm9kZCcpOwogICAgICB9IGVsc2UgewogICAgICAgIGNsaXBFbGVtZW50LnNldEF0dHJpYnV0ZU5TKG51bGwsICdjbGlwLXJ1bGUnLCAnbm9uemVybycpOwogICAgICB9CiAgICAgIHRoaXMuY2xpcHBhdGguc2V0QXR0cmlidXRlTlMobnVsbCwgJ3RyYW5zZm9ybScsIHBtKHRoaXMudHJhbnNmb3JtTWF0cml4KSk7CiAgICAgIHRoaXMuY2xpcHBhdGguYXBwZW5kQ2hpbGQoY2xpcEVsZW1lbnQpOwogICAgICB0aGlzLmRlZnMuYXBwZW5kQ2hpbGQodGhpcy5jbGlwcGF0aCk7CgogICAgICAvLyBDcmVhdGUgYSBuZXcgZ3JvdXAgd2l0aCB0aGF0IGF0dHJpYnV0ZQogICAgICBjdXJyZW50LnBlbmRpbmdDbGlwID0gdHJ1ZTsKICAgICAgdGhpcy5jZ3JwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKE5TLCAnc3ZnOmcnKTsKICAgICAgdGhpcy5jZ3JwLnNldEF0dHJpYnV0ZU5TKG51bGwsICdjbGlwLXBhdGgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VybCgjJyArIGN1cnJlbnQuY2xpcElkICsgJyknKTsKICAgICAgdGhpcy5wZ3JwLmFwcGVuZENoaWxkKHRoaXMuY2dycCk7CiAgICB9LAoKICAgIGNsb3NlUGF0aDogZnVuY3Rpb24gU1ZHR3JhcGhpY3NfY2xvc2VQYXRoKCkgewogICAgICB2YXIgY3VycmVudCA9IHRoaXMuY3VycmVudDsKICAgICAgdmFyIGQgPSBjdXJyZW50LnBhdGguZ2V0QXR0cmlidXRlTlMobnVsbCwgJ2QnKTsKICAgICAgZCArPSAnWic7CiAgICAgIGN1cnJlbnQucGF0aC5zZXRBdHRyaWJ1dGVOUyhudWxsLCAnZCcsIGQpOwogICAgfSwKCiAgICBzZXRMZWFkaW5nOiBmdW5jdGlvbiBTVkdHcmFwaGljc19zZXRMZWFkaW5nKGxlYWRpbmcpIHsKICAgICAgdGhpcy5jdXJyZW50LmxlYWRpbmcgPSAtbGVhZGluZzsKICAgIH0sCgogICAgc2V0VGV4dFJpc2U6IGZ1bmN0aW9uIFNWR0dyYXBoaWNzX3NldFRleHRSaXNlKHRleHRSaXNlKSB7CiAgICAgIHRoaXMuY3VycmVudC50ZXh0UmlzZSA9IHRleHRSaXNlOwogICAgfSwKCiAgICBzZXRIU2NhbGU6IGZ1bmN0aW9uIFNWR0dyYXBoaWNzX3NldEhTY2FsZShzY2FsZSkgewogICAgICB0aGlzLmN1cnJlbnQudGV4dEhTY2FsZSA9IHNjYWxlIC8gMTAwOwogICAgfSwKCiAgICBzZXRHU3RhdGU6IGZ1bmN0aW9uIFNWR0dyYXBoaWNzX3NldEdTdGF0ZShzdGF0ZXMpIHsKICAgICAgZm9yICh2YXIgaSA9IDAsIGlpID0gc3RhdGVzLmxlbmd0aDsgaSA8IGlpOyBpKyspIHsKICAgICAgICB2YXIgc3RhdGUgPSBzdGF0ZXNbaV07CiAgICAgICAgdmFyIGtleSA9IHN0YXRlWzBdOwogICAgICAgIHZhciB2YWx1ZSA9IHN0YXRlWzFdOwoKICAgICAgICBzd2l0Y2ggKGtleSkgewogICAgICAgICAgY2FzZSAnTFcnOgogICAgICAgICAgICB0aGlzLnNldExpbmVXaWR0aCh2YWx1ZSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAnTEMnOgogICAgICAgICAgICB0aGlzLnNldExpbmVDYXAodmFsdWUpOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgJ0xKJzoKICAgICAgICAgICAgdGhpcy5zZXRMaW5lSm9pbih2YWx1ZSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAnTUwnOgogICAgICAgICAgICB0aGlzLnNldE1pdGVyTGltaXQodmFsdWUpOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgJ0QnOgogICAgICAgICAgICB0aGlzLnNldERhc2godmFsdWVbMF0sIHZhbHVlWzFdKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlICdSSSc6CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAnRkwnOgogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgJ0ZvbnQnOgogICAgICAgICAgICB0aGlzLnNldEZvbnQodmFsdWUpOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgJ0NBJzoKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlICdjYSc6CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAnQk0nOgogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgJ1NNYXNrJzoKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICB9CiAgICB9LAoKICAgIGZpbGw6IGZ1bmN0aW9uIFNWR0dyYXBoaWNzX2ZpbGwoKSB7CiAgICAgIHZhciBjdXJyZW50ID0gdGhpcy5jdXJyZW50OwogICAgICBjdXJyZW50LmVsZW1lbnQuc2V0QXR0cmlidXRlTlMobnVsbCwgJ2ZpbGwnLCBjdXJyZW50LmZpbGxDb2xvcik7CiAgICB9LAoKICAgIHN0cm9rZTogZnVuY3Rpb24gU1ZHR3JhcGhpY3Nfc3Ryb2tlKCkgewogICAgICB2YXIgY3VycmVudCA9IHRoaXMuY3VycmVudDsKICAgICAgY3VycmVudC5lbGVtZW50LnNldEF0dHJpYnV0ZU5TKG51bGwsICdzdHJva2UnLCBjdXJyZW50LnN0cm9rZUNvbG9yKTsKICAgICAgY3VycmVudC5lbGVtZW50LnNldEF0dHJpYnV0ZU5TKG51bGwsICdmaWxsJywgJ25vbmUnKTsKICAgIH0sCgogICAgZW9GaWxsOiBmdW5jdGlvbiBTVkdHcmFwaGljc19lb0ZpbGwoKSB7CiAgICAgIHZhciBjdXJyZW50ID0gdGhpcy5jdXJyZW50OwogICAgICBjdXJyZW50LmVsZW1lbnQuc2V0QXR0cmlidXRlTlMobnVsbCwgJ2ZpbGwnLCBjdXJyZW50LmZpbGxDb2xvcik7CiAgICAgIGN1cnJlbnQuZWxlbWVudC5zZXRBdHRyaWJ1dGVOUyhudWxsLCAnZmlsbC1ydWxlJywgJ2V2ZW5vZGQnKTsKICAgIH0sCgogICAgZmlsbFN0cm9rZTogZnVuY3Rpb24gU1ZHR3JhcGhpY3NfZmlsbFN0cm9rZSgpIHsKICAgICAgLy8gT3JkZXIgaXMgaW1wb3J0YW50IHNpbmNlIHN0cm9rZSB3YW50cyBmaWxsIHRvIGJlIG5vbmUuCiAgICAgIC8vIEZpcnN0IHN0cm9rZSwgdGhlbiBpZiBmaWxsIG5lZWRlZCwgaXQgd2lsbCBiZSBvdmVyd3JpdHRlbi4KICAgICAgdGhpcy5zdHJva2UoKTsKICAgICAgdGhpcy5maWxsKCk7CiAgICB9LAoKICAgIGVvRmlsbFN0cm9rZTogZnVuY3Rpb24gU1ZHR3JhcGhpY3NfZW9GaWxsU3Ryb2tlKCkgewogICAgICB0aGlzLmN1cnJlbnQuZWxlbWVudC5zZXRBdHRyaWJ1dGVOUyhudWxsLCAnZmlsbC1ydWxlJywgJ2V2ZW5vZGQnKTsKICAgICAgdGhpcy5maWxsU3Ryb2tlKCk7CiAgICB9LAoKICAgIGNsb3NlU3Ryb2tlOiBmdW5jdGlvbiBTVkdHcmFwaGljc19jbG9zZVN0cm9rZSgpIHsKICAgICAgdGhpcy5jbG9zZVBhdGgoKTsKICAgICAgdGhpcy5zdHJva2UoKTsKICAgIH0sCgogICAgY2xvc2VGaWxsU3Ryb2tlOiBmdW5jdGlvbiBTVkdHcmFwaGljc19jbG9zZUZpbGxTdHJva2UoKSB7CiAgICAgIHRoaXMuY2xvc2VQYXRoKCk7CiAgICAgIHRoaXMuZmlsbFN0cm9rZSgpOwogICAgfSwKCiAgICBwYWludFNvbGlkQ29sb3JJbWFnZU1hc2s6CiAgICAgICAgZnVuY3Rpb24gU1ZHR3JhcGhpY3NfcGFpbnRTb2xpZENvbG9ySW1hZ2VNYXNrKCkgewogICAgICB2YXIgY3VycmVudCA9IHRoaXMuY3VycmVudDsKICAgICAgdmFyIHJlY3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoTlMsICdzdmc6cmVjdCcpOwogICAgICByZWN0LnNldEF0dHJpYnV0ZU5TKG51bGwsICd4JywgJzAnKTsKICAgICAgcmVjdC5zZXRBdHRyaWJ1dGVOUyhudWxsLCAneScsICcwJyk7CiAgICAgIHJlY3Quc2V0QXR0cmlidXRlTlMobnVsbCwgJ3dpZHRoJywgJzFweCcpOwogICAgICByZWN0LnNldEF0dHJpYnV0ZU5TKG51bGwsICdoZWlnaHQnLCAnMXB4Jyk7CiAgICAgIHJlY3Quc2V0QXR0cmlidXRlTlMobnVsbCwgJ2ZpbGwnLCBjdXJyZW50LmZpbGxDb2xvcik7CiAgICAgIHRoaXMudGdycC5hcHBlbmRDaGlsZChyZWN0KTsKICAgIH0sCgogICAgcGFpbnRKcGVnWE9iamVjdDogZnVuY3Rpb24gU1ZHR3JhcGhpY3NfcGFpbnRKcGVnWE9iamVjdChvYmpJZCwgdywgaCkgewogICAgICB2YXIgY3VycmVudCA9IHRoaXMuY3VycmVudDsKICAgICAgdmFyIGltZ09iaiA9IHRoaXMub2Jqcy5nZXQob2JqSWQpOwogICAgICB2YXIgaW1nRWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoTlMsICdzdmc6aW1hZ2UnKTsKICAgICAgaW1nRWwuc2V0QXR0cmlidXRlTlMoWExJTktfTlMsICd4bGluazpocmVmJywgaW1nT2JqLnNyYyk7CiAgICAgIGltZ0VsLnNldEF0dHJpYnV0ZU5TKG51bGwsICd3aWR0aCcsIGltZ09iai53aWR0aCArICdweCcpOwogICAgICBpbWdFbC5zZXRBdHRyaWJ1dGVOUyhudWxsLCAnaGVpZ2h0JywgaW1nT2JqLmhlaWdodCArICdweCcpOwogICAgICBpbWdFbC5zZXRBdHRyaWJ1dGVOUyhudWxsLCAneCcsICcwJyk7CiAgICAgIGltZ0VsLnNldEF0dHJpYnV0ZU5TKG51bGwsICd5JywgcGYoLWgpKTsKICAgICAgaW1nRWwuc2V0QXR0cmlidXRlTlMobnVsbCwgJ3RyYW5zZm9ybScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdzY2FsZSgnICsgcGYoMSAvIHcpICsgJyAnICsgcGYoLTEgLyBoKSArICcpJyk7CgogICAgICB0aGlzLnRncnAuYXBwZW5kQ2hpbGQoaW1nRWwpOwogICAgICBpZiAoY3VycmVudC5wZW5kaW5nQ2xpcCkgewogICAgICAgIHRoaXMuY2dycC5hcHBlbmRDaGlsZCh0aGlzLnRncnApOwogICAgICAgIHRoaXMucGdycC5hcHBlbmRDaGlsZCh0aGlzLmNncnApOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMucGdycC5hcHBlbmRDaGlsZCh0aGlzLnRncnApOwogICAgICB9CiAgICB9LAoKICAgIHBhaW50SW1hZ2VYT2JqZWN0OiBmdW5jdGlvbiBTVkdHcmFwaGljc19wYWludEltYWdlWE9iamVjdChvYmpJZCkgewogICAgICB2YXIgaW1nRGF0YSA9IHRoaXMub2Jqcy5nZXQob2JqSWQpOwogICAgICBpZiAoIWltZ0RhdGEpIHsKICAgICAgICB3YXJuKCdEZXBlbmRlbnQgaW1hZ2UgaXNuXCd0IHJlYWR5IHlldCcpOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICB0aGlzLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0KGltZ0RhdGEpOwogICAgfSwKCiAgICBwYWludElubGluZUltYWdlWE9iamVjdDoKICAgICAgICBmdW5jdGlvbiBTVkdHcmFwaGljc19wYWludElubGluZUltYWdlWE9iamVjdChpbWdEYXRhLCBtYXNrKSB7CiAgICAgIHZhciBjdXJyZW50ID0gdGhpcy5jdXJyZW50OwogICAgICB2YXIgd2lkdGggPSBpbWdEYXRhLndpZHRoOwogICAgICB2YXIgaGVpZ2h0ID0gaW1nRGF0YS5oZWlnaHQ7CgogICAgICB2YXIgaW1nU3JjID0gY29udmVydEltZ0RhdGFUb1BuZyhpbWdEYXRhKTsKICAgICAgdmFyIGNsaXByZWN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKE5TLCAnc3ZnOnJlY3QnKTsKICAgICAgY2xpcHJlY3Quc2V0QXR0cmlidXRlTlMobnVsbCwgJ3gnLCAnMCcpOwogICAgICBjbGlwcmVjdC5zZXRBdHRyaWJ1dGVOUyhudWxsLCAneScsICcwJyk7CiAgICAgIGNsaXByZWN0LnNldEF0dHJpYnV0ZU5TKG51bGwsICd3aWR0aCcsIHBmKHdpZHRoKSk7CiAgICAgIGNsaXByZWN0LnNldEF0dHJpYnV0ZU5TKG51bGwsICdoZWlnaHQnLCBwZihoZWlnaHQpKTsKICAgICAgY3VycmVudC5lbGVtZW50ID0gY2xpcHJlY3Q7CiAgICAgIHRoaXMuY2xpcCgnbm9uemVybycpOwogICAgICB2YXIgaW1nRWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoTlMsICdzdmc6aW1hZ2UnKTsKICAgICAgaW1nRWwuc2V0QXR0cmlidXRlTlMoWExJTktfTlMsICd4bGluazpocmVmJywgaW1nU3JjKTsKICAgICAgaW1nRWwuc2V0QXR0cmlidXRlTlMobnVsbCwgJ3gnLCAnMCcpOwogICAgICBpbWdFbC5zZXRBdHRyaWJ1dGVOUyhudWxsLCAneScsIHBmKC1oZWlnaHQpKTsKICAgICAgaW1nRWwuc2V0QXR0cmlidXRlTlMobnVsbCwgJ3dpZHRoJywgcGYod2lkdGgpICsgJ3B4Jyk7CiAgICAgIGltZ0VsLnNldEF0dHJpYnV0ZU5TKG51bGwsICdoZWlnaHQnLCBwZihoZWlnaHQpICsgJ3B4Jyk7CiAgICAgIGltZ0VsLnNldEF0dHJpYnV0ZU5TKG51bGwsICd0cmFuc2Zvcm0nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAnc2NhbGUoJyArIHBmKDEgLyB3aWR0aCkgKyAnICcgKwogICAgICAgICAgICAgICAgICAgICAgICAgICBwZigtMSAvIGhlaWdodCkgKyAnKScpOwogICAgICBpZiAobWFzaykgewogICAgICAgIG1hc2suYXBwZW5kQ2hpbGQoaW1nRWwpOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMudGdycC5hcHBlbmRDaGlsZChpbWdFbCk7CiAgICAgIH0KICAgICAgaWYgKGN1cnJlbnQucGVuZGluZ0NsaXApIHsKICAgICAgICB0aGlzLmNncnAuYXBwZW5kQ2hpbGQodGhpcy50Z3JwKTsKICAgICAgICB0aGlzLnBncnAuYXBwZW5kQ2hpbGQodGhpcy5jZ3JwKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLnBncnAuYXBwZW5kQ2hpbGQodGhpcy50Z3JwKTsKICAgICAgfQogICAgfSwKCiAgICBwYWludEltYWdlTWFza1hPYmplY3Q6CiAgICAgICAgZnVuY3Rpb24gU1ZHR3JhcGhpY3NfcGFpbnRJbWFnZU1hc2tYT2JqZWN0KGltZ0RhdGEpIHsKICAgICAgdmFyIGN1cnJlbnQgPSB0aGlzLmN1cnJlbnQ7CiAgICAgIHZhciB3aWR0aCA9IGltZ0RhdGEud2lkdGg7CiAgICAgIHZhciBoZWlnaHQgPSBpbWdEYXRhLmhlaWdodDsKICAgICAgdmFyIGZpbGxDb2xvciA9IGN1cnJlbnQuZmlsbENvbG9yOwoKICAgICAgY3VycmVudC5tYXNrSWQgPSAnbWFzaycgKyBtYXNrQ291bnQrKzsKICAgICAgdmFyIG1hc2sgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoTlMsICdzdmc6bWFzaycpOwogICAgICBtYXNrLnNldEF0dHJpYnV0ZU5TKG51bGwsICdpZCcsIGN1cnJlbnQubWFza0lkKTsKCiAgICAgIHZhciByZWN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKE5TLCAnc3ZnOnJlY3QnKTsKICAgICAgcmVjdC5zZXRBdHRyaWJ1dGVOUyhudWxsLCAneCcsICcwJyk7CiAgICAgIHJlY3Quc2V0QXR0cmlidXRlTlMobnVsbCwgJ3knLCAnMCcpOwogICAgICByZWN0LnNldEF0dHJpYnV0ZU5TKG51bGwsICd3aWR0aCcsIHBmKHdpZHRoKSk7CiAgICAgIHJlY3Quc2V0QXR0cmlidXRlTlMobnVsbCwgJ2hlaWdodCcsIHBmKGhlaWdodCkpOwogICAgICByZWN0LnNldEF0dHJpYnV0ZU5TKG51bGwsICdmaWxsJywgZmlsbENvbG9yKTsKICAgICAgcmVjdC5zZXRBdHRyaWJ1dGVOUyhudWxsLCAnbWFzaycsICd1cmwoIycgKyBjdXJyZW50Lm1hc2tJZCArJyknKTsKICAgICAgdGhpcy5kZWZzLmFwcGVuZENoaWxkKG1hc2spOwogICAgICB0aGlzLnRncnAuYXBwZW5kQ2hpbGQocmVjdCk7CgogICAgICB0aGlzLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0KGltZ0RhdGEsIG1hc2spOwogICAgfSwKCiAgICBwYWludEZvcm1YT2JqZWN0QmVnaW46CiAgICAgICAgZnVuY3Rpb24gU1ZHR3JhcGhpY3NfcGFpbnRGb3JtWE9iamVjdEJlZ2luKG1hdHJpeCwgYmJveCkgewogICAgICB0aGlzLnNhdmUoKTsKCiAgICAgIGlmIChpc0FycmF5KG1hdHJpeCkgJiYgbWF0cml4Lmxlbmd0aCA9PT0gNikgewogICAgICAgIHRoaXMudHJhbnNmb3JtKG1hdHJpeFswXSwgbWF0cml4WzFdLCBtYXRyaXhbMl0sCiAgICAgICAgICAgICAgICAgICAgICAgbWF0cml4WzNdLCBtYXRyaXhbNF0sIG1hdHJpeFs1XSk7CiAgICAgIH0KCiAgICAgIGlmIChpc0FycmF5KGJib3gpICYmIGJib3gubGVuZ3RoID09PSA0KSB7CiAgICAgICAgdmFyIHdpZHRoID0gYmJveFsyXSAtIGJib3hbMF07CiAgICAgICAgdmFyIGhlaWdodCA9IGJib3hbM10gLSBiYm94WzFdOwoKICAgICAgICB2YXIgY2xpcHJlY3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoTlMsICdzdmc6cmVjdCcpOwogICAgICAgIGNsaXByZWN0LnNldEF0dHJpYnV0ZU5TKG51bGwsICd4JywgYmJveFswXSk7CiAgICAgICAgY2xpcHJlY3Quc2V0QXR0cmlidXRlTlMobnVsbCwgJ3knLCBiYm94WzFdKTsKICAgICAgICBjbGlwcmVjdC5zZXRBdHRyaWJ1dGVOUyhudWxsLCAnd2lkdGgnLCBwZih3aWR0aCkpOwogICAgICAgIGNsaXByZWN0LnNldEF0dHJpYnV0ZU5TKG51bGwsICdoZWlnaHQnLCBwZihoZWlnaHQpKTsKICAgICAgICB0aGlzLmN1cnJlbnQuZWxlbWVudCA9IGNsaXByZWN0OwogICAgICAgIHRoaXMuY2xpcCgnbm9uemVybycpOwogICAgICAgIHRoaXMuZW5kUGF0aCgpOwogICAgICB9CiAgICB9LAoKICAgIHBhaW50Rm9ybVhPYmplY3RFbmQ6CiAgICAgICAgZnVuY3Rpb24gU1ZHR3JhcGhpY3NfcGFpbnRGb3JtWE9iamVjdEVuZCgpIHsKICAgICAgdGhpcy5yZXN0b3JlKCk7CiAgICB9CiAgfTsKICByZXR1cm4gU1ZHR3JhcGhpY3M7Cn0pKCk7CgpQREZKUy5TVkdHcmFwaGljcyA9IFNWR0dyYXBoaWNzOwovLyNlbmRpZgoKCn0pLmNhbGwoKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSA/IHRoaXMgOiB3aW5kb3cpOwoKaWYgKCFQREZKUy53b3JrZXJTcmMgJiYgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykgewogIC8vIHdvcmtlclNyYyBpcyBub3Qgc2V0IC0tIHVzaW5nIGxhc3Qgc2NyaXB0IHVybCB0byBkZWZpbmUgZGVmYXVsdCBsb2NhdGlvbgogIFBERkpTLndvcmtlclNyYyA9IChmdW5jdGlvbiAoKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICB2YXIgc2NyaXB0VGFnQ29udGFpbmVyID0gZG9jdW1lbnQuYm9keSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07CiAgICB2YXIgcGRmanNTcmMgPSBzY3JpcHRUYWdDb250YWluZXIubGFzdENoaWxkLnNyYzsKICAgIHJldHVybiBwZGZqc1NyYyAmJiBwZGZqc1NyYy5yZXBsYWNlKC9cLmpzJC9pLCAnLndvcmtlci5qcycpOwogIH0pKCk7Cn0KCg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/ViewerJS/pdf.worker.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogLSotIE1vZGU6IEphdmE7IHRhYi13aWR0aDogMjsgaW5kZW50LXRhYnMtbW9kZTogbmlsOyBjLWJhc2ljLW9mZnNldDogMiAtKi0gKi8KLyogdmltOiBzZXQgc2hpZnR3aWR0aD0yIHRhYnN0b3A9MiBhdXRvaW5kZW50IGNpbmRlbnQgZXhwYW5kdGFiOiAqLwovKiBDb3B5cmlnaHQgMjAxMiBNb3ppbGxhIEZvdW5kYXRpb24KICoKICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAqCiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKICoKICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAogKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KICovCi8qanNoaW50IGdsb2JhbHN0cmljdDogZmFsc2UgKi8KLyogZ2xvYmFscyBQREZKUyAqLwoKLy8gSW5pdGlhbGl6aW5nIFBERkpTIGdsb2JhbCBvYmplY3QgKGlmIHN0aWxsIHVuZGVmaW5lZCkKaWYgKHR5cGVvZiBQREZKUyA9PT0gJ3VuZGVmaW5lZCcpIHsKICAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiB0aGlzKS5QREZKUyA9IHt9Owp9CgpQREZKUy52ZXJzaW9uID0gJzEuMS4xMTQnOwpQREZKUy5idWlsZCA9ICczZmQ0NGZkJzsKCihmdW5jdGlvbiBwZGZqc1dyYXBwZXIoKSB7CiAgLy8gVXNlIHN0cmljdCBpbiBvdXIgY29udGV4dCBvbmx5IC0gdXNlcnMgbWlnaHQgbm90IHdhbnQgaXQKICAndXNlIHN0cmljdCc7CgovKiAtKi0gTW9kZTogSmF2YTsgdGFiLXdpZHRoOiAyOyBpbmRlbnQtdGFicy1tb2RlOiBuaWw7IGMtYmFzaWMtb2Zmc2V0OiAyIC0qLSAqLwovKiB2aW06IHNldCBzaGlmdHdpZHRoPTIgdGFic3RvcD0yIGF1dG9pbmRlbnQgY2luZGVudCBleHBhbmR0YWI6ICovCi8qIENvcHlyaWdodCAyMDEyIE1vemlsbGEgRm91bmRhdGlvbgogKgogKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICoKICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogKgogKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogKi8KLyogZ2xvYmFscyBDbWQsIENvbG9yU3BhY2UsIERpY3QsIE1vekJsb2JCdWlsZGVyLCBOYW1lLCBQREZKUywgUmVmLCBVUkwsCiAgICAgICAgICAgUHJvbWlzZSAqLwoKJ3VzZSBzdHJpY3QnOwoKdmFyIGdsb2JhbFNjb3BlID0gKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSA/IHRoaXMgOiB3aW5kb3c7Cgp2YXIgaXNXb3JrZXIgPSAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpOwoKdmFyIEZPTlRfSURFTlRJVFlfTUFUUklYID0gWzAuMDAxLCAwLCAwLCAwLjAwMSwgMCwgMF07Cgp2YXIgVGV4dFJlbmRlcmluZ01vZGUgPSB7CiAgRklMTDogMCwKICBTVFJPS0U6IDEsCiAgRklMTF9TVFJPS0U6IDIsCiAgSU5WSVNJQkxFOiAzLAogIEZJTExfQUREX1RPX1BBVEg6IDQsCiAgU1RST0tFX0FERF9UT19QQVRIOiA1LAogIEZJTExfU1RST0tFX0FERF9UT19QQVRIOiA2LAogIEFERF9UT19QQVRIOiA3LAogIEZJTExfU1RST0tFX01BU0s6IDMsCiAgQUREX1RPX1BBVEhfRkxBRzogNAp9OwoKdmFyIEltYWdlS2luZCA9IHsKICBHUkFZU0NBTEVfMUJQUDogMSwKICBSR0JfMjRCUFA6IDIsCiAgUkdCQV8zMkJQUDogMwp9OwoKdmFyIEFubm90YXRpb25UeXBlID0gewogIFdJREdFVDogMSwKICBURVhUOiAyLAogIExJTks6IDMKfTsKCnZhciBTdHJlYW1UeXBlID0gewogIFVOS05PV046IDAsCiAgRkxBVEU6IDEsCiAgTFpXOiAyLAogIERDVDogMywKICBKUFg6IDQsCiAgSkJJRzogNSwKICBBODU6IDYsCiAgQUhYOiA3LAogIENDRjogOCwKICBSTDogOQp9OwoKdmFyIEZvbnRUeXBlID0gewogIFVOS05PV046IDAsCiAgVFlQRTE6IDEsCiAgVFlQRTFDOiAyLAogIENJREZPTlRUWVBFMDogMywKICBDSURGT05UVFlQRTBDOiA0LAogIFRSVUVUWVBFOiA1LAogIENJREZPTlRUWVBFMjogNiwKICBUWVBFMzogNywKICBPUEVOVFlQRTogOCwKICBUWVBFMDogOSwKICBNTVRZUEUxOiAxMAp9OwoKLy8gVGhlIGdsb2JhbCBQREZKUyBvYmplY3QgZXhwb3NlcyB0aGUgQVBJCi8vIEluIHByb2R1Y3Rpb24sIGl0IHdpbGwgYmUgZGVjbGFyZWQgb3V0c2lkZSBhIGdsb2JhbCB3cmFwcGVyCi8vIEluIGRldmVsb3BtZW50LCBpdCB3aWxsIGJlIGRlY2xhcmVkIGhlcmUKaWYgKCFnbG9iYWxTY29wZS5QREZKUykgewogIGdsb2JhbFNjb3BlLlBERkpTID0ge307Cn0KCmdsb2JhbFNjb3BlLlBERkpTLnBkZkJ1ZyA9IGZhbHNlOwoKUERGSlMuVkVSQk9TSVRZX0xFVkVMUyA9IHsKICBlcnJvcnM6IDAsCiAgd2FybmluZ3M6IDEsCiAgaW5mb3M6IDUKfTsKCi8vIEFsbCB0aGUgcG9zc2libGUgb3BlcmF0aW9ucyBmb3IgYW4gb3BlcmF0b3IgbGlzdC4KdmFyIE9QUyA9IFBERkpTLk9QUyA9IHsKICAvLyBJbnRlbnRpb25hbGx5IHN0YXJ0IGZyb20gMSBzbyBpdCBpcyBlYXN5IHRvIHNwb3QgYmFkIG9wZXJhdG9ycyB0aGF0IHdpbGwgYmUKICAvLyAwJ3MuCiAgZGVwZW5kZW5jeTogMSwKICBzZXRMaW5lV2lkdGg6IDIsCiAgc2V0TGluZUNhcDogMywKICBzZXRMaW5lSm9pbjogNCwKICBzZXRNaXRlckxpbWl0OiA1LAogIHNldERhc2g6IDYsCiAgc2V0UmVuZGVyaW5nSW50ZW50OiA3LAogIHNldEZsYXRuZXNzOiA4LAogIHNldEdTdGF0ZTogOSwKICBzYXZlOiAxMCwKICByZXN0b3JlOiAxMSwKICB0cmFuc2Zvcm06IDEyLAogIG1vdmVUbzogMTMsCiAgbGluZVRvOiAxNCwKICBjdXJ2ZVRvOiAxNSwKICBjdXJ2ZVRvMjogMTYsCiAgY3VydmVUbzM6IDE3LAogIGNsb3NlUGF0aDogMTgsCiAgcmVjdGFuZ2xlOiAxOSwKICBzdHJva2U6IDIwLAogIGNsb3NlU3Ryb2tlOiAyMSwKICBmaWxsOiAyMiwKICBlb0ZpbGw6IDIzLAogIGZpbGxTdHJva2U6IDI0LAogIGVvRmlsbFN0cm9rZTogMjUsCiAgY2xvc2VGaWxsU3Ryb2tlOiAyNiwKICBjbG9zZUVPRmlsbFN0cm9rZTogMjcsCiAgZW5kUGF0aDogMjgsCiAgY2xpcDogMjksCiAgZW9DbGlwOiAzMCwKICBiZWdpblRleHQ6IDMxLAogIGVuZFRleHQ6IDMyLAogIHNldENoYXJTcGFjaW5nOiAzMywKICBzZXRXb3JkU3BhY2luZzogMzQsCiAgc2V0SFNjYWxlOiAzNSwKICBzZXRMZWFkaW5nOiAzNiwKICBzZXRGb250OiAzNywKICBzZXRUZXh0UmVuZGVyaW5nTW9kZTogMzgsCiAgc2V0VGV4dFJpc2U6IDM5LAogIG1vdmVUZXh0OiA0MCwKICBzZXRMZWFkaW5nTW92ZVRleHQ6IDQxLAogIHNldFRleHRNYXRyaXg6IDQyLAogIG5leHRMaW5lOiA0MywKICBzaG93VGV4dDogNDQsCiAgc2hvd1NwYWNlZFRleHQ6IDQ1LAogIG5leHRMaW5lU2hvd1RleHQ6IDQ2LAogIG5leHRMaW5lU2V0U3BhY2luZ1Nob3dUZXh0OiA0NywKICBzZXRDaGFyV2lkdGg6IDQ4LAogIHNldENoYXJXaWR0aEFuZEJvdW5kczogNDksCiAgc2V0U3Ryb2tlQ29sb3JTcGFjZTogNTAsCiAgc2V0RmlsbENvbG9yU3BhY2U6IDUxLAogIHNldFN0cm9rZUNvbG9yOiA1MiwKICBzZXRTdHJva2VDb2xvck46IDUzLAogIHNldEZpbGxDb2xvcjogNTQsCiAgc2V0RmlsbENvbG9yTjogNTUsCiAgc2V0U3Ryb2tlR3JheTogNTYsCiAgc2V0RmlsbEdyYXk6IDU3LAogIHNldFN0cm9rZVJHQkNvbG9yOiA1OCwKICBzZXRGaWxsUkdCQ29sb3I6IDU5LAogIHNldFN0cm9rZUNNWUtDb2xvcjogNjAsCiAgc2V0RmlsbENNWUtDb2xvcjogNjEsCiAgc2hhZGluZ0ZpbGw6IDYyLAogIGJlZ2luSW5saW5lSW1hZ2U6IDYzLAogIGJlZ2luSW1hZ2VEYXRhOiA2NCwKICBlbmRJbmxpbmVJbWFnZTogNjUsCiAgcGFpbnRYT2JqZWN0OiA2NiwKICBtYXJrUG9pbnQ6IDY3LAogIG1hcmtQb2ludFByb3BzOiA2OCwKICBiZWdpbk1hcmtlZENvbnRlbnQ6IDY5LAogIGJlZ2luTWFya2VkQ29udGVudFByb3BzOiA3MCwKICBlbmRNYXJrZWRDb250ZW50OiA3MSwKICBiZWdpbkNvbXBhdDogNzIsCiAgZW5kQ29tcGF0OiA3MywKICBwYWludEZvcm1YT2JqZWN0QmVnaW46IDc0LAogIHBhaW50Rm9ybVhPYmplY3RFbmQ6IDc1LAogIGJlZ2luR3JvdXA6IDc2LAogIGVuZEdyb3VwOiA3NywKICBiZWdpbkFubm90YXRpb25zOiA3OCwKICBlbmRBbm5vdGF0aW9uczogNzksCiAgYmVnaW5Bbm5vdGF0aW9uOiA4MCwKICBlbmRBbm5vdGF0aW9uOiA4MSwKICBwYWludEpwZWdYT2JqZWN0OiA4MiwKICBwYWludEltYWdlTWFza1hPYmplY3Q6IDgzLAogIHBhaW50SW1hZ2VNYXNrWE9iamVjdEdyb3VwOiA4NCwKICBwYWludEltYWdlWE9iamVjdDogODUsCiAgcGFpbnRJbmxpbmVJbWFnZVhPYmplY3Q6IDg2LAogIHBhaW50SW5saW5lSW1hZ2VYT2JqZWN0R3JvdXA6IDg3LAogIHBhaW50SW1hZ2VYT2JqZWN0UmVwZWF0OiA4OCwKICBwYWludEltYWdlTWFza1hPYmplY3RSZXBlYXQ6IDg5LAogIHBhaW50U29saWRDb2xvckltYWdlTWFzazogOTAsCiAgY29uc3RydWN0UGF0aDogOTEKfTsKCi8vIEEgbm90aWNlIGZvciBkZXZzLiBUaGVzZSBhcmUgZ29vZCBmb3IgdGhpbmdzIHRoYXQgYXJlIGhlbHBmdWwgdG8gZGV2cywgc3VjaAovLyBhcyB3YXJuaW5nIHRoYXQgV29ya2VycyB3ZXJlIGRpc2FibGVkLCB3aGljaCBpcyBpbXBvcnRhbnQgdG8gZGV2cyBidXQgbm90Ci8vIGVuZCB1c2Vycy4KZnVuY3Rpb24gaW5mbyhtc2cpIHsKICBpZiAoUERGSlMudmVyYm9zaXR5ID49IFBERkpTLlZFUkJPU0lUWV9MRVZFTFMuaW5mb3MpIHsKICAgIGNvbnNvbGUubG9nKCdJbmZvOiAnICsgbXNnKTsKICB9Cn0KCi8vIE5vbi1mYXRhbCB3YXJuaW5ncy4KZnVuY3Rpb24gd2Fybihtc2cpIHsKICBpZiAoUERGSlMudmVyYm9zaXR5ID49IFBERkpTLlZFUkJPU0lUWV9MRVZFTFMud2FybmluZ3MpIHsKICAgIGNvbnNvbGUubG9nKCdXYXJuaW5nOiAnICsgbXNnKTsKICB9Cn0KCi8vIEZhdGFsIGVycm9ycyB0aGF0IHNob3VsZCB0cmlnZ2VyIHRoZSBmYWxsYmFjayBVSSBhbmQgaGFsdCBleGVjdXRpb24gYnkKLy8gdGhyb3dpbmcgYW4gZXhjZXB0aW9uLgpmdW5jdGlvbiBlcnJvcihtc2cpIHsKICBpZiAoUERGSlMudmVyYm9zaXR5ID49IFBERkpTLlZFUkJPU0lUWV9MRVZFTFMuZXJyb3JzKSB7CiAgICBjb25zb2xlLmxvZygnRXJyb3I6ICcgKyBtc2cpOwogICAgY29uc29sZS5sb2coYmFja3RyYWNlKCkpOwogIH0KICBVbnN1cHBvcnRlZE1hbmFnZXIubm90aWZ5KFVOU1VQUE9SVEVEX0ZFQVRVUkVTLnVua25vd24pOwogIHRocm93IG5ldyBFcnJvcihtc2cpOwp9CgpmdW5jdGlvbiBiYWNrdHJhY2UoKSB7CiAgdHJ5IHsKICAgIHRocm93IG5ldyBFcnJvcigpOwogIH0gY2F0Y2ggKGUpIHsKICAgIHJldHVybiBlLnN0YWNrID8gZS5zdGFjay5zcGxpdCgnXG4nKS5zbGljZSgyKS5qb2luKCdcbicpIDogJyc7CiAgfQp9CgpmdW5jdGlvbiBhc3NlcnQoY29uZCwgbXNnKSB7CiAgaWYgKCFjb25kKSB7CiAgICBlcnJvcihtc2cpOwogIH0KfQoKdmFyIFVOU1VQUE9SVEVEX0ZFQVRVUkVTID0gUERGSlMuVU5TVVBQT1JURURfRkVBVFVSRVMgPSB7CiAgdW5rbm93bjogJ3Vua25vd24nLAogIGZvcm1zOiAnZm9ybXMnLAogIGphdmFTY3JpcHQ6ICdqYXZhU2NyaXB0JywKICBzbWFzazogJ3NtYXNrJywKICBzaGFkaW5nUGF0dGVybjogJ3NoYWRpbmdQYXR0ZXJuJywKICBmb250OiAnZm9udCcKfTsKCnZhciBVbnN1cHBvcnRlZE1hbmFnZXIgPSBQREZKUy5VbnN1cHBvcnRlZE1hbmFnZXIgPQogIChmdW5jdGlvbiBVbnN1cHBvcnRlZE1hbmFnZXJDbG9zdXJlKCkgewogIHZhciBsaXN0ZW5lcnMgPSBbXTsKICByZXR1cm4gewogICAgbGlzdGVuOiBmdW5jdGlvbiAoY2IpIHsKICAgICAgbGlzdGVuZXJzLnB1c2goY2IpOwogICAgfSwKICAgIG5vdGlmeTogZnVuY3Rpb24gKGZlYXR1cmVJZCkgewogICAgICB3YXJuKCdVbnN1cHBvcnRlZCBmZWF0dXJlICInICsgZmVhdHVyZUlkICsgJyInKTsKICAgICAgZm9yICh2YXIgaSA9IDAsIGlpID0gbGlzdGVuZXJzLmxlbmd0aDsgaSA8IGlpOyBpKyspIHsKICAgICAgICBsaXN0ZW5lcnNbaV0oZmVhdHVyZUlkKTsKICAgICAgfQogICAgfQogIH07Cn0pKCk7CgovLyBDb21iaW5lcyB0d28gVVJMcy4gVGhlIGJhc2VVcmwgc2hhbGwgYmUgYWJzb2x1dGUgVVJMLiBJZiB0aGUgdXJsIGlzIGFuCi8vIGFic29sdXRlIFVSTCwgaXQgd2lsbCBiZSByZXR1cm5lZCBhcyBpcy4KZnVuY3Rpb24gY29tYmluZVVybChiYXNlVXJsLCB1cmwpIHsKICBpZiAoIXVybCkgewogICAgcmV0dXJuIGJhc2VVcmw7CiAgfQogIGlmICgvXlthLXpdW2EtejAtOStcLS5dKjovaS50ZXN0KHVybCkpIHsKICAgIHJldHVybiB1cmw7CiAgfQogIHZhciBpOwogIGlmICh1cmwuY2hhckF0KDApID09PSAnLycpIHsKICAgIC8vIGFic29sdXRlIHBhdGgKICAgIGkgPSBiYXNlVXJsLmluZGV4T2YoJzovLycpOwogICAgaWYgKHVybC5jaGFyQXQoMSkgPT09ICcvJykgewogICAgICArK2k7CiAgICB9IGVsc2UgewogICAgICBpID0gYmFzZVVybC5pbmRleE9mKCcvJywgaSArIDMpOwogICAgfQogICAgcmV0dXJuIGJhc2VVcmwuc3Vic3RyaW5nKDAsIGkpICsgdXJsOwogIH0gZWxzZSB7CiAgICAvLyByZWxhdGl2ZSBwYXRoCiAgICB2YXIgcGF0aExlbmd0aCA9IGJhc2VVcmwubGVuZ3RoOwogICAgaSA9IGJhc2VVcmwubGFzdEluZGV4T2YoJyMnKTsKICAgIHBhdGhMZW5ndGggPSBpID49IDAgPyBpIDogcGF0aExlbmd0aDsKICAgIGkgPSBiYXNlVXJsLmxhc3RJbmRleE9mKCc/JywgcGF0aExlbmd0aCk7CiAgICBwYXRoTGVuZ3RoID0gaSA+PSAwID8gaSA6IHBhdGhMZW5ndGg7CiAgICB2YXIgcHJlZml4TGVuZ3RoID0gYmFzZVVybC5sYXN0SW5kZXhPZignLycsIHBhdGhMZW5ndGgpOwogICAgcmV0dXJuIGJhc2VVcmwuc3Vic3RyaW5nKDAsIHByZWZpeExlbmd0aCArIDEpICsgdXJsOwogIH0KfQoKLy8gVmFsaWRhdGVzIGlmIFVSTCBpcyBzYWZlIGFuZCBhbGxvd2VkLCBlLmcuIHRvIGF2b2lkIFhTUy4KZnVuY3Rpb24gaXNWYWxpZFVybCh1cmwsIGFsbG93UmVsYXRpdmUpIHsKICBpZiAoIXVybCkgewogICAgcmV0dXJuIGZhbHNlOwogIH0KICAvLyBSRkMgMzk4NiAoaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTMuMSkKICAvLyBzY2hlbWUgPSBBTFBIQSAqKCBBTFBIQSAvIERJR0lUIC8gIisiIC8gIi0iIC8gIi4iICkKICB2YXIgcHJvdG9jb2wgPSAvXlthLXpdW2EtejAtOStcLS5dKig/PTopL2kuZXhlYyh1cmwpOwogIGlmICghcHJvdG9jb2wpIHsKICAgIHJldHVybiBhbGxvd1JlbGF0aXZlOwogIH0KICBwcm90b2NvbCA9IHByb3RvY29sWzBdLnRvTG93ZXJDYXNlKCk7CiAgc3dpdGNoIChwcm90b2NvbCkgewogICAgY2FzZSAnaHR0cCc6CiAgICBjYXNlICdodHRwcyc6CiAgICBjYXNlICdmdHAnOgogICAgY2FzZSAnbWFpbHRvJzoKICAgIGNhc2UgJ3RlbCc6CiAgICAgIHJldHVybiB0cnVlOwogICAgZGVmYXVsdDoKICAgICAgcmV0dXJuIGZhbHNlOwogIH0KfQpQREZKUy5pc1ZhbGlkVXJsID0gaXNWYWxpZFVybDsKCmZ1bmN0aW9uIHNoYWRvdyhvYmosIHByb3AsIHZhbHVlKSB7CiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwgcHJvcCwgeyB2YWx1ZTogdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6IGZhbHNlIH0pOwogIHJldHVybiB2YWx1ZTsKfQpQREZKUy5zaGFkb3cgPSBzaGFkb3c7Cgp2YXIgUGFzc3dvcmRSZXNwb25zZXMgPSBQREZKUy5QYXNzd29yZFJlc3BvbnNlcyA9IHsKICBORUVEX1BBU1NXT1JEOiAxLAogIElOQ09SUkVDVF9QQVNTV09SRDogMgp9OwoKdmFyIFBhc3N3b3JkRXhjZXB0aW9uID0gKGZ1bmN0aW9uIFBhc3N3b3JkRXhjZXB0aW9uQ2xvc3VyZSgpIHsKICBmdW5jdGlvbiBQYXNzd29yZEV4Y2VwdGlvbihtc2csIGNvZGUpIHsKICAgIHRoaXMubmFtZSA9ICdQYXNzd29yZEV4Y2VwdGlvbic7CiAgICB0aGlzLm1lc3NhZ2UgPSBtc2c7CiAgICB0aGlzLmNvZGUgPSBjb2RlOwogIH0KCiAgUGFzc3dvcmRFeGNlcHRpb24ucHJvdG90eXBlID0gbmV3IEVycm9yKCk7CiAgUGFzc3dvcmRFeGNlcHRpb24uY29uc3RydWN0b3IgPSBQYXNzd29yZEV4Y2VwdGlvbjsKCiAgcmV0dXJuIFBhc3N3b3JkRXhjZXB0aW9uOwp9KSgpOwpQREZKUy5QYXNzd29yZEV4Y2VwdGlvbiA9IFBhc3N3b3JkRXhjZXB0aW9uOwoKdmFyIFVua25vd25FcnJvckV4Y2VwdGlvbiA9IChmdW5jdGlvbiBVbmtub3duRXJyb3JFeGNlcHRpb25DbG9zdXJlKCkgewogIGZ1bmN0aW9uIFVua25vd25FcnJvckV4Y2VwdGlvbihtc2csIGRldGFpbHMpIHsKICAgIHRoaXMubmFtZSA9ICdVbmtub3duRXJyb3JFeGNlcHRpb24nOwogICAgdGhpcy5tZXNzYWdlID0gbXNnOwogICAgdGhpcy5kZXRhaWxzID0gZGV0YWlsczsKICB9CgogIFVua25vd25FcnJvckV4Y2VwdGlvbi5wcm90b3R5cGUgPSBuZXcgRXJyb3IoKTsKICBVbmtub3duRXJyb3JFeGNlcHRpb24uY29uc3RydWN0b3IgPSBVbmtub3duRXJyb3JFeGNlcHRpb247CgogIHJldHVybiBVbmtub3duRXJyb3JFeGNlcHRpb247Cn0pKCk7ClBERkpTLlVua25vd25FcnJvckV4Y2VwdGlvbiA9IFVua25vd25FcnJvckV4Y2VwdGlvbjsKCnZhciBJbnZhbGlkUERGRXhjZXB0aW9uID0gKGZ1bmN0aW9uIEludmFsaWRQREZFeGNlcHRpb25DbG9zdXJlKCkgewogIGZ1bmN0aW9uIEludmFsaWRQREZFeGNlcHRpb24obXNnKSB7CiAgICB0aGlzLm5hbWUgPSAnSW52YWxpZFBERkV4Y2VwdGlvbic7CiAgICB0aGlzLm1lc3NhZ2UgPSBtc2c7CiAgfQoKICBJbnZhbGlkUERGRXhjZXB0aW9uLnByb3RvdHlwZSA9IG5ldyBFcnJvcigpOwogIEludmFsaWRQREZFeGNlcHRpb24uY29uc3RydWN0b3IgPSBJbnZhbGlkUERGRXhjZXB0aW9uOwoKICByZXR1cm4gSW52YWxpZFBERkV4Y2VwdGlvbjsKfSkoKTsKUERGSlMuSW52YWxpZFBERkV4Y2VwdGlvbiA9IEludmFsaWRQREZFeGNlcHRpb247Cgp2YXIgTWlzc2luZ1BERkV4Y2VwdGlvbiA9IChmdW5jdGlvbiBNaXNzaW5nUERGRXhjZXB0aW9uQ2xvc3VyZSgpIHsKICBmdW5jdGlvbiBNaXNzaW5nUERGRXhjZXB0aW9uKG1zZykgewogICAgdGhpcy5uYW1lID0gJ01pc3NpbmdQREZFeGNlcHRpb24nOwogICAgdGhpcy5tZXNzYWdlID0gbXNnOwogIH0KCiAgTWlzc2luZ1BERkV4Y2VwdGlvbi5wcm90b3R5cGUgPSBuZXcgRXJyb3IoKTsKICBNaXNzaW5nUERGRXhjZXB0aW9uLmNvbnN0cnVjdG9yID0gTWlzc2luZ1BERkV4Y2VwdGlvbjsKCiAgcmV0dXJuIE1pc3NpbmdQREZFeGNlcHRpb247Cn0pKCk7ClBERkpTLk1pc3NpbmdQREZFeGNlcHRpb24gPSBNaXNzaW5nUERGRXhjZXB0aW9uOwoKdmFyIFVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbiA9CiAgICAoZnVuY3Rpb24gVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uQ2xvc3VyZSgpIHsKICBmdW5jdGlvbiBVbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24obXNnLCBzdGF0dXMpIHsKICAgIHRoaXMubmFtZSA9ICdVbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24nOwogICAgdGhpcy5tZXNzYWdlID0gbXNnOwogICAgdGhpcy5zdGF0dXMgPSBzdGF0dXM7CiAgfQoKICBVbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24ucHJvdG90eXBlID0gbmV3IEVycm9yKCk7CiAgVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uLmNvbnN0cnVjdG9yID0gVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uOwoKICByZXR1cm4gVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uOwp9KSgpOwpQREZKUy5VbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24gPSBVbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb247Cgp2YXIgTm90SW1wbGVtZW50ZWRFeGNlcHRpb24gPSAoZnVuY3Rpb24gTm90SW1wbGVtZW50ZWRFeGNlcHRpb25DbG9zdXJlKCkgewogIGZ1bmN0aW9uIE5vdEltcGxlbWVudGVkRXhjZXB0aW9uKG1zZykgewogICAgdGhpcy5tZXNzYWdlID0gbXNnOwogIH0KCiAgTm90SW1wbGVtZW50ZWRFeGNlcHRpb24ucHJvdG90eXBlID0gbmV3IEVycm9yKCk7CiAgTm90SW1wbGVtZW50ZWRFeGNlcHRpb24ucHJvdG90eXBlLm5hbWUgPSAnTm90SW1wbGVtZW50ZWRFeGNlcHRpb24nOwogIE5vdEltcGxlbWVudGVkRXhjZXB0aW9uLmNvbnN0cnVjdG9yID0gTm90SW1wbGVtZW50ZWRFeGNlcHRpb247CgogIHJldHVybiBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbjsKfSkoKTsKCnZhciBNaXNzaW5nRGF0YUV4Y2VwdGlvbiA9IChmdW5jdGlvbiBNaXNzaW5nRGF0YUV4Y2VwdGlvbkNsb3N1cmUoKSB7CiAgZnVuY3Rpb24gTWlzc2luZ0RhdGFFeGNlcHRpb24oYmVnaW4sIGVuZCkgewogICAgdGhpcy5iZWdpbiA9IGJlZ2luOwogICAgdGhpcy5lbmQgPSBlbmQ7CiAgICB0aGlzLm1lc3NhZ2UgPSAnTWlzc2luZyBkYXRhIFsnICsgYmVnaW4gKyAnLCAnICsgZW5kICsgJyknOwogIH0KCiAgTWlzc2luZ0RhdGFFeGNlcHRpb24ucHJvdG90eXBlID0gbmV3IEVycm9yKCk7CiAgTWlzc2luZ0RhdGFFeGNlcHRpb24ucHJvdG90eXBlLm5hbWUgPSAnTWlzc2luZ0RhdGFFeGNlcHRpb24nOwogIE1pc3NpbmdEYXRhRXhjZXB0aW9uLmNvbnN0cnVjdG9yID0gTWlzc2luZ0RhdGFFeGNlcHRpb247CgogIHJldHVybiBNaXNzaW5nRGF0YUV4Y2VwdGlvbjsKfSkoKTsKCnZhciBYUmVmUGFyc2VFeGNlcHRpb24gPSAoZnVuY3Rpb24gWFJlZlBhcnNlRXhjZXB0aW9uQ2xvc3VyZSgpIHsKICBmdW5jdGlvbiBYUmVmUGFyc2VFeGNlcHRpb24obXNnKSB7CiAgICB0aGlzLm1lc3NhZ2UgPSBtc2c7CiAgfQoKICBYUmVmUGFyc2VFeGNlcHRpb24ucHJvdG90eXBlID0gbmV3IEVycm9yKCk7CiAgWFJlZlBhcnNlRXhjZXB0aW9uLnByb3RvdHlwZS5uYW1lID0gJ1hSZWZQYXJzZUV4Y2VwdGlvbic7CiAgWFJlZlBhcnNlRXhjZXB0aW9uLmNvbnN0cnVjdG9yID0gWFJlZlBhcnNlRXhjZXB0aW9uOwoKICByZXR1cm4gWFJlZlBhcnNlRXhjZXB0aW9uOwp9KSgpOwoKCmZ1bmN0aW9uIGJ5dGVzVG9TdHJpbmcoYnl0ZXMpIHsKICBhc3NlcnQoYnl0ZXMgIT09IG51bGwgJiYgdHlwZW9mIGJ5dGVzID09PSAnb2JqZWN0JyAmJgogICAgICAgICBieXRlcy5sZW5ndGggIT09IHVuZGVmaW5lZCwgJ0ludmFsaWQgYXJndW1lbnQgZm9yIGJ5dGVzVG9TdHJpbmcnKTsKICB2YXIgbGVuZ3RoID0gYnl0ZXMubGVuZ3RoOwogIHZhciBNQVhfQVJHVU1FTlRfQ09VTlQgPSA4MTkyOwogIGlmIChsZW5ndGggPCBNQVhfQVJHVU1FTlRfQ09VTlQpIHsKICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsIGJ5dGVzKTsKICB9CiAgdmFyIHN0ckJ1ZiA9IFtdOwogIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpICs9IE1BWF9BUkdVTUVOVF9DT1VOVCkgewogICAgdmFyIGNodW5rRW5kID0gTWF0aC5taW4oaSArIE1BWF9BUkdVTUVOVF9DT1VOVCwgbGVuZ3RoKTsKICAgIHZhciBjaHVuayA9IGJ5dGVzLnN1YmFycmF5KGksIGNodW5rRW5kKTsKICAgIHN0ckJ1Zi5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCwgY2h1bmspKTsKICB9CiAgcmV0dXJuIHN0ckJ1Zi5qb2luKCcnKTsKfQoKZnVuY3Rpb24gc3RyaW5nVG9CeXRlcyhzdHIpIHsKICBhc3NlcnQodHlwZW9mIHN0ciA9PT0gJ3N0cmluZycsICdJbnZhbGlkIGFyZ3VtZW50IGZvciBzdHJpbmdUb0J5dGVzJyk7CiAgdmFyIGxlbmd0aCA9IHN0ci5sZW5ndGg7CiAgdmFyIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkobGVuZ3RoKTsKICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICBieXRlc1tpXSA9IHN0ci5jaGFyQ29kZUF0KGkpICYgMHhGRjsKICB9CiAgcmV0dXJuIGJ5dGVzOwp9CgpmdW5jdGlvbiBzdHJpbmczMih2YWx1ZSkgewogIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKCh2YWx1ZSA+PiAyNCkgJiAweGZmLCAodmFsdWUgPj4gMTYpICYgMHhmZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUgPj4gOCkgJiAweGZmLCB2YWx1ZSAmIDB4ZmYpOwp9CgpmdW5jdGlvbiBsb2cyKHgpIHsKICB2YXIgbiA9IDEsIGkgPSAwOwogIHdoaWxlICh4ID4gbikgewogICAgbiA8PD0gMTsKICAgIGkrKzsKICB9CiAgcmV0dXJuIGk7Cn0KCmZ1bmN0aW9uIHJlYWRJbnQ4KGRhdGEsIHN0YXJ0KSB7CiAgcmV0dXJuIChkYXRhW3N0YXJ0XSA8PCAyNCkgPj4gMjQ7Cn0KCmZ1bmN0aW9uIHJlYWRVaW50MTYoZGF0YSwgb2Zmc2V0KSB7CiAgcmV0dXJuIChkYXRhW29mZnNldF0gPDwgOCkgfCBkYXRhW29mZnNldCArIDFdOwp9CgpmdW5jdGlvbiByZWFkVWludDMyKGRhdGEsIG9mZnNldCkgewogIHJldHVybiAoKGRhdGFbb2Zmc2V0XSA8PCAyNCkgfCAoZGF0YVtvZmZzZXQgKyAxXSA8PCAxNikgfAogICAgICAgICAoZGF0YVtvZmZzZXQgKyAyXSA8PCA4KSB8IGRhdGFbb2Zmc2V0ICsgM10pID4+PiAwOwp9CgovLyBMYXp5IHRlc3QgdGhlIGVuZGlhbm5lc3Mgb2YgdGhlIHBsYXRmb3JtCi8vIE5PVEU6IFRoaXMgd2lsbCBiZSAndHJ1ZScgZm9yIHNpbXVsYXRlZCBUeXBlZEFycmF5cwpmdW5jdGlvbiBpc0xpdHRsZUVuZGlhbigpIHsKICB2YXIgYnVmZmVyOCA9IG5ldyBVaW50OEFycmF5KDIpOwogIGJ1ZmZlcjhbMF0gPSAxOwogIHZhciBidWZmZXIxNiA9IG5ldyBVaW50MTZBcnJheShidWZmZXI4LmJ1ZmZlcik7CiAgcmV0dXJuIChidWZmZXIxNlswXSA9PT0gMSk7Cn0KCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShQREZKUywgJ2lzTGl0dGxlRW5kaWFuJywgewogIGNvbmZpZ3VyYWJsZTogdHJ1ZSwKICBnZXQ6IGZ1bmN0aW9uIFBERkpTX2lzTGl0dGxlRW5kaWFuKCkgewogICAgcmV0dXJuIHNoYWRvdyhQREZKUywgJ2lzTGl0dGxlRW5kaWFuJywgaXNMaXR0bGVFbmRpYW4oKSk7CiAgfQp9KTsKCi8vI2lmICEoRklSRUZPWCB8fCBNT1pDRU5UUkFMIHx8IEIyRyB8fCBDSFJPTUUpCi8vLy8gTGF6eSB0ZXN0IGlmIHRoZSB1c2VyQWdhbnQgc3VwcG9ydCBDYW52YXNUeXBlZEFycmF5cwpmdW5jdGlvbiBoYXNDYW52YXNUeXBlZEFycmF5cygpIHsKICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7CiAgY2FudmFzLndpZHRoID0gY2FudmFzLmhlaWdodCA9IDE7CiAgdmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOwogIHZhciBpbWFnZURhdGEgPSBjdHguY3JlYXRlSW1hZ2VEYXRhKDEsIDEpOwogIHJldHVybiAodHlwZW9mIGltYWdlRGF0YS5kYXRhLmJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcpOwp9CgpPYmplY3QuZGVmaW5lUHJvcGVydHkoUERGSlMsICdoYXNDYW52YXNUeXBlZEFycmF5cycsIHsKICBjb25maWd1cmFibGU6IHRydWUsCiAgZ2V0OiBmdW5jdGlvbiBQREZKU19oYXNDYW52YXNUeXBlZEFycmF5cygpIHsKICAgIHJldHVybiBzaGFkb3coUERGSlMsICdoYXNDYW52YXNUeXBlZEFycmF5cycsIGhhc0NhbnZhc1R5cGVkQXJyYXlzKCkpOwogIH0KfSk7Cgp2YXIgVWludDMyQXJyYXlWaWV3ID0gKGZ1bmN0aW9uIFVpbnQzMkFycmF5Vmlld0Nsb3N1cmUoKSB7CgogIGZ1bmN0aW9uIFVpbnQzMkFycmF5VmlldyhidWZmZXIsIGxlbmd0aCkgewogICAgdGhpcy5idWZmZXIgPSBidWZmZXI7CiAgICB0aGlzLmJ5dGVMZW5ndGggPSBidWZmZXIubGVuZ3RoOwogICAgdGhpcy5sZW5ndGggPSBsZW5ndGggPT09IHVuZGVmaW5lZCA/ICh0aGlzLmJ5dGVMZW5ndGggPj4gMikgOiBsZW5ndGg7CiAgICBlbnN1cmVVaW50MzJBcnJheVZpZXdQcm9wcyh0aGlzLmxlbmd0aCk7CiAgfQogIFVpbnQzMkFycmF5Vmlldy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKG51bGwpOwoKICB2YXIgdWludDMyQXJyYXlWaWV3U2V0dGVycyA9IDA7CiAgZnVuY3Rpb24gY3JlYXRlVWludDMyQXJyYXlQcm9wKGluZGV4KSB7CiAgICByZXR1cm4gewogICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsKICAgICAgICB2YXIgYnVmZmVyID0gdGhpcy5idWZmZXIsIG9mZnNldCA9IGluZGV4IDw8IDI7CiAgICAgICAgcmV0dXJuIChidWZmZXJbb2Zmc2V0XSB8IChidWZmZXJbb2Zmc2V0ICsgMV0gPDwgOCkgfAogICAgICAgICAgKGJ1ZmZlcltvZmZzZXQgKyAyXSA8PCAxNikgfCAoYnVmZmVyW29mZnNldCArIDNdIDw8IDI0KSkgPj4+IDA7CiAgICAgIH0sCiAgICAgIHNldDogZnVuY3Rpb24gKHZhbHVlKSB7CiAgICAgICAgdmFyIGJ1ZmZlciA9IHRoaXMuYnVmZmVyLCBvZmZzZXQgPSBpbmRleCA8PCAyOwogICAgICAgIGJ1ZmZlcltvZmZzZXRdID0gdmFsdWUgJiAyNTU7CiAgICAgICAgYnVmZmVyW29mZnNldCArIDFdID0gKHZhbHVlID4+IDgpICYgMjU1OwogICAgICAgIGJ1ZmZlcltvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+PiAxNikgJiAyNTU7CiAgICAgICAgYnVmZmVyW29mZnNldCArIDNdID0gKHZhbHVlID4+PiAyNCkgJiAyNTU7CiAgICAgIH0KICAgIH07CiAgfQoKICBmdW5jdGlvbiBlbnN1cmVVaW50MzJBcnJheVZpZXdQcm9wcyhsZW5ndGgpIHsKICAgIHdoaWxlICh1aW50MzJBcnJheVZpZXdTZXR0ZXJzIDwgbGVuZ3RoKSB7CiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShVaW50MzJBcnJheVZpZXcucHJvdG90eXBlLAogICAgICAgIHVpbnQzMkFycmF5Vmlld1NldHRlcnMsCiAgICAgICAgY3JlYXRlVWludDMyQXJyYXlQcm9wKHVpbnQzMkFycmF5Vmlld1NldHRlcnMpKTsKICAgICAgdWludDMyQXJyYXlWaWV3U2V0dGVycysrOwogICAgfQogIH0KCiAgcmV0dXJuIFVpbnQzMkFycmF5VmlldzsKfSkoKTsKLy8jZWxzZQovL1BERkpTLmhhc0NhbnZhc1R5cGVkQXJyYXlzID0gdHJ1ZTsKLy8jZW5kaWYKCnZhciBJREVOVElUWV9NQVRSSVggPSBbMSwgMCwgMCwgMSwgMCwgMF07Cgp2YXIgVXRpbCA9IFBERkpTLlV0aWwgPSAoZnVuY3Rpb24gVXRpbENsb3N1cmUoKSB7CiAgZnVuY3Rpb24gVXRpbCgpIHt9CgogIHZhciByZ2JCdWYgPSBbJ3JnYignLCAwLCAnLCcsIDAsICcsJywgMCwgJyknXTsKCiAgLy8gbWFrZUNzc1JnYigpIGNhbiBiZSBjYWxsZWQgdGhvdXNhbmRzIG9mIHRpbWVzLiBVc2luZyB8cmdiQnVmfCBhdm9pZHMKICAvLyBjcmVhdGluZyBtYW55IGludGVybWVkaWF0ZSBzdHJpbmdzLgogIFV0aWwubWFrZUNzc1JnYiA9IGZ1bmN0aW9uIFV0aWxfbWFrZUNzc1JnYihyLCBnLCBiKSB7CiAgICByZ2JCdWZbMV0gPSByOwogICAgcmdiQnVmWzNdID0gZzsKICAgIHJnYkJ1Zls1XSA9IGI7CiAgICByZXR1cm4gcmdiQnVmLmpvaW4oJycpOwogIH07CgogIC8vIENvbmNhdGVuYXRlcyB0d28gdHJhbnNmb3JtYXRpb24gbWF0cmljZXMgdG9nZXRoZXIgYW5kIHJldHVybnMgdGhlIHJlc3VsdC4KICBVdGlsLnRyYW5zZm9ybSA9IGZ1bmN0aW9uIFV0aWxfdHJhbnNmb3JtKG0xLCBtMikgewogICAgcmV0dXJuIFsKICAgICAgbTFbMF0gKiBtMlswXSArIG0xWzJdICogbTJbMV0sCiAgICAgIG0xWzFdICogbTJbMF0gKyBtMVszXSAqIG0yWzFdLAogICAgICBtMVswXSAqIG0yWzJdICsgbTFbMl0gKiBtMlszXSwKICAgICAgbTFbMV0gKiBtMlsyXSArIG0xWzNdICogbTJbM10sCiAgICAgIG0xWzBdICogbTJbNF0gKyBtMVsyXSAqIG0yWzVdICsgbTFbNF0sCiAgICAgIG0xWzFdICogbTJbNF0gKyBtMVszXSAqIG0yWzVdICsgbTFbNV0KICAgIF07CiAgfTsKCiAgLy8gRm9yIDJkIGFmZmluZSB0cmFuc2Zvcm1zCiAgVXRpbC5hcHBseVRyYW5zZm9ybSA9IGZ1bmN0aW9uIFV0aWxfYXBwbHlUcmFuc2Zvcm0ocCwgbSkgewogICAgdmFyIHh0ID0gcFswXSAqIG1bMF0gKyBwWzFdICogbVsyXSArIG1bNF07CiAgICB2YXIgeXQgPSBwWzBdICogbVsxXSArIHBbMV0gKiBtWzNdICsgbVs1XTsKICAgIHJldHVybiBbeHQsIHl0XTsKICB9OwoKICBVdGlsLmFwcGx5SW52ZXJzZVRyYW5zZm9ybSA9IGZ1bmN0aW9uIFV0aWxfYXBwbHlJbnZlcnNlVHJhbnNmb3JtKHAsIG0pIHsKICAgIHZhciBkID0gbVswXSAqIG1bM10gLSBtWzFdICogbVsyXTsKICAgIHZhciB4dCA9IChwWzBdICogbVszXSAtIHBbMV0gKiBtWzJdICsgbVsyXSAqIG1bNV0gLSBtWzRdICogbVszXSkgLyBkOwogICAgdmFyIHl0ID0gKC1wWzBdICogbVsxXSArIHBbMV0gKiBtWzBdICsgbVs0XSAqIG1bMV0gLSBtWzVdICogbVswXSkgLyBkOwogICAgcmV0dXJuIFt4dCwgeXRdOwogIH07CgogIC8vIEFwcGxpZXMgdGhlIHRyYW5zZm9ybSB0byB0aGUgcmVjdGFuZ2xlIGFuZCBmaW5kcyB0aGUgbWluaW11bSBheGlhbGx5CiAgLy8gYWxpZ25lZCBib3VuZGluZyBib3guCiAgVXRpbC5nZXRBeGlhbEFsaWduZWRCb3VuZGluZ0JveCA9CiAgICBmdW5jdGlvbiBVdGlsX2dldEF4aWFsQWxpZ25lZEJvdW5kaW5nQm94KHIsIG0pIHsKCiAgICB2YXIgcDEgPSBVdGlsLmFwcGx5VHJhbnNmb3JtKHIsIG0pOwogICAgdmFyIHAyID0gVXRpbC5hcHBseVRyYW5zZm9ybShyLnNsaWNlKDIsIDQpLCBtKTsKICAgIHZhciBwMyA9IFV0aWwuYXBwbHlUcmFuc2Zvcm0oW3JbMF0sIHJbM11dLCBtKTsKICAgIHZhciBwNCA9IFV0aWwuYXBwbHlUcmFuc2Zvcm0oW3JbMl0sIHJbMV1dLCBtKTsKICAgIHJldHVybiBbCiAgICAgIE1hdGgubWluKHAxWzBdLCBwMlswXSwgcDNbMF0sIHA0WzBdKSwKICAgICAgTWF0aC5taW4ocDFbMV0sIHAyWzFdLCBwM1sxXSwgcDRbMV0pLAogICAgICBNYXRoLm1heChwMVswXSwgcDJbMF0sIHAzWzBdLCBwNFswXSksCiAgICAgIE1hdGgubWF4KHAxWzFdLCBwMlsxXSwgcDNbMV0sIHA0WzFdKQogICAgXTsKICB9OwoKICBVdGlsLmludmVyc2VUcmFuc2Zvcm0gPSBmdW5jdGlvbiBVdGlsX2ludmVyc2VUcmFuc2Zvcm0obSkgewogICAgdmFyIGQgPSBtWzBdICogbVszXSAtIG1bMV0gKiBtWzJdOwogICAgcmV0dXJuIFttWzNdIC8gZCwgLW1bMV0gLyBkLCAtbVsyXSAvIGQsIG1bMF0gLyBkLAogICAgICAobVsyXSAqIG1bNV0gLSBtWzRdICogbVszXSkgLyBkLCAobVs0XSAqIG1bMV0gLSBtWzVdICogbVswXSkgLyBkXTsKICB9OwoKICAvLyBBcHBseSBhIGdlbmVyaWMgM2QgbWF0cml4IE0gb24gYSAzLXZlY3RvciB2OgogIC8vICAgfCBhIGIgYyB8ICAgfCBYIHwKICAvLyAgIHwgZCBlIGYgfCB4IHwgWSB8CiAgLy8gICB8IGcgaCBpIHwgICB8IFogfAogIC8vIE0gaXMgYXNzdW1lZCB0byBiZSBzZXJpYWxpemVkIGFzIFthLGIsYyxkLGUsZixnLGgsaV0sCiAgLy8gd2l0aCB2IGFzIFtYLFksWl0KICBVdGlsLmFwcGx5M2RUcmFuc2Zvcm0gPSBmdW5jdGlvbiBVdGlsX2FwcGx5M2RUcmFuc2Zvcm0obSwgdikgewogICAgcmV0dXJuIFsKICAgICAgbVswXSAqIHZbMF0gKyBtWzFdICogdlsxXSArIG1bMl0gKiB2WzJdLAogICAgICBtWzNdICogdlswXSArIG1bNF0gKiB2WzFdICsgbVs1XSAqIHZbMl0sCiAgICAgIG1bNl0gKiB2WzBdICsgbVs3XSAqIHZbMV0gKyBtWzhdICogdlsyXQogICAgXTsKICB9OwoKICAvLyBUaGlzIGNhbGN1bGF0aW9uIHVzZXMgU2luZ3VsYXIgVmFsdWUgRGVjb21wb3NpdGlvbi4KICAvLyBUaGUgU1ZEIGNhbiBiZSByZXByZXNlbnRlZCB3aXRoIGZvcm11bGEgQSA9IFVTVi4gV2UgYXJlIGludGVyZXN0ZWQgaW4gdGhlCiAgLy8gbWF0cml4IFMgaGVyZSBiZWNhdXNlIGl0IHJlcHJlc2VudHMgdGhlIHNjYWxlIHZhbHVlcy4KICBVdGlsLnNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlID0KICAgIGZ1bmN0aW9uIFV0aWxfc2luZ3VsYXJWYWx1ZURlY29tcG9zZTJkU2NhbGUobSkgewoKICAgIHZhciB0cmFuc3Bvc2UgPSBbbVswXSwgbVsyXSwgbVsxXSwgbVszXV07CgogICAgLy8gTXVsdGlwbHkgbWF0cml4IG0gd2l0aCBpdHMgdHJhbnNwb3NlLgogICAgdmFyIGEgPSBtWzBdICogdHJhbnNwb3NlWzBdICsgbVsxXSAqIHRyYW5zcG9zZVsyXTsKICAgIHZhciBiID0gbVswXSAqIHRyYW5zcG9zZVsxXSArIG1bMV0gKiB0cmFuc3Bvc2VbM107CiAgICB2YXIgYyA9IG1bMl0gKiB0cmFuc3Bvc2VbMF0gKyBtWzNdICogdHJhbnNwb3NlWzJdOwogICAgdmFyIGQgPSBtWzJdICogdHJhbnNwb3NlWzFdICsgbVszXSAqIHRyYW5zcG9zZVszXTsKCiAgICAvLyBTb2x2ZSB0aGUgc2Vjb25kIGRlZ3JlZSBwb2x5bm9taWFsIHRvIGdldCByb290cy4KICAgIHZhciBmaXJzdCA9IChhICsgZCkgLyAyOwogICAgdmFyIHNlY29uZCA9IE1hdGguc3FydCgoYSArIGQpICogKGEgKyBkKSAtIDQgKiAoYSAqIGQgLSBjICogYikpIC8gMjsKICAgIHZhciBzeCA9IGZpcnN0ICsgc2Vjb25kIHx8IDE7CiAgICB2YXIgc3kgPSBmaXJzdCAtIHNlY29uZCB8fCAxOwoKICAgIC8vIFNjYWxlIHZhbHVlcyBhcmUgdGhlIHNxdWFyZSByb290cyBvZiB0aGUgZWlnZW52YWx1ZXMuCiAgICByZXR1cm4gW01hdGguc3FydChzeCksIE1hdGguc3FydChzeSldOwogIH07CgogIC8vIE5vcm1hbGl6ZSByZWN0YW5nbGUgcmVjdD1beDEsIHkxLCB4MiwgeTJdIHNvIHRoYXQgKHgxLHkxKSA8ICh4Mix5MikKICAvLyBGb3IgY29vcmRpbmF0ZSBzeXN0ZW1zIHdob3NlIG9yaWdpbiBsaWVzIGluIHRoZSBib3R0b20tbGVmdCwgdGhpcwogIC8vIG1lYW5zIG5vcm1hbGl6YXRpb24gdG8gKEJMLFRSKSBvcmRlcmluZy4gRm9yIHN5c3RlbXMgd2l0aCBvcmlnaW4gaW4gdGhlCiAgLy8gdG9wLWxlZnQsIHRoaXMgbWVhbnMgKFRMLEJSKSBvcmRlcmluZy4KICBVdGlsLm5vcm1hbGl6ZVJlY3QgPSBmdW5jdGlvbiBVdGlsX25vcm1hbGl6ZVJlY3QocmVjdCkgewogICAgdmFyIHIgPSByZWN0LnNsaWNlKDApOyAvLyBjbG9uZSByZWN0CiAgICBpZiAocmVjdFswXSA+IHJlY3RbMl0pIHsKICAgICAgclswXSA9IHJlY3RbMl07CiAgICAgIHJbMl0gPSByZWN0WzBdOwogICAgfQogICAgaWYgKHJlY3RbMV0gPiByZWN0WzNdKSB7CiAgICAgIHJbMV0gPSByZWN0WzNdOwogICAgICByWzNdID0gcmVjdFsxXTsKICAgIH0KICAgIHJldHVybiByOwogIH07CgogIC8vIFJldHVybnMgYSByZWN0YW5nbGUgW3gxLCB5MSwgeDIsIHkyXSBjb3JyZXNwb25kaW5nIHRvIHRoZQogIC8vIGludGVyc2VjdGlvbiBvZiByZWN0MSBhbmQgcmVjdDIuIElmIG5vIGludGVyc2VjdGlvbiwgcmV0dXJucyAnZmFsc2UnCiAgLy8gVGhlIHJlY3RhbmdsZSBjb29yZGluYXRlcyBvZiByZWN0MSwgcmVjdDIgc2hvdWxkIGJlIFt4MSwgeTEsIHgyLCB5Ml0KICBVdGlsLmludGVyc2VjdCA9IGZ1bmN0aW9uIFV0aWxfaW50ZXJzZWN0KHJlY3QxLCByZWN0MikgewogICAgZnVuY3Rpb24gY29tcGFyZShhLCBiKSB7CiAgICAgIHJldHVybiBhIC0gYjsKICAgIH0KCiAgICAvLyBPcmRlciBwb2ludHMgYWxvbmcgdGhlIGF4ZXMKICAgIHZhciBvcmRlcmVkWCA9IFtyZWN0MVswXSwgcmVjdDFbMl0sIHJlY3QyWzBdLCByZWN0MlsyXV0uc29ydChjb21wYXJlKSwKICAgICAgICBvcmRlcmVkWSA9IFtyZWN0MVsxXSwgcmVjdDFbM10sIHJlY3QyWzFdLCByZWN0MlszXV0uc29ydChjb21wYXJlKSwKICAgICAgICByZXN1bHQgPSBbXTsKCiAgICByZWN0MSA9IFV0aWwubm9ybWFsaXplUmVjdChyZWN0MSk7CiAgICByZWN0MiA9IFV0aWwubm9ybWFsaXplUmVjdChyZWN0Mik7CgogICAgLy8gWDogZmlyc3QgYW5kIHNlY29uZCBwb2ludHMgYmVsb25nIHRvIGRpZmZlcmVudCByZWN0YW5nbGVzPwogICAgaWYgKChvcmRlcmVkWFswXSA9PT0gcmVjdDFbMF0gJiYgb3JkZXJlZFhbMV0gPT09IHJlY3QyWzBdKSB8fAogICAgICAgIChvcmRlcmVkWFswXSA9PT0gcmVjdDJbMF0gJiYgb3JkZXJlZFhbMV0gPT09IHJlY3QxWzBdKSkgewogICAgICAvLyBJbnRlcnNlY3Rpb24gbXVzdCBiZSBiZXR3ZWVuIHNlY29uZCBhbmQgdGhpcmQgcG9pbnRzCiAgICAgIHJlc3VsdFswXSA9IG9yZGVyZWRYWzFdOwogICAgICByZXN1bHRbMl0gPSBvcmRlcmVkWFsyXTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvLyBZOiBmaXJzdCBhbmQgc2Vjb25kIHBvaW50cyBiZWxvbmcgdG8gZGlmZmVyZW50IHJlY3RhbmdsZXM/CiAgICBpZiAoKG9yZGVyZWRZWzBdID09PSByZWN0MVsxXSAmJiBvcmRlcmVkWVsxXSA9PT0gcmVjdDJbMV0pIHx8CiAgICAgICAgKG9yZGVyZWRZWzBdID09PSByZWN0MlsxXSAmJiBvcmRlcmVkWVsxXSA9PT0gcmVjdDFbMV0pKSB7CiAgICAgIC8vIEludGVyc2VjdGlvbiBtdXN0IGJlIGJldHdlZW4gc2Vjb25kIGFuZCB0aGlyZCBwb2ludHMKICAgICAgcmVzdWx0WzFdID0gb3JkZXJlZFlbMV07CiAgICAgIHJlc3VsdFszXSA9IG9yZGVyZWRZWzJdOwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHJldHVybiByZXN1bHQ7CiAgfTsKCiAgVXRpbC5zaWduID0gZnVuY3Rpb24gVXRpbF9zaWduKG51bSkgewogICAgcmV0dXJuIG51bSA8IDAgPyAtMSA6IDE7CiAgfTsKCiAgVXRpbC5hcHBlbmRUb0FycmF5ID0gZnVuY3Rpb24gVXRpbF9hcHBlbmRUb0FycmF5KGFycjEsIGFycjIpIHsKICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGFycjEsIGFycjIpOwogIH07CgogIFV0aWwucHJlcGVuZFRvQXJyYXkgPSBmdW5jdGlvbiBVdGlsX3ByZXBlbmRUb0FycmF5KGFycjEsIGFycjIpIHsKICAgIEFycmF5LnByb3RvdHlwZS51bnNoaWZ0LmFwcGx5KGFycjEsIGFycjIpOwogIH07CgogIFV0aWwuZXh0ZW5kT2JqID0gZnVuY3Rpb24gZXh0ZW5kT2JqKG9iajEsIG9iajIpIHsKICAgIGZvciAodmFyIGtleSBpbiBvYmoyKSB7CiAgICAgIG9iajFba2V5XSA9IG9iajJba2V5XTsKICAgIH0KICB9OwoKICBVdGlsLmdldEluaGVyaXRhYmxlUHJvcGVydHkgPSBmdW5jdGlvbiBVdGlsX2dldEluaGVyaXRhYmxlUHJvcGVydHkoZGljdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSkgewogICAgd2hpbGUgKGRpY3QgJiYgIWRpY3QuaGFzKG5hbWUpKSB7CiAgICAgIGRpY3QgPSBkaWN0LmdldCgnUGFyZW50Jyk7CiAgICB9CiAgICBpZiAoIWRpY3QpIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9CiAgICByZXR1cm4gZGljdC5nZXQobmFtZSk7CiAgfTsKCiAgVXRpbC5pbmhlcml0ID0gZnVuY3Rpb24gVXRpbF9pbmhlcml0KHN1YiwgYmFzZSwgcHJvdG90eXBlKSB7CiAgICBzdWIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShiYXNlLnByb3RvdHlwZSk7CiAgICBzdWIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gc3ViOwogICAgZm9yICh2YXIgcHJvcCBpbiBwcm90b3R5cGUpIHsKICAgICAgc3ViLnByb3RvdHlwZVtwcm9wXSA9IHByb3RvdHlwZVtwcm9wXTsKICAgIH0KICB9OwoKICBVdGlsLmxvYWRTY3JpcHQgPSBmdW5jdGlvbiBVdGlsX2xvYWRTY3JpcHQoc3JjLCBjYWxsYmFjaykgewogICAgdmFyIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpOwogICAgdmFyIGxvYWRlZCA9IGZhbHNlOwogICAgc2NyaXB0LnNldEF0dHJpYnV0ZSgnc3JjJywgc3JjKTsKICAgIGlmIChjYWxsYmFjaykgewogICAgICBzY3JpcHQub25sb2FkID0gZnVuY3Rpb24oKSB7CiAgICAgICAgaWYgKCFsb2FkZWQpIHsKICAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAgICAgfQogICAgICAgIGxvYWRlZCA9IHRydWU7CiAgICAgIH07CiAgICB9CiAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdLmFwcGVuZENoaWxkKHNjcmlwdCk7CiAgfTsKCiAgcmV0dXJuIFV0aWw7Cn0pKCk7CgovKioKICogUERGIHBhZ2Ugdmlld3BvcnQgY3JlYXRlZCBiYXNlZCBvbiBzY2FsZSwgcm90YXRpb24gYW5kIG9mZnNldC4KICogQGNsYXNzCiAqIEBhbGlhcyBQREZKUy5QYWdlVmlld3BvcnQKICovCnZhciBQYWdlVmlld3BvcnQgPSBQREZKUy5QYWdlVmlld3BvcnQgPSAoZnVuY3Rpb24gUGFnZVZpZXdwb3J0Q2xvc3VyZSgpIHsKICAvKioKICAgKiBAY29uc3RydWN0b3IKICAgKiBAcHJpdmF0ZQogICAqIEBwYXJhbSB2aWV3Qm94IHtBcnJheX0geE1pbiwgeU1pbiwgeE1heCBhbmQgeU1heCBjb29yZGluYXRlcy4KICAgKiBAcGFyYW0gc2NhbGUge251bWJlcn0gc2NhbGUgb2YgdGhlIHZpZXdwb3J0LgogICAqIEBwYXJhbSByb3RhdGlvbiB7bnVtYmVyfSByb3RhdGlvbnMgb2YgdGhlIHZpZXdwb3J0IGluIGRlZ3JlZXMuCiAgICogQHBhcmFtIG9mZnNldFgge251bWJlcn0gb2Zmc2V0IFgKICAgKiBAcGFyYW0gb2Zmc2V0WSB7bnVtYmVyfSBvZmZzZXQgWQogICAqIEBwYXJhbSBkb250RmxpcCB7Ym9vbGVhbn0gaWYgdHJ1ZSwgYXhpcyBZIHdpbGwgbm90IGJlIGZsaXBwZWQuCiAgICovCiAgZnVuY3Rpb24gUGFnZVZpZXdwb3J0KHZpZXdCb3gsIHNjYWxlLCByb3RhdGlvbiwgb2Zmc2V0WCwgb2Zmc2V0WSwgZG9udEZsaXApIHsKICAgIHRoaXMudmlld0JveCA9IHZpZXdCb3g7CiAgICB0aGlzLnNjYWxlID0gc2NhbGU7CiAgICB0aGlzLnJvdGF0aW9uID0gcm90YXRpb247CiAgICB0aGlzLm9mZnNldFggPSBvZmZzZXRYOwogICAgdGhpcy5vZmZzZXRZID0gb2Zmc2V0WTsKCiAgICAvLyBjcmVhdGluZyB0cmFuc2Zvcm0gdG8gY29udmVydCBwZGYgY29vcmRpbmF0ZSBzeXN0ZW0gdG8gdGhlIG5vcm1hbAogICAgLy8gY2FudmFzIGxpa2UgY29vcmRpbmF0ZXMgdGFraW5nIGluIGFjY291bnQgc2NhbGUgYW5kIHJvdGF0aW9uCiAgICB2YXIgY2VudGVyWCA9ICh2aWV3Qm94WzJdICsgdmlld0JveFswXSkgLyAyOwogICAgdmFyIGNlbnRlclkgPSAodmlld0JveFszXSArIHZpZXdCb3hbMV0pIC8gMjsKICAgIHZhciByb3RhdGVBLCByb3RhdGVCLCByb3RhdGVDLCByb3RhdGVEOwogICAgcm90YXRpb24gPSByb3RhdGlvbiAlIDM2MDsKICAgIHJvdGF0aW9uID0gcm90YXRpb24gPCAwID8gcm90YXRpb24gKyAzNjAgOiByb3RhdGlvbjsKICAgIHN3aXRjaCAocm90YXRpb24pIHsKICAgICAgY2FzZSAxODA6CiAgICAgICAgcm90YXRlQSA9IC0xOyByb3RhdGVCID0gMDsgcm90YXRlQyA9IDA7IHJvdGF0ZUQgPSAxOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlIDkwOgogICAgICAgIHJvdGF0ZUEgPSAwOyByb3RhdGVCID0gMTsgcm90YXRlQyA9IDE7IHJvdGF0ZUQgPSAwOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlIDI3MDoKICAgICAgICByb3RhdGVBID0gMDsgcm90YXRlQiA9IC0xOyByb3RhdGVDID0gLTE7IHJvdGF0ZUQgPSAwOwogICAgICAgIGJyZWFrOwogICAgICAvL2Nhc2UgMDoKICAgICAgZGVmYXVsdDoKICAgICAgICByb3RhdGVBID0gMTsgcm90YXRlQiA9IDA7IHJvdGF0ZUMgPSAwOyByb3RhdGVEID0gLTE7CiAgICAgICAgYnJlYWs7CiAgICB9CgogICAgaWYgKGRvbnRGbGlwKSB7CiAgICAgIHJvdGF0ZUMgPSAtcm90YXRlQzsgcm90YXRlRCA9IC1yb3RhdGVEOwogICAgfQoKICAgIHZhciBvZmZzZXRDYW52YXNYLCBvZmZzZXRDYW52YXNZOwogICAgdmFyIHdpZHRoLCBoZWlnaHQ7CiAgICBpZiAocm90YXRlQSA9PT0gMCkgewogICAgICBvZmZzZXRDYW52YXNYID0gTWF0aC5hYnMoY2VudGVyWSAtIHZpZXdCb3hbMV0pICogc2NhbGUgKyBvZmZzZXRYOwogICAgICBvZmZzZXRDYW52YXNZID0gTWF0aC5hYnMoY2VudGVyWCAtIHZpZXdCb3hbMF0pICogc2NhbGUgKyBvZmZzZXRZOwogICAgICB3aWR0aCA9IE1hdGguYWJzKHZpZXdCb3hbM10gLSB2aWV3Qm94WzFdKSAqIHNjYWxlOwogICAgICBoZWlnaHQgPSBNYXRoLmFicyh2aWV3Qm94WzJdIC0gdmlld0JveFswXSkgKiBzY2FsZTsKICAgIH0gZWxzZSB7CiAgICAgIG9mZnNldENhbnZhc1ggPSBNYXRoLmFicyhjZW50ZXJYIC0gdmlld0JveFswXSkgKiBzY2FsZSArIG9mZnNldFg7CiAgICAgIG9mZnNldENhbnZhc1kgPSBNYXRoLmFicyhjZW50ZXJZIC0gdmlld0JveFsxXSkgKiBzY2FsZSArIG9mZnNldFk7CiAgICAgIHdpZHRoID0gTWF0aC5hYnModmlld0JveFsyXSAtIHZpZXdCb3hbMF0pICogc2NhbGU7CiAgICAgIGhlaWdodCA9IE1hdGguYWJzKHZpZXdCb3hbM10gLSB2aWV3Qm94WzFdKSAqIHNjYWxlOwogICAgfQogICAgLy8gY3JlYXRpbmcgdHJhbnNmb3JtIGZvciB0aGUgZm9sbG93aW5nIG9wZXJhdGlvbnM6CiAgICAvLyB0cmFuc2xhdGUoLWNlbnRlclgsIC1jZW50ZXJZKSwgcm90YXRlIGFuZCBmbGlwIHZlcnRpY2FsbHksCiAgICAvLyBzY2FsZSwgYW5kIHRyYW5zbGF0ZShvZmZzZXRDYW52YXNYLCBvZmZzZXRDYW52YXNZKQogICAgdGhpcy50cmFuc2Zvcm0gPSBbCiAgICAgIHJvdGF0ZUEgKiBzY2FsZSwKICAgICAgcm90YXRlQiAqIHNjYWxlLAogICAgICByb3RhdGVDICogc2NhbGUsCiAgICAgIHJvdGF0ZUQgKiBzY2FsZSwKICAgICAgb2Zmc2V0Q2FudmFzWCAtIHJvdGF0ZUEgKiBzY2FsZSAqIGNlbnRlclggLSByb3RhdGVDICogc2NhbGUgKiBjZW50ZXJZLAogICAgICBvZmZzZXRDYW52YXNZIC0gcm90YXRlQiAqIHNjYWxlICogY2VudGVyWCAtIHJvdGF0ZUQgKiBzY2FsZSAqIGNlbnRlclkKICAgIF07CgogICAgdGhpcy53aWR0aCA9IHdpZHRoOwogICAgdGhpcy5oZWlnaHQgPSBoZWlnaHQ7CiAgICB0aGlzLmZvbnRTY2FsZSA9IHNjYWxlOwogIH0KICBQYWdlVmlld3BvcnQucHJvdG90eXBlID0gLyoqIEBsZW5kcyBQREZKUy5QYWdlVmlld3BvcnQucHJvdG90eXBlICovIHsKICAgIC8qKgogICAgICogQ2xvbmVzIHZpZXdwb3J0IHdpdGggYWRkaXRpb25hbCBwcm9wZXJ0aWVzLgogICAgICogQHBhcmFtIGFyZ3Mge09iamVjdH0gKG9wdGlvbmFsKSBJZiBzcGVjaWZpZWQsIG1heSBjb250YWluIHRoZSAnc2NhbGUnIG9yCiAgICAgKiAncm90YXRpb24nIHByb3BlcnRpZXMgdG8gb3ZlcnJpZGUgdGhlIGNvcnJlc3BvbmRpbmcgcHJvcGVydGllcyBpbgogICAgICogdGhlIGNsb25lZCB2aWV3cG9ydC4KICAgICAqIEByZXR1cm5zIHtQREZKUy5QYWdlVmlld3BvcnR9IENsb25lZCB2aWV3cG9ydC4KICAgICAqLwogICAgY2xvbmU6IGZ1bmN0aW9uIFBhZ2VWaWV3UG9ydF9jbG9uZShhcmdzKSB7CiAgICAgIGFyZ3MgPSBhcmdzIHx8IHt9OwogICAgICB2YXIgc2NhbGUgPSAnc2NhbGUnIGluIGFyZ3MgPyBhcmdzLnNjYWxlIDogdGhpcy5zY2FsZTsKICAgICAgdmFyIHJvdGF0aW9uID0gJ3JvdGF0aW9uJyBpbiBhcmdzID8gYXJncy5yb3RhdGlvbiA6IHRoaXMucm90YXRpb247CiAgICAgIHJldHVybiBuZXcgUGFnZVZpZXdwb3J0KHRoaXMudmlld0JveC5zbGljZSgpLCBzY2FsZSwgcm90YXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub2Zmc2V0WCwgdGhpcy5vZmZzZXRZLCBhcmdzLmRvbnRGbGlwKTsKICAgIH0sCiAgICAvKioKICAgICAqIENvbnZlcnRzIFBERiBwb2ludCB0byB0aGUgdmlld3BvcnQgY29vcmRpbmF0ZXMuIEZvciBleGFtcGxlcywgdXNlZnVsIGZvcgogICAgICogY29udmVydGluZyBQREYgbG9jYXRpb24gaW50byBjYW52YXMgcGl4ZWwgY29vcmRpbmF0ZXMuCiAgICAgKiBAcGFyYW0geCB7bnVtYmVyfSBYIGNvb3JkaW5hdGUuCiAgICAgKiBAcGFyYW0geSB7bnVtYmVyfSBZIGNvb3JkaW5hdGUuCiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBPYmplY3QgdGhhdCBjb250YWlucyAneCcgYW5kICd5JyBwcm9wZXJ0aWVzIG9mIHRoZQogICAgICogcG9pbnQgaW4gdGhlIHZpZXdwb3J0IGNvb3JkaW5hdGUgc3BhY2UuCiAgICAgKiBAc2VlIHtAbGluayBjb252ZXJ0VG9QZGZQb2ludH0KICAgICAqIEBzZWUge0BsaW5rIGNvbnZlcnRUb1ZpZXdwb3J0UmVjdGFuZ2xlfQogICAgICovCiAgICBjb252ZXJ0VG9WaWV3cG9ydFBvaW50OiBmdW5jdGlvbiBQYWdlVmlld3BvcnRfY29udmVydFRvVmlld3BvcnRQb2ludCh4LCB5KSB7CiAgICAgIHJldHVybiBVdGlsLmFwcGx5VHJhbnNmb3JtKFt4LCB5XSwgdGhpcy50cmFuc2Zvcm0pOwogICAgfSwKICAgIC8qKgogICAgICogQ29udmVydHMgUERGIHJlY3RhbmdsZSB0byB0aGUgdmlld3BvcnQgY29vcmRpbmF0ZXMuCiAgICAgKiBAcGFyYW0gcmVjdCB7QXJyYXl9IHhNaW4sIHlNaW4sIHhNYXggYW5kIHlNYXggY29vcmRpbmF0ZXMuCiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IENvbnRhaW5zIGNvcnJlc3BvbmRpbmcgY29vcmRpbmF0ZXMgb2YgdGhlIHJlY3RhbmdsZQogICAgICogaW4gdGhlIHZpZXdwb3J0IGNvb3JkaW5hdGUgc3BhY2UuCiAgICAgKiBAc2VlIHtAbGluayBjb252ZXJ0VG9WaWV3cG9ydFBvaW50fQogICAgICovCiAgICBjb252ZXJ0VG9WaWV3cG9ydFJlY3RhbmdsZToKICAgICAgZnVuY3Rpb24gUGFnZVZpZXdwb3J0X2NvbnZlcnRUb1ZpZXdwb3J0UmVjdGFuZ2xlKHJlY3QpIHsKICAgICAgdmFyIHRsID0gVXRpbC5hcHBseVRyYW5zZm9ybShbcmVjdFswXSwgcmVjdFsxXV0sIHRoaXMudHJhbnNmb3JtKTsKICAgICAgdmFyIGJyID0gVXRpbC5hcHBseVRyYW5zZm9ybShbcmVjdFsyXSwgcmVjdFszXV0sIHRoaXMudHJhbnNmb3JtKTsKICAgICAgcmV0dXJuIFt0bFswXSwgdGxbMV0sIGJyWzBdLCBiclsxXV07CiAgICB9LAogICAgLyoqCiAgICAgKiBDb252ZXJ0cyB2aWV3cG9ydCBjb29yZGluYXRlcyB0byB0aGUgUERGIGxvY2F0aW9uLiBGb3IgZXhhbXBsZXMsIHVzZWZ1bAogICAgICogZm9yIGNvbnZlcnRpbmcgY2FudmFzIHBpeGVsIGxvY2F0aW9uIGludG8gUERGIG9uZS4KICAgICAqIEBwYXJhbSB4IHtudW1iZXJ9IFggY29vcmRpbmF0ZS4KICAgICAqIEBwYXJhbSB5IHtudW1iZXJ9IFkgY29vcmRpbmF0ZS4KICAgICAqIEByZXR1cm5zIHtPYmplY3R9IE9iamVjdCB0aGF0IGNvbnRhaW5zICd4JyBhbmQgJ3knIHByb3BlcnRpZXMgb2YgdGhlCiAgICAgKiBwb2ludCBpbiB0aGUgUERGIGNvb3JkaW5hdGUgc3BhY2UuCiAgICAgKiBAc2VlIHtAbGluayBjb252ZXJ0VG9WaWV3cG9ydFBvaW50fQogICAgICovCiAgICBjb252ZXJ0VG9QZGZQb2ludDogZnVuY3Rpb24gUGFnZVZpZXdwb3J0X2NvbnZlcnRUb1BkZlBvaW50KHgsIHkpIHsKICAgICAgcmV0dXJuIFV0aWwuYXBwbHlJbnZlcnNlVHJhbnNmb3JtKFt4LCB5XSwgdGhpcy50cmFuc2Zvcm0pOwogICAgfQogIH07CiAgcmV0dXJuIFBhZ2VWaWV3cG9ydDsKfSkoKTsKCnZhciBQREZTdHJpbmdUcmFuc2xhdGVUYWJsZSA9IFsKICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAogIDB4MkQ4LCAweDJDNywgMHgyQzYsIDB4MkQ5LCAweDJERCwgMHgyREIsIDB4MkRBLCAweDJEQywgMCwgMCwgMCwgMCwgMCwgMCwgMCwKICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAogIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCiAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAweDIwMjIsIDB4MjAyMCwgMHgyMDIxLCAweDIwMjYsIDB4MjAxNCwKICAweDIwMTMsIDB4MTkyLCAweDIwNDQsIDB4MjAzOSwgMHgyMDNBLCAweDIyMTIsIDB4MjAzMCwgMHgyMDFFLCAweDIwMUMsCiAgMHgyMDFELCAweDIwMTgsIDB4MjAxOSwgMHgyMDFBLCAweDIxMjIsIDB4RkIwMSwgMHhGQjAyLCAweDE0MSwgMHgxNTIsIDB4MTYwLAogIDB4MTc4LCAweDE3RCwgMHgxMzEsIDB4MTQyLCAweDE1MywgMHgxNjEsIDB4MTdFLCAwLCAweDIwQUMKXTsKCmZ1bmN0aW9uIHN0cmluZ1RvUERGU3RyaW5nKHN0cikgewogIHZhciBpLCBuID0gc3RyLmxlbmd0aCwgc3RyQnVmID0gW107CiAgaWYgKHN0clswXSA9PT0gJ1x4RkUnICYmIHN0clsxXSA9PT0gJ1x4RkYnKSB7CiAgICAvLyBVVEYxNkJFIEJPTQogICAgZm9yIChpID0gMjsgaSA8IG47IGkgKz0gMikgewogICAgICBzdHJCdWYucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKAogICAgICAgIChzdHIuY2hhckNvZGVBdChpKSA8PCA4KSB8IHN0ci5jaGFyQ29kZUF0KGkgKyAxKSkpOwogICAgfQogIH0gZWxzZSB7CiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7CiAgICAgIHZhciBjb2RlID0gUERGU3RyaW5nVHJhbnNsYXRlVGFibGVbc3RyLmNoYXJDb2RlQXQoaSldOwogICAgICBzdHJCdWYucHVzaChjb2RlID8gU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlKSA6IHN0ci5jaGFyQXQoaSkpOwogICAgfQogIH0KICByZXR1cm4gc3RyQnVmLmpvaW4oJycpOwp9CgpmdW5jdGlvbiBzdHJpbmdUb1VURjhTdHJpbmcoc3RyKSB7CiAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUoc3RyKSk7Cn0KCmZ1bmN0aW9uIGlzRW1wdHlPYmoob2JqKSB7CiAgZm9yICh2YXIga2V5IGluIG9iaikgewogICAgcmV0dXJuIGZhbHNlOwogIH0KICByZXR1cm4gdHJ1ZTsKfQoKZnVuY3Rpb24gaXNCb29sKHYpIHsKICByZXR1cm4gdHlwZW9mIHYgPT09ICdib29sZWFuJzsKfQoKZnVuY3Rpb24gaXNJbnQodikgewogIHJldHVybiB0eXBlb2YgdiA9PT0gJ251bWJlcicgJiYgKCh2IHwgMCkgPT09IHYpOwp9CgpmdW5jdGlvbiBpc051bSh2KSB7CiAgcmV0dXJuIHR5cGVvZiB2ID09PSAnbnVtYmVyJzsKfQoKZnVuY3Rpb24gaXNTdHJpbmcodikgewogIHJldHVybiB0eXBlb2YgdiA9PT0gJ3N0cmluZyc7Cn0KCmZ1bmN0aW9uIGlzTmFtZSh2KSB7CiAgcmV0dXJuIHYgaW5zdGFuY2VvZiBOYW1lOwp9CgpmdW5jdGlvbiBpc0NtZCh2LCBjbWQpIHsKICByZXR1cm4gdiBpbnN0YW5jZW9mIENtZCAmJiAoY21kID09PSB1bmRlZmluZWQgfHwgdi5jbWQgPT09IGNtZCk7Cn0KCmZ1bmN0aW9uIGlzRGljdCh2LCB0eXBlKSB7CiAgaWYgKCEodiBpbnN0YW5jZW9mIERpY3QpKSB7CiAgICByZXR1cm4gZmFsc2U7CiAgfQogIGlmICghdHlwZSkgewogICAgcmV0dXJuIHRydWU7CiAgfQogIHZhciBkaWN0VHlwZSA9IHYuZ2V0KCdUeXBlJyk7CiAgcmV0dXJuIGlzTmFtZShkaWN0VHlwZSkgJiYgZGljdFR5cGUubmFtZSA9PT0gdHlwZTsKfQoKZnVuY3Rpb24gaXNBcnJheSh2KSB7CiAgcmV0dXJuIHYgaW5zdGFuY2VvZiBBcnJheTsKfQoKZnVuY3Rpb24gaXNTdHJlYW0odikgewogIHJldHVybiB0eXBlb2YgdiA9PT0gJ29iamVjdCcgJiYgdiAhPT0gbnVsbCAmJiB2LmdldEJ5dGVzICE9PSB1bmRlZmluZWQ7Cn0KCmZ1bmN0aW9uIGlzQXJyYXlCdWZmZXIodikgewogIHJldHVybiB0eXBlb2YgdiA9PT0gJ29iamVjdCcgJiYgdiAhPT0gbnVsbCAmJiB2LmJ5dGVMZW5ndGggIT09IHVuZGVmaW5lZDsKfQoKZnVuY3Rpb24gaXNSZWYodikgewogIHJldHVybiB2IGluc3RhbmNlb2YgUmVmOwp9CgovKioKICogUHJvbWlzZSBDYXBhYmlsaXR5IG9iamVjdC4KICoKICogQHR5cGVkZWYge09iamVjdH0gUHJvbWlzZUNhcGFiaWxpdHkKICogQHByb3BlcnR5IHtQcm9taXNlfSBwcm9taXNlIC0gQSBwcm9taXNlIG9iamVjdC4KICogQHByb3BlcnR5IHtmdW5jdGlvbn0gcmVzb2x2ZSAtIEZ1bGxmaWxscyB0aGUgcHJvbWlzZS4KICogQHByb3BlcnR5IHtmdW5jdGlvbn0gcmVqZWN0IC0gUmVqZWN0cyB0aGUgcHJvbWlzZS4KICovCgovKioKICogQ3JlYXRlcyBhIHByb21pc2UgY2FwYWJpbGl0eSBvYmplY3QuCiAqIEBhbGlhcyBQREZKUy5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eQogKgogKiBAcmV0dXJuIHtQcm9taXNlQ2FwYWJpbGl0eX0gQSBjYXBhYmlsaXR5IG9iamVjdCBjb250YWluczoKICogLSBhIFByb21pc2UsIHJlc29sdmUgYW5kIHJlamVjdCBtZXRob2RzLgogKi8KZnVuY3Rpb24gY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkoKSB7CiAgdmFyIGNhcGFiaWxpdHkgPSB7fTsKICBjYXBhYmlsaXR5LnByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICBjYXBhYmlsaXR5LnJlc29sdmUgPSByZXNvbHZlOwogICAgY2FwYWJpbGl0eS5yZWplY3QgPSByZWplY3Q7CiAgfSk7CiAgcmV0dXJuIGNhcGFiaWxpdHk7Cn0KClBERkpTLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5ID0gY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHk7CgovKioKICogUG9seWZpbGwgZm9yIFByb21pc2VzOgogKiBUaGUgZm9sbG93aW5nIHByb21pc2UgaW1wbGVtZW50YXRpb24gdHJpZXMgdG8gZ2VuZXJhbGx5IGltcGxlbWVudCB0aGUKICogUHJvbWlzZS9BKyBzcGVjLiBTb21lIG5vdGFibGUgZGlmZmVyZW5jZXMgZnJvbSBvdGhlciBwcm9taXNlIGxpYmFyaWVzIGFyZToKICogLSBUaGVyZSBjdXJyZW50bHkgaXNuJ3QgYSBzZXBlcmF0ZSBkZWZlcnJlZCBhbmQgcHJvbWlzZSBvYmplY3QuCiAqIC0gVW5oYW5kbGVkIHJlamVjdGlvbnMgZXZlbnR1YWxseSBzaG93IGFuIGVycm9yIGlmIHRoZXkgYXJlbid0IGhhbmRsZWQuCiAqCiAqIEJhc2VkIG9mZiBvZiB0aGUgd29yayBpbjoKICogaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODEwNDkwCiAqLwooZnVuY3Rpb24gUHJvbWlzZUNsb3N1cmUoKSB7CiAgaWYgKGdsb2JhbFNjb3BlLlByb21pc2UpIHsKICAgIC8vIFByb21pc2VzIGV4aXN0aW5nIGluIHRoZSBET00vV29ya2VyLCBjaGVja2luZyBwcmVzZW5jZSBvZiBhbGwvcmVzb2x2ZQogICAgaWYgKHR5cGVvZiBnbG9iYWxTY29wZS5Qcm9taXNlLmFsbCAhPT0gJ2Z1bmN0aW9uJykgewogICAgICBnbG9iYWxTY29wZS5Qcm9taXNlLmFsbCA9IGZ1bmN0aW9uIChpdGVyYWJsZSkgewogICAgICAgIHZhciBjb3VudCA9IDAsIHJlc3VsdHMgPSBbXSwgcmVzb2x2ZSwgcmVqZWN0OwogICAgICAgIHZhciBwcm9taXNlID0gbmV3IGdsb2JhbFNjb3BlLlByb21pc2UoZnVuY3Rpb24gKHJlc29sdmVfLCByZWplY3RfKSB7CiAgICAgICAgICByZXNvbHZlID0gcmVzb2x2ZV87CiAgICAgICAgICByZWplY3QgPSByZWplY3RfOwogICAgICAgIH0pOwogICAgICAgIGl0ZXJhYmxlLmZvckVhY2goZnVuY3Rpb24gKHAsIGkpIHsKICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgICBwLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgewogICAgICAgICAgICByZXN1bHRzW2ldID0gcmVzdWx0OwogICAgICAgICAgICBjb3VudC0tOwogICAgICAgICAgICBpZiAoY291bnQgPT09IDApIHsKICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdHMpOwogICAgICAgICAgICB9CiAgICAgICAgICB9LCByZWplY3QpOwogICAgICAgIH0pOwogICAgICAgIGlmIChjb3VudCA9PT0gMCkgewogICAgICAgICAgcmVzb2x2ZShyZXN1bHRzKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHByb21pc2U7CiAgICAgIH07CiAgICB9CiAgICBpZiAodHlwZW9mIGdsb2JhbFNjb3BlLlByb21pc2UucmVzb2x2ZSAhPT0gJ2Z1bmN0aW9uJykgewogICAgICBnbG9iYWxTY29wZS5Qcm9taXNlLnJlc29sdmUgPSBmdW5jdGlvbiAodmFsdWUpIHsKICAgICAgICByZXR1cm4gbmV3IGdsb2JhbFNjb3BlLlByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOwogICAgICB9OwogICAgfQogICAgaWYgKHR5cGVvZiBnbG9iYWxTY29wZS5Qcm9taXNlLnJlamVjdCAhPT0gJ2Z1bmN0aW9uJykgewogICAgICBnbG9iYWxTY29wZS5Qcm9taXNlLnJlamVjdCA9IGZ1bmN0aW9uIChyZWFzb24pIHsKICAgICAgICByZXR1cm4gbmV3IGdsb2JhbFNjb3BlLlByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgcmVqZWN0KHJlYXNvbik7CiAgICAgICAgfSk7CiAgICAgIH07CiAgICB9CiAgICBpZiAodHlwZW9mIGdsb2JhbFNjb3BlLlByb21pc2UucHJvdG90eXBlLmNhdGNoICE9PSAnZnVuY3Rpb24nKSB7CiAgICAgIGdsb2JhbFNjb3BlLlByb21pc2UucHJvdG90eXBlLmNhdGNoID0gZnVuY3Rpb24gKG9uUmVqZWN0KSB7CiAgICAgICAgcmV0dXJuIGdsb2JhbFNjb3BlLlByb21pc2UucHJvdG90eXBlLnRoZW4odW5kZWZpbmVkLCBvblJlamVjdCk7CiAgICAgIH07CiAgICB9CiAgICByZXR1cm47CiAgfQovLyNpZiAhTU9aQ0VOVFJBTAogIHZhciBTVEFUVVNfUEVORElORyA9IDA7CiAgdmFyIFNUQVRVU19SRVNPTFZFRCA9IDE7CiAgdmFyIFNUQVRVU19SRUpFQ1RFRCA9IDI7CgogIC8vIEluIGFuIGF0dGVtcHQgdG8gYXZvaWQgc2lsZW50IGV4Y2VwdGlvbnMsIHVuaGFuZGxlZCByZWplY3Rpb25zIGFyZQogIC8vIHRyYWNrZWQgYW5kIGlmIHRoZXkgYXJlbid0IGhhbmRsZWQgaW4gYSBjZXJ0YWluIGFtb3VudCBvZiB0aW1lIGFuCiAgLy8gZXJyb3IgaXMgbG9nZ2VkLgogIHZhciBSRUpFQ1RJT05fVElNRU9VVCA9IDUwMDsKCiAgdmFyIEhhbmRsZXJNYW5hZ2VyID0gewogICAgaGFuZGxlcnM6IFtdLAogICAgcnVubmluZzogZmFsc2UsCiAgICB1bmhhbmRsZWRSZWplY3Rpb25zOiBbXSwKICAgIHBlbmRpbmdSZWplY3Rpb25DaGVjazogZmFsc2UsCgogICAgc2NoZWR1bGVIYW5kbGVyczogZnVuY3Rpb24gc2NoZWR1bGVIYW5kbGVycyhwcm9taXNlKSB7CiAgICAgIGlmIChwcm9taXNlLl9zdGF0dXMgPT09IFNUQVRVU19QRU5ESU5HKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICB0aGlzLmhhbmRsZXJzID0gdGhpcy5oYW5kbGVycy5jb25jYXQocHJvbWlzZS5faGFuZGxlcnMpOwogICAgICBwcm9taXNlLl9oYW5kbGVycyA9IFtdOwoKICAgICAgaWYgKHRoaXMucnVubmluZykgewogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICB0aGlzLnJ1bm5pbmcgPSB0cnVlOwoKICAgICAgc2V0VGltZW91dCh0aGlzLnJ1bkhhbmRsZXJzLmJpbmQodGhpcyksIDApOwogICAgfSwKCiAgICBydW5IYW5kbGVyczogZnVuY3Rpb24gcnVuSGFuZGxlcnMoKSB7CiAgICAgIHZhciBSVU5fVElNRU9VVCA9IDE7IC8vIG1zCiAgICAgIHZhciB0aW1lb3V0QXQgPSBEYXRlLm5vdygpICsgUlVOX1RJTUVPVVQ7CiAgICAgIHdoaWxlICh0aGlzLmhhbmRsZXJzLmxlbmd0aCA+IDApIHsKICAgICAgICB2YXIgaGFuZGxlciA9IHRoaXMuaGFuZGxlcnMuc2hpZnQoKTsKCiAgICAgICAgdmFyIG5leHRTdGF0dXMgPSBoYW5kbGVyLnRoaXNQcm9taXNlLl9zdGF0dXM7CiAgICAgICAgdmFyIG5leHRWYWx1ZSA9IGhhbmRsZXIudGhpc1Byb21pc2UuX3ZhbHVlOwoKICAgICAgICB0cnkgewogICAgICAgICAgaWYgKG5leHRTdGF0dXMgPT09IFNUQVRVU19SRVNPTFZFRCkgewogICAgICAgICAgICBpZiAodHlwZW9mIGhhbmRsZXIub25SZXNvbHZlID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICAgICAgbmV4dFZhbHVlID0gaGFuZGxlci5vblJlc29sdmUobmV4dFZhbHVlKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaGFuZGxlci5vblJlamVjdCA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgICAgICAgIG5leHRWYWx1ZSA9IGhhbmRsZXIub25SZWplY3QobmV4dFZhbHVlKTsKICAgICAgICAgICAgICBuZXh0U3RhdHVzID0gU1RBVFVTX1JFU09MVkVEOwoKICAgICAgICAgICAgICBpZiAoaGFuZGxlci50aGlzUHJvbWlzZS5fdW5oYW5kbGVkUmVqZWN0aW9uKSB7CiAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZVVuaGFuZGVsZWRSZWplY3Rpb24oaGFuZGxlci50aGlzUHJvbWlzZSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0gY2F0Y2ggKGV4KSB7CiAgICAgICAgICBuZXh0U3RhdHVzID0gU1RBVFVTX1JFSkVDVEVEOwogICAgICAgICAgbmV4dFZhbHVlID0gZXg7CiAgICAgICAgfQoKICAgICAgICBoYW5kbGVyLm5leHRQcm9taXNlLl91cGRhdGVTdGF0dXMobmV4dFN0YXR1cywgbmV4dFZhbHVlKTsKICAgICAgICBpZiAoRGF0ZS5ub3coKSA+PSB0aW1lb3V0QXQpIHsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgfQoKICAgICAgaWYgKHRoaXMuaGFuZGxlcnMubGVuZ3RoID4gMCkgewogICAgICAgIHNldFRpbWVvdXQodGhpcy5ydW5IYW5kbGVycy5iaW5kKHRoaXMpLCAwKTsKICAgICAgICByZXR1cm47CiAgICAgIH0KCiAgICAgIHRoaXMucnVubmluZyA9IGZhbHNlOwogICAgfSwKCiAgICBhZGRVbmhhbmRsZWRSZWplY3Rpb246IGZ1bmN0aW9uIGFkZFVuaGFuZGxlZFJlamVjdGlvbihwcm9taXNlKSB7CiAgICAgIHRoaXMudW5oYW5kbGVkUmVqZWN0aW9ucy5wdXNoKHsKICAgICAgICBwcm9taXNlOiBwcm9taXNlLAogICAgICAgIHRpbWU6IERhdGUubm93KCkKICAgICAgfSk7CiAgICAgIHRoaXMuc2NoZWR1bGVSZWplY3Rpb25DaGVjaygpOwogICAgfSwKCiAgICByZW1vdmVVbmhhbmRlbGVkUmVqZWN0aW9uOiBmdW5jdGlvbiByZW1vdmVVbmhhbmRlbGVkUmVqZWN0aW9uKHByb21pc2UpIHsKICAgICAgcHJvbWlzZS5fdW5oYW5kbGVkUmVqZWN0aW9uID0gZmFsc2U7CiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy51bmhhbmRsZWRSZWplY3Rpb25zLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgaWYgKHRoaXMudW5oYW5kbGVkUmVqZWN0aW9uc1tpXS5wcm9taXNlID09PSBwcm9taXNlKSB7CiAgICAgICAgICB0aGlzLnVuaGFuZGxlZFJlamVjdGlvbnMuc3BsaWNlKGkpOwogICAgICAgICAgaS0tOwogICAgICAgIH0KICAgICAgfQogICAgfSwKCiAgICBzY2hlZHVsZVJlamVjdGlvbkNoZWNrOiBmdW5jdGlvbiBzY2hlZHVsZVJlamVjdGlvbkNoZWNrKCkgewogICAgICBpZiAodGhpcy5wZW5kaW5nUmVqZWN0aW9uQ2hlY2spIHsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgdGhpcy5wZW5kaW5nUmVqZWN0aW9uQ2hlY2sgPSB0cnVlOwogICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uIHJlamVjdGlvbkNoZWNrKCkgewogICAgICAgIHRoaXMucGVuZGluZ1JlamVjdGlvbkNoZWNrID0gZmFsc2U7CiAgICAgICAgdmFyIG5vdyA9IERhdGUubm93KCk7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnVuaGFuZGxlZFJlamVjdGlvbnMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgIGlmIChub3cgLSB0aGlzLnVuaGFuZGxlZFJlamVjdGlvbnNbaV0udGltZSA+IFJFSkVDVElPTl9USU1FT1VUKSB7CiAgICAgICAgICAgIHZhciB1bmhhbmRsZWQgPSB0aGlzLnVuaGFuZGxlZFJlamVjdGlvbnNbaV0ucHJvbWlzZS5fdmFsdWU7CiAgICAgICAgICAgIHZhciBtc2cgPSAnVW5oYW5kbGVkIHJlamVjdGlvbjogJyArIHVuaGFuZGxlZDsKICAgICAgICAgICAgaWYgKHVuaGFuZGxlZC5zdGFjaykgewogICAgICAgICAgICAgIG1zZyArPSAnXG4nICsgdW5oYW5kbGVkLnN0YWNrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHdhcm4obXNnKTsKICAgICAgICAgICAgdGhpcy51bmhhbmRsZWRSZWplY3Rpb25zLnNwbGljZShpKTsKICAgICAgICAgICAgaS0tOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAodGhpcy51bmhhbmRsZWRSZWplY3Rpb25zLmxlbmd0aCkgewogICAgICAgICAgdGhpcy5zY2hlZHVsZVJlamVjdGlvbkNoZWNrKCk7CiAgICAgICAgfQogICAgICB9LmJpbmQodGhpcyksIFJFSkVDVElPTl9USU1FT1VUKTsKICAgIH0KICB9OwoKICBmdW5jdGlvbiBQcm9taXNlKHJlc29sdmVyKSB7CiAgICB0aGlzLl9zdGF0dXMgPSBTVEFUVVNfUEVORElORzsKICAgIHRoaXMuX2hhbmRsZXJzID0gW107CiAgICB0cnkgewogICAgICByZXNvbHZlci5jYWxsKHRoaXMsIHRoaXMuX3Jlc29sdmUuYmluZCh0aGlzKSwgdGhpcy5fcmVqZWN0LmJpbmQodGhpcykpOwogICAgfSBjYXRjaCAoZSkgewogICAgICB0aGlzLl9yZWplY3QoZSk7CiAgICB9CiAgfQogIC8qKgogICAqIEJ1aWxkcyBhIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCB3aGVuIGFsbCB0aGUgcGFzc2VkIGluIHByb21pc2VzIGFyZQogICAqIHJlc29sdmVkLgogICAqIEBwYXJhbSB7YXJyYXl9IGFycmF5IG9mIGRhdGEgYW5kL29yIHByb21pc2VzIHRvIHdhaXQgZm9yLgogICAqIEByZXR1cm4ge1Byb21pc2V9IE5ldyBkZXBlbmRhbnQgcHJvbWlzZS4KICAgKi8KICBQcm9taXNlLmFsbCA9IGZ1bmN0aW9uIFByb21pc2VfYWxsKHByb21pc2VzKSB7CiAgICB2YXIgcmVzb2x2ZUFsbCwgcmVqZWN0QWxsOwogICAgdmFyIGRlZmVycmVkID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICByZXNvbHZlQWxsID0gcmVzb2x2ZTsKICAgICAgcmVqZWN0QWxsID0gcmVqZWN0OwogICAgfSk7CiAgICB2YXIgdW5yZXNvbHZlZCA9IHByb21pc2VzLmxlbmd0aDsKICAgIHZhciByZXN1bHRzID0gW107CiAgICBpZiAodW5yZXNvbHZlZCA9PT0gMCkgewogICAgICByZXNvbHZlQWxsKHJlc3VsdHMpOwogICAgICByZXR1cm4gZGVmZXJyZWQ7CiAgICB9CiAgICBmdW5jdGlvbiByZWplY3QocmVhc29uKSB7CiAgICAgIGlmIChkZWZlcnJlZC5fc3RhdHVzID09PSBTVEFUVVNfUkVKRUNURUQpIHsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgcmVzdWx0cyA9IFtdOwogICAgICByZWplY3RBbGwocmVhc29uKTsKICAgIH0KICAgIGZvciAodmFyIGkgPSAwLCBpaSA9IHByb21pc2VzLmxlbmd0aDsgaSA8IGlpOyArK2kpIHsKICAgICAgdmFyIHByb21pc2UgPSBwcm9taXNlc1tpXTsKICAgICAgdmFyIHJlc29sdmUgPSAoZnVuY3Rpb24oaSkgewogICAgICAgIHJldHVybiBmdW5jdGlvbih2YWx1ZSkgewogICAgICAgICAgaWYgKGRlZmVycmVkLl9zdGF0dXMgPT09IFNUQVRVU19SRUpFQ1RFRCkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9CiAgICAgICAgICByZXN1bHRzW2ldID0gdmFsdWU7CiAgICAgICAgICB1bnJlc29sdmVkLS07CiAgICAgICAgICBpZiAodW5yZXNvbHZlZCA9PT0gMCkgewogICAgICAgICAgICByZXNvbHZlQWxsKHJlc3VsdHMpOwogICAgICAgICAgfQogICAgICAgIH07CiAgICAgIH0pKGkpOwogICAgICBpZiAoUHJvbWlzZS5pc1Byb21pc2UocHJvbWlzZSkpIHsKICAgICAgICBwcm9taXNlLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXNvbHZlKHByb21pc2UpOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gZGVmZXJyZWQ7CiAgfTsKCiAgLyoqCiAgICogQ2hlY2tzIGlmIHRoZSB2YWx1ZSBpcyBsaWtlbHkgYSBwcm9taXNlIChoYXMgYSAndGhlbicgZnVuY3Rpb24pLgogICAqIEByZXR1cm4ge2Jvb2xlYW59IHRydWUgaWYgdmFsdWUgaXMgdGhlbmFibGUKICAgKi8KICBQcm9taXNlLmlzUHJvbWlzZSA9IGZ1bmN0aW9uIFByb21pc2VfaXNQcm9taXNlKHZhbHVlKSB7CiAgICByZXR1cm4gdmFsdWUgJiYgdHlwZW9mIHZhbHVlLnRoZW4gPT09ICdmdW5jdGlvbic7CiAgfTsKCiAgLyoqCiAgICogQ3JlYXRlcyByZXNvbHZlZCBwcm9taXNlCiAgICogQHBhcmFtIHZhbHVlIHJlc29sdmUgdmFsdWUKICAgKiBAcmV0dXJucyB7UHJvbWlzZX0KICAgKi8KICBQcm9taXNlLnJlc29sdmUgPSBmdW5jdGlvbiBQcm9taXNlX3Jlc29sdmUodmFsdWUpIHsKICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7CiAgfTsKCiAgLyoqCiAgICogQ3JlYXRlcyByZWplY3RlZCBwcm9taXNlCiAgICogQHBhcmFtIHJlYXNvbiByZWplY3Rpb24gdmFsdWUKICAgKiBAcmV0dXJucyB7UHJvbWlzZX0KICAgKi8KICBQcm9taXNlLnJlamVjdCA9IGZ1bmN0aW9uIFByb21pc2VfcmVqZWN0KHJlYXNvbikgewogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgcmVqZWN0KHJlYXNvbik7IH0pOwogIH07CgogIFByb21pc2UucHJvdG90eXBlID0gewogICAgX3N0YXR1czogbnVsbCwKICAgIF92YWx1ZTogbnVsbCwKICAgIF9oYW5kbGVyczogbnVsbCwKICAgIF91bmhhbmRsZWRSZWplY3Rpb246IG51bGwsCgogICAgX3VwZGF0ZVN0YXR1czogZnVuY3Rpb24gUHJvbWlzZV9fdXBkYXRlU3RhdHVzKHN0YXR1cywgdmFsdWUpIHsKICAgICAgaWYgKHRoaXMuX3N0YXR1cyA9PT0gU1RBVFVTX1JFU09MVkVEIHx8CiAgICAgICAgICB0aGlzLl9zdGF0dXMgPT09IFNUQVRVU19SRUpFQ1RFRCkgewogICAgICAgIHJldHVybjsKICAgICAgfQoKICAgICAgaWYgKHN0YXR1cyA9PT0gU1RBVFVTX1JFU09MVkVEICYmCiAgICAgICAgICBQcm9taXNlLmlzUHJvbWlzZSh2YWx1ZSkpIHsKICAgICAgICB2YWx1ZS50aGVuKHRoaXMuX3VwZGF0ZVN0YXR1cy5iaW5kKHRoaXMsIFNUQVRVU19SRVNPTFZFRCksCiAgICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVTdGF0dXMuYmluZCh0aGlzLCBTVEFUVVNfUkVKRUNURUQpKTsKICAgICAgICByZXR1cm47CiAgICAgIH0KCiAgICAgIHRoaXMuX3N0YXR1cyA9IHN0YXR1czsKICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTsKCiAgICAgIGlmIChzdGF0dXMgPT09IFNUQVRVU19SRUpFQ1RFRCAmJiB0aGlzLl9oYW5kbGVycy5sZW5ndGggPT09IDApIHsKICAgICAgICB0aGlzLl91bmhhbmRsZWRSZWplY3Rpb24gPSB0cnVlOwogICAgICAgIEhhbmRsZXJNYW5hZ2VyLmFkZFVuaGFuZGxlZFJlamVjdGlvbih0aGlzKTsKICAgICAgfQoKICAgICAgSGFuZGxlck1hbmFnZXIuc2NoZWR1bGVIYW5kbGVycyh0aGlzKTsKICAgIH0sCgogICAgX3Jlc29sdmU6IGZ1bmN0aW9uIFByb21pc2VfcmVzb2x2ZSh2YWx1ZSkgewogICAgICB0aGlzLl91cGRhdGVTdGF0dXMoU1RBVFVTX1JFU09MVkVELCB2YWx1ZSk7CiAgICB9LAoKICAgIF9yZWplY3Q6IGZ1bmN0aW9uIFByb21pc2VfcmVqZWN0KHJlYXNvbikgewogICAgICB0aGlzLl91cGRhdGVTdGF0dXMoU1RBVFVTX1JFSkVDVEVELCByZWFzb24pOwogICAgfSwKCiAgICB0aGVuOiBmdW5jdGlvbiBQcm9taXNlX3RoZW4ob25SZXNvbHZlLCBvblJlamVjdCkgewogICAgICB2YXIgbmV4dFByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgdGhpcy5yZXNvbHZlID0gcmVzb2x2ZTsKICAgICAgICB0aGlzLnJlamVjdCA9IHJlamVjdDsKICAgICAgfSk7CiAgICAgIHRoaXMuX2hhbmRsZXJzLnB1c2goewogICAgICAgIHRoaXNQcm9taXNlOiB0aGlzLAogICAgICAgIG9uUmVzb2x2ZTogb25SZXNvbHZlLAogICAgICAgIG9uUmVqZWN0OiBvblJlamVjdCwKICAgICAgICBuZXh0UHJvbWlzZTogbmV4dFByb21pc2UKICAgICAgfSk7CiAgICAgIEhhbmRsZXJNYW5hZ2VyLnNjaGVkdWxlSGFuZGxlcnModGhpcyk7CiAgICAgIHJldHVybiBuZXh0UHJvbWlzZTsKICAgIH0sCgogICAgY2F0Y2g6IGZ1bmN0aW9uIFByb21pc2VfY2F0Y2gob25SZWplY3QpIHsKICAgICAgcmV0dXJuIHRoaXMudGhlbih1bmRlZmluZWQsIG9uUmVqZWN0KTsKICAgIH0KICB9OwoKICBnbG9iYWxTY29wZS5Qcm9taXNlID0gUHJvbWlzZTsKLy8jZWxzZQovL3Rocm93IG5ldyBFcnJvcignRE9NIFByb21pc2UgaXMgbm90IHByZXNlbnQnKTsKLy8jZW5kaWYKfSkoKTsKCnZhciBTdGF0VGltZXIgPSAoZnVuY3Rpb24gU3RhdFRpbWVyQ2xvc3VyZSgpIHsKICBmdW5jdGlvbiBycGFkKHN0ciwgcGFkLCBsZW5ndGgpIHsKICAgIHdoaWxlIChzdHIubGVuZ3RoIDwgbGVuZ3RoKSB7CiAgICAgIHN0ciArPSBwYWQ7CiAgICB9CiAgICByZXR1cm4gc3RyOwogIH0KICBmdW5jdGlvbiBTdGF0VGltZXIoKSB7CiAgICB0aGlzLnN0YXJ0ZWQgPSB7fTsKICAgIHRoaXMudGltZXMgPSBbXTsKICAgIHRoaXMuZW5hYmxlZCA9IHRydWU7CiAgfQogIFN0YXRUaW1lci5wcm90b3R5cGUgPSB7CiAgICB0aW1lOiBmdW5jdGlvbiBTdGF0VGltZXJfdGltZShuYW1lKSB7CiAgICAgIGlmICghdGhpcy5lbmFibGVkKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIGlmIChuYW1lIGluIHRoaXMuc3RhcnRlZCkgewogICAgICAgIHdhcm4oJ1RpbWVyIGlzIGFscmVhZHkgcnVubmluZyBmb3IgJyArIG5hbWUpOwogICAgICB9CiAgICAgIHRoaXMuc3RhcnRlZFtuYW1lXSA9IERhdGUubm93KCk7CiAgICB9LAogICAgdGltZUVuZDogZnVuY3Rpb24gU3RhdFRpbWVyX3RpbWVFbmQobmFtZSkgewogICAgICBpZiAoIXRoaXMuZW5hYmxlZCkgewogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBpZiAoIShuYW1lIGluIHRoaXMuc3RhcnRlZCkpIHsKICAgICAgICB3YXJuKCdUaW1lciBoYXMgbm90IGJlZW4gc3RhcnRlZCBmb3IgJyArIG5hbWUpOwogICAgICB9CiAgICAgIHRoaXMudGltZXMucHVzaCh7CiAgICAgICAgJ25hbWUnOiBuYW1lLAogICAgICAgICdzdGFydCc6IHRoaXMuc3RhcnRlZFtuYW1lXSwKICAgICAgICAnZW5kJzogRGF0ZS5ub3coKQogICAgICB9KTsKICAgICAgLy8gUmVtb3ZlIHRpbWVyIGZyb20gc3RhcnRlZCBzbyBpdCBjYW4gYmUgY2FsbGVkIGFnYWluLgogICAgICBkZWxldGUgdGhpcy5zdGFydGVkW25hbWVdOwogICAgfSwKICAgIHRvU3RyaW5nOiBmdW5jdGlvbiBTdGF0VGltZXJfdG9TdHJpbmcoKSB7CiAgICAgIHZhciBpLCBpaTsKICAgICAgdmFyIHRpbWVzID0gdGhpcy50aW1lczsKICAgICAgdmFyIG91dCA9ICcnOwogICAgICAvLyBGaW5kIHRoZSBsb25nZXN0IG5hbWUgZm9yIHBhZGRpbmcgcHVycG9zZXMuCiAgICAgIHZhciBsb25nZXN0ID0gMDsKICAgICAgZm9yIChpID0gMCwgaWkgPSB0aW1lcy5sZW5ndGg7IGkgPCBpaTsgKytpKSB7CiAgICAgICAgdmFyIG5hbWUgPSB0aW1lc1tpXVsnbmFtZSddOwogICAgICAgIGlmIChuYW1lLmxlbmd0aCA+IGxvbmdlc3QpIHsKICAgICAgICAgIGxvbmdlc3QgPSBuYW1lLmxlbmd0aDsKICAgICAgICB9CiAgICAgIH0KICAgICAgZm9yIChpID0gMCwgaWkgPSB0aW1lcy5sZW5ndGg7IGkgPCBpaTsgKytpKSB7CiAgICAgICAgdmFyIHNwYW4gPSB0aW1lc1tpXTsKICAgICAgICB2YXIgZHVyYXRpb24gPSBzcGFuLmVuZCAtIHNwYW4uc3RhcnQ7CiAgICAgICAgb3V0ICs9IHJwYWQoc3BhblsnbmFtZSddLCAnICcsIGxvbmdlc3QpICsgJyAnICsgZHVyYXRpb24gKyAnbXNcbic7CiAgICAgIH0KICAgICAgcmV0dXJuIG91dDsKICAgIH0KICB9OwogIHJldHVybiBTdGF0VGltZXI7Cn0pKCk7CgpQREZKUy5jcmVhdGVCbG9iID0gZnVuY3Rpb24gY3JlYXRlQmxvYihkYXRhLCBjb250ZW50VHlwZSkgewogIGlmICh0eXBlb2YgQmxvYiAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgIHJldHVybiBuZXcgQmxvYihbZGF0YV0sIHsgdHlwZTogY29udGVudFR5cGUgfSk7CiAgfQogIC8vIEJsb2IgYnVpbGRlciBpcyBkZXByZWNhdGVkIGluIEZGMTQgYW5kIHJlbW92ZWQgaW4gRkYxOC4KICB2YXIgYmIgPSBuZXcgTW96QmxvYkJ1aWxkZXIoKTsKICBiYi5hcHBlbmQoZGF0YSk7CiAgcmV0dXJuIGJiLmdldEJsb2IoY29udGVudFR5cGUpOwp9OwoKUERGSlMuY3JlYXRlT2JqZWN0VVJMID0gKGZ1bmN0aW9uIGNyZWF0ZU9iamVjdFVSTENsb3N1cmUoKSB7CiAgLy8gQmxvYi9jcmVhdGVPYmplY3RVUkwgaXMgbm90IGF2YWlsYWJsZSwgZmFsbGluZyBiYWNrIHRvIGRhdGEgc2NoZW1hLgogIHZhciBkaWdpdHMgPQogICAgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89JzsKCiAgcmV0dXJuIGZ1bmN0aW9uIGNyZWF0ZU9iamVjdFVSTChkYXRhLCBjb250ZW50VHlwZSkgewogICAgaWYgKCFQREZKUy5kaXNhYmxlQ3JlYXRlT2JqZWN0VVJMICYmCiAgICAgICAgdHlwZW9mIFVSTCAhPT0gJ3VuZGVmaW5lZCcgJiYgVVJMLmNyZWF0ZU9iamVjdFVSTCkgewogICAgICB2YXIgYmxvYiA9IFBERkpTLmNyZWF0ZUJsb2IoZGF0YSwgY29udGVudFR5cGUpOwogICAgICByZXR1cm4gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTsKICAgIH0KCiAgICB2YXIgYnVmZmVyID0gJ2RhdGE6JyArIGNvbnRlbnRUeXBlICsgJztiYXNlNjQsJzsKICAgIGZvciAodmFyIGkgPSAwLCBpaSA9IGRhdGEubGVuZ3RoOyBpIDwgaWk7IGkgKz0gMykgewogICAgICB2YXIgYjEgPSBkYXRhW2ldICYgMHhGRjsKICAgICAgdmFyIGIyID0gZGF0YVtpICsgMV0gJiAweEZGOwogICAgICB2YXIgYjMgPSBkYXRhW2kgKyAyXSAmIDB4RkY7CiAgICAgIHZhciBkMSA9IGIxID4+IDIsIGQyID0gKChiMSAmIDMpIDw8IDQpIHwgKGIyID4+IDQpOwogICAgICB2YXIgZDMgPSBpICsgMSA8IGlpID8gKChiMiAmIDB4RikgPDwgMikgfCAoYjMgPj4gNikgOiA2NDsKICAgICAgdmFyIGQ0ID0gaSArIDIgPCBpaSA/IChiMyAmIDB4M0YpIDogNjQ7CiAgICAgIGJ1ZmZlciArPSBkaWdpdHNbZDFdICsgZGlnaXRzW2QyXSArIGRpZ2l0c1tkM10gKyBkaWdpdHNbZDRdOwogICAgfQogICAgcmV0dXJuIGJ1ZmZlcjsKICB9Owp9KSgpOwoKZnVuY3Rpb24gTWVzc2FnZUhhbmRsZXIobmFtZSwgY29tT2JqKSB7CiAgdGhpcy5uYW1lID0gbmFtZTsKICB0aGlzLmNvbU9iaiA9IGNvbU9iajsKICB0aGlzLmNhbGxiYWNrSW5kZXggPSAxOwogIHRoaXMucG9zdE1lc3NhZ2VUcmFuc2ZlcnMgPSB0cnVlOwogIHZhciBjYWxsYmFja3NDYXBhYmlsaXRpZXMgPSB0aGlzLmNhbGxiYWNrc0NhcGFiaWxpdGllcyA9IHt9OwogIHZhciBhaCA9IHRoaXMuYWN0aW9uSGFuZGxlciA9IHt9OwoKICBhaFsnY29uc29sZV9sb2cnXSA9IFtmdW5jdGlvbiBhaENvbnNvbGVMb2coZGF0YSkgewogICAgY29uc29sZS5sb2cuYXBwbHkoY29uc29sZSwgZGF0YSk7CiAgfV07CiAgYWhbJ2NvbnNvbGVfZXJyb3InXSA9IFtmdW5jdGlvbiBhaENvbnNvbGVFcnJvcihkYXRhKSB7CiAgICBjb25zb2xlLmVycm9yLmFwcGx5KGNvbnNvbGUsIGRhdGEpOwogIH1dOwogIGFoWydfdW5zdXBwb3J0ZWRfZmVhdHVyZSddID0gW2Z1bmN0aW9uIGFoX3Vuc3VwcG9ydGVkRmVhdHVyZShkYXRhKSB7CiAgICBVbnN1cHBvcnRlZE1hbmFnZXIubm90aWZ5KGRhdGEpOwogIH1dOwoKICBjb21PYmoub25tZXNzYWdlID0gZnVuY3Rpb24gbWVzc2FnZUhhbmRsZXJDb21PYmpPbk1lc3NhZ2UoZXZlbnQpIHsKICAgIHZhciBkYXRhID0gZXZlbnQuZGF0YTsKICAgIGlmIChkYXRhLmlzUmVwbHkpIHsKICAgICAgdmFyIGNhbGxiYWNrSWQgPSBkYXRhLmNhbGxiYWNrSWQ7CiAgICAgIGlmIChkYXRhLmNhbGxiYWNrSWQgaW4gY2FsbGJhY2tzQ2FwYWJpbGl0aWVzKSB7CiAgICAgICAgdmFyIGNhbGxiYWNrID0gY2FsbGJhY2tzQ2FwYWJpbGl0aWVzW2NhbGxiYWNrSWRdOwogICAgICAgIGRlbGV0ZSBjYWxsYmFja3NDYXBhYmlsaXRpZXNbY2FsbGJhY2tJZF07CiAgICAgICAgaWYgKCdlcnJvcicgaW4gZGF0YSkgewogICAgICAgICAgY2FsbGJhY2sucmVqZWN0KGRhdGEuZXJyb3IpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBjYWxsYmFjay5yZXNvbHZlKGRhdGEuZGF0YSk7CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIGVycm9yKCdDYW5ub3QgcmVzb2x2ZSBjYWxsYmFjayAnICsgY2FsbGJhY2tJZCk7CiAgICAgIH0KICAgIH0gZWxzZSBpZiAoZGF0YS5hY3Rpb24gaW4gYWgpIHsKICAgICAgdmFyIGFjdGlvbiA9IGFoW2RhdGEuYWN0aW9uXTsKICAgICAgaWYgKGRhdGEuY2FsbGJhY2tJZCkgewogICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgICAgcmV0dXJuIGFjdGlvblswXS5jYWxsKGFjdGlvblsxXSwgZGF0YS5kYXRhKTsKICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKICAgICAgICAgIGNvbU9iai5wb3N0TWVzc2FnZSh7CiAgICAgICAgICAgIGlzUmVwbHk6IHRydWUsCiAgICAgICAgICAgIGNhbGxiYWNrSWQ6IGRhdGEuY2FsbGJhY2tJZCwKICAgICAgICAgICAgZGF0YTogcmVzdWx0CiAgICAgICAgICB9KTsKICAgICAgICB9LCBmdW5jdGlvbiAocmVhc29uKSB7CiAgICAgICAgICBjb21PYmoucG9zdE1lc3NhZ2UoewogICAgICAgICAgICBpc1JlcGx5OiB0cnVlLAogICAgICAgICAgICBjYWxsYmFja0lkOiBkYXRhLmNhbGxiYWNrSWQsCiAgICAgICAgICAgIGVycm9yOiByZWFzb24KICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgICB9IGVsc2UgewogICAgICAgIGFjdGlvblswXS5jYWxsKGFjdGlvblsxXSwgZGF0YS5kYXRhKTsKICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgZXJyb3IoJ1Vua25vd24gYWN0aW9uIGZyb20gd29ya2VyOiAnICsgZGF0YS5hY3Rpb24pOwogICAgfQogIH07Cn0KCk1lc3NhZ2VIYW5kbGVyLnByb3RvdHlwZSA9IHsKICBvbjogZnVuY3Rpb24gbWVzc2FnZUhhbmRsZXJPbihhY3Rpb25OYW1lLCBoYW5kbGVyLCBzY29wZSkgewogICAgdmFyIGFoID0gdGhpcy5hY3Rpb25IYW5kbGVyOwogICAgaWYgKGFoW2FjdGlvbk5hbWVdKSB7CiAgICAgIGVycm9yKCdUaGVyZSBpcyBhbHJlYWR5IGFuIGFjdGlvbk5hbWUgY2FsbGVkICInICsgYWN0aW9uTmFtZSArICciJyk7CiAgICB9CiAgICBhaFthY3Rpb25OYW1lXSA9IFtoYW5kbGVyLCBzY29wZV07CiAgfSwKICAvKioKICAgKiBTZW5kcyBhIG1lc3NhZ2UgdG8gdGhlIGNvbU9iaiB0byBpbnZva2UgdGhlIGFjdGlvbiB3aXRoIHRoZSBzdXBwbGllZCBkYXRhLgogICAqIEBwYXJhbSB7U3RyaW5nfSBhY3Rpb25OYW1lIEFjdGlvbiB0byBjYWxsLgogICAqIEBwYXJhbSB7SlNPTn0gZGF0YSBKU09OIGRhdGEgdG8gc2VuZC4KICAgKiBAcGFyYW0ge0FycmF5fSBbdHJhbnNmZXJzXSBPcHRpb25hbCBsaXN0IG9mIHRyYW5zZmVycy9BcnJheUJ1ZmZlcnMKICAgKi8KICBzZW5kOiBmdW5jdGlvbiBtZXNzYWdlSGFuZGxlclNlbmQoYWN0aW9uTmFtZSwgZGF0YSwgdHJhbnNmZXJzKSB7CiAgICB2YXIgbWVzc2FnZSA9IHsKICAgICAgYWN0aW9uOiBhY3Rpb25OYW1lLAogICAgICBkYXRhOiBkYXRhCiAgICB9OwogICAgdGhpcy5wb3N0TWVzc2FnZShtZXNzYWdlLCB0cmFuc2ZlcnMpOwogIH0sCiAgLyoqCiAgICogU2VuZHMgYSBtZXNzYWdlIHRvIHRoZSBjb21PYmogdG8gaW52b2tlIHRoZSBhY3Rpb24gd2l0aCB0aGUgc3VwcGxpZWQgZGF0YS4KICAgKiBFeHBlY3RzIHRoYXQgb3RoZXIgc2lkZSB3aWxsIGNhbGxiYWNrIHdpdGggdGhlIHJlc3BvbnNlLgogICAqIEBwYXJhbSB7U3RyaW5nfSBhY3Rpb25OYW1lIEFjdGlvbiB0byBjYWxsLgogICAqIEBwYXJhbSB7SlNPTn0gZGF0YSBKU09OIGRhdGEgdG8gc2VuZC4KICAgKiBAcGFyYW0ge0FycmF5fSBbdHJhbnNmZXJzXSBPcHRpb25hbCBsaXN0IG9mIHRyYW5zZmVycy9BcnJheUJ1ZmZlcnMuCiAgICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2UgdG8gYmUgcmVzb2x2ZWQgd2l0aCByZXNwb25zZSBkYXRhLgogICAqLwogIHNlbmRXaXRoUHJvbWlzZToKICAgIGZ1bmN0aW9uIG1lc3NhZ2VIYW5kbGVyU2VuZFdpdGhQcm9taXNlKGFjdGlvbk5hbWUsIGRhdGEsIHRyYW5zZmVycykgewogICAgdmFyIGNhbGxiYWNrSWQgPSB0aGlzLmNhbGxiYWNrSW5kZXgrKzsKICAgIHZhciBtZXNzYWdlID0gewogICAgICBhY3Rpb246IGFjdGlvbk5hbWUsCiAgICAgIGRhdGE6IGRhdGEsCiAgICAgIGNhbGxiYWNrSWQ6IGNhbGxiYWNrSWQKICAgIH07CiAgICB2YXIgY2FwYWJpbGl0eSA9IGNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KCk7CiAgICB0aGlzLmNhbGxiYWNrc0NhcGFiaWxpdGllc1tjYWxsYmFja0lkXSA9IGNhcGFiaWxpdHk7CiAgICB0cnkgewogICAgICB0aGlzLnBvc3RNZXNzYWdlKG1lc3NhZ2UsIHRyYW5zZmVycyk7CiAgICB9IGNhdGNoIChlKSB7CiAgICAgIGNhcGFiaWxpdHkucmVqZWN0KGUpOwogICAgfQogICAgcmV0dXJuIGNhcGFiaWxpdHkucHJvbWlzZTsKICB9LAogIC8qKgogICAqIFNlbmRzIHJhdyBtZXNzYWdlIHRvIHRoZSBjb21PYmouCiAgICogQHByaXZhdGUKICAgKiBAcGFyYW0gbWVzc2FnZSB7T2JqZWN0fSBSYXcgbWVzc2FnZS4KICAgKiBAcGFyYW0gdHJhbnNmZXJzIExpc3Qgb2YgdHJhbnNmZXJzL0FycmF5QnVmZmVycywgb3IgdW5kZWZpbmVkLgogICAqLwogIHBvc3RNZXNzYWdlOiBmdW5jdGlvbiAobWVzc2FnZSwgdHJhbnNmZXJzKSB7CiAgICBpZiAodHJhbnNmZXJzICYmIHRoaXMucG9zdE1lc3NhZ2VUcmFuc2ZlcnMpIHsKICAgICAgdGhpcy5jb21PYmoucG9zdE1lc3NhZ2UobWVzc2FnZSwgdHJhbnNmZXJzKTsKICAgIH0gZWxzZSB7CiAgICAgIHRoaXMuY29tT2JqLnBvc3RNZXNzYWdlKG1lc3NhZ2UpOwogICAgfQogIH0KfTsKCmZ1bmN0aW9uIGxvYWRKcGVnU3RyZWFtKGlkLCBpbWFnZVVybCwgb2JqcykgewogIHZhciBpbWcgPSBuZXcgSW1hZ2UoKTsKICBpbWcub25sb2FkID0gKGZ1bmN0aW9uIGxvYWRKcGVnU3RyZWFtX29ubG9hZENsb3N1cmUoKSB7CiAgICBvYmpzLnJlc29sdmUoaWQsIGltZyk7CiAgfSk7CiAgaW1nLm9uZXJyb3IgPSAoZnVuY3Rpb24gbG9hZEpwZWdTdHJlYW1fb25lcnJvckNsb3N1cmUoKSB7CiAgICBvYmpzLnJlc29sdmUoaWQsIG51bGwpOwogICAgd2FybignRXJyb3IgZHVyaW5nIEpQRUcgaW1hZ2UgbG9hZGluZycpOwogIH0pOwogIGltZy5zcmMgPSBpbWFnZVVybDsKfQoKCgovLyNpZiAoRklSRUZPWCB8fCBNT1pDRU5UUkFMKQovLwovL0NvbXBvbmVudHMudXRpbHMuaW1wb3J0KCdyZXNvdXJjZTovL2dyZS9tb2R1bGVzL1NlcnZpY2VzLmpzbScpOwovLwovL3ZhciBFWFBPUlRFRF9TWU1CT0xTID0gWydOZXR3b3JrTWFuYWdlciddOwovLwovL3ZhciBjb25zb2xlID0gewovLyAgbG9nOiBmdW5jdGlvbiBjb25zb2xlX2xvZyhhTXNnKSB7Ci8vICAgIHZhciBtc2cgPSAnbmV0d29yay5qczogJyArIChhTXNnLmpvaW4gPyBhTXNnLmpvaW4oJycpIDogYU1zZyk7Ci8vICAgIFNlcnZpY2VzLmNvbnNvbGUubG9nU3RyaW5nTWVzc2FnZShtc2cpOwovLyAgICAvLyBUT0RPKG1hY2spOiBkdW1wKCkgZG9lc24ndCBzZWVtIHRvIHdvcmsgaGVyZS4uLgovLyAgICBkdW1wKG1zZyArICdcbicpOwovLyAgfQovL30KLy8jZW5kaWYKCnZhciBOZXR3b3JrTWFuYWdlciA9IChmdW5jdGlvbiBOZXR3b3JrTWFuYWdlckNsb3N1cmUoKSB7CgogIHZhciBPS19SRVNQT05TRSA9IDIwMDsKICB2YXIgUEFSVElBTF9DT05URU5UX1JFU1BPTlNFID0gMjA2OwoKICBmdW5jdGlvbiBOZXR3b3JrTWFuYWdlcih1cmwsIGFyZ3MpIHsKICAgIHRoaXMudXJsID0gdXJsOwogICAgYXJncyA9IGFyZ3MgfHwge307CiAgICB0aGlzLmlzSHR0cCA9IC9eaHR0cHM/Oi9pLnRlc3QodXJsKTsKICAgIHRoaXMuaHR0cEhlYWRlcnMgPSAodGhpcy5pc0h0dHAgJiYgYXJncy5odHRwSGVhZGVycykgfHwge307CiAgICB0aGlzLndpdGhDcmVkZW50aWFscyA9IGFyZ3Mud2l0aENyZWRlbnRpYWxzIHx8IGZhbHNlOwogICAgdGhpcy5nZXRYaHIgPSBhcmdzLmdldFhociB8fAogICAgICBmdW5jdGlvbiBOZXR3b3JrTWFuYWdlcl9nZXRYaHIoKSB7Ci8vI2lmIEIyRwovLyAgICAgIHJldHVybiBuZXcgWE1MSHR0cFJlcXVlc3QoeyBtb3pTeXN0ZW06IHRydWUgfSk7Ci8vI2Vsc2UKICAgICAgICByZXR1cm4gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Ci8vI2VuZGlmCiAgICAgIH07CgogICAgdGhpcy5jdXJyWGhySWQgPSAwOwogICAgdGhpcy5wZW5kaW5nUmVxdWVzdHMgPSB7fTsKICAgIHRoaXMubG9hZGVkUmVxdWVzdHMgPSB7fTsKICB9CgogIGZ1bmN0aW9uIGdldEFycmF5QnVmZmVyKHhocikgewogICAgdmFyIGRhdGEgPSB4aHIucmVzcG9uc2U7CiAgICBpZiAodHlwZW9mIGRhdGEgIT09ICdzdHJpbmcnKSB7CiAgICAgIHJldHVybiBkYXRhOwogICAgfQogICAgdmFyIGxlbmd0aCA9IGRhdGEubGVuZ3RoOwogICAgdmFyIGFycmF5ID0gbmV3IFVpbnQ4QXJyYXkobGVuZ3RoKTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgYXJyYXlbaV0gPSBkYXRhLmNoYXJDb2RlQXQoaSkgJiAweEZGOwogICAgfQogICAgcmV0dXJuIGFycmF5LmJ1ZmZlcjsKICB9CgogIE5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgIHJlcXVlc3RSYW5nZTogZnVuY3Rpb24gTmV0d29ya01hbmFnZXJfcmVxdWVzdFJhbmdlKGJlZ2luLCBlbmQsIGxpc3RlbmVycykgewogICAgICB2YXIgYXJncyA9IHsKICAgICAgICBiZWdpbjogYmVnaW4sCiAgICAgICAgZW5kOiBlbmQKICAgICAgfTsKICAgICAgZm9yICh2YXIgcHJvcCBpbiBsaXN0ZW5lcnMpIHsKICAgICAgICBhcmdzW3Byb3BdID0gbGlzdGVuZXJzW3Byb3BdOwogICAgICB9CiAgICAgIHJldHVybiB0aGlzLnJlcXVlc3QoYXJncyk7CiAgICB9LAoKICAgIHJlcXVlc3RGdWxsOiBmdW5jdGlvbiBOZXR3b3JrTWFuYWdlcl9yZXF1ZXN0RnVsbChsaXN0ZW5lcnMpIHsKICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdChsaXN0ZW5lcnMpOwogICAgfSwKCiAgICByZXF1ZXN0OiBmdW5jdGlvbiBOZXR3b3JrTWFuYWdlcl9yZXF1ZXN0KGFyZ3MpIHsKICAgICAgdmFyIHhociA9IHRoaXMuZ2V0WGhyKCk7CiAgICAgIHZhciB4aHJJZCA9IHRoaXMuY3VyclhocklkKys7CiAgICAgIHZhciBwZW5kaW5nUmVxdWVzdCA9IHRoaXMucGVuZGluZ1JlcXVlc3RzW3hocklkXSA9IHsKICAgICAgICB4aHI6IHhocgogICAgICB9OwoKICAgICAgeGhyLm9wZW4oJ0dFVCcsIHRoaXMudXJsKTsKICAgICAgeGhyLndpdGhDcmVkZW50aWFscyA9IHRoaXMud2l0aENyZWRlbnRpYWxzOwogICAgICBmb3IgKHZhciBwcm9wZXJ0eSBpbiB0aGlzLmh0dHBIZWFkZXJzKSB7CiAgICAgICAgdmFyIHZhbHVlID0gdGhpcy5odHRwSGVhZGVyc1twcm9wZXJ0eV07CiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihwcm9wZXJ0eSwgdmFsdWUpOwogICAgICB9CiAgICAgIGlmICh0aGlzLmlzSHR0cCAmJiAnYmVnaW4nIGluIGFyZ3MgJiYgJ2VuZCcgaW4gYXJncykgewogICAgICAgIHZhciByYW5nZVN0ciA9IGFyZ3MuYmVnaW4gKyAnLScgKyAoYXJncy5lbmQgLSAxKTsKICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcignUmFuZ2UnLCAnYnl0ZXM9JyArIHJhbmdlU3RyKTsKICAgICAgICBwZW5kaW5nUmVxdWVzdC5leHBlY3RlZFN0YXR1cyA9IDIwNjsKICAgICAgfSBlbHNlIHsKICAgICAgICBwZW5kaW5nUmVxdWVzdC5leHBlY3RlZFN0YXR1cyA9IDIwMDsKICAgICAgfQoKICAgICAgaWYgKGFyZ3Mub25Qcm9ncmVzc2l2ZURhdGEpIHsKICAgICAgICAvLyBTb21lIGxlZ2FjeSBicm93c2VycyBtaWdodCB0aHJvdyBhbiBleGNlcHRpb24uCiAgICAgICAgdHJ5IHsKICAgICAgICAgIHhoci5yZXNwb25zZVR5cGUgPSAnbW96LWNodW5rZWQtYXJyYXlidWZmZXInOwogICAgICAgIH0gY2F0Y2goZSkge30KICAgICAgICBpZiAoeGhyLnJlc3BvbnNlVHlwZSA9PT0gJ21vei1jaHVua2VkLWFycmF5YnVmZmVyJykgewogICAgICAgICAgcGVuZGluZ1JlcXVlc3Qub25Qcm9ncmVzc2l2ZURhdGEgPSBhcmdzLm9uUHJvZ3Jlc3NpdmVEYXRhOwogICAgICAgICAgcGVuZGluZ1JlcXVlc3QubW96Q2h1bmtlZCA9IHRydWU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHhoci5yZXNwb25zZVR5cGUgPSAnYXJyYXlidWZmZXInOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICB4aHIucmVzcG9uc2VUeXBlID0gJ2FycmF5YnVmZmVyJzsKICAgICAgfQoKICAgICAgaWYgKGFyZ3Mub25FcnJvcikgewogICAgICAgIHhoci5vbmVycm9yID0gZnVuY3Rpb24oZXZ0KSB7CiAgICAgICAgICBhcmdzLm9uRXJyb3IoeGhyLnN0YXR1cyk7CiAgICAgICAgfTsKICAgICAgfQogICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gdGhpcy5vblN0YXRlQ2hhbmdlLmJpbmQodGhpcywgeGhySWQpOwogICAgICB4aHIub25wcm9ncmVzcyA9IHRoaXMub25Qcm9ncmVzcy5iaW5kKHRoaXMsIHhocklkKTsKCiAgICAgIHBlbmRpbmdSZXF1ZXN0Lm9uSGVhZGVyc1JlY2VpdmVkID0gYXJncy5vbkhlYWRlcnNSZWNlaXZlZDsKICAgICAgcGVuZGluZ1JlcXVlc3Qub25Eb25lID0gYXJncy5vbkRvbmU7CiAgICAgIHBlbmRpbmdSZXF1ZXN0Lm9uRXJyb3IgPSBhcmdzLm9uRXJyb3I7CiAgICAgIHBlbmRpbmdSZXF1ZXN0Lm9uUHJvZ3Jlc3MgPSBhcmdzLm9uUHJvZ3Jlc3M7CgogICAgICB4aHIuc2VuZChudWxsKTsKCiAgICAgIHJldHVybiB4aHJJZDsKICAgIH0sCgogICAgb25Qcm9ncmVzczogZnVuY3Rpb24gTmV0d29ya01hbmFnZXJfb25Qcm9ncmVzcyh4aHJJZCwgZXZ0KSB7CiAgICAgIHZhciBwZW5kaW5nUmVxdWVzdCA9IHRoaXMucGVuZGluZ1JlcXVlc3RzW3hocklkXTsKICAgICAgaWYgKCFwZW5kaW5nUmVxdWVzdCkgewogICAgICAgIC8vIE1heWJlIGFib3J0UmVxdWVzdCB3YXMgY2FsbGVkLi4uCiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICBpZiAocGVuZGluZ1JlcXVlc3QubW96Q2h1bmtlZCkgewogICAgICAgIHZhciBjaHVuayA9IGdldEFycmF5QnVmZmVyKHBlbmRpbmdSZXF1ZXN0Lnhocik7CiAgICAgICAgcGVuZGluZ1JlcXVlc3Qub25Qcm9ncmVzc2l2ZURhdGEoY2h1bmspOwogICAgICB9CgogICAgICB2YXIgb25Qcm9ncmVzcyA9IHBlbmRpbmdSZXF1ZXN0Lm9uUHJvZ3Jlc3M7CiAgICAgIGlmIChvblByb2dyZXNzKSB7CiAgICAgICAgb25Qcm9ncmVzcyhldnQpOwogICAgICB9CiAgICB9LAoKICAgIG9uU3RhdGVDaGFuZ2U6IGZ1bmN0aW9uIE5ldHdvcmtNYW5hZ2VyX29uU3RhdGVDaGFuZ2UoeGhySWQsIGV2dCkgewogICAgICB2YXIgcGVuZGluZ1JlcXVlc3QgPSB0aGlzLnBlbmRpbmdSZXF1ZXN0c1t4aHJJZF07CiAgICAgIGlmICghcGVuZGluZ1JlcXVlc3QpIHsKICAgICAgICAvLyBNYXliZSBhYm9ydFJlcXVlc3Qgd2FzIGNhbGxlZC4uLgogICAgICAgIHJldHVybjsKICAgICAgfQoKICAgICAgdmFyIHhociA9IHBlbmRpbmdSZXF1ZXN0LnhocjsKICAgICAgaWYgKHhoci5yZWFkeVN0YXRlID49IDIgJiYgcGVuZGluZ1JlcXVlc3Qub25IZWFkZXJzUmVjZWl2ZWQpIHsKICAgICAgICBwZW5kaW5nUmVxdWVzdC5vbkhlYWRlcnNSZWNlaXZlZCgpOwogICAgICAgIGRlbGV0ZSBwZW5kaW5nUmVxdWVzdC5vbkhlYWRlcnNSZWNlaXZlZDsKICAgICAgfQoKICAgICAgaWYgKHhoci5yZWFkeVN0YXRlICE9PSA0KSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICBpZiAoISh4aHJJZCBpbiB0aGlzLnBlbmRpbmdSZXF1ZXN0cykpIHsKICAgICAgICAvLyBUaGUgWEhSIHJlcXVlc3QgbWlnaHQgaGF2ZSBiZWVuIGFib3J0ZWQgaW4gb25IZWFkZXJzUmVjZWl2ZWQoKQogICAgICAgIC8vIGNhbGxiYWNrLCBpbiB3aGljaCBjYXNlIHdlIHNob3VsZCBhYm9ydCByZXF1ZXN0CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICBkZWxldGUgdGhpcy5wZW5kaW5nUmVxdWVzdHNbeGhySWRdOwoKICAgICAgLy8gc3VjY2VzcyBzdGF0dXMgPT0gMCBjYW4gYmUgb24gZnRwLCBmaWxlIGFuZCBvdGhlciBwcm90b2NvbHMKICAgICAgaWYgKHhoci5zdGF0dXMgPT09IDAgJiYgdGhpcy5pc0h0dHApIHsKICAgICAgICBpZiAocGVuZGluZ1JlcXVlc3Qub25FcnJvcikgewogICAgICAgICAgcGVuZGluZ1JlcXVlc3Qub25FcnJvcih4aHIuc3RhdHVzKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIHZhciB4aHJTdGF0dXMgPSB4aHIuc3RhdHVzIHx8IE9LX1JFU1BPTlNFOwoKICAgICAgLy8gRnJvbSBodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzE0Lmh0bWwjc2VjMTQuMzUuMjoKICAgICAgLy8gIkEgc2VydmVyIE1BWSBpZ25vcmUgdGhlIFJhbmdlIGhlYWRlciIuIFRoaXMgbWVhbnMgaXQncyBwb3NzaWJsZSB0bwogICAgICAvLyBnZXQgYSAyMDAgcmF0aGVyIHRoYW4gYSAyMDYgcmVzcG9uc2UgZnJvbSBhIHJhbmdlIHJlcXVlc3QuCiAgICAgIHZhciBva19yZXNwb25zZV9vbl9yYW5nZV9yZXF1ZXN0ID0KICAgICAgICAgIHhoclN0YXR1cyA9PT0gT0tfUkVTUE9OU0UgJiYKICAgICAgICAgIHBlbmRpbmdSZXF1ZXN0LmV4cGVjdGVkU3RhdHVzID09PSBQQVJUSUFMX0NPTlRFTlRfUkVTUE9OU0U7CgogICAgICBpZiAoIW9rX3Jlc3BvbnNlX29uX3JhbmdlX3JlcXVlc3QgJiYKICAgICAgICAgIHhoclN0YXR1cyAhPT0gcGVuZGluZ1JlcXVlc3QuZXhwZWN0ZWRTdGF0dXMpIHsKICAgICAgICBpZiAocGVuZGluZ1JlcXVlc3Qub25FcnJvcikgewogICAgICAgICAgcGVuZGluZ1JlcXVlc3Qub25FcnJvcih4aHIuc3RhdHVzKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICB0aGlzLmxvYWRlZFJlcXVlc3RzW3hocklkXSA9IHRydWU7CgogICAgICB2YXIgY2h1bmsgPSBnZXRBcnJheUJ1ZmZlcih4aHIpOwogICAgICBpZiAoeGhyU3RhdHVzID09PSBQQVJUSUFMX0NPTlRFTlRfUkVTUE9OU0UpIHsKICAgICAgICB2YXIgcmFuZ2VIZWFkZXIgPSB4aHIuZ2V0UmVzcG9uc2VIZWFkZXIoJ0NvbnRlbnQtUmFuZ2UnKTsKICAgICAgICB2YXIgbWF0Y2hlcyA9IC9ieXRlcyAoXGQrKS0oXGQrKVwvKFxkKykvLmV4ZWMocmFuZ2VIZWFkZXIpOwogICAgICAgIHZhciBiZWdpbiA9IHBhcnNlSW50KG1hdGNoZXNbMV0sIDEwKTsKICAgICAgICBwZW5kaW5nUmVxdWVzdC5vbkRvbmUoewogICAgICAgICAgYmVnaW46IGJlZ2luLAogICAgICAgICAgY2h1bms6IGNodW5rCiAgICAgICAgfSk7CiAgICAgIH0gZWxzZSBpZiAocGVuZGluZ1JlcXVlc3Qub25Qcm9ncmVzc2l2ZURhdGEpIHsKICAgICAgICBwZW5kaW5nUmVxdWVzdC5vbkRvbmUobnVsbCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcGVuZGluZ1JlcXVlc3Qub25Eb25lKHsKICAgICAgICAgIGJlZ2luOiAwLAogICAgICAgICAgY2h1bms6IGNodW5rCiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0sCgogICAgaGFzUGVuZGluZ1JlcXVlc3RzOiBmdW5jdGlvbiBOZXR3b3JrTWFuYWdlcl9oYXNQZW5kaW5nUmVxdWVzdHMoKSB7CiAgICAgIGZvciAodmFyIHhocklkIGluIHRoaXMucGVuZGluZ1JlcXVlc3RzKSB7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH0KICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSwKCiAgICBnZXRSZXF1ZXN0WGhyOiBmdW5jdGlvbiBOZXR3b3JrTWFuYWdlcl9nZXRYaHIoeGhySWQpIHsKICAgICAgcmV0dXJuIHRoaXMucGVuZGluZ1JlcXVlc3RzW3hocklkXS54aHI7CiAgICB9LAoKICAgIGlzU3RyZWFtaW5nUmVxdWVzdDogZnVuY3Rpb24gTmV0d29ya01hbmFnZXJfaXNTdHJlYW1pbmdSZXF1ZXN0KHhocklkKSB7CiAgICAgIHJldHVybiAhISh0aGlzLnBlbmRpbmdSZXF1ZXN0c1t4aHJJZF0ub25Qcm9ncmVzc2l2ZURhdGEpOwogICAgfSwKCiAgICBpc1BlbmRpbmdSZXF1ZXN0OiBmdW5jdGlvbiBOZXR3b3JrTWFuYWdlcl9pc1BlbmRpbmdSZXF1ZXN0KHhocklkKSB7CiAgICAgIHJldHVybiB4aHJJZCBpbiB0aGlzLnBlbmRpbmdSZXF1ZXN0czsKICAgIH0sCgogICAgaXNMb2FkZWRSZXF1ZXN0OiBmdW5jdGlvbiBOZXR3b3JrTWFuYWdlcl9pc0xvYWRlZFJlcXVlc3QoeGhySWQpIHsKICAgICAgcmV0dXJuIHhocklkIGluIHRoaXMubG9hZGVkUmVxdWVzdHM7CiAgICB9LAoKICAgIGFib3J0QWxsUmVxdWVzdHM6IGZ1bmN0aW9uIE5ldHdvcmtNYW5hZ2VyX2Fib3J0QWxsUmVxdWVzdHMoKSB7CiAgICAgIGZvciAodmFyIHhocklkIGluIHRoaXMucGVuZGluZ1JlcXVlc3RzKSB7CiAgICAgICAgdGhpcy5hYm9ydFJlcXVlc3QoeGhySWQgfCAwKTsKICAgICAgfQogICAgfSwKCiAgICBhYm9ydFJlcXVlc3Q6IGZ1bmN0aW9uIE5ldHdvcmtNYW5hZ2VyX2Fib3J0UmVxdWVzdCh4aHJJZCkgewogICAgICB2YXIgeGhyID0gdGhpcy5wZW5kaW5nUmVxdWVzdHNbeGhySWRdLnhocjsKICAgICAgZGVsZXRlIHRoaXMucGVuZGluZ1JlcXVlc3RzW3hocklkXTsKICAgICAgeGhyLmFib3J0KCk7CiAgICB9CiAgfTsKCiAgcmV0dXJuIE5ldHdvcmtNYW5hZ2VyOwp9KSgpOwoKCnZhciBDaHVua2VkU3RyZWFtID0gKGZ1bmN0aW9uIENodW5rZWRTdHJlYW1DbG9zdXJlKCkgewogIGZ1bmN0aW9uIENodW5rZWRTdHJlYW0obGVuZ3RoLCBjaHVua1NpemUsIG1hbmFnZXIpIHsKICAgIHRoaXMuYnl0ZXMgPSBuZXcgVWludDhBcnJheShsZW5ndGgpOwogICAgdGhpcy5zdGFydCA9IDA7CiAgICB0aGlzLnBvcyA9IDA7CiAgICB0aGlzLmVuZCA9IGxlbmd0aDsKICAgIHRoaXMuY2h1bmtTaXplID0gY2h1bmtTaXplOwogICAgdGhpcy5sb2FkZWRDaHVua3MgPSBbXTsKICAgIHRoaXMubnVtQ2h1bmtzTG9hZGVkID0gMDsKICAgIHRoaXMubnVtQ2h1bmtzID0gTWF0aC5jZWlsKGxlbmd0aCAvIGNodW5rU2l6ZSk7CiAgICB0aGlzLm1hbmFnZXIgPSBtYW5hZ2VyOwogICAgdGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGggPSAwOwogICAgdGhpcy5sYXN0U3VjY2Vzc2Z1bEVuc3VyZUJ5dGVDaHVuayA9IC0xOyAgLy8gYSBzaW5nbGUtZW50cnkgY2FjaGUKICB9CgogIC8vIHJlcXVpcmVkIG1ldGhvZHMgZm9yIGEgc3RyZWFtLiBpZiBhIHBhcnRpY3VsYXIgc3RyZWFtIGRvZXMgbm90CiAgLy8gaW1wbGVtZW50IHRoZXNlLCBhbiBlcnJvciBzaG91bGQgYmUgdGhyb3duCiAgQ2h1bmtlZFN0cmVhbS5wcm90b3R5cGUgPSB7CgogICAgZ2V0TWlzc2luZ0NodW5rczogZnVuY3Rpb24gQ2h1bmtlZFN0cmVhbV9nZXRNaXNzaW5nQ2h1bmtzKCkgewogICAgICB2YXIgY2h1bmtzID0gW107CiAgICAgIGZvciAodmFyIGNodW5rID0gMCwgbiA9IHRoaXMubnVtQ2h1bmtzOyBjaHVuayA8IG47ICsrY2h1bmspIHsKICAgICAgICBpZiAoIXRoaXMubG9hZGVkQ2h1bmtzW2NodW5rXSkgewogICAgICAgICAgY2h1bmtzLnB1c2goY2h1bmspOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gY2h1bmtzOwogICAgfSwKCiAgICBnZXRCYXNlU3RyZWFtczogZnVuY3Rpb24gQ2h1bmtlZFN0cmVhbV9nZXRCYXNlU3RyZWFtcygpIHsKICAgICAgcmV0dXJuIFt0aGlzXTsKICAgIH0sCgogICAgYWxsQ2h1bmtzTG9hZGVkOiBmdW5jdGlvbiBDaHVua2VkU3RyZWFtX2FsbENodW5rc0xvYWRlZCgpIHsKICAgICAgcmV0dXJuIHRoaXMubnVtQ2h1bmtzTG9hZGVkID09PSB0aGlzLm51bUNodW5rczsKICAgIH0sCgogICAgb25SZWNlaXZlRGF0YTogZnVuY3Rpb24gQ2h1bmtlZFN0cmVhbV9vblJlY2VpdmVEYXRhKGJlZ2luLCBjaHVuaykgewogICAgICB2YXIgZW5kID0gYmVnaW4gKyBjaHVuay5ieXRlTGVuZ3RoOwoKICAgICAgYXNzZXJ0KGJlZ2luICUgdGhpcy5jaHVua1NpemUgPT09IDAsICdCYWQgYmVnaW4gb2Zmc2V0OiAnICsgYmVnaW4pOwogICAgICAvLyBVc2luZyB0aGlzLmxlbmd0aCBpcyBpbmFjY3VyYXRlIGhlcmUgc2luY2UgdGhpcy5zdGFydCBjYW4gYmUgbW92ZWQKICAgICAgLy8gU2VlIENodW5rZWRTdHJlYW0ubW92ZVN0YXJ0KCkKICAgICAgdmFyIGxlbmd0aCA9IHRoaXMuYnl0ZXMubGVuZ3RoOwogICAgICBhc3NlcnQoZW5kICUgdGhpcy5jaHVua1NpemUgPT09IDAgfHwgZW5kID09PSBsZW5ndGgsCiAgICAgICAgICAgICAnQmFkIGVuZCBvZmZzZXQ6ICcgKyBlbmQpOwoKICAgICAgdGhpcy5ieXRlcy5zZXQobmV3IFVpbnQ4QXJyYXkoY2h1bmspLCBiZWdpbik7CiAgICAgIHZhciBjaHVua1NpemUgPSB0aGlzLmNodW5rU2l6ZTsKICAgICAgdmFyIGJlZ2luQ2h1bmsgPSBNYXRoLmZsb29yKGJlZ2luIC8gY2h1bmtTaXplKTsKICAgICAgdmFyIGVuZENodW5rID0gTWF0aC5mbG9vcigoZW5kIC0gMSkgLyBjaHVua1NpemUpICsgMTsKICAgICAgdmFyIGN1ckNodW5rOwoKICAgICAgZm9yIChjdXJDaHVuayA9IGJlZ2luQ2h1bms7IGN1ckNodW5rIDwgZW5kQ2h1bms7ICsrY3VyQ2h1bmspIHsKICAgICAgICBpZiAoIXRoaXMubG9hZGVkQ2h1bmtzW2N1ckNodW5rXSkgewogICAgICAgICAgdGhpcy5sb2FkZWRDaHVua3NbY3VyQ2h1bmtdID0gdHJ1ZTsKICAgICAgICAgICsrdGhpcy5udW1DaHVua3NMb2FkZWQ7CiAgICAgICAgfQogICAgICB9CiAgICB9LAoKICAgIG9uUmVjZWl2ZVByb2dyZXNzaXZlRGF0YToKICAgICAgICBmdW5jdGlvbiBDaHVua2VkU3RyZWFtX29uUmVjZWl2ZVByb2dyZXNzaXZlRGF0YShkYXRhKSB7CiAgICAgIHZhciBwb3NpdGlvbiA9IHRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoOwogICAgICB2YXIgYmVnaW5DaHVuayA9IE1hdGguZmxvb3IocG9zaXRpb24gLyB0aGlzLmNodW5rU2l6ZSk7CgogICAgICB0aGlzLmJ5dGVzLnNldChuZXcgVWludDhBcnJheShkYXRhKSwgcG9zaXRpb24pOwogICAgICBwb3NpdGlvbiArPSBkYXRhLmJ5dGVMZW5ndGg7CiAgICAgIHRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoID0gcG9zaXRpb247CiAgICAgIHZhciBlbmRDaHVuayA9IHBvc2l0aW9uID49IHRoaXMuZW5kID8gdGhpcy5udW1DaHVua3MgOgogICAgICAgICAgICAgICAgICAgICBNYXRoLmZsb29yKHBvc2l0aW9uIC8gdGhpcy5jaHVua1NpemUpOwogICAgICB2YXIgY3VyQ2h1bms7CiAgICAgIGZvciAoY3VyQ2h1bmsgPSBiZWdpbkNodW5rOyBjdXJDaHVuayA8IGVuZENodW5rOyArK2N1ckNodW5rKSB7CiAgICAgICAgaWYgKCF0aGlzLmxvYWRlZENodW5rc1tjdXJDaHVua10pIHsKICAgICAgICAgIHRoaXMubG9hZGVkQ2h1bmtzW2N1ckNodW5rXSA9IHRydWU7CiAgICAgICAgICArK3RoaXMubnVtQ2h1bmtzTG9hZGVkOwogICAgICAgIH0KICAgICAgfQogICAgfSwKCiAgICBlbnN1cmVCeXRlOiBmdW5jdGlvbiBDaHVua2VkU3RyZWFtX2Vuc3VyZUJ5dGUocG9zKSB7CiAgICAgIHZhciBjaHVuayA9IE1hdGguZmxvb3IocG9zIC8gdGhpcy5jaHVua1NpemUpOwogICAgICBpZiAoY2h1bmsgPT09IHRoaXMubGFzdFN1Y2Nlc3NmdWxFbnN1cmVCeXRlQ2h1bmspIHsKICAgICAgICByZXR1cm47CiAgICAgIH0KCiAgICAgIGlmICghdGhpcy5sb2FkZWRDaHVua3NbY2h1bmtdKSB7CiAgICAgICAgdGhyb3cgbmV3IE1pc3NpbmdEYXRhRXhjZXB0aW9uKHBvcywgcG9zICsgMSk7CiAgICAgIH0KICAgICAgdGhpcy5sYXN0U3VjY2Vzc2Z1bEVuc3VyZUJ5dGVDaHVuayA9IGNodW5rOwogICAgfSwKCiAgICBlbnN1cmVSYW5nZTogZnVuY3Rpb24gQ2h1bmtlZFN0cmVhbV9lbnN1cmVSYW5nZShiZWdpbiwgZW5kKSB7CiAgICAgIGlmIChiZWdpbiA+PSBlbmQpIHsKICAgICAgICByZXR1cm47CiAgICAgIH0KCiAgICAgIGlmIChlbmQgPD0gdGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgpIHsKICAgICAgICByZXR1cm47CiAgICAgIH0KCiAgICAgIHZhciBjaHVua1NpemUgPSB0aGlzLmNodW5rU2l6ZTsKICAgICAgdmFyIGJlZ2luQ2h1bmsgPSBNYXRoLmZsb29yKGJlZ2luIC8gY2h1bmtTaXplKTsKICAgICAgdmFyIGVuZENodW5rID0gTWF0aC5mbG9vcigoZW5kIC0gMSkgLyBjaHVua1NpemUpICsgMTsKICAgICAgZm9yICh2YXIgY2h1bmsgPSBiZWdpbkNodW5rOyBjaHVuayA8IGVuZENodW5rOyArK2NodW5rKSB7CiAgICAgICAgaWYgKCF0aGlzLmxvYWRlZENodW5rc1tjaHVua10pIHsKICAgICAgICAgIHRocm93IG5ldyBNaXNzaW5nRGF0YUV4Y2VwdGlvbihiZWdpbiwgZW5kKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0sCgogICAgbmV4dEVtcHR5Q2h1bms6IGZ1bmN0aW9uIENodW5rZWRTdHJlYW1fbmV4dEVtcHR5Q2h1bmsoYmVnaW5DaHVuaykgewogICAgICB2YXIgY2h1bmssIG47CiAgICAgIGZvciAoY2h1bmsgPSBiZWdpbkNodW5rLCBuID0gdGhpcy5udW1DaHVua3M7IGNodW5rIDwgbjsgKytjaHVuaykgewogICAgICAgIGlmICghdGhpcy5sb2FkZWRDaHVua3NbY2h1bmtdKSB7CiAgICAgICAgICByZXR1cm4gY2h1bms7CiAgICAgICAgfQogICAgICB9CiAgICAgIC8vIFdyYXAgYXJvdW5kIHRvIGJlZ2lubmluZwogICAgICBmb3IgKGNodW5rID0gMDsgY2h1bmsgPCBiZWdpbkNodW5rOyArK2NodW5rKSB7CiAgICAgICAgaWYgKCF0aGlzLmxvYWRlZENodW5rc1tjaHVua10pIHsKICAgICAgICAgIHJldHVybiBjaHVuazsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIG51bGw7CiAgICB9LAoKICAgIGhhc0NodW5rOiBmdW5jdGlvbiBDaHVua2VkU3RyZWFtX2hhc0NodW5rKGNodW5rKSB7CiAgICAgIHJldHVybiAhIXRoaXMubG9hZGVkQ2h1bmtzW2NodW5rXTsKICAgIH0sCgogICAgZ2V0IGxlbmd0aCgpIHsKICAgICAgcmV0dXJuIHRoaXMuZW5kIC0gdGhpcy5zdGFydDsKICAgIH0sCgogICAgZ2V0IGlzRW1wdHkoKSB7CiAgICAgIHJldHVybiB0aGlzLmxlbmd0aCA9PT0gMDsKICAgIH0sCgogICAgZ2V0Qnl0ZTogZnVuY3Rpb24gQ2h1bmtlZFN0cmVhbV9nZXRCeXRlKCkgewogICAgICB2YXIgcG9zID0gdGhpcy5wb3M7CiAgICAgIGlmIChwb3MgPj0gdGhpcy5lbmQpIHsKICAgICAgICByZXR1cm4gLTE7CiAgICAgIH0KICAgICAgdGhpcy5lbnN1cmVCeXRlKHBvcyk7CiAgICAgIHJldHVybiB0aGlzLmJ5dGVzW3RoaXMucG9zKytdOwogICAgfSwKCiAgICBnZXRVaW50MTY6IGZ1bmN0aW9uIENodW5rZWRTdHJlYW1fZ2V0VWludDE2KCkgewogICAgICB2YXIgYjAgPSB0aGlzLmdldEJ5dGUoKTsKICAgICAgdmFyIGIxID0gdGhpcy5nZXRCeXRlKCk7CiAgICAgIGlmIChiMCA9PT0gLTEgfHwgYjEgPT09IC0xKSB7CiAgICAgICAgcmV0dXJuIC0xOwogICAgICB9CiAgICAgIHJldHVybiAoYjAgPDwgOCkgKyBiMTsKICAgIH0sCgogICAgZ2V0SW50MzI6IGZ1bmN0aW9uIENodW5rZWRTdHJlYW1fZ2V0SW50MzIoKSB7CiAgICAgIHZhciBiMCA9IHRoaXMuZ2V0Qnl0ZSgpOwogICAgICB2YXIgYjEgPSB0aGlzLmdldEJ5dGUoKTsKICAgICAgdmFyIGIyID0gdGhpcy5nZXRCeXRlKCk7CiAgICAgIHZhciBiMyA9IHRoaXMuZ2V0Qnl0ZSgpOwogICAgICByZXR1cm4gKGIwIDw8IDI0KSArIChiMSA8PCAxNikgKyAoYjIgPDwgOCkgKyBiMzsKICAgIH0sCgogICAgLy8gcmV0dXJucyBzdWJhcnJheSBvZiBvcmlnaW5hbCBidWZmZXIKICAgIC8vIHNob3VsZCBvbmx5IGJlIHJlYWQKICAgIGdldEJ5dGVzOiBmdW5jdGlvbiBDaHVua2VkU3RyZWFtX2dldEJ5dGVzKGxlbmd0aCkgewogICAgICB2YXIgYnl0ZXMgPSB0aGlzLmJ5dGVzOwogICAgICB2YXIgcG9zID0gdGhpcy5wb3M7CiAgICAgIHZhciBzdHJFbmQgPSB0aGlzLmVuZDsKCiAgICAgIGlmICghbGVuZ3RoKSB7CiAgICAgICAgdGhpcy5lbnN1cmVSYW5nZShwb3MsIHN0ckVuZCk7CiAgICAgICAgcmV0dXJuIGJ5dGVzLnN1YmFycmF5KHBvcywgc3RyRW5kKTsKICAgICAgfQoKICAgICAgdmFyIGVuZCA9IHBvcyArIGxlbmd0aDsKICAgICAgaWYgKGVuZCA+IHN0ckVuZCkgewogICAgICAgIGVuZCA9IHN0ckVuZDsKICAgICAgfQogICAgICB0aGlzLmVuc3VyZVJhbmdlKHBvcywgZW5kKTsKCiAgICAgIHRoaXMucG9zID0gZW5kOwogICAgICByZXR1cm4gYnl0ZXMuc3ViYXJyYXkocG9zLCBlbmQpOwogICAgfSwKCiAgICBwZWVrQnl0ZTogZnVuY3Rpb24gQ2h1bmtlZFN0cmVhbV9wZWVrQnl0ZSgpIHsKICAgICAgdmFyIHBlZWtlZEJ5dGUgPSB0aGlzLmdldEJ5dGUoKTsKICAgICAgdGhpcy5wb3MtLTsKICAgICAgcmV0dXJuIHBlZWtlZEJ5dGU7CiAgICB9LAoKICAgIHBlZWtCeXRlczogZnVuY3Rpb24gQ2h1bmtlZFN0cmVhbV9wZWVrQnl0ZXMobGVuZ3RoKSB7CiAgICAgIHZhciBieXRlcyA9IHRoaXMuZ2V0Qnl0ZXMobGVuZ3RoKTsKICAgICAgdGhpcy5wb3MgLT0gYnl0ZXMubGVuZ3RoOwogICAgICByZXR1cm4gYnl0ZXM7CiAgICB9LAoKICAgIGdldEJ5dGVSYW5nZTogZnVuY3Rpb24gQ2h1bmtlZFN0cmVhbV9nZXRCeXRlcyhiZWdpbiwgZW5kKSB7CiAgICAgIHRoaXMuZW5zdXJlUmFuZ2UoYmVnaW4sIGVuZCk7CiAgICAgIHJldHVybiB0aGlzLmJ5dGVzLnN1YmFycmF5KGJlZ2luLCBlbmQpOwogICAgfSwKCiAgICBza2lwOiBmdW5jdGlvbiBDaHVua2VkU3RyZWFtX3NraXAobikgewogICAgICBpZiAoIW4pIHsKICAgICAgICBuID0gMTsKICAgICAgfQogICAgICB0aGlzLnBvcyArPSBuOwogICAgfSwKCiAgICByZXNldDogZnVuY3Rpb24gQ2h1bmtlZFN0cmVhbV9yZXNldCgpIHsKICAgICAgdGhpcy5wb3MgPSB0aGlzLnN0YXJ0OwogICAgfSwKCiAgICBtb3ZlU3RhcnQ6IGZ1bmN0aW9uIENodW5rZWRTdHJlYW1fbW92ZVN0YXJ0KCkgewogICAgICB0aGlzLnN0YXJ0ID0gdGhpcy5wb3M7CiAgICB9LAoKICAgIG1ha2VTdWJTdHJlYW06IGZ1bmN0aW9uIENodW5rZWRTdHJlYW1fbWFrZVN1YlN0cmVhbShzdGFydCwgbGVuZ3RoLCBkaWN0KSB7CiAgICAgIHRoaXMuZW5zdXJlUmFuZ2Uoc3RhcnQsIHN0YXJ0ICsgbGVuZ3RoKTsKCiAgICAgIGZ1bmN0aW9uIENodW5rZWRTdHJlYW1TdWJzdHJlYW0oKSB7fQogICAgICBDaHVua2VkU3RyZWFtU3Vic3RyZWFtLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodGhpcyk7CiAgICAgIENodW5rZWRTdHJlYW1TdWJzdHJlYW0ucHJvdG90eXBlLmdldE1pc3NpbmdDaHVua3MgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgY2h1bmtTaXplID0gdGhpcy5jaHVua1NpemU7CiAgICAgICAgdmFyIGJlZ2luQ2h1bmsgPSBNYXRoLmZsb29yKHRoaXMuc3RhcnQgLyBjaHVua1NpemUpOwogICAgICAgIHZhciBlbmRDaHVuayA9IE1hdGguZmxvb3IoKHRoaXMuZW5kIC0gMSkgLyBjaHVua1NpemUpICsgMTsKICAgICAgICB2YXIgbWlzc2luZ0NodW5rcyA9IFtdOwogICAgICAgIGZvciAodmFyIGNodW5rID0gYmVnaW5DaHVuazsgY2h1bmsgPCBlbmRDaHVuazsgKytjaHVuaykgewogICAgICAgICAgaWYgKCF0aGlzLmxvYWRlZENodW5rc1tjaHVua10pIHsKICAgICAgICAgICAgbWlzc2luZ0NodW5rcy5wdXNoKGNodW5rKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIG1pc3NpbmdDaHVua3M7CiAgICAgIH07CiAgICAgIHZhciBzdWJTdHJlYW0gPSBuZXcgQ2h1bmtlZFN0cmVhbVN1YnN0cmVhbSgpOwogICAgICBzdWJTdHJlYW0ucG9zID0gc3ViU3RyZWFtLnN0YXJ0ID0gc3RhcnQ7CiAgICAgIHN1YlN0cmVhbS5lbmQgPSBzdGFydCArIGxlbmd0aCB8fCB0aGlzLmVuZDsKICAgICAgc3ViU3RyZWFtLmRpY3QgPSBkaWN0OwogICAgICByZXR1cm4gc3ViU3RyZWFtOwogICAgfSwKCiAgICBpc1N0cmVhbTogdHJ1ZQogIH07CgogIHJldHVybiBDaHVua2VkU3RyZWFtOwp9KSgpOwoKdmFyIENodW5rZWRTdHJlYW1NYW5hZ2VyID0gKGZ1bmN0aW9uIENodW5rZWRTdHJlYW1NYW5hZ2VyQ2xvc3VyZSgpIHsKCiAgZnVuY3Rpb24gQ2h1bmtlZFN0cmVhbU1hbmFnZXIobGVuZ3RoLCBjaHVua1NpemUsIHVybCwgYXJncykgewogICAgdGhpcy5zdHJlYW0gPSBuZXcgQ2h1bmtlZFN0cmVhbShsZW5ndGgsIGNodW5rU2l6ZSwgdGhpcyk7CiAgICB0aGlzLmxlbmd0aCA9IGxlbmd0aDsKICAgIHRoaXMuY2h1bmtTaXplID0gY2h1bmtTaXplOwogICAgdGhpcy51cmwgPSB1cmw7CiAgICB0aGlzLmRpc2FibGVBdXRvRmV0Y2ggPSBhcmdzLmRpc2FibGVBdXRvRmV0Y2g7CiAgICB2YXIgbXNnSGFuZGxlciA9IHRoaXMubXNnSGFuZGxlciA9IGFyZ3MubXNnSGFuZGxlcjsKCiAgICBpZiAoYXJncy5jaHVua2VkVmlld2VyTG9hZGluZykgewogICAgICBtc2dIYW5kbGVyLm9uKCdPbkRhdGFSYW5nZScsIHRoaXMub25SZWNlaXZlRGF0YS5iaW5kKHRoaXMpKTsKICAgICAgbXNnSGFuZGxlci5vbignT25EYXRhUHJvZ3Jlc3MnLCB0aGlzLm9uUHJvZ3Jlc3MuYmluZCh0aGlzKSk7CiAgICAgIHRoaXMuc2VuZFJlcXVlc3QgPSBmdW5jdGlvbiBDaHVua2VkU3RyZWFtTWFuYWdlcl9zZW5kUmVxdWVzdChiZWdpbiwgZW5kKSB7CiAgICAgICAgbXNnSGFuZGxlci5zZW5kKCdSZXF1ZXN0RGF0YVJhbmdlJywgeyBiZWdpbjogYmVnaW4sIGVuZDogZW5kIH0pOwogICAgICB9OwogICAgfSBlbHNlIHsKCiAgICAgIHZhciBnZXRYaHIgPSBmdW5jdGlvbiBnZXRYaHIoKSB7Ci8vI2lmIEIyRwovLyAgICAgIHJldHVybiBuZXcgWE1MSHR0cFJlcXVlc3QoeyBtb3pTeXN0ZW06IHRydWUgfSk7Ci8vI2Vsc2UKICAgICAgICByZXR1cm4gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Ci8vI2VuZGlmCiAgICAgIH07CiAgICAgIHRoaXMubmV0d29ya01hbmFnZXIgPSBuZXcgTmV0d29ya01hbmFnZXIodGhpcy51cmwsIHsKICAgICAgICBnZXRYaHI6IGdldFhociwKICAgICAgICBodHRwSGVhZGVyczogYXJncy5odHRwSGVhZGVycywKICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IGFyZ3Mud2l0aENyZWRlbnRpYWxzCiAgICAgIH0pOwogICAgICB0aGlzLnNlbmRSZXF1ZXN0ID0gZnVuY3Rpb24gQ2h1bmtlZFN0cmVhbU1hbmFnZXJfc2VuZFJlcXVlc3QoYmVnaW4sIGVuZCkgewogICAgICAgIHRoaXMubmV0d29ya01hbmFnZXIucmVxdWVzdFJhbmdlKGJlZ2luLCBlbmQsIHsKICAgICAgICAgIG9uRG9uZTogdGhpcy5vblJlY2VpdmVEYXRhLmJpbmQodGhpcyksCiAgICAgICAgICBvblByb2dyZXNzOiB0aGlzLm9uUHJvZ3Jlc3MuYmluZCh0aGlzKQogICAgICAgIH0pOwogICAgICB9OwogICAgfQoKICAgIHRoaXMuY3VyclJlcXVlc3RJZCA9IDA7CgogICAgdGhpcy5jaHVua3NOZWVkZWRCeVJlcXVlc3QgPSB7fTsKICAgIHRoaXMucmVxdWVzdHNCeUNodW5rID0ge307CiAgICB0aGlzLmNhbGxiYWNrc0J5UmVxdWVzdCA9IHt9OwogICAgdGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGggPSAwOwoKICAgIHRoaXMuX2xvYWRlZFN0cmVhbUNhcGFiaWxpdHkgPSBjcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSgpOwoKICAgIGlmIChhcmdzLmluaXRpYWxEYXRhKSB7CiAgICAgIHRoaXMub25SZWNlaXZlRGF0YSh7Y2h1bms6IGFyZ3MuaW5pdGlhbERhdGF9KTsKICAgIH0KICB9CgogIENodW5rZWRTdHJlYW1NYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgIG9uTG9hZGVkU3RyZWFtOiBmdW5jdGlvbiBDaHVua2VkU3RyZWFtTWFuYWdlcl9nZXRMb2FkZWRTdHJlYW0oKSB7CiAgICAgIHJldHVybiB0aGlzLl9sb2FkZWRTdHJlYW1DYXBhYmlsaXR5LnByb21pc2U7CiAgICB9LAoKICAgIC8vIEdldCBhbGwgdGhlIGNodW5rcyB0aGF0IGFyZSBub3QgeWV0IGxvYWRlZCBhbmQgZ3JvdXBzIHRoZW0gaW50bwogICAgLy8gY29udGlndW91cyByYW5nZXMgdG8gbG9hZCBpbiBhcyBmZXcgcmVxdWVzdHMgYXMgcG9zc2libGUKICAgIHJlcXVlc3RBbGxDaHVua3M6IGZ1bmN0aW9uIENodW5rZWRTdHJlYW1NYW5hZ2VyX3JlcXVlc3RBbGxDaHVua3MoKSB7CiAgICAgIHZhciBtaXNzaW5nQ2h1bmtzID0gdGhpcy5zdHJlYW0uZ2V0TWlzc2luZ0NodW5rcygpOwogICAgICB0aGlzLnJlcXVlc3RDaHVua3MobWlzc2luZ0NodW5rcyk7CiAgICAgIHJldHVybiB0aGlzLl9sb2FkZWRTdHJlYW1DYXBhYmlsaXR5LnByb21pc2U7CiAgICB9LAoKICAgIHJlcXVlc3RDaHVua3M6IGZ1bmN0aW9uIENodW5rZWRTdHJlYW1NYW5hZ2VyX3JlcXVlc3RDaHVua3MoY2h1bmtzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaykgewogICAgICB2YXIgcmVxdWVzdElkID0gdGhpcy5jdXJyUmVxdWVzdElkKys7CgogICAgICB2YXIgY2h1bmtzTmVlZGVkOwogICAgICB2YXIgaSwgaWk7CiAgICAgIHRoaXMuY2h1bmtzTmVlZGVkQnlSZXF1ZXN0W3JlcXVlc3RJZF0gPSBjaHVua3NOZWVkZWQgPSB7fTsKICAgICAgZm9yIChpID0gMCwgaWkgPSBjaHVua3MubGVuZ3RoOyBpIDwgaWk7IGkrKykgewogICAgICAgIGlmICghdGhpcy5zdHJlYW0uaGFzQ2h1bmsoY2h1bmtzW2ldKSkgewogICAgICAgICAgY2h1bmtzTmVlZGVkW2NodW5rc1tpXV0gPSB0cnVlOwogICAgICAgIH0KICAgICAgfQoKICAgICAgaWYgKGlzRW1wdHlPYmooY2h1bmtzTmVlZGVkKSkgewogICAgICAgIGlmIChjYWxsYmFjaykgewogICAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICB0aGlzLmNhbGxiYWNrc0J5UmVxdWVzdFtyZXF1ZXN0SWRdID0gY2FsbGJhY2s7CgogICAgICB2YXIgY2h1bmtzVG9SZXF1ZXN0ID0gW107CiAgICAgIGZvciAodmFyIGNodW5rIGluIGNodW5rc05lZWRlZCkgewogICAgICAgIGNodW5rID0gY2h1bmsgfCAwOwogICAgICAgIGlmICghKGNodW5rIGluIHRoaXMucmVxdWVzdHNCeUNodW5rKSkgewogICAgICAgICAgdGhpcy5yZXF1ZXN0c0J5Q2h1bmtbY2h1bmtdID0gW107CiAgICAgICAgICBjaHVua3NUb1JlcXVlc3QucHVzaChjaHVuayk7CiAgICAgICAgfQogICAgICAgIHRoaXMucmVxdWVzdHNCeUNodW5rW2NodW5rXS5wdXNoKHJlcXVlc3RJZCk7CiAgICAgIH0KCiAgICAgIGlmICghY2h1bmtzVG9SZXF1ZXN0Lmxlbmd0aCkgewogICAgICAgIHJldHVybjsKICAgICAgfQoKICAgICAgdmFyIGdyb3VwZWRDaHVua3NUb1JlcXVlc3QgPSB0aGlzLmdyb3VwQ2h1bmtzKGNodW5rc1RvUmVxdWVzdCk7CgogICAgICBmb3IgKGkgPSAwOyBpIDwgZ3JvdXBlZENodW5rc1RvUmVxdWVzdC5sZW5ndGg7ICsraSkgewogICAgICAgIHZhciBncm91cGVkQ2h1bmsgPSBncm91cGVkQ2h1bmtzVG9SZXF1ZXN0W2ldOwogICAgICAgIHZhciBiZWdpbiA9IGdyb3VwZWRDaHVuay5iZWdpbkNodW5rICogdGhpcy5jaHVua1NpemU7CiAgICAgICAgdmFyIGVuZCA9IE1hdGgubWluKGdyb3VwZWRDaHVuay5lbmRDaHVuayAqIHRoaXMuY2h1bmtTaXplLCB0aGlzLmxlbmd0aCk7CiAgICAgICAgdGhpcy5zZW5kUmVxdWVzdChiZWdpbiwgZW5kKTsKICAgICAgfQogICAgfSwKCiAgICBnZXRTdHJlYW06IGZ1bmN0aW9uIENodW5rZWRTdHJlYW1NYW5hZ2VyX2dldFN0cmVhbSgpIHsKICAgICAgcmV0dXJuIHRoaXMuc3RyZWFtOwogICAgfSwKCiAgICAvLyBMb2FkcyBhbnkgY2h1bmtzIGluIHRoZSByZXF1ZXN0ZWQgcmFuZ2UgdGhhdCBhcmUgbm90IHlldCBsb2FkZWQKICAgIHJlcXVlc3RSYW5nZTogZnVuY3Rpb24gQ2h1bmtlZFN0cmVhbU1hbmFnZXJfcmVxdWVzdFJhbmdlKAogICAgICAgICAgICAgICAgICAgICAgYmVnaW4sIGVuZCwgY2FsbGJhY2spIHsKCiAgICAgIGVuZCA9IE1hdGgubWluKGVuZCwgdGhpcy5sZW5ndGgpOwoKICAgICAgdmFyIGJlZ2luQ2h1bmsgPSB0aGlzLmdldEJlZ2luQ2h1bmsoYmVnaW4pOwogICAgICB2YXIgZW5kQ2h1bmsgPSB0aGlzLmdldEVuZENodW5rKGVuZCk7CgogICAgICB2YXIgY2h1bmtzID0gW107CiAgICAgIGZvciAodmFyIGNodW5rID0gYmVnaW5DaHVuazsgY2h1bmsgPCBlbmRDaHVuazsgKytjaHVuaykgewogICAgICAgIGNodW5rcy5wdXNoKGNodW5rKTsKICAgICAgfQoKICAgICAgdGhpcy5yZXF1ZXN0Q2h1bmtzKGNodW5rcywgY2FsbGJhY2spOwogICAgfSwKCiAgICByZXF1ZXN0UmFuZ2VzOiBmdW5jdGlvbiBDaHVua2VkU3RyZWFtTWFuYWdlcl9yZXF1ZXN0UmFuZ2VzKHJhbmdlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2spIHsKICAgICAgcmFuZ2VzID0gcmFuZ2VzIHx8IFtdOwogICAgICB2YXIgY2h1bmtzVG9SZXF1ZXN0ID0gW107CgogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJhbmdlcy5sZW5ndGg7IGkrKykgewogICAgICAgIHZhciBiZWdpbkNodW5rID0gdGhpcy5nZXRCZWdpbkNodW5rKHJhbmdlc1tpXS5iZWdpbik7CiAgICAgICAgdmFyIGVuZENodW5rID0gdGhpcy5nZXRFbmRDaHVuayhyYW5nZXNbaV0uZW5kKTsKICAgICAgICBmb3IgKHZhciBjaHVuayA9IGJlZ2luQ2h1bms7IGNodW5rIDwgZW5kQ2h1bms7ICsrY2h1bmspIHsKICAgICAgICAgIGlmIChjaHVua3NUb1JlcXVlc3QuaW5kZXhPZihjaHVuaykgPCAwKSB7CiAgICAgICAgICAgIGNodW5rc1RvUmVxdWVzdC5wdXNoKGNodW5rKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KCiAgICAgIGNodW5rc1RvUmVxdWVzdC5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIGEgLSBiOyB9KTsKICAgICAgdGhpcy5yZXF1ZXN0Q2h1bmtzKGNodW5rc1RvUmVxdWVzdCwgY2FsbGJhY2spOwogICAgfSwKCiAgICAvLyBHcm91cHMgYSBzb3J0ZWQgYXJyYXkgb2YgY2h1bmtzIGludG8gYXMgZmV3IGNvbnRpbmd1b3VzIGxhcmdlcgogICAgLy8gY2h1bmtzIGFzIHBvc3NpYmxlCiAgICBncm91cENodW5rczogZnVuY3Rpb24gQ2h1bmtlZFN0cmVhbU1hbmFnZXJfZ3JvdXBDaHVua3MoY2h1bmtzKSB7CiAgICAgIHZhciBncm91cGVkQ2h1bmtzID0gW107CiAgICAgIHZhciBiZWdpbkNodW5rID0gLTE7CiAgICAgIHZhciBwcmV2Q2h1bmsgPSAtMTsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaHVua3MubGVuZ3RoOyArK2kpIHsKICAgICAgICB2YXIgY2h1bmsgPSBjaHVua3NbaV07CgogICAgICAgIGlmIChiZWdpbkNodW5rIDwgMCkgewogICAgICAgICAgYmVnaW5DaHVuayA9IGNodW5rOwogICAgICAgIH0KCiAgICAgICAgaWYgKHByZXZDaHVuayA+PSAwICYmIHByZXZDaHVuayArIDEgIT09IGNodW5rKSB7CiAgICAgICAgICBncm91cGVkQ2h1bmtzLnB1c2goeyBiZWdpbkNodW5rOiBiZWdpbkNodW5rLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kQ2h1bms6IHByZXZDaHVuayArIDEgfSk7CiAgICAgICAgICBiZWdpbkNodW5rID0gY2h1bms7CiAgICAgICAgfQogICAgICAgIGlmIChpICsgMSA9PT0gY2h1bmtzLmxlbmd0aCkgewogICAgICAgICAgZ3JvdXBlZENodW5rcy5wdXNoKHsgYmVnaW5DaHVuazogYmVnaW5DaHVuaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZENodW5rOiBjaHVuayArIDEgfSk7CiAgICAgICAgfQoKICAgICAgICBwcmV2Q2h1bmsgPSBjaHVuazsKICAgICAgfQogICAgICByZXR1cm4gZ3JvdXBlZENodW5rczsKICAgIH0sCgogICAgb25Qcm9ncmVzczogZnVuY3Rpb24gQ2h1bmtlZFN0cmVhbU1hbmFnZXJfb25Qcm9ncmVzcyhhcmdzKSB7CiAgICAgIHZhciBieXRlc0xvYWRlZCA9ICh0aGlzLnN0cmVhbS5udW1DaHVua3NMb2FkZWQgKiB0aGlzLmNodW5rU2l6ZSArCiAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLmxvYWRlZCk7CiAgICAgIHRoaXMubXNnSGFuZGxlci5zZW5kKCdEb2NQcm9ncmVzcycsIHsKICAgICAgICBsb2FkZWQ6IGJ5dGVzTG9hZGVkLAogICAgICAgIHRvdGFsOiB0aGlzLmxlbmd0aAogICAgICB9KTsKICAgIH0sCgogICAgb25SZWNlaXZlRGF0YTogZnVuY3Rpb24gQ2h1bmtlZFN0cmVhbU1hbmFnZXJfb25SZWNlaXZlRGF0YShhcmdzKSB7CiAgICAgIHZhciBjaHVuayA9IGFyZ3MuY2h1bms7CiAgICAgIHZhciBpc1Byb2dyZXNzaXZlID0gYXJncy5iZWdpbiA9PT0gdW5kZWZpbmVkOwogICAgICB2YXIgYmVnaW4gPSBpc1Byb2dyZXNzaXZlID8gdGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGggOiBhcmdzLmJlZ2luOwogICAgICB2YXIgZW5kID0gYmVnaW4gKyBjaHVuay5ieXRlTGVuZ3RoOwoKICAgICAgdmFyIGJlZ2luQ2h1bmsgPSBNYXRoLmZsb29yKGJlZ2luIC8gdGhpcy5jaHVua1NpemUpOwogICAgICB2YXIgZW5kQ2h1bmsgPSBlbmQgPCB0aGlzLmxlbmd0aCA/IE1hdGguZmxvb3IoZW5kIC8gdGhpcy5jaHVua1NpemUpIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRoLmNlaWwoZW5kIC8gdGhpcy5jaHVua1NpemUpOwoKICAgICAgaWYgKGlzUHJvZ3Jlc3NpdmUpIHsKICAgICAgICB0aGlzLnN0cmVhbS5vblJlY2VpdmVQcm9ncmVzc2l2ZURhdGEoY2h1bmspOwogICAgICAgIHRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoID0gZW5kOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMuc3RyZWFtLm9uUmVjZWl2ZURhdGEoYmVnaW4sIGNodW5rKTsKICAgICAgfQoKICAgICAgaWYgKHRoaXMuc3RyZWFtLmFsbENodW5rc0xvYWRlZCgpKSB7CiAgICAgICAgdGhpcy5fbG9hZGVkU3RyZWFtQ2FwYWJpbGl0eS5yZXNvbHZlKHRoaXMuc3RyZWFtKTsKICAgICAgfQoKICAgICAgdmFyIGxvYWRlZFJlcXVlc3RzID0gW107CiAgICAgIHZhciBpLCByZXF1ZXN0SWQ7CiAgICAgIGZvciAoY2h1bmsgPSBiZWdpbkNodW5rOyBjaHVuayA8IGVuZENodW5rOyArK2NodW5rKSB7CiAgICAgICAgLy8gVGhlIHNlcnZlciBtaWdodCByZXR1cm4gbW9yZSBjaHVua3MgdGhhbiByZXF1ZXN0ZWQKICAgICAgICB2YXIgcmVxdWVzdElkcyA9IHRoaXMucmVxdWVzdHNCeUNodW5rW2NodW5rXSB8fCBbXTsKICAgICAgICBkZWxldGUgdGhpcy5yZXF1ZXN0c0J5Q2h1bmtbY2h1bmtdOwoKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcmVxdWVzdElkcy5sZW5ndGg7ICsraSkgewogICAgICAgICAgcmVxdWVzdElkID0gcmVxdWVzdElkc1tpXTsKICAgICAgICAgIHZhciBjaHVua3NOZWVkZWQgPSB0aGlzLmNodW5rc05lZWRlZEJ5UmVxdWVzdFtyZXF1ZXN0SWRdOwogICAgICAgICAgaWYgKGNodW5rIGluIGNodW5rc05lZWRlZCkgewogICAgICAgICAgICBkZWxldGUgY2h1bmtzTmVlZGVkW2NodW5rXTsKICAgICAgICAgIH0KCiAgICAgICAgICBpZiAoIWlzRW1wdHlPYmooY2h1bmtzTmVlZGVkKSkgewogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIH0KCiAgICAgICAgICBsb2FkZWRSZXF1ZXN0cy5wdXNoKHJlcXVlc3RJZCk7CiAgICAgICAgfQogICAgICB9CgogICAgICAvLyBJZiB0aGVyZSBhcmUgbm8gcGVuZGluZyByZXF1ZXN0cywgYXV0b21hdGljYWxseSBmZXRjaCB0aGUgbmV4dAogICAgICAvLyB1bmZldGNoZWQgY2h1bmsgb2YgdGhlIFBERgogICAgICBpZiAoIXRoaXMuZGlzYWJsZUF1dG9GZXRjaCAmJiBpc0VtcHR5T2JqKHRoaXMucmVxdWVzdHNCeUNodW5rKSkgewogICAgICAgIHZhciBuZXh0RW1wdHlDaHVuazsKICAgICAgICBpZiAodGhpcy5zdHJlYW0ubnVtQ2h1bmtzTG9hZGVkID09PSAxKSB7CiAgICAgICAgICAvLyBUaGlzIGlzIGEgc3BlY2lhbCBvcHRpbWl6YXRpb24gc28gdGhhdCBhZnRlciBmZXRjaGluZyB0aGUgZmlyc3QKICAgICAgICAgIC8vIGNodW5rLCByYXRoZXIgdGhhbiBmZXRjaGluZyB0aGUgc2Vjb25kIGNodW5rLCB3ZSBmZXRjaCB0aGUgbGFzdAogICAgICAgICAgLy8gY2h1bmsuCiAgICAgICAgICB2YXIgbGFzdENodW5rID0gdGhpcy5zdHJlYW0ubnVtQ2h1bmtzIC0gMTsKICAgICAgICAgIGlmICghdGhpcy5zdHJlYW0uaGFzQ2h1bmsobGFzdENodW5rKSkgewogICAgICAgICAgICBuZXh0RW1wdHlDaHVuayA9IGxhc3RDaHVuazsKICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgbmV4dEVtcHR5Q2h1bmsgPSB0aGlzLnN0cmVhbS5uZXh0RW1wdHlDaHVuayhlbmRDaHVuayk7CiAgICAgICAgfQogICAgICAgIGlmIChpc0ludChuZXh0RW1wdHlDaHVuaykpIHsKICAgICAgICAgIHRoaXMucmVxdWVzdENodW5rcyhbbmV4dEVtcHR5Q2h1bmtdKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGZvciAoaSA9IDA7IGkgPCBsb2FkZWRSZXF1ZXN0cy5sZW5ndGg7ICsraSkgewogICAgICAgIHJlcXVlc3RJZCA9IGxvYWRlZFJlcXVlc3RzW2ldOwogICAgICAgIHZhciBjYWxsYmFjayA9IHRoaXMuY2FsbGJhY2tzQnlSZXF1ZXN0W3JlcXVlc3RJZF07CiAgICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tzQnlSZXF1ZXN0W3JlcXVlc3RJZF07CiAgICAgICAgaWYgKGNhbGxiYWNrKSB7CiAgICAgICAgICBjYWxsYmFjaygpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgdGhpcy5tc2dIYW5kbGVyLnNlbmQoJ0RvY1Byb2dyZXNzJywgewogICAgICAgIGxvYWRlZDogdGhpcy5zdHJlYW0ubnVtQ2h1bmtzTG9hZGVkICogdGhpcy5jaHVua1NpemUsCiAgICAgICAgdG90YWw6IHRoaXMubGVuZ3RoCiAgICAgIH0pOwogICAgfSwKCiAgICBvbkVycm9yOiBmdW5jdGlvbiBDaHVua2VkU3RyZWFtTWFuYWdlcl9vbkVycm9yKGVycikgewogICAgICB0aGlzLl9sb2FkZWRTdHJlYW1DYXBhYmlsaXR5LnJlamVjdChlcnIpOwogICAgfSwKCiAgICBnZXRCZWdpbkNodW5rOiBmdW5jdGlvbiBDaHVua2VkU3RyZWFtTWFuYWdlcl9nZXRCZWdpbkNodW5rKGJlZ2luKSB7CiAgICAgIHZhciBjaHVuayA9IE1hdGguZmxvb3IoYmVnaW4gLyB0aGlzLmNodW5rU2l6ZSk7CiAgICAgIHJldHVybiBjaHVuazsKICAgIH0sCgogICAgZ2V0RW5kQ2h1bms6IGZ1bmN0aW9uIENodW5rZWRTdHJlYW1NYW5hZ2VyX2dldEVuZENodW5rKGVuZCkgewogICAgICBpZiAoZW5kICUgdGhpcy5jaHVua1NpemUgPT09IDApIHsKICAgICAgICByZXR1cm4gZW5kIC8gdGhpcy5jaHVua1NpemU7CiAgICAgIH0KCiAgICAgIC8vIDAgLT4gMAogICAgICAvLyAxIC0+IDEKICAgICAgLy8gOTkgLT4gMQogICAgICAvLyAxMDAgLT4gMQogICAgICAvLyAxMDEgLT4gMgogICAgICB2YXIgY2h1bmsgPSBNYXRoLmZsb29yKChlbmQgLSAxKSAvIHRoaXMuY2h1bmtTaXplKSArIDE7CiAgICAgIHJldHVybiBjaHVuazsKICAgIH0KICB9OwoKICByZXR1cm4gQ2h1bmtlZFN0cmVhbU1hbmFnZXI7Cn0pKCk7CgoKLy8gVGhlIG1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIGZldGNoZWQgcGVyIHJhbmdlIHJlcXVlc3QKdmFyIFJBTkdFX0NIVU5LX1NJWkUgPSA2NTUzNjsKCi8vIFRPRE8obWFjayk6IE1ha2UgdXNlIG9mIFBERkpTLlV0aWwuaW5oZXJpdCgpIHdoZW4gaXQgYmVjb21lcyBhdmFpbGFibGUKdmFyIEJhc2VQZGZNYW5hZ2VyID0gKGZ1bmN0aW9uIEJhc2VQZGZNYW5hZ2VyQ2xvc3VyZSgpIHsKICBmdW5jdGlvbiBCYXNlUGRmTWFuYWdlcigpIHsKICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGluaXRpYWxpemUgQmFzZU1hbmFnZXJNYW5hZ2VyJyk7CiAgfQoKICBCYXNlUGRmTWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICBvbkxvYWRlZFN0cmVhbTogZnVuY3Rpb24gQmFzZVBkZk1hbmFnZXJfb25Mb2FkZWRTdHJlYW0oKSB7CiAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbigpOwogICAgfSwKCiAgICBlbnN1cmVEb2M6IGZ1bmN0aW9uIEJhc2VQZGZNYW5hZ2VyX2Vuc3VyZURvYyhwcm9wLCBhcmdzKSB7CiAgICAgIHJldHVybiB0aGlzLmVuc3VyZSh0aGlzLnBkZkRvY3VtZW50LCBwcm9wLCBhcmdzKTsKICAgIH0sCgogICAgZW5zdXJlWFJlZjogZnVuY3Rpb24gQmFzZVBkZk1hbmFnZXJfZW5zdXJlWFJlZihwcm9wLCBhcmdzKSB7CiAgICAgIHJldHVybiB0aGlzLmVuc3VyZSh0aGlzLnBkZkRvY3VtZW50LnhyZWYsIHByb3AsIGFyZ3MpOwogICAgfSwKCiAgICBlbnN1cmVDYXRhbG9nOiBmdW5jdGlvbiBCYXNlUGRmTWFuYWdlcl9lbnN1cmVDYXRhbG9nKHByb3AsIGFyZ3MpIHsKICAgICAgcmV0dXJuIHRoaXMuZW5zdXJlKHRoaXMucGRmRG9jdW1lbnQuY2F0YWxvZywgcHJvcCwgYXJncyk7CiAgICB9LAoKICAgIGdldFBhZ2U6IGZ1bmN0aW9uIEJhc2VQZGZNYW5hZ2VyX3BhZ2VQYWdlKHBhZ2VJbmRleCkgewogICAgICByZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5nZXRQYWdlKHBhZ2VJbmRleCk7CiAgICB9LAoKICAgIGNsZWFudXA6IGZ1bmN0aW9uIEJhc2VQZGZNYW5hZ2VyX2NsZWFudXAoKSB7CiAgICAgIHJldHVybiB0aGlzLnBkZkRvY3VtZW50LmNsZWFudXAoKTsKICAgIH0sCgogICAgZW5zdXJlOiBmdW5jdGlvbiBCYXNlUGRmTWFuYWdlcl9lbnN1cmUob2JqLCBwcm9wLCBhcmdzKSB7CiAgICAgIHJldHVybiBuZXcgTm90SW1wbGVtZW50ZWRFeGNlcHRpb24oKTsKICAgIH0sCgogICAgcmVxdWVzdFJhbmdlOiBmdW5jdGlvbiBCYXNlUGRmTWFuYWdlcl9lbnN1cmUoYmVnaW4sIGVuZCkgewogICAgICByZXR1cm4gbmV3IE5vdEltcGxlbWVudGVkRXhjZXB0aW9uKCk7CiAgICB9LAoKICAgIHJlcXVlc3RMb2FkZWRTdHJlYW06IGZ1bmN0aW9uIEJhc2VQZGZNYW5hZ2VyX3JlcXVlc3RMb2FkZWRTdHJlYW0oKSB7CiAgICAgIHJldHVybiBuZXcgTm90SW1wbGVtZW50ZWRFeGNlcHRpb24oKTsKICAgIH0sCgogICAgc2VuZFByb2dyZXNzaXZlRGF0YTogZnVuY3Rpb24gQmFzZVBkZk1hbmFnZXJfc2VuZFByb2dyZXNzaXZlRGF0YShjaHVuaykgewogICAgICByZXR1cm4gbmV3IE5vdEltcGxlbWVudGVkRXhjZXB0aW9uKCk7CiAgICB9LAoKICAgIHVwZGF0ZVBhc3N3b3JkOiBmdW5jdGlvbiBCYXNlUGRmTWFuYWdlcl91cGRhdGVQYXNzd29yZChwYXNzd29yZCkgewogICAgICB0aGlzLnBkZkRvY3VtZW50LnhyZWYucGFzc3dvcmQgPSB0aGlzLnBhc3N3b3JkID0gcGFzc3dvcmQ7CiAgICAgIGlmICh0aGlzLl9wYXNzd29yZENoYW5nZWRDYXBhYmlsaXR5KSB7CiAgICAgICAgdGhpcy5fcGFzc3dvcmRDaGFuZ2VkQ2FwYWJpbGl0eS5yZXNvbHZlKCk7CiAgICAgIH0KICAgIH0sCgogICAgcGFzc3dvcmRDaGFuZ2VkOiBmdW5jdGlvbiBCYXNlUGRmTWFuYWdlcl9wYXNzd29yZENoYW5nZWQoKSB7CiAgICAgIHRoaXMuX3Bhc3N3b3JkQ2hhbmdlZENhcGFiaWxpdHkgPSBjcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSgpOwogICAgICByZXR1cm4gdGhpcy5fcGFzc3dvcmRDaGFuZ2VkQ2FwYWJpbGl0eS5wcm9taXNlOwogICAgfSwKCiAgICB0ZXJtaW5hdGU6IGZ1bmN0aW9uIEJhc2VQZGZNYW5hZ2VyX3Rlcm1pbmF0ZSgpIHsKICAgICAgcmV0dXJuIG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbigpOwogICAgfQogIH07CgogIHJldHVybiBCYXNlUGRmTWFuYWdlcjsKfSkoKTsKCnZhciBMb2NhbFBkZk1hbmFnZXIgPSAoZnVuY3Rpb24gTG9jYWxQZGZNYW5hZ2VyQ2xvc3VyZSgpIHsKICBmdW5jdGlvbiBMb2NhbFBkZk1hbmFnZXIoZGF0YSwgcGFzc3dvcmQpIHsKICAgIHZhciBzdHJlYW0gPSBuZXcgU3RyZWFtKGRhdGEpOwogICAgdGhpcy5wZGZEb2N1bWVudCA9IG5ldyBQREZEb2N1bWVudCh0aGlzLCBzdHJlYW0sIHBhc3N3b3JkKTsKICAgIHRoaXMuX2xvYWRlZFN0cmVhbUNhcGFiaWxpdHkgPSBjcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSgpOwogICAgdGhpcy5fbG9hZGVkU3RyZWFtQ2FwYWJpbGl0eS5yZXNvbHZlKHN0cmVhbSk7CiAgfQoKICBMb2NhbFBkZk1hbmFnZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCYXNlUGRmTWFuYWdlci5wcm90b3R5cGUpOwogIExvY2FsUGRmTWFuYWdlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBMb2NhbFBkZk1hbmFnZXI7CgogIExvY2FsUGRmTWFuYWdlci5wcm90b3R5cGUuZW5zdXJlID0KICAgICAgZnVuY3Rpb24gTG9jYWxQZGZNYW5hZ2VyX2Vuc3VyZShvYmosIHByb3AsIGFyZ3MpIHsKICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgIHRyeSB7CiAgICAgICAgdmFyIHZhbHVlID0gb2JqW3Byb3BdOwogICAgICAgIHZhciByZXN1bHQ7CiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgICAgcmVzdWx0ID0gdmFsdWUuYXBwbHkob2JqLCBhcmdzKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmVzdWx0ID0gdmFsdWU7CiAgICAgICAgfQogICAgICAgIHJlc29sdmUocmVzdWx0KTsKICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgIHJlamVjdChlKTsKICAgICAgfQogICAgfSk7CiAgfTsKCiAgTG9jYWxQZGZNYW5hZ2VyLnByb3RvdHlwZS5yZXF1ZXN0UmFuZ2UgPQogICAgICBmdW5jdGlvbiBMb2NhbFBkZk1hbmFnZXJfcmVxdWVzdFJhbmdlKGJlZ2luLCBlbmQpIHsKICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKICB9OwoKICBMb2NhbFBkZk1hbmFnZXIucHJvdG90eXBlLnJlcXVlc3RMb2FkZWRTdHJlYW0gPQogICAgICBmdW5jdGlvbiBMb2NhbFBkZk1hbmFnZXJfcmVxdWVzdExvYWRlZFN0cmVhbSgpIHsKICB9OwoKICBMb2NhbFBkZk1hbmFnZXIucHJvdG90eXBlLm9uTG9hZGVkU3RyZWFtID0KICAgICAgZnVuY3Rpb24gTG9jYWxQZGZNYW5hZ2VyX2dldExvYWRlZFN0cmVhbSgpIHsKICAgIHJldHVybiB0aGlzLl9sb2FkZWRTdHJlYW1DYXBhYmlsaXR5LnByb21pc2U7CiAgfTsKCiAgTG9jYWxQZGZNYW5hZ2VyLnByb3RvdHlwZS50ZXJtaW5hdGUgPQogICAgICBmdW5jdGlvbiBMb2NhbFBkZk1hbmFnZXJfdGVybWluYXRlKCkgewogICAgcmV0dXJuOwogIH07CgogIHJldHVybiBMb2NhbFBkZk1hbmFnZXI7Cn0pKCk7Cgp2YXIgTmV0d29ya1BkZk1hbmFnZXIgPSAoZnVuY3Rpb24gTmV0d29ya1BkZk1hbmFnZXJDbG9zdXJlKCkgewogIGZ1bmN0aW9uIE5ldHdvcmtQZGZNYW5hZ2VyKGFyZ3MsIG1zZ0hhbmRsZXIpIHsKCiAgICB0aGlzLm1zZ0hhbmRsZXIgPSBtc2dIYW5kbGVyOwoKICAgIHZhciBwYXJhbXMgPSB7CiAgICAgIG1zZ0hhbmRsZXI6IG1zZ0hhbmRsZXIsCiAgICAgIGh0dHBIZWFkZXJzOiBhcmdzLmh0dHBIZWFkZXJzLAogICAgICB3aXRoQ3JlZGVudGlhbHM6IGFyZ3Mud2l0aENyZWRlbnRpYWxzLAogICAgICBjaHVua2VkVmlld2VyTG9hZGluZzogYXJncy5jaHVua2VkVmlld2VyTG9hZGluZywKICAgICAgZGlzYWJsZUF1dG9GZXRjaDogYXJncy5kaXNhYmxlQXV0b0ZldGNoLAogICAgICBpbml0aWFsRGF0YTogYXJncy5pbml0aWFsRGF0YQogICAgfTsKICAgIHRoaXMuc3RyZWFtTWFuYWdlciA9IG5ldyBDaHVua2VkU3RyZWFtTWFuYWdlcihhcmdzLmxlbmd0aCwgUkFOR0VfQ0hVTktfU0laRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLnVybCwgcGFyYW1zKTsKCiAgICB0aGlzLnBkZkRvY3VtZW50ID0gbmV3IFBERkRvY3VtZW50KHRoaXMsIHRoaXMuc3RyZWFtTWFuYWdlci5nZXRTdHJlYW0oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5wYXNzd29yZCk7CiAgfQoKICBOZXR3b3JrUGRmTWFuYWdlci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJhc2VQZGZNYW5hZ2VyLnByb3RvdHlwZSk7CiAgTmV0d29ya1BkZk1hbmFnZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTmV0d29ya1BkZk1hbmFnZXI7CgogIE5ldHdvcmtQZGZNYW5hZ2VyLnByb3RvdHlwZS5lbnN1cmUgPQogICAgICBmdW5jdGlvbiBOZXR3b3JrUGRmTWFuYWdlcl9lbnN1cmUob2JqLCBwcm9wLCBhcmdzKSB7CiAgICB2YXIgcGRmTWFuYWdlciA9IHRoaXM7CgogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgZnVuY3Rpb24gZW5zdXJlSGVscGVyKCkgewogICAgICAgIHRyeSB7CiAgICAgICAgICB2YXIgcmVzdWx0OwogICAgICAgICAgdmFyIHZhbHVlID0gb2JqW3Byb3BdOwogICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgICAgICByZXN1bHQgPSB2YWx1ZS5hcHBseShvYmosIGFyZ3MpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmVzdWx0ID0gdmFsdWU7CiAgICAgICAgICB9CiAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7CiAgICAgICAgfSBjYXRjaChlKSB7CiAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pKSB7CiAgICAgICAgICAgIHJlamVjdChlKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgfQogICAgICAgICAgcGRmTWFuYWdlci5zdHJlYW1NYW5hZ2VyLnJlcXVlc3RSYW5nZShlLmJlZ2luLCBlLmVuZCwgZW5zdXJlSGVscGVyKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGVuc3VyZUhlbHBlcigpOwogICAgfSk7CiAgfTsKCiAgTmV0d29ya1BkZk1hbmFnZXIucHJvdG90eXBlLnJlcXVlc3RSYW5nZSA9CiAgICAgIGZ1bmN0aW9uIE5ldHdvcmtQZGZNYW5hZ2VyX3JlcXVlc3RSYW5nZShiZWdpbiwgZW5kKSB7CiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHsKICAgICAgdGhpcy5zdHJlYW1NYW5hZ2VyLnJlcXVlc3RSYW5nZShiZWdpbiwgZW5kLCBmdW5jdGlvbigpIHsKICAgICAgICByZXNvbHZlKCk7CiAgICAgIH0pOwogICAgfS5iaW5kKHRoaXMpKTsKICB9OwoKICBOZXR3b3JrUGRmTWFuYWdlci5wcm90b3R5cGUucmVxdWVzdExvYWRlZFN0cmVhbSA9CiAgICAgIGZ1bmN0aW9uIE5ldHdvcmtQZGZNYW5hZ2VyX3JlcXVlc3RMb2FkZWRTdHJlYW0oKSB7CiAgICB0aGlzLnN0cmVhbU1hbmFnZXIucmVxdWVzdEFsbENodW5rcygpOwogIH07CgogIE5ldHdvcmtQZGZNYW5hZ2VyLnByb3RvdHlwZS5zZW5kUHJvZ3Jlc3NpdmVEYXRhID0KICAgICAgZnVuY3Rpb24gTmV0d29ya1BkZk1hbmFnZXJfc2VuZFByb2dyZXNzaXZlRGF0YShjaHVuaykgewogICAgdGhpcy5zdHJlYW1NYW5hZ2VyLm9uUmVjZWl2ZURhdGEoeyBjaHVuazogY2h1bmsgfSk7CiAgfTsKCiAgTmV0d29ya1BkZk1hbmFnZXIucHJvdG90eXBlLm9uTG9hZGVkU3RyZWFtID0KICAgICAgZnVuY3Rpb24gTmV0d29ya1BkZk1hbmFnZXJfZ2V0TG9hZGVkU3RyZWFtKCkgewogICAgcmV0dXJuIHRoaXMuc3RyZWFtTWFuYWdlci5vbkxvYWRlZFN0cmVhbSgpOwogIH07CgogIE5ldHdvcmtQZGZNYW5hZ2VyLnByb3RvdHlwZS50ZXJtaW5hdGUgPQogICAgICBmdW5jdGlvbiBOZXR3b3JrUGRmTWFuYWdlcl90ZXJtaW5hdGUoKSB7CiAgICB0aGlzLnN0cmVhbU1hbmFnZXIubmV0d29ya01hbmFnZXIuYWJvcnRBbGxSZXF1ZXN0cygpOwogIH07CgogIHJldHVybiBOZXR3b3JrUGRmTWFuYWdlcjsKfSkoKTsKCgp2YXIgUGFnZSA9IChmdW5jdGlvbiBQYWdlQ2xvc3VyZSgpIHsKCiAgdmFyIExFVFRFUl9TSVpFX01FRElBQk9YID0gWzAsIDAsIDYxMiwgNzkyXTsKCiAgZnVuY3Rpb24gUGFnZShwZGZNYW5hZ2VyLCB4cmVmLCBwYWdlSW5kZXgsIHBhZ2VEaWN0LCByZWYsIGZvbnRDYWNoZSkgewogICAgdGhpcy5wZGZNYW5hZ2VyID0gcGRmTWFuYWdlcjsKICAgIHRoaXMucGFnZUluZGV4ID0gcGFnZUluZGV4OwogICAgdGhpcy5wYWdlRGljdCA9IHBhZ2VEaWN0OwogICAgdGhpcy54cmVmID0geHJlZjsKICAgIHRoaXMucmVmID0gcmVmOwogICAgdGhpcy5mb250Q2FjaGUgPSBmb250Q2FjaGU7CiAgICB0aGlzLmlkQ291bnRlcnMgPSB7CiAgICAgIG9iajogMAogICAgfTsKICAgIHRoaXMucmVzb3VyY2VzUHJvbWlzZSA9IG51bGw7CiAgfQoKICBQYWdlLnByb3RvdHlwZSA9IHsKICAgIGdldFBhZ2VQcm9wOiBmdW5jdGlvbiBQYWdlX2dldFBhZ2VQcm9wKGtleSkgewogICAgICByZXR1cm4gdGhpcy5wYWdlRGljdC5nZXQoa2V5KTsKICAgIH0sCgogICAgZ2V0SW5oZXJpdGVkUGFnZVByb3A6IGZ1bmN0aW9uIFBhZ2VfaW5oZXJpdFBhZ2VQcm9wKGtleSkgewogICAgICB2YXIgZGljdCA9IHRoaXMucGFnZURpY3Q7CiAgICAgIHZhciB2YWx1ZSA9IGRpY3QuZ2V0KGtleSk7CiAgICAgIHdoaWxlICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgZGljdCA9IGRpY3QuZ2V0KCdQYXJlbnQnKTsKICAgICAgICBpZiAoIWRpY3QpIHsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICB2YWx1ZSA9IGRpY3QuZ2V0KGtleSk7CiAgICAgIH0KICAgICAgcmV0dXJuIHZhbHVlOwogICAgfSwKCiAgICBnZXQgY29udGVudCgpIHsKICAgICAgcmV0dXJuIHRoaXMuZ2V0UGFnZVByb3AoJ0NvbnRlbnRzJyk7CiAgICB9LAoKICAgIGdldCByZXNvdXJjZXMoKSB7CiAgICAgIHZhciB2YWx1ZSA9IHRoaXMuZ2V0SW5oZXJpdGVkUGFnZVByb3AoJ1Jlc291cmNlcycpOwogICAgICAvLyBGb3Igcm9idXN0bmVzczogVGhlIHNwZWMgc3RhdGVzIHRoYXQgYSBcUmVzb3VyY2VzIGVudHJ5IGhhcyB0byBiZQogICAgICAvLyBwcmVzZW50LCBidXQgY2FuIGJlIGVtcHR5LiBTb21lIGRvY3VtZW50IG9taXQgaXQgc3RpbGwuIEluIHRoaXMgY2FzZQogICAgICAvLyByZXR1cm4gYW4gZW1wdHkgZGljdGlvbmFyeToKICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHsKICAgICAgICB2YWx1ZSA9IERpY3QuZW1wdHk7CiAgICAgIH0KICAgICAgcmV0dXJuIHNoYWRvdyh0aGlzLCAncmVzb3VyY2VzJywgdmFsdWUpOwogICAgfSwKCiAgICBnZXQgbWVkaWFCb3goKSB7CiAgICAgIHZhciBvYmogPSB0aGlzLmdldEluaGVyaXRlZFBhZ2VQcm9wKCdNZWRpYUJveCcpOwogICAgICAvLyBSZXNldCBpbnZhbGlkIG1lZGlhIGJveCB0byBsZXR0ZXIgc2l6ZS4KICAgICAgaWYgKCFpc0FycmF5KG9iaikgfHwgb2JqLmxlbmd0aCAhPT0gNCkgewogICAgICAgIG9iaiA9IExFVFRFUl9TSVpFX01FRElBQk9YOwogICAgICB9CiAgICAgIHJldHVybiBzaGFkb3codGhpcywgJ21lZGlhQm94Jywgb2JqKTsKICAgIH0sCgogICAgZ2V0IHZpZXcoKSB7CiAgICAgIHZhciBtZWRpYUJveCA9IHRoaXMubWVkaWFCb3g7CiAgICAgIHZhciBjcm9wQm94ID0gdGhpcy5nZXRJbmhlcml0ZWRQYWdlUHJvcCgnQ3JvcEJveCcpOwogICAgICBpZiAoIWlzQXJyYXkoY3JvcEJveCkgfHwgY3JvcEJveC5sZW5ndGggIT09IDQpIHsKICAgICAgICByZXR1cm4gc2hhZG93KHRoaXMsICd2aWV3JywgbWVkaWFCb3gpOwogICAgICB9CgogICAgICAvLyBGcm9tIHRoZSBzcGVjLCA2dGggZWQuLCBwLjk2MzoKICAgICAgLy8gIlRoZSBjcm9wLCBibGVlZCwgdHJpbSwgYW5kIGFydCBib3hlcyBzaG91bGQgbm90IG9yZGluYXJpbHkKICAgICAgLy8gZXh0ZW5kIGJleW9uZCB0aGUgYm91bmRhcmllcyBvZiB0aGUgbWVkaWEgYm94LiBJZiB0aGV5IGRvLCB0aGV5IGFyZQogICAgICAvLyBlZmZlY3RpdmVseSByZWR1Y2VkIHRvIHRoZWlyIGludGVyc2VjdGlvbiB3aXRoIHRoZSBtZWRpYSBib3guIgogICAgICBjcm9wQm94ID0gVXRpbC5pbnRlcnNlY3QoY3JvcEJveCwgbWVkaWFCb3gpOwogICAgICBpZiAoIWNyb3BCb3gpIHsKICAgICAgICByZXR1cm4gc2hhZG93KHRoaXMsICd2aWV3JywgbWVkaWFCb3gpOwogICAgICB9CiAgICAgIHJldHVybiBzaGFkb3codGhpcywgJ3ZpZXcnLCBjcm9wQm94KTsKICAgIH0sCgogICAgZ2V0IGFubm90YXRpb25SZWZzKCkgewogICAgICByZXR1cm4gc2hhZG93KHRoaXMsICdhbm5vdGF0aW9uUmVmcycsCiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRJbmhlcml0ZWRQYWdlUHJvcCgnQW5ub3RzJykpOwogICAgfSwKCiAgICBnZXQgcm90YXRlKCkgewogICAgICB2YXIgcm90YXRlID0gdGhpcy5nZXRJbmhlcml0ZWRQYWdlUHJvcCgnUm90YXRlJykgfHwgMDsKICAgICAgLy8gTm9ybWFsaXplIHJvdGF0aW9uIHNvIGl0J3MgYSBtdWx0aXBsZSBvZiA5MCBhbmQgYmV0d2VlbiAwIGFuZCAyNzAKICAgICAgaWYgKHJvdGF0ZSAlIDkwICE9PSAwKSB7CiAgICAgICAgcm90YXRlID0gMDsKICAgICAgfSBlbHNlIGlmIChyb3RhdGUgPj0gMzYwKSB7CiAgICAgICAgcm90YXRlID0gcm90YXRlICUgMzYwOwogICAgICB9IGVsc2UgaWYgKHJvdGF0ZSA8IDApIHsKICAgICAgICAvLyBUaGUgc3BlYyBkb2Vzbid0IGNvdmVyIG5lZ2F0aXZlcywgYXNzdW1lIGl0cyBjb3VudGVyY2xvY2t3aXNlCiAgICAgICAgLy8gcm90YXRpb24uIFRoZSBmb2xsb3dpbmcgaXMgdGhlIG90aGVyIGltcGxlbWVudGF0aW9uIG9mIG1vZHVsby4KICAgICAgICByb3RhdGUgPSAoKHJvdGF0ZSAlIDM2MCkgKyAzNjApICUgMzYwOwogICAgICB9CiAgICAgIHJldHVybiBzaGFkb3codGhpcywgJ3JvdGF0ZScsIHJvdGF0ZSk7CiAgICB9LAoKICAgIGdldENvbnRlbnRTdHJlYW06IGZ1bmN0aW9uIFBhZ2VfZ2V0Q29udGVudFN0cmVhbSgpIHsKICAgICAgdmFyIGNvbnRlbnQgPSB0aGlzLmNvbnRlbnQ7CiAgICAgIHZhciBzdHJlYW07CiAgICAgIGlmIChpc0FycmF5KGNvbnRlbnQpKSB7CiAgICAgICAgLy8gZmV0Y2hpbmcgaXRlbXMKICAgICAgICB2YXIgeHJlZiA9IHRoaXMueHJlZjsKICAgICAgICB2YXIgaSwgbiA9IGNvbnRlbnQubGVuZ3RoOwogICAgICAgIHZhciBzdHJlYW1zID0gW107CiAgICAgICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkgewogICAgICAgICAgc3RyZWFtcy5wdXNoKHhyZWYuZmV0Y2hJZlJlZihjb250ZW50W2ldKSk7CiAgICAgICAgfQogICAgICAgIHN0cmVhbSA9IG5ldyBTdHJlYW1zU2VxdWVuY2VTdHJlYW0oc3RyZWFtcyk7CiAgICAgIH0gZWxzZSBpZiAoaXNTdHJlYW0oY29udGVudCkpIHsKICAgICAgICBzdHJlYW0gPSBjb250ZW50OwogICAgICB9IGVsc2UgewogICAgICAgIC8vIHJlcGxhY2luZyBub24tZXhpc3RlbnQgcGFnZSBjb250ZW50IHdpdGggZW1wdHkgb25lCiAgICAgICAgc3RyZWFtID0gbmV3IE51bGxTdHJlYW0oKTsKICAgICAgfQogICAgICByZXR1cm4gc3RyZWFtOwogICAgfSwKCiAgICBsb2FkUmVzb3VyY2VzOiBmdW5jdGlvbiBQYWdlX2xvYWRSZXNvdXJjZXMoa2V5cykgewogICAgICBpZiAoIXRoaXMucmVzb3VyY2VzUHJvbWlzZSkgewogICAgICAgIC8vIFRPRE86IGFkZCBhc3luYyBnZXRJbmhlcml0ZWRQYWdlUHJvcCBhbmQgcmVtb3ZlIHRoaXMuCiAgICAgICAgdGhpcy5yZXNvdXJjZXNQcm9taXNlID0gdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCAncmVzb3VyY2VzJyk7CiAgICAgIH0KICAgICAgcmV0dXJuIHRoaXMucmVzb3VyY2VzUHJvbWlzZS50aGVuKGZ1bmN0aW9uIHJlc291cmNlU3VjY2VzcygpIHsKICAgICAgICB2YXIgb2JqZWN0TG9hZGVyID0gbmV3IE9iamVjdExvYWRlcih0aGlzLnJlc291cmNlcy5tYXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnhyZWYpOwogICAgICAgIHJldHVybiBvYmplY3RMb2FkZXIubG9hZCgpOwogICAgICB9LmJpbmQodGhpcykpOwogICAgfSwKCiAgICBnZXRPcGVyYXRvckxpc3Q6IGZ1bmN0aW9uIFBhZ2VfZ2V0T3BlcmF0b3JMaXN0KGhhbmRsZXIsIGludGVudCkgewogICAgICB2YXIgc2VsZiA9IHRoaXM7CgogICAgICB2YXIgcGRmTWFuYWdlciA9IHRoaXMucGRmTWFuYWdlcjsKICAgICAgdmFyIGNvbnRlbnRTdHJlYW1Qcm9taXNlID0gcGRmTWFuYWdlci5lbnN1cmUodGhpcywgJ2dldENvbnRlbnRTdHJlYW0nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSk7CiAgICAgIHZhciByZXNvdXJjZXNQcm9taXNlID0gdGhpcy5sb2FkUmVzb3VyY2VzKFsKICAgICAgICAnRXh0R1N0YXRlJywKICAgICAgICAnQ29sb3JTcGFjZScsCiAgICAgICAgJ1BhdHRlcm4nLAogICAgICAgICdTaGFkaW5nJywKICAgICAgICAnWE9iamVjdCcsCiAgICAgICAgJ0ZvbnQnCiAgICAgICAgLy8gUHJvY1NldAogICAgICAgIC8vIFByb3BlcnRpZXMKICAgICAgXSk7CgogICAgICB2YXIgcGFydGlhbEV2YWx1YXRvciA9IG5ldyBQYXJ0aWFsRXZhbHVhdG9yKHBkZk1hbmFnZXIsIHRoaXMueHJlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyLCB0aGlzLnBhZ2VJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncCcgKyB0aGlzLnBhZ2VJbmRleCArICdfJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlkQ291bnRlcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb250Q2FjaGUpOwoKICAgICAgdmFyIGRhdGFQcm9taXNlcyA9IFByb21pc2UuYWxsKFtjb250ZW50U3RyZWFtUHJvbWlzZSwgcmVzb3VyY2VzUHJvbWlzZV0pOwogICAgICB2YXIgcGFnZUxpc3RQcm9taXNlID0gZGF0YVByb21pc2VzLnRoZW4oZnVuY3Rpb24oZGF0YSkgewogICAgICAgIHZhciBjb250ZW50U3RyZWFtID0gZGF0YVswXTsKICAgICAgICB2YXIgb3BMaXN0ID0gbmV3IE9wZXJhdG9yTGlzdChpbnRlbnQsIGhhbmRsZXIsIHNlbGYucGFnZUluZGV4KTsKCiAgICAgICAgaGFuZGxlci5zZW5kKCdTdGFydFJlbmRlclBhZ2UnLCB7CiAgICAgICAgICB0cmFuc3BhcmVuY3k6IHBhcnRpYWxFdmFsdWF0b3IuaGFzQmxlbmRNb2RlcyhzZWxmLnJlc291cmNlcyksCiAgICAgICAgICBwYWdlSW5kZXg6IHNlbGYucGFnZUluZGV4LAogICAgICAgICAgaW50ZW50OiBpbnRlbnQKICAgICAgICB9KTsKICAgICAgICByZXR1cm4gcGFydGlhbEV2YWx1YXRvci5nZXRPcGVyYXRvckxpc3QoY29udGVudFN0cmVhbSwgc2VsZi5yZXNvdXJjZXMsCiAgICAgICAgICBvcExpc3QpLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgICAgICByZXR1cm4gb3BMaXN0OwogICAgICAgICAgfSk7CiAgICAgIH0pOwoKICAgICAgdmFyIGFubm90YXRpb25zUHJvbWlzZSA9IHBkZk1hbmFnZXIuZW5zdXJlKHRoaXMsICdhbm5vdGF0aW9ucycpOwogICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW3BhZ2VMaXN0UHJvbWlzZSwgYW5ub3RhdGlvbnNQcm9taXNlXSkudGhlbigKICAgICAgICAgIGZ1bmN0aW9uKGRhdGFzKSB7CiAgICAgICAgdmFyIHBhZ2VPcExpc3QgPSBkYXRhc1swXTsKICAgICAgICB2YXIgYW5ub3RhdGlvbnMgPSBkYXRhc1sxXTsKCiAgICAgICAgaWYgKGFubm90YXRpb25zLmxlbmd0aCA9PT0gMCkgewogICAgICAgICAgcGFnZU9wTGlzdC5mbHVzaCh0cnVlKTsKICAgICAgICAgIHJldHVybiBwYWdlT3BMaXN0OwogICAgICAgIH0KCiAgICAgICAgdmFyIGFubm90YXRpb25zUmVhZHlQcm9taXNlID0gQW5ub3RhdGlvbi5hcHBlbmRUb09wZXJhdG9yTGlzdCgKICAgICAgICAgIGFubm90YXRpb25zLCBwYWdlT3BMaXN0LCBwZGZNYW5hZ2VyLCBwYXJ0aWFsRXZhbHVhdG9yLCBpbnRlbnQpOwogICAgICAgIHJldHVybiBhbm5vdGF0aW9uc1JlYWR5UHJvbWlzZS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICAgIHBhZ2VPcExpc3QuZmx1c2godHJ1ZSk7CiAgICAgICAgICByZXR1cm4gcGFnZU9wTGlzdDsKICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9LAoKICAgIGV4dHJhY3RUZXh0Q29udGVudDogZnVuY3Rpb24gUGFnZV9leHRyYWN0VGV4dENvbnRlbnQoKSB7CiAgICAgIHZhciBoYW5kbGVyID0gewogICAgICAgIG9uOiBmdW5jdGlvbiBudWxsSGFuZGxlck9uKCkge30sCiAgICAgICAgc2VuZDogZnVuY3Rpb24gbnVsbEhhbmRsZXJTZW5kKCkge30KICAgICAgfTsKCiAgICAgIHZhciBzZWxmID0gdGhpczsKCiAgICAgIHZhciBwZGZNYW5hZ2VyID0gdGhpcy5wZGZNYW5hZ2VyOwogICAgICB2YXIgY29udGVudFN0cmVhbVByb21pc2UgPSBwZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCAnZ2V0Q29udGVudFN0cmVhbScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdKTsKCiAgICAgIHZhciByZXNvdXJjZXNQcm9taXNlID0gdGhpcy5sb2FkUmVzb3VyY2VzKFsKICAgICAgICAnRXh0R1N0YXRlJywKICAgICAgICAnWE9iamVjdCcsCiAgICAgICAgJ0ZvbnQnCiAgICAgIF0pOwoKICAgICAgdmFyIGRhdGFQcm9taXNlcyA9IFByb21pc2UuYWxsKFtjb250ZW50U3RyZWFtUHJvbWlzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXNQcm9taXNlXSk7CiAgICAgIHJldHVybiBkYXRhUHJvbWlzZXMudGhlbihmdW5jdGlvbihkYXRhKSB7CiAgICAgICAgdmFyIGNvbnRlbnRTdHJlYW0gPSBkYXRhWzBdOwogICAgICAgIHZhciBwYXJ0aWFsRXZhbHVhdG9yID0gbmV3IFBhcnRpYWxFdmFsdWF0b3IocGRmTWFuYWdlciwgc2VsZi54cmVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlciwgc2VsZi5wYWdlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncCcgKyBzZWxmLnBhZ2VJbmRleCArICdfJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaWRDb3VudGVycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZm9udENhY2hlKTsKCiAgICAgICAgcmV0dXJuIHBhcnRpYWxFdmFsdWF0b3IuZ2V0VGV4dENvbnRlbnQoY29udGVudFN0cmVhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJlc291cmNlcyk7CiAgICAgIH0pOwogICAgfSwKCiAgICBnZXRBbm5vdGF0aW9uc0RhdGE6IGZ1bmN0aW9uIFBhZ2VfZ2V0QW5ub3RhdGlvbnNEYXRhKCkgewogICAgICB2YXIgYW5ub3RhdGlvbnMgPSB0aGlzLmFubm90YXRpb25zOwogICAgICB2YXIgYW5ub3RhdGlvbnNEYXRhID0gW107CiAgICAgIGZvciAodmFyIGkgPSAwLCBuID0gYW5ub3RhdGlvbnMubGVuZ3RoOyBpIDwgbjsgKytpKSB7CiAgICAgICAgYW5ub3RhdGlvbnNEYXRhLnB1c2goYW5ub3RhdGlvbnNbaV0uZ2V0RGF0YSgpKTsKICAgICAgfQogICAgICByZXR1cm4gYW5ub3RhdGlvbnNEYXRhOwogICAgfSwKCiAgICBnZXQgYW5ub3RhdGlvbnMoKSB7CiAgICAgIHZhciBhbm5vdGF0aW9ucyA9IFtdOwogICAgICB2YXIgYW5ub3RhdGlvblJlZnMgPSAodGhpcy5hbm5vdGF0aW9uUmVmcyB8fCBbXSk7CiAgICAgIGZvciAodmFyIGkgPSAwLCBuID0gYW5ub3RhdGlvblJlZnMubGVuZ3RoOyBpIDwgbjsgKytpKSB7CiAgICAgICAgdmFyIGFubm90YXRpb25SZWYgPSBhbm5vdGF0aW9uUmVmc1tpXTsKICAgICAgICB2YXIgYW5ub3RhdGlvbiA9IEFubm90YXRpb24uZnJvbVJlZih0aGlzLnhyZWYsIGFubm90YXRpb25SZWYpOwogICAgICAgIGlmIChhbm5vdGF0aW9uKSB7CiAgICAgICAgICBhbm5vdGF0aW9ucy5wdXNoKGFubm90YXRpb24pOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gc2hhZG93KHRoaXMsICdhbm5vdGF0aW9ucycsIGFubm90YXRpb25zKTsKICAgIH0KICB9OwoKICByZXR1cm4gUGFnZTsKfSkoKTsKCi8qKgogKiBUaGUgYFBERkRvY3VtZW50YCBob2xkcyBhbGwgdGhlIGRhdGEgb2YgdGhlIFBERiBmaWxlLiBDb21wYXJlZCB0byB0aGUKICogYFBERkRvY2AsIHRoaXMgb25lIGRvZXNuJ3QgaGF2ZSBhbnkgam9iIG1hbmFnZW1lbnQgY29kZS4KICogUmlnaHQgbm93IHRoZXJlIGV4aXN0cyBvbmUgUERGRG9jdW1lbnQgb24gdGhlIG1haW4gdGhyZWFkICsgb25lIG9iamVjdAogKiBmb3IgZWFjaCB3b3JrZXIuIElmIHRoZXJlIGlzIG5vIHdvcmtlciBzdXBwb3J0IGVuYWJsZWQsIHRoZXJlIGFyZSB0d28KICogYFBERkRvY3VtZW50YCBvYmplY3RzIG9uIHRoZSBtYWluIHRocmVhZCBjcmVhdGVkLgogKi8KdmFyIFBERkRvY3VtZW50ID0gKGZ1bmN0aW9uIFBERkRvY3VtZW50Q2xvc3VyZSgpIHsKICB2YXIgRklOR0VSUFJJTlRfRklSU1RfQllURVMgPSAxMDI0OwogIHZhciBFTVBUWV9GSU5HRVJQUklOVCA9ICdceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwJyArCiAgICAnXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwJzsKCiAgZnVuY3Rpb24gUERGRG9jdW1lbnQocGRmTWFuYWdlciwgYXJnLCBwYXNzd29yZCkgewogICAgaWYgKGlzU3RyZWFtKGFyZykpIHsKICAgICAgaW5pdC5jYWxsKHRoaXMsIHBkZk1hbmFnZXIsIGFyZywgcGFzc3dvcmQpOwogICAgfSBlbHNlIGlmIChpc0FycmF5QnVmZmVyKGFyZykpIHsKICAgICAgaW5pdC5jYWxsKHRoaXMsIHBkZk1hbmFnZXIsIG5ldyBTdHJlYW0oYXJnKSwgcGFzc3dvcmQpOwogICAgfSBlbHNlIHsKICAgICAgZXJyb3IoJ1BERkRvY3VtZW50OiBVbmtub3duIGFyZ3VtZW50IHR5cGUnKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGluaXQocGRmTWFuYWdlciwgc3RyZWFtLCBwYXNzd29yZCkgewogICAgYXNzZXJ0KHN0cmVhbS5sZW5ndGggPiAwLCAnc3RyZWFtIG11c3QgaGF2ZSBkYXRhJyk7CiAgICB0aGlzLnBkZk1hbmFnZXIgPSBwZGZNYW5hZ2VyOwogICAgdGhpcy5zdHJlYW0gPSBzdHJlYW07CiAgICB2YXIgeHJlZiA9IG5ldyBYUmVmKHRoaXMuc3RyZWFtLCBwYXNzd29yZCwgcGRmTWFuYWdlcik7CiAgICB0aGlzLnhyZWYgPSB4cmVmOwogIH0KCiAgZnVuY3Rpb24gZmluZChzdHJlYW0sIG5lZWRsZSwgbGltaXQsIGJhY2t3YXJkcykgewogICAgdmFyIHBvcyA9IHN0cmVhbS5wb3M7CiAgICB2YXIgZW5kID0gc3RyZWFtLmVuZDsKICAgIHZhciBzdHJCdWYgPSBbXTsKICAgIGlmIChwb3MgKyBsaW1pdCA+IGVuZCkgewogICAgICBsaW1pdCA9IGVuZCAtIHBvczsKICAgIH0KICAgIGZvciAodmFyIG4gPSAwOyBuIDwgbGltaXQ7ICsrbikgewogICAgICBzdHJCdWYucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHN0cmVhbS5nZXRCeXRlKCkpKTsKICAgIH0KICAgIHZhciBzdHIgPSBzdHJCdWYuam9pbignJyk7CiAgICBzdHJlYW0ucG9zID0gcG9zOwogICAgdmFyIGluZGV4ID0gYmFja3dhcmRzID8gc3RyLmxhc3RJbmRleE9mKG5lZWRsZSkgOiBzdHIuaW5kZXhPZihuZWVkbGUpOwogICAgaWYgKGluZGV4ID09PSAtMSkgewogICAgICByZXR1cm4gZmFsc2U7IC8qIG5vdCBmb3VuZCAqLwogICAgfQogICAgc3RyZWFtLnBvcyArPSBpbmRleDsKICAgIHJldHVybiB0cnVlOyAvKiBmb3VuZCAqLwogIH0KCiAgdmFyIERvY3VtZW50SW5mb1ZhbGlkYXRvcnMgPSB7CiAgICBnZXQgZW50cmllcygpIHsKICAgICAgLy8gTGF6aWx5IGJ1aWxkIHRoaXMgc2luY2UgYWxsIHRoZSB2YWxpZGF0aW9uIGZ1bmN0aW9ucyBiZWxvdyBhcmUgbm90CiAgICAgIC8vIGRlZmluZWQgdW50aWwgYWZ0ZXIgdGhpcyBmaWxlIGxvYWRzLgogICAgICByZXR1cm4gc2hhZG93KHRoaXMsICdlbnRyaWVzJywgewogICAgICAgIFRpdGxlOiBpc1N0cmluZywKICAgICAgICBBdXRob3I6IGlzU3RyaW5nLAogICAgICAgIFN1YmplY3Q6IGlzU3RyaW5nLAogICAgICAgIEtleXdvcmRzOiBpc1N0cmluZywKICAgICAgICBDcmVhdG9yOiBpc1N0cmluZywKICAgICAgICBQcm9kdWNlcjogaXNTdHJpbmcsCiAgICAgICAgQ3JlYXRpb25EYXRlOiBpc1N0cmluZywKICAgICAgICBNb2REYXRlOiBpc1N0cmluZywKICAgICAgICBUcmFwcGVkOiBpc05hbWUKICAgICAgfSk7CiAgICB9CiAgfTsKCiAgUERGRG9jdW1lbnQucHJvdG90eXBlID0gewogICAgcGFyc2U6IGZ1bmN0aW9uIFBERkRvY3VtZW50X3BhcnNlKHJlY292ZXJ5TW9kZSkgewogICAgICB0aGlzLnNldHVwKHJlY292ZXJ5TW9kZSk7CiAgICAgIHRyeSB7CiAgICAgICAgLy8gY2hlY2tpbmcgaWYgQWNyb0Zvcm0gaXMgcHJlc2VudAogICAgICAgIHRoaXMuYWNyb0Zvcm0gPSB0aGlzLmNhdGFsb2cuY2F0RGljdC5nZXQoJ0Fjcm9Gb3JtJyk7CiAgICAgICAgaWYgKHRoaXMuYWNyb0Zvcm0pIHsKICAgICAgICAgIHRoaXMueGZhID0gdGhpcy5hY3JvRm9ybS5nZXQoJ1hGQScpOwogICAgICAgICAgdmFyIGZpZWxkcyA9IHRoaXMuYWNyb0Zvcm0uZ2V0KCdGaWVsZHMnKTsKICAgICAgICAgIGlmICgoIWZpZWxkcyB8fCAhaXNBcnJheShmaWVsZHMpIHx8IGZpZWxkcy5sZW5ndGggPT09IDApICYmCiAgICAgICAgICAgICAgIXRoaXMueGZhKSB7CiAgICAgICAgICAgIC8vIG5vIGZpZWxkcyBhbmQgbm8gWEZBIC0tIG5vdCBhIGZvcm0gKD8pCiAgICAgICAgICAgIHRoaXMuYWNyb0Zvcm0gPSBudWxsOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSBjYXRjaCAoZXgpIHsKICAgICAgICBpbmZvKCdTb21ldGhpbmcgd3Jvbmcgd2l0aCBBY3JvRm9ybSBlbnRyeScpOwogICAgICAgIHRoaXMuYWNyb0Zvcm0gPSBudWxsOwogICAgICB9CiAgICB9LAoKICAgIGdldCBsaW5lYXJpemF0aW9uKCkgewogICAgICB2YXIgbGluZWFyaXphdGlvbiA9IG51bGw7CiAgICAgIGlmICh0aGlzLnN0cmVhbS5sZW5ndGgpIHsKICAgICAgICB0cnkgewogICAgICAgICAgbGluZWFyaXphdGlvbiA9IExpbmVhcml6YXRpb24uY3JlYXRlKHRoaXMuc3RyZWFtKTsKICAgICAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbikgewogICAgICAgICAgICB0aHJvdyBlcnI7CiAgICAgICAgICB9CiAgICAgICAgICBpbmZvKGVycik7CiAgICAgICAgfQogICAgICB9CiAgICAgIC8vIHNoYWRvdyB0aGUgcHJvdG90eXBlIGdldHRlciB3aXRoIGEgZGF0YSBwcm9wZXJ0eQogICAgICByZXR1cm4gc2hhZG93KHRoaXMsICdsaW5lYXJpemF0aW9uJywgbGluZWFyaXphdGlvbik7CiAgICB9LAogICAgZ2V0IHN0YXJ0WFJlZigpIHsKICAgICAgdmFyIHN0cmVhbSA9IHRoaXMuc3RyZWFtOwogICAgICB2YXIgc3RhcnRYUmVmID0gMDsKICAgICAgdmFyIGxpbmVhcml6YXRpb24gPSB0aGlzLmxpbmVhcml6YXRpb247CiAgICAgIGlmIChsaW5lYXJpemF0aW9uKSB7CiAgICAgICAgLy8gRmluZCBlbmQgb2YgZmlyc3Qgb2JqLgogICAgICAgIHN0cmVhbS5yZXNldCgpOwogICAgICAgIGlmIChmaW5kKHN0cmVhbSwgJ2VuZG9iaicsIDEwMjQpKSB7CiAgICAgICAgICBzdGFydFhSZWYgPSBzdHJlYW0ucG9zICsgNjsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgLy8gRmluZCBzdGFydHhyZWYgYnkganVtcGluZyBiYWNrd2FyZCBmcm9tIHRoZSBlbmQgb2YgdGhlIGZpbGUuCiAgICAgICAgdmFyIHN0ZXAgPSAxMDI0OwogICAgICAgIHZhciBmb3VuZCA9IGZhbHNlLCBwb3MgPSBzdHJlYW0uZW5kOwogICAgICAgIHdoaWxlICghZm91bmQgJiYgcG9zID4gMCkgewogICAgICAgICAgcG9zIC09IHN0ZXAgLSAnc3RhcnR4cmVmJy5sZW5ndGg7CiAgICAgICAgICBpZiAocG9zIDwgMCkgewogICAgICAgICAgICBwb3MgPSAwOwogICAgICAgICAgfQogICAgICAgICAgc3RyZWFtLnBvcyA9IHBvczsKICAgICAgICAgIGZvdW5kID0gZmluZChzdHJlYW0sICdzdGFydHhyZWYnLCBzdGVwLCB0cnVlKTsKICAgICAgICB9CiAgICAgICAgaWYgKGZvdW5kKSB7CiAgICAgICAgICBzdHJlYW0uc2tpcCg5KTsKICAgICAgICAgIHZhciBjaDsKICAgICAgICAgIGRvIHsKICAgICAgICAgICAgY2ggPSBzdHJlYW0uZ2V0Qnl0ZSgpOwogICAgICAgICAgfSB3aGlsZSAoTGV4ZXIuaXNTcGFjZShjaCkpOwogICAgICAgICAgdmFyIHN0ciA9ICcnOwogICAgICAgICAgd2hpbGUgKGNoID49IDB4MjAgJiYgY2ggPD0gMHgzOSkgeyAvLyA8ICc5JwogICAgICAgICAgICBzdHIgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjaCk7CiAgICAgICAgICAgIGNoID0gc3RyZWFtLmdldEJ5dGUoKTsKICAgICAgICAgIH0KICAgICAgICAgIHN0YXJ0WFJlZiA9IHBhcnNlSW50KHN0ciwgMTApOwogICAgICAgICAgaWYgKGlzTmFOKHN0YXJ0WFJlZikpIHsKICAgICAgICAgICAgc3RhcnRYUmVmID0gMDsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgICAgLy8gc2hhZG93IHRoZSBwcm90b3R5cGUgZ2V0dGVyIHdpdGggYSBkYXRhIHByb3BlcnR5CiAgICAgIHJldHVybiBzaGFkb3codGhpcywgJ3N0YXJ0WFJlZicsIHN0YXJ0WFJlZik7CiAgICB9LAogICAgZ2V0IG1haW5YUmVmRW50cmllc09mZnNldCgpIHsKICAgICAgdmFyIG1haW5YUmVmRW50cmllc09mZnNldCA9IDA7CiAgICAgIHZhciBsaW5lYXJpemF0aW9uID0gdGhpcy5saW5lYXJpemF0aW9uOwogICAgICBpZiAobGluZWFyaXphdGlvbikgewogICAgICAgIG1haW5YUmVmRW50cmllc09mZnNldCA9IGxpbmVhcml6YXRpb24ubWFpblhSZWZFbnRyaWVzT2Zmc2V0OwogICAgICB9CiAgICAgIC8vIHNoYWRvdyB0aGUgcHJvdG90eXBlIGdldHRlciB3aXRoIGEgZGF0YSBwcm9wZXJ0eQogICAgICByZXR1cm4gc2hhZG93KHRoaXMsICdtYWluWFJlZkVudHJpZXNPZmZzZXQnLCBtYWluWFJlZkVudHJpZXNPZmZzZXQpOwogICAgfSwKICAgIC8vIEZpbmQgdGhlIGhlYWRlciwgcmVtb3ZlIGxlYWRpbmcgZ2FyYmFnZSBhbmQgc2V0dXAgdGhlIHN0cmVhbQogICAgLy8gc3RhcnRpbmcgZnJvbSB0aGUgaGVhZGVyLgogICAgY2hlY2tIZWFkZXI6IGZ1bmN0aW9uIFBERkRvY3VtZW50X2NoZWNrSGVhZGVyKCkgewogICAgICB2YXIgc3RyZWFtID0gdGhpcy5zdHJlYW07CiAgICAgIHN0cmVhbS5yZXNldCgpOwogICAgICBpZiAoZmluZChzdHJlYW0sICclUERGLScsIDEwMjQpKSB7CiAgICAgICAgLy8gRm91bmQgdGhlIGhlYWRlciwgdHJpbSBvZmYgYW55IGdhcmJhZ2UgYmVmb3JlIGl0LgogICAgICAgIHN0cmVhbS5tb3ZlU3RhcnQoKTsKICAgICAgICAvLyBSZWFkaW5nIGZpbGUgZm9ybWF0IHZlcnNpb24KICAgICAgICB2YXIgTUFYX1ZFUlNJT05fTEVOR1RIID0gMTI7CiAgICAgICAgdmFyIHZlcnNpb24gPSAnJywgY2g7CiAgICAgICAgd2hpbGUgKChjaCA9IHN0cmVhbS5nZXRCeXRlKCkpID4gMHgyMCkgeyAvLyBTUEFDRQogICAgICAgICAgaWYgKHZlcnNpb24ubGVuZ3RoID49IE1BWF9WRVJTSU9OX0xFTkdUSCkgewogICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgICAgIHZlcnNpb24gKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjaCk7CiAgICAgICAgfQogICAgICAgIC8vIHJlbW92aW5nICIlUERGLSItcHJlZml4CiAgICAgICAgdGhpcy5wZGZGb3JtYXRWZXJzaW9uID0gdmVyc2lvbi5zdWJzdHJpbmcoNSk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIC8vIE1heSBub3QgYmUgYSBQREYgZmlsZSwgY29udGludWUgYW55d2F5LgogICAgfSwKICAgIHBhcnNlU3RhcnRYUmVmOiBmdW5jdGlvbiBQREZEb2N1bWVudF9wYXJzZVN0YXJ0WFJlZigpIHsKICAgICAgdmFyIHN0YXJ0WFJlZiA9IHRoaXMuc3RhcnRYUmVmOwogICAgICB0aGlzLnhyZWYuc2V0U3RhcnRYUmVmKHN0YXJ0WFJlZik7CiAgICB9LAogICAgc2V0dXA6IGZ1bmN0aW9uIFBERkRvY3VtZW50X3NldHVwKHJlY292ZXJ5TW9kZSkgewogICAgICB0aGlzLnhyZWYucGFyc2UocmVjb3ZlcnlNb2RlKTsKICAgICAgdGhpcy5jYXRhbG9nID0gbmV3IENhdGFsb2codGhpcy5wZGZNYW5hZ2VyLCB0aGlzLnhyZWYpOwogICAgfSwKICAgIGdldCBudW1QYWdlcygpIHsKICAgICAgdmFyIGxpbmVhcml6YXRpb24gPSB0aGlzLmxpbmVhcml6YXRpb247CiAgICAgIHZhciBudW0gPSBsaW5lYXJpemF0aW9uID8gbGluZWFyaXphdGlvbi5udW1QYWdlcyA6IHRoaXMuY2F0YWxvZy5udW1QYWdlczsKICAgICAgLy8gc2hhZG93IHRoZSBwcm90b3R5cGUgZ2V0dGVyCiAgICAgIHJldHVybiBzaGFkb3codGhpcywgJ251bVBhZ2VzJywgbnVtKTsKICAgIH0sCiAgICBnZXQgZG9jdW1lbnRJbmZvKCkgewogICAgICB2YXIgZG9jSW5mbyA9IHsKICAgICAgICBQREZGb3JtYXRWZXJzaW9uOiB0aGlzLnBkZkZvcm1hdFZlcnNpb24sCiAgICAgICAgSXNBY3JvRm9ybVByZXNlbnQ6ICEhdGhpcy5hY3JvRm9ybSwKICAgICAgICBJc1hGQVByZXNlbnQ6ICEhdGhpcy54ZmEKICAgICAgfTsKICAgICAgdmFyIGluZm9EaWN0OwogICAgICB0cnkgewogICAgICAgIGluZm9EaWN0ID0gdGhpcy54cmVmLnRyYWlsZXIuZ2V0KCdJbmZvJyk7CiAgICAgIH0gY2F0Y2ggKGVycikgewogICAgICAgIGluZm8oJ1RoZSBkb2N1bWVudCBpbmZvcm1hdGlvbiBkaWN0aW9uYXJ5IGlzIGludmFsaWQuJyk7CiAgICAgIH0KICAgICAgaWYgKGluZm9EaWN0KSB7CiAgICAgICAgdmFyIHZhbGlkRW50cmllcyA9IERvY3VtZW50SW5mb1ZhbGlkYXRvcnMuZW50cmllczsKICAgICAgICAvLyBPbmx5IGZpbGwgdGhlIGRvY3VtZW50IGluZm8gd2l0aCB2YWxpZCBlbnRyaWVzIGZyb20gdGhlIHNwZWMuCiAgICAgICAgZm9yICh2YXIga2V5IGluIHZhbGlkRW50cmllcykgewogICAgICAgICAgaWYgKGluZm9EaWN0LmhhcyhrZXkpKSB7CiAgICAgICAgICAgIHZhciB2YWx1ZSA9IGluZm9EaWN0LmdldChrZXkpOwogICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIHZhbHVlIGNvbmZvcm1zIHRvIHRoZSBzcGVjLgogICAgICAgICAgICBpZiAodmFsaWRFbnRyaWVzW2tleV0odmFsdWUpKSB7CiAgICAgICAgICAgICAgZG9jSW5mb1trZXldID0gKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycgPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA6IHN0cmluZ1RvUERGU3RyaW5nKHZhbHVlKSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgaW5mbygnQmFkIHZhbHVlIGluIGRvY3VtZW50IGluZm8gZm9yICInICsga2V5ICsgJyInKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gc2hhZG93KHRoaXMsICdkb2N1bWVudEluZm8nLCBkb2NJbmZvKTsKICAgIH0sCiAgICBnZXQgZmluZ2VycHJpbnQoKSB7CiAgICAgIHZhciB4cmVmID0gdGhpcy54cmVmLCBpZEFycmF5LCBoYXNoLCBmaWxlSUQgPSAnJzsKCiAgICAgIGlmICh4cmVmLnRyYWlsZXIuaGFzKCdJRCcpKSB7CiAgICAgICAgaWRBcnJheSA9IHhyZWYudHJhaWxlci5nZXQoJ0lEJyk7CiAgICAgIH0KICAgICAgaWYgKGlkQXJyYXkgJiYgaXNBcnJheShpZEFycmF5KSAmJiBpZEFycmF5WzBdICE9PSBFTVBUWV9GSU5HRVJQUklOVCkgewogICAgICAgIGhhc2ggPSBzdHJpbmdUb0J5dGVzKGlkQXJyYXlbMF0pOwogICAgICB9IGVsc2UgewogICAgICAgIGlmICh0aGlzLnN0cmVhbS5lbnN1cmVSYW5nZSkgewogICAgICAgICAgdGhpcy5zdHJlYW0uZW5zdXJlUmFuZ2UoMCwKICAgICAgICAgICAgTWF0aC5taW4oRklOR0VSUFJJTlRfRklSU1RfQllURVMsIHRoaXMuc3RyZWFtLmVuZCkpOwogICAgICAgIH0KICAgICAgICBoYXNoID0gY2FsY3VsYXRlTUQ1KHRoaXMuc3RyZWFtLmJ5dGVzLnN1YmFycmF5KDAsCiAgICAgICAgICBGSU5HRVJQUklOVF9GSVJTVF9CWVRFUyksIDAsIEZJTkdFUlBSSU5UX0ZJUlNUX0JZVEVTKTsKICAgICAgfQoKICAgICAgZm9yICh2YXIgaSA9IDAsIG4gPSBoYXNoLmxlbmd0aDsgaSA8IG47IGkrKykgewogICAgICAgIHZhciBoZXggPSBoYXNoW2ldLnRvU3RyaW5nKDE2KTsKICAgICAgICBmaWxlSUQgKz0gaGV4Lmxlbmd0aCA9PT0gMSA/ICcwJyArIGhleCA6IGhleDsKICAgICAgfQoKICAgICAgcmV0dXJuIHNoYWRvdyh0aGlzLCAnZmluZ2VycHJpbnQnLCBmaWxlSUQpOwogICAgfSwKCiAgICBnZXRQYWdlOiBmdW5jdGlvbiBQREZEb2N1bWVudF9nZXRQYWdlKHBhZ2VJbmRleCkgewogICAgICByZXR1cm4gdGhpcy5jYXRhbG9nLmdldFBhZ2UocGFnZUluZGV4KTsKICAgIH0sCgogICAgY2xlYW51cDogZnVuY3Rpb24gUERGRG9jdW1lbnRfY2xlYW51cCgpIHsKICAgICAgcmV0dXJuIHRoaXMuY2F0YWxvZy5jbGVhbnVwKCk7CiAgICB9CiAgfTsKCiAgcmV0dXJuIFBERkRvY3VtZW50Owp9KSgpOwoKCnZhciBOYW1lID0gKGZ1bmN0aW9uIE5hbWVDbG9zdXJlKCkgewogIGZ1bmN0aW9uIE5hbWUobmFtZSkgewogICAgdGhpcy5uYW1lID0gbmFtZTsKICB9CgogIE5hbWUucHJvdG90eXBlID0ge307CgogIHZhciBuYW1lQ2FjaGUgPSB7fTsKCiAgTmFtZS5nZXQgPSBmdW5jdGlvbiBOYW1lX2dldChuYW1lKSB7CiAgICB2YXIgbmFtZVZhbHVlID0gbmFtZUNhY2hlW25hbWVdOwogICAgcmV0dXJuIChuYW1lVmFsdWUgPyBuYW1lVmFsdWUgOiAobmFtZUNhY2hlW25hbWVdID0gbmV3IE5hbWUobmFtZSkpKTsKICB9OwoKICByZXR1cm4gTmFtZTsKfSkoKTsKCnZhciBDbWQgPSAoZnVuY3Rpb24gQ21kQ2xvc3VyZSgpIHsKICBmdW5jdGlvbiBDbWQoY21kKSB7CiAgICB0aGlzLmNtZCA9IGNtZDsKICB9CgogIENtZC5wcm90b3R5cGUgPSB7fTsKCiAgdmFyIGNtZENhY2hlID0ge307CgogIENtZC5nZXQgPSBmdW5jdGlvbiBDbWRfZ2V0KGNtZCkgewogICAgdmFyIGNtZFZhbHVlID0gY21kQ2FjaGVbY21kXTsKICAgIHJldHVybiAoY21kVmFsdWUgPyBjbWRWYWx1ZSA6IChjbWRDYWNoZVtjbWRdID0gbmV3IENtZChjbWQpKSk7CiAgfTsKCiAgcmV0dXJuIENtZDsKfSkoKTsKCnZhciBEaWN0ID0gKGZ1bmN0aW9uIERpY3RDbG9zdXJlKCkgewogIHZhciBub25TZXJpYWxpemFibGUgPSBmdW5jdGlvbiBub25TZXJpYWxpemFibGVDbG9zdXJlKCkgewogICAgcmV0dXJuIG5vblNlcmlhbGl6YWJsZTsgLy8gY3JlYXRpbmcgY2xvc3VyZSBvbiBzb21lIHZhcmlhYmxlCiAgfTsKCiAgdmFyIEdFVEFMTF9ESUNUSU9OQVJZX1RZUEVTX1dISVRFTElTVCA9IHsKICAgICdCYWNrZ3JvdW5kJzogdHJ1ZSwKICAgICdFeHRHU3RhdGUnOiB0cnVlLAogICAgJ0hhbGZ0b25lJzogdHJ1ZSwKICAgICdMYXlvdXQnOiB0cnVlLAogICAgJ01hc2snOiB0cnVlLAogICAgJ1BhZ2luYXRpb24nOiB0cnVlLAogICAgJ1ByaW50aW5nJzogdHJ1ZQogIH07CgogIGZ1bmN0aW9uIGlzUmVjdXJzaW9uQWxsb3dlZEZvcihkaWN0KSB7CiAgICBpZiAoIWlzTmFtZShkaWN0LlR5cGUpKSB7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQogICAgdmFyIGRpY3RUeXBlID0gZGljdC5UeXBlLm5hbWU7CiAgICByZXR1cm4gR0VUQUxMX0RJQ1RJT05BUllfVFlQRVNfV0hJVEVMSVNUW2RpY3RUeXBlXSA9PT0gdHJ1ZTsKICB9CgogIC8vIHhyZWYgaXMgb3B0aW9uYWwKICBmdW5jdGlvbiBEaWN0KHhyZWYpIHsKICAgIC8vIE1hcCBzaG91bGQgb25seSBiZSB1c2VkIGludGVybmFsbHksIHVzZSBmdW5jdGlvbnMgYmVsb3cgdG8gYWNjZXNzLgogICAgdGhpcy5tYXAgPSBPYmplY3QuY3JlYXRlKG51bGwpOwogICAgdGhpcy54cmVmID0geHJlZjsKICAgIHRoaXMub2JqSWQgPSBudWxsOwogICAgdGhpcy5fX25vblNlcmlhbGl6YWJsZV9fID0gbm9uU2VyaWFsaXphYmxlOyAvLyBkaXNhYmxlIGNsb25pbmcgb2YgdGhlIERpY3QKICB9CgogIERpY3QucHJvdG90eXBlID0gewogICAgYXNzaWduWHJlZjogZnVuY3Rpb24gRGljdF9hc3NpZ25YcmVmKG5ld1hyZWYpIHsKICAgICAgdGhpcy54cmVmID0gbmV3WHJlZjsKICAgIH0sCgogICAgLy8gYXV0b21hdGljYWxseSBkZXJlZmVyZW5jZXMgUmVmIG9iamVjdHMKICAgIGdldDogZnVuY3Rpb24gRGljdF9nZXQoa2V5MSwga2V5Miwga2V5MykgewogICAgICB2YXIgdmFsdWU7CiAgICAgIHZhciB4cmVmID0gdGhpcy54cmVmOwogICAgICBpZiAodHlwZW9mICh2YWx1ZSA9IHRoaXMubWFwW2tleTFdKSAhPT0gJ3VuZGVmaW5lZCcgfHwga2V5MSBpbiB0aGlzLm1hcCB8fAogICAgICAgICAgdHlwZW9mIGtleTIgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgcmV0dXJuIHhyZWYgPyB4cmVmLmZldGNoSWZSZWYodmFsdWUpIDogdmFsdWU7CiAgICAgIH0KICAgICAgaWYgKHR5cGVvZiAodmFsdWUgPSB0aGlzLm1hcFtrZXkyXSkgIT09ICd1bmRlZmluZWQnIHx8IGtleTIgaW4gdGhpcy5tYXAgfHwKICAgICAgICAgIHR5cGVvZiBrZXkzID09PSAndW5kZWZpbmVkJykgewogICAgICAgIHJldHVybiB4cmVmID8geHJlZi5mZXRjaElmUmVmKHZhbHVlKSA6IHZhbHVlOwogICAgICB9CiAgICAgIHZhbHVlID0gdGhpcy5tYXBba2V5M10gfHwgbnVsbDsKICAgICAgcmV0dXJuIHhyZWYgPyB4cmVmLmZldGNoSWZSZWYodmFsdWUpIDogdmFsdWU7CiAgICB9LAoKICAgIC8vIFNhbWUgYXMgZ2V0KCksIGJ1dCByZXR1cm5zIGEgcHJvbWlzZSBhbmQgdXNlcyBmZXRjaElmUmVmQXN5bmMoKS4KICAgIGdldEFzeW5jOiBmdW5jdGlvbiBEaWN0X2dldEFzeW5jKGtleTEsIGtleTIsIGtleTMpIHsKICAgICAgdmFyIHZhbHVlOwogICAgICB2YXIgeHJlZiA9IHRoaXMueHJlZjsKICAgICAgaWYgKHR5cGVvZiAodmFsdWUgPSB0aGlzLm1hcFtrZXkxXSkgIT09ICd1bmRlZmluZWQnIHx8IGtleTEgaW4gdGhpcy5tYXAgfHwKICAgICAgICAgIHR5cGVvZiBrZXkyID09PSAndW5kZWZpbmVkJykgewogICAgICAgIGlmICh4cmVmKSB7CiAgICAgICAgICByZXR1cm4geHJlZi5mZXRjaElmUmVmQXN5bmModmFsdWUpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHZhbHVlKTsKICAgICAgfQogICAgICBpZiAodHlwZW9mICh2YWx1ZSA9IHRoaXMubWFwW2tleTJdKSAhPT0gJ3VuZGVmaW5lZCcgfHwga2V5MiBpbiB0aGlzLm1hcCB8fAogICAgICAgICAgdHlwZW9mIGtleTMgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgaWYgKHhyZWYpIHsKICAgICAgICAgIHJldHVybiB4cmVmLmZldGNoSWZSZWZBc3luYyh2YWx1ZSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodmFsdWUpOwogICAgICB9CiAgICAgIHZhbHVlID0gdGhpcy5tYXBba2V5M10gfHwgbnVsbDsKICAgICAgaWYgKHhyZWYpIHsKICAgICAgICByZXR1cm4geHJlZi5mZXRjaElmUmVmQXN5bmModmFsdWUpOwogICAgICB9CiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodmFsdWUpOwogICAgfSwKCiAgICAvLyBubyBkZXJlZmVyZW5jaW5nCiAgICBnZXRSYXc6IGZ1bmN0aW9uIERpY3RfZ2V0UmF3KGtleSkgewogICAgICByZXR1cm4gdGhpcy5tYXBba2V5XTsKICAgIH0sCgogICAgLy8gY3JlYXRlcyBuZXcgbWFwIGFuZCBkZXJlZmVyZW5jZXMgYWxsIFJlZnMKICAgIGdldEFsbDogZnVuY3Rpb24gRGljdF9nZXRBbGwoKSB7CiAgICAgIHZhciBhbGwgPSBPYmplY3QuY3JlYXRlKG51bGwpOwogICAgICB2YXIgcXVldWUgPSBudWxsOwogICAgICB2YXIga2V5LCBvYmo7CiAgICAgIGZvciAoa2V5IGluIHRoaXMubWFwKSB7CiAgICAgICAgb2JqID0gdGhpcy5nZXQoa2V5KTsKICAgICAgICBpZiAob2JqIGluc3RhbmNlb2YgRGljdCkgewogICAgICAgICAgaWYgKGlzUmVjdXJzaW9uQWxsb3dlZEZvcihvYmopKSB7CiAgICAgICAgICAgIChxdWV1ZSB8fCAocXVldWUgPSBbXSkpLnB1c2goe3RhcmdldDogYWxsLCBrZXk6IGtleSwgb2JqOiBvYmp9KTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGFsbFtrZXldID0gdGhpcy5nZXRSYXcoa2V5KTsKICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgYWxsW2tleV0gPSBvYmo7CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmICghcXVldWUpIHsKICAgICAgICByZXR1cm4gYWxsOwogICAgICB9CgogICAgICAvLyB0cnlpbmcgdG8gdGFrZSBjeWNsaWMgcmVmZXJlbmNlcyBpbnRvIHRoZSBhY2NvdW50CiAgICAgIHZhciBwcm9jZXNzZWQgPSBPYmplY3QuY3JlYXRlKG51bGwpOwogICAgICB3aGlsZSAocXVldWUubGVuZ3RoID4gMCkgewogICAgICAgIHZhciBpdGVtID0gcXVldWUuc2hpZnQoKTsKICAgICAgICB2YXIgaXRlbU9iaiA9IGl0ZW0ub2JqOwogICAgICAgIHZhciBvYmpJZCA9IGl0ZW1PYmoub2JqSWQ7CiAgICAgICAgaWYgKG9iaklkICYmIG9iaklkIGluIHByb2Nlc3NlZCkgewogICAgICAgICAgaXRlbS50YXJnZXRbaXRlbS5rZXldID0gcHJvY2Vzc2VkW29iaklkXTsKICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgICAgICB2YXIgZGVyZWZlcmVuY2VkID0gT2JqZWN0LmNyZWF0ZShudWxsKTsKICAgICAgICBmb3IgKGtleSBpbiBpdGVtT2JqLm1hcCkgewogICAgICAgICAgb2JqID0gaXRlbU9iai5nZXQoa2V5KTsKICAgICAgICAgIGlmIChvYmogaW5zdGFuY2VvZiBEaWN0KSB7CiAgICAgICAgICAgIGlmIChpc1JlY3Vyc2lvbkFsbG93ZWRGb3Iob2JqKSkgewogICAgICAgICAgICAgIHF1ZXVlLnB1c2goe3RhcmdldDogZGVyZWZlcmVuY2VkLCBrZXk6IGtleSwgb2JqOiBvYmp9KTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBkZXJlZmVyZW5jZWRba2V5XSA9IGl0ZW1PYmouZ2V0UmF3KGtleSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGRlcmVmZXJlbmNlZFtrZXldID0gb2JqOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAob2JqSWQpIHsKICAgICAgICAgIHByb2Nlc3NlZFtvYmpJZF0gPSBkZXJlZmVyZW5jZWQ7CiAgICAgICAgfQogICAgICAgIGl0ZW0udGFyZ2V0W2l0ZW0ua2V5XSA9IGRlcmVmZXJlbmNlZDsKICAgICAgfQogICAgICByZXR1cm4gYWxsOwogICAgfSwKCiAgICBnZXRLZXlzOiBmdW5jdGlvbiBEaWN0X2dldEtleXMoKSB7CiAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLm1hcCk7CiAgICB9LAoKICAgIHNldDogZnVuY3Rpb24gRGljdF9zZXQoa2V5LCB2YWx1ZSkgewogICAgICB0aGlzLm1hcFtrZXldID0gdmFsdWU7CiAgICB9LAoKICAgIGhhczogZnVuY3Rpb24gRGljdF9oYXMoa2V5KSB7CiAgICAgIHJldHVybiBrZXkgaW4gdGhpcy5tYXA7CiAgICB9LAoKICAgIGZvckVhY2g6IGZ1bmN0aW9uIERpY3RfZm9yRWFjaChjYWxsYmFjaykgewogICAgICBmb3IgKHZhciBrZXkgaW4gdGhpcy5tYXApIHsKICAgICAgICBjYWxsYmFjayhrZXksIHRoaXMuZ2V0KGtleSkpOwogICAgICB9CiAgICB9CiAgfTsKCiAgRGljdC5lbXB0eSA9IG5ldyBEaWN0KG51bGwpOwoKICByZXR1cm4gRGljdDsKfSkoKTsKCnZhciBSZWYgPSAoZnVuY3Rpb24gUmVmQ2xvc3VyZSgpIHsKICBmdW5jdGlvbiBSZWYobnVtLCBnZW4pIHsKICAgIHRoaXMubnVtID0gbnVtOwogICAgdGhpcy5nZW4gPSBnZW47CiAgfQoKICBSZWYucHJvdG90eXBlID0gewogICAgdG9TdHJpbmc6IGZ1bmN0aW9uIFJlZl90b1N0cmluZygpIHsKICAgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBob3QsIHNvIHdlIG1ha2UgdGhlIHN0cmluZyBhcyBjb21wYWN0IGFzIHBvc3NpYmxlLgogICAgICAvLyB8dGhpcy5nZW58IGlzIGFsbW9zdCBhbHdheXMgemVybywgc28gd2UgdHJlYXQgdGhhdCBjYXNlIHNwZWNpYWxseS4KICAgICAgdmFyIHN0ciA9IHRoaXMubnVtICsgJ1InOwogICAgICBpZiAodGhpcy5nZW4gIT09IDApIHsKICAgICAgICBzdHIgKz0gdGhpcy5nZW47CiAgICAgIH0KICAgICAgcmV0dXJuIHN0cjsKICAgIH0KICB9OwoKICByZXR1cm4gUmVmOwp9KSgpOwoKLy8gVGhlIHJlZmVyZW5jZSBpcyBpZGVudGlmaWVkIGJ5IG51bWJlciBhbmQgZ2VuZXJhdGlvbi4KLy8gVGhpcyBzdHJ1Y3R1cmUgc3RvcmVzIG9ubHkgb25lIGluc3RhbmNlIG9mIHRoZSByZWZlcmVuY2UuCnZhciBSZWZTZXQgPSAoZnVuY3Rpb24gUmVmU2V0Q2xvc3VyZSgpIHsKICBmdW5jdGlvbiBSZWZTZXQoKSB7CiAgICB0aGlzLmRpY3QgPSB7fTsKICB9CgogIFJlZlNldC5wcm90b3R5cGUgPSB7CiAgICBoYXM6IGZ1bmN0aW9uIFJlZlNldF9oYXMocmVmKSB7CiAgICAgIHJldHVybiByZWYudG9TdHJpbmcoKSBpbiB0aGlzLmRpY3Q7CiAgICB9LAoKICAgIHB1dDogZnVuY3Rpb24gUmVmU2V0X3B1dChyZWYpIHsKICAgICAgdGhpcy5kaWN0W3JlZi50b1N0cmluZygpXSA9IHRydWU7CiAgICB9LAoKICAgIHJlbW92ZTogZnVuY3Rpb24gUmVmU2V0X3JlbW92ZShyZWYpIHsKICAgICAgZGVsZXRlIHRoaXMuZGljdFtyZWYudG9TdHJpbmcoKV07CiAgICB9CiAgfTsKCiAgcmV0dXJuIFJlZlNldDsKfSkoKTsKCnZhciBSZWZTZXRDYWNoZSA9IChmdW5jdGlvbiBSZWZTZXRDYWNoZUNsb3N1cmUoKSB7CiAgZnVuY3Rpb24gUmVmU2V0Q2FjaGUoKSB7CiAgICB0aGlzLmRpY3QgPSBPYmplY3QuY3JlYXRlKG51bGwpOwogIH0KCiAgUmVmU2V0Q2FjaGUucHJvdG90eXBlID0gewogICAgZ2V0OiBmdW5jdGlvbiBSZWZTZXRDYWNoZV9nZXQocmVmKSB7CiAgICAgIHJldHVybiB0aGlzLmRpY3RbcmVmLnRvU3RyaW5nKCldOwogICAgfSwKCiAgICBoYXM6IGZ1bmN0aW9uIFJlZlNldENhY2hlX2hhcyhyZWYpIHsKICAgICAgcmV0dXJuIHJlZi50b1N0cmluZygpIGluIHRoaXMuZGljdDsKICAgIH0sCgogICAgcHV0OiBmdW5jdGlvbiBSZWZTZXRDYWNoZV9wdXQocmVmLCBvYmopIHsKICAgICAgdGhpcy5kaWN0W3JlZi50b1N0cmluZygpXSA9IG9iajsKICAgIH0sCgogICAgcHV0QWxpYXM6IGZ1bmN0aW9uIFJlZlNldENhY2hlX3B1dEFsaWFzKHJlZiwgYWxpYXNSZWYpIHsKICAgICAgdGhpcy5kaWN0W3JlZi50b1N0cmluZygpXSA9IHRoaXMuZ2V0KGFsaWFzUmVmKTsKICAgIH0sCgogICAgZm9yRWFjaDogZnVuY3Rpb24gUmVmU2V0Q2FjaGVfZm9yRWFjaChmbiwgdGhpc0FyZykgewogICAgICBmb3IgKHZhciBpIGluIHRoaXMuZGljdCkgewogICAgICAgIGZuLmNhbGwodGhpc0FyZywgdGhpcy5kaWN0W2ldKTsKICAgICAgfQogICAgfSwKCiAgICBjbGVhcjogZnVuY3Rpb24gUmVmU2V0Q2FjaGVfY2xlYXIoKSB7CiAgICAgIHRoaXMuZGljdCA9IE9iamVjdC5jcmVhdGUobnVsbCk7CiAgICB9CiAgfTsKCiAgcmV0dXJuIFJlZlNldENhY2hlOwp9KSgpOwoKdmFyIENhdGFsb2cgPSAoZnVuY3Rpb24gQ2F0YWxvZ0Nsb3N1cmUoKSB7CiAgZnVuY3Rpb24gQ2F0YWxvZyhwZGZNYW5hZ2VyLCB4cmVmKSB7CiAgICB0aGlzLnBkZk1hbmFnZXIgPSBwZGZNYW5hZ2VyOwogICAgdGhpcy54cmVmID0geHJlZjsKICAgIHRoaXMuY2F0RGljdCA9IHhyZWYuZ2V0Q2F0YWxvZ09iaigpOwogICAgdGhpcy5mb250Q2FjaGUgPSBuZXcgUmVmU2V0Q2FjaGUoKTsKICAgIGFzc2VydChpc0RpY3QodGhpcy5jYXREaWN0KSwKICAgICAgJ2NhdGFsb2cgb2JqZWN0IGlzIG5vdCBhIGRpY3Rpb25hcnknKTsKCiAgICB0aGlzLnBhZ2VQcm9taXNlcyA9IFtdOwogIH0KCiAgQ2F0YWxvZy5wcm90b3R5cGUgPSB7CiAgICBnZXQgbWV0YWRhdGEoKSB7CiAgICAgIHZhciBzdHJlYW1SZWYgPSB0aGlzLmNhdERpY3QuZ2V0UmF3KCdNZXRhZGF0YScpOwogICAgICBpZiAoIWlzUmVmKHN0cmVhbVJlZikpIHsKICAgICAgICByZXR1cm4gc2hhZG93KHRoaXMsICdtZXRhZGF0YScsIG51bGwpOwogICAgICB9CgogICAgICB2YXIgZW5jcnlwdE1ldGFkYXRhID0gKCF0aGlzLnhyZWYuZW5jcnlwdCA/IGZhbHNlIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnhyZWYuZW5jcnlwdC5lbmNyeXB0TWV0YWRhdGEpOwoKICAgICAgdmFyIHN0cmVhbSA9IHRoaXMueHJlZi5mZXRjaChzdHJlYW1SZWYsICFlbmNyeXB0TWV0YWRhdGEpOwogICAgICB2YXIgbWV0YWRhdGE7CiAgICAgIGlmIChzdHJlYW0gJiYgaXNEaWN0KHN0cmVhbS5kaWN0KSkgewogICAgICAgIHZhciB0eXBlID0gc3RyZWFtLmRpY3QuZ2V0KCdUeXBlJyk7CiAgICAgICAgdmFyIHN1YnR5cGUgPSBzdHJlYW0uZGljdC5nZXQoJ1N1YnR5cGUnKTsKCiAgICAgICAgaWYgKGlzTmFtZSh0eXBlKSAmJiBpc05hbWUoc3VidHlwZSkgJiYKICAgICAgICAgICAgdHlwZS5uYW1lID09PSAnTWV0YWRhdGEnICYmIHN1YnR5cGUubmFtZSA9PT0gJ1hNTCcpIHsKICAgICAgICAgIC8vIFhYWDogVGhpcyBzaG91bGQgZXhhbWluZSB0aGUgY2hhcnNldCB0aGUgWE1MIGRvY3VtZW50IGRlZmluZXMsCiAgICAgICAgICAvLyBob3dldmVyIHNpbmNlIHRoZXJlIGFyZSBjdXJyZW50bHkgbm8gcmVhbCBtZWFucyB0byBkZWNvZGUKICAgICAgICAgIC8vIGFyYml0cmFyeSBjaGFyc2V0cywgbGV0J3MganVzdCBob3BlIHRoYXQgdGhlIGF1dGhvciBvZiB0aGUgUERGCiAgICAgICAgICAvLyB3YXMgcmVhc29uYWJsZSBlbm91Z2ggdG8gc3RpY2sgd2l0aCB0aGUgWE1MIGRlZmF1bHQgY2hhcnNldCwKICAgICAgICAgIC8vIHdoaWNoIGlzIFVURi04LgogICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgbWV0YWRhdGEgPSBzdHJpbmdUb1VURjhTdHJpbmcoYnl0ZXNUb1N0cmluZyhzdHJlYW0uZ2V0Qnl0ZXMoKSkpOwogICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICBpbmZvKCdTa2lwcGluZyBpbnZhbGlkIG1ldGFkYXRhLicpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQoKICAgICAgcmV0dXJuIHNoYWRvdyh0aGlzLCAnbWV0YWRhdGEnLCBtZXRhZGF0YSk7CiAgICB9LAogICAgZ2V0IHRvcGxldmVsUGFnZXNEaWN0KCkgewogICAgICB2YXIgcGFnZXNPYmogPSB0aGlzLmNhdERpY3QuZ2V0KCdQYWdlcycpOwogICAgICBhc3NlcnQoaXNEaWN0KHBhZ2VzT2JqKSwgJ2ludmFsaWQgdG9wLWxldmVsIHBhZ2VzIGRpY3Rpb25hcnknKTsKICAgICAgLy8gc2hhZG93IHRoZSBwcm90b3R5cGUgZ2V0dGVyCiAgICAgIHJldHVybiBzaGFkb3codGhpcywgJ3RvcGxldmVsUGFnZXNEaWN0JywgcGFnZXNPYmopOwogICAgfSwKICAgIGdldCBkb2N1bWVudE91dGxpbmUoKSB7CiAgICAgIHZhciBvYmogPSBudWxsOwogICAgICB0cnkgewogICAgICAgIG9iaiA9IHRoaXMucmVhZERvY3VtZW50T3V0bGluZSgpOwogICAgICB9IGNhdGNoIChleCkgewogICAgICAgIGlmIChleCBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKSB7CiAgICAgICAgICB0aHJvdyBleDsKICAgICAgICB9CiAgICAgICAgd2FybignVW5hYmxlIHRvIHJlYWQgZG9jdW1lbnQgb3V0bGluZScpOwogICAgICB9CiAgICAgIHJldHVybiBzaGFkb3codGhpcywgJ2RvY3VtZW50T3V0bGluZScsIG9iaik7CiAgICB9LAogICAgcmVhZERvY3VtZW50T3V0bGluZTogZnVuY3Rpb24gQ2F0YWxvZ19yZWFkRG9jdW1lbnRPdXRsaW5lKCkgewogICAgICB2YXIgeHJlZiA9IHRoaXMueHJlZjsKICAgICAgdmFyIG9iaiA9IHRoaXMuY2F0RGljdC5nZXQoJ091dGxpbmVzJyk7CiAgICAgIHZhciByb290ID0geyBpdGVtczogW10gfTsKICAgICAgaWYgKGlzRGljdChvYmopKSB7CiAgICAgICAgb2JqID0gb2JqLmdldFJhdygnRmlyc3QnKTsKICAgICAgICB2YXIgcHJvY2Vzc2VkID0gbmV3IFJlZlNldCgpOwogICAgICAgIGlmIChpc1JlZihvYmopKSB7CiAgICAgICAgICB2YXIgcXVldWUgPSBbe29iajogb2JqLCBwYXJlbnQ6IHJvb3R9XTsKICAgICAgICAgIC8vIHRvIGF2b2lkIHJlY3Vyc2lvbiBrZWVwaW5nIHRyYWNrIG9mIHRoZSBpdGVtcwogICAgICAgICAgLy8gaW4gdGhlIHByb2Nlc3NlZCBkaWN0aW9uYXJ5CiAgICAgICAgICBwcm9jZXNzZWQucHV0KG9iaik7CiAgICAgICAgICB3aGlsZSAocXVldWUubGVuZ3RoID4gMCkgewogICAgICAgICAgICB2YXIgaSA9IHF1ZXVlLnNoaWZ0KCk7CiAgICAgICAgICAgIHZhciBvdXRsaW5lRGljdCA9IHhyZWYuZmV0Y2hJZlJlZihpLm9iaik7CiAgICAgICAgICAgIGlmIChvdXRsaW5lRGljdCA9PT0gbnVsbCkgewogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghb3V0bGluZURpY3QuaGFzKCdUaXRsZScpKSB7CiAgICAgICAgICAgICAgZXJyb3IoJ0ludmFsaWQgb3V0bGluZSBpdGVtJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIGRlc3QgPSBvdXRsaW5lRGljdC5nZXQoJ0EnKTsKICAgICAgICAgICAgaWYgKGRlc3QpIHsKICAgICAgICAgICAgICBkZXN0ID0gZGVzdC5nZXQoJ0QnKTsKICAgICAgICAgICAgfSBlbHNlIGlmIChvdXRsaW5lRGljdC5oYXMoJ0Rlc3QnKSkgewogICAgICAgICAgICAgIGRlc3QgPSBvdXRsaW5lRGljdC5nZXRSYXcoJ0Rlc3QnKTsKICAgICAgICAgICAgICBpZiAoaXNOYW1lKGRlc3QpKSB7CiAgICAgICAgICAgICAgICBkZXN0ID0gZGVzdC5uYW1lOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgdGl0bGUgPSBvdXRsaW5lRGljdC5nZXQoJ1RpdGxlJyk7CiAgICAgICAgICAgIHZhciBvdXRsaW5lSXRlbSA9IHsKICAgICAgICAgICAgICBkZXN0OiBkZXN0LAogICAgICAgICAgICAgIHRpdGxlOiBzdHJpbmdUb1BERlN0cmluZyh0aXRsZSksCiAgICAgICAgICAgICAgY29sb3I6IG91dGxpbmVEaWN0LmdldCgnQycpIHx8IFswLCAwLCAwXSwKICAgICAgICAgICAgICBjb3VudDogb3V0bGluZURpY3QuZ2V0KCdDb3VudCcpLAogICAgICAgICAgICAgIGJvbGQ6ICEhKG91dGxpbmVEaWN0LmdldCgnRicpICYgMiksCiAgICAgICAgICAgICAgaXRhbGljOiAhIShvdXRsaW5lRGljdC5nZXQoJ0YnKSAmIDEpLAogICAgICAgICAgICAgIGl0ZW1zOiBbXQogICAgICAgICAgICB9OwogICAgICAgICAgICBpLnBhcmVudC5pdGVtcy5wdXNoKG91dGxpbmVJdGVtKTsKICAgICAgICAgICAgb2JqID0gb3V0bGluZURpY3QuZ2V0UmF3KCdGaXJzdCcpOwogICAgICAgICAgICBpZiAoaXNSZWYob2JqKSAmJiAhcHJvY2Vzc2VkLmhhcyhvYmopKSB7CiAgICAgICAgICAgICAgcXVldWUucHVzaCh7b2JqOiBvYmosIHBhcmVudDogb3V0bGluZUl0ZW19KTsKICAgICAgICAgICAgICBwcm9jZXNzZWQucHV0KG9iaik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgb2JqID0gb3V0bGluZURpY3QuZ2V0UmF3KCdOZXh0Jyk7CiAgICAgICAgICAgIGlmIChpc1JlZihvYmopICYmICFwcm9jZXNzZWQuaGFzKG9iaikpIHsKICAgICAgICAgICAgICBxdWV1ZS5wdXNoKHtvYmo6IG9iaiwgcGFyZW50OiBpLnBhcmVudH0pOwogICAgICAgICAgICAgIHByb2Nlc3NlZC5wdXQob2JqKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gKHJvb3QuaXRlbXMubGVuZ3RoID4gMCA/IHJvb3QuaXRlbXMgOiBudWxsKTsKICAgIH0sCiAgICBnZXQgbnVtUGFnZXMoKSB7CiAgICAgIHZhciBvYmogPSB0aGlzLnRvcGxldmVsUGFnZXNEaWN0LmdldCgnQ291bnQnKTsKICAgICAgYXNzZXJ0KAogICAgICAgIGlzSW50KG9iaiksCiAgICAgICAgJ3BhZ2UgY291bnQgaW4gdG9wIGxldmVsIHBhZ2VzIG9iamVjdCBpcyBub3QgYW4gaW50ZWdlcicKICAgICAgKTsKICAgICAgLy8gc2hhZG93IHRoZSBwcm90b3R5cGUgZ2V0dGVyCiAgICAgIHJldHVybiBzaGFkb3codGhpcywgJ251bScsIG9iaik7CiAgICB9LAogICAgZ2V0IGRlc3RpbmF0aW9ucygpIHsKICAgICAgZnVuY3Rpb24gZmV0Y2hEZXN0aW5hdGlvbihkZXN0KSB7CiAgICAgICAgcmV0dXJuIGlzRGljdChkZXN0KSA/IGRlc3QuZ2V0KCdEJykgOiBkZXN0OwogICAgICB9CgogICAgICB2YXIgeHJlZiA9IHRoaXMueHJlZjsKICAgICAgdmFyIGRlc3RzID0ge30sIG5hbWVUcmVlUmVmLCBuYW1lRGljdGlvbmFyeVJlZjsKICAgICAgdmFyIG9iaiA9IHRoaXMuY2F0RGljdC5nZXQoJ05hbWVzJyk7CiAgICAgIGlmIChvYmogJiYgb2JqLmhhcygnRGVzdHMnKSkgewogICAgICAgIG5hbWVUcmVlUmVmID0gb2JqLmdldFJhdygnRGVzdHMnKTsKICAgICAgfSBlbHNlIGlmICh0aGlzLmNhdERpY3QuaGFzKCdEZXN0cycpKSB7CiAgICAgICAgbmFtZURpY3Rpb25hcnlSZWYgPSB0aGlzLmNhdERpY3QuZ2V0KCdEZXN0cycpOwogICAgICB9CgogICAgICBpZiAobmFtZURpY3Rpb25hcnlSZWYpIHsKICAgICAgICAvLyByZWFkaW5nIHNpbXBsZSBkZXN0aW5hdGlvbiBkaWN0aW9uYXJ5CiAgICAgICAgb2JqID0gbmFtZURpY3Rpb25hcnlSZWY7CiAgICAgICAgb2JqLmZvckVhY2goZnVuY3Rpb24gY2F0YWxvZ0ZvckVhY2goa2V5LCB2YWx1ZSkgewogICAgICAgICAgaWYgKCF2YWx1ZSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9CiAgICAgICAgICBkZXN0c1trZXldID0gZmV0Y2hEZXN0aW5hdGlvbih2YWx1ZSk7CiAgICAgICAgfSk7CiAgICAgIH0KICAgICAgaWYgKG5hbWVUcmVlUmVmKSB7CiAgICAgICAgdmFyIG5hbWVUcmVlID0gbmV3IE5hbWVUcmVlKG5hbWVUcmVlUmVmLCB4cmVmKTsKICAgICAgICB2YXIgbmFtZXMgPSBuYW1lVHJlZS5nZXRBbGwoKTsKICAgICAgICBmb3IgKHZhciBuYW1lIGluIG5hbWVzKSB7CiAgICAgICAgICBpZiAoIW5hbWVzLmhhc093blByb3BlcnR5KG5hbWUpKSB7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgfQogICAgICAgICAgZGVzdHNbbmFtZV0gPSBmZXRjaERlc3RpbmF0aW9uKG5hbWVzW25hbWVdKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIHNoYWRvdyh0aGlzLCAnZGVzdGluYXRpb25zJywgZGVzdHMpOwogICAgfSwKICAgIGdldERlc3RpbmF0aW9uOiBmdW5jdGlvbiBDYXRhbG9nX2dldERlc3RpbmF0aW9uKGRlc3RpbmF0aW9uSWQpIHsKICAgICAgZnVuY3Rpb24gZmV0Y2hEZXN0aW5hdGlvbihkZXN0KSB7CiAgICAgICAgcmV0dXJuIGlzRGljdChkZXN0KSA/IGRlc3QuZ2V0KCdEJykgOiBkZXN0OwogICAgICB9CgogICAgICB2YXIgeHJlZiA9IHRoaXMueHJlZjsKICAgICAgdmFyIGRlc3QsIG5hbWVUcmVlUmVmLCBuYW1lRGljdGlvbmFyeVJlZjsKICAgICAgdmFyIG9iaiA9IHRoaXMuY2F0RGljdC5nZXQoJ05hbWVzJyk7CiAgICAgIGlmIChvYmogJiYgb2JqLmhhcygnRGVzdHMnKSkgewogICAgICAgIG5hbWVUcmVlUmVmID0gb2JqLmdldFJhdygnRGVzdHMnKTsKICAgICAgfSBlbHNlIGlmICh0aGlzLmNhdERpY3QuaGFzKCdEZXN0cycpKSB7CiAgICAgICAgbmFtZURpY3Rpb25hcnlSZWYgPSB0aGlzLmNhdERpY3QuZ2V0KCdEZXN0cycpOwogICAgICB9CgogICAgICBpZiAobmFtZURpY3Rpb25hcnlSZWYpIHsKICAgICAgICAvLyByZWFkaW5nIHNpbXBsZSBkZXN0aW5hdGlvbiBkaWN0aW9uYXJ5CiAgICAgICAgb2JqID0gbmFtZURpY3Rpb25hcnlSZWY7CiAgICAgICAgb2JqLmZvckVhY2goZnVuY3Rpb24gY2F0YWxvZ0ZvckVhY2goa2V5LCB2YWx1ZSkgewogICAgICAgICAgaWYgKCF2YWx1ZSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoa2V5ID09PSBkZXN0aW5hdGlvbklkKSB7CiAgICAgICAgICAgIGRlc3QgPSBmZXRjaERlc3RpbmF0aW9uKHZhbHVlKTsKICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgfQogICAgICBpZiAobmFtZVRyZWVSZWYpIHsKICAgICAgICB2YXIgbmFtZVRyZWUgPSBuZXcgTmFtZVRyZWUobmFtZVRyZWVSZWYsIHhyZWYpOwogICAgICAgIGRlc3QgPSBmZXRjaERlc3RpbmF0aW9uKG5hbWVUcmVlLmdldChkZXN0aW5hdGlvbklkKSk7CiAgICAgIH0KICAgICAgcmV0dXJuIGRlc3Q7CiAgICB9LAogICAgZ2V0IGF0dGFjaG1lbnRzKCkgewogICAgICB2YXIgeHJlZiA9IHRoaXMueHJlZjsKICAgICAgdmFyIGF0dGFjaG1lbnRzID0gbnVsbCwgbmFtZVRyZWVSZWY7CiAgICAgIHZhciBvYmogPSB0aGlzLmNhdERpY3QuZ2V0KCdOYW1lcycpOwogICAgICBpZiAob2JqKSB7CiAgICAgICAgbmFtZVRyZWVSZWYgPSBvYmouZ2V0UmF3KCdFbWJlZGRlZEZpbGVzJyk7CiAgICAgIH0KCiAgICAgIGlmIChuYW1lVHJlZVJlZikgewogICAgICAgIHZhciBuYW1lVHJlZSA9IG5ldyBOYW1lVHJlZShuYW1lVHJlZVJlZiwgeHJlZik7CiAgICAgICAgdmFyIG5hbWVzID0gbmFtZVRyZWUuZ2V0QWxsKCk7CiAgICAgICAgZm9yICh2YXIgbmFtZSBpbiBuYW1lcykgewogICAgICAgICAgaWYgKCFuYW1lcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkgewogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIH0KICAgICAgICAgIHZhciBmcyA9IG5ldyBGaWxlU3BlYyhuYW1lc1tuYW1lXSwgeHJlZik7CiAgICAgICAgICBpZiAoIWF0dGFjaG1lbnRzKSB7CiAgICAgICAgICAgIGF0dGFjaG1lbnRzID0ge307CiAgICAgICAgICB9CiAgICAgICAgICBhdHRhY2htZW50c1tzdHJpbmdUb1BERlN0cmluZyhuYW1lKV0gPSBmcy5zZXJpYWxpemFibGU7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiBzaGFkb3codGhpcywgJ2F0dGFjaG1lbnRzJywgYXR0YWNobWVudHMpOwogICAgfSwKICAgIGdldCBqYXZhU2NyaXB0KCkgewogICAgICB2YXIgeHJlZiA9IHRoaXMueHJlZjsKICAgICAgdmFyIG9iaiA9IHRoaXMuY2F0RGljdC5nZXQoJ05hbWVzJyk7CgogICAgICB2YXIgamF2YVNjcmlwdCA9IFtdOwogICAgICBpZiAob2JqICYmIG9iai5oYXMoJ0phdmFTY3JpcHQnKSkgewogICAgICAgIHZhciBuYW1lVHJlZSA9IG5ldyBOYW1lVHJlZShvYmouZ2V0UmF3KCdKYXZhU2NyaXB0JyksIHhyZWYpOwogICAgICAgIHZhciBuYW1lcyA9IG5hbWVUcmVlLmdldEFsbCgpOwogICAgICAgIGZvciAodmFyIG5hbWUgaW4gbmFtZXMpIHsKICAgICAgICAgIGlmICghbmFtZXMuaGFzT3duUHJvcGVydHkobmFtZSkpIHsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICB9CiAgICAgICAgICAvLyBXZSBkb24ndCByZWFsbHkgdXNlIHRoZSBKYXZhU2NyaXB0IHJpZ2h0IG5vdy4gVGhpcyBjb2RlIGlzCiAgICAgICAgICAvLyBkZWZlbnNpdmUgc28gd2UgZG9uJ3QgY2F1c2UgZXJyb3JzIG9uIGRvY3VtZW50IGxvYWQuCiAgICAgICAgICB2YXIganNEaWN0ID0gbmFtZXNbbmFtZV07CiAgICAgICAgICBpZiAoIWlzRGljdChqc0RpY3QpKSB7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgfQogICAgICAgICAgdmFyIHR5cGUgPSBqc0RpY3QuZ2V0KCdTJyk7CiAgICAgICAgICBpZiAoIWlzTmFtZSh0eXBlKSB8fCB0eXBlLm5hbWUgIT09ICdKYXZhU2NyaXB0JykgewogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIH0KICAgICAgICAgIHZhciBqcyA9IGpzRGljdC5nZXQoJ0pTJyk7CiAgICAgICAgICBpZiAoIWlzU3RyaW5nKGpzKSAmJiAhaXNTdHJlYW0oanMpKSB7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgfQogICAgICAgICAgaWYgKGlzU3RyZWFtKGpzKSkgewogICAgICAgICAgICBqcyA9IGJ5dGVzVG9TdHJpbmcoanMuZ2V0Qnl0ZXMoKSk7CiAgICAgICAgICB9CiAgICAgICAgICBqYXZhU2NyaXB0LnB1c2goc3RyaW5nVG9QREZTdHJpbmcoanMpKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIEFwcGVuZCBPcGVuQWN0aW9uIGFjdGlvbnMgdG8gamF2YVNjcmlwdCBhcnJheQogICAgICB2YXIgb3BlbmFjdGlvbkRpY3QgPSB0aGlzLmNhdERpY3QuZ2V0KCdPcGVuQWN0aW9uJyk7CiAgICAgIGlmIChpc0RpY3Qob3BlbmFjdGlvbkRpY3QpKSB7CiAgICAgICAgdmFyIG9ialR5cGUgPSBvcGVuYWN0aW9uRGljdC5nZXQoJ1R5cGUnKTsKICAgICAgICB2YXIgYWN0aW9uVHlwZSA9IG9wZW5hY3Rpb25EaWN0LmdldCgnUycpOwogICAgICAgIHZhciBhY3Rpb24gPSBvcGVuYWN0aW9uRGljdC5nZXQoJ04nKTsKICAgICAgICB2YXIgaXNQcmludEFjdGlvbiA9IChpc05hbWUob2JqVHlwZSkgJiYgb2JqVHlwZS5uYW1lID09PSAnQWN0aW9uJyAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNOYW1lKGFjdGlvblR5cGUpICYmIGFjdGlvblR5cGUubmFtZSA9PT0gJ05hbWVkJyAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNOYW1lKGFjdGlvbikgJiYgYWN0aW9uLm5hbWUgPT09ICdQcmludCcpOwoKICAgICAgICBpZiAoaXNQcmludEFjdGlvbikgewogICAgICAgICAgamF2YVNjcmlwdC5wdXNoKCdwcmludCh0cnVlKTsnKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIHJldHVybiBzaGFkb3codGhpcywgJ2phdmFTY3JpcHQnLCBqYXZhU2NyaXB0KTsKICAgIH0sCgogICAgY2xlYW51cDogZnVuY3Rpb24gQ2F0YWxvZ19jbGVhbnVwKCkgewogICAgICB2YXIgcHJvbWlzZXMgPSBbXTsKICAgICAgdGhpcy5mb250Q2FjaGUuZm9yRWFjaChmdW5jdGlvbiAocHJvbWlzZSkgewogICAgICAgIHByb21pc2VzLnB1c2gocHJvbWlzZSk7CiAgICAgIH0pOwogICAgICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpLnRoZW4oZnVuY3Rpb24gKHRyYW5zbGF0ZWRGb250cykgewogICAgICAgIGZvciAodmFyIGkgPSAwLCBpaSA9IHRyYW5zbGF0ZWRGb250cy5sZW5ndGg7IGkgPCBpaTsgaSsrKSB7CiAgICAgICAgICB2YXIgZm9udCA9IHRyYW5zbGF0ZWRGb250c1tpXS5kaWN0OwogICAgICAgICAgZGVsZXRlIGZvbnQudHJhbnNsYXRlZDsKICAgICAgICB9CiAgICAgICAgdGhpcy5mb250Q2FjaGUuY2xlYXIoKTsKICAgICAgfS5iaW5kKHRoaXMpKTsKICAgIH0sCgogICAgZ2V0UGFnZTogZnVuY3Rpb24gQ2F0YWxvZ19nZXRQYWdlKHBhZ2VJbmRleCkgewogICAgICBpZiAoIShwYWdlSW5kZXggaW4gdGhpcy5wYWdlUHJvbWlzZXMpKSB7CiAgICAgICAgdGhpcy5wYWdlUHJvbWlzZXNbcGFnZUluZGV4XSA9IHRoaXMuZ2V0UGFnZURpY3QocGFnZUluZGV4KS50aGVuKAogICAgICAgICAgZnVuY3Rpb24gKGEpIHsKICAgICAgICAgICAgdmFyIGRpY3QgPSBhWzBdOwogICAgICAgICAgICB2YXIgcmVmID0gYVsxXTsKICAgICAgICAgICAgcmV0dXJuIG5ldyBQYWdlKHRoaXMucGRmTWFuYWdlciwgdGhpcy54cmVmLCBwYWdlSW5kZXgsIGRpY3QsIHJlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9udENhY2hlKTsKICAgICAgICAgIH0uYmluZCh0aGlzKQogICAgICAgICk7CiAgICAgIH0KICAgICAgcmV0dXJuIHRoaXMucGFnZVByb21pc2VzW3BhZ2VJbmRleF07CiAgICB9LAoKICAgIGdldFBhZ2VEaWN0OiBmdW5jdGlvbiBDYXRhbG9nX2dldFBhZ2VEaWN0KHBhZ2VJbmRleCkgewogICAgICB2YXIgY2FwYWJpbGl0eSA9IGNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KCk7CiAgICAgIHZhciBub2Rlc1RvVmlzaXQgPSBbdGhpcy5jYXREaWN0LmdldFJhdygnUGFnZXMnKV07CiAgICAgIHZhciBjdXJyZW50UGFnZUluZGV4ID0gMDsKICAgICAgdmFyIHhyZWYgPSB0aGlzLnhyZWY7CiAgICAgIHZhciBjaGVja0FsbEtpZHMgPSBmYWxzZTsKCiAgICAgIGZ1bmN0aW9uIG5leHQoKSB7CiAgICAgICAgd2hpbGUgKG5vZGVzVG9WaXNpdC5sZW5ndGgpIHsKICAgICAgICAgIHZhciBjdXJyZW50Tm9kZSA9IG5vZGVzVG9WaXNpdC5wb3AoKTsKCiAgICAgICAgICBpZiAoaXNSZWYoY3VycmVudE5vZGUpKSB7CiAgICAgICAgICAgIHhyZWYuZmV0Y2hBc3luYyhjdXJyZW50Tm9kZSkudGhlbihmdW5jdGlvbiAob2JqKSB7CiAgICAgICAgICAgICAgaWYgKGlzRGljdChvYmosICdQYWdlJykgfHwgKGlzRGljdChvYmopICYmICFvYmouaGFzKCdLaWRzJykpKSB7CiAgICAgICAgICAgICAgICBpZiAocGFnZUluZGV4ID09PSBjdXJyZW50UGFnZUluZGV4KSB7CiAgICAgICAgICAgICAgICAgIGNhcGFiaWxpdHkucmVzb2x2ZShbb2JqLCBjdXJyZW50Tm9kZV0pOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgY3VycmVudFBhZ2VJbmRleCsrOwogICAgICAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIG5vZGVzVG9WaXNpdC5wdXNoKG9iaik7CiAgICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICAgICB9LCBjYXBhYmlsaXR5LnJlamVjdCk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0KCiAgICAgICAgICAvLyBNdXN0IGJlIGEgY2hpbGQgcGFnZSBkaWN0aW9uYXJ5LgogICAgICAgICAgYXNzZXJ0KAogICAgICAgICAgICBpc0RpY3QoY3VycmVudE5vZGUpLAogICAgICAgICAgICAncGFnZSBkaWN0aW9uYXJ5IGtpZCByZWZlcmVuY2UgcG9pbnRzIHRvIHdyb25nIHR5cGUgb2Ygb2JqZWN0JwogICAgICAgICAgKTsKICAgICAgICAgIHZhciBjb3VudCA9IGN1cnJlbnROb2RlLmdldCgnQ291bnQnKTsKICAgICAgICAgIC8vIElmIHRoZSBjdXJyZW50IG5vZGUgZG9lc24ndCBoYXZlIGFueSBjaGlsZHJlbiwgYXZvaWQgZ2V0dGluZyBzdHVjawogICAgICAgICAgLy8gaW4gYW4gZW1wdHkgbm9kZSBmdXJ0aGVyIGRvd24gaW4gdGhlIHRyZWUgKHNlZSBpc3N1ZTU2NDQucGRmKS4KICAgICAgICAgIGlmIChjb3VudCA9PT0gMCkgewogICAgICAgICAgICBjaGVja0FsbEtpZHMgPSB0cnVlOwogICAgICAgICAgfQogICAgICAgICAgLy8gU2tpcCBub2RlcyB3aGVyZSB0aGUgcGFnZSBjYW4ndCBiZS4KICAgICAgICAgIGlmIChjdXJyZW50UGFnZUluZGV4ICsgY291bnQgPD0gcGFnZUluZGV4KSB7CiAgICAgICAgICAgIGN1cnJlbnRQYWdlSW5kZXggKz0gY291bnQ7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgfQoKICAgICAgICAgIHZhciBraWRzID0gY3VycmVudE5vZGUuZ2V0KCdLaWRzJyk7CiAgICAgICAgICBhc3NlcnQoaXNBcnJheShraWRzKSwgJ3BhZ2UgZGljdGlvbmFyeSBraWRzIG9iamVjdCBpcyBub3QgYW4gYXJyYXknKTsKICAgICAgICAgIGlmICghY2hlY2tBbGxLaWRzICYmIGNvdW50ID09PSBraWRzLmxlbmd0aCkgewogICAgICAgICAgICAvLyBOb2RlcyB0aGF0IGRvbid0IGhhdmUgdGhlIHBhZ2UgaGF2ZSBiZWVuIHNraXBwZWQgYW5kIHRoaXMgaXMgdGhlCiAgICAgICAgICAgIC8vIGJvdHRvbSBvZiB0aGUgdHJlZSB3aGljaCBtZWFucyB0aGUgcGFnZSByZXF1ZXN0ZWQgbXVzdCBiZSBhCiAgICAgICAgICAgIC8vIGRlc2NlbmRhbnQgb2YgdGhpcyBwYWdlcyBub2RlLiBJZGVhbGx5IHdlIHdvdWxkIGp1c3QgcmVzb2x2ZSB0aGUKICAgICAgICAgICAgLy8gcHJvbWlzZSB3aXRoIHRoZSBwYWdlIHJlZiBoZXJlLCBidXQgdGhlcmUgaXMgdGhlIGNhc2Ugd2hlcmUgbW9yZQogICAgICAgICAgICAvLyBwYWdlcyBub2RlcyBjb3VsZCBsaW5rIHRvIHNpbmdsZSBhIHBhZ2UgKHNlZSBpc3N1ZSAzNjY2IHBkZikuIFRvCiAgICAgICAgICAgIC8vIGhhbmRsZSB0aGlzIHB1c2ggaXQgYmFjayBvbiB0aGUgcXVldWUgc28gaWYgaXQgaXMgYSBwYWdlcyBub2RlIGl0CiAgICAgICAgICAgIC8vIHdpbGwgYmUgZGVzY2VuZGVkIGludG8uCiAgICAgICAgICAgIG5vZGVzVG9WaXNpdCA9IFtraWRzW3BhZ2VJbmRleCAtIGN1cnJlbnRQYWdlSW5kZXhdXTsKICAgICAgICAgICAgY3VycmVudFBhZ2VJbmRleCA9IHBhZ2VJbmRleDsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBmb3IgKHZhciBsYXN0ID0ga2lkcy5sZW5ndGggLSAxOyBsYXN0ID49IDA7IGxhc3QtLSkgewogICAgICAgICAgICAgIG5vZGVzVG9WaXNpdC5wdXNoKGtpZHNbbGFzdF0pOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGNhcGFiaWxpdHkucmVqZWN0KCdQYWdlIGluZGV4ICcgKyBwYWdlSW5kZXggKyAnIG5vdCBmb3VuZC4nKTsKICAgICAgfQogICAgICBuZXh0KCk7CiAgICAgIHJldHVybiBjYXBhYmlsaXR5LnByb21pc2U7CiAgICB9LAoKICAgIGdldFBhZ2VJbmRleDogZnVuY3Rpb24gQ2F0YWxvZ19nZXRQYWdlSW5kZXgocmVmKSB7CiAgICAgIC8vIFRoZSBwYWdlIHRyZWUgbm9kZXMgaGF2ZSB0aGUgY291bnQgb2YgYWxsIHRoZSBsZWF2ZXMgYmVsb3cgdGhlbS4gVG8gZ2V0CiAgICAgIC8vIGhvdyBtYW55IHBhZ2VzIGFyZSBiZWZvcmUgd2UganVzdCBoYXZlIHRvIHdhbGsgdXAgdGhlIHRyZWUgYW5kIGtlZXAKICAgICAgLy8gYWRkaW5nIHRoZSBjb3VudCBvZiBzaWJsaW5ncyB0byB0aGUgbGVmdCBvZiB0aGUgbm9kZS4KICAgICAgdmFyIHhyZWYgPSB0aGlzLnhyZWY7CiAgICAgIGZ1bmN0aW9uIHBhZ2VzQmVmb3JlUmVmKGtpZFJlZikgewogICAgICAgIHZhciB0b3RhbCA9IDA7CiAgICAgICAgdmFyIHBhcmVudFJlZjsKICAgICAgICByZXR1cm4geHJlZi5mZXRjaEFzeW5jKGtpZFJlZikudGhlbihmdW5jdGlvbiAobm9kZSkgewogICAgICAgICAgaWYgKCFub2RlKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgfQogICAgICAgICAgcGFyZW50UmVmID0gbm9kZS5nZXRSYXcoJ1BhcmVudCcpOwogICAgICAgICAgcmV0dXJuIG5vZGUuZ2V0QXN5bmMoJ1BhcmVudCcpOwogICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHBhcmVudCkgewogICAgICAgICAgaWYgKCFwYXJlbnQpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gcGFyZW50LmdldEFzeW5jKCdLaWRzJyk7CiAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoa2lkcykgewogICAgICAgICAgaWYgKCFraWRzKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgfQogICAgICAgICAgdmFyIGtpZFByb21pc2VzID0gW107CiAgICAgICAgICB2YXIgZm91bmQgPSBmYWxzZTsKICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2lkcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICB2YXIga2lkID0ga2lkc1tpXTsKICAgICAgICAgICAgYXNzZXJ0KGlzUmVmKGtpZCksICdraWRzIG11c3QgYmUgYSByZWYnKTsKICAgICAgICAgICAgaWYgKGtpZC5udW0gPT09IGtpZFJlZi5udW0pIHsKICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAga2lkUHJvbWlzZXMucHVzaCh4cmVmLmZldGNoQXN5bmMoa2lkKS50aGVuKGZ1bmN0aW9uIChraWQpIHsKICAgICAgICAgICAgICBpZiAoa2lkLmhhcygnQ291bnQnKSkgewogICAgICAgICAgICAgICAgdmFyIGNvdW50ID0ga2lkLmdldCgnQ291bnQnKTsKICAgICAgICAgICAgICAgIHRvdGFsICs9IGNvdW50OwogICAgICAgICAgICAgIH0gZWxzZSB7IC8vIHBhZ2UgbGVhZiBub2RlCiAgICAgICAgICAgICAgICB0b3RhbCsrOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkpOwogICAgICAgICAgfQogICAgICAgICAgaWYgKCFmb3VuZCkgewogICAgICAgICAgICBlcnJvcigna2lkIHJlZiBub3QgZm91bmQgaW4gcGFyZW50cyBraWRzJyk7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoa2lkUHJvbWlzZXMpLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgICAgICByZXR1cm4gW3RvdGFsLCBwYXJlbnRSZWZdOwogICAgICAgICAgfSk7CiAgICAgICAgfSk7CiAgICAgIH0KCiAgICAgIHZhciB0b3RhbCA9IDA7CiAgICAgIGZ1bmN0aW9uIG5leHQocmVmKSB7CiAgICAgICAgcmV0dXJuIHBhZ2VzQmVmb3JlUmVmKHJlZikudGhlbihmdW5jdGlvbiAoYXJncykgewogICAgICAgICAgaWYgKCFhcmdzKSB7CiAgICAgICAgICAgIHJldHVybiB0b3RhbDsKICAgICAgICAgIH0KICAgICAgICAgIHZhciBjb3VudCA9IGFyZ3NbMF07CiAgICAgICAgICB2YXIgcGFyZW50UmVmID0gYXJnc1sxXTsKICAgICAgICAgIHRvdGFsICs9IGNvdW50OwogICAgICAgICAgcmV0dXJuIG5leHQocGFyZW50UmVmKTsKICAgICAgICB9KTsKICAgICAgfQoKICAgICAgcmV0dXJuIG5leHQocmVmKTsKICAgIH0KICB9OwoKICByZXR1cm4gQ2F0YWxvZzsKfSkoKTsKCnZhciBYUmVmID0gKGZ1bmN0aW9uIFhSZWZDbG9zdXJlKCkgewogIGZ1bmN0aW9uIFhSZWYoc3RyZWFtLCBwYXNzd29yZCkgewogICAgdGhpcy5zdHJlYW0gPSBzdHJlYW07CiAgICB0aGlzLmVudHJpZXMgPSBbXTsKICAgIHRoaXMueHJlZnN0bXMgPSB7fTsKICAgIC8vIHByZXBhcmUgdGhlIFhSZWYgY2FjaGUKICAgIHRoaXMuY2FjaGUgPSBbXTsKICAgIHRoaXMucGFzc3dvcmQgPSBwYXNzd29yZDsKICAgIHRoaXMuc3RhdHMgPSB7CiAgICAgIHN0cmVhbVR5cGVzOiBbXSwKICAgICAgZm9udFR5cGVzOiBbXQogICAgfTsKICB9CgogIFhSZWYucHJvdG90eXBlID0gewogICAgc2V0U3RhcnRYUmVmOiBmdW5jdGlvbiBYUmVmX3NldFN0YXJ0WFJlZihzdGFydFhSZWYpIHsKICAgICAgLy8gU3RvcmUgdGhlIHN0YXJ0aW5nIHBvc2l0aW9ucyBvZiB4cmVmIHRhYmxlcyBhcyB3ZSBwcm9jZXNzIHRoZW0KICAgICAgLy8gc28gd2UgY2FuIHJlY292ZXIgZnJvbSBtaXNzaW5nIGRhdGEgZXJyb3JzCiAgICAgIHRoaXMuc3RhcnRYUmVmUXVldWUgPSBbc3RhcnRYUmVmXTsKICAgIH0sCgogICAgcGFyc2U6IGZ1bmN0aW9uIFhSZWZfcGFyc2UocmVjb3ZlcnlNb2RlKSB7CiAgICAgIHZhciB0cmFpbGVyRGljdDsKICAgICAgaWYgKCFyZWNvdmVyeU1vZGUpIHsKICAgICAgICB0cmFpbGVyRGljdCA9IHRoaXMucmVhZFhSZWYoKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB3YXJuKCdJbmRleGluZyBhbGwgUERGIG9iamVjdHMnKTsKICAgICAgICB0cmFpbGVyRGljdCA9IHRoaXMuaW5kZXhPYmplY3RzKCk7CiAgICAgIH0KICAgICAgdHJhaWxlckRpY3QuYXNzaWduWHJlZih0aGlzKTsKICAgICAgdGhpcy50cmFpbGVyID0gdHJhaWxlckRpY3Q7CiAgICAgIHZhciBlbmNyeXB0ID0gdHJhaWxlckRpY3QuZ2V0KCdFbmNyeXB0Jyk7CiAgICAgIGlmIChlbmNyeXB0KSB7CiAgICAgICAgdmFyIGlkcyA9IHRyYWlsZXJEaWN0LmdldCgnSUQnKTsKICAgICAgICB2YXIgZmlsZUlkID0gKGlkcyAmJiBpZHMubGVuZ3RoKSA/IGlkc1swXSA6ICcnOwogICAgICAgIHRoaXMuZW5jcnlwdCA9IG5ldyBDaXBoZXJUcmFuc2Zvcm1GYWN0b3J5KGVuY3J5cHQsIGZpbGVJZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhc3N3b3JkKTsKICAgICAgfQoKICAgICAgLy8gZ2V0IHRoZSByb290IGRpY3Rpb25hcnkgKGNhdGFsb2cpIG9iamVjdAogICAgICBpZiAoISh0aGlzLnJvb3QgPSB0cmFpbGVyRGljdC5nZXQoJ1Jvb3QnKSkpIHsKICAgICAgICBlcnJvcignSW52YWxpZCByb290IHJlZmVyZW5jZScpOwogICAgICB9CiAgICB9LAoKICAgIHByb2Nlc3NYUmVmVGFibGU6IGZ1bmN0aW9uIFhSZWZfcHJvY2Vzc1hSZWZUYWJsZShwYXJzZXIpIHsKICAgICAgaWYgKCEoJ3RhYmxlU3RhdGUnIGluIHRoaXMpKSB7CiAgICAgICAgLy8gU3RvcmVzIHN0YXRlIG9mIHRoZSB0YWJsZSBhcyB3ZSBwcm9jZXNzIGl0IHNvIHdlIGNhbiByZXN1bWUKICAgICAgICAvLyBmcm9tIG1pZGRsZSBvZiB0YWJsZSBpbiBjYXNlIG9mIG1pc3NpbmcgZGF0YSBlcnJvcgogICAgICAgIHRoaXMudGFibGVTdGF0ZSA9IHsKICAgICAgICAgIGVudHJ5TnVtOiAwLAogICAgICAgICAgc3RyZWFtUG9zOiBwYXJzZXIubGV4ZXIuc3RyZWFtLnBvcywKICAgICAgICAgIHBhcnNlckJ1ZjE6IHBhcnNlci5idWYxLAogICAgICAgICAgcGFyc2VyQnVmMjogcGFyc2VyLmJ1ZjIKICAgICAgICB9OwogICAgICB9CgogICAgICB2YXIgb2JqID0gdGhpcy5yZWFkWFJlZlRhYmxlKHBhcnNlcik7CgogICAgICAvLyBTYW5pdHkgY2hlY2sKICAgICAgaWYgKCFpc0NtZChvYmosICd0cmFpbGVyJykpIHsKICAgICAgICBlcnJvcignSW52YWxpZCBYUmVmIHRhYmxlOiBjb3VsZCBub3QgZmluZCB0cmFpbGVyIGRpY3Rpb25hcnknKTsKICAgICAgfQogICAgICAvLyBSZWFkIHRyYWlsZXIgZGljdGlvbmFyeSwgZS5nLgogICAgICAvLyB0cmFpbGVyCiAgICAgIC8vICAgIDw8IC9TaXplIDIyCiAgICAgIC8vICAgICAgL1Jvb3QgMjBSCiAgICAgIC8vICAgICAgL0luZm8gMTBSCiAgICAgIC8vICAgICAgL0lEIFsgPDgxYjE0YWFmYTMxM2RiNjNkYmQ2Zjk4MWU0OWY5NGY0PiBdCiAgICAgIC8vICAgID4+CiAgICAgIC8vIFRoZSBwYXJzZXIgZ29lcyB0aHJvdWdoIHRoZSBlbnRpcmUgc3RyZWFtIDw8IC4uLiA+PiBhbmQgcHJvdmlkZXMKICAgICAgLy8gYSBnZXR0ZXIgaW50ZXJmYWNlIGZvciB0aGUga2V5LXZhbHVlIHRhYmxlCiAgICAgIHZhciBkaWN0ID0gcGFyc2VyLmdldE9iaigpOwoKICAgICAgLy8gVGhlIHBkZmxpYiBQREYgZ2VuZXJhdG9yIGNhbiBnZW5lcmF0ZSBhIG5lc3RlZCB0cmFpbGVyIGRpY3Rpb25hcnkKICAgICAgaWYgKCFpc0RpY3QoZGljdCkgJiYgZGljdC5kaWN0KSB7CiAgICAgICAgZGljdCA9IGRpY3QuZGljdDsKICAgICAgfQogICAgICBpZiAoIWlzRGljdChkaWN0KSkgewogICAgICAgIGVycm9yKCdJbnZhbGlkIFhSZWYgdGFibGU6IGNvdWxkIG5vdCBwYXJzZSB0cmFpbGVyIGRpY3Rpb25hcnknKTsKICAgICAgfQogICAgICBkZWxldGUgdGhpcy50YWJsZVN0YXRlOwoKICAgICAgcmV0dXJuIGRpY3Q7CiAgICB9LAoKICAgIHJlYWRYUmVmVGFibGU6IGZ1bmN0aW9uIFhSZWZfcmVhZFhSZWZUYWJsZShwYXJzZXIpIHsKICAgICAgLy8gRXhhbXBsZSBvZiBjcm9zcy1yZWZlcmVuY2UgdGFibGU6CiAgICAgIC8vIHhyZWYKICAgICAgLy8gMCAxICAgICAgICAgICAgICAgICAgICA8LS0gc3Vic2VjdGlvbiBoZWFkZXIgKGZpcnN0IG9iaiAjLCBvYmogY291bnQpCiAgICAgIC8vIDAwMDAwMDAwMDAgNjU1MzUgZiAgICAgPC0tIGFjdHVhbCBvYmplY3QgKG9mZnNldCwgZ2VuZXJhdGlvbiAjLCBmL24pCiAgICAgIC8vIDIzIDIgICAgICAgICAgICAgICAgICAgPC0tIHN1YnNlY3Rpb24gaGVhZGVyIC4uLiBhbmQgc28gb24gLi4uCiAgICAgIC8vIDAwMDAwMjU1MTggMDAwMDIgbgogICAgICAvLyAwMDAwMDI1NjM1IDAwMDAwIG4KICAgICAgLy8gdHJhaWxlcgogICAgICAvLyAuLi4KCiAgICAgIHZhciBzdHJlYW0gPSBwYXJzZXIubGV4ZXIuc3RyZWFtOwogICAgICB2YXIgdGFibGVTdGF0ZSA9IHRoaXMudGFibGVTdGF0ZTsKICAgICAgc3RyZWFtLnBvcyA9IHRhYmxlU3RhdGUuc3RyZWFtUG9zOwogICAgICBwYXJzZXIuYnVmMSA9IHRhYmxlU3RhdGUucGFyc2VyQnVmMTsKICAgICAgcGFyc2VyLmJ1ZjIgPSB0YWJsZVN0YXRlLnBhcnNlckJ1ZjI7CgogICAgICAvLyBPdXRlciBsb29wIGlzIG92ZXIgc3Vic2VjdGlvbiBoZWFkZXJzCiAgICAgIHZhciBvYmo7CgogICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgIGlmICghKCdmaXJzdEVudHJ5TnVtJyBpbiB0YWJsZVN0YXRlKSB8fCAhKCdlbnRyeUNvdW50JyBpbiB0YWJsZVN0YXRlKSkgewogICAgICAgICAgaWYgKGlzQ21kKG9iaiA9IHBhcnNlci5nZXRPYmooKSwgJ3RyYWlsZXInKSkgewogICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgICAgIHRhYmxlU3RhdGUuZmlyc3RFbnRyeU51bSA9IG9iajsKICAgICAgICAgIHRhYmxlU3RhdGUuZW50cnlDb3VudCA9IHBhcnNlci5nZXRPYmooKTsKICAgICAgICB9CgogICAgICAgIHZhciBmaXJzdCA9IHRhYmxlU3RhdGUuZmlyc3RFbnRyeU51bTsKICAgICAgICB2YXIgY291bnQgPSB0YWJsZVN0YXRlLmVudHJ5Q291bnQ7CiAgICAgICAgaWYgKCFpc0ludChmaXJzdCkgfHwgIWlzSW50KGNvdW50KSkgewogICAgICAgICAgZXJyb3IoJ0ludmFsaWQgWFJlZiB0YWJsZTogd3JvbmcgdHlwZXMgaW4gc3Vic2VjdGlvbiBoZWFkZXInKTsKICAgICAgICB9CiAgICAgICAgLy8gSW5uZXIgbG9vcCBpcyBvdmVyIG9iamVjdHMgdGhlbXNlbHZlcwogICAgICAgIGZvciAodmFyIGkgPSB0YWJsZVN0YXRlLmVudHJ5TnVtOyBpIDwgY291bnQ7IGkrKykgewogICAgICAgICAgdGFibGVTdGF0ZS5zdHJlYW1Qb3MgPSBzdHJlYW0ucG9zOwogICAgICAgICAgdGFibGVTdGF0ZS5lbnRyeU51bSA9IGk7CiAgICAgICAgICB0YWJsZVN0YXRlLnBhcnNlckJ1ZjEgPSBwYXJzZXIuYnVmMTsKICAgICAgICAgIHRhYmxlU3RhdGUucGFyc2VyQnVmMiA9IHBhcnNlci5idWYyOwoKICAgICAgICAgIHZhciBlbnRyeSA9IHt9OwogICAgICAgICAgZW50cnkub2Zmc2V0ID0gcGFyc2VyLmdldE9iaigpOwogICAgICAgICAgZW50cnkuZ2VuID0gcGFyc2VyLmdldE9iaigpOwogICAgICAgICAgdmFyIHR5cGUgPSBwYXJzZXIuZ2V0T2JqKCk7CgogICAgICAgICAgaWYgKGlzQ21kKHR5cGUsICdmJykpIHsKICAgICAgICAgICAgZW50cnkuZnJlZSA9IHRydWU7CiAgICAgICAgICB9IGVsc2UgaWYgKGlzQ21kKHR5cGUsICduJykpIHsKICAgICAgICAgICAgZW50cnkudW5jb21wcmVzc2VkID0gdHJ1ZTsKICAgICAgICAgIH0KCiAgICAgICAgICAvLyBWYWxpZGF0ZSBlbnRyeSBvYmoKICAgICAgICAgIGlmICghaXNJbnQoZW50cnkub2Zmc2V0KSB8fCAhaXNJbnQoZW50cnkuZ2VuKSB8fAogICAgICAgICAgICAgICEoZW50cnkuZnJlZSB8fCBlbnRyeS51bmNvbXByZXNzZWQpKSB7CiAgICAgICAgICAgIGVycm9yKCdJbnZhbGlkIGVudHJ5IGluIFhSZWYgc3Vic2VjdGlvbjogJyArIGZpcnN0ICsgJywgJyArIGNvdW50KTsKICAgICAgICAgIH0KCiAgICAgICAgICBpZiAoIXRoaXMuZW50cmllc1tpICsgZmlyc3RdKSB7CiAgICAgICAgICAgIHRoaXMuZW50cmllc1tpICsgZmlyc3RdID0gZW50cnk7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICB0YWJsZVN0YXRlLmVudHJ5TnVtID0gMDsKICAgICAgICB0YWJsZVN0YXRlLnN0cmVhbVBvcyA9IHN0cmVhbS5wb3M7CiAgICAgICAgdGFibGVTdGF0ZS5wYXJzZXJCdWYxID0gcGFyc2VyLmJ1ZjE7CiAgICAgICAgdGFibGVTdGF0ZS5wYXJzZXJCdWYyID0gcGFyc2VyLmJ1ZjI7CiAgICAgICAgZGVsZXRlIHRhYmxlU3RhdGUuZmlyc3RFbnRyeU51bTsKICAgICAgICBkZWxldGUgdGFibGVTdGF0ZS5lbnRyeUNvdW50OwogICAgICB9CgogICAgICAvLyBQZXIgaXNzdWUgMzI0ODogaHAgc2Nhbm5lcnMgZ2VuZXJhdGUgYmFkIFhSZWYKICAgICAgaWYgKGZpcnN0ID09PSAxICYmIHRoaXMuZW50cmllc1sxXSAmJiB0aGlzLmVudHJpZXNbMV0uZnJlZSkgewogICAgICAgIC8vIHNoaWZ0aW5nIHRoZSBlbnRyaWVzCiAgICAgICAgdGhpcy5lbnRyaWVzLnNoaWZ0KCk7CiAgICAgIH0KCiAgICAgIC8vIFNhbml0eSBjaGVjazogYXMgcGVyIHNwZWMsIGZpcnN0IG9iamVjdCBtdXN0IGJlIGZyZWUKICAgICAgaWYgKHRoaXMuZW50cmllc1swXSAmJiAhdGhpcy5lbnRyaWVzWzBdLmZyZWUpIHsKICAgICAgICBlcnJvcignSW52YWxpZCBYUmVmIHRhYmxlOiB1bmV4cGVjdGVkIGZpcnN0IG9iamVjdCcpOwogICAgICB9CiAgICAgIHJldHVybiBvYmo7CiAgICB9LAoKICAgIHByb2Nlc3NYUmVmU3RyZWFtOiBmdW5jdGlvbiBYUmVmX3Byb2Nlc3NYUmVmU3RyZWFtKHN0cmVhbSkgewogICAgICBpZiAoISgnc3RyZWFtU3RhdGUnIGluIHRoaXMpKSB7CiAgICAgICAgLy8gU3RvcmVzIHN0YXRlIG9mIHRoZSBzdHJlYW0gYXMgd2UgcHJvY2VzcyBpdCBzbyB3ZSBjYW4gcmVzdW1lCiAgICAgICAgLy8gZnJvbSBtaWRkbGUgb2Ygc3RyZWFtIGluIGNhc2Ugb2YgbWlzc2luZyBkYXRhIGVycm9yCiAgICAgICAgdmFyIHN0cmVhbVBhcmFtZXRlcnMgPSBzdHJlYW0uZGljdDsKICAgICAgICB2YXIgYnl0ZVdpZHRocyA9IHN0cmVhbVBhcmFtZXRlcnMuZ2V0KCdXJyk7CiAgICAgICAgdmFyIHJhbmdlID0gc3RyZWFtUGFyYW1ldGVycy5nZXQoJ0luZGV4Jyk7CiAgICAgICAgaWYgKCFyYW5nZSkgewogICAgICAgICAgcmFuZ2UgPSBbMCwgc3RyZWFtUGFyYW1ldGVycy5nZXQoJ1NpemUnKV07CiAgICAgICAgfQoKICAgICAgICB0aGlzLnN0cmVhbVN0YXRlID0gewogICAgICAgICAgZW50cnlSYW5nZXM6IHJhbmdlLAogICAgICAgICAgYnl0ZVdpZHRoczogYnl0ZVdpZHRocywKICAgICAgICAgIGVudHJ5TnVtOiAwLAogICAgICAgICAgc3RyZWFtUG9zOiBzdHJlYW0ucG9zCiAgICAgICAgfTsKICAgICAgfQogICAgICB0aGlzLnJlYWRYUmVmU3RyZWFtKHN0cmVhbSk7CiAgICAgIGRlbGV0ZSB0aGlzLnN0cmVhbVN0YXRlOwoKICAgICAgcmV0dXJuIHN0cmVhbS5kaWN0OwogICAgfSwKCiAgICByZWFkWFJlZlN0cmVhbTogZnVuY3Rpb24gWFJlZl9yZWFkWFJlZlN0cmVhbShzdHJlYW0pIHsKICAgICAgdmFyIGksIGo7CiAgICAgIHZhciBzdHJlYW1TdGF0ZSA9IHRoaXMuc3RyZWFtU3RhdGU7CiAgICAgIHN0cmVhbS5wb3MgPSBzdHJlYW1TdGF0ZS5zdHJlYW1Qb3M7CgogICAgICB2YXIgYnl0ZVdpZHRocyA9IHN0cmVhbVN0YXRlLmJ5dGVXaWR0aHM7CiAgICAgIHZhciB0eXBlRmllbGRXaWR0aCA9IGJ5dGVXaWR0aHNbMF07CiAgICAgIHZhciBvZmZzZXRGaWVsZFdpZHRoID0gYnl0ZVdpZHRoc1sxXTsKICAgICAgdmFyIGdlbmVyYXRpb25GaWVsZFdpZHRoID0gYnl0ZVdpZHRoc1syXTsKCiAgICAgIHZhciBlbnRyeVJhbmdlcyA9IHN0cmVhbVN0YXRlLmVudHJ5UmFuZ2VzOwogICAgICB3aGlsZSAoZW50cnlSYW5nZXMubGVuZ3RoID4gMCkgewogICAgICAgIHZhciBmaXJzdCA9IGVudHJ5UmFuZ2VzWzBdOwogICAgICAgIHZhciBuID0gZW50cnlSYW5nZXNbMV07CgogICAgICAgIGlmICghaXNJbnQoZmlyc3QpIHx8ICFpc0ludChuKSkgewogICAgICAgICAgZXJyb3IoJ0ludmFsaWQgWFJlZiByYW5nZSBmaWVsZHM6ICcgKyBmaXJzdCArICcsICcgKyBuKTsKICAgICAgICB9CiAgICAgICAgaWYgKCFpc0ludCh0eXBlRmllbGRXaWR0aCkgfHwgIWlzSW50KG9mZnNldEZpZWxkV2lkdGgpIHx8CiAgICAgICAgICAgICFpc0ludChnZW5lcmF0aW9uRmllbGRXaWR0aCkpIHsKICAgICAgICAgIGVycm9yKCdJbnZhbGlkIFhSZWYgZW50cnkgZmllbGRzIGxlbmd0aDogJyArIGZpcnN0ICsgJywgJyArIG4pOwogICAgICAgIH0KICAgICAgICBmb3IgKGkgPSBzdHJlYW1TdGF0ZS5lbnRyeU51bTsgaSA8IG47ICsraSkgewogICAgICAgICAgc3RyZWFtU3RhdGUuZW50cnlOdW0gPSBpOwogICAgICAgICAgc3RyZWFtU3RhdGUuc3RyZWFtUG9zID0gc3RyZWFtLnBvczsKCiAgICAgICAgICB2YXIgdHlwZSA9IDAsIG9mZnNldCA9IDAsIGdlbmVyYXRpb24gPSAwOwogICAgICAgICAgZm9yIChqID0gMDsgaiA8IHR5cGVGaWVsZFdpZHRoOyArK2opIHsKICAgICAgICAgICAgdHlwZSA9ICh0eXBlIDw8IDgpIHwgc3RyZWFtLmdldEJ5dGUoKTsKICAgICAgICAgIH0KICAgICAgICAgIC8vIGlmIHR5cGUgZmllbGQgaXMgYWJzZW50LCBpdHMgZGVmYXVsdCB2YWx1ZSBpcyAxCiAgICAgICAgICBpZiAodHlwZUZpZWxkV2lkdGggPT09IDApIHsKICAgICAgICAgICAgdHlwZSA9IDE7CiAgICAgICAgICB9CiAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgb2Zmc2V0RmllbGRXaWR0aDsgKytqKSB7CiAgICAgICAgICAgIG9mZnNldCA9IChvZmZzZXQgPDwgOCkgfCBzdHJlYW0uZ2V0Qnl0ZSgpOwogICAgICAgICAgfQogICAgICAgICAgZm9yIChqID0gMDsgaiA8IGdlbmVyYXRpb25GaWVsZFdpZHRoOyArK2opIHsKICAgICAgICAgICAgZ2VuZXJhdGlvbiA9IChnZW5lcmF0aW9uIDw8IDgpIHwgc3RyZWFtLmdldEJ5dGUoKTsKICAgICAgICAgIH0KICAgICAgICAgIHZhciBlbnRyeSA9IHt9OwogICAgICAgICAgZW50cnkub2Zmc2V0ID0gb2Zmc2V0OwogICAgICAgICAgZW50cnkuZ2VuID0gZ2VuZXJhdGlvbjsKICAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgZW50cnkuZnJlZSA9IHRydWU7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICBlbnRyeS51bmNvbXByZXNzZWQgPSB0cnVlOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgZXJyb3IoJ0ludmFsaWQgWFJlZiBlbnRyeSB0eXBlOiAnICsgdHlwZSk7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoIXRoaXMuZW50cmllc1tmaXJzdCArIGldKSB7CiAgICAgICAgICAgIHRoaXMuZW50cmllc1tmaXJzdCArIGldID0gZW50cnk7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBzdHJlYW1TdGF0ZS5lbnRyeU51bSA9IDA7CiAgICAgICAgc3RyZWFtU3RhdGUuc3RyZWFtUG9zID0gc3RyZWFtLnBvczsKICAgICAgICBlbnRyeVJhbmdlcy5zcGxpY2UoMCwgMik7CiAgICAgIH0KICAgIH0sCgogICAgaW5kZXhPYmplY3RzOiBmdW5jdGlvbiBYUmVmX2luZGV4T2JqZWN0cygpIHsKICAgICAgLy8gU2ltcGxlIHNjYW4gdGhyb3VnaCB0aGUgUERGIGNvbnRlbnQgdG8gZmluZCBvYmplY3RzLAogICAgICAvLyB0cmFpbGVycyBhbmQgWFJlZiBzdHJlYW1zLgogICAgICBmdW5jdGlvbiByZWFkVG9rZW4oZGF0YSwgb2Zmc2V0KSB7CiAgICAgICAgdmFyIHRva2VuID0gJycsIGNoID0gZGF0YVtvZmZzZXRdOwogICAgICAgIHdoaWxlIChjaCAhPT0gMTMgJiYgY2ggIT09IDEwKSB7CiAgICAgICAgICBpZiAoKytvZmZzZXQgPj0gZGF0YS5sZW5ndGgpIHsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CiAgICAgICAgICB0b2tlbiArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNoKTsKICAgICAgICAgIGNoID0gZGF0YVtvZmZzZXRdOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdG9rZW47CiAgICAgIH0KICAgICAgZnVuY3Rpb24gc2tpcFVudGlsKGRhdGEsIG9mZnNldCwgd2hhdCkgewogICAgICAgIHZhciBsZW5ndGggPSB3aGF0Lmxlbmd0aCwgZGF0YUxlbmd0aCA9IGRhdGEubGVuZ3RoOwogICAgICAgIHZhciBza2lwcGVkID0gMDsKICAgICAgICAvLyBmaW5kaW5nIGJ5dGUgc2VxdWVuY2UKICAgICAgICB3aGlsZSAob2Zmc2V0IDwgZGF0YUxlbmd0aCkgewogICAgICAgICAgdmFyIGkgPSAwOwogICAgICAgICAgd2hpbGUgKGkgPCBsZW5ndGggJiYgZGF0YVtvZmZzZXQgKyBpXSA9PT0gd2hhdFtpXSkgewogICAgICAgICAgICArK2k7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoaSA+PSBsZW5ndGgpIHsKICAgICAgICAgICAgYnJlYWs7IC8vIHNlcXVlbmNlIGZvdW5kCiAgICAgICAgICB9CiAgICAgICAgICBvZmZzZXQrKzsKICAgICAgICAgIHNraXBwZWQrKzsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHNraXBwZWQ7CiAgICAgIH0KICAgICAgdmFyIHRyYWlsZXJCeXRlcyA9IG5ldyBVaW50OEFycmF5KFsxMTYsIDExNCwgOTcsIDEwNSwgMTA4LCAxMDEsIDExNF0pOwogICAgICB2YXIgc3RhcnR4cmVmQnl0ZXMgPSBuZXcgVWludDhBcnJheShbMTE1LCAxMTYsIDk3LCAxMTQsIDExNiwgMTIwLCAxMTQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMSwgMTAyXSk7CiAgICAgIHZhciBlbmRvYmpCeXRlcyA9IG5ldyBVaW50OEFycmF5KFsxMDEsIDExMCwgMTAwLCAxMTEsIDk4LCAxMDZdKTsKICAgICAgdmFyIHhyZWZCeXRlcyA9IG5ldyBVaW50OEFycmF5KFs0NywgODgsIDgyLCAxMDEsIDEwMl0pOwoKICAgICAgdmFyIHN0cmVhbSA9IHRoaXMuc3RyZWFtOwogICAgICBzdHJlYW0ucG9zID0gMDsKICAgICAgdmFyIGJ1ZmZlciA9IHN0cmVhbS5nZXRCeXRlcygpOwogICAgICB2YXIgcG9zaXRpb24gPSBzdHJlYW0uc3RhcnQsIGxlbmd0aCA9IGJ1ZmZlci5sZW5ndGg7CiAgICAgIHZhciB0cmFpbGVycyA9IFtdLCB4cmVmU3RtcyA9IFtdOwogICAgICB3aGlsZSAocG9zaXRpb24gPCBsZW5ndGgpIHsKICAgICAgICB2YXIgY2ggPSBidWZmZXJbcG9zaXRpb25dOwogICAgICAgIGlmIChjaCA9PT0gMzIgfHwgY2ggPT09IDkgfHwgY2ggPT09IDEzIHx8IGNoID09PSAxMCkgewogICAgICAgICAgKytwb3NpdGlvbjsKICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgICAgICBpZiAoY2ggPT09IDM3KSB7IC8vICUtY29tbWVudAogICAgICAgICAgZG8gewogICAgICAgICAgICArK3Bvc2l0aW9uOwogICAgICAgICAgICBpZiAocG9zaXRpb24gPj0gbGVuZ3RoKSB7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2ggPSBidWZmZXJbcG9zaXRpb25dOwogICAgICAgICAgfSB3aGlsZSAoY2ggIT09IDEzICYmIGNoICE9PSAxMCk7CiAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgdmFyIHRva2VuID0gcmVhZFRva2VuKGJ1ZmZlciwgcG9zaXRpb24pOwogICAgICAgIHZhciBtOwogICAgICAgIGlmICh0b2tlbiA9PT0gJ3hyZWYnKSB7CiAgICAgICAgICBwb3NpdGlvbiArPSBza2lwVW50aWwoYnVmZmVyLCBwb3NpdGlvbiwgdHJhaWxlckJ5dGVzKTsKICAgICAgICAgIHRyYWlsZXJzLnB1c2gocG9zaXRpb24pOwogICAgICAgICAgcG9zaXRpb24gKz0gc2tpcFVudGlsKGJ1ZmZlciwgcG9zaXRpb24sIHN0YXJ0eHJlZkJ5dGVzKTsKICAgICAgICB9IGVsc2UgaWYgKChtID0gL14oXGQrKVxzKyhcZCspXHMrb2JqXGIvLmV4ZWModG9rZW4pKSkgewogICAgICAgICAgdGhpcy5lbnRyaWVzW21bMV1dID0gewogICAgICAgICAgICBvZmZzZXQ6IHBvc2l0aW9uLAogICAgICAgICAgICBnZW46IG1bMl0gfCAwLAogICAgICAgICAgICB1bmNvbXByZXNzZWQ6IHRydWUKICAgICAgICAgIH07CgogICAgICAgICAgdmFyIGNvbnRlbnRMZW5ndGggPSBza2lwVW50aWwoYnVmZmVyLCBwb3NpdGlvbiwgZW5kb2JqQnl0ZXMpICsgNzsKICAgICAgICAgIHZhciBjb250ZW50ID0gYnVmZmVyLnN1YmFycmF5KHBvc2l0aW9uLCBwb3NpdGlvbiArIGNvbnRlbnRMZW5ndGgpOwoKICAgICAgICAgIC8vIGNoZWNraW5nIFhSZWYgc3RyZWFtIHN1c3BlY3QKICAgICAgICAgIC8vIChpdCBzaGFsbCBoYXZlICcvWFJlZicgYW5kIG5leHQgY2hhciBpcyBub3QgYSBsZXR0ZXIpCiAgICAgICAgICB2YXIgeHJlZlRhZ09mZnNldCA9IHNraXBVbnRpbChjb250ZW50LCAwLCB4cmVmQnl0ZXMpOwogICAgICAgICAgaWYgKHhyZWZUYWdPZmZzZXQgPCBjb250ZW50TGVuZ3RoICYmCiAgICAgICAgICAgICAgY29udGVudFt4cmVmVGFnT2Zmc2V0ICsgNV0gPCA2NCkgewogICAgICAgICAgICB4cmVmU3Rtcy5wdXNoKHBvc2l0aW9uKTsKICAgICAgICAgICAgdGhpcy54cmVmc3Rtc1twb3NpdGlvbl0gPSAxOyAvLyBkb24ndCByZWFkIGl0IHJlY3Vyc2l2ZWx5CiAgICAgICAgICB9CgogICAgICAgICAgcG9zaXRpb24gKz0gY29udGVudExlbmd0aDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcG9zaXRpb24gKz0gdG9rZW4ubGVuZ3RoICsgMTsKICAgICAgICB9CiAgICAgIH0KICAgICAgLy8gcmVhZGluZyBYUmVmIHN0cmVhbXMKICAgICAgdmFyIGksIGlpOwogICAgICBmb3IgKGkgPSAwLCBpaSA9IHhyZWZTdG1zLmxlbmd0aDsgaSA8IGlpOyArK2kpIHsKICAgICAgICB0aGlzLnN0YXJ0WFJlZlF1ZXVlLnB1c2goeHJlZlN0bXNbaV0pOwogICAgICAgIHRoaXMucmVhZFhSZWYoLyogcmVjb3ZlcnlNb2RlICovIHRydWUpOwogICAgICB9CiAgICAgIC8vIGZpbmRpbmcgbWFpbiB0cmFpbGVyCiAgICAgIHZhciBkaWN0OwogICAgICBmb3IgKGkgPSAwLCBpaSA9IHRyYWlsZXJzLmxlbmd0aDsgaSA8IGlpOyArK2kpIHsKICAgICAgICBzdHJlYW0ucG9zID0gdHJhaWxlcnNbaV07CiAgICAgICAgdmFyIHBhcnNlciA9IG5ldyBQYXJzZXIobmV3IExleGVyKHN0cmVhbSksIHRydWUsIHRoaXMpOwogICAgICAgIHZhciBvYmogPSBwYXJzZXIuZ2V0T2JqKCk7CiAgICAgICAgaWYgKCFpc0NtZChvYmosICd0cmFpbGVyJykpIHsKICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgICAgICAvLyByZWFkIHRoZSB0cmFpbGVyIGRpY3Rpb25hcnkKICAgICAgICBpZiAoIWlzRGljdChkaWN0ID0gcGFyc2VyLmdldE9iaigpKSkgewogICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIC8vIHRha2luZyB0aGUgZmlyc3Qgb25lIHdpdGggJ0lEJwogICAgICAgIGlmIChkaWN0LmhhcygnSUQnKSkgewogICAgICAgICAgcmV0dXJuIGRpY3Q7CiAgICAgICAgfQogICAgICB9CiAgICAgIC8vIG5vIHRhaWxlciB3aXRoICdJRCcsIHRha2luZyBsYXN0IG9uZSAoaWYgZXhpc3RzKQogICAgICBpZiAoZGljdCkgewogICAgICAgIHJldHVybiBkaWN0OwogICAgICB9CiAgICAgIC8vIG5vdGhpbmcgaGVscHMKICAgICAgLy8gY2FsbGluZyBlcnJvcigpIHdvdWxkIHJlamVjdCB3b3JrZXIgd2l0aCBhbiBVbmtub3duRXJyb3JFeGNlcHRpb24uCiAgICAgIHRocm93IG5ldyBJbnZhbGlkUERGRXhjZXB0aW9uKCdJbnZhbGlkIFBERiBzdHJ1Y3R1cmUnKTsKICAgIH0sCgogICAgcmVhZFhSZWY6IGZ1bmN0aW9uIFhSZWZfcmVhZFhSZWYocmVjb3ZlcnlNb2RlKSB7CiAgICAgIHZhciBzdHJlYW0gPSB0aGlzLnN0cmVhbTsKCiAgICAgIHRyeSB7CiAgICAgICAgd2hpbGUgKHRoaXMuc3RhcnRYUmVmUXVldWUubGVuZ3RoKSB7CiAgICAgICAgICB2YXIgc3RhcnRYUmVmID0gdGhpcy5zdGFydFhSZWZRdWV1ZVswXTsKCiAgICAgICAgICBzdHJlYW0ucG9zID0gc3RhcnRYUmVmICsgc3RyZWFtLnN0YXJ0OwoKICAgICAgICAgIHZhciBwYXJzZXIgPSBuZXcgUGFyc2VyKG5ldyBMZXhlcihzdHJlYW0pLCB0cnVlLCB0aGlzKTsKICAgICAgICAgIHZhciBvYmogPSBwYXJzZXIuZ2V0T2JqKCk7CiAgICAgICAgICB2YXIgZGljdDsKCiAgICAgICAgICAvLyBHZXQgZGljdGlvbmFyeQogICAgICAgICAgaWYgKGlzQ21kKG9iaiwgJ3hyZWYnKSkgewogICAgICAgICAgICAvLyBQYXJzZSBlbmQtb2YtZmlsZSBYUmVmCiAgICAgICAgICAgIGRpY3QgPSB0aGlzLnByb2Nlc3NYUmVmVGFibGUocGFyc2VyKTsKICAgICAgICAgICAgaWYgKCF0aGlzLnRvcERpY3QpIHsKICAgICAgICAgICAgICB0aGlzLnRvcERpY3QgPSBkaWN0OwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBSZWN1cnNpdmVseSBnZXQgb3RoZXIgWFJlZnMgJ1hSZWZTdG0nLCBpZiBhbnkKICAgICAgICAgICAgb2JqID0gZGljdC5nZXQoJ1hSZWZTdG0nKTsKICAgICAgICAgICAgaWYgKGlzSW50KG9iaikpIHsKICAgICAgICAgICAgICB2YXIgcG9zID0gb2JqOwogICAgICAgICAgICAgIC8vIGlnbm9yZSBwcmV2aW91c2x5IGxvYWRlZCB4cmVmIHN0cmVhbXMKICAgICAgICAgICAgICAvLyAocG9zc2libGUgaW5maW5pdGUgcmVjdXJzaW9uKQogICAgICAgICAgICAgIGlmICghKHBvcyBpbiB0aGlzLnhyZWZzdG1zKSkgewogICAgICAgICAgICAgICAgdGhpcy54cmVmc3Rtc1twb3NdID0gMTsKICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRYUmVmUXVldWUucHVzaChwb3MpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfSBlbHNlIGlmIChpc0ludChvYmopKSB7CiAgICAgICAgICAgIC8vIFBhcnNlIGluLXN0cmVhbSBYUmVmCiAgICAgICAgICAgIGlmICghaXNJbnQocGFyc2VyLmdldE9iaigpKSB8fAogICAgICAgICAgICAgICAgIWlzQ21kKHBhcnNlci5nZXRPYmooKSwgJ29iaicpIHx8CiAgICAgICAgICAgICAgICAhaXNTdHJlYW0ob2JqID0gcGFyc2VyLmdldE9iaigpKSkgewogICAgICAgICAgICAgIGVycm9yKCdJbnZhbGlkIFhSZWYgc3RyZWFtJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZGljdCA9IHRoaXMucHJvY2Vzc1hSZWZTdHJlYW0ob2JqKTsKICAgICAgICAgICAgaWYgKCF0aGlzLnRvcERpY3QpIHsKICAgICAgICAgICAgICB0aGlzLnRvcERpY3QgPSBkaWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghZGljdCkgewogICAgICAgICAgICAgIGVycm9yKCdGYWlsZWQgdG8gcmVhZCBYUmVmIHN0cmVhbScpOwogICAgICAgICAgICB9CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBlcnJvcignSW52YWxpZCBYUmVmIHN0cmVhbSBoZWFkZXInKTsKICAgICAgICAgIH0KCiAgICAgICAgICAvLyBSZWN1cnNpdmVseSBnZXQgcHJldmlvdXMgZGljdGlvbmFyeSwgaWYgYW55CiAgICAgICAgICBvYmogPSBkaWN0LmdldCgnUHJldicpOwogICAgICAgICAgaWYgKGlzSW50KG9iaikpIHsKICAgICAgICAgICAgdGhpcy5zdGFydFhSZWZRdWV1ZS5wdXNoKG9iaik7CiAgICAgICAgICB9IGVsc2UgaWYgKGlzUmVmKG9iaikpIHsKICAgICAgICAgICAgLy8gVGhlIHNwZWMgc2F5cyBQcmV2IG11c3Qgbm90IGJlIGEgcmVmZXJlbmNlLCBpLmUuICIvUHJldiBOTk4iCiAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBmYWxsYmFjayBmb3Igbm9uLWNvbXBsaWFudCBQREZzLCBpLmUuICIvUHJldiBOTk4gMCBSIgogICAgICAgICAgICB0aGlzLnN0YXJ0WFJlZlF1ZXVlLnB1c2gob2JqLm51bSk7CiAgICAgICAgICB9CgogICAgICAgICAgdGhpcy5zdGFydFhSZWZRdWV1ZS5zaGlmdCgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRoaXMudG9wRGljdDsKICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgIGlmIChlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pIHsKICAgICAgICAgIHRocm93IGU7CiAgICAgICAgfQogICAgICAgIGluZm8oJyh3aGlsZSByZWFkaW5nIFhSZWYpOiAnICsgZSk7CiAgICAgIH0KCiAgICAgIGlmIChyZWNvdmVyeU1vZGUpIHsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgdGhyb3cgbmV3IFhSZWZQYXJzZUV4Y2VwdGlvbigpOwogICAgfSwKCiAgICBnZXRFbnRyeTogZnVuY3Rpb24gWFJlZl9nZXRFbnRyeShpKSB7CiAgICAgIHZhciB4cmVmRW50cnkgPSB0aGlzLmVudHJpZXNbaV07CiAgICAgIGlmICh4cmVmRW50cnkgJiYgIXhyZWZFbnRyeS5mcmVlICYmIHhyZWZFbnRyeS5vZmZzZXQpIHsKICAgICAgICByZXR1cm4geHJlZkVudHJ5OwogICAgICB9CiAgICAgIHJldHVybiBudWxsOwogICAgfSwKCiAgICBmZXRjaElmUmVmOiBmdW5jdGlvbiBYUmVmX2ZldGNoSWZSZWYob2JqKSB7CiAgICAgIGlmICghaXNSZWYob2JqKSkgewogICAgICAgIHJldHVybiBvYmo7CiAgICAgIH0KICAgICAgcmV0dXJuIHRoaXMuZmV0Y2gob2JqKTsKICAgIH0sCgogICAgZmV0Y2g6IGZ1bmN0aW9uIFhSZWZfZmV0Y2gocmVmLCBzdXBwcmVzc0VuY3J5cHRpb24pIHsKICAgICAgYXNzZXJ0KGlzUmVmKHJlZiksICdyZWYgb2JqZWN0IGlzIG5vdCBhIHJlZmVyZW5jZScpOwogICAgICB2YXIgbnVtID0gcmVmLm51bTsKICAgICAgaWYgKG51bSBpbiB0aGlzLmNhY2hlKSB7CiAgICAgICAgdmFyIGNhY2hlRW50cnkgPSB0aGlzLmNhY2hlW251bV07CiAgICAgICAgcmV0dXJuIGNhY2hlRW50cnk7CiAgICAgIH0KCiAgICAgIHZhciB4cmVmRW50cnkgPSB0aGlzLmdldEVudHJ5KG51bSk7CgogICAgICAvLyB0aGUgcmVmZXJlbmNlZCBlbnRyeSBjYW4gYmUgZnJlZQogICAgICBpZiAoeHJlZkVudHJ5ID09PSBudWxsKSB7CiAgICAgICAgcmV0dXJuICh0aGlzLmNhY2hlW251bV0gPSBudWxsKTsKICAgICAgfQoKICAgICAgaWYgKHhyZWZFbnRyeS51bmNvbXByZXNzZWQpIHsKICAgICAgICB4cmVmRW50cnkgPSB0aGlzLmZldGNoVW5jb21wcmVzc2VkKHJlZiwgeHJlZkVudHJ5LCBzdXBwcmVzc0VuY3J5cHRpb24pOwogICAgICB9IGVsc2UgewogICAgICAgIHhyZWZFbnRyeSA9IHRoaXMuZmV0Y2hDb21wcmVzc2VkKHhyZWZFbnRyeSwgc3VwcHJlc3NFbmNyeXB0aW9uKTsKICAgICAgfQogICAgICBpZiAoaXNEaWN0KHhyZWZFbnRyeSkpewogICAgICAgIHhyZWZFbnRyeS5vYmpJZCA9IHJlZi50b1N0cmluZygpOwogICAgICB9IGVsc2UgaWYgKGlzU3RyZWFtKHhyZWZFbnRyeSkpIHsKICAgICAgICB4cmVmRW50cnkuZGljdC5vYmpJZCA9IHJlZi50b1N0cmluZygpOwogICAgICB9CiAgICAgIHJldHVybiB4cmVmRW50cnk7CiAgICB9LAoKICAgIGZldGNoVW5jb21wcmVzc2VkOiBmdW5jdGlvbiBYUmVmX2ZldGNoVW5jb21wcmVzc2VkKHJlZiwgeHJlZkVudHJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcHJlc3NFbmNyeXB0aW9uKSB7CiAgICAgIHZhciBnZW4gPSByZWYuZ2VuOwogICAgICB2YXIgbnVtID0gcmVmLm51bTsKICAgICAgaWYgKHhyZWZFbnRyeS5nZW4gIT09IGdlbikgewogICAgICAgIGVycm9yKCdpbmNvbnNpc3RlbnQgZ2VuZXJhdGlvbiBpbiBYUmVmJyk7CiAgICAgIH0KICAgICAgdmFyIHN0cmVhbSA9IHRoaXMuc3RyZWFtLm1ha2VTdWJTdHJlYW0oeHJlZkVudHJ5Lm9mZnNldCArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RyZWFtLnN0YXJ0KTsKICAgICAgdmFyIHBhcnNlciA9IG5ldyBQYXJzZXIobmV3IExleGVyKHN0cmVhbSksIHRydWUsIHRoaXMpOwogICAgICB2YXIgb2JqMSA9IHBhcnNlci5nZXRPYmooKTsKICAgICAgdmFyIG9iajIgPSBwYXJzZXIuZ2V0T2JqKCk7CiAgICAgIHZhciBvYmozID0gcGFyc2VyLmdldE9iaigpOwogICAgICBpZiAoIWlzSW50KG9iajEpIHx8IHBhcnNlSW50KG9iajEsIDEwKSAhPT0gbnVtIHx8CiAgICAgICAgICAhaXNJbnQob2JqMikgfHwgcGFyc2VJbnQob2JqMiwgMTApICE9PSBnZW4gfHwKICAgICAgICAgICFpc0NtZChvYmozKSkgewogICAgICAgIGVycm9yKCdiYWQgWFJlZiBlbnRyeScpOwogICAgICB9CiAgICAgIGlmICghaXNDbWQob2JqMywgJ29iaicpKSB7CiAgICAgICAgLy8gc29tZSBiYWQgUERGcyB1c2UgIm9iajEyMzQiIGFuZCByZWFsbHkgbWVhbiAxMjM0CiAgICAgICAgaWYgKG9iajMuY21kLmluZGV4T2YoJ29iaicpID09PSAwKSB7CiAgICAgICAgICBudW0gPSBwYXJzZUludChvYmozLmNtZC5zdWJzdHJpbmcoMyksIDEwKTsKICAgICAgICAgIGlmICghaXNOYU4obnVtKSkgewogICAgICAgICAgICByZXR1cm4gbnVtOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlcnJvcignYmFkIFhSZWYgZW50cnknKTsKICAgICAgfQogICAgICBpZiAodGhpcy5lbmNyeXB0ICYmICFzdXBwcmVzc0VuY3J5cHRpb24pIHsKICAgICAgICB4cmVmRW50cnkgPSBwYXJzZXIuZ2V0T2JqKHRoaXMuZW5jcnlwdC5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0obnVtLCBnZW4pKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB4cmVmRW50cnkgPSBwYXJzZXIuZ2V0T2JqKCk7CiAgICAgIH0KICAgICAgaWYgKCFpc1N0cmVhbSh4cmVmRW50cnkpKSB7CiAgICAgICAgdGhpcy5jYWNoZVtudW1dID0geHJlZkVudHJ5OwogICAgICB9CiAgICAgIHJldHVybiB4cmVmRW50cnk7CiAgICB9LAoKICAgIGZldGNoQ29tcHJlc3NlZDogZnVuY3Rpb24gWFJlZl9mZXRjaENvbXByZXNzZWQoeHJlZkVudHJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwcmVzc0VuY3J5cHRpb24pIHsKICAgICAgdmFyIHRhYmxlT2Zmc2V0ID0geHJlZkVudHJ5Lm9mZnNldDsKICAgICAgdmFyIHN0cmVhbSA9IHRoaXMuZmV0Y2gobmV3IFJlZih0YWJsZU9mZnNldCwgMCkpOwogICAgICBpZiAoIWlzU3RyZWFtKHN0cmVhbSkpIHsKICAgICAgICBlcnJvcignYmFkIE9ialN0bSBzdHJlYW0nKTsKICAgICAgfQogICAgICB2YXIgZmlyc3QgPSBzdHJlYW0uZGljdC5nZXQoJ0ZpcnN0Jyk7CiAgICAgIHZhciBuID0gc3RyZWFtLmRpY3QuZ2V0KCdOJyk7CiAgICAgIGlmICghaXNJbnQoZmlyc3QpIHx8ICFpc0ludChuKSkgewogICAgICAgIGVycm9yKCdpbnZhbGlkIGZpcnN0IGFuZCBuIHBhcmFtZXRlcnMgZm9yIE9ialN0bSBzdHJlYW0nKTsKICAgICAgfQogICAgICB2YXIgcGFyc2VyID0gbmV3IFBhcnNlcihuZXcgTGV4ZXIoc3RyZWFtKSwgZmFsc2UsIHRoaXMpOwogICAgICBwYXJzZXIuYWxsb3dTdHJlYW1zID0gdHJ1ZTsKICAgICAgdmFyIGksIGVudHJpZXMgPSBbXSwgbnVtLCBudW1zID0gW107CiAgICAgIC8vIHJlYWQgdGhlIG9iamVjdCBudW1iZXJzIHRvIHBvcHVsYXRlIGNhY2hlCiAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHsKICAgICAgICBudW0gPSBwYXJzZXIuZ2V0T2JqKCk7CiAgICAgICAgaWYgKCFpc0ludChudW0pKSB7CiAgICAgICAgICBlcnJvcignaW52YWxpZCBvYmplY3QgbnVtYmVyIGluIHRoZSBPYmpTdG0gc3RyZWFtOiAnICsgbnVtKTsKICAgICAgICB9CiAgICAgICAgbnVtcy5wdXNoKG51bSk7CiAgICAgICAgdmFyIG9mZnNldCA9IHBhcnNlci5nZXRPYmooKTsKICAgICAgICBpZiAoIWlzSW50KG9mZnNldCkpIHsKICAgICAgICAgIGVycm9yKCdpbnZhbGlkIG9iamVjdCBvZmZzZXQgaW4gdGhlIE9ialN0bSBzdHJlYW06ICcgKyBvZmZzZXQpOwogICAgICAgIH0KICAgICAgfQogICAgICAvLyByZWFkIHN0cmVhbSBvYmplY3RzIGZvciBjYWNoZQogICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7CiAgICAgICAgZW50cmllcy5wdXNoKHBhcnNlci5nZXRPYmooKSk7CiAgICAgICAgbnVtID0gbnVtc1tpXTsKICAgICAgICB2YXIgZW50cnkgPSB0aGlzLmVudHJpZXNbbnVtXTsKICAgICAgICBpZiAoZW50cnkgJiYgZW50cnkub2Zmc2V0ID09PSB0YWJsZU9mZnNldCAmJiBlbnRyeS5nZW4gPT09IGkpIHsKICAgICAgICAgIHRoaXMuY2FjaGVbbnVtXSA9IGVudHJpZXNbaV07CiAgICAgICAgfQogICAgICB9CiAgICAgIHhyZWZFbnRyeSA9IGVudHJpZXNbeHJlZkVudHJ5Lmdlbl07CiAgICAgIGlmICh4cmVmRW50cnkgPT09IHVuZGVmaW5lZCkgewogICAgICAgIGVycm9yKCdiYWQgWFJlZiBlbnRyeSBmb3IgY29tcHJlc3NlZCBvYmplY3QnKTsKICAgICAgfQogICAgICByZXR1cm4geHJlZkVudHJ5OwogICAgfSwKCiAgICBmZXRjaElmUmVmQXN5bmM6IGZ1bmN0aW9uIFhSZWZfZmV0Y2hJZlJlZkFzeW5jKG9iaikgewogICAgICBpZiAoIWlzUmVmKG9iaikpIHsKICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG9iaik7CiAgICAgIH0KICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hBc3luYyhvYmopOwogICAgfSwKCiAgICBmZXRjaEFzeW5jOiBmdW5jdGlvbiBYUmVmX2ZldGNoQXN5bmMocmVmLCBzdXBwcmVzc0VuY3J5cHRpb24pIHsKICAgICAgdmFyIHN0cmVhbU1hbmFnZXIgPSB0aGlzLnN0cmVhbS5tYW5hZ2VyOwogICAgICB2YXIgeHJlZiA9IHRoaXM7CiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiB0cnlGZXRjaChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICB0cnkgewogICAgICAgICAgcmVzb2x2ZSh4cmVmLmZldGNoKHJlZiwgc3VwcHJlc3NFbmNyeXB0aW9uKSk7CiAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbikgewogICAgICAgICAgICBzdHJlYW1NYW5hZ2VyLnJlcXVlc3RSYW5nZShlLmJlZ2luLCBlLmVuZCwgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgIHRyeUZldGNoKHJlc29sdmUsIHJlamVjdCk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9CiAgICAgICAgICByZWplY3QoZSk7CiAgICAgICAgfQogICAgICB9KTsKICAgIH0sCgogICAgZ2V0Q2F0YWxvZ09iajogZnVuY3Rpb24gWFJlZl9nZXRDYXRhbG9nT2JqKCkgewogICAgICByZXR1cm4gdGhpcy5yb290OwogICAgfQogIH07CgogIHJldHVybiBYUmVmOwp9KSgpOwoKLyoqCiAqIEEgTmFtZVRyZWUgaXMgbGlrZSBhIERpY3QgYnV0IGhhcyBzb21lIGFkdmFudGFnZW91cyBwcm9wZXJ0aWVzLCBzZWUgdGhlCiAqIHNwZWMgKDcuOS42KSBmb3IgbW9yZSBkZXRhaWxzLgogKiBUT0RPOiBpbXBsZW1lbnQgYWxsIHRoZSBEaWN0IGZ1bmN0aW9ucyBhbmQgbWFrZSB0aGlzIG1vcmUgZWZmaWNlbnQuCiAqLwp2YXIgTmFtZVRyZWUgPSAoZnVuY3Rpb24gTmFtZVRyZWVDbG9zdXJlKCkgewogIGZ1bmN0aW9uIE5hbWVUcmVlKHJvb3QsIHhyZWYpIHsKICAgIHRoaXMucm9vdCA9IHJvb3Q7CiAgICB0aGlzLnhyZWYgPSB4cmVmOwogIH0KCiAgTmFtZVRyZWUucHJvdG90eXBlID0gewogICAgZ2V0QWxsOiBmdW5jdGlvbiBOYW1lVHJlZV9nZXRBbGwoKSB7CiAgICAgIHZhciBkaWN0ID0ge307CiAgICAgIGlmICghdGhpcy5yb290KSB7CiAgICAgICAgcmV0dXJuIGRpY3Q7CiAgICAgIH0KICAgICAgdmFyIHhyZWYgPSB0aGlzLnhyZWY7CiAgICAgIC8vIHJlYWRpbmcgbmFtZSB0cmVlCiAgICAgIHZhciBwcm9jZXNzZWQgPSBuZXcgUmVmU2V0KCk7CiAgICAgIHByb2Nlc3NlZC5wdXQodGhpcy5yb290KTsKICAgICAgdmFyIHF1ZXVlID0gW3RoaXMucm9vdF07CiAgICAgIHdoaWxlIChxdWV1ZS5sZW5ndGggPiAwKSB7CiAgICAgICAgdmFyIGksIG47CiAgICAgICAgdmFyIG9iaiA9IHhyZWYuZmV0Y2hJZlJlZihxdWV1ZS5zaGlmdCgpKTsKICAgICAgICBpZiAoIWlzRGljdChvYmopKSB7CiAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgaWYgKG9iai5oYXMoJ0tpZHMnKSkgewogICAgICAgICAgdmFyIGtpZHMgPSBvYmouZ2V0KCdLaWRzJyk7CiAgICAgICAgICBmb3IgKGkgPSAwLCBuID0ga2lkcy5sZW5ndGg7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgdmFyIGtpZCA9IGtpZHNbaV07CiAgICAgICAgICAgIGlmIChwcm9jZXNzZWQuaGFzKGtpZCkpIHsKICAgICAgICAgICAgICBlcnJvcignaW52YWxpZCBkZXN0aW5hdGlvbnMnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBxdWV1ZS5wdXNoKGtpZCk7CiAgICAgICAgICAgIHByb2Nlc3NlZC5wdXQoa2lkKTsKICAgICAgICAgIH0KICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgICAgICB2YXIgbmFtZXMgPSBvYmouZ2V0KCdOYW1lcycpOwogICAgICAgIGlmIChuYW1lcykgewogICAgICAgICAgZm9yIChpID0gMCwgbiA9IG5hbWVzLmxlbmd0aDsgaSA8IG47IGkgKz0gMikgewogICAgICAgICAgICBkaWN0W25hbWVzW2ldXSA9IHhyZWYuZmV0Y2hJZlJlZihuYW1lc1tpICsgMV0pOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gZGljdDsKICAgIH0sCgogICAgZ2V0OiBmdW5jdGlvbiBOYW1lVHJlZV9nZXQoZGVzdGluYXRpb25JZCkgewogICAgICBpZiAoIXRoaXMucm9vdCkgewogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CgogICAgICB2YXIgeHJlZiA9IHRoaXMueHJlZjsKICAgICAgdmFyIGtpZHNPck5hbWVzID0geHJlZi5mZXRjaElmUmVmKHRoaXMucm9vdCk7CiAgICAgIHZhciBsb29wQ291bnQgPSAwOwogICAgICB2YXIgTUFYX05BTUVTX0xFVkVMUyA9IDEwOwogICAgICB2YXIgbCwgciwgbTsKCiAgICAgIC8vIFBlcmZvcm0gYSBiaW5hcnkgc2VhcmNoIHRvIHF1aWNrbHkgZmluZCB0aGUgZW50cnkgdGhhdAogICAgICAvLyBjb250YWlucyB0aGUgbmFtZWQgZGVzdGluYXRpb24gd2UgYXJlIGxvb2tpbmcgZm9yLgogICAgICB3aGlsZSAoa2lkc09yTmFtZXMuaGFzKCdLaWRzJykpIHsKICAgICAgICBsb29wQ291bnQrKzsKICAgICAgICBpZiAobG9vcENvdW50ID4gTUFYX05BTUVTX0xFVkVMUykgewogICAgICAgICAgd2FybignU2VhcmNoIGRlcHRoIGxpbWl0IGZvciBuYW1lZCBkZXN0aW9uYXRpb25zIGhhcyBiZWVuIHJlYWNoZWQuJyk7CiAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgIHZhciBraWRzID0ga2lkc09yTmFtZXMuZ2V0KCdLaWRzJyk7CiAgICAgICAgaWYgKCFpc0FycmF5KGtpZHMpKSB7CiAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgIGwgPSAwOwogICAgICAgIHIgPSBraWRzLmxlbmd0aCAtIDE7CiAgICAgICAgd2hpbGUgKGwgPD0gcikgewogICAgICAgICAgbSA9IChsICsgcikgPj4gMTsKICAgICAgICAgIHZhciBraWQgPSB4cmVmLmZldGNoSWZSZWYoa2lkc1ttXSk7CiAgICAgICAgICB2YXIgbGltaXRzID0ga2lkLmdldCgnTGltaXRzJyk7CgogICAgICAgICAgaWYgKGRlc3RpbmF0aW9uSWQgPCBsaW1pdHNbMF0pIHsKICAgICAgICAgICAgciA9IG0gLSAxOwogICAgICAgICAgfSBlbHNlIGlmIChkZXN0aW5hdGlvbklkID4gbGltaXRzWzFdKSB7CiAgICAgICAgICAgIGwgPSBtICsgMTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGtpZHNPck5hbWVzID0geHJlZi5mZXRjaElmUmVmKGtpZHNbbV0pOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKGwgPiByKSB7CiAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIElmIHdlIGdldCBoZXJlLCB0aGVuIHdlIGhhdmUgZm91bmQgdGhlIHJpZ2h0IGVudHJ5LiBOb3cKICAgICAgLy8gZ28gdGhyb3VnaCB0aGUgbmFtZWQgZGVzdGluYXRpb25zIGluIHRoZSBOYW1lZCBkaWN0aW9uYXJ5CiAgICAgIC8vIHVudGlsIHdlIGZpbmQgdGhlIGV4YWN0IGRlc3RpbmF0aW9uIHdlJ3JlIGxvb2tpbmcgZm9yLgogICAgICB2YXIgbmFtZXMgPSBraWRzT3JOYW1lcy5nZXQoJ05hbWVzJyk7CiAgICAgIGlmIChpc0FycmF5KG5hbWVzKSkgewogICAgICAgIC8vIFBlcmZvcm0gYSBiaW5hcnkgc2VhcmNoIHRvIHJlZHVjZSB0aGUgbG9va3VwIHRpbWUuCiAgICAgICAgbCA9IDA7CiAgICAgICAgciA9IG5hbWVzLmxlbmd0aCAtIDI7CiAgICAgICAgd2hpbGUgKGwgPD0gcikgewogICAgICAgICAgLy8gQ2hlY2sgb25seSBldmVuIGluZGljZXMgKDAsIDIsIDQsIC4uLikgYmVjYXVzZSB0aGUKICAgICAgICAgIC8vIG9kZCBpbmRpY2VzIGNvbnRhaW4gdGhlIGFjdHVhbCBEIGFycmF5LgogICAgICAgICAgbSA9IChsICsgcikgJiB+MTsKICAgICAgICAgIGlmIChkZXN0aW5hdGlvbklkIDwgbmFtZXNbbV0pIHsKICAgICAgICAgICAgciA9IG0gLSAyOwogICAgICAgICAgfSBlbHNlIGlmIChkZXN0aW5hdGlvbklkID4gbmFtZXNbbV0pIHsKICAgICAgICAgICAgbCA9IG0gKyAyOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIHhyZWYuZmV0Y2hJZlJlZihuYW1lc1ttICsgMV0pOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gbnVsbDsKICAgIH0KICB9OwogIHJldHVybiBOYW1lVHJlZTsKfSkoKTsKCi8qKgogKiAiQSBQREYgZmlsZSBjYW4gcmVmZXIgdG8gdGhlIGNvbnRlbnRzIG9mIGFub3RoZXIgZmlsZSBieSB1c2luZyBhIEZpbGUKICogU3BlY2lmaWNhdGlvbiAoUERGIDEuMSkiLCBzZWUgdGhlIHNwZWMgKDcuMTEpIGZvciBtb3JlIGRldGFpbHMuCiAqIE5PVEU6IE9ubHkgZW1iZWRkZWQgZmlsZXMgYXJlIHN1cHBvcnRlZCAoYXMgcGFydCBvZiB0aGUgYXR0YWNobWVudHMgc3VwcG9ydCkKICogVE9ETzogc3VwcG9ydCB0aGUgJ1VSTCcgZmlsZSBzeXN0ZW0gKHdpdGggY2FjaGluZyBpZiAhL1YpLCBwb3J0YWJsZQogKiBjb2xsZWN0aW9ucyBhdHRyaWJ1dGVzIGFuZCByZWxhdGVkIGZpbGVzICgvUkYpCiAqLwp2YXIgRmlsZVNwZWMgPSAoZnVuY3Rpb24gRmlsZVNwZWNDbG9zdXJlKCkgewogIGZ1bmN0aW9uIEZpbGVTcGVjKHJvb3QsIHhyZWYpIHsKICAgIGlmICghcm9vdCB8fCAhaXNEaWN0KHJvb3QpKSB7CiAgICAgIHJldHVybjsKICAgIH0KICAgIHRoaXMueHJlZiA9IHhyZWY7CiAgICB0aGlzLnJvb3QgPSByb290OwogICAgaWYgKHJvb3QuaGFzKCdGUycpKSB7CiAgICAgIHRoaXMuZnMgPSByb290LmdldCgnRlMnKTsKICAgIH0KICAgIHRoaXMuZGVzY3JpcHRpb24gPSByb290LmhhcygnRGVzYycpID8KICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ1RvUERGU3RyaW5nKHJvb3QuZ2V0KCdEZXNjJykpIDoKICAgICAgICAgICAgICAgICAgICAgICAgICcnOwogICAgaWYgKHJvb3QuaGFzKCdSRicpKSB7CiAgICAgIHdhcm4oJ1JlbGF0ZWQgZmlsZSBzcGVjaWZpY2F0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcpOwogICAgfQogICAgdGhpcy5jb250ZW50QXZhaWxhYmxlID0gdHJ1ZTsKICAgIGlmICghcm9vdC5oYXMoJ0VGJykpIHsKICAgICAgdGhpcy5jb250ZW50QXZhaWxhYmxlID0gZmFsc2U7CiAgICAgIHdhcm4oJ05vbi1lbWJlZGRlZCBmaWxlIHNwZWNpZmljYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkJyk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBwaWNrUGxhdGZvcm1JdGVtKGRpY3QpIHsKICAgIC8vIExvb2sgZm9yIHRoZSBmaWxlbmFtZSBpbiB0aGlzIG9yZGVyOgogICAgLy8gVUYsIEYsIFVuaXgsIE1hYywgRE9TCiAgICBpZiAoZGljdC5oYXMoJ1VGJykpIHsKICAgICAgcmV0dXJuIGRpY3QuZ2V0KCdVRicpOwogICAgfSBlbHNlIGlmIChkaWN0LmhhcygnRicpKSB7CiAgICAgIHJldHVybiBkaWN0LmdldCgnRicpOwogICAgfSBlbHNlIGlmIChkaWN0LmhhcygnVW5peCcpKSB7CiAgICAgIHJldHVybiBkaWN0LmdldCgnVW5peCcpOwogICAgfSBlbHNlIGlmIChkaWN0LmhhcygnTWFjJykpIHsKICAgICAgcmV0dXJuIGRpY3QuZ2V0KCdNYWMnKTsKICAgIH0gZWxzZSBpZiAoZGljdC5oYXMoJ0RPUycpKSB7CiAgICAgIHJldHVybiBkaWN0LmdldCgnRE9TJyk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0KICB9CgogIEZpbGVTcGVjLnByb3RvdHlwZSA9IHsKICAgIGdldCBmaWxlbmFtZSgpIHsKICAgICAgaWYgKCF0aGlzLl9maWxlbmFtZSAmJiB0aGlzLnJvb3QpIHsKICAgICAgICB2YXIgZmlsZW5hbWUgPSBwaWNrUGxhdGZvcm1JdGVtKHRoaXMucm9vdCkgfHwgJ3VubmFtZWQnOwogICAgICAgIHRoaXMuX2ZpbGVuYW1lID0gc3RyaW5nVG9QREZTdHJpbmcoZmlsZW5hbWUpLgogICAgICAgICAgcmVwbGFjZSgvXFxcXC9nLCAnXFwnKS4KICAgICAgICAgIHJlcGxhY2UoL1xcXC8vZywgJy8nKS4KICAgICAgICAgIHJlcGxhY2UoL1xcL2csICcvJyk7CiAgICAgIH0KICAgICAgcmV0dXJuIHRoaXMuX2ZpbGVuYW1lOwogICAgfSwKICAgIGdldCBjb250ZW50KCkgewogICAgICBpZiAoIXRoaXMuY29udGVudEF2YWlsYWJsZSkgewogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CiAgICAgIGlmICghdGhpcy5jb250ZW50UmVmICYmIHRoaXMucm9vdCkgewogICAgICAgIHRoaXMuY29udGVudFJlZiA9IHBpY2tQbGF0Zm9ybUl0ZW0odGhpcy5yb290LmdldCgnRUYnKSk7CiAgICAgIH0KICAgICAgdmFyIGNvbnRlbnQgPSBudWxsOwogICAgICBpZiAodGhpcy5jb250ZW50UmVmKSB7CiAgICAgICAgdmFyIHhyZWYgPSB0aGlzLnhyZWY7CiAgICAgICAgdmFyIGZpbGVPYmogPSB4cmVmLmZldGNoSWZSZWYodGhpcy5jb250ZW50UmVmKTsKICAgICAgICBpZiAoZmlsZU9iaiAmJiBpc1N0cmVhbShmaWxlT2JqKSkgewogICAgICAgICAgY29udGVudCA9IGZpbGVPYmouZ2V0Qnl0ZXMoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgd2FybignRW1iZWRkZWQgZmlsZSBzcGVjaWZpY2F0aW9uIHBvaW50cyB0byBub24tZXhpc3RpbmcvaW52YWxpZCAnICsKICAgICAgICAgICAgJ2NvbnRlbnQnKTsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgd2FybignRW1iZWRkZWQgZmlsZSBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IGhhdmUgYSBjb250ZW50Jyk7CiAgICAgIH0KICAgICAgcmV0dXJuIGNvbnRlbnQ7CiAgICB9LAogICAgZ2V0IHNlcmlhbGl6YWJsZSgpIHsKICAgICAgcmV0dXJuIHsKICAgICAgICBmaWxlbmFtZTogdGhpcy5maWxlbmFtZSwKICAgICAgICBjb250ZW50OiB0aGlzLmNvbnRlbnQKICAgICAgfTsKICAgIH0KICB9OwogIHJldHVybiBGaWxlU3BlYzsKfSkoKTsKCi8qKgogKiBBIGhlbHBlciBmb3IgbG9hZGluZyBtaXNzaW5nIGRhdGEgaW4gb2JqZWN0IGdyYXBocy4gSXQgdHJhdmVyc2VzIHRoZSBncmFwaAogKiBkZXB0aCBmaXJzdCBhbmQgcXVldWVzIHVwIGFueSBvYmplY3RzIHRoYXQgaGF2ZSBtaXNzaW5nIGRhdGEuIE9uY2UgaXQgaGFzCiAqIGhhcyB0cmF2ZXJzZWQgYXMgbWFueSBvYmplY3RzIHRoYXQgYXJlIGF2YWlsYWJsZSBpdCBhdHRlbXB0cyB0byBidW5kbGUgdGhlCiAqIG1pc3NpbmcgZGF0YSByZXF1ZXN0cyBhbmQgdGhlbiByZXN1bWUgZnJvbSB0aGUgbm9kZXMgdGhhdCB3ZXJlbid0IHJlYWR5LgogKgogKiBOT1RFOiBJdCBwcm92aWRlcyBwcm90ZWN0aW9uIGZyb20gY2lyY3VsYXIgcmVmZXJlbmNlcyBieSBrZWVwaW5nIHRyYWNrIG9mCiAqIG9mIGxvYWRlZCByZWZlcmVuY2VzLiBIb3dldmVyLCB5b3UgbXVzdCBiZSBjYXJlZnVsIG5vdCB0byBsb2FkIGFueSBncmFwaHMKICogdGhhdCBoYXZlIHJlZmVyZW5jZXMgdG8gdGhlIGNhdGFsb2cgb3Igb3RoZXIgcGFnZXMgc2luY2UgdGhhdCB3aWxsIGNhdXNlIHRoZQogKiBlbnRpcmUgUERGIGRvY3VtZW50IG9iamVjdCBncmFwaCB0byBiZSB0cmF2ZXJzZWQuCiAqLwp2YXIgT2JqZWN0TG9hZGVyID0gKGZ1bmN0aW9uKCkgewogIGZ1bmN0aW9uIG1heUhhdmVDaGlsZHJlbih2YWx1ZSkgewogICAgcmV0dXJuIGlzUmVmKHZhbHVlKSB8fCBpc0RpY3QodmFsdWUpIHx8IGlzQXJyYXkodmFsdWUpIHx8IGlzU3RyZWFtKHZhbHVlKTsKICB9CgogIGZ1bmN0aW9uIGFkZENoaWxkcmVuKG5vZGUsIG5vZGVzVG9WaXNpdCkgewogICAgdmFyIHZhbHVlOwogICAgaWYgKGlzRGljdChub2RlKSB8fCBpc1N0cmVhbShub2RlKSkgewogICAgICB2YXIgbWFwOwogICAgICBpZiAoaXNEaWN0KG5vZGUpKSB7CiAgICAgICAgbWFwID0gbm9kZS5tYXA7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgbWFwID0gbm9kZS5kaWN0Lm1hcDsKICAgICAgfQogICAgICBmb3IgKHZhciBrZXkgaW4gbWFwKSB7CiAgICAgICAgdmFsdWUgPSBtYXBba2V5XTsKICAgICAgICBpZiAobWF5SGF2ZUNoaWxkcmVuKHZhbHVlKSkgewogICAgICAgICAgbm9kZXNUb1Zpc2l0LnB1c2godmFsdWUpOwogICAgICAgIH0KICAgICAgfQogICAgfSBlbHNlIGlmIChpc0FycmF5KG5vZGUpKSB7CiAgICAgIGZvciAodmFyIGkgPSAwLCBpaSA9IG5vZGUubGVuZ3RoOyBpIDwgaWk7IGkrKykgewogICAgICAgIHZhbHVlID0gbm9kZVtpXTsKICAgICAgICBpZiAobWF5SGF2ZUNoaWxkcmVuKHZhbHVlKSkgewogICAgICAgICAgbm9kZXNUb1Zpc2l0LnB1c2godmFsdWUpOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH0KCiAgZnVuY3Rpb24gT2JqZWN0TG9hZGVyKG9iaiwga2V5cywgeHJlZikgewogICAgdGhpcy5vYmogPSBvYmo7CiAgICB0aGlzLmtleXMgPSBrZXlzOwogICAgdGhpcy54cmVmID0geHJlZjsKICAgIHRoaXMucmVmU2V0ID0gbnVsbDsKICB9CgogIE9iamVjdExvYWRlci5wcm90b3R5cGUgPSB7CiAgICBsb2FkOiBmdW5jdGlvbiBPYmplY3RMb2FkZXJfbG9hZCgpIHsKICAgICAgdmFyIGtleXMgPSB0aGlzLmtleXM7CiAgICAgIHRoaXMuY2FwYWJpbGl0eSA9IGNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KCk7CiAgICAgIC8vIERvbid0IHdhbGsgdGhlIGdyYXBoIGlmIGFsbCB0aGUgZGF0YSBpcyBhbHJlYWR5IGxvYWRlZC4KICAgICAgaWYgKCEodGhpcy54cmVmLnN0cmVhbSBpbnN0YW5jZW9mIENodW5rZWRTdHJlYW0pIHx8CiAgICAgICAgICB0aGlzLnhyZWYuc3RyZWFtLmdldE1pc3NpbmdDaHVua3MoKS5sZW5ndGggPT09IDApIHsKICAgICAgICB0aGlzLmNhcGFiaWxpdHkucmVzb2x2ZSgpOwogICAgICAgIHJldHVybiB0aGlzLmNhcGFiaWxpdHkucHJvbWlzZTsKICAgICAgfQoKICAgICAgdGhpcy5yZWZTZXQgPSBuZXcgUmVmU2V0KCk7CiAgICAgIC8vIFNldHVwIHRoZSBpbml0aWFsIG5vZGVzIHRvIHZpc2l0LgogICAgICB2YXIgbm9kZXNUb1Zpc2l0ID0gW107CiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykgewogICAgICAgIG5vZGVzVG9WaXNpdC5wdXNoKHRoaXMub2JqW2tleXNbaV1dKTsKICAgICAgfQoKICAgICAgdGhpcy53YWxrKG5vZGVzVG9WaXNpdCk7CiAgICAgIHJldHVybiB0aGlzLmNhcGFiaWxpdHkucHJvbWlzZTsKICAgIH0sCgogICAgd2FsazogZnVuY3Rpb24gT2JqZWN0TG9hZGVyX3dhbGsobm9kZXNUb1Zpc2l0KSB7CiAgICAgIHZhciBub2Rlc1RvUmV2aXNpdCA9IFtdOwogICAgICB2YXIgcGVuZGluZ1JlcXVlc3RzID0gW107CiAgICAgIC8vIERGUyB3YWxrIG9mIHRoZSBvYmplY3QgZ3JhcGguCiAgICAgIHdoaWxlIChub2Rlc1RvVmlzaXQubGVuZ3RoKSB7CiAgICAgICAgdmFyIGN1cnJlbnROb2RlID0gbm9kZXNUb1Zpc2l0LnBvcCgpOwoKICAgICAgICAvLyBPbmx5IHJlZmVyZW5jZXMgb3IgY2h1bmtlZCBzdHJlYW1zIGNhbiBjYXVzZSBtaXNzaW5nIGRhdGEgZXhjZXB0aW9ucy4KICAgICAgICBpZiAoaXNSZWYoY3VycmVudE5vZGUpKSB7CiAgICAgICAgICAvLyBTa2lwIG5vZGVzIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gdmlzaXRlZC4KICAgICAgICAgIGlmICh0aGlzLnJlZlNldC5oYXMoY3VycmVudE5vZGUpKSB7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgfQogICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgdmFyIHJlZiA9IGN1cnJlbnROb2RlOwogICAgICAgICAgICB0aGlzLnJlZlNldC5wdXQocmVmKTsKICAgICAgICAgICAgY3VycmVudE5vZGUgPSB0aGlzLnhyZWYuZmV0Y2goY3VycmVudE5vZGUpOwogICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pKSB7CiAgICAgICAgICAgICAgdGhyb3cgZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBub2Rlc1RvUmV2aXNpdC5wdXNoKGN1cnJlbnROb2RlKTsKICAgICAgICAgICAgcGVuZGluZ1JlcXVlc3RzLnB1c2goeyBiZWdpbjogZS5iZWdpbiwgZW5kOiBlLmVuZCB9KTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKGN1cnJlbnROb2RlICYmIGN1cnJlbnROb2RlLmdldEJhc2VTdHJlYW1zKSB7CiAgICAgICAgICB2YXIgYmFzZVN0cmVhbXMgPSBjdXJyZW50Tm9kZS5nZXRCYXNlU3RyZWFtcygpOwogICAgICAgICAgdmFyIGZvdW5kTWlzc2luZ0RhdGEgPSBmYWxzZTsKICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmFzZVN0cmVhbXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdmFyIHN0cmVhbSA9IGJhc2VTdHJlYW1zW2ldOwogICAgICAgICAgICBpZiAoc3RyZWFtLmdldE1pc3NpbmdDaHVua3MgJiYgc3RyZWFtLmdldE1pc3NpbmdDaHVua3MoKS5sZW5ndGgpIHsKICAgICAgICAgICAgICBmb3VuZE1pc3NpbmdEYXRhID0gdHJ1ZTsKICAgICAgICAgICAgICBwZW5kaW5nUmVxdWVzdHMucHVzaCh7CiAgICAgICAgICAgICAgICBiZWdpbjogc3RyZWFtLnN0YXJ0LAogICAgICAgICAgICAgICAgZW5kOiBzdHJlYW0uZW5kCiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGlmIChmb3VuZE1pc3NpbmdEYXRhKSB7CiAgICAgICAgICAgIG5vZGVzVG9SZXZpc2l0LnB1c2goY3VycmVudE5vZGUpOwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgYWRkQ2hpbGRyZW4oY3VycmVudE5vZGUsIG5vZGVzVG9WaXNpdCk7CiAgICAgIH0KCiAgICAgIGlmIChwZW5kaW5nUmVxdWVzdHMubGVuZ3RoKSB7CiAgICAgICAgdGhpcy54cmVmLnN0cmVhbS5tYW5hZ2VyLnJlcXVlc3RSYW5nZXMocGVuZGluZ1JlcXVlc3RzLAogICAgICAgICAgICBmdW5jdGlvbiBwZW5kaW5nUmVxdWVzdENhbGxiYWNrKCkgewogICAgICAgICAgbm9kZXNUb1Zpc2l0ID0gbm9kZXNUb1JldmlzaXQ7CiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzVG9SZXZpc2l0Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIHZhciBub2RlID0gbm9kZXNUb1JldmlzaXRbaV07CiAgICAgICAgICAgIC8vIFJlbW92ZSBhbnkgcmVmZXJlbmNlIG5vZGVzIGZyb20gdGhlIGN1cnJyZW50IHJlZnNldCBzbyB0aGV5CiAgICAgICAgICAgIC8vIGFyZW4ndCBza2lwcGVkIHdoZW4gd2UgcmV2aXN0IHRoZW0uCiAgICAgICAgICAgIGlmIChpc1JlZihub2RlKSkgewogICAgICAgICAgICAgIHRoaXMucmVmU2V0LnJlbW92ZShub2RlKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgdGhpcy53YWxrKG5vZGVzVG9WaXNpdCk7CiAgICAgICAgfS5iaW5kKHRoaXMpKTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgLy8gRXZlcnl0aGluZyBpcyBsb2FkZWQuCiAgICAgIHRoaXMucmVmU2V0ID0gbnVsbDsKICAgICAgdGhpcy5jYXBhYmlsaXR5LnJlc29sdmUoKTsKICAgIH0KICB9OwoKICByZXR1cm4gT2JqZWN0TG9hZGVyOwp9KSgpOwoKCnZhciBJU09BZG9iZUNoYXJzZXQgPSBbCiAgJy5ub3RkZWYnLCAnc3BhY2UnLCAnZXhjbGFtJywgJ3F1b3RlZGJsJywgJ251bWJlcnNpZ24nLCAnZG9sbGFyJywKICAncGVyY2VudCcsICdhbXBlcnNhbmQnLCAncXVvdGVyaWdodCcsICdwYXJlbmxlZnQnLCAncGFyZW5yaWdodCcsCiAgJ2FzdGVyaXNrJywgJ3BsdXMnLCAnY29tbWEnLCAnaHlwaGVuJywgJ3BlcmlvZCcsICdzbGFzaCcsICd6ZXJvJywKICAnb25lJywgJ3R3bycsICd0aHJlZScsICdmb3VyJywgJ2ZpdmUnLCAnc2l4JywgJ3NldmVuJywgJ2VpZ2h0JywKICAnbmluZScsICdjb2xvbicsICdzZW1pY29sb24nLCAnbGVzcycsICdlcXVhbCcsICdncmVhdGVyJywgJ3F1ZXN0aW9uJywKICAnYXQnLCAnQScsICdCJywgJ0MnLCAnRCcsICdFJywgJ0YnLCAnRycsICdIJywgJ0knLCAnSicsICdLJywgJ0wnLCAnTScsCiAgJ04nLCAnTycsICdQJywgJ1EnLCAnUicsICdTJywgJ1QnLCAnVScsICdWJywgJ1cnLCAnWCcsICdZJywgJ1onLAogICdicmFja2V0bGVmdCcsICdiYWNrc2xhc2gnLCAnYnJhY2tldHJpZ2h0JywgJ2FzY2lpY2lyY3VtJywgJ3VuZGVyc2NvcmUnLAogICdxdW90ZWxlZnQnLCAnYScsICdiJywgJ2MnLCAnZCcsICdlJywgJ2YnLCAnZycsICdoJywgJ2knLCAnaicsICdrJywgJ2wnLAogICdtJywgJ24nLCAnbycsICdwJywgJ3EnLCAncicsICdzJywgJ3QnLCAndScsICd2JywgJ3cnLCAneCcsICd5JywgJ3onLAogICdicmFjZWxlZnQnLCAnYmFyJywgJ2JyYWNlcmlnaHQnLCAnYXNjaWl0aWxkZScsICdleGNsYW1kb3duJywgJ2NlbnQnLAogICdzdGVybGluZycsICdmcmFjdGlvbicsICd5ZW4nLCAnZmxvcmluJywgJ3NlY3Rpb24nLCAnY3VycmVuY3knLAogICdxdW90ZXNpbmdsZScsICdxdW90ZWRibGxlZnQnLCAnZ3VpbGxlbW90bGVmdCcsICdndWlsc2luZ2xsZWZ0JywKICAnZ3VpbHNpbmdscmlnaHQnLCAnZmknLCAnZmwnLCAnZW5kYXNoJywgJ2RhZ2dlcicsICdkYWdnZXJkYmwnLAogICdwZXJpb2RjZW50ZXJlZCcsICdwYXJhZ3JhcGgnLCAnYnVsbGV0JywgJ3F1b3Rlc2luZ2xiYXNlJywKICAncXVvdGVkYmxiYXNlJywgJ3F1b3RlZGJscmlnaHQnLCAnZ3VpbGxlbW90cmlnaHQnLCAnZWxsaXBzaXMnLAogICdwZXJ0aG91c2FuZCcsICdxdWVzdGlvbmRvd24nLCAnZ3JhdmUnLCAnYWN1dGUnLCAnY2lyY3VtZmxleCcsICd0aWxkZScsCiAgJ21hY3JvbicsICdicmV2ZScsICdkb3RhY2NlbnQnLCAnZGllcmVzaXMnLCAncmluZycsICdjZWRpbGxhJywKICAnaHVuZ2FydW1sYXV0JywgJ29nb25laycsICdjYXJvbicsICdlbWRhc2gnLCAnQUUnLCAnb3JkZmVtaW5pbmUnLAogICdMc2xhc2gnLCAnT3NsYXNoJywgJ09FJywgJ29yZG1hc2N1bGluZScsICdhZScsICdkb3RsZXNzaScsICdsc2xhc2gnLAogICdvc2xhc2gnLCAnb2UnLCAnZ2VybWFuZGJscycsICdvbmVzdXBlcmlvcicsICdsb2dpY2Fsbm90JywgJ211JywKICAndHJhZGVtYXJrJywgJ0V0aCcsICdvbmVoYWxmJywgJ3BsdXNtaW51cycsICdUaG9ybicsICdvbmVxdWFydGVyJywKICAnZGl2aWRlJywgJ2Jyb2tlbmJhcicsICdkZWdyZWUnLCAndGhvcm4nLCAndGhyZWVxdWFydGVycycsICd0d29zdXBlcmlvcicsCiAgJ3JlZ2lzdGVyZWQnLCAnbWludXMnLCAnZXRoJywgJ211bHRpcGx5JywgJ3RocmVlc3VwZXJpb3InLCAnY29weXJpZ2h0JywKICAnQWFjdXRlJywgJ0FjaXJjdW1mbGV4JywgJ0FkaWVyZXNpcycsICdBZ3JhdmUnLCAnQXJpbmcnLCAnQXRpbGRlJywKICAnQ2NlZGlsbGEnLCAnRWFjdXRlJywgJ0VjaXJjdW1mbGV4JywgJ0VkaWVyZXNpcycsICdFZ3JhdmUnLCAnSWFjdXRlJywKICAnSWNpcmN1bWZsZXgnLCAnSWRpZXJlc2lzJywgJ0lncmF2ZScsICdOdGlsZGUnLCAnT2FjdXRlJywgJ09jaXJjdW1mbGV4JywKICAnT2RpZXJlc2lzJywgJ09ncmF2ZScsICdPdGlsZGUnLCAnU2Nhcm9uJywgJ1VhY3V0ZScsICdVY2lyY3VtZmxleCcsCiAgJ1VkaWVyZXNpcycsICdVZ3JhdmUnLCAnWWFjdXRlJywgJ1lkaWVyZXNpcycsICdaY2Fyb24nLCAnYWFjdXRlJywKICAnYWNpcmN1bWZsZXgnLCAnYWRpZXJlc2lzJywgJ2FncmF2ZScsICdhcmluZycsICdhdGlsZGUnLCAnY2NlZGlsbGEnLAogICdlYWN1dGUnLCAnZWNpcmN1bWZsZXgnLCAnZWRpZXJlc2lzJywgJ2VncmF2ZScsICdpYWN1dGUnLCAnaWNpcmN1bWZsZXgnLAogICdpZGllcmVzaXMnLCAnaWdyYXZlJywgJ250aWxkZScsICdvYWN1dGUnLCAnb2NpcmN1bWZsZXgnLCAnb2RpZXJlc2lzJywKICAnb2dyYXZlJywgJ290aWxkZScsICdzY2Fyb24nLCAndWFjdXRlJywgJ3VjaXJjdW1mbGV4JywgJ3VkaWVyZXNpcycsCiAgJ3VncmF2ZScsICd5YWN1dGUnLCAneWRpZXJlc2lzJywgJ3pjYXJvbicKXTsKCnZhciBFeHBlcnRDaGFyc2V0ID0gWwogICcubm90ZGVmJywgJ3NwYWNlJywgJ2V4Y2xhbXNtYWxsJywgJ0h1bmdhcnVtbGF1dHNtYWxsJywgJ2RvbGxhcm9sZHN0eWxlJywKICAnZG9sbGFyc3VwZXJpb3InLCAnYW1wZXJzYW5kc21hbGwnLCAnQWN1dGVzbWFsbCcsICdwYXJlbmxlZnRzdXBlcmlvcicsCiAgJ3BhcmVucmlnaHRzdXBlcmlvcicsICd0d29kb3RlbmxlYWRlcicsICdvbmVkb3RlbmxlYWRlcicsICdjb21tYScsCiAgJ2h5cGhlbicsICdwZXJpb2QnLCAnZnJhY3Rpb24nLCAnemVyb29sZHN0eWxlJywgJ29uZW9sZHN0eWxlJywKICAndHdvb2xkc3R5bGUnLCAndGhyZWVvbGRzdHlsZScsICdmb3Vyb2xkc3R5bGUnLCAnZml2ZW9sZHN0eWxlJywKICAnc2l4b2xkc3R5bGUnLCAnc2V2ZW5vbGRzdHlsZScsICdlaWdodG9sZHN0eWxlJywgJ25pbmVvbGRzdHlsZScsCiAgJ2NvbG9uJywgJ3NlbWljb2xvbicsICdjb21tYXN1cGVyaW9yJywgJ3RocmVlcXVhcnRlcnNlbWRhc2gnLAogICdwZXJpb2RzdXBlcmlvcicsICdxdWVzdGlvbnNtYWxsJywgJ2FzdXBlcmlvcicsICdic3VwZXJpb3InLAogICdjZW50c3VwZXJpb3InLCAnZHN1cGVyaW9yJywgJ2VzdXBlcmlvcicsICdpc3VwZXJpb3InLCAnbHN1cGVyaW9yJywKICAnbXN1cGVyaW9yJywgJ25zdXBlcmlvcicsICdvc3VwZXJpb3InLCAncnN1cGVyaW9yJywgJ3NzdXBlcmlvcicsCiAgJ3RzdXBlcmlvcicsICdmZicsICdmaScsICdmbCcsICdmZmknLCAnZmZsJywgJ3BhcmVubGVmdGluZmVyaW9yJywKICAncGFyZW5yaWdodGluZmVyaW9yJywgJ0NpcmN1bWZsZXhzbWFsbCcsICdoeXBoZW5zdXBlcmlvcicsICdHcmF2ZXNtYWxsJywKICAnQXNtYWxsJywgJ0JzbWFsbCcsICdDc21hbGwnLCAnRHNtYWxsJywgJ0VzbWFsbCcsICdGc21hbGwnLCAnR3NtYWxsJywKICAnSHNtYWxsJywgJ0lzbWFsbCcsICdKc21hbGwnLCAnS3NtYWxsJywgJ0xzbWFsbCcsICdNc21hbGwnLCAnTnNtYWxsJywKICAnT3NtYWxsJywgJ1BzbWFsbCcsICdRc21hbGwnLCAnUnNtYWxsJywgJ1NzbWFsbCcsICdUc21hbGwnLCAnVXNtYWxsJywKICAnVnNtYWxsJywgJ1dzbWFsbCcsICdYc21hbGwnLCAnWXNtYWxsJywgJ1pzbWFsbCcsICdjb2xvbm1vbmV0YXJ5JywKICAnb25lZml0dGVkJywgJ3J1cGlhaCcsICdUaWxkZXNtYWxsJywgJ2V4Y2xhbWRvd25zbWFsbCcsICdjZW50b2xkc3R5bGUnLAogICdMc2xhc2hzbWFsbCcsICdTY2Fyb25zbWFsbCcsICdaY2Fyb25zbWFsbCcsICdEaWVyZXNpc3NtYWxsJywKICAnQnJldmVzbWFsbCcsICdDYXJvbnNtYWxsJywgJ0RvdGFjY2VudHNtYWxsJywgJ01hY3JvbnNtYWxsJywKICAnZmlndXJlZGFzaCcsICdoeXBoZW5pbmZlcmlvcicsICdPZ29uZWtzbWFsbCcsICdSaW5nc21hbGwnLAogICdDZWRpbGxhc21hbGwnLCAnb25lcXVhcnRlcicsICdvbmVoYWxmJywgJ3RocmVlcXVhcnRlcnMnLAogICdxdWVzdGlvbmRvd25zbWFsbCcsICdvbmVlaWdodGgnLCAndGhyZWVlaWdodGhzJywgJ2ZpdmVlaWdodGhzJywKICAnc2V2ZW5laWdodGhzJywgJ29uZXRoaXJkJywgJ3R3b3RoaXJkcycsICd6ZXJvc3VwZXJpb3InLCAnb25lc3VwZXJpb3InLAogICd0d29zdXBlcmlvcicsICd0aHJlZXN1cGVyaW9yJywgJ2ZvdXJzdXBlcmlvcicsICdmaXZlc3VwZXJpb3InLAogICdzaXhzdXBlcmlvcicsICdzZXZlbnN1cGVyaW9yJywgJ2VpZ2h0c3VwZXJpb3InLCAnbmluZXN1cGVyaW9yJywKICAnemVyb2luZmVyaW9yJywgJ29uZWluZmVyaW9yJywgJ3R3b2luZmVyaW9yJywgJ3RocmVlaW5mZXJpb3InLAogICdmb3VyaW5mZXJpb3InLCAnZml2ZWluZmVyaW9yJywgJ3NpeGluZmVyaW9yJywgJ3NldmVuaW5mZXJpb3InLAogICdlaWdodGluZmVyaW9yJywgJ25pbmVpbmZlcmlvcicsICdjZW50aW5mZXJpb3InLCAnZG9sbGFyaW5mZXJpb3InLAogICdwZXJpb2RpbmZlcmlvcicsICdjb21tYWluZmVyaW9yJywgJ0FncmF2ZXNtYWxsJywgJ0FhY3V0ZXNtYWxsJywKICAnQWNpcmN1bWZsZXhzbWFsbCcsICdBdGlsZGVzbWFsbCcsICdBZGllcmVzaXNzbWFsbCcsICdBcmluZ3NtYWxsJywKICAnQUVzbWFsbCcsICdDY2VkaWxsYXNtYWxsJywgJ0VncmF2ZXNtYWxsJywgJ0VhY3V0ZXNtYWxsJywKICAnRWNpcmN1bWZsZXhzbWFsbCcsICdFZGllcmVzaXNzbWFsbCcsICdJZ3JhdmVzbWFsbCcsICdJYWN1dGVzbWFsbCcsCiAgJ0ljaXJjdW1mbGV4c21hbGwnLCAnSWRpZXJlc2lzc21hbGwnLCAnRXRoc21hbGwnLCAnTnRpbGRlc21hbGwnLAogICdPZ3JhdmVzbWFsbCcsICdPYWN1dGVzbWFsbCcsICdPY2lyY3VtZmxleHNtYWxsJywgJ090aWxkZXNtYWxsJywKICAnT2RpZXJlc2lzc21hbGwnLCAnT0VzbWFsbCcsICdPc2xhc2hzbWFsbCcsICdVZ3JhdmVzbWFsbCcsICdVYWN1dGVzbWFsbCcsCiAgJ1VjaXJjdW1mbGV4c21hbGwnLCAnVWRpZXJlc2lzc21hbGwnLCAnWWFjdXRlc21hbGwnLCAnVGhvcm5zbWFsbCcsCiAgJ1lkaWVyZXNpc3NtYWxsJwpdOwoKdmFyIEV4cGVydFN1YnNldENoYXJzZXQgPSBbCiAgJy5ub3RkZWYnLCAnc3BhY2UnLCAnZG9sbGFyb2xkc3R5bGUnLCAnZG9sbGFyc3VwZXJpb3InLAogICdwYXJlbmxlZnRzdXBlcmlvcicsICdwYXJlbnJpZ2h0c3VwZXJpb3InLCAndHdvZG90ZW5sZWFkZXInLAogICdvbmVkb3RlbmxlYWRlcicsICdjb21tYScsICdoeXBoZW4nLCAncGVyaW9kJywgJ2ZyYWN0aW9uJywKICAnemVyb29sZHN0eWxlJywgJ29uZW9sZHN0eWxlJywgJ3R3b29sZHN0eWxlJywgJ3RocmVlb2xkc3R5bGUnLAogICdmb3Vyb2xkc3R5bGUnLCAnZml2ZW9sZHN0eWxlJywgJ3NpeG9sZHN0eWxlJywgJ3NldmVub2xkc3R5bGUnLAogICdlaWdodG9sZHN0eWxlJywgJ25pbmVvbGRzdHlsZScsICdjb2xvbicsICdzZW1pY29sb24nLCAnY29tbWFzdXBlcmlvcicsCiAgJ3RocmVlcXVhcnRlcnNlbWRhc2gnLCAncGVyaW9kc3VwZXJpb3InLCAnYXN1cGVyaW9yJywgJ2JzdXBlcmlvcicsCiAgJ2NlbnRzdXBlcmlvcicsICdkc3VwZXJpb3InLCAnZXN1cGVyaW9yJywgJ2lzdXBlcmlvcicsICdsc3VwZXJpb3InLAogICdtc3VwZXJpb3InLCAnbnN1cGVyaW9yJywgJ29zdXBlcmlvcicsICdyc3VwZXJpb3InLCAnc3N1cGVyaW9yJywKICAndHN1cGVyaW9yJywgJ2ZmJywgJ2ZpJywgJ2ZsJywgJ2ZmaScsICdmZmwnLCAncGFyZW5sZWZ0aW5mZXJpb3InLAogICdwYXJlbnJpZ2h0aW5mZXJpb3InLCAnaHlwaGVuc3VwZXJpb3InLCAnY29sb25tb25ldGFyeScsICdvbmVmaXR0ZWQnLAogICdydXBpYWgnLCAnY2VudG9sZHN0eWxlJywgJ2ZpZ3VyZWRhc2gnLCAnaHlwaGVuaW5mZXJpb3InLCAnb25lcXVhcnRlcicsCiAgJ29uZWhhbGYnLCAndGhyZWVxdWFydGVycycsICdvbmVlaWdodGgnLCAndGhyZWVlaWdodGhzJywgJ2ZpdmVlaWdodGhzJywKICAnc2V2ZW5laWdodGhzJywgJ29uZXRoaXJkJywgJ3R3b3RoaXJkcycsICd6ZXJvc3VwZXJpb3InLCAnb25lc3VwZXJpb3InLAogICd0d29zdXBlcmlvcicsICd0aHJlZXN1cGVyaW9yJywgJ2ZvdXJzdXBlcmlvcicsICdmaXZlc3VwZXJpb3InLAogICdzaXhzdXBlcmlvcicsICdzZXZlbnN1cGVyaW9yJywgJ2VpZ2h0c3VwZXJpb3InLCAnbmluZXN1cGVyaW9yJywKICAnemVyb2luZmVyaW9yJywgJ29uZWluZmVyaW9yJywgJ3R3b2luZmVyaW9yJywgJ3RocmVlaW5mZXJpb3InLAogICdmb3VyaW5mZXJpb3InLCAnZml2ZWluZmVyaW9yJywgJ3NpeGluZmVyaW9yJywgJ3NldmVuaW5mZXJpb3InLAogICdlaWdodGluZmVyaW9yJywgJ25pbmVpbmZlcmlvcicsICdjZW50aW5mZXJpb3InLCAnZG9sbGFyaW5mZXJpb3InLAogICdwZXJpb2RpbmZlcmlvcicsICdjb21tYWluZmVyaW9yJwpdOwoKCnZhciBERUZBVUxUX0lDT05fU0laRSA9IDIyOyAvLyBweAp2YXIgU1VQUE9SVEVEX1RZUEVTID0gWydMaW5rJywgJ1RleHQnLCAnV2lkZ2V0J107Cgp2YXIgQW5ub3RhdGlvbiA9IChmdW5jdGlvbiBBbm5vdGF0aW9uQ2xvc3VyZSgpIHsKICAvLyAxMi41LjU6IEFsZ29yaXRobTogQXBwZWFyYW5jZSBzdHJlYW1zCiAgZnVuY3Rpb24gZ2V0VHJhbnNmb3JtTWF0cml4KHJlY3QsIGJib3gsIG1hdHJpeCkgewogICAgdmFyIGJvdW5kcyA9IFV0aWwuZ2V0QXhpYWxBbGlnbmVkQm91bmRpbmdCb3goYmJveCwgbWF0cml4KTsKICAgIHZhciBtaW5YID0gYm91bmRzWzBdOwogICAgdmFyIG1pblkgPSBib3VuZHNbMV07CiAgICB2YXIgbWF4WCA9IGJvdW5kc1syXTsKICAgIHZhciBtYXhZID0gYm91bmRzWzNdOwoKICAgIGlmIChtaW5YID09PSBtYXhYIHx8IG1pblkgPT09IG1heFkpIHsKICAgICAgLy8gRnJvbSByZWFsLWxpZmUgZmlsZSwgYmJveCB3YXMgWzAsIDAsIDAsIDBdLiBJbiB0aGlzIGNhc2UsCiAgICAgIC8vIGp1c3QgYXBwbHkgdGhlIHRyYW5zZm9ybSBmb3IgcmVjdAogICAgICByZXR1cm4gWzEsIDAsIDAsIDEsIHJlY3RbMF0sIHJlY3RbMV1dOwogICAgfQoKICAgIHZhciB4UmF0aW8gPSAocmVjdFsyXSAtIHJlY3RbMF0pIC8gKG1heFggLSBtaW5YKTsKICAgIHZhciB5UmF0aW8gPSAocmVjdFszXSAtIHJlY3RbMV0pIC8gKG1heFkgLSBtaW5ZKTsKICAgIHJldHVybiBbCiAgICAgIHhSYXRpbywKICAgICAgMCwKICAgICAgMCwKICAgICAgeVJhdGlvLAogICAgICByZWN0WzBdIC0gbWluWCAqIHhSYXRpbywKICAgICAgcmVjdFsxXSAtIG1pblkgKiB5UmF0aW8KICAgIF07CiAgfQoKICBmdW5jdGlvbiBnZXREZWZhdWx0QXBwZWFyYW5jZShkaWN0KSB7CiAgICB2YXIgYXBwZWFyYW5jZVN0YXRlID0gZGljdC5nZXQoJ0FQJyk7CiAgICBpZiAoIWlzRGljdChhcHBlYXJhbmNlU3RhdGUpKSB7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICB2YXIgYXBwZWFyYW5jZTsKICAgIHZhciBhcHBlYXJhbmNlcyA9IGFwcGVhcmFuY2VTdGF0ZS5nZXQoJ04nKTsKICAgIGlmIChpc0RpY3QoYXBwZWFyYW5jZXMpKSB7CiAgICAgIHZhciBhcyA9IGRpY3QuZ2V0KCdBUycpOwogICAgICBpZiAoYXMgJiYgYXBwZWFyYW5jZXMuaGFzKGFzLm5hbWUpKSB7CiAgICAgICAgYXBwZWFyYW5jZSA9IGFwcGVhcmFuY2VzLmdldChhcy5uYW1lKTsKICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgYXBwZWFyYW5jZSA9IGFwcGVhcmFuY2VzOwogICAgfQogICAgcmV0dXJuIGFwcGVhcmFuY2U7CiAgfQoKICBmdW5jdGlvbiBBbm5vdGF0aW9uKHBhcmFtcykgewogICAgdmFyIGRpY3QgPSBwYXJhbXMuZGljdDsKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhID0ge307CgogICAgZGF0YS5zdWJ0eXBlID0gZGljdC5nZXQoJ1N1YnR5cGUnKS5uYW1lOwogICAgdmFyIHJlY3QgPSBkaWN0LmdldCgnUmVjdCcpIHx8IFswLCAwLCAwLCAwXTsKICAgIGRhdGEucmVjdCA9IFV0aWwubm9ybWFsaXplUmVjdChyZWN0KTsKICAgIGRhdGEuYW5ub3RhdGlvbkZsYWdzID0gZGljdC5nZXQoJ0YnKTsKCiAgICB2YXIgY29sb3IgPSBkaWN0LmdldCgnQycpOwogICAgaWYgKCFjb2xvcikgewogICAgICAvLyBUaGUgUERGIHNwZWMgZG9lcyBub3QgbWVudGlvbiBob3cgYSBtaXNzaW5nIGNvbG9yIGFycmF5IGlzIGludGVycHJldGVkLgogICAgICAvLyBBZG9iZSBSZWFkZXIgc2VlbXMgdG8gZGVmYXVsdCB0byBibGFjayBpbiB0aGlzIGNhc2UuCiAgICAgIGRhdGEuY29sb3IgPSBbMCwgMCwgMF07CiAgICB9IGVsc2UgaWYgKGlzQXJyYXkoY29sb3IpKSB7CiAgICAgIHN3aXRjaCAoY29sb3IubGVuZ3RoKSB7CiAgICAgICAgY2FzZSAwOgogICAgICAgICAgLy8gRW1wdHkgYXJyYXkgZGVub3RlcyB0cmFuc3BhcmVudCBib3JkZXIuCiAgICAgICAgICBkYXRhLmNvbG9yID0gbnVsbDsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgMToKICAgICAgICAgIC8vIFRPRE86IGltcGxlbWVudCBEZXZpY2VHcmF5CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDM6CiAgICAgICAgICBkYXRhLmNvbG9yID0gY29sb3I7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAvLyBUT0RPOiBpbXBsZW1lbnQgRGV2aWNlQ01ZSwogICAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgIH0KCiAgICAvLyBTb21lIHR5cGVzIG9mIGFubm90YXRpb25zIGhhdmUgYm9yZGVyIHN0eWxlIGRpY3Qgd2hpY2ggaGFzIG1vcmUKICAgIC8vIGluZm8gdGhhbiB0aGUgYm9yZGVyIGFycmF5CiAgICBpZiAoZGljdC5oYXMoJ0JTJykpIHsKICAgICAgdmFyIGJvcmRlclN0eWxlID0gZGljdC5nZXQoJ0JTJyk7CiAgICAgIGRhdGEuYm9yZGVyV2lkdGggPSBib3JkZXJTdHlsZS5oYXMoJ1cnKSA/IGJvcmRlclN0eWxlLmdldCgnVycpIDogMTsKICAgIH0gZWxzZSB7CiAgICAgIHZhciBib3JkZXJBcnJheSA9IGRpY3QuZ2V0KCdCb3JkZXInKSB8fCBbMCwgMCwgMV07CiAgICAgIGRhdGEuYm9yZGVyV2lkdGggPSBib3JkZXJBcnJheVsyXSB8fCAwOwoKICAgICAgLy8gVE9ETzogaW1wbGVtZW50IHByb3BlciBzdXBwb3J0IGZvciBhbm5vdGF0aW9ucyB3aXRoIGxpbmUgZGFzaCBwYXR0ZXJucy4KICAgICAgdmFyIGRhc2hBcnJheSA9IGJvcmRlckFycmF5WzNdOwogICAgICBpZiAoZGF0YS5ib3JkZXJXaWR0aCA+IDAgJiYgZGFzaEFycmF5KSB7CiAgICAgICAgaWYgKCFpc0FycmF5KGRhc2hBcnJheSkpIHsKICAgICAgICAgIC8vIElnbm9yZSB0aGUgYm9yZGVyIGlmIGRhc2hBcnJheSBpcyBub3QgYWN0dWFsbHkgYW4gYXJyYXksCiAgICAgICAgICAvLyB0aGlzIGlzIGNvbnNpc3RlbnQgd2l0aCB0aGUgYmVoYXZpb3VyIGluIEFkb2JlIFJlYWRlci4KICAgICAgICAgIGRhdGEuYm9yZGVyV2lkdGggPSAwOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB2YXIgZGFzaEFycmF5TGVuZ3RoID0gZGFzaEFycmF5Lmxlbmd0aDsKICAgICAgICAgIGlmIChkYXNoQXJyYXlMZW5ndGggPiAwKSB7CiAgICAgICAgICAgIC8vIEFjY29yZGluZyB0byB0aGUgUERGIHNwZWNpZmljYXRpb246IHRoZSBlbGVtZW50cyBpbiBhIGRhc2hBcnJheQogICAgICAgICAgICAvLyBzaGFsbCBiZSBudW1iZXJzIHRoYXQgYXJlIG5vbm5lZ2F0aXZlIGFuZCBub3QgYWxsIGVxdWFsIHRvIHplcm8uCiAgICAgICAgICAgIHZhciBpc0ludmFsaWQgPSBmYWxzZTsKICAgICAgICAgICAgdmFyIG51bVBvc2l0aXZlID0gMDsKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXNoQXJyYXlMZW5ndGg7IGkrKykgewogICAgICAgICAgICAgIHZhciB2YWxpZE51bWJlciA9ICgrZGFzaEFycmF5W2ldID49IDApOwogICAgICAgICAgICAgIGlmICghdmFsaWROdW1iZXIpIHsKICAgICAgICAgICAgICAgIGlzSW52YWxpZCA9IHRydWU7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRhc2hBcnJheVtpXSA+IDApIHsKICAgICAgICAgICAgICAgIG51bVBvc2l0aXZlKys7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChpc0ludmFsaWQgfHwgbnVtUG9zaXRpdmUgPT09IDApIHsKICAgICAgICAgICAgICBkYXRhLmJvcmRlcldpZHRoID0gMDsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIHRoaXMuYXBwZWFyYW5jZSA9IGdldERlZmF1bHRBcHBlYXJhbmNlKGRpY3QpOwogICAgZGF0YS5oYXNBcHBlYXJhbmNlID0gISF0aGlzLmFwcGVhcmFuY2U7CiAgICBkYXRhLmlkID0gcGFyYW1zLnJlZi5udW07CiAgfQoKICBBbm5vdGF0aW9uLnByb3RvdHlwZSA9IHsKCiAgICBnZXREYXRhOiBmdW5jdGlvbiBBbm5vdGF0aW9uX2dldERhdGEoKSB7CiAgICAgIHJldHVybiB0aGlzLmRhdGE7CiAgICB9LAoKICAgIGlzSW52aXNpYmxlOiBmdW5jdGlvbiBBbm5vdGF0aW9uX2lzSW52aXNpYmxlKCkgewogICAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YTsKICAgICAgaWYgKGRhdGEgJiYgU1VQUE9SVEVEX1RZUEVTLmluZGV4T2YoZGF0YS5zdWJ0eXBlKSAhPT0gLTEpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuICEhKGRhdGEgJiYKICAgICAgICAgICAgICAgICAgZGF0YS5hbm5vdGF0aW9uRmxhZ3MgJiYgICAgICAgICAgICAvLyBEZWZhdWx0OiBub3QgaW52aXNpYmxlCiAgICAgICAgICAgICAgICAgIGRhdGEuYW5ub3RhdGlvbkZsYWdzICYgMHgxKTsgICAgICAgLy8gSW52aXNpYmxlCiAgICAgIH0KICAgIH0sCgogICAgaXNWaWV3YWJsZTogZnVuY3Rpb24gQW5ub3RhdGlvbl9pc1ZpZXdhYmxlKCkgewogICAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YTsKICAgICAgcmV0dXJuICEhKCF0aGlzLmlzSW52aXNpYmxlKCkgJiYKICAgICAgICAgICAgICAgIGRhdGEgJiYKICAgICAgICAgICAgICAgICghZGF0YS5hbm5vdGF0aW9uRmxhZ3MgfHwKICAgICAgICAgICAgICAgICAhKGRhdGEuYW5ub3RhdGlvbkZsYWdzICYgMHgyMikpICYmICAvLyBIaWRkZW4gb3IgTm9WaWV3CiAgICAgICAgICAgICAgICBkYXRhLnJlY3QpOyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVjdGFuZ2xlIGlzIG5lY2Vzc2FyeQogICAgfSwKCiAgICBpc1ByaW50YWJsZTogZnVuY3Rpb24gQW5ub3RhdGlvbl9pc1ByaW50YWJsZSgpIHsKICAgICAgdmFyIGRhdGEgPSB0aGlzLmRhdGE7CiAgICAgIHJldHVybiAhISghdGhpcy5pc0ludmlzaWJsZSgpICYmCiAgICAgICAgICAgICAgICBkYXRhICYmCiAgICAgICAgICAgICAgICBkYXRhLmFubm90YXRpb25GbGFncyAmJiAgICAgICAgICAgICAgLy8gRGVmYXVsdDogbm90IHByaW50YWJsZQogICAgICAgICAgICAgICAgZGF0YS5hbm5vdGF0aW9uRmxhZ3MgJiAweDQgJiYgICAgICAgIC8vIFByaW50CiAgICAgICAgICAgICAgICAhKGRhdGEuYW5ub3RhdGlvbkZsYWdzICYgMHgyKSAmJiAgICAgLy8gSGlkZGVuCiAgICAgICAgICAgICAgICBkYXRhLnJlY3QpOyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVjdGFuZ2xlIGlzIG5lY2Vzc2FyeQogICAgfSwKCiAgICBsb2FkUmVzb3VyY2VzOiBmdW5jdGlvbiBBbm5vdGF0aW9uX2xvYWRSZXNvdXJjZXMoa2V5cykgewogICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICAgIHRoaXMuYXBwZWFyYW5jZS5kaWN0LmdldEFzeW5jKCdSZXNvdXJjZXMnKS50aGVuKGZ1bmN0aW9uIChyZXNvdXJjZXMpIHsKICAgICAgICAgIGlmICghcmVzb3VyY2VzKSB7CiAgICAgICAgICAgIHJlc29sdmUoKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgfQogICAgICAgICAgdmFyIG9iamVjdExvYWRlciA9IG5ldyBPYmplY3RMb2FkZXIocmVzb3VyY2VzLm1hcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXMueHJlZik7CiAgICAgICAgICBvYmplY3RMb2FkZXIubG9hZCgpLnRoZW4oZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJlc29sdmUocmVzb3VyY2VzKTsKICAgICAgICAgIH0sIHJlamVjdCk7CiAgICAgICAgfSwgcmVqZWN0KTsKICAgICAgfS5iaW5kKHRoaXMpKTsKICAgIH0sCgogICAgZ2V0T3BlcmF0b3JMaXN0OiBmdW5jdGlvbiBBbm5vdGF0aW9uX2dldE9wZXJhdG9yTGlzdChldmFsdWF0b3IpIHsKCiAgICAgIGlmICghdGhpcy5hcHBlYXJhbmNlKSB7CiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShuZXcgT3BlcmF0b3JMaXN0KCkpOwogICAgICB9CgogICAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YTsKCiAgICAgIHZhciBhcHBlYXJhbmNlRGljdCA9IHRoaXMuYXBwZWFyYW5jZS5kaWN0OwogICAgICB2YXIgcmVzb3VyY2VzUHJvbWlzZSA9IHRoaXMubG9hZFJlc291cmNlcyhbCiAgICAgICAgJ0V4dEdTdGF0ZScsCiAgICAgICAgJ0NvbG9yU3BhY2UnLAogICAgICAgICdQYXR0ZXJuJywKICAgICAgICAnU2hhZGluZycsCiAgICAgICAgJ1hPYmplY3QnLAogICAgICAgICdGb250JwogICAgICAgIC8vIFByb2NTZXQKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgIF0pOwogICAgICB2YXIgYmJveCA9IGFwcGVhcmFuY2VEaWN0LmdldCgnQkJveCcpIHx8IFswLCAwLCAxLCAxXTsKICAgICAgdmFyIG1hdHJpeCA9IGFwcGVhcmFuY2VEaWN0LmdldCgnTWF0cml4JykgfHwgWzEsIDAsIDAsIDEsIDAgLDBdOwogICAgICB2YXIgdHJhbnNmb3JtID0gZ2V0VHJhbnNmb3JtTWF0cml4KGRhdGEucmVjdCwgYmJveCwgbWF0cml4KTsKICAgICAgdmFyIHNlbGYgPSB0aGlzOwoKICAgICAgcmV0dXJuIHJlc291cmNlc1Byb21pc2UudGhlbihmdW5jdGlvbihyZXNvdXJjZXMpIHsKICAgICAgICAgIHZhciBvcExpc3QgPSBuZXcgT3BlcmF0b3JMaXN0KCk7CiAgICAgICAgICBvcExpc3QuYWRkT3AoT1BTLmJlZ2luQW5ub3RhdGlvbiwgW2RhdGEucmVjdCwgdHJhbnNmb3JtLCBtYXRyaXhdKTsKICAgICAgICAgIHJldHVybiBldmFsdWF0b3IuZ2V0T3BlcmF0b3JMaXN0KHNlbGYuYXBwZWFyYW5jZSwgcmVzb3VyY2VzLCBvcExpc3QpLgogICAgICAgICAgICB0aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICBvcExpc3QuYWRkT3AoT1BTLmVuZEFubm90YXRpb24sIFtdKTsKICAgICAgICAgICAgICBzZWxmLmFwcGVhcmFuY2UucmVzZXQoKTsKICAgICAgICAgICAgICByZXR1cm4gb3BMaXN0OwogICAgICAgICAgICB9KTsKICAgICAgICB9KTsKICAgIH0KICB9OwoKICBBbm5vdGF0aW9uLmdldENvbnN0cnVjdG9yID0KICAgICAgZnVuY3Rpb24gQW5ub3RhdGlvbl9nZXRDb25zdHJ1Y3RvcihzdWJ0eXBlLCBmaWVsZFR5cGUpIHsKCiAgICBpZiAoIXN1YnR5cGUpIHsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIC8vIFRPRE8obWFjayk6IEltcGxlbWVudCBGcmVlVGV4dCBhbm5vdGF0aW9ucwogICAgaWYgKHN1YnR5cGUgPT09ICdMaW5rJykgewogICAgICByZXR1cm4gTGlua0Fubm90YXRpb247CiAgICB9IGVsc2UgaWYgKHN1YnR5cGUgPT09ICdUZXh0JykgewogICAgICByZXR1cm4gVGV4dEFubm90YXRpb247CiAgICB9IGVsc2UgaWYgKHN1YnR5cGUgPT09ICdXaWRnZXQnKSB7CiAgICAgIGlmICghZmllbGRUeXBlKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICBpZiAoZmllbGRUeXBlID09PSAnVHgnKSB7CiAgICAgICAgcmV0dXJuIFRleHRXaWRnZXRBbm5vdGF0aW9uOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBXaWRnZXRBbm5vdGF0aW9uOwogICAgICB9CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gQW5ub3RhdGlvbjsKICAgIH0KICB9OwoKICBBbm5vdGF0aW9uLmZyb21SZWYgPSBmdW5jdGlvbiBBbm5vdGF0aW9uX2Zyb21SZWYoeHJlZiwgcmVmKSB7CgogICAgdmFyIGRpY3QgPSB4cmVmLmZldGNoSWZSZWYocmVmKTsKICAgIGlmICghaXNEaWN0KGRpY3QpKSB7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICB2YXIgc3VidHlwZSA9IGRpY3QuZ2V0KCdTdWJ0eXBlJyk7CiAgICBzdWJ0eXBlID0gaXNOYW1lKHN1YnR5cGUpID8gc3VidHlwZS5uYW1lIDogJyc7CiAgICBpZiAoIXN1YnR5cGUpIHsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIHZhciBmaWVsZFR5cGUgPSBVdGlsLmdldEluaGVyaXRhYmxlUHJvcGVydHkoZGljdCwgJ0ZUJyk7CiAgICBmaWVsZFR5cGUgPSBpc05hbWUoZmllbGRUeXBlKSA/IGZpZWxkVHlwZS5uYW1lIDogJyc7CgogICAgdmFyIENvbnN0cnVjdG9yID0gQW5ub3RhdGlvbi5nZXRDb25zdHJ1Y3RvcihzdWJ0eXBlLCBmaWVsZFR5cGUpOwogICAgaWYgKCFDb25zdHJ1Y3RvcikgewogICAgICByZXR1cm47CiAgICB9CgogICAgdmFyIHBhcmFtcyA9IHsKICAgICAgZGljdDogZGljdCwKICAgICAgcmVmOiByZWYsCiAgICB9OwoKICAgIHZhciBhbm5vdGF0aW9uID0gbmV3IENvbnN0cnVjdG9yKHBhcmFtcyk7CgogICAgaWYgKGFubm90YXRpb24uaXNWaWV3YWJsZSgpIHx8IGFubm90YXRpb24uaXNQcmludGFibGUoKSkgewogICAgICByZXR1cm4gYW5ub3RhdGlvbjsKICAgIH0gZWxzZSB7CiAgICAgIGlmIChTVVBQT1JURURfVFlQRVMuaW5kZXhPZihzdWJ0eXBlKSA9PT0gLTEpIHsKICAgICAgICB3YXJuKCd1bmltcGxlbWVudGVkIGFubm90YXRpb24gdHlwZTogJyArIHN1YnR5cGUpOwogICAgICB9CiAgICB9CiAgfTsKCiAgQW5ub3RhdGlvbi5hcHBlbmRUb09wZXJhdG9yTGlzdCA9IGZ1bmN0aW9uIEFubm90YXRpb25fYXBwZW5kVG9PcGVyYXRvckxpc3QoCiAgICAgIGFubm90YXRpb25zLCBvcExpc3QsIHBkZk1hbmFnZXIsIHBhcnRpYWxFdmFsdWF0b3IsIGludGVudCkgewoKICAgIGZ1bmN0aW9uIHJlamVjdChlKSB7CiAgICAgIGFubm90YXRpb25zUmVhZHlDYXBhYmlsaXR5LnJlamVjdChlKTsKICAgIH0KCiAgICB2YXIgYW5ub3RhdGlvbnNSZWFkeUNhcGFiaWxpdHkgPSBjcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSgpOwoKICAgIHZhciBhbm5vdGF0aW9uUHJvbWlzZXMgPSBbXTsKICAgIGZvciAodmFyIGkgPSAwLCBuID0gYW5ub3RhdGlvbnMubGVuZ3RoOyBpIDwgbjsgKytpKSB7CiAgICAgIGlmIChpbnRlbnQgPT09ICdkaXNwbGF5JyAmJiBhbm5vdGF0aW9uc1tpXS5pc1ZpZXdhYmxlKCkgfHwKICAgICAgICAgIGludGVudCA9PT0gJ3ByaW50JyAmJiBhbm5vdGF0aW9uc1tpXS5pc1ByaW50YWJsZSgpKSB7CiAgICAgICAgYW5ub3RhdGlvblByb21pc2VzLnB1c2goCiAgICAgICAgICBhbm5vdGF0aW9uc1tpXS5nZXRPcGVyYXRvckxpc3QocGFydGlhbEV2YWx1YXRvcikpOwogICAgICB9CiAgICB9CiAgICBQcm9taXNlLmFsbChhbm5vdGF0aW9uUHJvbWlzZXMpLnRoZW4oZnVuY3Rpb24oZGF0YXMpIHsKICAgICAgb3BMaXN0LmFkZE9wKE9QUy5iZWdpbkFubm90YXRpb25zLCBbXSk7CiAgICAgIGZvciAodmFyIGkgPSAwLCBuID0gZGF0YXMubGVuZ3RoOyBpIDwgbjsgKytpKSB7CiAgICAgICAgdmFyIGFubm90T3BMaXN0ID0gZGF0YXNbaV07CiAgICAgICAgb3BMaXN0LmFkZE9wTGlzdChhbm5vdE9wTGlzdCk7CiAgICAgIH0KICAgICAgb3BMaXN0LmFkZE9wKE9QUy5lbmRBbm5vdGF0aW9ucywgW10pOwogICAgICBhbm5vdGF0aW9uc1JlYWR5Q2FwYWJpbGl0eS5yZXNvbHZlKCk7CiAgICB9LCByZWplY3QpOwoKICAgIHJldHVybiBhbm5vdGF0aW9uc1JlYWR5Q2FwYWJpbGl0eS5wcm9taXNlOwogIH07CgogIHJldHVybiBBbm5vdGF0aW9uOwp9KSgpOwoKdmFyIFdpZGdldEFubm90YXRpb24gPSAoZnVuY3Rpb24gV2lkZ2V0QW5ub3RhdGlvbkNsb3N1cmUoKSB7CgogIGZ1bmN0aW9uIFdpZGdldEFubm90YXRpb24ocGFyYW1zKSB7CiAgICBBbm5vdGF0aW9uLmNhbGwodGhpcywgcGFyYW1zKTsKCiAgICB2YXIgZGljdCA9IHBhcmFtcy5kaWN0OwogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGE7CgogICAgZGF0YS5maWVsZFZhbHVlID0gc3RyaW5nVG9QREZTdHJpbmcoCiAgICAgIFV0aWwuZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eShkaWN0LCAnVicpIHx8ICcnKTsKICAgIGRhdGEuYWx0ZXJuYXRpdmVUZXh0ID0gc3RyaW5nVG9QREZTdHJpbmcoZGljdC5nZXQoJ1RVJykgfHwgJycpOwogICAgZGF0YS5kZWZhdWx0QXBwZWFyYW5jZSA9IFV0aWwuZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eShkaWN0LCAnREEnKSB8fCAnJzsKICAgIHZhciBmaWVsZFR5cGUgPSBVdGlsLmdldEluaGVyaXRhYmxlUHJvcGVydHkoZGljdCwgJ0ZUJyk7CiAgICBkYXRhLmZpZWxkVHlwZSA9IGlzTmFtZShmaWVsZFR5cGUpID8gZmllbGRUeXBlLm5hbWUgOiAnJzsKICAgIGRhdGEuZmllbGRGbGFncyA9IFV0aWwuZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eShkaWN0LCAnRmYnKSB8fCAwOwogICAgdGhpcy5maWVsZFJlc291cmNlcyA9IFV0aWwuZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eShkaWN0LCAnRFInKSB8fCBEaWN0LmVtcHR5OwoKICAgIC8vIEJ1aWxkaW5nIHRoZSBmdWxsIGZpZWxkIG5hbWUgYnkgY29sbGVjdGluZyB0aGUgZmllbGQgYW5kCiAgICAvLyBpdHMgYW5jZXN0b3JzICdUJyBkYXRhIGFuZCBqb2luaW5nIHRoZW0gdXNpbmcgJy4nLgogICAgdmFyIGZpZWxkTmFtZSA9IFtdOwogICAgdmFyIG5hbWVkSXRlbSA9IGRpY3Q7CiAgICB2YXIgcmVmID0gcGFyYW1zLnJlZjsKICAgIHdoaWxlIChuYW1lZEl0ZW0pIHsKICAgICAgdmFyIHBhcmVudCA9IG5hbWVkSXRlbS5nZXQoJ1BhcmVudCcpOwogICAgICB2YXIgcGFyZW50UmVmID0gbmFtZWRJdGVtLmdldFJhdygnUGFyZW50Jyk7CiAgICAgIHZhciBuYW1lID0gbmFtZWRJdGVtLmdldCgnVCcpOwogICAgICBpZiAobmFtZSkgewogICAgICAgIGZpZWxkTmFtZS51bnNoaWZ0KHN0cmluZ1RvUERGU3RyaW5nKG5hbWUpKTsKICAgICAgfSBlbHNlIGlmIChwYXJlbnQgJiYgcmVmKSB7CiAgICAgICAgLy8gVGhlIGZpZWxkIG5hbWUgaXMgYWJzZW50LCB0aGF0IG1lYW5zIG1vcmUgdGhhbiBvbmUgZmllbGQKICAgICAgICAvLyB3aXRoIHRoZSBzYW1lIG5hbWUgbWF5IGV4aXN0LiBSZXBsYWNpbmcgdGhlIGVtcHR5IG5hbWUKICAgICAgICAvLyB3aXRoIHRoZSAnYCcgcGx1cyBpbmRleCBpbiB0aGUgcGFyZW50J3MgJ0tpZHMnIGFycmF5LgogICAgICAgIC8vIFRoaXMgaXMgbm90IGluIHRoZSBQREYgc3BlYyBidXQgbmVjZXNzYXJ5IHRvIGlkIHRoZQogICAgICAgIC8vIHRoZSBpbnB1dCBjb250cm9scy4KICAgICAgICB2YXIga2lkcyA9IHBhcmVudC5nZXQoJ0tpZHMnKTsKICAgICAgICB2YXIgaiwgamo7CiAgICAgICAgZm9yIChqID0gMCwgamogPSBraWRzLmxlbmd0aDsgaiA8IGpqOyBqKyspIHsKICAgICAgICAgIHZhciBraWRSZWYgPSBraWRzW2pdOwogICAgICAgICAgaWYgKGtpZFJlZi5udW0gPT09IHJlZi5udW0gJiYga2lkUmVmLmdlbiA9PT0gcmVmLmdlbikgewogICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZmllbGROYW1lLnVuc2hpZnQoJ2AnICsgaik7CiAgICAgIH0KICAgICAgbmFtZWRJdGVtID0gcGFyZW50OwogICAgICByZWYgPSBwYXJlbnRSZWY7CiAgICB9CiAgICBkYXRhLmZ1bGxOYW1lID0gZmllbGROYW1lLmpvaW4oJy4nKTsKICB9CgogIHZhciBwYXJlbnQgPSBBbm5vdGF0aW9uLnByb3RvdHlwZTsKICBVdGlsLmluaGVyaXQoV2lkZ2V0QW5ub3RhdGlvbiwgQW5ub3RhdGlvbiwgewogICAgaXNWaWV3YWJsZTogZnVuY3Rpb24gV2lkZ2V0QW5ub3RhdGlvbl9pc1ZpZXdhYmxlKCkgewogICAgICBpZiAodGhpcy5kYXRhLmZpZWxkVHlwZSA9PT0gJ1NpZycpIHsKICAgICAgICB3YXJuKCd1bmltcGxlbWVudGVkIGFubm90YXRpb24gdHlwZTogV2lkZ2V0IHNpZ25hdHVyZScpOwogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQoKICAgICAgcmV0dXJuIHBhcmVudC5pc1ZpZXdhYmxlLmNhbGwodGhpcyk7CiAgICB9CiAgfSk7CgogIHJldHVybiBXaWRnZXRBbm5vdGF0aW9uOwp9KSgpOwoKdmFyIFRleHRXaWRnZXRBbm5vdGF0aW9uID0gKGZ1bmN0aW9uIFRleHRXaWRnZXRBbm5vdGF0aW9uQ2xvc3VyZSgpIHsKICBmdW5jdGlvbiBUZXh0V2lkZ2V0QW5ub3RhdGlvbihwYXJhbXMpIHsKICAgIFdpZGdldEFubm90YXRpb24uY2FsbCh0aGlzLCBwYXJhbXMpOwoKICAgIHRoaXMuZGF0YS50ZXh0QWxpZ25tZW50ID0gVXRpbC5nZXRJbmhlcml0YWJsZVByb3BlcnR5KHBhcmFtcy5kaWN0LCAnUScpOwogICAgdGhpcy5kYXRhLmFubm90YXRpb25UeXBlID0gQW5ub3RhdGlvblR5cGUuV0lER0VUOwogICAgdGhpcy5kYXRhLmhhc0h0bWwgPSAhdGhpcy5kYXRhLmhhc0FwcGVhcmFuY2UgJiYgISF0aGlzLmRhdGEuZmllbGRWYWx1ZTsKICB9CgogIFV0aWwuaW5oZXJpdChUZXh0V2lkZ2V0QW5ub3RhdGlvbiwgV2lkZ2V0QW5ub3RhdGlvbiwgewogICAgZ2V0T3BlcmF0b3JMaXN0OiBmdW5jdGlvbiBUZXh0V2lkZ2V0QW5ub3RhdGlvbl9nZXRPcGVyYXRvckxpc3QoZXZhbHVhdG9yKSB7CiAgICAgIGlmICh0aGlzLmFwcGVhcmFuY2UpIHsKICAgICAgICByZXR1cm4gQW5ub3RhdGlvbi5wcm90b3R5cGUuZ2V0T3BlcmF0b3JMaXN0LmNhbGwodGhpcywgZXZhbHVhdG9yKTsKICAgICAgfQoKICAgICAgdmFyIG9wTGlzdCA9IG5ldyBPcGVyYXRvckxpc3QoKTsKICAgICAgdmFyIGRhdGEgPSB0aGlzLmRhdGE7CgogICAgICAvLyBFdmVuIGlmIHRoZXJlIGlzIGFuIGFwcGVhcmFuY2Ugc3RyZWFtLCBpZ25vcmUgaXQuIFRoaXMgaXMgdGhlCiAgICAgIC8vIGJlaGF2aW91ciB1c2VkIGJ5IEFkb2JlIFJlYWRlci4KICAgICAgaWYgKCFkYXRhLmRlZmF1bHRBcHBlYXJhbmNlKSB7CiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShvcExpc3QpOwogICAgICB9CgogICAgICB2YXIgc3RyZWFtID0gbmV3IFN0cmVhbShzdHJpbmdUb0J5dGVzKGRhdGEuZGVmYXVsdEFwcGVhcmFuY2UpKTsKICAgICAgcmV0dXJuIGV2YWx1YXRvci5nZXRPcGVyYXRvckxpc3Qoc3RyZWFtLCB0aGlzLmZpZWxkUmVzb3VyY2VzLCBvcExpc3QpLgogICAgICAgIHRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgICAgcmV0dXJuIG9wTGlzdDsKICAgICAgICB9KTsKICAgIH0KICB9KTsKCiAgcmV0dXJuIFRleHRXaWRnZXRBbm5vdGF0aW9uOwp9KSgpOwoKdmFyIEludGVyYWN0aXZlQW5ub3RhdGlvbiA9IChmdW5jdGlvbiBJbnRlcmFjdGl2ZUFubm90YXRpb25DbG9zdXJlKCkgewogIGZ1bmN0aW9uIEludGVyYWN0aXZlQW5ub3RhdGlvbihwYXJhbXMpIHsKICAgIEFubm90YXRpb24uY2FsbCh0aGlzLCBwYXJhbXMpOwoKICAgIHRoaXMuZGF0YS5oYXNIdG1sID0gdHJ1ZTsKICB9CgogIFV0aWwuaW5oZXJpdChJbnRlcmFjdGl2ZUFubm90YXRpb24sIEFubm90YXRpb24sIHsgfSk7CgogIHJldHVybiBJbnRlcmFjdGl2ZUFubm90YXRpb247Cn0pKCk7Cgp2YXIgVGV4dEFubm90YXRpb24gPSAoZnVuY3Rpb24gVGV4dEFubm90YXRpb25DbG9zdXJlKCkgewogIGZ1bmN0aW9uIFRleHRBbm5vdGF0aW9uKHBhcmFtcykgewogICAgSW50ZXJhY3RpdmVBbm5vdGF0aW9uLmNhbGwodGhpcywgcGFyYW1zKTsKCiAgICB2YXIgZGljdCA9IHBhcmFtcy5kaWN0OwogICAgdmFyIGRhdGEgPSB0aGlzLmRhdGE7CgogICAgdmFyIGNvbnRlbnQgPSBkaWN0LmdldCgnQ29udGVudHMnKTsKICAgIHZhciB0aXRsZSA9IGRpY3QuZ2V0KCdUJyk7CiAgICBkYXRhLmFubm90YXRpb25UeXBlID0gQW5ub3RhdGlvblR5cGUuVEVYVDsKICAgIGRhdGEuY29udGVudCA9IHN0cmluZ1RvUERGU3RyaW5nKGNvbnRlbnQgfHwgJycpOwogICAgZGF0YS50aXRsZSA9IHN0cmluZ1RvUERGU3RyaW5nKHRpdGxlIHx8ICcnKTsKCiAgICBpZiAoZGF0YS5oYXNBcHBlYXJhbmNlKSB7CiAgICAgIGRhdGEubmFtZSA9ICdOb0ljb24nOwogICAgfSBlbHNlIHsKICAgICAgZGF0YS5yZWN0WzFdID0gZGF0YS5yZWN0WzNdIC0gREVGQVVMVF9JQ09OX1NJWkU7CiAgICAgIGRhdGEucmVjdFsyXSA9IGRhdGEucmVjdFswXSArIERFRkFVTFRfSUNPTl9TSVpFOwogICAgICBkYXRhLm5hbWUgPSBkaWN0LmhhcygnTmFtZScpID8gZGljdC5nZXQoJ05hbWUnKS5uYW1lIDogJ05vdGUnOwogICAgfQoKICAgIGlmIChkaWN0LmhhcygnQycpKSB7CiAgICAgIGRhdGEuaGFzQmdDb2xvciA9IHRydWU7CiAgICB9CiAgfQoKICBVdGlsLmluaGVyaXQoVGV4dEFubm90YXRpb24sIEludGVyYWN0aXZlQW5ub3RhdGlvbiwgeyB9KTsKCiAgcmV0dXJuIFRleHRBbm5vdGF0aW9uOwp9KSgpOwoKdmFyIExpbmtBbm5vdGF0aW9uID0gKGZ1bmN0aW9uIExpbmtBbm5vdGF0aW9uQ2xvc3VyZSgpIHsKICBmdW5jdGlvbiBMaW5rQW5ub3RhdGlvbihwYXJhbXMpIHsKICAgIEludGVyYWN0aXZlQW5ub3RhdGlvbi5jYWxsKHRoaXMsIHBhcmFtcyk7CgogICAgdmFyIGRpY3QgPSBwYXJhbXMuZGljdDsKICAgIHZhciBkYXRhID0gdGhpcy5kYXRhOwogICAgZGF0YS5hbm5vdGF0aW9uVHlwZSA9IEFubm90YXRpb25UeXBlLkxJTks7CgogICAgdmFyIGFjdGlvbiA9IGRpY3QuZ2V0KCdBJyk7CiAgICBpZiAoYWN0aW9uICYmIGlzRGljdChhY3Rpb24pKSB7CiAgICAgIHZhciBsaW5rVHlwZSA9IGFjdGlvbi5nZXQoJ1MnKS5uYW1lOwogICAgICBpZiAobGlua1R5cGUgPT09ICdVUkknKSB7CiAgICAgICAgdmFyIHVybCA9IGFjdGlvbi5nZXQoJ1VSSScpOwogICAgICAgIGlmIChpc05hbWUodXJsKSkgewogICAgICAgICAgLy8gU29tZSBiYWQgUERGcyBkbyBub3QgcHV0IHBhcmVudGhlc2VzIGFyb3VuZCByZWxhdGl2ZSBVUkxzLgogICAgICAgICAgdXJsID0gJy8nICsgdXJsLm5hbWU7CiAgICAgICAgfSBlbHNlIGlmICh1cmwpIHsKICAgICAgICAgIHVybCA9IGFkZERlZmF1bHRQcm90b2NvbFRvVXJsKHVybCk7CiAgICAgICAgfQogICAgICAgIC8vIFRPRE86IHBkZiBzcGVjIG1lbnRpb25zIHVybHMgY2FuIGJlIHJlbGF0aXZlIHRvIGEgQmFzZQogICAgICAgIC8vIGVudHJ5IGluIHRoZSBkaWN0aW9uYXJ5LgogICAgICAgIGlmICghaXNWYWxpZFVybCh1cmwsIGZhbHNlKSkgewogICAgICAgICAgdXJsID0gJyc7CiAgICAgICAgfQogICAgICAgIGRhdGEudXJsID0gdXJsOwogICAgICB9IGVsc2UgaWYgKGxpbmtUeXBlID09PSAnR29UbycpIHsKICAgICAgICBkYXRhLmRlc3QgPSBhY3Rpb24uZ2V0KCdEJyk7CiAgICAgIH0gZWxzZSBpZiAobGlua1R5cGUgPT09ICdHb1RvUicpIHsKICAgICAgICB2YXIgdXJsRGljdCA9IGFjdGlvbi5nZXQoJ0YnKTsKICAgICAgICBpZiAoaXNEaWN0KHVybERpY3QpKSB7CiAgICAgICAgICAvLyBXZSBhc3N1bWUgdGhhdCB0aGUgJ3VybCcgaXMgYSBGaWxzcGVjIGRpY3Rpb25hcnkKICAgICAgICAgIC8vIGFuZCBmZXRjaCB0aGUgdXJsIHdpdGhvdXQgY2hlY2tpbmcgYW55IGZ1cnRoZXIKICAgICAgICAgIHVybCA9IHVybERpY3QuZ2V0KCdGJykgfHwgJyc7CiAgICAgICAgfQoKICAgICAgICAvLyBUT0RPOiBwZGYgcmVmZXJlbmNlIHNheXMgdGhhdCBHb1RvUgogICAgICAgIC8vIGNhbiBhbHNvIGhhdmUgJ05ld1dpbmRvdycgYXR0cmlidXRlCiAgICAgICAgaWYgKCFpc1ZhbGlkVXJsKHVybCwgZmFsc2UpKSB7CiAgICAgICAgICB1cmwgPSAnJzsKICAgICAgICB9CiAgICAgICAgZGF0YS51cmwgPSB1cmw7CiAgICAgICAgZGF0YS5kZXN0ID0gYWN0aW9uLmdldCgnRCcpOwogICAgICB9IGVsc2UgaWYgKGxpbmtUeXBlID09PSAnTmFtZWQnKSB7CiAgICAgICAgZGF0YS5hY3Rpb24gPSBhY3Rpb24uZ2V0KCdOJykubmFtZTsKICAgICAgfSBlbHNlIHsKICAgICAgICB3YXJuKCd1bnJlY29nbml6ZWQgbGluayB0eXBlOiAnICsgbGlua1R5cGUpOwogICAgICB9CiAgICB9IGVsc2UgaWYgKGRpY3QuaGFzKCdEZXN0JykpIHsKICAgICAgLy8gc2ltcGxlIGRlc3RpbmF0aW9uIGxpbmsKICAgICAgdmFyIGRlc3QgPSBkaWN0LmdldCgnRGVzdCcpOwogICAgICBkYXRhLmRlc3QgPSBpc05hbWUoZGVzdCkgPyBkZXN0Lm5hbWUgOiBkZXN0OwogICAgfQogIH0KCiAgLy8gTGV0cyBVUkxzIGJlZ2lubmluZyB3aXRoICd3d3cuJyBkZWZhdWx0IHRvIHVzaW5nIHRoZSAnaHR0cDovLycgcHJvdG9jb2wuCiAgZnVuY3Rpb24gYWRkRGVmYXVsdFByb3RvY29sVG9VcmwodXJsKSB7CiAgICBpZiAodXJsICYmIHVybC5pbmRleE9mKCd3d3cuJykgPT09IDApIHsKICAgICAgcmV0dXJuICgnaHR0cDovLycgKyB1cmwpOwogICAgfQogICAgcmV0dXJuIHVybDsKICB9CgogIFV0aWwuaW5oZXJpdChMaW5rQW5ub3RhdGlvbiwgSW50ZXJhY3RpdmVBbm5vdGF0aW9uLCB7IH0pOwoKICByZXR1cm4gTGlua0Fubm90YXRpb247Cn0pKCk7CgoKdmFyIFBERkZ1bmN0aW9uID0gKGZ1bmN0aW9uIFBERkZ1bmN0aW9uQ2xvc3VyZSgpIHsKICB2YXIgQ09OU1RSVUNUX1NBTVBMRUQgPSAwOwogIHZhciBDT05TVFJVQ1RfSU5URVJQT0xBVEVEID0gMjsKICB2YXIgQ09OU1RSVUNUX1NUSUNIRUQgPSAzOwogIHZhciBDT05TVFJVQ1RfUE9TVFNDUklQVCA9IDQ7CgogIHJldHVybiB7CiAgICBnZXRTYW1wbGVBcnJheTogZnVuY3Rpb24gUERGRnVuY3Rpb25fZ2V0U2FtcGxlQXJyYXkoc2l6ZSwgb3V0cHV0U2l6ZSwgYnBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKSB7CiAgICAgIHZhciBpLCBpaTsKICAgICAgdmFyIGxlbmd0aCA9IDE7CiAgICAgIGZvciAoaSA9IDAsIGlpID0gc2l6ZS5sZW5ndGg7IGkgPCBpaTsgaSsrKSB7CiAgICAgICAgbGVuZ3RoICo9IHNpemVbaV07CiAgICAgIH0KICAgICAgbGVuZ3RoICo9IG91dHB1dFNpemU7CgogICAgICB2YXIgYXJyYXkgPSBuZXcgQXJyYXkobGVuZ3RoKTsKICAgICAgdmFyIGNvZGVTaXplID0gMDsKICAgICAgdmFyIGNvZGVCdWYgPSAwOwogICAgICAvLyAzMiBpcyBhIHZhbGlkIGJwcyBzbyBzaGlmdGluZyB3b24ndCB3b3JrCiAgICAgIHZhciBzYW1wbGVNdWwgPSAxLjAgLyAoTWF0aC5wb3coMi4wLCBicHMpIC0gMSk7CgogICAgICB2YXIgc3RyQnl0ZXMgPSBzdHIuZ2V0Qnl0ZXMoKGxlbmd0aCAqIGJwcyArIDcpIC8gOCk7CiAgICAgIHZhciBzdHJJZHggPSAwOwogICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgICB3aGlsZSAoY29kZVNpemUgPCBicHMpIHsKICAgICAgICAgIGNvZGVCdWYgPDw9IDg7CiAgICAgICAgICBjb2RlQnVmIHw9IHN0ckJ5dGVzW3N0cklkeCsrXTsKICAgICAgICAgIGNvZGVTaXplICs9IDg7CiAgICAgICAgfQogICAgICAgIGNvZGVTaXplIC09IGJwczsKICAgICAgICBhcnJheVtpXSA9IChjb2RlQnVmID4+IGNvZGVTaXplKSAqIHNhbXBsZU11bDsKICAgICAgICBjb2RlQnVmICY9ICgxIDw8IGNvZGVTaXplKSAtIDE7CiAgICAgIH0KICAgICAgcmV0dXJuIGFycmF5OwogICAgfSwKCiAgICBnZXRJUjogZnVuY3Rpb24gUERGRnVuY3Rpb25fZ2V0SVIoeHJlZiwgZm4pIHsKICAgICAgdmFyIGRpY3QgPSBmbi5kaWN0OwogICAgICBpZiAoIWRpY3QpIHsKICAgICAgICBkaWN0ID0gZm47CiAgICAgIH0KCiAgICAgIHZhciB0eXBlcyA9IFt0aGlzLmNvbnN0cnVjdFNhbXBsZWQsCiAgICAgICAgICAgICAgICAgICBudWxsLAogICAgICAgICAgICAgICAgICAgdGhpcy5jb25zdHJ1Y3RJbnRlcnBvbGF0ZWQsCiAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnN0cnVjdFN0aWNoZWQsCiAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnN0cnVjdFBvc3RTY3JpcHRdOwoKICAgICAgdmFyIHR5cGVOdW0gPSBkaWN0LmdldCgnRnVuY3Rpb25UeXBlJyk7CiAgICAgIHZhciB0eXBlRm4gPSB0eXBlc1t0eXBlTnVtXTsKICAgICAgaWYgKCF0eXBlRm4pIHsKICAgICAgICBlcnJvcignVW5rbm93biB0eXBlIG9mIGZ1bmN0aW9uJyk7CiAgICAgIH0KCiAgICAgIHJldHVybiB0eXBlRm4uY2FsbCh0aGlzLCBmbiwgZGljdCwgeHJlZik7CiAgICB9LAoKICAgIGZyb21JUjogZnVuY3Rpb24gUERGRnVuY3Rpb25fZnJvbUlSKElSKSB7CiAgICAgIHZhciB0eXBlID0gSVJbMF07CiAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgIGNhc2UgQ09OU1RSVUNUX1NBTVBMRUQ6CiAgICAgICAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3RTYW1wbGVkRnJvbUlSKElSKTsKICAgICAgICBjYXNlIENPTlNUUlVDVF9JTlRFUlBPTEFURUQ6CiAgICAgICAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3RJbnRlcnBvbGF0ZWRGcm9tSVIoSVIpOwogICAgICAgIGNhc2UgQ09OU1RSVUNUX1NUSUNIRUQ6CiAgICAgICAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3RTdGljaGVkRnJvbUlSKElSKTsKICAgICAgICAvL2Nhc2UgQ09OU1RSVUNUX1BPU1RTQ1JJUFQ6CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdFBvc3RTY3JpcHRGcm9tSVIoSVIpOwogICAgICB9CiAgICB9LAoKICAgIHBhcnNlOiBmdW5jdGlvbiBQREZGdW5jdGlvbl9wYXJzZSh4cmVmLCBmbikgewogICAgICB2YXIgSVIgPSB0aGlzLmdldElSKHhyZWYsIGZuKTsKICAgICAgcmV0dXJuIHRoaXMuZnJvbUlSKElSKTsKICAgIH0sCgogICAgcGFyc2VBcnJheTogZnVuY3Rpb24gUERGRnVuY3Rpb25fcGFyc2VBcnJheSh4cmVmLCBmbk9iaikgewogICAgICBpZiAoIWlzQXJyYXkoZm5PYmopKSB7CiAgICAgICAgLy8gbm90IGFuIGFycmF5IC0tIHBhcnNpbmcgYXMgcmVndWxhciBmdW5jdGlvbgogICAgICAgIHJldHVybiB0aGlzLnBhcnNlKHhyZWYsIGZuT2JqKTsKICAgICAgfQoKICAgICAgdmFyIGZuQXJyYXkgPSBbXTsKICAgICAgZm9yICh2YXIgaiA9IDAsIGpqID0gZm5PYmoubGVuZ3RoOyBqIDwgamo7IGorKykgewogICAgICAgIHZhciBvYmogPSB4cmVmLmZldGNoSWZSZWYoZm5PYmpbal0pOwogICAgICAgIGZuQXJyYXkucHVzaChQREZGdW5jdGlvbi5wYXJzZSh4cmVmLCBvYmopKTsKICAgICAgfQogICAgICByZXR1cm4gZnVuY3Rpb24gKHNyYywgc3JjT2Zmc2V0LCBkZXN0LCBkZXN0T2Zmc2V0KSB7CiAgICAgICAgZm9yICh2YXIgaSA9IDAsIGlpID0gZm5BcnJheS5sZW5ndGg7IGkgPCBpaTsgaSsrKSB7CiAgICAgICAgICBmbkFycmF5W2ldKHNyYywgc3JjT2Zmc2V0LCBkZXN0LCBkZXN0T2Zmc2V0ICsgaSk7CiAgICAgICAgfQogICAgICB9OwogICAgfSwKCiAgICBjb25zdHJ1Y3RTYW1wbGVkOiBmdW5jdGlvbiBQREZGdW5jdGlvbl9jb25zdHJ1Y3RTYW1wbGVkKHN0ciwgZGljdCkgewogICAgICBmdW5jdGlvbiB0b011bHRpQXJyYXkoYXJyKSB7CiAgICAgICAgdmFyIGlucHV0TGVuZ3RoID0gYXJyLmxlbmd0aDsKICAgICAgICB2YXIgb3V0ID0gW107CiAgICAgICAgdmFyIGluZGV4ID0gMDsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGlucHV0TGVuZ3RoOyBpICs9IDIpIHsKICAgICAgICAgIG91dFtpbmRleF0gPSBbYXJyW2ldLCBhcnJbaSArIDFdXTsKICAgICAgICAgICsraW5kZXg7CiAgICAgICAgfQogICAgICAgIHJldHVybiBvdXQ7CiAgICAgIH0KICAgICAgdmFyIGRvbWFpbiA9IGRpY3QuZ2V0KCdEb21haW4nKTsKICAgICAgdmFyIHJhbmdlID0gZGljdC5nZXQoJ1JhbmdlJyk7CgogICAgICBpZiAoIWRvbWFpbiB8fCAhcmFuZ2UpIHsKICAgICAgICBlcnJvcignTm8gZG9tYWluIG9yIHJhbmdlJyk7CiAgICAgIH0KCiAgICAgIHZhciBpbnB1dFNpemUgPSBkb21haW4ubGVuZ3RoIC8gMjsKICAgICAgdmFyIG91dHB1dFNpemUgPSByYW5nZS5sZW5ndGggLyAyOwoKICAgICAgZG9tYWluID0gdG9NdWx0aUFycmF5KGRvbWFpbik7CiAgICAgIHJhbmdlID0gdG9NdWx0aUFycmF5KHJhbmdlKTsKCiAgICAgIHZhciBzaXplID0gZGljdC5nZXQoJ1NpemUnKTsKICAgICAgdmFyIGJwcyA9IGRpY3QuZ2V0KCdCaXRzUGVyU2FtcGxlJyk7CiAgICAgIHZhciBvcmRlciA9IGRpY3QuZ2V0KCdPcmRlcicpIHx8IDE7CiAgICAgIGlmIChvcmRlciAhPT0gMSkgewogICAgICAgIC8vIE5vIGRlc2NyaXB0aW9uIGhvdyBjdWJpYyBzcGxpbmUgaW50ZXJwb2xhdGlvbiB3b3JrcyBpbiBQREYzMjAwMDoyMDA4CiAgICAgICAgLy8gQXMgaW4gcG9wcGxlciwgaWdub3Jpbmcgb3JkZXIsIGxpbmVhciBpbnRlcnBvbGF0aW9uIG1heSB3b3JrIGFzIGdvb2QKICAgICAgICBpbmZvKCdObyBzdXBwb3J0IGZvciBjdWJpYyBzcGxpbmUgaW50ZXJwb2xhdGlvbjogJyArIG9yZGVyKTsKICAgICAgfQoKICAgICAgdmFyIGVuY29kZSA9IGRpY3QuZ2V0KCdFbmNvZGUnKTsKICAgICAgaWYgKCFlbmNvZGUpIHsKICAgICAgICBlbmNvZGUgPSBbXTsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGlucHV0U2l6ZTsgKytpKSB7CiAgICAgICAgICBlbmNvZGUucHVzaCgwKTsKICAgICAgICAgIGVuY29kZS5wdXNoKHNpemVbaV0gLSAxKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgZW5jb2RlID0gdG9NdWx0aUFycmF5KGVuY29kZSk7CgogICAgICB2YXIgZGVjb2RlID0gZGljdC5nZXQoJ0RlY29kZScpOwogICAgICBpZiAoIWRlY29kZSkgewogICAgICAgIGRlY29kZSA9IHJhbmdlOwogICAgICB9IGVsc2UgewogICAgICAgIGRlY29kZSA9IHRvTXVsdGlBcnJheShkZWNvZGUpOwogICAgICB9CgogICAgICB2YXIgc2FtcGxlcyA9IHRoaXMuZ2V0U2FtcGxlQXJyYXkoc2l6ZSwgb3V0cHV0U2l6ZSwgYnBzLCBzdHIpOwoKICAgICAgcmV0dXJuIFsKICAgICAgICBDT05TVFJVQ1RfU0FNUExFRCwgaW5wdXRTaXplLCBkb21haW4sIGVuY29kZSwgZGVjb2RlLCBzYW1wbGVzLCBzaXplLAogICAgICAgIG91dHB1dFNpemUsIE1hdGgucG93KDIsIGJwcykgLSAxLCByYW5nZQogICAgICBdOwogICAgfSwKCiAgICBjb25zdHJ1Y3RTYW1wbGVkRnJvbUlSOiBmdW5jdGlvbiBQREZGdW5jdGlvbl9jb25zdHJ1Y3RTYW1wbGVkRnJvbUlSKElSKSB7CiAgICAgIC8vIFNlZSBjaGFwdGVyIDMsIHBhZ2UgMTA5IG9mIHRoZSBQREYgcmVmZXJlbmNlCiAgICAgIGZ1bmN0aW9uIGludGVycG9sYXRlKHgsIHhtaW4sIHhtYXgsIHltaW4sIHltYXgpIHsKICAgICAgICByZXR1cm4geW1pbiArICgoeCAtIHhtaW4pICogKCh5bWF4IC0geW1pbikgLyAoeG1heCAtIHhtaW4pKSk7CiAgICAgIH0KCiAgICAgIHJldHVybiBmdW5jdGlvbiBjb25zdHJ1Y3RTYW1wbGVkRnJvbUlSUmVzdWx0KHNyYywgc3JjT2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0LCBkZXN0T2Zmc2V0KSB7CiAgICAgICAgLy8gU2VlIGNoYXB0ZXIgMywgcGFnZSAxMTAgb2YgdGhlIFBERiByZWZlcmVuY2UuCiAgICAgICAgdmFyIG0gPSBJUlsxXTsKICAgICAgICB2YXIgZG9tYWluID0gSVJbMl07CiAgICAgICAgdmFyIGVuY29kZSA9IElSWzNdOwogICAgICAgIHZhciBkZWNvZGUgPSBJUls0XTsKICAgICAgICB2YXIgc2FtcGxlcyA9IElSWzVdOwogICAgICAgIHZhciBzaXplID0gSVJbNl07CiAgICAgICAgdmFyIG4gPSBJUls3XTsKICAgICAgICAvL3ZhciBtYXNrID0gSVJbOF07CiAgICAgICAgdmFyIHJhbmdlID0gSVJbOV07CgogICAgICAgIC8vIEJ1aWxkaW5nIHRoZSBjdWJlIHZlcnRpY2VzOiBpdHMgcGFydCBhbmQgc2FtcGxlIGluZGV4CiAgICAgICAgLy8gaHR0cDovL3Jqd2FnbmVyNDkuY29tL01hdGhlbWF0aWNzL0ludGVycG9sYXRpb24ucGRmCiAgICAgICAgdmFyIGN1YmVWZXJ0aWNlcyA9IDEgPDwgbTsKICAgICAgICB2YXIgY3ViZU4gPSBuZXcgRmxvYXQ2NEFycmF5KGN1YmVWZXJ0aWNlcyk7CiAgICAgICAgdmFyIGN1YmVWZXJ0ZXggPSBuZXcgVWludDMyQXJyYXkoY3ViZVZlcnRpY2VzKTsKICAgICAgICB2YXIgaSwgajsKICAgICAgICBmb3IgKGogPSAwOyBqIDwgY3ViZVZlcnRpY2VzOyBqKyspIHsKICAgICAgICAgIGN1YmVOW2pdID0gMTsKICAgICAgICB9CgogICAgICAgIHZhciBrID0gbiwgcG9zID0gMTsKICAgICAgICAvLyBNYXAgeF9pIHRvIHlfaiBmb3IgMCA8PSBpIDwgbSB1c2luZyB0aGUgc2FtcGxlZCBmdW5jdGlvbi4KICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbTsgKytpKSB7CiAgICAgICAgICAvLyB4X2knID0gbWluKG1heCh4X2ksIERvbWFpbl8yaSksIERvbWFpbl8yaSsxKQogICAgICAgICAgdmFyIGRvbWFpbl8yaSA9IGRvbWFpbltpXVswXTsKICAgICAgICAgIHZhciBkb21haW5fMmlfMSA9IGRvbWFpbltpXVsxXTsKICAgICAgICAgIHZhciB4aSA9IE1hdGgubWluKE1hdGgubWF4KHNyY1tzcmNPZmZzZXQgK2ldLCBkb21haW5fMmkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tYWluXzJpXzEpOwoKICAgICAgICAgIC8vIGVfaSA9IEludGVycG9sYXRlKHhfaScsIERvbWFpbl8yaSwgRG9tYWluXzJpKzEsCiAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICBFbmNvZGVfMmksIEVuY29kZV8yaSsxKQogICAgICAgICAgdmFyIGUgPSBpbnRlcnBvbGF0ZSh4aSwgZG9tYWluXzJpLCBkb21haW5fMmlfMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RlW2ldWzBdLCBlbmNvZGVbaV1bMV0pOwoKICAgICAgICAgIC8vIGVfaScgPSBtaW4obWF4KGVfaSwgMCksIFNpemVfaSAtIDEpCiAgICAgICAgICB2YXIgc2l6ZV9pID0gc2l6ZVtpXTsKICAgICAgICAgIGUgPSBNYXRoLm1pbihNYXRoLm1heChlLCAwKSwgc2l6ZV9pIC0gMSk7CgogICAgICAgICAgLy8gQWRqdXN0aW5nIHRoZSBjdWJlOiBOIGFuZCB2ZXJ0ZXggc2FtcGxlIGluZGV4CiAgICAgICAgICB2YXIgZTAgPSBlIDwgc2l6ZV9pIC0gMSA/IE1hdGguZmxvb3IoZSkgOiBlIC0gMTsgLy8gZTEgPSBlMCArIDE7CiAgICAgICAgICB2YXIgbjAgPSBlMCArIDEgLSBlOyAvLyAoZTEgLSBlKSAvIChlMSAtIGUwKTsKICAgICAgICAgIHZhciBuMSA9IGUgLSBlMDsgLy8gKGUgLSBlMCkgLyAoZTEgLSBlMCk7CiAgICAgICAgICB2YXIgb2Zmc2V0MCA9IGUwICogazsKICAgICAgICAgIHZhciBvZmZzZXQxID0gb2Zmc2V0MCArIGs7IC8vIGUxICogawogICAgICAgICAgZm9yIChqID0gMDsgaiA8IGN1YmVWZXJ0aWNlczsgaisrKSB7CiAgICAgICAgICAgIGlmIChqICYgcG9zKSB7CiAgICAgICAgICAgICAgY3ViZU5bal0gKj0gbjE7CiAgICAgICAgICAgICAgY3ViZVZlcnRleFtqXSArPSBvZmZzZXQxOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIGN1YmVOW2pdICo9IG4wOwogICAgICAgICAgICAgIGN1YmVWZXJ0ZXhbal0gKz0gb2Zmc2V0MDsKICAgICAgICAgICAgfQogICAgICAgICAgfQoKICAgICAgICAgIGsgKj0gc2l6ZV9pOwogICAgICAgICAgcG9zIDw8PSAxOwogICAgICAgIH0KCiAgICAgICAgZm9yIChqID0gMDsgaiA8IG47ICsraikgewogICAgICAgICAgLy8gU3VtIGFsbCBjdWJlIHZlcnRpY2VzJyBzYW1wbGVzIHBvcnRpb25zCiAgICAgICAgICB2YXIgcmogPSAwOwogICAgICAgICAgZm9yIChpID0gMDsgaSA8IGN1YmVWZXJ0aWNlczsgaSsrKSB7CiAgICAgICAgICAgIHJqICs9IHNhbXBsZXNbY3ViZVZlcnRleFtpXSArIGpdICogY3ViZU5baV07CiAgICAgICAgICB9CgogICAgICAgICAgLy8gcl9qJyA9IEludGVycG9sYXRlKHJfaiwgMCwgMl5CaXRzUGVyU2FtcGxlIC0gMSwKICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICBEZWNvZGVfMmosIERlY29kZV8yaisxKQogICAgICAgICAgcmogPSBpbnRlcnBvbGF0ZShyaiwgMCwgMSwgZGVjb2RlW2pdWzBdLCBkZWNvZGVbal1bMV0pOwoKICAgICAgICAgIC8vIHlfaiA9IG1pbihtYXgocl9qLCByYW5nZV8yaiksIHJhbmdlXzJqKzEpCiAgICAgICAgICBkZXN0W2Rlc3RPZmZzZXQgKyBqXSA9IE1hdGgubWluKE1hdGgubWF4KHJqLCByYW5nZVtqXVswXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlW2pdWzFdKTsKICAgICAgICB9CiAgICAgIH07CiAgICB9LAoKICAgIGNvbnN0cnVjdEludGVycG9sYXRlZDogZnVuY3Rpb24gUERGRnVuY3Rpb25fY29uc3RydWN0SW50ZXJwb2xhdGVkKHN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3QpIHsKICAgICAgdmFyIGMwID0gZGljdC5nZXQoJ0MwJykgfHwgWzBdOwogICAgICB2YXIgYzEgPSBkaWN0LmdldCgnQzEnKSB8fCBbMV07CiAgICAgIHZhciBuID0gZGljdC5nZXQoJ04nKTsKCiAgICAgIGlmICghaXNBcnJheShjMCkgfHwgIWlzQXJyYXkoYzEpKSB7CiAgICAgICAgZXJyb3IoJ0lsbGVnYWwgZGljdGlvbmFyeSBmb3IgaW50ZXJwb2xhdGVkIGZ1bmN0aW9uJyk7CiAgICAgIH0KCiAgICAgIHZhciBsZW5ndGggPSBjMC5sZW5ndGg7CiAgICAgIHZhciBkaWZmID0gW107CiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICBkaWZmLnB1c2goYzFbaV0gLSBjMFtpXSk7CiAgICAgIH0KCiAgICAgIHJldHVybiBbQ09OU1RSVUNUX0lOVEVSUE9MQVRFRCwgYzAsIGRpZmYsIG5dOwogICAgfSwKCiAgICBjb25zdHJ1Y3RJbnRlcnBvbGF0ZWRGcm9tSVI6CiAgICAgIGZ1bmN0aW9uIFBERkZ1bmN0aW9uX2NvbnN0cnVjdEludGVycG9sYXRlZEZyb21JUihJUikgewogICAgICB2YXIgYzAgPSBJUlsxXTsKICAgICAgdmFyIGRpZmYgPSBJUlsyXTsKICAgICAgdmFyIG4gPSBJUlszXTsKCiAgICAgIHZhciBsZW5ndGggPSBkaWZmLmxlbmd0aDsKCiAgICAgIHJldHVybiBmdW5jdGlvbiBjb25zdHJ1Y3RJbnRlcnBvbGF0ZWRGcm9tSVJSZXN1bHQoc3JjLCBzcmNPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCwgZGVzdE9mZnNldCkgewogICAgICAgIHZhciB4ID0gbiA9PT0gMSA/IHNyY1tzcmNPZmZzZXRdIDogTWF0aC5wb3coc3JjW3NyY09mZnNldF0sIG4pOwoKICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGxlbmd0aDsgKytqKSB7CiAgICAgICAgICBkZXN0W2Rlc3RPZmZzZXQgKyBqXSA9IGMwW2pdICsgKHggKiBkaWZmW2pdKTsKICAgICAgICB9CiAgICAgIH07CiAgICB9LAoKICAgIGNvbnN0cnVjdFN0aWNoZWQ6IGZ1bmN0aW9uIFBERkZ1bmN0aW9uX2NvbnN0cnVjdFN0aWNoZWQoZm4sIGRpY3QsIHhyZWYpIHsKICAgICAgdmFyIGRvbWFpbiA9IGRpY3QuZ2V0KCdEb21haW4nKTsKCiAgICAgIGlmICghZG9tYWluKSB7CiAgICAgICAgZXJyb3IoJ05vIGRvbWFpbicpOwogICAgICB9CgogICAgICB2YXIgaW5wdXRTaXplID0gZG9tYWluLmxlbmd0aCAvIDI7CiAgICAgIGlmIChpbnB1dFNpemUgIT09IDEpIHsKICAgICAgICBlcnJvcignQmFkIGRvbWFpbiBmb3Igc3RpY2hlZCBmdW5jdGlvbicpOwogICAgICB9CgogICAgICB2YXIgZm5SZWZzID0gZGljdC5nZXQoJ0Z1bmN0aW9ucycpOwogICAgICB2YXIgZm5zID0gW107CiAgICAgIGZvciAodmFyIGkgPSAwLCBpaSA9IGZuUmVmcy5sZW5ndGg7IGkgPCBpaTsgKytpKSB7CiAgICAgICAgZm5zLnB1c2goUERGRnVuY3Rpb24uZ2V0SVIoeHJlZiwgeHJlZi5mZXRjaElmUmVmKGZuUmVmc1tpXSkpKTsKICAgICAgfQoKICAgICAgdmFyIGJvdW5kcyA9IGRpY3QuZ2V0KCdCb3VuZHMnKTsKICAgICAgdmFyIGVuY29kZSA9IGRpY3QuZ2V0KCdFbmNvZGUnKTsKCiAgICAgIHJldHVybiBbQ09OU1RSVUNUX1NUSUNIRUQsIGRvbWFpbiwgYm91bmRzLCBlbmNvZGUsIGZuc107CiAgICB9LAoKICAgIGNvbnN0cnVjdFN0aWNoZWRGcm9tSVI6IGZ1bmN0aW9uIFBERkZ1bmN0aW9uX2NvbnN0cnVjdFN0aWNoZWRGcm9tSVIoSVIpIHsKICAgICAgdmFyIGRvbWFpbiA9IElSWzFdOwogICAgICB2YXIgYm91bmRzID0gSVJbMl07CiAgICAgIHZhciBlbmNvZGUgPSBJUlszXTsKICAgICAgdmFyIGZuc0lSID0gSVJbNF07CiAgICAgIHZhciBmbnMgPSBbXTsKICAgICAgdmFyIHRtcEJ1ZiA9IG5ldyBGbG9hdDMyQXJyYXkoMSk7CgogICAgICBmb3IgKHZhciBpID0gMCwgaWkgPSBmbnNJUi5sZW5ndGg7IGkgPCBpaTsgaSsrKSB7CiAgICAgICAgZm5zLnB1c2goUERGRnVuY3Rpb24uZnJvbUlSKGZuc0lSW2ldKSk7CiAgICAgIH0KCiAgICAgIHJldHVybiBmdW5jdGlvbiBjb25zdHJ1Y3RTdGljaGVkRnJvbUlSUmVzdWx0KHNyYywgc3JjT2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0LCBkZXN0T2Zmc2V0KSB7CiAgICAgICAgdmFyIGNsaXAgPSBmdW5jdGlvbiBjb25zdHJ1Y3RTdGljaGVkRnJvbUlSQ2xpcCh2LCBtaW4sIG1heCkgewogICAgICAgICAgaWYgKHYgPiBtYXgpIHsKICAgICAgICAgICAgdiA9IG1heDsKICAgICAgICAgIH0gZWxzZSBpZiAodiA8IG1pbikgewogICAgICAgICAgICB2ID0gbWluOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIHY7CiAgICAgICAgfTsKCiAgICAgICAgLy8gY2xpcCB0byBkb21haW4KICAgICAgICB2YXIgdiA9IGNsaXAoc3JjW3NyY09mZnNldF0sIGRvbWFpblswXSwgZG9tYWluWzFdKTsKICAgICAgICAvLyBjYWx1bGF0ZSB3aGljaCBib3VuZCB0aGUgdmFsdWUgaXMgaW4KICAgICAgICBmb3IgKHZhciBpID0gMCwgaWkgPSBib3VuZHMubGVuZ3RoOyBpIDwgaWk7ICsraSkgewogICAgICAgICAgaWYgKHYgPCBib3VuZHNbaV0pIHsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBlbmNvZGUgdmFsdWUgaW50byBkb21haW4gb2YgZnVuY3Rpb24KICAgICAgICB2YXIgZG1pbiA9IGRvbWFpblswXTsKICAgICAgICBpZiAoaSA+IDApIHsKICAgICAgICAgIGRtaW4gPSBib3VuZHNbaSAtIDFdOwogICAgICAgIH0KICAgICAgICB2YXIgZG1heCA9IGRvbWFpblsxXTsKICAgICAgICBpZiAoaSA8IGJvdW5kcy5sZW5ndGgpIHsKICAgICAgICAgIGRtYXggPSBib3VuZHNbaV07CiAgICAgICAgfQoKICAgICAgICB2YXIgcm1pbiA9IGVuY29kZVsyICogaV07CiAgICAgICAgdmFyIHJtYXggPSBlbmNvZGVbMiAqIGkgKyAxXTsKCiAgICAgICAgdG1wQnVmWzBdID0gcm1pbiArICh2IC0gZG1pbikgKiAocm1heCAtIHJtaW4pIC8gKGRtYXggLSBkbWluKTsKCiAgICAgICAgLy8gY2FsbCB0aGUgYXBwcm9wcmlhdGUgZnVuY3Rpb24KICAgICAgICBmbnNbaV0odG1wQnVmLCAwLCBkZXN0LCBkZXN0T2Zmc2V0KTsKICAgICAgfTsKICAgIH0sCgogICAgY29uc3RydWN0UG9zdFNjcmlwdDogZnVuY3Rpb24gUERGRnVuY3Rpb25fY29uc3RydWN0UG9zdFNjcmlwdChmbiwgZGljdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHJlZikgewogICAgICB2YXIgZG9tYWluID0gZGljdC5nZXQoJ0RvbWFpbicpOwogICAgICB2YXIgcmFuZ2UgPSBkaWN0LmdldCgnUmFuZ2UnKTsKCiAgICAgIGlmICghZG9tYWluKSB7CiAgICAgICAgZXJyb3IoJ05vIGRvbWFpbi4nKTsKICAgICAgfQoKICAgICAgaWYgKCFyYW5nZSkgewogICAgICAgIGVycm9yKCdObyByYW5nZS4nKTsKICAgICAgfQoKICAgICAgdmFyIGxleGVyID0gbmV3IFBvc3RTY3JpcHRMZXhlcihmbik7CiAgICAgIHZhciBwYXJzZXIgPSBuZXcgUG9zdFNjcmlwdFBhcnNlcihsZXhlcik7CiAgICAgIHZhciBjb2RlID0gcGFyc2VyLnBhcnNlKCk7CgogICAgICByZXR1cm4gW0NPTlNUUlVDVF9QT1NUU0NSSVBULCBkb21haW4sIHJhbmdlLCBjb2RlXTsKICAgIH0sCgogICAgY29uc3RydWN0UG9zdFNjcmlwdEZyb21JUjogZnVuY3Rpb24gUERGRnVuY3Rpb25fY29uc3RydWN0UG9zdFNjcmlwdEZyb21JUigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVIpIHsKICAgICAgdmFyIGRvbWFpbiA9IElSWzFdOwogICAgICB2YXIgcmFuZ2UgPSBJUlsyXTsKICAgICAgdmFyIGNvZGUgPSBJUlszXTsKCiAgICAgIHZhciBjb21waWxlZCA9IChuZXcgUG9zdFNjcmlwdENvbXBpbGVyKCkpLmNvbXBpbGUoY29kZSwgZG9tYWluLCByYW5nZSk7CiAgICAgIGlmIChjb21waWxlZCkgewogICAgICAgIC8vIENvbXBpbGVkIGZ1bmN0aW9uIGNvbnNpc3RzIG9mIHNpbXBsZSBleHByZXNzaW9ucyBzdWNoIGFzIGFkZGl0aW9uLAogICAgICAgIC8vIHN1YnRyYWN0aW9uLCBNYXRoLm1heCwgYW5kIGFsc28gY29udGFpbnMgJ3ZhcicgYW5kICdyZXR1cm4nCiAgICAgICAgLy8gc3RhdGVtZW50cy4gU2VlIHRoZSBnZW5lcmF0aW9uIGluIHRoZSBQb3N0U2NyaXB0Q29tcGlsZXIgYmVsb3cuCiAgICAgICAgLypqc2hpbnQgLVcwNTQgKi8KICAgICAgICByZXR1cm4gbmV3IEZ1bmN0aW9uKCdzcmMnLCAnc3JjT2Zmc2V0JywgJ2Rlc3QnLCAnZGVzdE9mZnNldCcsIGNvbXBpbGVkKTsKICAgICAgfQoKICAgICAgaW5mbygnVW5hYmxlIHRvIGNvbXBpbGUgUFMgZnVuY3Rpb24nKTsKCiAgICAgIHZhciBudW1PdXRwdXRzID0gcmFuZ2UubGVuZ3RoID4+IDE7CiAgICAgIHZhciBudW1JbnB1dHMgPSBkb21haW4ubGVuZ3RoID4+IDE7CiAgICAgIHZhciBldmFsdWF0b3IgPSBuZXcgUG9zdFNjcmlwdEV2YWx1YXRvcihjb2RlKTsKICAgICAgLy8gQ2FjaGUgdGhlIHZhbHVlcyBmb3IgYSBiaWcgc3BlZWQgdXAsIHRoZSBjYWNoZSBzaXplIGlzIGxpbWl0ZWQgdGhvdWdoCiAgICAgIC8vIHNpbmNlIHRoZSBudW1iZXIgb2YgcG9zc2libGUgdmFsdWVzIGNhbiBiZSBodWdlIGZyb20gYSBQUyBmdW5jdGlvbi4KICAgICAgdmFyIGNhY2hlID0ge307CiAgICAgIC8vIFRoZSBNQVhfQ0FDSEVfU0laRSBpcyBzZXQgdG8gfjR4IHRoZSBtYXhpbXVtIG51bWJlciBvZiBkaXN0aW5jdCB2YWx1ZXMKICAgICAgLy8gc2VlbiBpbiBvdXIgdGVzdHMuCiAgICAgIHZhciBNQVhfQ0FDSEVfU0laRSA9IDIwNDggKiA0OwogICAgICB2YXIgY2FjaGVfYXZhaWxhYmxlID0gTUFYX0NBQ0hFX1NJWkU7CiAgICAgIHZhciB0bXBCdWYgPSBuZXcgRmxvYXQzMkFycmF5KG51bUlucHV0cyk7CgogICAgICByZXR1cm4gZnVuY3Rpb24gY29uc3RydWN0UG9zdFNjcmlwdEZyb21JUlJlc3VsdChzcmMsIHNyY09mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCwgZGVzdE9mZnNldCkgewogICAgICAgIHZhciBpLCB2YWx1ZTsKICAgICAgICB2YXIga2V5ID0gJyc7CiAgICAgICAgdmFyIGlucHV0ID0gdG1wQnVmOwogICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1JbnB1dHM7IGkrKykgewogICAgICAgICAgdmFsdWUgPSBzcmNbc3JjT2Zmc2V0ICsgaV07CiAgICAgICAgICBpbnB1dFtpXSA9IHZhbHVlOwogICAgICAgICAga2V5ICs9IHZhbHVlICsgJ18nOwogICAgICAgIH0KCiAgICAgICAgdmFyIGNhY2hlZFZhbHVlID0gY2FjaGVba2V5XTsKICAgICAgICBpZiAoY2FjaGVkVmFsdWUgIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgZGVzdC5zZXQoY2FjaGVkVmFsdWUsIGRlc3RPZmZzZXQpOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgdmFyIG91dHB1dCA9IG5ldyBGbG9hdDMyQXJyYXkobnVtT3V0cHV0cyk7CiAgICAgICAgdmFyIHN0YWNrID0gZXZhbHVhdG9yLmV4ZWN1dGUoaW5wdXQpOwogICAgICAgIHZhciBzdGFja0luZGV4ID0gc3RhY2subGVuZ3RoIC0gbnVtT3V0cHV0czsKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtT3V0cHV0czsgaSsrKSB7CiAgICAgICAgICB2YWx1ZSA9IHN0YWNrW3N0YWNrSW5kZXggKyBpXTsKICAgICAgICAgIHZhciBib3VuZCA9IHJhbmdlW2kgKiAyXTsKICAgICAgICAgIGlmICh2YWx1ZSA8IGJvdW5kKSB7CiAgICAgICAgICAgIHZhbHVlID0gYm91bmQ7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBib3VuZCA9IHJhbmdlW2kgKiAyICsxXTsKICAgICAgICAgICAgaWYgKHZhbHVlID4gYm91bmQpIHsKICAgICAgICAgICAgICB2YWx1ZSA9IGJvdW5kOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBvdXRwdXRbaV0gPSB2YWx1ZTsKICAgICAgICB9CiAgICAgICAgaWYgKGNhY2hlX2F2YWlsYWJsZSA+IDApIHsKICAgICAgICAgIGNhY2hlX2F2YWlsYWJsZS0tOwogICAgICAgICAgY2FjaGVba2V5XSA9IG91dHB1dDsKICAgICAgICB9CiAgICAgICAgZGVzdC5zZXQob3V0cHV0LCBkZXN0T2Zmc2V0KTsKICAgICAgfTsKICAgIH0KICB9Owp9KSgpOwoKZnVuY3Rpb24gaXNQREZGdW5jdGlvbih2KSB7CiAgdmFyIGZuRGljdDsKICBpZiAodHlwZW9mIHYgIT09ICdvYmplY3QnKSB7CiAgICByZXR1cm4gZmFsc2U7CiAgfSBlbHNlIGlmIChpc0RpY3QodikpIHsKICAgIGZuRGljdCA9IHY7CiAgfSBlbHNlIGlmIChpc1N0cmVhbSh2KSkgewogICAgZm5EaWN0ID0gdi5kaWN0OwogIH0gZWxzZSB7CiAgICByZXR1cm4gZmFsc2U7CiAgfQogIHJldHVybiBmbkRpY3QuaGFzKCdGdW5jdGlvblR5cGUnKTsKfQoKdmFyIFBvc3RTY3JpcHRTdGFjayA9IChmdW5jdGlvbiBQb3N0U2NyaXB0U3RhY2tDbG9zdXJlKCkgewogIHZhciBNQVhfU1RBQ0tfU0laRSA9IDEwMDsKICBmdW5jdGlvbiBQb3N0U2NyaXB0U3RhY2soaW5pdGlhbFN0YWNrKSB7CiAgICB0aGlzLnN0YWNrID0gIWluaXRpYWxTdGFjayA/IFtdIDoKICAgICAgICAgICAgICAgICBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChpbml0aWFsU3RhY2ssIDApOwogIH0KCiAgUG9zdFNjcmlwdFN0YWNrLnByb3RvdHlwZSA9IHsKICAgIHB1c2g6IGZ1bmN0aW9uIFBvc3RTY3JpcHRTdGFja19wdXNoKHZhbHVlKSB7CiAgICAgIGlmICh0aGlzLnN0YWNrLmxlbmd0aCA+PSBNQVhfU1RBQ0tfU0laRSkgewogICAgICAgIGVycm9yKCdQb3N0U2NyaXB0IGZ1bmN0aW9uIHN0YWNrIG92ZXJmbG93LicpOwogICAgICB9CiAgICAgIHRoaXMuc3RhY2sucHVzaCh2YWx1ZSk7CiAgICB9LAogICAgcG9wOiBmdW5jdGlvbiBQb3N0U2NyaXB0U3RhY2tfcG9wKCkgewogICAgICBpZiAodGhpcy5zdGFjay5sZW5ndGggPD0gMCkgewogICAgICAgIGVycm9yKCdQb3N0U2NyaXB0IGZ1bmN0aW9uIHN0YWNrIHVuZGVyZmxvdy4nKTsKICAgICAgfQogICAgICByZXR1cm4gdGhpcy5zdGFjay5wb3AoKTsKICAgIH0sCiAgICBjb3B5OiBmdW5jdGlvbiBQb3N0U2NyaXB0U3RhY2tfY29weShuKSB7CiAgICAgIGlmICh0aGlzLnN0YWNrLmxlbmd0aCArIG4gPj0gTUFYX1NUQUNLX1NJWkUpIHsKICAgICAgICBlcnJvcignUG9zdFNjcmlwdCBmdW5jdGlvbiBzdGFjayBvdmVyZmxvdy4nKTsKICAgICAgfQogICAgICB2YXIgc3RhY2sgPSB0aGlzLnN0YWNrOwogICAgICBmb3IgKHZhciBpID0gc3RhY2subGVuZ3RoIC0gbiwgaiA9IG4gLSAxOyBqID49IDA7IGotLSwgaSsrKSB7CiAgICAgICAgc3RhY2sucHVzaChzdGFja1tpXSk7CiAgICAgIH0KICAgIH0sCiAgICBpbmRleDogZnVuY3Rpb24gUG9zdFNjcmlwdFN0YWNrX2luZGV4KG4pIHsKICAgICAgdGhpcy5wdXNoKHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSBuIC0gMV0pOwogICAgfSwKICAgIC8vIHJvdGF0ZSB0aGUgbGFzdCBuIHN0YWNrIGVsZW1lbnRzIHAgdGltZXMKICAgIHJvbGw6IGZ1bmN0aW9uIFBvc3RTY3JpcHRTdGFja19yb2xsKG4sIHApIHsKICAgICAgdmFyIHN0YWNrID0gdGhpcy5zdGFjazsKICAgICAgdmFyIGwgPSBzdGFjay5sZW5ndGggLSBuOwogICAgICB2YXIgciA9IHN0YWNrLmxlbmd0aCAtIDEsIGMgPSBsICsgKHAgLSBNYXRoLmZsb29yKHAgLyBuKSAqIG4pLCBpLCBqLCB0OwogICAgICBmb3IgKGkgPSBsLCBqID0gcjsgaSA8IGo7IGkrKywgai0tKSB7CiAgICAgICAgdCA9IHN0YWNrW2ldOyBzdGFja1tpXSA9IHN0YWNrW2pdOyBzdGFja1tqXSA9IHQ7CiAgICAgIH0KICAgICAgZm9yIChpID0gbCwgaiA9IGMgLSAxOyBpIDwgajsgaSsrLCBqLS0pIHsKICAgICAgICB0ID0gc3RhY2tbaV07IHN0YWNrW2ldID0gc3RhY2tbal07IHN0YWNrW2pdID0gdDsKICAgICAgfQogICAgICBmb3IgKGkgPSBjLCBqID0gcjsgaSA8IGo7IGkrKywgai0tKSB7CiAgICAgICAgdCA9IHN0YWNrW2ldOyBzdGFja1tpXSA9IHN0YWNrW2pdOyBzdGFja1tqXSA9IHQ7CiAgICAgIH0KICAgIH0KICB9OwogIHJldHVybiBQb3N0U2NyaXB0U3RhY2s7Cn0pKCk7CnZhciBQb3N0U2NyaXB0RXZhbHVhdG9yID0gKGZ1bmN0aW9uIFBvc3RTY3JpcHRFdmFsdWF0b3JDbG9zdXJlKCkgewogIGZ1bmN0aW9uIFBvc3RTY3JpcHRFdmFsdWF0b3Iob3BlcmF0b3JzKSB7CiAgICB0aGlzLm9wZXJhdG9ycyA9IG9wZXJhdG9yczsKICB9CiAgUG9zdFNjcmlwdEV2YWx1YXRvci5wcm90b3R5cGUgPSB7CiAgICBleGVjdXRlOiBmdW5jdGlvbiBQb3N0U2NyaXB0RXZhbHVhdG9yX2V4ZWN1dGUoaW5pdGlhbFN0YWNrKSB7CiAgICAgIHZhciBzdGFjayA9IG5ldyBQb3N0U2NyaXB0U3RhY2soaW5pdGlhbFN0YWNrKTsKICAgICAgdmFyIGNvdW50ZXIgPSAwOwogICAgICB2YXIgb3BlcmF0b3JzID0gdGhpcy5vcGVyYXRvcnM7CiAgICAgIHZhciBsZW5ndGggPSBvcGVyYXRvcnMubGVuZ3RoOwogICAgICB2YXIgb3BlcmF0b3IsIGEsIGI7CiAgICAgIHdoaWxlIChjb3VudGVyIDwgbGVuZ3RoKSB7CiAgICAgICAgb3BlcmF0b3IgPSBvcGVyYXRvcnNbY291bnRlcisrXTsKICAgICAgICBpZiAodHlwZW9mIG9wZXJhdG9yID09PSAnbnVtYmVyJykgewogICAgICAgICAgLy8gT3BlcmF0b3IgaXMgcmVhbGx5IGFuIG9wZXJhbmQgYW5kIHNob3VsZCBiZSBwdXNoZWQgdG8gdGhlIHN0YWNrLgogICAgICAgICAgc3RhY2sucHVzaChvcGVyYXRvcik7CiAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgc3dpdGNoIChvcGVyYXRvcikgewogICAgICAgICAgLy8gbm9uIHN0YW5kYXJkIHBzIG9wZXJhdG9ycwogICAgICAgICAgY2FzZSAnanonOiAvLyBqdW1wIGlmIGZhbHNlCiAgICAgICAgICAgIGIgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgYSA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICBpZiAoIWEpIHsKICAgICAgICAgICAgICBjb3VudGVyID0gYjsKICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgJ2onOiAvLyBqdW1wCiAgICAgICAgICAgIGEgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgY291bnRlciA9IGE7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgIC8vIGFsbCBwcyBvcGVyYXRvcnMgaW4gYWxwaGFiZXRpY2FsIG9yZGVyIChleGNsdWRpbmcgaWYvaWZlbHNlKQogICAgICAgICAgY2FzZSAnYWJzJzoKICAgICAgICAgICAgYSA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICBzdGFjay5wdXNoKE1hdGguYWJzKGEpKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlICdhZGQnOgogICAgICAgICAgICBiID0gc3RhY2sucG9wKCk7CiAgICAgICAgICAgIGEgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgc3RhY2sucHVzaChhICsgYik7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAnYW5kJzoKICAgICAgICAgICAgYiA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICBhID0gc3RhY2sucG9wKCk7CiAgICAgICAgICAgIGlmIChpc0Jvb2woYSkgJiYgaXNCb29sKGIpKSB7CiAgICAgICAgICAgICAgc3RhY2sucHVzaChhICYmIGIpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIHN0YWNrLnB1c2goYSAmIGIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAnYXRhbic6CiAgICAgICAgICAgIGEgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgc3RhY2sucHVzaChNYXRoLmF0YW4oYSkpOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgJ2JpdHNoaWZ0JzoKICAgICAgICAgICAgYiA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICBhID0gc3RhY2sucG9wKCk7CiAgICAgICAgICAgIGlmIChhID4gMCkgewogICAgICAgICAgICAgIHN0YWNrLnB1c2goYSA8PCBiKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBzdGFjay5wdXNoKGEgPj4gYik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlICdjZWlsaW5nJzoKICAgICAgICAgICAgYSA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICBzdGFjay5wdXNoKE1hdGguY2VpbChhKSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAnY29weSc6CiAgICAgICAgICAgIGEgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgc3RhY2suY29weShhKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlICdjb3MnOgogICAgICAgICAgICBhID0gc3RhY2sucG9wKCk7CiAgICAgICAgICAgIHN0YWNrLnB1c2goTWF0aC5jb3MoYSkpOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgJ2N2aSc6CiAgICAgICAgICAgIGEgPSBzdGFjay5wb3AoKSB8IDA7CiAgICAgICAgICAgIHN0YWNrLnB1c2goYSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAnY3ZyJzoKICAgICAgICAgICAgLy8gbm9vcAogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgJ2Rpdic6CiAgICAgICAgICAgIGIgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgYSA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICBzdGFjay5wdXNoKGEgLyBiKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlICdkdXAnOgogICAgICAgICAgICBzdGFjay5jb3B5KDEpOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgJ2VxJzoKICAgICAgICAgICAgYiA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICBhID0gc3RhY2sucG9wKCk7CiAgICAgICAgICAgIHN0YWNrLnB1c2goYSA9PT0gYik7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAnZXhjaCc6CiAgICAgICAgICAgIHN0YWNrLnJvbGwoMiwgMSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAnZXhwJzoKICAgICAgICAgICAgYiA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICBhID0gc3RhY2sucG9wKCk7CiAgICAgICAgICAgIHN0YWNrLnB1c2goTWF0aC5wb3coYSwgYikpOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgJ2ZhbHNlJzoKICAgICAgICAgICAgc3RhY2sucHVzaChmYWxzZSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAnZmxvb3InOgogICAgICAgICAgICBhID0gc3RhY2sucG9wKCk7CiAgICAgICAgICAgIHN0YWNrLnB1c2goTWF0aC5mbG9vcihhKSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAnZ2UnOgogICAgICAgICAgICBiID0gc3RhY2sucG9wKCk7CiAgICAgICAgICAgIGEgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgc3RhY2sucHVzaChhID49IGIpOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgJ2d0JzoKICAgICAgICAgICAgYiA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICBhID0gc3RhY2sucG9wKCk7CiAgICAgICAgICAgIHN0YWNrLnB1c2goYSA+IGIpOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgJ2lkaXYnOgogICAgICAgICAgICBiID0gc3RhY2sucG9wKCk7CiAgICAgICAgICAgIGEgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgc3RhY2sucHVzaCgoYSAvIGIpIHwgMCk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAnaW5kZXgnOgogICAgICAgICAgICBhID0gc3RhY2sucG9wKCk7CiAgICAgICAgICAgIHN0YWNrLmluZGV4KGEpOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgJ2xlJzoKICAgICAgICAgICAgYiA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICBhID0gc3RhY2sucG9wKCk7CiAgICAgICAgICAgIHN0YWNrLnB1c2goYSA8PSBiKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlICdsbic6CiAgICAgICAgICAgIGEgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgc3RhY2sucHVzaChNYXRoLmxvZyhhKSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAnbG9nJzoKICAgICAgICAgICAgYSA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICBzdGFjay5wdXNoKE1hdGgubG9nKGEpIC8gTWF0aC5MTjEwKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlICdsdCc6CiAgICAgICAgICAgIGIgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgYSA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICBzdGFjay5wdXNoKGEgPCBiKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlICdtb2QnOgogICAgICAgICAgICBiID0gc3RhY2sucG9wKCk7CiAgICAgICAgICAgIGEgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgc3RhY2sucHVzaChhICUgYik7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAnbXVsJzoKICAgICAgICAgICAgYiA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICBhID0gc3RhY2sucG9wKCk7CiAgICAgICAgICAgIHN0YWNrLnB1c2goYSAqIGIpOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgJ25lJzoKICAgICAgICAgICAgYiA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICBhID0gc3RhY2sucG9wKCk7CiAgICAgICAgICAgIHN0YWNrLnB1c2goYSAhPT0gYik7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAnbmVnJzoKICAgICAgICAgICAgYSA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICBzdGFjay5wdXNoKC1hKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlICdub3QnOgogICAgICAgICAgICBhID0gc3RhY2sucG9wKCk7CiAgICAgICAgICAgIGlmIChpc0Jvb2woYSkpIHsKICAgICAgICAgICAgICBzdGFjay5wdXNoKCFhKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBzdGFjay5wdXNoKH5hKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgJ29yJzoKICAgICAgICAgICAgYiA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICBhID0gc3RhY2sucG9wKCk7CiAgICAgICAgICAgIGlmIChpc0Jvb2woYSkgJiYgaXNCb29sKGIpKSB7CiAgICAgICAgICAgICAgc3RhY2sucHVzaChhIHx8IGIpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIHN0YWNrLnB1c2goYSB8IGIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAncG9wJzoKICAgICAgICAgICAgc3RhY2sucG9wKCk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAncm9sbCc6CiAgICAgICAgICAgIGIgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgYSA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICBzdGFjay5yb2xsKGEsIGIpOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgJ3JvdW5kJzoKICAgICAgICAgICAgYSA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICBzdGFjay5wdXNoKE1hdGgucm91bmQoYSkpOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgJ3Npbic6CiAgICAgICAgICAgIGEgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgc3RhY2sucHVzaChNYXRoLnNpbihhKSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAnc3FydCc6CiAgICAgICAgICAgIGEgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgc3RhY2sucHVzaChNYXRoLnNxcnQoYSkpOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgJ3N1Yic6CiAgICAgICAgICAgIGIgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgYSA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICBzdGFjay5wdXNoKGEgLSBiKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlICd0cnVlJzoKICAgICAgICAgICAgc3RhY2sucHVzaCh0cnVlKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlICd0cnVuY2F0ZSc6CiAgICAgICAgICAgIGEgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgYSA9IGEgPCAwID8gTWF0aC5jZWlsKGEpIDogTWF0aC5mbG9vcihhKTsKICAgICAgICAgICAgc3RhY2sucHVzaChhKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlICd4b3InOgogICAgICAgICAgICBiID0gc3RhY2sucG9wKCk7CiAgICAgICAgICAgIGEgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgaWYgKGlzQm9vbChhKSAmJiBpc0Jvb2woYikpIHsKICAgICAgICAgICAgICBzdGFjay5wdXNoKGEgIT09IGIpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIHN0YWNrLnB1c2goYSBeIGIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgZXJyb3IoJ1Vua25vd24gb3BlcmF0b3IgJyArIG9wZXJhdG9yKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiBzdGFjay5zdGFjazsKICAgIH0KICB9OwogIHJldHVybiBQb3N0U2NyaXB0RXZhbHVhdG9yOwp9KSgpOwoKLy8gTW9zdCBvZiB0aGUgUERGcyBmdW5jdGlvbnMgY29uc2lzdCBvZiBzaW1wbGUgb3BlcmF0aW9ucyBzdWNoIGFzOgovLyAgIHJvbGwsIGV4Y2gsIHN1YiwgY3ZyLCBwb3AsIGluZGV4LCBkdXAsIG11bCwgaWYsIGd0LCBhZGQuCi8vCi8vIFdlIGNhbiBjb21waWxlIG1vc3Qgb2Ygc3VjaCBwcm9ncmFtcywgYW5kIGF0IHRoZSBzYW1lIG1vbWVudCwgd2UgY2FuCi8vIG9wdGltaXplIHNvbWUgZXhwcmVzc2lvbnMgdXNpbmcgYmFzaWMgbWF0aCBwcm9wZXJ0aWVzLiBLZWVwaW5nIHRyYWNrIG9mCi8vIG1pbi9tYXggdmFsdWVzIHdpbGwgYWxsb3cgdXMgdG8gYXZvaWQgZXh0cmEgTWF0aC5taW4vTWF0aC5tYXggY2FsbHMuCnZhciBQb3N0U2NyaXB0Q29tcGlsZXIgPSAoZnVuY3Rpb24gUG9zdFNjcmlwdENvbXBpbGVyQ2xvc3VyZSgpIHsKICBmdW5jdGlvbiBBc3ROb2RlKHR5cGUpIHsKICAgIHRoaXMudHlwZSA9IHR5cGU7CiAgfQogIEFzdE5vZGUucHJvdG90eXBlLnZpc2l0ID0gZnVuY3Rpb24gKHZpc2l0b3IpIHsKICAgIHRocm93IG5ldyBFcnJvcignYWJzdHJhY3QgbWV0aG9kJyk7CiAgfTsKCiAgZnVuY3Rpb24gQXN0QXJndW1lbnQoaW5kZXgsIG1pbiwgbWF4KSB7CiAgICBBc3ROb2RlLmNhbGwodGhpcywgJ2FyZ3MnKTsKICAgIHRoaXMuaW5kZXggPSBpbmRleDsKICAgIHRoaXMubWluID0gbWluOwogICAgdGhpcy5tYXggPSBtYXg7CiAgfQogIEFzdEFyZ3VtZW50LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQXN0Tm9kZS5wcm90b3R5cGUpOwogIEFzdEFyZ3VtZW50LnByb3RvdHlwZS52aXNpdCA9IGZ1bmN0aW9uICh2aXNpdG9yKSB7CiAgICB2aXNpdG9yLnZpc2l0QXJndW1lbnQodGhpcyk7CiAgfTsKCiAgZnVuY3Rpb24gQXN0TGl0ZXJhbChudW1iZXIpIHsKICAgIEFzdE5vZGUuY2FsbCh0aGlzLCAnbGl0ZXJhbCcpOwogICAgdGhpcy5udW1iZXIgPSBudW1iZXI7CiAgICB0aGlzLm1pbiA9IG51bWJlcjsKICAgIHRoaXMubWF4ID0gbnVtYmVyOwogIH0KICBBc3RMaXRlcmFsLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQXN0Tm9kZS5wcm90b3R5cGUpOwogIEFzdExpdGVyYWwucHJvdG90eXBlLnZpc2l0ID0gZnVuY3Rpb24gKHZpc2l0b3IpIHsKICAgIHZpc2l0b3IudmlzaXRMaXRlcmFsKHRoaXMpOwogIH07CgogIGZ1bmN0aW9uIEFzdEJpbmFyeU9wZXJhdGlvbihvcCwgYXJnMSwgYXJnMiwgbWluLCBtYXgpIHsKICAgIEFzdE5vZGUuY2FsbCh0aGlzLCAnYmluYXJ5Jyk7CiAgICB0aGlzLm9wID0gb3A7CiAgICB0aGlzLmFyZzEgPSBhcmcxOwogICAgdGhpcy5hcmcyID0gYXJnMjsKICAgIHRoaXMubWluID0gbWluOwogICAgdGhpcy5tYXggPSBtYXg7CiAgfQogIEFzdEJpbmFyeU9wZXJhdGlvbi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEFzdE5vZGUucHJvdG90eXBlKTsKICBBc3RCaW5hcnlPcGVyYXRpb24ucHJvdG90eXBlLnZpc2l0ID0gZnVuY3Rpb24gKHZpc2l0b3IpIHsKICAgIHZpc2l0b3IudmlzaXRCaW5hcnlPcGVyYXRpb24odGhpcyk7CiAgfTsKCiAgZnVuY3Rpb24gQXN0TWluKGFyZywgbWF4KSB7CiAgICBBc3ROb2RlLmNhbGwodGhpcywgJ21heCcpOwogICAgdGhpcy5hcmcgPSBhcmc7CiAgICB0aGlzLm1pbiA9IGFyZy5taW47CiAgICB0aGlzLm1heCA9IG1heDsKICB9CiAgQXN0TWluLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQXN0Tm9kZS5wcm90b3R5cGUpOwogIEFzdE1pbi5wcm90b3R5cGUudmlzaXQgPSBmdW5jdGlvbiAodmlzaXRvcikgewogICAgdmlzaXRvci52aXNpdE1pbih0aGlzKTsKICB9OwoKICBmdW5jdGlvbiBBc3RWYXJpYWJsZShpbmRleCwgbWluLCBtYXgpIHsKICAgIEFzdE5vZGUuY2FsbCh0aGlzLCAndmFyJyk7CiAgICB0aGlzLmluZGV4ID0gaW5kZXg7CiAgICB0aGlzLm1pbiA9IG1pbjsKICAgIHRoaXMubWF4ID0gbWF4OwogIH0KICBBc3RWYXJpYWJsZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEFzdE5vZGUucHJvdG90eXBlKTsKICBBc3RWYXJpYWJsZS5wcm90b3R5cGUudmlzaXQgPSBmdW5jdGlvbiAodmlzaXRvcikgewogICAgdmlzaXRvci52aXNpdFZhcmlhYmxlKHRoaXMpOwogIH07CgogIGZ1bmN0aW9uIEFzdFZhcmlhYmxlRGVmaW5pdGlvbih2YXJpYWJsZSwgYXJnKSB7CiAgICBBc3ROb2RlLmNhbGwodGhpcywgJ2RlZmluaXRpb24nKTsKICAgIHRoaXMudmFyaWFibGUgPSB2YXJpYWJsZTsKICAgIHRoaXMuYXJnID0gYXJnOwogIH0KICBBc3RWYXJpYWJsZURlZmluaXRpb24ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShBc3ROb2RlLnByb3RvdHlwZSk7CiAgQXN0VmFyaWFibGVEZWZpbml0aW9uLnByb3RvdHlwZS52aXNpdCA9IGZ1bmN0aW9uICh2aXNpdG9yKSB7CiAgICB2aXNpdG9yLnZpc2l0VmFyaWFibGVEZWZpbml0aW9uKHRoaXMpOwogIH07CgogIGZ1bmN0aW9uIEV4cHJlc3Npb25CdWlsZGVyVmlzaXRvcigpIHsKICAgIHRoaXMucGFydHMgPSBbXTsKICB9CiAgRXhwcmVzc2lvbkJ1aWxkZXJWaXNpdG9yLnByb3RvdHlwZSA9IHsKICAgIHZpc2l0QXJndW1lbnQ6IGZ1bmN0aW9uIChhcmcpIHsKICAgICAgdGhpcy5wYXJ0cy5wdXNoKCdNYXRoLm1heCgnLCBhcmcubWluLCAnLCBNYXRoLm1pbignLAogICAgICAgICAgICAgICAgICAgICAgYXJnLm1heCwgJywgc3JjW3NyY09mZnNldCArICcsIGFyZy5pbmRleCwgJ10pKScpOwogICAgfSwKICAgIHZpc2l0VmFyaWFibGU6IGZ1bmN0aW9uICh2YXJpYWJsZSkgewogICAgICB0aGlzLnBhcnRzLnB1c2goJ3YnLCB2YXJpYWJsZS5pbmRleCk7CiAgICB9LAogICAgdmlzaXRMaXRlcmFsOiBmdW5jdGlvbiAobGl0ZXJhbCkgewogICAgICB0aGlzLnBhcnRzLnB1c2gobGl0ZXJhbC5udW1iZXIpOwogICAgfSwKICAgIHZpc2l0QmluYXJ5T3BlcmF0aW9uOiBmdW5jdGlvbiAob3BlcmF0aW9uKSB7CiAgICAgIHRoaXMucGFydHMucHVzaCgnKCcpOwogICAgICBvcGVyYXRpb24uYXJnMS52aXNpdCh0aGlzKTsKICAgICAgdGhpcy5wYXJ0cy5wdXNoKCcgJywgb3BlcmF0aW9uLm9wLCAnICcpOwogICAgICBvcGVyYXRpb24uYXJnMi52aXNpdCh0aGlzKTsKICAgICAgdGhpcy5wYXJ0cy5wdXNoKCcpJyk7CiAgICB9LAogICAgdmlzaXRWYXJpYWJsZURlZmluaXRpb246IGZ1bmN0aW9uIChkZWZpbml0aW9uKSB7CiAgICAgIHRoaXMucGFydHMucHVzaCgndmFyICcpOwogICAgICBkZWZpbml0aW9uLnZhcmlhYmxlLnZpc2l0KHRoaXMpOwogICAgICB0aGlzLnBhcnRzLnB1c2goJyA9ICcpOwogICAgICBkZWZpbml0aW9uLmFyZy52aXNpdCh0aGlzKTsKICAgICAgdGhpcy5wYXJ0cy5wdXNoKCc7Jyk7CiAgICB9LAogICAgdmlzaXRNaW46IGZ1bmN0aW9uIChtYXgpIHsKICAgICAgdGhpcy5wYXJ0cy5wdXNoKCdNYXRoLm1pbignKTsKICAgICAgbWF4LmFyZy52aXNpdCh0aGlzKTsKICAgICAgdGhpcy5wYXJ0cy5wdXNoKCcsICcsIG1heC5tYXgsICcpJyk7CiAgICB9LAogICAgdG9TdHJpbmc6IGZ1bmN0aW9uICgpIHsKICAgICAgcmV0dXJuIHRoaXMucGFydHMuam9pbignJyk7CiAgICB9CiAgfTsKCiAgZnVuY3Rpb24gYnVpbGRBZGRPcGVyYXRpb24obnVtMSwgbnVtMikgewogICAgaWYgKG51bTIudHlwZSA9PT0gJ2xpdGVyYWwnICYmIG51bTIubnVtYmVyID09PSAwKSB7CiAgICAgIC8vIG9wdGltaXphdGlvbjogc2Vjb25kIG9wZXJhbmQgaXMgMAogICAgICByZXR1cm4gbnVtMTsKICAgIH0KICAgIGlmIChudW0xLnR5cGUgPT09ICdsaXRlcmFsJyAmJiBudW0xLm51bWJlciA9PT0gMCkgewogICAgICAvLyBvcHRpbWl6YXRpb246IGZpcnN0IG9wZXJhbmQgaXMgMAogICAgICByZXR1cm4gbnVtMjsKICAgIH0KICAgIGlmIChudW0yLnR5cGUgPT09ICdsaXRlcmFsJyAmJiBudW0xLnR5cGUgPT09ICdsaXRlcmFsJykgewogICAgICAvLyBvcHRpbWl6YXRpb246IG9wZXJhbmRzIG9wZXJhbmQgYXJlIGxpdGVyYWxzCiAgICAgIHJldHVybiBuZXcgQXN0TGl0ZXJhbChudW0xLm51bWJlciArIG51bTIubnVtYmVyKTsKICAgIH0KICAgIHJldHVybiBuZXcgQXN0QmluYXJ5T3BlcmF0aW9uKCcrJywgbnVtMSwgbnVtMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bTEubWluICsgbnVtMi5taW4sIG51bTEubWF4ICsgbnVtMi5tYXgpOwogIH0KCiAgZnVuY3Rpb24gYnVpbGRNdWxPcGVyYXRpb24obnVtMSwgbnVtMikgewogICAgaWYgKG51bTIudHlwZSA9PT0gJ2xpdGVyYWwnKSB7CiAgICAgIC8vIG9wdGltaXphdGlvbjogc2Vjb25kIG9wZXJhbmRzIGlzIGEgbGl0ZXJhbC4uLgogICAgICBpZiAobnVtMi5udW1iZXIgPT09IDApIHsKICAgICAgICByZXR1cm4gbmV3IEFzdExpdGVyYWwoMCk7IC8vIGFuZCBpdCdzIDAKICAgICAgfSBlbHNlIGlmIChudW0yLm51bWJlciA9PT0gMSkgewogICAgICAgIHJldHVybiBudW0xOyAvLyBhbmQgaXQncyAxCiAgICAgIH0gZWxzZSBpZiAobnVtMS50eXBlID09PSAnbGl0ZXJhbCcpIHsKICAgICAgICAvLyAuLi4gYW5kIGZpcnN0IG9wZXJhbmRzIGlzIGEgbGl0ZXJhbCB0b28KICAgICAgICByZXR1cm4gbmV3IEFzdExpdGVyYWwobnVtMS5udW1iZXIgKiBudW0yLm51bWJlcik7CiAgICAgIH0KICAgIH0KICAgIGlmIChudW0xLnR5cGUgPT09ICdsaXRlcmFsJykgewogICAgICAvLyBvcHRpbWl6YXRpb246IGZpcnN0IG9wZXJhbmRzIGlzIGEgbGl0ZXJhbC4uLgogICAgICBpZiAobnVtMS5udW1iZXIgPT09IDApIHsKICAgICAgICByZXR1cm4gbmV3IEFzdExpdGVyYWwoMCk7IC8vIGFuZCBpdCdzIDAKICAgICAgfSBlbHNlIGlmIChudW0xLm51bWJlciA9PT0gMSkgewogICAgICAgIHJldHVybiBudW0yOyAvLyBhbmQgaXQncyAxCiAgICAgIH0KICAgIH0KICAgIHZhciBtaW4gPSBNYXRoLm1pbihudW0xLm1pbiAqIG51bTIubWluLCBudW0xLm1pbiAqIG51bTIubWF4LAogICAgICAgICAgICAgICAgICAgICAgIG51bTEubWF4ICogbnVtMi5taW4sIG51bTEubWF4ICogbnVtMi5tYXgpOwogICAgdmFyIG1heCA9IE1hdGgubWF4KG51bTEubWluICogbnVtMi5taW4sIG51bTEubWluICogbnVtMi5tYXgsCiAgICAgICAgICAgICAgICAgICAgICAgbnVtMS5tYXggKiBudW0yLm1pbiwgbnVtMS5tYXggKiBudW0yLm1heCk7CiAgICByZXR1cm4gbmV3IEFzdEJpbmFyeU9wZXJhdGlvbignKicsIG51bTEsIG51bTIsIG1pbiwgbWF4KTsKICB9CgogIGZ1bmN0aW9uIGJ1aWxkU3ViT3BlcmF0aW9uKG51bTEsIG51bTIpIHsKICAgIGlmIChudW0yLnR5cGUgPT09ICdsaXRlcmFsJykgewogICAgICAvLyBvcHRpbWl6YXRpb246IHNlY29uZCBvcGVyYW5kcyBpcyBhIGxpdGVyYWwuLi4KICAgICAgaWYgKG51bTIubnVtYmVyID09PSAwKSB7CiAgICAgICAgcmV0dXJuIG51bTE7IC8vIC4uLiBhbmQgaXQncyAwCiAgICAgIH0gZWxzZSBpZiAobnVtMS50eXBlID09PSAnbGl0ZXJhbCcpIHsKICAgICAgICAvLyAuLi4gYW5kIGZpcnN0IG9wZXJhbmRzIGlzIGEgbGl0ZXJhbCB0b28KICAgICAgICByZXR1cm4gbmV3IEFzdExpdGVyYWwobnVtMS5udW1iZXIgLSBudW0yLm51bWJlcik7CiAgICAgIH0KICAgIH0KICAgIGlmIChudW0yLnR5cGUgPT09ICdiaW5hcnknICYmIG51bTIub3AgPT09ICctJyAmJgogICAgICBudW0xLnR5cGUgPT09ICdsaXRlcmFsJyAmJiBudW0xLm51bWJlciA9PT0gMSAmJgogICAgICBudW0yLmFyZzEudHlwZSA9PT0gJ2xpdGVyYWwnICYmIG51bTIuYXJnMS5udW1iZXIgPT09IDEpIHsKICAgICAgLy8gb3B0aW1pemF0aW9uIGZvciBjYXNlOiAxIC0gKDEgLSB4KQogICAgICByZXR1cm4gbnVtMi5hcmcyOwogICAgfQogICAgcmV0dXJuIG5ldyBBc3RCaW5hcnlPcGVyYXRpb24oJy0nLCBudW0xLCBudW0yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtMS5taW4gLSBudW0yLm1heCwgbnVtMS5tYXggLSBudW0yLm1pbik7CiAgfQoKICBmdW5jdGlvbiBidWlsZE1pbk9wZXJhdGlvbihudW0xLCBtYXgpIHsKICAgIGlmIChudW0xLm1pbiA+PSBtYXgpIHsKICAgICAgLy8gb3B0aW1pemF0aW9uOiBudW0xIG1pbiB2YWx1ZSBpcyBub3QgbGVzcyB0aGFuIHJlcXVpcmVkIG1heAogICAgICByZXR1cm4gbmV3IEFzdExpdGVyYWwobWF4KTsgLy8ganVzdCByZXR1cm5pbmcgbWF4CiAgICB9IGVsc2UgaWYgKG51bTEubWF4IDw9IG1heCkgewogICAgICAvLyBvcHRpbWl6YXRpb246IG51bTEgbWF4IHZhbHVlIGlzIG5vdCBncmVhdGVyIHRoYW4gcmVxdWlyZWQgbWF4CiAgICAgIHJldHVybiBudW0xOyAvLyBqdXN0IHJldHVybmluZyBhbiBhcmd1bWVudAogICAgfQogICAgcmV0dXJuIG5ldyBBc3RNaW4obnVtMSwgbWF4KTsKICB9CgogIGZ1bmN0aW9uIFBvc3RTY3JpcHRDb21waWxlcigpIHt9CiAgUG9zdFNjcmlwdENvbXBpbGVyLnByb3RvdHlwZSA9IHsKICAgIGNvbXBpbGU6IGZ1bmN0aW9uIFBvc3RTY3JpcHRDb21waWxlcl9jb21waWxlKGNvZGUsIGRvbWFpbiwgcmFuZ2UpIHsKICAgICAgdmFyIHN0YWNrID0gW107CiAgICAgIHZhciBpLCBpaTsKICAgICAgdmFyIGluc3RydWN0aW9ucyA9IFtdOwogICAgICB2YXIgaW5wdXRTaXplID0gZG9tYWluLmxlbmd0aCA+PiAxLCBvdXRwdXRTaXplID0gcmFuZ2UubGVuZ3RoID4+IDE7CiAgICAgIHZhciBsYXN0UmVnaXN0ZXIgPSAwOwogICAgICB2YXIgbiwgaiwgbWluLCBtYXg7CiAgICAgIHZhciBudW0xLCBudW0yLCBhc3QxLCBhc3QyLCB0bXBWYXIsIGl0ZW07CiAgICAgIGZvciAoaSA9IDA7IGkgPCBpbnB1dFNpemU7IGkrKykgewogICAgICAgIHN0YWNrLnB1c2gobmV3IEFzdEFyZ3VtZW50KGksIGRvbWFpbltpICogMl0sIGRvbWFpbltpICogMiArIDFdKSk7CiAgICAgIH0KCiAgICAgIGZvciAoaSA9IDAsIGlpID0gY29kZS5sZW5ndGg7IGkgPCBpaTsgaSsrKSB7CiAgICAgICAgaXRlbSA9IGNvZGVbaV07CiAgICAgICAgaWYgKHR5cGVvZiBpdGVtID09PSAnbnVtYmVyJykgewogICAgICAgICAgc3RhY2sucHVzaChuZXcgQXN0TGl0ZXJhbChpdGVtKSk7CiAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CgogICAgICAgIHN3aXRjaCAoaXRlbSkgewogICAgICAgICAgY2FzZSAnYWRkJzoKICAgICAgICAgICAgaWYgKHN0YWNrLmxlbmd0aCA8IDIpIHsKICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgfQogICAgICAgICAgICBudW0yID0gc3RhY2sucG9wKCk7CiAgICAgICAgICAgIG51bTEgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgc3RhY2sucHVzaChidWlsZEFkZE9wZXJhdGlvbihudW0xLCBudW0yKSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAnY3ZyJzoKICAgICAgICAgICAgaWYgKHN0YWNrLmxlbmd0aCA8IDEpIHsKICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgJ211bCc6CiAgICAgICAgICAgIGlmIChzdGFjay5sZW5ndGggPCAyKSB7CiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbnVtMiA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICBudW0xID0gc3RhY2sucG9wKCk7CiAgICAgICAgICAgIHN0YWNrLnB1c2goYnVpbGRNdWxPcGVyYXRpb24obnVtMSwgbnVtMikpOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgJ3N1Yic6CiAgICAgICAgICAgIGlmIChzdGFjay5sZW5ndGggPCAyKSB7CiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbnVtMiA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICBudW0xID0gc3RhY2sucG9wKCk7CiAgICAgICAgICAgIHN0YWNrLnB1c2goYnVpbGRTdWJPcGVyYXRpb24obnVtMSwgbnVtMikpOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgJ2V4Y2gnOgogICAgICAgICAgICBpZiAoc3RhY2subGVuZ3RoIDwgMikgewogICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGFzdDEgPSBzdGFjay5wb3AoKTsgYXN0MiA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICBzdGFjay5wdXNoKGFzdDEsIGFzdDIpOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgJ3BvcCc6CiAgICAgICAgICAgIGlmIChzdGFjay5sZW5ndGggPCAxKSB7CiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgc3RhY2sucG9wKCk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAnaW5kZXgnOgogICAgICAgICAgICBpZiAoc3RhY2subGVuZ3RoIDwgMSkgewogICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICB9CiAgICAgICAgICAgIG51bTEgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgaWYgKG51bTEudHlwZSAhPT0gJ2xpdGVyYWwnKSB7CiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbiA9IG51bTEubnVtYmVyOwogICAgICAgICAgICBpZiAobiA8IDAgfHwgKG58MCkgIT09IG4gfHwgc3RhY2subGVuZ3RoIDwgbikgewogICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGFzdDEgPSBzdGFja1tzdGFjay5sZW5ndGggLSBuIC0gMV07CiAgICAgICAgICAgIGlmIChhc3QxLnR5cGUgPT09ICdsaXRlcmFsJyB8fCBhc3QxLnR5cGUgPT09ICd2YXInKSB7CiAgICAgICAgICAgICAgc3RhY2sucHVzaChhc3QxKTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICB0bXBWYXIgPSBuZXcgQXN0VmFyaWFibGUobGFzdFJlZ2lzdGVyKyssIGFzdDEubWluLCBhc3QxLm1heCk7CiAgICAgICAgICAgIHN0YWNrW3N0YWNrLmxlbmd0aCAtIG4gLSAxXSA9IHRtcFZhcjsKICAgICAgICAgICAgc3RhY2sucHVzaCh0bXBWYXIpOwogICAgICAgICAgICBpbnN0cnVjdGlvbnMucHVzaChuZXcgQXN0VmFyaWFibGVEZWZpbml0aW9uKHRtcFZhciwgYXN0MSkpOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgJ2R1cCc6CiAgICAgICAgICAgIGlmIChzdGFjay5sZW5ndGggPCAxKSB7CiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHR5cGVvZiBjb2RlW2kgKyAxXSA9PT0gJ251bWJlcicgJiYgY29kZVtpICsgMl0gPT09ICdndCcgJiYKICAgICAgICAgICAgICAgIGNvZGVbaSArIDNdID09PSBpICsgNyAmJiBjb2RlW2kgKyA0XSA9PT0gJ2p6JyAmJgogICAgICAgICAgICAgICAgY29kZVtpICsgNV0gPT09ICdwb3AnICYmIGNvZGVbaSArIDZdID09PSBjb2RlW2kgKyAxXSkgewogICAgICAgICAgICAgIC8vIHNwZWNpYWwgY2FzZSBvZiB0aGUgY29tbWFuZHMgc2VxdWVuY2UgZm9yIHRoZSBtaW4gb3BlcmF0aW9uCiAgICAgICAgICAgICAgbnVtMSA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICAgIHN0YWNrLnB1c2goYnVpbGRNaW5PcGVyYXRpb24obnVtMSwgY29kZVtpICsgMV0pKTsKICAgICAgICAgICAgICBpICs9IDY7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYXN0MSA9IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdOwogICAgICAgICAgICBpZiAoYXN0MS50eXBlID09PSAnbGl0ZXJhbCcgfHwgYXN0MS50eXBlID09PSAndmFyJykgewogICAgICAgICAgICAgIC8vIHdlIGRvbid0IGhhdmUgdG8gc2F2ZSBpbnRvIGludGVybWVkaWF0ZSB2YXJpYWJsZSBhIGxpdGVyYWwgb3IKICAgICAgICAgICAgICAvLyB2YXJpYWJsZS4KICAgICAgICAgICAgICBzdGFjay5wdXNoKGFzdDEpOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRtcFZhciA9IG5ldyBBc3RWYXJpYWJsZShsYXN0UmVnaXN0ZXIrKywgYXN0MS5taW4sIGFzdDEubWF4KTsKICAgICAgICAgICAgc3RhY2tbc3RhY2subGVuZ3RoIC0gMV0gPSB0bXBWYXI7CiAgICAgICAgICAgIHN0YWNrLnB1c2godG1wVmFyKTsKICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zLnB1c2gobmV3IEFzdFZhcmlhYmxlRGVmaW5pdGlvbih0bXBWYXIsIGFzdDEpKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlICdyb2xsJzoKICAgICAgICAgICAgaWYgKHN0YWNrLmxlbmd0aCA8IDIpIHsKICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgfQogICAgICAgICAgICBudW0yID0gc3RhY2sucG9wKCk7CiAgICAgICAgICAgIG51bTEgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgaWYgKG51bTIudHlwZSAhPT0gJ2xpdGVyYWwnIHx8IG51bTEudHlwZSAhPT0gJ2xpdGVyYWwnKSB7CiAgICAgICAgICAgICAgLy8gYm90aCByb2xsIG9wZXJhbmRzIG11c3QgYmUgbnVtYmVycwogICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGogPSBudW0yLm51bWJlcjsKICAgICAgICAgICAgbiA9IG51bTEubnVtYmVyOwogICAgICAgICAgICBpZiAobiA8PSAwIHx8IChufDApICE9PSBuIHx8IChqfDApICE9PSBqIHx8IHN0YWNrLmxlbmd0aCA8IG4pIHsKICAgICAgICAgICAgICAvLyAuLi4gYW5kIGludGVnZXJzCiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaiA9ICgoaiAlIG4pICsgbikgJSBuOwogICAgICAgICAgICBpZiAoaiA9PT0gMCkgewogICAgICAgICAgICAgIGJyZWFrOyAvLyBqdXN0IHNraXBwaW5nIC0tIHRoZXJlIGFyZSBub3RoaW5nIHRvIHJvdGF0ZQogICAgICAgICAgICB9CiAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KHN0YWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFjay5zcGxpY2Uoc3RhY2subGVuZ3RoIC0gbiwgbiAtIGopKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICByZXR1cm4gbnVsbDsgLy8gdW5zdXBwb3J0ZWQgb3BlcmF0b3IKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGlmIChzdGFjay5sZW5ndGggIT09IG91dHB1dFNpemUpIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQoKICAgICAgdmFyIHJlc3VsdCA9IFtdOwogICAgICBpbnN0cnVjdGlvbnMuZm9yRWFjaChmdW5jdGlvbiAoaW5zdHJ1Y3Rpb24pIHsKICAgICAgICB2YXIgc3RhdGVtZW50QnVpbGRlciA9IG5ldyBFeHByZXNzaW9uQnVpbGRlclZpc2l0b3IoKTsKICAgICAgICBpbnN0cnVjdGlvbi52aXNpdChzdGF0ZW1lbnRCdWlsZGVyKTsKICAgICAgICByZXN1bHQucHVzaChzdGF0ZW1lbnRCdWlsZGVyLnRvU3RyaW5nKCkpOwogICAgICB9KTsKICAgICAgc3RhY2suZm9yRWFjaChmdW5jdGlvbiAoZXhwciwgaSkgewogICAgICAgIHZhciBzdGF0ZW1lbnRCdWlsZGVyID0gbmV3IEV4cHJlc3Npb25CdWlsZGVyVmlzaXRvcigpOwogICAgICAgIGV4cHIudmlzaXQoc3RhdGVtZW50QnVpbGRlcik7CiAgICAgICAgdmFyIG1pbiA9IHJhbmdlW2kgKiAyXSwgbWF4ID0gcmFuZ2VbaSAqIDIgKyAxXTsKICAgICAgICB2YXIgb3V0ID0gW3N0YXRlbWVudEJ1aWxkZXIudG9TdHJpbmcoKV07CiAgICAgICAgaWYgKG1pbiA+IGV4cHIubWluKSB7CiAgICAgICAgICBvdXQudW5zaGlmdCgnTWF0aC5tYXgoJywgbWluLCAnLCAnKTsKICAgICAgICAgIG91dC5wdXNoKCcpJyk7CiAgICAgICAgfQogICAgICAgIGlmIChtYXggPCBleHByLm1heCkgewogICAgICAgICAgb3V0LnVuc2hpZnQoJ01hdGgubWluKCcsIG1heCwgJywgJyk7CiAgICAgICAgICBvdXQucHVzaCgnKScpOwogICAgICAgIH0KICAgICAgICBvdXQudW5zaGlmdCgnZGVzdFtkZXN0T2Zmc2V0ICsgJywgaSwgJ10gPSAnKTsKICAgICAgICBvdXQucHVzaCgnOycpOwogICAgICAgIHJlc3VsdC5wdXNoKG91dC5qb2luKCcnKSk7CiAgICAgIH0pOwogICAgICByZXR1cm4gcmVzdWx0LmpvaW4oJ1xuJyk7CiAgICB9CiAgfTsKCiAgcmV0dXJuIFBvc3RTY3JpcHRDb21waWxlcjsKfSkoKTsKCgp2YXIgQ29sb3JTcGFjZSA9IChmdW5jdGlvbiBDb2xvclNwYWNlQ2xvc3VyZSgpIHsKICAvLyBDb25zdHJ1Y3RvciBzaG91bGQgZGVmaW5lIHRoaXMubnVtQ29tcHMsIHRoaXMuZGVmYXVsdENvbG9yLCB0aGlzLm5hbWUKICBmdW5jdGlvbiBDb2xvclNwYWNlKCkgewogICAgZXJyb3IoJ3Nob3VsZCBub3QgY2FsbCBDb2xvclNwYWNlIGNvbnN0cnVjdG9yJyk7CiAgfQoKICBDb2xvclNwYWNlLnByb3RvdHlwZSA9IHsKICAgIC8qKgogICAgICogQ29udmVydHMgdGhlIGNvbG9yIHZhbHVlIHRvIHRoZSBSR0IgY29sb3IuIFRoZSBjb2xvciBjb21wb25lbnRzIGFyZQogICAgICogbG9jYXRlZCBpbiB0aGUgc3JjIGFycmF5IHN0YXJ0aW5nIGZyb20gdGhlIHNyY09mZnNldC4gUmV0dXJucyB0aGUgYXJyYXkKICAgICAqIG9mIHRoZSByZ2IgY29tcG9uZW50cywgZWFjaCB2YWx1ZSByYW5naW5nIGZyb20gWzAsMjU1XS4KICAgICAqLwogICAgZ2V0UmdiOiBmdW5jdGlvbiBDb2xvclNwYWNlX2dldFJnYihzcmMsIHNyY09mZnNldCkgewogICAgICB2YXIgcmdiID0gbmV3IFVpbnQ4QXJyYXkoMyk7CiAgICAgIHRoaXMuZ2V0UmdiSXRlbShzcmMsIHNyY09mZnNldCwgcmdiLCAwKTsKICAgICAgcmV0dXJuIHJnYjsKICAgIH0sCiAgICAvKioKICAgICAqIENvbnZlcnRzIHRoZSBjb2xvciB2YWx1ZSB0byB0aGUgUkdCIGNvbG9yLCBzaW1pbGFyIHRvIHRoZSBnZXRSZ2IgbWV0aG9kLgogICAgICogVGhlIHJlc3VsdCBwbGFjZWQgaW50byB0aGUgZGVzdCBhcnJheSBzdGFydGluZyBmcm9tIHRoZSBkZXN0T2Zmc2V0LgogICAgICovCiAgICBnZXRSZ2JJdGVtOiBmdW5jdGlvbiBDb2xvclNwYWNlX2dldFJnYkl0ZW0oc3JjLCBzcmNPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCwgZGVzdE9mZnNldCkgewogICAgICBlcnJvcignU2hvdWxkIG5vdCBjYWxsIENvbG9yU3BhY2UuZ2V0UmdiSXRlbScpOwogICAgfSwKICAgIC8qKgogICAgICogQ29udmVydHMgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgdGhlIGNvbG9yIHZhbHVlcyB0byB0aGUgUkdCIGNvbG9ycy4KICAgICAqIFRoZSBjb2xvcnMgYXJlIGxvY2F0ZWQgaW4gdGhlIHNyYyBhcnJheSBzdGFydGluZyBmcm9tIHRoZSBzcmNPZmZzZXQuCiAgICAgKiBUaGUgcmVzdWx0IGlzIHBsYWNlZCBpbnRvIHRoZSBkZXN0IGFycmF5IHN0YXJ0aW5nIGZyb20gdGhlIGRlc3RPZmZzZXQuCiAgICAgKiBUaGUgc3JjIGFycmF5IGl0ZW1zIHNoYWxsIGJlIGluIFswLDJeYml0cykgcmFuZ2UsIHRoZSBkZXN0IGFycmF5IGl0ZW1zCiAgICAgKiB3aWxsIGJlIGluIFswLDI1NV0gcmFuZ2UuIGFscGhhMDEgaW5kaWNhdGVzIGhvdyBtYW55IGFscGhhIGNvbXBvbmVudHMKICAgICAqIHRoZXJlIGFyZSBpbiB0aGUgZGVzdCBhcnJheTsgaXQgd2lsbCBiZSBlaXRoZXIgMCAoUkdCIGFycmF5KSBvciAxIChSR0JBCiAgICAgKiBhcnJheSkuCiAgICAgKi8KICAgIGdldFJnYkJ1ZmZlcjogZnVuY3Rpb24gQ29sb3JTcGFjZV9nZXRSZ2JCdWZmZXIoc3JjLCBzcmNPZmZzZXQsIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0LCBkZXN0T2Zmc2V0LCBiaXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYTAxKSB7CiAgICAgIGVycm9yKCdTaG91bGQgbm90IGNhbGwgQ29sb3JTcGFjZS5nZXRSZ2JCdWZmZXInKTsKICAgIH0sCiAgICAvKioKICAgICAqIERldGVybWluZXMgdGhlIG51bWJlciBvZiBieXRlcyByZXF1aXJlZCB0byBzdG9yZSB0aGUgcmVzdWx0IG9mIHRoZQogICAgICogY29udmVyc2lvbiBkb25lIGJ5IHRoZSBnZXRSZ2JCdWZmZXIgbWV0aG9kLiBBcyBpbiBnZXRSZ2JCdWZmZXIsCiAgICAgKiB8YWxwaGEwMXwgaXMgZWl0aGVyIDAgKFJHQiBvdXRwdXQpIG9yIDEgKFJHQkEgb3V0cHV0KS4KICAgICAqLwogICAgZ2V0T3V0cHV0TGVuZ3RoOiBmdW5jdGlvbiBDb2xvclNwYWNlX2dldE91dHB1dExlbmd0aChpbnB1dExlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGEwMSkgewogICAgICBlcnJvcignU2hvdWxkIG5vdCBjYWxsIENvbG9yU3BhY2UuZ2V0T3V0cHV0TGVuZ3RoJyk7CiAgICB9LAogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRydWUgaWYgc291cmNlIGRhdGEgd2lsbCBiZSBlcXVhbCB0aGUgcmVzdWx0L291dHB1dCBkYXRhLgogICAgICovCiAgICBpc1Bhc3N0aHJvdWdoOiBmdW5jdGlvbiBDb2xvclNwYWNlX2lzUGFzc3Rocm91Z2goYml0cykgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9LAogICAgLyoqCiAgICAgKiBGaWxscyBpbiB0aGUgUkdCIGNvbG9ycyBpbiB0aGUgZGVzdGluYXRpb24gYnVmZmVyLiAgYWxwaGEwMSBpbmRpY2F0ZXMKICAgICAqIGhvdyBtYW55IGFscGhhIGNvbXBvbmVudHMgdGhlcmUgYXJlIGluIHRoZSBkZXN0IGFycmF5OyBpdCB3aWxsIGJlIGVpdGhlcgogICAgICogMCAoUkdCIGFycmF5KSBvciAxIChSR0JBIGFycmF5KS4KICAgICAqLwogICAgZmlsbFJnYjogZnVuY3Rpb24gQ29sb3JTcGFjZV9maWxsUmdiKGRlc3QsIG9yaWdpbmFsV2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxIZWlnaHQsIHdpZHRoLCBoZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsSGVpZ2h0LCBicGMsIGNvbXBzLCBhbHBoYTAxKSB7CiAgICAgIHZhciBjb3VudCA9IG9yaWdpbmFsV2lkdGggKiBvcmlnaW5hbEhlaWdodDsKICAgICAgdmFyIHJnYkJ1ZiA9IG51bGw7CiAgICAgIHZhciBudW1Db21wb25lbnRDb2xvcnMgPSAxIDw8IGJwYzsKICAgICAgdmFyIG5lZWRzUmVzaXppbmcgPSBvcmlnaW5hbEhlaWdodCAhPT0gaGVpZ2h0IHx8IG9yaWdpbmFsV2lkdGggIT09IHdpZHRoOwogICAgICB2YXIgaSwgaWk7CgogICAgICBpZiAodGhpcy5pc1Bhc3N0aHJvdWdoKGJwYykpIHsKICAgICAgICByZ2JCdWYgPSBjb21wczsKICAgICAgfSBlbHNlIGlmICh0aGlzLm51bUNvbXBzID09PSAxICYmIGNvdW50ID4gbnVtQ29tcG9uZW50Q29sb3JzICYmCiAgICAgICAgICB0aGlzLm5hbWUgIT09ICdEZXZpY2VHcmF5JyAmJiB0aGlzLm5hbWUgIT09ICdEZXZpY2VSR0InKSB7CiAgICAgICAgLy8gT3B0aW1pemF0aW9uOiBjcmVhdGUgYSBjb2xvciBtYXAgd2hlbiB0aGVyZSBpcyBqdXN0IG9uZSBjb21wb25lbnQgYW5kCiAgICAgICAgLy8gd2UgYXJlIGNvbnZlcnRpbmcgbW9yZSBjb2xvcnMgdGhhbiB0aGUgc2l6ZSBvZiB0aGUgY29sb3IgbWFwLiBXZQogICAgICAgIC8vIGRvbid0IGJ1aWxkIHRoZSBtYXAgaWYgdGhlIGNvbG9yc3BhY2UgaXMgZ3JheSBvciByZ2Igc2luY2UgdGhvc2UKICAgICAgICAvLyBtZXRob2RzIGFyZSBmYXN0ZXIgdGhhbiBidWlsZGluZyBhIG1hcC4gVGhpcyBtYWlubHkgb2ZmZXJzIGJpZyBzcGVlZAogICAgICAgIC8vIHVwcyBmb3IgaW5kZXhlZCBhbmQgYWx0ZXJuYXRlIGNvbG9yc3BhY2VzLgogICAgICAgIC8vCiAgICAgICAgLy8gVE9ETyBpdCBtYXkgYmUgd29ydGggd2hpbGUgdG8gY2FjaGUgdGhlIGNvbG9yIG1hcC4gV2hpbGUgcnVubmluZwogICAgICAgIC8vIHRlc3RpbmcgSSBuZXZlciBoaXQgYSBjYWNoZSBzbyBJIHdpbGwgbGVhdmUgdGhhdCBvdXQgZm9yIG5vdyAocGVyaGFwcwogICAgICAgIC8vIHdlIGFyZSByZXBhcnNpbmcgY29sb3JzcGFjZXMgdG9vIG11Y2g/KS4KICAgICAgICB2YXIgYWxsQ29sb3JzID0gYnBjIDw9IDggPyBuZXcgVWludDhBcnJheShudW1Db21wb25lbnRDb2xvcnMpIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgVWludDE2QXJyYXkobnVtQ29tcG9uZW50Q29sb3JzKTsKICAgICAgICB2YXIga2V5OwogICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1Db21wb25lbnRDb2xvcnM7IGkrKykgewogICAgICAgICAgYWxsQ29sb3JzW2ldID0gaTsKICAgICAgICB9CiAgICAgICAgdmFyIGNvbG9yTWFwID0gbmV3IFVpbnQ4QXJyYXkobnVtQ29tcG9uZW50Q29sb3JzICogMyk7CiAgICAgICAgdGhpcy5nZXRSZ2JCdWZmZXIoYWxsQ29sb3JzLCAwLCBudW1Db21wb25lbnRDb2xvcnMsIGNvbG9yTWFwLCAwLCBicGMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYWxwaGEwMSA9ICovIDApOwoKICAgICAgICB2YXIgZGVzdFBvcywgcmdiUG9zOwogICAgICAgIGlmICghbmVlZHNSZXNpemluZykgewogICAgICAgICAgLy8gRmlsbCBpbiB0aGUgUkdCIHZhbHVlcyBkaXJlY3RseSBpbnRvIHxkZXN0fC4KICAgICAgICAgIGRlc3RQb3MgPSAwOwogICAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAgICAgICAgICAga2V5ID0gY29tcHNbaV0gKiAzOwogICAgICAgICAgICBkZXN0W2Rlc3RQb3MrK10gPSBjb2xvck1hcFtrZXldOwogICAgICAgICAgICBkZXN0W2Rlc3RQb3MrK10gPSBjb2xvck1hcFtrZXkgKyAxXTsKICAgICAgICAgICAgZGVzdFtkZXN0UG9zKytdID0gY29sb3JNYXBba2V5ICsgMl07CiAgICAgICAgICAgIGRlc3RQb3MgKz0gYWxwaGEwMTsKICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmdiQnVmID0gbmV3IFVpbnQ4QXJyYXkoY291bnQgKiAzKTsKICAgICAgICAgIHJnYlBvcyA9IDA7CiAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICAgICBrZXkgPSBjb21wc1tpXSAqIDM7CiAgICAgICAgICAgIHJnYkJ1ZltyZ2JQb3MrK10gPSBjb2xvck1hcFtrZXldOwogICAgICAgICAgICByZ2JCdWZbcmdiUG9zKytdID0gY29sb3JNYXBba2V5ICsgMV07CiAgICAgICAgICAgIHJnYkJ1ZltyZ2JQb3MrK10gPSBjb2xvck1hcFtrZXkgKyAyXTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKCFuZWVkc1Jlc2l6aW5nKSB7CiAgICAgICAgICAvLyBGaWxsIGluIHRoZSBSR0IgdmFsdWVzIGRpcmVjdGx5IGludG8gfGRlc3R8LgogICAgICAgICAgdGhpcy5nZXRSZ2JCdWZmZXIoY29tcHMsIDAsIHdpZHRoICogYWN0dWFsSGVpZ2h0LCBkZXN0LCAwLCBicGMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYTAxKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmdiQnVmID0gbmV3IFVpbnQ4QXJyYXkoY291bnQgKiAzKTsKICAgICAgICAgIHRoaXMuZ2V0UmdiQnVmZmVyKGNvbXBzLCAwLCBjb3VudCwgcmdiQnVmLCAwLCBicGMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhbHBoYTAxID0gKi8gMCk7CiAgICAgICAgfQogICAgICB9CgogICAgICBpZiAocmdiQnVmKSB7CiAgICAgICAgaWYgKG5lZWRzUmVzaXppbmcpIHsKICAgICAgICAgIFBERkltYWdlLnJlc2l6ZShyZ2JCdWYsIGJwYywgMywgb3JpZ2luYWxXaWR0aCwgb3JpZ2luYWxIZWlnaHQsIHdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCwgZGVzdCwgYWxwaGEwMSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHJnYlBvcyA9IDA7CiAgICAgICAgICBkZXN0UG9zID0gMDsKICAgICAgICAgIGZvciAoaSA9IDAsIGlpID0gd2lkdGggKiBhY3R1YWxIZWlnaHQ7IGkgPCBpaTsgaSsrKSB7CiAgICAgICAgICAgIGRlc3RbZGVzdFBvcysrXSA9IHJnYkJ1ZltyZ2JQb3MrK107CiAgICAgICAgICAgIGRlc3RbZGVzdFBvcysrXSA9IHJnYkJ1ZltyZ2JQb3MrK107CiAgICAgICAgICAgIGRlc3RbZGVzdFBvcysrXSA9IHJnYkJ1ZltyZ2JQb3MrK107CiAgICAgICAgICAgIGRlc3RQb3MgKz0gYWxwaGEwMTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAvKioKICAgICAqIFRydWUgaWYgdGhlIGNvbG9yc3BhY2UgaGFzIGNvbXBvbmVudHMgaW4gdGhlIGRlZmF1bHQgcmFuZ2Ugb2YgWzAsIDFdLgogICAgICogVGhpcyBzaG91bGQgYmUgdHJ1ZSBmb3IgYWxsIGNvbG9yc3BhY2VzIGV4Y2VwdCBmb3IgbGFiIGNvbG9yIHNwYWNlcwogICAgICogd2hpY2ggYXJlIFswLDEwMF0sIFstMTI4LCAxMjddLCBbLTEyOCwgMTI3XS4KICAgICAqLwogICAgdXNlc1plcm9Ub09uZVJhbmdlOiB0cnVlCiAgfTsKCiAgQ29sb3JTcGFjZS5wYXJzZSA9IGZ1bmN0aW9uIENvbG9yU3BhY2VfcGFyc2UoY3MsIHhyZWYsIHJlcykgewogICAgdmFyIElSID0gQ29sb3JTcGFjZS5wYXJzZVRvSVIoY3MsIHhyZWYsIHJlcyk7CiAgICBpZiAoSVIgaW5zdGFuY2VvZiBBbHRlcm5hdGVDUykgewogICAgICByZXR1cm4gSVI7CiAgICB9CiAgICByZXR1cm4gQ29sb3JTcGFjZS5mcm9tSVIoSVIpOwogIH07CgogIENvbG9yU3BhY2UuZnJvbUlSID0gZnVuY3Rpb24gQ29sb3JTcGFjZV9mcm9tSVIoSVIpIHsKICAgIHZhciBuYW1lID0gaXNBcnJheShJUikgPyBJUlswXSA6IElSOwogICAgdmFyIHdoaXRlUG9pbnQsIGJsYWNrUG9pbnQsIGdhbW1hOwoKICAgIHN3aXRjaCAobmFtZSkgewogICAgICBjYXNlICdEZXZpY2VHcmF5Q1MnOgogICAgICAgIHJldHVybiB0aGlzLnNpbmdsZXRvbnMuZ3JheTsKICAgICAgY2FzZSAnRGV2aWNlUmdiQ1MnOgogICAgICAgIHJldHVybiB0aGlzLnNpbmdsZXRvbnMucmdiOwogICAgICBjYXNlICdEZXZpY2VDbXlrQ1MnOgogICAgICAgIHJldHVybiB0aGlzLnNpbmdsZXRvbnMuY215azsKICAgICAgY2FzZSAnQ2FsR3JheUNTJzoKICAgICAgICB3aGl0ZVBvaW50ID0gSVJbMV0uV2hpdGVQb2ludDsKICAgICAgICBibGFja1BvaW50ID0gSVJbMV0uQmxhY2tQb2ludDsKICAgICAgICBnYW1tYSA9IElSWzFdLkdhbW1hOwogICAgICAgIHJldHVybiBuZXcgQ2FsR3JheUNTKHdoaXRlUG9pbnQsIGJsYWNrUG9pbnQsIGdhbW1hKTsKICAgICAgY2FzZSAnQ2FsUkdCQ1MnOgogICAgICAgIHdoaXRlUG9pbnQgPSBJUlsxXS5XaGl0ZVBvaW50OwogICAgICAgIGJsYWNrUG9pbnQgPSBJUlsxXS5CbGFja1BvaW50OwogICAgICAgIGdhbW1hID0gSVJbMV0uR2FtbWE7CiAgICAgICAgdmFyIG1hdHJpeCA9IElSWzFdLk1hdHJpeDsKICAgICAgICByZXR1cm4gbmV3IENhbFJHQkNTKHdoaXRlUG9pbnQsIGJsYWNrUG9pbnQsIGdhbW1hLCBtYXRyaXgpOwogICAgICBjYXNlICdQYXR0ZXJuQ1MnOgogICAgICAgIHZhciBiYXNlUGF0dGVybkNTID0gSVJbMV07CiAgICAgICAgaWYgKGJhc2VQYXR0ZXJuQ1MpIHsKICAgICAgICAgIGJhc2VQYXR0ZXJuQ1MgPSBDb2xvclNwYWNlLmZyb21JUihiYXNlUGF0dGVybkNTKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG5ldyBQYXR0ZXJuQ1MoYmFzZVBhdHRlcm5DUyk7CiAgICAgIGNhc2UgJ0luZGV4ZWRDUyc6CiAgICAgICAgdmFyIGJhc2VJbmRleGVkQ1MgPSBJUlsxXTsKICAgICAgICB2YXIgaGlWYWwgPSBJUlsyXTsKICAgICAgICB2YXIgbG9va3VwID0gSVJbM107CiAgICAgICAgcmV0dXJuIG5ldyBJbmRleGVkQ1MoQ29sb3JTcGFjZS5mcm9tSVIoYmFzZUluZGV4ZWRDUyksIGhpVmFsLCBsb29rdXApOwogICAgICBjYXNlICdBbHRlcm5hdGVDUyc6CiAgICAgICAgdmFyIG51bUNvbXBzID0gSVJbMV07CiAgICAgICAgdmFyIGFsdCA9IElSWzJdOwogICAgICAgIHZhciB0aW50Rm5JUiA9IElSWzNdOwoKICAgICAgICByZXR1cm4gbmV3IEFsdGVybmF0ZUNTKG51bUNvbXBzLCBDb2xvclNwYWNlLmZyb21JUihhbHQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBERkZ1bmN0aW9uLmZyb21JUih0aW50Rm5JUikpOwogICAgICBjYXNlICdMYWJDUyc6CiAgICAgICAgd2hpdGVQb2ludCA9IElSWzFdLldoaXRlUG9pbnQ7CiAgICAgICAgYmxhY2tQb2ludCA9IElSWzFdLkJsYWNrUG9pbnQ7CiAgICAgICAgdmFyIHJhbmdlID0gSVJbMV0uUmFuZ2U7CiAgICAgICAgcmV0dXJuIG5ldyBMYWJDUyh3aGl0ZVBvaW50LCBibGFja1BvaW50LCByYW5nZSk7CiAgICAgIGRlZmF1bHQ6CiAgICAgICAgZXJyb3IoJ1Vua25vd24gbmFtZSAnICsgbmFtZSk7CiAgICB9CiAgICByZXR1cm4gbnVsbDsKICB9OwoKICBDb2xvclNwYWNlLnBhcnNlVG9JUiA9IGZ1bmN0aW9uIENvbG9yU3BhY2VfcGFyc2VUb0lSKGNzLCB4cmVmLCByZXMpIHsKICAgIGlmIChpc05hbWUoY3MpKSB7CiAgICAgIHZhciBjb2xvclNwYWNlcyA9IHJlcy5nZXQoJ0NvbG9yU3BhY2UnKTsKICAgICAgaWYgKGlzRGljdChjb2xvclNwYWNlcykpIHsKICAgICAgICB2YXIgcmVmY3MgPSBjb2xvclNwYWNlcy5nZXQoY3MubmFtZSk7CiAgICAgICAgaWYgKHJlZmNzKSB7CiAgICAgICAgICBjcyA9IHJlZmNzOwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIGNzID0geHJlZi5mZXRjaElmUmVmKGNzKTsKICAgIHZhciBtb2RlOwoKICAgIGlmIChpc05hbWUoY3MpKSB7CiAgICAgIG1vZGUgPSBjcy5uYW1lOwogICAgICB0aGlzLm1vZGUgPSBtb2RlOwoKICAgICAgc3dpdGNoIChtb2RlKSB7CiAgICAgICAgY2FzZSAnRGV2aWNlR3JheSc6CiAgICAgICAgY2FzZSAnRyc6CiAgICAgICAgICByZXR1cm4gJ0RldmljZUdyYXlDUyc7CiAgICAgICAgY2FzZSAnRGV2aWNlUkdCJzoKICAgICAgICBjYXNlICdSR0InOgogICAgICAgICAgcmV0dXJuICdEZXZpY2VSZ2JDUyc7CiAgICAgICAgY2FzZSAnRGV2aWNlQ01ZSyc6CiAgICAgICAgY2FzZSAnQ01ZSyc6CiAgICAgICAgICByZXR1cm4gJ0RldmljZUNteWtDUyc7CiAgICAgICAgY2FzZSAnUGF0dGVybic6CiAgICAgICAgICByZXR1cm4gWydQYXR0ZXJuQ1MnLCBudWxsXTsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgZXJyb3IoJ3VucmVjb2duaXplZCBjb2xvcnNwYWNlICcgKyBtb2RlKTsKICAgICAgfQogICAgfSBlbHNlIGlmIChpc0FycmF5KGNzKSkgewogICAgICBtb2RlID0gY3NbMF0ubmFtZTsKICAgICAgdGhpcy5tb2RlID0gbW9kZTsKICAgICAgdmFyIG51bUNvbXBzLCBwYXJhbXM7CgogICAgICBzd2l0Y2ggKG1vZGUpIHsKICAgICAgICBjYXNlICdEZXZpY2VHcmF5JzoKICAgICAgICBjYXNlICdHJzoKICAgICAgICAgIHJldHVybiAnRGV2aWNlR3JheUNTJzsKICAgICAgICBjYXNlICdEZXZpY2VSR0InOgogICAgICAgIGNhc2UgJ1JHQic6CiAgICAgICAgICByZXR1cm4gJ0RldmljZVJnYkNTJzsKICAgICAgICBjYXNlICdEZXZpY2VDTVlLJzoKICAgICAgICBjYXNlICdDTVlLJzoKICAgICAgICAgIHJldHVybiAnRGV2aWNlQ215a0NTJzsKICAgICAgICBjYXNlICdDYWxHcmF5JzoKICAgICAgICAgIHBhcmFtcyA9IHhyZWYuZmV0Y2hJZlJlZihjc1sxXSkuZ2V0QWxsKCk7CiAgICAgICAgICByZXR1cm4gWydDYWxHcmF5Q1MnLCBwYXJhbXNdOwogICAgICAgIGNhc2UgJ0NhbFJHQic6CiAgICAgICAgICBwYXJhbXMgPSB4cmVmLmZldGNoSWZSZWYoY3NbMV0pLmdldEFsbCgpOwogICAgICAgICAgcmV0dXJuIFsnQ2FsUkdCQ1MnLCBwYXJhbXNdOwogICAgICAgIGNhc2UgJ0lDQ0Jhc2VkJzoKICAgICAgICAgIHZhciBzdHJlYW0gPSB4cmVmLmZldGNoSWZSZWYoY3NbMV0pOwogICAgICAgICAgdmFyIGRpY3QgPSBzdHJlYW0uZGljdDsKICAgICAgICAgIG51bUNvbXBzID0gZGljdC5nZXQoJ04nKTsKICAgICAgICAgIGlmIChudW1Db21wcyA9PT0gMSkgewogICAgICAgICAgICByZXR1cm4gJ0RldmljZUdyYXlDUyc7CiAgICAgICAgICB9IGVsc2UgaWYgKG51bUNvbXBzID09PSAzKSB7CiAgICAgICAgICAgIHJldHVybiAnRGV2aWNlUmdiQ1MnOwogICAgICAgICAgfSBlbHNlIGlmIChudW1Db21wcyA9PT0gNCkgewogICAgICAgICAgICByZXR1cm4gJ0RldmljZUNteWtDUyc7CiAgICAgICAgICB9CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdQYXR0ZXJuJzoKICAgICAgICAgIHZhciBiYXNlUGF0dGVybkNTID0gY3NbMV07CiAgICAgICAgICBpZiAoYmFzZVBhdHRlcm5DUykgewogICAgICAgICAgICBiYXNlUGF0dGVybkNTID0gQ29sb3JTcGFjZS5wYXJzZVRvSVIoYmFzZVBhdHRlcm5DUywgeHJlZiwgcmVzKTsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiBbJ1BhdHRlcm5DUycsIGJhc2VQYXR0ZXJuQ1NdOwogICAgICAgIGNhc2UgJ0luZGV4ZWQnOgogICAgICAgIGNhc2UgJ0knOgogICAgICAgICAgdmFyIGJhc2VJbmRleGVkQ1MgPSBDb2xvclNwYWNlLnBhcnNlVG9JUihjc1sxXSwgeHJlZiwgcmVzKTsKICAgICAgICAgIHZhciBoaVZhbCA9IGNzWzJdICsgMTsKICAgICAgICAgIHZhciBsb29rdXAgPSB4cmVmLmZldGNoSWZSZWYoY3NbM10pOwogICAgICAgICAgaWYgKGlzU3RyZWFtKGxvb2t1cCkpIHsKICAgICAgICAgICAgbG9va3VwID0gbG9va3VwLmdldEJ5dGVzKCk7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gWydJbmRleGVkQ1MnLCBiYXNlSW5kZXhlZENTLCBoaVZhbCwgbG9va3VwXTsKICAgICAgICBjYXNlICdTZXBhcmF0aW9uJzoKICAgICAgICBjYXNlICdEZXZpY2VOJzoKICAgICAgICAgIHZhciBuYW1lID0gY3NbMV07CiAgICAgICAgICBudW1Db21wcyA9IDE7CiAgICAgICAgICBpZiAoaXNOYW1lKG5hbWUpKSB7CiAgICAgICAgICAgIG51bUNvbXBzID0gMTsKICAgICAgICAgIH0gZWxzZSBpZiAoaXNBcnJheShuYW1lKSkgewogICAgICAgICAgICBudW1Db21wcyA9IG5hbWUubGVuZ3RoOwogICAgICAgICAgfQogICAgICAgICAgdmFyIGFsdCA9IENvbG9yU3BhY2UucGFyc2VUb0lSKGNzWzJdLCB4cmVmLCByZXMpOwogICAgICAgICAgdmFyIHRpbnRGbklSID0gUERGRnVuY3Rpb24uZ2V0SVIoeHJlZiwgeHJlZi5mZXRjaElmUmVmKGNzWzNdKSk7CiAgICAgICAgICByZXR1cm4gWydBbHRlcm5hdGVDUycsIG51bUNvbXBzLCBhbHQsIHRpbnRGbklSXTsKICAgICAgICBjYXNlICdMYWInOgogICAgICAgICAgcGFyYW1zID0gY3NbMV0uZ2V0QWxsKCk7CiAgICAgICAgICByZXR1cm4gWydMYWJDUycsIHBhcmFtc107CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgIGVycm9yKCd1bmltcGxlbWVudGVkIGNvbG9yIHNwYWNlIG9iamVjdCAiJyArIG1vZGUgKyAnIicpOwogICAgICB9CiAgICB9IGVsc2UgewogICAgICBlcnJvcigndW5yZWNvZ25pemVkIGNvbG9yIHNwYWNlIG9iamVjdDogIicgKyBjcyArICciJyk7CiAgICB9CiAgICByZXR1cm4gbnVsbDsKICB9OwogIC8qKgogICAqIENoZWNrcyBpZiBhIGRlY29kZSBtYXAgbWF0Y2hlcyB0aGUgZGVmYXVsdCBkZWNvZGUgbWFwIGZvciBhIGNvbG9yIHNwYWNlLgogICAqIFRoaXMgaGFuZGxlcyB0aGUgZ2VuZXJhbCBkZWNvZGUgbWFwcyB3aGVyZSB0aGVyZSBhcmUgdHdvIHZhbHVlcyBwZXIKICAgKiBjb21wb25lbnQuIGUuZy4gWzAsIDEsIDAsIDEsIDAsIDFdIGZvciBhIFJHQiBjb2xvci4KICAgKiBUaGlzIGRvZXMgbm90IGhhbmRsZSBMYWIsIEluZGV4ZWQsIG9yIFBhdHRlcm4gZGVjb2RlIG1hcHMgc2luY2UgdGhleSBhcmUKICAgKiBzbGlnaHRseSBkaWZmZXJlbnQuCiAgICogQHBhcmFtIHtBcnJheX0gZGVjb2RlIERlY29kZSBtYXAgKHVzdWFsbHkgZnJvbSBhbiBpbWFnZSkuCiAgICogQHBhcmFtIHtOdW1iZXJ9IG4gTnVtYmVyIG9mIGNvbXBvbmVudHMgdGhlIGNvbG9yIHNwYWNlIGhhcy4KICAgKi8KICBDb2xvclNwYWNlLmlzRGVmYXVsdERlY29kZSA9IGZ1bmN0aW9uIENvbG9yU3BhY2VfaXNEZWZhdWx0RGVjb2RlKGRlY29kZSwgbikgewogICAgaWYgKCFkZWNvZGUpIHsKICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgaWYgKG4gKiAyICE9PSBkZWNvZGUubGVuZ3RoKSB7CiAgICAgIHdhcm4oJ1RoZSBkZWNvZGUgbWFwIGlzIG5vdCB0aGUgY29ycmVjdCBsZW5ndGgnKTsKICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiAgICBmb3IgKHZhciBpID0gMCwgaWkgPSBkZWNvZGUubGVuZ3RoOyBpIDwgaWk7IGkgKz0gMikgewogICAgICBpZiAoZGVjb2RlW2ldICE9PSAwIHx8IGRlY29kZVtpICsgMV0gIT09IDEpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiB0cnVlOwogIH07CgogIENvbG9yU3BhY2Uuc2luZ2xldG9ucyA9IHsKICAgIGdldCBncmF5KCkgewogICAgICByZXR1cm4gc2hhZG93KHRoaXMsICdncmF5JywgbmV3IERldmljZUdyYXlDUygpKTsKICAgIH0sCiAgICBnZXQgcmdiKCkgewogICAgICByZXR1cm4gc2hhZG93KHRoaXMsICdyZ2InLCBuZXcgRGV2aWNlUmdiQ1MoKSk7CiAgICB9LAogICAgZ2V0IGNteWsoKSB7CiAgICAgIHJldHVybiBzaGFkb3codGhpcywgJ2NteWsnLCBuZXcgRGV2aWNlQ215a0NTKCkpOwogICAgfQogIH07CgogIHJldHVybiBDb2xvclNwYWNlOwp9KSgpOwoKLyoqCiAqIEFsdGVybmF0ZSBjb2xvciBzcGFjZSBoYW5kbGVzIGJvdGggU2VwYXJhdGlvbiBhbmQgRGV2aWNlTiBjb2xvciBzcGFjZXMuICBBCiAqIFNlcGFyYXRpb24gY29sb3Igc3BhY2UgaXMgYWN0dWFsbHkganVzdCBhIERldmljZU4gd2l0aCBvbmUgY29sb3IgY29tcG9uZW50LgogKiBCb3RoIGNvbG9yIHNwYWNlcyB1c2UgYSB0aW50aW5nIGZ1bmN0aW9uIHRvIGNvbnZlcnQgY29sb3JzIHRvIGEgYmFzZSBjb2xvcgogKiBzcGFjZS4KICovCnZhciBBbHRlcm5hdGVDUyA9IChmdW5jdGlvbiBBbHRlcm5hdGVDU0Nsb3N1cmUoKSB7CiAgZnVuY3Rpb24gQWx0ZXJuYXRlQ1MobnVtQ29tcHMsIGJhc2UsIHRpbnRGbikgewogICAgdGhpcy5uYW1lID0gJ0FsdGVybmF0ZSc7CiAgICB0aGlzLm51bUNvbXBzID0gbnVtQ29tcHM7CiAgICB0aGlzLmRlZmF1bHRDb2xvciA9IG5ldyBGbG9hdDMyQXJyYXkobnVtQ29tcHMpOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1Db21wczsgKytpKSB7CiAgICAgIHRoaXMuZGVmYXVsdENvbG9yW2ldID0gMTsKICAgIH0KICAgIHRoaXMuYmFzZSA9IGJhc2U7CiAgICB0aGlzLnRpbnRGbiA9IHRpbnRGbjsKICAgIHRoaXMudG1wQnVmID0gbmV3IEZsb2F0MzJBcnJheShiYXNlLm51bUNvbXBzKTsKICB9CgogIEFsdGVybmF0ZUNTLnByb3RvdHlwZSA9IHsKICAgIGdldFJnYjogQ29sb3JTcGFjZS5wcm90b3R5cGUuZ2V0UmdiLAogICAgZ2V0UmdiSXRlbTogZnVuY3Rpb24gQWx0ZXJuYXRlQ1NfZ2V0UmdiSXRlbShzcmMsIHNyY09mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCwgZGVzdE9mZnNldCkgewogICAgICB2YXIgdG1wQnVmID0gdGhpcy50bXBCdWY7CiAgICAgIHRoaXMudGludEZuKHNyYywgc3JjT2Zmc2V0LCB0bXBCdWYsIDApOwogICAgICB0aGlzLmJhc2UuZ2V0UmdiSXRlbSh0bXBCdWYsIDAsIGRlc3QsIGRlc3RPZmZzZXQpOwogICAgfSwKICAgIGdldFJnYkJ1ZmZlcjogZnVuY3Rpb24gQWx0ZXJuYXRlQ1NfZ2V0UmdiQnVmZmVyKHNyYywgc3JjT2Zmc2V0LCBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3QsIGRlc3RPZmZzZXQsIGJpdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYTAxKSB7CiAgICAgIHZhciB0aW50Rm4gPSB0aGlzLnRpbnRGbjsKICAgICAgdmFyIGJhc2UgPSB0aGlzLmJhc2U7CiAgICAgIHZhciBzY2FsZSA9IDEgLyAoKDEgPDwgYml0cykgLSAxKTsKICAgICAgdmFyIGJhc2VOdW1Db21wcyA9IGJhc2UubnVtQ29tcHM7CiAgICAgIHZhciB1c2VzWmVyb1RvT25lUmFuZ2UgPSBiYXNlLnVzZXNaZXJvVG9PbmVSYW5nZTsKICAgICAgdmFyIGlzUGFzc3Rocm91Z2ggPSAoYmFzZS5pc1Bhc3N0aHJvdWdoKDgpIHx8ICF1c2VzWmVyb1RvT25lUmFuZ2UpICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGEwMSA9PT0gMDsKICAgICAgdmFyIHBvcyA9IGlzUGFzc3Rocm91Z2ggPyBkZXN0T2Zmc2V0IDogMDsKICAgICAgdmFyIGJhc2VCdWYgPSBpc1Bhc3N0aHJvdWdoID8gZGVzdCA6IG5ldyBVaW50OEFycmF5KGJhc2VOdW1Db21wcyAqIGNvdW50KTsKICAgICAgdmFyIG51bUNvbXBzID0gdGhpcy5udW1Db21wczsKCiAgICAgIHZhciBzY2FsZWQgPSBuZXcgRmxvYXQzMkFycmF5KG51bUNvbXBzKTsKICAgICAgdmFyIHRpbnRlZCA9IG5ldyBGbG9hdDMyQXJyYXkoYmFzZU51bUNvbXBzKTsKICAgICAgdmFyIGksIGo7CiAgICAgIGlmICh1c2VzWmVyb1RvT25lUmFuZ2UpIHsKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewogICAgICAgICAgZm9yIChqID0gMDsgaiA8IG51bUNvbXBzOyBqKyspIHsKICAgICAgICAgICAgc2NhbGVkW2pdID0gc3JjW3NyY09mZnNldCsrXSAqIHNjYWxlOwogICAgICAgICAgfQogICAgICAgICAgdGludEZuKHNjYWxlZCwgMCwgdGludGVkLCAwKTsKICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBiYXNlTnVtQ29tcHM7IGorKykgewogICAgICAgICAgICBiYXNlQnVmW3BvcysrXSA9IHRpbnRlZFtqXSAqIDI1NTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBudW1Db21wczsgaisrKSB7CiAgICAgICAgICAgIHNjYWxlZFtqXSA9IHNyY1tzcmNPZmZzZXQrK10gKiBzY2FsZTsKICAgICAgICAgIH0KICAgICAgICAgIHRpbnRGbihzY2FsZWQsIDAsIHRpbnRlZCwgMCk7CiAgICAgICAgICBiYXNlLmdldFJnYkl0ZW0odGludGVkLCAwLCBiYXNlQnVmLCBwb3MpOwogICAgICAgICAgcG9zICs9IGJhc2VOdW1Db21wczsKICAgICAgICB9CiAgICAgIH0KICAgICAgaWYgKCFpc1Bhc3N0aHJvdWdoKSB7CiAgICAgICAgYmFzZS5nZXRSZ2JCdWZmZXIoYmFzZUJ1ZiwgMCwgY291bnQsIGRlc3QsIGRlc3RPZmZzZXQsIDgsIGFscGhhMDEpOwogICAgICB9CiAgICB9LAogICAgZ2V0T3V0cHV0TGVuZ3RoOiBmdW5jdGlvbiBBbHRlcm5hdGVDU19nZXRPdXRwdXRMZW5ndGgoaW5wdXRMZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYTAxKSB7CiAgICAgIHJldHVybiB0aGlzLmJhc2UuZ2V0T3V0cHV0TGVuZ3RoKGlucHV0TGVuZ3RoICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iYXNlLm51bUNvbXBzIC8gdGhpcy5udW1Db21wcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGEwMSk7CiAgICB9LAogICAgaXNQYXNzdGhyb3VnaDogQ29sb3JTcGFjZS5wcm90b3R5cGUuaXNQYXNzdGhyb3VnaCwKICAgIGZpbGxSZ2I6IENvbG9yU3BhY2UucHJvdG90eXBlLmZpbGxSZ2IsCiAgICBpc0RlZmF1bHREZWNvZGU6IGZ1bmN0aW9uIEFsdGVybmF0ZUNTX2lzRGVmYXVsdERlY29kZShkZWNvZGVNYXApIHsKICAgICAgcmV0dXJuIENvbG9yU3BhY2UuaXNEZWZhdWx0RGVjb2RlKGRlY29kZU1hcCwgdGhpcy5udW1Db21wcyk7CiAgICB9LAogICAgdXNlc1plcm9Ub09uZVJhbmdlOiB0cnVlCiAgfTsKCiAgcmV0dXJuIEFsdGVybmF0ZUNTOwp9KSgpOwoKdmFyIFBhdHRlcm5DUyA9IChmdW5jdGlvbiBQYXR0ZXJuQ1NDbG9zdXJlKCkgewogIGZ1bmN0aW9uIFBhdHRlcm5DUyhiYXNlQ1MpIHsKICAgIHRoaXMubmFtZSA9ICdQYXR0ZXJuJzsKICAgIHRoaXMuYmFzZSA9IGJhc2VDUzsKICB9CiAgUGF0dGVybkNTLnByb3RvdHlwZSA9IHt9OwoKICByZXR1cm4gUGF0dGVybkNTOwp9KSgpOwoKdmFyIEluZGV4ZWRDUyA9IChmdW5jdGlvbiBJbmRleGVkQ1NDbG9zdXJlKCkgewogIGZ1bmN0aW9uIEluZGV4ZWRDUyhiYXNlLCBoaWdoVmFsLCBsb29rdXApIHsKICAgIHRoaXMubmFtZSA9ICdJbmRleGVkJzsKICAgIHRoaXMubnVtQ29tcHMgPSAxOwogICAgdGhpcy5kZWZhdWx0Q29sb3IgPSBuZXcgVWludDhBcnJheShbMF0pOwogICAgdGhpcy5iYXNlID0gYmFzZTsKICAgIHRoaXMuaGlnaFZhbCA9IGhpZ2hWYWw7CgogICAgdmFyIGJhc2VOdW1Db21wcyA9IGJhc2UubnVtQ29tcHM7CiAgICB2YXIgbGVuZ3RoID0gYmFzZU51bUNvbXBzICogaGlnaFZhbDsKICAgIHZhciBsb29rdXBBcnJheTsKCiAgICBpZiAoaXNTdHJlYW0obG9va3VwKSkgewogICAgICBsb29rdXBBcnJheSA9IG5ldyBVaW50OEFycmF5KGxlbmd0aCk7CiAgICAgIHZhciBieXRlcyA9IGxvb2t1cC5nZXRCeXRlcyhsZW5ndGgpOwogICAgICBsb29rdXBBcnJheS5zZXQoYnl0ZXMpOwogICAgfSBlbHNlIGlmIChpc1N0cmluZyhsb29rdXApKSB7CiAgICAgIGxvb2t1cEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkobGVuZ3RoKTsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgIGxvb2t1cEFycmF5W2ldID0gbG9va3VwLmNoYXJDb2RlQXQoaSk7CiAgICAgIH0KICAgIH0gZWxzZSBpZiAobG9va3VwIGluc3RhbmNlb2YgVWludDhBcnJheSB8fCBsb29rdXAgaW5zdGFuY2VvZiBBcnJheSkgewogICAgICBsb29rdXBBcnJheSA9IGxvb2t1cDsKICAgIH0gZWxzZSB7CiAgICAgIGVycm9yKCdVbnJlY29nbml6ZWQgbG9va3VwIHRhYmxlOiAnICsgbG9va3VwKTsKICAgIH0KICAgIHRoaXMubG9va3VwID0gbG9va3VwQXJyYXk7CiAgfQoKICBJbmRleGVkQ1MucHJvdG90eXBlID0gewogICAgZ2V0UmdiOiBDb2xvclNwYWNlLnByb3RvdHlwZS5nZXRSZ2IsCiAgICBnZXRSZ2JJdGVtOiBmdW5jdGlvbiBJbmRleGVkQ1NfZ2V0UmdiSXRlbShzcmMsIHNyY09mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3QsIGRlc3RPZmZzZXQpIHsKICAgICAgdmFyIG51bUNvbXBzID0gdGhpcy5iYXNlLm51bUNvbXBzOwogICAgICB2YXIgc3RhcnQgPSBzcmNbc3JjT2Zmc2V0XSAqIG51bUNvbXBzOwogICAgICB0aGlzLmJhc2UuZ2V0UmdiSXRlbSh0aGlzLmxvb2t1cCwgc3RhcnQsIGRlc3QsIGRlc3RPZmZzZXQpOwogICAgfSwKICAgIGdldFJnYkJ1ZmZlcjogZnVuY3Rpb24gSW5kZXhlZENTX2dldFJnYkJ1ZmZlcihzcmMsIHNyY09mZnNldCwgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCwgZGVzdE9mZnNldCwgYml0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYTAxKSB7CiAgICAgIHZhciBiYXNlID0gdGhpcy5iYXNlOwogICAgICB2YXIgbnVtQ29tcHMgPSBiYXNlLm51bUNvbXBzOwogICAgICB2YXIgb3V0cHV0RGVsdGEgPSBiYXNlLmdldE91dHB1dExlbmd0aChudW1Db21wcywgYWxwaGEwMSk7CiAgICAgIHZhciBsb29rdXAgPSB0aGlzLmxvb2t1cDsKCiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgIHZhciBsb29rdXBQb3MgPSBzcmNbc3JjT2Zmc2V0KytdICogbnVtQ29tcHM7CiAgICAgICAgYmFzZS5nZXRSZ2JCdWZmZXIobG9va3VwLCBsb29rdXBQb3MsIDEsIGRlc3QsIGRlc3RPZmZzZXQsIDgsIGFscGhhMDEpOwogICAgICAgIGRlc3RPZmZzZXQgKz0gb3V0cHV0RGVsdGE7CiAgICAgIH0KICAgIH0sCiAgICBnZXRPdXRwdXRMZW5ndGg6IGZ1bmN0aW9uIEluZGV4ZWRDU19nZXRPdXRwdXRMZW5ndGgoaW5wdXRMZW5ndGgsIGFscGhhMDEpIHsKICAgICAgcmV0dXJuIHRoaXMuYmFzZS5nZXRPdXRwdXRMZW5ndGgoaW5wdXRMZW5ndGggKiB0aGlzLmJhc2UubnVtQ29tcHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhMDEpOwogICAgfSwKICAgIGlzUGFzc3Rocm91Z2g6IENvbG9yU3BhY2UucHJvdG90eXBlLmlzUGFzc3Rocm91Z2gsCiAgICBmaWxsUmdiOiBDb2xvclNwYWNlLnByb3RvdHlwZS5maWxsUmdiLAogICAgaXNEZWZhdWx0RGVjb2RlOiBmdW5jdGlvbiBJbmRleGVkQ1NfaXNEZWZhdWx0RGVjb2RlKGRlY29kZU1hcCkgewogICAgICAvLyBpbmRleGVkIGNvbG9yIG1hcHMgc2hvdWxkbid0IGJlIGNoYW5nZWQKICAgICAgcmV0dXJuIHRydWU7CiAgICB9LAogICAgdXNlc1plcm9Ub09uZVJhbmdlOiB0cnVlCiAgfTsKICByZXR1cm4gSW5kZXhlZENTOwp9KSgpOwoKdmFyIERldmljZUdyYXlDUyA9IChmdW5jdGlvbiBEZXZpY2VHcmF5Q1NDbG9zdXJlKCkgewogIGZ1bmN0aW9uIERldmljZUdyYXlDUygpIHsKICAgIHRoaXMubmFtZSA9ICdEZXZpY2VHcmF5JzsKICAgIHRoaXMubnVtQ29tcHMgPSAxOwogICAgdGhpcy5kZWZhdWx0Q29sb3IgPSBuZXcgRmxvYXQzMkFycmF5KFswXSk7CiAgfQoKICBEZXZpY2VHcmF5Q1MucHJvdG90eXBlID0gewogICAgZ2V0UmdiOiBDb2xvclNwYWNlLnByb3RvdHlwZS5nZXRSZ2IsCiAgICBnZXRSZ2JJdGVtOiBmdW5jdGlvbiBEZXZpY2VHcmF5Q1NfZ2V0UmdiSXRlbShzcmMsIHNyY09mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3QsIGRlc3RPZmZzZXQpIHsKICAgICAgdmFyIGMgPSAoc3JjW3NyY09mZnNldF0gKiAyNTUpIHwgMDsKICAgICAgYyA9IGMgPCAwID8gMCA6IGMgPiAyNTUgPyAyNTUgOiBjOwogICAgICBkZXN0W2Rlc3RPZmZzZXRdID0gZGVzdFtkZXN0T2Zmc2V0ICsgMV0gPSBkZXN0W2Rlc3RPZmZzZXQgKyAyXSA9IGM7CiAgICB9LAogICAgZ2V0UmdiQnVmZmVyOiBmdW5jdGlvbiBEZXZpY2VHcmF5Q1NfZ2V0UmdiQnVmZmVyKHNyYywgc3JjT2Zmc2V0LCBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0LCBkZXN0T2Zmc2V0LCBiaXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhMDEpIHsKICAgICAgdmFyIHNjYWxlID0gMjU1IC8gKCgxIDw8IGJpdHMpIC0gMSk7CiAgICAgIHZhciBqID0gc3JjT2Zmc2V0LCBxID0gZGVzdE9mZnNldDsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgdmFyIGMgPSAoc2NhbGUgKiBzcmNbaisrXSkgfCAwOwogICAgICAgIGRlc3RbcSsrXSA9IGM7CiAgICAgICAgZGVzdFtxKytdID0gYzsKICAgICAgICBkZXN0W3ErK10gPSBjOwogICAgICAgIHEgKz0gYWxwaGEwMTsKICAgICAgfQogICAgfSwKICAgIGdldE91dHB1dExlbmd0aDogZnVuY3Rpb24gRGV2aWNlR3JheUNTX2dldE91dHB1dExlbmd0aChpbnB1dExlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYTAxKSB7CiAgICAgIHJldHVybiBpbnB1dExlbmd0aCAqICgzICsgYWxwaGEwMSk7CiAgICB9LAogICAgaXNQYXNzdGhyb3VnaDogQ29sb3JTcGFjZS5wcm90b3R5cGUuaXNQYXNzdGhyb3VnaCwKICAgIGZpbGxSZ2I6IENvbG9yU3BhY2UucHJvdG90eXBlLmZpbGxSZ2IsCiAgICBpc0RlZmF1bHREZWNvZGU6IGZ1bmN0aW9uIERldmljZUdyYXlDU19pc0RlZmF1bHREZWNvZGUoZGVjb2RlTWFwKSB7CiAgICAgIHJldHVybiBDb2xvclNwYWNlLmlzRGVmYXVsdERlY29kZShkZWNvZGVNYXAsIHRoaXMubnVtQ29tcHMpOwogICAgfSwKICAgIHVzZXNaZXJvVG9PbmVSYW5nZTogdHJ1ZQogIH07CiAgcmV0dXJuIERldmljZUdyYXlDUzsKfSkoKTsKCnZhciBEZXZpY2VSZ2JDUyA9IChmdW5jdGlvbiBEZXZpY2VSZ2JDU0Nsb3N1cmUoKSB7CiAgZnVuY3Rpb24gRGV2aWNlUmdiQ1MoKSB7CiAgICB0aGlzLm5hbWUgPSAnRGV2aWNlUkdCJzsKICAgIHRoaXMubnVtQ29tcHMgPSAzOwogICAgdGhpcy5kZWZhdWx0Q29sb3IgPSBuZXcgRmxvYXQzMkFycmF5KFswLCAwLCAwXSk7CiAgfQogIERldmljZVJnYkNTLnByb3RvdHlwZSA9IHsKICAgIGdldFJnYjogQ29sb3JTcGFjZS5wcm90b3R5cGUuZ2V0UmdiLAogICAgZ2V0UmdiSXRlbTogZnVuY3Rpb24gRGV2aWNlUmdiQ1NfZ2V0UmdiSXRlbShzcmMsIHNyY09mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCwgZGVzdE9mZnNldCkgewogICAgICB2YXIgciA9IChzcmNbc3JjT2Zmc2V0XSAqIDI1NSkgfCAwOwogICAgICB2YXIgZyA9IChzcmNbc3JjT2Zmc2V0ICsgMV0gKiAyNTUpIHwgMDsKICAgICAgdmFyIGIgPSAoc3JjW3NyY09mZnNldCArIDJdICogMjU1KSB8IDA7CiAgICAgIGRlc3RbZGVzdE9mZnNldF0gPSByIDwgMCA/IDAgOiByID4gMjU1ID8gMjU1IDogcjsKICAgICAgZGVzdFtkZXN0T2Zmc2V0ICsgMV0gPSBnIDwgMCA/IDAgOiBnID4gMjU1ID8gMjU1IDogZzsKICAgICAgZGVzdFtkZXN0T2Zmc2V0ICsgMl0gPSBiIDwgMCA/IDAgOiBiID4gMjU1ID8gMjU1IDogYjsKICAgIH0sCiAgICBnZXRSZ2JCdWZmZXI6IGZ1bmN0aW9uIERldmljZVJnYkNTX2dldFJnYkJ1ZmZlcihzcmMsIHNyY09mZnNldCwgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0LCBkZXN0T2Zmc2V0LCBiaXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGEwMSkgewogICAgICBpZiAoYml0cyA9PT0gOCAmJiBhbHBoYTAxID09PSAwKSB7CiAgICAgICAgZGVzdC5zZXQoc3JjLnN1YmFycmF5KHNyY09mZnNldCwgc3JjT2Zmc2V0ICsgY291bnQgKiAzKSwgZGVzdE9mZnNldCk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIHZhciBzY2FsZSA9IDI1NSAvICgoMSA8PCBiaXRzKSAtIDEpOwogICAgICB2YXIgaiA9IHNyY09mZnNldCwgcSA9IGRlc3RPZmZzZXQ7CiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgIGRlc3RbcSsrXSA9IChzY2FsZSAqIHNyY1tqKytdKSB8IDA7CiAgICAgICAgZGVzdFtxKytdID0gKHNjYWxlICogc3JjW2orK10pIHwgMDsKICAgICAgICBkZXN0W3ErK10gPSAoc2NhbGUgKiBzcmNbaisrXSkgfCAwOwogICAgICAgIHEgKz0gYWxwaGEwMTsKICAgICAgfQogICAgfSwKICAgIGdldE91dHB1dExlbmd0aDogZnVuY3Rpb24gRGV2aWNlUmdiQ1NfZ2V0T3V0cHV0TGVuZ3RoKGlucHV0TGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGEwMSkgewogICAgICByZXR1cm4gKGlucHV0TGVuZ3RoICogKDMgKyBhbHBoYTAxKSAvIDMpIHwgMDsKICAgIH0sCiAgICBpc1Bhc3N0aHJvdWdoOiBmdW5jdGlvbiBEZXZpY2VSZ2JDU19pc1Bhc3N0aHJvdWdoKGJpdHMpIHsKICAgICAgcmV0dXJuIGJpdHMgPT09IDg7CiAgICB9LAogICAgZmlsbFJnYjogQ29sb3JTcGFjZS5wcm90b3R5cGUuZmlsbFJnYiwKICAgIGlzRGVmYXVsdERlY29kZTogZnVuY3Rpb24gRGV2aWNlUmdiQ1NfaXNEZWZhdWx0RGVjb2RlKGRlY29kZU1hcCkgewogICAgICByZXR1cm4gQ29sb3JTcGFjZS5pc0RlZmF1bHREZWNvZGUoZGVjb2RlTWFwLCB0aGlzLm51bUNvbXBzKTsKICAgIH0sCiAgICB1c2VzWmVyb1RvT25lUmFuZ2U6IHRydWUKICB9OwogIHJldHVybiBEZXZpY2VSZ2JDUzsKfSkoKTsKCnZhciBEZXZpY2VDbXlrQ1MgPSAoZnVuY3Rpb24gRGV2aWNlQ215a0NTQ2xvc3VyZSgpIHsKICAvLyBUaGUgY29lZmZpY2llbnRzIGJlbG93IHdhcyBmb3VuZCB1c2luZyBudW1lcmljYWwgYW5hbHlzaXM6IHRoZSBtZXRob2Qgb2YKICAvLyBzdGVlcGVzdCBkZXNjZW50IGZvciB0aGUgc3VtKChmX2kgLSBjb2xvcl92YWx1ZV9pKV4yKSBmb3Igci9nL2IgY29sb3JzLAogIC8vIHdoZXJlIGNvbG9yX3ZhbHVlIGlzIHRoZSB0YWJ1bGFyIHZhbHVlIGZyb20gdGhlIHRhYmxlIG9mIHNhbXBsZWQgUkdCIGNvbG9ycwogIC8vIGZyb20gQ01ZSyBVUyBXZWIgQ29hdGVkIChTV09QKSBjb2xvcnNwYWNlLCBhbmQgZl9pIGlzIHRoZSBjb3JyZXNwb25kaW5nCiAgLy8gQ01ZSyBjb2xvciBjb252ZXJzaW9uIHVzaW5nIHRoZSBlc3RpbWF0aW9uIGJlbG93OgogIC8vICAgZihBLCBCLC4uIE4pID0gQWNjK0JjbStDY3krRGNrK2MrRm1tK0dteStIbWsrSW0rSnl5K0t5aytMeStNa2srTmsrMjU1CiAgZnVuY3Rpb24gY29udmVydFRvUmdiKHNyYywgc3JjT2Zmc2V0LCBzcmNTY2FsZSwgZGVzdCwgZGVzdE9mZnNldCkgewogICAgdmFyIGMgPSBzcmNbc3JjT2Zmc2V0ICsgMF0gKiBzcmNTY2FsZTsKICAgIHZhciBtID0gc3JjW3NyY09mZnNldCArIDFdICogc3JjU2NhbGU7CiAgICB2YXIgeSA9IHNyY1tzcmNPZmZzZXQgKyAyXSAqIHNyY1NjYWxlOwogICAgdmFyIGsgPSBzcmNbc3JjT2Zmc2V0ICsgM10gKiBzcmNTY2FsZTsKCiAgICB2YXIgciA9CiAgICAgIChjICogKC00LjM4NzMzMjM4NDYwOTk4OCAqIGMgKyA1NC40ODYxNTE5NDE4OTE3NiAqIG0gKwogICAgICAgICAgICAxOC44MjI5MDUwMjE2NTMwMiAqIHkgKyAyMTIuMjU2NjI0NTE2Mzk1ODUgKiBrICsKICAgICAgICAgICAgLTI4NS4yMzMxMDI2MTM3MDA0KSArCiAgICAgICBtICogKDEuNzE0OTc2MzQ3NzM2MjEzNCAqIG0gLSA1LjYwOTY3MzY5MDQwNDczMTUgKiB5ICsKICAgICAgICAgICAgLTE3Ljg3Mzg3MDg2MTQxNTQ0NCAqIGsgLSA1LjQ5NzAwNjQyNzE5NjM2NikgKwogICAgICAgeSAqICgtMi41MjE3MzQwMTMxNjgzMDMzICogeSAtIDIxLjI0ODkyMzMzNzM1MzA3MyAqIGsgKwogICAgICAgICAgICAxNy41MTE5MjcwODQxODEzKSArCiAgICAgICBrICogKC0yMS44NjEyMjE0NzQ2MzYwNSAqIGsgLSAxODkuNDgxODA4MzU5MjI3NDcpICsgMjU1KSB8IDA7CiAgICB2YXIgZyA9CiAgICAgIChjICogKDguODQxMDQxNDIyMDM2MTQ5ICogYyArIDYwLjExODAyNzA0NTU5NzM2NiAqIG0gKwogICAgICAgICAgICA2Ljg3MTQyNTU5MjA0OTAwNyAqIHkgKyAzMS4xNTkxMDAxMzAwNTU5MjIgKiBrICsKICAgICAgICAgICAgLTc5LjI5NzA4NDQ4MTY1NDgpICsKICAgICAgIG0gKiAoLTE1LjMxMDM2MTMwNjk2NzgxNyAqIG0gKyAxNy41NzUyNTEyNjExMDk0ODIgKiB5ICsKICAgICAgICAgICAgMTMxLjM1MjUwOTEyNDkzOTc2ICogayAtIDE5MC45NDUzMzAyNTg4OTUxKSArCiAgICAgICB5ICogKDQuNDQ0MzM5MTAyODUyNzM5ICogeSArIDkuODYzMjg2MTQ5MzQwNSAqIGsgLSAyNC44Njc0MTU4MjU1NTg3OCkgKwogICAgICAgayAqICgtMjAuNzM3MzI1NDcxMTgxMDM0ICogayAtIDE4Ny44MDQ1MzcwOTcxOTU3OCkgKyAyNTUpIHwgMDsKICAgIHZhciBiID0KICAgICAgKGMgKiAoMC44ODQyNTIyNDMwMDAzMjk2ICogYyArIDguMDc4Njc3NTAzMTEyOTI4ICogbSArCiAgICAgICAgICAgIDMwLjg5OTc4MzA5NzAzNzI5ICogeSAtIDAuMjM4ODMyMzg2ODkxNzg5MzQgKiBrICsKICAgICAgICAgICAgLTE0LjE4MzU3Njc5OTY3MzI4NikgKwogICAgICAgbSAqICgxMC40OTU5MzI3MzQzMjA3MiAqIG0gKyA2My4wMjM3ODQ5NDc1NDA1MiAqIHkgKwogICAgICAgICAgICA1MC42MDY5NTc2NTYzNjA3MzQgKiBrIC0gMTEyLjIzODg0MjUzNzE5MjQ4KSArCiAgICAgICB5ICogKDAuMDMyOTYwNDExMTQ4NzMyMTcgKiB5ICsgMTE1LjYwMzg0NDQ5NjQ2NjQxICogayArCiAgICAgICAgICAgIC0xOTMuNTgyMDkzNTY4NjE1MDUpICsKICAgICAgIGsgKiAoLTIyLjMzODE2ODA3MzA5ODg2ICogayAtIDE4MC4xMjYxMzk3NDcwODM2NykgKyAyNTUpIHwgMDsKCiAgICBkZXN0W2Rlc3RPZmZzZXRdID0gciA+IDI1NSA/IDI1NSA6IHIgPCAwID8gMCA6IHI7CiAgICBkZXN0W2Rlc3RPZmZzZXQgKyAxXSA9IGcgPiAyNTUgPyAyNTUgOiBnIDwgMCA/IDAgOiBnOwogICAgZGVzdFtkZXN0T2Zmc2V0ICsgMl0gPSBiID4gMjU1ID8gMjU1IDogYiA8IDAgPyAwIDogYjsKICB9CgogIGZ1bmN0aW9uIERldmljZUNteWtDUygpIHsKICAgIHRoaXMubmFtZSA9ICdEZXZpY2VDTVlLJzsKICAgIHRoaXMubnVtQ29tcHMgPSA0OwogICAgdGhpcy5kZWZhdWx0Q29sb3IgPSBuZXcgRmxvYXQzMkFycmF5KFswLCAwLCAwLCAxXSk7CiAgfQogIERldmljZUNteWtDUy5wcm90b3R5cGUgPSB7CiAgICBnZXRSZ2I6IENvbG9yU3BhY2UucHJvdG90eXBlLmdldFJnYiwKICAgIGdldFJnYkl0ZW06IGZ1bmN0aW9uIERldmljZUNteWtDU19nZXRSZ2JJdGVtKHNyYywgc3JjT2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCwgZGVzdE9mZnNldCkgewogICAgICBjb252ZXJ0VG9SZ2Ioc3JjLCBzcmNPZmZzZXQsIDEsIGRlc3QsIGRlc3RPZmZzZXQpOwogICAgfSwKICAgIGdldFJnYkJ1ZmZlcjogZnVuY3Rpb24gRGV2aWNlQ215a0NTX2dldFJnYkJ1ZmZlcihzcmMsIHNyY09mZnNldCwgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCwgZGVzdE9mZnNldCwgYml0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYTAxKSB7CiAgICAgIHZhciBzY2FsZSA9IDEgLyAoKDEgPDwgYml0cykgLSAxKTsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CiAgICAgICAgY29udmVydFRvUmdiKHNyYywgc3JjT2Zmc2V0LCBzY2FsZSwgZGVzdCwgZGVzdE9mZnNldCk7CiAgICAgICAgc3JjT2Zmc2V0ICs9IDQ7CiAgICAgICAgZGVzdE9mZnNldCArPSAzICsgYWxwaGEwMTsKICAgICAgfQogICAgfSwKICAgIGdldE91dHB1dExlbmd0aDogZnVuY3Rpb24gRGV2aWNlQ215a0NTX2dldE91dHB1dExlbmd0aChpbnB1dExlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYTAxKSB7CiAgICAgIHJldHVybiAoaW5wdXRMZW5ndGggLyA0ICogKDMgKyBhbHBoYTAxKSkgfCAwOwogICAgfSwKICAgIGlzUGFzc3Rocm91Z2g6IENvbG9yU3BhY2UucHJvdG90eXBlLmlzUGFzc3Rocm91Z2gsCiAgICBmaWxsUmdiOiBDb2xvclNwYWNlLnByb3RvdHlwZS5maWxsUmdiLAogICAgaXNEZWZhdWx0RGVjb2RlOiBmdW5jdGlvbiBEZXZpY2VDbXlrQ1NfaXNEZWZhdWx0RGVjb2RlKGRlY29kZU1hcCkgewogICAgICByZXR1cm4gQ29sb3JTcGFjZS5pc0RlZmF1bHREZWNvZGUoZGVjb2RlTWFwLCB0aGlzLm51bUNvbXBzKTsKICAgIH0sCiAgICB1c2VzWmVyb1RvT25lUmFuZ2U6IHRydWUKICB9OwoKICByZXR1cm4gRGV2aWNlQ215a0NTOwp9KSgpOwoKLy8KLy8gQ2FsR3JheUNTOiBCYXNlZCBvbiAiUERGIFJlZmVyZW5jZSwgU2l4dGggRWQiLCBwLjI0NQovLwp2YXIgQ2FsR3JheUNTID0gKGZ1bmN0aW9uIENhbEdyYXlDU0Nsb3N1cmUoKSB7CiAgZnVuY3Rpb24gQ2FsR3JheUNTKHdoaXRlUG9pbnQsIGJsYWNrUG9pbnQsIGdhbW1hKSB7CiAgICB0aGlzLm5hbWUgPSAnQ2FsR3JheSc7CiAgICB0aGlzLm51bUNvbXBzID0gMTsKICAgIHRoaXMuZGVmYXVsdENvbG9yID0gbmV3IEZsb2F0MzJBcnJheShbMF0pOwoKICAgIGlmICghd2hpdGVQb2ludCkgewogICAgICBlcnJvcignV2hpdGVQb2ludCBtaXNzaW5nIC0gcmVxdWlyZWQgZm9yIGNvbG9yIHNwYWNlIENhbEdyYXknKTsKICAgIH0KICAgIGJsYWNrUG9pbnQgPSBibGFja1BvaW50IHx8IFswLCAwLCAwXTsKICAgIGdhbW1hID0gZ2FtbWEgfHwgMTsKCiAgICAvLyBUcmFuc2xhdGUgYXJndW1lbnRzIHRvIHNwZWMgdmFyaWFibGVzLgogICAgdGhpcy5YVyA9IHdoaXRlUG9pbnRbMF07CiAgICB0aGlzLllXID0gd2hpdGVQb2ludFsxXTsKICAgIHRoaXMuWlcgPSB3aGl0ZVBvaW50WzJdOwoKICAgIHRoaXMuWEIgPSBibGFja1BvaW50WzBdOwogICAgdGhpcy5ZQiA9IGJsYWNrUG9pbnRbMV07CiAgICB0aGlzLlpCID0gYmxhY2tQb2ludFsyXTsKCiAgICB0aGlzLkcgPSBnYW1tYTsKCiAgICAvLyBWYWxpZGF0ZSB2YXJpYWJsZXMgYXMgcGVyIHNwZWMuCiAgICBpZiAodGhpcy5YVyA8IDAgfHwgdGhpcy5aVyA8IDAgfHwgdGhpcy5ZVyAhPT0gMSkgewogICAgICBlcnJvcignSW52YWxpZCBXaGl0ZVBvaW50IGNvbXBvbmVudHMgZm9yICcgKyB0aGlzLm5hbWUgKwogICAgICAgICAgICAnLCBubyBmYWxsYmFjayBhdmFpbGFibGUnKTsKICAgIH0KCiAgICBpZiAodGhpcy5YQiA8IDAgfHwgdGhpcy5ZQiA8IDAgfHwgdGhpcy5aQiA8IDApIHsKICAgICAgaW5mbygnSW52YWxpZCBCbGFja1BvaW50IGZvciAnICsgdGhpcy5uYW1lICsgJywgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQnKTsKICAgICAgdGhpcy5YQiA9IHRoaXMuWUIgPSB0aGlzLlpCID0gMDsKICAgIH0KCiAgICBpZiAodGhpcy5YQiAhPT0gMCB8fCB0aGlzLllCICE9PSAwIHx8IHRoaXMuWkIgIT09IDApIHsKICAgICAgd2Fybih0aGlzLm5hbWUgKyAnLCBCbGFja1BvaW50OiBYQjogJyArIHRoaXMuWEIgKyAnLCBZQjogJyArIHRoaXMuWUIgKwogICAgICAgICAgICcsIFpCOiAnICsgdGhpcy5aQiArICcsIG9ubHkgZGVmYXVsdCB2YWx1ZXMgYXJlIHN1cHBvcnRlZC4nKTsKICAgIH0KCiAgICBpZiAodGhpcy5HIDwgMSkgewogICAgICBpbmZvKCdJbnZhbGlkIEdhbW1hOiAnICsgdGhpcy5HICsgJyBmb3IgJyArIHRoaXMubmFtZSArCiAgICAgICAgICAgJywgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQnKTsKICAgICAgdGhpcy5HID0gMTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGNvbnZlcnRUb1JnYihjcywgc3JjLCBzcmNPZmZzZXQsIGRlc3QsIGRlc3RPZmZzZXQsIHNjYWxlKSB7CiAgICAvLyBBIHJlcHJlc2VudHMgYSBncmF5IGNvbXBvbmVudCBvZiBhIGNhbGlicmF0ZWQgZ3JheSBzcGFjZS4KICAgIC8vIEEgPC0tLT4gQUcgaW4gdGhlIHNwZWMKICAgIHZhciBBID0gc3JjW3NyY09mZnNldF0gKiBzY2FsZTsKICAgIHZhciBBRyA9IE1hdGgucG93KEEsIGNzLkcpOwoKICAgIC8vIENvbXB1dGVzIEwgYXMgcGVyIHNwZWMuICggPSBjcy5ZVyAqIEFHICkKICAgIC8vIEV4Y2VwdCBpZiBvdGhlciB0aGFuIGRlZmF1bHQgQmxhY2tQb2ludCB2YWx1ZXMgYXJlIHVzZWQuCiAgICB2YXIgTCA9IGNzLllXICogQUc7CiAgICAvLyBodHRwOi8vd3d3LnBveW50b24uY29tL25vdGVzL2NvbG91cl9hbmRfZ2FtbWEvQ29sb3JGQVEuaHRtbCwgQ2ggNC4KICAgIC8vIENvbnZlcnQgdmFsdWVzIHRvIHJnYiByYW5nZSBbMCwgMjU1XS4KICAgIHZhciB2YWwgPSBNYXRoLm1heCgyOTUuOCAqIE1hdGgucG93KEwsIDAuMzMzMzMzMzMzMzMzMzMzMzMzKSAtIDQwLjgsIDApIHwgMDsKICAgIGRlc3RbZGVzdE9mZnNldF0gPSB2YWw7CiAgICBkZXN0W2Rlc3RPZmZzZXQgKyAxXSA9IHZhbDsKICAgIGRlc3RbZGVzdE9mZnNldCArIDJdID0gdmFsOwogIH0KCiAgQ2FsR3JheUNTLnByb3RvdHlwZSA9IHsKICAgIGdldFJnYjogQ29sb3JTcGFjZS5wcm90b3R5cGUuZ2V0UmdiLAogICAgZ2V0UmdiSXRlbTogZnVuY3Rpb24gQ2FsR3JheUNTX2dldFJnYkl0ZW0oc3JjLCBzcmNPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0LCBkZXN0T2Zmc2V0KSB7CiAgICAgIGNvbnZlcnRUb1JnYih0aGlzLCBzcmMsIHNyY09mZnNldCwgZGVzdCwgZGVzdE9mZnNldCwgMSk7CiAgICB9LAogICAgZ2V0UmdiQnVmZmVyOiBmdW5jdGlvbiBDYWxHcmF5Q1NfZ2V0UmdiQnVmZmVyKHNyYywgc3JjT2Zmc2V0LCBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0LCBkZXN0T2Zmc2V0LCBiaXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhMDEpIHsKICAgICAgdmFyIHNjYWxlID0gMSAvICgoMSA8PCBiaXRzKSAtIDEpOwoKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgY29udmVydFRvUmdiKHRoaXMsIHNyYywgc3JjT2Zmc2V0LCBkZXN0LCBkZXN0T2Zmc2V0LCBzY2FsZSk7CiAgICAgICAgc3JjT2Zmc2V0ICs9IDE7CiAgICAgICAgZGVzdE9mZnNldCArPSAzICsgYWxwaGEwMTsKICAgICAgfQogICAgfSwKICAgIGdldE91dHB1dExlbmd0aDogZnVuY3Rpb24gQ2FsR3JheUNTX2dldE91dHB1dExlbmd0aChpbnB1dExlbmd0aCwgYWxwaGEwMSkgewogICAgICByZXR1cm4gaW5wdXRMZW5ndGggKiAoMyArIGFscGhhMDEpOwogICAgfSwKICAgIGlzUGFzc3Rocm91Z2g6IENvbG9yU3BhY2UucHJvdG90eXBlLmlzUGFzc3Rocm91Z2gsCiAgICBmaWxsUmdiOiBDb2xvclNwYWNlLnByb3RvdHlwZS5maWxsUmdiLAogICAgaXNEZWZhdWx0RGVjb2RlOiBmdW5jdGlvbiBDYWxHcmF5Q1NfaXNEZWZhdWx0RGVjb2RlKGRlY29kZU1hcCkgewogICAgICByZXR1cm4gQ29sb3JTcGFjZS5pc0RlZmF1bHREZWNvZGUoZGVjb2RlTWFwLCB0aGlzLm51bUNvbXBzKTsKICAgIH0sCiAgICB1c2VzWmVyb1RvT25lUmFuZ2U6IHRydWUKICB9OwogIHJldHVybiBDYWxHcmF5Q1M7Cn0pKCk7CgovLwovLyBDYWxSR0JDUzogQmFzZWQgb24gIlBERiBSZWZlcmVuY2UsIFNpeHRoIEVkIiwgcC4yNDcKLy8KdmFyIENhbFJHQkNTID0gKGZ1bmN0aW9uIENhbFJHQkNTQ2xvc3VyZSgpIHsKCiAgLy8gU2VlIGh0dHA6Ly93d3cuYnJ1Y2VsaW5kYmxvb20uY29tL2luZGV4Lmh0bWw/RXFuX0Nocm9tQWRhcHQuaHRtbCBmb3IgdGhlc2UKICAvLyBtYXRyaWNlcy4KICB2YXIgQlJBREZPUkRfU0NBTEVfTUFUUklYID0gbmV3IEZsb2F0MzJBcnJheShbCiAgICAwLjg5NTEsIDAuMjY2NCwgLTAuMTYxNCwKICAgIC0wLjc1MDIsIDEuNzEzNSwgMC4wMzY3LAogICAgMC4wMzg5LCAtMC4wNjg1LCAxLjAyOTZdKTsKCiAgdmFyIEJSQURGT1JEX1NDQUxFX0lOVkVSU0VfTUFUUklYID0gbmV3IEZsb2F0MzJBcnJheShbCiAgICAwLjk4Njk5MjksIC0wLjE0NzA1NDMsIDAuMTU5OTYyNywKICAgIDAuNDMyMzA1MywgMC41MTgzNjAzLCAwLjA0OTI5MTIsCiAgICAtMC4wMDg1Mjg3LCAwLjA0MDA0MjgsIDAuOTY4NDg2N10pOwoKICAvLyBTZWUgaHR0cDovL3d3dy5icnVjZWxpbmRibG9vbS5jb20vaW5kZXguaHRtbD9FcW5fUkdCX1hZWl9NYXRyaXguaHRtbC4KICB2YXIgU1JHQl9ENjVfWFlaX1RPX1JHQl9NQVRSSVggPSBuZXcgRmxvYXQzMkFycmF5KFsKICAgIDMuMjQwNDU0MiwgLTEuNTM3MTM4NSwgLTAuNDk4NTMxNCwKICAgIC0wLjk2OTI2NjAsIDEuODc2MDEwOCwgMC4wNDE1NTYwLAogICAgMC4wNTU2NDM0LCAtMC4yMDQwMjU5LCAxLjA1NzIyNTJdKTsKCiAgdmFyIEZMQVRfV0hJVEVQT0lOVF9NQVRSSVggPSBuZXcgRmxvYXQzMkFycmF5KFsxLCAxLCAxXSk7CgogIHZhciB0ZW1wTm9ybWFsaXplTWF0cml4ID0gbmV3IEZsb2F0MzJBcnJheSgzKTsKICB2YXIgdGVtcENvbnZlcnRNYXRyaXgxID0gbmV3IEZsb2F0MzJBcnJheSgzKTsKICB2YXIgdGVtcENvbnZlcnRNYXRyaXgyID0gbmV3IEZsb2F0MzJBcnJheSgzKTsKCiAgdmFyIERFQ09ERV9MX0NPTlNUQU5UID0gTWF0aC5wb3coKCg4ICsgMTYpIC8gMTE2KSwgMykgLyA4LjA7CgogIGZ1bmN0aW9uIENhbFJHQkNTKHdoaXRlUG9pbnQsIGJsYWNrUG9pbnQsIGdhbW1hLCBtYXRyaXgpIHsKICAgIHRoaXMubmFtZSA9ICdDYWxSR0InOwogICAgdGhpcy5udW1Db21wcyA9IDM7CiAgICB0aGlzLmRlZmF1bHRDb2xvciA9IG5ldyBGbG9hdDMyQXJyYXkoMyk7CgogICAgaWYgKCF3aGl0ZVBvaW50KSB7CiAgICAgIGVycm9yKCdXaGl0ZVBvaW50IG1pc3NpbmcgLSByZXF1aXJlZCBmb3IgY29sb3Igc3BhY2UgQ2FsUkdCJyk7CiAgICB9CiAgICBibGFja1BvaW50ID0gYmxhY2tQb2ludCB8fCBuZXcgRmxvYXQzMkFycmF5KDMpOwogICAgZ2FtbWEgPSBnYW1tYSB8fCBuZXcgRmxvYXQzMkFycmF5KFsxLCAxLCAxXSk7CiAgICBtYXRyaXggPSBtYXRyaXggfHwgbmV3IEZsb2F0MzJBcnJheShbMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMV0pOwoKICAgIC8vIFRyYW5zbGF0ZSBhcmd1bWVudHMgdG8gc3BlYyB2YXJpYWJsZXMuCiAgICB2YXIgWFcgPSB3aGl0ZVBvaW50WzBdOwogICAgdmFyIFlXID0gd2hpdGVQb2ludFsxXTsKICAgIHZhciBaVyA9IHdoaXRlUG9pbnRbMl07CiAgICB0aGlzLndoaXRlUG9pbnQgPSB3aGl0ZVBvaW50OwoKICAgIHZhciBYQiA9IGJsYWNrUG9pbnRbMF07CiAgICB2YXIgWUIgPSBibGFja1BvaW50WzFdOwogICAgdmFyIFpCID0gYmxhY2tQb2ludFsyXTsKICAgIHRoaXMuYmxhY2tQb2ludCA9IGJsYWNrUG9pbnQ7CgogICAgdGhpcy5HUiA9IGdhbW1hWzBdOwogICAgdGhpcy5HRyA9IGdhbW1hWzFdOwogICAgdGhpcy5HQiA9IGdhbW1hWzJdOwoKICAgIHRoaXMuTVhBID0gbWF0cml4WzBdOwogICAgdGhpcy5NWUEgPSBtYXRyaXhbMV07CiAgICB0aGlzLk1aQSA9IG1hdHJpeFsyXTsKICAgIHRoaXMuTVhCID0gbWF0cml4WzNdOwogICAgdGhpcy5NWUIgPSBtYXRyaXhbNF07CiAgICB0aGlzLk1aQiA9IG1hdHJpeFs1XTsKICAgIHRoaXMuTVhDID0gbWF0cml4WzZdOwogICAgdGhpcy5NWUMgPSBtYXRyaXhbN107CiAgICB0aGlzLk1aQyA9IG1hdHJpeFs4XTsKCiAgICAvLyBWYWxpZGF0ZSB2YXJpYWJsZXMgYXMgcGVyIHNwZWMuCiAgICBpZiAoWFcgPCAwIHx8IFpXIDwgMCB8fCBZVyAhPT0gMSkgewogICAgICBlcnJvcignSW52YWxpZCBXaGl0ZVBvaW50IGNvbXBvbmVudHMgZm9yICcgKyB0aGlzLm5hbWUgKwogICAgICAgICAgICAnLCBubyBmYWxsYmFjayBhdmFpbGFibGUnKTsKICAgIH0KCiAgICBpZiAoWEIgPCAwIHx8IFlCIDwgMCB8fCBaQiA8IDApIHsKICAgICAgaW5mbygnSW52YWxpZCBCbGFja1BvaW50IGZvciAnICsgdGhpcy5uYW1lICsgJyBbJyArIFhCICsgJywgJyArIFlCICsKICAgICAgICAgICAnLCAnICsgWkIgKyAnXSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQnKTsKICAgICAgdGhpcy5ibGFja1BvaW50ID0gbmV3IEZsb2F0MzJBcnJheSgzKTsKICAgIH0KCiAgICBpZiAodGhpcy5HUiA8IDAgfHwgdGhpcy5HRyA8IDAgfHwgdGhpcy5HQiA8IDApIHsKICAgICAgaW5mbygnSW52YWxpZCBHYW1tYSBbJyArIHRoaXMuR1IgKyAnLCAnICsgdGhpcy5HRyArICcsICcgKyB0aGlzLkdCICsKICAgICAgICAgICAnXSBmb3IgJyArIHRoaXMubmFtZSArICcsIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0Jyk7CiAgICAgIHRoaXMuR1IgPSB0aGlzLkdHID0gdGhpcy5HQiA9IDE7CiAgICB9CgogICAgaWYgKHRoaXMuTVhBIDwgMCB8fCB0aGlzLk1ZQSA8IDAgfHwgdGhpcy5NWkEgPCAwIHx8CiAgICAgICAgdGhpcy5NWEIgPCAwIHx8IHRoaXMuTVlCIDwgMCB8fCB0aGlzLk1aQiA8IDAgfHwKICAgICAgICB0aGlzLk1YQyA8IDAgfHwgdGhpcy5NWUMgPCAwIHx8IHRoaXMuTVpDIDwgMCkgewogICAgICBpbmZvKCdJbnZhbGlkIE1hdHJpeCBmb3IgJyArIHRoaXMubmFtZSArICcgWycgKwogICAgICAgICAgIHRoaXMuTVhBICsgJywgJyArIHRoaXMuTVlBICsgJywgJyArIHRoaXMuTVpBICsKICAgICAgICAgICB0aGlzLk1YQiArICcsICcgKyB0aGlzLk1ZQiArICcsICcgKyB0aGlzLk1aQiArCiAgICAgICAgICAgdGhpcy5NWEMgKyAnLCAnICsgdGhpcy5NWUMgKyAnLCAnICsgdGhpcy5NWkMgKwogICAgICAgICAgICddLCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdCcpOwogICAgICB0aGlzLk1YQSA9IHRoaXMuTVlCID0gdGhpcy5NWkMgPSAxOwogICAgICB0aGlzLk1YQiA9IHRoaXMuTVlBID0gdGhpcy5NWkEgPSB0aGlzLk1YQyA9IHRoaXMuTVlDID0gdGhpcy5NWkIgPSAwOwogICAgfQogIH0KCiAgZnVuY3Rpb24gbWF0cml4UHJvZHVjdChhLCBiLCByZXN1bHQpIHsKICAgICAgcmVzdWx0WzBdID0gYVswXSAqIGJbMF0gKyBhWzFdICogYlsxXSArIGFbMl0gKiBiWzJdOwogICAgICByZXN1bHRbMV0gPSBhWzNdICogYlswXSArIGFbNF0gKiBiWzFdICsgYVs1XSAqIGJbMl07CiAgICAgIHJlc3VsdFsyXSA9IGFbNl0gKiBiWzBdICsgYVs3XSAqIGJbMV0gKyBhWzhdICogYlsyXTsKICB9CgogIGZ1bmN0aW9uIGNvbnZlcnRUb0ZsYXQoc291cmNlV2hpdGVQb2ludCwgTE1TLCByZXN1bHQpIHsKICAgICAgcmVzdWx0WzBdID0gTE1TWzBdICogMSAvIHNvdXJjZVdoaXRlUG9pbnRbMF07CiAgICAgIHJlc3VsdFsxXSA9IExNU1sxXSAqIDEgLyBzb3VyY2VXaGl0ZVBvaW50WzFdOwogICAgICByZXN1bHRbMl0gPSBMTVNbMl0gKiAxIC8gc291cmNlV2hpdGVQb2ludFsyXTsKICB9CgogIGZ1bmN0aW9uIGNvbnZlcnRUb0Q2NShzb3VyY2VXaGl0ZVBvaW50LCBMTVMsIHJlc3VsdCkgewogICAgdmFyIEQ2NVggPSAwLjk1MDQ3OwogICAgdmFyIEQ2NVkgPSAxOwogICAgdmFyIEQ2NVogPSAxLjA4ODgzOwoKICAgIHJlc3VsdFswXSA9IExNU1swXSAqIEQ2NVggLyBzb3VyY2VXaGl0ZVBvaW50WzBdOwogICAgcmVzdWx0WzFdID0gTE1TWzFdICogRDY1WSAvIHNvdXJjZVdoaXRlUG9pbnRbMV07CiAgICByZXN1bHRbMl0gPSBMTVNbMl0gKiBENjVaIC8gc291cmNlV2hpdGVQb2ludFsyXTsKICB9CgogIGZ1bmN0aW9uIHNSR0JUcmFuc2ZlckZ1bmN0aW9uKGNvbG9yKSB7CiAgICAvLyBTZWUgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TUkdCLgogICAgaWYgKGNvbG9yIDw9IDAuMDAzMTMwOCl7CiAgICAgIHJldHVybiBhZGp1c3RUb1JhbmdlKDAsIDEsIDEyLjkyICogY29sb3IpOwogICAgfQoKICAgIHJldHVybiBhZGp1c3RUb1JhbmdlKDAsIDEsICgxICsgMC4wNTUpICogTWF0aC5wb3coY29sb3IsIDEgLyAyLjQpIC0gMC4wNTUpOwogIH0KCiAgZnVuY3Rpb24gYWRqdXN0VG9SYW5nZShtaW4sIG1heCwgdmFsdWUpIHsKICAgIHJldHVybiBNYXRoLm1heChtaW4sIE1hdGgubWluKG1heCwgdmFsdWUpKTsKICB9CgogIGZ1bmN0aW9uIGRlY29kZUwoTCkgewogICAgaWYgKEwgPCAwKSB7CiAgICAgIHJldHVybiAtZGVjb2RlTCgtTCk7CiAgICB9CgogICAgaWYgKEwgPiA4LjApIHsKICAgICAgcmV0dXJuIE1hdGgucG93KCgoTCArIDE2KSAvIDExNiksIDMpOwogICAgfQoKICAgIHJldHVybiBMICogREVDT0RFX0xfQ09OU1RBTlQ7CiAgfQoKICBmdW5jdGlvbiBjb21wZW5zYXRlQmxhY2tQb2ludChzb3VyY2VCbGFja1BvaW50LCBYWVpfRmxhdCwgcmVzdWx0KSB7CgogICAgLy8gSW4gY2FzZSB0aGUgYmxhY2tQb2ludCBpcyBhbHJlYWR5IHRoZSBkZWZhdWx0IGJsYWNrUG9pbnQgdGhlbiB0aGVyZSBpcwogICAgLy8gbm8gbmVlZCB0byBkbyBjb21wZW5zYXRpb24uCiAgICBpZiAoc291cmNlQmxhY2tQb2ludFswXSA9PT0gMCAmJgogICAgICAgIHNvdXJjZUJsYWNrUG9pbnRbMV0gPT09IDAgJiYKICAgICAgICBzb3VyY2VCbGFja1BvaW50WzJdID09PSAwKSB7CiAgICAgIHJlc3VsdFswXSA9IFhZWl9GbGF0WzBdOwogICAgICByZXN1bHRbMV0gPSBYWVpfRmxhdFsxXTsKICAgICAgcmVzdWx0WzJdID0gWFlaX0ZsYXRbMl07CiAgICAgIHJldHVybjsKICAgIH0KCiAgICAvLyBGb3IgdGhlIGJsYWNrUG9pbnQgY2FsY3VsYXRpb24gZGV0YWlscywgcGxlYXNlIHNlZQogICAgLy8gaHR0cDovL3d3dy5hZG9iZS5jb20vY29udGVudC9kYW0vQWRvYmUvZW4vZGV2bmV0L3Bob3Rvc2hvcC9zZGsvCiAgICAvLyBBZG9iZUJQQy5wZGYuCiAgICAvLyBUaGUgZGVzdGluYXRpb24gYmxhY2tQb2ludCBpcyB0aGUgZGVmYXVsdCBibGFja1BvaW50IFswLCAwLCAwXS4KICAgIHZhciB6ZXJvRGVjb2RlTCA9IGRlY29kZUwoMCk7CgogICAgdmFyIFhfRFNUID0gemVyb0RlY29kZUw7CiAgICB2YXIgWF9TUkMgPSBkZWNvZGVMKHNvdXJjZUJsYWNrUG9pbnRbMF0pOwoKICAgIHZhciBZX0RTVCA9IHplcm9EZWNvZGVMOwogICAgdmFyIFlfU1JDID0gZGVjb2RlTChzb3VyY2VCbGFja1BvaW50WzFdKTsKCiAgICB2YXIgWl9EU1QgPSB6ZXJvRGVjb2RlTDsKICAgIHZhciBaX1NSQyA9IGRlY29kZUwoc291cmNlQmxhY2tQb2ludFsyXSk7CgogICAgdmFyIFhfU2NhbGUgPSAoMSAtIFhfRFNUKSAvICgxIC0gWF9TUkMpOwogICAgdmFyIFhfT2Zmc2V0ID0gMSAtIFhfU2NhbGU7CgogICAgdmFyIFlfU2NhbGUgPSAoMSAtIFlfRFNUKSAvICgxIC0gWV9TUkMpOwogICAgdmFyIFlfT2Zmc2V0ID0gMSAtIFlfU2NhbGU7CgogICAgdmFyIFpfU2NhbGUgPSAoMSAtIFpfRFNUKSAvICgxIC0gWl9TUkMpOwogICAgdmFyIFpfT2Zmc2V0ID0gMSAtIFpfU2NhbGU7CgogICAgcmVzdWx0WzBdID0gWFlaX0ZsYXRbMF0gKiBYX1NjYWxlICsgWF9PZmZzZXQ7CiAgICByZXN1bHRbMV0gPSBYWVpfRmxhdFsxXSAqIFlfU2NhbGUgKyBZX09mZnNldDsKICAgIHJlc3VsdFsyXSA9IFhZWl9GbGF0WzJdICogWl9TY2FsZSArIFpfT2Zmc2V0OwogIH0KCiAgZnVuY3Rpb24gbm9ybWFsaXplV2hpdGVQb2ludFRvRmxhdChzb3VyY2VXaGl0ZVBvaW50LCBYWVpfSW4sIHJlc3VsdCkgewoKICAgIC8vIEluIGNhc2UgdGhlIHdoaXRlUG9pbnQgaXMgYWxyZWFkeSBmbGF0IHRoZW4gdGhlcmUgaXMgbm8gbmVlZCB0byBkbwogICAgLy8gbm9ybWFsaXphdGlvbi4KICAgIGlmIChzb3VyY2VXaGl0ZVBvaW50WzBdID09PSAxICYmIHNvdXJjZVdoaXRlUG9pbnRbMl0gPT09IDEpIHsKICAgICAgcmVzdWx0WzBdID0gWFlaX0luWzBdOwogICAgICByZXN1bHRbMV0gPSBYWVpfSW5bMV07CiAgICAgIHJlc3VsdFsyXSA9IFhZWl9JblsyXTsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIHZhciBMTVMgPSByZXN1bHQ7CiAgICBtYXRyaXhQcm9kdWN0KEJSQURGT1JEX1NDQUxFX01BVFJJWCwgWFlaX0luLCBMTVMpOwoKICAgIHZhciBMTVNfRmxhdCA9IHRlbXBOb3JtYWxpemVNYXRyaXg7CiAgICBjb252ZXJ0VG9GbGF0KHNvdXJjZVdoaXRlUG9pbnQsIExNUywgTE1TX0ZsYXQpOwoKICAgIG1hdHJpeFByb2R1Y3QoQlJBREZPUkRfU0NBTEVfSU5WRVJTRV9NQVRSSVgsIExNU19GbGF0LCByZXN1bHQpOwogIH0KCiAgZnVuY3Rpb24gbm9ybWFsaXplV2hpdGVQb2ludFRvRDY1KHNvdXJjZVdoaXRlUG9pbnQsIFhZWl9JbiwgcmVzdWx0KSB7CgogICAgdmFyIExNUyA9IHJlc3VsdDsKICAgIG1hdHJpeFByb2R1Y3QoQlJBREZPUkRfU0NBTEVfTUFUUklYLCBYWVpfSW4sIExNUyk7CgogICAgdmFyIExNU19ENjUgPSB0ZW1wTm9ybWFsaXplTWF0cml4OwogICAgY29udmVydFRvRDY1KHNvdXJjZVdoaXRlUG9pbnQsIExNUywgTE1TX0Q2NSk7CgogICAgbWF0cml4UHJvZHVjdChCUkFERk9SRF9TQ0FMRV9JTlZFUlNFX01BVFJJWCwgTE1TX0Q2NSwgcmVzdWx0KTsKICB9CgogIGZ1bmN0aW9uIGNvbnZlcnRUb1JnYihjcywgc3JjLCBzcmNPZmZzZXQsIGRlc3QsIGRlc3RPZmZzZXQsIHNjYWxlKSB7CiAgICAvLyBBLCBCIGFuZCBDIHJlcHJlc2VudCBhIHJlZCwgZ3JlZW4gYW5kIGJsdWUgY29tcG9uZW50cyBvZiBhIGNhbGlicmF0ZWQKICAgIC8vIHJnYiBzcGFjZS4KICAgIHZhciBBID0gYWRqdXN0VG9SYW5nZSgwLCAxLCBzcmNbc3JjT2Zmc2V0XSAqIHNjYWxlKTsKICAgIHZhciBCID0gYWRqdXN0VG9SYW5nZSgwLCAxLCBzcmNbc3JjT2Zmc2V0ICsgMV0gKiBzY2FsZSk7CiAgICB2YXIgQyA9IGFkanVzdFRvUmFuZ2UoMCwgMSwgc3JjW3NyY09mZnNldCArIDJdICogc2NhbGUpOwoKICAgIC8vIEEgPC0tLT4gQUdSIGluIHRoZSBzcGVjCiAgICAvLyBCIDwtLS0+IEJHRyBpbiB0aGUgc3BlYwogICAgLy8gQyA8LS0tPiBDR0IgaW4gdGhlIHNwZWMKICAgIHZhciBBR1IgPSBNYXRoLnBvdyhBLCBjcy5HUik7CiAgICB2YXIgQkdHID0gTWF0aC5wb3coQiwgY3MuR0cpOwogICAgdmFyIENHQiA9IE1hdGgucG93KEMsIGNzLkdCKTsKCiAgICAvLyBDb21wdXRlcyBpbnRlcm1lZGlhdGUgdmFyaWFibGVzIEwsIE0sIE4gYXMgcGVyIHNwZWMuCiAgICAvLyBUbyBkZWNvZGUgWCwgWSwgWiB2YWx1ZXMgbWFwIEwsIE0sIE4gZGlyZWN0bHkgdG8gdGhlbS4KICAgIHZhciBYID0gY3MuTVhBICogQUdSICsgY3MuTVhCICogQkdHICsgY3MuTVhDICogQ0dCOwogICAgdmFyIFkgPSBjcy5NWUEgKiBBR1IgKyBjcy5NWUIgKiBCR0cgKyBjcy5NWUMgKiBDR0I7CiAgICB2YXIgWiA9IGNzLk1aQSAqIEFHUiArIGNzLk1aQiAqIEJHRyArIGNzLk1aQyAqIENHQjsKCiAgICAvLyBUaGUgZm9sbG93aW5nIGNhbGN1bGF0aW9ucyBhcmUgYmFzZWQgb24gdGhpcyBkb2N1bWVudDoKICAgIC8vIGh0dHA6Ly93d3cuYWRvYmUuY29tL2NvbnRlbnQvZGFtL0Fkb2JlL2VuL2Rldm5ldC9waG90b3Nob3Avc2RrLwogICAgLy8gQWRvYmVCUEMucGRmLgogICAgdmFyIFhZWiA9IHRlbXBDb252ZXJ0TWF0cml4MTsKICAgIFhZWlswXSA9IFg7CiAgICBYWVpbMV0gPSBZOwogICAgWFlaWzJdID0gWjsKICAgIHZhciBYWVpfRmxhdCA9IHRlbXBDb252ZXJ0TWF0cml4MjsKCiAgICBub3JtYWxpemVXaGl0ZVBvaW50VG9GbGF0KGNzLndoaXRlUG9pbnQsIFhZWiwgWFlaX0ZsYXQpOwoKICAgIHZhciBYWVpfQmxhY2sgPSB0ZW1wQ29udmVydE1hdHJpeDE7CiAgICBjb21wZW5zYXRlQmxhY2tQb2ludChjcy5ibGFja1BvaW50LCBYWVpfRmxhdCwgWFlaX0JsYWNrKTsKCiAgICB2YXIgWFlaX0Q2NSA9IHRlbXBDb252ZXJ0TWF0cml4MjsKICAgIG5vcm1hbGl6ZVdoaXRlUG9pbnRUb0Q2NShGTEFUX1dISVRFUE9JTlRfTUFUUklYLCBYWVpfQmxhY2ssIFhZWl9ENjUpOwoKICAgIHZhciBTUkdCID0gdGVtcENvbnZlcnRNYXRyaXgxOwogICAgbWF0cml4UHJvZHVjdChTUkdCX0Q2NV9YWVpfVE9fUkdCX01BVFJJWCwgWFlaX0Q2NSwgU1JHQik7CgogICAgdmFyIHNSID0gc1JHQlRyYW5zZmVyRnVuY3Rpb24oU1JHQlswXSk7CiAgICB2YXIgc0cgPSBzUkdCVHJhbnNmZXJGdW5jdGlvbihTUkdCWzFdKTsKICAgIHZhciBzQiA9IHNSR0JUcmFuc2ZlckZ1bmN0aW9uKFNSR0JbMl0pOwoKICAgIC8vIENvbnZlcnQgdGhlIHZhbHVlcyB0byByZ2IgcmFuZ2UgWzAsIDI1NV0uCiAgICBkZXN0W2Rlc3RPZmZzZXRdID0gTWF0aC5yb3VuZChzUiAqIDI1NSk7CiAgICBkZXN0W2Rlc3RPZmZzZXQgKyAxXSA9IE1hdGgucm91bmQoc0cgKiAyNTUpOwogICAgZGVzdFtkZXN0T2Zmc2V0ICsgMl0gPSBNYXRoLnJvdW5kKHNCICogMjU1KTsKICB9CgogIENhbFJHQkNTLnByb3RvdHlwZSA9IHsKICAgIGdldFJnYjogZnVuY3Rpb24gQ2FsUkdCQ1NfZ2V0UmdiKHNyYywgc3JjT2Zmc2V0KSB7CiAgICAgIHZhciByZ2IgPSBuZXcgVWludDhBcnJheSgzKTsKICAgICAgdGhpcy5nZXRSZ2JJdGVtKHNyYywgc3JjT2Zmc2V0LCByZ2IsIDApOwogICAgICByZXR1cm4gcmdiOwogICAgfSwKICAgIGdldFJnYkl0ZW06IGZ1bmN0aW9uIENhbFJHQkNTX2dldFJnYkl0ZW0oc3JjLCBzcmNPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3QsIGRlc3RPZmZzZXQpIHsKICAgICAgY29udmVydFRvUmdiKHRoaXMsIHNyYywgc3JjT2Zmc2V0LCBkZXN0LCBkZXN0T2Zmc2V0LCAxKTsKICAgIH0sCiAgICBnZXRSZ2JCdWZmZXI6IGZ1bmN0aW9uIENhbFJHQkNTX2dldFJnYkJ1ZmZlcihzcmMsIHNyY09mZnNldCwgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0LCBkZXN0T2Zmc2V0LCBiaXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGEwMSkgewogICAgICB2YXIgc2NhbGUgPSAxIC8gKCgxIDw8IGJpdHMpIC0gMSk7CgogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAgICAgICBjb252ZXJ0VG9SZ2IodGhpcywgc3JjLCBzcmNPZmZzZXQsIGRlc3QsIGRlc3RPZmZzZXQsIHNjYWxlKTsKICAgICAgICBzcmNPZmZzZXQgKz0gMzsKICAgICAgICBkZXN0T2Zmc2V0ICs9IDMgKyBhbHBoYTAxOwogICAgICB9CiAgICB9LAogICAgZ2V0T3V0cHV0TGVuZ3RoOiBmdW5jdGlvbiBDYWxSR0JDU19nZXRPdXRwdXRMZW5ndGgoaW5wdXRMZW5ndGgsIGFscGhhMDEpIHsKICAgICAgcmV0dXJuIChpbnB1dExlbmd0aCAqICgzICsgYWxwaGEwMSkgLyAzKSB8IDA7CiAgICB9LAogICAgaXNQYXNzdGhyb3VnaDogQ29sb3JTcGFjZS5wcm90b3R5cGUuaXNQYXNzdGhyb3VnaCwKICAgIGZpbGxSZ2I6IENvbG9yU3BhY2UucHJvdG90eXBlLmZpbGxSZ2IsCiAgICBpc0RlZmF1bHREZWNvZGU6IGZ1bmN0aW9uIENhbFJHQkNTX2lzRGVmYXVsdERlY29kZShkZWNvZGVNYXApIHsKICAgICAgcmV0dXJuIENvbG9yU3BhY2UuaXNEZWZhdWx0RGVjb2RlKGRlY29kZU1hcCwgdGhpcy5udW1Db21wcyk7CiAgICB9LAogICAgdXNlc1plcm9Ub09uZVJhbmdlOiB0cnVlCiAgfTsKICByZXR1cm4gQ2FsUkdCQ1M7Cn0pKCk7CgovLwovLyBMYWJDUzogQmFzZWQgb24gIlBERiBSZWZlcmVuY2UsIFNpeHRoIEVkIiwgcC4yNTAKLy8KdmFyIExhYkNTID0gKGZ1bmN0aW9uIExhYkNTQ2xvc3VyZSgpIHsKICBmdW5jdGlvbiBMYWJDUyh3aGl0ZVBvaW50LCBibGFja1BvaW50LCByYW5nZSkgewogICAgdGhpcy5uYW1lID0gJ0xhYic7CiAgICB0aGlzLm51bUNvbXBzID0gMzsKICAgIHRoaXMuZGVmYXVsdENvbG9yID0gbmV3IEZsb2F0MzJBcnJheShbMCwgMCwgMF0pOwoKICAgIGlmICghd2hpdGVQb2ludCkgewogICAgICBlcnJvcignV2hpdGVQb2ludCBtaXNzaW5nIC0gcmVxdWlyZWQgZm9yIGNvbG9yIHNwYWNlIExhYicpOwogICAgfQogICAgYmxhY2tQb2ludCA9IGJsYWNrUG9pbnQgfHwgWzAsIDAsIDBdOwogICAgcmFuZ2UgPSByYW5nZSB8fCBbLTEwMCwgMTAwLCAtMTAwLCAxMDBdOwoKICAgIC8vIFRyYW5zbGF0ZSBhcmdzIHRvIHNwZWMgdmFyaWFibGVzCiAgICB0aGlzLlhXID0gd2hpdGVQb2ludFswXTsKICAgIHRoaXMuWVcgPSB3aGl0ZVBvaW50WzFdOwogICAgdGhpcy5aVyA9IHdoaXRlUG9pbnRbMl07CiAgICB0aGlzLmFtaW4gPSByYW5nZVswXTsKICAgIHRoaXMuYW1heCA9IHJhbmdlWzFdOwogICAgdGhpcy5ibWluID0gcmFuZ2VbMl07CiAgICB0aGlzLmJtYXggPSByYW5nZVszXTsKCiAgICAvLyBUaGVzZSBhcmUgaGVyZSBqdXN0IGZvciBjb21wbGV0ZW5lc3MgLSB0aGUgc3BlYyBkb2Vzbid0IG9mZmVyIGFueQogICAgLy8gZm9ybXVsYXMgdGhhdCB1c2UgQmxhY2tQb2ludCBpbiBMYWIKICAgIHRoaXMuWEIgPSBibGFja1BvaW50WzBdOwogICAgdGhpcy5ZQiA9IGJsYWNrUG9pbnRbMV07CiAgICB0aGlzLlpCID0gYmxhY2tQb2ludFsyXTsKCiAgICAvLyBWYWxpZGF0ZSB2YXJzIGFzIHBlciBzcGVjCiAgICBpZiAodGhpcy5YVyA8IDAgfHwgdGhpcy5aVyA8IDAgfHwgdGhpcy5ZVyAhPT0gMSkgewogICAgICBlcnJvcignSW52YWxpZCBXaGl0ZVBvaW50IGNvbXBvbmVudHMsIG5vIGZhbGxiYWNrIGF2YWlsYWJsZScpOwogICAgfQoKICAgIGlmICh0aGlzLlhCIDwgMCB8fCB0aGlzLllCIDwgMCB8fCB0aGlzLlpCIDwgMCkgewogICAgICBpbmZvKCdJbnZhbGlkIEJsYWNrUG9pbnQsIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0Jyk7CiAgICAgIHRoaXMuWEIgPSB0aGlzLllCID0gdGhpcy5aQiA9IDA7CiAgICB9CgogICAgaWYgKHRoaXMuYW1pbiA+IHRoaXMuYW1heCB8fCB0aGlzLmJtaW4gPiB0aGlzLmJtYXgpIHsKICAgICAgaW5mbygnSW52YWxpZCBSYW5nZSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHRzJyk7CiAgICAgIHRoaXMuYW1pbiA9IC0xMDA7CiAgICAgIHRoaXMuYW1heCA9IDEwMDsKICAgICAgdGhpcy5ibWluID0gLTEwMDsKICAgICAgdGhpcy5ibWF4ID0gMTAwOwogICAgfQogIH0KCiAgLy8gRnVuY3Rpb24gZyh4KSBmcm9tIHNwZWMKICBmdW5jdGlvbiBmbl9nKHgpIHsKICAgIGlmICh4ID49IDYgLyAyOSkgewogICAgICByZXR1cm4geCAqIHggKiB4OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICgxMDggLyA4NDEpICogKHggLSA0IC8gMjkpOwogICAgfQogIH0KCiAgZnVuY3Rpb24gZGVjb2RlKHZhbHVlLCBoaWdoMSwgbG93MiwgaGlnaDIpIHsKICAgIHJldHVybiBsb3cyICsgKHZhbHVlKSAqIChoaWdoMiAtIGxvdzIpIC8gKGhpZ2gxKTsKICB9CgogIC8vIElmIGRlY29kaW5nIGlzIG5lZWRlZCBtYXhWYWwgc2hvdWxkIGJlIDJeYml0cyBwZXIgY29tcG9uZW50IC0gMS4KICBmdW5jdGlvbiBjb252ZXJ0VG9SZ2IoY3MsIHNyYywgc3JjT2Zmc2V0LCBtYXhWYWwsIGRlc3QsIGRlc3RPZmZzZXQpIHsKICAgIC8vIFhYWDogTGFiIGlucHV0IGlzIGluIHRoZSByYW5nZSBvZiBbMCwgMTAwXSwgW2FtaW4sIGFtYXhdLCBbYm1pbiwgYm1heF0KICAgIC8vIG5vdCB0aGUgdXN1YWwgWzAsIDFdLiBJZiBhIGNvbW1hbmQgbGlrZSBzZXRGaWxsQ29sb3IgaXMgdXNlZCB0aGUgc3JjCiAgICAvLyB2YWx1ZXMgd2lsbCBhbHJlYWR5IGJlIHdpdGhpbiB0aGUgY29ycmVjdCByYW5nZS4gSG93ZXZlciwgaWYgd2UgYXJlCiAgICAvLyBjb252ZXJ0aW5nIGFuIGltYWdlIHdlIGhhdmUgdG8gbWFwIHRoZSB2YWx1ZXMgdG8gdGhlIGNvcnJlY3QgcmFuZ2UgZ2l2ZW4KICAgIC8vIGFib3ZlLgogICAgLy8gTHMsYXMsYnMgPC0tLT4gTCosYSosYiogaW4gdGhlIHNwZWMKICAgIHZhciBMcyA9IHNyY1tzcmNPZmZzZXRdOwogICAgdmFyIGFzID0gc3JjW3NyY09mZnNldCArIDFdOwogICAgdmFyIGJzID0gc3JjW3NyY09mZnNldCArIDJdOwogICAgaWYgKG1heFZhbCAhPT0gZmFsc2UpIHsKICAgICAgTHMgPSBkZWNvZGUoTHMsIG1heFZhbCwgMCwgMTAwKTsKICAgICAgYXMgPSBkZWNvZGUoYXMsIG1heFZhbCwgY3MuYW1pbiwgY3MuYW1heCk7CiAgICAgIGJzID0gZGVjb2RlKGJzLCBtYXhWYWwsIGNzLmJtaW4sIGNzLmJtYXgpOwogICAgfQoKICAgIC8vIEFkanVzdCBsaW1pdHMgb2YgJ2FzJyBhbmQgJ2JzJwogICAgYXMgPSBhcyA+IGNzLmFtYXggPyBjcy5hbWF4IDogYXMgPCBjcy5hbWluID8gY3MuYW1pbiA6IGFzOwogICAgYnMgPSBicyA+IGNzLmJtYXggPyBjcy5ibWF4IDogYnMgPCBjcy5ibWluID8gY3MuYm1pbiA6IGJzOwoKICAgIC8vIENvbXB1dGVzIGludGVybWVkaWF0ZSB2YXJpYWJsZXMgWCxZLFogYXMgcGVyIHNwZWMKICAgIHZhciBNID0gKExzICsgMTYpIC8gMTE2OwogICAgdmFyIEwgPSBNICsgKGFzIC8gNTAwKTsKICAgIHZhciBOID0gTSAtIChicyAvIDIwMCk7CgogICAgdmFyIFggPSBjcy5YVyAqIGZuX2coTCk7CiAgICB2YXIgWSA9IGNzLllXICogZm5fZyhNKTsKICAgIHZhciBaID0gY3MuWlcgKiBmbl9nKE4pOwoKICAgIHZhciByLCBnLCBiOwogICAgLy8gVXNpbmcgZGlmZmVyZW50IGNvbnZlcnNpb25zIGZvciBENTAgYW5kIEQ2NSB3aGl0ZSBwb2ludHMsCiAgICAvLyBwZXIgaHR0cDovL3d3dy5jb2xvci5vcmcvc3JnYi5wZGYKICAgIGlmIChjcy5aVyA8IDEpIHsKICAgICAgLy8gQXNzdW1pbmcgRDUwIChYPTAuOTY0MiwgWT0xLjAwLCBaPTAuODI0OSkKICAgICAgciA9IFggKiAzLjEzMzkgKyBZICogLTEuNjE3MCArIFogKiAtMC40OTA2OwogICAgICBnID0gWCAqIC0wLjk3ODUgKyBZICogMS45MTYwICsgWiAqIDAuMDMzMzsKICAgICAgYiA9IFggKiAwLjA3MjAgKyBZICogLTAuMjI5MCArIFogKiAxLjQwNTc7CiAgICB9IGVsc2UgewogICAgICAvLyBBc3N1bWluZyBENjUgKFg9MC45NTA1LCBZPTEuMDAsIFo9MS4wODg4KQogICAgICByID0gWCAqIDMuMjQwNiArIFkgKiAtMS41MzcyICsgWiAqIC0wLjQ5ODY7CiAgICAgIGcgPSBYICogLTAuOTY4OSArIFkgKiAxLjg3NTggKyBaICogMC4wNDE1OwogICAgICBiID0gWCAqIDAuMDU1NyArIFkgKiAtMC4yMDQwICsgWiAqIDEuMDU3MDsKICAgIH0KICAgIC8vIGNsYW1wIGNvbG9yIHZhbHVlcyB0byBbMCwxXSByYW5nZSB0aGVuIGNvbnZlcnQgdG8gWzAsMjU1XSByYW5nZS4KICAgIGRlc3RbZGVzdE9mZnNldF0gPSByIDw9IDAgPyAwIDogciA+PSAxID8gMjU1IDogTWF0aC5zcXJ0KHIpICogMjU1IHwgMDsKICAgIGRlc3RbZGVzdE9mZnNldCArIDFdID0gZyA8PSAwID8gMCA6IGcgPj0gMSA/IDI1NSA6IE1hdGguc3FydChnKSAqIDI1NSB8IDA7CiAgICBkZXN0W2Rlc3RPZmZzZXQgKyAyXSA9IGIgPD0gMCA/IDAgOiBiID49IDEgPyAyNTUgOiBNYXRoLnNxcnQoYikgKiAyNTUgfCAwOwogIH0KCiAgTGFiQ1MucHJvdG90eXBlID0gewogICAgZ2V0UmdiOiBDb2xvclNwYWNlLnByb3RvdHlwZS5nZXRSZ2IsCiAgICBnZXRSZ2JJdGVtOiBmdW5jdGlvbiBMYWJDU19nZXRSZ2JJdGVtKHNyYywgc3JjT2Zmc2V0LCBkZXN0LCBkZXN0T2Zmc2V0KSB7CiAgICAgIGNvbnZlcnRUb1JnYih0aGlzLCBzcmMsIHNyY09mZnNldCwgZmFsc2UsIGRlc3QsIGRlc3RPZmZzZXQpOwogICAgfSwKICAgIGdldFJnYkJ1ZmZlcjogZnVuY3Rpb24gTGFiQ1NfZ2V0UmdiQnVmZmVyKHNyYywgc3JjT2Zmc2V0LCBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3QsIGRlc3RPZmZzZXQsIGJpdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYTAxKSB7CiAgICAgIHZhciBtYXhWYWwgPSAoMSA8PCBiaXRzKSAtIDE7CiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewogICAgICAgIGNvbnZlcnRUb1JnYih0aGlzLCBzcmMsIHNyY09mZnNldCwgbWF4VmFsLCBkZXN0LCBkZXN0T2Zmc2V0KTsKICAgICAgICBzcmNPZmZzZXQgKz0gMzsKICAgICAgICBkZXN0T2Zmc2V0ICs9IDMgKyBhbHBoYTAxOwogICAgICB9CiAgICB9LAogICAgZ2V0T3V0cHV0TGVuZ3RoOiBmdW5jdGlvbiBMYWJDU19nZXRPdXRwdXRMZW5ndGgoaW5wdXRMZW5ndGgsIGFscGhhMDEpIHsKICAgICAgcmV0dXJuIChpbnB1dExlbmd0aCAqICgzICsgYWxwaGEwMSkgLyAzKSB8IDA7CiAgICB9LAogICAgaXNQYXNzdGhyb3VnaDogQ29sb3JTcGFjZS5wcm90b3R5cGUuaXNQYXNzdGhyb3VnaCwKICAgIGZpbGxSZ2I6IENvbG9yU3BhY2UucHJvdG90eXBlLmZpbGxSZ2IsCiAgICBpc0RlZmF1bHREZWNvZGU6IGZ1bmN0aW9uIExhYkNTX2lzRGVmYXVsdERlY29kZShkZWNvZGVNYXApIHsKICAgICAgLy8gWFhYOiBEZWNvZGluZyBpcyBoYW5kbGVkIHdpdGggdGhlIGxhYiBjb252ZXJzaW9uIGJlY2F1c2Ugb2YgdGhlIHN0cmFuZ2UKICAgICAgLy8gcmFuZ2VzIHRoYXQgYXJlIHVzZWQuCiAgICAgIHJldHVybiB0cnVlOwogICAgfSwKICAgIHVzZXNaZXJvVG9PbmVSYW5nZTogZmFsc2UKICB9OwogIHJldHVybiBMYWJDUzsKfSkoKTsKCgp2YXIgQVJDRm91ckNpcGhlciA9IChmdW5jdGlvbiBBUkNGb3VyQ2lwaGVyQ2xvc3VyZSgpIHsKICBmdW5jdGlvbiBBUkNGb3VyQ2lwaGVyKGtleSkgewogICAgdGhpcy5hID0gMDsKICAgIHRoaXMuYiA9IDA7CiAgICB2YXIgcyA9IG5ldyBVaW50OEFycmF5KDI1Nik7CiAgICB2YXIgaSwgaiA9IDAsIHRtcCwga2V5TGVuZ3RoID0ga2V5Lmxlbmd0aDsKICAgIGZvciAoaSA9IDA7IGkgPCAyNTY7ICsraSkgewogICAgICBzW2ldID0gaTsKICAgIH0KICAgIGZvciAoaSA9IDA7IGkgPCAyNTY7ICsraSkgewogICAgICB0bXAgPSBzW2ldOwogICAgICBqID0gKGogKyB0bXAgKyBrZXlbaSAlIGtleUxlbmd0aF0pICYgMHhGRjsKICAgICAgc1tpXSA9IHNbal07CiAgICAgIHNbal0gPSB0bXA7CiAgICB9CiAgICB0aGlzLnMgPSBzOwogIH0KCiAgQVJDRm91ckNpcGhlci5wcm90b3R5cGUgPSB7CiAgICBlbmNyeXB0QmxvY2s6IGZ1bmN0aW9uIEFSQ0ZvdXJDaXBoZXJfZW5jcnlwdEJsb2NrKGRhdGEpIHsKICAgICAgdmFyIGksIG4gPSBkYXRhLmxlbmd0aCwgdG1wLCB0bXAyOwogICAgICB2YXIgYSA9IHRoaXMuYSwgYiA9IHRoaXMuYiwgcyA9IHRoaXMuczsKICAgICAgdmFyIG91dHB1dCA9IG5ldyBVaW50OEFycmF5KG4pOwogICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7CiAgICAgICAgYSA9IChhICsgMSkgJiAweEZGOwogICAgICAgIHRtcCA9IHNbYV07CiAgICAgICAgYiA9IChiICsgdG1wKSAmIDB4RkY7CiAgICAgICAgdG1wMiA9IHNbYl07CiAgICAgICAgc1thXSA9IHRtcDI7CiAgICAgICAgc1tiXSA9IHRtcDsKICAgICAgICBvdXRwdXRbaV0gPSBkYXRhW2ldIF4gc1sodG1wICsgdG1wMikgJiAweEZGXTsKICAgICAgfQogICAgICB0aGlzLmEgPSBhOwogICAgICB0aGlzLmIgPSBiOwogICAgICByZXR1cm4gb3V0cHV0OwogICAgfQogIH07CiAgQVJDRm91ckNpcGhlci5wcm90b3R5cGUuZGVjcnlwdEJsb2NrID0gQVJDRm91ckNpcGhlci5wcm90b3R5cGUuZW5jcnlwdEJsb2NrOwoKICByZXR1cm4gQVJDRm91ckNpcGhlcjsKfSkoKTsKCnZhciBjYWxjdWxhdGVNRDUgPSAoZnVuY3Rpb24gY2FsY3VsYXRlTUQ1Q2xvc3VyZSgpIHsKICB2YXIgciA9IG5ldyBVaW50OEFycmF5KFsKICAgIDcsIDEyLCAxNywgMjIsIDcsIDEyLCAxNywgMjIsIDcsIDEyLCAxNywgMjIsIDcsIDEyLCAxNywgMjIsCiAgICA1LCA5LCAxNCwgMjAsIDUsIDksIDE0LCAyMCwgNSwgOSwgMTQsIDIwLCA1LCA5LCAxNCwgMjAsCiAgICA0LCAxMSwgMTYsIDIzLCA0LCAxMSwgMTYsIDIzLCA0LCAxMSwgMTYsIDIzLCA0LCAxMSwgMTYsIDIzLAogICAgNiwgMTAsIDE1LCAyMSwgNiwgMTAsIDE1LCAyMSwgNiwgMTAsIDE1LCAyMSwgNiwgMTAsIDE1LCAyMV0pOwoKICB2YXIgayA9IG5ldyBJbnQzMkFycmF5KFsKICAgIC02ODA4NzY5MzYsIC0zODk1NjQ1ODYsIDYwNjEwNTgxOSwgLTEwNDQ1MjUzMzAsIC0xNzY0MTg4OTcsIDEyMDAwODA0MjYsCiAgICAtMTQ3MzIzMTM0MSwgLTQ1NzA1OTgzLCAxNzcwMDM1NDE2LCAtMTk1ODQxNDQxNywgLTQyMDYzLCAtMTk5MDQwNDE2MiwKICAgIDE4MDQ2MDM2ODIsIC00MDM0MTEwMSwgLTE1MDIwMDIyOTAsIDEyMzY1MzUzMjksIC0xNjU3OTY1MTAsIC0xMDY5NTAxNjMyLAogICAgNjQzNzE3NzEzLCAtMzczODk3MzAyLCAtNzAxNTU4NjkxLCAzODAxNjA4MywgLTY2MDQ3ODMzNSwgLTQwNTUzNzg0OCwKICAgIDU2ODQ0NjQzOCwgLTEwMTk4MDM2OTAsIC0xODczNjM5NjEsIDExNjM1MzE1MDEsIC0xNDQ0NjgxNDY3LCAtNTE0MDM3ODQsCiAgICAxNzM1MzI4NDczLCAtMTkyNjYwNzczNCwgLTM3ODU1OCwgLTIwMjI1NzQ0NjMsIDE4MzkwMzA1NjIsIC0zNTMwOTU1NiwKICAgIC0xNTMwOTkyMDYwLCAxMjcyODkzMzUzLCAtMTU1NDk3NjMyLCAtMTA5NDczMDY0MCwgNjgxMjc5MTc0LCAtMzU4NTM3MjIyLAogICAgLTcyMjUyMTk3OSwgNzYwMjkxODksIC02NDAzNjQ0ODcsIC00MjE4MTU4MzUsIDUzMDc0MjUyMCwgLTk5NTMzODY1MSwKICAgIC0xOTg2MzA4NDQsIDExMjY4OTE0MTUsIC0xNDE2MzU0OTA1LCAtNTc0MzQwNTUsIDE3MDA0ODU1NzEsIC0xODk0OTg2NjA2LAogICAgLTEwNTE1MjMsIC0yMDU0OTIyNzk5LCAxODczMzEzMzU5LCAtMzA2MTE3NDQsIC0xNTYwMTk4MzgwLCAxMzA5MTUxNjQ5LAogICAgLTE0NTUyMzA3MCwgLTExMjAyMTAzNzksIDcxODc4NzI1OSwgLTM0MzQ4NTU1MV0pOwoKICBmdW5jdGlvbiBoYXNoKGRhdGEsIG9mZnNldCwgbGVuZ3RoKSB7CiAgICB2YXIgaDAgPSAxNzMyNTg0MTkzLCBoMSA9IC0yNzE3MzM4NzksIGgyID0gLTE3MzI1ODQxOTQsIGgzID0gMjcxNzMzODc4OwogICAgLy8gcHJlLXByb2Nlc3NpbmcKICAgIHZhciBwYWRkZWRMZW5ndGggPSAobGVuZ3RoICsgNzIpICYgfjYzOyAvLyBkYXRhICsgOSBleHRyYSBieXRlcwogICAgdmFyIHBhZGRlZCA9IG5ldyBVaW50OEFycmF5KHBhZGRlZExlbmd0aCk7CiAgICB2YXIgaSwgaiwgbjsKICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICBwYWRkZWRbaV0gPSBkYXRhW29mZnNldCsrXTsKICAgIH0KICAgIHBhZGRlZFtpKytdID0gMHg4MDsKICAgIG4gPSBwYWRkZWRMZW5ndGggLSA4OwogICAgd2hpbGUgKGkgPCBuKSB7CiAgICAgIHBhZGRlZFtpKytdID0gMDsKICAgIH0KICAgIHBhZGRlZFtpKytdID0gKGxlbmd0aCA8PCAzKSAmIDB4RkY7CiAgICBwYWRkZWRbaSsrXSA9IChsZW5ndGggPj4gNSkgJiAweEZGOwogICAgcGFkZGVkW2krK10gPSAobGVuZ3RoID4+IDEzKSAmIDB4RkY7CiAgICBwYWRkZWRbaSsrXSA9IChsZW5ndGggPj4gMjEpICYgMHhGRjsKICAgIHBhZGRlZFtpKytdID0gKGxlbmd0aCA+Pj4gMjkpICYgMHhGRjsKICAgIHBhZGRlZFtpKytdID0gMDsKICAgIHBhZGRlZFtpKytdID0gMDsKICAgIHBhZGRlZFtpKytdID0gMDsKICAgIHZhciB3ID0gbmV3IEludDMyQXJyYXkoMTYpOwogICAgZm9yIChpID0gMDsgaSA8IHBhZGRlZExlbmd0aDspIHsKICAgICAgZm9yIChqID0gMDsgaiA8IDE2OyArK2osIGkgKz0gNCkgewogICAgICAgIHdbal0gPSAocGFkZGVkW2ldIHwgKHBhZGRlZFtpICsgMV0gPDwgOCkgfAogICAgICAgICAgICAgICAocGFkZGVkW2kgKyAyXSA8PCAxNikgfCAocGFkZGVkW2kgKyAzXSA8PCAyNCkpOwogICAgICB9CiAgICAgIHZhciBhID0gaDAsIGIgPSBoMSwgYyA9IGgyLCBkID0gaDMsIGYsIGc7CiAgICAgIGZvciAoaiA9IDA7IGogPCA2NDsgKytqKSB7CiAgICAgICAgaWYgKGogPCAxNikgewogICAgICAgICAgZiA9IChiICYgYykgfCAoKH5iKSAmIGQpOwogICAgICAgICAgZyA9IGo7CiAgICAgICAgfSBlbHNlIGlmIChqIDwgMzIpIHsKICAgICAgICAgIGYgPSAoZCAmIGIpIHwgKCh+ZCkgJiBjKTsKICAgICAgICAgIGcgPSAoNSAqIGogKyAxKSAmIDE1OwogICAgICAgIH0gZWxzZSBpZiAoaiA8IDQ4KSB7CiAgICAgICAgICBmID0gYiBeIGMgXiBkOwogICAgICAgICAgZyA9ICgzICogaiArIDUpICYgMTU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGYgPSBjIF4gKGIgfCAofmQpKTsKICAgICAgICAgIGcgPSAoNyAqIGopICYgMTU7CiAgICAgICAgfQogICAgICAgIHZhciB0bXAgPSBkLCByb3RhdGVBcmcgPSAoYSArIGYgKyBrW2pdICsgd1tnXSkgfCAwLCByb3RhdGUgPSByW2pdOwogICAgICAgIGQgPSBjOwogICAgICAgIGMgPSBiOwogICAgICAgIGIgPSAoYiArICgocm90YXRlQXJnIDw8IHJvdGF0ZSkgfCAocm90YXRlQXJnID4+PiAoMzIgLSByb3RhdGUpKSkpIHwgMDsKICAgICAgICBhID0gdG1wOwogICAgICB9CiAgICAgIGgwID0gKGgwICsgYSkgfCAwOwogICAgICBoMSA9IChoMSArIGIpIHwgMDsKICAgICAgaDIgPSAoaDIgKyBjKSB8IDA7CiAgICAgIGgzID0gKGgzICsgZCkgfCAwOwogICAgfQogICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KFsKICAgICAgaDAgJiAweEZGLCAoaDAgPj4gOCkgJiAweEZGLCAoaDAgPj4gMTYpICYgMHhGRiwgKGgwID4+PiAyNCkgJiAweEZGLAogICAgICBoMSAmIDB4RkYsIChoMSA+PiA4KSAmIDB4RkYsIChoMSA+PiAxNikgJiAweEZGLCAoaDEgPj4+IDI0KSAmIDB4RkYsCiAgICAgIGgyICYgMHhGRiwgKGgyID4+IDgpICYgMHhGRiwgKGgyID4+IDE2KSAmIDB4RkYsIChoMiA+Pj4gMjQpICYgMHhGRiwKICAgICAgaDMgJiAweEZGLCAoaDMgPj4gOCkgJiAweEZGLCAoaDMgPj4gMTYpICYgMHhGRiwgKGgzID4+PiAyNCkgJiAweEZGCiAgICBdKTsKICB9CgogIHJldHVybiBoYXNoOwp9KSgpOwp2YXIgV29yZDY0ID0gKGZ1bmN0aW9uIFdvcmQ2NENsb3N1cmUoKSB7CiAgZnVuY3Rpb24gV29yZDY0KGhpZ2hJbnRlZ2VyLCBsb3dJbnRlZ2VyKSB7CiAgICB0aGlzLmhpZ2ggPSBoaWdoSW50ZWdlciB8IDA7CiAgICB0aGlzLmxvdyA9IGxvd0ludGVnZXIgfCAwOwogIH0KICBXb3JkNjQucHJvdG90eXBlID0gewogICAgYW5kOiBmdW5jdGlvbiBXb3JkNjRfYW5kKHdvcmQpIHsKICAgICAgdGhpcy5oaWdoICY9IHdvcmQuaGlnaDsKICAgICAgdGhpcy5sb3cgJj0gd29yZC5sb3c7CiAgICB9LAogICAgeG9yOiBmdW5jdGlvbiBXb3JkNjRfeG9yKHdvcmQpIHsKICAgICB0aGlzLmhpZ2ggXj0gd29yZC5oaWdoOwogICAgIHRoaXMubG93IF49IHdvcmQubG93OwogICAgfSwKCiAgICBvcjogZnVuY3Rpb24gV29yZDY0X29yKHdvcmQpIHsKICAgICAgdGhpcy5oaWdoIHw9IHdvcmQuaGlnaDsKICAgICAgdGhpcy5sb3cgfD0gd29yZC5sb3c7CiAgICB9LAoKICAgIHNoaWZ0UmlnaHQ6IGZ1bmN0aW9uIFdvcmQ2NF9zaGlmdFJpZ2h0KHBsYWNlcykgewogICAgICBpZiAocGxhY2VzID49IDMyKSB7CiAgICAgICAgdGhpcy5sb3cgPSAodGhpcy5oaWdoID4+PiAocGxhY2VzIC0gMzIpKSB8IDA7CiAgICAgICAgdGhpcy5oaWdoID0gMDsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLmxvdyA9ICh0aGlzLmxvdyA+Pj4gcGxhY2VzKSB8ICh0aGlzLmhpZ2ggPDwgKDMyIC0gcGxhY2VzKSk7CiAgICAgICAgdGhpcy5oaWdoID0gKHRoaXMuaGlnaCA+Pj4gcGxhY2VzKSB8IDA7CiAgICAgIH0KICAgIH0sCgogICAgc2hpZnRMZWZ0OiBmdW5jdGlvbiBXb3JkNjRfc2hpZnRMZWZ0KHBsYWNlcykgewogICAgICBpZiAocGxhY2VzID49IDMyKSB7CiAgICAgICAgdGhpcy5oaWdoID0gdGhpcy5sb3cgPDwgKHBsYWNlcyAtIDMyKTsKICAgICAgICB0aGlzLmxvdyA9IDA7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5oaWdoID0gKHRoaXMuaGlnaCA8PCBwbGFjZXMpIHwgKHRoaXMubG93ID4+PiAoMzIgLSBwbGFjZXMpKTsKICAgICAgICB0aGlzLmxvdyA9IHRoaXMubG93IDw8IHBsYWNlczsKICAgICAgfQogICAgfSwKCiAgICByb3RhdGVSaWdodDogZnVuY3Rpb24gV29yZDY0X3JvdGF0ZVJpZ2h0KHBsYWNlcykgewogICAgICB2YXIgbG93LCBoaWdoOwogICAgICBpZiAocGxhY2VzICYgMzIpIHsKICAgICAgICBoaWdoID0gdGhpcy5sb3c7CiAgICAgICAgbG93ID0gdGhpcy5oaWdoOwogICAgICB9IGVsc2UgewogICAgICAgIGxvdyA9IHRoaXMubG93OwogICAgICAgIGhpZ2ggPSB0aGlzLmhpZ2g7CiAgICAgIH0KICAgICAgcGxhY2VzICY9IDMxOwogICAgICB0aGlzLmxvdyA9IChsb3cgPj4+IHBsYWNlcykgfCAoaGlnaCA8PCAoMzIgLSBwbGFjZXMpKTsKICAgICAgdGhpcy5oaWdoID0gKGhpZ2ggPj4+IHBsYWNlcykgfCAobG93IDw8ICgzMiAtIHBsYWNlcykpOwogICAgfSwKCiAgICBub3Q6IGZ1bmN0aW9uIFdvcmQ2NF9ub3QoKSB7CiAgICAgIHRoaXMuaGlnaCA9IH50aGlzLmhpZ2g7CiAgICAgIHRoaXMubG93ID0gfnRoaXMubG93OwogICAgfSwKCiAgICBhZGQ6IGZ1bmN0aW9uIFdvcmQ2NF9hZGQod29yZCkgewogICAgICB2YXIgbG93QWRkID0gKHRoaXMubG93ID4+PiAwKSArICh3b3JkLmxvdyA+Pj4gMCk7CiAgICAgIHZhciBoaWdoQWRkID0gKHRoaXMuaGlnaCA+Pj4gMCkgKyAod29yZC5oaWdoID4+PiAwKTsKICAgICAgaWYgKGxvd0FkZCA+IDB4RkZGRkZGRkYpIHsKICAgICAgICBoaWdoQWRkICs9IDE7CiAgICAgIH0KICAgICAgdGhpcy5sb3cgPSBsb3dBZGQgfCAwOwogICAgICB0aGlzLmhpZ2ggPSBoaWdoQWRkIHwgMDsKICAgIH0sCgogICAgY29weVRvOiBmdW5jdGlvbiBXb3JkNjRfY29weVRvKGJ5dGVzLCBvZmZzZXQpIHsKICAgICAgYnl0ZXNbb2Zmc2V0XSA9ICh0aGlzLmhpZ2ggPj4+IDI0KSAmIDB4RkY7CiAgICAgIGJ5dGVzW29mZnNldCArIDFdID0gKHRoaXMuaGlnaCA+PiAxNikgJiAweEZGOwogICAgICBieXRlc1tvZmZzZXQgKyAyXSA9ICh0aGlzLmhpZ2ggPj4gOCkgJiAweEZGOwogICAgICBieXRlc1tvZmZzZXQgKyAzXSA9IHRoaXMuaGlnaCAmIDB4RkY7CiAgICAgIGJ5dGVzW29mZnNldCArIDRdID0gKHRoaXMubG93ID4+PiAyNCkgJiAweEZGOwogICAgICBieXRlc1tvZmZzZXQgKyA1XSA9ICh0aGlzLmxvdyA+PiAxNikgJiAweEZGOwogICAgICBieXRlc1tvZmZzZXQgKyA2XSA9ICh0aGlzLmxvdyA+PiA4KSAmIDB4RkY7CiAgICAgIGJ5dGVzW29mZnNldCArIDddID0gdGhpcy5sb3cgJiAweEZGOwogICAgfSwKCiAgICBhc3NpZ246IGZ1bmN0aW9uIFdvcmQ2NF9hc3NpZ24od29yZCkgewogICAgICB0aGlzLmhpZ2ggPSB3b3JkLmhpZ2g7CiAgICAgIHRoaXMubG93ID0gd29yZC5sb3c7CiAgICB9CiAgfTsKICByZXR1cm4gV29yZDY0Owp9KSgpOwoKdmFyIGNhbGN1bGF0ZVNIQTI1NiA9IChmdW5jdGlvbiBjYWxjdWxhdGVTSEEyNTZDbG9zdXJlKCkgewogIGZ1bmN0aW9uIHJvdHIoeCwgbikgewogICAgcmV0dXJuICh4ID4+PiBuKSB8ICh4IDw8IDMyIC0gbik7CiAgfQoKICBmdW5jdGlvbiBjaCh4LCB5LCB6KSB7CiAgICByZXR1cm4gKHggJiB5KSBeICh+eCAmIHopOwogIH0KCiAgZnVuY3Rpb24gbWFqKHgsIHksIHopIHsKICAgIHJldHVybiAoeCAmIHkpIF4gKHggJiB6KSBeICh5ICYgeik7CiAgfQoKICBmdW5jdGlvbiBzaWdtYSh4KSB7CiAgICByZXR1cm4gcm90cih4LCAyKSBeIHJvdHIoeCwgMTMpIF4gcm90cih4LCAyMik7CiAgfQoKICBmdW5jdGlvbiBzaWdtYVByaW1lKHgpIHsKICAgIHJldHVybiByb3RyKHgsIDYpIF4gcm90cih4LCAxMSkgXiByb3RyKHgsIDI1KTsKICB9CgogIGZ1bmN0aW9uIGxpdHRsZVNpZ21hKHgpIHsKICAgIHJldHVybiByb3RyKHgsIDcpIF4gcm90cih4LCAxOCkgXiB4ID4+PiAzOwogIH0KCiAgZnVuY3Rpb24gbGl0dGxlU2lnbWFQcmltZSh4KSB7CiAgICByZXR1cm4gcm90cih4LCAxNykgXiByb3RyKHgsIDE5KSBeIHggPj4+IDEwOwogIH0KCiAgdmFyIGsgPSBbMHg0MjhhMmY5OCwgMHg3MTM3NDQ5MSwgMHhiNWMwZmJjZiwgMHhlOWI1ZGJhNSwKICAgICAgICAgICAweDM5NTZjMjViLCAweDU5ZjExMWYxLCAweDkyM2Y4MmE0LCAweGFiMWM1ZWQ1LAogICAgICAgICAgIDB4ZDgwN2FhOTgsIDB4MTI4MzViMDEsIDB4MjQzMTg1YmUsIDB4NTUwYzdkYzMsCiAgICAgICAgICAgMHg3MmJlNWQ3NCwgMHg4MGRlYjFmZSwgMHg5YmRjMDZhNywgMHhjMTliZjE3NCwKICAgICAgICAgICAweGU0OWI2OWMxLCAweGVmYmU0Nzg2LCAweDBmYzE5ZGM2LCAweDI0MGNhMWNjLAogICAgICAgICAgIDB4MmRlOTJjNmYsIDB4NGE3NDg0YWEsIDB4NWNiMGE5ZGMsIDB4NzZmOTg4ZGEsCiAgICAgICAgICAgMHg5ODNlNTE1MiwgMHhhODMxYzY2ZCwgMHhiMDAzMjdjOCwgMHhiZjU5N2ZjNywKICAgICAgICAgICAweGM2ZTAwYmYzLCAweGQ1YTc5MTQ3LCAweDA2Y2E2MzUxLCAweDE0MjkyOTY3LAogICAgICAgICAgIDB4MjdiNzBhODUsIDB4MmUxYjIxMzgsIDB4NGQyYzZkZmMsIDB4NTMzODBkMTMsCiAgICAgICAgICAgMHg2NTBhNzM1NCwgMHg3NjZhMGFiYiwgMHg4MWMyYzkyZSwgMHg5MjcyMmM4NSwKICAgICAgICAgICAweGEyYmZlOGExLCAweGE4MWE2NjRiLCAweGMyNGI4YjcwLCAweGM3NmM1MWEzLAogICAgICAgICAgIDB4ZDE5MmU4MTksIDB4ZDY5OTA2MjQsIDB4ZjQwZTM1ODUsIDB4MTA2YWEwNzAsCiAgICAgICAgICAgMHgxOWE0YzExNiwgMHgxZTM3NmMwOCwgMHgyNzQ4Nzc0YywgMHgzNGIwYmNiNSwKICAgICAgICAgICAweDM5MWMwY2IzLCAweDRlZDhhYTRhLCAweDViOWNjYTRmLCAweDY4MmU2ZmYzLAogICAgICAgICAgIDB4NzQ4ZjgyZWUsIDB4NzhhNTYzNmYsIDB4ODRjODc4MTQsIDB4OGNjNzAyMDgsCiAgICAgICAgICAgMHg5MGJlZmZmYSwgMHhhNDUwNmNlYiwgMHhiZWY5YTNmNywgMHhjNjcxNzhmMl07CgogIGZ1bmN0aW9uIGhhc2goZGF0YSwgb2Zmc2V0LCBsZW5ndGgpIHsKICAgIC8vIGluaXRpYWwgaGFzaCB2YWx1ZXMKICAgIHZhciBoMCA9IDB4NmEwOWU2NjcsIGgxID0gMHhiYjY3YWU4NSwgaDIgPSAweDNjNmVmMzcyLAogICAgICAgIGgzID0gMHhhNTRmZjUzYSwgaDQgPSAweDUxMGU1MjdmLCBoNSA9IDB4OWIwNTY4OGMsCiAgICAgICAgaDYgPSAweDFmODNkOWFiLCBoNyA9IDB4NWJlMGNkMTk7CiAgICAvLyBwcmUtcHJvY2Vzc2luZwogICAgdmFyIHBhZGRlZExlbmd0aCA9IE1hdGguY2VpbCgobGVuZ3RoICsgOSkgLyA2NCkgKiA2NDsKICAgIHZhciBwYWRkZWQgPSBuZXcgVWludDhBcnJheShwYWRkZWRMZW5ndGgpOwogICAgdmFyIGksIGosIG47CiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgcGFkZGVkW2ldID0gZGF0YVtvZmZzZXQrK107CiAgICB9CiAgICBwYWRkZWRbaSsrXSA9IDB4ODA7CiAgICBuID0gcGFkZGVkTGVuZ3RoIC0gODsKICAgIHdoaWxlIChpIDwgbikgewogICAgICBwYWRkZWRbaSsrXSA9IDA7CiAgICB9CiAgICBwYWRkZWRbaSsrXSA9IDA7CiAgICBwYWRkZWRbaSsrXSA9IDA7CiAgICBwYWRkZWRbaSsrXSA9IDA7CiAgICBwYWRkZWRbaSsrXSA9IChsZW5ndGggPj4+IDI5KSAmIDB4RkY7CiAgICBwYWRkZWRbaSsrXSA9IChsZW5ndGggPj4gMjEpICYgMHhGRjsKICAgIHBhZGRlZFtpKytdID0gKGxlbmd0aCA+PiAxMykgJiAweEZGOwogICAgcGFkZGVkW2krK10gPSAobGVuZ3RoID4+IDUpICYgMHhGRjsKICAgIHBhZGRlZFtpKytdID0gKGxlbmd0aCA8PCAzKSAmIDB4RkY7CiAgICB2YXIgdyA9IG5ldyBVaW50MzJBcnJheSg2NCk7CiAgICAvLyBmb3IgZWFjaCA1MTIgYml0IGJsb2NrCiAgICBmb3IgKGkgPSAwOyBpIDwgcGFkZGVkTGVuZ3RoOykgewogICAgICBmb3IgKGogPSAwOyBqIDwgMTY7ICsraikgewogICAgICAgIHdbal0gPSAocGFkZGVkW2ldIDw8IDI0IHwgKHBhZGRlZFtpICsgMV0gPDwgMTYpIHwKICAgICAgICAgICAgICAgKHBhZGRlZFtpICsgMl0gPDwgOCkgfCAocGFkZGVkW2kgKyAzXSkpOwogICAgICAgIGkgKz0gNDsKICAgICAgfQoKICAgICAgZm9yIChqID0gMTY7IGogPCA2NDsgKytqKSB7CiAgICAgICAgd1tqXSA9IGxpdHRsZVNpZ21hUHJpbWUod1tqIC0gMl0pICsgd1tqIC0gN10gKwogICAgICAgICAgICAgICBsaXR0bGVTaWdtYSh3W2ogLSAxNV0pICsgd1tqIC0gMTZdIHwgMDsKICAgICAgfQogICAgICB2YXIgYSA9IGgwLCBiID0gaDEsIGMgPSBoMiwgZCA9IGgzLCBlID0gaDQsCiAgICAgICAgICBmID0gaDUsIGcgPSBoNiwgaCA9IGg3LCB0MSwgdDI7CiAgICAgIGZvciAoaiA9IDA7IGogPCA2NDsgKytqKSB7CiAgICAgICAgdDEgPSBoICsgc2lnbWFQcmltZShlKSArIGNoKGUsIGYsIGcpICsga1tqXSArIHdbal07CiAgICAgICAgdDIgPSBzaWdtYShhKSArIG1haihhLCBiLCBjKTsKICAgICAgICBoID0gZzsKICAgICAgICBnID0gZjsKICAgICAgICBmID0gZTsKICAgICAgICBlID0gKGQgKyB0MSkgfCAwOwogICAgICAgIGQgPSBjOwogICAgICAgIGMgPSBiOwogICAgICAgIGIgPSBhOwogICAgICAgIGEgPSAodDEgKyB0MikgfCAwOwogICAgICB9CiAgICAgIGgwID0gKGgwICsgYSkgfCAwOwogICAgICBoMSA9IChoMSArIGIpIHwgMDsKICAgICAgaDIgPSAoaDIgKyBjKSB8IDA7CiAgICAgIGgzID0gKGgzICsgZCkgfCAwOwogICAgICBoNCA9IChoNCArIGUpIHwgMDsKICAgICAgaDUgPSAoaDUgKyBmKSB8IDA7CiAgICAgIGg2ID0gKGg2ICsgZykgfCAwOwogICAgICBoNyA9IChoNyArIGgpIHwgMDsKICAgIH0KICAgIHJldHVybiBuZXcgVWludDhBcnJheShbCiAgICAgIChoMCA+PiAyNCkgJiAweEZGLCAoaDAgPj4gMTYpICYgMHhGRiwgKGgwID4+IDgpICYgMHhGRiwgKGgwKSAmIDB4RkYsCiAgICAgIChoMSA+PiAyNCkgJiAweEZGLCAoaDEgPj4gMTYpICYgMHhGRiwgKGgxID4+IDgpICYgMHhGRiwgKGgxKSAmIDB4RkYsCiAgICAgIChoMiA+PiAyNCkgJiAweEZGLCAoaDIgPj4gMTYpICYgMHhGRiwgKGgyID4+IDgpICYgMHhGRiwgKGgyKSAmIDB4RkYsCiAgICAgIChoMyA+PiAyNCkgJiAweEZGLCAoaDMgPj4gMTYpICYgMHhGRiwgKGgzID4+IDgpICYgMHhGRiwgKGgzKSAmIDB4RkYsCiAgICAgIChoNCA+PiAyNCkgJiAweEZGLCAoaDQgPj4gMTYpICYgMHhGRiwgKGg0ID4+IDgpICYgMHhGRiwgKGg0KSAmIDB4RkYsCiAgICAgIChoNSA+PiAyNCkgJiAweEZGLCAoaDUgPj4gMTYpICYgMHhGRiwgKGg1ID4+IDgpICYgMHhGRiwgKGg1KSAmIDB4RkYsCiAgICAgIChoNiA+PiAyNCkgJiAweEZGLCAoaDYgPj4gMTYpICYgMHhGRiwgKGg2ID4+IDgpICYgMHhGRiwgKGg2KSAmIDB4RkYsCiAgICAgIChoNyA+PiAyNCkgJiAweEZGLCAoaDcgPj4gMTYpICYgMHhGRiwgKGg3ID4+IDgpICYgMHhGRiwgKGg3KSAmIDB4RkYKICAgIF0pOwogIH0KCiAgcmV0dXJuIGhhc2g7Cn0pKCk7Cgp2YXIgY2FsY3VsYXRlU0hBNTEyID0gKGZ1bmN0aW9uIGNhbGN1bGF0ZVNIQTUxMkNsb3N1cmUoKSB7CiAgZnVuY3Rpb24gY2gocmVzdWx0LCB4LCB5LCB6LCB0bXApIHsKICAgIHJlc3VsdC5hc3NpZ24oeCk7CiAgICByZXN1bHQuYW5kKHkpOwogICAgdG1wLmFzc2lnbih4KTsKICAgIHRtcC5ub3QoKTsKICAgIHRtcC5hbmQoeik7CiAgICByZXN1bHQueG9yKHRtcCk7CiAgfQoKICBmdW5jdGlvbiBtYWoocmVzdWx0LCB4LCB5LCB6LCB0bXApIHsKICAgIHJlc3VsdC5hc3NpZ24oeCk7CiAgICByZXN1bHQuYW5kKHkpOwogICAgdG1wLmFzc2lnbih4KTsKICAgIHRtcC5hbmQoeik7CiAgICByZXN1bHQueG9yKHRtcCk7CiAgICB0bXAuYXNzaWduKHkpOwogICAgdG1wLmFuZCh6KTsKICAgIHJlc3VsdC54b3IodG1wKTsKICB9CgogIGZ1bmN0aW9uIHNpZ21hKHJlc3VsdCwgeCwgdG1wKSB7CiAgICByZXN1bHQuYXNzaWduKHgpOwogICAgcmVzdWx0LnJvdGF0ZVJpZ2h0KDI4KTsKICAgIHRtcC5hc3NpZ24oeCk7CiAgICB0bXAucm90YXRlUmlnaHQoMzQpOwogICAgcmVzdWx0Lnhvcih0bXApOwogICAgdG1wLmFzc2lnbih4KTsKICAgIHRtcC5yb3RhdGVSaWdodCgzOSk7CiAgICByZXN1bHQueG9yKHRtcCk7CiAgfQoKICBmdW5jdGlvbiBzaWdtYVByaW1lKHJlc3VsdCwgeCwgdG1wKSB7CiAgICByZXN1bHQuYXNzaWduKHgpOwogICAgcmVzdWx0LnJvdGF0ZVJpZ2h0KDE0KTsKICAgIHRtcC5hc3NpZ24oeCk7CiAgICB0bXAucm90YXRlUmlnaHQoMTgpOwogICAgcmVzdWx0Lnhvcih0bXApOwogICAgdG1wLmFzc2lnbih4KTsKICAgIHRtcC5yb3RhdGVSaWdodCg0MSk7CiAgICByZXN1bHQueG9yKHRtcCk7CiAgfQoKICBmdW5jdGlvbiBsaXR0bGVTaWdtYShyZXN1bHQsIHgsIHRtcCkgewogICAgcmVzdWx0LmFzc2lnbih4KTsKICAgIHJlc3VsdC5yb3RhdGVSaWdodCgxKTsKICAgIHRtcC5hc3NpZ24oeCk7CiAgICB0bXAucm90YXRlUmlnaHQoOCk7CiAgICByZXN1bHQueG9yKHRtcCk7CiAgICB0bXAuYXNzaWduKHgpOwogICAgdG1wLnNoaWZ0UmlnaHQoNyk7CiAgICByZXN1bHQueG9yKHRtcCk7CiAgfQoKICBmdW5jdGlvbiBsaXR0bGVTaWdtYVByaW1lKHJlc3VsdCwgeCwgdG1wKSB7CiAgICByZXN1bHQuYXNzaWduKHgpOwogICAgcmVzdWx0LnJvdGF0ZVJpZ2h0KDE5KTsKICAgIHRtcC5hc3NpZ24oeCk7CiAgICB0bXAucm90YXRlUmlnaHQoNjEpOwogICAgcmVzdWx0Lnhvcih0bXApOwogICAgdG1wLmFzc2lnbih4KTsKICAgIHRtcC5zaGlmdFJpZ2h0KDYpOwogICAgcmVzdWx0Lnhvcih0bXApOwogIH0KCiAgdmFyIGsgPSBbCiAgICBuZXcgV29yZDY0KDB4NDI4YTJmOTgsIDB4ZDcyOGFlMjIpLCBuZXcgV29yZDY0KDB4NzEzNzQ0OTEsIDB4MjNlZjY1Y2QpLAogICAgbmV3IFdvcmQ2NCgweGI1YzBmYmNmLCAweGVjNGQzYjJmKSwgbmV3IFdvcmQ2NCgweGU5YjVkYmE1LCAweDgxODlkYmJjKSwKICAgIG5ldyBXb3JkNjQoMHgzOTU2YzI1YiwgMHhmMzQ4YjUzOCksIG5ldyBXb3JkNjQoMHg1OWYxMTFmMSwgMHhiNjA1ZDAxOSksCiAgICBuZXcgV29yZDY0KDB4OTIzZjgyYTQsIDB4YWYxOTRmOWIpLCBuZXcgV29yZDY0KDB4YWIxYzVlZDUsIDB4ZGE2ZDgxMTgpLAogICAgbmV3IFdvcmQ2NCgweGQ4MDdhYTk4LCAweGEzMDMwMjQyKSwgbmV3IFdvcmQ2NCgweDEyODM1YjAxLCAweDQ1NzA2ZmJlKSwKICAgIG5ldyBXb3JkNjQoMHgyNDMxODViZSwgMHg0ZWU0YjI4YyksIG5ldyBXb3JkNjQoMHg1NTBjN2RjMywgMHhkNWZmYjRlMiksCiAgICBuZXcgV29yZDY0KDB4NzJiZTVkNzQsIDB4ZjI3Yjg5NmYpLCBuZXcgV29yZDY0KDB4ODBkZWIxZmUsIDB4M2IxNjk2YjEpLAogICAgbmV3IFdvcmQ2NCgweDliZGMwNmE3LCAweDI1YzcxMjM1KSwgbmV3IFdvcmQ2NCgweGMxOWJmMTc0LCAweGNmNjkyNjk0KSwKICAgIG5ldyBXb3JkNjQoMHhlNDliNjljMSwgMHg5ZWYxNGFkMiksIG5ldyBXb3JkNjQoMHhlZmJlNDc4NiwgMHgzODRmMjVlMyksCiAgICBuZXcgV29yZDY0KDB4MGZjMTlkYzYsIDB4OGI4Y2Q1YjUpLCBuZXcgV29yZDY0KDB4MjQwY2ExY2MsIDB4NzdhYzljNjUpLAogICAgbmV3IFdvcmQ2NCgweDJkZTkyYzZmLCAweDU5MmIwMjc1KSwgbmV3IFdvcmQ2NCgweDRhNzQ4NGFhLCAweDZlYTZlNDgzKSwKICAgIG5ldyBXb3JkNjQoMHg1Y2IwYTlkYywgMHhiZDQxZmJkNCksIG5ldyBXb3JkNjQoMHg3NmY5ODhkYSwgMHg4MzExNTNiNSksCiAgICBuZXcgV29yZDY0KDB4OTgzZTUxNTIsIDB4ZWU2NmRmYWIpLCBuZXcgV29yZDY0KDB4YTgzMWM2NmQsIDB4MmRiNDMyMTApLAogICAgbmV3IFdvcmQ2NCgweGIwMDMyN2M4LCAweDk4ZmIyMTNmKSwgbmV3IFdvcmQ2NCgweGJmNTk3ZmM3LCAweGJlZWYwZWU0KSwKICAgIG5ldyBXb3JkNjQoMHhjNmUwMGJmMywgMHgzZGE4OGZjMiksIG5ldyBXb3JkNjQoMHhkNWE3OTE0NywgMHg5MzBhYTcyNSksCiAgICBuZXcgV29yZDY0KDB4MDZjYTYzNTEsIDB4ZTAwMzgyNmYpLCBuZXcgV29yZDY0KDB4MTQyOTI5NjcsIDB4MGEwZTZlNzApLAogICAgbmV3IFdvcmQ2NCgweDI3YjcwYTg1LCAweDQ2ZDIyZmZjKSwgbmV3IFdvcmQ2NCgweDJlMWIyMTM4LCAweDVjMjZjOTI2KSwKICAgIG5ldyBXb3JkNjQoMHg0ZDJjNmRmYywgMHg1YWM0MmFlZCksIG5ldyBXb3JkNjQoMHg1MzM4MGQxMywgMHg5ZDk1YjNkZiksCiAgICBuZXcgV29yZDY0KDB4NjUwYTczNTQsIDB4OGJhZjYzZGUpLCBuZXcgV29yZDY0KDB4NzY2YTBhYmIsIDB4M2M3N2IyYTgpLAogICAgbmV3IFdvcmQ2NCgweDgxYzJjOTJlLCAweDQ3ZWRhZWU2KSwgbmV3IFdvcmQ2NCgweDkyNzIyYzg1LCAweDE0ODIzNTNiKSwKICAgIG5ldyBXb3JkNjQoMHhhMmJmZThhMSwgMHg0Y2YxMDM2NCksIG5ldyBXb3JkNjQoMHhhODFhNjY0YiwgMHhiYzQyMzAwMSksCiAgICBuZXcgV29yZDY0KDB4YzI0YjhiNzAsIDB4ZDBmODk3OTEpLCBuZXcgV29yZDY0KDB4Yzc2YzUxYTMsIDB4MDY1NGJlMzApLAogICAgbmV3IFdvcmQ2NCgweGQxOTJlODE5LCAweGQ2ZWY1MjE4KSwgbmV3IFdvcmQ2NCgweGQ2OTkwNjI0LCAweDU1NjVhOTEwKSwKICAgIG5ldyBXb3JkNjQoMHhmNDBlMzU4NSwgMHg1NzcxMjAyYSksIG5ldyBXb3JkNjQoMHgxMDZhYTA3MCwgMHgzMmJiZDFiOCksCiAgICBuZXcgV29yZDY0KDB4MTlhNGMxMTYsIDB4YjhkMmQwYzgpLCBuZXcgV29yZDY0KDB4MWUzNzZjMDgsIDB4NTE0MWFiNTMpLAogICAgbmV3IFdvcmQ2NCgweDI3NDg3NzRjLCAweGRmOGVlYjk5KSwgbmV3IFdvcmQ2NCgweDM0YjBiY2I1LCAweGUxOWI0OGE4KSwKICAgIG5ldyBXb3JkNjQoMHgzOTFjMGNiMywgMHhjNWM5NWE2MyksIG5ldyBXb3JkNjQoMHg0ZWQ4YWE0YSwgMHhlMzQxOGFjYiksCiAgICBuZXcgV29yZDY0KDB4NWI5Y2NhNGYsIDB4Nzc2M2UzNzMpLCBuZXcgV29yZDY0KDB4NjgyZTZmZjMsIDB4ZDZiMmI4YTMpLAogICAgbmV3IFdvcmQ2NCgweDc0OGY4MmVlLCAweDVkZWZiMmZjKSwgbmV3IFdvcmQ2NCgweDc4YTU2MzZmLCAweDQzMTcyZjYwKSwKICAgIG5ldyBXb3JkNjQoMHg4NGM4NzgxNCwgMHhhMWYwYWI3MiksIG5ldyBXb3JkNjQoMHg4Y2M3MDIwOCwgMHgxYTY0MzllYyksCiAgICBuZXcgV29yZDY0KDB4OTBiZWZmZmEsIDB4MjM2MzFlMjgpLCBuZXcgV29yZDY0KDB4YTQ1MDZjZWIsIDB4ZGU4MmJkZTkpLAogICAgbmV3IFdvcmQ2NCgweGJlZjlhM2Y3LCAweGIyYzY3OTE1KSwgbmV3IFdvcmQ2NCgweGM2NzE3OGYyLCAweGUzNzI1MzJiKSwKICAgIG5ldyBXb3JkNjQoMHhjYTI3M2VjZSwgMHhlYTI2NjE5YyksIG5ldyBXb3JkNjQoMHhkMTg2YjhjNywgMHgyMWMwYzIwNyksCiAgICBuZXcgV29yZDY0KDB4ZWFkYTdkZDYsIDB4Y2RlMGViMWUpLCBuZXcgV29yZDY0KDB4ZjU3ZDRmN2YsIDB4ZWU2ZWQxNzgpLAogICAgbmV3IFdvcmQ2NCgweDA2ZjA2N2FhLCAweDcyMTc2ZmJhKSwgbmV3IFdvcmQ2NCgweDBhNjM3ZGM1LCAweGEyYzg5OGE2KSwKICAgIG5ldyBXb3JkNjQoMHgxMTNmOTgwNCwgMHhiZWY5MGRhZSksIG5ldyBXb3JkNjQoMHgxYjcxMGIzNSwgMHgxMzFjNDcxYiksCiAgICBuZXcgV29yZDY0KDB4MjhkYjc3ZjUsIDB4MjMwNDdkODQpLCBuZXcgV29yZDY0KDB4MzJjYWFiN2IsIDB4NDBjNzI0OTMpLAogICAgbmV3IFdvcmQ2NCgweDNjOWViZTBhLCAweDE1YzliZWJjKSwgbmV3IFdvcmQ2NCgweDQzMWQ2N2M0LCAweDljMTAwZDRjKSwKICAgIG5ldyBXb3JkNjQoMHg0Y2M1ZDRiZSwgMHhjYjNlNDJiNiksIG5ldyBXb3JkNjQoMHg1OTdmMjk5YywgMHhmYzY1N2UyYSksCiAgICBuZXcgV29yZDY0KDB4NWZjYjZmYWIsIDB4M2FkNmZhZWMpLCBuZXcgV29yZDY0KDB4NmM0NDE5OGMsIDB4NGE0NzU4MTcpXTsKCiAgZnVuY3Rpb24gaGFzaChkYXRhLCBvZmZzZXQsIGxlbmd0aCwgbW9kZTM4NCkgewogICAgbW9kZTM4NCA9ICEhbW9kZTM4NDsKICAgIC8vIGluaXRpYWwgaGFzaCB2YWx1ZXMKICAgIHZhciBoMCwgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgaDc7CiAgICBpZiAoIW1vZGUzODQpIHsKICAgICAgaDAgPSBuZXcgV29yZDY0KDB4NmEwOWU2NjcsIDB4ZjNiY2M5MDgpOwogICAgICBoMSA9IG5ldyBXb3JkNjQoMHhiYjY3YWU4NSwgMHg4NGNhYTczYik7CiAgICAgIGgyID0gbmV3IFdvcmQ2NCgweDNjNmVmMzcyLCAweGZlOTRmODJiKTsKICAgICAgaDMgPSBuZXcgV29yZDY0KDB4YTU0ZmY1M2EsIDB4NWYxZDM2ZjEpOwogICAgICBoNCA9IG5ldyBXb3JkNjQoMHg1MTBlNTI3ZiwgMHhhZGU2ODJkMSk7CiAgICAgIGg1ID0gbmV3IFdvcmQ2NCgweDliMDU2ODhjLCAweDJiM2U2YzFmKTsKICAgICAgaDYgPSBuZXcgV29yZDY0KDB4MWY4M2Q5YWIsIDB4ZmI0MWJkNmIpOwogICAgICBoNyA9IG5ldyBXb3JkNjQoMHg1YmUwY2QxOSwgMHgxMzdlMjE3OSk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgLy8gU0hBMzg0IGlzIGV4YWN0bHkgdGhlIHNhbWUKICAgICAgLy8gZXhjZXB0IHdpdGggZGlmZmVyZW50IHN0YXJ0aW5nIHZhbHVlcyBhbmQgYSB0cmltbWVkIHJlc3VsdAogICAgICBoMCA9IG5ldyBXb3JkNjQoMHhjYmJiOWQ1ZCwgMHhjMTA1OWVkOCk7CiAgICAgIGgxID0gbmV3IFdvcmQ2NCgweDYyOWEyOTJhLCAweDM2N2NkNTA3KTsKICAgICAgaDIgPSBuZXcgV29yZDY0KDB4OTE1OTAxNWEsIDB4MzA3MGRkMTcpOwogICAgICBoMyA9IG5ldyBXb3JkNjQoMHgxNTJmZWNkOCwgMHhmNzBlNTkzOSk7CiAgICAgIGg0ID0gbmV3IFdvcmQ2NCgweDY3MzMyNjY3LCAweGZmYzAwYjMxKTsKICAgICAgaDUgPSBuZXcgV29yZDY0KDB4OGViNDRhODcsIDB4Njg1ODE1MTEpOwogICAgICBoNiA9IG5ldyBXb3JkNjQoMHhkYjBjMmUwZCwgMHg2NGY5OGZhNyk7CiAgICAgIGg3ID0gbmV3IFdvcmQ2NCgweDQ3YjU0ODFkLCAweGJlZmE0ZmE0KTsKICAgIH0KCiAgICAvLyBwcmUtcHJvY2Vzc2luZwogICAgdmFyIHBhZGRlZExlbmd0aCA9IE1hdGguY2VpbCgobGVuZ3RoICsgMTcpIC8gMTI4KSAqIDEyODsKICAgIHZhciBwYWRkZWQgPSBuZXcgVWludDhBcnJheShwYWRkZWRMZW5ndGgpOwogICAgdmFyIGksIGosIG47CiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgcGFkZGVkW2ldID0gZGF0YVtvZmZzZXQrK107CiAgICB9CiAgICBwYWRkZWRbaSsrXSA9IDB4ODA7CiAgICBuID0gcGFkZGVkTGVuZ3RoIC0gMTY7CiAgICB3aGlsZSAoaSA8IG4pIHsKICAgICAgcGFkZGVkW2krK10gPSAwOwogICAgfQogICAgcGFkZGVkW2krK10gPSAwOwogICAgcGFkZGVkW2krK10gPSAwOwogICAgcGFkZGVkW2krK10gPSAwOwogICAgcGFkZGVkW2krK10gPSAwOwogICAgcGFkZGVkW2krK10gPSAwOwogICAgcGFkZGVkW2krK10gPSAwOwogICAgcGFkZGVkW2krK10gPSAwOwogICAgcGFkZGVkW2krK10gPSAwOwogICAgcGFkZGVkW2krK10gPSAwOwogICAgcGFkZGVkW2krK10gPSAwOwogICAgcGFkZGVkW2krK10gPSAwOwogICAgcGFkZGVkW2krK10gPSAobGVuZ3RoID4+PiAyOSkgJiAweEZGOwogICAgcGFkZGVkW2krK10gPSAobGVuZ3RoID4+IDIxKSAmIDB4RkY7CiAgICBwYWRkZWRbaSsrXSA9IChsZW5ndGggPj4gMTMpICYgMHhGRjsKICAgIHBhZGRlZFtpKytdID0gKGxlbmd0aCA+PiA1KSAmIDB4RkY7CiAgICBwYWRkZWRbaSsrXSA9IChsZW5ndGggPDwgMykgJiAweEZGOwoKICAgIHZhciB3ID0gbmV3IEFycmF5KDgwKTsKICAgIGZvciAoaSA9IDA7IGkgPCA4MDsgaSsrKSB7CiAgICAgIHdbaV0gPSBuZXcgV29yZDY0KDAsIDApOwogICAgfQogICAgdmFyIGEgPSBuZXcgV29yZDY0KDAsIDApLCBiID0gbmV3IFdvcmQ2NCgwLCAwKSwgYyA9IG5ldyBXb3JkNjQoMCwgMCk7CiAgICB2YXIgZCA9IG5ldyBXb3JkNjQoMCwgMCksIGUgPSBuZXcgV29yZDY0KDAsIDApLCBmID0gbmV3IFdvcmQ2NCgwLCAwKTsKICAgIHZhciBnID0gbmV3IFdvcmQ2NCgwLCAwKSwgaCA9IG5ldyBXb3JkNjQoMCwgMCk7CiAgICB2YXIgdDEgPSBuZXcgV29yZDY0KDAsIDApLCB0MiA9IG5ldyBXb3JkNjQoMCwgMCk7CiAgICB2YXIgdG1wMSA9IG5ldyBXb3JkNjQoMCwgMCksIHRtcDIgPSBuZXcgV29yZDY0KDAsIDApLCB0bXAzOwoKICAgIC8vIGZvciBlYWNoIDEwMjQgYml0IGJsb2NrCiAgICBmb3IgKGkgPSAwOyBpIDwgcGFkZGVkTGVuZ3RoOykgewogICAgICBmb3IgKGogPSAwOyBqIDwgMTY7ICsraikgewogICAgICAgIHdbal0uaGlnaCA9IChwYWRkZWRbaV0gPDwgMjQpIHwgKHBhZGRlZFtpICsgMV0gPDwgMTYpIHwKICAgICAgICAgICAgICAgICAgICAocGFkZGVkW2kgKyAyXSA8PCA4KSB8IChwYWRkZWRbaSArIDNdKTsKICAgICAgICB3W2pdLmxvdyA9IChwYWRkZWRbaSArIDRdKSA8PCAyNCB8IChwYWRkZWRbaSArIDVdKSA8PCAxNiB8CiAgICAgICAgICAgICAgICAgICAocGFkZGVkW2kgKyA2XSkgPDwgOCB8IChwYWRkZWRbaSArIDddKTsKICAgICAgICBpICs9IDg7CiAgICAgIH0KICAgICAgZm9yIChqID0gMTY7IGogPCA4MDsgKytqKSB7CiAgICAgICAgdG1wMyA9IHdbal07CiAgICAgICAgbGl0dGxlU2lnbWFQcmltZSh0bXAzLCB3W2ogLSAyXSwgdG1wMik7CiAgICAgICAgdG1wMy5hZGQod1tqIC0gN10pOwogICAgICAgIGxpdHRsZVNpZ21hKHRtcDEsIHdbaiAtIDE1XSwgdG1wMik7CiAgICAgICAgdG1wMy5hZGQodG1wMSk7CiAgICAgICAgdG1wMy5hZGQod1tqIC0gMTZdKTsKICAgICAgfQoKICAgICAgYS5hc3NpZ24oaDApOyBiLmFzc2lnbihoMSk7IGMuYXNzaWduKGgyKTsgZC5hc3NpZ24oaDMpOwogICAgICBlLmFzc2lnbihoNCk7IGYuYXNzaWduKGg1KTsgZy5hc3NpZ24oaDYpOyBoLmFzc2lnbihoNyk7CiAgICAgIGZvciAoaiA9IDA7IGogPCA4MDsgKytqKSB7CiAgICAgICAgdDEuYXNzaWduKGgpOwogICAgICAgIHNpZ21hUHJpbWUodG1wMSwgZSwgdG1wMik7CiAgICAgICAgdDEuYWRkKHRtcDEpOwogICAgICAgIGNoKHRtcDEsIGUsIGYsIGcsIHRtcDIpOwogICAgICAgIHQxLmFkZCh0bXAxKTsKICAgICAgICB0MS5hZGQoa1tqXSk7CiAgICAgICAgdDEuYWRkKHdbal0pOwoKICAgICAgICBzaWdtYSh0MiwgYSwgdG1wMik7CiAgICAgICAgbWFqKHRtcDEsIGEsIGIsIGMsIHRtcDIpOwogICAgICAgIHQyLmFkZCh0bXAxKTsKCiAgICAgICAgdG1wMyA9IGg7CiAgICAgICAgaCA9IGc7CiAgICAgICAgZyA9IGY7CiAgICAgICAgZiA9IGU7CiAgICAgICAgZC5hZGQodDEpOwogICAgICAgIGUgPSBkOwogICAgICAgIGQgPSBjOwogICAgICAgIGMgPSBiOwogICAgICAgIGIgPSBhOwogICAgICAgIHRtcDMuYXNzaWduKHQxKTsKICAgICAgICB0bXAzLmFkZCh0Mik7CiAgICAgICAgYSA9IHRtcDM7CiAgICAgIH0KICAgICAgaDAuYWRkKGEpOwogICAgICBoMS5hZGQoYik7CiAgICAgIGgyLmFkZChjKTsKICAgICAgaDMuYWRkKGQpOwogICAgICBoNC5hZGQoZSk7CiAgICAgIGg1LmFkZChmKTsKICAgICAgaDYuYWRkKGcpOwogICAgICBoNy5hZGQoaCk7CiAgICB9CgogICAgdmFyIHJlc3VsdDsKICAgIGlmICghbW9kZTM4NCkgewogICAgICByZXN1bHQgPSBuZXcgVWludDhBcnJheSg2NCk7CiAgICAgIGgwLmNvcHlUbyhyZXN1bHQsMCk7CiAgICAgIGgxLmNvcHlUbyhyZXN1bHQsOCk7CiAgICAgIGgyLmNvcHlUbyhyZXN1bHQsMTYpOwogICAgICBoMy5jb3B5VG8ocmVzdWx0LDI0KTsKICAgICAgaDQuY29weVRvKHJlc3VsdCwzMik7CiAgICAgIGg1LmNvcHlUbyhyZXN1bHQsNDApOwogICAgICBoNi5jb3B5VG8ocmVzdWx0LDQ4KTsKICAgICAgaDcuY29weVRvKHJlc3VsdCw1Nik7CiAgICB9CiAgICBlbHNlIHsKICAgICAgcmVzdWx0ID0gbmV3IFVpbnQ4QXJyYXkoNDgpOwogICAgICBoMC5jb3B5VG8ocmVzdWx0LDApOwogICAgICBoMS5jb3B5VG8ocmVzdWx0LDgpOwogICAgICBoMi5jb3B5VG8ocmVzdWx0LDE2KTsKICAgICAgaDMuY29weVRvKHJlc3VsdCwyNCk7CiAgICAgIGg0LmNvcHlUbyhyZXN1bHQsMzIpOwogICAgICBoNS5jb3B5VG8ocmVzdWx0LDQwKTsKICAgIH0KICAgIHJldHVybiByZXN1bHQ7CiAgfQoKICByZXR1cm4gaGFzaDsKfSkoKTsKdmFyIGNhbGN1bGF0ZVNIQTM4NCA9IChmdW5jdGlvbiBjYWxjdWxhdGVTSEEzODRDbG9zdXJlKCkgewogIGZ1bmN0aW9uIGhhc2goZGF0YSwgb2Zmc2V0LCBsZW5ndGgpIHsKICAgIHJldHVybiBjYWxjdWxhdGVTSEE1MTIoZGF0YSwgb2Zmc2V0LCBsZW5ndGgsIHRydWUpOwogIH0KCiAgcmV0dXJuIGhhc2g7Cn0pKCk7CnZhciBOdWxsQ2lwaGVyID0gKGZ1bmN0aW9uIE51bGxDaXBoZXJDbG9zdXJlKCkgewogIGZ1bmN0aW9uIE51bGxDaXBoZXIoKSB7CiAgfQoKICBOdWxsQ2lwaGVyLnByb3RvdHlwZSA9IHsKICAgIGRlY3J5cHRCbG9jazogZnVuY3Rpb24gTnVsbENpcGhlcl9kZWNyeXB0QmxvY2soZGF0YSkgewogICAgICByZXR1cm4gZGF0YTsKICAgIH0KICB9OwoKICByZXR1cm4gTnVsbENpcGhlcjsKfSkoKTsKCnZhciBBRVMxMjhDaXBoZXIgPSAoZnVuY3Rpb24gQUVTMTI4Q2lwaGVyQ2xvc3VyZSgpIHsKICB2YXIgcmNvbiA9IG5ldyBVaW50OEFycmF5KFsKICAgIDB4OGQsIDB4MDEsIDB4MDIsIDB4MDQsIDB4MDgsIDB4MTAsIDB4MjAsIDB4NDAsIDB4ODAsIDB4MWIsIDB4MzYsIDB4NmMsCiAgICAweGQ4LCAweGFiLCAweDRkLCAweDlhLCAweDJmLCAweDVlLCAweGJjLCAweDYzLCAweGM2LCAweDk3LCAweDM1LCAweDZhLAogICAgMHhkNCwgMHhiMywgMHg3ZCwgMHhmYSwgMHhlZiwgMHhjNSwgMHg5MSwgMHgzOSwgMHg3MiwgMHhlNCwgMHhkMywgMHhiZCwKICAgIDB4NjEsIDB4YzIsIDB4OWYsIDB4MjUsIDB4NGEsIDB4OTQsIDB4MzMsIDB4NjYsIDB4Y2MsIDB4ODMsIDB4MWQsIDB4M2EsCiAgICAweDc0LCAweGU4LCAweGNiLCAweDhkLCAweDAxLCAweDAyLCAweDA0LCAweDA4LCAweDEwLCAweDIwLCAweDQwLCAweDgwLAogICAgMHgxYiwgMHgzNiwgMHg2YywgMHhkOCwgMHhhYiwgMHg0ZCwgMHg5YSwgMHgyZiwgMHg1ZSwgMHhiYywgMHg2MywgMHhjNiwKICAgIDB4OTcsIDB4MzUsIDB4NmEsIDB4ZDQsIDB4YjMsIDB4N2QsIDB4ZmEsIDB4ZWYsIDB4YzUsIDB4OTEsIDB4MzksIDB4NzIsCiAgICAweGU0LCAweGQzLCAweGJkLCAweDYxLCAweGMyLCAweDlmLCAweDI1LCAweDRhLCAweDk0LCAweDMzLCAweDY2LCAweGNjLAogICAgMHg4MywgMHgxZCwgMHgzYSwgMHg3NCwgMHhlOCwgMHhjYiwgMHg4ZCwgMHgwMSwgMHgwMiwgMHgwNCwgMHgwOCwgMHgxMCwKICAgIDB4MjAsIDB4NDAsIDB4ODAsIDB4MWIsIDB4MzYsIDB4NmMsIDB4ZDgsIDB4YWIsIDB4NGQsIDB4OWEsIDB4MmYsIDB4NWUsCiAgICAweGJjLCAweDYzLCAweGM2LCAweDk3LCAweDM1LCAweDZhLCAweGQ0LCAweGIzLCAweDdkLCAweGZhLCAweGVmLCAweGM1LAogICAgMHg5MSwgMHgzOSwgMHg3MiwgMHhlNCwgMHhkMywgMHhiZCwgMHg2MSwgMHhjMiwgMHg5ZiwgMHgyNSwgMHg0YSwgMHg5NCwKICAgIDB4MzMsIDB4NjYsIDB4Y2MsIDB4ODMsIDB4MWQsIDB4M2EsIDB4NzQsIDB4ZTgsIDB4Y2IsIDB4OGQsIDB4MDEsIDB4MDIsCiAgICAweDA0LCAweDA4LCAweDEwLCAweDIwLCAweDQwLCAweDgwLCAweDFiLCAweDM2LCAweDZjLCAweGQ4LCAweGFiLCAweDRkLAogICAgMHg5YSwgMHgyZiwgMHg1ZSwgMHhiYywgMHg2MywgMHhjNiwgMHg5NywgMHgzNSwgMHg2YSwgMHhkNCwgMHhiMywgMHg3ZCwKICAgIDB4ZmEsIDB4ZWYsIDB4YzUsIDB4OTEsIDB4MzksIDB4NzIsIDB4ZTQsIDB4ZDMsIDB4YmQsIDB4NjEsIDB4YzIsIDB4OWYsCiAgICAweDI1LCAweDRhLCAweDk0LCAweDMzLCAweDY2LCAweGNjLCAweDgzLCAweDFkLCAweDNhLCAweDc0LCAweGU4LCAweGNiLAogICAgMHg4ZCwgMHgwMSwgMHgwMiwgMHgwNCwgMHgwOCwgMHgxMCwgMHgyMCwgMHg0MCwgMHg4MCwgMHgxYiwgMHgzNiwgMHg2YywKICAgIDB4ZDgsIDB4YWIsIDB4NGQsIDB4OWEsIDB4MmYsIDB4NWUsIDB4YmMsIDB4NjMsIDB4YzYsIDB4OTcsIDB4MzUsIDB4NmEsCiAgICAweGQ0LCAweGIzLCAweDdkLCAweGZhLCAweGVmLCAweGM1LCAweDkxLCAweDM5LCAweDcyLCAweGU0LCAweGQzLCAweGJkLAogICAgMHg2MSwgMHhjMiwgMHg5ZiwgMHgyNSwgMHg0YSwgMHg5NCwgMHgzMywgMHg2NiwgMHhjYywgMHg4MywgMHgxZCwgMHgzYSwKICAgIDB4NzQsIDB4ZTgsIDB4Y2IsIDB4OGRdKTsKCiAgdmFyIHMgPSBuZXcgVWludDhBcnJheShbCiAgICAweDYzLCAweDdjLCAweDc3LCAweDdiLCAweGYyLCAweDZiLCAweDZmLCAweGM1LCAweDMwLCAweDAxLCAweDY3LCAweDJiLAogICAgMHhmZSwgMHhkNywgMHhhYiwgMHg3NiwgMHhjYSwgMHg4MiwgMHhjOSwgMHg3ZCwgMHhmYSwgMHg1OSwgMHg0NywgMHhmMCwKICAgIDB4YWQsIDB4ZDQsIDB4YTIsIDB4YWYsIDB4OWMsIDB4YTQsIDB4NzIsIDB4YzAsIDB4YjcsIDB4ZmQsIDB4OTMsIDB4MjYsCiAgICAweDM2LCAweDNmLCAweGY3LCAweGNjLCAweDM0LCAweGE1LCAweGU1LCAweGYxLCAweDcxLCAweGQ4LCAweDMxLCAweDE1LAogICAgMHgwNCwgMHhjNywgMHgyMywgMHhjMywgMHgxOCwgMHg5NiwgMHgwNSwgMHg5YSwgMHgwNywgMHgxMiwgMHg4MCwgMHhlMiwKICAgIDB4ZWIsIDB4MjcsIDB4YjIsIDB4NzUsIDB4MDksIDB4ODMsIDB4MmMsIDB4MWEsIDB4MWIsIDB4NmUsIDB4NWEsIDB4YTAsCiAgICAweDUyLCAweDNiLCAweGQ2LCAweGIzLCAweDI5LCAweGUzLCAweDJmLCAweDg0LCAweDUzLCAweGQxLCAweDAwLCAweGVkLAogICAgMHgyMCwgMHhmYywgMHhiMSwgMHg1YiwgMHg2YSwgMHhjYiwgMHhiZSwgMHgzOSwgMHg0YSwgMHg0YywgMHg1OCwgMHhjZiwKICAgIDB4ZDAsIDB4ZWYsIDB4YWEsIDB4ZmIsIDB4NDMsIDB4NGQsIDB4MzMsIDB4ODUsIDB4NDUsIDB4ZjksIDB4MDIsIDB4N2YsCiAgICAweDUwLCAweDNjLCAweDlmLCAweGE4LCAweDUxLCAweGEzLCAweDQwLCAweDhmLCAweDkyLCAweDlkLCAweDM4LCAweGY1LAogICAgMHhiYywgMHhiNiwgMHhkYSwgMHgyMSwgMHgxMCwgMHhmZiwgMHhmMywgMHhkMiwgMHhjZCwgMHgwYywgMHgxMywgMHhlYywKICAgIDB4NWYsIDB4OTcsIDB4NDQsIDB4MTcsIDB4YzQsIDB4YTcsIDB4N2UsIDB4M2QsIDB4NjQsIDB4NWQsIDB4MTksIDB4NzMsCiAgICAweDYwLCAweDgxLCAweDRmLCAweGRjLCAweDIyLCAweDJhLCAweDkwLCAweDg4LCAweDQ2LCAweGVlLCAweGI4LCAweDE0LAogICAgMHhkZSwgMHg1ZSwgMHgwYiwgMHhkYiwgMHhlMCwgMHgzMiwgMHgzYSwgMHgwYSwgMHg0OSwgMHgwNiwgMHgyNCwgMHg1YywKICAgIDB4YzIsIDB4ZDMsIDB4YWMsIDB4NjIsIDB4OTEsIDB4OTUsIDB4ZTQsIDB4NzksIDB4ZTcsIDB4YzgsIDB4MzcsIDB4NmQsCiAgICAweDhkLCAweGQ1LCAweDRlLCAweGE5LCAweDZjLCAweDU2LCAweGY0LCAweGVhLCAweDY1LCAweDdhLCAweGFlLCAweDA4LAogICAgMHhiYSwgMHg3OCwgMHgyNSwgMHgyZSwgMHgxYywgMHhhNiwgMHhiNCwgMHhjNiwgMHhlOCwgMHhkZCwgMHg3NCwgMHgxZiwKICAgIDB4NGIsIDB4YmQsIDB4OGIsIDB4OGEsIDB4NzAsIDB4M2UsIDB4YjUsIDB4NjYsIDB4NDgsIDB4MDMsIDB4ZjYsIDB4MGUsCiAgICAweDYxLCAweDM1LCAweDU3LCAweGI5LCAweDg2LCAweGMxLCAweDFkLCAweDllLCAweGUxLCAweGY4LCAweDk4LCAweDExLAogICAgMHg2OSwgMHhkOSwgMHg4ZSwgMHg5NCwgMHg5YiwgMHgxZSwgMHg4NywgMHhlOSwgMHhjZSwgMHg1NSwgMHgyOCwgMHhkZiwKICAgIDB4OGMsIDB4YTEsIDB4ODksIDB4MGQsIDB4YmYsIDB4ZTYsIDB4NDIsIDB4NjgsIDB4NDEsIDB4OTksIDB4MmQsIDB4MGYsCiAgICAweGIwLCAweDU0LCAweGJiLCAweDE2XSk7CgogIHZhciBpbnZfcyA9IG5ldyBVaW50OEFycmF5KFsKICAgIDB4NTIsIDB4MDksIDB4NmEsIDB4ZDUsIDB4MzAsIDB4MzYsIDB4YTUsIDB4MzgsIDB4YmYsIDB4NDAsIDB4YTMsIDB4OWUsCiAgICAweDgxLCAweGYzLCAweGQ3LCAweGZiLCAweDdjLCAweGUzLCAweDM5LCAweDgyLCAweDliLCAweDJmLCAweGZmLCAweDg3LAogICAgMHgzNCwgMHg4ZSwgMHg0MywgMHg0NCwgMHhjNCwgMHhkZSwgMHhlOSwgMHhjYiwgMHg1NCwgMHg3YiwgMHg5NCwgMHgzMiwKICAgIDB4YTYsIDB4YzIsIDB4MjMsIDB4M2QsIDB4ZWUsIDB4NGMsIDB4OTUsIDB4MGIsIDB4NDIsIDB4ZmEsIDB4YzMsIDB4NGUsCiAgICAweDA4LCAweDJlLCAweGExLCAweDY2LCAweDI4LCAweGQ5LCAweDI0LCAweGIyLCAweDc2LCAweDViLCAweGEyLCAweDQ5LAogICAgMHg2ZCwgMHg4YiwgMHhkMSwgMHgyNSwgMHg3MiwgMHhmOCwgMHhmNiwgMHg2NCwgMHg4NiwgMHg2OCwgMHg5OCwgMHgxNiwKICAgIDB4ZDQsIDB4YTQsIDB4NWMsIDB4Y2MsIDB4NWQsIDB4NjUsIDB4YjYsIDB4OTIsIDB4NmMsIDB4NzAsIDB4NDgsIDB4NTAsCiAgICAweGZkLCAweGVkLCAweGI5LCAweGRhLCAweDVlLCAweDE1LCAweDQ2LCAweDU3LCAweGE3LCAweDhkLCAweDlkLCAweDg0LAogICAgMHg5MCwgMHhkOCwgMHhhYiwgMHgwMCwgMHg4YywgMHhiYywgMHhkMywgMHgwYSwgMHhmNywgMHhlNCwgMHg1OCwgMHgwNSwKICAgIDB4YjgsIDB4YjMsIDB4NDUsIDB4MDYsIDB4ZDAsIDB4MmMsIDB4MWUsIDB4OGYsIDB4Y2EsIDB4M2YsIDB4MGYsIDB4MDIsCiAgICAweGMxLCAweGFmLCAweGJkLCAweDAzLCAweDAxLCAweDEzLCAweDhhLCAweDZiLCAweDNhLCAweDkxLCAweDExLCAweDQxLAogICAgMHg0ZiwgMHg2NywgMHhkYywgMHhlYSwgMHg5NywgMHhmMiwgMHhjZiwgMHhjZSwgMHhmMCwgMHhiNCwgMHhlNiwgMHg3MywKICAgIDB4OTYsIDB4YWMsIDB4NzQsIDB4MjIsIDB4ZTcsIDB4YWQsIDB4MzUsIDB4ODUsIDB4ZTIsIDB4ZjksIDB4MzcsIDB4ZTgsCiAgICAweDFjLCAweDc1LCAweGRmLCAweDZlLCAweDQ3LCAweGYxLCAweDFhLCAweDcxLCAweDFkLCAweDI5LCAweGM1LCAweDg5LAogICAgMHg2ZiwgMHhiNywgMHg2MiwgMHgwZSwgMHhhYSwgMHgxOCwgMHhiZSwgMHgxYiwgMHhmYywgMHg1NiwgMHgzZSwgMHg0YiwKICAgIDB4YzYsIDB4ZDIsIDB4NzksIDB4MjAsIDB4OWEsIDB4ZGIsIDB4YzAsIDB4ZmUsIDB4NzgsIDB4Y2QsIDB4NWEsIDB4ZjQsCiAgICAweDFmLCAweGRkLCAweGE4LCAweDMzLCAweDg4LCAweDA3LCAweGM3LCAweDMxLCAweGIxLCAweDEyLCAweDEwLCAweDU5LAogICAgMHgyNywgMHg4MCwgMHhlYywgMHg1ZiwgMHg2MCwgMHg1MSwgMHg3ZiwgMHhhOSwgMHgxOSwgMHhiNSwgMHg0YSwgMHgwZCwKICAgIDB4MmQsIDB4ZTUsIDB4N2EsIDB4OWYsIDB4OTMsIDB4YzksIDB4OWMsIDB4ZWYsIDB4YTAsIDB4ZTAsIDB4M2IsIDB4NGQsCiAgICAweGFlLCAweDJhLCAweGY1LCAweGIwLCAweGM4LCAweGViLCAweGJiLCAweDNjLCAweDgzLCAweDUzLCAweDk5LCAweDYxLAogICAgMHgxNywgMHgyYiwgMHgwNCwgMHg3ZSwgMHhiYSwgMHg3NywgMHhkNiwgMHgyNiwgMHhlMSwgMHg2OSwgMHgxNCwgMHg2MywKICAgIDB4NTUsIDB4MjEsIDB4MGMsIDB4N2RdKTsKICB2YXIgbWl4Q29sID0gbmV3IFVpbnQ4QXJyYXkoMjU2KTsKICBmb3IgKHZhciBpID0gMDsgaSA8IDI1NjsgaSsrKSB7CiAgICBpZiAoaSA8IDEyOCkgewogICAgICBtaXhDb2xbaV0gPSBpIDw8IDE7CiAgICB9IGVsc2UgewogICAgICBtaXhDb2xbaV0gPSAoaSA8PCAxKSBeIDB4MWI7CiAgICB9CiAgfQogIHZhciBtaXggPSBuZXcgVWludDMyQXJyYXkoWwogICAgMHgwMDAwMDAwMCwgMHgwZTA5MGQwYiwgMHgxYzEyMWExNiwgMHgxMjFiMTcxZCwgMHgzODI0MzQyYywgMHgzNjJkMzkyNywKICAgIDB4MjQzNjJlM2EsIDB4MmEzZjIzMzEsIDB4NzA0ODY4NTgsIDB4N2U0MTY1NTMsIDB4NmM1YTcyNGUsIDB4NjI1MzdmNDUsCiAgICAweDQ4NmM1Yzc0LCAweDQ2NjU1MTdmLCAweDU0N2U0NjYyLCAweDVhNzc0YjY5LCAweGUwOTBkMGIwLCAweGVlOTlkZGJiLAogICAgMHhmYzgyY2FhNiwgMHhmMjhiYzdhZCwgMHhkOGI0ZTQ5YywgMHhkNmJkZTk5NywgMHhjNGE2ZmU4YSwgMHhjYWFmZjM4MSwKICAgIDB4OTBkOGI4ZTgsIDB4OWVkMWI1ZTMsIDB4OGNjYWEyZmUsIDB4ODJjM2FmZjUsIDB4YThmYzhjYzQsIDB4YTZmNTgxY2YsCiAgICAweGI0ZWU5NmQyLCAweGJhZTc5YmQ5LCAweGRiM2JiYjdiLCAweGQ1MzJiNjcwLCAweGM3MjlhMTZkLCAweGM5MjBhYzY2LAogICAgMHhlMzFmOGY1NywgMHhlZDE2ODI1YywgMHhmZjBkOTU0MSwgMHhmMTA0OTg0YSwgMHhhYjczZDMyMywgMHhhNTdhZGUyOCwKICAgIDB4Yjc2MWM5MzUsIDB4Yjk2OGM0M2UsIDB4OTM1N2U3MGYsIDB4OWQ1ZWVhMDQsIDB4OGY0NWZkMTksIDB4ODE0Y2YwMTIsCiAgICAweDNiYWI2YmNiLCAweDM1YTI2NmMwLCAweDI3Yjk3MWRkLCAweDI5YjA3Y2Q2LCAweDAzOGY1ZmU3LCAweDBkODY1MmVjLAogICAgMHgxZjlkNDVmMSwgMHgxMTk0NDhmYSwgMHg0YmUzMDM5MywgMHg0NWVhMGU5OCwgMHg1N2YxMTk4NSwgMHg1OWY4MTQ4ZSwKICAgIDB4NzNjNzM3YmYsIDB4N2RjZTNhYjQsIDB4NmZkNTJkYTksIDB4NjFkYzIwYTIsIDB4YWQ3NjZkZjYsIDB4YTM3ZjYwZmQsCiAgICAweGIxNjQ3N2UwLCAweGJmNmQ3YWViLCAweDk1NTI1OWRhLCAweDliNWI1NGQxLCAweDg5NDA0M2NjLCAweDg3NDk0ZWM3LAogICAgMHhkZDNlMDVhZSwgMHhkMzM3MDhhNSwgMHhjMTJjMWZiOCwgMHhjZjI1MTJiMywgMHhlNTFhMzE4MiwgMHhlYjEzM2M4OSwKICAgIDB4ZjkwODJiOTQsIDB4ZjcwMTI2OWYsIDB4NGRlNmJkNDYsIDB4NDNlZmIwNGQsIDB4NTFmNGE3NTAsIDB4NWZmZGFhNWIsCiAgICAweDc1YzI4OTZhLCAweDdiY2I4NDYxLCAweDY5ZDA5MzdjLCAweDY3ZDk5ZTc3LCAweDNkYWVkNTFlLCAweDMzYTdkODE1LAogICAgMHgyMWJjY2YwOCwgMHgyZmI1YzIwMywgMHgwNThhZTEzMiwgMHgwYjgzZWMzOSwgMHgxOTk4ZmIyNCwgMHgxNzkxZjYyZiwKICAgIDB4NzY0ZGQ2OGQsIDB4Nzg0NGRiODYsIDB4NmE1ZmNjOWIsIDB4NjQ1NmMxOTAsIDB4NGU2OWUyYTEsIDB4NDA2MGVmYWEsCiAgICAweDUyN2JmOGI3LCAweDVjNzJmNWJjLCAweDA2MDViZWQ1LCAweDA4MGNiM2RlLCAweDFhMTdhNGMzLCAweDE0MWVhOWM4LAogICAgMHgzZTIxOGFmOSwgMHgzMDI4ODdmMiwgMHgyMjMzOTBlZiwgMHgyYzNhOWRlNCwgMHg5NmRkMDYzZCwgMHg5OGQ0MGIzNiwKICAgIDB4OGFjZjFjMmIsIDB4ODRjNjExMjAsIDB4YWVmOTMyMTEsIDB4YTBmMDNmMWEsIDB4YjJlYjI4MDcsIDB4YmNlMjI1MGMsCiAgICAweGU2OTU2ZTY1LCAweGU4OWM2MzZlLCAweGZhODc3NDczLCAweGY0OGU3OTc4LCAweGRlYjE1YTQ5LCAweGQwYjg1NzQyLAogICAgMHhjMmEzNDA1ZiwgMHhjY2FhNGQ1NCwgMHg0MWVjZGFmNywgMHg0ZmU1ZDdmYywgMHg1ZGZlYzBlMSwgMHg1M2Y3Y2RlYSwKICAgIDB4NzljOGVlZGIsIDB4NzdjMWUzZDAsIDB4NjVkYWY0Y2QsIDB4NmJkM2Y5YzYsIDB4MzFhNGIyYWYsIDB4M2ZhZGJmYTQsCiAgICAweDJkYjZhOGI5LCAweDIzYmZhNWIyLCAweDA5ODA4NjgzLCAweDA3ODk4Yjg4LCAweDE1OTI5Yzk1LCAweDFiOWI5MTllLAogICAgMHhhMTdjMGE0NywgMHhhZjc1MDc0YywgMHhiZDZlMTA1MSwgMHhiMzY3MWQ1YSwgMHg5OTU4M2U2YiwgMHg5NzUxMzM2MCwKICAgIDB4ODU0YTI0N2QsIDB4OGI0MzI5NzYsIDB4ZDEzNDYyMWYsIDB4ZGYzZDZmMTQsIDB4Y2QyNjc4MDksIDB4YzMyZjc1MDIsCiAgICAweGU5MTA1NjMzLCAweGU3MTk1YjM4LCAweGY1MDI0YzI1LCAweGZiMGI0MTJlLCAweDlhZDc2MThjLCAweDk0ZGU2Yzg3LAogICAgMHg4NmM1N2I5YSwgMHg4OGNjNzY5MSwgMHhhMmYzNTVhMCwgMHhhY2ZhNThhYiwgMHhiZWUxNGZiNiwgMHhiMGU4NDJiZCwKICAgIDB4ZWE5ZjA5ZDQsIDB4ZTQ5NjA0ZGYsIDB4ZjY4ZDEzYzIsIDB4Zjg4NDFlYzksIDB4ZDJiYjNkZjgsIDB4ZGNiMjMwZjMsCiAgICAweGNlYTkyN2VlLCAweGMwYTAyYWU1LCAweDdhNDdiMTNjLCAweDc0NGViYzM3LCAweDY2NTVhYjJhLCAweDY4NWNhNjIxLAogICAgMHg0MjYzODUxMCwgMHg0YzZhODgxYiwgMHg1ZTcxOWYwNiwgMHg1MDc4OTIwZCwgMHgwYTBmZDk2NCwgMHgwNDA2ZDQ2ZiwKICAgIDB4MTYxZGMzNzIsIDB4MTgxNGNlNzksIDB4MzIyYmVkNDgsIDB4M2MyMmUwNDMsIDB4MmUzOWY3NWUsIDB4MjAzMGZhNTUsCiAgICAweGVjOWFiNzAxLCAweGUyOTNiYTBhLCAweGYwODhhZDE3LCAweGZlODFhMDFjLCAweGQ0YmU4MzJkLCAweGRhYjc4ZTI2LAogICAgMHhjOGFjOTkzYiwgMHhjNmE1OTQzMCwgMHg5Y2QyZGY1OSwgMHg5MmRiZDI1MiwgMHg4MGMwYzU0ZiwgMHg4ZWM5Yzg0NCwKICAgIDB4YTRmNmViNzUsIDB4YWFmZmU2N2UsIDB4YjhlNGYxNjMsIDB4YjZlZGZjNjgsIDB4MGMwYTY3YjEsIDB4MDIwMzZhYmEsCiAgICAweDEwMTg3ZGE3LCAweDFlMTE3MGFjLCAweDM0MmU1MzlkLCAweDNhMjc1ZTk2LCAweDI4M2M0OThiLCAweDI2MzU0NDgwLAogICAgMHg3YzQyMGZlOSwgMHg3MjRiMDJlMiwgMHg2MDUwMTVmZiwgMHg2ZTU5MThmNCwgMHg0NDY2M2JjNSwgMHg0YTZmMzZjZSwKICAgIDB4NTg3NDIxZDMsIDB4NTY3ZDJjZDgsIDB4MzdhMTBjN2EsIDB4MzlhODAxNzEsIDB4MmJiMzE2NmMsIDB4MjViYTFiNjcsCiAgICAweDBmODUzODU2LCAweDAxOGMzNTVkLCAweDEzOTcyMjQwLCAweDFkOWUyZjRiLCAweDQ3ZTk2NDIyLCAweDQ5ZTA2OTI5LAogICAgMHg1YmZiN2UzNCwgMHg1NWYyNzMzZiwgMHg3ZmNkNTAwZSwgMHg3MWM0NWQwNSwgMHg2M2RmNGExOCwgMHg2ZGQ2NDcxMywKICAgIDB4ZDczMWRjY2EsIDB4ZDkzOGQxYzEsIDB4Y2IyM2M2ZGMsIDB4YzUyYWNiZDcsIDB4ZWYxNWU4ZTYsIDB4ZTExY2U1ZWQsCiAgICAweGYzMDdmMmYwLCAweGZkMGVmZmZiLCAweGE3NzliNDkyLCAweGE5NzBiOTk5LCAweGJiNmJhZTg0LCAweGI1NjJhMzhmLAogICAgMHg5ZjVkODBiZSwgMHg5MTU0OGRiNSwgMHg4MzRmOWFhOCwgMHg4ZDQ2OTdhM10pOwoKICBmdW5jdGlvbiBleHBhbmRLZXkxMjgoY2lwaGVyS2V5KSB7CiAgICB2YXIgYiA9IDE3NiwgcmVzdWx0ID0gbmV3IFVpbnQ4QXJyYXkoYik7CiAgICByZXN1bHQuc2V0KGNpcGhlcktleSk7CiAgICBmb3IgKHZhciBqID0gMTYsIGkgPSAxOyBqIDwgYjsgKytpKSB7CiAgICAgIC8vIFJvdFdvcmQKICAgICAgdmFyIHQxID0gcmVzdWx0W2ogLSAzXSwgdDIgPSByZXN1bHRbaiAtIDJdLAogICAgICAgICAgdDMgPSByZXN1bHRbaiAtIDFdLCB0NCA9IHJlc3VsdFtqIC0gNF07CiAgICAgIC8vIFN1YldvcmQKICAgICAgdDEgPSBzW3QxXTsKICAgICAgdDIgPSBzW3QyXTsKICAgICAgdDMgPSBzW3QzXTsKICAgICAgdDQgPSBzW3Q0XTsKICAgICAgLy8gUmNvbgogICAgICB0MSA9IHQxIF4gcmNvbltpXTsKICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCA0OyArK24pIHsKICAgICAgICByZXN1bHRbal0gPSAodDEgXj0gcmVzdWx0W2ogLSAxNl0pOwogICAgICAgIGorKzsKICAgICAgICByZXN1bHRbal0gPSAodDIgXj0gcmVzdWx0W2ogLSAxNl0pOwogICAgICAgIGorKzsKICAgICAgICByZXN1bHRbal0gPSAodDMgXj0gcmVzdWx0W2ogLSAxNl0pOwogICAgICAgIGorKzsKICAgICAgICByZXN1bHRbal0gPSAodDQgXj0gcmVzdWx0W2ogLSAxNl0pOwogICAgICAgIGorKzsKICAgICAgfQogICAgfQogICAgcmV0dXJuIHJlc3VsdDsKICB9CgogIGZ1bmN0aW9uIGRlY3J5cHQxMjgoaW5wdXQsIGtleSkgewogICAgdmFyIHN0YXRlID0gbmV3IFVpbnQ4QXJyYXkoMTYpOwogICAgc3RhdGUuc2V0KGlucHV0KTsKICAgIHZhciBpLCBqLCBrOwogICAgdmFyIHQsIHUsIHY7CiAgICAvLyBBZGRSb3VuZEtleQogICAgZm9yIChqID0gMCwgayA9IDE2MDsgaiA8IDE2OyArK2osICsraykgewogICAgICBzdGF0ZVtqXSBePSBrZXlba107CiAgICB9CiAgICBmb3IgKGkgPSA5OyBpID49IDE7IC0taSkgewogICAgICAvLyBJbnZTaGlmdFJvd3MKICAgICAgdCA9IHN0YXRlWzEzXTsKICAgICAgc3RhdGVbMTNdID0gc3RhdGVbOV07CiAgICAgIHN0YXRlWzldID0gc3RhdGVbNV07CiAgICAgIHN0YXRlWzVdID0gc3RhdGVbMV07CiAgICAgIHN0YXRlWzFdID0gdDsKICAgICAgdCA9IHN0YXRlWzE0XTsKICAgICAgdSA9IHN0YXRlWzEwXTsKICAgICAgc3RhdGVbMTRdID0gc3RhdGVbNl07CiAgICAgIHN0YXRlWzEwXSA9IHN0YXRlWzJdOwogICAgICBzdGF0ZVs2XSA9IHQ7CiAgICAgIHN0YXRlWzJdID0gdTsKICAgICAgdCA9IHN0YXRlWzE1XTsKICAgICAgdSA9IHN0YXRlWzExXTsKICAgICAgdiA9IHN0YXRlWzddOwogICAgICBzdGF0ZVsxNV0gPSBzdGF0ZVszXTsKICAgICAgc3RhdGVbMTFdID0gdDsKICAgICAgc3RhdGVbN10gPSB1OwogICAgICBzdGF0ZVszXSA9IHY7CiAgICAgIC8vIEludlN1YkJ5dGVzCiAgICAgIGZvciAoaiA9IDA7IGogPCAxNjsgKytqKSB7CiAgICAgICAgc3RhdGVbal0gPSBpbnZfc1tzdGF0ZVtqXV07CiAgICAgIH0KICAgICAgLy8gQWRkUm91bmRLZXkKICAgICAgZm9yIChqID0gMCwgayA9IGkgKiAxNjsgaiA8IDE2OyArK2osICsraykgewogICAgICAgIHN0YXRlW2pdIF49IGtleVtrXTsKICAgICAgfQogICAgICAvLyBJbnZNaXhDb2x1bW5zCiAgICAgIGZvciAoaiA9IDA7IGogPCAxNjsgaiArPSA0KSB7CiAgICAgICAgdmFyIHMwID0gbWl4W3N0YXRlW2pdXSwgczEgPSBtaXhbc3RhdGVbaiArIDFdXSwKICAgICAgICAgIHMyID0gbWl4W3N0YXRlW2ogKyAyXV0sIHMzID0gbWl4W3N0YXRlW2ogKyAzXV07CiAgICAgICAgdCA9IChzMCBeIChzMSA+Pj4gOCkgXiAoczEgPDwgMjQpIF4gKHMyID4+PiAxNikgXiAoczIgPDwgMTYpIF4KICAgICAgICAgIChzMyA+Pj4gMjQpIF4gKHMzIDw8IDgpKTsKICAgICAgICBzdGF0ZVtqXSA9ICh0ID4+PiAyNCkgJiAweEZGOwogICAgICAgIHN0YXRlW2ogKyAxXSA9ICh0ID4+IDE2KSAmIDB4RkY7CiAgICAgICAgc3RhdGVbaiArIDJdID0gKHQgPj4gOCkgJiAweEZGOwogICAgICAgIHN0YXRlW2ogKyAzXSA9IHQgJiAweEZGOwogICAgICB9CiAgICB9CiAgICAvLyBJbnZTaGlmdFJvd3MKICAgIHQgPSBzdGF0ZVsxM107CiAgICBzdGF0ZVsxM10gPSBzdGF0ZVs5XTsKICAgIHN0YXRlWzldID0gc3RhdGVbNV07CiAgICBzdGF0ZVs1XSA9IHN0YXRlWzFdOwogICAgc3RhdGVbMV0gPSB0OwogICAgdCA9IHN0YXRlWzE0XTsKICAgIHUgPSBzdGF0ZVsxMF07CiAgICBzdGF0ZVsxNF0gPSBzdGF0ZVs2XTsKICAgIHN0YXRlWzEwXSA9IHN0YXRlWzJdOwogICAgc3RhdGVbNl0gPSB0OwogICAgc3RhdGVbMl0gPSB1OwogICAgdCA9IHN0YXRlWzE1XTsKICAgIHUgPSBzdGF0ZVsxMV07CiAgICB2ID0gc3RhdGVbN107CiAgICBzdGF0ZVsxNV0gPSBzdGF0ZVszXTsKICAgIHN0YXRlWzExXSA9IHQ7CiAgICBzdGF0ZVs3XSA9IHU7CiAgICBzdGF0ZVszXSA9IHY7CiAgICBmb3IgKGogPSAwOyBqIDwgMTY7ICsraikgewogICAgICAvLyBJbnZTdWJCeXRlcwogICAgICBzdGF0ZVtqXSA9IGludl9zW3N0YXRlW2pdXTsKICAgICAgLy8gQWRkUm91bmRLZXkKICAgICAgc3RhdGVbal0gXj0ga2V5W2pdOwogICAgfQogICAgcmV0dXJuIHN0YXRlOwogIH0KCiAgZnVuY3Rpb24gZW5jcnlwdDEyOChpbnB1dCwga2V5KSB7CiAgICB2YXIgdCwgdSwgdiwgazsKICAgIHZhciBzdGF0ZSA9IG5ldyBVaW50OEFycmF5KDE2KTsKICAgIHN0YXRlLnNldChpbnB1dCk7CiAgICBmb3IgKGogPSAwOyBqIDwgMTY7ICsraikgewogICAgICAvLyBBZGRSb3VuZEtleQogICAgICBzdGF0ZVtqXSBePSBrZXlbal07CiAgICB9CgogICAgZm9yIChpID0gMTsgaSA8IDEwOyBpKyspIHsKICAgICAgLy9TdWJCeXRlcwogICAgICBmb3IgKGogPSAwOyBqIDwgMTY7ICsraikgewogICAgICAgIHN0YXRlW2pdID0gc1tzdGF0ZVtqXV07CiAgICAgIH0KICAgICAgLy9TaGlmdFJvd3MKICAgICAgdiA9IHN0YXRlWzFdOwogICAgICBzdGF0ZVsxXSA9IHN0YXRlWzVdOwogICAgICBzdGF0ZVs1XSA9IHN0YXRlWzldOwogICAgICBzdGF0ZVs5XSA9IHN0YXRlWzEzXTsKICAgICAgc3RhdGVbMTNdID0gdjsKICAgICAgdiA9IHN0YXRlWzJdOwogICAgICB1ID0gc3RhdGVbNl07CiAgICAgIHN0YXRlWzJdID0gc3RhdGVbMTBdOwogICAgICBzdGF0ZVs2XSA9IHN0YXRlWzE0XTsKICAgICAgc3RhdGVbMTBdID0gdjsKICAgICAgc3RhdGVbMTRdID0gdTsKICAgICAgdiA9IHN0YXRlWzNdOwogICAgICB1ID0gc3RhdGVbN107CiAgICAgIHQgPSBzdGF0ZVsxMV07CiAgICAgIHN0YXRlWzNdID0gc3RhdGVbMTVdOwogICAgICBzdGF0ZVs3XSA9IHY7CiAgICAgIHN0YXRlWzExXSA9IHU7CiAgICAgIHN0YXRlWzE1XSA9IHQ7CiAgICAgIC8vTWl4Q29sdW1ucwogICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDE2OyBqICs9IDQpIHsKICAgICAgICB2YXIgczAgPSBzdGF0ZVtqICsgMF0sIHMxID0gc3RhdGVbaiArIDFdOwogICAgICAgIHZhciBzMiA9IHN0YXRlW2ogKyAyXSwgczMgPSBzdGF0ZVtqICsgM107CiAgICAgICAgdCA9IHMwIF4gczEgXiBzMiBeIHMzOwogICAgICAgIHN0YXRlW2ogKyAwXSBePSB0IF4gbWl4Q29sW3MwIF4gczFdOwogICAgICAgIHN0YXRlW2ogKyAxXSBePSB0IF4gbWl4Q29sW3MxIF4gczJdOwogICAgICAgIHN0YXRlW2ogKyAyXSBePSB0IF4gbWl4Q29sW3MyIF4gczNdOwogICAgICAgIHN0YXRlW2ogKyAzXSBePSB0IF4gbWl4Q29sW3MzIF4gczBdOwogICAgICB9CiAgICAgIC8vQWRkUm91bmRLZXkKICAgICAgZm9yIChqID0gMCwgayA9IGkgKiAxNjsgaiA8IDE2OyArK2osICsraykgewogICAgICAgIHN0YXRlW2pdIF49IGtleVtrXTsKICAgICAgfQogICAgfQoKICAgIC8vU3ViQnl0ZXMKICAgIGZvciAoaiA9IDA7IGogPCAxNjsgKytqKSB7CiAgICAgIHN0YXRlW2pdID0gc1tzdGF0ZVtqXV07CiAgICB9CiAgICAvL1NoaWZ0Um93cwogICAgdiA9IHN0YXRlWzFdOwogICAgc3RhdGVbMV0gPSBzdGF0ZVs1XTsKICAgIHN0YXRlWzVdID0gc3RhdGVbOV07CiAgICBzdGF0ZVs5XSA9IHN0YXRlWzEzXTsKICAgIHN0YXRlWzEzXSA9IHY7CiAgICB2ID0gc3RhdGVbMl07CiAgICB1ID0gc3RhdGVbNl07CiAgICBzdGF0ZVsyXSA9IHN0YXRlWzEwXTsKICAgIHN0YXRlWzZdID0gc3RhdGVbMTRdOwogICAgc3RhdGVbMTBdID0gdjsKICAgIHN0YXRlWzE0XSA9IHU7CiAgICB2ID0gc3RhdGVbM107CiAgICB1ID0gc3RhdGVbN107CiAgICB0ID0gc3RhdGVbMTFdOwogICAgc3RhdGVbM10gPSBzdGF0ZVsxNV07CiAgICBzdGF0ZVs3XSA9IHY7CiAgICBzdGF0ZVsxMV0gPSB1OwogICAgc3RhdGVbMTVdID0gdDsKICAgIC8vQWRkUm91bmRLZXkKICAgIGZvciAoaiA9IDAsIGsgPSAxNjA7IGogPCAxNjsgKytqLCArK2spIHsKICAgICAgc3RhdGVbal0gXj0ga2V5W2tdOwogICAgfQogICAgcmV0dXJuIHN0YXRlOwogIH0KCiAgZnVuY3Rpb24gQUVTMTI4Q2lwaGVyKGtleSkgewogICAgdGhpcy5rZXkgPSBleHBhbmRLZXkxMjgoa2V5KTsKICAgIHRoaXMuYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkoMTYpOwogICAgdGhpcy5idWZmZXJQb3NpdGlvbiA9IDA7CiAgfQoKICBmdW5jdGlvbiBkZWNyeXB0QmxvY2syKGRhdGEsIGZpbmFsaXplKSB7CiAgICB2YXIgaSwgaiwgaWksIHNvdXJjZUxlbmd0aCA9IGRhdGEubGVuZ3RoLAogICAgICAgIGJ1ZmZlciA9IHRoaXMuYnVmZmVyLCBidWZmZXJMZW5ndGggPSB0aGlzLmJ1ZmZlclBvc2l0aW9uLAogICAgICAgIHJlc3VsdCA9IFtdLCBpdiA9IHRoaXMuaXY7CiAgICBmb3IgKGkgPSAwOyBpIDwgc291cmNlTGVuZ3RoOyArK2kpIHsKICAgICAgYnVmZmVyW2J1ZmZlckxlbmd0aF0gPSBkYXRhW2ldOwogICAgICArK2J1ZmZlckxlbmd0aDsKICAgICAgaWYgKGJ1ZmZlckxlbmd0aCA8IDE2KSB7CiAgICAgICAgY29udGludWU7CiAgICAgIH0KICAgICAgLy8gYnVmZmVyIGlzIGZ1bGwsIGRlY3J5cHRpbmcKICAgICAgdmFyIHBsYWluID0gZGVjcnlwdDEyOChidWZmZXIsIHRoaXMua2V5KTsKICAgICAgLy8geG9yLWluZyB0aGUgSVYgdmVjdG9yIHRvIGdldCBwbGFpbiB0ZXh0CiAgICAgIGZvciAoaiA9IDA7IGogPCAxNjsgKytqKSB7CiAgICAgICAgcGxhaW5bal0gXj0gaXZbal07CiAgICAgIH0KICAgICAgaXYgPSBidWZmZXI7CiAgICAgIHJlc3VsdC5wdXNoKHBsYWluKTsKICAgICAgYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkoMTYpOwogICAgICBidWZmZXJMZW5ndGggPSAwOwogICAgfQogICAgLy8gc2F2aW5nIGluY29tcGxldGUgYnVmZmVyCiAgICB0aGlzLmJ1ZmZlciA9IGJ1ZmZlcjsKICAgIHRoaXMuYnVmZmVyTGVuZ3RoID0gYnVmZmVyTGVuZ3RoOwogICAgdGhpcy5pdiA9IGl2OwogICAgaWYgKHJlc3VsdC5sZW5ndGggPT09IDApIHsKICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KFtdKTsKICAgIH0KICAgIC8vIGNvbWJpbmluZyBwbGFpbiB0ZXh0IGJsb2NrcyBpbnRvIG9uZQogICAgdmFyIG91dHB1dExlbmd0aCA9IDE2ICogcmVzdWx0Lmxlbmd0aDsKICAgIGlmIChmaW5hbGl6ZSkgewogICAgICAvLyB1bmRvIGEgcGFkZGluZyB0aGF0IGlzIGRlc2NyaWJlZCBpbiBSRkMgMjg5OAogICAgICB2YXIgbGFzdEJsb2NrID0gcmVzdWx0W3Jlc3VsdC5sZW5ndGggLSAxXTsKICAgICAgdmFyIHBzTGVuID0gbGFzdEJsb2NrWzE1XTsKICAgICAgaWYgKHBzTGVuIDw9IDE2KSB7CiAgICAgICAgZm9yIChpID0gMTUsIGlpID0gMTYgLSBwc0xlbjsgaSA+PSBpaTsgLS1pKSB7CiAgICAgICAgICBpZiAobGFzdEJsb2NrW2ldICE9PSBwc0xlbikgewogICAgICAgICAgICAvLyBJbnZhbGlkIHBhZGRpbmcsIGFzc3VtZSB0aGF0IHRoZSBibG9jayBoYXMgbm8gcGFkZGluZy4KICAgICAgICAgICAgcHNMZW4gPSAwOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgb3V0cHV0TGVuZ3RoIC09IHBzTGVuOwogICAgICAgIHJlc3VsdFtyZXN1bHQubGVuZ3RoIC0gMV0gPSBsYXN0QmxvY2suc3ViYXJyYXkoMCwgMTYgLSBwc0xlbik7CiAgICAgIH0KICAgIH0KICAgIHZhciBvdXRwdXQgPSBuZXcgVWludDhBcnJheShvdXRwdXRMZW5ndGgpOwogICAgZm9yIChpID0gMCwgaiA9IDAsIGlpID0gcmVzdWx0Lmxlbmd0aDsgaSA8IGlpOyArK2ksIGogKz0gMTYpIHsKICAgICAgb3V0cHV0LnNldChyZXN1bHRbaV0sIGopOwogICAgfQogICAgcmV0dXJuIG91dHB1dDsKICB9CgogIEFFUzEyOENpcGhlci5wcm90b3R5cGUgPSB7CiAgICBkZWNyeXB0QmxvY2s6IGZ1bmN0aW9uIEFFUzEyOENpcGhlcl9kZWNyeXB0QmxvY2soZGF0YSwgZmluYWxpemUpIHsKICAgICAgdmFyIGksIHNvdXJjZUxlbmd0aCA9IGRhdGEubGVuZ3RoOwogICAgICB2YXIgYnVmZmVyID0gdGhpcy5idWZmZXIsIGJ1ZmZlckxlbmd0aCA9IHRoaXMuYnVmZmVyUG9zaXRpb247CiAgICAgIC8vIHdhaXRpbmcgZm9yIElWIHZhbHVlcyAtLSB0aGV5IGFyZSBhdCB0aGUgc3RhcnQgb2YgdGhlIHN0cmVhbQogICAgICBmb3IgKGkgPSAwOyBidWZmZXJMZW5ndGggPCAxNiAmJiBpIDwgc291cmNlTGVuZ3RoOyArK2ksICsrYnVmZmVyTGVuZ3RoKSB7CiAgICAgICAgYnVmZmVyW2J1ZmZlckxlbmd0aF0gPSBkYXRhW2ldOwogICAgICB9CiAgICAgIGlmIChidWZmZXJMZW5ndGggPCAxNikgewogICAgICAgIC8vIG5lZWQgbW9yZSBkYXRhCiAgICAgICAgdGhpcy5idWZmZXJMZW5ndGggPSBidWZmZXJMZW5ndGg7CiAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KFtdKTsKICAgICAgfQogICAgICB0aGlzLml2ID0gYnVmZmVyOwogICAgICB0aGlzLmJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KDE2KTsKICAgICAgdGhpcy5idWZmZXJMZW5ndGggPSAwOwogICAgICAvLyBzdGFydGluZyBkZWNyeXB0aW9uCiAgICAgIHRoaXMuZGVjcnlwdEJsb2NrID0gZGVjcnlwdEJsb2NrMjsKICAgICAgcmV0dXJuIHRoaXMuZGVjcnlwdEJsb2NrKGRhdGEuc3ViYXJyYXkoMTYpLCBmaW5hbGl6ZSk7CiAgICB9LAogICAgZW5jcnlwdDogZnVuY3Rpb24gQUVTMTI4Q2lwaGVyX2VuY3J5cHQoZGF0YSwgaXYpIHsKICAgICAgdmFyIGksIGosIGlpLCBzb3VyY2VMZW5ndGggPSBkYXRhLmxlbmd0aCwKICAgICAgICAgIGJ1ZmZlciA9IHRoaXMuYnVmZmVyLCBidWZmZXJMZW5ndGggPSB0aGlzLmJ1ZmZlclBvc2l0aW9uLAogICAgICAgICAgcmVzdWx0ID0gW107CiAgICAgIGlmICghaXYpIHsKICAgICAgICBpdiA9IG5ldyBVaW50OEFycmF5KDE2KTsKICAgICAgfQogICAgICBmb3IgKGkgPSAwOyBpIDwgc291cmNlTGVuZ3RoOyArK2kpIHsKICAgICAgICBidWZmZXJbYnVmZmVyTGVuZ3RoXSA9IGRhdGFbaV07CiAgICAgICAgKytidWZmZXJMZW5ndGg7CiAgICAgICAgaWYgKGJ1ZmZlckxlbmd0aCA8IDE2KSB7CiAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgZm9yIChqID0gMDsgaiA8IDE2OyArK2opIHsKICAgICAgICAgIGJ1ZmZlcltqXSBePSBpdltqXTsKICAgICAgICB9CgogICAgICAgIC8vIGJ1ZmZlciBpcyBmdWxsLCBlbmNyeXB0aW5nCiAgICAgICAgdmFyIGNpcGhlciA9IGVuY3J5cHQxMjgoYnVmZmVyLCB0aGlzLmtleSk7CiAgICAgICAgaXYgPSBjaXBoZXI7CiAgICAgICAgcmVzdWx0LnB1c2goY2lwaGVyKTsKICAgICAgICBidWZmZXIgPSBuZXcgVWludDhBcnJheSgxNik7CiAgICAgICAgYnVmZmVyTGVuZ3RoID0gMDsKICAgICAgfQogICAgICAvLyBzYXZpbmcgaW5jb21wbGV0ZSBidWZmZXIKICAgICAgdGhpcy5idWZmZXIgPSBidWZmZXI7CiAgICAgIHRoaXMuYnVmZmVyTGVuZ3RoID0gYnVmZmVyTGVuZ3RoOwogICAgICB0aGlzLml2ID0gaXY7CiAgICAgIGlmIChyZXN1bHQubGVuZ3RoID09PSAwKSB7CiAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KFtdKTsKICAgICAgfQogICAgICAvLyBjb21iaW5pbmcgcGxhaW4gdGV4dCBibG9ja3MgaW50byBvbmUKICAgICAgdmFyIG91dHB1dExlbmd0aCA9IDE2ICogcmVzdWx0Lmxlbmd0aDsKICAgICAgdmFyIG91dHB1dCA9IG5ldyBVaW50OEFycmF5KG91dHB1dExlbmd0aCk7CiAgICAgIGZvciAoaSA9IDAsIGogPSAwLCBpaSA9IHJlc3VsdC5sZW5ndGg7IGkgPCBpaTsgKytpLCBqICs9IDE2KSB7CiAgICAgICAgb3V0cHV0LnNldChyZXN1bHRbaV0sIGopOwogICAgICB9CiAgICAgIHJldHVybiBvdXRwdXQ7CiAgICB9CiAgfTsKCiAgcmV0dXJuIEFFUzEyOENpcGhlcjsKfSkoKTsKCnZhciBBRVMyNTZDaXBoZXIgPSAoZnVuY3Rpb24gQUVTMjU2Q2lwaGVyQ2xvc3VyZSgpIHsKICB2YXIgcmNvbiA9IG5ldyBVaW50OEFycmF5KFsKICAgIDB4OGQsIDB4MDEsIDB4MDIsIDB4MDQsIDB4MDgsIDB4MTAsIDB4MjAsIDB4NDAsIDB4ODAsIDB4MWIsIDB4MzYsIDB4NmMsCiAgICAweGQ4LCAweGFiLCAweDRkLCAweDlhLCAweDJmLCAweDVlLCAweGJjLCAweDYzLCAweGM2LCAweDk3LCAweDM1LCAweDZhLAogICAgMHhkNCwgMHhiMywgMHg3ZCwgMHhmYSwgMHhlZiwgMHhjNSwgMHg5MSwgMHgzOSwgMHg3MiwgMHhlNCwgMHhkMywgMHhiZCwKICAgIDB4NjEsIDB4YzIsIDB4OWYsIDB4MjUsIDB4NGEsIDB4OTQsIDB4MzMsIDB4NjYsIDB4Y2MsIDB4ODMsIDB4MWQsIDB4M2EsCiAgICAweDc0LCAweGU4LCAweGNiLCAweDhkLCAweDAxLCAweDAyLCAweDA0LCAweDA4LCAweDEwLCAweDIwLCAweDQwLCAweDgwLAogICAgMHgxYiwgMHgzNiwgMHg2YywgMHhkOCwgMHhhYiwgMHg0ZCwgMHg5YSwgMHgyZiwgMHg1ZSwgMHhiYywgMHg2MywgMHhjNiwKICAgIDB4OTcsIDB4MzUsIDB4NmEsIDB4ZDQsIDB4YjMsIDB4N2QsIDB4ZmEsIDB4ZWYsIDB4YzUsIDB4OTEsIDB4MzksIDB4NzIsCiAgICAweGU0LCAweGQzLCAweGJkLCAweDYxLCAweGMyLCAweDlmLCAweDI1LCAweDRhLCAweDk0LCAweDMzLCAweDY2LCAweGNjLAogICAgMHg4MywgMHgxZCwgMHgzYSwgMHg3NCwgMHhlOCwgMHhjYiwgMHg4ZCwgMHgwMSwgMHgwMiwgMHgwNCwgMHgwOCwgMHgxMCwKICAgIDB4MjAsIDB4NDAsIDB4ODAsIDB4MWIsIDB4MzYsIDB4NmMsIDB4ZDgsIDB4YWIsIDB4NGQsIDB4OWEsIDB4MmYsIDB4NWUsCiAgICAweGJjLCAweDYzLCAweGM2LCAweDk3LCAweDM1LCAweDZhLCAweGQ0LCAweGIzLCAweDdkLCAweGZhLCAweGVmLCAweGM1LAogICAgMHg5MSwgMHgzOSwgMHg3MiwgMHhlNCwgMHhkMywgMHhiZCwgMHg2MSwgMHhjMiwgMHg5ZiwgMHgyNSwgMHg0YSwgMHg5NCwKICAgIDB4MzMsIDB4NjYsIDB4Y2MsIDB4ODMsIDB4MWQsIDB4M2EsIDB4NzQsIDB4ZTgsIDB4Y2IsIDB4OGQsIDB4MDEsIDB4MDIsCiAgICAweDA0LCAweDA4LCAweDEwLCAweDIwLCAweDQwLCAweDgwLCAweDFiLCAweDM2LCAweDZjLCAweGQ4LCAweGFiLCAweDRkLAogICAgMHg5YSwgMHgyZiwgMHg1ZSwgMHhiYywgMHg2MywgMHhjNiwgMHg5NywgMHgzNSwgMHg2YSwgMHhkNCwgMHhiMywgMHg3ZCwKICAgIDB4ZmEsIDB4ZWYsIDB4YzUsIDB4OTEsIDB4MzksIDB4NzIsIDB4ZTQsIDB4ZDMsIDB4YmQsIDB4NjEsIDB4YzIsIDB4OWYsCiAgICAweDI1LCAweDRhLCAweDk0LCAweDMzLCAweDY2LCAweGNjLCAweDgzLCAweDFkLCAweDNhLCAweDc0LCAweGU4LCAweGNiLAogICAgMHg4ZCwgMHgwMSwgMHgwMiwgMHgwNCwgMHgwOCwgMHgxMCwgMHgyMCwgMHg0MCwgMHg4MCwgMHgxYiwgMHgzNiwgMHg2YywKICAgIDB4ZDgsIDB4YWIsIDB4NGQsIDB4OWEsIDB4MmYsIDB4NWUsIDB4YmMsIDB4NjMsIDB4YzYsIDB4OTcsIDB4MzUsIDB4NmEsCiAgICAweGQ0LCAweGIzLCAweDdkLCAweGZhLCAweGVmLCAweGM1LCAweDkxLCAweDM5LCAweDcyLCAweGU0LCAweGQzLCAweGJkLAogICAgMHg2MSwgMHhjMiwgMHg5ZiwgMHgyNSwgMHg0YSwgMHg5NCwgMHgzMywgMHg2NiwgMHhjYywgMHg4MywgMHgxZCwgMHgzYSwKICAgIDB4NzQsIDB4ZTgsIDB4Y2IsIDB4OGRdKTsKCiAgdmFyIHMgPSBuZXcgVWludDhBcnJheShbCiAgICAweDYzLCAweDdjLCAweDc3LCAweDdiLCAweGYyLCAweDZiLCAweDZmLCAweGM1LCAweDMwLCAweDAxLCAweDY3LCAweDJiLAogICAgMHhmZSwgMHhkNywgMHhhYiwgMHg3NiwgMHhjYSwgMHg4MiwgMHhjOSwgMHg3ZCwgMHhmYSwgMHg1OSwgMHg0NywgMHhmMCwKICAgIDB4YWQsIDB4ZDQsIDB4YTIsIDB4YWYsIDB4OWMsIDB4YTQsIDB4NzIsIDB4YzAsIDB4YjcsIDB4ZmQsIDB4OTMsIDB4MjYsCiAgICAweDM2LCAweDNmLCAweGY3LCAweGNjLCAweDM0LCAweGE1LCAweGU1LCAweGYxLCAweDcxLCAweGQ4LCAweDMxLCAweDE1LAogICAgMHgwNCwgMHhjNywgMHgyMywgMHhjMywgMHgxOCwgMHg5NiwgMHgwNSwgMHg5YSwgMHgwNywgMHgxMiwgMHg4MCwgMHhlMiwKICAgIDB4ZWIsIDB4MjcsIDB4YjIsIDB4NzUsIDB4MDksIDB4ODMsIDB4MmMsIDB4MWEsIDB4MWIsIDB4NmUsIDB4NWEsIDB4YTAsCiAgICAweDUyLCAweDNiLCAweGQ2LCAweGIzLCAweDI5LCAweGUzLCAweDJmLCAweDg0LCAweDUzLCAweGQxLCAweDAwLCAweGVkLAogICAgMHgyMCwgMHhmYywgMHhiMSwgMHg1YiwgMHg2YSwgMHhjYiwgMHhiZSwgMHgzOSwgMHg0YSwgMHg0YywgMHg1OCwgMHhjZiwKICAgIDB4ZDAsIDB4ZWYsIDB4YWEsIDB4ZmIsIDB4NDMsIDB4NGQsIDB4MzMsIDB4ODUsIDB4NDUsIDB4ZjksIDB4MDIsIDB4N2YsCiAgICAweDUwLCAweDNjLCAweDlmLCAweGE4LCAweDUxLCAweGEzLCAweDQwLCAweDhmLCAweDkyLCAweDlkLCAweDM4LCAweGY1LAogICAgMHhiYywgMHhiNiwgMHhkYSwgMHgyMSwgMHgxMCwgMHhmZiwgMHhmMywgMHhkMiwgMHhjZCwgMHgwYywgMHgxMywgMHhlYywKICAgIDB4NWYsIDB4OTcsIDB4NDQsIDB4MTcsIDB4YzQsIDB4YTcsIDB4N2UsIDB4M2QsIDB4NjQsIDB4NWQsIDB4MTksIDB4NzMsCiAgICAweDYwLCAweDgxLCAweDRmLCAweGRjLCAweDIyLCAweDJhLCAweDkwLCAweDg4LCAweDQ2LCAweGVlLCAweGI4LCAweDE0LAogICAgMHhkZSwgMHg1ZSwgMHgwYiwgMHhkYiwgMHhlMCwgMHgzMiwgMHgzYSwgMHgwYSwgMHg0OSwgMHgwNiwgMHgyNCwgMHg1YywKICAgIDB4YzIsIDB4ZDMsIDB4YWMsIDB4NjIsIDB4OTEsIDB4OTUsIDB4ZTQsIDB4NzksIDB4ZTcsIDB4YzgsIDB4MzcsIDB4NmQsCiAgICAweDhkLCAweGQ1LCAweDRlLCAweGE5LCAweDZjLCAweDU2LCAweGY0LCAweGVhLCAweDY1LCAweDdhLCAweGFlLCAweDA4LAogICAgMHhiYSwgMHg3OCwgMHgyNSwgMHgyZSwgMHgxYywgMHhhNiwgMHhiNCwgMHhjNiwgMHhlOCwgMHhkZCwgMHg3NCwgMHgxZiwKICAgIDB4NGIsIDB4YmQsIDB4OGIsIDB4OGEsIDB4NzAsIDB4M2UsIDB4YjUsIDB4NjYsIDB4NDgsIDB4MDMsIDB4ZjYsIDB4MGUsCiAgICAweDYxLCAweDM1LCAweDU3LCAweGI5LCAweDg2LCAweGMxLCAweDFkLCAweDllLCAweGUxLCAweGY4LCAweDk4LCAweDExLAogICAgMHg2OSwgMHhkOSwgMHg4ZSwgMHg5NCwgMHg5YiwgMHgxZSwgMHg4NywgMHhlOSwgMHhjZSwgMHg1NSwgMHgyOCwgMHhkZiwKICAgIDB4OGMsIDB4YTEsIDB4ODksIDB4MGQsIDB4YmYsIDB4ZTYsIDB4NDIsIDB4NjgsIDB4NDEsIDB4OTksIDB4MmQsIDB4MGYsCiAgICAweGIwLCAweDU0LCAweGJiLCAweDE2XSk7CgogIHZhciBpbnZfcyA9IG5ldyBVaW50OEFycmF5KFsKICAgIDB4NTIsIDB4MDksIDB4NmEsIDB4ZDUsIDB4MzAsIDB4MzYsIDB4YTUsIDB4MzgsIDB4YmYsIDB4NDAsIDB4YTMsIDB4OWUsCiAgICAweDgxLCAweGYzLCAweGQ3LCAweGZiLCAweDdjLCAweGUzLCAweDM5LCAweDgyLCAweDliLCAweDJmLCAweGZmLCAweDg3LAogICAgMHgzNCwgMHg4ZSwgMHg0MywgMHg0NCwgMHhjNCwgMHhkZSwgMHhlOSwgMHhjYiwgMHg1NCwgMHg3YiwgMHg5NCwgMHgzMiwKICAgIDB4YTYsIDB4YzIsIDB4MjMsIDB4M2QsIDB4ZWUsIDB4NGMsIDB4OTUsIDB4MGIsIDB4NDIsIDB4ZmEsIDB4YzMsIDB4NGUsCiAgICAweDA4LCAweDJlLCAweGExLCAweDY2LCAweDI4LCAweGQ5LCAweDI0LCAweGIyLCAweDc2LCAweDViLCAweGEyLCAweDQ5LAogICAgMHg2ZCwgMHg4YiwgMHhkMSwgMHgyNSwgMHg3MiwgMHhmOCwgMHhmNiwgMHg2NCwgMHg4NiwgMHg2OCwgMHg5OCwgMHgxNiwKICAgIDB4ZDQsIDB4YTQsIDB4NWMsIDB4Y2MsIDB4NWQsIDB4NjUsIDB4YjYsIDB4OTIsIDB4NmMsIDB4NzAsIDB4NDgsIDB4NTAsCiAgICAweGZkLCAweGVkLCAweGI5LCAweGRhLCAweDVlLCAweDE1LCAweDQ2LCAweDU3LCAweGE3LCAweDhkLCAweDlkLCAweDg0LAogICAgMHg5MCwgMHhkOCwgMHhhYiwgMHgwMCwgMHg4YywgMHhiYywgMHhkMywgMHgwYSwgMHhmNywgMHhlNCwgMHg1OCwgMHgwNSwKICAgIDB4YjgsIDB4YjMsIDB4NDUsIDB4MDYsIDB4ZDAsIDB4MmMsIDB4MWUsIDB4OGYsIDB4Y2EsIDB4M2YsIDB4MGYsIDB4MDIsCiAgICAweGMxLCAweGFmLCAweGJkLCAweDAzLCAweDAxLCAweDEzLCAweDhhLCAweDZiLCAweDNhLCAweDkxLCAweDExLCAweDQxLAogICAgMHg0ZiwgMHg2NywgMHhkYywgMHhlYSwgMHg5NywgMHhmMiwgMHhjZiwgMHhjZSwgMHhmMCwgMHhiNCwgMHhlNiwgMHg3MywKICAgIDB4OTYsIDB4YWMsIDB4NzQsIDB4MjIsIDB4ZTcsIDB4YWQsIDB4MzUsIDB4ODUsIDB4ZTIsIDB4ZjksIDB4MzcsIDB4ZTgsCiAgICAweDFjLCAweDc1LCAweGRmLCAweDZlLCAweDQ3LCAweGYxLCAweDFhLCAweDcxLCAweDFkLCAweDI5LCAweGM1LCAweDg5LAogICAgMHg2ZiwgMHhiNywgMHg2MiwgMHgwZSwgMHhhYSwgMHgxOCwgMHhiZSwgMHgxYiwgMHhmYywgMHg1NiwgMHgzZSwgMHg0YiwKICAgIDB4YzYsIDB4ZDIsIDB4NzksIDB4MjAsIDB4OWEsIDB4ZGIsIDB4YzAsIDB4ZmUsIDB4NzgsIDB4Y2QsIDB4NWEsIDB4ZjQsCiAgICAweDFmLCAweGRkLCAweGE4LCAweDMzLCAweDg4LCAweDA3LCAweGM3LCAweDMxLCAweGIxLCAweDEyLCAweDEwLCAweDU5LAogICAgMHgyNywgMHg4MCwgMHhlYywgMHg1ZiwgMHg2MCwgMHg1MSwgMHg3ZiwgMHhhOSwgMHgxOSwgMHhiNSwgMHg0YSwgMHgwZCwKICAgIDB4MmQsIDB4ZTUsIDB4N2EsIDB4OWYsIDB4OTMsIDB4YzksIDB4OWMsIDB4ZWYsIDB4YTAsIDB4ZTAsIDB4M2IsIDB4NGQsCiAgICAweGFlLCAweDJhLCAweGY1LCAweGIwLCAweGM4LCAweGViLCAweGJiLCAweDNjLCAweDgzLCAweDUzLCAweDk5LCAweDYxLAogICAgMHgxNywgMHgyYiwgMHgwNCwgMHg3ZSwgMHhiYSwgMHg3NywgMHhkNiwgMHgyNiwgMHhlMSwgMHg2OSwgMHgxNCwgMHg2MywKICAgIDB4NTUsIDB4MjEsIDB4MGMsIDB4N2RdKTsKCiAgdmFyIG1peENvbCA9IG5ldyBVaW50OEFycmF5KDI1Nik7CiAgZm9yICh2YXIgaSA9IDA7IGkgPCAyNTY7IGkrKykgewogICAgaWYgKGkgPCAxMjgpIHsKICAgICAgbWl4Q29sW2ldID0gaSA8PCAxOwogICAgfSBlbHNlIHsKICAgICAgbWl4Q29sW2ldID0gKGkgPDwgMSkgXiAweDFiOwogICAgfQogIH0KICB2YXIgbWl4ID0gbmV3IFVpbnQzMkFycmF5KFsKICAgIDB4MDAwMDAwMDAsIDB4MGUwOTBkMGIsIDB4MWMxMjFhMTYsIDB4MTIxYjE3MWQsIDB4MzgyNDM0MmMsIDB4MzYyZDM5MjcsCiAgICAweDI0MzYyZTNhLCAweDJhM2YyMzMxLCAweDcwNDg2ODU4LCAweDdlNDE2NTUzLCAweDZjNWE3MjRlLCAweDYyNTM3ZjQ1LAogICAgMHg0ODZjNWM3NCwgMHg0NjY1NTE3ZiwgMHg1NDdlNDY2MiwgMHg1YTc3NGI2OSwgMHhlMDkwZDBiMCwgMHhlZTk5ZGRiYiwKICAgIDB4ZmM4MmNhYTYsIDB4ZjI4YmM3YWQsIDB4ZDhiNGU0OWMsIDB4ZDZiZGU5OTcsIDB4YzRhNmZlOGEsIDB4Y2FhZmYzODEsCiAgICAweDkwZDhiOGU4LCAweDllZDFiNWUzLCAweDhjY2FhMmZlLCAweDgyYzNhZmY1LCAweGE4ZmM4Y2M0LCAweGE2ZjU4MWNmLAogICAgMHhiNGVlOTZkMiwgMHhiYWU3OWJkOSwgMHhkYjNiYmI3YiwgMHhkNTMyYjY3MCwgMHhjNzI5YTE2ZCwgMHhjOTIwYWM2NiwKICAgIDB4ZTMxZjhmNTcsIDB4ZWQxNjgyNWMsIDB4ZmYwZDk1NDEsIDB4ZjEwNDk4NGEsIDB4YWI3M2QzMjMsIDB4YTU3YWRlMjgsCiAgICAweGI3NjFjOTM1LCAweGI5NjhjNDNlLCAweDkzNTdlNzBmLCAweDlkNWVlYTA0LCAweDhmNDVmZDE5LCAweDgxNGNmMDEyLAogICAgMHgzYmFiNmJjYiwgMHgzNWEyNjZjMCwgMHgyN2I5NzFkZCwgMHgyOWIwN2NkNiwgMHgwMzhmNWZlNywgMHgwZDg2NTJlYywKICAgIDB4MWY5ZDQ1ZjEsIDB4MTE5NDQ4ZmEsIDB4NGJlMzAzOTMsIDB4NDVlYTBlOTgsIDB4NTdmMTE5ODUsIDB4NTlmODE0OGUsCiAgICAweDczYzczN2JmLCAweDdkY2UzYWI0LCAweDZmZDUyZGE5LCAweDYxZGMyMGEyLCAweGFkNzY2ZGY2LCAweGEzN2Y2MGZkLAogICAgMHhiMTY0NzdlMCwgMHhiZjZkN2FlYiwgMHg5NTUyNTlkYSwgMHg5YjViNTRkMSwgMHg4OTQwNDNjYywgMHg4NzQ5NGVjNywKICAgIDB4ZGQzZTA1YWUsIDB4ZDMzNzA4YTUsIDB4YzEyYzFmYjgsIDB4Y2YyNTEyYjMsIDB4ZTUxYTMxODIsIDB4ZWIxMzNjODksCiAgICAweGY5MDgyYjk0LCAweGY3MDEyNjlmLCAweDRkZTZiZDQ2LCAweDQzZWZiMDRkLCAweDUxZjRhNzUwLCAweDVmZmRhYTViLAogICAgMHg3NWMyODk2YSwgMHg3YmNiODQ2MSwgMHg2OWQwOTM3YywgMHg2N2Q5OWU3NywgMHgzZGFlZDUxZSwgMHgzM2E3ZDgxNSwKICAgIDB4MjFiY2NmMDgsIDB4MmZiNWMyMDMsIDB4MDU4YWUxMzIsIDB4MGI4M2VjMzksIDB4MTk5OGZiMjQsIDB4MTc5MWY2MmYsCiAgICAweDc2NGRkNjhkLCAweDc4NDRkYjg2LCAweDZhNWZjYzliLCAweDY0NTZjMTkwLCAweDRlNjllMmExLCAweDQwNjBlZmFhLAogICAgMHg1MjdiZjhiNywgMHg1YzcyZjViYywgMHgwNjA1YmVkNSwgMHgwODBjYjNkZSwgMHgxYTE3YTRjMywgMHgxNDFlYTljOCwKICAgIDB4M2UyMThhZjksIDB4MzAyODg3ZjIsIDB4MjIzMzkwZWYsIDB4MmMzYTlkZTQsIDB4OTZkZDA2M2QsIDB4OThkNDBiMzYsCiAgICAweDhhY2YxYzJiLCAweDg0YzYxMTIwLCAweGFlZjkzMjExLCAweGEwZjAzZjFhLCAweGIyZWIyODA3LCAweGJjZTIyNTBjLAogICAgMHhlNjk1NmU2NSwgMHhlODljNjM2ZSwgMHhmYTg3NzQ3MywgMHhmNDhlNzk3OCwgMHhkZWIxNWE0OSwgMHhkMGI4NTc0MiwKICAgIDB4YzJhMzQwNWYsIDB4Y2NhYTRkNTQsIDB4NDFlY2RhZjcsIDB4NGZlNWQ3ZmMsIDB4NWRmZWMwZTEsIDB4NTNmN2NkZWEsCiAgICAweDc5YzhlZWRiLCAweDc3YzFlM2QwLCAweDY1ZGFmNGNkLCAweDZiZDNmOWM2LCAweDMxYTRiMmFmLCAweDNmYWRiZmE0LAogICAgMHgyZGI2YThiOSwgMHgyM2JmYTViMiwgMHgwOTgwODY4MywgMHgwNzg5OGI4OCwgMHgxNTkyOWM5NSwgMHgxYjliOTE5ZSwKICAgIDB4YTE3YzBhNDcsIDB4YWY3NTA3NGMsIDB4YmQ2ZTEwNTEsIDB4YjM2NzFkNWEsIDB4OTk1ODNlNmIsIDB4OTc1MTMzNjAsCiAgICAweDg1NGEyNDdkLCAweDhiNDMyOTc2LCAweGQxMzQ2MjFmLCAweGRmM2Q2ZjE0LCAweGNkMjY3ODA5LCAweGMzMmY3NTAyLAogICAgMHhlOTEwNTYzMywgMHhlNzE5NWIzOCwgMHhmNTAyNGMyNSwgMHhmYjBiNDEyZSwgMHg5YWQ3NjE4YywgMHg5NGRlNmM4NywKICAgIDB4ODZjNTdiOWEsIDB4ODhjYzc2OTEsIDB4YTJmMzU1YTAsIDB4YWNmYTU4YWIsIDB4YmVlMTRmYjYsIDB4YjBlODQyYmQsCiAgICAweGVhOWYwOWQ0LCAweGU0OTYwNGRmLCAweGY2OGQxM2MyLCAweGY4ODQxZWM5LCAweGQyYmIzZGY4LCAweGRjYjIzMGYzLAogICAgMHhjZWE5MjdlZSwgMHhjMGEwMmFlNSwgMHg3YTQ3YjEzYywgMHg3NDRlYmMzNywgMHg2NjU1YWIyYSwgMHg2ODVjYTYyMSwKICAgIDB4NDI2Mzg1MTAsIDB4NGM2YTg4MWIsIDB4NWU3MTlmMDYsIDB4NTA3ODkyMGQsIDB4MGEwZmQ5NjQsIDB4MDQwNmQ0NmYsCiAgICAweDE2MWRjMzcyLCAweDE4MTRjZTc5LCAweDMyMmJlZDQ4LCAweDNjMjJlMDQzLCAweDJlMzlmNzVlLCAweDIwMzBmYTU1LAogICAgMHhlYzlhYjcwMSwgMHhlMjkzYmEwYSwgMHhmMDg4YWQxNywgMHhmZTgxYTAxYywgMHhkNGJlODMyZCwgMHhkYWI3OGUyNiwKICAgIDB4YzhhYzk5M2IsIDB4YzZhNTk0MzAsIDB4OWNkMmRmNTksIDB4OTJkYmQyNTIsIDB4ODBjMGM1NGYsIDB4OGVjOWM4NDQsCiAgICAweGE0ZjZlYjc1LCAweGFhZmZlNjdlLCAweGI4ZTRmMTYzLCAweGI2ZWRmYzY4LCAweDBjMGE2N2IxLCAweDAyMDM2YWJhLAogICAgMHgxMDE4N2RhNywgMHgxZTExNzBhYywgMHgzNDJlNTM5ZCwgMHgzYTI3NWU5NiwgMHgyODNjNDk4YiwgMHgyNjM1NDQ4MCwKICAgIDB4N2M0MjBmZTksIDB4NzI0YjAyZTIsIDB4NjA1MDE1ZmYsIDB4NmU1OTE4ZjQsIDB4NDQ2NjNiYzUsIDB4NGE2ZjM2Y2UsCiAgICAweDU4NzQyMWQzLCAweDU2N2QyY2Q4LCAweDM3YTEwYzdhLCAweDM5YTgwMTcxLCAweDJiYjMxNjZjLCAweDI1YmExYjY3LAogICAgMHgwZjg1Mzg1NiwgMHgwMThjMzU1ZCwgMHgxMzk3MjI0MCwgMHgxZDllMmY0YiwgMHg0N2U5NjQyMiwgMHg0OWUwNjkyOSwKICAgIDB4NWJmYjdlMzQsIDB4NTVmMjczM2YsIDB4N2ZjZDUwMGUsIDB4NzFjNDVkMDUsIDB4NjNkZjRhMTgsIDB4NmRkNjQ3MTMsCiAgICAweGQ3MzFkY2NhLCAweGQ5MzhkMWMxLCAweGNiMjNjNmRjLCAweGM1MmFjYmQ3LCAweGVmMTVlOGU2LCAweGUxMWNlNWVkLAogICAgMHhmMzA3ZjJmMCwgMHhmZDBlZmZmYiwgMHhhNzc5YjQ5MiwgMHhhOTcwYjk5OSwgMHhiYjZiYWU4NCwgMHhiNTYyYTM4ZiwKICAgIDB4OWY1ZDgwYmUsIDB4OTE1NDhkYjUsIDB4ODM0ZjlhYTgsIDB4OGQ0Njk3YTNdKTsKCiAgZnVuY3Rpb24gZXhwYW5kS2V5MjU2KGNpcGhlcktleSkgewogICAgdmFyIGIgPSAyNDAsIHJlc3VsdCA9IG5ldyBVaW50OEFycmF5KGIpOwogICAgdmFyIHIgPSAxOwoKICAgIHJlc3VsdC5zZXQoY2lwaGVyS2V5KTsKICAgIGZvciAodmFyIGogPSAzMiwgaSA9IDE7IGogPCBiOyArK2kpIHsKICAgICAgaWYgKGogJSAzMiA9PT0gMTYpIHsKICAgICAgICB0MSA9IHNbdDFdOwogICAgICAgIHQyID0gc1t0Ml07CiAgICAgICAgdDMgPSBzW3QzXTsKICAgICAgICB0NCA9IHNbdDRdOwogICAgICB9IGVsc2UgaWYgKGogJSAzMiA9PT0gMCkgewogICAgICAgIC8vIFJvdFdvcmQKICAgICAgICB2YXIgdDEgPSByZXN1bHRbaiAtIDNdLCB0MiA9IHJlc3VsdFtqIC0gMl0sCiAgICAgICAgICB0MyA9IHJlc3VsdFtqIC0gMV0sIHQ0ID0gcmVzdWx0W2ogLSA0XTsKICAgICAgICAvLyBTdWJXb3JkCiAgICAgICAgdDEgPSBzW3QxXTsKICAgICAgICB0MiA9IHNbdDJdOwogICAgICAgIHQzID0gc1t0M107CiAgICAgICAgdDQgPSBzW3Q0XTsKICAgICAgICAvLyBSY29uCiAgICAgICAgdDEgPSB0MSBeIHI7CiAgICAgICAgaWYgKChyIDw8PSAxKSA+PSAyNTYpIHsKICAgICAgICAgIHIgPSAociBeIDB4MWIpICYgMHhGRjsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgNDsgKytuKSB7CiAgICAgICAgcmVzdWx0W2pdID0gKHQxIF49IHJlc3VsdFtqIC0gMzJdKTsKICAgICAgICBqKys7CiAgICAgICAgcmVzdWx0W2pdID0gKHQyIF49IHJlc3VsdFtqIC0gMzJdKTsKICAgICAgICBqKys7CiAgICAgICAgcmVzdWx0W2pdID0gKHQzIF49IHJlc3VsdFtqIC0gMzJdKTsKICAgICAgICBqKys7CiAgICAgICAgcmVzdWx0W2pdID0gKHQ0IF49IHJlc3VsdFtqIC0gMzJdKTsKICAgICAgICBqKys7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiByZXN1bHQ7CiAgfQoKICBmdW5jdGlvbiBkZWNyeXB0MjU2KGlucHV0LCBrZXkpIHsKICAgIHZhciBzdGF0ZSA9IG5ldyBVaW50OEFycmF5KDE2KTsKICAgIHN0YXRlLnNldChpbnB1dCk7CiAgICB2YXIgaSwgaiwgazsKICAgIHZhciB0LCB1LCB2OwogICAgLy8gQWRkUm91bmRLZXkKICAgIGZvciAoaiA9IDAsIGsgPSAyMjQ7IGogPCAxNjsgKytqLCArK2spIHsKICAgICAgc3RhdGVbal0gXj0ga2V5W2tdOwogICAgfQogICAgZm9yIChpID0gMTM7IGkgPj0gMTsgLS1pKSB7CiAgICAgIC8vIEludlNoaWZ0Um93cwogICAgICB0ID0gc3RhdGVbMTNdOwogICAgICBzdGF0ZVsxM10gPSBzdGF0ZVs5XTsKICAgICAgc3RhdGVbOV0gPSBzdGF0ZVs1XTsKICAgICAgc3RhdGVbNV0gPSBzdGF0ZVsxXTsKICAgICAgc3RhdGVbMV0gPSB0OwogICAgICB0ID0gc3RhdGVbMTRdOwogICAgICB1ID0gc3RhdGVbMTBdOwogICAgICBzdGF0ZVsxNF0gPSBzdGF0ZVs2XTsKICAgICAgc3RhdGVbMTBdID0gc3RhdGVbMl07CiAgICAgIHN0YXRlWzZdID0gdDsKICAgICAgc3RhdGVbMl0gPSB1OwogICAgICB0ID0gc3RhdGVbMTVdOwogICAgICB1ID0gc3RhdGVbMTFdOwogICAgICB2ID0gc3RhdGVbN107CiAgICAgIHN0YXRlWzE1XSA9IHN0YXRlWzNdOwogICAgICBzdGF0ZVsxMV0gPSB0OwogICAgICBzdGF0ZVs3XSA9IHU7CiAgICAgIHN0YXRlWzNdID0gdjsKICAgICAgLy8gSW52U3ViQnl0ZXMKICAgICAgZm9yIChqID0gMDsgaiA8IDE2OyArK2opIHsKICAgICAgICBzdGF0ZVtqXSA9IGludl9zW3N0YXRlW2pdXTsKICAgICAgfQogICAgICAvLyBBZGRSb3VuZEtleQogICAgICBmb3IgKGogPSAwLCBrID0gaSAqIDE2OyBqIDwgMTY7ICsraiwgKytrKSB7CiAgICAgICAgc3RhdGVbal0gXj0ga2V5W2tdOwogICAgICB9CiAgICAgIC8vIEludk1peENvbHVtbnMKICAgICAgZm9yIChqID0gMDsgaiA8IDE2OyBqICs9IDQpIHsKICAgICAgICB2YXIgczAgPSBtaXhbc3RhdGVbal1dLCBzMSA9IG1peFtzdGF0ZVtqICsgMV1dLAogICAgICAgICAgICBzMiA9IG1peFtzdGF0ZVtqICsgMl1dLCBzMyA9IG1peFtzdGF0ZVtqICsgM11dOwogICAgICAgIHQgPSAoczAgXiAoczEgPj4+IDgpIF4gKHMxIDw8IDI0KSBeIChzMiA+Pj4gMTYpIF4gKHMyIDw8IDE2KSBeCiAgICAgICAgICAgIChzMyA+Pj4gMjQpIF4gKHMzIDw8IDgpKTsKICAgICAgICBzdGF0ZVtqXSA9ICh0ID4+PiAyNCkgJiAweEZGOwogICAgICAgIHN0YXRlW2ogKyAxXSA9ICh0ID4+IDE2KSAmIDB4RkY7CiAgICAgICAgc3RhdGVbaiArIDJdID0gKHQgPj4gOCkgJiAweEZGOwogICAgICAgIHN0YXRlW2ogKyAzXSA9IHQgJiAweEZGOwogICAgICB9CiAgICB9CiAgICAvLyBJbnZTaGlmdFJvd3MKICAgIHQgPSBzdGF0ZVsxM107CiAgICBzdGF0ZVsxM10gPSBzdGF0ZVs5XTsKICAgIHN0YXRlWzldID0gc3RhdGVbNV07CiAgICBzdGF0ZVs1XSA9IHN0YXRlWzFdOwogICAgc3RhdGVbMV0gPSB0OwogICAgdCA9IHN0YXRlWzE0XTsKICAgIHUgPSBzdGF0ZVsxMF07CiAgICBzdGF0ZVsxNF0gPSBzdGF0ZVs2XTsKICAgIHN0YXRlWzEwXSA9IHN0YXRlWzJdOwogICAgc3RhdGVbNl0gPSB0OwogICAgc3RhdGVbMl0gPSB1OwogICAgdCA9IHN0YXRlWzE1XTsKICAgIHUgPSBzdGF0ZVsxMV07CiAgICB2ID0gc3RhdGVbN107CiAgICBzdGF0ZVsxNV0gPSBzdGF0ZVszXTsKICAgIHN0YXRlWzExXSA9IHQ7CiAgICBzdGF0ZVs3XSA9IHU7CiAgICBzdGF0ZVszXSA9IHY7CiAgICBmb3IgKGogPSAwOyBqIDwgMTY7ICsraikgewogICAgICAvLyBJbnZTdWJCeXRlcwogICAgICBzdGF0ZVtqXSA9IGludl9zW3N0YXRlW2pdXTsKICAgICAgLy8gQWRkUm91bmRLZXkKICAgICAgc3RhdGVbal0gXj0ga2V5W2pdOwogICAgfQogICAgcmV0dXJuIHN0YXRlOwogIH0KCiAgZnVuY3Rpb24gZW5jcnlwdDI1NihpbnB1dCwga2V5KSB7CiAgICB2YXIgdCwgdSwgdiwgazsKICAgIHZhciBzdGF0ZSA9IG5ldyBVaW50OEFycmF5KDE2KTsKICAgIHN0YXRlLnNldChpbnB1dCk7CiAgICBmb3IgKGogPSAwOyBqIDwgMTY7ICsraikgewogICAgICAvLyBBZGRSb3VuZEtleQogICAgICBzdGF0ZVtqXSBePSBrZXlbal07CiAgICB9CgogICAgZm9yIChpID0gMTsgaSA8IDE0OyBpKyspIHsKICAgICAgLy9TdWJCeXRlcwogICAgICBmb3IgKGogPSAwOyBqIDwgMTY7ICsraikgewogICAgICAgIHN0YXRlW2pdID0gc1tzdGF0ZVtqXV07CiAgICAgIH0KICAgICAgLy9TaGlmdFJvd3MKICAgICAgdiA9IHN0YXRlWzFdOwogICAgICBzdGF0ZVsxXSA9IHN0YXRlWzVdOwogICAgICBzdGF0ZVs1XSA9IHN0YXRlWzldOwogICAgICBzdGF0ZVs5XSA9IHN0YXRlWzEzXTsKICAgICAgc3RhdGVbMTNdID0gdjsKICAgICAgdiA9IHN0YXRlWzJdOwogICAgICB1ID0gc3RhdGVbNl07CiAgICAgIHN0YXRlWzJdID0gc3RhdGVbMTBdOwogICAgICBzdGF0ZVs2XSA9IHN0YXRlWzE0XTsKICAgICAgc3RhdGVbMTBdID0gdjsKICAgICAgc3RhdGVbMTRdID0gdTsKICAgICAgdiA9IHN0YXRlWzNdOwogICAgICB1ID0gc3RhdGVbN107CiAgICAgIHQgPSBzdGF0ZVsxMV07CiAgICAgIHN0YXRlWzNdID0gc3RhdGVbMTVdOwogICAgICBzdGF0ZVs3XSA9IHY7CiAgICAgIHN0YXRlWzExXSA9IHU7CiAgICAgIHN0YXRlWzE1XSA9IHQ7CiAgICAgIC8vTWl4Q29sdW1ucwogICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDE2OyBqICs9IDQpIHsKICAgICAgICB2YXIgczAgPSBzdGF0ZVtqICsgMF0sIHMxID0gc3RhdGVbaiArIDFdOwogICAgICAgIHZhciBzMiA9IHN0YXRlW2ogKyAyXSwgczMgPSBzdGF0ZVtqICsgM107CiAgICAgICAgdCA9IHMwIF4gczEgXiBzMiBeIHMzOwogICAgICAgIHN0YXRlW2ogKyAwXSBePSB0IF4gbWl4Q29sW3MwIF4gczFdOwogICAgICAgIHN0YXRlW2ogKyAxXSBePSB0IF4gbWl4Q29sW3MxIF4gczJdOwogICAgICAgIHN0YXRlW2ogKyAyXSBePSB0IF4gbWl4Q29sW3MyIF4gczNdOwogICAgICAgIHN0YXRlW2ogKyAzXSBePSB0IF4gbWl4Q29sW3MzIF4gczBdOwogICAgICB9CiAgICAgIC8vQWRkUm91bmRLZXkKICAgICAgZm9yIChqID0gMCwgayA9IGkgKiAxNjsgaiA8IDE2OyArK2osICsraykgewogICAgICAgIHN0YXRlW2pdIF49IGtleVtrXTsKICAgICAgfQogICAgfQoKICAgIC8vU3ViQnl0ZXMKICAgIGZvciAoaiA9IDA7IGogPCAxNjsgKytqKSB7CiAgICAgIHN0YXRlW2pdID0gc1tzdGF0ZVtqXV07CiAgICB9CiAgICAvL1NoaWZ0Um93cwogICAgdiA9IHN0YXRlWzFdOwogICAgc3RhdGVbMV0gPSBzdGF0ZVs1XTsKICAgIHN0YXRlWzVdID0gc3RhdGVbOV07CiAgICBzdGF0ZVs5XSA9IHN0YXRlWzEzXTsKICAgIHN0YXRlWzEzXSA9IHY7CiAgICB2ID0gc3RhdGVbMl07CiAgICB1ID0gc3RhdGVbNl07CiAgICBzdGF0ZVsyXSA9IHN0YXRlWzEwXTsKICAgIHN0YXRlWzZdID0gc3RhdGVbMTRdOwogICAgc3RhdGVbMTBdID0gdjsKICAgIHN0YXRlWzE0XSA9IHU7CiAgICB2ID0gc3RhdGVbM107CiAgICB1ID0gc3RhdGVbN107CiAgICB0ID0gc3RhdGVbMTFdOwogICAgc3RhdGVbM10gPSBzdGF0ZVsxNV07CiAgICBzdGF0ZVs3XSA9IHY7CiAgICBzdGF0ZVsxMV0gPSB1OwogICAgc3RhdGVbMTVdID0gdDsKICAgIC8vQWRkUm91bmRLZXkKICAgIGZvciAoaiA9IDAsIGsgPSAyMjQ7IGogPCAxNjsgKytqLCArK2spIHsKICAgICAgc3RhdGVbal0gXj0ga2V5W2tdOwogICAgfQoKICAgIHJldHVybiBzdGF0ZTsKCiAgfQoKICBmdW5jdGlvbiBBRVMyNTZDaXBoZXIoa2V5KSB7CiAgICB0aGlzLmtleSA9IGV4cGFuZEtleTI1NihrZXkpOwogICAgdGhpcy5idWZmZXIgPSBuZXcgVWludDhBcnJheSgxNik7CiAgICB0aGlzLmJ1ZmZlclBvc2l0aW9uID0gMDsKICB9CgogIGZ1bmN0aW9uIGRlY3J5cHRCbG9jazIoZGF0YSwgZmluYWxpemUpIHsKICAgIHZhciBpLCBqLCBpaSwgc291cmNlTGVuZ3RoID0gZGF0YS5sZW5ndGgsCiAgICAgICAgYnVmZmVyID0gdGhpcy5idWZmZXIsIGJ1ZmZlckxlbmd0aCA9IHRoaXMuYnVmZmVyUG9zaXRpb24sCiAgICAgICAgcmVzdWx0ID0gW10sIGl2ID0gdGhpcy5pdjsKCiAgICBmb3IgKGkgPSAwOyBpIDwgc291cmNlTGVuZ3RoOyArK2kpIHsKICAgICAgYnVmZmVyW2J1ZmZlckxlbmd0aF0gPSBkYXRhW2ldOwogICAgICArK2J1ZmZlckxlbmd0aDsKICAgICAgaWYgKGJ1ZmZlckxlbmd0aCA8IDE2KSB7CiAgICAgICAgY29udGludWU7CiAgICAgIH0KICAgICAgLy8gYnVmZmVyIGlzIGZ1bGwsIGRlY3J5cHRpbmcKICAgICAgdmFyIHBsYWluID0gZGVjcnlwdDI1NihidWZmZXIsIHRoaXMua2V5KTsKICAgICAgLy8geG9yLWluZyB0aGUgSVYgdmVjdG9yIHRvIGdldCBwbGFpbiB0ZXh0CiAgICAgIGZvciAoaiA9IDA7IGogPCAxNjsgKytqKSB7CiAgICAgICAgcGxhaW5bal0gXj0gaXZbal07CiAgICAgIH0KICAgICAgaXYgPSBidWZmZXI7CiAgICAgIHJlc3VsdC5wdXNoKHBsYWluKTsKICAgICAgYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkoMTYpOwogICAgICBidWZmZXJMZW5ndGggPSAwOwogICAgfQogICAgLy8gc2F2aW5nIGluY29tcGxldGUgYnVmZmVyCiAgICB0aGlzLmJ1ZmZlciA9IGJ1ZmZlcjsKICAgIHRoaXMuYnVmZmVyTGVuZ3RoID0gYnVmZmVyTGVuZ3RoOwogICAgdGhpcy5pdiA9IGl2OwogICAgaWYgKHJlc3VsdC5sZW5ndGggPT09IDApIHsKICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KFtdKTsKICAgIH0KICAgIC8vIGNvbWJpbmluZyBwbGFpbiB0ZXh0IGJsb2NrcyBpbnRvIG9uZQogICAgdmFyIG91dHB1dExlbmd0aCA9IDE2ICogcmVzdWx0Lmxlbmd0aDsKICAgIGlmIChmaW5hbGl6ZSkgewogICAgICAvLyB1bmRvIGEgcGFkZGluZyB0aGF0IGlzIGRlc2NyaWJlZCBpbiBSRkMgMjg5OAogICAgICB2YXIgbGFzdEJsb2NrID0gcmVzdWx0W3Jlc3VsdC5sZW5ndGggLSAxXTsKICAgICAgdmFyIHBzTGVuID0gbGFzdEJsb2NrWzE1XTsKICAgICAgaWYgKHBzTGVuIDw9IDE2KSB7CiAgICAgICAgZm9yIChpID0gMTUsIGlpID0gMTYgLSBwc0xlbjsgaSA+PSBpaTsgLS1pKSB7CiAgICAgICAgICBpZiAobGFzdEJsb2NrW2ldICE9PSBwc0xlbikgewogICAgICAgICAgICAvLyBJbnZhbGlkIHBhZGRpbmcsIGFzc3VtZSB0aGF0IHRoZSBibG9jayBoYXMgbm8gcGFkZGluZy4KICAgICAgICAgICAgcHNMZW4gPSAwOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgb3V0cHV0TGVuZ3RoIC09IHBzTGVuOwogICAgICAgIHJlc3VsdFtyZXN1bHQubGVuZ3RoIC0gMV0gPSBsYXN0QmxvY2suc3ViYXJyYXkoMCwgMTYgLSBwc0xlbik7CiAgICAgIH0KICAgIH0KICAgIHZhciBvdXRwdXQgPSBuZXcgVWludDhBcnJheShvdXRwdXRMZW5ndGgpOwogICAgZm9yIChpID0gMCwgaiA9IDAsIGlpID0gcmVzdWx0Lmxlbmd0aDsgaSA8IGlpOyArK2ksIGogKz0gMTYpIHsKICAgICAgb3V0cHV0LnNldChyZXN1bHRbaV0sIGopOwogICAgfQogICAgcmV0dXJuIG91dHB1dDsKCiAgfQoKICBBRVMyNTZDaXBoZXIucHJvdG90eXBlID0gewogICAgZGVjcnlwdEJsb2NrOiBmdW5jdGlvbiBBRVMyNTZDaXBoZXJfZGVjcnlwdEJsb2NrKGRhdGEsIGZpbmFsaXplLCBpdikgewogICAgICB2YXIgaSwgc291cmNlTGVuZ3RoID0gZGF0YS5sZW5ndGg7CiAgICAgIHZhciBidWZmZXIgPSB0aGlzLmJ1ZmZlciwgYnVmZmVyTGVuZ3RoID0gdGhpcy5idWZmZXJQb3NpdGlvbjsKICAgICAgLy8gaWYgbm90IHN1cHBsaWVkIGFuIElWIHdhaXQgZm9yIElWIHZhbHVlcwogICAgICAvLyB0aGV5IGFyZSBhdCB0aGUgc3RhcnQgb2YgdGhlIHN0cmVhbQogICAgICBpZiAoaXYpIHsKICAgICAgICB0aGlzLml2ID0gaXY7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZm9yIChpID0gMDsgYnVmZmVyTGVuZ3RoIDwgMTYgJiYKICAgICAgICAgICAgIGkgPCBzb3VyY2VMZW5ndGg7ICsraSwgKytidWZmZXJMZW5ndGgpIHsKICAgICAgICAgIGJ1ZmZlcltidWZmZXJMZW5ndGhdID0gZGF0YVtpXTsKICAgICAgICB9CiAgICAgICAgaWYgKGJ1ZmZlckxlbmd0aCA8IDE2KSB7CiAgICAgICAgICAvL25lZWQgbW9yZSBkYXRhCiAgICAgICAgICB0aGlzLmJ1ZmZlckxlbmd0aCA9IGJ1ZmZlckxlbmd0aDsKICAgICAgICAgIHJldHVybiBuZXcgVWludDhBcnJheShbXSk7CiAgICAgICAgfQogICAgICAgIHRoaXMuaXYgPSBidWZmZXI7CiAgICAgICAgZGF0YSA9IGRhdGEuc3ViYXJyYXkoMTYpOwogICAgICB9CiAgICAgIHRoaXMuYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkoMTYpOwogICAgICB0aGlzLmJ1ZmZlckxlbmd0aCA9IDA7CiAgICAgIC8vIHN0YXJ0aW5nIGRlY3J5cHRpb24KICAgICAgdGhpcy5kZWNyeXB0QmxvY2sgPSBkZWNyeXB0QmxvY2syOwogICAgICByZXR1cm4gdGhpcy5kZWNyeXB0QmxvY2soZGF0YSwgZmluYWxpemUpOwogICAgfSwKICAgIGVuY3J5cHQ6IGZ1bmN0aW9uIEFFUzI1NkNpcGhlcl9lbmNyeXB0KGRhdGEsIGl2KSB7CiAgICAgIHZhciBpLCBqLCBpaSwgc291cmNlTGVuZ3RoID0gZGF0YS5sZW5ndGgsCiAgICAgICAgICBidWZmZXIgPSB0aGlzLmJ1ZmZlciwgYnVmZmVyTGVuZ3RoID0gdGhpcy5idWZmZXJQb3NpdGlvbiwKICAgICAgICAgIHJlc3VsdCA9IFtdOwogICAgICBpZiAoIWl2KSB7CiAgICAgICAgaXYgPSBuZXcgVWludDhBcnJheSgxNik7CiAgICAgIH0KICAgICAgZm9yIChpID0gMDsgaSA8IHNvdXJjZUxlbmd0aDsgKytpKSB7CiAgICAgICAgYnVmZmVyW2J1ZmZlckxlbmd0aF0gPSBkYXRhW2ldOwogICAgICAgICsrYnVmZmVyTGVuZ3RoOwogICAgICAgIGlmIChidWZmZXJMZW5ndGggPCAxNikgewogICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIGZvciAoaiA9IDA7IGogPCAxNjsgKytqKSB7CiAgICAgICAgICBidWZmZXJbal0gXj0gaXZbal07CiAgICAgICAgfQoKICAgICAgICAvLyBidWZmZXIgaXMgZnVsbCwgZW5jcnlwdGluZwogICAgICAgIHZhciBjaXBoZXIgPSBlbmNyeXB0MjU2KGJ1ZmZlciwgdGhpcy5rZXkpOwogICAgICAgIHRoaXMuaXYgPSBjaXBoZXI7CiAgICAgICAgcmVzdWx0LnB1c2goY2lwaGVyKTsKICAgICAgICBidWZmZXIgPSBuZXcgVWludDhBcnJheSgxNik7CiAgICAgICAgYnVmZmVyTGVuZ3RoID0gMDsKICAgICAgfQogICAgICAvLyBzYXZpbmcgaW5jb21wbGV0ZSBidWZmZXIKICAgICAgdGhpcy5idWZmZXIgPSBidWZmZXI7CiAgICAgIHRoaXMuYnVmZmVyTGVuZ3RoID0gYnVmZmVyTGVuZ3RoOwogICAgICB0aGlzLml2ID0gaXY7CiAgICAgIGlmIChyZXN1bHQubGVuZ3RoID09PSAwKSB7CiAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KFtdKTsKICAgICAgfQogICAgICAvLyBjb21iaW5pbmcgcGxhaW4gdGV4dCBibG9ja3MgaW50byBvbmUKICAgICAgdmFyIG91dHB1dExlbmd0aCA9IDE2ICogcmVzdWx0Lmxlbmd0aDsKICAgICAgdmFyIG91dHB1dCA9IG5ldyBVaW50OEFycmF5KG91dHB1dExlbmd0aCk7CiAgICAgIGZvciAoaSA9IDAsIGogPSAwLCBpaSA9IHJlc3VsdC5sZW5ndGg7IGkgPCBpaTsgKytpLCBqICs9IDE2KSB7CiAgICAgICAgb3V0cHV0LnNldChyZXN1bHRbaV0sIGopOwogICAgICB9CiAgICAgIHJldHVybiBvdXRwdXQ7CiAgICB9CiAgfTsKCiAgcmV0dXJuIEFFUzI1NkNpcGhlcjsKfSkoKTsKCnZhciBQREYxNyA9IChmdW5jdGlvbiBQREYxN0Nsb3N1cmUoKSB7CgogIGZ1bmN0aW9uIGNvbXBhcmVCeXRlQXJyYXlzKGFycmF5MSwgYXJyYXkyKSB7CiAgICBpZiAoYXJyYXkxLmxlbmd0aCAhPT0gYXJyYXkyLmxlbmd0aCkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5MS5sZW5ndGg7IGkrKykgewogICAgICBpZiAoYXJyYXkxW2ldICE9PSBhcnJheTJbaV0pIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiB0cnVlOwogIH0KCiAgZnVuY3Rpb24gUERGMTcoKSB7CiAgfQoKICBQREYxNy5wcm90b3R5cGUgPSB7CiAgICBjaGVja093bmVyUGFzc3dvcmQ6IGZ1bmN0aW9uIFBERjE3X2NoZWNrT3duZXJQYXNzd29yZChwYXNzd29yZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG93bmVyVmFsaWRhdGlvblNhbHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyQnl0ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvd25lclBhc3N3b3JkKSB7CiAgICAgIHZhciBoYXNoRGF0YSA9IG5ldyBVaW50OEFycmF5KHBhc3N3b3JkLmxlbmd0aCArIDU2KTsKICAgICAgaGFzaERhdGEuc2V0KHBhc3N3b3JkLCAwKTsKICAgICAgaGFzaERhdGEuc2V0KG93bmVyVmFsaWRhdGlvblNhbHQsIHBhc3N3b3JkLmxlbmd0aCk7CiAgICAgIGhhc2hEYXRhLnNldCh1c2VyQnl0ZXMsIHBhc3N3b3JkLmxlbmd0aCArIG93bmVyVmFsaWRhdGlvblNhbHQubGVuZ3RoKTsKICAgICAgdmFyIHJlc3VsdCA9IGNhbGN1bGF0ZVNIQTI1NihoYXNoRGF0YSwgMCwgaGFzaERhdGEubGVuZ3RoKTsKICAgICAgcmV0dXJuIGNvbXBhcmVCeXRlQXJyYXlzKHJlc3VsdCwgb3duZXJQYXNzd29yZCk7CiAgICB9LAogICAgY2hlY2tVc2VyUGFzc3dvcmQ6IGZ1bmN0aW9uIFBERjE3X2NoZWNrVXNlclBhc3N3b3JkKHBhc3N3b3JkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJWYWxpZGF0aW9uU2FsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyUGFzc3dvcmQpIHsKICAgICAgdmFyIGhhc2hEYXRhID0gbmV3IFVpbnQ4QXJyYXkocGFzc3dvcmQubGVuZ3RoICsgOCk7CiAgICAgIGhhc2hEYXRhLnNldChwYXNzd29yZCwgMCk7CiAgICAgIGhhc2hEYXRhLnNldCh1c2VyVmFsaWRhdGlvblNhbHQsIHBhc3N3b3JkLmxlbmd0aCk7CiAgICAgIHZhciByZXN1bHQgPSBjYWxjdWxhdGVTSEEyNTYoaGFzaERhdGEsIDAsIGhhc2hEYXRhLmxlbmd0aCk7CiAgICAgIHJldHVybiBjb21wYXJlQnl0ZUFycmF5cyhyZXN1bHQsIHVzZXJQYXNzd29yZCk7CiAgICB9LAogICAgZ2V0T3duZXJLZXk6IGZ1bmN0aW9uIFBERjE3X2dldE93bmVyS2V5KHBhc3N3b3JkLCBvd25lcktleVNhbHQsIHVzZXJCeXRlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvd25lckVuY3J5cHRpb24pIHsKICAgICAgdmFyIGhhc2hEYXRhID0gbmV3IFVpbnQ4QXJyYXkocGFzc3dvcmQubGVuZ3RoICsgNTYpOwogICAgICBoYXNoRGF0YS5zZXQocGFzc3dvcmQsIDApOwogICAgICBoYXNoRGF0YS5zZXQob3duZXJLZXlTYWx0LCBwYXNzd29yZC5sZW5ndGgpOwogICAgICBoYXNoRGF0YS5zZXQodXNlckJ5dGVzLCBwYXNzd29yZC5sZW5ndGggKyBvd25lcktleVNhbHQubGVuZ3RoKTsKICAgICAgdmFyIGtleSA9IGNhbGN1bGF0ZVNIQTI1NihoYXNoRGF0YSwgMCwgaGFzaERhdGEubGVuZ3RoKTsKICAgICAgdmFyIGNpcGhlciA9IG5ldyBBRVMyNTZDaXBoZXIoa2V5KTsKICAgICAgcmV0dXJuIGNpcGhlci5kZWNyeXB0QmxvY2sob3duZXJFbmNyeXB0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFVpbnQ4QXJyYXkoMTYpKTsKCiAgICB9LAogICAgZ2V0VXNlcktleTogZnVuY3Rpb24gUERGMTdfZ2V0VXNlcktleShwYXNzd29yZCwgdXNlcktleVNhbHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJFbmNyeXB0aW9uKSB7CiAgICAgIHZhciBoYXNoRGF0YSA9IG5ldyBVaW50OEFycmF5KHBhc3N3b3JkLmxlbmd0aCArIDgpOwogICAgICBoYXNoRGF0YS5zZXQocGFzc3dvcmQsIDApOwogICAgICBoYXNoRGF0YS5zZXQodXNlcktleVNhbHQsIHBhc3N3b3JkLmxlbmd0aCk7CiAgICAgIC8va2V5IGlzIHRoZSBkZWNyeXB0aW9uIGtleSBmb3IgdGhlIFVFIHN0cmluZwogICAgICB2YXIga2V5ID0gY2FsY3VsYXRlU0hBMjU2KGhhc2hEYXRhLCAwLCBoYXNoRGF0YS5sZW5ndGgpOwogICAgICB2YXIgY2lwaGVyID0gbmV3IEFFUzI1NkNpcGhlcihrZXkpOwogICAgICByZXR1cm4gY2lwaGVyLmRlY3J5cHRCbG9jayh1c2VyRW5jcnlwdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBVaW50OEFycmF5KDE2KSk7CiAgICB9CiAgfTsKICByZXR1cm4gUERGMTc7Cn0pKCk7Cgp2YXIgUERGMjAgPSAoZnVuY3Rpb24gUERGMjBDbG9zdXJlKCkgewoKICBmdW5jdGlvbiBjb25jYXRBcnJheXMoYXJyYXkxLCBhcnJheTIpIHsKICAgIHZhciB0ID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXkxLmxlbmd0aCArIGFycmF5Mi5sZW5ndGgpOwogICAgdC5zZXQoYXJyYXkxLCAwKTsKICAgIHQuc2V0KGFycmF5MiwgYXJyYXkxLmxlbmd0aCk7CiAgICByZXR1cm4gdDsKICB9CgogIGZ1bmN0aW9uIGNhbGN1bGF0ZVBERjIwSGFzaChwYXNzd29yZCwgaW5wdXQsIHVzZXJCeXRlcykgewogICAgLy9UaGlzIHJlZmVycyB0byBBbGdvcml0aG0gMi5CIGFzIGRlZmluZWQgaW4gSVNPIDMyMDAwLTIKICAgIHZhciBrID0gY2FsY3VsYXRlU0hBMjU2KGlucHV0LCAwLCBpbnB1dC5sZW5ndGgpLnN1YmFycmF5KDAsIDMyKTsKICAgIHZhciBlID0gWzBdOwogICAgdmFyIGkgPSAwOwogICAgd2hpbGUgKGkgPCA2NCB8fCBlW2UubGVuZ3RoIC0gMV0gPiBpIC0gMzIpIHsKICAgICAgdmFyIGFycmF5TGVuZ3RoID0gcGFzc3dvcmQubGVuZ3RoICsgay5sZW5ndGggKyB1c2VyQnl0ZXMubGVuZ3RoOwoKICAgICAgdmFyIGsxID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXlMZW5ndGggKiA2NCk7CiAgICAgIHZhciBhcnJheSA9IGNvbmNhdEFycmF5cyhwYXNzd29yZCwgayk7CiAgICAgIGFycmF5ID0gY29uY2F0QXJyYXlzKGFycmF5LCB1c2VyQnl0ZXMpOwogICAgICBmb3IgKHZhciBqID0gMCwgcG9zID0gMDsgaiA8IDY0OyBqKyssIHBvcyArPSBhcnJheUxlbmd0aCkgewogICAgICAgIGsxLnNldChhcnJheSwgcG9zKTsKICAgICAgfQogICAgICAvL0FFUzEyOCBDQkMgTk8gUEFERElORyB3aXRoCiAgICAgIC8vZmlyc3QgMTYgYnl0ZXMgb2YgayBhcyB0aGUga2V5IGFuZCB0aGUgc2Vjb25kIDE2IGFzIHRoZSBpdi4KICAgICAgdmFyIGNpcGhlciA9IG5ldyBBRVMxMjhDaXBoZXIoay5zdWJhcnJheSgwLCAxNikpOwogICAgICBlID0gY2lwaGVyLmVuY3J5cHQoazEsIGsuc3ViYXJyYXkoMTYsIDMyKSk7CiAgICAgIC8vTm93IHdlIGhhdmUgdG8gdGFrZSB0aGUgZmlyc3QgMTYgYnl0ZXMgb2YgYW4gdW5zaWduZWQKICAgICAgLy9iaWcgZW5kaWFuIGludGVnZXIuLi4gYW5kIGNvbXB1dGUgdGhlIHJlbWFpbmRlcgogICAgICAvL21vZHVsbyAzLi4uLiBUaGF0IGlzIGEgZmFpcmx5IGxhcmdlIG51bWJlciBhbmQKICAgICAgLy9KYXZhU2NyaXB0IGlzbid0IGdvaW5nIHRvIGhhbmRsZSB0aGF0IHdlbGwuLi4KICAgICAgLy9TbyB3ZSdyZSB1c2luZyBhIHRyaWNrIHRoYXQgYWxsb3dzIHVzIHRvIHBlcmZvcm0KICAgICAgLy9tb2R1bG8gbWF0aCBieXRlIGJ5IGJ5dGUKICAgICAgdmFyIHJlbWFpbmRlciA9IDA7CiAgICAgIGZvciAodmFyIHogPSAwOyB6IDwgMTY7IHorKykgewogICAgICAgIHJlbWFpbmRlciAqPSAoMjU2ICUgMyk7CiAgICAgICAgcmVtYWluZGVyICU9IDM7CiAgICAgICAgcmVtYWluZGVyICs9ICgoZVt6XSA+Pj4gMCkgJSAzKTsKICAgICAgICByZW1haW5kZXIgJT0gMzsKICAgICAgfQogICAgICBpZiAocmVtYWluZGVyID09PSAwKSB7CiAgICAgICAgayA9IGNhbGN1bGF0ZVNIQTI1NihlLCAwLCBlLmxlbmd0aCk7CiAgICAgIH0KICAgICAgZWxzZSBpZiAocmVtYWluZGVyID09PSAxKSB7CiAgICAgICAgayA9IGNhbGN1bGF0ZVNIQTM4NChlLCAwLCBlLmxlbmd0aCk7CiAgICAgIH0KICAgICAgZWxzZSBpZiAocmVtYWluZGVyID09PSAyKSB7CiAgICAgICAgayA9IGNhbGN1bGF0ZVNIQTUxMihlLCAwLCBlLmxlbmd0aCk7CiAgICAgIH0KICAgICAgaSsrOwogICAgfQogICAgcmV0dXJuIGsuc3ViYXJyYXkoMCwgMzIpOwogIH0KCiAgZnVuY3Rpb24gUERGMjAoKSB7CiAgfQoKICBmdW5jdGlvbiBjb21wYXJlQnl0ZUFycmF5cyhhcnJheTEsIGFycmF5MikgewogICAgaWYgKGFycmF5MS5sZW5ndGggIT09IGFycmF5Mi5sZW5ndGgpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheTEubGVuZ3RoOyBpKyspIHsKICAgICAgaWYgKGFycmF5MVtpXSAhPT0gYXJyYXkyW2ldKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gdHJ1ZTsKICB9CgogIFBERjIwLnByb3RvdHlwZSA9IHsKICAgIGhhc2g6IGZ1bmN0aW9uIFBERjIwX2hhc2gocGFzc3dvcmQsIGNvbmNhdEJ5dGVzLCB1c2VyQnl0ZXMpIHsKICAgICAgcmV0dXJuIGNhbGN1bGF0ZVBERjIwSGFzaChwYXNzd29yZCwgY29uY2F0Qnl0ZXMsIHVzZXJCeXRlcyk7CiAgICB9LAogICAgY2hlY2tPd25lclBhc3N3b3JkOiBmdW5jdGlvbiBQREYyMF9jaGVja093bmVyUGFzc3dvcmQocGFzc3dvcmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvd25lclZhbGlkYXRpb25TYWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlckJ5dGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3duZXJQYXNzd29yZCkgewogICAgICB2YXIgaGFzaERhdGEgPSBuZXcgVWludDhBcnJheShwYXNzd29yZC5sZW5ndGggKyA1Nik7CiAgICAgIGhhc2hEYXRhLnNldChwYXNzd29yZCwgMCk7CiAgICAgIGhhc2hEYXRhLnNldChvd25lclZhbGlkYXRpb25TYWx0LCBwYXNzd29yZC5sZW5ndGgpOwogICAgICBoYXNoRGF0YS5zZXQodXNlckJ5dGVzLCBwYXNzd29yZC5sZW5ndGggKyBvd25lclZhbGlkYXRpb25TYWx0Lmxlbmd0aCk7CiAgICAgIHZhciByZXN1bHQgPSBjYWxjdWxhdGVQREYyMEhhc2gocGFzc3dvcmQsIGhhc2hEYXRhLCB1c2VyQnl0ZXMpOwogICAgICByZXR1cm4gY29tcGFyZUJ5dGVBcnJheXMocmVzdWx0LCBvd25lclBhc3N3b3JkKTsKICAgIH0sCiAgICBjaGVja1VzZXJQYXNzd29yZDogZnVuY3Rpb24gUERGMjBfY2hlY2tVc2VyUGFzc3dvcmQocGFzc3dvcmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlclZhbGlkYXRpb25TYWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJQYXNzd29yZCkgewogICAgICB2YXIgaGFzaERhdGEgPSBuZXcgVWludDhBcnJheShwYXNzd29yZC5sZW5ndGggKyA4KTsKICAgICAgaGFzaERhdGEuc2V0KHBhc3N3b3JkLCAwKTsKICAgICAgaGFzaERhdGEuc2V0KHVzZXJWYWxpZGF0aW9uU2FsdCwgcGFzc3dvcmQubGVuZ3RoKTsKICAgICAgdmFyIHJlc3VsdCA9IGNhbGN1bGF0ZVBERjIwSGFzaChwYXNzd29yZCwgaGFzaERhdGEsIFtdKTsKICAgICAgcmV0dXJuIGNvbXBhcmVCeXRlQXJyYXlzKHJlc3VsdCwgdXNlclBhc3N3b3JkKTsKICAgIH0sCiAgICBnZXRPd25lcktleTogZnVuY3Rpb24gUERGMjBfZ2V0T3duZXJLZXkocGFzc3dvcmQsIG93bmVyS2V5U2FsdCwgdXNlckJ5dGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG93bmVyRW5jcnlwdGlvbikgewogICAgICB2YXIgaGFzaERhdGEgPSBuZXcgVWludDhBcnJheShwYXNzd29yZC5sZW5ndGggKyA1Nik7CiAgICAgIGhhc2hEYXRhLnNldChwYXNzd29yZCwgMCk7CiAgICAgIGhhc2hEYXRhLnNldChvd25lcktleVNhbHQsIHBhc3N3b3JkLmxlbmd0aCk7CiAgICAgIGhhc2hEYXRhLnNldCh1c2VyQnl0ZXMsIHBhc3N3b3JkLmxlbmd0aCArIG93bmVyS2V5U2FsdC5sZW5ndGgpOwogICAgICB2YXIga2V5ID0gY2FsY3VsYXRlUERGMjBIYXNoKHBhc3N3b3JkLCBoYXNoRGF0YSwgdXNlckJ5dGVzKTsKICAgICAgdmFyIGNpcGhlciA9IG5ldyBBRVMyNTZDaXBoZXIoa2V5KTsKICAgICAgcmV0dXJuIGNpcGhlci5kZWNyeXB0QmxvY2sob3duZXJFbmNyeXB0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFVpbnQ4QXJyYXkoMTYpKTsKCiAgICB9LAogICAgZ2V0VXNlcktleTogZnVuY3Rpb24gUERGMjBfZ2V0VXNlcktleShwYXNzd29yZCwgdXNlcktleVNhbHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJFbmNyeXB0aW9uKSB7CiAgICAgIHZhciBoYXNoRGF0YSA9IG5ldyBVaW50OEFycmF5KHBhc3N3b3JkLmxlbmd0aCArIDgpOwogICAgICBoYXNoRGF0YS5zZXQocGFzc3dvcmQsIDApOwogICAgICBoYXNoRGF0YS5zZXQodXNlcktleVNhbHQsIHBhc3N3b3JkLmxlbmd0aCk7CiAgICAgIC8va2V5IGlzIHRoZSBkZWNyeXB0aW9uIGtleSBmb3IgdGhlIFVFIHN0cmluZwogICAgICB2YXIga2V5ID0gY2FsY3VsYXRlUERGMjBIYXNoKHBhc3N3b3JkLCBoYXNoRGF0YSwgW10pOwogICAgICB2YXIgY2lwaGVyID0gbmV3IEFFUzI1NkNpcGhlcihrZXkpOwogICAgICByZXR1cm4gY2lwaGVyLmRlY3J5cHRCbG9jayh1c2VyRW5jcnlwdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBVaW50OEFycmF5KDE2KSk7CiAgICB9CiAgfTsKICByZXR1cm4gUERGMjA7Cn0pKCk7Cgp2YXIgQ2lwaGVyVHJhbnNmb3JtID0gKGZ1bmN0aW9uIENpcGhlclRyYW5zZm9ybUNsb3N1cmUoKSB7CiAgZnVuY3Rpb24gQ2lwaGVyVHJhbnNmb3JtKHN0cmluZ0NpcGhlckNvbnN0cnVjdG9yLCBzdHJlYW1DaXBoZXJDb25zdHJ1Y3RvcikgewogICAgdGhpcy5zdHJpbmdDaXBoZXJDb25zdHJ1Y3RvciA9IHN0cmluZ0NpcGhlckNvbnN0cnVjdG9yOwogICAgdGhpcy5zdHJlYW1DaXBoZXJDb25zdHJ1Y3RvciA9IHN0cmVhbUNpcGhlckNvbnN0cnVjdG9yOwogIH0KCiAgQ2lwaGVyVHJhbnNmb3JtLnByb3RvdHlwZSA9IHsKICAgIGNyZWF0ZVN0cmVhbTogZnVuY3Rpb24gQ2lwaGVyVHJhbnNmb3JtX2NyZWF0ZVN0cmVhbShzdHJlYW0sIGxlbmd0aCkgewogICAgICB2YXIgY2lwaGVyID0gbmV3IHRoaXMuc3RyZWFtQ2lwaGVyQ29uc3RydWN0b3IoKTsKICAgICAgcmV0dXJuIG5ldyBEZWNyeXB0U3RyZWFtKHN0cmVhbSwgbGVuZ3RoLAogICAgICAgIGZ1bmN0aW9uIGNpcGhlclRyYW5zZm9ybURlY3J5cHRTdHJlYW0oZGF0YSwgZmluYWxpemUpIHsKICAgICAgICAgIHJldHVybiBjaXBoZXIuZGVjcnlwdEJsb2NrKGRhdGEsIGZpbmFsaXplKTsKICAgICAgICB9CiAgICAgICk7CiAgICB9LAogICAgZGVjcnlwdFN0cmluZzogZnVuY3Rpb24gQ2lwaGVyVHJhbnNmb3JtX2RlY3J5cHRTdHJpbmcocykgewogICAgICB2YXIgY2lwaGVyID0gbmV3IHRoaXMuc3RyaW5nQ2lwaGVyQ29uc3RydWN0b3IoKTsKICAgICAgdmFyIGRhdGEgPSBzdHJpbmdUb0J5dGVzKHMpOwogICAgICBkYXRhID0gY2lwaGVyLmRlY3J5cHRCbG9jayhkYXRhLCB0cnVlKTsKICAgICAgcmV0dXJuIGJ5dGVzVG9TdHJpbmcoZGF0YSk7CiAgICB9CiAgfTsKICByZXR1cm4gQ2lwaGVyVHJhbnNmb3JtOwp9KSgpOwoKdmFyIENpcGhlclRyYW5zZm9ybUZhY3RvcnkgPSAoZnVuY3Rpb24gQ2lwaGVyVHJhbnNmb3JtRmFjdG9yeUNsb3N1cmUoKSB7CiAgdmFyIGRlZmF1bHRQYXNzd29yZEJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoWwogICAgMHgyOCwgMHhCRiwgMHg0RSwgMHg1RSwgMHg0RSwgMHg3NSwgMHg4QSwgMHg0MSwKICAgIDB4NjQsIDB4MDAsIDB4NEUsIDB4NTYsIDB4RkYsIDB4RkEsIDB4MDEsIDB4MDgsCiAgICAweDJFLCAweDJFLCAweDAwLCAweEI2LCAweEQwLCAweDY4LCAweDNFLCAweDgwLAogICAgMHgyRiwgMHgwQywgMHhBOSwgMHhGRSwgMHg2NCwgMHg1MywgMHg2OSwgMHg3QV0pOwoKICBmdW5jdGlvbiBjcmVhdGVFbmNyeXB0aW9uS2V5MjAocmV2aXNpb24sIHBhc3N3b3JkLCBvd25lclBhc3N3b3JkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvd25lclZhbGlkYXRpb25TYWx0LCBvd25lcktleVNhbHQsIHVCeXRlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlclBhc3N3b3JkLCB1c2VyVmFsaWRhdGlvblNhbHQsIHVzZXJLZXlTYWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvd25lckVuY3J5cHRpb24sIHVzZXJFbmNyeXB0aW9uLCBwZXJtcykgewogICAgaWYgKHBhc3N3b3JkKSB7CiAgICAgIHZhciBwYXNzd29yZExlbmd0aCA9IE1hdGgubWluKDEyNywgcGFzc3dvcmQubGVuZ3RoKTsKICAgICAgcGFzc3dvcmQgPSBwYXNzd29yZC5zdWJhcnJheSgwLCBwYXNzd29yZExlbmd0aCk7CiAgICB9IGVsc2UgewogICAgICBwYXNzd29yZCA9IFtdOwogICAgfQogICAgdmFyIHBkZkFsZ29yaXRobTsKICAgIGlmIChyZXZpc2lvbiA9PT0gNikgewogICAgICBwZGZBbGdvcml0aG0gPSBuZXcgUERGMjAoKTsKICAgIH0gZWxzZSB7CiAgICAgIHBkZkFsZ29yaXRobSA9IG5ldyBQREYxNygpOwogICAgfQoKICAgIGlmIChwZGZBbGdvcml0aG0pIHsKICAgICAgaWYgKHBkZkFsZ29yaXRobS5jaGVja1VzZXJQYXNzd29yZChwYXNzd29yZCwgdXNlclZhbGlkYXRpb25TYWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJQYXNzd29yZCkpIHsKICAgICAgICByZXR1cm4gcGRmQWxnb3JpdGhtLmdldFVzZXJLZXkocGFzc3dvcmQsIHVzZXJLZXlTYWx0LCB1c2VyRW5jcnlwdGlvbik7CiAgICAgIH0gZWxzZSBpZiAocGRmQWxnb3JpdGhtLmNoZWNrT3duZXJQYXNzd29yZChwYXNzd29yZCwgb3duZXJWYWxpZGF0aW9uU2FsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVCeXRlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG93bmVyUGFzc3dvcmQpKSB7CiAgICAgICAgcmV0dXJuIHBkZkFsZ29yaXRobS5nZXRPd25lcktleShwYXNzd29yZCwgb3duZXJLZXlTYWx0LCB1Qnl0ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvd25lckVuY3J5cHRpb24pOwogICAgICB9CiAgICB9CgogICAgcmV0dXJuIG51bGw7CiAgfQoKICBmdW5jdGlvbiBwcmVwYXJlS2V5RGF0YShmaWxlSWQsIHBhc3N3b3JkLCBvd25lclBhc3N3b3JkLCB1c2VyUGFzc3dvcmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MsIHJldmlzaW9uLCBrZXlMZW5ndGgsIGVuY3J5cHRNZXRhZGF0YSkgewogICAgdmFyIGhhc2hEYXRhU2l6ZSA9IDQwICsgb3duZXJQYXNzd29yZC5sZW5ndGggKyBmaWxlSWQubGVuZ3RoOwogICAgdmFyIGhhc2hEYXRhID0gbmV3IFVpbnQ4QXJyYXkoaGFzaERhdGFTaXplKSwgaSA9IDAsIGosIG47CiAgICBpZiAocGFzc3dvcmQpIHsKICAgICAgbiA9IE1hdGgubWluKDMyLCBwYXNzd29yZC5sZW5ndGgpOwogICAgICBmb3IgKDsgaSA8IG47ICsraSkgewogICAgICAgIGhhc2hEYXRhW2ldID0gcGFzc3dvcmRbaV07CiAgICAgIH0KICAgIH0KICAgIGogPSAwOwogICAgd2hpbGUgKGkgPCAzMikgewogICAgICBoYXNoRGF0YVtpKytdID0gZGVmYXVsdFBhc3N3b3JkQnl0ZXNbaisrXTsKICAgIH0KICAgIC8vIGFzIG5vdyB0aGUgcGFkZGVkIHBhc3N3b3JkIGluIHRoZSBoYXNoRGF0YVswLi5pXQogICAgZm9yIChqID0gMCwgbiA9IG93bmVyUGFzc3dvcmQubGVuZ3RoOyBqIDwgbjsgKytqKSB7CiAgICAgIGhhc2hEYXRhW2krK10gPSBvd25lclBhc3N3b3JkW2pdOwogICAgfQogICAgaGFzaERhdGFbaSsrXSA9IGZsYWdzICYgMHhGRjsKICAgIGhhc2hEYXRhW2krK10gPSAoZmxhZ3MgPj4gOCkgJiAweEZGOwogICAgaGFzaERhdGFbaSsrXSA9IChmbGFncyA+PiAxNikgJiAweEZGOwogICAgaGFzaERhdGFbaSsrXSA9IChmbGFncyA+Pj4gMjQpICYgMHhGRjsKICAgIGZvciAoaiA9IDAsIG4gPSBmaWxlSWQubGVuZ3RoOyBqIDwgbjsgKytqKSB7CiAgICAgIGhhc2hEYXRhW2krK10gPSBmaWxlSWRbal07CiAgICB9CiAgICBpZiAocmV2aXNpb24gPj0gNCAmJiAhZW5jcnlwdE1ldGFkYXRhKSB7CiAgICAgIGhhc2hEYXRhW2krK10gPSAweEZGOwogICAgICBoYXNoRGF0YVtpKytdID0gMHhGRjsKICAgICAgaGFzaERhdGFbaSsrXSA9IDB4RkY7CiAgICAgIGhhc2hEYXRhW2krK10gPSAweEZGOwogICAgfQogICAgdmFyIGhhc2ggPSBjYWxjdWxhdGVNRDUoaGFzaERhdGEsIDAsIGkpOwogICAgdmFyIGtleUxlbmd0aEluQnl0ZXMgPSBrZXlMZW5ndGggPj4gMzsKICAgIGlmIChyZXZpc2lvbiA+PSAzKSB7CiAgICAgIGZvciAoaiA9IDA7IGogPCA1MDsgKytqKSB7CiAgICAgICAgaGFzaCA9IGNhbGN1bGF0ZU1ENShoYXNoLCAwLCBrZXlMZW5ndGhJbkJ5dGVzKTsKICAgICAgfQogICAgfQogICAgdmFyIGVuY3J5cHRpb25LZXkgPSBoYXNoLnN1YmFycmF5KDAsIGtleUxlbmd0aEluQnl0ZXMpOwogICAgdmFyIGNpcGhlciwgY2hlY2tEYXRhOwoKICAgIGlmIChyZXZpc2lvbiA+PSAzKSB7CiAgICAgIGZvciAoaSA9IDA7IGkgPCAzMjsgKytpKSB7CiAgICAgICAgaGFzaERhdGFbaV0gPSBkZWZhdWx0UGFzc3dvcmRCeXRlc1tpXTsKICAgICAgfQogICAgICBmb3IgKGogPSAwLCBuID0gZmlsZUlkLmxlbmd0aDsgaiA8IG47ICsraikgewogICAgICAgIGhhc2hEYXRhW2krK10gPSBmaWxlSWRbal07CiAgICAgIH0KICAgICAgY2lwaGVyID0gbmV3IEFSQ0ZvdXJDaXBoZXIoZW5jcnlwdGlvbktleSk7CiAgICAgIGNoZWNrRGF0YSA9IGNpcGhlci5lbmNyeXB0QmxvY2soY2FsY3VsYXRlTUQ1KGhhc2hEYXRhLCAwLCBpKSk7CiAgICAgIG4gPSBlbmNyeXB0aW9uS2V5Lmxlbmd0aDsKICAgICAgdmFyIGRlcml2ZWRLZXkgPSBuZXcgVWludDhBcnJheShuKSwgazsKICAgICAgZm9yIChqID0gMTsgaiA8PSAxOTsgKytqKSB7CiAgICAgICAgZm9yIChrID0gMDsgayA8IG47ICsraykgewogICAgICAgICAgZGVyaXZlZEtleVtrXSA9IGVuY3J5cHRpb25LZXlba10gXiBqOwogICAgICAgIH0KICAgICAgICBjaXBoZXIgPSBuZXcgQVJDRm91ckNpcGhlcihkZXJpdmVkS2V5KTsKICAgICAgICBjaGVja0RhdGEgPSBjaXBoZXIuZW5jcnlwdEJsb2NrKGNoZWNrRGF0YSk7CiAgICAgIH0KICAgICAgZm9yIChqID0gMCwgbiA9IGNoZWNrRGF0YS5sZW5ndGg7IGogPCBuOyArK2opIHsKICAgICAgICBpZiAodXNlclBhc3N3b3JkW2pdICE9PSBjaGVja0RhdGFbal0pIHsKICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgY2lwaGVyID0gbmV3IEFSQ0ZvdXJDaXBoZXIoZW5jcnlwdGlvbktleSk7CiAgICAgIGNoZWNrRGF0YSA9IGNpcGhlci5lbmNyeXB0QmxvY2soZGVmYXVsdFBhc3N3b3JkQnl0ZXMpOwogICAgICBmb3IgKGogPSAwLCBuID0gY2hlY2tEYXRhLmxlbmd0aDsgaiA8IG47ICsraikgewogICAgICAgIGlmICh1c2VyUGFzc3dvcmRbal0gIT09IGNoZWNrRGF0YVtqXSkgewogICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICByZXR1cm4gZW5jcnlwdGlvbktleTsKICB9CgogIGZ1bmN0aW9uIGRlY29kZVVzZXJQYXNzd29yZChwYXNzd29yZCwgb3duZXJQYXNzd29yZCwgcmV2aXNpb24sIGtleUxlbmd0aCkgewogICAgdmFyIGhhc2hEYXRhID0gbmV3IFVpbnQ4QXJyYXkoMzIpLCBpID0gMCwgaiwgbjsKICAgIG4gPSBNYXRoLm1pbigzMiwgcGFzc3dvcmQubGVuZ3RoKTsKICAgIGZvciAoOyBpIDwgbjsgKytpKSB7CiAgICAgIGhhc2hEYXRhW2ldID0gcGFzc3dvcmRbaV07CiAgICB9CiAgICBqID0gMDsKICAgIHdoaWxlIChpIDwgMzIpIHsKICAgICAgaGFzaERhdGFbaSsrXSA9IGRlZmF1bHRQYXNzd29yZEJ5dGVzW2orK107CiAgICB9CiAgICB2YXIgaGFzaCA9IGNhbGN1bGF0ZU1ENShoYXNoRGF0YSwgMCwgaSk7CiAgICB2YXIga2V5TGVuZ3RoSW5CeXRlcyA9IGtleUxlbmd0aCA+PiAzOwogICAgaWYgKHJldmlzaW9uID49IDMpIHsKICAgICAgZm9yIChqID0gMDsgaiA8IDUwOyArK2opIHsKICAgICAgICBoYXNoID0gY2FsY3VsYXRlTUQ1KGhhc2gsIDAsIGhhc2gubGVuZ3RoKTsKICAgICAgfQogICAgfQoKICAgIHZhciBjaXBoZXIsIHVzZXJQYXNzd29yZDsKICAgIGlmIChyZXZpc2lvbiA+PSAzKSB7CiAgICAgIHVzZXJQYXNzd29yZCA9IG93bmVyUGFzc3dvcmQ7CiAgICAgIHZhciBkZXJpdmVkS2V5ID0gbmV3IFVpbnQ4QXJyYXkoa2V5TGVuZ3RoSW5CeXRlcyksIGs7CiAgICAgIGZvciAoaiA9IDE5OyBqID49IDA7IGotLSkgewogICAgICAgIGZvciAoayA9IDA7IGsgPCBrZXlMZW5ndGhJbkJ5dGVzOyArK2spIHsKICAgICAgICAgIGRlcml2ZWRLZXlba10gPSBoYXNoW2tdIF4gajsKICAgICAgICB9CiAgICAgICAgY2lwaGVyID0gbmV3IEFSQ0ZvdXJDaXBoZXIoZGVyaXZlZEtleSk7CiAgICAgICAgdXNlclBhc3N3b3JkID0gY2lwaGVyLmVuY3J5cHRCbG9jayh1c2VyUGFzc3dvcmQpOwogICAgICB9CiAgICB9IGVsc2UgewogICAgICBjaXBoZXIgPSBuZXcgQVJDRm91ckNpcGhlcihoYXNoLnN1YmFycmF5KDAsIGtleUxlbmd0aEluQnl0ZXMpKTsKICAgICAgdXNlclBhc3N3b3JkID0gY2lwaGVyLmVuY3J5cHRCbG9jayhvd25lclBhc3N3b3JkKTsKICAgIH0KICAgIHJldHVybiB1c2VyUGFzc3dvcmQ7CiAgfQoKICB2YXIgaWRlbnRpdHlOYW1lID0gTmFtZS5nZXQoJ0lkZW50aXR5Jyk7CgogIGZ1bmN0aW9uIENpcGhlclRyYW5zZm9ybUZhY3RvcnkoZGljdCwgZmlsZUlkLCBwYXNzd29yZCkgewogICAgdmFyIGZpbHRlciA9IGRpY3QuZ2V0KCdGaWx0ZXInKTsKICAgIGlmICghaXNOYW1lKGZpbHRlcikgfHwgZmlsdGVyLm5hbWUgIT09ICdTdGFuZGFyZCcpIHsKICAgICAgZXJyb3IoJ3Vua25vd24gZW5jcnlwdGlvbiBtZXRob2QnKTsKICAgIH0KICAgIHRoaXMuZGljdCA9IGRpY3Q7CiAgICB2YXIgYWxnb3JpdGhtID0gZGljdC5nZXQoJ1YnKTsKICAgIGlmICghaXNJbnQoYWxnb3JpdGhtKSB8fAogICAgICAgIChhbGdvcml0aG0gIT09IDEgJiYgYWxnb3JpdGhtICE9PSAyICYmIGFsZ29yaXRobSAhPT0gNCAmJgogICAgICAgIGFsZ29yaXRobSAhPT0gNSkpIHsKICAgICAgZXJyb3IoJ3Vuc3VwcG9ydGVkIGVuY3J5cHRpb24gYWxnb3JpdGhtJyk7CiAgICB9CiAgICB0aGlzLmFsZ29yaXRobSA9IGFsZ29yaXRobTsKICAgIHZhciBrZXlMZW5ndGggPSBkaWN0LmdldCgnTGVuZ3RoJykgfHwgNDA7CiAgICBpZiAoIWlzSW50KGtleUxlbmd0aCkgfHwKICAgICAgICBrZXlMZW5ndGggPCA0MCB8fCAoa2V5TGVuZ3RoICUgOCkgIT09IDApIHsKICAgICAgZXJyb3IoJ2ludmFsaWQga2V5IGxlbmd0aCcpOwogICAgfQoKICAgIC8vIHByZXBhcmUga2V5cwogICAgdmFyIG93bmVyUGFzc3dvcmQgPSBzdHJpbmdUb0J5dGVzKGRpY3QuZ2V0KCdPJykpLnN1YmFycmF5KDAsIDMyKTsKICAgIHZhciB1c2VyUGFzc3dvcmQgPSBzdHJpbmdUb0J5dGVzKGRpY3QuZ2V0KCdVJykpLnN1YmFycmF5KDAsIDMyKTsKICAgIHZhciBmbGFncyA9IGRpY3QuZ2V0KCdQJyk7CiAgICB2YXIgcmV2aXNpb24gPSBkaWN0LmdldCgnUicpOwogICAgLy8gbWVhbmluZ2Z1bCB3aGVuIFYgaXMgNCBvciA1CiAgICB2YXIgZW5jcnlwdE1ldGFkYXRhID0gKChhbGdvcml0aG0gPT09IDQgfHwgYWxnb3JpdGhtID09PSA1KSAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0LmdldCgnRW5jcnlwdE1ldGFkYXRhJykgIT09IGZhbHNlKTsKICAgIHRoaXMuZW5jcnlwdE1ldGFkYXRhID0gZW5jcnlwdE1ldGFkYXRhOwoKICAgIHZhciBmaWxlSWRCeXRlcyA9IHN0cmluZ1RvQnl0ZXMoZmlsZUlkKTsKICAgIHZhciBwYXNzd29yZEJ5dGVzOwogICAgaWYgKHBhc3N3b3JkKSB7CiAgICAgIHBhc3N3b3JkQnl0ZXMgPSBzdHJpbmdUb0J5dGVzKHBhc3N3b3JkKTsKICAgIH0KCiAgICB2YXIgZW5jcnlwdGlvbktleTsKICAgIGlmIChhbGdvcml0aG0gIT09IDUpIHsKICAgICAgZW5jcnlwdGlvbktleSA9IHByZXBhcmVLZXlEYXRhKGZpbGVJZEJ5dGVzLCBwYXNzd29yZEJ5dGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3duZXJQYXNzd29yZCwgdXNlclBhc3N3b3JkLCBmbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldmlzaW9uLCBrZXlMZW5ndGgsIGVuY3J5cHRNZXRhZGF0YSk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgdmFyIG93bmVyVmFsaWRhdGlvblNhbHQgPSBzdHJpbmdUb0J5dGVzKGRpY3QuZ2V0KCdPJykpLnN1YmFycmF5KDMyLCA0MCk7CiAgICAgIHZhciBvd25lcktleVNhbHQgPSBzdHJpbmdUb0J5dGVzKGRpY3QuZ2V0KCdPJykpLnN1YmFycmF5KDQwLCA0OCk7CiAgICAgIHZhciB1Qnl0ZXMgPSBzdHJpbmdUb0J5dGVzKGRpY3QuZ2V0KCdVJykpLnN1YmFycmF5KDAsIDQ4KTsKICAgICAgdmFyIHVzZXJWYWxpZGF0aW9uU2FsdCA9IHN0cmluZ1RvQnl0ZXMoZGljdC5nZXQoJ1UnKSkuc3ViYXJyYXkoMzIsIDQwKTsKICAgICAgdmFyIHVzZXJLZXlTYWx0ID0gc3RyaW5nVG9CeXRlcyhkaWN0LmdldCgnVScpKS5zdWJhcnJheSg0MCwgNDgpOwogICAgICB2YXIgb3duZXJFbmNyeXB0aW9uID0gc3RyaW5nVG9CeXRlcyhkaWN0LmdldCgnT0UnKSk7CiAgICAgIHZhciB1c2VyRW5jcnlwdGlvbiA9IHN0cmluZ1RvQnl0ZXMoZGljdC5nZXQoJ1VFJykpOwogICAgICB2YXIgcGVybXMgPSBzdHJpbmdUb0J5dGVzKGRpY3QuZ2V0KCdQZXJtcycpKTsKICAgICAgZW5jcnlwdGlvbktleSA9CiAgICAgICAgY3JlYXRlRW5jcnlwdGlvbktleTIwKHJldmlzaW9uLCBwYXNzd29yZEJ5dGVzLAogICAgICAgICAgb3duZXJQYXNzd29yZCwgb3duZXJWYWxpZGF0aW9uU2FsdCwKICAgICAgICAgIG93bmVyS2V5U2FsdCwgdUJ5dGVzLAogICAgICAgICAgdXNlclBhc3N3b3JkLCB1c2VyVmFsaWRhdGlvblNhbHQsCiAgICAgICAgICB1c2VyS2V5U2FsdCwgb3duZXJFbmNyeXB0aW9uLAogICAgICAgICAgdXNlckVuY3J5cHRpb24sIHBlcm1zKTsKICAgIH0KICAgIGlmICghZW5jcnlwdGlvbktleSAmJiAhcGFzc3dvcmQpIHsKICAgICAgdGhyb3cgbmV3IFBhc3N3b3JkRXhjZXB0aW9uKCdObyBwYXNzd29yZCBnaXZlbicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzd29yZFJlc3BvbnNlcy5ORUVEX1BBU1NXT1JEKTsKICAgIH0gZWxzZSBpZiAoIWVuY3J5cHRpb25LZXkgJiYgcGFzc3dvcmQpIHsKICAgICAgLy8gQXR0ZW1wdGluZyB1c2UgdGhlIHBhc3N3b3JkIGFzIGFuIG93bmVyIHBhc3N3b3JkCiAgICAgIHZhciBkZWNvZGVkUGFzc3dvcmQgPSBkZWNvZGVVc2VyUGFzc3dvcmQocGFzc3dvcmRCeXRlcywgb3duZXJQYXNzd29yZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXZpc2lvbiwga2V5TGVuZ3RoKTsKICAgICAgZW5jcnlwdGlvbktleSA9IHByZXBhcmVLZXlEYXRhKGZpbGVJZEJ5dGVzLCBkZWNvZGVkUGFzc3dvcmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvd25lclBhc3N3b3JkLCB1c2VyUGFzc3dvcmQsIGZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2aXNpb24sIGtleUxlbmd0aCwgZW5jcnlwdE1ldGFkYXRhKTsKICAgIH0KCiAgICBpZiAoIWVuY3J5cHRpb25LZXkpIHsKICAgICAgdGhyb3cgbmV3IFBhc3N3b3JkRXhjZXB0aW9uKCdJbmNvcnJlY3QgUGFzc3dvcmQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc3dvcmRSZXNwb25zZXMuSU5DT1JSRUNUX1BBU1NXT1JEKTsKICAgIH0KCiAgICB0aGlzLmVuY3J5cHRpb25LZXkgPSBlbmNyeXB0aW9uS2V5OwoKICAgIGlmIChhbGdvcml0aG0gPj0gNCkgewogICAgICB0aGlzLmNmID0gZGljdC5nZXQoJ0NGJyk7CiAgICAgIHRoaXMuc3RtZiA9IGRpY3QuZ2V0KCdTdG1GJykgfHwgaWRlbnRpdHlOYW1lOwogICAgICB0aGlzLnN0cmYgPSBkaWN0LmdldCgnU3RyRicpIHx8IGlkZW50aXR5TmFtZTsKICAgICAgdGhpcy5lZmYgPSBkaWN0LmdldCgnRUZGJykgfHwgdGhpcy5zdG1mOwogICAgfQogIH0KCiAgZnVuY3Rpb24gYnVpbGRPYmplY3RLZXkobnVtLCBnZW4sIGVuY3J5cHRpb25LZXksIGlzQWVzKSB7CiAgICB2YXIga2V5ID0gbmV3IFVpbnQ4QXJyYXkoZW5jcnlwdGlvbktleS5sZW5ndGggKyA5KSwgaSwgbjsKICAgIGZvciAoaSA9IDAsIG4gPSBlbmNyeXB0aW9uS2V5Lmxlbmd0aDsgaSA8IG47ICsraSkgewogICAgICBrZXlbaV0gPSBlbmNyeXB0aW9uS2V5W2ldOwogICAgfQogICAga2V5W2krK10gPSBudW0gJiAweEZGOwogICAga2V5W2krK10gPSAobnVtID4+IDgpICYgMHhGRjsKICAgIGtleVtpKytdID0gKG51bSA+PiAxNikgJiAweEZGOwogICAga2V5W2krK10gPSBnZW4gJiAweEZGOwogICAga2V5W2krK10gPSAoZ2VuID4+IDgpICYgMHhGRjsKICAgIGlmIChpc0FlcykgewogICAgICBrZXlbaSsrXSA9IDB4NzM7CiAgICAgIGtleVtpKytdID0gMHg0MTsKICAgICAga2V5W2krK10gPSAweDZDOwogICAgICBrZXlbaSsrXSA9IDB4NTQ7CiAgICB9CiAgICB2YXIgaGFzaCA9IGNhbGN1bGF0ZU1ENShrZXksIDAsIGkpOwogICAgcmV0dXJuIGhhc2guc3ViYXJyYXkoMCwgTWF0aC5taW4oZW5jcnlwdGlvbktleS5sZW5ndGggKyA1LCAxNikpOwogIH0KCiAgZnVuY3Rpb24gYnVpbGRDaXBoZXJDb25zdHJ1Y3RvcihjZiwgbmFtZSwgbnVtLCBnZW4sIGtleSkgewogICAgdmFyIGNyeXB0RmlsdGVyID0gY2YuZ2V0KG5hbWUubmFtZSk7CiAgICB2YXIgY2ZtOwogICAgaWYgKGNyeXB0RmlsdGVyICE9PSBudWxsICYmIGNyeXB0RmlsdGVyICE9PSB1bmRlZmluZWQpIHsKICAgICAgY2ZtID0gY3J5cHRGaWx0ZXIuZ2V0KCdDRk0nKTsKICAgIH0KICAgIGlmICghY2ZtIHx8IGNmbS5uYW1lID09PSAnTm9uZScpIHsKICAgICAgcmV0dXJuIGZ1bmN0aW9uIGNpcGhlclRyYW5zZm9ybUZhY3RvcnlCdWlsZENpcGhlckNvbnN0cnVjdG9yTm9uZSgpIHsKICAgICAgICByZXR1cm4gbmV3IE51bGxDaXBoZXIoKTsKICAgICAgfTsKICAgIH0KICAgIGlmICgnVjInID09PSBjZm0ubmFtZSkgewogICAgICByZXR1cm4gZnVuY3Rpb24gY2lwaGVyVHJhbnNmb3JtRmFjdG9yeUJ1aWxkQ2lwaGVyQ29uc3RydWN0b3JWMigpIHsKICAgICAgICByZXR1cm4gbmV3IEFSQ0ZvdXJDaXBoZXIoYnVpbGRPYmplY3RLZXkobnVtLCBnZW4sIGtleSwgZmFsc2UpKTsKICAgICAgfTsKICAgIH0KICAgIGlmICgnQUVTVjInID09PSBjZm0ubmFtZSkgewogICAgICByZXR1cm4gZnVuY3Rpb24gY2lwaGVyVHJhbnNmb3JtRmFjdG9yeUJ1aWxkQ2lwaGVyQ29uc3RydWN0b3JBRVNWMigpIHsKICAgICAgICByZXR1cm4gbmV3IEFFUzEyOENpcGhlcihidWlsZE9iamVjdEtleShudW0sIGdlbiwga2V5LCB0cnVlKSk7CiAgICAgIH07CiAgICB9CiAgICBpZiAoJ0FFU1YzJyA9PT0gY2ZtLm5hbWUpIHsKICAgICAgcmV0dXJuIGZ1bmN0aW9uIGNpcGhlclRyYW5zZm9ybUZhY3RvcnlCdWlsZENpcGhlckNvbnN0cnVjdG9yQUVTVjMoKSB7CiAgICAgICAgcmV0dXJuIG5ldyBBRVMyNTZDaXBoZXIoa2V5KTsKICAgICAgfTsKICAgIH0KICAgIGVycm9yKCdVbmtub3duIGNyeXB0byBtZXRob2QnKTsKICB9CgogIENpcGhlclRyYW5zZm9ybUZhY3RvcnkucHJvdG90eXBlID0gewogICAgY3JlYXRlQ2lwaGVyVHJhbnNmb3JtOgogICAgICBmdW5jdGlvbiBDaXBoZXJUcmFuc2Zvcm1GYWN0b3J5X2NyZWF0ZUNpcGhlclRyYW5zZm9ybShudW0sIGdlbikgewogICAgICBpZiAodGhpcy5hbGdvcml0aG0gPT09IDQgfHwgdGhpcy5hbGdvcml0aG0gPT09IDUpIHsKICAgICAgICByZXR1cm4gbmV3IENpcGhlclRyYW5zZm9ybSgKICAgICAgICAgIGJ1aWxkQ2lwaGVyQ29uc3RydWN0b3IodGhpcy5jZiwgdGhpcy5zdG1mLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW0sIGdlbiwgdGhpcy5lbmNyeXB0aW9uS2V5KSwKICAgICAgICAgIGJ1aWxkQ2lwaGVyQ29uc3RydWN0b3IodGhpcy5jZiwgdGhpcy5zdHJmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW0sIGdlbiwgdGhpcy5lbmNyeXB0aW9uS2V5KSk7CiAgICAgIH0KICAgICAgLy8gYWxnb3JpdGhtcyAxIGFuZCAyCiAgICAgIHZhciBrZXkgPSBidWlsZE9iamVjdEtleShudW0sIGdlbiwgdGhpcy5lbmNyeXB0aW9uS2V5LCBmYWxzZSk7CiAgICAgIHZhciBjaXBoZXJDb25zdHJ1Y3RvciA9IGZ1bmN0aW9uIGJ1aWxkQ2lwaGVyQ2lwaGVyQ29uc3RydWN0b3IoKSB7CiAgICAgICAgcmV0dXJuIG5ldyBBUkNGb3VyQ2lwaGVyKGtleSk7CiAgICAgIH07CiAgICAgIHJldHVybiBuZXcgQ2lwaGVyVHJhbnNmb3JtKGNpcGhlckNvbnN0cnVjdG9yLCBjaXBoZXJDb25zdHJ1Y3Rvcik7CiAgICB9CiAgfTsKCiAgcmV0dXJuIENpcGhlclRyYW5zZm9ybUZhY3Rvcnk7Cn0pKCk7CgoKdmFyIFBhdHRlcm5UeXBlID0gewogIEZVTkNUSU9OX0JBU0VEOiAxLAogIEFYSUFMOiAyLAogIFJBRElBTDogMywKICBGUkVFX0ZPUk1fTUVTSDogNCwKICBMQVRUSUNFX0ZPUk1fTUVTSDogNSwKICBDT09OU19QQVRDSF9NRVNIOiA2LAogIFRFTlNPUl9QQVRDSF9NRVNIOiA3Cn07Cgp2YXIgUGF0dGVybiA9IChmdW5jdGlvbiBQYXR0ZXJuQ2xvc3VyZSgpIHsKICAvLyBDb25zdHJ1Y3RvciBzaG91bGQgZGVmaW5lIHRoaXMuZ2V0UGF0dGVybgogIGZ1bmN0aW9uIFBhdHRlcm4oKSB7CiAgICBlcnJvcignc2hvdWxkIG5vdCBjYWxsIFBhdHRlcm4gY29uc3RydWN0b3InKTsKICB9CgogIFBhdHRlcm4ucHJvdG90eXBlID0gewogICAgLy8gSW5wdXQ6IGN1cnJlbnQgQ2FudmFzIGNvbnRleHQKICAgIC8vIE91dHB1dDogdGhlIGFwcHJvcHJpYXRlIGZpbGxTdHlsZSBvciBzdHJva2VTdHlsZQogICAgZ2V0UGF0dGVybjogZnVuY3Rpb24gUGF0dGVybl9nZXRQYXR0ZXJuKGN0eCkgewogICAgICBlcnJvcignU2hvdWxkIG5vdCBjYWxsIFBhdHRlcm4uZ2V0U3R5bGU6ICcgKyBjdHgpOwogICAgfQogIH07CgogIFBhdHRlcm4ucGFyc2VTaGFkaW5nID0gZnVuY3Rpb24gUGF0dGVybl9wYXJzZVNoYWRpbmcoc2hhZGluZywgbWF0cml4LCB4cmVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzKSB7CgogICAgdmFyIGRpY3QgPSBpc1N0cmVhbShzaGFkaW5nKSA/IHNoYWRpbmcuZGljdCA6IHNoYWRpbmc7CiAgICB2YXIgdHlwZSA9IGRpY3QuZ2V0KCdTaGFkaW5nVHlwZScpOwoKICAgIHRyeSB7CiAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgIGNhc2UgUGF0dGVyblR5cGUuQVhJQUw6CiAgICAgICAgY2FzZSBQYXR0ZXJuVHlwZS5SQURJQUw6CiAgICAgICAgICAvLyBCb3RoIHJhZGlhbCBhbmQgYXhpYWwgc2hhZGluZ3MgYXJlIGhhbmRsZWQgYnkgUmFkaWFsQXhpYWwgc2hhZGluZy4KICAgICAgICAgIHJldHVybiBuZXcgU2hhZGluZ3MuUmFkaWFsQXhpYWwoZGljdCwgbWF0cml4LCB4cmVmLCByZXMpOwogICAgICAgIGNhc2UgUGF0dGVyblR5cGUuRlJFRV9GT1JNX01FU0g6CiAgICAgICAgY2FzZSBQYXR0ZXJuVHlwZS5MQVRUSUNFX0ZPUk1fTUVTSDoKICAgICAgICBjYXNlIFBhdHRlcm5UeXBlLkNPT05TX1BBVENIX01FU0g6CiAgICAgICAgY2FzZSBQYXR0ZXJuVHlwZS5URU5TT1JfUEFUQ0hfTUVTSDoKICAgICAgICAgIHJldHVybiBuZXcgU2hhZGluZ3MuTWVzaChzaGFkaW5nLCBtYXRyaXgsIHhyZWYsIHJlcyk7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBQYXR0ZXJuVHlwZTogJyArIHR5cGUpOwogICAgICB9CiAgICB9IGNhdGNoIChleCkgewogICAgICBpZiAoZXggaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbikgewogICAgICAgIHRocm93IGV4OwogICAgICB9CiAgICAgIFVuc3VwcG9ydGVkTWFuYWdlci5ub3RpZnkoVU5TVVBQT1JURURfRkVBVFVSRVMuc2hhZGluZ1BhdHRlcm4pOwogICAgICB3YXJuKGV4KTsKICAgICAgcmV0dXJuIG5ldyBTaGFkaW5ncy5EdW1teSgpOwogICAgfQogIH07CiAgcmV0dXJuIFBhdHRlcm47Cn0pKCk7Cgp2YXIgU2hhZGluZ3MgPSB7fTsKCi8vIEEgc21hbGwgbnVtYmVyIHRvIG9mZnNldCB0aGUgZmlyc3QvbGFzdCBjb2xvciBzdG9wcyBzbyB3ZSBjYW4gaW5zZXJ0IG9uZXMgdG8KLy8gc3VwcG9ydCBleHRlbmQuICBOdW1iZXIuTUlOX1ZBTFVFIGFwcGVhcnMgdG8gYmUgdG9vIHNtYWxsIGFuZCBicmVha3MgdGhlCi8vIGV4dGVuZC4gMWUtNyB3b3JrcyBpbiBGRiBidXQgY2hyb21lIHNlZW1zIHRvIHVzZSBhbiBldmVuIHNtYWxsZXIgc2l6ZWQgbnVtYmVyCi8vIGludGVybmFsbHkgc28gd2UgaGF2ZSB0byBnbyBiaWdnZXIuClNoYWRpbmdzLlNNQUxMX05VTUJFUiA9IDFlLTI7CgovLyBSYWRpYWwgYW5kIGF4aWFsIHNoYWRpbmcgaGF2ZSB2ZXJ5IHNpbWlsYXIgaW1wbGVtZW50YXRpb25zCi8vIElmIG5lZWRlZCwgdGhlIGltcGxlbWVudGF0aW9ucyBjYW4gYmUgYnJva2VuIGludG8gdHdvIGNsYXNzZXMKU2hhZGluZ3MuUmFkaWFsQXhpYWwgPSAoZnVuY3Rpb24gUmFkaWFsQXhpYWxDbG9zdXJlKCkgewogIGZ1bmN0aW9uIFJhZGlhbEF4aWFsKGRpY3QsIG1hdHJpeCwgeHJlZiwgcmVzKSB7CiAgICB0aGlzLm1hdHJpeCA9IG1hdHJpeDsKICAgIHRoaXMuY29vcmRzQXJyID0gZGljdC5nZXQoJ0Nvb3JkcycpOwogICAgdGhpcy5zaGFkaW5nVHlwZSA9IGRpY3QuZ2V0KCdTaGFkaW5nVHlwZScpOwogICAgdGhpcy50eXBlID0gJ1BhdHRlcm4nOwogICAgdmFyIGNzID0gZGljdC5nZXQoJ0NvbG9yU3BhY2UnLCAnQ1MnKTsKICAgIGNzID0gQ29sb3JTcGFjZS5wYXJzZShjcywgeHJlZiwgcmVzKTsKICAgIHRoaXMuY3MgPSBjczsKCiAgICB2YXIgdDAgPSAwLjAsIHQxID0gMS4wOwogICAgaWYgKGRpY3QuaGFzKCdEb21haW4nKSkgewogICAgICB2YXIgZG9tYWluQXJyID0gZGljdC5nZXQoJ0RvbWFpbicpOwogICAgICB0MCA9IGRvbWFpbkFyclswXTsKICAgICAgdDEgPSBkb21haW5BcnJbMV07CiAgICB9CgogICAgdmFyIGV4dGVuZFN0YXJ0ID0gZmFsc2UsIGV4dGVuZEVuZCA9IGZhbHNlOwogICAgaWYgKGRpY3QuaGFzKCdFeHRlbmQnKSkgewogICAgICB2YXIgZXh0ZW5kQXJyID0gZGljdC5nZXQoJ0V4dGVuZCcpOwogICAgICBleHRlbmRTdGFydCA9IGV4dGVuZEFyclswXTsKICAgICAgZXh0ZW5kRW5kID0gZXh0ZW5kQXJyWzFdOwogICAgfQoKICAgIGlmICh0aGlzLnNoYWRpbmdUeXBlID09PSBQYXR0ZXJuVHlwZS5SQURJQUwgJiYKICAgICAgICghZXh0ZW5kU3RhcnQgfHwgIWV4dGVuZEVuZCkpIHsKICAgICAgLy8gUmFkaWFsIGdyYWRpZW50IG9ubHkgY3VycmVudGx5IHdvcmtzIGlmIGVpdGhlciBjaXJjbGUgaXMgZnVsbHkgd2l0aGluCiAgICAgIC8vIHRoZSBvdGhlciBjaXJjbGUuCiAgICAgIHZhciB4MSA9IHRoaXMuY29vcmRzQXJyWzBdOwogICAgICB2YXIgeTEgPSB0aGlzLmNvb3Jkc0FyclsxXTsKICAgICAgdmFyIHIxID0gdGhpcy5jb29yZHNBcnJbMl07CiAgICAgIHZhciB4MiA9IHRoaXMuY29vcmRzQXJyWzNdOwogICAgICB2YXIgeTIgPSB0aGlzLmNvb3Jkc0Fycls0XTsKICAgICAgdmFyIHIyID0gdGhpcy5jb29yZHNBcnJbNV07CiAgICAgIHZhciBkaXN0YW5jZSA9IE1hdGguc3FydCgoeDEgLSB4MikgKiAoeDEgLSB4MikgKyAoeTEgLSB5MikgKiAoeTEgLSB5MikpOwogICAgICBpZiAocjEgPD0gcjIgKyBkaXN0YW5jZSAmJgogICAgICAgICAgcjIgPD0gcjEgKyBkaXN0YW5jZSkgewogICAgICAgIHdhcm4oJ1Vuc3VwcG9ydGVkIHJhZGlhbCBncmFkaWVudC4nKTsKICAgICAgfQogICAgfQoKICAgIHRoaXMuZXh0ZW5kU3RhcnQgPSBleHRlbmRTdGFydDsKICAgIHRoaXMuZXh0ZW5kRW5kID0gZXh0ZW5kRW5kOwoKICAgIHZhciBmbk9iaiA9IGRpY3QuZ2V0KCdGdW5jdGlvbicpOwogICAgdmFyIGZuID0gUERGRnVuY3Rpb24ucGFyc2VBcnJheSh4cmVmLCBmbk9iaik7CgogICAgLy8gMTAgc2FtcGxlcyBzZWVtcyBnb29kIGVub3VnaCBmb3Igbm93LCBidXQgcHJvYmFibHkgd29uJ3Qgd29yawogICAgLy8gaWYgdGhlcmUgYXJlIHNoYXJwIGNvbG9yIGNoYW5nZXMuIElkZWFsbHksIHdlIHdvdWxkIGltcGxlbWVudAogICAgLy8gdGhlIHNwZWMgZmFpdGhmdWxseSBhbmQgYWRkIGxvc3NsZXNzIG9wdGltaXphdGlvbnMuCiAgICB2YXIgZGlmZiA9IHQxIC0gdDA7CiAgICB2YXIgc3RlcCA9IGRpZmYgLyAxMDsKCiAgICB2YXIgY29sb3JTdG9wcyA9IHRoaXMuY29sb3JTdG9wcyA9IFtdOwoKICAgIC8vIFByb3RlY3QgYWdhaW5zdCBiYWQgZG9tYWlucyBzbyB3ZSBkb24ndCBlbmQgdXAgaW4gYW4gaW5maW50ZSBsb29wIGJlbG93LgogICAgaWYgKHQwID49IHQxIHx8IHN0ZXAgPD0gMCkgewogICAgICAvLyBBY3JvYmF0IGRvZXNuJ3Qgc2VlbSB0byBoYW5kbGUgdGhlc2UgY2FzZXMgc28gd2UnbGwgaWdub3JlIGZvcgogICAgICAvLyBub3cuCiAgICAgIGluZm8oJ0JhZCBzaGFkaW5nIGRvbWFpbi4nKTsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIHZhciBjb2xvciA9IG5ldyBGbG9hdDMyQXJyYXkoY3MubnVtQ29tcHMpLCByYXRpbyA9IG5ldyBGbG9hdDMyQXJyYXkoMSk7CiAgICB2YXIgcmdiQ29sb3I7CiAgICBmb3IgKHZhciBpID0gdDA7IGkgPD0gdDE7IGkgKz0gc3RlcCkgewogICAgICByYXRpb1swXSA9IGk7CiAgICAgIGZuKHJhdGlvLCAwLCBjb2xvciwgMCk7CiAgICAgIHJnYkNvbG9yID0gY3MuZ2V0UmdiKGNvbG9yLCAwKTsKICAgICAgdmFyIGNzc0NvbG9yID0gVXRpbC5tYWtlQ3NzUmdiKHJnYkNvbG9yWzBdLCByZ2JDb2xvclsxXSwgcmdiQ29sb3JbMl0pOwogICAgICBjb2xvclN0b3BzLnB1c2goWyhpIC0gdDApIC8gZGlmZiwgY3NzQ29sb3JdKTsKICAgIH0KCiAgICB2YXIgYmFja2dyb3VuZCA9ICd0cmFuc3BhcmVudCc7CiAgICBpZiAoZGljdC5oYXMoJ0JhY2tncm91bmQnKSkgewogICAgICByZ2JDb2xvciA9IGNzLmdldFJnYihkaWN0LmdldCgnQmFja2dyb3VuZCcpLCAwKTsKICAgICAgYmFja2dyb3VuZCA9IFV0aWwubWFrZUNzc1JnYihyZ2JDb2xvclswXSwgcmdiQ29sb3JbMV0sIHJnYkNvbG9yWzJdKTsKICAgIH0KCiAgICBpZiAoIWV4dGVuZFN0YXJ0KSB7CiAgICAgIC8vIEluc2VydCBhIGNvbG9yIHN0b3AgYXQgdGhlIGZyb250IGFuZCBvZmZzZXQgdGhlIGZpcnN0IHJlYWwgY29sb3Igc3RvcAogICAgICAvLyBzbyBpdCBkb2Vzbid0IGNvbmZsaWN0IHdpdGggdGhlIG9uZSB3ZSBpbnNlcnQuCiAgICAgIGNvbG9yU3RvcHMudW5zaGlmdChbMCwgYmFja2dyb3VuZF0pOwogICAgICBjb2xvclN0b3BzWzFdWzBdICs9IFNoYWRpbmdzLlNNQUxMX05VTUJFUjsKICAgIH0KICAgIGlmICghZXh0ZW5kRW5kKSB7CiAgICAgIC8vIFNhbWUgaWRlYSBhcyBhYm92ZSBpbiBleHRlbmRTdGFydCBidXQgZm9yIHRoZSBlbmQuCiAgICAgIGNvbG9yU3RvcHNbY29sb3JTdG9wcy5sZW5ndGggLSAxXVswXSAtPSBTaGFkaW5ncy5TTUFMTF9OVU1CRVI7CiAgICAgIGNvbG9yU3RvcHMucHVzaChbMSwgYmFja2dyb3VuZF0pOwogICAgfQoKICAgIHRoaXMuY29sb3JTdG9wcyA9IGNvbG9yU3RvcHM7CiAgfQoKICBSYWRpYWxBeGlhbC5wcm90b3R5cGUgPSB7CiAgICBnZXRJUjogZnVuY3Rpb24gUmFkaWFsQXhpYWxfZ2V0SVIoKSB7CiAgICAgIHZhciBjb29yZHNBcnIgPSB0aGlzLmNvb3Jkc0FycjsKICAgICAgdmFyIHNoYWRpbmdUeXBlID0gdGhpcy5zaGFkaW5nVHlwZTsKICAgICAgdmFyIHR5cGUsIHAwLCBwMSwgcjAsIHIxOwogICAgICBpZiAoc2hhZGluZ1R5cGUgPT09IFBhdHRlcm5UeXBlLkFYSUFMKSB7CiAgICAgICAgcDAgPSBbY29vcmRzQXJyWzBdLCBjb29yZHNBcnJbMV1dOwogICAgICAgIHAxID0gW2Nvb3Jkc0FyclsyXSwgY29vcmRzQXJyWzNdXTsKICAgICAgICByMCA9IG51bGw7CiAgICAgICAgcjEgPSBudWxsOwogICAgICAgIHR5cGUgPSAnYXhpYWwnOwogICAgICB9IGVsc2UgaWYgKHNoYWRpbmdUeXBlID09PSBQYXR0ZXJuVHlwZS5SQURJQUwpIHsKICAgICAgICBwMCA9IFtjb29yZHNBcnJbMF0sIGNvb3Jkc0FyclsxXV07CiAgICAgICAgcDEgPSBbY29vcmRzQXJyWzNdLCBjb29yZHNBcnJbNF1dOwogICAgICAgIHIwID0gY29vcmRzQXJyWzJdOwogICAgICAgIHIxID0gY29vcmRzQXJyWzVdOwogICAgICAgIHR5cGUgPSAncmFkaWFsJzsKICAgICAgfSBlbHNlIHsKICAgICAgICBlcnJvcignZ2V0UGF0dGVybiB0eXBlIHVua25vd246ICcgKyBzaGFkaW5nVHlwZSk7CiAgICAgIH0KCiAgICAgIHZhciBtYXRyaXggPSB0aGlzLm1hdHJpeDsKICAgICAgaWYgKG1hdHJpeCkgewogICAgICAgIHAwID0gVXRpbC5hcHBseVRyYW5zZm9ybShwMCwgbWF0cml4KTsKICAgICAgICBwMSA9IFV0aWwuYXBwbHlUcmFuc2Zvcm0ocDEsIG1hdHJpeCk7CiAgICAgIH0KCiAgICAgIHJldHVybiBbJ1JhZGlhbEF4aWFsJywgdHlwZSwgdGhpcy5jb2xvclN0b3BzLCBwMCwgcDEsIHIwLCByMV07CiAgICB9CiAgfTsKCiAgcmV0dXJuIFJhZGlhbEF4aWFsOwp9KSgpOwoKLy8gQWxsIG1lc2ggc2hhZGluZy4gRm9yIG5vdywgdGhleSB3aWxsIGJlIHByZXNlbnRlZCBhcyBzZXQgb2YgdGhlIHRyaWFuZ2xlcwovLyB0byBiZSBkcmF3biBvbiB0aGUgY2FudmFzIGFuZCByZ2IgY29sb3IgZm9yIGVhY2ggdmVydGV4LgpTaGFkaW5ncy5NZXNoID0gKGZ1bmN0aW9uIE1lc2hDbG9zdXJlKCkgewogIGZ1bmN0aW9uIE1lc2hTdHJlYW1SZWFkZXIoc3RyZWFtLCBjb250ZXh0KSB7CiAgICB0aGlzLnN0cmVhbSA9IHN0cmVhbTsKICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7CiAgICB0aGlzLmJ1ZmZlciA9IDA7CiAgICB0aGlzLmJ1ZmZlckxlbmd0aCA9IDA7CgogICAgdmFyIG51bUNvbXBzID0gY29udGV4dC5udW1Db21wczsKICAgIHRoaXMudG1wQ29tcHNCdWYgPSBuZXcgRmxvYXQzMkFycmF5KG51bUNvbXBzKTsKICAgIHZhciBjc051bUNvbXBzID0gY29udGV4dC5jb2xvclNwYWNlOwogICAgdGhpcy50bXBDc0NvbXBzQnVmID0gY29udGV4dC5jb2xvckZuID8gbmV3IEZsb2F0MzJBcnJheShjc051bUNvbXBzKSA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRtcENvbXBzQnVmOwogIH0KICBNZXNoU3RyZWFtUmVhZGVyLnByb3RvdHlwZSA9IHsKICAgIGdldCBoYXNEYXRhKCkgewogICAgICBpZiAodGhpcy5zdHJlYW0uZW5kKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuc3RyZWFtLnBvcyA8IHRoaXMuc3RyZWFtLmVuZDsKICAgICAgfQogICAgICBpZiAodGhpcy5idWZmZXJMZW5ndGggPiAwKSB7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH0KICAgICAgdmFyIG5leHRCeXRlID0gdGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpOwogICAgICBpZiAobmV4dEJ5dGUgPCAwKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICAgIHRoaXMuYnVmZmVyID0gbmV4dEJ5dGU7CiAgICAgIHRoaXMuYnVmZmVyTGVuZ3RoID0gODsKICAgICAgcmV0dXJuIHRydWU7CiAgICB9LAogICAgcmVhZEJpdHM6IGZ1bmN0aW9uIE1lc2hTdHJlYW1SZWFkZXJfcmVhZEJpdHMobikgewogICAgICB2YXIgYnVmZmVyID0gdGhpcy5idWZmZXI7CiAgICAgIHZhciBidWZmZXJMZW5ndGggPSB0aGlzLmJ1ZmZlckxlbmd0aDsKICAgICAgaWYgKG4gPT09IDMyKSB7CiAgICAgICAgaWYgKGJ1ZmZlckxlbmd0aCA9PT0gMCkgewogICAgICAgICAgcmV0dXJuICgodGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpIDw8IDI0KSB8CiAgICAgICAgICAgICh0aGlzLnN0cmVhbS5nZXRCeXRlKCkgPDwgMTYpIHwgKHRoaXMuc3RyZWFtLmdldEJ5dGUoKSA8PCA4KSB8CiAgICAgICAgICAgIHRoaXMuc3RyZWFtLmdldEJ5dGUoKSkgPj4+IDA7CiAgICAgICAgfQogICAgICAgIGJ1ZmZlciA9IChidWZmZXIgPDwgMjQpIHwgKHRoaXMuc3RyZWFtLmdldEJ5dGUoKSA8PCAxNikgfAogICAgICAgICAgKHRoaXMuc3RyZWFtLmdldEJ5dGUoKSA8PCA4KSB8IHRoaXMuc3RyZWFtLmdldEJ5dGUoKTsKICAgICAgICB2YXIgbmV4dEJ5dGUgPSB0aGlzLnN0cmVhbS5nZXRCeXRlKCk7CiAgICAgICAgdGhpcy5idWZmZXIgPSBuZXh0Qnl0ZSAmICgoMSA8PCBidWZmZXJMZW5ndGgpIC0gMSk7CiAgICAgICAgcmV0dXJuICgoYnVmZmVyIDw8ICg4IC0gYnVmZmVyTGVuZ3RoKSkgfAogICAgICAgICAgKChuZXh0Qnl0ZSAmIDB4RkYpID4+IGJ1ZmZlckxlbmd0aCkpID4+PiAwOwogICAgICB9CiAgICAgIGlmIChuID09PSA4ICYmIGJ1ZmZlckxlbmd0aCA9PT0gMCkgewogICAgICAgIHJldHVybiB0aGlzLnN0cmVhbS5nZXRCeXRlKCk7CiAgICAgIH0KICAgICAgd2hpbGUgKGJ1ZmZlckxlbmd0aCA8IG4pIHsKICAgICAgICBidWZmZXIgPSAoYnVmZmVyIDw8IDgpIHwgdGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpOwogICAgICAgIGJ1ZmZlckxlbmd0aCArPSA4OwogICAgICB9CiAgICAgIGJ1ZmZlckxlbmd0aCAtPSBuOwogICAgICB0aGlzLmJ1ZmZlckxlbmd0aCA9IGJ1ZmZlckxlbmd0aDsKICAgICAgdGhpcy5idWZmZXIgPSBidWZmZXIgJiAoKDEgPDwgYnVmZmVyTGVuZ3RoKSAtIDEpOwogICAgICByZXR1cm4gYnVmZmVyID4+IGJ1ZmZlckxlbmd0aDsKICAgIH0sCiAgICBhbGlnbjogZnVuY3Rpb24gTWVzaFN0cmVhbVJlYWRlcl9hbGlnbigpIHsKICAgICAgdGhpcy5idWZmZXIgPSAwOwogICAgICB0aGlzLmJ1ZmZlckxlbmd0aCA9IDA7CiAgICB9LAogICAgcmVhZEZsYWc6IGZ1bmN0aW9uIE1lc2hTdHJlYW1SZWFkZXJfcmVhZEZsYWcoKSB7CiAgICAgIHJldHVybiB0aGlzLnJlYWRCaXRzKHRoaXMuY29udGV4dC5iaXRzUGVyRmxhZyk7CiAgICB9LAogICAgcmVhZENvb3JkaW5hdGU6IGZ1bmN0aW9uIE1lc2hTdHJlYW1SZWFkZXJfcmVhZENvb3JkaW5hdGUoKSB7CiAgICAgIHZhciBiaXRzUGVyQ29vcmRpbmF0ZSA9IHRoaXMuY29udGV4dC5iaXRzUGVyQ29vcmRpbmF0ZTsKICAgICAgdmFyIHhpID0gdGhpcy5yZWFkQml0cyhiaXRzUGVyQ29vcmRpbmF0ZSk7CiAgICAgIHZhciB5aSA9IHRoaXMucmVhZEJpdHMoYml0c1BlckNvb3JkaW5hdGUpOwogICAgICB2YXIgZGVjb2RlID0gdGhpcy5jb250ZXh0LmRlY29kZTsKICAgICAgdmFyIHNjYWxlID0gYml0c1BlckNvb3JkaW5hdGUgPCAzMiA/IDEgLyAoKDEgPDwgYml0c1BlckNvb3JkaW5hdGUpIC0gMSkgOgogICAgICAgIDIuMzI4MzA2NDM2NTM4Njk2M2UtMTA7IC8vIDIgXiAtMzIKICAgICAgcmV0dXJuIFsKICAgICAgICB4aSAqIHNjYWxlICogKGRlY29kZVsxXSAtIGRlY29kZVswXSkgKyBkZWNvZGVbMF0sCiAgICAgICAgeWkgKiBzY2FsZSAqIChkZWNvZGVbM10gLSBkZWNvZGVbMl0pICsgZGVjb2RlWzJdCiAgICAgIF07CiAgICB9LAogICAgcmVhZENvbXBvbmVudHM6IGZ1bmN0aW9uIE1lc2hTdHJlYW1SZWFkZXJfcmVhZENvbXBvbmVudHMoKSB7CiAgICAgIHZhciBudW1Db21wcyA9IHRoaXMuY29udGV4dC5udW1Db21wczsKICAgICAgdmFyIGJpdHNQZXJDb21wb25lbnQgPSB0aGlzLmNvbnRleHQuYml0c1BlckNvbXBvbmVudDsKICAgICAgdmFyIHNjYWxlID0gYml0c1BlckNvbXBvbmVudCA8IDMyID8gMSAvICgoMSA8PCBiaXRzUGVyQ29tcG9uZW50KSAtIDEpIDoKICAgICAgICAyLjMyODMwNjQzNjUzODY5NjNlLTEwOyAvLyAyIF4gLTMyCiAgICAgIHZhciBkZWNvZGUgPSB0aGlzLmNvbnRleHQuZGVjb2RlOwogICAgICB2YXIgY29tcG9uZW50cyA9IHRoaXMudG1wQ29tcHNCdWY7CiAgICAgIGZvciAodmFyIGkgPSAwLCBqID0gNDsgaSA8IG51bUNvbXBzOyBpKyssIGogKz0gMikgewogICAgICAgIHZhciBjaSA9IHRoaXMucmVhZEJpdHMoYml0c1BlckNvbXBvbmVudCk7CiAgICAgICAgY29tcG9uZW50c1tpXSA9IGNpICogc2NhbGUgKiAoZGVjb2RlW2ogKyAxXSAtIGRlY29kZVtqXSkgKyBkZWNvZGVbal07CiAgICAgIH0KICAgICAgdmFyIGNvbG9yID0gdGhpcy50bXBDc0NvbXBzQnVmOwogICAgICBpZiAodGhpcy5jb250ZXh0LmNvbG9yRm4pIHsKICAgICAgICB0aGlzLmNvbnRleHQuY29sb3JGbihjb21wb25lbnRzLCAwLCBjb2xvciwgMCk7CiAgICAgIH0KICAgICAgcmV0dXJuIHRoaXMuY29udGV4dC5jb2xvclNwYWNlLmdldFJnYihjb2xvciwgMCk7CiAgICB9CiAgfTsKCiAgZnVuY3Rpb24gZGVjb2RlVHlwZTRTaGFkaW5nKG1lc2gsIHJlYWRlcikgewogICAgdmFyIGNvb3JkcyA9IG1lc2guY29vcmRzOwogICAgdmFyIGNvbG9ycyA9IG1lc2guY29sb3JzOwogICAgdmFyIG9wZXJhdG9ycyA9IFtdOwogICAgdmFyIHBzID0gW107IC8vIG5vdCBtYWludGFpbmluZyBjcyBzaW5jZSB0aGF0IHdpbGwgbWF0Y2ggcHMKICAgIHZhciB2ZXJ0aWNlc0xlZnQgPSAwOyAvLyBhc3N1bWluZyB3ZSBoYXZlIGFsbCBkYXRhIHRvIHN0YXJ0IGEgbmV3IHRyaWFuZ2xlCiAgICB3aGlsZSAocmVhZGVyLmhhc0RhdGEpIHsKICAgICAgdmFyIGYgPSByZWFkZXIucmVhZEZsYWcoKTsKICAgICAgdmFyIGNvb3JkID0gcmVhZGVyLnJlYWRDb29yZGluYXRlKCk7CiAgICAgIHZhciBjb2xvciA9IHJlYWRlci5yZWFkQ29tcG9uZW50cygpOwogICAgICBpZiAodmVydGljZXNMZWZ0ID09PSAwKSB7IC8vIGlnbm9yaW5nIGZsYWdzIGlmIHdlIHN0YXJ0ZWQgYSB0cmlhbmdsZQogICAgICAgIGFzc2VydCgwIDw9IGYgJiYgZiA8PSAyLCAnVW5rbm93biB0eXBlNCBmbGFnJyk7CiAgICAgICAgc3dpdGNoIChmKSB7CiAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgIHZlcnRpY2VzTGVmdCA9IDM7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICBwcy5wdXNoKHBzW3BzLmxlbmd0aCAtIDJdLCBwc1twcy5sZW5ndGggLSAxXSk7CiAgICAgICAgICAgIHZlcnRpY2VzTGVmdCA9IDE7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICBwcy5wdXNoKHBzW3BzLmxlbmd0aCAtIDNdLCBwc1twcy5sZW5ndGggLSAxXSk7CiAgICAgICAgICAgIHZlcnRpY2VzTGVmdCA9IDE7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBvcGVyYXRvcnMucHVzaChmKTsKICAgICAgfQogICAgICBwcy5wdXNoKGNvb3Jkcy5sZW5ndGgpOwogICAgICBjb29yZHMucHVzaChjb29yZCk7CiAgICAgIGNvbG9ycy5wdXNoKGNvbG9yKTsKICAgICAgdmVydGljZXNMZWZ0LS07CgogICAgICByZWFkZXIuYWxpZ24oKTsKICAgIH0KCiAgICB2YXIgcHNQYWNrZWQgPSBuZXcgSW50MzJBcnJheShwcyk7CgogICAgbWVzaC5maWd1cmVzLnB1c2goewogICAgICB0eXBlOiAndHJpYW5nbGVzJywKICAgICAgY29vcmRzOiBwc1BhY2tlZCwKICAgICAgY29sb3JzOiBwc1BhY2tlZAogICAgfSk7CiAgfQoKICBmdW5jdGlvbiBkZWNvZGVUeXBlNVNoYWRpbmcobWVzaCwgcmVhZGVyLCB2ZXJ0aWNlc1BlclJvdykgewogICAgdmFyIGNvb3JkcyA9IG1lc2guY29vcmRzOwogICAgdmFyIGNvbG9ycyA9IG1lc2guY29sb3JzOwogICAgdmFyIHBzID0gW107IC8vIG5vdCBtYWludGFpbmluZyBjcyBzaW5jZSB0aGF0IHdpbGwgbWF0Y2ggcHMKICAgIHdoaWxlIChyZWFkZXIuaGFzRGF0YSkgewogICAgICB2YXIgY29vcmQgPSByZWFkZXIucmVhZENvb3JkaW5hdGUoKTsKICAgICAgdmFyIGNvbG9yID0gcmVhZGVyLnJlYWRDb21wb25lbnRzKCk7CiAgICAgIHBzLnB1c2goY29vcmRzLmxlbmd0aCk7CiAgICAgIGNvb3Jkcy5wdXNoKGNvb3JkKTsKICAgICAgY29sb3JzLnB1c2goY29sb3IpOwogICAgfQoKICAgIHZhciBwc1BhY2tlZCA9IG5ldyBJbnQzMkFycmF5KHBzKTsKCiAgICBtZXNoLmZpZ3VyZXMucHVzaCh7CiAgICAgIHR5cGU6ICdsYXR0aWNlJywKICAgICAgY29vcmRzOiBwc1BhY2tlZCwKICAgICAgY29sb3JzOiBwc1BhY2tlZCwKICAgICAgdmVydGljZXNQZXJSb3c6IHZlcnRpY2VzUGVyUm93CiAgICB9KTsKICB9CgogIHZhciBNSU5fU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCA9IDM7CiAgdmFyIE1BWF9TUExJVF9QQVRDSF9DSFVOS1NfQU1PVU5UID0gMjA7CgogIHZhciBUUklBTkdMRV9ERU5TSVRZID0gMjA7IC8vIGNvdW50IG9mIHRyaWFuZ2xlcyBwZXIgZW50aXJlIG1lc2ggYm91bmRzCgogIHZhciBnZXRCID0gKGZ1bmN0aW9uIGdldEJDbG9zdXJlKCkgewogICAgZnVuY3Rpb24gYnVpbGRCKGNvdW50KSB7CiAgICAgIHZhciBsdXQgPSBbXTsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPD0gY291bnQ7IGkrKykgewogICAgICAgIHZhciB0ID0gaSAvIGNvdW50LCB0XyA9IDEgLSB0OwogICAgICAgIGx1dC5wdXNoKG5ldyBGbG9hdDMyQXJyYXkoW3RfICogdF8gKiB0XywgMyAqIHQgKiB0XyAqIHRfLAogICAgICAgICAgMyAqIHQgKiB0ICogdF8sIHQgKiB0ICogdF0pKTsKICAgICAgfQogICAgICByZXR1cm4gbHV0OwogICAgfQogICAgdmFyIGNhY2hlID0gW107CiAgICByZXR1cm4gZnVuY3Rpb24gZ2V0Qihjb3VudCkgewogICAgICBpZiAoIWNhY2hlW2NvdW50XSkgewogICAgICAgIGNhY2hlW2NvdW50XSA9IGJ1aWxkQihjb3VudCk7CiAgICAgIH0KICAgICAgcmV0dXJuIGNhY2hlW2NvdW50XTsKICAgIH07CiAgfSkoKTsKCiAgZnVuY3Rpb24gYnVpbGRGaWd1cmVGcm9tUGF0Y2gobWVzaCwgaW5kZXgpIHsKICAgIHZhciBmaWd1cmUgPSBtZXNoLmZpZ3VyZXNbaW5kZXhdOwogICAgYXNzZXJ0KGZpZ3VyZS50eXBlID09PSAncGF0Y2gnLCAnVW5leHBlY3RlZCBwYXRjaCBtZXNoIGZpZ3VyZScpOwoKICAgIHZhciBjb29yZHMgPSBtZXNoLmNvb3JkcywgY29sb3JzID0gbWVzaC5jb2xvcnM7CiAgICB2YXIgcGkgPSBmaWd1cmUuY29vcmRzOwogICAgdmFyIGNpID0gZmlndXJlLmNvbG9yczsKCiAgICB2YXIgZmlndXJlTWluWCA9IE1hdGgubWluKGNvb3Jkc1twaVswXV1bMF0sIGNvb3Jkc1twaVszXV1bMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvb3Jkc1twaVsxMl1dWzBdLCBjb29yZHNbcGlbMTVdXVswXSk7CiAgICB2YXIgZmlndXJlTWluWSA9IE1hdGgubWluKGNvb3Jkc1twaVswXV1bMV0sIGNvb3Jkc1twaVszXV1bMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvb3Jkc1twaVsxMl1dWzFdLCBjb29yZHNbcGlbMTVdXVsxXSk7CiAgICB2YXIgZmlndXJlTWF4WCA9IE1hdGgubWF4KGNvb3Jkc1twaVswXV1bMF0sIGNvb3Jkc1twaVszXV1bMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvb3Jkc1twaVsxMl1dWzBdLCBjb29yZHNbcGlbMTVdXVswXSk7CiAgICB2YXIgZmlndXJlTWF4WSA9IE1hdGgubWF4KGNvb3Jkc1twaVswXV1bMV0sIGNvb3Jkc1twaVszXV1bMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvb3Jkc1twaVsxMl1dWzFdLCBjb29yZHNbcGlbMTVdXVsxXSk7CiAgICB2YXIgc3BsaXRYQnkgPSBNYXRoLmNlaWwoKGZpZ3VyZU1heFggLSBmaWd1cmVNaW5YKSAqIFRSSUFOR0xFX0RFTlNJVFkgLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZXNoLmJvdW5kc1syXSAtIG1lc2guYm91bmRzWzBdKSk7CiAgICBzcGxpdFhCeSA9IE1hdGgubWF4KE1JTl9TUExJVF9QQVRDSF9DSFVOS1NfQU1PVU5ULAogICAgICAgICAgICAgICBNYXRoLm1pbihNQVhfU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCwgc3BsaXRYQnkpKTsKICAgIHZhciBzcGxpdFlCeSA9IE1hdGguY2VpbCgoZmlndXJlTWF4WSAtIGZpZ3VyZU1pblkpICogVFJJQU5HTEVfREVOU0lUWSAvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lc2guYm91bmRzWzNdIC0gbWVzaC5ib3VuZHNbMV0pKTsKICAgIHNwbGl0WUJ5ID0gTWF0aC5tYXgoTUlOX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQsCiAgICAgICAgICAgICAgIE1hdGgubWluKE1BWF9TUExJVF9QQVRDSF9DSFVOS1NfQU1PVU5ULCBzcGxpdFlCeSkpOwoKICAgIHZhciB2ZXJ0aWNlc1BlclJvdyA9IHNwbGl0WEJ5ICsgMTsKICAgIHZhciBmaWd1cmVDb29yZHMgPSBuZXcgSW50MzJBcnJheSgoc3BsaXRZQnkgKyAxKSAqIHZlcnRpY2VzUGVyUm93KTsKICAgIHZhciBmaWd1cmVDb2xvcnMgPSBuZXcgSW50MzJBcnJheSgoc3BsaXRZQnkgKyAxKSAqIHZlcnRpY2VzUGVyUm93KTsKICAgIHZhciBrID0gMDsKICAgIHZhciBjbCA9IG5ldyBVaW50OEFycmF5KDMpLCBjciA9IG5ldyBVaW50OEFycmF5KDMpOwogICAgdmFyIGMwID0gY29sb3JzW2NpWzBdXSwgYzEgPSBjb2xvcnNbY2lbMV1dLAogICAgICBjMiA9IGNvbG9yc1tjaVsyXV0sIGMzID0gY29sb3JzW2NpWzNdXTsKICAgIHZhciBiUm93ID0gZ2V0QihzcGxpdFlCeSksIGJDb2wgPSBnZXRCKHNwbGl0WEJ5KTsKICAgIGZvciAodmFyIHJvdyA9IDA7IHJvdyA8PSBzcGxpdFlCeTsgcm93KyspIHsKICAgICAgY2xbMF0gPSAoKGMwWzBdICogKHNwbGl0WUJ5IC0gcm93KSArIGMyWzBdICogcm93KSAvIHNwbGl0WUJ5KSB8IDA7CiAgICAgIGNsWzFdID0gKChjMFsxXSAqIChzcGxpdFlCeSAtIHJvdykgKyBjMlsxXSAqIHJvdykgLyBzcGxpdFlCeSkgfCAwOwogICAgICBjbFsyXSA9ICgoYzBbMl0gKiAoc3BsaXRZQnkgLSByb3cpICsgYzJbMl0gKiByb3cpIC8gc3BsaXRZQnkpIHwgMDsKCiAgICAgIGNyWzBdID0gKChjMVswXSAqIChzcGxpdFlCeSAtIHJvdykgKyBjM1swXSAqIHJvdykgLyBzcGxpdFlCeSkgfCAwOwogICAgICBjclsxXSA9ICgoYzFbMV0gKiAoc3BsaXRZQnkgLSByb3cpICsgYzNbMV0gKiByb3cpIC8gc3BsaXRZQnkpIHwgMDsKICAgICAgY3JbMl0gPSAoKGMxWzJdICogKHNwbGl0WUJ5IC0gcm93KSArIGMzWzJdICogcm93KSAvIHNwbGl0WUJ5KSB8IDA7CgogICAgICBmb3IgKHZhciBjb2wgPSAwOyBjb2wgPD0gc3BsaXRYQnk7IGNvbCsrLCBrKyspIHsKICAgICAgICBpZiAoKHJvdyA9PT0gMCB8fCByb3cgPT09IHNwbGl0WUJ5KSAmJgogICAgICAgICAgICAoY29sID09PSAwIHx8IGNvbCA9PT0gc3BsaXRYQnkpKSB7CiAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgdmFyIHggPSAwLCB5ID0gMDsKICAgICAgICB2YXIgcSA9IDA7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPD0gMzsgaSsrKSB7CiAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8PSAzOyBqKyssIHErKykgewogICAgICAgICAgICB2YXIgbSA9IGJSb3dbcm93XVtpXSAqIGJDb2xbY29sXVtqXTsKICAgICAgICAgICAgeCArPSBjb29yZHNbcGlbcV1dWzBdICogbTsKICAgICAgICAgICAgeSArPSBjb29yZHNbcGlbcV1dWzFdICogbTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZmlndXJlQ29vcmRzW2tdID0gY29vcmRzLmxlbmd0aDsKICAgICAgICBjb29yZHMucHVzaChbeCwgeV0pOwogICAgICAgIGZpZ3VyZUNvbG9yc1trXSA9IGNvbG9ycy5sZW5ndGg7CiAgICAgICAgdmFyIG5ld0NvbG9yID0gbmV3IFVpbnQ4QXJyYXkoMyk7CiAgICAgICAgbmV3Q29sb3JbMF0gPSAoKGNsWzBdICogKHNwbGl0WEJ5IC0gY29sKSArIGNyWzBdICogY29sKSAvIHNwbGl0WEJ5KSB8IDA7CiAgICAgICAgbmV3Q29sb3JbMV0gPSAoKGNsWzFdICogKHNwbGl0WEJ5IC0gY29sKSArIGNyWzFdICogY29sKSAvIHNwbGl0WEJ5KSB8IDA7CiAgICAgICAgbmV3Q29sb3JbMl0gPSAoKGNsWzJdICogKHNwbGl0WEJ5IC0gY29sKSArIGNyWzJdICogY29sKSAvIHNwbGl0WEJ5KSB8IDA7CiAgICAgICAgY29sb3JzLnB1c2gobmV3Q29sb3IpOwogICAgICB9CiAgICB9CiAgICBmaWd1cmVDb29yZHNbMF0gPSBwaVswXTsKICAgIGZpZ3VyZUNvbG9yc1swXSA9IGNpWzBdOwogICAgZmlndXJlQ29vcmRzW3NwbGl0WEJ5XSA9IHBpWzNdOwogICAgZmlndXJlQ29sb3JzW3NwbGl0WEJ5XSA9IGNpWzFdOwogICAgZmlndXJlQ29vcmRzW3ZlcnRpY2VzUGVyUm93ICogc3BsaXRZQnldID0gcGlbMTJdOwogICAgZmlndXJlQ29sb3JzW3ZlcnRpY2VzUGVyUm93ICogc3BsaXRZQnldID0gY2lbMl07CiAgICBmaWd1cmVDb29yZHNbdmVydGljZXNQZXJSb3cgKiBzcGxpdFlCeSArIHNwbGl0WEJ5XSA9IHBpWzE1XTsKICAgIGZpZ3VyZUNvbG9yc1t2ZXJ0aWNlc1BlclJvdyAqIHNwbGl0WUJ5ICsgc3BsaXRYQnldID0gY2lbM107CgogICAgbWVzaC5maWd1cmVzW2luZGV4XSA9IHsKICAgICAgdHlwZTogJ2xhdHRpY2UnLAogICAgICBjb29yZHM6IGZpZ3VyZUNvb3JkcywKICAgICAgY29sb3JzOiBmaWd1cmVDb2xvcnMsCiAgICAgIHZlcnRpY2VzUGVyUm93OiB2ZXJ0aWNlc1BlclJvdwogICAgfTsKICB9CgogIGZ1bmN0aW9uIGRlY29kZVR5cGU2U2hhZGluZyhtZXNoLCByZWFkZXIpIHsKICAgIC8vIEEgc3BlY2lhbCBjYXNlIG9mIFR5cGUgNy4gVGhlIHAxMSwgcDEyLCBwMjEsIHAyMiBhdXRvbWF0aWNhbGx5IGZpbGxlZAogICAgdmFyIGNvb3JkcyA9IG1lc2guY29vcmRzOwogICAgdmFyIGNvbG9ycyA9IG1lc2guY29sb3JzOwogICAgdmFyIHBzID0gbmV3IEludDMyQXJyYXkoMTYpOyAvLyBwMDAsIHAxMCwgLi4uLCBwMzAsIHAwMSwgLi4uLCBwMzMKICAgIHZhciBjcyA9IG5ldyBJbnQzMkFycmF5KDQpOyAvLyBjMDAsIGMzMCwgYzAzLCBjMzMKICAgIHdoaWxlIChyZWFkZXIuaGFzRGF0YSkgewogICAgICB2YXIgZiA9IHJlYWRlci5yZWFkRmxhZygpOwogICAgICBhc3NlcnQoMCA8PSBmICYmIGYgPD0gMywgJ1Vua25vd24gdHlwZTYgZmxhZycpOwogICAgICB2YXIgaSwgaWk7CiAgICAgIHZhciBwaSA9IGNvb3Jkcy5sZW5ndGg7CiAgICAgIGZvciAoaSA9IDAsIGlpID0gKGYgIT09IDAgPyA4IDogMTIpOyBpIDwgaWk7IGkrKykgewogICAgICAgIGNvb3Jkcy5wdXNoKHJlYWRlci5yZWFkQ29vcmRpbmF0ZSgpKTsKICAgICAgfQogICAgICB2YXIgY2kgPSBjb2xvcnMubGVuZ3RoOwogICAgICBmb3IgKGkgPSAwLCBpaSA9IChmICE9PSAwID8gMiA6IDQpOyBpIDwgaWk7IGkrKykgewogICAgICAgIGNvbG9ycy5wdXNoKHJlYWRlci5yZWFkQ29tcG9uZW50cygpKTsKICAgICAgfQogICAgICB2YXIgdG1wMSwgdG1wMiwgdG1wMywgdG1wNDsKICAgICAgc3dpdGNoIChmKSB7CiAgICAgICAgY2FzZSAwOgogICAgICAgICAgcHNbMTJdID0gcGkgKyAzOyBwc1sxM10gPSBwaSArIDQ7ICBwc1sxNF0gPSBwaSArIDU7ICBwc1sxNV0gPSBwaSArIDY7CiAgICAgICAgICBwc1sgOF0gPSBwaSArIDI7IC8qIHZhbHVlcyBmb3IgNSwgNiwgOSwgMTAgYXJlICAgICovIHBzWzExXSA9IHBpICsgNzsKICAgICAgICAgIHBzWyA0XSA9IHBpICsgMTsgLyogY2FsY3VsYXRlZCBiZWxvdyAgICAgICAgICAgICAgKi8gcHNbIDddID0gcGkgKyA4OwogICAgICAgICAgcHNbIDBdID0gcGk7ICAgICBwc1sgMV0gPSBwaSArIDExOyBwc1sgMl0gPSBwaSArIDEwOyBwc1sgM10gPSBwaSArIDk7CiAgICAgICAgICBjc1syXSA9IGNpICsgMTsgY3NbM10gPSBjaSArIDI7CiAgICAgICAgICBjc1swXSA9IGNpOyAgICAgY3NbMV0gPSBjaSArIDM7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDE6CiAgICAgICAgICB0bXAxID0gcHNbMTJdOyB0bXAyID0gcHNbMTNdOyB0bXAzID0gcHNbMTRdOyB0bXA0ID0gcHNbMTVdOwogICAgICAgICAgcHNbMTJdID0gcGkgKyA1OyBwc1sxM10gPSBwaSArIDQ7ICBwc1sxNF0gPSBwaSArIDM7ICBwc1sxNV0gPSBwaSArIDI7CiAgICAgICAgICBwc1sgOF0gPSBwaSArIDY7IC8qIHZhbHVlcyBmb3IgNSwgNiwgOSwgMTAgYXJlICAgICovIHBzWzExXSA9IHBpICsgMTsKICAgICAgICAgIHBzWyA0XSA9IHBpICsgNzsgLyogY2FsY3VsYXRlZCBiZWxvdyAgICAgICAgICAgICAgKi8gcHNbIDddID0gcGk7CiAgICAgICAgICBwc1sgMF0gPSB0bXAxOyAgIHBzWyAxXSA9IHRtcDI7ICAgIHBzWyAyXSA9IHRtcDM7ICAgIHBzWyAzXSA9IHRtcDQ7CiAgICAgICAgICB0bXAxID0gY3NbMl07IHRtcDIgPSBjc1szXTsKICAgICAgICAgIGNzWzJdID0gY2kgKyAxOyBjc1szXSA9IGNpOwogICAgICAgICAgY3NbMF0gPSB0bXAxOyAgIGNzWzFdID0gdG1wMjsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgMjoKICAgICAgICAgIHBzWzEyXSA9IHBzWzE1XTsgcHNbMTNdID0gcGkgKyA3OyBwc1sxNF0gPSBwaSArIDY7ICAgcHNbMTVdID0gcGkgKyA1OwogICAgICAgICAgcHNbIDhdID0gcHNbMTFdOyAvKiB2YWx1ZXMgZm9yIDUsIDYsIDksIDEwIGFyZSAgICAqLyBwc1sxMV0gPSBwaSArIDQ7CiAgICAgICAgICBwc1sgNF0gPSBwc1s3XTsgIC8qIGNhbGN1bGF0ZWQgYmVsb3cgICAgICAgICAgICAgICovIHBzWyA3XSA9IHBpICsgMzsKICAgICAgICAgIHBzWyAwXSA9IHBzWzNdOyAgcHNbIDFdID0gcGk7ICAgICBwc1sgMl0gPSBwaSArIDE7ICAgcHNbIDNdID0gcGkgKyAyOwogICAgICAgICAgY3NbMl0gPSBjc1szXTsgY3NbM10gPSBjaSArIDE7CiAgICAgICAgICBjc1swXSA9IGNzWzFdOyBjc1sxXSA9IGNpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAzOgogICAgICAgICAgcHNbMTJdID0gcHNbMF07ICBwc1sxM10gPSBwc1sxXTsgICBwc1sxNF0gPSBwc1syXTsgICBwc1sxNV0gPSBwc1szXTsKICAgICAgICAgIHBzWyA4XSA9IHBpOyAgICAgLyogdmFsdWVzIGZvciA1LCA2LCA5LCAxMCBhcmUgICAgKi8gcHNbMTFdID0gcGkgKyA3OwogICAgICAgICAgcHNbIDRdID0gcGkgKyAxOyAvKiBjYWxjdWxhdGVkIGJlbG93ICAgICAgICAgICAgICAqLyBwc1sgN10gPSBwaSArIDY7CiAgICAgICAgICBwc1sgMF0gPSBwaSArIDI7IHBzWyAxXSA9IHBpICsgMzsgIHBzWyAyXSA9IHBpICsgNDsgIHBzWyAzXSA9IHBpICsgNTsKICAgICAgICAgIGNzWzJdID0gY3NbMF07IGNzWzNdID0gY3NbMV07CiAgICAgICAgICBjc1swXSA9IGNpOyAgICBjc1sxXSA9IGNpICsgMTsKICAgICAgICAgIGJyZWFrOwogICAgICB9CiAgICAgIC8vIHNldCBwMTEsIHAxMiwgcDIxLCBwMjIKICAgICAgcHNbNV0gPSBjb29yZHMubGVuZ3RoOwogICAgICBjb29yZHMucHVzaChbCiAgICAgICAgKC00ICogY29vcmRzW3BzWzBdXVswXSAtIGNvb3Jkc1twc1sxNV1dWzBdICsKICAgICAgICAgIDYgKiAoY29vcmRzW3BzWzRdXVswXSArIGNvb3Jkc1twc1sxXV1bMF0pIC0KICAgICAgICAgIDIgKiAoY29vcmRzW3BzWzEyXV1bMF0gKyBjb29yZHNbcHNbM11dWzBdKSArCiAgICAgICAgICAzICogKGNvb3Jkc1twc1sxM11dWzBdICsgY29vcmRzW3BzWzddXVswXSkpIC8gOSwKICAgICAgICAoLTQgKiBjb29yZHNbcHNbMF1dWzFdIC0gY29vcmRzW3BzWzE1XV1bMV0gKwogICAgICAgICAgNiAqIChjb29yZHNbcHNbNF1dWzFdICsgY29vcmRzW3BzWzFdXVsxXSkgLQogICAgICAgICAgMiAqIChjb29yZHNbcHNbMTJdXVsxXSArIGNvb3Jkc1twc1szXV1bMV0pICsKICAgICAgICAgIDMgKiAoY29vcmRzW3BzWzEzXV1bMV0gKyBjb29yZHNbcHNbN11dWzFdKSkgLyA5CiAgICAgIF0pOwogICAgICBwc1s2XSA9IGNvb3Jkcy5sZW5ndGg7CiAgICAgIGNvb3Jkcy5wdXNoKFsKICAgICAgICAoLTQgKiBjb29yZHNbcHNbM11dWzBdIC0gY29vcmRzW3BzWzEyXV1bMF0gKwogICAgICAgICAgNiAqIChjb29yZHNbcHNbMl1dWzBdICsgY29vcmRzW3BzWzddXVswXSkgLQogICAgICAgICAgMiAqIChjb29yZHNbcHNbMF1dWzBdICsgY29vcmRzW3BzWzE1XV1bMF0pICsKICAgICAgICAgIDMgKiAoY29vcmRzW3BzWzRdXVswXSArIGNvb3Jkc1twc1sxNF1dWzBdKSkgLyA5LAogICAgICAgICgtNCAqIGNvb3Jkc1twc1szXV1bMV0gLSBjb29yZHNbcHNbMTJdXVsxXSArCiAgICAgICAgICA2ICogKGNvb3Jkc1twc1syXV1bMV0gKyBjb29yZHNbcHNbN11dWzFdKSAtCiAgICAgICAgICAyICogKGNvb3Jkc1twc1swXV1bMV0gKyBjb29yZHNbcHNbMTVdXVsxXSkgKwogICAgICAgICAgMyAqIChjb29yZHNbcHNbNF1dWzFdICsgY29vcmRzW3BzWzE0XV1bMV0pKSAvIDkKICAgICAgXSk7CiAgICAgIHBzWzldID0gY29vcmRzLmxlbmd0aDsKICAgICAgY29vcmRzLnB1c2goWwogICAgICAgICgtNCAqIGNvb3Jkc1twc1sxMl1dWzBdIC0gY29vcmRzW3BzWzNdXVswXSArCiAgICAgICAgICA2ICogKGNvb3Jkc1twc1s4XV1bMF0gKyBjb29yZHNbcHNbMTNdXVswXSkgLQogICAgICAgICAgMiAqIChjb29yZHNbcHNbMF1dWzBdICsgY29vcmRzW3BzWzE1XV1bMF0pICsKICAgICAgICAgIDMgKiAoY29vcmRzW3BzWzExXV1bMF0gKyBjb29yZHNbcHNbMV1dWzBdKSkgLyA5LAogICAgICAgICgtNCAqIGNvb3Jkc1twc1sxMl1dWzFdIC0gY29vcmRzW3BzWzNdXVsxXSArCiAgICAgICAgICA2ICogKGNvb3Jkc1twc1s4XV1bMV0gKyBjb29yZHNbcHNbMTNdXVsxXSkgLQogICAgICAgICAgMiAqIChjb29yZHNbcHNbMF1dWzFdICsgY29vcmRzW3BzWzE1XV1bMV0pICsKICAgICAgICAgIDMgKiAoY29vcmRzW3BzWzExXV1bMV0gKyBjb29yZHNbcHNbMV1dWzFdKSkgLyA5CiAgICAgIF0pOwogICAgICBwc1sxMF0gPSBjb29yZHMubGVuZ3RoOwogICAgICBjb29yZHMucHVzaChbCiAgICAgICAgKC00ICogY29vcmRzW3BzWzE1XV1bMF0gLSBjb29yZHNbcHNbMF1dWzBdICsKICAgICAgICAgIDYgKiAoY29vcmRzW3BzWzExXV1bMF0gKyBjb29yZHNbcHNbMTRdXVswXSkgLQogICAgICAgICAgMiAqIChjb29yZHNbcHNbMTJdXVswXSArIGNvb3Jkc1twc1szXV1bMF0pICsKICAgICAgICAgIDMgKiAoY29vcmRzW3BzWzJdXVswXSArIGNvb3Jkc1twc1s4XV1bMF0pKSAvIDksCiAgICAgICAgKC00ICogY29vcmRzW3BzWzE1XV1bMV0gLSBjb29yZHNbcHNbMF1dWzFdICsKICAgICAgICAgIDYgKiAoY29vcmRzW3BzWzExXV1bMV0gKyBjb29yZHNbcHNbMTRdXVsxXSkgLQogICAgICAgICAgMiAqIChjb29yZHNbcHNbMTJdXVsxXSArIGNvb3Jkc1twc1szXV1bMV0pICsKICAgICAgICAgIDMgKiAoY29vcmRzW3BzWzJdXVsxXSArIGNvb3Jkc1twc1s4XV1bMV0pKSAvIDkKICAgICAgXSk7CiAgICAgIG1lc2guZmlndXJlcy5wdXNoKHsKICAgICAgICB0eXBlOiAncGF0Y2gnLAogICAgICAgIGNvb3JkczogbmV3IEludDMyQXJyYXkocHMpLCAvLyBtYWtpbmcgY29waWVzIG9mIHBzIGFuZCBjcwogICAgICAgIGNvbG9yczogbmV3IEludDMyQXJyYXkoY3MpCiAgICAgIH0pOwogICAgfQogIH0KCiAgZnVuY3Rpb24gZGVjb2RlVHlwZTdTaGFkaW5nKG1lc2gsIHJlYWRlcikgewogICAgdmFyIGNvb3JkcyA9IG1lc2guY29vcmRzOwogICAgdmFyIGNvbG9ycyA9IG1lc2guY29sb3JzOwogICAgdmFyIHBzID0gbmV3IEludDMyQXJyYXkoMTYpOyAvLyBwMDAsIHAxMCwgLi4uLCBwMzAsIHAwMSwgLi4uLCBwMzMKICAgIHZhciBjcyA9IG5ldyBJbnQzMkFycmF5KDQpOyAvLyBjMDAsIGMzMCwgYzAzLCBjMzMKICAgIHdoaWxlIChyZWFkZXIuaGFzRGF0YSkgewogICAgICB2YXIgZiA9IHJlYWRlci5yZWFkRmxhZygpOwogICAgICBhc3NlcnQoMCA8PSBmICYmIGYgPD0gMywgJ1Vua25vd24gdHlwZTcgZmxhZycpOwogICAgICB2YXIgaSwgaWk7CiAgICAgIHZhciBwaSA9IGNvb3Jkcy5sZW5ndGg7CiAgICAgIGZvciAoaSA9IDAsIGlpID0gKGYgIT09IDAgPyAxMiA6IDE2KTsgaSA8IGlpOyBpKyspIHsKICAgICAgICBjb29yZHMucHVzaChyZWFkZXIucmVhZENvb3JkaW5hdGUoKSk7CiAgICAgIH0KICAgICAgdmFyIGNpID0gY29sb3JzLmxlbmd0aDsKICAgICAgZm9yIChpID0gMCwgaWkgPSAoZiAhPT0gMCA/IDIgOiA0KTsgaSA8IGlpOyBpKyspIHsKICAgICAgICBjb2xvcnMucHVzaChyZWFkZXIucmVhZENvbXBvbmVudHMoKSk7CiAgICAgIH0KICAgICAgdmFyIHRtcDEsIHRtcDIsIHRtcDMsIHRtcDQ7CiAgICAgIHN3aXRjaCAoZikgewogICAgICAgIGNhc2UgMDoKICAgICAgICAgIHBzWzEyXSA9IHBpICsgMzsgcHNbMTNdID0gcGkgKyA0OyAgcHNbMTRdID0gcGkgKyA1OyAgcHNbMTVdID0gcGkgKyA2OwogICAgICAgICAgcHNbIDhdID0gcGkgKyAyOyBwc1sgOV0gPSBwaSArIDEzOyBwc1sxMF0gPSBwaSArIDE0OyBwc1sxMV0gPSBwaSArIDc7CiAgICAgICAgICBwc1sgNF0gPSBwaSArIDE7IHBzWyA1XSA9IHBpICsgMTI7IHBzWyA2XSA9IHBpICsgMTU7IHBzWyA3XSA9IHBpICsgODsKICAgICAgICAgIHBzWyAwXSA9IHBpOyAgICAgcHNbIDFdID0gcGkgKyAxMTsgcHNbIDJdID0gcGkgKyAxMDsgcHNbIDNdID0gcGkgKyA5OwogICAgICAgICAgY3NbMl0gPSBjaSArIDE7IGNzWzNdID0gY2kgKyAyOwogICAgICAgICAgY3NbMF0gPSBjaTsgICAgIGNzWzFdID0gY2kgKyAzOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAxOgogICAgICAgICAgdG1wMSA9IHBzWzEyXTsgdG1wMiA9IHBzWzEzXTsgdG1wMyA9IHBzWzE0XTsgdG1wNCA9IHBzWzE1XTsKICAgICAgICAgIHBzWzEyXSA9IHBpICsgNTsgcHNbMTNdID0gcGkgKyA0OyAgcHNbMTRdID0gcGkgKyAzOyAgcHNbMTVdID0gcGkgKyAyOwogICAgICAgICAgcHNbIDhdID0gcGkgKyA2OyBwc1sgOV0gPSBwaSArIDExOyBwc1sxMF0gPSBwaSArIDEwOyBwc1sxMV0gPSBwaSArIDE7CiAgICAgICAgICBwc1sgNF0gPSBwaSArIDc7IHBzWyA1XSA9IHBpICsgODsgIHBzWyA2XSA9IHBpICsgOTsgIHBzWyA3XSA9IHBpOwogICAgICAgICAgcHNbIDBdID0gdG1wMTsgICBwc1sgMV0gPSB0bXAyOyAgICBwc1sgMl0gPSB0bXAzOyAgICBwc1sgM10gPSB0bXA0OwogICAgICAgICAgdG1wMSA9IGNzWzJdOyB0bXAyID0gY3NbM107CiAgICAgICAgICBjc1syXSA9IGNpICsgMTsgY3NbM10gPSBjaTsKICAgICAgICAgIGNzWzBdID0gdG1wMTsgICBjc1sxXSA9IHRtcDI7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDI6CiAgICAgICAgICBwc1sxMl0gPSBwc1sxNV07IHBzWzEzXSA9IHBpICsgNzsgcHNbMTRdID0gcGkgKyA2OyAgcHNbMTVdID0gcGkgKyA1OwogICAgICAgICAgcHNbIDhdID0gcHNbMTFdOyBwc1sgOV0gPSBwaSArIDg7IHBzWzEwXSA9IHBpICsgMTE7IHBzWzExXSA9IHBpICsgNDsKICAgICAgICAgIHBzWyA0XSA9IHBzWzddOyAgcHNbIDVdID0gcGkgKyA5OyBwc1sgNl0gPSBwaSArIDEwOyBwc1sgN10gPSBwaSArIDM7CiAgICAgICAgICBwc1sgMF0gPSBwc1szXTsgIHBzWyAxXSA9IHBpOyAgICAgcHNbIDJdID0gcGkgKyAxOyAgcHNbIDNdID0gcGkgKyAyOwogICAgICAgICAgY3NbMl0gPSBjc1szXTsgY3NbM10gPSBjaSArIDE7CiAgICAgICAgICBjc1swXSA9IGNzWzFdOyBjc1sxXSA9IGNpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAzOgogICAgICAgICAgcHNbMTJdID0gcHNbMF07ICBwc1sxM10gPSBwc1sxXTsgICBwc1sxNF0gPSBwc1syXTsgICBwc1sxNV0gPSBwc1szXTsKICAgICAgICAgIHBzWyA4XSA9IHBpOyAgICAgcHNbIDldID0gcGkgKyA5OyAgcHNbMTBdID0gcGkgKyA4OyAgcHNbMTFdID0gcGkgKyA3OwogICAgICAgICAgcHNbIDRdID0gcGkgKyAxOyBwc1sgNV0gPSBwaSArIDEwOyBwc1sgNl0gPSBwaSArIDExOyBwc1sgN10gPSBwaSArIDY7CiAgICAgICAgICBwc1sgMF0gPSBwaSArIDI7IHBzWyAxXSA9IHBpICsgMzsgIHBzWyAyXSA9IHBpICsgNDsgIHBzWyAzXSA9IHBpICsgNTsKICAgICAgICAgIGNzWzJdID0gY3NbMF07IGNzWzNdID0gY3NbMV07CiAgICAgICAgICBjc1swXSA9IGNpOyAgICBjc1sxXSA9IGNpICsgMTsKICAgICAgICAgIGJyZWFrOwogICAgICB9CiAgICAgIG1lc2guZmlndXJlcy5wdXNoKHsKICAgICAgICB0eXBlOiAncGF0Y2gnLAogICAgICAgIGNvb3JkczogbmV3IEludDMyQXJyYXkocHMpLCAvLyBtYWtpbmcgY29waWVzIG9mIHBzIGFuZCBjcwogICAgICAgIGNvbG9yczogbmV3IEludDMyQXJyYXkoY3MpCiAgICAgIH0pOwogICAgfQogIH0KCiAgZnVuY3Rpb24gdXBkYXRlQm91bmRzKG1lc2gpIHsKICAgIHZhciBtaW5YID0gbWVzaC5jb29yZHNbMF1bMF0sIG1pblkgPSBtZXNoLmNvb3Jkc1swXVsxXSwKICAgICAgbWF4WCA9IG1pblgsIG1heFkgPSBtaW5ZOwogICAgZm9yICh2YXIgaSA9IDEsIGlpID0gbWVzaC5jb29yZHMubGVuZ3RoOyBpIDwgaWk7IGkrKykgewogICAgICB2YXIgeCA9IG1lc2guY29vcmRzW2ldWzBdLCB5ID0gbWVzaC5jb29yZHNbaV1bMV07CiAgICAgIG1pblggPSBtaW5YID4geCA/IHggOiBtaW5YOwogICAgICBtaW5ZID0gbWluWSA+IHkgPyB5IDogbWluWTsKICAgICAgbWF4WCA9IG1heFggPCB4ID8geCA6IG1heFg7CiAgICAgIG1heFkgPSBtYXhZIDwgeSA/IHkgOiBtYXhZOwogICAgfQogICAgbWVzaC5ib3VuZHMgPSBbbWluWCwgbWluWSwgbWF4WCwgbWF4WV07CiAgfQoKICBmdW5jdGlvbiBwYWNrRGF0YShtZXNoKSB7CiAgICB2YXIgaSwgaWksIGosIGpqOwoKICAgIHZhciBjb29yZHMgPSBtZXNoLmNvb3JkczsKICAgIHZhciBjb29yZHNQYWNrZWQgPSBuZXcgRmxvYXQzMkFycmF5KGNvb3Jkcy5sZW5ndGggKiAyKTsKICAgIGZvciAoaSA9IDAsIGogPSAwLCBpaSA9IGNvb3Jkcy5sZW5ndGg7IGkgPCBpaTsgaSsrKSB7CiAgICAgIHZhciB4eSA9IGNvb3Jkc1tpXTsKICAgICAgY29vcmRzUGFja2VkW2orK10gPSB4eVswXTsKICAgICAgY29vcmRzUGFja2VkW2orK10gPSB4eVsxXTsKICAgIH0KICAgIG1lc2guY29vcmRzID0gY29vcmRzUGFja2VkOwoKICAgIHZhciBjb2xvcnMgPSBtZXNoLmNvbG9yczsKICAgIHZhciBjb2xvcnNQYWNrZWQgPSBuZXcgVWludDhBcnJheShjb2xvcnMubGVuZ3RoICogMyk7CiAgICBmb3IgKGkgPSAwLCBqID0gMCwgaWkgPSBjb2xvcnMubGVuZ3RoOyBpIDwgaWk7IGkrKykgewogICAgICB2YXIgYyA9IGNvbG9yc1tpXTsKICAgICAgY29sb3JzUGFja2VkW2orK10gPSBjWzBdOwogICAgICBjb2xvcnNQYWNrZWRbaisrXSA9IGNbMV07CiAgICAgIGNvbG9yc1BhY2tlZFtqKytdID0gY1syXTsKICAgIH0KICAgIG1lc2guY29sb3JzID0gY29sb3JzUGFja2VkOwoKICAgIHZhciBmaWd1cmVzID0gbWVzaC5maWd1cmVzOwogICAgZm9yIChpID0gMCwgaWkgPSBmaWd1cmVzLmxlbmd0aDsgaSA8IGlpOyBpKyspIHsKICAgICAgdmFyIGZpZ3VyZSA9IGZpZ3VyZXNbaV0sIHBzID0gZmlndXJlLmNvb3JkcywgY3MgPSBmaWd1cmUuY29sb3JzOwogICAgICBmb3IgKGogPSAwLCBqaiA9IHBzLmxlbmd0aDsgaiA8IGpqOyBqKyspIHsKICAgICAgICBwc1tqXSAqPSAyOwogICAgICAgIGNzW2pdICo9IDM7CiAgICAgIH0KICAgIH0KICB9CgogIGZ1bmN0aW9uIE1lc2goc3RyZWFtLCBtYXRyaXgsIHhyZWYsIHJlcykgewogICAgYXNzZXJ0KGlzU3RyZWFtKHN0cmVhbSksICdNZXNoIGRhdGEgaXMgbm90IGEgc3RyZWFtJyk7CiAgICB2YXIgZGljdCA9IHN0cmVhbS5kaWN0OwogICAgdGhpcy5tYXRyaXggPSBtYXRyaXg7CiAgICB0aGlzLnNoYWRpbmdUeXBlID0gZGljdC5nZXQoJ1NoYWRpbmdUeXBlJyk7CiAgICB0aGlzLnR5cGUgPSAnUGF0dGVybic7CiAgICB0aGlzLmJib3ggPSBkaWN0LmdldCgnQkJveCcpOwogICAgdmFyIGNzID0gZGljdC5nZXQoJ0NvbG9yU3BhY2UnLCAnQ1MnKTsKICAgIGNzID0gQ29sb3JTcGFjZS5wYXJzZShjcywgeHJlZiwgcmVzKTsKICAgIHRoaXMuY3MgPSBjczsKICAgIHRoaXMuYmFja2dyb3VuZCA9IGRpY3QuaGFzKCdCYWNrZ3JvdW5kJykgPwogICAgICBjcy5nZXRSZ2IoZGljdC5nZXQoJ0JhY2tncm91bmQnKSwgMCkgOiBudWxsOwoKICAgIHZhciBmbk9iaiA9IGRpY3QuZ2V0KCdGdW5jdGlvbicpOwogICAgdmFyIGZuID0gZm5PYmogPyBQREZGdW5jdGlvbi5wYXJzZUFycmF5KHhyZWYsIGZuT2JqKSA6IG51bGw7CgogICAgdGhpcy5jb29yZHMgPSBbXTsKICAgIHRoaXMuY29sb3JzID0gW107CiAgICB0aGlzLmZpZ3VyZXMgPSBbXTsKCiAgICB2YXIgZGVjb2RlQ29udGV4dCA9IHsKICAgICAgYml0c1BlckNvb3JkaW5hdGU6IGRpY3QuZ2V0KCdCaXRzUGVyQ29vcmRpbmF0ZScpLAogICAgICBiaXRzUGVyQ29tcG9uZW50OiBkaWN0LmdldCgnQml0c1BlckNvbXBvbmVudCcpLAogICAgICBiaXRzUGVyRmxhZzogZGljdC5nZXQoJ0JpdHNQZXJGbGFnJyksCiAgICAgIGRlY29kZTogZGljdC5nZXQoJ0RlY29kZScpLAogICAgICBjb2xvckZuOiBmbiwKICAgICAgY29sb3JTcGFjZTogY3MsCiAgICAgIG51bUNvbXBzOiBmbiA/IDEgOiBjcy5udW1Db21wcwogICAgfTsKICAgIHZhciByZWFkZXIgPSBuZXcgTWVzaFN0cmVhbVJlYWRlcihzdHJlYW0sIGRlY29kZUNvbnRleHQpOwoKICAgIHZhciBwYXRjaE1lc2ggPSBmYWxzZTsKICAgIHN3aXRjaCAodGhpcy5zaGFkaW5nVHlwZSkgewogICAgICBjYXNlIFBhdHRlcm5UeXBlLkZSRUVfRk9STV9NRVNIOgogICAgICAgIGRlY29kZVR5cGU0U2hhZGluZyh0aGlzLCByZWFkZXIpOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlIFBhdHRlcm5UeXBlLkxBVFRJQ0VfRk9STV9NRVNIOgogICAgICAgIHZhciB2ZXJ0aWNlc1BlclJvdyA9IGRpY3QuZ2V0KCdWZXJ0aWNlc1BlclJvdycpIHwgMDsKICAgICAgICBhc3NlcnQodmVydGljZXNQZXJSb3cgPj0gMiwgJ0ludmFsaWQgVmVydGljZXNQZXJSb3cnKTsKICAgICAgICBkZWNvZGVUeXBlNVNoYWRpbmcodGhpcywgcmVhZGVyLCB2ZXJ0aWNlc1BlclJvdyk7CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgUGF0dGVyblR5cGUuQ09PTlNfUEFUQ0hfTUVTSDoKICAgICAgICBkZWNvZGVUeXBlNlNoYWRpbmcodGhpcywgcmVhZGVyKTsKICAgICAgICBwYXRjaE1lc2ggPSB0cnVlOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlIFBhdHRlcm5UeXBlLlRFTlNPUl9QQVRDSF9NRVNIOgogICAgICAgIGRlY29kZVR5cGU3U2hhZGluZyh0aGlzLCByZWFkZXIpOwogICAgICAgIHBhdGNoTWVzaCA9IHRydWU7CiAgICAgICAgYnJlYWs7CiAgICAgIGRlZmF1bHQ6CiAgICAgICAgZXJyb3IoJ1Vuc3VwcG9ydGVkIG1lc2ggdHlwZS4nKTsKICAgICAgICBicmVhazsKICAgIH0KCiAgICBpZiAocGF0Y2hNZXNoKSB7CiAgICAgIC8vIGRpcnR5IGJvdW5kcyBjYWxjdWxhdGlvbiBmb3IgZGV0ZXJtaW5pbmcsIGhvdyBkZW5zZSBzaGFsbCBiZSB0cmlhbmdsZXMKICAgICAgdXBkYXRlQm91bmRzKHRoaXMpOwogICAgICBmb3IgKHZhciBpID0gMCwgaWkgPSB0aGlzLmZpZ3VyZXMubGVuZ3RoOyBpIDwgaWk7IGkrKykgewogICAgICAgIGJ1aWxkRmlndXJlRnJvbVBhdGNoKHRoaXMsIGkpOwogICAgICB9CiAgICB9CiAgICAvLyBjYWxjdWxhdGUgYm91bmRzCiAgICB1cGRhdGVCb3VuZHModGhpcyk7CgogICAgcGFja0RhdGEodGhpcyk7CiAgfQoKICBNZXNoLnByb3RvdHlwZSA9IHsKICAgIGdldElSOiBmdW5jdGlvbiBNZXNoX2dldElSKCkgewogICAgICByZXR1cm4gWydNZXNoJywgdGhpcy5zaGFkaW5nVHlwZSwgdGhpcy5jb29yZHMsIHRoaXMuY29sb3JzLCB0aGlzLmZpZ3VyZXMsCiAgICAgICAgdGhpcy5ib3VuZHMsIHRoaXMubWF0cml4LCB0aGlzLmJib3gsIHRoaXMuYmFja2dyb3VuZF07CiAgICB9CiAgfTsKCiAgcmV0dXJuIE1lc2g7Cn0pKCk7CgpTaGFkaW5ncy5EdW1teSA9IChmdW5jdGlvbiBEdW1teUNsb3N1cmUoKSB7CiAgZnVuY3Rpb24gRHVtbXkoKSB7CiAgICB0aGlzLnR5cGUgPSAnUGF0dGVybic7CiAgfQoKICBEdW1teS5wcm90b3R5cGUgPSB7CiAgICBnZXRJUjogZnVuY3Rpb24gRHVtbXlfZ2V0SVIoKSB7CiAgICAgIHJldHVybiBbJ0R1bW15J107CiAgICB9CiAgfTsKICByZXR1cm4gRHVtbXk7Cn0pKCk7CgpmdW5jdGlvbiBnZXRUaWxpbmdQYXR0ZXJuSVIob3BlcmF0b3JMaXN0LCBkaWN0LCBhcmdzKSB7CiAgdmFyIG1hdHJpeCA9IGRpY3QuZ2V0KCdNYXRyaXgnKTsKICB2YXIgYmJveCA9IGRpY3QuZ2V0KCdCQm94Jyk7CiAgdmFyIHhzdGVwID0gZGljdC5nZXQoJ1hTdGVwJyk7CiAgdmFyIHlzdGVwID0gZGljdC5nZXQoJ1lTdGVwJyk7CiAgdmFyIHBhaW50VHlwZSA9IGRpY3QuZ2V0KCdQYWludFR5cGUnKTsKICB2YXIgdGlsaW5nVHlwZSA9IGRpY3QuZ2V0KCdUaWxpbmdUeXBlJyk7CgogIHJldHVybiBbCiAgICAnVGlsaW5nUGF0dGVybicsIGFyZ3MsIG9wZXJhdG9yTGlzdCwgbWF0cml4LCBiYm94LCB4c3RlcCwgeXN0ZXAsCiAgICBwYWludFR5cGUsIHRpbGluZ1R5cGUKICBdOwp9CgoKdmFyIFBhcnRpYWxFdmFsdWF0b3IgPSAoZnVuY3Rpb24gUGFydGlhbEV2YWx1YXRvckNsb3N1cmUoKSB7CiAgZnVuY3Rpb24gUGFydGlhbEV2YWx1YXRvcihwZGZNYW5hZ2VyLCB4cmVmLCBoYW5kbGVyLCBwYWdlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlxdWVQcmVmaXgsIGlkQ291bnRlcnMsIGZvbnRDYWNoZSkgewogICAgdGhpcy5wZGZNYW5hZ2VyID0gcGRmTWFuYWdlcjsKICAgIHRoaXMueHJlZiA9IHhyZWY7CiAgICB0aGlzLmhhbmRsZXIgPSBoYW5kbGVyOwogICAgdGhpcy5wYWdlSW5kZXggPSBwYWdlSW5kZXg7CiAgICB0aGlzLnVuaXF1ZVByZWZpeCA9IHVuaXF1ZVByZWZpeDsKICAgIHRoaXMuaWRDb3VudGVycyA9IGlkQ291bnRlcnM7CiAgICB0aGlzLmZvbnRDYWNoZSA9IGZvbnRDYWNoZTsKICB9CgogIC8vIFRyeWluZyB0byBtaW5pbWl6ZSBEYXRlLm5vdygpIHVzYWdlIGFuZCBjaGVjayBldmVyeSAxMDAgdGltZQogIHZhciBUSU1FX1NMT1RfRFVSQVRJT05fTVMgPSAyMDsKICB2YXIgQ0hFQ0tfVElNRV9FVkVSWSA9IDEwMDsKICBmdW5jdGlvbiBUaW1lU2xvdE1hbmFnZXIoKSB7CiAgICB0aGlzLnJlc2V0KCk7CiAgfQogIFRpbWVTbG90TWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICBjaGVjazogZnVuY3Rpb24gVGltZVNsb3RNYW5hZ2VyX2NoZWNrKCkgewogICAgICBpZiAoKyt0aGlzLmNoZWNrZWQgPCBDSEVDS19USU1FX0VWRVJZKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICAgIHRoaXMuY2hlY2tlZCA9IDA7CiAgICAgIHJldHVybiB0aGlzLmVuZFRpbWUgPD0gRGF0ZS5ub3coKTsKICAgIH0sCiAgICByZXNldDogZnVuY3Rpb24gVGltZVNsb3RNYW5hZ2VyX3Jlc2V0KCkgewogICAgICB0aGlzLmVuZFRpbWUgPSBEYXRlLm5vdygpICsgVElNRV9TTE9UX0RVUkFUSU9OX01TOwogICAgICB0aGlzLmNoZWNrZWQgPSAwOwogICAgfQogIH07CgogIHZhciBkZWZlcnJlZCA9IFByb21pc2UucmVzb2x2ZSgpOwoKICB2YXIgVElMSU5HX1BBVFRFUk4gPSAxLCBTSEFESU5HX1BBVFRFUk4gPSAyOwoKICBQYXJ0aWFsRXZhbHVhdG9yLnByb3RvdHlwZSA9IHsKICAgIGhhc0JsZW5kTW9kZXM6IGZ1bmN0aW9uIFBhcnRpYWxFdmFsdWF0b3JfaGFzQmxlbmRNb2RlcyhyZXNvdXJjZXMpIHsKICAgICAgaWYgKCFpc0RpY3QocmVzb3VyY2VzKSkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQoKICAgICAgdmFyIHByb2Nlc3NlZCA9IE9iamVjdC5jcmVhdGUobnVsbCk7CiAgICAgIGlmIChyZXNvdXJjZXMub2JqSWQpIHsKICAgICAgICBwcm9jZXNzZWRbcmVzb3VyY2VzLm9iaklkXSA9IHRydWU7CiAgICAgIH0KCiAgICAgIHZhciBub2RlcyA9IFtyZXNvdXJjZXNdOwogICAgICB3aGlsZSAobm9kZXMubGVuZ3RoKSB7CiAgICAgICAgdmFyIGtleTsKICAgICAgICB2YXIgbm9kZSA9IG5vZGVzLnNoaWZ0KCk7CiAgICAgICAgLy8gRmlyc3QgY2hlY2sgdGhlIGN1cnJlbnQgcmVzb3VyY2VzIGZvciBibGVuZCBtb2Rlcy4KICAgICAgICB2YXIgZ3JhcGhpY1N0YXRlcyA9IG5vZGUuZ2V0KCdFeHRHU3RhdGUnKTsKICAgICAgICBpZiAoaXNEaWN0KGdyYXBoaWNTdGF0ZXMpKSB7CiAgICAgICAgICBncmFwaGljU3RhdGVzID0gZ3JhcGhpY1N0YXRlcy5nZXRBbGwoKTsKICAgICAgICAgIGZvciAoa2V5IGluIGdyYXBoaWNTdGF0ZXMpIHsKICAgICAgICAgICAgdmFyIGdyYXBoaWNTdGF0ZSA9IGdyYXBoaWNTdGF0ZXNba2V5XTsKICAgICAgICAgICAgdmFyIGJtID0gZ3JhcGhpY1N0YXRlWydCTSddOwogICAgICAgICAgICBpZiAoaXNOYW1lKGJtKSAmJiBibS5uYW1lICE9PSAnTm9ybWFsJykgewogICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIC8vIERlc2NlbmQgaW50byB0aGUgWE9iamVjdHMgdG8gbG9vayBmb3IgbW9yZSByZXNvdXJjZXMgYW5kIGJsZW5kIG1vZGVzLgogICAgICAgIHZhciB4T2JqZWN0cyA9IG5vZGUuZ2V0KCdYT2JqZWN0Jyk7CiAgICAgICAgaWYgKCFpc0RpY3QoeE9iamVjdHMpKSB7CiAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgeE9iamVjdHMgPSB4T2JqZWN0cy5nZXRBbGwoKTsKICAgICAgICBmb3IgKGtleSBpbiB4T2JqZWN0cykgewogICAgICAgICAgdmFyIHhPYmplY3QgPSB4T2JqZWN0c1trZXldOwogICAgICAgICAgaWYgKCFpc1N0cmVhbSh4T2JqZWN0KSkgewogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIH0KICAgICAgICAgIGlmICh4T2JqZWN0LmRpY3Qub2JqSWQpIHsKICAgICAgICAgICAgaWYgKHByb2Nlc3NlZFt4T2JqZWN0LmRpY3Qub2JqSWRdKSB7CiAgICAgICAgICAgICAgLy8gc3RyZWFtIGhhcyBvYmpJZCBhbmQgaXMgcHJvY2Vzc2VkIGFscmVhZHkKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBwcm9jZXNzZWRbeE9iamVjdC5kaWN0Lm9iaklkXSA9IHRydWU7CiAgICAgICAgICB9CiAgICAgICAgICB2YXIgeFJlc291cmNlcyA9IHhPYmplY3QuZGljdC5nZXQoJ1Jlc291cmNlcycpOwogICAgICAgICAgLy8gQ2hlY2tpbmcgb2JqSWQgdG8gZGV0ZWN0IGFuIGluZmluaXRlIGxvb3AuCiAgICAgICAgICBpZiAoaXNEaWN0KHhSZXNvdXJjZXMpICYmCiAgICAgICAgICAgICAgKCF4UmVzb3VyY2VzLm9iaklkIHx8ICFwcm9jZXNzZWRbeFJlc291cmNlcy5vYmpJZF0pKSB7CiAgICAgICAgICAgIG5vZGVzLnB1c2goeFJlc291cmNlcyk7CiAgICAgICAgICAgIGlmICh4UmVzb3VyY2VzLm9iaklkKSB7CiAgICAgICAgICAgICAgcHJvY2Vzc2VkW3hSZXNvdXJjZXMub2JqSWRdID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gZmFsc2U7CiAgICB9LAoKICAgIGJ1aWxkRm9ybVhPYmplY3Q6IGZ1bmN0aW9uIFBhcnRpYWxFdmFsdWF0b3JfYnVpbGRGb3JtWE9iamVjdChyZXNvdXJjZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG9iaiwgc21hc2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3JMaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxTdGF0ZSkgewogICAgICB2YXIgbWF0cml4ID0geG9iai5kaWN0LmdldCgnTWF0cml4Jyk7CiAgICAgIHZhciBiYm94ID0geG9iai5kaWN0LmdldCgnQkJveCcpOwogICAgICB2YXIgZ3JvdXAgPSB4b2JqLmRpY3QuZ2V0KCdHcm91cCcpOwogICAgICBpZiAoZ3JvdXApIHsKICAgICAgICB2YXIgZ3JvdXBPcHRpb25zID0gewogICAgICAgICAgbWF0cml4OiBtYXRyaXgsCiAgICAgICAgICBiYm94OiBiYm94LAogICAgICAgICAgc21hc2s6IHNtYXNrLAogICAgICAgICAgaXNvbGF0ZWQ6IGZhbHNlLAogICAgICAgICAga25vY2tvdXQ6IGZhbHNlCiAgICAgICAgfTsKCiAgICAgICAgdmFyIGdyb3VwU3VidHlwZSA9IGdyb3VwLmdldCgnUycpOwogICAgICAgIHZhciBjb2xvclNwYWNlOwogICAgICAgIGlmIChpc05hbWUoZ3JvdXBTdWJ0eXBlKSAmJiBncm91cFN1YnR5cGUubmFtZSA9PT0gJ1RyYW5zcGFyZW5jeScpIHsKICAgICAgICAgIGdyb3VwT3B0aW9ucy5pc29sYXRlZCA9IChncm91cC5nZXQoJ0knKSB8fCBmYWxzZSk7CiAgICAgICAgICBncm91cE9wdGlvbnMua25vY2tvdXQgPSAoZ3JvdXAuZ2V0KCdLJykgfHwgZmFsc2UpOwogICAgICAgICAgY29sb3JTcGFjZSA9IChncm91cC5oYXMoJ0NTJykgPwogICAgICAgICAgICBDb2xvclNwYWNlLnBhcnNlKGdyb3VwLmdldCgnQ1MnKSwgdGhpcy54cmVmLCByZXNvdXJjZXMpIDogbnVsbCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoc21hc2sgJiYgc21hc2suYmFja2Ryb3ApIHsKICAgICAgICAgIGNvbG9yU3BhY2UgPSBjb2xvclNwYWNlIHx8IENvbG9yU3BhY2Uuc2luZ2xldG9ucy5yZ2I7CiAgICAgICAgICBzbWFzay5iYWNrZHJvcCA9IGNvbG9yU3BhY2UuZ2V0UmdiKHNtYXNrLmJhY2tkcm9wLCAwKTsKICAgICAgICB9CgogICAgICAgIG9wZXJhdG9yTGlzdC5hZGRPcChPUFMuYmVnaW5Hcm91cCwgW2dyb3VwT3B0aW9uc10pOwogICAgICB9CgogICAgICBvcGVyYXRvckxpc3QuYWRkT3AoT1BTLnBhaW50Rm9ybVhPYmplY3RCZWdpbiwgW21hdHJpeCwgYmJveF0pOwoKICAgICAgcmV0dXJuIHRoaXMuZ2V0T3BlcmF0b3JMaXN0KHhvYmosCiAgICAgICAgKHhvYmouZGljdC5nZXQoJ1Jlc291cmNlcycpIHx8IHJlc291cmNlcyksIG9wZXJhdG9yTGlzdCwgaW5pdGlhbFN0YXRlKS4KICAgICAgICB0aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICAgIG9wZXJhdG9yTGlzdC5hZGRPcChPUFMucGFpbnRGb3JtWE9iamVjdEVuZCwgW10pOwoKICAgICAgICAgIGlmIChncm91cCkgewogICAgICAgICAgICBvcGVyYXRvckxpc3QuYWRkT3AoT1BTLmVuZEdyb3VwLCBbZ3JvdXBPcHRpb25zXSk7CiAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9LAoKICAgIGJ1aWxkUGFpbnRJbWFnZVhPYmplY3Q6CiAgICAgICAgZnVuY3Rpb24gUGFydGlhbEV2YWx1YXRvcl9idWlsZFBhaW50SW1hZ2VYT2JqZWN0KHJlc291cmNlcywgaW1hZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZSwgb3BlcmF0b3JMaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZUtleSwgaW1hZ2VDYWNoZSkgewogICAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICAgIHZhciBkaWN0ID0gaW1hZ2UuZGljdDsKICAgICAgdmFyIHcgPSBkaWN0LmdldCgnV2lkdGgnLCAnVycpOwogICAgICB2YXIgaCA9IGRpY3QuZ2V0KCdIZWlnaHQnLCAnSCcpOwoKICAgICAgaWYgKCEodyAmJiBpc051bSh3KSkgfHwgIShoICYmIGlzTnVtKGgpKSkgewogICAgICAgIHdhcm4oJ0ltYWdlIGRpbWVuc2lvbnMgYXJlIG1pc3NpbmcsIG9yIG5vdCBudW1iZXJzLicpOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBpZiAoUERGSlMubWF4SW1hZ2VTaXplICE9PSAtMSAmJiB3ICogaCA+IFBERkpTLm1heEltYWdlU2l6ZSkgewogICAgICAgIHdhcm4oJ0ltYWdlIGV4Y2VlZGVkIG1heGltdW0gYWxsb3dlZCBzaXplIGFuZCB3YXMgcmVtb3ZlZC4nKTsKICAgICAgICByZXR1cm47CiAgICAgIH0KCiAgICAgIHZhciBpbWFnZU1hc2sgPSAoZGljdC5nZXQoJ0ltYWdlTWFzaycsICdJTScpIHx8IGZhbHNlKTsKICAgICAgdmFyIGltZ0RhdGEsIGFyZ3M7CiAgICAgIGlmIChpbWFnZU1hc2spIHsKICAgICAgICAvLyBUaGlzIGRlcGVuZHMgb24gYSB0bXBDYW52YXMgYmVpbmcgZmlsbGVkIHdpdGggdGhlCiAgICAgICAgLy8gY3VycmVudCBmaWxsU3R5bGUsIHN1Y2ggdGhhdCBwcm9jZXNzaW5nIHRoZSBwaXhlbAogICAgICAgIC8vIGRhdGEgY2FuJ3QgYmUgZG9uZSBoZXJlLiBJbnN0ZWFkIG9mIGNyZWF0aW5nIGEKICAgICAgICAvLyBjb21wbGV0ZSBQREZJbWFnZSwgb25seSByZWFkIHRoZSBpbmZvcm1hdGlvbiBuZWVkZWQKICAgICAgICAvLyBmb3IgbGF0ZXIuCgogICAgICAgIHZhciB3aWR0aCA9IGRpY3QuZ2V0KCdXaWR0aCcsICdXJyk7CiAgICAgICAgdmFyIGhlaWdodCA9IGRpY3QuZ2V0KCdIZWlnaHQnLCAnSCcpOwogICAgICAgIHZhciBiaXRTdHJpZGVMZW5ndGggPSAod2lkdGggKyA3KSA+PiAzOwogICAgICAgIHZhciBpbWdBcnJheSA9IGltYWdlLmdldEJ5dGVzKGJpdFN0cmlkZUxlbmd0aCAqIGhlaWdodCk7CiAgICAgICAgdmFyIGRlY29kZSA9IGRpY3QuZ2V0KCdEZWNvZGUnLCAnRCcpOwogICAgICAgIHZhciBpbnZlcnNlRGVjb2RlID0gKCEhZGVjb2RlICYmIGRlY29kZVswXSA+IDApOwoKICAgICAgICBpbWdEYXRhID0gUERGSW1hZ2UuY3JlYXRlTWFzayhpbWdBcnJheSwgd2lkdGgsIGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZSBpbnN0YW5jZW9mIERlY29kZVN0cmVhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZlcnNlRGVjb2RlKTsKICAgICAgICBpbWdEYXRhLmNhY2hlZCA9IHRydWU7CiAgICAgICAgYXJncyA9IFtpbWdEYXRhXTsKICAgICAgICBvcGVyYXRvckxpc3QuYWRkT3AoT1BTLnBhaW50SW1hZ2VNYXNrWE9iamVjdCwgYXJncyk7CiAgICAgICAgaWYgKGNhY2hlS2V5KSB7CiAgICAgICAgICBpbWFnZUNhY2hlW2NhY2hlS2V5XSA9IHsKICAgICAgICAgICAgZm46IE9QUy5wYWludEltYWdlTWFza1hPYmplY3QsCiAgICAgICAgICAgIGFyZ3M6IGFyZ3MKICAgICAgICAgIH07CiAgICAgICAgfQogICAgICAgIHJldHVybjsKICAgICAgfQoKICAgICAgdmFyIHNvZnRNYXNrID0gKGRpY3QuZ2V0KCdTTWFzaycsICdTTScpIHx8IGZhbHNlKTsKICAgICAgdmFyIG1hc2sgPSAoZGljdC5nZXQoJ01hc2snKSB8fCBmYWxzZSk7CgogICAgICB2YXIgU01BTExfSU1BR0VfRElNRU5TSU9OUyA9IDIwMDsKICAgICAgLy8gSW5saW5pbmcgc21hbGwgaW1hZ2VzIGludG8gdGhlIHF1ZXVlIGFzIFJHQiBkYXRhCiAgICAgIGlmIChpbmxpbmUgJiYgIXNvZnRNYXNrICYmICFtYXNrICYmICEoaW1hZ2UgaW5zdGFuY2VvZiBKcGVnU3RyZWFtKSAmJgogICAgICAgICAgKHcgKyBoKSA8IFNNQUxMX0lNQUdFX0RJTUVOU0lPTlMpIHsKICAgICAgICB2YXIgaW1hZ2VPYmogPSBuZXcgUERGSW1hZ2UodGhpcy54cmVmLCByZXNvdXJjZXMsIGltYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmUsIG51bGwsIG51bGwpOwogICAgICAgIC8vIFdlIGZvcmNlIHRoZSB1c2Ugb2YgUkdCQV8zMkJQUCBpbWFnZXMgaGVyZSwgYmVjYXVzZSB3ZSBjYW4ndCBoYW5kbGUKICAgICAgICAvLyBhbnkgb3RoZXIga2luZC4KICAgICAgICBpbWdEYXRhID0gaW1hZ2VPYmouY3JlYXRlSW1hZ2VEYXRhKC8qIGZvcmNlUkdCQSA9ICovIHRydWUpOwogICAgICAgIG9wZXJhdG9yTGlzdC5hZGRPcChPUFMucGFpbnRJbmxpbmVJbWFnZVhPYmplY3QsIFtpbWdEYXRhXSk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICAvLyBJZiB0aGVyZSBpcyBubyBpbWFnZU1hc2ssIGNyZWF0ZSB0aGUgUERGSW1hZ2UgYW5kIGEgbG90CiAgICAgIC8vIG9mIGltYWdlIHByb2Nlc3NpbmcgY2FuIGJlIGRvbmUgaGVyZS4KICAgICAgdmFyIHVuaXF1ZVByZWZpeCA9ICh0aGlzLnVuaXF1ZVByZWZpeCB8fCAnJyk7CiAgICAgIHZhciBvYmpJZCA9ICdpbWdfJyArIHVuaXF1ZVByZWZpeCArICgrK3RoaXMuaWRDb3VudGVycy5vYmopOwogICAgICBvcGVyYXRvckxpc3QuYWRkRGVwZW5kZW5jeShvYmpJZCk7CiAgICAgIGFyZ3MgPSBbb2JqSWQsIHcsIGhdOwoKICAgICAgaWYgKCFzb2Z0TWFzayAmJiAhbWFzayAmJiBpbWFnZSBpbnN0YW5jZW9mIEpwZWdTdHJlYW0gJiYKICAgICAgICAgIGltYWdlLmlzTmF0aXZlbHlTdXBwb3J0ZWQodGhpcy54cmVmLCByZXNvdXJjZXMpKSB7CiAgICAgICAgLy8gVGhlc2UgSlBFR3MgZG9uJ3QgbmVlZCBhbnkgbW9yZSBwcm9jZXNzaW5nIHNvIHdlIGNhbiBqdXN0IHNlbmQgaXQuCiAgICAgICAgb3BlcmF0b3JMaXN0LmFkZE9wKE9QUy5wYWludEpwZWdYT2JqZWN0LCBhcmdzKTsKICAgICAgICB0aGlzLmhhbmRsZXIuc2VuZCgnb2JqJywKICAgICAgICAgIFtvYmpJZCwgdGhpcy5wYWdlSW5kZXgsICdKcGVnU3RyZWFtJywgaW1hZ2UuZ2V0SVIoKV0pOwogICAgICAgIHJldHVybjsKICAgICAgfQoKICAgICAgUERGSW1hZ2UuYnVpbGRJbWFnZShzZWxmLmhhbmRsZXIsIHNlbGYueHJlZiwgcmVzb3VyY2VzLCBpbWFnZSwgaW5saW5lKS4KICAgICAgICB0aGVuKGZ1bmN0aW9uKGltYWdlT2JqKSB7CiAgICAgICAgICB2YXIgaW1nRGF0YSA9IGltYWdlT2JqLmNyZWF0ZUltYWdlRGF0YSgvKiBmb3JjZVJHQkEgPSAqLyBmYWxzZSk7CiAgICAgICAgICBzZWxmLmhhbmRsZXIuc2VuZCgnb2JqJywgW29iaklkLCBzZWxmLnBhZ2VJbmRleCwgJ0ltYWdlJywgaW1nRGF0YV0sCiAgICAgICAgICAgIFtpbWdEYXRhLmRhdGEuYnVmZmVyXSk7CiAgICAgICAgfSkudGhlbih1bmRlZmluZWQsIGZ1bmN0aW9uIChyZWFzb24pIHsKICAgICAgICAgIHdhcm4oJ1VuYWJsZSB0byBkZWNvZGUgaW1hZ2U6ICcgKyByZWFzb24pOwogICAgICAgICAgc2VsZi5oYW5kbGVyLnNlbmQoJ29iaicsIFtvYmpJZCwgc2VsZi5wYWdlSW5kZXgsICdJbWFnZScsIG51bGxdKTsKICAgICAgICB9KTsKCiAgICAgIG9wZXJhdG9yTGlzdC5hZGRPcChPUFMucGFpbnRJbWFnZVhPYmplY3QsIGFyZ3MpOwogICAgICBpZiAoY2FjaGVLZXkpIHsKICAgICAgICBpbWFnZUNhY2hlW2NhY2hlS2V5XSA9IHsKICAgICAgICAgIGZuOiBPUFMucGFpbnRJbWFnZVhPYmplY3QsCiAgICAgICAgICBhcmdzOiBhcmdzCiAgICAgICAgfTsKICAgICAgfQogICAgfSwKCiAgICBoYW5kbGVTTWFzazogZnVuY3Rpb24gUGFydGlhbEV2YWx1YXRvcl9oYW5kbGVTbWFzayhzbWFzaywgcmVzb3VyY2VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3JMaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVNYW5hZ2VyKSB7CiAgICAgIHZhciBzbWFza0NvbnRlbnQgPSBzbWFzay5nZXQoJ0cnKTsKICAgICAgdmFyIHNtYXNrT3B0aW9ucyA9IHsKICAgICAgICBzdWJ0eXBlOiBzbWFzay5nZXQoJ1MnKS5uYW1lLAogICAgICAgIGJhY2tkcm9wOiBzbWFzay5nZXQoJ0JDJykKICAgICAgfTsKICAgICAgcmV0dXJuIHRoaXMuYnVpbGRGb3JtWE9iamVjdChyZXNvdXJjZXMsIHNtYXNrQ29udGVudCwgc21hc2tPcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3JMaXN0LCBzdGF0ZU1hbmFnZXIuc3RhdGUuY2xvbmUoKSk7CiAgICB9LAoKICAgIGhhbmRsZVRpbGluZ1R5cGU6CiAgICAgICAgZnVuY3Rpb24gUGFydGlhbEV2YWx1YXRvcl9oYW5kbGVUaWxpbmdUeXBlKGZuLCBhcmdzLCByZXNvdXJjZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm4sIHBhdHRlcm5EaWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvckxpc3QpIHsKICAgICAgLy8gQ3JlYXRlIGFuIElSIG9mIHRoZSBwYXR0ZXJuIGNvZGUuCiAgICAgIHZhciB0aWxpbmdPcExpc3QgPSBuZXcgT3BlcmF0b3JMaXN0KCk7CiAgICAgIHJldHVybiB0aGlzLmdldE9wZXJhdG9yTGlzdChwYXR0ZXJuLAogICAgICAgIChwYXR0ZXJuRGljdC5nZXQoJ1Jlc291cmNlcycpIHx8IHJlc291cmNlcyksIHRpbGluZ09wTGlzdCkuCiAgICAgICAgdGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgICAvLyBBZGQgdGhlIGRlcGVuZGVuY2llcyB0byB0aGUgcGFyZW50IG9wZXJhdG9yIGxpc3Qgc28gdGhleSBhcmUKICAgICAgICAgIC8vIHJlc29sdmVkIGJlZm9yZSBzdWIgb3BlcmF0b3IgbGlzdCBpcyBleGVjdXRlZCBzeW5jaHJvbm91c2x5LgogICAgICAgICAgb3BlcmF0b3JMaXN0LmFkZERlcGVuZGVuY2llcyh0aWxpbmdPcExpc3QuZGVwZW5kZW5jaWVzKTsKICAgICAgICAgIG9wZXJhdG9yTGlzdC5hZGRPcChmbiwgZ2V0VGlsaW5nUGF0dGVybklSKHsKICAgICAgICAgICAgZm5BcnJheTogdGlsaW5nT3BMaXN0LmZuQXJyYXksCiAgICAgICAgICAgIGFyZ3NBcnJheTogdGlsaW5nT3BMaXN0LmFyZ3NBcnJheQogICAgICAgICAgfSwgcGF0dGVybkRpY3QsIGFyZ3MpKTsKICAgICAgICB9KTsKICAgIH0sCgogICAgaGFuZGxlU2V0Rm9udDoKICAgICAgICBmdW5jdGlvbiBQYXJ0aWFsRXZhbHVhdG9yX2hhbmRsZVNldEZvbnQocmVzb3VyY2VzLCBmb250QXJncywgZm9udFJlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3JMaXN0LCBzdGF0ZSkgewogICAgICAvLyBUT0RPKG1hY2spOiBOb3QgbmVlZGVkPwogICAgICB2YXIgZm9udE5hbWU7CiAgICAgIGlmIChmb250QXJncykgewogICAgICAgIGZvbnRBcmdzID0gZm9udEFyZ3Muc2xpY2UoKTsKICAgICAgICBmb250TmFtZSA9IGZvbnRBcmdzWzBdLm5hbWU7CiAgICAgIH0KCiAgICAgIHZhciBzZWxmID0gdGhpczsKICAgICAgcmV0dXJuIHRoaXMubG9hZEZvbnQoZm9udE5hbWUsIGZvbnRSZWYsIHRoaXMueHJlZiwgcmVzb3VyY2VzKS50aGVuKAogICAgICAgICAgZnVuY3Rpb24gKHRyYW5zbGF0ZWQpIHsKICAgICAgICBpZiAoIXRyYW5zbGF0ZWQuZm9udC5pc1R5cGUzRm9udCkgewogICAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZWQ7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0cmFuc2xhdGVkLmxvYWRUeXBlM0RhdGEoc2VsZiwgcmVzb3VyY2VzLCBvcGVyYXRvckxpc3QpLnRoZW4oCiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKICAgICAgICAgIHJldHVybiB0cmFuc2xhdGVkOwogICAgICAgIH0pOwogICAgICB9KS50aGVuKGZ1bmN0aW9uICh0cmFuc2xhdGVkKSB7CiAgICAgICAgc3RhdGUuZm9udCA9IHRyYW5zbGF0ZWQuZm9udDsKICAgICAgICB0cmFuc2xhdGVkLnNlbmQoc2VsZi5oYW5kbGVyKTsKICAgICAgICByZXR1cm4gdHJhbnNsYXRlZC5sb2FkZWROYW1lOwogICAgICB9KTsKICAgIH0sCgogICAgaGFuZGxlVGV4dDogZnVuY3Rpb24gUGFydGlhbEV2YWx1YXRvcl9oYW5kbGVUZXh0KGNoYXJzLCBzdGF0ZSkgewogICAgICB2YXIgZm9udCA9IHN0YXRlLmZvbnQ7CiAgICAgIHZhciBnbHlwaHMgPSBmb250LmNoYXJzVG9HbHlwaHMoY2hhcnMpOwogICAgICB2YXIgaXNBZGRUb1BhdGhTZXQgPSAhIShzdGF0ZS50ZXh0UmVuZGVyaW5nTW9kZSAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRSZW5kZXJpbmdNb2RlLkFERF9UT19QQVRIX0ZMQUcpOwogICAgICBpZiAoZm9udC5kYXRhICYmIChpc0FkZFRvUGF0aFNldCB8fCBQREZKUy5kaXNhYmxlRm9udEZhY2UpKSB7CiAgICAgICAgdmFyIGJ1aWxkUGF0aCA9IGZ1bmN0aW9uIChmb250Q2hhcikgewogICAgICAgICAgaWYgKCFmb250LnJlbmRlcmVyLmhhc0J1aWx0UGF0aChmb250Q2hhcikpIHsKICAgICAgICAgICAgdmFyIHBhdGggPSBmb250LnJlbmRlcmVyLmdldFBhdGhKcyhmb250Q2hhcik7CiAgICAgICAgICAgIHRoaXMuaGFuZGxlci5zZW5kKCdjb21tb25vYmonLCBbCiAgICAgICAgICAgICAgZm9udC5sb2FkZWROYW1lICsgJ19wYXRoXycgKyBmb250Q2hhciwKICAgICAgICAgICAgICAnRm9udFBhdGgnLAogICAgICAgICAgICAgIHBhdGgKICAgICAgICAgICAgXSk7CiAgICAgICAgICB9CiAgICAgICAgfS5iaW5kKHRoaXMpOwoKICAgICAgICBmb3IgKHZhciBpID0gMCwgaWkgPSBnbHlwaHMubGVuZ3RoOyBpIDwgaWk7IGkrKykgewogICAgICAgICAgdmFyIGdseXBoID0gZ2x5cGhzW2ldOwogICAgICAgICAgaWYgKGdseXBoID09PSBudWxsKSB7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgfQogICAgICAgICAgYnVpbGRQYXRoKGdseXBoLmZvbnRDaGFyKTsKCiAgICAgICAgICAvLyBJZiB0aGUgZ2x5cGggaGFzIGFuIGFjY2VudCB3ZSBuZWVkIHRvIGJ1aWxkIGEgcGF0aCBmb3IgaXRzCiAgICAgICAgICAvLyBmb250Q2hhciB0b28sIG90aGVyd2lzZSBDYW52YXNHcmFwaGljc19wYWludENoYXIgd2lsbCBmYWlsLgogICAgICAgICAgdmFyIGFjY2VudCA9IGdseXBoLmFjY2VudDsKICAgICAgICAgIGlmIChhY2NlbnQgJiYgYWNjZW50LmZvbnRDaGFyKSB7CiAgICAgICAgICAgIGJ1aWxkUGF0aChhY2NlbnQuZm9udENoYXIpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQoKICAgICAgcmV0dXJuIGdseXBoczsKICAgIH0sCgogICAgc2V0R1N0YXRlOiBmdW5jdGlvbiBQYXJ0aWFsRXZhbHVhdG9yX3NldEdTdGF0ZShyZXNvdXJjZXMsIGdTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3JMaXN0LCB4cmVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZU1hbmFnZXIpIHsKICAgICAgLy8gVGhpcyBhcnJheSBob2xkcyB0aGUgY29udmVydGVkL3Byb2Nlc3NlZCBzdGF0ZSBkYXRhLgogICAgICB2YXIgZ1N0YXRlT2JqID0gW107CiAgICAgIHZhciBnU3RhdGVNYXAgPSBnU3RhdGUubWFwOwogICAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICAgIHZhciBwcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7CiAgICAgIGZvciAodmFyIGtleSBpbiBnU3RhdGVNYXApIHsKICAgICAgICB2YXIgdmFsdWUgPSBnU3RhdGVNYXBba2V5XTsKICAgICAgICBzd2l0Y2ggKGtleSkgewogICAgICAgICAgY2FzZSAnVHlwZSc6CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAnTFcnOgogICAgICAgICAgY2FzZSAnTEMnOgogICAgICAgICAgY2FzZSAnTEonOgogICAgICAgICAgY2FzZSAnTUwnOgogICAgICAgICAgY2FzZSAnRCc6CiAgICAgICAgICBjYXNlICdSSSc6CiAgICAgICAgICBjYXNlICdGTCc6CiAgICAgICAgICBjYXNlICdDQSc6CiAgICAgICAgICBjYXNlICdjYSc6CiAgICAgICAgICAgIGdTdGF0ZU9iai5wdXNoKFtrZXksIHZhbHVlXSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAnRm9udCc6CiAgICAgICAgICAgIHByb21pc2UgPSBwcm9taXNlLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgIHJldHVybiBzZWxmLmhhbmRsZVNldEZvbnQocmVzb3VyY2VzLCBudWxsLCB2YWx1ZVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yTGlzdCwgc3RhdGVNYW5hZ2VyLnN0YXRlKS4KICAgICAgICAgICAgICAgIHRoZW4oZnVuY3Rpb24gKGxvYWRlZE5hbWUpIHsKICAgICAgICAgICAgICAgICAgb3BlcmF0b3JMaXN0LmFkZERlcGVuZGVuY3kobG9hZGVkTmFtZSk7CiAgICAgICAgICAgICAgICAgIGdTdGF0ZU9iai5wdXNoKFtrZXksIFtsb2FkZWROYW1lLCB2YWx1ZVsxXV1dKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlICdCTSc6CiAgICAgICAgICAgIGdTdGF0ZU9iai5wdXNoKFtrZXksIHZhbHVlXSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAnU01hc2snOgogICAgICAgICAgICBpZiAoaXNOYW1lKHZhbHVlKSAmJiB2YWx1ZS5uYW1lID09PSAnTm9uZScpIHsKICAgICAgICAgICAgICBnU3RhdGVPYmoucHVzaChba2V5LCBmYWxzZV0pOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBkaWN0ID0geHJlZi5mZXRjaElmUmVmKHZhbHVlKTsKICAgICAgICAgICAgaWYgKGlzRGljdChkaWN0KSkgewogICAgICAgICAgICAgIHByb21pc2UgPSBwcm9taXNlLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuaGFuZGxlU01hc2soZGljdCwgcmVzb3VyY2VzLCBvcGVyYXRvckxpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZU1hbmFnZXIpOwogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIGdTdGF0ZU9iai5wdXNoKFtrZXksIHRydWVdKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICB3YXJuKCdVbnN1cHBvcnRlZCBTTWFzayB0eXBlJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgLy8gT25seSBnZW5lcmF0ZSBpbmZvIGxvZyBtZXNzYWdlcyBmb3IgdGhlIGZvbGxvd2luZyBzaW5jZQogICAgICAgICAgLy8gdGhleSBhcmUgdW5saWtlbHkgdG8gaGF2ZSBhIGJpZyBpbXBhY3Qgb24gdGhlIHJlbmRlcmluZy4KICAgICAgICAgIGNhc2UgJ09QJzoKICAgICAgICAgIGNhc2UgJ29wJzoKICAgICAgICAgIGNhc2UgJ09QTSc6CiAgICAgICAgICBjYXNlICdCRyc6CiAgICAgICAgICBjYXNlICdCRzInOgogICAgICAgICAgY2FzZSAnVUNSJzoKICAgICAgICAgIGNhc2UgJ1VDUjInOgogICAgICAgICAgY2FzZSAnVFInOgogICAgICAgICAgY2FzZSAnVFIyJzoKICAgICAgICAgIGNhc2UgJ0hUJzoKICAgICAgICAgIGNhc2UgJ1NNJzoKICAgICAgICAgIGNhc2UgJ1NBJzoKICAgICAgICAgIGNhc2UgJ0FJUyc6CiAgICAgICAgICBjYXNlICdUSyc6CiAgICAgICAgICAgIC8vIFRPRE8gaW1wbGVtZW50IHRoZXNlIG9wZXJhdG9ycy4KICAgICAgICAgICAgaW5mbygnZ3JhcGhpYyBzdGF0ZSBvcGVyYXRvciAnICsga2V5KTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICBpbmZvKCdVbmtub3duIGdyYXBoaWMgc3RhdGUgb3BlcmF0b3IgJyArIGtleSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gcHJvbWlzZS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICBpZiAoZ1N0YXRlT2JqLmxlbmd0aCA+PSAwKSB7CiAgICAgICAgICBvcGVyYXRvckxpc3QuYWRkT3AoT1BTLnNldEdTdGF0ZSwgW2dTdGF0ZU9ial0pOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9LAoKICAgIGxvYWRGb250OiBmdW5jdGlvbiBQYXJ0aWFsRXZhbHVhdG9yX2xvYWRGb250KGZvbnROYW1lLCBmb250LCB4cmVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzKSB7CgogICAgICBmdW5jdGlvbiBlcnJvckZvbnQoKSB7CiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShuZXcgVHJhbnNsYXRlZEZvbnQoJ2dfZm9udF9lcnJvcicsCiAgICAgICAgICBuZXcgRXJyb3JGb250KCdGb250ICcgKyBmb250TmFtZSArICcgaXMgbm90IGF2YWlsYWJsZScpLCBmb250KSk7CiAgICAgIH0KICAgICAgdmFyIGZvbnRSZWY7CiAgICAgIGlmIChmb250KSB7IC8vIExvYWRpbmcgYnkgcmVmLgogICAgICAgIGFzc2VydChpc1JlZihmb250KSk7CiAgICAgICAgZm9udFJlZiA9IGZvbnQ7CiAgICAgIH0gZWxzZSB7IC8vIExvYWRpbmcgYnkgbmFtZS4KICAgICAgICB2YXIgZm9udFJlcyA9IHJlc291cmNlcy5nZXQoJ0ZvbnQnKTsKICAgICAgICBpZiAoZm9udFJlcykgewogICAgICAgICAgZm9udFJlZiA9IGZvbnRSZXMuZ2V0UmF3KGZvbnROYW1lKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgd2FybignZm9udFJlcyBub3QgYXZhaWxhYmxlJyk7CiAgICAgICAgICByZXR1cm4gZXJyb3JGb250KCk7CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmICghZm9udFJlZikgewogICAgICAgIHdhcm4oJ2ZvbnRSZWYgbm90IGF2YWlsYWJsZScpOwogICAgICAgIHJldHVybiBlcnJvckZvbnQoKTsKICAgICAgfQoKICAgICAgaWYgKHRoaXMuZm9udENhY2hlLmhhcyhmb250UmVmKSkgewogICAgICAgIHJldHVybiB0aGlzLmZvbnRDYWNoZS5nZXQoZm9udFJlZik7CiAgICAgIH0KCiAgICAgIGZvbnQgPSB4cmVmLmZldGNoSWZSZWYoZm9udFJlZik7CiAgICAgIGlmICghaXNEaWN0KGZvbnQpKSB7CiAgICAgICAgcmV0dXJuIGVycm9yRm9udCgpOwogICAgICB9CgogICAgICAvLyBXZSBhcmUgaG9sZGluZyBmb250LnRyYW5zbGF0ZWQgcmVmZXJlbmNlcyBqdXN0IGZvciBmb250UmVmIHRoYXQgYXJlIG5vdAogICAgICAvLyBkaWN0aW9uYXJpZXMgKERpY3QpLiBTZWUgZXhwbGFuYXRpb24gYmVsb3cuCiAgICAgIGlmIChmb250LnRyYW5zbGF0ZWQpIHsKICAgICAgICByZXR1cm4gZm9udC50cmFuc2xhdGVkOwogICAgICB9CgogICAgICB2YXIgZm9udENhcGFiaWxpdHkgPSBjcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSgpOwoKICAgICAgdmFyIHByZUV2YWx1YXRlZEZvbnQgPSB0aGlzLnByZUV2YWx1YXRlRm9udChmb250LCB4cmVmKTsKICAgICAgdmFyIGRlc2NyaXB0b3IgPSBwcmVFdmFsdWF0ZWRGb250LmRlc2NyaXB0b3I7CiAgICAgIHZhciBmb250SUQgPSBmb250UmVmLm51bSArICdfJyArIGZvbnRSZWYuZ2VuOwogICAgICBpZiAoaXNEaWN0KGRlc2NyaXB0b3IpKSB7CiAgICAgICAgaWYgKCFkZXNjcmlwdG9yLmZvbnRBbGlhc2VzKSB7CiAgICAgICAgICBkZXNjcmlwdG9yLmZvbnRBbGlhc2VzID0gT2JqZWN0LmNyZWF0ZShudWxsKTsKICAgICAgICB9CgogICAgICAgIHZhciBmb250QWxpYXNlcyA9IGRlc2NyaXB0b3IuZm9udEFsaWFzZXM7CiAgICAgICAgdmFyIGhhc2ggPSBwcmVFdmFsdWF0ZWRGb250Lmhhc2g7CiAgICAgICAgaWYgKGZvbnRBbGlhc2VzW2hhc2hdKSB7CiAgICAgICAgICB2YXIgYWxpYXNGb250UmVmID0gZm9udEFsaWFzZXNbaGFzaF0uYWxpYXNSZWY7CiAgICAgICAgICBpZiAoYWxpYXNGb250UmVmICYmIHRoaXMuZm9udENhY2hlLmhhcyhhbGlhc0ZvbnRSZWYpKSB7CiAgICAgICAgICAgIHRoaXMuZm9udENhY2hlLnB1dEFsaWFzKGZvbnRSZWYsIGFsaWFzRm9udFJlZik7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmZvbnRDYWNoZS5nZXQoZm9udFJlZik7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoIWZvbnRBbGlhc2VzW2hhc2hdKSB7CiAgICAgICAgICBmb250QWxpYXNlc1toYXNoXSA9IHsKICAgICAgICAgICAgZm9udElEOiBGb250LmdldEZvbnRJRCgpCiAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgZm9udEFsaWFzZXNbaGFzaF0uYWxpYXNSZWYgPSBmb250UmVmOwogICAgICAgIGZvbnRJRCA9IGZvbnRBbGlhc2VzW2hhc2hdLmZvbnRJRDsKICAgICAgfQoKICAgICAgLy8gV29ya2Fyb3VuZCBmb3IgYmFkIFBERiBnZW5lcmF0b3JzIHRoYXQgZG9uJ3QgcmVmZXJlbmNlIGZvbnRzCiAgICAgIC8vIHByb3Blcmx5LCBpLmUuIGJ5IG5vdCB1c2luZyBhbiBvYmplY3QgaWRlbnRpZmllci4KICAgICAgLy8gQ2hlY2sgaWYgdGhlIGZvbnRSZWYgaXMgYSBEaWN0IChhcyBvcHBvc2VkIHRvIGEgc3RhbmRhcmQgb2JqZWN0KSwKICAgICAgLy8gaW4gd2hpY2ggY2FzZSB3ZSBkb24ndCBjYWNoZSB0aGUgZm9udCBhbmQgaW5zdGVhZCByZWZlcmVuY2UgaXQgYnkKICAgICAgLy8gZm9udE5hbWUgaW4gZm9udC5sb2FkZWROYW1lIGJlbG93LgogICAgICB2YXIgZm9udFJlZklzRGljdCA9IGlzRGljdChmb250UmVmKTsKICAgICAgaWYgKCFmb250UmVmSXNEaWN0KSB7CiAgICAgICAgdGhpcy5mb250Q2FjaGUucHV0KGZvbnRSZWYsIGZvbnRDYXBhYmlsaXR5LnByb21pc2UpOwogICAgICB9CgogICAgICAvLyBLZWVwIHRyYWNrIG9mIGVhY2ggZm9udCB3ZSB0cmFuc2xhdGVkIHNvIHRoZSBjYWxsZXIgY2FuCiAgICAgIC8vIGxvYWQgdGhlbSBhc3luY2hyb25vdXNseSBiZWZvcmUgY2FsbGluZyBkaXNwbGF5IG9uIGEgcGFnZS4KICAgICAgZm9udC5sb2FkZWROYW1lID0gJ2dfZm9udF8nICsgKGZvbnRSZWZJc0RpY3QgPwogICAgICAgIGZvbnROYW1lLnJlcGxhY2UoL1xXL2csICcnKSA6IGZvbnRJRCk7CgogICAgICBmb250LnRyYW5zbGF0ZWQgPSBmb250Q2FwYWJpbGl0eS5wcm9taXNlOwoKICAgICAgLy8gVE9ETyBtb3ZlIHByb21pc2VzIGludG8gdHJhbnNsYXRlIGZvbnQKICAgICAgdmFyIHRyYW5zbGF0ZWRQcm9taXNlOwogICAgICB0cnkgewogICAgICAgIHRyYW5zbGF0ZWRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKAogICAgICAgICAgdGhpcy50cmFuc2xhdGVGb250KHByZUV2YWx1YXRlZEZvbnQsIHhyZWYpKTsKICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgIHRyYW5zbGF0ZWRQcm9taXNlID0gUHJvbWlzZS5yZWplY3QoZSk7CiAgICAgIH0KCiAgICAgIHRyYW5zbGF0ZWRQcm9taXNlLnRoZW4oZnVuY3Rpb24gKHRyYW5zbGF0ZWRGb250KSB7CiAgICAgICAgaWYgKHRyYW5zbGF0ZWRGb250LmZvbnRUeXBlICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgIHZhciB4cmVmRm9udFN0YXRzID0geHJlZi5zdGF0cy5mb250VHlwZXM7CiAgICAgICAgICB4cmVmRm9udFN0YXRzW3RyYW5zbGF0ZWRGb250LmZvbnRUeXBlXSA9IHRydWU7CiAgICAgICAgfQoKICAgICAgICBmb250Q2FwYWJpbGl0eS5yZXNvbHZlKG5ldyBUcmFuc2xhdGVkRm9udChmb250LmxvYWRlZE5hbWUsCiAgICAgICAgICB0cmFuc2xhdGVkRm9udCwgZm9udCkpOwogICAgICB9LCBmdW5jdGlvbiAocmVhc29uKSB7CiAgICAgICAgLy8gVE9ETyBmb250Q2FwYWJpbGl0eS5yZWplY3Q/CiAgICAgICAgVW5zdXBwb3J0ZWRNYW5hZ2VyLm5vdGlmeShVTlNVUFBPUlRFRF9GRUFUVVJFUy5mb250KTsKCiAgICAgICAgdHJ5IHsKICAgICAgICAgIC8vIGVycm9yLCBidXQgaXQncyBzdGlsbCBuaWNlIHRvIGhhdmUgZm9udCB0eXBlIHJlcG9ydGVkCiAgICAgICAgICB2YXIgZGVzY3JpcHRvciA9IHByZUV2YWx1YXRlZEZvbnQuZGVzY3JpcHRvcjsKICAgICAgICAgIHZhciBmb250RmlsZTMgPSBkZXNjcmlwdG9yICYmIGRlc2NyaXB0b3IuZ2V0KCdGb250RmlsZTMnKTsKICAgICAgICAgIHZhciBzdWJ0eXBlID0gZm9udEZpbGUzICYmIGZvbnRGaWxlMy5nZXQoJ1N1YnR5cGUnKTsKICAgICAgICAgIHZhciBmb250VHlwZSA9IGdldEZvbnRUeXBlKHByZUV2YWx1YXRlZEZvbnQudHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnR5cGUgJiYgc3VidHlwZS5uYW1lKTsKICAgICAgICAgIHZhciB4cmVmRm9udFN0YXRzID0geHJlZi5zdGF0cy5mb250VHlwZXM7CiAgICAgICAgICB4cmVmRm9udFN0YXRzW2ZvbnRUeXBlXSA9IHRydWU7CiAgICAgICAgfSBjYXRjaCAoZXgpIHsgfQoKICAgICAgICBmb250Q2FwYWJpbGl0eS5yZXNvbHZlKG5ldyBUcmFuc2xhdGVkRm9udChmb250LmxvYWRlZE5hbWUsCiAgICAgICAgICBuZXcgRXJyb3JGb250KHJlYXNvbiBpbnN0YW5jZW9mIEVycm9yID8gcmVhc29uLm1lc3NhZ2UgOiByZWFzb24pLAogICAgICAgICAgZm9udCkpOwogICAgICB9KTsKICAgICAgcmV0dXJuIGZvbnRDYXBhYmlsaXR5LnByb21pc2U7CiAgICB9LAoKICAgIGJ1aWxkUGF0aDogZnVuY3Rpb24gUGFydGlhbEV2YWx1YXRvcl9idWlsZFBhdGgob3BlcmF0b3JMaXN0LCBmbiwgYXJncykgewogICAgICB2YXIgbGFzdEluZGV4ID0gb3BlcmF0b3JMaXN0Lmxlbmd0aCAtIDE7CiAgICAgIGlmICghYXJncykgewogICAgICAgIGFyZ3MgPSBbXTsKICAgICAgfQogICAgICBpZiAobGFzdEluZGV4IDwgMCB8fAogICAgICAgICAgb3BlcmF0b3JMaXN0LmZuQXJyYXlbbGFzdEluZGV4XSAhPT0gT1BTLmNvbnN0cnVjdFBhdGgpIHsKICAgICAgICBvcGVyYXRvckxpc3QuYWRkT3AoT1BTLmNvbnN0cnVjdFBhdGgsIFtbZm5dLCBhcmdzXSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdmFyIG9wQXJncyA9IG9wZXJhdG9yTGlzdC5hcmdzQXJyYXlbbGFzdEluZGV4XTsKICAgICAgICBvcEFyZ3NbMF0ucHVzaChmbik7CiAgICAgICAgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkob3BBcmdzWzFdLCBhcmdzKTsKICAgICAgfQogICAgfSwKCiAgICBoYW5kbGVDb2xvck46IGZ1bmN0aW9uIFBhcnRpYWxFdmFsdWF0b3JfaGFuZGxlQ29sb3JOKG9wZXJhdG9yTGlzdCwgZm4sIGFyZ3MsCiAgICAgICAgICBjcywgcGF0dGVybnMsIHJlc291cmNlcywgeHJlZikgewogICAgICAvLyBjb21waWxlIHRpbGluZyBwYXR0ZXJucwogICAgICB2YXIgcGF0dGVybk5hbWUgPSBhcmdzW2FyZ3MubGVuZ3RoIC0gMV07CiAgICAgIC8vIFNDTi9zY24gYXBwbGllcyBwYXR0ZXJucyBhbG9uZyB3aXRoIG5vcm1hbCBjb2xvcnMKICAgICAgdmFyIHBhdHRlcm47CiAgICAgIGlmIChpc05hbWUocGF0dGVybk5hbWUpICYmCiAgICAgICAgICAocGF0dGVybiA9IHBhdHRlcm5zLmdldChwYXR0ZXJuTmFtZS5uYW1lKSkpIHsKICAgICAgICB2YXIgZGljdCA9IChpc1N0cmVhbShwYXR0ZXJuKSA/IHBhdHRlcm4uZGljdCA6IHBhdHRlcm4pOwogICAgICAgIHZhciB0eXBlTnVtID0gZGljdC5nZXQoJ1BhdHRlcm5UeXBlJyk7CgogICAgICAgIGlmICh0eXBlTnVtID09PSBUSUxJTkdfUEFUVEVSTikgewogICAgICAgICAgdmFyIGNvbG9yID0gY3MuYmFzZSA/IGNzLmJhc2UuZ2V0UmdiKGFyZ3MsIDApIDogbnVsbDsKICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZVRpbGluZ1R5cGUoZm4sIGNvbG9yLCByZXNvdXJjZXMsIHBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3QsIG9wZXJhdG9yTGlzdCk7CiAgICAgICAgfSBlbHNlIGlmICh0eXBlTnVtID09PSBTSEFESU5HX1BBVFRFUk4pIHsKICAgICAgICAgIHZhciBzaGFkaW5nID0gZGljdC5nZXQoJ1NoYWRpbmcnKTsKICAgICAgICAgIHZhciBtYXRyaXggPSBkaWN0LmdldCgnTWF0cml4Jyk7CiAgICAgICAgICBwYXR0ZXJuID0gUGF0dGVybi5wYXJzZVNoYWRpbmcoc2hhZGluZywgbWF0cml4LCB4cmVmLCByZXNvdXJjZXMpOwogICAgICAgICAgb3BlcmF0b3JMaXN0LmFkZE9wKGZuLCBwYXR0ZXJuLmdldElSKCkpOwogICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoJ1Vua25vd24gUGF0dGVyblR5cGU6ICcgKyB0eXBlTnVtKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgLy8gVE9ETyBzaGFsbCB3ZSBmYWlsIGhlcmU/CiAgICAgIG9wZXJhdG9yTGlzdC5hZGRPcChmbiwgYXJncyk7CiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKICAgIH0sCgogICAgZ2V0T3BlcmF0b3JMaXN0OiBmdW5jdGlvbiBQYXJ0aWFsRXZhbHVhdG9yX2dldE9wZXJhdG9yTGlzdChzdHJlYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3JMaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsU3RhdGUpIHsKCiAgICAgIHZhciBzZWxmID0gdGhpczsKICAgICAgdmFyIHhyZWYgPSB0aGlzLnhyZWY7CiAgICAgIHZhciBpbWFnZUNhY2hlID0ge307CgogICAgICBhc3NlcnQob3BlcmF0b3JMaXN0KTsKCiAgICAgIHJlc291cmNlcyA9IChyZXNvdXJjZXMgfHwgRGljdC5lbXB0eSk7CiAgICAgIHZhciB4b2JqcyA9IChyZXNvdXJjZXMuZ2V0KCdYT2JqZWN0JykgfHwgRGljdC5lbXB0eSk7CiAgICAgIHZhciBwYXR0ZXJucyA9IChyZXNvdXJjZXMuZ2V0KCdQYXR0ZXJuJykgfHwgRGljdC5lbXB0eSk7CiAgICAgIHZhciBzdGF0ZU1hbmFnZXIgPSBuZXcgU3RhdGVNYW5hZ2VyKGluaXRpYWxTdGF0ZSB8fCBuZXcgRXZhbFN0YXRlKCkpOwogICAgICB2YXIgcHJlcHJvY2Vzc29yID0gbmV3IEV2YWx1YXRvclByZXByb2Nlc3NvcihzdHJlYW0sIHhyZWYsIHN0YXRlTWFuYWdlcik7CiAgICAgIHZhciB0aW1lU2xvdE1hbmFnZXIgPSBuZXcgVGltZVNsb3RNYW5hZ2VyKCk7CgogICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gbmV4dChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICB0aW1lU2xvdE1hbmFnZXIucmVzZXQoKTsKICAgICAgICB2YXIgc3RvcCwgb3BlcmF0aW9uID0ge30sIGksIGlpLCBjczsKICAgICAgICB3aGlsZSAoIShzdG9wID0gdGltZVNsb3RNYW5hZ2VyLmNoZWNrKCkpKSB7CiAgICAgICAgICAvLyBUaGUgYXJndW1lbnRzIHBhcnNlZCBieSByZWFkKCkgYXJlIHVzZWQgYmV5b25kIHRoaXMgbG9vcCwgc28gd2UKICAgICAgICAgIC8vIGNhbm5vdCByZXVzZSB0aGUgc2FtZSBhcnJheSBvbiBlYWNoIGl0ZXJhdGlvbi4gVGhlcmVmb3JlIHdlIHBhc3MKICAgICAgICAgIC8vIGluIHxudWxsfCBhcyB0aGUgaW5pdGlhbCB2YWx1ZSAoc2VlIHRoZSBjb21tZW50IG9uCiAgICAgICAgICAvLyBFdmFsdWF0b3JQcmVwcm9jZXNzb3JfcmVhZCgpIGZvciB3aHkpLgogICAgICAgICAgb3BlcmF0aW9uLmFyZ3MgPSBudWxsOwogICAgICAgICAgaWYgKCEocHJlcHJvY2Vzc29yLnJlYWQob3BlcmF0aW9uKSkpIHsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CiAgICAgICAgICB2YXIgYXJncyA9IG9wZXJhdGlvbi5hcmdzOwogICAgICAgICAgdmFyIGZuID0gb3BlcmF0aW9uLmZuOwoKICAgICAgICAgIHN3aXRjaCAoZm4gfCAwKSB7CiAgICAgICAgICAgIGNhc2UgT1BTLnBhaW50WE9iamVjdDoKICAgICAgICAgICAgICBpZiAoYXJnc1swXS5jb2RlKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgLy8gZWFnZXJseSBjb21waWxlIFhGb3JtIG9iamVjdHMKICAgICAgICAgICAgICB2YXIgbmFtZSA9IGFyZ3NbMF0ubmFtZTsKICAgICAgICAgICAgICBpZiAoaW1hZ2VDYWNoZVtuYW1lXSAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICBvcGVyYXRvckxpc3QuYWRkT3AoaW1hZ2VDYWNoZVtuYW1lXS5mbiwgaW1hZ2VDYWNoZVtuYW1lXS5hcmdzKTsKICAgICAgICAgICAgICAgIGFyZ3MgPSBudWxsOwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICB2YXIgeG9iaiA9IHhvYmpzLmdldChuYW1lKTsKICAgICAgICAgICAgICBpZiAoeG9iaikgewogICAgICAgICAgICAgICAgYXNzZXJ0KGlzU3RyZWFtKHhvYmopLCAnWE9iamVjdCBzaG91bGQgYmUgYSBzdHJlYW0nKTsKCiAgICAgICAgICAgICAgICB2YXIgdHlwZSA9IHhvYmouZGljdC5nZXQoJ1N1YnR5cGUnKTsKICAgICAgICAgICAgICAgIGFzc2VydChpc05hbWUodHlwZSksCiAgICAgICAgICAgICAgICAgICdYT2JqZWN0IHNob3VsZCBoYXZlIGEgTmFtZSBzdWJ0eXBlJyk7CgogICAgICAgICAgICAgICAgaWYgKHR5cGUubmFtZSA9PT0gJ0Zvcm0nKSB7CiAgICAgICAgICAgICAgICAgIHN0YXRlTWFuYWdlci5zYXZlKCk7CiAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmJ1aWxkRm9ybVhPYmplY3QocmVzb3VyY2VzLCB4b2JqLCBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yTGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZU1hbmFnZXIuc3RhdGUuY2xvbmUoKSkuCiAgICAgICAgICAgICAgICAgICAgdGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICBzdGF0ZU1hbmFnZXIucmVzdG9yZSgpOwogICAgICAgICAgICAgICAgICAgICAgbmV4dChyZXNvbHZlLCByZWplY3QpOwogICAgICAgICAgICAgICAgICAgIH0sIHJlamVjdCk7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUubmFtZSA9PT0gJ0ltYWdlJykgewogICAgICAgICAgICAgICAgICBzZWxmLmJ1aWxkUGFpbnRJbWFnZVhPYmplY3QocmVzb3VyY2VzLCB4b2JqLCBmYWxzZSwKICAgICAgICAgICAgICAgICAgICBvcGVyYXRvckxpc3QsIG5hbWUsIGltYWdlQ2FjaGUpOwogICAgICAgICAgICAgICAgICBhcmdzID0gbnVsbDsKICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUubmFtZSA9PT0gJ1BTJykgewogICAgICAgICAgICAgICAgICAvLyBQb3N0U2NyaXB0IFhPYmplY3RzIGFyZSB1bnVzZWQgd2hlbiB2aWV3aW5nIGRvY3VtZW50cy4KICAgICAgICAgICAgICAgICAgLy8gU2VlIHNlY3Rpb24gNC43LjEgb2YgQWRvYmUncyBQREYgcmVmZXJlbmNlLgogICAgICAgICAgICAgICAgICBpbmZvKCdJZ25vcmVkIFhPYmplY3Qgc3VidHlwZSBQUycpOwogICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgIGVycm9yKCdVbmhhbmRsZWQgWE9iamVjdCBzdWJ0eXBlICcgKyB0eXBlLm5hbWUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSBPUFMuc2V0Rm9udDoKICAgICAgICAgICAgICB2YXIgZm9udFNpemUgPSBhcmdzWzFdOwogICAgICAgICAgICAgIC8vIGVhZ2VybHkgY29sbGVjdCBhbGwgZm9udHMKICAgICAgICAgICAgICByZXR1cm4gc2VsZi5oYW5kbGVTZXRGb250KHJlc291cmNlcywgYXJncywgbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yTGlzdCwgc3RhdGVNYW5hZ2VyLnN0YXRlKS4KICAgICAgICAgICAgICAgIHRoZW4oZnVuY3Rpb24gKGxvYWRlZE5hbWUpIHsKICAgICAgICAgICAgICAgICAgb3BlcmF0b3JMaXN0LmFkZERlcGVuZGVuY3kobG9hZGVkTmFtZSk7CiAgICAgICAgICAgICAgICAgIG9wZXJhdG9yTGlzdC5hZGRPcChPUFMuc2V0Rm9udCwgW2xvYWRlZE5hbWUsIGZvbnRTaXplXSk7CiAgICAgICAgICAgICAgICAgIG5leHQocmVzb2x2ZSwgcmVqZWN0KTsKICAgICAgICAgICAgICAgIH0sIHJlamVjdCk7CiAgICAgICAgICAgIGNhc2UgT1BTLmVuZElubGluZUltYWdlOgogICAgICAgICAgICAgIHZhciBjYWNoZUtleSA9IGFyZ3NbMF0uY2FjaGVLZXk7CiAgICAgICAgICAgICAgaWYgKGNhY2hlS2V5KSB7CiAgICAgICAgICAgICAgICB2YXIgY2FjaGVFbnRyeSA9IGltYWdlQ2FjaGVbY2FjaGVLZXldOwogICAgICAgICAgICAgICAgaWYgKGNhY2hlRW50cnkgIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICBvcGVyYXRvckxpc3QuYWRkT3AoY2FjaGVFbnRyeS5mbiwgY2FjaGVFbnRyeS5hcmdzKTsKICAgICAgICAgICAgICAgICAgYXJncyA9IG51bGw7CiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBzZWxmLmJ1aWxkUGFpbnRJbWFnZVhPYmplY3QocmVzb3VyY2VzLCBhcmdzWzBdLCB0cnVlLAogICAgICAgICAgICAgICAgb3BlcmF0b3JMaXN0LCBjYWNoZUtleSwgaW1hZ2VDYWNoZSk7CiAgICAgICAgICAgICAgYXJncyA9IG51bGw7CiAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIGNhc2UgT1BTLnNob3dUZXh0OgogICAgICAgICAgICAgIGFyZ3NbMF0gPSBzZWxmLmhhbmRsZVRleHQoYXJnc1swXSwgc3RhdGVNYW5hZ2VyLnN0YXRlKTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSBPUFMuc2hvd1NwYWNlZFRleHQ6CiAgICAgICAgICAgICAgdmFyIGFyciA9IGFyZ3NbMF07CiAgICAgICAgICAgICAgdmFyIGNvbWJpbmVkR2x5cGhzID0gW107CiAgICAgICAgICAgICAgdmFyIGFyckxlbmd0aCA9IGFyci5sZW5ndGg7CiAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGFyckxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICAgICB2YXIgYXJySXRlbSA9IGFycltpXTsKICAgICAgICAgICAgICAgIGlmIChpc1N0cmluZyhhcnJJdGVtKSkgewogICAgICAgICAgICAgICAgICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShjb21iaW5lZEdseXBocywKICAgICAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZVRleHQoYXJySXRlbSwgc3RhdGVNYW5hZ2VyLnN0YXRlKSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzTnVtKGFyckl0ZW0pKSB7CiAgICAgICAgICAgICAgICAgIGNvbWJpbmVkR2x5cGhzLnB1c2goYXJySXRlbSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGFyZ3NbMF0gPSBjb21iaW5lZEdseXBoczsKICAgICAgICAgICAgICBmbiA9IE9QUy5zaG93VGV4dDsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSBPUFMubmV4dExpbmVTaG93VGV4dDoKICAgICAgICAgICAgICBvcGVyYXRvckxpc3QuYWRkT3AoT1BTLm5leHRMaW5lKTsKICAgICAgICAgICAgICBhcmdzWzBdID0gc2VsZi5oYW5kbGVUZXh0KGFyZ3NbMF0sIHN0YXRlTWFuYWdlci5zdGF0ZSk7CiAgICAgICAgICAgICAgZm4gPSBPUFMuc2hvd1RleHQ7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgT1BTLm5leHRMaW5lU2V0U3BhY2luZ1Nob3dUZXh0OgogICAgICAgICAgICAgIG9wZXJhdG9yTGlzdC5hZGRPcChPUFMubmV4dExpbmUpOwogICAgICAgICAgICAgIG9wZXJhdG9yTGlzdC5hZGRPcChPUFMuc2V0V29yZFNwYWNpbmcsIFthcmdzLnNoaWZ0KCldKTsKICAgICAgICAgICAgICBvcGVyYXRvckxpc3QuYWRkT3AoT1BTLnNldENoYXJTcGFjaW5nLCBbYXJncy5zaGlmdCgpXSk7CiAgICAgICAgICAgICAgYXJnc1swXSA9IHNlbGYuaGFuZGxlVGV4dChhcmdzWzBdLCBzdGF0ZU1hbmFnZXIuc3RhdGUpOwogICAgICAgICAgICAgIGZuID0gT1BTLnNob3dUZXh0OwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIE9QUy5zZXRUZXh0UmVuZGVyaW5nTW9kZToKICAgICAgICAgICAgICBzdGF0ZU1hbmFnZXIuc3RhdGUudGV4dFJlbmRlcmluZ01vZGUgPSBhcmdzWzBdOwogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBPUFMuc2V0RmlsbENvbG9yU3BhY2U6CiAgICAgICAgICAgICAgc3RhdGVNYW5hZ2VyLnN0YXRlLmZpbGxDb2xvclNwYWNlID0KICAgICAgICAgICAgICAgIENvbG9yU3BhY2UucGFyc2UoYXJnc1swXSwgeHJlZiwgcmVzb3VyY2VzKTsKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgY2FzZSBPUFMuc2V0U3Ryb2tlQ29sb3JTcGFjZToKICAgICAgICAgICAgICBzdGF0ZU1hbmFnZXIuc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZSA9CiAgICAgICAgICAgICAgICBDb2xvclNwYWNlLnBhcnNlKGFyZ3NbMF0sIHhyZWYsIHJlc291cmNlcyk7CiAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIGNhc2UgT1BTLnNldEZpbGxDb2xvcjoKICAgICAgICAgICAgICBjcyA9IHN0YXRlTWFuYWdlci5zdGF0ZS5maWxsQ29sb3JTcGFjZTsKICAgICAgICAgICAgICBhcmdzID0gY3MuZ2V0UmdiKGFyZ3MsIDApOwogICAgICAgICAgICAgIGZuID0gT1BTLnNldEZpbGxSR0JDb2xvcjsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSBPUFMuc2V0U3Ryb2tlQ29sb3I6CiAgICAgICAgICAgICAgY3MgPSBzdGF0ZU1hbmFnZXIuc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZTsKICAgICAgICAgICAgICBhcmdzID0gY3MuZ2V0UmdiKGFyZ3MsIDApOwogICAgICAgICAgICAgIGZuID0gT1BTLnNldFN0cm9rZVJHQkNvbG9yOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIE9QUy5zZXRGaWxsR3JheToKICAgICAgICAgICAgICBzdGF0ZU1hbmFnZXIuc3RhdGUuZmlsbENvbG9yU3BhY2UgPSBDb2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheTsKICAgICAgICAgICAgICBhcmdzID0gQ29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiKGFyZ3MsIDApOwogICAgICAgICAgICAgIGZuID0gT1BTLnNldEZpbGxSR0JDb2xvcjsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSBPUFMuc2V0U3Ryb2tlR3JheToKICAgICAgICAgICAgICBzdGF0ZU1hbmFnZXIuc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZSA9IENvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5OwogICAgICAgICAgICAgIGFyZ3MgPSBDb2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheS5nZXRSZ2IoYXJncywgMCk7CiAgICAgICAgICAgICAgZm4gPSBPUFMuc2V0U3Ryb2tlUkdCQ29sb3I7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgT1BTLnNldEZpbGxDTVlLQ29sb3I6CiAgICAgICAgICAgICAgc3RhdGVNYW5hZ2VyLnN0YXRlLmZpbGxDb2xvclNwYWNlID0gQ29sb3JTcGFjZS5zaW5nbGV0b25zLmNteWs7CiAgICAgICAgICAgICAgYXJncyA9IENvbG9yU3BhY2Uuc2luZ2xldG9ucy5jbXlrLmdldFJnYihhcmdzLCAwKTsKICAgICAgICAgICAgICBmbiA9IE9QUy5zZXRGaWxsUkdCQ29sb3I7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgT1BTLnNldFN0cm9rZUNNWUtDb2xvcjoKICAgICAgICAgICAgICBzdGF0ZU1hbmFnZXIuc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZSA9IENvbG9yU3BhY2Uuc2luZ2xldG9ucy5jbXlrOwogICAgICAgICAgICAgIGFyZ3MgPSBDb2xvclNwYWNlLnNpbmdsZXRvbnMuY215ay5nZXRSZ2IoYXJncywgMCk7CiAgICAgICAgICAgICAgZm4gPSBPUFMuc2V0U3Ryb2tlUkdCQ29sb3I7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgT1BTLnNldEZpbGxSR0JDb2xvcjoKICAgICAgICAgICAgICBzdGF0ZU1hbmFnZXIuc3RhdGUuZmlsbENvbG9yU3BhY2UgPSBDb2xvclNwYWNlLnNpbmdsZXRvbnMucmdiOwogICAgICAgICAgICAgIGFyZ3MgPSBDb2xvclNwYWNlLnNpbmdsZXRvbnMucmdiLmdldFJnYihhcmdzLCAwKTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSBPUFMuc2V0U3Ryb2tlUkdCQ29sb3I6CiAgICAgICAgICAgICAgc3RhdGVNYW5hZ2VyLnN0YXRlLnN0cm9rZUNvbG9yU3BhY2UgPSBDb2xvclNwYWNlLnNpbmdsZXRvbnMucmdiOwogICAgICAgICAgICAgIGFyZ3MgPSBDb2xvclNwYWNlLnNpbmdsZXRvbnMucmdiLmdldFJnYihhcmdzLCAwKTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSBPUFMuc2V0RmlsbENvbG9yTjoKICAgICAgICAgICAgICBjcyA9IHN0YXRlTWFuYWdlci5zdGF0ZS5maWxsQ29sb3JTcGFjZTsKICAgICAgICAgICAgICBpZiAoY3MubmFtZSA9PT0gJ1BhdHRlcm4nKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5oYW5kbGVDb2xvck4ob3BlcmF0b3JMaXN0LCBPUFMuc2V0RmlsbENvbG9yTiwKICAgICAgICAgICAgICAgICAgYXJncywgY3MsIHBhdHRlcm5zLCByZXNvdXJjZXMsIHhyZWYpLnRoZW4oZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dChyZXNvbHZlLCByZWplY3QpOwogICAgICAgICAgICAgICAgICB9LCByZWplY3QpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBhcmdzID0gY3MuZ2V0UmdiKGFyZ3MsIDApOwogICAgICAgICAgICAgIGZuID0gT1BTLnNldEZpbGxSR0JDb2xvcjsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSBPUFMuc2V0U3Ryb2tlQ29sb3JOOgogICAgICAgICAgICAgIGNzID0gc3RhdGVNYW5hZ2VyLnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U7CiAgICAgICAgICAgICAgaWYgKGNzLm5hbWUgPT09ICdQYXR0ZXJuJykgewogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuaGFuZGxlQ29sb3JOKG9wZXJhdG9yTGlzdCwgT1BTLnNldFN0cm9rZUNvbG9yTiwKICAgICAgICAgICAgICAgICAgYXJncywgY3MsIHBhdHRlcm5zLCByZXNvdXJjZXMsIHhyZWYpLnRoZW4oZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dChyZXNvbHZlLCByZWplY3QpOwogICAgICAgICAgICAgICAgICB9LCByZWplY3QpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBhcmdzID0gY3MuZ2V0UmdiKGFyZ3MsIDApOwogICAgICAgICAgICAgIGZuID0gT1BTLnNldFN0cm9rZVJHQkNvbG9yOwogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBPUFMuc2hhZGluZ0ZpbGw6CiAgICAgICAgICAgICAgdmFyIHNoYWRpbmdSZXMgPSByZXNvdXJjZXMuZ2V0KCdTaGFkaW5nJyk7CiAgICAgICAgICAgICAgaWYgKCFzaGFkaW5nUmVzKSB7CiAgICAgICAgICAgICAgICBlcnJvcignTm8gc2hhZGluZyByZXNvdXJjZSBmb3VuZCcpOwogICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgdmFyIHNoYWRpbmcgPSBzaGFkaW5nUmVzLmdldChhcmdzWzBdLm5hbWUpOwogICAgICAgICAgICAgIGlmICghc2hhZGluZykgewogICAgICAgICAgICAgICAgZXJyb3IoJ05vIHNoYWRpbmcgb2JqZWN0IGZvdW5kJyk7CiAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICB2YXIgc2hhZGluZ0ZpbGwgPSBQYXR0ZXJuLnBhcnNlU2hhZGluZyhzaGFkaW5nLCBudWxsLCB4cmVmLAogICAgICAgICAgICAgICAgcmVzb3VyY2VzKTsKICAgICAgICAgICAgICB2YXIgcGF0dGVybklSID0gc2hhZGluZ0ZpbGwuZ2V0SVIoKTsKICAgICAgICAgICAgICBhcmdzID0gW3BhdHRlcm5JUl07CiAgICAgICAgICAgICAgZm4gPSBPUFMuc2hhZGluZ0ZpbGw7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgT1BTLnNldEdTdGF0ZToKICAgICAgICAgICAgICB2YXIgZGljdE5hbWUgPSBhcmdzWzBdOwogICAgICAgICAgICAgIHZhciBleHRHU3RhdGUgPSByZXNvdXJjZXMuZ2V0KCdFeHRHU3RhdGUnKTsKCiAgICAgICAgICAgICAgaWYgKCFpc0RpY3QoZXh0R1N0YXRlKSB8fCAhZXh0R1N0YXRlLmhhcyhkaWN0TmFtZS5uYW1lKSkgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICB2YXIgZ1N0YXRlID0gZXh0R1N0YXRlLmdldChkaWN0TmFtZS5uYW1lKTsKICAgICAgICAgICAgICByZXR1cm4gc2VsZi5zZXRHU3RhdGUocmVzb3VyY2VzLCBnU3RhdGUsIG9wZXJhdG9yTGlzdCwgeHJlZiwKICAgICAgICAgICAgICAgIHN0YXRlTWFuYWdlcikudGhlbihmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgbmV4dChyZXNvbHZlLCByZWplY3QpOwogICAgICAgICAgICAgICAgfSwgcmVqZWN0KTsKICAgICAgICAgICAgY2FzZSBPUFMubW92ZVRvOgogICAgICAgICAgICBjYXNlIE9QUy5saW5lVG86CiAgICAgICAgICAgIGNhc2UgT1BTLmN1cnZlVG86CiAgICAgICAgICAgIGNhc2UgT1BTLmN1cnZlVG8yOgogICAgICAgICAgICBjYXNlIE9QUy5jdXJ2ZVRvMzoKICAgICAgICAgICAgY2FzZSBPUFMuY2xvc2VQYXRoOgogICAgICAgICAgICAgIHNlbGYuYnVpbGRQYXRoKG9wZXJhdG9yTGlzdCwgZm4sIGFyZ3MpOwogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICBjYXNlIE9QUy5yZWN0YW5nbGU6CiAgICAgICAgICAgICAgc2VsZi5idWlsZFBhdGgob3BlcmF0b3JMaXN0LCBmbiwgYXJncyk7CiAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICB9CiAgICAgICAgICBvcGVyYXRvckxpc3QuYWRkT3AoZm4sIGFyZ3MpOwogICAgICAgIH0KICAgICAgICBpZiAoc3RvcCkgewogICAgICAgICAgZGVmZXJyZWQudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIG5leHQocmVzb2x2ZSwgcmVqZWN0KTsKICAgICAgICAgIH0pOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAvLyBTb21lIFBERnMgZG9uJ3QgY2xvc2UgYWxsIHJlc3RvcmVzIGluc2lkZSBvYmplY3QvZm9ybS4KICAgICAgICAvLyBDbG9zaW5nIHRob3NlIGZvciB0aGVtLgogICAgICAgIGZvciAoaSA9IDAsIGlpID0gcHJlcHJvY2Vzc29yLnNhdmVkU3RhdGVzRGVwdGg7IGkgPCBpaTsgaSsrKSB7CiAgICAgICAgICBvcGVyYXRvckxpc3QuYWRkT3AoT1BTLnJlc3RvcmUsIFtdKTsKICAgICAgICB9CiAgICAgICAgcmVzb2x2ZSgpOwogICAgICB9KTsKICAgIH0sCgogICAgZ2V0VGV4dENvbnRlbnQ6IGZ1bmN0aW9uIFBhcnRpYWxFdmFsdWF0b3JfZ2V0VGV4dENvbnRlbnQoc3RyZWFtLCByZXNvdXJjZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZU1hbmFnZXIpIHsKCiAgICAgIHN0YXRlTWFuYWdlciA9IChzdGF0ZU1hbmFnZXIgfHwgbmV3IFN0YXRlTWFuYWdlcihuZXcgVGV4dFN0YXRlKCkpKTsKCiAgICAgIHZhciB0ZXh0Q29udGVudCA9IHsKICAgICAgICBpdGVtczogW10sCiAgICAgICAgc3R5bGVzOiBPYmplY3QuY3JlYXRlKG51bGwpCiAgICAgIH07CiAgICAgIHZhciBiaWRpVGV4dHMgPSB0ZXh0Q29udGVudC5pdGVtczsKICAgICAgdmFyIFNQQUNFX0ZBQ1RPUiA9IDAuMzsKICAgICAgdmFyIE1VTFRJX1NQQUNFX0ZBQ1RPUiA9IDEuNTsKCiAgICAgIHZhciBzZWxmID0gdGhpczsKICAgICAgdmFyIHhyZWYgPSB0aGlzLnhyZWY7CgogICAgICByZXNvdXJjZXMgPSAoeHJlZi5mZXRjaElmUmVmKHJlc291cmNlcykgfHwgRGljdC5lbXB0eSk7CgogICAgICAvLyBUaGUgeG9iaiBpcyBwYXJzZWQgaWZmIGl0J3MgbmVlZGVkLCBlLmcuIGlmIHRoZXJlIGlzIGEgYERPYCBjbWQuCiAgICAgIHZhciB4b2JqcyA9IG51bGw7CiAgICAgIHZhciB4b2Jqc0NhY2hlID0ge307CgogICAgICB2YXIgcHJlcHJvY2Vzc29yID0gbmV3IEV2YWx1YXRvclByZXByb2Nlc3NvcihzdHJlYW0sIHhyZWYsIHN0YXRlTWFuYWdlcik7CgogICAgICB2YXIgdGV4dFN0YXRlOwoKICAgICAgZnVuY3Rpb24gbmV3VGV4dENodW5rKCkgewogICAgICAgIHZhciBmb250ID0gdGV4dFN0YXRlLmZvbnQ7CiAgICAgICAgaWYgKCEoZm9udC5sb2FkZWROYW1lIGluIHRleHRDb250ZW50LnN0eWxlcykpIHsKICAgICAgICAgIHRleHRDb250ZW50LnN0eWxlc1tmb250LmxvYWRlZE5hbWVdID0gewogICAgICAgICAgICBmb250RmFtaWx5OiBmb250LmZhbGxiYWNrTmFtZSwKICAgICAgICAgICAgYXNjZW50OiBmb250LmFzY2VudCwKICAgICAgICAgICAgZGVzY2VudDogZm9udC5kZXNjZW50LAogICAgICAgICAgICB2ZXJ0aWNhbDogZm9udC52ZXJ0aWNhbAogICAgICAgICAgfTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgIC8vIHxzdHJ8IGlzIGluaXRpYWxseSBhbiBhcnJheSB3aGljaCB3ZSBwdXNoIGluZGl2aWR1YWwgY2hhcnMgdG8sIGFuZAogICAgICAgICAgLy8gdGhlbiBydW5CaWRpKCkgb3ZlcndyaXRlcyBpdCB3aXRoIHRoZSBmaW5hbCBzdHJpbmcuCiAgICAgICAgICBzdHI6IFtdLAogICAgICAgICAgZGlyOiBudWxsLAogICAgICAgICAgd2lkdGg6IDAsCiAgICAgICAgICBoZWlnaHQ6IDAsCiAgICAgICAgICB0cmFuc2Zvcm06IG51bGwsCiAgICAgICAgICBmb250TmFtZTogZm9udC5sb2FkZWROYW1lCiAgICAgICAgfTsKICAgICAgfQoKICAgICAgZnVuY3Rpb24gcnVuQmlkaSh0ZXh0Q2h1bmspIHsKICAgICAgICB2YXIgc3RyID0gdGV4dENodW5rLnN0ci5qb2luKCcnKTsKICAgICAgICB2YXIgYmlkaVJlc3VsdCA9IFBERkpTLmJpZGkoc3RyLCAtMSwgdGV4dFN0YXRlLmZvbnQudmVydGljYWwpOwogICAgICAgIHRleHRDaHVuay5zdHIgPSBiaWRpUmVzdWx0LnN0cjsKICAgICAgICB0ZXh0Q2h1bmsuZGlyID0gYmlkaVJlc3VsdC5kaXI7CiAgICAgICAgcmV0dXJuIHRleHRDaHVuazsKICAgICAgfQoKICAgICAgZnVuY3Rpb24gaGFuZGxlU2V0Rm9udChmb250TmFtZSwgZm9udFJlZikgewogICAgICAgIHJldHVybiBzZWxmLmxvYWRGb250KGZvbnROYW1lLCBmb250UmVmLCB4cmVmLCByZXNvdXJjZXMpLgogICAgICAgICAgdGhlbihmdW5jdGlvbiAodHJhbnNsYXRlZCkgewogICAgICAgICAgICB0ZXh0U3RhdGUuZm9udCA9IHRyYW5zbGF0ZWQuZm9udDsKICAgICAgICAgICAgdGV4dFN0YXRlLmZvbnRNYXRyaXggPSB0cmFuc2xhdGVkLmZvbnQuZm9udE1hdHJpeCB8fAogICAgICAgICAgICAgIEZPTlRfSURFTlRJVFlfTUFUUklYOwogICAgICAgICAgfSk7CiAgICAgIH0KCiAgICAgIGZ1bmN0aW9uIGJ1aWxkVGV4dEdlb21ldHJ5KGNoYXJzLCB0ZXh0Q2h1bmspIHsKICAgICAgICB2YXIgZm9udCA9IHRleHRTdGF0ZS5mb250OwogICAgICAgIHRleHRDaHVuayA9IHRleHRDaHVuayB8fCBuZXdUZXh0Q2h1bmsoKTsKICAgICAgICBpZiAoIXRleHRDaHVuay50cmFuc2Zvcm0pIHsKICAgICAgICAgIC8vIDkuNC40IFRleHQgU3BhY2UgRGV0YWlscwogICAgICAgICAgdmFyIHRzbSA9IFt0ZXh0U3RhdGUuZm9udFNpemUgKiB0ZXh0U3RhdGUudGV4dEhTY2FsZSwgMCwKICAgICAgICAgICAgICAgICAgICAgMCwgdGV4dFN0YXRlLmZvbnRTaXplLAogICAgICAgICAgICAgICAgICAgICAwLCB0ZXh0U3RhdGUudGV4dFJpc2VdOwogICAgICAgICAgdmFyIHRybSA9IHRleHRDaHVuay50cmFuc2Zvcm0gPSBVdGlsLnRyYW5zZm9ybSh0ZXh0U3RhdGUuY3RtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVdGlsLnRyYW5zZm9ybSh0ZXh0U3RhdGUudGV4dE1hdHJpeCwgdHNtKSk7CiAgICAgICAgICBpZiAoIWZvbnQudmVydGljYWwpIHsKICAgICAgICAgICAgdGV4dENodW5rLmhlaWdodCA9IE1hdGguc3FydCh0cm1bMl0gKiB0cm1bMl0gKyB0cm1bM10gKiB0cm1bM10pOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGV4dENodW5rLndpZHRoID0gTWF0aC5zcXJ0KHRybVswXSAqIHRybVswXSArIHRybVsxXSAqIHRybVsxXSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHZhciB3aWR0aCA9IDA7CiAgICAgICAgdmFyIGhlaWdodCA9IDA7CiAgICAgICAgdmFyIGdseXBocyA9IGZvbnQuY2hhcnNUb0dseXBocyhjaGFycyk7CiAgICAgICAgdmFyIGRlZmF1bHRWTWV0cmljcyA9IGZvbnQuZGVmYXVsdFZNZXRyaWNzOwogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZ2x5cGhzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICB2YXIgZ2x5cGggPSBnbHlwaHNbaV07CiAgICAgICAgICBpZiAoIWdseXBoKSB7IC8vIFByZXZpb3VzIGdseXBoIHdhcyBhIHNwYWNlLgogICAgICAgICAgICB3aWR0aCArPSB0ZXh0U3RhdGUud29yZFNwYWNpbmcgKiB0ZXh0U3RhdGUudGV4dEhTY2FsZTsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICB9CiAgICAgICAgICB2YXIgdk1ldHJpY1ggPSBudWxsOwogICAgICAgICAgdmFyIHZNZXRyaWNZID0gbnVsbDsKICAgICAgICAgIHZhciBnbHlwaFdpZHRoID0gbnVsbDsKICAgICAgICAgIGlmIChmb250LnZlcnRpY2FsKSB7CiAgICAgICAgICAgIGlmIChnbHlwaC52bWV0cmljKSB7CiAgICAgICAgICAgICAgZ2x5cGhXaWR0aCA9IGdseXBoLnZtZXRyaWNbMF07CiAgICAgICAgICAgICAgdk1ldHJpY1ggPSBnbHlwaC52bWV0cmljWzFdOwogICAgICAgICAgICAgIHZNZXRyaWNZID0gZ2x5cGgudm1ldHJpY1syXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBnbHlwaFdpZHRoID0gZ2x5cGgud2lkdGg7CiAgICAgICAgICAgICAgdk1ldHJpY1ggPSBnbHlwaC53aWR0aCAqIDAuNTsKICAgICAgICAgICAgICB2TWV0cmljWSA9IGRlZmF1bHRWTWV0cmljc1syXTsKICAgICAgICAgICAgfQogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZ2x5cGhXaWR0aCA9IGdseXBoLndpZHRoOwogICAgICAgICAgfQoKICAgICAgICAgIHZhciBnbHlwaFVuaWNvZGUgPSBnbHlwaC51bmljb2RlOwogICAgICAgICAgaWYgKE5vcm1hbGl6ZWRVbmljb2Rlc1tnbHlwaFVuaWNvZGVdICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgZ2x5cGhVbmljb2RlID0gTm9ybWFsaXplZFVuaWNvZGVzW2dseXBoVW5pY29kZV07CiAgICAgICAgICB9CiAgICAgICAgICBnbHlwaFVuaWNvZGUgPSByZXZlcnNlSWZSdGwoZ2x5cGhVbmljb2RlKTsKCiAgICAgICAgICAvLyBUaGUgZm9sbG93aW5nIHdpbGwgY2FsY3VsYXRlIHRoZSB4IGFuZCB5IG9mIHRoZSBpbmRpdmlkdWFsIGdseXBocy4KICAgICAgICAgIC8vIGlmIChmb250LnZlcnRpY2FsKSB7CiAgICAgICAgICAvLyAgIHRzbVs0XSAtPSB2TWV0cmljWCAqIE1hdGguYWJzKHRleHRTdGF0ZS5mb250U2l6ZSkgKgogICAgICAgICAgLy8gICAgICAgICAgICAgdGV4dFN0YXRlLmZvbnRNYXRyaXhbMF07CiAgICAgICAgICAvLyAgIHRzbVs1XSAtPSB2TWV0cmljWSAqIHRleHRTdGF0ZS5mb250U2l6ZSAqCiAgICAgICAgICAvLyAgICAgICAgICAgICB0ZXh0U3RhdGUuZm9udE1hdHJpeFswXTsKICAgICAgICAgIC8vIH0KICAgICAgICAgIC8vIHZhciB0cm0gPSBVdGlsLnRyYW5zZm9ybSh0ZXh0U3RhdGUudGV4dE1hdHJpeCwgdHNtKTsKICAgICAgICAgIC8vIHZhciBwdCA9IFV0aWwuYXBwbHlUcmFuc2Zvcm0oW3RybVs0XSwgdHJtWzVdXSwgdGV4dFN0YXRlLmN0bSk7CiAgICAgICAgICAvLyB2YXIgeCA9IHB0WzBdOwogICAgICAgICAgLy8gdmFyIHkgPSBwdFsxXTsKCiAgICAgICAgICB2YXIgdHggPSAwOwogICAgICAgICAgdmFyIHR5ID0gMDsKICAgICAgICAgIGlmICghZm9udC52ZXJ0aWNhbCkgewogICAgICAgICAgICB2YXIgdzAgPSBnbHlwaFdpZHRoICogdGV4dFN0YXRlLmZvbnRNYXRyaXhbMF07CiAgICAgICAgICAgIHR4ID0gKHcwICogdGV4dFN0YXRlLmZvbnRTaXplICsgdGV4dFN0YXRlLmNoYXJTcGFjaW5nKSAqCiAgICAgICAgICAgICAgICAgdGV4dFN0YXRlLnRleHRIU2NhbGU7CiAgICAgICAgICAgIHdpZHRoICs9IHR4OwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdmFyIHcxID0gZ2x5cGhXaWR0aCAqIHRleHRTdGF0ZS5mb250TWF0cml4WzBdOwogICAgICAgICAgICB0eSA9IHcxICogdGV4dFN0YXRlLmZvbnRTaXplICsgdGV4dFN0YXRlLmNoYXJTcGFjaW5nOwogICAgICAgICAgICBoZWlnaHQgKz0gdHk7CiAgICAgICAgICB9CiAgICAgICAgICB0ZXh0U3RhdGUudHJhbnNsYXRlVGV4dE1hdHJpeCh0eCwgdHkpOwoKICAgICAgICAgIHRleHRDaHVuay5zdHIucHVzaChnbHlwaFVuaWNvZGUpOwogICAgICAgIH0KCiAgICAgICAgdmFyIGEgPSB0ZXh0U3RhdGUudGV4dExpbmVNYXRyaXhbMF07CiAgICAgICAgdmFyIGIgPSB0ZXh0U3RhdGUudGV4dExpbmVNYXRyaXhbMV07CiAgICAgICAgdmFyIHNjYWxlTGluZVggPSBNYXRoLnNxcnQoYSAqIGEgKyBiICogYik7CiAgICAgICAgYSA9IHRleHRTdGF0ZS5jdG1bMF07CiAgICAgICAgYiA9IHRleHRTdGF0ZS5jdG1bMV07CiAgICAgICAgdmFyIHNjYWxlQ3RtWCA9IE1hdGguc3FydChhICogYSArIGIgKiBiKTsKICAgICAgICBpZiAoIWZvbnQudmVydGljYWwpIHsKICAgICAgICAgIHRleHRDaHVuay53aWR0aCArPSB3aWR0aCAqIHNjYWxlQ3RtWCAqIHNjYWxlTGluZVg7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRleHRDaHVuay5oZWlnaHQgKz0gTWF0aC5hYnMoaGVpZ2h0ICogc2NhbGVDdG1YICogc2NhbGVMaW5lWCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0ZXh0Q2h1bms7CiAgICAgIH0KCiAgICAgIHZhciB0aW1lU2xvdE1hbmFnZXIgPSBuZXcgVGltZVNsb3RNYW5hZ2VyKCk7CgogICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gbmV4dChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICB0aW1lU2xvdE1hbmFnZXIucmVzZXQoKTsKICAgICAgICB2YXIgc3RvcCwgb3BlcmF0aW9uID0ge30sIGFyZ3MgPSBbXTsKICAgICAgICB3aGlsZSAoIShzdG9wID0gdGltZVNsb3RNYW5hZ2VyLmNoZWNrKCkpKSB7CiAgICAgICAgICAvLyBUaGUgYXJndW1lbnRzIHBhcnNlZCBieSByZWFkKCkgYXJlIG5vdCB1c2VkIGJleW9uZCB0aGlzIGxvb3AsIHNvCiAgICAgICAgICAvLyB3ZSBjYW4gcmV1c2UgdGhlIHNhbWUgYXJyYXkgb24gZXZlcnkgaXRlcmF0aW9uLCB0aHVzIGF2b2lkaW5nCiAgICAgICAgICAvLyB1bm5lY2Vzc2FyeSBhbGxvY2F0aW9ucy4KICAgICAgICAgIGFyZ3MubGVuZ3RoID0gMDsKICAgICAgICAgIG9wZXJhdGlvbi5hcmdzID0gYXJnczsKICAgICAgICAgIGlmICghKHByZXByb2Nlc3Nvci5yZWFkKG9wZXJhdGlvbikpKSB7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQogICAgICAgICAgdGV4dFN0YXRlID0gc3RhdGVNYW5hZ2VyLnN0YXRlOwogICAgICAgICAgdmFyIGZuID0gb3BlcmF0aW9uLmZuOwogICAgICAgICAgYXJncyA9IG9wZXJhdGlvbi5hcmdzOwoKICAgICAgICAgIHN3aXRjaCAoZm4gfCAwKSB7CiAgICAgICAgICAgIGNhc2UgT1BTLnNldEZvbnQ6CiAgICAgICAgICAgICAgdGV4dFN0YXRlLmZvbnRTaXplID0gYXJnc1sxXTsKICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlU2V0Rm9udChhcmdzWzBdLm5hbWUpLnRoZW4oZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBuZXh0KHJlc29sdmUsIHJlamVjdCk7CiAgICAgICAgICAgICAgfSwgcmVqZWN0KTsKICAgICAgICAgICAgY2FzZSBPUFMuc2V0VGV4dFJpc2U6CiAgICAgICAgICAgICAgdGV4dFN0YXRlLnRleHRSaXNlID0gYXJnc1swXTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSBPUFMuc2V0SFNjYWxlOgogICAgICAgICAgICAgIHRleHRTdGF0ZS50ZXh0SFNjYWxlID0gYXJnc1swXSAvIDEwMDsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSBPUFMuc2V0TGVhZGluZzoKICAgICAgICAgICAgICB0ZXh0U3RhdGUubGVhZGluZyA9IGFyZ3NbMF07CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgT1BTLm1vdmVUZXh0OgogICAgICAgICAgICAgIHRleHRTdGF0ZS50cmFuc2xhdGVUZXh0TGluZU1hdHJpeChhcmdzWzBdLCBhcmdzWzFdKTsKICAgICAgICAgICAgICB0ZXh0U3RhdGUudGV4dE1hdHJpeCA9IHRleHRTdGF0ZS50ZXh0TGluZU1hdHJpeC5zbGljZSgpOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIE9QUy5zZXRMZWFkaW5nTW92ZVRleHQ6CiAgICAgICAgICAgICAgdGV4dFN0YXRlLmxlYWRpbmcgPSAtYXJnc1sxXTsKICAgICAgICAgICAgICB0ZXh0U3RhdGUudHJhbnNsYXRlVGV4dExpbmVNYXRyaXgoYXJnc1swXSwgYXJnc1sxXSk7CiAgICAgICAgICAgICAgdGV4dFN0YXRlLnRleHRNYXRyaXggPSB0ZXh0U3RhdGUudGV4dExpbmVNYXRyaXguc2xpY2UoKTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSBPUFMubmV4dExpbmU6CiAgICAgICAgICAgICAgdGV4dFN0YXRlLmNhcnJpYWdlUmV0dXJuKCk7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgT1BTLnNldFRleHRNYXRyaXg6CiAgICAgICAgICAgICAgdGV4dFN0YXRlLnNldFRleHRNYXRyaXgoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSwKICAgICAgICAgICAgICAgIGFyZ3NbNF0sIGFyZ3NbNV0pOwogICAgICAgICAgICAgIHRleHRTdGF0ZS5zZXRUZXh0TGluZU1hdHJpeChhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdLCBhcmdzWzNdLAogICAgICAgICAgICAgICAgYXJnc1s0XSwgYXJnc1s1XSk7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgT1BTLnNldENoYXJTcGFjaW5nOgogICAgICAgICAgICAgIHRleHRTdGF0ZS5jaGFyU3BhY2luZyA9IGFyZ3NbMF07CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgT1BTLnNldFdvcmRTcGFjaW5nOgogICAgICAgICAgICAgIHRleHRTdGF0ZS53b3JkU3BhY2luZyA9IGFyZ3NbMF07CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgT1BTLmJlZ2luVGV4dDoKICAgICAgICAgICAgICB0ZXh0U3RhdGUudGV4dE1hdHJpeCA9IElERU5USVRZX01BVFJJWC5zbGljZSgpOwogICAgICAgICAgICAgIHRleHRTdGF0ZS50ZXh0TGluZU1hdHJpeCA9IElERU5USVRZX01BVFJJWC5zbGljZSgpOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIE9QUy5zaG93U3BhY2VkVGV4dDoKICAgICAgICAgICAgICB2YXIgaXRlbXMgPSBhcmdzWzBdOwogICAgICAgICAgICAgIHZhciB0ZXh0Q2h1bmsgPSBuZXdUZXh0Q2h1bmsoKTsKICAgICAgICAgICAgICB2YXIgb2Zmc2V0OwogICAgICAgICAgICAgIGZvciAodmFyIGogPSAwLCBqaiA9IGl0ZW1zLmxlbmd0aDsgaiA8IGpqOyBqKyspIHsKICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgaXRlbXNbal0gPT09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgICAgICAgIGJ1aWxkVGV4dEdlb21ldHJ5KGl0ZW1zW2pdLCB0ZXh0Q2h1bmspOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgdmFyIHZhbCA9IGl0ZW1zW2pdIC8gMTAwMDsKICAgICAgICAgICAgICAgICAgaWYgKCF0ZXh0U3RhdGUuZm9udC52ZXJ0aWNhbCkgewogICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IC12YWwgKiB0ZXh0U3RhdGUuZm9udFNpemUgKiB0ZXh0U3RhdGUudGV4dEhTY2FsZSAqCiAgICAgICAgICAgICAgICAgICAgICB0ZXh0U3RhdGUudGV4dE1hdHJpeFswXTsKICAgICAgICAgICAgICAgICAgICB0ZXh0U3RhdGUudHJhbnNsYXRlVGV4dE1hdHJpeChvZmZzZXQsIDApOwogICAgICAgICAgICAgICAgICAgIHRleHRDaHVuay53aWR0aCArPSBvZmZzZXQ7CiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gLXZhbCAqIHRleHRTdGF0ZS5mb250U2l6ZSAqCiAgICAgICAgICAgICAgICAgICAgICB0ZXh0U3RhdGUudGV4dE1hdHJpeFszXTsKICAgICAgICAgICAgICAgICAgICB0ZXh0U3RhdGUudHJhbnNsYXRlVGV4dE1hdHJpeCgwLCBvZmZzZXQpOwogICAgICAgICAgICAgICAgICAgIHRleHRDaHVuay5oZWlnaHQgKz0gb2Zmc2V0OwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmIChpdGVtc1tqXSA8IDAgJiYgdGV4dFN0YXRlLmZvbnQuc3BhY2VXaWR0aCA+IDApIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZmFrZVNwYWNlcyA9IC1pdGVtc1tqXSAvIHRleHRTdGF0ZS5mb250LnNwYWNlV2lkdGg7CiAgICAgICAgICAgICAgICAgICAgaWYgKGZha2VTcGFjZXMgPiBNVUxUSV9TUEFDRV9GQUNUT1IpIHsKICAgICAgICAgICAgICAgICAgICAgIGZha2VTcGFjZXMgPSBNYXRoLnJvdW5kKGZha2VTcGFjZXMpOwogICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGZha2VTcGFjZXMtLSkgewogICAgICAgICAgICAgICAgICAgICAgICB0ZXh0Q2h1bmsuc3RyLnB1c2goJyAnKTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZha2VTcGFjZXMgPiBTUEFDRV9GQUNUT1IpIHsKICAgICAgICAgICAgICAgICAgICAgIHRleHRDaHVuay5zdHIucHVzaCgnICcpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBiaWRpVGV4dHMucHVzaChydW5CaWRpKHRleHRDaHVuaykpOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIE9QUy5zaG93VGV4dDoKICAgICAgICAgICAgICBiaWRpVGV4dHMucHVzaChydW5CaWRpKGJ1aWxkVGV4dEdlb21ldHJ5KGFyZ3NbMF0pKSk7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgT1BTLm5leHRMaW5lU2hvd1RleHQ6CiAgICAgICAgICAgICAgdGV4dFN0YXRlLmNhcnJpYWdlUmV0dXJuKCk7CiAgICAgICAgICAgICAgYmlkaVRleHRzLnB1c2gocnVuQmlkaShidWlsZFRleHRHZW9tZXRyeShhcmdzWzBdKSkpOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIE9QUy5uZXh0TGluZVNldFNwYWNpbmdTaG93VGV4dDoKICAgICAgICAgICAgICB0ZXh0U3RhdGUud29yZFNwYWNpbmcgPSBhcmdzWzBdOwogICAgICAgICAgICAgIHRleHRTdGF0ZS5jaGFyU3BhY2luZyA9IGFyZ3NbMV07CiAgICAgICAgICAgICAgdGV4dFN0YXRlLmNhcnJpYWdlUmV0dXJuKCk7CiAgICAgICAgICAgICAgYmlkaVRleHRzLnB1c2gocnVuQmlkaShidWlsZFRleHRHZW9tZXRyeShhcmdzWzJdKSkpOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIE9QUy5wYWludFhPYmplY3Q6CiAgICAgICAgICAgICAgaWYgKGFyZ3NbMF0uY29kZSkgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICBpZiAoIXhvYmpzKSB7CiAgICAgICAgICAgICAgICB4b2JqcyA9IChyZXNvdXJjZXMuZ2V0KCdYT2JqZWN0JykgfHwgRGljdC5lbXB0eSk7CiAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICB2YXIgbmFtZSA9IGFyZ3NbMF0ubmFtZTsKICAgICAgICAgICAgICBpZiAoeG9ianNDYWNoZS5rZXkgPT09IG5hbWUpIHsKICAgICAgICAgICAgICAgIGlmICh4b2Jqc0NhY2hlLnRleHRzKSB7CiAgICAgICAgICAgICAgICAgIFV0aWwuYXBwZW5kVG9BcnJheShiaWRpVGV4dHMsIHhvYmpzQ2FjaGUudGV4dHMuaXRlbXMpOwogICAgICAgICAgICAgICAgICBVdGlsLmV4dGVuZE9iaih0ZXh0Q29udGVudC5zdHlsZXMsIHhvYmpzQ2FjaGUudGV4dHMuc3R5bGVzKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgdmFyIHhvYmogPSB4b2Jqcy5nZXQobmFtZSk7CiAgICAgICAgICAgICAgaWYgKCF4b2JqKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgYXNzZXJ0KGlzU3RyZWFtKHhvYmopLCAnWE9iamVjdCBzaG91bGQgYmUgYSBzdHJlYW0nKTsKCiAgICAgICAgICAgICAgdmFyIHR5cGUgPSB4b2JqLmRpY3QuZ2V0KCdTdWJ0eXBlJyk7CiAgICAgICAgICAgICAgYXNzZXJ0KGlzTmFtZSh0eXBlKSwKICAgICAgICAgICAgICAgICdYT2JqZWN0IHNob3VsZCBoYXZlIGEgTmFtZSBzdWJ0eXBlJyk7CgogICAgICAgICAgICAgIGlmICgnRm9ybScgIT09IHR5cGUubmFtZSkgewogICAgICAgICAgICAgICAgeG9ianNDYWNoZS5rZXkgPSBuYW1lOwogICAgICAgICAgICAgICAgeG9ianNDYWNoZS50ZXh0cyA9IG51bGw7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgIHN0YXRlTWFuYWdlci5zYXZlKCk7CiAgICAgICAgICAgICAgdmFyIG1hdHJpeCA9IHhvYmouZGljdC5nZXQoJ01hdHJpeCcpOwogICAgICAgICAgICAgIGlmIChpc0FycmF5KG1hdHJpeCkgJiYgbWF0cml4Lmxlbmd0aCA9PT0gNikgewogICAgICAgICAgICAgICAgc3RhdGVNYW5hZ2VyLnRyYW5zZm9ybShtYXRyaXgpOwogICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VGV4dENvbnRlbnQoeG9iaiwKICAgICAgICAgICAgICAgIHhvYmouZGljdC5nZXQoJ1Jlc291cmNlcycpIHx8IHJlc291cmNlcywgc3RhdGVNYW5hZ2VyKS4KICAgICAgICAgICAgICAgIHRoZW4oZnVuY3Rpb24gKGZvcm1UZXh0Q29udGVudCkgewogICAgICAgICAgICAgICAgICBVdGlsLmFwcGVuZFRvQXJyYXkoYmlkaVRleHRzLCBmb3JtVGV4dENvbnRlbnQuaXRlbXMpOwogICAgICAgICAgICAgICAgICBVdGlsLmV4dGVuZE9iaih0ZXh0Q29udGVudC5zdHlsZXMsIGZvcm1UZXh0Q29udGVudC5zdHlsZXMpOwogICAgICAgICAgICAgICAgICBzdGF0ZU1hbmFnZXIucmVzdG9yZSgpOwoKICAgICAgICAgICAgICAgICAgeG9ianNDYWNoZS5rZXkgPSBuYW1lOwogICAgICAgICAgICAgICAgICB4b2Jqc0NhY2hlLnRleHRzID0gZm9ybVRleHRDb250ZW50OwoKICAgICAgICAgICAgICAgICAgbmV4dChyZXNvbHZlLCByZWplY3QpOwogICAgICAgICAgICAgICAgfSwgcmVqZWN0KTsKICAgICAgICAgICAgY2FzZSBPUFMuc2V0R1N0YXRlOgogICAgICAgICAgICAgIHZhciBkaWN0TmFtZSA9IGFyZ3NbMF07CiAgICAgICAgICAgICAgdmFyIGV4dEdTdGF0ZSA9IHJlc291cmNlcy5nZXQoJ0V4dEdTdGF0ZScpOwoKICAgICAgICAgICAgICBpZiAoIWlzRGljdChleHRHU3RhdGUpIHx8ICFleHRHU3RhdGUuaGFzKGRpY3ROYW1lLm5hbWUpKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgIHZhciBnc1N0YXRlTWFwID0gZXh0R1N0YXRlLmdldChkaWN0TmFtZS5uYW1lKTsKICAgICAgICAgICAgICB2YXIgZ3NTdGF0ZUZvbnQgPSBudWxsOwogICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBnc1N0YXRlTWFwKSB7CiAgICAgICAgICAgICAgICBpZiAoa2V5ID09PSAnRm9udCcpIHsKICAgICAgICAgICAgICAgICAgYXNzZXJ0KCFnc1N0YXRlRm9udCk7CiAgICAgICAgICAgICAgICAgIGdzU3RhdGVGb250ID0gZ3NTdGF0ZU1hcFtrZXldOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpZiAoZ3NTdGF0ZUZvbnQpIHsKICAgICAgICAgICAgICAgIHRleHRTdGF0ZS5mb250U2l6ZSA9IGdzU3RhdGVGb250WzFdOwogICAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZVNldEZvbnQoZ3NTdGF0ZUZvbnRbMF0pLnRoZW4oZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgIG5leHQocmVzb2x2ZSwgcmVqZWN0KTsKICAgICAgICAgICAgICAgIH0sIHJlamVjdCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfSAvLyBzd2l0Y2gKICAgICAgICB9IC8vIHdoaWxlCiAgICAgICAgaWYgKHN0b3ApIHsKICAgICAgICAgIGRlZmVycmVkLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgICAgICBuZXh0KHJlc29sdmUsIHJlamVjdCk7CiAgICAgICAgICB9KTsKICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgcmVzb2x2ZSh0ZXh0Q29udGVudCk7CiAgICAgIH0pOwogICAgfSwKCiAgICBleHRyYWN0RGF0YVN0cnVjdHVyZXM6IGZ1bmN0aW9uCiAgICAgIHBhcnRpYWxFdmFsdWF0b3JFeHRyYWN0RGF0YVN0cnVjdHVyZXMoZGljdCwgYmFzZURpY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHJlZiwgcHJvcGVydGllcykgewogICAgICAvLyA5LjEwLjIKICAgICAgdmFyIHRvVW5pY29kZSA9IChkaWN0LmdldCgnVG9Vbmljb2RlJykgfHwgYmFzZURpY3QuZ2V0KCdUb1VuaWNvZGUnKSk7CiAgICAgIGlmICh0b1VuaWNvZGUpIHsKICAgICAgICBwcm9wZXJ0aWVzLnRvVW5pY29kZSA9IHRoaXMucmVhZFRvVW5pY29kZSh0b1VuaWNvZGUpOwogICAgICB9CiAgICAgIGlmIChwcm9wZXJ0aWVzLmNvbXBvc2l0ZSkgewogICAgICAgIC8vIENJRFN5c3RlbUluZm8gaGVscHMgdG8gbWF0Y2ggQ0lEIHRvIGdseXBocwogICAgICAgIHZhciBjaWRTeXN0ZW1JbmZvID0gZGljdC5nZXQoJ0NJRFN5c3RlbUluZm8nKTsKICAgICAgICBpZiAoaXNEaWN0KGNpZFN5c3RlbUluZm8pKSB7CiAgICAgICAgICBwcm9wZXJ0aWVzLmNpZFN5c3RlbUluZm8gPSB7CiAgICAgICAgICAgIHJlZ2lzdHJ5OiBjaWRTeXN0ZW1JbmZvLmdldCgnUmVnaXN0cnknKSwKICAgICAgICAgICAgb3JkZXJpbmc6IGNpZFN5c3RlbUluZm8uZ2V0KCdPcmRlcmluZycpLAogICAgICAgICAgICBzdXBwbGVtZW50OiBjaWRTeXN0ZW1JbmZvLmdldCgnU3VwcGxlbWVudCcpCiAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgdmFyIGNpZFRvR2lkTWFwID0gZGljdC5nZXQoJ0NJRFRvR0lETWFwJyk7CiAgICAgICAgaWYgKGlzU3RyZWFtKGNpZFRvR2lkTWFwKSkgewogICAgICAgICAgcHJvcGVydGllcy5jaWRUb0dpZE1hcCA9IHRoaXMucmVhZENpZFRvR2lkTWFwKGNpZFRvR2lkTWFwKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIEJhc2VkIG9uIDkuNi42IG9mIHRoZSBzcGVjIHRoZSBlbmNvZGluZyBjYW4gY29tZSBmcm9tIG11bHRpcGxlIHBsYWNlcwogICAgICAvLyBhbmQgZGVwZW5kcyBvbiB0aGUgZm9udCB0eXBlLiBUaGUgYmFzZSBlbmNvZGluZyBhbmQgZGlmZmVyZW5jZXMgYXJlCiAgICAgIC8vIHJlYWQgaGVyZSwgYnV0IHRoZSBlbmNvZGluZyB0aGF0IGlzIGFjdHVhbGx5IHVzZWQgaXMgY2hvc2VuIGR1cmluZwogICAgICAvLyBnbHlwaCBtYXBwaW5nIGluIHRoZSBmb250LgogICAgICAvLyBUT0RPOiBMb2FkaW5nIHRoZSBidWlsdCBpbiBlbmNvZGluZyBpbiB0aGUgZm9udCB3b3VsZCBhbGxvdyB0aGUKICAgICAgLy8gZGlmZmVyZW5jZXMgdG8gYmUgbWVyZ2VkIGluIGhlcmUgbm90IHJlcXVpcmUgdXMgdG8gaG9sZCBvbiB0byBpdC4KICAgICAgdmFyIGRpZmZlcmVuY2VzID0gW107CiAgICAgIHZhciBiYXNlRW5jb2RpbmdOYW1lID0gbnVsbDsKICAgICAgdmFyIGVuY29kaW5nOwogICAgICBpZiAoZGljdC5oYXMoJ0VuY29kaW5nJykpIHsKICAgICAgICBlbmNvZGluZyA9IGRpY3QuZ2V0KCdFbmNvZGluZycpOwogICAgICAgIGlmIChpc0RpY3QoZW5jb2RpbmcpKSB7CiAgICAgICAgICBiYXNlRW5jb2RpbmdOYW1lID0gZW5jb2RpbmcuZ2V0KCdCYXNlRW5jb2RpbmcnKTsKICAgICAgICAgIGJhc2VFbmNvZGluZ05hbWUgPSAoaXNOYW1lKGJhc2VFbmNvZGluZ05hbWUpID8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZUVuY29kaW5nTmFtZS5uYW1lIDogbnVsbCk7CiAgICAgICAgICAvLyBMb2FkIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSBiYXNlIGFuZCBvcmlnaW5hbAogICAgICAgICAgaWYgKGVuY29kaW5nLmhhcygnRGlmZmVyZW5jZXMnKSkgewogICAgICAgICAgICB2YXIgZGlmZkVuY29kaW5nID0gZW5jb2RpbmcuZ2V0KCdEaWZmZXJlbmNlcycpOwogICAgICAgICAgICB2YXIgaW5kZXggPSAwOwogICAgICAgICAgICBmb3IgKHZhciBqID0gMCwgamogPSBkaWZmRW5jb2RpbmcubGVuZ3RoOyBqIDwgamo7IGorKykgewogICAgICAgICAgICAgIHZhciBkYXRhID0gZGlmZkVuY29kaW5nW2pdOwogICAgICAgICAgICAgIGlmIChpc051bShkYXRhKSkgewogICAgICAgICAgICAgICAgaW5kZXggPSBkYXRhOwogICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBkaWZmZXJlbmNlc1tpbmRleCsrXSA9IGRhdGEubmFtZTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgaWYgKGlzTmFtZShlbmNvZGluZykpIHsKICAgICAgICAgIGJhc2VFbmNvZGluZ05hbWUgPSBlbmNvZGluZy5uYW1lOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBlcnJvcignRW5jb2RpbmcgaXMgbm90IGEgTmFtZSBub3IgYSBEaWN0Jyk7CiAgICAgICAgfQogICAgICAgIC8vIEFjY29yZGluZyB0byB0YWJsZSAxMTQgaWYgdGhlIGVuY29kaW5nIGlzIGEgbmFtZWQgZW5jb2RpbmcgaXQgbXVzdCBiZQogICAgICAgIC8vIG9uZSBvZiB0aGVzZSBwcmVkZWZpbmVkIGVuY29kaW5ncy4KICAgICAgICBpZiAoKGJhc2VFbmNvZGluZ05hbWUgIT09ICdNYWNSb21hbkVuY29kaW5nJyAmJgogICAgICAgICAgICAgYmFzZUVuY29kaW5nTmFtZSAhPT0gJ01hY0V4cGVydEVuY29kaW5nJyAmJgogICAgICAgICAgICAgYmFzZUVuY29kaW5nTmFtZSAhPT0gJ1dpbkFuc2lFbmNvZGluZycpKSB7CiAgICAgICAgICBiYXNlRW5jb2RpbmdOYW1lID0gbnVsbDsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGlmIChiYXNlRW5jb2RpbmdOYW1lKSB7CiAgICAgICAgcHJvcGVydGllcy5kZWZhdWx0RW5jb2RpbmcgPSBFbmNvZGluZ3NbYmFzZUVuY29kaW5nTmFtZV0uc2xpY2UoKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBlbmNvZGluZyA9IChwcm9wZXJ0aWVzLnR5cGUgPT09ICdUcnVlVHlwZScgPwogICAgICAgICAgICAgICAgICAgIEVuY29kaW5ncy5XaW5BbnNpRW5jb2RpbmcgOiBFbmNvZGluZ3MuU3RhbmRhcmRFbmNvZGluZyk7CiAgICAgICAgLy8gVGhlIFN5bWJvbGljIGF0dHJpYnV0ZSBjYW4gYmUgbWlzdXNlZCBmb3IgcmVndWxhciBmb250cwogICAgICAgIC8vIEhldXJpc3RpYzogd2UgaGF2ZSB0byBjaGVjayBpZiB0aGUgZm9udCBpcyBhIHN0YW5kYXJkIG9uZSBhbHNvCiAgICAgICAgaWYgKCEhKHByb3BlcnRpZXMuZmxhZ3MgJiBGb250RmxhZ3MuU3ltYm9saWMpKSB7CiAgICAgICAgICBlbmNvZGluZyA9IEVuY29kaW5ncy5NYWNSb21hbkVuY29kaW5nOwogICAgICAgICAgaWYgKCFwcm9wZXJ0aWVzLmZpbGUpIHsKICAgICAgICAgICAgaWYgKC9TeW1ib2wvaS50ZXN0KHByb3BlcnRpZXMubmFtZSkpIHsKICAgICAgICAgICAgICBlbmNvZGluZyA9IEVuY29kaW5ncy5TeW1ib2xTZXRFbmNvZGluZzsKICAgICAgICAgICAgfSBlbHNlIGlmICgvRGluZ2JhdHMvaS50ZXN0KHByb3BlcnRpZXMubmFtZSkpIHsKICAgICAgICAgICAgICBlbmNvZGluZyA9IEVuY29kaW5ncy5aYXBmRGluZ2JhdHNFbmNvZGluZzsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBwcm9wZXJ0aWVzLmRlZmF1bHRFbmNvZGluZyA9IGVuY29kaW5nOwogICAgICB9CgogICAgICBwcm9wZXJ0aWVzLmRpZmZlcmVuY2VzID0gZGlmZmVyZW5jZXM7CiAgICAgIHByb3BlcnRpZXMuYmFzZUVuY29kaW5nTmFtZSA9IGJhc2VFbmNvZGluZ05hbWU7CiAgICAgIHByb3BlcnRpZXMuZGljdCA9IGRpY3Q7CiAgICB9LAoKICAgIHJlYWRUb1VuaWNvZGU6IGZ1bmN0aW9uIFBhcnRpYWxFdmFsdWF0b3JfcmVhZFRvVW5pY29kZSh0b1VuaWNvZGUpIHsKICAgICAgdmFyIGNtYXAsIGNtYXBPYmogPSB0b1VuaWNvZGU7CiAgICAgIGlmIChpc05hbWUoY21hcE9iaikpIHsKICAgICAgICBjbWFwID0gQ01hcEZhY3RvcnkuY3JlYXRlKGNtYXBPYmosCiAgICAgICAgICB7IHVybDogUERGSlMuY01hcFVybCwgcGFja2VkOiBQREZKUy5jTWFwUGFja2VkIH0sIG51bGwpOwogICAgICAgIGlmIChjbWFwIGluc3RhbmNlb2YgSWRlbnRpdHlDTWFwKSB7CiAgICAgICAgICByZXR1cm4gbmV3IElkZW50aXR5VG9Vbmljb2RlTWFwKDAsIDB4RkZGRik7CiAgICAgICAgfQogICAgICAgIHJldHVybiBuZXcgVG9Vbmljb2RlTWFwKGNtYXAuZ2V0TWFwKCkpOwogICAgICB9IGVsc2UgaWYgKGlzU3RyZWFtKGNtYXBPYmopKSB7CiAgICAgICAgY21hcCA9IENNYXBGYWN0b3J5LmNyZWF0ZShjbWFwT2JqLAogICAgICAgICAgeyB1cmw6IFBERkpTLmNNYXBVcmwsIHBhY2tlZDogUERGSlMuY01hcFBhY2tlZCB9LCBudWxsKTsKICAgICAgICBpZiAoY21hcCBpbnN0YW5jZW9mIElkZW50aXR5Q01hcCkgewogICAgICAgICAgcmV0dXJuIG5ldyBJZGVudGl0eVRvVW5pY29kZU1hcCgwLCAweEZGRkYpOwogICAgICAgIH0KICAgICAgICBjbWFwID0gY21hcC5nZXRNYXAoKTsKICAgICAgICAvLyBDb252ZXJ0IFVURi0xNkJFCiAgICAgICAgLy8gTk9URTogY21hcCBjYW4gYmUgYSBzcGFyc2UgYXJyYXksIHNvIHVzZSBmb3JFYWNoIGluc3RlYWQgb2YgZm9yKDs7KQogICAgICAgIC8vIHRvIGl0ZXJhdGUgb3ZlciBhbGwga2V5cy4KICAgICAgICBjbWFwLmZvckVhY2goZnVuY3Rpb24odG9rZW4sIGkpIHsKICAgICAgICAgIHZhciBzdHIgPSBbXTsKICAgICAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgdG9rZW4ubGVuZ3RoOyBrICs9IDIpIHsKICAgICAgICAgICAgdmFyIHcxID0gKHRva2VuLmNoYXJDb2RlQXQoaykgPDwgOCkgfCB0b2tlbi5jaGFyQ29kZUF0KGsgKyAxKTsKICAgICAgICAgICAgaWYgKCh3MSAmIDB4RjgwMCkgIT09IDB4RDgwMCkgeyAvLyB3MSA8IDB4RDgwMCB8fCB3MSA+IDB4REZGRgogICAgICAgICAgICAgIHN0ci5wdXNoKHcxKTsKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBrICs9IDI7CiAgICAgICAgICAgIHZhciB3MiA9ICh0b2tlbi5jaGFyQ29kZUF0KGspIDw8IDgpIHwgdG9rZW4uY2hhckNvZGVBdChrICsgMSk7CiAgICAgICAgICAgIHN0ci5wdXNoKCgodzEgJiAweDNmZikgPDwgMTApICsgKHcyICYgMHgzZmYpICsgMHgxMDAwMCk7CiAgICAgICAgICB9CiAgICAgICAgICBjbWFwW2ldID0gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsIHN0cik7CiAgICAgICAgfSk7CiAgICAgICAgcmV0dXJuIG5ldyBUb1VuaWNvZGVNYXAoY21hcCk7CiAgICAgIH0KICAgICAgcmV0dXJuIG51bGw7CiAgICB9LAoKICAgIHJlYWRDaWRUb0dpZE1hcDogZnVuY3Rpb24gUGFydGlhbEV2YWx1YXRvcl9yZWFkQ2lkVG9HaWRNYXAoY2lkVG9HaWRTdHJlYW0pIHsKICAgICAgLy8gRXh0cmFjdCB0aGUgZW5jb2RpbmcgZnJvbSB0aGUgQ0lEVG9HSURNYXAKICAgICAgdmFyIGdseXBoc0RhdGEgPSBjaWRUb0dpZFN0cmVhbS5nZXRCeXRlcygpOwoKICAgICAgLy8gU2V0IGVuY29kaW5nIDAgdG8gbGF0ZXIgdmVyaWZ5IHRoZSBmb250IGhhcyBhbiBlbmNvZGluZwogICAgICB2YXIgcmVzdWx0ID0gW107CiAgICAgIGZvciAodmFyIGogPSAwLCBqaiA9IGdseXBoc0RhdGEubGVuZ3RoOyBqIDwgamo7IGorKykgewogICAgICAgIHZhciBnbHlwaElEID0gKGdseXBoc0RhdGFbaisrXSA8PCA4KSB8IGdseXBoc0RhdGFbal07CiAgICAgICAgaWYgKGdseXBoSUQgPT09IDApIHsKICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgICAgICB2YXIgY29kZSA9IGogPj4gMTsKICAgICAgICByZXN1bHRbY29kZV0gPSBnbHlwaElEOwogICAgICB9CiAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9LAoKICAgIGV4dHJhY3RXaWR0aHM6IGZ1bmN0aW9uIFBhcnRpYWxFdmFsdWF0b3JfZXh0cmFjdFdpZHRocyhkaWN0LCB4cmVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllcykgewogICAgICB2YXIgZ2x5cGhzV2lkdGhzID0gW107CiAgICAgIHZhciBkZWZhdWx0V2lkdGggPSAwOwogICAgICB2YXIgZ2x5cGhzVk1ldHJpY3MgPSBbXTsKICAgICAgdmFyIGRlZmF1bHRWTWV0cmljczsKICAgICAgdmFyIGksIGlpLCBqLCBqaiwgc3RhcnQsIGNvZGUsIHdpZHRoczsKICAgICAgaWYgKHByb3BlcnRpZXMuY29tcG9zaXRlKSB7CiAgICAgICAgZGVmYXVsdFdpZHRoID0gZGljdC5nZXQoJ0RXJykgfHwgMTAwMDsKCiAgICAgICAgd2lkdGhzID0gZGljdC5nZXQoJ1cnKTsKICAgICAgICBpZiAod2lkdGhzKSB7CiAgICAgICAgICBmb3IgKGkgPSAwLCBpaSA9IHdpZHRocy5sZW5ndGg7IGkgPCBpaTsgaSsrKSB7CiAgICAgICAgICAgIHN0YXJ0ID0gd2lkdGhzW2krK107CiAgICAgICAgICAgIGNvZGUgPSB4cmVmLmZldGNoSWZSZWYod2lkdGhzW2ldKTsKICAgICAgICAgICAgaWYgKGlzQXJyYXkoY29kZSkpIHsKICAgICAgICAgICAgICBmb3IgKGogPSAwLCBqaiA9IGNvZGUubGVuZ3RoOyBqIDwgamo7IGorKykgewogICAgICAgICAgICAgICAgZ2x5cGhzV2lkdGhzW3N0YXJ0KytdID0gY29kZVtqXTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgdmFyIHdpZHRoID0gd2lkdGhzWysraV07CiAgICAgICAgICAgICAgZm9yIChqID0gc3RhcnQ7IGogPD0gY29kZTsgaisrKSB7CiAgICAgICAgICAgICAgICBnbHlwaHNXaWR0aHNbal0gPSB3aWR0aDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChwcm9wZXJ0aWVzLnZlcnRpY2FsKSB7CiAgICAgICAgICB2YXIgdm1ldHJpY3MgPSAoZGljdC5nZXQoJ0RXMicpIHx8IFs4ODAsIC0xMDAwXSk7CiAgICAgICAgICBkZWZhdWx0Vk1ldHJpY3MgPSBbdm1ldHJpY3NbMV0sIGRlZmF1bHRXaWR0aCAqIDAuNSwgdm1ldHJpY3NbMF1dOwogICAgICAgICAgdm1ldHJpY3MgPSBkaWN0LmdldCgnVzInKTsKICAgICAgICAgIGlmICh2bWV0cmljcykgewogICAgICAgICAgICBmb3IgKGkgPSAwLCBpaSA9IHZtZXRyaWNzLmxlbmd0aDsgaSA8IGlpOyBpKyspIHsKICAgICAgICAgICAgICBzdGFydCA9IHZtZXRyaWNzW2krK107CiAgICAgICAgICAgICAgY29kZSA9IHhyZWYuZmV0Y2hJZlJlZih2bWV0cmljc1tpXSk7CiAgICAgICAgICAgICAgaWYgKGlzQXJyYXkoY29kZSkpIHsKICAgICAgICAgICAgICAgIGZvciAoaiA9IDAsIGpqID0gY29kZS5sZW5ndGg7IGogPCBqajsgaisrKSB7CiAgICAgICAgICAgICAgICAgIGdseXBoc1ZNZXRyaWNzW3N0YXJ0KytdID0gW2NvZGVbaisrXSwgY29kZVtqKytdLCBjb2RlW2pdXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdmFyIHZtZXRyaWMgPSBbdm1ldHJpY3NbKytpXSwgdm1ldHJpY3NbKytpXSwgdm1ldHJpY3NbKytpXV07CiAgICAgICAgICAgICAgICBmb3IgKGogPSBzdGFydDsgaiA8PSBjb2RlOyBqKyspIHsKICAgICAgICAgICAgICAgICAgZ2x5cGhzVk1ldHJpY3Nbal0gPSB2bWV0cmljOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICB2YXIgZmlyc3RDaGFyID0gcHJvcGVydGllcy5maXJzdENoYXI7CiAgICAgICAgd2lkdGhzID0gZGljdC5nZXQoJ1dpZHRocycpOwogICAgICAgIGlmICh3aWR0aHMpIHsKICAgICAgICAgIGogPSBmaXJzdENoYXI7CiAgICAgICAgICBmb3IgKGkgPSAwLCBpaSA9IHdpZHRocy5sZW5ndGg7IGkgPCBpaTsgaSsrKSB7CiAgICAgICAgICAgIGdseXBoc1dpZHRoc1tqKytdID0gd2lkdGhzW2ldOwogICAgICAgICAgfQogICAgICAgICAgZGVmYXVsdFdpZHRoID0gKHBhcnNlRmxvYXQoZGVzY3JpcHRvci5nZXQoJ01pc3NpbmdXaWR0aCcpKSB8fCAwKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgLy8gVHJ5aW5nIGdldCB0aGUgQmFzZUZvbnQgbWV0cmljcyAoc2VlIGNvbW1lbnQgYWJvdmUpLgogICAgICAgICAgdmFyIGJhc2VGb250TmFtZSA9IGRpY3QuZ2V0KCdCYXNlRm9udCcpOwogICAgICAgICAgaWYgKGlzTmFtZShiYXNlRm9udE5hbWUpKSB7CiAgICAgICAgICAgIHZhciBtZXRyaWNzID0gdGhpcy5nZXRCYXNlRm9udE1ldHJpY3MoYmFzZUZvbnROYW1lLm5hbWUpOwoKICAgICAgICAgICAgZ2x5cGhzV2lkdGhzID0gdGhpcy5idWlsZENoYXJDb2RlVG9XaWR0aChtZXRyaWNzLndpZHRocywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzKTsKICAgICAgICAgICAgZGVmYXVsdFdpZHRoID0gbWV0cmljcy5kZWZhdWx0V2lkdGg7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CgogICAgICAvLyBIZXVyaXN0aWM6IGRldGVjdGlvbiBvZiBtb25vc3BhY2UgZm9udCBieSBjaGVja2luZyBhbGwgbm9uLXplcm8gd2lkdGhzCiAgICAgIHZhciBpc01vbm9zcGFjZSA9IHRydWU7CiAgICAgIHZhciBmaXJzdFdpZHRoID0gZGVmYXVsdFdpZHRoOwogICAgICBmb3IgKHZhciBnbHlwaCBpbiBnbHlwaHNXaWR0aHMpIHsKICAgICAgICB2YXIgZ2x5cGhXaWR0aCA9IGdseXBoc1dpZHRoc1tnbHlwaF07CiAgICAgICAgaWYgKCFnbHlwaFdpZHRoKSB7CiAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgaWYgKCFmaXJzdFdpZHRoKSB7CiAgICAgICAgICBmaXJzdFdpZHRoID0gZ2x5cGhXaWR0aDsKICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgICAgICBpZiAoZmlyc3RXaWR0aCAhPT0gZ2x5cGhXaWR0aCkgewogICAgICAgICAgaXNNb25vc3BhY2UgPSBmYWxzZTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgfQogICAgICBpZiAoaXNNb25vc3BhY2UpIHsKICAgICAgICBwcm9wZXJ0aWVzLmZsYWdzIHw9IEZvbnRGbGFncy5GaXhlZFBpdGNoOwogICAgICB9CgogICAgICBwcm9wZXJ0aWVzLmRlZmF1bHRXaWR0aCA9IGRlZmF1bHRXaWR0aDsKICAgICAgcHJvcGVydGllcy53aWR0aHMgPSBnbHlwaHNXaWR0aHM7CiAgICAgIHByb3BlcnRpZXMuZGVmYXVsdFZNZXRyaWNzID0gZGVmYXVsdFZNZXRyaWNzOwogICAgICBwcm9wZXJ0aWVzLnZtZXRyaWNzID0gZ2x5cGhzVk1ldHJpY3M7CiAgICB9LAoKICAgIGlzU2VyaWZGb250OiBmdW5jdGlvbiBQYXJ0aWFsRXZhbHVhdG9yX2lzU2VyaWZGb250KGJhc2VGb250TmFtZSkgewogICAgICAvLyBTaW11bGF0aW5nIGRlc2NyaXB0b3IgZmxhZ3MgYXR0cmlidXRlCiAgICAgIHZhciBmb250TmFtZVdvU3R5bGUgPSBiYXNlRm9udE5hbWUuc3BsaXQoJy0nKVswXTsKICAgICAgcmV0dXJuIChmb250TmFtZVdvU3R5bGUgaW4gc2VyaWZGb250cykgfHwKICAgICAgICAgICAgICAoZm9udE5hbWVXb1N0eWxlLnNlYXJjaCgvc2VyaWYvZ2kpICE9PSAtMSk7CiAgICB9LAoKICAgIGdldEJhc2VGb250TWV0cmljczogZnVuY3Rpb24gUGFydGlhbEV2YWx1YXRvcl9nZXRCYXNlRm9udE1ldHJpY3MobmFtZSkgewogICAgICB2YXIgZGVmYXVsdFdpZHRoID0gMDsKICAgICAgdmFyIHdpZHRocyA9IFtdOwogICAgICB2YXIgbW9ub3NwYWNlID0gZmFsc2U7CiAgICAgIHZhciBsb29rdXBOYW1lID0gKHN0ZEZvbnRNYXBbbmFtZV0gfHwgbmFtZSk7CgogICAgICBpZiAoIShsb29rdXBOYW1lIGluIE1ldHJpY3MpKSB7CiAgICAgICAgLy8gVXNlIGRlZmF1bHQgZm9udHMgZm9yIGxvb2tpbmcgdXAgZm9udCBtZXRyaWNzIGlmIHRoZSBwYXNzZWQKICAgICAgICAvLyBmb250IGlzIG5vdCBhIGJhc2UgZm9udAogICAgICAgIGlmICh0aGlzLmlzU2VyaWZGb250KG5hbWUpKSB7CiAgICAgICAgICBsb29rdXBOYW1lID0gJ1RpbWVzLVJvbWFuJzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgbG9va3VwTmFtZSA9ICdIZWx2ZXRpY2EnOwogICAgICAgIH0KICAgICAgfQogICAgICB2YXIgZ2x5cGhXaWR0aHMgPSBNZXRyaWNzW2xvb2t1cE5hbWVdOwoKICAgICAgaWYgKGlzTnVtKGdseXBoV2lkdGhzKSkgewogICAgICAgIGRlZmF1bHRXaWR0aCA9IGdseXBoV2lkdGhzOwogICAgICAgIG1vbm9zcGFjZSA9IHRydWU7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgd2lkdGhzID0gZ2x5cGhXaWR0aHM7CiAgICAgIH0KCiAgICAgIHJldHVybiB7CiAgICAgICAgZGVmYXVsdFdpZHRoOiBkZWZhdWx0V2lkdGgsCiAgICAgICAgbW9ub3NwYWNlOiBtb25vc3BhY2UsCiAgICAgICAgd2lkdGhzOiB3aWR0aHMKICAgICAgfTsKICAgIH0sCgogICAgYnVpbGRDaGFyQ29kZVRvV2lkdGg6CiAgICAgICAgZnVuY3Rpb24gUGFydGlhbEV2YWx1YXRvcl9idWxpbGRDaGFyQ29kZVRvV2lkdGgod2lkdGhzQnlHbHlwaE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllcykgewogICAgICB2YXIgd2lkdGhzID0gT2JqZWN0LmNyZWF0ZShudWxsKTsKICAgICAgdmFyIGRpZmZlcmVuY2VzID0gcHJvcGVydGllcy5kaWZmZXJlbmNlczsKICAgICAgdmFyIGVuY29kaW5nID0gcHJvcGVydGllcy5kZWZhdWx0RW5jb2Rpbmc7CiAgICAgIGZvciAodmFyIGNoYXJDb2RlID0gMDsgY2hhckNvZGUgPCAyNTY7IGNoYXJDb2RlKyspIHsKICAgICAgICBpZiAoY2hhckNvZGUgaW4gZGlmZmVyZW5jZXMgJiYKICAgICAgICAgICAgd2lkdGhzQnlHbHlwaE5hbWVbZGlmZmVyZW5jZXNbY2hhckNvZGVdXSkgewogICAgICAgICAgd2lkdGhzW2NoYXJDb2RlXSA9IHdpZHRoc0J5R2x5cGhOYW1lW2RpZmZlcmVuY2VzW2NoYXJDb2RlXV07CiAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgaWYgKGNoYXJDb2RlIGluIGVuY29kaW5nICYmIHdpZHRoc0J5R2x5cGhOYW1lW2VuY29kaW5nW2NoYXJDb2RlXV0pIHsKICAgICAgICAgIHdpZHRoc1tjaGFyQ29kZV0gPSB3aWR0aHNCeUdseXBoTmFtZVtlbmNvZGluZ1tjaGFyQ29kZV1dOwogICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiB3aWR0aHM7CiAgICB9LAoKICAgIHByZUV2YWx1YXRlRm9udDogZnVuY3Rpb24gUGFydGlhbEV2YWx1YXRvcl9wcmVFdmFsdWF0ZUZvbnQoZGljdCwgeHJlZikgewogICAgICB2YXIgYmFzZURpY3QgPSBkaWN0OwogICAgICB2YXIgdHlwZSA9IGRpY3QuZ2V0KCdTdWJ0eXBlJyk7CiAgICAgIGFzc2VydChpc05hbWUodHlwZSksICdpbnZhbGlkIGZvbnQgU3VidHlwZScpOwoKICAgICAgdmFyIGNvbXBvc2l0ZSA9IGZhbHNlOwogICAgICB2YXIgdWludDhhcnJheTsKICAgICAgaWYgKHR5cGUubmFtZSA9PT0gJ1R5cGUwJykgewogICAgICAgIC8vIElmIGZvbnQgaXMgYSBjb21wb3NpdGUKICAgICAgICAvLyAgLSBnZXQgdGhlIGRlc2NlbmRhbnQgZm9udAogICAgICAgIC8vICAtIHNldCB0aGUgdHlwZSBhY2NvcmRpbmcgdG8gdGhlIGRlc2NlbmRhbnQgZm9udAogICAgICAgIC8vICAtIGdldCB0aGUgRm9udERlc2NyaXB0b3IgZnJvbSB0aGUgZGVzY2VuZGFudCBmb250CiAgICAgICAgdmFyIGRmID0gZGljdC5nZXQoJ0Rlc2NlbmRhbnRGb250cycpOwogICAgICAgIGlmICghZGYpIHsKICAgICAgICAgIGVycm9yKCdEZXNjZW5kYW50IGZvbnRzIGFyZSBub3Qgc3BlY2lmaWVkJyk7CiAgICAgICAgfQogICAgICAgIGRpY3QgPSAoaXNBcnJheShkZikgPyB4cmVmLmZldGNoSWZSZWYoZGZbMF0pIDogZGYpOwoKICAgICAgICB0eXBlID0gZGljdC5nZXQoJ1N1YnR5cGUnKTsKICAgICAgICBhc3NlcnQoaXNOYW1lKHR5cGUpLCAnaW52YWxpZCBmb250IFN1YnR5cGUnKTsKICAgICAgICBjb21wb3NpdGUgPSB0cnVlOwogICAgICB9CgogICAgICB2YXIgZGVzY3JpcHRvciA9IGRpY3QuZ2V0KCdGb250RGVzY3JpcHRvcicpOwogICAgICBpZiAoZGVzY3JpcHRvcikgewogICAgICAgIHZhciBoYXNoID0gbmV3IE11cm11ckhhc2gzXzY0KCk7CiAgICAgICAgdmFyIGVuY29kaW5nID0gYmFzZURpY3QuZ2V0UmF3KCdFbmNvZGluZycpOwogICAgICAgIGlmIChpc05hbWUoZW5jb2RpbmcpKSB7CiAgICAgICAgICBoYXNoLnVwZGF0ZShlbmNvZGluZy5uYW1lKTsKICAgICAgICB9IGVsc2UgaWYgKGlzUmVmKGVuY29kaW5nKSkgewogICAgICAgICAgaGFzaC51cGRhdGUoZW5jb2RpbmcubnVtICsgJ18nICsgZW5jb2RpbmcuZ2VuKTsKICAgICAgICB9IGVsc2UgaWYgKGlzRGljdChlbmNvZGluZykpIHsKICAgICAgICAgIHZhciBrZXlzID0gZW5jb2RpbmcuZ2V0S2V5cygpOwogICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGlpID0ga2V5cy5sZW5ndGg7IGkgPCBpaTsgaSsrKSB7CiAgICAgICAgICAgIHZhciBlbnRyeSA9IGVuY29kaW5nLmdldFJhdyhrZXlzW2ldKTsKICAgICAgICAgICAgaWYgKGlzTmFtZShlbnRyeSkpIHsKICAgICAgICAgICAgICBoYXNoLnVwZGF0ZShlbnRyeS5uYW1lKTsKICAgICAgICAgICAgfSBlbHNlIGlmIChpc1JlZihlbnRyeSkpIHsKICAgICAgICAgICAgICBoYXNoLnVwZGF0ZShlbnRyeS5udW0gKyAnXycgKyBlbnRyeS5nZW4pOwogICAgICAgICAgICB9IGVsc2UgaWYgKGlzQXJyYXkoZW50cnkpKSB7IC8vICdEaWZmZXJlbmNlcycgZW50cnkuCiAgICAgICAgICAgICAgLy8gSWRlYWxseSB3ZSBzaG91bGQgY2hlY2sgdGhlIGNvbnRlbnRzIG9mIHRoZSBhcnJheSwgYnV0IHRvIGF2b2lkCiAgICAgICAgICAgICAgLy8gcGFyc2luZyBpdCBoZXJlIGFuZCB0aGVuIGFnYWluIGluIHxleHRyYWN0RGF0YVN0cnVjdHVyZXN8LAogICAgICAgICAgICAgIC8vIHdlIG9ubHkgdXNlIHRoZSBhcnJheSBsZW5ndGggZm9yIG5vdyAoZml4ZXMgYnVnMTE1NzQ5My5wZGYpLgogICAgICAgICAgICAgIGhhc2gudXBkYXRlKGVudHJ5Lmxlbmd0aC50b1N0cmluZygpKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgdmFyIHRvVW5pY29kZSA9IGRpY3QuZ2V0KCdUb1VuaWNvZGUnKSB8fCBiYXNlRGljdC5nZXQoJ1RvVW5pY29kZScpOwogICAgICAgIGlmIChpc1N0cmVhbSh0b1VuaWNvZGUpKSB7CiAgICAgICAgICB2YXIgc3RyZWFtID0gdG9Vbmljb2RlLnN0ciB8fCB0b1VuaWNvZGU7CiAgICAgICAgICB1aW50OGFycmF5ID0gc3RyZWFtLmJ1ZmZlciA/CiAgICAgICAgICAgIG5ldyBVaW50OEFycmF5KHN0cmVhbS5idWZmZXIuYnVmZmVyLCAwLCBzdHJlYW0uYnVmZmVyTGVuZ3RoKSA6CiAgICAgICAgICAgIG5ldyBVaW50OEFycmF5KHN0cmVhbS5ieXRlcy5idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbS5zdGFydCwgc3RyZWFtLmVuZCAtIHN0cmVhbS5zdGFydCk7CiAgICAgICAgICBoYXNoLnVwZGF0ZSh1aW50OGFycmF5KTsKCiAgICAgICAgfSBlbHNlIGlmIChpc05hbWUodG9Vbmljb2RlKSkgewogICAgICAgICAgaGFzaC51cGRhdGUodG9Vbmljb2RlLm5hbWUpOwogICAgICAgIH0KCiAgICAgICAgdmFyIHdpZHRocyA9IGRpY3QuZ2V0KCdXaWR0aHMnKSB8fCBiYXNlRGljdC5nZXQoJ1dpZHRocycpOwogICAgICAgIGlmICh3aWR0aHMpIHsKICAgICAgICAgIHVpbnQ4YXJyYXkgPSBuZXcgVWludDhBcnJheShuZXcgVWludDMyQXJyYXkod2lkdGhzKS5idWZmZXIpOwogICAgICAgICAgaGFzaC51cGRhdGUodWludDhhcnJheSk7CiAgICAgICAgfQogICAgICB9CgogICAgICByZXR1cm4gewogICAgICAgIGRlc2NyaXB0b3I6IGRlc2NyaXB0b3IsCiAgICAgICAgZGljdDogZGljdCwKICAgICAgICBiYXNlRGljdDogYmFzZURpY3QsCiAgICAgICAgY29tcG9zaXRlOiBjb21wb3NpdGUsCiAgICAgICAgdHlwZTogdHlwZS5uYW1lLAogICAgICAgIGhhc2g6IGhhc2ggPyBoYXNoLmhleGRpZ2VzdCgpIDogJycKICAgICAgfTsKICAgIH0sCgogICAgdHJhbnNsYXRlRm9udDogZnVuY3Rpb24gUGFydGlhbEV2YWx1YXRvcl90cmFuc2xhdGVGb250KHByZUV2YWx1YXRlZEZvbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHJlZikgewogICAgICB2YXIgYmFzZURpY3QgPSBwcmVFdmFsdWF0ZWRGb250LmJhc2VEaWN0OwogICAgICB2YXIgZGljdCA9IHByZUV2YWx1YXRlZEZvbnQuZGljdDsKICAgICAgdmFyIGNvbXBvc2l0ZSA9IHByZUV2YWx1YXRlZEZvbnQuY29tcG9zaXRlOwogICAgICB2YXIgZGVzY3JpcHRvciA9IHByZUV2YWx1YXRlZEZvbnQuZGVzY3JpcHRvcjsKICAgICAgdmFyIHR5cGUgPSBwcmVFdmFsdWF0ZWRGb250LnR5cGU7CiAgICAgIHZhciBtYXhDaGFySW5kZXggPSAoY29tcG9zaXRlID8gMHhGRkZGIDogMHhGRik7CiAgICAgIHZhciBwcm9wZXJ0aWVzOwoKICAgICAgaWYgKCFkZXNjcmlwdG9yKSB7CiAgICAgICAgaWYgKHR5cGUgPT09ICdUeXBlMycpIHsKICAgICAgICAgIC8vIEZvbnREZXNjcmlwdG9yIGlzIG9ubHkgcmVxdWlyZWQgZm9yIFR5cGUzIGZvbnRzIHdoZW4gdGhlIGRvY3VtZW50CiAgICAgICAgICAvLyBpcyBhIHRhZ2dlZCBwZGYuIENyZWF0ZSBhIGJhcmJlYm9uZXMgb25lIHRvIGdldCBieS4KICAgICAgICAgIGRlc2NyaXB0b3IgPSBuZXcgRGljdChudWxsKTsKICAgICAgICAgIGRlc2NyaXB0b3Iuc2V0KCdGb250TmFtZScsIE5hbWUuZ2V0KHR5cGUpKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgLy8gQmVmb3JlIFBERiAxLjUgaWYgdGhlIGZvbnQgd2FzIG9uZSBvZiB0aGUgYmFzZSAxNCBmb250cywgaGF2aW5nIGEKICAgICAgICAgIC8vIEZvbnREZXNjcmlwdG9yIHdhcyBub3QgcmVxdWlyZWQuCiAgICAgICAgICAvLyBUaGlzIGNhc2UgaXMgaGVyZSBmb3IgY29tcGF0aWJpbGl0eS4KICAgICAgICAgIHZhciBiYXNlRm9udE5hbWUgPSBkaWN0LmdldCgnQmFzZUZvbnQnKTsKICAgICAgICAgIGlmICghaXNOYW1lKGJhc2VGb250TmFtZSkpIHsKICAgICAgICAgICAgZXJyb3IoJ0Jhc2UgZm9udCBpcyBub3Qgc3BlY2lmaWVkJyk7CiAgICAgICAgICB9CgogICAgICAgICAgLy8gVXNpbmcgYmFzZSBmb250IG5hbWUgYXMgYSBmb250IG5hbWUuCiAgICAgICAgICBiYXNlRm9udE5hbWUgPSBiYXNlRm9udE5hbWUubmFtZS5yZXBsYWNlKC9bLF9dL2csICctJyk7CiAgICAgICAgICB2YXIgbWV0cmljcyA9IHRoaXMuZ2V0QmFzZUZvbnRNZXRyaWNzKGJhc2VGb250TmFtZSk7CgogICAgICAgICAgLy8gU2ltdWxhdGluZyBkZXNjcmlwdG9yIGZsYWdzIGF0dHJpYnV0ZQogICAgICAgICAgdmFyIGZvbnROYW1lV29TdHlsZSA9IGJhc2VGb250TmFtZS5zcGxpdCgnLScpWzBdOwogICAgICAgICAgdmFyIGZsYWdzID0KICAgICAgICAgICAgKHRoaXMuaXNTZXJpZkZvbnQoZm9udE5hbWVXb1N0eWxlKSA/IEZvbnRGbGFncy5TZXJpZiA6IDApIHwKICAgICAgICAgICAgKG1ldHJpY3MubW9ub3NwYWNlID8gRm9udEZsYWdzLkZpeGVkUGl0Y2ggOiAwKSB8CiAgICAgICAgICAgIChzeW1ib2xzRm9udHNbZm9udE5hbWVXb1N0eWxlXSA/IEZvbnRGbGFncy5TeW1ib2xpYyA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvbnRGbGFncy5Ob25zeW1ib2xpYyk7CgogICAgICAgICAgcHJvcGVydGllcyA9IHsKICAgICAgICAgICAgdHlwZTogdHlwZSwKICAgICAgICAgICAgbmFtZTogYmFzZUZvbnROYW1lLAogICAgICAgICAgICB3aWR0aHM6IG1ldHJpY3Mud2lkdGhzLAogICAgICAgICAgICBkZWZhdWx0V2lkdGg6IG1ldHJpY3MuZGVmYXVsdFdpZHRoLAogICAgICAgICAgICBmbGFnczogZmxhZ3MsCiAgICAgICAgICAgIGZpcnN0Q2hhcjogMCwKICAgICAgICAgICAgbGFzdENoYXI6IG1heENoYXJJbmRleAogICAgICAgICAgfTsKICAgICAgICAgIHRoaXMuZXh0cmFjdERhdGFTdHJ1Y3R1cmVzKGRpY3QsIGRpY3QsIHhyZWYsIHByb3BlcnRpZXMpOwogICAgICAgICAgcHJvcGVydGllcy53aWR0aHMgPSB0aGlzLmJ1aWxkQ2hhckNvZGVUb1dpZHRoKG1ldHJpY3Mud2lkdGhzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXMpOwogICAgICAgICAgcmV0dXJuIG5ldyBGb250KGJhc2VGb250TmFtZSwgbnVsbCwgcHJvcGVydGllcyk7CiAgICAgICAgfQogICAgICB9CgogICAgICAvLyBBY2NvcmRpbmcgdG8gdGhlIHNwZWMgaWYgJ0ZvbnREZXNjcmlwdG9yJyBpcyBkZWNsYXJlZCwgJ0ZpcnN0Q2hhcicsCiAgICAgIC8vICdMYXN0Q2hhcicgYW5kICdXaWR0aHMnIHNob3VsZCBleGlzdCB0b28sIGJ1dCBzb21lIFBERiBlbmNvZGVycyBzZWVtCiAgICAgIC8vIHRvIGlnbm9yZSB0aGlzIHJ1bGUgd2hlbiBhIHZhcmlhbnQgb2YgYSBzdGFuZGFydCBmb250IGlzIHVzZWQuCiAgICAgIC8vIFRPRE8gRmlsbCB0aGUgd2lkdGggYXJyYXkgZGVwZW5kaW5nIG9uIHdoaWNoIG9mIHRoZSBiYXNlIGZvbnQgdGhpcyBpcwogICAgICAvLyBhIHZhcmlhbnQuCiAgICAgIHZhciBmaXJzdENoYXIgPSAoZGljdC5nZXQoJ0ZpcnN0Q2hhcicpIHx8IDApOwogICAgICB2YXIgbGFzdENoYXIgPSAoZGljdC5nZXQoJ0xhc3RDaGFyJykgfHwgbWF4Q2hhckluZGV4KTsKCiAgICAgIHZhciBmb250TmFtZSA9IGRlc2NyaXB0b3IuZ2V0KCdGb250TmFtZScpOwogICAgICB2YXIgYmFzZUZvbnQgPSBkaWN0LmdldCgnQmFzZUZvbnQnKTsKICAgICAgLy8gU29tZSBiYWQgUERGcyBoYXZlIGEgc3RyaW5nIGFzIHRoZSBmb250IG5hbWUuCiAgICAgIGlmIChpc1N0cmluZyhmb250TmFtZSkpIHsKICAgICAgICBmb250TmFtZSA9IE5hbWUuZ2V0KGZvbnROYW1lKTsKICAgICAgfQogICAgICBpZiAoaXNTdHJpbmcoYmFzZUZvbnQpKSB7CiAgICAgICAgYmFzZUZvbnQgPSBOYW1lLmdldChiYXNlRm9udCk7CiAgICAgIH0KCiAgICAgIGlmICh0eXBlICE9PSAnVHlwZTMnKSB7CiAgICAgICAgdmFyIGZvbnROYW1lU3RyID0gZm9udE5hbWUgJiYgZm9udE5hbWUubmFtZTsKICAgICAgICB2YXIgYmFzZUZvbnRTdHIgPSBiYXNlRm9udCAmJiBiYXNlRm9udC5uYW1lOwogICAgICAgIGlmIChmb250TmFtZVN0ciAhPT0gYmFzZUZvbnRTdHIpIHsKICAgICAgICAgIGluZm8oJ1RoZSBGb250RGVzY3JpcHRvclwncyBGb250TmFtZSBpcyAiJyArIGZvbnROYW1lU3RyICsKICAgICAgICAgICAgICAgJyIgYnV0IHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgRm9udFwncyBCYXNlRm9udCAiJyArCiAgICAgICAgICAgICAgIGJhc2VGb250U3RyICsgJyInKTsKICAgICAgICAgIC8vIFdvcmthcm91bmQgZm9yIGNhc2VzIHdoZXJlIGUuZy4gZm9udE5hbWVTdHIgPSAnQXJpYWwnIGFuZAogICAgICAgICAgLy8gYmFzZUZvbnRTdHIgPSAnQXJpYWwsQm9sZCcgKG5lZWRlZCB3aGVuIG5vIGZvbnQgZmlsZSBpcyBlbWJlZGRlZCkuCiAgICAgICAgICBpZiAoZm9udE5hbWVTdHIgJiYgYmFzZUZvbnRTdHIgJiYKICAgICAgICAgICAgICBiYXNlRm9udFN0ci5pbmRleE9mKGZvbnROYW1lU3RyKSA9PT0gMCkgewogICAgICAgICAgICBmb250TmFtZSA9IGJhc2VGb250OwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICBmb250TmFtZSA9IChmb250TmFtZSB8fCBiYXNlRm9udCk7CgogICAgICBhc3NlcnQoaXNOYW1lKGZvbnROYW1lKSwgJ2ludmFsaWQgZm9udCBuYW1lJyk7CgogICAgICB2YXIgZm9udEZpbGUgPSBkZXNjcmlwdG9yLmdldCgnRm9udEZpbGUnLCAnRm9udEZpbGUyJywgJ0ZvbnRGaWxlMycpOwogICAgICBpZiAoZm9udEZpbGUpIHsKICAgICAgICBpZiAoZm9udEZpbGUuZGljdCkgewogICAgICAgICAgdmFyIHN1YnR5cGUgPSBmb250RmlsZS5kaWN0LmdldCgnU3VidHlwZScpOwogICAgICAgICAgaWYgKHN1YnR5cGUpIHsKICAgICAgICAgICAgc3VidHlwZSA9IHN1YnR5cGUubmFtZTsKICAgICAgICAgIH0KICAgICAgICAgIHZhciBsZW5ndGgxID0gZm9udEZpbGUuZGljdC5nZXQoJ0xlbmd0aDEnKTsKICAgICAgICAgIHZhciBsZW5ndGgyID0gZm9udEZpbGUuZGljdC5nZXQoJ0xlbmd0aDInKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIHByb3BlcnRpZXMgPSB7CiAgICAgICAgdHlwZTogdHlwZSwKICAgICAgICBuYW1lOiBmb250TmFtZS5uYW1lLAogICAgICAgIHN1YnR5cGU6IHN1YnR5cGUsCiAgICAgICAgZmlsZTogZm9udEZpbGUsCiAgICAgICAgbGVuZ3RoMTogbGVuZ3RoMSwKICAgICAgICBsZW5ndGgyOiBsZW5ndGgyLAogICAgICAgIGxvYWRlZE5hbWU6IGJhc2VEaWN0LmxvYWRlZE5hbWUsCiAgICAgICAgY29tcG9zaXRlOiBjb21wb3NpdGUsCiAgICAgICAgd2lkZUNoYXJzOiBjb21wb3NpdGUsCiAgICAgICAgZml4ZWRQaXRjaDogZmFsc2UsCiAgICAgICAgZm9udE1hdHJpeDogKGRpY3QuZ2V0KCdGb250TWF0cml4JykgfHwgRk9OVF9JREVOVElUWV9NQVRSSVgpLAogICAgICAgIGZpcnN0Q2hhcjogZmlyc3RDaGFyIHx8IDAsCiAgICAgICAgbGFzdENoYXI6IChsYXN0Q2hhciB8fCBtYXhDaGFySW5kZXgpLAogICAgICAgIGJib3g6IGRlc2NyaXB0b3IuZ2V0KCdGb250QkJveCcpLAogICAgICAgIGFzY2VudDogZGVzY3JpcHRvci5nZXQoJ0FzY2VudCcpLAogICAgICAgIGRlc2NlbnQ6IGRlc2NyaXB0b3IuZ2V0KCdEZXNjZW50JyksCiAgICAgICAgeEhlaWdodDogZGVzY3JpcHRvci5nZXQoJ1hIZWlnaHQnKSwKICAgICAgICBjYXBIZWlnaHQ6IGRlc2NyaXB0b3IuZ2V0KCdDYXBIZWlnaHQnKSwKICAgICAgICBmbGFnczogZGVzY3JpcHRvci5nZXQoJ0ZsYWdzJyksCiAgICAgICAgaXRhbGljQW5nbGU6IGRlc2NyaXB0b3IuZ2V0KCdJdGFsaWNBbmdsZScpLAogICAgICAgIGNvZGVkOiBmYWxzZQogICAgICB9OwoKICAgICAgaWYgKGNvbXBvc2l0ZSkgewogICAgICAgIHZhciBjaWRFbmNvZGluZyA9IGJhc2VEaWN0LmdldCgnRW5jb2RpbmcnKTsKICAgICAgICBpZiAoaXNOYW1lKGNpZEVuY29kaW5nKSkgewogICAgICAgICAgcHJvcGVydGllcy5jaWRFbmNvZGluZyA9IGNpZEVuY29kaW5nLm5hbWU7CiAgICAgICAgfQogICAgICAgIHByb3BlcnRpZXMuY01hcCA9IENNYXBGYWN0b3J5LmNyZWF0ZShjaWRFbmNvZGluZywKICAgICAgICAgIHsgdXJsOiBQREZKUy5jTWFwVXJsLCBwYWNrZWQ6IFBERkpTLmNNYXBQYWNrZWQgfSwgbnVsbCk7CiAgICAgICAgcHJvcGVydGllcy52ZXJ0aWNhbCA9IHByb3BlcnRpZXMuY01hcC52ZXJ0aWNhbDsKICAgICAgfQogICAgICB0aGlzLmV4dHJhY3REYXRhU3RydWN0dXJlcyhkaWN0LCBiYXNlRGljdCwgeHJlZiwgcHJvcGVydGllcyk7CiAgICAgIHRoaXMuZXh0cmFjdFdpZHRocyhkaWN0LCB4cmVmLCBkZXNjcmlwdG9yLCBwcm9wZXJ0aWVzKTsKCiAgICAgIGlmICh0eXBlID09PSAnVHlwZTMnKSB7CiAgICAgICAgcHJvcGVydGllcy5pc1R5cGUzRm9udCA9IHRydWU7CiAgICAgIH0KCiAgICAgIHJldHVybiBuZXcgRm9udChmb250TmFtZS5uYW1lLCBmb250RmlsZSwgcHJvcGVydGllcyk7CiAgICB9CiAgfTsKCiAgcmV0dXJuIFBhcnRpYWxFdmFsdWF0b3I7Cn0pKCk7Cgp2YXIgVHJhbnNsYXRlZEZvbnQgPSAoZnVuY3Rpb24gVHJhbnNsYXRlZEZvbnRDbG9zdXJlKCkgewogIGZ1bmN0aW9uIFRyYW5zbGF0ZWRGb250KGxvYWRlZE5hbWUsIGZvbnQsIGRpY3QpIHsKICAgIHRoaXMubG9hZGVkTmFtZSA9IGxvYWRlZE5hbWU7CiAgICB0aGlzLmZvbnQgPSBmb250OwogICAgdGhpcy5kaWN0ID0gZGljdDsKICAgIHRoaXMudHlwZTNMb2FkZWQgPSBudWxsOwogICAgdGhpcy5zZW50ID0gZmFsc2U7CiAgfQogIFRyYW5zbGF0ZWRGb250LnByb3RvdHlwZSA9IHsKICAgIHNlbmQ6IGZ1bmN0aW9uIChoYW5kbGVyKSB7CiAgICAgIGlmICh0aGlzLnNlbnQpIHsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgdmFyIGZvbnREYXRhID0gdGhpcy5mb250LmV4cG9ydERhdGEoKTsKICAgICAgaGFuZGxlci5zZW5kKCdjb21tb25vYmonLCBbCiAgICAgICAgdGhpcy5sb2FkZWROYW1lLAogICAgICAgICdGb250JywKICAgICAgICBmb250RGF0YQogICAgICBdKTsKICAgICAgdGhpcy5zZW50ID0gdHJ1ZTsKICAgIH0sCiAgICBsb2FkVHlwZTNEYXRhOiBmdW5jdGlvbiAoZXZhbHVhdG9yLCByZXNvdXJjZXMsIHBhcmVudE9wZXJhdG9yTGlzdCkgewogICAgICBhc3NlcnQodGhpcy5mb250LmlzVHlwZTNGb250KTsKCiAgICAgIGlmICh0aGlzLnR5cGUzTG9hZGVkKSB7CiAgICAgICAgcmV0dXJuIHRoaXMudHlwZTNMb2FkZWQ7CiAgICAgIH0KCiAgICAgIHZhciB0cmFuc2xhdGVkRm9udCA9IHRoaXMuZm9udDsKICAgICAgdmFyIGxvYWRDaGFyUHJvY3NQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7CiAgICAgIHZhciBjaGFyUHJvY3MgPSB0aGlzLmRpY3QuZ2V0KCdDaGFyUHJvY3MnKS5nZXRBbGwoKTsKICAgICAgdmFyIGZvbnRSZXNvdXJjZXMgPSB0aGlzLmRpY3QuZ2V0KCdSZXNvdXJjZXMnKSB8fCByZXNvdXJjZXM7CiAgICAgIHZhciBjaGFyUHJvY0tleXMgPSBPYmplY3Qua2V5cyhjaGFyUHJvY3MpOwogICAgICB2YXIgY2hhclByb2NPcGVyYXRvckxpc3QgPSB7fTsKICAgICAgZm9yICh2YXIgaSA9IDAsIG4gPSBjaGFyUHJvY0tleXMubGVuZ3RoOyBpIDwgbjsgKytpKSB7CiAgICAgICAgbG9hZENoYXJQcm9jc1Byb21pc2UgPSBsb2FkQ2hhclByb2NzUHJvbWlzZS50aGVuKGZ1bmN0aW9uIChrZXkpIHsKICAgICAgICAgIHZhciBnbHlwaFN0cmVhbSA9IGNoYXJQcm9jc1trZXldOwogICAgICAgICAgdmFyIG9wZXJhdG9yTGlzdCA9IG5ldyBPcGVyYXRvckxpc3QoKTsKICAgICAgICAgIHJldHVybiBldmFsdWF0b3IuZ2V0T3BlcmF0b3JMaXN0KGdseXBoU3RyZWFtLCBmb250UmVzb3VyY2VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3JMaXN0KS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgY2hhclByb2NPcGVyYXRvckxpc3Rba2V5XSA9IG9wZXJhdG9yTGlzdC5nZXRJUigpOwoKICAgICAgICAgICAgLy8gQWRkIHRoZSBkZXBlbmRlbmNpZXMgdG8gdGhlIHBhcmVudCBvcGVyYXRvciBsaXN0IHNvIHRoZXkgYXJlCiAgICAgICAgICAgIC8vIHJlc29sdmVkIGJlZm9yZSBzdWIgb3BlcmF0b3IgbGlzdCBpcyBleGVjdXRlZCBzeW5jaHJvbm91c2x5LgogICAgICAgICAgICBwYXJlbnRPcGVyYXRvckxpc3QuYWRkRGVwZW5kZW5jaWVzKG9wZXJhdG9yTGlzdC5kZXBlbmRlbmNpZXMpOwogICAgICAgICAgfSwgZnVuY3Rpb24gKHJlYXNvbikgewogICAgICAgICAgICB3YXJuKCdUeXBlMyBmb250IHJlc291cmNlIFwiJyArIGtleSArICdcIiBpcyBub3QgYXZhaWxhYmxlJyk7CiAgICAgICAgICAgIHZhciBvcGVyYXRvckxpc3QgPSBuZXcgT3BlcmF0b3JMaXN0KCk7CiAgICAgICAgICAgIGNoYXJQcm9jT3BlcmF0b3JMaXN0W2tleV0gPSBvcGVyYXRvckxpc3QuZ2V0SVIoKTsKICAgICAgICAgIH0pOwogICAgICAgIH0uYmluZCh0aGlzLCBjaGFyUHJvY0tleXNbaV0pKTsKICAgICAgfQogICAgICB0aGlzLnR5cGUzTG9hZGVkID0gbG9hZENoYXJQcm9jc1Byb21pc2UudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgdHJhbnNsYXRlZEZvbnQuY2hhclByb2NPcGVyYXRvckxpc3QgPSBjaGFyUHJvY09wZXJhdG9yTGlzdDsKICAgICAgfSk7CiAgICAgIHJldHVybiB0aGlzLnR5cGUzTG9hZGVkOwogICAgfQogIH07CiAgcmV0dXJuIFRyYW5zbGF0ZWRGb250Owp9KSgpOwoKdmFyIE9wZXJhdG9yTGlzdCA9IChmdW5jdGlvbiBPcGVyYXRvckxpc3RDbG9zdXJlKCkgewogIHZhciBDSFVOS19TSVpFID0gMTAwMDsKICB2YXIgQ0hVTktfU0laRV9BQk9VVCA9IENIVU5LX1NJWkUgLSA1OyAvLyBjbG9zZSB0byBjaHVuayBzaXplCgogIGZ1bmN0aW9uIGdldFRyYW5zZmVycyhxdWV1ZSkgewogICAgdmFyIHRyYW5zZmVycyA9IFtdOwogICAgdmFyIGZuQXJyYXkgPSBxdWV1ZS5mbkFycmF5LCBhcmdzQXJyYXkgPSBxdWV1ZS5hcmdzQXJyYXk7CiAgICBmb3IgKHZhciBpID0gMCwgaWkgPSBxdWV1ZS5sZW5ndGg7IGkgPCBpaTsgaSsrKSB7CiAgICAgIHN3aXRjaCAoZm5BcnJheVtpXSkgewogICAgICAgIGNhc2UgT1BTLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0OgogICAgICAgIGNhc2UgT1BTLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0R3JvdXA6CiAgICAgICAgY2FzZSBPUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0OgogICAgICAgICAgdmFyIGFyZyA9IGFyZ3NBcnJheVtpXVswXTsgLy8gZmlyc3QgcGFyYW0gaW4gaW1nRGF0YQogICAgICAgICAgaWYgKCFhcmcuY2FjaGVkKSB7CiAgICAgICAgICAgIHRyYW5zZmVycy5wdXNoKGFyZy5kYXRhLmJ1ZmZlcik7CiAgICAgICAgICB9CiAgICAgICAgICBicmVhazsKICAgICAgfQogICAgfQogICAgcmV0dXJuIHRyYW5zZmVyczsKICB9CgogIGZ1bmN0aW9uIE9wZXJhdG9yTGlzdChpbnRlbnQsIG1lc3NhZ2VIYW5kbGVyLCBwYWdlSW5kZXgpIHsKICAgIHRoaXMubWVzc2FnZUhhbmRsZXIgPSBtZXNzYWdlSGFuZGxlcjsKICAgIHRoaXMuZm5BcnJheSA9IFtdOwogICAgdGhpcy5hcmdzQXJyYXkgPSBbXTsKICAgIHRoaXMuZGVwZW5kZW5jaWVzID0ge307CiAgICB0aGlzLnBhZ2VJbmRleCA9IHBhZ2VJbmRleDsKICAgIHRoaXMuaW50ZW50ID0gaW50ZW50OwogIH0KCiAgT3BlcmF0b3JMaXN0LnByb3RvdHlwZSA9IHsKICAgIGdldCBsZW5ndGgoKSB7CiAgICAgIHJldHVybiB0aGlzLmFyZ3NBcnJheS5sZW5ndGg7CiAgICB9LAoKICAgIGFkZE9wOiBmdW5jdGlvbihmbiwgYXJncykgewogICAgICB0aGlzLmZuQXJyYXkucHVzaChmbik7CiAgICAgIHRoaXMuYXJnc0FycmF5LnB1c2goYXJncyk7CiAgICAgIGlmICh0aGlzLm1lc3NhZ2VIYW5kbGVyKSB7CiAgICAgICAgaWYgKHRoaXMuZm5BcnJheS5sZW5ndGggPj0gQ0hVTktfU0laRSkgewogICAgICAgICAgdGhpcy5mbHVzaCgpOwogICAgICAgIH0gZWxzZSBpZiAodGhpcy5mbkFycmF5Lmxlbmd0aCA+PSBDSFVOS19TSVpFX0FCT1VUICYmCiAgICAgICAgICAgICAgICAgICAoZm4gPT09IE9QUy5yZXN0b3JlIHx8IGZuID09PSBPUFMuZW5kVGV4dCkpIHsKICAgICAgICAgIC8vIGhldXJpc3RpYyB0byBmbHVzaCBvbiBib3VuZGFyeSBvZiByZXN0b3JlIG9yIGVuZFRleHQKICAgICAgICAgIHRoaXMuZmx1c2goKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0sCgogICAgYWRkRGVwZW5kZW5jeTogZnVuY3Rpb24oZGVwZW5kZW5jeSkgewogICAgICBpZiAoZGVwZW5kZW5jeSBpbiB0aGlzLmRlcGVuZGVuY2llcykgewogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICB0aGlzLmRlcGVuZGVuY2llc1tkZXBlbmRlbmN5XSA9IHRydWU7CiAgICAgIHRoaXMuYWRkT3AoT1BTLmRlcGVuZGVuY3ksIFtkZXBlbmRlbmN5XSk7CiAgICB9LAoKICAgIGFkZERlcGVuZGVuY2llczogZnVuY3Rpb24oZGVwZW5kZW5jaWVzKSB7CiAgICAgIGZvciAodmFyIGtleSBpbiBkZXBlbmRlbmNpZXMpIHsKICAgICAgICB0aGlzLmFkZERlcGVuZGVuY3koa2V5KTsKICAgICAgfQogICAgfSwKCiAgICBhZGRPcExpc3Q6IGZ1bmN0aW9uKG9wTGlzdCkgewogICAgICBVdGlsLmV4dGVuZE9iaih0aGlzLmRlcGVuZGVuY2llcywgb3BMaXN0LmRlcGVuZGVuY2llcyk7CiAgICAgIGZvciAodmFyIGkgPSAwLCBpaSA9IG9wTGlzdC5sZW5ndGg7IGkgPCBpaTsgaSsrKSB7CiAgICAgICAgdGhpcy5hZGRPcChvcExpc3QuZm5BcnJheVtpXSwgb3BMaXN0LmFyZ3NBcnJheVtpXSk7CiAgICAgIH0KICAgIH0sCgogICAgZ2V0SVI6IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gewogICAgICAgIGZuQXJyYXk6IHRoaXMuZm5BcnJheSwKICAgICAgICBhcmdzQXJyYXk6IHRoaXMuYXJnc0FycmF5LAogICAgICAgIGxlbmd0aDogdGhpcy5sZW5ndGgKICAgICAgfTsKICAgIH0sCgogICAgZmx1c2g6IGZ1bmN0aW9uKGxhc3RDaHVuaykgewogICAgICBpZiAodGhpcy5pbnRlbnQgIT09ICdvcGxpc3QnKSB7CiAgICAgICAgbmV3IFF1ZXVlT3B0aW1pemVyKCkub3B0aW1pemUodGhpcyk7CiAgICAgIH0KICAgICAgdmFyIHRyYW5zZmVycyA9IGdldFRyYW5zZmVycyh0aGlzKTsKICAgICAgdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kKCdSZW5kZXJQYWdlQ2h1bmsnLCB7CiAgICAgICAgb3BlcmF0b3JMaXN0OiB7CiAgICAgICAgICBmbkFycmF5OiB0aGlzLmZuQXJyYXksCiAgICAgICAgICBhcmdzQXJyYXk6IHRoaXMuYXJnc0FycmF5LAogICAgICAgICAgbGFzdENodW5rOiBsYXN0Q2h1bmssCiAgICAgICAgICBsZW5ndGg6IHRoaXMubGVuZ3RoCiAgICAgICAgfSwKICAgICAgICBwYWdlSW5kZXg6IHRoaXMucGFnZUluZGV4LAogICAgICAgIGludGVudDogdGhpcy5pbnRlbnQKICAgICAgfSwgdHJhbnNmZXJzKTsKICAgICAgdGhpcy5kZXBlbmRlbmNpZXMgPSB7fTsKICAgICAgdGhpcy5mbkFycmF5Lmxlbmd0aCA9IDA7CiAgICAgIHRoaXMuYXJnc0FycmF5Lmxlbmd0aCA9IDA7CiAgICB9CiAgfTsKCiAgcmV0dXJuIE9wZXJhdG9yTGlzdDsKfSkoKTsKCnZhciBTdGF0ZU1hbmFnZXIgPSAoZnVuY3Rpb24gU3RhdGVNYW5hZ2VyQ2xvc3VyZSgpIHsKICBmdW5jdGlvbiBTdGF0ZU1hbmFnZXIoaW5pdGlhbFN0YXRlKSB7CiAgICB0aGlzLnN0YXRlID0gaW5pdGlhbFN0YXRlOwogICAgdGhpcy5zdGF0ZVN0YWNrID0gW107CiAgfQogIFN0YXRlTWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICBzYXZlOiBmdW5jdGlvbiAoKSB7CiAgICAgIHZhciBvbGQgPSB0aGlzLnN0YXRlOwogICAgICB0aGlzLnN0YXRlU3RhY2sucHVzaCh0aGlzLnN0YXRlKTsKICAgICAgdGhpcy5zdGF0ZSA9IG9sZC5jbG9uZSgpOwogICAgfSwKICAgIHJlc3RvcmU6IGZ1bmN0aW9uICgpIHsKICAgICAgdmFyIHByZXYgPSB0aGlzLnN0YXRlU3RhY2sucG9wKCk7CiAgICAgIGlmIChwcmV2KSB7CiAgICAgICAgdGhpcy5zdGF0ZSA9IHByZXY7CiAgICAgIH0KICAgIH0sCiAgICB0cmFuc2Zvcm06IGZ1bmN0aW9uIChhcmdzKSB7CiAgICAgIHRoaXMuc3RhdGUuY3RtID0gVXRpbC50cmFuc2Zvcm0odGhpcy5zdGF0ZS5jdG0sIGFyZ3MpOwogICAgfQogIH07CiAgcmV0dXJuIFN0YXRlTWFuYWdlcjsKfSkoKTsKCnZhciBUZXh0U3RhdGUgPSAoZnVuY3Rpb24gVGV4dFN0YXRlQ2xvc3VyZSgpIHsKICBmdW5jdGlvbiBUZXh0U3RhdGUoKSB7CiAgICB0aGlzLmN0bSA9IG5ldyBGbG9hdDMyQXJyYXkoSURFTlRJVFlfTUFUUklYKTsKICAgIHRoaXMuZm9udFNpemUgPSAwOwogICAgdGhpcy5mb250ID0gbnVsbDsKICAgIHRoaXMuZm9udE1hdHJpeCA9IEZPTlRfSURFTlRJVFlfTUFUUklYOwogICAgdGhpcy50ZXh0TWF0cml4ID0gSURFTlRJVFlfTUFUUklYLnNsaWNlKCk7CiAgICB0aGlzLnRleHRMaW5lTWF0cml4ID0gSURFTlRJVFlfTUFUUklYLnNsaWNlKCk7CiAgICB0aGlzLmNoYXJTcGFjaW5nID0gMDsKICAgIHRoaXMud29yZFNwYWNpbmcgPSAwOwogICAgdGhpcy5sZWFkaW5nID0gMDsKICAgIHRoaXMudGV4dEhTY2FsZSA9IDE7CiAgICB0aGlzLnRleHRSaXNlID0gMDsKICB9CgogIFRleHRTdGF0ZS5wcm90b3R5cGUgPSB7CiAgICBzZXRUZXh0TWF0cml4OiBmdW5jdGlvbiBUZXh0U3RhdGVfc2V0VGV4dE1hdHJpeChhLCBiLCBjLCBkLCBlLCBmKSB7CiAgICAgIHZhciBtID0gdGhpcy50ZXh0TWF0cml4OwogICAgICBtWzBdID0gYTsgbVsxXSA9IGI7IG1bMl0gPSBjOyBtWzNdID0gZDsgbVs0XSA9IGU7IG1bNV0gPSBmOwogICAgfSwKICAgIHNldFRleHRMaW5lTWF0cml4OiBmdW5jdGlvbiBUZXh0U3RhdGVfc2V0VGV4dE1hdHJpeChhLCBiLCBjLCBkLCBlLCBmKSB7CiAgICAgIHZhciBtID0gdGhpcy50ZXh0TGluZU1hdHJpeDsKICAgICAgbVswXSA9IGE7IG1bMV0gPSBiOyBtWzJdID0gYzsgbVszXSA9IGQ7IG1bNF0gPSBlOyBtWzVdID0gZjsKICAgIH0sCiAgICB0cmFuc2xhdGVUZXh0TWF0cml4OiBmdW5jdGlvbiBUZXh0U3RhdGVfdHJhbnNsYXRlVGV4dE1hdHJpeCh4LCB5KSB7CiAgICAgIHZhciBtID0gdGhpcy50ZXh0TWF0cml4OwogICAgICBtWzRdID0gbVswXSAqIHggKyBtWzJdICogeSArIG1bNF07CiAgICAgIG1bNV0gPSBtWzFdICogeCArIG1bM10gKiB5ICsgbVs1XTsKICAgIH0sCiAgICB0cmFuc2xhdGVUZXh0TGluZU1hdHJpeDogZnVuY3Rpb24gVGV4dFN0YXRlX3RyYW5zbGF0ZVRleHRNYXRyaXgoeCwgeSkgewogICAgICB2YXIgbSA9IHRoaXMudGV4dExpbmVNYXRyaXg7CiAgICAgIG1bNF0gPSBtWzBdICogeCArIG1bMl0gKiB5ICsgbVs0XTsKICAgICAgbVs1XSA9IG1bMV0gKiB4ICsgbVszXSAqIHkgKyBtWzVdOwogICAgfSwKICAgIGNhbGNSZW5kZXJNYXRyaXg6IGZ1bmN0aW9uIFRleHRTdGF0ZV9jYWxjUmVuZGVNYXRyaXgoY3RtKSB7CiAgICAgIC8vIDkuNC40IFRleHQgU3BhY2UgRGV0YWlscwogICAgICB2YXIgdHNtID0gW3RoaXMuZm9udFNpemUgKiB0aGlzLnRleHRIU2NhbGUsIDAsCiAgICAgICAgICAgICAgICAwLCB0aGlzLmZvbnRTaXplLAogICAgICAgICAgICAgICAgMCwgdGhpcy50ZXh0UmlzZV07CiAgICAgIHJldHVybiBVdGlsLnRyYW5zZm9ybShjdG0sIFV0aWwudHJhbnNmb3JtKHRoaXMudGV4dE1hdHJpeCwgdHNtKSk7CiAgICB9LAogICAgY2FycmlhZ2VSZXR1cm46IGZ1bmN0aW9uIFRleHRTdGF0ZV9jYXJyaWFnZVJldHVybigpIHsKICAgICAgdGhpcy50cmFuc2xhdGVUZXh0TGluZU1hdHJpeCgwLCAtdGhpcy5sZWFkaW5nKTsKICAgICAgdGhpcy50ZXh0TWF0cml4ID0gdGhpcy50ZXh0TGluZU1hdHJpeC5zbGljZSgpOwogICAgfSwKICAgIGNsb25lOiBmdW5jdGlvbiBUZXh0U3RhdGVfY2xvbmUoKSB7CiAgICAgIHZhciBjbG9uZSA9IE9iamVjdC5jcmVhdGUodGhpcyk7CiAgICAgIGNsb25lLnRleHRNYXRyaXggPSB0aGlzLnRleHRNYXRyaXguc2xpY2UoKTsKICAgICAgY2xvbmUudGV4dExpbmVNYXRyaXggPSB0aGlzLnRleHRMaW5lTWF0cml4LnNsaWNlKCk7CiAgICAgIGNsb25lLmZvbnRNYXRyaXggPSB0aGlzLmZvbnRNYXRyaXguc2xpY2UoKTsKICAgICAgcmV0dXJuIGNsb25lOwogICAgfQogIH07CiAgcmV0dXJuIFRleHRTdGF0ZTsKfSkoKTsKCnZhciBFdmFsU3RhdGUgPSAoZnVuY3Rpb24gRXZhbFN0YXRlQ2xvc3VyZSgpIHsKICBmdW5jdGlvbiBFdmFsU3RhdGUoKSB7CiAgICB0aGlzLmN0bSA9IG5ldyBGbG9hdDMyQXJyYXkoSURFTlRJVFlfTUFUUklYKTsKICAgIHRoaXMuZm9udCA9IG51bGw7CiAgICB0aGlzLnRleHRSZW5kZXJpbmdNb2RlID0gVGV4dFJlbmRlcmluZ01vZGUuRklMTDsKICAgIHRoaXMuZmlsbENvbG9yU3BhY2UgPSBDb2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheTsKICAgIHRoaXMuc3Ryb2tlQ29sb3JTcGFjZSA9IENvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5OwogIH0KICBFdmFsU3RhdGUucHJvdG90eXBlID0gewogICAgY2xvbmU6IGZ1bmN0aW9uIENhbnZhc0V4dHJhU3RhdGVfY2xvbmUoKSB7CiAgICAgIHJldHVybiBPYmplY3QuY3JlYXRlKHRoaXMpOwogICAgfSwKICB9OwogIHJldHVybiBFdmFsU3RhdGU7Cn0pKCk7Cgp2YXIgRXZhbHVhdG9yUHJlcHJvY2Vzc29yID0gKGZ1bmN0aW9uIEV2YWx1YXRvclByZXByb2Nlc3NvckNsb3N1cmUoKSB7CiAgLy8gU3BlY2lmaWVzIHByb3BlcnRpZXMgZm9yIGVhY2ggY29tbWFuZAogIC8vCiAgLy8gSWYgdmFyaWFibGVBcmdzID09PSB0cnVlOiBbMCwgYG51bUFyZ3NgXSBleHBlY3RlZAogIC8vIElmIHZhcmlhYmxlQXJncyA9PT0gZmFsc2U6IGV4YWN0bHkgYG51bUFyZ3NgIGV4cGVjdGVkCiAgdmFyIE9QX01BUCA9IHsKICAgIC8vIEdyYXBoaWMgc3RhdGUKICAgIHc6IHsgaWQ6IE9QUy5zZXRMaW5lV2lkdGgsIG51bUFyZ3M6IDEsIHZhcmlhYmxlQXJnczogZmFsc2UgfSwKICAgIEo6IHsgaWQ6IE9QUy5zZXRMaW5lQ2FwLCBudW1BcmdzOiAxLCB2YXJpYWJsZUFyZ3M6IGZhbHNlIH0sCiAgICBqOiB7IGlkOiBPUFMuc2V0TGluZUpvaW4sIG51bUFyZ3M6IDEsIHZhcmlhYmxlQXJnczogZmFsc2UgfSwKICAgIE06IHsgaWQ6IE9QUy5zZXRNaXRlckxpbWl0LCBudW1BcmdzOiAxLCB2YXJpYWJsZUFyZ3M6IGZhbHNlIH0sCiAgICBkOiB7IGlkOiBPUFMuc2V0RGFzaCwgbnVtQXJnczogMiwgdmFyaWFibGVBcmdzOiBmYWxzZSB9LAogICAgcmk6IHsgaWQ6IE9QUy5zZXRSZW5kZXJpbmdJbnRlbnQsIG51bUFyZ3M6IDEsIHZhcmlhYmxlQXJnczogZmFsc2UgfSwKICAgIGk6IHsgaWQ6IE9QUy5zZXRGbGF0bmVzcywgbnVtQXJnczogMSwgdmFyaWFibGVBcmdzOiBmYWxzZSB9LAogICAgZ3M6IHsgaWQ6IE9QUy5zZXRHU3RhdGUsIG51bUFyZ3M6IDEsIHZhcmlhYmxlQXJnczogZmFsc2UgfSwKICAgIHE6IHsgaWQ6IE9QUy5zYXZlLCBudW1BcmdzOiAwLCB2YXJpYWJsZUFyZ3M6IGZhbHNlIH0sCiAgICBROiB7IGlkOiBPUFMucmVzdG9yZSwgbnVtQXJnczogMCwgdmFyaWFibGVBcmdzOiBmYWxzZSB9LAogICAgY206IHsgaWQ6IE9QUy50cmFuc2Zvcm0sIG51bUFyZ3M6IDYsIHZhcmlhYmxlQXJnczogZmFsc2UgfSwKCiAgICAvLyBQYXRoCiAgICBtOiB7IGlkOiBPUFMubW92ZVRvLCBudW1BcmdzOiAyLCB2YXJpYWJsZUFyZ3M6IGZhbHNlIH0sCiAgICBsOiB7IGlkOiBPUFMubGluZVRvLCBudW1BcmdzOiAyLCB2YXJpYWJsZUFyZ3M6IGZhbHNlIH0sCiAgICBjOiB7IGlkOiBPUFMuY3VydmVUbywgbnVtQXJnczogNiwgdmFyaWFibGVBcmdzOiBmYWxzZSB9LAogICAgdjogeyBpZDogT1BTLmN1cnZlVG8yLCBudW1BcmdzOiA0LCB2YXJpYWJsZUFyZ3M6IGZhbHNlIH0sCiAgICB5OiB7IGlkOiBPUFMuY3VydmVUbzMsIG51bUFyZ3M6IDQsIHZhcmlhYmxlQXJnczogZmFsc2UgfSwKICAgIGg6IHsgaWQ6IE9QUy5jbG9zZVBhdGgsIG51bUFyZ3M6IDAsIHZhcmlhYmxlQXJnczogZmFsc2UgfSwKICAgIHJlOiB7IGlkOiBPUFMucmVjdGFuZ2xlLCBudW1BcmdzOiA0LCB2YXJpYWJsZUFyZ3M6IGZhbHNlIH0sCiAgICBTOiB7IGlkOiBPUFMuc3Ryb2tlLCBudW1BcmdzOiAwLCB2YXJpYWJsZUFyZ3M6IGZhbHNlIH0sCiAgICBzOiB7IGlkOiBPUFMuY2xvc2VTdHJva2UsIG51bUFyZ3M6IDAsIHZhcmlhYmxlQXJnczogZmFsc2UgfSwKICAgIGY6IHsgaWQ6IE9QUy5maWxsLCBudW1BcmdzOiAwLCB2YXJpYWJsZUFyZ3M6IGZhbHNlIH0sCiAgICBGOiB7IGlkOiBPUFMuZmlsbCwgbnVtQXJnczogMCwgdmFyaWFibGVBcmdzOiBmYWxzZSB9LAogICAgJ2YqJzogeyBpZDogT1BTLmVvRmlsbCwgbnVtQXJnczogMCwgdmFyaWFibGVBcmdzOiBmYWxzZSB9LAogICAgQjogeyBpZDogT1BTLmZpbGxTdHJva2UsIG51bUFyZ3M6IDAsIHZhcmlhYmxlQXJnczogZmFsc2UgfSwKICAgICdCKic6IHsgaWQ6IE9QUy5lb0ZpbGxTdHJva2UsIG51bUFyZ3M6IDAsIHZhcmlhYmxlQXJnczogZmFsc2UgfSwKICAgIGI6IHsgaWQ6IE9QUy5jbG9zZUZpbGxTdHJva2UsIG51bUFyZ3M6IDAsIHZhcmlhYmxlQXJnczogZmFsc2UgfSwKICAgICdiKic6IHsgaWQ6IE9QUy5jbG9zZUVPRmlsbFN0cm9rZSwgbnVtQXJnczogMCwgdmFyaWFibGVBcmdzOiBmYWxzZSB9LAogICAgbjogeyBpZDogT1BTLmVuZFBhdGgsIG51bUFyZ3M6IDAsIHZhcmlhYmxlQXJnczogZmFsc2UgfSwKCiAgICAvLyBDbGlwcGluZwogICAgVzogeyBpZDogT1BTLmNsaXAsIG51bUFyZ3M6IDAsIHZhcmlhYmxlQXJnczogZmFsc2UgfSwKICAgICdXKic6IHsgaWQ6IE9QUy5lb0NsaXAsIG51bUFyZ3M6IDAsIHZhcmlhYmxlQXJnczogZmFsc2UgfSwKCiAgICAvLyBUZXh0CiAgICBCVDogeyBpZDogT1BTLmJlZ2luVGV4dCwgbnVtQXJnczogMCwgdmFyaWFibGVBcmdzOiBmYWxzZSB9LAogICAgRVQ6IHsgaWQ6IE9QUy5lbmRUZXh0LCBudW1BcmdzOiAwLCB2YXJpYWJsZUFyZ3M6IGZhbHNlIH0sCiAgICBUYzogeyBpZDogT1BTLnNldENoYXJTcGFjaW5nLCBudW1BcmdzOiAxLCB2YXJpYWJsZUFyZ3M6IGZhbHNlIH0sCiAgICBUdzogeyBpZDogT1BTLnNldFdvcmRTcGFjaW5nLCBudW1BcmdzOiAxLCB2YXJpYWJsZUFyZ3M6IGZhbHNlIH0sCiAgICBUejogeyBpZDogT1BTLnNldEhTY2FsZSwgbnVtQXJnczogMSwgdmFyaWFibGVBcmdzOiBmYWxzZSB9LAogICAgVEw6IHsgaWQ6IE9QUy5zZXRMZWFkaW5nLCBudW1BcmdzOiAxLCB2YXJpYWJsZUFyZ3M6IGZhbHNlIH0sCiAgICBUZjogeyBpZDogT1BTLnNldEZvbnQsIG51bUFyZ3M6IDIsIHZhcmlhYmxlQXJnczogZmFsc2UgfSwKICAgIFRyOiB7IGlkOiBPUFMuc2V0VGV4dFJlbmRlcmluZ01vZGUsIG51bUFyZ3M6IDEsIHZhcmlhYmxlQXJnczogZmFsc2UgfSwKICAgIFRzOiB7IGlkOiBPUFMuc2V0VGV4dFJpc2UsIG51bUFyZ3M6IDEsIHZhcmlhYmxlQXJnczogZmFsc2UgfSwKICAgIFRkOiB7IGlkOiBPUFMubW92ZVRleHQsIG51bUFyZ3M6IDIsIHZhcmlhYmxlQXJnczogZmFsc2UgfSwKICAgIFREOiB7IGlkOiBPUFMuc2V0TGVhZGluZ01vdmVUZXh0LCBudW1BcmdzOiAyLCB2YXJpYWJsZUFyZ3M6IGZhbHNlIH0sCiAgICBUbTogeyBpZDogT1BTLnNldFRleHRNYXRyaXgsIG51bUFyZ3M6IDYsIHZhcmlhYmxlQXJnczogZmFsc2UgfSwKICAgICdUKic6IHsgaWQ6IE9QUy5uZXh0TGluZSwgbnVtQXJnczogMCwgdmFyaWFibGVBcmdzOiBmYWxzZSB9LAogICAgVGo6IHsgaWQ6IE9QUy5zaG93VGV4dCwgbnVtQXJnczogMSwgdmFyaWFibGVBcmdzOiBmYWxzZSB9LAogICAgVEo6IHsgaWQ6IE9QUy5zaG93U3BhY2VkVGV4dCwgbnVtQXJnczogMSwgdmFyaWFibGVBcmdzOiBmYWxzZSB9LAogICAgJ1wnJzogeyBpZDogT1BTLm5leHRMaW5lU2hvd1RleHQsIG51bUFyZ3M6IDEsIHZhcmlhYmxlQXJnczogZmFsc2UgfSwKICAgICciJzogeyBpZDogT1BTLm5leHRMaW5lU2V0U3BhY2luZ1Nob3dUZXh0LCBudW1BcmdzOiAzLAogICAgICAgICAgIHZhcmlhYmxlQXJnczogZmFsc2UgfSwKCiAgICAvLyBUeXBlMyBmb250cwogICAgZDA6IHsgaWQ6IE9QUy5zZXRDaGFyV2lkdGgsIG51bUFyZ3M6IDIsIHZhcmlhYmxlQXJnczogZmFsc2UgfSwKICAgIGQxOiB7IGlkOiBPUFMuc2V0Q2hhcldpZHRoQW5kQm91bmRzLCBudW1BcmdzOiA2LCB2YXJpYWJsZUFyZ3M6IGZhbHNlIH0sCgogICAgLy8gQ29sb3IKICAgIENTOiB7IGlkOiBPUFMuc2V0U3Ryb2tlQ29sb3JTcGFjZSwgbnVtQXJnczogMSwgdmFyaWFibGVBcmdzOiBmYWxzZSB9LAogICAgY3M6IHsgaWQ6IE9QUy5zZXRGaWxsQ29sb3JTcGFjZSwgbnVtQXJnczogMSwgdmFyaWFibGVBcmdzOiBmYWxzZSB9LAogICAgU0M6IHsgaWQ6IE9QUy5zZXRTdHJva2VDb2xvciwgbnVtQXJnczogNCwgdmFyaWFibGVBcmdzOiB0cnVlIH0sCiAgICBTQ046IHsgaWQ6IE9QUy5zZXRTdHJva2VDb2xvck4sIG51bUFyZ3M6IDMzLCB2YXJpYWJsZUFyZ3M6IHRydWUgfSwKICAgIHNjOiB7IGlkOiBPUFMuc2V0RmlsbENvbG9yLCBudW1BcmdzOiA0LCB2YXJpYWJsZUFyZ3M6IHRydWUgfSwKICAgIHNjbjogeyBpZDogT1BTLnNldEZpbGxDb2xvck4sIG51bUFyZ3M6IDMzLCB2YXJpYWJsZUFyZ3M6IHRydWUgfSwKICAgIEc6IHsgaWQ6IE9QUy5zZXRTdHJva2VHcmF5LCBudW1BcmdzOiAxLCB2YXJpYWJsZUFyZ3M6IGZhbHNlIH0sCiAgICBnOiB7IGlkOiBPUFMuc2V0RmlsbEdyYXksIG51bUFyZ3M6IDEsIHZhcmlhYmxlQXJnczogZmFsc2UgfSwKICAgIFJHOiB7IGlkOiBPUFMuc2V0U3Ryb2tlUkdCQ29sb3IsIG51bUFyZ3M6IDMsIHZhcmlhYmxlQXJnczogZmFsc2UgfSwKICAgIHJnOiB7IGlkOiBPUFMuc2V0RmlsbFJHQkNvbG9yLCBudW1BcmdzOiAzLCB2YXJpYWJsZUFyZ3M6IGZhbHNlIH0sCiAgICBLOiB7IGlkOiBPUFMuc2V0U3Ryb2tlQ01ZS0NvbG9yLCBudW1BcmdzOiA0LCB2YXJpYWJsZUFyZ3M6IGZhbHNlIH0sCiAgICBrOiB7IGlkOiBPUFMuc2V0RmlsbENNWUtDb2xvciwgbnVtQXJnczogNCwgdmFyaWFibGVBcmdzOiBmYWxzZSB9LAoKICAgIC8vIFNoYWRpbmcKICAgIHNoOiB7IGlkOiBPUFMuc2hhZGluZ0ZpbGwsIG51bUFyZ3M6IDEsIHZhcmlhYmxlQXJnczogZmFsc2UgfSwKCiAgICAvLyBJbWFnZXMKICAgIEJJOiB7IGlkOiBPUFMuYmVnaW5JbmxpbmVJbWFnZSwgbnVtQXJnczogMCwgdmFyaWFibGVBcmdzOiBmYWxzZSB9LAogICAgSUQ6IHsgaWQ6IE9QUy5iZWdpbkltYWdlRGF0YSwgbnVtQXJnczogMCwgdmFyaWFibGVBcmdzOiBmYWxzZSB9LAogICAgRUk6IHsgaWQ6IE9QUy5lbmRJbmxpbmVJbWFnZSwgbnVtQXJnczogMSwgdmFyaWFibGVBcmdzOiBmYWxzZSB9LAoKICAgIC8vIFhPYmplY3RzCiAgICBEbzogeyBpZDogT1BTLnBhaW50WE9iamVjdCwgbnVtQXJnczogMSwgdmFyaWFibGVBcmdzOiBmYWxzZSB9LAogICAgTVA6IHsgaWQ6IE9QUy5tYXJrUG9pbnQsIG51bUFyZ3M6IDEsIHZhcmlhYmxlQXJnczogZmFsc2UgfSwKICAgIERQOiB7IGlkOiBPUFMubWFya1BvaW50UHJvcHMsIG51bUFyZ3M6IDIsIHZhcmlhYmxlQXJnczogZmFsc2UgfSwKICAgIEJNQzogeyBpZDogT1BTLmJlZ2luTWFya2VkQ29udGVudCwgbnVtQXJnczogMSwgdmFyaWFibGVBcmdzOiBmYWxzZSB9LAogICAgQkRDOiB7IGlkOiBPUFMuYmVnaW5NYXJrZWRDb250ZW50UHJvcHMsIG51bUFyZ3M6IDIsCiAgICAgICAgICAgdmFyaWFibGVBcmdzOiBmYWxzZSB9LAogICAgRU1DOiB7IGlkOiBPUFMuZW5kTWFya2VkQ29udGVudCwgbnVtQXJnczogMCwgdmFyaWFibGVBcmdzOiBmYWxzZSB9LAoKICAgIC8vIENvbXBhdGliaWxpdHkKICAgIEJYOiB7IGlkOiBPUFMuYmVnaW5Db21wYXQsIG51bUFyZ3M6IDAsIHZhcmlhYmxlQXJnczogZmFsc2UgfSwKICAgIEVYOiB7IGlkOiBPUFMuZW5kQ29tcGF0LCBudW1BcmdzOiAwLCB2YXJpYWJsZUFyZ3M6IGZhbHNlIH0sCgogICAgLy8gKHJlc2VydmVkIHBhcnRpYWwgY29tbWFuZHMgZm9yIHRoZSBsZXhlcikKICAgIEJNOiBudWxsLAogICAgQkQ6IG51bGwsCiAgICAndHJ1ZSc6IG51bGwsCiAgICBmYTogbnVsbCwKICAgIGZhbDogbnVsbCwKICAgIGZhbHM6IG51bGwsCiAgICAnZmFsc2UnOiBudWxsLAogICAgbnU6IG51bGwsCiAgICBudWw6IG51bGwsCiAgICAnbnVsbCc6IG51bGwKICB9OwoKICBmdW5jdGlvbiBFdmFsdWF0b3JQcmVwcm9jZXNzb3Ioc3RyZWFtLCB4cmVmLCBzdGF0ZU1hbmFnZXIpIHsKICAgIC8vIFRPRE8obWR1YW4pOiBwYXNzIGFycmF5IG9mIGtub3duQ29tbWFuZHMgcmF0aGVyIHRoYW4gT1BfTUFQCiAgICAvLyBkaWN0aW9uYXJ5CiAgICB0aGlzLnBhcnNlciA9IG5ldyBQYXJzZXIobmV3IExleGVyKHN0cmVhbSwgT1BfTUFQKSwgZmFsc2UsIHhyZWYpOwogICAgdGhpcy5zdGF0ZU1hbmFnZXIgPSBzdGF0ZU1hbmFnZXI7CiAgICB0aGlzLm5vblByb2Nlc3NlZEFyZ3MgPSBbXTsKICB9CgogIEV2YWx1YXRvclByZXByb2Nlc3Nvci5wcm90b3R5cGUgPSB7CiAgICBnZXQgc2F2ZWRTdGF0ZXNEZXB0aCgpIHsKICAgICAgcmV0dXJuIHRoaXMuc3RhdGVNYW5hZ2VyLnN0YXRlU3RhY2subGVuZ3RoOwogICAgfSwKCiAgICAvLyB8b3BlcmF0aW9ufCBpcyBhbiBvYmplY3Qgd2l0aCB0d28gZmllbGRzOgogICAgLy8KICAgIC8vIC0gfGZufCBpcyBhbiBvdXQgcGFyYW0uCiAgICAvLwogICAgLy8gLSB8YXJnc3wgaXMgYW4gaW5vdXQgcGFyYW0uIE9uIGVudHJ5LCBpdCBzaG91bGQgaGF2ZSBvbmUgb2YgdHdvIHZhbHVlcy4KICAgIC8vCiAgICAvLyAgIC0gQW4gZW1wdHkgYXJyYXkuIFRoaXMgaW5kaWNhdGVzIHRoYXQgdGhlIGNhbGxlciBpcyBwcm92aWRpbmcgdGhlCiAgICAvLyAgICAgYXJyYXkgaW4gd2hpY2ggdGhlIGFyZ3Mgd2lsbCBiZSBzdG9yZWQgaW4uIFRoZSBjYWxsZXIgc2hvdWxkIHVzZQogICAgLy8gICAgIHRoaXMgdmFsdWUgaWYgaXQgY2FuIHJldXNlIGEgc2luZ2xlIGFycmF5IGZvciBlYWNoIGNhbGwgdG8gcmVhZCgpLgogICAgLy8KICAgIC8vICAgLSB8bnVsbHwuIFRoaXMgaW5kaWNhdGVzIHRoYXQgdGhlIGNhbGxlciBuZWVkcyB0aGlzIGZ1bmN0aW9uIHRvIGNyZWF0ZQogICAgLy8gICAgIHRoZSBhcnJheSBpbiB3aGljaCBhbnkgYXJncyBhcmUgc3RvcmVkIGluLiBJZiB0aGVyZSBhcmUgemVybyBhcmdzLAogICAgLy8gICAgIHRoaXMgZnVuY3Rpb24gd2lsbCBsZWF2ZSB8b3BlcmF0aW9uLmFyZ3N8IGFzIHxudWxsfCAodGh1cyBhdm9pZGluZwogICAgLy8gICAgIGFsbG9jYXRpb25zIHRoYXQgd291bGQgb2NjdXIgaWYgd2UgdXNlZCBhbiBlbXB0eSBhcnJheSB0byByZXByZXNlbnQKICAgIC8vICAgICB6ZXJvIGFyZ3VtZW50cykuIE90aGVyd2lzZSwgaXQgd2lsbCByZXBsYWNlIHxudWxsfCB3aXRoIGEgbmV3IGFycmF5CiAgICAvLyAgICAgY29udGFpbmluZyB0aGUgYXJndW1lbnRzLiBUaGUgY2FsbGVyIHNob3VsZCB1c2UgdGhpcyB2YWx1ZSBpZiBpdAogICAgLy8gICAgIGNhbm5vdCByZXVzZSBhbiBhcnJheSBmb3IgZWFjaCBjYWxsIHRvIHJlYWQoKS4KICAgIC8vCiAgICAvLyBUaGVzZSB0d28gbW9kZXMgYXJlIHByZXNlbnQgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIHZlcnkgaG90IGFuZCBzbwogICAgLy8gYXZvaWRpbmcgYWxsb2NhdGlvbnMgd2hlcmUgcG9zc2libGUgaXMgd29ydGh3aGlsZS4KICAgIC8vCiAgICByZWFkOiBmdW5jdGlvbiBFdmFsdWF0b3JQcmVwcm9jZXNzb3JfcmVhZChvcGVyYXRpb24pIHsKICAgICAgdmFyIGFyZ3MgPSBvcGVyYXRpb24uYXJnczsKICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICB2YXIgb2JqID0gdGhpcy5wYXJzZXIuZ2V0T2JqKCk7CiAgICAgICAgaWYgKGlzQ21kKG9iaikpIHsKICAgICAgICAgIHZhciBjbWQgPSBvYmouY21kOwogICAgICAgICAgLy8gQ2hlY2sgdGhhdCB0aGUgY29tbWFuZCBpcyB2YWxpZAogICAgICAgICAgdmFyIG9wU3BlYyA9IE9QX01BUFtjbWRdOwogICAgICAgICAgaWYgKCFvcFNwZWMpIHsKICAgICAgICAgICAgd2FybignVW5rbm93biBjb21tYW5kICInICsgY21kICsgJyInKTsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICB9CgogICAgICAgICAgdmFyIGZuID0gb3BTcGVjLmlkOwogICAgICAgICAgdmFyIG51bUFyZ3MgPSBvcFNwZWMubnVtQXJnczsKICAgICAgICAgIHZhciBhcmdzTGVuZ3RoID0gYXJncyAhPT0gbnVsbCA/IGFyZ3MubGVuZ3RoIDogMDsKCiAgICAgICAgICBpZiAoIW9wU3BlYy52YXJpYWJsZUFyZ3MpIHsKICAgICAgICAgICAgLy8gUG9zdHNjcmlwdCBjb21tYW5kcyBjYW4gYmUgbmVzdGVkLCBlLmcuIC9GMiAvR1MyIGdzIDUuNzExIFRmCiAgICAgICAgICAgIGlmIChhcmdzTGVuZ3RoICE9PSBudW1BcmdzKSB7CiAgICAgICAgICAgICAgdmFyIG5vblByb2Nlc3NlZEFyZ3MgPSB0aGlzLm5vblByb2Nlc3NlZEFyZ3M7CiAgICAgICAgICAgICAgd2hpbGUgKGFyZ3NMZW5ndGggPiBudW1BcmdzKSB7CiAgICAgICAgICAgICAgICBub25Qcm9jZXNzZWRBcmdzLnB1c2goYXJncy5zaGlmdCgpKTsKICAgICAgICAgICAgICAgIGFyZ3NMZW5ndGgtLTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgd2hpbGUgKGFyZ3NMZW5ndGggPCBudW1BcmdzICYmIG5vblByb2Nlc3NlZEFyZ3MubGVuZ3RoICE9PSAwKSB7CiAgICAgICAgICAgICAgICBpZiAoIWFyZ3MpIHsKICAgICAgICAgICAgICAgICAgYXJncyA9IFtdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYXJncy51bnNoaWZ0KG5vblByb2Nlc3NlZEFyZ3MucG9wKCkpOwogICAgICAgICAgICAgICAgYXJnc0xlbmd0aCsrOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKGFyZ3NMZW5ndGggPCBudW1BcmdzKSB7CiAgICAgICAgICAgICAgLy8gSWYgd2UgcmVjZWl2ZSB0b28gZmV3IGFyZ3MsIGl0J3Mgbm90IHBvc3NpYmxlIHRvIHBvc3NpYmxlCiAgICAgICAgICAgICAgLy8gdG8gZXhlY3V0ZSB0aGUgY29tbWFuZCwgc28gc2tpcCB0aGUgY29tbWFuZAogICAgICAgICAgICAgIGluZm8oJ0NvbW1hbmQgJyArIGZuICsgJzogYmVjYXVzZSBleHBlY3RlZCAnICsKICAgICAgICAgICAgICAgICAgIG51bUFyZ3MgKyAnIGFyZ3MsIGJ1dCByZWNlaXZlZCAnICsgYXJnc0xlbmd0aCArCiAgICAgICAgICAgICAgICAgICAnIGFyZ3M7IHNraXBwaW5nJyk7CiAgICAgICAgICAgICAgYXJncyA9IG51bGw7CiAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0gZWxzZSBpZiAoYXJnc0xlbmd0aCA+IG51bUFyZ3MpIHsKICAgICAgICAgICAgaW5mbygnQ29tbWFuZCAnICsgZm4gKyAnOiBleHBlY3RlZCBbMCwnICsgbnVtQXJncyArCiAgICAgICAgICAgICAgICAgJ10gYXJncywgYnV0IHJlY2VpdmVkICcgKyBhcmdzTGVuZ3RoICsgJyBhcmdzJyk7CiAgICAgICAgICB9CgogICAgICAgICAgLy8gVE9ETyBmaWd1cmUgb3V0IGhvdyB0byB0eXBlLWNoZWNrIHZhcmFyZyBmdW5jdGlvbnMKICAgICAgICAgIHRoaXMucHJlcHJvY2Vzc0NvbW1hbmQoZm4sIGFyZ3MpOwoKICAgICAgICAgIG9wZXJhdGlvbi5mbiA9IGZuOwogICAgICAgICAgb3BlcmF0aW9uLmFyZ3MgPSBhcmdzOwogICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGlmIChpc0VPRihvYmopKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gbm8gbW9yZSBjb21tYW5kcwogICAgICAgICAgfQogICAgICAgICAgLy8gYXJndW1lbnQKICAgICAgICAgIGlmIChvYmogIT09IG51bGwpIHsKICAgICAgICAgICAgaWYgKCFhcmdzKSB7CiAgICAgICAgICAgICAgYXJncyA9IFtdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGFyZ3MucHVzaCgob2JqIGluc3RhbmNlb2YgRGljdCA/IG9iai5nZXRBbGwoKSA6IG9iaikpOwogICAgICAgICAgICBhc3NlcnQoYXJncy5sZW5ndGggPD0gMzMsICdUb28gbWFueSBhcmd1bWVudHMnKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0sCgogICAgcHJlcHJvY2Vzc0NvbW1hbmQ6CiAgICAgICAgZnVuY3Rpb24gRXZhbHVhdG9yUHJlcHJvY2Vzc29yX3ByZXByb2Nlc3NDb21tYW5kKGZuLCBhcmdzKSB7CiAgICAgIHN3aXRjaCAoZm4gfCAwKSB7CiAgICAgICAgY2FzZSBPUFMuc2F2ZToKICAgICAgICAgIHRoaXMuc3RhdGVNYW5hZ2VyLnNhdmUoKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgT1BTLnJlc3RvcmU6CiAgICAgICAgICB0aGlzLnN0YXRlTWFuYWdlci5yZXN0b3JlKCk7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIE9QUy50cmFuc2Zvcm06CiAgICAgICAgICB0aGlzLnN0YXRlTWFuYWdlci50cmFuc2Zvcm0oYXJncyk7CiAgICAgICAgICBicmVhazsKICAgICAgfQogICAgfQogIH07CiAgcmV0dXJuIEV2YWx1YXRvclByZXByb2Nlc3NvcjsKfSkoKTsKCnZhciBRdWV1ZU9wdGltaXplciA9IChmdW5jdGlvbiBRdWV1ZU9wdGltaXplckNsb3N1cmUoKSB7CiAgZnVuY3Rpb24gYWRkU3RhdGUocGFyZW50U3RhdGUsIHBhdHRlcm4sIGZuKSB7CiAgICB2YXIgc3RhdGUgPSBwYXJlbnRTdGF0ZTsKICAgIGZvciAodmFyIGkgPSAwLCBpaSA9IHBhdHRlcm4ubGVuZ3RoIC0gMTsgaSA8IGlpOyBpKyspIHsKICAgICAgdmFyIGl0ZW0gPSBwYXR0ZXJuW2ldOwogICAgICBzdGF0ZSA9IChzdGF0ZVtpdGVtXSB8fCAoc3RhdGVbaXRlbV0gPSBbXSkpOwogICAgfQogICAgc3RhdGVbcGF0dGVybltwYXR0ZXJuLmxlbmd0aCAtIDFdXSA9IGZuOwogIH0KCiAgZnVuY3Rpb24gaGFuZGxlUGFpbnRTb2xpZENvbG9ySW1hZ2VNYXNrKGlGaXJzdFNhdmUsIGNvdW50LCBmbkFycmF5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzQXJyYXkpIHsKICAgIC8vIEhhbmRsZXMgc3BlY2lhbCBjYXNlIG9mIG1haW5seSBMYVRlWCBkb2N1bWVudHMgd2hpY2ggdXNlIGltYWdlIG1hc2tzIHRvCiAgICAvLyBkcmF3IGxpbmVzIHdpdGggdGhlIGN1cnJlbnQgZmlsbCBzdHlsZS4KICAgIC8vICdjb3VudCcgZ3JvdXBzIG9mIChzYXZlLCB0cmFuc2Zvcm0sIHBhaW50SW1hZ2VNYXNrWE9iamVjdCwgcmVzdG9yZSkrCiAgICAvLyBoYXZlIGJlZW4gZm91bmQgYXQgaUZpcnN0U2F2ZS4KICAgIHZhciBpRmlyc3RQSU1YTyA9IGlGaXJzdFNhdmUgKyAyOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CiAgICAgIHZhciBhcmcgPSBhcmdzQXJyYXlbaUZpcnN0UElNWE8gKyA0ICogaV07CiAgICAgIHZhciBpbWFnZU1hc2sgPSBhcmcubGVuZ3RoID09PSAxICYmIGFyZ1swXTsKICAgICAgaWYgKGltYWdlTWFzayAmJiBpbWFnZU1hc2sud2lkdGggPT09IDEgJiYgaW1hZ2VNYXNrLmhlaWdodCA9PT0gMSAmJgogICAgICAgICAgKCFpbWFnZU1hc2suZGF0YS5sZW5ndGggfHwKICAgICAgICAgICAoaW1hZ2VNYXNrLmRhdGEubGVuZ3RoID09PSAxICYmIGltYWdlTWFzay5kYXRhWzBdID09PSAwKSkpIHsKICAgICAgICBmbkFycmF5W2lGaXJzdFBJTVhPICsgNCAqIGldID0gT1BTLnBhaW50U29saWRDb2xvckltYWdlTWFzazsKICAgICAgICBjb250aW51ZTsKICAgICAgfQogICAgICBicmVhazsKICAgIH0KICAgIHJldHVybiBjb3VudCAtIGk7CiAgfQoKICB2YXIgSW5pdGlhbFN0YXRlID0gW107CgogIC8vIFRoaXMgcmVwbGFjZXMgKHNhdmUsIHRyYW5zZm9ybSwgcGFpbnRJbmxpbmVJbWFnZVhPYmplY3QsIHJlc3RvcmUpKwogIC8vIHNlcXVlbmNlcyB3aXRoIG9uZSB8cGFpbnRJbmxpbmVJbWFnZVhPYmplY3RHcm91cHwgb3BlcmF0aW9uLgogIGFkZFN0YXRlKEluaXRpYWxTdGF0ZSwKICAgIFtPUFMuc2F2ZSwgT1BTLnRyYW5zZm9ybSwgT1BTLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0LCBPUFMucmVzdG9yZV0sCiAgICBmdW5jdGlvbiBmb3VuZElubGluZUltYWdlR3JvdXAoY29udGV4dCkgewogICAgICB2YXIgTUlOX0lNQUdFU19JTl9JTkxJTkVfSU1BR0VTX0JMT0NLID0gMTA7CiAgICAgIHZhciBNQVhfSU1BR0VTX0lOX0lOTElORV9JTUFHRVNfQkxPQ0sgPSAyMDA7CiAgICAgIHZhciBNQVhfV0lEVEggPSAxMDAwOwogICAgICB2YXIgSU1BR0VfUEFERElORyA9IDE7CgogICAgICB2YXIgZm5BcnJheSA9IGNvbnRleHQuZm5BcnJheSwgYXJnc0FycmF5ID0gY29udGV4dC5hcmdzQXJyYXk7CiAgICAgIHZhciBjdXJyID0gY29udGV4dC5pQ3VycjsKICAgICAgdmFyIGlGaXJzdFNhdmUgPSBjdXJyIC0gMzsKICAgICAgdmFyIGlGaXJzdFRyYW5zZm9ybSA9IGN1cnIgLSAyOwogICAgICB2YXIgaUZpcnN0UElJWE8gPSBjdXJyIC0gMTsKCiAgICAgIC8vIExvb2sgZm9yIHRoZSBxdWFydGV0cy4KICAgICAgdmFyIGkgPSBpRmlyc3RTYXZlICsgNDsKICAgICAgdmFyIGlpID0gZm5BcnJheS5sZW5ndGg7CiAgICAgIHdoaWxlIChpICsgMyA8IGlpKSB7CiAgICAgICAgaWYgKGZuQXJyYXlbaV0gIT09IE9QUy5zYXZlIHx8CiAgICAgICAgICAgIGZuQXJyYXlbaSArIDFdICE9PSBPUFMudHJhbnNmb3JtIHx8CiAgICAgICAgICAgIGZuQXJyYXlbaSArIDJdICE9PSBPUFMucGFpbnRJbmxpbmVJbWFnZVhPYmplY3QgfHwKICAgICAgICAgICAgZm5BcnJheVtpICsgM10gIT09IE9QUy5yZXN0b3JlKSB7CiAgICAgICAgICBicmVhazsgICAgLy8gb3BzIGRvbid0IG1hdGNoCiAgICAgICAgfQogICAgICAgIGkgKz0gNDsKICAgICAgfQoKICAgICAgLy8gQXQgdGhpcyBwb2ludCwgaSBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IG9wIHBhc3QgdGhlIGxhc3QgdmFsaWQKICAgICAgLy8gcXVhcnRldC4KICAgICAgdmFyIGNvdW50ID0gTWF0aC5taW4oKGkgLSBpRmlyc3RTYXZlKSAvIDQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BWF9JTUFHRVNfSU5fSU5MSU5FX0lNQUdFU19CTE9DSyk7CiAgICAgIGlmIChjb3VudCA8IE1JTl9JTUFHRVNfSU5fSU5MSU5FX0lNQUdFU19CTE9DSykgewogICAgICAgIHJldHVybiBpOwogICAgICB9CgogICAgICAvLyBhc3N1bWluZyB0aGF0IGhlaWdodHMgb2YgdGhvc2UgaW1hZ2UgaXMgdG9vIHNtYWxsICh+MSBwaXhlbCkKICAgICAgLy8gcGFja2luZyBhcyBtdWNoIGFzIHBvc3NpYmxlIGJ5IGxpbmVzCiAgICAgIHZhciBtYXhYID0gMDsKICAgICAgdmFyIG1hcCA9IFtdLCBtYXhMaW5lSGVpZ2h0ID0gMDsKICAgICAgdmFyIGN1cnJlbnRYID0gSU1BR0VfUEFERElORywgY3VycmVudFkgPSBJTUFHRV9QQURESU5HOwogICAgICB2YXIgcTsKICAgICAgZm9yIChxID0gMDsgcSA8IGNvdW50OyBxKyspIHsKICAgICAgICB2YXIgdHJhbnNmb3JtID0gYXJnc0FycmF5W2lGaXJzdFRyYW5zZm9ybSArIChxIDw8IDIpXTsKICAgICAgICB2YXIgaW1nID0gYXJnc0FycmF5W2lGaXJzdFBJSVhPICsgKHEgPDwgMildWzBdOwogICAgICAgIGlmIChjdXJyZW50WCArIGltZy53aWR0aCA+IE1BWF9XSURUSCkgewogICAgICAgICAgLy8gc3RhcnRpbmcgbmV3IGxpbmUKICAgICAgICAgIG1heFggPSBNYXRoLm1heChtYXhYLCBjdXJyZW50WCk7CiAgICAgICAgICBjdXJyZW50WSArPSBtYXhMaW5lSGVpZ2h0ICsgMiAqIElNQUdFX1BBRERJTkc7CiAgICAgICAgICBjdXJyZW50WCA9IDA7CiAgICAgICAgICBtYXhMaW5lSGVpZ2h0ID0gMDsKICAgICAgICB9CiAgICAgICAgbWFwLnB1c2goewogICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2Zvcm0sCiAgICAgICAgICB4OiBjdXJyZW50WCwgeTogY3VycmVudFksCiAgICAgICAgICB3OiBpbWcud2lkdGgsIGg6IGltZy5oZWlnaHQKICAgICAgICB9KTsKICAgICAgICBjdXJyZW50WCArPSBpbWcud2lkdGggKyAyICogSU1BR0VfUEFERElORzsKICAgICAgICBtYXhMaW5lSGVpZ2h0ID0gTWF0aC5tYXgobWF4TGluZUhlaWdodCwgaW1nLmhlaWdodCk7CiAgICAgIH0KICAgICAgdmFyIGltZ1dpZHRoID0gTWF0aC5tYXgobWF4WCwgY3VycmVudFgpICsgSU1BR0VfUEFERElORzsKICAgICAgdmFyIGltZ0hlaWdodCA9IGN1cnJlbnRZICsgbWF4TGluZUhlaWdodCArIElNQUdFX1BBRERJTkc7CiAgICAgIHZhciBpbWdEYXRhID0gbmV3IFVpbnQ4QXJyYXkoaW1nV2lkdGggKiBpbWdIZWlnaHQgKiA0KTsKICAgICAgdmFyIGltZ1Jvd1NpemUgPSBpbWdXaWR0aCA8PCAyOwogICAgICBmb3IgKHEgPSAwOyBxIDwgY291bnQ7IHErKykgewogICAgICAgIHZhciBkYXRhID0gYXJnc0FycmF5W2lGaXJzdFBJSVhPICsgKHEgPDwgMildWzBdLmRhdGE7CiAgICAgICAgLy8gQ29weSBpbWFnZSBieSBsaW5lcyBhbmQgZXh0ZW5kcyBwaXhlbHMgaW50byBwYWRkaW5nLgogICAgICAgIHZhciByb3dTaXplID0gbWFwW3FdLncgPDwgMjsKICAgICAgICB2YXIgZGF0YU9mZnNldCA9IDA7CiAgICAgICAgdmFyIG9mZnNldCA9IChtYXBbcV0ueCArIG1hcFtxXS55ICogaW1nV2lkdGgpIDw8IDI7CiAgICAgICAgaW1nRGF0YS5zZXQoZGF0YS5zdWJhcnJheSgwLCByb3dTaXplKSwgb2Zmc2V0IC0gaW1nUm93U2l6ZSk7CiAgICAgICAgZm9yICh2YXIgayA9IDAsIGtrID0gbWFwW3FdLmg7IGsgPCBrazsgaysrKSB7CiAgICAgICAgICBpbWdEYXRhLnNldChkYXRhLnN1YmFycmF5KGRhdGFPZmZzZXQsIGRhdGFPZmZzZXQgKyByb3dTaXplKSwgb2Zmc2V0KTsKICAgICAgICAgIGRhdGFPZmZzZXQgKz0gcm93U2l6ZTsKICAgICAgICAgIG9mZnNldCArPSBpbWdSb3dTaXplOwogICAgICAgIH0KICAgICAgICBpbWdEYXRhLnNldChkYXRhLnN1YmFycmF5KGRhdGFPZmZzZXQgLSByb3dTaXplLCBkYXRhT2Zmc2V0KSwgb2Zmc2V0KTsKICAgICAgICB3aGlsZSAob2Zmc2V0ID49IDApIHsKICAgICAgICAgIGRhdGFbb2Zmc2V0IC0gNF0gPSBkYXRhW29mZnNldF07CiAgICAgICAgICBkYXRhW29mZnNldCAtIDNdID0gZGF0YVtvZmZzZXQgKyAxXTsKICAgICAgICAgIGRhdGFbb2Zmc2V0IC0gMl0gPSBkYXRhW29mZnNldCArIDJdOwogICAgICAgICAgZGF0YVtvZmZzZXQgLSAxXSA9IGRhdGFbb2Zmc2V0ICsgM107CiAgICAgICAgICBkYXRhW29mZnNldCArIHJvd1NpemVdID0gZGF0YVtvZmZzZXQgKyByb3dTaXplIC0gNF07CiAgICAgICAgICBkYXRhW29mZnNldCArIHJvd1NpemUgKyAxXSA9IGRhdGFbb2Zmc2V0ICsgcm93U2l6ZSAtIDNdOwogICAgICAgICAgZGF0YVtvZmZzZXQgKyByb3dTaXplICsgMl0gPSBkYXRhW29mZnNldCArIHJvd1NpemUgLSAyXTsKICAgICAgICAgIGRhdGFbb2Zmc2V0ICsgcm93U2l6ZSArIDNdID0gZGF0YVtvZmZzZXQgKyByb3dTaXplIC0gMV07CiAgICAgICAgICBvZmZzZXQgLT0gaW1nUm93U2l6ZTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIFJlcGxhY2UgcXVldWUgaXRlbXMuCiAgICAgIGZuQXJyYXkuc3BsaWNlKGlGaXJzdFNhdmUsIGNvdW50ICogNCwgT1BTLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0R3JvdXApOwogICAgICBhcmdzQXJyYXkuc3BsaWNlKGlGaXJzdFNhdmUsIGNvdW50ICogNCwKICAgICAgICBbeyB3aWR0aDogaW1nV2lkdGgsIGhlaWdodDogaW1nSGVpZ2h0LCBraW5kOiBJbWFnZUtpbmQuUkdCQV8zMkJQUCwKICAgICAgICAgICBkYXRhOiBpbWdEYXRhIH0sIG1hcF0pOwoKICAgICAgcmV0dXJuIGlGaXJzdFNhdmUgKyAxOwogICAgfSk7CgogIC8vIFRoaXMgcmVwbGFjZXMgKHNhdmUsIHRyYW5zZm9ybSwgcGFpbnRJbWFnZU1hc2tYT2JqZWN0LCByZXN0b3JlKSsKICAvLyBzZXF1ZW5jZXMgd2l0aCBvbmUgfHBhaW50SW1hZ2VNYXNrWE9iamVjdEdyb3VwfCBvciBvbmUKICAvLyB8cGFpbnRJbWFnZU1hc2tYT2JqZWN0UmVwZWF0fCBvcGVyYXRpb24uCiAgYWRkU3RhdGUoSW5pdGlhbFN0YXRlLAogICAgW09QUy5zYXZlLCBPUFMudHJhbnNmb3JtLCBPUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0LCBPUFMucmVzdG9yZV0sCiAgICBmdW5jdGlvbiBmb3VuZEltYWdlTWFza0dyb3VwKGNvbnRleHQpIHsKICAgICAgdmFyIE1JTl9JTUFHRVNfSU5fTUFTS1NfQkxPQ0sgPSAxMDsKICAgICAgdmFyIE1BWF9JTUFHRVNfSU5fTUFTS1NfQkxPQ0sgPSAxMDA7CiAgICAgIHZhciBNQVhfU0FNRV9JTUFHRVNfSU5fTUFTS1NfQkxPQ0sgPSAxMDAwOwoKICAgICAgdmFyIGZuQXJyYXkgPSBjb250ZXh0LmZuQXJyYXksIGFyZ3NBcnJheSA9IGNvbnRleHQuYXJnc0FycmF5OwogICAgICB2YXIgY3VyciA9IGNvbnRleHQuaUN1cnI7CiAgICAgIHZhciBpRmlyc3RTYXZlID0gY3VyciAtIDM7CiAgICAgIHZhciBpRmlyc3RUcmFuc2Zvcm0gPSBjdXJyIC0gMjsKICAgICAgdmFyIGlGaXJzdFBJTVhPID0gY3VyciAtIDE7CgogICAgICAvLyBMb29rIGZvciB0aGUgcXVhcnRldHMuCiAgICAgIHZhciBpID0gaUZpcnN0U2F2ZSArIDQ7CiAgICAgIHZhciBpaSA9IGZuQXJyYXkubGVuZ3RoOwogICAgICB3aGlsZSAoaSArIDMgPCBpaSkgewogICAgICAgIGlmIChmbkFycmF5W2ldICE9PSBPUFMuc2F2ZSB8fAogICAgICAgICAgICBmbkFycmF5W2kgKyAxXSAhPT0gT1BTLnRyYW5zZm9ybSB8fAogICAgICAgICAgICBmbkFycmF5W2kgKyAyXSAhPT0gT1BTLnBhaW50SW1hZ2VNYXNrWE9iamVjdCB8fAogICAgICAgICAgICBmbkFycmF5W2kgKyAzXSAhPT0gT1BTLnJlc3RvcmUpIHsKICAgICAgICAgIGJyZWFrOyAgICAvLyBvcHMgZG9uJ3QgbWF0Y2gKICAgICAgICB9CiAgICAgICAgaSArPSA0OwogICAgICB9CgogICAgICAvLyBBdCB0aGlzIHBvaW50LCBpIGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgb3AgcGFzdCB0aGUgbGFzdCB2YWxpZAogICAgICAvLyBxdWFydGV0LgogICAgICB2YXIgY291bnQgPSAoaSAtIGlGaXJzdFNhdmUpIC8gNDsKICAgICAgY291bnQgPSBoYW5kbGVQYWludFNvbGlkQ29sb3JJbWFnZU1hc2soaUZpcnN0U2F2ZSwgY291bnQsIGZuQXJyYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3NBcnJheSk7CiAgICAgIGlmIChjb3VudCA8IE1JTl9JTUFHRVNfSU5fTUFTS1NfQkxPQ0spIHsKICAgICAgICByZXR1cm4gaTsKICAgICAgfQoKICAgICAgdmFyIHE7CiAgICAgIHZhciBpc1NhbWVJbWFnZSA9IGZhbHNlOwogICAgICB2YXIgaVRyYW5zZm9ybSwgdHJhbnNmb3JtQXJnczsKICAgICAgdmFyIGZpcnN0UElNWE9BcmcwID0gYXJnc0FycmF5W2lGaXJzdFBJTVhPXVswXTsKICAgICAgaWYgKGFyZ3NBcnJheVtpRmlyc3RUcmFuc2Zvcm1dWzFdID09PSAwICYmCiAgICAgICAgICBhcmdzQXJyYXlbaUZpcnN0VHJhbnNmb3JtXVsyXSA9PT0gMCkgewogICAgICAgIGlzU2FtZUltYWdlID0gdHJ1ZTsKICAgICAgICB2YXIgZmlyc3RUcmFuc2Zvcm1BcmcwID0gYXJnc0FycmF5W2lGaXJzdFRyYW5zZm9ybV1bMF07CiAgICAgICAgdmFyIGZpcnN0VHJhbnNmb3JtQXJnMyA9IGFyZ3NBcnJheVtpRmlyc3RUcmFuc2Zvcm1dWzNdOwogICAgICAgIGlUcmFuc2Zvcm0gPSBpRmlyc3RUcmFuc2Zvcm0gKyA0OwogICAgICAgIHZhciBpUElNWE8gPSBpRmlyc3RQSU1YTyArIDQ7CiAgICAgICAgZm9yIChxID0gMTsgcSA8IGNvdW50OyBxKyssIGlUcmFuc2Zvcm0gKz0gNCwgaVBJTVhPICs9IDQpIHsKICAgICAgICAgIHRyYW5zZm9ybUFyZ3MgPSBhcmdzQXJyYXlbaVRyYW5zZm9ybV07CiAgICAgICAgICBpZiAoYXJnc0FycmF5W2lQSU1YT11bMF0gIT09IGZpcnN0UElNWE9BcmcwIHx8CiAgICAgICAgICAgICAgdHJhbnNmb3JtQXJnc1swXSAhPT0gZmlyc3RUcmFuc2Zvcm1BcmcwIHx8CiAgICAgICAgICAgICAgdHJhbnNmb3JtQXJnc1sxXSAhPT0gMCB8fAogICAgICAgICAgICAgIHRyYW5zZm9ybUFyZ3NbMl0gIT09IDAgfHwKICAgICAgICAgICAgICB0cmFuc2Zvcm1BcmdzWzNdICE9PSBmaXJzdFRyYW5zZm9ybUFyZzMpIHsKICAgICAgICAgICAgaWYgKHEgPCBNSU5fSU1BR0VTX0lOX01BU0tTX0JMT0NLKSB7CiAgICAgICAgICAgICAgaXNTYW1lSW1hZ2UgPSBmYWxzZTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBjb3VudCA9IHE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7IC8vIGRpZmZlcmVudCBpbWFnZSBvciB0cmFuc2Zvcm0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KCiAgICAgIGlmIChpc1NhbWVJbWFnZSkgewogICAgICAgIGNvdW50ID0gTWF0aC5taW4oY291bnQsIE1BWF9TQU1FX0lNQUdFU19JTl9NQVNLU19CTE9DSyk7CiAgICAgICAgdmFyIHBvc2l0aW9ucyA9IG5ldyBGbG9hdDMyQXJyYXkoY291bnQgKiAyKTsKICAgICAgICBpVHJhbnNmb3JtID0gaUZpcnN0VHJhbnNmb3JtOwogICAgICAgIGZvciAocSA9IDA7IHEgPCBjb3VudDsgcSsrLCBpVHJhbnNmb3JtICs9IDQpIHsKICAgICAgICAgIHRyYW5zZm9ybUFyZ3MgPSBhcmdzQXJyYXlbaVRyYW5zZm9ybV07CiAgICAgICAgICBwb3NpdGlvbnNbKHEgPDwgMSldID0gdHJhbnNmb3JtQXJnc1s0XTsKICAgICAgICAgIHBvc2l0aW9uc1socSA8PCAxKSArIDFdID0gdHJhbnNmb3JtQXJnc1s1XTsKICAgICAgICB9CgogICAgICAgIC8vIFJlcGxhY2UgcXVldWUgaXRlbXMuCiAgICAgICAgZm5BcnJheS5zcGxpY2UoaUZpcnN0U2F2ZSwgY291bnQgKiA0LCBPUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0UmVwZWF0KTsKICAgICAgICBhcmdzQXJyYXkuc3BsaWNlKGlGaXJzdFNhdmUsIGNvdW50ICogNCwKICAgICAgICAgIFtmaXJzdFBJTVhPQXJnMCwgZmlyc3RUcmFuc2Zvcm1BcmcwLCBmaXJzdFRyYW5zZm9ybUFyZzMsIHBvc2l0aW9uc10pOwogICAgICB9IGVsc2UgewogICAgICAgIGNvdW50ID0gTWF0aC5taW4oY291bnQsIE1BWF9JTUFHRVNfSU5fTUFTS1NfQkxPQ0spOwogICAgICAgIHZhciBpbWFnZXMgPSBbXTsKICAgICAgICBmb3IgKHEgPSAwOyBxIDwgY291bnQ7IHErKykgewogICAgICAgICAgdHJhbnNmb3JtQXJncyA9IGFyZ3NBcnJheVtpRmlyc3RUcmFuc2Zvcm0gKyAocSA8PCAyKV07CiAgICAgICAgICB2YXIgbWFza1BhcmFtcyA9IGFyZ3NBcnJheVtpRmlyc3RQSU1YTyArIChxIDw8IDIpXVswXTsKICAgICAgICAgIGltYWdlcy5wdXNoKHsgZGF0YTogbWFza1BhcmFtcy5kYXRhLCB3aWR0aDogbWFza1BhcmFtcy53aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBtYXNrUGFyYW1zLmhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2Zvcm1BcmdzIH0pOwogICAgICAgIH0KCiAgICAgICAgLy8gUmVwbGFjZSBxdWV1ZSBpdGVtcy4KICAgICAgICBmbkFycmF5LnNwbGljZShpRmlyc3RTYXZlLCBjb3VudCAqIDQsIE9QUy5wYWludEltYWdlTWFza1hPYmplY3RHcm91cCk7CiAgICAgICAgYXJnc0FycmF5LnNwbGljZShpRmlyc3RTYXZlLCBjb3VudCAqIDQsIFtpbWFnZXNdKTsKICAgICAgfQoKICAgICAgcmV0dXJuIGlGaXJzdFNhdmUgKyAxOwogICAgfSk7CgogIC8vIFRoaXMgcmVwbGFjZXMgKHNhdmUsIHRyYW5zZm9ybSwgcGFpbnRJbWFnZVhPYmplY3QsIHJlc3RvcmUpKyBzZXF1ZW5jZXMKICAvLyB3aXRoIG9uZSBwYWludEltYWdlWE9iamVjdFJlcGVhdCBvcGVyYXRpb24sIGlmIHRoZSB8dHJhbnNmb3JtfCBhbmQKICAvLyB8cGFpbnRJbWFnZVhPYmplY3RSZXBlYXR8IG9wcyBhcmUgYXBwcm9wcmlhdGUuCiAgYWRkU3RhdGUoSW5pdGlhbFN0YXRlLAogICAgW09QUy5zYXZlLCBPUFMudHJhbnNmb3JtLCBPUFMucGFpbnRJbWFnZVhPYmplY3QsIE9QUy5yZXN0b3JlXSwKICAgIGZ1bmN0aW9uIChjb250ZXh0KSB7CiAgICAgIHZhciBNSU5fSU1BR0VTX0lOX0JMT0NLID0gMzsKICAgICAgdmFyIE1BWF9JTUFHRVNfSU5fQkxPQ0sgPSAxMDAwOwoKICAgICAgdmFyIGZuQXJyYXkgPSBjb250ZXh0LmZuQXJyYXksIGFyZ3NBcnJheSA9IGNvbnRleHQuYXJnc0FycmF5OwogICAgICB2YXIgY3VyciA9IGNvbnRleHQuaUN1cnI7CiAgICAgIHZhciBpRmlyc3RTYXZlID0gY3VyciAtIDM7CiAgICAgIHZhciBpRmlyc3RUcmFuc2Zvcm0gPSBjdXJyIC0gMjsKICAgICAgdmFyIGlGaXJzdFBJWE8gPSBjdXJyIC0gMTsKICAgICAgdmFyIGlGaXJzdFJlc3RvcmUgPSBjdXJyOwoKICAgICAgaWYgKGFyZ3NBcnJheVtpRmlyc3RUcmFuc2Zvcm1dWzFdICE9PSAwIHx8CiAgICAgICAgICBhcmdzQXJyYXlbaUZpcnN0VHJhbnNmb3JtXVsyXSAhPT0gMCkgewogICAgICAgIHJldHVybiBpRmlyc3RSZXN0b3JlICsgMTsgICAvLyB0cmFuc2Zvcm0gaGFzIHRoZSB3cm9uZyBmb3JtCiAgICAgIH0KCiAgICAgIC8vIExvb2sgZm9yIHRoZSBxdWFydGV0cy4KICAgICAgdmFyIGZpcnN0UElYT0FyZzAgPSBhcmdzQXJyYXlbaUZpcnN0UElYT11bMF07CiAgICAgIHZhciBmaXJzdFRyYW5zZm9ybUFyZzAgPSBhcmdzQXJyYXlbaUZpcnN0VHJhbnNmb3JtXVswXTsKICAgICAgdmFyIGZpcnN0VHJhbnNmb3JtQXJnMyA9IGFyZ3NBcnJheVtpRmlyc3RUcmFuc2Zvcm1dWzNdOwogICAgICB2YXIgaSA9IGlGaXJzdFNhdmUgKyA0OwogICAgICB2YXIgaWkgPSBmbkFycmF5Lmxlbmd0aDsKICAgICAgd2hpbGUgKGkgKyAzIDwgaWkpIHsKICAgICAgICBpZiAoZm5BcnJheVtpXSAhPT0gT1BTLnNhdmUgfHwKICAgICAgICAgICAgZm5BcnJheVtpICsgMV0gIT09IE9QUy50cmFuc2Zvcm0gfHwKICAgICAgICAgICAgZm5BcnJheVtpICsgMl0gIT09IE9QUy5wYWludEltYWdlWE9iamVjdCB8fAogICAgICAgICAgICBmbkFycmF5W2kgKyAzXSAhPT0gT1BTLnJlc3RvcmUpIHsKICAgICAgICAgIGJyZWFrOyAgICAvLyBvcHMgZG9uJ3QgbWF0Y2gKICAgICAgICB9CiAgICAgICAgaWYgKGFyZ3NBcnJheVtpICsgMV1bMF0gIT09IGZpcnN0VHJhbnNmb3JtQXJnMCB8fAogICAgICAgICAgICBhcmdzQXJyYXlbaSArIDFdWzFdICE9PSAwIHx8CiAgICAgICAgICAgIGFyZ3NBcnJheVtpICsgMV1bMl0gIT09IDAgfHwKICAgICAgICAgICAgYXJnc0FycmF5W2kgKyAxXVszXSAhPT0gZmlyc3RUcmFuc2Zvcm1BcmczKSB7CiAgICAgICAgICBicmVhazsgICAgLy8gdHJhbnNmb3JtcyBkb24ndCBtYXRjaAogICAgICAgIH0KICAgICAgICBpZiAoYXJnc0FycmF5W2kgKyAyXVswXSAhPT0gZmlyc3RQSVhPQXJnMCkgewogICAgICAgICAgYnJlYWs7ICAgIC8vIGltYWdlcyBkb24ndCBtYXRjaAogICAgICAgIH0KICAgICAgICBpICs9IDQ7CiAgICAgIH0KCiAgICAgIC8vIEF0IHRoaXMgcG9pbnQsIGkgaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBvcCBwYXN0IHRoZSBsYXN0IHZhbGlkCiAgICAgIC8vIHF1YXJ0ZXQuCiAgICAgIHZhciBjb3VudCA9IE1hdGgubWluKChpIC0gaUZpcnN0U2F2ZSkgLyA0LCBNQVhfSU1BR0VTX0lOX0JMT0NLKTsKICAgICAgaWYgKGNvdW50IDwgTUlOX0lNQUdFU19JTl9CTE9DSykgewogICAgICAgIHJldHVybiBpOwogICAgICB9CgogICAgICAvLyBFeHRyYWN0IHRoZSAoeCx5KSBwb3NpdGlvbnMgZnJvbSBhbGwgb2YgdGhlIG1hdGNoaW5nIHRyYW5zZm9ybXMuCiAgICAgIHZhciBwb3NpdGlvbnMgPSBuZXcgRmxvYXQzMkFycmF5KGNvdW50ICogMik7CiAgICAgIHZhciBpVHJhbnNmb3JtID0gaUZpcnN0VHJhbnNmb3JtOwogICAgICBmb3IgKHZhciBxID0gMDsgcSA8IGNvdW50OyBxKyssIGlUcmFuc2Zvcm0gKz0gNCkgewogICAgICAgIHZhciB0cmFuc2Zvcm1BcmdzID0gYXJnc0FycmF5W2lUcmFuc2Zvcm1dOwogICAgICAgIHBvc2l0aW9uc1socSA8PCAxKV0gPSB0cmFuc2Zvcm1BcmdzWzRdOwogICAgICAgIHBvc2l0aW9uc1socSA8PCAxKSArIDFdID0gdHJhbnNmb3JtQXJnc1s1XTsKICAgICAgfQoKICAgICAgLy8gUmVwbGFjZSBxdWV1ZSBpdGVtcy4KICAgICAgdmFyIGFyZ3MgPSBbZmlyc3RQSVhPQXJnMCwgZmlyc3RUcmFuc2Zvcm1BcmcwLCBmaXJzdFRyYW5zZm9ybUFyZzMsCiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uc107CiAgICAgIGZuQXJyYXkuc3BsaWNlKGlGaXJzdFNhdmUsIGNvdW50ICogNCwgT1BTLnBhaW50SW1hZ2VYT2JqZWN0UmVwZWF0KTsKICAgICAgYXJnc0FycmF5LnNwbGljZShpRmlyc3RTYXZlLCBjb3VudCAqIDQsIGFyZ3MpOwoKICAgICAgcmV0dXJuIGlGaXJzdFNhdmUgKyAxOwogICAgfSk7CgogIC8vIFRoaXMgcmVwbGFjZXMgKGJlZ2luVGV4dCwgc2V0Rm9udCwgc2V0VGV4dE1hdHJpeCwgc2hvd1RleHQsIGVuZFRleHQpKwogIC8vIHNlcXVlbmNlcyB3aXRoIChiZWdpblRleHQsIHNldEZvbnQsIChzZXRUZXh0TWF0cml4LCBzaG93VGV4dCkrLCBlbmRUZXh0KSsKICAvLyBzZXF1ZW5jZXMsIGlmIHRoZSBmb250IGZvciBlYWNoIG9uZSBpcyB0aGUgc2FtZS4KICBhZGRTdGF0ZShJbml0aWFsU3RhdGUsCiAgICBbT1BTLmJlZ2luVGV4dCwgT1BTLnNldEZvbnQsIE9QUy5zZXRUZXh0TWF0cml4LCBPUFMuc2hvd1RleHQsIE9QUy5lbmRUZXh0XSwKICAgIGZ1bmN0aW9uIChjb250ZXh0KSB7CiAgICAgIHZhciBNSU5fQ0hBUlNfSU5fQkxPQ0sgPSAzOwogICAgICB2YXIgTUFYX0NIQVJTX0lOX0JMT0NLID0gMTAwMDsKCiAgICAgIHZhciBmbkFycmF5ID0gY29udGV4dC5mbkFycmF5LCBhcmdzQXJyYXkgPSBjb250ZXh0LmFyZ3NBcnJheTsKICAgICAgdmFyIGN1cnIgPSBjb250ZXh0LmlDdXJyOwogICAgICB2YXIgaUZpcnN0QmVnaW5UZXh0ID0gY3VyciAtIDQ7CiAgICAgIHZhciBpRmlyc3RTZXRGb250ID0gY3VyciAtIDM7CiAgICAgIHZhciBpRmlyc3RTZXRUZXh0TWF0cml4ID0gY3VyciAtIDI7CiAgICAgIHZhciBpRmlyc3RTaG93VGV4dCA9IGN1cnIgLSAxOwogICAgICB2YXIgaUZpcnN0RW5kVGV4dCA9IGN1cnI7CgogICAgICAvLyBMb29rIGZvciB0aGUgcXVpbnRldHMuCiAgICAgIHZhciBmaXJzdFNldEZvbnRBcmcwID0gYXJnc0FycmF5W2lGaXJzdFNldEZvbnRdWzBdOwogICAgICB2YXIgZmlyc3RTZXRGb250QXJnMSA9IGFyZ3NBcnJheVtpRmlyc3RTZXRGb250XVsxXTsKICAgICAgdmFyIGkgPSBpRmlyc3RCZWdpblRleHQgKyA1OwogICAgICB2YXIgaWkgPSBmbkFycmF5Lmxlbmd0aDsKICAgICAgd2hpbGUgKGkgKyA0IDwgaWkpIHsKICAgICAgICBpZiAoZm5BcnJheVtpXSAhPT0gT1BTLmJlZ2luVGV4dCB8fAogICAgICAgICAgICBmbkFycmF5W2kgKyAxXSAhPT0gT1BTLnNldEZvbnQgfHwKICAgICAgICAgICAgZm5BcnJheVtpICsgMl0gIT09IE9QUy5zZXRUZXh0TWF0cml4IHx8CiAgICAgICAgICAgIGZuQXJyYXlbaSArIDNdICE9PSBPUFMuc2hvd1RleHQgfHwKICAgICAgICAgICAgZm5BcnJheVtpICsgNF0gIT09IE9QUy5lbmRUZXh0KSB7CiAgICAgICAgICBicmVhazsgICAgLy8gb3BzIGRvbid0IG1hdGNoCiAgICAgICAgfQogICAgICAgIGlmIChhcmdzQXJyYXlbaSArIDFdWzBdICE9PSBmaXJzdFNldEZvbnRBcmcwIHx8CiAgICAgICAgICAgIGFyZ3NBcnJheVtpICsgMV1bMV0gIT09IGZpcnN0U2V0Rm9udEFyZzEpIHsKICAgICAgICAgIGJyZWFrOyAgICAvLyBmb250cyBkb24ndCBtYXRjaAogICAgICAgIH0KICAgICAgICBpICs9IDU7CiAgICAgIH0KCiAgICAgIC8vIEF0IHRoaXMgcG9pbnQsIGkgaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBvcCBwYXN0IHRoZSBsYXN0IHZhbGlkCiAgICAgIC8vIHF1aW50ZXQuCiAgICAgIHZhciBjb3VudCA9IE1hdGgubWluKCgoaSAtIGlGaXJzdEJlZ2luVGV4dCkgLyA1KSwgTUFYX0NIQVJTX0lOX0JMT0NLKTsKICAgICAgaWYgKGNvdW50IDwgTUlOX0NIQVJTX0lOX0JMT0NLKSB7CiAgICAgICAgcmV0dXJuIGk7CiAgICAgIH0KCiAgICAgIC8vIElmIHRoZSBwcmVjZWRpbmcgcXVpbnRldCBpcyAoPHNvbWV0aGluZz4sIHNldEZvbnQsIHNldFRleHRNYXRyaXgsCiAgICAgIC8vIHNob3dUZXh0LCBlbmRUZXh0KSwgaW5jbHVkZSB0aGF0IGFzIHdlbGwuIChFLmcuIDxzb21ldGhpbmc+IG1pZ2h0IGJlCiAgICAgIC8vIHxkZXBlbmRlbmN5fC4pCiAgICAgIHZhciBpRmlyc3QgPSBpRmlyc3RCZWdpblRleHQ7CiAgICAgIGlmIChpRmlyc3RCZWdpblRleHQgPj0gNCAmJgogICAgICAgICAgZm5BcnJheVtpRmlyc3RCZWdpblRleHQgLSA0XSA9PT0gZm5BcnJheVtpRmlyc3RTZXRGb250XSAmJgogICAgICAgICAgZm5BcnJheVtpRmlyc3RCZWdpblRleHQgLSAzXSA9PT0gZm5BcnJheVtpRmlyc3RTZXRUZXh0TWF0cml4XSAmJgogICAgICAgICAgZm5BcnJheVtpRmlyc3RCZWdpblRleHQgLSAyXSA9PT0gZm5BcnJheVtpRmlyc3RTaG93VGV4dF0gJiYKICAgICAgICAgIGZuQXJyYXlbaUZpcnN0QmVnaW5UZXh0IC0gMV0gPT09IGZuQXJyYXlbaUZpcnN0RW5kVGV4dF0gJiYKICAgICAgICAgIGFyZ3NBcnJheVtpRmlyc3RCZWdpblRleHQgLSA0XVswXSA9PT0gZmlyc3RTZXRGb250QXJnMCAmJgogICAgICAgICAgYXJnc0FycmF5W2lGaXJzdEJlZ2luVGV4dCAtIDRdWzFdID09PSBmaXJzdFNldEZvbnRBcmcxKSB7CiAgICAgICAgY291bnQrKzsKICAgICAgICBpRmlyc3QgLT0gNTsKICAgICAgfQoKICAgICAgLy8gUmVtb3ZlIChlbmRUZXh0LCBiZWdpblRleHQsIHNldEZvbnQpIHRyaW9zLgogICAgICB2YXIgaUVuZFRleHQgPSBpRmlyc3QgKyA0OwogICAgICBmb3IgKHZhciBxID0gMTsgcSA8IGNvdW50OyBxKyspIHsKICAgICAgICBmbkFycmF5LnNwbGljZShpRW5kVGV4dCwgMyk7CiAgICAgICAgYXJnc0FycmF5LnNwbGljZShpRW5kVGV4dCwgMyk7CiAgICAgICAgaUVuZFRleHQgKz0gMjsKICAgICAgfQoKICAgICAgcmV0dXJuIGlFbmRUZXh0ICsgMTsKICAgIH0pOwoKICBmdW5jdGlvbiBRdWV1ZU9wdGltaXplcigpIHt9CgogIFF1ZXVlT3B0aW1pemVyLnByb3RvdHlwZSA9IHsKICAgIG9wdGltaXplOiBmdW5jdGlvbiBRdWV1ZU9wdGltaXplcl9vcHRpbWl6ZShxdWV1ZSkgewogICAgICB2YXIgZm5BcnJheSA9IHF1ZXVlLmZuQXJyYXksIGFyZ3NBcnJheSA9IHF1ZXVlLmFyZ3NBcnJheTsKICAgICAgdmFyIGNvbnRleHQgPSB7CiAgICAgICAgaUN1cnI6IDAsCiAgICAgICAgZm5BcnJheTogZm5BcnJheSwKICAgICAgICBhcmdzQXJyYXk6IGFyZ3NBcnJheQogICAgICB9OwogICAgICB2YXIgc3RhdGU7CiAgICAgIHZhciBpID0gMCwgaWkgPSBmbkFycmF5Lmxlbmd0aDsKICAgICAgd2hpbGUgKGkgPCBpaSkgewogICAgICAgIHN0YXRlID0gKHN0YXRlIHx8IEluaXRpYWxTdGF0ZSlbZm5BcnJheVtpXV07CiAgICAgICAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gJ2Z1bmN0aW9uJykgeyAvLyB3ZSBmb3VuZCBzb21lIGhhbmRsZXIKICAgICAgICAgIGNvbnRleHQuaUN1cnIgPSBpOwogICAgICAgICAgLy8gc3RhdGUoKSByZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgbm9uLW1hdGNoaW5nIG9wIChpZiB3ZQogICAgICAgICAgLy8gZGlkbid0IG1hdGNoKSBvciB0aGUgZmlyc3Qgb3AgcGFzdCB0aGUgbW9kaWZpZWQgb3BzIChpZiB3ZSBkaWQKICAgICAgICAgIC8vIG1hdGNoIGFuZCByZXBsYWNlKS4KICAgICAgICAgIGkgPSBzdGF0ZShjb250ZXh0KTsKICAgICAgICAgIHN0YXRlID0gdW5kZWZpbmVkOyAgICAvLyByZXNldCB0aGUgc3RhdGUgbWFjaGluZQogICAgICAgICAgaWkgPSBjb250ZXh0LmZuQXJyYXkubGVuZ3RoOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBpKys7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfTsKICByZXR1cm4gUXVldWVPcHRpbWl6ZXI7Cn0pKCk7CgoKdmFyIEJVSUxUX0lOX0NNQVBTID0gWwovLyA8PCBTdGFydCB1bmljb2RlIG1hcHMuCidBZG9iZS1HQjEtVUNTMicsCidBZG9iZS1DTlMxLVVDUzInLAonQWRvYmUtSmFwYW4xLVVDUzInLAonQWRvYmUtS29yZWExLVVDUzInLAovLyA+PiBFbmQgdW5pY29kZSBtYXBzLgonNzgtRVVDLUgnLAonNzgtRVVDLVYnLAonNzgtSCcsCic3OC1SS1NKLUgnLAonNzgtUktTSi1WJywKJzc4LVYnLAonNzhtcy1SS1NKLUgnLAonNzhtcy1SS1NKLVYnLAonODNwdi1SS1NKLUgnLAonOTBtcy1SS1NKLUgnLAonOTBtcy1SS1NKLVYnLAonOTBtc3AtUktTSi1IJywKJzkwbXNwLVJLU0otVicsCic5MHB2LVJLU0otSCcsCic5MHB2LVJLU0otVicsCidBZGQtSCcsCidBZGQtUktTSi1IJywKJ0FkZC1SS1NKLVYnLAonQWRkLVYnLAonQWRvYmUtQ05TMS0wJywKJ0Fkb2JlLUNOUzEtMScsCidBZG9iZS1DTlMxLTInLAonQWRvYmUtQ05TMS0zJywKJ0Fkb2JlLUNOUzEtNCcsCidBZG9iZS1DTlMxLTUnLAonQWRvYmUtQ05TMS02JywKJ0Fkb2JlLUdCMS0wJywKJ0Fkb2JlLUdCMS0xJywKJ0Fkb2JlLUdCMS0yJywKJ0Fkb2JlLUdCMS0zJywKJ0Fkb2JlLUdCMS00JywKJ0Fkb2JlLUdCMS01JywKJ0Fkb2JlLUphcGFuMS0wJywKJ0Fkb2JlLUphcGFuMS0xJywKJ0Fkb2JlLUphcGFuMS0yJywKJ0Fkb2JlLUphcGFuMS0zJywKJ0Fkb2JlLUphcGFuMS00JywKJ0Fkb2JlLUphcGFuMS01JywKJ0Fkb2JlLUphcGFuMS02JywKJ0Fkb2JlLUtvcmVhMS0wJywKJ0Fkb2JlLUtvcmVhMS0xJywKJ0Fkb2JlLUtvcmVhMS0yJywKJ0I1LUgnLAonQjUtVicsCidCNXBjLUgnLAonQjVwYy1WJywKJ0NOUy1FVUMtSCcsCidDTlMtRVVDLVYnLAonQ05TMS1IJywKJ0NOUzEtVicsCidDTlMyLUgnLAonQ05TMi1WJywKJ0VUSEstQjUtSCcsCidFVEhLLUI1LVYnLAonRVRlbi1CNS1IJywKJ0VUZW4tQjUtVicsCidFVGVubXMtQjUtSCcsCidFVGVubXMtQjUtVicsCidFVUMtSCcsCidFVUMtVicsCidFeHQtSCcsCidFeHQtUktTSi1IJywKJ0V4dC1SS1NKLVYnLAonRXh0LVYnLAonR0ItRVVDLUgnLAonR0ItRVVDLVYnLAonR0ItSCcsCidHQi1WJywKJ0dCSy1FVUMtSCcsCidHQkstRVVDLVYnLAonR0JLMkstSCcsCidHQksySy1WJywKJ0dCS3AtRVVDLUgnLAonR0JLcC1FVUMtVicsCidHQlQtRVVDLUgnLAonR0JULUVVQy1WJywKJ0dCVC1IJywKJ0dCVC1WJywKJ0dCVHBjLUVVQy1IJywKJ0dCVHBjLUVVQy1WJywKJ0dCcGMtRVVDLUgnLAonR0JwYy1FVUMtVicsCidIJywKJ0hLZGxhLUI1LUgnLAonSEtkbGEtQjUtVicsCidIS2RsYi1CNS1IJywKJ0hLZGxiLUI1LVYnLAonSEtnY2NzLUI1LUgnLAonSEtnY2NzLUI1LVYnLAonSEttMzE0LUI1LUgnLAonSEttMzE0LUI1LVYnLAonSEttNDcxLUI1LUgnLAonSEttNDcxLUI1LVYnLAonSEtzY3MtQjUtSCcsCidIS3Njcy1CNS1WJywKJ0hhbmtha3UnLAonSGlyYWdhbmEnLAonS1NDLUVVQy1IJywKJ0tTQy1FVUMtVicsCidLU0MtSCcsCidLU0MtSm9oYWItSCcsCidLU0MtSm9oYWItVicsCidLU0MtVicsCidLU0Ntcy1VSEMtSCcsCidLU0Ntcy1VSEMtSFctSCcsCidLU0Ntcy1VSEMtSFctVicsCidLU0Ntcy1VSEMtVicsCidLU0NwYy1FVUMtSCcsCidLU0NwYy1FVUMtVicsCidLYXRha2FuYScsCidOV1AtSCcsCidOV1AtVicsCidSS1NKLUgnLAonUktTSi1WJywKJ1JvbWFuJywKJ1VuaUNOUy1VQ1MyLUgnLAonVW5pQ05TLVVDUzItVicsCidVbmlDTlMtVVRGMTYtSCcsCidVbmlDTlMtVVRGMTYtVicsCidVbmlDTlMtVVRGMzItSCcsCidVbmlDTlMtVVRGMzItVicsCidVbmlDTlMtVVRGOC1IJywKJ1VuaUNOUy1VVEY4LVYnLAonVW5pR0ItVUNTMi1IJywKJ1VuaUdCLVVDUzItVicsCidVbmlHQi1VVEYxNi1IJywKJ1VuaUdCLVVURjE2LVYnLAonVW5pR0ItVVRGMzItSCcsCidVbmlHQi1VVEYzMi1WJywKJ1VuaUdCLVVURjgtSCcsCidVbmlHQi1VVEY4LVYnLAonVW5pSklTLVVDUzItSCcsCidVbmlKSVMtVUNTMi1IVy1IJywKJ1VuaUpJUy1VQ1MyLUhXLVYnLAonVW5pSklTLVVDUzItVicsCidVbmlKSVMtVVRGMTYtSCcsCidVbmlKSVMtVVRGMTYtVicsCidVbmlKSVMtVVRGMzItSCcsCidVbmlKSVMtVVRGMzItVicsCidVbmlKSVMtVVRGOC1IJywKJ1VuaUpJUy1VVEY4LVYnLAonVW5pSklTMjAwNC1VVEYxNi1IJywKJ1VuaUpJUzIwMDQtVVRGMTYtVicsCidVbmlKSVMyMDA0LVVURjMyLUgnLAonVW5pSklTMjAwNC1VVEYzMi1WJywKJ1VuaUpJUzIwMDQtVVRGOC1IJywKJ1VuaUpJUzIwMDQtVVRGOC1WJywKJ1VuaUpJU1Byby1VQ1MyLUhXLVYnLAonVW5pSklTUHJvLVVDUzItVicsCidVbmlKSVNQcm8tVVRGOC1WJywKJ1VuaUpJU1gwMjEzLVVURjMyLUgnLAonVW5pSklTWDAyMTMtVVRGMzItVicsCidVbmlKSVNYMDIxMzIwMDQtVVRGMzItSCcsCidVbmlKSVNYMDIxMzIwMDQtVVRGMzItVicsCidVbmlLUy1VQ1MyLUgnLAonVW5pS1MtVUNTMi1WJywKJ1VuaUtTLVVURjE2LUgnLAonVW5pS1MtVVRGMTYtVicsCidVbmlLUy1VVEYzMi1IJywKJ1VuaUtTLVVURjMyLVYnLAonVW5pS1MtVVRGOC1IJywKJ1VuaUtTLVVURjgtVicsCidWJywKJ1dQLVN5bWJvbCddOwoKLy8gQ01hcCwgbm90IHRvIGJlIGNvbmZ1c2VkIHdpdGggVHJ1ZVR5cGUncyBjbWFwLgp2YXIgQ01hcCA9IChmdW5jdGlvbiBDTWFwQ2xvc3VyZSgpIHsKICBmdW5jdGlvbiBDTWFwKGJ1aWx0SW5DTWFwKSB7CiAgICAvLyBDb2Rlc3BhY2UgcmFuZ2VzIGFyZSBzdG9yZWQgYXMgZm9sbG93czoKICAgIC8vIFtbMUJ5dGVQYWlyc10sIFsyQnl0ZVBhaXJzXSwgWzNCeXRlUGFpcnNdLCBbNEJ5dGVQYWlyc11dCiAgICAvLyB3aGVyZSBuQnl0ZVBhaXJzIGFyZSByYW5nZXMgZS5nLiBbbG93MSwgaGlnaDEsIGxvdzIsIGhpZ2gyLCAuLi5dCiAgICB0aGlzLmNvZGVzcGFjZVJhbmdlcyA9IFtbXSwgW10sIFtdLCBbXV07CiAgICB0aGlzLm51bUNvZGVzcGFjZVJhbmdlcyA9IDA7CiAgICAvLyBNYXAgZW50cmllcyBoYXZlIG9uZSBvZiB0d28gZm9ybXMuCiAgICAvLyAtIGNpZCBjaGFycyBhcmUgMTYtYml0IHVuc2lnbmVkIGludGVnZXJzLCBzdG9yZWQgYXMgaW50ZWdlcnMuCiAgICAvLyAtIGJmIGNoYXJzIGFyZSB2YXJpYWJsZS1sZW5ndGggYnl0ZSBzZXF1ZW5jZXMsIHN0b3JlZCBhcyBzdHJpbmdzLCB3aXRoCiAgICAvLyAgIG9uZSBieXRlIHBlciBjaGFyYWN0ZXIuCiAgICB0aGlzLl9tYXAgPSBbXTsKICAgIHRoaXMubmFtZSA9ICcnOwogICAgdGhpcy52ZXJ0aWNhbCA9IGZhbHNlOwogICAgdGhpcy51c2VDTWFwID0gbnVsbDsKICAgIHRoaXMuYnVpbHRJbkNNYXAgPSBidWlsdEluQ01hcDsKICB9CiAgQ01hcC5wcm90b3R5cGUgPSB7CiAgICBhZGRDb2Rlc3BhY2VSYW5nZTogZnVuY3Rpb24obiwgbG93LCBoaWdoKSB7CiAgICAgIHRoaXMuY29kZXNwYWNlUmFuZ2VzW24gLSAxXS5wdXNoKGxvdywgaGlnaCk7CiAgICAgIHRoaXMubnVtQ29kZXNwYWNlUmFuZ2VzKys7CiAgICB9LAoKICAgIG1hcENpZFJhbmdlOiBmdW5jdGlvbihsb3csIGhpZ2gsIGRzdExvdykgewogICAgICB3aGlsZSAobG93IDw9IGhpZ2gpIHsKICAgICAgICB0aGlzLl9tYXBbbG93KytdID0gZHN0TG93Kys7CiAgICAgIH0KICAgIH0sCgogICAgbWFwQmZSYW5nZTogZnVuY3Rpb24obG93LCBoaWdoLCBkc3RMb3cpIHsKICAgICAgdmFyIGxhc3RCeXRlID0gZHN0TG93Lmxlbmd0aCAtIDE7CiAgICAgIHdoaWxlIChsb3cgPD0gaGlnaCkgewogICAgICAgIHRoaXMuX21hcFtsb3crK10gPSBkc3RMb3c7CiAgICAgICAgLy8gT25seSB0aGUgbGFzdCBieXRlIGhhcyB0byBiZSBpbmNyZW1lbnRlZC4KICAgICAgICBkc3RMb3cgPSBkc3RMb3cuc3Vic3RyKDAsIGxhc3RCeXRlKSArCiAgICAgICAgICAgICAgICAgU3RyaW5nLmZyb21DaGFyQ29kZShkc3RMb3cuY2hhckNvZGVBdChsYXN0Qnl0ZSkgKyAxKTsKICAgICAgfQogICAgfSwKCiAgICBtYXBCZlJhbmdlVG9BcnJheTogZnVuY3Rpb24obG93LCBoaWdoLCBhcnJheSkgewogICAgICB2YXIgaSA9IDAsIGlpID0gYXJyYXkubGVuZ3RoOwogICAgICB3aGlsZSAobG93IDw9IGhpZ2ggJiYgaSA8IGlpKSB7CiAgICAgICAgdGhpcy5fbWFwW2xvd10gPSBhcnJheVtpKytdOwogICAgICAgICsrbG93OwogICAgICB9CiAgICB9LAoKICAgIC8vIFRoaXMgaXMgdXNlZCBmb3IgYm90aCBiZiBhbmQgY2lkIGNoYXJzLgogICAgbWFwT25lOiBmdW5jdGlvbihzcmMsIGRzdCkgewogICAgICB0aGlzLl9tYXBbc3JjXSA9IGRzdDsKICAgIH0sCgogICAgbG9va3VwOiBmdW5jdGlvbihjb2RlKSB7CiAgICAgIHJldHVybiB0aGlzLl9tYXBbY29kZV07CiAgICB9LAoKICAgIGNvbnRhaW5zOiBmdW5jdGlvbihjb2RlKSB7CiAgICAgIHJldHVybiB0aGlzLl9tYXBbY29kZV0gIT09IHVuZGVmaW5lZDsKICAgIH0sCgogICAgZm9yRWFjaDogZnVuY3Rpb24oY2FsbGJhY2spIHsKICAgICAgLy8gTW9zdCBtYXBzIGhhdmUgZmV3ZXIgdGhhbiA2NTUzNiBlbnRyaWVzLCBhbmQgZm9yIHRob3NlIHdlIHVzZSBub3JtYWwKICAgICAgLy8gYXJyYXkgaXRlcmF0aW9uLiBCdXQgcmVhbGx5IHNwYXJzZSB0YWJsZXMgYXJlIHBvc3NpYmxlIC0tIGUuZy4gd2l0aAogICAgICAvLyBpbmRpY2VzIGluIHRoZSAqYmlsbGlvbnMqLiBGb3Igc3VjaCB0YWJsZXMgd2UgdXNlIGZvci4uaW4sIHdoaWNoIGlzbid0CiAgICAgIC8vIGlkZWFsIGJlY2F1c2UgaXQgc3RyaW5naWZpZXMgdGhlIGluZGljZXMgZm9yIGFsbCBwcmVzZW50IGVsZW1lbnRzLCBidXQKICAgICAgLy8gaXQgZG9lcyBhdm9pZCBpdGVyYXRpbmcgb3ZlciBldmVyeSB1bmRlZmluZWQgZW50cnkuCiAgICAgIHZhciBtYXAgPSB0aGlzLl9tYXA7CiAgICAgIHZhciBsZW5ndGggPSBtYXAubGVuZ3RoOwogICAgICB2YXIgaTsKICAgICAgaWYgKGxlbmd0aCA8PSAweDEwMDAwKSB7CiAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgICAgICBpZiAobWFwW2ldICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgY2FsbGJhY2soaSwgbWFwW2ldKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZm9yIChpIGluIHRoaXMuX21hcCkgewogICAgICAgICAgY2FsbGJhY2soaSwgbWFwW2ldKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0sCgogICAgY2hhckNvZGVPZjogZnVuY3Rpb24odmFsdWUpIHsKICAgICAgcmV0dXJuIHRoaXMuX21hcC5pbmRleE9mKHZhbHVlKTsKICAgIH0sCgogICAgZ2V0TWFwOiBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMuX21hcDsKICAgIH0sCgogICAgcmVhZENoYXJDb2RlOiBmdW5jdGlvbihzdHIsIG9mZnNldCwgb3V0KSB7CiAgICAgIHZhciBjID0gMDsKICAgICAgdmFyIGNvZGVzcGFjZVJhbmdlcyA9IHRoaXMuY29kZXNwYWNlUmFuZ2VzOwogICAgICB2YXIgY29kZXNwYWNlUmFuZ2VzTGVuID0gdGhpcy5jb2Rlc3BhY2VSYW5nZXMubGVuZ3RoOwogICAgICAvLyA5LjcuNi4yIENNYXAgTWFwcGluZwogICAgICAvLyBUaGUgY29kZSBsZW5ndGggaXMgYXQgbW9zdCA0LgogICAgICBmb3IgKHZhciBuID0gMDsgbiA8IGNvZGVzcGFjZVJhbmdlc0xlbjsgbisrKSB7CiAgICAgICAgYyA9ICgoYyA8PCA4KSB8IHN0ci5jaGFyQ29kZUF0KG9mZnNldCArIG4pKSA+Pj4gMDsKICAgICAgICAvLyBDaGVjayBlYWNoIGNvZGVzcGFjZSByYW5nZSB0byBzZWUgaWYgaXQgZmFsbHMgd2l0aGluLgogICAgICAgIHZhciBjb2Rlc3BhY2VSYW5nZSA9IGNvZGVzcGFjZVJhbmdlc1tuXTsKICAgICAgICBmb3IgKHZhciBrID0gMCwga2sgPSBjb2Rlc3BhY2VSYW5nZS5sZW5ndGg7IGsgPCBrazspIHsKICAgICAgICAgIHZhciBsb3cgPSBjb2Rlc3BhY2VSYW5nZVtrKytdOwogICAgICAgICAgdmFyIGhpZ2ggPSBjb2Rlc3BhY2VSYW5nZVtrKytdOwogICAgICAgICAgaWYgKGMgPj0gbG93ICYmIGMgPD0gaGlnaCkgewogICAgICAgICAgICBvdXQuY2hhcmNvZGUgPSBjOwogICAgICAgICAgICBvdXQubGVuZ3RoID0gbiArIDE7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgICAgb3V0LmNoYXJjb2RlID0gMDsKICAgICAgb3V0Lmxlbmd0aCA9IDE7CiAgICB9LAoKICAgIGdldCBpc0lkZW50aXR5Q01hcCgpIHsKICAgICAgaWYgKCEodGhpcy5uYW1lID09PSAnSWRlbnRpdHktSCcgfHwgdGhpcy5uYW1lID09PSAnSWRlbnRpdHktVicpKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICAgIGlmICh0aGlzLl9tYXAubGVuZ3RoICE9PSAweDEwMDAwKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMHgxMDAwMDsgaSsrKSB7CiAgICAgICAgaWYgKHRoaXMuX21hcFtpXSAhPT0gaSkgewogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICB9OwogIHJldHVybiBDTWFwOwp9KSgpOwoKLy8gQSBzcGVjaWFsIGNhc2Ugb2YgQ01hcCwgd2hlcmUgdGhlIF9tYXAgYXJyYXkgaW1wbGljaXRseSBoYXMgYSBsZW5ndGggb2YKLy8gNjU1MzYgYW5kIGVhY2ggZWxlbWVudCBpcyBlcXVhbCB0byBpdHMgaW5kZXguCnZhciBJZGVudGl0eUNNYXAgPSAoZnVuY3Rpb24gSWRlbnRpdHlDTWFwQ2xvc3VyZSgpIHsKICBmdW5jdGlvbiBJZGVudGl0eUNNYXAodmVydGljYWwsIG4pIHsKICAgIENNYXAuY2FsbCh0aGlzKTsKICAgIHRoaXMudmVydGljYWwgPSB2ZXJ0aWNhbDsKICAgIHRoaXMuYWRkQ29kZXNwYWNlUmFuZ2UobiwgMCwgMHhmZmZmKTsKICB9CiAgVXRpbC5pbmhlcml0KElkZW50aXR5Q01hcCwgQ01hcCwge30pOwoKICBJZGVudGl0eUNNYXAucHJvdG90eXBlID0gewogICAgYWRkQ29kZXNwYWNlUmFuZ2U6IENNYXAucHJvdG90eXBlLmFkZENvZGVzcGFjZVJhbmdlLAoKICAgIG1hcENpZFJhbmdlOiBmdW5jdGlvbihsb3csIGhpZ2gsIGRzdExvdykgewogICAgICBlcnJvcignc2hvdWxkIG5vdCBjYWxsIG1hcENpZFJhbmdlJyk7CiAgICB9LAoKICAgIG1hcEJmUmFuZ2U6IGZ1bmN0aW9uKGxvdywgaGlnaCwgZHN0TG93KSB7CiAgICAgIGVycm9yKCdzaG91bGQgbm90IGNhbGwgbWFwQmZSYW5nZScpOwogICAgfSwKCiAgICBtYXBCZlJhbmdlVG9BcnJheTogZnVuY3Rpb24obG93LCBoaWdoLCBhcnJheSkgewogICAgICBlcnJvcignc2hvdWxkIG5vdCBjYWxsIG1hcEJmUmFuZ2VUb0FycmF5Jyk7CiAgICB9LAoKICAgIG1hcE9uZTogZnVuY3Rpb24oc3JjLCBkc3QpIHsKICAgICAgZXJyb3IoJ3Nob3VsZCBub3QgY2FsbCBtYXBDaWRPbmUnKTsKICAgIH0sCgogICAgbG9va3VwOiBmdW5jdGlvbihjb2RlKSB7CiAgICAgIHJldHVybiAoaXNJbnQoY29kZSkgJiYgY29kZSA8PSAweGZmZmYpID8gY29kZSA6IHVuZGVmaW5lZDsKICAgIH0sCgogICAgY29udGFpbnM6IGZ1bmN0aW9uKGNvZGUpIHsKICAgICAgcmV0dXJuIGlzSW50KGNvZGUpICYmIGNvZGUgPD0gMHhmZmZmOwogICAgfSwKCiAgICBmb3JFYWNoOiBmdW5jdGlvbihjYWxsYmFjaykgewogICAgICBmb3IgKHZhciBpID0gMDsgaSA8PSAweGZmZmY7IGkrKykgewogICAgICAgIGNhbGxiYWNrKGksIGkpOwogICAgICB9CiAgICB9LAoKICAgIGNoYXJDb2RlT2Y6IGZ1bmN0aW9uKHZhbHVlKSB7CiAgICAgIHJldHVybiAoaXNJbnQodmFsdWUpICYmIHZhbHVlIDw9IDB4ZmZmZikgPyB2YWx1ZSA6IC0xOwogICAgfSwKCiAgICBnZXRNYXA6IGZ1bmN0aW9uKCkgewogICAgICAvLyBTb21ldGltZXMgaWRlbnRpdHkgbWFwcyBtdXN0IGJlIGluc3RhbnRpYXRlZCwgYnV0IGl0J3MgcmFyZS4KICAgICAgdmFyIG1hcCA9IG5ldyBBcnJheSgweDEwMDAwKTsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPD0gMHhmZmZmOyBpKyspIHsKICAgICAgICBtYXBbaV0gPSBpOwogICAgICB9CiAgICAgIHJldHVybiBtYXA7CiAgICB9LAoKICAgIHJlYWRDaGFyQ29kZTogQ01hcC5wcm90b3R5cGUucmVhZENoYXJDb2RlLAoKICAgIGdldCBpc0lkZW50aXR5Q01hcCgpIHsKICAgICAgZXJyb3IoJ3Nob3VsZCBub3QgYWNjZXNzIC5pc0lkZW50aXR5Q01hcCcpOwogICAgfQogIH07CgogIHJldHVybiBJZGVudGl0eUNNYXA7Cn0pKCk7Cgp2YXIgQmluYXJ5Q01hcFJlYWRlciA9IChmdW5jdGlvbiBCaW5hcnlDTWFwUmVhZGVyQ2xvc3VyZSgpIHsKICBmdW5jdGlvbiBmZXRjaEJpbmFyeURhdGEodXJsKSB7CiAgICB2YXIgbm9uQmluYXJ5UmVxdWVzdCA9IFBERkpTLmRpc2FibGVXb3JrZXI7CiAgICB2YXIgcmVxdWVzdCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwogICAgcmVxdWVzdC5vcGVuKCdHRVQnLCB1cmwsIGZhbHNlKTsKICAgIGlmICghbm9uQmluYXJ5UmVxdWVzdCkgewogICAgICB0cnkgewogICAgICAgIHJlcXVlc3QucmVzcG9uc2VUeXBlID0gJ2FycmF5YnVmZmVyJzsKICAgICAgICBub25CaW5hcnlSZXF1ZXN0ID0gcmVxdWVzdC5yZXNwb25zZVR5cGUgIT09ICdhcnJheWJ1ZmZlcic7CiAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICBub25CaW5hcnlSZXF1ZXN0ID0gdHJ1ZTsKICAgICAgfQogICAgfQogICAgaWYgKG5vbkJpbmFyeVJlcXVlc3QgJiYgcmVxdWVzdC5vdmVycmlkZU1pbWVUeXBlKSB7CiAgICAgIHJlcXVlc3Qub3ZlcnJpZGVNaW1lVHlwZSgndGV4dC9wbGFpbjsgY2hhcnNldD14LXVzZXItZGVmaW5lZCcpOwogICAgfQogICAgcmVxdWVzdC5zZW5kKG51bGwpOwogICAgaWYgKG5vbkJpbmFyeVJlcXVlc3QgPyAhcmVxdWVzdC5yZXNwb25zZVRleHQgOiAhcmVxdWVzdC5yZXNwb25zZSkgewogICAgICBlcnJvcignVW5hYmxlIHRvIGdldCBiaW5hcnkgY01hcCBhdDogJyArIHVybCk7CiAgICB9CiAgICBpZiAobm9uQmluYXJ5UmVxdWVzdCkgewogICAgICB2YXIgZGF0YSA9IEFycmF5LnByb3RvdHlwZS5tYXAuY2FsbChyZXF1ZXN0LnJlc3BvbnNlVGV4dCwgZnVuY3Rpb24gKGNoKSB7CiAgICAgICAgcmV0dXJuIGNoLmNoYXJDb2RlQXQoMCkgJiAyNTU7CiAgICAgIH0pOwogICAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoZGF0YSk7CiAgICB9CiAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkocmVxdWVzdC5yZXNwb25zZSk7CiAgfQoKICBmdW5jdGlvbiBoZXhUb0ludChhLCBzaXplKSB7CiAgICB2YXIgbiA9IDA7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8PSBzaXplOyBpKyspIHsKICAgICAgbiA9IChuIDw8IDgpIHwgYVtpXTsKICAgIH0KICAgIHJldHVybiBuID4+PiAwOwogIH0KCiAgZnVuY3Rpb24gaGV4VG9TdHIoYSwgc2l6ZSkgewogICAgLy8gVGhpcyBjb2RlIGlzIGhvdC4gU3BlY2lhbC1jYXNlIHNvbWUgY29tbW9uIHZhbHVlcyB0byBhdm9pZCBjcmVhdGluZyBhbgogICAgLy8gb2JqZWN0IHdpdGggc3ViYXJyYXkoKS4KICAgIGlmIChzaXplID09PSAxKSB7CiAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGFbMF0sIGFbMV0pOwogICAgfQogICAgaWYgKHNpemUgPT09IDMpIHsKICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoYVswXSwgYVsxXSwgYVsyXSwgYVszXSk7CiAgICB9CiAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLCBhLnN1YmFycmF5KDAsIHNpemUgKyAxKSk7CiAgfQoKICBmdW5jdGlvbiBhZGRIZXgoYSwgYiwgc2l6ZSkgewogICAgdmFyIGMgPSAwOwogICAgZm9yICh2YXIgaSA9IHNpemU7IGkgPj0gMDsgaS0tKSB7CiAgICAgIGMgKz0gYVtpXSArIGJbaV07CiAgICAgIGFbaV0gPSBjICYgMjU1OwogICAgICBjID4+PSA4OwogICAgfQogIH0KCiAgZnVuY3Rpb24gaW5jSGV4KGEsIHNpemUpIHsKICAgIHZhciBjID0gMTsKICAgIGZvciAodmFyIGkgPSBzaXplOyBpID49IDAgJiYgYyA+IDA7IGktLSkgewogICAgICBjICs9IGFbaV07CiAgICAgIGFbaV0gPSBjICYgMjU1OwogICAgICBjID4+PSA4OwogICAgfQogIH0KCiAgdmFyIE1BWF9OVU1fU0laRSA9IDE2OwogIHZhciBNQVhfRU5DT0RFRF9OVU1fU0laRSA9IDE5OyAvLyBjZWlsKE1BWF9OVU1fU0laRSAqIDcgLyA4KQoKICBmdW5jdGlvbiBCaW5hcnlDTWFwU3RyZWFtKGRhdGEpIHsKICAgIHRoaXMuYnVmZmVyID0gZGF0YTsKICAgIHRoaXMucG9zID0gMDsKICAgIHRoaXMuZW5kID0gZGF0YS5sZW5ndGg7CiAgICB0aGlzLnRtcEJ1ZiA9IG5ldyBVaW50OEFycmF5KE1BWF9FTkNPREVEX05VTV9TSVpFKTsKICB9CgogIEJpbmFyeUNNYXBTdHJlYW0ucHJvdG90eXBlID0gewogICAgcmVhZEJ5dGU6IGZ1bmN0aW9uICgpIHsKICAgICAgaWYgKHRoaXMucG9zID49IHRoaXMuZW5kKSB7CiAgICAgICAgcmV0dXJuIC0xOwogICAgICB9CiAgICAgIHJldHVybiB0aGlzLmJ1ZmZlclt0aGlzLnBvcysrXTsKICAgIH0sCiAgICByZWFkTnVtYmVyOiBmdW5jdGlvbiAoKSB7CiAgICAgIHZhciBuID0gMDsKICAgICAgdmFyIGxhc3Q7CiAgICAgIGRvIHsKICAgICAgICB2YXIgYiA9IHRoaXMucmVhZEJ5dGUoKTsKICAgICAgICBpZiAoYiA8IDApIHsKICAgICAgICAgIGVycm9yKCd1bmV4cGVjdGVkIEVPRiBpbiBiY21hcCcpOwogICAgICAgIH0KICAgICAgICBsYXN0ID0gIShiICYgMHg4MCk7CiAgICAgICAgbiA9IChuIDw8IDcpIHwgKGIgJiAweDdGKTsKICAgICAgfSB3aGlsZSAoIWxhc3QpOwogICAgICByZXR1cm4gbjsKICAgIH0sCiAgICByZWFkU2lnbmVkOiBmdW5jdGlvbiAoKSB7CiAgICAgIHZhciBuID0gdGhpcy5yZWFkTnVtYmVyKCk7CiAgICAgIHJldHVybiAobiAmIDEpID8gfihuID4+PiAxKSA6IG4gPj4+IDE7CiAgICB9LAogICAgcmVhZEhleDogZnVuY3Rpb24gKG51bSwgc2l6ZSkgewogICAgICBudW0uc2V0KHRoaXMuYnVmZmVyLnN1YmFycmF5KHRoaXMucG9zLAogICAgICAgIHRoaXMucG9zICsgc2l6ZSArIDEpKTsKICAgICAgdGhpcy5wb3MgKz0gc2l6ZSArIDE7CiAgICB9LAogICAgcmVhZEhleE51bWJlcjogZnVuY3Rpb24gKG51bSwgc2l6ZSkgewogICAgICB2YXIgbGFzdDsKICAgICAgdmFyIHN0YWNrID0gdGhpcy50bXBCdWYsIHNwID0gMDsKICAgICAgZG8gewogICAgICAgIHZhciBiID0gdGhpcy5yZWFkQnl0ZSgpOwogICAgICAgIGlmIChiIDwgMCkgewogICAgICAgICAgZXJyb3IoJ3VuZXhwZWN0ZWQgRU9GIGluIGJjbWFwJyk7CiAgICAgICAgfQogICAgICAgIGxhc3QgPSAhKGIgJiAweDgwKTsKICAgICAgICBzdGFja1tzcCsrXSA9IGIgJiAweDdGOwogICAgICB9IHdoaWxlICghbGFzdCk7CiAgICAgIHZhciBpID0gc2l6ZSwgYnVmZmVyID0gMCwgYnVmZmVyU2l6ZSA9IDA7CiAgICAgIHdoaWxlIChpID49IDApIHsKICAgICAgICB3aGlsZSAoYnVmZmVyU2l6ZSA8IDggJiYgc3RhY2subGVuZ3RoID4gMCkgewogICAgICAgICAgYnVmZmVyID0gKHN0YWNrWy0tc3BdIDw8IGJ1ZmZlclNpemUpIHwgYnVmZmVyOwogICAgICAgICAgYnVmZmVyU2l6ZSArPSA3OwogICAgICAgIH0KICAgICAgICBudW1baV0gPSBidWZmZXIgJiAyNTU7CiAgICAgICAgaS0tOwogICAgICAgIGJ1ZmZlciA+Pj0gODsKICAgICAgICBidWZmZXJTaXplIC09IDg7CiAgICAgIH0KICAgIH0sCiAgICByZWFkSGV4U2lnbmVkOiBmdW5jdGlvbiAobnVtLCBzaXplKSB7CiAgICAgIHRoaXMucmVhZEhleE51bWJlcihudW0sIHNpemUpOwogICAgICB2YXIgc2lnbiA9IG51bVtzaXplXSAmIDEgPyAyNTUgOiAwOwogICAgICB2YXIgYyA9IDA7CiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDw9IHNpemU7IGkrKykgewogICAgICAgIGMgPSAoKGMgJiAxKSA8PCA4KSB8IG51bVtpXTsKICAgICAgICBudW1baV0gPSAoYyA+PiAxKSBeIHNpZ247CiAgICAgIH0KICAgIH0sCiAgICByZWFkU3RyaW5nOiBmdW5jdGlvbiAoKSB7CiAgICAgIHZhciBsZW4gPSB0aGlzLnJlYWROdW1iZXIoKTsKICAgICAgdmFyIHMgPSAnJzsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgewogICAgICAgIHMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSh0aGlzLnJlYWROdW1iZXIoKSk7CiAgICAgIH0KICAgICAgcmV0dXJuIHM7CiAgICB9CiAgfTsKCiAgZnVuY3Rpb24gcHJvY2Vzc0JpbmFyeUNNYXAodXJsLCBjTWFwLCBleHRlbmQpIHsKICAgIHZhciBkYXRhID0gZmV0Y2hCaW5hcnlEYXRhKHVybCk7CiAgICB2YXIgc3RyZWFtID0gbmV3IEJpbmFyeUNNYXBTdHJlYW0oZGF0YSk7CgogICAgdmFyIGhlYWRlciA9IHN0cmVhbS5yZWFkQnl0ZSgpOwogICAgY01hcC52ZXJ0aWNhbCA9ICEhKGhlYWRlciAmIDEpOwoKICAgIHZhciB1c2VDTWFwID0gbnVsbDsKICAgIHZhciBzdGFydCA9IG5ldyBVaW50OEFycmF5KE1BWF9OVU1fU0laRSk7CiAgICB2YXIgZW5kID0gbmV3IFVpbnQ4QXJyYXkoTUFYX05VTV9TSVpFKTsKICAgIHZhciBjaGFyID0gbmV3IFVpbnQ4QXJyYXkoTUFYX05VTV9TSVpFKTsKICAgIHZhciBjaGFyQ29kZSA9IG5ldyBVaW50OEFycmF5KE1BWF9OVU1fU0laRSk7CiAgICB2YXIgdG1wID0gbmV3IFVpbnQ4QXJyYXkoTUFYX05VTV9TSVpFKTsKICAgIHZhciBjb2RlOwoKICAgIHZhciBiOwogICAgd2hpbGUgKChiID0gc3RyZWFtLnJlYWRCeXRlKCkpID49IDApIHsKICAgICAgdmFyIHR5cGUgPSBiID4+IDU7CiAgICAgIGlmICh0eXBlID09PSA3KSB7IC8vIG1ldGFkYXRhLCBlLmcuIGNvbW1lbnQgb3IgdXNlY21hcAogICAgICAgIHN3aXRjaCAoYiAmIDB4MUYpIHsKICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgc3RyZWFtLnJlYWRTdHJpbmcoKTsgLy8gc2tpcHBpbmcgY29tbWVudAogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgdXNlQ01hcCA9IHN0cmVhbS5yZWFkU3RyaW5nKCk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBjb250aW51ZTsKICAgICAgfQogICAgICB2YXIgc2VxdWVuY2UgPSAhIShiICYgMHgxMCk7CiAgICAgIHZhciBkYXRhU2l6ZSA9IGIgJiAxNTsKCiAgICAgIGFzc2VydChkYXRhU2l6ZSArIDEgPD0gTUFYX05VTV9TSVpFKTsKCiAgICAgIHZhciB1Y3MyRGF0YVNpemUgPSAxOwogICAgICB2YXIgc3ViaXRlbXNDb3VudCA9IHN0cmVhbS5yZWFkTnVtYmVyKCk7CiAgICAgIHZhciBpOwogICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICBjYXNlIDA6IC8vIGNvZGVzcGFjZXJhbmdlCiAgICAgICAgICBzdHJlYW0ucmVhZEhleChzdGFydCwgZGF0YVNpemUpOwogICAgICAgICAgc3RyZWFtLnJlYWRIZXhOdW1iZXIoZW5kLCBkYXRhU2l6ZSk7CiAgICAgICAgICBhZGRIZXgoZW5kLCBzdGFydCwgZGF0YVNpemUpOwogICAgICAgICAgY01hcC5hZGRDb2Rlc3BhY2VSYW5nZShkYXRhU2l6ZSArIDEsIGhleFRvSW50KHN0YXJ0LCBkYXRhU2l6ZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhleFRvSW50KGVuZCwgZGF0YVNpemUpKTsKICAgICAgICAgIGZvciAoaSA9IDE7IGkgPCBzdWJpdGVtc0NvdW50OyBpKyspIHsKICAgICAgICAgICAgaW5jSGV4KGVuZCwgZGF0YVNpemUpOwogICAgICAgICAgICBzdHJlYW0ucmVhZEhleE51bWJlcihzdGFydCwgZGF0YVNpemUpOwogICAgICAgICAgICBhZGRIZXgoc3RhcnQsIGVuZCwgZGF0YVNpemUpOwogICAgICAgICAgICBzdHJlYW0ucmVhZEhleE51bWJlcihlbmQsIGRhdGFTaXplKTsKICAgICAgICAgICAgYWRkSGV4KGVuZCwgc3RhcnQsIGRhdGFTaXplKTsKICAgICAgICAgICAgY01hcC5hZGRDb2Rlc3BhY2VSYW5nZShkYXRhU2l6ZSArIDEsIGhleFRvSW50KHN0YXJ0LCBkYXRhU2l6ZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGV4VG9JbnQoZW5kLCBkYXRhU2l6ZSkpOwogICAgICAgICAgfQogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAxOiAvLyBub3RkZWZyYW5nZQogICAgICAgICAgc3RyZWFtLnJlYWRIZXgoc3RhcnQsIGRhdGFTaXplKTsKICAgICAgICAgIHN0cmVhbS5yZWFkSGV4TnVtYmVyKGVuZCwgZGF0YVNpemUpOwogICAgICAgICAgYWRkSGV4KGVuZCwgc3RhcnQsIGRhdGFTaXplKTsKICAgICAgICAgIGNvZGUgPSBzdHJlYW0ucmVhZE51bWJlcigpOwogICAgICAgICAgLy8gdW5kZWZpbmVkIHJhbmdlLCBza2lwcGluZwogICAgICAgICAgZm9yIChpID0gMTsgaSA8IHN1Yml0ZW1zQ291bnQ7IGkrKykgewogICAgICAgICAgICBpbmNIZXgoZW5kLCBkYXRhU2l6ZSk7CiAgICAgICAgICAgIHN0cmVhbS5yZWFkSGV4TnVtYmVyKHN0YXJ0LCBkYXRhU2l6ZSk7CiAgICAgICAgICAgIGFkZEhleChzdGFydCwgZW5kLCBkYXRhU2l6ZSk7CiAgICAgICAgICAgIHN0cmVhbS5yZWFkSGV4TnVtYmVyKGVuZCwgZGF0YVNpemUpOwogICAgICAgICAgICBhZGRIZXgoZW5kLCBzdGFydCwgZGF0YVNpemUpOwogICAgICAgICAgICBjb2RlID0gc3RyZWFtLnJlYWROdW1iZXIoKTsKICAgICAgICAgICAgLy8gbm9wCiAgICAgICAgICB9CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDI6IC8vIGNpZGNoYXIKICAgICAgICAgIHN0cmVhbS5yZWFkSGV4KGNoYXIsIGRhdGFTaXplKTsKICAgICAgICAgIGNvZGUgPSBzdHJlYW0ucmVhZE51bWJlcigpOwogICAgICAgICAgY01hcC5tYXBPbmUoaGV4VG9JbnQoY2hhciwgZGF0YVNpemUpLCBjb2RlKTsKICAgICAgICAgIGZvciAoaSA9IDE7IGkgPCBzdWJpdGVtc0NvdW50OyBpKyspIHsKICAgICAgICAgICAgaW5jSGV4KGNoYXIsIGRhdGFTaXplKTsKICAgICAgICAgICAgaWYgKCFzZXF1ZW5jZSkgewogICAgICAgICAgICAgIHN0cmVhbS5yZWFkSGV4TnVtYmVyKHRtcCwgZGF0YVNpemUpOwogICAgICAgICAgICAgIGFkZEhleChjaGFyLCB0bXAsIGRhdGFTaXplKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb2RlID0gc3RyZWFtLnJlYWRTaWduZWQoKSArIChjb2RlICsgMSk7CiAgICAgICAgICAgIGNNYXAubWFwT25lKGhleFRvSW50KGNoYXIsIGRhdGFTaXplKSwgY29kZSk7CiAgICAgICAgICB9CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDM6IC8vIGNpZHJhbmdlCiAgICAgICAgICBzdHJlYW0ucmVhZEhleChzdGFydCwgZGF0YVNpemUpOwogICAgICAgICAgc3RyZWFtLnJlYWRIZXhOdW1iZXIoZW5kLCBkYXRhU2l6ZSk7CiAgICAgICAgICBhZGRIZXgoZW5kLCBzdGFydCwgZGF0YVNpemUpOwogICAgICAgICAgY29kZSA9IHN0cmVhbS5yZWFkTnVtYmVyKCk7CiAgICAgICAgICBjTWFwLm1hcENpZFJhbmdlKGhleFRvSW50KHN0YXJ0LCBkYXRhU2l6ZSksIGhleFRvSW50KGVuZCwgZGF0YVNpemUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlKTsKICAgICAgICAgIGZvciAoaSA9IDE7IGkgPCBzdWJpdGVtc0NvdW50OyBpKyspIHsKICAgICAgICAgICAgaW5jSGV4KGVuZCwgZGF0YVNpemUpOwogICAgICAgICAgICBpZiAoIXNlcXVlbmNlKSB7CiAgICAgICAgICAgICAgc3RyZWFtLnJlYWRIZXhOdW1iZXIoc3RhcnQsIGRhdGFTaXplKTsKICAgICAgICAgICAgICBhZGRIZXgoc3RhcnQsIGVuZCwgZGF0YVNpemUpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIHN0YXJ0LnNldChlbmQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHN0cmVhbS5yZWFkSGV4TnVtYmVyKGVuZCwgZGF0YVNpemUpOwogICAgICAgICAgICBhZGRIZXgoZW5kLCBzdGFydCwgZGF0YVNpemUpOwogICAgICAgICAgICBjb2RlID0gc3RyZWFtLnJlYWROdW1iZXIoKTsKICAgICAgICAgICAgY01hcC5tYXBDaWRSYW5nZShoZXhUb0ludChzdGFydCwgZGF0YVNpemUpLCBoZXhUb0ludChlbmQsIGRhdGFTaXplKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlKTsKICAgICAgICAgIH0KICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgNDogLy8gYmZjaGFyCiAgICAgICAgICBzdHJlYW0ucmVhZEhleChjaGFyLCB1Y3MyRGF0YVNpemUpOwogICAgICAgICAgc3RyZWFtLnJlYWRIZXgoY2hhckNvZGUsIGRhdGFTaXplKTsKICAgICAgICAgIGNNYXAubWFwT25lKGhleFRvSW50KGNoYXIsIHVjczJEYXRhU2l6ZSksCiAgICAgICAgICAgICAgICAgICAgICBoZXhUb1N0cihjaGFyQ29kZSwgZGF0YVNpemUpKTsKICAgICAgICAgIGZvciAoaSA9IDE7IGkgPCBzdWJpdGVtc0NvdW50OyBpKyspIHsKICAgICAgICAgICAgaW5jSGV4KGNoYXIsIHVjczJEYXRhU2l6ZSk7CiAgICAgICAgICAgIGlmICghc2VxdWVuY2UpIHsKICAgICAgICAgICAgICBzdHJlYW0ucmVhZEhleE51bWJlcih0bXAsIHVjczJEYXRhU2l6ZSk7CiAgICAgICAgICAgICAgYWRkSGV4KGNoYXIsIHRtcCwgdWNzMkRhdGFTaXplKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpbmNIZXgoY2hhckNvZGUsIGRhdGFTaXplKTsKICAgICAgICAgICAgc3RyZWFtLnJlYWRIZXhTaWduZWQodG1wLCBkYXRhU2l6ZSk7CiAgICAgICAgICAgIGFkZEhleChjaGFyQ29kZSwgdG1wLCBkYXRhU2l6ZSk7CiAgICAgICAgICAgIGNNYXAubWFwT25lKGhleFRvSW50KGNoYXIsIHVjczJEYXRhU2l6ZSksCiAgICAgICAgICAgICAgICAgICAgICAgIGhleFRvU3RyKGNoYXJDb2RlLCBkYXRhU2l6ZSkpOwogICAgICAgICAgfQogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSA1OiAvLyBiZnJhbmdlCiAgICAgICAgICBzdHJlYW0ucmVhZEhleChzdGFydCwgdWNzMkRhdGFTaXplKTsKICAgICAgICAgIHN0cmVhbS5yZWFkSGV4TnVtYmVyKGVuZCwgdWNzMkRhdGFTaXplKTsKICAgICAgICAgIGFkZEhleChlbmQsIHN0YXJ0LCB1Y3MyRGF0YVNpemUpOwogICAgICAgICAgc3RyZWFtLnJlYWRIZXgoY2hhckNvZGUsIGRhdGFTaXplKTsKICAgICAgICAgIGNNYXAubWFwQmZSYW5nZShoZXhUb0ludChzdGFydCwgdWNzMkRhdGFTaXplKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBoZXhUb0ludChlbmQsIHVjczJEYXRhU2l6ZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgaGV4VG9TdHIoY2hhckNvZGUsIGRhdGFTaXplKSk7CiAgICAgICAgICBmb3IgKGkgPSAxOyBpIDwgc3ViaXRlbXNDb3VudDsgaSsrKSB7CiAgICAgICAgICAgIGluY0hleChlbmQsIHVjczJEYXRhU2l6ZSk7CiAgICAgICAgICAgIGlmICghc2VxdWVuY2UpIHsKICAgICAgICAgICAgICBzdHJlYW0ucmVhZEhleE51bWJlcihzdGFydCwgdWNzMkRhdGFTaXplKTsKICAgICAgICAgICAgICBhZGRIZXgoc3RhcnQsIGVuZCwgdWNzMkRhdGFTaXplKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBzdGFydC5zZXQoZW5kKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBzdHJlYW0ucmVhZEhleE51bWJlcihlbmQsIHVjczJEYXRhU2l6ZSk7CiAgICAgICAgICAgIGFkZEhleChlbmQsIHN0YXJ0LCB1Y3MyRGF0YVNpemUpOwogICAgICAgICAgICBzdHJlYW0ucmVhZEhleChjaGFyQ29kZSwgZGF0YVNpemUpOwogICAgICAgICAgICBjTWFwLm1hcEJmUmFuZ2UoaGV4VG9JbnQoc3RhcnQsIHVjczJEYXRhU2l6ZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZXhUb0ludChlbmQsIHVjczJEYXRhU2l6ZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZXhUb1N0cihjaGFyQ29kZSwgZGF0YVNpemUpKTsKICAgICAgICAgIH0KICAgICAgICAgIGJyZWFrOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICBlcnJvcignVW5rbm93biB0eXBlOiAnICsgdHlwZSk7CiAgICAgICAgICBicmVhazsKICAgICAgfQogICAgfQoKICAgIGlmICh1c2VDTWFwKSB7CiAgICAgIGV4dGVuZCh1c2VDTWFwKTsKICAgIH0KICAgIHJldHVybiBjTWFwOwogIH0KCiAgZnVuY3Rpb24gQmluYXJ5Q01hcFJlYWRlcigpIHt9CgogIEJpbmFyeUNNYXBSZWFkZXIucHJvdG90eXBlID0gewogICAgcmVhZDogcHJvY2Vzc0JpbmFyeUNNYXAKICB9OwoKICByZXR1cm4gQmluYXJ5Q01hcFJlYWRlcjsKfSkoKTsKCnZhciBDTWFwRmFjdG9yeSA9IChmdW5jdGlvbiBDTWFwRmFjdG9yeUNsb3N1cmUoKSB7CiAgZnVuY3Rpb24gc3RyVG9JbnQoc3RyKSB7CiAgICB2YXIgYSA9IDA7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykgewogICAgICBhID0gKGEgPDwgOCkgfCBzdHIuY2hhckNvZGVBdChpKTsKICAgIH0KICAgIHJldHVybiBhID4+PiAwOwogIH0KCiAgZnVuY3Rpb24gZXhwZWN0U3RyaW5nKG9iaikgewogICAgaWYgKCFpc1N0cmluZyhvYmopKSB7CiAgICAgIGVycm9yKCdNYWxmb3JtZWQgQ01hcDogZXhwZWN0ZWQgc3RyaW5nLicpOwogICAgfQogIH0KCiAgZnVuY3Rpb24gZXhwZWN0SW50KG9iaikgewogICAgaWYgKCFpc0ludChvYmopKSB7CiAgICAgIGVycm9yKCdNYWxmb3JtZWQgQ01hcDogZXhwZWN0ZWQgaW50LicpOwogICAgfQogIH0KCiAgZnVuY3Rpb24gcGFyc2VCZkNoYXIoY01hcCwgbGV4ZXIpIHsKICAgIHdoaWxlICh0cnVlKSB7CiAgICAgIHZhciBvYmogPSBsZXhlci5nZXRPYmooKTsKICAgICAgaWYgKGlzRU9GKG9iaikpIHsKICAgICAgICBicmVhazsKICAgICAgfQogICAgICBpZiAoaXNDbWQob2JqLCAnZW5kYmZjaGFyJykpIHsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgZXhwZWN0U3RyaW5nKG9iaik7CiAgICAgIHZhciBzcmMgPSBzdHJUb0ludChvYmopOwogICAgICBvYmogPSBsZXhlci5nZXRPYmooKTsKICAgICAgLy8gVE9ETyBhcmUgL2RzdE5hbWUgdXNlZD8KICAgICAgZXhwZWN0U3RyaW5nKG9iaik7CiAgICAgIHZhciBkc3QgPSBvYmo7CiAgICAgIGNNYXAubWFwT25lKHNyYywgZHN0KTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHBhcnNlQmZSYW5nZShjTWFwLCBsZXhlcikgewogICAgd2hpbGUgKHRydWUpIHsKICAgICAgdmFyIG9iaiA9IGxleGVyLmdldE9iaigpOwogICAgICBpZiAoaXNFT0Yob2JqKSkgewogICAgICAgIGJyZWFrOwogICAgICB9CiAgICAgIGlmIChpc0NtZChvYmosICdlbmRiZnJhbmdlJykpIHsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgZXhwZWN0U3RyaW5nKG9iaik7CiAgICAgIHZhciBsb3cgPSBzdHJUb0ludChvYmopOwogICAgICBvYmogPSBsZXhlci5nZXRPYmooKTsKICAgICAgZXhwZWN0U3RyaW5nKG9iaik7CiAgICAgIHZhciBoaWdoID0gc3RyVG9JbnQob2JqKTsKICAgICAgb2JqID0gbGV4ZXIuZ2V0T2JqKCk7CiAgICAgIGlmIChpc0ludChvYmopIHx8IGlzU3RyaW5nKG9iaikpIHsKICAgICAgICB2YXIgZHN0TG93ID0gaXNJbnQob2JqKSA/IFN0cmluZy5mcm9tQ2hhckNvZGUob2JqKSA6IG9iajsKICAgICAgICBjTWFwLm1hcEJmUmFuZ2UobG93LCBoaWdoLCBkc3RMb3cpOwogICAgICB9IGVsc2UgaWYgKGlzQ21kKG9iaiwgJ1snKSkgewogICAgICAgIG9iaiA9IGxleGVyLmdldE9iaigpOwogICAgICAgIHZhciBhcnJheSA9IFtdOwogICAgICAgIHdoaWxlICghaXNDbWQob2JqLCAnXScpICYmICFpc0VPRihvYmopKSB7CiAgICAgICAgICBhcnJheS5wdXNoKG9iaik7CiAgICAgICAgICBvYmogPSBsZXhlci5nZXRPYmooKTsKICAgICAgICB9CiAgICAgICAgY01hcC5tYXBCZlJhbmdlVG9BcnJheShsb3csIGhpZ2gsIGFycmF5KTsKICAgICAgfSBlbHNlIHsKICAgICAgICBicmVhazsKICAgICAgfQogICAgfQogICAgZXJyb3IoJ0ludmFsaWQgYmYgcmFuZ2UuJyk7CiAgfQoKICBmdW5jdGlvbiBwYXJzZUNpZENoYXIoY01hcCwgbGV4ZXIpIHsKICAgIHdoaWxlICh0cnVlKSB7CiAgICAgIHZhciBvYmogPSBsZXhlci5nZXRPYmooKTsKICAgICAgaWYgKGlzRU9GKG9iaikpIHsKICAgICAgICBicmVhazsKICAgICAgfQogICAgICBpZiAoaXNDbWQob2JqLCAnZW5kY2lkY2hhcicpKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIGV4cGVjdFN0cmluZyhvYmopOwogICAgICB2YXIgc3JjID0gc3RyVG9JbnQob2JqKTsKICAgICAgb2JqID0gbGV4ZXIuZ2V0T2JqKCk7CiAgICAgIGV4cGVjdEludChvYmopOwogICAgICB2YXIgZHN0ID0gb2JqOwogICAgICBjTWFwLm1hcE9uZShzcmMsIGRzdCk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBwYXJzZUNpZFJhbmdlKGNNYXAsIGxleGVyKSB7CiAgICB3aGlsZSAodHJ1ZSkgewogICAgICB2YXIgb2JqID0gbGV4ZXIuZ2V0T2JqKCk7CiAgICAgIGlmIChpc0VPRihvYmopKSB7CiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgICAgaWYgKGlzQ21kKG9iaiwgJ2VuZGNpZHJhbmdlJykpIHsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgZXhwZWN0U3RyaW5nKG9iaik7CiAgICAgIHZhciBsb3cgPSBzdHJUb0ludChvYmopOwogICAgICBvYmogPSBsZXhlci5nZXRPYmooKTsKICAgICAgZXhwZWN0U3RyaW5nKG9iaik7CiAgICAgIHZhciBoaWdoID0gc3RyVG9JbnQob2JqKTsKICAgICAgb2JqID0gbGV4ZXIuZ2V0T2JqKCk7CiAgICAgIGV4cGVjdEludChvYmopOwogICAgICB2YXIgZHN0TG93ID0gb2JqOwogICAgICBjTWFwLm1hcENpZFJhbmdlKGxvdywgaGlnaCwgZHN0TG93KTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHBhcnNlQ29kZXNwYWNlUmFuZ2UoY01hcCwgbGV4ZXIpIHsKICAgIHdoaWxlICh0cnVlKSB7CiAgICAgIHZhciBvYmogPSBsZXhlci5nZXRPYmooKTsKICAgICAgaWYgKGlzRU9GKG9iaikpIHsKICAgICAgICBicmVhazsKICAgICAgfQogICAgICBpZiAoaXNDbWQob2JqLCAnZW5kY29kZXNwYWNlcmFuZ2UnKSkgewogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBpZiAoIWlzU3RyaW5nKG9iaikpIHsKICAgICAgICBicmVhazsKICAgICAgfQogICAgICB2YXIgbG93ID0gc3RyVG9JbnQob2JqKTsKICAgICAgb2JqID0gbGV4ZXIuZ2V0T2JqKCk7CiAgICAgIGlmICghaXNTdHJpbmcob2JqKSkgewogICAgICAgIGJyZWFrOwogICAgICB9CiAgICAgIHZhciBoaWdoID0gc3RyVG9JbnQob2JqKTsKICAgICAgY01hcC5hZGRDb2Rlc3BhY2VSYW5nZShvYmoubGVuZ3RoLCBsb3csIGhpZ2gpOwogICAgfQogICAgZXJyb3IoJ0ludmFsaWQgY29kZXNwYWNlIHJhbmdlLicpOwogIH0KCiAgZnVuY3Rpb24gcGFyc2VXTW9kZShjTWFwLCBsZXhlcikgewogICAgdmFyIG9iaiA9IGxleGVyLmdldE9iaigpOwogICAgaWYgKGlzSW50KG9iaikpIHsKICAgICAgY01hcC52ZXJ0aWNhbCA9ICEhb2JqOwogICAgfQogIH0KCiAgZnVuY3Rpb24gcGFyc2VDTWFwTmFtZShjTWFwLCBsZXhlcikgewogICAgdmFyIG9iaiA9IGxleGVyLmdldE9iaigpOwogICAgaWYgKGlzTmFtZShvYmopICYmIGlzU3RyaW5nKG9iai5uYW1lKSkgewogICAgICBjTWFwLm5hbWUgPSBvYmoubmFtZTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHBhcnNlQ01hcChjTWFwLCBsZXhlciwgYnVpbHRJbkNNYXBQYXJhbXMsIHVzZUNNYXApIHsKICAgIHZhciBwcmV2aW91czsKICAgIHZhciBlbWJlZGVkVXNlQ01hcDsKICAgIG9iakxvb3A6IHdoaWxlICh0cnVlKSB7CiAgICAgIHZhciBvYmogPSBsZXhlci5nZXRPYmooKTsKICAgICAgaWYgKGlzRU9GKG9iaikpIHsKICAgICAgICBicmVhazsKICAgICAgfSBlbHNlIGlmIChpc05hbWUob2JqKSkgewogICAgICAgIGlmIChvYmoubmFtZSA9PT0gJ1dNb2RlJykgewogICAgICAgICAgcGFyc2VXTW9kZShjTWFwLCBsZXhlcik7CiAgICAgICAgfSBlbHNlIGlmIChvYmoubmFtZSA9PT0gJ0NNYXBOYW1lJykgewogICAgICAgICAgcGFyc2VDTWFwTmFtZShjTWFwLCBsZXhlcik7CiAgICAgICAgfQogICAgICAgIHByZXZpb3VzID0gb2JqOwogICAgICB9IGVsc2UgaWYgKGlzQ21kKG9iaikpIHsKICAgICAgICBzd2l0Y2ggKG9iai5jbWQpIHsKICAgICAgICAgIGNhc2UgJ2VuZGNtYXAnOgogICAgICAgICAgICBicmVhayBvYmpMb29wOwogICAgICAgICAgY2FzZSAndXNlY21hcCc6CiAgICAgICAgICAgIGlmIChpc05hbWUocHJldmlvdXMpKSB7CiAgICAgICAgICAgICAgZW1iZWRlZFVzZUNNYXAgPSBwcmV2aW91cy5uYW1lOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAnYmVnaW5jb2Rlc3BhY2VyYW5nZSc6CiAgICAgICAgICAgIHBhcnNlQ29kZXNwYWNlUmFuZ2UoY01hcCwgbGV4ZXIpOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgJ2JlZ2luYmZjaGFyJzoKICAgICAgICAgICAgcGFyc2VCZkNoYXIoY01hcCwgbGV4ZXIpOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgJ2JlZ2luY2lkY2hhcic6CiAgICAgICAgICAgIHBhcnNlQ2lkQ2hhcihjTWFwLCBsZXhlcik7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAnYmVnaW5iZnJhbmdlJzoKICAgICAgICAgICAgcGFyc2VCZlJhbmdlKGNNYXAsIGxleGVyKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlICdiZWdpbmNpZHJhbmdlJzoKICAgICAgICAgICAgcGFyc2VDaWRSYW5nZShjTWFwLCBsZXhlcik7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIGlmICghdXNlQ01hcCAmJiBlbWJlZGVkVXNlQ01hcCkgewogICAgICAvLyBMb2FkIHRoZSB1c2VjbWFwIGRlZmluaXRpb24gZnJvbSB0aGUgZmlsZSBvbmx5IGlmIHRoZXJlIHdhc24ndCBvbmUKICAgICAgLy8gc3BlY2lmaWVkLgogICAgICB1c2VDTWFwID0gZW1iZWRlZFVzZUNNYXA7CiAgICB9CiAgICBpZiAodXNlQ01hcCkgewogICAgICBleHRlbmRDTWFwKGNNYXAsIGJ1aWx0SW5DTWFwUGFyYW1zLCB1c2VDTWFwKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGV4dGVuZENNYXAoY01hcCwgYnVpbHRJbkNNYXBQYXJhbXMsIHVzZUNNYXApIHsKICAgIGNNYXAudXNlQ01hcCA9IGNyZWF0ZUJ1aWx0SW5DTWFwKHVzZUNNYXAsIGJ1aWx0SW5DTWFwUGFyYW1zKTsKICAgIC8vIElmIHRoZXJlIGFyZW4ndCBhbnkgY29kZSBzcGFjZSByYW5nZXMgZGVmaW5lZCBjbG9uZSBhbGwgdGhlIHBhcmVudCBvbmVzCiAgICAvLyBpbnRvIHRoaXMgY01hcC4KICAgIGlmIChjTWFwLm51bUNvZGVzcGFjZVJhbmdlcyA9PT0gMCkgewogICAgICB2YXIgdXNlQ29kZXNwYWNlUmFuZ2VzID0gY01hcC51c2VDTWFwLmNvZGVzcGFjZVJhbmdlczsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB1c2VDb2Rlc3BhY2VSYW5nZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICBjTWFwLmNvZGVzcGFjZVJhbmdlc1tpXSA9IHVzZUNvZGVzcGFjZVJhbmdlc1tpXS5zbGljZSgpOwogICAgICB9CiAgICAgIGNNYXAubnVtQ29kZXNwYWNlUmFuZ2VzID0gY01hcC51c2VDTWFwLm51bUNvZGVzcGFjZVJhbmdlczsKICAgIH0KICAgIC8vIE1lcmdlIHRoZSBtYXAgaW50byB0aGUgY3VycmVudCBvbmUsIG1ha2luZyBzdXJlIG5vdCB0byBvdmVycmlkZQogICAgLy8gYW55IHByZXZpb3VzbHkgZGVmaW5lZCBlbnRyaWVzLgogICAgY01hcC51c2VDTWFwLmZvckVhY2goZnVuY3Rpb24oa2V5LCB2YWx1ZSkgewogICAgICBpZiAoIWNNYXAuY29udGFpbnMoa2V5KSkgewogICAgICAgIGNNYXAubWFwT25lKGtleSwgY01hcC51c2VDTWFwLmxvb2t1cChrZXkpKTsKICAgICAgfQogICAgfSk7CiAgfQoKICBmdW5jdGlvbiBwYXJzZUJpbmFyeUNNYXAobmFtZSwgYnVpbHRJbkNNYXBQYXJhbXMpIHsKICAgIHZhciB1cmwgPSBidWlsdEluQ01hcFBhcmFtcy51cmwgKyBuYW1lICsgJy5iY21hcCc7CiAgICB2YXIgY01hcCA9IG5ldyBDTWFwKHRydWUpOwogICAgbmV3IEJpbmFyeUNNYXBSZWFkZXIoKS5yZWFkKHVybCwgY01hcCwgZnVuY3Rpb24gKHVzZUNNYXApIHsKICAgICAgZXh0ZW5kQ01hcChjTWFwLCBidWlsdEluQ01hcFBhcmFtcywgdXNlQ01hcCk7CiAgICB9KTsKICAgIHJldHVybiBjTWFwOwogIH0KCiAgZnVuY3Rpb24gY3JlYXRlQnVpbHRJbkNNYXAobmFtZSwgYnVpbHRJbkNNYXBQYXJhbXMpIHsKICAgIGlmIChuYW1lID09PSAnSWRlbnRpdHktSCcpIHsKICAgICAgcmV0dXJuIG5ldyBJZGVudGl0eUNNYXAoZmFsc2UsIDIpOwogICAgfSBlbHNlIGlmIChuYW1lID09PSAnSWRlbnRpdHktVicpIHsKICAgICAgcmV0dXJuIG5ldyBJZGVudGl0eUNNYXAodHJ1ZSwgMik7CiAgICB9CiAgICBpZiAoQlVJTFRfSU5fQ01BUFMuaW5kZXhPZihuYW1lKSA9PT0gLTEpIHsKICAgICAgZXJyb3IoJ1Vua25vd24gY01hcCBuYW1lOiAnICsgbmFtZSk7CiAgICB9CiAgICBhc3NlcnQoYnVpbHRJbkNNYXBQYXJhbXMsICdidWlsdC1pbiBjTWFwIHBhcmFtZXRlcnMgYXJlIG5vdCBwcm92aWRlZCcpOwoKICAgIGlmIChidWlsdEluQ01hcFBhcmFtcy5wYWNrZWQpIHsKICAgICAgcmV0dXJuIHBhcnNlQmluYXJ5Q01hcChuYW1lLCBidWlsdEluQ01hcFBhcmFtcyk7CiAgICB9CgogICAgdmFyIHJlcXVlc3QgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKICAgIHZhciB1cmwgPSBidWlsdEluQ01hcFBhcmFtcy51cmwgKyBuYW1lOwogICAgcmVxdWVzdC5vcGVuKCdHRVQnLCB1cmwsIGZhbHNlKTsKICAgIHJlcXVlc3Quc2VuZChudWxsKTsKICAgIGlmICghcmVxdWVzdC5yZXNwb25zZVRleHQpIHsKICAgICAgZXJyb3IoJ1VuYWJsZSB0byBnZXQgY01hcCBhdDogJyArIHVybCk7CiAgICB9CiAgICB2YXIgY01hcCA9IG5ldyBDTWFwKHRydWUpOwogICAgdmFyIGxleGVyID0gbmV3IExleGVyKG5ldyBTdHJpbmdTdHJlYW0ocmVxdWVzdC5yZXNwb25zZVRleHQpKTsKICAgIHBhcnNlQ01hcChjTWFwLCBsZXhlciwgYnVpbHRJbkNNYXBQYXJhbXMsIG51bGwpOwogICAgcmV0dXJuIGNNYXA7CiAgfQoKICByZXR1cm4gewogICAgY3JlYXRlOiBmdW5jdGlvbiAoZW5jb2RpbmcsIGJ1aWx0SW5DTWFwUGFyYW1zLCB1c2VDTWFwKSB7CiAgICAgIGlmIChpc05hbWUoZW5jb2RpbmcpKSB7CiAgICAgICAgcmV0dXJuIGNyZWF0ZUJ1aWx0SW5DTWFwKGVuY29kaW5nLm5hbWUsIGJ1aWx0SW5DTWFwUGFyYW1zKTsKICAgICAgfSBlbHNlIGlmIChpc1N0cmVhbShlbmNvZGluZykpIHsKICAgICAgICB2YXIgY01hcCA9IG5ldyBDTWFwKCk7CiAgICAgICAgdmFyIGxleGVyID0gbmV3IExleGVyKGVuY29kaW5nKTsKICAgICAgICB0cnkgewogICAgICAgICAgcGFyc2VDTWFwKGNNYXAsIGxleGVyLCBidWlsdEluQ01hcFBhcmFtcywgdXNlQ01hcCk7CiAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgd2FybignSW52YWxpZCBDTWFwIGRhdGEuICcgKyBlKTsKICAgICAgICB9CiAgICAgICAgaWYgKGNNYXAuaXNJZGVudGl0eUNNYXApIHsKICAgICAgICAgIHJldHVybiBjcmVhdGVCdWlsdEluQ01hcChjTWFwLm5hbWUsIGJ1aWx0SW5DTWFwUGFyYW1zKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGNNYXA7CiAgICAgIH0KICAgICAgZXJyb3IoJ0VuY29kaW5nIHJlcXVpcmVkLicpOwogICAgfQogIH07Cn0pKCk7CgoKLy8gVW5pY29kZSBQcml2YXRlIFVzZSBBcmVhCnZhciBQUklWQVRFX1VTRV9PRkZTRVRfU1RBUlQgPSAweEUwMDA7CnZhciBQUklWQVRFX1VTRV9PRkZTRVRfRU5EID0gMHhGOEZGOwp2YXIgU0tJUF9QUklWQVRFX1VTRV9SQU5HRV9GMDAwX1RPX0YwMUYgPSBmYWxzZTsKCi8vIFBERiBHbHlwaCBTcGFjZSBVbml0cyBhcmUgb25lIFRob3VzYW5kdGggb2YgYSBUZXh0U3BhY2UgVW5pdAovLyBleGNlcHQgZm9yIFR5cGUgMyBmb250cwp2YXIgUERGX0dMWVBIX1NQQUNFX1VOSVRTID0gMTAwMDsKCi8vIEhpbnRpbmcgaXMgY3VycmVudGx5IGRpc2FibGVkIGR1ZSB0byB1bmtub3duIHByb2JsZW1zIG9uIHdpbmRvd3MKLy8gaW4gdHJhY2Vtb25rZXkgYW5kIHZhcmlvdXMgb3RoZXIgcGRmcyB3aXRoIHR5cGUxIGZvbnRzLgp2YXIgSElOVElOR19FTkFCTEVEID0gZmFsc2U7CgovLyBBY2NlbnRlZCBjaGFyYWN0YXJzIGFyZSBub3QgZGlzcGxheWVkIHByb3Blcmx5IG9uIHdpbmRvd3MsIHVzaW5nIHRoaXMgZmxhZwovLyB0byBjb250cm9sIGFuYWx5c2lzIG9mIHNlYWMgY2hhcnN0cmluZ3MuCnZhciBTRUFDX0FOQUxZU0lTX0VOQUJMRUQgPSBmYWxzZTsKCnZhciBGb250RmxhZ3MgPSB7CiAgRml4ZWRQaXRjaDogMSwKICBTZXJpZjogMiwKICBTeW1ib2xpYzogNCwKICBTY3JpcHQ6IDgsCiAgTm9uc3ltYm9saWM6IDMyLAogIEl0YWxpYzogNjQsCiAgQWxsQ2FwOiA2NTUzNiwKICBTbWFsbENhcDogMTMxMDcyLAogIEZvcmNlQm9sZDogMjYyMTQ0Cn07Cgp2YXIgRW5jb2RpbmdzID0gewogIEV4cGVydEVuY29kaW5nOiBbJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywKICAgICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywKICAgICdzcGFjZScsICdleGNsYW1zbWFsbCcsICdIdW5nYXJ1bWxhdXRzbWFsbCcsICcnLCAnZG9sbGFyb2xkc3R5bGUnLAogICAgJ2RvbGxhcnN1cGVyaW9yJywgJ2FtcGVyc2FuZHNtYWxsJywgJ0FjdXRlc21hbGwnLCAncGFyZW5sZWZ0c3VwZXJpb3InLAogICAgJ3BhcmVucmlnaHRzdXBlcmlvcicsICd0d29kb3RlbmxlYWRlcicsICdvbmVkb3RlbmxlYWRlcicsICdjb21tYScsCiAgICAnaHlwaGVuJywgJ3BlcmlvZCcsICdmcmFjdGlvbicsICd6ZXJvb2xkc3R5bGUnLCAnb25lb2xkc3R5bGUnLAogICAgJ3R3b29sZHN0eWxlJywgJ3RocmVlb2xkc3R5bGUnLCAnZm91cm9sZHN0eWxlJywgJ2ZpdmVvbGRzdHlsZScsCiAgICAnc2l4b2xkc3R5bGUnLCAnc2V2ZW5vbGRzdHlsZScsICdlaWdodG9sZHN0eWxlJywgJ25pbmVvbGRzdHlsZScsICdjb2xvbicsCiAgICAnc2VtaWNvbG9uJywgJ2NvbW1hc3VwZXJpb3InLCAndGhyZWVxdWFydGVyc2VtZGFzaCcsICdwZXJpb2RzdXBlcmlvcicsCiAgICAncXVlc3Rpb25zbWFsbCcsICcnLCAnYXN1cGVyaW9yJywgJ2JzdXBlcmlvcicsICdjZW50c3VwZXJpb3InLCAnZHN1cGVyaW9yJywKICAgICdlc3VwZXJpb3InLCAnJywgJycsICdpc3VwZXJpb3InLCAnJywgJycsICdsc3VwZXJpb3InLCAnbXN1cGVyaW9yJywKICAgICduc3VwZXJpb3InLCAnb3N1cGVyaW9yJywgJycsICcnLCAncnN1cGVyaW9yJywgJ3NzdXBlcmlvcicsICd0c3VwZXJpb3InLAogICAgJycsICdmZicsICdmaScsICdmbCcsICdmZmknLCAnZmZsJywgJ3BhcmVubGVmdGluZmVyaW9yJywgJycsCiAgICAncGFyZW5yaWdodGluZmVyaW9yJywgJ0NpcmN1bWZsZXhzbWFsbCcsICdoeXBoZW5zdXBlcmlvcicsICdHcmF2ZXNtYWxsJywKICAgICdBc21hbGwnLCAnQnNtYWxsJywgJ0NzbWFsbCcsICdEc21hbGwnLCAnRXNtYWxsJywgJ0ZzbWFsbCcsICdHc21hbGwnLAogICAgJ0hzbWFsbCcsICdJc21hbGwnLCAnSnNtYWxsJywgJ0tzbWFsbCcsICdMc21hbGwnLCAnTXNtYWxsJywgJ05zbWFsbCcsCiAgICAnT3NtYWxsJywgJ1BzbWFsbCcsICdRc21hbGwnLCAnUnNtYWxsJywgJ1NzbWFsbCcsICdUc21hbGwnLCAnVXNtYWxsJywKICAgICdWc21hbGwnLCAnV3NtYWxsJywgJ1hzbWFsbCcsICdZc21hbGwnLCAnWnNtYWxsJywgJ2NvbG9ubW9uZXRhcnknLAogICAgJ29uZWZpdHRlZCcsICdydXBpYWgnLCAnVGlsZGVzbWFsbCcsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsCiAgICAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywKICAgICcnLCAnJywgJycsICcnLCAnJywgJycsICdleGNsYW1kb3duc21hbGwnLCAnY2VudG9sZHN0eWxlJywgJ0xzbGFzaHNtYWxsJywKICAgICcnLCAnJywgJ1NjYXJvbnNtYWxsJywgJ1pjYXJvbnNtYWxsJywgJ0RpZXJlc2lzc21hbGwnLCAnQnJldmVzbWFsbCcsCiAgICAnQ2Fyb25zbWFsbCcsICcnLCAnRG90YWNjZW50c21hbGwnLCAnJywgJycsICdNYWNyb25zbWFsbCcsICcnLCAnJywKICAgICdmaWd1cmVkYXNoJywgJ2h5cGhlbmluZmVyaW9yJywgJycsICcnLCAnT2dvbmVrc21hbGwnLCAnUmluZ3NtYWxsJywKICAgICdDZWRpbGxhc21hbGwnLCAnJywgJycsICcnLCAnb25lcXVhcnRlcicsICdvbmVoYWxmJywgJ3RocmVlcXVhcnRlcnMnLAogICAgJ3F1ZXN0aW9uZG93bnNtYWxsJywgJ29uZWVpZ2h0aCcsICd0aHJlZWVpZ2h0aHMnLCAnZml2ZWVpZ2h0aHMnLAogICAgJ3NldmVuZWlnaHRocycsICdvbmV0aGlyZCcsICd0d290aGlyZHMnLCAnJywgJycsICd6ZXJvc3VwZXJpb3InLAogICAgJ29uZXN1cGVyaW9yJywgJ3R3b3N1cGVyaW9yJywgJ3RocmVlc3VwZXJpb3InLCAnZm91cnN1cGVyaW9yJywKICAgICdmaXZlc3VwZXJpb3InLCAnc2l4c3VwZXJpb3InLCAnc2V2ZW5zdXBlcmlvcicsICdlaWdodHN1cGVyaW9yJywKICAgICduaW5lc3VwZXJpb3InLCAnemVyb2luZmVyaW9yJywgJ29uZWluZmVyaW9yJywgJ3R3b2luZmVyaW9yJywKICAgICd0aHJlZWluZmVyaW9yJywgJ2ZvdXJpbmZlcmlvcicsICdmaXZlaW5mZXJpb3InLCAnc2l4aW5mZXJpb3InLAogICAgJ3NldmVuaW5mZXJpb3InLCAnZWlnaHRpbmZlcmlvcicsICduaW5laW5mZXJpb3InLCAnY2VudGluZmVyaW9yJywKICAgICdkb2xsYXJpbmZlcmlvcicsICdwZXJpb2RpbmZlcmlvcicsICdjb21tYWluZmVyaW9yJywgJ0FncmF2ZXNtYWxsJywKICAgICdBYWN1dGVzbWFsbCcsICdBY2lyY3VtZmxleHNtYWxsJywgJ0F0aWxkZXNtYWxsJywgJ0FkaWVyZXNpc3NtYWxsJywKICAgICdBcmluZ3NtYWxsJywgJ0FFc21hbGwnLCAnQ2NlZGlsbGFzbWFsbCcsICdFZ3JhdmVzbWFsbCcsICdFYWN1dGVzbWFsbCcsCiAgICAnRWNpcmN1bWZsZXhzbWFsbCcsICdFZGllcmVzaXNzbWFsbCcsICdJZ3JhdmVzbWFsbCcsICdJYWN1dGVzbWFsbCcsCiAgICAnSWNpcmN1bWZsZXhzbWFsbCcsICdJZGllcmVzaXNzbWFsbCcsICdFdGhzbWFsbCcsICdOdGlsZGVzbWFsbCcsCiAgICAnT2dyYXZlc21hbGwnLCAnT2FjdXRlc21hbGwnLCAnT2NpcmN1bWZsZXhzbWFsbCcsICdPdGlsZGVzbWFsbCcsCiAgICAnT2RpZXJlc2lzc21hbGwnLCAnT0VzbWFsbCcsICdPc2xhc2hzbWFsbCcsICdVZ3JhdmVzbWFsbCcsICdVYWN1dGVzbWFsbCcsCiAgICAnVWNpcmN1bWZsZXhzbWFsbCcsICdVZGllcmVzaXNzbWFsbCcsICdZYWN1dGVzbWFsbCcsICdUaG9ybnNtYWxsJywKICAgICdZZGllcmVzaXNzbWFsbCddLAogIE1hY0V4cGVydEVuY29kaW5nOiBbJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLAogICAgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywKICAgICdzcGFjZScsICdleGNsYW1zbWFsbCcsICdIdW5nYXJ1bWxhdXRzbWFsbCcsICdjZW50b2xkc3R5bGUnLAogICAgJ2RvbGxhcm9sZHN0eWxlJywgJ2RvbGxhcnN1cGVyaW9yJywgJ2FtcGVyc2FuZHNtYWxsJywgJ0FjdXRlc21hbGwnLAogICAgJ3BhcmVubGVmdHN1cGVyaW9yJywgJ3BhcmVucmlnaHRzdXBlcmlvcicsICd0d29kb3RlbmxlYWRlcicsCiAgICAnb25lZG90ZW5sZWFkZXInLCAnY29tbWEnLCAnaHlwaGVuJywgJ3BlcmlvZCcsICdmcmFjdGlvbicsICd6ZXJvb2xkc3R5bGUnLAogICAgJ29uZW9sZHN0eWxlJywgJ3R3b29sZHN0eWxlJywgJ3RocmVlb2xkc3R5bGUnLCAnZm91cm9sZHN0eWxlJywKICAgICdmaXZlb2xkc3R5bGUnLCAnc2l4b2xkc3R5bGUnLCAnc2V2ZW5vbGRzdHlsZScsICdlaWdodG9sZHN0eWxlJywKICAgICduaW5lb2xkc3R5bGUnLCAnY29sb24nLCAnc2VtaWNvbG9uJywgJycsICd0aHJlZXF1YXJ0ZXJzZW1kYXNoJywgJycsCiAgICAncXVlc3Rpb25zbWFsbCcsICcnLCAnJywgJycsICcnLCAnRXRoc21hbGwnLCAnJywgJycsICdvbmVxdWFydGVyJywKICAgICdvbmVoYWxmJywgJ3RocmVlcXVhcnRlcnMnLCAnb25lZWlnaHRoJywgJ3RocmVlZWlnaHRocycsICdmaXZlZWlnaHRocycsCiAgICAnc2V2ZW5laWdodGhzJywgJ29uZXRoaXJkJywgJ3R3b3RoaXJkcycsICcnLCAnJywgJycsICcnLCAnJywgJycsICdmZicsCiAgICAnZmknLCAnZmwnLCAnZmZpJywgJ2ZmbCcsICdwYXJlbmxlZnRpbmZlcmlvcicsICcnLCAncGFyZW5yaWdodGluZmVyaW9yJywKICAgICdDaXJjdW1mbGV4c21hbGwnLCAnaHlwaGVuaW5mZXJpb3InLCAnR3JhdmVzbWFsbCcsICdBc21hbGwnLCAnQnNtYWxsJywKICAgICdDc21hbGwnLCAnRHNtYWxsJywgJ0VzbWFsbCcsICdGc21hbGwnLCAnR3NtYWxsJywgJ0hzbWFsbCcsICdJc21hbGwnLAogICAgJ0pzbWFsbCcsICdLc21hbGwnLCAnTHNtYWxsJywgJ01zbWFsbCcsICdOc21hbGwnLCAnT3NtYWxsJywgJ1BzbWFsbCcsCiAgICAnUXNtYWxsJywgJ1JzbWFsbCcsICdTc21hbGwnLCAnVHNtYWxsJywgJ1VzbWFsbCcsICdWc21hbGwnLCAnV3NtYWxsJywKICAgICdYc21hbGwnLCAnWXNtYWxsJywgJ1pzbWFsbCcsICdjb2xvbm1vbmV0YXJ5JywgJ29uZWZpdHRlZCcsICdydXBpYWgnLAogICAgJ1RpbGRlc21hbGwnLCAnJywgJycsICdhc3VwZXJpb3InLCAnY2VudHN1cGVyaW9yJywgJycsICcnLCAnJywgJycsCiAgICAnQWFjdXRlc21hbGwnLCAnQWdyYXZlc21hbGwnLCAnQWNpcmN1bWZsZXhzbWFsbCcsICdBZGllcmVzaXNzbWFsbCcsCiAgICAnQXRpbGRlc21hbGwnLCAnQXJpbmdzbWFsbCcsICdDY2VkaWxsYXNtYWxsJywgJ0VhY3V0ZXNtYWxsJywgJ0VncmF2ZXNtYWxsJywKICAgICdFY2lyY3VtZmxleHNtYWxsJywgJ0VkaWVyZXNpc3NtYWxsJywgJ0lhY3V0ZXNtYWxsJywgJ0lncmF2ZXNtYWxsJywKICAgICdJY2lyY3VtZmxleHNtYWxsJywgJ0lkaWVyZXNpc3NtYWxsJywgJ050aWxkZXNtYWxsJywgJ09hY3V0ZXNtYWxsJywKICAgICdPZ3JhdmVzbWFsbCcsICdPY2lyY3VtZmxleHNtYWxsJywgJ09kaWVyZXNpc3NtYWxsJywgJ090aWxkZXNtYWxsJywKICAgICdVYWN1dGVzbWFsbCcsICdVZ3JhdmVzbWFsbCcsICdVY2lyY3VtZmxleHNtYWxsJywgJ1VkaWVyZXNpc3NtYWxsJywgJycsCiAgICAnZWlnaHRzdXBlcmlvcicsICdmb3VyaW5mZXJpb3InLCAndGhyZWVpbmZlcmlvcicsICdzaXhpbmZlcmlvcicsCiAgICAnZWlnaHRpbmZlcmlvcicsICdzZXZlbmluZmVyaW9yJywgJ1NjYXJvbnNtYWxsJywgJycsICdjZW50aW5mZXJpb3InLAogICAgJ3R3b2luZmVyaW9yJywgJycsICdEaWVyZXNpc3NtYWxsJywgJycsICdDYXJvbnNtYWxsJywgJ29zdXBlcmlvcicsCiAgICAnZml2ZWluZmVyaW9yJywgJycsICdjb21tYWluZmVyaW9yJywgJ3BlcmlvZGluZmVyaW9yJywgJ1lhY3V0ZXNtYWxsJywgJycsCiAgICAnZG9sbGFyaW5mZXJpb3InLCAnJywgJ1Rob3Juc21hbGwnLCAnJywgJ25pbmVpbmZlcmlvcicsICd6ZXJvaW5mZXJpb3InLAogICAgJ1pjYXJvbnNtYWxsJywgJ0FFc21hbGwnLCAnT3NsYXNoc21hbGwnLCAncXVlc3Rpb25kb3duc21hbGwnLAogICAgJ29uZWluZmVyaW9yJywgJ0xzbGFzaHNtYWxsJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJ0NlZGlsbGFzbWFsbCcsICcnLAogICAgJycsICcnLCAnJywgJycsICdPRXNtYWxsJywgJ2ZpZ3VyZWRhc2gnLCAnaHlwaGVuc3VwZXJpb3InLCAnJywgJycsICcnLCAnJywKICAgICdleGNsYW1kb3duc21hbGwnLCAnJywgJ1lkaWVyZXNpc3NtYWxsJywgJycsICdvbmVzdXBlcmlvcicsICd0d29zdXBlcmlvcicsCiAgICAndGhyZWVzdXBlcmlvcicsICdmb3Vyc3VwZXJpb3InLCAnZml2ZXN1cGVyaW9yJywgJ3NpeHN1cGVyaW9yJywKICAgICdzZXZlbnN1cGVyaW9yJywgJ25pbmVzdXBlcmlvcicsICd6ZXJvc3VwZXJpb3InLCAnJywgJ2VzdXBlcmlvcicsCiAgICAncnN1cGVyaW9yJywgJ3RzdXBlcmlvcicsICcnLCAnJywgJ2lzdXBlcmlvcicsICdzc3VwZXJpb3InLCAnZHN1cGVyaW9yJywKICAgICcnLCAnJywgJycsICcnLCAnJywgJ2xzdXBlcmlvcicsICdPZ29uZWtzbWFsbCcsICdCcmV2ZXNtYWxsJywKICAgICdNYWNyb25zbWFsbCcsICdic3VwZXJpb3InLCAnbnN1cGVyaW9yJywgJ21zdXBlcmlvcicsICdjb21tYXN1cGVyaW9yJywKICAgICdwZXJpb2RzdXBlcmlvcicsICdEb3RhY2NlbnRzbWFsbCcsICdSaW5nc21hbGwnXSwKICBNYWNSb21hbkVuY29kaW5nOiBbJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywKICAgICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywKICAgICdzcGFjZScsICdleGNsYW0nLCAncXVvdGVkYmwnLCAnbnVtYmVyc2lnbicsICdkb2xsYXInLCAncGVyY2VudCcsCiAgICAnYW1wZXJzYW5kJywgJ3F1b3Rlc2luZ2xlJywgJ3BhcmVubGVmdCcsICdwYXJlbnJpZ2h0JywgJ2FzdGVyaXNrJywgJ3BsdXMnLAogICAgJ2NvbW1hJywgJ2h5cGhlbicsICdwZXJpb2QnLCAnc2xhc2gnLCAnemVybycsICdvbmUnLCAndHdvJywgJ3RocmVlJywKICAgICdmb3VyJywgJ2ZpdmUnLCAnc2l4JywgJ3NldmVuJywgJ2VpZ2h0JywgJ25pbmUnLCAnY29sb24nLCAnc2VtaWNvbG9uJywKICAgICdsZXNzJywgJ2VxdWFsJywgJ2dyZWF0ZXInLCAncXVlc3Rpb24nLCAnYXQnLCAnQScsICdCJywgJ0MnLCAnRCcsICdFJywgJ0YnLAogICAgJ0cnLCAnSCcsICdJJywgJ0onLCAnSycsICdMJywgJ00nLCAnTicsICdPJywgJ1AnLCAnUScsICdSJywgJ1MnLCAnVCcsICdVJywKICAgICdWJywgJ1cnLCAnWCcsICdZJywgJ1onLCAnYnJhY2tldGxlZnQnLCAnYmFja3NsYXNoJywgJ2JyYWNrZXRyaWdodCcsCiAgICAnYXNjaWljaXJjdW0nLCAndW5kZXJzY29yZScsICdncmF2ZScsICdhJywgJ2InLCAnYycsICdkJywgJ2UnLCAnZicsICdnJywKICAgICdoJywgJ2knLCAnaicsICdrJywgJ2wnLCAnbScsICduJywgJ28nLCAncCcsICdxJywgJ3InLCAncycsICd0JywgJ3UnLCAndicsCiAgICAndycsICd4JywgJ3knLCAneicsICdicmFjZWxlZnQnLCAnYmFyJywgJ2JyYWNlcmlnaHQnLCAnYXNjaWl0aWxkZScsICcnLAogICAgJ0FkaWVyZXNpcycsICdBcmluZycsICdDY2VkaWxsYScsICdFYWN1dGUnLCAnTnRpbGRlJywgJ09kaWVyZXNpcycsCiAgICAnVWRpZXJlc2lzJywgJ2FhY3V0ZScsICdhZ3JhdmUnLCAnYWNpcmN1bWZsZXgnLCAnYWRpZXJlc2lzJywgJ2F0aWxkZScsCiAgICAnYXJpbmcnLCAnY2NlZGlsbGEnLCAnZWFjdXRlJywgJ2VncmF2ZScsICdlY2lyY3VtZmxleCcsICdlZGllcmVzaXMnLAogICAgJ2lhY3V0ZScsICdpZ3JhdmUnLCAnaWNpcmN1bWZsZXgnLCAnaWRpZXJlc2lzJywgJ250aWxkZScsICdvYWN1dGUnLAogICAgJ29ncmF2ZScsICdvY2lyY3VtZmxleCcsICdvZGllcmVzaXMnLCAnb3RpbGRlJywgJ3VhY3V0ZScsICd1Z3JhdmUnLAogICAgJ3VjaXJjdW1mbGV4JywgJ3VkaWVyZXNpcycsICdkYWdnZXInLCAnZGVncmVlJywgJ2NlbnQnLCAnc3RlcmxpbmcnLAogICAgJ3NlY3Rpb24nLCAnYnVsbGV0JywgJ3BhcmFncmFwaCcsICdnZXJtYW5kYmxzJywgJ3JlZ2lzdGVyZWQnLCAnY29weXJpZ2h0JywKICAgICd0cmFkZW1hcmsnLCAnYWN1dGUnLCAnZGllcmVzaXMnLCAnbm90ZXF1YWwnLCAnQUUnLCAnT3NsYXNoJywgJ2luZmluaXR5JywKICAgICdwbHVzbWludXMnLCAnbGVzc2VxdWFsJywgJ2dyZWF0ZXJlcXVhbCcsICd5ZW4nLCAnbXUnLCAncGFydGlhbGRpZmYnLAogICAgJ3N1bW1hdGlvbicsICdwcm9kdWN0JywgJ3BpJywgJ2ludGVncmFsJywgJ29yZGZlbWluaW5lJywgJ29yZG1hc2N1bGluZScsCiAgICAnT21lZ2EnLCAnYWUnLCAnb3NsYXNoJywgJ3F1ZXN0aW9uZG93bicsICdleGNsYW1kb3duJywgJ2xvZ2ljYWxub3QnLAogICAgJ3JhZGljYWwnLCAnZmxvcmluJywgJ2FwcHJveGVxdWFsJywgJ0RlbHRhJywgJ2d1aWxsZW1vdGxlZnQnLAogICAgJ2d1aWxsZW1vdHJpZ2h0JywgJ2VsbGlwc2lzJywgJ3NwYWNlJywgJ0FncmF2ZScsICdBdGlsZGUnLCAnT3RpbGRlJywgJ09FJywKICAgICdvZScsICdlbmRhc2gnLCAnZW1kYXNoJywgJ3F1b3RlZGJsbGVmdCcsICdxdW90ZWRibHJpZ2h0JywgJ3F1b3RlbGVmdCcsCiAgICAncXVvdGVyaWdodCcsICdkaXZpZGUnLCAnbG96ZW5nZScsICd5ZGllcmVzaXMnLCAnWWRpZXJlc2lzJywgJ2ZyYWN0aW9uJywKICAgICdjdXJyZW5jeScsICdndWlsc2luZ2xsZWZ0JywgJ2d1aWxzaW5nbHJpZ2h0JywgJ2ZpJywgJ2ZsJywgJ2RhZ2dlcmRibCcsCiAgICAncGVyaW9kY2VudGVyZWQnLCAncXVvdGVzaW5nbGJhc2UnLCAncXVvdGVkYmxiYXNlJywgJ3BlcnRob3VzYW5kJywKICAgICdBY2lyY3VtZmxleCcsICdFY2lyY3VtZmxleCcsICdBYWN1dGUnLCAnRWRpZXJlc2lzJywgJ0VncmF2ZScsICdJYWN1dGUnLAogICAgJ0ljaXJjdW1mbGV4JywgJ0lkaWVyZXNpcycsICdJZ3JhdmUnLCAnT2FjdXRlJywgJ09jaXJjdW1mbGV4JywgJ2FwcGxlJywKICAgICdPZ3JhdmUnLCAnVWFjdXRlJywgJ1VjaXJjdW1mbGV4JywgJ1VncmF2ZScsICdkb3RsZXNzaScsICdjaXJjdW1mbGV4JywKICAgICd0aWxkZScsICdtYWNyb24nLCAnYnJldmUnLCAnZG90YWNjZW50JywgJ3JpbmcnLCAnY2VkaWxsYScsICdodW5nYXJ1bWxhdXQnLAogICAgJ29nb25laycsICdjYXJvbiddLAogIFN0YW5kYXJkRW5jb2Rpbmc6IFsnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLAogICAgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLAogICAgJ3NwYWNlJywgJ2V4Y2xhbScsICdxdW90ZWRibCcsICdudW1iZXJzaWduJywgJ2RvbGxhcicsICdwZXJjZW50JywKICAgICdhbXBlcnNhbmQnLCAncXVvdGVyaWdodCcsICdwYXJlbmxlZnQnLCAncGFyZW5yaWdodCcsICdhc3RlcmlzaycsICdwbHVzJywKICAgICdjb21tYScsICdoeXBoZW4nLCAncGVyaW9kJywgJ3NsYXNoJywgJ3plcm8nLCAnb25lJywgJ3R3bycsICd0aHJlZScsCiAgICAnZm91cicsICdmaXZlJywgJ3NpeCcsICdzZXZlbicsICdlaWdodCcsICduaW5lJywgJ2NvbG9uJywgJ3NlbWljb2xvbicsCiAgICAnbGVzcycsICdlcXVhbCcsICdncmVhdGVyJywgJ3F1ZXN0aW9uJywgJ2F0JywgJ0EnLCAnQicsICdDJywgJ0QnLCAnRScsICdGJywKICAgICdHJywgJ0gnLCAnSScsICdKJywgJ0snLCAnTCcsICdNJywgJ04nLCAnTycsICdQJywgJ1EnLCAnUicsICdTJywgJ1QnLCAnVScsCiAgICAnVicsICdXJywgJ1gnLCAnWScsICdaJywgJ2JyYWNrZXRsZWZ0JywgJ2JhY2tzbGFzaCcsICdicmFja2V0cmlnaHQnLAogICAgJ2FzY2lpY2lyY3VtJywgJ3VuZGVyc2NvcmUnLCAncXVvdGVsZWZ0JywgJ2EnLCAnYicsICdjJywgJ2QnLCAnZScsICdmJywKICAgICdnJywgJ2gnLCAnaScsICdqJywgJ2snLCAnbCcsICdtJywgJ24nLCAnbycsICdwJywgJ3EnLCAncicsICdzJywgJ3QnLCAndScsCiAgICAndicsICd3JywgJ3gnLCAneScsICd6JywgJ2JyYWNlbGVmdCcsICdiYXInLCAnYnJhY2VyaWdodCcsICdhc2NpaXRpbGRlJywKICAgICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLAogICAgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJ2V4Y2xhbWRvd24nLAogICAgJ2NlbnQnLCAnc3RlcmxpbmcnLCAnZnJhY3Rpb24nLCAneWVuJywgJ2Zsb3JpbicsICdzZWN0aW9uJywgJ2N1cnJlbmN5JywKICAgICdxdW90ZXNpbmdsZScsICdxdW90ZWRibGxlZnQnLCAnZ3VpbGxlbW90bGVmdCcsICdndWlsc2luZ2xsZWZ0JywKICAgICdndWlsc2luZ2xyaWdodCcsICdmaScsICdmbCcsICcnLCAnZW5kYXNoJywgJ2RhZ2dlcicsICdkYWdnZXJkYmwnLAogICAgJ3BlcmlvZGNlbnRlcmVkJywgJycsICdwYXJhZ3JhcGgnLCAnYnVsbGV0JywgJ3F1b3Rlc2luZ2xiYXNlJywKICAgICdxdW90ZWRibGJhc2UnLCAncXVvdGVkYmxyaWdodCcsICdndWlsbGVtb3RyaWdodCcsICdlbGxpcHNpcycsCiAgICAncGVydGhvdXNhbmQnLCAnJywgJ3F1ZXN0aW9uZG93bicsICcnLCAnZ3JhdmUnLCAnYWN1dGUnLCAnY2lyY3VtZmxleCcsCiAgICAndGlsZGUnLCAnbWFjcm9uJywgJ2JyZXZlJywgJ2RvdGFjY2VudCcsICdkaWVyZXNpcycsICcnLCAncmluZycsICdjZWRpbGxhJywKICAgICcnLCAnaHVuZ2FydW1sYXV0JywgJ29nb25laycsICdjYXJvbicsICdlbWRhc2gnLCAnJywgJycsICcnLCAnJywgJycsICcnLAogICAgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICdBRScsICcnLCAnb3JkZmVtaW5pbmUnLCAnJywgJycsCiAgICAnJywgJycsICdMc2xhc2gnLCAnT3NsYXNoJywgJ09FJywgJ29yZG1hc2N1bGluZScsICcnLCAnJywgJycsICcnLCAnJywgJ2FlJywKICAgICcnLCAnJywgJycsICdkb3RsZXNzaScsICcnLCAnJywgJ2xzbGFzaCcsICdvc2xhc2gnLCAnb2UnLCAnZ2VybWFuZGJscyddLAogIFdpbkFuc2lFbmNvZGluZzogWycnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsCiAgICAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsCiAgICAnc3BhY2UnLCAnZXhjbGFtJywgJ3F1b3RlZGJsJywgJ251bWJlcnNpZ24nLCAnZG9sbGFyJywgJ3BlcmNlbnQnLAogICAgJ2FtcGVyc2FuZCcsICdxdW90ZXNpbmdsZScsICdwYXJlbmxlZnQnLCAncGFyZW5yaWdodCcsICdhc3RlcmlzaycsICdwbHVzJywKICAgICdjb21tYScsICdoeXBoZW4nLCAncGVyaW9kJywgJ3NsYXNoJywgJ3plcm8nLCAnb25lJywgJ3R3bycsICd0aHJlZScsCiAgICAnZm91cicsICdmaXZlJywgJ3NpeCcsICdzZXZlbicsICdlaWdodCcsICduaW5lJywgJ2NvbG9uJywgJ3NlbWljb2xvbicsCiAgICAnbGVzcycsICdlcXVhbCcsICdncmVhdGVyJywgJ3F1ZXN0aW9uJywgJ2F0JywgJ0EnLCAnQicsICdDJywgJ0QnLCAnRScsICdGJywKICAgICdHJywgJ0gnLCAnSScsICdKJywgJ0snLCAnTCcsICdNJywgJ04nLCAnTycsICdQJywgJ1EnLCAnUicsICdTJywgJ1QnLCAnVScsCiAgICAnVicsICdXJywgJ1gnLCAnWScsICdaJywgJ2JyYWNrZXRsZWZ0JywgJ2JhY2tzbGFzaCcsICdicmFja2V0cmlnaHQnLAogICAgJ2FzY2lpY2lyY3VtJywgJ3VuZGVyc2NvcmUnLCAnZ3JhdmUnLCAnYScsICdiJywgJ2MnLCAnZCcsICdlJywgJ2YnLCAnZycsCiAgICAnaCcsICdpJywgJ2onLCAnaycsICdsJywgJ20nLCAnbicsICdvJywgJ3AnLCAncScsICdyJywgJ3MnLCAndCcsICd1JywgJ3YnLAogICAgJ3cnLCAneCcsICd5JywgJ3onLCAnYnJhY2VsZWZ0JywgJ2JhcicsICdicmFjZXJpZ2h0JywgJ2FzY2lpdGlsZGUnLAogICAgJ2J1bGxldCcsICdFdXJvJywgJ2J1bGxldCcsICdxdW90ZXNpbmdsYmFzZScsICdmbG9yaW4nLCAncXVvdGVkYmxiYXNlJywKICAgICdlbGxpcHNpcycsICdkYWdnZXInLCAnZGFnZ2VyZGJsJywgJ2NpcmN1bWZsZXgnLCAncGVydGhvdXNhbmQnLCAnU2Nhcm9uJywKICAgICdndWlsc2luZ2xsZWZ0JywgJ09FJywgJ2J1bGxldCcsICdaY2Fyb24nLCAnYnVsbGV0JywgJ2J1bGxldCcsICdxdW90ZWxlZnQnLAogICAgJ3F1b3RlcmlnaHQnLCAncXVvdGVkYmxsZWZ0JywgJ3F1b3RlZGJscmlnaHQnLCAnYnVsbGV0JywgJ2VuZGFzaCcsCiAgICAnZW1kYXNoJywgJ3RpbGRlJywgJ3RyYWRlbWFyaycsICdzY2Fyb24nLCAnZ3VpbHNpbmdscmlnaHQnLCAnb2UnLCAnYnVsbGV0JywKICAgICd6Y2Fyb24nLCAnWWRpZXJlc2lzJywgJ3NwYWNlJywgJ2V4Y2xhbWRvd24nLCAnY2VudCcsICdzdGVybGluZycsCiAgICAnY3VycmVuY3knLCAneWVuJywgJ2Jyb2tlbmJhcicsICdzZWN0aW9uJywgJ2RpZXJlc2lzJywgJ2NvcHlyaWdodCcsCiAgICAnb3JkZmVtaW5pbmUnLCAnZ3VpbGxlbW90bGVmdCcsICdsb2dpY2Fsbm90JywgJ2h5cGhlbicsICdyZWdpc3RlcmVkJywKICAgICdtYWNyb24nLCAnZGVncmVlJywgJ3BsdXNtaW51cycsICd0d29zdXBlcmlvcicsICd0aHJlZXN1cGVyaW9yJywgJ2FjdXRlJywKICAgICdtdScsICdwYXJhZ3JhcGgnLCAncGVyaW9kY2VudGVyZWQnLCAnY2VkaWxsYScsICdvbmVzdXBlcmlvcicsCiAgICAnb3JkbWFzY3VsaW5lJywgJ2d1aWxsZW1vdHJpZ2h0JywgJ29uZXF1YXJ0ZXInLCAnb25laGFsZicsICd0aHJlZXF1YXJ0ZXJzJywKICAgICdxdWVzdGlvbmRvd24nLCAnQWdyYXZlJywgJ0FhY3V0ZScsICdBY2lyY3VtZmxleCcsICdBdGlsZGUnLCAnQWRpZXJlc2lzJywKICAgICdBcmluZycsICdBRScsICdDY2VkaWxsYScsICdFZ3JhdmUnLCAnRWFjdXRlJywgJ0VjaXJjdW1mbGV4JywgJ0VkaWVyZXNpcycsCiAgICAnSWdyYXZlJywgJ0lhY3V0ZScsICdJY2lyY3VtZmxleCcsICdJZGllcmVzaXMnLCAnRXRoJywgJ050aWxkZScsICdPZ3JhdmUnLAogICAgJ09hY3V0ZScsICdPY2lyY3VtZmxleCcsICdPdGlsZGUnLCAnT2RpZXJlc2lzJywgJ211bHRpcGx5JywgJ09zbGFzaCcsCiAgICAnVWdyYXZlJywgJ1VhY3V0ZScsICdVY2lyY3VtZmxleCcsICdVZGllcmVzaXMnLCAnWWFjdXRlJywgJ1Rob3JuJywKICAgICdnZXJtYW5kYmxzJywgJ2FncmF2ZScsICdhYWN1dGUnLCAnYWNpcmN1bWZsZXgnLCAnYXRpbGRlJywgJ2FkaWVyZXNpcycsCiAgICAnYXJpbmcnLCAnYWUnLCAnY2NlZGlsbGEnLCAnZWdyYXZlJywgJ2VhY3V0ZScsICdlY2lyY3VtZmxleCcsICdlZGllcmVzaXMnLAogICAgJ2lncmF2ZScsICdpYWN1dGUnLCAnaWNpcmN1bWZsZXgnLCAnaWRpZXJlc2lzJywgJ2V0aCcsICdudGlsZGUnLCAnb2dyYXZlJywKICAgICdvYWN1dGUnLCAnb2NpcmN1bWZsZXgnLCAnb3RpbGRlJywgJ29kaWVyZXNpcycsICdkaXZpZGUnLCAnb3NsYXNoJywKICAgICd1Z3JhdmUnLCAndWFjdXRlJywgJ3VjaXJjdW1mbGV4JywgJ3VkaWVyZXNpcycsICd5YWN1dGUnLCAndGhvcm4nLAogICAgJ3lkaWVyZXNpcyddLAogIFN5bWJvbFNldEVuY29kaW5nOiBbJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLAogICAgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywKICAgICdzcGFjZScsICdleGNsYW0nLCAndW5pdmVyc2FsJywgJ251bWJlcnNpZ24nLCAnZXhpc3RlbnRpYWwnLCAncGVyY2VudCcsCiAgICAnYW1wZXJzYW5kJywgJ3N1Y2h0aGF0JywgJ3BhcmVubGVmdCcsICdwYXJlbnJpZ2h0JywgJ2FzdGVyaXNrbWF0aCcsICdwbHVzJywKICAgICdjb21tYScsICdtaW51cycsICdwZXJpb2QnLCAnc2xhc2gnLCAnemVybycsICdvbmUnLCAndHdvJywgJ3RocmVlJywgJ2ZvdXInLAogICAgJ2ZpdmUnLCAnc2l4JywgJ3NldmVuJywgJ2VpZ2h0JywgJ25pbmUnLCAnY29sb24nLCAnc2VtaWNvbG9uJywgJ2xlc3MnLAogICAgJ2VxdWFsJywgJ2dyZWF0ZXInLCAncXVlc3Rpb24nLCAnY29uZ3J1ZW50JywgJ0FscGhhJywgJ0JldGEnLCAnQ2hpJywKICAgICdEZWx0YScsICdFcHNpbG9uJywgJ1BoaScsICdHYW1tYScsICdFdGEnLCAnSW90YScsICd0aGV0YTEnLCAnS2FwcGEnLAogICAgJ0xhbWJkYScsICdNdScsICdOdScsICdPbWljcm9uJywgJ1BpJywgJ1RoZXRhJywgJ1JobycsICdTaWdtYScsICdUYXUnLAogICAgJ1Vwc2lsb24nLCAnc2lnbWExJywgJ09tZWdhJywgJ1hpJywgJ1BzaScsICdaZXRhJywgJ2JyYWNrZXRsZWZ0JywKICAgICd0aGVyZWZvcmUnLCAnYnJhY2tldHJpZ2h0JywgJ3BlcnBlbmRpY3VsYXInLCAndW5kZXJzY29yZScsICdyYWRpY2FsZXgnLAogICAgJ2FscGhhJywgJ2JldGEnLCAnY2hpJywgJ2RlbHRhJywgJ2Vwc2lsb24nLCAncGhpJywgJ2dhbW1hJywgJ2V0YScsICdpb3RhJywKICAgICdwaGkxJywgJ2thcHBhJywgJ2xhbWJkYScsICdtdScsICdudScsICdvbWljcm9uJywgJ3BpJywgJ3RoZXRhJywgJ3JobycsCiAgICAnc2lnbWEnLCAndGF1JywgJ3Vwc2lsb24nLCAnb21lZ2ExJywgJ29tZWdhJywgJ3hpJywgJ3BzaScsICd6ZXRhJywKICAgICdicmFjZWxlZnQnLCAnYmFyJywgJ2JyYWNlcmlnaHQnLCAnc2ltaWxhcicsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLAogICAgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsCiAgICAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJ0V1cm8nLCAnVXBzaWxvbjEnLCAnbWludXRlJywgJ2xlc3NlcXVhbCcsCiAgICAnZnJhY3Rpb24nLCAnaW5maW5pdHknLCAnZmxvcmluJywgJ2NsdWInLCAnZGlhbW9uZCcsICdoZWFydCcsICdzcGFkZScsCiAgICAnYXJyb3dib3RoJywgJ2Fycm93bGVmdCcsICdhcnJvd3VwJywgJ2Fycm93cmlnaHQnLCAnYXJyb3dkb3duJywgJ2RlZ3JlZScsCiAgICAncGx1c21pbnVzJywgJ3NlY29uZCcsICdncmVhdGVyZXF1YWwnLCAnbXVsdGlwbHknLCAncHJvcG9ydGlvbmFsJywKICAgICdwYXJ0aWFsZGlmZicsICdidWxsZXQnLCAnZGl2aWRlJywgJ25vdGVxdWFsJywgJ2VxdWl2YWxlbmNlJywKICAgICdhcHByb3hlcXVhbCcsICdlbGxpcHNpcycsICdhcnJvd3ZlcnRleCcsICdhcnJvd2hvcml6ZXgnLCAnY2FycmlhZ2VyZXR1cm4nLAogICAgJ2FsZXBoJywgJ0lmcmFrdHVyJywgJ1JmcmFrdHVyJywgJ3dlaWVyc3RyYXNzJywgJ2NpcmNsZW11bHRpcGx5JywKICAgICdjaXJjbGVwbHVzJywgJ2VtcHR5c2V0JywgJ2ludGVyc2VjdGlvbicsICd1bmlvbicsICdwcm9wZXJzdXBlcnNldCcsCiAgICAncmVmbGV4c3VwZXJzZXQnLCAnbm90c3Vic2V0JywgJ3Byb3BlcnN1YnNldCcsICdyZWZsZXhzdWJzZXQnLCAnZWxlbWVudCcsCiAgICAnbm90ZWxlbWVudCcsICdhbmdsZScsICdncmFkaWVudCcsICdyZWdpc3RlcnNlcmlmJywgJ2NvcHlyaWdodHNlcmlmJywKICAgICd0cmFkZW1hcmtzZXJpZicsICdwcm9kdWN0JywgJ3JhZGljYWwnLCAnZG90bWF0aCcsICdsb2dpY2Fsbm90JywKICAgICdsb2dpY2FsYW5kJywgJ2xvZ2ljYWxvcicsICdhcnJvd2RibGJvdGgnLCAnYXJyb3dkYmxsZWZ0JywgJ2Fycm93ZGJsdXAnLAogICAgJ2Fycm93ZGJscmlnaHQnLCAnYXJyb3dkYmxkb3duJywgJ2xvemVuZ2UnLCAnYW5nbGVsZWZ0JywgJ3JlZ2lzdGVyc2FucycsCiAgICAnY29weXJpZ2h0c2FucycsICd0cmFkZW1hcmtzYW5zJywgJ3N1bW1hdGlvbicsICdwYXJlbmxlZnR0cCcsCiAgICAncGFyZW5sZWZ0ZXgnLCAncGFyZW5sZWZ0YnQnLCAnYnJhY2tldGxlZnR0cCcsICdicmFja2V0bGVmdGV4JywKICAgICdicmFja2V0bGVmdGJ0JywgJ2JyYWNlbGVmdHRwJywgJ2JyYWNlbGVmdG1pZCcsICdicmFjZWxlZnRidCcsICdicmFjZWV4JywKICAgICcnLCAnYW5nbGVyaWdodCcsICdpbnRlZ3JhbCcsICdpbnRlZ3JhbHRwJywgJ2ludGVncmFsZXgnLCAnaW50ZWdyYWxidCcsCiAgICAncGFyZW5yaWdodHRwJywgJ3BhcmVucmlnaHRleCcsICdwYXJlbnJpZ2h0YnQnLCAnYnJhY2tldHJpZ2h0dHAnLAogICAgJ2JyYWNrZXRyaWdodGV4JywgJ2JyYWNrZXRyaWdodGJ0JywgJ2JyYWNlcmlnaHR0cCcsICdicmFjZXJpZ2h0bWlkJywKICAgICdicmFjZXJpZ2h0YnQnXSwKICBaYXBmRGluZ2JhdHNFbmNvZGluZzogWycnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywKICAgICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsCiAgICAnc3BhY2UnLCAnYTEnLCAnYTInLCAnYTIwMicsICdhMycsICdhNCcsICdhNScsICdhMTE5JywgJ2ExMTgnLCAnYTExNycsCiAgICAnYTExJywgJ2ExMicsICdhMTMnLCAnYTE0JywgJ2ExNScsICdhMTYnLCAnYTEwNScsICdhMTcnLCAnYTE4JywgJ2ExOScsCiAgICAnYTIwJywgJ2EyMScsICdhMjInLCAnYTIzJywgJ2EyNCcsICdhMjUnLCAnYTI2JywgJ2EyNycsICdhMjgnLCAnYTYnLCAnYTcnLAogICAgJ2E4JywgJ2E5JywgJ2ExMCcsICdhMjknLCAnYTMwJywgJ2EzMScsICdhMzInLCAnYTMzJywgJ2EzNCcsICdhMzUnLCAnYTM2JywKICAgICdhMzcnLCAnYTM4JywgJ2EzOScsICdhNDAnLCAnYTQxJywgJ2E0MicsICdhNDMnLCAnYTQ0JywgJ2E0NScsICdhNDYnLAogICAgJ2E0NycsICdhNDgnLCAnYTQ5JywgJ2E1MCcsICdhNTEnLCAnYTUyJywgJ2E1MycsICdhNTQnLCAnYTU1JywgJ2E1NicsCiAgICAnYTU3JywgJ2E1OCcsICdhNTknLCAnYTYwJywgJ2E2MScsICdhNjInLCAnYTYzJywgJ2E2NCcsICdhNjUnLCAnYTY2JywKICAgICdhNjcnLCAnYTY4JywgJ2E2OScsICdhNzAnLCAnYTcxJywgJ2E3MicsICdhNzMnLCAnYTc0JywgJ2EyMDMnLCAnYTc1JywKICAgICdhMjA0JywgJ2E3NicsICdhNzcnLCAnYTc4JywgJ2E3OScsICdhODEnLCAnYTgyJywgJ2E4MycsICdhODQnLCAnYTk3JywKICAgICdhOTgnLCAnYTk5JywgJ2ExMDAnLCAnJywgJ2E4OScsICdhOTAnLCAnYTkzJywgJ2E5NCcsICdhOTEnLCAnYTkyJywgJ2EyMDUnLAogICAgJ2E4NScsICdhMjA2JywgJ2E4NicsICdhODcnLCAnYTg4JywgJ2E5NScsICdhOTYnLCAnJywgJycsICcnLCAnJywgJycsICcnLAogICAgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICdhMTAxJywgJ2ExMDInLCAnYTEwMycsCiAgICAnYTEwNCcsICdhMTA2JywgJ2ExMDcnLCAnYTEwOCcsICdhMTEyJywgJ2ExMTEnLCAnYTExMCcsICdhMTA5JywgJ2ExMjAnLAogICAgJ2ExMjEnLCAnYTEyMicsICdhMTIzJywgJ2ExMjQnLCAnYTEyNScsICdhMTI2JywgJ2ExMjcnLCAnYTEyOCcsICdhMTI5JywKICAgICdhMTMwJywgJ2ExMzEnLCAnYTEzMicsICdhMTMzJywgJ2ExMzQnLCAnYTEzNScsICdhMTM2JywgJ2ExMzcnLCAnYTEzOCcsCiAgICAnYTEzOScsICdhMTQwJywgJ2ExNDEnLCAnYTE0MicsICdhMTQzJywgJ2ExNDQnLCAnYTE0NScsICdhMTQ2JywgJ2ExNDcnLAogICAgJ2ExNDgnLCAnYTE0OScsICdhMTUwJywgJ2ExNTEnLCAnYTE1MicsICdhMTUzJywgJ2ExNTQnLCAnYTE1NScsICdhMTU2JywKICAgICdhMTU3JywgJ2ExNTgnLCAnYTE1OScsICdhMTYwJywgJ2ExNjEnLCAnYTE2MycsICdhMTY0JywgJ2ExOTYnLCAnYTE2NScsCiAgICAnYTE5MicsICdhMTY2JywgJ2ExNjcnLCAnYTE2OCcsICdhMTY5JywgJ2ExNzAnLCAnYTE3MScsICdhMTcyJywgJ2ExNzMnLAogICAgJ2ExNjInLCAnYTE3NCcsICdhMTc1JywgJ2ExNzYnLCAnYTE3NycsICdhMTc4JywgJ2ExNzknLCAnYTE5MycsICdhMTgwJywKICAgICdhMTk5JywgJ2ExODEnLCAnYTIwMCcsICdhMTgyJywgJycsICdhMjAxJywgJ2ExODMnLCAnYTE4NCcsICdhMTk3JywgJ2ExODUnLAogICAgJ2ExOTQnLCAnYTE5OCcsICdhMTg2JywgJ2ExOTUnLCAnYTE4NycsICdhMTg4JywgJ2ExODknLCAnYTE5MCcsICdhMTkxJ10KfTsKCi8qKgogKiBIb2xkIGEgbWFwIG9mIGRlY29kZWQgZm9udHMgYW5kIG9mIHRoZSBzdGFuZGFyZCBmb3VydGVlbiBUeXBlMQogKiBmb250cyBhbmQgdGhlaXIgYWNyb255bXMuCiAqLwp2YXIgc3RkRm9udE1hcCA9IHsKICAnQXJpYWxOYXJyb3cnOiAnSGVsdmV0aWNhJywKICAnQXJpYWxOYXJyb3ctQm9sZCc6ICdIZWx2ZXRpY2EtQm9sZCcsCiAgJ0FyaWFsTmFycm93LUJvbGRJdGFsaWMnOiAnSGVsdmV0aWNhLUJvbGRPYmxpcXVlJywKICAnQXJpYWxOYXJyb3ctSXRhbGljJzogJ0hlbHZldGljYS1PYmxpcXVlJywKICAnQXJpYWxCbGFjayc6ICdIZWx2ZXRpY2EnLAogICdBcmlhbEJsYWNrLUJvbGQnOiAnSGVsdmV0aWNhLUJvbGQnLAogICdBcmlhbEJsYWNrLUJvbGRJdGFsaWMnOiAnSGVsdmV0aWNhLUJvbGRPYmxpcXVlJywKICAnQXJpYWxCbGFjay1JdGFsaWMnOiAnSGVsdmV0aWNhLU9ibGlxdWUnLAogICdBcmlhbCc6ICdIZWx2ZXRpY2EnLAogICdBcmlhbC1Cb2xkJzogJ0hlbHZldGljYS1Cb2xkJywKICAnQXJpYWwtQm9sZEl0YWxpYyc6ICdIZWx2ZXRpY2EtQm9sZE9ibGlxdWUnLAogICdBcmlhbC1JdGFsaWMnOiAnSGVsdmV0aWNhLU9ibGlxdWUnLAogICdBcmlhbC1Cb2xkSXRhbGljTVQnOiAnSGVsdmV0aWNhLUJvbGRPYmxpcXVlJywKICAnQXJpYWwtQm9sZE1UJzogJ0hlbHZldGljYS1Cb2xkJywKICAnQXJpYWwtSXRhbGljTVQnOiAnSGVsdmV0aWNhLU9ibGlxdWUnLAogICdBcmlhbE1UJzogJ0hlbHZldGljYScsCiAgJ0NvdXJpZXItQm9sZCc6ICdDb3VyaWVyLUJvbGQnLAogICdDb3VyaWVyLUJvbGRJdGFsaWMnOiAnQ291cmllci1Cb2xkT2JsaXF1ZScsCiAgJ0NvdXJpZXItSXRhbGljJzogJ0NvdXJpZXItT2JsaXF1ZScsCiAgJ0NvdXJpZXJOZXcnOiAnQ291cmllcicsCiAgJ0NvdXJpZXJOZXctQm9sZCc6ICdDb3VyaWVyLUJvbGQnLAogICdDb3VyaWVyTmV3LUJvbGRJdGFsaWMnOiAnQ291cmllci1Cb2xkT2JsaXF1ZScsCiAgJ0NvdXJpZXJOZXctSXRhbGljJzogJ0NvdXJpZXItT2JsaXF1ZScsCiAgJ0NvdXJpZXJOZXdQUy1Cb2xkSXRhbGljTVQnOiAnQ291cmllci1Cb2xkT2JsaXF1ZScsCiAgJ0NvdXJpZXJOZXdQUy1Cb2xkTVQnOiAnQ291cmllci1Cb2xkJywKICAnQ291cmllck5ld1BTLUl0YWxpY01UJzogJ0NvdXJpZXItT2JsaXF1ZScsCiAgJ0NvdXJpZXJOZXdQU01UJzogJ0NvdXJpZXInLAogICdIZWx2ZXRpY2EnOiAnSGVsdmV0aWNhJywKICAnSGVsdmV0aWNhLUJvbGQnOiAnSGVsdmV0aWNhLUJvbGQnLAogICdIZWx2ZXRpY2EtQm9sZEl0YWxpYyc6ICdIZWx2ZXRpY2EtQm9sZE9ibGlxdWUnLAogICdIZWx2ZXRpY2EtQm9sZE9ibGlxdWUnOiAnSGVsdmV0aWNhLUJvbGRPYmxpcXVlJywKICAnSGVsdmV0aWNhLUl0YWxpYyc6ICdIZWx2ZXRpY2EtT2JsaXF1ZScsCiAgJ0hlbHZldGljYS1PYmxpcXVlJzonSGVsdmV0aWNhLU9ibGlxdWUnLAogICdTeW1ib2wtQm9sZCc6ICdTeW1ib2wnLAogICdTeW1ib2wtQm9sZEl0YWxpYyc6ICdTeW1ib2wnLAogICdTeW1ib2wtSXRhbGljJzogJ1N5bWJvbCcsCiAgJ1RpbWVzTmV3Um9tYW4nOiAnVGltZXMtUm9tYW4nLAogICdUaW1lc05ld1JvbWFuLUJvbGQnOiAnVGltZXMtQm9sZCcsCiAgJ1RpbWVzTmV3Um9tYW4tQm9sZEl0YWxpYyc6ICdUaW1lcy1Cb2xkSXRhbGljJywKICAnVGltZXNOZXdSb21hbi1JdGFsaWMnOiAnVGltZXMtSXRhbGljJywKICAnVGltZXNOZXdSb21hblBTJzogJ1RpbWVzLVJvbWFuJywKICAnVGltZXNOZXdSb21hblBTLUJvbGQnOiAnVGltZXMtQm9sZCcsCiAgJ1RpbWVzTmV3Um9tYW5QUy1Cb2xkSXRhbGljJzogJ1RpbWVzLUJvbGRJdGFsaWMnLAogICdUaW1lc05ld1JvbWFuUFMtQm9sZEl0YWxpY01UJzogJ1RpbWVzLUJvbGRJdGFsaWMnLAogICdUaW1lc05ld1JvbWFuUFMtQm9sZE1UJzogJ1RpbWVzLUJvbGQnLAogICdUaW1lc05ld1JvbWFuUFMtSXRhbGljJzogJ1RpbWVzLUl0YWxpYycsCiAgJ1RpbWVzTmV3Um9tYW5QUy1JdGFsaWNNVCc6ICdUaW1lcy1JdGFsaWMnLAogICdUaW1lc05ld1JvbWFuUFNNVCc6ICdUaW1lcy1Sb21hbicsCiAgJ1RpbWVzTmV3Um9tYW5QU01ULUJvbGQnOiAnVGltZXMtQm9sZCcsCiAgJ1RpbWVzTmV3Um9tYW5QU01ULUJvbGRJdGFsaWMnOiAnVGltZXMtQm9sZEl0YWxpYycsCiAgJ1RpbWVzTmV3Um9tYW5QU01ULUl0YWxpYyc6ICdUaW1lcy1JdGFsaWMnCn07CgovKioKICogSG9sZHMgdGhlIG1hcCBvZiB0aGUgbm9uLXN0YW5kYXJkIGZvbnRzIHRoYXQgbWlnaHQgYmUgaW5jbHVkZWQgYXMgYSBzdGFuZGFyZAogKiBmb250cyB3aXRob3V0IGdseXBoIGRhdGEuCiAqLwp2YXIgbm9uU3RkRm9udE1hcCA9IHsKICAnQ2VudHVyeUdvdGhpYyc6ICdIZWx2ZXRpY2EnLAogICdDZW50dXJ5R290aGljLUJvbGQnOiAnSGVsdmV0aWNhLUJvbGQnLAogICdDZW50dXJ5R290aGljLUJvbGRJdGFsaWMnOiAnSGVsdmV0aWNhLUJvbGRPYmxpcXVlJywKICAnQ2VudHVyeUdvdGhpYy1JdGFsaWMnOiAnSGVsdmV0aWNhLU9ibGlxdWUnLAogICdDb21pY1NhbnNNUyc6ICdDb21pYyBTYW5zIE1TJywKICAnQ29taWNTYW5zTVMtQm9sZCc6ICdDb21pYyBTYW5zIE1TLUJvbGQnLAogICdDb21pY1NhbnNNUy1Cb2xkSXRhbGljJzogJ0NvbWljIFNhbnMgTVMtQm9sZEl0YWxpYycsCiAgJ0NvbWljU2Fuc01TLUl0YWxpYyc6ICdDb21pYyBTYW5zIE1TLUl0YWxpYycsCiAgJ0x1Y2lkYUNvbnNvbGUnOiAnQ291cmllcicsCiAgJ0x1Y2lkYUNvbnNvbGUtQm9sZCc6ICdDb3VyaWVyLUJvbGQnLAogICdMdWNpZGFDb25zb2xlLUJvbGRJdGFsaWMnOiAnQ291cmllci1Cb2xkT2JsaXF1ZScsCiAgJ0x1Y2lkYUNvbnNvbGUtSXRhbGljJzogJ0NvdXJpZXItT2JsaXF1ZScsCiAgJ01TLUdvdGhpYyc6ICdNUyBHb3RoaWMnLAogICdNUy1Hb3RoaWMtQm9sZCc6ICdNUyBHb3RoaWMtQm9sZCcsCiAgJ01TLUdvdGhpYy1Cb2xkSXRhbGljJzogJ01TIEdvdGhpYy1Cb2xkSXRhbGljJywKICAnTVMtR290aGljLUl0YWxpYyc6ICdNUyBHb3RoaWMtSXRhbGljJywKICAnTVMtTWluY2hvJzogJ01TIE1pbmNobycsCiAgJ01TLU1pbmNoby1Cb2xkJzogJ01TIE1pbmNoby1Cb2xkJywKICAnTVMtTWluY2hvLUJvbGRJdGFsaWMnOiAnTVMgTWluY2hvLUJvbGRJdGFsaWMnLAogICdNUy1NaW5jaG8tSXRhbGljJzogJ01TIE1pbmNoby1JdGFsaWMnLAogICdNUy1QR290aGljJzogJ01TIFBHb3RoaWMnLAogICdNUy1QR290aGljLUJvbGQnOiAnTVMgUEdvdGhpYy1Cb2xkJywKICAnTVMtUEdvdGhpYy1Cb2xkSXRhbGljJzogJ01TIFBHb3RoaWMtQm9sZEl0YWxpYycsCiAgJ01TLVBHb3RoaWMtSXRhbGljJzogJ01TIFBHb3RoaWMtSXRhbGljJywKICAnTVMtUE1pbmNobyc6ICdNUyBQTWluY2hvJywKICAnTVMtUE1pbmNoby1Cb2xkJzogJ01TIFBNaW5jaG8tQm9sZCcsCiAgJ01TLVBNaW5jaG8tQm9sZEl0YWxpYyc6ICdNUyBQTWluY2hvLUJvbGRJdGFsaWMnLAogICdNUy1QTWluY2hvLUl0YWxpYyc6ICdNUyBQTWluY2hvLUl0YWxpYycsCiAgJ1dpbmdkaW5ncyc6ICdaYXBmRGluZ2JhdHMnCn07Cgp2YXIgc2VyaWZGb250cyA9IHsKICAnQWRvYmUgSmVuc29uJzogdHJ1ZSwgJ0Fkb2JlIFRleHQnOiB0cnVlLCAnQWxiZXJ0dXMnOiB0cnVlLAogICdBbGR1cyc6IHRydWUsICdBbGV4YW5kcmlhJzogdHJ1ZSwgJ0FsZ2VyaWFuJzogdHJ1ZSwKICAnQW1lcmljYW4gVHlwZXdyaXRlcic6IHRydWUsICdBbnRpcXVhJzogdHJ1ZSwgJ0FwZXgnOiB0cnVlLAogICdBcm5vJzogdHJ1ZSwgJ0FzdGVyJzogdHJ1ZSwgJ0F1cm9yYSc6IHRydWUsCiAgJ0Jhc2tlcnZpbGxlJzogdHJ1ZSwgJ0JlbGwnOiB0cnVlLCAnQmVtYm8nOiB0cnVlLAogICdCZW1ibyBTY2hvb2xib29rJzogdHJ1ZSwgJ0Jlbmd1aWF0JzogdHJ1ZSwgJ0JlcmtlbGV5IE9sZCBTdHlsZSc6IHRydWUsCiAgJ0Jlcm5oYXJkIE1vZGVybic6IHRydWUsICdCZXJ0aG9sZCBDaXR5JzogdHJ1ZSwgJ0JvZG9uaSc6IHRydWUsCiAgJ0JhdWVyIEJvZG9uaSc6IHRydWUsICdCb29rIEFudGlxdWEnOiB0cnVlLCAnQm9va21hbic6IHRydWUsCiAgJ0JvcmRlYXV4IFJvbWFuJzogdHJ1ZSwgJ0NhbGlmb3JuaWFuIEZCJzogdHJ1ZSwgJ0NhbGlzdG8nOiB0cnVlLAogICdDYWx2ZXJ0JzogdHJ1ZSwgJ0NhcGl0YWxzJzogdHJ1ZSwgJ0NhbWJyaWEnOiB0cnVlLAogICdDYXJ0aWVyJzogdHJ1ZSwgJ0Nhc2xvbic6IHRydWUsICdDYXR1bGwnOiB0cnVlLAogICdDZW50YXVyJzogdHJ1ZSwgJ0NlbnR1cnkgT2xkIFN0eWxlJzogdHJ1ZSwgJ0NlbnR1cnkgU2Nob29sYm9vayc6IHRydWUsCiAgJ0NoYXBhcnJhbCc6IHRydWUsICdDaGFyaXMgU0lMJzogdHJ1ZSwgJ0NoZWx0ZW5oYW0nOiB0cnVlLAogICdDaG9sbGEgU2xhYic6IHRydWUsICdDbGFyZW5kb24nOiB0cnVlLCAnQ2xlYXJmYWNlJzogdHJ1ZSwKICAnQ29jaGluJzogdHJ1ZSwgJ0NvbG9ubmEnOiB0cnVlLCAnQ29tcHV0ZXIgTW9kZXJuJzogdHJ1ZSwKICAnQ29uY3JldGUgUm9tYW4nOiB0cnVlLCAnQ29uc3RhbnRpYSc6IHRydWUsICdDb29wZXIgQmxhY2snOiB0cnVlLAogICdDb3JvbmEnOiB0cnVlLCAnRWNvdHlwZSc6IHRydWUsICdFZ3lwdGllbm5lJzogdHJ1ZSwKICAnRWxlcGhhbnQnOiB0cnVlLCAnRXhjZWxzaW9yJzogdHJ1ZSwgJ0ZhaXJmaWVsZCc6IHRydWUsCiAgJ0ZGIFNjYWxhJzogdHJ1ZSwgJ0ZvbGthcmQnOiB0cnVlLCAnRm9vdGxpZ2h0JzogdHJ1ZSwKICAnRnJlZVNlcmlmJzogdHJ1ZSwgJ0ZyaXogUXVhZHJhdGEnOiB0cnVlLCAnR2FyYW1vbmQnOiB0cnVlLAogICdHZW50aXVtJzogdHJ1ZSwgJ0dlb3JnaWEnOiB0cnVlLCAnR2xvdWNlc3Rlcic6IHRydWUsCiAgJ0dvdWR5IE9sZCBTdHlsZSc6IHRydWUsICdHb3VkeSBTY2hvb2xib29rJzogdHJ1ZSwgJ0dvdWR5IFBybyBGb250JzogdHJ1ZSwKICAnR3Jhbmpvbic6IHRydWUsICdHdWFyZGlhbiBFZ3lwdGlhbic6IHRydWUsICdIZWF0aGVyJzogdHJ1ZSwKICAnSGVyY3VsZXMnOiB0cnVlLCAnSGlnaCBUb3dlciBUZXh0JzogdHJ1ZSwgJ0hpcm9zaGlnZSc6IHRydWUsCiAgJ0hvZWZsZXIgVGV4dCc6IHRydWUsICdIdW1hbmEgU2VyaWYnOiB0cnVlLCAnSW1wcmludCc6IHRydWUsCiAgJ0lvbmljIE5vLiA1JzogdHJ1ZSwgJ0phbnNvbic6IHRydWUsICdKb2FubmEnOiB0cnVlLAogICdLb3Jpbm5hJzogdHJ1ZSwgJ0xleGljb24nOiB0cnVlLCAnTGliZXJhdGlvbiBTZXJpZic6IHRydWUsCiAgJ0xpbnV4IExpYmVydGluZSc6IHRydWUsICdMaXRlcmF0dXJuYXlhJzogdHJ1ZSwgJ0x1Y2lkYSc6IHRydWUsCiAgJ0x1Y2lkYSBCcmlnaHQnOiB0cnVlLCAnTWVsaW9yJzogdHJ1ZSwgJ01lbXBoaXMnOiB0cnVlLAogICdNaWxsZXInOiB0cnVlLCAnTWluaW9uJzogdHJ1ZSwgJ01vZGVybic6IHRydWUsCiAgJ01vbmEgTGlzYSc6IHRydWUsICdNcnMgRWF2ZXMnOiB0cnVlLCAnTVMgU2VyaWYnOiB0cnVlLAogICdNdXNlbyBTbGFiJzogdHJ1ZSwgJ05ldyBZb3JrJzogdHJ1ZSwgJ05pbWJ1cyBSb21hbic6IHRydWUsCiAgJ05QUyBSYXdsaW5zb24gUm9hZHdheSc6IHRydWUsICdQYWxhdGlubyc6IHRydWUsICdQZXJwZXR1YSc6IHRydWUsCiAgJ1BsYW50aW4nOiB0cnVlLCAnUGxhbnRpbiBTY2hvb2xib29rJzogdHJ1ZSwgJ1BsYXliaWxsJzogdHJ1ZSwKICAnUG9vciBSaWNoYXJkJzogdHJ1ZSwgJ1Jhd2xpbnNvbiBSb2Fkd2F5JzogdHJ1ZSwgJ1JlbmF1bHQnOiB0cnVlLAogICdSZXF1aWVtJzogdHJ1ZSwgJ1JvY2t3ZWxsJzogdHJ1ZSwgJ1JvbWFuJzogdHJ1ZSwKICAnUm90aXMgU2VyaWYnOiB0cnVlLCAnU2Fib24nOiB0cnVlLCAnU2NhbGEnOiB0cnVlLAogICdTZWFndWxsJzogdHJ1ZSwgJ1Npc3RpbmEnOiB0cnVlLCAnU291dmVuaXInOiB0cnVlLAogICdTVElYJzogdHJ1ZSwgJ1N0b25lIEluZm9ybWFsJzogdHJ1ZSwgJ1N0b25lIFNlcmlmJzogdHJ1ZSwKICAnU3lsZmFlbic6IHRydWUsICdUaW1lcyc6IHRydWUsICdUcmFqYW4nOiB0cnVlLAogICdUcmluaXTDqSc6IHRydWUsICdUcnVtcCBNZWRpYWV2YWwnOiB0cnVlLCAnVXRvcGlhJzogdHJ1ZSwKICAnVmFsZSBUeXBlJzogdHJ1ZSwgJ0JpdHN0cmVhbSBWZXJhJzogdHJ1ZSwgJ1ZlcmEgU2VyaWYnOiB0cnVlLAogICdWZXJzYWlsbGVzJzogdHJ1ZSwgJ1dhbnRlZCc6IHRydWUsICdXZWlzcyc6IHRydWUsCiAgJ1dpZGUgTGF0aW4nOiB0cnVlLCAnV2luZHNvcic6IHRydWUsICdYSVRTJzogdHJ1ZQp9OwoKdmFyIHN5bWJvbHNGb250cyA9IHsKICAnRGluZ2JhdHMnOiB0cnVlLCAnU3ltYm9sJzogdHJ1ZSwgJ1phcGZEaW5nYmF0cyc6IHRydWUKfTsKCi8vIEdseXBoIG1hcCBmb3Igd2VsbC1rbm93biBzdGFuZGFyZCBmb250cy4gU29tZXRpbWVzIEdob3N0c2NyaXB0IHVzZXMgQ0lEIGZvbnRzCi8vIGJ1dCBkb2VzIG5vdCBlbWJlZCB0aGUgQ0lEIHRvIEdJRCBtYXBwaW5nLiBUaGUgbWFwcGluZyBpcyBpbmNvbXBsZXRlIGZvciBhbGwKLy8gZ2x5cGhzLCBidXQgY29tbW9uIGZvciBzb21lIHNldCBvZiB0aGUgc3RhbmRhcmQgZm9udHMuCnZhciBHbHlwaE1hcEZvclN0YW5kYXJkRm9udHMgPSB7CiAgJzInOiAxMCwgJzMnOiAzMiwgJzQnOiAzMywgJzUnOiAzNCwgJzYnOiAzNSwgJzcnOiAzNiwgJzgnOiAzNywgJzknOiAzOCwKICAnMTAnOiAzOSwgJzExJzogNDAsICcxMic6IDQxLCAnMTMnOiA0MiwgJzE0JzogNDMsICcxNSc6IDQ0LCAnMTYnOiA0NSwKICAnMTcnOiA0NiwgJzE4JzogNDcsICcxOSc6IDQ4LCAnMjAnOiA0OSwgJzIxJzogNTAsICcyMic6IDUxLCAnMjMnOiA1MiwKICAnMjQnOiA1MywgJzI1JzogNTQsICcyNic6IDU1LCAnMjcnOiA1NiwgJzI4JzogNTcsICcyOSc6IDU4LCAnMzAnOiA4OTQsCiAgJzMxJzogNjAsICczMic6IDYxLCAnMzMnOiA2MiwgJzM0JzogNjMsICczNSc6IDY0LCAnMzYnOiA2NSwgJzM3JzogNjYsCiAgJzM4JzogNjcsICczOSc6IDY4LCAnNDAnOiA2OSwgJzQxJzogNzAsICc0Mic6IDcxLCAnNDMnOiA3MiwgJzQ0JzogNzMsCiAgJzQ1JzogNzQsICc0Nic6IDc1LCAnNDcnOiA3NiwgJzQ4JzogNzcsICc0OSc6IDc4LCAnNTAnOiA3OSwgJzUxJzogODAsCiAgJzUyJzogODEsICc1Myc6IDgyLCAnNTQnOiA4MywgJzU1JzogODQsICc1Nic6IDg1LCAnNTcnOiA4NiwgJzU4JzogODcsCiAgJzU5JzogODgsICc2MCc6IDg5LCAnNjEnOiA5MCwgJzYyJzogOTEsICc2Myc6IDkyLCAnNjQnOiA5MywgJzY1JzogOTQsCiAgJzY2JzogOTUsICc2Nyc6IDk2LCAnNjgnOiA5NywgJzY5JzogOTgsICc3MCc6IDk5LCAnNzEnOiAxMDAsICc3Mic6IDEwMSwKICAnNzMnOiAxMDIsICc3NCc6IDEwMywgJzc1JzogMTA0LCAnNzYnOiAxMDUsICc3Nyc6IDEwNiwgJzc4JzogMTA3LCAnNzknOiAxMDgsCiAgJzgwJzogMTA5LCAnODEnOiAxMTAsICc4Mic6IDExMSwgJzgzJzogMTEyLCAnODQnOiAxMTMsICc4NSc6IDExNCwgJzg2JzogMTE1LAogICc4Nyc6IDExNiwgJzg4JzogMTE3LCAnODknOiAxMTgsICc5MCc6IDExOSwgJzkxJzogMTIwLCAnOTInOiAxMjEsICc5Myc6IDEyMiwKICAnOTQnOiAxMjMsICc5NSc6IDEyNCwgJzk2JzogMTI1LCAnOTcnOiAxMjYsICc5OCc6IDE5NiwgJzk5JzogMTk3LCAnMTAwJzogMTk5LAogICcxMDEnOiAyMDEsICcxMDInOiAyMDksICcxMDMnOiAyMTQsICcxMDQnOiAyMjAsICcxMDUnOiAyMjUsICcxMDYnOiAyMjQsCiAgJzEwNyc6IDIyNiwgJzEwOCc6IDIyOCwgJzEwOSc6IDIyNywgJzExMCc6IDIyOSwgJzExMSc6IDIzMSwgJzExMic6IDIzMywKICAnMTEzJzogMjMyLCAnMTE0JzogMjM0LCAnMTE1JzogMjM1LCAnMTE2JzogMjM3LCAnMTE3JzogMjM2LCAnMTE4JzogMjM4LAogICcxMTknOiAyMzksICcxMjAnOiAyNDEsICcxMjEnOiAyNDMsICcxMjInOiAyNDIsICcxMjMnOiAyNDQsICcxMjQnOiAyNDYsCiAgJzEyNSc6IDI0NSwgJzEyNic6IDI1MCwgJzEyNyc6IDI0OSwgJzEyOCc6IDI1MSwgJzEyOSc6IDI1MiwgJzEzMCc6IDgyMjQsCiAgJzEzMSc6IDE3NiwgJzEzMic6IDE2MiwgJzEzMyc6IDE2MywgJzEzNCc6IDE2NywgJzEzNSc6IDgyMjYsICcxMzYnOiAxODIsCiAgJzEzNyc6IDIyMywgJzEzOCc6IDE3NCwgJzEzOSc6IDE2OSwgJzE0MCc6IDg0ODIsICcxNDEnOiAxODAsICcxNDInOiAxNjgsCiAgJzE0Myc6IDg4MDAsICcxNDQnOiAxOTgsICcxNDUnOiAyMTYsICcxNDYnOiA4NzM0LCAnMTQ3JzogMTc3LCAnMTQ4JzogODgwNCwKICAnMTQ5JzogODgwNSwgJzE1MCc6IDE2NSwgJzE1MSc6IDE4MSwgJzE1Mic6IDg3MDYsICcxNTMnOiA4NzIxLCAnMTU0JzogODcxOSwKICAnMTU2JzogODc0NywgJzE1Nyc6IDE3MCwgJzE1OCc6IDE4NiwgJzE1OSc6IDg0ODYsICcxNjAnOiAyMzAsICcxNjEnOiAyNDgsCiAgJzE2Mic6IDE5MSwgJzE2Myc6IDE2MSwgJzE2NCc6IDE3MiwgJzE2NSc6IDg3MzAsICcxNjYnOiA0MDIsICcxNjcnOiA4Nzc2LAogICcxNjgnOiA4NzEwLCAnMTY5JzogMTcxLCAnMTcwJzogMTg3LCAnMTcxJzogODIzMCwgJzIxMCc6IDIxOCwgJzIyMyc6IDcxMSwKICAnMjI0JzogMzIxLCAnMjI1JzogMzIyLCAnMjI3JzogMzUzLCAnMjI5JzogMzgyLCAnMjM0JzogMjUzLCAnMjUyJzogMjYzLAogICcyNTMnOiAyNjgsICcyNTQnOiAyNjksICcyNTgnOiAyNTgsICcyNjAnOiAyNjAsICcyNjEnOiAyNjEsICcyNjUnOiAyODAsCiAgJzI2Nic6IDI4MSwgJzI2OCc6IDI4MywgJzI2OSc6IDMxMywgJzI3NSc6IDMyMywgJzI3Nic6IDMyNCwgJzI3OCc6IDMyOCwKICAnMjg0JzogMzQ1LCAnMjg1JzogMzQ2LCAnMjg2JzogMzQ3LCAnMjkyJzogMzY3LCAnMjk1JzogMzc3LCAnMjk2JzogMzc4LAogICcyOTgnOiAzODAsICczMDUnOiA5NjMsCiAgJzMwNic6IDk2NCwgJzMwNyc6IDk2NiwgJzMwOCc6IDgyMTUsICczMDknOiA4MjUyLCAnMzEwJzogODMxOSwgJzMxMSc6IDgzNTksCiAgJzMxMic6IDg1OTIsICczMTMnOiA4NTkzLCAnMzM3JzogOTU1MiwgJzQ5Myc6IDEwMzksICc0OTQnOiAxMDQwLCAnNzA1JzogMTUyNCwKICAnNzA2JzogODM2MiwgJzcxMCc6IDY0Mjg4LCAnNzExJzogNjQyOTgsICc3NTknOiAxNjE3LCAnNzYxJzogMTc3NiwKICAnNzYzJzogMTc3OCwgJzc3NSc6IDE2NTIsICc3NzcnOiAxNzY0LCAnNzc4JzogMTc4MCwgJzc3OSc6IDE3ODEsICc3ODAnOiAxNzgyLAogICc3ODInOiA3NzEsICc3ODMnOiA2NDcyNiwgJzc4Nic6IDgzNjMsICc3ODgnOiA4NTMyLCAnNzkwJzogNzY4LCAnNzkxJzogNzY5LAogICc3OTInOiA3NjgsICc3OTUnOiA4MDMsICc3OTcnOiA2NDMzNiwgJzc5OCc6IDY0MzM3LCAnNzk5JzogNjQzNDIsCiAgJzgwMCc6IDY0MzQzLCAnODAxJzogNjQzNDQsICc4MDInOiA2NDM0NSwgJzgwMyc6IDY0MzYyLCAnODA0JzogNjQzNjMsCiAgJzgwNSc6IDY0MzY0LCAnMjQyNCc6IDc4MjEsICcyNDI1JzogNzgyMiwgJzI0MjYnOiA3ODIzLCAnMjQyNyc6IDc4MjQsCiAgJzI0MjgnOiA3ODI1LCAnMjQyOSc6IDc4MjYsICcyNDMwJzogNzgyNywgJzI0MzMnOiA3NjgyLCAnMjY3OCc6IDgwNDUsCiAgJzI2NzknOiA4MDQ2LCAnMjgzMCc6IDE1NTIsICcyODM4JzogNjg2LCAnMjg0MCc6IDc1MSwgJzI4NDInOiA3NTMsCiAgJzI4NDMnOiA3NTQsICcyODQ0JzogNzU1LCAnMjg0Nic6IDc1NywgJzI4NTYnOiA3NjcsICcyODU3JzogODQ4LCAnMjg1OCc6IDg0OSwKICAnMjg2Mic6IDg1MywgJzI4NjMnOiA4NTQsICcyODY0JzogODU1LCAnMjg2NSc6IDg2MSwgJzI4NjYnOiA4NjIsICcyOTA2JzogNzQ2MCwKICAnMjkwOCc6IDc0NjIsICcyOTA5JzogNzQ2MywgJzI5MTAnOiA3NDY0LCAnMjkxMic6IDc0NjYsICcyOTEzJzogNzQ2NywKICAnMjkxNCc6IDc0NjgsICcyOTE2JzogNzQ3MCwgJzI5MTcnOiA3NDcxLCAnMjkxOCc6IDc0NzIsICcyOTIwJzogNzQ3NCwKICAnMjkyMSc6IDc0NzUsICcyOTIyJzogNzQ3NiwgJzI5MjQnOiA3NDc4LCAnMjkyNSc6IDc0NzksICcyOTI2JzogNzQ4MCwKICAnMjkyOCc6IDc0ODIsICcyOTI5JzogNzQ4MywgJzI5MzAnOiA3NDg0LCAnMjkzMic6IDc0ODYsICcyOTMzJzogNzQ4NywKICAnMjkzNCc6IDc0ODgsICcyOTM2JzogNzQ5MCwgJzI5MzcnOiA3NDkxLCAnMjkzOCc6IDc0OTIsICcyOTQwJzogNzQ5NCwKICAnMjk0MSc6IDc0OTUsICcyOTQyJzogNzQ5NiwgJzI5NDQnOiA3NDk4LCAnMjk0Nic6IDc1MDAsICcyOTQ4JzogNzUwMiwKICAnMjk1MCc6IDc1MDQsICcyOTUxJzogNzUwNSwgJzI5NTInOiA3NTA2LCAnMjk1NCc6IDc1MDgsICcyOTU1JzogNzUwOSwKICAnMjk1Nic6IDc1MTAsICcyOTU4JzogNzUxMiwgJzI5NTknOiA3NTEzLCAnMjk2MCc6IDc1MTQsICcyOTYyJzogNzUxNiwKICAnMjk2Myc6IDc1MTcsICcyOTY0JzogNzUxOCwgJzI5NjYnOiA3NTIwLCAnMjk2Nyc6IDc1MjEsICcyOTY4JzogNzUyMiwKICAnMjk3MCc6IDc1MjQsICcyOTcxJzogNzUyNSwgJzI5NzInOiA3NTI2LCAnMjk3NCc6IDc1MjgsICcyOTc1JzogNzUyOSwKICAnMjk3Nic6IDc1MzAsICcyOTc4JzogMTUzNywgJzI5NzknOiAxNTM4LCAnMjk4MCc6IDE1MzksICcyOTgyJzogMTU0OSwKICAnMjk4Myc6IDE1NTEsICcyOTg0JzogMTU1MiwgJzI5ODYnOiAxNTU0LCAnMjk4Nyc6IDE1NTUsICcyOTg4JzogMTU1NiwKICAnMjk5MCc6IDE2MjMsICcyOTkxJzogMTYyNCwgJzI5OTUnOiAxNzc1LCAnMjk5OSc6IDE3OTEsICczMDAyJzogNjQyOTAsCiAgJzMwMDMnOiA2NDI5MSwgJzMwMDQnOiA2NDI5MiwgJzMwMDYnOiA2NDI5NCwgJzMwMDcnOiA2NDI5NSwgJzMwMDgnOiA2NDI5NiwKICAnMzAxMSc6IDE5MDAsICczMDE0JzogODIyMywgJzMwMTUnOiA4MjQ0LCAnMzAxNyc6IDc1MzIsICczMDE4JzogNzUzMywKICAnMzAxOSc6IDc1MzQsICczMDc1JzogNzU5MCwgJzMwNzYnOiA3NTkxLCAnMzA3OSc6IDc1OTQsICczMDgwJzogNzU5NSwKICAnMzA4Myc6IDc1OTgsICczMDg0JzogNzU5OSwgJzMwODcnOiA3NjAyLCAnMzA4OCc6IDc2MDMsICczMDkxJzogNzYwNiwKICAnMzA5Mic6IDc2MDcsICczMDk1JzogNzYxMCwgJzMwOTYnOiA3NjExLCAnMzA5OSc6IDc2MTQsICczMTAwJzogNzYxNSwKICAnMzEwMyc6IDc2MTgsICczMTA0JzogNzYxOSwgJzMxMDcnOiA4MzM3LCAnMzEwOCc6IDgzMzgsICczMTE2JzogMTg4NCwKICAnMzExOSc6IDE4ODUsICczMTIwJzogMTg4NSwgJzMxMjMnOiAxODg2LCAnMzEyNCc6IDE4ODYsICczMTI3JzogMTg4NywKICAnMzEyOCc6IDE4ODcsICczMTMxJzogMTg4OCwgJzMxMzInOiAxODg4LCAnMzEzNSc6IDE4ODksICczMTM2JzogMTg4OSwKICAnMzEzOSc6IDE4OTAsICczMTQwJzogMTg5MCwgJzMxNDMnOiAxODkxLCAnMzE0NCc6IDE4OTEsICczMTQ3JzogMTg5MiwKICAnMzE0OCc6IDE4OTIsICczMTUzJzogNTgwLCAnMzE1NCc6IDU4MSwgJzMxNTcnOiA1ODQsICczMTU4JzogNTg1LCAnMzE2MSc6IDU4OCwKICAnMzE2Mic6IDU4OSwgJzMxNjUnOiA4OTEsICczMTY2JzogODkyLCAnMzE2OSc6IDEyNzQsICczMTcwJzogMTI3NSwKICAnMzE3Myc6IDEyNzgsICczMTc0JzogMTI3OSwgJzMxODEnOiA3NjIyLCAnMzE4Mic6IDc2MjMsICczMjgyJzogMTE3OTksCiAgJzMzMTYnOiA1NzgsICczMzc5JzogNDI3ODUsICczMzkzJzogMTE1OSwgJzM0MTYnOiA4Mzc3Cn07CgovLyBTb21lIGNoYXJhY3RlcnMsIGUuZy4gY29weXJpZ2h0c2VyaWYsIGFyZSBtYXBwZWQgdG8gdGhlIHByaXZhdGUgdXNlIGFyZWEgYW5kCi8vIG1pZ2h0IG5vdCBiZSBkaXNwbGF5ZWQgdXNpbmcgc3RhbmRhcmQgZm9udHMuIE1hcHBpbmcvaGFja2luZyB3ZWxsLWtub3duIGNoYXJzCi8vIHRvIHRoZSBzaW1pbGFyIGVxdWl2YWxlbnRzIGluIHRoZSBub3JtYWwgY2hhcmFjdGVycyByYW5nZS4KdmFyIFNwZWNpYWxQVUFTeW1ib2xzID0gewogICc2MzcyMSc6IDB4MDBBOSwgLy8gY29weXJpZ2h0c2FucyAoMHhGOEU5KSA9PiBjb3B5cmlnaHQKICAnNjMxOTMnOiAweDAwQTksIC8vIGNvcHlyaWdodHNlcmlmICgweEY2RDkpID0+IGNvcHlyaWdodAogICc2MzcyMCc6IDB4MDBBRSwgLy8gcmVnaXN0ZXJzYW5zICgweEY4RTgpID0+IHJlZ2lzdGVyZWQKICAnNjMxOTQnOiAweDAwQUUsIC8vIHJlZ2lzdGVyc2VyaWYgKDB4RjZEQSkgPT4gcmVnaXN0ZXJlZAogICc2MzcyMic6IDB4MjEyMiwgLy8gdHJhZGVtYXJrc2FucyAoMHhGOEVBKSA9PiB0cmFkZW1hcmsKICAnNjMxOTUnOiAweDIxMjIsIC8vIHRyYWRlbWFya3NlcmlmICgweEY2REIpID0+IHRyYWRlbWFyawogICc2MzcyOSc6IDB4MjNBNywgLy8gYnJhY2VsZWZ0dHAgKDB4RjhGMSkKICAnNjM3MzAnOiAweDIzQTgsIC8vIGJyYWNlbGVmdG1pZCAoMHhGOEYyKQogICc2MzczMSc6IDB4MjNBOSwgLy8gYnJhY2VsZWZ0YnQgKDB4RjhGMykKICAnNjM3NDAnOiAweDIzQUIsIC8vIGJyYWNlcmlnaHR0cCAoMHhGOEZDKQogICc2Mzc0MSc6IDB4MjNBQywgLy8gYnJhY2VyaWdodG1pZCAoMHhGOEZEKQogICc2Mzc0Mic6IDB4MjNBRCwgLy8gYnJhY2VyaWdodGJ0ICgweEY4RkUpCiAgJzYzNzI2JzogMHgyM0ExLCAvLyBicmFja2V0bGVmdHRwICgweEY4RUUpCiAgJzYzNzI3JzogMHgyM0EyLCAvLyBicmFja2V0bGVmdGV4ICgweEY4RUYpCiAgJzYzNzI4JzogMHgyM0EzLCAvLyBicmFja2V0bGVmdGJ0ICgweEY4RjApCiAgJzYzNzM3JzogMHgyM0E0LCAvLyBicmFja2V0cmlnaHR0cCAoMHhGOEY5KQogICc2MzczOCc6IDB4MjNBNSwgLy8gYnJhY2tldHJpZ2h0ZXggKDB4RjhGQSkKICAnNjM3MzknOiAweDIzQTYsIC8vIGJyYWNrZXRyaWdodGJ0ICgweEY4RkIpCiAgJzYzNzIzJzogMHgyMzlCLCAvLyBwYXJlbmxlZnR0cCAoMHhGOEVCKQogICc2MzcyNCc6IDB4MjM5QywgLy8gcGFyZW5sZWZ0ZXggKDB4RjhFQykKICAnNjM3MjUnOiAweDIzOUQsIC8vIHBhcmVubGVmdGJ0ICgweEY4RUQpCiAgJzYzNzM0JzogMHgyMzlFLCAvLyBwYXJlbnJpZ2h0dHAgKDB4RjhGNikKICAnNjM3MzUnOiAweDIzOUYsIC8vIHBhcmVucmlnaHRleCAoMHhGOEY3KQogICc2MzczNic6IDB4MjNBMCwgLy8gcGFyZW5yaWdodGJ0ICgweEY4RjgpCn07CmZ1bmN0aW9uIG1hcFNwZWNpYWxVbmljb2RlVmFsdWVzKGNvZGUpIHsKICBpZiAoY29kZSA+PSAweEZGRjAgJiYgY29kZSA8PSAweEZGRkYpIHsgLy8gU3BlY2lhbHMgdW5pY29kZSBibG9jay4KICAgIHJldHVybiAwOwogIH0gZWxzZSBpZiAoY29kZSA+PSAweEY2MDAgJiYgY29kZSA8PSAweEY4RkYpIHsKICAgIHJldHVybiAoU3BlY2lhbFBVQVN5bWJvbHNbY29kZV0gfHwgY29kZSk7CiAgfQogIHJldHVybiBjb2RlOwp9Cgp2YXIgVW5pY29kZVJhbmdlcyA9IFsKICB7ICdiZWdpbic6IDB4MDAwMCwgJ2VuZCc6IDB4MDA3RiB9LCAvLyBCYXNpYyBMYXRpbgogIHsgJ2JlZ2luJzogMHgwMDgwLCAnZW5kJzogMHgwMEZGIH0sIC8vIExhdGluLTEgU3VwcGxlbWVudAogIHsgJ2JlZ2luJzogMHgwMTAwLCAnZW5kJzogMHgwMTdGIH0sIC8vIExhdGluIEV4dGVuZGVkLUEKICB7ICdiZWdpbic6IDB4MDE4MCwgJ2VuZCc6IDB4MDI0RiB9LCAvLyBMYXRpbiBFeHRlbmRlZC1CCiAgeyAnYmVnaW4nOiAweDAyNTAsICdlbmQnOiAweDAyQUYgfSwgLy8gSVBBIEV4dGVuc2lvbnMKICB7ICdiZWdpbic6IDB4MDJCMCwgJ2VuZCc6IDB4MDJGRiB9LCAvLyBTcGFjaW5nIE1vZGlmaWVyIExldHRlcnMKICB7ICdiZWdpbic6IDB4MDMwMCwgJ2VuZCc6IDB4MDM2RiB9LCAvLyBDb21iaW5pbmcgRGlhY3JpdGljYWwgTWFya3MKICB7ICdiZWdpbic6IDB4MDM3MCwgJ2VuZCc6IDB4MDNGRiB9LCAvLyBHcmVlayBhbmQgQ29wdGljCiAgeyAnYmVnaW4nOiAweDJDODAsICdlbmQnOiAweDJDRkYgfSwgLy8gQ29wdGljCiAgeyAnYmVnaW4nOiAweDA0MDAsICdlbmQnOiAweDA0RkYgfSwgLy8gQ3lyaWxsaWMKICB7ICdiZWdpbic6IDB4MDUzMCwgJ2VuZCc6IDB4MDU4RiB9LCAvLyBBcm1lbmlhbgogIHsgJ2JlZ2luJzogMHgwNTkwLCAnZW5kJzogMHgwNUZGIH0sIC8vIEhlYnJldwogIHsgJ2JlZ2luJzogMHhBNTAwLCAnZW5kJzogMHhBNjNGIH0sIC8vIFZhaQogIHsgJ2JlZ2luJzogMHgwNjAwLCAnZW5kJzogMHgwNkZGIH0sIC8vIEFyYWJpYwogIHsgJ2JlZ2luJzogMHgwN0MwLCAnZW5kJzogMHgwN0ZGIH0sIC8vIE5LbwogIHsgJ2JlZ2luJzogMHgwOTAwLCAnZW5kJzogMHgwOTdGIH0sIC8vIERldmFuYWdhcmkKICB7ICdiZWdpbic6IDB4MDk4MCwgJ2VuZCc6IDB4MDlGRiB9LCAvLyBCZW5nYWxpCiAgeyAnYmVnaW4nOiAweDBBMDAsICdlbmQnOiAweDBBN0YgfSwgLy8gR3VybXVraGkKICB7ICdiZWdpbic6IDB4MEE4MCwgJ2VuZCc6IDB4MEFGRiB9LCAvLyBHdWphcmF0aQogIHsgJ2JlZ2luJzogMHgwQjAwLCAnZW5kJzogMHgwQjdGIH0sIC8vIE9yaXlhCiAgeyAnYmVnaW4nOiAweDBCODAsICdlbmQnOiAweDBCRkYgfSwgLy8gVGFtaWwKICB7ICdiZWdpbic6IDB4MEMwMCwgJ2VuZCc6IDB4MEM3RiB9LCAvLyBUZWx1Z3UKICB7ICdiZWdpbic6IDB4MEM4MCwgJ2VuZCc6IDB4MENGRiB9LCAvLyBLYW5uYWRhCiAgeyAnYmVnaW4nOiAweDBEMDAsICdlbmQnOiAweDBEN0YgfSwgLy8gTWFsYXlhbGFtCiAgeyAnYmVnaW4nOiAweDBFMDAsICdlbmQnOiAweDBFN0YgfSwgLy8gVGhhaQogIHsgJ2JlZ2luJzogMHgwRTgwLCAnZW5kJzogMHgwRUZGIH0sIC8vIExhbwogIHsgJ2JlZ2luJzogMHgxMEEwLCAnZW5kJzogMHgxMEZGIH0sIC8vIEdlb3JnaWFuCiAgeyAnYmVnaW4nOiAweDFCMDAsICdlbmQnOiAweDFCN0YgfSwgLy8gQmFsaW5lc2UKICB7ICdiZWdpbic6IDB4MTEwMCwgJ2VuZCc6IDB4MTFGRiB9LCAvLyBIYW5ndWwgSmFtbwogIHsgJ2JlZ2luJzogMHgxRTAwLCAnZW5kJzogMHgxRUZGIH0sIC8vIExhdGluIEV4dGVuZGVkIEFkZGl0aW9uYWwKICB7ICdiZWdpbic6IDB4MUYwMCwgJ2VuZCc6IDB4MUZGRiB9LCAvLyBHcmVlayBFeHRlbmRlZAogIHsgJ2JlZ2luJzogMHgyMDAwLCAnZW5kJzogMHgyMDZGIH0sIC8vIEdlbmVyYWwgUHVuY3R1YXRpb24KICB7ICdiZWdpbic6IDB4MjA3MCwgJ2VuZCc6IDB4MjA5RiB9LCAvLyBTdXBlcnNjcmlwdHMgQW5kIFN1YnNjcmlwdHMKICB7ICdiZWdpbic6IDB4MjBBMCwgJ2VuZCc6IDB4MjBDRiB9LCAvLyBDdXJyZW5jeSBTeW1ib2wKICB7ICdiZWdpbic6IDB4MjBEMCwgJ2VuZCc6IDB4MjBGRiB9LCAvLyBDb21iaW5pbmcgRGlhY3JpdGljYWwgTWFya3MgRm9yIFN5bWJvbHMKICB7ICdiZWdpbic6IDB4MjEwMCwgJ2VuZCc6IDB4MjE0RiB9LCAvLyBMZXR0ZXJsaWtlIFN5bWJvbHMKICB7ICdiZWdpbic6IDB4MjE1MCwgJ2VuZCc6IDB4MjE4RiB9LCAvLyBOdW1iZXIgRm9ybXMKICB7ICdiZWdpbic6IDB4MjE5MCwgJ2VuZCc6IDB4MjFGRiB9LCAvLyBBcnJvd3MKICB7ICdiZWdpbic6IDB4MjIwMCwgJ2VuZCc6IDB4MjJGRiB9LCAvLyBNYXRoZW1hdGljYWwgT3BlcmF0b3JzCiAgeyAnYmVnaW4nOiAweDIzMDAsICdlbmQnOiAweDIzRkYgfSwgLy8gTWlzY2VsbGFuZW91cyBUZWNobmljYWwKICB7ICdiZWdpbic6IDB4MjQwMCwgJ2VuZCc6IDB4MjQzRiB9LCAvLyBDb250cm9sIFBpY3R1cmVzCiAgeyAnYmVnaW4nOiAweDI0NDAsICdlbmQnOiAweDI0NUYgfSwgLy8gT3B0aWNhbCBDaGFyYWN0ZXIgUmVjb2duaXRpb24KICB7ICdiZWdpbic6IDB4MjQ2MCwgJ2VuZCc6IDB4MjRGRiB9LCAvLyBFbmNsb3NlZCBBbHBoYW51bWVyaWNzCiAgeyAnYmVnaW4nOiAweDI1MDAsICdlbmQnOiAweDI1N0YgfSwgLy8gQm94IERyYXdpbmcKICB7ICdiZWdpbic6IDB4MjU4MCwgJ2VuZCc6IDB4MjU5RiB9LCAvLyBCbG9jayBFbGVtZW50cwogIHsgJ2JlZ2luJzogMHgyNUEwLCAnZW5kJzogMHgyNUZGIH0sIC8vIEdlb21ldHJpYyBTaGFwZXMKICB7ICdiZWdpbic6IDB4MjYwMCwgJ2VuZCc6IDB4MjZGRiB9LCAvLyBNaXNjZWxsYW5lb3VzIFN5bWJvbHMKICB7ICdiZWdpbic6IDB4MjcwMCwgJ2VuZCc6IDB4MjdCRiB9LCAvLyBEaW5nYmF0cwogIHsgJ2JlZ2luJzogMHgzMDAwLCAnZW5kJzogMHgzMDNGIH0sIC8vIENKSyBTeW1ib2xzIEFuZCBQdW5jdHVhdGlvbgogIHsgJ2JlZ2luJzogMHgzMDQwLCAnZW5kJzogMHgzMDlGIH0sIC8vIEhpcmFnYW5hCiAgeyAnYmVnaW4nOiAweDMwQTAsICdlbmQnOiAweDMwRkYgfSwgLy8gS2F0YWthbmEKICB7ICdiZWdpbic6IDB4MzEwMCwgJ2VuZCc6IDB4MzEyRiB9LCAvLyBCb3BvbW9mbwogIHsgJ2JlZ2luJzogMHgzMTMwLCAnZW5kJzogMHgzMThGIH0sIC8vIEhhbmd1bCBDb21wYXRpYmlsaXR5IEphbW8KICB7ICdiZWdpbic6IDB4QTg0MCwgJ2VuZCc6IDB4QTg3RiB9LCAvLyBQaGFncy1wYQogIHsgJ2JlZ2luJzogMHgzMjAwLCAnZW5kJzogMHgzMkZGIH0sIC8vIEVuY2xvc2VkIENKSyBMZXR0ZXJzIEFuZCBNb250aHMKICB7ICdiZWdpbic6IDB4MzMwMCwgJ2VuZCc6IDB4MzNGRiB9LCAvLyBDSksgQ29tcGF0aWJpbGl0eQogIHsgJ2JlZ2luJzogMHhBQzAwLCAnZW5kJzogMHhEN0FGIH0sIC8vIEhhbmd1bCBTeWxsYWJsZXMKICB7ICdiZWdpbic6IDB4RDgwMCwgJ2VuZCc6IDB4REZGRiB9LCAvLyBOb24tUGxhbmUgMCAqCiAgeyAnYmVnaW4nOiAweDEwOTAwLCAnZW5kJzogMHgxMDkxRiB9LCAvLyBQaG9lbmljaWEKICB7ICdiZWdpbic6IDB4NEUwMCwgJ2VuZCc6IDB4OUZGRiB9LCAvLyBDSksgVW5pZmllZCBJZGVvZ3JhcGhzCiAgeyAnYmVnaW4nOiAweEUwMDAsICdlbmQnOiAweEY4RkYgfSwgLy8gUHJpdmF0ZSBVc2UgQXJlYSAocGxhbmUgMCkKICB7ICdiZWdpbic6IDB4MzFDMCwgJ2VuZCc6IDB4MzFFRiB9LCAvLyBDSksgU3Ryb2tlcwogIHsgJ2JlZ2luJzogMHhGQjAwLCAnZW5kJzogMHhGQjRGIH0sIC8vIEFscGhhYmV0aWMgUHJlc2VudGF0aW9uIEZvcm1zCiAgeyAnYmVnaW4nOiAweEZCNTAsICdlbmQnOiAweEZERkYgfSwgLy8gQXJhYmljIFByZXNlbnRhdGlvbiBGb3Jtcy1BCiAgeyAnYmVnaW4nOiAweEZFMjAsICdlbmQnOiAweEZFMkYgfSwgLy8gQ29tYmluaW5nIEhhbGYgTWFya3MKICB7ICdiZWdpbic6IDB4RkUxMCwgJ2VuZCc6IDB4RkUxRiB9LCAvLyBWZXJ0aWNhbCBGb3JtcwogIHsgJ2JlZ2luJzogMHhGRTUwLCAnZW5kJzogMHhGRTZGIH0sIC8vIFNtYWxsIEZvcm0gVmFyaWFudHMKICB7ICdiZWdpbic6IDB4RkU3MCwgJ2VuZCc6IDB4RkVGRiB9LCAvLyBBcmFiaWMgUHJlc2VudGF0aW9uIEZvcm1zLUIKICB7ICdiZWdpbic6IDB4RkYwMCwgJ2VuZCc6IDB4RkZFRiB9LCAvLyBIYWxmd2lkdGggQW5kIEZ1bGx3aWR0aCBGb3JtcwogIHsgJ2JlZ2luJzogMHhGRkYwLCAnZW5kJzogMHhGRkZGIH0sIC8vIFNwZWNpYWxzCiAgeyAnYmVnaW4nOiAweDBGMDAsICdlbmQnOiAweDBGRkYgfSwgLy8gVGliZXRhbgogIHsgJ2JlZ2luJzogMHgwNzAwLCAnZW5kJzogMHgwNzRGIH0sIC8vIFN5cmlhYwogIHsgJ2JlZ2luJzogMHgwNzgwLCAnZW5kJzogMHgwN0JGIH0sIC8vIFRoYWFuYQogIHsgJ2JlZ2luJzogMHgwRDgwLCAnZW5kJzogMHgwREZGIH0sIC8vIFNpbmhhbGEKICB7ICdiZWdpbic6IDB4MTAwMCwgJ2VuZCc6IDB4MTA5RiB9LCAvLyBNeWFubWFyCiAgeyAnYmVnaW4nOiAweDEyMDAsICdlbmQnOiAweDEzN0YgfSwgLy8gRXRoaW9waWMKICB7ICdiZWdpbic6IDB4MTNBMCwgJ2VuZCc6IDB4MTNGRiB9LCAvLyBDaGVyb2tlZQogIHsgJ2JlZ2luJzogMHgxNDAwLCAnZW5kJzogMHgxNjdGIH0sIC8vIFVuaWZpZWQgQ2FuYWRpYW4gQWJvcmlnaW5hbCBTeWxsYWJpY3MKICB7ICdiZWdpbic6IDB4MTY4MCwgJ2VuZCc6IDB4MTY5RiB9LCAvLyBPZ2hhbQogIHsgJ2JlZ2luJzogMHgxNkEwLCAnZW5kJzogMHgxNkZGIH0sIC8vIFJ1bmljCiAgeyAnYmVnaW4nOiAweDE3ODAsICdlbmQnOiAweDE3RkYgfSwgLy8gS2htZXIKICB7ICdiZWdpbic6IDB4MTgwMCwgJ2VuZCc6IDB4MThBRiB9LCAvLyBNb25nb2xpYW4KICB7ICdiZWdpbic6IDB4MjgwMCwgJ2VuZCc6IDB4MjhGRiB9LCAvLyBCcmFpbGxlIFBhdHRlcm5zCiAgeyAnYmVnaW4nOiAweEEwMDAsICdlbmQnOiAweEE0OEYgfSwgLy8gWWkgU3lsbGFibGVzCiAgeyAnYmVnaW4nOiAweDE3MDAsICdlbmQnOiAweDE3MUYgfSwgLy8gVGFnYWxvZwogIHsgJ2JlZ2luJzogMHgxMDMwMCwgJ2VuZCc6IDB4MTAzMkYgfSwgLy8gT2xkIEl0YWxpYwogIHsgJ2JlZ2luJzogMHgxMDMzMCwgJ2VuZCc6IDB4MTAzNEYgfSwgLy8gR290aGljCiAgeyAnYmVnaW4nOiAweDEwNDAwLCAnZW5kJzogMHgxMDQ0RiB9LCAvLyBEZXNlcmV0CiAgeyAnYmVnaW4nOiAweDFEMDAwLCAnZW5kJzogMHgxRDBGRiB9LCAvLyBCeXphbnRpbmUgTXVzaWNhbCBTeW1ib2xzCiAgeyAnYmVnaW4nOiAweDFENDAwLCAnZW5kJzogMHgxRDdGRiB9LCAvLyBNYXRoZW1hdGljYWwgQWxwaGFudW1lcmljIFN5bWJvbHMKICB7ICdiZWdpbic6IDB4RkYwMDAsICdlbmQnOiAweEZGRkZEIH0sIC8vIFByaXZhdGUgVXNlIChwbGFuZSAxNSkKICB7ICdiZWdpbic6IDB4RkUwMCwgJ2VuZCc6IDB4RkUwRiB9LCAvLyBWYXJpYXRpb24gU2VsZWN0b3JzCiAgeyAnYmVnaW4nOiAweEUwMDAwLCAnZW5kJzogMHhFMDA3RiB9LCAvLyBUYWdzCiAgeyAnYmVnaW4nOiAweDE5MDAsICdlbmQnOiAweDE5NEYgfSwgLy8gTGltYnUKICB7ICdiZWdpbic6IDB4MTk1MCwgJ2VuZCc6IDB4MTk3RiB9LCAvLyBUYWkgTGUKICB7ICdiZWdpbic6IDB4MTk4MCwgJ2VuZCc6IDB4MTlERiB9LCAvLyBOZXcgVGFpIEx1ZQogIHsgJ2JlZ2luJzogMHgxQTAwLCAnZW5kJzogMHgxQTFGIH0sIC8vIEJ1Z2luZXNlCiAgeyAnYmVnaW4nOiAweDJDMDAsICdlbmQnOiAweDJDNUYgfSwgLy8gR2xhZ29saXRpYwogIHsgJ2JlZ2luJzogMHgyRDMwLCAnZW5kJzogMHgyRDdGIH0sIC8vIFRpZmluYWdoCiAgeyAnYmVnaW4nOiAweDREQzAsICdlbmQnOiAweDRERkYgfSwgLy8gWWlqaW5nIEhleGFncmFtIFN5bWJvbHMKICB7ICdiZWdpbic6IDB4QTgwMCwgJ2VuZCc6IDB4QTgyRiB9LCAvLyBTeWxvdGkgTmFncmkKICB7ICdiZWdpbic6IDB4MTAwMDAsICdlbmQnOiAweDEwMDdGIH0sIC8vIExpbmVhciBCIFN5bGxhYmFyeQogIHsgJ2JlZ2luJzogMHgxMDE0MCwgJ2VuZCc6IDB4MTAxOEYgfSwgLy8gQW5jaWVudCBHcmVlayBOdW1iZXJzCiAgeyAnYmVnaW4nOiAweDEwMzgwLCAnZW5kJzogMHgxMDM5RiB9LCAvLyBVZ2FyaXRpYwogIHsgJ2JlZ2luJzogMHgxMDNBMCwgJ2VuZCc6IDB4MTAzREYgfSwgLy8gT2xkIFBlcnNpYW4KICB7ICdiZWdpbic6IDB4MTA0NTAsICdlbmQnOiAweDEwNDdGIH0sIC8vIFNoYXZpYW4KICB7ICdiZWdpbic6IDB4MTA0ODAsICdlbmQnOiAweDEwNEFGIH0sIC8vIE9zbWFueWEKICB7ICdiZWdpbic6IDB4MTA4MDAsICdlbmQnOiAweDEwODNGIH0sIC8vIEN5cHJpb3QgU3lsbGFiYXJ5CiAgeyAnYmVnaW4nOiAweDEwQTAwLCAnZW5kJzogMHgxMEE1RiB9LCAvLyBLaGFyb3NodGhpCiAgeyAnYmVnaW4nOiAweDFEMzAwLCAnZW5kJzogMHgxRDM1RiB9LCAvLyBUYWkgWHVhbiBKaW5nIFN5bWJvbHMKICB7ICdiZWdpbic6IDB4MTIwMDAsICdlbmQnOiAweDEyM0ZGIH0sIC8vIEN1bmVpZm9ybQogIHsgJ2JlZ2luJzogMHgxRDM2MCwgJ2VuZCc6IDB4MUQzN0YgfSwgLy8gQ291bnRpbmcgUm9kIE51bWVyYWxzCiAgeyAnYmVnaW4nOiAweDFCODAsICdlbmQnOiAweDFCQkYgfSwgLy8gU3VuZGFuZXNlCiAgeyAnYmVnaW4nOiAweDFDMDAsICdlbmQnOiAweDFDNEYgfSwgLy8gTGVwY2hhCiAgeyAnYmVnaW4nOiAweDFDNTAsICdlbmQnOiAweDFDN0YgfSwgLy8gT2wgQ2hpa2kKICB7ICdiZWdpbic6IDB4QTg4MCwgJ2VuZCc6IDB4QThERiB9LCAvLyBTYXVyYXNodHJhCiAgeyAnYmVnaW4nOiAweEE5MDAsICdlbmQnOiAweEE5MkYgfSwgLy8gS2F5YWggTGkKICB7ICdiZWdpbic6IDB4QTkzMCwgJ2VuZCc6IDB4QTk1RiB9LCAvLyBSZWphbmcKICB7ICdiZWdpbic6IDB4QUEwMCwgJ2VuZCc6IDB4QUE1RiB9LCAvLyBDaGFtCiAgeyAnYmVnaW4nOiAweDEwMTkwLCAnZW5kJzogMHgxMDFDRiB9LCAvLyBBbmNpZW50IFN5bWJvbHMKICB7ICdiZWdpbic6IDB4MTAxRDAsICdlbmQnOiAweDEwMUZGIH0sIC8vIFBoYWlzdG9zIERpc2MKICB7ICdiZWdpbic6IDB4MTAyQTAsICdlbmQnOiAweDEwMkRGIH0sIC8vIENhcmlhbgogIHsgJ2JlZ2luJzogMHgxRjAzMCwgJ2VuZCc6IDB4MUYwOUYgfSAgLy8gRG9taW5vIFRpbGVzCl07Cgp2YXIgTWFjU3RhbmRhcmRHbHlwaE9yZGVyaW5nID0gWwogICcubm90ZGVmJywgJy5udWxsJywgJ25vbm1hcmtpbmdyZXR1cm4nLCAnc3BhY2UnLCAnZXhjbGFtJywgJ3F1b3RlZGJsJywKICAnbnVtYmVyc2lnbicsICdkb2xsYXInLCAncGVyY2VudCcsICdhbXBlcnNhbmQnLCAncXVvdGVzaW5nbGUnLCAncGFyZW5sZWZ0JywKICAncGFyZW5yaWdodCcsICdhc3RlcmlzaycsICdwbHVzJywgJ2NvbW1hJywgJ2h5cGhlbicsICdwZXJpb2QnLCAnc2xhc2gnLAogICd6ZXJvJywgJ29uZScsICd0d28nLCAndGhyZWUnLCAnZm91cicsICdmaXZlJywgJ3NpeCcsICdzZXZlbicsICdlaWdodCcsCiAgJ25pbmUnLCAnY29sb24nLCAnc2VtaWNvbG9uJywgJ2xlc3MnLCAnZXF1YWwnLCAnZ3JlYXRlcicsICdxdWVzdGlvbicsICdhdCcsCiAgJ0EnLCAnQicsICdDJywgJ0QnLCAnRScsICdGJywgJ0cnLCAnSCcsICdJJywgJ0onLCAnSycsICdMJywgJ00nLCAnTicsICdPJywKICAnUCcsICdRJywgJ1InLCAnUycsICdUJywgJ1UnLCAnVicsICdXJywgJ1gnLCAnWScsICdaJywgJ2JyYWNrZXRsZWZ0JywKICAnYmFja3NsYXNoJywgJ2JyYWNrZXRyaWdodCcsICdhc2NpaWNpcmN1bScsICd1bmRlcnNjb3JlJywgJ2dyYXZlJywgJ2EnLCAnYicsCiAgJ2MnLCAnZCcsICdlJywgJ2YnLCAnZycsICdoJywgJ2knLCAnaicsICdrJywgJ2wnLCAnbScsICduJywgJ28nLCAncCcsICdxJywKICAncicsICdzJywgJ3QnLCAndScsICd2JywgJ3cnLCAneCcsICd5JywgJ3onLCAnYnJhY2VsZWZ0JywgJ2JhcicsICdicmFjZXJpZ2h0JywKICAnYXNjaWl0aWxkZScsICdBZGllcmVzaXMnLCAnQXJpbmcnLCAnQ2NlZGlsbGEnLCAnRWFjdXRlJywgJ050aWxkZScsCiAgJ09kaWVyZXNpcycsICdVZGllcmVzaXMnLCAnYWFjdXRlJywgJ2FncmF2ZScsICdhY2lyY3VtZmxleCcsICdhZGllcmVzaXMnLAogICdhdGlsZGUnLCAnYXJpbmcnLCAnY2NlZGlsbGEnLCAnZWFjdXRlJywgJ2VncmF2ZScsICdlY2lyY3VtZmxleCcsICdlZGllcmVzaXMnLAogICdpYWN1dGUnLCAnaWdyYXZlJywgJ2ljaXJjdW1mbGV4JywgJ2lkaWVyZXNpcycsICdudGlsZGUnLCAnb2FjdXRlJywgJ29ncmF2ZScsCiAgJ29jaXJjdW1mbGV4JywgJ29kaWVyZXNpcycsICdvdGlsZGUnLCAndWFjdXRlJywgJ3VncmF2ZScsICd1Y2lyY3VtZmxleCcsCiAgJ3VkaWVyZXNpcycsICdkYWdnZXInLCAnZGVncmVlJywgJ2NlbnQnLCAnc3RlcmxpbmcnLCAnc2VjdGlvbicsICdidWxsZXQnLAogICdwYXJhZ3JhcGgnLCAnZ2VybWFuZGJscycsICdyZWdpc3RlcmVkJywgJ2NvcHlyaWdodCcsICd0cmFkZW1hcmsnLCAnYWN1dGUnLAogICdkaWVyZXNpcycsICdub3RlcXVhbCcsICdBRScsICdPc2xhc2gnLCAnaW5maW5pdHknLCAncGx1c21pbnVzJywgJ2xlc3NlcXVhbCcsCiAgJ2dyZWF0ZXJlcXVhbCcsICd5ZW4nLCAnbXUnLCAncGFydGlhbGRpZmYnLCAnc3VtbWF0aW9uJywgJ3Byb2R1Y3QnLCAncGknLAogICdpbnRlZ3JhbCcsICdvcmRmZW1pbmluZScsICdvcmRtYXNjdWxpbmUnLCAnT21lZ2EnLCAnYWUnLCAnb3NsYXNoJywKICAncXVlc3Rpb25kb3duJywgJ2V4Y2xhbWRvd24nLCAnbG9naWNhbG5vdCcsICdyYWRpY2FsJywgJ2Zsb3JpbicsCiAgJ2FwcHJveGVxdWFsJywgJ0RlbHRhJywgJ2d1aWxsZW1vdGxlZnQnLCAnZ3VpbGxlbW90cmlnaHQnLCAnZWxsaXBzaXMnLAogICdub25icmVha2luZ3NwYWNlJywgJ0FncmF2ZScsICdBdGlsZGUnLCAnT3RpbGRlJywgJ09FJywgJ29lJywgJ2VuZGFzaCcsCiAgJ2VtZGFzaCcsICdxdW90ZWRibGxlZnQnLCAncXVvdGVkYmxyaWdodCcsICdxdW90ZWxlZnQnLCAncXVvdGVyaWdodCcsCiAgJ2RpdmlkZScsICdsb3plbmdlJywgJ3lkaWVyZXNpcycsICdZZGllcmVzaXMnLCAnZnJhY3Rpb24nLCAnY3VycmVuY3knLAogICdndWlsc2luZ2xsZWZ0JywgJ2d1aWxzaW5nbHJpZ2h0JywgJ2ZpJywgJ2ZsJywgJ2RhZ2dlcmRibCcsICdwZXJpb2RjZW50ZXJlZCcsCiAgJ3F1b3Rlc2luZ2xiYXNlJywgJ3F1b3RlZGJsYmFzZScsICdwZXJ0aG91c2FuZCcsICdBY2lyY3VtZmxleCcsCiAgJ0VjaXJjdW1mbGV4JywgJ0FhY3V0ZScsICdFZGllcmVzaXMnLCAnRWdyYXZlJywgJ0lhY3V0ZScsICdJY2lyY3VtZmxleCcsCiAgJ0lkaWVyZXNpcycsICdJZ3JhdmUnLCAnT2FjdXRlJywgJ09jaXJjdW1mbGV4JywgJ2FwcGxlJywgJ09ncmF2ZScsICdVYWN1dGUnLAogICdVY2lyY3VtZmxleCcsICdVZ3JhdmUnLCAnZG90bGVzc2knLCAnY2lyY3VtZmxleCcsICd0aWxkZScsICdtYWNyb24nLAogICdicmV2ZScsICdkb3RhY2NlbnQnLCAncmluZycsICdjZWRpbGxhJywgJ2h1bmdhcnVtbGF1dCcsICdvZ29uZWsnLCAnY2Fyb24nLAogICdMc2xhc2gnLCAnbHNsYXNoJywgJ1NjYXJvbicsICdzY2Fyb24nLCAnWmNhcm9uJywgJ3pjYXJvbicsICdicm9rZW5iYXInLAogICdFdGgnLCAnZXRoJywgJ1lhY3V0ZScsICd5YWN1dGUnLCAnVGhvcm4nLCAndGhvcm4nLCAnbWludXMnLCAnbXVsdGlwbHknLAogICdvbmVzdXBlcmlvcicsICd0d29zdXBlcmlvcicsICd0aHJlZXN1cGVyaW9yJywgJ29uZWhhbGYnLCAnb25lcXVhcnRlcicsCiAgJ3RocmVlcXVhcnRlcnMnLCAnZnJhbmMnLCAnR2JyZXZlJywgJ2dicmV2ZScsICdJZG90YWNjZW50JywgJ1NjZWRpbGxhJywKICAnc2NlZGlsbGEnLCAnQ2FjdXRlJywgJ2NhY3V0ZScsICdDY2Fyb24nLCAnY2Nhcm9uJywgJ2Rjcm9hdCddOwoKZnVuY3Rpb24gZ2V0VW5pY29kZVJhbmdlRm9yKHZhbHVlKSB7CiAgZm9yICh2YXIgaSA9IDAsIGlpID0gVW5pY29kZVJhbmdlcy5sZW5ndGg7IGkgPCBpaTsgaSsrKSB7CiAgICB2YXIgcmFuZ2UgPSBVbmljb2RlUmFuZ2VzW2ldOwogICAgaWYgKHZhbHVlID49IHJhbmdlLmJlZ2luICYmIHZhbHVlIDwgcmFuZ2UuZW5kKSB7CiAgICAgIHJldHVybiBpOwogICAgfQogIH0KICByZXR1cm4gLTE7Cn0KCmZ1bmN0aW9uIGlzUlRMUmFuZ2VGb3IodmFsdWUpIHsKICB2YXIgcmFuZ2UgPSBVbmljb2RlUmFuZ2VzWzEzXTsKICBpZiAodmFsdWUgPj0gcmFuZ2UuYmVnaW4gJiYgdmFsdWUgPCByYW5nZS5lbmQpIHsKICAgIHJldHVybiB0cnVlOwogIH0KICByYW5nZSA9IFVuaWNvZGVSYW5nZXNbMTFdOwogIGlmICh2YWx1ZSA+PSByYW5nZS5iZWdpbiAmJiB2YWx1ZSA8IHJhbmdlLmVuZCkgewogICAgcmV0dXJuIHRydWU7CiAgfQogIHJldHVybiBmYWxzZTsKfQoKLy8gVGhlIG5vcm1hbGl6YXRpb24gdGFibGUgaXMgb2J0YWluZWQgYnkgZmlsdGVyaW5nIHRoZSBVbmljb2RlIGNoYXJhY3RlcnMKLy8gZGF0YWJhc2Ugd2l0aCA8Y29tcGF0PiBlbnRyaWVzLgp2YXIgTm9ybWFsaXplZFVuaWNvZGVzID0gewogICdcdTAwQTgnOiAnXHUwMDIwXHUwMzA4JywKICAnXHUwMEFGJzogJ1x1MDAyMFx1MDMwNCcsCiAgJ1x1MDBCNCc6ICdcdTAwMjBcdTAzMDEnLAogICdcdTAwQjUnOiAnXHUwM0JDJywKICAnXHUwMEI4JzogJ1x1MDAyMFx1MDMyNycsCiAgJ1x1MDEzMic6ICdcdTAwNDlcdTAwNEEnLAogICdcdTAxMzMnOiAnXHUwMDY5XHUwMDZBJywKICAnXHUwMTNGJzogJ1x1MDA0Q1x1MDBCNycsCiAgJ1x1MDE0MCc6ICdcdTAwNkNcdTAwQjcnLAogICdcdTAxNDknOiAnXHUwMkJDXHUwMDZFJywKICAnXHUwMTdGJzogJ1x1MDA3MycsCiAgJ1x1MDFDNCc6ICdcdTAwNDRcdTAxN0QnLAogICdcdTAxQzUnOiAnXHUwMDQ0XHUwMTdFJywKICAnXHUwMUM2JzogJ1x1MDA2NFx1MDE3RScsCiAgJ1x1MDFDNyc6ICdcdTAwNENcdTAwNEEnLAogICdcdTAxQzgnOiAnXHUwMDRDXHUwMDZBJywKICAnXHUwMUM5JzogJ1x1MDA2Q1x1MDA2QScsCiAgJ1x1MDFDQSc6ICdcdTAwNEVcdTAwNEEnLAogICdcdTAxQ0InOiAnXHUwMDRFXHUwMDZBJywKICAnXHUwMUNDJzogJ1x1MDA2RVx1MDA2QScsCiAgJ1x1MDFGMSc6ICdcdTAwNDRcdTAwNUEnLAogICdcdTAxRjInOiAnXHUwMDQ0XHUwMDdBJywKICAnXHUwMUYzJzogJ1x1MDA2NFx1MDA3QScsCiAgJ1x1MDJEOCc6ICdcdTAwMjBcdTAzMDYnLAogICdcdTAyRDknOiAnXHUwMDIwXHUwMzA3JywKICAnXHUwMkRBJzogJ1x1MDAyMFx1MDMwQScsCiAgJ1x1MDJEQic6ICdcdTAwMjBcdTAzMjgnLAogICdcdTAyREMnOiAnXHUwMDIwXHUwMzAzJywKICAnXHUwMkREJzogJ1x1MDAyMFx1MDMwQicsCiAgJ1x1MDM3QSc6ICdcdTAwMjBcdTAzNDUnLAogICdcdTAzODQnOiAnXHUwMDIwXHUwMzAxJywKICAnXHUwM0QwJzogJ1x1MDNCMicsCiAgJ1x1MDNEMSc6ICdcdTAzQjgnLAogICdcdTAzRDInOiAnXHUwM0E1JywKICAnXHUwM0Q1JzogJ1x1MDNDNicsCiAgJ1x1MDNENic6ICdcdTAzQzAnLAogICdcdTAzRjAnOiAnXHUwM0JBJywKICAnXHUwM0YxJzogJ1x1MDNDMScsCiAgJ1x1MDNGMic6ICdcdTAzQzInLAogICdcdTAzRjQnOiAnXHUwMzk4JywKICAnXHUwM0Y1JzogJ1x1MDNCNScsCiAgJ1x1MDNGOSc6ICdcdTAzQTMnLAogICdcdTA1ODcnOiAnXHUwNTY1XHUwNTgyJywKICAnXHUwNjc1JzogJ1x1MDYyN1x1MDY3NCcsCiAgJ1x1MDY3Nic6ICdcdTA2NDhcdTA2NzQnLAogICdcdTA2NzcnOiAnXHUwNkM3XHUwNjc0JywKICAnXHUwNjc4JzogJ1x1MDY0QVx1MDY3NCcsCiAgJ1x1MEUzMyc6ICdcdTBFNERcdTBFMzInLAogICdcdTBFQjMnOiAnXHUwRUNEXHUwRUIyJywKICAnXHUwRURDJzogJ1x1MEVBQlx1MEU5OScsCiAgJ1x1MEVERCc6ICdcdTBFQUJcdTBFQTEnLAogICdcdTBGNzcnOiAnXHUwRkIyXHUwRjgxJywKICAnXHUwRjc5JzogJ1x1MEZCM1x1MEY4MScsCiAgJ1x1MUU5QSc6ICdcdTAwNjFcdTAyQkUnLAogICdcdTFGQkQnOiAnXHUwMDIwXHUwMzEzJywKICAnXHUxRkJGJzogJ1x1MDAyMFx1MDMxMycsCiAgJ1x1MUZDMCc6ICdcdTAwMjBcdTAzNDInLAogICdcdTFGRkUnOiAnXHUwMDIwXHUwMzE0JywKICAnXHUyMDAyJzogJ1x1MDAyMCcsCiAgJ1x1MjAwMyc6ICdcdTAwMjAnLAogICdcdTIwMDQnOiAnXHUwMDIwJywKICAnXHUyMDA1JzogJ1x1MDAyMCcsCiAgJ1x1MjAwNic6ICdcdTAwMjAnLAogICdcdTIwMDgnOiAnXHUwMDIwJywKICAnXHUyMDA5JzogJ1x1MDAyMCcsCiAgJ1x1MjAwQSc6ICdcdTAwMjAnLAogICdcdTIwMTcnOiAnXHUwMDIwXHUwMzMzJywKICAnXHUyMDI0JzogJ1x1MDAyRScsCiAgJ1x1MjAyNSc6ICdcdTAwMkVcdTAwMkUnLAogICdcdTIwMjYnOiAnXHUwMDJFXHUwMDJFXHUwMDJFJywKICAnXHUyMDMzJzogJ1x1MjAzMlx1MjAzMicsCiAgJ1x1MjAzNCc6ICdcdTIwMzJcdTIwMzJcdTIwMzInLAogICdcdTIwMzYnOiAnXHUyMDM1XHUyMDM1JywKICAnXHUyMDM3JzogJ1x1MjAzNVx1MjAzNVx1MjAzNScsCiAgJ1x1MjAzQyc6ICdcdTAwMjFcdTAwMjEnLAogICdcdTIwM0UnOiAnXHUwMDIwXHUwMzA1JywKICAnXHUyMDQ3JzogJ1x1MDAzRlx1MDAzRicsCiAgJ1x1MjA0OCc6ICdcdTAwM0ZcdTAwMjEnLAogICdcdTIwNDknOiAnXHUwMDIxXHUwMDNGJywKICAnXHUyMDU3JzogJ1x1MjAzMlx1MjAzMlx1MjAzMlx1MjAzMicsCiAgJ1x1MjA1Ric6ICdcdTAwMjAnLAogICdcdTIwQTgnOiAnXHUwMDUyXHUwMDczJywKICAnXHUyMTAwJzogJ1x1MDA2MVx1MDAyRlx1MDA2MycsCiAgJ1x1MjEwMSc6ICdcdTAwNjFcdTAwMkZcdTAwNzMnLAogICdcdTIxMDMnOiAnXHUwMEIwXHUwMDQzJywKICAnXHUyMTA1JzogJ1x1MDA2M1x1MDAyRlx1MDA2RicsCiAgJ1x1MjEwNic6ICdcdTAwNjNcdTAwMkZcdTAwNzUnLAogICdcdTIxMDcnOiAnXHUwMTkwJywKICAnXHUyMTA5JzogJ1x1MDBCMFx1MDA0NicsCiAgJ1x1MjExNic6ICdcdTAwNEVcdTAwNkYnLAogICdcdTIxMjEnOiAnXHUwMDU0XHUwMDQ1XHUwMDRDJywKICAnXHUyMTM1JzogJ1x1MDVEMCcsCiAgJ1x1MjEzNic6ICdcdTA1RDEnLAogICdcdTIxMzcnOiAnXHUwNUQyJywKICAnXHUyMTM4JzogJ1x1MDVEMycsCiAgJ1x1MjEzQic6ICdcdTAwNDZcdTAwNDFcdTAwNTgnLAogICdcdTIxNjAnOiAnXHUwMDQ5JywKICAnXHUyMTYxJzogJ1x1MDA0OVx1MDA0OScsCiAgJ1x1MjE2Mic6ICdcdTAwNDlcdTAwNDlcdTAwNDknLAogICdcdTIxNjMnOiAnXHUwMDQ5XHUwMDU2JywKICAnXHUyMTY0JzogJ1x1MDA1NicsCiAgJ1x1MjE2NSc6ICdcdTAwNTZcdTAwNDknLAogICdcdTIxNjYnOiAnXHUwMDU2XHUwMDQ5XHUwMDQ5JywKICAnXHUyMTY3JzogJ1x1MDA1Nlx1MDA0OVx1MDA0OVx1MDA0OScsCiAgJ1x1MjE2OCc6ICdcdTAwNDlcdTAwNTgnLAogICdcdTIxNjknOiAnXHUwMDU4JywKICAnXHUyMTZBJzogJ1x1MDA1OFx1MDA0OScsCiAgJ1x1MjE2Qic6ICdcdTAwNThcdTAwNDlcdTAwNDknLAogICdcdTIxNkMnOiAnXHUwMDRDJywKICAnXHUyMTZEJzogJ1x1MDA0MycsCiAgJ1x1MjE2RSc6ICdcdTAwNDQnLAogICdcdTIxNkYnOiAnXHUwMDREJywKICAnXHUyMTcwJzogJ1x1MDA2OScsCiAgJ1x1MjE3MSc6ICdcdTAwNjlcdTAwNjknLAogICdcdTIxNzInOiAnXHUwMDY5XHUwMDY5XHUwMDY5JywKICAnXHUyMTczJzogJ1x1MDA2OVx1MDA3NicsCiAgJ1x1MjE3NCc6ICdcdTAwNzYnLAogICdcdTIxNzUnOiAnXHUwMDc2XHUwMDY5JywKICAnXHUyMTc2JzogJ1x1MDA3Nlx1MDA2OVx1MDA2OScsCiAgJ1x1MjE3Nyc6ICdcdTAwNzZcdTAwNjlcdTAwNjlcdTAwNjknLAogICdcdTIxNzgnOiAnXHUwMDY5XHUwMDc4JywKICAnXHUyMTc5JzogJ1x1MDA3OCcsCiAgJ1x1MjE3QSc6ICdcdTAwNzhcdTAwNjknLAogICdcdTIxN0InOiAnXHUwMDc4XHUwMDY5XHUwMDY5JywKICAnXHUyMTdDJzogJ1x1MDA2QycsCiAgJ1x1MjE3RCc6ICdcdTAwNjMnLAogICdcdTIxN0UnOiAnXHUwMDY0JywKICAnXHUyMTdGJzogJ1x1MDA2RCcsCiAgJ1x1MjIyQyc6ICdcdTIyMkJcdTIyMkInLAogICdcdTIyMkQnOiAnXHUyMjJCXHUyMjJCXHUyMjJCJywKICAnXHUyMjJGJzogJ1x1MjIyRVx1MjIyRScsCiAgJ1x1MjIzMCc6ICdcdTIyMkVcdTIyMkVcdTIyMkUnLAogICdcdTI0NzQnOiAnXHUwMDI4XHUwMDMxXHUwMDI5JywKICAnXHUyNDc1JzogJ1x1MDAyOFx1MDAzMlx1MDAyOScsCiAgJ1x1MjQ3Nic6ICdcdTAwMjhcdTAwMzNcdTAwMjknLAogICdcdTI0NzcnOiAnXHUwMDI4XHUwMDM0XHUwMDI5JywKICAnXHUyNDc4JzogJ1x1MDAyOFx1MDAzNVx1MDAyOScsCiAgJ1x1MjQ3OSc6ICdcdTAwMjhcdTAwMzZcdTAwMjknLAogICdcdTI0N0EnOiAnXHUwMDI4XHUwMDM3XHUwMDI5JywKICAnXHUyNDdCJzogJ1x1MDAyOFx1MDAzOFx1MDAyOScsCiAgJ1x1MjQ3Qyc6ICdcdTAwMjhcdTAwMzlcdTAwMjknLAogICdcdTI0N0QnOiAnXHUwMDI4XHUwMDMxXHUwMDMwXHUwMDI5JywKICAnXHUyNDdFJzogJ1x1MDAyOFx1MDAzMVx1MDAzMVx1MDAyOScsCiAgJ1x1MjQ3Ric6ICdcdTAwMjhcdTAwMzFcdTAwMzJcdTAwMjknLAogICdcdTI0ODAnOiAnXHUwMDI4XHUwMDMxXHUwMDMzXHUwMDI5JywKICAnXHUyNDgxJzogJ1x1MDAyOFx1MDAzMVx1MDAzNFx1MDAyOScsCiAgJ1x1MjQ4Mic6ICdcdTAwMjhcdTAwMzFcdTAwMzVcdTAwMjknLAogICdcdTI0ODMnOiAnXHUwMDI4XHUwMDMxXHUwMDM2XHUwMDI5JywKICAnXHUyNDg0JzogJ1x1MDAyOFx1MDAzMVx1MDAzN1x1MDAyOScsCiAgJ1x1MjQ4NSc6ICdcdTAwMjhcdTAwMzFcdTAwMzhcdTAwMjknLAogICdcdTI0ODYnOiAnXHUwMDI4XHUwMDMxXHUwMDM5XHUwMDI5JywKICAnXHUyNDg3JzogJ1x1MDAyOFx1MDAzMlx1MDAzMFx1MDAyOScsCiAgJ1x1MjQ4OCc6ICdcdTAwMzFcdTAwMkUnLAogICdcdTI0ODknOiAnXHUwMDMyXHUwMDJFJywKICAnXHUyNDhBJzogJ1x1MDAzM1x1MDAyRScsCiAgJ1x1MjQ4Qic6ICdcdTAwMzRcdTAwMkUnLAogICdcdTI0OEMnOiAnXHUwMDM1XHUwMDJFJywKICAnXHUyNDhEJzogJ1x1MDAzNlx1MDAyRScsCiAgJ1x1MjQ4RSc6ICdcdTAwMzdcdTAwMkUnLAogICdcdTI0OEYnOiAnXHUwMDM4XHUwMDJFJywKICAnXHUyNDkwJzogJ1x1MDAzOVx1MDAyRScsCiAgJ1x1MjQ5MSc6ICdcdTAwMzFcdTAwMzBcdTAwMkUnLAogICdcdTI0OTInOiAnXHUwMDMxXHUwMDMxXHUwMDJFJywKICAnXHUyNDkzJzogJ1x1MDAzMVx1MDAzMlx1MDAyRScsCiAgJ1x1MjQ5NCc6ICdcdTAwMzFcdTAwMzNcdTAwMkUnLAogICdcdTI0OTUnOiAnXHUwMDMxXHUwMDM0XHUwMDJFJywKICAnXHUyNDk2JzogJ1x1MDAzMVx1MDAzNVx1MDAyRScsCiAgJ1x1MjQ5Nyc6ICdcdTAwMzFcdTAwMzZcdTAwMkUnLAogICdcdTI0OTgnOiAnXHUwMDMxXHUwMDM3XHUwMDJFJywKICAnXHUyNDk5JzogJ1x1MDAzMVx1MDAzOFx1MDAyRScsCiAgJ1x1MjQ5QSc6ICdcdTAwMzFcdTAwMzlcdTAwMkUnLAogICdcdTI0OUInOiAnXHUwMDMyXHUwMDMwXHUwMDJFJywKICAnXHUyNDlDJzogJ1x1MDAyOFx1MDA2MVx1MDAyOScsCiAgJ1x1MjQ5RCc6ICdcdTAwMjhcdTAwNjJcdTAwMjknLAogICdcdTI0OUUnOiAnXHUwMDI4XHUwMDYzXHUwMDI5JywKICAnXHUyNDlGJzogJ1x1MDAyOFx1MDA2NFx1MDAyOScsCiAgJ1x1MjRBMCc6ICdcdTAwMjhcdTAwNjVcdTAwMjknLAogICdcdTI0QTEnOiAnXHUwMDI4XHUwMDY2XHUwMDI5JywKICAnXHUyNEEyJzogJ1x1MDAyOFx1MDA2N1x1MDAyOScsCiAgJ1x1MjRBMyc6ICdcdTAwMjhcdTAwNjhcdTAwMjknLAogICdcdTI0QTQnOiAnXHUwMDI4XHUwMDY5XHUwMDI5JywKICAnXHUyNEE1JzogJ1x1MDAyOFx1MDA2QVx1MDAyOScsCiAgJ1x1MjRBNic6ICdcdTAwMjhcdTAwNkJcdTAwMjknLAogICdcdTI0QTcnOiAnXHUwMDI4XHUwMDZDXHUwMDI5JywKICAnXHUyNEE4JzogJ1x1MDAyOFx1MDA2RFx1MDAyOScsCiAgJ1x1MjRBOSc6ICdcdTAwMjhcdTAwNkVcdTAwMjknLAogICdcdTI0QUEnOiAnXHUwMDI4XHUwMDZGXHUwMDI5JywKICAnXHUyNEFCJzogJ1x1MDAyOFx1MDA3MFx1MDAyOScsCiAgJ1x1MjRBQyc6ICdcdTAwMjhcdTAwNzFcdTAwMjknLAogICdcdTI0QUQnOiAnXHUwMDI4XHUwMDcyXHUwMDI5JywKICAnXHUyNEFFJzogJ1x1MDAyOFx1MDA3M1x1MDAyOScsCiAgJ1x1MjRBRic6ICdcdTAwMjhcdTAwNzRcdTAwMjknLAogICdcdTI0QjAnOiAnXHUwMDI4XHUwMDc1XHUwMDI5JywKICAnXHUyNEIxJzogJ1x1MDAyOFx1MDA3Nlx1MDAyOScsCiAgJ1x1MjRCMic6ICdcdTAwMjhcdTAwNzdcdTAwMjknLAogICdcdTI0QjMnOiAnXHUwMDI4XHUwMDc4XHUwMDI5JywKICAnXHUyNEI0JzogJ1x1MDAyOFx1MDA3OVx1MDAyOScsCiAgJ1x1MjRCNSc6ICdcdTAwMjhcdTAwN0FcdTAwMjknLAogICdcdTJBMEMnOiAnXHUyMjJCXHUyMjJCXHUyMjJCXHUyMjJCJywKICAnXHUyQTc0JzogJ1x1MDAzQVx1MDAzQVx1MDAzRCcsCiAgJ1x1MkE3NSc6ICdcdTAwM0RcdTAwM0QnLAogICdcdTJBNzYnOiAnXHUwMDNEXHUwMDNEXHUwMDNEJywKICAnXHUyRTlGJzogJ1x1NkJDRCcsCiAgJ1x1MkVGMyc6ICdcdTlGOUYnLAogICdcdTJGMDAnOiAnXHU0RTAwJywKICAnXHUyRjAxJzogJ1x1NEUyOCcsCiAgJ1x1MkYwMic6ICdcdTRFMzYnLAogICdcdTJGMDMnOiAnXHU0RTNGJywKICAnXHUyRjA0JzogJ1x1NEU1OScsCiAgJ1x1MkYwNSc6ICdcdTRFODUnLAogICdcdTJGMDYnOiAnXHU0RThDJywKICAnXHUyRjA3JzogJ1x1NEVBMCcsCiAgJ1x1MkYwOCc6ICdcdTRFQkEnLAogICdcdTJGMDknOiAnXHU1MTNGJywKICAnXHUyRjBBJzogJ1x1NTE2NScsCiAgJ1x1MkYwQic6ICdcdTUxNkInLAogICdcdTJGMEMnOiAnXHU1MTgyJywKICAnXHUyRjBEJzogJ1x1NTE5NicsCiAgJ1x1MkYwRSc6ICdcdTUxQUInLAogICdcdTJGMEYnOiAnXHU1MUUwJywKICAnXHUyRjEwJzogJ1x1NTFGNScsCiAgJ1x1MkYxMSc6ICdcdTUyMDAnLAogICdcdTJGMTInOiAnXHU1MjlCJywKICAnXHUyRjEzJzogJ1x1NTJGOScsCiAgJ1x1MkYxNCc6ICdcdTUzMTUnLAogICdcdTJGMTUnOiAnXHU1MzFBJywKICAnXHUyRjE2JzogJ1x1NTMzOCcsCiAgJ1x1MkYxNyc6ICdcdTUzNDEnLAogICdcdTJGMTgnOiAnXHU1MzVDJywKICAnXHUyRjE5JzogJ1x1NTM2OScsCiAgJ1x1MkYxQSc6ICdcdTUzODInLAogICdcdTJGMUInOiAnXHU1M0I2JywKICAnXHUyRjFDJzogJ1x1NTNDOCcsCiAgJ1x1MkYxRCc6ICdcdTUzRTMnLAogICdcdTJGMUUnOiAnXHU1NkQ3JywKICAnXHUyRjFGJzogJ1x1NTcxRicsCiAgJ1x1MkYyMCc6ICdcdTU4RUInLAogICdcdTJGMjEnOiAnXHU1OTAyJywKICAnXHUyRjIyJzogJ1x1NTkwQScsCiAgJ1x1MkYyMyc6ICdcdTU5MTUnLAogICdcdTJGMjQnOiAnXHU1OTI3JywKICAnXHUyRjI1JzogJ1x1NTk3MycsCiAgJ1x1MkYyNic6ICdcdTVCNTAnLAogICdcdTJGMjcnOiAnXHU1QjgwJywKICAnXHUyRjI4JzogJ1x1NUJGOCcsCiAgJ1x1MkYyOSc6ICdcdTVDMEYnLAogICdcdTJGMkEnOiAnXHU1QzIyJywKICAnXHUyRjJCJzogJ1x1NUMzOCcsCiAgJ1x1MkYyQyc6ICdcdTVDNkUnLAogICdcdTJGMkQnOiAnXHU1QzcxJywKICAnXHUyRjJFJzogJ1x1NUREQicsCiAgJ1x1MkYyRic6ICdcdTVERTUnLAogICdcdTJGMzAnOiAnXHU1REYxJywKICAnXHUyRjMxJzogJ1x1NURGRScsCiAgJ1x1MkYzMic6ICdcdTVFNzInLAogICdcdTJGMzMnOiAnXHU1RTdBJywKICAnXHUyRjM0JzogJ1x1NUU3RicsCiAgJ1x1MkYzNSc6ICdcdTVFRjQnLAogICdcdTJGMzYnOiAnXHU1RUZFJywKICAnXHUyRjM3JzogJ1x1NUYwQicsCiAgJ1x1MkYzOCc6ICdcdTVGMTMnLAogICdcdTJGMzknOiAnXHU1RjUwJywKICAnXHUyRjNBJzogJ1x1NUY2MScsCiAgJ1x1MkYzQic6ICdcdTVGNzMnLAogICdcdTJGM0MnOiAnXHU1RkMzJywKICAnXHUyRjNEJzogJ1x1NjIwOCcsCiAgJ1x1MkYzRSc6ICdcdTYyMzYnLAogICdcdTJGM0YnOiAnXHU2MjRCJywKICAnXHUyRjQwJzogJ1x1NjUyRicsCiAgJ1x1MkY0MSc6ICdcdTY1MzQnLAogICdcdTJGNDInOiAnXHU2NTg3JywKICAnXHUyRjQzJzogJ1x1NjU5NycsCiAgJ1x1MkY0NCc6ICdcdTY1QTQnLAogICdcdTJGNDUnOiAnXHU2NUI5JywKICAnXHUyRjQ2JzogJ1x1NjVFMCcsCiAgJ1x1MkY0Nyc6ICdcdTY1RTUnLAogICdcdTJGNDgnOiAnXHU2NkYwJywKICAnXHUyRjQ5JzogJ1x1NjcwOCcsCiAgJ1x1MkY0QSc6ICdcdTY3MjgnLAogICdcdTJGNEInOiAnXHU2QjIwJywKICAnXHUyRjRDJzogJ1x1NkI2MicsCiAgJ1x1MkY0RCc6ICdcdTZCNzknLAogICdcdTJGNEUnOiAnXHU2QkIzJywKICAnXHUyRjRGJzogJ1x1NkJDQicsCiAgJ1x1MkY1MCc6ICdcdTZCRDQnLAogICdcdTJGNTEnOiAnXHU2QkRCJywKICAnXHUyRjUyJzogJ1x1NkMwRicsCiAgJ1x1MkY1Myc6ICdcdTZDMTQnLAogICdcdTJGNTQnOiAnXHU2QzM0JywKICAnXHUyRjU1JzogJ1x1NzA2QicsCiAgJ1x1MkY1Nic6ICdcdTcyMkEnLAogICdcdTJGNTcnOiAnXHU3MjM2JywKICAnXHUyRjU4JzogJ1x1NzIzQicsCiAgJ1x1MkY1OSc6ICdcdTcyM0YnLAogICdcdTJGNUEnOiAnXHU3MjQ3JywKICAnXHUyRjVCJzogJ1x1NzI1OScsCiAgJ1x1MkY1Qyc6ICdcdTcyNUInLAogICdcdTJGNUQnOiAnXHU3MkFDJywKICAnXHUyRjVFJzogJ1x1NzM4NCcsCiAgJ1x1MkY1Ric6ICdcdTczODknLAogICdcdTJGNjAnOiAnXHU3NERDJywKICAnXHUyRjYxJzogJ1x1NzRFNicsCiAgJ1x1MkY2Mic6ICdcdTc1MTgnLAogICdcdTJGNjMnOiAnXHU3NTFGJywKICAnXHUyRjY0JzogJ1x1NzUyOCcsCiAgJ1x1MkY2NSc6ICdcdTc1MzAnLAogICdcdTJGNjYnOiAnXHU3NThCJywKICAnXHUyRjY3JzogJ1x1NzU5MicsCiAgJ1x1MkY2OCc6ICdcdTc2NzYnLAogICdcdTJGNjknOiAnXHU3NjdEJywKICAnXHUyRjZBJzogJ1x1NzZBRScsCiAgJ1x1MkY2Qic6ICdcdTc2QkYnLAogICdcdTJGNkMnOiAnXHU3NkVFJywKICAnXHUyRjZEJzogJ1x1NzdEQicsCiAgJ1x1MkY2RSc6ICdcdTc3RTInLAogICdcdTJGNkYnOiAnXHU3N0YzJywKICAnXHUyRjcwJzogJ1x1NzkzQScsCiAgJ1x1MkY3MSc6ICdcdTc5QjgnLAogICdcdTJGNzInOiAnXHU3OUJFJywKICAnXHUyRjczJzogJ1x1N0E3NCcsCiAgJ1x1MkY3NCc6ICdcdTdBQ0InLAogICdcdTJGNzUnOiAnXHU3QUY5JywKICAnXHUyRjc2JzogJ1x1N0M3MycsCiAgJ1x1MkY3Nyc6ICdcdTdDRjgnLAogICdcdTJGNzgnOiAnXHU3RjM2JywKICAnXHUyRjc5JzogJ1x1N0Y1MScsCiAgJ1x1MkY3QSc6ICdcdTdGOEEnLAogICdcdTJGN0InOiAnXHU3RkJEJywKICAnXHUyRjdDJzogJ1x1ODAwMScsCiAgJ1x1MkY3RCc6ICdcdTgwMEMnLAogICdcdTJGN0UnOiAnXHU4MDEyJywKICAnXHUyRjdGJzogJ1x1ODAzMycsCiAgJ1x1MkY4MCc6ICdcdTgwN0YnLAogICdcdTJGODEnOiAnXHU4MDg5JywKICAnXHUyRjgyJzogJ1x1ODFFMycsCiAgJ1x1MkY4Myc6ICdcdTgxRUEnLAogICdcdTJGODQnOiAnXHU4MUYzJywKICAnXHUyRjg1JzogJ1x1ODFGQycsCiAgJ1x1MkY4Nic6ICdcdTgyMEMnLAogICdcdTJGODcnOiAnXHU4MjFCJywKICAnXHUyRjg4JzogJ1x1ODIxRicsCiAgJ1x1MkY4OSc6ICdcdTgyNkUnLAogICdcdTJGOEEnOiAnXHU4MjcyJywKICAnXHUyRjhCJzogJ1x1ODI3OCcsCiAgJ1x1MkY4Qyc6ICdcdTg2NEQnLAogICdcdTJGOEQnOiAnXHU4NjZCJywKICAnXHUyRjhFJzogJ1x1ODg0MCcsCiAgJ1x1MkY4Ric6ICdcdTg4NEMnLAogICdcdTJGOTAnOiAnXHU4ODYzJywKICAnXHUyRjkxJzogJ1x1ODk3RScsCiAgJ1x1MkY5Mic6ICdcdTg5OEInLAogICdcdTJGOTMnOiAnXHU4OUQyJywKICAnXHUyRjk0JzogJ1x1OEEwMCcsCiAgJ1x1MkY5NSc6ICdcdThDMzcnLAogICdcdTJGOTYnOiAnXHU4QzQ2JywKICAnXHUyRjk3JzogJ1x1OEM1NScsCiAgJ1x1MkY5OCc6ICdcdThDNzgnLAogICdcdTJGOTknOiAnXHU4QzlEJywKICAnXHUyRjlBJzogJ1x1OEQ2NCcsCiAgJ1x1MkY5Qic6ICdcdThENzAnLAogICdcdTJGOUMnOiAnXHU4REIzJywKICAnXHUyRjlEJzogJ1x1OEVBQicsCiAgJ1x1MkY5RSc6ICdcdThFQ0EnLAogICdcdTJGOUYnOiAnXHU4RjlCJywKICAnXHUyRkEwJzogJ1x1OEZCMCcsCiAgJ1x1MkZBMSc6ICdcdThGQjUnLAogICdcdTJGQTInOiAnXHU5MDkxJywKICAnXHUyRkEzJzogJ1x1OTE0OScsCiAgJ1x1MkZBNCc6ICdcdTkxQzYnLAogICdcdTJGQTUnOiAnXHU5MUNDJywKICAnXHUyRkE2JzogJ1x1OTFEMScsCiAgJ1x1MkZBNyc6ICdcdTk1NzcnLAogICdcdTJGQTgnOiAnXHU5NTgwJywKICAnXHUyRkE5JzogJ1x1OTYxQycsCiAgJ1x1MkZBQSc6ICdcdTk2QjYnLAogICdcdTJGQUInOiAnXHU5NkI5JywKICAnXHUyRkFDJzogJ1x1OTZFOCcsCiAgJ1x1MkZBRCc6ICdcdTk3NTEnLAogICdcdTJGQUUnOiAnXHU5NzVFJywKICAnXHUyRkFGJzogJ1x1OTc2MicsCiAgJ1x1MkZCMCc6ICdcdTk3NjknLAogICdcdTJGQjEnOiAnXHU5N0NCJywKICAnXHUyRkIyJzogJ1x1OTdFRCcsCiAgJ1x1MkZCMyc6ICdcdTk3RjMnLAogICdcdTJGQjQnOiAnXHU5ODAxJywKICAnXHUyRkI1JzogJ1x1OThBOCcsCiAgJ1x1MkZCNic6ICdcdTk4REInLAogICdcdTJGQjcnOiAnXHU5OERGJywKICAnXHUyRkI4JzogJ1x1OTk5NicsCiAgJ1x1MkZCOSc6ICdcdTk5OTknLAogICdcdTJGQkEnOiAnXHU5OUFDJywKICAnXHUyRkJCJzogJ1x1OUFBOCcsCiAgJ1x1MkZCQyc6ICdcdTlBRDgnLAogICdcdTJGQkQnOiAnXHU5QURGJywKICAnXHUyRkJFJzogJ1x1OUIyNScsCiAgJ1x1MkZCRic6ICdcdTlCMkYnLAogICdcdTJGQzAnOiAnXHU5QjMyJywKICAnXHUyRkMxJzogJ1x1OUIzQycsCiAgJ1x1MkZDMic6ICdcdTlCNUEnLAogICdcdTJGQzMnOiAnXHU5Q0U1JywKICAnXHUyRkM0JzogJ1x1OUU3NScsCiAgJ1x1MkZDNSc6ICdcdTlFN0YnLAogICdcdTJGQzYnOiAnXHU5RUE1JywKICAnXHUyRkM3JzogJ1x1OUVCQicsCiAgJ1x1MkZDOCc6ICdcdTlFQzMnLAogICdcdTJGQzknOiAnXHU5RUNEJywKICAnXHUyRkNBJzogJ1x1OUVEMScsCiAgJ1x1MkZDQic6ICdcdTlFRjknLAogICdcdTJGQ0MnOiAnXHU5RUZEJywKICAnXHUyRkNEJzogJ1x1OUYwRScsCiAgJ1x1MkZDRSc6ICdcdTlGMTMnLAogICdcdTJGQ0YnOiAnXHU5RjIwJywKICAnXHUyRkQwJzogJ1x1OUYzQicsCiAgJ1x1MkZEMSc6ICdcdTlGNEEnLAogICdcdTJGRDInOiAnXHU5RjUyJywKICAnXHUyRkQzJzogJ1x1OUY4RCcsCiAgJ1x1MkZENCc6ICdcdTlGOUMnLAogICdcdTJGRDUnOiAnXHU5RkEwJywKICAnXHUzMDM2JzogJ1x1MzAxMicsCiAgJ1x1MzAzOCc6ICdcdTUzNDEnLAogICdcdTMwMzknOiAnXHU1MzQ0JywKICAnXHUzMDNBJzogJ1x1NTM0NScsCiAgJ1x1MzA5Qic6ICdcdTAwMjBcdTMwOTknLAogICdcdTMwOUMnOiAnXHUwMDIwXHUzMDlBJywKICAnXHUzMTMxJzogJ1x1MTEwMCcsCiAgJ1x1MzEzMic6ICdcdTExMDEnLAogICdcdTMxMzMnOiAnXHUxMUFBJywKICAnXHUzMTM0JzogJ1x1MTEwMicsCiAgJ1x1MzEzNSc6ICdcdTExQUMnLAogICdcdTMxMzYnOiAnXHUxMUFEJywKICAnXHUzMTM3JzogJ1x1MTEwMycsCiAgJ1x1MzEzOCc6ICdcdTExMDQnLAogICdcdTMxMzknOiAnXHUxMTA1JywKICAnXHUzMTNBJzogJ1x1MTFCMCcsCiAgJ1x1MzEzQic6ICdcdTExQjEnLAogICdcdTMxM0MnOiAnXHUxMUIyJywKICAnXHUzMTNEJzogJ1x1MTFCMycsCiAgJ1x1MzEzRSc6ICdcdTExQjQnLAogICdcdTMxM0YnOiAnXHUxMUI1JywKICAnXHUzMTQwJzogJ1x1MTExQScsCiAgJ1x1MzE0MSc6ICdcdTExMDYnLAogICdcdTMxNDInOiAnXHUxMTA3JywKICAnXHUzMTQzJzogJ1x1MTEwOCcsCiAgJ1x1MzE0NCc6ICdcdTExMjEnLAogICdcdTMxNDUnOiAnXHUxMTA5JywKICAnXHUzMTQ2JzogJ1x1MTEwQScsCiAgJ1x1MzE0Nyc6ICdcdTExMEInLAogICdcdTMxNDgnOiAnXHUxMTBDJywKICAnXHUzMTQ5JzogJ1x1MTEwRCcsCiAgJ1x1MzE0QSc6ICdcdTExMEUnLAogICdcdTMxNEInOiAnXHUxMTBGJywKICAnXHUzMTRDJzogJ1x1MTExMCcsCiAgJ1x1MzE0RCc6ICdcdTExMTEnLAogICdcdTMxNEUnOiAnXHUxMTEyJywKICAnXHUzMTRGJzogJ1x1MTE2MScsCiAgJ1x1MzE1MCc6ICdcdTExNjInLAogICdcdTMxNTEnOiAnXHUxMTYzJywKICAnXHUzMTUyJzogJ1x1MTE2NCcsCiAgJ1x1MzE1Myc6ICdcdTExNjUnLAogICdcdTMxNTQnOiAnXHUxMTY2JywKICAnXHUzMTU1JzogJ1x1MTE2NycsCiAgJ1x1MzE1Nic6ICdcdTExNjgnLAogICdcdTMxNTcnOiAnXHUxMTY5JywKICAnXHUzMTU4JzogJ1x1MTE2QScsCiAgJ1x1MzE1OSc6ICdcdTExNkInLAogICdcdTMxNUEnOiAnXHUxMTZDJywKICAnXHUzMTVCJzogJ1x1MTE2RCcsCiAgJ1x1MzE1Qyc6ICdcdTExNkUnLAogICdcdTMxNUQnOiAnXHUxMTZGJywKICAnXHUzMTVFJzogJ1x1MTE3MCcsCiAgJ1x1MzE1Ric6ICdcdTExNzEnLAogICdcdTMxNjAnOiAnXHUxMTcyJywKICAnXHUzMTYxJzogJ1x1MTE3MycsCiAgJ1x1MzE2Mic6ICdcdTExNzQnLAogICdcdTMxNjMnOiAnXHUxMTc1JywKICAnXHUzMTY0JzogJ1x1MTE2MCcsCiAgJ1x1MzE2NSc6ICdcdTExMTQnLAogICdcdTMxNjYnOiAnXHUxMTE1JywKICAnXHUzMTY3JzogJ1x1MTFDNycsCiAgJ1x1MzE2OCc6ICdcdTExQzgnLAogICdcdTMxNjknOiAnXHUxMUNDJywKICAnXHUzMTZBJzogJ1x1MTFDRScsCiAgJ1x1MzE2Qic6ICdcdTExRDMnLAogICdcdTMxNkMnOiAnXHUxMUQ3JywKICAnXHUzMTZEJzogJ1x1MTFEOScsCiAgJ1x1MzE2RSc6ICdcdTExMUMnLAogICdcdTMxNkYnOiAnXHUxMUREJywKICAnXHUzMTcwJzogJ1x1MTFERicsCiAgJ1x1MzE3MSc6ICdcdTExMUQnLAogICdcdTMxNzInOiAnXHUxMTFFJywKICAnXHUzMTczJzogJ1x1MTEyMCcsCiAgJ1x1MzE3NCc6ICdcdTExMjInLAogICdcdTMxNzUnOiAnXHUxMTIzJywKICAnXHUzMTc2JzogJ1x1MTEyNycsCiAgJ1x1MzE3Nyc6ICdcdTExMjknLAogICdcdTMxNzgnOiAnXHUxMTJCJywKICAnXHUzMTc5JzogJ1x1MTEyQycsCiAgJ1x1MzE3QSc6ICdcdTExMkQnLAogICdcdTMxN0InOiAnXHUxMTJFJywKICAnXHUzMTdDJzogJ1x1MTEyRicsCiAgJ1x1MzE3RCc6ICdcdTExMzInLAogICdcdTMxN0UnOiAnXHUxMTM2JywKICAnXHUzMTdGJzogJ1x1MTE0MCcsCiAgJ1x1MzE4MCc6ICdcdTExNDcnLAogICdcdTMxODEnOiAnXHUxMTRDJywKICAnXHUzMTgyJzogJ1x1MTFGMScsCiAgJ1x1MzE4Myc6ICdcdTExRjInLAogICdcdTMxODQnOiAnXHUxMTU3JywKICAnXHUzMTg1JzogJ1x1MTE1OCcsCiAgJ1x1MzE4Nic6ICdcdTExNTknLAogICdcdTMxODcnOiAnXHUxMTg0JywKICAnXHUzMTg4JzogJ1x1MTE4NScsCiAgJ1x1MzE4OSc6ICdcdTExODgnLAogICdcdTMxOEEnOiAnXHUxMTkxJywKICAnXHUzMThCJzogJ1x1MTE5MicsCiAgJ1x1MzE4Qyc6ICdcdTExOTQnLAogICdcdTMxOEQnOiAnXHUxMTlFJywKICAnXHUzMThFJzogJ1x1MTFBMScsCiAgJ1x1MzIwMCc6ICdcdTAwMjhcdTExMDBcdTAwMjknLAogICdcdTMyMDEnOiAnXHUwMDI4XHUxMTAyXHUwMDI5JywKICAnXHUzMjAyJzogJ1x1MDAyOFx1MTEwM1x1MDAyOScsCiAgJ1x1MzIwMyc6ICdcdTAwMjhcdTExMDVcdTAwMjknLAogICdcdTMyMDQnOiAnXHUwMDI4XHUxMTA2XHUwMDI5JywKICAnXHUzMjA1JzogJ1x1MDAyOFx1MTEwN1x1MDAyOScsCiAgJ1x1MzIwNic6ICdcdTAwMjhcdTExMDlcdTAwMjknLAogICdcdTMyMDcnOiAnXHUwMDI4XHUxMTBCXHUwMDI5JywKICAnXHUzMjA4JzogJ1x1MDAyOFx1MTEwQ1x1MDAyOScsCiAgJ1x1MzIwOSc6ICdcdTAwMjhcdTExMEVcdTAwMjknLAogICdcdTMyMEEnOiAnXHUwMDI4XHUxMTBGXHUwMDI5JywKICAnXHUzMjBCJzogJ1x1MDAyOFx1MTExMFx1MDAyOScsCiAgJ1x1MzIwQyc6ICdcdTAwMjhcdTExMTFcdTAwMjknLAogICdcdTMyMEQnOiAnXHUwMDI4XHUxMTEyXHUwMDI5JywKICAnXHUzMjBFJzogJ1x1MDAyOFx1MTEwMFx1MTE2MVx1MDAyOScsCiAgJ1x1MzIwRic6ICdcdTAwMjhcdTExMDJcdTExNjFcdTAwMjknLAogICdcdTMyMTAnOiAnXHUwMDI4XHUxMTAzXHUxMTYxXHUwMDI5JywKICAnXHUzMjExJzogJ1x1MDAyOFx1MTEwNVx1MTE2MVx1MDAyOScsCiAgJ1x1MzIxMic6ICdcdTAwMjhcdTExMDZcdTExNjFcdTAwMjknLAogICdcdTMyMTMnOiAnXHUwMDI4XHUxMTA3XHUxMTYxXHUwMDI5JywKICAnXHUzMjE0JzogJ1x1MDAyOFx1MTEwOVx1MTE2MVx1MDAyOScsCiAgJ1x1MzIxNSc6ICdcdTAwMjhcdTExMEJcdTExNjFcdTAwMjknLAogICdcdTMyMTYnOiAnXHUwMDI4XHUxMTBDXHUxMTYxXHUwMDI5JywKICAnXHUzMjE3JzogJ1x1MDAyOFx1MTEwRVx1MTE2MVx1MDAyOScsCiAgJ1x1MzIxOCc6ICdcdTAwMjhcdTExMEZcdTExNjFcdTAwMjknLAogICdcdTMyMTknOiAnXHUwMDI4XHUxMTEwXHUxMTYxXHUwMDI5JywKICAnXHUzMjFBJzogJ1x1MDAyOFx1MTExMVx1MTE2MVx1MDAyOScsCiAgJ1x1MzIxQic6ICdcdTAwMjhcdTExMTJcdTExNjFcdTAwMjknLAogICdcdTMyMUMnOiAnXHUwMDI4XHUxMTBDXHUxMTZFXHUwMDI5JywKICAnXHUzMjFEJzogJ1x1MDAyOFx1MTEwQlx1MTE2OVx1MTEwQ1x1MTE2NVx1MTFBQlx1MDAyOScsCiAgJ1x1MzIxRSc6ICdcdTAwMjhcdTExMEJcdTExNjlcdTExMTJcdTExNkVcdTAwMjknLAogICdcdTMyMjAnOiAnXHUwMDI4XHU0RTAwXHUwMDI5JywKICAnXHUzMjIxJzogJ1x1MDAyOFx1NEU4Q1x1MDAyOScsCiAgJ1x1MzIyMic6ICdcdTAwMjhcdTRFMDlcdTAwMjknLAogICdcdTMyMjMnOiAnXHUwMDI4XHU1NkRCXHUwMDI5JywKICAnXHUzMjI0JzogJ1x1MDAyOFx1NEU5NFx1MDAyOScsCiAgJ1x1MzIyNSc6ICdcdTAwMjhcdTUxNkRcdTAwMjknLAogICdcdTMyMjYnOiAnXHUwMDI4XHU0RTAzXHUwMDI5JywKICAnXHUzMjI3JzogJ1x1MDAyOFx1NTE2Qlx1MDAyOScsCiAgJ1x1MzIyOCc6ICdcdTAwMjhcdTRFNURcdTAwMjknLAogICdcdTMyMjknOiAnXHUwMDI4XHU1MzQxXHUwMDI5JywKICAnXHUzMjJBJzogJ1x1MDAyOFx1NjcwOFx1MDAyOScsCiAgJ1x1MzIyQic6ICdcdTAwMjhcdTcwNkJcdTAwMjknLAogICdcdTMyMkMnOiAnXHUwMDI4XHU2QzM0XHUwMDI5JywKICAnXHUzMjJEJzogJ1x1MDAyOFx1NjcyOFx1MDAyOScsCiAgJ1x1MzIyRSc6ICdcdTAwMjhcdTkxRDFcdTAwMjknLAogICdcdTMyMkYnOiAnXHUwMDI4XHU1NzFGXHUwMDI5JywKICAnXHUzMjMwJzogJ1x1MDAyOFx1NjVFNVx1MDAyOScsCiAgJ1x1MzIzMSc6ICdcdTAwMjhcdTY4MkFcdTAwMjknLAogICdcdTMyMzInOiAnXHUwMDI4XHU2NzA5XHUwMDI5JywKICAnXHUzMjMzJzogJ1x1MDAyOFx1NzkzRVx1MDAyOScsCiAgJ1x1MzIzNCc6ICdcdTAwMjhcdTU0MERcdTAwMjknLAogICdcdTMyMzUnOiAnXHUwMDI4XHU3Mjc5XHUwMDI5JywKICAnXHUzMjM2JzogJ1x1MDAyOFx1OENBMVx1MDAyOScsCiAgJ1x1MzIzNyc6ICdcdTAwMjhcdTc5NURcdTAwMjknLAogICdcdTMyMzgnOiAnXHUwMDI4XHU1MkI0XHUwMDI5JywKICAnXHUzMjM5JzogJ1x1MDAyOFx1NEVFM1x1MDAyOScsCiAgJ1x1MzIzQSc6ICdcdTAwMjhcdTU0N0NcdTAwMjknLAogICdcdTMyM0InOiAnXHUwMDI4XHU1QjY2XHUwMDI5JywKICAnXHUzMjNDJzogJ1x1MDAyOFx1NzZFM1x1MDAyOScsCiAgJ1x1MzIzRCc6ICdcdTAwMjhcdTRGMDFcdTAwMjknLAogICdcdTMyM0UnOiAnXHUwMDI4XHU4Q0M3XHUwMDI5JywKICAnXHUzMjNGJzogJ1x1MDAyOFx1NTM1NFx1MDAyOScsCiAgJ1x1MzI0MCc6ICdcdTAwMjhcdTc5NkRcdTAwMjknLAogICdcdTMyNDEnOiAnXHUwMDI4XHU0RjExXHUwMDI5JywKICAnXHUzMjQyJzogJ1x1MDAyOFx1ODFFQVx1MDAyOScsCiAgJ1x1MzI0Myc6ICdcdTAwMjhcdTgxRjNcdTAwMjknLAogICdcdTMyQzAnOiAnXHUwMDMxXHU2NzA4JywKICAnXHUzMkMxJzogJ1x1MDAzMlx1NjcwOCcsCiAgJ1x1MzJDMic6ICdcdTAwMzNcdTY3MDgnLAogICdcdTMyQzMnOiAnXHUwMDM0XHU2NzA4JywKICAnXHUzMkM0JzogJ1x1MDAzNVx1NjcwOCcsCiAgJ1x1MzJDNSc6ICdcdTAwMzZcdTY3MDgnLAogICdcdTMyQzYnOiAnXHUwMDM3XHU2NzA4JywKICAnXHUzMkM3JzogJ1x1MDAzOFx1NjcwOCcsCiAgJ1x1MzJDOCc6ICdcdTAwMzlcdTY3MDgnLAogICdcdTMyQzknOiAnXHUwMDMxXHUwMDMwXHU2NzA4JywKICAnXHUzMkNBJzogJ1x1MDAzMVx1MDAzMVx1NjcwOCcsCiAgJ1x1MzJDQic6ICdcdTAwMzFcdTAwMzJcdTY3MDgnLAogICdcdTMzNTgnOiAnXHUwMDMwXHU3MEI5JywKICAnXHUzMzU5JzogJ1x1MDAzMVx1NzBCOScsCiAgJ1x1MzM1QSc6ICdcdTAwMzJcdTcwQjknLAogICdcdTMzNUInOiAnXHUwMDMzXHU3MEI5JywKICAnXHUzMzVDJzogJ1x1MDAzNFx1NzBCOScsCiAgJ1x1MzM1RCc6ICdcdTAwMzVcdTcwQjknLAogICdcdTMzNUUnOiAnXHUwMDM2XHU3MEI5JywKICAnXHUzMzVGJzogJ1x1MDAzN1x1NzBCOScsCiAgJ1x1MzM2MCc6ICdcdTAwMzhcdTcwQjknLAogICdcdTMzNjEnOiAnXHUwMDM5XHU3MEI5JywKICAnXHUzMzYyJzogJ1x1MDAzMVx1MDAzMFx1NzBCOScsCiAgJ1x1MzM2Myc6ICdcdTAwMzFcdTAwMzFcdTcwQjknLAogICdcdTMzNjQnOiAnXHUwMDMxXHUwMDMyXHU3MEI5JywKICAnXHUzMzY1JzogJ1x1MDAzMVx1MDAzM1x1NzBCOScsCiAgJ1x1MzM2Nic6ICdcdTAwMzFcdTAwMzRcdTcwQjknLAogICdcdTMzNjcnOiAnXHUwMDMxXHUwMDM1XHU3MEI5JywKICAnXHUzMzY4JzogJ1x1MDAzMVx1MDAzNlx1NzBCOScsCiAgJ1x1MzM2OSc6ICdcdTAwMzFcdTAwMzdcdTcwQjknLAogICdcdTMzNkEnOiAnXHUwMDMxXHUwMDM4XHU3MEI5JywKICAnXHUzMzZCJzogJ1x1MDAzMVx1MDAzOVx1NzBCOScsCiAgJ1x1MzM2Qyc6ICdcdTAwMzJcdTAwMzBcdTcwQjknLAogICdcdTMzNkQnOiAnXHUwMDMyXHUwMDMxXHU3MEI5JywKICAnXHUzMzZFJzogJ1x1MDAzMlx1MDAzMlx1NzBCOScsCiAgJ1x1MzM2Ric6ICdcdTAwMzJcdTAwMzNcdTcwQjknLAogICdcdTMzNzAnOiAnXHUwMDMyXHUwMDM0XHU3MEI5JywKICAnXHUzM0UwJzogJ1x1MDAzMVx1NjVFNScsCiAgJ1x1MzNFMSc6ICdcdTAwMzJcdTY1RTUnLAogICdcdTMzRTInOiAnXHUwMDMzXHU2NUU1JywKICAnXHUzM0UzJzogJ1x1MDAzNFx1NjVFNScsCiAgJ1x1MzNFNCc6ICdcdTAwMzVcdTY1RTUnLAogICdcdTMzRTUnOiAnXHUwMDM2XHU2NUU1JywKICAnXHUzM0U2JzogJ1x1MDAzN1x1NjVFNScsCiAgJ1x1MzNFNyc6ICdcdTAwMzhcdTY1RTUnLAogICdcdTMzRTgnOiAnXHUwMDM5XHU2NUU1JywKICAnXHUzM0U5JzogJ1x1MDAzMVx1MDAzMFx1NjVFNScsCiAgJ1x1MzNFQSc6ICdcdTAwMzFcdTAwMzFcdTY1RTUnLAogICdcdTMzRUInOiAnXHUwMDMxXHUwMDMyXHU2NUU1JywKICAnXHUzM0VDJzogJ1x1MDAzMVx1MDAzM1x1NjVFNScsCiAgJ1x1MzNFRCc6ICdcdTAwMzFcdTAwMzRcdTY1RTUnLAogICdcdTMzRUUnOiAnXHUwMDMxXHUwMDM1XHU2NUU1JywKICAnXHUzM0VGJzogJ1x1MDAzMVx1MDAzNlx1NjVFNScsCiAgJ1x1MzNGMCc6ICdcdTAwMzFcdTAwMzdcdTY1RTUnLAogICdcdTMzRjEnOiAnXHUwMDMxXHUwMDM4XHU2NUU1JywKICAnXHUzM0YyJzogJ1x1MDAzMVx1MDAzOVx1NjVFNScsCiAgJ1x1MzNGMyc6ICdcdTAwMzJcdTAwMzBcdTY1RTUnLAogICdcdTMzRjQnOiAnXHUwMDMyXHUwMDMxXHU2NUU1JywKICAnXHUzM0Y1JzogJ1x1MDAzMlx1MDAzMlx1NjVFNScsCiAgJ1x1MzNGNic6ICdcdTAwMzJcdTAwMzNcdTY1RTUnLAogICdcdTMzRjcnOiAnXHUwMDMyXHUwMDM0XHU2NUU1JywKICAnXHUzM0Y4JzogJ1x1MDAzMlx1MDAzNVx1NjVFNScsCiAgJ1x1MzNGOSc6ICdcdTAwMzJcdTAwMzZcdTY1RTUnLAogICdcdTMzRkEnOiAnXHUwMDMyXHUwMDM3XHU2NUU1JywKICAnXHUzM0ZCJzogJ1x1MDAzMlx1MDAzOFx1NjVFNScsCiAgJ1x1MzNGQyc6ICdcdTAwMzJcdTAwMzlcdTY1RTUnLAogICdcdTMzRkQnOiAnXHUwMDMzXHUwMDMwXHU2NUU1JywKICAnXHUzM0ZFJzogJ1x1MDAzM1x1MDAzMVx1NjVFNScsCiAgJ1x1RkIwMCc6ICdcdTAwNjZcdTAwNjYnLAogICdcdUZCMDEnOiAnXHUwMDY2XHUwMDY5JywKICAnXHVGQjAyJzogJ1x1MDA2Nlx1MDA2QycsCiAgJ1x1RkIwMyc6ICdcdTAwNjZcdTAwNjZcdTAwNjknLAogICdcdUZCMDQnOiAnXHUwMDY2XHUwMDY2XHUwMDZDJywKICAnXHVGQjA1JzogJ1x1MDE3Rlx1MDA3NCcsCiAgJ1x1RkIwNic6ICdcdTAwNzNcdTAwNzQnLAogICdcdUZCMTMnOiAnXHUwNTc0XHUwNTc2JywKICAnXHVGQjE0JzogJ1x1MDU3NFx1MDU2NScsCiAgJ1x1RkIxNSc6ICdcdTA1NzRcdTA1NkInLAogICdcdUZCMTYnOiAnXHUwNTdFXHUwNTc2JywKICAnXHVGQjE3JzogJ1x1MDU3NFx1MDU2RCcsCiAgJ1x1RkI0Ric6ICdcdTA1RDBcdTA1REMnLAogICdcdUZCNTAnOiAnXHUwNjcxJywKICAnXHVGQjUxJzogJ1x1MDY3MScsCiAgJ1x1RkI1Mic6ICdcdTA2N0InLAogICdcdUZCNTMnOiAnXHUwNjdCJywKICAnXHVGQjU0JzogJ1x1MDY3QicsCiAgJ1x1RkI1NSc6ICdcdTA2N0InLAogICdcdUZCNTYnOiAnXHUwNjdFJywKICAnXHVGQjU3JzogJ1x1MDY3RScsCiAgJ1x1RkI1OCc6ICdcdTA2N0UnLAogICdcdUZCNTknOiAnXHUwNjdFJywKICAnXHVGQjVBJzogJ1x1MDY4MCcsCiAgJ1x1RkI1Qic6ICdcdTA2ODAnLAogICdcdUZCNUMnOiAnXHUwNjgwJywKICAnXHVGQjVEJzogJ1x1MDY4MCcsCiAgJ1x1RkI1RSc6ICdcdTA2N0EnLAogICdcdUZCNUYnOiAnXHUwNjdBJywKICAnXHVGQjYwJzogJ1x1MDY3QScsCiAgJ1x1RkI2MSc6ICdcdTA2N0EnLAogICdcdUZCNjInOiAnXHUwNjdGJywKICAnXHVGQjYzJzogJ1x1MDY3RicsCiAgJ1x1RkI2NCc6ICdcdTA2N0YnLAogICdcdUZCNjUnOiAnXHUwNjdGJywKICAnXHVGQjY2JzogJ1x1MDY3OScsCiAgJ1x1RkI2Nyc6ICdcdTA2NzknLAogICdcdUZCNjgnOiAnXHUwNjc5JywKICAnXHVGQjY5JzogJ1x1MDY3OScsCiAgJ1x1RkI2QSc6ICdcdTA2QTQnLAogICdcdUZCNkInOiAnXHUwNkE0JywKICAnXHVGQjZDJzogJ1x1MDZBNCcsCiAgJ1x1RkI2RCc6ICdcdTA2QTQnLAogICdcdUZCNkUnOiAnXHUwNkE2JywKICAnXHVGQjZGJzogJ1x1MDZBNicsCiAgJ1x1RkI3MCc6ICdcdTA2QTYnLAogICdcdUZCNzEnOiAnXHUwNkE2JywKICAnXHVGQjcyJzogJ1x1MDY4NCcsCiAgJ1x1RkI3Myc6ICdcdTA2ODQnLAogICdcdUZCNzQnOiAnXHUwNjg0JywKICAnXHVGQjc1JzogJ1x1MDY4NCcsCiAgJ1x1RkI3Nic6ICdcdTA2ODMnLAogICdcdUZCNzcnOiAnXHUwNjgzJywKICAnXHVGQjc4JzogJ1x1MDY4MycsCiAgJ1x1RkI3OSc6ICdcdTA2ODMnLAogICdcdUZCN0EnOiAnXHUwNjg2JywKICAnXHVGQjdCJzogJ1x1MDY4NicsCiAgJ1x1RkI3Qyc6ICdcdTA2ODYnLAogICdcdUZCN0QnOiAnXHUwNjg2JywKICAnXHVGQjdFJzogJ1x1MDY4NycsCiAgJ1x1RkI3Ric6ICdcdTA2ODcnLAogICdcdUZCODAnOiAnXHUwNjg3JywKICAnXHVGQjgxJzogJ1x1MDY4NycsCiAgJ1x1RkI4Mic6ICdcdTA2OEQnLAogICdcdUZCODMnOiAnXHUwNjhEJywKICAnXHVGQjg0JzogJ1x1MDY4QycsCiAgJ1x1RkI4NSc6ICdcdTA2OEMnLAogICdcdUZCODYnOiAnXHUwNjhFJywKICAnXHVGQjg3JzogJ1x1MDY4RScsCiAgJ1x1RkI4OCc6ICdcdTA2ODgnLAogICdcdUZCODknOiAnXHUwNjg4JywKICAnXHVGQjhBJzogJ1x1MDY5OCcsCiAgJ1x1RkI4Qic6ICdcdTA2OTgnLAogICdcdUZCOEMnOiAnXHUwNjkxJywKICAnXHVGQjhEJzogJ1x1MDY5MScsCiAgJ1x1RkI4RSc6ICdcdTA2QTknLAogICdcdUZCOEYnOiAnXHUwNkE5JywKICAnXHVGQjkwJzogJ1x1MDZBOScsCiAgJ1x1RkI5MSc6ICdcdTA2QTknLAogICdcdUZCOTInOiAnXHUwNkFGJywKICAnXHVGQjkzJzogJ1x1MDZBRicsCiAgJ1x1RkI5NCc6ICdcdTA2QUYnLAogICdcdUZCOTUnOiAnXHUwNkFGJywKICAnXHVGQjk2JzogJ1x1MDZCMycsCiAgJ1x1RkI5Nyc6ICdcdTA2QjMnLAogICdcdUZCOTgnOiAnXHUwNkIzJywKICAnXHVGQjk5JzogJ1x1MDZCMycsCiAgJ1x1RkI5QSc6ICdcdTA2QjEnLAogICdcdUZCOUInOiAnXHUwNkIxJywKICAnXHVGQjlDJzogJ1x1MDZCMScsCiAgJ1x1RkI5RCc6ICdcdTA2QjEnLAogICdcdUZCOUUnOiAnXHUwNkJBJywKICAnXHVGQjlGJzogJ1x1MDZCQScsCiAgJ1x1RkJBMCc6ICdcdTA2QkInLAogICdcdUZCQTEnOiAnXHUwNkJCJywKICAnXHVGQkEyJzogJ1x1MDZCQicsCiAgJ1x1RkJBMyc6ICdcdTA2QkInLAogICdcdUZCQTQnOiAnXHUwNkMwJywKICAnXHVGQkE1JzogJ1x1MDZDMCcsCiAgJ1x1RkJBNic6ICdcdTA2QzEnLAogICdcdUZCQTcnOiAnXHUwNkMxJywKICAnXHVGQkE4JzogJ1x1MDZDMScsCiAgJ1x1RkJBOSc6ICdcdTA2QzEnLAogICdcdUZCQUEnOiAnXHUwNkJFJywKICAnXHVGQkFCJzogJ1x1MDZCRScsCiAgJ1x1RkJBQyc6ICdcdTA2QkUnLAogICdcdUZCQUQnOiAnXHUwNkJFJywKICAnXHVGQkFFJzogJ1x1MDZEMicsCiAgJ1x1RkJBRic6ICdcdTA2RDInLAogICdcdUZCQjAnOiAnXHUwNkQzJywKICAnXHVGQkIxJzogJ1x1MDZEMycsCiAgJ1x1RkJEMyc6ICdcdTA2QUQnLAogICdcdUZCRDQnOiAnXHUwNkFEJywKICAnXHVGQkQ1JzogJ1x1MDZBRCcsCiAgJ1x1RkJENic6ICdcdTA2QUQnLAogICdcdUZCRDcnOiAnXHUwNkM3JywKICAnXHVGQkQ4JzogJ1x1MDZDNycsCiAgJ1x1RkJEOSc6ICdcdTA2QzYnLAogICdcdUZCREEnOiAnXHUwNkM2JywKICAnXHVGQkRCJzogJ1x1MDZDOCcsCiAgJ1x1RkJEQyc6ICdcdTA2QzgnLAogICdcdUZCREQnOiAnXHUwNjc3JywKICAnXHVGQkRFJzogJ1x1MDZDQicsCiAgJ1x1RkJERic6ICdcdTA2Q0InLAogICdcdUZCRTAnOiAnXHUwNkM1JywKICAnXHVGQkUxJzogJ1x1MDZDNScsCiAgJ1x1RkJFMic6ICdcdTA2QzknLAogICdcdUZCRTMnOiAnXHUwNkM5JywKICAnXHVGQkU0JzogJ1x1MDZEMCcsCiAgJ1x1RkJFNSc6ICdcdTA2RDAnLAogICdcdUZCRTYnOiAnXHUwNkQwJywKICAnXHVGQkU3JzogJ1x1MDZEMCcsCiAgJ1x1RkJFOCc6ICdcdTA2NDknLAogICdcdUZCRTknOiAnXHUwNjQ5JywKICAnXHVGQkVBJzogJ1x1MDYyNlx1MDYyNycsCiAgJ1x1RkJFQic6ICdcdTA2MjZcdTA2MjcnLAogICdcdUZCRUMnOiAnXHUwNjI2XHUwNkQ1JywKICAnXHVGQkVEJzogJ1x1MDYyNlx1MDZENScsCiAgJ1x1RkJFRSc6ICdcdTA2MjZcdTA2NDgnLAogICdcdUZCRUYnOiAnXHUwNjI2XHUwNjQ4JywKICAnXHVGQkYwJzogJ1x1MDYyNlx1MDZDNycsCiAgJ1x1RkJGMSc6ICdcdTA2MjZcdTA2QzcnLAogICdcdUZCRjInOiAnXHUwNjI2XHUwNkM2JywKICAnXHVGQkYzJzogJ1x1MDYyNlx1MDZDNicsCiAgJ1x1RkJGNCc6ICdcdTA2MjZcdTA2QzgnLAogICdcdUZCRjUnOiAnXHUwNjI2XHUwNkM4JywKICAnXHVGQkY2JzogJ1x1MDYyNlx1MDZEMCcsCiAgJ1x1RkJGNyc6ICdcdTA2MjZcdTA2RDAnLAogICdcdUZCRjgnOiAnXHUwNjI2XHUwNkQwJywKICAnXHVGQkY5JzogJ1x1MDYyNlx1MDY0OScsCiAgJ1x1RkJGQSc6ICdcdTA2MjZcdTA2NDknLAogICdcdUZCRkInOiAnXHUwNjI2XHUwNjQ5JywKICAnXHVGQkZDJzogJ1x1MDZDQycsCiAgJ1x1RkJGRCc6ICdcdTA2Q0MnLAogICdcdUZCRkUnOiAnXHUwNkNDJywKICAnXHVGQkZGJzogJ1x1MDZDQycsCiAgJ1x1RkMwMCc6ICdcdTA2MjZcdTA2MkMnLAogICdcdUZDMDEnOiAnXHUwNjI2XHUwNjJEJywKICAnXHVGQzAyJzogJ1x1MDYyNlx1MDY0NScsCiAgJ1x1RkMwMyc6ICdcdTA2MjZcdTA2NDknLAogICdcdUZDMDQnOiAnXHUwNjI2XHUwNjRBJywKICAnXHVGQzA1JzogJ1x1MDYyOFx1MDYyQycsCiAgJ1x1RkMwNic6ICdcdTA2MjhcdTA2MkQnLAogICdcdUZDMDcnOiAnXHUwNjI4XHUwNjJFJywKICAnXHVGQzA4JzogJ1x1MDYyOFx1MDY0NScsCiAgJ1x1RkMwOSc6ICdcdTA2MjhcdTA2NDknLAogICdcdUZDMEEnOiAnXHUwNjI4XHUwNjRBJywKICAnXHVGQzBCJzogJ1x1MDYyQVx1MDYyQycsCiAgJ1x1RkMwQyc6ICdcdTA2MkFcdTA2MkQnLAogICdcdUZDMEQnOiAnXHUwNjJBXHUwNjJFJywKICAnXHVGQzBFJzogJ1x1MDYyQVx1MDY0NScsCiAgJ1x1RkMwRic6ICdcdTA2MkFcdTA2NDknLAogICdcdUZDMTAnOiAnXHUwNjJBXHUwNjRBJywKICAnXHVGQzExJzogJ1x1MDYyQlx1MDYyQycsCiAgJ1x1RkMxMic6ICdcdTA2MkJcdTA2NDUnLAogICdcdUZDMTMnOiAnXHUwNjJCXHUwNjQ5JywKICAnXHVGQzE0JzogJ1x1MDYyQlx1MDY0QScsCiAgJ1x1RkMxNSc6ICdcdTA2MkNcdTA2MkQnLAogICdcdUZDMTYnOiAnXHUwNjJDXHUwNjQ1JywKICAnXHVGQzE3JzogJ1x1MDYyRFx1MDYyQycsCiAgJ1x1RkMxOCc6ICdcdTA2MkRcdTA2NDUnLAogICdcdUZDMTknOiAnXHUwNjJFXHUwNjJDJywKICAnXHVGQzFBJzogJ1x1MDYyRVx1MDYyRCcsCiAgJ1x1RkMxQic6ICdcdTA2MkVcdTA2NDUnLAogICdcdUZDMUMnOiAnXHUwNjMzXHUwNjJDJywKICAnXHVGQzFEJzogJ1x1MDYzM1x1MDYyRCcsCiAgJ1x1RkMxRSc6ICdcdTA2MzNcdTA2MkUnLAogICdcdUZDMUYnOiAnXHUwNjMzXHUwNjQ1JywKICAnXHVGQzIwJzogJ1x1MDYzNVx1MDYyRCcsCiAgJ1x1RkMyMSc6ICdcdTA2MzVcdTA2NDUnLAogICdcdUZDMjInOiAnXHUwNjM2XHUwNjJDJywKICAnXHVGQzIzJzogJ1x1MDYzNlx1MDYyRCcsCiAgJ1x1RkMyNCc6ICdcdTA2MzZcdTA2MkUnLAogICdcdUZDMjUnOiAnXHUwNjM2XHUwNjQ1JywKICAnXHVGQzI2JzogJ1x1MDYzN1x1MDYyRCcsCiAgJ1x1RkMyNyc6ICdcdTA2MzdcdTA2NDUnLAogICdcdUZDMjgnOiAnXHUwNjM4XHUwNjQ1JywKICAnXHVGQzI5JzogJ1x1MDYzOVx1MDYyQycsCiAgJ1x1RkMyQSc6ICdcdTA2MzlcdTA2NDUnLAogICdcdUZDMkInOiAnXHUwNjNBXHUwNjJDJywKICAnXHVGQzJDJzogJ1x1MDYzQVx1MDY0NScsCiAgJ1x1RkMyRCc6ICdcdTA2NDFcdTA2MkMnLAogICdcdUZDMkUnOiAnXHUwNjQxXHUwNjJEJywKICAnXHVGQzJGJzogJ1x1MDY0MVx1MDYyRScsCiAgJ1x1RkMzMCc6ICdcdTA2NDFcdTA2NDUnLAogICdcdUZDMzEnOiAnXHUwNjQxXHUwNjQ5JywKICAnXHVGQzMyJzogJ1x1MDY0MVx1MDY0QScsCiAgJ1x1RkMzMyc6ICdcdTA2NDJcdTA2MkQnLAogICdcdUZDMzQnOiAnXHUwNjQyXHUwNjQ1JywKICAnXHVGQzM1JzogJ1x1MDY0Mlx1MDY0OScsCiAgJ1x1RkMzNic6ICdcdTA2NDJcdTA2NEEnLAogICdcdUZDMzcnOiAnXHUwNjQzXHUwNjI3JywKICAnXHVGQzM4JzogJ1x1MDY0M1x1MDYyQycsCiAgJ1x1RkMzOSc6ICdcdTA2NDNcdTA2MkQnLAogICdcdUZDM0EnOiAnXHUwNjQzXHUwNjJFJywKICAnXHVGQzNCJzogJ1x1MDY0M1x1MDY0NCcsCiAgJ1x1RkMzQyc6ICdcdTA2NDNcdTA2NDUnLAogICdcdUZDM0QnOiAnXHUwNjQzXHUwNjQ5JywKICAnXHVGQzNFJzogJ1x1MDY0M1x1MDY0QScsCiAgJ1x1RkMzRic6ICdcdTA2NDRcdTA2MkMnLAogICdcdUZDNDAnOiAnXHUwNjQ0XHUwNjJEJywKICAnXHVGQzQxJzogJ1x1MDY0NFx1MDYyRScsCiAgJ1x1RkM0Mic6ICdcdTA2NDRcdTA2NDUnLAogICdcdUZDNDMnOiAnXHUwNjQ0XHUwNjQ5JywKICAnXHVGQzQ0JzogJ1x1MDY0NFx1MDY0QScsCiAgJ1x1RkM0NSc6ICdcdTA2NDVcdTA2MkMnLAogICdcdUZDNDYnOiAnXHUwNjQ1XHUwNjJEJywKICAnXHVGQzQ3JzogJ1x1MDY0NVx1MDYyRScsCiAgJ1x1RkM0OCc6ICdcdTA2NDVcdTA2NDUnLAogICdcdUZDNDknOiAnXHUwNjQ1XHUwNjQ5JywKICAnXHVGQzRBJzogJ1x1MDY0NVx1MDY0QScsCiAgJ1x1RkM0Qic6ICdcdTA2NDZcdTA2MkMnLAogICdcdUZDNEMnOiAnXHUwNjQ2XHUwNjJEJywKICAnXHVGQzREJzogJ1x1MDY0Nlx1MDYyRScsCiAgJ1x1RkM0RSc6ICdcdTA2NDZcdTA2NDUnLAogICdcdUZDNEYnOiAnXHUwNjQ2XHUwNjQ5JywKICAnXHVGQzUwJzogJ1x1MDY0Nlx1MDY0QScsCiAgJ1x1RkM1MSc6ICdcdTA2NDdcdTA2MkMnLAogICdcdUZDNTInOiAnXHUwNjQ3XHUwNjQ1JywKICAnXHVGQzUzJzogJ1x1MDY0N1x1MDY0OScsCiAgJ1x1RkM1NCc6ICdcdTA2NDdcdTA2NEEnLAogICdcdUZDNTUnOiAnXHUwNjRBXHUwNjJDJywKICAnXHVGQzU2JzogJ1x1MDY0QVx1MDYyRCcsCiAgJ1x1RkM1Nyc6ICdcdTA2NEFcdTA2MkUnLAogICdcdUZDNTgnOiAnXHUwNjRBXHUwNjQ1JywKICAnXHVGQzU5JzogJ1x1MDY0QVx1MDY0OScsCiAgJ1x1RkM1QSc6ICdcdTA2NEFcdTA2NEEnLAogICdcdUZDNUInOiAnXHUwNjMwXHUwNjcwJywKICAnXHVGQzVDJzogJ1x1MDYzMVx1MDY3MCcsCiAgJ1x1RkM1RCc6ICdcdTA2NDlcdTA2NzAnLAogICdcdUZDNUUnOiAnXHUwMDIwXHUwNjRDXHUwNjUxJywKICAnXHVGQzVGJzogJ1x1MDAyMFx1MDY0RFx1MDY1MScsCiAgJ1x1RkM2MCc6ICdcdTAwMjBcdTA2NEVcdTA2NTEnLAogICdcdUZDNjEnOiAnXHUwMDIwXHUwNjRGXHUwNjUxJywKICAnXHVGQzYyJzogJ1x1MDAyMFx1MDY1MFx1MDY1MScsCiAgJ1x1RkM2Myc6ICdcdTAwMjBcdTA2NTFcdTA2NzAnLAogICdcdUZDNjQnOiAnXHUwNjI2XHUwNjMxJywKICAnXHVGQzY1JzogJ1x1MDYyNlx1MDYzMicsCiAgJ1x1RkM2Nic6ICdcdTA2MjZcdTA2NDUnLAogICdcdUZDNjcnOiAnXHUwNjI2XHUwNjQ2JywKICAnXHVGQzY4JzogJ1x1MDYyNlx1MDY0OScsCiAgJ1x1RkM2OSc6ICdcdTA2MjZcdTA2NEEnLAogICdcdUZDNkEnOiAnXHUwNjI4XHUwNjMxJywKICAnXHVGQzZCJzogJ1x1MDYyOFx1MDYzMicsCiAgJ1x1RkM2Qyc6ICdcdTA2MjhcdTA2NDUnLAogICdcdUZDNkQnOiAnXHUwNjI4XHUwNjQ2JywKICAnXHVGQzZFJzogJ1x1MDYyOFx1MDY0OScsCiAgJ1x1RkM2Ric6ICdcdTA2MjhcdTA2NEEnLAogICdcdUZDNzAnOiAnXHUwNjJBXHUwNjMxJywKICAnXHVGQzcxJzogJ1x1MDYyQVx1MDYzMicsCiAgJ1x1RkM3Mic6ICdcdTA2MkFcdTA2NDUnLAogICdcdUZDNzMnOiAnXHUwNjJBXHUwNjQ2JywKICAnXHVGQzc0JzogJ1x1MDYyQVx1MDY0OScsCiAgJ1x1RkM3NSc6ICdcdTA2MkFcdTA2NEEnLAogICdcdUZDNzYnOiAnXHUwNjJCXHUwNjMxJywKICAnXHVGQzc3JzogJ1x1MDYyQlx1MDYzMicsCiAgJ1x1RkM3OCc6ICdcdTA2MkJcdTA2NDUnLAogICdcdUZDNzknOiAnXHUwNjJCXHUwNjQ2JywKICAnXHVGQzdBJzogJ1x1MDYyQlx1MDY0OScsCiAgJ1x1RkM3Qic6ICdcdTA2MkJcdTA2NEEnLAogICdcdUZDN0MnOiAnXHUwNjQxXHUwNjQ5JywKICAnXHVGQzdEJzogJ1x1MDY0MVx1MDY0QScsCiAgJ1x1RkM3RSc6ICdcdTA2NDJcdTA2NDknLAogICdcdUZDN0YnOiAnXHUwNjQyXHUwNjRBJywKICAnXHVGQzgwJzogJ1x1MDY0M1x1MDYyNycsCiAgJ1x1RkM4MSc6ICdcdTA2NDNcdTA2NDQnLAogICdcdUZDODInOiAnXHUwNjQzXHUwNjQ1JywKICAnXHVGQzgzJzogJ1x1MDY0M1x1MDY0OScsCiAgJ1x1RkM4NCc6ICdcdTA2NDNcdTA2NEEnLAogICdcdUZDODUnOiAnXHUwNjQ0XHUwNjQ1JywKICAnXHVGQzg2JzogJ1x1MDY0NFx1MDY0OScsCiAgJ1x1RkM4Nyc6ICdcdTA2NDRcdTA2NEEnLAogICdcdUZDODgnOiAnXHUwNjQ1XHUwNjI3JywKICAnXHVGQzg5JzogJ1x1MDY0NVx1MDY0NScsCiAgJ1x1RkM4QSc6ICdcdTA2NDZcdTA2MzEnLAogICdcdUZDOEInOiAnXHUwNjQ2XHUwNjMyJywKICAnXHVGQzhDJzogJ1x1MDY0Nlx1MDY0NScsCiAgJ1x1RkM4RCc6ICdcdTA2NDZcdTA2NDYnLAogICdcdUZDOEUnOiAnXHUwNjQ2XHUwNjQ5JywKICAnXHVGQzhGJzogJ1x1MDY0Nlx1MDY0QScsCiAgJ1x1RkM5MCc6ICdcdTA2NDlcdTA2NzAnLAogICdcdUZDOTEnOiAnXHUwNjRBXHUwNjMxJywKICAnXHVGQzkyJzogJ1x1MDY0QVx1MDYzMicsCiAgJ1x1RkM5Myc6ICdcdTA2NEFcdTA2NDUnLAogICdcdUZDOTQnOiAnXHUwNjRBXHUwNjQ2JywKICAnXHVGQzk1JzogJ1x1MDY0QVx1MDY0OScsCiAgJ1x1RkM5Nic6ICdcdTA2NEFcdTA2NEEnLAogICdcdUZDOTcnOiAnXHUwNjI2XHUwNjJDJywKICAnXHVGQzk4JzogJ1x1MDYyNlx1MDYyRCcsCiAgJ1x1RkM5OSc6ICdcdTA2MjZcdTA2MkUnLAogICdcdUZDOUEnOiAnXHUwNjI2XHUwNjQ1JywKICAnXHVGQzlCJzogJ1x1MDYyNlx1MDY0NycsCiAgJ1x1RkM5Qyc6ICdcdTA2MjhcdTA2MkMnLAogICdcdUZDOUQnOiAnXHUwNjI4XHUwNjJEJywKICAnXHVGQzlFJzogJ1x1MDYyOFx1MDYyRScsCiAgJ1x1RkM5Ric6ICdcdTA2MjhcdTA2NDUnLAogICdcdUZDQTAnOiAnXHUwNjI4XHUwNjQ3JywKICAnXHVGQ0ExJzogJ1x1MDYyQVx1MDYyQycsCiAgJ1x1RkNBMic6ICdcdTA2MkFcdTA2MkQnLAogICdcdUZDQTMnOiAnXHUwNjJBXHUwNjJFJywKICAnXHVGQ0E0JzogJ1x1MDYyQVx1MDY0NScsCiAgJ1x1RkNBNSc6ICdcdTA2MkFcdTA2NDcnLAogICdcdUZDQTYnOiAnXHUwNjJCXHUwNjQ1JywKICAnXHVGQ0E3JzogJ1x1MDYyQ1x1MDYyRCcsCiAgJ1x1RkNBOCc6ICdcdTA2MkNcdTA2NDUnLAogICdcdUZDQTknOiAnXHUwNjJEXHUwNjJDJywKICAnXHVGQ0FBJzogJ1x1MDYyRFx1MDY0NScsCiAgJ1x1RkNBQic6ICdcdTA2MkVcdTA2MkMnLAogICdcdUZDQUMnOiAnXHUwNjJFXHUwNjQ1JywKICAnXHVGQ0FEJzogJ1x1MDYzM1x1MDYyQycsCiAgJ1x1RkNBRSc6ICdcdTA2MzNcdTA2MkQnLAogICdcdUZDQUYnOiAnXHUwNjMzXHUwNjJFJywKICAnXHVGQ0IwJzogJ1x1MDYzM1x1MDY0NScsCiAgJ1x1RkNCMSc6ICdcdTA2MzVcdTA2MkQnLAogICdcdUZDQjInOiAnXHUwNjM1XHUwNjJFJywKICAnXHVGQ0IzJzogJ1x1MDYzNVx1MDY0NScsCiAgJ1x1RkNCNCc6ICdcdTA2MzZcdTA2MkMnLAogICdcdUZDQjUnOiAnXHUwNjM2XHUwNjJEJywKICAnXHVGQ0I2JzogJ1x1MDYzNlx1MDYyRScsCiAgJ1x1RkNCNyc6ICdcdTA2MzZcdTA2NDUnLAogICdcdUZDQjgnOiAnXHUwNjM3XHUwNjJEJywKICAnXHVGQ0I5JzogJ1x1MDYzOFx1MDY0NScsCiAgJ1x1RkNCQSc6ICdcdTA2MzlcdTA2MkMnLAogICdcdUZDQkInOiAnXHUwNjM5XHUwNjQ1JywKICAnXHVGQ0JDJzogJ1x1MDYzQVx1MDYyQycsCiAgJ1x1RkNCRCc6ICdcdTA2M0FcdTA2NDUnLAogICdcdUZDQkUnOiAnXHUwNjQxXHUwNjJDJywKICAnXHVGQ0JGJzogJ1x1MDY0MVx1MDYyRCcsCiAgJ1x1RkNDMCc6ICdcdTA2NDFcdTA2MkUnLAogICdcdUZDQzEnOiAnXHUwNjQxXHUwNjQ1JywKICAnXHVGQ0MyJzogJ1x1MDY0Mlx1MDYyRCcsCiAgJ1x1RkNDMyc6ICdcdTA2NDJcdTA2NDUnLAogICdcdUZDQzQnOiAnXHUwNjQzXHUwNjJDJywKICAnXHVGQ0M1JzogJ1x1MDY0M1x1MDYyRCcsCiAgJ1x1RkNDNic6ICdcdTA2NDNcdTA2MkUnLAogICdcdUZDQzcnOiAnXHUwNjQzXHUwNjQ0JywKICAnXHVGQ0M4JzogJ1x1MDY0M1x1MDY0NScsCiAgJ1x1RkNDOSc6ICdcdTA2NDRcdTA2MkMnLAogICdcdUZDQ0EnOiAnXHUwNjQ0XHUwNjJEJywKICAnXHVGQ0NCJzogJ1x1MDY0NFx1MDYyRScsCiAgJ1x1RkNDQyc6ICdcdTA2NDRcdTA2NDUnLAogICdcdUZDQ0QnOiAnXHUwNjQ0XHUwNjQ3JywKICAnXHVGQ0NFJzogJ1x1MDY0NVx1MDYyQycsCiAgJ1x1RkNDRic6ICdcdTA2NDVcdTA2MkQnLAogICdcdUZDRDAnOiAnXHUwNjQ1XHUwNjJFJywKICAnXHVGQ0QxJzogJ1x1MDY0NVx1MDY0NScsCiAgJ1x1RkNEMic6ICdcdTA2NDZcdTA2MkMnLAogICdcdUZDRDMnOiAnXHUwNjQ2XHUwNjJEJywKICAnXHVGQ0Q0JzogJ1x1MDY0Nlx1MDYyRScsCiAgJ1x1RkNENSc6ICdcdTA2NDZcdTA2NDUnLAogICdcdUZDRDYnOiAnXHUwNjQ2XHUwNjQ3JywKICAnXHVGQ0Q3JzogJ1x1MDY0N1x1MDYyQycsCiAgJ1x1RkNEOCc6ICdcdTA2NDdcdTA2NDUnLAogICdcdUZDRDknOiAnXHUwNjQ3XHUwNjcwJywKICAnXHVGQ0RBJzogJ1x1MDY0QVx1MDYyQycsCiAgJ1x1RkNEQic6ICdcdTA2NEFcdTA2MkQnLAogICdcdUZDREMnOiAnXHUwNjRBXHUwNjJFJywKICAnXHVGQ0REJzogJ1x1MDY0QVx1MDY0NScsCiAgJ1x1RkNERSc6ICdcdTA2NEFcdTA2NDcnLAogICdcdUZDREYnOiAnXHUwNjI2XHUwNjQ1JywKICAnXHVGQ0UwJzogJ1x1MDYyNlx1MDY0NycsCiAgJ1x1RkNFMSc6ICdcdTA2MjhcdTA2NDUnLAogICdcdUZDRTInOiAnXHUwNjI4XHUwNjQ3JywKICAnXHVGQ0UzJzogJ1x1MDYyQVx1MDY0NScsCiAgJ1x1RkNFNCc6ICdcdTA2MkFcdTA2NDcnLAogICdcdUZDRTUnOiAnXHUwNjJCXHUwNjQ1JywKICAnXHVGQ0U2JzogJ1x1MDYyQlx1MDY0NycsCiAgJ1x1RkNFNyc6ICdcdTA2MzNcdTA2NDUnLAogICdcdUZDRTgnOiAnXHUwNjMzXHUwNjQ3JywKICAnXHVGQ0U5JzogJ1x1MDYzNFx1MDY0NScsCiAgJ1x1RkNFQSc6ICdcdTA2MzRcdTA2NDcnLAogICdcdUZDRUInOiAnXHUwNjQzXHUwNjQ0JywKICAnXHVGQ0VDJzogJ1x1MDY0M1x1MDY0NScsCiAgJ1x1RkNFRCc6ICdcdTA2NDRcdTA2NDUnLAogICdcdUZDRUUnOiAnXHUwNjQ2XHUwNjQ1JywKICAnXHVGQ0VGJzogJ1x1MDY0Nlx1MDY0NycsCiAgJ1x1RkNGMCc6ICdcdTA2NEFcdTA2NDUnLAogICdcdUZDRjEnOiAnXHUwNjRBXHUwNjQ3JywKICAnXHVGQ0YyJzogJ1x1MDY0MFx1MDY0RVx1MDY1MScsCiAgJ1x1RkNGMyc6ICdcdTA2NDBcdTA2NEZcdTA2NTEnLAogICdcdUZDRjQnOiAnXHUwNjQwXHUwNjUwXHUwNjUxJywKICAnXHVGQ0Y1JzogJ1x1MDYzN1x1MDY0OScsCiAgJ1x1RkNGNic6ICdcdTA2MzdcdTA2NEEnLAogICdcdUZDRjcnOiAnXHUwNjM5XHUwNjQ5JywKICAnXHVGQ0Y4JzogJ1x1MDYzOVx1MDY0QScsCiAgJ1x1RkNGOSc6ICdcdTA2M0FcdTA2NDknLAogICdcdUZDRkEnOiAnXHUwNjNBXHUwNjRBJywKICAnXHVGQ0ZCJzogJ1x1MDYzM1x1MDY0OScsCiAgJ1x1RkNGQyc6ICdcdTA2MzNcdTA2NEEnLAogICdcdUZDRkQnOiAnXHUwNjM0XHUwNjQ5JywKICAnXHVGQ0ZFJzogJ1x1MDYzNFx1MDY0QScsCiAgJ1x1RkNGRic6ICdcdTA2MkRcdTA2NDknLAogICdcdUZEMDAnOiAnXHUwNjJEXHUwNjRBJywKICAnXHVGRDAxJzogJ1x1MDYyQ1x1MDY0OScsCiAgJ1x1RkQwMic6ICdcdTA2MkNcdTA2NEEnLAogICdcdUZEMDMnOiAnXHUwNjJFXHUwNjQ5JywKICAnXHVGRDA0JzogJ1x1MDYyRVx1MDY0QScsCiAgJ1x1RkQwNSc6ICdcdTA2MzVcdTA2NDknLAogICdcdUZEMDYnOiAnXHUwNjM1XHUwNjRBJywKICAnXHVGRDA3JzogJ1x1MDYzNlx1MDY0OScsCiAgJ1x1RkQwOCc6ICdcdTA2MzZcdTA2NEEnLAogICdcdUZEMDknOiAnXHUwNjM0XHUwNjJDJywKICAnXHVGRDBBJzogJ1x1MDYzNFx1MDYyRCcsCiAgJ1x1RkQwQic6ICdcdTA2MzRcdTA2MkUnLAogICdcdUZEMEMnOiAnXHUwNjM0XHUwNjQ1JywKICAnXHVGRDBEJzogJ1x1MDYzNFx1MDYzMScsCiAgJ1x1RkQwRSc6ICdcdTA2MzNcdTA2MzEnLAogICdcdUZEMEYnOiAnXHUwNjM1XHUwNjMxJywKICAnXHVGRDEwJzogJ1x1MDYzNlx1MDYzMScsCiAgJ1x1RkQxMSc6ICdcdTA2MzdcdTA2NDknLAogICdcdUZEMTInOiAnXHUwNjM3XHUwNjRBJywKICAnXHVGRDEzJzogJ1x1MDYzOVx1MDY0OScsCiAgJ1x1RkQxNCc6ICdcdTA2MzlcdTA2NEEnLAogICdcdUZEMTUnOiAnXHUwNjNBXHUwNjQ5JywKICAnXHVGRDE2JzogJ1x1MDYzQVx1MDY0QScsCiAgJ1x1RkQxNyc6ICdcdTA2MzNcdTA2NDknLAogICdcdUZEMTgnOiAnXHUwNjMzXHUwNjRBJywKICAnXHVGRDE5JzogJ1x1MDYzNFx1MDY0OScsCiAgJ1x1RkQxQSc6ICdcdTA2MzRcdTA2NEEnLAogICdcdUZEMUInOiAnXHUwNjJEXHUwNjQ5JywKICAnXHVGRDFDJzogJ1x1MDYyRFx1MDY0QScsCiAgJ1x1RkQxRCc6ICdcdTA2MkNcdTA2NDknLAogICdcdUZEMUUnOiAnXHUwNjJDXHUwNjRBJywKICAnXHVGRDFGJzogJ1x1MDYyRVx1MDY0OScsCiAgJ1x1RkQyMCc6ICdcdTA2MkVcdTA2NEEnLAogICdcdUZEMjEnOiAnXHUwNjM1XHUwNjQ5JywKICAnXHVGRDIyJzogJ1x1MDYzNVx1MDY0QScsCiAgJ1x1RkQyMyc6ICdcdTA2MzZcdTA2NDknLAogICdcdUZEMjQnOiAnXHUwNjM2XHUwNjRBJywKICAnXHVGRDI1JzogJ1x1MDYzNFx1MDYyQycsCiAgJ1x1RkQyNic6ICdcdTA2MzRcdTA2MkQnLAogICdcdUZEMjcnOiAnXHUwNjM0XHUwNjJFJywKICAnXHVGRDI4JzogJ1x1MDYzNFx1MDY0NScsCiAgJ1x1RkQyOSc6ICdcdTA2MzRcdTA2MzEnLAogICdcdUZEMkEnOiAnXHUwNjMzXHUwNjMxJywKICAnXHVGRDJCJzogJ1x1MDYzNVx1MDYzMScsCiAgJ1x1RkQyQyc6ICdcdTA2MzZcdTA2MzEnLAogICdcdUZEMkQnOiAnXHUwNjM0XHUwNjJDJywKICAnXHVGRDJFJzogJ1x1MDYzNFx1MDYyRCcsCiAgJ1x1RkQyRic6ICdcdTA2MzRcdTA2MkUnLAogICdcdUZEMzAnOiAnXHUwNjM0XHUwNjQ1JywKICAnXHVGRDMxJzogJ1x1MDYzM1x1MDY0NycsCiAgJ1x1RkQzMic6ICdcdTA2MzRcdTA2NDcnLAogICdcdUZEMzMnOiAnXHUwNjM3XHUwNjQ1JywKICAnXHVGRDM0JzogJ1x1MDYzM1x1MDYyQycsCiAgJ1x1RkQzNSc6ICdcdTA2MzNcdTA2MkQnLAogICdcdUZEMzYnOiAnXHUwNjMzXHUwNjJFJywKICAnXHVGRDM3JzogJ1x1MDYzNFx1MDYyQycsCiAgJ1x1RkQzOCc6ICdcdTA2MzRcdTA2MkQnLAogICdcdUZEMzknOiAnXHUwNjM0XHUwNjJFJywKICAnXHVGRDNBJzogJ1x1MDYzN1x1MDY0NScsCiAgJ1x1RkQzQic6ICdcdTA2MzhcdTA2NDUnLAogICdcdUZEM0MnOiAnXHUwNjI3XHUwNjRCJywKICAnXHVGRDNEJzogJ1x1MDYyN1x1MDY0QicsCiAgJ1x1RkQ1MCc6ICdcdTA2MkFcdTA2MkNcdTA2NDUnLAogICdcdUZENTEnOiAnXHUwNjJBXHUwNjJEXHUwNjJDJywKICAnXHVGRDUyJzogJ1x1MDYyQVx1MDYyRFx1MDYyQycsCiAgJ1x1RkQ1Myc6ICdcdTA2MkFcdTA2MkRcdTA2NDUnLAogICdcdUZENTQnOiAnXHUwNjJBXHUwNjJFXHUwNjQ1JywKICAnXHVGRDU1JzogJ1x1MDYyQVx1MDY0NVx1MDYyQycsCiAgJ1x1RkQ1Nic6ICdcdTA2MkFcdTA2NDVcdTA2MkQnLAogICdcdUZENTcnOiAnXHUwNjJBXHUwNjQ1XHUwNjJFJywKICAnXHVGRDU4JzogJ1x1MDYyQ1x1MDY0NVx1MDYyRCcsCiAgJ1x1RkQ1OSc6ICdcdTA2MkNcdTA2NDVcdTA2MkQnLAogICdcdUZENUEnOiAnXHUwNjJEXHUwNjQ1XHUwNjRBJywKICAnXHVGRDVCJzogJ1x1MDYyRFx1MDY0NVx1MDY0OScsCiAgJ1x1RkQ1Qyc6ICdcdTA2MzNcdTA2MkRcdTA2MkMnLAogICdcdUZENUQnOiAnXHUwNjMzXHUwNjJDXHUwNjJEJywKICAnXHVGRDVFJzogJ1x1MDYzM1x1MDYyQ1x1MDY0OScsCiAgJ1x1RkQ1Ric6ICdcdTA2MzNcdTA2NDVcdTA2MkQnLAogICdcdUZENjAnOiAnXHUwNjMzXHUwNjQ1XHUwNjJEJywKICAnXHVGRDYxJzogJ1x1MDYzM1x1MDY0NVx1MDYyQycsCiAgJ1x1RkQ2Mic6ICdcdTA2MzNcdTA2NDVcdTA2NDUnLAogICdcdUZENjMnOiAnXHUwNjMzXHUwNjQ1XHUwNjQ1JywKICAnXHVGRDY0JzogJ1x1MDYzNVx1MDYyRFx1MDYyRCcsCiAgJ1x1RkQ2NSc6ICdcdTA2MzVcdTA2MkRcdTA2MkQnLAogICdcdUZENjYnOiAnXHUwNjM1XHUwNjQ1XHUwNjQ1JywKICAnXHVGRDY3JzogJ1x1MDYzNFx1MDYyRFx1MDY0NScsCiAgJ1x1RkQ2OCc6ICdcdTA2MzRcdTA2MkRcdTA2NDUnLAogICdcdUZENjknOiAnXHUwNjM0XHUwNjJDXHUwNjRBJywKICAnXHVGRDZBJzogJ1x1MDYzNFx1MDY0NVx1MDYyRScsCiAgJ1x1RkQ2Qic6ICdcdTA2MzRcdTA2NDVcdTA2MkUnLAogICdcdUZENkMnOiAnXHUwNjM0XHUwNjQ1XHUwNjQ1JywKICAnXHVGRDZEJzogJ1x1MDYzNFx1MDY0NVx1MDY0NScsCiAgJ1x1RkQ2RSc6ICdcdTA2MzZcdTA2MkRcdTA2NDknLAogICdcdUZENkYnOiAnXHUwNjM2XHUwNjJFXHUwNjQ1JywKICAnXHVGRDcwJzogJ1x1MDYzNlx1MDYyRVx1MDY0NScsCiAgJ1x1RkQ3MSc6ICdcdTA2MzdcdTA2NDVcdTA2MkQnLAogICdcdUZENzInOiAnXHUwNjM3XHUwNjQ1XHUwNjJEJywKICAnXHVGRDczJzogJ1x1MDYzN1x1MDY0NVx1MDY0NScsCiAgJ1x1RkQ3NCc6ICdcdTA2MzdcdTA2NDVcdTA2NEEnLAogICdcdUZENzUnOiAnXHUwNjM5XHUwNjJDXHUwNjQ1JywKICAnXHVGRDc2JzogJ1x1MDYzOVx1MDY0NVx1MDY0NScsCiAgJ1x1RkQ3Nyc6ICdcdTA2MzlcdTA2NDVcdTA2NDUnLAogICdcdUZENzgnOiAnXHUwNjM5XHUwNjQ1XHUwNjQ5JywKICAnXHVGRDc5JzogJ1x1MDYzQVx1MDY0NVx1MDY0NScsCiAgJ1x1RkQ3QSc6ICdcdTA2M0FcdTA2NDVcdTA2NEEnLAogICdcdUZEN0InOiAnXHUwNjNBXHUwNjQ1XHUwNjQ5JywKICAnXHVGRDdDJzogJ1x1MDY0MVx1MDYyRVx1MDY0NScsCiAgJ1x1RkQ3RCc6ICdcdTA2NDFcdTA2MkVcdTA2NDUnLAogICdcdUZEN0UnOiAnXHUwNjQyXHUwNjQ1XHUwNjJEJywKICAnXHVGRDdGJzogJ1x1MDY0Mlx1MDY0NVx1MDY0NScsCiAgJ1x1RkQ4MCc6ICdcdTA2NDRcdTA2MkRcdTA2NDUnLAogICdcdUZEODEnOiAnXHUwNjQ0XHUwNjJEXHUwNjRBJywKICAnXHVGRDgyJzogJ1x1MDY0NFx1MDYyRFx1MDY0OScsCiAgJ1x1RkQ4Myc6ICdcdTA2NDRcdTA2MkNcdTA2MkMnLAogICdcdUZEODQnOiAnXHUwNjQ0XHUwNjJDXHUwNjJDJywKICAnXHVGRDg1JzogJ1x1MDY0NFx1MDYyRVx1MDY0NScsCiAgJ1x1RkQ4Nic6ICdcdTA2NDRcdTA2MkVcdTA2NDUnLAogICdcdUZEODcnOiAnXHUwNjQ0XHUwNjQ1XHUwNjJEJywKICAnXHVGRDg4JzogJ1x1MDY0NFx1MDY0NVx1MDYyRCcsCiAgJ1x1RkQ4OSc6ICdcdTA2NDVcdTA2MkRcdTA2MkMnLAogICdcdUZEOEEnOiAnXHUwNjQ1XHUwNjJEXHUwNjQ1JywKICAnXHVGRDhCJzogJ1x1MDY0NVx1MDYyRFx1MDY0QScsCiAgJ1x1RkQ4Qyc6ICdcdTA2NDVcdTA2MkNcdTA2MkQnLAogICdcdUZEOEQnOiAnXHUwNjQ1XHUwNjJDXHUwNjQ1JywKICAnXHVGRDhFJzogJ1x1MDY0NVx1MDYyRVx1MDYyQycsCiAgJ1x1RkQ4Ric6ICdcdTA2NDVcdTA2MkVcdTA2NDUnLAogICdcdUZEOTInOiAnXHUwNjQ1XHUwNjJDXHUwNjJFJywKICAnXHVGRDkzJzogJ1x1MDY0N1x1MDY0NVx1MDYyQycsCiAgJ1x1RkQ5NCc6ICdcdTA2NDdcdTA2NDVcdTA2NDUnLAogICdcdUZEOTUnOiAnXHUwNjQ2XHUwNjJEXHUwNjQ1JywKICAnXHVGRDk2JzogJ1x1MDY0Nlx1MDYyRFx1MDY0OScsCiAgJ1x1RkQ5Nyc6ICdcdTA2NDZcdTA2MkNcdTA2NDUnLAogICdcdUZEOTgnOiAnXHUwNjQ2XHUwNjJDXHUwNjQ1JywKICAnXHVGRDk5JzogJ1x1MDY0Nlx1MDYyQ1x1MDY0OScsCiAgJ1x1RkQ5QSc6ICdcdTA2NDZcdTA2NDVcdTA2NEEnLAogICdcdUZEOUInOiAnXHUwNjQ2XHUwNjQ1XHUwNjQ5JywKICAnXHVGRDlDJzogJ1x1MDY0QVx1MDY0NVx1MDY0NScsCiAgJ1x1RkQ5RCc6ICdcdTA2NEFcdTA2NDVcdTA2NDUnLAogICdcdUZEOUUnOiAnXHUwNjI4XHUwNjJFXHUwNjRBJywKICAnXHVGRDlGJzogJ1x1MDYyQVx1MDYyQ1x1MDY0QScsCiAgJ1x1RkRBMCc6ICdcdTA2MkFcdTA2MkNcdTA2NDknLAogICdcdUZEQTEnOiAnXHUwNjJBXHUwNjJFXHUwNjRBJywKICAnXHVGREEyJzogJ1x1MDYyQVx1MDYyRVx1MDY0OScsCiAgJ1x1RkRBMyc6ICdcdTA2MkFcdTA2NDVcdTA2NEEnLAogICdcdUZEQTQnOiAnXHUwNjJBXHUwNjQ1XHUwNjQ5JywKICAnXHVGREE1JzogJ1x1MDYyQ1x1MDY0NVx1MDY0QScsCiAgJ1x1RkRBNic6ICdcdTA2MkNcdTA2MkRcdTA2NDknLAogICdcdUZEQTcnOiAnXHUwNjJDXHUwNjQ1XHUwNjQ5JywKICAnXHVGREE4JzogJ1x1MDYzM1x1MDYyRVx1MDY0OScsCiAgJ1x1RkRBOSc6ICdcdTA2MzVcdTA2MkRcdTA2NEEnLAogICdcdUZEQUEnOiAnXHUwNjM0XHUwNjJEXHUwNjRBJywKICAnXHVGREFCJzogJ1x1MDYzNlx1MDYyRFx1MDY0QScsCiAgJ1x1RkRBQyc6ICdcdTA2NDRcdTA2MkNcdTA2NEEnLAogICdcdUZEQUQnOiAnXHUwNjQ0XHUwNjQ1XHUwNjRBJywKICAnXHVGREFFJzogJ1x1MDY0QVx1MDYyRFx1MDY0QScsCiAgJ1x1RkRBRic6ICdcdTA2NEFcdTA2MkNcdTA2NEEnLAogICdcdUZEQjAnOiAnXHUwNjRBXHUwNjQ1XHUwNjRBJywKICAnXHVGREIxJzogJ1x1MDY0NVx1MDY0NVx1MDY0QScsCiAgJ1x1RkRCMic6ICdcdTA2NDJcdTA2NDVcdTA2NEEnLAogICdcdUZEQjMnOiAnXHUwNjQ2XHUwNjJEXHUwNjRBJywKICAnXHVGREI0JzogJ1x1MDY0Mlx1MDY0NVx1MDYyRCcsCiAgJ1x1RkRCNSc6ICdcdTA2NDRcdTA2MkRcdTA2NDUnLAogICdcdUZEQjYnOiAnXHUwNjM5XHUwNjQ1XHUwNjRBJywKICAnXHVGREI3JzogJ1x1MDY0M1x1MDY0NVx1MDY0QScsCiAgJ1x1RkRCOCc6ICdcdTA2NDZcdTA2MkNcdTA2MkQnLAogICdcdUZEQjknOiAnXHUwNjQ1XHUwNjJFXHUwNjRBJywKICAnXHVGREJBJzogJ1x1MDY0NFx1MDYyQ1x1MDY0NScsCiAgJ1x1RkRCQic6ICdcdTA2NDNcdTA2NDVcdTA2NDUnLAogICdcdUZEQkMnOiAnXHUwNjQ0XHUwNjJDXHUwNjQ1JywKICAnXHVGREJEJzogJ1x1MDY0Nlx1MDYyQ1x1MDYyRCcsCiAgJ1x1RkRCRSc6ICdcdTA2MkNcdTA2MkRcdTA2NEEnLAogICdcdUZEQkYnOiAnXHUwNjJEXHUwNjJDXHUwNjRBJywKICAnXHVGREMwJzogJ1x1MDY0NVx1MDYyQ1x1MDY0QScsCiAgJ1x1RkRDMSc6ICdcdTA2NDFcdTA2NDVcdTA2NEEnLAogICdcdUZEQzInOiAnXHUwNjI4XHUwNjJEXHUwNjRBJywKICAnXHVGREMzJzogJ1x1MDY0M1x1MDY0NVx1MDY0NScsCiAgJ1x1RkRDNCc6ICdcdTA2MzlcdTA2MkNcdTA2NDUnLAogICdcdUZEQzUnOiAnXHUwNjM1XHUwNjQ1XHUwNjQ1JywKICAnXHVGREM2JzogJ1x1MDYzM1x1MDYyRVx1MDY0QScsCiAgJ1x1RkRDNyc6ICdcdTA2NDZcdTA2MkNcdTA2NEEnLAogICdcdUZFNDknOiAnXHUyMDNFJywKICAnXHVGRTRBJzogJ1x1MjAzRScsCiAgJ1x1RkU0Qic6ICdcdTIwM0UnLAogICdcdUZFNEMnOiAnXHUyMDNFJywKICAnXHVGRTREJzogJ1x1MDA1RicsCiAgJ1x1RkU0RSc6ICdcdTAwNUYnLAogICdcdUZFNEYnOiAnXHUwMDVGJywKICAnXHVGRTgwJzogJ1x1MDYyMScsCiAgJ1x1RkU4MSc6ICdcdTA2MjInLAogICdcdUZFODInOiAnXHUwNjIyJywKICAnXHVGRTgzJzogJ1x1MDYyMycsCiAgJ1x1RkU4NCc6ICdcdTA2MjMnLAogICdcdUZFODUnOiAnXHUwNjI0JywKICAnXHVGRTg2JzogJ1x1MDYyNCcsCiAgJ1x1RkU4Nyc6ICdcdTA2MjUnLAogICdcdUZFODgnOiAnXHUwNjI1JywKICAnXHVGRTg5JzogJ1x1MDYyNicsCiAgJ1x1RkU4QSc6ICdcdTA2MjYnLAogICdcdUZFOEInOiAnXHUwNjI2JywKICAnXHVGRThDJzogJ1x1MDYyNicsCiAgJ1x1RkU4RCc6ICdcdTA2MjcnLAogICdcdUZFOEUnOiAnXHUwNjI3JywKICAnXHVGRThGJzogJ1x1MDYyOCcsCiAgJ1x1RkU5MCc6ICdcdTA2MjgnLAogICdcdUZFOTEnOiAnXHUwNjI4JywKICAnXHVGRTkyJzogJ1x1MDYyOCcsCiAgJ1x1RkU5Myc6ICdcdTA2MjknLAogICdcdUZFOTQnOiAnXHUwNjI5JywKICAnXHVGRTk1JzogJ1x1MDYyQScsCiAgJ1x1RkU5Nic6ICdcdTA2MkEnLAogICdcdUZFOTcnOiAnXHUwNjJBJywKICAnXHVGRTk4JzogJ1x1MDYyQScsCiAgJ1x1RkU5OSc6ICdcdTA2MkInLAogICdcdUZFOUEnOiAnXHUwNjJCJywKICAnXHVGRTlCJzogJ1x1MDYyQicsCiAgJ1x1RkU5Qyc6ICdcdTA2MkInLAogICdcdUZFOUQnOiAnXHUwNjJDJywKICAnXHVGRTlFJzogJ1x1MDYyQycsCiAgJ1x1RkU5Ric6ICdcdTA2MkMnLAogICdcdUZFQTAnOiAnXHUwNjJDJywKICAnXHVGRUExJzogJ1x1MDYyRCcsCiAgJ1x1RkVBMic6ICdcdTA2MkQnLAogICdcdUZFQTMnOiAnXHUwNjJEJywKICAnXHVGRUE0JzogJ1x1MDYyRCcsCiAgJ1x1RkVBNSc6ICdcdTA2MkUnLAogICdcdUZFQTYnOiAnXHUwNjJFJywKICAnXHVGRUE3JzogJ1x1MDYyRScsCiAgJ1x1RkVBOCc6ICdcdTA2MkUnLAogICdcdUZFQTknOiAnXHUwNjJGJywKICAnXHVGRUFBJzogJ1x1MDYyRicsCiAgJ1x1RkVBQic6ICdcdTA2MzAnLAogICdcdUZFQUMnOiAnXHUwNjMwJywKICAnXHVGRUFEJzogJ1x1MDYzMScsCiAgJ1x1RkVBRSc6ICdcdTA2MzEnLAogICdcdUZFQUYnOiAnXHUwNjMyJywKICAnXHVGRUIwJzogJ1x1MDYzMicsCiAgJ1x1RkVCMSc6ICdcdTA2MzMnLAogICdcdUZFQjInOiAnXHUwNjMzJywKICAnXHVGRUIzJzogJ1x1MDYzMycsCiAgJ1x1RkVCNCc6ICdcdTA2MzMnLAogICdcdUZFQjUnOiAnXHUwNjM0JywKICAnXHVGRUI2JzogJ1x1MDYzNCcsCiAgJ1x1RkVCNyc6ICdcdTA2MzQnLAogICdcdUZFQjgnOiAnXHUwNjM0JywKICAnXHVGRUI5JzogJ1x1MDYzNScsCiAgJ1x1RkVCQSc6ICdcdTA2MzUnLAogICdcdUZFQkInOiAnXHUwNjM1JywKICAnXHVGRUJDJzogJ1x1MDYzNScsCiAgJ1x1RkVCRCc6ICdcdTA2MzYnLAogICdcdUZFQkUnOiAnXHUwNjM2JywKICAnXHVGRUJGJzogJ1x1MDYzNicsCiAgJ1x1RkVDMCc6ICdcdTA2MzYnLAogICdcdUZFQzEnOiAnXHUwNjM3JywKICAnXHVGRUMyJzogJ1x1MDYzNycsCiAgJ1x1RkVDMyc6ICdcdTA2MzcnLAogICdcdUZFQzQnOiAnXHUwNjM3JywKICAnXHVGRUM1JzogJ1x1MDYzOCcsCiAgJ1x1RkVDNic6ICdcdTA2MzgnLAogICdcdUZFQzcnOiAnXHUwNjM4JywKICAnXHVGRUM4JzogJ1x1MDYzOCcsCiAgJ1x1RkVDOSc6ICdcdTA2MzknLAogICdcdUZFQ0EnOiAnXHUwNjM5JywKICAnXHVGRUNCJzogJ1x1MDYzOScsCiAgJ1x1RkVDQyc6ICdcdTA2MzknLAogICdcdUZFQ0QnOiAnXHUwNjNBJywKICAnXHVGRUNFJzogJ1x1MDYzQScsCiAgJ1x1RkVDRic6ICdcdTA2M0EnLAogICdcdUZFRDAnOiAnXHUwNjNBJywKICAnXHVGRUQxJzogJ1x1MDY0MScsCiAgJ1x1RkVEMic6ICdcdTA2NDEnLAogICdcdUZFRDMnOiAnXHUwNjQxJywKICAnXHVGRUQ0JzogJ1x1MDY0MScsCiAgJ1x1RkVENSc6ICdcdTA2NDInLAogICdcdUZFRDYnOiAnXHUwNjQyJywKICAnXHVGRUQ3JzogJ1x1MDY0MicsCiAgJ1x1RkVEOCc6ICdcdTA2NDInLAogICdcdUZFRDknOiAnXHUwNjQzJywKICAnXHVGRURBJzogJ1x1MDY0MycsCiAgJ1x1RkVEQic6ICdcdTA2NDMnLAogICdcdUZFREMnOiAnXHUwNjQzJywKICAnXHVGRUREJzogJ1x1MDY0NCcsCiAgJ1x1RkVERSc6ICdcdTA2NDQnLAogICdcdUZFREYnOiAnXHUwNjQ0JywKICAnXHVGRUUwJzogJ1x1MDY0NCcsCiAgJ1x1RkVFMSc6ICdcdTA2NDUnLAogICdcdUZFRTInOiAnXHUwNjQ1JywKICAnXHVGRUUzJzogJ1x1MDY0NScsCiAgJ1x1RkVFNCc6ICdcdTA2NDUnLAogICdcdUZFRTUnOiAnXHUwNjQ2JywKICAnXHVGRUU2JzogJ1x1MDY0NicsCiAgJ1x1RkVFNyc6ICdcdTA2NDYnLAogICdcdUZFRTgnOiAnXHUwNjQ2JywKICAnXHVGRUU5JzogJ1x1MDY0NycsCiAgJ1x1RkVFQSc6ICdcdTA2NDcnLAogICdcdUZFRUInOiAnXHUwNjQ3JywKICAnXHVGRUVDJzogJ1x1MDY0NycsCiAgJ1x1RkVFRCc6ICdcdTA2NDgnLAogICdcdUZFRUUnOiAnXHUwNjQ4JywKICAnXHVGRUVGJzogJ1x1MDY0OScsCiAgJ1x1RkVGMCc6ICdcdTA2NDknLAogICdcdUZFRjEnOiAnXHUwNjRBJywKICAnXHVGRUYyJzogJ1x1MDY0QScsCiAgJ1x1RkVGMyc6ICdcdTA2NEEnLAogICdcdUZFRjQnOiAnXHUwNjRBJywKICAnXHVGRUY1JzogJ1x1MDY0NFx1MDYyMicsCiAgJ1x1RkVGNic6ICdcdTA2NDRcdTA2MjInLAogICdcdUZFRjcnOiAnXHUwNjQ0XHUwNjIzJywKICAnXHVGRUY4JzogJ1x1MDY0NFx1MDYyMycsCiAgJ1x1RkVGOSc6ICdcdTA2NDRcdTA2MjUnLAogICdcdUZFRkEnOiAnXHUwNjQ0XHUwNjI1JywKICAnXHVGRUZCJzogJ1x1MDY0NFx1MDYyNycsCiAgJ1x1RkVGQyc6ICdcdTA2NDRcdTA2MjcnCn07CgpmdW5jdGlvbiByZXZlcnNlSWZSdGwoY2hhcnMpIHsKICB2YXIgY2hhcnNMZW5ndGggPSBjaGFycy5sZW5ndGg7CiAgLy9yZXZlcnNlIGFuIGFyYWJpYyBsaWdhdHVyZQogIGlmIChjaGFyc0xlbmd0aCA8PSAxIHx8ICFpc1JUTFJhbmdlRm9yKGNoYXJzLmNoYXJDb2RlQXQoMCkpKSB7CiAgICByZXR1cm4gY2hhcnM7CiAgfQogIHZhciBzID0gJyc7CiAgZm9yICh2YXIgaWkgPSBjaGFyc0xlbmd0aCAtIDE7IGlpID49IDA7IGlpLS0pIHsKICAgIHMgKz0gY2hhcnNbaWldOwogIH0KICByZXR1cm4gczsKfQoKZnVuY3Rpb24gYWRqdXN0V2lkdGhzKHByb3BlcnRpZXMpIHsKICBpZiAocHJvcGVydGllcy5mb250TWF0cml4WzBdID09PSBGT05UX0lERU5USVRZX01BVFJJWFswXSkgewogICAgcmV0dXJuOwogIH0KICAvLyBhZGp1c3Rpbmcgd2lkdGggdG8gZm9udE1hdHJpeCBzY2FsZQogIHZhciBzY2FsZSA9IDAuMDAxIC8gcHJvcGVydGllcy5mb250TWF0cml4WzBdOwogIHZhciBnbHlwaHNXaWR0aHMgPSBwcm9wZXJ0aWVzLndpZHRoczsKICBmb3IgKHZhciBnbHlwaCBpbiBnbHlwaHNXaWR0aHMpIHsKICAgIGdseXBoc1dpZHRoc1tnbHlwaF0gKj0gc2NhbGU7CiAgfQogIHByb3BlcnRpZXMuZGVmYXVsdFdpZHRoICo9IHNjYWxlOwp9CgpmdW5jdGlvbiBnZXRGb250VHlwZSh0eXBlLCBzdWJ0eXBlKSB7CiAgc3dpdGNoICh0eXBlKSB7CiAgICBjYXNlICdUeXBlMSc6CiAgICAgIHJldHVybiBzdWJ0eXBlID09PSAnVHlwZTFDJyA/IEZvbnRUeXBlLlRZUEUxQyA6IEZvbnRUeXBlLlRZUEUxOwogICAgY2FzZSAnQ0lERm9udFR5cGUwJzoKICAgICAgcmV0dXJuIHN1YnR5cGUgPT09ICdDSURGb250VHlwZTBDJyA/IEZvbnRUeXBlLkNJREZPTlRUWVBFMEMgOgogICAgICAgIEZvbnRUeXBlLkNJREZPTlRUWVBFMDsKICAgIGNhc2UgJ09wZW5UeXBlJzoKICAgICAgcmV0dXJuIEZvbnRUeXBlLk9QRU5UWVBFOwogICAgY2FzZSAnVHJ1ZVR5cGUnOgogICAgICByZXR1cm4gRm9udFR5cGUuVFJVRVRZUEU7CiAgICBjYXNlICdDSURGb250VHlwZTInOgogICAgICByZXR1cm4gRm9udFR5cGUuQ0lERk9OVFRZUEUyOwogICAgY2FzZSAnTU1UeXBlMSc6CiAgICAgIHJldHVybiBGb250VHlwZS5NTVRZUEUxOwogICAgY2FzZSAnVHlwZTAnOgogICAgICByZXR1cm4gRm9udFR5cGUuVFlQRTA7CiAgICBkZWZhdWx0OgogICAgICByZXR1cm4gRm9udFR5cGUuVU5LTk9XTjsKICB9Cn0KCnZhciBHbHlwaCA9IChmdW5jdGlvbiBHbHlwaENsb3N1cmUoKSB7CiAgZnVuY3Rpb24gR2x5cGgoZm9udENoYXIsIHVuaWNvZGUsIGFjY2VudCwgd2lkdGgsIHZtZXRyaWMsIG9wZXJhdG9yTGlzdElkKSB7CiAgICB0aGlzLmZvbnRDaGFyID0gZm9udENoYXI7CiAgICB0aGlzLnVuaWNvZGUgPSB1bmljb2RlOwogICAgdGhpcy5hY2NlbnQgPSBhY2NlbnQ7CiAgICB0aGlzLndpZHRoID0gd2lkdGg7CiAgICB0aGlzLnZtZXRyaWMgPSB2bWV0cmljOwogICAgdGhpcy5vcGVyYXRvckxpc3RJZCA9IG9wZXJhdG9yTGlzdElkOwogIH0KCiAgR2x5cGgucHJvdG90eXBlLm1hdGNoZXNGb3JDYWNoZSA9CiAgICAgIGZ1bmN0aW9uKGZvbnRDaGFyLCB1bmljb2RlLCBhY2NlbnQsIHdpZHRoLCB2bWV0cmljLCBvcGVyYXRvckxpc3RJZCkgewogICAgcmV0dXJuIHRoaXMuZm9udENoYXIgPT09IGZvbnRDaGFyICYmCiAgICAgICAgICAgdGhpcy51bmljb2RlID09PSB1bmljb2RlICYmCiAgICAgICAgICAgdGhpcy5hY2NlbnQgPT09IGFjY2VudCAmJgogICAgICAgICAgIHRoaXMud2lkdGggPT09IHdpZHRoICYmCiAgICAgICAgICAgdGhpcy52bWV0cmljID09PSB2bWV0cmljICYmCiAgICAgICAgICAgdGhpcy5vcGVyYXRvckxpc3RJZCA9PT0gb3BlcmF0b3JMaXN0SWQ7CiAgfTsKCiAgcmV0dXJuIEdseXBoOwp9KSgpOwoKdmFyIFRvVW5pY29kZU1hcCA9IChmdW5jdGlvbiBUb1VuaWNvZGVNYXBDbG9zdXJlKCkgewogIGZ1bmN0aW9uIFRvVW5pY29kZU1hcChjbWFwKSB7CiAgICAvLyBUaGUgZWxlbWVudHMgb2YgdGhpcy5fbWFwIGNhbiBiZSBpbnRlZ2VycyBvciBzdHJpbmdzLCBkZXBlbmRpbmcgb24gaG93CiAgICAvLyB8Y21hcHwgd2FzIGNyZWF0ZWQuCiAgICB0aGlzLl9tYXAgPSBjbWFwOwogIH0KCiAgVG9Vbmljb2RlTWFwLnByb3RvdHlwZSA9IHsKICAgIGdldCBsZW5ndGgoKSB7CiAgICAgIHJldHVybiB0aGlzLl9tYXAubGVuZ3RoOwogICAgfSwKCiAgICBmb3JFYWNoOiBmdW5jdGlvbihjYWxsYmFjaykgewogICAgICBmb3IgKHZhciBjaGFyQ29kZSBpbiB0aGlzLl9tYXApIHsKICAgICAgICBjYWxsYmFjayhjaGFyQ29kZSwgdGhpcy5fbWFwW2NoYXJDb2RlXS5jaGFyQ29kZUF0KDApKTsKICAgICAgfQogICAgfSwKCiAgICBoYXM6IGZ1bmN0aW9uKGkpIHsKICAgICAgcmV0dXJuIHRoaXMuX21hcFtpXSAhPT0gdW5kZWZpbmVkOwogICAgfSwKCiAgICBnZXQ6IGZ1bmN0aW9uKGkpIHsKICAgICAgcmV0dXJuIHRoaXMuX21hcFtpXTsKICAgIH0sCgogICAgY2hhckNvZGVPZjogZnVuY3Rpb24odikgewogICAgICByZXR1cm4gdGhpcy5fbWFwLmluZGV4T2Yodik7CiAgICB9CiAgfTsKCiAgcmV0dXJuIFRvVW5pY29kZU1hcDsKfSkoKTsKCnZhciBJZGVudGl0eVRvVW5pY29kZU1hcCA9IChmdW5jdGlvbiBJZGVudGl0eVRvVW5pY29kZU1hcENsb3N1cmUoKSB7CiAgZnVuY3Rpb24gSWRlbnRpdHlUb1VuaWNvZGVNYXAoZmlyc3RDaGFyLCBsYXN0Q2hhcikgewogICAgdGhpcy5maXJzdENoYXIgPSBmaXJzdENoYXI7CiAgICB0aGlzLmxhc3RDaGFyID0gbGFzdENoYXI7CiAgfQoKICBJZGVudGl0eVRvVW5pY29kZU1hcC5wcm90b3R5cGUgPSB7CiAgICBnZXQgbGVuZ3RoKCkgewogICAgICByZXR1cm4gKHRoaXMubGFzdENoYXIgKyAxKSAtIHRoaXMuZmlyc3RDaGFyOwogICAgfSwKCiAgICBmb3JFYWNoOiBmdW5jdGlvbiAoY2FsbGJhY2spIHsKICAgICAgZm9yICh2YXIgaSA9IHRoaXMuZmlyc3RDaGFyLCBpaSA9IHRoaXMubGFzdENoYXI7IGkgPD0gaWk7IGkrKykgewogICAgICAgIGNhbGxiYWNrKGksIGkpOwogICAgICB9CiAgICB9LAoKICAgIGhhczogZnVuY3Rpb24gKGkpIHsKICAgICAgcmV0dXJuIHRoaXMuZmlyc3RDaGFyIDw9IGkgJiYgaSA8PSB0aGlzLmxhc3RDaGFyOwogICAgfSwKCiAgICBnZXQ6IGZ1bmN0aW9uIChpKSB7CiAgICAgIGlmICh0aGlzLmZpcnN0Q2hhciA8PSBpICYmIGkgPD0gdGhpcy5sYXN0Q2hhcikgewogICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGkpOwogICAgICB9CiAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICB9LAoKICAgIGNoYXJDb2RlT2Y6IGZ1bmN0aW9uICh2KSB7CiAgICAgIGVycm9yKCdzaG91bGQgbm90IGNhbGwgLmNoYXJDb2RlT2YnKTsKICAgIH0KICB9OwoKICByZXR1cm4gSWRlbnRpdHlUb1VuaWNvZGVNYXA7Cn0pKCk7Cgp2YXIgT3BlblR5cGVGaWxlQnVpbGRlciA9IChmdW5jdGlvbiBPcGVuVHlwZUZpbGVCdWlsZGVyQ2xvc3VyZSgpIHsKICBmdW5jdGlvbiB3cml0ZUludDE2KGRlc3QsIG9mZnNldCwgbnVtKSB7CiAgICBkZXN0W29mZnNldF0gPSAobnVtID4+IDgpICYgMHhGRjsKICAgIGRlc3Rbb2Zmc2V0ICsgMV0gPSBudW0gJiAweEZGOwogIH0KCiAgZnVuY3Rpb24gd3JpdGVJbnQzMihkZXN0LCBvZmZzZXQsIG51bSkgewogICAgZGVzdFtvZmZzZXRdID0gKG51bSA+PiAyNCkgJiAweEZGOwogICAgZGVzdFtvZmZzZXQgKyAxXSA9IChudW0gPj4gMTYpICYgMHhGRjsKICAgIGRlc3Rbb2Zmc2V0ICsgMl0gPSAobnVtID4+IDgpICYgMHhGRjsKICAgIGRlc3Rbb2Zmc2V0ICsgM10gPSBudW0gJiAweEZGOwogIH0KCiAgZnVuY3Rpb24gd3JpdGVEYXRhKGRlc3QsIG9mZnNldCwgZGF0YSkgewogICAgdmFyIGksIGlpOwogICAgaWYgKGRhdGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7CiAgICAgIGRlc3Quc2V0KGRhdGEsIG9mZnNldCk7CiAgICB9IGVsc2UgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykgewogICAgICBmb3IgKGkgPSAwLCBpaSA9IGRhdGEubGVuZ3RoOyBpIDwgaWk7IGkrKykgewogICAgICAgIGRlc3Rbb2Zmc2V0KytdID0gZGF0YS5jaGFyQ29kZUF0KGkpICYgMHhGRjsKICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgLy8gdHJlYXRpbmcgZXZlcnl0aGluZyBlbHNlIGFzIGFycmF5CiAgICAgIGZvciAoaSA9IDAsIGlpID0gZGF0YS5sZW5ndGg7IGkgPCBpaTsgaSsrKSB7CiAgICAgICAgZGVzdFtvZmZzZXQrK10gPSBkYXRhW2ldICYgMHhGRjsKICAgICAgfQogICAgfQogIH0KCiAgZnVuY3Rpb24gT3BlblR5cGVGaWxlQnVpbGRlcihzZm50KSB7CiAgICB0aGlzLnNmbnQgPSBzZm50OwogICAgdGhpcy50YWJsZXMgPSBPYmplY3QuY3JlYXRlKG51bGwpOwogIH0KCiAgT3BlblR5cGVGaWxlQnVpbGRlci5nZXRTZWFyY2hQYXJhbXMgPQogICAgICBmdW5jdGlvbiBPcGVuVHlwZUZpbGVCdWlsZGVyX2dldFNlYXJjaFBhcmFtcyhlbnRyaWVzQ291bnQsIGVudHJ5U2l6ZSkgewogICAgdmFyIG1heFBvd2VyMiA9IDEsIGxvZzIgPSAwOwogICAgd2hpbGUgKChtYXhQb3dlcjIgXiBlbnRyaWVzQ291bnQpID4gbWF4UG93ZXIyKSB7CiAgICAgIG1heFBvd2VyMiA8PD0gMTsKICAgICAgbG9nMisrOwogICAgfQogICAgdmFyIHNlYXJjaFJhbmdlID0gbWF4UG93ZXIyICogZW50cnlTaXplOwogICAgcmV0dXJuIHsKICAgICAgcmFuZ2U6IHNlYXJjaFJhbmdlLAogICAgICBlbnRyeTogbG9nMiwKICAgICAgcmFuZ2VTaGlmdDogZW50cnlTaXplICogZW50cmllc0NvdW50IC0gc2VhcmNoUmFuZ2UKICAgIH07CiAgfTsKCiAgdmFyIE9URl9IRUFERVJfU0laRSA9IDEyOwogIHZhciBPVEZfVEFCTEVfRU5UUllfU0laRSA9IDE2OwoKICBPcGVuVHlwZUZpbGVCdWlsZGVyLnByb3RvdHlwZSA9IHsKICAgIHRvQXJyYXk6IGZ1bmN0aW9uIE9wZW5UeXBlRmlsZUJ1aWxkZXJfdG9BcnJheSgpIHsKICAgICAgdmFyIHNmbnQgPSB0aGlzLnNmbnQ7CgogICAgICAvLyBUYWJsZXMgbmVlZHMgdG8gYmUgd3JpdHRlbiBieSBhc2NlbmRhbnQgYWxwaGFiZXRpYyBvcmRlcgogICAgICB2YXIgdGFibGVzID0gdGhpcy50YWJsZXM7CiAgICAgIHZhciB0YWJsZXNOYW1lcyA9IE9iamVjdC5rZXlzKHRhYmxlcyk7CiAgICAgIHRhYmxlc05hbWVzLnNvcnQoKTsKICAgICAgdmFyIG51bVRhYmxlcyA9IHRhYmxlc05hbWVzLmxlbmd0aDsKCiAgICAgIHZhciBpLCBqLCBqaiwgdGFibGUsIHRhYmxlTmFtZTsKICAgICAgLy8gbGF5b3V0IHRoZSB0YWJsZXMgZGF0YQogICAgICB2YXIgb2Zmc2V0ID0gT1RGX0hFQURFUl9TSVpFICsgbnVtVGFibGVzICogT1RGX1RBQkxFX0VOVFJZX1NJWkU7CiAgICAgIHZhciB0YWJsZU9mZnNldHMgPSBbb2Zmc2V0XTsKICAgICAgZm9yIChpID0gMDsgaSA8IG51bVRhYmxlczsgaSsrKSB7CiAgICAgICAgdGFibGUgPSB0YWJsZXNbdGFibGVzTmFtZXNbaV1dOwogICAgICAgIHZhciBwYWRkZWRMZW5ndGggPSAoKHRhYmxlLmxlbmd0aCArIDMpICYgfjMpID4+PiAwOwogICAgICAgIG9mZnNldCArPSBwYWRkZWRMZW5ndGg7CiAgICAgICAgdGFibGVPZmZzZXRzLnB1c2gob2Zmc2V0KTsKICAgICAgfQoKICAgICAgdmFyIGZpbGUgPSBuZXcgVWludDhBcnJheShvZmZzZXQpOwogICAgICAvLyB3cml0ZSB0aGUgdGFibGUgZGF0YSBmaXJzdCAobW9zdGx5IGZvciBjaGVja3N1bSkKICAgICAgZm9yIChpID0gMDsgaSA8IG51bVRhYmxlczsgaSsrKSB7CiAgICAgICAgdGFibGUgPSB0YWJsZXNbdGFibGVzTmFtZXNbaV1dOwogICAgICAgIHdyaXRlRGF0YShmaWxlLCB0YWJsZU9mZnNldHNbaV0sIHRhYmxlKTsKICAgICAgfQoKICAgICAgLy8gc2ZudCB2ZXJzaW9uICg0IGJ5dGVzKQogICAgICBpZiAoc2ZudCA9PT0gJ3RydWUnKSB7CiAgICAgICAgLy8gV2luZG93cyBoYXRlcyB0aGUgTWFjIFRydWVUeXBlIHNmbnQgdmVyc2lvbiBudW1iZXIKICAgICAgICBzZm50ID0gc3RyaW5nMzIoMHgwMDAxMDAwMCk7CiAgICAgIH0KICAgICAgZmlsZVswXSA9IHNmbnQuY2hhckNvZGVBdCgwKSAmIDB4RkY7CiAgICAgIGZpbGVbMV0gPSBzZm50LmNoYXJDb2RlQXQoMSkgJiAweEZGOwogICAgICBmaWxlWzJdID0gc2ZudC5jaGFyQ29kZUF0KDIpICYgMHhGRjsKICAgICAgZmlsZVszXSA9IHNmbnQuY2hhckNvZGVBdCgzKSAmIDB4RkY7CgogICAgICAvLyBudW1UYWJsZXMgKDIgYnl0ZXMpCiAgICAgIHdyaXRlSW50MTYoZmlsZSwgNCwgbnVtVGFibGVzKTsKCiAgICAgIHZhciBzZWFyY2hQYXJhbXMgPSBPcGVuVHlwZUZpbGVCdWlsZGVyLmdldFNlYXJjaFBhcmFtcyhudW1UYWJsZXMsIDE2KTsKCiAgICAgIC8vIHNlYXJjaFJhbmdlICgyIGJ5dGVzKQogICAgICB3cml0ZUludDE2KGZpbGUsIDYsIHNlYXJjaFBhcmFtcy5yYW5nZSk7CiAgICAgIC8vIGVudHJ5U2VsZWN0b3IgKDIgYnl0ZXMpCiAgICAgIHdyaXRlSW50MTYoZmlsZSwgOCwgc2VhcmNoUGFyYW1zLmVudHJ5KTsKICAgICAgLy8gcmFuZ2VTaGlmdCAoMiBieXRlcykKICAgICAgd3JpdGVJbnQxNihmaWxlLCAxMCwgc2VhcmNoUGFyYW1zLnJhbmdlU2hpZnQpOwoKICAgICAgb2Zmc2V0ID0gT1RGX0hFQURFUl9TSVpFOwogICAgICAvLyB3cml0aW5nIHRhYmxlIGVudHJpZXMKICAgICAgZm9yIChpID0gMDsgaSA8IG51bVRhYmxlczsgaSsrKSB7CiAgICAgICAgdGFibGVOYW1lID0gdGFibGVzTmFtZXNbaV07CiAgICAgICAgZmlsZVtvZmZzZXRdID0gdGFibGVOYW1lLmNoYXJDb2RlQXQoMCkgJiAweEZGOwogICAgICAgIGZpbGVbb2Zmc2V0ICsgMV0gPSB0YWJsZU5hbWUuY2hhckNvZGVBdCgxKSAmIDB4RkY7CiAgICAgICAgZmlsZVtvZmZzZXQgKyAyXSA9IHRhYmxlTmFtZS5jaGFyQ29kZUF0KDIpICYgMHhGRjsKICAgICAgICBmaWxlW29mZnNldCArIDNdID0gdGFibGVOYW1lLmNoYXJDb2RlQXQoMykgJiAweEZGOwoKICAgICAgICAvLyBjaGVja3N1bQogICAgICAgIHZhciBjaGVja3N1bSA9IDA7CiAgICAgICAgZm9yIChqID0gdGFibGVPZmZzZXRzW2ldLCBqaiA9IHRhYmxlT2Zmc2V0c1tpICsgMV07IGogPCBqajsgaiArPSA0KSB7CiAgICAgICAgICB2YXIgcXVhZCA9IChmaWxlW2pdIDw8IDI0KSArIChmaWxlW2ogKyAxXSA8PCAxNikgKwogICAgICAgICAgICAgICAgICAgICAoZmlsZVtqICsgMl0gPDwgOCkgKyBmaWxlW2ogKyAzXTsKICAgICAgICAgIGNoZWNrc3VtID0gKGNoZWNrc3VtICsgcXVhZCkgfCAwOwogICAgICAgIH0KICAgICAgICB3cml0ZUludDMyKGZpbGUsIG9mZnNldCArIDQsIGNoZWNrc3VtKTsKCiAgICAgICAgLy8gb2Zmc2V0CiAgICAgICAgd3JpdGVJbnQzMihmaWxlLCBvZmZzZXQgKyA4LCB0YWJsZU9mZnNldHNbaV0pOwogICAgICAgIC8vIGxlbmd0aAogICAgICAgIHdyaXRlSW50MzIoZmlsZSwgb2Zmc2V0ICsgMTIsIHRhYmxlc1t0YWJsZU5hbWVdLmxlbmd0aCk7CgogICAgICAgIG9mZnNldCArPSBPVEZfVEFCTEVfRU5UUllfU0laRTsKICAgICAgfQogICAgICByZXR1cm4gZmlsZTsKICAgIH0sCgogICAgYWRkVGFibGU6IGZ1bmN0aW9uIE9wZW5UeXBlRmlsZUJ1aWxkZXJfYWRkVGFibGUodGFnLCBkYXRhKSB7CiAgICAgIGlmICh0YWcgaW4gdGhpcy50YWJsZXMpIHsKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RhYmxlICcgKyB0YWcgKyAnIGFscmVhZHkgZXhpc3RzJyk7CiAgICAgIH0KICAgICAgdGhpcy50YWJsZXNbdGFnXSA9IGRhdGE7CiAgICB9CiAgfTsKCiAgcmV0dXJuIE9wZW5UeXBlRmlsZUJ1aWxkZXI7Cn0pKCk7CgovKioKICogJ0ZvbnQnIGlzIHRoZSBjbGFzcyB0aGUgb3V0c2lkZSB3b3JsZCBzaG91bGQgdXNlLCBpdCBlbmNhcHN1bGF0ZSBhbGwgdGhlIGZvbnQKICogZGVjb2RpbmcgbG9naWNzIHdoYXRldmVyIHR5cGUgaXQgaXMgKGFzc3VtaW5nIHRoZSBmb250IHR5cGUgaXMgc3VwcG9ydGVkKS4KICoKICogRm9yIGV4YW1wbGUgdG8gcmVhZCBhIFR5cGUxIGZvbnQgYW5kIHRvIGF0dGFjaCBpdCB0byB0aGUgZG9jdW1lbnQ6CiAqICAgdmFyIHR5cGUxRm9udCA9IG5ldyBGb250KCJNeUZvbnROYW1lIiwgYmluYXJ5RmlsZSwgcHJvcGVydGllc09iamVjdCk7CiAqICAgdHlwZTFGb250LmJpbmQoKTsKICovCnZhciBGb250ID0gKGZ1bmN0aW9uIEZvbnRDbG9zdXJlKCkgewogIGZ1bmN0aW9uIEZvbnQobmFtZSwgZmlsZSwgcHJvcGVydGllcykgewogICAgdmFyIGNoYXJDb2RlLCBnbHlwaE5hbWUsIGZvbnRDaGFyOwoKICAgIHRoaXMubmFtZSA9IG5hbWU7CiAgICB0aGlzLmxvYWRlZE5hbWUgPSBwcm9wZXJ0aWVzLmxvYWRlZE5hbWU7CiAgICB0aGlzLmlzVHlwZTNGb250ID0gcHJvcGVydGllcy5pc1R5cGUzRm9udDsKICAgIHRoaXMuc2l6ZXMgPSBbXTsKCiAgICB0aGlzLmdseXBoQ2FjaGUgPSB7fTsKCiAgICB2YXIgbmFtZXMgPSBuYW1lLnNwbGl0KCcrJyk7CiAgICBuYW1lcyA9IG5hbWVzLmxlbmd0aCA+IDEgPyBuYW1lc1sxXSA6IG5hbWVzWzBdOwogICAgbmFtZXMgPSBuYW1lcy5zcGxpdCgvWy0sX10vZylbMF07CiAgICB0aGlzLmlzU2VyaWZGb250ID0gISEocHJvcGVydGllcy5mbGFncyAmIEZvbnRGbGFncy5TZXJpZik7CiAgICB0aGlzLmlzU3ltYm9saWNGb250ID0gISEocHJvcGVydGllcy5mbGFncyAmIEZvbnRGbGFncy5TeW1ib2xpYyk7CiAgICB0aGlzLmlzTW9ub3NwYWNlID0gISEocHJvcGVydGllcy5mbGFncyAmIEZvbnRGbGFncy5GaXhlZFBpdGNoKTsKCiAgICB2YXIgdHlwZSA9IHByb3BlcnRpZXMudHlwZTsKICAgIHZhciBzdWJ0eXBlID0gcHJvcGVydGllcy5zdWJ0eXBlOwogICAgdGhpcy50eXBlID0gdHlwZTsKCiAgICB0aGlzLmZhbGxiYWNrTmFtZSA9ICh0aGlzLmlzTW9ub3NwYWNlID8gJ21vbm9zcGFjZScgOgogICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaXNTZXJpZkZvbnQgPyAnc2VyaWYnIDogJ3NhbnMtc2VyaWYnKSk7CgogICAgdGhpcy5kaWZmZXJlbmNlcyA9IHByb3BlcnRpZXMuZGlmZmVyZW5jZXM7CiAgICB0aGlzLndpZHRocyA9IHByb3BlcnRpZXMud2lkdGhzOwogICAgdGhpcy5kZWZhdWx0V2lkdGggPSBwcm9wZXJ0aWVzLmRlZmF1bHRXaWR0aDsKICAgIHRoaXMuY29tcG9zaXRlID0gcHJvcGVydGllcy5jb21wb3NpdGU7CiAgICB0aGlzLndpZGVDaGFycyA9IHByb3BlcnRpZXMud2lkZUNoYXJzOwogICAgdGhpcy5jTWFwID0gcHJvcGVydGllcy5jTWFwOwogICAgdGhpcy5hc2NlbnQgPSBwcm9wZXJ0aWVzLmFzY2VudCAvIFBERl9HTFlQSF9TUEFDRV9VTklUUzsKICAgIHRoaXMuZGVzY2VudCA9IHByb3BlcnRpZXMuZGVzY2VudCAvIFBERl9HTFlQSF9TUEFDRV9VTklUUzsKICAgIHRoaXMuZm9udE1hdHJpeCA9IHByb3BlcnRpZXMuZm9udE1hdHJpeDsKCiAgICB0aGlzLnRvVW5pY29kZSA9IHByb3BlcnRpZXMudG9Vbmljb2RlID0gdGhpcy5idWlsZFRvVW5pY29kZShwcm9wZXJ0aWVzKTsKCiAgICB0aGlzLnRvRm9udENoYXIgPSBbXTsKCiAgICBpZiAocHJvcGVydGllcy50eXBlID09PSAnVHlwZTMnKSB7CiAgICAgIGZvciAoY2hhckNvZGUgPSAwOyBjaGFyQ29kZSA8IDI1NjsgY2hhckNvZGUrKykgewogICAgICAgIHRoaXMudG9Gb250Q2hhcltjaGFyQ29kZV0gPSAodGhpcy5kaWZmZXJlbmNlc1tjaGFyQ29kZV0gfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXMuZGVmYXVsdEVuY29kaW5nW2NoYXJDb2RlXSk7CiAgICAgIH0KICAgICAgdGhpcy5mb250VHlwZSA9IEZvbnRUeXBlLlRZUEUzOwogICAgICByZXR1cm47CiAgICB9CgogICAgdGhpcy5jaWRFbmNvZGluZyA9IHByb3BlcnRpZXMuY2lkRW5jb2Rpbmc7CiAgICB0aGlzLnZlcnRpY2FsID0gcHJvcGVydGllcy52ZXJ0aWNhbDsKICAgIGlmICh0aGlzLnZlcnRpY2FsKSB7CiAgICAgIHRoaXMudm1ldHJpY3MgPSBwcm9wZXJ0aWVzLnZtZXRyaWNzOwogICAgICB0aGlzLmRlZmF1bHRWTWV0cmljcyA9IHByb3BlcnRpZXMuZGVmYXVsdFZNZXRyaWNzOwogICAgfQoKICAgIGlmICghZmlsZSB8fCBmaWxlLmlzRW1wdHkpIHsKICAgICAgaWYgKGZpbGUpIHsKICAgICAgICAvLyBTb21lIGJhZCBQREYgZ2VuZXJhdG9ycyB3aWxsIGluY2x1ZGUgZW1wdHkgZm9udCBmaWxlcywKICAgICAgICAvLyBhdHRlbXB0aW5nIHRvIHJlY292ZXIgYnkgYXNzdW1pbmcgdGhhdCBubyBmaWxlIGV4aXN0cy4KICAgICAgICB3YXJuKCdGb250IGZpbGUgaXMgZW1wdHkgaW4gIicgKyBuYW1lICsgJyIgKCcgKyB0aGlzLmxvYWRlZE5hbWUgKyAnKScpOwogICAgICB9CgogICAgICB0aGlzLm1pc3NpbmdGaWxlID0gdHJ1ZTsKICAgICAgLy8gVGhlIGZpbGUgZGF0YSBpcyBub3Qgc3BlY2lmaWVkLiBUcnlpbmcgdG8gZml4IHRoZSBmb250IG5hbWUKICAgICAgLy8gdG8gYmUgdXNlZCB3aXRoIHRoZSBjYW52YXMuZm9udC4KICAgICAgdmFyIGZvbnROYW1lID0gbmFtZS5yZXBsYWNlKC9bLF9dL2csICctJyk7CiAgICAgIHZhciBpc1N0YW5kYXJkRm9udCA9ICEhc3RkRm9udE1hcFtmb250TmFtZV0gfHwKICAgICAgICAhIShub25TdGRGb250TWFwW2ZvbnROYW1lXSAmJiBzdGRGb250TWFwW25vblN0ZEZvbnRNYXBbZm9udE5hbWVdXSk7CiAgICAgIGZvbnROYW1lID0gc3RkRm9udE1hcFtmb250TmFtZV0gfHwgbm9uU3RkRm9udE1hcFtmb250TmFtZV0gfHwgZm9udE5hbWU7CgogICAgICB0aGlzLmJvbGQgPSAoZm9udE5hbWUuc2VhcmNoKC9ib2xkL2dpKSAhPT0gLTEpOwogICAgICB0aGlzLml0YWxpYyA9ICgoZm9udE5hbWUuc2VhcmNoKC9vYmxpcXVlL2dpKSAhPT0gLTEpIHx8CiAgICAgICAgICAgICAgICAgICAgIChmb250TmFtZS5zZWFyY2goL2l0YWxpYy9naSkgIT09IC0xKSk7CgogICAgICAvLyBVc2UgJ25hbWUnIGluc3RlYWQgb2YgJ2ZvbnROYW1lJyBoZXJlIGJlY2F1c2UgdGhlIG9yaWdpbmFsCiAgICAgIC8vIG5hbWUgQXJpYWxCbGFjayBmb3IgZXhhbXBsZSB3aWxsIGJlIHJlcGxhY2VkIGJ5IEhlbHZldGljYS4KICAgICAgdGhpcy5ibGFjayA9IChuYW1lLnNlYXJjaCgvQmxhY2svZykgIT09IC0xKTsKCiAgICAgIC8vIGlmIGF0IGxlYXN0IG9uZSB3aWR0aCBpcyBwcmVzZW50LCByZW1lYXN1cmUgYWxsIGNoYXJzIHdoZW4gZXhpc3RzCiAgICAgIHRoaXMucmVtZWFzdXJlID0gT2JqZWN0LmtleXModGhpcy53aWR0aHMpLmxlbmd0aCA+IDA7CiAgICAgIGlmIChpc1N0YW5kYXJkRm9udCAmJiB0eXBlID09PSAnQ0lERm9udFR5cGUyJyAmJgogICAgICAgICAgcHJvcGVydGllcy5jaWRFbmNvZGluZy5pbmRleE9mKCdJZGVudGl0eS0nKSA9PT0gMCkgewogICAgICAgIC8vIFN0YW5kYXJkIGZvbnRzIG1pZ2h0IGJlIGVtYmVkZGVkIGFzIENJRCBmb250IHdpdGhvdXQgZ2x5cGggbWFwcGluZy4KICAgICAgICAvLyBCdWlsZGluZyBvbmUgYmFzZWQgb24gR2x5cGhNYXBGb3JTdGFuZGFyZEZvbnRzLgogICAgICAgIHZhciBtYXAgPSBbXTsKICAgICAgICBmb3IgKHZhciBjb2RlIGluIEdseXBoTWFwRm9yU3RhbmRhcmRGb250cykgewogICAgICAgICAgbWFwWytjb2RlXSA9IEdseXBoTWFwRm9yU3RhbmRhcmRGb250c1tjb2RlXTsKICAgICAgICB9CiAgICAgICAgdmFyIGlzSWRlbnRpdHlVbmljb2RlID0gdGhpcy50b1VuaWNvZGUgaW5zdGFuY2VvZiBJZGVudGl0eVRvVW5pY29kZU1hcDsKICAgICAgICBpZiAoIWlzSWRlbnRpdHlVbmljb2RlKSB7CiAgICAgICAgICB0aGlzLnRvVW5pY29kZS5mb3JFYWNoKGZ1bmN0aW9uKGNoYXJDb2RlLCB1bmljb2RlQ2hhckNvZGUpIHsKICAgICAgICAgICAgbWFwWytjaGFyQ29kZV0gPSB1bmljb2RlQ2hhckNvZGU7CiAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgICAgdGhpcy50b0ZvbnRDaGFyID0gbWFwOwogICAgICAgIHRoaXMudG9Vbmljb2RlID0gbmV3IFRvVW5pY29kZU1hcChtYXApOwogICAgICB9IGVsc2UgaWYgKC9TeW1ib2wvaS50ZXN0KGZvbnROYW1lKSkgewogICAgICAgIHZhciBzeW1ib2xzID0gRW5jb2RpbmdzLlN5bWJvbFNldEVuY29kaW5nOwogICAgICAgIGZvciAoY2hhckNvZGUgaW4gc3ltYm9scykgewogICAgICAgICAgZm9udENoYXIgPSBHbHlwaHNVbmljb2RlW3N5bWJvbHNbY2hhckNvZGVdXTsKICAgICAgICAgIGlmICghZm9udENoYXIpIHsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICB9CiAgICAgICAgICB0aGlzLnRvRm9udENoYXJbY2hhckNvZGVdID0gZm9udENoYXI7CiAgICAgICAgfQogICAgICAgIGZvciAoY2hhckNvZGUgaW4gcHJvcGVydGllcy5kaWZmZXJlbmNlcykgewogICAgICAgICAgZm9udENoYXIgPSBHbHlwaHNVbmljb2RlW3Byb3BlcnRpZXMuZGlmZmVyZW5jZXNbY2hhckNvZGVdXTsKICAgICAgICAgIGlmICghZm9udENoYXIpIHsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICB9CiAgICAgICAgICB0aGlzLnRvRm9udENoYXJbY2hhckNvZGVdID0gZm9udENoYXI7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKC9EaW5nYmF0cy9pLnRlc3QoZm9udE5hbWUpKSB7CiAgICAgICAgaWYgKC9XaW5nZGluZ3MvaS50ZXN0KG5hbWUpKSB7CiAgICAgICAgICB3YXJuKCdXaW5nZGluZ3MgZm9udCB3aXRob3V0IGVtYmVkZGVkIGZvbnQgZmlsZSwgJyArCiAgICAgICAgICAgICAgICdmYWxsaW5nIGJhY2sgdG8gdGhlIFphcGZEaW5nYmF0cyBlbmNvZGluZy4nKTsKICAgICAgICB9CiAgICAgICAgdmFyIGRpbmdiYXRzID0gRW5jb2RpbmdzLlphcGZEaW5nYmF0c0VuY29kaW5nOwogICAgICAgIGZvciAoY2hhckNvZGUgaW4gZGluZ2JhdHMpIHsKICAgICAgICAgIGZvbnRDaGFyID0gRGluZ2JhdHNHbHlwaHNVbmljb2RlW2RpbmdiYXRzW2NoYXJDb2RlXV07CiAgICAgICAgICBpZiAoIWZvbnRDaGFyKSB7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgfQogICAgICAgICAgdGhpcy50b0ZvbnRDaGFyW2NoYXJDb2RlXSA9IGZvbnRDaGFyOwogICAgICAgIH0KICAgICAgICBmb3IgKGNoYXJDb2RlIGluIHByb3BlcnRpZXMuZGlmZmVyZW5jZXMpIHsKICAgICAgICAgIGZvbnRDaGFyID0gRGluZ2JhdHNHbHlwaHNVbmljb2RlW3Byb3BlcnRpZXMuZGlmZmVyZW5jZXNbY2hhckNvZGVdXTsKICAgICAgICAgIGlmICghZm9udENoYXIpIHsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICB9CiAgICAgICAgICB0aGlzLnRvRm9udENoYXJbY2hhckNvZGVdID0gZm9udENoYXI7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKGlzU3RhbmRhcmRGb250KSB7CiAgICAgICAgdGhpcy50b0ZvbnRDaGFyID0gW107CiAgICAgICAgZm9yIChjaGFyQ29kZSBpbiBwcm9wZXJ0aWVzLmRlZmF1bHRFbmNvZGluZykgewogICAgICAgICAgZ2x5cGhOYW1lID0gKHByb3BlcnRpZXMuZGlmZmVyZW5jZXNbY2hhckNvZGVdIHx8CiAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllcy5kZWZhdWx0RW5jb2RpbmdbY2hhckNvZGVdKTsKICAgICAgICAgIHRoaXMudG9Gb250Q2hhcltjaGFyQ29kZV0gPSBHbHlwaHNVbmljb2RlW2dseXBoTmFtZV07CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIHZhciB1bmljb2RlQ2hhckNvZGUsIG5vdENpZEZvbnQgPSAodHlwZS5pbmRleE9mKCdDSURGb250VHlwZScpID09PSAtMSk7CiAgICAgICAgdGhpcy50b1VuaWNvZGUuZm9yRWFjaChmdW5jdGlvbihjaGFyQ29kZSwgdW5pY29kZUNoYXJDb2RlKSB7CiAgICAgICAgICBpZiAobm90Q2lkRm9udCkgewogICAgICAgICAgICBnbHlwaE5hbWUgPSAocHJvcGVydGllcy5kaWZmZXJlbmNlc1tjaGFyQ29kZV0gfHwKICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXMuZGVmYXVsdEVuY29kaW5nW2NoYXJDb2RlXSk7CiAgICAgICAgICAgIHVuaWNvZGVDaGFyQ29kZSA9IChHbHlwaHNVbmljb2RlW2dseXBoTmFtZV0gfHwgdW5pY29kZUNoYXJDb2RlKTsKICAgICAgICAgIH0KICAgICAgICAgIHRoaXMudG9Gb250Q2hhcltjaGFyQ29kZV0gPSB1bmljb2RlQ2hhckNvZGU7CiAgICAgICAgfS5iaW5kKHRoaXMpKTsKICAgICAgfQogICAgICB0aGlzLmxvYWRlZE5hbWUgPSBmb250TmFtZS5zcGxpdCgnLScpWzBdOwogICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTsKICAgICAgdGhpcy5mb250VHlwZSA9IGdldEZvbnRUeXBlKHR5cGUsIHN1YnR5cGUpOwogICAgICByZXR1cm47CiAgICB9CgogICAgLy8gU29tZSBmb250cyBtaWdodCB1c2Ugd3JvbmcgZm9udCB0eXBlcyBmb3IgVHlwZTFDIG9yIENJREZvbnRUeXBlMEMKICAgIGlmIChzdWJ0eXBlID09PSAnVHlwZTFDJyAmJiAodHlwZSAhPT0gJ1R5cGUxJyAmJiB0eXBlICE9PSAnTU1UeXBlMScpKSB7CiAgICAgIC8vIFNvbWUgVHJ1ZVR5cGUgZm9udHMgYnkgbWlzdGFrZSBjbGFpbSBUeXBlMUMKICAgICAgaWYgKGlzVHJ1ZVR5cGVGaWxlKGZpbGUpKSB7CiAgICAgICAgc3VidHlwZSA9ICdUcnVlVHlwZSc7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdHlwZSA9ICdUeXBlMSc7CiAgICAgIH0KICAgIH0KICAgIGlmIChzdWJ0eXBlID09PSAnQ0lERm9udFR5cGUwQycgJiYgdHlwZSAhPT0gJ0NJREZvbnRUeXBlMCcpIHsKICAgICAgdHlwZSA9ICdDSURGb250VHlwZTAnOwogICAgfQogICAgaWYgKHN1YnR5cGUgPT09ICdPcGVuVHlwZScpIHsKICAgICAgdHlwZSA9ICdPcGVuVHlwZSc7CiAgICB9CiAgICAvLyBTb21lIENJREZvbnRUeXBlMEMgZm9udHMgYnkgbWlzdGFrZSBjbGFpbSBDSURGb250VHlwZTAuCiAgICBpZiAodHlwZSA9PT0gJ0NJREZvbnRUeXBlMCcpIHsKICAgICAgc3VidHlwZSA9IGlzVHlwZTFGaWxlKGZpbGUpID8gJ0NJREZvbnRUeXBlMCcgOiAnQ0lERm9udFR5cGUwQyc7CiAgICB9CgogICAgdmFyIGRhdGE7CiAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgY2FzZSAnTU1UeXBlMSc6CiAgICAgICAgaW5mbygnTU1UeXBlMSBmb250ICgnICsgbmFtZSArICcpLCBmYWxsaW5nIGJhY2sgdG8gVHlwZTEuJyk7CiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqLwogICAgICBjYXNlICdUeXBlMSc6CiAgICAgIGNhc2UgJ0NJREZvbnRUeXBlMCc6CiAgICAgICAgdGhpcy5taW1ldHlwZSA9ICdmb250L29wZW50eXBlJzsKCiAgICAgICAgdmFyIGNmZiA9IChzdWJ0eXBlID09PSAnVHlwZTFDJyB8fCBzdWJ0eXBlID09PSAnQ0lERm9udFR5cGUwQycpID8KICAgICAgICAgIG5ldyBDRkZGb250KGZpbGUsIHByb3BlcnRpZXMpIDogbmV3IFR5cGUxRm9udChuYW1lLCBmaWxlLCBwcm9wZXJ0aWVzKTsKCiAgICAgICAgYWRqdXN0V2lkdGhzKHByb3BlcnRpZXMpOwoKICAgICAgICAvLyBXcmFwIHRoZSBDRkYgZGF0YSBpbnNpZGUgYW4gT1RGIGZvbnQgZmlsZQogICAgICAgIGRhdGEgPSB0aGlzLmNvbnZlcnQobmFtZSwgY2ZmLCBwcm9wZXJ0aWVzKTsKICAgICAgICBicmVhazsKCiAgICAgIGNhc2UgJ09wZW5UeXBlJzoKICAgICAgY2FzZSAnVHJ1ZVR5cGUnOgogICAgICBjYXNlICdDSURGb250VHlwZTInOgogICAgICAgIHRoaXMubWltZXR5cGUgPSAnZm9udC9vcGVudHlwZSc7CgogICAgICAgIC8vIFJlcGFpciB0aGUgVHJ1ZVR5cGUgZmlsZS4gSXQgaXMgY2FuIGJlIGRhbWFnZWQgaW4gdGhlIHBvaW50IG9mCiAgICAgICAgLy8gdmlldyBvZiB0aGUgc2FuaXRpemVyCiAgICAgICAgZGF0YSA9IHRoaXMuY2hlY2tBbmRSZXBhaXIobmFtZSwgZmlsZSwgcHJvcGVydGllcyk7CiAgICAgICAgaWYgKHRoaXMuaXNPcGVuVHlwZSkgewogICAgICAgICAgdHlwZSA9ICdPcGVuVHlwZSc7CiAgICAgICAgfQogICAgICAgIGJyZWFrOwoKICAgICAgZGVmYXVsdDoKICAgICAgICBlcnJvcignRm9udCAnICsgdHlwZSArICcgaXMgbm90IHN1cHBvcnRlZCcpOwogICAgICAgIGJyZWFrOwogICAgfQoKICAgIHRoaXMuZGF0YSA9IGRhdGE7CiAgICB0aGlzLmZvbnRUeXBlID0gZ2V0Rm9udFR5cGUodHlwZSwgc3VidHlwZSk7CgogICAgLy8gVHJhbnNmZXIgc29tZSBwcm9wZXJ0aWVzIGFnYWluIHRoYXQgY291bGQgY2hhbmdlIGR1cmluZyBmb250IGNvbnZlcnNpb24KICAgIHRoaXMuZm9udE1hdHJpeCA9IHByb3BlcnRpZXMuZm9udE1hdHJpeDsKICAgIHRoaXMud2lkdGhzID0gcHJvcGVydGllcy53aWR0aHM7CiAgICB0aGlzLmRlZmF1bHRXaWR0aCA9IHByb3BlcnRpZXMuZGVmYXVsdFdpZHRoOwogICAgdGhpcy5lbmNvZGluZyA9IHByb3BlcnRpZXMuYmFzZUVuY29kaW5nOwogICAgdGhpcy5zZWFjTWFwID0gcHJvcGVydGllcy5zZWFjTWFwOwoKICAgIHRoaXMubG9hZGluZyA9IHRydWU7CiAgfQoKICBGb250LmdldEZvbnRJRCA9IChmdW5jdGlvbiAoKSB7CiAgICB2YXIgSUQgPSAxOwogICAgcmV0dXJuIGZ1bmN0aW9uIEZvbnRfZ2V0Rm9udElEKCkgewogICAgICByZXR1cm4gU3RyaW5nKElEKyspOwogICAgfTsKICB9KSgpOwoKICBmdW5jdGlvbiBpbnQxNihiMCwgYjEpIHsKICAgIHJldHVybiAoYjAgPDwgOCkgKyBiMTsKICB9CgogIGZ1bmN0aW9uIGludDMyKGIwLCBiMSwgYjIsIGIzKSB7CiAgICByZXR1cm4gKGIwIDw8IDI0KSArIChiMSA8PCAxNikgKyAoYjIgPDwgOCkgKyBiMzsKICB9CgogIGZ1bmN0aW9uIHN0cmluZzE2KHZhbHVlKSB7CiAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSgodmFsdWUgPj4gOCkgJiAweGZmLCB2YWx1ZSAmIDB4ZmYpOwogIH0KCiAgZnVuY3Rpb24gc2FmZVN0cmluZzE2KHZhbHVlKSB7CiAgICAvLyBjbGFtcCB2YWx1ZSB0byB0aGUgMTYtYml0IGludCByYW5nZQogICAgdmFsdWUgPSAodmFsdWUgPiAweDdGRkYgPyAweDdGRkYgOiAodmFsdWUgPCAtMHg4MDAwID8gLTB4ODAwMCA6IHZhbHVlKSk7CiAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSgodmFsdWUgPj4gOCkgJiAweGZmLCB2YWx1ZSAmIDB4ZmYpOwogIH0KCiAgZnVuY3Rpb24gaXNUcnVlVHlwZUZpbGUoZmlsZSkgewogICAgdmFyIGhlYWRlciA9IGZpbGUucGVla0J5dGVzKDQpOwogICAgcmV0dXJuIHJlYWRVaW50MzIoaGVhZGVyLCAwKSA9PT0gMHgwMDAxMDAwMDsKICB9CgogIGZ1bmN0aW9uIGlzVHlwZTFGaWxlKGZpbGUpIHsKICAgIHZhciBoZWFkZXIgPSBmaWxlLnBlZWtCeXRlcygyKTsKICAgIC8vIEFsbCBUeXBlMSBmb250IHByb2dyYW1zIG11c3QgYmVnaW4gd2l0aCB0aGUgY29tbWVudCAnJSEnICgweDI1ICsgMHgyMSkuCiAgICBpZiAoaGVhZGVyWzBdID09PSAweDI1ICYmIGhlYWRlclsxXSA9PT0gMHgyMSkgewogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIC8vIC4uLiBvYnZpb3VzbHkgc29tZSBmb250cyB2aW9sYXRlIHRoYXQgcGFydCBvZiB0aGUgc3BlY2lmaWNhdGlvbiwKICAgIC8vIHBsZWFzZSByZWZlciB0byB0aGUgY29tbWVudCBpbiB8VHlwZTFGb250fCBiZWxvdy4KICAgIGlmIChoZWFkZXJbMF0gPT09IDB4ODAgJiYgaGVhZGVyWzFdID09PSAweDAxKSB7IC8vIHBmYiBmaWxlIGhlYWRlci4KICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKICAvKioKICAgKiBIZWxwZXIgZnVuY3Rpb24gZm9yIHxhZGp1c3RNYXBwaW5nfC4KICAgKiBAcmV0dXJuIHtib29sZWFufQogICAqLwogIGZ1bmN0aW9uIGlzUHJvYmxlbWF0aWNVbmljb2RlTG9jYXRpb24oY29kZSkgewogICAgaWYgKGNvZGUgPD0gMHgxRikgeyAvLyBDb250cm9sIGNoYXJzCiAgICAgIHJldHVybiB0cnVlOwogICAgfQogICAgaWYgKGNvZGUgPj0gMHg4MCAmJiBjb2RlIDw9IDB4OUYpIHsgLy8gQ29udHJvbCBjaGFycwogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIGlmICgoY29kZSA+PSAweDIwMDAgJiYgY29kZSA8PSAweDIwMEYpIHx8IC8vIEdlbmVyYWwgcHVuY3R1YXRpb24gY2hhcnMKICAgICAgICAoY29kZSA+PSAweDIwMjggJiYgY29kZSA8PSAweDIwMkYpIHx8CiAgICAgICAgKGNvZGUgPj0gMHgyMDYwICYmIGNvZGUgPD0gMHgyMDZGKSkgewogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIGlmIChjb2RlID49IDB4RkZGMCAmJiBjb2RlIDw9IDB4RkZGRikgeyAvLyBTcGVjaWFscyBVbmljb2RlIGJsb2NrCiAgICAgIHJldHVybiB0cnVlOwogICAgfQogICAgc3dpdGNoIChjb2RlKSB7CiAgICAgIGNhc2UgMHg3RjogLy8gQ29udHJvbCBjaGFyCiAgICAgIGNhc2UgMHhBMDogLy8gTm9uIGJyZWFraW5nIHNwYWNlCiAgICAgIGNhc2UgMHhBRDogLy8gU29mdCBoeXBoZW4KICAgICAgY2FzZSAweDBFMzM6IC8vIFRoYWkgY2hhcmFjdGVyIFNBUkEgQU0KICAgICAgY2FzZSAweDIwMTE6IC8vIE5vbiBicmVha2luZyBoeXBoZW4KICAgICAgY2FzZSAweDIwNUY6IC8vIE1lZGl1bSBtYXRoZW1hdGljYWwgc3BhY2UKICAgICAgY2FzZSAweDI1Q0M6IC8vIERvdHRlZCBjaXJjbGUgKGNvbWJpbmluZyBtYXJrKQogICAgICAgIHJldHVybiB0cnVlOwogICAgfQogICAgcmV0dXJuIGZhbHNlOwogIH0KCiAgLyoqCiAgICogUmVidWlsZHMgdGhlIGNoYXIgY29kZSB0byBnbHlwaCBJRCBtYXAgYnkgdHJ5aW5nIHRvIHJlcGxhY2UgdGhlIGNoYXIgY29kZXMKICAgKiB3aXRoIHRoZWlyIHVuaWNvZGUgdmFsdWUuIEl0IGFsc28gbW92ZXMgY2hhciBjb2RlcyB0aGF0IGFyZSBpbiBrbm93bgogICAqIHByb2JsZW1hdGljIGxvY2F0aW9ucy4KICAgKiBAcmV0dXJuIHtPYmplY3R9IFR3byBwcm9wZXJ0aWVzOgogICAqICd0b0ZvbnRDaGFyJyAtIG1hcHMgb3JpZ2luYWwgY2hhciBjb2Rlcyh0aGUgdmFsdWUgdGhhdCB3aWxsIGJlIHJlYWQKICAgKiBmcm9tIGNvbW1hbmRzIHN1Y2ggYXMgc2hvdyB0ZXh0KSB0byB0aGUgY2hhciBjb2RlcyB0aGF0IHdpbGwgYmUgdXNlZCBpbiB0aGUKICAgKiBmb250IHRoYXQgd2UgYnVpbGQKICAgKiAnY2hhckNvZGVUb0dseXBoSWQnIC0gbWFwcyB0aGUgbmV3IGZvbnQgY2hhciBjb2RlcyB0byBnbHlwaCBpZHMKICAgKi8KICBmdW5jdGlvbiBhZGp1c3RNYXBwaW5nKGNoYXJDb2RlVG9HbHlwaElkLCBwcm9wZXJ0aWVzKSB7CiAgICB2YXIgdG9Vbmljb2RlID0gcHJvcGVydGllcy50b1VuaWNvZGU7CiAgICB2YXIgaXNTeW1ib2xpYyA9ICEhKHByb3BlcnRpZXMuZmxhZ3MgJiBGb250RmxhZ3MuU3ltYm9saWMpOwogICAgdmFyIGlzSWRlbnRpdHlVbmljb2RlID0KICAgICAgcHJvcGVydGllcy50b1VuaWNvZGUgaW5zdGFuY2VvZiBJZGVudGl0eVRvVW5pY29kZU1hcDsKICAgIHZhciBuZXdNYXAgPSBPYmplY3QuY3JlYXRlKG51bGwpOwogICAgdmFyIHRvRm9udENoYXIgPSBbXTsKICAgIHZhciB1c2VkRm9udENoYXJDb2RlcyA9IFtdOwogICAgdmFyIG5leHRBdmFpbGFibGVGb250Q2hhckNvZGUgPSBQUklWQVRFX1VTRV9PRkZTRVRfU1RBUlQ7CiAgICBmb3IgKHZhciBvcmlnaW5hbENoYXJDb2RlIGluIGNoYXJDb2RlVG9HbHlwaElkKSB7CiAgICAgIG9yaWdpbmFsQ2hhckNvZGUgfD0gMDsKICAgICAgdmFyIGdseXBoSWQgPSBjaGFyQ29kZVRvR2x5cGhJZFtvcmlnaW5hbENoYXJDb2RlXTsKICAgICAgdmFyIGZvbnRDaGFyQ29kZSA9IG9yaWdpbmFsQ2hhckNvZGU7CiAgICAgIC8vIEZpcnN0IHRyeSB0byBtYXAgdGhlIHZhbHVlIHRvIGEgdW5pY29kZSBwb3NpdGlvbiBpZiBhIG5vbiBpZGVudGl0eSBtYXAKICAgICAgLy8gd2FzIGNyZWF0ZWQuCiAgICAgIGlmICghaXNJZGVudGl0eVVuaWNvZGUgJiYgdG9Vbmljb2RlLmhhcyhvcmlnaW5hbENoYXJDb2RlKSkgewogICAgICAgIHZhciB1bmljb2RlID0gdG9Vbmljb2RlLmdldChmb250Q2hhckNvZGUpOwogICAgICAgIC8vIFRPRE86IFRyeSB0byBtYXAgbGlnYXR1cmVzIHRvIHRoZSBjb3JyZWN0IHNwb3QuCiAgICAgICAgaWYgKHVuaWNvZGUubGVuZ3RoID09PSAxKSB7CiAgICAgICAgICBmb250Q2hhckNvZGUgPSB1bmljb2RlLmNoYXJDb2RlQXQoMCk7CiAgICAgICAgfQogICAgICB9CiAgICAgIC8vIFRyeSB0byBtb3ZlIGNvbnRyb2wgY2hhcmFjdGVycywgc3BlY2lhbCBjaGFyYWN0ZXJzIGFuZCBhbHJlYWR5IG1hcHBlZAogICAgICAvLyBjaGFyYWN0ZXJzIHRvIHRoZSBwcml2YXRlIHVzZSBhcmVhIHNpbmNlIHRoZXkgd2lsbCBub3QgYmUgZHJhd24gYnkKICAgICAgLy8gY2FudmFzIGlmIGxlZnQgaW4gdGhlaXIgY3VycmVudCBwb3NpdGlvbi4gQWxzbywgbW92ZSBjaGFyYWN0ZXJzIGlmIHRoZQogICAgICAvLyBmb250IHdhcyBzeW1ib2xpYyBhbmQgdGhlcmUgaXMgb25seSBhbiBpZGVudGl0eSB1bmljb2RlIG1hcCBzaW5jZSB0aGUKICAgICAgLy8gY2hhcmFjdGVycyBwcm9iYWJseSBhcmVuJ3QgaW4gdGhlIGNvcnJlY3QgcG9zaXRpb24gKGZpeGVzIGFuIGlzc3VlCiAgICAgIC8vIHdpdGggZmlyZWZveCBhbmQgdGh1bHV0aGZvbnQpLgogICAgICBpZiAoKHVzZWRGb250Q2hhckNvZGVzW2ZvbnRDaGFyQ29kZV0gIT09IHVuZGVmaW5lZCB8fAogICAgICAgICAgIGlzUHJvYmxlbWF0aWNVbmljb2RlTG9jYXRpb24oZm9udENoYXJDb2RlKSB8fAogICAgICAgICAgIChpc1N5bWJvbGljICYmIGlzSWRlbnRpdHlVbmljb2RlKSkgJiYKICAgICAgICAgIG5leHRBdmFpbGFibGVGb250Q2hhckNvZGUgPD0gUFJJVkFURV9VU0VfT0ZGU0VUX0VORCkgeyAvLyBSb29tIGxlZnQuCiAgICAgICAgLy8gTG9vcCB0byB0cnkgYW5kIGZpbmQgYSBmcmVlIHNwb3QgaW4gdGhlIHByaXZhdGUgdXNlIGFyZWEuCiAgICAgICAgZG8gewogICAgICAgICAgZm9udENoYXJDb2RlID0gbmV4dEF2YWlsYWJsZUZvbnRDaGFyQ29kZSsrOwoKICAgICAgICAgIGlmIChTS0lQX1BSSVZBVEVfVVNFX1JBTkdFX0YwMDBfVE9fRjAxRiAmJiBmb250Q2hhckNvZGUgPT09IDB4RjAwMCkgewogICAgICAgICAgICBmb250Q2hhckNvZGUgPSAweEYwMjA7CiAgICAgICAgICAgIG5leHRBdmFpbGFibGVGb250Q2hhckNvZGUgPSBmb250Q2hhckNvZGUgKyAxOwogICAgICAgICAgfQoKICAgICAgICB9IHdoaWxlICh1c2VkRm9udENoYXJDb2Rlc1tmb250Q2hhckNvZGVdICE9PSB1bmRlZmluZWQgJiYKICAgICAgICAgICAgICAgICBuZXh0QXZhaWxhYmxlRm9udENoYXJDb2RlIDw9IFBSSVZBVEVfVVNFX09GRlNFVF9FTkQpOwogICAgICB9CgogICAgICBuZXdNYXBbZm9udENoYXJDb2RlXSA9IGdseXBoSWQ7CiAgICAgIHRvRm9udENoYXJbb3JpZ2luYWxDaGFyQ29kZV0gPSBmb250Q2hhckNvZGU7CiAgICAgIHVzZWRGb250Q2hhckNvZGVzW2ZvbnRDaGFyQ29kZV0gPSB0cnVlOwogICAgfQogICAgcmV0dXJuIHsKICAgICAgdG9Gb250Q2hhcjogdG9Gb250Q2hhciwKICAgICAgY2hhckNvZGVUb0dseXBoSWQ6IG5ld01hcCwKICAgICAgbmV4dEF2YWlsYWJsZUZvbnRDaGFyQ29kZTogbmV4dEF2YWlsYWJsZUZvbnRDaGFyQ29kZQogICAgfTsKICB9CgogIGZ1bmN0aW9uIGdldFJhbmdlcyhnbHlwaHMpIHsKICAgIC8vIEFycmF5LnNvcnQoKSBzb3J0cyBieSBjaGFyYWN0ZXJzLCBub3QgbnVtZXJpY2FsbHksIHNvIGNvbnZlcnQgdG8gYW4KICAgIC8vIGFycmF5IG9mIGNoYXJhY3RlcnMuCiAgICB2YXIgY29kZXMgPSBbXTsKICAgIGZvciAodmFyIGNoYXJDb2RlIGluIGdseXBocykgewogICAgICBjb2Rlcy5wdXNoKHsgZm9udENoYXJDb2RlOiBjaGFyQ29kZSB8IDAsIGdseXBoSWQ6IGdseXBoc1tjaGFyQ29kZV0gfSk7CiAgICB9CiAgICBjb2Rlcy5zb3J0KGZ1bmN0aW9uIGZvbnRHZXRSYW5nZXNTb3J0KGEsIGIpIHsKICAgICAgcmV0dXJuIGEuZm9udENoYXJDb2RlIC0gYi5mb250Q2hhckNvZGU7CiAgICB9KTsKCiAgICAvLyBTcGxpdCB0aGUgc29ydGVkIGNvZGVzIGludG8gcmFuZ2VzLgogICAgdmFyIHJhbmdlcyA9IFtdOwogICAgdmFyIGxlbmd0aCA9IGNvZGVzLmxlbmd0aDsKICAgIGZvciAodmFyIG4gPSAwOyBuIDwgbGVuZ3RoOyApIHsKICAgICAgdmFyIHN0YXJ0ID0gY29kZXNbbl0uZm9udENoYXJDb2RlOwogICAgICB2YXIgY29kZUluZGljZXMgPSBbY29kZXNbbl0uZ2x5cGhJZF07CiAgICAgICsrbjsKICAgICAgdmFyIGVuZCA9IHN0YXJ0OwogICAgICB3aGlsZSAobiA8IGxlbmd0aCAmJiBlbmQgKyAxID09PSBjb2Rlc1tuXS5mb250Q2hhckNvZGUpIHsKICAgICAgICBjb2RlSW5kaWNlcy5wdXNoKGNvZGVzW25dLmdseXBoSWQpOwogICAgICAgICsrZW5kOwogICAgICAgICsrbjsKICAgICAgICBpZiAoZW5kID09PSAweEZGRkYpIHsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgfQogICAgICByYW5nZXMucHVzaChbc3RhcnQsIGVuZCwgY29kZUluZGljZXNdKTsKICAgIH0KCiAgICByZXR1cm4gcmFuZ2VzOwogIH0KCiAgZnVuY3Rpb24gY3JlYXRlQ21hcFRhYmxlKGdseXBocykgewogICAgdmFyIHJhbmdlcyA9IGdldFJhbmdlcyhnbHlwaHMpOwogICAgdmFyIG51bVRhYmxlcyA9IHJhbmdlc1tyYW5nZXMubGVuZ3RoIC0gMV1bMV0gPiAweEZGRkYgPyAyIDogMTsKICAgIHZhciBjbWFwID0gJ1x4MDBceDAwJyArIC8vIHZlcnNpb24KICAgICAgICAgICAgICAgc3RyaW5nMTYobnVtVGFibGVzKSArICAvLyBudW1UYWJsZXMKICAgICAgICAgICAgICAgJ1x4MDBceDAzJyArIC8vIHBsYXRmb3JtSUQKICAgICAgICAgICAgICAgJ1x4MDBceDAxJyArIC8vIGVuY29kaW5nSUQKICAgICAgICAgICAgICAgc3RyaW5nMzIoNCArIG51bVRhYmxlcyAqIDgpOyAvLyBzdGFydCBvZiB0aGUgdGFibGUgcmVjb3JkCgogICAgdmFyIGksIGlpLCBqLCBqajsKICAgIGZvciAoaSA9IHJhbmdlcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkgewogICAgICBpZiAocmFuZ2VzW2ldWzBdIDw9IDB4RkZGRikgeyBicmVhazsgfQogICAgfQogICAgdmFyIGJtcExlbmd0aCA9IGkgKyAxOwoKICAgIGlmIChyYW5nZXNbaV1bMF0gPCAweEZGRkYgJiYgcmFuZ2VzW2ldWzFdID09PSAweEZGRkYpIHsKICAgICAgcmFuZ2VzW2ldWzFdID0gMHhGRkZFOwogICAgfQogICAgdmFyIHRyYWlsaW5nUmFuZ2VzQ291bnQgPSByYW5nZXNbaV1bMV0gPCAweEZGRkYgPyAxIDogMDsKICAgIHZhciBzZWdDb3VudCA9IGJtcExlbmd0aCArIHRyYWlsaW5nUmFuZ2VzQ291bnQ7CiAgICB2YXIgc2VhcmNoUGFyYW1zID0gT3BlblR5cGVGaWxlQnVpbGRlci5nZXRTZWFyY2hQYXJhbXMoc2VnQ291bnQsIDIpOwoKICAgIC8vIEZpbGwgdXAgdGhlIDQgcGFyYWxsZWwgYXJyYXlzIGRlc2NyaWJpbmcgdGhlIHNlZ21lbnRzLgogICAgdmFyIHN0YXJ0Q291bnQgPSAnJzsKICAgIHZhciBlbmRDb3VudCA9ICcnOwogICAgdmFyIGlkRGVsdGFzID0gJyc7CiAgICB2YXIgaWRSYW5nZU9mZnNldHMgPSAnJzsKICAgIHZhciBnbHlwaHNJZHMgPSAnJzsKICAgIHZhciBiaWFzID0gMDsKCiAgICB2YXIgcmFuZ2UsIHN0YXJ0LCBlbmQsIGNvZGVzOwogICAgZm9yIChpID0gMCwgaWkgPSBibXBMZW5ndGg7IGkgPCBpaTsgaSsrKSB7CiAgICAgIHJhbmdlID0gcmFuZ2VzW2ldOwogICAgICBzdGFydCA9IHJhbmdlWzBdOwogICAgICBlbmQgPSByYW5nZVsxXTsKICAgICAgc3RhcnRDb3VudCArPSBzdHJpbmcxNihzdGFydCk7CiAgICAgIGVuZENvdW50ICs9IHN0cmluZzE2KGVuZCk7CiAgICAgIGNvZGVzID0gcmFuZ2VbMl07CiAgICAgIHZhciBjb250aWd1b3VzID0gdHJ1ZTsKICAgICAgZm9yIChqID0gMSwgamogPSBjb2Rlcy5sZW5ndGg7IGogPCBqajsgKytqKSB7CiAgICAgICAgaWYgKGNvZGVzW2pdICE9PSBjb2Rlc1tqIC0gMV0gKyAxKSB7CiAgICAgICAgICBjb250aWd1b3VzID0gZmFsc2U7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgIH0KICAgICAgaWYgKCFjb250aWd1b3VzKSB7CiAgICAgICAgdmFyIG9mZnNldCA9IChzZWdDb3VudCAtIGkpICogMiArIGJpYXMgKiAyOwogICAgICAgIGJpYXMgKz0gKGVuZCAtIHN0YXJ0ICsgMSk7CgogICAgICAgIGlkRGVsdGFzICs9IHN0cmluZzE2KDApOwogICAgICAgIGlkUmFuZ2VPZmZzZXRzICs9IHN0cmluZzE2KG9mZnNldCk7CgogICAgICAgIGZvciAoaiA9IDAsIGpqID0gY29kZXMubGVuZ3RoOyBqIDwgamo7ICsraikgewogICAgICAgICAgZ2x5cGhzSWRzICs9IHN0cmluZzE2KGNvZGVzW2pdKTsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdmFyIHN0YXJ0Q29kZSA9IGNvZGVzWzBdOwoKICAgICAgICBpZERlbHRhcyArPSBzdHJpbmcxNigoc3RhcnRDb2RlIC0gc3RhcnQpICYgMHhGRkZGKTsKICAgICAgICBpZFJhbmdlT2Zmc2V0cyArPSBzdHJpbmcxNigwKTsKICAgICAgfQogICAgfQoKICAgIGlmICh0cmFpbGluZ1Jhbmdlc0NvdW50ID4gMCkgewogICAgICBlbmRDb3VudCArPSAnXHhGRlx4RkYnOwogICAgICBzdGFydENvdW50ICs9ICdceEZGXHhGRic7CiAgICAgIGlkRGVsdGFzICs9ICdceDAwXHgwMSc7CiAgICAgIGlkUmFuZ2VPZmZzZXRzICs9ICdceDAwXHgwMCc7CiAgICB9CgogICAgdmFyIGZvcm1hdDMxNCA9ICdceDAwXHgwMCcgKyAvLyBsYW5ndWFnZQogICAgICAgICAgICAgICAgICAgIHN0cmluZzE2KDIgKiBzZWdDb3VudCkgKwogICAgICAgICAgICAgICAgICAgIHN0cmluZzE2KHNlYXJjaFBhcmFtcy5yYW5nZSkgKwogICAgICAgICAgICAgICAgICAgIHN0cmluZzE2KHNlYXJjaFBhcmFtcy5lbnRyeSkgKwogICAgICAgICAgICAgICAgICAgIHN0cmluZzE2KHNlYXJjaFBhcmFtcy5yYW5nZVNoaWZ0KSArCiAgICAgICAgICAgICAgICAgICAgZW5kQ291bnQgKyAnXHgwMFx4MDAnICsgc3RhcnRDb3VudCArCiAgICAgICAgICAgICAgICAgICAgaWREZWx0YXMgKyBpZFJhbmdlT2Zmc2V0cyArIGdseXBoc0lkczsKCiAgICB2YXIgZm9ybWF0MzEwMTIgPSAnJzsKICAgIHZhciBoZWFkZXIzMTAxMiA9ICcnOwogICAgaWYgKG51bVRhYmxlcyA+IDEpIHsKICAgICAgY21hcCArPSAnXHgwMFx4MDMnICsgLy8gcGxhdGZvcm1JRAogICAgICAgICAgICAgICdceDAwXHgwQScgKyAvLyBlbmNvZGluZ0lECiAgICAgICAgICAgICAgc3RyaW5nMzIoNCArIG51bVRhYmxlcyAqIDggKwogICAgICAgICAgICAgICAgICAgICAgIDQgKyBmb3JtYXQzMTQubGVuZ3RoKTsgLy8gc3RhcnQgb2YgdGhlIHRhYmxlIHJlY29yZAogICAgICBmb3JtYXQzMTAxMiA9ICcnOwogICAgICBmb3IgKGkgPSAwLCBpaSA9IHJhbmdlcy5sZW5ndGg7IGkgPCBpaTsgaSsrKSB7CiAgICAgICAgcmFuZ2UgPSByYW5nZXNbaV07CiAgICAgICAgc3RhcnQgPSByYW5nZVswXTsKICAgICAgICBjb2RlcyA9IHJhbmdlWzJdOwogICAgICAgIHZhciBjb2RlID0gY29kZXNbMF07CiAgICAgICAgZm9yIChqID0gMSwgamogPSBjb2Rlcy5sZW5ndGg7IGogPCBqajsgKytqKSB7CiAgICAgICAgICBpZiAoY29kZXNbal0gIT09IGNvZGVzW2ogLSAxXSArIDEpIHsKICAgICAgICAgICAgZW5kID0gcmFuZ2VbMF0gKyBqIC0gMTsKICAgICAgICAgICAgZm9ybWF0MzEwMTIgKz0gc3RyaW5nMzIoc3RhcnQpICsgLy8gc3RhcnRDaGFyQ29kZQogICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmczMihlbmQpICsgLy8gZW5kQ2hhckNvZGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nMzIoY29kZSk7IC8vIHN0YXJ0R2x5cGhJRAogICAgICAgICAgICBzdGFydCA9IGVuZCArIDE7CiAgICAgICAgICAgIGNvZGUgPSBjb2Rlc1tqXTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZm9ybWF0MzEwMTIgKz0gc3RyaW5nMzIoc3RhcnQpICsgLy8gc3RhcnRDaGFyQ29kZQogICAgICAgICAgICAgICAgICAgICAgIHN0cmluZzMyKHJhbmdlWzFdKSArIC8vIGVuZENoYXJDb2RlCiAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nMzIoY29kZSk7IC8vIHN0YXJ0R2x5cGhJRAogICAgICB9CiAgICAgIGhlYWRlcjMxMDEyID0gJ1x4MDBceDBDJyArIC8vIGZvcm1hdAogICAgICAgICAgICAgICAgICAgICdceDAwXHgwMCcgKyAvLyByZXNlcnZlZAogICAgICAgICAgICAgICAgICAgIHN0cmluZzMyKGZvcm1hdDMxMDEyLmxlbmd0aCArIDE2KSArIC8vIGxlbmd0aAogICAgICAgICAgICAgICAgICAgICdceDAwXHgwMFx4MDBceDAwJyArIC8vIGxhbmd1YWdlCiAgICAgICAgICAgICAgICAgICAgc3RyaW5nMzIoZm9ybWF0MzEwMTIubGVuZ3RoIC8gMTIpOyAvLyBuR3JvdXBzCiAgICB9CgogICAgcmV0dXJuIGNtYXAgKyAnXHgwMFx4MDQnICsgLy8gZm9ybWF0CiAgICAgICAgICAgICAgICAgIHN0cmluZzE2KGZvcm1hdDMxNC5sZW5ndGggKyA0KSArIC8vIGxlbmd0aAogICAgICAgICAgICAgICAgICBmb3JtYXQzMTQgKyBoZWFkZXIzMTAxMiArIGZvcm1hdDMxMDEyOwogIH0KCiAgZnVuY3Rpb24gdmFsaWRhdGVPUzJUYWJsZShvczIpIHsKICAgIHZhciBzdHJlYW0gPSBuZXcgU3RyZWFtKG9zMi5kYXRhKTsKICAgIHZhciB2ZXJzaW9uID0gc3RyZWFtLmdldFVpbnQxNigpOwogICAgLy8gVE9ETyB2ZXJpZnkgYWxsIE9TLzIgdGFibGVzIGZpZWxkcywgYnV0IGN1cnJlbnRseSB3ZSB2YWxpZGF0ZSBvbmx5IHRob3NlCiAgICAvLyB0aGF0IGdpdmUgdXMgaXNzdWVzCiAgICBzdHJlYW0uZ2V0Qnl0ZXMoNjApOyAvLyBza2lwcGluZyB0eXBlLCBtaXNjIHNpemVzLCBwYW5vc2UsIHVuaWNvZGUgcmFuZ2VzCiAgICB2YXIgc2VsZWN0aW9uID0gc3RyZWFtLmdldFVpbnQxNigpOwogICAgaWYgKHZlcnNpb24gPCA0ICYmIChzZWxlY3Rpb24gJiAweDAzMDApKSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIHZhciBmaXJzdENoYXIgPSBzdHJlYW0uZ2V0VWludDE2KCk7CiAgICB2YXIgbGFzdENoYXIgPSBzdHJlYW0uZ2V0VWludDE2KCk7CiAgICBpZiAoZmlyc3RDaGFyID4gbGFzdENoYXIpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgc3RyZWFtLmdldEJ5dGVzKDYpOyAvLyBza2lwcGluZyBzVHlwb0FzY2VuZGVyL0Rlc2NlbmRlci9MaW5lR2FwCiAgICB2YXIgdXNXaW5Bc2NlbnQgPSBzdHJlYW0uZ2V0VWludDE2KCk7CiAgICBpZiAodXNXaW5Bc2NlbnQgPT09IDApIHsgLy8gbWFrZXMgZm9udCB1bnJlYWRhYmxlIGJ5IHdpbmRvd3MKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8vIE9TLzIgYXBwZWFycyB0byBiZSB2YWxpZCwgcmVzZXR0aW5nIHNvbWUgZmllbGRzCiAgICBvczIuZGF0YVs4XSA9IG9zMi5kYXRhWzldID0gMDsgLy8gSUUgcmVqZWN0cyBmb250cyBpZiBmc1R5cGUgIT0gMAogICAgcmV0dXJuIHRydWU7CiAgfQoKICBmdW5jdGlvbiBjcmVhdGVPUzJUYWJsZShwcm9wZXJ0aWVzLCBjaGFyc3RyaW5ncywgb3ZlcnJpZGUpIHsKICAgIG92ZXJyaWRlID0gb3ZlcnJpZGUgfHwgewogICAgICB1bml0c1BlckVtOiAwLAogICAgICB5TWF4OiAwLAogICAgICB5TWluOiAwLAogICAgICBhc2NlbnQ6IDAsCiAgICAgIGRlc2NlbnQ6IDAKICAgIH07CgogICAgdmFyIHVsVW5pY29kZVJhbmdlMSA9IDA7CiAgICB2YXIgdWxVbmljb2RlUmFuZ2UyID0gMDsKICAgIHZhciB1bFVuaWNvZGVSYW5nZTMgPSAwOwogICAgdmFyIHVsVW5pY29kZVJhbmdlNCA9IDA7CgogICAgdmFyIGZpcnN0Q2hhckluZGV4ID0gbnVsbDsKICAgIHZhciBsYXN0Q2hhckluZGV4ID0gMDsKCiAgICBpZiAoY2hhcnN0cmluZ3MpIHsKICAgICAgZm9yICh2YXIgY29kZSBpbiBjaGFyc3RyaW5ncykgewogICAgICAgIGNvZGUgfD0gMDsKICAgICAgICBpZiAoZmlyc3RDaGFySW5kZXggPiBjb2RlIHx8ICFmaXJzdENoYXJJbmRleCkgewogICAgICAgICAgZmlyc3RDaGFySW5kZXggPSBjb2RlOwogICAgICAgIH0KICAgICAgICBpZiAobGFzdENoYXJJbmRleCA8IGNvZGUpIHsKICAgICAgICAgIGxhc3RDaGFySW5kZXggPSBjb2RlOwogICAgICAgIH0KCiAgICAgICAgdmFyIHBvc2l0aW9uID0gZ2V0VW5pY29kZVJhbmdlRm9yKGNvZGUpOwogICAgICAgIGlmIChwb3NpdGlvbiA8IDMyKSB7CiAgICAgICAgICB1bFVuaWNvZGVSYW5nZTEgfD0gMSA8PCBwb3NpdGlvbjsKICAgICAgICB9IGVsc2UgaWYgKHBvc2l0aW9uIDwgNjQpIHsKICAgICAgICAgIHVsVW5pY29kZVJhbmdlMiB8PSAxIDw8IHBvc2l0aW9uIC0gMzI7CiAgICAgICAgfSBlbHNlIGlmIChwb3NpdGlvbiA8IDk2KSB7CiAgICAgICAgICB1bFVuaWNvZGVSYW5nZTMgfD0gMSA8PCBwb3NpdGlvbiAtIDY0OwogICAgICAgIH0gZWxzZSBpZiAocG9zaXRpb24gPCAxMjMpIHsKICAgICAgICAgIHVsVW5pY29kZVJhbmdlNCB8PSAxIDw8IHBvc2l0aW9uIC0gOTY7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGVycm9yKCdVbmljb2RlIHJhbmdlcyBCaXRzID4gMTIzIGFyZSByZXNlcnZlZCBmb3IgaW50ZXJuYWwgdXNhZ2UnKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgIC8vIFRPRE8KICAgICAgZmlyc3RDaGFySW5kZXggPSAwOwogICAgICBsYXN0Q2hhckluZGV4ID0gMjU1OwogICAgfQoKICAgIHZhciBiYm94ID0gcHJvcGVydGllcy5iYm94IHx8IFswLCAwLCAwLCAwXTsKICAgIHZhciB1bml0c1BlckVtID0gKG92ZXJyaWRlLnVuaXRzUGVyRW0gfHwKICAgICAgICAgICAgICAgICAgICAgIDEgLyAocHJvcGVydGllcy5mb250TWF0cml4IHx8IEZPTlRfSURFTlRJVFlfTUFUUklYKVswXSk7CgogICAgLy8gaWYgdGhlIGZvbnQgdW5pdHMgZGlmZmVyIHRvIHRoZSBQREYgZ2x5cGggc3BhY2UgdW5pdHMKICAgIC8vIHRoZW4gc2NhbGUgdXAgdGhlIHZhbHVlcwogICAgdmFyIHNjYWxlID0gKHByb3BlcnRpZXMuYXNjZW50U2NhbGVkID8gMS4wIDoKICAgICAgICAgICAgICAgICB1bml0c1BlckVtIC8gUERGX0dMWVBIX1NQQUNFX1VOSVRTKTsKCiAgICB2YXIgdHlwb0FzY2VudCA9IChvdmVycmlkZS5hc2NlbnQgfHwKICAgICAgICAgICAgICAgICAgICAgIE1hdGgucm91bmQoc2NhbGUgKiAocHJvcGVydGllcy5hc2NlbnQgfHwgYmJveFszXSkpKTsKICAgIHZhciB0eXBvRGVzY2VudCA9IChvdmVycmlkZS5kZXNjZW50IHx8CiAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5yb3VuZChzY2FsZSAqIChwcm9wZXJ0aWVzLmRlc2NlbnQgfHwgYmJveFsxXSkpKTsKICAgIGlmICh0eXBvRGVzY2VudCA+IDAgJiYgcHJvcGVydGllcy5kZXNjZW50ID4gMCAmJiBiYm94WzFdIDwgMCkgewogICAgICB0eXBvRGVzY2VudCA9IC10eXBvRGVzY2VudDsgLy8gZml4aW5nIGluY29ycmVjdCBkZXNjZW50CiAgICB9CiAgICB2YXIgd2luQXNjZW50ID0gb3ZlcnJpZGUueU1heCB8fCB0eXBvQXNjZW50OwogICAgdmFyIHdpbkRlc2NlbnQgPSAtb3ZlcnJpZGUueU1pbiB8fCAtdHlwb0Rlc2NlbnQ7CgogICAgcmV0dXJuICdceDAwXHgwMycgKyAvLyB2ZXJzaW9uCiAgICAgICAgICAgJ1x4MDJceDI0JyArIC8vIHhBdmdDaGFyV2lkdGgKICAgICAgICAgICAnXHgwMVx4RjQnICsgLy8gdXNXZWlnaHRDbGFzcwogICAgICAgICAgICdceDAwXHgwNScgKyAvLyB1c1dpZHRoQ2xhc3MKICAgICAgICAgICAnXHgwMFx4MDAnICsgLy8gZnN0eXBlICgwIHRvIGxldCB0aGUgZm9udCBsb2FkcyB2aWEgZm9udC1mYWNlIG9uIElFKQogICAgICAgICAgICdceDAyXHg4QScgKyAvLyB5U3Vic2NyaXB0WFNpemUKICAgICAgICAgICAnXHgwMlx4QkInICsgLy8geVN1YnNjcmlwdFlTaXplCiAgICAgICAgICAgJ1x4MDBceDAwJyArIC8vIHlTdWJzY3JpcHRYT2Zmc2V0CiAgICAgICAgICAgJ1x4MDBceDhDJyArIC8vIHlTdWJzY3JpcHRZT2Zmc2V0CiAgICAgICAgICAgJ1x4MDJceDhBJyArIC8vIHlTdXBlclNjcmlwdFhTaXplCiAgICAgICAgICAgJ1x4MDJceEJCJyArIC8vIHlTdXBlclNjcmlwdFlTaXplCiAgICAgICAgICAgJ1x4MDBceDAwJyArIC8vIHlTdXBlclNjcmlwdFhPZmZzZXQKICAgICAgICAgICAnXHgwMVx4REYnICsgLy8geVN1cGVyU2NyaXB0WU9mZnNldAogICAgICAgICAgICdceDAwXHgzMScgKyAvLyB5U3RyaWtlT3V0U2l6ZQogICAgICAgICAgICdceDAxXHgwMicgKyAvLyB5U3RyaWtlT3V0UG9zaXRpb24KICAgICAgICAgICAnXHgwMFx4MDAnICsgLy8gc0ZhbWlseUNsYXNzCiAgICAgICAgICAgJ1x4MDBceDAwXHgwNicgKwogICAgICAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUocHJvcGVydGllcy5maXhlZFBpdGNoID8gMHgwOSA6IDB4MDApICsKICAgICAgICAgICAnXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwJyArIC8vIFBhbm9zZQogICAgICAgICAgIHN0cmluZzMyKHVsVW5pY29kZVJhbmdlMSkgKyAvLyB1bFVuaWNvZGVSYW5nZTEgKEJpdHMgMC0zMSkKICAgICAgICAgICBzdHJpbmczMih1bFVuaWNvZGVSYW5nZTIpICsgLy8gdWxVbmljb2RlUmFuZ2UyIChCaXRzIDMyLTYzKQogICAgICAgICAgIHN0cmluZzMyKHVsVW5pY29kZVJhbmdlMykgKyAvLyB1bFVuaWNvZGVSYW5nZTMgKEJpdHMgNjQtOTUpCiAgICAgICAgICAgc3RyaW5nMzIodWxVbmljb2RlUmFuZ2U0KSArIC8vIHVsVW5pY29kZVJhbmdlNCAoQml0cyA5Ni0xMjcpCiAgICAgICAgICAgJ1x4MkFceDMyXHgzMVx4MkEnICsgLy8gYWNoVmVuZElECiAgICAgICAgICAgc3RyaW5nMTYocHJvcGVydGllcy5pdGFsaWNBbmdsZSA/IDEgOiAwKSArIC8vIGZzU2VsZWN0aW9uCiAgICAgICAgICAgc3RyaW5nMTYoZmlyc3RDaGFySW5kZXggfHwKICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzLmZpcnN0Q2hhcikgKyAvLyB1c0ZpcnN0Q2hhckluZGV4CiAgICAgICAgICAgc3RyaW5nMTYobGFzdENoYXJJbmRleCB8fCBwcm9wZXJ0aWVzLmxhc3RDaGFyKSArICAvLyB1c0xhc3RDaGFySW5kZXgKICAgICAgICAgICBzdHJpbmcxNih0eXBvQXNjZW50KSArIC8vIHNUeXBvQXNjZW5kZXIKICAgICAgICAgICBzdHJpbmcxNih0eXBvRGVzY2VudCkgKyAvLyBzVHlwb0Rlc2NlbmRlcgogICAgICAgICAgICdceDAwXHg2NCcgKyAvLyBzVHlwb0xpbmVHYXAgKDclLTEwJSBvZiB0aGUgdW5pdHNQZXJFTSB2YWx1ZSkKICAgICAgICAgICBzdHJpbmcxNih3aW5Bc2NlbnQpICsgLy8gdXNXaW5Bc2NlbnQKICAgICAgICAgICBzdHJpbmcxNih3aW5EZXNjZW50KSArIC8vIHVzV2luRGVzY2VudAogICAgICAgICAgICdceDAwXHgwMFx4MDBceDAwJyArIC8vIHVsQ29kZVBhZ2VSYW5nZTEgKEJpdHMgMC0zMSkKICAgICAgICAgICAnXHgwMFx4MDBceDAwXHgwMCcgKyAvLyB1bENvZGVQYWdlUmFuZ2UyIChCaXRzIDMyLTYzKQogICAgICAgICAgIHN0cmluZzE2KHByb3BlcnRpZXMueEhlaWdodCkgKyAvLyBzeEhlaWdodAogICAgICAgICAgIHN0cmluZzE2KHByb3BlcnRpZXMuY2FwSGVpZ2h0KSArIC8vIHNDYXBIZWlnaHQKICAgICAgICAgICBzdHJpbmcxNigwKSArIC8vIHVzRGVmYXVsdENoYXIKICAgICAgICAgICBzdHJpbmcxNihmaXJzdENoYXJJbmRleCB8fCBwcm9wZXJ0aWVzLmZpcnN0Q2hhcikgKyAvLyB1c0JyZWFrQ2hhcgogICAgICAgICAgICdceDAwXHgwMyc7ICAvLyB1c01heENvbnRleHQKICB9CgogIGZ1bmN0aW9uIGNyZWF0ZVBvc3RUYWJsZShwcm9wZXJ0aWVzKSB7CiAgICB2YXIgYW5nbGUgPSBNYXRoLmZsb29yKHByb3BlcnRpZXMuaXRhbGljQW5nbGUgKiAoTWF0aC5wb3coMiwgMTYpKSk7CiAgICByZXR1cm4gKCdceDAwXHgwM1x4MDBceDAwJyArIC8vIFZlcnNpb24gbnVtYmVyCiAgICAgICAgICAgIHN0cmluZzMyKGFuZ2xlKSArIC8vIGl0YWxpY0FuZ2xlCiAgICAgICAgICAgICdceDAwXHgwMCcgKyAvLyB1bmRlcmxpbmVQb3NpdGlvbgogICAgICAgICAgICAnXHgwMFx4MDAnICsgLy8gdW5kZXJsaW5lVGhpY2tuZXNzCiAgICAgICAgICAgIHN0cmluZzMyKHByb3BlcnRpZXMuZml4ZWRQaXRjaCkgKyAvLyBpc0ZpeGVkUGl0Y2gKICAgICAgICAgICAgJ1x4MDBceDAwXHgwMFx4MDAnICsgLy8gbWluTWVtVHlwZTQyCiAgICAgICAgICAgICdceDAwXHgwMFx4MDBceDAwJyArIC8vIG1heE1lbVR5cGU0MgogICAgICAgICAgICAnXHgwMFx4MDBceDAwXHgwMCcgKyAvLyBtaW5NZW1UeXBlMQogICAgICAgICAgICAnXHgwMFx4MDBceDAwXHgwMCcpOyAgLy8gbWF4TWVtVHlwZTEKICB9CgogIGZ1bmN0aW9uIGNyZWF0ZU5hbWVUYWJsZShuYW1lLCBwcm90bykgewogICAgaWYgKCFwcm90bykgewogICAgICBwcm90byA9IFtbXSwgW11dOyAvLyBubyBzdHJpbmdzIGFuZCB1bmljb2RlIHN0cmluZ3MKICAgIH0KCiAgICB2YXIgc3RyaW5ncyA9IFsKICAgICAgcHJvdG9bMF1bMF0gfHwgJ09yaWdpbmFsIGxpY2VuY2UnLCAgLy8gMC5Db3B5cmlnaHQKICAgICAgcHJvdG9bMF1bMV0gfHwgbmFtZSwgICAgICAgICAgICAgICAgLy8gMS5Gb250IGZhbWlseQogICAgICBwcm90b1swXVsyXSB8fCAnVW5rbm93bicsICAgICAgICAgICAvLyAyLkZvbnQgc3ViZmFtaWx5IChmb250IHdlaWdodCkKICAgICAgcHJvdG9bMF1bM10gfHwgJ3VuaXF1ZUlEJywgICAgICAgICAgLy8gMy5VbmlxdWUgSUQKICAgICAgcHJvdG9bMF1bNF0gfHwgbmFtZSwgICAgICAgICAgICAgICAgLy8gNC5GdWxsIGZvbnQgbmFtZQogICAgICBwcm90b1swXVs1XSB8fCAnVmVyc2lvbiAwLjExJywgICAgICAvLyA1LlZlcnNpb24KICAgICAgcHJvdG9bMF1bNl0gfHwgJycsICAgICAgICAgICAgICAgICAgLy8gNi5Qb3N0c2NyaXB0IG5hbWUKICAgICAgcHJvdG9bMF1bN10gfHwgJ1Vua25vd24nLCAgICAgICAgICAgLy8gNy5UcmFkZW1hcmsKICAgICAgcHJvdG9bMF1bOF0gfHwgJ1Vua25vd24nLCAgICAgICAgICAgLy8gOC5NYW51ZmFjdHVyZXIKICAgICAgcHJvdG9bMF1bOV0gfHwgJ1Vua25vd24nICAgICAgICAgICAgLy8gOS5EZXNpZ25lcgogICAgXTsKCiAgICAvLyBNYWMgd2FudCAxLWJ5dGUgcGVyIGNoYXJhY3RlciBzdHJpbmdzIHdoaWxlIFdpbmRvd3Mgd2FudAogICAgLy8gMi1ieXRlcyBwZXIgY2hhcmFjdGVyLCBzbyBkdXBsaWNhdGUgdGhlIG5hbWVzIHRhYmxlCiAgICB2YXIgc3RyaW5nc1VuaWNvZGUgPSBbXTsKICAgIHZhciBpLCBpaSwgaiwgamosIHN0cjsKICAgIGZvciAoaSA9IDAsIGlpID0gc3RyaW5ncy5sZW5ndGg7IGkgPCBpaTsgaSsrKSB7CiAgICAgIHN0ciA9IHByb3RvWzFdW2ldIHx8IHN0cmluZ3NbaV07CgogICAgICB2YXIgc3RyQnVmVW5pY29kZSA9IFtdOwogICAgICBmb3IgKGogPSAwLCBqaiA9IHN0ci5sZW5ndGg7IGogPCBqajsgaisrKSB7CiAgICAgICAgc3RyQnVmVW5pY29kZS5wdXNoKHN0cmluZzE2KHN0ci5jaGFyQ29kZUF0KGopKSk7CiAgICAgIH0KICAgICAgc3RyaW5nc1VuaWNvZGUucHVzaChzdHJCdWZVbmljb2RlLmpvaW4oJycpKTsKICAgIH0KCiAgICB2YXIgbmFtZXMgPSBbc3RyaW5ncywgc3RyaW5nc1VuaWNvZGVdOwogICAgdmFyIHBsYXRmb3JtcyA9IFsnXHgwMFx4MDEnLCAnXHgwMFx4MDMnXTsKICAgIHZhciBlbmNvZGluZ3MgPSBbJ1x4MDBceDAwJywgJ1x4MDBceDAxJ107CiAgICB2YXIgbGFuZ3VhZ2VzID0gWydceDAwXHgwMCcsICdceDA0XHgwOSddOwoKICAgIHZhciBuYW1lc1JlY29yZENvdW50ID0gc3RyaW5ncy5sZW5ndGggKiBwbGF0Zm9ybXMubGVuZ3RoOwogICAgdmFyIG5hbWVUYWJsZSA9CiAgICAgICdceDAwXHgwMCcgKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvcm1hdAogICAgICBzdHJpbmcxNihuYW1lc1JlY29yZENvdW50KSArICAgICAgICAgICAvLyBOdW1iZXIgb2YgbmFtZXMgUmVjb3JkCiAgICAgIHN0cmluZzE2KG5hbWVzUmVjb3JkQ291bnQgKiAxMiArIDYpOyAgIC8vIFN0b3JhZ2UKCiAgICAvLyBCdWlsZCB0aGUgbmFtZSByZWNvcmRzIGZpZWxkCiAgICB2YXIgc3RyT2Zmc2V0ID0gMDsKICAgIGZvciAoaSA9IDAsIGlpID0gcGxhdGZvcm1zLmxlbmd0aDsgaSA8IGlpOyBpKyspIHsKICAgICAgdmFyIHN0cnMgPSBuYW1lc1tpXTsKICAgICAgZm9yIChqID0gMCwgamogPSBzdHJzLmxlbmd0aDsgaiA8IGpqOyBqKyspIHsKICAgICAgICBzdHIgPSBzdHJzW2pdOwogICAgICAgIHZhciBuYW1lUmVjb3JkID0KICAgICAgICAgIHBsYXRmb3Jtc1tpXSArIC8vIHBsYXRmb3JtIElECiAgICAgICAgICBlbmNvZGluZ3NbaV0gKyAvLyBlbmNvZGluZyBJRAogICAgICAgICAgbGFuZ3VhZ2VzW2ldICsgLy8gbGFuZ3VhZ2UgSUQKICAgICAgICAgIHN0cmluZzE2KGopICsgLy8gbmFtZSBJRAogICAgICAgICAgc3RyaW5nMTYoc3RyLmxlbmd0aCkgKwogICAgICAgICAgc3RyaW5nMTYoc3RyT2Zmc2V0KTsKICAgICAgICBuYW1lVGFibGUgKz0gbmFtZVJlY29yZDsKICAgICAgICBzdHJPZmZzZXQgKz0gc3RyLmxlbmd0aDsKICAgICAgfQogICAgfQoKICAgIG5hbWVUYWJsZSArPSBzdHJpbmdzLmpvaW4oJycpICsgc3RyaW5nc1VuaWNvZGUuam9pbignJyk7CiAgICByZXR1cm4gbmFtZVRhYmxlOwogIH0KCiAgRm9udC5wcm90b3R5cGUgPSB7CiAgICBuYW1lOiBudWxsLAogICAgZm9udDogbnVsbCwKICAgIG1pbWV0eXBlOiBudWxsLAogICAgZW5jb2Rpbmc6IG51bGwsCiAgICBnZXQgcmVuZGVyZXIoKSB7CiAgICAgIHZhciByZW5kZXJlciA9IEZvbnRSZW5kZXJlckZhY3RvcnkuY3JlYXRlKHRoaXMpOwogICAgICByZXR1cm4gc2hhZG93KHRoaXMsICdyZW5kZXJlcicsIHJlbmRlcmVyKTsKICAgIH0sCgogICAgZXhwb3J0RGF0YTogZnVuY3Rpb24gRm9udF9leHBvcnREYXRhKCkgewogICAgICB2YXIgZGF0YSA9IHt9OwogICAgICBmb3IgKHZhciBpIGluIHRoaXMpIHsKICAgICAgICBpZiAodGhpcy5oYXNPd25Qcm9wZXJ0eShpKSkgewogICAgICAgICAgZGF0YVtpXSA9IHRoaXNbaV07CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiBkYXRhOwogICAgfSwKCiAgICBjaGVja0FuZFJlcGFpcjogZnVuY3Rpb24gRm9udF9jaGVja0FuZFJlcGFpcihuYW1lLCBmb250LCBwcm9wZXJ0aWVzKSB7CiAgICAgIGZ1bmN0aW9uIHJlYWRUYWJsZUVudHJ5KGZpbGUpIHsKICAgICAgICB2YXIgdGFnID0gYnl0ZXNUb1N0cmluZyhmaWxlLmdldEJ5dGVzKDQpKTsKCiAgICAgICAgdmFyIGNoZWNrc3VtID0gZmlsZS5nZXRJbnQzMigpOwogICAgICAgIHZhciBvZmZzZXQgPSBmaWxlLmdldEludDMyKCkgPj4+IDA7CiAgICAgICAgdmFyIGxlbmd0aCA9IGZpbGUuZ2V0SW50MzIoKSA+Pj4gMDsKCiAgICAgICAgLy8gUmVhZCB0aGUgdGFibGUgYXNzb2NpYXRlZCBkYXRhCiAgICAgICAgdmFyIHByZXZpb3VzUG9zaXRpb24gPSBmaWxlLnBvczsKICAgICAgICBmaWxlLnBvcyA9IGZpbGUuc3RhcnQgPyBmaWxlLnN0YXJ0IDogMDsKICAgICAgICBmaWxlLnNraXAob2Zmc2V0KTsKICAgICAgICB2YXIgZGF0YSA9IGZpbGUuZ2V0Qnl0ZXMobGVuZ3RoKTsKICAgICAgICBmaWxlLnBvcyA9IHByZXZpb3VzUG9zaXRpb247CgogICAgICAgIGlmICh0YWcgPT09ICdoZWFkJykgewogICAgICAgICAgLy8gY2xlYXJpbmcgY2hlY2tzdW0gYWRqdXN0bWVudAogICAgICAgICAgZGF0YVs4XSA9IGRhdGFbOV0gPSBkYXRhWzEwXSA9IGRhdGFbMTFdID0gMDsKICAgICAgICAgIGRhdGFbMTddIHw9IDB4MjA7IC8vU2V0IGZvbnQgb3B0aW1pemVkIGZvciBjbGVhcnR5cGUgZmxhZwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgIHRhZzogdGFnLAogICAgICAgICAgY2hlY2tzdW06IGNoZWNrc3VtLAogICAgICAgICAgbGVuZ3RoOiBsZW5ndGgsCiAgICAgICAgICBvZmZzZXQ6IG9mZnNldCwKICAgICAgICAgIGRhdGE6IGRhdGEKICAgICAgICB9OwogICAgICB9CgogICAgICBmdW5jdGlvbiByZWFkT3BlblR5cGVIZWFkZXIodHRmKSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgIHZlcnNpb246IGJ5dGVzVG9TdHJpbmcodHRmLmdldEJ5dGVzKDQpKSwKICAgICAgICAgIG51bVRhYmxlczogdHRmLmdldFVpbnQxNigpLAogICAgICAgICAgc2VhcmNoUmFuZ2U6IHR0Zi5nZXRVaW50MTYoKSwKICAgICAgICAgIGVudHJ5U2VsZWN0b3I6IHR0Zi5nZXRVaW50MTYoKSwKICAgICAgICAgIHJhbmdlU2hpZnQ6IHR0Zi5nZXRVaW50MTYoKQogICAgICAgIH07CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBSZWFkIHRoZSBhcHByb3ByaWF0ZSBzdWJ0YWJsZSBmcm9tIHRoZSBjbWFwIGFjY29yZGluZyB0byA5LjYuNi40IGZyb20KICAgICAgICogUERGIHNwZWMKICAgICAgICovCiAgICAgIGZ1bmN0aW9uIHJlYWRDbWFwVGFibGUoY21hcCwgZm9udCwgaXNTeW1ib2xpY0ZvbnQpIHsKICAgICAgICB2YXIgc2VnbWVudDsKICAgICAgICB2YXIgc3RhcnQgPSAoZm9udC5zdGFydCA/IGZvbnQuc3RhcnQgOiAwKSArIGNtYXAub2Zmc2V0OwogICAgICAgIGZvbnQucG9zID0gc3RhcnQ7CgogICAgICAgIHZhciB2ZXJzaW9uID0gZm9udC5nZXRVaW50MTYoKTsKICAgICAgICB2YXIgbnVtVGFibGVzID0gZm9udC5nZXRVaW50MTYoKTsKCiAgICAgICAgdmFyIHBvdGVudGlhbFRhYmxlOwogICAgICAgIHZhciBjYW5CcmVhayA9IGZhbHNlOwogICAgICAgIC8vIFRoZXJlJ3MgYW4gb3JkZXIgb2YgcHJlZmVyZW5jZSBpbiB0ZXJtcyBvZiB3aGljaCBjbWFwIHN1YnRhYmxlIHRvCiAgICAgICAgLy8gdXNlOgogICAgICAgIC8vIC0gbm9uLXN5bWJvbGljIGZvbnRzIHRoZSBwcmVmZXJlbmNlIGlzIGEgMywxIHRhYmxlIHRoZW4gYSAxLDAgdGFibGUKICAgICAgICAvLyAtIHN5bWJvbGljIGZvbnRzIHRoZSBwcmVmZXJlbmNlIGlzIGEgMywwIHRhYmxlIHRoZW4gYSAxLDAgdGFibGUKICAgICAgICAvLyBUaGUgZm9sbG93aW5nIHRha2VzIGFkdmFudGFnZSBvZiB0aGUgZmFjdCB0aGF0IHRoZSB0YWJsZXMgYXJlIHNvcnRlZAogICAgICAgIC8vIHRvIHdvcmsuCiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1UYWJsZXM7IGkrKykgewogICAgICAgICAgdmFyIHBsYXRmb3JtSWQgPSBmb250LmdldFVpbnQxNigpOwogICAgICAgICAgdmFyIGVuY29kaW5nSWQgPSBmb250LmdldFVpbnQxNigpOwogICAgICAgICAgdmFyIG9mZnNldCA9IGZvbnQuZ2V0SW50MzIoKSA+Pj4gMDsKICAgICAgICAgIHZhciB1c2VUYWJsZSA9IGZhbHNlOwoKICAgICAgICAgIGlmIChwbGF0Zm9ybUlkID09PSAwICYmIGVuY29kaW5nSWQgPT09IDApIHsKICAgICAgICAgICAgdXNlVGFibGUgPSB0cnVlOwogICAgICAgICAgICAvLyBDb250aW51ZSB0aGUgbG9vcCBzaW5jZSB0aGVyZSBzdGlsbCBtYXkgYmUgYSBoaWdoZXIgcHJpb3JpdHkKICAgICAgICAgICAgLy8gdGFibGUuCiAgICAgICAgICB9IGVsc2UgaWYgKHBsYXRmb3JtSWQgPT09IDEgJiYgZW5jb2RpbmdJZCA9PT0gMCkgewogICAgICAgICAgICB1c2VUYWJsZSA9IHRydWU7CiAgICAgICAgICAgIC8vIENvbnRpbnVlIHRoZSBsb29wIHNpbmNlIHRoZXJlIHN0aWxsIG1heSBiZSBhIGhpZ2hlciBwcmlvcml0eQogICAgICAgICAgICAvLyB0YWJsZS4KICAgICAgICAgIH0gZWxzZSBpZiAocGxhdGZvcm1JZCA9PT0gMyAmJiBlbmNvZGluZ0lkID09PSAxICYmCiAgICAgICAgICAgICAgICAgICAgICghaXNTeW1ib2xpY0ZvbnQgfHwgIXBvdGVudGlhbFRhYmxlKSkgewogICAgICAgICAgICB1c2VUYWJsZSA9IHRydWU7CiAgICAgICAgICAgIGlmICghaXNTeW1ib2xpY0ZvbnQpIHsKICAgICAgICAgICAgICBjYW5CcmVhayA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0gZWxzZSBpZiAoaXNTeW1ib2xpY0ZvbnQgJiYgcGxhdGZvcm1JZCA9PT0gMyAmJiBlbmNvZGluZ0lkID09PSAwKSB7CiAgICAgICAgICAgIHVzZVRhYmxlID0gdHJ1ZTsKICAgICAgICAgICAgY2FuQnJlYWsgPSB0cnVlOwogICAgICAgICAgfQoKICAgICAgICAgIGlmICh1c2VUYWJsZSkgewogICAgICAgICAgICBwb3RlbnRpYWxUYWJsZSA9IHsKICAgICAgICAgICAgICBwbGF0Zm9ybUlkOiBwbGF0Zm9ybUlkLAogICAgICAgICAgICAgIGVuY29kaW5nSWQ6IGVuY29kaW5nSWQsCiAgICAgICAgICAgICAgb2Zmc2V0OiBvZmZzZXQKICAgICAgICAgICAgfTsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChjYW5CcmVhaykgewogICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICghcG90ZW50aWFsVGFibGUpIHsKICAgICAgICAgIHdhcm4oJ0NvdWxkIG5vdCBmaW5kIGEgcHJlZmVycmVkIGNtYXAgdGFibGUuJyk7CiAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICBwbGF0Zm9ybUlkOiAtMSwKICAgICAgICAgICAgZW5jb2RpbmdJZDogLTEsCiAgICAgICAgICAgIG1hcHBpbmdzOiBbXSwKICAgICAgICAgICAgaGFzU2hvcnRDbWFwOiBmYWxzZQogICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgIGZvbnQucG9zID0gc3RhcnQgKyBwb3RlbnRpYWxUYWJsZS5vZmZzZXQ7CiAgICAgICAgdmFyIGZvcm1hdCA9IGZvbnQuZ2V0VWludDE2KCk7CiAgICAgICAgdmFyIGxlbmd0aCA9IGZvbnQuZ2V0VWludDE2KCk7CiAgICAgICAgdmFyIGxhbmd1YWdlID0gZm9udC5nZXRVaW50MTYoKTsKCiAgICAgICAgdmFyIGhhc1Nob3J0Q21hcCA9IGZhbHNlOwogICAgICAgIHZhciBtYXBwaW5ncyA9IFtdOwogICAgICAgIHZhciBqLCBnbHlwaElkOwoKICAgICAgICAvLyBUT0RPKG1hY2spOiByZWZhY3RvciB0aGlzIGNtYXAgc3VidGFibGUgcmVhZGluZyBsb2dpYyBvdXQKICAgICAgICBpZiAoZm9ybWF0ID09PSAwKSB7CiAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgMjU2OyBqKyspIHsKICAgICAgICAgICAgdmFyIGluZGV4ID0gZm9udC5nZXRCeXRlKCk7CiAgICAgICAgICAgIGlmICghaW5kZXgpIHsKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBtYXBwaW5ncy5wdXNoKHsKICAgICAgICAgICAgICBjaGFyQ29kZTogaiwKICAgICAgICAgICAgICBnbHlwaElkOiBpbmRleAogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KICAgICAgICAgIGhhc1Nob3J0Q21hcCA9IHRydWU7CiAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQgPT09IDQpIHsKICAgICAgICAgIC8vIHJlLWNyZWF0aW5nIHRoZSB0YWJsZSBpbiBmb3JtYXQgNCBzaW5jZSB0aGUgZW5jb2RpbmcKICAgICAgICAgIC8vIG1pZ2h0IGJlIGNoYW5nZWQKICAgICAgICAgIHZhciBzZWdDb3VudCA9IChmb250LmdldFVpbnQxNigpID4+IDEpOwogICAgICAgICAgZm9udC5nZXRCeXRlcyg2KTsgLy8gc2tpcHBpbmcgcmFuZ2UgZmllbGRzCiAgICAgICAgICB2YXIgc2VnSW5kZXgsIHNlZ21lbnRzID0gW107CiAgICAgICAgICBmb3IgKHNlZ0luZGV4ID0gMDsgc2VnSW5kZXggPCBzZWdDb3VudDsgc2VnSW5kZXgrKykgewogICAgICAgICAgICBzZWdtZW50cy5wdXNoKHsgZW5kOiBmb250LmdldFVpbnQxNigpIH0pOwogICAgICAgICAgfQogICAgICAgICAgZm9udC5nZXRVaW50MTYoKTsKICAgICAgICAgIGZvciAoc2VnSW5kZXggPSAwOyBzZWdJbmRleCA8IHNlZ0NvdW50OyBzZWdJbmRleCsrKSB7CiAgICAgICAgICAgIHNlZ21lbnRzW3NlZ0luZGV4XS5zdGFydCA9IGZvbnQuZ2V0VWludDE2KCk7CiAgICAgICAgICB9CgogICAgICAgICAgZm9yIChzZWdJbmRleCA9IDA7IHNlZ0luZGV4IDwgc2VnQ291bnQ7IHNlZ0luZGV4KyspIHsKICAgICAgICAgICAgc2VnbWVudHNbc2VnSW5kZXhdLmRlbHRhID0gZm9udC5nZXRVaW50MTYoKTsKICAgICAgICAgIH0KCiAgICAgICAgICB2YXIgb2Zmc2V0c0NvdW50ID0gMDsKICAgICAgICAgIGZvciAoc2VnSW5kZXggPSAwOyBzZWdJbmRleCA8IHNlZ0NvdW50OyBzZWdJbmRleCsrKSB7CiAgICAgICAgICAgIHNlZ21lbnQgPSBzZWdtZW50c1tzZWdJbmRleF07CiAgICAgICAgICAgIHZhciByYW5nZU9mZnNldCA9IGZvbnQuZ2V0VWludDE2KCk7CiAgICAgICAgICAgIGlmICghcmFuZ2VPZmZzZXQpIHsKICAgICAgICAgICAgICBzZWdtZW50Lm9mZnNldEluZGV4ID0gLTE7CiAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciBvZmZzZXRJbmRleCA9IChyYW5nZU9mZnNldCA+PiAxKSAtIChzZWdDb3VudCAtIHNlZ0luZGV4KTsKICAgICAgICAgICAgc2VnbWVudC5vZmZzZXRJbmRleCA9IG9mZnNldEluZGV4OwogICAgICAgICAgICBvZmZzZXRzQ291bnQgPSBNYXRoLm1heChvZmZzZXRzQ291bnQsIG9mZnNldEluZGV4ICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VnbWVudC5lbmQgLSBzZWdtZW50LnN0YXJ0ICsgMSk7CiAgICAgICAgICB9CgogICAgICAgICAgdmFyIG9mZnNldHMgPSBbXTsKICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBvZmZzZXRzQ291bnQ7IGorKykgewogICAgICAgICAgICBvZmZzZXRzLnB1c2goZm9udC5nZXRVaW50MTYoKSk7CiAgICAgICAgICB9CgogICAgICAgICAgZm9yIChzZWdJbmRleCA9IDA7IHNlZ0luZGV4IDwgc2VnQ291bnQ7IHNlZ0luZGV4KyspIHsKICAgICAgICAgICAgc2VnbWVudCA9IHNlZ21lbnRzW3NlZ0luZGV4XTsKICAgICAgICAgICAgc3RhcnQgPSBzZWdtZW50LnN0YXJ0OwogICAgICAgICAgICB2YXIgZW5kID0gc2VnbWVudC5lbmQ7CiAgICAgICAgICAgIHZhciBkZWx0YSA9IHNlZ21lbnQuZGVsdGE7CiAgICAgICAgICAgIG9mZnNldEluZGV4ID0gc2VnbWVudC5vZmZzZXRJbmRleDsKCiAgICAgICAgICAgIGZvciAoaiA9IHN0YXJ0OyBqIDw9IGVuZDsgaisrKSB7CiAgICAgICAgICAgICAgaWYgKGogPT09IDB4RkZGRikgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICBnbHlwaElkID0gKG9mZnNldEluZGV4IDwgMCA/CiAgICAgICAgICAgICAgICAgICAgICAgICBqIDogb2Zmc2V0c1tvZmZzZXRJbmRleCArIGogLSBzdGFydF0pOwogICAgICAgICAgICAgIGdseXBoSWQgPSAoZ2x5cGhJZCArIGRlbHRhKSAmIDB4RkZGRjsKICAgICAgICAgICAgICBpZiAoZ2x5cGhJZCA9PT0gMCkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIG1hcHBpbmdzLnB1c2goewogICAgICAgICAgICAgICAgY2hhckNvZGU6IGosCiAgICAgICAgICAgICAgICBnbHlwaElkOiBnbHlwaElkCiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PT0gNikgewogICAgICAgICAgLy8gRm9ybWF0IDYgaXMgYSAyLWJ5dGVzIGRlbnNlIG1hcHBpbmcsIHdoaWNoIG1lYW5zIHRoZSBmb250IGRhdGEKICAgICAgICAgIC8vIGxpdmVzIGdsdWUgdG9nZXRoZXIgZXZlbiBpZiB0aGV5IGFyZSBwcmV0dHkgZmFyIGluIHRoZSB1bmljb2RlCiAgICAgICAgICAvLyB0YWJsZS4gKFRoaXMgbG9va3Mgd2VpcmQsIHNvIEkgY2FuIGhhdmUgbWlzc2VkIHNvbWV0aGluZyksIHRoaXMKICAgICAgICAgIC8vIHdvcmtzIG9uIExpbnV4IGJ1dCBzZWVtcyB0byBmYWlscyBvbiBNYWMgc28gbGV0J3MgcmV3cml0ZSB0aGUKICAgICAgICAgIC8vIGNtYXAgdGFibGUgdG8gYSAzLTEtNCBzdHlsZQogICAgICAgICAgdmFyIGZpcnN0Q29kZSA9IGZvbnQuZ2V0VWludDE2KCk7CiAgICAgICAgICB2YXIgZW50cnlDb3VudCA9IGZvbnQuZ2V0VWludDE2KCk7CgogICAgICAgICAgZm9yIChqID0gMDsgaiA8IGVudHJ5Q291bnQ7IGorKykgewogICAgICAgICAgICBnbHlwaElkID0gZm9udC5nZXRVaW50MTYoKTsKICAgICAgICAgICAgdmFyIGNoYXJDb2RlID0gZmlyc3RDb2RlICsgajsKCiAgICAgICAgICAgIG1hcHBpbmdzLnB1c2goewogICAgICAgICAgICAgIGNoYXJDb2RlOiBjaGFyQ29kZSwKICAgICAgICAgICAgICBnbHlwaElkOiBnbHlwaElkCiAgICAgICAgICAgIH0pOwogICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBlcnJvcignY21hcCB0YWJsZSBoYXMgdW5zdXBwb3J0ZWQgZm9ybWF0OiAnICsgZm9ybWF0KTsKICAgICAgICB9CgogICAgICAgIC8vIHJlbW92aW5nIGR1cGxpY2F0ZSBlbnRyaWVzCiAgICAgICAgbWFwcGluZ3Muc29ydChmdW5jdGlvbiAoYSwgYikgewogICAgICAgICAgcmV0dXJuIGEuY2hhckNvZGUgLSBiLmNoYXJDb2RlOwogICAgICAgIH0pOwogICAgICAgIGZvciAoaSA9IDE7IGkgPCBtYXBwaW5ncy5sZW5ndGg7IGkrKykgewogICAgICAgICAgaWYgKG1hcHBpbmdzW2kgLSAxXS5jaGFyQ29kZSA9PT0gbWFwcGluZ3NbaV0uY2hhckNvZGUpIHsKICAgICAgICAgICAgbWFwcGluZ3Muc3BsaWNlKGksIDEpOwogICAgICAgICAgICBpLS07CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gewogICAgICAgICAgcGxhdGZvcm1JZDogcG90ZW50aWFsVGFibGUucGxhdGZvcm1JZCwKICAgICAgICAgIGVuY29kaW5nSWQ6IHBvdGVudGlhbFRhYmxlLmVuY29kaW5nSWQsCiAgICAgICAgICBtYXBwaW5nczogbWFwcGluZ3MsCiAgICAgICAgICBoYXNTaG9ydENtYXA6IGhhc1Nob3J0Q21hcAogICAgICAgIH07CiAgICAgIH0KCiAgICAgIGZ1bmN0aW9uIHNhbml0aXplTWV0cmljcyhmb250LCBoZWFkZXIsIG1ldHJpY3MsIG51bUdseXBocykgewogICAgICAgIGlmICghaGVhZGVyKSB7CiAgICAgICAgICBpZiAobWV0cmljcykgewogICAgICAgICAgICBtZXRyaWNzLmRhdGEgPSBudWxsOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgZm9udC5wb3MgPSAoZm9udC5zdGFydCA/IGZvbnQuc3RhcnQgOiAwKSArIGhlYWRlci5vZmZzZXQ7CiAgICAgICAgZm9udC5wb3MgKz0gaGVhZGVyLmxlbmd0aCAtIDI7CiAgICAgICAgdmFyIG51bU9mTWV0cmljcyA9IGZvbnQuZ2V0VWludDE2KCk7CgogICAgICAgIGlmIChudW1PZk1ldHJpY3MgPiBudW1HbHlwaHMpIHsKICAgICAgICAgIGluZm8oJ1RoZSBudW1PZk1ldHJpY3MgKCcgKyBudW1PZk1ldHJpY3MgKyAnKSBzaG91bGQgbm90IGJlICcgKwogICAgICAgICAgICAgICAnZ3JlYXRlciB0aGFuIHRoZSBudW1HbHlwaHMgKCcgKyBudW1HbHlwaHMgKyAnKScpOwogICAgICAgICAgLy8gUmVkdWNlIG51bU9mTWV0cmljcyBpZiBpdCBpcyBncmVhdGVyIHRoYW4gbnVtR2x5cGhzCiAgICAgICAgICBudW1PZk1ldHJpY3MgPSBudW1HbHlwaHM7CiAgICAgICAgICBoZWFkZXIuZGF0YVszNF0gPSAobnVtT2ZNZXRyaWNzICYgMHhmZjAwKSA+PiA4OwogICAgICAgICAgaGVhZGVyLmRhdGFbMzVdID0gbnVtT2ZNZXRyaWNzICYgMHgwMGZmOwogICAgICAgIH0KCiAgICAgICAgdmFyIG51bU9mU2lkZWJlYXJpbmdzID0gbnVtR2x5cGhzIC0gbnVtT2ZNZXRyaWNzOwogICAgICAgIHZhciBudW1NaXNzaW5nID0gbnVtT2ZTaWRlYmVhcmluZ3MgLQogICAgICAgICAgKChtZXRyaWNzLmxlbmd0aCAtIG51bU9mTWV0cmljcyAqIDQpID4+IDEpOwoKICAgICAgICBpZiAobnVtTWlzc2luZyA+IDApIHsKICAgICAgICAgIC8vIEZvciBlYWNoIG1pc3NpbmcgZ2x5cGgsIHdlIHNldCBib3RoIHRoZSB3aWR0aCBhbmQgbHNiIHRvIDAgKHplcm8pLgogICAgICAgICAgLy8gU2luY2Ugd2UgbmVlZCB0byBhZGQgdHdvIHByb3BlcnRpZXMgZm9yIGVhY2ggZ2x5cGgsIHRoaXMgZXhwbGFpbnMKICAgICAgICAgIC8vIHRoZSB1c2Ugb2YgfG51bU1pc3NpbmcgKiAyfCB3aGVuIGluaXRpYWxpemluZyB0aGUgdHlwZWQgYXJyYXkuCiAgICAgICAgICB2YXIgZW50cmllcyA9IG5ldyBVaW50OEFycmF5KG1ldHJpY3MubGVuZ3RoICsgbnVtTWlzc2luZyAqIDIpOwogICAgICAgICAgZW50cmllcy5zZXQobWV0cmljcy5kYXRhKTsKICAgICAgICAgIG1ldHJpY3MuZGF0YSA9IGVudHJpZXM7CiAgICAgICAgfQogICAgICB9CgogICAgICBmdW5jdGlvbiBzYW5pdGl6ZUdseXBoKHNvdXJjZSwgc291cmNlU3RhcnQsIHNvdXJjZUVuZCwgZGVzdCwgZGVzdFN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpbnRzVmFsaWQpIHsKICAgICAgICBpZiAoc291cmNlRW5kIC0gc291cmNlU3RhcnQgPD0gMTIpIHsKICAgICAgICAgIC8vIGdseXBoIHdpdGggZGF0YSBsZXNzIHRoYW4gMTIgaXMgaW52YWxpZCBvbmUKICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgICAgICB2YXIgZ2x5ZiA9IHNvdXJjZS5zdWJhcnJheShzb3VyY2VTdGFydCwgc291cmNlRW5kKTsKICAgICAgICB2YXIgY29udG91cnNDb3VudCA9IChnbHlmWzBdIDw8IDgpIHwgZ2x5ZlsxXTsKICAgICAgICBpZiAoY29udG91cnNDb3VudCAmIDB4ODAwMCkgewogICAgICAgICAgLy8gY29tcGxleCBnbHlwaCwgd3JpdGluZyBhcyBpcwogICAgICAgICAgZGVzdC5zZXQoZ2x5ZiwgZGVzdFN0YXJ0KTsKICAgICAgICAgIHJldHVybiBnbHlmLmxlbmd0aDsKICAgICAgICB9CgogICAgICAgIHZhciBpLCBqID0gMTAsIGZsYWdzQ291bnQgPSAwOwogICAgICAgIGZvciAoaSA9IDA7IGkgPCBjb250b3Vyc0NvdW50OyBpKyspIHsKICAgICAgICAgIHZhciBlbmRQb2ludCA9IChnbHlmW2pdIDw8IDgpIHwgZ2x5ZltqICsgMV07CiAgICAgICAgICBmbGFnc0NvdW50ID0gZW5kUG9pbnQgKyAxOwogICAgICAgICAgaiArPSAyOwogICAgICAgIH0KICAgICAgICAvLyBza2lwcGluZyBpbnN0cnVjdGlvbnMKICAgICAgICB2YXIgaW5zdHJ1Y3Rpb25zU3RhcnQgPSBqOwogICAgICAgIHZhciBpbnN0cnVjdGlvbnNMZW5ndGggPSAoZ2x5ZltqXSA8PCA4KSB8IGdseWZbaiArIDFdOwogICAgICAgIGogKz0gMiArIGluc3RydWN0aW9uc0xlbmd0aDsKICAgICAgICB2YXIgaW5zdHJ1Y3Rpb25zRW5kID0gajsKICAgICAgICAvLyB2YWxpZGF0aW5nIGZsYWdzCiAgICAgICAgdmFyIGNvb3JkaW5hdGVzTGVuZ3RoID0gMDsKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZmxhZ3NDb3VudDsgaSsrKSB7CiAgICAgICAgICB2YXIgZmxhZyA9IGdseWZbaisrXTsKICAgICAgICAgIGlmIChmbGFnICYgMHhDMCkgewogICAgICAgICAgICAvLyByZXNlcnZlZCBmbGFncyBtdXN0IGJlIHplcm8sIGNsZWFuaW5nIHVwCiAgICAgICAgICAgIGdseWZbaiAtIDFdID0gZmxhZyAmIDB4M0Y7CiAgICAgICAgICB9CiAgICAgICAgICB2YXIgeHlMZW5ndGggPSAoKGZsYWcgJiAyKSA/IDEgOiAoZmxhZyAmIDE2KSA/IDAgOiAyKSArCiAgICAgICAgICAgICAgICAgICAgICAgICAoKGZsYWcgJiA0KSA/IDEgOiAoZmxhZyAmIDMyKSA/IDAgOiAyKTsKICAgICAgICAgIGNvb3JkaW5hdGVzTGVuZ3RoICs9IHh5TGVuZ3RoOwogICAgICAgICAgaWYgKGZsYWcgJiA4KSB7CiAgICAgICAgICAgIHZhciByZXBlYXQgPSBnbHlmW2orK107CiAgICAgICAgICAgIGkgKz0gcmVwZWF0OwogICAgICAgICAgICBjb29yZGluYXRlc0xlbmd0aCArPSByZXBlYXQgKiB4eUxlbmd0aDsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgLy8gZ2x5cGggd2l0aG91dCBjb29yZGluYXRlcyB3aWxsIGJlIHJlamVjdGVkCiAgICAgICAgaWYgKGNvb3JkaW5hdGVzTGVuZ3RoID09PSAwKSB7CiAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CiAgICAgICAgdmFyIGdseXBoRGF0YUxlbmd0aCA9IGogKyBjb29yZGluYXRlc0xlbmd0aDsKICAgICAgICBpZiAoZ2x5cGhEYXRhTGVuZ3RoID4gZ2x5Zi5sZW5ndGgpIHsKICAgICAgICAgIC8vIG5vdCBlbm91Z2ggZGF0YSBmb3IgY29vcmRpbmF0ZXMKICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgICAgICBpZiAoIWhpbnRzVmFsaWQgJiYgaW5zdHJ1Y3Rpb25zTGVuZ3RoID4gMCkgewogICAgICAgICAgZGVzdC5zZXQoZ2x5Zi5zdWJhcnJheSgwLCBpbnN0cnVjdGlvbnNTdGFydCksIGRlc3RTdGFydCk7CiAgICAgICAgICBkZXN0LnNldChbMCwgMF0sIGRlc3RTdGFydCArIGluc3RydWN0aW9uc1N0YXJ0KTsKICAgICAgICAgIGRlc3Quc2V0KGdseWYuc3ViYXJyYXkoaW5zdHJ1Y3Rpb25zRW5kLCBnbHlwaERhdGFMZW5ndGgpLAogICAgICAgICAgICAgICAgICAgZGVzdFN0YXJ0ICsgaW5zdHJ1Y3Rpb25zU3RhcnQgKyAyKTsKICAgICAgICAgIGdseXBoRGF0YUxlbmd0aCAtPSBpbnN0cnVjdGlvbnNMZW5ndGg7CiAgICAgICAgICBpZiAoZ2x5Zi5sZW5ndGggLSBnbHlwaERhdGFMZW5ndGggPiAzKSB7CiAgICAgICAgICAgIGdseXBoRGF0YUxlbmd0aCA9IChnbHlwaERhdGFMZW5ndGggKyAzKSAmIH4zOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIGdseXBoRGF0YUxlbmd0aDsKICAgICAgICB9CiAgICAgICAgaWYgKGdseWYubGVuZ3RoIC0gZ2x5cGhEYXRhTGVuZ3RoID4gMykgewogICAgICAgICAgLy8gdHJ1bmNhdGluZyBhbmQgYWxpZ25pbmcgdG8gNCBieXRlcyB0aGUgbG9uZyBnbHlwaCBkYXRhCiAgICAgICAgICBnbHlwaERhdGFMZW5ndGggPSAoZ2x5cGhEYXRhTGVuZ3RoICsgMykgJiB+MzsKICAgICAgICAgIGRlc3Quc2V0KGdseWYuc3ViYXJyYXkoMCwgZ2x5cGhEYXRhTGVuZ3RoKSwgZGVzdFN0YXJ0KTsKICAgICAgICAgIHJldHVybiBnbHlwaERhdGFMZW5ndGg7CiAgICAgICAgfQogICAgICAgIC8vIGdseXBoIGRhdGEgaXMgZmluZQogICAgICAgIGRlc3Quc2V0KGdseWYsIGRlc3RTdGFydCk7CiAgICAgICAgcmV0dXJuIGdseWYubGVuZ3RoOwogICAgICB9CgogICAgICBmdW5jdGlvbiBzYW5pdGl6ZUhlYWQoaGVhZCwgbnVtR2x5cGhzLCBsb2NhTGVuZ3RoKSB7CiAgICAgICAgdmFyIGRhdGEgPSBoZWFkLmRhdGE7CgogICAgICAgIC8vIFZhbGlkYXRlIHZlcnNpb246CiAgICAgICAgLy8gU2hvdWxkIGFsd2F5cyBiZSAweDAwMDEwMDAwCiAgICAgICAgdmFyIHZlcnNpb24gPSBpbnQzMihkYXRhWzBdLCBkYXRhWzFdLCBkYXRhWzJdLCBkYXRhWzNdKTsKICAgICAgICBpZiAodmVyc2lvbiA+PiAxNiAhPT0gMSkgewogICAgICAgICAgaW5mbygnQXR0ZW1wdGluZyB0byBmaXggaW52YWxpZCB2ZXJzaW9uIGluIGhlYWQgdGFibGU6ICcgKyB2ZXJzaW9uKTsKICAgICAgICAgIGRhdGFbMF0gPSAwOwogICAgICAgICAgZGF0YVsxXSA9IDE7CiAgICAgICAgICBkYXRhWzJdID0gMDsKICAgICAgICAgIGRhdGFbM10gPSAwOwogICAgICAgIH0KCiAgICAgICAgdmFyIGluZGV4VG9Mb2NGb3JtYXQgPSBpbnQxNihkYXRhWzUwXSwgZGF0YVs1MV0pOwogICAgICAgIGlmIChpbmRleFRvTG9jRm9ybWF0IDwgMCB8fCBpbmRleFRvTG9jRm9ybWF0ID4gMSkgewogICAgICAgICAgaW5mbygnQXR0ZW1wdGluZyB0byBmaXggaW52YWxpZCBpbmRleFRvTG9jRm9ybWF0IGluIGhlYWQgdGFibGU6ICcgKwogICAgICAgICAgICAgICBpbmRleFRvTG9jRm9ybWF0KTsKCiAgICAgICAgICAvLyBUaGUgdmFsdWUgb2YgaW5kZXhUb0xvY0Zvcm1hdCBzaG91bGQgYmUgMCBpZiB0aGUgbG9jYSB0YWJsZQogICAgICAgICAgLy8gY29uc2lzdHMgb2Ygc2hvcnQgb2Zmc2V0cywgYW5kIHNob3VsZCBiZSAxIGlmIHRoZSBsb2NhIHRhYmxlCiAgICAgICAgICAvLyBjb25zaXN0cyBvZiBsb25nIG9mZnNldHMuCiAgICAgICAgICAvLwogICAgICAgICAgLy8gVGhlIG51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBsb2NhIHRhYmxlIHNob3VsZCBiZSBudW1HbHlwaHMgKyAxLgogICAgICAgICAgLy8KICAgICAgICAgIC8vIFVzaW5nIHRoaXMgaW5mb3JtYXRpb24sIHdlIGNhbiB3b3JrIGJhY2t3YXJkcyB0byBkZWR1Y2UgaWYgdGhlCiAgICAgICAgICAvLyBzaXplIG9mIGVhY2ggb2Zmc2V0IGluIHRoZSBsb2NhIHRhYmxlLCBhbmQgdGh1cyBmaWd1cmUgb3V0IHRoZQogICAgICAgICAgLy8gYXBwcm9wcmlhdGUgdmFsdWUgZm9yIGluZGV4VG9Mb2NGb3JtYXQuCgogICAgICAgICAgdmFyIG51bUdseXBoc1BsdXNPbmUgPSBudW1HbHlwaHMgKyAxOwogICAgICAgICAgaWYgKGxvY2FMZW5ndGggPT09IG51bUdseXBoc1BsdXNPbmUgPDwgMSkgewogICAgICAgICAgICAvLyAweDAwMDAgaW5kaWNhdGVzIHRoZSBsb2NhIHRhYmxlIGNvbnNpc3RzIG9mIHNob3J0IG9mZnNldHMKICAgICAgICAgICAgZGF0YVs1MF0gPSAwOwogICAgICAgICAgICBkYXRhWzUxXSA9IDA7CiAgICAgICAgICB9IGVsc2UgaWYgKGxvY2FMZW5ndGggPT09IG51bUdseXBoc1BsdXNPbmUgPDwgMikgewogICAgICAgICAgICAvLyAweDAwMDEgaW5kaWNhdGVzIHRoZSBsb2NhIHRhYmxlIGNvbnNpc3RzIG9mIGxvbmcgb2Zmc2V0cwogICAgICAgICAgICBkYXRhWzUwXSA9IDA7CiAgICAgICAgICAgIGRhdGFbNTFdID0gMTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHdhcm4oJ0NvdWxkIG5vdCBmaXggaW5kZXhUb0xvY0Zvcm1hdDogJyArIGluZGV4VG9Mb2NGb3JtYXQpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQoKICAgICAgZnVuY3Rpb24gc2FuaXRpemVHbHlwaExvY2F0aW9ucyhsb2NhLCBnbHlmLCBudW1HbHlwaHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNHbHlwaExvY2F0aW9uc0xvbmcsIGhpbnRzVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVwRmlyc3RFbnRyeSkgewogICAgICAgIHZhciBpdGVtU2l6ZSwgaXRlbURlY29kZSwgaXRlbUVuY29kZTsKICAgICAgICBpZiAoaXNHbHlwaExvY2F0aW9uc0xvbmcpIHsKICAgICAgICAgIGl0ZW1TaXplID0gNDsKICAgICAgICAgIGl0ZW1EZWNvZGUgPSBmdW5jdGlvbiBmb250SXRlbURlY29kZUxvbmcoZGF0YSwgb2Zmc2V0KSB7CiAgICAgICAgICAgIHJldHVybiAoZGF0YVtvZmZzZXRdIDw8IDI0KSB8IChkYXRhW29mZnNldCArIDFdIDw8IDE2KSB8CiAgICAgICAgICAgICAgICAgICAoZGF0YVtvZmZzZXQgKyAyXSA8PCA4KSB8IGRhdGFbb2Zmc2V0ICsgM107CiAgICAgICAgICB9OwogICAgICAgICAgaXRlbUVuY29kZSA9IGZ1bmN0aW9uIGZvbnRJdGVtRW5jb2RlTG9uZyhkYXRhLCBvZmZzZXQsIHZhbHVlKSB7CiAgICAgICAgICAgIGRhdGFbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gMjQpICYgMHhGRjsKICAgICAgICAgICAgZGF0YVtvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+PiAxNikgJiAweEZGOwogICAgICAgICAgICBkYXRhW29mZnNldCArIDJdID0gKHZhbHVlID4+IDgpICYgMHhGRjsKICAgICAgICAgICAgZGF0YVtvZmZzZXQgKyAzXSA9IHZhbHVlICYgMHhGRjsKICAgICAgICAgIH07CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGl0ZW1TaXplID0gMjsKICAgICAgICAgIGl0ZW1EZWNvZGUgPSBmdW5jdGlvbiBmb250SXRlbURlY29kZShkYXRhLCBvZmZzZXQpIHsKICAgICAgICAgICAgcmV0dXJuIChkYXRhW29mZnNldF0gPDwgOSkgfCAoZGF0YVtvZmZzZXQgKyAxXSA8PCAxKTsKICAgICAgICAgIH07CiAgICAgICAgICBpdGVtRW5jb2RlID0gZnVuY3Rpb24gZm9udEl0ZW1FbmNvZGUoZGF0YSwgb2Zmc2V0LCB2YWx1ZSkgewogICAgICAgICAgICBkYXRhW29mZnNldF0gPSAodmFsdWUgPj4gOSkgJiAweEZGOwogICAgICAgICAgICBkYXRhW29mZnNldCArIDFdID0gKHZhbHVlID4+IDEpICYgMHhGRjsKICAgICAgICAgIH07CiAgICAgICAgfQogICAgICAgIHZhciBsb2NhRGF0YSA9IGxvY2EuZGF0YTsKICAgICAgICB2YXIgbG9jYURhdGFTaXplID0gaXRlbVNpemUgKiAoMSArIG51bUdseXBocyk7CiAgICAgICAgLy8gaXMgbG9jYS5kYXRhIHRvbyBzaG9ydCBvciBsb25nPwogICAgICAgIGlmIChsb2NhRGF0YS5sZW5ndGggIT09IGxvY2FEYXRhU2l6ZSkgewogICAgICAgICAgbG9jYURhdGEgPSBuZXcgVWludDhBcnJheShsb2NhRGF0YVNpemUpOwogICAgICAgICAgbG9jYURhdGEuc2V0KGxvY2EuZGF0YS5zdWJhcnJheSgwLCBsb2NhRGF0YVNpemUpKTsKICAgICAgICAgIGxvY2EuZGF0YSA9IGxvY2FEYXRhOwogICAgICAgIH0KICAgICAgICAvLyByZW1vdmluZyB0aGUgaW52YWxpZCBnbHlwaHMKICAgICAgICB2YXIgb2xkR2x5ZkRhdGEgPSBnbHlmLmRhdGE7CiAgICAgICAgdmFyIG9sZEdseWZEYXRhTGVuZ3RoID0gb2xkR2x5ZkRhdGEubGVuZ3RoOwogICAgICAgIHZhciBuZXdHbHlmRGF0YSA9IG5ldyBVaW50OEFycmF5KG9sZEdseWZEYXRhTGVuZ3RoKTsKICAgICAgICB2YXIgc3RhcnRPZmZzZXQgPSBpdGVtRGVjb2RlKGxvY2FEYXRhLCAwKTsKICAgICAgICB2YXIgd3JpdGVPZmZzZXQgPSAwOwogICAgICAgIHZhciBtaXNzaW5nR2x5cGhEYXRhID0ge307CiAgICAgICAgaXRlbUVuY29kZShsb2NhRGF0YSwgMCwgd3JpdGVPZmZzZXQpOwogICAgICAgIHZhciBpLCBqOwogICAgICAgIGZvciAoaSA9IDAsIGogPSBpdGVtU2l6ZTsgaSA8IG51bUdseXBoczsgaSsrLCBqICs9IGl0ZW1TaXplKSB7CiAgICAgICAgICB2YXIgZW5kT2Zmc2V0ID0gaXRlbURlY29kZShsb2NhRGF0YSwgaik7CiAgICAgICAgICBpZiAoZW5kT2Zmc2V0ID4gb2xkR2x5ZkRhdGFMZW5ndGggJiYKICAgICAgICAgICAgICAoKG9sZEdseWZEYXRhTGVuZ3RoICsgMykgJiB+MykgPT09IGVuZE9mZnNldCkgewogICAgICAgICAgICAvLyBBc3Bvc2UgYnJlYWtzIGZvbnRzIGJ5IGFsaWduaW5nIHRoZSBnbHlwaHMgdG8gdGhlIHF3b3JkLCBidXQgbm90CiAgICAgICAgICAgIC8vIHRoZSBnbHlmIHRhYmxlIHNpemUsIHdoaWNoIG1ha2VzIGxhc3QgZ2x5cGggb3V0IG9mIHJhbmdlLgogICAgICAgICAgICBlbmRPZmZzZXQgPSBvbGRHbHlmRGF0YUxlbmd0aDsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChlbmRPZmZzZXQgPiBvbGRHbHlmRGF0YUxlbmd0aCkgewogICAgICAgICAgICAvLyBnbHlwaCBlbmQgb2Zmc2V0IHBvaW50cyBvdXRzaWRlIGdseWYgZGF0YSwgcmVqZWN0aW5nIHRoZSBnbHlwaAogICAgICAgICAgICBpdGVtRW5jb2RlKGxvY2FEYXRhLCBqLCB3cml0ZU9mZnNldCk7CiAgICAgICAgICAgIHN0YXJ0T2Zmc2V0ID0gZW5kT2Zmc2V0OwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIH0KCiAgICAgICAgICBpZiAoc3RhcnRPZmZzZXQgPT09IGVuZE9mZnNldCkgewogICAgICAgICAgICBtaXNzaW5nR2x5cGhEYXRhW2ldID0gdHJ1ZTsKICAgICAgICAgIH0KCiAgICAgICAgICB2YXIgbmV3TGVuZ3RoID0gc2FuaXRpemVHbHlwaChvbGRHbHlmRGF0YSwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0dseWZEYXRhLCB3cml0ZU9mZnNldCwgaGludHNWYWxpZCk7CiAgICAgICAgICB3cml0ZU9mZnNldCArPSBuZXdMZW5ndGg7CiAgICAgICAgICBpdGVtRW5jb2RlKGxvY2FEYXRhLCBqLCB3cml0ZU9mZnNldCk7CiAgICAgICAgICBzdGFydE9mZnNldCA9IGVuZE9mZnNldDsKICAgICAgICB9CgogICAgICAgIGlmICh3cml0ZU9mZnNldCA9PT0gMCkgewogICAgICAgICAgLy8gZ2x5ZiB0YWJsZSBjYW5ub3QgYmUgZW1wdHkgLS0gcmVkb2luZyB0aGUgZ2x5ZiBhbmQgbG9jYSB0YWJsZXMKICAgICAgICAgIC8vIHRvIGhhdmUgc2luZ2xlIGdseXBoIHdpdGggb25lIHBvaW50CiAgICAgICAgICB2YXIgc2ltcGxlR2x5cGggPSBuZXcgVWludDhBcnJheSgKICAgICAgICAgICAgWzAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5LCAwXSk7CiAgICAgICAgICBmb3IgKGkgPSAwLCBqID0gaXRlbVNpemU7IGkgPCBudW1HbHlwaHM7IGkrKywgaiArPSBpdGVtU2l6ZSkgewogICAgICAgICAgICBpdGVtRW5jb2RlKGxvY2FEYXRhLCBqLCBzaW1wbGVHbHlwaC5sZW5ndGgpOwogICAgICAgICAgfQogICAgICAgICAgZ2x5Zi5kYXRhID0gc2ltcGxlR2x5cGg7CiAgICAgICAgICByZXR1cm4gbWlzc2luZ0dseXBoRGF0YTsKICAgICAgICB9CgogICAgICAgIGlmIChkdXBGaXJzdEVudHJ5KSB7CiAgICAgICAgICB2YXIgZmlyc3RFbnRyeUxlbmd0aCA9IGl0ZW1EZWNvZGUobG9jYURhdGEsIGl0ZW1TaXplKTsKICAgICAgICAgIGlmIChuZXdHbHlmRGF0YS5sZW5ndGggPiBmaXJzdEVudHJ5TGVuZ3RoICsgd3JpdGVPZmZzZXQpIHsKICAgICAgICAgICAgZ2x5Zi5kYXRhID0gbmV3R2x5ZkRhdGEuc3ViYXJyYXkoMCwgZmlyc3RFbnRyeUxlbmd0aCArIHdyaXRlT2Zmc2V0KTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGdseWYuZGF0YSA9IG5ldyBVaW50OEFycmF5KGZpcnN0RW50cnlMZW5ndGggKyB3cml0ZU9mZnNldCk7CiAgICAgICAgICAgIGdseWYuZGF0YS5zZXQobmV3R2x5ZkRhdGEuc3ViYXJyYXkoMCwgd3JpdGVPZmZzZXQpKTsKICAgICAgICAgIH0KICAgICAgICAgIGdseWYuZGF0YS5zZXQobmV3R2x5ZkRhdGEuc3ViYXJyYXkoMCwgZmlyc3RFbnRyeUxlbmd0aCksIHdyaXRlT2Zmc2V0KTsKICAgICAgICAgIGl0ZW1FbmNvZGUobG9jYS5kYXRhLCBsb2NhRGF0YS5sZW5ndGggLSBpdGVtU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgd3JpdGVPZmZzZXQgKyBmaXJzdEVudHJ5TGVuZ3RoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgZ2x5Zi5kYXRhID0gbmV3R2x5ZkRhdGEuc3ViYXJyYXkoMCwgd3JpdGVPZmZzZXQpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gbWlzc2luZ0dseXBoRGF0YTsKICAgICAgfQoKICAgICAgZnVuY3Rpb24gcmVhZFBvc3RTY3JpcHRUYWJsZShwb3N0LCBwcm9wZXJ0aWVzLCBtYXhwTnVtR2x5cGhzKSB7CiAgICAgICAgdmFyIHN0YXJ0ID0gKGZvbnQuc3RhcnQgPyBmb250LnN0YXJ0IDogMCkgKyBwb3N0Lm9mZnNldDsKICAgICAgICBmb250LnBvcyA9IHN0YXJ0OwoKICAgICAgICB2YXIgbGVuZ3RoID0gcG9zdC5sZW5ndGgsIGVuZCA9IHN0YXJ0ICsgbGVuZ3RoOwogICAgICAgIHZhciB2ZXJzaW9uID0gZm9udC5nZXRJbnQzMigpOwogICAgICAgIC8vIHNraXAgcmVzdCB0byB0aGUgdGFibGVzCiAgICAgICAgZm9udC5nZXRCeXRlcygyOCk7CgogICAgICAgIHZhciBnbHlwaE5hbWVzOwogICAgICAgIHZhciB2YWxpZCA9IHRydWU7CiAgICAgICAgdmFyIGk7CgogICAgICAgIHN3aXRjaCAodmVyc2lvbikgewogICAgICAgICAgY2FzZSAweDAwMDEwMDAwOgogICAgICAgICAgICBnbHlwaE5hbWVzID0gTWFjU3RhbmRhcmRHbHlwaE9yZGVyaW5nOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgMHgwMDAyMDAwMDoKICAgICAgICAgICAgdmFyIG51bUdseXBocyA9IGZvbnQuZ2V0VWludDE2KCk7CiAgICAgICAgICAgIGlmIChudW1HbHlwaHMgIT09IG1heHBOdW1HbHlwaHMpIHsKICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBnbHlwaE5hbWVJbmRleGVzID0gW107CiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1HbHlwaHM7ICsraSkgewogICAgICAgICAgICAgIHZhciBpbmRleCA9IGZvbnQuZ2V0VWludDE2KCk7CiAgICAgICAgICAgICAgaWYgKGluZGV4ID49IDMyNzY4KSB7CiAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGdseXBoTmFtZUluZGV4ZXMucHVzaChpbmRleCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCF2YWxpZCkgewogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBjdXN0b21OYW1lcyA9IFtdOwogICAgICAgICAgICB2YXIgc3RyQnVmID0gW107CiAgICAgICAgICAgIHdoaWxlIChmb250LnBvcyA8IGVuZCkgewogICAgICAgICAgICAgIHZhciBzdHJpbmdMZW5ndGggPSBmb250LmdldEJ5dGUoKTsKICAgICAgICAgICAgICBzdHJCdWYubGVuZ3RoID0gc3RyaW5nTGVuZ3RoOwogICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzdHJpbmdMZW5ndGg7ICsraSkgewogICAgICAgICAgICAgICAgc3RyQnVmW2ldID0gU3RyaW5nLmZyb21DaGFyQ29kZShmb250LmdldEJ5dGUoKSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGN1c3RvbU5hbWVzLnB1c2goc3RyQnVmLmpvaW4oJycpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBnbHlwaE5hbWVzID0gW107CiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1HbHlwaHM7ICsraSkgewogICAgICAgICAgICAgIHZhciBqID0gZ2x5cGhOYW1lSW5kZXhlc1tpXTsKICAgICAgICAgICAgICBpZiAoaiA8IDI1OCkgewogICAgICAgICAgICAgICAgZ2x5cGhOYW1lcy5wdXNoKE1hY1N0YW5kYXJkR2x5cGhPcmRlcmluZ1tqXSk7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZ2x5cGhOYW1lcy5wdXNoKGN1c3RvbU5hbWVzW2ogLSAyNThdKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgMHgwMDAzMDAwMDoKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICB3YXJuKCdVbmtub3duL3Vuc3VwcG9ydGVkIHBvc3QgdGFibGUgdmVyc2lvbiAnICsgdmVyc2lvbik7CiAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBwcm9wZXJ0aWVzLmdseXBoTmFtZXMgPSBnbHlwaE5hbWVzOwogICAgICAgIHJldHVybiB2YWxpZDsKICAgICAgfQoKICAgICAgZnVuY3Rpb24gcmVhZE5hbWVUYWJsZShuYW1lVGFibGUpIHsKICAgICAgICB2YXIgc3RhcnQgPSAoZm9udC5zdGFydCA/IGZvbnQuc3RhcnQgOiAwKSArIG5hbWVUYWJsZS5vZmZzZXQ7CiAgICAgICAgZm9udC5wb3MgPSBzdGFydDsKCiAgICAgICAgdmFyIG5hbWVzID0gW1tdLCBbXV07CiAgICAgICAgdmFyIGxlbmd0aCA9IG5hbWVUYWJsZS5sZW5ndGgsIGVuZCA9IHN0YXJ0ICsgbGVuZ3RoOwogICAgICAgIHZhciBmb3JtYXQgPSBmb250LmdldFVpbnQxNigpOwogICAgICAgIHZhciBGT1JNQVRfMF9IRUFERVJfTEVOR1RIID0gNjsKICAgICAgICBpZiAoZm9ybWF0ICE9PSAwIHx8IGxlbmd0aCA8IEZPUk1BVF8wX0hFQURFUl9MRU5HVEgpIHsKICAgICAgICAgIC8vIHVuc3VwcG9ydGVkIG5hbWUgdGFibGUgZm9ybWF0IG9yIHRhYmxlICJ0b28iIHNtYWxsCiAgICAgICAgICByZXR1cm4gbmFtZXM7CiAgICAgICAgfQogICAgICAgIHZhciBudW1SZWNvcmRzID0gZm9udC5nZXRVaW50MTYoKTsKICAgICAgICB2YXIgc3RyaW5nc1N0YXJ0ID0gZm9udC5nZXRVaW50MTYoKTsKICAgICAgICB2YXIgcmVjb3JkcyA9IFtdOwogICAgICAgIHZhciBOQU1FX1JFQ09SRF9MRU5HVEggPSAxMjsKICAgICAgICB2YXIgaSwgaWk7CgogICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1SZWNvcmRzICYmCiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQucG9zICsgTkFNRV9SRUNPUkRfTEVOR1RIIDw9IGVuZDsgaSsrKSB7CiAgICAgICAgICB2YXIgciA9IHsKICAgICAgICAgICAgcGxhdGZvcm06IGZvbnQuZ2V0VWludDE2KCksCiAgICAgICAgICAgIGVuY29kaW5nOiBmb250LmdldFVpbnQxNigpLAogICAgICAgICAgICBsYW5ndWFnZTogZm9udC5nZXRVaW50MTYoKSwKICAgICAgICAgICAgbmFtZTogZm9udC5nZXRVaW50MTYoKSwKICAgICAgICAgICAgbGVuZ3RoOiBmb250LmdldFVpbnQxNigpLAogICAgICAgICAgICBvZmZzZXQ6IGZvbnQuZ2V0VWludDE2KCkKICAgICAgICAgIH07CiAgICAgICAgICAvLyB1c2luZyBvbmx5IE1hY2ludG9zaCBhbmQgV2luZG93cyBwbGF0Zm9ybS9lbmNvZGluZyBuYW1lcwogICAgICAgICAgaWYgKChyLnBsYXRmb3JtID09PSAxICYmIHIuZW5jb2RpbmcgPT09IDAgJiYgci5sYW5ndWFnZSA9PT0gMCkgfHwKICAgICAgICAgICAgICAoci5wbGF0Zm9ybSA9PT0gMyAmJiByLmVuY29kaW5nID09PSAxICYmIHIubGFuZ3VhZ2UgPT09IDB4NDA5KSkgewogICAgICAgICAgICByZWNvcmRzLnB1c2gocik7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGZvciAoaSA9IDAsIGlpID0gcmVjb3Jkcy5sZW5ndGg7IGkgPCBpaTsgaSsrKSB7CiAgICAgICAgICB2YXIgcmVjb3JkID0gcmVjb3Jkc1tpXTsKICAgICAgICAgIHZhciBwb3MgPSBzdGFydCArIHN0cmluZ3NTdGFydCArIHJlY29yZC5vZmZzZXQ7CiAgICAgICAgICBpZiAocG9zICsgcmVjb3JkLmxlbmd0aCA+IGVuZCkgewogICAgICAgICAgICBjb250aW51ZTsgLy8gb3V0c2lkZSBvZiBuYW1lIHRhYmxlLCBpZ25vcmluZwogICAgICAgICAgfQogICAgICAgICAgZm9udC5wb3MgPSBwb3M7CiAgICAgICAgICB2YXIgbmFtZUluZGV4ID0gcmVjb3JkLm5hbWU7CiAgICAgICAgICBpZiAocmVjb3JkLmVuY29kaW5nKSB7CiAgICAgICAgICAgIC8vIHVuaWNvZGUKICAgICAgICAgICAgdmFyIHN0ciA9ICcnOwogICAgICAgICAgICBmb3IgKHZhciBqID0gMCwgamogPSByZWNvcmQubGVuZ3RoOyBqIDwgamo7IGogKz0gMikgewogICAgICAgICAgICAgIHN0ciArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGZvbnQuZ2V0VWludDE2KCkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIG5hbWVzWzFdW25hbWVJbmRleF0gPSBzdHI7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBuYW1lc1swXVtuYW1lSW5kZXhdID0gYnl0ZXNUb1N0cmluZyhmb250LmdldEJ5dGVzKHJlY29yZC5sZW5ndGgpKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIG5hbWVzOwogICAgICB9CgogICAgICB2YXIgVFRPcHNTdGFja0RlbHRhcyA9IFsKICAgICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAtMiwgLTIsIC0yLCAtMiwgMCwgMCwgLTIsIC01LAogICAgICAgIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgMCwgMCwgLTEsIDAsIC0xLCAtMSwgLTEsIC0xLAogICAgICAgIDEsIC0xLCAtOTk5LCAwLCAxLCAwLCAtMSwgLTIsIDAsIC0xLCAtMiwgLTEsIC0xLCAwLCAtMSwgLTEsCiAgICAgICAgMCwgMCwgLTk5OSwgLTk5OSwgLTEsIC0xLCAtMSwgLTEsIC0yLCAtOTk5LCAtMiwgLTIsIC05OTksIDAsIC0yLCAtMiwKICAgICAgICAwLCAwLCAtMiwgMCwgLTIsIDAsIDAsIDAsIC0yLCAtMSwgLTEsIDEsIDEsIDAsIDAsIC0xLAogICAgICAgIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDAsIDAsIC0xLCAwLCAtMSwgLTEsIDAsIC05OTksIC0xLCAtMSwKICAgICAgICAtMSwgLTEsIC0xLCAtMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKICAgICAgICAtMiwgLTk5OSwgLTk5OSwgLTk5OSwgLTk5OSwgLTk5OSwgLTEsIC0xLCAtMiwgLTIsIDAsIDAsIDAsIDAsIC0xLCAtMSwKICAgICAgICAtOTk5LCAtMiwgLTIsIDAsIDAsIC0xLCAtMiwgLTIsIDAsIDAsIDAsIC0xLCAtMSwgLTEsIC0yXTsKICAgICAgICAvLyAweEMwLURGID09IC0xIGFuZCAweEUwLUZGID09IC0yCgogICAgICBmdW5jdGlvbiBzYW5pdGl6ZVRUUHJvZ3JhbSh0YWJsZSwgdHRDb250ZXh0KSB7CiAgICAgICAgdmFyIGRhdGEgPSB0YWJsZS5kYXRhOwogICAgICAgIHZhciBpID0gMCwgaiwgbiwgYiwgZnVuY0lkLCBwYywgbGFzdEVuZGYgPSAwLCBsYXN0RGVmZiA9IDA7CiAgICAgICAgdmFyIHN0YWNrID0gW107CiAgICAgICAgdmFyIGNhbGxzdGFjayA9IFtdOwogICAgICAgIHZhciBmdW5jdGlvbnNDYWxsZWQgPSBbXTsKICAgICAgICB2YXIgdG9vQ29tcGxleFRvRm9sbG93RnVuY3Rpb25zID0KICAgICAgICAgIHR0Q29udGV4dC50b29Db21wbGV4VG9Gb2xsb3dGdW5jdGlvbnM7CiAgICAgICAgdmFyIGluRkRFRiA9IGZhbHNlLCBpZkxldmVsID0gMCwgaW5FTFNFID0gMDsKICAgICAgICBmb3IgKHZhciBpaSA9IGRhdGEubGVuZ3RoOyBpIDwgaWk7KSB7CiAgICAgICAgICB2YXIgb3AgPSBkYXRhW2krK107CiAgICAgICAgICAvLyBUaGUgVHJ1ZVR5cGUgaW5zdHJ1Y3Rpb24gc2V0IGRvY3MgY2FuIGJlIGZvdW5kIGF0CiAgICAgICAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZm9udHMvVFRSZWZNYW4vUk0wNS9DaGFwNS5odG1sCiAgICAgICAgICBpZiAob3AgPT09IDB4NDApIHsgLy8gTlBVU0hCIC0gcHVzaGVzIG4gYnl0ZXMKICAgICAgICAgICAgbiA9IGRhdGFbaSsrXTsKICAgICAgICAgICAgaWYgKGluRkRFRiB8fCBpbkVMU0UpIHsKICAgICAgICAgICAgICBpICs9IG47CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IG47IGorKykgewogICAgICAgICAgICAgICAgc3RhY2sucHVzaChkYXRhW2krK10pOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfSBlbHNlIGlmIChvcCA9PT0gMHg0MSkgeyAvLyBOUFVTSFcgLSBwdXNoZXMgbiB3b3JkcwogICAgICAgICAgICBuID0gZGF0YVtpKytdOwogICAgICAgICAgICBpZiAoaW5GREVGIHx8IGluRUxTRSkgewogICAgICAgICAgICAgIGkgKz0gbiAqIDI7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IG47IGorKykgewogICAgICAgICAgICAgICAgYiA9IGRhdGFbaSsrXTsKICAgICAgICAgICAgICAgIHN0YWNrLnB1c2goKGIgPDwgOCkgfCBkYXRhW2krK10pOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfSBlbHNlIGlmICgob3AgJiAweEY4KSA9PT0gMHhCMCkgeyAvLyBQVVNIQiAtIHB1c2hlcyBieXRlcwogICAgICAgICAgICBuID0gb3AgLSAweEIwICsgMTsKICAgICAgICAgICAgaWYgKGluRkRFRiB8fCBpbkVMU0UpIHsKICAgICAgICAgICAgICBpICs9IG47CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IG47IGorKykgewogICAgICAgICAgICAgICAgc3RhY2sucHVzaChkYXRhW2krK10pOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfSBlbHNlIGlmICgob3AgJiAweEY4KSA9PT0gMHhCOCkgeyAvLyBQVVNIVyAtIHB1c2hlcyB3b3JkcwogICAgICAgICAgICBuID0gb3AgLSAweEI4ICsgMTsKICAgICAgICAgICAgaWYgKGluRkRFRiB8fCBpbkVMU0UpIHsKICAgICAgICAgICAgICBpICs9IG4gKiAyOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBuOyBqKyspIHsKICAgICAgICAgICAgICAgIGIgPSBkYXRhW2krK107CiAgICAgICAgICAgICAgICBzdGFjay5wdXNoKChiIDw8IDgpIHwgZGF0YVtpKytdKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0gZWxzZSBpZiAob3AgPT09IDB4MkIgJiYgIXRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9ucykgeyAvLyBDQUxMCiAgICAgICAgICAgIGlmICghaW5GREVGICYmICFpbkVMU0UpIHsKICAgICAgICAgICAgICAvLyBjb2xsZWN0aW5nIGluZm9yYW10aW9uIGFib3V0IHdoaWNoIGZ1bmN0aW9ucyBhcmUgdXNlZAogICAgICAgICAgICAgIGZ1bmNJZCA9IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdOwogICAgICAgICAgICAgIHR0Q29udGV4dC5mdW5jdGlvbnNVc2VkW2Z1bmNJZF0gPSB0cnVlOwogICAgICAgICAgICAgIGlmIChmdW5jSWQgaW4gdHRDb250ZXh0LmZ1bmN0aW9uc1N0YWNrRGVsdGFzKSB7CiAgICAgICAgICAgICAgICBzdGFjay5sZW5ndGggKz0gdHRDb250ZXh0LmZ1bmN0aW9uc1N0YWNrRGVsdGFzW2Z1bmNJZF07CiAgICAgICAgICAgICAgfSBlbHNlIGlmIChmdW5jSWQgaW4gdHRDb250ZXh0LmZ1bmN0aW9uc0RlZmluZWQgJiYKICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uc0NhbGxlZC5pbmRleE9mKGZ1bmNJZCkgPCAwKSB7CiAgICAgICAgICAgICAgICBjYWxsc3RhY2sucHVzaCh7ZGF0YTogZGF0YSwgaTogaSwgc3RhY2tUb3A6IHN0YWNrLmxlbmd0aCAtIDF9KTsKICAgICAgICAgICAgICAgIGZ1bmN0aW9uc0NhbGxlZC5wdXNoKGZ1bmNJZCk7CiAgICAgICAgICAgICAgICBwYyA9IHR0Q29udGV4dC5mdW5jdGlvbnNEZWZpbmVkW2Z1bmNJZF07CiAgICAgICAgICAgICAgICBpZiAoIXBjKSB7CiAgICAgICAgICAgICAgICAgIHdhcm4oJ1RUOiBDQUxMIG5vbi1leGlzdGVudCBmdW5jdGlvbicpOwogICAgICAgICAgICAgICAgICB0dENvbnRleHQuaGludHNWYWxpZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBkYXRhID0gcGMuZGF0YTsKICAgICAgICAgICAgICAgIGkgPSBwYy5pOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfSBlbHNlIGlmIChvcCA9PT0gMHgyQyAmJiAhdG9vQ29tcGxleFRvRm9sbG93RnVuY3Rpb25zKSB7IC8vIEZERUYKICAgICAgICAgICAgaWYgKGluRkRFRiB8fCBpbkVMU0UpIHsKICAgICAgICAgICAgICB3YXJuKCdUVDogbmVzdGVkIEZERUZzIG5vdCBhbGxvd2VkJyk7CiAgICAgICAgICAgICAgdG9vQ29tcGxleFRvRm9sbG93RnVuY3Rpb25zID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpbkZERUYgPSB0cnVlOwogICAgICAgICAgICAvLyBjb2xsZWN0aW5nIGluZm9yYW10aW9uIGFib3V0IHdoaWNoIGZ1bmN0aW9ucyBhcmUgZGVmaW5lZAogICAgICAgICAgICBsYXN0RGVmZiA9IGk7CiAgICAgICAgICAgIGZ1bmNJZCA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICB0dENvbnRleHQuZnVuY3Rpb25zRGVmaW5lZFtmdW5jSWRdID0ge2RhdGE6IGRhdGEsIGk6IGl9OwogICAgICAgICAgfSBlbHNlIGlmIChvcCA9PT0gMHgyRCkgeyAvLyBFTkRGIC0gZW5kIG9mIGZ1bmN0aW9uCiAgICAgICAgICAgIGlmIChpbkZERUYpIHsKICAgICAgICAgICAgICBpbkZERUYgPSBmYWxzZTsKICAgICAgICAgICAgICBsYXN0RW5kZiA9IGk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgcGMgPSBjYWxsc3RhY2sucG9wKCk7CiAgICAgICAgICAgICAgaWYgKCFwYykgewogICAgICAgICAgICAgICAgd2FybignVFQ6IEVOREYgYmFkIHN0YWNrJyk7CiAgICAgICAgICAgICAgICB0dENvbnRleHQuaGludHNWYWxpZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBmdW5jSWQgPSBmdW5jdGlvbnNDYWxsZWQucG9wKCk7CiAgICAgICAgICAgICAgZGF0YSA9IHBjLmRhdGE7CiAgICAgICAgICAgICAgaSA9IHBjLmk7CiAgICAgICAgICAgICAgdHRDb250ZXh0LmZ1bmN0aW9uc1N0YWNrRGVsdGFzW2Z1bmNJZF0gPQogICAgICAgICAgICAgICAgc3RhY2subGVuZ3RoIC0gcGMuc3RhY2tUb3A7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0gZWxzZSBpZiAob3AgPT09IDB4ODkpIHsgLy8gSURFRiAtIGluc3RydWN0aW9uIGRlZmluaXRpb24KICAgICAgICAgICAgaWYgKGluRkRFRiB8fCBpbkVMU0UpIHsKICAgICAgICAgICAgICB3YXJuKCdUVDogbmVzdGVkIElERUZzIG5vdCBhbGxvd2VkJyk7CiAgICAgICAgICAgICAgdG9vQ29tcGxleFRvRm9sbG93RnVuY3Rpb25zID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpbkZERUYgPSB0cnVlOwogICAgICAgICAgICAvLyByZWNvcmRpbmcgaXQgYXMgYSBmdW5jdGlvbiB0byB0cmFjayBFTkRGCiAgICAgICAgICAgIGxhc3REZWZmID0gaTsKICAgICAgICAgIH0gZWxzZSBpZiAob3AgPT09IDB4NTgpIHsgLy8gSUYKICAgICAgICAgICAgKytpZkxldmVsOwogICAgICAgICAgfSBlbHNlIGlmIChvcCA9PT0gMHgxQikgeyAvLyBFTFNFCiAgICAgICAgICAgIGluRUxTRSA9IGlmTGV2ZWw7CiAgICAgICAgICB9IGVsc2UgaWYgKG9wID09PSAweDU5KSB7IC8vIEVJRgogICAgICAgICAgICBpZiAoaW5FTFNFID09PSBpZkxldmVsKSB7CiAgICAgICAgICAgICAgaW5FTFNFID0gMDsKICAgICAgICAgICAgfQogICAgICAgICAgICAtLWlmTGV2ZWw7CiAgICAgICAgICB9IGVsc2UgaWYgKG9wID09PSAweDFDKSB7IC8vIEpNUFIKICAgICAgICAgICAgaWYgKCFpbkZERUYgJiYgIWluRUxTRSkgewogICAgICAgICAgICAgIHZhciBvZmZzZXQgPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTsKICAgICAgICAgICAgICAvLyBvbmx5IGp1bXBpbmcgZm9yd2FyZCB0byBwcmV2ZW50IGluZmluaXRlIGxvb3AKICAgICAgICAgICAgICBpZiAob2Zmc2V0ID4gMCkgewogICAgICAgICAgICAgICAgaSArPSBvZmZzZXQgLSAxOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgLy8gQWRqdXN0aW5nIHN0YWNrIG5vdCBleHRhY3RseSwgYnV0IGp1c3QgZW5vdWdoIHRvIGdldCBmdW5jdGlvbiBpZAogICAgICAgICAgaWYgKCFpbkZERUYgJiYgIWluRUxTRSkgewogICAgICAgICAgICB2YXIgc3RhY2tEZWx0YSA9IG9wIDw9IDB4OEUgPyBUVE9wc1N0YWNrRGVsdGFzW29wXSA6CiAgICAgICAgICAgICAgb3AgPj0gMHhDMCAmJiBvcCA8PSAweERGID8gLTEgOiBvcCA+PSAweEUwID8gLTIgOiAwOwogICAgICAgICAgICBpZiAob3AgPj0gMHg3MSAmJiBvcCA8PSAweDc1KSB7CiAgICAgICAgICAgICAgbiA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICAgIGlmIChuID09PSBuKSB7CiAgICAgICAgICAgICAgICBzdGFja0RlbHRhID0gLW4gKiAyOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB3aGlsZSAoc3RhY2tEZWx0YSA8IDAgJiYgc3RhY2subGVuZ3RoID4gMCkgewogICAgICAgICAgICAgIHN0YWNrLnBvcCgpOwogICAgICAgICAgICAgIHN0YWNrRGVsdGErKzsKICAgICAgICAgICAgfQogICAgICAgICAgICB3aGlsZSAoc3RhY2tEZWx0YSA+IDApIHsKICAgICAgICAgICAgICBzdGFjay5wdXNoKE5hTik7IC8vIHB1c2hpbmcgYW55IG51bWJlciBpbnRvIHN0YWNrCiAgICAgICAgICAgICAgc3RhY2tEZWx0YS0tOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHR0Q29udGV4dC50b29Db21wbGV4VG9Gb2xsb3dGdW5jdGlvbnMgPSB0b29Db21wbGV4VG9Gb2xsb3dGdW5jdGlvbnM7CiAgICAgICAgdmFyIGNvbnRlbnQgPSBbZGF0YV07CiAgICAgICAgaWYgKGkgPiBkYXRhLmxlbmd0aCkgewogICAgICAgICAgY29udGVudC5wdXNoKG5ldyBVaW50OEFycmF5KGkgLSBkYXRhLmxlbmd0aCkpOwogICAgICAgIH0KICAgICAgICBpZiAobGFzdERlZmYgPiBsYXN0RW5kZikgewogICAgICAgICAgd2FybignVFQ6IGNvbXBsZW1lbnRpbmcgYSBtaXNzaW5nIGZ1bmN0aW9uIHRhaWwnKTsKICAgICAgICAgIC8vIG5ldyBmdW5jdGlvbiBkZWZpbml0aW9uIHN0YXJ0ZWQsIGJ1dCBub3QgZmluaXNoZWQKICAgICAgICAgIC8vIGNvbXBsZXRlIGZ1bmN0aW9uIGJ5IFtDTEVBUiwgRU5ERl0KICAgICAgICAgIGNvbnRlbnQucHVzaChuZXcgVWludDhBcnJheShbMHgyMiwgMHgyRF0pKTsKICAgICAgICB9CiAgICAgICAgZm9sZFRUVGFibGUodGFibGUsIGNvbnRlbnQpOwogICAgICB9CgogICAgICBmdW5jdGlvbiBjaGVja0ludmFsaWRGdW5jdGlvbnModHRDb250ZXh0LCBtYXhGdW5jdGlvbkRlZnMpIHsKICAgICAgICBpZiAodHRDb250ZXh0LnRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9ucykgewogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBpZiAodHRDb250ZXh0LmZ1bmN0aW9uc0RlZmluZWQubGVuZ3RoID4gbWF4RnVuY3Rpb25EZWZzKSB7CiAgICAgICAgICB3YXJuKCdUVDogbW9yZSBmdW5jdGlvbnMgZGVmaW5lZCB0aGFuIGV4cGVjdGVkJyk7CiAgICAgICAgICB0dENvbnRleHQuaGludHNWYWxpZCA9IGZhbHNlOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBmb3IgKHZhciBqID0gMCwgamogPSB0dENvbnRleHQuZnVuY3Rpb25zVXNlZC5sZW5ndGg7IGogPCBqajsgaisrKSB7CiAgICAgICAgICBpZiAoaiA+IG1heEZ1bmN0aW9uRGVmcykgewogICAgICAgICAgICB3YXJuKCdUVDogaW52YWxpZCBmdW5jdGlvbiBpZDogJyArIGopOwogICAgICAgICAgICB0dENvbnRleHQuaGludHNWYWxpZCA9IGZhbHNlOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9CiAgICAgICAgICBpZiAodHRDb250ZXh0LmZ1bmN0aW9uc1VzZWRbal0gJiYgIXR0Q29udGV4dC5mdW5jdGlvbnNEZWZpbmVkW2pdKSB7CiAgICAgICAgICAgIHdhcm4oJ1RUOiB1bmRlZmluZWQgZnVuY3Rpb246ICcgKyBqKTsKICAgICAgICAgICAgdHRDb250ZXh0LmhpbnRzVmFsaWQgPSBmYWxzZTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQoKICAgICAgZnVuY3Rpb24gZm9sZFRUVGFibGUodGFibGUsIGNvbnRlbnQpIHsKICAgICAgICBpZiAoY29udGVudC5sZW5ndGggPiAxKSB7CiAgICAgICAgICAvLyBjb25jYXRlbmF0aW5nIHRoZSBjb250ZW50IGl0ZW1zCiAgICAgICAgICB2YXIgbmV3TGVuZ3RoID0gMDsKICAgICAgICAgIHZhciBqLCBqajsKICAgICAgICAgIGZvciAoaiA9IDAsIGpqID0gY29udGVudC5sZW5ndGg7IGogPCBqajsgaisrKSB7CiAgICAgICAgICAgIG5ld0xlbmd0aCArPSBjb250ZW50W2pdLmxlbmd0aDsKICAgICAgICAgIH0KICAgICAgICAgIG5ld0xlbmd0aCA9IChuZXdMZW5ndGggKyAzKSAmIH4zOwogICAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBVaW50OEFycmF5KG5ld0xlbmd0aCk7CiAgICAgICAgICB2YXIgcG9zID0gMDsKICAgICAgICAgIGZvciAoaiA9IDAsIGpqID0gY29udGVudC5sZW5ndGg7IGogPCBqajsgaisrKSB7CiAgICAgICAgICAgIHJlc3VsdC5zZXQoY29udGVudFtqXSwgcG9zKTsKICAgICAgICAgICAgcG9zICs9IGNvbnRlbnRbal0ubGVuZ3RoOwogICAgICAgICAgfQogICAgICAgICAgdGFibGUuZGF0YSA9IHJlc3VsdDsKICAgICAgICAgIHRhYmxlLmxlbmd0aCA9IG5ld0xlbmd0aDsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGZ1bmN0aW9uIHNhbml0aXplVFRQcm9ncmFtcyhmcGdtLCBwcmVwLCBjdnQpIHsKICAgICAgICB2YXIgdHRDb250ZXh0ID0gewogICAgICAgICAgZnVuY3Rpb25zRGVmaW5lZDogW10sCiAgICAgICAgICBmdW5jdGlvbnNVc2VkOiBbXSwKICAgICAgICAgIGZ1bmN0aW9uc1N0YWNrRGVsdGFzOiBbXSwKICAgICAgICAgIHRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9uczogZmFsc2UsCiAgICAgICAgICBoaW50c1ZhbGlkOiB0cnVlCiAgICAgICAgfTsKICAgICAgICBpZiAoZnBnbSkgewogICAgICAgICAgc2FuaXRpemVUVFByb2dyYW0oZnBnbSwgdHRDb250ZXh0KTsKICAgICAgICB9CiAgICAgICAgaWYgKHByZXApIHsKICAgICAgICAgIHNhbml0aXplVFRQcm9ncmFtKHByZXAsIHR0Q29udGV4dCk7CiAgICAgICAgfQogICAgICAgIGlmIChmcGdtKSB7CiAgICAgICAgICBjaGVja0ludmFsaWRGdW5jdGlvbnModHRDb250ZXh0LCBtYXhGdW5jdGlvbkRlZnMpOwogICAgICAgIH0KICAgICAgICBpZiAoY3Z0ICYmIChjdnQubGVuZ3RoICYgMSkpIHsKICAgICAgICAgIHZhciBjdnREYXRhID0gbmV3IFVpbnQ4QXJyYXkoY3Z0Lmxlbmd0aCArIDEpOwogICAgICAgICAgY3Z0RGF0YS5zZXQoY3Z0LmRhdGEpOwogICAgICAgICAgY3Z0LmRhdGEgPSBjdnREYXRhOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdHRDb250ZXh0LmhpbnRzVmFsaWQ7CiAgICAgIH0KCiAgICAgIC8vIFRoZSBmb2xsb3dpbmcgc3RlcHMgbW9kaWZ5IHRoZSBvcmlnaW5hbCBmb250IGRhdGEsIG1ha2luZyBjb3B5CiAgICAgIGZvbnQgPSBuZXcgU3RyZWFtKG5ldyBVaW50OEFycmF5KGZvbnQuZ2V0Qnl0ZXMoKSkpOwoKICAgICAgdmFyIFZBTElEX1RBQkxFUyA9IFsnT1MvMicsICdjbWFwJywgJ2hlYWQnLCAnaGhlYScsICdobXR4JywgJ21heHAnLAogICAgICAgICduYW1lJywgJ3Bvc3QnLCAnbG9jYScsICdnbHlmJywgJ2ZwZ20nLCAncHJlcCcsICdjdnQgJywgJ0NGRiAnXTsKCiAgICAgIHZhciBoZWFkZXIgPSByZWFkT3BlblR5cGVIZWFkZXIoZm9udCk7CiAgICAgIHZhciBudW1UYWJsZXMgPSBoZWFkZXIubnVtVGFibGVzOwogICAgICB2YXIgY2ZmLCBjZmZGaWxlOwoKICAgICAgdmFyIHRhYmxlcyA9IHsgJ09TLzInOiBudWxsLCBjbWFwOiBudWxsLCBoZWFkOiBudWxsLCBoaGVhOiBudWxsLAogICAgICAgICAgICAgICAgICAgICBobXR4OiBudWxsLCBtYXhwOiBudWxsLCBuYW1lOiBudWxsLCBwb3N0OiBudWxsIH07CiAgICAgIHZhciB0YWJsZTsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1UYWJsZXM7IGkrKykgewogICAgICAgIHRhYmxlID0gcmVhZFRhYmxlRW50cnkoZm9udCk7CiAgICAgICAgaWYgKFZBTElEX1RBQkxFUy5pbmRleE9mKHRhYmxlLnRhZykgPCAwKSB7CiAgICAgICAgICBjb250aW51ZTsgLy8gc2tpcHBpbmcgdGFibGUgaWYgaXQncyBub3QgYSByZXF1aXJlZCBvciBvcHRpb25hbCB0YWJsZQogICAgICAgIH0KICAgICAgICBpZiAodGFibGUubGVuZ3RoID09PSAwKSB7CiAgICAgICAgICBjb250aW51ZTsgLy8gc2tpcHBpbmcgZW1wdHkgdGFibGVzCiAgICAgICAgfQogICAgICAgIHRhYmxlc1t0YWJsZS50YWddID0gdGFibGU7CiAgICAgIH0KCiAgICAgIHZhciBpc1RydWVUeXBlID0gIXRhYmxlc1snQ0ZGICddOwogICAgICBpZiAoIWlzVHJ1ZVR5cGUpIHsKICAgICAgICAvLyBPcGVuVHlwZSBmb250CiAgICAgICAgaWYgKGhlYWRlci52ZXJzaW9uID09PSAnT1RUTycgfHwKICAgICAgICAgICAgIXRhYmxlcy5oZWFkIHx8ICF0YWJsZXMuaGhlYSB8fCAhdGFibGVzLm1heHAgfHwgIXRhYmxlcy5wb3N0KSB7CiAgICAgICAgICAvLyBubyBtYWpvciB0YWJsZXM6IHRocm93aW5nIGV2ZXJ5dGhpbmcgYXQgQ0ZGRm9udAogICAgICAgICAgY2ZmRmlsZSA9IG5ldyBTdHJlYW0odGFibGVzWydDRkYgJ10uZGF0YSk7CiAgICAgICAgICBjZmYgPSBuZXcgQ0ZGRm9udChjZmZGaWxlLCBwcm9wZXJ0aWVzKTsKCiAgICAgICAgICByZXR1cm4gdGhpcy5jb252ZXJ0KG5hbWUsIGNmZiwgcHJvcGVydGllcyk7CiAgICAgICAgfQoKICAgICAgICBkZWxldGUgdGFibGVzLmdseWY7CiAgICAgICAgZGVsZXRlIHRhYmxlcy5sb2NhOwogICAgICAgIGRlbGV0ZSB0YWJsZXMuZnBnbTsKICAgICAgICBkZWxldGUgdGFibGVzLnByZXA7CiAgICAgICAgZGVsZXRlIHRhYmxlc1snY3Z0ICddOwogICAgICAgIHRoaXMuaXNPcGVuVHlwZSA9IHRydWU7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKCF0YWJsZXMuZ2x5ZiB8fCAhdGFibGVzLmxvY2EpIHsKICAgICAgICAgIGVycm9yKCdSZXF1aXJlZCAiZ2x5ZiIgb3IgImxvY2EiIHRhYmxlcyBhcmUgbm90IGZvdW5kJyk7CiAgICAgICAgfQogICAgICAgIHRoaXMuaXNPcGVuVHlwZSA9IGZhbHNlOwogICAgICB9CgogICAgICBpZiAoIXRhYmxlcy5tYXhwKSB7CiAgICAgICAgZXJyb3IoJ1JlcXVpcmVkICJtYXhwIiB0YWJsZSBpcyBub3QgZm91bmQnKTsKICAgICAgfQoKICAgICAgZm9udC5wb3MgPSAoZm9udC5zdGFydCB8fCAwKSArIHRhYmxlcy5tYXhwLm9mZnNldDsKICAgICAgdmFyIHZlcnNpb24gPSBmb250LmdldEludDMyKCk7CiAgICAgIHZhciBudW1HbHlwaHMgPSBmb250LmdldFVpbnQxNigpOwogICAgICB2YXIgbWF4RnVuY3Rpb25EZWZzID0gMDsKICAgICAgaWYgKHZlcnNpb24gPj0gMHgwMDAxMDAwMCAmJiB0YWJsZXMubWF4cC5sZW5ndGggPj0gMjIpIHsKICAgICAgICAvLyBtYXhab25lcyBjYW4gYmUgaW52YWxpZAogICAgICAgIGZvbnQucG9zICs9IDg7CiAgICAgICAgdmFyIG1heFpvbmVzID0gZm9udC5nZXRVaW50MTYoKTsKICAgICAgICBpZiAobWF4Wm9uZXMgPiAyKSB7IC8vIHJlc2V0IHRvIDIgaWYgZm9udCBoYXMgaW52YWxpZCBtYXhab25lcwogICAgICAgICAgdGFibGVzLm1heHAuZGF0YVsxNF0gPSAwOwogICAgICAgICAgdGFibGVzLm1heHAuZGF0YVsxNV0gPSAyOwogICAgICAgIH0KICAgICAgICBmb250LnBvcyArPSA0OwogICAgICAgIG1heEZ1bmN0aW9uRGVmcyA9IGZvbnQuZ2V0VWludDE2KCk7CiAgICAgIH0KCiAgICAgIHZhciBkdXBGaXJzdEVudHJ5ID0gZmFsc2U7CiAgICAgIGlmIChwcm9wZXJ0aWVzLnR5cGUgPT09ICdDSURGb250VHlwZTInICYmIHByb3BlcnRpZXMudG9Vbmljb2RlICYmCiAgICAgICAgICBwcm9wZXJ0aWVzLnRvVW5pY29kZS5nZXQoMCkgPiAnXHUwMDAwJykgewogICAgICAgIC8vIG9yYWNsZSdzIGRlZmVjdCAoc2VlIDM0MjcpLCBkdXBsaWNhdGluZyBmaXJzdCBlbnRyeQogICAgICAgIGR1cEZpcnN0RW50cnkgPSB0cnVlOwogICAgICAgIG51bUdseXBocysrOwogICAgICAgIHRhYmxlcy5tYXhwLmRhdGFbNF0gPSBudW1HbHlwaHMgPj4gODsKICAgICAgICB0YWJsZXMubWF4cC5kYXRhWzVdID0gbnVtR2x5cGhzICYgMjU1OwogICAgICB9CgogICAgICB2YXIgaGludHNWYWxpZCA9IHNhbml0aXplVFRQcm9ncmFtcyh0YWJsZXMuZnBnbSwgdGFibGVzLnByZXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlc1snY3Z0ICddLCBtYXhGdW5jdGlvbkRlZnMpOwogICAgICBpZiAoIWhpbnRzVmFsaWQpIHsKICAgICAgICBkZWxldGUgdGFibGVzLmZwZ207CiAgICAgICAgZGVsZXRlIHRhYmxlcy5wcmVwOwogICAgICAgIGRlbGV0ZSB0YWJsZXNbJ2N2dCAnXTsKICAgICAgfQoKICAgICAgLy8gRW5zdXJlIHRoZSBobXR4IHRhYmxlIGNvbnRhaW5zIHRoZSBhZHZhbmNlIHdpZHRoIGFuZAogICAgICAvLyBzaWRlYmVhcmluZ3MgaW5mb3JtYXRpb24gZm9yIG51bUdseXBocyBpbiB0aGUgbWF4cCB0YWJsZQogICAgICBzYW5pdGl6ZU1ldHJpY3MoZm9udCwgdGFibGVzLmhoZWEsIHRhYmxlcy5obXR4LCBudW1HbHlwaHMpOwoKICAgICAgaWYgKCF0YWJsZXMuaGVhZCkgewogICAgICAgIGVycm9yKCdSZXF1aXJlZCAiaGVhZCIgdGFibGUgaXMgbm90IGZvdW5kJyk7CiAgICAgIH0KCiAgICAgIHNhbml0aXplSGVhZCh0YWJsZXMuaGVhZCwgbnVtR2x5cGhzLCBpc1RydWVUeXBlID8gdGFibGVzLmxvY2EubGVuZ3RoIDogMCk7CgogICAgICB2YXIgbWlzc2luZ0dseXBocyA9IHt9OwogICAgICBpZiAoaXNUcnVlVHlwZSkgewogICAgICAgIHZhciBpc0dseXBoTG9jYXRpb25zTG9uZyA9IGludDE2KHRhYmxlcy5oZWFkLmRhdGFbNTBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlcy5oZWFkLmRhdGFbNTFdKTsKICAgICAgICBtaXNzaW5nR2x5cGhzID0gc2FuaXRpemVHbHlwaExvY2F0aW9ucyh0YWJsZXMubG9jYSwgdGFibGVzLmdseWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtR2x5cGhzLCBpc0dseXBoTG9jYXRpb25zTG9uZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaW50c1ZhbGlkLCBkdXBGaXJzdEVudHJ5KTsKICAgICAgfQoKICAgICAgaWYgKCF0YWJsZXMuaGhlYSkgewogICAgICAgIGVycm9yKCdSZXF1aXJlZCAiaGhlYSIgdGFibGUgaXMgbm90IGZvdW5kJyk7CiAgICAgIH0KCiAgICAgIC8vIFNhbml0aXplciByZWR1Y2VzIHRoZSBnbHlwaCBhZHZhbmNlV2lkdGggdG8gdGhlIG1heEFkdmFuY2VXaWR0aAogICAgICAvLyBTb21ldGltZXMgaXQncyAwLiBUaGF0IG5lZWRzIHRvIGJlIGZpeGVkCiAgICAgIGlmICh0YWJsZXMuaGhlYS5kYXRhWzEwXSA9PT0gMCAmJiB0YWJsZXMuaGhlYS5kYXRhWzExXSA9PT0gMCkgewogICAgICAgIHRhYmxlcy5oaGVhLmRhdGFbMTBdID0gMHhGRjsKICAgICAgICB0YWJsZXMuaGhlYS5kYXRhWzExXSA9IDB4RkY7CiAgICAgIH0KCiAgICAgIC8vIFRoZSAncG9zdCcgdGFibGUgaGFzIGdseXBocyBuYW1lcy4KICAgICAgaWYgKHRhYmxlcy5wb3N0KSB7CiAgICAgICAgdmFyIHZhbGlkID0gcmVhZFBvc3RTY3JpcHRUYWJsZSh0YWJsZXMucG9zdCwgcHJvcGVydGllcywgbnVtR2x5cGhzKTsKICAgICAgICBpZiAoIXZhbGlkKSB7CiAgICAgICAgICB0YWJsZXMucG9zdCA9IG51bGw7CiAgICAgICAgfQogICAgICB9CgogICAgICB2YXIgY2hhckNvZGVUb0dseXBoSWQgPSBbXSwgY2hhckNvZGUsIHRvVW5pY29kZSA9IHByb3BlcnRpZXMudG9Vbmljb2RlOwoKICAgICAgZnVuY3Rpb24gaGFzR2x5cGgoZ2x5cGhJZCwgY2hhckNvZGUpIHsKICAgICAgICBpZiAoIW1pc3NpbmdHbHlwaHNbZ2x5cGhJZF0pIHsKICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICBpZiAoY2hhckNvZGUgPj0gMCAmJiB0b1VuaWNvZGUuaGFzKGNoYXJDb2RlKSkgewogICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQoKICAgICAgaWYgKHByb3BlcnRpZXMudHlwZSA9PT0gJ0NJREZvbnRUeXBlMicpIHsKICAgICAgICB2YXIgY2lkVG9HaWRNYXAgPSBwcm9wZXJ0aWVzLmNpZFRvR2lkTWFwIHx8IFtdOwogICAgICAgIHZhciBpc0NpZFRvR2lkTWFwRW1wdHkgPSBjaWRUb0dpZE1hcC5sZW5ndGggPT09IDA7CgogICAgICAgIHByb3BlcnRpZXMuY01hcC5mb3JFYWNoKGZ1bmN0aW9uKGNoYXJDb2RlLCBjaWQpIHsKICAgICAgICAgIGFzc2VydChjaWQgPD0gMHhmZmZmLCAnTWF4IHNpemUgb2YgQ0lEIGlzIDY1LDUzNScpOwogICAgICAgICAgdmFyIGdseXBoSWQgPSAtMTsKICAgICAgICAgIGlmIChpc0NpZFRvR2lkTWFwRW1wdHkpIHsKICAgICAgICAgICAgZ2x5cGhJZCA9IGNoYXJDb2RlOwogICAgICAgICAgfSBlbHNlIGlmIChjaWRUb0dpZE1hcFtjaWRdICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgZ2x5cGhJZCA9IGNpZFRvR2lkTWFwW2NpZF07CiAgICAgICAgICB9CgogICAgICAgICAgaWYgKGdseXBoSWQgPj0gMCAmJiBnbHlwaElkIDwgbnVtR2x5cGhzICYmCiAgICAgICAgICAgICAgaGFzR2x5cGgoZ2x5cGhJZCwgY2hhckNvZGUpKSB7CiAgICAgICAgICAgIGNoYXJDb2RlVG9HbHlwaElkW2NoYXJDb2RlXSA9IGdseXBoSWQ7CiAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgaWYgKGR1cEZpcnN0RW50cnkpIHsKICAgICAgICAgIGNoYXJDb2RlVG9HbHlwaElkWzBdID0gbnVtR2x5cGhzIC0gMTsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgLy8gTW9zdCBvZiB0aGUgZm9sbG93aW5nIGxvZ2ljIGluIHRoaXMgY29kZSBicmFuY2ggaXMgYmFzZWQgb24gdGhlCiAgICAgICAgLy8gOS42LjYuNCBvZiB0aGUgUERGIHNwZWMuCiAgICAgICAgdmFyIGNtYXBUYWJsZSA9IHJlYWRDbWFwVGFibGUodGFibGVzLmNtYXAsIGZvbnQsIHRoaXMuaXNTeW1ib2xpY0ZvbnQpOwogICAgICAgIHZhciBjbWFwUGxhdGZvcm1JZCA9IGNtYXBUYWJsZS5wbGF0Zm9ybUlkOwogICAgICAgIHZhciBjbWFwRW5jb2RpbmdJZCA9IGNtYXBUYWJsZS5lbmNvZGluZ0lkOwogICAgICAgIHZhciBjbWFwTWFwcGluZ3MgPSBjbWFwVGFibGUubWFwcGluZ3M7CiAgICAgICAgdmFyIGNtYXBNYXBwaW5nc0xlbmd0aCA9IGNtYXBNYXBwaW5ncy5sZW5ndGg7CiAgICAgICAgdmFyIGhhc0VuY29kaW5nID0gcHJvcGVydGllcy5kaWZmZXJlbmNlcy5sZW5ndGggfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAhIXByb3BlcnRpZXMuYmFzZUVuY29kaW5nTmFtZTsKCiAgICAgICAgLy8gVGhlIHNwZWMgc2VlbXMgdG8gaW1wbHkgdGhhdCBpZiB0aGUgZm9udCBpcyBzeW1ib2xpYyB0aGUgZW5jb2RpbmcKICAgICAgICAvLyBzaG91bGQgYmUgaWdub3JlZCwgdGhpcyBkb2Vzbid0IGFwcGVhciB0byB3b3JrIGZvciAncHJlaXN0YWJlbGxlLnBkZicKICAgICAgICAvLyB3aGVyZSB0aGUgdGhlIGZvbnQgaXMgc3ltYm9saWMgYW5kIGl0IGhhcyBhbiBlbmNvZGluZy4KICAgICAgICBpZiAoaGFzRW5jb2RpbmcgJiYKICAgICAgICAgICAgKGNtYXBQbGF0Zm9ybUlkID09PSAzICYmIGNtYXBFbmNvZGluZ0lkID09PSAxIHx8CiAgICAgICAgICAgICBjbWFwUGxhdGZvcm1JZCA9PT0gMSAmJiBjbWFwRW5jb2RpbmdJZCA9PT0gMCkgfHwKICAgICAgICAgICAgKGNtYXBQbGF0Zm9ybUlkID09PSAtMSAmJiBjbWFwRW5jb2RpbmdJZCA9PT0gLTEgJiYgLy8gVGVtcG9yYXJ5IGhhY2sKICAgICAgICAgICAgICEhRW5jb2RpbmdzW3Byb3BlcnRpZXMuYmFzZUVuY29kaW5nTmFtZV0pKSB7ICAgICAgLy8gVGVtcG9yYXJ5IGhhY2sKICAgICAgICAgIC8vIFdoZW4gbm8gcHJlZmVycmVkIGNtYXAgdGFibGUgd2FzIGZvdW5kIGFuZCB8YmFzZUVuY29kaW5nTmFtZXwgaXMKICAgICAgICAgIC8vIG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBlbmNvZGluZ3MsIHdlIHNlZW0gdG8gb2J0YWluIGEgYmV0dGVyCiAgICAgICAgICAvLyB8Y2hhckNvZGVUb0dseXBoSWR8IG1hcCBmcm9tIHRoZSBjb2RlIGJlbG93IChmaXhlcyBidWcgMTA1NzU0NCkuCiAgICAgICAgICAvLyBUT0RPOiBOb3RlIHRoYXQgdGhpcyBpcyBhIGhhY2sgd2hpY2ggc2hvdWxkIGJlIHJlbW92ZWQgYXMgc29vbiBhcwogICAgICAgICAgLy8gICAgICAgd2UgaGF2ZSBwcm9wZXIgc3VwcG9ydCBmb3IgbW9yZSBleG90aWMgY21hcCB0YWJsZXMuCgogICAgICAgICAgdmFyIGJhc2VFbmNvZGluZyA9IFtdOwogICAgICAgICAgaWYgKHByb3BlcnRpZXMuYmFzZUVuY29kaW5nTmFtZSA9PT0gJ01hY1JvbWFuRW5jb2RpbmcnIHx8CiAgICAgICAgICAgICAgcHJvcGVydGllcy5iYXNlRW5jb2RpbmdOYW1lID09PSAnV2luQW5zaUVuY29kaW5nJykgewogICAgICAgICAgICBiYXNlRW5jb2RpbmcgPSBFbmNvZGluZ3NbcHJvcGVydGllcy5iYXNlRW5jb2RpbmdOYW1lXTsKICAgICAgICAgIH0KICAgICAgICAgIGZvciAoY2hhckNvZGUgPSAwOyBjaGFyQ29kZSA8IDI1NjsgY2hhckNvZGUrKykgewogICAgICAgICAgICB2YXIgZ2x5cGhOYW1lOwogICAgICAgICAgICBpZiAodGhpcy5kaWZmZXJlbmNlcyAmJiBjaGFyQ29kZSBpbiB0aGlzLmRpZmZlcmVuY2VzKSB7CiAgICAgICAgICAgICAgZ2x5cGhOYW1lID0gdGhpcy5kaWZmZXJlbmNlc1tjaGFyQ29kZV07CiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hhckNvZGUgaW4gYmFzZUVuY29kaW5nICYmCiAgICAgICAgICAgICAgICAgICAgICAgYmFzZUVuY29kaW5nW2NoYXJDb2RlXSAhPT0gJycpIHsKICAgICAgICAgICAgICBnbHlwaE5hbWUgPSBiYXNlRW5jb2RpbmdbY2hhckNvZGVdOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIGdseXBoTmFtZSA9IEVuY29kaW5ncy5TdGFuZGFyZEVuY29kaW5nW2NoYXJDb2RlXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIWdseXBoTmFtZSkgewogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciB1bmljb2RlT3JDaGFyQ29kZTsKICAgICAgICAgICAgaWYgKGNtYXBQbGF0Zm9ybUlkID09PSAzICYmIGNtYXBFbmNvZGluZ0lkID09PSAxKSB7CiAgICAgICAgICAgICAgdW5pY29kZU9yQ2hhckNvZGUgPSBHbHlwaHNVbmljb2RlW2dseXBoTmFtZV07CiAgICAgICAgICAgIH0gZWxzZSBpZiAoY21hcFBsYXRmb3JtSWQgPT09IDEgJiYgY21hcEVuY29kaW5nSWQgPT09IDApIHsKICAgICAgICAgICAgICAvLyBUT0RPOiB0aGUgZW5jb2RpbmcgbmVlZHMgdG8gYmUgdXBkYXRlZCB3aXRoIG1hYyBvcyB0YWJsZS4KICAgICAgICAgICAgICB1bmljb2RlT3JDaGFyQ29kZSA9IEVuY29kaW5ncy5NYWNSb21hbkVuY29kaW5nLmluZGV4T2YoZ2x5cGhOYW1lKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIGZvdW5kID0gZmFsc2U7CiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjbWFwTWFwcGluZ3NMZW5ndGg7ICsraSkgewogICAgICAgICAgICAgIGlmIChjbWFwTWFwcGluZ3NbaV0uY2hhckNvZGUgPT09IHVuaWNvZGVPckNoYXJDb2RlICYmCiAgICAgICAgICAgICAgICAgIGhhc0dseXBoKGNtYXBNYXBwaW5nc1tpXS5nbHlwaElkLCB1bmljb2RlT3JDaGFyQ29kZSkpIHsKICAgICAgICAgICAgICAgIGNoYXJDb2RlVG9HbHlwaElkW2NoYXJDb2RlXSA9IGNtYXBNYXBwaW5nc1tpXS5nbHlwaElkOwogICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghZm91bmQgJiYgcHJvcGVydGllcy5nbHlwaE5hbWVzKSB7CiAgICAgICAgICAgICAgLy8gVHJ5IHRvIG1hcCB1c2luZyB0aGUgcG9zdCB0YWJsZS4gVGhlcmUgYXJlIGN1cnJlbnRseSBubyBrbm93bgogICAgICAgICAgICAgIC8vIHBkZnMgdGhhdCB0aGlzIGZpeGVzLgogICAgICAgICAgICAgIHZhciBnbHlwaElkID0gcHJvcGVydGllcy5nbHlwaE5hbWVzLmluZGV4T2YoZ2x5cGhOYW1lKTsKICAgICAgICAgICAgICBpZiAoZ2x5cGhJZCA+IDAgJiYgaGFzR2x5cGgoZ2x5cGhJZCwgLTEpKSB7CiAgICAgICAgICAgICAgICBjaGFyQ29kZVRvR2x5cGhJZFtjaGFyQ29kZV0gPSBnbHlwaElkOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0gZWxzZSBpZiAoY21hcFBsYXRmb3JtSWQgPT09IDAgJiYgY21hcEVuY29kaW5nSWQgPT09IDApIHsKICAgICAgICAgIC8vIERlZmF1bHQgVW5pY29kZSBzZW1hbnRpY3MsIHVzZSB0aGUgY2hhcmNvZGVzIGFzIGlzLgogICAgICAgICAgZm9yIChpID0gMDsgaSA8IGNtYXBNYXBwaW5nc0xlbmd0aDsgKytpKSB7CiAgICAgICAgICAgIGNoYXJDb2RlVG9HbHlwaElkW2NtYXBNYXBwaW5nc1tpXS5jaGFyQ29kZV0gPQogICAgICAgICAgICAgIGNtYXBNYXBwaW5nc1tpXS5nbHlwaElkOwogICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAvLyBGb3IgKDMsIDApIGNtYXAgdGFibGVzOgogICAgICAgICAgLy8gVGhlIGNoYXJjb2RlIGtleSBiZWluZyBzdG9yZWQgaW4gY2hhckNvZGVUb0dseXBoSWQgaXMgdGhlIGxvd2VyCiAgICAgICAgICAvLyBieXRlIG9mIHRoZSB0d28tYnl0ZSBjaGFyY29kZXMgb2YgdGhlIGNtYXAgdGFibGUgc2luY2UgYWNjb3JkaW5nIHRvCiAgICAgICAgICAvLyB0aGUgc3BlYzogJ2VhY2ggYnl0ZSBmcm9tIHRoZSBzdHJpbmcgc2hhbGwgYmUgcHJlcGVuZGVkIHdpdGggdGhlCiAgICAgICAgICAvLyBoaWdoIGJ5dGUgb2YgdGhlIHJhbmdlIFtvZiBjaGFyY29kZXMgaW4gdGhlIGNtYXAgdGFibGVdLCB0byBmb3JtCiAgICAgICAgICAvLyBhIHR3by1ieXRlIGNoYXJhY3Rlciwgd2hpY2ggc2hhbGwgYmUgdXNlZCB0byBzZWxlY3QgdGhlCiAgICAgICAgICAvLyBhc3NvY2lhdGVkIGdseXBoIGRlc2NyaXB0aW9uIGZyb20gdGhlIHN1YnRhYmxlJy4KICAgICAgICAgIC8vCiAgICAgICAgICAvLyBGb3IgKDEsIDApIGNtYXAgdGFibGVzOgogICAgICAgICAgLy8gJ3NpbmdsZSBieXRlcyBmcm9tIHRoZSBzdHJpbmcgc2hhbGwgYmUgdXNlZCB0byBsb29rIHVwIHRoZQogICAgICAgICAgLy8gYXNzb2NpYXRlZCBnbHlwaCBkZXNjcmlwdGlvbnMgZnJvbSB0aGUgc3VidGFibGUnLiBUaGlzIG1lYW5zCiAgICAgICAgICAvLyBjaGFyY29kZXMgaW4gdGhlIGNtYXAgd2lsbCBiZSBzaW5nbGUgYnl0ZXMsIHNvIG5vLW9wIHNpbmNlCiAgICAgICAgICAvLyBnbHlwaC5jaGFyQ29kZSAmIDB4RkYgPT09IGdseXBoLmNoYXJDb2RlCiAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY21hcE1hcHBpbmdzTGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgY2hhckNvZGUgPSBjbWFwTWFwcGluZ3NbaV0uY2hhckNvZGUgJiAweEZGOwogICAgICAgICAgICBjaGFyQ29kZVRvR2x5cGhJZFtjaGFyQ29kZV0gPSBjbWFwTWFwcGluZ3NbaV0uZ2x5cGhJZDsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KCiAgICAgIGlmIChjaGFyQ29kZVRvR2x5cGhJZC5sZW5ndGggPT09IDApIHsKICAgICAgICAvLyBkZWZpbmVzIGF0IGxlYXN0IG9uZSBnbHlwaAogICAgICAgIGNoYXJDb2RlVG9HbHlwaElkWzBdID0gMDsKICAgICAgfQoKICAgICAgLy8gQ29udmVydGluZyBnbHlwaHMgYW5kIGlkcyBpbnRvIGZvbnQncyBjbWFwIHRhYmxlCiAgICAgIHZhciBuZXdNYXBwaW5nID0gYWRqdXN0TWFwcGluZyhjaGFyQ29kZVRvR2x5cGhJZCwgcHJvcGVydGllcyk7CiAgICAgIHRoaXMudG9Gb250Q2hhciA9IG5ld01hcHBpbmcudG9Gb250Q2hhcjsKICAgICAgdGFibGVzLmNtYXAgPSB7CiAgICAgICAgdGFnOiAnY21hcCcsCiAgICAgICAgZGF0YTogY3JlYXRlQ21hcFRhYmxlKG5ld01hcHBpbmcuY2hhckNvZGVUb0dseXBoSWQpCiAgICAgIH07CgogICAgICBpZiAoIXRhYmxlc1snT1MvMiddIHx8ICF2YWxpZGF0ZU9TMlRhYmxlKHRhYmxlc1snT1MvMiddKSkgewogICAgICAgIC8vIGV4dHJhY3Qgc29tZSBtb3JlIGZvbnQgcHJvcGVydGllcyBmcm9tIHRoZSBPcGVuVHlwZSBoZWFkIGFuZAogICAgICAgIC8vIGhoZWEgdGFibGVzOyB5TWluIGFuZCBkZXNjZW50IHZhbHVlIGFyZSBhbHdheXMgbmVnYXRpdmUKICAgICAgICB2YXIgb3ZlcnJpZGUgPSB7CiAgICAgICAgICB1bml0c1BlckVtOiBpbnQxNih0YWJsZXMuaGVhZC5kYXRhWzE4XSwgdGFibGVzLmhlYWQuZGF0YVsxOV0pLAogICAgICAgICAgeU1heDogaW50MTYodGFibGVzLmhlYWQuZGF0YVs0Ml0sIHRhYmxlcy5oZWFkLmRhdGFbNDNdKSwKICAgICAgICAgIHlNaW46IGludDE2KHRhYmxlcy5oZWFkLmRhdGFbMzhdLCB0YWJsZXMuaGVhZC5kYXRhWzM5XSkgLSAweDEwMDAwLAogICAgICAgICAgYXNjZW50OiBpbnQxNih0YWJsZXMuaGhlYS5kYXRhWzRdLCB0YWJsZXMuaGhlYS5kYXRhWzVdKSwKICAgICAgICAgIGRlc2NlbnQ6IGludDE2KHRhYmxlcy5oaGVhLmRhdGFbNl0sIHRhYmxlcy5oaGVhLmRhdGFbN10pIC0gMHgxMDAwMAogICAgICAgIH07CgogICAgICAgIHRhYmxlc1snT1MvMiddID0gewogICAgICAgICAgdGFnOiAnT1MvMicsCiAgICAgICAgICBkYXRhOiBjcmVhdGVPUzJUYWJsZShwcm9wZXJ0aWVzLCBuZXdNYXBwaW5nLmNoYXJDb2RlVG9HbHlwaElkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGUpCiAgICAgICAgfTsKICAgICAgfQoKICAgICAgLy8gUmV3cml0ZSB0aGUgJ3Bvc3QnIHRhYmxlIGlmIG5lZWRlZAogICAgICBpZiAoIXRhYmxlcy5wb3N0KSB7CiAgICAgICAgdGFibGVzLnBvc3QgPSB7CiAgICAgICAgICB0YWc6ICdwb3N0JywKICAgICAgICAgIGRhdGE6IGNyZWF0ZVBvc3RUYWJsZShwcm9wZXJ0aWVzKQogICAgICAgIH07CiAgICAgIH0KCiAgICAgIGlmICghaXNUcnVlVHlwZSkgewogICAgICAgIHRyeSB7CiAgICAgICAgICAvLyBUcnlpbmcgdG8gcmVwYWlyIENGRiBmaWxlCiAgICAgICAgICBjZmZGaWxlID0gbmV3IFN0cmVhbSh0YWJsZXNbJ0NGRiAnXS5kYXRhKTsKICAgICAgICAgIHZhciBwYXJzZXIgPSBuZXcgQ0ZGUGFyc2VyKGNmZkZpbGUsIHByb3BlcnRpZXMpOwogICAgICAgICAgY2ZmID0gcGFyc2VyLnBhcnNlKCk7CiAgICAgICAgICB2YXIgY29tcGlsZXIgPSBuZXcgQ0ZGQ29tcGlsZXIoY2ZmKTsKICAgICAgICAgIHRhYmxlc1snQ0ZGICddLmRhdGEgPSBjb21waWxlci5jb21waWxlKCk7CiAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgd2FybignRmFpbGVkIHRvIGNvbXBpbGUgZm9udCAnICsgcHJvcGVydGllcy5sb2FkZWROYW1lKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIFJlLWNyZWF0aW5nICduYW1lJyB0YWJsZQogICAgICBpZiAoIXRhYmxlcy5uYW1lKSB7CiAgICAgICAgdGFibGVzLm5hbWUgPSB7CiAgICAgICAgICB0YWc6ICduYW1lJywKICAgICAgICAgIGRhdGE6IGNyZWF0ZU5hbWVUYWJsZSh0aGlzLm5hbWUpCiAgICAgICAgfTsKICAgICAgfSBlbHNlIHsKICAgICAgICAvLyAuLi4gdXNpbmcgZXhpc3RpbmcgJ25hbWUnIHRhYmxlIGFzIHByb3RvdHlwZQogICAgICAgIHZhciBuYW1lUHJvdG90eXBlID0gcmVhZE5hbWVUYWJsZSh0YWJsZXMubmFtZSk7CiAgICAgICAgdGFibGVzLm5hbWUuZGF0YSA9IGNyZWF0ZU5hbWVUYWJsZShuYW1lLCBuYW1lUHJvdG90eXBlKTsKICAgICAgfQoKICAgICAgdmFyIGJ1aWxkZXIgPSBuZXcgT3BlblR5cGVGaWxlQnVpbGRlcihoZWFkZXIudmVyc2lvbik7CiAgICAgIGZvciAodmFyIHRhYmxlVGFnIGluIHRhYmxlcykgewogICAgICAgIGJ1aWxkZXIuYWRkVGFibGUodGFibGVUYWcsIHRhYmxlc1t0YWJsZVRhZ10uZGF0YSk7CiAgICAgIH0KICAgICAgcmV0dXJuIGJ1aWxkZXIudG9BcnJheSgpOwogICAgfSwKCiAgICBjb252ZXJ0OiBmdW5jdGlvbiBGb250X2NvbnZlcnQoZm9udE5hbWUsIGZvbnQsIHByb3BlcnRpZXMpIHsKICAgICAgLy8gVE9ETzogQ2hlY2sgdGhlIGNoYXJzdHJpbmcgd2lkdGhzIHRvIGRldGVybWluZSB0aGlzLgogICAgICBwcm9wZXJ0aWVzLmZpeGVkUGl0Y2ggPSBmYWxzZTsKCiAgICAgIHZhciBtYXBwaW5nID0gZm9udC5nZXRHbHlwaE1hcHBpbmcocHJvcGVydGllcyk7CiAgICAgIHZhciBuZXdNYXBwaW5nID0gYWRqdXN0TWFwcGluZyhtYXBwaW5nLCBwcm9wZXJ0aWVzKTsKICAgICAgdGhpcy50b0ZvbnRDaGFyID0gbmV3TWFwcGluZy50b0ZvbnRDaGFyOwogICAgICB2YXIgbnVtR2x5cGhzID0gZm9udC5udW1HbHlwaHM7CgogICAgICBmdW5jdGlvbiBnZXRDaGFyQ29kZXMoY2hhckNvZGVUb0dseXBoSWQsIGdseXBoSWQpIHsKICAgICAgICB2YXIgY2hhckNvZGVzID0gbnVsbDsKICAgICAgICBmb3IgKHZhciBjaGFyQ29kZSBpbiBjaGFyQ29kZVRvR2x5cGhJZCkgewogICAgICAgICAgaWYgKGdseXBoSWQgPT09IGNoYXJDb2RlVG9HbHlwaElkW2NoYXJDb2RlXSkgewogICAgICAgICAgICBpZiAoIWNoYXJDb2RlcykgewogICAgICAgICAgICAgIGNoYXJDb2RlcyA9IFtdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNoYXJDb2Rlcy5wdXNoKGNoYXJDb2RlIHwgMCk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBjaGFyQ29kZXM7CiAgICAgIH0KCiAgICAgIGZ1bmN0aW9uIGNyZWF0ZUNoYXJDb2RlKGNoYXJDb2RlVG9HbHlwaElkLCBnbHlwaElkKSB7CiAgICAgICAgZm9yICh2YXIgY2hhckNvZGUgaW4gY2hhckNvZGVUb0dseXBoSWQpIHsKICAgICAgICAgIGlmIChnbHlwaElkID09PSBjaGFyQ29kZVRvR2x5cGhJZFtjaGFyQ29kZV0pIHsKICAgICAgICAgICAgcmV0dXJuIGNoYXJDb2RlIHwgMDsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgbmV3TWFwcGluZy5jaGFyQ29kZVRvR2x5cGhJZFtuZXdNYXBwaW5nLm5leHRBdmFpbGFibGVGb250Q2hhckNvZGVdID0KICAgICAgICAgICAgZ2x5cGhJZDsKICAgICAgICByZXR1cm4gbmV3TWFwcGluZy5uZXh0QXZhaWxhYmxlRm9udENoYXJDb2RlKys7CiAgICAgIH0KCiAgICAgIHZhciBzZWFjcyA9IGZvbnQuc2VhY3M7CiAgICAgIGlmIChTRUFDX0FOQUxZU0lTX0VOQUJMRUQgJiYgc2VhY3MgJiYgc2VhY3MubGVuZ3RoKSB7CiAgICAgICAgdmFyIG1hdHJpeCA9IHByb3BlcnRpZXMuZm9udE1hdHJpeCB8fCBGT05UX0lERU5USVRZX01BVFJJWDsKICAgICAgICB2YXIgY2hhcnNldCA9IGZvbnQuZ2V0Q2hhcnNldCgpOwogICAgICAgIHZhciBzZWFjTWFwID0gT2JqZWN0LmNyZWF0ZShudWxsKTsKICAgICAgICBmb3IgKHZhciBnbHlwaElkIGluIHNlYWNzKSB7CiAgICAgICAgICBnbHlwaElkIHw9IDA7CiAgICAgICAgICB2YXIgc2VhYyA9IHNlYWNzW2dseXBoSWRdOwogICAgICAgICAgdmFyIGJhc2VHbHlwaE5hbWUgPSBFbmNvZGluZ3MuU3RhbmRhcmRFbmNvZGluZ1tzZWFjWzJdXTsKICAgICAgICAgIHZhciBhY2NlbnRHbHlwaE5hbWUgPSBFbmNvZGluZ3MuU3RhbmRhcmRFbmNvZGluZ1tzZWFjWzNdXTsKICAgICAgICAgIHZhciBiYXNlR2x5cGhJZCA9IGNoYXJzZXQuaW5kZXhPZihiYXNlR2x5cGhOYW1lKTsKICAgICAgICAgIHZhciBhY2NlbnRHbHlwaElkID0gY2hhcnNldC5pbmRleE9mKGFjY2VudEdseXBoTmFtZSk7CiAgICAgICAgICBpZiAoYmFzZUdseXBoSWQgPCAwIHx8IGFjY2VudEdseXBoSWQgPCAwKSB7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgfQogICAgICAgICAgdmFyIGFjY2VudE9mZnNldCA9IHsKICAgICAgICAgICAgeDogc2VhY1swXSAqIG1hdHJpeFswXSArIHNlYWNbMV0gKiBtYXRyaXhbMl0gKyBtYXRyaXhbNF0sCiAgICAgICAgICAgIHk6IHNlYWNbMF0gKiBtYXRyaXhbMV0gKyBzZWFjWzFdICogbWF0cml4WzNdICsgbWF0cml4WzVdCiAgICAgICAgICB9OwoKICAgICAgICAgIHZhciBjaGFyQ29kZXMgPSBnZXRDaGFyQ29kZXMobWFwcGluZywgZ2x5cGhJZCk7CiAgICAgICAgICBpZiAoIWNoYXJDb2RlcykgewogICAgICAgICAgICAvLyBUaGVyZSdzIG5vIHBvaW50IGluIG1hcHBpbmcgaXQgaWYgdGhlIGNoYXIgY29kZSB3YXMgbmV2ZXIgbWFwcGVkCiAgICAgICAgICAgIC8vIHRvIGJlZ2luIHdpdGguCiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgfQogICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGlpID0gY2hhckNvZGVzLmxlbmd0aDsgaSA8IGlpOyBpKyspIHsKICAgICAgICAgICAgdmFyIGNoYXJDb2RlID0gY2hhckNvZGVzW2ldOwogICAgICAgICAgICAvLyBGaW5kIGEgZm9udENoYXJDb2RlIHRoYXQgbWFwcyB0byB0aGUgYmFzZSBhbmQgYWNjZW50IGdseXBocy4KICAgICAgICAgICAgLy8gSWYgb25lIGRvZXNuJ3QgZXhpc3RzLCBjcmVhdGUgaXQuCiAgICAgICAgICAgIHZhciBjaGFyQ29kZVRvR2x5cGhJZCA9IG5ld01hcHBpbmcuY2hhckNvZGVUb0dseXBoSWQ7CiAgICAgICAgICAgIHZhciBiYXNlRm9udENoYXJDb2RlID0gY3JlYXRlQ2hhckNvZGUoY2hhckNvZGVUb0dseXBoSWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZUdseXBoSWQpOwogICAgICAgICAgICB2YXIgYWNjZW50Rm9udENoYXJDb2RlID0gY3JlYXRlQ2hhckNvZGUoY2hhckNvZGVUb0dseXBoSWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NlbnRHbHlwaElkKTsKICAgICAgICAgICAgc2VhY01hcFtjaGFyQ29kZV0gPSB7CiAgICAgICAgICAgICAgYmFzZUZvbnRDaGFyQ29kZTogYmFzZUZvbnRDaGFyQ29kZSwKICAgICAgICAgICAgICBhY2NlbnRGb250Q2hhckNvZGU6IGFjY2VudEZvbnRDaGFyQ29kZSwKICAgICAgICAgICAgICBhY2NlbnRPZmZzZXQ6IGFjY2VudE9mZnNldAogICAgICAgICAgICB9OwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBwcm9wZXJ0aWVzLnNlYWNNYXAgPSBzZWFjTWFwOwogICAgICB9CgogICAgICB2YXIgdW5pdHNQZXJFbSA9IDEgLyAocHJvcGVydGllcy5mb250TWF0cml4IHx8IEZPTlRfSURFTlRJVFlfTUFUUklYKVswXTsKCiAgICAgIHZhciBidWlsZGVyID0gbmV3IE9wZW5UeXBlRmlsZUJ1aWxkZXIoJ1x4NEZceDU0XHg1NFx4NEYnKTsKICAgICAgLy8gUG9zdFNjcmlwdCBGb250IFByb2dyYW0KICAgICAgYnVpbGRlci5hZGRUYWJsZSgnQ0ZGICcsIGZvbnQuZGF0YSk7CiAgICAgIC8vIE9TLzIgYW5kIFdpbmRvd3MgU3BlY2lmaWMgbWV0cmljcwogICAgICBidWlsZGVyLmFkZFRhYmxlKCdPUy8yJywgY3JlYXRlT1MyVGFibGUocHJvcGVydGllcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld01hcHBpbmcuY2hhckNvZGVUb0dseXBoSWQpKTsKICAgICAgLy8gQ2hhcmFjdGVyIHRvIGdseXBocyBtYXBwaW5nCiAgICAgIGJ1aWxkZXIuYWRkVGFibGUoJ2NtYXAnLCBjcmVhdGVDbWFwVGFibGUobmV3TWFwcGluZy5jaGFyQ29kZVRvR2x5cGhJZCkpOwogICAgICAvLyBGb250IGhlYWRlcgogICAgICBidWlsZGVyLmFkZFRhYmxlKCdoZWFkJywKICAgICAgICAgICAgJ1x4MDBceDAxXHgwMFx4MDAnICsgLy8gVmVyc2lvbiBudW1iZXIKICAgICAgICAgICAgJ1x4MDBceDAwXHgxMFx4MDAnICsgLy8gZm9udFJldmlzaW9uCiAgICAgICAgICAgICdceDAwXHgwMFx4MDBceDAwJyArIC8vIGNoZWNrc3VtQWRqdXN0ZW1lbnQKICAgICAgICAgICAgJ1x4NUZceDBGXHgzQ1x4RjUnICsgLy8gbWFnaWNOdW1iZXIKICAgICAgICAgICAgJ1x4MDBceDAwJyArIC8vIEZsYWdzCiAgICAgICAgICAgIHNhZmVTdHJpbmcxNih1bml0c1BlckVtKSArIC8vIHVuaXRzUGVyRU0KICAgICAgICAgICAgJ1x4MDBceDAwXHgwMFx4MDBceDllXHgwYlx4N2VceDI3JyArIC8vIGNyZWF0aW9uIGRhdGUKICAgICAgICAgICAgJ1x4MDBceDAwXHgwMFx4MDBceDllXHgwYlx4N2VceDI3JyArIC8vIG1vZGlmaWZpY2F0aW9uIGRhdGUKICAgICAgICAgICAgJ1x4MDBceDAwJyArIC8vIHhNaW4KICAgICAgICAgICAgc2FmZVN0cmluZzE2KHByb3BlcnRpZXMuZGVzY2VudCkgKyAvLyB5TWluCiAgICAgICAgICAgICdceDBGXHhGRicgKyAvLyB4TWF4CiAgICAgICAgICAgIHNhZmVTdHJpbmcxNihwcm9wZXJ0aWVzLmFzY2VudCkgKyAvLyB5TWF4CiAgICAgICAgICAgIHN0cmluZzE2KHByb3BlcnRpZXMuaXRhbGljQW5nbGUgPyAyIDogMCkgKyAvLyBtYWNTdHlsZQogICAgICAgICAgICAnXHgwMFx4MTEnICsgLy8gbG93ZXN0UmVjUFBFTQogICAgICAgICAgICAnXHgwMFx4MDAnICsgLy8gZm9udERpcmVjdGlvbkhpbnQKICAgICAgICAgICAgJ1x4MDBceDAwJyArIC8vIGluZGV4VG9Mb2NGb3JtYXQKICAgICAgICAgICAgJ1x4MDBceDAwJyk7ICAvLyBnbHlwaERhdGFGb3JtYXQKCiAgICAgIC8vIEhvcml6b250YWwgaGVhZGVyCiAgICAgIGJ1aWxkZXIuYWRkVGFibGUoJ2hoZWEnLAogICAgICAgICAgICAnXHgwMFx4MDFceDAwXHgwMCcgKyAvLyBWZXJzaW9uIG51bWJlcgogICAgICAgICAgICBzYWZlU3RyaW5nMTYocHJvcGVydGllcy5hc2NlbnQpICsgLy8gVHlwb2dyYXBoaWMgQXNjZW50CiAgICAgICAgICAgIHNhZmVTdHJpbmcxNihwcm9wZXJ0aWVzLmRlc2NlbnQpICsgLy8gVHlwb2dyYXBoaWMgRGVzY2VudAogICAgICAgICAgICAnXHgwMFx4MDAnICsgLy8gTGluZSBHYXAKICAgICAgICAgICAgJ1x4RkZceEZGJyArIC8vIGFkdmFuY2VXaWR0aE1heAogICAgICAgICAgICAnXHgwMFx4MDAnICsgLy8gbWluTGVmdFNpZGViZWFyaW5nCiAgICAgICAgICAgICdceDAwXHgwMCcgKyAvLyBtaW5SaWdodFNpZGViZWFyaW5nCiAgICAgICAgICAgICdceDAwXHgwMCcgKyAvLyB4TWF4RXh0ZW50CiAgICAgICAgICAgIHNhZmVTdHJpbmcxNihwcm9wZXJ0aWVzLmNhcEhlaWdodCkgKyAvLyBjYXJldFNsb3BlUmlzZQogICAgICAgICAgICBzYWZlU3RyaW5nMTYoTWF0aC50YW4ocHJvcGVydGllcy5pdGFsaWNBbmdsZSkgKgogICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllcy54SGVpZ2h0KSArIC8vIGNhcmV0U2xvcGVSdW4KICAgICAgICAgICAgJ1x4MDBceDAwJyArIC8vIGNhcmV0T2Zmc2V0CiAgICAgICAgICAgICdceDAwXHgwMCcgKyAvLyAtcmVzZXJ2ZWQtCiAgICAgICAgICAgICdceDAwXHgwMCcgKyAvLyAtcmVzZXJ2ZWQtCiAgICAgICAgICAgICdceDAwXHgwMCcgKyAvLyAtcmVzZXJ2ZWQtCiAgICAgICAgICAgICdceDAwXHgwMCcgKyAvLyAtcmVzZXJ2ZWQtCiAgICAgICAgICAgICdceDAwXHgwMCcgKyAvLyBtZXRyaWNEYXRhRm9ybWF0CiAgICAgICAgICAgIHN0cmluZzE2KG51bUdseXBocykpOyAvLyBOdW1iZXIgb2YgSE1ldHJpY3MKCiAgICAgIC8vIEhvcml6b250YWwgbWV0cmljcwogICAgICBidWlsZGVyLmFkZFRhYmxlKCdobXR4JywgKGZ1bmN0aW9uIGZvbnRGaWVsZHNIbXR4KCkgewogICAgICAgICAgdmFyIGNoYXJzdHJpbmdzID0gZm9udC5jaGFyc3RyaW5nczsKICAgICAgICAgIHZhciBjZmZXaWR0aHMgPSBmb250LmNmZiA/IGZvbnQuY2ZmLndpZHRocyA6IG51bGw7CiAgICAgICAgICB2YXIgaG10eCA9ICdceDAwXHgwMFx4MDBceDAwJzsgLy8gRmFrZSAubm90ZGVmCiAgICAgICAgICBmb3IgKHZhciBpID0gMSwgaWkgPSBudW1HbHlwaHM7IGkgPCBpaTsgaSsrKSB7CiAgICAgICAgICAgIHZhciB3aWR0aCA9IDA7CiAgICAgICAgICAgIGlmIChjaGFyc3RyaW5ncykgewogICAgICAgICAgICAgIHZhciBjaGFyc3RyaW5nID0gY2hhcnN0cmluZ3NbaSAtIDFdOwogICAgICAgICAgICAgIHdpZHRoID0gJ3dpZHRoJyBpbiBjaGFyc3RyaW5nID8gY2hhcnN0cmluZy53aWR0aCA6IDA7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2ZmV2lkdGhzKSB7CiAgICAgICAgICAgICAgd2lkdGggPSBNYXRoLmNlaWwoY2ZmV2lkdGhzW2ldIHx8IDApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGhtdHggKz0gc3RyaW5nMTYod2lkdGgpICsgc3RyaW5nMTYoMCk7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gaG10eDsKICAgICAgICB9KSgpKTsKCiAgICAgIC8vIE1heGltdW0gcHJvZmlsZQogICAgICBidWlsZGVyLmFkZFRhYmxlKCdtYXhwJywKICAgICAgICAgICAgJ1x4MDBceDAwXHg1MFx4MDAnICsgLy8gVmVyc2lvbiBudW1iZXIKICAgICAgICAgICAgc3RyaW5nMTYobnVtR2x5cGhzKSk7IC8vIE51bSBvZiBnbHlwaHMKCiAgICAgIC8vIE5hbWluZyB0YWJsZXMKICAgICAgYnVpbGRlci5hZGRUYWJsZSgnbmFtZScsIGNyZWF0ZU5hbWVUYWJsZShmb250TmFtZSkpOwoKICAgICAgLy8gUG9zdFNjcmlwdCBpbmZvcm1hdGlvbnMKICAgICAgYnVpbGRlci5hZGRUYWJsZSgncG9zdCcsIGNyZWF0ZVBvc3RUYWJsZShwcm9wZXJ0aWVzKSk7CgogICAgICByZXR1cm4gYnVpbGRlci50b0FycmF5KCk7CiAgICB9LAoKICAgIC8qKgogICAgICogQnVpbGRzIGEgY2hhciBjb2RlIHRvIHVuaWNvZGUgbWFwIGJhc2VkIG9uIHNlY3Rpb24gOS4xMCBvZiB0aGUgc3BlYy4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wZXJ0aWVzIEZvbnQgcHJvcGVydGllcyBvYmplY3QuCiAgICAgKiBAcmV0dXJuIHtPYmplY3R9IEEgVG9Vbmljb2RlTWFwIG9iamVjdC4KICAgICAqLwogICAgYnVpbGRUb1VuaWNvZGU6IGZ1bmN0aW9uIEZvbnRfYnVpbGRUb1VuaWNvZGUocHJvcGVydGllcykgewogICAgICAvLyBTZWN0aW9uIDkuMTAuMiBNYXBwaW5nIENoYXJhY3RlciBDb2RlcyB0byBVbmljb2RlIFZhbHVlcwogICAgICBpZiAocHJvcGVydGllcy50b1VuaWNvZGUgJiYgcHJvcGVydGllcy50b1VuaWNvZGUubGVuZ3RoICE9PSAwKSB7CiAgICAgICAgcmV0dXJuIHByb3BlcnRpZXMudG9Vbmljb2RlOwogICAgICB9CiAgICAgIC8vIEFjY29yZGluZyB0byB0aGUgc3BlYyBpZiB0aGUgZm9udCBpcyBhIHNpbXBsZSBmb250IHdlIHNob3VsZCBvbmx5IG1hcAogICAgICAvLyB0byB1bmljb2RlIGlmIHRoZSBiYXNlIGVuY29kaW5nIGlzIE1hY1JvbWFuLCBNYWNFeHBlcnQsIG9yIFdpbkFuc2kgb3IKICAgICAgLy8gdGhlIGRpZmZlcmVuY2VzIGFycmF5IG9ubHkgY29udGFpbnMgYWRvYmUgc3RhbmRhcmQgb3Igc3ltYm9sIHNldCBuYW1lcywKICAgICAgLy8gaW4gcHJhdGljZSBpdCBzZWVtcyBiZXR0ZXIgdG8gYWx3YXlzIHRyeSB0byBjcmVhdGUgYSB0b1VuaWNvZGUKICAgICAgLy8gbWFwIGJhc2VkIG9mIHRoZSBkZWZhdWx0IGVuY29kaW5nLgogICAgICB2YXIgdG9Vbmljb2RlLCBjaGFyY29kZTsKICAgICAgaWYgKCFwcm9wZXJ0aWVzLmNvbXBvc2l0ZSAvKiBpcyBzaW1wbGUgZm9udCAqLykgewogICAgICAgIHRvVW5pY29kZSA9IFtdOwogICAgICAgIHZhciBlbmNvZGluZyA9IHByb3BlcnRpZXMuZGVmYXVsdEVuY29kaW5nLnNsaWNlKCk7CiAgICAgICAgdmFyIGJhc2VFbmNvZGluZ05hbWUgPSBwcm9wZXJ0aWVzLmJhc2VFbmNvZGluZ05hbWU7CiAgICAgICAgLy8gTWVyZ2UgaW4gdGhlIGRpZmZlcmVuY2VzIGFycmF5LgogICAgICAgIHZhciBkaWZmZXJlbmNlcyA9IHByb3BlcnRpZXMuZGlmZmVyZW5jZXM7CiAgICAgICAgZm9yIChjaGFyY29kZSBpbiBkaWZmZXJlbmNlcykgewogICAgICAgICAgZW5jb2RpbmdbY2hhcmNvZGVdID0gZGlmZmVyZW5jZXNbY2hhcmNvZGVdOwogICAgICAgIH0KICAgICAgICBmb3IgKGNoYXJjb2RlIGluIGVuY29kaW5nKSB7CiAgICAgICAgICAvLyBhKSBNYXAgdGhlIGNoYXJhY3RlciBjb2RlIHRvIGEgY2hhcmFjdGVyIG5hbWUuCiAgICAgICAgICB2YXIgZ2x5cGhOYW1lID0gZW5jb2RpbmdbY2hhcmNvZGVdOwogICAgICAgICAgLy8gYikgTG9vayB1cCB0aGUgY2hhcmFjdGVyIG5hbWUgaW4gdGhlIEFkb2JlIEdseXBoIExpc3QgKHNlZSB0aGUKICAgICAgICAgIC8vICAgIEJpYmxpb2dyYXBoeSkgdG8gb2J0YWluIHRoZSBjb3JyZXNwb25kaW5nIFVuaWNvZGUgdmFsdWUuCiAgICAgICAgICBpZiAoZ2x5cGhOYW1lID09PSAnJykgewogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIH0gZWxzZSBpZiAoR2x5cGhzVW5pY29kZVtnbHlwaE5hbWVdID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgLy8gKHVuZG9jdW1lbnRlZCkgYykgRmV3IGhldXJpc3RpY3MgdG8gcmVjb2duaXplIHVua25vd24gZ2x5cGhzCiAgICAgICAgICAgIC8vIE5PVEU6IEFkb2JlIFJlYWRlciBkb2VzIG5vdCBkbyB0aGlzIHN0ZXAsIGJ1dCBPU1ggUHJldmlldyBkb2VzCiAgICAgICAgICAgIHZhciBjb2RlID0gMDsKICAgICAgICAgICAgc3dpdGNoIChnbHlwaE5hbWVbMF0pIHsKICAgICAgICAgICAgICBjYXNlICdHJzogLy8gR3h4IGdseXBoCiAgICAgICAgICAgICAgICBpZiAoZ2x5cGhOYW1lLmxlbmd0aCA9PT0gMykgewogICAgICAgICAgICAgICAgICBjb2RlID0gcGFyc2VJbnQoZ2x5cGhOYW1lLnN1YnN0cigxKSwgMTYpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgY2FzZSAnZyc6IC8vIGcwMHh4IGdseXBoCiAgICAgICAgICAgICAgICBpZiAoZ2x5cGhOYW1lLmxlbmd0aCA9PT0gNSkgewogICAgICAgICAgICAgICAgICBjb2RlID0gcGFyc2VJbnQoZ2x5cGhOYW1lLnN1YnN0cigxKSwgMTYpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgY2FzZSAnQyc6IC8vIENkZGQgZ2x5cGgKICAgICAgICAgICAgICBjYXNlICdjJzogLy8gY2RkZCBnbHlwaAogICAgICAgICAgICAgICAgaWYgKGdseXBoTmFtZS5sZW5ndGggPj0gMykgewogICAgICAgICAgICAgICAgICBjb2RlID0gK2dseXBoTmFtZS5zdWJzdHIoMSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoY29kZSkgewogICAgICAgICAgICAgIC8vIElmIHxiYXNlRW5jb2RpbmdOYW1lfCBpcyBvbmUgdGhlIHByZWRlZmluZWQgZW5jb2RpbmdzLAogICAgICAgICAgICAgIC8vIGFuZCB8Y29kZXwgZXF1YWxzIHxjaGFyY29kZXwsIHVzaW5nIHRoZSBnbHlwaCBkZWZpbmVkIGluIHRoZQogICAgICAgICAgICAgIC8vIGJhc2VFbmNvZGluZyBzZWVtcyB0byB5aWVsZCBhIGJldHRlciB8dG9Vbmljb2RlfCBtYXBwaW5nCiAgICAgICAgICAgICAgLy8gKGZpeGVzIGlzc3VlIDUwNzApLgogICAgICAgICAgICAgIGlmIChiYXNlRW5jb2RpbmdOYW1lICYmIGNvZGUgPT09ICtjaGFyY29kZSkgewogICAgICAgICAgICAgICAgdmFyIGJhc2VFbmNvZGluZyA9IEVuY29kaW5nc1tiYXNlRW5jb2RpbmdOYW1lXTsKICAgICAgICAgICAgICAgIGlmIChiYXNlRW5jb2RpbmcgJiYgKGdseXBoTmFtZSA9IGJhc2VFbmNvZGluZ1tjaGFyY29kZV0pKSB7CiAgICAgICAgICAgICAgICAgIHRvVW5pY29kZVtjaGFyY29kZV0gPQogICAgICAgICAgICAgICAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoR2x5cGhzVW5pY29kZVtnbHlwaE5hbWVdKTsKICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHRvVW5pY29kZVtjaGFyY29kZV0gPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgfQogICAgICAgICAgdG9Vbmljb2RlW2NoYXJjb2RlXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoR2x5cGhzVW5pY29kZVtnbHlwaE5hbWVdKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG5ldyBUb1VuaWNvZGVNYXAodG9Vbmljb2RlKTsKICAgICAgfQogICAgICAvLyBJZiB0aGUgZm9udCBpcyBhIGNvbXBvc2l0ZSBmb250IHRoYXQgdXNlcyBvbmUgb2YgdGhlIHByZWRlZmluZWQgQ01hcHMKICAgICAgLy8gbGlzdGVkIGluIFRhYmxlIDExOCAoZXhjZXB0IElkZW50aXR54oCTSCBhbmQgSWRlbnRpdHnigJNWKSBvciB3aG9zZQogICAgICAvLyBkZXNjZW5kYW50IENJREZvbnQgdXNlcyB0aGUgQWRvYmUtR0IxLCBBZG9iZS1DTlMxLCBBZG9iZS1KYXBhbjEsIG9yCiAgICAgIC8vIEFkb2JlLUtvcmVhMSBjaGFyYWN0ZXIgY29sbGVjdGlvbjoKICAgICAgaWYgKHByb3BlcnRpZXMuY29tcG9zaXRlICYmICgKICAgICAgICAgICAocHJvcGVydGllcy5jTWFwLmJ1aWx0SW5DTWFwICYmCiAgICAgICAgICAgICEocHJvcGVydGllcy5jTWFwIGluc3RhbmNlb2YgSWRlbnRpdHlDTWFwKSkgfHwKICAgICAgICAgICAocHJvcGVydGllcy5jaWRTeXN0ZW1JbmZvLnJlZ2lzdHJ5ID09PSAnQWRvYmUnICYmCiAgICAgICAgICAgICAocHJvcGVydGllcy5jaWRTeXN0ZW1JbmZvLm9yZGVyaW5nID09PSAnR0IxJyB8fAogICAgICAgICAgICAgIHByb3BlcnRpZXMuY2lkU3lzdGVtSW5mby5vcmRlcmluZyA9PT0gJ0NOUzEnIHx8CiAgICAgICAgICAgICAgcHJvcGVydGllcy5jaWRTeXN0ZW1JbmZvLm9yZGVyaW5nID09PSAnSmFwYW4xJyB8fAogICAgICAgICAgICAgIHByb3BlcnRpZXMuY2lkU3lzdGVtSW5mby5vcmRlcmluZyA9PT0gJ0tvcmVhMScpKSkpIHsKICAgICAgICAvLyBUaGVuOgogICAgICAgIC8vIGEpIE1hcCB0aGUgY2hhcmFjdGVyIGNvZGUgdG8gYSBjaGFyYWN0ZXIgaWRlbnRpZmllciAoQ0lEKSBhY2NvcmRpbmcKICAgICAgICAvLyB0byB0aGUgZm9udOKAmXMgQ01hcC4KICAgICAgICAvLyBiKSBPYnRhaW4gdGhlIHJlZ2lzdHJ5IGFuZCBvcmRlcmluZyBvZiB0aGUgY2hhcmFjdGVyIGNvbGxlY3Rpb24gdXNlZAogICAgICAgIC8vIGJ5IHRoZSBmb2504oCZcyBDTWFwIChmb3IgZXhhbXBsZSwgQWRvYmUgYW5kIEphcGFuMSkgZnJvbSBpdHMKICAgICAgICAvLyBDSURTeXN0ZW1JbmZvIGRpY3Rpb25hcnkuCiAgICAgICAgdmFyIHJlZ2lzdHJ5ID0gcHJvcGVydGllcy5jaWRTeXN0ZW1JbmZvLnJlZ2lzdHJ5OwogICAgICAgIHZhciBvcmRlcmluZyA9IHByb3BlcnRpZXMuY2lkU3lzdGVtSW5mby5vcmRlcmluZzsKICAgICAgICAvLyBjKSBDb25zdHJ1Y3QgYSBzZWNvbmQgQ01hcCBuYW1lIGJ5IGNvbmNhdGVuYXRpbmcgdGhlIHJlZ2lzdHJ5IGFuZAogICAgICAgIC8vIG9yZGVyaW5nIG9idGFpbmVkIGluIHN0ZXAgKGIpIGluIHRoZSBmb3JtYXQgcmVnaXN0cnnigJNvcmRlcmluZ+KAk1VDUzIKICAgICAgICAvLyAoZm9yIGV4YW1wbGUsIEFkb2Jl4oCTSmFwYW4x4oCTVUNTMikuCiAgICAgICAgdmFyIHVjczJDTWFwTmFtZSA9IG5ldyBOYW1lKHJlZ2lzdHJ5ICsgJy0nICsgb3JkZXJpbmcgKyAnLVVDUzInKTsKICAgICAgICAvLyBkKSBPYnRhaW4gdGhlIENNYXAgd2l0aCB0aGUgbmFtZSBjb25zdHJ1Y3RlZCBpbiBzdGVwIChjKSAoYXZhaWxhYmxlCiAgICAgICAgLy8gZnJvbSB0aGUgQVNOIFdlYiBzaXRlOyBzZWUgdGhlIEJpYmxpb2dyYXBoeSkuCiAgICAgICAgdmFyIHVjczJDTWFwID0gQ01hcEZhY3RvcnkuY3JlYXRlKHVjczJDTWFwTmFtZSwKICAgICAgICAgIHsgdXJsOiBQREZKUy5jTWFwVXJsLCBwYWNrZWQ6IFBERkpTLmNNYXBQYWNrZWQgfSwgbnVsbCk7CiAgICAgICAgdmFyIGNNYXAgPSBwcm9wZXJ0aWVzLmNNYXA7CiAgICAgICAgdG9Vbmljb2RlID0gW107CiAgICAgICAgY01hcC5mb3JFYWNoKGZ1bmN0aW9uKGNoYXJjb2RlLCBjaWQpIHsKICAgICAgICAgIGFzc2VydChjaWQgPD0gMHhmZmZmLCAnTWF4IHNpemUgb2YgQ0lEIGlzIDY1LDUzNScpOwogICAgICAgICAgLy8gZSkgTWFwIHRoZSBDSUQgb2J0YWluZWQgaW4gc3RlcCAoYSkgYWNjb3JkaW5nIHRvIHRoZSBDTWFwIG9idGFpbmVkCiAgICAgICAgICAvLyBpbiBzdGVwIChkKSwgcHJvZHVjaW5nIGEgVW5pY29kZSB2YWx1ZS4KICAgICAgICAgIHZhciB1Y3MyID0gdWNzMkNNYXAubG9va3VwKGNpZCk7CiAgICAgICAgICBpZiAodWNzMikgewogICAgICAgICAgICB0b1VuaWNvZGVbY2hhcmNvZGVdID0KICAgICAgICAgICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKCh1Y3MyLmNoYXJDb2RlQXQoMCkgPDwgOCkgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWNzMi5jaGFyQ29kZUF0KDEpKTsKICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICByZXR1cm4gbmV3IFRvVW5pY29kZU1hcCh0b1VuaWNvZGUpOwogICAgICB9CgogICAgICAvLyBUaGUgdmlld2VyJ3MgY2hvaWNlLCBqdXN0IHVzZSBhbiBpZGVudGl0eSBtYXAuCiAgICAgIHJldHVybiBuZXcgSWRlbnRpdHlUb1VuaWNvZGVNYXAocHJvcGVydGllcy5maXJzdENoYXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllcy5sYXN0Q2hhcik7CiAgICB9LAoKICAgIGdldCBzcGFjZVdpZHRoKCkgewogICAgICBpZiAoJ19zaGFkb3dXaWR0aCcgaW4gdGhpcykgewogICAgICAgIHJldHVybiB0aGlzLl9zaGFkb3dXaWR0aDsKICAgICAgfQoKICAgICAgLy8gdHJ5aW5nIHRvIGVzdGltYXRlIHNwYWNlIGNoYXJhY3RlciB3aWR0aAogICAgICB2YXIgcG9zc2libGVTcGFjZVJlcGxhY2VtZW50cyA9IFsnc3BhY2UnLCAnbWludXMnLCAnb25lJywgJ2knXTsKICAgICAgdmFyIHdpZHRoOwogICAgICBmb3IgKHZhciBpID0gMCwgaWkgPSBwb3NzaWJsZVNwYWNlUmVwbGFjZW1lbnRzLmxlbmd0aDsgaSA8IGlpOyBpKyspIHsKICAgICAgICB2YXIgZ2x5cGhOYW1lID0gcG9zc2libGVTcGFjZVJlcGxhY2VtZW50c1tpXTsKICAgICAgICAvLyBpZiBwb3NzaWJsZSwgZ2V0dGluZyB3aWR0aCBieSBnbHlwaCBuYW1lCiAgICAgICAgaWYgKGdseXBoTmFtZSBpbiB0aGlzLndpZHRocykgewogICAgICAgICAgd2lkdGggPSB0aGlzLndpZHRoc1tnbHlwaE5hbWVdOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIHZhciBnbHlwaFVuaWNvZGUgPSBHbHlwaHNVbmljb2RlW2dseXBoTmFtZV07CiAgICAgICAgLy8gZmluZGluZyB0aGUgY2hhcmNvZGUgdmlhIHVuaWNvZGVUb0NJRCBtYXAKICAgICAgICB2YXIgY2hhcmNvZGUgPSAwOwogICAgICAgIGlmICh0aGlzLmNvbXBvc2l0ZSkgewogICAgICAgICAgaWYgKHRoaXMuY01hcC5jb250YWlucyhnbHlwaFVuaWNvZGUpKSB7CiAgICAgICAgICAgIGNoYXJjb2RlID0gdGhpcy5jTWFwLmxvb2t1cChnbHlwaFVuaWNvZGUpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAvLyAuLi4gdmlhIHRvVW5pY29kZSBtYXAKICAgICAgICBpZiAoIWNoYXJjb2RlICYmICd0b1VuaWNvZGUnIGluIHRoaXMpIHsKICAgICAgICAgIGNoYXJjb2RlID0gdGhpcy50b1VuaWNvZGUuY2hhckNvZGVPZihnbHlwaFVuaWNvZGUpOwogICAgICAgIH0KICAgICAgICAvLyBzZXR0aW5nIGl0IHRvIHVuaWNvZGUgaWYgbmVnYXRpdmUgb3IgdW5kZWZpbmVkCiAgICAgICAgaWYgKGNoYXJjb2RlIDw9IDApIHsKICAgICAgICAgIGNoYXJjb2RlID0gZ2x5cGhVbmljb2RlOwogICAgICAgIH0KICAgICAgICAvLyB0cnlpbmcgdG8gZ2V0IHdpZHRoIHZpYSBjaGFyY29kZQogICAgICAgIHdpZHRoID0gdGhpcy53aWR0aHNbY2hhcmNvZGVdOwogICAgICAgIGlmICh3aWR0aCkgewogICAgICAgICAgYnJlYWs7IC8vIHRoZSBub24temVybyB3aWR0aCBmb3VuZAogICAgICAgIH0KICAgICAgfQogICAgICB3aWR0aCA9IHdpZHRoIHx8IHRoaXMuZGVmYXVsdFdpZHRoOwogICAgICAvLyBEbyBub3Qgc2hhZG93IHRoZSBwcm9wZXJ0eSBoZXJlLiBTZWUgZGlzY3Vzc2lvbjoKICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21vemlsbGEvcGRmLmpzL3B1bGwvMjEyNyNkaXNjdXNzaW9uX3IxNjYyMjgwCiAgICAgIHRoaXMuX3NoYWRvd1dpZHRoID0gd2lkdGg7CiAgICAgIHJldHVybiB3aWR0aDsKICAgIH0sCgogICAgY2hhclRvR2x5cGg6IGZ1bmN0aW9uIEZvbnRfY2hhclRvR2x5cGgoY2hhcmNvZGUpIHsKICAgICAgdmFyIGZvbnRDaGFyQ29kZSwgd2lkdGgsIG9wZXJhdG9yTGlzdElkOwoKICAgICAgdmFyIHdpZHRoQ29kZSA9IGNoYXJjb2RlOwogICAgICBpZiAodGhpcy5jTWFwICYmIHRoaXMuY01hcC5jb250YWlucyhjaGFyY29kZSkpIHsKICAgICAgICB3aWR0aENvZGUgPSB0aGlzLmNNYXAubG9va3VwKGNoYXJjb2RlKTsKICAgICAgfQogICAgICB3aWR0aCA9IHRoaXMud2lkdGhzW3dpZHRoQ29kZV07CiAgICAgIHdpZHRoID0gaXNOdW0od2lkdGgpID8gd2lkdGggOiB0aGlzLmRlZmF1bHRXaWR0aDsKICAgICAgdmFyIHZtZXRyaWMgPSB0aGlzLnZtZXRyaWNzICYmIHRoaXMudm1ldHJpY3Nbd2lkdGhDb2RlXTsKCiAgICAgIHZhciB1bmljb2RlID0gdGhpcy50b1VuaWNvZGUuZ2V0KGNoYXJjb2RlKSB8fCBjaGFyY29kZTsKICAgICAgaWYgKHR5cGVvZiB1bmljb2RlID09PSAnbnVtYmVyJykgewogICAgICAgIHVuaWNvZGUgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHVuaWNvZGUpOwogICAgICB9CgogICAgICAvLyBGaXJzdCB0cnkgdGhlIHRvRm9udENoYXIgbWFwLCBpZiBpdCdzIG5vdCB0aGVyZSB0aGVuIHRyeSBmYWxsaW5nCiAgICAgIC8vIGJhY2sgdG8gdGhlIGNoYXIgY29kZS4KICAgICAgZm9udENoYXJDb2RlID0gdGhpcy50b0ZvbnRDaGFyW2NoYXJjb2RlXSB8fCBjaGFyY29kZTsKICAgICAgaWYgKHRoaXMubWlzc2luZ0ZpbGUpIHsKICAgICAgICBmb250Q2hhckNvZGUgPSBtYXBTcGVjaWFsVW5pY29kZVZhbHVlcyhmb250Q2hhckNvZGUpOwogICAgICB9CgogICAgICBpZiAodGhpcy5pc1R5cGUzRm9udCkgewogICAgICAgIC8vIEZvbnQgY2hhciBjb2RlIGluIHRoaXMgY2FzZSBpcyBhY3R1YWxseSBhIGdseXBoIG5hbWUuCiAgICAgICAgb3BlcmF0b3JMaXN0SWQgPSBmb250Q2hhckNvZGU7CiAgICAgIH0KCiAgICAgIHZhciBhY2NlbnQgPSBudWxsOwogICAgICBpZiAodGhpcy5zZWFjTWFwICYmIHRoaXMuc2VhY01hcFtjaGFyY29kZV0pIHsKICAgICAgICB2YXIgc2VhYyA9IHRoaXMuc2VhY01hcFtjaGFyY29kZV07CiAgICAgICAgZm9udENoYXJDb2RlID0gc2VhYy5iYXNlRm9udENoYXJDb2RlOwogICAgICAgIGFjY2VudCA9IHsKICAgICAgICAgIGZvbnRDaGFyOiBTdHJpbmcuZnJvbUNoYXJDb2RlKHNlYWMuYWNjZW50Rm9udENoYXJDb2RlKSwKICAgICAgICAgIG9mZnNldDogc2VhYy5hY2NlbnRPZmZzZXQKICAgICAgICB9OwogICAgICB9CgogICAgICB2YXIgZm9udENoYXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGZvbnRDaGFyQ29kZSk7CgogICAgICB2YXIgZ2x5cGggPSB0aGlzLmdseXBoQ2FjaGVbY2hhcmNvZGVdOwogICAgICBpZiAoIWdseXBoIHx8CiAgICAgICAgICAhZ2x5cGgubWF0Y2hlc0ZvckNhY2hlKGZvbnRDaGFyLCB1bmljb2RlLCBhY2NlbnQsIHdpZHRoLCB2bWV0cmljLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvckxpc3RJZCkpIHsKICAgICAgICBnbHlwaCA9IG5ldyBHbHlwaChmb250Q2hhciwgdW5pY29kZSwgYWNjZW50LCB3aWR0aCwgdm1ldHJpYywKICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvckxpc3RJZCk7CiAgICAgICAgdGhpcy5nbHlwaENhY2hlW2NoYXJjb2RlXSA9IGdseXBoOwogICAgICB9CiAgICAgIHJldHVybiBnbHlwaDsKICAgIH0sCgogICAgY2hhcnNUb0dseXBoczogZnVuY3Rpb24gRm9udF9jaGFyc1RvR2x5cGhzKGNoYXJzKSB7CiAgICAgIHZhciBjaGFyc0NhY2hlID0gdGhpcy5jaGFyc0NhY2hlOwogICAgICB2YXIgZ2x5cGhzLCBnbHlwaCwgY2hhcmNvZGU7CgogICAgICAvLyBpZiB3ZSB0cmFuc2xhdGVkIHRoaXMgc3RyaW5nIGJlZm9yZSwganVzdCBncmFiIGl0IGZyb20gdGhlIGNhY2hlCiAgICAgIGlmIChjaGFyc0NhY2hlKSB7CiAgICAgICAgZ2x5cGhzID0gY2hhcnNDYWNoZVtjaGFyc107CiAgICAgICAgaWYgKGdseXBocykgewogICAgICAgICAgcmV0dXJuIGdseXBoczsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIGxhemlseSBjcmVhdGUgdGhlIHRyYW5zbGF0aW9uIGNhY2hlCiAgICAgIGlmICghY2hhcnNDYWNoZSkgewogICAgICAgIGNoYXJzQ2FjaGUgPSB0aGlzLmNoYXJzQ2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpOwogICAgICB9CgogICAgICBnbHlwaHMgPSBbXTsKICAgICAgdmFyIGNoYXJzQ2FjaGVLZXkgPSBjaGFyczsKICAgICAgdmFyIGkgPSAwLCBpaTsKCiAgICAgIGlmICh0aGlzLmNNYXApIHsKICAgICAgICAvLyBjb21wb3NpdGUgZm9udHMgaGF2ZSBtdWx0aS1ieXRlIHN0cmluZ3MgY29udmVydCB0aGUgc3RyaW5nIGZyb20KICAgICAgICAvLyBzaW5nbGUtYnl0ZSB0byBtdWx0aS1ieXRlCiAgICAgICAgdmFyIGMgPSB7fTsKICAgICAgICB3aGlsZSAoaSA8IGNoYXJzLmxlbmd0aCkgewogICAgICAgICAgdGhpcy5jTWFwLnJlYWRDaGFyQ29kZShjaGFycywgaSwgYyk7CiAgICAgICAgICBjaGFyY29kZSA9IGMuY2hhcmNvZGU7CiAgICAgICAgICB2YXIgbGVuZ3RoID0gYy5sZW5ndGg7CiAgICAgICAgICBpICs9IGxlbmd0aDsKICAgICAgICAgIGdseXBoID0gdGhpcy5jaGFyVG9HbHlwaChjaGFyY29kZSk7CiAgICAgICAgICBnbHlwaHMucHVzaChnbHlwaCk7CiAgICAgICAgICAvLyBwbGFjaW5nIG51bGwgYWZ0ZXIgZWFjaCB3b3JkIGJyZWFrIGNoYXJjb2RlIChBU0NJSSBTUEFDRSkKICAgICAgICAgIC8vIElnbm9yZSBvY2N1cmVuY2VzIG9mIDB4MjAgaW4gbXVsdGlwbGUtYnl0ZSBjb2Rlcy4KICAgICAgICAgIGlmIChsZW5ndGggPT09IDEgJiYgY2hhcnMuY2hhckNvZGVBdChpIC0gMSkgPT09IDB4MjApIHsKICAgICAgICAgICAgZ2x5cGhzLnB1c2gobnVsbCk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIGZvciAoaSA9IDAsIGlpID0gY2hhcnMubGVuZ3RoOyBpIDwgaWk7ICsraSkgewogICAgICAgICAgY2hhcmNvZGUgPSBjaGFycy5jaGFyQ29kZUF0KGkpOwogICAgICAgICAgZ2x5cGggPSB0aGlzLmNoYXJUb0dseXBoKGNoYXJjb2RlKTsKICAgICAgICAgIGdseXBocy5wdXNoKGdseXBoKTsKICAgICAgICAgIGlmIChjaGFyY29kZSA9PT0gMHgyMCkgewogICAgICAgICAgICBnbHlwaHMucHVzaChudWxsKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIEVudGVyIHRoZSB0cmFuc2xhdGVkIHN0cmluZyBpbnRvIHRoZSBjYWNoZQogICAgICByZXR1cm4gKGNoYXJzQ2FjaGVbY2hhcnNDYWNoZUtleV0gPSBnbHlwaHMpOwogICAgfQogIH07CgogIHJldHVybiBGb250Owp9KSgpOwoKdmFyIEVycm9yRm9udCA9IChmdW5jdGlvbiBFcnJvckZvbnRDbG9zdXJlKCkgewogIGZ1bmN0aW9uIEVycm9yRm9udChlcnJvcikgewogICAgdGhpcy5lcnJvciA9IGVycm9yOwogICAgdGhpcy5sb2FkZWROYW1lID0gJ2dfZm9udF9lcnJvcic7CiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTsKICB9CgogIEVycm9yRm9udC5wcm90b3R5cGUgPSB7CiAgICBjaGFyc1RvR2x5cGhzOiBmdW5jdGlvbiBFcnJvckZvbnRfY2hhcnNUb0dseXBocygpIHsKICAgICAgcmV0dXJuIFtdOwogICAgfSwKICAgIGV4cG9ydERhdGE6IGZ1bmN0aW9uIEVycm9yRm9udF9leHBvcnREYXRhKCkgewogICAgICByZXR1cm4ge2Vycm9yOiB0aGlzLmVycm9yfTsKICAgIH0KICB9OwoKICByZXR1cm4gRXJyb3JGb250Owp9KSgpOwoKLyoqCiAqIFNoYXJlZCBsb2dpYyBmb3IgYnVpbGRpbmcgYSBjaGFyIGNvZGUgdG8gZ2x5cGggaWQgbWFwcGluZyBmb3IgVHlwZTEgYW5kCiAqIHNpbXBsZSBDRkYgZm9udHMuIFNlZSBzZWN0aW9uIDkuNi42LjIgb2YgdGhlIHNwZWMuCiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wZXJ0aWVzIEZvbnQgcHJvcGVydGllcyBvYmplY3QuCiAqIEBwYXJhbSB7T2JqZWN0fSBidWlsdEluRW5jb2RpbmcgVGhlIGVuY29kaW5nIGNvbnRhaW5lZCB3aXRoaW4gdGhlIGFjdHVhbCBmb250CiAqIGRhdGEuCiAqIEBwYXJhbSB7QXJyYXl9IEFycmF5IG9mIGdseXBoIG5hbWVzIHdoZXJlIHRoZSBpbmRleCBpcyB0aGUgZ2x5cGggSUQuCiAqIEByZXR1cm5zIHtPYmplY3R9IEEgY2hhciBjb2RlIHRvIGdseXBoIElEIG1hcC4KICovCmZ1bmN0aW9uIHR5cGUxRm9udEdseXBoTWFwcGluZyhwcm9wZXJ0aWVzLCBidWlsdEluRW5jb2RpbmcsIGdseXBoTmFtZXMpIHsKICB2YXIgY2hhckNvZGVUb0dseXBoSWQgPSBPYmplY3QuY3JlYXRlKG51bGwpOwogIHZhciBnbHlwaElkLCBjaGFyQ29kZSwgYmFzZUVuY29kaW5nOwoKICBpZiAocHJvcGVydGllcy5iYXNlRW5jb2RpbmdOYW1lKSB7CiAgICAvLyBJZiBhIHZhbGlkIGJhc2UgZW5jb2RpbmcgbmFtZSB3YXMgdXNlZCwgdGhlIG1hcHBpbmcgaXMgaW5pdGlhbGl6ZWQgd2l0aAogICAgLy8gdGhhdC4KICAgIGJhc2VFbmNvZGluZyA9IEVuY29kaW5nc1twcm9wZXJ0aWVzLmJhc2VFbmNvZGluZ05hbWVdOwogICAgZm9yIChjaGFyQ29kZSA9IDA7IGNoYXJDb2RlIDwgYmFzZUVuY29kaW5nLmxlbmd0aDsgY2hhckNvZGUrKykgewogICAgICBnbHlwaElkID0gZ2x5cGhOYW1lcy5pbmRleE9mKGJhc2VFbmNvZGluZ1tjaGFyQ29kZV0pOwogICAgICBpZiAoZ2x5cGhJZCA+PSAwKSB7CiAgICAgICAgY2hhckNvZGVUb0dseXBoSWRbY2hhckNvZGVdID0gZ2x5cGhJZDsKICAgICAgfSBlbHNlIHsKICAgICAgICBjaGFyQ29kZVRvR2x5cGhJZFtjaGFyQ29kZV0gPSAwOyAvLyBub3RkZWYKICAgICAgfQogICAgfQogIH0gZWxzZSBpZiAoISEocHJvcGVydGllcy5mbGFncyAmIEZvbnRGbGFncy5TeW1ib2xpYykpIHsKICAgIC8vIEZvciBhIHN5bWJvbGljIGZvbnQgdGhlIGVuY29kaW5nIHNob3VsZCBiZSB0aGUgZm9udHMgYnVpbHQtaW4KICAgIC8vIGVuY29kaW5nLgogICAgZm9yIChjaGFyQ29kZSBpbiBidWlsdEluRW5jb2RpbmcpIHsKICAgICAgY2hhckNvZGVUb0dseXBoSWRbY2hhckNvZGVdID0gYnVpbHRJbkVuY29kaW5nW2NoYXJDb2RlXTsKICAgIH0KICB9IGVsc2UgewogICAgLy8gRm9yIG5vbi1zeW1ib2xpYyBmb250cyB0aGF0IGRvbid0IGhhdmUgYSBiYXNlIGVuY29kaW5nIHRoZSBzdGFuZGFyZAogICAgLy8gZW5jb2Rpbmcgc2hvdWxkIGJlIHVzZWQuCiAgICBiYXNlRW5jb2RpbmcgPSBFbmNvZGluZ3MuU3RhbmRhcmRFbmNvZGluZzsKICAgIGZvciAoY2hhckNvZGUgPSAwOyBjaGFyQ29kZSA8IGJhc2VFbmNvZGluZy5sZW5ndGg7IGNoYXJDb2RlKyspIHsKICAgICAgZ2x5cGhJZCA9IGdseXBoTmFtZXMuaW5kZXhPZihiYXNlRW5jb2RpbmdbY2hhckNvZGVdKTsKICAgICAgaWYgKGdseXBoSWQgPj0gMCkgewogICAgICAgIGNoYXJDb2RlVG9HbHlwaElkW2NoYXJDb2RlXSA9IGdseXBoSWQ7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgY2hhckNvZGVUb0dseXBoSWRbY2hhckNvZGVdID0gMDsgLy8gbm90ZGVmCiAgICAgIH0KICAgIH0KICB9CgogIC8vIExhc3RseSwgbWVyZ2UgaW4gdGhlIGRpZmZlcmVuY2VzLgogIHZhciBkaWZmZXJlbmNlcyA9IHByb3BlcnRpZXMuZGlmZmVyZW5jZXM7CiAgaWYgKGRpZmZlcmVuY2VzKSB7CiAgICBmb3IgKGNoYXJDb2RlIGluIGRpZmZlcmVuY2VzKSB7CiAgICAgIHZhciBnbHlwaE5hbWUgPSBkaWZmZXJlbmNlc1tjaGFyQ29kZV07CiAgICAgIGdseXBoSWQgPSBnbHlwaE5hbWVzLmluZGV4T2YoZ2x5cGhOYW1lKTsKICAgICAgaWYgKGdseXBoSWQgPj0gMCkgewogICAgICAgIGNoYXJDb2RlVG9HbHlwaElkW2NoYXJDb2RlXSA9IGdseXBoSWQ7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgY2hhckNvZGVUb0dseXBoSWRbY2hhckNvZGVdID0gMDsgLy8gbm90ZGVmCiAgICAgIH0KICAgIH0KICB9CiAgcmV0dXJuIGNoYXJDb2RlVG9HbHlwaElkOwp9CgovKgogKiBDaGFyU3RyaW5ncyBhcmUgZW5jb2RlZCBmb2xsb3dpbmcgdGhlIHRoZSBDaGFyU3RyaW5nIEVuY29kaW5nIHNlcXVlbmNlCiAqIGRlc2NyaWJlIGluIENoYXB0ZXIgNiBvZiB0aGUgIkFkb2JlIFR5cGUxIEZvbnQgRm9ybWF0IiBzcGVjaWZpY2F0aW9uLgogKiBUaGUgdmFsdWUgaW4gYSBieXRlIGluZGljYXRlcyBhIGNvbW1hbmQsIGEgbnVtYmVyLCBvciBzdWJzZXF1ZW50IGJ5dGVzCiAqIHRoYXQgYXJlIHRvIGJlIGludGVycHJldGVkIGluIGEgc3BlY2lhbCB3YXkuCiAqCiAqIENoYXJTdHJpbmcgTnVtYmVyIEVuY29kaW5nOgogKiAgQSBDaGFyU3RyaW5nIGJ5dGUgY29udGFpbmluZyB0aGUgdmFsdWVzIGZyb20gMzIgdGhyb3VnaCAyNTUgaW5jbHVzaXZlCiAqICBpbmRpY2F0ZSBhbiBpbnRlZ2VyLiBUaGVzZSB2YWx1ZXMgYXJlIGRlY29kZWQgaW4gZm91ciByYW5nZXMuCiAqCiAqIDEuIEEgQ2hhclN0cmluZyBieXRlIGNvbnRhaW5pbmcgYSB2YWx1ZSwgdiwgYmV0d2VlbiAzMiBhbmQgMjQ2IGluY2x1c2l2ZSwKICogaW5kaWNhdGUgdGhlIGludGVnZXIgdiAtIDEzOS4gVGh1cywgdGhlIGludGVnZXIgdmFsdWVzIGZyb20gLTEwNyB0aHJvdWdoCiAqIDEwNyBpbmNsdXNpdmUgbWF5IGJlIGVuY29kZWQgaW4gc2luZ2xlIGJ5dGUuCiAqCiAqIDIuIEEgQ2hhclN0cmluZyBieXRlIGNvbnRhaW5pbmcgYSB2YWx1ZSwgdiwgYmV0d2VlbiAyNDcgYW5kIDI1MCBpbmNsdXNpdmUsCiAqIGluZGljYXRlcyBhbiBpbnRlZ2VyIGludm9sdmluZyB0aGUgbmV4dCBieXRlLCB3LCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE6CiAqIFsodiAtIDI0NykgeCAyNTZdICsgdyArIDEwOAogKgogKiAzLiBBIENoYXJTdHJpbmcgYnl0ZSBjb250YWluaW5nIGEgdmFsdWUsIHYsIGJldHdlZW4gMjUxIGFuZCAyNTQgaW5jbHVzaXZlLAogKiBpbmRpY2F0ZXMgYW4gaW50ZWdlciBpbnZvbHZpbmcgdGhlIG5leHQgYnl0ZSwgdywgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOgogKiAtWyh2IC0gMjUxKSAqIDI1Nl0gLSB3IC0gMTA4CiAqCiAqIDQuIEEgQ2hhclN0cmluZyBjb250YWluaW5nIHRoZSB2YWx1ZSAyNTUgaW5kaWNhdGVzIHRoYXQgdGhlIG5leHQgNCBieXRlcwogKiBhcmUgYSB0d28gY29tcGxlbWVudCBzaWduZWQgaW50ZWdlci4gVGhlIGZpcnN0IG9mIHRoZXNlIGJ5dGVzIGNvbnRhaW5zIHRoZQogKiBoaWdoZXN0IG9yZGVyIGJpdHMsIHRoZSBzZWNvbmQgYnl0ZSBjb250YWlucyB0aGUgbmV4dCBoaWdoZXIgb3JkZXIgYml0cwogKiBhbmQgdGhlIGZvdXJ0aCBieXRlIGNvbnRhaW4gdGhlIGxvd2VzdCBvcmRlciBiaXRzLgogKgogKgogKiBDaGFyU3RyaW5nIENvbW1hbmQgRW5jb2Rpbmc6CiAqICBDaGFyU3RyaW5ncyBjb21tYW5kcyBhcmUgZW5jb2RlZCBpbiAxIG9yIDIgYnl0ZXMuCiAqCiAqICBTaW5nbGUgYnl0ZSBjb21tYW5kcyBhcmUgZW5jb2RlZCBpbiAxIGJ5dGUgdGhhdCBjb250YWlucyBhIHZhbHVlIGJldHdlZW4KICogIDAgYW5kIDMxIGluY2x1c2l2ZS4KICogIElmIGEgY29tbWFuZCBieXRlIGNvbnRhaW5zIHRoZSB2YWx1ZSAxMiwgdGhlbiB0aGUgdmFsdWUgaW4gdGhlIG5leHQgYnl0ZQogKiAgaW5kaWNhdGVzIGEgY29tbWFuZC4gVGhpcyAiZXNjYXBlIiBtZWNoYW5pc20gYWxsb3dzIG1hbnkgZXh0cmEgY29tbWFuZHMKICogdG8gYmUgZW5jb2RlZCBhbmQgdGhpcyBlbmNvZGluZyB0ZWNobmlxdWUgaGVscHMgdG8gbWluaW1pemUgdGhlIGxlbmd0aCBvZgogKiB0aGUgY2hhclN0cmluZ3MuCiAqLwp2YXIgVHlwZTFDaGFyU3RyaW5nID0gKGZ1bmN0aW9uIFR5cGUxQ2hhclN0cmluZ0Nsb3N1cmUoKSB7CiAgdmFyIENPTU1BTkRfTUFQID0gewogICAgJ2hzdGVtJzogWzFdLAogICAgJ3ZzdGVtJzogWzNdLAogICAgJ3Ztb3ZldG8nOiBbNF0sCiAgICAncmxpbmV0byc6IFs1XSwKICAgICdobGluZXRvJzogWzZdLAogICAgJ3ZsaW5ldG8nOiBbN10sCiAgICAncnJjdXJ2ZXRvJzogWzhdLAogICAgJ2NhbGxzdWJyJzogWzEwXSwKICAgICdmbGV4JzogWzEyLCAzNV0sCiAgICAnZHJvcCcgOiBbMTIsIDE4XSwKICAgICdlbmRjaGFyJzogWzE0XSwKICAgICdybW92ZXRvJzogWzIxXSwKICAgICdobW92ZXRvJzogWzIyXSwKICAgICd2aGN1cnZldG8nOiBbMzBdLAogICAgJ2h2Y3VydmV0byc6IFszMV0KICB9OwoKICBmdW5jdGlvbiBUeXBlMUNoYXJTdHJpbmcoKSB7CiAgICB0aGlzLndpZHRoID0gMDsKICAgIHRoaXMubHNiID0gMDsKICAgIHRoaXMuZmxleGluZyA9IGZhbHNlOwogICAgdGhpcy5vdXRwdXQgPSBbXTsKICAgIHRoaXMuc3RhY2sgPSBbXTsKICB9CgogIFR5cGUxQ2hhclN0cmluZy5wcm90b3R5cGUgPSB7CiAgICBjb252ZXJ0OiBmdW5jdGlvbiBUeXBlMUNoYXJTdHJpbmdfY29udmVydChlbmNvZGVkLCBzdWJycykgewogICAgICB2YXIgY291bnQgPSBlbmNvZGVkLmxlbmd0aDsKICAgICAgdmFyIGVycm9yID0gZmFsc2U7CiAgICAgIHZhciB3eCwgc2J4LCBzdWJyTnVtYmVyOwogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKICAgICAgICB2YXIgdmFsdWUgPSBlbmNvZGVkW2ldOwogICAgICAgIGlmICh2YWx1ZSA8IDMyKSB7CiAgICAgICAgICBpZiAodmFsdWUgPT09IDEyKSB7CiAgICAgICAgICAgIHZhbHVlID0gKHZhbHVlIDw8IDgpICsgZW5jb2RlZFsrK2ldOwogICAgICAgICAgfQogICAgICAgICAgc3dpdGNoICh2YWx1ZSkgewogICAgICAgICAgICBjYXNlIDE6IC8vIGhzdGVtCiAgICAgICAgICAgICAgaWYgKCFISU5USU5HX0VOQUJMRUQpIHsKICAgICAgICAgICAgICAgIHRoaXMuc3RhY2sgPSBbXTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBlcnJvciA9IHRoaXMuZXhlY3V0ZUNvbW1hbmQoMiwgQ09NTUFORF9NQVAuaHN0ZW0pOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDM6IC8vIHZzdGVtCiAgICAgICAgICAgICAgaWYgKCFISU5USU5HX0VOQUJMRUQpIHsKICAgICAgICAgICAgICAgIHRoaXMuc3RhY2sgPSBbXTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBlcnJvciA9IHRoaXMuZXhlY3V0ZUNvbW1hbmQoMiwgQ09NTUFORF9NQVAudnN0ZW0pOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDQ6IC8vIHZtb3ZldG8KICAgICAgICAgICAgICBpZiAodGhpcy5mbGV4aW5nKSB7CiAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGFjay5sZW5ndGggPCAxKSB7CiAgICAgICAgICAgICAgICAgIGVycm9yID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAvLyBBZGQgdGhlIGR4IGZvciBmbGV4IGFuZCBidXQgYWxzbyBzd2FwIHRoZSB2YWx1ZXMgc28gdGhleSBhcmUKICAgICAgICAgICAgICAgIC8vIHRoZSByaWdodCBvcmRlci4KICAgICAgICAgICAgICAgIHZhciBkeSA9IHRoaXMuc3RhY2sucG9wKCk7CiAgICAgICAgICAgICAgICB0aGlzLnN0YWNrLnB1c2goMCwgZHkpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVycm9yID0gdGhpcy5leGVjdXRlQ29tbWFuZCgxLCBDT01NQU5EX01BUC52bW92ZXRvKTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA1OiAvLyBybGluZXRvCiAgICAgICAgICAgICAgZXJyb3IgPSB0aGlzLmV4ZWN1dGVDb21tYW5kKDIsIENPTU1BTkRfTUFQLnJsaW5ldG8pOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDY6IC8vIGhsaW5ldG8KICAgICAgICAgICAgICBlcnJvciA9IHRoaXMuZXhlY3V0ZUNvbW1hbmQoMSwgQ09NTUFORF9NQVAuaGxpbmV0byk7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgNzogLy8gdmxpbmV0bwogICAgICAgICAgICAgIGVycm9yID0gdGhpcy5leGVjdXRlQ29tbWFuZCgxLCBDT01NQU5EX01BUC52bGluZXRvKTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA4OiAvLyBycmN1cnZldG8KICAgICAgICAgICAgICBlcnJvciA9IHRoaXMuZXhlY3V0ZUNvbW1hbmQoNiwgQ09NTUFORF9NQVAucnJjdXJ2ZXRvKTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA5OiAvLyBjbG9zZXBhdGgKICAgICAgICAgICAgICAvLyBjbG9zZXBhdGggaXMgYSBUeXBlMSBjb21tYW5kIHRoYXQgZG9lcyBub3QgdGFrZSBhcmd1bWVudCBhbmQgaXMKICAgICAgICAgICAgICAvLyB1c2VsZXNzIGluIFR5cGUyIGFuZCBpdCBjYW4gc2ltcGx5IGJlIGlnbm9yZWQuCiAgICAgICAgICAgICAgdGhpcy5zdGFjayA9IFtdOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDEwOiAvLyBjYWxsc3VicgogICAgICAgICAgICAgIGlmICh0aGlzLnN0YWNrLmxlbmd0aCA8IDEpIHsKICAgICAgICAgICAgICAgIGVycm9yID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBzdWJyTnVtYmVyID0gdGhpcy5zdGFjay5wb3AoKTsKICAgICAgICAgICAgICBlcnJvciA9IHRoaXMuY29udmVydChzdWJyc1tzdWJyTnVtYmVyXSwgc3VicnMpOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDExOiAvLyByZXR1cm4KICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CiAgICAgICAgICAgIGNhc2UgMTM6IC8vIGhzYncKICAgICAgICAgICAgICBpZiAodGhpcy5zdGFjay5sZW5ndGggPCAyKSB7CiAgICAgICAgICAgICAgICBlcnJvciA9IHRydWU7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgLy8gVG8gY29udmVydCB0byB0eXBlMiB3ZSBoYXZlIHRvIG1vdmUgdGhlIHdpZHRoIHZhbHVlIHRvIHRoZQogICAgICAgICAgICAgIC8vIGZpcnN0IHBhcnQgb2YgdGhlIGNoYXJzdHJpbmcgYW5kIHRoZW4gdXNlIGhtb3ZldG8gd2l0aCBsc2IuCiAgICAgICAgICAgICAgd3ggPSB0aGlzLnN0YWNrLnBvcCgpOwogICAgICAgICAgICAgIHNieCA9IHRoaXMuc3RhY2sucG9wKCk7CiAgICAgICAgICAgICAgdGhpcy5sc2IgPSBzYng7CiAgICAgICAgICAgICAgdGhpcy53aWR0aCA9IHd4OwogICAgICAgICAgICAgIHRoaXMuc3RhY2sucHVzaCh3eCwgc2J4KTsKICAgICAgICAgICAgICBlcnJvciA9IHRoaXMuZXhlY3V0ZUNvbW1hbmQoMiwgQ09NTUFORF9NQVAuaG1vdmV0byk7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMTQ6IC8vIGVuZGNoYXIKICAgICAgICAgICAgICB0aGlzLm91dHB1dC5wdXNoKENPTU1BTkRfTUFQLmVuZGNoYXJbMF0pOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDIxOiAvLyBybW92ZXRvCiAgICAgICAgICAgICAgaWYgKHRoaXMuZmxleGluZykgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVycm9yID0gdGhpcy5leGVjdXRlQ29tbWFuZCgyLCBDT01NQU5EX01BUC5ybW92ZXRvKTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAyMjogLy8gaG1vdmV0bwogICAgICAgICAgICAgIGlmICh0aGlzLmZsZXhpbmcpIHsKICAgICAgICAgICAgICAgIC8vIEFkZCB0aGUgZHkgZm9yIGZsZXguCiAgICAgICAgICAgICAgICB0aGlzLnN0YWNrLnB1c2goMCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZXJyb3IgPSB0aGlzLmV4ZWN1dGVDb21tYW5kKDEsIENPTU1BTkRfTUFQLmhtb3ZldG8pOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDMwOiAvLyB2aGN1cnZldG8KICAgICAgICAgICAgICBlcnJvciA9IHRoaXMuZXhlY3V0ZUNvbW1hbmQoNCwgQ09NTUFORF9NQVAudmhjdXJ2ZXRvKTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAzMTogLy8gaHZjdXJ2ZXRvCiAgICAgICAgICAgICAgZXJyb3IgPSB0aGlzLmV4ZWN1dGVDb21tYW5kKDQsIENPTU1BTkRfTUFQLmh2Y3VydmV0byk7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgKDEyIDw8IDgpICsgMDogLy8gZG90c2VjdGlvbgogICAgICAgICAgICAgIC8vIGRvdHNlY3Rpb24gaXMgYSBUeXBlMSBjb21tYW5kIHRvIHNwZWNpZnkgc29tZSBoaW50aW5nIGZlYXR1cmUKICAgICAgICAgICAgICAvLyBmb3IgZG90cyB0aGF0IGRvIG5vdCB0YWtlIGEgcGFyYW1ldGVyIGFuZCBpdCBjYW4gc2FmZWx5IGJlCiAgICAgICAgICAgICAgLy8gaWdub3JlZCBmb3IgVHlwZTIuCiAgICAgICAgICAgICAgdGhpcy5zdGFjayA9IFtdOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICgxMiA8PCA4KSArIDE6IC8vIHZzdGVtMwogICAgICAgICAgICAgIGlmICghSElOVElOR19FTkFCTEVEKSB7CiAgICAgICAgICAgICAgICB0aGlzLnN0YWNrID0gW107CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgLy8gW3ZoXXN0ZW0zIGFyZSBUeXBlMSBvbmx5IGFuZCBUeXBlMiBzdXBwb3J0cyBbdmhdc3RlbSB3aXRoCiAgICAgICAgICAgICAgLy8gbXVsdGlwbGUgcGFyYW1ldGVycywgc28gaW5zdGVhZCBvZiByZXR1cm5pbmcgW3ZoXXN0ZW0zIHRha2UgYQogICAgICAgICAgICAgIC8vIHNob3J0Y3V0IGFuZCByZXR1cm4gW3Zoc3RlbV0gaW5zdGVhZC4KICAgICAgICAgICAgICBlcnJvciA9IHRoaXMuZXhlY3V0ZUNvbW1hbmQoMiwgQ09NTUFORF9NQVAudnN0ZW0pOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICgxMiA8PCA4KSArIDI6IC8vIGhzdGVtMwogICAgICAgICAgICAgIGlmICghSElOVElOR19FTkFCTEVEKSB7CiAgICAgICAgICAgICAgICAgdGhpcy5zdGFjayA9IFtdOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIC8vIFNlZSB2c3RlbTMuCiAgICAgICAgICAgICAgZXJyb3IgPSB0aGlzLmV4ZWN1dGVDb21tYW5kKDIsIENPTU1BTkRfTUFQLmhzdGVtKTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAoMTIgPDwgOCkgKyA2OiAvLyBzZWFjCiAgICAgICAgICAgICAgLy8gc2VhYyBpcyBsaWtlIHR5cGUgMidzIHNwZWNpYWwgZW5kY2hhciBidXQgaXQgZG9lc24ndCB1c2UgdGhlCiAgICAgICAgICAgICAgLy8gZmlyc3QgYXJndW1lbnQgYXNiLCBzbyByZW1vdmUgaXQuCiAgICAgICAgICAgICAgaWYgKFNFQUNfQU5BTFlTSVNfRU5BQkxFRCkgewogICAgICAgICAgICAgICAgdGhpcy5zZWFjID0gdGhpcy5zdGFjay5zcGxpY2UoLTQsIDQpOwogICAgICAgICAgICAgICAgZXJyb3IgPSB0aGlzLmV4ZWN1dGVDb21tYW5kKDAsIENPTU1BTkRfTUFQLmVuZGNoYXIpOwogICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBlcnJvciA9IHRoaXMuZXhlY3V0ZUNvbW1hbmQoNCwgQ09NTUFORF9NQVAuZW5kY2hhcik7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICgxMiA8PCA4KSArIDc6IC8vIHNidwogICAgICAgICAgICAgIGlmICh0aGlzLnN0YWNrLmxlbmd0aCA8IDQpIHsKICAgICAgICAgICAgICAgIGVycm9yID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAvLyBUbyBjb252ZXJ0IHRvIHR5cGUyIHdlIGhhdmUgdG8gbW92ZSB0aGUgd2lkdGggdmFsdWUgdG8gdGhlCiAgICAgICAgICAgICAgLy8gZmlyc3QgcGFydCBvZiB0aGUgY2hhcnN0cmluZyBhbmQgdGhlbiB1c2Ugcm1vdmV0byB3aXRoCiAgICAgICAgICAgICAgLy8gKGR4LCBkeSkuIFRoZSBoZWlnaHQgYXJndW1lbnQgd2lsbCBub3QgYmUgdXNlZCBmb3Igdm10eCBhbmQKICAgICAgICAgICAgICAvLyB2aGVhIHRhYmxlcyByZWNvbnN0cnVjdGlvbiAtLSBpZ25vcmluZyBpdC4KICAgICAgICAgICAgICB2YXIgd3kgPSB0aGlzLnN0YWNrLnBvcCgpOwogICAgICAgICAgICAgIHd4ID0gdGhpcy5zdGFjay5wb3AoKTsKICAgICAgICAgICAgICB2YXIgc2J5ID0gdGhpcy5zdGFjay5wb3AoKTsKICAgICAgICAgICAgICBzYnggPSB0aGlzLnN0YWNrLnBvcCgpOwogICAgICAgICAgICAgIHRoaXMubHNiID0gc2J4OwogICAgICAgICAgICAgIHRoaXMud2lkdGggPSB3eDsKICAgICAgICAgICAgICB0aGlzLnN0YWNrLnB1c2god3gsIHNieCwgc2J5KTsKICAgICAgICAgICAgICBlcnJvciA9IHRoaXMuZXhlY3V0ZUNvbW1hbmQoMywgQ09NTUFORF9NQVAucm1vdmV0byk7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgKDEyIDw8IDgpICsgMTI6IC8vIGRpdgogICAgICAgICAgICAgIGlmICh0aGlzLnN0YWNrLmxlbmd0aCA8IDIpIHsKICAgICAgICAgICAgICAgIGVycm9yID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB2YXIgbnVtMiA9IHRoaXMuc3RhY2sucG9wKCk7CiAgICAgICAgICAgICAgdmFyIG51bTEgPSB0aGlzLnN0YWNrLnBvcCgpOwogICAgICAgICAgICAgIHRoaXMuc3RhY2sucHVzaChudW0xIC8gbnVtMik7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgKDEyIDw8IDgpICsgMTY6IC8vIGNhbGxvdGhlcnN1YnIKICAgICAgICAgICAgICBpZiAodGhpcy5zdGFjay5sZW5ndGggPCAyKSB7CiAgICAgICAgICAgICAgICBlcnJvciA9IHRydWU7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgc3Vick51bWJlciA9IHRoaXMuc3RhY2sucG9wKCk7CiAgICAgICAgICAgICAgdmFyIG51bUFyZ3MgPSB0aGlzLnN0YWNrLnBvcCgpOwogICAgICAgICAgICAgIGlmIChzdWJyTnVtYmVyID09PSAwICYmIG51bUFyZ3MgPT09IDMpIHsKICAgICAgICAgICAgICAgIHZhciBmbGV4QXJncyA9IHRoaXMuc3RhY2suc3BsaWNlKHRoaXMuc3RhY2subGVuZ3RoIC0gMTcsIDE3KTsKICAgICAgICAgICAgICAgIHRoaXMuc3RhY2sucHVzaCgKICAgICAgICAgICAgICAgICAgZmxleEFyZ3NbMl0gKyBmbGV4QXJnc1swXSwgLy8gYmNwMXggKyBycHgKICAgICAgICAgICAgICAgICAgZmxleEFyZ3NbM10gKyBmbGV4QXJnc1sxXSwgLy8gYmNwMXkgKyBycHkKICAgICAgICAgICAgICAgICAgZmxleEFyZ3NbNF0sIC8vIGJjcDJ4CiAgICAgICAgICAgICAgICAgIGZsZXhBcmdzWzVdLCAvLyBiY3AyeQogICAgICAgICAgICAgICAgICBmbGV4QXJnc1s2XSwgLy8gcDJ4CiAgICAgICAgICAgICAgICAgIGZsZXhBcmdzWzddLCAvLyBwMnkKICAgICAgICAgICAgICAgICAgZmxleEFyZ3NbOF0sIC8vIGJjcDN4CiAgICAgICAgICAgICAgICAgIGZsZXhBcmdzWzldLCAvLyBiY3AzeQogICAgICAgICAgICAgICAgICBmbGV4QXJnc1sxMF0sIC8vIGJjcDR4CiAgICAgICAgICAgICAgICAgIGZsZXhBcmdzWzExXSwgLy8gYmNwNHkKICAgICAgICAgICAgICAgICAgZmxleEFyZ3NbMTJdLCAvLyBwM3gKICAgICAgICAgICAgICAgICAgZmxleEFyZ3NbMTNdLCAvLyBwM3kKICAgICAgICAgICAgICAgICAgZmxleEFyZ3NbMTRdIC8vIGZsZXhEZXB0aAogICAgICAgICAgICAgICAgICAvLyAxNSA9IGZpbmFseCB1bnVzZWQgYnkgZmxleAogICAgICAgICAgICAgICAgICAvLyAxNiA9IGZpbmFseSB1bnVzZWQgYnkgZmxleAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGVycm9yID0gdGhpcy5leGVjdXRlQ29tbWFuZCgxMywgQ09NTUFORF9NQVAuZmxleCwgdHJ1ZSk7CiAgICAgICAgICAgICAgICB0aGlzLmZsZXhpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICAgIHRoaXMuc3RhY2sucHVzaChmbGV4QXJnc1sxNV0sIGZsZXhBcmdzWzE2XSk7CiAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdWJyTnVtYmVyID09PSAxICYmIG51bUFyZ3MgPT09IDApIHsKICAgICAgICAgICAgICAgIHRoaXMuZmxleGluZyA9IHRydWU7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICgxMiA8PCA4KSArIDE3OiAvLyBwb3AKICAgICAgICAgICAgICAvLyBJZ25vcmUgdGhpcyBzaW5jZSBpdCBpcyBvbmx5IHVzZWQgd2l0aCBvdGhlcnN1YnIuCiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgKDEyIDw8IDgpICsgMzM6IC8vIHNldGN1cnJlbnRwb2ludAogICAgICAgICAgICAgIC8vIElnbm9yZSBmb3Igbm93LgogICAgICAgICAgICAgIHRoaXMuc3RhY2sgPSBbXTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICB3YXJuKCdVbmtub3duIHR5cGUgMSBjaGFyc3RyaW5nIGNvbW1hbmQgb2YgIicgKyB2YWx1ZSArICciJyk7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CiAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9IGVsc2UgaWYgKHZhbHVlIDw9IDI0NikgewogICAgICAgICAgdmFsdWUgPSB2YWx1ZSAtIDEzOTsKICAgICAgICB9IGVsc2UgaWYgKHZhbHVlIDw9IDI1MCkgewogICAgICAgICAgdmFsdWUgPSAoKHZhbHVlIC0gMjQ3KSAqIDI1NikgKyBlbmNvZGVkWysraV0gKyAxMDg7CiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA8PSAyNTQpIHsKICAgICAgICAgIHZhbHVlID0gLSgodmFsdWUgLSAyNTEpICogMjU2KSAtIGVuY29kZWRbKytpXSAtIDEwODsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdmFsdWUgPSAoZW5jb2RlZFsrK2ldICYgMHhmZikgPDwgMjQgfCAoZW5jb2RlZFsrK2ldICYgMHhmZikgPDwgMTYgfAogICAgICAgICAgICAgICAgICAoZW5jb2RlZFsrK2ldICYgMHhmZikgPDwgOCB8IChlbmNvZGVkWysraV0gJiAweGZmKSA8PCAwOwogICAgICAgIH0KICAgICAgICB0aGlzLnN0YWNrLnB1c2godmFsdWUpOwogICAgICB9CiAgICAgIHJldHVybiBlcnJvcjsKICAgIH0sCgogICAgZXhlY3V0ZUNvbW1hbmQ6IGZ1bmN0aW9uKGhvd01hbnlBcmdzLCBjb21tYW5kLCBrZWVwU3RhY2spIHsKICAgICAgdmFyIHN0YWNrTGVuZ3RoID0gdGhpcy5zdGFjay5sZW5ndGg7CiAgICAgIGlmIChob3dNYW55QXJncyA+IHN0YWNrTGVuZ3RoKSB7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH0KICAgICAgdmFyIHN0YXJ0ID0gc3RhY2tMZW5ndGggLSBob3dNYW55QXJnczsKICAgICAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgc3RhY2tMZW5ndGg7IGkrKykgewogICAgICAgIHZhciB2YWx1ZSA9IHRoaXMuc3RhY2tbaV07CiAgICAgICAgaWYgKHZhbHVlID09PSAodmFsdWUgfCAwKSkgeyAvLyBpbnQKICAgICAgICAgIHRoaXMub3V0cHV0LnB1c2goMjgsICh2YWx1ZSA+PiA4KSAmIDB4ZmYsIHZhbHVlICYgMHhmZik7CiAgICAgICAgfSBlbHNlIHsgLy8gZml4ZWQgcG9pbnQKICAgICAgICAgIHZhbHVlID0gKDY1NTM2ICogdmFsdWUpIHwgMDsKICAgICAgICAgIHRoaXMub3V0cHV0LnB1c2goMjU1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUgPj4gMjQpICYgMHhGRiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlID4+IDE2KSAmIDB4RkYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZSA+PiA4KSAmIDB4RkYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlICYgMHhGRik7CiAgICAgICAgfQogICAgICB9CiAgICAgIHRoaXMub3V0cHV0LnB1c2guYXBwbHkodGhpcy5vdXRwdXQsIGNvbW1hbmQpOwogICAgICBpZiAoa2VlcFN0YWNrKSB7CiAgICAgICAgdGhpcy5zdGFjay5zcGxpY2Uoc3RhcnQsIGhvd01hbnlBcmdzKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLnN0YWNrLmxlbmd0aCA9IDA7CiAgICAgIH0KICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogIH07CgogIHJldHVybiBUeXBlMUNoYXJTdHJpbmc7Cn0pKCk7CgovKgogKiBUeXBlMVBhcnNlciBlbmNhcHN1bGF0ZSB0aGUgbmVlZGVkIGNvZGUgZm9yIHBhcnNpbmcgYSBUeXBlMSBmb250CiAqIHByb2dyYW0uIFNvbWUgb2YgaXRzIGxvZ2ljIGRlcGVuZHMgb24gdGhlIFR5cGUyIGNoYXJzdHJpbmdzCiAqIHN0cnVjdHVyZS4KICogTm90ZTogdGhpcyBkb2Vzbid0IHJlYWxseSBwYXJzZSB0aGUgZm9udCBzaW5jZSB0aGF0IHdvdWxkIHJlcXVpcmUgZXZhbHVhdGlvbgogKiBvZiBQb3N0U2NyaXB0LCBidXQgaXQgaXMgcG9zc2libGUgaW4gbW9zdCBjYXNlcyB0byBleHRyYWN0IHdoYXQgd2UgbmVlZAogKiB3aXRob3V0IGEgZnVsbCBwYXJzZS4KICovCnZhciBUeXBlMVBhcnNlciA9IChmdW5jdGlvbiBUeXBlMVBhcnNlckNsb3N1cmUoKSB7CiAgLyoKICAgKiBEZWNyeXB0IGEgU2VxdWVuY2Ugb2YgQ2lwaGVydGV4dCBCeXRlcyB0byBQcm9kdWNlIHRoZSBPcmlnaW5hbCBTZXF1ZW5jZQogICAqIG9mIFBsYWludGV4dCBCeXRlcy4gVGhlIGZ1bmN0aW9uIHRvb2sgYSBrZXkgYXMgYSBwYXJhbWV0ZXIgd2hpY2ggY2FuIGJlCiAgICogZm9yIGRlY3J5cHRpbmcgdGhlIGVleGVjIGJsb2NrIG9mIGZvciBkZWNvZGluZyBjaGFyU3RyaW5ncy4KICAgKi8KICB2YXIgRUVYRUNfRU5DUllQVF9LRVkgPSA1NTY2NTsKICB2YXIgQ0hBUl9TVFJTX0VOQ1JZUFRfS0VZID0gNDMzMDsKCiAgZnVuY3Rpb24gaXNIZXhEaWdpdChjb2RlKSB7CiAgICByZXR1cm4gY29kZSA+PSA0OCAmJiBjb2RlIDw9IDU3IHx8IC8vICcwJy0nOScKICAgICAgICAgICBjb2RlID49IDY1ICYmIGNvZGUgPD0gNzAgfHwgLy8gJ0EnLSdGJwogICAgICAgICAgIGNvZGUgPj0gOTcgJiYgY29kZSA8PSAxMDI7ICAvLyAnYSctJ2YnCiAgfQoKICBmdW5jdGlvbiBkZWNyeXB0KGRhdGEsIGtleSwgZGlzY2FyZE51bWJlcikgewogICAgdmFyIHIgPSBrZXkgfCAwLCBjMSA9IDUyODQ1LCBjMiA9IDIyNzE5OwogICAgdmFyIGNvdW50ID0gZGF0YS5sZW5ndGg7CiAgICB2YXIgZGVjcnlwdGVkID0gbmV3IFVpbnQ4QXJyYXkoY291bnQpOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CiAgICAgIHZhciB2YWx1ZSA9IGRhdGFbaV07CiAgICAgIGRlY3J5cHRlZFtpXSA9IHZhbHVlIF4gKHIgPj4gOCk7CiAgICAgIHIgPSAoKHZhbHVlICsgcikgKiBjMSArIGMyKSAmICgoMSA8PCAxNikgLSAxKTsKICAgIH0KICAgIHJldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChkZWNyeXB0ZWQsIGRpc2NhcmROdW1iZXIpOwogIH0KCiAgZnVuY3Rpb24gZGVjcnlwdEFzY2lpKGRhdGEsIGtleSwgZGlzY2FyZE51bWJlcikgewogICAgdmFyIHIgPSBrZXkgfCAwLCBjMSA9IDUyODQ1LCBjMiA9IDIyNzE5OwogICAgdmFyIGNvdW50ID0gZGF0YS5sZW5ndGgsIG1heWJlTGVuZ3RoID0gY291bnQgPj4+IDE7CiAgICB2YXIgZGVjcnlwdGVkID0gbmV3IFVpbnQ4QXJyYXkobWF5YmVMZW5ndGgpOwogICAgdmFyIGksIGo7CiAgICBmb3IgKGkgPSAwLCBqID0gMDsgaSA8IGNvdW50OyBpKyspIHsKICAgICAgdmFyIGRpZ2l0MSA9IGRhdGFbaV07CiAgICAgIGlmICghaXNIZXhEaWdpdChkaWdpdDEpKSB7CiAgICAgICAgY29udGludWU7CiAgICAgIH0KICAgICAgaSsrOwogICAgICB2YXIgZGlnaXQyOwogICAgICB3aGlsZSAoaSA8IGNvdW50ICYmICFpc0hleERpZ2l0KGRpZ2l0MiA9IGRhdGFbaV0pKSB7CiAgICAgICAgaSsrOwogICAgICB9CiAgICAgIGlmIChpIDwgY291bnQpIHsKICAgICAgICB2YXIgdmFsdWUgPSBwYXJzZUludChTdHJpbmcuZnJvbUNoYXJDb2RlKGRpZ2l0MSwgZGlnaXQyKSwgMTYpOwogICAgICAgIGRlY3J5cHRlZFtqKytdID0gdmFsdWUgXiAociA+PiA4KTsKICAgICAgICByID0gKCh2YWx1ZSArIHIpICogYzEgKyBjMikgJiAoKDEgPDwgMTYpIC0gMSk7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChkZWNyeXB0ZWQsIGRpc2NhcmROdW1iZXIsIGopOwogIH0KCiAgZnVuY3Rpb24gaXNTcGVjaWFsKGMpIHsKICAgIHJldHVybiBjID09PSAweDJGIHx8IC8vICcvJwogICAgICAgICAgIGMgPT09IDB4NUIgfHwgYyA9PT0gMHg1RCB8fCAvLyAnWycsICddJwogICAgICAgICAgIGMgPT09IDB4N0IgfHwgYyA9PT0gMHg3RCB8fCAvLyAneycsICd9JwogICAgICAgICAgIGMgPT09IDB4MjggfHwgYyA9PT0gMHgyOTsgLy8gJygnLCAnKScKICB9CgogIGZ1bmN0aW9uIFR5cGUxUGFyc2VyKHN0cmVhbSwgZW5jcnlwdGVkKSB7CiAgICBpZiAoZW5jcnlwdGVkKSB7CiAgICAgIHZhciBkYXRhID0gc3RyZWFtLmdldEJ5dGVzKCk7CiAgICAgIHZhciBpc0JpbmFyeSA9ICEoaXNIZXhEaWdpdChkYXRhWzBdKSAmJiBpc0hleERpZ2l0KGRhdGFbMV0pICYmCiAgICAgICAgICAgICAgICAgICAgICAgaXNIZXhEaWdpdChkYXRhWzJdKSAmJiBpc0hleERpZ2l0KGRhdGFbM10pKTsKICAgICAgc3RyZWFtID0gbmV3IFN0cmVhbShpc0JpbmFyeSA/IGRlY3J5cHQoZGF0YSwgRUVYRUNfRU5DUllQVF9LRVksIDQpIDoKICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNyeXB0QXNjaWkoZGF0YSwgRUVYRUNfRU5DUllQVF9LRVksIDQpKTsKICAgIH0KICAgIHRoaXMuc3RyZWFtID0gc3RyZWFtOwogICAgdGhpcy5uZXh0Q2hhcigpOwogIH0KCiAgVHlwZTFQYXJzZXIucHJvdG90eXBlID0gewogICAgcmVhZE51bWJlckFycmF5OiBmdW5jdGlvbiBUeXBlMVBhcnNlcl9yZWFkTnVtYmVyQXJyYXkoKSB7CiAgICAgIHRoaXMuZ2V0VG9rZW4oKTsgLy8gcmVhZCAnWycgb3IgJ3snIChhcnJheXMgY2FuIHN0YXJ0IHdpdGggZWl0aGVyKQogICAgICB2YXIgYXJyYXkgPSBbXTsKICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICB2YXIgdG9rZW4gPSB0aGlzLmdldFRva2VuKCk7CiAgICAgICAgaWYgKHRva2VuID09PSBudWxsIHx8IHRva2VuID09PSAnXScgfHwgdG9rZW4gPT09ICd9JykgewogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIGFycmF5LnB1c2gocGFyc2VGbG9hdCh0b2tlbiB8fCAwKSk7CiAgICAgIH0KICAgICAgcmV0dXJuIGFycmF5OwogICAgfSwKCiAgICByZWFkTnVtYmVyOiBmdW5jdGlvbiBUeXBlMVBhcnNlcl9yZWFkTnVtYmVyKCkgewogICAgICB2YXIgdG9rZW4gPSB0aGlzLmdldFRva2VuKCk7CiAgICAgIHJldHVybiBwYXJzZUZsb2F0KHRva2VuIHx8IDApOwogICAgfSwKCiAgICByZWFkSW50OiBmdW5jdGlvbiBUeXBlMVBhcnNlcl9yZWFkSW50KCkgewogICAgICAvLyBVc2UgJ3wgMCcgdG8gcHJldmVudCBzZXR0aW5nIGEgZG91YmxlIGludG8gbGVuZ3RoIHN1Y2ggYXMgdGhlIGRvdWJsZQogICAgICAvLyBkb2VzIG5vdCBmbG93IGludG8gdGhlIGxvb3AgdmFyaWFibGUuCiAgICAgIHZhciB0b2tlbiA9IHRoaXMuZ2V0VG9rZW4oKTsKICAgICAgcmV0dXJuIHBhcnNlSW50KHRva2VuIHx8IDAsIDEwKSB8IDA7CiAgICB9LAoKICAgIHJlYWRCb29sZWFuOiBmdW5jdGlvbiBUeXBlMVBhcnNlcl9yZWFkQm9vbGVhbigpIHsKICAgICAgdmFyIHRva2VuID0gdGhpcy5nZXRUb2tlbigpOwoKICAgICAgLy8gVXNlIDEgYW5kIDAgc2luY2UgdGhhdCdzIHdoYXQgdHlwZTIgY2hhcnN0cmluZ3MgdXNlLgogICAgICByZXR1cm4gdG9rZW4gPT09ICd0cnVlJyA/IDEgOiAwOwogICAgfSwKCiAgICBuZXh0Q2hhciA6IGZ1bmN0aW9uIFR5cGUxX25leHRDaGFyKCkgewogICAgICByZXR1cm4gKHRoaXMuY3VycmVudENoYXIgPSB0aGlzLnN0cmVhbS5nZXRCeXRlKCkpOwogICAgfSwKCiAgICBnZXRUb2tlbjogZnVuY3Rpb24gVHlwZTFQYXJzZXJfZ2V0VG9rZW4oKSB7CiAgICAgIC8vIEVhdCB3aGl0ZXNwYWNlIGFuZCBjb21tZW50cy4KICAgICAgdmFyIGNvbW1lbnQgPSBmYWxzZTsKICAgICAgdmFyIGNoID0gdGhpcy5jdXJyZW50Q2hhcjsKICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICBpZiAoY2ggPT09IC0xKSB7CiAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgIGlmIChjb21tZW50KSB7CiAgICAgICAgICBpZiAoY2ggPT09IDB4MEEgfHwgY2ggPT09IDB4MEQpIHsKICAgICAgICAgICAgY29tbWVudCA9IGZhbHNlOwogICAgICAgICAgfQogICAgICAgIH0gZWxzZSBpZiAoY2ggPT09IDB4MjUpIHsgLy8gJyUnCiAgICAgICAgICBjb21tZW50ID0gdHJ1ZTsKICAgICAgICB9IGVsc2UgaWYgKCFMZXhlci5pc1NwYWNlKGNoKSkgewogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIGNoID0gdGhpcy5uZXh0Q2hhcigpOwogICAgICB9CiAgICAgIGlmIChpc1NwZWNpYWwoY2gpKSB7CiAgICAgICAgdGhpcy5uZXh0Q2hhcigpOwogICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGNoKTsKICAgICAgfQogICAgICB2YXIgdG9rZW4gPSAnJzsKICAgICAgZG8gewogICAgICAgIHRva2VuICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoY2gpOwogICAgICAgIGNoID0gdGhpcy5uZXh0Q2hhcigpOwogICAgICB9IHdoaWxlIChjaCA+PSAwICYmICFMZXhlci5pc1NwYWNlKGNoKSAmJiAhaXNTcGVjaWFsKGNoKSk7CiAgICAgIHJldHVybiB0b2tlbjsKICAgIH0sCgogICAgLyoKICAgICAqIFJldHVybnMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgYSBTdWJycyBhcnJheSBhbmQgYSBDaGFyU3RyaW5ncwogICAgICogYXJyYXkgZXh0cmFjdGVkIGZyb20gYW5kIGVleGVjIGVuY3J5cHRlZCBibG9jayBvZiBkYXRhCiAgICAgKi8KICAgIGV4dHJhY3RGb250UHJvZ3JhbTogZnVuY3Rpb24gVHlwZTFQYXJzZXJfZXh0cmFjdEZvbnRQcm9ncmFtKCkgewogICAgICB2YXIgc3RyZWFtID0gdGhpcy5zdHJlYW07CgogICAgICB2YXIgc3VicnMgPSBbXSwgY2hhcnN0cmluZ3MgPSBbXTsKICAgICAgdmFyIHByb2dyYW0gPSB7CiAgICAgICAgc3VicnM6IFtdLAogICAgICAgIGNoYXJzdHJpbmdzOiBbXSwKICAgICAgICBwcm9wZXJ0aWVzOiB7CiAgICAgICAgICAncHJpdmF0ZURhdGEnOiB7CiAgICAgICAgICAgICdsZW5JVic6IDQKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH07CiAgICAgIHZhciB0b2tlbiwgbGVuZ3RoLCBkYXRhLCBsZW5JViwgZW5jb2RlZDsKICAgICAgd2hpbGUgKCh0b2tlbiA9IHRoaXMuZ2V0VG9rZW4oKSkgIT09IG51bGwpIHsKICAgICAgICBpZiAodG9rZW4gIT09ICcvJykgewogICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIHRva2VuID0gdGhpcy5nZXRUb2tlbigpOwogICAgICAgIHN3aXRjaCAodG9rZW4pIHsKICAgICAgICAgIGNhc2UgJ0NoYXJTdHJpbmdzJzoKICAgICAgICAgICAgLy8gVGhlIG51bWJlciBpbW1lZGlhdGVseSBmb2xsb3dpbmcgQ2hhclN0cmluZ3MgbXVzdCBiZSBncmVhdGVyIG9yCiAgICAgICAgICAgIC8vIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgQ2hhclN0cmluZ3MuCiAgICAgICAgICAgIHRoaXMuZ2V0VG9rZW4oKTsKICAgICAgICAgICAgdGhpcy5nZXRUb2tlbigpOyAvLyByZWFkIGluICdkaWN0JwogICAgICAgICAgICB0aGlzLmdldFRva2VuKCk7IC8vIHJlYWQgaW4gJ2R1cCcKICAgICAgICAgICAgdGhpcy5nZXRUb2tlbigpOyAvLyByZWFkIGluICdiZWdpbicKICAgICAgICAgICAgd2hpbGUodHJ1ZSkgewogICAgICAgICAgICAgIHRva2VuID0gdGhpcy5nZXRUb2tlbigpOwogICAgICAgICAgICAgIGlmICh0b2tlbiA9PT0gbnVsbCB8fCB0b2tlbiA9PT0gJ2VuZCcpIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgaWYgKHRva2VuICE9PSAnLycpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB2YXIgZ2x5cGggPSB0aGlzLmdldFRva2VuKCk7CiAgICAgICAgICAgICAgbGVuZ3RoID0gdGhpcy5yZWFkSW50KCk7CiAgICAgICAgICAgICAgdGhpcy5nZXRUb2tlbigpOyAvLyByZWFkIGluICdSRCcgb3IgJy18JwogICAgICAgICAgICAgIGRhdGEgPSBzdHJlYW0ubWFrZVN1YlN0cmVhbShzdHJlYW0ucG9zLCBsZW5ndGgpOwogICAgICAgICAgICAgIGxlbklWID0gcHJvZ3JhbS5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhWydsZW5JViddOwogICAgICAgICAgICAgIGVuY29kZWQgPSBkZWNyeXB0KGRhdGEuZ2V0Qnl0ZXMoKSwgQ0hBUl9TVFJTX0VOQ1JZUFRfS0VZLCBsZW5JVik7CiAgICAgICAgICAgICAgLy8gU2tpcCBwYXN0IHRoZSByZXF1aXJlZCBzcGFjZSBhbmQgYmluYXJ5IGRhdGEuCiAgICAgICAgICAgICAgc3RyZWFtLnNraXAobGVuZ3RoKTsKICAgICAgICAgICAgICB0aGlzLm5leHRDaGFyKCk7CiAgICAgICAgICAgICAgdG9rZW4gPSB0aGlzLmdldFRva2VuKCk7IC8vIHJlYWQgaW4gJ05EJyBvciAnfC0nCiAgICAgICAgICAgICAgaWYgKHRva2VuID09PSAnbm9hY2Nlc3MnKSB7CiAgICAgICAgICAgICAgICB0aGlzLmdldFRva2VuKCk7IC8vIHJlYWQgaW4gJ2RlZicKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgY2hhcnN0cmluZ3MucHVzaCh7CiAgICAgICAgICAgICAgICBnbHlwaDogZ2x5cGgsCiAgICAgICAgICAgICAgICBlbmNvZGVkOiBlbmNvZGVkCiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlICdTdWJycyc6CiAgICAgICAgICAgIHZhciBudW0gPSB0aGlzLnJlYWRJbnQoKTsKICAgICAgICAgICAgdGhpcy5nZXRUb2tlbigpOyAvLyByZWFkIGluICdhcnJheScKICAgICAgICAgICAgd2hpbGUgKCh0b2tlbiA9IHRoaXMuZ2V0VG9rZW4oKSkgPT09ICdkdXAnKSB7CiAgICAgICAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5yZWFkSW50KCk7CiAgICAgICAgICAgICAgbGVuZ3RoID0gdGhpcy5yZWFkSW50KCk7CiAgICAgICAgICAgICAgdGhpcy5nZXRUb2tlbigpOyAvLyByZWFkIGluICdSRCcgb3IgJy18JwogICAgICAgICAgICAgIGRhdGEgPSBzdHJlYW0ubWFrZVN1YlN0cmVhbShzdHJlYW0ucG9zLCBsZW5ndGgpOwogICAgICAgICAgICAgIGxlbklWID0gcHJvZ3JhbS5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhWydsZW5JViddOwogICAgICAgICAgICAgIGVuY29kZWQgPSBkZWNyeXB0KGRhdGEuZ2V0Qnl0ZXMoKSwgQ0hBUl9TVFJTX0VOQ1JZUFRfS0VZLCBsZW5JVik7CiAgICAgICAgICAgICAgLy8gU2tpcCBwYXN0IHRoZSByZXF1aXJlZCBzcGFjZSBhbmQgYmluYXJ5IGRhdGEuCiAgICAgICAgICAgICAgc3RyZWFtLnNraXAobGVuZ3RoKTsKICAgICAgICAgICAgICB0aGlzLm5leHRDaGFyKCk7CiAgICAgICAgICAgICAgdG9rZW4gPSB0aGlzLmdldFRva2VuKCk7IC8vIHJlYWQgaW4gJ05QJyBvciAnfCcKICAgICAgICAgICAgICBpZiAodG9rZW4gPT09ICdub2FjY2VzcycpIHsKICAgICAgICAgICAgICAgIHRoaXMuZ2V0VG9rZW4oKTsgLy8gcmVhZCBpbiAncHV0JwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBzdWJyc1tpbmRleF0gPSBlbmNvZGVkOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAnQmx1ZVZhbHVlcyc6CiAgICAgICAgICBjYXNlICdPdGhlckJsdWVzJzoKICAgICAgICAgIGNhc2UgJ0ZhbWlseUJsdWVzJzoKICAgICAgICAgIGNhc2UgJ0ZhbWlseU90aGVyQmx1ZXMnOgogICAgICAgICAgICB2YXIgYmx1ZUFycmF5ID0gdGhpcy5yZWFkTnVtYmVyQXJyYXkoKTsKICAgICAgICAgICAgLy8gKkJsdWUqIHZhbHVlcyBtYXkgY29udGFpbiBpbnZhbGlkIGRhdGE6IGRpc2FibGVzIHJlYWRpbmcgb2YKICAgICAgICAgICAgLy8gdGhvc2UgdmFsdWVzIHdoZW4gaGludGluZyBpcyBkaXNhYmxlZC4KICAgICAgICAgICAgaWYgKGJsdWVBcnJheS5sZW5ndGggPiAwICYmIChibHVlQXJyYXkubGVuZ3RoICUgMikgPT09IDAgJiYKICAgICAgICAgICAgICAgIEhJTlRJTkdfRU5BQkxFRCkgewogICAgICAgICAgICAgIHByb2dyYW0ucHJvcGVydGllcy5wcml2YXRlRGF0YVt0b2tlbl0gPSBibHVlQXJyYXk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlICdTdGVtU25hcEgnOgogICAgICAgICAgY2FzZSAnU3RlbVNuYXBWJzoKICAgICAgICAgICAgcHJvZ3JhbS5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhW3Rva2VuXSA9IHRoaXMucmVhZE51bWJlckFycmF5KCk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAnU3RkSFcnOgogICAgICAgICAgY2FzZSAnU3RkVlcnOgogICAgICAgICAgICBwcm9ncmFtLnByb3BlcnRpZXMucHJpdmF0ZURhdGFbdG9rZW5dID0KICAgICAgICAgICAgICB0aGlzLnJlYWROdW1iZXJBcnJheSgpWzBdOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgJ0JsdWVTaGlmdCc6CiAgICAgICAgICBjYXNlICdsZW5JVic6CiAgICAgICAgICBjYXNlICdCbHVlRnV6eic6CiAgICAgICAgICBjYXNlICdCbHVlU2NhbGUnOgogICAgICAgICAgY2FzZSAnTGFuZ3VhZ2VHcm91cCc6CiAgICAgICAgICBjYXNlICdFeHBhbnNpb25GYWN0b3InOgogICAgICAgICAgICBwcm9ncmFtLnByb3BlcnRpZXMucHJpdmF0ZURhdGFbdG9rZW5dID0gdGhpcy5yZWFkTnVtYmVyKCk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAnRm9yY2VCb2xkJzoKICAgICAgICAgICAgcHJvZ3JhbS5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhW3Rva2VuXSA9IHRoaXMucmVhZEJvb2xlYW4oKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICB9CgogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJzdHJpbmdzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgZ2x5cGggPSBjaGFyc3RyaW5nc1tpXS5nbHlwaDsKICAgICAgICBlbmNvZGVkID0gY2hhcnN0cmluZ3NbaV0uZW5jb2RlZDsKICAgICAgICB2YXIgY2hhclN0cmluZyA9IG5ldyBUeXBlMUNoYXJTdHJpbmcoKTsKICAgICAgICB2YXIgZXJyb3IgPSBjaGFyU3RyaW5nLmNvbnZlcnQoZW5jb2RlZCwgc3VicnMpOwogICAgICAgIHZhciBvdXRwdXQgPSBjaGFyU3RyaW5nLm91dHB1dDsKICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgIC8vIEl0IHNlZW1zIHdoZW4gRnJlZVR5cGUgZW5jb3VudGVycyBhbiBlcnJvciB3aGlsZSBldmFsdWF0aW5nIGEgZ2x5cGgKICAgICAgICAgIC8vIHRoYXQgaXQgY29tcGxldGVseSBpZ25vcmVzIHRoZSBnbHlwaCBzbyB3ZSdsbCBtaW1pYyB0aGF0IGJlaGF2aW91cgogICAgICAgICAgLy8gaGVyZSBhbmQgcHV0IGFuIGVuZGNoYXIgdG8gbWFrZSB0aGUgdmFsaWRhdG9yIGhhcHB5LgogICAgICAgICAgb3V0cHV0ID0gWzE0XTsKICAgICAgICB9CiAgICAgICAgcHJvZ3JhbS5jaGFyc3RyaW5ncy5wdXNoKHsKICAgICAgICAgIGdseXBoTmFtZTogZ2x5cGgsCiAgICAgICAgICBjaGFyc3RyaW5nOiBvdXRwdXQsCiAgICAgICAgICB3aWR0aDogY2hhclN0cmluZy53aWR0aCwKICAgICAgICAgIGxzYjogY2hhclN0cmluZy5sc2IsCiAgICAgICAgICBzZWFjOiBjaGFyU3RyaW5nLnNlYWMKICAgICAgICB9KTsKICAgICAgfQoKICAgICAgcmV0dXJuIHByb2dyYW07CiAgICB9LAoKICAgIGV4dHJhY3RGb250SGVhZGVyOiBmdW5jdGlvbiBUeXBlMVBhcnNlcl9leHRyYWN0Rm9udEhlYWRlcihwcm9wZXJ0aWVzKSB7CiAgICAgIHZhciB0b2tlbjsKICAgICAgd2hpbGUgKCh0b2tlbiA9IHRoaXMuZ2V0VG9rZW4oKSkgIT09IG51bGwpIHsKICAgICAgICBpZiAodG9rZW4gIT09ICcvJykgewogICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIHRva2VuID0gdGhpcy5nZXRUb2tlbigpOwogICAgICAgIHN3aXRjaCAodG9rZW4pIHsKICAgICAgICAgIGNhc2UgJ0ZvbnRNYXRyaXgnOgogICAgICAgICAgICB2YXIgbWF0cml4ID0gdGhpcy5yZWFkTnVtYmVyQXJyYXkoKTsKICAgICAgICAgICAgcHJvcGVydGllcy5mb250TWF0cml4ID0gbWF0cml4OwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgJ0VuY29kaW5nJzoKICAgICAgICAgICAgdmFyIGVuY29kaW5nQXJnID0gdGhpcy5nZXRUb2tlbigpOwogICAgICAgICAgICB2YXIgZW5jb2Rpbmc7CiAgICAgICAgICAgIGlmICghL15cZCskLy50ZXN0KGVuY29kaW5nQXJnKSkgewogICAgICAgICAgICAgIC8vIGVuY29kaW5nIG5hbWUgaXMgc3BlY2lmaWVkCiAgICAgICAgICAgICAgZW5jb2RpbmcgPSBFbmNvZGluZ3NbZW5jb2RpbmdBcmddOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIGVuY29kaW5nID0gW107CiAgICAgICAgICAgICAgdmFyIHNpemUgPSBwYXJzZUludChlbmNvZGluZ0FyZywgMTApIHwgMDsKICAgICAgICAgICAgICB0aGlzLmdldFRva2VuKCk7IC8vIHJlYWQgaW4gJ2FycmF5JwoKICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHNpemU7IGorKykgewogICAgICAgICAgICAgICAgdG9rZW4gPSB0aGlzLmdldFRva2VuKCk7CiAgICAgICAgICAgICAgICAvLyBza2lwcGluZyB0aWxsIGZpcnN0IGR1cCBvciBkZWYgKGUuZy4gaWdub3JpbmcgZm9yIHN0YXRlbWVudCkKICAgICAgICAgICAgICAgIHdoaWxlICh0b2tlbiAhPT0gJ2R1cCcgJiYgdG9rZW4gIT09ICdkZWYnKSB7CiAgICAgICAgICAgICAgICAgIHRva2VuID0gdGhpcy5nZXRUb2tlbigpOwogICAgICAgICAgICAgICAgICBpZiAodG9rZW4gPT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47IC8vIGludmFsaWQgaGVhZGVyCiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICh0b2tlbiA9PT0gJ2RlZicpIHsKICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vIHJlYWQgYWxsIGFycmF5IGRhdGEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IHRoaXMucmVhZEludCgpOwogICAgICAgICAgICAgICAgdGhpcy5nZXRUb2tlbigpOyAvLyByZWFkIGluICcvJwogICAgICAgICAgICAgICAgdmFyIGdseXBoID0gdGhpcy5nZXRUb2tlbigpOwogICAgICAgICAgICAgICAgZW5jb2RpbmdbaW5kZXhdID0gZ2x5cGg7CiAgICAgICAgICAgICAgICB0aGlzLmdldFRva2VuKCk7IC8vIHJlYWQgdGhlIGluICdwdXQnCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHByb3BlcnRpZXMuYnVpbHRJbkVuY29kaW5nID0gZW5jb2Rpbmc7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAnRm9udEJCb3gnOgogICAgICAgICAgICB2YXIgZm9udEJCb3ggPSB0aGlzLnJlYWROdW1iZXJBcnJheSgpOwogICAgICAgICAgICAvLyBhZGp1c3RpbmcgYXNjZW50L2Rlc2NlbnQKICAgICAgICAgICAgcHJvcGVydGllcy5hc2NlbnQgPSBmb250QkJveFszXTsKICAgICAgICAgICAgcHJvcGVydGllcy5kZXNjZW50ID0gZm9udEJCb3hbMV07CiAgICAgICAgICAgIHByb3BlcnRpZXMuYXNjZW50U2NhbGVkID0gdHJ1ZTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfTsKCiAgcmV0dXJuIFR5cGUxUGFyc2VyOwp9KSgpOwoKLyoqCiAqIFRoZSBDRkYgY2xhc3MgdGFrZXMgYSBUeXBlMSBmaWxlIGFuZCB3cmFwIGl0IGludG8gYQogKiAnQ29tcGFjdCBGb250IEZvcm1hdCcgd2hpY2ggaXRzZWxmIGVtYmVkIFR5cGUyIGNoYXJzdHJpbmdzLgogKi8KdmFyIENGRlN0YW5kYXJkU3RyaW5ncyA9IFsKICAnLm5vdGRlZicsICdzcGFjZScsICdleGNsYW0nLCAncXVvdGVkYmwnLCAnbnVtYmVyc2lnbicsICdkb2xsYXInLCAncGVyY2VudCcsCiAgJ2FtcGVyc2FuZCcsICdxdW90ZXJpZ2h0JywgJ3BhcmVubGVmdCcsICdwYXJlbnJpZ2h0JywgJ2FzdGVyaXNrJywgJ3BsdXMnLAogICdjb21tYScsICdoeXBoZW4nLCAncGVyaW9kJywgJ3NsYXNoJywgJ3plcm8nLCAnb25lJywgJ3R3bycsICd0aHJlZScsICdmb3VyJywKICAnZml2ZScsICdzaXgnLCAnc2V2ZW4nLCAnZWlnaHQnLCAnbmluZScsICdjb2xvbicsICdzZW1pY29sb24nLCAnbGVzcycsCiAgJ2VxdWFsJywgJ2dyZWF0ZXInLCAncXVlc3Rpb24nLCAnYXQnLCAnQScsICdCJywgJ0MnLCAnRCcsICdFJywgJ0YnLCAnRycsICdIJywKICAnSScsICdKJywgJ0snLCAnTCcsICdNJywgJ04nLCAnTycsICdQJywgJ1EnLCAnUicsICdTJywgJ1QnLCAnVScsICdWJywgJ1cnLAogICdYJywgJ1knLCAnWicsICdicmFja2V0bGVmdCcsICdiYWNrc2xhc2gnLCAnYnJhY2tldHJpZ2h0JywgJ2FzY2lpY2lyY3VtJywKICAndW5kZXJzY29yZScsICdxdW90ZWxlZnQnLCAnYScsICdiJywgJ2MnLCAnZCcsICdlJywgJ2YnLCAnZycsICdoJywgJ2knLCAnaicsCiAgJ2snLCAnbCcsICdtJywgJ24nLCAnbycsICdwJywgJ3EnLCAncicsICdzJywgJ3QnLCAndScsICd2JywgJ3cnLCAneCcsICd5JywKICAneicsICdicmFjZWxlZnQnLCAnYmFyJywgJ2JyYWNlcmlnaHQnLCAnYXNjaWl0aWxkZScsICdleGNsYW1kb3duJywgJ2NlbnQnLAogICdzdGVybGluZycsICdmcmFjdGlvbicsICd5ZW4nLCAnZmxvcmluJywgJ3NlY3Rpb24nLCAnY3VycmVuY3knLAogICdxdW90ZXNpbmdsZScsICdxdW90ZWRibGxlZnQnLCAnZ3VpbGxlbW90bGVmdCcsICdndWlsc2luZ2xsZWZ0JywKICAnZ3VpbHNpbmdscmlnaHQnLCAnZmknLCAnZmwnLCAnZW5kYXNoJywgJ2RhZ2dlcicsICdkYWdnZXJkYmwnLAogICdwZXJpb2RjZW50ZXJlZCcsICdwYXJhZ3JhcGgnLCAnYnVsbGV0JywgJ3F1b3Rlc2luZ2xiYXNlJywgJ3F1b3RlZGJsYmFzZScsCiAgJ3F1b3RlZGJscmlnaHQnLCAnZ3VpbGxlbW90cmlnaHQnLCAnZWxsaXBzaXMnLCAncGVydGhvdXNhbmQnLCAncXVlc3Rpb25kb3duJywKICAnZ3JhdmUnLCAnYWN1dGUnLCAnY2lyY3VtZmxleCcsICd0aWxkZScsICdtYWNyb24nLCAnYnJldmUnLCAnZG90YWNjZW50JywKICAnZGllcmVzaXMnLCAncmluZycsICdjZWRpbGxhJywgJ2h1bmdhcnVtbGF1dCcsICdvZ29uZWsnLCAnY2Fyb24nLCAnZW1kYXNoJywKICAnQUUnLCAnb3JkZmVtaW5pbmUnLCAnTHNsYXNoJywgJ09zbGFzaCcsICdPRScsICdvcmRtYXNjdWxpbmUnLCAnYWUnLAogICdkb3RsZXNzaScsICdsc2xhc2gnLCAnb3NsYXNoJywgJ29lJywgJ2dlcm1hbmRibHMnLCAnb25lc3VwZXJpb3InLAogICdsb2dpY2Fsbm90JywgJ211JywgJ3RyYWRlbWFyaycsICdFdGgnLCAnb25laGFsZicsICdwbHVzbWludXMnLCAnVGhvcm4nLAogICdvbmVxdWFydGVyJywgJ2RpdmlkZScsICdicm9rZW5iYXInLCAnZGVncmVlJywgJ3Rob3JuJywgJ3RocmVlcXVhcnRlcnMnLAogICd0d29zdXBlcmlvcicsICdyZWdpc3RlcmVkJywgJ21pbnVzJywgJ2V0aCcsICdtdWx0aXBseScsICd0aHJlZXN1cGVyaW9yJywKICAnY29weXJpZ2h0JywgJ0FhY3V0ZScsICdBY2lyY3VtZmxleCcsICdBZGllcmVzaXMnLCAnQWdyYXZlJywgJ0FyaW5nJywKICAnQXRpbGRlJywgJ0NjZWRpbGxhJywgJ0VhY3V0ZScsICdFY2lyY3VtZmxleCcsICdFZGllcmVzaXMnLCAnRWdyYXZlJywKICAnSWFjdXRlJywgJ0ljaXJjdW1mbGV4JywgJ0lkaWVyZXNpcycsICdJZ3JhdmUnLCAnTnRpbGRlJywgJ09hY3V0ZScsCiAgJ09jaXJjdW1mbGV4JywgJ09kaWVyZXNpcycsICdPZ3JhdmUnLCAnT3RpbGRlJywgJ1NjYXJvbicsICdVYWN1dGUnLAogICdVY2lyY3VtZmxleCcsICdVZGllcmVzaXMnLCAnVWdyYXZlJywgJ1lhY3V0ZScsICdZZGllcmVzaXMnLCAnWmNhcm9uJywKICAnYWFjdXRlJywgJ2FjaXJjdW1mbGV4JywgJ2FkaWVyZXNpcycsICdhZ3JhdmUnLCAnYXJpbmcnLCAnYXRpbGRlJywKICAnY2NlZGlsbGEnLCAnZWFjdXRlJywgJ2VjaXJjdW1mbGV4JywgJ2VkaWVyZXNpcycsICdlZ3JhdmUnLCAnaWFjdXRlJywKICAnaWNpcmN1bWZsZXgnLCAnaWRpZXJlc2lzJywgJ2lncmF2ZScsICdudGlsZGUnLCAnb2FjdXRlJywgJ29jaXJjdW1mbGV4JywKICAnb2RpZXJlc2lzJywgJ29ncmF2ZScsICdvdGlsZGUnLCAnc2Nhcm9uJywgJ3VhY3V0ZScsICd1Y2lyY3VtZmxleCcsCiAgJ3VkaWVyZXNpcycsICd1Z3JhdmUnLCAneWFjdXRlJywgJ3lkaWVyZXNpcycsICd6Y2Fyb24nLCAnZXhjbGFtc21hbGwnLAogICdIdW5nYXJ1bWxhdXRzbWFsbCcsICdkb2xsYXJvbGRzdHlsZScsICdkb2xsYXJzdXBlcmlvcicsICdhbXBlcnNhbmRzbWFsbCcsCiAgJ0FjdXRlc21hbGwnLCAncGFyZW5sZWZ0c3VwZXJpb3InLCAncGFyZW5yaWdodHN1cGVyaW9yJywgJ3R3b2RvdGVubGVhZGVyJywKICAnb25lZG90ZW5sZWFkZXInLCAnemVyb29sZHN0eWxlJywgJ29uZW9sZHN0eWxlJywgJ3R3b29sZHN0eWxlJywKICAndGhyZWVvbGRzdHlsZScsICdmb3Vyb2xkc3R5bGUnLCAnZml2ZW9sZHN0eWxlJywgJ3NpeG9sZHN0eWxlJywKICAnc2V2ZW5vbGRzdHlsZScsICdlaWdodG9sZHN0eWxlJywgJ25pbmVvbGRzdHlsZScsICdjb21tYXN1cGVyaW9yJywKICAndGhyZWVxdWFydGVyc2VtZGFzaCcsICdwZXJpb2RzdXBlcmlvcicsICdxdWVzdGlvbnNtYWxsJywgJ2FzdXBlcmlvcicsCiAgJ2JzdXBlcmlvcicsICdjZW50c3VwZXJpb3InLCAnZHN1cGVyaW9yJywgJ2VzdXBlcmlvcicsICdpc3VwZXJpb3InLAogICdsc3VwZXJpb3InLCAnbXN1cGVyaW9yJywgJ25zdXBlcmlvcicsICdvc3VwZXJpb3InLCAncnN1cGVyaW9yJywgJ3NzdXBlcmlvcicsCiAgJ3RzdXBlcmlvcicsICdmZicsICdmZmknLCAnZmZsJywgJ3BhcmVubGVmdGluZmVyaW9yJywgJ3BhcmVucmlnaHRpbmZlcmlvcicsCiAgJ0NpcmN1bWZsZXhzbWFsbCcsICdoeXBoZW5zdXBlcmlvcicsICdHcmF2ZXNtYWxsJywgJ0FzbWFsbCcsICdCc21hbGwnLAogICdDc21hbGwnLCAnRHNtYWxsJywgJ0VzbWFsbCcsICdGc21hbGwnLCAnR3NtYWxsJywgJ0hzbWFsbCcsICdJc21hbGwnLAogICdKc21hbGwnLCAnS3NtYWxsJywgJ0xzbWFsbCcsICdNc21hbGwnLCAnTnNtYWxsJywgJ09zbWFsbCcsICdQc21hbGwnLAogICdRc21hbGwnLCAnUnNtYWxsJywgJ1NzbWFsbCcsICdUc21hbGwnLCAnVXNtYWxsJywgJ1ZzbWFsbCcsICdXc21hbGwnLAogICdYc21hbGwnLCAnWXNtYWxsJywgJ1pzbWFsbCcsICdjb2xvbm1vbmV0YXJ5JywgJ29uZWZpdHRlZCcsICdydXBpYWgnLAogICdUaWxkZXNtYWxsJywgJ2V4Y2xhbWRvd25zbWFsbCcsICdjZW50b2xkc3R5bGUnLCAnTHNsYXNoc21hbGwnLAogICdTY2Fyb25zbWFsbCcsICdaY2Fyb25zbWFsbCcsICdEaWVyZXNpc3NtYWxsJywgJ0JyZXZlc21hbGwnLCAnQ2Fyb25zbWFsbCcsCiAgJ0RvdGFjY2VudHNtYWxsJywgJ01hY3JvbnNtYWxsJywgJ2ZpZ3VyZWRhc2gnLCAnaHlwaGVuaW5mZXJpb3InLAogICdPZ29uZWtzbWFsbCcsICdSaW5nc21hbGwnLCAnQ2VkaWxsYXNtYWxsJywgJ3F1ZXN0aW9uZG93bnNtYWxsJywgJ29uZWVpZ2h0aCcsCiAgJ3RocmVlZWlnaHRocycsICdmaXZlZWlnaHRocycsICdzZXZlbmVpZ2h0aHMnLCAnb25ldGhpcmQnLCAndHdvdGhpcmRzJywKICAnemVyb3N1cGVyaW9yJywgJ2ZvdXJzdXBlcmlvcicsICdmaXZlc3VwZXJpb3InLCAnc2l4c3VwZXJpb3InLAogICdzZXZlbnN1cGVyaW9yJywgJ2VpZ2h0c3VwZXJpb3InLCAnbmluZXN1cGVyaW9yJywgJ3plcm9pbmZlcmlvcicsCiAgJ29uZWluZmVyaW9yJywgJ3R3b2luZmVyaW9yJywgJ3RocmVlaW5mZXJpb3InLCAnZm91cmluZmVyaW9yJywKICAnZml2ZWluZmVyaW9yJywgJ3NpeGluZmVyaW9yJywgJ3NldmVuaW5mZXJpb3InLCAnZWlnaHRpbmZlcmlvcicsCiAgJ25pbmVpbmZlcmlvcicsICdjZW50aW5mZXJpb3InLCAnZG9sbGFyaW5mZXJpb3InLCAncGVyaW9kaW5mZXJpb3InLAogICdjb21tYWluZmVyaW9yJywgJ0FncmF2ZXNtYWxsJywgJ0FhY3V0ZXNtYWxsJywgJ0FjaXJjdW1mbGV4c21hbGwnLAogICdBdGlsZGVzbWFsbCcsICdBZGllcmVzaXNzbWFsbCcsICdBcmluZ3NtYWxsJywgJ0FFc21hbGwnLCAnQ2NlZGlsbGFzbWFsbCcsCiAgJ0VncmF2ZXNtYWxsJywgJ0VhY3V0ZXNtYWxsJywgJ0VjaXJjdW1mbGV4c21hbGwnLCAnRWRpZXJlc2lzc21hbGwnLAogICdJZ3JhdmVzbWFsbCcsICdJYWN1dGVzbWFsbCcsICdJY2lyY3VtZmxleHNtYWxsJywgJ0lkaWVyZXNpc3NtYWxsJywKICAnRXRoc21hbGwnLCAnTnRpbGRlc21hbGwnLCAnT2dyYXZlc21hbGwnLCAnT2FjdXRlc21hbGwnLCAnT2NpcmN1bWZsZXhzbWFsbCcsCiAgJ090aWxkZXNtYWxsJywgJ09kaWVyZXNpc3NtYWxsJywgJ09Fc21hbGwnLCAnT3NsYXNoc21hbGwnLCAnVWdyYXZlc21hbGwnLAogICdVYWN1dGVzbWFsbCcsICdVY2lyY3VtZmxleHNtYWxsJywgJ1VkaWVyZXNpc3NtYWxsJywgJ1lhY3V0ZXNtYWxsJywKICAnVGhvcm5zbWFsbCcsICdZZGllcmVzaXNzbWFsbCcsICcwMDEuMDAwJywgJzAwMS4wMDEnLCAnMDAxLjAwMicsICcwMDEuMDAzJywKICAnQmxhY2snLCAnQm9sZCcsICdCb29rJywgJ0xpZ2h0JywgJ01lZGl1bScsICdSZWd1bGFyJywgJ1JvbWFuJywgJ1NlbWlib2xkJwpdOwoKLy8gVHlwZTFGb250IGlzIGFsc28gYSBDSURGb250VHlwZTAuCnZhciBUeXBlMUZvbnQgPSBmdW5jdGlvbiBUeXBlMUZvbnQobmFtZSwgZmlsZSwgcHJvcGVydGllcykgewogIC8vIFNvbWUgYmFkIGdlbmVyYXRvcnMgZW1iZWQgcGZiIGZpbGUgYXMgaXMsIHdlIGhhdmUgdG8gc3RyaXAgNi1ieXRlIGhlYWRlcnMuCiAgLy8gQWxzbywgbGVuZ3RoMSBhbmQgbGVuZ3RoMiBtaWdodCBiZSBvZmYgYnkgNiBieXRlcyBhcyB3ZWxsLgogIC8vIGh0dHA6Ly93d3cubWF0aC51YmMuY2EvfmNhc3MvcGlzY3JpcHQvdHlwZTEucGRmCiAgdmFyIFBGQl9IRUFERVJfU0laRSA9IDY7CiAgdmFyIGhlYWRlckJsb2NrTGVuZ3RoID0gcHJvcGVydGllcy5sZW5ndGgxOwogIHZhciBlZXhlY0Jsb2NrTGVuZ3RoID0gcHJvcGVydGllcy5sZW5ndGgyOwogIHZhciBwZmJIZWFkZXIgPSBmaWxlLnBlZWtCeXRlcyhQRkJfSEVBREVSX1NJWkUpOwogIHZhciBwZmJIZWFkZXJQcmVzZW50ID0gcGZiSGVhZGVyWzBdID09PSAweDgwICYmIHBmYkhlYWRlclsxXSA9PT0gMHgwMTsKICBpZiAocGZiSGVhZGVyUHJlc2VudCkgewogICAgZmlsZS5za2lwKFBGQl9IRUFERVJfU0laRSk7CiAgICBoZWFkZXJCbG9ja0xlbmd0aCA9IChwZmJIZWFkZXJbNV0gPDwgMjQpIHwgKHBmYkhlYWRlcls0XSA8PCAxNikgfAogICAgICAgICAgICAgICAgICAgICAgICAocGZiSGVhZGVyWzNdIDw8IDgpIHwgcGZiSGVhZGVyWzJdOwogIH0KCiAgLy8gR2V0IHRoZSBkYXRhIGJsb2NrIGNvbnRhaW5pbmcgZ2x5cGhzIGFuZCBzdWJycyBpbmZvcm1hdGlvbnMKICB2YXIgaGVhZGVyQmxvY2sgPSBuZXcgU3RyZWFtKGZpbGUuZ2V0Qnl0ZXMoaGVhZGVyQmxvY2tMZW5ndGgpKTsKICB2YXIgaGVhZGVyQmxvY2tQYXJzZXIgPSBuZXcgVHlwZTFQYXJzZXIoaGVhZGVyQmxvY2spOwogIGhlYWRlckJsb2NrUGFyc2VyLmV4dHJhY3RGb250SGVhZGVyKHByb3BlcnRpZXMpOwoKICBpZiAocGZiSGVhZGVyUHJlc2VudCkgewogICAgcGZiSGVhZGVyID0gZmlsZS5nZXRCeXRlcyhQRkJfSEVBREVSX1NJWkUpOwogICAgZWV4ZWNCbG9ja0xlbmd0aCA9IChwZmJIZWFkZXJbNV0gPDwgMjQpIHwgKHBmYkhlYWRlcls0XSA8PCAxNikgfAogICAgICAgICAgICAgICAgICAgICAgIChwZmJIZWFkZXJbM10gPDwgOCkgfCBwZmJIZWFkZXJbMl07CiAgfQoKICAvLyBEZWNyeXB0IHRoZSBkYXRhIGJsb2NrcyBhbmQgcmV0cmlldmUgaXQncyBjb250ZW50CiAgdmFyIGVleGVjQmxvY2sgPSBuZXcgU3RyZWFtKGZpbGUuZ2V0Qnl0ZXMoZWV4ZWNCbG9ja0xlbmd0aCkpOwogIHZhciBlZXhlY0Jsb2NrUGFyc2VyID0gbmV3IFR5cGUxUGFyc2VyKGVleGVjQmxvY2ssIHRydWUpOwogIHZhciBkYXRhID0gZWV4ZWNCbG9ja1BhcnNlci5leHRyYWN0Rm9udFByb2dyYW0oKTsKICBmb3IgKHZhciBpbmZvIGluIGRhdGEucHJvcGVydGllcykgewogICAgcHJvcGVydGllc1tpbmZvXSA9IGRhdGEucHJvcGVydGllc1tpbmZvXTsKICB9CgogIHZhciBjaGFyc3RyaW5ncyA9IGRhdGEuY2hhcnN0cmluZ3M7CiAgdmFyIHR5cGUyQ2hhcnN0cmluZ3MgPSB0aGlzLmdldFR5cGUyQ2hhcnN0cmluZ3MoY2hhcnN0cmluZ3MpOwogIHZhciBzdWJycyA9IHRoaXMuZ2V0VHlwZTJTdWJycyhkYXRhLnN1YnJzKTsKCiAgdGhpcy5jaGFyc3RyaW5ncyA9IGNoYXJzdHJpbmdzOwogIHRoaXMuZGF0YSA9IHRoaXMud3JhcChuYW1lLCB0eXBlMkNoYXJzdHJpbmdzLCB0aGlzLmNoYXJzdHJpbmdzLAogICAgICAgICAgICAgICAgICAgICAgICBzdWJycywgcHJvcGVydGllcyk7CiAgdGhpcy5zZWFjcyA9IHRoaXMuZ2V0U2VhY3MoZGF0YS5jaGFyc3RyaW5ncyk7Cn07CgpUeXBlMUZvbnQucHJvdG90eXBlID0gewogIGdldCBudW1HbHlwaHMoKSB7CiAgICByZXR1cm4gdGhpcy5jaGFyc3RyaW5ncy5sZW5ndGggKyAxOwogIH0sCgogIGdldENoYXJzZXQ6IGZ1bmN0aW9uIFR5cGUxRm9udF9nZXRDaGFyc2V0KCkgewogICAgdmFyIGNoYXJzZXQgPSBbJy5ub3RkZWYnXTsKICAgIHZhciBjaGFyc3RyaW5ncyA9IHRoaXMuY2hhcnN0cmluZ3M7CiAgICBmb3IgKHZhciBnbHlwaElkID0gMDsgZ2x5cGhJZCA8IGNoYXJzdHJpbmdzLmxlbmd0aDsgZ2x5cGhJZCsrKSB7CiAgICAgIGNoYXJzZXQucHVzaChjaGFyc3RyaW5nc1tnbHlwaElkXS5nbHlwaE5hbWUpOwogICAgfQogICAgcmV0dXJuIGNoYXJzZXQ7CiAgfSwKCiAgZ2V0R2x5cGhNYXBwaW5nOiBmdW5jdGlvbiBUeXBlMUZvbnRfZ2V0R2x5cGhNYXBwaW5nKHByb3BlcnRpZXMpIHsKICAgIHZhciBjaGFyc3RyaW5ncyA9IHRoaXMuY2hhcnN0cmluZ3M7CiAgICB2YXIgZ2x5cGhOYW1lcyA9IFsnLm5vdGRlZiddLCBnbHlwaElkOwogICAgZm9yIChnbHlwaElkID0gMDsgZ2x5cGhJZCA8IGNoYXJzdHJpbmdzLmxlbmd0aDsgZ2x5cGhJZCsrKSB7CiAgICAgIGdseXBoTmFtZXMucHVzaChjaGFyc3RyaW5nc1tnbHlwaElkXS5nbHlwaE5hbWUpOwogICAgfQogICAgdmFyIGVuY29kaW5nID0gcHJvcGVydGllcy5idWlsdEluRW5jb2Rpbmc7CiAgICBpZiAoZW5jb2RpbmcpIHsKICAgICAgdmFyIGJ1aWx0SW5FbmNvZGluZyA9IHt9OwogICAgICBmb3IgKHZhciBjaGFyQ29kZSBpbiBlbmNvZGluZykgewogICAgICAgIGdseXBoSWQgPSBnbHlwaE5hbWVzLmluZGV4T2YoZW5jb2RpbmdbY2hhckNvZGVdKTsKICAgICAgICBpZiAoZ2x5cGhJZCA+PSAwKSB7CiAgICAgICAgICBidWlsdEluRW5jb2RpbmdbY2hhckNvZGVdID0gZ2x5cGhJZDsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gdHlwZTFGb250R2x5cGhNYXBwaW5nKHByb3BlcnRpZXMsIGJ1aWx0SW5FbmNvZGluZywgZ2x5cGhOYW1lcyk7CiAgfSwKCiAgZ2V0U2VhY3M6IGZ1bmN0aW9uIFR5cGUxRm9udF9nZXRTZWFjcyhjaGFyc3RyaW5ncykgewogICAgdmFyIGksIGlpOwogICAgdmFyIHNlYWNNYXAgPSBbXTsKICAgIGZvciAoaSA9IDAsIGlpID0gY2hhcnN0cmluZ3MubGVuZ3RoOyBpIDwgaWk7IGkrKykgewogICAgICB2YXIgY2hhcnN0cmluZyA9IGNoYXJzdHJpbmdzW2ldOwogICAgICBpZiAoY2hhcnN0cmluZy5zZWFjKSB7CiAgICAgICAgLy8gT2Zmc2V0IGJ5IDEgZm9yIC5ub3RkZWYKICAgICAgICBzZWFjTWFwW2kgKyAxXSA9IGNoYXJzdHJpbmcuc2VhYzsKICAgICAgfQogICAgfQogICAgcmV0dXJuIHNlYWNNYXA7CiAgfSwKCiAgZ2V0VHlwZTJDaGFyc3RyaW5nczogZnVuY3Rpb24gVHlwZTFGb250X2dldFR5cGUyQ2hhcnN0cmluZ3MoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlMUNoYXJzdHJpbmdzKSB7CiAgICB2YXIgdHlwZTJDaGFyc3RyaW5ncyA9IFtdOwogICAgZm9yICh2YXIgaSA9IDAsIGlpID0gdHlwZTFDaGFyc3RyaW5ncy5sZW5ndGg7IGkgPCBpaTsgaSsrKSB7CiAgICAgIHR5cGUyQ2hhcnN0cmluZ3MucHVzaCh0eXBlMUNoYXJzdHJpbmdzW2ldLmNoYXJzdHJpbmcpOwogICAgfQogICAgcmV0dXJuIHR5cGUyQ2hhcnN0cmluZ3M7CiAgfSwKCiAgZ2V0VHlwZTJTdWJyczogZnVuY3Rpb24gVHlwZTFGb250X2dldFR5cGUyU3VicnModHlwZTFTdWJycykgewogICAgdmFyIGJpYXMgPSAwOwogICAgdmFyIGNvdW50ID0gdHlwZTFTdWJycy5sZW5ndGg7CiAgICBpZiAoY291bnQgPCAxMTMzKSB7CiAgICAgIGJpYXMgPSAxMDc7CiAgICB9IGVsc2UgaWYgKGNvdW50IDwgMzM3NjkpIHsKICAgICAgYmlhcyA9IDExMzE7CiAgICB9IGVsc2UgewogICAgICBiaWFzID0gMzI3Njg7CiAgICB9CgogICAgLy8gQWRkIGEgYnVuY2ggb2YgZW1wdHkgc3VicnMgdG8gZGVhbCB3aXRoIHRoZSBUeXBlMiBiaWFzCiAgICB2YXIgdHlwZTJTdWJycyA9IFtdOwogICAgdmFyIGk7CiAgICBmb3IgKGkgPSAwOyBpIDwgYmlhczsgaSsrKSB7CiAgICAgIHR5cGUyU3VicnMucHVzaChbMHgwQl0pOwogICAgfQoKICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CiAgICAgIHR5cGUyU3VicnMucHVzaCh0eXBlMVN1YnJzW2ldKTsKICAgIH0KCiAgICByZXR1cm4gdHlwZTJTdWJyczsKICB9LAoKICB3cmFwOiBmdW5jdGlvbiBUeXBlMUZvbnRfd3JhcChuYW1lLCBnbHlwaHMsIGNoYXJzdHJpbmdzLCBzdWJycywgcHJvcGVydGllcykgewogICAgdmFyIGNmZiA9IG5ldyBDRkYoKTsKICAgIGNmZi5oZWFkZXIgPSBuZXcgQ0ZGSGVhZGVyKDEsIDAsIDQsIDQpOwoKICAgIGNmZi5uYW1lcyA9IFtuYW1lXTsKCiAgICB2YXIgdG9wRGljdCA9IG5ldyBDRkZUb3BEaWN0KCk7CiAgICAvLyBDRkYgc3RyaW5ncyBJRHMgMC4uLjM5MCBhcmUgcHJlZGVmaW5lZCBuYW1lcywgc28gcmVmZXJpbmcKICAgIC8vIHRvIGVudHJpZXMgaW4gb3VyIG93biBTdHJpbmcgSU5ERVggc3RhcnRzIGF0IFNJRCAzOTEuCiAgICB0b3BEaWN0LnNldEJ5TmFtZSgndmVyc2lvbicsIDM5MSk7CiAgICB0b3BEaWN0LnNldEJ5TmFtZSgnTm90aWNlJywgMzkyKTsKICAgIHRvcERpY3Quc2V0QnlOYW1lKCdGdWxsTmFtZScsIDM5Myk7CiAgICB0b3BEaWN0LnNldEJ5TmFtZSgnRmFtaWx5TmFtZScsIDM5NCk7CiAgICB0b3BEaWN0LnNldEJ5TmFtZSgnV2VpZ2h0JywgMzk1KTsKICAgIHRvcERpY3Quc2V0QnlOYW1lKCdFbmNvZGluZycsIG51bGwpOyAvLyBwbGFjZWhvbGRlcgogICAgdG9wRGljdC5zZXRCeU5hbWUoJ0ZvbnRNYXRyaXgnLCBwcm9wZXJ0aWVzLmZvbnRNYXRyaXgpOwogICAgdG9wRGljdC5zZXRCeU5hbWUoJ0ZvbnRCQm94JywgcHJvcGVydGllcy5iYm94KTsKICAgIHRvcERpY3Quc2V0QnlOYW1lKCdjaGFyc2V0JywgbnVsbCk7IC8vIHBsYWNlaG9sZGVyCiAgICB0b3BEaWN0LnNldEJ5TmFtZSgnQ2hhclN0cmluZ3MnLCBudWxsKTsgLy8gcGxhY2Vob2xkZXIKICAgIHRvcERpY3Quc2V0QnlOYW1lKCdQcml2YXRlJywgbnVsbCk7IC8vIHBsYWNlaG9sZGVyCiAgICBjZmYudG9wRGljdCA9IHRvcERpY3Q7CgogICAgdmFyIHN0cmluZ3MgPSBuZXcgQ0ZGU3RyaW5ncygpOwogICAgc3RyaW5ncy5hZGQoJ1ZlcnNpb24gMC4xMScpOyAvLyBWZXJzaW9uCiAgICBzdHJpbmdzLmFkZCgnU2VlIG9yaWdpbmFsIG5vdGljZScpOyAvLyBOb3RpY2UKICAgIHN0cmluZ3MuYWRkKG5hbWUpOyAvLyBGdWxsTmFtZQogICAgc3RyaW5ncy5hZGQobmFtZSk7IC8vIEZhbWlseU5hbWUKICAgIHN0cmluZ3MuYWRkKCdNZWRpdW0nKTsgLy8gV2VpZ2h0CiAgICBjZmYuc3RyaW5ncyA9IHN0cmluZ3M7CgogICAgY2ZmLmdsb2JhbFN1YnJJbmRleCA9IG5ldyBDRkZJbmRleCgpOwoKICAgIHZhciBjb3VudCA9IGdseXBocy5sZW5ndGg7CiAgICB2YXIgY2hhcnNldEFycmF5ID0gWzBdOwogICAgdmFyIGksIGlpOwogICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKICAgICAgdmFyIGluZGV4ID0gQ0ZGU3RhbmRhcmRTdHJpbmdzLmluZGV4T2YoY2hhcnN0cmluZ3NbaV0uZ2x5cGhOYW1lKTsKICAgICAgLy8gVE9ETzogSW5zZXJ0IHRoZSBzdHJpbmcgYW5kIGNvcnJlY3RseSBtYXAgaXQuICBQcmV2aW91c2x5IGl0IHdhcwogICAgICAvLyB0aG91Z2h0IG1hcHBpbmcgbmFtZXMgdGhhdCBhcmVuJ3QgaW4gdGhlIHN0YW5kYXJkIHN0cmluZ3MgdG8gLm5vdGRlZgogICAgICAvLyB3YXMgZmluZSwgaG93ZXZlciBpbiBpc3N1ZTgxOCB3aGVuIG1hcHBpbmcgdGhlbSBhbGwgdG8gLm5vdGRlZiB0aGUKICAgICAgLy8gYWRpZXJlc2lzIGdseXBoIG5vIGxvbmdlciB3b3JrZWQuCiAgICAgIGlmIChpbmRleCA9PT0gLTEpIHsKICAgICAgICBpbmRleCA9IDA7CiAgICAgIH0KICAgICAgY2hhcnNldEFycmF5LnB1c2goKGluZGV4ID4+IDgpICYgMHhmZiwgaW5kZXggJiAweGZmKTsKICAgIH0KICAgIGNmZi5jaGFyc2V0ID0gbmV3IENGRkNoYXJzZXQoZmFsc2UsIDAsIFtdLCBjaGFyc2V0QXJyYXkpOwoKICAgIHZhciBjaGFyU3RyaW5nc0luZGV4ID0gbmV3IENGRkluZGV4KCk7CiAgICBjaGFyU3RyaW5nc0luZGV4LmFkZChbMHg4QiwgMHgwRV0pOyAvLyAubm90ZGVmCiAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewogICAgICBjaGFyU3RyaW5nc0luZGV4LmFkZChnbHlwaHNbaV0pOwogICAgfQogICAgY2ZmLmNoYXJTdHJpbmdzID0gY2hhclN0cmluZ3NJbmRleDsKCiAgICB2YXIgcHJpdmF0ZURpY3QgPSBuZXcgQ0ZGUHJpdmF0ZURpY3QoKTsKICAgIHByaXZhdGVEaWN0LnNldEJ5TmFtZSgnU3VicnMnLCBudWxsKTsgLy8gcGxhY2Vob2xkZXIKICAgIHZhciBmaWVsZHMgPSBbCiAgICAgICdCbHVlVmFsdWVzJywKICAgICAgJ090aGVyQmx1ZXMnLAogICAgICAnRmFtaWx5Qmx1ZXMnLAogICAgICAnRmFtaWx5T3RoZXJCbHVlcycsCiAgICAgICdTdGVtU25hcEgnLAogICAgICAnU3RlbVNuYXBWJywKICAgICAgJ0JsdWVTaGlmdCcsCiAgICAgICdCbHVlRnV6eicsCiAgICAgICdCbHVlU2NhbGUnLAogICAgICAnTGFuZ3VhZ2VHcm91cCcsCiAgICAgICdFeHBhbnNpb25GYWN0b3InLAogICAgICAnRm9yY2VCb2xkJywKICAgICAgJ1N0ZEhXJywKICAgICAgJ1N0ZFZXJwogICAgXTsKICAgIGZvciAoaSA9IDAsIGlpID0gZmllbGRzLmxlbmd0aDsgaSA8IGlpOyBpKyspIHsKICAgICAgdmFyIGZpZWxkID0gZmllbGRzW2ldOwogICAgICBpZiAoIXByb3BlcnRpZXMucHJpdmF0ZURhdGEuaGFzT3duUHJvcGVydHkoZmllbGQpKSB7CiAgICAgICAgY29udGludWU7CiAgICAgIH0KICAgICAgdmFyIHZhbHVlID0gcHJvcGVydGllcy5wcml2YXRlRGF0YVtmaWVsZF07CiAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkgewogICAgICAgIC8vIEFsbCBvZiB0aGUgcHJpdmF0ZSBkaWN0aW9uYXJ5IGFycmF5IGRhdGEgaW4gQ0ZGIG11c3QgYmUgc3RvcmVkIGFzCiAgICAgICAgLy8gImRlbHRhLWVuY29kZWQiIG51bWJlcnMuCiAgICAgICAgZm9yICh2YXIgaiA9IHZhbHVlLmxlbmd0aCAtIDE7IGogPiAwOyBqLS0pIHsKICAgICAgICAgIHZhbHVlW2pdIC09IHZhbHVlW2ogLSAxXTsgLy8gLi4uIGRpZmZlcmVuY2UgZnJvbSBwcmV2aW91cyB2YWx1ZQogICAgICAgIH0KICAgICAgfQogICAgICBwcml2YXRlRGljdC5zZXRCeU5hbWUoZmllbGQsIHZhbHVlKTsKICAgIH0KICAgIGNmZi50b3BEaWN0LnByaXZhdGVEaWN0ID0gcHJpdmF0ZURpY3Q7CgogICAgdmFyIHN1YnJJbmRleCA9IG5ldyBDRkZJbmRleCgpOwogICAgZm9yIChpID0gMCwgaWkgPSBzdWJycy5sZW5ndGg7IGkgPCBpaTsgaSsrKSB7CiAgICAgIHN1YnJJbmRleC5hZGQoc3VicnNbaV0pOwogICAgfQogICAgcHJpdmF0ZURpY3Quc3VicnNJbmRleCA9IHN1YnJJbmRleDsKCiAgICB2YXIgY29tcGlsZXIgPSBuZXcgQ0ZGQ29tcGlsZXIoY2ZmKTsKICAgIHJldHVybiBjb21waWxlci5jb21waWxlKCk7CiAgfQp9OwoKdmFyIENGRkZvbnQgPSAoZnVuY3Rpb24gQ0ZGRm9udENsb3N1cmUoKSB7CiAgZnVuY3Rpb24gQ0ZGRm9udChmaWxlLCBwcm9wZXJ0aWVzKSB7CiAgICB0aGlzLnByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzOwoKICAgIHZhciBwYXJzZXIgPSBuZXcgQ0ZGUGFyc2VyKGZpbGUsIHByb3BlcnRpZXMpOwogICAgdGhpcy5jZmYgPSBwYXJzZXIucGFyc2UoKTsKICAgIHZhciBjb21waWxlciA9IG5ldyBDRkZDb21waWxlcih0aGlzLmNmZik7CiAgICB0aGlzLnNlYWNzID0gdGhpcy5jZmYuc2VhY3M7CiAgICB0cnkgewogICAgICB0aGlzLmRhdGEgPSBjb21waWxlci5jb21waWxlKCk7CiAgICB9IGNhdGNoIChlKSB7CiAgICAgIHdhcm4oJ0ZhaWxlZCB0byBjb21waWxlIGZvbnQgJyArIHByb3BlcnRpZXMubG9hZGVkTmFtZSk7CiAgICAgIC8vIFRoZXJlIG1heSBoYXZlIGp1c3QgYmVlbiBhbiBpc3N1ZSB3aXRoIHRoZSBjb21waWxlciwgc2V0IHRoZSBkYXRhCiAgICAgIC8vIGFueXdheSBhbmQgaG9wZSB0aGUgZm9udCBsb2FkZWQuCiAgICAgIHRoaXMuZGF0YSA9IGZpbGU7CiAgICB9CiAgfQoKICBDRkZGb250LnByb3RvdHlwZSA9IHsKICAgIGdldCBudW1HbHlwaHMoKSB7CiAgICAgIHJldHVybiB0aGlzLmNmZi5jaGFyU3RyaW5ncy5jb3VudDsKICAgIH0sCiAgICBnZXRDaGFyc2V0OiBmdW5jdGlvbiBDRkZGb250X2dldENoYXJzZXQoKSB7CiAgICAgIHJldHVybiB0aGlzLmNmZi5jaGFyc2V0LmNoYXJzZXQ7CiAgICB9LAogICAgZ2V0R2x5cGhNYXBwaW5nOiBmdW5jdGlvbiBDRkZGb250X2dldEdseXBoTWFwcGluZygpIHsKICAgICAgdmFyIGNmZiA9IHRoaXMuY2ZmOwogICAgICB2YXIgcHJvcGVydGllcyA9IHRoaXMucHJvcGVydGllczsKICAgICAgdmFyIGNoYXJzZXRzID0gY2ZmLmNoYXJzZXQuY2hhcnNldDsKICAgICAgdmFyIGNoYXJDb2RlVG9HbHlwaElkOwogICAgICB2YXIgZ2x5cGhJZDsKCiAgICAgIGlmIChwcm9wZXJ0aWVzLmNvbXBvc2l0ZSkgewogICAgICAgIGNoYXJDb2RlVG9HbHlwaElkID0gT2JqZWN0LmNyZWF0ZShudWxsKTsKICAgICAgICBpZiAoY2ZmLmlzQ0lERm9udCkgewogICAgICAgICAgLy8gSWYgdGhlIGZvbnQgaXMgYWN0dWFsbHkgYSBDSUQgZm9udCB0aGVuIHdlIHNob3VsZCB1c2UgdGhlIGNoYXJzZXQKICAgICAgICAgIC8vIHRvIG1hcCBDSURzIHRvIEdJRHMuCiAgICAgICAgICBmb3IgKGdseXBoSWQgPSAwOyBnbHlwaElkIDwgY2hhcnNldHMubGVuZ3RoOyBnbHlwaElkKyspIHsKICAgICAgICAgICAgdmFyIGNpZCA9IGNoYXJzZXRzW2dseXBoSWRdOwogICAgICAgICAgICB2YXIgY2hhckNvZGUgPSBwcm9wZXJ0aWVzLmNNYXAuY2hhckNvZGVPZihjaWQpOwogICAgICAgICAgICBjaGFyQ29kZVRvR2x5cGhJZFtjaGFyQ29kZV0gPSBnbHlwaElkOwogICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAvLyBJZiBpdCBpcyBOT1QgYWN0dWFsbHkgYSBDSUQgZm9udCB0aGVuIENJRHMgc2hvdWxkIGJlIG1hcHBlZAogICAgICAgICAgLy8gZGlyZWN0bHkgdG8gR0lEcy4KICAgICAgICAgIGZvciAoZ2x5cGhJZCA9IDA7IGdseXBoSWQgPCBjZmYuY2hhclN0cmluZ3MuY291bnQ7IGdseXBoSWQrKykgewogICAgICAgICAgICBjaGFyQ29kZVRvR2x5cGhJZFtnbHlwaElkXSA9IGdseXBoSWQ7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBjaGFyQ29kZVRvR2x5cGhJZDsKICAgICAgfQoKICAgICAgdmFyIGVuY29kaW5nID0gY2ZmLmVuY29kaW5nID8gY2ZmLmVuY29kaW5nLmVuY29kaW5nIDogbnVsbDsKICAgICAgY2hhckNvZGVUb0dseXBoSWQgPSB0eXBlMUZvbnRHbHlwaE1hcHBpbmcocHJvcGVydGllcywgZW5jb2RpbmcsIGNoYXJzZXRzKTsKICAgICAgcmV0dXJuIGNoYXJDb2RlVG9HbHlwaElkOwogICAgfQogIH07CgogIHJldHVybiBDRkZGb250Owp9KSgpOwoKdmFyIENGRlBhcnNlciA9IChmdW5jdGlvbiBDRkZQYXJzZXJDbG9zdXJlKCkgewogIHZhciBDaGFyc3RyaW5nVmFsaWRhdGlvbkRhdGEgPSBbCiAgICBudWxsLAogICAgeyBpZDogJ2hzdGVtJywgbWluOiAyLCBzdGFja0NsZWFyaW5nOiB0cnVlLCBzdGVtOiB0cnVlIH0sCiAgICBudWxsLAogICAgeyBpZDogJ3ZzdGVtJywgbWluOiAyLCBzdGFja0NsZWFyaW5nOiB0cnVlLCBzdGVtOiB0cnVlIH0sCiAgICB7IGlkOiAndm1vdmV0bycsIG1pbjogMSwgc3RhY2tDbGVhcmluZzogdHJ1ZSB9LAogICAgeyBpZDogJ3JsaW5ldG8nLCBtaW46IDIsIHJlc2V0U3RhY2s6IHRydWUgfSwKICAgIHsgaWQ6ICdobGluZXRvJywgbWluOiAxLCByZXNldFN0YWNrOiB0cnVlIH0sCiAgICB7IGlkOiAndmxpbmV0bycsIG1pbjogMSwgcmVzZXRTdGFjazogdHJ1ZSB9LAogICAgeyBpZDogJ3JyY3VydmV0bycsIG1pbjogNiwgcmVzZXRTdGFjazogdHJ1ZSB9LAogICAgbnVsbCwKICAgIHsgaWQ6ICdjYWxsc3VicicsIG1pbjogMSwgdW5kZWZTdGFjazogdHJ1ZSB9LAogICAgeyBpZDogJ3JldHVybicsIG1pbjogMCwgdW5kZWZTdGFjazogdHJ1ZSB9LAogICAgbnVsbCwgLy8gMTIKICAgIG51bGwsCiAgICB7IGlkOiAnZW5kY2hhcicsIG1pbjogMCwgc3RhY2tDbGVhcmluZzogdHJ1ZSB9LAogICAgbnVsbCwKICAgIG51bGwsCiAgICBudWxsLAogICAgeyBpZDogJ2hzdGVtaG0nLCBtaW46IDIsIHN0YWNrQ2xlYXJpbmc6IHRydWUsIHN0ZW06IHRydWUgfSwKICAgIHsgaWQ6ICdoaW50bWFzaycsIG1pbjogMCwgc3RhY2tDbGVhcmluZzogdHJ1ZSB9LAogICAgeyBpZDogJ2NudHJtYXNrJywgbWluOiAwLCBzdGFja0NsZWFyaW5nOiB0cnVlIH0sCiAgICB7IGlkOiAncm1vdmV0bycsIG1pbjogMiwgc3RhY2tDbGVhcmluZzogdHJ1ZSB9LAogICAgeyBpZDogJ2htb3ZldG8nLCBtaW46IDEsIHN0YWNrQ2xlYXJpbmc6IHRydWUgfSwKICAgIHsgaWQ6ICd2c3RlbWhtJywgbWluOiAyLCBzdGFja0NsZWFyaW5nOiB0cnVlLCBzdGVtOiB0cnVlIH0sCiAgICB7IGlkOiAncmN1cnZlbGluZScsIG1pbjogOCwgcmVzZXRTdGFjazogdHJ1ZSB9LAogICAgeyBpZDogJ3JsaW5lY3VydmUnLCBtaW46IDgsIHJlc2V0U3RhY2s6IHRydWUgfSwKICAgIHsgaWQ6ICd2dmN1cnZldG8nLCBtaW46IDQsIHJlc2V0U3RhY2s6IHRydWUgfSwKICAgIHsgaWQ6ICdoaGN1cnZldG8nLCBtaW46IDQsIHJlc2V0U3RhY2s6IHRydWUgfSwKICAgIG51bGwsIC8vIHNob3J0aW50CiAgICB7IGlkOiAnY2FsbGdzdWJyJywgbWluOiAxLCB1bmRlZlN0YWNrOiB0cnVlIH0sCiAgICB7IGlkOiAndmhjdXJ2ZXRvJywgbWluOiA0LCByZXNldFN0YWNrOiB0cnVlIH0sCiAgICB7IGlkOiAnaHZjdXJ2ZXRvJywgbWluOiA0LCByZXNldFN0YWNrOiB0cnVlIH0KICBdOwogIHZhciBDaGFyc3RyaW5nVmFsaWRhdGlvbkRhdGExMiA9IFsKICAgIG51bGwsCiAgICBudWxsLAogICAgbnVsbCwKICAgIHsgaWQ6ICdhbmQnLCBtaW46IDIsIHN0YWNrRGVsdGE6IC0xIH0sCiAgICB7IGlkOiAnb3InLCBtaW46IDIsIHN0YWNrRGVsdGE6IC0xIH0sCiAgICB7IGlkOiAnbm90JywgbWluOiAxLCBzdGFja0RlbHRhOiAwIH0sCiAgICBudWxsLAogICAgbnVsbCwKICAgIG51bGwsCiAgICB7IGlkOiAnYWJzJywgbWluOiAxLCBzdGFja0RlbHRhOiAwIH0sCiAgICB7IGlkOiAnYWRkJywgbWluOiAyLCBzdGFja0RlbHRhOiAtMSwKICAgICAgc3RhY2tGbjogZnVuY3Rpb24gc3RhY2tfZGl2KHN0YWNrLCBpbmRleCkgewogICAgICAgIHN0YWNrW2luZGV4IC0gMl0gPSBzdGFja1tpbmRleCAtIDJdICsgc3RhY2tbaW5kZXggLSAxXTsKICAgICAgfQogICAgfSwKICAgIHsgaWQ6ICdzdWInLCBtaW46IDIsIHN0YWNrRGVsdGE6IC0xLAogICAgICBzdGFja0ZuOiBmdW5jdGlvbiBzdGFja19kaXYoc3RhY2ssIGluZGV4KSB7CiAgICAgICAgc3RhY2tbaW5kZXggLSAyXSA9IHN0YWNrW2luZGV4IC0gMl0gLSBzdGFja1tpbmRleCAtIDFdOwogICAgICB9CiAgICB9LAogICAgeyBpZDogJ2RpdicsIG1pbjogMiwgc3RhY2tEZWx0YTogLTEsCiAgICAgIHN0YWNrRm46IGZ1bmN0aW9uIHN0YWNrX2RpdihzdGFjaywgaW5kZXgpIHsKICAgICAgICBzdGFja1tpbmRleCAtIDJdID0gc3RhY2tbaW5kZXggLSAyXSAvIHN0YWNrW2luZGV4IC0gMV07CiAgICAgIH0KICAgIH0sCiAgICBudWxsLAogICAgeyBpZDogJ25lZycsIG1pbjogMSwgc3RhY2tEZWx0YTogMCwKICAgICAgc3RhY2tGbjogZnVuY3Rpb24gc3RhY2tfZGl2KHN0YWNrLCBpbmRleCkgewogICAgICAgIHN0YWNrW2luZGV4IC0gMV0gPSAtc3RhY2tbaW5kZXggLSAxXTsKICAgICAgfQogICAgfSwKICAgIHsgaWQ6ICdlcScsIG1pbjogMiwgc3RhY2tEZWx0YTogLTEgfSwKICAgIG51bGwsCiAgICBudWxsLAogICAgeyBpZDogJ2Ryb3AnLCBtaW46IDEsIHN0YWNrRGVsdGE6IC0xIH0sCiAgICBudWxsLAogICAgeyBpZDogJ3B1dCcsIG1pbjogMiwgc3RhY2tEZWx0YTogLTIgfSwKICAgIHsgaWQ6ICdnZXQnLCBtaW46IDEsIHN0YWNrRGVsdGE6IDAgfSwKICAgIHsgaWQ6ICdpZmVsc2UnLCBtaW46IDQsIHN0YWNrRGVsdGE6IC0zIH0sCiAgICB7IGlkOiAncmFuZG9tJywgbWluOiAwLCBzdGFja0RlbHRhOiAxIH0sCiAgICB7IGlkOiAnbXVsJywgbWluOiAyLCBzdGFja0RlbHRhOiAtMSwKICAgICAgc3RhY2tGbjogZnVuY3Rpb24gc3RhY2tfZGl2KHN0YWNrLCBpbmRleCkgewogICAgICAgIHN0YWNrW2luZGV4IC0gMl0gPSBzdGFja1tpbmRleCAtIDJdICogc3RhY2tbaW5kZXggLSAxXTsKICAgICAgfQogICAgfSwKICAgIG51bGwsCiAgICB7IGlkOiAnc3FydCcsIG1pbjogMSwgc3RhY2tEZWx0YTogMCB9LAogICAgeyBpZDogJ2R1cCcsIG1pbjogMSwgc3RhY2tEZWx0YTogMSB9LAogICAgeyBpZDogJ2V4Y2gnLCBtaW46IDIsIHN0YWNrRGVsdGE6IDAgfSwKICAgIHsgaWQ6ICdpbmRleCcsIG1pbjogMiwgc3RhY2tEZWx0YTogMCB9LAogICAgeyBpZDogJ3JvbGwnLCBtaW46IDMsIHN0YWNrRGVsdGE6IC0yIH0sCiAgICBudWxsLAogICAgbnVsbCwKICAgIG51bGwsCiAgICB7IGlkOiAnaGZsZXgnLCBtaW46IDcsIHJlc2V0U3RhY2s6IHRydWUgfSwKICAgIHsgaWQ6ICdmbGV4JywgbWluOiAxMywgcmVzZXRTdGFjazogdHJ1ZSB9LAogICAgeyBpZDogJ2hmbGV4MScsIG1pbjogOSwgcmVzZXRTdGFjazogdHJ1ZSB9LAogICAgeyBpZDogJ2ZsZXgxJywgbWluOiAxMSwgcmVzZXRTdGFjazogdHJ1ZSB9CiAgXTsKCiAgZnVuY3Rpb24gQ0ZGUGFyc2VyKGZpbGUsIHByb3BlcnRpZXMpIHsKICAgIHRoaXMuYnl0ZXMgPSBmaWxlLmdldEJ5dGVzKCk7CiAgICB0aGlzLnByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzOwogIH0KICBDRkZQYXJzZXIucHJvdG90eXBlID0gewogICAgcGFyc2U6IGZ1bmN0aW9uIENGRlBhcnNlcl9wYXJzZSgpIHsKICAgICAgdmFyIHByb3BlcnRpZXMgPSB0aGlzLnByb3BlcnRpZXM7CiAgICAgIHZhciBjZmYgPSBuZXcgQ0ZGKCk7CiAgICAgIHRoaXMuY2ZmID0gY2ZmOwoKICAgICAgLy8gVGhlIGZpcnN0IGZpdmUgc2VjdGlvbnMgbXVzdCBiZSBpbiBvcmRlciwgYWxsIHRoZSBvdGhlcnMgYXJlIHJlYWNoZWQKICAgICAgLy8gdmlhIG9mZnNldHMgY29udGFpbmVkIGluIG9uZSBvZiB0aGUgYmVsb3cuCiAgICAgIHZhciBoZWFkZXIgPSB0aGlzLnBhcnNlSGVhZGVyKCk7CiAgICAgIHZhciBuYW1lSW5kZXggPSB0aGlzLnBhcnNlSW5kZXgoaGVhZGVyLmVuZFBvcyk7CiAgICAgIHZhciB0b3BEaWN0SW5kZXggPSB0aGlzLnBhcnNlSW5kZXgobmFtZUluZGV4LmVuZFBvcyk7CiAgICAgIHZhciBzdHJpbmdJbmRleCA9IHRoaXMucGFyc2VJbmRleCh0b3BEaWN0SW5kZXguZW5kUG9zKTsKICAgICAgdmFyIGdsb2JhbFN1YnJJbmRleCA9IHRoaXMucGFyc2VJbmRleChzdHJpbmdJbmRleC5lbmRQb3MpOwoKICAgICAgdmFyIHRvcERpY3RQYXJzZWQgPSB0aGlzLnBhcnNlRGljdCh0b3BEaWN0SW5kZXgub2JqLmdldCgwKSk7CiAgICAgIHZhciB0b3BEaWN0ID0gdGhpcy5jcmVhdGVEaWN0KENGRlRvcERpY3QsIHRvcERpY3RQYXJzZWQsIGNmZi5zdHJpbmdzKTsKCiAgICAgIGNmZi5oZWFkZXIgPSBoZWFkZXIub2JqOwogICAgICBjZmYubmFtZXMgPSB0aGlzLnBhcnNlTmFtZUluZGV4KG5hbWVJbmRleC5vYmopOwogICAgICBjZmYuc3RyaW5ncyA9IHRoaXMucGFyc2VTdHJpbmdJbmRleChzdHJpbmdJbmRleC5vYmopOwogICAgICBjZmYudG9wRGljdCA9IHRvcERpY3Q7CiAgICAgIGNmZi5nbG9iYWxTdWJySW5kZXggPSBnbG9iYWxTdWJySW5kZXgub2JqOwoKICAgICAgdGhpcy5wYXJzZVByaXZhdGVEaWN0KGNmZi50b3BEaWN0KTsKCiAgICAgIGNmZi5pc0NJREZvbnQgPSB0b3BEaWN0Lmhhc05hbWUoJ1JPUycpOwoKICAgICAgdmFyIGNoYXJTdHJpbmdPZmZzZXQgPSB0b3BEaWN0LmdldEJ5TmFtZSgnQ2hhclN0cmluZ3MnKTsKICAgICAgdmFyIGNoYXJTdHJpbmdzQW5kU2VhY3MgPSB0aGlzLnBhcnNlQ2hhclN0cmluZ3MoY2hhclN0cmluZ09mZnNldCk7CiAgICAgIGNmZi5jaGFyU3RyaW5ncyA9IGNoYXJTdHJpbmdzQW5kU2VhY3MuY2hhclN0cmluZ3M7CiAgICAgIGNmZi5zZWFjcyA9IGNoYXJTdHJpbmdzQW5kU2VhY3Muc2VhY3M7CiAgICAgIGNmZi53aWR0aHMgPSBjaGFyU3RyaW5nc0FuZFNlYWNzLndpZHRoczsKCiAgICAgIHZhciBmb250TWF0cml4ID0gdG9wRGljdC5nZXRCeU5hbWUoJ0ZvbnRNYXRyaXgnKTsKICAgICAgaWYgKGZvbnRNYXRyaXgpIHsKICAgICAgICBwcm9wZXJ0aWVzLmZvbnRNYXRyaXggPSBmb250TWF0cml4OwogICAgICB9CgogICAgICB2YXIgZm9udEJCb3ggPSB0b3BEaWN0LmdldEJ5TmFtZSgnRm9udEJCb3gnKTsKICAgICAgaWYgKGZvbnRCQm94KSB7CiAgICAgICAgLy8gYWRqdXN0aW5nIGFzY2VudC9kZXNjZW50CiAgICAgICAgcHJvcGVydGllcy5hc2NlbnQgPSBmb250QkJveFszXTsKICAgICAgICBwcm9wZXJ0aWVzLmRlc2NlbnQgPSBmb250QkJveFsxXTsKICAgICAgICBwcm9wZXJ0aWVzLmFzY2VudFNjYWxlZCA9IHRydWU7CiAgICAgIH0KCiAgICAgIHZhciBjaGFyc2V0LCBlbmNvZGluZzsKICAgICAgaWYgKGNmZi5pc0NJREZvbnQpIHsKICAgICAgICB2YXIgZmRBcnJheUluZGV4ID0gdGhpcy5wYXJzZUluZGV4KHRvcERpY3QuZ2V0QnlOYW1lKCdGREFycmF5JykpLm9iajsKICAgICAgICBmb3IgKHZhciBpID0gMCwgaWkgPSBmZEFycmF5SW5kZXguY291bnQ7IGkgPCBpaTsgKytpKSB7CiAgICAgICAgICB2YXIgZGljdFJhdyA9IGZkQXJyYXlJbmRleC5nZXQoaSk7CiAgICAgICAgICB2YXIgZm9udERpY3QgPSB0aGlzLmNyZWF0ZURpY3QoQ0ZGVG9wRGljdCwgdGhpcy5wYXJzZURpY3QoZGljdFJhdyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2ZmLnN0cmluZ3MpOwogICAgICAgICAgdGhpcy5wYXJzZVByaXZhdGVEaWN0KGZvbnREaWN0KTsKICAgICAgICAgIGNmZi5mZEFycmF5LnB1c2goZm9udERpY3QpOwogICAgICAgIH0KICAgICAgICAvLyBjaWQgZm9udHMgZG9uJ3QgaGF2ZSBhbiBlbmNvZGluZwogICAgICAgIGVuY29kaW5nID0gbnVsbDsKICAgICAgICBjaGFyc2V0ID0gdGhpcy5wYXJzZUNoYXJzZXRzKHRvcERpY3QuZ2V0QnlOYW1lKCdjaGFyc2V0JyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZmYuY2hhclN0cmluZ3MuY291bnQsIGNmZi5zdHJpbmdzLCB0cnVlKTsKICAgICAgICBjZmYuZmRTZWxlY3QgPSB0aGlzLnBhcnNlRkRTZWxlY3QodG9wRGljdC5nZXRCeU5hbWUoJ0ZEU2VsZWN0JyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNmZi5jaGFyU3RyaW5ncy5jb3VudCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgY2hhcnNldCA9IHRoaXMucGFyc2VDaGFyc2V0cyh0b3BEaWN0LmdldEJ5TmFtZSgnY2hhcnNldCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2ZmLmNoYXJTdHJpbmdzLmNvdW50LCBjZmYuc3RyaW5ncywgZmFsc2UpOwogICAgICAgIGVuY29kaW5nID0gdGhpcy5wYXJzZUVuY29kaW5nKHRvcERpY3QuZ2V0QnlOYW1lKCdFbmNvZGluZycpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2ZmLnN0cmluZ3MsIGNoYXJzZXQuY2hhcnNldCk7CiAgICAgIH0KICAgICAgY2ZmLmNoYXJzZXQgPSBjaGFyc2V0OwogICAgICBjZmYuZW5jb2RpbmcgPSBlbmNvZGluZzsKCiAgICAgIHJldHVybiBjZmY7CiAgICB9LAogICAgcGFyc2VIZWFkZXI6IGZ1bmN0aW9uIENGRlBhcnNlcl9wYXJzZUhlYWRlcigpIHsKICAgICAgdmFyIGJ5dGVzID0gdGhpcy5ieXRlczsKICAgICAgdmFyIGJ5dGVzTGVuZ3RoID0gYnl0ZXMubGVuZ3RoOwogICAgICB2YXIgb2Zmc2V0ID0gMDsKCiAgICAgIC8vIFByZXZlbnQgYW4gaW5maW5pdGUgbG9vcCwgYnkgY2hlY2tpbmcgdGhhdCB0aGUgb2Zmc2V0IGlzIHdpdGhpbiB0aGUKICAgICAgLy8gYm91bmRzIG9mIHRoZSBieXRlcyBhcnJheS4gTmVjZXNzYXJ5IGluIGVtcHR5LCBvciBpbnZhbGlkLCBmb250IGZpbGVzLgogICAgICB3aGlsZSAob2Zmc2V0IDwgYnl0ZXNMZW5ndGggJiYgYnl0ZXNbb2Zmc2V0XSAhPT0gMSkgewogICAgICAgICsrb2Zmc2V0OwogICAgICB9CiAgICAgIGlmIChvZmZzZXQgPj0gYnl0ZXNMZW5ndGgpIHsKICAgICAgICBlcnJvcignSW52YWxpZCBDRkYgaGVhZGVyJyk7CiAgICAgIH0gZWxzZSBpZiAob2Zmc2V0ICE9PSAwKSB7CiAgICAgICAgaW5mbygnY2ZmIGRhdGEgaXMgc2hpZnRlZCcpOwogICAgICAgIGJ5dGVzID0gYnl0ZXMuc3ViYXJyYXkob2Zmc2V0KTsKICAgICAgICB0aGlzLmJ5dGVzID0gYnl0ZXM7CiAgICAgIH0KICAgICAgdmFyIG1ham9yID0gYnl0ZXNbMF07CiAgICAgIHZhciBtaW5vciA9IGJ5dGVzWzFdOwogICAgICB2YXIgaGRyU2l6ZSA9IGJ5dGVzWzJdOwogICAgICB2YXIgb2ZmU2l6ZSA9IGJ5dGVzWzNdOwogICAgICB2YXIgaGVhZGVyID0gbmV3IENGRkhlYWRlcihtYWpvciwgbWlub3IsIGhkclNpemUsIG9mZlNpemUpOwogICAgICByZXR1cm4geyBvYmo6IGhlYWRlciwgZW5kUG9zOiBoZHJTaXplIH07CiAgICB9LAogICAgcGFyc2VEaWN0OiBmdW5jdGlvbiBDRkZQYXJzZXJfcGFyc2VEaWN0KGRpY3QpIHsKICAgICAgdmFyIHBvcyA9IDA7CgogICAgICBmdW5jdGlvbiBwYXJzZU9wZXJhbmQoKSB7CiAgICAgICAgdmFyIHZhbHVlID0gZGljdFtwb3MrK107CiAgICAgICAgaWYgKHZhbHVlID09PSAzMCkgewogICAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXRPcGVyYW5kKHBvcyk7CiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gMjgpIHsKICAgICAgICAgIHZhbHVlID0gZGljdFtwb3MrK107CiAgICAgICAgICB2YWx1ZSA9ICgodmFsdWUgPDwgMjQpIHwgKGRpY3RbcG9zKytdIDw8IDE2KSkgPj4gMTY7CiAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gMjkpIHsKICAgICAgICAgIHZhbHVlID0gZGljdFtwb3MrK107CiAgICAgICAgICB2YWx1ZSA9ICh2YWx1ZSA8PCA4KSB8IGRpY3RbcG9zKytdOwogICAgICAgICAgdmFsdWUgPSAodmFsdWUgPDwgOCkgfCBkaWN0W3BvcysrXTsKICAgICAgICAgIHZhbHVlID0gKHZhbHVlIDw8IDgpIHwgZGljdFtwb3MrK107CiAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA+PSAzMiAmJiB2YWx1ZSA8PSAyNDYpIHsKICAgICAgICAgIHJldHVybiB2YWx1ZSAtIDEzOTsKICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID49IDI0NyAmJiB2YWx1ZSA8PSAyNTApIHsKICAgICAgICAgIHJldHVybiAoKHZhbHVlIC0gMjQ3KSAqIDI1NikgKyBkaWN0W3BvcysrXSArIDEwODsKICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID49IDI1MSAmJiB2YWx1ZSA8PSAyNTQpIHsKICAgICAgICAgIHJldHVybiAtKCh2YWx1ZSAtIDI1MSkgKiAyNTYpIC0gZGljdFtwb3MrK10gLSAxMDg7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGVycm9yKCcyNTUgaXMgbm90IGEgdmFsaWQgRElDVCBjb21tYW5kJyk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAtMTsKICAgICAgfQoKICAgICAgZnVuY3Rpb24gcGFyc2VGbG9hdE9wZXJhbmQoKSB7CiAgICAgICAgdmFyIHN0ciA9ICcnOwogICAgICAgIHZhciBlb2YgPSAxNTsKICAgICAgICB2YXIgbG9va3VwID0gWycwJywgJzEnLCAnMicsICczJywgJzQnLCAnNScsICc2JywgJzcnLCAnOCcsCiAgICAgICAgICAgICc5JywgJy4nLCAnRScsICdFLScsIG51bGwsICctJ107CiAgICAgICAgdmFyIGxlbmd0aCA9IGRpY3QubGVuZ3RoOwogICAgICAgIHdoaWxlIChwb3MgPCBsZW5ndGgpIHsKICAgICAgICAgIHZhciBiID0gZGljdFtwb3MrK107CiAgICAgICAgICB2YXIgYjEgPSBiID4+IDQ7CiAgICAgICAgICB2YXIgYjIgPSBiICYgMTU7CgogICAgICAgICAgaWYgKGIxID09PSBlb2YpIHsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CiAgICAgICAgICBzdHIgKz0gbG9va3VwW2IxXTsKCiAgICAgICAgICBpZiAoYjIgPT09IGVvZikgewogICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgICAgIHN0ciArPSBsb29rdXBbYjJdOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcGFyc2VGbG9hdChzdHIpOwogICAgICB9CgogICAgICB2YXIgb3BlcmFuZHMgPSBbXTsKICAgICAgdmFyIGVudHJpZXMgPSBbXTsKCiAgICAgIHBvcyA9IDA7CiAgICAgIHZhciBlbmQgPSBkaWN0Lmxlbmd0aDsKICAgICAgd2hpbGUgKHBvcyA8IGVuZCkgewogICAgICAgIHZhciBiID0gZGljdFtwb3NdOwogICAgICAgIGlmIChiIDw9IDIxKSB7CiAgICAgICAgICBpZiAoYiA9PT0gMTIpIHsKICAgICAgICAgICAgYiA9IChiIDw8IDgpIHwgZGljdFsrK3Bvc107CiAgICAgICAgICB9CiAgICAgICAgICBlbnRyaWVzLnB1c2goW2IsIG9wZXJhbmRzXSk7CiAgICAgICAgICBvcGVyYW5kcyA9IFtdOwogICAgICAgICAgKytwb3M7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIG9wZXJhbmRzLnB1c2gocGFyc2VPcGVyYW5kKCkpOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gZW50cmllczsKICAgIH0sCiAgICBwYXJzZUluZGV4OiBmdW5jdGlvbiBDRkZQYXJzZXJfcGFyc2VJbmRleChwb3MpIHsKICAgICAgdmFyIGNmZkluZGV4ID0gbmV3IENGRkluZGV4KCk7CiAgICAgIHZhciBieXRlcyA9IHRoaXMuYnl0ZXM7CiAgICAgIHZhciBjb3VudCA9IChieXRlc1twb3MrK10gPDwgOCkgfCBieXRlc1twb3MrK107CiAgICAgIHZhciBvZmZzZXRzID0gW107CiAgICAgIHZhciBlbmQgPSBwb3M7CiAgICAgIHZhciBpLCBpaTsKCiAgICAgIGlmIChjb3VudCAhPT0gMCkgewogICAgICAgIHZhciBvZmZzZXRTaXplID0gYnl0ZXNbcG9zKytdOwogICAgICAgIC8vIGFkZCAxIGZvciBvZmZzZXQgdG8gZGV0ZXJtaW5lIHNpemUgb2YgbGFzdCBvYmplY3QKICAgICAgICB2YXIgc3RhcnRQb3MgPSBwb3MgKyAoKGNvdW50ICsgMSkgKiBvZmZzZXRTaXplKSAtIDE7CgogICAgICAgIGZvciAoaSA9IDAsIGlpID0gY291bnQgKyAxOyBpIDwgaWk7ICsraSkgewogICAgICAgICAgdmFyIG9mZnNldCA9IDA7CiAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG9mZnNldFNpemU7ICsraikgewogICAgICAgICAgICBvZmZzZXQgPDw9IDg7CiAgICAgICAgICAgIG9mZnNldCArPSBieXRlc1twb3MrK107CiAgICAgICAgICB9CiAgICAgICAgICBvZmZzZXRzLnB1c2goc3RhcnRQb3MgKyBvZmZzZXQpOwogICAgICAgIH0KICAgICAgICBlbmQgPSBvZmZzZXRzW2NvdW50XTsKICAgICAgfQogICAgICBmb3IgKGkgPSAwLCBpaSA9IG9mZnNldHMubGVuZ3RoIC0gMTsgaSA8IGlpOyArK2kpIHsKICAgICAgICB2YXIgb2Zmc2V0U3RhcnQgPSBvZmZzZXRzW2ldOwogICAgICAgIHZhciBvZmZzZXRFbmQgPSBvZmZzZXRzW2kgKyAxXTsKICAgICAgICBjZmZJbmRleC5hZGQoYnl0ZXMuc3ViYXJyYXkob2Zmc2V0U3RhcnQsIG9mZnNldEVuZCkpOwogICAgICB9CiAgICAgIHJldHVybiB7b2JqOiBjZmZJbmRleCwgZW5kUG9zOiBlbmR9OwogICAgfSwKICAgIHBhcnNlTmFtZUluZGV4OiBmdW5jdGlvbiBDRkZQYXJzZXJfcGFyc2VOYW1lSW5kZXgoaW5kZXgpIHsKICAgICAgdmFyIG5hbWVzID0gW107CiAgICAgIGZvciAodmFyIGkgPSAwLCBpaSA9IGluZGV4LmNvdW50OyBpIDwgaWk7ICsraSkgewogICAgICAgIHZhciBuYW1lID0gaW5kZXguZ2V0KGkpOwogICAgICAgIC8vIE9UUyBkb2Vzbid0IGFsbG93IG5hbWVzIHRvIGJlIG92ZXIgMTI3IGNoYXJhY3RlcnMuCiAgICAgICAgdmFyIGxlbmd0aCA9IE1hdGgubWluKG5hbWUubGVuZ3RoLCAxMjcpOwogICAgICAgIHZhciBkYXRhID0gW107CiAgICAgICAgLy8gT1RTIGFsc28gb25seSBwZXJtaXRzIGNlcnRhaW4gY2hhcmFjdGVycyBpbiB0aGUgbmFtZS4KICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGxlbmd0aDsgKytqKSB7CiAgICAgICAgICB2YXIgYyA9IG5hbWVbal07CiAgICAgICAgICBpZiAoaiA9PT0gMCAmJiBjID09PSAwKSB7CiAgICAgICAgICAgIGRhdGFbal0gPSBjOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIH0KICAgICAgICAgIGlmICgoYyA8IDMzIHx8IGMgPiAxMjYpIHx8IGMgPT09IDkxIC8qIFsgKi8gfHwgYyA9PT0gOTMgLyogXSAqLyB8fAogICAgICAgICAgICAgIGMgPT09IDQwIC8qICggKi8gfHwgYyA9PT0gNDEgLyogKSAqLyB8fCBjID09PSAxMjMgLyogeyAqLyB8fAogICAgICAgICAgICAgIGMgPT09IDEyNSAvKiB9ICovIHx8IGMgPT09IDYwIC8qIDwgKi8gfHwgYyA9PT0gNjIgLyogPiAqLyB8fAogICAgICAgICAgICAgIGMgPT09IDQ3IC8qIC8gKi8gfHwgYyA9PT0gMzcgLyogJSAqLyB8fCBjID09PSAzNSAvKiAjICovKSB7CiAgICAgICAgICAgIGRhdGFbal0gPSA5NTsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICB9CiAgICAgICAgICBkYXRhW2pdID0gYzsKICAgICAgICB9CiAgICAgICAgbmFtZXMucHVzaChieXRlc1RvU3RyaW5nKGRhdGEpKTsKICAgICAgfQogICAgICByZXR1cm4gbmFtZXM7CiAgICB9LAogICAgcGFyc2VTdHJpbmdJbmRleDogZnVuY3Rpb24gQ0ZGUGFyc2VyX3BhcnNlU3RyaW5nSW5kZXgoaW5kZXgpIHsKICAgICAgdmFyIHN0cmluZ3MgPSBuZXcgQ0ZGU3RyaW5ncygpOwogICAgICBmb3IgKHZhciBpID0gMCwgaWkgPSBpbmRleC5jb3VudDsgaSA8IGlpOyArK2kpIHsKICAgICAgICB2YXIgZGF0YSA9IGluZGV4LmdldChpKTsKICAgICAgICBzdHJpbmdzLmFkZChieXRlc1RvU3RyaW5nKGRhdGEpKTsKICAgICAgfQogICAgICByZXR1cm4gc3RyaW5nczsKICAgIH0sCiAgICBjcmVhdGVEaWN0OiBmdW5jdGlvbiBDRkZQYXJzZXJfY3JlYXRlRGljdChUeXBlLCBkaWN0LCBzdHJpbmdzKSB7CiAgICAgIHZhciBjZmZEaWN0ID0gbmV3IFR5cGUoc3RyaW5ncyk7CiAgICAgIGZvciAodmFyIGkgPSAwLCBpaSA9IGRpY3QubGVuZ3RoOyBpIDwgaWk7ICsraSkgewogICAgICAgIHZhciBwYWlyID0gZGljdFtpXTsKICAgICAgICB2YXIga2V5ID0gcGFpclswXTsKICAgICAgICB2YXIgdmFsdWUgPSBwYWlyWzFdOwogICAgICAgIGNmZkRpY3Quc2V0QnlLZXkoa2V5LCB2YWx1ZSk7CiAgICAgIH0KICAgICAgcmV0dXJuIGNmZkRpY3Q7CiAgICB9LAogICAgcGFyc2VDaGFyU3RyaW5nczogZnVuY3Rpb24gQ0ZGUGFyc2VyX3BhcnNlQ2hhclN0cmluZ3MoY2hhclN0cmluZ09mZnNldCkgewogICAgICB2YXIgY2hhclN0cmluZ3MgPSB0aGlzLnBhcnNlSW5kZXgoY2hhclN0cmluZ09mZnNldCkub2JqOwogICAgICB2YXIgc2VhY3MgPSBbXTsKICAgICAgdmFyIHdpZHRocyA9IFtdOwogICAgICB2YXIgY291bnQgPSBjaGFyU3RyaW5ncy5jb3VudDsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CiAgICAgICAgdmFyIGNoYXJzdHJpbmcgPSBjaGFyU3RyaW5ncy5nZXQoaSk7CgogICAgICAgIHZhciBzdGFja1NpemUgPSAwOwogICAgICAgIHZhciBzdGFjayA9IFtdOwogICAgICAgIHZhciB1bmRlZlN0YWNrID0gdHJ1ZTsKICAgICAgICB2YXIgaGludHMgPSAwOwogICAgICAgIHZhciB2YWxpZCA9IHRydWU7CiAgICAgICAgdmFyIGRhdGEgPSBjaGFyc3RyaW5nOwogICAgICAgIHZhciBsZW5ndGggPSBkYXRhLmxlbmd0aDsKICAgICAgICB2YXIgZmlyc3RTdGFja0NsZWFyaW5nID0gdHJ1ZTsKICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGxlbmd0aDspIHsKICAgICAgICAgIHZhciB2YWx1ZSA9IGRhdGFbaisrXTsKICAgICAgICAgIHZhciB2YWxpZGF0aW9uQ29tbWFuZCA9IG51bGw7CiAgICAgICAgICBpZiAodmFsdWUgPT09IDEyKSB7CiAgICAgICAgICAgIHZhciBxID0gZGF0YVtqKytdOwogICAgICAgICAgICBpZiAocSA9PT0gMCkgewogICAgICAgICAgICAgIC8vIFRoZSBDRkYgc3BlY2lmaWNhdGlvbiBzdGF0ZSB0aGF0IHRoZSAnZG90c2VjdGlvbicgY29tbWFuZAogICAgICAgICAgICAgIC8vICgxMiwgMCkgaXMgZGVwcmVjYXRlZCBhbmQgdHJlYXRlZCBhcyBhIG5vLW9wLCBidXQgYWxsIFR5cGUyCiAgICAgICAgICAgICAgLy8gY2hhcnN0cmluZ3MgcHJvY2Vzc29ycyBzaG91bGQgc3VwcG9ydCB0aGVtLiBVbmZvcnR1bmF0ZWx5CiAgICAgICAgICAgICAgLy8gdGhlIGZvbnQgc2FuaXRpemVyIGRvbid0LiBBcyBhIHdvcmthcm91bmQgdGhlIHNlcXVlbmNlICgxMiwgMCkKICAgICAgICAgICAgICAvLyBpcyByZXBsYWNlZCBieSBhIHVzZWxlc3MgKDAsIGhtb3ZldG8pLgogICAgICAgICAgICAgIGRhdGFbaiAtIDJdID0gMTM5OwogICAgICAgICAgICAgIGRhdGFbaiAtIDFdID0gMjI7CiAgICAgICAgICAgICAgc3RhY2tTaXplID0gMDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICB2YWxpZGF0aW9uQ29tbWFuZCA9IENoYXJzdHJpbmdWYWxpZGF0aW9uRGF0YTEyW3FdOwogICAgICAgICAgICB9CiAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID09PSAyOCkgeyAvLyBudW1iZXIgKDE2IGJpdCkKICAgICAgICAgICAgc3RhY2tbc3RhY2tTaXplXSA9ICgoZGF0YVtqXSA8PCAyNCkgfCAoZGF0YVtqICsgMV0gPDwgMTYpKSA+PiAxNjsKICAgICAgICAgICAgaiArPSAyOwogICAgICAgICAgICBzdGFja1NpemUrKzsKICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUgPT09IDE0KSB7CiAgICAgICAgICAgIGlmIChzdGFja1NpemUgPj0gNCkgewogICAgICAgICAgICAgIHN0YWNrU2l6ZSAtPSA0OwogICAgICAgICAgICAgIGlmIChTRUFDX0FOQUxZU0lTX0VOQUJMRUQpIHsKICAgICAgICAgICAgICAgIHNlYWNzW2ldID0gc3RhY2suc2xpY2Uoc3RhY2tTaXplLCBzdGFja1NpemUgKyA0KTsKICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhbGlkYXRpb25Db21tYW5kID0gQ2hhcnN0cmluZ1ZhbGlkYXRpb25EYXRhW3ZhbHVlXTsKICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUgPj0gMzIgJiYgdmFsdWUgPD0gMjQ2KSB7ICAvLyBudW1iZXIKICAgICAgICAgICAgc3RhY2tbc3RhY2tTaXplXSA9IHZhbHVlIC0gMTM5OwogICAgICAgICAgICBzdGFja1NpemUrKzsKICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUgPj0gMjQ3ICYmIHZhbHVlIDw9IDI1NCkgeyAgLy8gbnVtYmVyICgrMSBieXRlcykKICAgICAgICAgICAgc3RhY2tbc3RhY2tTaXplXSA9ICh2YWx1ZSA8IDI1MSA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh2YWx1ZSAtIDI0NykgPDwgOCkgKyBkYXRhW2pdICsgMTA4IDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKCh2YWx1ZSAtIDI1MSkgPDwgOCkgLSBkYXRhW2pdIC0gMTA4KTsKICAgICAgICAgICAgaisrOwogICAgICAgICAgICBzdGFja1NpemUrKzsKICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUgPT09IDI1NSkgeyAgLy8gbnVtYmVyICgzMiBiaXQpCiAgICAgICAgICAgIHN0YWNrW3N0YWNrU2l6ZV0gPSAoKGRhdGFbal0gPDwgMjQpIHwgKGRhdGFbaiArIDFdIDw8IDE2KSB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGFbaiArIDJdIDw8IDgpIHwgZGF0YVtqICsgM10pIC8gNjU1MzY7CiAgICAgICAgICAgIGogKz0gNDsKICAgICAgICAgICAgc3RhY2tTaXplKys7CiAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID09PSAxOSB8fCB2YWx1ZSA9PT0gMjApIHsKICAgICAgICAgICAgaGludHMgKz0gc3RhY2tTaXplID4+IDE7CiAgICAgICAgICAgIGogKz0gKGhpbnRzICsgNykgPj4gMzsgLy8gc2tpcHBpbmcgcmlnaHQgYW1vdW50IG9mIGhpbnRzIGZsYWcgZGF0YQogICAgICAgICAgICBzdGFja1NpemUgJT0gMjsKICAgICAgICAgICAgdmFsaWRhdGlvbkNvbW1hbmQgPSBDaGFyc3RyaW5nVmFsaWRhdGlvbkRhdGFbdmFsdWVdOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdmFsaWRhdGlvbkNvbW1hbmQgPSBDaGFyc3RyaW5nVmFsaWRhdGlvbkRhdGFbdmFsdWVdOwogICAgICAgICAgfQogICAgICAgICAgaWYgKHZhbGlkYXRpb25Db21tYW5kKSB7CiAgICAgICAgICAgIGlmICh2YWxpZGF0aW9uQ29tbWFuZC5zdGVtKSB7CiAgICAgICAgICAgICAgaGludHMgKz0gc3RhY2tTaXplID4+IDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCdtaW4nIGluIHZhbGlkYXRpb25Db21tYW5kKSB7CiAgICAgICAgICAgICAgaWYgKCF1bmRlZlN0YWNrICYmIHN0YWNrU2l6ZSA8IHZhbGlkYXRpb25Db21tYW5kLm1pbikgewogICAgICAgICAgICAgICAgd2FybignTm90IGVub3VnaCBwYXJhbWV0ZXJzIGZvciAnICsgdmFsaWRhdGlvbkNvbW1hbmQuaWQgKwogICAgICAgICAgICAgICAgICAgICAnOyBhY3R1YWw6ICcgKyBzdGFja1NpemUgKwogICAgICAgICAgICAgICAgICAgICAnLCBleHBlY3RlZDogJyArIHZhbGlkYXRpb25Db21tYW5kLm1pbik7CiAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChmaXJzdFN0YWNrQ2xlYXJpbmcgJiYgdmFsaWRhdGlvbkNvbW1hbmQuc3RhY2tDbGVhcmluZykgewogICAgICAgICAgICAgIGZpcnN0U3RhY2tDbGVhcmluZyA9IGZhbHNlOwogICAgICAgICAgICAgIC8vIHRoZSBvcHRpb25hbCBjaGFyYWN0ZXIgd2lkdGggY2FuIGJlIGZvdW5kIGJlZm9yZSB0aGUgZmlyc3QKICAgICAgICAgICAgICAvLyBzdGFjay1jbGVhcmluZyBjb21tYW5kIGFyZ3VtZW50cwogICAgICAgICAgICAgIHN0YWNrU2l6ZSAtPSB2YWxpZGF0aW9uQ29tbWFuZC5taW47CiAgICAgICAgICAgICAgaWYgKHN0YWNrU2l6ZSA+PSAyICYmIHZhbGlkYXRpb25Db21tYW5kLnN0ZW0pIHsKICAgICAgICAgICAgICAgIC8vIHRoZXJlIGFyZSBldmVuIGFtb3VudCBvZiBhcmd1bWVudHMgZm9yIHN0ZW0gY29tbWFuZHMKICAgICAgICAgICAgICAgIHN0YWNrU2l6ZSAlPSAyOwogICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhY2tTaXplID4gMSkgewogICAgICAgICAgICAgICAgd2FybignRm91bmQgdG9vIG1hbnkgcGFyYW1ldGVycyBmb3Igc3RhY2stY2xlYXJpbmcgY29tbWFuZCcpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpZiAoc3RhY2tTaXplID4gMCAmJiBzdGFja1tzdGFja1NpemUgLSAxXSA+PSAwKSB7CiAgICAgICAgICAgICAgICB3aWR0aHNbaV0gPSBzdGFja1tzdGFja1NpemUgLSAxXTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCdzdGFja0RlbHRhJyBpbiB2YWxpZGF0aW9uQ29tbWFuZCkgewogICAgICAgICAgICAgIGlmICgnc3RhY2tGbicgaW4gdmFsaWRhdGlvbkNvbW1hbmQpIHsKICAgICAgICAgICAgICAgIHZhbGlkYXRpb25Db21tYW5kLnN0YWNrRm4oc3RhY2ssIHN0YWNrU2l6ZSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHN0YWNrU2l6ZSArPSB2YWxpZGF0aW9uQ29tbWFuZC5zdGFja0RlbHRhOwogICAgICAgICAgICB9IGVsc2UgaWYgKHZhbGlkYXRpb25Db21tYW5kLnN0YWNrQ2xlYXJpbmcpIHsKICAgICAgICAgICAgICBzdGFja1NpemUgPSAwOwogICAgICAgICAgICB9IGVsc2UgaWYgKHZhbGlkYXRpb25Db21tYW5kLnJlc2V0U3RhY2spIHsKICAgICAgICAgICAgICBzdGFja1NpemUgPSAwOwogICAgICAgICAgICAgIHVuZGVmU3RhY2sgPSBmYWxzZTsKICAgICAgICAgICAgfSBlbHNlIGlmICh2YWxpZGF0aW9uQ29tbWFuZC51bmRlZlN0YWNrKSB7CiAgICAgICAgICAgICAgc3RhY2tTaXplID0gMDsKICAgICAgICAgICAgICB1bmRlZlN0YWNrID0gdHJ1ZTsKICAgICAgICAgICAgICBmaXJzdFN0YWNrQ2xlYXJpbmcgPSBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoIXZhbGlkKSB7CiAgICAgICAgICAvLyByZXNldHRpbmcgaW52YWxpZCBjaGFyc3RyaW5nIHRvIHNpbmdsZSAnZW5kY2hhcicKICAgICAgICAgIGNoYXJTdHJpbmdzLnNldChpLCBuZXcgVWludDhBcnJheShbMTRdKSk7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiB7IGNoYXJTdHJpbmdzOiBjaGFyU3RyaW5ncywgc2VhY3M6IHNlYWNzLCB3aWR0aHM6IHdpZHRocyB9OwogICAgfSwKICAgIGVtcHR5UHJpdmF0ZURpY3Rpb25hcnk6CiAgICAgIGZ1bmN0aW9uIENGRlBhcnNlcl9lbXB0eVByaXZhdGVEaWN0aW9uYXJ5KHBhcmVudERpY3QpIHsKICAgICAgdmFyIHByaXZhdGVEaWN0ID0gdGhpcy5jcmVhdGVEaWN0KENGRlByaXZhdGVEaWN0LCBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudERpY3Quc3RyaW5ncyk7CiAgICAgIHBhcmVudERpY3Quc2V0QnlLZXkoMTgsIFswLCAwXSk7CiAgICAgIHBhcmVudERpY3QucHJpdmF0ZURpY3QgPSBwcml2YXRlRGljdDsKICAgIH0sCiAgICBwYXJzZVByaXZhdGVEaWN0OiBmdW5jdGlvbiBDRkZQYXJzZXJfcGFyc2VQcml2YXRlRGljdChwYXJlbnREaWN0KSB7CiAgICAgIC8vIG5vIHByaXZhdGUgZGljdCwgZG8gbm90aGluZwogICAgICBpZiAoIXBhcmVudERpY3QuaGFzTmFtZSgnUHJpdmF0ZScpKSB7CiAgICAgICAgdGhpcy5lbXB0eVByaXZhdGVEaWN0aW9uYXJ5KHBhcmVudERpY3QpOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICB2YXIgcHJpdmF0ZU9mZnNldCA9IHBhcmVudERpY3QuZ2V0QnlOYW1lKCdQcml2YXRlJyk7CiAgICAgIC8vIG1ha2Ugc3VyZSB0aGUgcGFyYW1zIGFyZSBmb3JtYXR0ZWQgY29ycmVjdGx5CiAgICAgIGlmICghaXNBcnJheShwcml2YXRlT2Zmc2V0KSB8fCBwcml2YXRlT2Zmc2V0Lmxlbmd0aCAhPT0gMikgewogICAgICAgIHBhcmVudERpY3QucmVtb3ZlQnlOYW1lKCdQcml2YXRlJyk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIHZhciBzaXplID0gcHJpdmF0ZU9mZnNldFswXTsKICAgICAgdmFyIG9mZnNldCA9IHByaXZhdGVPZmZzZXRbMV07CiAgICAgIC8vIHJlbW92ZSBlbXB0eSBkaWN0cyBvciBvbmVzIHRoYXQgcmVmZXIgdG8gaW52YWxpZCBsb2NhdGlvbgogICAgICBpZiAoc2l6ZSA9PT0gMCB8fCBvZmZzZXQgPj0gdGhpcy5ieXRlcy5sZW5ndGgpIHsKICAgICAgICB0aGlzLmVtcHR5UHJpdmF0ZURpY3Rpb25hcnkocGFyZW50RGljdCk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICB2YXIgcHJpdmF0ZURpY3RFbmQgPSBvZmZzZXQgKyBzaXplOwogICAgICB2YXIgZGljdERhdGEgPSB0aGlzLmJ5dGVzLnN1YmFycmF5KG9mZnNldCwgcHJpdmF0ZURpY3RFbmQpOwogICAgICB2YXIgZGljdCA9IHRoaXMucGFyc2VEaWN0KGRpY3REYXRhKTsKICAgICAgdmFyIHByaXZhdGVEaWN0ID0gdGhpcy5jcmVhdGVEaWN0KENGRlByaXZhdGVEaWN0LCBkaWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50RGljdC5zdHJpbmdzKTsKICAgICAgcGFyZW50RGljdC5wcml2YXRlRGljdCA9IHByaXZhdGVEaWN0OwoKICAgICAgLy8gUGFyc2UgdGhlIFN1YnJzIGluZGV4IGFsc28gc2luY2UgaXQncyByZWxhdGl2ZSB0byB0aGUgcHJpdmF0ZSBkaWN0LgogICAgICBpZiAoIXByaXZhdGVEaWN0LmdldEJ5TmFtZSgnU3VicnMnKSkgewogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICB2YXIgc3VicnNPZmZzZXQgPSBwcml2YXRlRGljdC5nZXRCeU5hbWUoJ1N1YnJzJyk7CiAgICAgIHZhciByZWxhdGl2ZU9mZnNldCA9IG9mZnNldCArIHN1YnJzT2Zmc2V0OwogICAgICAvLyBWYWxpZGF0ZSB0aGUgb2Zmc2V0LgogICAgICBpZiAoc3VicnNPZmZzZXQgPT09IDAgfHwgcmVsYXRpdmVPZmZzZXQgPj0gdGhpcy5ieXRlcy5sZW5ndGgpIHsKICAgICAgICB0aGlzLmVtcHR5UHJpdmF0ZURpY3Rpb25hcnkocGFyZW50RGljdCk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIHZhciBzdWJyc0luZGV4ID0gdGhpcy5wYXJzZUluZGV4KHJlbGF0aXZlT2Zmc2V0KTsKICAgICAgcHJpdmF0ZURpY3Quc3VicnNJbmRleCA9IHN1YnJzSW5kZXgub2JqOwogICAgfSwKICAgIHBhcnNlQ2hhcnNldHM6IGZ1bmN0aW9uIENGRlBhcnNlcl9wYXJzZUNoYXJzZXRzKHBvcywgbGVuZ3RoLCBzdHJpbmdzLCBjaWQpIHsKICAgICAgaWYgKHBvcyA9PT0gMCkgewogICAgICAgIHJldHVybiBuZXcgQ0ZGQ2hhcnNldCh0cnVlLCBDRkZDaGFyc2V0UHJlZGVmaW5lZFR5cGVzLklTT19BRE9CRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVNPQWRvYmVDaGFyc2V0KTsKICAgICAgfSBlbHNlIGlmIChwb3MgPT09IDEpIHsKICAgICAgICByZXR1cm4gbmV3IENGRkNoYXJzZXQodHJ1ZSwgQ0ZGQ2hhcnNldFByZWRlZmluZWRUeXBlcy5FWFBFUlQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4cGVydENoYXJzZXQpOwogICAgICB9IGVsc2UgaWYgKHBvcyA9PT0gMikgewogICAgICAgIHJldHVybiBuZXcgQ0ZGQ2hhcnNldCh0cnVlLCBDRkZDaGFyc2V0UHJlZGVmaW5lZFR5cGVzLkVYUEVSVF9TVUJTRVQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4cGVydFN1YnNldENoYXJzZXQpOwogICAgICB9CgogICAgICB2YXIgYnl0ZXMgPSB0aGlzLmJ5dGVzOwogICAgICB2YXIgc3RhcnQgPSBwb3M7CiAgICAgIHZhciBmb3JtYXQgPSBieXRlc1twb3MrK107CiAgICAgIHZhciBjaGFyc2V0ID0gWycubm90ZGVmJ107CiAgICAgIHZhciBpZCwgY291bnQsIGk7CgogICAgICAvLyBzdWJ0cmFjdCAxIGZvciB0aGUgLm5vdGRlZiBnbHlwaAogICAgICBsZW5ndGggLT0gMTsKCiAgICAgIHN3aXRjaCAoZm9ybWF0KSB7CiAgICAgICAgY2FzZSAwOgogICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGlkID0gKGJ5dGVzW3BvcysrXSA8PCA4KSB8IGJ5dGVzW3BvcysrXTsKICAgICAgICAgICAgY2hhcnNldC5wdXNoKGNpZCA/IGlkIDogc3RyaW5ncy5nZXQoaWQpKTsKICAgICAgICAgIH0KICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgMToKICAgICAgICAgIHdoaWxlIChjaGFyc2V0Lmxlbmd0aCA8PSBsZW5ndGgpIHsKICAgICAgICAgICAgaWQgPSAoYnl0ZXNbcG9zKytdIDw8IDgpIHwgYnl0ZXNbcG9zKytdOwogICAgICAgICAgICBjb3VudCA9IGJ5dGVzW3BvcysrXTsKICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8PSBjb3VudDsgaSsrKSB7CiAgICAgICAgICAgICAgY2hhcnNldC5wdXNoKGNpZCA/IGlkKysgOiBzdHJpbmdzLmdldChpZCsrKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgMjoKICAgICAgICAgIHdoaWxlIChjaGFyc2V0Lmxlbmd0aCA8PSBsZW5ndGgpIHsKICAgICAgICAgICAgaWQgPSAoYnl0ZXNbcG9zKytdIDw8IDgpIHwgYnl0ZXNbcG9zKytdOwogICAgICAgICAgICBjb3VudCA9IChieXRlc1twb3MrK10gPDwgOCkgfCBieXRlc1twb3MrK107CiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPD0gY291bnQ7IGkrKykgewogICAgICAgICAgICAgIGNoYXJzZXQucHVzaChjaWQgPyBpZCsrIDogc3RyaW5ncy5nZXQoaWQrKykpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBicmVhazsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgZXJyb3IoJ1Vua25vd24gY2hhcnNldCBmb3JtYXQnKTsKICAgICAgfQogICAgICAvLyBSYXcgd29uJ3QgYmUgbmVlZGVkIGlmIHdlIGFjdHVhbGx5IGNvbXBpbGUgdGhlIGNoYXJzZXQuCiAgICAgIHZhciBlbmQgPSBwb3M7CiAgICAgIHZhciByYXcgPSBieXRlcy5zdWJhcnJheShzdGFydCwgZW5kKTsKCiAgICAgIHJldHVybiBuZXcgQ0ZGQ2hhcnNldChmYWxzZSwgZm9ybWF0LCBjaGFyc2V0LCByYXcpOwogICAgfSwKICAgIHBhcnNlRW5jb2Rpbmc6IGZ1bmN0aW9uIENGRlBhcnNlcl9wYXJzZUVuY29kaW5nKHBvcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnNldCkgewogICAgICB2YXIgZW5jb2RpbmcgPSB7fTsKICAgICAgdmFyIGJ5dGVzID0gdGhpcy5ieXRlczsKICAgICAgdmFyIHByZWRlZmluZWQgPSBmYWxzZTsKICAgICAgdmFyIGhhc1N1cHBsZW1lbnQgPSBmYWxzZTsKICAgICAgdmFyIGZvcm1hdCwgaSwgaWk7CiAgICAgIHZhciByYXcgPSBudWxsOwoKICAgICAgZnVuY3Rpb24gcmVhZFN1cHBsZW1lbnQoKSB7CiAgICAgICAgdmFyIHN1cHBsZW1lbnRzQ291bnQgPSBieXRlc1twb3MrK107CiAgICAgICAgZm9yIChpID0gMDsgaSA8IHN1cHBsZW1lbnRzQ291bnQ7IGkrKykgewogICAgICAgICAgdmFyIGNvZGUgPSBieXRlc1twb3MrK107CiAgICAgICAgICB2YXIgc2lkID0gKGJ5dGVzW3BvcysrXSA8PCA4KSArIChieXRlc1twb3MrK10gJiAweGZmKTsKICAgICAgICAgIGVuY29kaW5nW2NvZGVdID0gY2hhcnNldC5pbmRleE9mKHN0cmluZ3MuZ2V0KHNpZCkpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgaWYgKHBvcyA9PT0gMCB8fCBwb3MgPT09IDEpIHsKICAgICAgICBwcmVkZWZpbmVkID0gdHJ1ZTsKICAgICAgICBmb3JtYXQgPSBwb3M7CiAgICAgICAgdmFyIGJhc2VFbmNvZGluZyA9IHBvcyA/IEVuY29kaW5ncy5FeHBlcnRFbmNvZGluZyA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuY29kaW5ncy5TdGFuZGFyZEVuY29kaW5nOwogICAgICAgIGZvciAoaSA9IDAsIGlpID0gY2hhcnNldC5sZW5ndGg7IGkgPCBpaTsgaSsrKSB7CiAgICAgICAgICB2YXIgaW5kZXggPSBiYXNlRW5jb2RpbmcuaW5kZXhPZihjaGFyc2V0W2ldKTsKICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHsKICAgICAgICAgICAgZW5jb2RpbmdbaW5kZXhdID0gaTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdmFyIGRhdGFTdGFydCA9IHBvczsKICAgICAgICBmb3JtYXQgPSBieXRlc1twb3MrK107CiAgICAgICAgc3dpdGNoIChmb3JtYXQgJiAweDdmKSB7CiAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgIHZhciBnbHlwaHNDb3VudCA9IGJ5dGVzW3BvcysrXTsKICAgICAgICAgICAgZm9yIChpID0gMTsgaSA8PSBnbHlwaHNDb3VudDsgaSsrKSB7CiAgICAgICAgICAgICAgZW5jb2RpbmdbYnl0ZXNbcG9zKytdXSA9IGk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICB2YXIgcmFuZ2VzQ291bnQgPSBieXRlc1twb3MrK107CiAgICAgICAgICAgIHZhciBnaWQgPSAxOwogICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcmFuZ2VzQ291bnQ7IGkrKykgewogICAgICAgICAgICAgIHZhciBzdGFydCA9IGJ5dGVzW3BvcysrXTsKICAgICAgICAgICAgICB2YXIgbGVmdCA9IGJ5dGVzW3BvcysrXTsKICAgICAgICAgICAgICBmb3IgKHZhciBqID0gc3RhcnQ7IGogPD0gc3RhcnQgKyBsZWZ0OyBqKyspIHsKICAgICAgICAgICAgICAgIGVuY29kaW5nW2pdID0gZ2lkKys7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIGVycm9yKCdVbmtub3cgZW5jb2RpbmcgZm9ybWF0OiAnICsgZm9ybWF0ICsgJyBpbiBDRkYnKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIHZhciBkYXRhRW5kID0gcG9zOwogICAgICAgIGlmIChmb3JtYXQgJiAweDgwKSB7CiAgICAgICAgICAvLyBUaGUgZm9udCBzYW5pdGl6ZXIgZG9lcyBub3Qgc3VwcG9ydCBDRkYgZW5jb2Rpbmcgd2l0aCBhCiAgICAgICAgICAvLyBzdXBwbGVtZW50LCBzaW5jZSB0aGUgZW5jb2RpbmcgaXMgbm90IHJlYWxseSB1c2VkIHRvIG1hcAogICAgICAgICAgLy8gYmV0d2VlbiBnaWQgdG8gZ2x5cGgsIGxldCdzIG92ZXJ3cml0ZSB3aGF0IGlzIGRlY2xhcmVkIGluCiAgICAgICAgICAvLyB0aGUgdG9wIGRpY3Rpb25hcnkgdG8gbGV0IHRoZSBzYW5pdGl6ZXIgdGhpbmsgdGhlIGZvbnQgdXNlCiAgICAgICAgICAvLyBTdGFuZGFyZEVuY29kaW5nLCB0aGF0J3MgYSBsaWUgYnV0IHRoYXQncyBvay4KICAgICAgICAgIGJ5dGVzW2RhdGFTdGFydF0gJj0gMHg3ZjsKICAgICAgICAgIHJlYWRTdXBwbGVtZW50KCk7CiAgICAgICAgICBoYXNTdXBwbGVtZW50ID0gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgcmF3ID0gYnl0ZXMuc3ViYXJyYXkoZGF0YVN0YXJ0LCBkYXRhRW5kKTsKICAgICAgfQogICAgICBmb3JtYXQgPSBmb3JtYXQgJiAweDdmOwogICAgICByZXR1cm4gbmV3IENGRkVuY29kaW5nKHByZWRlZmluZWQsIGZvcm1hdCwgZW5jb2RpbmcsIHJhdyk7CiAgICB9LAogICAgcGFyc2VGRFNlbGVjdDogZnVuY3Rpb24gQ0ZGUGFyc2VyX3BhcnNlRkRTZWxlY3QocG9zLCBsZW5ndGgpIHsKICAgICAgdmFyIHN0YXJ0ID0gcG9zOwogICAgICB2YXIgYnl0ZXMgPSB0aGlzLmJ5dGVzOwogICAgICB2YXIgZm9ybWF0ID0gYnl0ZXNbcG9zKytdOwogICAgICB2YXIgZmRTZWxlY3QgPSBbXTsKICAgICAgdmFyIGk7CgogICAgICBzd2l0Y2ggKGZvcm1hdCkgewogICAgICAgIGNhc2UgMDoKICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICAgICB2YXIgaWQgPSBieXRlc1twb3MrK107CiAgICAgICAgICAgIGZkU2VsZWN0LnB1c2goaWQpOwogICAgICAgICAgfQogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAzOgogICAgICAgICAgdmFyIHJhbmdlc0NvdW50ID0gKGJ5dGVzW3BvcysrXSA8PCA4KSB8IGJ5dGVzW3BvcysrXTsKICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCByYW5nZXNDb3VudDsgKytpKSB7CiAgICAgICAgICAgIHZhciBmaXJzdCA9IChieXRlc1twb3MrK10gPDwgOCkgfCBieXRlc1twb3MrK107CiAgICAgICAgICAgIHZhciBmZEluZGV4ID0gYnl0ZXNbcG9zKytdOwogICAgICAgICAgICB2YXIgbmV4dCA9IChieXRlc1twb3NdIDw8IDgpIHwgYnl0ZXNbcG9zICsgMV07CiAgICAgICAgICAgIGZvciAodmFyIGogPSBmaXJzdDsgaiA8IG5leHQ7ICsraikgewogICAgICAgICAgICAgIGZkU2VsZWN0LnB1c2goZmRJbmRleCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIC8vIEFkdmFuY2UgcGFzdCB0aGUgc2VudGluZWwobmV4dCkuCiAgICAgICAgICBwb3MgKz0gMjsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICBlcnJvcignVW5rbm93biBmZHNlbGVjdCBmb3JtYXQgJyArIGZvcm1hdCk7CiAgICAgICAgICBicmVhazsKICAgICAgfQogICAgICB2YXIgZW5kID0gcG9zOwogICAgICByZXR1cm4gbmV3IENGRkZEU2VsZWN0KGZkU2VsZWN0LCBieXRlcy5zdWJhcnJheShzdGFydCwgZW5kKSk7CiAgICB9CiAgfTsKICByZXR1cm4gQ0ZGUGFyc2VyOwp9KSgpOwoKLy8gQ29tcGFjdCBGb250IEZvcm1hdAp2YXIgQ0ZGID0gKGZ1bmN0aW9uIENGRkNsb3N1cmUoKSB7CiAgZnVuY3Rpb24gQ0ZGKCkgewogICAgdGhpcy5oZWFkZXIgPSBudWxsOwogICAgdGhpcy5uYW1lcyA9IFtdOwogICAgdGhpcy50b3BEaWN0ID0gbnVsbDsKICAgIHRoaXMuc3RyaW5ncyA9IG5ldyBDRkZTdHJpbmdzKCk7CiAgICB0aGlzLmdsb2JhbFN1YnJJbmRleCA9IG51bGw7CgogICAgLy8gVGhlIGZvbGxvd2luZyBjb3VsZCByZWFsbHkgYmUgcGVyIGZvbnQsIGJ1dCBzaW5jZSB3ZSBvbmx5IGhhdmUgb25lIGZvbnQKICAgIC8vIHN0b3JlIHRoZW0gaGVyZS4KICAgIHRoaXMuZW5jb2RpbmcgPSBudWxsOwogICAgdGhpcy5jaGFyc2V0ID0gbnVsbDsKICAgIHRoaXMuY2hhclN0cmluZ3MgPSBudWxsOwogICAgdGhpcy5mZEFycmF5ID0gW107CiAgICB0aGlzLmZkU2VsZWN0ID0gbnVsbDsKCiAgICB0aGlzLmlzQ0lERm9udCA9IGZhbHNlOwogIH0KICByZXR1cm4gQ0ZGOwp9KSgpOwoKdmFyIENGRkhlYWRlciA9IChmdW5jdGlvbiBDRkZIZWFkZXJDbG9zdXJlKCkgewogIGZ1bmN0aW9uIENGRkhlYWRlcihtYWpvciwgbWlub3IsIGhkclNpemUsIG9mZlNpemUpIHsKICAgIHRoaXMubWFqb3IgPSBtYWpvcjsKICAgIHRoaXMubWlub3IgPSBtaW5vcjsKICAgIHRoaXMuaGRyU2l6ZSA9IGhkclNpemU7CiAgICB0aGlzLm9mZlNpemUgPSBvZmZTaXplOwogIH0KICByZXR1cm4gQ0ZGSGVhZGVyOwp9KSgpOwoKdmFyIENGRlN0cmluZ3MgPSAoZnVuY3Rpb24gQ0ZGU3RyaW5nc0Nsb3N1cmUoKSB7CiAgZnVuY3Rpb24gQ0ZGU3RyaW5ncygpIHsKICAgIHRoaXMuc3RyaW5ncyA9IFtdOwogIH0KICBDRkZTdHJpbmdzLnByb3RvdHlwZSA9IHsKICAgIGdldDogZnVuY3Rpb24gQ0ZGU3RyaW5nc19nZXQoaW5kZXgpIHsKICAgICAgaWYgKGluZGV4ID49IDAgJiYgaW5kZXggPD0gMzkwKSB7CiAgICAgICAgcmV0dXJuIENGRlN0YW5kYXJkU3RyaW5nc1tpbmRleF07CiAgICAgIH0KICAgICAgaWYgKGluZGV4IC0gMzkxIDw9IHRoaXMuc3RyaW5ncy5sZW5ndGgpIHsKICAgICAgICByZXR1cm4gdGhpcy5zdHJpbmdzW2luZGV4IC0gMzkxXTsKICAgICAgfQogICAgICByZXR1cm4gQ0ZGU3RhbmRhcmRTdHJpbmdzWzBdOwogICAgfSwKICAgIGFkZDogZnVuY3Rpb24gQ0ZGU3RyaW5nc19hZGQodmFsdWUpIHsKICAgICAgdGhpcy5zdHJpbmdzLnB1c2godmFsdWUpOwogICAgfSwKICAgIGdldCBjb3VudCgpIHsKICAgICAgcmV0dXJuIHRoaXMuc3RyaW5ncy5sZW5ndGg7CiAgICB9CiAgfTsKICByZXR1cm4gQ0ZGU3RyaW5nczsKfSkoKTsKCnZhciBDRkZJbmRleCA9IChmdW5jdGlvbiBDRkZJbmRleENsb3N1cmUoKSB7CiAgZnVuY3Rpb24gQ0ZGSW5kZXgoKSB7CiAgICB0aGlzLm9iamVjdHMgPSBbXTsKICAgIHRoaXMubGVuZ3RoID0gMDsKICB9CiAgQ0ZGSW5kZXgucHJvdG90eXBlID0gewogICAgYWRkOiBmdW5jdGlvbiBDRkZJbmRleF9hZGQoZGF0YSkgewogICAgICB0aGlzLmxlbmd0aCArPSBkYXRhLmxlbmd0aDsKICAgICAgdGhpcy5vYmplY3RzLnB1c2goZGF0YSk7CiAgICB9LAogICAgc2V0OiBmdW5jdGlvbiBDRkZJbmRleF9zZXQoaW5kZXgsIGRhdGEpIHsKICAgICAgdGhpcy5sZW5ndGggKz0gZGF0YS5sZW5ndGggLSB0aGlzLm9iamVjdHNbaW5kZXhdLmxlbmd0aDsKICAgICAgdGhpcy5vYmplY3RzW2luZGV4XSA9IGRhdGE7CiAgICB9LAogICAgZ2V0OiBmdW5jdGlvbiBDRkZJbmRleF9nZXQoaW5kZXgpIHsKICAgICAgcmV0dXJuIHRoaXMub2JqZWN0c1tpbmRleF07CiAgICB9LAogICAgZ2V0IGNvdW50KCkgewogICAgICByZXR1cm4gdGhpcy5vYmplY3RzLmxlbmd0aDsKICAgIH0KICB9OwogIHJldHVybiBDRkZJbmRleDsKfSkoKTsKCnZhciBDRkZEaWN0ID0gKGZ1bmN0aW9uIENGRkRpY3RDbG9zdXJlKCkgewogIGZ1bmN0aW9uIENGRkRpY3QodGFibGVzLCBzdHJpbmdzKSB7CiAgICB0aGlzLmtleVRvTmFtZU1hcCA9IHRhYmxlcy5rZXlUb05hbWVNYXA7CiAgICB0aGlzLm5hbWVUb0tleU1hcCA9IHRhYmxlcy5uYW1lVG9LZXlNYXA7CiAgICB0aGlzLmRlZmF1bHRzID0gdGFibGVzLmRlZmF1bHRzOwogICAgdGhpcy50eXBlcyA9IHRhYmxlcy50eXBlczsKICAgIHRoaXMub3Bjb2RlcyA9IHRhYmxlcy5vcGNvZGVzOwogICAgdGhpcy5vcmRlciA9IHRhYmxlcy5vcmRlcjsKICAgIHRoaXMuc3RyaW5ncyA9IHN0cmluZ3M7CiAgICB0aGlzLnZhbHVlcyA9IHt9OwogIH0KICBDRkZEaWN0LnByb3RvdHlwZSA9IHsKICAgIC8vIHZhbHVlIHNob3VsZCBhbHdheXMgYmUgYW4gYXJyYXkKICAgIHNldEJ5S2V5OiBmdW5jdGlvbiBDRkZEaWN0X3NldEJ5S2V5KGtleSwgdmFsdWUpIHsKICAgICAgaWYgKCEoa2V5IGluIHRoaXMua2V5VG9OYW1lTWFwKSkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgICAvLyBpZ25vcmUgZW1wdHkgdmFsdWVzCiAgICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDApIHsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgfQogICAgICB2YXIgdHlwZSA9IHRoaXMudHlwZXNba2V5XTsKICAgICAgLy8gcmVtb3ZlIHRoZSBhcnJheSB3cmFwcGluZyB0aGVzZSB0eXBlcyBvZiB2YWx1ZXMKICAgICAgaWYgKHR5cGUgPT09ICdudW0nIHx8IHR5cGUgPT09ICdzaWQnIHx8IHR5cGUgPT09ICdvZmZzZXQnKSB7CiAgICAgICAgdmFsdWUgPSB2YWx1ZVswXTsKICAgICAgfQogICAgICB0aGlzLnZhbHVlc1trZXldID0gdmFsdWU7CiAgICAgIHJldHVybiB0cnVlOwogICAgfSwKICAgIHNldEJ5TmFtZTogZnVuY3Rpb24gQ0ZGRGljdF9zZXRCeU5hbWUobmFtZSwgdmFsdWUpIHsKICAgICAgaWYgKCEobmFtZSBpbiB0aGlzLm5hbWVUb0tleU1hcCkpIHsKICAgICAgICBlcnJvcignSW52YWxpZCBkaWN0aW9uYXJ5IG5hbWUgIicgKyBuYW1lICsgJyInKTsKICAgICAgfQogICAgICB0aGlzLnZhbHVlc1t0aGlzLm5hbWVUb0tleU1hcFtuYW1lXV0gPSB2YWx1ZTsKICAgIH0sCiAgICBoYXNOYW1lOiBmdW5jdGlvbiBDRkZEaWN0X2hhc05hbWUobmFtZSkgewogICAgICByZXR1cm4gdGhpcy5uYW1lVG9LZXlNYXBbbmFtZV0gaW4gdGhpcy52YWx1ZXM7CiAgICB9LAogICAgZ2V0QnlOYW1lOiBmdW5jdGlvbiBDRkZEaWN0X2dldEJ5TmFtZShuYW1lKSB7CiAgICAgIGlmICghKG5hbWUgaW4gdGhpcy5uYW1lVG9LZXlNYXApKSB7CiAgICAgICAgZXJyb3IoJ0ludmFsaWQgZGljdGlvbmFyeSBuYW1lICInICsgbmFtZSArICciJyk7CiAgICAgIH0KICAgICAgdmFyIGtleSA9IHRoaXMubmFtZVRvS2V5TWFwW25hbWVdOwogICAgICBpZiAoIShrZXkgaW4gdGhpcy52YWx1ZXMpKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdHNba2V5XTsKICAgICAgfQogICAgICByZXR1cm4gdGhpcy52YWx1ZXNba2V5XTsKICAgIH0sCiAgICByZW1vdmVCeU5hbWU6IGZ1bmN0aW9uIENGRkRpY3RfcmVtb3ZlQnlOYW1lKG5hbWUpIHsKICAgICAgZGVsZXRlIHRoaXMudmFsdWVzW3RoaXMubmFtZVRvS2V5TWFwW25hbWVdXTsKICAgIH0KICB9OwogIENGRkRpY3QuY3JlYXRlVGFibGVzID0gZnVuY3Rpb24gQ0ZGRGljdF9jcmVhdGVUYWJsZXMobGF5b3V0KSB7CiAgICB2YXIgdGFibGVzID0gewogICAgICBrZXlUb05hbWVNYXA6IHt9LAogICAgICBuYW1lVG9LZXlNYXA6IHt9LAogICAgICBkZWZhdWx0czoge30sCiAgICAgIHR5cGVzOiB7fSwKICAgICAgb3Bjb2Rlczoge30sCiAgICAgIG9yZGVyOiBbXQogICAgfTsKICAgIGZvciAodmFyIGkgPSAwLCBpaSA9IGxheW91dC5sZW5ndGg7IGkgPCBpaTsgKytpKSB7CiAgICAgIHZhciBlbnRyeSA9IGxheW91dFtpXTsKICAgICAgdmFyIGtleSA9IGlzQXJyYXkoZW50cnlbMF0pID8gKGVudHJ5WzBdWzBdIDw8IDgpICsgZW50cnlbMF1bMV0gOiBlbnRyeVswXTsKICAgICAgdGFibGVzLmtleVRvTmFtZU1hcFtrZXldID0gZW50cnlbMV07CiAgICAgIHRhYmxlcy5uYW1lVG9LZXlNYXBbZW50cnlbMV1dID0ga2V5OwogICAgICB0YWJsZXMudHlwZXNba2V5XSA9IGVudHJ5WzJdOwogICAgICB0YWJsZXMuZGVmYXVsdHNba2V5XSA9IGVudHJ5WzNdOwogICAgICB0YWJsZXMub3Bjb2Rlc1trZXldID0gaXNBcnJheShlbnRyeVswXSkgPyBlbnRyeVswXSA6IFtlbnRyeVswXV07CiAgICAgIHRhYmxlcy5vcmRlci5wdXNoKGtleSk7CiAgICB9CiAgICByZXR1cm4gdGFibGVzOwogIH07CiAgcmV0dXJuIENGRkRpY3Q7Cn0pKCk7Cgp2YXIgQ0ZGVG9wRGljdCA9IChmdW5jdGlvbiBDRkZUb3BEaWN0Q2xvc3VyZSgpIHsKICB2YXIgbGF5b3V0ID0gWwogICAgW1sxMiwgMzBdLCAnUk9TJywgWydzaWQnLCAnc2lkJywgJ251bSddLCBudWxsXSwKICAgIFtbMTIsIDIwXSwgJ1N5bnRoZXRpY0Jhc2UnLCAnbnVtJywgbnVsbF0sCiAgICBbMCwgJ3ZlcnNpb24nLCAnc2lkJywgbnVsbF0sCiAgICBbMSwgJ05vdGljZScsICdzaWQnLCBudWxsXSwKICAgIFtbMTIsIDBdLCAnQ29weXJpZ2h0JywgJ3NpZCcsIG51bGxdLAogICAgWzIsICdGdWxsTmFtZScsICdzaWQnLCBudWxsXSwKICAgIFszLCAnRmFtaWx5TmFtZScsICdzaWQnLCBudWxsXSwKICAgIFs0LCAnV2VpZ2h0JywgJ3NpZCcsIG51bGxdLAogICAgW1sxMiwgMV0sICdpc0ZpeGVkUGl0Y2gnLCAnbnVtJywgMF0sCiAgICBbWzEyLCAyXSwgJ0l0YWxpY0FuZ2xlJywgJ251bScsIDBdLAogICAgW1sxMiwgM10sICdVbmRlcmxpbmVQb3NpdGlvbicsICdudW0nLCAtMTAwXSwKICAgIFtbMTIsIDRdLCAnVW5kZXJsaW5lVGhpY2tuZXNzJywgJ251bScsIDUwXSwKICAgIFtbMTIsIDVdLCAnUGFpbnRUeXBlJywgJ251bScsIDBdLAogICAgW1sxMiwgNl0sICdDaGFyc3RyaW5nVHlwZScsICdudW0nLCAyXSwKICAgIFtbMTIsIDddLCAnRm9udE1hdHJpeCcsIFsnbnVtJywgJ251bScsICdudW0nLCAnbnVtJywgJ251bScsICdudW0nXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFswLjAwMSwgMCwgMCwgMC4wMDEsIDAsIDBdXSwKICAgIFsxMywgJ1VuaXF1ZUlEJywgJ251bScsIG51bGxdLAogICAgWzUsICdGb250QkJveCcsIFsnbnVtJywgJ251bScsICdudW0nLCAnbnVtJ10sIFswLCAwLCAwLCAwXV0sCiAgICBbWzEyLCA4XSwgJ1N0cm9rZVdpZHRoJywgJ251bScsIDBdLAogICAgWzE0LCAnWFVJRCcsICdhcnJheScsIG51bGxdLAogICAgWzE1LCAnY2hhcnNldCcsICdvZmZzZXQnLCAwXSwKICAgIFsxNiwgJ0VuY29kaW5nJywgJ29mZnNldCcsIDBdLAogICAgWzE3LCAnQ2hhclN0cmluZ3MnLCAnb2Zmc2V0JywgMF0sCiAgICBbMTgsICdQcml2YXRlJywgWydvZmZzZXQnLCAnb2Zmc2V0J10sIG51bGxdLAogICAgW1sxMiwgMjFdLCAnUG9zdFNjcmlwdCcsICdzaWQnLCBudWxsXSwKICAgIFtbMTIsIDIyXSwgJ0Jhc2VGb250TmFtZScsICdzaWQnLCBudWxsXSwKICAgIFtbMTIsIDIzXSwgJ0Jhc2VGb250QmxlbmQnLCAnZGVsdGEnLCBudWxsXSwKICAgIFtbMTIsIDMxXSwgJ0NJREZvbnRWZXJzaW9uJywgJ251bScsIDBdLAogICAgW1sxMiwgMzJdLCAnQ0lERm9udFJldmlzaW9uJywgJ251bScsIDBdLAogICAgW1sxMiwgMzNdLCAnQ0lERm9udFR5cGUnLCAnbnVtJywgMF0sCiAgICBbWzEyLCAzNF0sICdDSURDb3VudCcsICdudW0nLCA4NzIwXSwKICAgIFtbMTIsIDM1XSwgJ1VJREJhc2UnLCAnbnVtJywgbnVsbF0sCiAgICAvLyBYWFg6IENJRCBGb250cyBvbiBEaXJlY3RXcml0ZSA2LjEgb25seSBzZWVtIHRvIHdvcmsgaWYgRkRTZWxlY3QgY29tZXMKICAgIC8vIGJlZm9yZSBGREFycmF5LgogICAgW1sxMiwgMzddLCAnRkRTZWxlY3QnLCAnb2Zmc2V0JywgbnVsbF0sCiAgICBbWzEyLCAzNl0sICdGREFycmF5JywgJ29mZnNldCcsIG51bGxdLAogICAgW1sxMiwgMzhdLCAnRm9udE5hbWUnLCAnc2lkJywgbnVsbF0KICBdOwogIHZhciB0YWJsZXMgPSBudWxsOwogIGZ1bmN0aW9uIENGRlRvcERpY3Qoc3RyaW5ncykgewogICAgaWYgKHRhYmxlcyA9PT0gbnVsbCkgewogICAgICB0YWJsZXMgPSBDRkZEaWN0LmNyZWF0ZVRhYmxlcyhsYXlvdXQpOwogICAgfQogICAgQ0ZGRGljdC5jYWxsKHRoaXMsIHRhYmxlcywgc3RyaW5ncyk7CiAgICB0aGlzLnByaXZhdGVEaWN0ID0gbnVsbDsKICB9CiAgQ0ZGVG9wRGljdC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKENGRkRpY3QucHJvdG90eXBlKTsKICByZXR1cm4gQ0ZGVG9wRGljdDsKfSkoKTsKCnZhciBDRkZQcml2YXRlRGljdCA9IChmdW5jdGlvbiBDRkZQcml2YXRlRGljdENsb3N1cmUoKSB7CiAgdmFyIGxheW91dCA9IFsKICAgIFs2LCAnQmx1ZVZhbHVlcycsICdkZWx0YScsIG51bGxdLAogICAgWzcsICdPdGhlckJsdWVzJywgJ2RlbHRhJywgbnVsbF0sCiAgICBbOCwgJ0ZhbWlseUJsdWVzJywgJ2RlbHRhJywgbnVsbF0sCiAgICBbOSwgJ0ZhbWlseU90aGVyQmx1ZXMnLCAnZGVsdGEnLCBudWxsXSwKICAgIFtbMTIsIDldLCAnQmx1ZVNjYWxlJywgJ251bScsIDAuMDM5NjI1XSwKICAgIFtbMTIsIDEwXSwgJ0JsdWVTaGlmdCcsICdudW0nLCA3XSwKICAgIFtbMTIsIDExXSwgJ0JsdWVGdXp6JywgJ251bScsIDFdLAogICAgWzEwLCAnU3RkSFcnLCAnbnVtJywgbnVsbF0sCiAgICBbMTEsICdTdGRWVycsICdudW0nLCBudWxsXSwKICAgIFtbMTIsIDEyXSwgJ1N0ZW1TbmFwSCcsICdkZWx0YScsIG51bGxdLAogICAgW1sxMiwgMTNdLCAnU3RlbVNuYXBWJywgJ2RlbHRhJywgbnVsbF0sCiAgICBbWzEyLCAxNF0sICdGb3JjZUJvbGQnLCAnbnVtJywgMF0sCiAgICBbWzEyLCAxN10sICdMYW5ndWFnZUdyb3VwJywgJ251bScsIDBdLAogICAgW1sxMiwgMThdLCAnRXhwYW5zaW9uRmFjdG9yJywgJ251bScsIDAuMDZdLAogICAgW1sxMiwgMTldLCAnaW5pdGlhbFJhbmRvbVNlZWQnLCAnbnVtJywgMF0sCiAgICBbMjAsICdkZWZhdWx0V2lkdGhYJywgJ251bScsIDBdLAogICAgWzIxLCAnbm9taW5hbFdpZHRoWCcsICdudW0nLCAwXSwKICAgIFsxOSwgJ1N1YnJzJywgJ29mZnNldCcsIG51bGxdCiAgXTsKICB2YXIgdGFibGVzID0gbnVsbDsKICBmdW5jdGlvbiBDRkZQcml2YXRlRGljdChzdHJpbmdzKSB7CiAgICBpZiAodGFibGVzID09PSBudWxsKSB7CiAgICAgIHRhYmxlcyA9IENGRkRpY3QuY3JlYXRlVGFibGVzKGxheW91dCk7CiAgICB9CiAgICBDRkZEaWN0LmNhbGwodGhpcywgdGFibGVzLCBzdHJpbmdzKTsKICAgIHRoaXMuc3VicnNJbmRleCA9IG51bGw7CiAgfQogIENGRlByaXZhdGVEaWN0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQ0ZGRGljdC5wcm90b3R5cGUpOwogIHJldHVybiBDRkZQcml2YXRlRGljdDsKfSkoKTsKCnZhciBDRkZDaGFyc2V0UHJlZGVmaW5lZFR5cGVzID0gewogIElTT19BRE9CRTogMCwKICBFWFBFUlQ6IDEsCiAgRVhQRVJUX1NVQlNFVDogMgp9Owp2YXIgQ0ZGQ2hhcnNldCA9IChmdW5jdGlvbiBDRkZDaGFyc2V0Q2xvc3VyZSgpIHsKICBmdW5jdGlvbiBDRkZDaGFyc2V0KHByZWRlZmluZWQsIGZvcm1hdCwgY2hhcnNldCwgcmF3KSB7CiAgICB0aGlzLnByZWRlZmluZWQgPSBwcmVkZWZpbmVkOwogICAgdGhpcy5mb3JtYXQgPSBmb3JtYXQ7CiAgICB0aGlzLmNoYXJzZXQgPSBjaGFyc2V0OwogICAgdGhpcy5yYXcgPSByYXc7CiAgfQogIHJldHVybiBDRkZDaGFyc2V0Owp9KSgpOwoKdmFyIENGRkVuY29kaW5nID0gKGZ1bmN0aW9uIENGRkVuY29kaW5nQ2xvc3VyZSgpIHsKICBmdW5jdGlvbiBDRkZFbmNvZGluZyhwcmVkZWZpbmVkLCBmb3JtYXQsIGVuY29kaW5nLCByYXcpIHsKICAgIHRoaXMucHJlZGVmaW5lZCA9IHByZWRlZmluZWQ7CiAgICB0aGlzLmZvcm1hdCA9IGZvcm1hdDsKICAgIHRoaXMuZW5jb2RpbmcgPSBlbmNvZGluZzsKICAgIHRoaXMucmF3ID0gcmF3OwogIH0KICByZXR1cm4gQ0ZGRW5jb2Rpbmc7Cn0pKCk7Cgp2YXIgQ0ZGRkRTZWxlY3QgPSAoZnVuY3Rpb24gQ0ZGRkRTZWxlY3RDbG9zdXJlKCkgewogIGZ1bmN0aW9uIENGRkZEU2VsZWN0KGZkU2VsZWN0LCByYXcpIHsKICAgIHRoaXMuZmRTZWxlY3QgPSBmZFNlbGVjdDsKICAgIHRoaXMucmF3ID0gcmF3OwogIH0KICByZXR1cm4gQ0ZGRkRTZWxlY3Q7Cn0pKCk7CgovLyBIZWxwZXIgY2xhc3MgdG8ga2VlcCB0cmFjayBvZiB3aGVyZSBhbiBvZmZzZXQgaXMgd2l0aGluIHRoZSBkYXRhIGFuZCBoZWxwcwovLyBmaWxsaW5nIGluIHRoYXQgb2Zmc2V0IG9uY2UgaXQncyBrbm93bi4KdmFyIENGRk9mZnNldFRyYWNrZXIgPSAoZnVuY3Rpb24gQ0ZGT2Zmc2V0VHJhY2tlckNsb3N1cmUoKSB7CiAgZnVuY3Rpb24gQ0ZGT2Zmc2V0VHJhY2tlcigpIHsKICAgIHRoaXMub2Zmc2V0cyA9IHt9OwogIH0KICBDRkZPZmZzZXRUcmFja2VyLnByb3RvdHlwZSA9IHsKICAgIGlzVHJhY2tpbmc6IGZ1bmN0aW9uIENGRk9mZnNldFRyYWNrZXJfaXNUcmFja2luZyhrZXkpIHsKICAgICAgcmV0dXJuIGtleSBpbiB0aGlzLm9mZnNldHM7CiAgICB9LAogICAgdHJhY2s6IGZ1bmN0aW9uIENGRk9mZnNldFRyYWNrZXJfdHJhY2soa2V5LCBsb2NhdGlvbikgewogICAgICBpZiAoa2V5IGluIHRoaXMub2Zmc2V0cykgewogICAgICAgIGVycm9yKCdBbHJlYWR5IHRyYWNraW5nIGxvY2F0aW9uIG9mICcgKyBrZXkpOwogICAgICB9CiAgICAgIHRoaXMub2Zmc2V0c1trZXldID0gbG9jYXRpb247CiAgICB9LAogICAgb2Zmc2V0OiBmdW5jdGlvbiBDRkZPZmZzZXRUcmFja2VyX29mZnNldCh2YWx1ZSkgewogICAgICBmb3IgKHZhciBrZXkgaW4gdGhpcy5vZmZzZXRzKSB7CiAgICAgICAgdGhpcy5vZmZzZXRzW2tleV0gKz0gdmFsdWU7CiAgICAgIH0KICAgIH0sCiAgICBzZXRFbnRyeUxvY2F0aW9uOiBmdW5jdGlvbiBDRkZPZmZzZXRUcmFja2VyX3NldEVudHJ5TG9jYXRpb24oa2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQpIHsKICAgICAgaWYgKCEoa2V5IGluIHRoaXMub2Zmc2V0cykpIHsKICAgICAgICBlcnJvcignTm90IHRyYWNraW5nIGxvY2F0aW9uIG9mICcgKyBrZXkpOwogICAgICB9CiAgICAgIHZhciBkYXRhID0gb3V0cHV0LmRhdGE7CiAgICAgIHZhciBkYXRhT2Zmc2V0ID0gdGhpcy5vZmZzZXRzW2tleV07CiAgICAgIHZhciBzaXplID0gNTsKICAgICAgZm9yICh2YXIgaSA9IDAsIGlpID0gdmFsdWVzLmxlbmd0aDsgaSA8IGlpOyArK2kpIHsKICAgICAgICB2YXIgb2Zmc2V0MCA9IGkgKiBzaXplICsgZGF0YU9mZnNldDsKICAgICAgICB2YXIgb2Zmc2V0MSA9IG9mZnNldDAgKyAxOwogICAgICAgIHZhciBvZmZzZXQyID0gb2Zmc2V0MCArIDI7CiAgICAgICAgdmFyIG9mZnNldDMgPSBvZmZzZXQwICsgMzsKICAgICAgICB2YXIgb2Zmc2V0NCA9IG9mZnNldDAgKyA0OwogICAgICAgIC8vIEl0J3MgZWFzeSB0byBzY3JldyB1cCBvZmZzZXRzIHNvIHBlcmZvcm0gdGhpcyBzYW5pdHkgY2hlY2suCiAgICAgICAgaWYgKGRhdGFbb2Zmc2V0MF0gIT09IDB4MWQgfHwgZGF0YVtvZmZzZXQxXSAhPT0gMCB8fAogICAgICAgICAgICBkYXRhW29mZnNldDJdICE9PSAwIHx8IGRhdGFbb2Zmc2V0M10gIT09IDAgfHwgZGF0YVtvZmZzZXQ0XSAhPT0gMCkgewogICAgICAgICAgZXJyb3IoJ3dyaXRpbmcgdG8gYW4gb2Zmc2V0IHRoYXQgaXMgbm90IGVtcHR5Jyk7CiAgICAgICAgfQogICAgICAgIHZhciB2YWx1ZSA9IHZhbHVlc1tpXTsKICAgICAgICBkYXRhW29mZnNldDBdID0gMHgxZDsKICAgICAgICBkYXRhW29mZnNldDFdID0gKHZhbHVlID4+IDI0KSAmIDB4RkY7CiAgICAgICAgZGF0YVtvZmZzZXQyXSA9ICh2YWx1ZSA+PiAxNikgJiAweEZGOwogICAgICAgIGRhdGFbb2Zmc2V0M10gPSAodmFsdWUgPj4gOCkgJiAweEZGOwogICAgICAgIGRhdGFbb2Zmc2V0NF0gPSB2YWx1ZSAmIDB4RkY7CiAgICAgIH0KICAgIH0KICB9OwogIHJldHVybiBDRkZPZmZzZXRUcmFja2VyOwp9KSgpOwoKLy8gVGFrZXMgYSBDRkYgYW5kIGNvbnZlcnRzIGl0IHRvIHRoZSBiaW5hcnkgcmVwcmVzZW50YXRpb24uCnZhciBDRkZDb21waWxlciA9IChmdW5jdGlvbiBDRkZDb21waWxlckNsb3N1cmUoKSB7CiAgZnVuY3Rpb24gQ0ZGQ29tcGlsZXIoY2ZmKSB7CiAgICB0aGlzLmNmZiA9IGNmZjsKICB9CiAgQ0ZGQ29tcGlsZXIucHJvdG90eXBlID0gewogICAgY29tcGlsZTogZnVuY3Rpb24gQ0ZGQ29tcGlsZXJfY29tcGlsZSgpIHsKICAgICAgdmFyIGNmZiA9IHRoaXMuY2ZmOwogICAgICB2YXIgb3V0cHV0ID0gewogICAgICAgIGRhdGE6IFtdLAogICAgICAgIGxlbmd0aDogMCwKICAgICAgICBhZGQ6IGZ1bmN0aW9uIENGRkNvbXBpbGVyX2FkZChkYXRhKSB7CiAgICAgICAgICB0aGlzLmRhdGEgPSB0aGlzLmRhdGEuY29uY2F0KGRhdGEpOwogICAgICAgICAgdGhpcy5sZW5ndGggPSB0aGlzLmRhdGEubGVuZ3RoOwogICAgICAgIH0KICAgICAgfTsKCiAgICAgIC8vIENvbXBpbGUgdGhlIGZpdmUgZW50cmllcyB0aGF0IG11c3QgYmUgaW4gb3JkZXIuCiAgICAgIHZhciBoZWFkZXIgPSB0aGlzLmNvbXBpbGVIZWFkZXIoY2ZmLmhlYWRlcik7CiAgICAgIG91dHB1dC5hZGQoaGVhZGVyKTsKCiAgICAgIHZhciBuYW1lSW5kZXggPSB0aGlzLmNvbXBpbGVOYW1lSW5kZXgoY2ZmLm5hbWVzKTsKICAgICAgb3V0cHV0LmFkZChuYW1lSW5kZXgpOwoKICAgICAgaWYgKGNmZi5pc0NJREZvbnQpIHsKICAgICAgICAvLyBUaGUgc3BlYyBpcyB1bmNsZWFyIG9uIGhvdyBmb250IG1hdHJpY2VzIHNob3VsZCByZWxhdGUgdG8gZWFjaCBvdGhlcgogICAgICAgIC8vIHdoZW4gdGhlcmUgaXMgb25lIGluIHRoZSBtYWluIHRvcCBkaWN0IGFuZCB0aGUgc3ViIHRvcCBkaWN0cy4KICAgICAgICAvLyBXaW5kb3dzIGhhbmRsZXMgdGhpcyBkaWZmZXJlbnRseSB0aGFuIGxpbnV4IGFuZCBvc3ggc28gd2UgaGF2ZSB0bwogICAgICAgIC8vIG5vcm1hbGl6ZSB0byB3b3JrIG9uIGFsbC4KICAgICAgICAvLyBSdWxlcyBiYXNlZCBvZmYgb2Ygc29tZSBtYWlsaW5nIGxpc3QgZGlzY3Vzc2lvbnM6CiAgICAgICAgLy8gLSBJZiBtYWluIGZvbnQgaGFzIGEgbWF0cml4IGFuZCBzdWJmb250IGRvZXNuJ3QsIHVzZSB0aGUgbWFpbiBtYXRyaXguCiAgICAgICAgLy8gLSBJZiBubyBtYWluIGZvbnQgbWF0cml4IGFuZCB0aGVyZSBpcyBhIHN1YmZvbnQgbWF0cml4LCB1c2UgdGhlCiAgICAgICAgLy8gICBzdWJmb250IG1hdHJpeC4KICAgICAgICAvLyAtIElmIGJvdGggaGF2ZSBtYXRyaWNlcywgY29uY2F0IHRvZ2V0aGVyLgogICAgICAgIC8vIC0gSWYgbmVpdGhlciBoYXZlIG1hdHJpY2VzLCB1c2UgZGVmYXVsdC4KICAgICAgICAvLyBUbyBtYWtlIHRoaXMgd29yayBvbiBhbGwgcGxhdGZvcm1zIHdlIG1vdmUgdGhlIHRvcCBtYXRyaXggaW50byBlYWNoCiAgICAgICAgLy8gc3ViIHRvcCBkaWN0IGFuZCBjb25jYXQgaWYgbmVjZXNzYXJ5LgogICAgICAgIGlmIChjZmYudG9wRGljdC5oYXNOYW1lKCdGb250TWF0cml4JykpIHsKICAgICAgICAgIHZhciBiYXNlID0gY2ZmLnRvcERpY3QuZ2V0QnlOYW1lKCdGb250TWF0cml4Jyk7CiAgICAgICAgICBjZmYudG9wRGljdC5yZW1vdmVCeU5hbWUoJ0ZvbnRNYXRyaXgnKTsKICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBpaSA9IGNmZi5mZEFycmF5Lmxlbmd0aDsgaSA8IGlpOyBpKyspIHsKICAgICAgICAgICAgdmFyIHN1YkRpY3QgPSBjZmYuZmRBcnJheVtpXTsKICAgICAgICAgICAgdmFyIG1hdHJpeCA9IGJhc2Uuc2xpY2UoMCk7CiAgICAgICAgICAgIGlmIChzdWJEaWN0Lmhhc05hbWUoJ0ZvbnRNYXRyaXgnKSkgewogICAgICAgICAgICAgIG1hdHJpeCA9IFV0aWwudHJhbnNmb3JtKG1hdHJpeCwgc3ViRGljdC5nZXRCeU5hbWUoJ0ZvbnRNYXRyaXgnKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgc3ViRGljdC5zZXRCeU5hbWUoJ0ZvbnRNYXRyaXgnLCBtYXRyaXgpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQoKICAgICAgdmFyIGNvbXBpbGVkID0gdGhpcy5jb21waWxlVG9wRGljdHMoW2NmZi50b3BEaWN0XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0Lmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2ZmLmlzQ0lERm9udCk7CiAgICAgIG91dHB1dC5hZGQoY29tcGlsZWQub3V0cHV0KTsKICAgICAgdmFyIHRvcERpY3RUcmFja2VyID0gY29tcGlsZWQudHJhY2tlcnNbMF07CgogICAgICB2YXIgc3RyaW5nSW5kZXggPSB0aGlzLmNvbXBpbGVTdHJpbmdJbmRleChjZmYuc3RyaW5ncy5zdHJpbmdzKTsKICAgICAgb3V0cHV0LmFkZChzdHJpbmdJbmRleCk7CgogICAgICB2YXIgZ2xvYmFsU3VickluZGV4ID0gdGhpcy5jb21waWxlSW5kZXgoY2ZmLmdsb2JhbFN1YnJJbmRleCk7CiAgICAgIG91dHB1dC5hZGQoZ2xvYmFsU3VickluZGV4KTsKCiAgICAgIC8vIE5vdyBzdGFydCBvbiB0aGUgb3RoZXIgZW50cmllcyB0aGF0IGhhdmUgbm8gc3BlY2ZpYyBvcmRlci4KICAgICAgaWYgKGNmZi5lbmNvZGluZyAmJiBjZmYudG9wRGljdC5oYXNOYW1lKCdFbmNvZGluZycpKSB7CiAgICAgICAgaWYgKGNmZi5lbmNvZGluZy5wcmVkZWZpbmVkKSB7CiAgICAgICAgICB0b3BEaWN0VHJhY2tlci5zZXRFbnRyeUxvY2F0aW9uKCdFbmNvZGluZycsIFtjZmYuZW5jb2RpbmcuZm9ybWF0XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdmFyIGVuY29kaW5nID0gdGhpcy5jb21waWxlRW5jb2RpbmcoY2ZmLmVuY29kaW5nKTsKICAgICAgICAgIHRvcERpY3RUcmFja2VyLnNldEVudHJ5TG9jYXRpb24oJ0VuY29kaW5nJywgW291dHB1dC5sZW5ndGhdLCBvdXRwdXQpOwogICAgICAgICAgb3V0cHV0LmFkZChlbmNvZGluZyk7CiAgICAgICAgfQogICAgICB9CgogICAgICBpZiAoY2ZmLmNoYXJzZXQgJiYgY2ZmLnRvcERpY3QuaGFzTmFtZSgnY2hhcnNldCcpKSB7CiAgICAgICAgaWYgKGNmZi5jaGFyc2V0LnByZWRlZmluZWQpIHsKICAgICAgICAgIHRvcERpY3RUcmFja2VyLnNldEVudHJ5TG9jYXRpb24oJ2NoYXJzZXQnLCBbY2ZmLmNoYXJzZXQuZm9ybWF0XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdmFyIGNoYXJzZXQgPSB0aGlzLmNvbXBpbGVDaGFyc2V0KGNmZi5jaGFyc2V0KTsKICAgICAgICAgIHRvcERpY3RUcmFja2VyLnNldEVudHJ5TG9jYXRpb24oJ2NoYXJzZXQnLCBbb3V0cHV0Lmxlbmd0aF0sIG91dHB1dCk7CiAgICAgICAgICBvdXRwdXQuYWRkKGNoYXJzZXQpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgdmFyIGNoYXJTdHJpbmdzID0gdGhpcy5jb21waWxlQ2hhclN0cmluZ3MoY2ZmLmNoYXJTdHJpbmdzKTsKICAgICAgdG9wRGljdFRyYWNrZXIuc2V0RW50cnlMb2NhdGlvbignQ2hhclN0cmluZ3MnLCBbb3V0cHV0Lmxlbmd0aF0sIG91dHB1dCk7CiAgICAgIG91dHB1dC5hZGQoY2hhclN0cmluZ3MpOwoKICAgICAgaWYgKGNmZi5pc0NJREZvbnQpIHsKICAgICAgICAvLyBGb3Igc29tZSByZWFzb24gRkRTZWxlY3QgbXVzdCBiZSBpbiBmcm9udCBvZiBGREFycmF5IG9uIHdpbmRvd3MuIE9TWAogICAgICAgIC8vIGFuZCBsaW51eCBkb24ndCBzZWVtIHRvIGNhcmUuCiAgICAgICAgdG9wRGljdFRyYWNrZXIuc2V0RW50cnlMb2NhdGlvbignRkRTZWxlY3QnLCBbb3V0cHV0Lmxlbmd0aF0sIG91dHB1dCk7CiAgICAgICAgdmFyIGZkU2VsZWN0ID0gdGhpcy5jb21waWxlRkRTZWxlY3QoY2ZmLmZkU2VsZWN0LnJhdyk7CiAgICAgICAgb3V0cHV0LmFkZChmZFNlbGVjdCk7CiAgICAgICAgLy8gSXQgaXMgdW5jbGVhciBpZiB0aGUgc3ViIGZvbnQgZGljdGlvbmFyeSBjYW4gaGF2ZSBDSUQgcmVsYXRlZAogICAgICAgIC8vIGRpY3Rpb25hcnkga2V5cywgYnV0IHRoZSBzYW5pdGl6ZXIgZG9lc24ndCBsaWtlIHRoZW0gc28gcmVtb3ZlIHRoZW0uCiAgICAgICAgY29tcGlsZWQgPSB0aGlzLmNvbXBpbGVUb3BEaWN0cyhjZmYuZmRBcnJheSwgb3V0cHV0Lmxlbmd0aCwgdHJ1ZSk7CiAgICAgICAgdG9wRGljdFRyYWNrZXIuc2V0RW50cnlMb2NhdGlvbignRkRBcnJheScsIFtvdXRwdXQubGVuZ3RoXSwgb3V0cHV0KTsKICAgICAgICBvdXRwdXQuYWRkKGNvbXBpbGVkLm91dHB1dCk7CiAgICAgICAgdmFyIGZvbnREaWN0VHJhY2tlcnMgPSBjb21waWxlZC50cmFja2VyczsKCiAgICAgICAgdGhpcy5jb21waWxlUHJpdmF0ZURpY3RzKGNmZi5mZEFycmF5LCBmb250RGljdFRyYWNrZXJzLCBvdXRwdXQpOwogICAgICB9CgogICAgICB0aGlzLmNvbXBpbGVQcml2YXRlRGljdHMoW2NmZi50b3BEaWN0XSwgW3RvcERpY3RUcmFja2VyXSwgb3V0cHV0KTsKCiAgICAgIC8vIElmIHRoZSBmb250IGRhdGEgZW5kcyB3aXRoIElOREVYIHdob3NlIG9iamVjdCBkYXRhIGlzIHplcm8tbGVuZ3RoLAogICAgICAvLyB0aGUgc2FuaXRpemVyIHdpbGwgYmFpbCBvdXQuIEFkZCBhIGR1bW15IGJ5dGUgdG8gYXZvaWQgdGhhdC4KICAgICAgb3V0cHV0LmFkZChbMF0pOwoKICAgICAgcmV0dXJuIG91dHB1dC5kYXRhOwogICAgfSwKICAgIGVuY29kZU51bWJlcjogZnVuY3Rpb24gQ0ZGQ29tcGlsZXJfZW5jb2RlTnVtYmVyKHZhbHVlKSB7CiAgICAgIGlmIChwYXJzZUZsb2F0KHZhbHVlKSA9PT0gcGFyc2VJbnQodmFsdWUsIDEwKSAmJiAhaXNOYU4odmFsdWUpKSB7IC8vIGlzSW50CiAgICAgICAgcmV0dXJuIHRoaXMuZW5jb2RlSW50ZWdlcih2YWx1ZSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHRoaXMuZW5jb2RlRmxvYXQodmFsdWUpOwogICAgICB9CiAgICB9LAogICAgZW5jb2RlRmxvYXQ6IGZ1bmN0aW9uIENGRkNvbXBpbGVyX2VuY29kZUZsb2F0KG51bSkgewogICAgICB2YXIgdmFsdWUgPSBudW0udG9TdHJpbmcoKTsKCiAgICAgIC8vIHJvdW5kaW5nIGluYWNjdXJhdGUgZG91YmxlcwogICAgICB2YXIgbSA9IC9cLihcZCo/KSg/Ojl7NSwyMH18MHs1LDIwfSlcZHswLDJ9KD86ZSguKyl8JCkvLmV4ZWModmFsdWUpOwogICAgICBpZiAobSkgewogICAgICAgIHZhciBlcHNpbG9uID0gcGFyc2VGbG9hdCgnMWUnICsgKChtWzJdID8gK21bMl0gOiAwKSArIG1bMV0ubGVuZ3RoKSk7CiAgICAgICAgdmFsdWUgPSAoTWF0aC5yb3VuZChudW0gKiBlcHNpbG9uKSAvIGVwc2lsb24pLnRvU3RyaW5nKCk7CiAgICAgIH0KCiAgICAgIHZhciBuaWJibGVzID0gJyc7CiAgICAgIHZhciBpLCBpaTsKICAgICAgZm9yIChpID0gMCwgaWkgPSB2YWx1ZS5sZW5ndGg7IGkgPCBpaTsgKytpKSB7CiAgICAgICAgdmFyIGEgPSB2YWx1ZVtpXTsKICAgICAgICBpZiAoYSA9PT0gJ2UnKSB7CiAgICAgICAgICBuaWJibGVzICs9IHZhbHVlWysraV0gPT09ICctJyA/ICdjJyA6ICdiJzsKICAgICAgICB9IGVsc2UgaWYgKGEgPT09ICcuJykgewogICAgICAgICAgbmliYmxlcyArPSAnYSc7CiAgICAgICAgfSBlbHNlIGlmIChhID09PSAnLScpIHsKICAgICAgICAgIG5pYmJsZXMgKz0gJ2UnOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBuaWJibGVzICs9IGE7CiAgICAgICAgfQogICAgICB9CiAgICAgIG5pYmJsZXMgKz0gKG5pYmJsZXMubGVuZ3RoICYgMSkgPyAnZicgOiAnZmYnOwogICAgICB2YXIgb3V0ID0gWzMwXTsKICAgICAgZm9yIChpID0gMCwgaWkgPSBuaWJibGVzLmxlbmd0aDsgaSA8IGlpOyBpICs9IDIpIHsKICAgICAgICBvdXQucHVzaChwYXJzZUludChuaWJibGVzLnN1YnN0cihpLCAyKSwgMTYpKTsKICAgICAgfQogICAgICByZXR1cm4gb3V0OwogICAgfSwKICAgIGVuY29kZUludGVnZXI6IGZ1bmN0aW9uIENGRkNvbXBpbGVyX2VuY29kZUludGVnZXIodmFsdWUpIHsKICAgICAgdmFyIGNvZGU7CiAgICAgIGlmICh2YWx1ZSA+PSAtMTA3ICYmIHZhbHVlIDw9IDEwNykgewogICAgICAgIGNvZGUgPSBbdmFsdWUgKyAxMzldOwogICAgICB9IGVsc2UgaWYgKHZhbHVlID49IDEwOCAmJiB2YWx1ZSA8PSAxMTMxKSB7CiAgICAgICAgdmFsdWUgPSBbdmFsdWUgLSAxMDhdOwogICAgICAgIGNvZGUgPSBbKHZhbHVlID4+IDgpICsgMjQ3LCB2YWx1ZSAmIDB4RkZdOwogICAgICB9IGVsc2UgaWYgKHZhbHVlID49IC0xMTMxICYmIHZhbHVlIDw9IC0xMDgpIHsKICAgICAgICB2YWx1ZSA9IC12YWx1ZSAtIDEwODsKICAgICAgICBjb2RlID0gWyh2YWx1ZSA+PiA4KSArIDI1MSwgdmFsdWUgJiAweEZGXTsKICAgICAgfSBlbHNlIGlmICh2YWx1ZSA+PSAtMzI3NjggJiYgdmFsdWUgPD0gMzI3NjcpIHsKICAgICAgICBjb2RlID0gWzB4MWMsICh2YWx1ZSA+PiA4KSAmIDB4RkYsIHZhbHVlICYgMHhGRl07CiAgICAgIH0gZWxzZSB7CiAgICAgICAgY29kZSA9IFsweDFkLAogICAgICAgICAgICAgICAgKHZhbHVlID4+IDI0KSAmIDB4RkYsCiAgICAgICAgICAgICAgICAodmFsdWUgPj4gMTYpICYgMHhGRiwKICAgICAgICAgICAgICAgICh2YWx1ZSA+PiA4KSAmIDB4RkYsCiAgICAgICAgICAgICAgICAgdmFsdWUgJiAweEZGXTsKICAgICAgfQogICAgICByZXR1cm4gY29kZTsKICAgIH0sCiAgICBjb21waWxlSGVhZGVyOiBmdW5jdGlvbiBDRkZDb21waWxlcl9jb21waWxlSGVhZGVyKGhlYWRlcikgewogICAgICByZXR1cm4gWwogICAgICAgIGhlYWRlci5tYWpvciwKICAgICAgICBoZWFkZXIubWlub3IsCiAgICAgICAgaGVhZGVyLmhkclNpemUsCiAgICAgICAgaGVhZGVyLm9mZlNpemUKICAgICAgXTsKICAgIH0sCiAgICBjb21waWxlTmFtZUluZGV4OiBmdW5jdGlvbiBDRkZDb21waWxlcl9jb21waWxlTmFtZUluZGV4KG5hbWVzKSB7CiAgICAgIHZhciBuYW1lSW5kZXggPSBuZXcgQ0ZGSW5kZXgoKTsKICAgICAgZm9yICh2YXIgaSA9IDAsIGlpID0gbmFtZXMubGVuZ3RoOyBpIDwgaWk7ICsraSkgewogICAgICAgIG5hbWVJbmRleC5hZGQoc3RyaW5nVG9CeXRlcyhuYW1lc1tpXSkpOwogICAgICB9CiAgICAgIHJldHVybiB0aGlzLmNvbXBpbGVJbmRleChuYW1lSW5kZXgpOwogICAgfSwKICAgIGNvbXBpbGVUb3BEaWN0czogZnVuY3Rpb24gQ0ZGQ29tcGlsZXJfY29tcGlsZVRvcERpY3RzKGRpY3RzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ2lkS2V5cykgewogICAgICB2YXIgZm9udERpY3RUcmFja2VycyA9IFtdOwogICAgICB2YXIgZmRBcnJheUluZGV4ID0gbmV3IENGRkluZGV4KCk7CiAgICAgIGZvciAodmFyIGkgPSAwLCBpaSA9IGRpY3RzLmxlbmd0aDsgaSA8IGlpOyArK2kpIHsKICAgICAgICB2YXIgZm9udERpY3QgPSBkaWN0c1tpXTsKICAgICAgICBpZiAocmVtb3ZlQ2lkS2V5cykgewogICAgICAgICAgZm9udERpY3QucmVtb3ZlQnlOYW1lKCdDSURGb250VmVyc2lvbicpOwogICAgICAgICAgZm9udERpY3QucmVtb3ZlQnlOYW1lKCdDSURGb250UmV2aXNpb24nKTsKICAgICAgICAgIGZvbnREaWN0LnJlbW92ZUJ5TmFtZSgnQ0lERm9udFR5cGUnKTsKICAgICAgICAgIGZvbnREaWN0LnJlbW92ZUJ5TmFtZSgnQ0lEQ291bnQnKTsKICAgICAgICAgIGZvbnREaWN0LnJlbW92ZUJ5TmFtZSgnVUlEQmFzZScpOwogICAgICAgIH0KICAgICAgICB2YXIgZm9udERpY3RUcmFja2VyID0gbmV3IENGRk9mZnNldFRyYWNrZXIoKTsKICAgICAgICB2YXIgZm9udERpY3REYXRhID0gdGhpcy5jb21waWxlRGljdChmb250RGljdCwgZm9udERpY3RUcmFja2VyKTsKICAgICAgICBmb250RGljdFRyYWNrZXJzLnB1c2goZm9udERpY3RUcmFja2VyKTsKICAgICAgICBmZEFycmF5SW5kZXguYWRkKGZvbnREaWN0RGF0YSk7CiAgICAgICAgZm9udERpY3RUcmFja2VyLm9mZnNldChsZW5ndGgpOwogICAgICB9CiAgICAgIGZkQXJyYXlJbmRleCA9IHRoaXMuY29tcGlsZUluZGV4KGZkQXJyYXlJbmRleCwgZm9udERpY3RUcmFja2Vycyk7CiAgICAgIHJldHVybiB7CiAgICAgICAgdHJhY2tlcnM6IGZvbnREaWN0VHJhY2tlcnMsCiAgICAgICAgb3V0cHV0OiBmZEFycmF5SW5kZXgKICAgICAgfTsKICAgIH0sCiAgICBjb21waWxlUHJpdmF0ZURpY3RzOiBmdW5jdGlvbiBDRkZDb21waWxlcl9jb21waWxlUHJpdmF0ZURpY3RzKGRpY3RzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFja2VycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0KSB7CiAgICAgIGZvciAodmFyIGkgPSAwLCBpaSA9IGRpY3RzLmxlbmd0aDsgaSA8IGlpOyArK2kpIHsKICAgICAgICB2YXIgZm9udERpY3QgPSBkaWN0c1tpXTsKICAgICAgICBhc3NlcnQoZm9udERpY3QucHJpdmF0ZURpY3QgJiYgZm9udERpY3QuaGFzTmFtZSgnUHJpdmF0ZScpLAogICAgICAgICAgICAgICAnVGhlcmUgbXVzdCBiZSBhbiBwcml2YXRlIGRpY3Rpb25hcnkuJyk7CiAgICAgICAgdmFyIHByaXZhdGVEaWN0ID0gZm9udERpY3QucHJpdmF0ZURpY3Q7CiAgICAgICAgdmFyIHByaXZhdGVEaWN0VHJhY2tlciA9IG5ldyBDRkZPZmZzZXRUcmFja2VyKCk7CiAgICAgICAgdmFyIHByaXZhdGVEaWN0RGF0YSA9IHRoaXMuY29tcGlsZURpY3QocHJpdmF0ZURpY3QsIHByaXZhdGVEaWN0VHJhY2tlcik7CgogICAgICAgIHZhciBvdXRwdXRMZW5ndGggPSBvdXRwdXQubGVuZ3RoOwogICAgICAgIHByaXZhdGVEaWN0VHJhY2tlci5vZmZzZXQob3V0cHV0TGVuZ3RoKTsKICAgICAgICBpZiAoIXByaXZhdGVEaWN0RGF0YS5sZW5ndGgpIHsKICAgICAgICAgIC8vIFRoZSBwcml2YXRlIGRpY3Rpb25hcnkgd2FzIGVtcHR5LCBzZXQgdGhlIG91dHB1dCBsZW5ndGggdG8gemVybyB0bwogICAgICAgICAgLy8gZW5zdXJlIHRoZSBvZmZzZXQgbGVuZ3RoIGlzbid0IG91dCBvZiBib3VuZHMgaW4gdGhlIGV5ZXMgb2YgdGhlCiAgICAgICAgICAvLyBzYW5pdGl6ZXIuCiAgICAgICAgICBvdXRwdXRMZW5ndGggPSAwOwogICAgICAgIH0KCiAgICAgICAgdHJhY2tlcnNbaV0uc2V0RW50cnlMb2NhdGlvbignUHJpdmF0ZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJpdmF0ZURpY3REYXRhLmxlbmd0aCwgb3V0cHV0TGVuZ3RoXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCk7CiAgICAgICAgb3V0cHV0LmFkZChwcml2YXRlRGljdERhdGEpOwoKICAgICAgICBpZiAocHJpdmF0ZURpY3Quc3VicnNJbmRleCAmJiBwcml2YXRlRGljdC5oYXNOYW1lKCdTdWJycycpKSB7CiAgICAgICAgICB2YXIgc3VicnMgPSB0aGlzLmNvbXBpbGVJbmRleChwcml2YXRlRGljdC5zdWJyc0luZGV4KTsKICAgICAgICAgIHByaXZhdGVEaWN0VHJhY2tlci5zZXRFbnRyeUxvY2F0aW9uKCdTdWJycycsIFtwcml2YXRlRGljdERhdGEubGVuZ3RoXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCk7CiAgICAgICAgICBvdXRwdXQuYWRkKHN1YnJzKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICBjb21waWxlRGljdDogZnVuY3Rpb24gQ0ZGQ29tcGlsZXJfY29tcGlsZURpY3QoZGljdCwgb2Zmc2V0VHJhY2tlcikgewogICAgICB2YXIgb3V0ID0gW107CiAgICAgIC8vIFRoZSBkaWN0aW9uYXJ5IGtleXMgbXVzdCBiZSBpbiBhIGNlcnRhaW4gb3JkZXIuCiAgICAgIHZhciBvcmRlciA9IGRpY3Qub3JkZXI7CiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb3JkZXIubGVuZ3RoOyArK2kpIHsKICAgICAgICB2YXIga2V5ID0gb3JkZXJbaV07CiAgICAgICAgaWYgKCEoa2V5IGluIGRpY3QudmFsdWVzKSkgewogICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIHZhciB2YWx1ZXMgPSBkaWN0LnZhbHVlc1trZXldOwogICAgICAgIHZhciB0eXBlcyA9IGRpY3QudHlwZXNba2V5XTsKICAgICAgICBpZiAoIWlzQXJyYXkodHlwZXMpKSB7CiAgICAgICAgICB0eXBlcyA9IFt0eXBlc107CiAgICAgICAgfQogICAgICAgIGlmICghaXNBcnJheSh2YWx1ZXMpKSB7CiAgICAgICAgICB2YWx1ZXMgPSBbdmFsdWVzXTsKICAgICAgICB9CgogICAgICAgIC8vIFJlbW92ZSBhbnkgZW1wdHkgZGljdCB2YWx1ZXMuCiAgICAgICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApIHsKICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KCiAgICAgICAgZm9yICh2YXIgaiA9IDAsIGpqID0gdHlwZXMubGVuZ3RoOyBqIDwgamo7ICsraikgewogICAgICAgICAgdmFyIHR5cGUgPSB0eXBlc1tqXTsKICAgICAgICAgIHZhciB2YWx1ZSA9IHZhbHVlc1tqXTsKICAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICAgICBjYXNlICdudW0nOgogICAgICAgICAgICBjYXNlICdzaWQnOgogICAgICAgICAgICAgIG91dCA9IG91dC5jb25jYXQodGhpcy5lbmNvZGVOdW1iZXIodmFsdWUpKTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnb2Zmc2V0JzoKICAgICAgICAgICAgICAvLyBGb3Igb2Zmc2V0cyB3ZSBqdXN0IGluc2VydCBhIDMyYml0IGludGVnZXIgc28gd2UgZG9uJ3QgaGF2ZSB0bwogICAgICAgICAgICAgIC8vIGRlYWwgd2l0aCBmaWd1cmluZyBvdXQgdGhlIGxlbmd0aCBvZiB0aGUgb2Zmc2V0IHdoZW4gaXQgZ2V0cwogICAgICAgICAgICAgIC8vIHJlcGxhY2VkIGxhdGVyIG9uIGJ5IHRoZSBjb21waWxlci4KICAgICAgICAgICAgICB2YXIgbmFtZSA9IGRpY3Qua2V5VG9OYW1lTWFwW2tleV07CiAgICAgICAgICAgICAgLy8gU29tZSBvZmZzZXRzIGhhdmUgdGhlIG9mZnNldCBhbmQgdGhlIGxlbmd0aCwgc28ganVzdCByZWNvcmQgdGhlCiAgICAgICAgICAgICAgLy8gcG9zaXRpb24gb2YgdGhlIGZpcnN0IG9uZS4KICAgICAgICAgICAgICBpZiAoIW9mZnNldFRyYWNrZXIuaXNUcmFja2luZyhuYW1lKSkgewogICAgICAgICAgICAgICAgb2Zmc2V0VHJhY2tlci50cmFjayhuYW1lLCBvdXQubGVuZ3RoKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgb3V0ID0gb3V0LmNvbmNhdChbMHgxZCwgMCwgMCwgMCwgMF0pOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdhcnJheSc6CiAgICAgICAgICAgIGNhc2UgJ2RlbHRhJzoKICAgICAgICAgICAgICBvdXQgPSBvdXQuY29uY2F0KHRoaXMuZW5jb2RlTnVtYmVyKHZhbHVlKSk7CiAgICAgICAgICAgICAgZm9yICh2YXIgayA9IDEsIGtrID0gdmFsdWVzLmxlbmd0aDsgayA8IGtrOyArK2spIHsKICAgICAgICAgICAgICAgIG91dCA9IG91dC5jb25jYXQodGhpcy5lbmNvZGVOdW1iZXIodmFsdWVzW2tdKSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgIGVycm9yKCdVbmtub3duIGRhdGEgdHlwZSBvZiAnICsgdHlwZSk7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIG91dCA9IG91dC5jb25jYXQoZGljdC5vcGNvZGVzW2tleV0pOwogICAgICB9CiAgICAgIHJldHVybiBvdXQ7CiAgICB9LAogICAgY29tcGlsZVN0cmluZ0luZGV4OiBmdW5jdGlvbiBDRkZDb21waWxlcl9jb21waWxlU3RyaW5nSW5kZXgoc3RyaW5ncykgewogICAgICB2YXIgc3RyaW5nSW5kZXggPSBuZXcgQ0ZGSW5kZXgoKTsKICAgICAgZm9yICh2YXIgaSA9IDAsIGlpID0gc3RyaW5ncy5sZW5ndGg7IGkgPCBpaTsgKytpKSB7CiAgICAgICAgc3RyaW5nSW5kZXguYWRkKHN0cmluZ1RvQnl0ZXMoc3RyaW5nc1tpXSkpOwogICAgICB9CiAgICAgIHJldHVybiB0aGlzLmNvbXBpbGVJbmRleChzdHJpbmdJbmRleCk7CiAgICB9LAogICAgY29tcGlsZUdsb2JhbFN1YnJJbmRleDogZnVuY3Rpb24gQ0ZGQ29tcGlsZXJfY29tcGlsZUdsb2JhbFN1YnJJbmRleCgpIHsKICAgICAgdmFyIGdsb2JhbFN1YnJJbmRleCA9IHRoaXMuY2ZmLmdsb2JhbFN1YnJJbmRleDsKICAgICAgdGhpcy5vdXQud3JpdGVCeXRlQXJyYXkodGhpcy5jb21waWxlSW5kZXgoZ2xvYmFsU3VickluZGV4KSk7CiAgICB9LAogICAgY29tcGlsZUNoYXJTdHJpbmdzOiBmdW5jdGlvbiBDRkZDb21waWxlcl9jb21waWxlQ2hhclN0cmluZ3MoY2hhclN0cmluZ3MpIHsKICAgICAgcmV0dXJuIHRoaXMuY29tcGlsZUluZGV4KGNoYXJTdHJpbmdzKTsKICAgIH0sCiAgICBjb21waWxlQ2hhcnNldDogZnVuY3Rpb24gQ0ZGQ29tcGlsZXJfY29tcGlsZUNoYXJzZXQoY2hhcnNldCkgewogICAgICByZXR1cm4gdGhpcy5jb21waWxlVHlwZWRBcnJheShjaGFyc2V0LnJhdyk7CiAgICB9LAogICAgY29tcGlsZUVuY29kaW5nOiBmdW5jdGlvbiBDRkZDb21waWxlcl9jb21waWxlRW5jb2RpbmcoZW5jb2RpbmcpIHsKICAgICAgcmV0dXJuIHRoaXMuY29tcGlsZVR5cGVkQXJyYXkoZW5jb2RpbmcucmF3KTsKICAgIH0sCiAgICBjb21waWxlRkRTZWxlY3Q6IGZ1bmN0aW9uIENGRkNvbXBpbGVyX2NvbXBpbGVGRFNlbGVjdChmZFNlbGVjdCkgewogICAgICByZXR1cm4gdGhpcy5jb21waWxlVHlwZWRBcnJheShmZFNlbGVjdCk7CiAgICB9LAogICAgY29tcGlsZVR5cGVkQXJyYXk6IGZ1bmN0aW9uIENGRkNvbXBpbGVyX2NvbXBpbGVUeXBlZEFycmF5KGRhdGEpIHsKICAgICAgdmFyIG91dCA9IFtdOwogICAgICBmb3IgKHZhciBpID0gMCwgaWkgPSBkYXRhLmxlbmd0aDsgaSA8IGlpOyArK2kpIHsKICAgICAgICBvdXRbaV0gPSBkYXRhW2ldOwogICAgICB9CiAgICAgIHJldHVybiBvdXQ7CiAgICB9LAogICAgY29tcGlsZUluZGV4OiBmdW5jdGlvbiBDRkZDb21waWxlcl9jb21waWxlSW5kZXgoaW5kZXgsIHRyYWNrZXJzKSB7CiAgICAgIHRyYWNrZXJzID0gdHJhY2tlcnMgfHwgW107CiAgICAgIHZhciBvYmplY3RzID0gaW5kZXgub2JqZWN0czsKICAgICAgLy8gRmlyc3QgMiBieXRlcyBjb250YWlucyB0aGUgbnVtYmVyIG9mIG9iamVjdHMgY29udGFpbmVkIGludG8gdGhpcyBpbmRleAogICAgICB2YXIgY291bnQgPSBvYmplY3RzLmxlbmd0aDsKCiAgICAgIC8vIElmIHRoZXJlIGlzIG5vIG9iamVjdCwganVzdCBjcmVhdGUgYW4gaW5kZXguIFRoaXMgdGVjaG5pY2FsbHkKICAgICAgLy8gc2hvdWxkIGp1c3QgYmUgWzAsIDBdIGJ1dCBPVFMgaGFzIGFuIGlzc3VlIHdpdGggdGhhdC4KICAgICAgaWYgKGNvdW50ID09PSAwKSB7CiAgICAgICAgcmV0dXJuIFswLCAwLCAwXTsKICAgICAgfQoKICAgICAgdmFyIGRhdGEgPSBbKGNvdW50ID4+IDgpICYgMHhGRiwgY291bnQgJiAweGZmXTsKCiAgICAgIHZhciBsYXN0T2Zmc2V0ID0gMSwgaTsKICAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAgICAgICBsYXN0T2Zmc2V0ICs9IG9iamVjdHNbaV0ubGVuZ3RoOwogICAgICB9CgogICAgICB2YXIgb2Zmc2V0U2l6ZTsKICAgICAgaWYgKGxhc3RPZmZzZXQgPCAweDEwMCkgewogICAgICAgIG9mZnNldFNpemUgPSAxOwogICAgICB9IGVsc2UgaWYgKGxhc3RPZmZzZXQgPCAweDEwMDAwKSB7CiAgICAgICAgb2Zmc2V0U2l6ZSA9IDI7CiAgICAgIH0gZWxzZSBpZiAobGFzdE9mZnNldCA8IDB4MTAwMDAwMCkgewogICAgICAgIG9mZnNldFNpemUgPSAzOwogICAgICB9IGVsc2UgewogICAgICAgIG9mZnNldFNpemUgPSA0OwogICAgICB9CgogICAgICAvLyBOZXh0IGJ5dGUgY29udGFpbnMgdGhlIG9mZnNldCBzaXplIHVzZSB0byByZWZlcmVuY2Ugb2JqZWN0IGluIHRoZSBmaWxlCiAgICAgIGRhdGEucHVzaChvZmZzZXRTaXplKTsKCiAgICAgIC8vIEFkZCBhbm90aGVyIG9mZnNldCBhZnRlciB0aGlzIG9uZSBiZWNhdXNlIHdlIG5lZWQgYSBuZXcgb2Zmc2V0CiAgICAgIHZhciByZWxhdGl2ZU9mZnNldCA9IDE7CiAgICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudCArIDE7IGkrKykgewogICAgICAgIGlmIChvZmZzZXRTaXplID09PSAxKSB7CiAgICAgICAgICBkYXRhLnB1c2gocmVsYXRpdmVPZmZzZXQgJiAweEZGKTsKICAgICAgICB9IGVsc2UgaWYgKG9mZnNldFNpemUgPT09IDIpIHsKICAgICAgICAgIGRhdGEucHVzaCgocmVsYXRpdmVPZmZzZXQgPj4gOCkgJiAweEZGLAogICAgICAgICAgICAgICAgICAgICByZWxhdGl2ZU9mZnNldCAmIDB4RkYpOwogICAgICAgIH0gZWxzZSBpZiAob2Zmc2V0U2l6ZSA9PT0gMykgewogICAgICAgICAgZGF0YS5wdXNoKChyZWxhdGl2ZU9mZnNldCA+PiAxNikgJiAweEZGLAogICAgICAgICAgICAgICAgICAgIChyZWxhdGl2ZU9mZnNldCA+PiA4KSAmIDB4RkYsCiAgICAgICAgICAgICAgICAgICAgIHJlbGF0aXZlT2Zmc2V0ICYgMHhGRik7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGRhdGEucHVzaCgocmVsYXRpdmVPZmZzZXQgPj4+IDI0KSAmIDB4RkYsCiAgICAgICAgICAgICAgICAgICAgKHJlbGF0aXZlT2Zmc2V0ID4+IDE2KSAmIDB4RkYsCiAgICAgICAgICAgICAgICAgICAgKHJlbGF0aXZlT2Zmc2V0ID4+IDgpICYgMHhGRiwKICAgICAgICAgICAgICAgICAgICAgcmVsYXRpdmVPZmZzZXQgJiAweEZGKTsKICAgICAgICB9CgogICAgICAgIGlmIChvYmplY3RzW2ldKSB7CiAgICAgICAgICByZWxhdGl2ZU9mZnNldCArPSBvYmplY3RzW2ldLmxlbmd0aDsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CiAgICAgICAgLy8gTm90aWZ5IHRoZSB0cmFja2VyIHdoZXJlIHRoZSBvYmplY3Qgd2lsbCBiZSBvZmZzZXQgaW4gdGhlIGRhdGEuCiAgICAgICAgaWYgKHRyYWNrZXJzW2ldKSB7CiAgICAgICAgICB0cmFja2Vyc1tpXS5vZmZzZXQoZGF0YS5sZW5ndGgpOwogICAgICAgIH0KICAgICAgICBmb3IgKHZhciBqID0gMCwgamogPSBvYmplY3RzW2ldLmxlbmd0aDsgaiA8IGpqOyBqKyspIHsKICAgICAgICAgIGRhdGEucHVzaChvYmplY3RzW2ldW2pdKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIGRhdGE7CiAgICB9CiAgfTsKICByZXR1cm4gQ0ZGQ29tcGlsZXI7Cn0pKCk7CgovLyBXb3JrYXJvdW5kIGZvciBzZWFjIG9uIFdpbmRvd3MuCihmdW5jdGlvbiBjaGVja1NlYWNTdXBwb3J0KCkgewogIGlmICgvV2luZG93cy8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSkgewogICAgU0VBQ19BTkFMWVNJU19FTkFCTEVEID0gdHJ1ZTsKICB9Cn0pKCk7CgovLyBXb3JrYXJvdW5kIGZvciBQcml2YXRlIFVzZSBBcmVhIGNoYXJhY3RlcnMgaW4gQ2hyb21lIG9uIFdpbmRvd3MKLy8gaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MTIyNDY1Ci8vIGh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL3BkZi5qcy9pc3N1ZXMvMTY4OQooZnVuY3Rpb24gY2hlY2tDaHJvbWVXaW5kb3dzKCkgewogIGlmICgvV2luZG93cy4qQ2hyb21lLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpKSB7CiAgICBTS0lQX1BSSVZBVEVfVVNFX1JBTkdFX0YwMDBfVE9fRjAxRiA9IHRydWU7CiAgfQp9KSgpOwoKCnZhciBGb250UmVuZGVyZXJGYWN0b3J5ID0gKGZ1bmN0aW9uIEZvbnRSZW5kZXJlckZhY3RvcnlDbG9zdXJlKCkgewogIGZ1bmN0aW9uIGdldExvbmcoZGF0YSwgb2Zmc2V0KSB7CiAgICByZXR1cm4gKGRhdGFbb2Zmc2V0XSA8PCAyNCkgfCAoZGF0YVtvZmZzZXQgKyAxXSA8PCAxNikgfAogICAgICAgICAgIChkYXRhW29mZnNldCArIDJdIDw8IDgpIHwgZGF0YVtvZmZzZXQgKyAzXTsKICB9CgogIGZ1bmN0aW9uIGdldFVzaG9ydChkYXRhLCBvZmZzZXQpIHsKICAgIHJldHVybiAoZGF0YVtvZmZzZXRdIDw8IDgpIHwgZGF0YVtvZmZzZXQgKyAxXTsKICB9CgogIGZ1bmN0aW9uIHBhcnNlQ21hcChkYXRhLCBzdGFydCwgZW5kKSB7CiAgICB2YXIgb2Zmc2V0ID0gKGdldFVzaG9ydChkYXRhLCBzdGFydCArIDIpID09PSAxID8KICAgICAgICAgICAgICAgICAgZ2V0TG9uZyhkYXRhLCBzdGFydCArIDgpIDogZ2V0TG9uZyhkYXRhLCBzdGFydCArIDE2KSk7CiAgICB2YXIgZm9ybWF0ID0gZ2V0VXNob3J0KGRhdGEsIHN0YXJ0ICsgb2Zmc2V0KTsKICAgIHZhciBsZW5ndGgsIHJhbmdlcywgcCwgaTsKICAgIGlmIChmb3JtYXQgPT09IDQpIHsKICAgICAgbGVuZ3RoID0gZ2V0VXNob3J0KGRhdGEsIHN0YXJ0ICsgb2Zmc2V0ICsgMik7CiAgICAgIHZhciBzZWdDb3VudCA9IGdldFVzaG9ydChkYXRhLCBzdGFydCArIG9mZnNldCArIDYpID4+IDE7CiAgICAgIHAgPSBzdGFydCArIG9mZnNldCArIDE0OwogICAgICByYW5nZXMgPSBbXTsKICAgICAgZm9yIChpID0gMDsgaSA8IHNlZ0NvdW50OyBpKyssIHAgKz0gMikgewogICAgICAgIHJhbmdlc1tpXSA9IHtlbmQ6IGdldFVzaG9ydChkYXRhLCBwKX07CiAgICAgIH0KICAgICAgcCArPSAyOwogICAgICBmb3IgKGkgPSAwOyBpIDwgc2VnQ291bnQ7IGkrKywgcCArPSAyKSB7CiAgICAgICAgcmFuZ2VzW2ldLnN0YXJ0ID0gZ2V0VXNob3J0KGRhdGEsIHApOwogICAgICB9CiAgICAgIGZvciAoaSA9IDA7IGkgPCBzZWdDb3VudDsgaSsrLCBwICs9IDIpIHsKICAgICAgICByYW5nZXNbaV0uaWREZWx0YSA9IGdldFVzaG9ydChkYXRhLCBwKTsKICAgICAgfQogICAgICBmb3IgKGkgPSAwOyBpIDwgc2VnQ291bnQ7IGkrKywgcCArPSAyKSB7CiAgICAgICAgdmFyIGlkT2Zmc2V0ID0gZ2V0VXNob3J0KGRhdGEsIHApOwogICAgICAgIGlmIChpZE9mZnNldCA9PT0gMCkgewogICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIHJhbmdlc1tpXS5pZHMgPSBbXTsKICAgICAgICBmb3IgKHZhciBqID0gMCwgamogPSByYW5nZXNbaV0uZW5kIC0gcmFuZ2VzW2ldLnN0YXJ0ICsgMTsgaiA8IGpqOyBqKyspIHsKICAgICAgICAgIHJhbmdlc1tpXS5pZHNbal0gPSBnZXRVc2hvcnQoZGF0YSwgcCArIGlkT2Zmc2V0KTsKICAgICAgICAgIGlkT2Zmc2V0ICs9IDI7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiByYW5nZXM7CiAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PT0gMTIpIHsKICAgICAgbGVuZ3RoID0gZ2V0TG9uZyhkYXRhLCBzdGFydCArIG9mZnNldCArIDQpOwogICAgICB2YXIgZ3JvdXBzID0gZ2V0TG9uZyhkYXRhLCBzdGFydCArIG9mZnNldCArIDEyKTsKICAgICAgcCA9IHN0YXJ0ICsgb2Zmc2V0ICsgMTY7CiAgICAgIHJhbmdlcyA9IFtdOwogICAgICBmb3IgKGkgPSAwOyBpIDwgZ3JvdXBzOyBpKyspIHsKICAgICAgICByYW5nZXMucHVzaCh7CiAgICAgICAgICBzdGFydDogZ2V0TG9uZyhkYXRhLCBwKSwKICAgICAgICAgIGVuZDogZ2V0TG9uZyhkYXRhLCBwICsgNCksCiAgICAgICAgICBpZERlbHRhOiBnZXRMb25nKGRhdGEsIHAgKyA4KSAtIGdldExvbmcoZGF0YSwgcCkKICAgICAgICB9KTsKICAgICAgICBwICs9IDEyOwogICAgICB9CiAgICAgIHJldHVybiByYW5nZXM7CiAgICB9CiAgICBlcnJvcignbm90IHN1cHBvcnRlZCBjbWFwOiAnICsgZm9ybWF0KTsKICB9CgogIGZ1bmN0aW9uIHBhcnNlQ2ZmKGRhdGEsIHN0YXJ0LCBlbmQpIHsKICAgIHZhciBwcm9wZXJ0aWVzID0ge307CiAgICB2YXIgcGFyc2VyID0gbmV3IENGRlBhcnNlcihuZXcgU3RyZWFtKGRhdGEsIHN0YXJ0LCBlbmQgLSBzdGFydCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzKTsKICAgIHZhciBjZmYgPSBwYXJzZXIucGFyc2UoKTsKICAgIHJldHVybiB7CiAgICAgIGdseXBoczogY2ZmLmNoYXJTdHJpbmdzLm9iamVjdHMsCiAgICAgIHN1YnJzOiAoY2ZmLnRvcERpY3QucHJpdmF0ZURpY3QgJiYgY2ZmLnRvcERpY3QucHJpdmF0ZURpY3Quc3VicnNJbmRleCAmJgogICAgICAgICAgICAgIGNmZi50b3BEaWN0LnByaXZhdGVEaWN0LnN1YnJzSW5kZXgub2JqZWN0cyksCiAgICAgIGdzdWJyczogY2ZmLmdsb2JhbFN1YnJJbmRleCAmJiBjZmYuZ2xvYmFsU3VickluZGV4Lm9iamVjdHMKICAgIH07CiAgfQoKICBmdW5jdGlvbiBwYXJzZUdseWZUYWJsZShnbHlmLCBsb2NhLCBpc0dseXBoTG9jYXRpb25zTG9uZykgewogICAgdmFyIGl0ZW1TaXplLCBpdGVtRGVjb2RlOwogICAgaWYgKGlzR2x5cGhMb2NhdGlvbnNMb25nKSB7CiAgICAgIGl0ZW1TaXplID0gNDsKICAgICAgaXRlbURlY29kZSA9IGZ1bmN0aW9uIGZvbnRJdGVtRGVjb2RlTG9uZyhkYXRhLCBvZmZzZXQpIHsKICAgICAgICByZXR1cm4gKGRhdGFbb2Zmc2V0XSA8PCAyNCkgfCAoZGF0YVtvZmZzZXQgKyAxXSA8PCAxNikgfAogICAgICAgICAgICAgICAoZGF0YVtvZmZzZXQgKyAyXSA8PCA4KSB8IGRhdGFbb2Zmc2V0ICsgM107CiAgICAgIH07CiAgICB9IGVsc2UgewogICAgICBpdGVtU2l6ZSA9IDI7CiAgICAgIGl0ZW1EZWNvZGUgPSBmdW5jdGlvbiBmb250SXRlbURlY29kZShkYXRhLCBvZmZzZXQpIHsKICAgICAgICByZXR1cm4gKGRhdGFbb2Zmc2V0XSA8PCA5KSB8IChkYXRhW29mZnNldCArIDFdIDw8IDEpOwogICAgICB9OwogICAgfQogICAgdmFyIGdseXBocyA9IFtdOwogICAgdmFyIHN0YXJ0T2Zmc2V0ID0gaXRlbURlY29kZShsb2NhLCAwKTsKICAgIGZvciAodmFyIGogPSBpdGVtU2l6ZTsgaiA8IGxvY2EubGVuZ3RoOyBqICs9IGl0ZW1TaXplKSB7CiAgICAgIHZhciBlbmRPZmZzZXQgPSBpdGVtRGVjb2RlKGxvY2EsIGopOwogICAgICBnbHlwaHMucHVzaChnbHlmLnN1YmFycmF5KHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpKTsKICAgICAgc3RhcnRPZmZzZXQgPSBlbmRPZmZzZXQ7CiAgICB9CiAgICByZXR1cm4gZ2x5cGhzOwogIH0KCiAgZnVuY3Rpb24gbG9va3VwQ21hcChyYW5nZXMsIHVuaWNvZGUpIHsKICAgIHZhciBjb2RlID0gdW5pY29kZS5jaGFyQ29kZUF0KDApOwogICAgdmFyIGwgPSAwLCByID0gcmFuZ2VzLmxlbmd0aCAtIDE7CiAgICB3aGlsZSAobCA8IHIpIHsKICAgICAgdmFyIGMgPSAobCArIHIgKyAxKSA+PiAxOwogICAgICBpZiAoY29kZSA8IHJhbmdlc1tjXS5zdGFydCkgewogICAgICAgIHIgPSBjIC0gMTsKICAgICAgfSBlbHNlIHsKICAgICAgICBsID0gYzsKICAgICAgfQogICAgfQogICAgaWYgKHJhbmdlc1tsXS5zdGFydCA8PSBjb2RlICYmIGNvZGUgPD0gcmFuZ2VzW2xdLmVuZCkgewogICAgICByZXR1cm4gKHJhbmdlc1tsXS5pZERlbHRhICsgKHJhbmdlc1tsXS5pZHMgPwogICAgICAgIHJhbmdlc1tsXS5pZHNbY29kZSAtIHJhbmdlc1tsXS5zdGFydF0gOiBjb2RlKSkgJiAweEZGRkY7CiAgICB9CiAgICByZXR1cm4gMDsKICB9CgogIGZ1bmN0aW9uIGNvbXBpbGVHbHlmKGNvZGUsIGpzLCBmb250KSB7CiAgICBmdW5jdGlvbiBtb3ZlVG8oeCwgeSkgewogICAgICBqcy5wdXNoKCdjLm1vdmVUbygnICsgeCArICcsJyArIHkgKyAnKTsnKTsKICAgIH0KICAgIGZ1bmN0aW9uIGxpbmVUbyh4LCB5KSB7CiAgICAgIGpzLnB1c2goJ2MubGluZVRvKCcgKyB4ICsgJywnICsgeSArICcpOycpOwogICAgfQogICAgZnVuY3Rpb24gcXVhZHJhdGljQ3VydmVUbyh4YSwgeWEsIHgsIHkpIHsKICAgICAganMucHVzaCgnYy5xdWFkcmF0aWNDdXJ2ZVRvKCcgKyB4YSArICcsJyArIHlhICsgJywnICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ICsgJywnICsgeSArICcpOycpOwogICAgfQoKICAgIHZhciBpID0gMDsKICAgIHZhciBudW1iZXJPZkNvbnRvdXJzID0gKChjb2RlW2ldIDw8IDI0KSB8IChjb2RlW2kgKyAxXSA8PCAxNikpID4+IDE2OwogICAgdmFyIGZsYWdzOwogICAgdmFyIHggPSAwLCB5ID0gMDsKICAgIGkgKz0gMTA7CiAgICBpZiAobnVtYmVyT2ZDb250b3VycyA8IDApIHsKICAgICAgLy8gY29tcG9zaXRlIGdseXBoCiAgICAgIGRvIHsKICAgICAgICBmbGFncyA9IChjb2RlW2ldIDw8IDgpIHwgY29kZVtpICsgMV07CiAgICAgICAgdmFyIGdseXBoSW5kZXggPSAoY29kZVtpICsgMl0gPDwgOCkgfCBjb2RlW2kgKyAzXTsKICAgICAgICBpICs9IDQ7CiAgICAgICAgdmFyIGFyZzEsIGFyZzI7CiAgICAgICAgaWYgKChmbGFncyAmIDB4MDEpKSB7CiAgICAgICAgICBhcmcxID0gKChjb2RlW2ldIDw8IDI0KSB8IChjb2RlW2kgKyAxXSA8PCAxNikpID4+IDE2OwogICAgICAgICAgYXJnMiA9ICgoY29kZVtpICsgMl0gPDwgMjQpIHwgKGNvZGVbaSArIDNdIDw8IDE2KSkgPj4gMTY7CiAgICAgICAgICBpICs9IDQ7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGFyZzEgPSBjb2RlW2krK107IGFyZzIgPSBjb2RlW2krK107CiAgICAgICAgfQogICAgICAgIGlmICgoZmxhZ3MgJiAweDAyKSkgewogICAgICAgICAgIHggPSBhcmcxOwogICAgICAgICAgIHkgPSBhcmcyOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgeCA9IDA7IHkgPSAwOyAvLyBUT0RPICJ0aGV5IGFyZSBwb2ludHMiID8KICAgICAgICB9CiAgICAgICAgdmFyIHNjYWxlWCA9IDEsIHNjYWxlWSA9IDEsIHNjYWxlMDEgPSAwLCBzY2FsZTEwID0gMDsKICAgICAgICBpZiAoKGZsYWdzICYgMHgwOCkpIHsKICAgICAgICAgIHNjYWxlWCA9CiAgICAgICAgICBzY2FsZVkgPSAoKGNvZGVbaV0gPDwgMjQpIHwgKGNvZGVbaSArIDFdIDw8IDE2KSkgLyAxMDczNzQxODI0OwogICAgICAgICAgaSArPSAyOwogICAgICAgIH0gZWxzZSBpZiAoKGZsYWdzICYgMHg0MCkpIHsKICAgICAgICAgIHNjYWxlWCA9ICgoY29kZVtpXSA8PCAyNCkgfCAoY29kZVtpICsgMV0gPDwgMTYpKSAvIDEwNzM3NDE4MjQ7CiAgICAgICAgICBzY2FsZVkgPSAoKGNvZGVbaSArIDJdIDw8IDI0KSB8IChjb2RlW2kgKyAzXSA8PCAxNikpIC8gMTA3Mzc0MTgyNDsKICAgICAgICAgIGkgKz0gNDsKICAgICAgICB9IGVsc2UgaWYgKChmbGFncyAmIDB4ODApKSB7CiAgICAgICAgICBzY2FsZVggPSAoKGNvZGVbaV0gPDwgMjQpIHwgKGNvZGVbaSArIDFdIDw8IDE2KSkgLyAxMDczNzQxODI0OwogICAgICAgICAgc2NhbGUwMSA9ICgoY29kZVtpICsgMl0gPDwgMjQpIHwgKGNvZGVbaSArIDNdIDw8IDE2KSkgLyAxMDczNzQxODI0OwogICAgICAgICAgc2NhbGUxMCA9ICgoY29kZVtpICsgNF0gPDwgMjQpIHwgKGNvZGVbaSArIDVdIDw8IDE2KSkgLyAxMDczNzQxODI0OwogICAgICAgICAgc2NhbGVZID0gKChjb2RlW2kgKyA2XSA8PCAyNCkgfCAoY29kZVtpICsgN10gPDwgMTYpKSAvIDEwNzM3NDE4MjQ7CiAgICAgICAgICBpICs9IDg7CiAgICAgICAgfQogICAgICAgIHZhciBzdWJnbHlwaCA9IGZvbnQuZ2x5cGhzW2dseXBoSW5kZXhdOwogICAgICAgIGlmIChzdWJnbHlwaCkgewogICAgICAgICAganMucHVzaCgnYy5zYXZlKCk7Jyk7CiAgICAgICAgICBqcy5wdXNoKCdjLnRyYW5zZm9ybSgnICsgc2NhbGVYICsgJywnICsgc2NhbGUwMSArICcsJyArCiAgICAgICAgICAgICAgICAgIHNjYWxlMTAgKyAnLCcgKyBzY2FsZVkgKyAnLCcgKyB4ICsgJywnICsgeSArICcpOycpOwogICAgICAgICAgY29tcGlsZUdseWYoc3ViZ2x5cGgsIGpzLCBmb250KTsKICAgICAgICAgIGpzLnB1c2goJ2MucmVzdG9yZSgpOycpOwogICAgICAgIH0KICAgICAgfSB3aGlsZSAoKGZsYWdzICYgMHgyMCkpOwogICAgfSBlbHNlIHsKICAgICAgLy8gc2ltcGxlIGdseXBoCiAgICAgIHZhciBlbmRQdHNPZkNvbnRvdXJzID0gW107CiAgICAgIHZhciBqLCBqajsKICAgICAgZm9yIChqID0gMDsgaiA8IG51bWJlck9mQ29udG91cnM7IGorKykgewogICAgICAgIGVuZFB0c09mQ29udG91cnMucHVzaCgoY29kZVtpXSA8PCA4KSB8IGNvZGVbaSArIDFdKTsKICAgICAgICBpICs9IDI7CiAgICAgIH0KICAgICAgdmFyIGluc3RydWN0aW9uTGVuZ3RoID0gKGNvZGVbaV0gPDwgOCkgfCBjb2RlW2kgKyAxXTsKICAgICAgaSArPSAyICsgaW5zdHJ1Y3Rpb25MZW5ndGg7IC8vIHNraXBwaW5nIHRoZSBpbnN0cnVjdGlvbnMKICAgICAgdmFyIG51bWJlck9mUG9pbnRzID0gZW5kUHRzT2ZDb250b3Vyc1tlbmRQdHNPZkNvbnRvdXJzLmxlbmd0aCAtIDFdICsgMTsKICAgICAgdmFyIHBvaW50cyA9IFtdOwogICAgICB3aGlsZSAocG9pbnRzLmxlbmd0aCA8IG51bWJlck9mUG9pbnRzKSB7CiAgICAgICAgZmxhZ3MgPSBjb2RlW2krK107CiAgICAgICAgdmFyIHJlcGVhdCA9IDE7CiAgICAgICAgaWYgKChmbGFncyAmIDB4MDgpKSB7CiAgICAgICAgICByZXBlYXQgKz0gY29kZVtpKytdOwogICAgICAgIH0KICAgICAgICB3aGlsZSAocmVwZWF0LS0gPiAwKSB7CiAgICAgICAgICBwb2ludHMucHVzaCh7ZmxhZ3M6IGZsYWdzfSk7CiAgICAgICAgfQogICAgICB9CiAgICAgIGZvciAoaiA9IDA7IGogPCBudW1iZXJPZlBvaW50czsgaisrKSB7CiAgICAgICAgc3dpdGNoIChwb2ludHNbal0uZmxhZ3MgJiAweDEyKSB7CiAgICAgICAgICBjYXNlIDB4MDA6CiAgICAgICAgICAgIHggKz0gKChjb2RlW2ldIDw8IDI0KSB8IChjb2RlW2kgKyAxXSA8PCAxNikpID4+IDE2OwogICAgICAgICAgICBpICs9IDI7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAweDAyOgogICAgICAgICAgICB4IC09IGNvZGVbaSsrXTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlIDB4MTI6CiAgICAgICAgICAgIHggKz0gY29kZVtpKytdOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgcG9pbnRzW2pdLnggPSB4OwogICAgICB9CiAgICAgIGZvciAoaiA9IDA7IGogPCBudW1iZXJPZlBvaW50czsgaisrKSB7CiAgICAgICAgc3dpdGNoIChwb2ludHNbal0uZmxhZ3MgJiAweDI0KSB7CiAgICAgICAgICBjYXNlIDB4MDA6CiAgICAgICAgICAgIHkgKz0gKChjb2RlW2ldIDw8IDI0KSB8IChjb2RlW2kgKyAxXSA8PCAxNikpID4+IDE2OwogICAgICAgICAgICBpICs9IDI7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAweDA0OgogICAgICAgICAgICB5IC09IGNvZGVbaSsrXTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlIDB4MjQ6CiAgICAgICAgICAgIHkgKz0gY29kZVtpKytdOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgcG9pbnRzW2pdLnkgPSB5OwogICAgICB9CgogICAgICB2YXIgc3RhcnRQb2ludCA9IDA7CiAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1iZXJPZkNvbnRvdXJzOyBpKyspIHsKICAgICAgICB2YXIgZW5kUG9pbnQgPSBlbmRQdHNPZkNvbnRvdXJzW2ldOwogICAgICAgIC8vIGNvbnRvdXJzIG1pZ2h0IGhhdmUgaW1wbGljaXQgcG9pbnRzLCB3aGljaCBpcyBsb2NhdGVkIGluIHRoZSBtaWRkbGUKICAgICAgICAvLyBiZXR3ZWVuIHR3byBuZWlnaGJvcmluZyBvZmYtY3VydmUgcG9pbnRzCiAgICAgICAgdmFyIGNvbnRvdXIgPSBwb2ludHMuc2xpY2Uoc3RhcnRQb2ludCwgZW5kUG9pbnQgKyAxKTsKICAgICAgICBpZiAoKGNvbnRvdXJbMF0uZmxhZ3MgJiAxKSkgewogICAgICAgICAgY29udG91ci5wdXNoKGNvbnRvdXJbMF0pOyAvLyB1c2luZyBzdGFydCBwb2ludCBhdCB0aGUgY29udG91ciBlbmQKICAgICAgICB9IGVsc2UgaWYgKChjb250b3VyW2NvbnRvdXIubGVuZ3RoIC0gMV0uZmxhZ3MgJiAxKSkgewogICAgICAgICAgLy8gZmlyc3QgaXMgb2ZmLWN1cnZlIHBvaW50LCB0cnlpbmcgdG8gdXNlIG9uZSBmcm9tIHRoZSBlbmQKICAgICAgICAgIGNvbnRvdXIudW5zaGlmdChjb250b3VyW2NvbnRvdXIubGVuZ3RoIC0gMV0pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAvLyBzdGFydCBhbmQgZW5kIGFyZSBvZmYtY3VydmUgcG9pbnRzLCBjcmVhdGluZyBpbXBsaWNpdCBvbmUKICAgICAgICAgIHZhciBwID0gewogICAgICAgICAgICBmbGFnczogMSwKICAgICAgICAgICAgeDogKGNvbnRvdXJbMF0ueCArIGNvbnRvdXJbY29udG91ci5sZW5ndGggLSAxXS54KSAvIDIsCiAgICAgICAgICAgIHk6IChjb250b3VyWzBdLnkgKyBjb250b3VyW2NvbnRvdXIubGVuZ3RoIC0gMV0ueSkgLyAyCiAgICAgICAgICB9OwogICAgICAgICAgY29udG91ci51bnNoaWZ0KHApOwogICAgICAgICAgY29udG91ci5wdXNoKHApOwogICAgICAgIH0KICAgICAgICBtb3ZlVG8oY29udG91clswXS54LCBjb250b3VyWzBdLnkpOwogICAgICAgIGZvciAoaiA9IDEsIGpqID0gY29udG91ci5sZW5ndGg7IGogPCBqajsgaisrKSB7CiAgICAgICAgICBpZiAoKGNvbnRvdXJbal0uZmxhZ3MgJiAxKSkgewogICAgICAgICAgICBsaW5lVG8oY29udG91cltqXS54LCBjb250b3VyW2pdLnkpOwogICAgICAgICAgfSBlbHNlIGlmICgoY29udG91cltqICsgMV0uZmxhZ3MgJiAxKSl7CiAgICAgICAgICAgIHF1YWRyYXRpY0N1cnZlVG8oY29udG91cltqXS54LCBjb250b3VyW2pdLnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udG91cltqICsgMV0ueCwgY29udG91cltqICsgMV0ueSk7CiAgICAgICAgICAgIGorKzsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHF1YWRyYXRpY0N1cnZlVG8oY29udG91cltqXS54LCBjb250b3VyW2pdLnksCiAgICAgICAgICAgICAgKGNvbnRvdXJbal0ueCArIGNvbnRvdXJbaiArIDFdLngpIC8gMiwKICAgICAgICAgICAgICAoY29udG91cltqXS55ICsgY29udG91cltqICsgMV0ueSkgLyAyKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgc3RhcnRQb2ludCA9IGVuZFBvaW50ICsgMTsKICAgICAgfQogICAgfQogIH0KCiAgZnVuY3Rpb24gY29tcGlsZUNoYXJTdHJpbmcoY29kZSwganMsIGZvbnQpIHsKICAgIHZhciBzdGFjayA9IFtdOwogICAgdmFyIHggPSAwLCB5ID0gMDsKICAgIHZhciBzdGVtcyA9IDA7CgogICAgZnVuY3Rpb24gbW92ZVRvKHgsIHkpIHsKICAgICAganMucHVzaCgnYy5tb3ZlVG8oJyArIHggKyAnLCcgKyB5ICsgJyk7Jyk7CiAgICB9CiAgICBmdW5jdGlvbiBsaW5lVG8oeCwgeSkgewogICAgICBqcy5wdXNoKCdjLmxpbmVUbygnICsgeCArICcsJyArIHkgKyAnKTsnKTsKICAgIH0KICAgIGZ1bmN0aW9uIGJlemllckN1cnZlVG8oeDEsIHkxLCB4MiwgeTIsIHgsIHkpIHsKICAgICAganMucHVzaCgnYy5iZXppZXJDdXJ2ZVRvKCcgKyB4MSArICcsJyArIHkxICsgJywnICsgeDIgKyAnLCcgKyB5MiArICcsJyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCArICcsJyArIHkgKyAnKTsnKTsKICAgIH0KCiAgICBmdW5jdGlvbiBwYXJzZShjb2RlKSB7CiAgICAgIHZhciBpID0gMDsKICAgICAgd2hpbGUgKGkgPCBjb2RlLmxlbmd0aCkgewogICAgICAgIHZhciBzdGFja0NsZWFuID0gZmFsc2U7CiAgICAgICAgdmFyIHYgPSBjb2RlW2krK107CiAgICAgICAgdmFyIHhhLCB4YiwgeWEsIHliLCB5MSwgeTIsIHkzLCBuLCBzdWJyQ29kZTsKICAgICAgICBzd2l0Y2ggKHYpIHsKICAgICAgICAgIGNhc2UgMTogLy8gaHN0ZW0KICAgICAgICAgICAgc3RlbXMgKz0gc3RhY2subGVuZ3RoID4+IDE7CiAgICAgICAgICAgIHN0YWNrQ2xlYW4gPSB0cnVlOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgMzogLy8gdnN0ZW0KICAgICAgICAgICAgc3RlbXMgKz0gc3RhY2subGVuZ3RoID4+IDE7CiAgICAgICAgICAgIHN0YWNrQ2xlYW4gPSB0cnVlOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgNDogLy8gdm1vdmV0bwogICAgICAgICAgICB5ICs9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICBtb3ZlVG8oeCwgeSk7CiAgICAgICAgICAgIHN0YWNrQ2xlYW4gPSB0cnVlOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgNTogLy8gcmxpbmV0bwogICAgICAgICAgICB3aGlsZSAoc3RhY2subGVuZ3RoID4gMCkgewogICAgICAgICAgICAgIHggKz0gc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICB5ICs9IHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgbGluZVRvKHgsIHkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSA2OiAvLyBobGluZXRvCiAgICAgICAgICAgIHdoaWxlIChzdGFjay5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgeCArPSBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgIGxpbmVUbyh4LCB5KTsKICAgICAgICAgICAgICBpZiAoc3RhY2subGVuZ3RoID09PSAwKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgeSArPSBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgIGxpbmVUbyh4LCB5KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgNzogLy8gdmxpbmV0bwogICAgICAgICAgICB3aGlsZSAoc3RhY2subGVuZ3RoID4gMCkgewogICAgICAgICAgICAgIHkgKz0gc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICBsaW5lVG8oeCwgeSk7CiAgICAgICAgICAgICAgaWYgKHN0YWNrLmxlbmd0aCA9PT0gMCkgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHggKz0gc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICBsaW5lVG8oeCwgeSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlIDg6IC8vIHJyY3VydmV0bwogICAgICAgICAgICB3aGlsZSAoc3RhY2subGVuZ3RoID4gMCkgewogICAgICAgICAgICAgIHhhID0geCArIHN0YWNrLnNoaWZ0KCk7IHlhID0geSArIHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgeGIgPSB4YSArIHN0YWNrLnNoaWZ0KCk7IHliID0geWEgKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgIHggPSB4YiArIHN0YWNrLnNoaWZ0KCk7IHkgPSB5YiArIHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgYmV6aWVyQ3VydmVUbyh4YSwgeWEsIHhiLCB5YiwgeCwgeSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlIDEwOiAvLyBjYWxsc3VicgogICAgICAgICAgICBuID0gc3RhY2sucG9wKCkgKyBmb250LnN1YnJzQmlhczsKICAgICAgICAgICAgc3VickNvZGUgPSBmb250LnN1YnJzW25dOwogICAgICAgICAgICBpZiAoc3VickNvZGUpIHsKICAgICAgICAgICAgICBwYXJzZShzdWJyQ29kZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlIDExOiAvLyByZXR1cm4KICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgY2FzZSAxMjoKICAgICAgICAgICAgdiA9IGNvZGVbaSsrXTsKICAgICAgICAgICAgc3dpdGNoICh2KSB7CiAgICAgICAgICAgICAgY2FzZSAzNDogLy8gZmxleAogICAgICAgICAgICAgICAgeGEgPSB4ICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgIHhiID0geGEgKyBzdGFjay5zaGlmdCgpOyB5MSA9IHkgKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgICAgeCA9IHhiICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgIGJlemllckN1cnZlVG8oeGEsIHksIHhiLCB5MSwgeCwgeTEpOwogICAgICAgICAgICAgICAgeGEgPSB4ICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgIHhiID0geGEgKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgICAgeCA9IHhiICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgIGJlemllckN1cnZlVG8oeGEsIHkxLCB4YiwgeSwgeCwgeSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICBjYXNlIDM1OiAvLyBmbGV4CiAgICAgICAgICAgICAgICB4YSA9IHggKyBzdGFjay5zaGlmdCgpOyB5YSA9IHkgKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgICAgeGIgPSB4YSArIHN0YWNrLnNoaWZ0KCk7IHliID0geWEgKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgICAgeCA9IHhiICsgc3RhY2suc2hpZnQoKTsgeSA9IHliICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgIGJlemllckN1cnZlVG8oeGEsIHlhLCB4YiwgeWIsIHgsIHkpOwogICAgICAgICAgICAgICAgeGEgPSB4ICsgc3RhY2suc2hpZnQoKTsgeWEgPSB5ICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgIHhiID0geGEgKyBzdGFjay5zaGlmdCgpOyB5YiA9IHlhICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgIHggPSB4YiArIHN0YWNrLnNoaWZ0KCk7IHkgPSB5YiArIHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICBiZXppZXJDdXJ2ZVRvKHhhLCB5YSwgeGIsIHliLCB4LCB5KTsKICAgICAgICAgICAgICAgIHN0YWNrLnBvcCgpOyAvLyBmZAogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgY2FzZSAzNjogLy8gaGZsZXgxCiAgICAgICAgICAgICAgICB4YSA9IHggKyBzdGFjay5zaGlmdCgpOyB5MSA9IHkgKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgICAgeGIgPSB4YSArIHN0YWNrLnNoaWZ0KCk7IHkyID0geTEgKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgICAgeCA9IHhiICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgIGJlemllckN1cnZlVG8oeGEsIHkxLCB4YiwgeTIsIHgsIHkyKTsKICAgICAgICAgICAgICAgIHhhID0geCArIHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICB4YiA9IHhhICsgc3RhY2suc2hpZnQoKTsgeTMgPSB5MiArIHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICB4ID0geGIgKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgICAgYmV6aWVyQ3VydmVUbyh4YSwgeTIsIHhiLCB5MywgeCwgeSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICBjYXNlIDM3OiAvLyBmbGV4MQogICAgICAgICAgICAgICAgdmFyIHgwID0geCwgeTAgPSB5OwogICAgICAgICAgICAgICAgeGEgPSB4ICsgc3RhY2suc2hpZnQoKTsgeWEgPSB5ICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgIHhiID0geGEgKyBzdGFjay5zaGlmdCgpOyB5YiA9IHlhICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgIHggPSB4YiArIHN0YWNrLnNoaWZ0KCk7IHkgPSB5YiArIHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICBiZXppZXJDdXJ2ZVRvKHhhLCB5YSwgeGIsIHliLCB4LCB5KTsKICAgICAgICAgICAgICAgIHhhID0geCArIHN0YWNrLnNoaWZ0KCk7IHlhID0geSArIHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICB4YiA9IHhhICsgc3RhY2suc2hpZnQoKTsgeWIgPSB5YSArIHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICB4ID0geGI7IHkgPSB5YjsKICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyh4IC0geDApID4gTWF0aC5hYnMoeSAtIHkwKSkgewogICAgICAgICAgICAgICAgICB4ICs9IHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICB9IGVsc2UgIHsKICAgICAgICAgICAgICAgICAgeSArPSBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYmV6aWVyQ3VydmVUbyh4YSwgeWEsIHhiLCB5YiwgeCwgeSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgZXJyb3IoJ3Vua25vd24gb3BlcmF0b3I6IDEyICcgKyB2KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgMTQ6IC8vIGVuZGNoYXIKICAgICAgICAgICAgaWYgKHN0YWNrLmxlbmd0aCA+PSA0KSB7CiAgICAgICAgICAgICAgdmFyIGFjaGFyID0gc3RhY2sucG9wKCk7CiAgICAgICAgICAgICAgdmFyIGJjaGFyID0gc3RhY2sucG9wKCk7CiAgICAgICAgICAgICAgeSA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICAgIHggPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgICBqcy5wdXNoKCdjLnNhdmUoKTsnKTsKICAgICAgICAgICAgICBqcy5wdXNoKCdjLnRyYW5zbGF0ZSgnKyB4ICsgJywnICsgeSArICcpOycpOwogICAgICAgICAgICAgIHZhciBnaWQgPSBsb29rdXBDbWFwKGZvbnQuY21hcCwgU3RyaW5nLmZyb21DaGFyQ29kZSgKICAgICAgICAgICAgICAgIGZvbnQuZ2x5cGhOYW1lTWFwW0VuY29kaW5ncy5TdGFuZGFyZEVuY29kaW5nW2FjaGFyXV0pKTsKICAgICAgICAgICAgICBjb21waWxlQ2hhclN0cmluZyhmb250LmdseXBoc1tnaWRdLCBqcywgZm9udCk7CiAgICAgICAgICAgICAganMucHVzaCgnYy5yZXN0b3JlKCk7Jyk7CgogICAgICAgICAgICAgIGdpZCA9IGxvb2t1cENtYXAoZm9udC5jbWFwLCBTdHJpbmcuZnJvbUNoYXJDb2RlKAogICAgICAgICAgICAgICAgZm9udC5nbHlwaE5hbWVNYXBbRW5jb2RpbmdzLlN0YW5kYXJkRW5jb2RpbmdbYmNoYXJdXSkpOwogICAgICAgICAgICAgIGNvbXBpbGVDaGFyU3RyaW5nKGZvbnQuZ2x5cGhzW2dpZF0sIGpzLCBmb250KTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICBjYXNlIDE4OiAvLyBoc3RlbWhtCiAgICAgICAgICAgIHN0ZW1zICs9IHN0YWNrLmxlbmd0aCA+PiAxOwogICAgICAgICAgICBzdGFja0NsZWFuID0gdHJ1ZTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlIDE5OiAvLyBoaW50bWFzawogICAgICAgICAgICBzdGVtcyArPSBzdGFjay5sZW5ndGggPj4gMTsKICAgICAgICAgICAgaSArPSAoc3RlbXMgKyA3KSA+PiAzOwogICAgICAgICAgICBzdGFja0NsZWFuID0gdHJ1ZTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlIDIwOiAvLyBjbnRybWFzawogICAgICAgICAgICBzdGVtcyArPSBzdGFjay5sZW5ndGggPj4gMTsKICAgICAgICAgICAgaSArPSAoc3RlbXMgKyA3KSA+PiAzOwogICAgICAgICAgICBzdGFja0NsZWFuID0gdHJ1ZTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlIDIxOiAvLyBybW92ZXRvCiAgICAgICAgICAgIHkgKz0gc3RhY2sucG9wKCk7CiAgICAgICAgICAgIHggKz0gc3RhY2sucG9wKCk7CiAgICAgICAgICAgIG1vdmVUbyh4LCB5KTsKICAgICAgICAgICAgc3RhY2tDbGVhbiA9IHRydWU7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAyMjogLy8gaG1vdmV0bwogICAgICAgICAgICB4ICs9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICBtb3ZlVG8oeCwgeSk7CiAgICAgICAgICAgIHN0YWNrQ2xlYW4gPSB0cnVlOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgMjM6IC8vIHZzdGVtaG0KICAgICAgICAgICAgc3RlbXMgKz0gc3RhY2subGVuZ3RoID4+IDE7CiAgICAgICAgICAgIHN0YWNrQ2xlYW4gPSB0cnVlOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgMjQ6IC8vIHJjdXJ2ZWxpbmUKICAgICAgICAgICAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDIpIHsKICAgICAgICAgICAgICB4YSA9IHggKyBzdGFjay5zaGlmdCgpOyB5YSA9IHkgKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgIHhiID0geGEgKyBzdGFjay5zaGlmdCgpOyB5YiA9IHlhICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICB4ID0geGIgKyBzdGFjay5zaGlmdCgpOyB5ID0geWIgKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgIGJlemllckN1cnZlVG8oeGEsIHlhLCB4YiwgeWIsIHgsIHkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHggKz0gc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgeSArPSBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICBsaW5lVG8oeCwgeSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAyNTogLy8gcmxpbmVjdXJ2ZQogICAgICAgICAgICB3aGlsZSAoc3RhY2subGVuZ3RoID4gNikgewogICAgICAgICAgICAgIHggKz0gc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICB5ICs9IHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgbGluZVRvKHgsIHkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHhhID0geCArIHN0YWNrLnNoaWZ0KCk7IHlhID0geSArIHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgIHhiID0geGEgKyBzdGFjay5zaGlmdCgpOyB5YiA9IHlhICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgeCA9IHhiICsgc3RhY2suc2hpZnQoKTsgeSA9IHliICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgYmV6aWVyQ3VydmVUbyh4YSwgeWEsIHhiLCB5YiwgeCwgeSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAyNjogLy8gdnZjdXJ2ZXRvCiAgICAgICAgICAgIGlmIChzdGFjay5sZW5ndGggJSAyKSB7CiAgICAgICAgICAgICAgeCArPSBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHdoaWxlIChzdGFjay5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgeGEgPSB4OyB5YSA9IHkgKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgIHhiID0geGEgKyBzdGFjay5zaGlmdCgpOyB5YiA9IHlhICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICB4ID0geGI7IHkgPSB5YiArIHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgYmV6aWVyQ3VydmVUbyh4YSwgeWEsIHhiLCB5YiwgeCwgeSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlIDI3OiAvLyBoaGN1cnZldG8KICAgICAgICAgICAgaWYgKHN0YWNrLmxlbmd0aCAlIDIpIHsKICAgICAgICAgICAgICB5ICs9IHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICB4YSA9IHggKyBzdGFjay5zaGlmdCgpOyB5YSA9IHk7CiAgICAgICAgICAgICAgeGIgPSB4YSArIHN0YWNrLnNoaWZ0KCk7IHliID0geWEgKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgIHggPSB4YiArIHN0YWNrLnNoaWZ0KCk7IHkgPSB5YjsKICAgICAgICAgICAgICBiZXppZXJDdXJ2ZVRvKHhhLCB5YSwgeGIsIHliLCB4LCB5KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgMjg6CiAgICAgICAgICAgIHN0YWNrLnB1c2goKChjb2RlW2ldIDw8IDI0KSB8IChjb2RlW2kgKyAxXSA8PCAxNikpID4+IDE2KTsKICAgICAgICAgICAgaSArPSAyOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgMjk6IC8vIGNhbGxnc3VicgogICAgICAgICAgICBuID0gc3RhY2sucG9wKCkgKyBmb250LmdzdWJyc0JpYXM7CiAgICAgICAgICAgIHN1YnJDb2RlID0gZm9udC5nc3VicnNbbl07CiAgICAgICAgICAgIGlmIChzdWJyQ29kZSkgewogICAgICAgICAgICAgIHBhcnNlKHN1YnJDb2RlKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgMzA6IC8vIHZoY3VydmV0bwogICAgICAgICAgICB3aGlsZSAoc3RhY2subGVuZ3RoID4gMCkgewogICAgICAgICAgICAgIHhhID0geDsgeWEgPSB5ICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICB4YiA9IHhhICsgc3RhY2suc2hpZnQoKTsgeWIgPSB5YSArIHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgeCA9IHhiICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICB5ID0geWIgKyAoc3RhY2subGVuZ3RoID09PSAxID8gc3RhY2suc2hpZnQoKSA6IDApOwogICAgICAgICAgICAgIGJlemllckN1cnZlVG8oeGEsIHlhLCB4YiwgeWIsIHgsIHkpOwogICAgICAgICAgICAgIGlmIChzdGFjay5sZW5ndGggPT09IDApIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgeGEgPSB4ICsgc3RhY2suc2hpZnQoKTsgeWEgPSB5OwogICAgICAgICAgICAgIHhiID0geGEgKyBzdGFjay5zaGlmdCgpOyB5YiA9IHlhICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICB5ID0geWIgKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgIHggPSB4YiArIChzdGFjay5sZW5ndGggPT09IDEgPyBzdGFjay5zaGlmdCgpIDogMCk7CiAgICAgICAgICAgICAgYmV6aWVyQ3VydmVUbyh4YSwgeWEsIHhiLCB5YiwgeCwgeSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlIDMxOiAvLyBodmN1cnZldG8KICAgICAgICAgICAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICB4YSA9IHggKyBzdGFjay5zaGlmdCgpOyB5YSA9IHk7CiAgICAgICAgICAgICAgeGIgPSB4YSArIHN0YWNrLnNoaWZ0KCk7IHliID0geWEgKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgIHkgPSB5YiArIHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgeCA9IHhiICsgKHN0YWNrLmxlbmd0aCA9PT0gMSA/IHN0YWNrLnNoaWZ0KCkgOiAwKTsKICAgICAgICAgICAgICBiZXppZXJDdXJ2ZVRvKHhhLCB5YSwgeGIsIHliLCB4LCB5KTsKICAgICAgICAgICAgICBpZiAoc3RhY2subGVuZ3RoID09PSAwKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgIHhhID0geDsgeWEgPSB5ICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICB4YiA9IHhhICsgc3RhY2suc2hpZnQoKTsgeWIgPSB5YSArIHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgeCA9IHhiICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICB5ID0geWIgKyAoc3RhY2subGVuZ3RoID09PSAxID8gc3RhY2suc2hpZnQoKSA6IDApOwogICAgICAgICAgICAgIGJlemllckN1cnZlVG8oeGEsIHlhLCB4YiwgeWIsIHgsIHkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgaWYgKHYgPCAzMikgewogICAgICAgICAgICAgIGVycm9yKCd1bmtub3duIG9wZXJhdG9yOiAnICsgdik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHYgPCAyNDcpIHsKICAgICAgICAgICAgICBzdGFjay5wdXNoKHYgLSAxMzkpOwogICAgICAgICAgICB9IGVsc2UgaWYgKHYgPCAyNTEpIHsKICAgICAgICAgICAgICBzdGFjay5wdXNoKCh2IC0gMjQ3KSAqIDI1NiArIGNvZGVbaSsrXSArIDEwOCk7CiAgICAgICAgICAgIH0gZWxzZSBpZiAodiA8IDI1NSkgewogICAgICAgICAgICAgIHN0YWNrLnB1c2goLSh2IC0gMjUxKSAqIDI1NiAtIGNvZGVbaSsrXSAtIDEwOCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgc3RhY2sucHVzaCgoKGNvZGVbaV0gPDwgMjQpIHwgKGNvZGVbaSArIDFdIDw8IDE2KSB8CiAgICAgICAgICAgICAgICAgICAgICAgICAoY29kZVtpICsgMl0gPDwgOCkgfCBjb2RlW2kgKyAzXSkgLyA2NTUzNik7CiAgICAgICAgICAgICAgaSArPSA0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBpZiAoc3RhY2tDbGVhbikgewogICAgICAgICAgc3RhY2subGVuZ3RoID0gMDsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIHBhcnNlKGNvZGUpOwogIH0KCiAgdmFyIG5vb3AgPSAnJzsKCiAgZnVuY3Rpb24gQ29tcGlsZWRGb250KGZvbnRNYXRyaXgpIHsKICAgIHRoaXMuY29tcGlsZWRHbHlwaHMgPSB7fTsKICAgIHRoaXMuZm9udE1hdHJpeCA9IGZvbnRNYXRyaXg7CiAgfQogIENvbXBpbGVkRm9udC5wcm90b3R5cGUgPSB7CiAgICBnZXRQYXRoSnM6IGZ1bmN0aW9uICh1bmljb2RlKSB7CiAgICAgIHZhciBnaWQgPSBsb29rdXBDbWFwKHRoaXMuY21hcCwgdW5pY29kZSk7CiAgICAgIHZhciBmbiA9IHRoaXMuY29tcGlsZWRHbHlwaHNbZ2lkXTsKICAgICAgaWYgKCFmbikgewogICAgICAgIHRoaXMuY29tcGlsZWRHbHlwaHNbZ2lkXSA9IGZuID0gdGhpcy5jb21waWxlR2x5cGgodGhpcy5nbHlwaHNbZ2lkXSk7CiAgICAgIH0KICAgICAgcmV0dXJuIGZuOwogICAgfSwKCiAgICBjb21waWxlR2x5cGg6IGZ1bmN0aW9uIChjb2RlKSB7CiAgICAgIGlmICghY29kZSB8fCBjb2RlLmxlbmd0aCA9PT0gMCB8fCBjb2RlWzBdID09PSAxNCkgewogICAgICAgIHJldHVybiBub29wOwogICAgICB9CgogICAgICB2YXIganMgPSBbXTsKICAgICAganMucHVzaCgnYy5zYXZlKCk7Jyk7CiAgICAgIGpzLnB1c2goJ2MudHJhbnNmb3JtKCcgKyB0aGlzLmZvbnRNYXRyaXguam9pbignLCcpICsgJyk7Jyk7CiAgICAgIGpzLnB1c2goJ2Muc2NhbGUoc2l6ZSwgLXNpemUpOycpOwoKICAgICAgdGhpcy5jb21waWxlR2x5cGhJbXBsKGNvZGUsIGpzKTsKCiAgICAgIGpzLnB1c2goJ2MucmVzdG9yZSgpOycpOwoKICAgICAgcmV0dXJuIGpzLmpvaW4oJ1xuJyk7CiAgICB9LAoKICAgIGNvbXBpbGVHbHlwaEltcGw6IGZ1bmN0aW9uICgpIHsKICAgICAgZXJyb3IoJ0NoaWxkcmVuIGNsYXNzZXMgc2hvdWxkIGltcGxlbWVudCB0aGlzLicpOwogICAgfSwKCiAgICBoYXNCdWlsdFBhdGg6IGZ1bmN0aW9uICh1bmljb2RlKSB7CiAgICAgIHZhciBnaWQgPSBsb29rdXBDbWFwKHRoaXMuY21hcCwgdW5pY29kZSk7CiAgICAgIHJldHVybiBnaWQgaW4gdGhpcy5jb21waWxlZEdseXBoczsKICAgIH0KICB9OwoKICBmdW5jdGlvbiBUcnVlVHlwZUNvbXBpbGVkKGdseXBocywgY21hcCwgZm9udE1hdHJpeCkgewogICAgZm9udE1hdHJpeCA9IGZvbnRNYXRyaXggfHwgWzAuMDAwNDg4LCAwLCAwLCAwLjAwMDQ4OCwgMCwgMF07CiAgICBDb21waWxlZEZvbnQuY2FsbCh0aGlzLCBmb250TWF0cml4KTsKCiAgICB0aGlzLmdseXBocyA9IGdseXBoczsKICAgIHRoaXMuY21hcCA9IGNtYXA7CgogICAgdGhpcy5jb21waWxlZEdseXBocyA9IFtdOwogIH0KCiAgVXRpbC5pbmhlcml0KFRydWVUeXBlQ29tcGlsZWQsIENvbXBpbGVkRm9udCwgewogICAgY29tcGlsZUdseXBoSW1wbDogZnVuY3Rpb24gKGNvZGUsIGpzKSB7CiAgICAgIGNvbXBpbGVHbHlmKGNvZGUsIGpzLCB0aGlzKTsKICAgIH0KICB9KTsKCiAgZnVuY3Rpb24gVHlwZTJDb21waWxlZChjZmZJbmZvLCBjbWFwLCBmb250TWF0cml4LCBnbHlwaE5hbWVNYXApIHsKICAgIGZvbnRNYXRyaXggPSBmb250TWF0cml4IHx8IFswLjAwMSwgMCwgMCwgMC4wMDEsIDAsIDBdOwogICAgQ29tcGlsZWRGb250LmNhbGwodGhpcywgZm9udE1hdHJpeCk7CiAgICB0aGlzLmdseXBocyA9IGNmZkluZm8uZ2x5cGhzOwogICAgdGhpcy5nc3VicnMgPSBjZmZJbmZvLmdzdWJycyB8fCBbXTsKICAgIHRoaXMuc3VicnMgPSBjZmZJbmZvLnN1YnJzIHx8IFtdOwogICAgdGhpcy5jbWFwID0gY21hcDsKICAgIHRoaXMuZ2x5cGhOYW1lTWFwID0gZ2x5cGhOYW1lTWFwIHx8IEdseXBoc1VuaWNvZGU7CgogICAgdGhpcy5jb21waWxlZEdseXBocyA9IFtdOwogICAgdGhpcy5nc3VicnNCaWFzID0gKHRoaXMuZ3N1YnJzLmxlbmd0aCA8IDEyNDAgPwogICAgICAgICAgICAgICAgICAgICAgIDEwNyA6ICh0aGlzLmdzdWJycy5sZW5ndGggPCAzMzkwMCA/IDExMzEgOiAzMjc2OCkpOwogICAgdGhpcy5zdWJyc0JpYXMgPSAodGhpcy5zdWJycy5sZW5ndGggPCAxMjQwID8KICAgICAgICAgICAgICAgICAgICAgIDEwNyA6ICh0aGlzLnN1YnJzLmxlbmd0aCA8IDMzOTAwID8gMTEzMSA6IDMyNzY4KSk7CiAgfQoKICBVdGlsLmluaGVyaXQoVHlwZTJDb21waWxlZCwgQ29tcGlsZWRGb250LCB7CiAgICBjb21waWxlR2x5cGhJbXBsOiBmdW5jdGlvbiAoY29kZSwganMpIHsKICAgICAgY29tcGlsZUNoYXJTdHJpbmcoY29kZSwganMsIHRoaXMpOwogICAgfQogIH0pOwoKCiAgcmV0dXJuIHsKICAgIGNyZWF0ZTogZnVuY3Rpb24gRm9udFJlbmRlcmVyRmFjdG9yeV9jcmVhdGUoZm9udCkgewogICAgICB2YXIgZGF0YSA9IG5ldyBVaW50OEFycmF5KGZvbnQuZGF0YSk7CiAgICAgIHZhciBjbWFwLCBnbHlmLCBsb2NhLCBjZmYsIGluZGV4VG9Mb2NGb3JtYXQsIHVuaXRzUGVyRW07CiAgICAgIHZhciBudW1UYWJsZXMgPSBnZXRVc2hvcnQoZGF0YSwgNCk7CiAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gMTI7IGkgPCBudW1UYWJsZXM7IGkrKywgcCArPSAxNikgewogICAgICAgIHZhciB0YWcgPSBieXRlc1RvU3RyaW5nKGRhdGEuc3ViYXJyYXkocCwgcCArIDQpKTsKICAgICAgICB2YXIgb2Zmc2V0ID0gZ2V0TG9uZyhkYXRhLCBwICsgOCk7CiAgICAgICAgdmFyIGxlbmd0aCA9IGdldExvbmcoZGF0YSwgcCArIDEyKTsKICAgICAgICBzd2l0Y2ggKHRhZykgewogICAgICAgICAgY2FzZSAnY21hcCc6CiAgICAgICAgICAgIGNtYXAgPSBwYXJzZUNtYXAoZGF0YSwgb2Zmc2V0LCBvZmZzZXQgKyBsZW5ndGgpOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgJ2dseWYnOgogICAgICAgICAgICBnbHlmID0gZGF0YS5zdWJhcnJheShvZmZzZXQsIG9mZnNldCArIGxlbmd0aCk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAnbG9jYSc6CiAgICAgICAgICAgIGxvY2EgPSBkYXRhLnN1YmFycmF5KG9mZnNldCwgb2Zmc2V0ICsgbGVuZ3RoKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlICdoZWFkJzoKICAgICAgICAgICAgdW5pdHNQZXJFbSA9IGdldFVzaG9ydChkYXRhLCBvZmZzZXQgKyAxOCk7CiAgICAgICAgICAgIGluZGV4VG9Mb2NGb3JtYXQgPSBnZXRVc2hvcnQoZGF0YSwgb2Zmc2V0ICsgNTApOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgJ0NGRiAnOgogICAgICAgICAgICBjZmYgPSBwYXJzZUNmZihkYXRhLCBvZmZzZXQsIG9mZnNldCArIGxlbmd0aCk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgfQoKICAgICAgaWYgKGdseWYpIHsKICAgICAgICB2YXIgZm9udE1hdHJpeCA9ICghdW5pdHNQZXJFbSA/IGZvbnQuZm9udE1hdHJpeCA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgWzEgLyB1bml0c1BlckVtLCAwLCAwLCAxIC8gdW5pdHNQZXJFbSwgMCwgMF0pOwogICAgICAgIHJldHVybiBuZXcgVHJ1ZVR5cGVDb21waWxlZCgKICAgICAgICAgIHBhcnNlR2x5ZlRhYmxlKGdseWYsIGxvY2EsIGluZGV4VG9Mb2NGb3JtYXQpLCBjbWFwLCBmb250TWF0cml4KTsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gbmV3IFR5cGUyQ29tcGlsZWQoY2ZmLCBjbWFwLCBmb250LmZvbnRNYXRyaXgsIGZvbnQuZ2x5cGhOYW1lTWFwKTsKICAgICAgfQogICAgfQogIH07Cn0pKCk7CgoKdmFyIEdseXBoc1VuaWNvZGUgPSB7CiAgQTogMHgwMDQxLAogIEFFOiAweDAwQzYsCiAgQUVhY3V0ZTogMHgwMUZDLAogIEFFbWFjcm9uOiAweDAxRTIsCiAgQUVzbWFsbDogMHhGN0U2LAogIEFhY3V0ZTogMHgwMEMxLAogIEFhY3V0ZXNtYWxsOiAweEY3RTEsCiAgQWJyZXZlOiAweDAxMDIsCiAgQWJyZXZlYWN1dGU6IDB4MUVBRSwKICBBYnJldmVjeXJpbGxpYzogMHgwNEQwLAogIEFicmV2ZWRvdGJlbG93OiAweDFFQjYsCiAgQWJyZXZlZ3JhdmU6IDB4MUVCMCwKICBBYnJldmVob29rYWJvdmU6IDB4MUVCMiwKICBBYnJldmV0aWxkZTogMHgxRUI0LAogIEFjYXJvbjogMHgwMUNELAogIEFjaXJjbGU6IDB4MjRCNiwKICBBY2lyY3VtZmxleDogMHgwMEMyLAogIEFjaXJjdW1mbGV4YWN1dGU6IDB4MUVBNCwKICBBY2lyY3VtZmxleGRvdGJlbG93OiAweDFFQUMsCiAgQWNpcmN1bWZsZXhncmF2ZTogMHgxRUE2LAogIEFjaXJjdW1mbGV4aG9va2Fib3ZlOiAweDFFQTgsCiAgQWNpcmN1bWZsZXhzbWFsbDogMHhGN0UyLAogIEFjaXJjdW1mbGV4dGlsZGU6IDB4MUVBQSwKICBBY3V0ZTogMHhGNkM5LAogIEFjdXRlc21hbGw6IDB4RjdCNCwKICBBY3lyaWxsaWM6IDB4MDQxMCwKICBBZGJsZ3JhdmU6IDB4MDIwMCwKICBBZGllcmVzaXM6IDB4MDBDNCwKICBBZGllcmVzaXNjeXJpbGxpYzogMHgwNEQyLAogIEFkaWVyZXNpc21hY3JvbjogMHgwMURFLAogIEFkaWVyZXNpc3NtYWxsOiAweEY3RTQsCiAgQWRvdGJlbG93OiAweDFFQTAsCiAgQWRvdG1hY3JvbjogMHgwMUUwLAogIEFncmF2ZTogMHgwMEMwLAogIEFncmF2ZXNtYWxsOiAweEY3RTAsCiAgQWhvb2thYm92ZTogMHgxRUEyLAogIEFpZWN5cmlsbGljOiAweDA0RDQsCiAgQWludmVydGVkYnJldmU6IDB4MDIwMiwKICBBbHBoYTogMHgwMzkxLAogIEFscGhhdG9ub3M6IDB4MDM4NiwKICBBbWFjcm9uOiAweDAxMDAsCiAgQW1vbm9zcGFjZTogMHhGRjIxLAogIEFvZ29uZWs6IDB4MDEwNCwKICBBcmluZzogMHgwMEM1LAogIEFyaW5nYWN1dGU6IDB4MDFGQSwKICBBcmluZ2JlbG93OiAweDFFMDAsCiAgQXJpbmdzbWFsbDogMHhGN0U1LAogIEFzbWFsbDogMHhGNzYxLAogIEF0aWxkZTogMHgwMEMzLAogIEF0aWxkZXNtYWxsOiAweEY3RTMsCiAgQXliYXJtZW5pYW46IDB4MDUzMSwKICBCOiAweDAwNDIsCiAgQmNpcmNsZTogMHgyNEI3LAogIEJkb3RhY2NlbnQ6IDB4MUUwMiwKICBCZG90YmVsb3c6IDB4MUUwNCwKICBCZWN5cmlsbGljOiAweDA0MTEsCiAgQmVuYXJtZW5pYW46IDB4MDUzMiwKICBCZXRhOiAweDAzOTIsCiAgQmhvb2s6IDB4MDE4MSwKICBCbGluZWJlbG93OiAweDFFMDYsCiAgQm1vbm9zcGFjZTogMHhGRjIyLAogIEJyZXZlc21hbGw6IDB4RjZGNCwKICBCc21hbGw6IDB4Rjc2MiwKICBCdG9wYmFyOiAweDAxODIsCiAgQzogMHgwMDQzLAogIENhYXJtZW5pYW46IDB4MDUzRSwKICBDYWN1dGU6IDB4MDEwNiwKICBDYXJvbjogMHhGNkNBLAogIENhcm9uc21hbGw6IDB4RjZGNSwKICBDY2Fyb246IDB4MDEwQywKICBDY2VkaWxsYTogMHgwMEM3LAogIENjZWRpbGxhYWN1dGU6IDB4MUUwOCwKICBDY2VkaWxsYXNtYWxsOiAweEY3RTcsCiAgQ2NpcmNsZTogMHgyNEI4LAogIENjaXJjdW1mbGV4OiAweDAxMDgsCiAgQ2RvdDogMHgwMTBBLAogIENkb3RhY2NlbnQ6IDB4MDEwQSwKICBDZWRpbGxhc21hbGw6IDB4RjdCOCwKICBDaGFhcm1lbmlhbjogMHgwNTQ5LAogIENoZWFia2hhc2lhbmN5cmlsbGljOiAweDA0QkMsCiAgQ2hlY3lyaWxsaWM6IDB4MDQyNywKICBDaGVkZXNjZW5kZXJhYmtoYXNpYW5jeXJpbGxpYzogMHgwNEJFLAogIENoZWRlc2NlbmRlcmN5cmlsbGljOiAweDA0QjYsCiAgQ2hlZGllcmVzaXNjeXJpbGxpYzogMHgwNEY0LAogIENoZWhhcm1lbmlhbjogMHgwNTQzLAogIENoZWtoYWthc3NpYW5jeXJpbGxpYzogMHgwNENCLAogIENoZXZlcnRpY2Fsc3Ryb2tlY3lyaWxsaWM6IDB4MDRCOCwKICBDaGk6IDB4MDNBNywKICBDaG9vazogMHgwMTg3LAogIENpcmN1bWZsZXhzbWFsbDogMHhGNkY2LAogIENtb25vc3BhY2U6IDB4RkYyMywKICBDb2FybWVuaWFuOiAweDA1NTEsCiAgQ3NtYWxsOiAweEY3NjMsCiAgRDogMHgwMDQ0LAogIERaOiAweDAxRjEsCiAgRFpjYXJvbjogMHgwMUM0LAogIERhYXJtZW5pYW46IDB4MDUzNCwKICBEYWZyaWNhbjogMHgwMTg5LAogIERjYXJvbjogMHgwMTBFLAogIERjZWRpbGxhOiAweDFFMTAsCiAgRGNpcmNsZTogMHgyNEI5LAogIERjaXJjdW1mbGV4YmVsb3c6IDB4MUUxMiwKICBEY3JvYXQ6IDB4MDExMCwKICBEZG90YWNjZW50OiAweDFFMEEsCiAgRGRvdGJlbG93OiAweDFFMEMsCiAgRGVjeXJpbGxpYzogMHgwNDE0LAogIERlaWNvcHRpYzogMHgwM0VFLAogIERlbHRhOiAweDIyMDYsCiAgRGVsdGFncmVlazogMHgwMzk0LAogIERob29rOiAweDAxOEEsCiAgRGllcmVzaXM6IDB4RjZDQiwKICBEaWVyZXNpc0FjdXRlOiAweEY2Q0MsCiAgRGllcmVzaXNHcmF2ZTogMHhGNkNELAogIERpZXJlc2lzc21hbGw6IDB4RjdBOCwKICBEaWdhbW1hZ3JlZWs6IDB4MDNEQywKICBEamVjeXJpbGxpYzogMHgwNDAyLAogIERsaW5lYmVsb3c6IDB4MUUwRSwKICBEbW9ub3NwYWNlOiAweEZGMjQsCiAgRG90YWNjZW50c21hbGw6IDB4RjZGNywKICBEc2xhc2g6IDB4MDExMCwKICBEc21hbGw6IDB4Rjc2NCwKICBEdG9wYmFyOiAweDAxOEIsCiAgRHo6IDB4MDFGMiwKICBEemNhcm9uOiAweDAxQzUsCiAgRHplYWJraGFzaWFuY3lyaWxsaWM6IDB4MDRFMCwKICBEemVjeXJpbGxpYzogMHgwNDA1LAogIER6aGVjeXJpbGxpYzogMHgwNDBGLAogIEU6IDB4MDA0NSwKICBFYWN1dGU6IDB4MDBDOSwKICBFYWN1dGVzbWFsbDogMHhGN0U5LAogIEVicmV2ZTogMHgwMTE0LAogIEVjYXJvbjogMHgwMTFBLAogIEVjZWRpbGxhYnJldmU6IDB4MUUxQywKICBFY2hhcm1lbmlhbjogMHgwNTM1LAogIEVjaXJjbGU6IDB4MjRCQSwKICBFY2lyY3VtZmxleDogMHgwMENBLAogIEVjaXJjdW1mbGV4YWN1dGU6IDB4MUVCRSwKICBFY2lyY3VtZmxleGJlbG93OiAweDFFMTgsCiAgRWNpcmN1bWZsZXhkb3RiZWxvdzogMHgxRUM2LAogIEVjaXJjdW1mbGV4Z3JhdmU6IDB4MUVDMCwKICBFY2lyY3VtZmxleGhvb2thYm92ZTogMHgxRUMyLAogIEVjaXJjdW1mbGV4c21hbGw6IDB4RjdFQSwKICBFY2lyY3VtZmxleHRpbGRlOiAweDFFQzQsCiAgRWN5cmlsbGljOiAweDA0MDQsCiAgRWRibGdyYXZlOiAweDAyMDQsCiAgRWRpZXJlc2lzOiAweDAwQ0IsCiAgRWRpZXJlc2lzc21hbGw6IDB4RjdFQiwKICBFZG90OiAweDAxMTYsCiAgRWRvdGFjY2VudDogMHgwMTE2LAogIEVkb3RiZWxvdzogMHgxRUI4LAogIEVmY3lyaWxsaWM6IDB4MDQyNCwKICBFZ3JhdmU6IDB4MDBDOCwKICBFZ3JhdmVzbWFsbDogMHhGN0U4LAogIEVoYXJtZW5pYW46IDB4MDUzNywKICBFaG9va2Fib3ZlOiAweDFFQkEsCiAgRWlnaHRyb21hbjogMHgyMTY3LAogIEVpbnZlcnRlZGJyZXZlOiAweDAyMDYsCiAgRWlvdGlmaWVkY3lyaWxsaWM6IDB4MDQ2NCwKICBFbGN5cmlsbGljOiAweDA0MUIsCiAgRWxldmVucm9tYW46IDB4MjE2QSwKICBFbWFjcm9uOiAweDAxMTIsCiAgRW1hY3JvbmFjdXRlOiAweDFFMTYsCiAgRW1hY3JvbmdyYXZlOiAweDFFMTQsCiAgRW1jeXJpbGxpYzogMHgwNDFDLAogIEVtb25vc3BhY2U6IDB4RkYyNSwKICBFbmN5cmlsbGljOiAweDA0MUQsCiAgRW5kZXNjZW5kZXJjeXJpbGxpYzogMHgwNEEyLAogIEVuZzogMHgwMTRBLAogIEVuZ2hlY3lyaWxsaWM6IDB4MDRBNCwKICBFbmhvb2tjeXJpbGxpYzogMHgwNEM3LAogIEVvZ29uZWs6IDB4MDExOCwKICBFb3BlbjogMHgwMTkwLAogIEVwc2lsb246IDB4MDM5NSwKICBFcHNpbG9udG9ub3M6IDB4MDM4OCwKICBFcmN5cmlsbGljOiAweDA0MjAsCiAgRXJldmVyc2VkOiAweDAxOEUsCiAgRXJldmVyc2VkY3lyaWxsaWM6IDB4MDQyRCwKICBFc2N5cmlsbGljOiAweDA0MjEsCiAgRXNkZXNjZW5kZXJjeXJpbGxpYzogMHgwNEFBLAogIEVzaDogMHgwMUE5LAogIEVzbWFsbDogMHhGNzY1LAogIEV0YTogMHgwMzk3LAogIEV0YXJtZW5pYW46IDB4MDUzOCwKICBFdGF0b25vczogMHgwMzg5LAogIEV0aDogMHgwMEQwLAogIEV0aHNtYWxsOiAweEY3RjAsCiAgRXRpbGRlOiAweDFFQkMsCiAgRXRpbGRlYmVsb3c6IDB4MUUxQSwKICBFdXJvOiAweDIwQUMsCiAgRXpoOiAweDAxQjcsCiAgRXpoY2Fyb246IDB4MDFFRSwKICBFemhyZXZlcnNlZDogMHgwMUI4LAogIEY6IDB4MDA0NiwKICBGY2lyY2xlOiAweDI0QkIsCiAgRmRvdGFjY2VudDogMHgxRTFFLAogIEZlaGFybWVuaWFuOiAweDA1NTYsCiAgRmVpY29wdGljOiAweDAzRTQsCiAgRmhvb2s6IDB4MDE5MSwKICBGaXRhY3lyaWxsaWM6IDB4MDQ3MiwKICBGaXZlcm9tYW46IDB4MjE2NCwKICBGbW9ub3NwYWNlOiAweEZGMjYsCiAgRm91cnJvbWFuOiAweDIxNjMsCiAgRnNtYWxsOiAweEY3NjYsCiAgRzogMHgwMDQ3LAogIEdCc3F1YXJlOiAweDMzODcsCiAgR2FjdXRlOiAweDAxRjQsCiAgR2FtbWE6IDB4MDM5MywKICBHYW1tYWFmcmljYW46IDB4MDE5NCwKICBHYW5naWFjb3B0aWM6IDB4MDNFQSwKICBHYnJldmU6IDB4MDExRSwKICBHY2Fyb246IDB4MDFFNiwKICBHY2VkaWxsYTogMHgwMTIyLAogIEdjaXJjbGU6IDB4MjRCQywKICBHY2lyY3VtZmxleDogMHgwMTFDLAogIEdjb21tYWFjY2VudDogMHgwMTIyLAogIEdkb3Q6IDB4MDEyMCwKICBHZG90YWNjZW50OiAweDAxMjAsCiAgR2VjeXJpbGxpYzogMHgwNDEzLAogIEdoYWRhcm1lbmlhbjogMHgwNTQyLAogIEdoZW1pZGRsZWhvb2tjeXJpbGxpYzogMHgwNDk0LAogIEdoZXN0cm9rZWN5cmlsbGljOiAweDA0OTIsCiAgR2hldXB0dXJuY3lyaWxsaWM6IDB4MDQ5MCwKICBHaG9vazogMHgwMTkzLAogIEdpbWFybWVuaWFuOiAweDA1MzMsCiAgR2plY3lyaWxsaWM6IDB4MDQwMywKICBHbWFjcm9uOiAweDFFMjAsCiAgR21vbm9zcGFjZTogMHhGRjI3LAogIEdyYXZlOiAweEY2Q0UsCiAgR3JhdmVzbWFsbDogMHhGNzYwLAogIEdzbWFsbDogMHhGNzY3LAogIEdzbWFsbGhvb2s6IDB4MDI5QiwKICBHc3Ryb2tlOiAweDAxRTQsCiAgSDogMHgwMDQ4LAogIEgxODUzMzogMHgyNUNGLAogIEgxODU0MzogMHgyNUFBLAogIEgxODU1MTogMHgyNUFCLAogIEgyMjA3MzogMHgyNUExLAogIEhQc3F1YXJlOiAweDMzQ0IsCiAgSGFhYmtoYXNpYW5jeXJpbGxpYzogMHgwNEE4LAogIEhhZGVzY2VuZGVyY3lyaWxsaWM6IDB4MDRCMiwKICBIYXJkc2lnbmN5cmlsbGljOiAweDA0MkEsCiAgSGJhcjogMHgwMTI2LAogIEhicmV2ZWJlbG93OiAweDFFMkEsCiAgSGNlZGlsbGE6IDB4MUUyOCwKICBIY2lyY2xlOiAweDI0QkQsCiAgSGNpcmN1bWZsZXg6IDB4MDEyNCwKICBIZGllcmVzaXM6IDB4MUUyNiwKICBIZG90YWNjZW50OiAweDFFMjIsCiAgSGRvdGJlbG93OiAweDFFMjQsCiAgSG1vbm9zcGFjZTogMHhGRjI4LAogIEhvYXJtZW5pYW46IDB4MDU0MCwKICBIb3JpY29wdGljOiAweDAzRTgsCiAgSHNtYWxsOiAweEY3NjgsCiAgSHVuZ2FydW1sYXV0OiAweEY2Q0YsCiAgSHVuZ2FydW1sYXV0c21hbGw6IDB4RjZGOCwKICBIenNxdWFyZTogMHgzMzkwLAogIEk6IDB4MDA0OSwKICBJQWN5cmlsbGljOiAweDA0MkYsCiAgSUo6IDB4MDEzMiwKICBJVWN5cmlsbGljOiAweDA0MkUsCiAgSWFjdXRlOiAweDAwQ0QsCiAgSWFjdXRlc21hbGw6IDB4RjdFRCwKICBJYnJldmU6IDB4MDEyQywKICBJY2Fyb246IDB4MDFDRiwKICBJY2lyY2xlOiAweDI0QkUsCiAgSWNpcmN1bWZsZXg6IDB4MDBDRSwKICBJY2lyY3VtZmxleHNtYWxsOiAweEY3RUUsCiAgSWN5cmlsbGljOiAweDA0MDYsCiAgSWRibGdyYXZlOiAweDAyMDgsCiAgSWRpZXJlc2lzOiAweDAwQ0YsCiAgSWRpZXJlc2lzYWN1dGU6IDB4MUUyRSwKICBJZGllcmVzaXNjeXJpbGxpYzogMHgwNEU0LAogIElkaWVyZXNpc3NtYWxsOiAweEY3RUYsCiAgSWRvdDogMHgwMTMwLAogIElkb3RhY2NlbnQ6IDB4MDEzMCwKICBJZG90YmVsb3c6IDB4MUVDQSwKICBJZWJyZXZlY3lyaWxsaWM6IDB4MDRENiwKICBJZWN5cmlsbGljOiAweDA0MTUsCiAgSWZyYWt0dXI6IDB4MjExMSwKICBJZ3JhdmU6IDB4MDBDQywKICBJZ3JhdmVzbWFsbDogMHhGN0VDLAogIElob29rYWJvdmU6IDB4MUVDOCwKICBJaWN5cmlsbGljOiAweDA0MTgsCiAgSWludmVydGVkYnJldmU6IDB4MDIwQSwKICBJaXNob3J0Y3lyaWxsaWM6IDB4MDQxOSwKICBJbWFjcm9uOiAweDAxMkEsCiAgSW1hY3JvbmN5cmlsbGljOiAweDA0RTIsCiAgSW1vbm9zcGFjZTogMHhGRjI5LAogIEluaWFybWVuaWFuOiAweDA1M0IsCiAgSW9jeXJpbGxpYzogMHgwNDAxLAogIElvZ29uZWs6IDB4MDEyRSwKICBJb3RhOiAweDAzOTksCiAgSW90YWFmcmljYW46IDB4MDE5NiwKICBJb3RhZGllcmVzaXM6IDB4MDNBQSwKICBJb3RhdG9ub3M6IDB4MDM4QSwKICBJc21hbGw6IDB4Rjc2OSwKICBJc3Ryb2tlOiAweDAxOTcsCiAgSXRpbGRlOiAweDAxMjgsCiAgSXRpbGRlYmVsb3c6IDB4MUUyQywKICBJemhpdHNhY3lyaWxsaWM6IDB4MDQ3NCwKICBJemhpdHNhZGJsZ3JhdmVjeXJpbGxpYzogMHgwNDc2LAogIEo6IDB4MDA0QSwKICBKYWFybWVuaWFuOiAweDA1NDEsCiAgSmNpcmNsZTogMHgyNEJGLAogIEpjaXJjdW1mbGV4OiAweDAxMzQsCiAgSmVjeXJpbGxpYzogMHgwNDA4LAogIEpoZWhhcm1lbmlhbjogMHgwNTRCLAogIEptb25vc3BhY2U6IDB4RkYyQSwKICBKc21hbGw6IDB4Rjc2QSwKICBLOiAweDAwNEIsCiAgS0JzcXVhcmU6IDB4MzM4NSwKICBLS3NxdWFyZTogMHgzM0NELAogIEthYmFzaGtpcmN5cmlsbGljOiAweDA0QTAsCiAgS2FjdXRlOiAweDFFMzAsCiAgS2FjeXJpbGxpYzogMHgwNDFBLAogIEthZGVzY2VuZGVyY3lyaWxsaWM6IDB4MDQ5QSwKICBLYWhvb2tjeXJpbGxpYzogMHgwNEMzLAogIEthcHBhOiAweDAzOUEsCiAgS2FzdHJva2VjeXJpbGxpYzogMHgwNDlFLAogIEthdmVydGljYWxzdHJva2VjeXJpbGxpYzogMHgwNDlDLAogIEtjYXJvbjogMHgwMUU4LAogIEtjZWRpbGxhOiAweDAxMzYsCiAgS2NpcmNsZTogMHgyNEMwLAogIEtjb21tYWFjY2VudDogMHgwMTM2LAogIEtkb3RiZWxvdzogMHgxRTMyLAogIEtlaGFybWVuaWFuOiAweDA1NTQsCiAgS2VuYXJtZW5pYW46IDB4MDUzRiwKICBLaGFjeXJpbGxpYzogMHgwNDI1LAogIEtoZWljb3B0aWM6IDB4MDNFNiwKICBLaG9vazogMHgwMTk4LAogIEtqZWN5cmlsbGljOiAweDA0MEMsCiAgS2xpbmViZWxvdzogMHgxRTM0LAogIEttb25vc3BhY2U6IDB4RkYyQiwKICBLb3BwYWN5cmlsbGljOiAweDA0ODAsCiAgS29wcGFncmVlazogMHgwM0RFLAogIEtzaWN5cmlsbGljOiAweDA0NkUsCiAgS3NtYWxsOiAweEY3NkIsCiAgTDogMHgwMDRDLAogIExKOiAweDAxQzcsCiAgTEw6IDB4RjZCRiwKICBMYWN1dGU6IDB4MDEzOSwKICBMYW1iZGE6IDB4MDM5QiwKICBMY2Fyb246IDB4MDEzRCwKICBMY2VkaWxsYTogMHgwMTNCLAogIExjaXJjbGU6IDB4MjRDMSwKICBMY2lyY3VtZmxleGJlbG93OiAweDFFM0MsCiAgTGNvbW1hYWNjZW50OiAweDAxM0IsCiAgTGRvdDogMHgwMTNGLAogIExkb3RhY2NlbnQ6IDB4MDEzRiwKICBMZG90YmVsb3c6IDB4MUUzNiwKICBMZG90YmVsb3dtYWNyb246IDB4MUUzOCwKICBMaXduYXJtZW5pYW46IDB4MDUzQywKICBMajogMHgwMUM4LAogIExqZWN5cmlsbGljOiAweDA0MDksCiAgTGxpbmViZWxvdzogMHgxRTNBLAogIExtb25vc3BhY2U6IDB4RkYyQywKICBMc2xhc2g6IDB4MDE0MSwKICBMc2xhc2hzbWFsbDogMHhGNkY5LAogIExzbWFsbDogMHhGNzZDLAogIE06IDB4MDA0RCwKICBNQnNxdWFyZTogMHgzMzg2LAogIE1hY3JvbjogMHhGNkQwLAogIE1hY3JvbnNtYWxsOiAweEY3QUYsCiAgTWFjdXRlOiAweDFFM0UsCiAgTWNpcmNsZTogMHgyNEMyLAogIE1kb3RhY2NlbnQ6IDB4MUU0MCwKICBNZG90YmVsb3c6IDB4MUU0MiwKICBNZW5hcm1lbmlhbjogMHgwNTQ0LAogIE1tb25vc3BhY2U6IDB4RkYyRCwKICBNc21hbGw6IDB4Rjc2RCwKICBNdHVybmVkOiAweDAxOUMsCiAgTXU6IDB4MDM5QywKICBOOiAweDAwNEUsCiAgTko6IDB4MDFDQSwKICBOYWN1dGU6IDB4MDE0MywKICBOY2Fyb246IDB4MDE0NywKICBOY2VkaWxsYTogMHgwMTQ1LAogIE5jaXJjbGU6IDB4MjRDMywKICBOY2lyY3VtZmxleGJlbG93OiAweDFFNEEsCiAgTmNvbW1hYWNjZW50OiAweDAxNDUsCiAgTmRvdGFjY2VudDogMHgxRTQ0LAogIE5kb3RiZWxvdzogMHgxRTQ2LAogIE5ob29rbGVmdDogMHgwMTlELAogIE5pbmVyb21hbjogMHgyMTY4LAogIE5qOiAweDAxQ0IsCiAgTmplY3lyaWxsaWM6IDB4MDQwQSwKICBObGluZWJlbG93OiAweDFFNDgsCiAgTm1vbm9zcGFjZTogMHhGRjJFLAogIE5vd2FybWVuaWFuOiAweDA1NDYsCiAgTnNtYWxsOiAweEY3NkUsCiAgTnRpbGRlOiAweDAwRDEsCiAgTnRpbGRlc21hbGw6IDB4RjdGMSwKICBOdTogMHgwMzlELAogIE86IDB4MDA0RiwKICBPRTogMHgwMTUyLAogIE9Fc21hbGw6IDB4RjZGQSwKICBPYWN1dGU6IDB4MDBEMywKICBPYWN1dGVzbWFsbDogMHhGN0YzLAogIE9iYXJyZWRjeXJpbGxpYzogMHgwNEU4LAogIE9iYXJyZWRkaWVyZXNpc2N5cmlsbGljOiAweDA0RUEsCiAgT2JyZXZlOiAweDAxNEUsCiAgT2Nhcm9uOiAweDAxRDEsCiAgT2NlbnRlcmVkdGlsZGU6IDB4MDE5RiwKICBPY2lyY2xlOiAweDI0QzQsCiAgT2NpcmN1bWZsZXg6IDB4MDBENCwKICBPY2lyY3VtZmxleGFjdXRlOiAweDFFRDAsCiAgT2NpcmN1bWZsZXhkb3RiZWxvdzogMHgxRUQ4LAogIE9jaXJjdW1mbGV4Z3JhdmU6IDB4MUVEMiwKICBPY2lyY3VtZmxleGhvb2thYm92ZTogMHgxRUQ0LAogIE9jaXJjdW1mbGV4c21hbGw6IDB4RjdGNCwKICBPY2lyY3VtZmxleHRpbGRlOiAweDFFRDYsCiAgT2N5cmlsbGljOiAweDA0MUUsCiAgT2RibGFjdXRlOiAweDAxNTAsCiAgT2RibGdyYXZlOiAweDAyMEMsCiAgT2RpZXJlc2lzOiAweDAwRDYsCiAgT2RpZXJlc2lzY3lyaWxsaWM6IDB4MDRFNiwKICBPZGllcmVzaXNzbWFsbDogMHhGN0Y2LAogIE9kb3RiZWxvdzogMHgxRUNDLAogIE9nb25la3NtYWxsOiAweEY2RkIsCiAgT2dyYXZlOiAweDAwRDIsCiAgT2dyYXZlc21hbGw6IDB4RjdGMiwKICBPaGFybWVuaWFuOiAweDA1NTUsCiAgT2htOiAweDIxMjYsCiAgT2hvb2thYm92ZTogMHgxRUNFLAogIE9ob3JuOiAweDAxQTAsCiAgT2hvcm5hY3V0ZTogMHgxRURBLAogIE9ob3JuZG90YmVsb3c6IDB4MUVFMiwKICBPaG9ybmdyYXZlOiAweDFFREMsCiAgT2hvcm5ob29rYWJvdmU6IDB4MUVERSwKICBPaG9ybnRpbGRlOiAweDFFRTAsCiAgT2h1bmdhcnVtbGF1dDogMHgwMTUwLAogIE9pOiAweDAxQTIsCiAgT2ludmVydGVkYnJldmU6IDB4MDIwRSwKICBPbWFjcm9uOiAweDAxNEMsCiAgT21hY3JvbmFjdXRlOiAweDFFNTIsCiAgT21hY3JvbmdyYXZlOiAweDFFNTAsCiAgT21lZ2E6IDB4MjEyNiwKICBPbWVnYWN5cmlsbGljOiAweDA0NjAsCiAgT21lZ2FncmVlazogMHgwM0E5LAogIE9tZWdhcm91bmRjeXJpbGxpYzogMHgwNDdBLAogIE9tZWdhdGl0bG9jeXJpbGxpYzogMHgwNDdDLAogIE9tZWdhdG9ub3M6IDB4MDM4RiwKICBPbWljcm9uOiAweDAzOUYsCiAgT21pY3JvbnRvbm9zOiAweDAzOEMsCiAgT21vbm9zcGFjZTogMHhGRjJGLAogIE9uZXJvbWFuOiAweDIxNjAsCiAgT29nb25lazogMHgwMUVBLAogIE9vZ29uZWttYWNyb246IDB4MDFFQywKICBPb3BlbjogMHgwMTg2LAogIE9zbGFzaDogMHgwMEQ4LAogIE9zbGFzaGFjdXRlOiAweDAxRkUsCiAgT3NsYXNoc21hbGw6IDB4RjdGOCwKICBPc21hbGw6IDB4Rjc2RiwKICBPc3Ryb2tlYWN1dGU6IDB4MDFGRSwKICBPdGN5cmlsbGljOiAweDA0N0UsCiAgT3RpbGRlOiAweDAwRDUsCiAgT3RpbGRlYWN1dGU6IDB4MUU0QywKICBPdGlsZGVkaWVyZXNpczogMHgxRTRFLAogIE90aWxkZXNtYWxsOiAweEY3RjUsCiAgUDogMHgwMDUwLAogIFBhY3V0ZTogMHgxRTU0LAogIFBjaXJjbGU6IDB4MjRDNSwKICBQZG90YWNjZW50OiAweDFFNTYsCiAgUGVjeXJpbGxpYzogMHgwNDFGLAogIFBlaGFybWVuaWFuOiAweDA1NEEsCiAgUGVtaWRkbGVob29rY3lyaWxsaWM6IDB4MDRBNiwKICBQaGk6IDB4MDNBNiwKICBQaG9vazogMHgwMUE0LAogIFBpOiAweDAzQTAsCiAgUGl3cmFybWVuaWFuOiAweDA1NTMsCiAgUG1vbm9zcGFjZTogMHhGRjMwLAogIFBzaTogMHgwM0E4LAogIFBzaWN5cmlsbGljOiAweDA0NzAsCiAgUHNtYWxsOiAweEY3NzAsCiAgUTogMHgwMDUxLAogIFFjaXJjbGU6IDB4MjRDNiwKICBRbW9ub3NwYWNlOiAweEZGMzEsCiAgUXNtYWxsOiAweEY3NzEsCiAgUjogMHgwMDUyLAogIFJhYXJtZW5pYW46IDB4MDU0QywKICBSYWN1dGU6IDB4MDE1NCwKICBSY2Fyb246IDB4MDE1OCwKICBSY2VkaWxsYTogMHgwMTU2LAogIFJjaXJjbGU6IDB4MjRDNywKICBSY29tbWFhY2NlbnQ6IDB4MDE1NiwKICBSZGJsZ3JhdmU6IDB4MDIxMCwKICBSZG90YWNjZW50OiAweDFFNTgsCiAgUmRvdGJlbG93OiAweDFFNUEsCiAgUmRvdGJlbG93bWFjcm9uOiAweDFFNUMsCiAgUmVoYXJtZW5pYW46IDB4MDU1MCwKICBSZnJha3R1cjogMHgyMTFDLAogIFJobzogMHgwM0ExLAogIFJpbmdzbWFsbDogMHhGNkZDLAogIFJpbnZlcnRlZGJyZXZlOiAweDAyMTIsCiAgUmxpbmViZWxvdzogMHgxRTVFLAogIFJtb25vc3BhY2U6IDB4RkYzMiwKICBSc21hbGw6IDB4Rjc3MiwKICBSc21hbGxpbnZlcnRlZDogMHgwMjgxLAogIFJzbWFsbGludmVydGVkc3VwZXJpb3I6IDB4MDJCNiwKICBTOiAweDAwNTMsCiAgU0YwMTAwMDA6IDB4MjUwQywKICBTRjAyMDAwMDogMHgyNTE0LAogIFNGMDMwMDAwOiAweDI1MTAsCiAgU0YwNDAwMDA6IDB4MjUxOCwKICBTRjA1MDAwMDogMHgyNTNDLAogIFNGMDYwMDAwOiAweDI1MkMsCiAgU0YwNzAwMDA6IDB4MjUzNCwKICBTRjA4MDAwMDogMHgyNTFDLAogIFNGMDkwMDAwOiAweDI1MjQsCiAgU0YxMDAwMDA6IDB4MjUwMCwKICBTRjExMDAwMDogMHgyNTAyLAogIFNGMTkwMDAwOiAweDI1NjEsCiAgU0YyMDAwMDA6IDB4MjU2MiwKICBTRjIxMDAwMDogMHgyNTU2LAogIFNGMjIwMDAwOiAweDI1NTUsCiAgU0YyMzAwMDA6IDB4MjU2MywKICBTRjI0MDAwMDogMHgyNTUxLAogIFNGMjUwMDAwOiAweDI1NTcsCiAgU0YyNjAwMDA6IDB4MjU1RCwKICBTRjI3MDAwMDogMHgyNTVDLAogIFNGMjgwMDAwOiAweDI1NUIsCiAgU0YzNjAwMDA6IDB4MjU1RSwKICBTRjM3MDAwMDogMHgyNTVGLAogIFNGMzgwMDAwOiAweDI1NUEsCiAgU0YzOTAwMDA6IDB4MjU1NCwKICBTRjQwMDAwMDogMHgyNTY5LAogIFNGNDEwMDAwOiAweDI1NjYsCiAgU0Y0MjAwMDA6IDB4MjU2MCwKICBTRjQzMDAwMDogMHgyNTUwLAogIFNGNDQwMDAwOiAweDI1NkMsCiAgU0Y0NTAwMDA6IDB4MjU2NywKICBTRjQ2MDAwMDogMHgyNTY4LAogIFNGNDcwMDAwOiAweDI1NjQsCiAgU0Y0ODAwMDA6IDB4MjU2NSwKICBTRjQ5MDAwMDogMHgyNTU5LAogIFNGNTAwMDAwOiAweDI1NTgsCiAgU0Y1MTAwMDA6IDB4MjU1MiwKICBTRjUyMDAwMDogMHgyNTUzLAogIFNGNTMwMDAwOiAweDI1NkIsCiAgU0Y1NDAwMDA6IDB4MjU2QSwKICBTYWN1dGU6IDB4MDE1QSwKICBTYWN1dGVkb3RhY2NlbnQ6IDB4MUU2NCwKICBTYW1waWdyZWVrOiAweDAzRTAsCiAgU2Nhcm9uOiAweDAxNjAsCiAgU2Nhcm9uZG90YWNjZW50OiAweDFFNjYsCiAgU2Nhcm9uc21hbGw6IDB4RjZGRCwKICBTY2VkaWxsYTogMHgwMTVFLAogIFNjaHdhOiAweDAxOEYsCiAgU2Nod2FjeXJpbGxpYzogMHgwNEQ4LAogIFNjaHdhZGllcmVzaXNjeXJpbGxpYzogMHgwNERBLAogIFNjaXJjbGU6IDB4MjRDOCwKICBTY2lyY3VtZmxleDogMHgwMTVDLAogIFNjb21tYWFjY2VudDogMHgwMjE4LAogIFNkb3RhY2NlbnQ6IDB4MUU2MCwKICBTZG90YmVsb3c6IDB4MUU2MiwKICBTZG90YmVsb3dkb3RhY2NlbnQ6IDB4MUU2OCwKICBTZWhhcm1lbmlhbjogMHgwNTRELAogIFNldmVucm9tYW46IDB4MjE2NiwKICBTaGFhcm1lbmlhbjogMHgwNTQ3LAogIFNoYWN5cmlsbGljOiAweDA0MjgsCiAgU2hjaGFjeXJpbGxpYzogMHgwNDI5LAogIFNoZWljb3B0aWM6IDB4MDNFMiwKICBTaGhhY3lyaWxsaWM6IDB4MDRCQSwKICBTaGltYWNvcHRpYzogMHgwM0VDLAogIFNpZ21hOiAweDAzQTMsCiAgU2l4cm9tYW46IDB4MjE2NSwKICBTbW9ub3NwYWNlOiAweEZGMzMsCiAgU29mdHNpZ25jeXJpbGxpYzogMHgwNDJDLAogIFNzbWFsbDogMHhGNzczLAogIFN0aWdtYWdyZWVrOiAweDAzREEsCiAgVDogMHgwMDU0LAogIFRhdTogMHgwM0E0LAogIFRiYXI6IDB4MDE2NiwKICBUY2Fyb246IDB4MDE2NCwKICBUY2VkaWxsYTogMHgwMTYyLAogIFRjaXJjbGU6IDB4MjRDOSwKICBUY2lyY3VtZmxleGJlbG93OiAweDFFNzAsCiAgVGNvbW1hYWNjZW50OiAweDAxNjIsCiAgVGRvdGFjY2VudDogMHgxRTZBLAogIFRkb3RiZWxvdzogMHgxRTZDLAogIFRlY3lyaWxsaWM6IDB4MDQyMiwKICBUZWRlc2NlbmRlcmN5cmlsbGljOiAweDA0QUMsCiAgVGVucm9tYW46IDB4MjE2OSwKICBUZXRzZWN5cmlsbGljOiAweDA0QjQsCiAgVGhldGE6IDB4MDM5OCwKICBUaG9vazogMHgwMUFDLAogIFRob3JuOiAweDAwREUsCiAgVGhvcm5zbWFsbDogMHhGN0ZFLAogIFRocmVlcm9tYW46IDB4MjE2MiwKICBUaWxkZXNtYWxsOiAweEY2RkUsCiAgVGl3bmFybWVuaWFuOiAweDA1NEYsCiAgVGxpbmViZWxvdzogMHgxRTZFLAogIFRtb25vc3BhY2U6IDB4RkYzNCwKICBUb2FybWVuaWFuOiAweDA1MzksCiAgVG9uZWZpdmU6IDB4MDFCQywKICBUb25lc2l4OiAweDAxODQsCiAgVG9uZXR3bzogMHgwMUE3LAogIFRyZXRyb2ZsZXhob29rOiAweDAxQUUsCiAgVHNlY3lyaWxsaWM6IDB4MDQyNiwKICBUc2hlY3lyaWxsaWM6IDB4MDQwQiwKICBUc21hbGw6IDB4Rjc3NCwKICBUd2VsdmVyb21hbjogMHgyMTZCLAogIFR3b3JvbWFuOiAweDIxNjEsCiAgVTogMHgwMDU1LAogIFVhY3V0ZTogMHgwMERBLAogIFVhY3V0ZXNtYWxsOiAweEY3RkEsCiAgVWJyZXZlOiAweDAxNkMsCiAgVWNhcm9uOiAweDAxRDMsCiAgVWNpcmNsZTogMHgyNENBLAogIFVjaXJjdW1mbGV4OiAweDAwREIsCiAgVWNpcmN1bWZsZXhiZWxvdzogMHgxRTc2LAogIFVjaXJjdW1mbGV4c21hbGw6IDB4RjdGQiwKICBVY3lyaWxsaWM6IDB4MDQyMywKICBVZGJsYWN1dGU6IDB4MDE3MCwKICBVZGJsZ3JhdmU6IDB4MDIxNCwKICBVZGllcmVzaXM6IDB4MDBEQywKICBVZGllcmVzaXNhY3V0ZTogMHgwMUQ3LAogIFVkaWVyZXNpc2JlbG93OiAweDFFNzIsCiAgVWRpZXJlc2lzY2Fyb246IDB4MDFEOSwKICBVZGllcmVzaXNjeXJpbGxpYzogMHgwNEYwLAogIFVkaWVyZXNpc2dyYXZlOiAweDAxREIsCiAgVWRpZXJlc2lzbWFjcm9uOiAweDAxRDUsCiAgVWRpZXJlc2lzc21hbGw6IDB4RjdGQywKICBVZG90YmVsb3c6IDB4MUVFNCwKICBVZ3JhdmU6IDB4MDBEOSwKICBVZ3JhdmVzbWFsbDogMHhGN0Y5LAogIFVob29rYWJvdmU6IDB4MUVFNiwKICBVaG9ybjogMHgwMUFGLAogIFVob3JuYWN1dGU6IDB4MUVFOCwKICBVaG9ybmRvdGJlbG93OiAweDFFRjAsCiAgVWhvcm5ncmF2ZTogMHgxRUVBLAogIFVob3JuaG9va2Fib3ZlOiAweDFFRUMsCiAgVWhvcm50aWxkZTogMHgxRUVFLAogIFVodW5nYXJ1bWxhdXQ6IDB4MDE3MCwKICBVaHVuZ2FydW1sYXV0Y3lyaWxsaWM6IDB4MDRGMiwKICBVaW52ZXJ0ZWRicmV2ZTogMHgwMjE2LAogIFVrY3lyaWxsaWM6IDB4MDQ3OCwKICBVbWFjcm9uOiAweDAxNkEsCiAgVW1hY3JvbmN5cmlsbGljOiAweDA0RUUsCiAgVW1hY3JvbmRpZXJlc2lzOiAweDFFN0EsCiAgVW1vbm9zcGFjZTogMHhGRjM1LAogIFVvZ29uZWs6IDB4MDE3MiwKICBVcHNpbG9uOiAweDAzQTUsCiAgVXBzaWxvbjE6IDB4MDNEMiwKICBVcHNpbG9uYWN1dGVob29rc3ltYm9sZ3JlZWs6IDB4MDNEMywKICBVcHNpbG9uYWZyaWNhbjogMHgwMUIxLAogIFVwc2lsb25kaWVyZXNpczogMHgwM0FCLAogIFVwc2lsb25kaWVyZXNpc2hvb2tzeW1ib2xncmVlazogMHgwM0Q0LAogIFVwc2lsb25ob29rc3ltYm9sOiAweDAzRDIsCiAgVXBzaWxvbnRvbm9zOiAweDAzOEUsCiAgVXJpbmc6IDB4MDE2RSwKICBVc2hvcnRjeXJpbGxpYzogMHgwNDBFLAogIFVzbWFsbDogMHhGNzc1LAogIFVzdHJhaWdodGN5cmlsbGljOiAweDA0QUUsCiAgVXN0cmFpZ2h0c3Ryb2tlY3lyaWxsaWM6IDB4MDRCMCwKICBVdGlsZGU6IDB4MDE2OCwKICBVdGlsZGVhY3V0ZTogMHgxRTc4LAogIFV0aWxkZWJlbG93OiAweDFFNzQsCiAgVjogMHgwMDU2LAogIFZjaXJjbGU6IDB4MjRDQiwKICBWZG90YmVsb3c6IDB4MUU3RSwKICBWZWN5cmlsbGljOiAweDA0MTIsCiAgVmV3YXJtZW5pYW46IDB4MDU0RSwKICBWaG9vazogMHgwMUIyLAogIFZtb25vc3BhY2U6IDB4RkYzNiwKICBWb2FybWVuaWFuOiAweDA1NDgsCiAgVnNtYWxsOiAweEY3NzYsCiAgVnRpbGRlOiAweDFFN0MsCiAgVzogMHgwMDU3LAogIFdhY3V0ZTogMHgxRTgyLAogIFdjaXJjbGU6IDB4MjRDQywKICBXY2lyY3VtZmxleDogMHgwMTc0LAogIFdkaWVyZXNpczogMHgxRTg0LAogIFdkb3RhY2NlbnQ6IDB4MUU4NiwKICBXZG90YmVsb3c6IDB4MUU4OCwKICBXZ3JhdmU6IDB4MUU4MCwKICBXbW9ub3NwYWNlOiAweEZGMzcsCiAgV3NtYWxsOiAweEY3NzcsCiAgWDogMHgwMDU4LAogIFhjaXJjbGU6IDB4MjRDRCwKICBYZGllcmVzaXM6IDB4MUU4QywKICBYZG90YWNjZW50OiAweDFFOEEsCiAgWGVoYXJtZW5pYW46IDB4MDUzRCwKICBYaTogMHgwMzlFLAogIFhtb25vc3BhY2U6IDB4RkYzOCwKICBYc21hbGw6IDB4Rjc3OCwKICBZOiAweDAwNTksCiAgWWFjdXRlOiAweDAwREQsCiAgWWFjdXRlc21hbGw6IDB4RjdGRCwKICBZYXRjeXJpbGxpYzogMHgwNDYyLAogIFljaXJjbGU6IDB4MjRDRSwKICBZY2lyY3VtZmxleDogMHgwMTc2LAogIFlkaWVyZXNpczogMHgwMTc4LAogIFlkaWVyZXNpc3NtYWxsOiAweEY3RkYsCiAgWWRvdGFjY2VudDogMHgxRThFLAogIFlkb3RiZWxvdzogMHgxRUY0LAogIFllcmljeXJpbGxpYzogMHgwNDJCLAogIFllcnVkaWVyZXNpc2N5cmlsbGljOiAweDA0RjgsCiAgWWdyYXZlOiAweDFFRjIsCiAgWWhvb2s6IDB4MDFCMywKICBZaG9va2Fib3ZlOiAweDFFRjYsCiAgWWlhcm1lbmlhbjogMHgwNTQ1LAogIFlpY3lyaWxsaWM6IDB4MDQwNywKICBZaXduYXJtZW5pYW46IDB4MDU1MiwKICBZbW9ub3NwYWNlOiAweEZGMzksCiAgWXNtYWxsOiAweEY3NzksCiAgWXRpbGRlOiAweDFFRjgsCiAgWXVzYmlnY3lyaWxsaWM6IDB4MDQ2QSwKICBZdXNiaWdpb3RpZmllZGN5cmlsbGljOiAweDA0NkMsCiAgWXVzbGl0dGxlY3lyaWxsaWM6IDB4MDQ2NiwKICBZdXNsaXR0bGVpb3RpZmllZGN5cmlsbGljOiAweDA0NjgsCiAgWjogMHgwMDVBLAogIFphYXJtZW5pYW46IDB4MDUzNiwKICBaYWN1dGU6IDB4MDE3OSwKICBaY2Fyb246IDB4MDE3RCwKICBaY2Fyb25zbWFsbDogMHhGNkZGLAogIFpjaXJjbGU6IDB4MjRDRiwKICBaY2lyY3VtZmxleDogMHgxRTkwLAogIFpkb3Q6IDB4MDE3QiwKICBaZG90YWNjZW50OiAweDAxN0IsCiAgWmRvdGJlbG93OiAweDFFOTIsCiAgWmVjeXJpbGxpYzogMHgwNDE3LAogIFplZGVzY2VuZGVyY3lyaWxsaWM6IDB4MDQ5OCwKICBaZWRpZXJlc2lzY3lyaWxsaWM6IDB4MDRERSwKICBaZXRhOiAweDAzOTYsCiAgWmhlYXJtZW5pYW46IDB4MDUzQSwKICBaaGVicmV2ZWN5cmlsbGljOiAweDA0QzEsCiAgWmhlY3lyaWxsaWM6IDB4MDQxNiwKICBaaGVkZXNjZW5kZXJjeXJpbGxpYzogMHgwNDk2LAogIFpoZWRpZXJlc2lzY3lyaWxsaWM6IDB4MDREQywKICBabGluZWJlbG93OiAweDFFOTQsCiAgWm1vbm9zcGFjZTogMHhGRjNBLAogIFpzbWFsbDogMHhGNzdBLAogIFpzdHJva2U6IDB4MDFCNSwKICBhOiAweDAwNjEsCiAgYWFiZW5nYWxpOiAweDA5ODYsCiAgYWFjdXRlOiAweDAwRTEsCiAgYWFkZXZhOiAweDA5MDYsCiAgYWFndWphcmF0aTogMHgwQTg2LAogIGFhZ3VybXVraGk6IDB4MEEwNiwKICBhYW1hdHJhZ3VybXVraGk6IDB4MEEzRSwKICBhYXJ1c3F1YXJlOiAweDMzMDMsCiAgYWF2b3dlbHNpZ25iZW5nYWxpOiAweDA5QkUsCiAgYWF2b3dlbHNpZ25kZXZhOiAweDA5M0UsCiAgYWF2b3dlbHNpZ25ndWphcmF0aTogMHgwQUJFLAogIGFiYnJldmlhdGlvbm1hcmthcm1lbmlhbjogMHgwNTVGLAogIGFiYnJldmlhdGlvbnNpZ25kZXZhOiAweDA5NzAsCiAgYWJlbmdhbGk6IDB4MDk4NSwKICBhYm9wb21vZm86IDB4MzExQSwKICBhYnJldmU6IDB4MDEwMywKICBhYnJldmVhY3V0ZTogMHgxRUFGLAogIGFicmV2ZWN5cmlsbGljOiAweDA0RDEsCiAgYWJyZXZlZG90YmVsb3c6IDB4MUVCNywKICBhYnJldmVncmF2ZTogMHgxRUIxLAogIGFicmV2ZWhvb2thYm92ZTogMHgxRUIzLAogIGFicmV2ZXRpbGRlOiAweDFFQjUsCiAgYWNhcm9uOiAweDAxQ0UsCiAgYWNpcmNsZTogMHgyNEQwLAogIGFjaXJjdW1mbGV4OiAweDAwRTIsCiAgYWNpcmN1bWZsZXhhY3V0ZTogMHgxRUE1LAogIGFjaXJjdW1mbGV4ZG90YmVsb3c6IDB4MUVBRCwKICBhY2lyY3VtZmxleGdyYXZlOiAweDFFQTcsCiAgYWNpcmN1bWZsZXhob29rYWJvdmU6IDB4MUVBOSwKICBhY2lyY3VtZmxleHRpbGRlOiAweDFFQUIsCiAgYWN1dGU6IDB4MDBCNCwKICBhY3V0ZWJlbG93Y21iOiAweDAzMTcsCiAgYWN1dGVjbWI6IDB4MDMwMSwKICBhY3V0ZWNvbWI6IDB4MDMwMSwKICBhY3V0ZWRldmE6IDB4MDk1NCwKICBhY3V0ZWxvd21vZDogMHgwMkNGLAogIGFjdXRldG9uZWNtYjogMHgwMzQxLAogIGFjeXJpbGxpYzogMHgwNDMwLAogIGFkYmxncmF2ZTogMHgwMjAxLAogIGFkZGFrZ3VybXVraGk6IDB4MEE3MSwKICBhZGV2YTogMHgwOTA1LAogIGFkaWVyZXNpczogMHgwMEU0LAogIGFkaWVyZXNpc2N5cmlsbGljOiAweDA0RDMsCiAgYWRpZXJlc2lzbWFjcm9uOiAweDAxREYsCiAgYWRvdGJlbG93OiAweDFFQTEsCiAgYWRvdG1hY3JvbjogMHgwMUUxLAogIGFlOiAweDAwRTYsCiAgYWVhY3V0ZTogMHgwMUZELAogIGFla29yZWFuOiAweDMxNTAsCiAgYWVtYWNyb246IDB4MDFFMywKICBhZmlpMDAyMDg6IDB4MjAxNSwKICBhZmlpMDg5NDE6IDB4MjBBNCwKICBhZmlpMTAwMTc6IDB4MDQxMCwKICBhZmlpMTAwMTg6IDB4MDQxMSwKICBhZmlpMTAwMTk6IDB4MDQxMiwKICBhZmlpMTAwMjA6IDB4MDQxMywKICBhZmlpMTAwMjE6IDB4MDQxNCwKICBhZmlpMTAwMjI6IDB4MDQxNSwKICBhZmlpMTAwMjM6IDB4MDQwMSwKICBhZmlpMTAwMjQ6IDB4MDQxNiwKICBhZmlpMTAwMjU6IDB4MDQxNywKICBhZmlpMTAwMjY6IDB4MDQxOCwKICBhZmlpMTAwMjc6IDB4MDQxOSwKICBhZmlpMTAwMjg6IDB4MDQxQSwKICBhZmlpMTAwMjk6IDB4MDQxQiwKICBhZmlpMTAwMzA6IDB4MDQxQywKICBhZmlpMTAwMzE6IDB4MDQxRCwKICBhZmlpMTAwMzI6IDB4MDQxRSwKICBhZmlpMTAwMzM6IDB4MDQxRiwKICBhZmlpMTAwMzQ6IDB4MDQyMCwKICBhZmlpMTAwMzU6IDB4MDQyMSwKICBhZmlpMTAwMzY6IDB4MDQyMiwKICBhZmlpMTAwMzc6IDB4MDQyMywKICBhZmlpMTAwMzg6IDB4MDQyNCwKICBhZmlpMTAwMzk6IDB4MDQyNSwKICBhZmlpMTAwNDA6IDB4MDQyNiwKICBhZmlpMTAwNDE6IDB4MDQyNywKICBhZmlpMTAwNDI6IDB4MDQyOCwKICBhZmlpMTAwNDM6IDB4MDQyOSwKICBhZmlpMTAwNDQ6IDB4MDQyQSwKICBhZmlpMTAwNDU6IDB4MDQyQiwKICBhZmlpMTAwNDY6IDB4MDQyQywKICBhZmlpMTAwNDc6IDB4MDQyRCwKICBhZmlpMTAwNDg6IDB4MDQyRSwKICBhZmlpMTAwNDk6IDB4MDQyRiwKICBhZmlpMTAwNTA6IDB4MDQ5MCwKICBhZmlpMTAwNTE6IDB4MDQwMiwKICBhZmlpMTAwNTI6IDB4MDQwMywKICBhZmlpMTAwNTM6IDB4MDQwNCwKICBhZmlpMTAwNTQ6IDB4MDQwNSwKICBhZmlpMTAwNTU6IDB4MDQwNiwKICBhZmlpMTAwNTY6IDB4MDQwNywKICBhZmlpMTAwNTc6IDB4MDQwOCwKICBhZmlpMTAwNTg6IDB4MDQwOSwKICBhZmlpMTAwNTk6IDB4MDQwQSwKICBhZmlpMTAwNjA6IDB4MDQwQiwKICBhZmlpMTAwNjE6IDB4MDQwQywKICBhZmlpMTAwNjI6IDB4MDQwRSwKICBhZmlpMTAwNjM6IDB4RjZDNCwKICBhZmlpMTAwNjQ6IDB4RjZDNSwKICBhZmlpMTAwNjU6IDB4MDQzMCwKICBhZmlpMTAwNjY6IDB4MDQzMSwKICBhZmlpMTAwNjc6IDB4MDQzMiwKICBhZmlpMTAwNjg6IDB4MDQzMywKICBhZmlpMTAwNjk6IDB4MDQzNCwKICBhZmlpMTAwNzA6IDB4MDQzNSwKICBhZmlpMTAwNzE6IDB4MDQ1MSwKICBhZmlpMTAwNzI6IDB4MDQzNiwKICBhZmlpMTAwNzM6IDB4MDQzNywKICBhZmlpMTAwNzQ6IDB4MDQzOCwKICBhZmlpMTAwNzU6IDB4MDQzOSwKICBhZmlpMTAwNzY6IDB4MDQzQSwKICBhZmlpMTAwNzc6IDB4MDQzQiwKICBhZmlpMTAwNzg6IDB4MDQzQywKICBhZmlpMTAwNzk6IDB4MDQzRCwKICBhZmlpMTAwODA6IDB4MDQzRSwKICBhZmlpMTAwODE6IDB4MDQzRiwKICBhZmlpMTAwODI6IDB4MDQ0MCwKICBhZmlpMTAwODM6IDB4MDQ0MSwKICBhZmlpMTAwODQ6IDB4MDQ0MiwKICBhZmlpMTAwODU6IDB4MDQ0MywKICBhZmlpMTAwODY6IDB4MDQ0NCwKICBhZmlpMTAwODc6IDB4MDQ0NSwKICBhZmlpMTAwODg6IDB4MDQ0NiwKICBhZmlpMTAwODk6IDB4MDQ0NywKICBhZmlpMTAwOTA6IDB4MDQ0OCwKICBhZmlpMTAwOTE6IDB4MDQ0OSwKICBhZmlpMTAwOTI6IDB4MDQ0QSwKICBhZmlpMTAwOTM6IDB4MDQ0QiwKICBhZmlpMTAwOTQ6IDB4MDQ0QywKICBhZmlpMTAwOTU6IDB4MDQ0RCwKICBhZmlpMTAwOTY6IDB4MDQ0RSwKICBhZmlpMTAwOTc6IDB4MDQ0RiwKICBhZmlpMTAwOTg6IDB4MDQ5MSwKICBhZmlpMTAwOTk6IDB4MDQ1MiwKICBhZmlpMTAxMDA6IDB4MDQ1MywKICBhZmlpMTAxMDE6IDB4MDQ1NCwKICBhZmlpMTAxMDI6IDB4MDQ1NSwKICBhZmlpMTAxMDM6IDB4MDQ1NiwKICBhZmlpMTAxMDQ6IDB4MDQ1NywKICBhZmlpMTAxMDU6IDB4MDQ1OCwKICBhZmlpMTAxMDY6IDB4MDQ1OSwKICBhZmlpMTAxMDc6IDB4MDQ1QSwKICBhZmlpMTAxMDg6IDB4MDQ1QiwKICBhZmlpMTAxMDk6IDB4MDQ1QywKICBhZmlpMTAxMTA6IDB4MDQ1RSwKICBhZmlpMTAxNDU6IDB4MDQwRiwKICBhZmlpMTAxNDY6IDB4MDQ2MiwKICBhZmlpMTAxNDc6IDB4MDQ3MiwKICBhZmlpMTAxNDg6IDB4MDQ3NCwKICBhZmlpMTAxOTI6IDB4RjZDNiwKICBhZmlpMTAxOTM6IDB4MDQ1RiwKICBhZmlpMTAxOTQ6IDB4MDQ2MywKICBhZmlpMTAxOTU6IDB4MDQ3MywKICBhZmlpMTAxOTY6IDB4MDQ3NSwKICBhZmlpMTA4MzE6IDB4RjZDNywKICBhZmlpMTA4MzI6IDB4RjZDOCwKICBhZmlpMTA4NDY6IDB4MDREOSwKICBhZmlpMjk5OiAweDIwMEUsCiAgYWZpaTMwMDogMHgyMDBGLAogIGFmaWkzMDE6IDB4MjAwRCwKICBhZmlpNTczODE6IDB4MDY2QSwKICBhZmlpNTczODg6IDB4MDYwQywKICBhZmlpNTczOTI6IDB4MDY2MCwKICBhZmlpNTczOTM6IDB4MDY2MSwKICBhZmlpNTczOTQ6IDB4MDY2MiwKICBhZmlpNTczOTU6IDB4MDY2MywKICBhZmlpNTczOTY6IDB4MDY2NCwKICBhZmlpNTczOTc6IDB4MDY2NSwKICBhZmlpNTczOTg6IDB4MDY2NiwKICBhZmlpNTczOTk6IDB4MDY2NywKICBhZmlpNTc0MDA6IDB4MDY2OCwKICBhZmlpNTc0MDE6IDB4MDY2OSwKICBhZmlpNTc0MDM6IDB4MDYxQiwKICBhZmlpNTc0MDc6IDB4MDYxRiwKICBhZmlpNTc0MDk6IDB4MDYyMSwKICBhZmlpNTc0MTA6IDB4MDYyMiwKICBhZmlpNTc0MTE6IDB4MDYyMywKICBhZmlpNTc0MTI6IDB4MDYyNCwKICBhZmlpNTc0MTM6IDB4MDYyNSwKICBhZmlpNTc0MTQ6IDB4MDYyNiwKICBhZmlpNTc0MTU6IDB4MDYyNywKICBhZmlpNTc0MTY6IDB4MDYyOCwKICBhZmlpNTc0MTc6IDB4MDYyOSwKICBhZmlpNTc0MTg6IDB4MDYyQSwKICBhZmlpNTc0MTk6IDB4MDYyQiwKICBhZmlpNTc0MjA6IDB4MDYyQywKICBhZmlpNTc0MjE6IDB4MDYyRCwKICBhZmlpNTc0MjI6IDB4MDYyRSwKICBhZmlpNTc0MjM6IDB4MDYyRiwKICBhZmlpNTc0MjQ6IDB4MDYzMCwKICBhZmlpNTc0MjU6IDB4MDYzMSwKICBhZmlpNTc0MjY6IDB4MDYzMiwKICBhZmlpNTc0Mjc6IDB4MDYzMywKICBhZmlpNTc0Mjg6IDB4MDYzNCwKICBhZmlpNTc0Mjk6IDB4MDYzNSwKICBhZmlpNTc0MzA6IDB4MDYzNiwKICBhZmlpNTc0MzE6IDB4MDYzNywKICBhZmlpNTc0MzI6IDB4MDYzOCwKICBhZmlpNTc0MzM6IDB4MDYzOSwKICBhZmlpNTc0MzQ6IDB4MDYzQSwKICBhZmlpNTc0NDA6IDB4MDY0MCwKICBhZmlpNTc0NDE6IDB4MDY0MSwKICBhZmlpNTc0NDI6IDB4MDY0MiwKICBhZmlpNTc0NDM6IDB4MDY0MywKICBhZmlpNTc0NDQ6IDB4MDY0NCwKICBhZmlpNTc0NDU6IDB4MDY0NSwKICBhZmlpNTc0NDY6IDB4MDY0NiwKICBhZmlpNTc0NDg6IDB4MDY0OCwKICBhZmlpNTc0NDk6IDB4MDY0OSwKICBhZmlpNTc0NTA6IDB4MDY0QSwKICBhZmlpNTc0NTE6IDB4MDY0QiwKICBhZmlpNTc0NTI6IDB4MDY0QywKICBhZmlpNTc0NTM6IDB4MDY0RCwKICBhZmlpNTc0NTQ6IDB4MDY0RSwKICBhZmlpNTc0NTU6IDB4MDY0RiwKICBhZmlpNTc0NTY6IDB4MDY1MCwKICBhZmlpNTc0NTc6IDB4MDY1MSwKICBhZmlpNTc0NTg6IDB4MDY1MiwKICBhZmlpNTc0NzA6IDB4MDY0NywKICBhZmlpNTc1MDU6IDB4MDZBNCwKICBhZmlpNTc1MDY6IDB4MDY3RSwKICBhZmlpNTc1MDc6IDB4MDY4NiwKICBhZmlpNTc1MDg6IDB4MDY5OCwKICBhZmlpNTc1MDk6IDB4MDZBRiwKICBhZmlpNTc1MTE6IDB4MDY3OSwKICBhZmlpNTc1MTI6IDB4MDY4OCwKICBhZmlpNTc1MTM6IDB4MDY5MSwKICBhZmlpNTc1MTQ6IDB4MDZCQSwKICBhZmlpNTc1MTk6IDB4MDZEMiwKICBhZmlpNTc1MzQ6IDB4MDZENSwKICBhZmlpNTc2MzY6IDB4MjBBQSwKICBhZmlpNTc2NDU6IDB4MDVCRSwKICBhZmlpNTc2NTg6IDB4MDVDMywKICBhZmlpNTc2NjQ6IDB4MDVEMCwKICBhZmlpNTc2NjU6IDB4MDVEMSwKICBhZmlpNTc2NjY6IDB4MDVEMiwKICBhZmlpNTc2Njc6IDB4MDVEMywKICBhZmlpNTc2Njg6IDB4MDVENCwKICBhZmlpNTc2Njk6IDB4MDVENSwKICBhZmlpNTc2NzA6IDB4MDVENiwKICBhZmlpNTc2NzE6IDB4MDVENywKICBhZmlpNTc2NzI6IDB4MDVEOCwKICBhZmlpNTc2NzM6IDB4MDVEOSwKICBhZmlpNTc2NzQ6IDB4MDVEQSwKICBhZmlpNTc2NzU6IDB4MDVEQiwKICBhZmlpNTc2NzY6IDB4MDVEQywKICBhZmlpNTc2Nzc6IDB4MDVERCwKICBhZmlpNTc2Nzg6IDB4MDVERSwKICBhZmlpNTc2Nzk6IDB4MDVERiwKICBhZmlpNTc2ODA6IDB4MDVFMCwKICBhZmlpNTc2ODE6IDB4MDVFMSwKICBhZmlpNTc2ODI6IDB4MDVFMiwKICBhZmlpNTc2ODM6IDB4MDVFMywKICBhZmlpNTc2ODQ6IDB4MDVFNCwKICBhZmlpNTc2ODU6IDB4MDVFNSwKICBhZmlpNTc2ODY6IDB4MDVFNiwKICBhZmlpNTc2ODc6IDB4MDVFNywKICBhZmlpNTc2ODg6IDB4MDVFOCwKICBhZmlpNTc2ODk6IDB4MDVFOSwKICBhZmlpNTc2OTA6IDB4MDVFQSwKICBhZmlpNTc2OTQ6IDB4RkIyQSwKICBhZmlpNTc2OTU6IDB4RkIyQiwKICBhZmlpNTc3MDA6IDB4RkI0QiwKICBhZmlpNTc3MDU6IDB4RkIxRiwKICBhZmlpNTc3MTY6IDB4MDVGMCwKICBhZmlpNTc3MTc6IDB4MDVGMSwKICBhZmlpNTc3MTg6IDB4MDVGMiwKICBhZmlpNTc3MjM6IDB4RkIzNSwKICBhZmlpNTc3OTM6IDB4MDVCNCwKICBhZmlpNTc3OTQ6IDB4MDVCNSwKICBhZmlpNTc3OTU6IDB4MDVCNiwKICBhZmlpNTc3OTY6IDB4MDVCQiwKICBhZmlpNTc3OTc6IDB4MDVCOCwKICBhZmlpNTc3OTg6IDB4MDVCNywKICBhZmlpNTc3OTk6IDB4MDVCMCwKICBhZmlpNTc4MDA6IDB4MDVCMiwKICBhZmlpNTc4MDE6IDB4MDVCMSwKICBhZmlpNTc4MDI6IDB4MDVCMywKICBhZmlpNTc4MDM6IDB4MDVDMiwKICBhZmlpNTc4MDQ6IDB4MDVDMSwKICBhZmlpNTc4MDY6IDB4MDVCOSwKICBhZmlpNTc4MDc6IDB4MDVCQywKICBhZmlpNTc4Mzk6IDB4MDVCRCwKICBhZmlpNTc4NDE6IDB4MDVCRiwKICBhZmlpNTc4NDI6IDB4MDVDMCwKICBhZmlpNTc5Mjk6IDB4MDJCQywKICBhZmlpNjEyNDg6IDB4MjEwNSwKICBhZmlpNjEyODk6IDB4MjExMywKICBhZmlpNjEzNTI6IDB4MjExNiwKICBhZmlpNjE1NzM6IDB4MjAyQywKICBhZmlpNjE1NzQ6IDB4MjAyRCwKICBhZmlpNjE1NzU6IDB4MjAyRSwKICBhZmlpNjE2NjQ6IDB4MjAwQywKICBhZmlpNjMxNjc6IDB4MDY2RCwKICBhZmlpNjQ5Mzc6IDB4MDJCRCwKICBhZ3JhdmU6IDB4MDBFMCwKICBhZ3VqYXJhdGk6IDB4MEE4NSwKICBhZ3VybXVraGk6IDB4MEEwNSwKICBhaGlyYWdhbmE6IDB4MzA0MiwKICBhaG9va2Fib3ZlOiAweDFFQTMsCiAgYWliZW5nYWxpOiAweDA5OTAsCiAgYWlib3BvbW9mbzogMHgzMTFFLAogIGFpZGV2YTogMHgwOTEwLAogIGFpZWN5cmlsbGljOiAweDA0RDUsCiAgYWlndWphcmF0aTogMHgwQTkwLAogIGFpZ3VybXVraGk6IDB4MEExMCwKICBhaW1hdHJhZ3VybXVraGk6IDB4MEE0OCwKICBhaW5hcmFiaWM6IDB4MDYzOSwKICBhaW5maW5hbGFyYWJpYzogMHhGRUNBLAogIGFpbmluaXRpYWxhcmFiaWM6IDB4RkVDQiwKICBhaW5tZWRpYWxhcmFiaWM6IDB4RkVDQywKICBhaW52ZXJ0ZWRicmV2ZTogMHgwMjAzLAogIGFpdm93ZWxzaWduYmVuZ2FsaTogMHgwOUM4LAogIGFpdm93ZWxzaWduZGV2YTogMHgwOTQ4LAogIGFpdm93ZWxzaWduZ3VqYXJhdGk6IDB4MEFDOCwKICBha2F0YWthbmE6IDB4MzBBMiwKICBha2F0YWthbmFoYWxmd2lkdGg6IDB4RkY3MSwKICBha29yZWFuOiAweDMxNEYsCiAgYWxlZjogMHgwNUQwLAogIGFsZWZhcmFiaWM6IDB4MDYyNywKICBhbGVmZGFnZXNoaGVicmV3OiAweEZCMzAsCiAgYWxlZmZpbmFsYXJhYmljOiAweEZFOEUsCiAgYWxlZmhhbXphYWJvdmVhcmFiaWM6IDB4MDYyMywKICBhbGVmaGFtemFhYm92ZWZpbmFsYXJhYmljOiAweEZFODQsCiAgYWxlZmhhbXphYmVsb3dhcmFiaWM6IDB4MDYyNSwKICBhbGVmaGFtemFiZWxvd2ZpbmFsYXJhYmljOiAweEZFODgsCiAgYWxlZmhlYnJldzogMHgwNUQwLAogIGFsZWZsYW1lZGhlYnJldzogMHhGQjRGLAogIGFsZWZtYWRkYWFib3ZlYXJhYmljOiAweDA2MjIsCiAgYWxlZm1hZGRhYWJvdmVmaW5hbGFyYWJpYzogMHhGRTgyLAogIGFsZWZtYWtzdXJhYXJhYmljOiAweDA2NDksCiAgYWxlZm1ha3N1cmFmaW5hbGFyYWJpYzogMHhGRUYwLAogIGFsZWZtYWtzdXJhaW5pdGlhbGFyYWJpYzogMHhGRUYzLAogIGFsZWZtYWtzdXJhbWVkaWFsYXJhYmljOiAweEZFRjQsCiAgYWxlZnBhdGFoaGVicmV3OiAweEZCMkUsCiAgYWxlZnFhbWF0c2hlYnJldzogMHhGQjJGLAogIGFsZXBoOiAweDIxMzUsCiAgYWxsZXF1YWw6IDB4MjI0QywKICBhbHBoYTogMHgwM0IxLAogIGFscGhhdG9ub3M6IDB4MDNBQywKICBhbWFjcm9uOiAweDAxMDEsCiAgYW1vbm9zcGFjZTogMHhGRjQxLAogIGFtcGVyc2FuZDogMHgwMDI2LAogIGFtcGVyc2FuZG1vbm9zcGFjZTogMHhGRjA2LAogIGFtcGVyc2FuZHNtYWxsOiAweEY3MjYsCiAgYW1zcXVhcmU6IDB4MzNDMiwKICBhbmJvcG9tb2ZvOiAweDMxMjIsCiAgYW5nYm9wb21vZm86IDB4MzEyNCwKICBhbmdicmFja2V0bGVmdDogMHgzMDA4LCAvLyBUaGlzIGdseXBoIGlzIG1pc3NpbmcgZnJvbSBBZG9iZSdzIG9yaWdpbmFsIGxpc3QuCiAgYW5nYnJhY2tldHJpZ2h0OiAweDMwMDksIC8vIFRoaXMgZ2x5cGggaXMgbWlzc2luZyBmcm9tIEFkb2JlJ3Mgb3JpZ2luYWwgbGlzdC4KICBhbmdraGFua2h1dGhhaTogMHgwRTVBLAogIGFuZ2xlOiAweDIyMjAsCiAgYW5nbGVicmFja2V0bGVmdDogMHgzMDA4LAogIGFuZ2xlYnJhY2tldGxlZnR2ZXJ0aWNhbDogMHhGRTNGLAogIGFuZ2xlYnJhY2tldHJpZ2h0OiAweDMwMDksCiAgYW5nbGVicmFja2V0cmlnaHR2ZXJ0aWNhbDogMHhGRTQwLAogIGFuZ2xlbGVmdDogMHgyMzI5LAogIGFuZ2xlcmlnaHQ6IDB4MjMyQSwKICBhbmdzdHJvbTogMHgyMTJCLAogIGFub3RlbGVpYTogMHgwMzg3LAogIGFudWRhdHRhZGV2YTogMHgwOTUyLAogIGFudXN2YXJhYmVuZ2FsaTogMHgwOTgyLAogIGFudXN2YXJhZGV2YTogMHgwOTAyLAogIGFudXN2YXJhZ3VqYXJhdGk6IDB4MEE4MiwKICBhb2dvbmVrOiAweDAxMDUsCiAgYXBhYXRvc3F1YXJlOiAweDMzMDAsCiAgYXBhcmVuOiAweDI0OUMsCiAgYXBvc3Ryb3BoZWFybWVuaWFuOiAweDA1NUEsCiAgYXBvc3Ryb3BoZW1vZDogMHgwMkJDLAogIGFwcGxlOiAweEY4RkYsCiAgYXBwcm9hY2hlczogMHgyMjUwLAogIGFwcHJveGVxdWFsOiAweDIyNDgsCiAgYXBwcm94ZXF1YWxvcmltYWdlOiAweDIyNTIsCiAgYXBwcm94aW1hdGVseWVxdWFsOiAweDIyNDUsCiAgYXJhZWFla29yZWFuOiAweDMxOEUsCiAgYXJhZWFrb3JlYW46IDB4MzE4RCwKICBhcmM6IDB4MjMxMiwKICBhcmlnaHRoYWxmcmluZzogMHgxRTlBLAogIGFyaW5nOiAweDAwRTUsCiAgYXJpbmdhY3V0ZTogMHgwMUZCLAogIGFyaW5nYmVsb3c6IDB4MUUwMSwKICBhcnJvd2JvdGg6IDB4MjE5NCwKICBhcnJvd2Rhc2hkb3duOiAweDIxRTMsCiAgYXJyb3dkYXNobGVmdDogMHgyMUUwLAogIGFycm93ZGFzaHJpZ2h0OiAweDIxRTIsCiAgYXJyb3dkYXNodXA6IDB4MjFFMSwKICBhcnJvd2RibGJvdGg6IDB4MjFENCwKICBhcnJvd2RibGRvd246IDB4MjFEMywKICBhcnJvd2RibGxlZnQ6IDB4MjFEMCwKICBhcnJvd2RibHJpZ2h0OiAweDIxRDIsCiAgYXJyb3dkYmx1cDogMHgyMUQxLAogIGFycm93ZG93bjogMHgyMTkzLAogIGFycm93ZG93bmxlZnQ6IDB4MjE5OSwKICBhcnJvd2Rvd25yaWdodDogMHgyMTk4LAogIGFycm93ZG93bndoaXRlOiAweDIxRTksCiAgYXJyb3doZWFkZG93bm1vZDogMHgwMkM1LAogIGFycm93aGVhZGxlZnRtb2Q6IDB4MDJDMiwKICBhcnJvd2hlYWRyaWdodG1vZDogMHgwMkMzLAogIGFycm93aGVhZHVwbW9kOiAweDAyQzQsCiAgYXJyb3dob3JpemV4OiAweEY4RTcsCiAgYXJyb3dsZWZ0OiAweDIxOTAsCiAgYXJyb3dsZWZ0ZGJsOiAweDIxRDAsCiAgYXJyb3dsZWZ0ZGJsc3Ryb2tlOiAweDIxQ0QsCiAgYXJyb3dsZWZ0b3ZlcnJpZ2h0OiAweDIxQzYsCiAgYXJyb3dsZWZ0d2hpdGU6IDB4MjFFNiwKICBhcnJvd3JpZ2h0OiAweDIxOTIsCiAgYXJyb3dyaWdodGRibHN0cm9rZTogMHgyMUNGLAogIGFycm93cmlnaHRoZWF2eTogMHgyNzlFLAogIGFycm93cmlnaHRvdmVybGVmdDogMHgyMUM0LAogIGFycm93cmlnaHR3aGl0ZTogMHgyMUU4LAogIGFycm93dGFibGVmdDogMHgyMUU0LAogIGFycm93dGFicmlnaHQ6IDB4MjFFNSwKICBhcnJvd3VwOiAweDIxOTEsCiAgYXJyb3d1cGRuOiAweDIxOTUsCiAgYXJyb3d1cGRuYnNlOiAweDIxQTgsCiAgYXJyb3d1cGRvd25iYXNlOiAweDIxQTgsCiAgYXJyb3d1cGxlZnQ6IDB4MjE5NiwKICBhcnJvd3VwbGVmdG9mZG93bjogMHgyMUM1LAogIGFycm93dXByaWdodDogMHgyMTk3LAogIGFycm93dXB3aGl0ZTogMHgyMUU3LAogIGFycm93dmVydGV4OiAweEY4RTYsCiAgYXNjaWljaXJjdW06IDB4MDA1RSwKICBhc2NpaWNpcmN1bW1vbm9zcGFjZTogMHhGRjNFLAogIGFzY2lpdGlsZGU6IDB4MDA3RSwKICBhc2NpaXRpbGRlbW9ub3NwYWNlOiAweEZGNUUsCiAgYXNjcmlwdDogMHgwMjUxLAogIGFzY3JpcHR0dXJuZWQ6IDB4MDI1MiwKICBhc21hbGxoaXJhZ2FuYTogMHgzMDQxLAogIGFzbWFsbGthdGFrYW5hOiAweDMwQTEsCiAgYXNtYWxsa2F0YWthbmFoYWxmd2lkdGg6IDB4RkY2NywKICBhc3RlcmlzazogMHgwMDJBLAogIGFzdGVyaXNrYWx0b25lYXJhYmljOiAweDA2NkQsCiAgYXN0ZXJpc2thcmFiaWM6IDB4MDY2RCwKICBhc3Rlcmlza21hdGg6IDB4MjIxNywKICBhc3Rlcmlza21vbm9zcGFjZTogMHhGRjBBLAogIGFzdGVyaXNrc21hbGw6IDB4RkU2MSwKICBhc3RlcmlzbTogMHgyMDQyLAogIGFzdXBlcmlvcjogMHhGNkU5LAogIGFzeW1wdG90aWNhbGx5ZXF1YWw6IDB4MjI0MywKICBhdDogMHgwMDQwLAogIGF0aWxkZTogMHgwMEUzLAogIGF0bW9ub3NwYWNlOiAweEZGMjAsCiAgYXRzbWFsbDogMHhGRTZCLAogIGF0dXJuZWQ6IDB4MDI1MCwKICBhdWJlbmdhbGk6IDB4MDk5NCwKICBhdWJvcG9tb2ZvOiAweDMxMjAsCiAgYXVkZXZhOiAweDA5MTQsCiAgYXVndWphcmF0aTogMHgwQTk0LAogIGF1Z3VybXVraGk6IDB4MEExNCwKICBhdWxlbmd0aG1hcmtiZW5nYWxpOiAweDA5RDcsCiAgYXVtYXRyYWd1cm11a2hpOiAweDBBNEMsCiAgYXV2b3dlbHNpZ25iZW5nYWxpOiAweDA5Q0MsCiAgYXV2b3dlbHNpZ25kZXZhOiAweDA5NEMsCiAgYXV2b3dlbHNpZ25ndWphcmF0aTogMHgwQUNDLAogIGF2YWdyYWhhZGV2YTogMHgwOTNELAogIGF5YmFybWVuaWFuOiAweDA1NjEsCiAgYXlpbjogMHgwNUUyLAogIGF5aW5hbHRvbmVoZWJyZXc6IDB4RkIyMCwKICBheWluaGVicmV3OiAweDA1RTIsCiAgYjogMHgwMDYyLAogIGJhYmVuZ2FsaTogMHgwOUFDLAogIGJhY2tzbGFzaDogMHgwMDVDLAogIGJhY2tzbGFzaG1vbm9zcGFjZTogMHhGRjNDLAogIGJhZGV2YTogMHgwOTJDLAogIGJhZ3VqYXJhdGk6IDB4MEFBQywKICBiYWd1cm11a2hpOiAweDBBMkMsCiAgYmFoaXJhZ2FuYTogMHgzMDcwLAogIGJhaHR0aGFpOiAweDBFM0YsCiAgYmFrYXRha2FuYTogMHgzMEQwLAogIGJhcjogMHgwMDdDLAogIGJhcm1vbm9zcGFjZTogMHhGRjVDLAogIGJib3BvbW9mbzogMHgzMTA1LAogIGJjaXJjbGU6IDB4MjREMSwKICBiZG90YWNjZW50OiAweDFFMDMsCiAgYmRvdGJlbG93OiAweDFFMDUsCiAgYmVhbWVkc2l4dGVlbnRobm90ZXM6IDB4MjY2QywKICBiZWNhdXNlOiAweDIyMzUsCiAgYmVjeXJpbGxpYzogMHgwNDMxLAogIGJlaGFyYWJpYzogMHgwNjI4LAogIGJlaGZpbmFsYXJhYmljOiAweEZFOTAsCiAgYmVoaW5pdGlhbGFyYWJpYzogMHhGRTkxLAogIGJlaGlyYWdhbmE6IDB4MzA3OSwKICBiZWhtZWRpYWxhcmFiaWM6IDB4RkU5MiwKICBiZWhtZWVtaW5pdGlhbGFyYWJpYzogMHhGQzlGLAogIGJlaG1lZW1pc29sYXRlZGFyYWJpYzogMHhGQzA4LAogIGJlaG5vb25maW5hbGFyYWJpYzogMHhGQzZELAogIGJla2F0YWthbmE6IDB4MzBEOSwKICBiZW5hcm1lbmlhbjogMHgwNTYyLAogIGJldDogMHgwNUQxLAogIGJldGE6IDB4MDNCMiwKICBiZXRhc3ltYm9sZ3JlZWs6IDB4MDNEMCwKICBiZXRkYWdlc2g6IDB4RkIzMSwKICBiZXRkYWdlc2hoZWJyZXc6IDB4RkIzMSwKICBiZXRoZWJyZXc6IDB4MDVEMSwKICBiZXRyYWZlaGVicmV3OiAweEZCNEMsCiAgYmhhYmVuZ2FsaTogMHgwOUFELAogIGJoYWRldmE6IDB4MDkyRCwKICBiaGFndWphcmF0aTogMHgwQUFELAogIGJoYWd1cm11a2hpOiAweDBBMkQsCiAgYmhvb2s6IDB4MDI1MywKICBiaWhpcmFnYW5hOiAweDMwNzMsCiAgYmlrYXRha2FuYTogMHgzMEQzLAogIGJpbGFiaWFsY2xpY2s6IDB4MDI5OCwKICBiaW5kaWd1cm11a2hpOiAweDBBMDIsCiAgYmlydXNxdWFyZTogMHgzMzMxLAogIGJsYWNrY2lyY2xlOiAweDI1Q0YsCiAgYmxhY2tkaWFtb25kOiAweDI1QzYsCiAgYmxhY2tkb3ducG9pbnRpbmd0cmlhbmdsZTogMHgyNUJDLAogIGJsYWNrbGVmdHBvaW50aW5ncG9pbnRlcjogMHgyNUM0LAogIGJsYWNrbGVmdHBvaW50aW5ndHJpYW5nbGU6IDB4MjVDMCwKICBibGFja2xlbnRpY3VsYXJicmFja2V0bGVmdDogMHgzMDEwLAogIGJsYWNrbGVudGljdWxhcmJyYWNrZXRsZWZ0dmVydGljYWw6IDB4RkUzQiwKICBibGFja2xlbnRpY3VsYXJicmFja2V0cmlnaHQ6IDB4MzAxMSwKICBibGFja2xlbnRpY3VsYXJicmFja2V0cmlnaHR2ZXJ0aWNhbDogMHhGRTNDLAogIGJsYWNrbG93ZXJsZWZ0dHJpYW5nbGU6IDB4MjVFMywKICBibGFja2xvd2VycmlnaHR0cmlhbmdsZTogMHgyNUUyLAogIGJsYWNrcmVjdGFuZ2xlOiAweDI1QUMsCiAgYmxhY2tyaWdodHBvaW50aW5ncG9pbnRlcjogMHgyNUJBLAogIGJsYWNrcmlnaHRwb2ludGluZ3RyaWFuZ2xlOiAweDI1QjYsCiAgYmxhY2tzbWFsbHNxdWFyZTogMHgyNUFBLAogIGJsYWNrc21pbGluZ2ZhY2U6IDB4MjYzQiwKICBibGFja3NxdWFyZTogMHgyNUEwLAogIGJsYWNrc3RhcjogMHgyNjA1LAogIGJsYWNrdXBwZXJsZWZ0dHJpYW5nbGU6IDB4MjVFNCwKICBibGFja3VwcGVycmlnaHR0cmlhbmdsZTogMHgyNUU1LAogIGJsYWNrdXBwb2ludGluZ3NtYWxsdHJpYW5nbGU6IDB4MjVCNCwKICBibGFja3VwcG9pbnRpbmd0cmlhbmdsZTogMHgyNUIyLAogIGJsYW5rOiAweDI0MjMsCiAgYmxpbmViZWxvdzogMHgxRTA3LAogIGJsb2NrOiAweDI1ODgsCiAgYm1vbm9zcGFjZTogMHhGRjQyLAogIGJvYmFpbWFpdGhhaTogMHgwRTFBLAogIGJvaGlyYWdhbmE6IDB4MzA3QywKICBib2thdGFrYW5hOiAweDMwREMsCiAgYnBhcmVuOiAweDI0OUQsCiAgYnFzcXVhcmU6IDB4MzNDMywKICBicmFjZWV4OiAweEY4RjQsCiAgYnJhY2VsZWZ0OiAweDAwN0IsCiAgYnJhY2VsZWZ0YnQ6IDB4RjhGMywKICBicmFjZWxlZnRtaWQ6IDB4RjhGMiwKICBicmFjZWxlZnRtb25vc3BhY2U6IDB4RkY1QiwKICBicmFjZWxlZnRzbWFsbDogMHhGRTVCLAogIGJyYWNlbGVmdHRwOiAweEY4RjEsCiAgYnJhY2VsZWZ0dmVydGljYWw6IDB4RkUzNywKICBicmFjZXJpZ2h0OiAweDAwN0QsCiAgYnJhY2VyaWdodGJ0OiAweEY4RkUsCiAgYnJhY2VyaWdodG1pZDogMHhGOEZELAogIGJyYWNlcmlnaHRtb25vc3BhY2U6IDB4RkY1RCwKICBicmFjZXJpZ2h0c21hbGw6IDB4RkU1QywKICBicmFjZXJpZ2h0dHA6IDB4RjhGQywKICBicmFjZXJpZ2h0dmVydGljYWw6IDB4RkUzOCwKICBicmFja2V0bGVmdDogMHgwMDVCLAogIGJyYWNrZXRsZWZ0YnQ6IDB4RjhGMCwKICBicmFja2V0bGVmdGV4OiAweEY4RUYsCiAgYnJhY2tldGxlZnRtb25vc3BhY2U6IDB4RkYzQiwKICBicmFja2V0bGVmdHRwOiAweEY4RUUsCiAgYnJhY2tldHJpZ2h0OiAweDAwNUQsCiAgYnJhY2tldHJpZ2h0YnQ6IDB4RjhGQiwKICBicmFja2V0cmlnaHRleDogMHhGOEZBLAogIGJyYWNrZXRyaWdodG1vbm9zcGFjZTogMHhGRjNELAogIGJyYWNrZXRyaWdodHRwOiAweEY4RjksCiAgYnJldmU6IDB4MDJEOCwKICBicmV2ZWJlbG93Y21iOiAweDAzMkUsCiAgYnJldmVjbWI6IDB4MDMwNiwKICBicmV2ZWludmVydGVkYmVsb3djbWI6IDB4MDMyRiwKICBicmV2ZWludmVydGVkY21iOiAweDAzMTEsCiAgYnJldmVpbnZlcnRlZGRvdWJsZWNtYjogMHgwMzYxLAogIGJyaWRnZWJlbG93Y21iOiAweDAzMkEsCiAgYnJpZGdlaW52ZXJ0ZWRiZWxvd2NtYjogMHgwMzNBLAogIGJyb2tlbmJhcjogMHgwMEE2LAogIGJzdHJva2U6IDB4MDE4MCwKICBic3VwZXJpb3I6IDB4RjZFQSwKICBidG9wYmFyOiAweDAxODMsCiAgYnVoaXJhZ2FuYTogMHgzMDc2LAogIGJ1a2F0YWthbmE6IDB4MzBENiwKICBidWxsZXQ6IDB4MjAyMiwKICBidWxsZXRpbnZlcnNlOiAweDI1RDgsCiAgYnVsbGV0b3BlcmF0b3I6IDB4MjIxOSwKICBidWxsc2V5ZTogMHgyNUNFLAogIGM6IDB4MDA2MywKICBjYWFybWVuaWFuOiAweDA1NkUsCiAgY2FiZW5nYWxpOiAweDA5OUEsCiAgY2FjdXRlOiAweDAxMDcsCiAgY2FkZXZhOiAweDA5MUEsCiAgY2FndWphcmF0aTogMHgwQTlBLAogIGNhZ3VybXVraGk6IDB4MEExQSwKICBjYWxzcXVhcmU6IDB4MzM4OCwKICBjYW5kcmFiaW5kdWJlbmdhbGk6IDB4MDk4MSwKICBjYW5kcmFiaW5kdWNtYjogMHgwMzEwLAogIGNhbmRyYWJpbmR1ZGV2YTogMHgwOTAxLAogIGNhbmRyYWJpbmR1Z3VqYXJhdGk6IDB4MEE4MSwKICBjYXBzbG9jazogMHgyMUVBLAogIGNhcmVvZjogMHgyMTA1LAogIGNhcm9uOiAweDAyQzcsCiAgY2Fyb25iZWxvd2NtYjogMHgwMzJDLAogIGNhcm9uY21iOiAweDAzMEMsCiAgY2FycmlhZ2VyZXR1cm46IDB4MjFCNSwKICBjYm9wb21vZm86IDB4MzExOCwKICBjY2Fyb246IDB4MDEwRCwKICBjY2VkaWxsYTogMHgwMEU3LAogIGNjZWRpbGxhYWN1dGU6IDB4MUUwOSwKICBjY2lyY2xlOiAweDI0RDIsCiAgY2NpcmN1bWZsZXg6IDB4MDEwOSwKICBjY3VybDogMHgwMjU1LAogIGNkb3Q6IDB4MDEwQiwKICBjZG90YWNjZW50OiAweDAxMEIsCiAgY2RzcXVhcmU6IDB4MzNDNSwKICBjZWRpbGxhOiAweDAwQjgsCiAgY2VkaWxsYWNtYjogMHgwMzI3LAogIGNlbnQ6IDB4MDBBMiwKICBjZW50aWdyYWRlOiAweDIxMDMsCiAgY2VudGluZmVyaW9yOiAweEY2REYsCiAgY2VudG1vbm9zcGFjZTogMHhGRkUwLAogIGNlbnRvbGRzdHlsZTogMHhGN0EyLAogIGNlbnRzdXBlcmlvcjogMHhGNkUwLAogIGNoYWFybWVuaWFuOiAweDA1NzksCiAgY2hhYmVuZ2FsaTogMHgwOTlCLAogIGNoYWRldmE6IDB4MDkxQiwKICBjaGFndWphcmF0aTogMHgwQTlCLAogIGNoYWd1cm11a2hpOiAweDBBMUIsCiAgY2hib3BvbW9mbzogMHgzMTE0LAogIGNoZWFia2hhc2lhbmN5cmlsbGljOiAweDA0QkQsCiAgY2hlY2ttYXJrOiAweDI3MTMsCiAgY2hlY3lyaWxsaWM6IDB4MDQ0NywKICBjaGVkZXNjZW5kZXJhYmtoYXNpYW5jeXJpbGxpYzogMHgwNEJGLAogIGNoZWRlc2NlbmRlcmN5cmlsbGljOiAweDA0QjcsCiAgY2hlZGllcmVzaXNjeXJpbGxpYzogMHgwNEY1LAogIGNoZWhhcm1lbmlhbjogMHgwNTczLAogIGNoZWtoYWthc3NpYW5jeXJpbGxpYzogMHgwNENDLAogIGNoZXZlcnRpY2Fsc3Ryb2tlY3lyaWxsaWM6IDB4MDRCOSwKICBjaGk6IDB4MDNDNywKICBjaGlldWNoYWNpcmNsZWtvcmVhbjogMHgzMjc3LAogIGNoaWV1Y2hhcGFyZW5rb3JlYW46IDB4MzIxNywKICBjaGlldWNoY2lyY2xla29yZWFuOiAweDMyNjksCiAgY2hpZXVjaGtvcmVhbjogMHgzMTRBLAogIGNoaWV1Y2hwYXJlbmtvcmVhbjogMHgzMjA5LAogIGNob2NoYW5ndGhhaTogMHgwRTBBLAogIGNob2NoYW50aGFpOiAweDBFMDgsCiAgY2hvY2hpbmd0aGFpOiAweDBFMDksCiAgY2hvY2hvZXRoYWk6IDB4MEUwQywKICBjaG9vazogMHgwMTg4LAogIGNpZXVjYWNpcmNsZWtvcmVhbjogMHgzMjc2LAogIGNpZXVjYXBhcmVua29yZWFuOiAweDMyMTYsCiAgY2lldWNjaXJjbGVrb3JlYW46IDB4MzI2OCwKICBjaWV1Y2tvcmVhbjogMHgzMTQ4LAogIGNpZXVjcGFyZW5rb3JlYW46IDB4MzIwOCwKICBjaWV1Y3VwYXJlbmtvcmVhbjogMHgzMjFDLAogIGNpcmNsZTogMHgyNUNCLAogIGNpcmNsZWNvcHlydDogMHgwMEE5LCAvLyBUaGlzIGdseXBoIGlzIG1pc3NpbmcgZnJvbSBBZG9iZSdzIG9yaWdpbmFsIGxpc3QuCiAgY2lyY2xlbXVsdGlwbHk6IDB4MjI5NywKICBjaXJjbGVvdDogMHgyMjk5LAogIGNpcmNsZXBsdXM6IDB4MjI5NSwKICBjaXJjbGVwb3N0YWxtYXJrOiAweDMwMzYsCiAgY2lyY2xld2l0aGxlZnRoYWxmYmxhY2s6IDB4MjVEMCwKICBjaXJjbGV3aXRocmlnaHRoYWxmYmxhY2s6IDB4MjVEMSwKICBjaXJjdW1mbGV4OiAweDAyQzYsCiAgY2lyY3VtZmxleGJlbG93Y21iOiAweDAzMkQsCiAgY2lyY3VtZmxleGNtYjogMHgwMzAyLAogIGNsZWFyOiAweDIzMjcsCiAgY2xpY2thbHZlb2xhcjogMHgwMUMyLAogIGNsaWNrZGVudGFsOiAweDAxQzAsCiAgY2xpY2tsYXRlcmFsOiAweDAxQzEsCiAgY2xpY2tyZXRyb2ZsZXg6IDB4MDFDMywKICBjbHViOiAweDI2NjMsCiAgY2x1YnN1aXRibGFjazogMHgyNjYzLAogIGNsdWJzdWl0d2hpdGU6IDB4MjY2NywKICBjbWN1YmVkc3F1YXJlOiAweDMzQTQsCiAgY21vbm9zcGFjZTogMHhGRjQzLAogIGNtc3F1YXJlZHNxdWFyZTogMHgzM0EwLAogIGNvYXJtZW5pYW46IDB4MDU4MSwKICBjb2xvbjogMHgwMDNBLAogIGNvbG9ubW9uZXRhcnk6IDB4MjBBMSwKICBjb2xvbm1vbm9zcGFjZTogMHhGRjFBLAogIGNvbG9uc2lnbjogMHgyMEExLAogIGNvbG9uc21hbGw6IDB4RkU1NSwKICBjb2xvbnRyaWFuZ3VsYXJoYWxmbW9kOiAweDAyRDEsCiAgY29sb250cmlhbmd1bGFybW9kOiAweDAyRDAsCiAgY29tbWE6IDB4MDAyQywKICBjb21tYWFib3ZlY21iOiAweDAzMTMsCiAgY29tbWFhYm92ZXJpZ2h0Y21iOiAweDAzMTUsCiAgY29tbWFhY2NlbnQ6IDB4RjZDMywKICBjb21tYWFyYWJpYzogMHgwNjBDLAogIGNvbW1hYXJtZW5pYW46IDB4MDU1RCwKICBjb21tYWluZmVyaW9yOiAweEY2RTEsCiAgY29tbWFtb25vc3BhY2U6IDB4RkYwQywKICBjb21tYXJldmVyc2VkYWJvdmVjbWI6IDB4MDMxNCwKICBjb21tYXJldmVyc2VkbW9kOiAweDAyQkQsCiAgY29tbWFzbWFsbDogMHhGRTUwLAogIGNvbW1hc3VwZXJpb3I6IDB4RjZFMiwKICBjb21tYXR1cm5lZGFib3ZlY21iOiAweDAzMTIsCiAgY29tbWF0dXJuZWRtb2Q6IDB4MDJCQiwKICBjb21wYXNzOiAweDI2M0MsCiAgY29uZ3J1ZW50OiAweDIyNDUsCiAgY29udG91cmludGVncmFsOiAweDIyMkUsCiAgY29udHJvbDogMHgyMzAzLAogIGNvbnRyb2xBQ0s6IDB4MDAwNiwKICBjb250cm9sQkVMOiAweDAwMDcsCiAgY29udHJvbEJTOiAweDAwMDgsCiAgY29udHJvbENBTjogMHgwMDE4LAogIGNvbnRyb2xDUjogMHgwMDBELAogIGNvbnRyb2xEQzE6IDB4MDAxMSwKICBjb250cm9sREMyOiAweDAwMTIsCiAgY29udHJvbERDMzogMHgwMDEzLAogIGNvbnRyb2xEQzQ6IDB4MDAxNCwKICBjb250cm9sREVMOiAweDAwN0YsCiAgY29udHJvbERMRTogMHgwMDEwLAogIGNvbnRyb2xFTTogMHgwMDE5LAogIGNvbnRyb2xFTlE6IDB4MDAwNSwKICBjb250cm9sRU9UOiAweDAwMDQsCiAgY29udHJvbEVTQzogMHgwMDFCLAogIGNvbnRyb2xFVEI6IDB4MDAxNywKICBjb250cm9sRVRYOiAweDAwMDMsCiAgY29udHJvbEZGOiAweDAwMEMsCiAgY29udHJvbEZTOiAweDAwMUMsCiAgY29udHJvbEdTOiAweDAwMUQsCiAgY29udHJvbEhUOiAweDAwMDksCiAgY29udHJvbExGOiAweDAwMEEsCiAgY29udHJvbE5BSzogMHgwMDE1LAogIGNvbnRyb2xSUzogMHgwMDFFLAogIGNvbnRyb2xTSTogMHgwMDBGLAogIGNvbnRyb2xTTzogMHgwMDBFLAogIGNvbnRyb2xTT1Q6IDB4MDAwMiwKICBjb250cm9sU1RYOiAweDAwMDEsCiAgY29udHJvbFNVQjogMHgwMDFBLAogIGNvbnRyb2xTWU46IDB4MDAxNiwKICBjb250cm9sVVM6IDB4MDAxRiwKICBjb250cm9sVlQ6IDB4MDAwQiwKICBjb3B5cmlnaHQ6IDB4MDBBOSwKICBjb3B5cmlnaHRzYW5zOiAweEY4RTksCiAgY29weXJpZ2h0c2VyaWY6IDB4RjZEOSwKICBjb3JuZXJicmFja2V0bGVmdDogMHgzMDBDLAogIGNvcm5lcmJyYWNrZXRsZWZ0aGFsZndpZHRoOiAweEZGNjIsCiAgY29ybmVyYnJhY2tldGxlZnR2ZXJ0aWNhbDogMHhGRTQxLAogIGNvcm5lcmJyYWNrZXRyaWdodDogMHgzMDBELAogIGNvcm5lcmJyYWNrZXRyaWdodGhhbGZ3aWR0aDogMHhGRjYzLAogIGNvcm5lcmJyYWNrZXRyaWdodHZlcnRpY2FsOiAweEZFNDIsCiAgY29ycG9yYXRpb25zcXVhcmU6IDB4MzM3RiwKICBjb3NxdWFyZTogMHgzM0M3LAogIGNvdmVya2dzcXVhcmU6IDB4MzNDNiwKICBjcGFyZW46IDB4MjQ5RSwKICBjcnV6ZWlybzogMHgyMEEyLAogIGNzdHJldGNoZWQ6IDB4MDI5NywKICBjdXJseWFuZDogMHgyMkNGLAogIGN1cmx5b3I6IDB4MjJDRSwKICBjdXJyZW5jeTogMHgwMEE0LAogIGN5ckJyZXZlOiAweEY2RDEsCiAgY3lyRmxleDogMHhGNkQyLAogIGN5cmJyZXZlOiAweEY2RDQsCiAgY3lyZmxleDogMHhGNkQ1LAogIGQ6IDB4MDA2NCwKICBkYWFybWVuaWFuOiAweDA1NjQsCiAgZGFiZW5nYWxpOiAweDA5QTYsCiAgZGFkYXJhYmljOiAweDA2MzYsCiAgZGFkZXZhOiAweDA5MjYsCiAgZGFkZmluYWxhcmFiaWM6IDB4RkVCRSwKICBkYWRpbml0aWFsYXJhYmljOiAweEZFQkYsCiAgZGFkbWVkaWFsYXJhYmljOiAweEZFQzAsCiAgZGFnZXNoOiAweDA1QkMsCiAgZGFnZXNoaGVicmV3OiAweDA1QkMsCiAgZGFnZ2VyOiAweDIwMjAsCiAgZGFnZ2VyZGJsOiAweDIwMjEsCiAgZGFndWphcmF0aTogMHgwQUE2LAogIGRhZ3VybXVraGk6IDB4MEEyNiwKICBkYWhpcmFnYW5hOiAweDMwNjAsCiAgZGFrYXRha2FuYTogMHgzMEMwLAogIGRhbGFyYWJpYzogMHgwNjJGLAogIGRhbGV0OiAweDA1RDMsCiAgZGFsZXRkYWdlc2g6IDB4RkIzMywKICBkYWxldGRhZ2VzaGhlYnJldzogMHhGQjMzLAogIGRhbGV0aGVicmV3OiAweDA1RDMsCiAgZGFsZmluYWxhcmFiaWM6IDB4RkVBQSwKICBkYW1tYWFyYWJpYzogMHgwNjRGLAogIGRhbW1hbG93YXJhYmljOiAweDA2NEYsCiAgZGFtbWF0YW5hbHRvbmVhcmFiaWM6IDB4MDY0QywKICBkYW1tYXRhbmFyYWJpYzogMHgwNjRDLAogIGRhbmRhOiAweDA5NjQsCiAgZGFyZ2FoZWJyZXc6IDB4MDVBNywKICBkYXJnYWxlZnRoZWJyZXc6IDB4MDVBNywKICBkYXNpYXBuZXVtYXRhY3lyaWxsaWNjbWI6IDB4MDQ4NSwKICBkYmxHcmF2ZTogMHhGNkQzLAogIGRibGFuZ2xlYnJhY2tldGxlZnQ6IDB4MzAwQSwKICBkYmxhbmdsZWJyYWNrZXRsZWZ0dmVydGljYWw6IDB4RkUzRCwKICBkYmxhbmdsZWJyYWNrZXRyaWdodDogMHgzMDBCLAogIGRibGFuZ2xlYnJhY2tldHJpZ2h0dmVydGljYWw6IDB4RkUzRSwKICBkYmxhcmNoaW52ZXJ0ZWRiZWxvd2NtYjogMHgwMzJCLAogIGRibGFycm93bGVmdDogMHgyMUQ0LAogIGRibGFycm93cmlnaHQ6IDB4MjFEMiwKICBkYmxkYW5kYTogMHgwOTY1LAogIGRibGdyYXZlOiAweEY2RDYsCiAgZGJsZ3JhdmVjbWI6IDB4MDMwRiwKICBkYmxpbnRlZ3JhbDogMHgyMjJDLAogIGRibGxvd2xpbmU6IDB4MjAxNywKICBkYmxsb3dsaW5lY21iOiAweDAzMzMsCiAgZGJsb3ZlcmxpbmVjbWI6IDB4MDMzRiwKICBkYmxwcmltZW1vZDogMHgwMkJBLAogIGRibHZlcnRpY2FsYmFyOiAweDIwMTYsCiAgZGJsdmVydGljYWxsaW5lYWJvdmVjbWI6IDB4MDMwRSwKICBkYm9wb21vZm86IDB4MzEwOSwKICBkYnNxdWFyZTogMHgzM0M4LAogIGRjYXJvbjogMHgwMTBGLAogIGRjZWRpbGxhOiAweDFFMTEsCiAgZGNpcmNsZTogMHgyNEQzLAogIGRjaXJjdW1mbGV4YmVsb3c6IDB4MUUxMywKICBkY3JvYXQ6IDB4MDExMSwKICBkZGFiZW5nYWxpOiAweDA5QTEsCiAgZGRhZGV2YTogMHgwOTIxLAogIGRkYWd1amFyYXRpOiAweDBBQTEsCiAgZGRhZ3VybXVraGk6IDB4MEEyMSwKICBkZGFsYXJhYmljOiAweDA2ODgsCiAgZGRhbGZpbmFsYXJhYmljOiAweEZCODksCiAgZGRkaGFkZXZhOiAweDA5NUMsCiAgZGRoYWJlbmdhbGk6IDB4MDlBMiwKICBkZGhhZGV2YTogMHgwOTIyLAogIGRkaGFndWphcmF0aTogMHgwQUEyLAogIGRkaGFndXJtdWtoaTogMHgwQTIyLAogIGRkb3RhY2NlbnQ6IDB4MUUwQiwKICBkZG90YmVsb3c6IDB4MUUwRCwKICBkZWNpbWFsc2VwYXJhdG9yYXJhYmljOiAweDA2NkIsCiAgZGVjaW1hbHNlcGFyYXRvcnBlcnNpYW46IDB4MDY2QiwKICBkZWN5cmlsbGljOiAweDA0MzQsCiAgZGVncmVlOiAweDAwQjAsCiAgZGVoaWhlYnJldzogMHgwNUFELAogIGRlaGlyYWdhbmE6IDB4MzA2NywKICBkZWljb3B0aWM6IDB4MDNFRiwKICBkZWthdGFrYW5hOiAweDMwQzcsCiAgZGVsZXRlbGVmdDogMHgyMzJCLAogIGRlbGV0ZXJpZ2h0OiAweDIzMjYsCiAgZGVsdGE6IDB4MDNCNCwKICBkZWx0YXR1cm5lZDogMHgwMThELAogIGRlbm9taW5hdG9ybWludXNvbmVudW1lcmF0b3JiZW5nYWxpOiAweDA5RjgsCiAgZGV6aDogMHgwMkE0LAogIGRoYWJlbmdhbGk6IDB4MDlBNywKICBkaGFkZXZhOiAweDA5MjcsCiAgZGhhZ3VqYXJhdGk6IDB4MEFBNywKICBkaGFndXJtdWtoaTogMHgwQTI3LAogIGRob29rOiAweDAyNTcsCiAgZGlhbHl0aWthdG9ub3M6IDB4MDM4NSwKICBkaWFseXRpa2F0b25vc2NtYjogMHgwMzQ0LAogIGRpYW1vbmQ6IDB4MjY2NiwKICBkaWFtb25kc3VpdHdoaXRlOiAweDI2NjIsCiAgZGllcmVzaXM6IDB4MDBBOCwKICBkaWVyZXNpc2FjdXRlOiAweEY2RDcsCiAgZGllcmVzaXNiZWxvd2NtYjogMHgwMzI0LAogIGRpZXJlc2lzY21iOiAweDAzMDgsCiAgZGllcmVzaXNncmF2ZTogMHhGNkQ4LAogIGRpZXJlc2lzdG9ub3M6IDB4MDM4NSwKICBkaWhpcmFnYW5hOiAweDMwNjIsCiAgZGlrYXRha2FuYTogMHgzMEMyLAogIGRpdHRvbWFyazogMHgzMDAzLAogIGRpdmlkZTogMHgwMEY3LAogIGRpdmlkZXM6IDB4MjIyMywKICBkaXZpc2lvbnNsYXNoOiAweDIyMTUsCiAgZGplY3lyaWxsaWM6IDB4MDQ1MiwKICBka3NoYWRlOiAweDI1OTMsCiAgZGxpbmViZWxvdzogMHgxRTBGLAogIGRsc3F1YXJlOiAweDMzOTcsCiAgZG1hY3JvbjogMHgwMTExLAogIGRtb25vc3BhY2U6IDB4RkY0NCwKICBkbmJsb2NrOiAweDI1ODQsCiAgZG9jaGFkYXRoYWk6IDB4MEUwRSwKICBkb2Rla3RoYWk6IDB4MEUxNCwKICBkb2hpcmFnYW5hOiAweDMwNjksCiAgZG9rYXRha2FuYTogMHgzMEM5LAogIGRvbGxhcjogMHgwMDI0LAogIGRvbGxhcmluZmVyaW9yOiAweEY2RTMsCiAgZG9sbGFybW9ub3NwYWNlOiAweEZGMDQsCiAgZG9sbGFyb2xkc3R5bGU6IDB4RjcyNCwKICBkb2xsYXJzbWFsbDogMHhGRTY5LAogIGRvbGxhcnN1cGVyaW9yOiAweEY2RTQsCiAgZG9uZzogMHgyMEFCLAogIGRvcnVzcXVhcmU6IDB4MzMyNiwKICBkb3RhY2NlbnQ6IDB4MDJEOSwKICBkb3RhY2NlbnRjbWI6IDB4MDMwNywKICBkb3RiZWxvd2NtYjogMHgwMzIzLAogIGRvdGJlbG93Y29tYjogMHgwMzIzLAogIGRvdGthdGFrYW5hOiAweDMwRkIsCiAgZG90bGVzc2k6IDB4MDEzMSwKICBkb3RsZXNzajogMHhGNkJFLAogIGRvdGxlc3Nqc3Ryb2tlaG9vazogMHgwMjg0LAogIGRvdG1hdGg6IDB4MjJDNSwKICBkb3R0ZWRjaXJjbGU6IDB4MjVDQywKICBkb3VibGV5b2RwYXRhaDogMHhGQjFGLAogIGRvdWJsZXlvZHBhdGFoaGVicmV3OiAweEZCMUYsCiAgZG93bnRhY2tiZWxvd2NtYjogMHgwMzFFLAogIGRvd250YWNrbW9kOiAweDAyRDUsCiAgZHBhcmVuOiAweDI0OUYsCiAgZHN1cGVyaW9yOiAweEY2RUIsCiAgZHRhaWw6IDB4MDI1NiwKICBkdG9wYmFyOiAweDAxOEMsCiAgZHVoaXJhZ2FuYTogMHgzMDY1LAogIGR1a2F0YWthbmE6IDB4MzBDNSwKICBkejogMHgwMUYzLAogIGR6YWx0b25lOiAweDAyQTMsCiAgZHpjYXJvbjogMHgwMUM2LAogIGR6Y3VybDogMHgwMkE1LAogIGR6ZWFia2hhc2lhbmN5cmlsbGljOiAweDA0RTEsCiAgZHplY3lyaWxsaWM6IDB4MDQ1NSwKICBkemhlY3lyaWxsaWM6IDB4MDQ1RiwKICBlOiAweDAwNjUsCiAgZWFjdXRlOiAweDAwRTksCiAgZWFydGg6IDB4MjY0MSwKICBlYmVuZ2FsaTogMHgwOThGLAogIGVib3BvbW9mbzogMHgzMTFDLAogIGVicmV2ZTogMHgwMTE1LAogIGVjYW5kcmFkZXZhOiAweDA5MEQsCiAgZWNhbmRyYWd1amFyYXRpOiAweDBBOEQsCiAgZWNhbmRyYXZvd2Vsc2lnbmRldmE6IDB4MDk0NSwKICBlY2FuZHJhdm93ZWxzaWduZ3VqYXJhdGk6IDB4MEFDNSwKICBlY2Fyb246IDB4MDExQiwKICBlY2VkaWxsYWJyZXZlOiAweDFFMUQsCiAgZWNoYXJtZW5pYW46IDB4MDU2NSwKICBlY2h5aXduYXJtZW5pYW46IDB4MDU4NywKICBlY2lyY2xlOiAweDI0RDQsCiAgZWNpcmN1bWZsZXg6IDB4MDBFQSwKICBlY2lyY3VtZmxleGFjdXRlOiAweDFFQkYsCiAgZWNpcmN1bWZsZXhiZWxvdzogMHgxRTE5LAogIGVjaXJjdW1mbGV4ZG90YmVsb3c6IDB4MUVDNywKICBlY2lyY3VtZmxleGdyYXZlOiAweDFFQzEsCiAgZWNpcmN1bWZsZXhob29rYWJvdmU6IDB4MUVDMywKICBlY2lyY3VtZmxleHRpbGRlOiAweDFFQzUsCiAgZWN5cmlsbGljOiAweDA0NTQsCiAgZWRibGdyYXZlOiAweDAyMDUsCiAgZWRldmE6IDB4MDkwRiwKICBlZGllcmVzaXM6IDB4MDBFQiwKICBlZG90OiAweDAxMTcsCiAgZWRvdGFjY2VudDogMHgwMTE3LAogIGVkb3RiZWxvdzogMHgxRUI5LAogIGVlZ3VybXVraGk6IDB4MEEwRiwKICBlZW1hdHJhZ3VybXVraGk6IDB4MEE0NywKICBlZmN5cmlsbGljOiAweDA0NDQsCiAgZWdyYXZlOiAweDAwRTgsCiAgZWd1amFyYXRpOiAweDBBOEYsCiAgZWhhcm1lbmlhbjogMHgwNTY3LAogIGVoYm9wb21vZm86IDB4MzExRCwKICBlaGlyYWdhbmE6IDB4MzA0OCwKICBlaG9va2Fib3ZlOiAweDFFQkIsCiAgZWlib3BvbW9mbzogMHgzMTFGLAogIGVpZ2h0OiAweDAwMzgsCiAgZWlnaHRhcmFiaWM6IDB4MDY2OCwKICBlaWdodGJlbmdhbGk6IDB4MDlFRSwKICBlaWdodGNpcmNsZTogMHgyNDY3LAogIGVpZ2h0Y2lyY2xlaW52ZXJzZXNhbnNzZXJpZjogMHgyNzkxLAogIGVpZ2h0ZGV2YTogMHgwOTZFLAogIGVpZ2h0ZWVuY2lyY2xlOiAweDI0NzEsCiAgZWlnaHRlZW5wYXJlbjogMHgyNDg1LAogIGVpZ2h0ZWVucGVyaW9kOiAweDI0OTksCiAgZWlnaHRndWphcmF0aTogMHgwQUVFLAogIGVpZ2h0Z3VybXVraGk6IDB4MEE2RSwKICBlaWdodGhhY2thcmFiaWM6IDB4MDY2OCwKICBlaWdodGhhbmd6aG91OiAweDMwMjgsCiAgZWlnaHRobm90ZWJlYW1lZDogMHgyNjZCLAogIGVpZ2h0aWRlb2dyYXBoaWNwYXJlbjogMHgzMjI3LAogIGVpZ2h0aW5mZXJpb3I6IDB4MjA4OCwKICBlaWdodG1vbm9zcGFjZTogMHhGRjE4LAogIGVpZ2h0b2xkc3R5bGU6IDB4RjczOCwKICBlaWdodHBhcmVuOiAweDI0N0IsCiAgZWlnaHRwZXJpb2Q6IDB4MjQ4RiwKICBlaWdodHBlcnNpYW46IDB4MDZGOCwKICBlaWdodHJvbWFuOiAweDIxNzcsCiAgZWlnaHRzdXBlcmlvcjogMHgyMDc4LAogIGVpZ2h0dGhhaTogMHgwRTU4LAogIGVpbnZlcnRlZGJyZXZlOiAweDAyMDcsCiAgZWlvdGlmaWVkY3lyaWxsaWM6IDB4MDQ2NSwKICBla2F0YWthbmE6IDB4MzBBOCwKICBla2F0YWthbmFoYWxmd2lkdGg6IDB4RkY3NCwKICBla29ua2FyZ3VybXVraGk6IDB4MEE3NCwKICBla29yZWFuOiAweDMxNTQsCiAgZWxjeXJpbGxpYzogMHgwNDNCLAogIGVsZW1lbnQ6IDB4MjIwOCwKICBlbGV2ZW5jaXJjbGU6IDB4MjQ2QSwKICBlbGV2ZW5wYXJlbjogMHgyNDdFLAogIGVsZXZlbnBlcmlvZDogMHgyNDkyLAogIGVsZXZlbnJvbWFuOiAweDIxN0EsCiAgZWxsaXBzaXM6IDB4MjAyNiwKICBlbGxpcHNpc3ZlcnRpY2FsOiAweDIyRUUsCiAgZW1hY3JvbjogMHgwMTEzLAogIGVtYWNyb25hY3V0ZTogMHgxRTE3LAogIGVtYWNyb25ncmF2ZTogMHgxRTE1LAogIGVtY3lyaWxsaWM6IDB4MDQzQywKICBlbWRhc2g6IDB4MjAxNCwKICBlbWRhc2h2ZXJ0aWNhbDogMHhGRTMxLAogIGVtb25vc3BhY2U6IDB4RkY0NSwKICBlbXBoYXNpc21hcmthcm1lbmlhbjogMHgwNTVCLAogIGVtcHR5c2V0OiAweDIyMDUsCiAgZW5ib3BvbW9mbzogMHgzMTIzLAogIGVuY3lyaWxsaWM6IDB4MDQzRCwKICBlbmRhc2g6IDB4MjAxMywKICBlbmRhc2h2ZXJ0aWNhbDogMHhGRTMyLAogIGVuZGVzY2VuZGVyY3lyaWxsaWM6IDB4MDRBMywKICBlbmc6IDB4MDE0QiwKICBlbmdib3BvbW9mbzogMHgzMTI1LAogIGVuZ2hlY3lyaWxsaWM6IDB4MDRBNSwKICBlbmhvb2tjeXJpbGxpYzogMHgwNEM4LAogIGVuc3BhY2U6IDB4MjAwMiwKICBlb2dvbmVrOiAweDAxMTksCiAgZW9rb3JlYW46IDB4MzE1MywKICBlb3BlbjogMHgwMjVCLAogIGVvcGVuY2xvc2VkOiAweDAyOUEsCiAgZW9wZW5yZXZlcnNlZDogMHgwMjVDLAogIGVvcGVucmV2ZXJzZWRjbG9zZWQ6IDB4MDI1RSwKICBlb3BlbnJldmVyc2VkaG9vazogMHgwMjVELAogIGVwYXJlbjogMHgyNEEwLAogIGVwc2lsb246IDB4MDNCNSwKICBlcHNpbG9udG9ub3M6IDB4MDNBRCwKICBlcXVhbDogMHgwMDNELAogIGVxdWFsbW9ub3NwYWNlOiAweEZGMUQsCiAgZXF1YWxzbWFsbDogMHhGRTY2LAogIGVxdWFsc3VwZXJpb3I6IDB4MjA3QywKICBlcXVpdmFsZW5jZTogMHgyMjYxLAogIGVyYm9wb21vZm86IDB4MzEyNiwKICBlcmN5cmlsbGljOiAweDA0NDAsCiAgZXJldmVyc2VkOiAweDAyNTgsCiAgZXJldmVyc2VkY3lyaWxsaWM6IDB4MDQ0RCwKICBlc2N5cmlsbGljOiAweDA0NDEsCiAgZXNkZXNjZW5kZXJjeXJpbGxpYzogMHgwNEFCLAogIGVzaDogMHgwMjgzLAogIGVzaGN1cmw6IDB4MDI4NiwKICBlc2hvcnRkZXZhOiAweDA5MEUsCiAgZXNob3J0dm93ZWxzaWduZGV2YTogMHgwOTQ2LAogIGVzaHJldmVyc2VkbG9vcDogMHgwMUFBLAogIGVzaHNxdWF0cmV2ZXJzZWQ6IDB4MDI4NSwKICBlc21hbGxoaXJhZ2FuYTogMHgzMDQ3LAogIGVzbWFsbGthdGFrYW5hOiAweDMwQTcsCiAgZXNtYWxsa2F0YWthbmFoYWxmd2lkdGg6IDB4RkY2QSwKICBlc3RpbWF0ZWQ6IDB4MjEyRSwKICBlc3VwZXJpb3I6IDB4RjZFQywKICBldGE6IDB4MDNCNywKICBldGFybWVuaWFuOiAweDA1NjgsCiAgZXRhdG9ub3M6IDB4MDNBRSwKICBldGg6IDB4MDBGMCwKICBldGlsZGU6IDB4MUVCRCwKICBldGlsZGViZWxvdzogMHgxRTFCLAogIGV0bmFodGFmb3VraGhlYnJldzogMHgwNTkxLAogIGV0bmFodGFmb3VraGxlZnRoZWJyZXc6IDB4MDU5MSwKICBldG5haHRhaGVicmV3OiAweDA1OTEsCiAgZXRuYWh0YWxlZnRoZWJyZXc6IDB4MDU5MSwKICBldHVybmVkOiAweDAxREQsCiAgZXVrb3JlYW46IDB4MzE2MSwKICBldXJvOiAweDIwQUMsCiAgZXZvd2Vsc2lnbmJlbmdhbGk6IDB4MDlDNywKICBldm93ZWxzaWduZGV2YTogMHgwOTQ3LAogIGV2b3dlbHNpZ25ndWphcmF0aTogMHgwQUM3LAogIGV4Y2xhbTogMHgwMDIxLAogIGV4Y2xhbWFybWVuaWFuOiAweDA1NUMsCiAgZXhjbGFtZGJsOiAweDIwM0MsCiAgZXhjbGFtZG93bjogMHgwMEExLAogIGV4Y2xhbWRvd25zbWFsbDogMHhGN0ExLAogIGV4Y2xhbW1vbm9zcGFjZTogMHhGRjAxLAogIGV4Y2xhbXNtYWxsOiAweEY3MjEsCiAgZXhpc3RlbnRpYWw6IDB4MjIwMywKICBlemg6IDB4MDI5MiwKICBlemhjYXJvbjogMHgwMUVGLAogIGV6aGN1cmw6IDB4MDI5MywKICBlemhyZXZlcnNlZDogMHgwMUI5LAogIGV6aHRhaWw6IDB4MDFCQSwKICBmOiAweDAwNjYsCiAgZmFkZXZhOiAweDA5NUUsCiAgZmFndXJtdWtoaTogMHgwQTVFLAogIGZhaHJlbmhlaXQ6IDB4MjEwOSwKICBmYXRoYWFyYWJpYzogMHgwNjRFLAogIGZhdGhhbG93YXJhYmljOiAweDA2NEUsCiAgZmF0aGF0YW5hcmFiaWM6IDB4MDY0QiwKICBmYm9wb21vZm86IDB4MzEwOCwKICBmY2lyY2xlOiAweDI0RDUsCiAgZmRvdGFjY2VudDogMHgxRTFGLAogIGZlaGFyYWJpYzogMHgwNjQxLAogIGZlaGFybWVuaWFuOiAweDA1ODYsCiAgZmVoZmluYWxhcmFiaWM6IDB4RkVEMiwKICBmZWhpbml0aWFsYXJhYmljOiAweEZFRDMsCiAgZmVobWVkaWFsYXJhYmljOiAweEZFRDQsCiAgZmVpY29wdGljOiAweDAzRTUsCiAgZmVtYWxlOiAweDI2NDAsCiAgZmY6IDB4RkIwMCwKICBmZmk6IDB4RkIwMywKICBmZmw6IDB4RkIwNCwKICBmaTogMHhGQjAxLAogIGZpZnRlZW5jaXJjbGU6IDB4MjQ2RSwKICBmaWZ0ZWVucGFyZW46IDB4MjQ4MiwKICBmaWZ0ZWVucGVyaW9kOiAweDI0OTYsCiAgZmlndXJlZGFzaDogMHgyMDEyLAogIGZpbGxlZGJveDogMHgyNUEwLAogIGZpbGxlZHJlY3Q6IDB4MjVBQywKICBmaW5hbGthZjogMHgwNURBLAogIGZpbmFsa2FmZGFnZXNoOiAweEZCM0EsCiAgZmluYWxrYWZkYWdlc2hoZWJyZXc6IDB4RkIzQSwKICBmaW5hbGthZmhlYnJldzogMHgwNURBLAogIGZpbmFsbWVtOiAweDA1REQsCiAgZmluYWxtZW1oZWJyZXc6IDB4MDVERCwKICBmaW5hbG51bjogMHgwNURGLAogIGZpbmFsbnVuaGVicmV3OiAweDA1REYsCiAgZmluYWxwZTogMHgwNUUzLAogIGZpbmFscGVoZWJyZXc6IDB4MDVFMywKICBmaW5hbHRzYWRpOiAweDA1RTUsCiAgZmluYWx0c2FkaWhlYnJldzogMHgwNUU1LAogIGZpcnN0dG9uZWNoaW5lc2U6IDB4MDJDOSwKICBmaXNoZXllOiAweDI1QzksCiAgZml0YWN5cmlsbGljOiAweDA0NzMsCiAgZml2ZTogMHgwMDM1LAogIGZpdmVhcmFiaWM6IDB4MDY2NSwKICBmaXZlYmVuZ2FsaTogMHgwOUVCLAogIGZpdmVjaXJjbGU6IDB4MjQ2NCwKICBmaXZlY2lyY2xlaW52ZXJzZXNhbnNzZXJpZjogMHgyNzhFLAogIGZpdmVkZXZhOiAweDA5NkIsCiAgZml2ZWVpZ2h0aHM6IDB4MjE1RCwKICBmaXZlZ3VqYXJhdGk6IDB4MEFFQiwKICBmaXZlZ3VybXVraGk6IDB4MEE2QiwKICBmaXZlaGFja2FyYWJpYzogMHgwNjY1LAogIGZpdmVoYW5nemhvdTogMHgzMDI1LAogIGZpdmVpZGVvZ3JhcGhpY3BhcmVuOiAweDMyMjQsCiAgZml2ZWluZmVyaW9yOiAweDIwODUsCiAgZml2ZW1vbm9zcGFjZTogMHhGRjE1LAogIGZpdmVvbGRzdHlsZTogMHhGNzM1LAogIGZpdmVwYXJlbjogMHgyNDc4LAogIGZpdmVwZXJpb2Q6IDB4MjQ4QywKICBmaXZlcGVyc2lhbjogMHgwNkY1LAogIGZpdmVyb21hbjogMHgyMTc0LAogIGZpdmVzdXBlcmlvcjogMHgyMDc1LAogIGZpdmV0aGFpOiAweDBFNTUsCiAgZmw6IDB4RkIwMiwKICBmbG9yaW46IDB4MDE5MiwKICBmbW9ub3NwYWNlOiAweEZGNDYsCiAgZm1zcXVhcmU6IDB4MzM5OSwKICBmb2ZhbnRoYWk6IDB4MEUxRiwKICBmb2ZhdGhhaTogMHgwRTFELAogIGZvbmdtYW50aGFpOiAweDBFNEYsCiAgZm9yYWxsOiAweDIyMDAsCiAgZm91cjogMHgwMDM0LAogIGZvdXJhcmFiaWM6IDB4MDY2NCwKICBmb3VyYmVuZ2FsaTogMHgwOUVBLAogIGZvdXJjaXJjbGU6IDB4MjQ2MywKICBmb3VyY2lyY2xlaW52ZXJzZXNhbnNzZXJpZjogMHgyNzhELAogIGZvdXJkZXZhOiAweDA5NkEsCiAgZm91cmd1amFyYXRpOiAweDBBRUEsCiAgZm91cmd1cm11a2hpOiAweDBBNkEsCiAgZm91cmhhY2thcmFiaWM6IDB4MDY2NCwKICBmb3VyaGFuZ3pob3U6IDB4MzAyNCwKICBmb3VyaWRlb2dyYXBoaWNwYXJlbjogMHgzMjIzLAogIGZvdXJpbmZlcmlvcjogMHgyMDg0LAogIGZvdXJtb25vc3BhY2U6IDB4RkYxNCwKICBmb3VybnVtZXJhdG9yYmVuZ2FsaTogMHgwOUY3LAogIGZvdXJvbGRzdHlsZTogMHhGNzM0LAogIGZvdXJwYXJlbjogMHgyNDc3LAogIGZvdXJwZXJpb2Q6IDB4MjQ4QiwKICBmb3VycGVyc2lhbjogMHgwNkY0LAogIGZvdXJyb21hbjogMHgyMTczLAogIGZvdXJzdXBlcmlvcjogMHgyMDc0LAogIGZvdXJ0ZWVuY2lyY2xlOiAweDI0NkQsCiAgZm91cnRlZW5wYXJlbjogMHgyNDgxLAogIGZvdXJ0ZWVucGVyaW9kOiAweDI0OTUsCiAgZm91cnRoYWk6IDB4MEU1NCwKICBmb3VydGh0b25lY2hpbmVzZTogMHgwMkNCLAogIGZwYXJlbjogMHgyNEExLAogIGZyYWN0aW9uOiAweDIwNDQsCiAgZnJhbmM6IDB4MjBBMywKICBnOiAweDAwNjcsCiAgZ2FiZW5nYWxpOiAweDA5OTcsCiAgZ2FjdXRlOiAweDAxRjUsCiAgZ2FkZXZhOiAweDA5MTcsCiAgZ2FmYXJhYmljOiAweDA2QUYsCiAgZ2FmZmluYWxhcmFiaWM6IDB4RkI5MywKICBnYWZpbml0aWFsYXJhYmljOiAweEZCOTQsCiAgZ2FmbWVkaWFsYXJhYmljOiAweEZCOTUsCiAgZ2FndWphcmF0aTogMHgwQTk3LAogIGdhZ3VybXVraGk6IDB4MEExNywKICBnYWhpcmFnYW5hOiAweDMwNEMsCiAgZ2FrYXRha2FuYTogMHgzMEFDLAogIGdhbW1hOiAweDAzQjMsCiAgZ2FtbWFsYXRpbnNtYWxsOiAweDAyNjMsCiAgZ2FtbWFzdXBlcmlvcjogMHgwMkUwLAogIGdhbmdpYWNvcHRpYzogMHgwM0VCLAogIGdib3BvbW9mbzogMHgzMTBELAogIGdicmV2ZTogMHgwMTFGLAogIGdjYXJvbjogMHgwMUU3LAogIGdjZWRpbGxhOiAweDAxMjMsCiAgZ2NpcmNsZTogMHgyNEQ2LAogIGdjaXJjdW1mbGV4OiAweDAxMUQsCiAgZ2NvbW1hYWNjZW50OiAweDAxMjMsCiAgZ2RvdDogMHgwMTIxLAogIGdkb3RhY2NlbnQ6IDB4MDEyMSwKICBnZWN5cmlsbGljOiAweDA0MzMsCiAgZ2VoaXJhZ2FuYTogMHgzMDUyLAogIGdla2F0YWthbmE6IDB4MzBCMiwKICBnZW9tZXRyaWNhbGx5ZXF1YWw6IDB4MjI1MSwKICBnZXJlc2hhY2NlbnRoZWJyZXc6IDB4MDU5QywKICBnZXJlc2hoZWJyZXc6IDB4MDVGMywKICBnZXJlc2htdXFkYW1oZWJyZXc6IDB4MDU5RCwKICBnZXJtYW5kYmxzOiAweDAwREYsCiAgZ2Vyc2hheWltYWNjZW50aGVicmV3OiAweDA1OUUsCiAgZ2Vyc2hheWltaGVicmV3OiAweDA1RjQsCiAgZ2V0YW1hcms6IDB4MzAxMywKICBnaGFiZW5nYWxpOiAweDA5OTgsCiAgZ2hhZGFybWVuaWFuOiAweDA1NzIsCiAgZ2hhZGV2YTogMHgwOTE4LAogIGdoYWd1amFyYXRpOiAweDBBOTgsCiAgZ2hhZ3VybXVraGk6IDB4MEExOCwKICBnaGFpbmFyYWJpYzogMHgwNjNBLAogIGdoYWluZmluYWxhcmFiaWM6IDB4RkVDRSwKICBnaGFpbmluaXRpYWxhcmFiaWM6IDB4RkVDRiwKICBnaGFpbm1lZGlhbGFyYWJpYzogMHhGRUQwLAogIGdoZW1pZGRsZWhvb2tjeXJpbGxpYzogMHgwNDk1LAogIGdoZXN0cm9rZWN5cmlsbGljOiAweDA0OTMsCiAgZ2hldXB0dXJuY3lyaWxsaWM6IDB4MDQ5MSwKICBnaGhhZGV2YTogMHgwOTVBLAogIGdoaGFndXJtdWtoaTogMHgwQTVBLAogIGdob29rOiAweDAyNjAsCiAgZ2h6c3F1YXJlOiAweDMzOTMsCiAgZ2loaXJhZ2FuYTogMHgzMDRFLAogIGdpa2F0YWthbmE6IDB4MzBBRSwKICBnaW1hcm1lbmlhbjogMHgwNTYzLAogIGdpbWVsOiAweDA1RDIsCiAgZ2ltZWxkYWdlc2g6IDB4RkIzMiwKICBnaW1lbGRhZ2VzaGhlYnJldzogMHhGQjMyLAogIGdpbWVsaGVicmV3OiAweDA1RDIsCiAgZ2plY3lyaWxsaWM6IDB4MDQ1MywKICBnbG90dGFsaW52ZXJ0ZWRzdHJva2U6IDB4MDFCRSwKICBnbG90dGFsc3RvcDogMHgwMjk0LAogIGdsb3R0YWxzdG9waW52ZXJ0ZWQ6IDB4MDI5NiwKICBnbG90dGFsc3RvcG1vZDogMHgwMkMwLAogIGdsb3R0YWxzdG9wcmV2ZXJzZWQ6IDB4MDI5NSwKICBnbG90dGFsc3RvcHJldmVyc2VkbW9kOiAweDAyQzEsCiAgZ2xvdHRhbHN0b3ByZXZlcnNlZHN1cGVyaW9yOiAweDAyRTQsCiAgZ2xvdHRhbHN0b3BzdHJva2U6IDB4MDJBMSwKICBnbG90dGFsc3RvcHN0cm9rZXJldmVyc2VkOiAweDAyQTIsCiAgZ21hY3JvbjogMHgxRTIxLAogIGdtb25vc3BhY2U6IDB4RkY0NywKICBnb2hpcmFnYW5hOiAweDMwNTQsCiAgZ29rYXRha2FuYTogMHgzMEI0LAogIGdwYXJlbjogMHgyNEEyLAogIGdwYXNxdWFyZTogMHgzM0FDLAogIGdyYWRpZW50OiAweDIyMDcsCiAgZ3JhdmU6IDB4MDA2MCwKICBncmF2ZWJlbG93Y21iOiAweDAzMTYsCiAgZ3JhdmVjbWI6IDB4MDMwMCwKICBncmF2ZWNvbWI6IDB4MDMwMCwKICBncmF2ZWRldmE6IDB4MDk1MywKICBncmF2ZWxvd21vZDogMHgwMkNFLAogIGdyYXZlbW9ub3NwYWNlOiAweEZGNDAsCiAgZ3JhdmV0b25lY21iOiAweDAzNDAsCiAgZ3JlYXRlcjogMHgwMDNFLAogIGdyZWF0ZXJlcXVhbDogMHgyMjY1LAogIGdyZWF0ZXJlcXVhbG9ybGVzczogMHgyMkRCLAogIGdyZWF0ZXJtb25vc3BhY2U6IDB4RkYxRSwKICBncmVhdGVyb3JlcXVpdmFsZW50OiAweDIyNzMsCiAgZ3JlYXRlcm9ybGVzczogMHgyMjc3LAogIGdyZWF0ZXJvdmVyZXF1YWw6IDB4MjI2NywKICBncmVhdGVyc21hbGw6IDB4RkU2NSwKICBnc2NyaXB0OiAweDAyNjEsCiAgZ3N0cm9rZTogMHgwMUU1LAogIGd1aGlyYWdhbmE6IDB4MzA1MCwKICBndWlsbGVtb3RsZWZ0OiAweDAwQUIsCiAgZ3VpbGxlbW90cmlnaHQ6IDB4MDBCQiwKICBndWlsc2luZ2xsZWZ0OiAweDIwMzksCiAgZ3VpbHNpbmdscmlnaHQ6IDB4MjAzQSwKICBndWthdGFrYW5hOiAweDMwQjAsCiAgZ3VyYW11c3F1YXJlOiAweDMzMTgsCiAgZ3lzcXVhcmU6IDB4MzNDOSwKICBoOiAweDAwNjgsCiAgaGFhYmtoYXNpYW5jeXJpbGxpYzogMHgwNEE5LAogIGhhYWx0b25lYXJhYmljOiAweDA2QzEsCiAgaGFiZW5nYWxpOiAweDA5QjksCiAgaGFkZXNjZW5kZXJjeXJpbGxpYzogMHgwNEIzLAogIGhhZGV2YTogMHgwOTM5LAogIGhhZ3VqYXJhdGk6IDB4MEFCOSwKICBoYWd1cm11a2hpOiAweDBBMzksCiAgaGFoYXJhYmljOiAweDA2MkQsCiAgaGFoZmluYWxhcmFiaWM6IDB4RkVBMiwKICBoYWhpbml0aWFsYXJhYmljOiAweEZFQTMsCiAgaGFoaXJhZ2FuYTogMHgzMDZGLAogIGhhaG1lZGlhbGFyYWJpYzogMHhGRUE0LAogIGhhaXR1c3F1YXJlOiAweDMzMkEsCiAgaGFrYXRha2FuYTogMHgzMENGLAogIGhha2F0YWthbmFoYWxmd2lkdGg6IDB4RkY4QSwKICBoYWxhbnRndXJtdWtoaTogMHgwQTRELAogIGhhbXphYXJhYmljOiAweDA2MjEsCiAgaGFtemFsb3dhcmFiaWM6IDB4MDYyMSwKICBoYW5ndWxmaWxsZXI6IDB4MzE2NCwKICBoYXJkc2lnbmN5cmlsbGljOiAweDA0NEEsCiAgaGFycG9vbmxlZnRiYXJidXA6IDB4MjFCQywKICBoYXJwb29ucmlnaHRiYXJidXA6IDB4MjFDMCwKICBoYXNxdWFyZTogMHgzM0NBLAogIGhhdGFmcGF0YWg6IDB4MDVCMiwKICBoYXRhZnBhdGFoMTY6IDB4MDVCMiwKICBoYXRhZnBhdGFoMjM6IDB4MDVCMiwKICBoYXRhZnBhdGFoMmY6IDB4MDVCMiwKICBoYXRhZnBhdGFoaGVicmV3OiAweDA1QjIsCiAgaGF0YWZwYXRhaG5hcnJvd2hlYnJldzogMHgwNUIyLAogIGhhdGFmcGF0YWhxdWFydGVyaGVicmV3OiAweDA1QjIsCiAgaGF0YWZwYXRhaHdpZGVoZWJyZXc6IDB4MDVCMiwKICBoYXRhZnFhbWF0czogMHgwNUIzLAogIGhhdGFmcWFtYXRzMWI6IDB4MDVCMywKICBoYXRhZnFhbWF0czI4OiAweDA1QjMsCiAgaGF0YWZxYW1hdHMzNDogMHgwNUIzLAogIGhhdGFmcWFtYXRzaGVicmV3OiAweDA1QjMsCiAgaGF0YWZxYW1hdHNuYXJyb3doZWJyZXc6IDB4MDVCMywKICBoYXRhZnFhbWF0c3F1YXJ0ZXJoZWJyZXc6IDB4MDVCMywKICBoYXRhZnFhbWF0c3dpZGVoZWJyZXc6IDB4MDVCMywKICBoYXRhZnNlZ29sOiAweDA1QjEsCiAgaGF0YWZzZWdvbDE3OiAweDA1QjEsCiAgaGF0YWZzZWdvbDI0OiAweDA1QjEsCiAgaGF0YWZzZWdvbDMwOiAweDA1QjEsCiAgaGF0YWZzZWdvbGhlYnJldzogMHgwNUIxLAogIGhhdGFmc2Vnb2xuYXJyb3doZWJyZXc6IDB4MDVCMSwKICBoYXRhZnNlZ29scXVhcnRlcmhlYnJldzogMHgwNUIxLAogIGhhdGFmc2Vnb2x3aWRlaGVicmV3OiAweDA1QjEsCiAgaGJhcjogMHgwMTI3LAogIGhib3BvbW9mbzogMHgzMTBGLAogIGhicmV2ZWJlbG93OiAweDFFMkIsCiAgaGNlZGlsbGE6IDB4MUUyOSwKICBoY2lyY2xlOiAweDI0RDcsCiAgaGNpcmN1bWZsZXg6IDB4MDEyNSwKICBoZGllcmVzaXM6IDB4MUUyNywKICBoZG90YWNjZW50OiAweDFFMjMsCiAgaGRvdGJlbG93OiAweDFFMjUsCiAgaGU6IDB4MDVENCwKICBoZWFydDogMHgyNjY1LAogIGhlYXJ0c3VpdGJsYWNrOiAweDI2NjUsCiAgaGVhcnRzdWl0d2hpdGU6IDB4MjY2MSwKICBoZWRhZ2VzaDogMHhGQjM0LAogIGhlZGFnZXNoaGVicmV3OiAweEZCMzQsCiAgaGVoYWx0b25lYXJhYmljOiAweDA2QzEsCiAgaGVoYXJhYmljOiAweDA2NDcsCiAgaGVoZWJyZXc6IDB4MDVENCwKICBoZWhmaW5hbGFsdG9uZWFyYWJpYzogMHhGQkE3LAogIGhlaGZpbmFsYWx0dHdvYXJhYmljOiAweEZFRUEsCiAgaGVoZmluYWxhcmFiaWM6IDB4RkVFQSwKICBoZWhoYW16YWFib3ZlZmluYWxhcmFiaWM6IDB4RkJBNSwKICBoZWhoYW16YWFib3ZlaXNvbGF0ZWRhcmFiaWM6IDB4RkJBNCwKICBoZWhpbml0aWFsYWx0b25lYXJhYmljOiAweEZCQTgsCiAgaGVoaW5pdGlhbGFyYWJpYzogMHhGRUVCLAogIGhlaGlyYWdhbmE6IDB4MzA3OCwKICBoZWhtZWRpYWxhbHRvbmVhcmFiaWM6IDB4RkJBOSwKICBoZWhtZWRpYWxhcmFiaWM6IDB4RkVFQywKICBoZWlzZWllcmFzcXVhcmU6IDB4MzM3QiwKICBoZWthdGFrYW5hOiAweDMwRDgsCiAgaGVrYXRha2FuYWhhbGZ3aWR0aDogMHhGRjhELAogIGhla3V0YWFydXNxdWFyZTogMHgzMzM2LAogIGhlbmdob29rOiAweDAyNjcsCiAgaGVydXR1c3F1YXJlOiAweDMzMzksCiAgaGV0OiAweDA1RDcsCiAgaGV0aGVicmV3OiAweDA1RDcsCiAgaGhvb2s6IDB4MDI2NiwKICBoaG9va3N1cGVyaW9yOiAweDAyQjEsCiAgaGlldWhhY2lyY2xla29yZWFuOiAweDMyN0IsCiAgaGlldWhhcGFyZW5rb3JlYW46IDB4MzIxQiwKICBoaWV1aGNpcmNsZWtvcmVhbjogMHgzMjZELAogIGhpZXVoa29yZWFuOiAweDMxNEUsCiAgaGlldWhwYXJlbmtvcmVhbjogMHgzMjBELAogIGhpaGlyYWdhbmE6IDB4MzA3MiwKICBoaWthdGFrYW5hOiAweDMwRDIsCiAgaGlrYXRha2FuYWhhbGZ3aWR0aDogMHhGRjhCLAogIGhpcmlxOiAweDA1QjQsCiAgaGlyaXExNDogMHgwNUI0LAogIGhpcmlxMjE6IDB4MDVCNCwKICBoaXJpcTJkOiAweDA1QjQsCiAgaGlyaXFoZWJyZXc6IDB4MDVCNCwKICBoaXJpcW5hcnJvd2hlYnJldzogMHgwNUI0LAogIGhpcmlxcXVhcnRlcmhlYnJldzogMHgwNUI0LAogIGhpcmlxd2lkZWhlYnJldzogMHgwNUI0LAogIGhsaW5lYmVsb3c6IDB4MUU5NiwKICBobW9ub3NwYWNlOiAweEZGNDgsCiAgaG9hcm1lbmlhbjogMHgwNTcwLAogIGhvaGlwdGhhaTogMHgwRTJCLAogIGhvaGlyYWdhbmE6IDB4MzA3QiwKICBob2thdGFrYW5hOiAweDMwREIsCiAgaG9rYXRha2FuYWhhbGZ3aWR0aDogMHhGRjhFLAogIGhvbGFtOiAweDA1QjksCiAgaG9sYW0xOTogMHgwNUI5LAogIGhvbGFtMjY6IDB4MDVCOSwKICBob2xhbTMyOiAweDA1QjksCiAgaG9sYW1oZWJyZXc6IDB4MDVCOSwKICBob2xhbW5hcnJvd2hlYnJldzogMHgwNUI5LAogIGhvbGFtcXVhcnRlcmhlYnJldzogMHgwNUI5LAogIGhvbGFtd2lkZWhlYnJldzogMHgwNUI5LAogIGhvbm9raHVrdGhhaTogMHgwRTJFLAogIGhvb2thYm92ZWNvbWI6IDB4MDMwOSwKICBob29rY21iOiAweDAzMDksCiAgaG9va3BhbGF0YWxpemVkYmVsb3djbWI6IDB4MDMyMSwKICBob29rcmV0cm9mbGV4YmVsb3djbWI6IDB4MDMyMiwKICBob29uc3F1YXJlOiAweDMzNDIsCiAgaG9yaWNvcHRpYzogMHgwM0U5LAogIGhvcml6b250YWxiYXI6IDB4MjAxNSwKICBob3JuY21iOiAweDAzMUIsCiAgaG90c3ByaW5nczogMHgyNjY4LAogIGhvdXNlOiAweDIzMDIsCiAgaHBhcmVuOiAweDI0QTMsCiAgaHN1cGVyaW9yOiAweDAyQjAsCiAgaHR1cm5lZDogMHgwMjY1LAogIGh1aGlyYWdhbmE6IDB4MzA3NSwKICBodWlpdG9zcXVhcmU6IDB4MzMzMywKICBodWthdGFrYW5hOiAweDMwRDUsCiAgaHVrYXRha2FuYWhhbGZ3aWR0aDogMHhGRjhDLAogIGh1bmdhcnVtbGF1dDogMHgwMkRELAogIGh1bmdhcnVtbGF1dGNtYjogMHgwMzBCLAogIGh2OiAweDAxOTUsCiAgaHlwaGVuOiAweDAwMkQsCiAgaHlwaGVuaW5mZXJpb3I6IDB4RjZFNSwKICBoeXBoZW5tb25vc3BhY2U6IDB4RkYwRCwKICBoeXBoZW5zbWFsbDogMHhGRTYzLAogIGh5cGhlbnN1cGVyaW9yOiAweEY2RTYsCiAgaHlwaGVudHdvOiAweDIwMTAsCiAgaTogMHgwMDY5LAogIGlhY3V0ZTogMHgwMEVELAogIGlhY3lyaWxsaWM6IDB4MDQ0RiwKICBpYmVuZ2FsaTogMHgwOTg3LAogIGlib3BvbW9mbzogMHgzMTI3LAogIGlicmV2ZTogMHgwMTJELAogIGljYXJvbjogMHgwMUQwLAogIGljaXJjbGU6IDB4MjREOCwKICBpY2lyY3VtZmxleDogMHgwMEVFLAogIGljeXJpbGxpYzogMHgwNDU2LAogIGlkYmxncmF2ZTogMHgwMjA5LAogIGlkZW9ncmFwaGVhcnRoY2lyY2xlOiAweDMyOEYsCiAgaWRlb2dyYXBoZmlyZWNpcmNsZTogMHgzMjhCLAogIGlkZW9ncmFwaGljYWxsaWFuY2VwYXJlbjogMHgzMjNGLAogIGlkZW9ncmFwaGljY2FsbHBhcmVuOiAweDMyM0EsCiAgaWRlb2dyYXBoaWNjZW50cmVjaXJjbGU6IDB4MzJBNSwKICBpZGVvZ3JhcGhpY2Nsb3NlOiAweDMwMDYsCiAgaWRlb2dyYXBoaWNjb21tYTogMHgzMDAxLAogIGlkZW9ncmFwaGljY29tbWFsZWZ0OiAweEZGNjQsCiAgaWRlb2dyYXBoaWNjb25ncmF0dWxhdGlvbnBhcmVuOiAweDMyMzcsCiAgaWRlb2dyYXBoaWNjb3JyZWN0Y2lyY2xlOiAweDMyQTMsCiAgaWRlb2dyYXBoaWNlYXJ0aHBhcmVuOiAweDMyMkYsCiAgaWRlb2dyYXBoaWNlbnRlcnByaXNlcGFyZW46IDB4MzIzRCwKICBpZGVvZ3JhcGhpY2V4Y2VsbGVudGNpcmNsZTogMHgzMjlELAogIGlkZW9ncmFwaGljZmVzdGl2YWxwYXJlbjogMHgzMjQwLAogIGlkZW9ncmFwaGljZmluYW5jaWFsY2lyY2xlOiAweDMyOTYsCiAgaWRlb2dyYXBoaWNmaW5hbmNpYWxwYXJlbjogMHgzMjM2LAogIGlkZW9ncmFwaGljZmlyZXBhcmVuOiAweDMyMkIsCiAgaWRlb2dyYXBoaWNoYXZlcGFyZW46IDB4MzIzMiwKICBpZGVvZ3JhcGhpY2hpZ2hjaXJjbGU6IDB4MzJBNCwKICBpZGVvZ3JhcGhpY2l0ZXJhdGlvbm1hcms6IDB4MzAwNSwKICBpZGVvZ3JhcGhpY2xhYm9yY2lyY2xlOiAweDMyOTgsCiAgaWRlb2dyYXBoaWNsYWJvcnBhcmVuOiAweDMyMzgsCiAgaWRlb2dyYXBoaWNsZWZ0Y2lyY2xlOiAweDMyQTcsCiAgaWRlb2dyYXBoaWNsb3djaXJjbGU6IDB4MzJBNiwKICBpZGVvZ3JhcGhpY21lZGljaW5lY2lyY2xlOiAweDMyQTksCiAgaWRlb2dyYXBoaWNtZXRhbHBhcmVuOiAweDMyMkUsCiAgaWRlb2dyYXBoaWNtb29ucGFyZW46IDB4MzIyQSwKICBpZGVvZ3JhcGhpY25hbWVwYXJlbjogMHgzMjM0LAogIGlkZW9ncmFwaGljcGVyaW9kOiAweDMwMDIsCiAgaWRlb2dyYXBoaWNwcmludGNpcmNsZTogMHgzMjlFLAogIGlkZW9ncmFwaGljcmVhY2hwYXJlbjogMHgzMjQzLAogIGlkZW9ncmFwaGljcmVwcmVzZW50cGFyZW46IDB4MzIzOSwKICBpZGVvZ3JhcGhpY3Jlc291cmNlcGFyZW46IDB4MzIzRSwKICBpZGVvZ3JhcGhpY3JpZ2h0Y2lyY2xlOiAweDMyQTgsCiAgaWRlb2dyYXBoaWNzZWNyZXRjaXJjbGU6IDB4MzI5OSwKICBpZGVvZ3JhcGhpY3NlbGZwYXJlbjogMHgzMjQyLAogIGlkZW9ncmFwaGljc29jaWV0eXBhcmVuOiAweDMyMzMsCiAgaWRlb2dyYXBoaWNzcGFjZTogMHgzMDAwLAogIGlkZW9ncmFwaGljc3BlY2lhbHBhcmVuOiAweDMyMzUsCiAgaWRlb2dyYXBoaWNzdG9ja3BhcmVuOiAweDMyMzEsCiAgaWRlb2dyYXBoaWNzdHVkeXBhcmVuOiAweDMyM0IsCiAgaWRlb2dyYXBoaWNzdW5wYXJlbjogMHgzMjMwLAogIGlkZW9ncmFwaGljc3VwZXJ2aXNlcGFyZW46IDB4MzIzQywKICBpZGVvZ3JhcGhpY3dhdGVycGFyZW46IDB4MzIyQywKICBpZGVvZ3JhcGhpY3dvb2RwYXJlbjogMHgzMjJELAogIGlkZW9ncmFwaGljemVybzogMHgzMDA3LAogIGlkZW9ncmFwaG1ldGFsY2lyY2xlOiAweDMyOEUsCiAgaWRlb2dyYXBobW9vbmNpcmNsZTogMHgzMjhBLAogIGlkZW9ncmFwaG5hbWVjaXJjbGU6IDB4MzI5NCwKICBpZGVvZ3JhcGhzdW5jaXJjbGU6IDB4MzI5MCwKICBpZGVvZ3JhcGh3YXRlcmNpcmNsZTogMHgzMjhDLAogIGlkZW9ncmFwaHdvb2RjaXJjbGU6IDB4MzI4RCwKICBpZGV2YTogMHgwOTA3LAogIGlkaWVyZXNpczogMHgwMEVGLAogIGlkaWVyZXNpc2FjdXRlOiAweDFFMkYsCiAgaWRpZXJlc2lzY3lyaWxsaWM6IDB4MDRFNSwKICBpZG90YmVsb3c6IDB4MUVDQiwKICBpZWJyZXZlY3lyaWxsaWM6IDB4MDRENywKICBpZWN5cmlsbGljOiAweDA0MzUsCiAgaWV1bmdhY2lyY2xla29yZWFuOiAweDMyNzUsCiAgaWV1bmdhcGFyZW5rb3JlYW46IDB4MzIxNSwKICBpZXVuZ2NpcmNsZWtvcmVhbjogMHgzMjY3LAogIGlldW5na29yZWFuOiAweDMxNDcsCiAgaWV1bmdwYXJlbmtvcmVhbjogMHgzMjA3LAogIGlncmF2ZTogMHgwMEVDLAogIGlndWphcmF0aTogMHgwQTg3LAogIGlndXJtdWtoaTogMHgwQTA3LAogIGloaXJhZ2FuYTogMHgzMDQ0LAogIGlob29rYWJvdmU6IDB4MUVDOSwKICBpaWJlbmdhbGk6IDB4MDk4OCwKICBpaWN5cmlsbGljOiAweDA0MzgsCiAgaWlkZXZhOiAweDA5MDgsCiAgaWlndWphcmF0aTogMHgwQTg4LAogIGlpZ3VybXVraGk6IDB4MEEwOCwKICBpaW1hdHJhZ3VybXVraGk6IDB4MEE0MCwKICBpaW52ZXJ0ZWRicmV2ZTogMHgwMjBCLAogIGlpc2hvcnRjeXJpbGxpYzogMHgwNDM5LAogIGlpdm93ZWxzaWduYmVuZ2FsaTogMHgwOUMwLAogIGlpdm93ZWxzaWduZGV2YTogMHgwOTQwLAogIGlpdm93ZWxzaWduZ3VqYXJhdGk6IDB4MEFDMCwKICBpajogMHgwMTMzLAogIGlrYXRha2FuYTogMHgzMEE0LAogIGlrYXRha2FuYWhhbGZ3aWR0aDogMHhGRjcyLAogIGlrb3JlYW46IDB4MzE2MywKICBpbGRlOiAweDAyREMsCiAgaWx1eWhlYnJldzogMHgwNUFDLAogIGltYWNyb246IDB4MDEyQiwKICBpbWFjcm9uY3lyaWxsaWM6IDB4MDRFMywKICBpbWFnZW9yYXBwcm94aW1hdGVseWVxdWFsOiAweDIyNTMsCiAgaW1hdHJhZ3VybXVraGk6IDB4MEEzRiwKICBpbW9ub3NwYWNlOiAweEZGNDksCiAgaW5jcmVtZW50OiAweDIyMDYsCiAgaW5maW5pdHk6IDB4MjIxRSwKICBpbmlhcm1lbmlhbjogMHgwNTZCLAogIGludGVncmFsOiAweDIyMkIsCiAgaW50ZWdyYWxib3R0b206IDB4MjMyMSwKICBpbnRlZ3JhbGJ0OiAweDIzMjEsCiAgaW50ZWdyYWxleDogMHhGOEY1LAogIGludGVncmFsdG9wOiAweDIzMjAsCiAgaW50ZWdyYWx0cDogMHgyMzIwLAogIGludGVyc2VjdGlvbjogMHgyMjI5LAogIGludGlzcXVhcmU6IDB4MzMwNSwKICBpbnZidWxsZXQ6IDB4MjVEOCwKICBpbnZjaXJjbGU6IDB4MjVEOSwKICBpbnZzbWlsZWZhY2U6IDB4MjYzQiwKICBpb2N5cmlsbGljOiAweDA0NTEsCiAgaW9nb25lazogMHgwMTJGLAogIGlvdGE6IDB4MDNCOSwKICBpb3RhZGllcmVzaXM6IDB4MDNDQSwKICBpb3RhZGllcmVzaXN0b25vczogMHgwMzkwLAogIGlvdGFsYXRpbjogMHgwMjY5LAogIGlvdGF0b25vczogMHgwM0FGLAogIGlwYXJlbjogMHgyNEE0LAogIGlyaWd1cm11a2hpOiAweDBBNzIsCiAgaXNtYWxsaGlyYWdhbmE6IDB4MzA0MywKICBpc21hbGxrYXRha2FuYTogMHgzMEEzLAogIGlzbWFsbGthdGFrYW5haGFsZndpZHRoOiAweEZGNjgsCiAgaXNzaGFyYmVuZ2FsaTogMHgwOUZBLAogIGlzdHJva2U6IDB4MDI2OCwKICBpc3VwZXJpb3I6IDB4RjZFRCwKICBpdGVyYXRpb25oaXJhZ2FuYTogMHgzMDlELAogIGl0ZXJhdGlvbmthdGFrYW5hOiAweDMwRkQsCiAgaXRpbGRlOiAweDAxMjksCiAgaXRpbGRlYmVsb3c6IDB4MUUyRCwKICBpdWJvcG9tb2ZvOiAweDMxMjksCiAgaXVjeXJpbGxpYzogMHgwNDRFLAogIGl2b3dlbHNpZ25iZW5nYWxpOiAweDA5QkYsCiAgaXZvd2Vsc2lnbmRldmE6IDB4MDkzRiwKICBpdm93ZWxzaWduZ3VqYXJhdGk6IDB4MEFCRiwKICBpemhpdHNhY3lyaWxsaWM6IDB4MDQ3NSwKICBpemhpdHNhZGJsZ3JhdmVjeXJpbGxpYzogMHgwNDc3LAogIGo6IDB4MDA2QSwKICBqYWFybWVuaWFuOiAweDA1NzEsCiAgamFiZW5nYWxpOiAweDA5OUMsCiAgamFkZXZhOiAweDA5MUMsCiAgamFndWphcmF0aTogMHgwQTlDLAogIGphZ3VybXVraGk6IDB4MEExQywKICBqYm9wb21vZm86IDB4MzExMCwKICBqY2Fyb246IDB4MDFGMCwKICBqY2lyY2xlOiAweDI0RDksCiAgamNpcmN1bWZsZXg6IDB4MDEzNSwKICBqY3Jvc3NlZHRhaWw6IDB4MDI5RCwKICBqZG90bGVzc3N0cm9rZTogMHgwMjVGLAogIGplY3lyaWxsaWM6IDB4MDQ1OCwKICBqZWVtYXJhYmljOiAweDA2MkMsCiAgamVlbWZpbmFsYXJhYmljOiAweEZFOUUsCiAgamVlbWluaXRpYWxhcmFiaWM6IDB4RkU5RiwKICBqZWVtbWVkaWFsYXJhYmljOiAweEZFQTAsCiAgamVoYXJhYmljOiAweDA2OTgsCiAgamVoZmluYWxhcmFiaWM6IDB4RkI4QiwKICBqaGFiZW5nYWxpOiAweDA5OUQsCiAgamhhZGV2YTogMHgwOTFELAogIGpoYWd1amFyYXRpOiAweDBBOUQsCiAgamhhZ3VybXVraGk6IDB4MEExRCwKICBqaGVoYXJtZW5pYW46IDB4MDU3QiwKICBqaXM6IDB4MzAwNCwKICBqbW9ub3NwYWNlOiAweEZGNEEsCiAganBhcmVuOiAweDI0QTUsCiAganN1cGVyaW9yOiAweDAyQjIsCiAgazogMHgwMDZCLAogIGthYmFzaGtpcmN5cmlsbGljOiAweDA0QTEsCiAga2FiZW5nYWxpOiAweDA5OTUsCiAga2FjdXRlOiAweDFFMzEsCiAga2FjeXJpbGxpYzogMHgwNDNBLAogIGthZGVzY2VuZGVyY3lyaWxsaWM6IDB4MDQ5QiwKICBrYWRldmE6IDB4MDkxNSwKICBrYWY6IDB4MDVEQiwKICBrYWZhcmFiaWM6IDB4MDY0MywKICBrYWZkYWdlc2g6IDB4RkIzQiwKICBrYWZkYWdlc2hoZWJyZXc6IDB4RkIzQiwKICBrYWZmaW5hbGFyYWJpYzogMHhGRURBLAogIGthZmhlYnJldzogMHgwNURCLAogIGthZmluaXRpYWxhcmFiaWM6IDB4RkVEQiwKICBrYWZtZWRpYWxhcmFiaWM6IDB4RkVEQywKICBrYWZyYWZlaGVicmV3OiAweEZCNEQsCiAga2FndWphcmF0aTogMHgwQTk1LAogIGthZ3VybXVraGk6IDB4MEExNSwKICBrYWhpcmFnYW5hOiAweDMwNEIsCiAga2Fob29rY3lyaWxsaWM6IDB4MDRDNCwKICBrYWthdGFrYW5hOiAweDMwQUIsCiAga2FrYXRha2FuYWhhbGZ3aWR0aDogMHhGRjc2LAogIGthcHBhOiAweDAzQkEsCiAga2FwcGFzeW1ib2xncmVlazogMHgwM0YwLAogIGthcHllb3VubWlldW1rb3JlYW46IDB4MzE3MSwKICBrYXB5ZW91bnBoaWV1cGhrb3JlYW46IDB4MzE4NCwKICBrYXB5ZW91bnBpZXVwa29yZWFuOiAweDMxNzgsCiAga2FweWVvdW5zc2FuZ3BpZXVwa29yZWFuOiAweDMxNzksCiAga2Fyb3JpaXNxdWFyZTogMHgzMzBELAogIGthc2hpZGFhdXRvYXJhYmljOiAweDA2NDAsCiAga2FzaGlkYWF1dG9ub3NpZGViZWFyaW5nYXJhYmljOiAweDA2NDAsCiAga2FzbWFsbGthdGFrYW5hOiAweDMwRjUsCiAga2FzcXVhcmU6IDB4MzM4NCwKICBrYXNyYWFyYWJpYzogMHgwNjUwLAogIGthc3JhdGFuYXJhYmljOiAweDA2NEQsCiAga2FzdHJva2VjeXJpbGxpYzogMHgwNDlGLAogIGthdGFoaXJhcHJvbG9uZ21hcmtoYWxmd2lkdGg6IDB4RkY3MCwKICBrYXZlcnRpY2Fsc3Ryb2tlY3lyaWxsaWM6IDB4MDQ5RCwKICBrYm9wb21vZm86IDB4MzEwRSwKICBrY2Fsc3F1YXJlOiAweDMzODksCiAga2Nhcm9uOiAweDAxRTksCiAga2NlZGlsbGE6IDB4MDEzNywKICBrY2lyY2xlOiAweDI0REEsCiAga2NvbW1hYWNjZW50OiAweDAxMzcsCiAga2RvdGJlbG93OiAweDFFMzMsCiAga2VoYXJtZW5pYW46IDB4MDU4NCwKICBrZWhpcmFnYW5hOiAweDMwNTEsCiAga2VrYXRha2FuYTogMHgzMEIxLAogIGtla2F0YWthbmFoYWxmd2lkdGg6IDB4RkY3OSwKICBrZW5hcm1lbmlhbjogMHgwNTZGLAogIGtlc21hbGxrYXRha2FuYTogMHgzMEY2LAogIGtncmVlbmxhbmRpYzogMHgwMTM4LAogIGtoYWJlbmdhbGk6IDB4MDk5NiwKICBraGFjeXJpbGxpYzogMHgwNDQ1LAogIGtoYWRldmE6IDB4MDkxNiwKICBraGFndWphcmF0aTogMHgwQTk2LAogIGtoYWd1cm11a2hpOiAweDBBMTYsCiAga2hhaGFyYWJpYzogMHgwNjJFLAogIGtoYWhmaW5hbGFyYWJpYzogMHhGRUE2LAogIGtoYWhpbml0aWFsYXJhYmljOiAweEZFQTcsCiAga2hhaG1lZGlhbGFyYWJpYzogMHhGRUE4LAogIGtoZWljb3B0aWM6IDB4MDNFNywKICBraGhhZGV2YTogMHgwOTU5LAogIGtoaGFndXJtdWtoaTogMHgwQTU5LAogIGtoaWV1a2hhY2lyY2xla29yZWFuOiAweDMyNzgsCiAga2hpZXVraGFwYXJlbmtvcmVhbjogMHgzMjE4LAogIGtoaWV1a2hjaXJjbGVrb3JlYW46IDB4MzI2QSwKICBraGlldWtoa29yZWFuOiAweDMxNEIsCiAga2hpZXVraHBhcmVua29yZWFuOiAweDMyMEEsCiAga2hva2hhaXRoYWk6IDB4MEUwMiwKICBraG9raG9udGhhaTogMHgwRTA1LAogIGtob2todWF0dGhhaTogMHgwRTAzLAogIGtob2tod2FpdGhhaTogMHgwRTA0LAogIGtob211dHRoYWk6IDB4MEU1QiwKICBraG9vazogMHgwMTk5LAogIGtob3Jha2hhbmd0aGFpOiAweDBFMDYsCiAga2h6c3F1YXJlOiAweDMzOTEsCiAga2loaXJhZ2FuYTogMHgzMDRELAogIGtpa2F0YWthbmE6IDB4MzBBRCwKICBraWthdGFrYW5haGFsZndpZHRoOiAweEZGNzcsCiAga2lyb2d1cmFtdXNxdWFyZTogMHgzMzE1LAogIGtpcm9tZWV0b3J1c3F1YXJlOiAweDMzMTYsCiAga2lyb3NxdWFyZTogMHgzMzE0LAogIGtpeWVva2FjaXJjbGVrb3JlYW46IDB4MzI2RSwKICBraXllb2thcGFyZW5rb3JlYW46IDB4MzIwRSwKICBraXllb2tjaXJjbGVrb3JlYW46IDB4MzI2MCwKICBraXllb2trb3JlYW46IDB4MzEzMSwKICBraXllb2twYXJlbmtvcmVhbjogMHgzMjAwLAogIGtpeWVva3Npb3Nrb3JlYW46IDB4MzEzMywKICBramVjeXJpbGxpYzogMHgwNDVDLAogIGtsaW5lYmVsb3c6IDB4MUUzNSwKICBrbHNxdWFyZTogMHgzMzk4LAogIGttY3ViZWRzcXVhcmU6IDB4MzNBNiwKICBrbW9ub3NwYWNlOiAweEZGNEIsCiAga21zcXVhcmVkc3F1YXJlOiAweDMzQTIsCiAga29oaXJhZ2FuYTogMHgzMDUzLAogIGtvaG1zcXVhcmU6IDB4MzNDMCwKICBrb2thaXRoYWk6IDB4MEUwMSwKICBrb2thdGFrYW5hOiAweDMwQjMsCiAga29rYXRha2FuYWhhbGZ3aWR0aDogMHhGRjdBLAogIGtvb3Bvc3F1YXJlOiAweDMzMUUsCiAga29wcGFjeXJpbGxpYzogMHgwNDgxLAogIGtvcmVhbnN0YW5kYXJkc3ltYm9sOiAweDMyN0YsCiAga29yb25pc2NtYjogMHgwMzQzLAogIGtwYXJlbjogMHgyNEE2LAogIGtwYXNxdWFyZTogMHgzM0FBLAogIGtzaWN5cmlsbGljOiAweDA0NkYsCiAga3RzcXVhcmU6IDB4MzNDRiwKICBrdHVybmVkOiAweDAyOUUsCiAga3VoaXJhZ2FuYTogMHgzMDRGLAogIGt1a2F0YWthbmE6IDB4MzBBRiwKICBrdWthdGFrYW5haGFsZndpZHRoOiAweEZGNzgsCiAga3ZzcXVhcmU6IDB4MzNCOCwKICBrd3NxdWFyZTogMHgzM0JFLAogIGw6IDB4MDA2QywKICBsYWJlbmdhbGk6IDB4MDlCMiwKICBsYWN1dGU6IDB4MDEzQSwKICBsYWRldmE6IDB4MDkzMiwKICBsYWd1amFyYXRpOiAweDBBQjIsCiAgbGFndXJtdWtoaTogMHgwQTMyLAogIGxha2toYW5neWFvdGhhaTogMHgwRTQ1LAogIGxhbWFsZWZmaW5hbGFyYWJpYzogMHhGRUZDLAogIGxhbWFsZWZoYW16YWFib3ZlZmluYWxhcmFiaWM6IDB4RkVGOCwKICBsYW1hbGVmaGFtemFhYm92ZWlzb2xhdGVkYXJhYmljOiAweEZFRjcsCiAgbGFtYWxlZmhhbXphYmVsb3dmaW5hbGFyYWJpYzogMHhGRUZBLAogIGxhbWFsZWZoYW16YWJlbG93aXNvbGF0ZWRhcmFiaWM6IDB4RkVGOSwKICBsYW1hbGVmaXNvbGF0ZWRhcmFiaWM6IDB4RkVGQiwKICBsYW1hbGVmbWFkZGFhYm92ZWZpbmFsYXJhYmljOiAweEZFRjYsCiAgbGFtYWxlZm1hZGRhYWJvdmVpc29sYXRlZGFyYWJpYzogMHhGRUY1LAogIGxhbWFyYWJpYzogMHgwNjQ0LAogIGxhbWJkYTogMHgwM0JCLAogIGxhbWJkYXN0cm9rZTogMHgwMTlCLAogIGxhbWVkOiAweDA1REMsCiAgbGFtZWRkYWdlc2g6IDB4RkIzQywKICBsYW1lZGRhZ2VzaGhlYnJldzogMHhGQjNDLAogIGxhbWVkaGVicmV3OiAweDA1REMsCiAgbGFtZmluYWxhcmFiaWM6IDB4RkVERSwKICBsYW1oYWhpbml0aWFsYXJhYmljOiAweEZDQ0EsCiAgbGFtaW5pdGlhbGFyYWJpYzogMHhGRURGLAogIGxhbWplZW1pbml0aWFsYXJhYmljOiAweEZDQzksCiAgbGFta2hhaGluaXRpYWxhcmFiaWM6IDB4RkNDQiwKICBsYW1sYW1oZWhpc29sYXRlZGFyYWJpYzogMHhGREYyLAogIGxhbW1lZGlhbGFyYWJpYzogMHhGRUUwLAogIGxhbW1lZW1oYWhpbml0aWFsYXJhYmljOiAweEZEODgsCiAgbGFtbWVlbWluaXRpYWxhcmFiaWM6IDB4RkNDQywKICBsYXJnZWNpcmNsZTogMHgyNUVGLAogIGxiYXI6IDB4MDE5QSwKICBsYmVsdDogMHgwMjZDLAogIGxib3BvbW9mbzogMHgzMTBDLAogIGxjYXJvbjogMHgwMTNFLAogIGxjZWRpbGxhOiAweDAxM0MsCiAgbGNpcmNsZTogMHgyNERCLAogIGxjaXJjdW1mbGV4YmVsb3c6IDB4MUUzRCwKICBsY29tbWFhY2NlbnQ6IDB4MDEzQywKICBsZG90OiAweDAxNDAsCiAgbGRvdGFjY2VudDogMHgwMTQwLAogIGxkb3RiZWxvdzogMHgxRTM3LAogIGxkb3RiZWxvd21hY3JvbjogMHgxRTM5LAogIGxlZnRhbmdsZWFib3ZlY21iOiAweDAzMUEsCiAgbGVmdHRhY2tiZWxvd2NtYjogMHgwMzE4LAogIGxlc3M6IDB4MDAzQywKICBsZXNzZXF1YWw6IDB4MjI2NCwKICBsZXNzZXF1YWxvcmdyZWF0ZXI6IDB4MjJEQSwKICBsZXNzbW9ub3NwYWNlOiAweEZGMUMsCiAgbGVzc29yZXF1aXZhbGVudDogMHgyMjcyLAogIGxlc3NvcmdyZWF0ZXI6IDB4MjI3NiwKICBsZXNzb3ZlcmVxdWFsOiAweDIyNjYsCiAgbGVzc3NtYWxsOiAweEZFNjQsCiAgbGV6aDogMHgwMjZFLAogIGxmYmxvY2s6IDB4MjU4QywKICBsaG9va3JldHJvZmxleDogMHgwMjZELAogIGxpcmE6IDB4MjBBNCwKICBsaXduYXJtZW5pYW46IDB4MDU2QywKICBsajogMHgwMUM5LAogIGxqZWN5cmlsbGljOiAweDA0NTksCiAgbGw6IDB4RjZDMCwKICBsbGFkZXZhOiAweDA5MzMsCiAgbGxhZ3VqYXJhdGk6IDB4MEFCMywKICBsbGluZWJlbG93OiAweDFFM0IsCiAgbGxsYWRldmE6IDB4MDkzNCwKICBsbHZvY2FsaWNiZW5nYWxpOiAweDA5RTEsCiAgbGx2b2NhbGljZGV2YTogMHgwOTYxLAogIGxsdm9jYWxpY3Zvd2Vsc2lnbmJlbmdhbGk6IDB4MDlFMywKICBsbHZvY2FsaWN2b3dlbHNpZ25kZXZhOiAweDA5NjMsCiAgbG1pZGRsZXRpbGRlOiAweDAyNkIsCiAgbG1vbm9zcGFjZTogMHhGRjRDLAogIGxtc3F1YXJlOiAweDMzRDAsCiAgbG9jaHVsYXRoYWk6IDB4MEUyQywKICBsb2dpY2FsYW5kOiAweDIyMjcsCiAgbG9naWNhbG5vdDogMHgwMEFDLAogIGxvZ2ljYWxub3RyZXZlcnNlZDogMHgyMzEwLAogIGxvZ2ljYWxvcjogMHgyMjI4LAogIGxvbGluZ3RoYWk6IDB4MEUyNSwKICBsb25nczogMHgwMTdGLAogIGxvd2xpbmVjZW50ZXJsaW5lOiAweEZFNEUsCiAgbG93bGluZWNtYjogMHgwMzMyLAogIGxvd2xpbmVkYXNoZWQ6IDB4RkU0RCwKICBsb3plbmdlOiAweDI1Q0EsCiAgbHBhcmVuOiAweDI0QTcsCiAgbHNsYXNoOiAweDAxNDIsCiAgbHNxdWFyZTogMHgyMTEzLAogIGxzdXBlcmlvcjogMHhGNkVFLAogIGx0c2hhZGU6IDB4MjU5MSwKICBsdXRoYWk6IDB4MEUyNiwKICBsdm9jYWxpY2JlbmdhbGk6IDB4MDk4QywKICBsdm9jYWxpY2RldmE6IDB4MDkwQywKICBsdm9jYWxpY3Zvd2Vsc2lnbmJlbmdhbGk6IDB4MDlFMiwKICBsdm9jYWxpY3Zvd2Vsc2lnbmRldmE6IDB4MDk2MiwKICBseHNxdWFyZTogMHgzM0QzLAogIG06IDB4MDA2RCwKICBtYWJlbmdhbGk6IDB4MDlBRSwKICBtYWNyb246IDB4MDBBRiwKICBtYWNyb25iZWxvd2NtYjogMHgwMzMxLAogIG1hY3JvbmNtYjogMHgwMzA0LAogIG1hY3Jvbmxvd21vZDogMHgwMkNELAogIG1hY3Jvbm1vbm9zcGFjZTogMHhGRkUzLAogIG1hY3V0ZTogMHgxRTNGLAogIG1hZGV2YTogMHgwOTJFLAogIG1hZ3VqYXJhdGk6IDB4MEFBRSwKICBtYWd1cm11a2hpOiAweDBBMkUsCiAgbWFoYXBha2hoZWJyZXc6IDB4MDVBNCwKICBtYWhhcGFraGxlZnRoZWJyZXc6IDB4MDVBNCwKICBtYWhpcmFnYW5hOiAweDMwN0UsCiAgbWFpY2hhdHRhd2Fsb3dsZWZ0dGhhaTogMHhGODk1LAogIG1haWNoYXR0YXdhbG93cmlnaHR0aGFpOiAweEY4OTQsCiAgbWFpY2hhdHRhd2F0aGFpOiAweDBFNEIsCiAgbWFpY2hhdHRhd2F1cHBlcmxlZnR0aGFpOiAweEY4OTMsCiAgbWFpZWtsb3dsZWZ0dGhhaTogMHhGODhDLAogIG1haWVrbG93cmlnaHR0aGFpOiAweEY4OEIsCiAgbWFpZWt0aGFpOiAweDBFNDgsCiAgbWFpZWt1cHBlcmxlZnR0aGFpOiAweEY4OEEsCiAgbWFpaGFuYWthdGxlZnR0aGFpOiAweEY4ODQsCiAgbWFpaGFuYWthdHRoYWk6IDB4MEUzMSwKICBtYWl0YWlraHVsZWZ0dGhhaTogMHhGODg5LAogIG1haXRhaWtodXRoYWk6IDB4MEU0NywKICBtYWl0aG9sb3dsZWZ0dGhhaTogMHhGODhGLAogIG1haXRob2xvd3JpZ2h0dGhhaTogMHhGODhFLAogIG1haXRob3RoYWk6IDB4MEU0OSwKICBtYWl0aG91cHBlcmxlZnR0aGFpOiAweEY4OEQsCiAgbWFpdHJpbG93bGVmdHRoYWk6IDB4Rjg5MiwKICBtYWl0cmlsb3dyaWdodHRoYWk6IDB4Rjg5MSwKICBtYWl0cml0aGFpOiAweDBFNEEsCiAgbWFpdHJpdXBwZXJsZWZ0dGhhaTogMHhGODkwLAogIG1haXlhbW9rdGhhaTogMHgwRTQ2LAogIG1ha2F0YWthbmE6IDB4MzBERSwKICBtYWthdGFrYW5haGFsZndpZHRoOiAweEZGOEYsCiAgbWFsZTogMHgyNjQyLAogIG1hbnN5b25zcXVhcmU6IDB4MzM0NywKICBtYXFhZmhlYnJldzogMHgwNUJFLAogIG1hcnM6IDB4MjY0MiwKICBtYXNvcmFjaXJjbGVoZWJyZXc6IDB4MDVBRiwKICBtYXNxdWFyZTogMHgzMzgzLAogIG1ib3BvbW9mbzogMHgzMTA3LAogIG1ic3F1YXJlOiAweDMzRDQsCiAgbWNpcmNsZTogMHgyNERDLAogIG1jdWJlZHNxdWFyZTogMHgzM0E1LAogIG1kb3RhY2NlbnQ6IDB4MUU0MSwKICBtZG90YmVsb3c6IDB4MUU0MywKICBtZWVtYXJhYmljOiAweDA2NDUsCiAgbWVlbWZpbmFsYXJhYmljOiAweEZFRTIsCiAgbWVlbWluaXRpYWxhcmFiaWM6IDB4RkVFMywKICBtZWVtbWVkaWFsYXJhYmljOiAweEZFRTQsCiAgbWVlbW1lZW1pbml0aWFsYXJhYmljOiAweEZDRDEsCiAgbWVlbW1lZW1pc29sYXRlZGFyYWJpYzogMHhGQzQ4LAogIG1lZXRvcnVzcXVhcmU6IDB4MzM0RCwKICBtZWhpcmFnYW5hOiAweDMwODEsCiAgbWVpemllcmFzcXVhcmU6IDB4MzM3RSwKICBtZWthdGFrYW5hOiAweDMwRTEsCiAgbWVrYXRha2FuYWhhbGZ3aWR0aDogMHhGRjkyLAogIG1lbTogMHgwNURFLAogIG1lbWRhZ2VzaDogMHhGQjNFLAogIG1lbWRhZ2VzaGhlYnJldzogMHhGQjNFLAogIG1lbWhlYnJldzogMHgwNURFLAogIG1lbmFybWVuaWFuOiAweDA1NzQsCiAgbWVya2hhaGVicmV3OiAweDA1QTUsCiAgbWVya2hha2VmdWxhaGVicmV3OiAweDA1QTYsCiAgbWVya2hha2VmdWxhbGVmdGhlYnJldzogMHgwNUE2LAogIG1lcmtoYWxlZnRoZWJyZXc6IDB4MDVBNSwKICBtaG9vazogMHgwMjcxLAogIG1oenNxdWFyZTogMHgzMzkyLAogIG1pZGRsZWRvdGthdGFrYW5haGFsZndpZHRoOiAweEZGNjUsCiAgbWlkZG90OiAweDAwQjcsCiAgbWlldW1hY2lyY2xla29yZWFuOiAweDMyNzIsCiAgbWlldW1hcGFyZW5rb3JlYW46IDB4MzIxMiwKICBtaWV1bWNpcmNsZWtvcmVhbjogMHgzMjY0LAogIG1pZXVta29yZWFuOiAweDMxNDEsCiAgbWlldW1wYW5zaW9za29yZWFuOiAweDMxNzAsCiAgbWlldW1wYXJlbmtvcmVhbjogMHgzMjA0LAogIG1pZXVtcGlldXBrb3JlYW46IDB4MzE2RSwKICBtaWV1bXNpb3Nrb3JlYW46IDB4MzE2RiwKICBtaWhpcmFnYW5hOiAweDMwN0YsCiAgbWlrYXRha2FuYTogMHgzMERGLAogIG1pa2F0YWthbmFoYWxmd2lkdGg6IDB4RkY5MCwKICBtaW51czogMHgyMjEyLAogIG1pbnVzYmVsb3djbWI6IDB4MDMyMCwKICBtaW51c2NpcmNsZTogMHgyMjk2LAogIG1pbnVzbW9kOiAweDAyRDcsCiAgbWludXNwbHVzOiAweDIyMTMsCiAgbWludXRlOiAweDIwMzIsCiAgbWlyaWJhYXJ1c3F1YXJlOiAweDMzNEEsCiAgbWlyaXNxdWFyZTogMHgzMzQ5LAogIG1sb25nbGVndHVybmVkOiAweDAyNzAsCiAgbWxzcXVhcmU6IDB4MzM5NiwKICBtbWN1YmVkc3F1YXJlOiAweDMzQTMsCiAgbW1vbm9zcGFjZTogMHhGRjRELAogIG1tc3F1YXJlZHNxdWFyZTogMHgzMzlGLAogIG1vaGlyYWdhbmE6IDB4MzA4MiwKICBtb2htc3F1YXJlOiAweDMzQzEsCiAgbW9rYXRha2FuYTogMHgzMEUyLAogIG1va2F0YWthbmFoYWxmd2lkdGg6IDB4RkY5MywKICBtb2xzcXVhcmU6IDB4MzNENiwKICBtb21hdGhhaTogMHgwRTIxLAogIG1vdmVyc3NxdWFyZTogMHgzM0E3LAogIG1vdmVyc3NxdWFyZWRzcXVhcmU6IDB4MzNBOCwKICBtcGFyZW46IDB4MjRBOCwKICBtcGFzcXVhcmU6IDB4MzNBQiwKICBtc3NxdWFyZTogMHgzM0IzLAogIG1zdXBlcmlvcjogMHhGNkVGLAogIG10dXJuZWQ6IDB4MDI2RiwKICBtdTogMHgwMEI1LAogIG11MTogMHgwMEI1LAogIG11YXNxdWFyZTogMHgzMzgyLAogIG11Y2hncmVhdGVyOiAweDIyNkIsCiAgbXVjaGxlc3M6IDB4MjI2QSwKICBtdWZzcXVhcmU6IDB4MzM4QywKICBtdWdyZWVrOiAweDAzQkMsCiAgbXVnc3F1YXJlOiAweDMzOEQsCiAgbXVoaXJhZ2FuYTogMHgzMDgwLAogIG11a2F0YWthbmE6IDB4MzBFMCwKICBtdWthdGFrYW5haGFsZndpZHRoOiAweEZGOTEsCiAgbXVsc3F1YXJlOiAweDMzOTUsCiAgbXVsdGlwbHk6IDB4MDBENywKICBtdW1zcXVhcmU6IDB4MzM5QiwKICBtdW5haGhlYnJldzogMHgwNUEzLAogIG11bmFobGVmdGhlYnJldzogMHgwNUEzLAogIG11c2ljYWxub3RlOiAweDI2NkEsCiAgbXVzaWNhbG5vdGVkYmw6IDB4MjY2QiwKICBtdXNpY2ZsYXRzaWduOiAweDI2NkQsCiAgbXVzaWNzaGFycHNpZ246IDB4MjY2RiwKICBtdXNzcXVhcmU6IDB4MzNCMiwKICBtdXZzcXVhcmU6IDB4MzNCNiwKICBtdXdzcXVhcmU6IDB4MzNCQywKICBtdm1lZ2FzcXVhcmU6IDB4MzNCOSwKICBtdnNxdWFyZTogMHgzM0I3LAogIG13bWVnYXNxdWFyZTogMHgzM0JGLAogIG13c3F1YXJlOiAweDMzQkQsCiAgbjogMHgwMDZFLAogIG5hYmVuZ2FsaTogMHgwOUE4LAogIG5hYmxhOiAweDIyMDcsCiAgbmFjdXRlOiAweDAxNDQsCiAgbmFkZXZhOiAweDA5MjgsCiAgbmFndWphcmF0aTogMHgwQUE4LAogIG5hZ3VybXVraGk6IDB4MEEyOCwKICBuYWhpcmFnYW5hOiAweDMwNkEsCiAgbmFrYXRha2FuYTogMHgzMENBLAogIG5ha2F0YWthbmFoYWxmd2lkdGg6IDB4RkY4NSwKICBuYXBvc3Ryb3BoZTogMHgwMTQ5LAogIG5hc3F1YXJlOiAweDMzODEsCiAgbmJvcG9tb2ZvOiAweDMxMEIsCiAgbmJzcGFjZTogMHgwMEEwLAogIG5jYXJvbjogMHgwMTQ4LAogIG5jZWRpbGxhOiAweDAxNDYsCiAgbmNpcmNsZTogMHgyNERELAogIG5jaXJjdW1mbGV4YmVsb3c6IDB4MUU0QiwKICBuY29tbWFhY2NlbnQ6IDB4MDE0NiwKICBuZG90YWNjZW50OiAweDFFNDUsCiAgbmRvdGJlbG93OiAweDFFNDcsCiAgbmVoaXJhZ2FuYTogMHgzMDZELAogIG5la2F0YWthbmE6IDB4MzBDRCwKICBuZWthdGFrYW5haGFsZndpZHRoOiAweEZGODgsCiAgbmV3c2hlcWVsc2lnbjogMHgyMEFBLAogIG5mc3F1YXJlOiAweDMzOEIsCiAgbmdhYmVuZ2FsaTogMHgwOTk5LAogIG5nYWRldmE6IDB4MDkxOSwKICBuZ2FndWphcmF0aTogMHgwQTk5LAogIG5nYWd1cm11a2hpOiAweDBBMTksCiAgbmdvbmd1dGhhaTogMHgwRTA3LAogIG5oaXJhZ2FuYTogMHgzMDkzLAogIG5ob29rbGVmdDogMHgwMjcyLAogIG5ob29rcmV0cm9mbGV4OiAweDAyNzMsCiAgbmlldW5hY2lyY2xla29yZWFuOiAweDMyNkYsCiAgbmlldW5hcGFyZW5rb3JlYW46IDB4MzIwRiwKICBuaWV1bmNpZXVja29yZWFuOiAweDMxMzUsCiAgbmlldW5jaXJjbGVrb3JlYW46IDB4MzI2MSwKICBuaWV1bmhpZXVoa29yZWFuOiAweDMxMzYsCiAgbmlldW5rb3JlYW46IDB4MzEzNCwKICBuaWV1bnBhbnNpb3Nrb3JlYW46IDB4MzE2OCwKICBuaWV1bnBhcmVua29yZWFuOiAweDMyMDEsCiAgbmlldW5zaW9za29yZWFuOiAweDMxNjcsCiAgbmlldW50aWtldXRrb3JlYW46IDB4MzE2NiwKICBuaWhpcmFnYW5hOiAweDMwNkIsCiAgbmlrYXRha2FuYTogMHgzMENCLAogIG5pa2F0YWthbmFoYWxmd2lkdGg6IDB4RkY4NiwKICBuaWtoYWhpdGxlZnR0aGFpOiAweEY4OTksCiAgbmlraGFoaXR0aGFpOiAweDBFNEQsCiAgbmluZTogMHgwMDM5LAogIG5pbmVhcmFiaWM6IDB4MDY2OSwKICBuaW5lYmVuZ2FsaTogMHgwOUVGLAogIG5pbmVjaXJjbGU6IDB4MjQ2OCwKICBuaW5lY2lyY2xlaW52ZXJzZXNhbnNzZXJpZjogMHgyNzkyLAogIG5pbmVkZXZhOiAweDA5NkYsCiAgbmluZWd1amFyYXRpOiAweDBBRUYsCiAgbmluZWd1cm11a2hpOiAweDBBNkYsCiAgbmluZWhhY2thcmFiaWM6IDB4MDY2OSwKICBuaW5laGFuZ3pob3U6IDB4MzAyOSwKICBuaW5laWRlb2dyYXBoaWNwYXJlbjogMHgzMjI4LAogIG5pbmVpbmZlcmlvcjogMHgyMDg5LAogIG5pbmVtb25vc3BhY2U6IDB4RkYxOSwKICBuaW5lb2xkc3R5bGU6IDB4RjczOSwKICBuaW5lcGFyZW46IDB4MjQ3QywKICBuaW5lcGVyaW9kOiAweDI0OTAsCiAgbmluZXBlcnNpYW46IDB4MDZGOSwKICBuaW5lcm9tYW46IDB4MjE3OCwKICBuaW5lc3VwZXJpb3I6IDB4MjA3OSwKICBuaW5ldGVlbmNpcmNsZTogMHgyNDcyLAogIG5pbmV0ZWVucGFyZW46IDB4MjQ4NiwKICBuaW5ldGVlbnBlcmlvZDogMHgyNDlBLAogIG5pbmV0aGFpOiAweDBFNTksCiAgbmo6IDB4MDFDQywKICBuamVjeXJpbGxpYzogMHgwNDVBLAogIG5rYXRha2FuYTogMHgzMEYzLAogIG5rYXRha2FuYWhhbGZ3aWR0aDogMHhGRjlELAogIG5sZWdyaWdodGxvbmc6IDB4MDE5RSwKICBubGluZWJlbG93OiAweDFFNDksCiAgbm1vbm9zcGFjZTogMHhGRjRFLAogIG5tc3F1YXJlOiAweDMzOUEsCiAgbm5hYmVuZ2FsaTogMHgwOUEzLAogIG5uYWRldmE6IDB4MDkyMywKICBubmFndWphcmF0aTogMHgwQUEzLAogIG5uYWd1cm11a2hpOiAweDBBMjMsCiAgbm5uYWRldmE6IDB4MDkyOSwKICBub2hpcmFnYW5hOiAweDMwNkUsCiAgbm9rYXRha2FuYTogMHgzMENFLAogIG5va2F0YWthbmFoYWxmd2lkdGg6IDB4RkY4OSwKICBub25icmVha2luZ3NwYWNlOiAweDAwQTAsCiAgbm9uZW50aGFpOiAweDBFMTMsCiAgbm9udXRoYWk6IDB4MEUxOSwKICBub29uYXJhYmljOiAweDA2NDYsCiAgbm9vbmZpbmFsYXJhYmljOiAweEZFRTYsCiAgbm9vbmdodW5uYWFyYWJpYzogMHgwNkJBLAogIG5vb25naHVubmFmaW5hbGFyYWJpYzogMHhGQjlGLAogIG5vb25pbml0aWFsYXJhYmljOiAweEZFRTcsCiAgbm9vbmplZW1pbml0aWFsYXJhYmljOiAweEZDRDIsCiAgbm9vbmplZW1pc29sYXRlZGFyYWJpYzogMHhGQzRCLAogIG5vb25tZWRpYWxhcmFiaWM6IDB4RkVFOCwKICBub29ubWVlbWluaXRpYWxhcmFiaWM6IDB4RkNENSwKICBub29ubWVlbWlzb2xhdGVkYXJhYmljOiAweEZDNEUsCiAgbm9vbm5vb25maW5hbGFyYWJpYzogMHhGQzhELAogIG5vdGNvbnRhaW5zOiAweDIyMEMsCiAgbm90ZWxlbWVudDogMHgyMjA5LAogIG5vdGVsZW1lbnRvZjogMHgyMjA5LAogIG5vdGVxdWFsOiAweDIyNjAsCiAgbm90Z3JlYXRlcjogMHgyMjZGLAogIG5vdGdyZWF0ZXJub3JlcXVhbDogMHgyMjcxLAogIG5vdGdyZWF0ZXJub3JsZXNzOiAweDIyNzksCiAgbm90aWRlbnRpY2FsOiAweDIyNjIsCiAgbm90bGVzczogMHgyMjZFLAogIG5vdGxlc3Nub3JlcXVhbDogMHgyMjcwLAogIG5vdHBhcmFsbGVsOiAweDIyMjYsCiAgbm90cHJlY2VkZXM6IDB4MjI4MCwKICBub3RzdWJzZXQ6IDB4MjI4NCwKICBub3RzdWNjZWVkczogMHgyMjgxLAogIG5vdHN1cGVyc2V0OiAweDIyODUsCiAgbm93YXJtZW5pYW46IDB4MDU3NiwKICBucGFyZW46IDB4MjRBOSwKICBuc3NxdWFyZTogMHgzM0IxLAogIG5zdXBlcmlvcjogMHgyMDdGLAogIG50aWxkZTogMHgwMEYxLAogIG51OiAweDAzQkQsCiAgbnVoaXJhZ2FuYTogMHgzMDZDLAogIG51a2F0YWthbmE6IDB4MzBDQywKICBudWthdGFrYW5haGFsZndpZHRoOiAweEZGODcsCiAgbnVrdGFiZW5nYWxpOiAweDA5QkMsCiAgbnVrdGFkZXZhOiAweDA5M0MsCiAgbnVrdGFndWphcmF0aTogMHgwQUJDLAogIG51a3RhZ3VybXVraGk6IDB4MEEzQywKICBudW1iZXJzaWduOiAweDAwMjMsCiAgbnVtYmVyc2lnbm1vbm9zcGFjZTogMHhGRjAzLAogIG51bWJlcnNpZ25zbWFsbDogMHhGRTVGLAogIG51bWVyYWxzaWduZ3JlZWs6IDB4MDM3NCwKICBudW1lcmFsc2lnbmxvd2VyZ3JlZWs6IDB4MDM3NSwKICBudW1lcm86IDB4MjExNiwKICBudW46IDB4MDVFMCwKICBudW5kYWdlc2g6IDB4RkI0MCwKICBudW5kYWdlc2hoZWJyZXc6IDB4RkI0MCwKICBudW5oZWJyZXc6IDB4MDVFMCwKICBudnNxdWFyZTogMHgzM0I1LAogIG53c3F1YXJlOiAweDMzQkIsCiAgbnlhYmVuZ2FsaTogMHgwOTlFLAogIG55YWRldmE6IDB4MDkxRSwKICBueWFndWphcmF0aTogMHgwQTlFLAogIG55YWd1cm11a2hpOiAweDBBMUUsCiAgbzogMHgwMDZGLAogIG9hY3V0ZTogMHgwMEYzLAogIG9hbmd0aGFpOiAweDBFMkQsCiAgb2JhcnJlZDogMHgwMjc1LAogIG9iYXJyZWRjeXJpbGxpYzogMHgwNEU5LAogIG9iYXJyZWRkaWVyZXNpc2N5cmlsbGljOiAweDA0RUIsCiAgb2JlbmdhbGk6IDB4MDk5MywKICBvYm9wb21vZm86IDB4MzExQiwKICBvYnJldmU6IDB4MDE0RiwKICBvY2FuZHJhZGV2YTogMHgwOTExLAogIG9jYW5kcmFndWphcmF0aTogMHgwQTkxLAogIG9jYW5kcmF2b3dlbHNpZ25kZXZhOiAweDA5NDksCiAgb2NhbmRyYXZvd2Vsc2lnbmd1amFyYXRpOiAweDBBQzksCiAgb2Nhcm9uOiAweDAxRDIsCiAgb2NpcmNsZTogMHgyNERFLAogIG9jaXJjdW1mbGV4OiAweDAwRjQsCiAgb2NpcmN1bWZsZXhhY3V0ZTogMHgxRUQxLAogIG9jaXJjdW1mbGV4ZG90YmVsb3c6IDB4MUVEOSwKICBvY2lyY3VtZmxleGdyYXZlOiAweDFFRDMsCiAgb2NpcmN1bWZsZXhob29rYWJvdmU6IDB4MUVENSwKICBvY2lyY3VtZmxleHRpbGRlOiAweDFFRDcsCiAgb2N5cmlsbGljOiAweDA0M0UsCiAgb2RibGFjdXRlOiAweDAxNTEsCiAgb2RibGdyYXZlOiAweDAyMEQsCiAgb2RldmE6IDB4MDkxMywKICBvZGllcmVzaXM6IDB4MDBGNiwKICBvZGllcmVzaXNjeXJpbGxpYzogMHgwNEU3LAogIG9kb3RiZWxvdzogMHgxRUNELAogIG9lOiAweDAxNTMsCiAgb2Vrb3JlYW46IDB4MzE1QSwKICBvZ29uZWs6IDB4MDJEQiwKICBvZ29uZWtjbWI6IDB4MDMyOCwKICBvZ3JhdmU6IDB4MDBGMiwKICBvZ3VqYXJhdGk6IDB4MEE5MywKICBvaGFybWVuaWFuOiAweDA1ODUsCiAgb2hpcmFnYW5hOiAweDMwNEEsCiAgb2hvb2thYm92ZTogMHgxRUNGLAogIG9ob3JuOiAweDAxQTEsCiAgb2hvcm5hY3V0ZTogMHgxRURCLAogIG9ob3JuZG90YmVsb3c6IDB4MUVFMywKICBvaG9ybmdyYXZlOiAweDFFREQsCiAgb2hvcm5ob29rYWJvdmU6IDB4MUVERiwKICBvaG9ybnRpbGRlOiAweDFFRTEsCiAgb2h1bmdhcnVtbGF1dDogMHgwMTUxLAogIG9pOiAweDAxQTMsCiAgb2ludmVydGVkYnJldmU6IDB4MDIwRiwKICBva2F0YWthbmE6IDB4MzBBQSwKICBva2F0YWthbmFoYWxmd2lkdGg6IDB4RkY3NSwKICBva29yZWFuOiAweDMxNTcsCiAgb2xlaGVicmV3OiAweDA1QUIsCiAgb21hY3JvbjogMHgwMTRELAogIG9tYWNyb25hY3V0ZTogMHgxRTUzLAogIG9tYWNyb25ncmF2ZTogMHgxRTUxLAogIG9tZGV2YTogMHgwOTUwLAogIG9tZWdhOiAweDAzQzksCiAgb21lZ2ExOiAweDAzRDYsCiAgb21lZ2FjeXJpbGxpYzogMHgwNDYxLAogIG9tZWdhbGF0aW5jbG9zZWQ6IDB4MDI3NywKICBvbWVnYXJvdW5kY3lyaWxsaWM6IDB4MDQ3QiwKICBvbWVnYXRpdGxvY3lyaWxsaWM6IDB4MDQ3RCwKICBvbWVnYXRvbm9zOiAweDAzQ0UsCiAgb21ndWphcmF0aTogMHgwQUQwLAogIG9taWNyb246IDB4MDNCRiwKICBvbWljcm9udG9ub3M6IDB4MDNDQywKICBvbW9ub3NwYWNlOiAweEZGNEYsCiAgb25lOiAweDAwMzEsCiAgb25lYXJhYmljOiAweDA2NjEsCiAgb25lYmVuZ2FsaTogMHgwOUU3LAogIG9uZWNpcmNsZTogMHgyNDYwLAogIG9uZWNpcmNsZWludmVyc2VzYW5zc2VyaWY6IDB4Mjc4QSwKICBvbmVkZXZhOiAweDA5NjcsCiAgb25lZG90ZW5sZWFkZXI6IDB4MjAyNCwKICBvbmVlaWdodGg6IDB4MjE1QiwKICBvbmVmaXR0ZWQ6IDB4RjZEQywKICBvbmVndWphcmF0aTogMHgwQUU3LAogIG9uZWd1cm11a2hpOiAweDBBNjcsCiAgb25laGFja2FyYWJpYzogMHgwNjYxLAogIG9uZWhhbGY6IDB4MDBCRCwKICBvbmVoYW5nemhvdTogMHgzMDIxLAogIG9uZWlkZW9ncmFwaGljcGFyZW46IDB4MzIyMCwKICBvbmVpbmZlcmlvcjogMHgyMDgxLAogIG9uZW1vbm9zcGFjZTogMHhGRjExLAogIG9uZW51bWVyYXRvcmJlbmdhbGk6IDB4MDlGNCwKICBvbmVvbGRzdHlsZTogMHhGNzMxLAogIG9uZXBhcmVuOiAweDI0NzQsCiAgb25lcGVyaW9kOiAweDI0ODgsCiAgb25lcGVyc2lhbjogMHgwNkYxLAogIG9uZXF1YXJ0ZXI6IDB4MDBCQywKICBvbmVyb21hbjogMHgyMTcwLAogIG9uZXN1cGVyaW9yOiAweDAwQjksCiAgb25ldGhhaTogMHgwRTUxLAogIG9uZXRoaXJkOiAweDIxNTMsCiAgb29nb25lazogMHgwMUVCLAogIG9vZ29uZWttYWNyb246IDB4MDFFRCwKICBvb2d1cm11a2hpOiAweDBBMTMsCiAgb29tYXRyYWd1cm11a2hpOiAweDBBNEIsCiAgb29wZW46IDB4MDI1NCwKICBvcGFyZW46IDB4MjRBQSwKICBvcGVuYnVsbGV0OiAweDI1RTYsCiAgb3B0aW9uOiAweDIzMjUsCiAgb3JkZmVtaW5pbmU6IDB4MDBBQSwKICBvcmRtYXNjdWxpbmU6IDB4MDBCQSwKICBvcnRob2dvbmFsOiAweDIyMUYsCiAgb3Nob3J0ZGV2YTogMHgwOTEyLAogIG9zaG9ydHZvd2Vsc2lnbmRldmE6IDB4MDk0QSwKICBvc2xhc2g6IDB4MDBGOCwKICBvc2xhc2hhY3V0ZTogMHgwMUZGLAogIG9zbWFsbGhpcmFnYW5hOiAweDMwNDksCiAgb3NtYWxsa2F0YWthbmE6IDB4MzBBOSwKICBvc21hbGxrYXRha2FuYWhhbGZ3aWR0aDogMHhGRjZCLAogIG9zdHJva2VhY3V0ZTogMHgwMUZGLAogIG9zdXBlcmlvcjogMHhGNkYwLAogIG90Y3lyaWxsaWM6IDB4MDQ3RiwKICBvdGlsZGU6IDB4MDBGNSwKICBvdGlsZGVhY3V0ZTogMHgxRTRELAogIG90aWxkZWRpZXJlc2lzOiAweDFFNEYsCiAgb3Vib3BvbW9mbzogMHgzMTIxLAogIG92ZXJsaW5lOiAweDIwM0UsCiAgb3ZlcmxpbmVjZW50ZXJsaW5lOiAweEZFNEEsCiAgb3ZlcmxpbmVjbWI6IDB4MDMwNSwKICBvdmVybGluZWRhc2hlZDogMHhGRTQ5LAogIG92ZXJsaW5lZGJsd2F2eTogMHhGRTRDLAogIG92ZXJsaW5ld2F2eTogMHhGRTRCLAogIG92ZXJzY29yZTogMHgwMEFGLAogIG92b3dlbHNpZ25iZW5nYWxpOiAweDA5Q0IsCiAgb3Zvd2Vsc2lnbmRldmE6IDB4MDk0QiwKICBvdm93ZWxzaWduZ3VqYXJhdGk6IDB4MEFDQiwKICBwOiAweDAwNzAsCiAgcGFhbXBzc3F1YXJlOiAweDMzODAsCiAgcGFhc2VudG9zcXVhcmU6IDB4MzMyQiwKICBwYWJlbmdhbGk6IDB4MDlBQSwKICBwYWN1dGU6IDB4MUU1NSwKICBwYWRldmE6IDB4MDkyQSwKICBwYWdlZG93bjogMHgyMURGLAogIHBhZ2V1cDogMHgyMURFLAogIHBhZ3VqYXJhdGk6IDB4MEFBQSwKICBwYWd1cm11a2hpOiAweDBBMkEsCiAgcGFoaXJhZ2FuYTogMHgzMDcxLAogIHBhaXlhbm5vaXRoYWk6IDB4MEUyRiwKICBwYWthdGFrYW5hOiAweDMwRDEsCiAgcGFsYXRhbGl6YXRpb25jeXJpbGxpY2NtYjogMHgwNDg0LAogIHBhbG9jaGthY3lyaWxsaWM6IDB4MDRDMCwKICBwYW5zaW9za29yZWFuOiAweDMxN0YsCiAgcGFyYWdyYXBoOiAweDAwQjYsCiAgcGFyYWxsZWw6IDB4MjIyNSwKICBwYXJlbmxlZnQ6IDB4MDAyOCwKICBwYXJlbmxlZnRhbHRvbmVhcmFiaWM6IDB4RkQzRSwKICBwYXJlbmxlZnRidDogMHhGOEVELAogIHBhcmVubGVmdGV4OiAweEY4RUMsCiAgcGFyZW5sZWZ0aW5mZXJpb3I6IDB4MjA4RCwKICBwYXJlbmxlZnRtb25vc3BhY2U6IDB4RkYwOCwKICBwYXJlbmxlZnRzbWFsbDogMHhGRTU5LAogIHBhcmVubGVmdHN1cGVyaW9yOiAweDIwN0QsCiAgcGFyZW5sZWZ0dHA6IDB4RjhFQiwKICBwYXJlbmxlZnR2ZXJ0aWNhbDogMHhGRTM1LAogIHBhcmVucmlnaHQ6IDB4MDAyOSwKICBwYXJlbnJpZ2h0YWx0b25lYXJhYmljOiAweEZEM0YsCiAgcGFyZW5yaWdodGJ0OiAweEY4RjgsCiAgcGFyZW5yaWdodGV4OiAweEY4RjcsCiAgcGFyZW5yaWdodGluZmVyaW9yOiAweDIwOEUsCiAgcGFyZW5yaWdodG1vbm9zcGFjZTogMHhGRjA5LAogIHBhcmVucmlnaHRzbWFsbDogMHhGRTVBLAogIHBhcmVucmlnaHRzdXBlcmlvcjogMHgyMDdFLAogIHBhcmVucmlnaHR0cDogMHhGOEY2LAogIHBhcmVucmlnaHR2ZXJ0aWNhbDogMHhGRTM2LAogIHBhcnRpYWxkaWZmOiAweDIyMDIsCiAgcGFzZXFoZWJyZXc6IDB4MDVDMCwKICBwYXNodGFoZWJyZXc6IDB4MDU5OSwKICBwYXNxdWFyZTogMHgzM0E5LAogIHBhdGFoOiAweDA1QjcsCiAgcGF0YWgxMTogMHgwNUI3LAogIHBhdGFoMWQ6IDB4MDVCNywKICBwYXRhaDJhOiAweDA1QjcsCiAgcGF0YWhoZWJyZXc6IDB4MDVCNywKICBwYXRhaG5hcnJvd2hlYnJldzogMHgwNUI3LAogIHBhdGFocXVhcnRlcmhlYnJldzogMHgwNUI3LAogIHBhdGFod2lkZWhlYnJldzogMHgwNUI3LAogIHBhemVyaGVicmV3OiAweDA1QTEsCiAgcGJvcG9tb2ZvOiAweDMxMDYsCiAgcGNpcmNsZTogMHgyNERGLAogIHBkb3RhY2NlbnQ6IDB4MUU1NywKICBwZTogMHgwNUU0LAogIHBlY3lyaWxsaWM6IDB4MDQzRiwKICBwZWRhZ2VzaDogMHhGQjQ0LAogIHBlZGFnZXNoaGVicmV3OiAweEZCNDQsCiAgcGVlemlzcXVhcmU6IDB4MzMzQiwKICBwZWZpbmFsZGFnZXNoaGVicmV3OiAweEZCNDMsCiAgcGVoYXJhYmljOiAweDA2N0UsCiAgcGVoYXJtZW5pYW46IDB4MDU3QSwKICBwZWhlYnJldzogMHgwNUU0LAogIHBlaGZpbmFsYXJhYmljOiAweEZCNTcsCiAgcGVoaW5pdGlhbGFyYWJpYzogMHhGQjU4LAogIHBlaGlyYWdhbmE6IDB4MzA3QSwKICBwZWhtZWRpYWxhcmFiaWM6IDB4RkI1OSwKICBwZWthdGFrYW5hOiAweDMwREEsCiAgcGVtaWRkbGVob29rY3lyaWxsaWM6IDB4MDRBNywKICBwZXJhZmVoZWJyZXc6IDB4RkI0RSwKICBwZXJjZW50OiAweDAwMjUsCiAgcGVyY2VudGFyYWJpYzogMHgwNjZBLAogIHBlcmNlbnRtb25vc3BhY2U6IDB4RkYwNSwKICBwZXJjZW50c21hbGw6IDB4RkU2QSwKICBwZXJpb2Q6IDB4MDAyRSwKICBwZXJpb2Rhcm1lbmlhbjogMHgwNTg5LAogIHBlcmlvZGNlbnRlcmVkOiAweDAwQjcsCiAgcGVyaW9kaGFsZndpZHRoOiAweEZGNjEsCiAgcGVyaW9kaW5mZXJpb3I6IDB4RjZFNywKICBwZXJpb2Rtb25vc3BhY2U6IDB4RkYwRSwKICBwZXJpb2RzbWFsbDogMHhGRTUyLAogIHBlcmlvZHN1cGVyaW9yOiAweEY2RTgsCiAgcGVyaXNwb21lbmlncmVla2NtYjogMHgwMzQyLAogIHBlcnBlbmRpY3VsYXI6IDB4MjJBNSwKICBwZXJ0aG91c2FuZDogMHgyMDMwLAogIHBlc2V0YTogMHgyMEE3LAogIHBmc3F1YXJlOiAweDMzOEEsCiAgcGhhYmVuZ2FsaTogMHgwOUFCLAogIHBoYWRldmE6IDB4MDkyQiwKICBwaGFndWphcmF0aTogMHgwQUFCLAogIHBoYWd1cm11a2hpOiAweDBBMkIsCiAgcGhpOiAweDAzQzYsCiAgcGhpMTogMHgwM0Q1LAogIHBoaWV1cGhhY2lyY2xla29yZWFuOiAweDMyN0EsCiAgcGhpZXVwaGFwYXJlbmtvcmVhbjogMHgzMjFBLAogIHBoaWV1cGhjaXJjbGVrb3JlYW46IDB4MzI2QywKICBwaGlldXBoa29yZWFuOiAweDMxNEQsCiAgcGhpZXVwaHBhcmVua29yZWFuOiAweDMyMEMsCiAgcGhpbGF0aW46IDB4MDI3OCwKICBwaGludGh1dGhhaTogMHgwRTNBLAogIHBoaXN5bWJvbGdyZWVrOiAweDAzRDUsCiAgcGhvb2s6IDB4MDFBNSwKICBwaG9waGFudGhhaTogMHgwRTFFLAogIHBob3BodW5ndGhhaTogMHgwRTFDLAogIHBob3NhbXBoYW90aGFpOiAweDBFMjAsCiAgcGk6IDB4MDNDMCwKICBwaWV1cGFjaXJjbGVrb3JlYW46IDB4MzI3MywKICBwaWV1cGFwYXJlbmtvcmVhbjogMHgzMjEzLAogIHBpZXVwY2lldWNrb3JlYW46IDB4MzE3NiwKICBwaWV1cGNpcmNsZWtvcmVhbjogMHgzMjY1LAogIHBpZXVwa2l5ZW9ra29yZWFuOiAweDMxNzIsCiAgcGlldXBrb3JlYW46IDB4MzE0MiwKICBwaWV1cHBhcmVua29yZWFuOiAweDMyMDUsCiAgcGlldXBzaW9za2l5ZW9ra29yZWFuOiAweDMxNzQsCiAgcGlldXBzaW9za29yZWFuOiAweDMxNDQsCiAgcGlldXBzaW9zdGlrZXV0a29yZWFuOiAweDMxNzUsCiAgcGlldXB0aGlldXRoa29yZWFuOiAweDMxNzcsCiAgcGlldXB0aWtldXRrb3JlYW46IDB4MzE3MywKICBwaWhpcmFnYW5hOiAweDMwNzQsCiAgcGlrYXRha2FuYTogMHgzMEQ0LAogIHBpc3ltYm9sZ3JlZWs6IDB4MDNENiwKICBwaXdyYXJtZW5pYW46IDB4MDU4MywKICBwbHVzOiAweDAwMkIsCiAgcGx1c2JlbG93Y21iOiAweDAzMUYsCiAgcGx1c2NpcmNsZTogMHgyMjk1LAogIHBsdXNtaW51czogMHgwMEIxLAogIHBsdXNtb2Q6IDB4MDJENiwKICBwbHVzbW9ub3NwYWNlOiAweEZGMEIsCiAgcGx1c3NtYWxsOiAweEZFNjIsCiAgcGx1c3N1cGVyaW9yOiAweDIwN0EsCiAgcG1vbm9zcGFjZTogMHhGRjUwLAogIHBtc3F1YXJlOiAweDMzRDgsCiAgcG9oaXJhZ2FuYTogMHgzMDdELAogIHBvaW50aW5naW5kZXhkb3dud2hpdGU6IDB4MjYxRiwKICBwb2ludGluZ2luZGV4bGVmdHdoaXRlOiAweDI2MUMsCiAgcG9pbnRpbmdpbmRleHJpZ2h0d2hpdGU6IDB4MjYxRSwKICBwb2ludGluZ2luZGV4dXB3aGl0ZTogMHgyNjFELAogIHBva2F0YWthbmE6IDB4MzBERCwKICBwb3BsYXRoYWk6IDB4MEUxQiwKICBwb3N0YWxtYXJrOiAweDMwMTIsCiAgcG9zdGFsbWFya2ZhY2U6IDB4MzAyMCwKICBwcGFyZW46IDB4MjRBQiwKICBwcmVjZWRlczogMHgyMjdBLAogIHByZXNjcmlwdGlvbjogMHgyMTFFLAogIHByaW1lbW9kOiAweDAyQjksCiAgcHJpbWVyZXZlcnNlZDogMHgyMDM1LAogIHByb2R1Y3Q6IDB4MjIwRiwKICBwcm9qZWN0aXZlOiAweDIzMDUsCiAgcHJvbG9uZ2Vka2FuYTogMHgzMEZDLAogIHByb3BlbGxvcjogMHgyMzE4LAogIHByb3BlcnN1YnNldDogMHgyMjgyLAogIHByb3BlcnN1cGVyc2V0OiAweDIyODMsCiAgcHJvcG9ydGlvbjogMHgyMjM3LAogIHByb3BvcnRpb25hbDogMHgyMjFELAogIHBzaTogMHgwM0M4LAogIHBzaWN5cmlsbGljOiAweDA0NzEsCiAgcHNpbGlwbmV1bWF0YWN5cmlsbGljY21iOiAweDA0ODYsCiAgcHNzcXVhcmU6IDB4MzNCMCwKICBwdWhpcmFnYW5hOiAweDMwNzcsCiAgcHVrYXRha2FuYTogMHgzMEQ3LAogIHB2c3F1YXJlOiAweDMzQjQsCiAgcHdzcXVhcmU6IDB4MzNCQSwKICBxOiAweDAwNzEsCiAgcWFkZXZhOiAweDA5NTgsCiAgcWFkbWFoZWJyZXc6IDB4MDVBOCwKICBxYWZhcmFiaWM6IDB4MDY0MiwKICBxYWZmaW5hbGFyYWJpYzogMHhGRUQ2LAogIHFhZmluaXRpYWxhcmFiaWM6IDB4RkVENywKICBxYWZtZWRpYWxhcmFiaWM6IDB4RkVEOCwKICBxYW1hdHM6IDB4MDVCOCwKICBxYW1hdHMxMDogMHgwNUI4LAogIHFhbWF0czFhOiAweDA1QjgsCiAgcWFtYXRzMWM6IDB4MDVCOCwKICBxYW1hdHMyNzogMHgwNUI4LAogIHFhbWF0czI5OiAweDA1QjgsCiAgcWFtYXRzMzM6IDB4MDVCOCwKICBxYW1hdHNkZTogMHgwNUI4LAogIHFhbWF0c2hlYnJldzogMHgwNUI4LAogIHFhbWF0c25hcnJvd2hlYnJldzogMHgwNUI4LAogIHFhbWF0c3FhdGFuaGVicmV3OiAweDA1QjgsCiAgcWFtYXRzcWF0YW5uYXJyb3doZWJyZXc6IDB4MDVCOCwKICBxYW1hdHNxYXRhbnF1YXJ0ZXJoZWJyZXc6IDB4MDVCOCwKICBxYW1hdHNxYXRhbndpZGVoZWJyZXc6IDB4MDVCOCwKICBxYW1hdHNxdWFydGVyaGVicmV3OiAweDA1QjgsCiAgcWFtYXRzd2lkZWhlYnJldzogMHgwNUI4LAogIHFhcm5leXBhcmFoZWJyZXc6IDB4MDU5RiwKICBxYm9wb21vZm86IDB4MzExMSwKICBxY2lyY2xlOiAweDI0RTAsCiAgcWhvb2s6IDB4MDJBMCwKICBxbW9ub3NwYWNlOiAweEZGNTEsCiAgcW9mOiAweDA1RTcsCiAgcW9mZGFnZXNoOiAweEZCNDcsCiAgcW9mZGFnZXNoaGVicmV3OiAweEZCNDcsCiAgcW9maGVicmV3OiAweDA1RTcsCiAgcXBhcmVuOiAweDI0QUMsCiAgcXVhcnRlcm5vdGU6IDB4MjY2OSwKICBxdWJ1dHM6IDB4MDVCQiwKICBxdWJ1dHMxODogMHgwNUJCLAogIHF1YnV0czI1OiAweDA1QkIsCiAgcXVidXRzMzE6IDB4MDVCQiwKICBxdWJ1dHNoZWJyZXc6IDB4MDVCQiwKICBxdWJ1dHNuYXJyb3doZWJyZXc6IDB4MDVCQiwKICBxdWJ1dHNxdWFydGVyaGVicmV3OiAweDA1QkIsCiAgcXVidXRzd2lkZWhlYnJldzogMHgwNUJCLAogIHF1ZXN0aW9uOiAweDAwM0YsCiAgcXVlc3Rpb25hcmFiaWM6IDB4MDYxRiwKICBxdWVzdGlvbmFybWVuaWFuOiAweDA1NUUsCiAgcXVlc3Rpb25kb3duOiAweDAwQkYsCiAgcXVlc3Rpb25kb3duc21hbGw6IDB4RjdCRiwKICBxdWVzdGlvbmdyZWVrOiAweDAzN0UsCiAgcXVlc3Rpb25tb25vc3BhY2U6IDB4RkYxRiwKICBxdWVzdGlvbnNtYWxsOiAweEY3M0YsCiAgcXVvdGVkYmw6IDB4MDAyMiwKICBxdW90ZWRibGJhc2U6IDB4MjAxRSwKICBxdW90ZWRibGxlZnQ6IDB4MjAxQywKICBxdW90ZWRibG1vbm9zcGFjZTogMHhGRjAyLAogIHF1b3RlZGJscHJpbWU6IDB4MzAxRSwKICBxdW90ZWRibHByaW1lcmV2ZXJzZWQ6IDB4MzAxRCwKICBxdW90ZWRibHJpZ2h0OiAweDIwMUQsCiAgcXVvdGVsZWZ0OiAweDIwMTgsCiAgcXVvdGVsZWZ0cmV2ZXJzZWQ6IDB4MjAxQiwKICBxdW90ZXJldmVyc2VkOiAweDIwMUIsCiAgcXVvdGVyaWdodDogMHgyMDE5LAogIHF1b3RlcmlnaHRuOiAweDAxNDksCiAgcXVvdGVzaW5nbGJhc2U6IDB4MjAxQSwKICBxdW90ZXNpbmdsZTogMHgwMDI3LAogIHF1b3Rlc2luZ2xlbW9ub3NwYWNlOiAweEZGMDcsCiAgcjogMHgwMDcyLAogIHJhYXJtZW5pYW46IDB4MDU3QywKICByYWJlbmdhbGk6IDB4MDlCMCwKICByYWN1dGU6IDB4MDE1NSwKICByYWRldmE6IDB4MDkzMCwKICByYWRpY2FsOiAweDIyMUEsCiAgcmFkaWNhbGV4OiAweEY4RTUsCiAgcmFkb3ZlcnNzcXVhcmU6IDB4MzNBRSwKICByYWRvdmVyc3NxdWFyZWRzcXVhcmU6IDB4MzNBRiwKICByYWRzcXVhcmU6IDB4MzNBRCwKICByYWZlOiAweDA1QkYsCiAgcmFmZWhlYnJldzogMHgwNUJGLAogIHJhZ3VqYXJhdGk6IDB4MEFCMCwKICByYWd1cm11a2hpOiAweDBBMzAsCiAgcmFoaXJhZ2FuYTogMHgzMDg5LAogIHJha2F0YWthbmE6IDB4MzBFOSwKICByYWthdGFrYW5haGFsZndpZHRoOiAweEZGOTcsCiAgcmFsb3dlcmRpYWdvbmFsYmVuZ2FsaTogMHgwOUYxLAogIHJhbWlkZGxlZGlhZ29uYWxiZW5nYWxpOiAweDA5RjAsCiAgcmFtc2hvcm46IDB4MDI2NCwKICByYXRpbzogMHgyMjM2LAogIHJib3BvbW9mbzogMHgzMTE2LAogIHJjYXJvbjogMHgwMTU5LAogIHJjZWRpbGxhOiAweDAxNTcsCiAgcmNpcmNsZTogMHgyNEUxLAogIHJjb21tYWFjY2VudDogMHgwMTU3LAogIHJkYmxncmF2ZTogMHgwMjExLAogIHJkb3RhY2NlbnQ6IDB4MUU1OSwKICByZG90YmVsb3c6IDB4MUU1QiwKICByZG90YmVsb3dtYWNyb246IDB4MUU1RCwKICByZWZlcmVuY2VtYXJrOiAweDIwM0IsCiAgcmVmbGV4c3Vic2V0OiAweDIyODYsCiAgcmVmbGV4c3VwZXJzZXQ6IDB4MjI4NywKICByZWdpc3RlcmVkOiAweDAwQUUsCiAgcmVnaXN0ZXJzYW5zOiAweEY4RTgsCiAgcmVnaXN0ZXJzZXJpZjogMHhGNkRBLAogIHJlaGFyYWJpYzogMHgwNjMxLAogIHJlaGFybWVuaWFuOiAweDA1ODAsCiAgcmVoZmluYWxhcmFiaWM6IDB4RkVBRSwKICByZWhpcmFnYW5hOiAweDMwOEMsCiAgcmVrYXRha2FuYTogMHgzMEVDLAogIHJla2F0YWthbmFoYWxmd2lkdGg6IDB4RkY5QSwKICByZXNoOiAweDA1RTgsCiAgcmVzaGRhZ2VzaGhlYnJldzogMHhGQjQ4LAogIHJlc2hoZWJyZXc6IDB4MDVFOCwKICByZXZlcnNlZHRpbGRlOiAweDIyM0QsCiAgcmV2aWFoZWJyZXc6IDB4MDU5NywKICByZXZpYW11Z3Jhc2hoZWJyZXc6IDB4MDU5NywKICByZXZsb2dpY2Fsbm90OiAweDIzMTAsCiAgcmZpc2hob29rOiAweDAyN0UsCiAgcmZpc2hob29rcmV2ZXJzZWQ6IDB4MDI3RiwKICByaGFiZW5nYWxpOiAweDA5REQsCiAgcmhhZGV2YTogMHgwOTVELAogIHJobzogMHgwM0MxLAogIHJob29rOiAweDAyN0QsCiAgcmhvb2t0dXJuZWQ6IDB4MDI3QiwKICByaG9va3R1cm5lZHN1cGVyaW9yOiAweDAyQjUsCiAgcmhvc3ltYm9sZ3JlZWs6IDB4MDNGMSwKICByaG90aWNob29rbW9kOiAweDAyREUsCiAgcmlldWxhY2lyY2xla29yZWFuOiAweDMyNzEsCiAgcmlldWxhcGFyZW5rb3JlYW46IDB4MzIxMSwKICByaWV1bGNpcmNsZWtvcmVhbjogMHgzMjYzLAogIHJpZXVsaGlldWhrb3JlYW46IDB4MzE0MCwKICByaWV1bGtpeWVva2tvcmVhbjogMHgzMTNBLAogIHJpZXVsa2l5ZW9rc2lvc2tvcmVhbjogMHgzMTY5LAogIHJpZXVsa29yZWFuOiAweDMxMzksCiAgcmlldWxtaWV1bWtvcmVhbjogMHgzMTNCLAogIHJpZXVscGFuc2lvc2tvcmVhbjogMHgzMTZDLAogIHJpZXVscGFyZW5rb3JlYW46IDB4MzIwMywKICByaWV1bHBoaWV1cGhrb3JlYW46IDB4MzEzRiwKICByaWV1bHBpZXVwa29yZWFuOiAweDMxM0MsCiAgcmlldWxwaWV1cHNpb3Nrb3JlYW46IDB4MzE2QiwKICByaWV1bHNpb3Nrb3JlYW46IDB4MzEzRCwKICByaWV1bHRoaWV1dGhrb3JlYW46IDB4MzEzRSwKICByaWV1bHRpa2V1dGtvcmVhbjogMHgzMTZBLAogIHJpZXVseWVvcmluaGlldWhrb3JlYW46IDB4MzE2RCwKICByaWdodGFuZ2xlOiAweDIyMUYsCiAgcmlnaHR0YWNrYmVsb3djbWI6IDB4MDMxOSwKICByaWdodHRyaWFuZ2xlOiAweDIyQkYsCiAgcmloaXJhZ2FuYTogMHgzMDhBLAogIHJpa2F0YWthbmE6IDB4MzBFQSwKICByaWthdGFrYW5haGFsZndpZHRoOiAweEZGOTgsCiAgcmluZzogMHgwMkRBLAogIHJpbmdiZWxvd2NtYjogMHgwMzI1LAogIHJpbmdjbWI6IDB4MDMwQSwKICByaW5naGFsZmxlZnQ6IDB4MDJCRiwKICByaW5naGFsZmxlZnRhcm1lbmlhbjogMHgwNTU5LAogIHJpbmdoYWxmbGVmdGJlbG93Y21iOiAweDAzMUMsCiAgcmluZ2hhbGZsZWZ0Y2VudGVyZWQ6IDB4MDJEMywKICByaW5naGFsZnJpZ2h0OiAweDAyQkUsCiAgcmluZ2hhbGZyaWdodGJlbG93Y21iOiAweDAzMzksCiAgcmluZ2hhbGZyaWdodGNlbnRlcmVkOiAweDAyRDIsCiAgcmludmVydGVkYnJldmU6IDB4MDIxMywKICByaXR0b3J1c3F1YXJlOiAweDMzNTEsCiAgcmxpbmViZWxvdzogMHgxRTVGLAogIHJsb25nbGVnOiAweDAyN0MsCiAgcmxvbmdsZWd0dXJuZWQ6IDB4MDI3QSwKICBybW9ub3NwYWNlOiAweEZGNTIsCiAgcm9oaXJhZ2FuYTogMHgzMDhELAogIHJva2F0YWthbmE6IDB4MzBFRCwKICByb2thdGFrYW5haGFsZndpZHRoOiAweEZGOUIsCiAgcm9ydWF0aGFpOiAweDBFMjMsCiAgcnBhcmVuOiAweDI0QUQsCiAgcnJhYmVuZ2FsaTogMHgwOURDLAogIHJyYWRldmE6IDB4MDkzMSwKICBycmFndXJtdWtoaTogMHgwQTVDLAogIHJyZWhhcmFiaWM6IDB4MDY5MSwKICBycmVoZmluYWxhcmFiaWM6IDB4RkI4RCwKICBycnZvY2FsaWNiZW5nYWxpOiAweDA5RTAsCiAgcnJ2b2NhbGljZGV2YTogMHgwOTYwLAogIHJydm9jYWxpY2d1amFyYXRpOiAweDBBRTAsCiAgcnJ2b2NhbGljdm93ZWxzaWduYmVuZ2FsaTogMHgwOUM0LAogIHJydm9jYWxpY3Zvd2Vsc2lnbmRldmE6IDB4MDk0NCwKICBycnZvY2FsaWN2b3dlbHNpZ25ndWphcmF0aTogMHgwQUM0LAogIHJzdXBlcmlvcjogMHhGNkYxLAogIHJ0YmxvY2s6IDB4MjU5MCwKICBydHVybmVkOiAweDAyNzksCiAgcnR1cm5lZHN1cGVyaW9yOiAweDAyQjQsCiAgcnVoaXJhZ2FuYTogMHgzMDhCLAogIHJ1a2F0YWthbmE6IDB4MzBFQiwKICBydWthdGFrYW5haGFsZndpZHRoOiAweEZGOTksCiAgcnVwZWVtYXJrYmVuZ2FsaTogMHgwOUYyLAogIHJ1cGVlc2lnbmJlbmdhbGk6IDB4MDlGMywKICBydXBpYWg6IDB4RjZERCwKICBydXRoYWk6IDB4MEUyNCwKICBydm9jYWxpY2JlbmdhbGk6IDB4MDk4QiwKICBydm9jYWxpY2RldmE6IDB4MDkwQiwKICBydm9jYWxpY2d1amFyYXRpOiAweDBBOEIsCiAgcnZvY2FsaWN2b3dlbHNpZ25iZW5nYWxpOiAweDA5QzMsCiAgcnZvY2FsaWN2b3dlbHNpZ25kZXZhOiAweDA5NDMsCiAgcnZvY2FsaWN2b3dlbHNpZ25ndWphcmF0aTogMHgwQUMzLAogIHM6IDB4MDA3MywKICBzYWJlbmdhbGk6IDB4MDlCOCwKICBzYWN1dGU6IDB4MDE1QiwKICBzYWN1dGVkb3RhY2NlbnQ6IDB4MUU2NSwKICBzYWRhcmFiaWM6IDB4MDYzNSwKICBzYWRldmE6IDB4MDkzOCwKICBzYWRmaW5hbGFyYWJpYzogMHhGRUJBLAogIHNhZGluaXRpYWxhcmFiaWM6IDB4RkVCQiwKICBzYWRtZWRpYWxhcmFiaWM6IDB4RkVCQywKICBzYWd1amFyYXRpOiAweDBBQjgsCiAgc2FndXJtdWtoaTogMHgwQTM4LAogIHNhaGlyYWdhbmE6IDB4MzA1NSwKICBzYWthdGFrYW5hOiAweDMwQjUsCiAgc2FrYXRha2FuYWhhbGZ3aWR0aDogMHhGRjdCLAogIHNhbGxhbGxhaG91YWxheWhld2FzYWxsYW1hcmFiaWM6IDB4RkRGQSwKICBzYW1la2g6IDB4MDVFMSwKICBzYW1la2hkYWdlc2g6IDB4RkI0MSwKICBzYW1la2hkYWdlc2hoZWJyZXc6IDB4RkI0MSwKICBzYW1la2hoZWJyZXc6IDB4MDVFMSwKICBzYXJhYWF0aGFpOiAweDBFMzIsCiAgc2FyYWFldGhhaTogMHgwRTQxLAogIHNhcmFhaW1haW1hbGFpdGhhaTogMHgwRTQ0LAogIHNhcmFhaW1haW11YW50aGFpOiAweDBFNDMsCiAgc2FyYWFtdGhhaTogMHgwRTMzLAogIHNhcmFhdGhhaTogMHgwRTMwLAogIHNhcmFldGhhaTogMHgwRTQwLAogIHNhcmFpaWxlZnR0aGFpOiAweEY4ODYsCiAgc2FyYWlpdGhhaTogMHgwRTM1LAogIHNhcmFpbGVmdHRoYWk6IDB4Rjg4NSwKICBzYXJhaXRoYWk6IDB4MEUzNCwKICBzYXJhb3RoYWk6IDB4MEU0MiwKICBzYXJhdWVlbGVmdHRoYWk6IDB4Rjg4OCwKICBzYXJhdWVldGhhaTogMHgwRTM3LAogIHNhcmF1ZWxlZnR0aGFpOiAweEY4ODcsCiAgc2FyYXVldGhhaTogMHgwRTM2LAogIHNhcmF1dGhhaTogMHgwRTM4LAogIHNhcmF1dXRoYWk6IDB4MEUzOSwKICBzYm9wb21vZm86IDB4MzExOSwKICBzY2Fyb246IDB4MDE2MSwKICBzY2Fyb25kb3RhY2NlbnQ6IDB4MUU2NywKICBzY2VkaWxsYTogMHgwMTVGLAogIHNjaHdhOiAweDAyNTksCiAgc2Nod2FjeXJpbGxpYzogMHgwNEQ5LAogIHNjaHdhZGllcmVzaXNjeXJpbGxpYzogMHgwNERCLAogIHNjaHdhaG9vazogMHgwMjVBLAogIHNjaXJjbGU6IDB4MjRFMiwKICBzY2lyY3VtZmxleDogMHgwMTVELAogIHNjb21tYWFjY2VudDogMHgwMjE5LAogIHNkb3RhY2NlbnQ6IDB4MUU2MSwKICBzZG90YmVsb3c6IDB4MUU2MywKICBzZG90YmVsb3dkb3RhY2NlbnQ6IDB4MUU2OSwKICBzZWFndWxsYmVsb3djbWI6IDB4MDMzQywKICBzZWNvbmQ6IDB4MjAzMywKICBzZWNvbmR0b25lY2hpbmVzZTogMHgwMkNBLAogIHNlY3Rpb246IDB4MDBBNywKICBzZWVuYXJhYmljOiAweDA2MzMsCiAgc2VlbmZpbmFsYXJhYmljOiAweEZFQjIsCiAgc2VlbmluaXRpYWxhcmFiaWM6IDB4RkVCMywKICBzZWVubWVkaWFsYXJhYmljOiAweEZFQjQsCiAgc2Vnb2w6IDB4MDVCNiwKICBzZWdvbDEzOiAweDA1QjYsCiAgc2Vnb2wxZjogMHgwNUI2LAogIHNlZ29sMmM6IDB4MDVCNiwKICBzZWdvbGhlYnJldzogMHgwNUI2LAogIHNlZ29sbmFycm93aGVicmV3OiAweDA1QjYsCiAgc2Vnb2xxdWFydGVyaGVicmV3OiAweDA1QjYsCiAgc2Vnb2x0YWhlYnJldzogMHgwNTkyLAogIHNlZ29sd2lkZWhlYnJldzogMHgwNUI2LAogIHNlaGFybWVuaWFuOiAweDA1N0QsCiAgc2VoaXJhZ2FuYTogMHgzMDVCLAogIHNla2F0YWthbmE6IDB4MzBCQiwKICBzZWthdGFrYW5haGFsZndpZHRoOiAweEZGN0UsCiAgc2VtaWNvbG9uOiAweDAwM0IsCiAgc2VtaWNvbG9uYXJhYmljOiAweDA2MUIsCiAgc2VtaWNvbG9ubW9ub3NwYWNlOiAweEZGMUIsCiAgc2VtaWNvbG9uc21hbGw6IDB4RkU1NCwKICBzZW1pdm9pY2VkbWFya2thbmE6IDB4MzA5QywKICBzZW1pdm9pY2VkbWFya2thbmFoYWxmd2lkdGg6IDB4RkY5RiwKICBzZW50aXNxdWFyZTogMHgzMzIyLAogIHNlbnRvc3F1YXJlOiAweDMzMjMsCiAgc2V2ZW46IDB4MDAzNywKICBzZXZlbmFyYWJpYzogMHgwNjY3LAogIHNldmVuYmVuZ2FsaTogMHgwOUVELAogIHNldmVuY2lyY2xlOiAweDI0NjYsCiAgc2V2ZW5jaXJjbGVpbnZlcnNlc2Fuc3NlcmlmOiAweDI3OTAsCiAgc2V2ZW5kZXZhOiAweDA5NkQsCiAgc2V2ZW5laWdodGhzOiAweDIxNUUsCiAgc2V2ZW5ndWphcmF0aTogMHgwQUVELAogIHNldmVuZ3VybXVraGk6IDB4MEE2RCwKICBzZXZlbmhhY2thcmFiaWM6IDB4MDY2NywKICBzZXZlbmhhbmd6aG91OiAweDMwMjcsCiAgc2V2ZW5pZGVvZ3JhcGhpY3BhcmVuOiAweDMyMjYsCiAgc2V2ZW5pbmZlcmlvcjogMHgyMDg3LAogIHNldmVubW9ub3NwYWNlOiAweEZGMTcsCiAgc2V2ZW5vbGRzdHlsZTogMHhGNzM3LAogIHNldmVucGFyZW46IDB4MjQ3QSwKICBzZXZlbnBlcmlvZDogMHgyNDhFLAogIHNldmVucGVyc2lhbjogMHgwNkY3LAogIHNldmVucm9tYW46IDB4MjE3NiwKICBzZXZlbnN1cGVyaW9yOiAweDIwNzcsCiAgc2V2ZW50ZWVuY2lyY2xlOiAweDI0NzAsCiAgc2V2ZW50ZWVucGFyZW46IDB4MjQ4NCwKICBzZXZlbnRlZW5wZXJpb2Q6IDB4MjQ5OCwKICBzZXZlbnRoYWk6IDB4MEU1NywKICBzZnRoeXBoZW46IDB4MDBBRCwKICBzaGFhcm1lbmlhbjogMHgwNTc3LAogIHNoYWJlbmdhbGk6IDB4MDlCNiwKICBzaGFjeXJpbGxpYzogMHgwNDQ4LAogIHNoYWRkYWFyYWJpYzogMHgwNjUxLAogIHNoYWRkYWRhbW1hYXJhYmljOiAweEZDNjEsCiAgc2hhZGRhZGFtbWF0YW5hcmFiaWM6IDB4RkM1RSwKICBzaGFkZGFmYXRoYWFyYWJpYzogMHhGQzYwLAogIHNoYWRkYWthc3JhYXJhYmljOiAweEZDNjIsCiAgc2hhZGRha2FzcmF0YW5hcmFiaWM6IDB4RkM1RiwKICBzaGFkZTogMHgyNTkyLAogIHNoYWRlZGFyazogMHgyNTkzLAogIHNoYWRlbGlnaHQ6IDB4MjU5MSwKICBzaGFkZW1lZGl1bTogMHgyNTkyLAogIHNoYWRldmE6IDB4MDkzNiwKICBzaGFndWphcmF0aTogMHgwQUI2LAogIHNoYWd1cm11a2hpOiAweDBBMzYsCiAgc2hhbHNoZWxldGhlYnJldzogMHgwNTkzLAogIHNoYm9wb21vZm86IDB4MzExNSwKICBzaGNoYWN5cmlsbGljOiAweDA0NDksCiAgc2hlZW5hcmFiaWM6IDB4MDYzNCwKICBzaGVlbmZpbmFsYXJhYmljOiAweEZFQjYsCiAgc2hlZW5pbml0aWFsYXJhYmljOiAweEZFQjcsCiAgc2hlZW5tZWRpYWxhcmFiaWM6IDB4RkVCOCwKICBzaGVpY29wdGljOiAweDAzRTMsCiAgc2hlcWVsOiAweDIwQUEsCiAgc2hlcWVsaGVicmV3OiAweDIwQUEsCiAgc2hldmE6IDB4MDVCMCwKICBzaGV2YTExNTogMHgwNUIwLAogIHNoZXZhMTU6IDB4MDVCMCwKICBzaGV2YTIyOiAweDA1QjAsCiAgc2hldmEyZTogMHgwNUIwLAogIHNoZXZhaGVicmV3OiAweDA1QjAsCiAgc2hldmFuYXJyb3doZWJyZXc6IDB4MDVCMCwKICBzaGV2YXF1YXJ0ZXJoZWJyZXc6IDB4MDVCMCwKICBzaGV2YXdpZGVoZWJyZXc6IDB4MDVCMCwKICBzaGhhY3lyaWxsaWM6IDB4MDRCQiwKICBzaGltYWNvcHRpYzogMHgwM0VELAogIHNoaW46IDB4MDVFOSwKICBzaGluZGFnZXNoOiAweEZCNDksCiAgc2hpbmRhZ2VzaGhlYnJldzogMHhGQjQ5LAogIHNoaW5kYWdlc2hzaGluZG90OiAweEZCMkMsCiAgc2hpbmRhZ2VzaHNoaW5kb3RoZWJyZXc6IDB4RkIyQywKICBzaGluZGFnZXNoc2luZG90OiAweEZCMkQsCiAgc2hpbmRhZ2VzaHNpbmRvdGhlYnJldzogMHhGQjJELAogIHNoaW5kb3RoZWJyZXc6IDB4MDVDMSwKICBzaGluaGVicmV3OiAweDA1RTksCiAgc2hpbnNoaW5kb3Q6IDB4RkIyQSwKICBzaGluc2hpbmRvdGhlYnJldzogMHhGQjJBLAogIHNoaW5zaW5kb3Q6IDB4RkIyQiwKICBzaGluc2luZG90aGVicmV3OiAweEZCMkIsCiAgc2hvb2s6IDB4MDI4MiwKICBzaWdtYTogMHgwM0MzLAogIHNpZ21hMTogMHgwM0MyLAogIHNpZ21hZmluYWw6IDB4MDNDMiwKICBzaWdtYWx1bmF0ZXN5bWJvbGdyZWVrOiAweDAzRjIsCiAgc2loaXJhZ2FuYTogMHgzMDU3LAogIHNpa2F0YWthbmE6IDB4MzBCNywKICBzaWthdGFrYW5haGFsZndpZHRoOiAweEZGN0MsCiAgc2lsdXFoZWJyZXc6IDB4MDVCRCwKICBzaWx1cWxlZnRoZWJyZXc6IDB4MDVCRCwKICBzaW1pbGFyOiAweDIyM0MsCiAgc2luZG90aGVicmV3OiAweDA1QzIsCiAgc2lvc2FjaXJjbGVrb3JlYW46IDB4MzI3NCwKICBzaW9zYXBhcmVua29yZWFuOiAweDMyMTQsCiAgc2lvc2NpZXVja29yZWFuOiAweDMxN0UsCiAgc2lvc2NpcmNsZWtvcmVhbjogMHgzMjY2LAogIHNpb3NraXllb2trb3JlYW46IDB4MzE3QSwKICBzaW9za29yZWFuOiAweDMxNDUsCiAgc2lvc25pZXVua29yZWFuOiAweDMxN0IsCiAgc2lvc3BhcmVua29yZWFuOiAweDMyMDYsCiAgc2lvc3BpZXVwa29yZWFuOiAweDMxN0QsCiAgc2lvc3Rpa2V1dGtvcmVhbjogMHgzMTdDLAogIHNpeDogMHgwMDM2LAogIHNpeGFyYWJpYzogMHgwNjY2LAogIHNpeGJlbmdhbGk6IDB4MDlFQywKICBzaXhjaXJjbGU6IDB4MjQ2NSwKICBzaXhjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmOiAweDI3OEYsCiAgc2l4ZGV2YTogMHgwOTZDLAogIHNpeGd1amFyYXRpOiAweDBBRUMsCiAgc2l4Z3VybXVraGk6IDB4MEE2QywKICBzaXhoYWNrYXJhYmljOiAweDA2NjYsCiAgc2l4aGFuZ3pob3U6IDB4MzAyNiwKICBzaXhpZGVvZ3JhcGhpY3BhcmVuOiAweDMyMjUsCiAgc2l4aW5mZXJpb3I6IDB4MjA4NiwKICBzaXhtb25vc3BhY2U6IDB4RkYxNiwKICBzaXhvbGRzdHlsZTogMHhGNzM2LAogIHNpeHBhcmVuOiAweDI0NzksCiAgc2l4cGVyaW9kOiAweDI0OEQsCiAgc2l4cGVyc2lhbjogMHgwNkY2LAogIHNpeHJvbWFuOiAweDIxNzUsCiAgc2l4c3VwZXJpb3I6IDB4MjA3NiwKICBzaXh0ZWVuY2lyY2xlOiAweDI0NkYsCiAgc2l4dGVlbmN1cnJlbmN5ZGVub21pbmF0b3JiZW5nYWxpOiAweDA5RjksCiAgc2l4dGVlbnBhcmVuOiAweDI0ODMsCiAgc2l4dGVlbnBlcmlvZDogMHgyNDk3LAogIHNpeHRoYWk6IDB4MEU1NiwKICBzbGFzaDogMHgwMDJGLAogIHNsYXNobW9ub3NwYWNlOiAweEZGMEYsCiAgc2xvbmc6IDB4MDE3RiwKICBzbG9uZ2RvdGFjY2VudDogMHgxRTlCLAogIHNtaWxlZmFjZTogMHgyNjNBLAogIHNtb25vc3BhY2U6IDB4RkY1MywKICBzb2ZwYXN1cWhlYnJldzogMHgwNUMzLAogIHNvZnRoeXBoZW46IDB4MDBBRCwKICBzb2Z0c2lnbmN5cmlsbGljOiAweDA0NEMsCiAgc29oaXJhZ2FuYTogMHgzMDVELAogIHNva2F0YWthbmE6IDB4MzBCRCwKICBzb2thdGFrYW5haGFsZndpZHRoOiAweEZGN0YsCiAgc29saWR1c2xvbmdvdmVybGF5Y21iOiAweDAzMzgsCiAgc29saWR1c3Nob3J0b3ZlcmxheWNtYjogMHgwMzM3LAogIHNvcnVzaXRoYWk6IDB4MEUyOSwKICBzb3NhbGF0aGFpOiAweDBFMjgsCiAgc29zb3RoYWk6IDB4MEUwQiwKICBzb3N1YXRoYWk6IDB4MEUyQSwKICBzcGFjZTogMHgwMDIwLAogIHNwYWNlaGFja2FyYWJpYzogMHgwMDIwLAogIHNwYWRlOiAweDI2NjAsCiAgc3BhZGVzdWl0YmxhY2s6IDB4MjY2MCwKICBzcGFkZXN1aXR3aGl0ZTogMHgyNjY0LAogIHNwYXJlbjogMHgyNEFFLAogIHNxdWFyZWJlbG93Y21iOiAweDAzM0IsCiAgc3F1YXJlY2M6IDB4MzNDNCwKICBzcXVhcmVjbTogMHgzMzlELAogIHNxdWFyZWRpYWdvbmFsY3Jvc3NoYXRjaGZpbGw6IDB4MjVBOSwKICBzcXVhcmVob3Jpem9udGFsZmlsbDogMHgyNUE0LAogIHNxdWFyZWtnOiAweDMzOEYsCiAgc3F1YXJla206IDB4MzM5RSwKICBzcXVhcmVrbWNhcGl0YWw6IDB4MzNDRSwKICBzcXVhcmVsbjogMHgzM0QxLAogIHNxdWFyZWxvZzogMHgzM0QyLAogIHNxdWFyZW1nOiAweDMzOEUsCiAgc3F1YXJlbWlsOiAweDMzRDUsCiAgc3F1YXJlbW06IDB4MzM5QywKICBzcXVhcmVtc3F1YXJlZDogMHgzM0ExLAogIHNxdWFyZW9ydGhvZ29uYWxjcm9zc2hhdGNoZmlsbDogMHgyNUE2LAogIHNxdWFyZXVwcGVybGVmdHRvbG93ZXJyaWdodGZpbGw6IDB4MjVBNywKICBzcXVhcmV1cHBlcnJpZ2h0dG9sb3dlcmxlZnRmaWxsOiAweDI1QTgsCiAgc3F1YXJldmVydGljYWxmaWxsOiAweDI1QTUsCiAgc3F1YXJld2hpdGV3aXRoc21hbGxibGFjazogMHgyNUEzLAogIHNyc3F1YXJlOiAweDMzREIsCiAgc3NhYmVuZ2FsaTogMHgwOUI3LAogIHNzYWRldmE6IDB4MDkzNywKICBzc2FndWphcmF0aTogMHgwQUI3LAogIHNzYW5nY2lldWNrb3JlYW46IDB4MzE0OSwKICBzc2FuZ2hpZXVoa29yZWFuOiAweDMxODUsCiAgc3NhbmdpZXVuZ2tvcmVhbjogMHgzMTgwLAogIHNzYW5na2l5ZW9ra29yZWFuOiAweDMxMzIsCiAgc3NhbmduaWV1bmtvcmVhbjogMHgzMTY1LAogIHNzYW5ncGlldXBrb3JlYW46IDB4MzE0MywKICBzc2FuZ3Npb3Nrb3JlYW46IDB4MzE0NiwKICBzc2FuZ3Rpa2V1dGtvcmVhbjogMHgzMTM4LAogIHNzdXBlcmlvcjogMHhGNkYyLAogIHN0ZXJsaW5nOiAweDAwQTMsCiAgc3Rlcmxpbmdtb25vc3BhY2U6IDB4RkZFMSwKICBzdHJva2Vsb25nb3ZlcmxheWNtYjogMHgwMzM2LAogIHN0cm9rZXNob3J0b3ZlcmxheWNtYjogMHgwMzM1LAogIHN1YnNldDogMHgyMjgyLAogIHN1YnNldG5vdGVxdWFsOiAweDIyOEEsCiAgc3Vic2V0b3JlcXVhbDogMHgyMjg2LAogIHN1Y2NlZWRzOiAweDIyN0IsCiAgc3VjaHRoYXQ6IDB4MjIwQiwKICBzdWhpcmFnYW5hOiAweDMwNTksCiAgc3VrYXRha2FuYTogMHgzMEI5LAogIHN1a2F0YWthbmFoYWxmd2lkdGg6IDB4RkY3RCwKICBzdWt1bmFyYWJpYzogMHgwNjUyLAogIHN1bW1hdGlvbjogMHgyMjExLAogIHN1bjogMHgyNjNDLAogIHN1cGVyc2V0OiAweDIyODMsCiAgc3VwZXJzZXRub3RlcXVhbDogMHgyMjhCLAogIHN1cGVyc2V0b3JlcXVhbDogMHgyMjg3LAogIHN2c3F1YXJlOiAweDMzREMsCiAgc3lvdXdhZXJhc3F1YXJlOiAweDMzN0MsCiAgdDogMHgwMDc0LAogIHRhYmVuZ2FsaTogMHgwOUE0LAogIHRhY2tkb3duOiAweDIyQTQsCiAgdGFja2xlZnQ6IDB4MjJBMywKICB0YWRldmE6IDB4MDkyNCwKICB0YWd1amFyYXRpOiAweDBBQTQsCiAgdGFndXJtdWtoaTogMHgwQTI0LAogIHRhaGFyYWJpYzogMHgwNjM3LAogIHRhaGZpbmFsYXJhYmljOiAweEZFQzIsCiAgdGFoaW5pdGlhbGFyYWJpYzogMHhGRUMzLAogIHRhaGlyYWdhbmE6IDB4MzA1RiwKICB0YWhtZWRpYWxhcmFiaWM6IDB4RkVDNCwKICB0YWlzeW91ZXJhc3F1YXJlOiAweDMzN0QsCiAgdGFrYXRha2FuYTogMHgzMEJGLAogIHRha2F0YWthbmFoYWxmd2lkdGg6IDB4RkY4MCwKICB0YXR3ZWVsYXJhYmljOiAweDA2NDAsCiAgdGF1OiAweDAzQzQsCiAgdGF2OiAweDA1RUEsCiAgdGF2ZGFnZXM6IDB4RkI0QSwKICB0YXZkYWdlc2g6IDB4RkI0QSwKICB0YXZkYWdlc2hoZWJyZXc6IDB4RkI0QSwKICB0YXZoZWJyZXc6IDB4MDVFQSwKICB0YmFyOiAweDAxNjcsCiAgdGJvcG9tb2ZvOiAweDMxMEEsCiAgdGNhcm9uOiAweDAxNjUsCiAgdGNjdXJsOiAweDAyQTgsCiAgdGNlZGlsbGE6IDB4MDE2MywKICB0Y2hlaGFyYWJpYzogMHgwNjg2LAogIHRjaGVoZmluYWxhcmFiaWM6IDB4RkI3QiwKICB0Y2hlaGluaXRpYWxhcmFiaWM6IDB4RkI3QywKICB0Y2hlaG1lZGlhbGFyYWJpYzogMHhGQjdELAogIHRjaXJjbGU6IDB4MjRFMywKICB0Y2lyY3VtZmxleGJlbG93OiAweDFFNzEsCiAgdGNvbW1hYWNjZW50OiAweDAxNjMsCiAgdGRpZXJlc2lzOiAweDFFOTcsCiAgdGRvdGFjY2VudDogMHgxRTZCLAogIHRkb3RiZWxvdzogMHgxRTZELAogIHRlY3lyaWxsaWM6IDB4MDQ0MiwKICB0ZWRlc2NlbmRlcmN5cmlsbGljOiAweDA0QUQsCiAgdGVoYXJhYmljOiAweDA2MkEsCiAgdGVoZmluYWxhcmFiaWM6IDB4RkU5NiwKICB0ZWhoYWhpbml0aWFsYXJhYmljOiAweEZDQTIsCiAgdGVoaGFoaXNvbGF0ZWRhcmFiaWM6IDB4RkMwQywKICB0ZWhpbml0aWFsYXJhYmljOiAweEZFOTcsCiAgdGVoaXJhZ2FuYTogMHgzMDY2LAogIHRlaGplZW1pbml0aWFsYXJhYmljOiAweEZDQTEsCiAgdGVoamVlbWlzb2xhdGVkYXJhYmljOiAweEZDMEIsCiAgdGVobWFyYnV0YWFyYWJpYzogMHgwNjI5LAogIHRlaG1hcmJ1dGFmaW5hbGFyYWJpYzogMHhGRTk0LAogIHRlaG1lZGlhbGFyYWJpYzogMHhGRTk4LAogIHRlaG1lZW1pbml0aWFsYXJhYmljOiAweEZDQTQsCiAgdGVobWVlbWlzb2xhdGVkYXJhYmljOiAweEZDMEUsCiAgdGVobm9vbmZpbmFsYXJhYmljOiAweEZDNzMsCiAgdGVrYXRha2FuYTogMHgzMEM2LAogIHRla2F0YWthbmFoYWxmd2lkdGg6IDB4RkY4MywKICB0ZWxlcGhvbmU6IDB4MjEyMSwKICB0ZWxlcGhvbmVibGFjazogMHgyNjBFLAogIHRlbGlzaGFnZWRvbGFoZWJyZXc6IDB4MDVBMCwKICB0ZWxpc2hhcWV0YW5haGVicmV3OiAweDA1QTksCiAgdGVuY2lyY2xlOiAweDI0NjksCiAgdGVuaWRlb2dyYXBoaWNwYXJlbjogMHgzMjI5LAogIHRlbnBhcmVuOiAweDI0N0QsCiAgdGVucGVyaW9kOiAweDI0OTEsCiAgdGVucm9tYW46IDB4MjE3OSwKICB0ZXNoOiAweDAyQTcsCiAgdGV0OiAweDA1RDgsCiAgdGV0ZGFnZXNoOiAweEZCMzgsCiAgdGV0ZGFnZXNoaGVicmV3OiAweEZCMzgsCiAgdGV0aGVicmV3OiAweDA1RDgsCiAgdGV0c2VjeXJpbGxpYzogMHgwNEI1LAogIHRldmlyaGVicmV3OiAweDA1OUIsCiAgdGV2aXJsZWZ0aGVicmV3OiAweDA1OUIsCiAgdGhhYmVuZ2FsaTogMHgwOUE1LAogIHRoYWRldmE6IDB4MDkyNSwKICB0aGFndWphcmF0aTogMHgwQUE1LAogIHRoYWd1cm11a2hpOiAweDBBMjUsCiAgdGhhbGFyYWJpYzogMHgwNjMwLAogIHRoYWxmaW5hbGFyYWJpYzogMHhGRUFDLAogIHRoYW50aGFraGF0bG93bGVmdHRoYWk6IDB4Rjg5OCwKICB0aGFudGhha2hhdGxvd3JpZ2h0dGhhaTogMHhGODk3LAogIHRoYW50aGFraGF0dGhhaTogMHgwRTRDLAogIHRoYW50aGFraGF0dXBwZXJsZWZ0dGhhaTogMHhGODk2LAogIHRoZWhhcmFiaWM6IDB4MDYyQiwKICB0aGVoZmluYWxhcmFiaWM6IDB4RkU5QSwKICB0aGVoaW5pdGlhbGFyYWJpYzogMHhGRTlCLAogIHRoZWhtZWRpYWxhcmFiaWM6IDB4RkU5QywKICB0aGVyZWV4aXN0czogMHgyMjAzLAogIHRoZXJlZm9yZTogMHgyMjM0LAogIHRoZXRhOiAweDAzQjgsCiAgdGhldGExOiAweDAzRDEsCiAgdGhldGFzeW1ib2xncmVlazogMHgwM0QxLAogIHRoaWV1dGhhY2lyY2xla29yZWFuOiAweDMyNzksCiAgdGhpZXV0aGFwYXJlbmtvcmVhbjogMHgzMjE5LAogIHRoaWV1dGhjaXJjbGVrb3JlYW46IDB4MzI2QiwKICB0aGlldXRoa29yZWFuOiAweDMxNEMsCiAgdGhpZXV0aHBhcmVua29yZWFuOiAweDMyMEIsCiAgdGhpcnRlZW5jaXJjbGU6IDB4MjQ2QywKICB0aGlydGVlbnBhcmVuOiAweDI0ODAsCiAgdGhpcnRlZW5wZXJpb2Q6IDB4MjQ5NCwKICB0aG9uYW5nbW9udGhvdGhhaTogMHgwRTExLAogIHRob29rOiAweDAxQUQsCiAgdGhvcGh1dGhhb3RoYWk6IDB4MEUxMiwKICB0aG9ybjogMHgwMEZFLAogIHRob3RoYWhhbnRoYWk6IDB4MEUxNywKICB0aG90aGFudGhhaTogMHgwRTEwLAogIHRob3Rob25ndGhhaTogMHgwRTE4LAogIHRob3RodW5ndGhhaTogMHgwRTE2LAogIHRob3VzYW5kY3lyaWxsaWM6IDB4MDQ4MiwKICB0aG91c2FuZHNzZXBhcmF0b3JhcmFiaWM6IDB4MDY2QywKICB0aG91c2FuZHNzZXBhcmF0b3JwZXJzaWFuOiAweDA2NkMsCiAgdGhyZWU6IDB4MDAzMywKICB0aHJlZWFyYWJpYzogMHgwNjYzLAogIHRocmVlYmVuZ2FsaTogMHgwOUU5LAogIHRocmVlY2lyY2xlOiAweDI0NjIsCiAgdGhyZWVjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmOiAweDI3OEMsCiAgdGhyZWVkZXZhOiAweDA5NjksCiAgdGhyZWVlaWdodGhzOiAweDIxNUMsCiAgdGhyZWVndWphcmF0aTogMHgwQUU5LAogIHRocmVlZ3VybXVraGk6IDB4MEE2OSwKICB0aHJlZWhhY2thcmFiaWM6IDB4MDY2MywKICB0aHJlZWhhbmd6aG91OiAweDMwMjMsCiAgdGhyZWVpZGVvZ3JhcGhpY3BhcmVuOiAweDMyMjIsCiAgdGhyZWVpbmZlcmlvcjogMHgyMDgzLAogIHRocmVlbW9ub3NwYWNlOiAweEZGMTMsCiAgdGhyZWVudW1lcmF0b3JiZW5nYWxpOiAweDA5RjYsCiAgdGhyZWVvbGRzdHlsZTogMHhGNzMzLAogIHRocmVlcGFyZW46IDB4MjQ3NiwKICB0aHJlZXBlcmlvZDogMHgyNDhBLAogIHRocmVlcGVyc2lhbjogMHgwNkYzLAogIHRocmVlcXVhcnRlcnM6IDB4MDBCRSwKICB0aHJlZXF1YXJ0ZXJzZW1kYXNoOiAweEY2REUsCiAgdGhyZWVyb21hbjogMHgyMTcyLAogIHRocmVlc3VwZXJpb3I6IDB4MDBCMywKICB0aHJlZXRoYWk6IDB4MEU1MywKICB0aHpzcXVhcmU6IDB4MzM5NCwKICB0aWhpcmFnYW5hOiAweDMwNjEsCiAgdGlrYXRha2FuYTogMHgzMEMxLAogIHRpa2F0YWthbmFoYWxmd2lkdGg6IDB4RkY4MSwKICB0aWtldXRhY2lyY2xla29yZWFuOiAweDMyNzAsCiAgdGlrZXV0YXBhcmVua29yZWFuOiAweDMyMTAsCiAgdGlrZXV0Y2lyY2xla29yZWFuOiAweDMyNjIsCiAgdGlrZXV0a29yZWFuOiAweDMxMzcsCiAgdGlrZXV0cGFyZW5rb3JlYW46IDB4MzIwMiwKICB0aWxkZTogMHgwMkRDLAogIHRpbGRlYmVsb3djbWI6IDB4MDMzMCwKICB0aWxkZWNtYjogMHgwMzAzLAogIHRpbGRlY29tYjogMHgwMzAzLAogIHRpbGRlZG91YmxlY21iOiAweDAzNjAsCiAgdGlsZGVvcGVyYXRvcjogMHgyMjNDLAogIHRpbGRlb3ZlcmxheWNtYjogMHgwMzM0LAogIHRpbGRldmVydGljYWxjbWI6IDB4MDMzRSwKICB0aW1lc2NpcmNsZTogMHgyMjk3LAogIHRpcGVoYWhlYnJldzogMHgwNTk2LAogIHRpcGVoYWxlZnRoZWJyZXc6IDB4MDU5NiwKICB0aXBwaWd1cm11a2hpOiAweDBBNzAsCiAgdGl0bG9jeXJpbGxpY2NtYjogMHgwNDgzLAogIHRpd25hcm1lbmlhbjogMHgwNTdGLAogIHRsaW5lYmVsb3c6IDB4MUU2RiwKICB0bW9ub3NwYWNlOiAweEZGNTQsCiAgdG9hcm1lbmlhbjogMHgwNTY5LAogIHRvaGlyYWdhbmE6IDB4MzA2OCwKICB0b2thdGFrYW5hOiAweDMwQzgsCiAgdG9rYXRha2FuYWhhbGZ3aWR0aDogMHhGRjg0LAogIHRvbmViYXJleHRyYWhpZ2htb2Q6IDB4MDJFNSwKICB0b25lYmFyZXh0cmFsb3dtb2Q6IDB4MDJFOSwKICB0b25lYmFyaGlnaG1vZDogMHgwMkU2LAogIHRvbmViYXJsb3dtb2Q6IDB4MDJFOCwKICB0b25lYmFybWlkbW9kOiAweDAyRTcsCiAgdG9uZWZpdmU6IDB4MDFCRCwKICB0b25lc2l4OiAweDAxODUsCiAgdG9uZXR3bzogMHgwMUE4LAogIHRvbm9zOiAweDAzODQsCiAgdG9uc3F1YXJlOiAweDMzMjcsCiAgdG9wYXRha3RoYWk6IDB4MEUwRiwKICB0b3J0b2lzZXNoZWxsYnJhY2tldGxlZnQ6IDB4MzAxNCwKICB0b3J0b2lzZXNoZWxsYnJhY2tldGxlZnRzbWFsbDogMHhGRTVELAogIHRvcnRvaXNlc2hlbGxicmFja2V0bGVmdHZlcnRpY2FsOiAweEZFMzksCiAgdG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodDogMHgzMDE1LAogIHRvcnRvaXNlc2hlbGxicmFja2V0cmlnaHRzbWFsbDogMHhGRTVFLAogIHRvcnRvaXNlc2hlbGxicmFja2V0cmlnaHR2ZXJ0aWNhbDogMHhGRTNBLAogIHRvdGFvdGhhaTogMHgwRTE1LAogIHRwYWxhdGFsaG9vazogMHgwMUFCLAogIHRwYXJlbjogMHgyNEFGLAogIHRyYWRlbWFyazogMHgyMTIyLAogIHRyYWRlbWFya3NhbnM6IDB4RjhFQSwKICB0cmFkZW1hcmtzZXJpZjogMHhGNkRCLAogIHRyZXRyb2ZsZXhob29rOiAweDAyODgsCiAgdHJpYWdkbjogMHgyNUJDLAogIHRyaWFnbGY6IDB4MjVDNCwKICB0cmlhZ3J0OiAweDI1QkEsCiAgdHJpYWd1cDogMHgyNUIyLAogIHRzOiAweDAyQTYsCiAgdHNhZGk6IDB4MDVFNiwKICB0c2FkaWRhZ2VzaDogMHhGQjQ2LAogIHRzYWRpZGFnZXNoaGVicmV3OiAweEZCNDYsCiAgdHNhZGloZWJyZXc6IDB4MDVFNiwKICB0c2VjeXJpbGxpYzogMHgwNDQ2LAogIHRzZXJlOiAweDA1QjUsCiAgdHNlcmUxMjogMHgwNUI1LAogIHRzZXJlMWU6IDB4MDVCNSwKICB0c2VyZTJiOiAweDA1QjUsCiAgdHNlcmVoZWJyZXc6IDB4MDVCNSwKICB0c2VyZW5hcnJvd2hlYnJldzogMHgwNUI1LAogIHRzZXJlcXVhcnRlcmhlYnJldzogMHgwNUI1LAogIHRzZXJld2lkZWhlYnJldzogMHgwNUI1LAogIHRzaGVjeXJpbGxpYzogMHgwNDVCLAogIHRzdXBlcmlvcjogMHhGNkYzLAogIHR0YWJlbmdhbGk6IDB4MDk5RiwKICB0dGFkZXZhOiAweDA5MUYsCiAgdHRhZ3VqYXJhdGk6IDB4MEE5RiwKICB0dGFndXJtdWtoaTogMHgwQTFGLAogIHR0ZWhhcmFiaWM6IDB4MDY3OSwKICB0dGVoZmluYWxhcmFiaWM6IDB4RkI2NywKICB0dGVoaW5pdGlhbGFyYWJpYzogMHhGQjY4LAogIHR0ZWhtZWRpYWxhcmFiaWM6IDB4RkI2OSwKICB0dGhhYmVuZ2FsaTogMHgwOUEwLAogIHR0aGFkZXZhOiAweDA5MjAsCiAgdHRoYWd1amFyYXRpOiAweDBBQTAsCiAgdHRoYWd1cm11a2hpOiAweDBBMjAsCiAgdHR1cm5lZDogMHgwMjg3LAogIHR1aGlyYWdhbmE6IDB4MzA2NCwKICB0dWthdGFrYW5hOiAweDMwQzQsCiAgdHVrYXRha2FuYWhhbGZ3aWR0aDogMHhGRjgyLAogIHR1c21hbGxoaXJhZ2FuYTogMHgzMDYzLAogIHR1c21hbGxrYXRha2FuYTogMHgzMEMzLAogIHR1c21hbGxrYXRha2FuYWhhbGZ3aWR0aDogMHhGRjZGLAogIHR3ZWx2ZWNpcmNsZTogMHgyNDZCLAogIHR3ZWx2ZXBhcmVuOiAweDI0N0YsCiAgdHdlbHZlcGVyaW9kOiAweDI0OTMsCiAgdHdlbHZlcm9tYW46IDB4MjE3QiwKICB0d2VudHljaXJjbGU6IDB4MjQ3MywKICB0d2VudHloYW5nemhvdTogMHg1MzQ0LAogIHR3ZW50eXBhcmVuOiAweDI0ODcsCiAgdHdlbnR5cGVyaW9kOiAweDI0OUIsCiAgdHdvOiAweDAwMzIsCiAgdHdvYXJhYmljOiAweDA2NjIsCiAgdHdvYmVuZ2FsaTogMHgwOUU4LAogIHR3b2NpcmNsZTogMHgyNDYxLAogIHR3b2NpcmNsZWludmVyc2VzYW5zc2VyaWY6IDB4Mjc4QiwKICB0d29kZXZhOiAweDA5NjgsCiAgdHdvZG90ZW5sZWFkZXI6IDB4MjAyNSwKICB0d29kb3RsZWFkZXI6IDB4MjAyNSwKICB0d29kb3RsZWFkZXJ2ZXJ0aWNhbDogMHhGRTMwLAogIHR3b2d1amFyYXRpOiAweDBBRTgsCiAgdHdvZ3VybXVraGk6IDB4MEE2OCwKICB0d29oYWNrYXJhYmljOiAweDA2NjIsCiAgdHdvaGFuZ3pob3U6IDB4MzAyMiwKICB0d29pZGVvZ3JhcGhpY3BhcmVuOiAweDMyMjEsCiAgdHdvaW5mZXJpb3I6IDB4MjA4MiwKICB0d29tb25vc3BhY2U6IDB4RkYxMiwKICB0d29udW1lcmF0b3JiZW5nYWxpOiAweDA5RjUsCiAgdHdvb2xkc3R5bGU6IDB4RjczMiwKICB0d29wYXJlbjogMHgyNDc1LAogIHR3b3BlcmlvZDogMHgyNDg5LAogIHR3b3BlcnNpYW46IDB4MDZGMiwKICB0d29yb21hbjogMHgyMTcxLAogIHR3b3N0cm9rZTogMHgwMUJCLAogIHR3b3N1cGVyaW9yOiAweDAwQjIsCiAgdHdvdGhhaTogMHgwRTUyLAogIHR3b3RoaXJkczogMHgyMTU0LAogIHU6IDB4MDA3NSwKICB1YWN1dGU6IDB4MDBGQSwKICB1YmFyOiAweDAyODksCiAgdWJlbmdhbGk6IDB4MDk4OSwKICB1Ym9wb21vZm86IDB4MzEyOCwKICB1YnJldmU6IDB4MDE2RCwKICB1Y2Fyb246IDB4MDFENCwKICB1Y2lyY2xlOiAweDI0RTQsCiAgdWNpcmN1bWZsZXg6IDB4MDBGQiwKICB1Y2lyY3VtZmxleGJlbG93OiAweDFFNzcsCiAgdWN5cmlsbGljOiAweDA0NDMsCiAgdWRhdHRhZGV2YTogMHgwOTUxLAogIHVkYmxhY3V0ZTogMHgwMTcxLAogIHVkYmxncmF2ZTogMHgwMjE1LAogIHVkZXZhOiAweDA5MDksCiAgdWRpZXJlc2lzOiAweDAwRkMsCiAgdWRpZXJlc2lzYWN1dGU6IDB4MDFEOCwKICB1ZGllcmVzaXNiZWxvdzogMHgxRTczLAogIHVkaWVyZXNpc2Nhcm9uOiAweDAxREEsCiAgdWRpZXJlc2lzY3lyaWxsaWM6IDB4MDRGMSwKICB1ZGllcmVzaXNncmF2ZTogMHgwMURDLAogIHVkaWVyZXNpc21hY3JvbjogMHgwMUQ2LAogIHVkb3RiZWxvdzogMHgxRUU1LAogIHVncmF2ZTogMHgwMEY5LAogIHVndWphcmF0aTogMHgwQTg5LAogIHVndXJtdWtoaTogMHgwQTA5LAogIHVoaXJhZ2FuYTogMHgzMDQ2LAogIHVob29rYWJvdmU6IDB4MUVFNywKICB1aG9ybjogMHgwMUIwLAogIHVob3JuYWN1dGU6IDB4MUVFOSwKICB1aG9ybmRvdGJlbG93OiAweDFFRjEsCiAgdWhvcm5ncmF2ZTogMHgxRUVCLAogIHVob3JuaG9va2Fib3ZlOiAweDFFRUQsCiAgdWhvcm50aWxkZTogMHgxRUVGLAogIHVodW5nYXJ1bWxhdXQ6IDB4MDE3MSwKICB1aHVuZ2FydW1sYXV0Y3lyaWxsaWM6IDB4MDRGMywKICB1aW52ZXJ0ZWRicmV2ZTogMHgwMjE3LAogIHVrYXRha2FuYTogMHgzMEE2LAogIHVrYXRha2FuYWhhbGZ3aWR0aDogMHhGRjczLAogIHVrY3lyaWxsaWM6IDB4MDQ3OSwKICB1a29yZWFuOiAweDMxNUMsCiAgdW1hY3JvbjogMHgwMTZCLAogIHVtYWNyb25jeXJpbGxpYzogMHgwNEVGLAogIHVtYWNyb25kaWVyZXNpczogMHgxRTdCLAogIHVtYXRyYWd1cm11a2hpOiAweDBBNDEsCiAgdW1vbm9zcGFjZTogMHhGRjU1LAogIHVuZGVyc2NvcmU6IDB4MDA1RiwKICB1bmRlcnNjb3JlZGJsOiAweDIwMTcsCiAgdW5kZXJzY29yZW1vbm9zcGFjZTogMHhGRjNGLAogIHVuZGVyc2NvcmV2ZXJ0aWNhbDogMHhGRTMzLAogIHVuZGVyc2NvcmV3YXZ5OiAweEZFNEYsCiAgdW5pb246IDB4MjIyQSwKICB1bml2ZXJzYWw6IDB4MjIwMCwKICB1b2dvbmVrOiAweDAxNzMsCiAgdXBhcmVuOiAweDI0QjAsCiAgdXBibG9jazogMHgyNTgwLAogIHVwcGVyZG90aGVicmV3OiAweDA1QzQsCiAgdXBzaWxvbjogMHgwM0M1LAogIHVwc2lsb25kaWVyZXNpczogMHgwM0NCLAogIHVwc2lsb25kaWVyZXNpc3Rvbm9zOiAweDAzQjAsCiAgdXBzaWxvbmxhdGluOiAweDAyOEEsCiAgdXBzaWxvbnRvbm9zOiAweDAzQ0QsCiAgdXB0YWNrYmVsb3djbWI6IDB4MDMxRCwKICB1cHRhY2ttb2Q6IDB4MDJENCwKICB1cmFndXJtdWtoaTogMHgwQTczLAogIHVyaW5nOiAweDAxNkYsCiAgdXNob3J0Y3lyaWxsaWM6IDB4MDQ1RSwKICB1c21hbGxoaXJhZ2FuYTogMHgzMDQ1LAogIHVzbWFsbGthdGFrYW5hOiAweDMwQTUsCiAgdXNtYWxsa2F0YWthbmFoYWxmd2lkdGg6IDB4RkY2OSwKICB1c3RyYWlnaHRjeXJpbGxpYzogMHgwNEFGLAogIHVzdHJhaWdodHN0cm9rZWN5cmlsbGljOiAweDA0QjEsCiAgdXRpbGRlOiAweDAxNjksCiAgdXRpbGRlYWN1dGU6IDB4MUU3OSwKICB1dGlsZGViZWxvdzogMHgxRTc1LAogIHV1YmVuZ2FsaTogMHgwOThBLAogIHV1ZGV2YTogMHgwOTBBLAogIHV1Z3VqYXJhdGk6IDB4MEE4QSwKICB1dWd1cm11a2hpOiAweDBBMEEsCiAgdXVtYXRyYWd1cm11a2hpOiAweDBBNDIsCiAgdXV2b3dlbHNpZ25iZW5nYWxpOiAweDA5QzIsCiAgdXV2b3dlbHNpZ25kZXZhOiAweDA5NDIsCiAgdXV2b3dlbHNpZ25ndWphcmF0aTogMHgwQUMyLAogIHV2b3dlbHNpZ25iZW5nYWxpOiAweDA5QzEsCiAgdXZvd2Vsc2lnbmRldmE6IDB4MDk0MSwKICB1dm93ZWxzaWduZ3VqYXJhdGk6IDB4MEFDMSwKICB2OiAweDAwNzYsCiAgdmFkZXZhOiAweDA5MzUsCiAgdmFndWphcmF0aTogMHgwQUI1LAogIHZhZ3VybXVraGk6IDB4MEEzNSwKICB2YWthdGFrYW5hOiAweDMwRjcsCiAgdmF2OiAweDA1RDUsCiAgdmF2ZGFnZXNoOiAweEZCMzUsCiAgdmF2ZGFnZXNoNjU6IDB4RkIzNSwKICB2YXZkYWdlc2hoZWJyZXc6IDB4RkIzNSwKICB2YXZoZWJyZXc6IDB4MDVENSwKICB2YXZob2xhbTogMHhGQjRCLAogIHZhdmhvbGFtaGVicmV3OiAweEZCNEIsCiAgdmF2dmF2aGVicmV3OiAweDA1RjAsCiAgdmF2eW9kaGVicmV3OiAweDA1RjEsCiAgdmNpcmNsZTogMHgyNEU1LAogIHZkb3RiZWxvdzogMHgxRTdGLAogIHZlY3lyaWxsaWM6IDB4MDQzMiwKICB2ZWhhcmFiaWM6IDB4MDZBNCwKICB2ZWhmaW5hbGFyYWJpYzogMHhGQjZCLAogIHZlaGluaXRpYWxhcmFiaWM6IDB4RkI2QywKICB2ZWhtZWRpYWxhcmFiaWM6IDB4RkI2RCwKICB2ZWthdGFrYW5hOiAweDMwRjksCiAgdmVudXM6IDB4MjY0MCwKICB2ZXJ0aWNhbGJhcjogMHgwMDdDLAogIHZlcnRpY2FsbGluZWFib3ZlY21iOiAweDAzMEQsCiAgdmVydGljYWxsaW5lYmVsb3djbWI6IDB4MDMyOSwKICB2ZXJ0aWNhbGxpbmVsb3dtb2Q6IDB4MDJDQywKICB2ZXJ0aWNhbGxpbmVtb2Q6IDB4MDJDOCwKICB2ZXdhcm1lbmlhbjogMHgwNTdFLAogIHZob29rOiAweDAyOEIsCiAgdmlrYXRha2FuYTogMHgzMEY4LAogIHZpcmFtYWJlbmdhbGk6IDB4MDlDRCwKICB2aXJhbWFkZXZhOiAweDA5NEQsCiAgdmlyYW1hZ3VqYXJhdGk6IDB4MEFDRCwKICB2aXNhcmdhYmVuZ2FsaTogMHgwOTgzLAogIHZpc2FyZ2FkZXZhOiAweDA5MDMsCiAgdmlzYXJnYWd1amFyYXRpOiAweDBBODMsCiAgdm1vbm9zcGFjZTogMHhGRjU2LAogIHZvYXJtZW5pYW46IDB4MDU3OCwKICB2b2ljZWRpdGVyYXRpb25oaXJhZ2FuYTogMHgzMDlFLAogIHZvaWNlZGl0ZXJhdGlvbmthdGFrYW5hOiAweDMwRkUsCiAgdm9pY2VkbWFya2thbmE6IDB4MzA5QiwKICB2b2ljZWRtYXJra2FuYWhhbGZ3aWR0aDogMHhGRjlFLAogIHZva2F0YWthbmE6IDB4MzBGQSwKICB2cGFyZW46IDB4MjRCMSwKICB2dGlsZGU6IDB4MUU3RCwKICB2dHVybmVkOiAweDAyOEMsCiAgdnVoaXJhZ2FuYTogMHgzMDk0LAogIHZ1a2F0YWthbmE6IDB4MzBGNCwKICB3OiAweDAwNzcsCiAgd2FjdXRlOiAweDFFODMsCiAgd2Fla29yZWFuOiAweDMxNTksCiAgd2FoaXJhZ2FuYTogMHgzMDhGLAogIHdha2F0YWthbmE6IDB4MzBFRiwKICB3YWthdGFrYW5haGFsZndpZHRoOiAweEZGOUMsCiAgd2Frb3JlYW46IDB4MzE1OCwKICB3YXNtYWxsaGlyYWdhbmE6IDB4MzA4RSwKICB3YXNtYWxsa2F0YWthbmE6IDB4MzBFRSwKICB3YXR0b3NxdWFyZTogMHgzMzU3LAogIHdhdmVkYXNoOiAweDMwMUMsCiAgd2F2eXVuZGVyc2NvcmV2ZXJ0aWNhbDogMHhGRTM0LAogIHdhd2FyYWJpYzogMHgwNjQ4LAogIHdhd2ZpbmFsYXJhYmljOiAweEZFRUUsCiAgd2F3aGFtemFhYm92ZWFyYWJpYzogMHgwNjI0LAogIHdhd2hhbXphYWJvdmVmaW5hbGFyYWJpYzogMHhGRTg2LAogIHdic3F1YXJlOiAweDMzREQsCiAgd2NpcmNsZTogMHgyNEU2LAogIHdjaXJjdW1mbGV4OiAweDAxNzUsCiAgd2RpZXJlc2lzOiAweDFFODUsCiAgd2RvdGFjY2VudDogMHgxRTg3LAogIHdkb3RiZWxvdzogMHgxRTg5LAogIHdlaGlyYWdhbmE6IDB4MzA5MSwKICB3ZWllcnN0cmFzczogMHgyMTE4LAogIHdla2F0YWthbmE6IDB4MzBGMSwKICB3ZWtvcmVhbjogMHgzMTVFLAogIHdlb2tvcmVhbjogMHgzMTVELAogIHdncmF2ZTogMHgxRTgxLAogIHdoaXRlYnVsbGV0OiAweDI1RTYsCiAgd2hpdGVjaXJjbGU6IDB4MjVDQiwKICB3aGl0ZWNpcmNsZWludmVyc2U6IDB4MjVEOSwKICB3aGl0ZWNvcm5lcmJyYWNrZXRsZWZ0OiAweDMwMEUsCiAgd2hpdGVjb3JuZXJicmFja2V0bGVmdHZlcnRpY2FsOiAweEZFNDMsCiAgd2hpdGVjb3JuZXJicmFja2V0cmlnaHQ6IDB4MzAwRiwKICB3aGl0ZWNvcm5lcmJyYWNrZXRyaWdodHZlcnRpY2FsOiAweEZFNDQsCiAgd2hpdGVkaWFtb25kOiAweDI1QzcsCiAgd2hpdGVkaWFtb25kY29udGFpbmluZ2JsYWNrc21hbGxkaWFtb25kOiAweDI1QzgsCiAgd2hpdGVkb3ducG9pbnRpbmdzbWFsbHRyaWFuZ2xlOiAweDI1QkYsCiAgd2hpdGVkb3ducG9pbnRpbmd0cmlhbmdsZTogMHgyNUJELAogIHdoaXRlbGVmdHBvaW50aW5nc21hbGx0cmlhbmdsZTogMHgyNUMzLAogIHdoaXRlbGVmdHBvaW50aW5ndHJpYW5nbGU6IDB4MjVDMSwKICB3aGl0ZWxlbnRpY3VsYXJicmFja2V0bGVmdDogMHgzMDE2LAogIHdoaXRlbGVudGljdWxhcmJyYWNrZXRyaWdodDogMHgzMDE3LAogIHdoaXRlcmlnaHRwb2ludGluZ3NtYWxsdHJpYW5nbGU6IDB4MjVCOSwKICB3aGl0ZXJpZ2h0cG9pbnRpbmd0cmlhbmdsZTogMHgyNUI3LAogIHdoaXRlc21hbGxzcXVhcmU6IDB4MjVBQiwKICB3aGl0ZXNtaWxpbmdmYWNlOiAweDI2M0EsCiAgd2hpdGVzcXVhcmU6IDB4MjVBMSwKICB3aGl0ZXN0YXI6IDB4MjYwNiwKICB3aGl0ZXRlbGVwaG9uZTogMHgyNjBGLAogIHdoaXRldG9ydG9pc2VzaGVsbGJyYWNrZXRsZWZ0OiAweDMwMTgsCiAgd2hpdGV0b3J0b2lzZXNoZWxsYnJhY2tldHJpZ2h0OiAweDMwMTksCiAgd2hpdGV1cHBvaW50aW5nc21hbGx0cmlhbmdsZTogMHgyNUI1LAogIHdoaXRldXBwb2ludGluZ3RyaWFuZ2xlOiAweDI1QjMsCiAgd2loaXJhZ2FuYTogMHgzMDkwLAogIHdpa2F0YWthbmE6IDB4MzBGMCwKICB3aWtvcmVhbjogMHgzMTVGLAogIHdtb25vc3BhY2U6IDB4RkY1NywKICB3b2hpcmFnYW5hOiAweDMwOTIsCiAgd29rYXRha2FuYTogMHgzMEYyLAogIHdva2F0YWthbmFoYWxmd2lkdGg6IDB4RkY2NiwKICB3b246IDB4MjBBOSwKICB3b25tb25vc3BhY2U6IDB4RkZFNiwKICB3b3dhZW50aGFpOiAweDBFMjcsCiAgd3BhcmVuOiAweDI0QjIsCiAgd3Jpbmc6IDB4MUU5OCwKICB3c3VwZXJpb3I6IDB4MDJCNywKICB3dHVybmVkOiAweDAyOEQsCiAgd3lubjogMHgwMUJGLAogIHg6IDB4MDA3OCwKICB4YWJvdmVjbWI6IDB4MDMzRCwKICB4Ym9wb21vZm86IDB4MzExMiwKICB4Y2lyY2xlOiAweDI0RTcsCiAgeGRpZXJlc2lzOiAweDFFOEQsCiAgeGRvdGFjY2VudDogMHgxRThCLAogIHhlaGFybWVuaWFuOiAweDA1NkQsCiAgeGk6IDB4MDNCRSwKICB4bW9ub3NwYWNlOiAweEZGNTgsCiAgeHBhcmVuOiAweDI0QjMsCiAgeHN1cGVyaW9yOiAweDAyRTMsCiAgeTogMHgwMDc5LAogIHlhYWRvc3F1YXJlOiAweDMzNEUsCiAgeWFiZW5nYWxpOiAweDA5QUYsCiAgeWFjdXRlOiAweDAwRkQsCiAgeWFkZXZhOiAweDA5MkYsCiAgeWFla29yZWFuOiAweDMxNTIsCiAgeWFndWphcmF0aTogMHgwQUFGLAogIHlhZ3VybXVraGk6IDB4MEEyRiwKICB5YWhpcmFnYW5hOiAweDMwODQsCiAgeWFrYXRha2FuYTogMHgzMEU0LAogIHlha2F0YWthbmFoYWxmd2lkdGg6IDB4RkY5NCwKICB5YWtvcmVhbjogMHgzMTUxLAogIHlhbWFra2FudGhhaTogMHgwRTRFLAogIHlhc21hbGxoaXJhZ2FuYTogMHgzMDgzLAogIHlhc21hbGxrYXRha2FuYTogMHgzMEUzLAogIHlhc21hbGxrYXRha2FuYWhhbGZ3aWR0aDogMHhGRjZDLAogIHlhdGN5cmlsbGljOiAweDA0NjMsCiAgeWNpcmNsZTogMHgyNEU4LAogIHljaXJjdW1mbGV4OiAweDAxNzcsCiAgeWRpZXJlc2lzOiAweDAwRkYsCiAgeWRvdGFjY2VudDogMHgxRThGLAogIHlkb3RiZWxvdzogMHgxRUY1LAogIHllaGFyYWJpYzogMHgwNjRBLAogIHllaGJhcnJlZWFyYWJpYzogMHgwNkQyLAogIHllaGJhcnJlZWZpbmFsYXJhYmljOiAweEZCQUYsCiAgeWVoZmluYWxhcmFiaWM6IDB4RkVGMiwKICB5ZWhoYW16YWFib3ZlYXJhYmljOiAweDA2MjYsCiAgeWVoaGFtemFhYm92ZWZpbmFsYXJhYmljOiAweEZFOEEsCiAgeWVoaGFtemFhYm92ZWluaXRpYWxhcmFiaWM6IDB4RkU4QiwKICB5ZWhoYW16YWFib3ZlbWVkaWFsYXJhYmljOiAweEZFOEMsCiAgeWVoaW5pdGlhbGFyYWJpYzogMHhGRUYzLAogIHllaG1lZGlhbGFyYWJpYzogMHhGRUY0LAogIHllaG1lZW1pbml0aWFsYXJhYmljOiAweEZDREQsCiAgeWVobWVlbWlzb2xhdGVkYXJhYmljOiAweEZDNTgsCiAgeWVobm9vbmZpbmFsYXJhYmljOiAweEZDOTQsCiAgeWVodGhyZWVkb3RzYmVsb3dhcmFiaWM6IDB4MDZEMSwKICB5ZWtvcmVhbjogMHgzMTU2LAogIHllbjogMHgwMEE1LAogIHllbm1vbm9zcGFjZTogMHhGRkU1LAogIHllb2tvcmVhbjogMHgzMTU1LAogIHllb3JpbmhpZXVoa29yZWFuOiAweDMxODYsCiAgeWVyYWhiZW55b21vaGVicmV3OiAweDA1QUEsCiAgeWVyYWhiZW55b21vbGVmdGhlYnJldzogMHgwNUFBLAogIHllcmljeXJpbGxpYzogMHgwNDRCLAogIHllcnVkaWVyZXNpc2N5cmlsbGljOiAweDA0RjksCiAgeWVzaWV1bmdrb3JlYW46IDB4MzE4MSwKICB5ZXNpZXVuZ3BhbnNpb3Nrb3JlYW46IDB4MzE4MywKICB5ZXNpZXVuZ3Npb3Nrb3JlYW46IDB4MzE4MiwKICB5ZXRpdmhlYnJldzogMHgwNTlBLAogIHlncmF2ZTogMHgxRUYzLAogIHlob29rOiAweDAxQjQsCiAgeWhvb2thYm92ZTogMHgxRUY3LAogIHlpYXJtZW5pYW46IDB4MDU3NSwKICB5aWN5cmlsbGljOiAweDA0NTcsCiAgeWlrb3JlYW46IDB4MzE2MiwKICB5aW55YW5nOiAweDI2MkYsCiAgeWl3bmFybWVuaWFuOiAweDA1ODIsCiAgeW1vbm9zcGFjZTogMHhGRjU5LAogIHlvZDogMHgwNUQ5LAogIHlvZGRhZ2VzaDogMHhGQjM5LAogIHlvZGRhZ2VzaGhlYnJldzogMHhGQjM5LAogIHlvZGhlYnJldzogMHgwNUQ5LAogIHlvZHlvZGhlYnJldzogMHgwNUYyLAogIHlvZHlvZHBhdGFoaGVicmV3OiAweEZCMUYsCiAgeW9oaXJhZ2FuYTogMHgzMDg4LAogIHlvaWtvcmVhbjogMHgzMTg5LAogIHlva2F0YWthbmE6IDB4MzBFOCwKICB5b2thdGFrYW5haGFsZndpZHRoOiAweEZGOTYsCiAgeW9rb3JlYW46IDB4MzE1QiwKICB5b3NtYWxsaGlyYWdhbmE6IDB4MzA4NywKICB5b3NtYWxsa2F0YWthbmE6IDB4MzBFNywKICB5b3NtYWxsa2F0YWthbmFoYWxmd2lkdGg6IDB4RkY2RSwKICB5b3RncmVlazogMHgwM0YzLAogIHlveWFla29yZWFuOiAweDMxODgsCiAgeW95YWtvcmVhbjogMHgzMTg3LAogIHlveWFrdGhhaTogMHgwRTIyLAogIHlveWluZ3RoYWk6IDB4MEUwRCwKICB5cGFyZW46IDB4MjRCNCwKICB5cG9nZWdyYW1tZW5pOiAweDAzN0EsCiAgeXBvZ2VncmFtbWVuaWdyZWVrY21iOiAweDAzNDUsCiAgeXI6IDB4MDFBNiwKICB5cmluZzogMHgxRTk5LAogIHlzdXBlcmlvcjogMHgwMkI4LAogIHl0aWxkZTogMHgxRUY5LAogIHl0dXJuZWQ6IDB4MDI4RSwKICB5dWhpcmFnYW5hOiAweDMwODYsCiAgeXVpa29yZWFuOiAweDMxOEMsCiAgeXVrYXRha2FuYTogMHgzMEU2LAogIHl1a2F0YWthbmFoYWxmd2lkdGg6IDB4RkY5NSwKICB5dWtvcmVhbjogMHgzMTYwLAogIHl1c2JpZ2N5cmlsbGljOiAweDA0NkIsCiAgeXVzYmlnaW90aWZpZWRjeXJpbGxpYzogMHgwNDZELAogIHl1c2xpdHRsZWN5cmlsbGljOiAweDA0NjcsCiAgeXVzbGl0dGxlaW90aWZpZWRjeXJpbGxpYzogMHgwNDY5LAogIHl1c21hbGxoaXJhZ2FuYTogMHgzMDg1LAogIHl1c21hbGxrYXRha2FuYTogMHgzMEU1LAogIHl1c21hbGxrYXRha2FuYWhhbGZ3aWR0aDogMHhGRjZELAogIHl1eWVrb3JlYW46IDB4MzE4QiwKICB5dXllb2tvcmVhbjogMHgzMThBLAogIHl5YWJlbmdhbGk6IDB4MDlERiwKICB5eWFkZXZhOiAweDA5NUYsCiAgejogMHgwMDdBLAogIHphYXJtZW5pYW46IDB4MDU2NiwKICB6YWN1dGU6IDB4MDE3QSwKICB6YWRldmE6IDB4MDk1QiwKICB6YWd1cm11a2hpOiAweDBBNUIsCiAgemFoYXJhYmljOiAweDA2MzgsCiAgemFoZmluYWxhcmFiaWM6IDB4RkVDNiwKICB6YWhpbml0aWFsYXJhYmljOiAweEZFQzcsCiAgemFoaXJhZ2FuYTogMHgzMDU2LAogIHphaG1lZGlhbGFyYWJpYzogMHhGRUM4LAogIHphaW5hcmFiaWM6IDB4MDYzMiwKICB6YWluZmluYWxhcmFiaWM6IDB4RkVCMCwKICB6YWthdGFrYW5hOiAweDMwQjYsCiAgemFxZWZnYWRvbGhlYnJldzogMHgwNTk1LAogIHphcWVmcWF0YW5oZWJyZXc6IDB4MDU5NCwKICB6YXJxYWhlYnJldzogMHgwNTk4LAogIHpheWluOiAweDA1RDYsCiAgemF5aW5kYWdlc2g6IDB4RkIzNiwKICB6YXlpbmRhZ2VzaGhlYnJldzogMHhGQjM2LAogIHpheWluaGVicmV3OiAweDA1RDYsCiAgemJvcG9tb2ZvOiAweDMxMTcsCiAgemNhcm9uOiAweDAxN0UsCiAgemNpcmNsZTogMHgyNEU5LAogIHpjaXJjdW1mbGV4OiAweDFFOTEsCiAgemN1cmw6IDB4MDI5MSwKICB6ZG90OiAweDAxN0MsCiAgemRvdGFjY2VudDogMHgwMTdDLAogIHpkb3RiZWxvdzogMHgxRTkzLAogIHplY3lyaWxsaWM6IDB4MDQzNywKICB6ZWRlc2NlbmRlcmN5cmlsbGljOiAweDA0OTksCiAgemVkaWVyZXNpc2N5cmlsbGljOiAweDA0REYsCiAgemVoaXJhZ2FuYTogMHgzMDVDLAogIHpla2F0YWthbmE6IDB4MzBCQywKICB6ZXJvOiAweDAwMzAsCiAgemVyb2FyYWJpYzogMHgwNjYwLAogIHplcm9iZW5nYWxpOiAweDA5RTYsCiAgemVyb2RldmE6IDB4MDk2NiwKICB6ZXJvZ3VqYXJhdGk6IDB4MEFFNiwKICB6ZXJvZ3VybXVraGk6IDB4MEE2NiwKICB6ZXJvaGFja2FyYWJpYzogMHgwNjYwLAogIHplcm9pbmZlcmlvcjogMHgyMDgwLAogIHplcm9tb25vc3BhY2U6IDB4RkYxMCwKICB6ZXJvb2xkc3R5bGU6IDB4RjczMCwKICB6ZXJvcGVyc2lhbjogMHgwNkYwLAogIHplcm9zdXBlcmlvcjogMHgyMDcwLAogIHplcm90aGFpOiAweDBFNTAsCiAgemVyb3dpZHRoam9pbmVyOiAweEZFRkYsCiAgemVyb3dpZHRobm9uam9pbmVyOiAweDIwMEMsCiAgemVyb3dpZHRoc3BhY2U6IDB4MjAwQiwKICB6ZXRhOiAweDAzQjYsCiAgemhib3BvbW9mbzogMHgzMTEzLAogIHpoZWFybWVuaWFuOiAweDA1NkEsCiAgemhlYnJldmVjeXJpbGxpYzogMHgwNEMyLAogIHpoZWN5cmlsbGljOiAweDA0MzYsCiAgemhlZGVzY2VuZGVyY3lyaWxsaWM6IDB4MDQ5NywKICB6aGVkaWVyZXNpc2N5cmlsbGljOiAweDA0REQsCiAgemloaXJhZ2FuYTogMHgzMDU4LAogIHppa2F0YWthbmE6IDB4MzBCOCwKICB6aW5vcmhlYnJldzogMHgwNUFFLAogIHpsaW5lYmVsb3c6IDB4MUU5NSwKICB6bW9ub3NwYWNlOiAweEZGNUEsCiAgem9oaXJhZ2FuYTogMHgzMDVFLAogIHpva2F0YWthbmE6IDB4MzBCRSwKICB6cGFyZW46IDB4MjRCNSwKICB6cmV0cm9mbGV4aG9vazogMHgwMjkwLAogIHpzdHJva2U6IDB4MDFCNiwKICB6dWhpcmFnYW5hOiAweDMwNUEsCiAgenVrYXRha2FuYTogMHgzMEJBLAogICcubm90ZGVmJzogMHgwMDAwCn07Cgp2YXIgRGluZ2JhdHNHbHlwaHNVbmljb2RlID0gewogIHNwYWNlOiAweDAwMjAsCiAgYTE6IDB4MjcwMSwKICBhMjogMHgyNzAyLAogIGEyMDI6IDB4MjcwMywKICBhMzogMHgyNzA0LAogIGE0OiAweDI2MEUsCiAgYTU6IDB4MjcwNiwKICBhMTE5OiAweDI3MDcsCiAgYTExODogMHgyNzA4LAogIGExMTc6IDB4MjcwOSwKICBhMTE6IDB4MjYxQiwKICBhMTI6IDB4MjYxRSwKICBhMTM6IDB4MjcwQywKICBhMTQ6IDB4MjcwRCwKICBhMTU6IDB4MjcwRSwKICBhMTY6IDB4MjcwRiwKICBhMTA1OiAweDI3MTAsCiAgYTE3OiAweDI3MTEsCiAgYTE4OiAweDI3MTIsCiAgYTE5OiAweDI3MTMsCiAgYTIwOiAweDI3MTQsCiAgYTIxOiAweDI3MTUsCiAgYTIyOiAweDI3MTYsCiAgYTIzOiAweDI3MTcsCiAgYTI0OiAweDI3MTgsCiAgYTI1OiAweDI3MTksCiAgYTI2OiAweDI3MUEsCiAgYTI3OiAweDI3MUIsCiAgYTI4OiAweDI3MUMsCiAgYTY6IDB4MjcxRCwKICBhNzogMHgyNzFFLAogIGE4OiAweDI3MUYsCiAgYTk6IDB4MjcyMCwKICBhMTA6IDB4MjcyMSwKICBhMjk6IDB4MjcyMiwKICBhMzA6IDB4MjcyMywKICBhMzE6IDB4MjcyNCwKICBhMzI6IDB4MjcyNSwKICBhMzM6IDB4MjcyNiwKICBhMzQ6IDB4MjcyNywKICBhMzU6IDB4MjYwNSwKICBhMzY6IDB4MjcyOSwKICBhMzc6IDB4MjcyQSwKICBhMzg6IDB4MjcyQiwKICBhMzk6IDB4MjcyQywKICBhNDA6IDB4MjcyRCwKICBhNDE6IDB4MjcyRSwKICBhNDI6IDB4MjcyRiwKICBhNDM6IDB4MjczMCwKICBhNDQ6IDB4MjczMSwKICBhNDU6IDB4MjczMiwKICBhNDY6IDB4MjczMywKICBhNDc6IDB4MjczNCwKICBhNDg6IDB4MjczNSwKICBhNDk6IDB4MjczNiwKICBhNTA6IDB4MjczNywKICBhNTE6IDB4MjczOCwKICBhNTI6IDB4MjczOSwKICBhNTM6IDB4MjczQSwKICBhNTQ6IDB4MjczQiwKICBhNTU6IDB4MjczQywKICBhNTY6IDB4MjczRCwKICBhNTc6IDB4MjczRSwKICBhNTg6IDB4MjczRiwKICBhNTk6IDB4Mjc0MCwKICBhNjA6IDB4Mjc0MSwKICBhNjE6IDB4Mjc0MiwKICBhNjI6IDB4Mjc0MywKICBhNjM6IDB4Mjc0NCwKICBhNjQ6IDB4Mjc0NSwKICBhNjU6IDB4Mjc0NiwKICBhNjY6IDB4Mjc0NywKICBhNjc6IDB4Mjc0OCwKICBhNjg6IDB4Mjc0OSwKICBhNjk6IDB4Mjc0QSwKICBhNzA6IDB4Mjc0QiwKICBhNzE6IDB4MjVDRiwKICBhNzI6IDB4Mjc0RCwKICBhNzM6IDB4MjVBMCwKICBhNzQ6IDB4Mjc0RiwKICBhMjAzOiAweDI3NTAsCiAgYTc1OiAweDI3NTEsCiAgYTIwNDogMHgyNzUyLAogIGE3NjogMHgyNUIyLAogIGE3NzogMHgyNUJDLAogIGE3ODogMHgyNUM2LAogIGE3OTogMHgyNzU2LAogIGE4MTogMHgyNUQ3LAogIGE4MjogMHgyNzU4LAogIGE4MzogMHgyNzU5LAogIGE4NDogMHgyNzVBLAogIGE5NzogMHgyNzVCLAogIGE5ODogMHgyNzVDLAogIGE5OTogMHgyNzVELAogIGExMDA6IDB4Mjc1RSwKICBhMTAxOiAweDI3NjEsCiAgYTEwMjogMHgyNzYyLAogIGExMDM6IDB4Mjc2MywKICBhMTA0OiAweDI3NjQsCiAgYTEwNjogMHgyNzY1LAogIGExMDc6IDB4Mjc2NiwKICBhMTA4OiAweDI3NjcsCiAgYTExMjogMHgyNjYzLAogIGExMTE6IDB4MjY2NiwKICBhMTEwOiAweDI2NjUsCiAgYTEwOTogMHgyNjYwLAogIGExMjA6IDB4MjQ2MCwKICBhMTIxOiAweDI0NjEsCiAgYTEyMjogMHgyNDYyLAogIGExMjM6IDB4MjQ2MywKICBhMTI0OiAweDI0NjQsCiAgYTEyNTogMHgyNDY1LAogIGExMjY6IDB4MjQ2NiwKICBhMTI3OiAweDI0NjcsCiAgYTEyODogMHgyNDY4LAogIGExMjk6IDB4MjQ2OSwKICBhMTMwOiAweDI3NzYsCiAgYTEzMTogMHgyNzc3LAogIGExMzI6IDB4Mjc3OCwKICBhMTMzOiAweDI3NzksCiAgYTEzNDogMHgyNzdBLAogIGExMzU6IDB4Mjc3QiwKICBhMTM2OiAweDI3N0MsCiAgYTEzNzogMHgyNzdELAogIGExMzg6IDB4Mjc3RSwKICBhMTM5OiAweDI3N0YsCiAgYTE0MDogMHgyNzgwLAogIGExNDE6IDB4Mjc4MSwKICBhMTQyOiAweDI3ODIsCiAgYTE0MzogMHgyNzgzLAogIGExNDQ6IDB4Mjc4NCwKICBhMTQ1OiAweDI3ODUsCiAgYTE0NjogMHgyNzg2LAogIGExNDc6IDB4Mjc4NywKICBhMTQ4OiAweDI3ODgsCiAgYTE0OTogMHgyNzg5LAogIGExNTA6IDB4Mjc4QSwKICBhMTUxOiAweDI3OEIsCiAgYTE1MjogMHgyNzhDLAogIGExNTM6IDB4Mjc4RCwKICBhMTU0OiAweDI3OEUsCiAgYTE1NTogMHgyNzhGLAogIGExNTY6IDB4Mjc5MCwKICBhMTU3OiAweDI3OTEsCiAgYTE1ODogMHgyNzkyLAogIGExNTk6IDB4Mjc5MywKICBhMTYwOiAweDI3OTQsCiAgYTE2MTogMHgyMTkyLAogIGExNjM6IDB4MjE5NCwKICBhMTY0OiAweDIxOTUsCiAgYTE5NjogMHgyNzk4LAogIGExNjU6IDB4Mjc5OSwKICBhMTkyOiAweDI3OUEsCiAgYTE2NjogMHgyNzlCLAogIGExNjc6IDB4Mjc5QywKICBhMTY4OiAweDI3OUQsCiAgYTE2OTogMHgyNzlFLAogIGExNzA6IDB4Mjc5RiwKICBhMTcxOiAweDI3QTAsCiAgYTE3MjogMHgyN0ExLAogIGExNzM6IDB4MjdBMiwKICBhMTYyOiAweDI3QTMsCiAgYTE3NDogMHgyN0E0LAogIGExNzU6IDB4MjdBNSwKICBhMTc2OiAweDI3QTYsCiAgYTE3NzogMHgyN0E3LAogIGExNzg6IDB4MjdBOCwKICBhMTc5OiAweDI3QTksCiAgYTE5MzogMHgyN0FBLAogIGExODA6IDB4MjdBQiwKICBhMTk5OiAweDI3QUMsCiAgYTE4MTogMHgyN0FELAogIGEyMDA6IDB4MjdBRSwKICBhMTgyOiAweDI3QUYsCiAgYTIwMTogMHgyN0IxLAogIGExODM6IDB4MjdCMiwKICBhMTg0OiAweDI3QjMsCiAgYTE5NzogMHgyN0I0LAogIGExODU6IDB4MjdCNSwKICBhMTk0OiAweDI3QjYsCiAgYTE5ODogMHgyN0I3LAogIGExODY6IDB4MjdCOCwKICBhMTk1OiAweDI3QjksCiAgYTE4NzogMHgyN0JBLAogIGExODg6IDB4MjdCQiwKICBhMTg5OiAweDI3QkMsCiAgYTE5MDogMHgyN0JELAogIGExOTE6IDB4MjdCRSwKICBhODk6IDB4Mjc2OCwgLy8gMHhGOEQ3CiAgYTkwOiAweDI3NjksIC8vIDB4RjhEOAogIGE5MzogMHgyNzZBLCAvLyAweEY4RDkKICBhOTQ6IDB4Mjc2QiwgLy8gMHhGOERBCiAgYTkxOiAweDI3NkMsIC8vIDB4RjhEQgogIGE5MjogMHgyNzZELCAvLyAweEY4REMKICBhMjA1OiAweDI3NkUsIC8vIDB4RjhERAogIGE4NTogMHgyNzZGLCAvLyAweEY4REUKICBhMjA2OiAweDI3NzAsIC8vIDB4RjhERgogIGE4NjogMHgyNzcxLCAvLyAweEY4RTAKICBhODc6IDB4Mjc3MiwgLy8gMHhGOEUxCiAgYTg4OiAweDI3NzMsIC8vIDB4RjhFMgogIGE5NTogMHgyNzc0LCAvLyAweEY4RTMKICBhOTY6IDB4Mjc3NSwgLy8gMHhGOEU0CiAgJy5ub3RkZWYnOiAweDAwMDAKfTsKCgp2YXIgUERGSW1hZ2UgPSAoZnVuY3Rpb24gUERGSW1hZ2VDbG9zdXJlKCkgewogIC8qKgogICAqIERlY29kZSB0aGUgaW1hZ2UgaW4gdGhlIG1haW4gdGhyZWFkIGlmIGl0IHN1cHBvcnRlZC4gUmVzb3ZsZXMgdGhlIHByb21pc2UKICAgKiB3aGVuIHRoZSBpbWFnZSBkYXRhIGlzIHJlYWR5LgogICAqLwogIGZ1bmN0aW9uIGhhbmRsZUltYWdlRGF0YShoYW5kbGVyLCB4cmVmLCByZXMsIGltYWdlKSB7CiAgICBpZiAoaW1hZ2UgaW5zdGFuY2VvZiBKcGVnU3RyZWFtICYmIGltYWdlLmlzTmF0aXZlbHlEZWNvZGFibGUoeHJlZiwgcmVzKSkgewogICAgICAvLyBGb3IgbmF0aXZlbHkgc3VwcG9ydGVkIGpwZWdzIHNlbmQgdGhlbSB0byB0aGUgbWFpbiB0aHJlYWQgZm9yIGRlY29kaW5nLgogICAgICB2YXIgZGljdCA9IGltYWdlLmRpY3Q7CiAgICAgIHZhciBjb2xvclNwYWNlID0gZGljdC5nZXQoJ0NvbG9yU3BhY2UnLCAnQ1MnKTsKICAgICAgY29sb3JTcGFjZSA9IENvbG9yU3BhY2UucGFyc2UoY29sb3JTcGFjZSwgeHJlZiwgcmVzKTsKICAgICAgdmFyIG51bUNvbXBzID0gY29sb3JTcGFjZS5udW1Db21wczsKICAgICAgdmFyIGRlY29kZVByb21pc2UgPSBoYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgnSnBlZ0RlY29kZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ltYWdlLmdldElSKCksIG51bUNvbXBzXSk7CiAgICAgIHJldHVybiBkZWNvZGVQcm9taXNlLnRoZW4oZnVuY3Rpb24gKG1lc3NhZ2UpIHsKICAgICAgICB2YXIgZGF0YSA9IG1lc3NhZ2UuZGF0YTsKICAgICAgICByZXR1cm4gbmV3IFN0cmVhbShkYXRhLCAwLCBkYXRhLmxlbmd0aCwgaW1hZ2UuZGljdCk7CiAgICAgIH0pOwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShpbWFnZSk7CiAgICB9CiAgfQoKICAvKioKICAgKiBEZWNvZGUgYW5kIGNsYW1wIGEgdmFsdWUuIFRoZSBmb3JtdWxhIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBzcGVjIGJlY2F1c2Ugd2UKICAgKiBkb24ndCBkZWNvZGUgdG8gZmxvYXQgcmFuZ2UgWzAsMV0sIHdlIGRlY29kZSBpdCBpbiB0aGUgWzAsbWF4XSByYW5nZS4KICAgKi8KICBmdW5jdGlvbiBkZWNvZGVBbmRDbGFtcCh2YWx1ZSwgYWRkZW5kLCBjb2VmZmljaWVudCwgbWF4KSB7CiAgICB2YWx1ZSA9IGFkZGVuZCArIHZhbHVlICogY29lZmZpY2llbnQ7CiAgICAvLyBDbGFtcCB0aGUgdmFsdWUgdG8gdGhlIHJhbmdlCiAgICByZXR1cm4gKHZhbHVlIDwgMCA/IDAgOiAodmFsdWUgPiBtYXggPyBtYXggOiB2YWx1ZSkpOwogIH0KCiAgZnVuY3Rpb24gUERGSW1hZ2UoeHJlZiwgcmVzLCBpbWFnZSwgaW5saW5lLCBzbWFzaywgbWFzaywgaXNNYXNrKSB7CiAgICB0aGlzLmltYWdlID0gaW1hZ2U7CiAgICB2YXIgZGljdCA9IGltYWdlLmRpY3Q7CiAgICBpZiAoZGljdC5oYXMoJ0ZpbHRlcicpKSB7CiAgICAgIHZhciBmaWx0ZXIgPSBkaWN0LmdldCgnRmlsdGVyJykubmFtZTsKICAgICAgaWYgKGZpbHRlciA9PT0gJ0pQWERlY29kZScpIHsKICAgICAgICB2YXIganB4SW1hZ2UgPSBuZXcgSnB4SW1hZ2UoKTsKICAgICAgICBqcHhJbWFnZS5wYXJzZUltYWdlUHJvcGVydGllcyhpbWFnZS5zdHJlYW0pOwogICAgICAgIGltYWdlLnN0cmVhbS5yZXNldCgpOwogICAgICAgIGltYWdlLmJpdHNQZXJDb21wb25lbnQgPSBqcHhJbWFnZS5iaXRzUGVyQ29tcG9uZW50OwogICAgICAgIGltYWdlLm51bUNvbXBzID0ganB4SW1hZ2UuY29tcG9uZW50c0NvdW50OwogICAgICB9IGVsc2UgaWYgKGZpbHRlciA9PT0gJ0pCSUcyRGVjb2RlJykgewogICAgICAgIGltYWdlLmJpdHNQZXJDb21wb25lbnQgPSAxOwogICAgICAgIGltYWdlLm51bUNvbXBzID0gMTsKICAgICAgfQogICAgfQogICAgLy8gVE9ETyBjYWNoZSByZW5kZXJlZCBpbWFnZXM/CgogICAgdGhpcy53aWR0aCA9IGRpY3QuZ2V0KCdXaWR0aCcsICdXJyk7CiAgICB0aGlzLmhlaWdodCA9IGRpY3QuZ2V0KCdIZWlnaHQnLCAnSCcpOwoKICAgIGlmICh0aGlzLndpZHRoIDwgMSB8fCB0aGlzLmhlaWdodCA8IDEpIHsKICAgICAgZXJyb3IoJ0ludmFsaWQgaW1hZ2Ugd2lkdGg6ICcgKyB0aGlzLndpZHRoICsgJyBvciBoZWlnaHQ6ICcgKwogICAgICAgICAgICB0aGlzLmhlaWdodCk7CiAgICB9CgogICAgdGhpcy5pbnRlcnBvbGF0ZSA9IGRpY3QuZ2V0KCdJbnRlcnBvbGF0ZScsICdJJykgfHwgZmFsc2U7CiAgICB0aGlzLmltYWdlTWFzayA9IGRpY3QuZ2V0KCdJbWFnZU1hc2snLCAnSU0nKSB8fCBmYWxzZTsKICAgIHRoaXMubWF0dGUgPSBkaWN0LmdldCgnTWF0dGUnKSB8fCBmYWxzZTsKCiAgICB2YXIgYml0c1BlckNvbXBvbmVudCA9IGltYWdlLmJpdHNQZXJDb21wb25lbnQ7CiAgICBpZiAoIWJpdHNQZXJDb21wb25lbnQpIHsKICAgICAgYml0c1BlckNvbXBvbmVudCA9IGRpY3QuZ2V0KCdCaXRzUGVyQ29tcG9uZW50JywgJ0JQQycpOwogICAgICBpZiAoIWJpdHNQZXJDb21wb25lbnQpIHsKICAgICAgICBpZiAodGhpcy5pbWFnZU1hc2spIHsKICAgICAgICAgIGJpdHNQZXJDb21wb25lbnQgPSAxOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBlcnJvcignQml0cyBwZXIgY29tcG9uZW50IG1pc3NpbmcgaW4gaW1hZ2U6ICcgKyB0aGlzLmltYWdlTWFzayk7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICB0aGlzLmJwYyA9IGJpdHNQZXJDb21wb25lbnQ7CgogICAgaWYgKCF0aGlzLmltYWdlTWFzaykgewogICAgICB2YXIgY29sb3JTcGFjZSA9IGRpY3QuZ2V0KCdDb2xvclNwYWNlJywgJ0NTJyk7CiAgICAgIGlmICghY29sb3JTcGFjZSkgewogICAgICAgIGluZm8oJ0pQWCBpbWFnZXMgKHdoaWNoIGRvIG5vdCByZXF1aXJlIGNvbG9yIHNwYWNlcyknKTsKICAgICAgICBzd2l0Y2ggKGltYWdlLm51bUNvbXBzKSB7CiAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgIGNvbG9yU3BhY2UgPSBOYW1lLmdldCgnRGV2aWNlR3JheScpOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgY29sb3JTcGFjZSA9IE5hbWUuZ2V0KCdEZXZpY2VSR0InKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgIGNvbG9yU3BhY2UgPSBOYW1lLmdldCgnRGV2aWNlQ01ZSycpOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIGVycm9yKCdKUFggaW1hZ2VzIHdpdGggJyArIHRoaXMubnVtQ29tcHMgKwogICAgICAgICAgICAgICAgICAnIGNvbG9yIGNvbXBvbmVudHMgbm90IHN1cHBvcnRlZC4nKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgdGhpcy5jb2xvclNwYWNlID0gQ29sb3JTcGFjZS5wYXJzZShjb2xvclNwYWNlLCB4cmVmLCByZXMpOwogICAgICB0aGlzLm51bUNvbXBzID0gdGhpcy5jb2xvclNwYWNlLm51bUNvbXBzOwogICAgfQoKICAgIHRoaXMuZGVjb2RlID0gZGljdC5nZXQoJ0RlY29kZScsICdEJyk7CiAgICB0aGlzLm5lZWRzRGVjb2RlID0gZmFsc2U7CiAgICBpZiAodGhpcy5kZWNvZGUgJiYKICAgICAgICAoKHRoaXMuY29sb3JTcGFjZSAmJiAhdGhpcy5jb2xvclNwYWNlLmlzRGVmYXVsdERlY29kZSh0aGlzLmRlY29kZSkpIHx8CiAgICAgICAgIChpc01hc2sgJiYgIUNvbG9yU3BhY2UuaXNEZWZhdWx0RGVjb2RlKHRoaXMuZGVjb2RlLCAxKSkpKSB7CiAgICAgIHRoaXMubmVlZHNEZWNvZGUgPSB0cnVlOwogICAgICAvLyBEbyBzb21lIHByZXByb2Nlc3NpbmcgdG8gYXZvaWQgbW9yZSBtYXRoLgogICAgICB2YXIgbWF4ID0gKDEgPDwgYml0c1BlckNvbXBvbmVudCkgLSAxOwogICAgICB0aGlzLmRlY29kZUNvZWZmaWNpZW50cyA9IFtdOwogICAgICB0aGlzLmRlY29kZUFkZGVuZHMgPSBbXTsKICAgICAgZm9yICh2YXIgaSA9IDAsIGogPSAwOyBpIDwgdGhpcy5kZWNvZGUubGVuZ3RoOyBpICs9IDIsICsraikgewogICAgICAgIHZhciBkbWluID0gdGhpcy5kZWNvZGVbaV07CiAgICAgICAgdmFyIGRtYXggPSB0aGlzLmRlY29kZVtpICsgMV07CiAgICAgICAgdGhpcy5kZWNvZGVDb2VmZmljaWVudHNbal0gPSBkbWF4IC0gZG1pbjsKICAgICAgICB0aGlzLmRlY29kZUFkZGVuZHNbal0gPSBtYXggKiBkbWluOwogICAgICB9CiAgICB9CgogICAgaWYgKHNtYXNrKSB7CiAgICAgIHRoaXMuc21hc2sgPSBuZXcgUERGSW1hZ2UoeHJlZiwgcmVzLCBzbWFzaywgZmFsc2UpOwogICAgfSBlbHNlIGlmIChtYXNrKSB7CiAgICAgIGlmIChpc1N0cmVhbShtYXNrKSkgewogICAgICAgIHRoaXMubWFzayA9IG5ldyBQREZJbWFnZSh4cmVmLCByZXMsIG1hc2ssIGZhbHNlLCBudWxsLCBudWxsLCB0cnVlKTsKICAgICAgfSBlbHNlIHsKICAgICAgICAvLyBDb2xvciBrZXkgbWFzayAoanVzdCBhbiBhcnJheSkuCiAgICAgICAgdGhpcy5tYXNrID0gbWFzazsKICAgICAgfQogICAgfQogIH0KICAvKioKICAgKiBIYW5kbGVzIHByb2Nlc3Npbmcgb2YgaW1hZ2UgZGF0YSBhbmQgcmV0dXJucyB0aGUgUHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkCiAgICogd2l0aCBhIFBERkltYWdlIHdoZW4gdGhlIGltYWdlIGlzIHJlYWR5IHRvIGJlIHVzZWQuCiAgICovCiAgUERGSW1hZ2UuYnVpbGRJbWFnZSA9IGZ1bmN0aW9uIFBERkltYWdlX2J1aWxkSW1hZ2UoaGFuZGxlciwgeHJlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMsIGltYWdlLCBpbmxpbmUpIHsKICAgIHZhciBpbWFnZVByb21pc2UgPSBoYW5kbGVJbWFnZURhdGEoaGFuZGxlciwgeHJlZiwgcmVzLCBpbWFnZSk7CiAgICB2YXIgc21hc2tQcm9taXNlOwogICAgdmFyIG1hc2tQcm9taXNlOwoKICAgIHZhciBzbWFzayA9IGltYWdlLmRpY3QuZ2V0KCdTTWFzaycpOwogICAgdmFyIG1hc2sgPSBpbWFnZS5kaWN0LmdldCgnTWFzaycpOwoKICAgIGlmIChzbWFzaykgewogICAgICBzbWFza1Byb21pc2UgPSBoYW5kbGVJbWFnZURhdGEoaGFuZGxlciwgeHJlZiwgcmVzLCBzbWFzayk7CiAgICAgIG1hc2tQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKG51bGwpOwogICAgfSBlbHNlIHsKICAgICAgc21hc2tQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKG51bGwpOwogICAgICBpZiAobWFzaykgewogICAgICAgIGlmIChpc1N0cmVhbShtYXNrKSkgewogICAgICAgICAgbWFza1Byb21pc2UgPSBoYW5kbGVJbWFnZURhdGEoaGFuZGxlciwgeHJlZiwgcmVzLCBtYXNrKTsKICAgICAgICB9IGVsc2UgaWYgKGlzQXJyYXkobWFzaykpIHsKICAgICAgICAgIG1hc2tQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKG1hc2spOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB3YXJuKCdVbnN1cHBvcnRlZCBtYXNrIGZvcm1hdC4nKTsKICAgICAgICAgIG1hc2tQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKG51bGwpOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICBtYXNrUHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZShudWxsKTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIFByb21pc2UuYWxsKFtpbWFnZVByb21pc2UsIHNtYXNrUHJvbWlzZSwgbWFza1Byb21pc2VdKS50aGVuKAogICAgICBmdW5jdGlvbihyZXN1bHRzKSB7CiAgICAgICAgdmFyIGltYWdlRGF0YSA9IHJlc3VsdHNbMF07CiAgICAgICAgdmFyIHNtYXNrRGF0YSA9IHJlc3VsdHNbMV07CiAgICAgICAgdmFyIG1hc2tEYXRhID0gcmVzdWx0c1syXTsKICAgICAgICByZXR1cm4gbmV3IFBERkltYWdlKHhyZWYsIHJlcywgaW1hZ2VEYXRhLCBpbmxpbmUsIHNtYXNrRGF0YSwgbWFza0RhdGEpOwogICAgICB9KTsKICB9OwoKICAvKioKICAgKiBSZXNpemUgYW4gaW1hZ2UgdXNpbmcgdGhlIG5lYXJlc3QgbmVpZ2hib3IgYWxnb3JpdGhtLiBDdXJyZW50bHkgb25seQogICAqIHN1cHBvcnRzIG9uZSBhbmQgdGhyZWUgY29tcG9uZW50IGltYWdlcy4KICAgKiBAcGFyYW0ge1R5cGVkQXJyYXl9IHBpeGVscyBUaGUgb3JpZ2luYWwgaW1hZ2Ugd2l0aCBvbmUgY29tcG9uZW50LgogICAqIEBwYXJhbSB7TnVtYmVyfSBicGMgTnVtYmVyIG9mIGJpdHMgcGVyIGNvbXBvbmVudC4KICAgKiBAcGFyYW0ge051bWJlcn0gY29tcG9uZW50cyBOdW1iZXIgb2YgY29sb3IgY29tcG9uZW50cywgMSBvciAzIGlzIHN1cHBvcnRlZC4KICAgKiBAcGFyYW0ge051bWJlcn0gdzEgT3JpZ2luYWwgd2lkdGguCiAgICogQHBhcmFtIHtOdW1iZXJ9IGgxIE9yaWdpbmFsIGhlaWdodC4KICAgKiBAcGFyYW0ge051bWJlcn0gdzIgTmV3IHdpZHRoLgogICAqIEBwYXJhbSB7TnVtYmVyfSBoMiBOZXcgaGVpZ2h0LgogICAqIEBwYXJhbSB7VHlwZWRBcnJheX0gZGVzdCAoT3B0aW9uYWwpIFRoZSBkZXN0aW5hdGlvbiBidWZmZXIuCiAgICogQHBhcmFtIHtOdW1iZXJ9IGFscGhhMDEgKE9wdGlvbmFsKSBTaXplIHJlc2VydmVkIGZvciB0aGUgYWxwaGEgY2hhbm5lbC4KICAgKiBAcmV0dXJuIHtUeXBlZEFycmF5fSBSZXNpemVkIGltYWdlIGRhdGEuCiAgICovCiAgUERGSW1hZ2UucmVzaXplID0gZnVuY3Rpb24gUERGSW1hZ2VfcmVzaXplKHBpeGVscywgYnBjLCBjb21wb25lbnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3MSwgaDEsIHcyLCBoMiwgZGVzdCwgYWxwaGEwMSkgewoKICAgIGlmIChjb21wb25lbnRzICE9PSAxICYmIGNvbXBvbmVudHMgIT09IDMpIHsKICAgICAgZXJyb3IoJ1Vuc3VwcG9ydGVkIGNvbXBvbmVudCBjb3VudCBmb3IgcmVzaXppbmcuJyk7CiAgICB9CgogICAgdmFyIGxlbmd0aCA9IHcyICogaDIgKiBjb21wb25lbnRzOwogICAgdmFyIHRlbXAgPSBkZXN0ID8gZGVzdCA6IChicGMgPD0gOCA/IG5ldyBVaW50OEFycmF5KGxlbmd0aCkgOgogICAgICAgIChicGMgPD0gMTYgPyBuZXcgVWludDE2QXJyYXkobGVuZ3RoKSA6IG5ldyBVaW50MzJBcnJheShsZW5ndGgpKSk7CiAgICB2YXIgeFJhdGlvID0gdzEgLyB3MjsKICAgIHZhciB5UmF0aW8gPSBoMSAvIGgyOwogICAgdmFyIGksIGosIHB5LCBuZXdJbmRleCA9IDAsIG9sZEluZGV4OwogICAgdmFyIHhTY2FsZWQgPSBuZXcgVWludDE2QXJyYXkodzIpOwogICAgdmFyIHcxU2NhbmxpbmUgPSB3MSAqIGNvbXBvbmVudHM7CiAgICBpZiAoYWxwaGEwMSAhPT0gMSkgewogICAgICBhbHBoYTAxID0gMDsKICAgIH0KCiAgICBmb3IgKGogPSAwOyBqIDwgdzI7IGorKykgewogICAgICB4U2NhbGVkW2pdID0gTWF0aC5mbG9vcihqICogeFJhdGlvKSAqIGNvbXBvbmVudHM7CiAgICB9CgogICAgaWYgKGNvbXBvbmVudHMgPT09IDEpIHsKICAgICAgZm9yIChpID0gMDsgaSA8IGgyOyBpKyspIHsKICAgICAgICBweSA9IE1hdGguZmxvb3IoaSAqIHlSYXRpbykgKiB3MVNjYW5saW5lOwogICAgICAgIGZvciAoaiA9IDA7IGogPCB3MjsgaisrKSB7CiAgICAgICAgICBvbGRJbmRleCA9IHB5ICsgeFNjYWxlZFtqXTsKICAgICAgICAgIHRlbXBbbmV3SW5kZXgrK10gPSBwaXhlbHNbb2xkSW5kZXhdOwogICAgICAgIH0KICAgICAgfQogICAgfSBlbHNlIGlmIChjb21wb25lbnRzID09PSAzKSB7CiAgICAgIGZvciAoaSA9IDA7IGkgPCBoMjsgaSsrKSB7CiAgICAgICAgcHkgPSBNYXRoLmZsb29yKGkgKiB5UmF0aW8pICogdzFTY2FubGluZTsKICAgICAgICBmb3IgKGogPSAwOyBqIDwgdzI7IGorKykgewogICAgICAgICAgb2xkSW5kZXggPSBweSArIHhTY2FsZWRbal07CiAgICAgICAgICB0ZW1wW25ld0luZGV4KytdID0gcGl4ZWxzW29sZEluZGV4KytdOwogICAgICAgICAgdGVtcFtuZXdJbmRleCsrXSA9IHBpeGVsc1tvbGRJbmRleCsrXTsKICAgICAgICAgIHRlbXBbbmV3SW5kZXgrK10gPSBwaXhlbHNbb2xkSW5kZXgrK107CiAgICAgICAgICBuZXdJbmRleCArPSBhbHBoYTAxOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgcmV0dXJuIHRlbXA7CiAgfTsKCiAgUERGSW1hZ2UuY3JlYXRlTWFzayA9CiAgICAgIGZ1bmN0aW9uIFBERkltYWdlX2NyZWF0ZU1hc2soaW1nQXJyYXksIHdpZHRoLCBoZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VJc0Zyb21EZWNvZGVTdHJlYW0sIGludmVyc2VEZWNvZGUpIHsKCiAgICAvLyB8aW1nQXJyYXl8IG1pZ2h0IG5vdCBjb250YWluIGZ1bGwgZGF0YSBmb3IgZXZlcnkgcGl4ZWwgb2YgdGhlIG1hc2ssIHNvCiAgICAvLyB3ZSBuZWVkIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gfGNvbXB1dGVkTGVuZ3RofCBhbmQgfGFjdHVhbExlbmd0aHwuCiAgICAvLyBJbiBwYXJ0aWN1bGFyLCBpZiBpbnZlcnNlRGVjb2RlIGlzIHRydWUsIHRoZW4gdGhlIGFycmF5IHdlIHJldHVybiBtdXN0CiAgICAvLyBoYXZlIGEgbGVuZ3RoIG9mIHxjb21wdXRlZExlbmd0aHwuCgogICAgdmFyIGNvbXB1dGVkTGVuZ3RoID0gKCh3aWR0aCArIDcpID4+IDMpICogaGVpZ2h0OwogICAgdmFyIGFjdHVhbExlbmd0aCA9IGltZ0FycmF5LmJ5dGVMZW5ndGg7CiAgICB2YXIgaGF2ZUZ1bGxEYXRhID0gY29tcHV0ZWRMZW5ndGggPT09IGFjdHVhbExlbmd0aDsKICAgIHZhciBkYXRhLCBpOwoKICAgIGlmIChpbWFnZUlzRnJvbURlY29kZVN0cmVhbSAmJiAoIWludmVyc2VEZWNvZGUgfHwgaGF2ZUZ1bGxEYXRhKSkgewogICAgICAvLyBpbWdBcnJheSBjYW1lIGZyb20gYSBEZWNvZGVTdHJlYW0gYW5kIGl0cyBkYXRhIGlzIGluIGFuIGFwcHJvcHJpYXRlCiAgICAgIC8vIGZvcm0sIHNvIHdlIGNhbiBqdXN0IHRyYW5zZmVyIGl0LgogICAgICBkYXRhID0gaW1nQXJyYXk7CiAgICB9IGVsc2UgaWYgKCFpbnZlcnNlRGVjb2RlKSB7CiAgICAgIGRhdGEgPSBuZXcgVWludDhBcnJheShhY3R1YWxMZW5ndGgpOwogICAgICBkYXRhLnNldChpbWdBcnJheSk7CiAgICB9IGVsc2UgewogICAgICBkYXRhID0gbmV3IFVpbnQ4QXJyYXkoY29tcHV0ZWRMZW5ndGgpOwogICAgICBkYXRhLnNldChpbWdBcnJheSk7CiAgICAgIGZvciAoaSA9IGFjdHVhbExlbmd0aDsgaSA8IGNvbXB1dGVkTGVuZ3RoOyBpKyspIHsKICAgICAgICBkYXRhW2ldID0gMHhmZjsKICAgICAgfQogICAgfQoKICAgIC8vIElmIG5lY2Vzc2FyeSwgaW52ZXJ0IHRoZSBvcmlnaW5hbCBtYXNrIGRhdGEgKGJ1dCBub3QgYW55IGV4dHJhIHdlIG1pZ2h0CiAgICAvLyBoYXZlIGFkZGVkIGFib3ZlKS4gSXQncyBzYWZlIHRvIG1vZGlmeSB0aGUgYXJyYXkgLS0gd2hldGhlciBpdCdzIHRoZQogICAgLy8gb3JpZ2luYWwgb3IgYSBjb3B5LCB3ZSdyZSBhYm91dCB0byB0cmFuc2ZlciBpdCBhbnl3YXksIHNvIG5vdGhpbmcgZWxzZQogICAgLy8gaW4gdGhpcyB0aHJlYWQgY2FuIGJlIHJlbHlpbmcgb24gaXRzIGNvbnRlbnRzLgogICAgaWYgKGludmVyc2VEZWNvZGUpIHsKICAgICAgZm9yIChpID0gMDsgaSA8IGFjdHVhbExlbmd0aDsgaSsrKSB7CiAgICAgICAgZGF0YVtpXSA9IH5kYXRhW2ldOwogICAgICB9CiAgICB9CgogICAgcmV0dXJuIHtkYXRhOiBkYXRhLCB3aWR0aDogd2lkdGgsIGhlaWdodDogaGVpZ2h0fTsKICB9OwoKICBQREZJbWFnZS5wcm90b3R5cGUgPSB7CiAgICBnZXQgZHJhd1dpZHRoKCkgewogICAgICByZXR1cm4gTWF0aC5tYXgodGhpcy53aWR0aCwKICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc21hc2sgJiYgdGhpcy5zbWFzay53aWR0aCB8fCAwLAogICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXNrICYmIHRoaXMubWFzay53aWR0aCB8fCAwKTsKICAgIH0sCgogICAgZ2V0IGRyYXdIZWlnaHQoKSB7CiAgICAgIHJldHVybiBNYXRoLm1heCh0aGlzLmhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc21hc2sgJiYgdGhpcy5zbWFzay5oZWlnaHQgfHwgMCwKICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFzayAmJiB0aGlzLm1hc2suaGVpZ2h0IHx8IDApOwogICAgfSwKCiAgICBkZWNvZGVCdWZmZXI6IGZ1bmN0aW9uIFBERkltYWdlX2RlY29kZUJ1ZmZlcihidWZmZXIpIHsKICAgICAgdmFyIGJwYyA9IHRoaXMuYnBjOwogICAgICB2YXIgbnVtQ29tcHMgPSB0aGlzLm51bUNvbXBzOwoKICAgICAgdmFyIGRlY29kZUFkZGVuZHMgPSB0aGlzLmRlY29kZUFkZGVuZHM7CiAgICAgIHZhciBkZWNvZGVDb2VmZmljaWVudHMgPSB0aGlzLmRlY29kZUNvZWZmaWNpZW50czsKICAgICAgdmFyIG1heCA9ICgxIDw8IGJwYykgLSAxOwogICAgICB2YXIgaSwgaWk7CgogICAgICBpZiAoYnBjID09PSAxKSB7CiAgICAgICAgLy8gSWYgdGhlIGJ1ZmZlciBuZWVkZWQgZGVjb2RlIHRoYXQgbWVhbnMgaXQganVzdCBuZWVkcyB0byBiZSBpbnZlcnRlZC4KICAgICAgICBmb3IgKGkgPSAwLCBpaSA9IGJ1ZmZlci5sZW5ndGg7IGkgPCBpaTsgaSsrKSB7CiAgICAgICAgICBidWZmZXJbaV0gPSArIShidWZmZXJbaV0pOwogICAgICAgIH0KICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgdmFyIGluZGV4ID0gMDsKICAgICAgZm9yIChpID0gMCwgaWkgPSB0aGlzLndpZHRoICogdGhpcy5oZWlnaHQ7IGkgPCBpaTsgaSsrKSB7CiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBudW1Db21wczsgaisrKSB7CiAgICAgICAgICBidWZmZXJbaW5kZXhdID0gZGVjb2RlQW5kQ2xhbXAoYnVmZmVyW2luZGV4XSwgZGVjb2RlQWRkZW5kc1tqXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVDb2VmZmljaWVudHNbal0sIG1heCk7CiAgICAgICAgICBpbmRleCsrOwogICAgICAgIH0KICAgICAgfQogICAgfSwKCiAgICBnZXRDb21wb25lbnRzOiBmdW5jdGlvbiBQREZJbWFnZV9nZXRDb21wb25lbnRzKGJ1ZmZlcikgewogICAgICB2YXIgYnBjID0gdGhpcy5icGM7CgogICAgICAvLyBUaGlzIGltYWdlIGRvZXNuJ3QgcmVxdWlyZSBhbnkgZXh0cmEgd29yay4KICAgICAgaWYgKGJwYyA9PT0gOCkgewogICAgICAgIHJldHVybiBidWZmZXI7CiAgICAgIH0KCiAgICAgIHZhciB3aWR0aCA9IHRoaXMud2lkdGg7CiAgICAgIHZhciBoZWlnaHQgPSB0aGlzLmhlaWdodDsKICAgICAgdmFyIG51bUNvbXBzID0gdGhpcy5udW1Db21wczsKCiAgICAgIHZhciBsZW5ndGggPSB3aWR0aCAqIGhlaWdodCAqIG51bUNvbXBzOwogICAgICB2YXIgYnVmZmVyUG9zID0gMDsKICAgICAgdmFyIG91dHB1dCA9IChicGMgPD0gOCA/IG5ldyBVaW50OEFycmF5KGxlbmd0aCkgOgogICAgICAgIChicGMgPD0gMTYgPyBuZXcgVWludDE2QXJyYXkobGVuZ3RoKSA6IG5ldyBVaW50MzJBcnJheShsZW5ndGgpKSk7CiAgICAgIHZhciByb3dDb21wcyA9IHdpZHRoICogbnVtQ29tcHM7CgogICAgICB2YXIgbWF4ID0gKDEgPDwgYnBjKSAtIDE7CiAgICAgIHZhciBpID0gMCwgaWksIGJ1ZjsKCiAgICAgIGlmIChicGMgPT09IDEpIHsKICAgICAgICAvLyBPcHRpbWl6YXRpb24gZm9yIHJlYWRpbmcgMSBicGMgaW1hZ2VzLgogICAgICAgIHZhciBtYXNrLCBsb29wMUVuZCwgbG9vcDJFbmQ7CiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBoZWlnaHQ7IGorKykgewogICAgICAgICAgbG9vcDFFbmQgPSBpICsgKHJvd0NvbXBzICYgfjcpOwogICAgICAgICAgbG9vcDJFbmQgPSBpICsgcm93Q29tcHM7CgogICAgICAgICAgLy8gdW5yb2xsIGxvb3AgZm9yIGFsbCBmdWxsIGJ5dGVzCiAgICAgICAgICB3aGlsZSAoaSA8IGxvb3AxRW5kKSB7CiAgICAgICAgICAgIGJ1ZiA9IGJ1ZmZlcltidWZmZXJQb3MrK107CiAgICAgICAgICAgIG91dHB1dFtpXSA9IChidWYgPj4gNykgJiAxOwogICAgICAgICAgICBvdXRwdXRbaSArIDFdID0gKGJ1ZiA+PiA2KSAmIDE7CiAgICAgICAgICAgIG91dHB1dFtpICsgMl0gPSAoYnVmID4+IDUpICYgMTsKICAgICAgICAgICAgb3V0cHV0W2kgKyAzXSA9IChidWYgPj4gNCkgJiAxOwogICAgICAgICAgICBvdXRwdXRbaSArIDRdID0gKGJ1ZiA+PiAzKSAmIDE7CiAgICAgICAgICAgIG91dHB1dFtpICsgNV0gPSAoYnVmID4+IDIpICYgMTsKICAgICAgICAgICAgb3V0cHV0W2kgKyA2XSA9IChidWYgPj4gMSkgJiAxOwogICAgICAgICAgICBvdXRwdXRbaSArIDddID0gYnVmICYgMTsKICAgICAgICAgICAgaSArPSA4OwogICAgICAgICAgfQoKICAgICAgICAgIC8vIGhhbmRsZSByZW1haW5nIGJpdHMKICAgICAgICAgIGlmIChpIDwgbG9vcDJFbmQpIHsKICAgICAgICAgICAgYnVmID0gYnVmZmVyW2J1ZmZlclBvcysrXTsKICAgICAgICAgICAgbWFzayA9IDEyODsKICAgICAgICAgICAgd2hpbGUgKGkgPCBsb29wMkVuZCkgewogICAgICAgICAgICAgIG91dHB1dFtpKytdID0gKyEhKGJ1ZiAmIG1hc2spOwogICAgICAgICAgICAgIG1hc2sgPj49IDE7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgLy8gVGhlIGdlbmVyYWwgY2FzZSB0aGF0IGhhbmRsZXMgYWxsIG90aGVyIGJwYyB2YWx1ZXMuCiAgICAgICAgdmFyIGJpdHMgPSAwOwogICAgICAgIGJ1ZiA9IDA7CiAgICAgICAgZm9yIChpID0gMCwgaWkgPSBsZW5ndGg7IGkgPCBpaTsgKytpKSB7CiAgICAgICAgICBpZiAoaSAlIHJvd0NvbXBzID09PSAwKSB7CiAgICAgICAgICAgIGJ1ZiA9IDA7CiAgICAgICAgICAgIGJpdHMgPSAwOwogICAgICAgICAgfQoKICAgICAgICAgIHdoaWxlIChiaXRzIDwgYnBjKSB7CiAgICAgICAgICAgIGJ1ZiA9IChidWYgPDwgOCkgfCBidWZmZXJbYnVmZmVyUG9zKytdOwogICAgICAgICAgICBiaXRzICs9IDg7CiAgICAgICAgICB9CgogICAgICAgICAgdmFyIHJlbWFpbmluZ0JpdHMgPSBiaXRzIC0gYnBjOwogICAgICAgICAgdmFyIHZhbHVlID0gYnVmID4+IHJlbWFpbmluZ0JpdHM7CiAgICAgICAgICBvdXRwdXRbaV0gPSAodmFsdWUgPCAwID8gMCA6ICh2YWx1ZSA+IG1heCA/IG1heCA6IHZhbHVlKSk7CiAgICAgICAgICBidWYgPSBidWYgJiAoKDEgPDwgcmVtYWluaW5nQml0cykgLSAxKTsKICAgICAgICAgIGJpdHMgPSByZW1haW5pbmdCaXRzOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gb3V0cHV0OwogICAgfSwKCiAgICBmaWxsT3BhY2l0eTogZnVuY3Rpb24gUERGSW1hZ2VfZmlsbE9wYWNpdHkocmdiYUJ1Ziwgd2lkdGgsIGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWxIZWlnaHQsIGltYWdlKSB7CiAgICAgIHZhciBzbWFzayA9IHRoaXMuc21hc2s7CiAgICAgIHZhciBtYXNrID0gdGhpcy5tYXNrOwogICAgICB2YXIgYWxwaGFCdWYsIHN3LCBzaCwgaSwgaWksIGo7CgogICAgICBpZiAoc21hc2spIHsKICAgICAgICBzdyA9IHNtYXNrLndpZHRoOwogICAgICAgIHNoID0gc21hc2suaGVpZ2h0OwogICAgICAgIGFscGhhQnVmID0gbmV3IFVpbnQ4QXJyYXkoc3cgKiBzaCk7CiAgICAgICAgc21hc2suZmlsbEdyYXlCdWZmZXIoYWxwaGFCdWYpOwogICAgICAgIGlmIChzdyAhPT0gd2lkdGggfHwgc2ggIT09IGhlaWdodCkgewogICAgICAgICAgYWxwaGFCdWYgPSBQREZJbWFnZS5yZXNpemUoYWxwaGFCdWYsIHNtYXNrLmJwYywgMSwgc3csIHNoLCB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCk7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKG1hc2spIHsKICAgICAgICBpZiAobWFzayBpbnN0YW5jZW9mIFBERkltYWdlKSB7CiAgICAgICAgICBzdyA9IG1hc2sud2lkdGg7CiAgICAgICAgICBzaCA9IG1hc2suaGVpZ2h0OwogICAgICAgICAgYWxwaGFCdWYgPSBuZXcgVWludDhBcnJheShzdyAqIHNoKTsKICAgICAgICAgIG1hc2subnVtQ29tcHMgPSAxOwogICAgICAgICAgbWFzay5maWxsR3JheUJ1ZmZlcihhbHBoYUJ1Zik7CgogICAgICAgICAgLy8gTmVlZCB0byBpbnZlcnQgdmFsdWVzIGluIHJnYmFCdWYKICAgICAgICAgIGZvciAoaSA9IDAsIGlpID0gc3cgKiBzaDsgaSA8IGlpOyArK2kpIHsKICAgICAgICAgICAgYWxwaGFCdWZbaV0gPSAyNTUgLSBhbHBoYUJ1ZltpXTsKICAgICAgICAgIH0KCiAgICAgICAgICBpZiAoc3cgIT09IHdpZHRoIHx8IHNoICE9PSBoZWlnaHQpIHsKICAgICAgICAgICAgYWxwaGFCdWYgPSBQREZJbWFnZS5yZXNpemUoYWxwaGFCdWYsIG1hc2suYnBjLCAxLCBzdywgc2gsIHdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQpOwogICAgICAgICAgfQogICAgICAgIH0gZWxzZSBpZiAoaXNBcnJheShtYXNrKSkgewogICAgICAgICAgLy8gQ29sb3Iga2V5IG1hc2s6IGlmIGFueSBvZiB0aGUgY29tcG9udGVudHMgYXJlIG91dHNpZGUgdGhlIHJhbmdlCiAgICAgICAgICAvLyB0aGVuIHRoZXkgc2hvdWxkIGJlIHBhaW50ZWQuCiAgICAgICAgICBhbHBoYUJ1ZiA9IG5ldyBVaW50OEFycmF5KHdpZHRoICogaGVpZ2h0KTsKICAgICAgICAgIHZhciBudW1Db21wcyA9IHRoaXMubnVtQ29tcHM7CiAgICAgICAgICBmb3IgKGkgPSAwLCBpaSA9IHdpZHRoICogaGVpZ2h0OyBpIDwgaWk7ICsraSkgewogICAgICAgICAgICB2YXIgb3BhY2l0eSA9IDA7CiAgICAgICAgICAgIHZhciBpbWFnZU9mZnNldCA9IGkgKiBudW1Db21wczsKICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IG51bUNvbXBzOyArK2opIHsKICAgICAgICAgICAgICB2YXIgY29sb3IgPSBpbWFnZVtpbWFnZU9mZnNldCArIGpdOwogICAgICAgICAgICAgIHZhciBtYXNrT2Zmc2V0ID0gaiAqIDI7CiAgICAgICAgICAgICAgaWYgKGNvbG9yIDwgbWFza1ttYXNrT2Zmc2V0XSB8fCBjb2xvciA+IG1hc2tbbWFza09mZnNldCArIDFdKSB7CiAgICAgICAgICAgICAgICBvcGFjaXR5ID0gMjU1OwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGFscGhhQnVmW2ldID0gb3BhY2l0eTsKICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgZXJyb3IoJ1Vua25vd24gbWFzayBmb3JtYXQuJyk7CiAgICAgICAgfQogICAgICB9CgogICAgICBpZiAoYWxwaGFCdWYpIHsKICAgICAgICBmb3IgKGkgPSAwLCBqID0gMywgaWkgPSB3aWR0aCAqIGFjdHVhbEhlaWdodDsgaSA8IGlpOyArK2ksIGogKz0gNCkgewogICAgICAgICAgcmdiYUJ1ZltqXSA9IGFscGhhQnVmW2ldOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICAvLyBObyBtYXNrLgogICAgICAgIGZvciAoaSA9IDAsIGogPSAzLCBpaSA9IHdpZHRoICogYWN0dWFsSGVpZ2h0OyBpIDwgaWk7ICsraSwgaiArPSA0KSB7CiAgICAgICAgICByZ2JhQnVmW2pdID0gMjU1OwogICAgICAgIH0KICAgICAgfQogICAgfSwKCiAgICB1bmRvUHJlYmxlbmQ6IGZ1bmN0aW9uIFBERkltYWdlX3VuZG9QcmVibGVuZChidWZmZXIsIHdpZHRoLCBoZWlnaHQpIHsKICAgICAgdmFyIG1hdHRlID0gdGhpcy5zbWFzayAmJiB0aGlzLnNtYXNrLm1hdHRlOwogICAgICBpZiAoIW1hdHRlKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIHZhciBtYXR0ZVJnYiA9IHRoaXMuY29sb3JTcGFjZS5nZXRSZ2IobWF0dGUsIDApOwogICAgICB2YXIgbWF0dGVSID0gbWF0dGVSZ2JbMF07CiAgICAgIHZhciBtYXR0ZUcgPSBtYXR0ZVJnYlsxXTsKICAgICAgdmFyIG1hdHRlQiA9IG1hdHRlUmdiWzJdOwogICAgICB2YXIgbGVuZ3RoID0gd2lkdGggKiBoZWlnaHQgKiA0OwogICAgICB2YXIgciwgZywgYjsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkgKz0gNCkgewogICAgICAgIHZhciBhbHBoYSA9IGJ1ZmZlcltpICsgM107CiAgICAgICAgaWYgKGFscGhhID09PSAwKSB7CiAgICAgICAgICAvLyBhY2NvcmRpbmcgZm9ybXVsYSB3ZSBoYXZlIHRvIGdldCBJbmZpbml0eSBpbiBhbGwgY29tcG9uZW50cwogICAgICAgICAgLy8gbWFraW5nIGl0IHdoaXRlICh0eXBpY2FsIHBhcGVyIGNvbG9yKSBzaG91bGQgYmUgb2theQogICAgICAgICAgYnVmZmVyW2ldID0gMjU1OwogICAgICAgICAgYnVmZmVyW2kgKyAxXSA9IDI1NTsKICAgICAgICAgIGJ1ZmZlcltpICsgMl0gPSAyNTU7CiAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgdmFyIGsgPSAyNTUgLyBhbHBoYTsKICAgICAgICByID0gKGJ1ZmZlcltpXSAtIG1hdHRlUikgKiBrICsgbWF0dGVSOwogICAgICAgIGcgPSAoYnVmZmVyW2kgKyAxXSAtIG1hdHRlRykgKiBrICsgbWF0dGVHOwogICAgICAgIGIgPSAoYnVmZmVyW2kgKyAyXSAtIG1hdHRlQikgKiBrICsgbWF0dGVCOwogICAgICAgIGJ1ZmZlcltpXSA9IHIgPD0gMCA/IDAgOiByID49IDI1NSA/IDI1NSA6IHIgfCAwOwogICAgICAgIGJ1ZmZlcltpICsgMV0gPSBnIDw9IDAgPyAwIDogZyA+PSAyNTUgPyAyNTUgOiBnIHwgMDsKICAgICAgICBidWZmZXJbaSArIDJdID0gYiA8PSAwID8gMCA6IGIgPj0gMjU1ID8gMjU1IDogYiB8IDA7CiAgICAgIH0KICAgIH0sCgogICAgY3JlYXRlSW1hZ2VEYXRhOiBmdW5jdGlvbiBQREZJbWFnZV9jcmVhdGVJbWFnZURhdGEoZm9yY2VSR0JBKSB7CiAgICAgIHZhciBkcmF3V2lkdGggPSB0aGlzLmRyYXdXaWR0aDsKICAgICAgdmFyIGRyYXdIZWlnaHQgPSB0aGlzLmRyYXdIZWlnaHQ7CiAgICAgIHZhciBpbWdEYXRhID0geyAvLyBvdGhlciBmaWVsZHMgYXJlIGZpbGxlZCBpbiBiZWxvdwogICAgICAgIHdpZHRoOiBkcmF3V2lkdGgsCiAgICAgICAgaGVpZ2h0OiBkcmF3SGVpZ2h0CiAgICAgIH07CgogICAgICB2YXIgbnVtQ29tcHMgPSB0aGlzLm51bUNvbXBzOwogICAgICB2YXIgb3JpZ2luYWxXaWR0aCA9IHRoaXMud2lkdGg7CiAgICAgIHZhciBvcmlnaW5hbEhlaWdodCA9IHRoaXMuaGVpZ2h0OwogICAgICB2YXIgYnBjID0gdGhpcy5icGM7CgogICAgICAvLyBSb3dzIHN0YXJ0IGF0IGJ5dGUgYm91bmRhcnkuCiAgICAgIHZhciByb3dCeXRlcyA9IChvcmlnaW5hbFdpZHRoICogbnVtQ29tcHMgKiBicGMgKyA3KSA+PiAzOwogICAgICB2YXIgaW1nQXJyYXk7CgogICAgICBpZiAoIWZvcmNlUkdCQSkgewogICAgICAgIC8vIElmIGl0IGlzIGEgMS1iaXQtcGVyLXBpeGVsIGdyYXlzY2FsZSAoaS5lLiBibGFjay1hbmQtd2hpdGUpIGltYWdlCiAgICAgICAgLy8gd2l0aG91dCBhbnkgY29tcGxpY2F0aW9ucywgd2UgcGFzcyBhIHNhbWUtc2l6ZWQgY29weSB0byB0aGUgbWFpbgogICAgICAgIC8vIHRocmVhZCByYXRoZXIgdGhhbiBleHBhbmRpbmcgYnkgMzJ4IHRvIFJHQkEgZm9ybS4gVGhpcyBzYXZlcyAqbG90cyoKICAgICAgICAvLyBvZiBtZW1vcnkgZm9yIG1hbnkgc2Nhbm5lZCBkb2N1bWVudHMuIEl0J3MgYWxzbyBtdWNoIGZhc3Rlci4KICAgICAgICAvLwogICAgICAgIC8vIFNpbWlsYXJseSwgaWYgaXQgaXMgYSAyNC1iaXQtcGVyIHBpeGVsIFJHQiBpbWFnZSB3aXRob3V0IGFueQogICAgICAgIC8vIGNvbXBsaWNhdGlvbnMsIHdlIGF2b2lkIGV4cGFuZGluZyBieSAxLjMzM3ggdG8gUkdCQSBmb3JtLgogICAgICAgIHZhciBraW5kOwogICAgICAgIGlmICh0aGlzLmNvbG9yU3BhY2UubmFtZSA9PT0gJ0RldmljZUdyYXknICYmIGJwYyA9PT0gMSkgewogICAgICAgICAga2luZCA9IEltYWdlS2luZC5HUkFZU0NBTEVfMUJQUDsKICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY29sb3JTcGFjZS5uYW1lID09PSAnRGV2aWNlUkdCJyAmJiBicGMgPT09IDggJiYKICAgICAgICAgICAgICAgICAgICF0aGlzLm5lZWRzRGVjb2RlKSB7CiAgICAgICAgICBraW5kID0gSW1hZ2VLaW5kLlJHQl8yNEJQUDsKICAgICAgICB9CiAgICAgICAgaWYgKGtpbmQgJiYgIXRoaXMuc21hc2sgJiYgIXRoaXMubWFzayAmJgogICAgICAgICAgICBkcmF3V2lkdGggPT09IG9yaWdpbmFsV2lkdGggJiYgZHJhd0hlaWdodCA9PT0gb3JpZ2luYWxIZWlnaHQpIHsKICAgICAgICAgIGltZ0RhdGEua2luZCA9IGtpbmQ7CgogICAgICAgICAgaW1nQXJyYXkgPSB0aGlzLmdldEltYWdlQnl0ZXMob3JpZ2luYWxIZWlnaHQgKiByb3dCeXRlcyk7CiAgICAgICAgICAvLyBJZiBpbWdBcnJheSBjYW1lIGZyb20gYSBEZWNvZGVTdHJlYW0sIHdlJ3JlIHNhZmUgdG8gdHJhbnNmZXIgaXQKICAgICAgICAgIC8vIChhbmQgdGh1cyBuZXV0ZXIgaXQpIGJlY2F1c2UgaXQgd2lsbCBjb25zdGl0dXRlIHRoZSBlbnRpcmUKICAgICAgICAgIC8vIERlY29kZVN0cmVhbSdzIGRhdGEuICBCdXQgaWYgaXQgY2FtZSBmcm9tIGEgU3RyZWFtLCB3ZSBuZWVkIHRvCiAgICAgICAgICAvLyBjb3B5IGl0IGJlY2F1c2UgaXQnbGwgb25seSBiZSBhIHBvcnRpb24gb2YgdGhlIFN0cmVhbSdzIGRhdGEsIGFuZAogICAgICAgICAgLy8gdGhlIHJlc3Qgd2lsbCBiZSByZWFkIGxhdGVyIG9uLgogICAgICAgICAgaWYgKHRoaXMuaW1hZ2UgaW5zdGFuY2VvZiBEZWNvZGVTdHJlYW0pIHsKICAgICAgICAgICAgaW1nRGF0YS5kYXRhID0gaW1nQXJyYXk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB2YXIgbmV3QXJyYXkgPSBuZXcgVWludDhBcnJheShpbWdBcnJheS5sZW5ndGgpOwogICAgICAgICAgICBuZXdBcnJheS5zZXQoaW1nQXJyYXkpOwogICAgICAgICAgICBpbWdEYXRhLmRhdGEgPSBuZXdBcnJheTsKICAgICAgICAgIH0KICAgICAgICAgIGlmICh0aGlzLm5lZWRzRGVjb2RlKSB7CiAgICAgICAgICAgIC8vIEludmVydCB0aGUgYnVmZmVyICh3aGljaCBtdXN0IGJlIGdyYXlzY2FsZSBpZiB3ZSByZWFjaGVkIGhlcmUpLgogICAgICAgICAgICBhc3NlcnQoa2luZCA9PT0gSW1hZ2VLaW5kLkdSQVlTQ0FMRV8xQlBQKTsKICAgICAgICAgICAgdmFyIGJ1ZmZlciA9IGltZ0RhdGEuZGF0YTsKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGlpID0gYnVmZmVyLmxlbmd0aDsgaSA8IGlpOyBpKyspIHsKICAgICAgICAgICAgICBidWZmZXJbaV0gXj0gMHhmZjsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIGltZ0RhdGE7CiAgICAgICAgfQogICAgICAgIGlmICh0aGlzLmltYWdlIGluc3RhbmNlb2YgSnBlZ1N0cmVhbSAmJiAhdGhpcy5zbWFzayAmJiAhdGhpcy5tYXNrKSB7CiAgICAgICAgICBpbWdEYXRhLmtpbmQgPSBJbWFnZUtpbmQuUkdCXzI0QlBQOwogICAgICAgICAgaW1nRGF0YS5kYXRhID0gdGhpcy5nZXRJbWFnZUJ5dGVzKG9yaWdpbmFsSGVpZ2h0ICogcm93Qnl0ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhd1dpZHRoLCBkcmF3SGVpZ2h0LCB0cnVlKTsKICAgICAgICAgIHJldHVybiBpbWdEYXRhOwogICAgICAgIH0KICAgICAgfQoKICAgICAgaW1nQXJyYXkgPSB0aGlzLmdldEltYWdlQnl0ZXMob3JpZ2luYWxIZWlnaHQgKiByb3dCeXRlcyk7CiAgICAgIC8vIGltZ0FycmF5IGNhbiBiZSBpbmNvbXBsZXRlIChlLmcuIGFmdGVyIENDSVRUIGZheCBlbmNvZGluZykuCiAgICAgIHZhciBhY3R1YWxIZWlnaHQgPSAwIHwgKGltZ0FycmF5Lmxlbmd0aCAvIHJvd0J5dGVzICoKICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdIZWlnaHQgLyBvcmlnaW5hbEhlaWdodCk7CgogICAgICB2YXIgY29tcHMgPSB0aGlzLmdldENvbXBvbmVudHMoaW1nQXJyYXkpOwoKICAgICAgLy8gSWYgb3BhY2l0eSBkYXRhIGlzIHByZXNlbnQsIHVzZSBSR0JBXzMyQlBQIGZvcm0uIE90aGVyd2lzZSwgdXNlIHRoZQogICAgICAvLyBtb3JlIGNvbXBhY3QgUkdCXzI0QlBQIGZvcm0gaWYgYWxsb3dhYmxlLgogICAgICB2YXIgYWxwaGEwMSwgbWF5YmVVbmRvUHJlYmxlbmQ7CiAgICAgIGlmICghZm9yY2VSR0JBICYmICF0aGlzLnNtYXNrICYmICF0aGlzLm1hc2spIHsKICAgICAgICBpbWdEYXRhLmtpbmQgPSBJbWFnZUtpbmQuUkdCXzI0QlBQOwogICAgICAgIGltZ0RhdGEuZGF0YSA9IG5ldyBVaW50OEFycmF5KGRyYXdXaWR0aCAqIGRyYXdIZWlnaHQgKiAzKTsKICAgICAgICBhbHBoYTAxID0gMDsKICAgICAgICBtYXliZVVuZG9QcmVibGVuZCA9IGZhbHNlOwogICAgICB9IGVsc2UgewogICAgICAgIGltZ0RhdGEua2luZCA9IEltYWdlS2luZC5SR0JBXzMyQlBQOwogICAgICAgIGltZ0RhdGEuZGF0YSA9IG5ldyBVaW50OEFycmF5KGRyYXdXaWR0aCAqIGRyYXdIZWlnaHQgKiA0KTsKICAgICAgICBhbHBoYTAxID0gMTsKICAgICAgICBtYXliZVVuZG9QcmVibGVuZCA9IHRydWU7CgogICAgICAgIC8vIENvbG9yIGtleSBtYXNraW5nIChvcGFjaXR5KSBtdXN0IGJlIHBlcmZvcm1lZCBiZWZvcmUgZGVjb2RpbmcuCiAgICAgICAgdGhpcy5maWxsT3BhY2l0eShpbWdEYXRhLmRhdGEsIGRyYXdXaWR0aCwgZHJhd0hlaWdodCwgYWN0dWFsSGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgY29tcHMpOwogICAgICB9CgogICAgICBpZiAodGhpcy5uZWVkc0RlY29kZSkgewogICAgICAgIHRoaXMuZGVjb2RlQnVmZmVyKGNvbXBzKTsKICAgICAgfQogICAgICB0aGlzLmNvbG9yU3BhY2UuZmlsbFJnYihpbWdEYXRhLmRhdGEsIG9yaWdpbmFsV2lkdGgsIG9yaWdpbmFsSGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3V2lkdGgsIGRyYXdIZWlnaHQsIGFjdHVhbEhlaWdodCwgYnBjLCBjb21wcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGEwMSk7CiAgICAgIGlmIChtYXliZVVuZG9QcmVibGVuZCkgewogICAgICAgIHRoaXMudW5kb1ByZWJsZW5kKGltZ0RhdGEuZGF0YSwgZHJhd1dpZHRoLCBhY3R1YWxIZWlnaHQpOwogICAgICB9CgogICAgICByZXR1cm4gaW1nRGF0YTsKICAgIH0sCgogICAgZmlsbEdyYXlCdWZmZXI6IGZ1bmN0aW9uIFBERkltYWdlX2ZpbGxHcmF5QnVmZmVyKGJ1ZmZlcikgewogICAgICB2YXIgbnVtQ29tcHMgPSB0aGlzLm51bUNvbXBzOwogICAgICBpZiAobnVtQ29tcHMgIT09IDEpIHsKICAgICAgICBlcnJvcignUmVhZGluZyBncmF5IHNjYWxlIGZyb20gYSBjb2xvciBpbWFnZTogJyArIG51bUNvbXBzKTsKICAgICAgfQoKICAgICAgdmFyIHdpZHRoID0gdGhpcy53aWR0aDsKICAgICAgdmFyIGhlaWdodCA9IHRoaXMuaGVpZ2h0OwogICAgICB2YXIgYnBjID0gdGhpcy5icGM7CgogICAgICAvLyByb3dzIHN0YXJ0IGF0IGJ5dGUgYm91bmRhcnkKICAgICAgdmFyIHJvd0J5dGVzID0gKHdpZHRoICogbnVtQ29tcHMgKiBicGMgKyA3KSA+PiAzOwogICAgICB2YXIgaW1nQXJyYXkgPSB0aGlzLmdldEltYWdlQnl0ZXMoaGVpZ2h0ICogcm93Qnl0ZXMpOwoKICAgICAgdmFyIGNvbXBzID0gdGhpcy5nZXRDb21wb25lbnRzKGltZ0FycmF5KTsKICAgICAgdmFyIGksIGxlbmd0aDsKCiAgICAgIGlmIChicGMgPT09IDEpIHsKICAgICAgICAvLyBpbmxpbmUgZGVjb2RpbmcgKD0gaW52ZXJzaW9uKSBmb3IgMSBicGMgaW1hZ2VzCiAgICAgICAgbGVuZ3RoID0gd2lkdGggKiBoZWlnaHQ7CiAgICAgICAgaWYgKHRoaXMubmVlZHNEZWNvZGUpIHsKICAgICAgICAgIC8vIGludmVydCBhbmQgc2NhbGUgdG8gezAsIDI1NX0KICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICAgICBidWZmZXJbaV0gPSAoY29tcHNbaV0gLSAxKSAmIDI1NTsKICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgLy8gc2NhbGUgdG8gezAsIDI1NX0KICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICAgICBidWZmZXJbaV0gPSAoLWNvbXBzW2ldKSAmIDI1NTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICBpZiAodGhpcy5uZWVkc0RlY29kZSkgewogICAgICAgIHRoaXMuZGVjb2RlQnVmZmVyKGNvbXBzKTsKICAgICAgfQogICAgICBsZW5ndGggPSB3aWR0aCAqIGhlaWdodDsKICAgICAgLy8gd2UgYXJlbid0IHVzaW5nIGEgY29sb3JzcGFjZSBzbyB3ZSBuZWVkIHRvIHNjYWxlIHRoZSB2YWx1ZQogICAgICB2YXIgc2NhbGUgPSAyNTUgLyAoKDEgPDwgYnBjKSAtIDEpOwogICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICBidWZmZXJbaV0gPSAoc2NhbGUgKiBjb21wc1tpXSkgfCAwOwogICAgICB9CiAgICB9LAoKICAgIGdldEltYWdlQnl0ZXM6IGZ1bmN0aW9uIFBERkltYWdlX2dldEltYWdlQnl0ZXMobGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3V2lkdGgsIGRyYXdIZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlUkdCKSB7CiAgICAgIHRoaXMuaW1hZ2UucmVzZXQoKTsKICAgICAgdGhpcy5pbWFnZS5kcmF3V2lkdGggPSBkcmF3V2lkdGggfHwgdGhpcy53aWR0aDsKICAgICAgdGhpcy5pbWFnZS5kcmF3SGVpZ2h0ID0gZHJhd0hlaWdodCB8fCB0aGlzLmhlaWdodDsKICAgICAgdGhpcy5pbWFnZS5mb3JjZVJHQiA9ICEhZm9yY2VSR0I7CiAgICAgIHJldHVybiB0aGlzLmltYWdlLmdldEJ5dGVzKGxlbmd0aCk7CiAgICB9CiAgfTsKICByZXR1cm4gUERGSW1hZ2U7Cn0pKCk7CgoKLy8gVGhlIE1ldHJpY3Mgb2JqZWN0IGNvbnRhaW5zIGdseXBoIHdpZHRocyAoaW4gZ2x5cGggc3BhY2UgdW5pdHMpLgovLyBBcyBwZXIgUERGIHNwZWMsIGZvciBtb3N0IGZvbnRzIChUeXBlIDMgYmVpbmcgYW4gZXhjZXB0aW9uKSBhIGdseXBoCi8vIHNwYWNlIHVuaXQgY29ycmVzcG9uZHMgdG8gMS8xMDAwdGggb2YgdGV4dCBzcGFjZSB1bml0Lgp2YXIgTWV0cmljcyA9IHsKICAnQ291cmllcic6IDYwMCwKICAnQ291cmllci1Cb2xkJzogNjAwLAogICdDb3VyaWVyLUJvbGRPYmxpcXVlJzogNjAwLAogICdDb3VyaWVyLU9ibGlxdWUnOiA2MDAsCiAgJ0hlbHZldGljYScgOiB7CiAgICAnc3BhY2UnOiAyNzgsCiAgICAnZXhjbGFtJzogMjc4LAogICAgJ3F1b3RlZGJsJzogMzU1LAogICAgJ251bWJlcnNpZ24nOiA1NTYsCiAgICAnZG9sbGFyJzogNTU2LAogICAgJ3BlcmNlbnQnOiA4ODksCiAgICAnYW1wZXJzYW5kJzogNjY3LAogICAgJ3F1b3RlcmlnaHQnOiAyMjIsCiAgICAncGFyZW5sZWZ0JzogMzMzLAogICAgJ3BhcmVucmlnaHQnOiAzMzMsCiAgICAnYXN0ZXJpc2snOiAzODksCiAgICAncGx1cyc6IDU4NCwKICAgICdjb21tYSc6IDI3OCwKICAgICdoeXBoZW4nOiAzMzMsCiAgICAncGVyaW9kJzogMjc4LAogICAgJ3NsYXNoJzogMjc4LAogICAgJ3plcm8nOiA1NTYsCiAgICAnb25lJzogNTU2LAogICAgJ3R3byc6IDU1NiwKICAgICd0aHJlZSc6IDU1NiwKICAgICdmb3VyJzogNTU2LAogICAgJ2ZpdmUnOiA1NTYsCiAgICAnc2l4JzogNTU2LAogICAgJ3NldmVuJzogNTU2LAogICAgJ2VpZ2h0JzogNTU2LAogICAgJ25pbmUnOiA1NTYsCiAgICAnY29sb24nOiAyNzgsCiAgICAnc2VtaWNvbG9uJzogMjc4LAogICAgJ2xlc3MnOiA1ODQsCiAgICAnZXF1YWwnOiA1ODQsCiAgICAnZ3JlYXRlcic6IDU4NCwKICAgICdxdWVzdGlvbic6IDU1NiwKICAgICdhdCc6IDEwMTUsCiAgICAnQSc6IDY2NywKICAgICdCJzogNjY3LAogICAgJ0MnOiA3MjIsCiAgICAnRCc6IDcyMiwKICAgICdFJzogNjY3LAogICAgJ0YnOiA2MTEsCiAgICAnRyc6IDc3OCwKICAgICdIJzogNzIyLAogICAgJ0knOiAyNzgsCiAgICAnSic6IDUwMCwKICAgICdLJzogNjY3LAogICAgJ0wnOiA1NTYsCiAgICAnTSc6IDgzMywKICAgICdOJzogNzIyLAogICAgJ08nOiA3NzgsCiAgICAnUCc6IDY2NywKICAgICdRJzogNzc4LAogICAgJ1InOiA3MjIsCiAgICAnUyc6IDY2NywKICAgICdUJzogNjExLAogICAgJ1UnOiA3MjIsCiAgICAnVic6IDY2NywKICAgICdXJzogOTQ0LAogICAgJ1gnOiA2NjcsCiAgICAnWSc6IDY2NywKICAgICdaJzogNjExLAogICAgJ2JyYWNrZXRsZWZ0JzogMjc4LAogICAgJ2JhY2tzbGFzaCc6IDI3OCwKICAgICdicmFja2V0cmlnaHQnOiAyNzgsCiAgICAnYXNjaWljaXJjdW0nOiA0NjksCiAgICAndW5kZXJzY29yZSc6IDU1NiwKICAgICdxdW90ZWxlZnQnOiAyMjIsCiAgICAnYSc6IDU1NiwKICAgICdiJzogNTU2LAogICAgJ2MnOiA1MDAsCiAgICAnZCc6IDU1NiwKICAgICdlJzogNTU2LAogICAgJ2YnOiAyNzgsCiAgICAnZyc6IDU1NiwKICAgICdoJzogNTU2LAogICAgJ2knOiAyMjIsCiAgICAnaic6IDIyMiwKICAgICdrJzogNTAwLAogICAgJ2wnOiAyMjIsCiAgICAnbSc6IDgzMywKICAgICduJzogNTU2LAogICAgJ28nOiA1NTYsCiAgICAncCc6IDU1NiwKICAgICdxJzogNTU2LAogICAgJ3InOiAzMzMsCiAgICAncyc6IDUwMCwKICAgICd0JzogMjc4LAogICAgJ3UnOiA1NTYsCiAgICAndic6IDUwMCwKICAgICd3JzogNzIyLAogICAgJ3gnOiA1MDAsCiAgICAneSc6IDUwMCwKICAgICd6JzogNTAwLAogICAgJ2JyYWNlbGVmdCc6IDMzNCwKICAgICdiYXInOiAyNjAsCiAgICAnYnJhY2VyaWdodCc6IDMzNCwKICAgICdhc2NpaXRpbGRlJzogNTg0LAogICAgJ2V4Y2xhbWRvd24nOiAzMzMsCiAgICAnY2VudCc6IDU1NiwKICAgICdzdGVybGluZyc6IDU1NiwKICAgICdmcmFjdGlvbic6IDE2NywKICAgICd5ZW4nOiA1NTYsCiAgICAnZmxvcmluJzogNTU2LAogICAgJ3NlY3Rpb24nOiA1NTYsCiAgICAnY3VycmVuY3knOiA1NTYsCiAgICAncXVvdGVzaW5nbGUnOiAxOTEsCiAgICAncXVvdGVkYmxsZWZ0JzogMzMzLAogICAgJ2d1aWxsZW1vdGxlZnQnOiA1NTYsCiAgICAnZ3VpbHNpbmdsbGVmdCc6IDMzMywKICAgICdndWlsc2luZ2xyaWdodCc6IDMzMywKICAgICdmaSc6IDUwMCwKICAgICdmbCc6IDUwMCwKICAgICdlbmRhc2gnOiA1NTYsCiAgICAnZGFnZ2VyJzogNTU2LAogICAgJ2RhZ2dlcmRibCc6IDU1NiwKICAgICdwZXJpb2RjZW50ZXJlZCc6IDI3OCwKICAgICdwYXJhZ3JhcGgnOiA1MzcsCiAgICAnYnVsbGV0JzogMzUwLAogICAgJ3F1b3Rlc2luZ2xiYXNlJzogMjIyLAogICAgJ3F1b3RlZGJsYmFzZSc6IDMzMywKICAgICdxdW90ZWRibHJpZ2h0JzogMzMzLAogICAgJ2d1aWxsZW1vdHJpZ2h0JzogNTU2LAogICAgJ2VsbGlwc2lzJzogMTAwMCwKICAgICdwZXJ0aG91c2FuZCc6IDEwMDAsCiAgICAncXVlc3Rpb25kb3duJzogNjExLAogICAgJ2dyYXZlJzogMzMzLAogICAgJ2FjdXRlJzogMzMzLAogICAgJ2NpcmN1bWZsZXgnOiAzMzMsCiAgICAndGlsZGUnOiAzMzMsCiAgICAnbWFjcm9uJzogMzMzLAogICAgJ2JyZXZlJzogMzMzLAogICAgJ2RvdGFjY2VudCc6IDMzMywKICAgICdkaWVyZXNpcyc6IDMzMywKICAgICdyaW5nJzogMzMzLAogICAgJ2NlZGlsbGEnOiAzMzMsCiAgICAnaHVuZ2FydW1sYXV0JzogMzMzLAogICAgJ29nb25layc6IDMzMywKICAgICdjYXJvbic6IDMzMywKICAgICdlbWRhc2gnOiAxMDAwLAogICAgJ0FFJzogMTAwMCwKICAgICdvcmRmZW1pbmluZSc6IDM3MCwKICAgICdMc2xhc2gnOiA1NTYsCiAgICAnT3NsYXNoJzogNzc4LAogICAgJ09FJzogMTAwMCwKICAgICdvcmRtYXNjdWxpbmUnOiAzNjUsCiAgICAnYWUnOiA4ODksCiAgICAnZG90bGVzc2knOiAyNzgsCiAgICAnbHNsYXNoJzogMjIyLAogICAgJ29zbGFzaCc6IDYxMSwKICAgICdvZSc6IDk0NCwKICAgICdnZXJtYW5kYmxzJzogNjExLAogICAgJ0lkaWVyZXNpcyc6IDI3OCwKICAgICdlYWN1dGUnOiA1NTYsCiAgICAnYWJyZXZlJzogNTU2LAogICAgJ3VodW5nYXJ1bWxhdXQnOiA1NTYsCiAgICAnZWNhcm9uJzogNTU2LAogICAgJ1lkaWVyZXNpcyc6IDY2NywKICAgICdkaXZpZGUnOiA1ODQsCiAgICAnWWFjdXRlJzogNjY3LAogICAgJ0FjaXJjdW1mbGV4JzogNjY3LAogICAgJ2FhY3V0ZSc6IDU1NiwKICAgICdVY2lyY3VtZmxleCc6IDcyMiwKICAgICd5YWN1dGUnOiA1MDAsCiAgICAnc2NvbW1hYWNjZW50JzogNTAwLAogICAgJ2VjaXJjdW1mbGV4JzogNTU2LAogICAgJ1VyaW5nJzogNzIyLAogICAgJ1VkaWVyZXNpcyc6IDcyMiwKICAgICdhb2dvbmVrJzogNTU2LAogICAgJ1VhY3V0ZSc6IDcyMiwKICAgICd1b2dvbmVrJzogNTU2LAogICAgJ0VkaWVyZXNpcyc6IDY2NywKICAgICdEY3JvYXQnOiA3MjIsCiAgICAnY29tbWFhY2NlbnQnOiAyNTAsCiAgICAnY29weXJpZ2h0JzogNzM3LAogICAgJ0VtYWNyb24nOiA2NjcsCiAgICAnY2Nhcm9uJzogNTAwLAogICAgJ2FyaW5nJzogNTU2LAogICAgJ05jb21tYWFjY2VudCc6IDcyMiwKICAgICdsYWN1dGUnOiAyMjIsCiAgICAnYWdyYXZlJzogNTU2LAogICAgJ1Rjb21tYWFjY2VudCc6IDYxMSwKICAgICdDYWN1dGUnOiA3MjIsCiAgICAnYXRpbGRlJzogNTU2LAogICAgJ0Vkb3RhY2NlbnQnOiA2NjcsCiAgICAnc2Nhcm9uJzogNTAwLAogICAgJ3NjZWRpbGxhJzogNTAwLAogICAgJ2lhY3V0ZSc6IDI3OCwKICAgICdsb3plbmdlJzogNDcxLAogICAgJ1JjYXJvbic6IDcyMiwKICAgICdHY29tbWFhY2NlbnQnOiA3NzgsCiAgICAndWNpcmN1bWZsZXgnOiA1NTYsCiAgICAnYWNpcmN1bWZsZXgnOiA1NTYsCiAgICAnQW1hY3Jvbic6IDY2NywKICAgICdyY2Fyb24nOiAzMzMsCiAgICAnY2NlZGlsbGEnOiA1MDAsCiAgICAnWmRvdGFjY2VudCc6IDYxMSwKICAgICdUaG9ybic6IDY2NywKICAgICdPbWFjcm9uJzogNzc4LAogICAgJ1JhY3V0ZSc6IDcyMiwKICAgICdTYWN1dGUnOiA2NjcsCiAgICAnZGNhcm9uJzogNjQzLAogICAgJ1VtYWNyb24nOiA3MjIsCiAgICAndXJpbmcnOiA1NTYsCiAgICAndGhyZWVzdXBlcmlvcic6IDMzMywKICAgICdPZ3JhdmUnOiA3NzgsCiAgICAnQWdyYXZlJzogNjY3LAogICAgJ0FicmV2ZSc6IDY2NywKICAgICdtdWx0aXBseSc6IDU4NCwKICAgICd1YWN1dGUnOiA1NTYsCiAgICAnVGNhcm9uJzogNjExLAogICAgJ3BhcnRpYWxkaWZmJzogNDc2LAogICAgJ3lkaWVyZXNpcyc6IDUwMCwKICAgICdOYWN1dGUnOiA3MjIsCiAgICAnaWNpcmN1bWZsZXgnOiAyNzgsCiAgICAnRWNpcmN1bWZsZXgnOiA2NjcsCiAgICAnYWRpZXJlc2lzJzogNTU2LAogICAgJ2VkaWVyZXNpcyc6IDU1NiwKICAgICdjYWN1dGUnOiA1MDAsCiAgICAnbmFjdXRlJzogNTU2LAogICAgJ3VtYWNyb24nOiA1NTYsCiAgICAnTmNhcm9uJzogNzIyLAogICAgJ0lhY3V0ZSc6IDI3OCwKICAgICdwbHVzbWludXMnOiA1ODQsCiAgICAnYnJva2VuYmFyJzogMjYwLAogICAgJ3JlZ2lzdGVyZWQnOiA3MzcsCiAgICAnR2JyZXZlJzogNzc4LAogICAgJ0lkb3RhY2NlbnQnOiAyNzgsCiAgICAnc3VtbWF0aW9uJzogNjAwLAogICAgJ0VncmF2ZSc6IDY2NywKICAgICdyYWN1dGUnOiAzMzMsCiAgICAnb21hY3Jvbic6IDU1NiwKICAgICdaYWN1dGUnOiA2MTEsCiAgICAnWmNhcm9uJzogNjExLAogICAgJ2dyZWF0ZXJlcXVhbCc6IDU0OSwKICAgICdFdGgnOiA3MjIsCiAgICAnQ2NlZGlsbGEnOiA3MjIsCiAgICAnbGNvbW1hYWNjZW50JzogMjIyLAogICAgJ3RjYXJvbic6IDMxNywKICAgICdlb2dvbmVrJzogNTU2LAogICAgJ1VvZ29uZWsnOiA3MjIsCiAgICAnQWFjdXRlJzogNjY3LAogICAgJ0FkaWVyZXNpcyc6IDY2NywKICAgICdlZ3JhdmUnOiA1NTYsCiAgICAnemFjdXRlJzogNTAwLAogICAgJ2lvZ29uZWsnOiAyMjIsCiAgICAnT2FjdXRlJzogNzc4LAogICAgJ29hY3V0ZSc6IDU1NiwKICAgICdhbWFjcm9uJzogNTU2LAogICAgJ3NhY3V0ZSc6IDUwMCwKICAgICdpZGllcmVzaXMnOiAyNzgsCiAgICAnT2NpcmN1bWZsZXgnOiA3NzgsCiAgICAnVWdyYXZlJzogNzIyLAogICAgJ0RlbHRhJzogNjEyLAogICAgJ3Rob3JuJzogNTU2LAogICAgJ3R3b3N1cGVyaW9yJzogMzMzLAogICAgJ09kaWVyZXNpcyc6IDc3OCwKICAgICdtdSc6IDU1NiwKICAgICdpZ3JhdmUnOiAyNzgsCiAgICAnb2h1bmdhcnVtbGF1dCc6IDU1NiwKICAgICdFb2dvbmVrJzogNjY3LAogICAgJ2Rjcm9hdCc6IDU1NiwKICAgICd0aHJlZXF1YXJ0ZXJzJzogODM0LAogICAgJ1NjZWRpbGxhJzogNjY3LAogICAgJ2xjYXJvbic6IDI5OSwKICAgICdLY29tbWFhY2NlbnQnOiA2NjcsCiAgICAnTGFjdXRlJzogNTU2LAogICAgJ3RyYWRlbWFyayc6IDEwMDAsCiAgICAnZWRvdGFjY2VudCc6IDU1NiwKICAgICdJZ3JhdmUnOiAyNzgsCiAgICAnSW1hY3Jvbic6IDI3OCwKICAgICdMY2Fyb24nOiA1NTYsCiAgICAnb25laGFsZic6IDgzNCwKICAgICdsZXNzZXF1YWwnOiA1NDksCiAgICAnb2NpcmN1bWZsZXgnOiA1NTYsCiAgICAnbnRpbGRlJzogNTU2LAogICAgJ1VodW5nYXJ1bWxhdXQnOiA3MjIsCiAgICAnRWFjdXRlJzogNjY3LAogICAgJ2VtYWNyb24nOiA1NTYsCiAgICAnZ2JyZXZlJzogNTU2LAogICAgJ29uZXF1YXJ0ZXInOiA4MzQsCiAgICAnU2Nhcm9uJzogNjY3LAogICAgJ1Njb21tYWFjY2VudCc6IDY2NywKICAgICdPaHVuZ2FydW1sYXV0JzogNzc4LAogICAgJ2RlZ3JlZSc6IDQwMCwKICAgICdvZ3JhdmUnOiA1NTYsCiAgICAnQ2Nhcm9uJzogNzIyLAogICAgJ3VncmF2ZSc6IDU1NiwKICAgICdyYWRpY2FsJzogNDUzLAogICAgJ0RjYXJvbic6IDcyMiwKICAgICdyY29tbWFhY2NlbnQnOiAzMzMsCiAgICAnTnRpbGRlJzogNzIyLAogICAgJ290aWxkZSc6IDU1NiwKICAgICdSY29tbWFhY2NlbnQnOiA3MjIsCiAgICAnTGNvbW1hYWNjZW50JzogNTU2LAogICAgJ0F0aWxkZSc6IDY2NywKICAgICdBb2dvbmVrJzogNjY3LAogICAgJ0FyaW5nJzogNjY3LAogICAgJ090aWxkZSc6IDc3OCwKICAgICd6ZG90YWNjZW50JzogNTAwLAogICAgJ0VjYXJvbic6IDY2NywKICAgICdJb2dvbmVrJzogMjc4LAogICAgJ2tjb21tYWFjY2VudCc6IDUwMCwKICAgICdtaW51cyc6IDU4NCwKICAgICdJY2lyY3VtZmxleCc6IDI3OCwKICAgICduY2Fyb24nOiA1NTYsCiAgICAndGNvbW1hYWNjZW50JzogMjc4LAogICAgJ2xvZ2ljYWxub3QnOiA1ODQsCiAgICAnb2RpZXJlc2lzJzogNTU2LAogICAgJ3VkaWVyZXNpcyc6IDU1NiwKICAgICdub3RlcXVhbCc6IDU0OSwKICAgICdnY29tbWFhY2NlbnQnOiA1NTYsCiAgICAnZXRoJzogNTU2LAogICAgJ3pjYXJvbic6IDUwMCwKICAgICduY29tbWFhY2NlbnQnOiA1NTYsCiAgICAnb25lc3VwZXJpb3InOiAzMzMsCiAgICAnaW1hY3Jvbic6IDI3OCwKICAgICdFdXJvJzogNTU2CiAgfSwKICAnSGVsdmV0aWNhLUJvbGQnOiB7CiAgICAnc3BhY2UnOiAyNzgsCiAgICAnZXhjbGFtJzogMzMzLAogICAgJ3F1b3RlZGJsJzogNDc0LAogICAgJ251bWJlcnNpZ24nOiA1NTYsCiAgICAnZG9sbGFyJzogNTU2LAogICAgJ3BlcmNlbnQnOiA4ODksCiAgICAnYW1wZXJzYW5kJzogNzIyLAogICAgJ3F1b3RlcmlnaHQnOiAyNzgsCiAgICAncGFyZW5sZWZ0JzogMzMzLAogICAgJ3BhcmVucmlnaHQnOiAzMzMsCiAgICAnYXN0ZXJpc2snOiAzODksCiAgICAncGx1cyc6IDU4NCwKICAgICdjb21tYSc6IDI3OCwKICAgICdoeXBoZW4nOiAzMzMsCiAgICAncGVyaW9kJzogMjc4LAogICAgJ3NsYXNoJzogMjc4LAogICAgJ3plcm8nOiA1NTYsCiAgICAnb25lJzogNTU2LAogICAgJ3R3byc6IDU1NiwKICAgICd0aHJlZSc6IDU1NiwKICAgICdmb3VyJzogNTU2LAogICAgJ2ZpdmUnOiA1NTYsCiAgICAnc2l4JzogNTU2LAogICAgJ3NldmVuJzogNTU2LAogICAgJ2VpZ2h0JzogNTU2LAogICAgJ25pbmUnOiA1NTYsCiAgICAnY29sb24nOiAzMzMsCiAgICAnc2VtaWNvbG9uJzogMzMzLAogICAgJ2xlc3MnOiA1ODQsCiAgICAnZXF1YWwnOiA1ODQsCiAgICAnZ3JlYXRlcic6IDU4NCwKICAgICdxdWVzdGlvbic6IDYxMSwKICAgICdhdCc6IDk3NSwKICAgICdBJzogNzIyLAogICAgJ0InOiA3MjIsCiAgICAnQyc6IDcyMiwKICAgICdEJzogNzIyLAogICAgJ0UnOiA2NjcsCiAgICAnRic6IDYxMSwKICAgICdHJzogNzc4LAogICAgJ0gnOiA3MjIsCiAgICAnSSc6IDI3OCwKICAgICdKJzogNTU2LAogICAgJ0snOiA3MjIsCiAgICAnTCc6IDYxMSwKICAgICdNJzogODMzLAogICAgJ04nOiA3MjIsCiAgICAnTyc6IDc3OCwKICAgICdQJzogNjY3LAogICAgJ1EnOiA3NzgsCiAgICAnUic6IDcyMiwKICAgICdTJzogNjY3LAogICAgJ1QnOiA2MTEsCiAgICAnVSc6IDcyMiwKICAgICdWJzogNjY3LAogICAgJ1cnOiA5NDQsCiAgICAnWCc6IDY2NywKICAgICdZJzogNjY3LAogICAgJ1onOiA2MTEsCiAgICAnYnJhY2tldGxlZnQnOiAzMzMsCiAgICAnYmFja3NsYXNoJzogMjc4LAogICAgJ2JyYWNrZXRyaWdodCc6IDMzMywKICAgICdhc2NpaWNpcmN1bSc6IDU4NCwKICAgICd1bmRlcnNjb3JlJzogNTU2LAogICAgJ3F1b3RlbGVmdCc6IDI3OCwKICAgICdhJzogNTU2LAogICAgJ2InOiA2MTEsCiAgICAnYyc6IDU1NiwKICAgICdkJzogNjExLAogICAgJ2UnOiA1NTYsCiAgICAnZic6IDMzMywKICAgICdnJzogNjExLAogICAgJ2gnOiA2MTEsCiAgICAnaSc6IDI3OCwKICAgICdqJzogMjc4LAogICAgJ2snOiA1NTYsCiAgICAnbCc6IDI3OCwKICAgICdtJzogODg5LAogICAgJ24nOiA2MTEsCiAgICAnbyc6IDYxMSwKICAgICdwJzogNjExLAogICAgJ3EnOiA2MTEsCiAgICAncic6IDM4OSwKICAgICdzJzogNTU2LAogICAgJ3QnOiAzMzMsCiAgICAndSc6IDYxMSwKICAgICd2JzogNTU2LAogICAgJ3cnOiA3NzgsCiAgICAneCc6IDU1NiwKICAgICd5JzogNTU2LAogICAgJ3onOiA1MDAsCiAgICAnYnJhY2VsZWZ0JzogMzg5LAogICAgJ2Jhcic6IDI4MCwKICAgICdicmFjZXJpZ2h0JzogMzg5LAogICAgJ2FzY2lpdGlsZGUnOiA1ODQsCiAgICAnZXhjbGFtZG93bic6IDMzMywKICAgICdjZW50JzogNTU2LAogICAgJ3N0ZXJsaW5nJzogNTU2LAogICAgJ2ZyYWN0aW9uJzogMTY3LAogICAgJ3llbic6IDU1NiwKICAgICdmbG9yaW4nOiA1NTYsCiAgICAnc2VjdGlvbic6IDU1NiwKICAgICdjdXJyZW5jeSc6IDU1NiwKICAgICdxdW90ZXNpbmdsZSc6IDIzOCwKICAgICdxdW90ZWRibGxlZnQnOiA1MDAsCiAgICAnZ3VpbGxlbW90bGVmdCc6IDU1NiwKICAgICdndWlsc2luZ2xsZWZ0JzogMzMzLAogICAgJ2d1aWxzaW5nbHJpZ2h0JzogMzMzLAogICAgJ2ZpJzogNjExLAogICAgJ2ZsJzogNjExLAogICAgJ2VuZGFzaCc6IDU1NiwKICAgICdkYWdnZXInOiA1NTYsCiAgICAnZGFnZ2VyZGJsJzogNTU2LAogICAgJ3BlcmlvZGNlbnRlcmVkJzogMjc4LAogICAgJ3BhcmFncmFwaCc6IDU1NiwKICAgICdidWxsZXQnOiAzNTAsCiAgICAncXVvdGVzaW5nbGJhc2UnOiAyNzgsCiAgICAncXVvdGVkYmxiYXNlJzogNTAwLAogICAgJ3F1b3RlZGJscmlnaHQnOiA1MDAsCiAgICAnZ3VpbGxlbW90cmlnaHQnOiA1NTYsCiAgICAnZWxsaXBzaXMnOiAxMDAwLAogICAgJ3BlcnRob3VzYW5kJzogMTAwMCwKICAgICdxdWVzdGlvbmRvd24nOiA2MTEsCiAgICAnZ3JhdmUnOiAzMzMsCiAgICAnYWN1dGUnOiAzMzMsCiAgICAnY2lyY3VtZmxleCc6IDMzMywKICAgICd0aWxkZSc6IDMzMywKICAgICdtYWNyb24nOiAzMzMsCiAgICAnYnJldmUnOiAzMzMsCiAgICAnZG90YWNjZW50JzogMzMzLAogICAgJ2RpZXJlc2lzJzogMzMzLAogICAgJ3JpbmcnOiAzMzMsCiAgICAnY2VkaWxsYSc6IDMzMywKICAgICdodW5nYXJ1bWxhdXQnOiAzMzMsCiAgICAnb2dvbmVrJzogMzMzLAogICAgJ2Nhcm9uJzogMzMzLAogICAgJ2VtZGFzaCc6IDEwMDAsCiAgICAnQUUnOiAxMDAwLAogICAgJ29yZGZlbWluaW5lJzogMzcwLAogICAgJ0xzbGFzaCc6IDYxMSwKICAgICdPc2xhc2gnOiA3NzgsCiAgICAnT0UnOiAxMDAwLAogICAgJ29yZG1hc2N1bGluZSc6IDM2NSwKICAgICdhZSc6IDg4OSwKICAgICdkb3RsZXNzaSc6IDI3OCwKICAgICdsc2xhc2gnOiAyNzgsCiAgICAnb3NsYXNoJzogNjExLAogICAgJ29lJzogOTQ0LAogICAgJ2dlcm1hbmRibHMnOiA2MTEsCiAgICAnSWRpZXJlc2lzJzogMjc4LAogICAgJ2VhY3V0ZSc6IDU1NiwKICAgICdhYnJldmUnOiA1NTYsCiAgICAndWh1bmdhcnVtbGF1dCc6IDYxMSwKICAgICdlY2Fyb24nOiA1NTYsCiAgICAnWWRpZXJlc2lzJzogNjY3LAogICAgJ2RpdmlkZSc6IDU4NCwKICAgICdZYWN1dGUnOiA2NjcsCiAgICAnQWNpcmN1bWZsZXgnOiA3MjIsCiAgICAnYWFjdXRlJzogNTU2LAogICAgJ1VjaXJjdW1mbGV4JzogNzIyLAogICAgJ3lhY3V0ZSc6IDU1NiwKICAgICdzY29tbWFhY2NlbnQnOiA1NTYsCiAgICAnZWNpcmN1bWZsZXgnOiA1NTYsCiAgICAnVXJpbmcnOiA3MjIsCiAgICAnVWRpZXJlc2lzJzogNzIyLAogICAgJ2FvZ29uZWsnOiA1NTYsCiAgICAnVWFjdXRlJzogNzIyLAogICAgJ3VvZ29uZWsnOiA2MTEsCiAgICAnRWRpZXJlc2lzJzogNjY3LAogICAgJ0Rjcm9hdCc6IDcyMiwKICAgICdjb21tYWFjY2VudCc6IDI1MCwKICAgICdjb3B5cmlnaHQnOiA3MzcsCiAgICAnRW1hY3Jvbic6IDY2NywKICAgICdjY2Fyb24nOiA1NTYsCiAgICAnYXJpbmcnOiA1NTYsCiAgICAnTmNvbW1hYWNjZW50JzogNzIyLAogICAgJ2xhY3V0ZSc6IDI3OCwKICAgICdhZ3JhdmUnOiA1NTYsCiAgICAnVGNvbW1hYWNjZW50JzogNjExLAogICAgJ0NhY3V0ZSc6IDcyMiwKICAgICdhdGlsZGUnOiA1NTYsCiAgICAnRWRvdGFjY2VudCc6IDY2NywKICAgICdzY2Fyb24nOiA1NTYsCiAgICAnc2NlZGlsbGEnOiA1NTYsCiAgICAnaWFjdXRlJzogMjc4LAogICAgJ2xvemVuZ2UnOiA0OTQsCiAgICAnUmNhcm9uJzogNzIyLAogICAgJ0djb21tYWFjY2VudCc6IDc3OCwKICAgICd1Y2lyY3VtZmxleCc6IDYxMSwKICAgICdhY2lyY3VtZmxleCc6IDU1NiwKICAgICdBbWFjcm9uJzogNzIyLAogICAgJ3JjYXJvbic6IDM4OSwKICAgICdjY2VkaWxsYSc6IDU1NiwKICAgICdaZG90YWNjZW50JzogNjExLAogICAgJ1Rob3JuJzogNjY3LAogICAgJ09tYWNyb24nOiA3NzgsCiAgICAnUmFjdXRlJzogNzIyLAogICAgJ1NhY3V0ZSc6IDY2NywKICAgICdkY2Fyb24nOiA3NDMsCiAgICAnVW1hY3Jvbic6IDcyMiwKICAgICd1cmluZyc6IDYxMSwKICAgICd0aHJlZXN1cGVyaW9yJzogMzMzLAogICAgJ09ncmF2ZSc6IDc3OCwKICAgICdBZ3JhdmUnOiA3MjIsCiAgICAnQWJyZXZlJzogNzIyLAogICAgJ211bHRpcGx5JzogNTg0LAogICAgJ3VhY3V0ZSc6IDYxMSwKICAgICdUY2Fyb24nOiA2MTEsCiAgICAncGFydGlhbGRpZmYnOiA0OTQsCiAgICAneWRpZXJlc2lzJzogNTU2LAogICAgJ05hY3V0ZSc6IDcyMiwKICAgICdpY2lyY3VtZmxleCc6IDI3OCwKICAgICdFY2lyY3VtZmxleCc6IDY2NywKICAgICdhZGllcmVzaXMnOiA1NTYsCiAgICAnZWRpZXJlc2lzJzogNTU2LAogICAgJ2NhY3V0ZSc6IDU1NiwKICAgICduYWN1dGUnOiA2MTEsCiAgICAndW1hY3Jvbic6IDYxMSwKICAgICdOY2Fyb24nOiA3MjIsCiAgICAnSWFjdXRlJzogMjc4LAogICAgJ3BsdXNtaW51cyc6IDU4NCwKICAgICdicm9rZW5iYXInOiAyODAsCiAgICAncmVnaXN0ZXJlZCc6IDczNywKICAgICdHYnJldmUnOiA3NzgsCiAgICAnSWRvdGFjY2VudCc6IDI3OCwKICAgICdzdW1tYXRpb24nOiA2MDAsCiAgICAnRWdyYXZlJzogNjY3LAogICAgJ3JhY3V0ZSc6IDM4OSwKICAgICdvbWFjcm9uJzogNjExLAogICAgJ1phY3V0ZSc6IDYxMSwKICAgICdaY2Fyb24nOiA2MTEsCiAgICAnZ3JlYXRlcmVxdWFsJzogNTQ5LAogICAgJ0V0aCc6IDcyMiwKICAgICdDY2VkaWxsYSc6IDcyMiwKICAgICdsY29tbWFhY2NlbnQnOiAyNzgsCiAgICAndGNhcm9uJzogMzg5LAogICAgJ2VvZ29uZWsnOiA1NTYsCiAgICAnVW9nb25layc6IDcyMiwKICAgICdBYWN1dGUnOiA3MjIsCiAgICAnQWRpZXJlc2lzJzogNzIyLAogICAgJ2VncmF2ZSc6IDU1NiwKICAgICd6YWN1dGUnOiA1MDAsCiAgICAnaW9nb25layc6IDI3OCwKICAgICdPYWN1dGUnOiA3NzgsCiAgICAnb2FjdXRlJzogNjExLAogICAgJ2FtYWNyb24nOiA1NTYsCiAgICAnc2FjdXRlJzogNTU2LAogICAgJ2lkaWVyZXNpcyc6IDI3OCwKICAgICdPY2lyY3VtZmxleCc6IDc3OCwKICAgICdVZ3JhdmUnOiA3MjIsCiAgICAnRGVsdGEnOiA2MTIsCiAgICAndGhvcm4nOiA2MTEsCiAgICAndHdvc3VwZXJpb3InOiAzMzMsCiAgICAnT2RpZXJlc2lzJzogNzc4LAogICAgJ211JzogNjExLAogICAgJ2lncmF2ZSc6IDI3OCwKICAgICdvaHVuZ2FydW1sYXV0JzogNjExLAogICAgJ0VvZ29uZWsnOiA2NjcsCiAgICAnZGNyb2F0JzogNjExLAogICAgJ3RocmVlcXVhcnRlcnMnOiA4MzQsCiAgICAnU2NlZGlsbGEnOiA2NjcsCiAgICAnbGNhcm9uJzogNDAwLAogICAgJ0tjb21tYWFjY2VudCc6IDcyMiwKICAgICdMYWN1dGUnOiA2MTEsCiAgICAndHJhZGVtYXJrJzogMTAwMCwKICAgICdlZG90YWNjZW50JzogNTU2LAogICAgJ0lncmF2ZSc6IDI3OCwKICAgICdJbWFjcm9uJzogMjc4LAogICAgJ0xjYXJvbic6IDYxMSwKICAgICdvbmVoYWxmJzogODM0LAogICAgJ2xlc3NlcXVhbCc6IDU0OSwKICAgICdvY2lyY3VtZmxleCc6IDYxMSwKICAgICdudGlsZGUnOiA2MTEsCiAgICAnVWh1bmdhcnVtbGF1dCc6IDcyMiwKICAgICdFYWN1dGUnOiA2NjcsCiAgICAnZW1hY3Jvbic6IDU1NiwKICAgICdnYnJldmUnOiA2MTEsCiAgICAnb25lcXVhcnRlcic6IDgzNCwKICAgICdTY2Fyb24nOiA2NjcsCiAgICAnU2NvbW1hYWNjZW50JzogNjY3LAogICAgJ09odW5nYXJ1bWxhdXQnOiA3NzgsCiAgICAnZGVncmVlJzogNDAwLAogICAgJ29ncmF2ZSc6IDYxMSwKICAgICdDY2Fyb24nOiA3MjIsCiAgICAndWdyYXZlJzogNjExLAogICAgJ3JhZGljYWwnOiA1NDksCiAgICAnRGNhcm9uJzogNzIyLAogICAgJ3Jjb21tYWFjY2VudCc6IDM4OSwKICAgICdOdGlsZGUnOiA3MjIsCiAgICAnb3RpbGRlJzogNjExLAogICAgJ1Jjb21tYWFjY2VudCc6IDcyMiwKICAgICdMY29tbWFhY2NlbnQnOiA2MTEsCiAgICAnQXRpbGRlJzogNzIyLAogICAgJ0FvZ29uZWsnOiA3MjIsCiAgICAnQXJpbmcnOiA3MjIsCiAgICAnT3RpbGRlJzogNzc4LAogICAgJ3pkb3RhY2NlbnQnOiA1MDAsCiAgICAnRWNhcm9uJzogNjY3LAogICAgJ0lvZ29uZWsnOiAyNzgsCiAgICAna2NvbW1hYWNjZW50JzogNTU2LAogICAgJ21pbnVzJzogNTg0LAogICAgJ0ljaXJjdW1mbGV4JzogMjc4LAogICAgJ25jYXJvbic6IDYxMSwKICAgICd0Y29tbWFhY2NlbnQnOiAzMzMsCiAgICAnbG9naWNhbG5vdCc6IDU4NCwKICAgICdvZGllcmVzaXMnOiA2MTEsCiAgICAndWRpZXJlc2lzJzogNjExLAogICAgJ25vdGVxdWFsJzogNTQ5LAogICAgJ2djb21tYWFjY2VudCc6IDYxMSwKICAgICdldGgnOiA2MTEsCiAgICAnemNhcm9uJzogNTAwLAogICAgJ25jb21tYWFjY2VudCc6IDYxMSwKICAgICdvbmVzdXBlcmlvcic6IDMzMywKICAgICdpbWFjcm9uJzogMjc4LAogICAgJ0V1cm8nOiA1NTYKICB9LAogICdIZWx2ZXRpY2EtQm9sZE9ibGlxdWUnOiB7CiAgICAnc3BhY2UnOiAyNzgsCiAgICAnZXhjbGFtJzogMzMzLAogICAgJ3F1b3RlZGJsJzogNDc0LAogICAgJ251bWJlcnNpZ24nOiA1NTYsCiAgICAnZG9sbGFyJzogNTU2LAogICAgJ3BlcmNlbnQnOiA4ODksCiAgICAnYW1wZXJzYW5kJzogNzIyLAogICAgJ3F1b3RlcmlnaHQnOiAyNzgsCiAgICAncGFyZW5sZWZ0JzogMzMzLAogICAgJ3BhcmVucmlnaHQnOiAzMzMsCiAgICAnYXN0ZXJpc2snOiAzODksCiAgICAncGx1cyc6IDU4NCwKICAgICdjb21tYSc6IDI3OCwKICAgICdoeXBoZW4nOiAzMzMsCiAgICAncGVyaW9kJzogMjc4LAogICAgJ3NsYXNoJzogMjc4LAogICAgJ3plcm8nOiA1NTYsCiAgICAnb25lJzogNTU2LAogICAgJ3R3byc6IDU1NiwKICAgICd0aHJlZSc6IDU1NiwKICAgICdmb3VyJzogNTU2LAogICAgJ2ZpdmUnOiA1NTYsCiAgICAnc2l4JzogNTU2LAogICAgJ3NldmVuJzogNTU2LAogICAgJ2VpZ2h0JzogNTU2LAogICAgJ25pbmUnOiA1NTYsCiAgICAnY29sb24nOiAzMzMsCiAgICAnc2VtaWNvbG9uJzogMzMzLAogICAgJ2xlc3MnOiA1ODQsCiAgICAnZXF1YWwnOiA1ODQsCiAgICAnZ3JlYXRlcic6IDU4NCwKICAgICdxdWVzdGlvbic6IDYxMSwKICAgICdhdCc6IDk3NSwKICAgICdBJzogNzIyLAogICAgJ0InOiA3MjIsCiAgICAnQyc6IDcyMiwKICAgICdEJzogNzIyLAogICAgJ0UnOiA2NjcsCiAgICAnRic6IDYxMSwKICAgICdHJzogNzc4LAogICAgJ0gnOiA3MjIsCiAgICAnSSc6IDI3OCwKICAgICdKJzogNTU2LAogICAgJ0snOiA3MjIsCiAgICAnTCc6IDYxMSwKICAgICdNJzogODMzLAogICAgJ04nOiA3MjIsCiAgICAnTyc6IDc3OCwKICAgICdQJzogNjY3LAogICAgJ1EnOiA3NzgsCiAgICAnUic6IDcyMiwKICAgICdTJzogNjY3LAogICAgJ1QnOiA2MTEsCiAgICAnVSc6IDcyMiwKICAgICdWJzogNjY3LAogICAgJ1cnOiA5NDQsCiAgICAnWCc6IDY2NywKICAgICdZJzogNjY3LAogICAgJ1onOiA2MTEsCiAgICAnYnJhY2tldGxlZnQnOiAzMzMsCiAgICAnYmFja3NsYXNoJzogMjc4LAogICAgJ2JyYWNrZXRyaWdodCc6IDMzMywKICAgICdhc2NpaWNpcmN1bSc6IDU4NCwKICAgICd1bmRlcnNjb3JlJzogNTU2LAogICAgJ3F1b3RlbGVmdCc6IDI3OCwKICAgICdhJzogNTU2LAogICAgJ2InOiA2MTEsCiAgICAnYyc6IDU1NiwKICAgICdkJzogNjExLAogICAgJ2UnOiA1NTYsCiAgICAnZic6IDMzMywKICAgICdnJzogNjExLAogICAgJ2gnOiA2MTEsCiAgICAnaSc6IDI3OCwKICAgICdqJzogMjc4LAogICAgJ2snOiA1NTYsCiAgICAnbCc6IDI3OCwKICAgICdtJzogODg5LAogICAgJ24nOiA2MTEsCiAgICAnbyc6IDYxMSwKICAgICdwJzogNjExLAogICAgJ3EnOiA2MTEsCiAgICAncic6IDM4OSwKICAgICdzJzogNTU2LAogICAgJ3QnOiAzMzMsCiAgICAndSc6IDYxMSwKICAgICd2JzogNTU2LAogICAgJ3cnOiA3NzgsCiAgICAneCc6IDU1NiwKICAgICd5JzogNTU2LAogICAgJ3onOiA1MDAsCiAgICAnYnJhY2VsZWZ0JzogMzg5LAogICAgJ2Jhcic6IDI4MCwKICAgICdicmFjZXJpZ2h0JzogMzg5LAogICAgJ2FzY2lpdGlsZGUnOiA1ODQsCiAgICAnZXhjbGFtZG93bic6IDMzMywKICAgICdjZW50JzogNTU2LAogICAgJ3N0ZXJsaW5nJzogNTU2LAogICAgJ2ZyYWN0aW9uJzogMTY3LAogICAgJ3llbic6IDU1NiwKICAgICdmbG9yaW4nOiA1NTYsCiAgICAnc2VjdGlvbic6IDU1NiwKICAgICdjdXJyZW5jeSc6IDU1NiwKICAgICdxdW90ZXNpbmdsZSc6IDIzOCwKICAgICdxdW90ZWRibGxlZnQnOiA1MDAsCiAgICAnZ3VpbGxlbW90bGVmdCc6IDU1NiwKICAgICdndWlsc2luZ2xsZWZ0JzogMzMzLAogICAgJ2d1aWxzaW5nbHJpZ2h0JzogMzMzLAogICAgJ2ZpJzogNjExLAogICAgJ2ZsJzogNjExLAogICAgJ2VuZGFzaCc6IDU1NiwKICAgICdkYWdnZXInOiA1NTYsCiAgICAnZGFnZ2VyZGJsJzogNTU2LAogICAgJ3BlcmlvZGNlbnRlcmVkJzogMjc4LAogICAgJ3BhcmFncmFwaCc6IDU1NiwKICAgICdidWxsZXQnOiAzNTAsCiAgICAncXVvdGVzaW5nbGJhc2UnOiAyNzgsCiAgICAncXVvdGVkYmxiYXNlJzogNTAwLAogICAgJ3F1b3RlZGJscmlnaHQnOiA1MDAsCiAgICAnZ3VpbGxlbW90cmlnaHQnOiA1NTYsCiAgICAnZWxsaXBzaXMnOiAxMDAwLAogICAgJ3BlcnRob3VzYW5kJzogMTAwMCwKICAgICdxdWVzdGlvbmRvd24nOiA2MTEsCiAgICAnZ3JhdmUnOiAzMzMsCiAgICAnYWN1dGUnOiAzMzMsCiAgICAnY2lyY3VtZmxleCc6IDMzMywKICAgICd0aWxkZSc6IDMzMywKICAgICdtYWNyb24nOiAzMzMsCiAgICAnYnJldmUnOiAzMzMsCiAgICAnZG90YWNjZW50JzogMzMzLAogICAgJ2RpZXJlc2lzJzogMzMzLAogICAgJ3JpbmcnOiAzMzMsCiAgICAnY2VkaWxsYSc6IDMzMywKICAgICdodW5nYXJ1bWxhdXQnOiAzMzMsCiAgICAnb2dvbmVrJzogMzMzLAogICAgJ2Nhcm9uJzogMzMzLAogICAgJ2VtZGFzaCc6IDEwMDAsCiAgICAnQUUnOiAxMDAwLAogICAgJ29yZGZlbWluaW5lJzogMzcwLAogICAgJ0xzbGFzaCc6IDYxMSwKICAgICdPc2xhc2gnOiA3NzgsCiAgICAnT0UnOiAxMDAwLAogICAgJ29yZG1hc2N1bGluZSc6IDM2NSwKICAgICdhZSc6IDg4OSwKICAgICdkb3RsZXNzaSc6IDI3OCwKICAgICdsc2xhc2gnOiAyNzgsCiAgICAnb3NsYXNoJzogNjExLAogICAgJ29lJzogOTQ0LAogICAgJ2dlcm1hbmRibHMnOiA2MTEsCiAgICAnSWRpZXJlc2lzJzogMjc4LAogICAgJ2VhY3V0ZSc6IDU1NiwKICAgICdhYnJldmUnOiA1NTYsCiAgICAndWh1bmdhcnVtbGF1dCc6IDYxMSwKICAgICdlY2Fyb24nOiA1NTYsCiAgICAnWWRpZXJlc2lzJzogNjY3LAogICAgJ2RpdmlkZSc6IDU4NCwKICAgICdZYWN1dGUnOiA2NjcsCiAgICAnQWNpcmN1bWZsZXgnOiA3MjIsCiAgICAnYWFjdXRlJzogNTU2LAogICAgJ1VjaXJjdW1mbGV4JzogNzIyLAogICAgJ3lhY3V0ZSc6IDU1NiwKICAgICdzY29tbWFhY2NlbnQnOiA1NTYsCiAgICAnZWNpcmN1bWZsZXgnOiA1NTYsCiAgICAnVXJpbmcnOiA3MjIsCiAgICAnVWRpZXJlc2lzJzogNzIyLAogICAgJ2FvZ29uZWsnOiA1NTYsCiAgICAnVWFjdXRlJzogNzIyLAogICAgJ3VvZ29uZWsnOiA2MTEsCiAgICAnRWRpZXJlc2lzJzogNjY3LAogICAgJ0Rjcm9hdCc6IDcyMiwKICAgICdjb21tYWFjY2VudCc6IDI1MCwKICAgICdjb3B5cmlnaHQnOiA3MzcsCiAgICAnRW1hY3Jvbic6IDY2NywKICAgICdjY2Fyb24nOiA1NTYsCiAgICAnYXJpbmcnOiA1NTYsCiAgICAnTmNvbW1hYWNjZW50JzogNzIyLAogICAgJ2xhY3V0ZSc6IDI3OCwKICAgICdhZ3JhdmUnOiA1NTYsCiAgICAnVGNvbW1hYWNjZW50JzogNjExLAogICAgJ0NhY3V0ZSc6IDcyMiwKICAgICdhdGlsZGUnOiA1NTYsCiAgICAnRWRvdGFjY2VudCc6IDY2NywKICAgICdzY2Fyb24nOiA1NTYsCiAgICAnc2NlZGlsbGEnOiA1NTYsCiAgICAnaWFjdXRlJzogMjc4LAogICAgJ2xvemVuZ2UnOiA0OTQsCiAgICAnUmNhcm9uJzogNzIyLAogICAgJ0djb21tYWFjY2VudCc6IDc3OCwKICAgICd1Y2lyY3VtZmxleCc6IDYxMSwKICAgICdhY2lyY3VtZmxleCc6IDU1NiwKICAgICdBbWFjcm9uJzogNzIyLAogICAgJ3JjYXJvbic6IDM4OSwKICAgICdjY2VkaWxsYSc6IDU1NiwKICAgICdaZG90YWNjZW50JzogNjExLAogICAgJ1Rob3JuJzogNjY3LAogICAgJ09tYWNyb24nOiA3NzgsCiAgICAnUmFjdXRlJzogNzIyLAogICAgJ1NhY3V0ZSc6IDY2NywKICAgICdkY2Fyb24nOiA3NDMsCiAgICAnVW1hY3Jvbic6IDcyMiwKICAgICd1cmluZyc6IDYxMSwKICAgICd0aHJlZXN1cGVyaW9yJzogMzMzLAogICAgJ09ncmF2ZSc6IDc3OCwKICAgICdBZ3JhdmUnOiA3MjIsCiAgICAnQWJyZXZlJzogNzIyLAogICAgJ211bHRpcGx5JzogNTg0LAogICAgJ3VhY3V0ZSc6IDYxMSwKICAgICdUY2Fyb24nOiA2MTEsCiAgICAncGFydGlhbGRpZmYnOiA0OTQsCiAgICAneWRpZXJlc2lzJzogNTU2LAogICAgJ05hY3V0ZSc6IDcyMiwKICAgICdpY2lyY3VtZmxleCc6IDI3OCwKICAgICdFY2lyY3VtZmxleCc6IDY2NywKICAgICdhZGllcmVzaXMnOiA1NTYsCiAgICAnZWRpZXJlc2lzJzogNTU2LAogICAgJ2NhY3V0ZSc6IDU1NiwKICAgICduYWN1dGUnOiA2MTEsCiAgICAndW1hY3Jvbic6IDYxMSwKICAgICdOY2Fyb24nOiA3MjIsCiAgICAnSWFjdXRlJzogMjc4LAogICAgJ3BsdXNtaW51cyc6IDU4NCwKICAgICdicm9rZW5iYXInOiAyODAsCiAgICAncmVnaXN0ZXJlZCc6IDczNywKICAgICdHYnJldmUnOiA3NzgsCiAgICAnSWRvdGFjY2VudCc6IDI3OCwKICAgICdzdW1tYXRpb24nOiA2MDAsCiAgICAnRWdyYXZlJzogNjY3LAogICAgJ3JhY3V0ZSc6IDM4OSwKICAgICdvbWFjcm9uJzogNjExLAogICAgJ1phY3V0ZSc6IDYxMSwKICAgICdaY2Fyb24nOiA2MTEsCiAgICAnZ3JlYXRlcmVxdWFsJzogNTQ5LAogICAgJ0V0aCc6IDcyMiwKICAgICdDY2VkaWxsYSc6IDcyMiwKICAgICdsY29tbWFhY2NlbnQnOiAyNzgsCiAgICAndGNhcm9uJzogMzg5LAogICAgJ2VvZ29uZWsnOiA1NTYsCiAgICAnVW9nb25layc6IDcyMiwKICAgICdBYWN1dGUnOiA3MjIsCiAgICAnQWRpZXJlc2lzJzogNzIyLAogICAgJ2VncmF2ZSc6IDU1NiwKICAgICd6YWN1dGUnOiA1MDAsCiAgICAnaW9nb25layc6IDI3OCwKICAgICdPYWN1dGUnOiA3NzgsCiAgICAnb2FjdXRlJzogNjExLAogICAgJ2FtYWNyb24nOiA1NTYsCiAgICAnc2FjdXRlJzogNTU2LAogICAgJ2lkaWVyZXNpcyc6IDI3OCwKICAgICdPY2lyY3VtZmxleCc6IDc3OCwKICAgICdVZ3JhdmUnOiA3MjIsCiAgICAnRGVsdGEnOiA2MTIsCiAgICAndGhvcm4nOiA2MTEsCiAgICAndHdvc3VwZXJpb3InOiAzMzMsCiAgICAnT2RpZXJlc2lzJzogNzc4LAogICAgJ211JzogNjExLAogICAgJ2lncmF2ZSc6IDI3OCwKICAgICdvaHVuZ2FydW1sYXV0JzogNjExLAogICAgJ0VvZ29uZWsnOiA2NjcsCiAgICAnZGNyb2F0JzogNjExLAogICAgJ3RocmVlcXVhcnRlcnMnOiA4MzQsCiAgICAnU2NlZGlsbGEnOiA2NjcsCiAgICAnbGNhcm9uJzogNDAwLAogICAgJ0tjb21tYWFjY2VudCc6IDcyMiwKICAgICdMYWN1dGUnOiA2MTEsCiAgICAndHJhZGVtYXJrJzogMTAwMCwKICAgICdlZG90YWNjZW50JzogNTU2LAogICAgJ0lncmF2ZSc6IDI3OCwKICAgICdJbWFjcm9uJzogMjc4LAogICAgJ0xjYXJvbic6IDYxMSwKICAgICdvbmVoYWxmJzogODM0LAogICAgJ2xlc3NlcXVhbCc6IDU0OSwKICAgICdvY2lyY3VtZmxleCc6IDYxMSwKICAgICdudGlsZGUnOiA2MTEsCiAgICAnVWh1bmdhcnVtbGF1dCc6IDcyMiwKICAgICdFYWN1dGUnOiA2NjcsCiAgICAnZW1hY3Jvbic6IDU1NiwKICAgICdnYnJldmUnOiA2MTEsCiAgICAnb25lcXVhcnRlcic6IDgzNCwKICAgICdTY2Fyb24nOiA2NjcsCiAgICAnU2NvbW1hYWNjZW50JzogNjY3LAogICAgJ09odW5nYXJ1bWxhdXQnOiA3NzgsCiAgICAnZGVncmVlJzogNDAwLAogICAgJ29ncmF2ZSc6IDYxMSwKICAgICdDY2Fyb24nOiA3MjIsCiAgICAndWdyYXZlJzogNjExLAogICAgJ3JhZGljYWwnOiA1NDksCiAgICAnRGNhcm9uJzogNzIyLAogICAgJ3Jjb21tYWFjY2VudCc6IDM4OSwKICAgICdOdGlsZGUnOiA3MjIsCiAgICAnb3RpbGRlJzogNjExLAogICAgJ1Jjb21tYWFjY2VudCc6IDcyMiwKICAgICdMY29tbWFhY2NlbnQnOiA2MTEsCiAgICAnQXRpbGRlJzogNzIyLAogICAgJ0FvZ29uZWsnOiA3MjIsCiAgICAnQXJpbmcnOiA3MjIsCiAgICAnT3RpbGRlJzogNzc4LAogICAgJ3pkb3RhY2NlbnQnOiA1MDAsCiAgICAnRWNhcm9uJzogNjY3LAogICAgJ0lvZ29uZWsnOiAyNzgsCiAgICAna2NvbW1hYWNjZW50JzogNTU2LAogICAgJ21pbnVzJzogNTg0LAogICAgJ0ljaXJjdW1mbGV4JzogMjc4LAogICAgJ25jYXJvbic6IDYxMSwKICAgICd0Y29tbWFhY2NlbnQnOiAzMzMsCiAgICAnbG9naWNhbG5vdCc6IDU4NCwKICAgICdvZGllcmVzaXMnOiA2MTEsCiAgICAndWRpZXJlc2lzJzogNjExLAogICAgJ25vdGVxdWFsJzogNTQ5LAogICAgJ2djb21tYWFjY2VudCc6IDYxMSwKICAgICdldGgnOiA2MTEsCiAgICAnemNhcm9uJzogNTAwLAogICAgJ25jb21tYWFjY2VudCc6IDYxMSwKICAgICdvbmVzdXBlcmlvcic6IDMzMywKICAgICdpbWFjcm9uJzogMjc4LAogICAgJ0V1cm8nOiA1NTYKICB9LAogICdIZWx2ZXRpY2EtT2JsaXF1ZScgOiB7CiAgICAnc3BhY2UnOiAyNzgsCiAgICAnZXhjbGFtJzogMjc4LAogICAgJ3F1b3RlZGJsJzogMzU1LAogICAgJ251bWJlcnNpZ24nOiA1NTYsCiAgICAnZG9sbGFyJzogNTU2LAogICAgJ3BlcmNlbnQnOiA4ODksCiAgICAnYW1wZXJzYW5kJzogNjY3LAogICAgJ3F1b3RlcmlnaHQnOiAyMjIsCiAgICAncGFyZW5sZWZ0JzogMzMzLAogICAgJ3BhcmVucmlnaHQnOiAzMzMsCiAgICAnYXN0ZXJpc2snOiAzODksCiAgICAncGx1cyc6IDU4NCwKICAgICdjb21tYSc6IDI3OCwKICAgICdoeXBoZW4nOiAzMzMsCiAgICAncGVyaW9kJzogMjc4LAogICAgJ3NsYXNoJzogMjc4LAogICAgJ3plcm8nOiA1NTYsCiAgICAnb25lJzogNTU2LAogICAgJ3R3byc6IDU1NiwKICAgICd0aHJlZSc6IDU1NiwKICAgICdmb3VyJzogNTU2LAogICAgJ2ZpdmUnOiA1NTYsCiAgICAnc2l4JzogNTU2LAogICAgJ3NldmVuJzogNTU2LAogICAgJ2VpZ2h0JzogNTU2LAogICAgJ25pbmUnOiA1NTYsCiAgICAnY29sb24nOiAyNzgsCiAgICAnc2VtaWNvbG9uJzogMjc4LAogICAgJ2xlc3MnOiA1ODQsCiAgICAnZXF1YWwnOiA1ODQsCiAgICAnZ3JlYXRlcic6IDU4NCwKICAgICdxdWVzdGlvbic6IDU1NiwKICAgICdhdCc6IDEwMTUsCiAgICAnQSc6IDY2NywKICAgICdCJzogNjY3LAogICAgJ0MnOiA3MjIsCiAgICAnRCc6IDcyMiwKICAgICdFJzogNjY3LAogICAgJ0YnOiA2MTEsCiAgICAnRyc6IDc3OCwKICAgICdIJzogNzIyLAogICAgJ0knOiAyNzgsCiAgICAnSic6IDUwMCwKICAgICdLJzogNjY3LAogICAgJ0wnOiA1NTYsCiAgICAnTSc6IDgzMywKICAgICdOJzogNzIyLAogICAgJ08nOiA3NzgsCiAgICAnUCc6IDY2NywKICAgICdRJzogNzc4LAogICAgJ1InOiA3MjIsCiAgICAnUyc6IDY2NywKICAgICdUJzogNjExLAogICAgJ1UnOiA3MjIsCiAgICAnVic6IDY2NywKICAgICdXJzogOTQ0LAogICAgJ1gnOiA2NjcsCiAgICAnWSc6IDY2NywKICAgICdaJzogNjExLAogICAgJ2JyYWNrZXRsZWZ0JzogMjc4LAogICAgJ2JhY2tzbGFzaCc6IDI3OCwKICAgICdicmFja2V0cmlnaHQnOiAyNzgsCiAgICAnYXNjaWljaXJjdW0nOiA0NjksCiAgICAndW5kZXJzY29yZSc6IDU1NiwKICAgICdxdW90ZWxlZnQnOiAyMjIsCiAgICAnYSc6IDU1NiwKICAgICdiJzogNTU2LAogICAgJ2MnOiA1MDAsCiAgICAnZCc6IDU1NiwKICAgICdlJzogNTU2LAogICAgJ2YnOiAyNzgsCiAgICAnZyc6IDU1NiwKICAgICdoJzogNTU2LAogICAgJ2knOiAyMjIsCiAgICAnaic6IDIyMiwKICAgICdrJzogNTAwLAogICAgJ2wnOiAyMjIsCiAgICAnbSc6IDgzMywKICAgICduJzogNTU2LAogICAgJ28nOiA1NTYsCiAgICAncCc6IDU1NiwKICAgICdxJzogNTU2LAogICAgJ3InOiAzMzMsCiAgICAncyc6IDUwMCwKICAgICd0JzogMjc4LAogICAgJ3UnOiA1NTYsCiAgICAndic6IDUwMCwKICAgICd3JzogNzIyLAogICAgJ3gnOiA1MDAsCiAgICAneSc6IDUwMCwKICAgICd6JzogNTAwLAogICAgJ2JyYWNlbGVmdCc6IDMzNCwKICAgICdiYXInOiAyNjAsCiAgICAnYnJhY2VyaWdodCc6IDMzNCwKICAgICdhc2NpaXRpbGRlJzogNTg0LAogICAgJ2V4Y2xhbWRvd24nOiAzMzMsCiAgICAnY2VudCc6IDU1NiwKICAgICdzdGVybGluZyc6IDU1NiwKICAgICdmcmFjdGlvbic6IDE2NywKICAgICd5ZW4nOiA1NTYsCiAgICAnZmxvcmluJzogNTU2LAogICAgJ3NlY3Rpb24nOiA1NTYsCiAgICAnY3VycmVuY3knOiA1NTYsCiAgICAncXVvdGVzaW5nbGUnOiAxOTEsCiAgICAncXVvdGVkYmxsZWZ0JzogMzMzLAogICAgJ2d1aWxsZW1vdGxlZnQnOiA1NTYsCiAgICAnZ3VpbHNpbmdsbGVmdCc6IDMzMywKICAgICdndWlsc2luZ2xyaWdodCc6IDMzMywKICAgICdmaSc6IDUwMCwKICAgICdmbCc6IDUwMCwKICAgICdlbmRhc2gnOiA1NTYsCiAgICAnZGFnZ2VyJzogNTU2LAogICAgJ2RhZ2dlcmRibCc6IDU1NiwKICAgICdwZXJpb2RjZW50ZXJlZCc6IDI3OCwKICAgICdwYXJhZ3JhcGgnOiA1MzcsCiAgICAnYnVsbGV0JzogMzUwLAogICAgJ3F1b3Rlc2luZ2xiYXNlJzogMjIyLAogICAgJ3F1b3RlZGJsYmFzZSc6IDMzMywKICAgICdxdW90ZWRibHJpZ2h0JzogMzMzLAogICAgJ2d1aWxsZW1vdHJpZ2h0JzogNTU2LAogICAgJ2VsbGlwc2lzJzogMTAwMCwKICAgICdwZXJ0aG91c2FuZCc6IDEwMDAsCiAgICAncXVlc3Rpb25kb3duJzogNjExLAogICAgJ2dyYXZlJzogMzMzLAogICAgJ2FjdXRlJzogMzMzLAogICAgJ2NpcmN1bWZsZXgnOiAzMzMsCiAgICAndGlsZGUnOiAzMzMsCiAgICAnbWFjcm9uJzogMzMzLAogICAgJ2JyZXZlJzogMzMzLAogICAgJ2RvdGFjY2VudCc6IDMzMywKICAgICdkaWVyZXNpcyc6IDMzMywKICAgICdyaW5nJzogMzMzLAogICAgJ2NlZGlsbGEnOiAzMzMsCiAgICAnaHVuZ2FydW1sYXV0JzogMzMzLAogICAgJ29nb25layc6IDMzMywKICAgICdjYXJvbic6IDMzMywKICAgICdlbWRhc2gnOiAxMDAwLAogICAgJ0FFJzogMTAwMCwKICAgICdvcmRmZW1pbmluZSc6IDM3MCwKICAgICdMc2xhc2gnOiA1NTYsCiAgICAnT3NsYXNoJzogNzc4LAogICAgJ09FJzogMTAwMCwKICAgICdvcmRtYXNjdWxpbmUnOiAzNjUsCiAgICAnYWUnOiA4ODksCiAgICAnZG90bGVzc2knOiAyNzgsCiAgICAnbHNsYXNoJzogMjIyLAogICAgJ29zbGFzaCc6IDYxMSwKICAgICdvZSc6IDk0NCwKICAgICdnZXJtYW5kYmxzJzogNjExLAogICAgJ0lkaWVyZXNpcyc6IDI3OCwKICAgICdlYWN1dGUnOiA1NTYsCiAgICAnYWJyZXZlJzogNTU2LAogICAgJ3VodW5nYXJ1bWxhdXQnOiA1NTYsCiAgICAnZWNhcm9uJzogNTU2LAogICAgJ1lkaWVyZXNpcyc6IDY2NywKICAgICdkaXZpZGUnOiA1ODQsCiAgICAnWWFjdXRlJzogNjY3LAogICAgJ0FjaXJjdW1mbGV4JzogNjY3LAogICAgJ2FhY3V0ZSc6IDU1NiwKICAgICdVY2lyY3VtZmxleCc6IDcyMiwKICAgICd5YWN1dGUnOiA1MDAsCiAgICAnc2NvbW1hYWNjZW50JzogNTAwLAogICAgJ2VjaXJjdW1mbGV4JzogNTU2LAogICAgJ1VyaW5nJzogNzIyLAogICAgJ1VkaWVyZXNpcyc6IDcyMiwKICAgICdhb2dvbmVrJzogNTU2LAogICAgJ1VhY3V0ZSc6IDcyMiwKICAgICd1b2dvbmVrJzogNTU2LAogICAgJ0VkaWVyZXNpcyc6IDY2NywKICAgICdEY3JvYXQnOiA3MjIsCiAgICAnY29tbWFhY2NlbnQnOiAyNTAsCiAgICAnY29weXJpZ2h0JzogNzM3LAogICAgJ0VtYWNyb24nOiA2NjcsCiAgICAnY2Nhcm9uJzogNTAwLAogICAgJ2FyaW5nJzogNTU2LAogICAgJ05jb21tYWFjY2VudCc6IDcyMiwKICAgICdsYWN1dGUnOiAyMjIsCiAgICAnYWdyYXZlJzogNTU2LAogICAgJ1Rjb21tYWFjY2VudCc6IDYxMSwKICAgICdDYWN1dGUnOiA3MjIsCiAgICAnYXRpbGRlJzogNTU2LAogICAgJ0Vkb3RhY2NlbnQnOiA2NjcsCiAgICAnc2Nhcm9uJzogNTAwLAogICAgJ3NjZWRpbGxhJzogNTAwLAogICAgJ2lhY3V0ZSc6IDI3OCwKICAgICdsb3plbmdlJzogNDcxLAogICAgJ1JjYXJvbic6IDcyMiwKICAgICdHY29tbWFhY2NlbnQnOiA3NzgsCiAgICAndWNpcmN1bWZsZXgnOiA1NTYsCiAgICAnYWNpcmN1bWZsZXgnOiA1NTYsCiAgICAnQW1hY3Jvbic6IDY2NywKICAgICdyY2Fyb24nOiAzMzMsCiAgICAnY2NlZGlsbGEnOiA1MDAsCiAgICAnWmRvdGFjY2VudCc6IDYxMSwKICAgICdUaG9ybic6IDY2NywKICAgICdPbWFjcm9uJzogNzc4LAogICAgJ1JhY3V0ZSc6IDcyMiwKICAgICdTYWN1dGUnOiA2NjcsCiAgICAnZGNhcm9uJzogNjQzLAogICAgJ1VtYWNyb24nOiA3MjIsCiAgICAndXJpbmcnOiA1NTYsCiAgICAndGhyZWVzdXBlcmlvcic6IDMzMywKICAgICdPZ3JhdmUnOiA3NzgsCiAgICAnQWdyYXZlJzogNjY3LAogICAgJ0FicmV2ZSc6IDY2NywKICAgICdtdWx0aXBseSc6IDU4NCwKICAgICd1YWN1dGUnOiA1NTYsCiAgICAnVGNhcm9uJzogNjExLAogICAgJ3BhcnRpYWxkaWZmJzogNDc2LAogICAgJ3lkaWVyZXNpcyc6IDUwMCwKICAgICdOYWN1dGUnOiA3MjIsCiAgICAnaWNpcmN1bWZsZXgnOiAyNzgsCiAgICAnRWNpcmN1bWZsZXgnOiA2NjcsCiAgICAnYWRpZXJlc2lzJzogNTU2LAogICAgJ2VkaWVyZXNpcyc6IDU1NiwKICAgICdjYWN1dGUnOiA1MDAsCiAgICAnbmFjdXRlJzogNTU2LAogICAgJ3VtYWNyb24nOiA1NTYsCiAgICAnTmNhcm9uJzogNzIyLAogICAgJ0lhY3V0ZSc6IDI3OCwKICAgICdwbHVzbWludXMnOiA1ODQsCiAgICAnYnJva2VuYmFyJzogMjYwLAogICAgJ3JlZ2lzdGVyZWQnOiA3MzcsCiAgICAnR2JyZXZlJzogNzc4LAogICAgJ0lkb3RhY2NlbnQnOiAyNzgsCiAgICAnc3VtbWF0aW9uJzogNjAwLAogICAgJ0VncmF2ZSc6IDY2NywKICAgICdyYWN1dGUnOiAzMzMsCiAgICAnb21hY3Jvbic6IDU1NiwKICAgICdaYWN1dGUnOiA2MTEsCiAgICAnWmNhcm9uJzogNjExLAogICAgJ2dyZWF0ZXJlcXVhbCc6IDU0OSwKICAgICdFdGgnOiA3MjIsCiAgICAnQ2NlZGlsbGEnOiA3MjIsCiAgICAnbGNvbW1hYWNjZW50JzogMjIyLAogICAgJ3RjYXJvbic6IDMxNywKICAgICdlb2dvbmVrJzogNTU2LAogICAgJ1VvZ29uZWsnOiA3MjIsCiAgICAnQWFjdXRlJzogNjY3LAogICAgJ0FkaWVyZXNpcyc6IDY2NywKICAgICdlZ3JhdmUnOiA1NTYsCiAgICAnemFjdXRlJzogNTAwLAogICAgJ2lvZ29uZWsnOiAyMjIsCiAgICAnT2FjdXRlJzogNzc4LAogICAgJ29hY3V0ZSc6IDU1NiwKICAgICdhbWFjcm9uJzogNTU2LAogICAgJ3NhY3V0ZSc6IDUwMCwKICAgICdpZGllcmVzaXMnOiAyNzgsCiAgICAnT2NpcmN1bWZsZXgnOiA3NzgsCiAgICAnVWdyYXZlJzogNzIyLAogICAgJ0RlbHRhJzogNjEyLAogICAgJ3Rob3JuJzogNTU2LAogICAgJ3R3b3N1cGVyaW9yJzogMzMzLAogICAgJ09kaWVyZXNpcyc6IDc3OCwKICAgICdtdSc6IDU1NiwKICAgICdpZ3JhdmUnOiAyNzgsCiAgICAnb2h1bmdhcnVtbGF1dCc6IDU1NiwKICAgICdFb2dvbmVrJzogNjY3LAogICAgJ2Rjcm9hdCc6IDU1NiwKICAgICd0aHJlZXF1YXJ0ZXJzJzogODM0LAogICAgJ1NjZWRpbGxhJzogNjY3LAogICAgJ2xjYXJvbic6IDI5OSwKICAgICdLY29tbWFhY2NlbnQnOiA2NjcsCiAgICAnTGFjdXRlJzogNTU2LAogICAgJ3RyYWRlbWFyayc6IDEwMDAsCiAgICAnZWRvdGFjY2VudCc6IDU1NiwKICAgICdJZ3JhdmUnOiAyNzgsCiAgICAnSW1hY3Jvbic6IDI3OCwKICAgICdMY2Fyb24nOiA1NTYsCiAgICAnb25laGFsZic6IDgzNCwKICAgICdsZXNzZXF1YWwnOiA1NDksCiAgICAnb2NpcmN1bWZsZXgnOiA1NTYsCiAgICAnbnRpbGRlJzogNTU2LAogICAgJ1VodW5nYXJ1bWxhdXQnOiA3MjIsCiAgICAnRWFjdXRlJzogNjY3LAogICAgJ2VtYWNyb24nOiA1NTYsCiAgICAnZ2JyZXZlJzogNTU2LAogICAgJ29uZXF1YXJ0ZXInOiA4MzQsCiAgICAnU2Nhcm9uJzogNjY3LAogICAgJ1Njb21tYWFjY2VudCc6IDY2NywKICAgICdPaHVuZ2FydW1sYXV0JzogNzc4LAogICAgJ2RlZ3JlZSc6IDQwMCwKICAgICdvZ3JhdmUnOiA1NTYsCiAgICAnQ2Nhcm9uJzogNzIyLAogICAgJ3VncmF2ZSc6IDU1NiwKICAgICdyYWRpY2FsJzogNDUzLAogICAgJ0RjYXJvbic6IDcyMiwKICAgICdyY29tbWFhY2NlbnQnOiAzMzMsCiAgICAnTnRpbGRlJzogNzIyLAogICAgJ290aWxkZSc6IDU1NiwKICAgICdSY29tbWFhY2NlbnQnOiA3MjIsCiAgICAnTGNvbW1hYWNjZW50JzogNTU2LAogICAgJ0F0aWxkZSc6IDY2NywKICAgICdBb2dvbmVrJzogNjY3LAogICAgJ0FyaW5nJzogNjY3LAogICAgJ090aWxkZSc6IDc3OCwKICAgICd6ZG90YWNjZW50JzogNTAwLAogICAgJ0VjYXJvbic6IDY2NywKICAgICdJb2dvbmVrJzogMjc4LAogICAgJ2tjb21tYWFjY2VudCc6IDUwMCwKICAgICdtaW51cyc6IDU4NCwKICAgICdJY2lyY3VtZmxleCc6IDI3OCwKICAgICduY2Fyb24nOiA1NTYsCiAgICAndGNvbW1hYWNjZW50JzogMjc4LAogICAgJ2xvZ2ljYWxub3QnOiA1ODQsCiAgICAnb2RpZXJlc2lzJzogNTU2LAogICAgJ3VkaWVyZXNpcyc6IDU1NiwKICAgICdub3RlcXVhbCc6IDU0OSwKICAgICdnY29tbWFhY2NlbnQnOiA1NTYsCiAgICAnZXRoJzogNTU2LAogICAgJ3pjYXJvbic6IDUwMCwKICAgICduY29tbWFhY2NlbnQnOiA1NTYsCiAgICAnb25lc3VwZXJpb3InOiAzMzMsCiAgICAnaW1hY3Jvbic6IDI3OCwKICAgICdFdXJvJzogNTU2CiAgfSwKICAnU3ltYm9sJzogewogICAgJ3NwYWNlJzogMjUwLAogICAgJ2V4Y2xhbSc6IDMzMywKICAgICd1bml2ZXJzYWwnOiA3MTMsCiAgICAnbnVtYmVyc2lnbic6IDUwMCwKICAgICdleGlzdGVudGlhbCc6IDU0OSwKICAgICdwZXJjZW50JzogODMzLAogICAgJ2FtcGVyc2FuZCc6IDc3OCwKICAgICdzdWNodGhhdCc6IDQzOSwKICAgICdwYXJlbmxlZnQnOiAzMzMsCiAgICAncGFyZW5yaWdodCc6IDMzMywKICAgICdhc3Rlcmlza21hdGgnOiA1MDAsCiAgICAncGx1cyc6IDU0OSwKICAgICdjb21tYSc6IDI1MCwKICAgICdtaW51cyc6IDU0OSwKICAgICdwZXJpb2QnOiAyNTAsCiAgICAnc2xhc2gnOiAyNzgsCiAgICAnemVybyc6IDUwMCwKICAgICdvbmUnOiA1MDAsCiAgICAndHdvJzogNTAwLAogICAgJ3RocmVlJzogNTAwLAogICAgJ2ZvdXInOiA1MDAsCiAgICAnZml2ZSc6IDUwMCwKICAgICdzaXgnOiA1MDAsCiAgICAnc2V2ZW4nOiA1MDAsCiAgICAnZWlnaHQnOiA1MDAsCiAgICAnbmluZSc6IDUwMCwKICAgICdjb2xvbic6IDI3OCwKICAgICdzZW1pY29sb24nOiAyNzgsCiAgICAnbGVzcyc6IDU0OSwKICAgICdlcXVhbCc6IDU0OSwKICAgICdncmVhdGVyJzogNTQ5LAogICAgJ3F1ZXN0aW9uJzogNDQ0LAogICAgJ2NvbmdydWVudCc6IDU0OSwKICAgICdBbHBoYSc6IDcyMiwKICAgICdCZXRhJzogNjY3LAogICAgJ0NoaSc6IDcyMiwKICAgICdEZWx0YSc6IDYxMiwKICAgICdFcHNpbG9uJzogNjExLAogICAgJ1BoaSc6IDc2MywKICAgICdHYW1tYSc6IDYwMywKICAgICdFdGEnOiA3MjIsCiAgICAnSW90YSc6IDMzMywKICAgICd0aGV0YTEnOiA2MzEsCiAgICAnS2FwcGEnOiA3MjIsCiAgICAnTGFtYmRhJzogNjg2LAogICAgJ011JzogODg5LAogICAgJ051JzogNzIyLAogICAgJ09taWNyb24nOiA3MjIsCiAgICAnUGknOiA3NjgsCiAgICAnVGhldGEnOiA3NDEsCiAgICAnUmhvJzogNTU2LAogICAgJ1NpZ21hJzogNTkyLAogICAgJ1RhdSc6IDYxMSwKICAgICdVcHNpbG9uJzogNjkwLAogICAgJ3NpZ21hMSc6IDQzOSwKICAgICdPbWVnYSc6IDc2OCwKICAgICdYaSc6IDY0NSwKICAgICdQc2knOiA3OTUsCiAgICAnWmV0YSc6IDYxMSwKICAgICdicmFja2V0bGVmdCc6IDMzMywKICAgICd0aGVyZWZvcmUnOiA4NjMsCiAgICAnYnJhY2tldHJpZ2h0JzogMzMzLAogICAgJ3BlcnBlbmRpY3VsYXInOiA2NTgsCiAgICAndW5kZXJzY29yZSc6IDUwMCwKICAgICdyYWRpY2FsZXgnOiA1MDAsCiAgICAnYWxwaGEnOiA2MzEsCiAgICAnYmV0YSc6IDU0OSwKICAgICdjaGknOiA1NDksCiAgICAnZGVsdGEnOiA0OTQsCiAgICAnZXBzaWxvbic6IDQzOSwKICAgICdwaGknOiA1MjEsCiAgICAnZ2FtbWEnOiA0MTEsCiAgICAnZXRhJzogNjAzLAogICAgJ2lvdGEnOiAzMjksCiAgICAncGhpMSc6IDYwMywKICAgICdrYXBwYSc6IDU0OSwKICAgICdsYW1iZGEnOiA1NDksCiAgICAnbXUnOiA1NzYsCiAgICAnbnUnOiA1MjEsCiAgICAnb21pY3Jvbic6IDU0OSwKICAgICdwaSc6IDU0OSwKICAgICd0aGV0YSc6IDUyMSwKICAgICdyaG8nOiA1NDksCiAgICAnc2lnbWEnOiA2MDMsCiAgICAndGF1JzogNDM5LAogICAgJ3Vwc2lsb24nOiA1NzYsCiAgICAnb21lZ2ExJzogNzEzLAogICAgJ29tZWdhJzogNjg2LAogICAgJ3hpJzogNDkzLAogICAgJ3BzaSc6IDY4NiwKICAgICd6ZXRhJzogNDk0LAogICAgJ2JyYWNlbGVmdCc6IDQ4MCwKICAgICdiYXInOiAyMDAsCiAgICAnYnJhY2VyaWdodCc6IDQ4MCwKICAgICdzaW1pbGFyJzogNTQ5LAogICAgJ0V1cm8nOiA3NTAsCiAgICAnVXBzaWxvbjEnOiA2MjAsCiAgICAnbWludXRlJzogMjQ3LAogICAgJ2xlc3NlcXVhbCc6IDU0OSwKICAgICdmcmFjdGlvbic6IDE2NywKICAgICdpbmZpbml0eSc6IDcxMywKICAgICdmbG9yaW4nOiA1MDAsCiAgICAnY2x1Yic6IDc1MywKICAgICdkaWFtb25kJzogNzUzLAogICAgJ2hlYXJ0JzogNzUzLAogICAgJ3NwYWRlJzogNzUzLAogICAgJ2Fycm93Ym90aCc6IDEwNDIsCiAgICAnYXJyb3dsZWZ0JzogOTg3LAogICAgJ2Fycm93dXAnOiA2MDMsCiAgICAnYXJyb3dyaWdodCc6IDk4NywKICAgICdhcnJvd2Rvd24nOiA2MDMsCiAgICAnZGVncmVlJzogNDAwLAogICAgJ3BsdXNtaW51cyc6IDU0OSwKICAgICdzZWNvbmQnOiA0MTEsCiAgICAnZ3JlYXRlcmVxdWFsJzogNTQ5LAogICAgJ211bHRpcGx5JzogNTQ5LAogICAgJ3Byb3BvcnRpb25hbCc6IDcxMywKICAgICdwYXJ0aWFsZGlmZic6IDQ5NCwKICAgICdidWxsZXQnOiA0NjAsCiAgICAnZGl2aWRlJzogNTQ5LAogICAgJ25vdGVxdWFsJzogNTQ5LAogICAgJ2VxdWl2YWxlbmNlJzogNTQ5LAogICAgJ2FwcHJveGVxdWFsJzogNTQ5LAogICAgJ2VsbGlwc2lzJzogMTAwMCwKICAgICdhcnJvd3ZlcnRleCc6IDYwMywKICAgICdhcnJvd2hvcml6ZXgnOiAxMDAwLAogICAgJ2NhcnJpYWdlcmV0dXJuJzogNjU4LAogICAgJ2FsZXBoJzogODIzLAogICAgJ0lmcmFrdHVyJzogNjg2LAogICAgJ1JmcmFrdHVyJzogNzk1LAogICAgJ3dlaWVyc3RyYXNzJzogOTg3LAogICAgJ2NpcmNsZW11bHRpcGx5JzogNzY4LAogICAgJ2NpcmNsZXBsdXMnOiA3NjgsCiAgICAnZW1wdHlzZXQnOiA4MjMsCiAgICAnaW50ZXJzZWN0aW9uJzogNzY4LAogICAgJ3VuaW9uJzogNzY4LAogICAgJ3Byb3BlcnN1cGVyc2V0JzogNzEzLAogICAgJ3JlZmxleHN1cGVyc2V0JzogNzEzLAogICAgJ25vdHN1YnNldCc6IDcxMywKICAgICdwcm9wZXJzdWJzZXQnOiA3MTMsCiAgICAncmVmbGV4c3Vic2V0JzogNzEzLAogICAgJ2VsZW1lbnQnOiA3MTMsCiAgICAnbm90ZWxlbWVudCc6IDcxMywKICAgICdhbmdsZSc6IDc2OCwKICAgICdncmFkaWVudCc6IDcxMywKICAgICdyZWdpc3RlcnNlcmlmJzogNzkwLAogICAgJ2NvcHlyaWdodHNlcmlmJzogNzkwLAogICAgJ3RyYWRlbWFya3NlcmlmJzogODkwLAogICAgJ3Byb2R1Y3QnOiA4MjMsCiAgICAncmFkaWNhbCc6IDU0OSwKICAgICdkb3RtYXRoJzogMjUwLAogICAgJ2xvZ2ljYWxub3QnOiA3MTMsCiAgICAnbG9naWNhbGFuZCc6IDYwMywKICAgICdsb2dpY2Fsb3InOiA2MDMsCiAgICAnYXJyb3dkYmxib3RoJzogMTA0MiwKICAgICdhcnJvd2RibGxlZnQnOiA5ODcsCiAgICAnYXJyb3dkYmx1cCc6IDYwMywKICAgICdhcnJvd2RibHJpZ2h0JzogOTg3LAogICAgJ2Fycm93ZGJsZG93bic6IDYwMywKICAgICdsb3plbmdlJzogNDk0LAogICAgJ2FuZ2xlbGVmdCc6IDMyOSwKICAgICdyZWdpc3RlcnNhbnMnOiA3OTAsCiAgICAnY29weXJpZ2h0c2Fucyc6IDc5MCwKICAgICd0cmFkZW1hcmtzYW5zJzogNzg2LAogICAgJ3N1bW1hdGlvbic6IDcxMywKICAgICdwYXJlbmxlZnR0cCc6IDM4NCwKICAgICdwYXJlbmxlZnRleCc6IDM4NCwKICAgICdwYXJlbmxlZnRidCc6IDM4NCwKICAgICdicmFja2V0bGVmdHRwJzogMzg0LAogICAgJ2JyYWNrZXRsZWZ0ZXgnOiAzODQsCiAgICAnYnJhY2tldGxlZnRidCc6IDM4NCwKICAgICdicmFjZWxlZnR0cCc6IDQ5NCwKICAgICdicmFjZWxlZnRtaWQnOiA0OTQsCiAgICAnYnJhY2VsZWZ0YnQnOiA0OTQsCiAgICAnYnJhY2VleCc6IDQ5NCwKICAgICdhbmdsZXJpZ2h0JzogMzI5LAogICAgJ2ludGVncmFsJzogMjc0LAogICAgJ2ludGVncmFsdHAnOiA2ODYsCiAgICAnaW50ZWdyYWxleCc6IDY4NiwKICAgICdpbnRlZ3JhbGJ0JzogNjg2LAogICAgJ3BhcmVucmlnaHR0cCc6IDM4NCwKICAgICdwYXJlbnJpZ2h0ZXgnOiAzODQsCiAgICAncGFyZW5yaWdodGJ0JzogMzg0LAogICAgJ2JyYWNrZXRyaWdodHRwJzogMzg0LAogICAgJ2JyYWNrZXRyaWdodGV4JzogMzg0LAogICAgJ2JyYWNrZXRyaWdodGJ0JzogMzg0LAogICAgJ2JyYWNlcmlnaHR0cCc6IDQ5NCwKICAgICdicmFjZXJpZ2h0bWlkJzogNDk0LAogICAgJ2JyYWNlcmlnaHRidCc6IDQ5NCwKICAgICdhcHBsZSc6IDc5MAogIH0sCiAgJ1RpbWVzLVJvbWFuJzogewogICAgJ3NwYWNlJzogMjUwLAogICAgJ2V4Y2xhbSc6IDMzMywKICAgICdxdW90ZWRibCc6IDQwOCwKICAgICdudW1iZXJzaWduJzogNTAwLAogICAgJ2RvbGxhcic6IDUwMCwKICAgICdwZXJjZW50JzogODMzLAogICAgJ2FtcGVyc2FuZCc6IDc3OCwKICAgICdxdW90ZXJpZ2h0JzogMzMzLAogICAgJ3BhcmVubGVmdCc6IDMzMywKICAgICdwYXJlbnJpZ2h0JzogMzMzLAogICAgJ2FzdGVyaXNrJzogNTAwLAogICAgJ3BsdXMnOiA1NjQsCiAgICAnY29tbWEnOiAyNTAsCiAgICAnaHlwaGVuJzogMzMzLAogICAgJ3BlcmlvZCc6IDI1MCwKICAgICdzbGFzaCc6IDI3OCwKICAgICd6ZXJvJzogNTAwLAogICAgJ29uZSc6IDUwMCwKICAgICd0d28nOiA1MDAsCiAgICAndGhyZWUnOiA1MDAsCiAgICAnZm91cic6IDUwMCwKICAgICdmaXZlJzogNTAwLAogICAgJ3NpeCc6IDUwMCwKICAgICdzZXZlbic6IDUwMCwKICAgICdlaWdodCc6IDUwMCwKICAgICduaW5lJzogNTAwLAogICAgJ2NvbG9uJzogMjc4LAogICAgJ3NlbWljb2xvbic6IDI3OCwKICAgICdsZXNzJzogNTY0LAogICAgJ2VxdWFsJzogNTY0LAogICAgJ2dyZWF0ZXInOiA1NjQsCiAgICAncXVlc3Rpb24nOiA0NDQsCiAgICAnYXQnOiA5MjEsCiAgICAnQSc6IDcyMiwKICAgICdCJzogNjY3LAogICAgJ0MnOiA2NjcsCiAgICAnRCc6IDcyMiwKICAgICdFJzogNjExLAogICAgJ0YnOiA1NTYsCiAgICAnRyc6IDcyMiwKICAgICdIJzogNzIyLAogICAgJ0knOiAzMzMsCiAgICAnSic6IDM4OSwKICAgICdLJzogNzIyLAogICAgJ0wnOiA2MTEsCiAgICAnTSc6IDg4OSwKICAgICdOJzogNzIyLAogICAgJ08nOiA3MjIsCiAgICAnUCc6IDU1NiwKICAgICdRJzogNzIyLAogICAgJ1InOiA2NjcsCiAgICAnUyc6IDU1NiwKICAgICdUJzogNjExLAogICAgJ1UnOiA3MjIsCiAgICAnVic6IDcyMiwKICAgICdXJzogOTQ0LAogICAgJ1gnOiA3MjIsCiAgICAnWSc6IDcyMiwKICAgICdaJzogNjExLAogICAgJ2JyYWNrZXRsZWZ0JzogMzMzLAogICAgJ2JhY2tzbGFzaCc6IDI3OCwKICAgICdicmFja2V0cmlnaHQnOiAzMzMsCiAgICAnYXNjaWljaXJjdW0nOiA0NjksCiAgICAndW5kZXJzY29yZSc6IDUwMCwKICAgICdxdW90ZWxlZnQnOiAzMzMsCiAgICAnYSc6IDQ0NCwKICAgICdiJzogNTAwLAogICAgJ2MnOiA0NDQsCiAgICAnZCc6IDUwMCwKICAgICdlJzogNDQ0LAogICAgJ2YnOiAzMzMsCiAgICAnZyc6IDUwMCwKICAgICdoJzogNTAwLAogICAgJ2knOiAyNzgsCiAgICAnaic6IDI3OCwKICAgICdrJzogNTAwLAogICAgJ2wnOiAyNzgsCiAgICAnbSc6IDc3OCwKICAgICduJzogNTAwLAogICAgJ28nOiA1MDAsCiAgICAncCc6IDUwMCwKICAgICdxJzogNTAwLAogICAgJ3InOiAzMzMsCiAgICAncyc6IDM4OSwKICAgICd0JzogMjc4LAogICAgJ3UnOiA1MDAsCiAgICAndic6IDUwMCwKICAgICd3JzogNzIyLAogICAgJ3gnOiA1MDAsCiAgICAneSc6IDUwMCwKICAgICd6JzogNDQ0LAogICAgJ2JyYWNlbGVmdCc6IDQ4MCwKICAgICdiYXInOiAyMDAsCiAgICAnYnJhY2VyaWdodCc6IDQ4MCwKICAgICdhc2NpaXRpbGRlJzogNTQxLAogICAgJ2V4Y2xhbWRvd24nOiAzMzMsCiAgICAnY2VudCc6IDUwMCwKICAgICdzdGVybGluZyc6IDUwMCwKICAgICdmcmFjdGlvbic6IDE2NywKICAgICd5ZW4nOiA1MDAsCiAgICAnZmxvcmluJzogNTAwLAogICAgJ3NlY3Rpb24nOiA1MDAsCiAgICAnY3VycmVuY3knOiA1MDAsCiAgICAncXVvdGVzaW5nbGUnOiAxODAsCiAgICAncXVvdGVkYmxsZWZ0JzogNDQ0LAogICAgJ2d1aWxsZW1vdGxlZnQnOiA1MDAsCiAgICAnZ3VpbHNpbmdsbGVmdCc6IDMzMywKICAgICdndWlsc2luZ2xyaWdodCc6IDMzMywKICAgICdmaSc6IDU1NiwKICAgICdmbCc6IDU1NiwKICAgICdlbmRhc2gnOiA1MDAsCiAgICAnZGFnZ2VyJzogNTAwLAogICAgJ2RhZ2dlcmRibCc6IDUwMCwKICAgICdwZXJpb2RjZW50ZXJlZCc6IDI1MCwKICAgICdwYXJhZ3JhcGgnOiA0NTMsCiAgICAnYnVsbGV0JzogMzUwLAogICAgJ3F1b3Rlc2luZ2xiYXNlJzogMzMzLAogICAgJ3F1b3RlZGJsYmFzZSc6IDQ0NCwKICAgICdxdW90ZWRibHJpZ2h0JzogNDQ0LAogICAgJ2d1aWxsZW1vdHJpZ2h0JzogNTAwLAogICAgJ2VsbGlwc2lzJzogMTAwMCwKICAgICdwZXJ0aG91c2FuZCc6IDEwMDAsCiAgICAncXVlc3Rpb25kb3duJzogNDQ0LAogICAgJ2dyYXZlJzogMzMzLAogICAgJ2FjdXRlJzogMzMzLAogICAgJ2NpcmN1bWZsZXgnOiAzMzMsCiAgICAndGlsZGUnOiAzMzMsCiAgICAnbWFjcm9uJzogMzMzLAogICAgJ2JyZXZlJzogMzMzLAogICAgJ2RvdGFjY2VudCc6IDMzMywKICAgICdkaWVyZXNpcyc6IDMzMywKICAgICdyaW5nJzogMzMzLAogICAgJ2NlZGlsbGEnOiAzMzMsCiAgICAnaHVuZ2FydW1sYXV0JzogMzMzLAogICAgJ29nb25layc6IDMzMywKICAgICdjYXJvbic6IDMzMywKICAgICdlbWRhc2gnOiAxMDAwLAogICAgJ0FFJzogODg5LAogICAgJ29yZGZlbWluaW5lJzogMjc2LAogICAgJ0xzbGFzaCc6IDYxMSwKICAgICdPc2xhc2gnOiA3MjIsCiAgICAnT0UnOiA4ODksCiAgICAnb3JkbWFzY3VsaW5lJzogMzEwLAogICAgJ2FlJzogNjY3LAogICAgJ2RvdGxlc3NpJzogMjc4LAogICAgJ2xzbGFzaCc6IDI3OCwKICAgICdvc2xhc2gnOiA1MDAsCiAgICAnb2UnOiA3MjIsCiAgICAnZ2VybWFuZGJscyc6IDUwMCwKICAgICdJZGllcmVzaXMnOiAzMzMsCiAgICAnZWFjdXRlJzogNDQ0LAogICAgJ2FicmV2ZSc6IDQ0NCwKICAgICd1aHVuZ2FydW1sYXV0JzogNTAwLAogICAgJ2VjYXJvbic6IDQ0NCwKICAgICdZZGllcmVzaXMnOiA3MjIsCiAgICAnZGl2aWRlJzogNTY0LAogICAgJ1lhY3V0ZSc6IDcyMiwKICAgICdBY2lyY3VtZmxleCc6IDcyMiwKICAgICdhYWN1dGUnOiA0NDQsCiAgICAnVWNpcmN1bWZsZXgnOiA3MjIsCiAgICAneWFjdXRlJzogNTAwLAogICAgJ3Njb21tYWFjY2VudCc6IDM4OSwKICAgICdlY2lyY3VtZmxleCc6IDQ0NCwKICAgICdVcmluZyc6IDcyMiwKICAgICdVZGllcmVzaXMnOiA3MjIsCiAgICAnYW9nb25layc6IDQ0NCwKICAgICdVYWN1dGUnOiA3MjIsCiAgICAndW9nb25layc6IDUwMCwKICAgICdFZGllcmVzaXMnOiA2MTEsCiAgICAnRGNyb2F0JzogNzIyLAogICAgJ2NvbW1hYWNjZW50JzogMjUwLAogICAgJ2NvcHlyaWdodCc6IDc2MCwKICAgICdFbWFjcm9uJzogNjExLAogICAgJ2NjYXJvbic6IDQ0NCwKICAgICdhcmluZyc6IDQ0NCwKICAgICdOY29tbWFhY2NlbnQnOiA3MjIsCiAgICAnbGFjdXRlJzogMjc4LAogICAgJ2FncmF2ZSc6IDQ0NCwKICAgICdUY29tbWFhY2NlbnQnOiA2MTEsCiAgICAnQ2FjdXRlJzogNjY3LAogICAgJ2F0aWxkZSc6IDQ0NCwKICAgICdFZG90YWNjZW50JzogNjExLAogICAgJ3NjYXJvbic6IDM4OSwKICAgICdzY2VkaWxsYSc6IDM4OSwKICAgICdpYWN1dGUnOiAyNzgsCiAgICAnbG96ZW5nZSc6IDQ3MSwKICAgICdSY2Fyb24nOiA2NjcsCiAgICAnR2NvbW1hYWNjZW50JzogNzIyLAogICAgJ3VjaXJjdW1mbGV4JzogNTAwLAogICAgJ2FjaXJjdW1mbGV4JzogNDQ0LAogICAgJ0FtYWNyb24nOiA3MjIsCiAgICAncmNhcm9uJzogMzMzLAogICAgJ2NjZWRpbGxhJzogNDQ0LAogICAgJ1pkb3RhY2NlbnQnOiA2MTEsCiAgICAnVGhvcm4nOiA1NTYsCiAgICAnT21hY3Jvbic6IDcyMiwKICAgICdSYWN1dGUnOiA2NjcsCiAgICAnU2FjdXRlJzogNTU2LAogICAgJ2RjYXJvbic6IDU4OCwKICAgICdVbWFjcm9uJzogNzIyLAogICAgJ3VyaW5nJzogNTAwLAogICAgJ3RocmVlc3VwZXJpb3InOiAzMDAsCiAgICAnT2dyYXZlJzogNzIyLAogICAgJ0FncmF2ZSc6IDcyMiwKICAgICdBYnJldmUnOiA3MjIsCiAgICAnbXVsdGlwbHknOiA1NjQsCiAgICAndWFjdXRlJzogNTAwLAogICAgJ1RjYXJvbic6IDYxMSwKICAgICdwYXJ0aWFsZGlmZic6IDQ3NiwKICAgICd5ZGllcmVzaXMnOiA1MDAsCiAgICAnTmFjdXRlJzogNzIyLAogICAgJ2ljaXJjdW1mbGV4JzogMjc4LAogICAgJ0VjaXJjdW1mbGV4JzogNjExLAogICAgJ2FkaWVyZXNpcyc6IDQ0NCwKICAgICdlZGllcmVzaXMnOiA0NDQsCiAgICAnY2FjdXRlJzogNDQ0LAogICAgJ25hY3V0ZSc6IDUwMCwKICAgICd1bWFjcm9uJzogNTAwLAogICAgJ05jYXJvbic6IDcyMiwKICAgICdJYWN1dGUnOiAzMzMsCiAgICAncGx1c21pbnVzJzogNTY0LAogICAgJ2Jyb2tlbmJhcic6IDIwMCwKICAgICdyZWdpc3RlcmVkJzogNzYwLAogICAgJ0dicmV2ZSc6IDcyMiwKICAgICdJZG90YWNjZW50JzogMzMzLAogICAgJ3N1bW1hdGlvbic6IDYwMCwKICAgICdFZ3JhdmUnOiA2MTEsCiAgICAncmFjdXRlJzogMzMzLAogICAgJ29tYWNyb24nOiA1MDAsCiAgICAnWmFjdXRlJzogNjExLAogICAgJ1pjYXJvbic6IDYxMSwKICAgICdncmVhdGVyZXF1YWwnOiA1NDksCiAgICAnRXRoJzogNzIyLAogICAgJ0NjZWRpbGxhJzogNjY3LAogICAgJ2xjb21tYWFjY2VudCc6IDI3OCwKICAgICd0Y2Fyb24nOiAzMjYsCiAgICAnZW9nb25layc6IDQ0NCwKICAgICdVb2dvbmVrJzogNzIyLAogICAgJ0FhY3V0ZSc6IDcyMiwKICAgICdBZGllcmVzaXMnOiA3MjIsCiAgICAnZWdyYXZlJzogNDQ0LAogICAgJ3phY3V0ZSc6IDQ0NCwKICAgICdpb2dvbmVrJzogMjc4LAogICAgJ09hY3V0ZSc6IDcyMiwKICAgICdvYWN1dGUnOiA1MDAsCiAgICAnYW1hY3Jvbic6IDQ0NCwKICAgICdzYWN1dGUnOiAzODksCiAgICAnaWRpZXJlc2lzJzogMjc4LAogICAgJ09jaXJjdW1mbGV4JzogNzIyLAogICAgJ1VncmF2ZSc6IDcyMiwKICAgICdEZWx0YSc6IDYxMiwKICAgICd0aG9ybic6IDUwMCwKICAgICd0d29zdXBlcmlvcic6IDMwMCwKICAgICdPZGllcmVzaXMnOiA3MjIsCiAgICAnbXUnOiA1MDAsCiAgICAnaWdyYXZlJzogMjc4LAogICAgJ29odW5nYXJ1bWxhdXQnOiA1MDAsCiAgICAnRW9nb25layc6IDYxMSwKICAgICdkY3JvYXQnOiA1MDAsCiAgICAndGhyZWVxdWFydGVycyc6IDc1MCwKICAgICdTY2VkaWxsYSc6IDU1NiwKICAgICdsY2Fyb24nOiAzNDQsCiAgICAnS2NvbW1hYWNjZW50JzogNzIyLAogICAgJ0xhY3V0ZSc6IDYxMSwKICAgICd0cmFkZW1hcmsnOiA5ODAsCiAgICAnZWRvdGFjY2VudCc6IDQ0NCwKICAgICdJZ3JhdmUnOiAzMzMsCiAgICAnSW1hY3Jvbic6IDMzMywKICAgICdMY2Fyb24nOiA2MTEsCiAgICAnb25laGFsZic6IDc1MCwKICAgICdsZXNzZXF1YWwnOiA1NDksCiAgICAnb2NpcmN1bWZsZXgnOiA1MDAsCiAgICAnbnRpbGRlJzogNTAwLAogICAgJ1VodW5nYXJ1bWxhdXQnOiA3MjIsCiAgICAnRWFjdXRlJzogNjExLAogICAgJ2VtYWNyb24nOiA0NDQsCiAgICAnZ2JyZXZlJzogNTAwLAogICAgJ29uZXF1YXJ0ZXInOiA3NTAsCiAgICAnU2Nhcm9uJzogNTU2LAogICAgJ1Njb21tYWFjY2VudCc6IDU1NiwKICAgICdPaHVuZ2FydW1sYXV0JzogNzIyLAogICAgJ2RlZ3JlZSc6IDQwMCwKICAgICdvZ3JhdmUnOiA1MDAsCiAgICAnQ2Nhcm9uJzogNjY3LAogICAgJ3VncmF2ZSc6IDUwMCwKICAgICdyYWRpY2FsJzogNDUzLAogICAgJ0RjYXJvbic6IDcyMiwKICAgICdyY29tbWFhY2NlbnQnOiAzMzMsCiAgICAnTnRpbGRlJzogNzIyLAogICAgJ290aWxkZSc6IDUwMCwKICAgICdSY29tbWFhY2NlbnQnOiA2NjcsCiAgICAnTGNvbW1hYWNjZW50JzogNjExLAogICAgJ0F0aWxkZSc6IDcyMiwKICAgICdBb2dvbmVrJzogNzIyLAogICAgJ0FyaW5nJzogNzIyLAogICAgJ090aWxkZSc6IDcyMiwKICAgICd6ZG90YWNjZW50JzogNDQ0LAogICAgJ0VjYXJvbic6IDYxMSwKICAgICdJb2dvbmVrJzogMzMzLAogICAgJ2tjb21tYWFjY2VudCc6IDUwMCwKICAgICdtaW51cyc6IDU2NCwKICAgICdJY2lyY3VtZmxleCc6IDMzMywKICAgICduY2Fyb24nOiA1MDAsCiAgICAndGNvbW1hYWNjZW50JzogMjc4LAogICAgJ2xvZ2ljYWxub3QnOiA1NjQsCiAgICAnb2RpZXJlc2lzJzogNTAwLAogICAgJ3VkaWVyZXNpcyc6IDUwMCwKICAgICdub3RlcXVhbCc6IDU0OSwKICAgICdnY29tbWFhY2NlbnQnOiA1MDAsCiAgICAnZXRoJzogNTAwLAogICAgJ3pjYXJvbic6IDQ0NCwKICAgICduY29tbWFhY2NlbnQnOiA1MDAsCiAgICAnb25lc3VwZXJpb3InOiAzMDAsCiAgICAnaW1hY3Jvbic6IDI3OCwKICAgICdFdXJvJzogNTAwCiAgfSwKICAnVGltZXMtQm9sZCc6IHsKICAgICdzcGFjZSc6IDI1MCwKICAgICdleGNsYW0nOiAzMzMsCiAgICAncXVvdGVkYmwnOiA1NTUsCiAgICAnbnVtYmVyc2lnbic6IDUwMCwKICAgICdkb2xsYXInOiA1MDAsCiAgICAncGVyY2VudCc6IDEwMDAsCiAgICAnYW1wZXJzYW5kJzogODMzLAogICAgJ3F1b3RlcmlnaHQnOiAzMzMsCiAgICAncGFyZW5sZWZ0JzogMzMzLAogICAgJ3BhcmVucmlnaHQnOiAzMzMsCiAgICAnYXN0ZXJpc2snOiA1MDAsCiAgICAncGx1cyc6IDU3MCwKICAgICdjb21tYSc6IDI1MCwKICAgICdoeXBoZW4nOiAzMzMsCiAgICAncGVyaW9kJzogMjUwLAogICAgJ3NsYXNoJzogMjc4LAogICAgJ3plcm8nOiA1MDAsCiAgICAnb25lJzogNTAwLAogICAgJ3R3byc6IDUwMCwKICAgICd0aHJlZSc6IDUwMCwKICAgICdmb3VyJzogNTAwLAogICAgJ2ZpdmUnOiA1MDAsCiAgICAnc2l4JzogNTAwLAogICAgJ3NldmVuJzogNTAwLAogICAgJ2VpZ2h0JzogNTAwLAogICAgJ25pbmUnOiA1MDAsCiAgICAnY29sb24nOiAzMzMsCiAgICAnc2VtaWNvbG9uJzogMzMzLAogICAgJ2xlc3MnOiA1NzAsCiAgICAnZXF1YWwnOiA1NzAsCiAgICAnZ3JlYXRlcic6IDU3MCwKICAgICdxdWVzdGlvbic6IDUwMCwKICAgICdhdCc6IDkzMCwKICAgICdBJzogNzIyLAogICAgJ0InOiA2NjcsCiAgICAnQyc6IDcyMiwKICAgICdEJzogNzIyLAogICAgJ0UnOiA2NjcsCiAgICAnRic6IDYxMSwKICAgICdHJzogNzc4LAogICAgJ0gnOiA3NzgsCiAgICAnSSc6IDM4OSwKICAgICdKJzogNTAwLAogICAgJ0snOiA3NzgsCiAgICAnTCc6IDY2NywKICAgICdNJzogOTQ0LAogICAgJ04nOiA3MjIsCiAgICAnTyc6IDc3OCwKICAgICdQJzogNjExLAogICAgJ1EnOiA3NzgsCiAgICAnUic6IDcyMiwKICAgICdTJzogNTU2LAogICAgJ1QnOiA2NjcsCiAgICAnVSc6IDcyMiwKICAgICdWJzogNzIyLAogICAgJ1cnOiAxMDAwLAogICAgJ1gnOiA3MjIsCiAgICAnWSc6IDcyMiwKICAgICdaJzogNjY3LAogICAgJ2JyYWNrZXRsZWZ0JzogMzMzLAogICAgJ2JhY2tzbGFzaCc6IDI3OCwKICAgICdicmFja2V0cmlnaHQnOiAzMzMsCiAgICAnYXNjaWljaXJjdW0nOiA1ODEsCiAgICAndW5kZXJzY29yZSc6IDUwMCwKICAgICdxdW90ZWxlZnQnOiAzMzMsCiAgICAnYSc6IDUwMCwKICAgICdiJzogNTU2LAogICAgJ2MnOiA0NDQsCiAgICAnZCc6IDU1NiwKICAgICdlJzogNDQ0LAogICAgJ2YnOiAzMzMsCiAgICAnZyc6IDUwMCwKICAgICdoJzogNTU2LAogICAgJ2knOiAyNzgsCiAgICAnaic6IDMzMywKICAgICdrJzogNTU2LAogICAgJ2wnOiAyNzgsCiAgICAnbSc6IDgzMywKICAgICduJzogNTU2LAogICAgJ28nOiA1MDAsCiAgICAncCc6IDU1NiwKICAgICdxJzogNTU2LAogICAgJ3InOiA0NDQsCiAgICAncyc6IDM4OSwKICAgICd0JzogMzMzLAogICAgJ3UnOiA1NTYsCiAgICAndic6IDUwMCwKICAgICd3JzogNzIyLAogICAgJ3gnOiA1MDAsCiAgICAneSc6IDUwMCwKICAgICd6JzogNDQ0LAogICAgJ2JyYWNlbGVmdCc6IDM5NCwKICAgICdiYXInOiAyMjAsCiAgICAnYnJhY2VyaWdodCc6IDM5NCwKICAgICdhc2NpaXRpbGRlJzogNTIwLAogICAgJ2V4Y2xhbWRvd24nOiAzMzMsCiAgICAnY2VudCc6IDUwMCwKICAgICdzdGVybGluZyc6IDUwMCwKICAgICdmcmFjdGlvbic6IDE2NywKICAgICd5ZW4nOiA1MDAsCiAgICAnZmxvcmluJzogNTAwLAogICAgJ3NlY3Rpb24nOiA1MDAsCiAgICAnY3VycmVuY3knOiA1MDAsCiAgICAncXVvdGVzaW5nbGUnOiAyNzgsCiAgICAncXVvdGVkYmxsZWZ0JzogNTAwLAogICAgJ2d1aWxsZW1vdGxlZnQnOiA1MDAsCiAgICAnZ3VpbHNpbmdsbGVmdCc6IDMzMywKICAgICdndWlsc2luZ2xyaWdodCc6IDMzMywKICAgICdmaSc6IDU1NiwKICAgICdmbCc6IDU1NiwKICAgICdlbmRhc2gnOiA1MDAsCiAgICAnZGFnZ2VyJzogNTAwLAogICAgJ2RhZ2dlcmRibCc6IDUwMCwKICAgICdwZXJpb2RjZW50ZXJlZCc6IDI1MCwKICAgICdwYXJhZ3JhcGgnOiA1NDAsCiAgICAnYnVsbGV0JzogMzUwLAogICAgJ3F1b3Rlc2luZ2xiYXNlJzogMzMzLAogICAgJ3F1b3RlZGJsYmFzZSc6IDUwMCwKICAgICdxdW90ZWRibHJpZ2h0JzogNTAwLAogICAgJ2d1aWxsZW1vdHJpZ2h0JzogNTAwLAogICAgJ2VsbGlwc2lzJzogMTAwMCwKICAgICdwZXJ0aG91c2FuZCc6IDEwMDAsCiAgICAncXVlc3Rpb25kb3duJzogNTAwLAogICAgJ2dyYXZlJzogMzMzLAogICAgJ2FjdXRlJzogMzMzLAogICAgJ2NpcmN1bWZsZXgnOiAzMzMsCiAgICAndGlsZGUnOiAzMzMsCiAgICAnbWFjcm9uJzogMzMzLAogICAgJ2JyZXZlJzogMzMzLAogICAgJ2RvdGFjY2VudCc6IDMzMywKICAgICdkaWVyZXNpcyc6IDMzMywKICAgICdyaW5nJzogMzMzLAogICAgJ2NlZGlsbGEnOiAzMzMsCiAgICAnaHVuZ2FydW1sYXV0JzogMzMzLAogICAgJ29nb25layc6IDMzMywKICAgICdjYXJvbic6IDMzMywKICAgICdlbWRhc2gnOiAxMDAwLAogICAgJ0FFJzogMTAwMCwKICAgICdvcmRmZW1pbmluZSc6IDMwMCwKICAgICdMc2xhc2gnOiA2NjcsCiAgICAnT3NsYXNoJzogNzc4LAogICAgJ09FJzogMTAwMCwKICAgICdvcmRtYXNjdWxpbmUnOiAzMzAsCiAgICAnYWUnOiA3MjIsCiAgICAnZG90bGVzc2knOiAyNzgsCiAgICAnbHNsYXNoJzogMjc4LAogICAgJ29zbGFzaCc6IDUwMCwKICAgICdvZSc6IDcyMiwKICAgICdnZXJtYW5kYmxzJzogNTU2LAogICAgJ0lkaWVyZXNpcyc6IDM4OSwKICAgICdlYWN1dGUnOiA0NDQsCiAgICAnYWJyZXZlJzogNTAwLAogICAgJ3VodW5nYXJ1bWxhdXQnOiA1NTYsCiAgICAnZWNhcm9uJzogNDQ0LAogICAgJ1lkaWVyZXNpcyc6IDcyMiwKICAgICdkaXZpZGUnOiA1NzAsCiAgICAnWWFjdXRlJzogNzIyLAogICAgJ0FjaXJjdW1mbGV4JzogNzIyLAogICAgJ2FhY3V0ZSc6IDUwMCwKICAgICdVY2lyY3VtZmxleCc6IDcyMiwKICAgICd5YWN1dGUnOiA1MDAsCiAgICAnc2NvbW1hYWNjZW50JzogMzg5LAogICAgJ2VjaXJjdW1mbGV4JzogNDQ0LAogICAgJ1VyaW5nJzogNzIyLAogICAgJ1VkaWVyZXNpcyc6IDcyMiwKICAgICdhb2dvbmVrJzogNTAwLAogICAgJ1VhY3V0ZSc6IDcyMiwKICAgICd1b2dvbmVrJzogNTU2LAogICAgJ0VkaWVyZXNpcyc6IDY2NywKICAgICdEY3JvYXQnOiA3MjIsCiAgICAnY29tbWFhY2NlbnQnOiAyNTAsCiAgICAnY29weXJpZ2h0JzogNzQ3LAogICAgJ0VtYWNyb24nOiA2NjcsCiAgICAnY2Nhcm9uJzogNDQ0LAogICAgJ2FyaW5nJzogNTAwLAogICAgJ05jb21tYWFjY2VudCc6IDcyMiwKICAgICdsYWN1dGUnOiAyNzgsCiAgICAnYWdyYXZlJzogNTAwLAogICAgJ1Rjb21tYWFjY2VudCc6IDY2NywKICAgICdDYWN1dGUnOiA3MjIsCiAgICAnYXRpbGRlJzogNTAwLAogICAgJ0Vkb3RhY2NlbnQnOiA2NjcsCiAgICAnc2Nhcm9uJzogMzg5LAogICAgJ3NjZWRpbGxhJzogMzg5LAogICAgJ2lhY3V0ZSc6IDI3OCwKICAgICdsb3plbmdlJzogNDk0LAogICAgJ1JjYXJvbic6IDcyMiwKICAgICdHY29tbWFhY2NlbnQnOiA3NzgsCiAgICAndWNpcmN1bWZsZXgnOiA1NTYsCiAgICAnYWNpcmN1bWZsZXgnOiA1MDAsCiAgICAnQW1hY3Jvbic6IDcyMiwKICAgICdyY2Fyb24nOiA0NDQsCiAgICAnY2NlZGlsbGEnOiA0NDQsCiAgICAnWmRvdGFjY2VudCc6IDY2NywKICAgICdUaG9ybic6IDYxMSwKICAgICdPbWFjcm9uJzogNzc4LAogICAgJ1JhY3V0ZSc6IDcyMiwKICAgICdTYWN1dGUnOiA1NTYsCiAgICAnZGNhcm9uJzogNjcyLAogICAgJ1VtYWNyb24nOiA3MjIsCiAgICAndXJpbmcnOiA1NTYsCiAgICAndGhyZWVzdXBlcmlvcic6IDMwMCwKICAgICdPZ3JhdmUnOiA3NzgsCiAgICAnQWdyYXZlJzogNzIyLAogICAgJ0FicmV2ZSc6IDcyMiwKICAgICdtdWx0aXBseSc6IDU3MCwKICAgICd1YWN1dGUnOiA1NTYsCiAgICAnVGNhcm9uJzogNjY3LAogICAgJ3BhcnRpYWxkaWZmJzogNDk0LAogICAgJ3lkaWVyZXNpcyc6IDUwMCwKICAgICdOYWN1dGUnOiA3MjIsCiAgICAnaWNpcmN1bWZsZXgnOiAyNzgsCiAgICAnRWNpcmN1bWZsZXgnOiA2NjcsCiAgICAnYWRpZXJlc2lzJzogNTAwLAogICAgJ2VkaWVyZXNpcyc6IDQ0NCwKICAgICdjYWN1dGUnOiA0NDQsCiAgICAnbmFjdXRlJzogNTU2LAogICAgJ3VtYWNyb24nOiA1NTYsCiAgICAnTmNhcm9uJzogNzIyLAogICAgJ0lhY3V0ZSc6IDM4OSwKICAgICdwbHVzbWludXMnOiA1NzAsCiAgICAnYnJva2VuYmFyJzogMjIwLAogICAgJ3JlZ2lzdGVyZWQnOiA3NDcsCiAgICAnR2JyZXZlJzogNzc4LAogICAgJ0lkb3RhY2NlbnQnOiAzODksCiAgICAnc3VtbWF0aW9uJzogNjAwLAogICAgJ0VncmF2ZSc6IDY2NywKICAgICdyYWN1dGUnOiA0NDQsCiAgICAnb21hY3Jvbic6IDUwMCwKICAgICdaYWN1dGUnOiA2NjcsCiAgICAnWmNhcm9uJzogNjY3LAogICAgJ2dyZWF0ZXJlcXVhbCc6IDU0OSwKICAgICdFdGgnOiA3MjIsCiAgICAnQ2NlZGlsbGEnOiA3MjIsCiAgICAnbGNvbW1hYWNjZW50JzogMjc4LAogICAgJ3RjYXJvbic6IDQxNiwKICAgICdlb2dvbmVrJzogNDQ0LAogICAgJ1VvZ29uZWsnOiA3MjIsCiAgICAnQWFjdXRlJzogNzIyLAogICAgJ0FkaWVyZXNpcyc6IDcyMiwKICAgICdlZ3JhdmUnOiA0NDQsCiAgICAnemFjdXRlJzogNDQ0LAogICAgJ2lvZ29uZWsnOiAyNzgsCiAgICAnT2FjdXRlJzogNzc4LAogICAgJ29hY3V0ZSc6IDUwMCwKICAgICdhbWFjcm9uJzogNTAwLAogICAgJ3NhY3V0ZSc6IDM4OSwKICAgICdpZGllcmVzaXMnOiAyNzgsCiAgICAnT2NpcmN1bWZsZXgnOiA3NzgsCiAgICAnVWdyYXZlJzogNzIyLAogICAgJ0RlbHRhJzogNjEyLAogICAgJ3Rob3JuJzogNTU2LAogICAgJ3R3b3N1cGVyaW9yJzogMzAwLAogICAgJ09kaWVyZXNpcyc6IDc3OCwKICAgICdtdSc6IDU1NiwKICAgICdpZ3JhdmUnOiAyNzgsCiAgICAnb2h1bmdhcnVtbGF1dCc6IDUwMCwKICAgICdFb2dvbmVrJzogNjY3LAogICAgJ2Rjcm9hdCc6IDU1NiwKICAgICd0aHJlZXF1YXJ0ZXJzJzogNzUwLAogICAgJ1NjZWRpbGxhJzogNTU2LAogICAgJ2xjYXJvbic6IDM5NCwKICAgICdLY29tbWFhY2NlbnQnOiA3NzgsCiAgICAnTGFjdXRlJzogNjY3LAogICAgJ3RyYWRlbWFyayc6IDEwMDAsCiAgICAnZWRvdGFjY2VudCc6IDQ0NCwKICAgICdJZ3JhdmUnOiAzODksCiAgICAnSW1hY3Jvbic6IDM4OSwKICAgICdMY2Fyb24nOiA2NjcsCiAgICAnb25laGFsZic6IDc1MCwKICAgICdsZXNzZXF1YWwnOiA1NDksCiAgICAnb2NpcmN1bWZsZXgnOiA1MDAsCiAgICAnbnRpbGRlJzogNTU2LAogICAgJ1VodW5nYXJ1bWxhdXQnOiA3MjIsCiAgICAnRWFjdXRlJzogNjY3LAogICAgJ2VtYWNyb24nOiA0NDQsCiAgICAnZ2JyZXZlJzogNTAwLAogICAgJ29uZXF1YXJ0ZXInOiA3NTAsCiAgICAnU2Nhcm9uJzogNTU2LAogICAgJ1Njb21tYWFjY2VudCc6IDU1NiwKICAgICdPaHVuZ2FydW1sYXV0JzogNzc4LAogICAgJ2RlZ3JlZSc6IDQwMCwKICAgICdvZ3JhdmUnOiA1MDAsCiAgICAnQ2Nhcm9uJzogNzIyLAogICAgJ3VncmF2ZSc6IDU1NiwKICAgICdyYWRpY2FsJzogNTQ5LAogICAgJ0RjYXJvbic6IDcyMiwKICAgICdyY29tbWFhY2NlbnQnOiA0NDQsCiAgICAnTnRpbGRlJzogNzIyLAogICAgJ290aWxkZSc6IDUwMCwKICAgICdSY29tbWFhY2NlbnQnOiA3MjIsCiAgICAnTGNvbW1hYWNjZW50JzogNjY3LAogICAgJ0F0aWxkZSc6IDcyMiwKICAgICdBb2dvbmVrJzogNzIyLAogICAgJ0FyaW5nJzogNzIyLAogICAgJ090aWxkZSc6IDc3OCwKICAgICd6ZG90YWNjZW50JzogNDQ0LAogICAgJ0VjYXJvbic6IDY2NywKICAgICdJb2dvbmVrJzogMzg5LAogICAgJ2tjb21tYWFjY2VudCc6IDU1NiwKICAgICdtaW51cyc6IDU3MCwKICAgICdJY2lyY3VtZmxleCc6IDM4OSwKICAgICduY2Fyb24nOiA1NTYsCiAgICAndGNvbW1hYWNjZW50JzogMzMzLAogICAgJ2xvZ2ljYWxub3QnOiA1NzAsCiAgICAnb2RpZXJlc2lzJzogNTAwLAogICAgJ3VkaWVyZXNpcyc6IDU1NiwKICAgICdub3RlcXVhbCc6IDU0OSwKICAgICdnY29tbWFhY2NlbnQnOiA1MDAsCiAgICAnZXRoJzogNTAwLAogICAgJ3pjYXJvbic6IDQ0NCwKICAgICduY29tbWFhY2NlbnQnOiA1NTYsCiAgICAnb25lc3VwZXJpb3InOiAzMDAsCiAgICAnaW1hY3Jvbic6IDI3OCwKICAgICdFdXJvJzogNTAwCiAgfSwKICAnVGltZXMtQm9sZEl0YWxpYyc6IHsKICAgICdzcGFjZSc6IDI1MCwKICAgICdleGNsYW0nOiAzODksCiAgICAncXVvdGVkYmwnOiA1NTUsCiAgICAnbnVtYmVyc2lnbic6IDUwMCwKICAgICdkb2xsYXInOiA1MDAsCiAgICAncGVyY2VudCc6IDgzMywKICAgICdhbXBlcnNhbmQnOiA3NzgsCiAgICAncXVvdGVyaWdodCc6IDMzMywKICAgICdwYXJlbmxlZnQnOiAzMzMsCiAgICAncGFyZW5yaWdodCc6IDMzMywKICAgICdhc3Rlcmlzayc6IDUwMCwKICAgICdwbHVzJzogNTcwLAogICAgJ2NvbW1hJzogMjUwLAogICAgJ2h5cGhlbic6IDMzMywKICAgICdwZXJpb2QnOiAyNTAsCiAgICAnc2xhc2gnOiAyNzgsCiAgICAnemVybyc6IDUwMCwKICAgICdvbmUnOiA1MDAsCiAgICAndHdvJzogNTAwLAogICAgJ3RocmVlJzogNTAwLAogICAgJ2ZvdXInOiA1MDAsCiAgICAnZml2ZSc6IDUwMCwKICAgICdzaXgnOiA1MDAsCiAgICAnc2V2ZW4nOiA1MDAsCiAgICAnZWlnaHQnOiA1MDAsCiAgICAnbmluZSc6IDUwMCwKICAgICdjb2xvbic6IDMzMywKICAgICdzZW1pY29sb24nOiAzMzMsCiAgICAnbGVzcyc6IDU3MCwKICAgICdlcXVhbCc6IDU3MCwKICAgICdncmVhdGVyJzogNTcwLAogICAgJ3F1ZXN0aW9uJzogNTAwLAogICAgJ2F0JzogODMyLAogICAgJ0EnOiA2NjcsCiAgICAnQic6IDY2NywKICAgICdDJzogNjY3LAogICAgJ0QnOiA3MjIsCiAgICAnRSc6IDY2NywKICAgICdGJzogNjY3LAogICAgJ0cnOiA3MjIsCiAgICAnSCc6IDc3OCwKICAgICdJJzogMzg5LAogICAgJ0onOiA1MDAsCiAgICAnSyc6IDY2NywKICAgICdMJzogNjExLAogICAgJ00nOiA4ODksCiAgICAnTic6IDcyMiwKICAgICdPJzogNzIyLAogICAgJ1AnOiA2MTEsCiAgICAnUSc6IDcyMiwKICAgICdSJzogNjY3LAogICAgJ1MnOiA1NTYsCiAgICAnVCc6IDYxMSwKICAgICdVJzogNzIyLAogICAgJ1YnOiA2NjcsCiAgICAnVyc6IDg4OSwKICAgICdYJzogNjY3LAogICAgJ1knOiA2MTEsCiAgICAnWic6IDYxMSwKICAgICdicmFja2V0bGVmdCc6IDMzMywKICAgICdiYWNrc2xhc2gnOiAyNzgsCiAgICAnYnJhY2tldHJpZ2h0JzogMzMzLAogICAgJ2FzY2lpY2lyY3VtJzogNTcwLAogICAgJ3VuZGVyc2NvcmUnOiA1MDAsCiAgICAncXVvdGVsZWZ0JzogMzMzLAogICAgJ2EnOiA1MDAsCiAgICAnYic6IDUwMCwKICAgICdjJzogNDQ0LAogICAgJ2QnOiA1MDAsCiAgICAnZSc6IDQ0NCwKICAgICdmJzogMzMzLAogICAgJ2cnOiA1MDAsCiAgICAnaCc6IDU1NiwKICAgICdpJzogMjc4LAogICAgJ2onOiAyNzgsCiAgICAnayc6IDUwMCwKICAgICdsJzogMjc4LAogICAgJ20nOiA3NzgsCiAgICAnbic6IDU1NiwKICAgICdvJzogNTAwLAogICAgJ3AnOiA1MDAsCiAgICAncSc6IDUwMCwKICAgICdyJzogMzg5LAogICAgJ3MnOiAzODksCiAgICAndCc6IDI3OCwKICAgICd1JzogNTU2LAogICAgJ3YnOiA0NDQsCiAgICAndyc6IDY2NywKICAgICd4JzogNTAwLAogICAgJ3knOiA0NDQsCiAgICAneic6IDM4OSwKICAgICdicmFjZWxlZnQnOiAzNDgsCiAgICAnYmFyJzogMjIwLAogICAgJ2JyYWNlcmlnaHQnOiAzNDgsCiAgICAnYXNjaWl0aWxkZSc6IDU3MCwKICAgICdleGNsYW1kb3duJzogMzg5LAogICAgJ2NlbnQnOiA1MDAsCiAgICAnc3RlcmxpbmcnOiA1MDAsCiAgICAnZnJhY3Rpb24nOiAxNjcsCiAgICAneWVuJzogNTAwLAogICAgJ2Zsb3Jpbic6IDUwMCwKICAgICdzZWN0aW9uJzogNTAwLAogICAgJ2N1cnJlbmN5JzogNTAwLAogICAgJ3F1b3Rlc2luZ2xlJzogMjc4LAogICAgJ3F1b3RlZGJsbGVmdCc6IDUwMCwKICAgICdndWlsbGVtb3RsZWZ0JzogNTAwLAogICAgJ2d1aWxzaW5nbGxlZnQnOiAzMzMsCiAgICAnZ3VpbHNpbmdscmlnaHQnOiAzMzMsCiAgICAnZmknOiA1NTYsCiAgICAnZmwnOiA1NTYsCiAgICAnZW5kYXNoJzogNTAwLAogICAgJ2RhZ2dlcic6IDUwMCwKICAgICdkYWdnZXJkYmwnOiA1MDAsCiAgICAncGVyaW9kY2VudGVyZWQnOiAyNTAsCiAgICAncGFyYWdyYXBoJzogNTAwLAogICAgJ2J1bGxldCc6IDM1MCwKICAgICdxdW90ZXNpbmdsYmFzZSc6IDMzMywKICAgICdxdW90ZWRibGJhc2UnOiA1MDAsCiAgICAncXVvdGVkYmxyaWdodCc6IDUwMCwKICAgICdndWlsbGVtb3RyaWdodCc6IDUwMCwKICAgICdlbGxpcHNpcyc6IDEwMDAsCiAgICAncGVydGhvdXNhbmQnOiAxMDAwLAogICAgJ3F1ZXN0aW9uZG93bic6IDUwMCwKICAgICdncmF2ZSc6IDMzMywKICAgICdhY3V0ZSc6IDMzMywKICAgICdjaXJjdW1mbGV4JzogMzMzLAogICAgJ3RpbGRlJzogMzMzLAogICAgJ21hY3Jvbic6IDMzMywKICAgICdicmV2ZSc6IDMzMywKICAgICdkb3RhY2NlbnQnOiAzMzMsCiAgICAnZGllcmVzaXMnOiAzMzMsCiAgICAncmluZyc6IDMzMywKICAgICdjZWRpbGxhJzogMzMzLAogICAgJ2h1bmdhcnVtbGF1dCc6IDMzMywKICAgICdvZ29uZWsnOiAzMzMsCiAgICAnY2Fyb24nOiAzMzMsCiAgICAnZW1kYXNoJzogMTAwMCwKICAgICdBRSc6IDk0NCwKICAgICdvcmRmZW1pbmluZSc6IDI2NiwKICAgICdMc2xhc2gnOiA2MTEsCiAgICAnT3NsYXNoJzogNzIyLAogICAgJ09FJzogOTQ0LAogICAgJ29yZG1hc2N1bGluZSc6IDMwMCwKICAgICdhZSc6IDcyMiwKICAgICdkb3RsZXNzaSc6IDI3OCwKICAgICdsc2xhc2gnOiAyNzgsCiAgICAnb3NsYXNoJzogNTAwLAogICAgJ29lJzogNzIyLAogICAgJ2dlcm1hbmRibHMnOiA1MDAsCiAgICAnSWRpZXJlc2lzJzogMzg5LAogICAgJ2VhY3V0ZSc6IDQ0NCwKICAgICdhYnJldmUnOiA1MDAsCiAgICAndWh1bmdhcnVtbGF1dCc6IDU1NiwKICAgICdlY2Fyb24nOiA0NDQsCiAgICAnWWRpZXJlc2lzJzogNjExLAogICAgJ2RpdmlkZSc6IDU3MCwKICAgICdZYWN1dGUnOiA2MTEsCiAgICAnQWNpcmN1bWZsZXgnOiA2NjcsCiAgICAnYWFjdXRlJzogNTAwLAogICAgJ1VjaXJjdW1mbGV4JzogNzIyLAogICAgJ3lhY3V0ZSc6IDQ0NCwKICAgICdzY29tbWFhY2NlbnQnOiAzODksCiAgICAnZWNpcmN1bWZsZXgnOiA0NDQsCiAgICAnVXJpbmcnOiA3MjIsCiAgICAnVWRpZXJlc2lzJzogNzIyLAogICAgJ2FvZ29uZWsnOiA1MDAsCiAgICAnVWFjdXRlJzogNzIyLAogICAgJ3VvZ29uZWsnOiA1NTYsCiAgICAnRWRpZXJlc2lzJzogNjY3LAogICAgJ0Rjcm9hdCc6IDcyMiwKICAgICdjb21tYWFjY2VudCc6IDI1MCwKICAgICdjb3B5cmlnaHQnOiA3NDcsCiAgICAnRW1hY3Jvbic6IDY2NywKICAgICdjY2Fyb24nOiA0NDQsCiAgICAnYXJpbmcnOiA1MDAsCiAgICAnTmNvbW1hYWNjZW50JzogNzIyLAogICAgJ2xhY3V0ZSc6IDI3OCwKICAgICdhZ3JhdmUnOiA1MDAsCiAgICAnVGNvbW1hYWNjZW50JzogNjExLAogICAgJ0NhY3V0ZSc6IDY2NywKICAgICdhdGlsZGUnOiA1MDAsCiAgICAnRWRvdGFjY2VudCc6IDY2NywKICAgICdzY2Fyb24nOiAzODksCiAgICAnc2NlZGlsbGEnOiAzODksCiAgICAnaWFjdXRlJzogMjc4LAogICAgJ2xvemVuZ2UnOiA0OTQsCiAgICAnUmNhcm9uJzogNjY3LAogICAgJ0djb21tYWFjY2VudCc6IDcyMiwKICAgICd1Y2lyY3VtZmxleCc6IDU1NiwKICAgICdhY2lyY3VtZmxleCc6IDUwMCwKICAgICdBbWFjcm9uJzogNjY3LAogICAgJ3JjYXJvbic6IDM4OSwKICAgICdjY2VkaWxsYSc6IDQ0NCwKICAgICdaZG90YWNjZW50JzogNjExLAogICAgJ1Rob3JuJzogNjExLAogICAgJ09tYWNyb24nOiA3MjIsCiAgICAnUmFjdXRlJzogNjY3LAogICAgJ1NhY3V0ZSc6IDU1NiwKICAgICdkY2Fyb24nOiA2MDgsCiAgICAnVW1hY3Jvbic6IDcyMiwKICAgICd1cmluZyc6IDU1NiwKICAgICd0aHJlZXN1cGVyaW9yJzogMzAwLAogICAgJ09ncmF2ZSc6IDcyMiwKICAgICdBZ3JhdmUnOiA2NjcsCiAgICAnQWJyZXZlJzogNjY3LAogICAgJ211bHRpcGx5JzogNTcwLAogICAgJ3VhY3V0ZSc6IDU1NiwKICAgICdUY2Fyb24nOiA2MTEsCiAgICAncGFydGlhbGRpZmYnOiA0OTQsCiAgICAneWRpZXJlc2lzJzogNDQ0LAogICAgJ05hY3V0ZSc6IDcyMiwKICAgICdpY2lyY3VtZmxleCc6IDI3OCwKICAgICdFY2lyY3VtZmxleCc6IDY2NywKICAgICdhZGllcmVzaXMnOiA1MDAsCiAgICAnZWRpZXJlc2lzJzogNDQ0LAogICAgJ2NhY3V0ZSc6IDQ0NCwKICAgICduYWN1dGUnOiA1NTYsCiAgICAndW1hY3Jvbic6IDU1NiwKICAgICdOY2Fyb24nOiA3MjIsCiAgICAnSWFjdXRlJzogMzg5LAogICAgJ3BsdXNtaW51cyc6IDU3MCwKICAgICdicm9rZW5iYXInOiAyMjAsCiAgICAncmVnaXN0ZXJlZCc6IDc0NywKICAgICdHYnJldmUnOiA3MjIsCiAgICAnSWRvdGFjY2VudCc6IDM4OSwKICAgICdzdW1tYXRpb24nOiA2MDAsCiAgICAnRWdyYXZlJzogNjY3LAogICAgJ3JhY3V0ZSc6IDM4OSwKICAgICdvbWFjcm9uJzogNTAwLAogICAgJ1phY3V0ZSc6IDYxMSwKICAgICdaY2Fyb24nOiA2MTEsCiAgICAnZ3JlYXRlcmVxdWFsJzogNTQ5LAogICAgJ0V0aCc6IDcyMiwKICAgICdDY2VkaWxsYSc6IDY2NywKICAgICdsY29tbWFhY2NlbnQnOiAyNzgsCiAgICAndGNhcm9uJzogMzY2LAogICAgJ2VvZ29uZWsnOiA0NDQsCiAgICAnVW9nb25layc6IDcyMiwKICAgICdBYWN1dGUnOiA2NjcsCiAgICAnQWRpZXJlc2lzJzogNjY3LAogICAgJ2VncmF2ZSc6IDQ0NCwKICAgICd6YWN1dGUnOiAzODksCiAgICAnaW9nb25layc6IDI3OCwKICAgICdPYWN1dGUnOiA3MjIsCiAgICAnb2FjdXRlJzogNTAwLAogICAgJ2FtYWNyb24nOiA1MDAsCiAgICAnc2FjdXRlJzogMzg5LAogICAgJ2lkaWVyZXNpcyc6IDI3OCwKICAgICdPY2lyY3VtZmxleCc6IDcyMiwKICAgICdVZ3JhdmUnOiA3MjIsCiAgICAnRGVsdGEnOiA2MTIsCiAgICAndGhvcm4nOiA1MDAsCiAgICAndHdvc3VwZXJpb3InOiAzMDAsCiAgICAnT2RpZXJlc2lzJzogNzIyLAogICAgJ211JzogNTc2LAogICAgJ2lncmF2ZSc6IDI3OCwKICAgICdvaHVuZ2FydW1sYXV0JzogNTAwLAogICAgJ0VvZ29uZWsnOiA2NjcsCiAgICAnZGNyb2F0JzogNTAwLAogICAgJ3RocmVlcXVhcnRlcnMnOiA3NTAsCiAgICAnU2NlZGlsbGEnOiA1NTYsCiAgICAnbGNhcm9uJzogMzgyLAogICAgJ0tjb21tYWFjY2VudCc6IDY2NywKICAgICdMYWN1dGUnOiA2MTEsCiAgICAndHJhZGVtYXJrJzogMTAwMCwKICAgICdlZG90YWNjZW50JzogNDQ0LAogICAgJ0lncmF2ZSc6IDM4OSwKICAgICdJbWFjcm9uJzogMzg5LAogICAgJ0xjYXJvbic6IDYxMSwKICAgICdvbmVoYWxmJzogNzUwLAogICAgJ2xlc3NlcXVhbCc6IDU0OSwKICAgICdvY2lyY3VtZmxleCc6IDUwMCwKICAgICdudGlsZGUnOiA1NTYsCiAgICAnVWh1bmdhcnVtbGF1dCc6IDcyMiwKICAgICdFYWN1dGUnOiA2NjcsCiAgICAnZW1hY3Jvbic6IDQ0NCwKICAgICdnYnJldmUnOiA1MDAsCiAgICAnb25lcXVhcnRlcic6IDc1MCwKICAgICdTY2Fyb24nOiA1NTYsCiAgICAnU2NvbW1hYWNjZW50JzogNTU2LAogICAgJ09odW5nYXJ1bWxhdXQnOiA3MjIsCiAgICAnZGVncmVlJzogNDAwLAogICAgJ29ncmF2ZSc6IDUwMCwKICAgICdDY2Fyb24nOiA2NjcsCiAgICAndWdyYXZlJzogNTU2LAogICAgJ3JhZGljYWwnOiA1NDksCiAgICAnRGNhcm9uJzogNzIyLAogICAgJ3Jjb21tYWFjY2VudCc6IDM4OSwKICAgICdOdGlsZGUnOiA3MjIsCiAgICAnb3RpbGRlJzogNTAwLAogICAgJ1Jjb21tYWFjY2VudCc6IDY2NywKICAgICdMY29tbWFhY2NlbnQnOiA2MTEsCiAgICAnQXRpbGRlJzogNjY3LAogICAgJ0FvZ29uZWsnOiA2NjcsCiAgICAnQXJpbmcnOiA2NjcsCiAgICAnT3RpbGRlJzogNzIyLAogICAgJ3pkb3RhY2NlbnQnOiAzODksCiAgICAnRWNhcm9uJzogNjY3LAogICAgJ0lvZ29uZWsnOiAzODksCiAgICAna2NvbW1hYWNjZW50JzogNTAwLAogICAgJ21pbnVzJzogNjA2LAogICAgJ0ljaXJjdW1mbGV4JzogMzg5LAogICAgJ25jYXJvbic6IDU1NiwKICAgICd0Y29tbWFhY2NlbnQnOiAyNzgsCiAgICAnbG9naWNhbG5vdCc6IDYwNiwKICAgICdvZGllcmVzaXMnOiA1MDAsCiAgICAndWRpZXJlc2lzJzogNTU2LAogICAgJ25vdGVxdWFsJzogNTQ5LAogICAgJ2djb21tYWFjY2VudCc6IDUwMCwKICAgICdldGgnOiA1MDAsCiAgICAnemNhcm9uJzogMzg5LAogICAgJ25jb21tYWFjY2VudCc6IDU1NiwKICAgICdvbmVzdXBlcmlvcic6IDMwMCwKICAgICdpbWFjcm9uJzogMjc4LAogICAgJ0V1cm8nOiA1MDAKICB9LAogICdUaW1lcy1JdGFsaWMnOiB7CiAgICAnc3BhY2UnOiAyNTAsCiAgICAnZXhjbGFtJzogMzMzLAogICAgJ3F1b3RlZGJsJzogNDIwLAogICAgJ251bWJlcnNpZ24nOiA1MDAsCiAgICAnZG9sbGFyJzogNTAwLAogICAgJ3BlcmNlbnQnOiA4MzMsCiAgICAnYW1wZXJzYW5kJzogNzc4LAogICAgJ3F1b3RlcmlnaHQnOiAzMzMsCiAgICAncGFyZW5sZWZ0JzogMzMzLAogICAgJ3BhcmVucmlnaHQnOiAzMzMsCiAgICAnYXN0ZXJpc2snOiA1MDAsCiAgICAncGx1cyc6IDY3NSwKICAgICdjb21tYSc6IDI1MCwKICAgICdoeXBoZW4nOiAzMzMsCiAgICAncGVyaW9kJzogMjUwLAogICAgJ3NsYXNoJzogMjc4LAogICAgJ3plcm8nOiA1MDAsCiAgICAnb25lJzogNTAwLAogICAgJ3R3byc6IDUwMCwKICAgICd0aHJlZSc6IDUwMCwKICAgICdmb3VyJzogNTAwLAogICAgJ2ZpdmUnOiA1MDAsCiAgICAnc2l4JzogNTAwLAogICAgJ3NldmVuJzogNTAwLAogICAgJ2VpZ2h0JzogNTAwLAogICAgJ25pbmUnOiA1MDAsCiAgICAnY29sb24nOiAzMzMsCiAgICAnc2VtaWNvbG9uJzogMzMzLAogICAgJ2xlc3MnOiA2NzUsCiAgICAnZXF1YWwnOiA2NzUsCiAgICAnZ3JlYXRlcic6IDY3NSwKICAgICdxdWVzdGlvbic6IDUwMCwKICAgICdhdCc6IDkyMCwKICAgICdBJzogNjExLAogICAgJ0InOiA2MTEsCiAgICAnQyc6IDY2NywKICAgICdEJzogNzIyLAogICAgJ0UnOiA2MTEsCiAgICAnRic6IDYxMSwKICAgICdHJzogNzIyLAogICAgJ0gnOiA3MjIsCiAgICAnSSc6IDMzMywKICAgICdKJzogNDQ0LAogICAgJ0snOiA2NjcsCiAgICAnTCc6IDU1NiwKICAgICdNJzogODMzLAogICAgJ04nOiA2NjcsCiAgICAnTyc6IDcyMiwKICAgICdQJzogNjExLAogICAgJ1EnOiA3MjIsCiAgICAnUic6IDYxMSwKICAgICdTJzogNTAwLAogICAgJ1QnOiA1NTYsCiAgICAnVSc6IDcyMiwKICAgICdWJzogNjExLAogICAgJ1cnOiA4MzMsCiAgICAnWCc6IDYxMSwKICAgICdZJzogNTU2LAogICAgJ1onOiA1NTYsCiAgICAnYnJhY2tldGxlZnQnOiAzODksCiAgICAnYmFja3NsYXNoJzogMjc4LAogICAgJ2JyYWNrZXRyaWdodCc6IDM4OSwKICAgICdhc2NpaWNpcmN1bSc6IDQyMiwKICAgICd1bmRlcnNjb3JlJzogNTAwLAogICAgJ3F1b3RlbGVmdCc6IDMzMywKICAgICdhJzogNTAwLAogICAgJ2InOiA1MDAsCiAgICAnYyc6IDQ0NCwKICAgICdkJzogNTAwLAogICAgJ2UnOiA0NDQsCiAgICAnZic6IDI3OCwKICAgICdnJzogNTAwLAogICAgJ2gnOiA1MDAsCiAgICAnaSc6IDI3OCwKICAgICdqJzogMjc4LAogICAgJ2snOiA0NDQsCiAgICAnbCc6IDI3OCwKICAgICdtJzogNzIyLAogICAgJ24nOiA1MDAsCiAgICAnbyc6IDUwMCwKICAgICdwJzogNTAwLAogICAgJ3EnOiA1MDAsCiAgICAncic6IDM4OSwKICAgICdzJzogMzg5LAogICAgJ3QnOiAyNzgsCiAgICAndSc6IDUwMCwKICAgICd2JzogNDQ0LAogICAgJ3cnOiA2NjcsCiAgICAneCc6IDQ0NCwKICAgICd5JzogNDQ0LAogICAgJ3onOiAzODksCiAgICAnYnJhY2VsZWZ0JzogNDAwLAogICAgJ2Jhcic6IDI3NSwKICAgICdicmFjZXJpZ2h0JzogNDAwLAogICAgJ2FzY2lpdGlsZGUnOiA1NDEsCiAgICAnZXhjbGFtZG93bic6IDM4OSwKICAgICdjZW50JzogNTAwLAogICAgJ3N0ZXJsaW5nJzogNTAwLAogICAgJ2ZyYWN0aW9uJzogMTY3LAogICAgJ3llbic6IDUwMCwKICAgICdmbG9yaW4nOiA1MDAsCiAgICAnc2VjdGlvbic6IDUwMCwKICAgICdjdXJyZW5jeSc6IDUwMCwKICAgICdxdW90ZXNpbmdsZSc6IDIxNCwKICAgICdxdW90ZWRibGxlZnQnOiA1NTYsCiAgICAnZ3VpbGxlbW90bGVmdCc6IDUwMCwKICAgICdndWlsc2luZ2xsZWZ0JzogMzMzLAogICAgJ2d1aWxzaW5nbHJpZ2h0JzogMzMzLAogICAgJ2ZpJzogNTAwLAogICAgJ2ZsJzogNTAwLAogICAgJ2VuZGFzaCc6IDUwMCwKICAgICdkYWdnZXInOiA1MDAsCiAgICAnZGFnZ2VyZGJsJzogNTAwLAogICAgJ3BlcmlvZGNlbnRlcmVkJzogMjUwLAogICAgJ3BhcmFncmFwaCc6IDUyMywKICAgICdidWxsZXQnOiAzNTAsCiAgICAncXVvdGVzaW5nbGJhc2UnOiAzMzMsCiAgICAncXVvdGVkYmxiYXNlJzogNTU2LAogICAgJ3F1b3RlZGJscmlnaHQnOiA1NTYsCiAgICAnZ3VpbGxlbW90cmlnaHQnOiA1MDAsCiAgICAnZWxsaXBzaXMnOiA4ODksCiAgICAncGVydGhvdXNhbmQnOiAxMDAwLAogICAgJ3F1ZXN0aW9uZG93bic6IDUwMCwKICAgICdncmF2ZSc6IDMzMywKICAgICdhY3V0ZSc6IDMzMywKICAgICdjaXJjdW1mbGV4JzogMzMzLAogICAgJ3RpbGRlJzogMzMzLAogICAgJ21hY3Jvbic6IDMzMywKICAgICdicmV2ZSc6IDMzMywKICAgICdkb3RhY2NlbnQnOiAzMzMsCiAgICAnZGllcmVzaXMnOiAzMzMsCiAgICAncmluZyc6IDMzMywKICAgICdjZWRpbGxhJzogMzMzLAogICAgJ2h1bmdhcnVtbGF1dCc6IDMzMywKICAgICdvZ29uZWsnOiAzMzMsCiAgICAnY2Fyb24nOiAzMzMsCiAgICAnZW1kYXNoJzogODg5LAogICAgJ0FFJzogODg5LAogICAgJ29yZGZlbWluaW5lJzogMjc2LAogICAgJ0xzbGFzaCc6IDU1NiwKICAgICdPc2xhc2gnOiA3MjIsCiAgICAnT0UnOiA5NDQsCiAgICAnb3JkbWFzY3VsaW5lJzogMzEwLAogICAgJ2FlJzogNjY3LAogICAgJ2RvdGxlc3NpJzogMjc4LAogICAgJ2xzbGFzaCc6IDI3OCwKICAgICdvc2xhc2gnOiA1MDAsCiAgICAnb2UnOiA2NjcsCiAgICAnZ2VybWFuZGJscyc6IDUwMCwKICAgICdJZGllcmVzaXMnOiAzMzMsCiAgICAnZWFjdXRlJzogNDQ0LAogICAgJ2FicmV2ZSc6IDUwMCwKICAgICd1aHVuZ2FydW1sYXV0JzogNTAwLAogICAgJ2VjYXJvbic6IDQ0NCwKICAgICdZZGllcmVzaXMnOiA1NTYsCiAgICAnZGl2aWRlJzogNjc1LAogICAgJ1lhY3V0ZSc6IDU1NiwKICAgICdBY2lyY3VtZmxleCc6IDYxMSwKICAgICdhYWN1dGUnOiA1MDAsCiAgICAnVWNpcmN1bWZsZXgnOiA3MjIsCiAgICAneWFjdXRlJzogNDQ0LAogICAgJ3Njb21tYWFjY2VudCc6IDM4OSwKICAgICdlY2lyY3VtZmxleCc6IDQ0NCwKICAgICdVcmluZyc6IDcyMiwKICAgICdVZGllcmVzaXMnOiA3MjIsCiAgICAnYW9nb25layc6IDUwMCwKICAgICdVYWN1dGUnOiA3MjIsCiAgICAndW9nb25layc6IDUwMCwKICAgICdFZGllcmVzaXMnOiA2MTEsCiAgICAnRGNyb2F0JzogNzIyLAogICAgJ2NvbW1hYWNjZW50JzogMjUwLAogICAgJ2NvcHlyaWdodCc6IDc2MCwKICAgICdFbWFjcm9uJzogNjExLAogICAgJ2NjYXJvbic6IDQ0NCwKICAgICdhcmluZyc6IDUwMCwKICAgICdOY29tbWFhY2NlbnQnOiA2NjcsCiAgICAnbGFjdXRlJzogMjc4LAogICAgJ2FncmF2ZSc6IDUwMCwKICAgICdUY29tbWFhY2NlbnQnOiA1NTYsCiAgICAnQ2FjdXRlJzogNjY3LAogICAgJ2F0aWxkZSc6IDUwMCwKICAgICdFZG90YWNjZW50JzogNjExLAogICAgJ3NjYXJvbic6IDM4OSwKICAgICdzY2VkaWxsYSc6IDM4OSwKICAgICdpYWN1dGUnOiAyNzgsCiAgICAnbG96ZW5nZSc6IDQ3MSwKICAgICdSY2Fyb24nOiA2MTEsCiAgICAnR2NvbW1hYWNjZW50JzogNzIyLAogICAgJ3VjaXJjdW1mbGV4JzogNTAwLAogICAgJ2FjaXJjdW1mbGV4JzogNTAwLAogICAgJ0FtYWNyb24nOiA2MTEsCiAgICAncmNhcm9uJzogMzg5LAogICAgJ2NjZWRpbGxhJzogNDQ0LAogICAgJ1pkb3RhY2NlbnQnOiA1NTYsCiAgICAnVGhvcm4nOiA2MTEsCiAgICAnT21hY3Jvbic6IDcyMiwKICAgICdSYWN1dGUnOiA2MTEsCiAgICAnU2FjdXRlJzogNTAwLAogICAgJ2RjYXJvbic6IDU0NCwKICAgICdVbWFjcm9uJzogNzIyLAogICAgJ3VyaW5nJzogNTAwLAogICAgJ3RocmVlc3VwZXJpb3InOiAzMDAsCiAgICAnT2dyYXZlJzogNzIyLAogICAgJ0FncmF2ZSc6IDYxMSwKICAgICdBYnJldmUnOiA2MTEsCiAgICAnbXVsdGlwbHknOiA2NzUsCiAgICAndWFjdXRlJzogNTAwLAogICAgJ1RjYXJvbic6IDU1NiwKICAgICdwYXJ0aWFsZGlmZic6IDQ3NiwKICAgICd5ZGllcmVzaXMnOiA0NDQsCiAgICAnTmFjdXRlJzogNjY3LAogICAgJ2ljaXJjdW1mbGV4JzogMjc4LAogICAgJ0VjaXJjdW1mbGV4JzogNjExLAogICAgJ2FkaWVyZXNpcyc6IDUwMCwKICAgICdlZGllcmVzaXMnOiA0NDQsCiAgICAnY2FjdXRlJzogNDQ0LAogICAgJ25hY3V0ZSc6IDUwMCwKICAgICd1bWFjcm9uJzogNTAwLAogICAgJ05jYXJvbic6IDY2NywKICAgICdJYWN1dGUnOiAzMzMsCiAgICAncGx1c21pbnVzJzogNjc1LAogICAgJ2Jyb2tlbmJhcic6IDI3NSwKICAgICdyZWdpc3RlcmVkJzogNzYwLAogICAgJ0dicmV2ZSc6IDcyMiwKICAgICdJZG90YWNjZW50JzogMzMzLAogICAgJ3N1bW1hdGlvbic6IDYwMCwKICAgICdFZ3JhdmUnOiA2MTEsCiAgICAncmFjdXRlJzogMzg5LAogICAgJ29tYWNyb24nOiA1MDAsCiAgICAnWmFjdXRlJzogNTU2LAogICAgJ1pjYXJvbic6IDU1NiwKICAgICdncmVhdGVyZXF1YWwnOiA1NDksCiAgICAnRXRoJzogNzIyLAogICAgJ0NjZWRpbGxhJzogNjY3LAogICAgJ2xjb21tYWFjY2VudCc6IDI3OCwKICAgICd0Y2Fyb24nOiAzMDAsCiAgICAnZW9nb25layc6IDQ0NCwKICAgICdVb2dvbmVrJzogNzIyLAogICAgJ0FhY3V0ZSc6IDYxMSwKICAgICdBZGllcmVzaXMnOiA2MTEsCiAgICAnZWdyYXZlJzogNDQ0LAogICAgJ3phY3V0ZSc6IDM4OSwKICAgICdpb2dvbmVrJzogMjc4LAogICAgJ09hY3V0ZSc6IDcyMiwKICAgICdvYWN1dGUnOiA1MDAsCiAgICAnYW1hY3Jvbic6IDUwMCwKICAgICdzYWN1dGUnOiAzODksCiAgICAnaWRpZXJlc2lzJzogMjc4LAogICAgJ09jaXJjdW1mbGV4JzogNzIyLAogICAgJ1VncmF2ZSc6IDcyMiwKICAgICdEZWx0YSc6IDYxMiwKICAgICd0aG9ybic6IDUwMCwKICAgICd0d29zdXBlcmlvcic6IDMwMCwKICAgICdPZGllcmVzaXMnOiA3MjIsCiAgICAnbXUnOiA1MDAsCiAgICAnaWdyYXZlJzogMjc4LAogICAgJ29odW5nYXJ1bWxhdXQnOiA1MDAsCiAgICAnRW9nb25layc6IDYxMSwKICAgICdkY3JvYXQnOiA1MDAsCiAgICAndGhyZWVxdWFydGVycyc6IDc1MCwKICAgICdTY2VkaWxsYSc6IDUwMCwKICAgICdsY2Fyb24nOiAzMDAsCiAgICAnS2NvbW1hYWNjZW50JzogNjY3LAogICAgJ0xhY3V0ZSc6IDU1NiwKICAgICd0cmFkZW1hcmsnOiA5ODAsCiAgICAnZWRvdGFjY2VudCc6IDQ0NCwKICAgICdJZ3JhdmUnOiAzMzMsCiAgICAnSW1hY3Jvbic6IDMzMywKICAgICdMY2Fyb24nOiA2MTEsCiAgICAnb25laGFsZic6IDc1MCwKICAgICdsZXNzZXF1YWwnOiA1NDksCiAgICAnb2NpcmN1bWZsZXgnOiA1MDAsCiAgICAnbnRpbGRlJzogNTAwLAogICAgJ1VodW5nYXJ1bWxhdXQnOiA3MjIsCiAgICAnRWFjdXRlJzogNjExLAogICAgJ2VtYWNyb24nOiA0NDQsCiAgICAnZ2JyZXZlJzogNTAwLAogICAgJ29uZXF1YXJ0ZXInOiA3NTAsCiAgICAnU2Nhcm9uJzogNTAwLAogICAgJ1Njb21tYWFjY2VudCc6IDUwMCwKICAgICdPaHVuZ2FydW1sYXV0JzogNzIyLAogICAgJ2RlZ3JlZSc6IDQwMCwKICAgICdvZ3JhdmUnOiA1MDAsCiAgICAnQ2Nhcm9uJzogNjY3LAogICAgJ3VncmF2ZSc6IDUwMCwKICAgICdyYWRpY2FsJzogNDUzLAogICAgJ0RjYXJvbic6IDcyMiwKICAgICdyY29tbWFhY2NlbnQnOiAzODksCiAgICAnTnRpbGRlJzogNjY3LAogICAgJ290aWxkZSc6IDUwMCwKICAgICdSY29tbWFhY2NlbnQnOiA2MTEsCiAgICAnTGNvbW1hYWNjZW50JzogNTU2LAogICAgJ0F0aWxkZSc6IDYxMSwKICAgICdBb2dvbmVrJzogNjExLAogICAgJ0FyaW5nJzogNjExLAogICAgJ090aWxkZSc6IDcyMiwKICAgICd6ZG90YWNjZW50JzogMzg5LAogICAgJ0VjYXJvbic6IDYxMSwKICAgICdJb2dvbmVrJzogMzMzLAogICAgJ2tjb21tYWFjY2VudCc6IDQ0NCwKICAgICdtaW51cyc6IDY3NSwKICAgICdJY2lyY3VtZmxleCc6IDMzMywKICAgICduY2Fyb24nOiA1MDAsCiAgICAndGNvbW1hYWNjZW50JzogMjc4LAogICAgJ2xvZ2ljYWxub3QnOiA2NzUsCiAgICAnb2RpZXJlc2lzJzogNTAwLAogICAgJ3VkaWVyZXNpcyc6IDUwMCwKICAgICdub3RlcXVhbCc6IDU0OSwKICAgICdnY29tbWFhY2NlbnQnOiA1MDAsCiAgICAnZXRoJzogNTAwLAogICAgJ3pjYXJvbic6IDM4OSwKICAgICduY29tbWFhY2NlbnQnOiA1MDAsCiAgICAnb25lc3VwZXJpb3InOiAzMDAsCiAgICAnaW1hY3Jvbic6IDI3OCwKICAgICdFdXJvJzogNTAwCiAgfSwKICAnWmFwZkRpbmdiYXRzJzogewogICAgJ3NwYWNlJzogMjc4LAogICAgJ2ExJzogOTc0LAogICAgJ2EyJzogOTYxLAogICAgJ2EyMDInOiA5NzQsCiAgICAnYTMnOiA5ODAsCiAgICAnYTQnOiA3MTksCiAgICAnYTUnOiA3ODksCiAgICAnYTExOSc6IDc5MCwKICAgICdhMTE4JzogNzkxLAogICAgJ2ExMTcnOiA2OTAsCiAgICAnYTExJzogOTYwLAogICAgJ2ExMic6IDkzOSwKICAgICdhMTMnOiA1NDksCiAgICAnYTE0JzogODU1LAogICAgJ2ExNSc6IDkxMSwKICAgICdhMTYnOiA5MzMsCiAgICAnYTEwNSc6IDkxMSwKICAgICdhMTcnOiA5NDUsCiAgICAnYTE4JzogOTc0LAogICAgJ2ExOSc6IDc1NSwKICAgICdhMjAnOiA4NDYsCiAgICAnYTIxJzogNzYyLAogICAgJ2EyMic6IDc2MSwKICAgICdhMjMnOiA1NzEsCiAgICAnYTI0JzogNjc3LAogICAgJ2EyNSc6IDc2MywKICAgICdhMjYnOiA3NjAsCiAgICAnYTI3JzogNzU5LAogICAgJ2EyOCc6IDc1NCwKICAgICdhNic6IDQ5NCwKICAgICdhNyc6IDU1MiwKICAgICdhOCc6IDUzNywKICAgICdhOSc6IDU3NywKICAgICdhMTAnOiA2OTIsCiAgICAnYTI5JzogNzg2LAogICAgJ2EzMCc6IDc4OCwKICAgICdhMzEnOiA3ODgsCiAgICAnYTMyJzogNzkwLAogICAgJ2EzMyc6IDc5MywKICAgICdhMzQnOiA3OTQsCiAgICAnYTM1JzogODE2LAogICAgJ2EzNic6IDgyMywKICAgICdhMzcnOiA3ODksCiAgICAnYTM4JzogODQxLAogICAgJ2EzOSc6IDgyMywKICAgICdhNDAnOiA4MzMsCiAgICAnYTQxJzogODE2LAogICAgJ2E0Mic6IDgzMSwKICAgICdhNDMnOiA5MjMsCiAgICAnYTQ0JzogNzQ0LAogICAgJ2E0NSc6IDcyMywKICAgICdhNDYnOiA3NDksCiAgICAnYTQ3JzogNzkwLAogICAgJ2E0OCc6IDc5MiwKICAgICdhNDknOiA2OTUsCiAgICAnYTUwJzogNzc2LAogICAgJ2E1MSc6IDc2OCwKICAgICdhNTInOiA3OTIsCiAgICAnYTUzJzogNzU5LAogICAgJ2E1NCc6IDcwNywKICAgICdhNTUnOiA3MDgsCiAgICAnYTU2JzogNjgyLAogICAgJ2E1Nyc6IDcwMSwKICAgICdhNTgnOiA4MjYsCiAgICAnYTU5JzogODE1LAogICAgJ2E2MCc6IDc4OSwKICAgICdhNjEnOiA3ODksCiAgICAnYTYyJzogNzA3LAogICAgJ2E2Myc6IDY4NywKICAgICdhNjQnOiA2OTYsCiAgICAnYTY1JzogNjg5LAogICAgJ2E2Nic6IDc4NiwKICAgICdhNjcnOiA3ODcsCiAgICAnYTY4JzogNzEzLAogICAgJ2E2OSc6IDc5MSwKICAgICdhNzAnOiA3ODUsCiAgICAnYTcxJzogNzkxLAogICAgJ2E3Mic6IDg3MywKICAgICdhNzMnOiA3NjEsCiAgICAnYTc0JzogNzYyLAogICAgJ2EyMDMnOiA3NjIsCiAgICAnYTc1JzogNzU5LAogICAgJ2EyMDQnOiA3NTksCiAgICAnYTc2JzogODkyLAogICAgJ2E3Nyc6IDg5MiwKICAgICdhNzgnOiA3ODgsCiAgICAnYTc5JzogNzg0LAogICAgJ2E4MSc6IDQzOCwKICAgICdhODInOiAxMzgsCiAgICAnYTgzJzogMjc3LAogICAgJ2E4NCc6IDQxNSwKICAgICdhOTcnOiAzOTIsCiAgICAnYTk4JzogMzkyLAogICAgJ2E5OSc6IDY2OCwKICAgICdhMTAwJzogNjY4LAogICAgJ2E4OSc6IDM5MCwKICAgICdhOTAnOiAzOTAsCiAgICAnYTkzJzogMzE3LAogICAgJ2E5NCc6IDMxNywKICAgICdhOTEnOiAyNzYsCiAgICAnYTkyJzogMjc2LAogICAgJ2EyMDUnOiA1MDksCiAgICAnYTg1JzogNTA5LAogICAgJ2EyMDYnOiA0MTAsCiAgICAnYTg2JzogNDEwLAogICAgJ2E4Nyc6IDIzNCwKICAgICdhODgnOiAyMzQsCiAgICAnYTk1JzogMzM0LAogICAgJ2E5Nic6IDMzNCwKICAgICdhMTAxJzogNzMyLAogICAgJ2ExMDInOiA1NDQsCiAgICAnYTEwMyc6IDU0NCwKICAgICdhMTA0JzogOTEwLAogICAgJ2ExMDYnOiA2NjcsCiAgICAnYTEwNyc6IDc2MCwKICAgICdhMTA4JzogNzYwLAogICAgJ2ExMTInOiA3NzYsCiAgICAnYTExMSc6IDU5NSwKICAgICdhMTEwJzogNjk0LAogICAgJ2ExMDknOiA2MjYsCiAgICAnYTEyMCc6IDc4OCwKICAgICdhMTIxJzogNzg4LAogICAgJ2ExMjInOiA3ODgsCiAgICAnYTEyMyc6IDc4OCwKICAgICdhMTI0JzogNzg4LAogICAgJ2ExMjUnOiA3ODgsCiAgICAnYTEyNic6IDc4OCwKICAgICdhMTI3JzogNzg4LAogICAgJ2ExMjgnOiA3ODgsCiAgICAnYTEyOSc6IDc4OCwKICAgICdhMTMwJzogNzg4LAogICAgJ2ExMzEnOiA3ODgsCiAgICAnYTEzMic6IDc4OCwKICAgICdhMTMzJzogNzg4LAogICAgJ2ExMzQnOiA3ODgsCiAgICAnYTEzNSc6IDc4OCwKICAgICdhMTM2JzogNzg4LAogICAgJ2ExMzcnOiA3ODgsCiAgICAnYTEzOCc6IDc4OCwKICAgICdhMTM5JzogNzg4LAogICAgJ2ExNDAnOiA3ODgsCiAgICAnYTE0MSc6IDc4OCwKICAgICdhMTQyJzogNzg4LAogICAgJ2ExNDMnOiA3ODgsCiAgICAnYTE0NCc6IDc4OCwKICAgICdhMTQ1JzogNzg4LAogICAgJ2ExNDYnOiA3ODgsCiAgICAnYTE0Nyc6IDc4OCwKICAgICdhMTQ4JzogNzg4LAogICAgJ2ExNDknOiA3ODgsCiAgICAnYTE1MCc6IDc4OCwKICAgICdhMTUxJzogNzg4LAogICAgJ2ExNTInOiA3ODgsCiAgICAnYTE1Myc6IDc4OCwKICAgICdhMTU0JzogNzg4LAogICAgJ2ExNTUnOiA3ODgsCiAgICAnYTE1Nic6IDc4OCwKICAgICdhMTU3JzogNzg4LAogICAgJ2ExNTgnOiA3ODgsCiAgICAnYTE1OSc6IDc4OCwKICAgICdhMTYwJzogODk0LAogICAgJ2ExNjEnOiA4MzgsCiAgICAnYTE2Myc6IDEwMTYsCiAgICAnYTE2NCc6IDQ1OCwKICAgICdhMTk2JzogNzQ4LAogICAgJ2ExNjUnOiA5MjQsCiAgICAnYTE5Mic6IDc0OCwKICAgICdhMTY2JzogOTE4LAogICAgJ2ExNjcnOiA5MjcsCiAgICAnYTE2OCc6IDkyOCwKICAgICdhMTY5JzogOTI4LAogICAgJ2ExNzAnOiA4MzQsCiAgICAnYTE3MSc6IDg3MywKICAgICdhMTcyJzogODI4LAogICAgJ2ExNzMnOiA5MjQsCiAgICAnYTE2Mic6IDkyNCwKICAgICdhMTc0JzogOTE3LAogICAgJ2ExNzUnOiA5MzAsCiAgICAnYTE3Nic6IDkzMSwKICAgICdhMTc3JzogNDYzLAogICAgJ2ExNzgnOiA4ODMsCiAgICAnYTE3OSc6IDgzNiwKICAgICdhMTkzJzogODM2LAogICAgJ2ExODAnOiA4NjcsCiAgICAnYTE5OSc6IDg2NywKICAgICdhMTgxJzogNjk2LAogICAgJ2EyMDAnOiA2OTYsCiAgICAnYTE4Mic6IDg3NCwKICAgICdhMjAxJzogODc0LAogICAgJ2ExODMnOiA3NjAsCiAgICAnYTE4NCc6IDk0NiwKICAgICdhMTk3JzogNzcxLAogICAgJ2ExODUnOiA4NjUsCiAgICAnYTE5NCc6IDc3MSwKICAgICdhMTk4JzogODg4LAogICAgJ2ExODYnOiA5NjcsCiAgICAnYTE5NSc6IDg4OCwKICAgICdhMTg3JzogODMxLAogICAgJ2ExODgnOiA4NzMsCiAgICAnYTE4OSc6IDkyNywKICAgICdhMTkwJzogOTcwLAogICAgJ2ExOTEnOiA5MTgKICB9Cn07CgoKdmFyIEVPRiA9IHt9OwoKZnVuY3Rpb24gaXNFT0YodikgewogIHJldHVybiAodiA9PT0gRU9GKTsKfQoKdmFyIE1BWF9MRU5HVEhfVE9fQ0FDSEUgPSAxMDAwOwoKdmFyIFBhcnNlciA9IChmdW5jdGlvbiBQYXJzZXJDbG9zdXJlKCkgewogIGZ1bmN0aW9uIFBhcnNlcihsZXhlciwgYWxsb3dTdHJlYW1zLCB4cmVmKSB7CiAgICB0aGlzLmxleGVyID0gbGV4ZXI7CiAgICB0aGlzLmFsbG93U3RyZWFtcyA9IGFsbG93U3RyZWFtczsKICAgIHRoaXMueHJlZiA9IHhyZWY7CiAgICB0aGlzLmltYWdlQ2FjaGUgPSB7fTsKICAgIHRoaXMucmVmaWxsKCk7CiAgfQoKICBQYXJzZXIucHJvdG90eXBlID0gewogICAgcmVmaWxsOiBmdW5jdGlvbiBQYXJzZXJfcmVmaWxsKCkgewogICAgICB0aGlzLmJ1ZjEgPSB0aGlzLmxleGVyLmdldE9iaigpOwogICAgICB0aGlzLmJ1ZjIgPSB0aGlzLmxleGVyLmdldE9iaigpOwogICAgfSwKICAgIHNoaWZ0OiBmdW5jdGlvbiBQYXJzZXJfc2hpZnQoKSB7CiAgICAgIGlmIChpc0NtZCh0aGlzLmJ1ZjIsICdJRCcpKSB7CiAgICAgICAgdGhpcy5idWYxID0gdGhpcy5idWYyOwogICAgICAgIHRoaXMuYnVmMiA9IG51bGw7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5idWYxID0gdGhpcy5idWYyOwogICAgICAgIHRoaXMuYnVmMiA9IHRoaXMubGV4ZXIuZ2V0T2JqKCk7CiAgICAgIH0KICAgIH0sCiAgICBnZXRPYmo6IGZ1bmN0aW9uIFBhcnNlcl9nZXRPYmooY2lwaGVyVHJhbnNmb3JtKSB7CiAgICAgIHZhciBidWYxID0gdGhpcy5idWYxOwogICAgICB0aGlzLnNoaWZ0KCk7CgogICAgICBpZiAoYnVmMSBpbnN0YW5jZW9mIENtZCkgewogICAgICAgIHN3aXRjaCAoYnVmMS5jbWQpIHsKICAgICAgICAgIGNhc2UgJ0JJJzogLy8gaW5saW5lIGltYWdlCiAgICAgICAgICAgIHJldHVybiB0aGlzLm1ha2VJbmxpbmVJbWFnZShjaXBoZXJUcmFuc2Zvcm0pOwogICAgICAgICAgY2FzZSAnWyc6IC8vIGFycmF5CiAgICAgICAgICAgIHZhciBhcnJheSA9IFtdOwogICAgICAgICAgICB3aGlsZSAoIWlzQ21kKHRoaXMuYnVmMSwgJ10nKSAmJiAhaXNFT0YodGhpcy5idWYxKSkgewogICAgICAgICAgICAgIGFycmF5LnB1c2godGhpcy5nZXRPYmooY2lwaGVyVHJhbnNmb3JtKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGlzRU9GKHRoaXMuYnVmMSkpIHsKICAgICAgICAgICAgICBlcnJvcignRW5kIG9mIGZpbGUgaW5zaWRlIGFycmF5Jyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGhpcy5zaGlmdCgpOwogICAgICAgICAgICByZXR1cm4gYXJyYXk7CiAgICAgICAgICBjYXNlICc8PCc6IC8vIGRpY3Rpb25hcnkgb3Igc3RyZWFtCiAgICAgICAgICAgIHZhciBkaWN0ID0gbmV3IERpY3QodGhpcy54cmVmKTsKICAgICAgICAgICAgd2hpbGUgKCFpc0NtZCh0aGlzLmJ1ZjEsICc+PicpICYmICFpc0VPRih0aGlzLmJ1ZjEpKSB7CiAgICAgICAgICAgICAgaWYgKCFpc05hbWUodGhpcy5idWYxKSkgewogICAgICAgICAgICAgICAgaW5mbygnTWFsZm9ybWVkIGRpY3Rpb25hcnk6IGtleSBtdXN0IGJlIGEgbmFtZSBvYmplY3QnKTsKICAgICAgICAgICAgICAgIHRoaXMuc2hpZnQoKTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgdmFyIGtleSA9IHRoaXMuYnVmMS5uYW1lOwogICAgICAgICAgICAgIHRoaXMuc2hpZnQoKTsKICAgICAgICAgICAgICBpZiAoaXNFT0YodGhpcy5idWYxKSkgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGRpY3Quc2V0KGtleSwgdGhpcy5nZXRPYmooY2lwaGVyVHJhbnNmb3JtKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGlzRU9GKHRoaXMuYnVmMSkpIHsKICAgICAgICAgICAgICBlcnJvcignRW5kIG9mIGZpbGUgaW5zaWRlIGRpY3Rpb25hcnknKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gU3RyZWFtIG9iamVjdHMgYXJlIG5vdCBhbGxvd2VkIGluc2lkZSBjb250ZW50IHN0cmVhbXMgb3IKICAgICAgICAgICAgLy8gb2JqZWN0IHN0cmVhbXMuCiAgICAgICAgICAgIGlmIChpc0NtZCh0aGlzLmJ1ZjIsICdzdHJlYW0nKSkgewogICAgICAgICAgICAgIHJldHVybiAodGhpcy5hbGxvd1N0cmVhbXMgPwogICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYWtlU3RyZWFtKGRpY3QsIGNpcGhlclRyYW5zZm9ybSkgOiBkaWN0KTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0aGlzLnNoaWZ0KCk7CiAgICAgICAgICAgIHJldHVybiBkaWN0OwogICAgICAgICAgZGVmYXVsdDogLy8gc2ltcGxlIG9iamVjdAogICAgICAgICAgICByZXR1cm4gYnVmMTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGlmIChpc0ludChidWYxKSkgeyAvLyBpbmRpcmVjdCByZWZlcmVuY2Ugb3IgaW50ZWdlcgogICAgICAgIHZhciBudW0gPSBidWYxOwogICAgICAgIGlmIChpc0ludCh0aGlzLmJ1ZjEpICYmIGlzQ21kKHRoaXMuYnVmMiwgJ1InKSkgewogICAgICAgICAgdmFyIHJlZiA9IG5ldyBSZWYobnVtLCB0aGlzLmJ1ZjEpOwogICAgICAgICAgdGhpcy5zaGlmdCgpOwogICAgICAgICAgdGhpcy5zaGlmdCgpOwogICAgICAgICAgcmV0dXJuIHJlZjsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG51bTsKICAgICAgfQoKICAgICAgaWYgKGlzU3RyaW5nKGJ1ZjEpKSB7IC8vIHN0cmluZwogICAgICAgIHZhciBzdHIgPSBidWYxOwogICAgICAgIGlmIChjaXBoZXJUcmFuc2Zvcm0pIHsKICAgICAgICAgIHN0ciA9IGNpcGhlclRyYW5zZm9ybS5kZWNyeXB0U3RyaW5nKHN0cik7CiAgICAgICAgfQogICAgICAgIHJldHVybiBzdHI7CiAgICAgIH0KCiAgICAgIC8vIHNpbXBsZSBvYmplY3QKICAgICAgcmV0dXJuIGJ1ZjE7CiAgICB9LAogICAgLyoqCiAgICAgKiBGaW5kIHRoZSBlbmQgb2YgdGhlIHN0cmVhbSBieSBzZWFyY2hpbmcgZm9yIHRoZSAvRUlccy8uCiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBUaGUgaW5saW5lIHN0cmVhbSBsZW5ndGguCiAgICAgKi8KICAgIGZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kOgogICAgICAgIGZ1bmN0aW9uIFBhcnNlcl9maW5kRGVmYXVsdElubGluZVN0cmVhbUVuZChzdHJlYW0pIHsKICAgICAgdmFyIEUgPSAweDQ1LCBJID0gMHg0OSwgU1BBQ0UgPSAweDIwLCBMRiA9IDB4QSwgQ1IgPSAweEQ7CiAgICAgIHZhciBzdGFydFBvcyA9IHN0cmVhbS5wb3MsIHN0YXRlID0gMCwgY2gsIGksIG4sIGZvbGxvd2luZ0J5dGVzOwogICAgICB3aGlsZSAoKGNoID0gc3RyZWFtLmdldEJ5dGUoKSkgIT09IC0xKSB7CiAgICAgICAgaWYgKHN0YXRlID09PSAwKSB7CiAgICAgICAgICBzdGF0ZSA9IChjaCA9PT0gRSkgPyAxIDogMDsKICAgICAgICB9IGVsc2UgaWYgKHN0YXRlID09PSAxKSB7CiAgICAgICAgICBzdGF0ZSA9IChjaCA9PT0gSSkgPyAyIDogMDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgYXNzZXJ0KHN0YXRlID09PSAyKTsKICAgICAgICAgIGlmIChjaCA9PT0gU1BBQ0UgfHwgY2ggPT09IExGIHx8IGNoID09PSBDUikgewogICAgICAgICAgICAvLyBMZXQncyBjaGVjayB0aGUgbmV4dCBmaXZlIGJ5dGVzIGFyZSBBU0NJSS4uLiBqdXN0IGJlIHN1cmUuCiAgICAgICAgICAgIG4gPSA1OwogICAgICAgICAgICBmb2xsb3dpbmdCeXRlcyA9IHN0cmVhbS5wZWVrQnl0ZXMobik7CiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgICBjaCA9IGZvbGxvd2luZ0J5dGVzW2ldOwogICAgICAgICAgICAgIGlmIChjaCAhPT0gTEYgJiYgY2ggIT09IENSICYmIChjaCA8IFNQQUNFIHx8IGNoID4gMHg3RikpIHsKICAgICAgICAgICAgICAgIC8vIE5vdCBhIExGLCBDUiwgU1BBQ0Ugb3IgYW55IHZpc2libGUgQVNDSUkgY2hhcmFjdGVyLCBpLmUuCiAgICAgICAgICAgICAgICAvLyBpdCdzIGJpbmFyeSBzdHVmZi4gUmVzZXR0aW5nIHRoZSBzdGF0ZS4KICAgICAgICAgICAgICAgIHN0YXRlID0gMDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoc3RhdGUgPT09IDIpIHsKICAgICAgICAgICAgICBicmVhazsgIC8vIEZpbmlzaGVkIQogICAgICAgICAgICB9CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBzdGF0ZSA9IDA7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiAoKHN0cmVhbS5wb3MgLSA0KSAtIHN0YXJ0UG9zKTsKICAgIH0sCiAgICAvKioKICAgICAqIEZpbmQgdGhlIEVPSSAoZW5kLW9mLWltYWdlKSBtYXJrZXIgMHhGRkQ5IG9mIHRoZSBzdHJlYW0uCiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBUaGUgaW5saW5lIHN0cmVhbSBsZW5ndGguCiAgICAgKi8KICAgIGZpbmREQ1REZWNvZGVJbmxpbmVTdHJlYW1FbmQ6CiAgICAgICAgZnVuY3Rpb24gUGFyc2VyX2ZpbmREQ1REZWNvZGVJbmxpbmVTdHJlYW1FbmQoc3RyZWFtKSB7CiAgICAgIHZhciBzdGFydFBvcyA9IHN0cmVhbS5wb3MsIGZvdW5kRU9JID0gZmFsc2UsIGIsIG1hcmtlckxlbmd0aCwgbGVuZ3RoOwogICAgICB3aGlsZSAoKGIgPSBzdHJlYW0uZ2V0Qnl0ZSgpKSAhPT0gLTEpIHsKICAgICAgICBpZiAoYiAhPT0gMHhGRikgeyAvLyBOb3QgYSB2YWxpZCBtYXJrZXIuCiAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgc3dpdGNoIChzdHJlYW0uZ2V0Qnl0ZSgpKSB7CiAgICAgICAgICBjYXNlIDB4MDA6IC8vIEJ5dGUgc3R1ZmZpbmcuCiAgICAgICAgICAgIC8vIDB4RkYwMCBhcHBlYXJzIHRvIGJlIGEgdmVyeSBjb21tb24gYnl0ZSBzZXF1ZW5jZSBpbiBKUEVHIGltYWdlcy4KICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgY2FzZSAweEZGOiAvLyBGaWxsIGJ5dGUuCiAgICAgICAgICAgIC8vIEF2b2lkIHNraXBwaW5nIGEgdmFsaWQgbWFya2VyLCByZXNldHRpbmcgdGhlIHN0cmVhbSBwb3NpdGlvbi4KICAgICAgICAgICAgc3RyZWFtLnNraXAoLTEpOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgICBjYXNlIDB4RDk6IC8vIEVPSQogICAgICAgICAgICBmb3VuZEVPSSA9IHRydWU7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgIGNhc2UgMHhDMDogLy8gU09GMAogICAgICAgICAgY2FzZSAweEMxOiAvLyBTT0YxCiAgICAgICAgICBjYXNlIDB4QzI6IC8vIFNPRjIKICAgICAgICAgIGNhc2UgMHhDMzogLy8gU09GMwoKICAgICAgICAgIGNhc2UgMHhDNTogLy8gU09GNQogICAgICAgICAgY2FzZSAweEM2OiAvLyBTT0Y2CiAgICAgICAgICBjYXNlIDB4Qzc6IC8vIFNPRjcKCiAgICAgICAgICBjYXNlIDB4Qzk6IC8vIFNPRjkKICAgICAgICAgIGNhc2UgMHhDQTogLy8gU09GMTAKICAgICAgICAgIGNhc2UgMHhDQjogLy8gU09GMTEKCiAgICAgICAgICBjYXNlIDB4Q0Q6IC8vIFNPRjEzCiAgICAgICAgICBjYXNlIDB4Q0U6IC8vIFNPRjE0CiAgICAgICAgICBjYXNlIDB4Q0Y6IC8vIFNPRjE1CgogICAgICAgICAgY2FzZSAweEM0OiAvLyBESFQKICAgICAgICAgIGNhc2UgMHhDQzogLy8gREFDCgogICAgICAgICAgY2FzZSAweERBOiAvLyBTT1MKICAgICAgICAgIGNhc2UgMHhEQjogLy8gRFFUCiAgICAgICAgICBjYXNlIDB4REM6IC8vIEROTAogICAgICAgICAgY2FzZSAweEREOiAvLyBEUkkKICAgICAgICAgIGNhc2UgMHhERTogLy8gREhQCiAgICAgICAgICBjYXNlIDB4REY6IC8vIEVYUAoKICAgICAgICAgIGNhc2UgMHhFMDogLy8gQVBQMAogICAgICAgICAgY2FzZSAweEUxOiAvLyBBUFAxCiAgICAgICAgICBjYXNlIDB4RTI6IC8vIEFQUDIKICAgICAgICAgIGNhc2UgMHhFMzogLy8gQVBQMwogICAgICAgICAgY2FzZSAweEU0OiAvLyBBUFA0CiAgICAgICAgICBjYXNlIDB4RTU6IC8vIEFQUDUKICAgICAgICAgIGNhc2UgMHhFNjogLy8gQVBQNgogICAgICAgICAgY2FzZSAweEU3OiAvLyBBUFA3CiAgICAgICAgICBjYXNlIDB4RTg6IC8vIEFQUDgKICAgICAgICAgIGNhc2UgMHhFOTogLy8gQVBQOQogICAgICAgICAgY2FzZSAweEVBOiAvLyBBUFAxMAogICAgICAgICAgY2FzZSAweEVCOiAvLyBBUFAxMQogICAgICAgICAgY2FzZSAweEVDOiAvLyBBUFAxMgogICAgICAgICAgY2FzZSAweEVEOiAvLyBBUFAxMwogICAgICAgICAgY2FzZSAweEVFOiAvLyBBUFAxNAogICAgICAgICAgY2FzZSAweEVGOiAvLyBBUFAxNQoKICAgICAgICAgIGNhc2UgMHhGRTogLy8gQ09NCiAgICAgICAgICAgIC8vIFRoZSBtYXJrZXIgc2hvdWxkIGJlIGZvbGxvd2VkIGJ5IHRoZSBsZW5ndGggb2YgdGhlIHNlZ21lbnQuCiAgICAgICAgICAgIG1hcmtlckxlbmd0aCA9IHN0cmVhbS5nZXRVaW50MTYoKTsKICAgICAgICAgICAgaWYgKG1hcmtlckxlbmd0aCA+IDIpIHsKICAgICAgICAgICAgICAvLyB8bWFya2VyTGVuZ3RofCBjb250YWlucyB0aGUgYnl0ZSBsZW5ndGggb2YgdGhlIG1hcmtlciBzZWdtZW50LAogICAgICAgICAgICAgIC8vIGluY2x1ZGluZyBpdHMgb3duIGxlbmd0aCAoMiBieXRlcykgYW5kIGV4Y2x1ZGluZyB0aGUgbWFya2VyLgogICAgICAgICAgICAgIHN0cmVhbS5za2lwKG1hcmtlckxlbmd0aCAtIDIpOyAvLyBKdW1wIHRvIHRoZSBuZXh0IG1hcmtlci4KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAvLyBUaGUgbWFya2VyIGxlbmd0aCBpcyBpbnZhbGlkLCByZXNldHRpbmcgdGhlIHN0cmVhbSBwb3NpdGlvbi4KICAgICAgICAgICAgICBzdHJlYW0uc2tpcCgtMik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIGlmIChmb3VuZEVPSSkgewogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICB9CiAgICAgIGxlbmd0aCA9IHN0cmVhbS5wb3MgLSBzdGFydFBvczsKICAgICAgaWYgKGIgPT09IC0xKSB7CiAgICAgICAgd2FybignSW5saW5lIERDVERlY29kZSBpbWFnZSBzdHJlYW06ICcgKwogICAgICAgICAgICAgJ0VPSSBtYXJrZXIgbm90IGZvdW5kLCBzZWFyY2hpbmcgZm9yIC9FSS8gaW5zdGVhZC4nKTsKICAgICAgICBzdHJlYW0uc2tpcCgtbGVuZ3RoKTsgLy8gUmVzZXQgdGhlIHN0cmVhbSBwb3NpdGlvbi4KICAgICAgICByZXR1cm4gdGhpcy5maW5kRGVmYXVsdElubGluZVN0cmVhbUVuZChzdHJlYW0pOwogICAgICB9CiAgICAgIHRoaXMuaW5saW5lU3RyZWFtU2tpcEVJKHN0cmVhbSk7CiAgICAgIHJldHVybiBsZW5ndGg7CiAgICB9LAogICAgLyoqCiAgICAgKiBGaW5kIHRoZSBFT0QgKGVuZC1vZi1kYXRhKSBtYXJrZXIgJ34+JyAoaS5lLiBUSUxERSArIEdUKSBvZiB0aGUgc3RyZWFtLgogICAgICogQHJldHVybnMge251bWJlcn0gVGhlIGlubGluZSBzdHJlYW0gbGVuZ3RoLgogICAgICovCiAgICBmaW5kQVNDSUk4NURlY29kZUlubGluZVN0cmVhbUVuZDoKICAgICAgICBmdW5jdGlvbiBQYXJzZXJfZmluZEFTQ0lJODVEZWNvZGVJbmxpbmVTdHJlYW1FbmQoc3RyZWFtKSB7CiAgICAgIHZhciBUSUxERSA9IDB4N0UsIEdUID0gMHgzRTsKICAgICAgdmFyIHN0YXJ0UG9zID0gc3RyZWFtLnBvcywgY2gsIGxlbmd0aDsKICAgICAgd2hpbGUgKChjaCA9IHN0cmVhbS5nZXRCeXRlKCkpICE9PSAtMSkgewogICAgICAgIGlmIChjaCA9PT0gVElMREUgJiYgc3RyZWFtLnBlZWtCeXRlKCkgPT09IEdUKSB7CiAgICAgICAgICBzdHJlYW0uc2tpcCgpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICB9CiAgICAgIGxlbmd0aCA9IHN0cmVhbS5wb3MgLSBzdGFydFBvczsKICAgICAgaWYgKGNoID09PSAtMSkgewogICAgICAgIHdhcm4oJ0lubGluZSBBU0NJSTg1RGVjb2RlIGltYWdlIHN0cmVhbTogJyArCiAgICAgICAgICAgICAnRU9EIG1hcmtlciBub3QgZm91bmQsIHNlYXJjaGluZyBmb3IgL0VJLyBpbnN0ZWFkLicpOwogICAgICAgIHN0cmVhbS5za2lwKC1sZW5ndGgpOyAvLyBSZXNldCB0aGUgc3RyZWFtIHBvc2l0aW9uLgogICAgICAgIHJldHVybiB0aGlzLmZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kKHN0cmVhbSk7CiAgICAgIH0KICAgICAgdGhpcy5pbmxpbmVTdHJlYW1Ta2lwRUkoc3RyZWFtKTsKICAgICAgcmV0dXJuIGxlbmd0aDsKICAgIH0sCiAgICAvKioKICAgICAqIEZpbmQgdGhlIEVPRCAoZW5kLW9mLWRhdGEpIG1hcmtlciAnPicgKGkuZS4gR1QpIG9mIHRoZSBzdHJlYW0uCiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBUaGUgaW5saW5lIHN0cmVhbSBsZW5ndGguCiAgICAgKi8KICAgIGZpbmRBU0NJSUhleERlY29kZUlubGluZVN0cmVhbUVuZDoKICAgICAgICBmdW5jdGlvbiBQYXJzZXJfZmluZEFTQ0lJSGV4RGVjb2RlSW5saW5lU3RyZWFtRW5kKHN0cmVhbSkgewogICAgICB2YXIgR1QgPSAweDNFOwogICAgICB2YXIgc3RhcnRQb3MgPSBzdHJlYW0ucG9zLCBjaCwgbGVuZ3RoOwogICAgICB3aGlsZSAoKGNoID0gc3RyZWFtLmdldEJ5dGUoKSkgIT09IC0xKSB7CiAgICAgICAgaWYgKGNoID09PSBHVCkgewogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICB9CiAgICAgIGxlbmd0aCA9IHN0cmVhbS5wb3MgLSBzdGFydFBvczsKICAgICAgaWYgKGNoID09PSAtMSkgewogICAgICAgIHdhcm4oJ0lubGluZSBBU0NJSUhleERlY29kZSBpbWFnZSBzdHJlYW06ICcgKwogICAgICAgICAgICAgJ0VPRCBtYXJrZXIgbm90IGZvdW5kLCBzZWFyY2hpbmcgZm9yIC9FSS8gaW5zdGVhZC4nKTsKICAgICAgICBzdHJlYW0uc2tpcCgtbGVuZ3RoKTsgLy8gUmVzZXQgdGhlIHN0cmVhbSBwb3NpdGlvbi4KICAgICAgICByZXR1cm4gdGhpcy5maW5kRGVmYXVsdElubGluZVN0cmVhbUVuZChzdHJlYW0pOwogICAgICB9CiAgICAgIHRoaXMuaW5saW5lU3RyZWFtU2tpcEVJKHN0cmVhbSk7CiAgICAgIHJldHVybiBsZW5ndGg7CiAgICB9LAogICAgLyoqCiAgICAgKiBTa2lwIG92ZXIgdGhlIC9FSS8gZm9yIHN0cmVhbXMgd2hlcmUgd2Ugc2VhcmNoIGZvciBhbiBFT0QgbWFya2VyLgogICAgICovCiAgICBpbmxpbmVTdHJlYW1Ta2lwRUk6IGZ1bmN0aW9uIFBhcnNlcl9pbmxpbmVTdHJlYW1Ta2lwRUkoc3RyZWFtKSB7CiAgICAgIHZhciBFID0gMHg0NSwgSSA9IDB4NDk7CiAgICAgIHZhciBzdGF0ZSA9IDAsIGNoOwogICAgICB3aGlsZSAoKGNoID0gc3RyZWFtLmdldEJ5dGUoKSkgIT09IC0xKSB7CiAgICAgICAgaWYgKHN0YXRlID09PSAwKSB7CiAgICAgICAgICBzdGF0ZSA9IChjaCA9PT0gRSkgPyAxIDogMDsKICAgICAgICB9IGVsc2UgaWYgKHN0YXRlID09PSAxKSB7CiAgICAgICAgICBzdGF0ZSA9IChjaCA9PT0gSSkgPyAyIDogMDsKICAgICAgICB9IGVsc2UgaWYgKHN0YXRlID09PSAyKSB7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICBtYWtlSW5saW5lSW1hZ2U6IGZ1bmN0aW9uIFBhcnNlcl9tYWtlSW5saW5lSW1hZ2UoY2lwaGVyVHJhbnNmb3JtKSB7CiAgICAgIHZhciBsZXhlciA9IHRoaXMubGV4ZXI7CiAgICAgIHZhciBzdHJlYW0gPSBsZXhlci5zdHJlYW07CgogICAgICAvLyBQYXJzZSBkaWN0aW9uYXJ5LgogICAgICB2YXIgZGljdCA9IG5ldyBEaWN0KG51bGwpOwogICAgICB3aGlsZSAoIWlzQ21kKHRoaXMuYnVmMSwgJ0lEJykgJiYgIWlzRU9GKHRoaXMuYnVmMSkpIHsKICAgICAgICBpZiAoIWlzTmFtZSh0aGlzLmJ1ZjEpKSB7CiAgICAgICAgICBlcnJvcignRGljdGlvbmFyeSBrZXkgbXVzdCBiZSBhIG5hbWUgb2JqZWN0Jyk7CiAgICAgICAgfQogICAgICAgIHZhciBrZXkgPSB0aGlzLmJ1ZjEubmFtZTsKICAgICAgICB0aGlzLnNoaWZ0KCk7CiAgICAgICAgaWYgKGlzRU9GKHRoaXMuYnVmMSkpIHsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBkaWN0LnNldChrZXksIHRoaXMuZ2V0T2JqKGNpcGhlclRyYW5zZm9ybSkpOwogICAgICB9CgogICAgICAvLyBFeHRyYWN0IHRoZSBuYW1lIG9mIHRoZSBmaXJzdCAoaS5lLiB0aGUgY3VycmVudCkgaW1hZ2UgZmlsdGVyLgogICAgICB2YXIgZmlsdGVyID0gdGhpcy5mZXRjaElmUmVmKGRpY3QuZ2V0KCdGaWx0ZXInLCAnRicpKSwgZmlsdGVyTmFtZTsKICAgICAgaWYgKGlzTmFtZShmaWx0ZXIpKSB7CiAgICAgICAgZmlsdGVyTmFtZSA9IGZpbHRlci5uYW1lOwogICAgICB9IGVsc2UgaWYgKGlzQXJyYXkoZmlsdGVyKSAmJiBpc05hbWUoZmlsdGVyWzBdKSkgewogICAgICAgIGZpbHRlck5hbWUgPSBmaWx0ZXJbMF0ubmFtZTsKICAgICAgfQoKICAgICAgLy8gUGFyc2UgaW1hZ2Ugc3RyZWFtLgogICAgICB2YXIgc3RhcnRQb3MgPSBzdHJlYW0ucG9zLCBsZW5ndGgsIGksIGlpOwogICAgICBpZiAoZmlsdGVyTmFtZSA9PT0gJ0RDVERlY29kZScgfHwgZmlsdGVyTmFtZSA9PT0gJ0RDVCcpIHsKICAgICAgICBsZW5ndGggPSB0aGlzLmZpbmREQ1REZWNvZGVJbmxpbmVTdHJlYW1FbmQoc3RyZWFtKTsKICAgICAgfSBlbHNlIGlmIChmaWx0ZXJOYW1lID09PSAnQVNDSUk4NURlY2lkZScgfHwgZmlsdGVyTmFtZSA9PT0gJ0E4NScpIHsKICAgICAgICBsZW5ndGggPSB0aGlzLmZpbmRBU0NJSTg1RGVjb2RlSW5saW5lU3RyZWFtRW5kKHN0cmVhbSk7CiAgICAgIH0gZWxzZSBpZiAoZmlsdGVyTmFtZSA9PT0gJ0FTQ0lJSGV4RGVjb2RlJyB8fCBmaWx0ZXJOYW1lID09PSAnQUh4JykgewogICAgICAgIGxlbmd0aCA9IHRoaXMuZmluZEFTQ0lJSGV4RGVjb2RlSW5saW5lU3RyZWFtRW5kKHN0cmVhbSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgbGVuZ3RoID0gdGhpcy5maW5kRGVmYXVsdElubGluZVN0cmVhbUVuZChzdHJlYW0pOwogICAgICB9CiAgICAgIHZhciBpbWFnZVN0cmVhbSA9IHN0cmVhbS5tYWtlU3ViU3RyZWFtKHN0YXJ0UG9zLCBsZW5ndGgsIGRpY3QpOwoKICAgICAgLy8gQ2FjaGUgYWxsIGltYWdlcyBiZWxvdyB0aGUgTUFYX0xFTkdUSF9UT19DQUNIRSB0aHJlc2hvbGQgYnkgdGhlaXIKICAgICAgLy8gYWRsZXIzMiBjaGVja3N1bS4KICAgICAgdmFyIGFkbGVyMzI7CiAgICAgIGlmIChsZW5ndGggPCBNQVhfTEVOR1RIX1RPX0NBQ0hFKSB7CiAgICAgICAgdmFyIGltYWdlQnl0ZXMgPSBpbWFnZVN0cmVhbS5nZXRCeXRlcygpOwogICAgICAgIGltYWdlU3RyZWFtLnJlc2V0KCk7CgogICAgICAgIHZhciBhID0gMTsKICAgICAgICB2YXIgYiA9IDA7CiAgICAgICAgZm9yIChpID0gMCwgaWkgPSBpbWFnZUJ5dGVzLmxlbmd0aDsgaSA8IGlpOyArK2kpIHsKICAgICAgICAgIC8vIE5vIG1vZHVsbyByZXF1aXJlZCBpbiB0aGUgbG9vcCBpZiBpbWFnZUJ5dGVzLmxlbmd0aCA8IDU1NTIuCiAgICAgICAgICBhICs9IGltYWdlQnl0ZXNbaV0gJiAweGZmOwogICAgICAgICAgYiArPSBhOwogICAgICAgIH0KICAgICAgICBhZGxlcjMyID0gKChiICUgNjU1MjEpIDw8IDE2KSB8IChhICUgNjU1MjEpOwoKICAgICAgICBpZiAodGhpcy5pbWFnZUNhY2hlLmFkbGVyMzIgPT09IGFkbGVyMzIpIHsKICAgICAgICAgIHRoaXMuYnVmMiA9IENtZC5nZXQoJ0VJJyk7CiAgICAgICAgICB0aGlzLnNoaWZ0KCk7CgogICAgICAgICAgdGhpcy5pbWFnZUNhY2hlW2FkbGVyMzJdLnJlc2V0KCk7CiAgICAgICAgICByZXR1cm4gdGhpcy5pbWFnZUNhY2hlW2FkbGVyMzJdOwogICAgICAgIH0KICAgICAgfQoKICAgICAgaWYgKGNpcGhlclRyYW5zZm9ybSkgewogICAgICAgIGltYWdlU3RyZWFtID0gY2lwaGVyVHJhbnNmb3JtLmNyZWF0ZVN0cmVhbShpbWFnZVN0cmVhbSwgbGVuZ3RoKTsKICAgICAgfQoKICAgICAgaW1hZ2VTdHJlYW0gPSB0aGlzLmZpbHRlcihpbWFnZVN0cmVhbSwgZGljdCwgbGVuZ3RoKTsKICAgICAgaW1hZ2VTdHJlYW0uZGljdCA9IGRpY3Q7CiAgICAgIGlmIChhZGxlcjMyICE9PSB1bmRlZmluZWQpIHsKICAgICAgICBpbWFnZVN0cmVhbS5jYWNoZUtleSA9ICdpbmxpbmVfJyArIGxlbmd0aCArICdfJyArIGFkbGVyMzI7CiAgICAgICAgdGhpcy5pbWFnZUNhY2hlW2FkbGVyMzJdID0gaW1hZ2VTdHJlYW07CiAgICAgIH0KCiAgICAgIHRoaXMuYnVmMiA9IENtZC5nZXQoJ0VJJyk7CiAgICAgIHRoaXMuc2hpZnQoKTsKCiAgICAgIHJldHVybiBpbWFnZVN0cmVhbTsKICAgIH0sCiAgICBmZXRjaElmUmVmOiBmdW5jdGlvbiBQYXJzZXJfZmV0Y2hJZlJlZihvYmopIHsKICAgICAgLy8gbm90IHJlbHlpbmcgb24gdGhlIHhyZWYuZmV0Y2hJZlJlZiAtLSB4cmVmIG1pZ2h0IG5vdCBiZSBzZXQKICAgICAgcmV0dXJuIChpc1JlZihvYmopID8gdGhpcy54cmVmLmZldGNoKG9iaikgOiBvYmopOwogICAgfSwKICAgIG1ha2VTdHJlYW06IGZ1bmN0aW9uIFBhcnNlcl9tYWtlU3RyZWFtKGRpY3QsIGNpcGhlclRyYW5zZm9ybSkgewogICAgICB2YXIgbGV4ZXIgPSB0aGlzLmxleGVyOwogICAgICB2YXIgc3RyZWFtID0gbGV4ZXIuc3RyZWFtOwoKICAgICAgLy8gZ2V0IHN0cmVhbSBzdGFydCBwb3NpdGlvbgogICAgICBsZXhlci5za2lwVG9OZXh0TGluZSgpOwogICAgICB2YXIgcG9zID0gc3RyZWFtLnBvcyAtIDE7CgogICAgICAvLyBnZXQgbGVuZ3RoCiAgICAgIHZhciBsZW5ndGggPSB0aGlzLmZldGNoSWZSZWYoZGljdC5nZXQoJ0xlbmd0aCcpKTsKICAgICAgaWYgKCFpc0ludChsZW5ndGgpKSB7CiAgICAgICAgaW5mbygnQmFkICcgKyBsZW5ndGggKyAnIGF0dHJpYnV0ZSBpbiBzdHJlYW0nKTsKICAgICAgICBsZW5ndGggPSAwOwogICAgICB9CgogICAgICAvLyBza2lwIG92ZXIgdGhlIHN0cmVhbSBkYXRhCiAgICAgIHN0cmVhbS5wb3MgPSBwb3MgKyBsZW5ndGg7CiAgICAgIGxleGVyLm5leHRDaGFyKCk7CgogICAgICB0aGlzLnNoaWZ0KCk7IC8vICc+PicKICAgICAgdGhpcy5zaGlmdCgpOyAvLyAnc3RyZWFtJwogICAgICBpZiAoIWlzQ21kKHRoaXMuYnVmMSwgJ2VuZHN0cmVhbScpKSB7CiAgICAgICAgLy8gYmFkIHN0cmVhbSBsZW5ndGgsIHNjYW5uaW5nIGZvciBlbmRzdHJlYW0KICAgICAgICBzdHJlYW0ucG9zID0gcG9zOwogICAgICAgIHZhciBTQ0FOX0JMT0NLX1NJWkUgPSAyMDQ4OwogICAgICAgIHZhciBFTkRTVFJFQU1fU0lHTkFUVVJFX0xFTkdUSCA9IDk7CiAgICAgICAgdmFyIEVORFNUUkVBTV9TSUdOQVRVUkUgPSBbMHg2NSwgMHg2RSwgMHg2NCwgMHg3MywgMHg3NCwgMHg3MiwgMHg2NSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYxLCAweDZEXTsKICAgICAgICB2YXIgc2tpcHBlZCA9IDAsIGZvdW5kID0gZmFsc2UsIGksIGo7CiAgICAgICAgd2hpbGUgKHN0cmVhbS5wb3MgPCBzdHJlYW0uZW5kKSB7CiAgICAgICAgICB2YXIgc2NhbkJ5dGVzID0gc3RyZWFtLnBlZWtCeXRlcyhTQ0FOX0JMT0NLX1NJWkUpOwogICAgICAgICAgdmFyIHNjYW5MZW5ndGggPSBzY2FuQnl0ZXMubGVuZ3RoIC0gRU5EU1RSRUFNX1NJR05BVFVSRV9MRU5HVEg7CiAgICAgICAgICBpZiAoc2Nhbkxlbmd0aCA8PSAwKSB7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQogICAgICAgICAgZm91bmQgPSBmYWxzZTsKICAgICAgICAgIGZvciAoaSA9IDAsIGogPSAwOyBpIDwgc2Nhbkxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIHZhciBiID0gc2NhbkJ5dGVzW2ldOwogICAgICAgICAgICBpZiAoYiAhPT0gRU5EU1RSRUFNX1NJR05BVFVSRVtqXSkgewogICAgICAgICAgICAgIGkgLT0gajsKICAgICAgICAgICAgICBqID0gMDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBqKys7CiAgICAgICAgICAgICAgaWYgKGogPj0gRU5EU1RSRUFNX1NJR05BVFVSRV9MRU5HVEgpIHsKICAgICAgICAgICAgICAgIGkrKzsKICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgaWYgKGZvdW5kKSB7CiAgICAgICAgICAgIHNraXBwZWQgKz0gaSAtIEVORFNUUkVBTV9TSUdOQVRVUkVfTEVOR1RIOwogICAgICAgICAgICBzdHJlYW0ucG9zICs9IGkgLSBFTkRTVFJFQU1fU0lHTkFUVVJFX0xFTkdUSDsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CiAgICAgICAgICBza2lwcGVkICs9IHNjYW5MZW5ndGg7CiAgICAgICAgICBzdHJlYW0ucG9zICs9IHNjYW5MZW5ndGg7CiAgICAgICAgfQogICAgICAgIGlmICghZm91bmQpIHsKICAgICAgICAgIGVycm9yKCdNaXNzaW5nIGVuZHN0cmVhbScpOwogICAgICAgIH0KICAgICAgICBsZW5ndGggPSBza2lwcGVkOwoKICAgICAgICBsZXhlci5uZXh0Q2hhcigpOwogICAgICAgIHRoaXMuc2hpZnQoKTsKICAgICAgICB0aGlzLnNoaWZ0KCk7CiAgICAgIH0KICAgICAgdGhpcy5zaGlmdCgpOyAvLyAnZW5kc3RyZWFtJwoKICAgICAgc3RyZWFtID0gc3RyZWFtLm1ha2VTdWJTdHJlYW0ocG9zLCBsZW5ndGgsIGRpY3QpOwogICAgICBpZiAoY2lwaGVyVHJhbnNmb3JtKSB7CiAgICAgICAgc3RyZWFtID0gY2lwaGVyVHJhbnNmb3JtLmNyZWF0ZVN0cmVhbShzdHJlYW0sIGxlbmd0aCk7CiAgICAgIH0KICAgICAgc3RyZWFtID0gdGhpcy5maWx0ZXIoc3RyZWFtLCBkaWN0LCBsZW5ndGgpOwogICAgICBzdHJlYW0uZGljdCA9IGRpY3Q7CiAgICAgIHJldHVybiBzdHJlYW07CiAgICB9LAogICAgZmlsdGVyOiBmdW5jdGlvbiBQYXJzZXJfZmlsdGVyKHN0cmVhbSwgZGljdCwgbGVuZ3RoKSB7CiAgICAgIHZhciBmaWx0ZXIgPSB0aGlzLmZldGNoSWZSZWYoZGljdC5nZXQoJ0ZpbHRlcicsICdGJykpOwogICAgICB2YXIgcGFyYW1zID0gdGhpcy5mZXRjaElmUmVmKGRpY3QuZ2V0KCdEZWNvZGVQYXJtcycsICdEUCcpKTsKICAgICAgaWYgKGlzTmFtZShmaWx0ZXIpKSB7CiAgICAgICAgcmV0dXJuIHRoaXMubWFrZUZpbHRlcihzdHJlYW0sIGZpbHRlci5uYW1lLCBsZW5ndGgsIHBhcmFtcyk7CiAgICAgIH0KCiAgICAgIHZhciBtYXliZUxlbmd0aCA9IGxlbmd0aDsKICAgICAgaWYgKGlzQXJyYXkoZmlsdGVyKSkgewogICAgICAgIHZhciBmaWx0ZXJBcnJheSA9IGZpbHRlcjsKICAgICAgICB2YXIgcGFyYW1zQXJyYXkgPSBwYXJhbXM7CiAgICAgICAgZm9yICh2YXIgaSA9IDAsIGlpID0gZmlsdGVyQXJyYXkubGVuZ3RoOyBpIDwgaWk7ICsraSkgewogICAgICAgICAgZmlsdGVyID0gZmlsdGVyQXJyYXlbaV07CiAgICAgICAgICBpZiAoIWlzTmFtZShmaWx0ZXIpKSB7CiAgICAgICAgICAgIGVycm9yKCdCYWQgZmlsdGVyIG5hbWU6ICcgKyBmaWx0ZXIpOwogICAgICAgICAgfQoKICAgICAgICAgIHBhcmFtcyA9IG51bGw7CiAgICAgICAgICBpZiAoaXNBcnJheShwYXJhbXNBcnJheSkgJiYgKGkgaW4gcGFyYW1zQXJyYXkpKSB7CiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtc0FycmF5W2ldOwogICAgICAgICAgfQogICAgICAgICAgc3RyZWFtID0gdGhpcy5tYWtlRmlsdGVyKHN0cmVhbSwgZmlsdGVyLm5hbWUsIG1heWJlTGVuZ3RoLCBwYXJhbXMpOwogICAgICAgICAgLy8gYWZ0ZXIgdGhlIGZpcnN0IHN0cmVhbSB0aGUgbGVuZ3RoIHZhcmlhYmxlIGlzIGludmFsaWQKICAgICAgICAgIG1heWJlTGVuZ3RoID0gbnVsbDsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIHN0cmVhbTsKICAgIH0sCiAgICBtYWtlRmlsdGVyOiBmdW5jdGlvbiBQYXJzZXJfbWFrZUZpbHRlcihzdHJlYW0sIG5hbWUsIG1heWJlTGVuZ3RoLCBwYXJhbXMpIHsKICAgICAgaWYgKHN0cmVhbS5kaWN0LmdldCgnTGVuZ3RoJykgPT09IDApIHsKICAgICAgICByZXR1cm4gbmV3IE51bGxTdHJlYW0oc3RyZWFtKTsKICAgICAgfQogICAgICB0cnkgewogICAgICAgIGlmIChwYXJhbXMpIHsKICAgICAgICAgIHBhcmFtcyA9IHRoaXMuZmV0Y2hJZlJlZihwYXJhbXMpOwogICAgICAgIH0KICAgICAgICB2YXIgeHJlZlN0cmVhbVN0YXRzID0gdGhpcy54cmVmLnN0YXRzLnN0cmVhbVR5cGVzOwogICAgICAgIGlmIChuYW1lID09PSAnRmxhdGVEZWNvZGUnIHx8IG5hbWUgPT09ICdGbCcpIHsKICAgICAgICAgIHhyZWZTdHJlYW1TdGF0c1tTdHJlYW1UeXBlLkZMQVRFXSA9IHRydWU7CiAgICAgICAgICBpZiAocGFyYW1zKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgUHJlZGljdG9yU3RyZWFtKG5ldyBGbGF0ZVN0cmVhbShzdHJlYW0sIG1heWJlTGVuZ3RoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF5YmVMZW5ndGgsIHBhcmFtcyk7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gbmV3IEZsYXRlU3RyZWFtKHN0cmVhbSwgbWF5YmVMZW5ndGgpOwogICAgICAgIH0KICAgICAgICBpZiAobmFtZSA9PT0gJ0xaV0RlY29kZScgfHwgbmFtZSA9PT0gJ0xaVycpIHsKICAgICAgICAgIHhyZWZTdHJlYW1TdGF0c1tTdHJlYW1UeXBlLkxaV10gPSB0cnVlOwogICAgICAgICAgdmFyIGVhcmx5Q2hhbmdlID0gMTsKICAgICAgICAgIGlmIChwYXJhbXMpIHsKICAgICAgICAgICAgaWYgKHBhcmFtcy5oYXMoJ0Vhcmx5Q2hhbmdlJykpIHsKICAgICAgICAgICAgICBlYXJseUNoYW5nZSA9IHBhcmFtcy5nZXQoJ0Vhcmx5Q2hhbmdlJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIG5ldyBQcmVkaWN0b3JTdHJlYW0oCiAgICAgICAgICAgICAgbmV3IExaV1N0cmVhbShzdHJlYW0sIG1heWJlTGVuZ3RoLCBlYXJseUNoYW5nZSksCiAgICAgICAgICAgICAgbWF5YmVMZW5ndGgsIHBhcmFtcyk7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gbmV3IExaV1N0cmVhbShzdHJlYW0sIG1heWJlTGVuZ3RoLCBlYXJseUNoYW5nZSk7CiAgICAgICAgfQogICAgICAgIGlmIChuYW1lID09PSAnRENURGVjb2RlJyB8fCBuYW1lID09PSAnRENUJykgewogICAgICAgICAgeHJlZlN0cmVhbVN0YXRzW1N0cmVhbVR5cGUuRENUXSA9IHRydWU7CiAgICAgICAgICByZXR1cm4gbmV3IEpwZWdTdHJlYW0oc3RyZWFtLCBtYXliZUxlbmd0aCwgc3RyZWFtLmRpY3QsIHRoaXMueHJlZik7CiAgICAgICAgfQogICAgICAgIGlmIChuYW1lID09PSAnSlBYRGVjb2RlJyB8fCBuYW1lID09PSAnSlBYJykgewogICAgICAgICAgeHJlZlN0cmVhbVN0YXRzW1N0cmVhbVR5cGUuSlBYXSA9IHRydWU7CiAgICAgICAgICByZXR1cm4gbmV3IEpweFN0cmVhbShzdHJlYW0sIG1heWJlTGVuZ3RoLCBzdHJlYW0uZGljdCk7CiAgICAgICAgfQogICAgICAgIGlmIChuYW1lID09PSAnQVNDSUk4NURlY29kZScgfHwgbmFtZSA9PT0gJ0E4NScpIHsKICAgICAgICAgIHhyZWZTdHJlYW1TdGF0c1tTdHJlYW1UeXBlLkE4NV0gPSB0cnVlOwogICAgICAgICAgcmV0dXJuIG5ldyBBc2NpaTg1U3RyZWFtKHN0cmVhbSwgbWF5YmVMZW5ndGgpOwogICAgICAgIH0KICAgICAgICBpZiAobmFtZSA9PT0gJ0FTQ0lJSGV4RGVjb2RlJyB8fCBuYW1lID09PSAnQUh4JykgewogICAgICAgICAgeHJlZlN0cmVhbVN0YXRzW1N0cmVhbVR5cGUuQUhYXSA9IHRydWU7CiAgICAgICAgICByZXR1cm4gbmV3IEFzY2lpSGV4U3RyZWFtKHN0cmVhbSwgbWF5YmVMZW5ndGgpOwogICAgICAgIH0KICAgICAgICBpZiAobmFtZSA9PT0gJ0NDSVRURmF4RGVjb2RlJyB8fCBuYW1lID09PSAnQ0NGJykgewogICAgICAgICAgeHJlZlN0cmVhbVN0YXRzW1N0cmVhbVR5cGUuQ0NGXSA9IHRydWU7CiAgICAgICAgICByZXR1cm4gbmV3IENDSVRURmF4U3RyZWFtKHN0cmVhbSwgbWF5YmVMZW5ndGgsIHBhcmFtcyk7CiAgICAgICAgfQogICAgICAgIGlmIChuYW1lID09PSAnUnVuTGVuZ3RoRGVjb2RlJyB8fCBuYW1lID09PSAnUkwnKSB7CiAgICAgICAgICB4cmVmU3RyZWFtU3RhdHNbU3RyZWFtVHlwZS5STF0gPSB0cnVlOwogICAgICAgICAgcmV0dXJuIG5ldyBSdW5MZW5ndGhTdHJlYW0oc3RyZWFtLCBtYXliZUxlbmd0aCk7CiAgICAgICAgfQogICAgICAgIGlmIChuYW1lID09PSAnSkJJRzJEZWNvZGUnKSB7CiAgICAgICAgICB4cmVmU3RyZWFtU3RhdHNbU3RyZWFtVHlwZS5KQklHXSA9IHRydWU7CiAgICAgICAgICByZXR1cm4gbmV3IEpiaWcyU3RyZWFtKHN0cmVhbSwgbWF5YmVMZW5ndGgsIHN0cmVhbS5kaWN0KTsKICAgICAgICB9CiAgICAgICAgd2FybignZmlsdGVyICInICsgbmFtZSArICciIG5vdCBzdXBwb3J0ZWQgeWV0Jyk7CiAgICAgICAgcmV0dXJuIHN0cmVhbTsKICAgICAgfSBjYXRjaCAoZXgpIHsKICAgICAgICBpZiAoZXggaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbikgewogICAgICAgICAgdGhyb3cgZXg7CiAgICAgICAgfQogICAgICAgIHdhcm4oJ0ludmFsaWQgc3RyZWFtOiBcIicgKyBleCArICdcIicpOwogICAgICAgIHJldHVybiBuZXcgTnVsbFN0cmVhbShzdHJlYW0pOwogICAgICB9CiAgICB9CiAgfTsKCiAgcmV0dXJuIFBhcnNlcjsKfSkoKTsKCnZhciBMZXhlciA9IChmdW5jdGlvbiBMZXhlckNsb3N1cmUoKSB7CiAgZnVuY3Rpb24gTGV4ZXIoc3RyZWFtLCBrbm93bkNvbW1hbmRzKSB7CiAgICB0aGlzLnN0cmVhbSA9IHN0cmVhbTsKICAgIHRoaXMubmV4dENoYXIoKTsKCiAgICAvLyBXaGlsZSBsZXhpbmcsIHdlIGJ1aWxkIHVwIG1hbnkgc3RyaW5ncyBvbmUgY2hhciBhdCBhIHRpbWUuIFVzaW5nICs9IGZvcgogICAgLy8gdGhpcyBjYW4gcmVzdWx0IGluIGxvdHMgb2YgZ2FyYmFnZSBzdHJpbmdzLiBJdCdzIGJldHRlciB0byBidWlsZCBhbgogICAgLy8gYXJyYXkgb2Ygc2luZ2xlLWNoYXIgc3RyaW5ncyBhbmQgdGhlbiBqb2luKCkgdGhlbSB0b2dldGhlciBhdCB0aGUgZW5kLgogICAgLy8gQW5kIHJldXNpbmcgYSBzaW5nbGUgYXJyYXkgKGkuZS4gfHRoaXMuc3RyQnVmfCkgb3ZlciBhbmQgb3ZlciBmb3IgdGhpcwogICAgLy8gcHVycG9zZSB1c2VzIGxlc3MgbWVtb3J5IHRoYW4gdXNpbmcgYSBuZXcgYXJyYXkgZm9yIGVhY2ggc3RyaW5nLgogICAgdGhpcy5zdHJCdWYgPSBbXTsKCiAgICAvLyBUaGUgUERGcyBtaWdodCBoYXZlICJnbHVlZCIgY29tbWFuZHMgd2l0aCBvdGhlciBjb21tYW5kcywgb3BlcmFuZHMgb3IKICAgIC8vIGxpdGVyYWxzLCBlLmcuICJxMSIuIFRoZSBrbm93bkNvbW1hbmRzIGlzIGEgZGljdGlvbmFyeSBvZiB0aGUgdmFsaWQKICAgIC8vIGNvbW1hbmRzIGFuZCB0aGVpciBwcmVmaXhlcy4gVGhlIHByZWZpeGVzIGFyZSBidWlsdCB0aGUgZm9sbG93aW5nIHdheToKICAgIC8vIGlmIHRoZXJlIGEgY29tbWFuZCB0aGF0IGlzIGEgcHJlZml4IG9mIHRoZSBvdGhlciB2YWxpZCBjb21tYW5kIG9yCiAgICAvLyBsaXRlcmFsIChlLmcuICdmJyBhbmQgJ2ZhbHNlJykgdGhlIGZvbGxvd2luZyBwcmVmaXhlcyBtdXN0IGJlIGluY2x1ZGVkLAogICAgLy8gJ2ZhJywgJ2ZhbCcsICdmYWxzJy4gVGhlIHByZWZpeGVzIGFyZSBub3QgbmVlZGVkLCBpZiB0aGUgY29tbWFuZCBoYXMgbm8KICAgIC8vIG90aGVyIGNvbW1hbmRzIG9yIGxpdGVyYWxzIGFzIGEgcHJlZml4LiBUaGUga25vd0NvbW1hbmRzIGlzIG9wdGlvbmFsLgogICAgdGhpcy5rbm93bkNvbW1hbmRzID0ga25vd25Db21tYW5kczsKICB9CgogIExleGVyLmlzU3BhY2UgPSBmdW5jdGlvbiBMZXhlcl9pc1NwYWNlKGNoKSB7CiAgICAvLyBTcGFjZSBpcyBvbmUgb2YgdGhlIGZvbGxvd2luZyBjaGFyYWN0ZXJzOiBTUEFDRSwgVEFCLCBDUiBvciBMRi4KICAgIHJldHVybiAoY2ggPT09IDB4MjAgfHwgY2ggPT09IDB4MDkgfHwgY2ggPT09IDB4MEQgfHwgY2ggPT09IDB4MEEpOwogIH07CgogIC8vIEEgJzEnIGluIHRoaXMgYXJyYXkgbWVhbnMgdGhlIGNoYXJhY3RlciBpcyB3aGl0ZSBzcGFjZS4gQSAnMScgb3IKICAvLyAnMicgbWVhbnMgdGhlIGNoYXJhY3RlciBlbmRzIGEgbmFtZSBvciBjb21tYW5kLgogIHZhciBzcGVjaWFsQ2hhcnMgPSBbCiAgICAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAxLCAwLCAxLCAxLCAwLCAwLCAvLyAweAogICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgLy8gMXgKICAgIDEsIDAsIDAsIDAsIDAsIDIsIDAsIDAsIDIsIDIsIDAsIDAsIDAsIDAsIDAsIDIsIC8vIDJ4CiAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyLCAwLCAyLCAwLCAvLyAzeAogICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgLy8gNHgKICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIsIDAsIDIsIDAsIDAsIC8vIDV4CiAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAvLyA2eAogICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMiwgMCwgMiwgMCwgMCwgLy8gN3gKICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIC8vIDh4CiAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAvLyA5eAogICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgLy8gYXgKICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIC8vIGJ4CiAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAvLyBjeAogICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgLy8gZHgKICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIC8vIGV4CiAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwICAvLyBmeAogIF07CgogIGZ1bmN0aW9uIHRvSGV4RGlnaXQoY2gpIHsKICAgIGlmIChjaCA+PSAweDMwICYmIGNoIDw9IDB4MzkpIHsgLy8gJzAnLSc5JwogICAgICByZXR1cm4gY2ggJiAweDBGOwogICAgfQogICAgaWYgKChjaCA+PSAweDQxICYmIGNoIDw9IDB4NDYpIHx8IChjaCA+PSAweDYxICYmIGNoIDw9IDB4NjYpKSB7CiAgICAgIC8vICdBJy0nRicsICdhJy0nZicKICAgICAgcmV0dXJuIChjaCAmIDB4MEYpICsgOTsKICAgIH0KICAgIHJldHVybiAtMTsKICB9CgogIExleGVyLnByb3RvdHlwZSA9IHsKICAgIG5leHRDaGFyOiBmdW5jdGlvbiBMZXhlcl9uZXh0Q2hhcigpIHsKICAgICAgcmV0dXJuICh0aGlzLmN1cnJlbnRDaGFyID0gdGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpKTsKICAgIH0sCiAgICBwZWVrQ2hhcjogZnVuY3Rpb24gTGV4ZXJfcGVla0NoYXIoKSB7CiAgICAgIHJldHVybiB0aGlzLnN0cmVhbS5wZWVrQnl0ZSgpOwogICAgfSwKICAgIGdldE51bWJlcjogZnVuY3Rpb24gTGV4ZXJfZ2V0TnVtYmVyKCkgewogICAgICB2YXIgY2ggPSB0aGlzLmN1cnJlbnRDaGFyOwogICAgICB2YXIgZU5vdGF0aW9uID0gZmFsc2U7CiAgICAgIHZhciBkaXZpZGVCeSA9IDA7IC8vIGRpZmZlcmVudCBmcm9tIDAgaWYgaXQncyBhIGZsb2F0aW5nIHBvaW50IHZhbHVlCiAgICAgIHZhciBzaWduID0gMTsKCiAgICAgIGlmIChjaCA9PT0gMHgyRCkgeyAvLyAnLScKICAgICAgICBzaWduID0gLTE7CiAgICAgICAgY2ggPSB0aGlzLm5leHRDaGFyKCk7CiAgICAgIH0gZWxzZSBpZiAoY2ggPT09IDB4MkIpIHsgLy8gJysnCiAgICAgICAgY2ggPSB0aGlzLm5leHRDaGFyKCk7CiAgICAgIH0KICAgICAgaWYgKGNoID09PSAweDJFKSB7IC8vICcuJwogICAgICAgIGRpdmlkZUJ5ID0gMTA7CiAgICAgICAgY2ggPSB0aGlzLm5leHRDaGFyKCk7CiAgICAgIH0KICAgICAgaWYgKGNoIDwgMHgzMCB8fCBjaCA+IDB4MzkpIHsgLy8gJzAnIC0gJzknCiAgICAgICAgZXJyb3IoJ0ludmFsaWQgbnVtYmVyOiAnICsgU3RyaW5nLmZyb21DaGFyQ29kZShjaCkpOwogICAgICAgIHJldHVybiAwOwogICAgICB9CgogICAgICB2YXIgYmFzZVZhbHVlID0gY2ggLSAweDMwOyAvLyAnMCcKICAgICAgdmFyIHBvd2VyVmFsdWUgPSAwOwogICAgICB2YXIgcG93ZXJWYWx1ZVNpZ24gPSAxOwoKICAgICAgd2hpbGUgKChjaCA9IHRoaXMubmV4dENoYXIoKSkgPj0gMCkgewogICAgICAgIGlmICgweDMwIDw9IGNoICYmIGNoIDw9IDB4MzkpIHsgLy8gJzAnIC0gJzknCiAgICAgICAgICB2YXIgY3VycmVudERpZ2l0ID0gY2ggLSAweDMwOyAvLyAnMCcKICAgICAgICAgIGlmIChlTm90YXRpb24pIHsgLy8gV2UgYXJlIGFmdGVyIGFuICdlJyBvciAnRScKICAgICAgICAgICAgcG93ZXJWYWx1ZSA9IHBvd2VyVmFsdWUgKiAxMCArIGN1cnJlbnREaWdpdDsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmIChkaXZpZGVCeSAhPT0gMCkgeyAvLyBXZSBhcmUgYWZ0ZXIgYSBwb2ludAogICAgICAgICAgICAgIGRpdmlkZUJ5ICo9IDEwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJhc2VWYWx1ZSA9IGJhc2VWYWx1ZSAqIDEwICsgY3VycmVudERpZ2l0OwogICAgICAgICAgfQogICAgICAgIH0gZWxzZSBpZiAoY2ggPT09IDB4MkUpIHsgLy8gJy4nCiAgICAgICAgICBpZiAoZGl2aWRlQnkgPT09IDApIHsKICAgICAgICAgICAgZGl2aWRlQnkgPSAxOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gQSBudW1iZXIgY2FuIGhhdmUgb25seSBvbmUgJy4nCiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQogICAgICAgIH0gZWxzZSBpZiAoY2ggPT09IDB4MkQpIHsgLy8gJy0nCiAgICAgICAgICAvLyBpZ25vcmUgbWludXMgc2lnbnMgaW4gdGhlIG1pZGRsZSBvZiBudW1iZXJzIHRvIG1hdGNoCiAgICAgICAgICAvLyBBZG9iZSdzIGJlaGF2aW9yCiAgICAgICAgICB3YXJuKCdCYWRseSBmb3JtYXRlZCBudW1iZXInKTsKICAgICAgICB9IGVsc2UgaWYgKGNoID09PSAweDQ1IHx8IGNoID09PSAweDY1KSB7IC8vICdFJywgJ2UnCiAgICAgICAgICAvLyAnRScgY2FuIGJlIGVpdGhlciBhIHNjaWVudGlmaWMgbm90YXRpb24gb3IgdGhlIGJlZ2lubmluZyBvZiBhIG5ldwogICAgICAgICAgLy8gb3BlcmF0b3IKICAgICAgICAgIGNoID0gdGhpcy5wZWVrQ2hhcigpOwogICAgICAgICAgaWYgKGNoID09PSAweDJCIHx8IGNoID09PSAweDJEKSB7IC8vICcrJywgJy0nCiAgICAgICAgICAgIHBvd2VyVmFsdWVTaWduID0gKGNoID09PSAweDJEKSA/IC0xIDogMTsKICAgICAgICAgICAgdGhpcy5uZXh0Q2hhcigpOyAvLyBDb25zdW1lIHRoZSBzaWduIGNoYXJhY3RlcgogICAgICAgICAgfSBlbHNlIGlmIChjaCA8IDB4MzAgfHwgY2ggPiAweDM5KSB7IC8vICcwJyAtICc5JwogICAgICAgICAgICAvLyBUaGUgJ0UnIG11c3QgYmUgdGhlIGJlZ2lubmluZyBvZiBhIG5ldyBvcGVyYXRvcgogICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgICAgIGVOb3RhdGlvbiA9IHRydWU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIC8vIHRoZSBsYXN0IGNoYXJhY3RlciBkb2Vzbid0IGJlbG9uZyB0byB1cwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICB9CgogICAgICBpZiAoZGl2aWRlQnkgIT09IDApIHsKICAgICAgICBiYXNlVmFsdWUgLz0gZGl2aWRlQnk7CiAgICAgIH0KICAgICAgaWYgKGVOb3RhdGlvbikgewogICAgICAgIGJhc2VWYWx1ZSAqPSBNYXRoLnBvdygxMCwgcG93ZXJWYWx1ZVNpZ24gKiBwb3dlclZhbHVlKTsKICAgICAgfQogICAgICByZXR1cm4gc2lnbiAqIGJhc2VWYWx1ZTsKICAgIH0sCiAgICBnZXRTdHJpbmc6IGZ1bmN0aW9uIExleGVyX2dldFN0cmluZygpIHsKICAgICAgdmFyIG51bVBhcmVuID0gMTsKICAgICAgdmFyIGRvbmUgPSBmYWxzZTsKICAgICAgdmFyIHN0ckJ1ZiA9IHRoaXMuc3RyQnVmOwogICAgICBzdHJCdWYubGVuZ3RoID0gMDsKCiAgICAgIHZhciBjaCA9IHRoaXMubmV4dENoYXIoKTsKICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICB2YXIgY2hhckJ1ZmZlcmVkID0gZmFsc2U7CiAgICAgICAgc3dpdGNoIChjaCB8IDApIHsKICAgICAgICAgIGNhc2UgLTE6CiAgICAgICAgICAgIHdhcm4oJ1VudGVybWluYXRlZCBzdHJpbmcnKTsKICAgICAgICAgICAgZG9uZSA9IHRydWU7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAweDI4OiAvLyAnKCcKICAgICAgICAgICAgKytudW1QYXJlbjsKICAgICAgICAgICAgc3RyQnVmLnB1c2goJygnKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlIDB4Mjk6IC8vICcpJwogICAgICAgICAgICBpZiAoLS1udW1QYXJlbiA9PT0gMCkgewogICAgICAgICAgICAgIHRoaXMubmV4dENoYXIoKTsgLy8gY29uc3VtZSBzdHJpbmdzICcpJwogICAgICAgICAgICAgIGRvbmUgPSB0cnVlOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIHN0ckJ1Zi5wdXNoKCcpJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlIDB4NUM6IC8vICdcXCcKICAgICAgICAgICAgY2ggPSB0aGlzLm5leHRDaGFyKCk7CiAgICAgICAgICAgIHN3aXRjaCAoY2gpIHsKICAgICAgICAgICAgICBjYXNlIC0xOgogICAgICAgICAgICAgICAgd2FybignVW50ZXJtaW5hdGVkIHN0cmluZycpOwogICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICBjYXNlIDB4NkU6IC8vICduJwogICAgICAgICAgICAgICAgc3RyQnVmLnB1c2goJ1xuJyk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICBjYXNlIDB4NzI6IC8vICdyJwogICAgICAgICAgICAgICAgc3RyQnVmLnB1c2goJ1xyJyk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICBjYXNlIDB4NzQ6IC8vICd0JwogICAgICAgICAgICAgICAgc3RyQnVmLnB1c2goJ1x0Jyk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICBjYXNlIDB4NjI6IC8vICdiJwogICAgICAgICAgICAgICAgc3RyQnVmLnB1c2goJ1xiJyk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICBjYXNlIDB4NjY6IC8vICdmJwogICAgICAgICAgICAgICAgc3RyQnVmLnB1c2goJ1xmJyk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICBjYXNlIDB4NUM6IC8vICdcJwogICAgICAgICAgICAgIGNhc2UgMHgyODogLy8gJygnCiAgICAgICAgICAgICAgY2FzZSAweDI5OiAvLyAnKScKICAgICAgICAgICAgICAgIHN0ckJ1Zi5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoY2gpKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIGNhc2UgMHgzMDogY2FzZSAweDMxOiBjYXNlIDB4MzI6IGNhc2UgMHgzMzogLy8gJzAnLSczJwogICAgICAgICAgICAgIGNhc2UgMHgzNDogY2FzZSAweDM1OiBjYXNlIDB4MzY6IGNhc2UgMHgzNzogLy8gJzQnLSc3JwogICAgICAgICAgICAgICAgdmFyIHggPSBjaCAmIDB4MEY7CiAgICAgICAgICAgICAgICBjaCA9IHRoaXMubmV4dENoYXIoKTsKICAgICAgICAgICAgICAgIGNoYXJCdWZmZXJlZCA9IHRydWU7CiAgICAgICAgICAgICAgICBpZiAoY2ggPj0gMHgzMCAmJiBjaCA8PSAweDM3KSB7IC8vICcwJy0nNycKICAgICAgICAgICAgICAgICAgeCA9ICh4IDw8IDMpICsgKGNoICYgMHgwRik7CiAgICAgICAgICAgICAgICAgIGNoID0gdGhpcy5uZXh0Q2hhcigpOwogICAgICAgICAgICAgICAgICBpZiAoY2ggPj0gMHgzMCAmJiBjaCA8PSAweDM3KSB7ICAvLyAnMCctJzcnCiAgICAgICAgICAgICAgICAgICAgY2hhckJ1ZmZlcmVkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgeCA9ICh4IDw8IDMpICsgKGNoICYgMHgwRik7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHN0ckJ1Zi5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoeCkpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgY2FzZSAweDBEOiAvLyBDUgogICAgICAgICAgICAgICAgaWYgKHRoaXMucGVla0NoYXIoKSA9PT0gMHgwQSkgeyAvLyBMRgogICAgICAgICAgICAgICAgICB0aGlzLm5leHRDaGFyKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICBjYXNlIDB4MEE6IC8vIExGCiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgc3RyQnVmLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShjaCkpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICBzdHJCdWYucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGNoKSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBpZiAoZG9uZSkgewogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIGlmICghY2hhckJ1ZmZlcmVkKSB7CiAgICAgICAgICBjaCA9IHRoaXMubmV4dENoYXIoKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIHN0ckJ1Zi5qb2luKCcnKTsKICAgIH0sCiAgICBnZXROYW1lOiBmdW5jdGlvbiBMZXhlcl9nZXROYW1lKCkgewogICAgICB2YXIgY2g7CiAgICAgIHZhciBzdHJCdWYgPSB0aGlzLnN0ckJ1ZjsKICAgICAgc3RyQnVmLmxlbmd0aCA9IDA7CiAgICAgIHdoaWxlICgoY2ggPSB0aGlzLm5leHRDaGFyKCkpID49IDAgJiYgIXNwZWNpYWxDaGFyc1tjaF0pIHsKICAgICAgICBpZiAoY2ggPT09IDB4MjMpIHsgLy8gJyMnCiAgICAgICAgICBjaCA9IHRoaXMubmV4dENoYXIoKTsKICAgICAgICAgIHZhciB4ID0gdG9IZXhEaWdpdChjaCk7CiAgICAgICAgICBpZiAoeCAhPT0gLTEpIHsKICAgICAgICAgICAgdmFyIHgyID0gdG9IZXhEaWdpdCh0aGlzLm5leHRDaGFyKCkpOwogICAgICAgICAgICBpZiAoeDIgPT09IC0xKSB7CiAgICAgICAgICAgICAgZXJyb3IoJ0lsbGVnYWwgZGlnaXQgaW4gaGV4IGNoYXIgaW4gbmFtZTogJyArIHgyKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBzdHJCdWYucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKCh4IDw8IDQpIHwgeDIpKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHN0ckJ1Zi5wdXNoKCcjJywgU3RyaW5nLmZyb21DaGFyQ29kZShjaCkpOwogICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBzdHJCdWYucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGNoKSk7CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmIChzdHJCdWYubGVuZ3RoID4gMTI4KSB7CiAgICAgICAgZXJyb3IoJ1dhcm5pbmc6IG5hbWUgdG9rZW4gaXMgbG9uZ2VyIHRoYW4gYWxsb3dlZCBieSB0aGUgc3BlYzogJyArCiAgICAgICAgICAgICAgc3RyQnVmLmxlbmd0aCk7CiAgICAgIH0KICAgICAgcmV0dXJuIE5hbWUuZ2V0KHN0ckJ1Zi5qb2luKCcnKSk7CiAgICB9LAogICAgZ2V0SGV4U3RyaW5nOiBmdW5jdGlvbiBMZXhlcl9nZXRIZXhTdHJpbmcoKSB7CiAgICAgIHZhciBzdHJCdWYgPSB0aGlzLnN0ckJ1ZjsKICAgICAgc3RyQnVmLmxlbmd0aCA9IDA7CiAgICAgIHZhciBjaCA9IHRoaXMuY3VycmVudENoYXI7CiAgICAgIHZhciBpc0ZpcnN0SGV4ID0gdHJ1ZTsKICAgICAgdmFyIGZpcnN0RGlnaXQ7CiAgICAgIHZhciBzZWNvbmREaWdpdDsKICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICBpZiAoY2ggPCAwKSB7CiAgICAgICAgICB3YXJuKCdVbnRlcm1pbmF0ZWQgaGV4IHN0cmluZycpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfSBlbHNlIGlmIChjaCA9PT0gMHgzRSkgeyAvLyAnPicKICAgICAgICAgIHRoaXMubmV4dENoYXIoKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0gZWxzZSBpZiAoc3BlY2lhbENoYXJzW2NoXSA9PT0gMSkgewogICAgICAgICAgY2ggPSB0aGlzLm5leHRDaGFyKCk7CiAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgaWYgKGlzRmlyc3RIZXgpIHsKICAgICAgICAgICAgZmlyc3REaWdpdCA9IHRvSGV4RGlnaXQoY2gpOwogICAgICAgICAgICBpZiAoZmlyc3REaWdpdCA9PT0gLTEpIHsKICAgICAgICAgICAgICB3YXJuKCdJZ25vcmluZyBpbnZhbGlkIGNoYXJhY3RlciAiJyArIGNoICsgJyIgaW4gaGV4IHN0cmluZycpOwogICAgICAgICAgICAgIGNoID0gdGhpcy5uZXh0Q2hhcigpOwogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBzZWNvbmREaWdpdCA9IHRvSGV4RGlnaXQoY2gpOwogICAgICAgICAgICBpZiAoc2Vjb25kRGlnaXQgPT09IC0xKSB7CiAgICAgICAgICAgICAgd2FybignSWdub3JpbmcgaW52YWxpZCBjaGFyYWN0ZXIgIicgKyBjaCArICciIGluIGhleCBzdHJpbmcnKTsKICAgICAgICAgICAgICBjaCA9IHRoaXMubmV4dENoYXIoKTsKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBzdHJCdWYucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKChmaXJzdERpZ2l0IDw8IDQpIHwgc2Vjb25kRGlnaXQpKTsKICAgICAgICAgIH0KICAgICAgICAgIGlzRmlyc3RIZXggPSAhaXNGaXJzdEhleDsKICAgICAgICAgIGNoID0gdGhpcy5uZXh0Q2hhcigpOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gc3RyQnVmLmpvaW4oJycpOwogICAgfSwKICAgIGdldE9iajogZnVuY3Rpb24gTGV4ZXJfZ2V0T2JqKCkgewogICAgICAvLyBza2lwIHdoaXRlc3BhY2UgYW5kIGNvbW1lbnRzCiAgICAgIHZhciBjb21tZW50ID0gZmFsc2U7CiAgICAgIHZhciBjaCA9IHRoaXMuY3VycmVudENoYXI7CiAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgaWYgKGNoIDwgMCkgewogICAgICAgICAgcmV0dXJuIEVPRjsKICAgICAgICB9CiAgICAgICAgaWYgKGNvbW1lbnQpIHsKICAgICAgICAgIGlmIChjaCA9PT0gMHgwQSB8fCBjaCA9PT0gMHgwRCkgeyAvLyBMRiwgQ1IKICAgICAgICAgICAgY29tbWVudCA9IGZhbHNlOwogICAgICAgICAgfQogICAgICAgIH0gZWxzZSBpZiAoY2ggPT09IDB4MjUpIHsgLy8gJyUnCiAgICAgICAgICBjb21tZW50ID0gdHJ1ZTsKICAgICAgICB9IGVsc2UgaWYgKHNwZWNpYWxDaGFyc1tjaF0gIT09IDEpIHsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBjaCA9IHRoaXMubmV4dENoYXIoKTsKICAgICAgfQoKICAgICAgLy8gc3RhcnQgcmVhZGluZyB0b2tlbgogICAgICBzd2l0Y2ggKGNoIHwgMCkgewogICAgICAgIGNhc2UgMHgzMDogY2FzZSAweDMxOiBjYXNlIDB4MzI6IGNhc2UgMHgzMzogY2FzZSAweDM0OiAvLyAnMCctJzQnCiAgICAgICAgY2FzZSAweDM1OiBjYXNlIDB4MzY6IGNhc2UgMHgzNzogY2FzZSAweDM4OiBjYXNlIDB4Mzk6IC8vICc1Jy0nOScKICAgICAgICBjYXNlIDB4MkI6IGNhc2UgMHgyRDogY2FzZSAweDJFOiAvLyAnKycsICctJywgJy4nCiAgICAgICAgICByZXR1cm4gdGhpcy5nZXROdW1iZXIoKTsKICAgICAgICBjYXNlIDB4Mjg6IC8vICcoJwogICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nKCk7CiAgICAgICAgY2FzZSAweDJGOiAvLyAnLycKICAgICAgICAgIHJldHVybiB0aGlzLmdldE5hbWUoKTsKICAgICAgICAvLyBhcnJheSBwdW5jdHVhdGlvbgogICAgICAgIGNhc2UgMHg1QjogLy8gJ1snCiAgICAgICAgICB0aGlzLm5leHRDaGFyKCk7CiAgICAgICAgICByZXR1cm4gQ21kLmdldCgnWycpOwogICAgICAgIGNhc2UgMHg1RDogLy8gJ10nCiAgICAgICAgICB0aGlzLm5leHRDaGFyKCk7CiAgICAgICAgICByZXR1cm4gQ21kLmdldCgnXScpOwogICAgICAgIC8vIGhleCBzdHJpbmcgb3IgZGljdCBwdW5jdHVhdGlvbgogICAgICAgIGNhc2UgMHgzQzogLy8gJzwnCiAgICAgICAgICBjaCA9IHRoaXMubmV4dENoYXIoKTsKICAgICAgICAgIGlmIChjaCA9PT0gMHgzQykgewogICAgICAgICAgICAvLyBkaWN0IHB1bmN0dWF0aW9uCiAgICAgICAgICAgIHRoaXMubmV4dENoYXIoKTsKICAgICAgICAgICAgcmV0dXJuIENtZC5nZXQoJzw8Jyk7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRIZXhTdHJpbmcoKTsKICAgICAgICAvLyBkaWN0IHB1bmN0dWF0aW9uCiAgICAgICAgY2FzZSAweDNFOiAvLyAnPicKICAgICAgICAgIGNoID0gdGhpcy5uZXh0Q2hhcigpOwogICAgICAgICAgaWYgKGNoID09PSAweDNFKSB7CiAgICAgICAgICAgIHRoaXMubmV4dENoYXIoKTsKICAgICAgICAgICAgcmV0dXJuIENtZC5nZXQoJz4+Jyk7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gQ21kLmdldCgnPicpOwogICAgICAgIGNhc2UgMHg3QjogLy8gJ3snCiAgICAgICAgICB0aGlzLm5leHRDaGFyKCk7CiAgICAgICAgICByZXR1cm4gQ21kLmdldCgneycpOwogICAgICAgIGNhc2UgMHg3RDogLy8gJ30nCiAgICAgICAgICB0aGlzLm5leHRDaGFyKCk7CiAgICAgICAgICByZXR1cm4gQ21kLmdldCgnfScpOwogICAgICAgIGNhc2UgMHgyOTogLy8gJyknCiAgICAgICAgICBlcnJvcignSWxsZWdhbCBjaGFyYWN0ZXI6ICcgKyBjaCk7CiAgICAgICAgICBicmVhazsKICAgICAgfQoKICAgICAgLy8gY29tbWFuZAogICAgICB2YXIgc3RyID0gU3RyaW5nLmZyb21DaGFyQ29kZShjaCk7CiAgICAgIHZhciBrbm93bkNvbW1hbmRzID0gdGhpcy5rbm93bkNvbW1hbmRzOwogICAgICB2YXIga25vd25Db21tYW5kRm91bmQgPSBrbm93bkNvbW1hbmRzICYmIGtub3duQ29tbWFuZHNbc3RyXSAhPT0gdW5kZWZpbmVkOwogICAgICB3aGlsZSAoKGNoID0gdGhpcy5uZXh0Q2hhcigpKSA+PSAwICYmICFzcGVjaWFsQ2hhcnNbY2hdKSB7CiAgICAgICAgLy8gc3RvcCBpZiBrbm93biBjb21tYW5kIGlzIGZvdW5kIGFuZCBuZXh0IGNoYXJhY3RlciBkb2VzIG5vdCBtYWtlCiAgICAgICAgLy8gdGhlIHN0ciBhIGNvbW1hbmQKICAgICAgICB2YXIgcG9zc2libGVDb21tYW5kID0gc3RyICsgU3RyaW5nLmZyb21DaGFyQ29kZShjaCk7CiAgICAgICAgaWYgKGtub3duQ29tbWFuZEZvdW5kICYmIGtub3duQ29tbWFuZHNbcG9zc2libGVDb21tYW5kXSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgaWYgKHN0ci5sZW5ndGggPT09IDEyOCkgewogICAgICAgICAgZXJyb3IoJ0NvbW1hbmQgdG9rZW4gdG9vIGxvbmc6ICcgKyBzdHIubGVuZ3RoKTsKICAgICAgICB9CiAgICAgICAgc3RyID0gcG9zc2libGVDb21tYW5kOwogICAgICAgIGtub3duQ29tbWFuZEZvdW5kID0ga25vd25Db21tYW5kcyAmJiBrbm93bkNvbW1hbmRzW3N0cl0gIT09IHVuZGVmaW5lZDsKICAgICAgfQogICAgICBpZiAoc3RyID09PSAndHJ1ZScpIHsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgfQogICAgICBpZiAoc3RyID09PSAnZmFsc2UnKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICAgIGlmIChzdHIgPT09ICdudWxsJykgewogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CiAgICAgIHJldHVybiBDbWQuZ2V0KHN0cik7CiAgICB9LAogICAgc2tpcFRvTmV4dExpbmU6IGZ1bmN0aW9uIExleGVyX3NraXBUb05leHRMaW5lKCkgewogICAgICB2YXIgY2ggPSB0aGlzLmN1cnJlbnRDaGFyOwogICAgICB3aGlsZSAoY2ggPj0gMCkgewogICAgICAgIGlmIChjaCA9PT0gMHgwRCkgeyAvLyBDUgogICAgICAgICAgY2ggPSB0aGlzLm5leHRDaGFyKCk7CiAgICAgICAgICBpZiAoY2ggPT09IDB4MEEpIHsgLy8gTEYKICAgICAgICAgICAgdGhpcy5uZXh0Q2hhcigpOwogICAgICAgICAgfQogICAgICAgICAgYnJlYWs7CiAgICAgICAgfSBlbHNlIGlmIChjaCA9PT0gMHgwQSkgeyAvLyBMRgogICAgICAgICAgdGhpcy5uZXh0Q2hhcigpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIGNoID0gdGhpcy5uZXh0Q2hhcigpOwogICAgICB9CiAgICB9CiAgfTsKCiAgcmV0dXJuIExleGVyOwp9KSgpOwoKdmFyIExpbmVhcml6YXRpb24gPSB7CiAgY3JlYXRlOiBmdW5jdGlvbiBMaW5lYXJpemF0aW9uQ3JlYXRlKHN0cmVhbSkgewogICAgZnVuY3Rpb24gZ2V0SW50KG5hbWUsIGFsbG93WmVyb1ZhbHVlKSB7CiAgICAgIHZhciBvYmogPSBsaW5EaWN0LmdldChuYW1lKTsKICAgICAgaWYgKGlzSW50KG9iaikgJiYgKGFsbG93WmVyb1ZhbHVlID8gb2JqID49IDAgOiBvYmogPiAwKSkgewogICAgICAgIHJldHVybiBvYmo7CiAgICAgIH0KICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgIicgKyBuYW1lICsgJyIgcGFyYW1ldGVyIGluIHRoZSBsaW5lYXJpemF0aW9uICcgKwogICAgICAgICAgICAgICAgICAgICAgJ2RpY3Rpb25hcnkgaXMgaW52YWxpZC4nKTsKICAgIH0KICAgIGZ1bmN0aW9uIGdldEhpbnRzKCkgewogICAgICB2YXIgaGludHMgPSBsaW5EaWN0LmdldCgnSCcpLCBoaW50c0xlbmd0aCwgaXRlbTsKICAgICAgaWYgKGlzQXJyYXkoaGludHMpICYmCiAgICAgICAgICAoKGhpbnRzTGVuZ3RoID0gaGludHMubGVuZ3RoKSA9PT0gMiB8fCBoaW50c0xlbmd0aCA9PT0gNCkpIHsKICAgICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgaGludHNMZW5ndGg7IGluZGV4KyspIHsKICAgICAgICAgIGlmICghKGlzSW50KGl0ZW0gPSBoaW50c1tpbmRleF0pICYmIGl0ZW0gPiAwKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0hpbnQgKCcgKyBpbmRleCArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKSBpbiB0aGUgbGluZWFyaXphdGlvbiBkaWN0aW9uYXJ5IGlzIGludmFsaWQuJyk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBoaW50czsKICAgICAgfQogICAgICB0aHJvdyBuZXcgRXJyb3IoJ0hpbnQgYXJyYXkgaW4gdGhlIGxpbmVhcml6YXRpb24gZGljdGlvbmFyeSBpcyBpbnZhbGlkLicpOwogICAgfQogICAgdmFyIHBhcnNlciA9IG5ldyBQYXJzZXIobmV3IExleGVyKHN0cmVhbSksIGZhbHNlLCBudWxsKTsKICAgIHZhciBvYmoxID0gcGFyc2VyLmdldE9iaigpOwogICAgdmFyIG9iajIgPSBwYXJzZXIuZ2V0T2JqKCk7CiAgICB2YXIgb2JqMyA9IHBhcnNlci5nZXRPYmooKTsKICAgIHZhciBsaW5EaWN0ID0gcGFyc2VyLmdldE9iaigpOwogICAgdmFyIG9iaiwgbGVuZ3RoOwogICAgaWYgKCEoaXNJbnQob2JqMSkgJiYgaXNJbnQob2JqMikgJiYgaXNDbWQob2JqMywgJ29iaicpICYmIGlzRGljdChsaW5EaWN0KSAmJgogICAgICAgICAgaXNOdW0ob2JqID0gbGluRGljdC5nZXQoJ0xpbmVhcml6ZWQnKSkgJiYgb2JqID4gMCkpIHsKICAgICAgcmV0dXJuIG51bGw7IC8vIE5vIHZhbGlkIGxpbmVhcml6YXRpb24gZGljdGlvbmFyeSBmb3VuZC4KICAgIH0gZWxzZSBpZiAoKGxlbmd0aCA9IGdldEludCgnTCcpKSAhPT0gc3RyZWFtLmxlbmd0aCkgewogICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSAiTCIgcGFyYW1ldGVyIGluIHRoZSBsaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgJyArCiAgICAgICAgICAgICAgICAgICAgICAnZG9lcyBub3QgZXF1YWwgdGhlIHN0cmVhbSBsZW5ndGguJyk7CiAgICB9CiAgICByZXR1cm4gewogICAgICBsZW5ndGg6IGxlbmd0aCwKICAgICAgaGludHM6IGdldEhpbnRzKCksCiAgICAgIG9iamVjdE51bWJlckZpcnN0OiBnZXRJbnQoJ08nKSwKICAgICAgZW5kRmlyc3Q6IGdldEludCgnRScpLAogICAgICBudW1QYWdlczogZ2V0SW50KCdOJyksCiAgICAgIG1haW5YUmVmRW50cmllc09mZnNldDogZ2V0SW50KCdUJyksCiAgICAgIHBhZ2VGaXJzdDogKGxpbkRpY3QuaGFzKCdQJykgPyBnZXRJbnQoJ1AnLCB0cnVlKSA6IDApCiAgICB9OwogIH0KfTsKCgp2YXIgUG9zdFNjcmlwdFBhcnNlciA9IChmdW5jdGlvbiBQb3N0U2NyaXB0UGFyc2VyQ2xvc3VyZSgpIHsKICBmdW5jdGlvbiBQb3N0U2NyaXB0UGFyc2VyKGxleGVyKSB7CiAgICB0aGlzLmxleGVyID0gbGV4ZXI7CiAgICB0aGlzLm9wZXJhdG9ycyA9IFtdOwogICAgdGhpcy50b2tlbiA9IG51bGw7CiAgICB0aGlzLnByZXYgPSBudWxsOwogIH0KICBQb3N0U2NyaXB0UGFyc2VyLnByb3RvdHlwZSA9IHsKICAgIG5leHRUb2tlbjogZnVuY3Rpb24gUG9zdFNjcmlwdFBhcnNlcl9uZXh0VG9rZW4oKSB7CiAgICAgIHRoaXMucHJldiA9IHRoaXMudG9rZW47CiAgICAgIHRoaXMudG9rZW4gPSB0aGlzLmxleGVyLmdldFRva2VuKCk7CiAgICB9LAogICAgYWNjZXB0OiBmdW5jdGlvbiBQb3N0U2NyaXB0UGFyc2VyX2FjY2VwdCh0eXBlKSB7CiAgICAgIGlmICh0aGlzLnRva2VuLnR5cGUgPT09IHR5cGUpIHsKICAgICAgICB0aGlzLm5leHRUb2tlbigpOwogICAgICAgIHJldHVybiB0cnVlOwogICAgICB9CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0sCiAgICBleHBlY3Q6IGZ1bmN0aW9uIFBvc3RTY3JpcHRQYXJzZXJfZXhwZWN0KHR5cGUpIHsKICAgICAgaWYgKHRoaXMuYWNjZXB0KHR5cGUpKSB7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH0KICAgICAgZXJyb3IoJ1VuZXhwZWN0ZWQgc3ltYm9sOiBmb3VuZCAnICsgdGhpcy50b2tlbi50eXBlICsgJyBleHBlY3RlZCAnICsKICAgICAgICB0eXBlICsgJy4nKTsKICAgIH0sCiAgICBwYXJzZTogZnVuY3Rpb24gUG9zdFNjcmlwdFBhcnNlcl9wYXJzZSgpIHsKICAgICAgdGhpcy5uZXh0VG9rZW4oKTsKICAgICAgdGhpcy5leHBlY3QoUG9zdFNjcmlwdFRva2VuVHlwZXMuTEJSQUNFKTsKICAgICAgdGhpcy5wYXJzZUJsb2NrKCk7CiAgICAgIHRoaXMuZXhwZWN0KFBvc3RTY3JpcHRUb2tlblR5cGVzLlJCUkFDRSk7CiAgICAgIHJldHVybiB0aGlzLm9wZXJhdG9yczsKICAgIH0sCiAgICBwYXJzZUJsb2NrOiBmdW5jdGlvbiBQb3N0U2NyaXB0UGFyc2VyX3BhcnNlQmxvY2soKSB7CiAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgaWYgKHRoaXMuYWNjZXB0KFBvc3RTY3JpcHRUb2tlblR5cGVzLk5VTUJFUikpIHsKICAgICAgICAgIHRoaXMub3BlcmF0b3JzLnB1c2godGhpcy5wcmV2LnZhbHVlKTsKICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYWNjZXB0KFBvc3RTY3JpcHRUb2tlblR5cGVzLk9QRVJBVE9SKSkgewogICAgICAgICAgdGhpcy5vcGVyYXRvcnMucHVzaCh0aGlzLnByZXYudmFsdWUpOwogICAgICAgIH0gZWxzZSBpZiAodGhpcy5hY2NlcHQoUG9zdFNjcmlwdFRva2VuVHlwZXMuTEJSQUNFKSkgewogICAgICAgICAgdGhpcy5wYXJzZUNvbmRpdGlvbigpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgcGFyc2VDb25kaXRpb246IGZ1bmN0aW9uIFBvc3RTY3JpcHRQYXJzZXJfcGFyc2VDb25kaXRpb24oKSB7CiAgICAgIC8vIEFkZCB0d28gcGxhY2UgaG9sZGVycyB0aGF0IHdpbGwgYmUgdXBkYXRlZCBsYXRlcgogICAgICB2YXIgY29uZGl0aW9uTG9jYXRpb24gPSB0aGlzLm9wZXJhdG9ycy5sZW5ndGg7CiAgICAgIHRoaXMub3BlcmF0b3JzLnB1c2gobnVsbCwgbnVsbCk7CgogICAgICB0aGlzLnBhcnNlQmxvY2soKTsKICAgICAgdGhpcy5leHBlY3QoUG9zdFNjcmlwdFRva2VuVHlwZXMuUkJSQUNFKTsKICAgICAgaWYgKHRoaXMuYWNjZXB0KFBvc3RTY3JpcHRUb2tlblR5cGVzLklGKSkgewogICAgICAgIC8vIFRoZSB0cnVlIGJsb2NrIGlzIHJpZ2h0IGFmdGVyIHRoZSAnaWYnIHNvIGl0IGp1c3QgZmFsbHMgdGhyb3VnaCBvbgogICAgICAgIC8vIHRydWUgZWxzZSBpdCBqdW1wcyBhbmQgc2tpcHMgdGhlIHRydWUgYmxvY2suCiAgICAgICAgdGhpcy5vcGVyYXRvcnNbY29uZGl0aW9uTG9jYXRpb25dID0gdGhpcy5vcGVyYXRvcnMubGVuZ3RoOwogICAgICAgIHRoaXMub3BlcmF0b3JzW2NvbmRpdGlvbkxvY2F0aW9uICsgMV0gPSAnanonOwogICAgICB9IGVsc2UgaWYgKHRoaXMuYWNjZXB0KFBvc3RTY3JpcHRUb2tlblR5cGVzLkxCUkFDRSkpIHsKICAgICAgICB2YXIganVtcExvY2F0aW9uID0gdGhpcy5vcGVyYXRvcnMubGVuZ3RoOwogICAgICAgIHRoaXMub3BlcmF0b3JzLnB1c2gobnVsbCwgbnVsbCk7CiAgICAgICAgdmFyIGVuZE9mVHJ1ZSA9IHRoaXMub3BlcmF0b3JzLmxlbmd0aDsKICAgICAgICB0aGlzLnBhcnNlQmxvY2soKTsKICAgICAgICB0aGlzLmV4cGVjdChQb3N0U2NyaXB0VG9rZW5UeXBlcy5SQlJBQ0UpOwogICAgICAgIHRoaXMuZXhwZWN0KFBvc3RTY3JpcHRUb2tlblR5cGVzLklGRUxTRSk7CiAgICAgICAgLy8gVGhlIGp1bXAgaXMgYWRkZWQgYXQgdGhlIGVuZCBvZiB0aGUgdHJ1ZSBibG9jayB0byBza2lwIHRoZSBmYWxzZQogICAgICAgIC8vIGJsb2NrLgogICAgICAgIHRoaXMub3BlcmF0b3JzW2p1bXBMb2NhdGlvbl0gPSB0aGlzLm9wZXJhdG9ycy5sZW5ndGg7CiAgICAgICAgdGhpcy5vcGVyYXRvcnNbanVtcExvY2F0aW9uICsgMV0gPSAnaic7CgogICAgICAgIHRoaXMub3BlcmF0b3JzW2NvbmRpdGlvbkxvY2F0aW9uXSA9IGVuZE9mVHJ1ZTsKICAgICAgICB0aGlzLm9wZXJhdG9yc1tjb25kaXRpb25Mb2NhdGlvbiArIDFdID0gJ2p6JzsKICAgICAgfSBlbHNlIHsKICAgICAgICBlcnJvcignUFMgRnVuY3Rpb246IGVycm9yIHBhcnNpbmcgY29uZGl0aW9uYWwuJyk7CiAgICAgIH0KICAgIH0KICB9OwogIHJldHVybiBQb3N0U2NyaXB0UGFyc2VyOwp9KSgpOwoKdmFyIFBvc3RTY3JpcHRUb2tlblR5cGVzID0gewogIExCUkFDRTogMCwKICBSQlJBQ0U6IDEsCiAgTlVNQkVSOiAyLAogIE9QRVJBVE9SOiAzLAogIElGOiA0LAogIElGRUxTRTogNQp9OwoKdmFyIFBvc3RTY3JpcHRUb2tlbiA9IChmdW5jdGlvbiBQb3N0U2NyaXB0VG9rZW5DbG9zdXJlKCkgewogIGZ1bmN0aW9uIFBvc3RTY3JpcHRUb2tlbih0eXBlLCB2YWx1ZSkgewogICAgdGhpcy50eXBlID0gdHlwZTsKICAgIHRoaXMudmFsdWUgPSB2YWx1ZTsKICB9CgogIHZhciBvcENhY2hlID0ge307CgogIFBvc3RTY3JpcHRUb2tlbi5nZXRPcGVyYXRvciA9IGZ1bmN0aW9uIFBvc3RTY3JpcHRUb2tlbl9nZXRPcGVyYXRvcihvcCkgewogICAgdmFyIG9wVmFsdWUgPSBvcENhY2hlW29wXTsKICAgIGlmIChvcFZhbHVlKSB7CiAgICAgIHJldHVybiBvcFZhbHVlOwogICAgfQogICAgcmV0dXJuIG9wQ2FjaGVbb3BdID0gbmV3IFBvc3RTY3JpcHRUb2tlbihQb3N0U2NyaXB0VG9rZW5UeXBlcy5PUEVSQVRPUiwgb3ApOwogIH07CgogIFBvc3RTY3JpcHRUb2tlbi5MQlJBQ0UgPSBuZXcgUG9zdFNjcmlwdFRva2VuKFBvc3RTY3JpcHRUb2tlblR5cGVzLkxCUkFDRSwKICAgICd7Jyk7CiAgUG9zdFNjcmlwdFRva2VuLlJCUkFDRSA9IG5ldyBQb3N0U2NyaXB0VG9rZW4oUG9zdFNjcmlwdFRva2VuVHlwZXMuUkJSQUNFLAogICAgJ30nKTsKICBQb3N0U2NyaXB0VG9rZW4uSUYgPSBuZXcgUG9zdFNjcmlwdFRva2VuKFBvc3RTY3JpcHRUb2tlblR5cGVzLklGLCAnSUYnKTsKICBQb3N0U2NyaXB0VG9rZW4uSUZFTFNFID0gbmV3IFBvc3RTY3JpcHRUb2tlbihQb3N0U2NyaXB0VG9rZW5UeXBlcy5JRkVMU0UsCiAgICAnSUZFTFNFJyk7CiAgcmV0dXJuIFBvc3RTY3JpcHRUb2tlbjsKfSkoKTsKCnZhciBQb3N0U2NyaXB0TGV4ZXIgPSAoZnVuY3Rpb24gUG9zdFNjcmlwdExleGVyQ2xvc3VyZSgpIHsKICBmdW5jdGlvbiBQb3N0U2NyaXB0TGV4ZXIoc3RyZWFtKSB7CiAgICB0aGlzLnN0cmVhbSA9IHN0cmVhbTsKICAgIHRoaXMubmV4dENoYXIoKTsKCiAgICB0aGlzLnN0ckJ1ZiA9IFtdOwogIH0KICBQb3N0U2NyaXB0TGV4ZXIucHJvdG90eXBlID0gewogICAgbmV4dENoYXI6IGZ1bmN0aW9uIFBvc3RTY3JpcHRMZXhlcl9uZXh0Q2hhcigpIHsKICAgICAgcmV0dXJuICh0aGlzLmN1cnJlbnRDaGFyID0gdGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpKTsKICAgIH0sCiAgICBnZXRUb2tlbjogZnVuY3Rpb24gUG9zdFNjcmlwdExleGVyX2dldFRva2VuKCkgewogICAgICB2YXIgY29tbWVudCA9IGZhbHNlOwogICAgICB2YXIgY2ggPSB0aGlzLmN1cnJlbnRDaGFyOwoKICAgICAgLy8gc2tpcCBjb21tZW50cwogICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgIGlmIChjaCA8IDApIHsKICAgICAgICAgIHJldHVybiBFT0Y7CiAgICAgICAgfQoKICAgICAgICBpZiAoY29tbWVudCkgewogICAgICAgICAgaWYgKGNoID09PSAweDBBIHx8IGNoID09PSAweDBEKSB7CiAgICAgICAgICAgIGNvbW1lbnQgPSBmYWxzZTsKICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgaWYgKGNoID09PSAweDI1KSB7IC8vICclJwogICAgICAgICAgY29tbWVudCA9IHRydWU7CiAgICAgICAgfSBlbHNlIGlmICghTGV4ZXIuaXNTcGFjZShjaCkpIHsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBjaCA9IHRoaXMubmV4dENoYXIoKTsKICAgICAgfQogICAgICBzd2l0Y2ggKGNoIHwgMCkgewogICAgICAgIGNhc2UgMHgzMDogY2FzZSAweDMxOiBjYXNlIDB4MzI6IGNhc2UgMHgzMzogY2FzZSAweDM0OiAvLyAnMCctJzQnCiAgICAgICAgY2FzZSAweDM1OiBjYXNlIDB4MzY6IGNhc2UgMHgzNzogY2FzZSAweDM4OiBjYXNlIDB4Mzk6IC8vICc1Jy0nOScKICAgICAgICBjYXNlIDB4MkI6IGNhc2UgMHgyRDogY2FzZSAweDJFOiAvLyAnKycsICctJywgJy4nCiAgICAgICAgICByZXR1cm4gbmV3IFBvc3RTY3JpcHRUb2tlbihQb3N0U2NyaXB0VG9rZW5UeXBlcy5OVU1CRVIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldE51bWJlcigpKTsKICAgICAgICBjYXNlIDB4N0I6IC8vICd7JwogICAgICAgICAgdGhpcy5uZXh0Q2hhcigpOwogICAgICAgICAgcmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5MQlJBQ0U7CiAgICAgICAgY2FzZSAweDdEOiAvLyAnfScKICAgICAgICAgIHRoaXMubmV4dENoYXIoKTsKICAgICAgICAgIHJldHVybiBQb3N0U2NyaXB0VG9rZW4uUkJSQUNFOwogICAgICB9CiAgICAgIC8vIG9wZXJhdG9yCiAgICAgIHZhciBzdHJCdWYgPSB0aGlzLnN0ckJ1ZjsKICAgICAgc3RyQnVmLmxlbmd0aCA9IDA7CiAgICAgIHN0ckJ1ZlswXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoY2gpOwoKICAgICAgd2hpbGUgKChjaCA9IHRoaXMubmV4dENoYXIoKSkgPj0gMCAmJiAvLyBhbmQgJ0EnLSdaJywgJ2EnLSd6JwogICAgICAgICAgICAgKChjaCA+PSAweDQxICYmIGNoIDw9IDB4NUEpIHx8IChjaCA+PSAweDYxICYmIGNoIDw9IDB4N0EpKSkgewogICAgICAgIHN0ckJ1Zi5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoY2gpKTsKICAgICAgfQogICAgICB2YXIgc3RyID0gc3RyQnVmLmpvaW4oJycpOwogICAgICBzd2l0Y2ggKHN0ci50b0xvd2VyQ2FzZSgpKSB7CiAgICAgICAgY2FzZSAnaWYnOgogICAgICAgICAgcmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5JRjsKICAgICAgICBjYXNlICdpZmVsc2UnOgogICAgICAgICAgcmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5JRkVMU0U7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgIHJldHVybiBQb3N0U2NyaXB0VG9rZW4uZ2V0T3BlcmF0b3Ioc3RyKTsKICAgICAgfQogICAgfSwKICAgIGdldE51bWJlcjogZnVuY3Rpb24gUG9zdFNjcmlwdExleGVyX2dldE51bWJlcigpIHsKICAgICAgdmFyIGNoID0gdGhpcy5jdXJyZW50Q2hhcjsKICAgICAgdmFyIHN0ckJ1ZiA9IHRoaXMuc3RyQnVmOwogICAgICBzdHJCdWYubGVuZ3RoID0gMDsKICAgICAgc3RyQnVmWzBdID0gU3RyaW5nLmZyb21DaGFyQ29kZShjaCk7CgogICAgICB3aGlsZSAoKGNoID0gdGhpcy5uZXh0Q2hhcigpKSA+PSAwKSB7CiAgICAgICAgaWYgKChjaCA+PSAweDMwICYmIGNoIDw9IDB4MzkpIHx8IC8vICcwJy0nOScKICAgICAgICAgICAgY2ggPT09IDB4MkQgfHwgY2ggPT09IDB4MkUpIHsgLy8gJy0nLCAnLicKICAgICAgICAgIHN0ckJ1Zi5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoY2gpKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICB9CiAgICAgIHZhciB2YWx1ZSA9IHBhcnNlRmxvYXQoc3RyQnVmLmpvaW4oJycpKTsKICAgICAgaWYgKGlzTmFOKHZhbHVlKSkgewogICAgICAgIGVycm9yKCdJbnZhbGlkIGZsb2F0aW5nIHBvaW50IG51bWJlcjogJyArIHZhbHVlKTsKICAgICAgfQogICAgICByZXR1cm4gdmFsdWU7CiAgICB9CiAgfTsKICByZXR1cm4gUG9zdFNjcmlwdExleGVyOwp9KSgpOwoKCnZhciBTdHJlYW0gPSAoZnVuY3Rpb24gU3RyZWFtQ2xvc3VyZSgpIHsKICBmdW5jdGlvbiBTdHJlYW0oYXJyYXlCdWZmZXIsIHN0YXJ0LCBsZW5ndGgsIGRpY3QpIHsKICAgIHRoaXMuYnl0ZXMgPSAoYXJyYXlCdWZmZXIgaW5zdGFuY2VvZiBVaW50OEFycmF5ID8KICAgICAgICAgICAgICAgICAgYXJyYXlCdWZmZXIgOiBuZXcgVWludDhBcnJheShhcnJheUJ1ZmZlcikpOwogICAgdGhpcy5zdGFydCA9IHN0YXJ0IHx8IDA7CiAgICB0aGlzLnBvcyA9IHRoaXMuc3RhcnQ7CiAgICB0aGlzLmVuZCA9IChzdGFydCArIGxlbmd0aCkgfHwgdGhpcy5ieXRlcy5sZW5ndGg7CiAgICB0aGlzLmRpY3QgPSBkaWN0OwogIH0KCiAgLy8gcmVxdWlyZWQgbWV0aG9kcyBmb3IgYSBzdHJlYW0uIGlmIGEgcGFydGljdWxhciBzdHJlYW0gZG9lcyBub3QKICAvLyBpbXBsZW1lbnQgdGhlc2UsIGFuIGVycm9yIHNob3VsZCBiZSB0aHJvd24KICBTdHJlYW0ucHJvdG90eXBlID0gewogICAgZ2V0IGxlbmd0aCgpIHsKICAgICAgcmV0dXJuIHRoaXMuZW5kIC0gdGhpcy5zdGFydDsKICAgIH0sCiAgICBnZXQgaXNFbXB0eSgpIHsKICAgICAgcmV0dXJuIHRoaXMubGVuZ3RoID09PSAwOwogICAgfSwKICAgIGdldEJ5dGU6IGZ1bmN0aW9uIFN0cmVhbV9nZXRCeXRlKCkgewogICAgICBpZiAodGhpcy5wb3MgPj0gdGhpcy5lbmQpIHsKICAgICAgICByZXR1cm4gLTE7CiAgICAgIH0KICAgICAgcmV0dXJuIHRoaXMuYnl0ZXNbdGhpcy5wb3MrK107CiAgICB9LAogICAgZ2V0VWludDE2OiBmdW5jdGlvbiBTdHJlYW1fZ2V0VWludDE2KCkgewogICAgICB2YXIgYjAgPSB0aGlzLmdldEJ5dGUoKTsKICAgICAgdmFyIGIxID0gdGhpcy5nZXRCeXRlKCk7CiAgICAgIGlmIChiMCA9PT0gLTEgfHwgYjEgPT09IC0xKSB7CiAgICAgICAgcmV0dXJuIC0xOwogICAgICB9CiAgICAgIHJldHVybiAoYjAgPDwgOCkgKyBiMTsKICAgIH0sCiAgICBnZXRJbnQzMjogZnVuY3Rpb24gU3RyZWFtX2dldEludDMyKCkgewogICAgICB2YXIgYjAgPSB0aGlzLmdldEJ5dGUoKTsKICAgICAgdmFyIGIxID0gdGhpcy5nZXRCeXRlKCk7CiAgICAgIHZhciBiMiA9IHRoaXMuZ2V0Qnl0ZSgpOwogICAgICB2YXIgYjMgPSB0aGlzLmdldEJ5dGUoKTsKICAgICAgcmV0dXJuIChiMCA8PCAyNCkgKyAoYjEgPDwgMTYpICsgKGIyIDw8IDgpICsgYjM7CiAgICB9LAogICAgLy8gcmV0dXJucyBzdWJhcnJheSBvZiBvcmlnaW5hbCBidWZmZXIKICAgIC8vIHNob3VsZCBvbmx5IGJlIHJlYWQKICAgIGdldEJ5dGVzOiBmdW5jdGlvbiBTdHJlYW1fZ2V0Qnl0ZXMobGVuZ3RoKSB7CiAgICAgIHZhciBieXRlcyA9IHRoaXMuYnl0ZXM7CiAgICAgIHZhciBwb3MgPSB0aGlzLnBvczsKICAgICAgdmFyIHN0ckVuZCA9IHRoaXMuZW5kOwoKICAgICAgaWYgKCFsZW5ndGgpIHsKICAgICAgICByZXR1cm4gYnl0ZXMuc3ViYXJyYXkocG9zLCBzdHJFbmQpOwogICAgICB9CiAgICAgIHZhciBlbmQgPSBwb3MgKyBsZW5ndGg7CiAgICAgIGlmIChlbmQgPiBzdHJFbmQpIHsKICAgICAgICBlbmQgPSBzdHJFbmQ7CiAgICAgIH0KICAgICAgdGhpcy5wb3MgPSBlbmQ7CiAgICAgIHJldHVybiBieXRlcy5zdWJhcnJheShwb3MsIGVuZCk7CiAgICB9LAogICAgcGVla0J5dGU6IGZ1bmN0aW9uIFN0cmVhbV9wZWVrQnl0ZSgpIHsKICAgICAgdmFyIHBlZWtlZEJ5dGUgPSB0aGlzLmdldEJ5dGUoKTsKICAgICAgdGhpcy5wb3MtLTsKICAgICAgcmV0dXJuIHBlZWtlZEJ5dGU7CiAgICB9LAogICAgcGVla0J5dGVzOiBmdW5jdGlvbiBTdHJlYW1fcGVla0J5dGVzKGxlbmd0aCkgewogICAgICB2YXIgYnl0ZXMgPSB0aGlzLmdldEJ5dGVzKGxlbmd0aCk7CiAgICAgIHRoaXMucG9zIC09IGJ5dGVzLmxlbmd0aDsKICAgICAgcmV0dXJuIGJ5dGVzOwogICAgfSwKICAgIHNraXA6IGZ1bmN0aW9uIFN0cmVhbV9za2lwKG4pIHsKICAgICAgaWYgKCFuKSB7CiAgICAgICAgbiA9IDE7CiAgICAgIH0KICAgICAgdGhpcy5wb3MgKz0gbjsKICAgIH0sCiAgICByZXNldDogZnVuY3Rpb24gU3RyZWFtX3Jlc2V0KCkgewogICAgICB0aGlzLnBvcyA9IHRoaXMuc3RhcnQ7CiAgICB9LAogICAgbW92ZVN0YXJ0OiBmdW5jdGlvbiBTdHJlYW1fbW92ZVN0YXJ0KCkgewogICAgICB0aGlzLnN0YXJ0ID0gdGhpcy5wb3M7CiAgICB9LAogICAgbWFrZVN1YlN0cmVhbTogZnVuY3Rpb24gU3RyZWFtX21ha2VTdWJTdHJlYW0oc3RhcnQsIGxlbmd0aCwgZGljdCkgewogICAgICByZXR1cm4gbmV3IFN0cmVhbSh0aGlzLmJ5dGVzLmJ1ZmZlciwgc3RhcnQsIGxlbmd0aCwgZGljdCk7CiAgICB9LAogICAgaXNTdHJlYW06IHRydWUKICB9OwoKICByZXR1cm4gU3RyZWFtOwp9KSgpOwoKdmFyIFN0cmluZ1N0cmVhbSA9IChmdW5jdGlvbiBTdHJpbmdTdHJlYW1DbG9zdXJlKCkgewogIGZ1bmN0aW9uIFN0cmluZ1N0cmVhbShzdHIpIHsKICAgIHZhciBsZW5ndGggPSBzdHIubGVuZ3RoOwogICAgdmFyIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkobGVuZ3RoKTsKICAgIGZvciAodmFyIG4gPSAwOyBuIDwgbGVuZ3RoOyArK24pIHsKICAgICAgYnl0ZXNbbl0gPSBzdHIuY2hhckNvZGVBdChuKTsKICAgIH0KICAgIFN0cmVhbS5jYWxsKHRoaXMsIGJ5dGVzKTsKICB9CgogIFN0cmluZ1N0cmVhbS5wcm90b3R5cGUgPSBTdHJlYW0ucHJvdG90eXBlOwoKICByZXR1cm4gU3RyaW5nU3RyZWFtOwp9KSgpOwoKLy8gc3VwZXIgY2xhc3MgZm9yIHRoZSBkZWNvZGluZyBzdHJlYW1zCnZhciBEZWNvZGVTdHJlYW0gPSAoZnVuY3Rpb24gRGVjb2RlU3RyZWFtQ2xvc3VyZSgpIHsKICAvLyBMb3RzIG9mIERlY29kZVN0cmVhbXMgYXJlIGNyZWF0ZWQgd2hvc2UgYnVmZmVycyBhcmUgbmV2ZXIgdXNlZC4gIEZvciB0aGVzZQogIC8vIHdlIHNoYXJlIGEgc2luZ2xlIGVtcHR5IGJ1ZmZlci4gVGhpcyBpcyAoYSkgc3BhY2UtZWZmaWNpZW50IGFuZCAoYikgYXZvaWRzCiAgLy8gaGF2aW5nIHNwZWNpYWwgY2FzZXMgdGhhdCB3b3VsZCBiZSByZXF1aXJlZCBpZiB3ZSB1c2VkIHxudWxsfCBmb3IgYW4gZW1wdHkKICAvLyBidWZmZXIuCiAgdmFyIGVtcHR5QnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkoMCk7CgogIGZ1bmN0aW9uIERlY29kZVN0cmVhbShtYXliZU1pbkJ1ZmZlckxlbmd0aCkgewogICAgdGhpcy5wb3MgPSAwOwogICAgdGhpcy5idWZmZXJMZW5ndGggPSAwOwogICAgdGhpcy5lb2YgPSBmYWxzZTsKICAgIHRoaXMuYnVmZmVyID0gZW1wdHlCdWZmZXI7CiAgICB0aGlzLm1pbkJ1ZmZlckxlbmd0aCA9IDUxMjsKICAgIGlmIChtYXliZU1pbkJ1ZmZlckxlbmd0aCkgewogICAgICAvLyBDb21wdXRlIHRoZSBmaXJzdCBwb3dlciBvZiB0d28gdGhhdCBpcyBhcyBiaWcgYXMgbWF5YmVNaW5CdWZmZXJMZW5ndGguCiAgICAgIHdoaWxlICh0aGlzLm1pbkJ1ZmZlckxlbmd0aCA8IG1heWJlTWluQnVmZmVyTGVuZ3RoKSB7CiAgICAgICAgdGhpcy5taW5CdWZmZXJMZW5ndGggKj0gMjsKICAgICAgfQogICAgfQogIH0KCiAgRGVjb2RlU3RyZWFtLnByb3RvdHlwZSA9IHsKICAgIGdldCBpc0VtcHR5KCkgewogICAgICB3aGlsZSAoIXRoaXMuZW9mICYmIHRoaXMuYnVmZmVyTGVuZ3RoID09PSAwKSB7CiAgICAgICAgdGhpcy5yZWFkQmxvY2soKTsKICAgICAgfQogICAgICByZXR1cm4gdGhpcy5idWZmZXJMZW5ndGggPT09IDA7CiAgICB9LAogICAgZW5zdXJlQnVmZmVyOiBmdW5jdGlvbiBEZWNvZGVTdHJlYW1fZW5zdXJlQnVmZmVyKHJlcXVlc3RlZCkgewogICAgICB2YXIgYnVmZmVyID0gdGhpcy5idWZmZXI7CiAgICAgIGlmIChyZXF1ZXN0ZWQgPD0gYnVmZmVyLmJ5dGVMZW5ndGgpIHsKICAgICAgICByZXR1cm4gYnVmZmVyOwogICAgICB9CiAgICAgIHZhciBzaXplID0gdGhpcy5taW5CdWZmZXJMZW5ndGg7CiAgICAgIHdoaWxlIChzaXplIDwgcmVxdWVzdGVkKSB7CiAgICAgICAgc2l6ZSAqPSAyOwogICAgICB9CiAgICAgIHZhciBidWZmZXIyID0gbmV3IFVpbnQ4QXJyYXkoc2l6ZSk7CiAgICAgIGJ1ZmZlcjIuc2V0KGJ1ZmZlcik7CiAgICAgIHJldHVybiAodGhpcy5idWZmZXIgPSBidWZmZXIyKTsKICAgIH0sCiAgICBnZXRCeXRlOiBmdW5jdGlvbiBEZWNvZGVTdHJlYW1fZ2V0Qnl0ZSgpIHsKICAgICAgdmFyIHBvcyA9IHRoaXMucG9zOwogICAgICB3aGlsZSAodGhpcy5idWZmZXJMZW5ndGggPD0gcG9zKSB7CiAgICAgICAgaWYgKHRoaXMuZW9mKSB7CiAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgfQogICAgICAgIHRoaXMucmVhZEJsb2NrKCk7CiAgICAgIH0KICAgICAgcmV0dXJuIHRoaXMuYnVmZmVyW3RoaXMucG9zKytdOwogICAgfSwKICAgIGdldFVpbnQxNjogZnVuY3Rpb24gRGVjb2RlU3RyZWFtX2dldFVpbnQxNigpIHsKICAgICAgdmFyIGIwID0gdGhpcy5nZXRCeXRlKCk7CiAgICAgIHZhciBiMSA9IHRoaXMuZ2V0Qnl0ZSgpOwogICAgICBpZiAoYjAgPT09IC0xIHx8IGIxID09PSAtMSkgewogICAgICAgIHJldHVybiAtMTsKICAgICAgfQogICAgICByZXR1cm4gKGIwIDw8IDgpICsgYjE7CiAgICB9LAogICAgZ2V0SW50MzI6IGZ1bmN0aW9uIERlY29kZVN0cmVhbV9nZXRJbnQzMigpIHsKICAgICAgdmFyIGIwID0gdGhpcy5nZXRCeXRlKCk7CiAgICAgIHZhciBiMSA9IHRoaXMuZ2V0Qnl0ZSgpOwogICAgICB2YXIgYjIgPSB0aGlzLmdldEJ5dGUoKTsKICAgICAgdmFyIGIzID0gdGhpcy5nZXRCeXRlKCk7CiAgICAgIHJldHVybiAoYjAgPDwgMjQpICsgKGIxIDw8IDE2KSArIChiMiA8PCA4KSArIGIzOwogICAgfSwKICAgIGdldEJ5dGVzOiBmdW5jdGlvbiBEZWNvZGVTdHJlYW1fZ2V0Qnl0ZXMobGVuZ3RoKSB7CiAgICAgIHZhciBlbmQsIHBvcyA9IHRoaXMucG9zOwoKICAgICAgaWYgKGxlbmd0aCkgewogICAgICAgIHRoaXMuZW5zdXJlQnVmZmVyKHBvcyArIGxlbmd0aCk7CiAgICAgICAgZW5kID0gcG9zICsgbGVuZ3RoOwoKICAgICAgICB3aGlsZSAoIXRoaXMuZW9mICYmIHRoaXMuYnVmZmVyTGVuZ3RoIDwgZW5kKSB7CiAgICAgICAgICB0aGlzLnJlYWRCbG9jaygpOwogICAgICAgIH0KICAgICAgICB2YXIgYnVmRW5kID0gdGhpcy5idWZmZXJMZW5ndGg7CiAgICAgICAgaWYgKGVuZCA+IGJ1ZkVuZCkgewogICAgICAgICAgZW5kID0gYnVmRW5kOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICB3aGlsZSAoIXRoaXMuZW9mKSB7CiAgICAgICAgICB0aGlzLnJlYWRCbG9jaygpOwogICAgICAgIH0KICAgICAgICBlbmQgPSB0aGlzLmJ1ZmZlckxlbmd0aDsKICAgICAgfQoKICAgICAgdGhpcy5wb3MgPSBlbmQ7CiAgICAgIHJldHVybiB0aGlzLmJ1ZmZlci5zdWJhcnJheShwb3MsIGVuZCk7CiAgICB9LAogICAgcGVla0J5dGU6IGZ1bmN0aW9uIERlY29kZVN0cmVhbV9wZWVrQnl0ZSgpIHsKICAgICAgdmFyIHBlZWtlZEJ5dGUgPSB0aGlzLmdldEJ5dGUoKTsKICAgICAgdGhpcy5wb3MtLTsKICAgICAgcmV0dXJuIHBlZWtlZEJ5dGU7CiAgICB9LAogICAgcGVla0J5dGVzOiBmdW5jdGlvbiBEZWNvZGVTdHJlYW1fcGVla0J5dGVzKGxlbmd0aCkgewogICAgICB2YXIgYnl0ZXMgPSB0aGlzLmdldEJ5dGVzKGxlbmd0aCk7CiAgICAgIHRoaXMucG9zIC09IGJ5dGVzLmxlbmd0aDsKICAgICAgcmV0dXJuIGJ5dGVzOwogICAgfSwKICAgIG1ha2VTdWJTdHJlYW06IGZ1bmN0aW9uIERlY29kZVN0cmVhbV9tYWtlU3ViU3RyZWFtKHN0YXJ0LCBsZW5ndGgsIGRpY3QpIHsKICAgICAgdmFyIGVuZCA9IHN0YXJ0ICsgbGVuZ3RoOwogICAgICB3aGlsZSAodGhpcy5idWZmZXJMZW5ndGggPD0gZW5kICYmICF0aGlzLmVvZikgewogICAgICAgIHRoaXMucmVhZEJsb2NrKCk7CiAgICAgIH0KICAgICAgcmV0dXJuIG5ldyBTdHJlYW0odGhpcy5idWZmZXIsIHN0YXJ0LCBsZW5ndGgsIGRpY3QpOwogICAgfSwKICAgIHNraXA6IGZ1bmN0aW9uIERlY29kZVN0cmVhbV9za2lwKG4pIHsKICAgICAgaWYgKCFuKSB7CiAgICAgICAgbiA9IDE7CiAgICAgIH0KICAgICAgdGhpcy5wb3MgKz0gbjsKICAgIH0sCiAgICByZXNldDogZnVuY3Rpb24gRGVjb2RlU3RyZWFtX3Jlc2V0KCkgewogICAgICB0aGlzLnBvcyA9IDA7CiAgICB9LAogICAgZ2V0QmFzZVN0cmVhbXM6IGZ1bmN0aW9uIERlY29kZVN0cmVhbV9nZXRCYXNlU3RyZWFtcygpIHsKICAgICAgaWYgKHRoaXMuc3RyICYmIHRoaXMuc3RyLmdldEJhc2VTdHJlYW1zKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuc3RyLmdldEJhc2VTdHJlYW1zKCk7CiAgICAgIH0KICAgICAgcmV0dXJuIFtdOwogICAgfQogIH07CgogIHJldHVybiBEZWNvZGVTdHJlYW07Cn0pKCk7Cgp2YXIgU3RyZWFtc1NlcXVlbmNlU3RyZWFtID0gKGZ1bmN0aW9uIFN0cmVhbXNTZXF1ZW5jZVN0cmVhbUNsb3N1cmUoKSB7CiAgZnVuY3Rpb24gU3RyZWFtc1NlcXVlbmNlU3RyZWFtKHN0cmVhbXMpIHsKICAgIHRoaXMuc3RyZWFtcyA9IHN0cmVhbXM7CiAgICBEZWNvZGVTdHJlYW0uY2FsbCh0aGlzLCAvKiBtYXliZUxlbmd0aCA9ICovIG51bGwpOwogIH0KCiAgU3RyZWFtc1NlcXVlbmNlU3RyZWFtLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRGVjb2RlU3RyZWFtLnByb3RvdHlwZSk7CgogIFN0cmVhbXNTZXF1ZW5jZVN0cmVhbS5wcm90b3R5cGUucmVhZEJsb2NrID0KICAgICAgZnVuY3Rpb24gc3RyZWFtU2VxdWVuY2VTdHJlYW1SZWFkQmxvY2soKSB7CgogICAgdmFyIHN0cmVhbXMgPSB0aGlzLnN0cmVhbXM7CiAgICBpZiAoc3RyZWFtcy5sZW5ndGggPT09IDApIHsKICAgICAgdGhpcy5lb2YgPSB0cnVlOwogICAgICByZXR1cm47CiAgICB9CiAgICB2YXIgc3RyZWFtID0gc3RyZWFtcy5zaGlmdCgpOwogICAgdmFyIGNodW5rID0gc3RyZWFtLmdldEJ5dGVzKCk7CiAgICB2YXIgYnVmZmVyTGVuZ3RoID0gdGhpcy5idWZmZXJMZW5ndGg7CiAgICB2YXIgbmV3TGVuZ3RoID0gYnVmZmVyTGVuZ3RoICsgY2h1bmsubGVuZ3RoOwogICAgdmFyIGJ1ZmZlciA9IHRoaXMuZW5zdXJlQnVmZmVyKG5ld0xlbmd0aCk7CiAgICBidWZmZXIuc2V0KGNodW5rLCBidWZmZXJMZW5ndGgpOwogICAgdGhpcy5idWZmZXJMZW5ndGggPSBuZXdMZW5ndGg7CiAgfTsKCiAgU3RyZWFtc1NlcXVlbmNlU3RyZWFtLnByb3RvdHlwZS5nZXRCYXNlU3RyZWFtcyA9CiAgICBmdW5jdGlvbiBTdHJlYW1zU2VxdWVuY2VTdHJlYW1fZ2V0QmFzZVN0cmVhbXMoKSB7CgogICAgdmFyIGJhc2VTdHJlYW1zID0gW107CiAgICBmb3IgKHZhciBpID0gMCwgaWkgPSB0aGlzLnN0cmVhbXMubGVuZ3RoOyBpIDwgaWk7IGkrKykgewogICAgICB2YXIgc3RyZWFtID0gdGhpcy5zdHJlYW1zW2ldOwogICAgICBpZiAoc3RyZWFtLmdldEJhc2VTdHJlYW1zKSB7CiAgICAgICAgVXRpbC5hcHBlbmRUb0FycmF5KGJhc2VTdHJlYW1zLCBzdHJlYW0uZ2V0QmFzZVN0cmVhbXMoKSk7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBiYXNlU3RyZWFtczsKICB9OwoKICByZXR1cm4gU3RyZWFtc1NlcXVlbmNlU3RyZWFtOwp9KSgpOwoKdmFyIEZsYXRlU3RyZWFtID0gKGZ1bmN0aW9uIEZsYXRlU3RyZWFtQ2xvc3VyZSgpIHsKICB2YXIgY29kZUxlbkNvZGVNYXAgPSBuZXcgSW50MzJBcnJheShbCiAgICAxNiwgMTcsIDE4LCAwLCA4LCA3LCA5LCA2LCAxMCwgNSwgMTEsIDQsIDEyLCAzLCAxMywgMiwgMTQsIDEsIDE1CiAgXSk7CgogIHZhciBsZW5ndGhEZWNvZGUgPSBuZXcgSW50MzJBcnJheShbCiAgICAweDAwMDAzLCAweDAwMDA0LCAweDAwMDA1LCAweDAwMDA2LCAweDAwMDA3LCAweDAwMDA4LCAweDAwMDA5LCAweDAwMDBhLAogICAgMHgxMDAwYiwgMHgxMDAwZCwgMHgxMDAwZiwgMHgxMDAxMSwgMHgyMDAxMywgMHgyMDAxNywgMHgyMDAxYiwgMHgyMDAxZiwKICAgIDB4MzAwMjMsIDB4MzAwMmIsIDB4MzAwMzMsIDB4MzAwM2IsIDB4NDAwNDMsIDB4NDAwNTMsIDB4NDAwNjMsIDB4NDAwNzMsCiAgICAweDUwMDgzLCAweDUwMGEzLCAweDUwMGMzLCAweDUwMGUzLCAweDAwMTAyLCAweDAwMTAyLCAweDAwMTAyCiAgXSk7CgogIHZhciBkaXN0RGVjb2RlID0gbmV3IEludDMyQXJyYXkoWwogICAgMHgwMDAwMSwgMHgwMDAwMiwgMHgwMDAwMywgMHgwMDAwNCwgMHgxMDAwNSwgMHgxMDAwNywgMHgyMDAwOSwgMHgyMDAwZCwKICAgIDB4MzAwMTEsIDB4MzAwMTksIDB4NDAwMjEsIDB4NDAwMzEsIDB4NTAwNDEsIDB4NTAwNjEsIDB4NjAwODEsIDB4NjAwYzEsCiAgICAweDcwMTAxLCAweDcwMTgxLCAweDgwMjAxLCAweDgwMzAxLCAweDkwNDAxLCAweDkwNjAxLCAweGEwODAxLCAweGEwYzAxLAogICAgMHhiMTAwMSwgMHhiMTgwMSwgMHhjMjAwMSwgMHhjMzAwMSwgMHhkNDAwMSwgMHhkNjAwMQogIF0pOwoKICB2YXIgZml4ZWRMaXRDb2RlVGFiID0gW25ldyBJbnQzMkFycmF5KFsKICAgIDB4NzAxMDAsIDB4ODAwNTAsIDB4ODAwMTAsIDB4ODAxMTgsIDB4NzAxMTAsIDB4ODAwNzAsIDB4ODAwMzAsIDB4OTAwYzAsCiAgICAweDcwMTA4LCAweDgwMDYwLCAweDgwMDIwLCAweDkwMGEwLCAweDgwMDAwLCAweDgwMDgwLCAweDgwMDQwLCAweDkwMGUwLAogICAgMHg3MDEwNCwgMHg4MDA1OCwgMHg4MDAxOCwgMHg5MDA5MCwgMHg3MDExNCwgMHg4MDA3OCwgMHg4MDAzOCwgMHg5MDBkMCwKICAgIDB4NzAxMGMsIDB4ODAwNjgsIDB4ODAwMjgsIDB4OTAwYjAsIDB4ODAwMDgsIDB4ODAwODgsIDB4ODAwNDgsIDB4OTAwZjAsCiAgICAweDcwMTAyLCAweDgwMDU0LCAweDgwMDE0LCAweDgwMTFjLCAweDcwMTEyLCAweDgwMDc0LCAweDgwMDM0LCAweDkwMGM4LAogICAgMHg3MDEwYSwgMHg4MDA2NCwgMHg4MDAyNCwgMHg5MDBhOCwgMHg4MDAwNCwgMHg4MDA4NCwgMHg4MDA0NCwgMHg5MDBlOCwKICAgIDB4NzAxMDYsIDB4ODAwNWMsIDB4ODAwMWMsIDB4OTAwOTgsIDB4NzAxMTYsIDB4ODAwN2MsIDB4ODAwM2MsIDB4OTAwZDgsCiAgICAweDcwMTBlLCAweDgwMDZjLCAweDgwMDJjLCAweDkwMGI4LCAweDgwMDBjLCAweDgwMDhjLCAweDgwMDRjLCAweDkwMGY4LAogICAgMHg3MDEwMSwgMHg4MDA1MiwgMHg4MDAxMiwgMHg4MDExYSwgMHg3MDExMSwgMHg4MDA3MiwgMHg4MDAzMiwgMHg5MDBjNCwKICAgIDB4NzAxMDksIDB4ODAwNjIsIDB4ODAwMjIsIDB4OTAwYTQsIDB4ODAwMDIsIDB4ODAwODIsIDB4ODAwNDIsIDB4OTAwZTQsCiAgICAweDcwMTA1LCAweDgwMDVhLCAweDgwMDFhLCAweDkwMDk0LCAweDcwMTE1LCAweDgwMDdhLCAweDgwMDNhLCAweDkwMGQ0LAogICAgMHg3MDEwZCwgMHg4MDA2YSwgMHg4MDAyYSwgMHg5MDBiNCwgMHg4MDAwYSwgMHg4MDA4YSwgMHg4MDA0YSwgMHg5MDBmNCwKICAgIDB4NzAxMDMsIDB4ODAwNTYsIDB4ODAwMTYsIDB4ODAxMWUsIDB4NzAxMTMsIDB4ODAwNzYsIDB4ODAwMzYsIDB4OTAwY2MsCiAgICAweDcwMTBiLCAweDgwMDY2LCAweDgwMDI2LCAweDkwMGFjLCAweDgwMDA2LCAweDgwMDg2LCAweDgwMDQ2LCAweDkwMGVjLAogICAgMHg3MDEwNywgMHg4MDA1ZSwgMHg4MDAxZSwgMHg5MDA5YywgMHg3MDExNywgMHg4MDA3ZSwgMHg4MDAzZSwgMHg5MDBkYywKICAgIDB4NzAxMGYsIDB4ODAwNmUsIDB4ODAwMmUsIDB4OTAwYmMsIDB4ODAwMGUsIDB4ODAwOGUsIDB4ODAwNGUsIDB4OTAwZmMsCiAgICAweDcwMTAwLCAweDgwMDUxLCAweDgwMDExLCAweDgwMTE5LCAweDcwMTEwLCAweDgwMDcxLCAweDgwMDMxLCAweDkwMGMyLAogICAgMHg3MDEwOCwgMHg4MDA2MSwgMHg4MDAyMSwgMHg5MDBhMiwgMHg4MDAwMSwgMHg4MDA4MSwgMHg4MDA0MSwgMHg5MDBlMiwKICAgIDB4NzAxMDQsIDB4ODAwNTksIDB4ODAwMTksIDB4OTAwOTIsIDB4NzAxMTQsIDB4ODAwNzksIDB4ODAwMzksIDB4OTAwZDIsCiAgICAweDcwMTBjLCAweDgwMDY5LCAweDgwMDI5LCAweDkwMGIyLCAweDgwMDA5LCAweDgwMDg5LCAweDgwMDQ5LCAweDkwMGYyLAogICAgMHg3MDEwMiwgMHg4MDA1NSwgMHg4MDAxNSwgMHg4MDExZCwgMHg3MDExMiwgMHg4MDA3NSwgMHg4MDAzNSwgMHg5MDBjYSwKICAgIDB4NzAxMGEsIDB4ODAwNjUsIDB4ODAwMjUsIDB4OTAwYWEsIDB4ODAwMDUsIDB4ODAwODUsIDB4ODAwNDUsIDB4OTAwZWEsCiAgICAweDcwMTA2LCAweDgwMDVkLCAweDgwMDFkLCAweDkwMDlhLCAweDcwMTE2LCAweDgwMDdkLCAweDgwMDNkLCAweDkwMGRhLAogICAgMHg3MDEwZSwgMHg4MDA2ZCwgMHg4MDAyZCwgMHg5MDBiYSwgMHg4MDAwZCwgMHg4MDA4ZCwgMHg4MDA0ZCwgMHg5MDBmYSwKICAgIDB4NzAxMDEsIDB4ODAwNTMsIDB4ODAwMTMsIDB4ODAxMWIsIDB4NzAxMTEsIDB4ODAwNzMsIDB4ODAwMzMsIDB4OTAwYzYsCiAgICAweDcwMTA5LCAweDgwMDYzLCAweDgwMDIzLCAweDkwMGE2LCAweDgwMDAzLCAweDgwMDgzLCAweDgwMDQzLCAweDkwMGU2LAogICAgMHg3MDEwNSwgMHg4MDA1YiwgMHg4MDAxYiwgMHg5MDA5NiwgMHg3MDExNSwgMHg4MDA3YiwgMHg4MDAzYiwgMHg5MDBkNiwKICAgIDB4NzAxMGQsIDB4ODAwNmIsIDB4ODAwMmIsIDB4OTAwYjYsIDB4ODAwMGIsIDB4ODAwOGIsIDB4ODAwNGIsIDB4OTAwZjYsCiAgICAweDcwMTAzLCAweDgwMDU3LCAweDgwMDE3LCAweDgwMTFmLCAweDcwMTEzLCAweDgwMDc3LCAweDgwMDM3LCAweDkwMGNlLAogICAgMHg3MDEwYiwgMHg4MDA2NywgMHg4MDAyNywgMHg5MDBhZSwgMHg4MDAwNywgMHg4MDA4NywgMHg4MDA0NywgMHg5MDBlZSwKICAgIDB4NzAxMDcsIDB4ODAwNWYsIDB4ODAwMWYsIDB4OTAwOWUsIDB4NzAxMTcsIDB4ODAwN2YsIDB4ODAwM2YsIDB4OTAwZGUsCiAgICAweDcwMTBmLCAweDgwMDZmLCAweDgwMDJmLCAweDkwMGJlLCAweDgwMDBmLCAweDgwMDhmLCAweDgwMDRmLCAweDkwMGZlLAogICAgMHg3MDEwMCwgMHg4MDA1MCwgMHg4MDAxMCwgMHg4MDExOCwgMHg3MDExMCwgMHg4MDA3MCwgMHg4MDAzMCwgMHg5MDBjMSwKICAgIDB4NzAxMDgsIDB4ODAwNjAsIDB4ODAwMjAsIDB4OTAwYTEsIDB4ODAwMDAsIDB4ODAwODAsIDB4ODAwNDAsIDB4OTAwZTEsCiAgICAweDcwMTA0LCAweDgwMDU4LCAweDgwMDE4LCAweDkwMDkxLCAweDcwMTE0LCAweDgwMDc4LCAweDgwMDM4LCAweDkwMGQxLAogICAgMHg3MDEwYywgMHg4MDA2OCwgMHg4MDAyOCwgMHg5MDBiMSwgMHg4MDAwOCwgMHg4MDA4OCwgMHg4MDA0OCwgMHg5MDBmMSwKICAgIDB4NzAxMDIsIDB4ODAwNTQsIDB4ODAwMTQsIDB4ODAxMWMsIDB4NzAxMTIsIDB4ODAwNzQsIDB4ODAwMzQsIDB4OTAwYzksCiAgICAweDcwMTBhLCAweDgwMDY0LCAweDgwMDI0LCAweDkwMGE5LCAweDgwMDA0LCAweDgwMDg0LCAweDgwMDQ0LCAweDkwMGU5LAogICAgMHg3MDEwNiwgMHg4MDA1YywgMHg4MDAxYywgMHg5MDA5OSwgMHg3MDExNiwgMHg4MDA3YywgMHg4MDAzYywgMHg5MDBkOSwKICAgIDB4NzAxMGUsIDB4ODAwNmMsIDB4ODAwMmMsIDB4OTAwYjksIDB4ODAwMGMsIDB4ODAwOGMsIDB4ODAwNGMsIDB4OTAwZjksCiAgICAweDcwMTAxLCAweDgwMDUyLCAweDgwMDEyLCAweDgwMTFhLCAweDcwMTExLCAweDgwMDcyLCAweDgwMDMyLCAweDkwMGM1LAogICAgMHg3MDEwOSwgMHg4MDA2MiwgMHg4MDAyMiwgMHg5MDBhNSwgMHg4MDAwMiwgMHg4MDA4MiwgMHg4MDA0MiwgMHg5MDBlNSwKICAgIDB4NzAxMDUsIDB4ODAwNWEsIDB4ODAwMWEsIDB4OTAwOTUsIDB4NzAxMTUsIDB4ODAwN2EsIDB4ODAwM2EsIDB4OTAwZDUsCiAgICAweDcwMTBkLCAweDgwMDZhLCAweDgwMDJhLCAweDkwMGI1LCAweDgwMDBhLCAweDgwMDhhLCAweDgwMDRhLCAweDkwMGY1LAogICAgMHg3MDEwMywgMHg4MDA1NiwgMHg4MDAxNiwgMHg4MDExZSwgMHg3MDExMywgMHg4MDA3NiwgMHg4MDAzNiwgMHg5MDBjZCwKICAgIDB4NzAxMGIsIDB4ODAwNjYsIDB4ODAwMjYsIDB4OTAwYWQsIDB4ODAwMDYsIDB4ODAwODYsIDB4ODAwNDYsIDB4OTAwZWQsCiAgICAweDcwMTA3LCAweDgwMDVlLCAweDgwMDFlLCAweDkwMDlkLCAweDcwMTE3LCAweDgwMDdlLCAweDgwMDNlLCAweDkwMGRkLAogICAgMHg3MDEwZiwgMHg4MDA2ZSwgMHg4MDAyZSwgMHg5MDBiZCwgMHg4MDAwZSwgMHg4MDA4ZSwgMHg4MDA0ZSwgMHg5MDBmZCwKICAgIDB4NzAxMDAsIDB4ODAwNTEsIDB4ODAwMTEsIDB4ODAxMTksIDB4NzAxMTAsIDB4ODAwNzEsIDB4ODAwMzEsIDB4OTAwYzMsCiAgICAweDcwMTA4LCAweDgwMDYxLCAweDgwMDIxLCAweDkwMGEzLCAweDgwMDAxLCAweDgwMDgxLCAweDgwMDQxLCAweDkwMGUzLAogICAgMHg3MDEwNCwgMHg4MDA1OSwgMHg4MDAxOSwgMHg5MDA5MywgMHg3MDExNCwgMHg4MDA3OSwgMHg4MDAzOSwgMHg5MDBkMywKICAgIDB4NzAxMGMsIDB4ODAwNjksIDB4ODAwMjksIDB4OTAwYjMsIDB4ODAwMDksIDB4ODAwODksIDB4ODAwNDksIDB4OTAwZjMsCiAgICAweDcwMTAyLCAweDgwMDU1LCAweDgwMDE1LCAweDgwMTFkLCAweDcwMTEyLCAweDgwMDc1LCAweDgwMDM1LCAweDkwMGNiLAogICAgMHg3MDEwYSwgMHg4MDA2NSwgMHg4MDAyNSwgMHg5MDBhYiwgMHg4MDAwNSwgMHg4MDA4NSwgMHg4MDA0NSwgMHg5MDBlYiwKICAgIDB4NzAxMDYsIDB4ODAwNWQsIDB4ODAwMWQsIDB4OTAwOWIsIDB4NzAxMTYsIDB4ODAwN2QsIDB4ODAwM2QsIDB4OTAwZGIsCiAgICAweDcwMTBlLCAweDgwMDZkLCAweDgwMDJkLCAweDkwMGJiLCAweDgwMDBkLCAweDgwMDhkLCAweDgwMDRkLCAweDkwMGZiLAogICAgMHg3MDEwMSwgMHg4MDA1MywgMHg4MDAxMywgMHg4MDExYiwgMHg3MDExMSwgMHg4MDA3MywgMHg4MDAzMywgMHg5MDBjNywKICAgIDB4NzAxMDksIDB4ODAwNjMsIDB4ODAwMjMsIDB4OTAwYTcsIDB4ODAwMDMsIDB4ODAwODMsIDB4ODAwNDMsIDB4OTAwZTcsCiAgICAweDcwMTA1LCAweDgwMDViLCAweDgwMDFiLCAweDkwMDk3LCAweDcwMTE1LCAweDgwMDdiLCAweDgwMDNiLCAweDkwMGQ3LAogICAgMHg3MDEwZCwgMHg4MDA2YiwgMHg4MDAyYiwgMHg5MDBiNywgMHg4MDAwYiwgMHg4MDA4YiwgMHg4MDA0YiwgMHg5MDBmNywKICAgIDB4NzAxMDMsIDB4ODAwNTcsIDB4ODAwMTcsIDB4ODAxMWYsIDB4NzAxMTMsIDB4ODAwNzcsIDB4ODAwMzcsIDB4OTAwY2YsCiAgICAweDcwMTBiLCAweDgwMDY3LCAweDgwMDI3LCAweDkwMGFmLCAweDgwMDA3LCAweDgwMDg3LCAweDgwMDQ3LCAweDkwMGVmLAogICAgMHg3MDEwNywgMHg4MDA1ZiwgMHg4MDAxZiwgMHg5MDA5ZiwgMHg3MDExNywgMHg4MDA3ZiwgMHg4MDAzZiwgMHg5MDBkZiwKICAgIDB4NzAxMGYsIDB4ODAwNmYsIDB4ODAwMmYsIDB4OTAwYmYsIDB4ODAwMGYsIDB4ODAwOGYsIDB4ODAwNGYsIDB4OTAwZmYKICBdKSwgOV07CgogIHZhciBmaXhlZERpc3RDb2RlVGFiID0gW25ldyBJbnQzMkFycmF5KFsKICAgIDB4NTAwMDAsIDB4NTAwMTAsIDB4NTAwMDgsIDB4NTAwMTgsIDB4NTAwMDQsIDB4NTAwMTQsIDB4NTAwMGMsIDB4NTAwMWMsCiAgICAweDUwMDAyLCAweDUwMDEyLCAweDUwMDBhLCAweDUwMDFhLCAweDUwMDA2LCAweDUwMDE2LCAweDUwMDBlLCAweDAwMDAwLAogICAgMHg1MDAwMSwgMHg1MDAxMSwgMHg1MDAwOSwgMHg1MDAxOSwgMHg1MDAwNSwgMHg1MDAxNSwgMHg1MDAwZCwgMHg1MDAxZCwKICAgIDB4NTAwMDMsIDB4NTAwMTMsIDB4NTAwMGIsIDB4NTAwMWIsIDB4NTAwMDcsIDB4NTAwMTcsIDB4NTAwMGYsIDB4MDAwMDAKICBdKSwgNV07CgogIGZ1bmN0aW9uIEZsYXRlU3RyZWFtKHN0ciwgbWF5YmVMZW5ndGgpIHsKICAgIHRoaXMuc3RyID0gc3RyOwogICAgdGhpcy5kaWN0ID0gc3RyLmRpY3Q7CgogICAgdmFyIGNtZiA9IHN0ci5nZXRCeXRlKCk7CiAgICB2YXIgZmxnID0gc3RyLmdldEJ5dGUoKTsKICAgIGlmIChjbWYgPT09IC0xIHx8IGZsZyA9PT0gLTEpIHsKICAgICAgZXJyb3IoJ0ludmFsaWQgaGVhZGVyIGluIGZsYXRlIHN0cmVhbTogJyArIGNtZiArICcsICcgKyBmbGcpOwogICAgfQogICAgaWYgKChjbWYgJiAweDBmKSAhPT0gMHgwOCkgewogICAgICBlcnJvcignVW5rbm93biBjb21wcmVzc2lvbiBtZXRob2QgaW4gZmxhdGUgc3RyZWFtOiAnICsgY21mICsgJywgJyArIGZsZyk7CiAgICB9CiAgICBpZiAoKCgoY21mIDw8IDgpICsgZmxnKSAlIDMxKSAhPT0gMCkgewogICAgICBlcnJvcignQmFkIEZDSEVDSyBpbiBmbGF0ZSBzdHJlYW06ICcgKyBjbWYgKyAnLCAnICsgZmxnKTsKICAgIH0KICAgIGlmIChmbGcgJiAweDIwKSB7CiAgICAgIGVycm9yKCdGRElDVCBiaXQgc2V0IGluIGZsYXRlIHN0cmVhbTogJyArIGNtZiArICcsICcgKyBmbGcpOwogICAgfQoKICAgIHRoaXMuY29kZVNpemUgPSAwOwogICAgdGhpcy5jb2RlQnVmID0gMDsKCiAgICBEZWNvZGVTdHJlYW0uY2FsbCh0aGlzLCBtYXliZUxlbmd0aCk7CiAgfQoKICBGbGF0ZVN0cmVhbS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKERlY29kZVN0cmVhbS5wcm90b3R5cGUpOwoKICBGbGF0ZVN0cmVhbS5wcm90b3R5cGUuZ2V0Qml0cyA9IGZ1bmN0aW9uIEZsYXRlU3RyZWFtX2dldEJpdHMoYml0cykgewogICAgdmFyIHN0ciA9IHRoaXMuc3RyOwogICAgdmFyIGNvZGVTaXplID0gdGhpcy5jb2RlU2l6ZTsKICAgIHZhciBjb2RlQnVmID0gdGhpcy5jb2RlQnVmOwoKICAgIHZhciBiOwogICAgd2hpbGUgKGNvZGVTaXplIDwgYml0cykgewogICAgICBpZiAoKGIgPSBzdHIuZ2V0Qnl0ZSgpKSA9PT0gLTEpIHsKICAgICAgICBlcnJvcignQmFkIGVuY29kaW5nIGluIGZsYXRlIHN0cmVhbScpOwogICAgICB9CiAgICAgIGNvZGVCdWYgfD0gYiA8PCBjb2RlU2l6ZTsKICAgICAgY29kZVNpemUgKz0gODsKICAgIH0KICAgIGIgPSBjb2RlQnVmICYgKCgxIDw8IGJpdHMpIC0gMSk7CiAgICB0aGlzLmNvZGVCdWYgPSBjb2RlQnVmID4+IGJpdHM7CiAgICB0aGlzLmNvZGVTaXplID0gY29kZVNpemUgLT0gYml0czsKCiAgICByZXR1cm4gYjsKICB9OwoKICBGbGF0ZVN0cmVhbS5wcm90b3R5cGUuZ2V0Q29kZSA9IGZ1bmN0aW9uIEZsYXRlU3RyZWFtX2dldENvZGUodGFibGUpIHsKICAgIHZhciBzdHIgPSB0aGlzLnN0cjsKICAgIHZhciBjb2RlcyA9IHRhYmxlWzBdOwogICAgdmFyIG1heExlbiA9IHRhYmxlWzFdOwogICAgdmFyIGNvZGVTaXplID0gdGhpcy5jb2RlU2l6ZTsKICAgIHZhciBjb2RlQnVmID0gdGhpcy5jb2RlQnVmOwoKICAgIHZhciBiOwogICAgd2hpbGUgKGNvZGVTaXplIDwgbWF4TGVuKSB7CiAgICAgIGlmICgoYiA9IHN0ci5nZXRCeXRlKCkpID09PSAtMSkgewogICAgICAgIC8vIHByZW1hdHVyZSBlbmQgb2Ygc3RyZWFtLiBjb2RlIG1pZ2h0IGhvd2V2ZXIgc3RpbGwgYmUgdmFsaWQuCiAgICAgICAgLy8gY29kZVNpemUgPCBjb2RlTGVuIGNoZWNrIGJlbG93IGd1YXJkcyBhZ2FpbnN0IGluY29tcGxldGUgY29kZVZhbC4KICAgICAgICBicmVhazsKICAgICAgfQogICAgICBjb2RlQnVmIHw9IChiIDw8IGNvZGVTaXplKTsKICAgICAgY29kZVNpemUgKz0gODsKICAgIH0KICAgIHZhciBjb2RlID0gY29kZXNbY29kZUJ1ZiAmICgoMSA8PCBtYXhMZW4pIC0gMSldOwogICAgdmFyIGNvZGVMZW4gPSBjb2RlID4+IDE2OwogICAgdmFyIGNvZGVWYWwgPSBjb2RlICYgMHhmZmZmOwogICAgaWYgKGNvZGVMZW4gPCAxIHx8IGNvZGVTaXplIDwgY29kZUxlbikgewogICAgICBlcnJvcignQmFkIGVuY29kaW5nIGluIGZsYXRlIHN0cmVhbScpOwogICAgfQogICAgdGhpcy5jb2RlQnVmID0gKGNvZGVCdWYgPj4gY29kZUxlbik7CiAgICB0aGlzLmNvZGVTaXplID0gKGNvZGVTaXplIC0gY29kZUxlbik7CiAgICByZXR1cm4gY29kZVZhbDsKICB9OwoKICBGbGF0ZVN0cmVhbS5wcm90b3R5cGUuZ2VuZXJhdGVIdWZmbWFuVGFibGUgPQogICAgICBmdW5jdGlvbiBmbGF0ZVN0cmVhbUdlbmVyYXRlSHVmZm1hblRhYmxlKGxlbmd0aHMpIHsKICAgIHZhciBuID0gbGVuZ3Rocy5sZW5ndGg7CgogICAgLy8gZmluZCBtYXggY29kZSBsZW5ndGgKICAgIHZhciBtYXhMZW4gPSAwOwogICAgdmFyIGk7CiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7CiAgICAgIGlmIChsZW5ndGhzW2ldID4gbWF4TGVuKSB7CiAgICAgICAgbWF4TGVuID0gbGVuZ3Roc1tpXTsKICAgICAgfQogICAgfQoKICAgIC8vIGJ1aWxkIHRoZSB0YWJsZQogICAgdmFyIHNpemUgPSAxIDw8IG1heExlbjsKICAgIHZhciBjb2RlcyA9IG5ldyBJbnQzMkFycmF5KHNpemUpOwogICAgZm9yICh2YXIgbGVuID0gMSwgY29kZSA9IDAsIHNraXAgPSAyOwogICAgICAgICBsZW4gPD0gbWF4TGVuOwogICAgICAgICArK2xlbiwgY29kZSA8PD0gMSwgc2tpcCA8PD0gMSkgewogICAgICBmb3IgKHZhciB2YWwgPSAwOyB2YWwgPCBuOyArK3ZhbCkgewogICAgICAgIGlmIChsZW5ndGhzW3ZhbF0gPT09IGxlbikgewogICAgICAgICAgLy8gYml0LXJldmVyc2UgdGhlIGNvZGUKICAgICAgICAgIHZhciBjb2RlMiA9IDA7CiAgICAgICAgICB2YXIgdCA9IGNvZGU7CiAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyArK2kpIHsKICAgICAgICAgICAgY29kZTIgPSAoY29kZTIgPDwgMSkgfCAodCAmIDEpOwogICAgICAgICAgICB0ID4+PSAxOwogICAgICAgICAgfQoKICAgICAgICAgIC8vIGZpbGwgdGhlIHRhYmxlIGVudHJpZXMKICAgICAgICAgIGZvciAoaSA9IGNvZGUyOyBpIDwgc2l6ZTsgaSArPSBza2lwKSB7CiAgICAgICAgICAgIGNvZGVzW2ldID0gKGxlbiA8PCAxNikgfCB2YWw7CiAgICAgICAgICB9CiAgICAgICAgICArK2NvZGU7CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgcmV0dXJuIFtjb2RlcywgbWF4TGVuXTsKICB9OwoKICBGbGF0ZVN0cmVhbS5wcm90b3R5cGUucmVhZEJsb2NrID0gZnVuY3Rpb24gRmxhdGVTdHJlYW1fcmVhZEJsb2NrKCkgewogICAgdmFyIGJ1ZmZlciwgbGVuOwogICAgdmFyIHN0ciA9IHRoaXMuc3RyOwogICAgLy8gcmVhZCBibG9jayBoZWFkZXIKICAgIHZhciBoZHIgPSB0aGlzLmdldEJpdHMoMyk7CiAgICBpZiAoaGRyICYgMSkgewogICAgICB0aGlzLmVvZiA9IHRydWU7CiAgICB9CiAgICBoZHIgPj49IDE7CgogICAgaWYgKGhkciA9PT0gMCkgeyAvLyB1bmNvbXByZXNzZWQgYmxvY2sKICAgICAgdmFyIGI7CgogICAgICBpZiAoKGIgPSBzdHIuZ2V0Qnl0ZSgpKSA9PT0gLTEpIHsKICAgICAgICBlcnJvcignQmFkIGJsb2NrIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW0nKTsKICAgICAgfQogICAgICB2YXIgYmxvY2tMZW4gPSBiOwogICAgICBpZiAoKGIgPSBzdHIuZ2V0Qnl0ZSgpKSA9PT0gLTEpIHsKICAgICAgICBlcnJvcignQmFkIGJsb2NrIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW0nKTsKICAgICAgfQogICAgICBibG9ja0xlbiB8PSAoYiA8PCA4KTsKICAgICAgaWYgKChiID0gc3RyLmdldEJ5dGUoKSkgPT09IC0xKSB7CiAgICAgICAgZXJyb3IoJ0JhZCBibG9jayBoZWFkZXIgaW4gZmxhdGUgc3RyZWFtJyk7CiAgICAgIH0KICAgICAgdmFyIGNoZWNrID0gYjsKICAgICAgaWYgKChiID0gc3RyLmdldEJ5dGUoKSkgPT09IC0xKSB7CiAgICAgICAgZXJyb3IoJ0JhZCBibG9jayBoZWFkZXIgaW4gZmxhdGUgc3RyZWFtJyk7CiAgICAgIH0KICAgICAgY2hlY2sgfD0gKGIgPDwgOCk7CiAgICAgIGlmIChjaGVjayAhPT0gKH5ibG9ja0xlbiAmIDB4ZmZmZikgJiYKICAgICAgICAgIChibG9ja0xlbiAhPT0gMCB8fCBjaGVjayAhPT0gMCkpIHsKICAgICAgICAvLyBJZ25vcmluZyBlcnJvciBmb3IgYmFkICJlbXB0eSIgYmxvY2sgKHNlZSBpc3N1ZSAxMjc3KQogICAgICAgIGVycm9yKCdCYWQgdW5jb21wcmVzc2VkIGJsb2NrIGxlbmd0aCBpbiBmbGF0ZSBzdHJlYW0nKTsKICAgICAgfQoKICAgICAgdGhpcy5jb2RlQnVmID0gMDsKICAgICAgdGhpcy5jb2RlU2l6ZSA9IDA7CgogICAgICB2YXIgYnVmZmVyTGVuZ3RoID0gdGhpcy5idWZmZXJMZW5ndGg7CiAgICAgIGJ1ZmZlciA9IHRoaXMuZW5zdXJlQnVmZmVyKGJ1ZmZlckxlbmd0aCArIGJsb2NrTGVuKTsKICAgICAgdmFyIGVuZCA9IGJ1ZmZlckxlbmd0aCArIGJsb2NrTGVuOwogICAgICB0aGlzLmJ1ZmZlckxlbmd0aCA9IGVuZDsKICAgICAgaWYgKGJsb2NrTGVuID09PSAwKSB7CiAgICAgICAgaWYgKHN0ci5wZWVrQnl0ZSgpID09PSAtMSkgewogICAgICAgICAgdGhpcy5lb2YgPSB0cnVlOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICBmb3IgKHZhciBuID0gYnVmZmVyTGVuZ3RoOyBuIDwgZW5kOyArK24pIHsKICAgICAgICAgIGlmICgoYiA9IHN0ci5nZXRCeXRlKCkpID09PSAtMSkgewogICAgICAgICAgICB0aGlzLmVvZiA9IHRydWU7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQogICAgICAgICAgYnVmZmVyW25dID0gYjsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuOwogICAgfQoKICAgIHZhciBsaXRDb2RlVGFibGU7CiAgICB2YXIgZGlzdENvZGVUYWJsZTsKICAgIGlmIChoZHIgPT09IDEpIHsgLy8gY29tcHJlc3NlZCBibG9jaywgZml4ZWQgY29kZXMKICAgICAgbGl0Q29kZVRhYmxlID0gZml4ZWRMaXRDb2RlVGFiOwogICAgICBkaXN0Q29kZVRhYmxlID0gZml4ZWREaXN0Q29kZVRhYjsKICAgIH0gZWxzZSBpZiAoaGRyID09PSAyKSB7IC8vIGNvbXByZXNzZWQgYmxvY2ssIGR5bmFtaWMgY29kZXMKICAgICAgdmFyIG51bUxpdENvZGVzID0gdGhpcy5nZXRCaXRzKDUpICsgMjU3OwogICAgICB2YXIgbnVtRGlzdENvZGVzID0gdGhpcy5nZXRCaXRzKDUpICsgMTsKICAgICAgdmFyIG51bUNvZGVMZW5Db2RlcyA9IHRoaXMuZ2V0Qml0cyg0KSArIDQ7CgogICAgICAvLyBidWlsZCB0aGUgY29kZSBsZW5ndGhzIGNvZGUgdGFibGUKICAgICAgdmFyIGNvZGVMZW5Db2RlTGVuZ3RocyA9IG5ldyBVaW50OEFycmF5KGNvZGVMZW5Db2RlTWFwLmxlbmd0aCk7CgogICAgICB2YXIgaTsKICAgICAgZm9yIChpID0gMDsgaSA8IG51bUNvZGVMZW5Db2RlczsgKytpKSB7CiAgICAgICAgY29kZUxlbkNvZGVMZW5ndGhzW2NvZGVMZW5Db2RlTWFwW2ldXSA9IHRoaXMuZ2V0Qml0cygzKTsKICAgICAgfQogICAgICB2YXIgY29kZUxlbkNvZGVUYWIgPSB0aGlzLmdlbmVyYXRlSHVmZm1hblRhYmxlKGNvZGVMZW5Db2RlTGVuZ3Rocyk7CgogICAgICAvLyBidWlsZCB0aGUgbGl0ZXJhbCBhbmQgZGlzdGFuY2UgY29kZSB0YWJsZXMKICAgICAgbGVuID0gMDsKICAgICAgaSA9IDA7CiAgICAgIHZhciBjb2RlcyA9IG51bUxpdENvZGVzICsgbnVtRGlzdENvZGVzOwogICAgICB2YXIgY29kZUxlbmd0aHMgPSBuZXcgVWludDhBcnJheShjb2Rlcyk7CiAgICAgIHZhciBiaXRzTGVuZ3RoLCBiaXRzT2Zmc2V0LCB3aGF0OwogICAgICB3aGlsZSAoaSA8IGNvZGVzKSB7CiAgICAgICAgdmFyIGNvZGUgPSB0aGlzLmdldENvZGUoY29kZUxlbkNvZGVUYWIpOwogICAgICAgIGlmIChjb2RlID09PSAxNikgewogICAgICAgICAgYml0c0xlbmd0aCA9IDI7IGJpdHNPZmZzZXQgPSAzOyB3aGF0ID0gbGVuOwogICAgICAgIH0gZWxzZSBpZiAoY29kZSA9PT0gMTcpIHsKICAgICAgICAgIGJpdHNMZW5ndGggPSAzOyBiaXRzT2Zmc2V0ID0gMzsgd2hhdCA9IChsZW4gPSAwKTsKICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT09IDE4KSB7CiAgICAgICAgICBiaXRzTGVuZ3RoID0gNzsgYml0c09mZnNldCA9IDExOyB3aGF0ID0gKGxlbiA9IDApOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBjb2RlTGVuZ3Roc1tpKytdID0gbGVuID0gY29kZTsKICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KCiAgICAgICAgdmFyIHJlcGVhdExlbmd0aCA9IHRoaXMuZ2V0Qml0cyhiaXRzTGVuZ3RoKSArIGJpdHNPZmZzZXQ7CiAgICAgICAgd2hpbGUgKHJlcGVhdExlbmd0aC0tID4gMCkgewogICAgICAgICAgY29kZUxlbmd0aHNbaSsrXSA9IHdoYXQ7CiAgICAgICAgfQogICAgICB9CgogICAgICBsaXRDb2RlVGFibGUgPQogICAgICAgIHRoaXMuZ2VuZXJhdGVIdWZmbWFuVGFibGUoY29kZUxlbmd0aHMuc3ViYXJyYXkoMCwgbnVtTGl0Q29kZXMpKTsKICAgICAgZGlzdENvZGVUYWJsZSA9CiAgICAgICAgdGhpcy5nZW5lcmF0ZUh1ZmZtYW5UYWJsZShjb2RlTGVuZ3Rocy5zdWJhcnJheShudW1MaXRDb2RlcywgY29kZXMpKTsKICAgIH0gZWxzZSB7CiAgICAgIGVycm9yKCdVbmtub3duIGJsb2NrIHR5cGUgaW4gZmxhdGUgc3RyZWFtJyk7CiAgICB9CgogICAgYnVmZmVyID0gdGhpcy5idWZmZXI7CiAgICB2YXIgbGltaXQgPSBidWZmZXIgPyBidWZmZXIubGVuZ3RoIDogMDsKICAgIHZhciBwb3MgPSB0aGlzLmJ1ZmZlckxlbmd0aDsKICAgIHdoaWxlICh0cnVlKSB7CiAgICAgIHZhciBjb2RlMSA9IHRoaXMuZ2V0Q29kZShsaXRDb2RlVGFibGUpOwogICAgICBpZiAoY29kZTEgPCAyNTYpIHsKICAgICAgICBpZiAocG9zICsgMSA+PSBsaW1pdCkgewogICAgICAgICAgYnVmZmVyID0gdGhpcy5lbnN1cmVCdWZmZXIocG9zICsgMSk7CiAgICAgICAgICBsaW1pdCA9IGJ1ZmZlci5sZW5ndGg7CiAgICAgICAgfQogICAgICAgIGJ1ZmZlcltwb3MrK10gPSBjb2RlMTsKICAgICAgICBjb250aW51ZTsKICAgICAgfQogICAgICBpZiAoY29kZTEgPT09IDI1NikgewogICAgICAgIHRoaXMuYnVmZmVyTGVuZ3RoID0gcG9zOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBjb2RlMSAtPSAyNTc7CiAgICAgIGNvZGUxID0gbGVuZ3RoRGVjb2RlW2NvZGUxXTsKICAgICAgdmFyIGNvZGUyID0gY29kZTEgPj4gMTY7CiAgICAgIGlmIChjb2RlMiA+IDApIHsKICAgICAgICBjb2RlMiA9IHRoaXMuZ2V0Qml0cyhjb2RlMik7CiAgICAgIH0KICAgICAgbGVuID0gKGNvZGUxICYgMHhmZmZmKSArIGNvZGUyOwogICAgICBjb2RlMSA9IHRoaXMuZ2V0Q29kZShkaXN0Q29kZVRhYmxlKTsKICAgICAgY29kZTEgPSBkaXN0RGVjb2RlW2NvZGUxXTsKICAgICAgY29kZTIgPSBjb2RlMSA+PiAxNjsKICAgICAgaWYgKGNvZGUyID4gMCkgewogICAgICAgIGNvZGUyID0gdGhpcy5nZXRCaXRzKGNvZGUyKTsKICAgICAgfQogICAgICB2YXIgZGlzdCA9IChjb2RlMSAmIDB4ZmZmZikgKyBjb2RlMjsKICAgICAgaWYgKHBvcyArIGxlbiA+PSBsaW1pdCkgewogICAgICAgIGJ1ZmZlciA9IHRoaXMuZW5zdXJlQnVmZmVyKHBvcyArIGxlbik7CiAgICAgICAgbGltaXQgPSBidWZmZXIubGVuZ3RoOwogICAgICB9CiAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgbGVuOyArK2ssICsrcG9zKSB7CiAgICAgICAgYnVmZmVyW3Bvc10gPSBidWZmZXJbcG9zIC0gZGlzdF07CiAgICAgIH0KICAgIH0KICB9OwoKICByZXR1cm4gRmxhdGVTdHJlYW07Cn0pKCk7Cgp2YXIgUHJlZGljdG9yU3RyZWFtID0gKGZ1bmN0aW9uIFByZWRpY3RvclN0cmVhbUNsb3N1cmUoKSB7CiAgZnVuY3Rpb24gUHJlZGljdG9yU3RyZWFtKHN0ciwgbWF5YmVMZW5ndGgsIHBhcmFtcykgewogICAgdmFyIHByZWRpY3RvciA9IHRoaXMucHJlZGljdG9yID0gcGFyYW1zLmdldCgnUHJlZGljdG9yJykgfHwgMTsKCiAgICBpZiAocHJlZGljdG9yIDw9IDEpIHsKICAgICAgcmV0dXJuIHN0cjsgLy8gbm8gcHJlZGljdGlvbgogICAgfQogICAgaWYgKHByZWRpY3RvciAhPT0gMiAmJiAocHJlZGljdG9yIDwgMTAgfHwgcHJlZGljdG9yID4gMTUpKSB7CiAgICAgIGVycm9yKCdVbnN1cHBvcnRlZCBwcmVkaWN0b3I6ICcgKyBwcmVkaWN0b3IpOwogICAgfQoKICAgIGlmIChwcmVkaWN0b3IgPT09IDIpIHsKICAgICAgdGhpcy5yZWFkQmxvY2sgPSB0aGlzLnJlYWRCbG9ja1RpZmY7CiAgICB9IGVsc2UgewogICAgICB0aGlzLnJlYWRCbG9jayA9IHRoaXMucmVhZEJsb2NrUG5nOwogICAgfQoKICAgIHRoaXMuc3RyID0gc3RyOwogICAgdGhpcy5kaWN0ID0gc3RyLmRpY3Q7CgogICAgdmFyIGNvbG9ycyA9IHRoaXMuY29sb3JzID0gcGFyYW1zLmdldCgnQ29sb3JzJykgfHwgMTsKICAgIHZhciBiaXRzID0gdGhpcy5iaXRzID0gcGFyYW1zLmdldCgnQml0c1BlckNvbXBvbmVudCcpIHx8IDg7CiAgICB2YXIgY29sdW1ucyA9IHRoaXMuY29sdW1ucyA9IHBhcmFtcy5nZXQoJ0NvbHVtbnMnKSB8fCAxOwoKICAgIHRoaXMucGl4Qnl0ZXMgPSAoY29sb3JzICogYml0cyArIDcpID4+IDM7CiAgICB0aGlzLnJvd0J5dGVzID0gKGNvbHVtbnMgKiBjb2xvcnMgKiBiaXRzICsgNykgPj4gMzsKCiAgICBEZWNvZGVTdHJlYW0uY2FsbCh0aGlzLCBtYXliZUxlbmd0aCk7CiAgICByZXR1cm4gdGhpczsKICB9CgogIFByZWRpY3RvclN0cmVhbS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKERlY29kZVN0cmVhbS5wcm90b3R5cGUpOwoKICBQcmVkaWN0b3JTdHJlYW0ucHJvdG90eXBlLnJlYWRCbG9ja1RpZmYgPQogICAgICBmdW5jdGlvbiBwcmVkaWN0b3JTdHJlYW1SZWFkQmxvY2tUaWZmKCkgewogICAgdmFyIHJvd0J5dGVzID0gdGhpcy5yb3dCeXRlczsKCiAgICB2YXIgYnVmZmVyTGVuZ3RoID0gdGhpcy5idWZmZXJMZW5ndGg7CiAgICB2YXIgYnVmZmVyID0gdGhpcy5lbnN1cmVCdWZmZXIoYnVmZmVyTGVuZ3RoICsgcm93Qnl0ZXMpOwoKICAgIHZhciBiaXRzID0gdGhpcy5iaXRzOwogICAgdmFyIGNvbG9ycyA9IHRoaXMuY29sb3JzOwoKICAgIHZhciByYXdCeXRlcyA9IHRoaXMuc3RyLmdldEJ5dGVzKHJvd0J5dGVzKTsKICAgIHRoaXMuZW9mID0gIXJhd0J5dGVzLmxlbmd0aDsKICAgIGlmICh0aGlzLmVvZikgewogICAgICByZXR1cm47CiAgICB9CgogICAgdmFyIGluYnVmID0gMCwgb3V0YnVmID0gMDsKICAgIHZhciBpbmJpdHMgPSAwLCBvdXRiaXRzID0gMDsKICAgIHZhciBwb3MgPSBidWZmZXJMZW5ndGg7CiAgICB2YXIgaTsKCiAgICBpZiAoYml0cyA9PT0gMSkgewogICAgICBmb3IgKGkgPSAwOyBpIDwgcm93Qnl0ZXM7ICsraSkgewogICAgICAgIHZhciBjID0gcmF3Qnl0ZXNbaV07CiAgICAgICAgaW5idWYgPSAoaW5idWYgPDwgOCkgfCBjOwogICAgICAgIC8vIGJpdHdpc2UgYWRkaXRpb24gaXMgZXhjbHVzaXZlIG9yCiAgICAgICAgLy8gZmlyc3Qgc2hpZnQgaW5idWYgYW5kIHRoZW4gYWRkCiAgICAgICAgYnVmZmVyW3BvcysrXSA9IChjIF4gKGluYnVmID4+IGNvbG9ycykpICYgMHhGRjsKICAgICAgICAvLyB0cnVuY2F0ZSBpbmJ1ZiAoYXNzdW1lcyBjb2xvcnMgPCAxNikKICAgICAgICBpbmJ1ZiAmPSAweEZGRkY7CiAgICAgIH0KICAgIH0gZWxzZSBpZiAoYml0cyA9PT0gOCkgewogICAgICBmb3IgKGkgPSAwOyBpIDwgY29sb3JzOyArK2kpIHsKICAgICAgICBidWZmZXJbcG9zKytdID0gcmF3Qnl0ZXNbaV07CiAgICAgIH0KICAgICAgZm9yICg7IGkgPCByb3dCeXRlczsgKytpKSB7CiAgICAgICAgYnVmZmVyW3Bvc10gPSBidWZmZXJbcG9zIC0gY29sb3JzXSArIHJhd0J5dGVzW2ldOwogICAgICAgIHBvcysrOwogICAgICB9CiAgICB9IGVsc2UgewogICAgICB2YXIgY29tcEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoY29sb3JzICsgMSk7CiAgICAgIHZhciBiaXRNYXNrID0gKDEgPDwgYml0cykgLSAxOwogICAgICB2YXIgaiA9IDAsIGsgPSBidWZmZXJMZW5ndGg7CiAgICAgIHZhciBjb2x1bW5zID0gdGhpcy5jb2x1bW5zOwogICAgICBmb3IgKGkgPSAwOyBpIDwgY29sdW1uczsgKytpKSB7CiAgICAgICAgZm9yICh2YXIga2sgPSAwOyBrayA8IGNvbG9yczsgKytraykgewogICAgICAgICAgaWYgKGluYml0cyA8IGJpdHMpIHsKICAgICAgICAgICAgaW5idWYgPSAoaW5idWYgPDwgOCkgfCAocmF3Qnl0ZXNbaisrXSAmIDB4RkYpOwogICAgICAgICAgICBpbmJpdHMgKz0gODsKICAgICAgICAgIH0KICAgICAgICAgIGNvbXBBcnJheVtra10gPSAoY29tcEFycmF5W2trXSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbmJ1ZiA+PiAoaW5iaXRzIC0gYml0cykpKSAmIGJpdE1hc2s7CiAgICAgICAgICBpbmJpdHMgLT0gYml0czsKICAgICAgICAgIG91dGJ1ZiA9IChvdXRidWYgPDwgYml0cykgfCBjb21wQXJyYXlba2tdOwogICAgICAgICAgb3V0Yml0cyArPSBiaXRzOwogICAgICAgICAgaWYgKG91dGJpdHMgPj0gOCkgewogICAgICAgICAgICBidWZmZXJbaysrXSA9IChvdXRidWYgPj4gKG91dGJpdHMgLSA4KSkgJiAweEZGOwogICAgICAgICAgICBvdXRiaXRzIC09IDg7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmIChvdXRiaXRzID4gMCkgewogICAgICAgIGJ1ZmZlcltrKytdID0gKG91dGJ1ZiA8PCAoOCAtIG91dGJpdHMpKSArCiAgICAgICAgICAgICAgICAgICAgICAoaW5idWYgJiAoKDEgPDwgKDggLSBvdXRiaXRzKSkgLSAxKSk7CiAgICAgIH0KICAgIH0KICAgIHRoaXMuYnVmZmVyTGVuZ3RoICs9IHJvd0J5dGVzOwogIH07CgogIFByZWRpY3RvclN0cmVhbS5wcm90b3R5cGUucmVhZEJsb2NrUG5nID0KICAgICAgZnVuY3Rpb24gcHJlZGljdG9yU3RyZWFtUmVhZEJsb2NrUG5nKCkgewoKICAgIHZhciByb3dCeXRlcyA9IHRoaXMucm93Qnl0ZXM7CiAgICB2YXIgcGl4Qnl0ZXMgPSB0aGlzLnBpeEJ5dGVzOwoKICAgIHZhciBwcmVkaWN0b3IgPSB0aGlzLnN0ci5nZXRCeXRlKCk7CiAgICB2YXIgcmF3Qnl0ZXMgPSB0aGlzLnN0ci5nZXRCeXRlcyhyb3dCeXRlcyk7CiAgICB0aGlzLmVvZiA9ICFyYXdCeXRlcy5sZW5ndGg7CiAgICBpZiAodGhpcy5lb2YpIHsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIHZhciBidWZmZXJMZW5ndGggPSB0aGlzLmJ1ZmZlckxlbmd0aDsKICAgIHZhciBidWZmZXIgPSB0aGlzLmVuc3VyZUJ1ZmZlcihidWZmZXJMZW5ndGggKyByb3dCeXRlcyk7CgogICAgdmFyIHByZXZSb3cgPSBidWZmZXIuc3ViYXJyYXkoYnVmZmVyTGVuZ3RoIC0gcm93Qnl0ZXMsIGJ1ZmZlckxlbmd0aCk7CiAgICBpZiAocHJldlJvdy5sZW5ndGggPT09IDApIHsKICAgICAgcHJldlJvdyA9IG5ldyBVaW50OEFycmF5KHJvd0J5dGVzKTsKICAgIH0KCiAgICB2YXIgaSwgaiA9IGJ1ZmZlckxlbmd0aCwgdXAsIGM7CiAgICBzd2l0Y2ggKHByZWRpY3RvcikgewogICAgICBjYXNlIDA6CiAgICAgICAgZm9yIChpID0gMDsgaSA8IHJvd0J5dGVzOyArK2kpIHsKICAgICAgICAgIGJ1ZmZlcltqKytdID0gcmF3Qnl0ZXNbaV07CiAgICAgICAgfQogICAgICAgIGJyZWFrOwogICAgICBjYXNlIDE6CiAgICAgICAgZm9yIChpID0gMDsgaSA8IHBpeEJ5dGVzOyArK2kpIHsKICAgICAgICAgIGJ1ZmZlcltqKytdID0gcmF3Qnl0ZXNbaV07CiAgICAgICAgfQogICAgICAgIGZvciAoOyBpIDwgcm93Qnl0ZXM7ICsraSkgewogICAgICAgICAgYnVmZmVyW2pdID0gKGJ1ZmZlcltqIC0gcGl4Qnl0ZXNdICsgcmF3Qnl0ZXNbaV0pICYgMHhGRjsKICAgICAgICAgIGorKzsKICAgICAgICB9CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgMjoKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcm93Qnl0ZXM7ICsraSkgewogICAgICAgICAgYnVmZmVyW2orK10gPSAocHJldlJvd1tpXSArIHJhd0J5dGVzW2ldKSAmIDB4RkY7CiAgICAgICAgfQogICAgICAgIGJyZWFrOwogICAgICBjYXNlIDM6CiAgICAgICAgZm9yIChpID0gMDsgaSA8IHBpeEJ5dGVzOyArK2kpIHsKICAgICAgICAgIGJ1ZmZlcltqKytdID0gKHByZXZSb3dbaV0gPj4gMSkgKyByYXdCeXRlc1tpXTsKICAgICAgICB9CiAgICAgICAgZm9yICg7IGkgPCByb3dCeXRlczsgKytpKSB7CiAgICAgICAgICBidWZmZXJbal0gPSAoKChwcmV2Um93W2ldICsgYnVmZmVyW2ogLSBwaXhCeXRlc10pID4+IDEpICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgcmF3Qnl0ZXNbaV0pICYgMHhGRjsKICAgICAgICAgIGorKzsKICAgICAgICB9CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgNDoKICAgICAgICAvLyB3ZSBuZWVkIHRvIHNhdmUgdGhlIHVwIGxlZnQgcGl4ZWxzIHZhbHVlcy4gdGhlIHNpbXBsZXN0IHdheQogICAgICAgIC8vIGlzIHRvIGNyZWF0ZSBhIG5ldyBidWZmZXIKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcGl4Qnl0ZXM7ICsraSkgewogICAgICAgICAgdXAgPSBwcmV2Um93W2ldOwogICAgICAgICAgYyA9IHJhd0J5dGVzW2ldOwogICAgICAgICAgYnVmZmVyW2orK10gPSB1cCArIGM7CiAgICAgICAgfQogICAgICAgIGZvciAoOyBpIDwgcm93Qnl0ZXM7ICsraSkgewogICAgICAgICAgdXAgPSBwcmV2Um93W2ldOwogICAgICAgICAgdmFyIHVwTGVmdCA9IHByZXZSb3dbaSAtIHBpeEJ5dGVzXTsKICAgICAgICAgIHZhciBsZWZ0ID0gYnVmZmVyW2ogLSBwaXhCeXRlc107CiAgICAgICAgICB2YXIgcCA9IGxlZnQgKyB1cCAtIHVwTGVmdDsKCiAgICAgICAgICB2YXIgcGEgPSBwIC0gbGVmdDsKICAgICAgICAgIGlmIChwYSA8IDApIHsKICAgICAgICAgICAgcGEgPSAtcGE7CiAgICAgICAgICB9CiAgICAgICAgICB2YXIgcGIgPSBwIC0gdXA7CiAgICAgICAgICBpZiAocGIgPCAwKSB7CiAgICAgICAgICAgIHBiID0gLXBiOwogICAgICAgICAgfQogICAgICAgICAgdmFyIHBjID0gcCAtIHVwTGVmdDsKICAgICAgICAgIGlmIChwYyA8IDApIHsKICAgICAgICAgICAgcGMgPSAtcGM7CiAgICAgICAgICB9CgogICAgICAgICAgYyA9IHJhd0J5dGVzW2ldOwogICAgICAgICAgaWYgKHBhIDw9IHBiICYmIHBhIDw9IHBjKSB7CiAgICAgICAgICAgIGJ1ZmZlcltqKytdID0gbGVmdCArIGM7CiAgICAgICAgICB9IGVsc2UgaWYgKHBiIDw9IHBjKSB7CiAgICAgICAgICAgIGJ1ZmZlcltqKytdID0gdXAgKyBjOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgYnVmZmVyW2orK10gPSB1cExlZnQgKyBjOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBicmVhazsKICAgICAgZGVmYXVsdDoKICAgICAgICBlcnJvcignVW5zdXBwb3J0ZWQgcHJlZGljdG9yOiAnICsgcHJlZGljdG9yKTsKICAgIH0KICAgIHRoaXMuYnVmZmVyTGVuZ3RoICs9IHJvd0J5dGVzOwogIH07CgogIHJldHVybiBQcmVkaWN0b3JTdHJlYW07Cn0pKCk7CgovKioKICogRGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIEpQRUcgYSBKcGVnU3RyZWFtIGlzIGhhbmRsZWQgaW4gZGlmZmVyZW50IHdheXMuIEZvcgogKiBKUEVHJ3MgdGhhdCBhcmUgc3VwcG9ydGVkIG5hdGl2ZWx5IHN1Y2ggYXMgRGV2aWNlR3JheSBhbmQgRGV2aWNlUkdCIHRoZSBpbWFnZQogKiBkYXRhIGlzIHN0b3JlZCBhbmQgdGhlbiBsb2FkZWQgYnkgdGhlIGJyb3dzZXIuICBGb3IgdW5zdXBwb3J0ZWQgSlBFRydzIHdlIHVzZQogKiBhIGxpYnJhcnkgdG8gZGVjb2RlIHRoZXNlIGltYWdlcyBhbmQgdGhlIHN0cmVhbSBiZWhhdmVzIGxpa2UgYWxsIHRoZSBvdGhlcgogKiBEZWNvZGVTdHJlYW1zLgogKi8KdmFyIEpwZWdTdHJlYW0gPSAoZnVuY3Rpb24gSnBlZ1N0cmVhbUNsb3N1cmUoKSB7CiAgZnVuY3Rpb24gSnBlZ1N0cmVhbShzdHJlYW0sIG1heWJlTGVuZ3RoLCBkaWN0LCB4cmVmKSB7CiAgICAvLyBTb21lIGltYWdlcyBtYXkgY29udGFpbiAnanVuaycgYmVmb3JlIHRoZSBTT0kgKHN0YXJ0LW9mLWltYWdlKSBtYXJrZXIuCiAgICAvLyBOb3RlOiB0aGlzIHNlZW1zIHRvIG1haW5seSBhZmZlY3QgaW5saW5lIGltYWdlcy4KICAgIHZhciBjaDsKICAgIHdoaWxlICgoY2ggPSBzdHJlYW0uZ2V0Qnl0ZSgpKSAhPT0gLTEpIHsKICAgICAgaWYgKGNoID09PSAweEZGKSB7IC8vIEZpbmQgdGhlIGZpcnN0IGJ5dGUgb2YgdGhlIFNPSSBtYXJrZXIgKDB4RkZEOCkuCiAgICAgICAgc3RyZWFtLnNraXAoLTEpOyAvLyBSZXNldCB0aGUgc3RyZWFtIHBvc2l0aW9uIHRvIHRoZSBTT0kuCiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgIH0KICAgIHRoaXMuc3RyZWFtID0gc3RyZWFtOwogICAgdGhpcy5tYXliZUxlbmd0aCA9IG1heWJlTGVuZ3RoOwogICAgdGhpcy5kaWN0ID0gZGljdDsKCiAgICBEZWNvZGVTdHJlYW0uY2FsbCh0aGlzLCBtYXliZUxlbmd0aCk7CiAgfQoKICBKcGVnU3RyZWFtLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRGVjb2RlU3RyZWFtLnByb3RvdHlwZSk7CgogIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShKcGVnU3RyZWFtLnByb3RvdHlwZSwgJ2J5dGVzJywgewogICAgZ2V0OiBmdW5jdGlvbiBKcGVnU3RyZWFtX2J5dGVzKCkgewogICAgICAvLyBJZiB0aGlzLm1heWJlTGVuZ3RoIGlzIG51bGwsIHdlJ2xsIGdldCB0aGUgZW50aXJlIHN0cmVhbS4KICAgICAgcmV0dXJuIHNoYWRvdyh0aGlzLCAnYnl0ZXMnLCB0aGlzLnN0cmVhbS5nZXRCeXRlcyh0aGlzLm1heWJlTGVuZ3RoKSk7CiAgICB9LAogICAgY29uZmlndXJhYmxlOiB0cnVlCiAgfSk7CgogIEpwZWdTdHJlYW0ucHJvdG90eXBlLmVuc3VyZUJ1ZmZlciA9IGZ1bmN0aW9uIEpwZWdTdHJlYW1fZW5zdXJlQnVmZmVyKHJlcSkgewogICAgaWYgKHRoaXMuYnVmZmVyTGVuZ3RoKSB7CiAgICAgIHJldHVybjsKICAgIH0KICAgIHRyeSB7CiAgICAgIHZhciBqcGVnSW1hZ2UgPSBuZXcgSnBlZ0ltYWdlKCk7CgogICAgICAvLyBjaGVja2luZyBpZiB2YWx1ZXMgbmVlZHMgdG8gYmUgdHJhbnNmb3JtZWQgYmVmb3JlIGNvbnZlcnNpb24KICAgICAgaWYgKHRoaXMuZm9yY2VSR0IgJiYgdGhpcy5kaWN0ICYmIGlzQXJyYXkodGhpcy5kaWN0LmdldCgnRGVjb2RlJykpKSB7CiAgICAgICAgdmFyIGRlY29kZUFyciA9IHRoaXMuZGljdC5nZXQoJ0RlY29kZScpOwogICAgICAgIHZhciBiaXRzUGVyQ29tcG9uZW50ID0gdGhpcy5kaWN0LmdldCgnQml0c1BlckNvbXBvbmVudCcpIHx8IDg7CiAgICAgICAgdmFyIGRlY29kZUFyckxlbmd0aCA9IGRlY29kZUFyci5sZW5ndGg7CiAgICAgICAgdmFyIHRyYW5zZm9ybSA9IG5ldyBJbnQzMkFycmF5KGRlY29kZUFyckxlbmd0aCk7CiAgICAgICAgdmFyIHRyYW5zZm9ybU5lZWRlZCA9IGZhbHNlOwogICAgICAgIHZhciBtYXhWYWx1ZSA9ICgxIDw8IGJpdHNQZXJDb21wb25lbnQpIC0gMTsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlY29kZUFyckxlbmd0aDsgaSArPSAyKSB7CiAgICAgICAgICB0cmFuc2Zvcm1baV0gPSAoKGRlY29kZUFycltpICsgMV0gLSBkZWNvZGVBcnJbaV0pICogMjU2KSB8IDA7CiAgICAgICAgICB0cmFuc2Zvcm1baSArIDFdID0gKGRlY29kZUFycltpXSAqIG1heFZhbHVlKSB8IDA7CiAgICAgICAgICBpZiAodHJhbnNmb3JtW2ldICE9PSAyNTYgfHwgdHJhbnNmb3JtW2kgKyAxXSAhPT0gMCkgewogICAgICAgICAgICB0cmFuc2Zvcm1OZWVkZWQgPSB0cnVlOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAodHJhbnNmb3JtTmVlZGVkKSB7CiAgICAgICAgICBqcGVnSW1hZ2UuZGVjb2RlVHJhbnNmb3JtID0gdHJhbnNmb3JtOwogICAgICAgIH0KICAgICAgfQoKICAgICAganBlZ0ltYWdlLnBhcnNlKHRoaXMuYnl0ZXMpOwogICAgICB2YXIgZGF0YSA9IGpwZWdJbWFnZS5nZXREYXRhKHRoaXMuZHJhd1dpZHRoLCB0aGlzLmRyYXdIZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JjZVJHQik7CiAgICAgIHRoaXMuYnVmZmVyID0gZGF0YTsKICAgICAgdGhpcy5idWZmZXJMZW5ndGggPSBkYXRhLmxlbmd0aDsKICAgICAgdGhpcy5lb2YgPSB0cnVlOwogICAgfSBjYXRjaCAoZSkgewogICAgICBlcnJvcignSlBFRyBlcnJvcjogJyArIGUpOwogICAgfQogIH07CgogIEpwZWdTdHJlYW0ucHJvdG90eXBlLmdldEJ5dGVzID0gZnVuY3Rpb24gSnBlZ1N0cmVhbV9nZXRCeXRlcyhsZW5ndGgpIHsKICAgIHRoaXMuZW5zdXJlQnVmZmVyKCk7CiAgICByZXR1cm4gdGhpcy5idWZmZXI7CiAgfTsKCiAgSnBlZ1N0cmVhbS5wcm90b3R5cGUuZ2V0SVIgPSBmdW5jdGlvbiBKcGVnU3RyZWFtX2dldElSKCkgewogICAgcmV0dXJuIFBERkpTLmNyZWF0ZU9iamVjdFVSTCh0aGlzLmJ5dGVzLCAnaW1hZ2UvanBlZycpOwogIH07CiAgLyoqCiAgICogQ2hlY2tzIGlmIHRoZSBpbWFnZSBjYW4gYmUgZGVjb2RlZCBhbmQgZGlzcGxheWVkIGJ5IHRoZSBicm93c2VyIHdpdGhvdXQgYW55CiAgICogZnVydGhlciBwcm9jZXNzaW5nIHN1Y2ggYXMgY29sb3Igc3BhY2UgY29udmVyc2lvbnMuCiAgICovCiAgSnBlZ1N0cmVhbS5wcm90b3R5cGUuaXNOYXRpdmVseVN1cHBvcnRlZCA9CiAgICAgIGZ1bmN0aW9uIEpwZWdTdHJlYW1faXNOYXRpdmVseVN1cHBvcnRlZCh4cmVmLCByZXMpIHsKICAgIHZhciBjcyA9IENvbG9yU3BhY2UucGFyc2UodGhpcy5kaWN0LmdldCgnQ29sb3JTcGFjZScsICdDUycpLCB4cmVmLCByZXMpOwogICAgcmV0dXJuIGNzLm5hbWUgPT09ICdEZXZpY2VHcmF5JyB8fCBjcy5uYW1lID09PSAnRGV2aWNlUkdCJzsKICB9OwogIC8qKgogICAqIENoZWNrcyBpZiB0aGUgaW1hZ2UgY2FuIGJlIGRlY29kZWQgYnkgdGhlIGJyb3dzZXIuCiAgICovCiAgSnBlZ1N0cmVhbS5wcm90b3R5cGUuaXNOYXRpdmVseURlY29kYWJsZSA9CiAgICAgIGZ1bmN0aW9uIEpwZWdTdHJlYW1faXNOYXRpdmVseURlY29kYWJsZSh4cmVmLCByZXMpIHsKICAgIHZhciBjcyA9IENvbG9yU3BhY2UucGFyc2UodGhpcy5kaWN0LmdldCgnQ29sb3JTcGFjZScsICdDUycpLCB4cmVmLCByZXMpOwogICAgdmFyIG51bUNvbXBzID0gY3MubnVtQ29tcHM7CiAgICByZXR1cm4gbnVtQ29tcHMgPT09IDEgfHwgbnVtQ29tcHMgPT09IDM7CiAgfTsKCiAgcmV0dXJuIEpwZWdTdHJlYW07Cn0pKCk7CgovKioKICogRm9yIEpQRUcgMjAwMCdzIHdlIHVzZSBhIGxpYnJhcnkgdG8gZGVjb2RlIHRoZXNlIGltYWdlcyBhbmQKICogdGhlIHN0cmVhbSBiZWhhdmVzIGxpa2UgYWxsIHRoZSBvdGhlciBEZWNvZGVTdHJlYW1zLgogKi8KdmFyIEpweFN0cmVhbSA9IChmdW5jdGlvbiBKcHhTdHJlYW1DbG9zdXJlKCkgewogIGZ1bmN0aW9uIEpweFN0cmVhbShzdHJlYW0sIG1heWJlTGVuZ3RoLCBkaWN0KSB7CiAgICB0aGlzLnN0cmVhbSA9IHN0cmVhbTsKICAgIHRoaXMubWF5YmVMZW5ndGggPSBtYXliZUxlbmd0aDsKICAgIHRoaXMuZGljdCA9IGRpY3Q7CgogICAgRGVjb2RlU3RyZWFtLmNhbGwodGhpcywgbWF5YmVMZW5ndGgpOwogIH0KCiAgSnB4U3RyZWFtLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRGVjb2RlU3RyZWFtLnByb3RvdHlwZSk7CgogIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShKcHhTdHJlYW0ucHJvdG90eXBlLCAnYnl0ZXMnLCB7CiAgICBnZXQ6IGZ1bmN0aW9uIEpweFN0cmVhbV9ieXRlcygpIHsKICAgICAgLy8gSWYgdGhpcy5tYXliZUxlbmd0aCBpcyBudWxsLCB3ZSdsbCBnZXQgdGhlIGVudGlyZSBzdHJlYW0uCiAgICAgIHJldHVybiBzaGFkb3codGhpcywgJ2J5dGVzJywgdGhpcy5zdHJlYW0uZ2V0Qnl0ZXModGhpcy5tYXliZUxlbmd0aCkpOwogICAgfSwKICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZQogIH0pOwoKICBKcHhTdHJlYW0ucHJvdG90eXBlLmVuc3VyZUJ1ZmZlciA9IGZ1bmN0aW9uIEpweFN0cmVhbV9lbnN1cmVCdWZmZXIocmVxKSB7CiAgICBpZiAodGhpcy5idWZmZXJMZW5ndGgpIHsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIHZhciBqcHhJbWFnZSA9IG5ldyBKcHhJbWFnZSgpOwogICAganB4SW1hZ2UucGFyc2UodGhpcy5ieXRlcyk7CgogICAgdmFyIHdpZHRoID0ganB4SW1hZ2Uud2lkdGg7CiAgICB2YXIgaGVpZ2h0ID0ganB4SW1hZ2UuaGVpZ2h0OwogICAgdmFyIGNvbXBvbmVudHNDb3VudCA9IGpweEltYWdlLmNvbXBvbmVudHNDb3VudDsKICAgIHZhciB0aWxlQ291bnQgPSBqcHhJbWFnZS50aWxlcy5sZW5ndGg7CiAgICBpZiAodGlsZUNvdW50ID09PSAxKSB7CiAgICAgIHRoaXMuYnVmZmVyID0ganB4SW1hZ2UudGlsZXNbMF0uaXRlbXM7CiAgICB9IGVsc2UgewogICAgICB2YXIgZGF0YSA9IG5ldyBVaW50OEFycmF5KHdpZHRoICogaGVpZ2h0ICogY29tcG9uZW50c0NvdW50KTsKCiAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgdGlsZUNvdW50OyBrKyspIHsKICAgICAgICB2YXIgdGlsZUNvbXBvbmVudHMgPSBqcHhJbWFnZS50aWxlc1trXTsKICAgICAgICB2YXIgdGlsZVdpZHRoID0gdGlsZUNvbXBvbmVudHMud2lkdGg7CiAgICAgICAgdmFyIHRpbGVIZWlnaHQgPSB0aWxlQ29tcG9uZW50cy5oZWlnaHQ7CiAgICAgICAgdmFyIHRpbGVMZWZ0ID0gdGlsZUNvbXBvbmVudHMubGVmdDsKICAgICAgICB2YXIgdGlsZVRvcCA9IHRpbGVDb21wb25lbnRzLnRvcDsKCiAgICAgICAgdmFyIHNyYyA9IHRpbGVDb21wb25lbnRzLml0ZW1zOwogICAgICAgIHZhciBzcmNQb3NpdGlvbiA9IDA7CiAgICAgICAgdmFyIGRhdGFQb3NpdGlvbiA9ICh3aWR0aCAqIHRpbGVUb3AgKyB0aWxlTGVmdCkgKiBjb21wb25lbnRzQ291bnQ7CiAgICAgICAgdmFyIGltZ1Jvd1NpemUgPSB3aWR0aCAqIGNvbXBvbmVudHNDb3VudDsKICAgICAgICB2YXIgdGlsZVJvd1NpemUgPSB0aWxlV2lkdGggKiBjb21wb25lbnRzQ291bnQ7CgogICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdGlsZUhlaWdodDsgaisrKSB7CiAgICAgICAgICB2YXIgcm93Qnl0ZXMgPSBzcmMuc3ViYXJyYXkoc3JjUG9zaXRpb24sIHNyY1Bvc2l0aW9uICsgdGlsZVJvd1NpemUpOwogICAgICAgICAgZGF0YS5zZXQocm93Qnl0ZXMsIGRhdGFQb3NpdGlvbik7CiAgICAgICAgICBzcmNQb3NpdGlvbiArPSB0aWxlUm93U2l6ZTsKICAgICAgICAgIGRhdGFQb3NpdGlvbiArPSBpbWdSb3dTaXplOwogICAgICAgIH0KICAgICAgfQogICAgICB0aGlzLmJ1ZmZlciA9IGRhdGE7CiAgICB9CiAgICB0aGlzLmJ1ZmZlckxlbmd0aCA9IHRoaXMuYnVmZmVyLmxlbmd0aDsKICAgIHRoaXMuZW9mID0gdHJ1ZTsKICB9OwoKICByZXR1cm4gSnB4U3RyZWFtOwp9KSgpOwoKLyoqCiAqIEZvciBKQklHMidzIHdlIHVzZSBhIGxpYnJhcnkgdG8gZGVjb2RlIHRoZXNlIGltYWdlcyBhbmQKICogdGhlIHN0cmVhbSBiZWhhdmVzIGxpa2UgYWxsIHRoZSBvdGhlciBEZWNvZGVTdHJlYW1zLgogKi8KdmFyIEpiaWcyU3RyZWFtID0gKGZ1bmN0aW9uIEpiaWcyU3RyZWFtQ2xvc3VyZSgpIHsKICBmdW5jdGlvbiBKYmlnMlN0cmVhbShzdHJlYW0sIG1heWJlTGVuZ3RoLCBkaWN0KSB7CiAgICB0aGlzLnN0cmVhbSA9IHN0cmVhbTsKICAgIHRoaXMubWF5YmVMZW5ndGggPSBtYXliZUxlbmd0aDsKICAgIHRoaXMuZGljdCA9IGRpY3Q7CgogICAgRGVjb2RlU3RyZWFtLmNhbGwodGhpcywgbWF5YmVMZW5ndGgpOwogIH0KCiAgSmJpZzJTdHJlYW0ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShEZWNvZGVTdHJlYW0ucHJvdG90eXBlKTsKCiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEpiaWcyU3RyZWFtLnByb3RvdHlwZSwgJ2J5dGVzJywgewogICAgZ2V0OiBmdW5jdGlvbiBKYmlnMlN0cmVhbV9ieXRlcygpIHsKICAgICAgLy8gSWYgdGhpcy5tYXliZUxlbmd0aCBpcyBudWxsLCB3ZSdsbCBnZXQgdGhlIGVudGlyZSBzdHJlYW0uCiAgICAgIHJldHVybiBzaGFkb3codGhpcywgJ2J5dGVzJywgdGhpcy5zdHJlYW0uZ2V0Qnl0ZXModGhpcy5tYXliZUxlbmd0aCkpOwogICAgfSwKICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZQogIH0pOwoKICBKYmlnMlN0cmVhbS5wcm90b3R5cGUuZW5zdXJlQnVmZmVyID0gZnVuY3Rpb24gSmJpZzJTdHJlYW1fZW5zdXJlQnVmZmVyKHJlcSkgewogICAgaWYgKHRoaXMuYnVmZmVyTGVuZ3RoKSB7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICB2YXIgamJpZzJJbWFnZSA9IG5ldyBKYmlnMkltYWdlKCk7CgogICAgdmFyIGNodW5rcyA9IFtdLCB4cmVmID0gdGhpcy5kaWN0LnhyZWY7CiAgICB2YXIgZGVjb2RlUGFyYW1zID0geHJlZi5mZXRjaElmUmVmKHRoaXMuZGljdC5nZXQoJ0RlY29kZVBhcm1zJykpOwoKICAgIC8vIEFjY29yZGluZyB0byB0aGUgUERGIHNwZWNpZmljYXRpb24sIERlY29kZVBhcm1zIGNhbiBiZSBlaXRoZXIKICAgIC8vIGEgZGljdGlvbmFyeSwgb3IgYW4gYXJyYXkgd2hvc2UgZWxlbWVudHMgYXJlIGRpY3Rpb25hcmllcy4KICAgIGlmIChpc0FycmF5KGRlY29kZVBhcmFtcykpIHsKICAgICAgaWYgKGRlY29kZVBhcmFtcy5sZW5ndGggPiAxKSB7CiAgICAgICAgd2FybignSkJJRzIgLSBcJ0RlY29kZVBhcm1zXCcgYXJyYXkgd2l0aCBtdWx0aXBsZSBlbGVtZW50cyAnICsKICAgICAgICAgICAgICdub3Qgc3VwcG9ydGVkLicpOwogICAgICB9CiAgICAgIGRlY29kZVBhcmFtcyA9IHhyZWYuZmV0Y2hJZlJlZihkZWNvZGVQYXJhbXNbMF0pOwogICAgfQogICAgaWYgKGRlY29kZVBhcmFtcyAmJiBkZWNvZGVQYXJhbXMuaGFzKCdKQklHMkdsb2JhbHMnKSkgewogICAgICB2YXIgZ2xvYmFsc1N0cmVhbSA9IGRlY29kZVBhcmFtcy5nZXQoJ0pCSUcyR2xvYmFscycpOwogICAgICB2YXIgZ2xvYmFscyA9IGdsb2JhbHNTdHJlYW0uZ2V0Qnl0ZXMoKTsKICAgICAgY2h1bmtzLnB1c2goe2RhdGE6IGdsb2JhbHMsIHN0YXJ0OiAwLCBlbmQ6IGdsb2JhbHMubGVuZ3RofSk7CiAgICB9CiAgICBjaHVua3MucHVzaCh7ZGF0YTogdGhpcy5ieXRlcywgc3RhcnQ6IDAsIGVuZDogdGhpcy5ieXRlcy5sZW5ndGh9KTsKICAgIHZhciBkYXRhID0gamJpZzJJbWFnZS5wYXJzZUNodW5rcyhjaHVua3MpOwogICAgdmFyIGRhdGFMZW5ndGggPSBkYXRhLmxlbmd0aDsKCiAgICAvLyBKQklHMiBoYWQgYmxhY2sgYXMgMSBhbmQgd2hpdGUgYXMgMCwgaW52ZXJ0aW5nIHRoZSBjb2xvcnMKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YUxlbmd0aDsgaSsrKSB7CiAgICAgIGRhdGFbaV0gXj0gMHhGRjsKICAgIH0KCiAgICB0aGlzLmJ1ZmZlciA9IGRhdGE7CiAgICB0aGlzLmJ1ZmZlckxlbmd0aCA9IGRhdGFMZW5ndGg7CiAgICB0aGlzLmVvZiA9IHRydWU7CiAgfTsKCiAgcmV0dXJuIEpiaWcyU3RyZWFtOwp9KSgpOwoKdmFyIERlY3J5cHRTdHJlYW0gPSAoZnVuY3Rpb24gRGVjcnlwdFN0cmVhbUNsb3N1cmUoKSB7CiAgZnVuY3Rpb24gRGVjcnlwdFN0cmVhbShzdHIsIG1heWJlTGVuZ3RoLCBkZWNyeXB0KSB7CiAgICB0aGlzLnN0ciA9IHN0cjsKICAgIHRoaXMuZGljdCA9IHN0ci5kaWN0OwogICAgdGhpcy5kZWNyeXB0ID0gZGVjcnlwdDsKICAgIHRoaXMubmV4dENodW5rID0gbnVsbDsKICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSBmYWxzZTsKCiAgICBEZWNvZGVTdHJlYW0uY2FsbCh0aGlzLCBtYXliZUxlbmd0aCk7CiAgfQoKICB2YXIgY2h1bmtTaXplID0gNTEyOwoKICBEZWNyeXB0U3RyZWFtLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRGVjb2RlU3RyZWFtLnByb3RvdHlwZSk7CgogIERlY3J5cHRTdHJlYW0ucHJvdG90eXBlLnJlYWRCbG9jayA9IGZ1bmN0aW9uIERlY3J5cHRTdHJlYW1fcmVhZEJsb2NrKCkgewogICAgdmFyIGNodW5rOwogICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHsKICAgICAgY2h1bmsgPSB0aGlzLm5leHRDaHVuazsKICAgIH0gZWxzZSB7CiAgICAgIGNodW5rID0gdGhpcy5zdHIuZ2V0Qnl0ZXMoY2h1bmtTaXplKTsKICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7CiAgICB9CiAgICBpZiAoIWNodW5rIHx8IGNodW5rLmxlbmd0aCA9PT0gMCkgewogICAgICB0aGlzLmVvZiA9IHRydWU7CiAgICAgIHJldHVybjsKICAgIH0KICAgIHRoaXMubmV4dENodW5rID0gdGhpcy5zdHIuZ2V0Qnl0ZXMoY2h1bmtTaXplKTsKICAgIHZhciBoYXNNb3JlRGF0YSA9IHRoaXMubmV4dENodW5rICYmIHRoaXMubmV4dENodW5rLmxlbmd0aCA+IDA7CgogICAgdmFyIGRlY3J5cHQgPSB0aGlzLmRlY3J5cHQ7CiAgICBjaHVuayA9IGRlY3J5cHQoY2h1bmssICFoYXNNb3JlRGF0YSk7CgogICAgdmFyIGJ1ZmZlckxlbmd0aCA9IHRoaXMuYnVmZmVyTGVuZ3RoOwogICAgdmFyIGksIG4gPSBjaHVuay5sZW5ndGg7CiAgICB2YXIgYnVmZmVyID0gdGhpcy5lbnN1cmVCdWZmZXIoYnVmZmVyTGVuZ3RoICsgbik7CiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgIGJ1ZmZlcltidWZmZXJMZW5ndGgrK10gPSBjaHVua1tpXTsKICAgIH0KICAgIHRoaXMuYnVmZmVyTGVuZ3RoID0gYnVmZmVyTGVuZ3RoOwogIH07CgogIHJldHVybiBEZWNyeXB0U3RyZWFtOwp9KSgpOwoKdmFyIEFzY2lpODVTdHJlYW0gPSAoZnVuY3Rpb24gQXNjaWk4NVN0cmVhbUNsb3N1cmUoKSB7CiAgZnVuY3Rpb24gQXNjaWk4NVN0cmVhbShzdHIsIG1heWJlTGVuZ3RoKSB7CiAgICB0aGlzLnN0ciA9IHN0cjsKICAgIHRoaXMuZGljdCA9IHN0ci5kaWN0OwogICAgdGhpcy5pbnB1dCA9IG5ldyBVaW50OEFycmF5KDUpOwoKICAgIC8vIE1vc3Qgc3RyZWFtcyBpbmNyZWFzZSBpbiBzaXplIHdoZW4gZGVjb2RlZCwgYnV0IEFzY2lpODUgc3RyZWFtcwogICAgLy8gdHlwaWNhbGx5IHNocmluayBieSB+MjAlLgogICAgaWYgKG1heWJlTGVuZ3RoKSB7CiAgICAgIG1heWJlTGVuZ3RoID0gMC44ICogbWF5YmVMZW5ndGg7CiAgICB9CiAgICBEZWNvZGVTdHJlYW0uY2FsbCh0aGlzLCBtYXliZUxlbmd0aCk7CiAgfQoKICBBc2NpaTg1U3RyZWFtLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRGVjb2RlU3RyZWFtLnByb3RvdHlwZSk7CgogIEFzY2lpODVTdHJlYW0ucHJvdG90eXBlLnJlYWRCbG9jayA9IGZ1bmN0aW9uIEFzY2lpODVTdHJlYW1fcmVhZEJsb2NrKCkgewogICAgdmFyIFRJTERBX0NIQVIgPSAweDdFOyAvLyAnficKICAgIHZhciBaX0xPV0VSX0NIQVIgPSAweDdBOyAvLyAneicKICAgIHZhciBFT0YgPSAtMTsKCiAgICB2YXIgc3RyID0gdGhpcy5zdHI7CgogICAgdmFyIGMgPSBzdHIuZ2V0Qnl0ZSgpOwogICAgd2hpbGUgKExleGVyLmlzU3BhY2UoYykpIHsKICAgICAgYyA9IHN0ci5nZXRCeXRlKCk7CiAgICB9CgogICAgaWYgKGMgPT09IEVPRiB8fCBjID09PSBUSUxEQV9DSEFSKSB7CiAgICAgIHRoaXMuZW9mID0gdHJ1ZTsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIHZhciBidWZmZXJMZW5ndGggPSB0aGlzLmJ1ZmZlckxlbmd0aCwgYnVmZmVyOwogICAgdmFyIGk7CgogICAgLy8gc3BlY2lhbCBjb2RlIGZvciB6CiAgICBpZiAoYyA9PT0gWl9MT1dFUl9DSEFSKSB7CiAgICAgIGJ1ZmZlciA9IHRoaXMuZW5zdXJlQnVmZmVyKGJ1ZmZlckxlbmd0aCArIDQpOwogICAgICBmb3IgKGkgPSAwOyBpIDwgNDsgKytpKSB7CiAgICAgICAgYnVmZmVyW2J1ZmZlckxlbmd0aCArIGldID0gMDsKICAgICAgfQogICAgICB0aGlzLmJ1ZmZlckxlbmd0aCArPSA0OwogICAgfSBlbHNlIHsKICAgICAgdmFyIGlucHV0ID0gdGhpcy5pbnB1dDsKICAgICAgaW5wdXRbMF0gPSBjOwogICAgICBmb3IgKGkgPSAxOyBpIDwgNTsgKytpKSB7CiAgICAgICAgYyA9IHN0ci5nZXRCeXRlKCk7CiAgICAgICAgd2hpbGUgKExleGVyLmlzU3BhY2UoYykpIHsKICAgICAgICAgIGMgPSBzdHIuZ2V0Qnl0ZSgpOwogICAgICAgIH0KCiAgICAgICAgaW5wdXRbaV0gPSBjOwoKICAgICAgICBpZiAoYyA9PT0gRU9GIHx8IGMgPT09IFRJTERBX0NIQVIpIHsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgfQogICAgICBidWZmZXIgPSB0aGlzLmVuc3VyZUJ1ZmZlcihidWZmZXJMZW5ndGggKyBpIC0gMSk7CiAgICAgIHRoaXMuYnVmZmVyTGVuZ3RoICs9IGkgLSAxOwoKICAgICAgLy8gcGFydGlhbCBlbmRpbmc7CiAgICAgIGlmIChpIDwgNSkgewogICAgICAgIGZvciAoOyBpIDwgNTsgKytpKSB7CiAgICAgICAgICBpbnB1dFtpXSA9IDB4MjEgKyA4NDsKICAgICAgICB9CiAgICAgICAgdGhpcy5lb2YgPSB0cnVlOwogICAgICB9CiAgICAgIHZhciB0ID0gMDsKICAgICAgZm9yIChpID0gMDsgaSA8IDU7ICsraSkgewogICAgICAgIHQgPSB0ICogODUgKyAoaW5wdXRbaV0gLSAweDIxKTsKICAgICAgfQoKICAgICAgZm9yIChpID0gMzsgaSA+PSAwOyAtLWkpIHsKICAgICAgICBidWZmZXJbYnVmZmVyTGVuZ3RoICsgaV0gPSB0ICYgMHhGRjsKICAgICAgICB0ID4+PSA4OwogICAgICB9CiAgICB9CiAgfTsKCiAgcmV0dXJuIEFzY2lpODVTdHJlYW07Cn0pKCk7Cgp2YXIgQXNjaWlIZXhTdHJlYW0gPSAoZnVuY3Rpb24gQXNjaWlIZXhTdHJlYW1DbG9zdXJlKCkgewogIGZ1bmN0aW9uIEFzY2lpSGV4U3RyZWFtKHN0ciwgbWF5YmVMZW5ndGgpIHsKICAgIHRoaXMuc3RyID0gc3RyOwogICAgdGhpcy5kaWN0ID0gc3RyLmRpY3Q7CgogICAgdGhpcy5maXJzdERpZ2l0ID0gLTE7CgogICAgLy8gTW9zdCBzdHJlYW1zIGluY3JlYXNlIGluIHNpemUgd2hlbiBkZWNvZGVkLCBidXQgQXNjaWlIZXggc3RyZWFtcyBzaHJpbmsKICAgIC8vIGJ5IDUwJS4KICAgIGlmIChtYXliZUxlbmd0aCkgewogICAgICBtYXliZUxlbmd0aCA9IDAuNSAqIG1heWJlTGVuZ3RoOwogICAgfQogICAgRGVjb2RlU3RyZWFtLmNhbGwodGhpcywgbWF5YmVMZW5ndGgpOwogIH0KCiAgQXNjaWlIZXhTdHJlYW0ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShEZWNvZGVTdHJlYW0ucHJvdG90eXBlKTsKCiAgQXNjaWlIZXhTdHJlYW0ucHJvdG90eXBlLnJlYWRCbG9jayA9IGZ1bmN0aW9uIEFzY2lpSGV4U3RyZWFtX3JlYWRCbG9jaygpIHsKICAgIHZhciBVUFNUUkVBTV9CTE9DS19TSVpFID0gODAwMDsKICAgIHZhciBieXRlcyA9IHRoaXMuc3RyLmdldEJ5dGVzKFVQU1RSRUFNX0JMT0NLX1NJWkUpOwogICAgaWYgKCFieXRlcy5sZW5ndGgpIHsKICAgICAgdGhpcy5lb2YgPSB0cnVlOwogICAgICByZXR1cm47CiAgICB9CgogICAgdmFyIG1heERlY29kZUxlbmd0aCA9IChieXRlcy5sZW5ndGggKyAxKSA+PiAxOwogICAgdmFyIGJ1ZmZlciA9IHRoaXMuZW5zdXJlQnVmZmVyKHRoaXMuYnVmZmVyTGVuZ3RoICsgbWF4RGVjb2RlTGVuZ3RoKTsKICAgIHZhciBidWZmZXJMZW5ndGggPSB0aGlzLmJ1ZmZlckxlbmd0aDsKCiAgICB2YXIgZmlyc3REaWdpdCA9IHRoaXMuZmlyc3REaWdpdDsKICAgIGZvciAodmFyIGkgPSAwLCBpaSA9IGJ5dGVzLmxlbmd0aDsgaSA8IGlpOyBpKyspIHsKICAgICAgdmFyIGNoID0gYnl0ZXNbaV0sIGRpZ2l0OwogICAgICBpZiAoY2ggPj0gMHgzMCAmJiBjaCA8PSAweDM5KSB7IC8vICcwJy0nOScKICAgICAgICBkaWdpdCA9IGNoICYgMHgwRjsKICAgICAgfSBlbHNlIGlmICgoY2ggPj0gMHg0MSAmJiBjaCA8PSAweDQ2KSB8fCAoY2ggPj0gMHg2MSAmJiBjaCA8PSAweDY2KSkgewogICAgICAgIC8vICdBJy0nWicsICdhJy0neicKICAgICAgICBkaWdpdCA9IChjaCAmIDB4MEYpICsgOTsKICAgICAgfSBlbHNlIGlmIChjaCA9PT0gMHgzRSkgeyAvLyAnPicKICAgICAgICB0aGlzLmVvZiA9IHRydWU7CiAgICAgICAgYnJlYWs7CiAgICAgIH0gZWxzZSB7IC8vIHByb2JhYmx5IHdoaXRlc3BhY2UKICAgICAgICBjb250aW51ZTsgLy8gaWdub3JpbmcKICAgICAgfQogICAgICBpZiAoZmlyc3REaWdpdCA8IDApIHsKICAgICAgICBmaXJzdERpZ2l0ID0gZGlnaXQ7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgYnVmZmVyW2J1ZmZlckxlbmd0aCsrXSA9IChmaXJzdERpZ2l0IDw8IDQpIHwgZGlnaXQ7CiAgICAgICAgZmlyc3REaWdpdCA9IC0xOwogICAgICB9CiAgICB9CiAgICBpZiAoZmlyc3REaWdpdCA+PSAwICYmIHRoaXMuZW9mKSB7CiAgICAgIC8vIGluY29tcGxldGUgYnl0ZQogICAgICBidWZmZXJbYnVmZmVyTGVuZ3RoKytdID0gKGZpcnN0RGlnaXQgPDwgNCk7CiAgICAgIGZpcnN0RGlnaXQgPSAtMTsKICAgIH0KICAgIHRoaXMuZmlyc3REaWdpdCA9IGZpcnN0RGlnaXQ7CiAgICB0aGlzLmJ1ZmZlckxlbmd0aCA9IGJ1ZmZlckxlbmd0aDsKICB9OwoKICByZXR1cm4gQXNjaWlIZXhTdHJlYW07Cn0pKCk7Cgp2YXIgUnVuTGVuZ3RoU3RyZWFtID0gKGZ1bmN0aW9uIFJ1bkxlbmd0aFN0cmVhbUNsb3N1cmUoKSB7CiAgZnVuY3Rpb24gUnVuTGVuZ3RoU3RyZWFtKHN0ciwgbWF5YmVMZW5ndGgpIHsKICAgIHRoaXMuc3RyID0gc3RyOwogICAgdGhpcy5kaWN0ID0gc3RyLmRpY3Q7CgogICAgRGVjb2RlU3RyZWFtLmNhbGwodGhpcywgbWF5YmVMZW5ndGgpOwogIH0KCiAgUnVuTGVuZ3RoU3RyZWFtLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRGVjb2RlU3RyZWFtLnByb3RvdHlwZSk7CgogIFJ1bkxlbmd0aFN0cmVhbS5wcm90b3R5cGUucmVhZEJsb2NrID0gZnVuY3Rpb24gUnVuTGVuZ3RoU3RyZWFtX3JlYWRCbG9jaygpIHsKICAgIC8vIFRoZSByZXBlYXRIZWFkZXIgaGFzIGZvbGxvd2luZyBmb3JtYXQuIFRoZSBmaXJzdCBieXRlIGRlZmluZXMgdHlwZSBvZiBydW4KICAgIC8vIGFuZCBhbW91bnQgb2YgYnl0ZXMgdG8gcmVwZWF0L2NvcHk6IG4gPSAwIHRocm91Z2ggMTI3IC0gY29weSBuZXh0IG4gYnl0ZXMKICAgIC8vIChpbiBhZGRpdGlvbiB0byB0aGUgc2Vjb25kIGJ5dGUgZnJvbSB0aGUgaGVhZGVyKSwgbiA9IDEyOSB0aHJvdWdoIDI1NSAtCiAgICAvLyBkdXBsaWNhdGUgdGhlIHNlY29uZCBieXRlIGZyb20gdGhlIGhlYWRlciAoMjU3IC0gbikgdGltZXMsIG4gPSAxMjggLSBlbmQuCiAgICB2YXIgcmVwZWF0SGVhZGVyID0gdGhpcy5zdHIuZ2V0Qnl0ZXMoMik7CiAgICBpZiAoIXJlcGVhdEhlYWRlciB8fCByZXBlYXRIZWFkZXIubGVuZ3RoIDwgMiB8fCByZXBlYXRIZWFkZXJbMF0gPT09IDEyOCkgewogICAgICB0aGlzLmVvZiA9IHRydWU7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICB2YXIgYnVmZmVyOwogICAgdmFyIGJ1ZmZlckxlbmd0aCA9IHRoaXMuYnVmZmVyTGVuZ3RoOwogICAgdmFyIG4gPSByZXBlYXRIZWFkZXJbMF07CiAgICBpZiAobiA8IDEyOCkgewogICAgICAvLyBjb3B5IG4gYnl0ZXMKICAgICAgYnVmZmVyID0gdGhpcy5lbnN1cmVCdWZmZXIoYnVmZmVyTGVuZ3RoICsgbiArIDEpOwogICAgICBidWZmZXJbYnVmZmVyTGVuZ3RoKytdID0gcmVwZWF0SGVhZGVyWzFdOwogICAgICBpZiAobiA+IDApIHsKICAgICAgICB2YXIgc291cmNlID0gdGhpcy5zdHIuZ2V0Qnl0ZXMobik7CiAgICAgICAgYnVmZmVyLnNldChzb3VyY2UsIGJ1ZmZlckxlbmd0aCk7CiAgICAgICAgYnVmZmVyTGVuZ3RoICs9IG47CiAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgIG4gPSAyNTcgLSBuOwogICAgICB2YXIgYiA9IHJlcGVhdEhlYWRlclsxXTsKICAgICAgYnVmZmVyID0gdGhpcy5lbnN1cmVCdWZmZXIoYnVmZmVyTGVuZ3RoICsgbiArIDEpOwogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIGJ1ZmZlcltidWZmZXJMZW5ndGgrK10gPSBiOwogICAgICB9CiAgICB9CiAgICB0aGlzLmJ1ZmZlckxlbmd0aCA9IGJ1ZmZlckxlbmd0aDsKICB9OwoKICByZXR1cm4gUnVuTGVuZ3RoU3RyZWFtOwp9KSgpOwoKdmFyIENDSVRURmF4U3RyZWFtID0gKGZ1bmN0aW9uIENDSVRURmF4U3RyZWFtQ2xvc3VyZSgpIHsKCiAgdmFyIGNjaXR0RU9MID0gLTI7CiAgdmFyIHR3b0RpbVBhc3MgPSAwOwogIHZhciB0d29EaW1Ib3JpeiA9IDE7CiAgdmFyIHR3b0RpbVZlcnQwID0gMjsKICB2YXIgdHdvRGltVmVydFIxID0gMzsKICB2YXIgdHdvRGltVmVydEwxID0gNDsKICB2YXIgdHdvRGltVmVydFIyID0gNTsKICB2YXIgdHdvRGltVmVydEwyID0gNjsKICB2YXIgdHdvRGltVmVydFIzID0gNzsKICB2YXIgdHdvRGltVmVydEwzID0gODsKCiAgdmFyIHR3b0RpbVRhYmxlID0gWwogICAgWy0xLCAtMV0sIFstMSwgLTFdLCAgICAgICAgICAgICAgICAgICAvLyAwMDAwMDB4CiAgICBbNywgdHdvRGltVmVydEwzXSwgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMTAKICAgIFs3LCB0d29EaW1WZXJ0UjNdLCAgICAgICAgICAgICAgICAgICAgLy8gMDAwMDAxMQogICAgWzYsIHR3b0RpbVZlcnRMMl0sIFs2LCB0d29EaW1WZXJ0TDJdLCAvLyAwMDAwMTB4CiAgICBbNiwgdHdvRGltVmVydFIyXSwgWzYsIHR3b0RpbVZlcnRSMl0sIC8vIDAwMDAxMXgKICAgIFs0LCB0d29EaW1QYXNzXSwgWzQsIHR3b0RpbVBhc3NdLCAgICAgLy8gMDAwMXh4eAogICAgWzQsIHR3b0RpbVBhc3NdLCBbNCwgdHdvRGltUGFzc10sCiAgICBbNCwgdHdvRGltUGFzc10sIFs0LCB0d29EaW1QYXNzXSwKICAgIFs0LCB0d29EaW1QYXNzXSwgWzQsIHR3b0RpbVBhc3NdLAogICAgWzMsIHR3b0RpbUhvcml6XSwgWzMsIHR3b0RpbUhvcml6XSwgICAvLyAwMDF4eHh4CiAgICBbMywgdHdvRGltSG9yaXpdLCBbMywgdHdvRGltSG9yaXpdLAogICAgWzMsIHR3b0RpbUhvcml6XSwgWzMsIHR3b0RpbUhvcml6XSwKICAgIFszLCB0d29EaW1Ib3Jpel0sIFszLCB0d29EaW1Ib3Jpel0sCiAgICBbMywgdHdvRGltSG9yaXpdLCBbMywgdHdvRGltSG9yaXpdLAogICAgWzMsIHR3b0RpbUhvcml6XSwgWzMsIHR3b0RpbUhvcml6XSwKICAgIFszLCB0d29EaW1Ib3Jpel0sIFszLCB0d29EaW1Ib3Jpel0sCiAgICBbMywgdHdvRGltSG9yaXpdLCBbMywgdHdvRGltSG9yaXpdLAogICAgWzMsIHR3b0RpbVZlcnRMMV0sIFszLCB0d29EaW1WZXJ0TDFdLCAvLyAwMTB4eHh4CiAgICBbMywgdHdvRGltVmVydEwxXSwgWzMsIHR3b0RpbVZlcnRMMV0sCiAgICBbMywgdHdvRGltVmVydEwxXSwgWzMsIHR3b0RpbVZlcnRMMV0sCiAgICBbMywgdHdvRGltVmVydEwxXSwgWzMsIHR3b0RpbVZlcnRMMV0sCiAgICBbMywgdHdvRGltVmVydEwxXSwgWzMsIHR3b0RpbVZlcnRMMV0sCiAgICBbMywgdHdvRGltVmVydEwxXSwgWzMsIHR3b0RpbVZlcnRMMV0sCiAgICBbMywgdHdvRGltVmVydEwxXSwgWzMsIHR3b0RpbVZlcnRMMV0sCiAgICBbMywgdHdvRGltVmVydEwxXSwgWzMsIHR3b0RpbVZlcnRMMV0sCiAgICBbMywgdHdvRGltVmVydFIxXSwgWzMsIHR3b0RpbVZlcnRSMV0sIC8vIDAxMXh4eHgKICAgIFszLCB0d29EaW1WZXJ0UjFdLCBbMywgdHdvRGltVmVydFIxXSwKICAgIFszLCB0d29EaW1WZXJ0UjFdLCBbMywgdHdvRGltVmVydFIxXSwKICAgIFszLCB0d29EaW1WZXJ0UjFdLCBbMywgdHdvRGltVmVydFIxXSwKICAgIFszLCB0d29EaW1WZXJ0UjFdLCBbMywgdHdvRGltVmVydFIxXSwKICAgIFszLCB0d29EaW1WZXJ0UjFdLCBbMywgdHdvRGltVmVydFIxXSwKICAgIFszLCB0d29EaW1WZXJ0UjFdLCBbMywgdHdvRGltVmVydFIxXSwKICAgIFszLCB0d29EaW1WZXJ0UjFdLCBbMywgdHdvRGltVmVydFIxXSwKICAgIFsxLCB0d29EaW1WZXJ0MF0sIFsxLCB0d29EaW1WZXJ0MF0sICAgLy8gMXh4eHh4eAogICAgWzEsIHR3b0RpbVZlcnQwXSwgWzEsIHR3b0RpbVZlcnQwXSwKICAgIFsxLCB0d29EaW1WZXJ0MF0sIFsxLCB0d29EaW1WZXJ0MF0sCiAgICBbMSwgdHdvRGltVmVydDBdLCBbMSwgdHdvRGltVmVydDBdLAogICAgWzEsIHR3b0RpbVZlcnQwXSwgWzEsIHR3b0RpbVZlcnQwXSwKICAgIFsxLCB0d29EaW1WZXJ0MF0sIFsxLCB0d29EaW1WZXJ0MF0sCiAgICBbMSwgdHdvRGltVmVydDBdLCBbMSwgdHdvRGltVmVydDBdLAogICAgWzEsIHR3b0RpbVZlcnQwXSwgWzEsIHR3b0RpbVZlcnQwXSwKICAgIFsxLCB0d29EaW1WZXJ0MF0sIFsxLCB0d29EaW1WZXJ0MF0sCiAgICBbMSwgdHdvRGltVmVydDBdLCBbMSwgdHdvRGltVmVydDBdLAogICAgWzEsIHR3b0RpbVZlcnQwXSwgWzEsIHR3b0RpbVZlcnQwXSwKICAgIFsxLCB0d29EaW1WZXJ0MF0sIFsxLCB0d29EaW1WZXJ0MF0sCiAgICBbMSwgdHdvRGltVmVydDBdLCBbMSwgdHdvRGltVmVydDBdLAogICAgWzEsIHR3b0RpbVZlcnQwXSwgWzEsIHR3b0RpbVZlcnQwXSwKICAgIFsxLCB0d29EaW1WZXJ0MF0sIFsxLCB0d29EaW1WZXJ0MF0sCiAgICBbMSwgdHdvRGltVmVydDBdLCBbMSwgdHdvRGltVmVydDBdLAogICAgWzEsIHR3b0RpbVZlcnQwXSwgWzEsIHR3b0RpbVZlcnQwXSwKICAgIFsxLCB0d29EaW1WZXJ0MF0sIFsxLCB0d29EaW1WZXJ0MF0sCiAgICBbMSwgdHdvRGltVmVydDBdLCBbMSwgdHdvRGltVmVydDBdLAogICAgWzEsIHR3b0RpbVZlcnQwXSwgWzEsIHR3b0RpbVZlcnQwXSwKICAgIFsxLCB0d29EaW1WZXJ0MF0sIFsxLCB0d29EaW1WZXJ0MF0sCiAgICBbMSwgdHdvRGltVmVydDBdLCBbMSwgdHdvRGltVmVydDBdLAogICAgWzEsIHR3b0RpbVZlcnQwXSwgWzEsIHR3b0RpbVZlcnQwXSwKICAgIFsxLCB0d29EaW1WZXJ0MF0sIFsxLCB0d29EaW1WZXJ0MF0sCiAgICBbMSwgdHdvRGltVmVydDBdLCBbMSwgdHdvRGltVmVydDBdLAogICAgWzEsIHR3b0RpbVZlcnQwXSwgWzEsIHR3b0RpbVZlcnQwXSwKICAgIFsxLCB0d29EaW1WZXJ0MF0sIFsxLCB0d29EaW1WZXJ0MF0sCiAgICBbMSwgdHdvRGltVmVydDBdLCBbMSwgdHdvRGltVmVydDBdLAogICAgWzEsIHR3b0RpbVZlcnQwXSwgWzEsIHR3b0RpbVZlcnQwXSwKICAgIFsxLCB0d29EaW1WZXJ0MF0sIFsxLCB0d29EaW1WZXJ0MF0sCiAgICBbMSwgdHdvRGltVmVydDBdLCBbMSwgdHdvRGltVmVydDBdLAogICAgWzEsIHR3b0RpbVZlcnQwXSwgWzEsIHR3b0RpbVZlcnQwXQogIF07CgogIHZhciB3aGl0ZVRhYmxlMSA9IFsKICAgIFstMSwgLTFdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwMDAwMAogICAgWzEyLCBjY2l0dEVPTF0sICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAxCiAgICBbLTEsIC0xXSwgWy0xLCAtMV0sICAgICAgICAgICAgICAgICAgICAgLy8gMDAwMXgKICAgIFstMSwgLTFdLCBbLTEsIC0xXSwgWy0xLCAtMV0sIFstMSwgLTFdLCAvLyAwMDF4eAogICAgWy0xLCAtMV0sIFstMSwgLTFdLCBbLTEsIC0xXSwgWy0xLCAtMV0sIC8vIDAxMHh4CiAgICBbLTEsIC0xXSwgWy0xLCAtMV0sIFstMSwgLTFdLCBbLTEsIC0xXSwgLy8gMDExeHgKICAgIFsxMSwgMTc5Ml0sIFsxMSwgMTc5Ml0sICAgICAgICAgICAgICAgICAvLyAxMDAweAogICAgWzEyLCAxOTg0XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDEwMDEwCiAgICBbMTIsIDIwNDhdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMTAwMTEKICAgIFsxMiwgMjExMl0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxMDEwMAogICAgWzEyLCAyMTc2XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDEwMTAxCiAgICBbMTIsIDIyNDBdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMTAxMTAKICAgIFsxMiwgMjMwNF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxMDExMQogICAgWzExLCAxODU2XSwgWzExLCAxODU2XSwgICAgICAgICAgICAgICAgIC8vIDExMDB4CiAgICBbMTEsIDE5MjBdLCBbMTEsIDE5MjBdLCAgICAgICAgICAgICAgICAgLy8gMTEwMXgKICAgIFsxMiwgMjM2OF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxMTEwMAogICAgWzEyLCAyNDMyXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDExMTAxCiAgICBbMTIsIDI0OTZdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMTExMTAKICAgIFsxMiwgMjU2MF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxMTExMQogIF07CgogIHZhciB3aGl0ZVRhYmxlMiA9IFsKICAgIFstMSwgLTFdLCBbLTEsIC0xXSwgWy0xLCAtMV0sIFstMSwgLTFdLCAgICAgLy8gMDAwMDAwMHh4CiAgICBbOCwgMjldLCBbOCwgMjldLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMDEweAogICAgWzgsIDMwXSwgWzgsIDMwXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwMDAwMDAxMXgKICAgIFs4LCA0NV0sIFs4LCA0NV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMDAwMDAxMDB4CiAgICBbOCwgNDZdLCBbOCwgNDZdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMTAxeAogICAgWzcsIDIyXSwgWzcsIDIyXSwgWzcsIDIyXSwgWzcsIDIyXSwgICAgICAgICAvLyAwMDAwMDExeHgKICAgIFs3LCAyM10sIFs3LCAyM10sIFs3LCAyM10sIFs3LCAyM10sICAgICAgICAgLy8gMDAwMDEwMHh4CiAgICBbOCwgNDddLCBbOCwgNDddLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAxMDEweAogICAgWzgsIDQ4XSwgWzgsIDQ4XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwMDAwMTAxMXgKICAgIFs2LCAxM10sIFs2LCAxM10sIFs2LCAxM10sIFs2LCAxM10sICAgICAgICAgLy8gMDAwMDExeHh4CiAgICBbNiwgMTNdLCBbNiwgMTNdLCBbNiwgMTNdLCBbNiwgMTNdLAogICAgWzcsIDIwXSwgWzcsIDIwXSwgWzcsIDIwXSwgWzcsIDIwXSwgICAgICAgICAvLyAwMDAxMDAweHgKICAgIFs4LCAzM10sIFs4LCAzM10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMDAwMTAwMTB4CiAgICBbOCwgMzRdLCBbOCwgMzRdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDEwMDExeAogICAgWzgsIDM1XSwgWzgsIDM1XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwMDAxMDEwMHgKICAgIFs4LCAzNl0sIFs4LCAzNl0sICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMDAwMTAxMDF4CiAgICBbOCwgMzddLCBbOCwgMzddLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDEwMTEweAogICAgWzgsIDM4XSwgWzgsIDM4XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwMDAxMDExMXgKICAgIFs3LCAxOV0sIFs3LCAxOV0sIFs3LCAxOV0sIFs3LCAxOV0sICAgICAgICAgLy8gMDAwMTEwMHh4CiAgICBbOCwgMzFdLCBbOCwgMzFdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDExMDEweAogICAgWzgsIDMyXSwgWzgsIDMyXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwMDAxMTAxMXgKICAgIFs2LCAxXSwgWzYsIDFdLCBbNiwgMV0sIFs2LCAxXSwgICAgICAgICAgICAgLy8gMDAwMTExeHh4CiAgICBbNiwgMV0sIFs2LCAxXSwgWzYsIDFdLCBbNiwgMV0sCiAgICBbNiwgMTJdLCBbNiwgMTJdLCBbNiwgMTJdLCBbNiwgMTJdLCAgICAgICAgIC8vIDAwMTAwMHh4eAogICAgWzYsIDEyXSwgWzYsIDEyXSwgWzYsIDEyXSwgWzYsIDEyXSwKICAgIFs4LCA1M10sIFs4LCA1M10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMDAxMDAxMDB4CiAgICBbOCwgNTRdLCBbOCwgNTRdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMTAwMTAxeAogICAgWzcsIDI2XSwgWzcsIDI2XSwgWzcsIDI2XSwgWzcsIDI2XSwgICAgICAgICAvLyAwMDEwMDExeHgKICAgIFs4LCAzOV0sIFs4LCAzOV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMDAxMDEwMDB4CiAgICBbOCwgNDBdLCBbOCwgNDBdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMTAxMDAxeAogICAgWzgsIDQxXSwgWzgsIDQxXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwMDEwMTAxMHgKICAgIFs4LCA0Ml0sIFs4LCA0Ml0sICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMDAxMDEwMTF4CiAgICBbOCwgNDNdLCBbOCwgNDNdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMTAxMTAweAogICAgWzgsIDQ0XSwgWzgsIDQ0XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwMDEwMTEwMXgKICAgIFs3LCAyMV0sIFs3LCAyMV0sIFs3LCAyMV0sIFs3LCAyMV0sICAgICAgICAgLy8gMDAxMDExMXh4CiAgICBbNywgMjhdLCBbNywgMjhdLCBbNywgMjhdLCBbNywgMjhdLCAgICAgICAgIC8vIDAwMTEwMDB4eAogICAgWzgsIDYxXSwgWzgsIDYxXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwMDExMDAxMHgKICAgIFs4LCA2Ml0sIFs4LCA2Ml0sICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMDAxMTAwMTF4CiAgICBbOCwgNjNdLCBbOCwgNjNdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMTEwMTAweAogICAgWzgsIDBdLCBbOCwgMF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwMDExMDEwMXgKICAgIFs4LCAzMjBdLCBbOCwgMzIwXSwgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMDAxMTAxMTB4CiAgICBbOCwgMzg0XSwgWzgsIDM4NF0sICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMTEwMTExeAogICAgWzUsIDEwXSwgWzUsIDEwXSwgWzUsIDEwXSwgWzUsIDEwXSwgICAgICAgICAvLyAwMDExMXh4eHgKICAgIFs1LCAxMF0sIFs1LCAxMF0sIFs1LCAxMF0sIFs1LCAxMF0sCiAgICBbNSwgMTBdLCBbNSwgMTBdLCBbNSwgMTBdLCBbNSwgMTBdLAogICAgWzUsIDEwXSwgWzUsIDEwXSwgWzUsIDEwXSwgWzUsIDEwXSwKICAgIFs1LCAxMV0sIFs1LCAxMV0sIFs1LCAxMV0sIFs1LCAxMV0sICAgICAgICAgLy8gMDEwMDB4eHh4CiAgICBbNSwgMTFdLCBbNSwgMTFdLCBbNSwgMTFdLCBbNSwgMTFdLAogICAgWzUsIDExXSwgWzUsIDExXSwgWzUsIDExXSwgWzUsIDExXSwKICAgIFs1LCAxMV0sIFs1LCAxMV0sIFs1LCAxMV0sIFs1LCAxMV0sCiAgICBbNywgMjddLCBbNywgMjddLCBbNywgMjddLCBbNywgMjddLCAgICAgICAgIC8vIDAxMDAxMDB4eAogICAgWzgsIDU5XSwgWzgsIDU5XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwMTAwMTAxMHgKICAgIFs4LCA2MF0sIFs4LCA2MF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMDEwMDEwMTF4CiAgICBbOSwgMTQ3Ml0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAxMDAxMTAwMAogICAgWzksIDE1MzZdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwMTAwMTEwMDEKICAgIFs5LCAxNjAwXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMDEwMDExMDEwCiAgICBbOSwgMTcyOF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAxMDAxMTAxMQogICAgWzcsIDE4XSwgWzcsIDE4XSwgWzcsIDE4XSwgWzcsIDE4XSwgICAgICAgICAvLyAwMTAwMTExeHgKICAgIFs3LCAyNF0sIFs3LCAyNF0sIFs3LCAyNF0sIFs3LCAyNF0sICAgICAgICAgLy8gMDEwMTAwMHh4CiAgICBbOCwgNDldLCBbOCwgNDldLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAxMDEwMDEweAogICAgWzgsIDUwXSwgWzgsIDUwXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwMTAxMDAxMXgKICAgIFs4LCA1MV0sIFs4LCA1MV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMDEwMTAxMDB4CiAgICBbOCwgNTJdLCBbOCwgNTJdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAxMDEwMTAxeAogICAgWzcsIDI1XSwgWzcsIDI1XSwgWzcsIDI1XSwgWzcsIDI1XSwgICAgICAgICAvLyAwMTAxMDExeHgKICAgIFs4LCA1NV0sIFs4LCA1NV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMDEwMTEwMDB4CiAgICBbOCwgNTZdLCBbOCwgNTZdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAxMDExMDAxeAogICAgWzgsIDU3XSwgWzgsIDU3XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwMTAxMTAxMHgKICAgIFs4LCA1OF0sIFs4LCA1OF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMDEwMTEwMTF4CiAgICBbNiwgMTkyXSwgWzYsIDE5Ml0sIFs2LCAxOTJdLCBbNiwgMTkyXSwgICAgIC8vIDAxMDExMXh4eAogICAgWzYsIDE5Ml0sIFs2LCAxOTJdLCBbNiwgMTkyXSwgWzYsIDE5Ml0sCiAgICBbNiwgMTY2NF0sIFs2LCAxNjY0XSwgWzYsIDE2NjRdLCBbNiwgMTY2NF0sIC8vIDAxMTAwMHh4eAogICAgWzYsIDE2NjRdLCBbNiwgMTY2NF0sIFs2LCAxNjY0XSwgWzYsIDE2NjRdLAogICAgWzgsIDQ0OF0sIFs4LCA0NDhdLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwMTEwMDEwMHgKICAgIFs4LCA1MTJdLCBbOCwgNTEyXSwgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMDExMDAxMDF4CiAgICBbOSwgNzA0XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAxMTAwMTEwMAogICAgWzksIDc2OF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwMTEwMDExMDEKICAgIFs4LCA2NDBdLCBbOCwgNjQwXSwgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMDExMDAxMTF4CiAgICBbOCwgNTc2XSwgWzgsIDU3Nl0sICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAxMTAxMDAweAogICAgWzksIDgzMl0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwMTEwMTAwMTAKICAgIFs5LCA4OTZdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMDExMDEwMDExCiAgICBbOSwgOTYwXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAxMTAxMDEwMAogICAgWzksIDEwMjRdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwMTEwMTAxMDEKICAgIFs5LCAxMDg4XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMDExMDEwMTEwCiAgICBbOSwgMTE1Ml0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAxMTAxMDExMQogICAgWzksIDEyMTZdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwMTEwMTEwMDAKICAgIFs5LCAxMjgwXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMDExMDExMDAxCiAgICBbOSwgMTM0NF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAxMTAxMTAxMAogICAgWzksIDE0MDhdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwMTEwMTEwMTEKICAgIFs3LCAyNTZdLCBbNywgMjU2XSwgWzcsIDI1Nl0sIFs3LCAyNTZdLCAgICAgLy8gMDExMDExMXh4CiAgICBbNCwgMl0sIFs0LCAyXSwgWzQsIDJdLCBbNCwgMl0sICAgICAgICAgICAgIC8vIDAxMTF4eHh4eAogICAgWzQsIDJdLCBbNCwgMl0sIFs0LCAyXSwgWzQsIDJdLAogICAgWzQsIDJdLCBbNCwgMl0sIFs0LCAyXSwgWzQsIDJdLAogICAgWzQsIDJdLCBbNCwgMl0sIFs0LCAyXSwgWzQsIDJdLAogICAgWzQsIDJdLCBbNCwgMl0sIFs0LCAyXSwgWzQsIDJdLAogICAgWzQsIDJdLCBbNCwgMl0sIFs0LCAyXSwgWzQsIDJdLAogICAgWzQsIDJdLCBbNCwgMl0sIFs0LCAyXSwgWzQsIDJdLAogICAgWzQsIDJdLCBbNCwgMl0sIFs0LCAyXSwgWzQsIDJdLAogICAgWzQsIDNdLCBbNCwgM10sIFs0LCAzXSwgWzQsIDNdLCAgICAgICAgICAgICAvLyAxMDAweHh4eHgKICAgIFs0LCAzXSwgWzQsIDNdLCBbNCwgM10sIFs0LCAzXSwKICAgIFs0LCAzXSwgWzQsIDNdLCBbNCwgM10sIFs0LCAzXSwKICAgIFs0LCAzXSwgWzQsIDNdLCBbNCwgM10sIFs0LCAzXSwKICAgIFs0LCAzXSwgWzQsIDNdLCBbNCwgM10sIFs0LCAzXSwKICAgIFs0LCAzXSwgWzQsIDNdLCBbNCwgM10sIFs0LCAzXSwKICAgIFs0LCAzXSwgWzQsIDNdLCBbNCwgM10sIFs0LCAzXSwKICAgIFs0LCAzXSwgWzQsIDNdLCBbNCwgM10sIFs0LCAzXSwKICAgIFs1LCAxMjhdLCBbNSwgMTI4XSwgWzUsIDEyOF0sIFs1LCAxMjhdLCAgICAgLy8gMTAwMTB4eHh4CiAgICBbNSwgMTI4XSwgWzUsIDEyOF0sIFs1LCAxMjhdLCBbNSwgMTI4XSwKICAgIFs1LCAxMjhdLCBbNSwgMTI4XSwgWzUsIDEyOF0sIFs1LCAxMjhdLAogICAgWzUsIDEyOF0sIFs1LCAxMjhdLCBbNSwgMTI4XSwgWzUsIDEyOF0sCiAgICBbNSwgOF0sIFs1LCA4XSwgWzUsIDhdLCBbNSwgOF0sICAgICAgICAgICAgIC8vIDEwMDExeHh4eAogICAgWzUsIDhdLCBbNSwgOF0sIFs1LCA4XSwgWzUsIDhdLAogICAgWzUsIDhdLCBbNSwgOF0sIFs1LCA4XSwgWzUsIDhdLAogICAgWzUsIDhdLCBbNSwgOF0sIFs1LCA4XSwgWzUsIDhdLAogICAgWzUsIDldLCBbNSwgOV0sIFs1LCA5XSwgWzUsIDldLCAgICAgICAgICAgICAvLyAxMDEwMHh4eHgKICAgIFs1LCA5XSwgWzUsIDldLCBbNSwgOV0sIFs1LCA5XSwKICAgIFs1LCA5XSwgWzUsIDldLCBbNSwgOV0sIFs1LCA5XSwKICAgIFs1LCA5XSwgWzUsIDldLCBbNSwgOV0sIFs1LCA5XSwKICAgIFs2LCAxNl0sIFs2LCAxNl0sIFs2LCAxNl0sIFs2LCAxNl0sICAgICAgICAgLy8gMTAxMDEweHh4CiAgICBbNiwgMTZdLCBbNiwgMTZdLCBbNiwgMTZdLCBbNiwgMTZdLAogICAgWzYsIDE3XSwgWzYsIDE3XSwgWzYsIDE3XSwgWzYsIDE3XSwgICAgICAgICAvLyAxMDEwMTF4eHgKICAgIFs2LCAxN10sIFs2LCAxN10sIFs2LCAxN10sIFs2LCAxN10sCiAgICBbNCwgNF0sIFs0LCA0XSwgWzQsIDRdLCBbNCwgNF0sICAgICAgICAgICAgIC8vIDEwMTF4eHh4eAogICAgWzQsIDRdLCBbNCwgNF0sIFs0LCA0XSwgWzQsIDRdLAogICAgWzQsIDRdLCBbNCwgNF0sIFs0LCA0XSwgWzQsIDRdLAogICAgWzQsIDRdLCBbNCwgNF0sIFs0LCA0XSwgWzQsIDRdLAogICAgWzQsIDRdLCBbNCwgNF0sIFs0LCA0XSwgWzQsIDRdLAogICAgWzQsIDRdLCBbNCwgNF0sIFs0LCA0XSwgWzQsIDRdLAogICAgWzQsIDRdLCBbNCwgNF0sIFs0LCA0XSwgWzQsIDRdLAogICAgWzQsIDRdLCBbNCwgNF0sIFs0LCA0XSwgWzQsIDRdLAogICAgWzQsIDVdLCBbNCwgNV0sIFs0LCA1XSwgWzQsIDVdLCAgICAgICAgICAgICAvLyAxMTAweHh4eHgKICAgIFs0LCA1XSwgWzQsIDVdLCBbNCwgNV0sIFs0LCA1XSwKICAgIFs0LCA1XSwgWzQsIDVdLCBbNCwgNV0sIFs0LCA1XSwKICAgIFs0LCA1XSwgWzQsIDVdLCBbNCwgNV0sIFs0LCA1XSwKICAgIFs0LCA1XSwgWzQsIDVdLCBbNCwgNV0sIFs0LCA1XSwKICAgIFs0LCA1XSwgWzQsIDVdLCBbNCwgNV0sIFs0LCA1XSwKICAgIFs0LCA1XSwgWzQsIDVdLCBbNCwgNV0sIFs0LCA1XSwKICAgIFs0LCA1XSwgWzQsIDVdLCBbNCwgNV0sIFs0LCA1XSwKICAgIFs2LCAxNF0sIFs2LCAxNF0sIFs2LCAxNF0sIFs2LCAxNF0sICAgICAgICAgLy8gMTEwMTAweHh4CiAgICBbNiwgMTRdLCBbNiwgMTRdLCBbNiwgMTRdLCBbNiwgMTRdLAogICAgWzYsIDE1XSwgWzYsIDE1XSwgWzYsIDE1XSwgWzYsIDE1XSwgICAgICAgICAvLyAxMTAxMDF4eHgKICAgIFs2LCAxNV0sIFs2LCAxNV0sIFs2LCAxNV0sIFs2LCAxNV0sCiAgICBbNSwgNjRdLCBbNSwgNjRdLCBbNSwgNjRdLCBbNSwgNjRdLCAgICAgICAgIC8vIDExMDExeHh4eAogICAgWzUsIDY0XSwgWzUsIDY0XSwgWzUsIDY0XSwgWzUsIDY0XSwKICAgIFs1LCA2NF0sIFs1LCA2NF0sIFs1LCA2NF0sIFs1LCA2NF0sCiAgICBbNSwgNjRdLCBbNSwgNjRdLCBbNSwgNjRdLCBbNSwgNjRdLAogICAgWzQsIDZdLCBbNCwgNl0sIFs0LCA2XSwgWzQsIDZdLCAgICAgICAgICAgICAvLyAxMTEweHh4eHgKICAgIFs0LCA2XSwgWzQsIDZdLCBbNCwgNl0sIFs0LCA2XSwKICAgIFs0LCA2XSwgWzQsIDZdLCBbNCwgNl0sIFs0LCA2XSwKICAgIFs0LCA2XSwgWzQsIDZdLCBbNCwgNl0sIFs0LCA2XSwKICAgIFs0LCA2XSwgWzQsIDZdLCBbNCwgNl0sIFs0LCA2XSwKICAgIFs0LCA2XSwgWzQsIDZdLCBbNCwgNl0sIFs0LCA2XSwKICAgIFs0LCA2XSwgWzQsIDZdLCBbNCwgNl0sIFs0LCA2XSwKICAgIFs0LCA2XSwgWzQsIDZdLCBbNCwgNl0sIFs0LCA2XSwKICAgIFs0LCA3XSwgWzQsIDddLCBbNCwgN10sIFs0LCA3XSwgICAgICAgICAgICAgLy8gMTExMXh4eHh4CiAgICBbNCwgN10sIFs0LCA3XSwgWzQsIDddLCBbNCwgN10sCiAgICBbNCwgN10sIFs0LCA3XSwgWzQsIDddLCBbNCwgN10sCiAgICBbNCwgN10sIFs0LCA3XSwgWzQsIDddLCBbNCwgN10sCiAgICBbNCwgN10sIFs0LCA3XSwgWzQsIDddLCBbNCwgN10sCiAgICBbNCwgN10sIFs0LCA3XSwgWzQsIDddLCBbNCwgN10sCiAgICBbNCwgN10sIFs0LCA3XSwgWzQsIDddLCBbNCwgN10sCiAgICBbNCwgN10sIFs0LCA3XSwgWzQsIDddLCBbNCwgN10KICBdOwoKICB2YXIgYmxhY2tUYWJsZTEgPSBbCiAgICBbLTEsIC0xXSwgWy0xLCAtMV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwMDAwMDAwMDAwMDB4CiAgICBbMTIsIGNjaXR0RU9MXSwgWzEyLCBjY2l0dEVPTF0sICAgICAgICAgICAgICAgICAvLyAwMDAwMDAwMDAwMDF4CiAgICBbLTEsIC0xXSwgWy0xLCAtMV0sIFstMSwgLTFdLCBbLTEsIC0xXSwgICAgICAgICAvLyAwMDAwMDAwMDAwMXh4CiAgICBbLTEsIC0xXSwgWy0xLCAtMV0sIFstMSwgLTFdLCBbLTEsIC0xXSwgICAgICAgICAvLyAwMDAwMDAwMDAxMHh4CiAgICBbLTEsIC0xXSwgWy0xLCAtMV0sIFstMSwgLTFdLCBbLTEsIC0xXSwgICAgICAgICAvLyAwMDAwMDAwMDAxMXh4CiAgICBbLTEsIC0xXSwgWy0xLCAtMV0sIFstMSwgLTFdLCBbLTEsIC0xXSwgICAgICAgICAvLyAwMDAwMDAwMDEwMHh4CiAgICBbLTEsIC0xXSwgWy0xLCAtMV0sIFstMSwgLTFdLCBbLTEsIC0xXSwgICAgICAgICAvLyAwMDAwMDAwMDEwMXh4CiAgICBbLTEsIC0xXSwgWy0xLCAtMV0sIFstMSwgLTFdLCBbLTEsIC0xXSwgICAgICAgICAvLyAwMDAwMDAwMDExMHh4CiAgICBbLTEsIC0xXSwgWy0xLCAtMV0sIFstMSwgLTFdLCBbLTEsIC0xXSwgICAgICAgICAvLyAwMDAwMDAwMDExMXh4CiAgICBbMTEsIDE3OTJdLCBbMTEsIDE3OTJdLCBbMTEsIDE3OTJdLCBbMTEsIDE3OTJdLCAvLyAwMDAwMDAwMTAwMHh4CiAgICBbMTIsIDE5ODRdLCBbMTIsIDE5ODRdLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwMDAwMDAwMTAwMTB4CiAgICBbMTIsIDIwNDhdLCBbMTIsIDIwNDhdLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwMDAwMDAwMTAwMTF4CiAgICBbMTIsIDIxMTJdLCBbMTIsIDIxMTJdLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwMDAwMDAwMTAxMDB4CiAgICBbMTIsIDIxNzZdLCBbMTIsIDIxNzZdLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwMDAwMDAwMTAxMDF4CiAgICBbMTIsIDIyNDBdLCBbMTIsIDIyNDBdLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwMDAwMDAwMTAxMTB4CiAgICBbMTIsIDIzMDRdLCBbMTIsIDIzMDRdLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwMDAwMDAwMTAxMTF4CiAgICBbMTEsIDE4NTZdLCBbMTEsIDE4NTZdLCBbMTEsIDE4NTZdLCBbMTEsIDE4NTZdLCAvLyAwMDAwMDAwMTEwMHh4CiAgICBbMTEsIDE5MjBdLCBbMTEsIDE5MjBdLCBbMTEsIDE5MjBdLCBbMTEsIDE5MjBdLCAvLyAwMDAwMDAwMTEwMXh4CiAgICBbMTIsIDIzNjhdLCBbMTIsIDIzNjhdLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwMDAwMDAwMTExMDB4CiAgICBbMTIsIDI0MzJdLCBbMTIsIDI0MzJdLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwMDAwMDAwMTExMDF4CiAgICBbMTIsIDI0OTZdLCBbMTIsIDI0OTZdLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwMDAwMDAwMTExMTB4CiAgICBbMTIsIDI1NjBdLCBbMTIsIDI1NjBdLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwMDAwMDAwMTExMTF4CiAgICBbMTAsIDE4XSwgWzEwLCAxOF0sIFsxMCwgMThdLCBbMTAsIDE4XSwgICAgICAgICAvLyAwMDAwMDAxMDAweHh4CiAgICBbMTAsIDE4XSwgWzEwLCAxOF0sIFsxMCwgMThdLCBbMTAsIDE4XSwKICAgIFsxMiwgNTJdLCBbMTIsIDUyXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMDEwMDEwMHgKICAgIFsxMywgNjQwXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMDEwMDEwMTAKICAgIFsxMywgNzA0XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMDEwMDEwMTEKICAgIFsxMywgNzY4XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMDEwMDExMDAKICAgIFsxMywgODMyXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMDEwMDExMDEKICAgIFsxMiwgNTVdLCBbMTIsIDU1XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMDEwMDExMXgKICAgIFsxMiwgNTZdLCBbMTIsIDU2XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMDEwMTAwMHgKICAgIFsxMywgMTI4MF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMDEwMTAwMTAKICAgIFsxMywgMTM0NF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMDEwMTAwMTEKICAgIFsxMywgMTQwOF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMDEwMTAxMDAKICAgIFsxMywgMTQ3Ml0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMDEwMTAxMDEKICAgIFsxMiwgNTldLCBbMTIsIDU5XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMDEwMTAxMXgKICAgIFsxMiwgNjBdLCBbMTIsIDYwXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMDEwMTEwMHgKICAgIFsxMywgMTUzNl0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMDEwMTEwMTAKICAgIFsxMywgMTYwMF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMDEwMTEwMTEKICAgIFsxMSwgMjRdLCBbMTEsIDI0XSwgWzExLCAyNF0sIFsxMSwgMjRdLCAgICAgICAgIC8vIDAwMDAwMDEwMTExeHgKICAgIFsxMSwgMjVdLCBbMTEsIDI1XSwgWzExLCAyNV0sIFsxMSwgMjVdLCAgICAgICAgIC8vIDAwMDAwMDExMDAweHgKICAgIFsxMywgMTY2NF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMDExMDAxMDAKICAgIFsxMywgMTcyOF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMDExMDAxMDEKICAgIFsxMiwgMzIwXSwgWzEyLCAzMjBdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMDExMDAxMXgKICAgIFsxMiwgMzg0XSwgWzEyLCAzODRdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMDExMDEwMHgKICAgIFsxMiwgNDQ4XSwgWzEyLCA0NDhdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMDExMDEwMXgKICAgIFsxMywgNTEyXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMDExMDExMDAKICAgIFsxMywgNTc2XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMDExMDExMDEKICAgIFsxMiwgNTNdLCBbMTIsIDUzXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMDExMDExMXgKICAgIFsxMiwgNTRdLCBbMTIsIDU0XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMDExMTAwMHgKICAgIFsxMywgODk2XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMDExMTAwMTAKICAgIFsxMywgOTYwXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMDExMTAwMTEKICAgIFsxMywgMTAyNF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMDExMTAxMDAKICAgIFsxMywgMTA4OF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMDExMTAxMDEKICAgIFsxMywgMTE1Ml0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMDExMTAxMTAKICAgIFsxMywgMTIxNl0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMDExMTAxMTEKICAgIFsxMCwgNjRdLCBbMTAsIDY0XSwgWzEwLCA2NF0sIFsxMCwgNjRdLCAgICAgICAgIC8vIDAwMDAwMDExMTF4eHgKICAgIFsxMCwgNjRdLCBbMTAsIDY0XSwgWzEwLCA2NF0sIFsxMCwgNjRdCiAgXTsKCiAgdmFyIGJsYWNrVGFibGUyID0gWwogICAgWzgsIDEzXSwgWzgsIDEzXSwgWzgsIDEzXSwgWzgsIDEzXSwgICAgIC8vIDAwMDAwMTAweHh4eAogICAgWzgsIDEzXSwgWzgsIDEzXSwgWzgsIDEzXSwgWzgsIDEzXSwKICAgIFs4LCAxM10sIFs4LCAxM10sIFs4LCAxM10sIFs4LCAxM10sCiAgICBbOCwgMTNdLCBbOCwgMTNdLCBbOCwgMTNdLCBbOCwgMTNdLAogICAgWzExLCAyM10sIFsxMSwgMjNdLCAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMTAxMDAweAogICAgWzEyLCA1MF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMTAxMDAxMAogICAgWzEyLCA1MV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMTAxMDAxMQogICAgWzEyLCA0NF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMTAxMDEwMAogICAgWzEyLCA0NV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMTAxMDEwMQogICAgWzEyLCA0Nl0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMTAxMDExMAogICAgWzEyLCA0N10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMTAxMDExMQogICAgWzEyLCA1N10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMTAxMTAwMAogICAgWzEyLCA1OF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMTAxMTAwMQogICAgWzEyLCA2MV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMTAxMTAxMAogICAgWzEyLCAyNTZdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMTAxMTAxMQogICAgWzEwLCAxNl0sIFsxMCwgMTZdLCBbMTAsIDE2XSwgWzEwLCAxNl0sIC8vIDAwMDAwMTAxMTF4eAogICAgWzEwLCAxN10sIFsxMCwgMTddLCBbMTAsIDE3XSwgWzEwLCAxN10sIC8vIDAwMDAwMTEwMDB4eAogICAgWzEyLCA0OF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMTEwMDEwMAogICAgWzEyLCA0OV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMTEwMDEwMQogICAgWzEyLCA2Ml0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMTEwMDExMAogICAgWzEyLCA2M10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMTEwMDExMQogICAgWzEyLCAzMF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMTEwMTAwMAogICAgWzEyLCAzMV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMTEwMTAwMQogICAgWzEyLCAzMl0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMTEwMTAxMAogICAgWzEyLCAzM10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMTEwMTAxMQogICAgWzEyLCA0MF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMTEwMTEwMAogICAgWzEyLCA0MV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMTEwMTEwMQogICAgWzExLCAyMl0sIFsxMSwgMjJdLCAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAwMTEwMTExeAogICAgWzgsIDE0XSwgWzgsIDE0XSwgWzgsIDE0XSwgWzgsIDE0XSwgICAgIC8vIDAwMDAwMTExeHh4eAogICAgWzgsIDE0XSwgWzgsIDE0XSwgWzgsIDE0XSwgWzgsIDE0XSwKICAgIFs4LCAxNF0sIFs4LCAxNF0sIFs4LCAxNF0sIFs4LCAxNF0sCiAgICBbOCwgMTRdLCBbOCwgMTRdLCBbOCwgMTRdLCBbOCwgMTRdLAogICAgWzcsIDEwXSwgWzcsIDEwXSwgWzcsIDEwXSwgWzcsIDEwXSwgICAgIC8vIDAwMDAxMDB4eHh4eAogICAgWzcsIDEwXSwgWzcsIDEwXSwgWzcsIDEwXSwgWzcsIDEwXSwKICAgIFs3LCAxMF0sIFs3LCAxMF0sIFs3LCAxMF0sIFs3LCAxMF0sCiAgICBbNywgMTBdLCBbNywgMTBdLCBbNywgMTBdLCBbNywgMTBdLAogICAgWzcsIDEwXSwgWzcsIDEwXSwgWzcsIDEwXSwgWzcsIDEwXSwKICAgIFs3LCAxMF0sIFs3LCAxMF0sIFs3LCAxMF0sIFs3LCAxMF0sCiAgICBbNywgMTBdLCBbNywgMTBdLCBbNywgMTBdLCBbNywgMTBdLAogICAgWzcsIDEwXSwgWzcsIDEwXSwgWzcsIDEwXSwgWzcsIDEwXSwKICAgIFs3LCAxMV0sIFs3LCAxMV0sIFs3LCAxMV0sIFs3LCAxMV0sICAgICAvLyAwMDAwMTAxeHh4eHgKICAgIFs3LCAxMV0sIFs3LCAxMV0sIFs3LCAxMV0sIFs3LCAxMV0sCiAgICBbNywgMTFdLCBbNywgMTFdLCBbNywgMTFdLCBbNywgMTFdLAogICAgWzcsIDExXSwgWzcsIDExXSwgWzcsIDExXSwgWzcsIDExXSwKICAgIFs3LCAxMV0sIFs3LCAxMV0sIFs3LCAxMV0sIFs3LCAxMV0sCiAgICBbNywgMTFdLCBbNywgMTFdLCBbNywgMTFdLCBbNywgMTFdLAogICAgWzcsIDExXSwgWzcsIDExXSwgWzcsIDExXSwgWzcsIDExXSwKICAgIFs3LCAxMV0sIFs3LCAxMV0sIFs3LCAxMV0sIFs3LCAxMV0sCiAgICBbOSwgMTVdLCBbOSwgMTVdLCBbOSwgMTVdLCBbOSwgMTVdLCAgICAgLy8gMDAwMDExMDAweHh4CiAgICBbOSwgMTVdLCBbOSwgMTVdLCBbOSwgMTVdLCBbOSwgMTVdLAogICAgWzEyLCAxMjhdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAxMTAwMTAwMAogICAgWzEyLCAxOTJdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAxMTAwMTAwMQogICAgWzEyLCAyNl0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAxMTAwMTAxMAogICAgWzEyLCAyN10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAxMTAwMTAxMQogICAgWzEyLCAyOF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAxMTAwMTEwMAogICAgWzEyLCAyOV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAxMTAwMTEwMQogICAgWzExLCAxOV0sIFsxMSwgMTldLCAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAxMTAwMTExeAogICAgWzExLCAyMF0sIFsxMSwgMjBdLCAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAxMTAxMDAweAogICAgWzEyLCAzNF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAxMTAxMDAxMAogICAgWzEyLCAzNV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAxMTAxMDAxMQogICAgWzEyLCAzNl0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAxMTAxMDEwMAogICAgWzEyLCAzN10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAxMTAxMDEwMQogICAgWzEyLCAzOF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAxMTAxMDExMAogICAgWzEyLCAzOV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAxMTAxMDExMQogICAgWzExLCAyMV0sIFsxMSwgMjFdLCAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAxMTAxMTAweAogICAgWzEyLCA0Ml0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAxMTAxMTAxMAogICAgWzEyLCA0M10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAwMDAxMTAxMTAxMQogICAgWzEwLCAwXSwgWzEwLCAwXSwgWzEwLCAwXSwgWzEwLCAwXSwgICAgIC8vIDAwMDAxMTAxMTF4eAogICAgWzcsIDEyXSwgWzcsIDEyXSwgWzcsIDEyXSwgWzcsIDEyXSwgICAgIC8vIDAwMDAxMTF4eHh4eAogICAgWzcsIDEyXSwgWzcsIDEyXSwgWzcsIDEyXSwgWzcsIDEyXSwKICAgIFs3LCAxMl0sIFs3LCAxMl0sIFs3LCAxMl0sIFs3LCAxMl0sCiAgICBbNywgMTJdLCBbNywgMTJdLCBbNywgMTJdLCBbNywgMTJdLAogICAgWzcsIDEyXSwgWzcsIDEyXSwgWzcsIDEyXSwgWzcsIDEyXSwKICAgIFs3LCAxMl0sIFs3LCAxMl0sIFs3LCAxMl0sIFs3LCAxMl0sCiAgICBbNywgMTJdLCBbNywgMTJdLCBbNywgMTJdLCBbNywgMTJdLAogICAgWzcsIDEyXSwgWzcsIDEyXSwgWzcsIDEyXSwgWzcsIDEyXQogIF07CgogIHZhciBibGFja1RhYmxlMyA9IFsKICAgIFstMSwgLTFdLCBbLTEsIC0xXSwgWy0xLCAtMV0sIFstMSwgLTFdLCAvLyAwMDAweHgKICAgIFs2LCA5XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwMDAxMDAKICAgIFs2LCA4XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwMDAxMDEKICAgIFs1LCA3XSwgWzUsIDddLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwMDAxMXgKICAgIFs0LCA2XSwgWzQsIDZdLCBbNCwgNl0sIFs0LCA2XSwgICAgICAgICAvLyAwMDEweHgKICAgIFs0LCA1XSwgWzQsIDVdLCBbNCwgNV0sIFs0LCA1XSwgICAgICAgICAvLyAwMDExeHgKICAgIFszLCAxXSwgWzMsIDFdLCBbMywgMV0sIFszLCAxXSwgICAgICAgICAvLyAwMTB4eHgKICAgIFszLCAxXSwgWzMsIDFdLCBbMywgMV0sIFszLCAxXSwKICAgIFszLCA0XSwgWzMsIDRdLCBbMywgNF0sIFszLCA0XSwgICAgICAgICAvLyAwMTF4eHgKICAgIFszLCA0XSwgWzMsIDRdLCBbMywgNF0sIFszLCA0XSwKICAgIFsyLCAzXSwgWzIsIDNdLCBbMiwgM10sIFsyLCAzXSwgICAgICAgICAvLyAxMHh4eHgKICAgIFsyLCAzXSwgWzIsIDNdLCBbMiwgM10sIFsyLCAzXSwKICAgIFsyLCAzXSwgWzIsIDNdLCBbMiwgM10sIFsyLCAzXSwKICAgIFsyLCAzXSwgWzIsIDNdLCBbMiwgM10sIFsyLCAzXSwKICAgIFsyLCAyXSwgWzIsIDJdLCBbMiwgMl0sIFsyLCAyXSwgICAgICAgICAvLyAxMXh4eHgKICAgIFsyLCAyXSwgWzIsIDJdLCBbMiwgMl0sIFsyLCAyXSwKICAgIFsyLCAyXSwgWzIsIDJdLCBbMiwgMl0sIFsyLCAyXSwKICAgIFsyLCAyXSwgWzIsIDJdLCBbMiwgMl0sIFsyLCAyXQogIF07CgogIGZ1bmN0aW9uIENDSVRURmF4U3RyZWFtKHN0ciwgbWF5YmVMZW5ndGgsIHBhcmFtcykgewogICAgdGhpcy5zdHIgPSBzdHI7CiAgICB0aGlzLmRpY3QgPSBzdHIuZGljdDsKCiAgICBwYXJhbXMgPSBwYXJhbXMgfHwgRGljdC5lbXB0eTsKCiAgICB0aGlzLmVuY29kaW5nID0gcGFyYW1zLmdldCgnSycpIHx8IDA7CiAgICB0aGlzLmVvbGluZSA9IHBhcmFtcy5nZXQoJ0VuZE9mTGluZScpIHx8IGZhbHNlOwogICAgdGhpcy5ieXRlQWxpZ24gPSBwYXJhbXMuZ2V0KCdFbmNvZGVkQnl0ZUFsaWduJykgfHwgZmFsc2U7CiAgICB0aGlzLmNvbHVtbnMgPSBwYXJhbXMuZ2V0KCdDb2x1bW5zJykgfHwgMTcyODsKICAgIHRoaXMucm93cyA9IHBhcmFtcy5nZXQoJ1Jvd3MnKSB8fCAwOwogICAgdmFyIGVvYmxvY2sgPSBwYXJhbXMuZ2V0KCdFbmRPZkJsb2NrJyk7CiAgICBpZiAoZW9ibG9jayA9PT0gbnVsbCB8fCBlb2Jsb2NrID09PSB1bmRlZmluZWQpIHsKICAgICAgZW9ibG9jayA9IHRydWU7CiAgICB9CiAgICB0aGlzLmVvYmxvY2sgPSBlb2Jsb2NrOwogICAgdGhpcy5ibGFjayA9IHBhcmFtcy5nZXQoJ0JsYWNrSXMxJykgfHwgZmFsc2U7CgogICAgdGhpcy5jb2RpbmdMaW5lID0gbmV3IFVpbnQzMkFycmF5KHRoaXMuY29sdW1ucyArIDEpOwogICAgdGhpcy5yZWZMaW5lID0gbmV3IFVpbnQzMkFycmF5KHRoaXMuY29sdW1ucyArIDIpOwoKICAgIHRoaXMuY29kaW5nTGluZVswXSA9IHRoaXMuY29sdW1uczsKICAgIHRoaXMuY29kaW5nUG9zID0gMDsKCiAgICB0aGlzLnJvdyA9IDA7CiAgICB0aGlzLm5leHRMaW5lMkQgPSB0aGlzLmVuY29kaW5nIDwgMDsKICAgIHRoaXMuaW5wdXRCaXRzID0gMDsKICAgIHRoaXMuaW5wdXRCdWYgPSAwOwogICAgdGhpcy5vdXRwdXRCaXRzID0gMDsKCiAgICB2YXIgY29kZTE7CiAgICB3aGlsZSAoKGNvZGUxID0gdGhpcy5sb29rQml0cygxMikpID09PSAwKSB7CiAgICAgIHRoaXMuZWF0Qml0cygxKTsKICAgIH0KICAgIGlmIChjb2RlMSA9PT0gMSkgewogICAgICB0aGlzLmVhdEJpdHMoMTIpOwogICAgfQogICAgaWYgKHRoaXMuZW5jb2RpbmcgPiAwKSB7CiAgICAgIHRoaXMubmV4dExpbmUyRCA9ICF0aGlzLmxvb2tCaXRzKDEpOwogICAgICB0aGlzLmVhdEJpdHMoMSk7CiAgICB9CgogICAgRGVjb2RlU3RyZWFtLmNhbGwodGhpcywgbWF5YmVMZW5ndGgpOwogIH0KCiAgQ0NJVFRGYXhTdHJlYW0ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShEZWNvZGVTdHJlYW0ucHJvdG90eXBlKTsKCiAgQ0NJVFRGYXhTdHJlYW0ucHJvdG90eXBlLnJlYWRCbG9jayA9IGZ1bmN0aW9uIENDSVRURmF4U3RyZWFtX3JlYWRCbG9jaygpIHsKICAgIHdoaWxlICghdGhpcy5lb2YpIHsKICAgICAgdmFyIGMgPSB0aGlzLmxvb2tDaGFyKCk7CiAgICAgIHRoaXMuZW5zdXJlQnVmZmVyKHRoaXMuYnVmZmVyTGVuZ3RoICsgMSk7CiAgICAgIHRoaXMuYnVmZmVyW3RoaXMuYnVmZmVyTGVuZ3RoKytdID0gYzsKICAgIH0KICB9OwoKICBDQ0lUVEZheFN0cmVhbS5wcm90b3R5cGUuYWRkUGl4ZWxzID0KICAgICAgZnVuY3Rpb24gY2NpdHRGYXhTdHJlYW1BZGRQaXhlbHMoYTEsIGJsYWNrUGl4ZWxzKSB7CiAgICB2YXIgY29kaW5nTGluZSA9IHRoaXMuY29kaW5nTGluZTsKICAgIHZhciBjb2RpbmdQb3MgPSB0aGlzLmNvZGluZ1BvczsKCiAgICBpZiAoYTEgPiBjb2RpbmdMaW5lW2NvZGluZ1Bvc10pIHsKICAgICAgaWYgKGExID4gdGhpcy5jb2x1bW5zKSB7CiAgICAgICAgaW5mbygncm93IGlzIHdyb25nIGxlbmd0aCcpOwogICAgICAgIHRoaXMuZXJyID0gdHJ1ZTsKICAgICAgICBhMSA9IHRoaXMuY29sdW1uczsKICAgICAgfQogICAgICBpZiAoKGNvZGluZ1BvcyAmIDEpIF4gYmxhY2tQaXhlbHMpIHsKICAgICAgICArK2NvZGluZ1BvczsKICAgICAgfQoKICAgICAgY29kaW5nTGluZVtjb2RpbmdQb3NdID0gYTE7CiAgICB9CiAgICB0aGlzLmNvZGluZ1BvcyA9IGNvZGluZ1BvczsKICB9OwoKICBDQ0lUVEZheFN0cmVhbS5wcm90b3R5cGUuYWRkUGl4ZWxzTmVnID0KICAgICAgZnVuY3Rpb24gY2NpdHRGYXhTdHJlYW1BZGRQaXhlbHNOZWcoYTEsIGJsYWNrUGl4ZWxzKSB7CiAgICB2YXIgY29kaW5nTGluZSA9IHRoaXMuY29kaW5nTGluZTsKICAgIHZhciBjb2RpbmdQb3MgPSB0aGlzLmNvZGluZ1BvczsKCiAgICBpZiAoYTEgPiBjb2RpbmdMaW5lW2NvZGluZ1Bvc10pIHsKICAgICAgaWYgKGExID4gdGhpcy5jb2x1bW5zKSB7CiAgICAgICAgaW5mbygncm93IGlzIHdyb25nIGxlbmd0aCcpOwogICAgICAgIHRoaXMuZXJyID0gdHJ1ZTsKICAgICAgICBhMSA9IHRoaXMuY29sdW1uczsKICAgICAgfQogICAgICBpZiAoKGNvZGluZ1BvcyAmIDEpIF4gYmxhY2tQaXhlbHMpIHsKICAgICAgICArK2NvZGluZ1BvczsKICAgICAgfQoKICAgICAgY29kaW5nTGluZVtjb2RpbmdQb3NdID0gYTE7CiAgICB9IGVsc2UgaWYgKGExIDwgY29kaW5nTGluZVtjb2RpbmdQb3NdKSB7CiAgICAgIGlmIChhMSA8IDApIHsKICAgICAgICBpbmZvKCdpbnZhbGlkIGNvZGUnKTsKICAgICAgICB0aGlzLmVyciA9IHRydWU7CiAgICAgICAgYTEgPSAwOwogICAgICB9CiAgICAgIHdoaWxlIChjb2RpbmdQb3MgPiAwICYmIGExIDwgY29kaW5nTGluZVtjb2RpbmdQb3MgLSAxXSkgewogICAgICAgIC0tY29kaW5nUG9zOwogICAgICB9CiAgICAgIGNvZGluZ0xpbmVbY29kaW5nUG9zXSA9IGExOwogICAgfQoKICAgIHRoaXMuY29kaW5nUG9zID0gY29kaW5nUG9zOwogIH07CgogIENDSVRURmF4U3RyZWFtLnByb3RvdHlwZS5sb29rQ2hhciA9IGZ1bmN0aW9uIENDSVRURmF4U3RyZWFtX2xvb2tDaGFyKCkgewogICAgdmFyIHJlZkxpbmUgPSB0aGlzLnJlZkxpbmU7CiAgICB2YXIgY29kaW5nTGluZSA9IHRoaXMuY29kaW5nTGluZTsKICAgIHZhciBjb2x1bW5zID0gdGhpcy5jb2x1bW5zOwoKICAgIHZhciByZWZQb3MsIGJsYWNrUGl4ZWxzLCBiaXRzLCBpOwoKICAgIGlmICh0aGlzLm91dHB1dEJpdHMgPT09IDApIHsKICAgICAgaWYgKHRoaXMuZW9mKSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KICAgICAgdGhpcy5lcnIgPSBmYWxzZTsKCiAgICAgIHZhciBjb2RlMSwgY29kZTIsIGNvZGUzOwogICAgICBpZiAodGhpcy5uZXh0TGluZTJEKSB7CiAgICAgICAgZm9yIChpID0gMDsgY29kaW5nTGluZVtpXSA8IGNvbHVtbnM7ICsraSkgewogICAgICAgICAgcmVmTGluZVtpXSA9IGNvZGluZ0xpbmVbaV07CiAgICAgICAgfQogICAgICAgIHJlZkxpbmVbaSsrXSA9IGNvbHVtbnM7CiAgICAgICAgcmVmTGluZVtpXSA9IGNvbHVtbnM7CiAgICAgICAgY29kaW5nTGluZVswXSA9IDA7CiAgICAgICAgdGhpcy5jb2RpbmdQb3MgPSAwOwogICAgICAgIHJlZlBvcyA9IDA7CiAgICAgICAgYmxhY2tQaXhlbHMgPSAwOwoKICAgICAgICB3aGlsZSAoY29kaW5nTGluZVt0aGlzLmNvZGluZ1Bvc10gPCBjb2x1bW5zKSB7CiAgICAgICAgICBjb2RlMSA9IHRoaXMuZ2V0VHdvRGltQ29kZSgpOwogICAgICAgICAgc3dpdGNoIChjb2RlMSkgewogICAgICAgICAgICBjYXNlIHR3b0RpbVBhc3M6CiAgICAgICAgICAgICAgdGhpcy5hZGRQaXhlbHMocmVmTGluZVtyZWZQb3MgKyAxXSwgYmxhY2tQaXhlbHMpOwogICAgICAgICAgICAgIGlmIChyZWZMaW5lW3JlZlBvcyArIDFdIDwgY29sdW1ucykgewogICAgICAgICAgICAgICAgcmVmUG9zICs9IDI7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIHR3b0RpbUhvcml6OgogICAgICAgICAgICAgIGNvZGUxID0gY29kZTIgPSAwOwogICAgICAgICAgICAgIGlmIChibGFja1BpeGVscykgewogICAgICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgICBjb2RlMSArPSAoY29kZTMgPSB0aGlzLmdldEJsYWNrQ29kZSgpKTsKICAgICAgICAgICAgICAgIH0gd2hpbGUgKGNvZGUzID49IDY0KTsKICAgICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICAgY29kZTIgKz0gKGNvZGUzID0gdGhpcy5nZXRXaGl0ZUNvZGUoKSk7CiAgICAgICAgICAgICAgICB9IHdoaWxlIChjb2RlMyA+PSA2NCk7CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICAgY29kZTEgKz0gKGNvZGUzID0gdGhpcy5nZXRXaGl0ZUNvZGUoKSk7CiAgICAgICAgICAgICAgICB9IHdoaWxlIChjb2RlMyA+PSA2NCk7CiAgICAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAgIGNvZGUyICs9IChjb2RlMyA9IHRoaXMuZ2V0QmxhY2tDb2RlKCkpOwogICAgICAgICAgICAgICAgfSB3aGlsZSAoY29kZTMgPj0gNjQpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB0aGlzLmFkZFBpeGVscyhjb2RpbmdMaW5lW3RoaXMuY29kaW5nUG9zXSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTEsIGJsYWNrUGl4ZWxzKTsKICAgICAgICAgICAgICBpZiAoY29kaW5nTGluZVt0aGlzLmNvZGluZ1Bvc10gPCBjb2x1bW5zKSB7CiAgICAgICAgICAgICAgICB0aGlzLmFkZFBpeGVscyhjb2RpbmdMaW5lW3RoaXMuY29kaW5nUG9zXSArIGNvZGUyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tQaXhlbHMgXiAxKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgd2hpbGUgKHJlZkxpbmVbcmVmUG9zXSA8PSBjb2RpbmdMaW5lW3RoaXMuY29kaW5nUG9zXSAmJgogICAgICAgICAgICAgICAgICAgICByZWZMaW5lW3JlZlBvc10gPCBjb2x1bW5zKSB7CiAgICAgICAgICAgICAgICByZWZQb3MgKz0gMjsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgdHdvRGltVmVydFIzOgogICAgICAgICAgICAgIHRoaXMuYWRkUGl4ZWxzKHJlZkxpbmVbcmVmUG9zXSArIDMsIGJsYWNrUGl4ZWxzKTsKICAgICAgICAgICAgICBibGFja1BpeGVscyBePSAxOwogICAgICAgICAgICAgIGlmIChjb2RpbmdMaW5lW3RoaXMuY29kaW5nUG9zXSA8IGNvbHVtbnMpIHsKICAgICAgICAgICAgICAgICsrcmVmUG9zOwogICAgICAgICAgICAgICAgd2hpbGUgKHJlZkxpbmVbcmVmUG9zXSA8PSBjb2RpbmdMaW5lW3RoaXMuY29kaW5nUG9zXSAmJgogICAgICAgICAgICAgICAgICAgICAgIHJlZkxpbmVbcmVmUG9zXSA8IGNvbHVtbnMpIHsKICAgICAgICAgICAgICAgICAgcmVmUG9zICs9IDI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIHR3b0RpbVZlcnRSMjoKICAgICAgICAgICAgICB0aGlzLmFkZFBpeGVscyhyZWZMaW5lW3JlZlBvc10gKyAyLCBibGFja1BpeGVscyk7CiAgICAgICAgICAgICAgYmxhY2tQaXhlbHMgXj0gMTsKICAgICAgICAgICAgICBpZiAoY29kaW5nTGluZVt0aGlzLmNvZGluZ1Bvc10gPCBjb2x1bW5zKSB7CiAgICAgICAgICAgICAgICArK3JlZlBvczsKICAgICAgICAgICAgICAgIHdoaWxlIChyZWZMaW5lW3JlZlBvc10gPD0gY29kaW5nTGluZVt0aGlzLmNvZGluZ1Bvc10gJiYKICAgICAgICAgICAgICAgICAgICAgICByZWZMaW5lW3JlZlBvc10gPCBjb2x1bW5zKSB7CiAgICAgICAgICAgICAgICAgIHJlZlBvcyArPSAyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSB0d29EaW1WZXJ0UjE6CiAgICAgICAgICAgICAgdGhpcy5hZGRQaXhlbHMocmVmTGluZVtyZWZQb3NdICsgMSwgYmxhY2tQaXhlbHMpOwogICAgICAgICAgICAgIGJsYWNrUGl4ZWxzIF49IDE7CiAgICAgICAgICAgICAgaWYgKGNvZGluZ0xpbmVbdGhpcy5jb2RpbmdQb3NdIDwgY29sdW1ucykgewogICAgICAgICAgICAgICAgKytyZWZQb3M7CiAgICAgICAgICAgICAgICB3aGlsZSAocmVmTGluZVtyZWZQb3NdIDw9IGNvZGluZ0xpbmVbdGhpcy5jb2RpbmdQb3NdICYmCiAgICAgICAgICAgICAgICAgICAgICAgcmVmTGluZVtyZWZQb3NdIDwgY29sdW1ucykgewogICAgICAgICAgICAgICAgICByZWZQb3MgKz0gMjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgdHdvRGltVmVydDA6CiAgICAgICAgICAgICAgdGhpcy5hZGRQaXhlbHMocmVmTGluZVtyZWZQb3NdLCBibGFja1BpeGVscyk7CiAgICAgICAgICAgICAgYmxhY2tQaXhlbHMgXj0gMTsKICAgICAgICAgICAgICBpZiAoY29kaW5nTGluZVt0aGlzLmNvZGluZ1Bvc10gPCBjb2x1bW5zKSB7CiAgICAgICAgICAgICAgICArK3JlZlBvczsKICAgICAgICAgICAgICAgIHdoaWxlIChyZWZMaW5lW3JlZlBvc10gPD0gY29kaW5nTGluZVt0aGlzLmNvZGluZ1Bvc10gJiYKICAgICAgICAgICAgICAgICAgICAgICByZWZMaW5lW3JlZlBvc10gPCBjb2x1bW5zKSB7CiAgICAgICAgICAgICAgICAgIHJlZlBvcyArPSAyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSB0d29EaW1WZXJ0TDM6CiAgICAgICAgICAgICAgdGhpcy5hZGRQaXhlbHNOZWcocmVmTGluZVtyZWZQb3NdIC0gMywgYmxhY2tQaXhlbHMpOwogICAgICAgICAgICAgIGJsYWNrUGl4ZWxzIF49IDE7CiAgICAgICAgICAgICAgaWYgKGNvZGluZ0xpbmVbdGhpcy5jb2RpbmdQb3NdIDwgY29sdW1ucykgewogICAgICAgICAgICAgICAgaWYgKHJlZlBvcyA+IDApIHsKICAgICAgICAgICAgICAgICAgLS1yZWZQb3M7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICArK3JlZlBvczsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHdoaWxlIChyZWZMaW5lW3JlZlBvc10gPD0gY29kaW5nTGluZVt0aGlzLmNvZGluZ1Bvc10gJiYKICAgICAgICAgICAgICAgICAgICAgICByZWZMaW5lW3JlZlBvc10gPCBjb2x1bW5zKSB7CiAgICAgICAgICAgICAgICAgIHJlZlBvcyArPSAyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSB0d29EaW1WZXJ0TDI6CiAgICAgICAgICAgICAgdGhpcy5hZGRQaXhlbHNOZWcocmVmTGluZVtyZWZQb3NdIC0gMiwgYmxhY2tQaXhlbHMpOwogICAgICAgICAgICAgIGJsYWNrUGl4ZWxzIF49IDE7CiAgICAgICAgICAgICAgaWYgKGNvZGluZ0xpbmVbdGhpcy5jb2RpbmdQb3NdIDwgY29sdW1ucykgewogICAgICAgICAgICAgICAgaWYgKHJlZlBvcyA+IDApIHsKICAgICAgICAgICAgICAgICAgLS1yZWZQb3M7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICArK3JlZlBvczsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHdoaWxlIChyZWZMaW5lW3JlZlBvc10gPD0gY29kaW5nTGluZVt0aGlzLmNvZGluZ1Bvc10gJiYKICAgICAgICAgICAgICAgICAgICAgICByZWZMaW5lW3JlZlBvc10gPCBjb2x1bW5zKSB7CiAgICAgICAgICAgICAgICAgIHJlZlBvcyArPSAyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSB0d29EaW1WZXJ0TDE6CiAgICAgICAgICAgICAgdGhpcy5hZGRQaXhlbHNOZWcocmVmTGluZVtyZWZQb3NdIC0gMSwgYmxhY2tQaXhlbHMpOwogICAgICAgICAgICAgIGJsYWNrUGl4ZWxzIF49IDE7CiAgICAgICAgICAgICAgaWYgKGNvZGluZ0xpbmVbdGhpcy5jb2RpbmdQb3NdIDwgY29sdW1ucykgewogICAgICAgICAgICAgICAgaWYgKHJlZlBvcyA+IDApIHsKICAgICAgICAgICAgICAgICAgLS1yZWZQb3M7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICArK3JlZlBvczsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHdoaWxlIChyZWZMaW5lW3JlZlBvc10gPD0gY29kaW5nTGluZVt0aGlzLmNvZGluZ1Bvc10gJiYKICAgICAgICAgICAgICAgICAgICAgICByZWZMaW5lW3JlZlBvc10gPCBjb2x1bW5zKSB7CiAgICAgICAgICAgICAgICAgIHJlZlBvcyArPSAyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSBFT0Y6CiAgICAgICAgICAgICAgdGhpcy5hZGRQaXhlbHMoY29sdW1ucywgMCk7CiAgICAgICAgICAgICAgdGhpcy5lb2YgPSB0cnVlOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgIGluZm8oJ2JhZCAyZCBjb2RlJyk7CiAgICAgICAgICAgICAgdGhpcy5hZGRQaXhlbHMoY29sdW1ucywgMCk7CiAgICAgICAgICAgICAgdGhpcy5lcnIgPSB0cnVlOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICBjb2RpbmdMaW5lWzBdID0gMDsKICAgICAgICB0aGlzLmNvZGluZ1BvcyA9IDA7CiAgICAgICAgYmxhY2tQaXhlbHMgPSAwOwogICAgICAgIHdoaWxlIChjb2RpbmdMaW5lW3RoaXMuY29kaW5nUG9zXSA8IGNvbHVtbnMpIHsKICAgICAgICAgIGNvZGUxID0gMDsKICAgICAgICAgIGlmIChibGFja1BpeGVscykgewogICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgY29kZTEgKz0gKGNvZGUzID0gdGhpcy5nZXRCbGFja0NvZGUoKSk7CiAgICAgICAgICAgIH0gd2hpbGUgKGNvZGUzID49IDY0KTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICBjb2RlMSArPSAoY29kZTMgPSB0aGlzLmdldFdoaXRlQ29kZSgpKTsKICAgICAgICAgICAgfSB3aGlsZSAoY29kZTMgPj0gNjQpOwogICAgICAgICAgfQogICAgICAgICAgdGhpcy5hZGRQaXhlbHMoY29kaW5nTGluZVt0aGlzLmNvZGluZ1Bvc10gKyBjb2RlMSwgYmxhY2tQaXhlbHMpOwogICAgICAgICAgYmxhY2tQaXhlbHMgXj0gMTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIHZhciBnb3RFT0wgPSBmYWxzZTsKCiAgICAgIGlmICh0aGlzLmJ5dGVBbGlnbikgewogICAgICAgIHRoaXMuaW5wdXRCaXRzICY9IH43OwogICAgICB9CgogICAgICBpZiAoIXRoaXMuZW9ibG9jayAmJiB0aGlzLnJvdyA9PT0gdGhpcy5yb3dzIC0gMSkgewogICAgICAgIHRoaXMuZW9mID0gdHJ1ZTsKICAgICAgfSBlbHNlIHsKICAgICAgICBjb2RlMSA9IHRoaXMubG9va0JpdHMoMTIpOwogICAgICAgIGlmICh0aGlzLmVvbGluZSkgewogICAgICAgICAgd2hpbGUgKGNvZGUxICE9PSBFT0YgJiYgY29kZTEgIT09IDEpIHsKICAgICAgICAgICAgdGhpcy5lYXRCaXRzKDEpOwogICAgICAgICAgICBjb2RlMSA9IHRoaXMubG9va0JpdHMoMTIpOwogICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB3aGlsZSAoY29kZTEgPT09IDApIHsKICAgICAgICAgICAgdGhpcy5lYXRCaXRzKDEpOwogICAgICAgICAgICBjb2RlMSA9IHRoaXMubG9va0JpdHMoMTIpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoY29kZTEgPT09IDEpIHsKICAgICAgICAgIHRoaXMuZWF0Qml0cygxMik7CiAgICAgICAgICBnb3RFT0wgPSB0cnVlOwogICAgICAgIH0gZWxzZSBpZiAoY29kZTEgPT09IEVPRikgewogICAgICAgICAgdGhpcy5lb2YgPSB0cnVlOwogICAgICAgIH0KICAgICAgfQoKICAgICAgaWYgKCF0aGlzLmVvZiAmJiB0aGlzLmVuY29kaW5nID4gMCkgewogICAgICAgIHRoaXMubmV4dExpbmUyRCA9ICF0aGlzLmxvb2tCaXRzKDEpOwogICAgICAgIHRoaXMuZWF0Qml0cygxKTsKICAgICAgfQoKICAgICAgaWYgKHRoaXMuZW9ibG9jayAmJiBnb3RFT0wgJiYgdGhpcy5ieXRlQWxpZ24pIHsKICAgICAgICBjb2RlMSA9IHRoaXMubG9va0JpdHMoMTIpOwogICAgICAgIGlmIChjb2RlMSA9PT0gMSkgewogICAgICAgICAgdGhpcy5lYXRCaXRzKDEyKTsKICAgICAgICAgIGlmICh0aGlzLmVuY29kaW5nID4gMCkgewogICAgICAgICAgICB0aGlzLmxvb2tCaXRzKDEpOwogICAgICAgICAgICB0aGlzLmVhdEJpdHMoMSk7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAodGhpcy5lbmNvZGluZyA+PSAwKSB7CiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCA0OyArK2kpIHsKICAgICAgICAgICAgICBjb2RlMSA9IHRoaXMubG9va0JpdHMoMTIpOwogICAgICAgICAgICAgIGlmIChjb2RlMSAhPT0gMSkgewogICAgICAgICAgICAgICAgaW5mbygnYmFkIHJ0YyBjb2RlOiAnICsgY29kZTEpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB0aGlzLmVhdEJpdHMoMTIpOwogICAgICAgICAgICAgIGlmICh0aGlzLmVuY29kaW5nID4gMCkgewogICAgICAgICAgICAgICAgdGhpcy5sb29rQml0cygxKTsKICAgICAgICAgICAgICAgIHRoaXMuZWF0Qml0cygxKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIHRoaXMuZW9mID0gdHJ1ZTsKICAgICAgICB9CiAgICAgIH0gZWxzZSBpZiAodGhpcy5lcnIgJiYgdGhpcy5lb2xpbmUpIHsKICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgY29kZTEgPSB0aGlzLmxvb2tCaXRzKDEzKTsKICAgICAgICAgIGlmIChjb2RlMSA9PT0gRU9GKSB7CiAgICAgICAgICAgIHRoaXMuZW9mID0gdHJ1ZTsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoKGNvZGUxID4+IDEpID09PSAxKSB7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQogICAgICAgICAgdGhpcy5lYXRCaXRzKDEpOwogICAgICAgIH0KICAgICAgICB0aGlzLmVhdEJpdHMoMTIpOwogICAgICAgIGlmICh0aGlzLmVuY29kaW5nID4gMCkgewogICAgICAgICAgdGhpcy5lYXRCaXRzKDEpOwogICAgICAgICAgdGhpcy5uZXh0TGluZTJEID0gIShjb2RlMSAmIDEpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgaWYgKGNvZGluZ0xpbmVbMF0gPiAwKSB7CiAgICAgICAgdGhpcy5vdXRwdXRCaXRzID0gY29kaW5nTGluZVt0aGlzLmNvZGluZ1BvcyA9IDBdOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMub3V0cHV0Qml0cyA9IGNvZGluZ0xpbmVbdGhpcy5jb2RpbmdQb3MgPSAxXTsKICAgICAgfQogICAgICB0aGlzLnJvdysrOwogICAgfQoKICAgIHZhciBjOwogICAgaWYgKHRoaXMub3V0cHV0Qml0cyA+PSA4KSB7CiAgICAgIGMgPSAodGhpcy5jb2RpbmdQb3MgJiAxKSA/IDAgOiAweEZGOwogICAgICB0aGlzLm91dHB1dEJpdHMgLT0gODsKICAgICAgaWYgKHRoaXMub3V0cHV0Qml0cyA9PT0gMCAmJiBjb2RpbmdMaW5lW3RoaXMuY29kaW5nUG9zXSA8IGNvbHVtbnMpIHsKICAgICAgICB0aGlzLmNvZGluZ1BvcysrOwogICAgICAgIHRoaXMub3V0cHV0Qml0cyA9IChjb2RpbmdMaW5lW3RoaXMuY29kaW5nUG9zXSAtCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGluZ0xpbmVbdGhpcy5jb2RpbmdQb3MgLSAxXSk7CiAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgIGJpdHMgPSA4OwogICAgICBjID0gMDsKICAgICAgZG8gewogICAgICAgIGlmICh0aGlzLm91dHB1dEJpdHMgPiBiaXRzKSB7CiAgICAgICAgICBjIDw8PSBiaXRzOwogICAgICAgICAgaWYgKCEodGhpcy5jb2RpbmdQb3MgJiAxKSkgewogICAgICAgICAgICBjIHw9IDB4RkYgPj4gKDggLSBiaXRzKTsKICAgICAgICAgIH0KICAgICAgICAgIHRoaXMub3V0cHV0Qml0cyAtPSBiaXRzOwogICAgICAgICAgYml0cyA9IDA7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGMgPDw9IHRoaXMub3V0cHV0Qml0czsKICAgICAgICAgIGlmICghKHRoaXMuY29kaW5nUG9zICYgMSkpIHsKICAgICAgICAgICAgYyB8PSAweEZGID4+ICg4IC0gdGhpcy5vdXRwdXRCaXRzKTsKICAgICAgICAgIH0KICAgICAgICAgIGJpdHMgLT0gdGhpcy5vdXRwdXRCaXRzOwogICAgICAgICAgdGhpcy5vdXRwdXRCaXRzID0gMDsKICAgICAgICAgIGlmIChjb2RpbmdMaW5lW3RoaXMuY29kaW5nUG9zXSA8IGNvbHVtbnMpIHsKICAgICAgICAgICAgdGhpcy5jb2RpbmdQb3MrKzsKICAgICAgICAgICAgdGhpcy5vdXRwdXRCaXRzID0gKGNvZGluZ0xpbmVbdGhpcy5jb2RpbmdQb3NdIC0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGluZ0xpbmVbdGhpcy5jb2RpbmdQb3MgLSAxXSk7CiAgICAgICAgICB9IGVsc2UgaWYgKGJpdHMgPiAwKSB7CiAgICAgICAgICAgIGMgPDw9IGJpdHM7CiAgICAgICAgICAgIGJpdHMgPSAwOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSB3aGlsZSAoYml0cyk7CiAgICB9CiAgICBpZiAodGhpcy5ibGFjaykgewogICAgICBjIF49IDB4RkY7CiAgICB9CiAgICByZXR1cm4gYzsKICB9OwoKICAvLyBUaGlzIGZ1bmN0aW9ucyByZXR1cm5zIHRoZSBjb2RlIGZvdW5kIGZyb20gdGhlIHRhYmxlLgogIC8vIFRoZSBzdGFydCBhbmQgZW5kIHBhcmFtZXRlcnMgc2V0IHRoZSBib3VuZGFyaWVzIGZvciBzZWFyY2hpbmcgdGhlIHRhYmxlLgogIC8vIFRoZSBsaW1pdCBwYXJhbWV0ZXIgaXMgb3B0aW9uYWwuIEZ1bmN0aW9uIHJldHVybnMgYW4gYXJyYXkgd2l0aCB0aHJlZQogIC8vIHZhbHVlcy4gVGhlIGZpcnN0IGFycmF5IGVsZW1lbnQgaW5kaWNhdGVzIHdoZXRoZXIgYSB2YWxpZCBjb2RlIGlzIGJlaW5nCiAgLy8gcmV0dXJuZWQuIFRoZSBzZWNvbmQgYXJyYXkgZWxlbWVudCBpcyB0aGUgYWN0dWFsIGNvZGUuIFRoZSB0aGlyZCBhcnJheQogIC8vIGVsZW1lbnQgaW5kaWNhdGVzIHdoZXRoZXIgRU9GIHdhcyByZWFjaGVkLgogIENDSVRURmF4U3RyZWFtLnByb3RvdHlwZS5maW5kVGFibGVDb2RlID0KICAgICAgZnVuY3Rpb24gY2NpdHRGYXhTdHJlYW1GaW5kVGFibGVDb2RlKHN0YXJ0LCBlbmQsIHRhYmxlLCBsaW1pdCkgewoKICAgIHZhciBsaW1pdFZhbHVlID0gbGltaXQgfHwgMDsKICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8PSBlbmQ7ICsraSkgewogICAgICB2YXIgY29kZSA9IHRoaXMubG9va0JpdHMoaSk7CiAgICAgIGlmIChjb2RlID09PSBFT0YpIHsKICAgICAgICByZXR1cm4gW3RydWUsIDEsIGZhbHNlXTsKICAgICAgfQogICAgICBpZiAoaSA8IGVuZCkgewogICAgICAgIGNvZGUgPDw9IGVuZCAtIGk7CiAgICAgIH0KICAgICAgaWYgKCFsaW1pdFZhbHVlIHx8IGNvZGUgPj0gbGltaXRWYWx1ZSkgewogICAgICAgIHZhciBwID0gdGFibGVbY29kZSAtIGxpbWl0VmFsdWVdOwogICAgICAgIGlmIChwWzBdID09PSBpKSB7CiAgICAgICAgICB0aGlzLmVhdEJpdHMoaSk7CiAgICAgICAgICByZXR1cm4gW3RydWUsIHBbMV0sIHRydWVdOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgcmV0dXJuIFtmYWxzZSwgMCwgZmFsc2VdOwogIH07CgogIENDSVRURmF4U3RyZWFtLnByb3RvdHlwZS5nZXRUd29EaW1Db2RlID0KICAgICAgZnVuY3Rpb24gY2NpdHRGYXhTdHJlYW1HZXRUd29EaW1Db2RlKCkgewoKICAgIHZhciBjb2RlID0gMDsKICAgIHZhciBwOwogICAgaWYgKHRoaXMuZW9ibG9jaykgewogICAgICBjb2RlID0gdGhpcy5sb29rQml0cyg3KTsKICAgICAgcCA9IHR3b0RpbVRhYmxlW2NvZGVdOwogICAgICBpZiAocCAmJiBwWzBdID4gMCkgewogICAgICAgIHRoaXMuZWF0Qml0cyhwWzBdKTsKICAgICAgICByZXR1cm4gcFsxXTsKICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuZmluZFRhYmxlQ29kZSgxLCA3LCB0d29EaW1UYWJsZSk7CiAgICAgIGlmIChyZXN1bHRbMF0gJiYgcmVzdWx0WzJdKSB7CiAgICAgICAgcmV0dXJuIHJlc3VsdFsxXTsKICAgICAgfQogICAgfQogICAgaW5mbygnQmFkIHR3byBkaW0gY29kZScpOwogICAgcmV0dXJuIEVPRjsKICB9OwoKICBDQ0lUVEZheFN0cmVhbS5wcm90b3R5cGUuZ2V0V2hpdGVDb2RlID0KICAgICAgZnVuY3Rpb24gY2NpdHRGYXhTdHJlYW1HZXRXaGl0ZUNvZGUoKSB7CgogICAgdmFyIGNvZGUgPSAwOwogICAgdmFyIHA7CiAgICBpZiAodGhpcy5lb2Jsb2NrKSB7CiAgICAgIGNvZGUgPSB0aGlzLmxvb2tCaXRzKDEyKTsKICAgICAgaWYgKGNvZGUgPT09IEVPRikgewogICAgICAgIHJldHVybiAxOwogICAgICB9CgogICAgICBpZiAoKGNvZGUgPj4gNSkgPT09IDApIHsKICAgICAgICBwID0gd2hpdGVUYWJsZTFbY29kZV07CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcCA9IHdoaXRlVGFibGUyW2NvZGUgPj4gM107CiAgICAgIH0KCiAgICAgIGlmIChwWzBdID4gMCkgewogICAgICAgIHRoaXMuZWF0Qml0cyhwWzBdKTsKICAgICAgICByZXR1cm4gcFsxXTsKICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuZmluZFRhYmxlQ29kZSgxLCA5LCB3aGl0ZVRhYmxlMik7CiAgICAgIGlmIChyZXN1bHRbMF0pIHsKICAgICAgICByZXR1cm4gcmVzdWx0WzFdOwogICAgICB9CgogICAgICByZXN1bHQgPSB0aGlzLmZpbmRUYWJsZUNvZGUoMTEsIDEyLCB3aGl0ZVRhYmxlMSk7CiAgICAgIGlmIChyZXN1bHRbMF0pIHsKICAgICAgICByZXR1cm4gcmVzdWx0WzFdOwogICAgICB9CiAgICB9CiAgICBpbmZvKCdiYWQgd2hpdGUgY29kZScpOwogICAgdGhpcy5lYXRCaXRzKDEpOwogICAgcmV0dXJuIDE7CiAgfTsKCiAgQ0NJVFRGYXhTdHJlYW0ucHJvdG90eXBlLmdldEJsYWNrQ29kZSA9CiAgICAgIGZ1bmN0aW9uIGNjaXR0RmF4U3RyZWFtR2V0QmxhY2tDb2RlKCkgewoKICAgIHZhciBjb2RlLCBwOwogICAgaWYgKHRoaXMuZW9ibG9jaykgewogICAgICBjb2RlID0gdGhpcy5sb29rQml0cygxMyk7CiAgICAgIGlmIChjb2RlID09PSBFT0YpIHsKICAgICAgICByZXR1cm4gMTsKICAgICAgfQogICAgICBpZiAoKGNvZGUgPj4gNykgPT09IDApIHsKICAgICAgICBwID0gYmxhY2tUYWJsZTFbY29kZV07CiAgICAgIH0gZWxzZSBpZiAoKGNvZGUgPj4gOSkgPT09IDAgJiYgKGNvZGUgPj4gNykgIT09IDApIHsKICAgICAgICBwID0gYmxhY2tUYWJsZTJbKGNvZGUgPj4gMSkgLSA2NF07CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcCA9IGJsYWNrVGFibGUzW2NvZGUgPj4gN107CiAgICAgIH0KCiAgICAgIGlmIChwWzBdID4gMCkgewogICAgICAgIHRoaXMuZWF0Qml0cyhwWzBdKTsKICAgICAgICByZXR1cm4gcFsxXTsKICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuZmluZFRhYmxlQ29kZSgyLCA2LCBibGFja1RhYmxlMyk7CiAgICAgIGlmIChyZXN1bHRbMF0pIHsKICAgICAgICByZXR1cm4gcmVzdWx0WzFdOwogICAgICB9CgogICAgICByZXN1bHQgPSB0aGlzLmZpbmRUYWJsZUNvZGUoNywgMTIsIGJsYWNrVGFibGUyLCA2NCk7CiAgICAgIGlmIChyZXN1bHRbMF0pIHsKICAgICAgICByZXR1cm4gcmVzdWx0WzFdOwogICAgICB9CgogICAgICByZXN1bHQgPSB0aGlzLmZpbmRUYWJsZUNvZGUoMTAsIDEzLCBibGFja1RhYmxlMSk7CiAgICAgIGlmIChyZXN1bHRbMF0pIHsKICAgICAgICByZXR1cm4gcmVzdWx0WzFdOwogICAgICB9CiAgICB9CiAgICBpbmZvKCdiYWQgYmxhY2sgY29kZScpOwogICAgdGhpcy5lYXRCaXRzKDEpOwogICAgcmV0dXJuIDE7CiAgfTsKCiAgQ0NJVFRGYXhTdHJlYW0ucHJvdG90eXBlLmxvb2tCaXRzID0gZnVuY3Rpb24gQ0NJVFRGYXhTdHJlYW1fbG9va0JpdHMobikgewogICAgdmFyIGM7CiAgICB3aGlsZSAodGhpcy5pbnB1dEJpdHMgPCBuKSB7CiAgICAgIGlmICgoYyA9IHRoaXMuc3RyLmdldEJ5dGUoKSkgPT09IC0xKSB7CiAgICAgICAgaWYgKHRoaXMuaW5wdXRCaXRzID09PSAwKSB7CiAgICAgICAgICByZXR1cm4gRU9GOwogICAgICAgIH0KICAgICAgICByZXR1cm4gKCh0aGlzLmlucHV0QnVmIDw8IChuIC0gdGhpcy5pbnB1dEJpdHMpKSAmCiAgICAgICAgICAgICAgICAoMHhGRkZGID4+ICgxNiAtIG4pKSk7CiAgICAgIH0KICAgICAgdGhpcy5pbnB1dEJ1ZiA9ICh0aGlzLmlucHV0QnVmIDw8IDgpICsgYzsKICAgICAgdGhpcy5pbnB1dEJpdHMgKz0gODsKICAgIH0KICAgIHJldHVybiAodGhpcy5pbnB1dEJ1ZiA+PiAodGhpcy5pbnB1dEJpdHMgLSBuKSkgJiAoMHhGRkZGID4+ICgxNiAtIG4pKTsKICB9OwoKICBDQ0lUVEZheFN0cmVhbS5wcm90b3R5cGUuZWF0Qml0cyA9IGZ1bmN0aW9uIENDSVRURmF4U3RyZWFtX2VhdEJpdHMobikgewogICAgaWYgKCh0aGlzLmlucHV0Qml0cyAtPSBuKSA8IDApIHsKICAgICAgdGhpcy5pbnB1dEJpdHMgPSAwOwogICAgfQogIH07CgogIHJldHVybiBDQ0lUVEZheFN0cmVhbTsKfSkoKTsKCnZhciBMWldTdHJlYW0gPSAoZnVuY3Rpb24gTFpXU3RyZWFtQ2xvc3VyZSgpIHsKICBmdW5jdGlvbiBMWldTdHJlYW0oc3RyLCBtYXliZUxlbmd0aCwgZWFybHlDaGFuZ2UpIHsKICAgIHRoaXMuc3RyID0gc3RyOwogICAgdGhpcy5kaWN0ID0gc3RyLmRpY3Q7CiAgICB0aGlzLmNhY2hlZERhdGEgPSAwOwogICAgdGhpcy5iaXRzQ2FjaGVkID0gMDsKCiAgICB2YXIgbWF4THp3RGljdGlvbmFyeVNpemUgPSA0MDk2OwogICAgdmFyIGx6d1N0YXRlID0gewogICAgICBlYXJseUNoYW5nZTogZWFybHlDaGFuZ2UsCiAgICAgIGNvZGVMZW5ndGg6IDksCiAgICAgIG5leHRDb2RlOiAyNTgsCiAgICAgIGRpY3Rpb25hcnlWYWx1ZXM6IG5ldyBVaW50OEFycmF5KG1heEx6d0RpY3Rpb25hcnlTaXplKSwKICAgICAgZGljdGlvbmFyeUxlbmd0aHM6IG5ldyBVaW50MTZBcnJheShtYXhMendEaWN0aW9uYXJ5U2l6ZSksCiAgICAgIGRpY3Rpb25hcnlQcmV2Q29kZXM6IG5ldyBVaW50MTZBcnJheShtYXhMendEaWN0aW9uYXJ5U2l6ZSksCiAgICAgIGN1cnJlbnRTZXF1ZW5jZTogbmV3IFVpbnQ4QXJyYXkobWF4THp3RGljdGlvbmFyeVNpemUpLAogICAgICBjdXJyZW50U2VxdWVuY2VMZW5ndGg6IDAKICAgIH07CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI1NjsgKytpKSB7CiAgICAgIGx6d1N0YXRlLmRpY3Rpb25hcnlWYWx1ZXNbaV0gPSBpOwogICAgICBsendTdGF0ZS5kaWN0aW9uYXJ5TGVuZ3Roc1tpXSA9IDE7CiAgICB9CiAgICB0aGlzLmx6d1N0YXRlID0gbHp3U3RhdGU7CgogICAgRGVjb2RlU3RyZWFtLmNhbGwodGhpcywgbWF5YmVMZW5ndGgpOwogIH0KCiAgTFpXU3RyZWFtLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRGVjb2RlU3RyZWFtLnByb3RvdHlwZSk7CgogIExaV1N0cmVhbS5wcm90b3R5cGUucmVhZEJpdHMgPSBmdW5jdGlvbiBMWldTdHJlYW1fcmVhZEJpdHMobikgewogICAgdmFyIGJpdHNDYWNoZWQgPSB0aGlzLmJpdHNDYWNoZWQ7CiAgICB2YXIgY2FjaGVkRGF0YSA9IHRoaXMuY2FjaGVkRGF0YTsKICAgIHdoaWxlIChiaXRzQ2FjaGVkIDwgbikgewogICAgICB2YXIgYyA9IHRoaXMuc3RyLmdldEJ5dGUoKTsKICAgICAgaWYgKGMgPT09IC0xKSB7CiAgICAgICAgdGhpcy5lb2YgPSB0cnVlOwogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CiAgICAgIGNhY2hlZERhdGEgPSAoY2FjaGVkRGF0YSA8PCA4KSB8IGM7CiAgICAgIGJpdHNDYWNoZWQgKz0gODsKICAgIH0KICAgIHRoaXMuYml0c0NhY2hlZCA9IChiaXRzQ2FjaGVkIC09IG4pOwogICAgdGhpcy5jYWNoZWREYXRhID0gY2FjaGVkRGF0YTsKICAgIHRoaXMubGFzdENvZGUgPSBudWxsOwogICAgcmV0dXJuIChjYWNoZWREYXRhID4+PiBiaXRzQ2FjaGVkKSAmICgoMSA8PCBuKSAtIDEpOwogIH07CgogIExaV1N0cmVhbS5wcm90b3R5cGUucmVhZEJsb2NrID0gZnVuY3Rpb24gTFpXU3RyZWFtX3JlYWRCbG9jaygpIHsKICAgIHZhciBibG9ja1NpemUgPSA1MTI7CiAgICB2YXIgZXN0aW1hdGVkRGVjb2RlZFNpemUgPSBibG9ja1NpemUgKiAyLCBkZWNvZGVkU2l6ZURlbHRhID0gYmxvY2tTaXplOwogICAgdmFyIGksIGosIHE7CgogICAgdmFyIGx6d1N0YXRlID0gdGhpcy5sendTdGF0ZTsKICAgIGlmICghbHp3U3RhdGUpIHsKICAgICAgcmV0dXJuOyAvLyBlb2Ygd2FzIGZvdW5kCiAgICB9CgogICAgdmFyIGVhcmx5Q2hhbmdlID0gbHp3U3RhdGUuZWFybHlDaGFuZ2U7CiAgICB2YXIgbmV4dENvZGUgPSBsendTdGF0ZS5uZXh0Q29kZTsKICAgIHZhciBkaWN0aW9uYXJ5VmFsdWVzID0gbHp3U3RhdGUuZGljdGlvbmFyeVZhbHVlczsKICAgIHZhciBkaWN0aW9uYXJ5TGVuZ3RocyA9IGx6d1N0YXRlLmRpY3Rpb25hcnlMZW5ndGhzOwogICAgdmFyIGRpY3Rpb25hcnlQcmV2Q29kZXMgPSBsendTdGF0ZS5kaWN0aW9uYXJ5UHJldkNvZGVzOwogICAgdmFyIGNvZGVMZW5ndGggPSBsendTdGF0ZS5jb2RlTGVuZ3RoOwogICAgdmFyIHByZXZDb2RlID0gbHp3U3RhdGUucHJldkNvZGU7CiAgICB2YXIgY3VycmVudFNlcXVlbmNlID0gbHp3U3RhdGUuY3VycmVudFNlcXVlbmNlOwogICAgdmFyIGN1cnJlbnRTZXF1ZW5jZUxlbmd0aCA9IGx6d1N0YXRlLmN1cnJlbnRTZXF1ZW5jZUxlbmd0aDsKCiAgICB2YXIgZGVjb2RlZExlbmd0aCA9IDA7CiAgICB2YXIgY3VycmVudEJ1ZmZlckxlbmd0aCA9IHRoaXMuYnVmZmVyTGVuZ3RoOwogICAgdmFyIGJ1ZmZlciA9IHRoaXMuZW5zdXJlQnVmZmVyKHRoaXMuYnVmZmVyTGVuZ3RoICsgZXN0aW1hdGVkRGVjb2RlZFNpemUpOwoKICAgIGZvciAoaSA9IDA7IGkgPCBibG9ja1NpemU7IGkrKykgewogICAgICB2YXIgY29kZSA9IHRoaXMucmVhZEJpdHMoY29kZUxlbmd0aCk7CiAgICAgIHZhciBoYXNQcmV2ID0gY3VycmVudFNlcXVlbmNlTGVuZ3RoID4gMDsKICAgICAgaWYgKGNvZGUgPCAyNTYpIHsKICAgICAgICBjdXJyZW50U2VxdWVuY2VbMF0gPSBjb2RlOwogICAgICAgIGN1cnJlbnRTZXF1ZW5jZUxlbmd0aCA9IDE7CiAgICAgIH0gZWxzZSBpZiAoY29kZSA+PSAyNTgpIHsKICAgICAgICBpZiAoY29kZSA8IG5leHRDb2RlKSB7CiAgICAgICAgICBjdXJyZW50U2VxdWVuY2VMZW5ndGggPSBkaWN0aW9uYXJ5TGVuZ3Roc1tjb2RlXTsKICAgICAgICAgIGZvciAoaiA9IGN1cnJlbnRTZXF1ZW5jZUxlbmd0aCAtIDEsIHEgPSBjb2RlOyBqID49IDA7IGotLSkgewogICAgICAgICAgICBjdXJyZW50U2VxdWVuY2Vbal0gPSBkaWN0aW9uYXJ5VmFsdWVzW3FdOwogICAgICAgICAgICBxID0gZGljdGlvbmFyeVByZXZDb2Rlc1txXTsKICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgY3VycmVudFNlcXVlbmNlW2N1cnJlbnRTZXF1ZW5jZUxlbmd0aCsrXSA9IGN1cnJlbnRTZXF1ZW5jZVswXTsKICAgICAgICB9CiAgICAgIH0gZWxzZSBpZiAoY29kZSA9PT0gMjU2KSB7CiAgICAgICAgY29kZUxlbmd0aCA9IDk7CiAgICAgICAgbmV4dENvZGUgPSAyNTg7CiAgICAgICAgY3VycmVudFNlcXVlbmNlTGVuZ3RoID0gMDsKICAgICAgICBjb250aW51ZTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLmVvZiA9IHRydWU7CiAgICAgICAgZGVsZXRlIHRoaXMubHp3U3RhdGU7CiAgICAgICAgYnJlYWs7CiAgICAgIH0KCiAgICAgIGlmIChoYXNQcmV2KSB7CiAgICAgICAgZGljdGlvbmFyeVByZXZDb2Rlc1tuZXh0Q29kZV0gPSBwcmV2Q29kZTsKICAgICAgICBkaWN0aW9uYXJ5TGVuZ3Roc1tuZXh0Q29kZV0gPSBkaWN0aW9uYXJ5TGVuZ3Roc1twcmV2Q29kZV0gKyAxOwogICAgICAgIGRpY3Rpb25hcnlWYWx1ZXNbbmV4dENvZGVdID0gY3VycmVudFNlcXVlbmNlWzBdOwogICAgICAgIG5leHRDb2RlKys7CiAgICAgICAgY29kZUxlbmd0aCA9IChuZXh0Q29kZSArIGVhcmx5Q2hhbmdlKSAmIChuZXh0Q29kZSArIGVhcmx5Q2hhbmdlIC0gMSkgPwogICAgICAgICAgY29kZUxlbmd0aCA6IE1hdGgubWluKE1hdGgubG9nKG5leHRDb2RlICsgZWFybHlDaGFuZ2UpIC8KICAgICAgICAgIDAuNjkzMTQ3MTgwNTU5OTQ1MyArIDEsIDEyKSB8IDA7CiAgICAgIH0KICAgICAgcHJldkNvZGUgPSBjb2RlOwoKICAgICAgZGVjb2RlZExlbmd0aCArPSBjdXJyZW50U2VxdWVuY2VMZW5ndGg7CiAgICAgIGlmIChlc3RpbWF0ZWREZWNvZGVkU2l6ZSA8IGRlY29kZWRMZW5ndGgpIHsKICAgICAgICBkbyB7CiAgICAgICAgICBlc3RpbWF0ZWREZWNvZGVkU2l6ZSArPSBkZWNvZGVkU2l6ZURlbHRhOwogICAgICAgIH0gd2hpbGUgKGVzdGltYXRlZERlY29kZWRTaXplIDwgZGVjb2RlZExlbmd0aCk7CiAgICAgICAgYnVmZmVyID0gdGhpcy5lbnN1cmVCdWZmZXIodGhpcy5idWZmZXJMZW5ndGggKyBlc3RpbWF0ZWREZWNvZGVkU2l6ZSk7CiAgICAgIH0KICAgICAgZm9yIChqID0gMDsgaiA8IGN1cnJlbnRTZXF1ZW5jZUxlbmd0aDsgaisrKSB7CiAgICAgICAgYnVmZmVyW2N1cnJlbnRCdWZmZXJMZW5ndGgrK10gPSBjdXJyZW50U2VxdWVuY2Vbal07CiAgICAgIH0KICAgIH0KICAgIGx6d1N0YXRlLm5leHRDb2RlID0gbmV4dENvZGU7CiAgICBsendTdGF0ZS5jb2RlTGVuZ3RoID0gY29kZUxlbmd0aDsKICAgIGx6d1N0YXRlLnByZXZDb2RlID0gcHJldkNvZGU7CiAgICBsendTdGF0ZS5jdXJyZW50U2VxdWVuY2VMZW5ndGggPSBjdXJyZW50U2VxdWVuY2VMZW5ndGg7CgogICAgdGhpcy5idWZmZXJMZW5ndGggPSBjdXJyZW50QnVmZmVyTGVuZ3RoOwogIH07CgogIHJldHVybiBMWldTdHJlYW07Cn0pKCk7Cgp2YXIgTnVsbFN0cmVhbSA9IChmdW5jdGlvbiBOdWxsU3RyZWFtQ2xvc3VyZSgpIHsKICBmdW5jdGlvbiBOdWxsU3RyZWFtKCkgewogICAgU3RyZWFtLmNhbGwodGhpcywgbmV3IFVpbnQ4QXJyYXkoMCkpOwogIH0KCiAgTnVsbFN0cmVhbS5wcm90b3R5cGUgPSBTdHJlYW0ucHJvdG90eXBlOwoKICByZXR1cm4gTnVsbFN0cmVhbTsKfSkoKTsKCgp2YXIgV29ya2VyTWVzc2FnZUhhbmRsZXIgPSBQREZKUy5Xb3JrZXJNZXNzYWdlSGFuZGxlciA9IHsKICBzZXR1cDogZnVuY3Rpb24gd3BoU2V0dXAoaGFuZGxlcikgewogICAgdmFyIHBkZk1hbmFnZXI7CgogICAgZnVuY3Rpb24gbG9hZERvY3VtZW50KHJlY292ZXJ5TW9kZSkgewogICAgICB2YXIgbG9hZERvY3VtZW50Q2FwYWJpbGl0eSA9IGNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KCk7CgogICAgICB2YXIgcGFyc2VTdWNjZXNzID0gZnVuY3Rpb24gcGFyc2VTdWNjZXNzKCkgewogICAgICAgIHZhciBudW1QYWdlc1Byb21pc2UgPSBwZGZNYW5hZ2VyLmVuc3VyZURvYygnbnVtUGFnZXMnKTsKICAgICAgICB2YXIgZmluZ2VycHJpbnRQcm9taXNlID0gcGRmTWFuYWdlci5lbnN1cmVEb2MoJ2ZpbmdlcnByaW50Jyk7CiAgICAgICAgdmFyIGVuY3J5cHRlZFByb21pc2UgPSBwZGZNYW5hZ2VyLmVuc3VyZVhSZWYoJ2VuY3J5cHQnKTsKICAgICAgICBQcm9taXNlLmFsbChbbnVtUGFnZXNQcm9taXNlLCBmaW5nZXJwcmludFByb21pc2UsCiAgICAgICAgICAgICAgICAgICAgIGVuY3J5cHRlZFByb21pc2VdKS50aGVuKGZ1bmN0aW9uIG9uRG9jUmVhZHkocmVzdWx0cykgewogICAgICAgICAgdmFyIGRvYyA9IHsKICAgICAgICAgICAgbnVtUGFnZXM6IHJlc3VsdHNbMF0sCiAgICAgICAgICAgIGZpbmdlcnByaW50OiByZXN1bHRzWzFdLAogICAgICAgICAgICBlbmNyeXB0ZWQ6ICEhcmVzdWx0c1syXSwKICAgICAgICAgIH07CiAgICAgICAgICBsb2FkRG9jdW1lbnRDYXBhYmlsaXR5LnJlc29sdmUoZG9jKTsKICAgICAgICB9LAogICAgICAgIHBhcnNlRmFpbHVyZSk7CiAgICAgIH07CgogICAgICB2YXIgcGFyc2VGYWlsdXJlID0gZnVuY3Rpb24gcGFyc2VGYWlsdXJlKGUpIHsKICAgICAgICBsb2FkRG9jdW1lbnRDYXBhYmlsaXR5LnJlamVjdChlKTsKICAgICAgfTsKCiAgICAgIHBkZk1hbmFnZXIuZW5zdXJlRG9jKCdjaGVja0hlYWRlcicsIFtdKS50aGVuKGZ1bmN0aW9uKCkgewogICAgICAgIHBkZk1hbmFnZXIuZW5zdXJlRG9jKCdwYXJzZVN0YXJ0WFJlZicsIFtdKS50aGVuKGZ1bmN0aW9uKCkgewogICAgICAgICAgcGRmTWFuYWdlci5lbnN1cmVEb2MoJ3BhcnNlJywgW3JlY292ZXJ5TW9kZV0pLnRoZW4oCiAgICAgICAgICAgIHBhcnNlU3VjY2VzcywgcGFyc2VGYWlsdXJlKTsKICAgICAgICB9LCBwYXJzZUZhaWx1cmUpOwogICAgICB9LCBwYXJzZUZhaWx1cmUpOwoKICAgICAgcmV0dXJuIGxvYWREb2N1bWVudENhcGFiaWxpdHkucHJvbWlzZTsKICAgIH0KCiAgICBmdW5jdGlvbiBnZXRQZGZNYW5hZ2VyKGRhdGEpIHsKICAgICAgdmFyIHBkZk1hbmFnZXJDYXBhYmlsaXR5ID0gY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkoKTsKCiAgICAgIHZhciBzb3VyY2UgPSBkYXRhLnNvdXJjZTsKICAgICAgdmFyIGRpc2FibGVSYW5nZSA9IGRhdGEuZGlzYWJsZVJhbmdlOwogICAgICBpZiAoc291cmNlLmRhdGEpIHsKICAgICAgICB0cnkgewogICAgICAgICAgcGRmTWFuYWdlciA9IG5ldyBMb2NhbFBkZk1hbmFnZXIoc291cmNlLmRhdGEsIHNvdXJjZS5wYXNzd29yZCk7CiAgICAgICAgICBwZGZNYW5hZ2VyQ2FwYWJpbGl0eS5yZXNvbHZlKCk7CiAgICAgICAgfSBjYXRjaCAoZXgpIHsKICAgICAgICAgIHBkZk1hbmFnZXJDYXBhYmlsaXR5LnJlamVjdChleCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBwZGZNYW5hZ2VyQ2FwYWJpbGl0eS5wcm9taXNlOwogICAgICB9IGVsc2UgaWYgKHNvdXJjZS5jaHVua2VkVmlld2VyTG9hZGluZykgewogICAgICAgIHRyeSB7CiAgICAgICAgICBwZGZNYW5hZ2VyID0gbmV3IE5ldHdvcmtQZGZNYW5hZ2VyKHNvdXJjZSwgaGFuZGxlcik7CiAgICAgICAgICBwZGZNYW5hZ2VyQ2FwYWJpbGl0eS5yZXNvbHZlKCk7CiAgICAgICAgfSBjYXRjaCAoZXgpIHsKICAgICAgICAgIHBkZk1hbmFnZXJDYXBhYmlsaXR5LnJlamVjdChleCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBwZGZNYW5hZ2VyQ2FwYWJpbGl0eS5wcm9taXNlOwogICAgICB9CgogICAgICB2YXIgbmV0d29ya01hbmFnZXIgPSBuZXcgTmV0d29ya01hbmFnZXIoc291cmNlLnVybCwgewogICAgICAgIGh0dHBIZWFkZXJzOiBzb3VyY2UuaHR0cEhlYWRlcnMsCiAgICAgICAgd2l0aENyZWRlbnRpYWxzOiBzb3VyY2Uud2l0aENyZWRlbnRpYWxzCiAgICAgIH0pOwogICAgICB2YXIgY2FjaGVkQ2h1bmtzID0gW107CiAgICAgIHZhciBmdWxsUmVxdWVzdFhocklkID0gbmV0d29ya01hbmFnZXIucmVxdWVzdEZ1bGwoewogICAgICAgIG9uSGVhZGVyc1JlY2VpdmVkOiBmdW5jdGlvbiBvbkhlYWRlcnNSZWNlaXZlZCgpIHsKICAgICAgICAgIGlmIChkaXNhYmxlUmFuZ2UpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgfQoKICAgICAgICAgIHZhciBmdWxsUmVxdWVzdFhociA9IG5ldHdvcmtNYW5hZ2VyLmdldFJlcXVlc3RYaHIoZnVsbFJlcXVlc3RYaHJJZCk7CiAgICAgICAgICBpZiAoZnVsbFJlcXVlc3RYaHIuZ2V0UmVzcG9uc2VIZWFkZXIoJ0FjY2VwdC1SYW5nZXMnKSAhPT0gJ2J5dGVzJykgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9CgogICAgICAgICAgdmFyIGNvbnRlbnRFbmNvZGluZyA9CiAgICAgICAgICAgIGZ1bGxSZXF1ZXN0WGhyLmdldFJlc3BvbnNlSGVhZGVyKCdDb250ZW50LUVuY29kaW5nJykgfHwgJ2lkZW50aXR5JzsKICAgICAgICAgIGlmIChjb250ZW50RW5jb2RpbmcgIT09ICdpZGVudGl0eScpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgfQoKICAgICAgICAgIHZhciBsZW5ndGggPSBmdWxsUmVxdWVzdFhoci5nZXRSZXNwb25zZUhlYWRlcignQ29udGVudC1MZW5ndGgnKTsKICAgICAgICAgIGxlbmd0aCA9IHBhcnNlSW50KGxlbmd0aCwgMTApOwogICAgICAgICAgaWYgKCFpc0ludChsZW5ndGgpKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0KICAgICAgICAgIHNvdXJjZS5sZW5ndGggPSBsZW5ndGg7CiAgICAgICAgICBpZiAobGVuZ3RoIDw9IDIgKiBSQU5HRV9DSFVOS19TSVpFKSB7CiAgICAgICAgICAgIC8vIFRoZSBmaWxlIHNpemUgaXMgc21hbGxlciB0aGFuIHRoZSBzaXplIG9mIHR3byBjaHVua3MsIHNvIGl0IGRvZXMKICAgICAgICAgICAgLy8gbm90IG1ha2UgYW55IHNlbnNlIHRvIGFib3J0IHRoZSByZXF1ZXN0IGFuZCByZXRyeSB3aXRoIGEgcmFuZ2UKICAgICAgICAgICAgLy8gcmVxdWVzdC4KICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgfQoKICAgICAgICAgIGlmIChuZXR3b3JrTWFuYWdlci5pc1N0cmVhbWluZ1JlcXVlc3QoZnVsbFJlcXVlc3RYaHJJZCkpIHsKICAgICAgICAgICAgLy8gV2UgY2FuIGNvbnRpbnVlIGZldGNoaW5nIHdoZW4gcHJvZ3Jlc3NpdmUgbG9hZGluZyBpcyBlbmFibGVkLAogICAgICAgICAgICAvLyBhbmQgd2UgZG9uJ3QgbmVlZCB0aGUgYXV0b0ZldGNoIGZlYXR1cmUuCiAgICAgICAgICAgIHNvdXJjZS5kaXNhYmxlQXV0b0ZldGNoID0gdHJ1ZTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIE5PVEU6IGJ5IGNhbmNlbGxpbmcgdGhlIGZ1bGwgcmVxdWVzdCwgYW5kIHRoZW4gaXNzdWluZyByYW5nZQogICAgICAgICAgICAvLyByZXF1ZXN0cywgdGhlcmUgd2lsbCBiZSBhbiBpc3N1ZSBmb3Igc2l0ZXMgd2hlcmUgeW91IGNhbiBvbmx5CiAgICAgICAgICAgIC8vIHJlcXVlc3QgdGhlIHBkZiBvbmNlLiBIb3dldmVyLCBpZiB0aGlzIGlzIHRoZSBjYXNlLCB0aGVuIHRoZQogICAgICAgICAgICAvLyBzZXJ2ZXIgc2hvdWxkIG5vdCBiZSByZXR1cm5pbmcgdGhhdCBpdCBjYW4gc3VwcG9ydCByYW5nZQogICAgICAgICAgICAvLyByZXF1ZXN0cy4KICAgICAgICAgICAgbmV0d29ya01hbmFnZXIuYWJvcnRSZXF1ZXN0KGZ1bGxSZXF1ZXN0WGhySWQpOwogICAgICAgICAgfQoKICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgIHBkZk1hbmFnZXIgPSBuZXcgTmV0d29ya1BkZk1hbmFnZXIoc291cmNlLCBoYW5kbGVyKTsKICAgICAgICAgICAgcGRmTWFuYWdlckNhcGFiaWxpdHkucmVzb2x2ZShwZGZNYW5hZ2VyKTsKICAgICAgICAgIH0gY2F0Y2ggKGV4KSB7CiAgICAgICAgICAgIHBkZk1hbmFnZXJDYXBhYmlsaXR5LnJlamVjdChleCk7CiAgICAgICAgICB9CiAgICAgICAgfSwKCiAgICAgICAgb25Qcm9ncmVzc2l2ZURhdGE6IHNvdXJjZS5kaXNhYmxlU3RyZWFtID8gbnVsbCA6CiAgICAgICAgICAgIGZ1bmN0aW9uIG9uUHJvZ3Jlc3NpdmVEYXRhKGNodW5rKSB7CiAgICAgICAgICBpZiAoIXBkZk1hbmFnZXIpIHsKICAgICAgICAgICAgY2FjaGVkQ2h1bmtzLnB1c2goY2h1bmspOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9CiAgICAgICAgICBwZGZNYW5hZ2VyLnNlbmRQcm9ncmVzc2l2ZURhdGEoY2h1bmspOwogICAgICAgIH0sCgogICAgICAgIG9uRG9uZTogZnVuY3Rpb24gb25Eb25lKGFyZ3MpIHsKICAgICAgICAgIGlmIChwZGZNYW5hZ2VyKSB7CiAgICAgICAgICAgIHJldHVybjsgLy8gYWxyZWFkeSBwcm9jZXNzZWQKICAgICAgICAgIH0KCiAgICAgICAgICB2YXIgcGRmRmlsZTsKICAgICAgICAgIGlmIChhcmdzID09PSBudWxsKSB7CiAgICAgICAgICAgIC8vIFRPRE8gYWRkIHNvbWUgc3RyZWFtaW5nIG1hbmFnZXIsIGUuZy4gZm9yIHVua25vd24gbGVuZ3RoIGZpbGVzLgogICAgICAgICAgICAvLyBUaGUgZGF0YSB3YXMgcmV0dXJuZWQgaW4gdGhlIG9uUHJvZ3Jlc3NpdmVEYXRhLCBjb21iaW5pbmcuLi4KICAgICAgICAgICAgdmFyIHBkZkZpbGVMZW5ndGggPSAwLCBwb3MgPSAwOwogICAgICAgICAgICBjYWNoZWRDaHVua3MuZm9yRWFjaChmdW5jdGlvbiAoY2h1bmspIHsKICAgICAgICAgICAgICBwZGZGaWxlTGVuZ3RoICs9IGNodW5rLmJ5dGVMZW5ndGg7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBpZiAoc291cmNlLmxlbmd0aCAmJiBwZGZGaWxlTGVuZ3RoICE9PSBzb3VyY2UubGVuZ3RoKSB7CiAgICAgICAgICAgICAgd2FybigncmVwb3J0ZWQgSFRUUCBsZW5ndGggaXMgZGlmZmVyZW50IGZyb20gYWN0dWFsJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIHBkZkZpbGVBcnJheSA9IG5ldyBVaW50OEFycmF5KHBkZkZpbGVMZW5ndGgpOwogICAgICAgICAgICBjYWNoZWRDaHVua3MuZm9yRWFjaChmdW5jdGlvbiAoY2h1bmspIHsKICAgICAgICAgICAgICBwZGZGaWxlQXJyYXkuc2V0KG5ldyBVaW50OEFycmF5KGNodW5rKSwgcG9zKTsKICAgICAgICAgICAgICBwb3MgKz0gY2h1bmsuYnl0ZUxlbmd0aDsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHBkZkZpbGUgPSBwZGZGaWxlQXJyYXkuYnVmZmVyOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcGRmRmlsZSA9IGFyZ3MuY2h1bms7CiAgICAgICAgICB9CgogICAgICAgICAgLy8gdGhlIGRhdGEgaXMgYXJyYXksIGluc3RhbnRpYXRpbmcgZGlyZWN0bHkgZnJvbSBpdAogICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgcGRmTWFuYWdlciA9IG5ldyBMb2NhbFBkZk1hbmFnZXIocGRmRmlsZSwgc291cmNlLnBhc3N3b3JkKTsKICAgICAgICAgICAgcGRmTWFuYWdlckNhcGFiaWxpdHkucmVzb2x2ZSgpOwogICAgICAgICAgfSBjYXRjaCAoZXgpIHsKICAgICAgICAgICAgcGRmTWFuYWdlckNhcGFiaWxpdHkucmVqZWN0KGV4KTsKICAgICAgICAgIH0KICAgICAgICB9LAoKICAgICAgICBvbkVycm9yOiBmdW5jdGlvbiBvbkVycm9yKHN0YXR1cykgewogICAgICAgICAgdmFyIGV4Y2VwdGlvbjsKICAgICAgICAgIGlmIChzdGF0dXMgPT09IDQwNCkgewogICAgICAgICAgICBleGNlcHRpb24gPSBuZXcgTWlzc2luZ1BERkV4Y2VwdGlvbignTWlzc2luZyBQREYgIicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UudXJsICsgJyIuJyk7CiAgICAgICAgICAgIGhhbmRsZXIuc2VuZCgnTWlzc2luZ1BERicsIGV4Y2VwdGlvbik7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBleGNlcHRpb24gPSBuZXcgVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uKAogICAgICAgICAgICAgICdVbmV4cGVjdGVkIHNlcnZlciByZXNwb25zZSAoJyArIHN0YXR1cyArCiAgICAgICAgICAgICAgJykgd2hpbGUgcmV0cmlldmluZyBQREYgIicgKyBzb3VyY2UudXJsICsgJyIuJywgc3RhdHVzKTsKICAgICAgICAgICAgaGFuZGxlci5zZW5kKCdVbmV4cGVjdGVkUmVzcG9uc2UnLCBleGNlcHRpb24pOwogICAgICAgICAgfQogICAgICAgIH0sCgogICAgICAgIG9uUHJvZ3Jlc3M6IGZ1bmN0aW9uIG9uUHJvZ3Jlc3MoZXZ0KSB7CiAgICAgICAgICBoYW5kbGVyLnNlbmQoJ0RvY1Byb2dyZXNzJywgewogICAgICAgICAgICBsb2FkZWQ6IGV2dC5sb2FkZWQsCiAgICAgICAgICAgIHRvdGFsOiBldnQubGVuZ3RoQ29tcHV0YWJsZSA/IGV2dC50b3RhbCA6IHNvdXJjZS5sZW5ndGgKICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgfSk7CgogICAgICByZXR1cm4gcGRmTWFuYWdlckNhcGFiaWxpdHkucHJvbWlzZTsKICAgIH0KCiAgICBoYW5kbGVyLm9uKCd0ZXN0JywgZnVuY3Rpb24gd3BoU2V0dXBUZXN0KGRhdGEpIHsKICAgICAgLy8gY2hlY2sgaWYgVWludDhBcnJheSBjYW4gYmUgc2VudCB0byB3b3JrZXIKICAgICAgaWYgKCEoZGF0YSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKSB7CiAgICAgICAgaGFuZGxlci5zZW5kKCd0ZXN0JywgZmFsc2UpOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICAvLyBtYWtpbmcgc3VyZSBwb3N0TWVzc2FnZSB0cmFuc2ZlcnMgYXJlIHdvcmtpbmcKICAgICAgdmFyIHN1cHBvcnRUcmFuc2ZlcnMgPSBkYXRhWzBdID09PSAyNTU7CiAgICAgIGhhbmRsZXIucG9zdE1lc3NhZ2VUcmFuc2ZlcnMgPSBzdXBwb3J0VHJhbnNmZXJzOwogICAgICAvLyBjaGVjayBpZiB0aGUgcmVzcG9uc2UgcHJvcGVydHkgaXMgc3VwcG9ydGVkIGJ5IHhocgogICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiAgICAgIHZhciByZXNwb25zZUV4aXN0cyA9ICdyZXNwb25zZScgaW4geGhyOwogICAgICAvLyBjaGVjayBpZiB0aGUgcHJvcGVydHkgaXMgYWN0dWFsbHkgaW1wbGVtZW50ZWQKICAgICAgdHJ5IHsKICAgICAgICB2YXIgZHVtbXkgPSB4aHIucmVzcG9uc2VUeXBlOwogICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgcmVzcG9uc2VFeGlzdHMgPSBmYWxzZTsKICAgICAgfQogICAgICBpZiAoIXJlc3BvbnNlRXhpc3RzKSB7CiAgICAgICAgaGFuZGxlci5zZW5kKCd0ZXN0JywgZmFsc2UpOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBoYW5kbGVyLnNlbmQoJ3Rlc3QnLCB7CiAgICAgICAgc3VwcG9ydFR5cGVkQXJyYXk6IHRydWUsCiAgICAgICAgc3VwcG9ydFRyYW5zZmVyczogc3VwcG9ydFRyYW5zZmVycwogICAgICB9KTsKICAgIH0pOwoKICAgIGhhbmRsZXIub24oJ0dldERvY1JlcXVlc3QnLCBmdW5jdGlvbiB3cGhTZXR1cERvYyhkYXRhKSB7CgogICAgICB2YXIgb25TdWNjZXNzID0gZnVuY3Rpb24oZG9jKSB7CiAgICAgICAgaGFuZGxlci5zZW5kKCdHZXREb2MnLCB7IHBkZkluZm86IGRvYyB9KTsKICAgICAgfTsKCiAgICAgIHZhciBvbkZhaWx1cmUgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBQYXNzd29yZEV4Y2VwdGlvbikgewogICAgICAgICAgaWYgKGUuY29kZSA9PT0gUGFzc3dvcmRSZXNwb25zZXMuTkVFRF9QQVNTV09SRCkgewogICAgICAgICAgICBoYW5kbGVyLnNlbmQoJ05lZWRQYXNzd29yZCcsIGUpOwogICAgICAgICAgfSBlbHNlIGlmIChlLmNvZGUgPT09IFBhc3N3b3JkUmVzcG9uc2VzLklOQ09SUkVDVF9QQVNTV09SRCkgewogICAgICAgICAgICBoYW5kbGVyLnNlbmQoJ0luY29ycmVjdFBhc3N3b3JkJywgZSk7CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGlmIChlIGluc3RhbmNlb2YgSW52YWxpZFBERkV4Y2VwdGlvbikgewogICAgICAgICAgaGFuZGxlci5zZW5kKCdJbnZhbGlkUERGJywgZSk7CiAgICAgICAgfSBlbHNlIGlmIChlIGluc3RhbmNlb2YgTWlzc2luZ1BERkV4Y2VwdGlvbikgewogICAgICAgICAgaGFuZGxlci5zZW5kKCdNaXNzaW5nUERGJywgZSk7CiAgICAgICAgfSBlbHNlIGlmIChlIGluc3RhbmNlb2YgVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uKSB7CiAgICAgICAgICBoYW5kbGVyLnNlbmQoJ1VuZXhwZWN0ZWRSZXNwb25zZScsIGUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBoYW5kbGVyLnNlbmQoJ1Vua25vd25FcnJvcicsCiAgICAgICAgICAgICAgICAgICAgICAgbmV3IFVua25vd25FcnJvckV4Y2VwdGlvbihlLm1lc3NhZ2UsIGUudG9TdHJpbmcoKSkpOwogICAgICAgIH0KICAgICAgfTsKCiAgICAgIFBERkpTLm1heEltYWdlU2l6ZSA9IGRhdGEubWF4SW1hZ2VTaXplID09PSB1bmRlZmluZWQgPwogICAgICAgICAgICAgICAgICAgICAgICAgICAtMSA6IGRhdGEubWF4SW1hZ2VTaXplOwogICAgICBQREZKUy5kaXNhYmxlRm9udEZhY2UgPSBkYXRhLmRpc2FibGVGb250RmFjZTsKICAgICAgUERGSlMuZGlzYWJsZUNyZWF0ZU9iamVjdFVSTCA9IGRhdGEuZGlzYWJsZUNyZWF0ZU9iamVjdFVSTDsKICAgICAgUERGSlMudmVyYm9zaXR5ID0gZGF0YS52ZXJib3NpdHk7CiAgICAgIFBERkpTLmNNYXBVcmwgPSBkYXRhLmNNYXBVcmwgPT09IHVuZGVmaW5lZCA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgOiBkYXRhLmNNYXBVcmw7CiAgICAgIFBERkpTLmNNYXBQYWNrZWQgPSBkYXRhLmNNYXBQYWNrZWQgPT09IHRydWU7CgogICAgICBnZXRQZGZNYW5hZ2VyKGRhdGEpLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgIGhhbmRsZXIuc2VuZCgnUERGTWFuYWdlclJlYWR5JywgbnVsbCk7CiAgICAgICAgcGRmTWFuYWdlci5vbkxvYWRlZFN0cmVhbSgpLnRoZW4oZnVuY3Rpb24oc3RyZWFtKSB7CiAgICAgICAgICBoYW5kbGVyLnNlbmQoJ0RhdGFMb2FkZWQnLCB7IGxlbmd0aDogc3RyZWFtLmJ5dGVzLmJ5dGVMZW5ndGggfSk7CiAgICAgICAgfSk7CiAgICAgIH0pLnRoZW4oZnVuY3Rpb24gcGRmTWFuYWdlclJlYWR5KCkgewogICAgICAgIGxvYWREb2N1bWVudChmYWxzZSkudGhlbihvblN1Y2Nlc3MsIGZ1bmN0aW9uIGxvYWRGYWlsdXJlKGV4KSB7CiAgICAgICAgICAvLyBUcnkgYWdhaW4gd2l0aCByZWNvdmVyeU1vZGUgPT0gdHJ1ZQogICAgICAgICAgaWYgKCEoZXggaW5zdGFuY2VvZiBYUmVmUGFyc2VFeGNlcHRpb24pKSB7CiAgICAgICAgICAgIGlmIChleCBpbnN0YW5jZW9mIFBhc3N3b3JkRXhjZXB0aW9uKSB7CiAgICAgICAgICAgICAgLy8gYWZ0ZXIgcGFzc3dvcmQgZXhjZXB0aW9uIHByZXBhcmUgdG8gcmVjZWl2ZSBhIG5ldyBwYXNzd29yZAogICAgICAgICAgICAgIC8vIHRvIHJlcGVhdCBsb2FkaW5nCiAgICAgICAgICAgICAgcGRmTWFuYWdlci5wYXNzd29yZENoYW5nZWQoKS50aGVuKHBkZk1hbmFnZXJSZWFkeSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG9uRmFpbHVyZShleCk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0KCiAgICAgICAgICBwZGZNYW5hZ2VyLnJlcXVlc3RMb2FkZWRTdHJlYW0oKTsKICAgICAgICAgIHBkZk1hbmFnZXIub25Mb2FkZWRTdHJlYW0oKS50aGVuKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBsb2FkRG9jdW1lbnQodHJ1ZSkudGhlbihvblN1Y2Nlc3MsIG9uRmFpbHVyZSk7CiAgICAgICAgICB9KTsKICAgICAgICB9LCBvbkZhaWx1cmUpOwogICAgICB9LCBvbkZhaWx1cmUpOwogICAgfSk7CgogICAgaGFuZGxlci5vbignR2V0UGFnZScsIGZ1bmN0aW9uIHdwaFNldHVwR2V0UGFnZShkYXRhKSB7CiAgICAgIHJldHVybiBwZGZNYW5hZ2VyLmdldFBhZ2UoZGF0YS5wYWdlSW5kZXgpLnRoZW4oZnVuY3Rpb24ocGFnZSkgewogICAgICAgIHZhciByb3RhdGVQcm9taXNlID0gcGRmTWFuYWdlci5lbnN1cmUocGFnZSwgJ3JvdGF0ZScpOwogICAgICAgIHZhciByZWZQcm9taXNlID0gcGRmTWFuYWdlci5lbnN1cmUocGFnZSwgJ3JlZicpOwogICAgICAgIHZhciB2aWV3UHJvbWlzZSA9IHBkZk1hbmFnZXIuZW5zdXJlKHBhZ2UsICd2aWV3Jyk7CgogICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbcm90YXRlUHJvbWlzZSwgcmVmUHJvbWlzZSwgdmlld1Byb21pc2VdKS50aGVuKAogICAgICAgICAgICBmdW5jdGlvbihyZXN1bHRzKSB7CiAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICByb3RhdGU6IHJlc3VsdHNbMF0sCiAgICAgICAgICAgIHJlZjogcmVzdWx0c1sxXSwKICAgICAgICAgICAgdmlldzogcmVzdWx0c1syXQogICAgICAgICAgfTsKICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9KTsKCiAgICBoYW5kbGVyLm9uKCdHZXRQYWdlSW5kZXgnLCBmdW5jdGlvbiB3cGhTZXR1cEdldFBhZ2VJbmRleChkYXRhKSB7CiAgICAgIHZhciByZWYgPSBuZXcgUmVmKGRhdGEucmVmLm51bSwgZGF0YS5yZWYuZ2VuKTsKICAgICAgdmFyIGNhdGFsb2cgPSBwZGZNYW5hZ2VyLnBkZkRvY3VtZW50LmNhdGFsb2c7CiAgICAgIHJldHVybiBjYXRhbG9nLmdldFBhZ2VJbmRleChyZWYpOwogICAgfSk7CgogICAgaGFuZGxlci5vbignR2V0RGVzdGluYXRpb25zJywKICAgICAgZnVuY3Rpb24gd3BoU2V0dXBHZXREZXN0aW5hdGlvbnMoZGF0YSkgewogICAgICAgIHJldHVybiBwZGZNYW5hZ2VyLmVuc3VyZUNhdGFsb2coJ2Rlc3RpbmF0aW9ucycpOwogICAgICB9CiAgICApOwoKICAgIGhhbmRsZXIub24oJ0dldERlc3RpbmF0aW9uJywKICAgICAgZnVuY3Rpb24gd3BoU2V0dXBHZXREZXN0aW5hdGlvbihkYXRhKSB7CiAgICAgICAgcmV0dXJuIHBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygnZ2V0RGVzdGluYXRpb24nLCBbIGRhdGEuaWQgXSk7CiAgICAgIH0KICAgICk7CgogICAgaGFuZGxlci5vbignR2V0QXR0YWNobWVudHMnLAogICAgICBmdW5jdGlvbiB3cGhTZXR1cEdldEF0dGFjaG1lbnRzKGRhdGEpIHsKICAgICAgICByZXR1cm4gcGRmTWFuYWdlci5lbnN1cmVDYXRhbG9nKCdhdHRhY2htZW50cycpOwogICAgICB9CiAgICApOwoKICAgIGhhbmRsZXIub24oJ0dldEphdmFTY3JpcHQnLAogICAgICBmdW5jdGlvbiB3cGhTZXR1cEdldEphdmFTY3JpcHQoZGF0YSkgewogICAgICAgIHJldHVybiBwZGZNYW5hZ2VyLmVuc3VyZUNhdGFsb2coJ2phdmFTY3JpcHQnKTsKICAgICAgfQogICAgKTsKCiAgICBoYW5kbGVyLm9uKCdHZXRPdXRsaW5lJywKICAgICAgZnVuY3Rpb24gd3BoU2V0dXBHZXRPdXRsaW5lKGRhdGEpIHsKICAgICAgICByZXR1cm4gcGRmTWFuYWdlci5lbnN1cmVDYXRhbG9nKCdkb2N1bWVudE91dGxpbmUnKTsKICAgICAgfQogICAgKTsKCiAgICBoYW5kbGVyLm9uKCdHZXRNZXRhZGF0YScsCiAgICAgIGZ1bmN0aW9uIHdwaFNldHVwR2V0TWV0YWRhdGEoZGF0YSkgewogICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbcGRmTWFuYWdlci5lbnN1cmVEb2MoJ2RvY3VtZW50SW5mbycpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGRmTWFuYWdlci5lbnN1cmVDYXRhbG9nKCdtZXRhZGF0YScpXSk7CiAgICAgIH0KICAgICk7CgogICAgaGFuZGxlci5vbignR2V0RGF0YScsIGZ1bmN0aW9uIHdwaFNldHVwR2V0RGF0YShkYXRhKSB7CiAgICAgIHBkZk1hbmFnZXIucmVxdWVzdExvYWRlZFN0cmVhbSgpOwogICAgICByZXR1cm4gcGRmTWFuYWdlci5vbkxvYWRlZFN0cmVhbSgpLnRoZW4oZnVuY3Rpb24oc3RyZWFtKSB7CiAgICAgICAgcmV0dXJuIHN0cmVhbS5ieXRlczsKICAgICAgfSk7CiAgICB9KTsKCiAgICBoYW5kbGVyLm9uKCdHZXRTdGF0cycsCiAgICAgIGZ1bmN0aW9uIHdwaFNldHVwR2V0U3RhdHMoZGF0YSkgewogICAgICAgIHJldHVybiBwZGZNYW5hZ2VyLnBkZkRvY3VtZW50LnhyZWYuc3RhdHM7CiAgICAgIH0KICAgICk7CgogICAgaGFuZGxlci5vbignVXBkYXRlUGFzc3dvcmQnLCBmdW5jdGlvbiB3cGhTZXR1cFVwZGF0ZVBhc3N3b3JkKGRhdGEpIHsKICAgICAgcGRmTWFuYWdlci51cGRhdGVQYXNzd29yZChkYXRhKTsKICAgIH0pOwoKICAgIGhhbmRsZXIub24oJ0dldEFubm90YXRpb25zJywgZnVuY3Rpb24gd3BoU2V0dXBHZXRBbm5vdGF0aW9ucyhkYXRhKSB7CiAgICAgIHJldHVybiBwZGZNYW5hZ2VyLmdldFBhZ2UoZGF0YS5wYWdlSW5kZXgpLnRoZW4oZnVuY3Rpb24ocGFnZSkgewogICAgICAgIHJldHVybiBwZGZNYW5hZ2VyLmVuc3VyZShwYWdlLCAnZ2V0QW5ub3RhdGlvbnNEYXRhJywgW10pOwogICAgICB9KTsKICAgIH0pOwoKICAgIGhhbmRsZXIub24oJ1JlbmRlclBhZ2VSZXF1ZXN0JywgZnVuY3Rpb24gd3BoU2V0dXBSZW5kZXJQYWdlKGRhdGEpIHsKICAgICAgcGRmTWFuYWdlci5nZXRQYWdlKGRhdGEucGFnZUluZGV4KS50aGVuKGZ1bmN0aW9uKHBhZ2UpIHsKCiAgICAgICAgdmFyIHBhZ2VOdW0gPSBkYXRhLnBhZ2VJbmRleCArIDE7CiAgICAgICAgdmFyIHN0YXJ0ID0gRGF0ZS5ub3coKTsKICAgICAgICAvLyBQcmUgY29tcGlsZSB0aGUgcGRmIHBhZ2UgYW5kIGZldGNoIHRoZSBmb250cy9pbWFnZXMuCiAgICAgICAgcGFnZS5nZXRPcGVyYXRvckxpc3QoaGFuZGxlciwgZGF0YS5pbnRlbnQpLnRoZW4oZnVuY3Rpb24ob3BlcmF0b3JMaXN0KSB7CgogICAgICAgICAgaW5mbygncGFnZT0nICsgcGFnZU51bSArICcgLSBnZXRPcGVyYXRvckxpc3Q6IHRpbWU9JyArCiAgICAgICAgICAgICAgIChEYXRlLm5vdygpIC0gc3RhcnQpICsgJ21zLCBsZW49JyArIG9wZXJhdG9yTGlzdC5mbkFycmF5Lmxlbmd0aCk7CgogICAgICAgIH0sIGZ1bmN0aW9uKGUpIHsKCiAgICAgICAgICB2YXIgbWluaW11bVN0YWNrTWVzc2FnZSA9CiAgICAgICAgICAgICd3b3JrZXIuanM6IHdoaWxlIHRyeWluZyB0byBnZXRQYWdlKCkgYW5kIGdldE9wZXJhdG9yTGlzdCgpJzsKCiAgICAgICAgICB2YXIgd3JhcHBlZEV4Y2VwdGlvbjsKCiAgICAgICAgICAvLyBUdXJuIHRoZSBlcnJvciBpbnRvIGFuIG9iaiB0aGF0IGNhbiBiZSBzZXJpYWxpemVkCiAgICAgICAgICBpZiAodHlwZW9mIGUgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgIHdyYXBwZWRFeGNlcHRpb24gPSB7CiAgICAgICAgICAgICAgbWVzc2FnZTogZSwKICAgICAgICAgICAgICBzdGFjazogbWluaW11bVN0YWNrTWVzc2FnZQogICAgICAgICAgICB9OwogICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZSA9PT0gJ29iamVjdCcpIHsKICAgICAgICAgICAgd3JhcHBlZEV4Y2VwdGlvbiA9IHsKICAgICAgICAgICAgICBtZXNzYWdlOiBlLm1lc3NhZ2UgfHwgZS50b1N0cmluZygpLAogICAgICAgICAgICAgIHN0YWNrOiBlLnN0YWNrIHx8IG1pbmltdW1TdGFja01lc3NhZ2UKICAgICAgICAgICAgfTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHdyYXBwZWRFeGNlcHRpb24gPSB7CiAgICAgICAgICAgICAgbWVzc2FnZTogJ1Vua25vd24gZXhjZXB0aW9uIHR5cGU6ICcgKyAodHlwZW9mIGUpLAogICAgICAgICAgICAgIHN0YWNrOiBtaW5pbXVtU3RhY2tNZXNzYWdlCiAgICAgICAgICAgIH07CiAgICAgICAgICB9CgogICAgICAgICAgaGFuZGxlci5zZW5kKCdQYWdlRXJyb3InLCB7CiAgICAgICAgICAgIHBhZ2VOdW06IHBhZ2VOdW0sCiAgICAgICAgICAgIGVycm9yOiB3cmFwcGVkRXhjZXB0aW9uLAogICAgICAgICAgICBpbnRlbnQ6IGRhdGEuaW50ZW50CiAgICAgICAgICB9KTsKICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9LCB0aGlzKTsKCiAgICBoYW5kbGVyLm9uKCdHZXRUZXh0Q29udGVudCcsIGZ1bmN0aW9uIHdwaEV4dHJhY3RUZXh0KGRhdGEpIHsKICAgICAgcmV0dXJuIHBkZk1hbmFnZXIuZ2V0UGFnZShkYXRhLnBhZ2VJbmRleCkudGhlbihmdW5jdGlvbihwYWdlKSB7CiAgICAgICAgdmFyIHBhZ2VOdW0gPSBkYXRhLnBhZ2VJbmRleCArIDE7CiAgICAgICAgdmFyIHN0YXJ0ID0gRGF0ZS5ub3coKTsKICAgICAgICByZXR1cm4gcGFnZS5leHRyYWN0VGV4dENvbnRlbnQoKS50aGVuKGZ1bmN0aW9uKHRleHRDb250ZW50KSB7CiAgICAgICAgICBpbmZvKCd0ZXh0IGluZGV4aW5nOiBwYWdlPScgKyBwYWdlTnVtICsgJyAtIHRpbWU9JyArCiAgICAgICAgICAgICAgIChEYXRlLm5vdygpIC0gc3RhcnQpICsgJ21zJyk7CiAgICAgICAgICByZXR1cm4gdGV4dENvbnRlbnQ7CiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgfSk7CgogICAgaGFuZGxlci5vbignQ2xlYW51cCcsIGZ1bmN0aW9uIHdwaENsZWFudXAoZGF0YSkgewogICAgICByZXR1cm4gcGRmTWFuYWdlci5jbGVhbnVwKCk7CiAgICB9KTsKCiAgICBoYW5kbGVyLm9uKCdUZXJtaW5hdGUnLCBmdW5jdGlvbiB3cGhUZXJtaW5hdGUoZGF0YSkgewogICAgICBwZGZNYW5hZ2VyLnRlcm1pbmF0ZSgpOwogICAgfSk7CiAgfQp9OwoKdmFyIGNvbnNvbGVUaW1lciA9IHt9OwoKdmFyIHdvcmtlckNvbnNvbGUgPSB7CiAgbG9nOiBmdW5jdGlvbiBsb2coKSB7CiAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7CiAgICBnbG9iYWxTY29wZS5wb3N0TWVzc2FnZSh7CiAgICAgIGFjdGlvbjogJ2NvbnNvbGVfbG9nJywKICAgICAgZGF0YTogYXJncwogICAgfSk7CiAgfSwKCiAgZXJyb3I6IGZ1bmN0aW9uIGVycm9yKCkgewogICAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpOwogICAgZ2xvYmFsU2NvcGUucG9zdE1lc3NhZ2UoewogICAgICBhY3Rpb246ICdjb25zb2xlX2Vycm9yJywKICAgICAgZGF0YTogYXJncwogICAgfSk7CiAgICB0aHJvdyAncGRmLmpzIGV4ZWN1dGlvbiBlcnJvcic7CiAgfSwKCiAgdGltZTogZnVuY3Rpb24gdGltZShuYW1lKSB7CiAgICBjb25zb2xlVGltZXJbbmFtZV0gPSBEYXRlLm5vdygpOwogIH0sCgogIHRpbWVFbmQ6IGZ1bmN0aW9uIHRpbWVFbmQobmFtZSkgewogICAgdmFyIHRpbWUgPSBjb25zb2xlVGltZXJbbmFtZV07CiAgICBpZiAoIXRpbWUpIHsKICAgICAgZXJyb3IoJ1Vua25vd24gdGltZXIgbmFtZSAnICsgbmFtZSk7CiAgICB9CiAgICB0aGlzLmxvZygnVGltZXI6JywgbmFtZSwgRGF0ZS5ub3coKSAtIHRpbWUpOwogIH0KfTsKCgovLyBXb3JrZXIgdGhyZWFkPwppZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHsKICBpZiAoISgnY29uc29sZScgaW4gZ2xvYmFsU2NvcGUpKSB7CiAgICBnbG9iYWxTY29wZS5jb25zb2xlID0gd29ya2VyQ29uc29sZTsKICB9CgogIC8vIExpc3RlbiBmb3IgdW5zdXBwb3J0ZWQgZmVhdHVyZXMgc28gd2UgY2FuIHBhc3MgdGhlbSBvbiB0byB0aGUgbWFpbiB0aHJlYWQuCiAgUERGSlMuVW5zdXBwb3J0ZWRNYW5hZ2VyLmxpc3RlbihmdW5jdGlvbiAobXNnKSB7CiAgICBnbG9iYWxTY29wZS5wb3N0TWVzc2FnZSh7CiAgICAgIGFjdGlvbjogJ191bnN1cHBvcnRlZF9mZWF0dXJlJywKICAgICAgZGF0YTogbXNnCiAgICB9KTsKICB9KTsKCiAgdmFyIGhhbmRsZXIgPSBuZXcgTWVzc2FnZUhhbmRsZXIoJ3dvcmtlcl9wcm9jZXNzb3InLCB0aGlzKTsKICBXb3JrZXJNZXNzYWdlSGFuZGxlci5zZXR1cChoYW5kbGVyKTsKfQoKCi8qIFRoaXMgY2xhc3MgaW1wbGVtZW50cyB0aGUgUU0gQ29kZXIgZGVjb2RpbmcgYXMgZGVmaW5lZCBpbgogKiAgIEpQRUcgMjAwMCBQYXJ0IEkgRmluYWwgQ29tbWl0dGVlIERyYWZ0IFZlcnNpb24gMS4wCiAqICAgQW5uZXggQy4zIEFyaXRobWV0aWMgZGVjb2RpbmcgcHJvY2VkdXJlCiAqIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmpwZWcub3JnL3B1YmxpYy9mY2QxNTQ0NC0xLnBkZgogKgogKiBUaGUgYXJpdGhtZXRpYyBkZWNvZGVyIGlzIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBjb250ZXh0IG1vZGVscyB0byBkZWNvZGUKICogSlBFRzIwMDAgYW5kIEpCSUcyIHN0cmVhbXMuCiAqLwp2YXIgQXJpdGhtZXRpY0RlY29kZXIgPSAoZnVuY3Rpb24gQXJpdGhtZXRpY0RlY29kZXJDbG9zdXJlKCkgewogIC8vIFRhYmxlIEMtMgogIHZhciBRZVRhYmxlID0gWwogICAge3FlOiAweDU2MDEsIG5tcHM6IDEsIG5scHM6IDEsIHN3aXRjaEZsYWc6IDF9LAogICAge3FlOiAweDM0MDEsIG5tcHM6IDIsIG5scHM6IDYsIHN3aXRjaEZsYWc6IDB9LAogICAge3FlOiAweDE4MDEsIG5tcHM6IDMsIG5scHM6IDksIHN3aXRjaEZsYWc6IDB9LAogICAge3FlOiAweDBBQzEsIG5tcHM6IDQsIG5scHM6IDEyLCBzd2l0Y2hGbGFnOiAwfSwKICAgIHtxZTogMHgwNTIxLCBubXBzOiA1LCBubHBzOiAyOSwgc3dpdGNoRmxhZzogMH0sCiAgICB7cWU6IDB4MDIyMSwgbm1wczogMzgsIG5scHM6IDMzLCBzd2l0Y2hGbGFnOiAwfSwKICAgIHtxZTogMHg1NjAxLCBubXBzOiA3LCBubHBzOiA2LCBzd2l0Y2hGbGFnOiAxfSwKICAgIHtxZTogMHg1NDAxLCBubXBzOiA4LCBubHBzOiAxNCwgc3dpdGNoRmxhZzogMH0sCiAgICB7cWU6IDB4NDgwMSwgbm1wczogOSwgbmxwczogMTQsIHN3aXRjaEZsYWc6IDB9LAogICAge3FlOiAweDM4MDEsIG5tcHM6IDEwLCBubHBzOiAxNCwgc3dpdGNoRmxhZzogMH0sCiAgICB7cWU6IDB4MzAwMSwgbm1wczogMTEsIG5scHM6IDE3LCBzd2l0Y2hGbGFnOiAwfSwKICAgIHtxZTogMHgyNDAxLCBubXBzOiAxMiwgbmxwczogMTgsIHN3aXRjaEZsYWc6IDB9LAogICAge3FlOiAweDFDMDEsIG5tcHM6IDEzLCBubHBzOiAyMCwgc3dpdGNoRmxhZzogMH0sCiAgICB7cWU6IDB4MTYwMSwgbm1wczogMjksIG5scHM6IDIxLCBzd2l0Y2hGbGFnOiAwfSwKICAgIHtxZTogMHg1NjAxLCBubXBzOiAxNSwgbmxwczogMTQsIHN3aXRjaEZsYWc6IDF9LAogICAge3FlOiAweDU0MDEsIG5tcHM6IDE2LCBubHBzOiAxNCwgc3dpdGNoRmxhZzogMH0sCiAgICB7cWU6IDB4NTEwMSwgbm1wczogMTcsIG5scHM6IDE1LCBzd2l0Y2hGbGFnOiAwfSwKICAgIHtxZTogMHg0ODAxLCBubXBzOiAxOCwgbmxwczogMTYsIHN3aXRjaEZsYWc6IDB9LAogICAge3FlOiAweDM4MDEsIG5tcHM6IDE5LCBubHBzOiAxNywgc3dpdGNoRmxhZzogMH0sCiAgICB7cWU6IDB4MzQwMSwgbm1wczogMjAsIG5scHM6IDE4LCBzd2l0Y2hGbGFnOiAwfSwKICAgIHtxZTogMHgzMDAxLCBubXBzOiAyMSwgbmxwczogMTksIHN3aXRjaEZsYWc6IDB9LAogICAge3FlOiAweDI4MDEsIG5tcHM6IDIyLCBubHBzOiAxOSwgc3dpdGNoRmxhZzogMH0sCiAgICB7cWU6IDB4MjQwMSwgbm1wczogMjMsIG5scHM6IDIwLCBzd2l0Y2hGbGFnOiAwfSwKICAgIHtxZTogMHgyMjAxLCBubXBzOiAyNCwgbmxwczogMjEsIHN3aXRjaEZsYWc6IDB9LAogICAge3FlOiAweDFDMDEsIG5tcHM6IDI1LCBubHBzOiAyMiwgc3dpdGNoRmxhZzogMH0sCiAgICB7cWU6IDB4MTgwMSwgbm1wczogMjYsIG5scHM6IDIzLCBzd2l0Y2hGbGFnOiAwfSwKICAgIHtxZTogMHgxNjAxLCBubXBzOiAyNywgbmxwczogMjQsIHN3aXRjaEZsYWc6IDB9LAogICAge3FlOiAweDE0MDEsIG5tcHM6IDI4LCBubHBzOiAyNSwgc3dpdGNoRmxhZzogMH0sCiAgICB7cWU6IDB4MTIwMSwgbm1wczogMjksIG5scHM6IDI2LCBzd2l0Y2hGbGFnOiAwfSwKICAgIHtxZTogMHgxMTAxLCBubXBzOiAzMCwgbmxwczogMjcsIHN3aXRjaEZsYWc6IDB9LAogICAge3FlOiAweDBBQzEsIG5tcHM6IDMxLCBubHBzOiAyOCwgc3dpdGNoRmxhZzogMH0sCiAgICB7cWU6IDB4MDlDMSwgbm1wczogMzIsIG5scHM6IDI5LCBzd2l0Y2hGbGFnOiAwfSwKICAgIHtxZTogMHgwOEExLCBubXBzOiAzMywgbmxwczogMzAsIHN3aXRjaEZsYWc6IDB9LAogICAge3FlOiAweDA1MjEsIG5tcHM6IDM0LCBubHBzOiAzMSwgc3dpdGNoRmxhZzogMH0sCiAgICB7cWU6IDB4MDQ0MSwgbm1wczogMzUsIG5scHM6IDMyLCBzd2l0Y2hGbGFnOiAwfSwKICAgIHtxZTogMHgwMkExLCBubXBzOiAzNiwgbmxwczogMzMsIHN3aXRjaEZsYWc6IDB9LAogICAge3FlOiAweDAyMjEsIG5tcHM6IDM3LCBubHBzOiAzNCwgc3dpdGNoRmxhZzogMH0sCiAgICB7cWU6IDB4MDE0MSwgbm1wczogMzgsIG5scHM6IDM1LCBzd2l0Y2hGbGFnOiAwfSwKICAgIHtxZTogMHgwMTExLCBubXBzOiAzOSwgbmxwczogMzYsIHN3aXRjaEZsYWc6IDB9LAogICAge3FlOiAweDAwODUsIG5tcHM6IDQwLCBubHBzOiAzNywgc3dpdGNoRmxhZzogMH0sCiAgICB7cWU6IDB4MDA0OSwgbm1wczogNDEsIG5scHM6IDM4LCBzd2l0Y2hGbGFnOiAwfSwKICAgIHtxZTogMHgwMDI1LCBubXBzOiA0MiwgbmxwczogMzksIHN3aXRjaEZsYWc6IDB9LAogICAge3FlOiAweDAwMTUsIG5tcHM6IDQzLCBubHBzOiA0MCwgc3dpdGNoRmxhZzogMH0sCiAgICB7cWU6IDB4MDAwOSwgbm1wczogNDQsIG5scHM6IDQxLCBzd2l0Y2hGbGFnOiAwfSwKICAgIHtxZTogMHgwMDA1LCBubXBzOiA0NSwgbmxwczogNDIsIHN3aXRjaEZsYWc6IDB9LAogICAge3FlOiAweDAwMDEsIG5tcHM6IDQ1LCBubHBzOiA0Mywgc3dpdGNoRmxhZzogMH0sCiAgICB7cWU6IDB4NTYwMSwgbm1wczogNDYsIG5scHM6IDQ2LCBzd2l0Y2hGbGFnOiAwfQogIF07CgogIC8vIEMuMy41IEluaXRpYWxpc2F0aW9uIG9mIHRoZSBkZWNvZGVyIChJTklUREVDKQogIGZ1bmN0aW9uIEFyaXRobWV0aWNEZWNvZGVyKGRhdGEsIHN0YXJ0LCBlbmQpIHsKICAgIHRoaXMuZGF0YSA9IGRhdGE7CiAgICB0aGlzLmJwID0gc3RhcnQ7CiAgICB0aGlzLmRhdGFFbmQgPSBlbmQ7CgogICAgdGhpcy5jaGlnaCA9IGRhdGFbc3RhcnRdOwogICAgdGhpcy5jbG93ID0gMDsKCiAgICB0aGlzLmJ5dGVJbigpOwoKICAgIHRoaXMuY2hpZ2ggPSAoKHRoaXMuY2hpZ2ggPDwgNykgJiAweEZGRkYpIHwgKCh0aGlzLmNsb3cgPj4gOSkgJiAweDdGKTsKICAgIHRoaXMuY2xvdyA9ICh0aGlzLmNsb3cgPDwgNykgJiAweEZGRkY7CiAgICB0aGlzLmN0IC09IDc7CiAgICB0aGlzLmEgPSAweDgwMDA7CiAgfQoKICBBcml0aG1ldGljRGVjb2Rlci5wcm90b3R5cGUgPSB7CiAgICAvLyBDLjMuNCBDb21wcmVzc2VkIGRhdGEgaW5wdXQgKEJZVEVJTikKICAgIGJ5dGVJbjogZnVuY3Rpb24gQXJpdGhtZXRpY0RlY29kZXJfYnl0ZUluKCkgewogICAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YTsKICAgICAgdmFyIGJwID0gdGhpcy5icDsKICAgICAgaWYgKGRhdGFbYnBdID09PSAweEZGKSB7CiAgICAgICAgdmFyIGIxID0gZGF0YVticCArIDFdOwogICAgICAgIGlmIChiMSA+IDB4OEYpIHsKICAgICAgICAgIHRoaXMuY2xvdyArPSAweEZGMDA7CiAgICAgICAgICB0aGlzLmN0ID0gODsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgYnArKzsKICAgICAgICAgIHRoaXMuY2xvdyArPSAoZGF0YVticF0gPDwgOSk7CiAgICAgICAgICB0aGlzLmN0ID0gNzsKICAgICAgICAgIHRoaXMuYnAgPSBicDsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgYnArKzsKICAgICAgICB0aGlzLmNsb3cgKz0gYnAgPCB0aGlzLmRhdGFFbmQgPyAoZGF0YVticF0gPDwgOCkgOiAweEZGMDA7CiAgICAgICAgdGhpcy5jdCA9IDg7CiAgICAgICAgdGhpcy5icCA9IGJwOwogICAgICB9CiAgICAgIGlmICh0aGlzLmNsb3cgPiAweEZGRkYpIHsKICAgICAgICB0aGlzLmNoaWdoICs9ICh0aGlzLmNsb3cgPj4gMTYpOwogICAgICAgIHRoaXMuY2xvdyAmPSAweEZGRkY7CiAgICAgIH0KICAgIH0sCiAgICAvLyBDLjMuMiBEZWNvZGluZyBhIGRlY2lzaW9uIChERUNPREUpCiAgICByZWFkQml0OiBmdW5jdGlvbiBBcml0aG1ldGljRGVjb2Rlcl9yZWFkQml0KGNvbnRleHRzLCBwb3MpIHsKICAgICAgLy8gY29udGV4dHMgYXJlIHBhY2tlZCBpbnRvIDEgYnl0ZToKICAgICAgLy8gaGlnaGVzdCA3IGJpdHMgY2FycnkgY3guaW5kZXgsIGxvd2VzdCBiaXQgY2FycmllcyBjeC5tcHMKICAgICAgdmFyIGN4X2luZGV4ID0gY29udGV4dHNbcG9zXSA+PiAxLCBjeF9tcHMgPSBjb250ZXh0c1twb3NdICYgMTsKICAgICAgdmFyIHFlVGFibGVJY3ggPSBRZVRhYmxlW2N4X2luZGV4XTsKICAgICAgdmFyIHFlSWN4ID0gcWVUYWJsZUljeC5xZTsKICAgICAgdmFyIGQ7CiAgICAgIHZhciBhID0gdGhpcy5hIC0gcWVJY3g7CgogICAgICBpZiAodGhpcy5jaGlnaCA8IHFlSWN4KSB7CiAgICAgICAgLy8gZXhjaGFuZ2VMcHMKICAgICAgICBpZiAoYSA8IHFlSWN4KSB7CiAgICAgICAgICBhID0gcWVJY3g7CiAgICAgICAgICBkID0gY3hfbXBzOwogICAgICAgICAgY3hfaW5kZXggPSBxZVRhYmxlSWN4Lm5tcHM7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGEgPSBxZUljeDsKICAgICAgICAgIGQgPSAxIF4gY3hfbXBzOwogICAgICAgICAgaWYgKHFlVGFibGVJY3guc3dpdGNoRmxhZyA9PT0gMSkgewogICAgICAgICAgICBjeF9tcHMgPSBkOwogICAgICAgICAgfQogICAgICAgICAgY3hfaW5kZXggPSBxZVRhYmxlSWN4Lm5scHM7CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMuY2hpZ2ggLT0gcWVJY3g7CiAgICAgICAgaWYgKChhICYgMHg4MDAwKSAhPT0gMCkgewogICAgICAgICAgdGhpcy5hID0gYTsKICAgICAgICAgIHJldHVybiBjeF9tcHM7CiAgICAgICAgfQogICAgICAgIC8vIGV4Y2hhbmdlTXBzCiAgICAgICAgaWYgKGEgPCBxZUljeCkgewogICAgICAgICAgZCA9IDEgXiBjeF9tcHM7CiAgICAgICAgICBpZiAocWVUYWJsZUljeC5zd2l0Y2hGbGFnID09PSAxKSB7CiAgICAgICAgICAgIGN4X21wcyA9IGQ7CiAgICAgICAgICB9CiAgICAgICAgICBjeF9pbmRleCA9IHFlVGFibGVJY3gubmxwczsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgZCA9IGN4X21wczsKICAgICAgICAgIGN4X2luZGV4ID0gcWVUYWJsZUljeC5ubXBzOwogICAgICAgIH0KICAgICAgfQogICAgICAvLyBDLjMuMyByZW5vcm1EOwogICAgICBkbyB7CiAgICAgICAgaWYgKHRoaXMuY3QgPT09IDApIHsKICAgICAgICAgIHRoaXMuYnl0ZUluKCk7CiAgICAgICAgfQoKICAgICAgICBhIDw8PSAxOwogICAgICAgIHRoaXMuY2hpZ2ggPSAoKHRoaXMuY2hpZ2ggPDwgMSkgJiAweEZGRkYpIHwgKCh0aGlzLmNsb3cgPj4gMTUpICYgMSk7CiAgICAgICAgdGhpcy5jbG93ID0gKHRoaXMuY2xvdyA8PCAxKSAmIDB4RkZGRjsKICAgICAgICB0aGlzLmN0LS07CiAgICAgIH0gd2hpbGUgKChhICYgMHg4MDAwKSA9PT0gMCk7CiAgICAgIHRoaXMuYSA9IGE7CgogICAgICBjb250ZXh0c1twb3NdID0gY3hfaW5kZXggPDwgMSB8IGN4X21wczsKICAgICAgcmV0dXJuIGQ7CiAgICB9CiAgfTsKCiAgcmV0dXJuIEFyaXRobWV0aWNEZWNvZGVyOwp9KSgpOwoKCnZhciBKcGVnSW1hZ2UgPSAoZnVuY3Rpb24ganBlZ0ltYWdlKCkgewogIHZhciBkY3RaaWdaYWcgPSBuZXcgVWludDhBcnJheShbCiAgICAgMCwKICAgICAxLCAgOCwKICAgIDE2LCAgOSwgIDIsCiAgICAgMywgMTAsIDE3LCAyNCwKICAgIDMyLCAyNSwgMTgsIDExLCA0LAogICAgIDUsIDEyLCAxOSwgMjYsIDMzLCA0MCwKICAgIDQ4LCA0MSwgMzQsIDI3LCAyMCwgMTMsICA2LAogICAgIDcsIDE0LCAyMSwgMjgsIDM1LCA0MiwgNDksIDU2LAogICAgNTcsIDUwLCA0MywgMzYsIDI5LCAyMiwgMTUsCiAgICAyMywgMzAsIDM3LCA0NCwgNTEsIDU4LAogICAgNTksIDUyLCA0NSwgMzgsIDMxLAogICAgMzksIDQ2LCA1MywgNjAsCiAgICA2MSwgNTQsIDQ3LAogICAgNTUsIDYyLAogICAgNjMKICBdKTsKCiAgdmFyIGRjdENvczEgID0gIDQwMTc7ICAgLy8gY29zKHBpLzE2KQogIHZhciBkY3RTaW4xICA9ICAgNzk5OyAgIC8vIHNpbihwaS8xNikKICB2YXIgZGN0Q29zMyAgPSAgMzQwNjsgICAvLyBjb3MoMypwaS8xNikKICB2YXIgZGN0U2luMyAgPSAgMjI3NjsgICAvLyBzaW4oMypwaS8xNikKICB2YXIgZGN0Q29zNiAgPSAgMTU2NzsgICAvLyBjb3MoNipwaS8xNikKICB2YXIgZGN0U2luNiAgPSAgMzc4NDsgICAvLyBzaW4oNipwaS8xNikKICB2YXIgZGN0U3FydDIgPSAgNTc5MzsgICAvLyBzcXJ0KDIpCiAgdmFyIGRjdFNxcnQxZDIgPSAyODk2OyAgLy8gc3FydCgyKSAvIDIKCiAgZnVuY3Rpb24gY29uc3RydWN0b3IoKSB7CiAgfQoKICBmdW5jdGlvbiBidWlsZEh1ZmZtYW5UYWJsZShjb2RlTGVuZ3RocywgdmFsdWVzKSB7CiAgICB2YXIgayA9IDAsIGNvZGUgPSBbXSwgaSwgaiwgbGVuZ3RoID0gMTY7CiAgICB3aGlsZSAobGVuZ3RoID4gMCAmJiAhY29kZUxlbmd0aHNbbGVuZ3RoIC0gMV0pIHsKICAgICAgbGVuZ3RoLS07CiAgICB9CiAgICBjb2RlLnB1c2goe2NoaWxkcmVuOiBbXSwgaW5kZXg6IDB9KTsKICAgIHZhciBwID0gY29kZVswXSwgcTsKICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewogICAgICBmb3IgKGogPSAwOyBqIDwgY29kZUxlbmd0aHNbaV07IGorKykgewogICAgICAgIHAgPSBjb2RlLnBvcCgpOwogICAgICAgIHAuY2hpbGRyZW5bcC5pbmRleF0gPSB2YWx1ZXNba107CiAgICAgICAgd2hpbGUgKHAuaW5kZXggPiAwKSB7CiAgICAgICAgICBwID0gY29kZS5wb3AoKTsKICAgICAgICB9CiAgICAgICAgcC5pbmRleCsrOwogICAgICAgIGNvZGUucHVzaChwKTsKICAgICAgICB3aGlsZSAoY29kZS5sZW5ndGggPD0gaSkgewogICAgICAgICAgY29kZS5wdXNoKHEgPSB7Y2hpbGRyZW46IFtdLCBpbmRleDogMH0pOwogICAgICAgICAgcC5jaGlsZHJlbltwLmluZGV4XSA9IHEuY2hpbGRyZW47CiAgICAgICAgICBwID0gcTsKICAgICAgICB9CiAgICAgICAgaysrOwogICAgICB9CiAgICAgIGlmIChpICsgMSA8IGxlbmd0aCkgewogICAgICAgIC8vIHAgaGVyZSBwb2ludHMgdG8gbGFzdCBjb2RlCiAgICAgICAgY29kZS5wdXNoKHEgPSB7Y2hpbGRyZW46IFtdLCBpbmRleDogMH0pOwogICAgICAgIHAuY2hpbGRyZW5bcC5pbmRleF0gPSBxLmNoaWxkcmVuOwogICAgICAgIHAgPSBxOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gY29kZVswXS5jaGlsZHJlbjsKICB9CgogIGZ1bmN0aW9uIGdldEJsb2NrQnVmZmVyT2Zmc2V0KGNvbXBvbmVudCwgcm93LCBjb2wpIHsKICAgIHJldHVybiA2NCAqICgoY29tcG9uZW50LmJsb2Nrc1BlckxpbmUgKyAxKSAqIHJvdyArIGNvbCk7CiAgfQoKICBmdW5jdGlvbiBkZWNvZGVTY2FuKGRhdGEsIG9mZnNldCwgZnJhbWUsIGNvbXBvbmVudHMsIHJlc2V0SW50ZXJ2YWwsCiAgICAgICAgICAgICAgICAgICAgICBzcGVjdHJhbFN0YXJ0LCBzcGVjdHJhbEVuZCwgc3VjY2Vzc2l2ZVByZXYsIHN1Y2Nlc3NpdmUpIHsKICAgIHZhciBwcmVjaXNpb24gPSBmcmFtZS5wcmVjaXNpb247CiAgICB2YXIgc2FtcGxlc1BlckxpbmUgPSBmcmFtZS5zYW1wbGVzUGVyTGluZTsKICAgIHZhciBzY2FuTGluZXMgPSBmcmFtZS5zY2FuTGluZXM7CiAgICB2YXIgbWN1c1BlckxpbmUgPSBmcmFtZS5tY3VzUGVyTGluZTsKICAgIHZhciBwcm9ncmVzc2l2ZSA9IGZyYW1lLnByb2dyZXNzaXZlOwogICAgdmFyIG1heEggPSBmcmFtZS5tYXhILCBtYXhWID0gZnJhbWUubWF4VjsKCiAgICB2YXIgc3RhcnRPZmZzZXQgPSBvZmZzZXQsIGJpdHNEYXRhID0gMCwgYml0c0NvdW50ID0gMDsKCiAgICBmdW5jdGlvbiByZWFkQml0KCkgewogICAgICBpZiAoYml0c0NvdW50ID4gMCkgewogICAgICAgIGJpdHNDb3VudC0tOwogICAgICAgIHJldHVybiAoYml0c0RhdGEgPj4gYml0c0NvdW50KSAmIDE7CiAgICAgIH0KICAgICAgYml0c0RhdGEgPSBkYXRhW29mZnNldCsrXTsKICAgICAgaWYgKGJpdHNEYXRhID09PSAweEZGKSB7CiAgICAgICAgdmFyIG5leHRCeXRlID0gZGF0YVtvZmZzZXQrK107CiAgICAgICAgaWYgKG5leHRCeXRlKSB7CiAgICAgICAgICB0aHJvdyAndW5leHBlY3RlZCBtYXJrZXI6ICcgKwogICAgICAgICAgICAoKGJpdHNEYXRhIDw8IDgpIHwgbmV4dEJ5dGUpLnRvU3RyaW5nKDE2KTsKICAgICAgICB9CiAgICAgICAgLy8gdW5zdHVmZiAwCiAgICAgIH0KICAgICAgYml0c0NvdW50ID0gNzsKICAgICAgcmV0dXJuIGJpdHNEYXRhID4+PiA3OwogICAgfQoKICAgIGZ1bmN0aW9uIGRlY29kZUh1ZmZtYW4odHJlZSkgewogICAgICB2YXIgbm9kZSA9IHRyZWU7CiAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgbm9kZSA9IG5vZGVbcmVhZEJpdCgpXTsKICAgICAgICBpZiAodHlwZW9mIG5vZGUgPT09ICdudW1iZXInKSB7CiAgICAgICAgICByZXR1cm4gbm9kZTsKICAgICAgICB9CiAgICAgICAgaWYgKHR5cGVvZiBub2RlICE9PSAnb2JqZWN0JykgewogICAgICAgICAgdGhyb3cgJ2ludmFsaWQgaHVmZm1hbiBzZXF1ZW5jZSc7CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gcmVjZWl2ZShsZW5ndGgpIHsKICAgICAgdmFyIG4gPSAwOwogICAgICB3aGlsZSAobGVuZ3RoID4gMCkgewogICAgICAgIG4gPSAobiA8PCAxKSB8IHJlYWRCaXQoKTsKICAgICAgICBsZW5ndGgtLTsKICAgICAgfQogICAgICByZXR1cm4gbjsKICAgIH0KCiAgICBmdW5jdGlvbiByZWNlaXZlQW5kRXh0ZW5kKGxlbmd0aCkgewogICAgICBpZiAobGVuZ3RoID09PSAxKSB7CiAgICAgICAgcmV0dXJuIHJlYWRCaXQoKSA9PT0gMSA/IDEgOiAtMTsKICAgICAgfQogICAgICB2YXIgbiA9IHJlY2VpdmUobGVuZ3RoKTsKICAgICAgaWYgKG4gPj0gMSA8PCAobGVuZ3RoIC0gMSkpIHsKICAgICAgICByZXR1cm4gbjsKICAgICAgfQogICAgICByZXR1cm4gbiArICgtMSA8PCBsZW5ndGgpICsgMTsKICAgIH0KCiAgICBmdW5jdGlvbiBkZWNvZGVCYXNlbGluZShjb21wb25lbnQsIG9mZnNldCkgewogICAgICB2YXIgdCA9IGRlY29kZUh1ZmZtYW4oY29tcG9uZW50Lmh1ZmZtYW5UYWJsZURDKTsKICAgICAgdmFyIGRpZmYgPSB0ID09PSAwID8gMCA6IHJlY2VpdmVBbmRFeHRlbmQodCk7CiAgICAgIGNvbXBvbmVudC5ibG9ja0RhdGFbb2Zmc2V0XSA9IChjb21wb25lbnQucHJlZCArPSBkaWZmKTsKICAgICAgdmFyIGsgPSAxOwogICAgICB3aGlsZSAoayA8IDY0KSB7CiAgICAgICAgdmFyIHJzID0gZGVjb2RlSHVmZm1hbihjb21wb25lbnQuaHVmZm1hblRhYmxlQUMpOwogICAgICAgIHZhciBzID0gcnMgJiAxNSwgciA9IHJzID4+IDQ7CiAgICAgICAgaWYgKHMgPT09IDApIHsKICAgICAgICAgIGlmIChyIDwgMTUpIHsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CiAgICAgICAgICBrICs9IDE2OwogICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIGsgKz0gcjsKICAgICAgICB2YXIgeiA9IGRjdFppZ1phZ1trXTsKICAgICAgICBjb21wb25lbnQuYmxvY2tEYXRhW29mZnNldCArIHpdID0gcmVjZWl2ZUFuZEV4dGVuZChzKTsKICAgICAgICBrKys7CiAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBkZWNvZGVEQ0ZpcnN0KGNvbXBvbmVudCwgb2Zmc2V0KSB7CiAgICAgIHZhciB0ID0gZGVjb2RlSHVmZm1hbihjb21wb25lbnQuaHVmZm1hblRhYmxlREMpOwogICAgICB2YXIgZGlmZiA9IHQgPT09IDAgPyAwIDogKHJlY2VpdmVBbmRFeHRlbmQodCkgPDwgc3VjY2Vzc2l2ZSk7CiAgICAgIGNvbXBvbmVudC5ibG9ja0RhdGFbb2Zmc2V0XSA9IChjb21wb25lbnQucHJlZCArPSBkaWZmKTsKICAgIH0KCiAgICBmdW5jdGlvbiBkZWNvZGVEQ1N1Y2Nlc3NpdmUoY29tcG9uZW50LCBvZmZzZXQpIHsKICAgICAgY29tcG9uZW50LmJsb2NrRGF0YVtvZmZzZXRdIHw9IHJlYWRCaXQoKSA8PCBzdWNjZXNzaXZlOwogICAgfQoKICAgIHZhciBlb2JydW4gPSAwOwogICAgZnVuY3Rpb24gZGVjb2RlQUNGaXJzdChjb21wb25lbnQsIG9mZnNldCkgewogICAgICBpZiAoZW9icnVuID4gMCkgewogICAgICAgIGVvYnJ1bi0tOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICB2YXIgayA9IHNwZWN0cmFsU3RhcnQsIGUgPSBzcGVjdHJhbEVuZDsKICAgICAgd2hpbGUgKGsgPD0gZSkgewogICAgICAgIHZhciBycyA9IGRlY29kZUh1ZmZtYW4oY29tcG9uZW50Lmh1ZmZtYW5UYWJsZUFDKTsKICAgICAgICB2YXIgcyA9IHJzICYgMTUsIHIgPSBycyA+PiA0OwogICAgICAgIGlmIChzID09PSAwKSB7CiAgICAgICAgICBpZiAociA8IDE1KSB7CiAgICAgICAgICAgIGVvYnJ1biA9IHJlY2VpdmUocikgKyAoMSA8PCByKSAtIDE7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQogICAgICAgICAgayArPSAxNjsKICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgICAgICBrICs9IHI7CiAgICAgICAgdmFyIHogPSBkY3RaaWdaYWdba107CiAgICAgICAgY29tcG9uZW50LmJsb2NrRGF0YVtvZmZzZXQgKyB6XSA9CiAgICAgICAgICByZWNlaXZlQW5kRXh0ZW5kKHMpICogKDEgPDwgc3VjY2Vzc2l2ZSk7CiAgICAgICAgaysrOwogICAgICB9CiAgICB9CgogICAgdmFyIHN1Y2Nlc3NpdmVBQ1N0YXRlID0gMCwgc3VjY2Vzc2l2ZUFDTmV4dFZhbHVlOwogICAgZnVuY3Rpb24gZGVjb2RlQUNTdWNjZXNzaXZlKGNvbXBvbmVudCwgb2Zmc2V0KSB7CiAgICAgIHZhciBrID0gc3BlY3RyYWxTdGFydDsKICAgICAgdmFyIGUgPSBzcGVjdHJhbEVuZDsKICAgICAgdmFyIHIgPSAwOwogICAgICB2YXIgczsKICAgICAgdmFyIHJzOwogICAgICB3aGlsZSAoayA8PSBlKSB7CiAgICAgICAgdmFyIHogPSBkY3RaaWdaYWdba107CiAgICAgICAgc3dpdGNoIChzdWNjZXNzaXZlQUNTdGF0ZSkgewogICAgICAgIGNhc2UgMDogLy8gaW5pdGlhbCBzdGF0ZQogICAgICAgICAgcnMgPSBkZWNvZGVIdWZmbWFuKGNvbXBvbmVudC5odWZmbWFuVGFibGVBQyk7CiAgICAgICAgICBzID0gcnMgJiAxNTsKICAgICAgICAgIHIgPSBycyA+PiA0OwogICAgICAgICAgaWYgKHMgPT09IDApIHsKICAgICAgICAgICAgaWYgKHIgPCAxNSkgewogICAgICAgICAgICAgIGVvYnJ1biA9IHJlY2VpdmUocikgKyAoMSA8PCByKTsKICAgICAgICAgICAgICBzdWNjZXNzaXZlQUNTdGF0ZSA9IDQ7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgciA9IDE2OwogICAgICAgICAgICAgIHN1Y2Nlc3NpdmVBQ1N0YXRlID0gMTsKICAgICAgICAgICAgfQogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKHMgIT09IDEpIHsKICAgICAgICAgICAgICB0aHJvdyAnaW52YWxpZCBBQ24gZW5jb2RpbmcnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHN1Y2Nlc3NpdmVBQ05leHRWYWx1ZSA9IHJlY2VpdmVBbmRFeHRlbmQocyk7CiAgICAgICAgICAgIHN1Y2Nlc3NpdmVBQ1N0YXRlID0gciA/IDIgOiAzOwogICAgICAgICAgfQogICAgICAgICAgY29udGludWU7CiAgICAgICAgY2FzZSAxOiAvLyBza2lwcGluZyByIHplcm8gaXRlbXMKICAgICAgICBjYXNlIDI6CiAgICAgICAgICBpZiAoY29tcG9uZW50LmJsb2NrRGF0YVtvZmZzZXQgKyB6XSkgewogICAgICAgICAgICBjb21wb25lbnQuYmxvY2tEYXRhW29mZnNldCArIHpdICs9IChyZWFkQml0KCkgPDwgc3VjY2Vzc2l2ZSk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByLS07CiAgICAgICAgICAgIGlmIChyID09PSAwKSB7CiAgICAgICAgICAgICAgc3VjY2Vzc2l2ZUFDU3RhdGUgPSBzdWNjZXNzaXZlQUNTdGF0ZSA9PT0gMiA/IDMgOiAwOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDM6IC8vIHNldCB2YWx1ZSBmb3IgYSB6ZXJvIGl0ZW0KICAgICAgICAgIGlmIChjb21wb25lbnQuYmxvY2tEYXRhW29mZnNldCArIHpdKSB7CiAgICAgICAgICAgIGNvbXBvbmVudC5ibG9ja0RhdGFbb2Zmc2V0ICsgel0gKz0gKHJlYWRCaXQoKSA8PCBzdWNjZXNzaXZlKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGNvbXBvbmVudC5ibG9ja0RhdGFbb2Zmc2V0ICsgel0gPQogICAgICAgICAgICAgIHN1Y2Nlc3NpdmVBQ05leHRWYWx1ZSA8PCBzdWNjZXNzaXZlOwogICAgICAgICAgICBzdWNjZXNzaXZlQUNTdGF0ZSA9IDA7CiAgICAgICAgICB9CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDQ6IC8vIGVvYgogICAgICAgICAgaWYgKGNvbXBvbmVudC5ibG9ja0RhdGFbb2Zmc2V0ICsgel0pIHsKICAgICAgICAgICAgY29tcG9uZW50LmJsb2NrRGF0YVtvZmZzZXQgKyB6XSArPSAocmVhZEJpdCgpIDw8IHN1Y2Nlc3NpdmUpOwogICAgICAgICAgfQogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIGsrKzsKICAgICAgfQogICAgICBpZiAoc3VjY2Vzc2l2ZUFDU3RhdGUgPT09IDQpIHsKICAgICAgICBlb2JydW4tLTsKICAgICAgICBpZiAoZW9icnVuID09PSAwKSB7CiAgICAgICAgICBzdWNjZXNzaXZlQUNTdGF0ZSA9IDA7CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gZGVjb2RlTWN1KGNvbXBvbmVudCwgZGVjb2RlLCBtY3UsIHJvdywgY29sKSB7CiAgICAgIHZhciBtY3VSb3cgPSAobWN1IC8gbWN1c1BlckxpbmUpIHwgMDsKICAgICAgdmFyIG1jdUNvbCA9IG1jdSAlIG1jdXNQZXJMaW5lOwogICAgICB2YXIgYmxvY2tSb3cgPSBtY3VSb3cgKiBjb21wb25lbnQudiArIHJvdzsKICAgICAgdmFyIGJsb2NrQ29sID0gbWN1Q29sICogY29tcG9uZW50LmggKyBjb2w7CiAgICAgIHZhciBvZmZzZXQgPSBnZXRCbG9ja0J1ZmZlck9mZnNldChjb21wb25lbnQsIGJsb2NrUm93LCBibG9ja0NvbCk7CiAgICAgIGRlY29kZShjb21wb25lbnQsIG9mZnNldCk7CiAgICB9CgogICAgZnVuY3Rpb24gZGVjb2RlQmxvY2soY29tcG9uZW50LCBkZWNvZGUsIG1jdSkgewogICAgICB2YXIgYmxvY2tSb3cgPSAobWN1IC8gY29tcG9uZW50LmJsb2Nrc1BlckxpbmUpIHwgMDsKICAgICAgdmFyIGJsb2NrQ29sID0gbWN1ICUgY29tcG9uZW50LmJsb2Nrc1BlckxpbmU7CiAgICAgIHZhciBvZmZzZXQgPSBnZXRCbG9ja0J1ZmZlck9mZnNldChjb21wb25lbnQsIGJsb2NrUm93LCBibG9ja0NvbCk7CiAgICAgIGRlY29kZShjb21wb25lbnQsIG9mZnNldCk7CiAgICB9CgogICAgdmFyIGNvbXBvbmVudHNMZW5ndGggPSBjb21wb25lbnRzLmxlbmd0aDsKICAgIHZhciBjb21wb25lbnQsIGksIGosIGssIG47CiAgICB2YXIgZGVjb2RlRm47CiAgICBpZiAocHJvZ3Jlc3NpdmUpIHsKICAgICAgaWYgKHNwZWN0cmFsU3RhcnQgPT09IDApIHsKICAgICAgICBkZWNvZGVGbiA9IHN1Y2Nlc3NpdmVQcmV2ID09PSAwID8gZGVjb2RlRENGaXJzdCA6IGRlY29kZURDU3VjY2Vzc2l2ZTsKICAgICAgfSBlbHNlIHsKICAgICAgICBkZWNvZGVGbiA9IHN1Y2Nlc3NpdmVQcmV2ID09PSAwID8gZGVjb2RlQUNGaXJzdCA6IGRlY29kZUFDU3VjY2Vzc2l2ZTsKICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgZGVjb2RlRm4gPSBkZWNvZGVCYXNlbGluZTsKICAgIH0KCiAgICB2YXIgbWN1ID0gMCwgbWFya2VyOwogICAgdmFyIG1jdUV4cGVjdGVkOwogICAgaWYgKGNvbXBvbmVudHNMZW5ndGggPT09IDEpIHsKICAgICAgbWN1RXhwZWN0ZWQgPSBjb21wb25lbnRzWzBdLmJsb2Nrc1BlckxpbmUgKiBjb21wb25lbnRzWzBdLmJsb2Nrc1BlckNvbHVtbjsKICAgIH0gZWxzZSB7CiAgICAgIG1jdUV4cGVjdGVkID0gbWN1c1BlckxpbmUgKiBmcmFtZS5tY3VzUGVyQ29sdW1uOwogICAgfQogICAgaWYgKCFyZXNldEludGVydmFsKSB7CiAgICAgIHJlc2V0SW50ZXJ2YWwgPSBtY3VFeHBlY3RlZDsKICAgIH0KCiAgICB2YXIgaCwgdjsKICAgIHdoaWxlIChtY3UgPCBtY3VFeHBlY3RlZCkgewogICAgICAvLyByZXNldCBpbnRlcnZhbCBzdHVmZgogICAgICBmb3IgKGkgPSAwOyBpIDwgY29tcG9uZW50c0xlbmd0aDsgaSsrKSB7CiAgICAgICAgY29tcG9uZW50c1tpXS5wcmVkID0gMDsKICAgICAgfQogICAgICBlb2JydW4gPSAwOwoKICAgICAgaWYgKGNvbXBvbmVudHNMZW5ndGggPT09IDEpIHsKICAgICAgICBjb21wb25lbnQgPSBjb21wb25lbnRzWzBdOwogICAgICAgIGZvciAobiA9IDA7IG4gPCByZXNldEludGVydmFsOyBuKyspIHsKICAgICAgICAgIGRlY29kZUJsb2NrKGNvbXBvbmVudCwgZGVjb2RlRm4sIG1jdSk7CiAgICAgICAgICBtY3UrKzsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZm9yIChuID0gMDsgbiA8IHJlc2V0SW50ZXJ2YWw7IG4rKykgewogICAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvbXBvbmVudHNMZW5ndGg7IGkrKykgewogICAgICAgICAgICBjb21wb25lbnQgPSBjb21wb25lbnRzW2ldOwogICAgICAgICAgICBoID0gY29tcG9uZW50Lmg7CiAgICAgICAgICAgIHYgPSBjb21wb25lbnQudjsKICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IHY7IGorKykgewogICAgICAgICAgICAgIGZvciAoayA9IDA7IGsgPCBoOyBrKyspIHsKICAgICAgICAgICAgICAgIGRlY29kZU1jdShjb21wb25lbnQsIGRlY29kZUZuLCBtY3UsIGosIGspOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgbWN1Kys7CiAgICAgICAgfQogICAgICB9CgogICAgICAvLyBmaW5kIG1hcmtlcgogICAgICBiaXRzQ291bnQgPSAwOwogICAgICBtYXJrZXIgPSAoZGF0YVtvZmZzZXRdIDw8IDgpIHwgZGF0YVtvZmZzZXQgKyAxXTsKICAgICAgaWYgKG1hcmtlciA8PSAweEZGMDApIHsKICAgICAgICB0aHJvdyAnbWFya2VyIHdhcyBub3QgZm91bmQnOwogICAgICB9CgogICAgICBpZiAobWFya2VyID49IDB4RkZEMCAmJiBtYXJrZXIgPD0gMHhGRkQ3KSB7IC8vIFJTVHgKICAgICAgICBvZmZzZXQgKz0gMjsKICAgICAgfSBlbHNlIHsKICAgICAgICBicmVhazsKICAgICAgfQogICAgfQoKICAgIHJldHVybiBvZmZzZXQgLSBzdGFydE9mZnNldDsKICB9CgogIC8vIEEgcG9ydCBvZiBwb3BwbGVyJ3MgSURDVCBtZXRob2Qgd2hpY2ggaW4gdHVybiBpcyB0YWtlbiBmcm9tOgogIC8vICAgQ2hyaXN0b3BoIExvZWZmbGVyLCBBZHJpYWFuIExpZ3RlbmJlcmcsIEdlb3JnZSBTLiBNb3NjaHl0eiwKICAvLyAgICdQcmFjdGljYWwgRmFzdCAxLUQgRENUIEFsZ29yaXRobXMgd2l0aCAxMSBNdWx0aXBsaWNhdGlvbnMnLAogIC8vICAgSUVFRSBJbnRsLiBDb25mLiBvbiBBY291c3RpY3MsIFNwZWVjaCAmIFNpZ25hbCBQcm9jZXNzaW5nLCAxOTg5LAogIC8vICAgOTg4LTk5MS4KICBmdW5jdGlvbiBxdWFudGl6ZUFuZEludmVyc2UoY29tcG9uZW50LCBibG9ja0J1ZmZlck9mZnNldCwgcCkgewogICAgdmFyIHF0ID0gY29tcG9uZW50LnF1YW50aXphdGlvblRhYmxlLCBibG9ja0RhdGEgPSBjb21wb25lbnQuYmxvY2tEYXRhOwogICAgdmFyIHYwLCB2MSwgdjIsIHYzLCB2NCwgdjUsIHY2LCB2NzsKICAgIHZhciBwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBwNiwgcDc7CiAgICB2YXIgdDsKCiAgICAvLyBpbnZlcnNlIERDVCBvbiByb3dzCiAgICBmb3IgKHZhciByb3cgPSAwOyByb3cgPCA2NDsgcm93ICs9IDgpIHsKICAgICAgLy8gZ2F0aGVyIGJsb2NrIGRhdGEKICAgICAgcDAgPSBibG9ja0RhdGFbYmxvY2tCdWZmZXJPZmZzZXQgKyByb3ddOwogICAgICBwMSA9IGJsb2NrRGF0YVtibG9ja0J1ZmZlck9mZnNldCArIHJvdyArIDFdOwogICAgICBwMiA9IGJsb2NrRGF0YVtibG9ja0J1ZmZlck9mZnNldCArIHJvdyArIDJdOwogICAgICBwMyA9IGJsb2NrRGF0YVtibG9ja0J1ZmZlck9mZnNldCArIHJvdyArIDNdOwogICAgICBwNCA9IGJsb2NrRGF0YVtibG9ja0J1ZmZlck9mZnNldCArIHJvdyArIDRdOwogICAgICBwNSA9IGJsb2NrRGF0YVtibG9ja0J1ZmZlck9mZnNldCArIHJvdyArIDVdOwogICAgICBwNiA9IGJsb2NrRGF0YVtibG9ja0J1ZmZlck9mZnNldCArIHJvdyArIDZdOwogICAgICBwNyA9IGJsb2NrRGF0YVtibG9ja0J1ZmZlck9mZnNldCArIHJvdyArIDddOwoKICAgICAgLy8gZGVxdWFudCBwMAogICAgICBwMCAqPSBxdFtyb3ddOwoKICAgICAgLy8gY2hlY2sgZm9yIGFsbC16ZXJvIEFDIGNvZWZmaWNpZW50cwogICAgICBpZiAoKHAxIHwgcDIgfCBwMyB8IHA0IHwgcDUgfCBwNiB8IHA3KSA9PT0gMCkgewogICAgICAgIHQgPSAoZGN0U3FydDIgKiBwMCArIDUxMikgPj4gMTA7CiAgICAgICAgcFtyb3ddID0gdDsKICAgICAgICBwW3JvdyArIDFdID0gdDsKICAgICAgICBwW3JvdyArIDJdID0gdDsKICAgICAgICBwW3JvdyArIDNdID0gdDsKICAgICAgICBwW3JvdyArIDRdID0gdDsKICAgICAgICBwW3JvdyArIDVdID0gdDsKICAgICAgICBwW3JvdyArIDZdID0gdDsKICAgICAgICBwW3JvdyArIDddID0gdDsKICAgICAgICBjb250aW51ZTsKICAgICAgfQogICAgICAvLyBkZXF1YW50IHAxIC4uLiBwNwogICAgICBwMSAqPSBxdFtyb3cgKyAxXTsKICAgICAgcDIgKj0gcXRbcm93ICsgMl07CiAgICAgIHAzICo9IHF0W3JvdyArIDNdOwogICAgICBwNCAqPSBxdFtyb3cgKyA0XTsKICAgICAgcDUgKj0gcXRbcm93ICsgNV07CiAgICAgIHA2ICo9IHF0W3JvdyArIDZdOwogICAgICBwNyAqPSBxdFtyb3cgKyA3XTsKCiAgICAgIC8vIHN0YWdlIDQKICAgICAgdjAgPSAoZGN0U3FydDIgKiBwMCArIDEyOCkgPj4gODsKICAgICAgdjEgPSAoZGN0U3FydDIgKiBwNCArIDEyOCkgPj4gODsKICAgICAgdjIgPSBwMjsKICAgICAgdjMgPSBwNjsKICAgICAgdjQgPSAoZGN0U3FydDFkMiAqIChwMSAtIHA3KSArIDEyOCkgPj4gODsKICAgICAgdjcgPSAoZGN0U3FydDFkMiAqIChwMSArIHA3KSArIDEyOCkgPj4gODsKICAgICAgdjUgPSBwMyA8PCA0OwogICAgICB2NiA9IHA1IDw8IDQ7CgogICAgICAvLyBzdGFnZSAzCiAgICAgIHYwID0gKHYwICsgdjEgKyAxKSA+PiAxOwogICAgICB2MSA9IHYwIC0gdjE7CiAgICAgIHQgID0gKHYyICogZGN0U2luNiArIHYzICogZGN0Q29zNiArIDEyOCkgPj4gODsKICAgICAgdjIgPSAodjIgKiBkY3RDb3M2IC0gdjMgKiBkY3RTaW42ICsgMTI4KSA+PiA4OwogICAgICB2MyA9IHQ7CiAgICAgIHY0ID0gKHY0ICsgdjYgKyAxKSA+PiAxOwogICAgICB2NiA9IHY0IC0gdjY7CiAgICAgIHY3ID0gKHY3ICsgdjUgKyAxKSA+PiAxOwogICAgICB2NSA9IHY3IC0gdjU7CgogICAgICAvLyBzdGFnZSAyCiAgICAgIHYwID0gKHYwICsgdjMgKyAxKSA+PiAxOwogICAgICB2MyA9IHYwIC0gdjM7CiAgICAgIHYxID0gKHYxICsgdjIgKyAxKSA+PiAxOwogICAgICB2MiA9IHYxIC0gdjI7CiAgICAgIHQgID0gKHY0ICogZGN0U2luMyArIHY3ICogZGN0Q29zMyArIDIwNDgpID4+IDEyOwogICAgICB2NCA9ICh2NCAqIGRjdENvczMgLSB2NyAqIGRjdFNpbjMgKyAyMDQ4KSA+PiAxMjsKICAgICAgdjcgPSB0OwogICAgICB0ICA9ICh2NSAqIGRjdFNpbjEgKyB2NiAqIGRjdENvczEgKyAyMDQ4KSA+PiAxMjsKICAgICAgdjUgPSAodjUgKiBkY3RDb3MxIC0gdjYgKiBkY3RTaW4xICsgMjA0OCkgPj4gMTI7CiAgICAgIHY2ID0gdDsKCiAgICAgIC8vIHN0YWdlIDEKICAgICAgcFtyb3ddID0gdjAgKyB2NzsKICAgICAgcFtyb3cgKyA3XSA9IHYwIC0gdjc7CiAgICAgIHBbcm93ICsgMV0gPSB2MSArIHY2OwogICAgICBwW3JvdyArIDZdID0gdjEgLSB2NjsKICAgICAgcFtyb3cgKyAyXSA9IHYyICsgdjU7CiAgICAgIHBbcm93ICsgNV0gPSB2MiAtIHY1OwogICAgICBwW3JvdyArIDNdID0gdjMgKyB2NDsKICAgICAgcFtyb3cgKyA0XSA9IHYzIC0gdjQ7CiAgICB9CgogICAgLy8gaW52ZXJzZSBEQ1Qgb24gY29sdW1ucwogICAgZm9yICh2YXIgY29sID0gMDsgY29sIDwgODsgKytjb2wpIHsKICAgICAgcDAgPSBwW2NvbF07CiAgICAgIHAxID0gcFtjb2wgKyAgOF07CiAgICAgIHAyID0gcFtjb2wgKyAxNl07CiAgICAgIHAzID0gcFtjb2wgKyAyNF07CiAgICAgIHA0ID0gcFtjb2wgKyAzMl07CiAgICAgIHA1ID0gcFtjb2wgKyA0MF07CiAgICAgIHA2ID0gcFtjb2wgKyA0OF07CiAgICAgIHA3ID0gcFtjb2wgKyA1Nl07CgogICAgICAvLyBjaGVjayBmb3IgYWxsLXplcm8gQUMgY29lZmZpY2llbnRzCiAgICAgIGlmICgocDEgfCBwMiB8IHAzIHwgcDQgfCBwNSB8IHA2IHwgcDcpID09PSAwKSB7CiAgICAgICAgdCA9IChkY3RTcXJ0MiAqIHAwICsgODE5MikgPj4gMTQ7CiAgICAgICAgLy8gY29udmVydCB0byA4IGJpdAogICAgICAgIHQgPSAodCA8IC0yMDQwKSA/IDAgOiAodCA+PSAyMDI0KSA/IDI1NSA6ICh0ICsgMjA1NikgPj4gNDsKICAgICAgICBibG9ja0RhdGFbYmxvY2tCdWZmZXJPZmZzZXQgKyBjb2xdID0gdDsKICAgICAgICBibG9ja0RhdGFbYmxvY2tCdWZmZXJPZmZzZXQgKyBjb2wgKyAgOF0gPSB0OwogICAgICAgIGJsb2NrRGF0YVtibG9ja0J1ZmZlck9mZnNldCArIGNvbCArIDE2XSA9IHQ7CiAgICAgICAgYmxvY2tEYXRhW2Jsb2NrQnVmZmVyT2Zmc2V0ICsgY29sICsgMjRdID0gdDsKICAgICAgICBibG9ja0RhdGFbYmxvY2tCdWZmZXJPZmZzZXQgKyBjb2wgKyAzMl0gPSB0OwogICAgICAgIGJsb2NrRGF0YVtibG9ja0J1ZmZlck9mZnNldCArIGNvbCArIDQwXSA9IHQ7CiAgICAgICAgYmxvY2tEYXRhW2Jsb2NrQnVmZmVyT2Zmc2V0ICsgY29sICsgNDhdID0gdDsKICAgICAgICBibG9ja0RhdGFbYmxvY2tCdWZmZXJPZmZzZXQgKyBjb2wgKyA1Nl0gPSB0OwogICAgICAgIGNvbnRpbnVlOwogICAgICB9CgogICAgICAvLyBzdGFnZSA0CiAgICAgIHYwID0gKGRjdFNxcnQyICogcDAgKyAyMDQ4KSA+PiAxMjsKICAgICAgdjEgPSAoZGN0U3FydDIgKiBwNCArIDIwNDgpID4+IDEyOwogICAgICB2MiA9IHAyOwogICAgICB2MyA9IHA2OwogICAgICB2NCA9IChkY3RTcXJ0MWQyICogKHAxIC0gcDcpICsgMjA0OCkgPj4gMTI7CiAgICAgIHY3ID0gKGRjdFNxcnQxZDIgKiAocDEgKyBwNykgKyAyMDQ4KSA+PiAxMjsKICAgICAgdjUgPSBwMzsKICAgICAgdjYgPSBwNTsKCiAgICAgIC8vIHN0YWdlIDMKICAgICAgLy8gU2hpZnQgdjAgYnkgMTI4LjUgPDwgNSBoZXJlLCBzbyB3ZSBkb24ndCBuZWVkIHRvIHNoaWZ0IHAwLi4ucDcgd2hlbgogICAgICAvLyBjb252ZXJ0aW5nIHRvIFVJbnQ4IHJhbmdlIGxhdGVyLgogICAgICB2MCA9ICgodjAgKyB2MSArIDEpID4+IDEpICsgNDExMjsKICAgICAgdjEgPSB2MCAtIHYxOwogICAgICB0ICA9ICh2MiAqIGRjdFNpbjYgKyB2MyAqIGRjdENvczYgKyAyMDQ4KSA+PiAxMjsKICAgICAgdjIgPSAodjIgKiBkY3RDb3M2IC0gdjMgKiBkY3RTaW42ICsgMjA0OCkgPj4gMTI7CiAgICAgIHYzID0gdDsKICAgICAgdjQgPSAodjQgKyB2NiArIDEpID4+IDE7CiAgICAgIHY2ID0gdjQgLSB2NjsKICAgICAgdjcgPSAodjcgKyB2NSArIDEpID4+IDE7CiAgICAgIHY1ID0gdjcgLSB2NTsKCiAgICAgIC8vIHN0YWdlIDIKICAgICAgdjAgPSAodjAgKyB2MyArIDEpID4+IDE7CiAgICAgIHYzID0gdjAgLSB2MzsKICAgICAgdjEgPSAodjEgKyB2MiArIDEpID4+IDE7CiAgICAgIHYyID0gdjEgLSB2MjsKICAgICAgdCAgPSAodjQgKiBkY3RTaW4zICsgdjcgKiBkY3RDb3MzICsgMjA0OCkgPj4gMTI7CiAgICAgIHY0ID0gKHY0ICogZGN0Q29zMyAtIHY3ICogZGN0U2luMyArIDIwNDgpID4+IDEyOwogICAgICB2NyA9IHQ7CiAgICAgIHQgID0gKHY1ICogZGN0U2luMSArIHY2ICogZGN0Q29zMSArIDIwNDgpID4+IDEyOwogICAgICB2NSA9ICh2NSAqIGRjdENvczEgLSB2NiAqIGRjdFNpbjEgKyAyMDQ4KSA+PiAxMjsKICAgICAgdjYgPSB0OwoKICAgICAgLy8gc3RhZ2UgMQogICAgICBwMCA9IHYwICsgdjc7CiAgICAgIHA3ID0gdjAgLSB2NzsKICAgICAgcDEgPSB2MSArIHY2OwogICAgICBwNiA9IHYxIC0gdjY7CiAgICAgIHAyID0gdjIgKyB2NTsKICAgICAgcDUgPSB2MiAtIHY1OwogICAgICBwMyA9IHYzICsgdjQ7CiAgICAgIHA0ID0gdjMgLSB2NDsKCiAgICAgIC8vIGNvbnZlcnQgdG8gOC1iaXQgaW50ZWdlcnMKICAgICAgcDAgPSAocDAgPCAxNikgPyAwIDogKHAwID49IDQwODApID8gMjU1IDogcDAgPj4gNDsKICAgICAgcDEgPSAocDEgPCAxNikgPyAwIDogKHAxID49IDQwODApID8gMjU1IDogcDEgPj4gNDsKICAgICAgcDIgPSAocDIgPCAxNikgPyAwIDogKHAyID49IDQwODApID8gMjU1IDogcDIgPj4gNDsKICAgICAgcDMgPSAocDMgPCAxNikgPyAwIDogKHAzID49IDQwODApID8gMjU1IDogcDMgPj4gNDsKICAgICAgcDQgPSAocDQgPCAxNikgPyAwIDogKHA0ID49IDQwODApID8gMjU1IDogcDQgPj4gNDsKICAgICAgcDUgPSAocDUgPCAxNikgPyAwIDogKHA1ID49IDQwODApID8gMjU1IDogcDUgPj4gNDsKICAgICAgcDYgPSAocDYgPCAxNikgPyAwIDogKHA2ID49IDQwODApID8gMjU1IDogcDYgPj4gNDsKICAgICAgcDcgPSAocDcgPCAxNikgPyAwIDogKHA3ID49IDQwODApID8gMjU1IDogcDcgPj4gNDsKCiAgICAgIC8vIHN0b3JlIGJsb2NrIGRhdGEKICAgICAgYmxvY2tEYXRhW2Jsb2NrQnVmZmVyT2Zmc2V0ICsgY29sXSA9IHAwOwogICAgICBibG9ja0RhdGFbYmxvY2tCdWZmZXJPZmZzZXQgKyBjb2wgKyAgOF0gPSBwMTsKICAgICAgYmxvY2tEYXRhW2Jsb2NrQnVmZmVyT2Zmc2V0ICsgY29sICsgMTZdID0gcDI7CiAgICAgIGJsb2NrRGF0YVtibG9ja0J1ZmZlck9mZnNldCArIGNvbCArIDI0XSA9IHAzOwogICAgICBibG9ja0RhdGFbYmxvY2tCdWZmZXJPZmZzZXQgKyBjb2wgKyAzMl0gPSBwNDsKICAgICAgYmxvY2tEYXRhW2Jsb2NrQnVmZmVyT2Zmc2V0ICsgY29sICsgNDBdID0gcDU7CiAgICAgIGJsb2NrRGF0YVtibG9ja0J1ZmZlck9mZnNldCArIGNvbCArIDQ4XSA9IHA2OwogICAgICBibG9ja0RhdGFbYmxvY2tCdWZmZXJPZmZzZXQgKyBjb2wgKyA1Nl0gPSBwNzsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGJ1aWxkQ29tcG9uZW50RGF0YShmcmFtZSwgY29tcG9uZW50KSB7CiAgICB2YXIgYmxvY2tzUGVyTGluZSA9IGNvbXBvbmVudC5ibG9ja3NQZXJMaW5lOwogICAgdmFyIGJsb2Nrc1BlckNvbHVtbiA9IGNvbXBvbmVudC5ibG9ja3NQZXJDb2x1bW47CiAgICB2YXIgY29tcHV0YXRpb25CdWZmZXIgPSBuZXcgSW50MTZBcnJheSg2NCk7CgogICAgZm9yICh2YXIgYmxvY2tSb3cgPSAwOyBibG9ja1JvdyA8IGJsb2Nrc1BlckNvbHVtbjsgYmxvY2tSb3crKykgewogICAgICBmb3IgKHZhciBibG9ja0NvbCA9IDA7IGJsb2NrQ29sIDwgYmxvY2tzUGVyTGluZTsgYmxvY2tDb2wrKykgewogICAgICAgIHZhciBvZmZzZXQgPSBnZXRCbG9ja0J1ZmZlck9mZnNldChjb21wb25lbnQsIGJsb2NrUm93LCBibG9ja0NvbCk7CiAgICAgICAgcXVhbnRpemVBbmRJbnZlcnNlKGNvbXBvbmVudCwgb2Zmc2V0LCBjb21wdXRhdGlvbkJ1ZmZlcik7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBjb21wb25lbnQuYmxvY2tEYXRhOwogIH0KCiAgZnVuY3Rpb24gY2xhbXAwdG8yNTUoYSkgewogICAgcmV0dXJuIGEgPD0gMCA/IDAgOiBhID49IDI1NSA/IDI1NSA6IGE7CiAgfQoKICBjb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSB7CiAgICBwYXJzZTogZnVuY3Rpb24gcGFyc2UoZGF0YSkgewoKICAgICAgZnVuY3Rpb24gcmVhZFVpbnQxNigpIHsKICAgICAgICB2YXIgdmFsdWUgPSAoZGF0YVtvZmZzZXRdIDw8IDgpIHwgZGF0YVtvZmZzZXQgKyAxXTsKICAgICAgICBvZmZzZXQgKz0gMjsKICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgIH0KCiAgICAgIGZ1bmN0aW9uIHJlYWREYXRhQmxvY2soKSB7CiAgICAgICAgdmFyIGxlbmd0aCA9IHJlYWRVaW50MTYoKTsKICAgICAgICB2YXIgYXJyYXkgPSBkYXRhLnN1YmFycmF5KG9mZnNldCwgb2Zmc2V0ICsgbGVuZ3RoIC0gMik7CiAgICAgICAgb2Zmc2V0ICs9IGFycmF5Lmxlbmd0aDsKICAgICAgICByZXR1cm4gYXJyYXk7CiAgICAgIH0KCiAgICAgIGZ1bmN0aW9uIHByZXBhcmVDb21wb25lbnRzKGZyYW1lKSB7CiAgICAgICAgdmFyIG1jdXNQZXJMaW5lID0gTWF0aC5jZWlsKGZyYW1lLnNhbXBsZXNQZXJMaW5lIC8gOCAvIGZyYW1lLm1heEgpOwogICAgICAgIHZhciBtY3VzUGVyQ29sdW1uID0gTWF0aC5jZWlsKGZyYW1lLnNjYW5MaW5lcyAvIDggLyBmcmFtZS5tYXhWKTsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZyYW1lLmNvbXBvbmVudHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgIGNvbXBvbmVudCA9IGZyYW1lLmNvbXBvbmVudHNbaV07CiAgICAgICAgICB2YXIgYmxvY2tzUGVyTGluZSA9IE1hdGguY2VpbChNYXRoLmNlaWwoZnJhbWUuc2FtcGxlc1BlckxpbmUgLyA4KSAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQuaCAvIGZyYW1lLm1heEgpOwogICAgICAgICAgdmFyIGJsb2Nrc1BlckNvbHVtbiA9IE1hdGguY2VpbChNYXRoLmNlaWwoZnJhbWUuc2NhbkxpbmVzICAvIDgpICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnYgLyBmcmFtZS5tYXhWKTsKICAgICAgICAgIHZhciBibG9ja3NQZXJMaW5lRm9yTWN1ID0gbWN1c1BlckxpbmUgKiBjb21wb25lbnQuaDsKICAgICAgICAgIHZhciBibG9ja3NQZXJDb2x1bW5Gb3JNY3UgPSBtY3VzUGVyQ29sdW1uICogY29tcG9uZW50LnY7CgogICAgICAgICAgdmFyIGJsb2Nrc0J1ZmZlclNpemUgPSA2NCAqIGJsb2Nrc1BlckNvbHVtbkZvck1jdSAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJsb2Nrc1BlckxpbmVGb3JNY3UgKyAxKTsKICAgICAgICAgIGNvbXBvbmVudC5ibG9ja0RhdGEgPSBuZXcgSW50MTZBcnJheShibG9ja3NCdWZmZXJTaXplKTsKICAgICAgICAgIGNvbXBvbmVudC5ibG9ja3NQZXJMaW5lID0gYmxvY2tzUGVyTGluZTsKICAgICAgICAgIGNvbXBvbmVudC5ibG9ja3NQZXJDb2x1bW4gPSBibG9ja3NQZXJDb2x1bW47CiAgICAgICAgfQogICAgICAgIGZyYW1lLm1jdXNQZXJMaW5lID0gbWN1c1BlckxpbmU7CiAgICAgICAgZnJhbWUubWN1c1BlckNvbHVtbiA9IG1jdXNQZXJDb2x1bW47CiAgICAgIH0KCiAgICAgIHZhciBvZmZzZXQgPSAwLCBsZW5ndGggPSBkYXRhLmxlbmd0aDsKICAgICAgdmFyIGpmaWYgPSBudWxsOwogICAgICB2YXIgYWRvYmUgPSBudWxsOwogICAgICB2YXIgcGl4ZWxzID0gbnVsbDsKICAgICAgdmFyIGZyYW1lLCByZXNldEludGVydmFsOwogICAgICB2YXIgcXVhbnRpemF0aW9uVGFibGVzID0gW107CiAgICAgIHZhciBodWZmbWFuVGFibGVzQUMgPSBbXSwgaHVmZm1hblRhYmxlc0RDID0gW107CiAgICAgIHZhciBmaWxlTWFya2VyID0gcmVhZFVpbnQxNigpOwogICAgICBpZiAoZmlsZU1hcmtlciAhPT0gMHhGRkQ4KSB7IC8vIFNPSSAoU3RhcnQgb2YgSW1hZ2UpCiAgICAgICAgdGhyb3cgJ1NPSSBub3QgZm91bmQnOwogICAgICB9CgogICAgICBmaWxlTWFya2VyID0gcmVhZFVpbnQxNigpOwogICAgICB3aGlsZSAoZmlsZU1hcmtlciAhPT0gMHhGRkQ5KSB7IC8vIEVPSSAoRW5kIG9mIGltYWdlKQogICAgICAgIHZhciBpLCBqLCBsOwogICAgICAgIHN3aXRjaChmaWxlTWFya2VyKSB7CiAgICAgICAgICBjYXNlIDB4RkZFMDogLy8gQVBQMCAoQXBwbGljYXRpb24gU3BlY2lmaWMpCiAgICAgICAgICBjYXNlIDB4RkZFMTogLy8gQVBQMQogICAgICAgICAgY2FzZSAweEZGRTI6IC8vIEFQUDIKICAgICAgICAgIGNhc2UgMHhGRkUzOiAvLyBBUFAzCiAgICAgICAgICBjYXNlIDB4RkZFNDogLy8gQVBQNAogICAgICAgICAgY2FzZSAweEZGRTU6IC8vIEFQUDUKICAgICAgICAgIGNhc2UgMHhGRkU2OiAvLyBBUFA2CiAgICAgICAgICBjYXNlIDB4RkZFNzogLy8gQVBQNwogICAgICAgICAgY2FzZSAweEZGRTg6IC8vIEFQUDgKICAgICAgICAgIGNhc2UgMHhGRkU5OiAvLyBBUFA5CiAgICAgICAgICBjYXNlIDB4RkZFQTogLy8gQVBQMTAKICAgICAgICAgIGNhc2UgMHhGRkVCOiAvLyBBUFAxMQogICAgICAgICAgY2FzZSAweEZGRUM6IC8vIEFQUDEyCiAgICAgICAgICBjYXNlIDB4RkZFRDogLy8gQVBQMTMKICAgICAgICAgIGNhc2UgMHhGRkVFOiAvLyBBUFAxNAogICAgICAgICAgY2FzZSAweEZGRUY6IC8vIEFQUDE1CiAgICAgICAgICBjYXNlIDB4RkZGRTogLy8gQ09NIChDb21tZW50KQogICAgICAgICAgICB2YXIgYXBwRGF0YSA9IHJlYWREYXRhQmxvY2soKTsKCiAgICAgICAgICAgIGlmIChmaWxlTWFya2VyID09PSAweEZGRTApIHsKICAgICAgICAgICAgICBpZiAoYXBwRGF0YVswXSA9PT0gMHg0QSAmJiBhcHBEYXRhWzFdID09PSAweDQ2ICYmCiAgICAgICAgICAgICAgICAgIGFwcERhdGFbMl0gPT09IDB4NDkgJiYgYXBwRGF0YVszXSA9PT0gMHg0NiAmJgogICAgICAgICAgICAgICAgICBhcHBEYXRhWzRdID09PSAwKSB7IC8vICdKRklGXHgwMCcKICAgICAgICAgICAgICAgIGpmaWYgPSB7CiAgICAgICAgICAgICAgICAgIHZlcnNpb246IHsgbWFqb3I6IGFwcERhdGFbNV0sIG1pbm9yOiBhcHBEYXRhWzZdIH0sCiAgICAgICAgICAgICAgICAgIGRlbnNpdHlVbml0czogYXBwRGF0YVs3XSwKICAgICAgICAgICAgICAgICAgeERlbnNpdHk6IChhcHBEYXRhWzhdIDw8IDgpIHwgYXBwRGF0YVs5XSwKICAgICAgICAgICAgICAgICAgeURlbnNpdHk6IChhcHBEYXRhWzEwXSA8PCA4KSB8IGFwcERhdGFbMTFdLAogICAgICAgICAgICAgICAgICB0aHVtYldpZHRoOiBhcHBEYXRhWzEyXSwKICAgICAgICAgICAgICAgICAgdGh1bWJIZWlnaHQ6IGFwcERhdGFbMTNdLAogICAgICAgICAgICAgICAgICB0aHVtYkRhdGE6IGFwcERhdGEuc3ViYXJyYXkoMTQsIDE0ICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMgKiBhcHBEYXRhWzEyXSAqIGFwcERhdGFbMTNdKQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gVE9ETyBBUFAxIC0gRXhpZgogICAgICAgICAgICBpZiAoZmlsZU1hcmtlciA9PT0gMHhGRkVFKSB7CiAgICAgICAgICAgICAgaWYgKGFwcERhdGFbMF0gPT09IDB4NDEgJiYgYXBwRGF0YVsxXSA9PT0gMHg2NCAmJgogICAgICAgICAgICAgICAgICBhcHBEYXRhWzJdID09PSAweDZGICYmIGFwcERhdGFbM10gPT09IDB4NjIgJiYKICAgICAgICAgICAgICAgICAgYXBwRGF0YVs0XSA9PT0gMHg2NSkgeyAvLyAnQWRvYmUnCiAgICAgICAgICAgICAgICBhZG9iZSA9IHsKICAgICAgICAgICAgICAgICAgdmVyc2lvbjogKGFwcERhdGFbNV0gPDwgOCkgfCBhcHBEYXRhWzZdLAogICAgICAgICAgICAgICAgICBmbGFnczA6IChhcHBEYXRhWzddIDw8IDgpIHwgYXBwRGF0YVs4XSwKICAgICAgICAgICAgICAgICAgZmxhZ3MxOiAoYXBwRGF0YVs5XSA8PCA4KSB8IGFwcERhdGFbMTBdLAogICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1Db2RlOiBhcHBEYXRhWzExXQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgY2FzZSAweEZGREI6IC8vIERRVCAoRGVmaW5lIFF1YW50aXphdGlvbiBUYWJsZXMpCiAgICAgICAgICAgIHZhciBxdWFudGl6YXRpb25UYWJsZXNMZW5ndGggPSByZWFkVWludDE2KCk7CiAgICAgICAgICAgIHZhciBxdWFudGl6YXRpb25UYWJsZXNFbmQgPSBxdWFudGl6YXRpb25UYWJsZXNMZW5ndGggKyBvZmZzZXQgLSAyOwogICAgICAgICAgICB2YXIgejsKICAgICAgICAgICAgd2hpbGUgKG9mZnNldCA8IHF1YW50aXphdGlvblRhYmxlc0VuZCkgewogICAgICAgICAgICAgIHZhciBxdWFudGl6YXRpb25UYWJsZVNwZWMgPSBkYXRhW29mZnNldCsrXTsKICAgICAgICAgICAgICB2YXIgdGFibGVEYXRhID0gbmV3IFVpbnQxNkFycmF5KDY0KTsKICAgICAgICAgICAgICBpZiAoKHF1YW50aXphdGlvblRhYmxlU3BlYyA+PiA0KSA9PT0gMCkgeyAvLyA4IGJpdCB2YWx1ZXMKICAgICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCA2NDsgaisrKSB7CiAgICAgICAgICAgICAgICAgIHogPSBkY3RaaWdaYWdbal07CiAgICAgICAgICAgICAgICAgIHRhYmxlRGF0YVt6XSA9IGRhdGFbb2Zmc2V0KytdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0gZWxzZSBpZiAoKHF1YW50aXphdGlvblRhYmxlU3BlYyA+PiA0KSA9PT0gMSkgeyAvLzE2IGJpdAogICAgICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IDY0OyBqKyspIHsKICAgICAgICAgICAgICAgICAgeiA9IGRjdFppZ1phZ1tqXTsKICAgICAgICAgICAgICAgICAgdGFibGVEYXRhW3pdID0gcmVhZFVpbnQxNigpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB0aHJvdyAnRFFUOiBpbnZhbGlkIHRhYmxlIHNwZWMnOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBxdWFudGl6YXRpb25UYWJsZXNbcXVhbnRpemF0aW9uVGFibGVTcGVjICYgMTVdID0gdGFibGVEYXRhOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgIGNhc2UgMHhGRkMwOiAvLyBTT0YwIChTdGFydCBvZiBGcmFtZSwgQmFzZWxpbmUgRENUKQogICAgICAgICAgY2FzZSAweEZGQzE6IC8vIFNPRjEgKFN0YXJ0IG9mIEZyYW1lLCBFeHRlbmRlZCBEQ1QpCiAgICAgICAgICBjYXNlIDB4RkZDMjogLy8gU09GMiAoU3RhcnQgb2YgRnJhbWUsIFByb2dyZXNzaXZlIERDVCkKICAgICAgICAgICAgaWYgKGZyYW1lKSB7CiAgICAgICAgICAgICAgdGhyb3cgJ09ubHkgc2luZ2xlIGZyYW1lIEpQRUdzIHN1cHBvcnRlZCc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmVhZFVpbnQxNigpOyAvLyBza2lwIGRhdGEgbGVuZ3RoCiAgICAgICAgICAgIGZyYW1lID0ge307CiAgICAgICAgICAgIGZyYW1lLmV4dGVuZGVkID0gKGZpbGVNYXJrZXIgPT09IDB4RkZDMSk7CiAgICAgICAgICAgIGZyYW1lLnByb2dyZXNzaXZlID0gKGZpbGVNYXJrZXIgPT09IDB4RkZDMik7CiAgICAgICAgICAgIGZyYW1lLnByZWNpc2lvbiA9IGRhdGFbb2Zmc2V0KytdOwogICAgICAgICAgICBmcmFtZS5zY2FuTGluZXMgPSByZWFkVWludDE2KCk7CiAgICAgICAgICAgIGZyYW1lLnNhbXBsZXNQZXJMaW5lID0gcmVhZFVpbnQxNigpOwogICAgICAgICAgICBmcmFtZS5jb21wb25lbnRzID0gW107CiAgICAgICAgICAgIGZyYW1lLmNvbXBvbmVudElkcyA9IHt9OwogICAgICAgICAgICB2YXIgY29tcG9uZW50c0NvdW50ID0gZGF0YVtvZmZzZXQrK10sIGNvbXBvbmVudElkOwogICAgICAgICAgICB2YXIgbWF4SCA9IDAsIG1heFYgPSAwOwogICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY29tcG9uZW50c0NvdW50OyBpKyspIHsKICAgICAgICAgICAgICBjb21wb25lbnRJZCA9IGRhdGFbb2Zmc2V0XTsKICAgICAgICAgICAgICB2YXIgaCA9IGRhdGFbb2Zmc2V0ICsgMV0gPj4gNDsKICAgICAgICAgICAgICB2YXIgdiA9IGRhdGFbb2Zmc2V0ICsgMV0gJiAxNTsKICAgICAgICAgICAgICBpZiAobWF4SCA8IGgpIHsKICAgICAgICAgICAgICAgIG1heEggPSBoOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpZiAobWF4ViA8IHYpIHsKICAgICAgICAgICAgICAgIG1heFYgPSB2OwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB2YXIgcUlkID0gZGF0YVtvZmZzZXQgKyAyXTsKICAgICAgICAgICAgICBsID0gZnJhbWUuY29tcG9uZW50cy5wdXNoKHsKICAgICAgICAgICAgICAgIGg6IGgsCiAgICAgICAgICAgICAgICB2OiB2LAogICAgICAgICAgICAgICAgcXVhbnRpemF0aW9uVGFibGU6IHF1YW50aXphdGlvblRhYmxlc1txSWRdCiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgZnJhbWUuY29tcG9uZW50SWRzW2NvbXBvbmVudElkXSA9IGwgLSAxOwogICAgICAgICAgICAgIG9mZnNldCArPSAzOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZyYW1lLm1heEggPSBtYXhIOwogICAgICAgICAgICBmcmFtZS5tYXhWID0gbWF4VjsKICAgICAgICAgICAgcHJlcGFyZUNvbXBvbmVudHMoZnJhbWUpOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgICBjYXNlIDB4RkZDNDogLy8gREhUIChEZWZpbmUgSHVmZm1hbiBUYWJsZXMpCiAgICAgICAgICAgIHZhciBodWZmbWFuTGVuZ3RoID0gcmVhZFVpbnQxNigpOwogICAgICAgICAgICBmb3IgKGkgPSAyOyBpIDwgaHVmZm1hbkxlbmd0aDspIHsKICAgICAgICAgICAgICB2YXIgaHVmZm1hblRhYmxlU3BlYyA9IGRhdGFbb2Zmc2V0KytdOwogICAgICAgICAgICAgIHZhciBjb2RlTGVuZ3RocyA9IG5ldyBVaW50OEFycmF5KDE2KTsKICAgICAgICAgICAgICB2YXIgY29kZUxlbmd0aFN1bSA9IDA7CiAgICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IDE2OyBqKyssIG9mZnNldCsrKSB7CiAgICAgICAgICAgICAgICBjb2RlTGVuZ3RoU3VtICs9IChjb2RlTGVuZ3Roc1tqXSA9IGRhdGFbb2Zmc2V0XSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHZhciBodWZmbWFuVmFsdWVzID0gbmV3IFVpbnQ4QXJyYXkoY29kZUxlbmd0aFN1bSk7CiAgICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IGNvZGVMZW5ndGhTdW07IGorKywgb2Zmc2V0KyspIHsKICAgICAgICAgICAgICAgIGh1ZmZtYW5WYWx1ZXNbal0gPSBkYXRhW29mZnNldF07CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGkgKz0gMTcgKyBjb2RlTGVuZ3RoU3VtOwoKICAgICAgICAgICAgICAoKGh1ZmZtYW5UYWJsZVNwZWMgPj4gNCkgPT09IDAgPwogICAgICAgICAgICAgICAgaHVmZm1hblRhYmxlc0RDIDogaHVmZm1hblRhYmxlc0FDKVtodWZmbWFuVGFibGVTcGVjICYgMTVdID0KICAgICAgICAgICAgICAgIGJ1aWxkSHVmZm1hblRhYmxlKGNvZGVMZW5ndGhzLCBodWZmbWFuVmFsdWVzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKCiAgICAgICAgICBjYXNlIDB4RkZERDogLy8gRFJJIChEZWZpbmUgUmVzdGFydCBJbnRlcnZhbCkKICAgICAgICAgICAgcmVhZFVpbnQxNigpOyAvLyBza2lwIGRhdGEgbGVuZ3RoCiAgICAgICAgICAgIHJlc2V0SW50ZXJ2YWwgPSByZWFkVWludDE2KCk7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgIGNhc2UgMHhGRkRBOiAvLyBTT1MgKFN0YXJ0IG9mIFNjYW4pCiAgICAgICAgICAgIHZhciBzY2FuTGVuZ3RoID0gcmVhZFVpbnQxNigpOwogICAgICAgICAgICB2YXIgc2VsZWN0b3JzQ291bnQgPSBkYXRhW29mZnNldCsrXTsKICAgICAgICAgICAgdmFyIGNvbXBvbmVudHMgPSBbXSwgY29tcG9uZW50OwogICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2VsZWN0b3JzQ291bnQ7IGkrKykgewogICAgICAgICAgICAgIHZhciBjb21wb25lbnRJbmRleCA9IGZyYW1lLmNvbXBvbmVudElkc1tkYXRhW29mZnNldCsrXV07CiAgICAgICAgICAgICAgY29tcG9uZW50ID0gZnJhbWUuY29tcG9uZW50c1tjb21wb25lbnRJbmRleF07CiAgICAgICAgICAgICAgdmFyIHRhYmxlU3BlYyA9IGRhdGFbb2Zmc2V0KytdOwogICAgICAgICAgICAgIGNvbXBvbmVudC5odWZmbWFuVGFibGVEQyA9IGh1ZmZtYW5UYWJsZXNEQ1t0YWJsZVNwZWMgPj4gNF07CiAgICAgICAgICAgICAgY29tcG9uZW50Lmh1ZmZtYW5UYWJsZUFDID0gaHVmZm1hblRhYmxlc0FDW3RhYmxlU3BlYyAmIDE1XTsKICAgICAgICAgICAgICBjb21wb25lbnRzLnB1c2goY29tcG9uZW50KTsKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgc3BlY3RyYWxTdGFydCA9IGRhdGFbb2Zmc2V0KytdOwogICAgICAgICAgICB2YXIgc3BlY3RyYWxFbmQgPSBkYXRhW29mZnNldCsrXTsKICAgICAgICAgICAgdmFyIHN1Y2Nlc3NpdmVBcHByb3hpbWF0aW9uID0gZGF0YVtvZmZzZXQrK107CiAgICAgICAgICAgIHZhciBwcm9jZXNzZWQgPSBkZWNvZGVTY2FuKGRhdGEsIG9mZnNldCwKICAgICAgICAgICAgICBmcmFtZSwgY29tcG9uZW50cywgcmVzZXRJbnRlcnZhbCwKICAgICAgICAgICAgICBzcGVjdHJhbFN0YXJ0LCBzcGVjdHJhbEVuZCwKICAgICAgICAgICAgICBzdWNjZXNzaXZlQXBwcm94aW1hdGlvbiA+PiA0LCBzdWNjZXNzaXZlQXBwcm94aW1hdGlvbiAmIDE1KTsKICAgICAgICAgICAgb2Zmc2V0ICs9IHByb2Nlc3NlZDsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgY2FzZSAweEZGRkY6IC8vIEZpbGwgYnl0ZXMKICAgICAgICAgICAgaWYgKGRhdGFbb2Zmc2V0XSAhPT0gMHhGRikgeyAvLyBBdm9pZCBza2lwcGluZyBhIHZhbGlkIG1hcmtlci4KICAgICAgICAgICAgICBvZmZzZXQtLTsKICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKCiAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICBpZiAoZGF0YVtvZmZzZXQgLSAzXSA9PT0gMHhGRiAmJgogICAgICAgICAgICAgICAgZGF0YVtvZmZzZXQgLSAyXSA+PSAweEMwICYmIGRhdGFbb2Zmc2V0IC0gMl0gPD0gMHhGRSkgewogICAgICAgICAgICAgIC8vIGNvdWxkIGJlIGluY29ycmVjdCBlbmNvZGluZyAtLSBsYXN0IDB4RkYgYnl0ZSBvZiB0aGUgcHJldmlvdXMKICAgICAgICAgICAgICAvLyBibG9jayB3YXMgZWF0ZW4gYnkgdGhlIGVuY29kZXIKICAgICAgICAgICAgICBvZmZzZXQgLT0gMzsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICB0aHJvdyAndW5rbm93biBKUEVHIG1hcmtlciAnICsgZmlsZU1hcmtlci50b1N0cmluZygxNik7CiAgICAgICAgfQogICAgICAgIGZpbGVNYXJrZXIgPSByZWFkVWludDE2KCk7CiAgICAgIH0KCiAgICAgIHRoaXMud2lkdGggPSBmcmFtZS5zYW1wbGVzUGVyTGluZTsKICAgICAgdGhpcy5oZWlnaHQgPSBmcmFtZS5zY2FuTGluZXM7CiAgICAgIHRoaXMuamZpZiA9IGpmaWY7CiAgICAgIHRoaXMuYWRvYmUgPSBhZG9iZTsKICAgICAgdGhpcy5jb21wb25lbnRzID0gW107CiAgICAgIGZvciAoaSA9IDA7IGkgPCBmcmFtZS5jb21wb25lbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgY29tcG9uZW50ID0gZnJhbWUuY29tcG9uZW50c1tpXTsKICAgICAgICB0aGlzLmNvbXBvbmVudHMucHVzaCh7CiAgICAgICAgICBvdXRwdXQ6IGJ1aWxkQ29tcG9uZW50RGF0YShmcmFtZSwgY29tcG9uZW50KSwKICAgICAgICAgIHNjYWxlWDogY29tcG9uZW50LmggLyBmcmFtZS5tYXhILAogICAgICAgICAgc2NhbGVZOiBjb21wb25lbnQudiAvIGZyYW1lLm1heFYsCiAgICAgICAgICBibG9ja3NQZXJMaW5lOiBjb21wb25lbnQuYmxvY2tzUGVyTGluZSwKICAgICAgICAgIGJsb2Nrc1BlckNvbHVtbjogY29tcG9uZW50LmJsb2Nrc1BlckNvbHVtbgogICAgICAgIH0pOwogICAgICB9CiAgICAgIHRoaXMubnVtQ29tcG9uZW50cyA9IHRoaXMuY29tcG9uZW50cy5sZW5ndGg7CiAgICB9LAoKICAgIF9nZXRMaW5lYXJpemVkQmxvY2tEYXRhOiBmdW5jdGlvbiBnZXRMaW5lYXJpemVkQmxvY2tEYXRhKHdpZHRoLCBoZWlnaHQpIHsKICAgICAgdmFyIHNjYWxlWCA9IHRoaXMud2lkdGggLyB3aWR0aCwgc2NhbGVZID0gdGhpcy5oZWlnaHQgLyBoZWlnaHQ7CgogICAgICB2YXIgY29tcG9uZW50LCBjb21wb25lbnRTY2FsZVgsIGNvbXBvbmVudFNjYWxlWSwgYmxvY2tzUGVyU2NhbmxpbmU7CiAgICAgIHZhciB4LCB5LCBpLCBqLCBrOwogICAgICB2YXIgaW5kZXg7CiAgICAgIHZhciBvZmZzZXQgPSAwOwogICAgICB2YXIgb3V0cHV0OwogICAgICB2YXIgbnVtQ29tcG9uZW50cyA9IHRoaXMuY29tcG9uZW50cy5sZW5ndGg7CiAgICAgIHZhciBkYXRhTGVuZ3RoID0gd2lkdGggKiBoZWlnaHQgKiBudW1Db21wb25lbnRzOwogICAgICB2YXIgZGF0YSA9IG5ldyBVaW50OEFycmF5KGRhdGFMZW5ndGgpOwogICAgICB2YXIgeFNjYWxlQmxvY2tPZmZzZXQgPSBuZXcgVWludDMyQXJyYXkod2lkdGgpOwogICAgICB2YXIgbWFzazNMU0IgPSAweGZmZmZmZmY4OyAvLyB1c2VkIHRvIGNsZWFyIHRoZSAzIExTQnMKCiAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1Db21wb25lbnRzOyBpKyspIHsKICAgICAgICBjb21wb25lbnQgPSB0aGlzLmNvbXBvbmVudHNbaV07CiAgICAgICAgY29tcG9uZW50U2NhbGVYID0gY29tcG9uZW50LnNjYWxlWCAqIHNjYWxlWDsKICAgICAgICBjb21wb25lbnRTY2FsZVkgPSBjb21wb25lbnQuc2NhbGVZICogc2NhbGVZOwogICAgICAgIG9mZnNldCA9IGk7CiAgICAgICAgb3V0cHV0ID0gY29tcG9uZW50Lm91dHB1dDsKICAgICAgICBibG9ja3NQZXJTY2FubGluZSA9IChjb21wb25lbnQuYmxvY2tzUGVyTGluZSArIDEpIDw8IDM7CiAgICAgICAgLy8gcHJlY2FsY3VsYXRlIHRoZSB4U2NhbGVCbG9ja09mZnNldAogICAgICAgIGZvciAoeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7CiAgICAgICAgICBqID0gMCB8ICh4ICogY29tcG9uZW50U2NhbGVYKTsKICAgICAgICAgIHhTY2FsZUJsb2NrT2Zmc2V0W3hdID0gKChqICYgbWFzazNMU0IpIDw8IDMpIHwgKGogJiA3KTsKICAgICAgICB9CiAgICAgICAgLy8gbGluZWFyaXplIHRoZSBibG9ja3Mgb2YgdGhlIGNvbXBvbmVudAogICAgICAgIGZvciAoeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykgewogICAgICAgICAgaiA9IDAgfCAoeSAqIGNvbXBvbmVudFNjYWxlWSk7CiAgICAgICAgICBpbmRleCA9IGJsb2Nrc1BlclNjYW5saW5lICogKGogJiBtYXNrM0xTQikgfCAoKGogJiA3KSA8PCAzKTsKICAgICAgICAgIGZvciAoeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7CiAgICAgICAgICAgIGRhdGFbb2Zmc2V0XSA9IG91dHB1dFtpbmRleCArIHhTY2FsZUJsb2NrT2Zmc2V0W3hdXTsKICAgICAgICAgICAgb2Zmc2V0ICs9IG51bUNvbXBvbmVudHM7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CgogICAgICAvLyBkZWNvZGVUcmFuc2Zvcm0gY29udGFpbnMgcGFpcnMgb2YgbXVsdGlwbGllciAoLTI1Ni4uMjU2KSBhbmQgYWRkaXRpdmUKICAgICAgdmFyIHRyYW5zZm9ybSA9IHRoaXMuZGVjb2RlVHJhbnNmb3JtOwogICAgICBpZiAodHJhbnNmb3JtKSB7CiAgICAgICAgZm9yIChpID0gMDsgaSA8IGRhdGFMZW5ndGg7KSB7CiAgICAgICAgICBmb3IgKGogPSAwLCBrID0gMDsgaiA8IG51bUNvbXBvbmVudHM7IGorKywgaSsrLCBrICs9IDIpIHsKICAgICAgICAgICAgZGF0YVtpXSA9ICgoZGF0YVtpXSAqIHRyYW5zZm9ybVtrXSkgPj4gOCkgKyB0cmFuc2Zvcm1bayArIDFdOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gZGF0YTsKICAgIH0sCgogICAgX2lzQ29sb3JDb252ZXJzaW9uTmVlZGVkOiBmdW5jdGlvbiBpc0NvbG9yQ29udmVyc2lvbk5lZWRlZCgpIHsKICAgICAgaWYgKHRoaXMuYWRvYmUgJiYgdGhpcy5hZG9iZS50cmFuc2Zvcm1Db2RlKSB7CiAgICAgICAgLy8gVGhlIGFkb2JlIHRyYW5zZm9ybSBtYXJrZXIgb3ZlcnJpZGVzIGFueSBwcmV2aW91cyBzZXR0aW5nCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH0gZWxzZSBpZiAodGhpcy5udW1Db21wb25lbnRzID09PSAzKSB7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICB9LAoKICAgIF9jb252ZXJ0WWNjVG9SZ2I6IGZ1bmN0aW9uIGNvbnZlcnRZY2NUb1JnYihkYXRhKSB7CiAgICAgIHZhciBZLCBDYiwgQ3I7CiAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBkYXRhLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSArPSAzKSB7CiAgICAgICAgWSAgPSBkYXRhW2kgICAgXTsKICAgICAgICBDYiA9IGRhdGFbaSArIDFdOwogICAgICAgIENyID0gZGF0YVtpICsgMl07CiAgICAgICAgZGF0YVtpICAgIF0gPSBjbGFtcDB0bzI1NShZIC0gMTc5LjQ1NiArIDEuNDAyICogQ3IpOwogICAgICAgIGRhdGFbaSArIDFdID0gY2xhbXAwdG8yNTUoWSArIDEzNS40NTkgLSAwLjM0NCAqIENiIC0gMC43MTQgKiBDcik7CiAgICAgICAgZGF0YVtpICsgMl0gPSBjbGFtcDB0bzI1NShZIC0gMjI2LjgxNiArIDEuNzcyICogQ2IpOwogICAgICB9CiAgICAgIHJldHVybiBkYXRhOwogICAgfSwKCiAgICBfY29udmVydFljY2tUb1JnYjogZnVuY3Rpb24gY29udmVydFljY2tUb1JnYihkYXRhKSB7CiAgICAgIHZhciBZLCBDYiwgQ3IsIGs7CiAgICAgIHZhciBvZmZzZXQgPSAwOwogICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZGF0YS5sZW5ndGg7IGkgPCBsZW5ndGg7IGkgKz0gNCkgewogICAgICAgIFkgID0gZGF0YVtpXTsKICAgICAgICBDYiA9IGRhdGFbaSArIDFdOwogICAgICAgIENyID0gZGF0YVtpICsgMl07CiAgICAgICAgayA9IGRhdGFbaSArIDNdOwoKICAgICAgICB2YXIgciA9IC0xMjIuNjcxOTU0MDY4OTQgKwogICAgICAgICAgQ2IgKiAoLTYuNjA2MzU2Njk0MjAzNjRlLTUgKiBDYiArIDAuMDAwNDM3MTMwNDc1OTI2MjMyICogQ3IgLQogICAgICAgICAgICAgICAgNS40MDgwNjEwMDY0NTk5ZS01ICogWSArIDAuMDAwNDg0NDk3OTcxMjAyODEgKiBrIC0KICAgICAgICAgICAgICAgIDAuMTU0MzYyMTUxODcxMTI2KSArCiAgICAgICAgICBDciAqICgtMC4wMDA5NTc5NjQzNzg0NDU3NzMgKiBDciArIDAuMDAwODE3MDc2OTExMzQ2NjI1ICogWSAtCiAgICAgICAgICAgICAgICAwLjAwNDc3MjcxNDA1NDA4NzQ3ICogayArIDEuNTMzODAyNTMyMjE3MzQpICsKICAgICAgICAgIFkgKiAoMC4wMDA5NjEyNTAxODQxMzA2ODggKiBZIC0gMC4wMDI2NjI1NzMzMjI4MzkzMyAqIGsgKwogICAgICAgICAgICAgICAwLjQ4MzU3MDg4NDUxMjY1KSArCiAgICAgICAgICBrICogKC0wLjAwMDMzNjE5NzE3NzYxODM5NCAqIGsgKyAwLjQ4NDc5MTU2MTQ5MDc3Nik7CgogICAgICAgIHZhciBnID0gMTA3LjI2ODAzOTM5NzcyNCArCiAgICAgICAgICBDYiAqICgyLjE5OTI3MTA0NTI1NzQxZS01ICogQ2IgLSAwLjAwMDY0MDk5MjAxODI5Nzk0NSAqIENyICsKICAgICAgICAgICAgICAgIDAuMDAwNjU5Mzk3MDAxMjQ1NTc3ICogWSArIDAuMDAwNDI2MTA1NjUyOTM4ODM3ICogayAtCiAgICAgICAgICAgICAgICAwLjE3NjQ5MTc5MjQ2Mjg3NSkgKwogICAgICAgICAgQ3IgKiAoLTAuMDAwNzc4MjY5OTQxNTEzNjgzICogQ3IgKyAwLjAwMTMwODcyMjYxNDA4Mjc1ICogWSArCiAgICAgICAgICAgICAgICAwLjAwMDc3MDQ4MjYzMTgwMTEzMiAqIGsgLSAwLjE1MTA1MTQ5Mjc3NTU2MikgKwogICAgICAgICAgWSAqICgwLjAwMTI2OTM1MzY4MTE0ODQzICogWSAtIDAuMDAyNjUwOTAxODkwMTA4OTggKiBrICsKICAgICAgICAgICAgICAgMC4yNTgwMjkxMDIwNjg0NSkgKwogICAgICAgICAgayAqICgtMC4wMDAzMTg5MTMxMTc1ODgzMjggKiBrIC0gMC4yMTM3NDI0MDAzMjM2NjUpOwoKICAgICAgICB2YXIgYiA9IC0yMC44MTAwMTI1NDY5NDcgKwogICAgICAgICAgQ2IgKiAoLTAuMDAwNTcwMTE1MTk2OTczNjc3ICogQ2IgLSAyLjYzNDA5MDUxMDA0NTg5ZS01ICogQ3IgKwogICAgICAgICAgICAgICAgMC4wMDIwNzQxMDg4MTE1MDEyICogWSAtIDAuMDAyODgyNjAyMzY4NTM0NDIgKiBrICsKICAgICAgICAgICAgICAgIDAuODE0MjcyOTY4MzU5Mjk1KSArCiAgICAgICAgICBDciAqICgtMS41MzQ5NjA1NzQ0MDk3NWUtNSAqIENyIC0gMC4wMDAxMzI2ODkwNDM5NjE0NDYgKiBZICsKICAgICAgICAgICAgICAgIDAuMDAwNTYwODMzNjkxMjQyODEyICogayAtIDAuMTk1MTUyMDI3NTM0MDQ5KSArCiAgICAgICAgICBZICogKDAuMDAxNzQ0MTgxMzI5Mjc1ODIgKiBZIC0gMC4wMDI1NTI0MzMyMTQzOTM0NyAqIGsgKwogICAgICAgICAgICAgICAwLjExNjkzNTAyMDQ2NTE0NSkgKwogICAgICAgICAgayAqICgtMC4wMDAzNDM1MzE5OTY1MTA1NTUgKiBrICsgMC4yNDE2NTI2MDIzMjQwNyk7CgogICAgICAgIGRhdGFbb2Zmc2V0KytdID0gY2xhbXAwdG8yNTUocik7CiAgICAgICAgZGF0YVtvZmZzZXQrK10gPSBjbGFtcDB0bzI1NShnKTsKICAgICAgICBkYXRhW29mZnNldCsrXSA9IGNsYW1wMHRvMjU1KGIpOwogICAgICB9CiAgICAgIHJldHVybiBkYXRhOwogICAgfSwKCiAgICBfY29udmVydFljY2tUb0NteWs6IGZ1bmN0aW9uIGNvbnZlcnRZY2NrVG9DbXlrKGRhdGEpIHsKICAgICAgdmFyIFksIENiLCBDcjsKICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGRhdGEubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpICs9IDQpIHsKICAgICAgICBZICA9IGRhdGFbaV07CiAgICAgICAgQ2IgPSBkYXRhW2kgKyAxXTsKICAgICAgICBDciA9IGRhdGFbaSArIDJdOwogICAgICAgIGRhdGFbaSAgICBdID0gY2xhbXAwdG8yNTUoNDM0LjQ1NiAtIFkgLSAxLjQwMiAqIENyKTsKICAgICAgICBkYXRhW2kgKyAxXSA9IGNsYW1wMHRvMjU1KDExOS41NDEgLSBZICsgMC4zNDQgKiBDYiArIDAuNzE0ICogQ3IpOwogICAgICAgIGRhdGFbaSArIDJdID0gY2xhbXAwdG8yNTUoNDgxLjgxNiAtIFkgLSAxLjc3MiAqIENiKTsKICAgICAgICAvLyBLIGluIGRhdGFbaSArIDNdIGlzIHVuY2hhbmdlZAogICAgICB9CiAgICAgIHJldHVybiBkYXRhOwogICAgfSwKCiAgICBfY29udmVydENteWtUb1JnYjogZnVuY3Rpb24gY29udmVydENteWtUb1JnYihkYXRhKSB7CiAgICAgIHZhciBjLCBtLCB5LCBrOwogICAgICB2YXIgb2Zmc2V0ID0gMDsKICAgICAgdmFyIG1pbiA9IC0yNTUgKiAyNTUgKiAyNTU7CiAgICAgIHZhciBzY2FsZSA9IDEgLyAyNTUgLyAyNTU7CiAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBkYXRhLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSArPSA0KSB7CiAgICAgICAgYyA9IGRhdGFbaV07CiAgICAgICAgbSA9IGRhdGFbaSArIDFdOwogICAgICAgIHkgPSBkYXRhW2kgKyAyXTsKICAgICAgICBrID0gZGF0YVtpICsgM107CgogICAgICAgIHZhciByID0KICAgICAgICAgIGMgKiAoLTQuMzg3MzMyMzg0NjA5OTg4ICogYyArIDU0LjQ4NjE1MTk0MTg5MTc2ICogbSArCiAgICAgICAgICAgICAgIDE4LjgyMjkwNTAyMTY1MzAyICogeSArIDIxMi4yNTY2MjQ1MTYzOTU4NSAqIGsgLQogICAgICAgICAgICAgICA3MjczNC40NDExNjY0OTM2KSArCiAgICAgICAgICBtICogKDEuNzE0OTc2MzQ3NzM2MjEzNCAqIG0gLSA1LjYwOTY3MzY5MDQwNDczMTUgKiB5IC0KICAgICAgICAgICAgICAgMTcuODczODcwODYxNDE1NDQ0ICogayAtIDE0MDEuNzM2NjM4OTM1MDczNCkgKwogICAgICAgICAgeSAqICgtMi41MjE3MzQwMTMxNjgzMDMzICogeSAtIDIxLjI0ODkyMzMzNzM1MzA3MyAqIGsgKwogICAgICAgICAgICAgICA0NDY1LjU0MTQwNjQ2NjIzMSkgLQogICAgICAgICAgayAqICgyMS44NjEyMjE0NzQ2MzYwNSAqIGsgKyA0ODMxNy44NjExMzE2MDMwMSk7CiAgICAgICAgdmFyIGcgPQogICAgICAgICAgYyAqICg4Ljg0MTA0MTQyMjAzNjE0OSAqIGMgKyA2MC4xMTgwMjcwNDU1OTczNjYgKiBtICsKICAgICAgICAgICAgICAgNi44NzE0MjU1OTIwNDkwMDcgKiB5ICsgMzEuMTU5MTAwMTMwMDU1OTIyICogayAtCiAgICAgICAgICAgICAgIDIwMjIwLjc1NjU0MjgyMTk3NSkgKwogICAgICAgICAgbSAqICgtMTUuMzEwMzYxMzA2OTY3ODE3ICogbSArIDE3LjU3NTI1MTI2MTEwOTQ4MiAqIHkgKwogICAgICAgICAgICAgICAxMzEuMzUyNTA5MTI0OTM5NzYgKiBrIC0gNDg2OTEuMDU5MjE2MDE4MjUpICsKICAgICAgICAgIHkgKiAoNC40NDQzMzkxMDI4NTI3MzkgKiB5ICsgOS44NjMyODYxNDkzNDA1ICogayAtCiAgICAgICAgICAgICAgIDYzNDEuMTkxMDM1NTE3NDk0KSAtCiAgICAgICAgICBrICogKDIwLjczNzMyNTQ3MTE4MTAzNCAqIGsgKyA0Nzg5MC4xNTY5NTk3ODQ5Mik7CiAgICAgICAgdmFyIGIgPQogICAgICAgICAgYyAqICgwLjg4NDI1MjI0MzAwMDMyOTYgKiBjICsgOC4wNzg2Nzc1MDMxMTI5MjggKiBtICsKICAgICAgICAgICAgICAgMzAuODk5NzgzMDk3MDM3MjkgKiB5IC0gMC4yMzg4MzIzODY4OTE3ODkzNCAqIGsgLQogICAgICAgICAgICAgICAzNjE2LjgxMjA4MzkxNjY4OCkgKwogICAgICAgICAgbSAqICgxMC40OTU5MzI3MzQzMjA3MiAqIG0gKyA2My4wMjM3ODQ5NDc1NDA1MiAqIHkgKwogICAgICAgICAgICAgICA1MC42MDY5NTc2NTYzNjA3MzQgKiBrIC0gMjg2MjAuOTA0ODQ2OTg0MDgpICsKICAgICAgICAgIHkgKiAoMC4wMzI5NjA0MTExNDg3MzIxNyAqIHkgKyAxMTUuNjAzODQ0NDk2NDY2NDEgKiBrIC0KICAgICAgICAgICAgICAgNDkzNjMuNDMzODU5OTk2ODQpIC0KICAgICAgICAgIGsgKiAoMjIuMzM4MTY4MDczMDk4ODYgKiBrICsgNDU5MzIuMTY1NjM1NTA2MzQpOwoKICAgICAgICBkYXRhW29mZnNldCsrXSA9IHIgPj0gMCA/IDI1NSA6IHIgPD0gbWluID8gMCA6IDI1NSArIHIgKiBzY2FsZSB8IDA7CiAgICAgICAgZGF0YVtvZmZzZXQrK10gPSBnID49IDAgPyAyNTUgOiBnIDw9IG1pbiA/IDAgOiAyNTUgKyBnICogc2NhbGUgfCAwOwogICAgICAgIGRhdGFbb2Zmc2V0KytdID0gYiA+PSAwID8gMjU1IDogYiA8PSBtaW4gPyAwIDogMjU1ICsgYiAqIHNjYWxlIHwgMDsKICAgICAgfQogICAgICByZXR1cm4gZGF0YTsKICAgIH0sCgogICAgZ2V0RGF0YTogZnVuY3Rpb24gZ2V0RGF0YSh3aWR0aCwgaGVpZ2h0LCBmb3JjZVJHQm91dHB1dCkgewogICAgICBpZiAodGhpcy5udW1Db21wb25lbnRzID4gNCkgewogICAgICAgIHRocm93ICdVbnN1cHBvcnRlZCBjb2xvciBtb2RlJzsKICAgICAgfQogICAgICAvLyB0eXBlIG9mIGRhdGE6IFVpbnQ4QXJyYXkod2lkdGggKiBoZWlnaHQgKiBudW1Db21wb25lbnRzKQogICAgICB2YXIgZGF0YSA9IHRoaXMuX2dldExpbmVhcml6ZWRCbG9ja0RhdGEod2lkdGgsIGhlaWdodCk7CgogICAgICBpZiAodGhpcy5udW1Db21wb25lbnRzID09PSAzKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnZlcnRZY2NUb1JnYihkYXRhKTsKICAgICAgfSBlbHNlIGlmICh0aGlzLm51bUNvbXBvbmVudHMgPT09IDQpIHsKICAgICAgICBpZiAodGhpcy5faXNDb2xvckNvbnZlcnNpb25OZWVkZWQoKSkgewogICAgICAgICAgaWYgKGZvcmNlUkdCb3V0cHV0KSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb252ZXJ0WWNja1RvUmdiKGRhdGEpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnZlcnRZY2NrVG9DbXlrKGRhdGEpOwogICAgICAgICAgfQogICAgICAgIH0gZWxzZSBpZiAoZm9yY2VSR0JvdXRwdXQpIHsKICAgICAgICAgIHJldHVybiB0aGlzLl9jb252ZXJ0Q215a1RvUmdiKGRhdGEpOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gZGF0YTsKICAgIH0KICB9OwoKICByZXR1cm4gY29uc3RydWN0b3I7Cn0pKCk7CgoKdmFyIEpweEltYWdlID0gKGZ1bmN0aW9uIEpweEltYWdlQ2xvc3VyZSgpIHsKICAvLyBUYWJsZSBFLjEKICB2YXIgU3ViYmFuZHNHYWluTG9nMiA9IHsKICAgICdMTCc6IDAsCiAgICAnTEgnOiAxLAogICAgJ0hMJzogMSwKICAgICdISCc6IDIKICB9OwogIGZ1bmN0aW9uIEpweEltYWdlKCkgewogICAgdGhpcy5mYWlsT25Db3JydXB0ZWRJbWFnZSA9IGZhbHNlOwogIH0KICBKcHhJbWFnZS5wcm90b3R5cGUgPSB7CiAgICBwYXJzZTogZnVuY3Rpb24gSnB4SW1hZ2VfcGFyc2UoZGF0YSkgewoKICAgICAgdmFyIGhlYWQgPSByZWFkVWludDE2KGRhdGEsIDApOwogICAgICAvLyBObyBib3ggaGVhZGVyLCBpbW1lZGlhdGUgc3RhcnQgb2YgY29kZXN0cmVhbSAoU09DKQogICAgICBpZiAoaGVhZCA9PT0gMHhGRjRGKSB7CiAgICAgICAgdGhpcy5wYXJzZUNvZGVzdHJlYW0oZGF0YSwgMCwgZGF0YS5sZW5ndGgpOwogICAgICAgIHJldHVybjsKICAgICAgfQoKICAgICAgdmFyIHBvc2l0aW9uID0gMCwgbGVuZ3RoID0gZGF0YS5sZW5ndGg7CiAgICAgIHdoaWxlIChwb3NpdGlvbiA8IGxlbmd0aCkgewogICAgICAgIHZhciBoZWFkZXJTaXplID0gODsKICAgICAgICB2YXIgbGJveCA9IHJlYWRVaW50MzIoZGF0YSwgcG9zaXRpb24pOwogICAgICAgIHZhciB0Ym94ID0gcmVhZFVpbnQzMihkYXRhLCBwb3NpdGlvbiArIDQpOwogICAgICAgIHBvc2l0aW9uICs9IGhlYWRlclNpemU7CiAgICAgICAgaWYgKGxib3ggPT09IDEpIHsKICAgICAgICAgIC8vIFhMQm94OiByZWFkIFVJbnQ2NCBhY2NvcmRpbmcgdG8gc3BlYy4KICAgICAgICAgIC8vIEphdmFTY3JpcHQncyBpbnQgcHJlY2lzaW9uIG9mIDUzIGJpdCBzaG91bGQgYmUgc3VmZmljaWVudCBoZXJlLgogICAgICAgICAgbGJveCA9IHJlYWRVaW50MzIoZGF0YSwgcG9zaXRpb24pICogNDI5NDk2NzI5NiArCiAgICAgICAgICAgICAgICAgcmVhZFVpbnQzMihkYXRhLCBwb3NpdGlvbiArIDQpOwogICAgICAgICAgcG9zaXRpb24gKz0gODsKICAgICAgICAgIGhlYWRlclNpemUgKz0gODsKICAgICAgICB9CiAgICAgICAgaWYgKGxib3ggPT09IDApIHsKICAgICAgICAgIGxib3ggPSBsZW5ndGggLSBwb3NpdGlvbiArIGhlYWRlclNpemU7CiAgICAgICAgfQogICAgICAgIGlmIChsYm94IDwgaGVhZGVyU2l6ZSkgewogICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdKUFggRXJyb3I6IEludmFsaWQgYm94IGZpZWxkIHNpemUnKTsKICAgICAgICB9CiAgICAgICAgdmFyIGRhdGFMZW5ndGggPSBsYm94IC0gaGVhZGVyU2l6ZTsKICAgICAgICB2YXIganVtcERhdGFMZW5ndGggPSB0cnVlOwogICAgICAgIHN3aXRjaCAodGJveCkgewogICAgICAgICAgY2FzZSAweDZBNzAzMjY4OiAvLyAnanAyaCcKICAgICAgICAgICAganVtcERhdGFMZW5ndGggPSBmYWxzZTsgLy8gcGFyc2luZyBjaGlsZCBib3hlcwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgMHg2MzZGNkM3MjogLy8gJ2NvbHInCiAgICAgICAgICAgIC8vIENvbG9yc3BhY2VzIGFyZSBub3QgdXNlZCwgdGhlIENTIGZyb20gdGhlIFBERiBpcyB1c2VkLgogICAgICAgICAgICB2YXIgbWV0aG9kID0gZGF0YVtwb3NpdGlvbl07CiAgICAgICAgICAgIHZhciBwcmVjZWRlbmNlID0gZGF0YVtwb3NpdGlvbiArIDFdOwogICAgICAgICAgICB2YXIgYXBwcm94aW1hdGlvbiA9IGRhdGFbcG9zaXRpb24gKyAyXTsKICAgICAgICAgICAgaWYgKG1ldGhvZCA9PT0gMSkgewogICAgICAgICAgICAgIC8vIGVudW1lcmF0ZWQgY29sb3JzcGFjZQogICAgICAgICAgICAgIHZhciBjb2xvcnNwYWNlID0gcmVhZFVpbnQzMihkYXRhLCBwb3NpdGlvbiArIDMpOwogICAgICAgICAgICAgIHN3aXRjaCAoY29sb3JzcGFjZSkgewogICAgICAgICAgICAgICAgY2FzZSAxNjogLy8gdGhpcyBpbmRpY2F0ZXMgYSBzUkdCIGNvbG9yc3BhY2UKICAgICAgICAgICAgICAgIGNhc2UgMTc6IC8vIHRoaXMgaW5kaWNhdGVzIGEgZ3JheXNjYWxlIGNvbG9yc3BhY2UKICAgICAgICAgICAgICAgIGNhc2UgMTg6IC8vIHRoaXMgaW5kaWNhdGVzIGEgWVVWIGNvbG9yc3BhY2UKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICB3YXJuKCdVbmtub3duIGNvbG9yc3BhY2UgJyArIGNvbG9yc3BhY2UpOwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSBpZiAobWV0aG9kID09PSAyKSB7CiAgICAgICAgICAgICAgaW5mbygnSUNDIHByb2ZpbGUgbm90IHN1cHBvcnRlZCcpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAweDZBNzAzMjYzOiAvLyAnanAyYycKICAgICAgICAgICAgdGhpcy5wYXJzZUNvZGVzdHJlYW0oZGF0YSwgcG9zaXRpb24sIHBvc2l0aW9uICsgZGF0YUxlbmd0aCk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAweDZBNTAyMDIwOiAvLyAnalBcMDI0XDAyNCcKICAgICAgICAgICAgaWYgKDB4MGQwYTg3MGEgIT09IHJlYWRVaW50MzIoZGF0YSwgcG9zaXRpb24pKSB7CiAgICAgICAgICAgICAgd2FybignSW52YWxpZCBKUDIgc2lnbmF0dXJlJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGhlYWRlciB0eXBlcyBhcmUgdmFsaWQgYnV0IGN1cnJlbnRseSBub3QgdXNlZDoKICAgICAgICAgIGNhc2UgMHg2QTUwMUExQTogLy8gJ2pQXDAzMlwwMzInCiAgICAgICAgICBjYXNlIDB4NjY3NDc5NzA6IC8vICdmdHlwJwogICAgICAgICAgY2FzZSAweDcyNzI2NTcxOiAvLyAncnJlcScKICAgICAgICAgIGNhc2UgMHg3MjY1NzMyMDogLy8gJ3JlcyAnCiAgICAgICAgICBjYXNlIDB4Njk2ODY0NzI6IC8vICdpaGRyJwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHZhciBoZWFkZXJUeXBlID0gU3RyaW5nLmZyb21DaGFyQ29kZSgodGJveCA+PiAyNCkgJiAweEZGLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRib3ggPj4gMTYpICYgMHhGRiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0Ym94ID4+IDgpICYgMHhGRiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRib3ggJiAweEZGKTsKICAgICAgICAgICAgd2FybignVW5zdXBwb3J0ZWQgaGVhZGVyIHR5cGUgJyArIHRib3ggKyAnICgnICsgaGVhZGVyVHlwZSArICcpJyk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBpZiAoanVtcERhdGFMZW5ndGgpIHsKICAgICAgICAgIHBvc2l0aW9uICs9IGRhdGFMZW5ndGg7CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgcGFyc2VJbWFnZVByb3BlcnRpZXM6IGZ1bmN0aW9uIEpweEltYWdlX3BhcnNlSW1hZ2VQcm9wZXJ0aWVzKHN0cmVhbSkgewogICAgICB2YXIgbmV3Qnl0ZSA9IHN0cmVhbS5nZXRCeXRlKCk7CiAgICAgIHdoaWxlIChuZXdCeXRlID49IDApIHsKICAgICAgICB2YXIgb2xkQnl0ZSA9IG5ld0J5dGU7CiAgICAgICAgbmV3Qnl0ZSA9IHN0cmVhbS5nZXRCeXRlKCk7CiAgICAgICAgdmFyIGNvZGUgPSAob2xkQnl0ZSA8PCA4KSB8IG5ld0J5dGU7CiAgICAgICAgLy8gSW1hZ2UgYW5kIHRpbGUgc2l6ZSAoU0laKQogICAgICAgIGlmIChjb2RlID09PSAweEZGNTEpIHsKICAgICAgICAgIHN0cmVhbS5za2lwKDQpOwogICAgICAgICAgdmFyIFhzaXogPSBzdHJlYW0uZ2V0SW50MzIoKSA+Pj4gMDsgLy8gQnl0ZSA0CiAgICAgICAgICB2YXIgWXNpeiA9IHN0cmVhbS5nZXRJbnQzMigpID4+PiAwOyAvLyBCeXRlIDgKICAgICAgICAgIHZhciBYT3NpeiA9IHN0cmVhbS5nZXRJbnQzMigpID4+PiAwOyAvLyBCeXRlIDEyCiAgICAgICAgICB2YXIgWU9zaXogPSBzdHJlYW0uZ2V0SW50MzIoKSA+Pj4gMDsgLy8gQnl0ZSAxNgogICAgICAgICAgc3RyZWFtLnNraXAoMTYpOwogICAgICAgICAgdmFyIENzaXogPSBzdHJlYW0uZ2V0VWludDE2KCk7IC8vIEJ5dGUgMzYKICAgICAgICAgIHRoaXMud2lkdGggPSBYc2l6IC0gWE9zaXo7CiAgICAgICAgICB0aGlzLmhlaWdodCA9IFlzaXogLSBZT3NpejsKICAgICAgICAgIHRoaXMuY29tcG9uZW50c0NvdW50ID0gQ3NpejsKICAgICAgICAgIC8vIFJlc3VsdHMgYXJlIGFsd2F5cyByZXR1cm5lZCBhcyBVaW50OEFycmF5cwogICAgICAgICAgdGhpcy5iaXRzUGVyQ29tcG9uZW50ID0gODsKICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgIH0KICAgICAgdGhyb3cgbmV3IEVycm9yKCdKUFggRXJyb3I6IE5vIHNpemUgbWFya2VyIGZvdW5kIGluIEpQWCBzdHJlYW0nKTsKICAgIH0sCiAgICBwYXJzZUNvZGVzdHJlYW06IGZ1bmN0aW9uIEpweEltYWdlX3BhcnNlQ29kZXN0cmVhbShkYXRhLCBzdGFydCwgZW5kKSB7CiAgICAgIHZhciBjb250ZXh0ID0ge307CiAgICAgIHRyeSB7CiAgICAgICAgdmFyIGRvTm90UmVjb3ZlciA9IGZhbHNlOwogICAgICAgIHZhciBwb3NpdGlvbiA9IHN0YXJ0OwogICAgICAgIHdoaWxlIChwb3NpdGlvbiArIDEgPCBlbmQpIHsKICAgICAgICAgIHZhciBjb2RlID0gcmVhZFVpbnQxNihkYXRhLCBwb3NpdGlvbik7CiAgICAgICAgICBwb3NpdGlvbiArPSAyOwoKICAgICAgICAgIHZhciBsZW5ndGggPSAwLCBqLCBzcWNkLCBzcHFjZHMsIHNwcWNkU2l6ZSwgc2NhbGFyRXhwb3VuZGVkLCB0aWxlOwogICAgICAgICAgc3dpdGNoIChjb2RlKSB7CiAgICAgICAgICAgIGNhc2UgMHhGRjRGOiAvLyBTdGFydCBvZiBjb2Rlc3RyZWFtIChTT0MpCiAgICAgICAgICAgICAgY29udGV4dC5tYWluSGVhZGVyID0gdHJ1ZTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAweEZGRDk6IC8vIEVuZCBvZiBjb2Rlc3RyZWFtIChFT0MpCiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMHhGRjUxOiAvLyBJbWFnZSBhbmQgdGlsZSBzaXplIChTSVopCiAgICAgICAgICAgICAgbGVuZ3RoID0gcmVhZFVpbnQxNihkYXRhLCBwb3NpdGlvbik7CiAgICAgICAgICAgICAgdmFyIHNpeiA9IHt9OwogICAgICAgICAgICAgIHNpei5Yc2l6ID0gcmVhZFVpbnQzMihkYXRhLCBwb3NpdGlvbiArIDQpOwogICAgICAgICAgICAgIHNpei5Zc2l6ID0gcmVhZFVpbnQzMihkYXRhLCBwb3NpdGlvbiArIDgpOwogICAgICAgICAgICAgIHNpei5YT3NpeiA9IHJlYWRVaW50MzIoZGF0YSwgcG9zaXRpb24gKyAxMik7CiAgICAgICAgICAgICAgc2l6LllPc2l6ID0gcmVhZFVpbnQzMihkYXRhLCBwb3NpdGlvbiArIDE2KTsKICAgICAgICAgICAgICBzaXouWFRzaXogPSByZWFkVWludDMyKGRhdGEsIHBvc2l0aW9uICsgMjApOwogICAgICAgICAgICAgIHNpei5ZVHNpeiA9IHJlYWRVaW50MzIoZGF0YSwgcG9zaXRpb24gKyAyNCk7CiAgICAgICAgICAgICAgc2l6LlhUT3NpeiA9IHJlYWRVaW50MzIoZGF0YSwgcG9zaXRpb24gKyAyOCk7CiAgICAgICAgICAgICAgc2l6LllUT3NpeiA9IHJlYWRVaW50MzIoZGF0YSwgcG9zaXRpb24gKyAzMik7CiAgICAgICAgICAgICAgdmFyIGNvbXBvbmVudHNDb3VudCA9IHJlYWRVaW50MTYoZGF0YSwgcG9zaXRpb24gKyAzNik7CiAgICAgICAgICAgICAgc2l6LkNzaXogPSBjb21wb25lbnRzQ291bnQ7CiAgICAgICAgICAgICAgdmFyIGNvbXBvbmVudHMgPSBbXTsKICAgICAgICAgICAgICBqID0gcG9zaXRpb24gKyAzODsKICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbXBvbmVudHNDb3VudDsgaSsrKSB7CiAgICAgICAgICAgICAgICB2YXIgY29tcG9uZW50ID0gewogICAgICAgICAgICAgICAgICBwcmVjaXNpb246IChkYXRhW2pdICYgMHg3RikgKyAxLAogICAgICAgICAgICAgICAgICBpc1NpZ25lZDogISEoZGF0YVtqXSAmIDB4ODApLAogICAgICAgICAgICAgICAgICBYUnNpejogZGF0YVtqICsgMV0sCiAgICAgICAgICAgICAgICAgIFlSc2l6OiBkYXRhW2ogKyAxXQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIGNhbGN1bGF0ZUNvbXBvbmVudERpbWVuc2lvbnMoY29tcG9uZW50LCBzaXopOwogICAgICAgICAgICAgICAgY29tcG9uZW50cy5wdXNoKGNvbXBvbmVudCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGNvbnRleHQuU0laID0gc2l6OwogICAgICAgICAgICAgIGNvbnRleHQuY29tcG9uZW50cyA9IGNvbXBvbmVudHM7CiAgICAgICAgICAgICAgY2FsY3VsYXRlVGlsZUdyaWRzKGNvbnRleHQsIGNvbXBvbmVudHMpOwogICAgICAgICAgICAgIGNvbnRleHQuUUNDID0gW107CiAgICAgICAgICAgICAgY29udGV4dC5DT0MgPSBbXTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAweEZGNUM6IC8vIFF1YW50aXphdGlvbiBkZWZhdWx0IChRQ0QpCiAgICAgICAgICAgICAgbGVuZ3RoID0gcmVhZFVpbnQxNihkYXRhLCBwb3NpdGlvbik7CiAgICAgICAgICAgICAgdmFyIHFjZCA9IHt9OwogICAgICAgICAgICAgIGogPSBwb3NpdGlvbiArIDI7CiAgICAgICAgICAgICAgc3FjZCA9IGRhdGFbaisrXTsKICAgICAgICAgICAgICBzd2l0Y2ggKHNxY2QgJiAweDFGKSB7CiAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgIHNwcWNkU2l6ZSA9IDg7CiAgICAgICAgICAgICAgICAgIHNjYWxhckV4cG91bmRlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICBzcHFjZFNpemUgPSAxNjsKICAgICAgICAgICAgICAgICAgc2NhbGFyRXhwb3VuZGVkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgICBzcHFjZFNpemUgPSAxNjsKICAgICAgICAgICAgICAgICAgc2NhbGFyRXhwb3VuZGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0pQWCBFcnJvcjogSW52YWxpZCBTUWNkIHZhbHVlICcgKyBzcWNkKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcWNkLm5vUXVhbnRpemF0aW9uID0gKHNwcWNkU2l6ZSA9PT0gOCk7CiAgICAgICAgICAgICAgcWNkLnNjYWxhckV4cG91bmRlZCA9IHNjYWxhckV4cG91bmRlZDsKICAgICAgICAgICAgICBxY2QuZ3VhcmRCaXRzID0gc3FjZCA+PiA1OwogICAgICAgICAgICAgIHNwcWNkcyA9IFtdOwogICAgICAgICAgICAgIHdoaWxlIChqIDwgbGVuZ3RoICsgcG9zaXRpb24pIHsKICAgICAgICAgICAgICAgIHZhciBzcHFjZCA9IHt9OwogICAgICAgICAgICAgICAgaWYgKHNwcWNkU2l6ZSA9PT0gOCkgewogICAgICAgICAgICAgICAgICBzcHFjZC5lcHNpbG9uID0gZGF0YVtqKytdID4+IDM7CiAgICAgICAgICAgICAgICAgIHNwcWNkLm11ID0gMDsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgIHNwcWNkLmVwc2lsb24gPSBkYXRhW2pdID4+IDM7CiAgICAgICAgICAgICAgICAgIHNwcWNkLm11ID0gKChkYXRhW2pdICYgMHg3KSA8PCA4KSB8IGRhdGFbaiArIDFdOwogICAgICAgICAgICAgICAgICBqICs9IDI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzcHFjZHMucHVzaChzcHFjZCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHFjZC5TUHFjZHMgPSBzcHFjZHM7CiAgICAgICAgICAgICAgaWYgKGNvbnRleHQubWFpbkhlYWRlcikgewogICAgICAgICAgICAgICAgY29udGV4dC5RQ0QgPSBxY2Q7CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGNvbnRleHQuY3VycmVudFRpbGUuUUNEID0gcWNkOwogICAgICAgICAgICAgICAgY29udGV4dC5jdXJyZW50VGlsZS5RQ0MgPSBbXTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMHhGRjVEOiAvLyBRdWFudGl6YXRpb24gY29tcG9uZW50IChRQ0MpCiAgICAgICAgICAgICAgbGVuZ3RoID0gcmVhZFVpbnQxNihkYXRhLCBwb3NpdGlvbik7CiAgICAgICAgICAgICAgdmFyIHFjYyA9IHt9OwogICAgICAgICAgICAgIGogPSBwb3NpdGlvbiArIDI7CiAgICAgICAgICAgICAgdmFyIGNxY2M7CiAgICAgICAgICAgICAgaWYgKGNvbnRleHQuU0laLkNzaXogPCAyNTcpIHsKICAgICAgICAgICAgICAgIGNxY2MgPSBkYXRhW2orK107CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGNxY2MgPSByZWFkVWludDE2KGRhdGEsIGopOwogICAgICAgICAgICAgICAgaiArPSAyOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBzcWNkID0gZGF0YVtqKytdOwogICAgICAgICAgICAgIHN3aXRjaCAoc3FjZCAmIDB4MUYpIHsKICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgc3BxY2RTaXplID0gODsKICAgICAgICAgICAgICAgICAgc2NhbGFyRXhwb3VuZGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgIHNwcWNkU2l6ZSA9IDE2OwogICAgICAgICAgICAgICAgICBzY2FsYXJFeHBvdW5kZWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgIHNwcWNkU2l6ZSA9IDE2OwogICAgICAgICAgICAgICAgICBzY2FsYXJFeHBvdW5kZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSlBYIEVycm9yOiBJbnZhbGlkIFNRY2QgdmFsdWUgJyArIHNxY2QpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBxY2Mubm9RdWFudGl6YXRpb24gPSAoc3BxY2RTaXplID09PSA4KTsKICAgICAgICAgICAgICBxY2Muc2NhbGFyRXhwb3VuZGVkID0gc2NhbGFyRXhwb3VuZGVkOwogICAgICAgICAgICAgIHFjYy5ndWFyZEJpdHMgPSBzcWNkID4+IDU7CiAgICAgICAgICAgICAgc3BxY2RzID0gW107CiAgICAgICAgICAgICAgd2hpbGUgKGogPCAobGVuZ3RoICsgcG9zaXRpb24pKSB7CiAgICAgICAgICAgICAgICBzcHFjZCA9IHt9OwogICAgICAgICAgICAgICAgaWYgKHNwcWNkU2l6ZSA9PT0gOCkgewogICAgICAgICAgICAgICAgICBzcHFjZC5lcHNpbG9uID0gZGF0YVtqKytdID4+IDM7CiAgICAgICAgICAgICAgICAgIHNwcWNkLm11ID0gMDsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgIHNwcWNkLmVwc2lsb24gPSBkYXRhW2pdID4+IDM7CiAgICAgICAgICAgICAgICAgIHNwcWNkLm11ID0gKChkYXRhW2pdICYgMHg3KSA8PCA4KSB8IGRhdGFbaiArIDFdOwogICAgICAgICAgICAgICAgICBqICs9IDI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzcHFjZHMucHVzaChzcHFjZCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHFjYy5TUHFjZHMgPSBzcHFjZHM7CiAgICAgICAgICAgICAgaWYgKGNvbnRleHQubWFpbkhlYWRlcikgewogICAgICAgICAgICAgICAgY29udGV4dC5RQ0NbY3FjY10gPSBxY2M7CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGNvbnRleHQuY3VycmVudFRpbGUuUUNDW2NxY2NdID0gcWNjOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAweEZGNTI6IC8vIENvZGluZyBzdHlsZSBkZWZhdWx0IChDT0QpCiAgICAgICAgICAgICAgbGVuZ3RoID0gcmVhZFVpbnQxNihkYXRhLCBwb3NpdGlvbik7CiAgICAgICAgICAgICAgdmFyIGNvZCA9IHt9OwogICAgICAgICAgICAgIGogPSBwb3NpdGlvbiArIDI7CiAgICAgICAgICAgICAgdmFyIHNjb2QgPSBkYXRhW2orK107CiAgICAgICAgICAgICAgY29kLmVudHJvcHlDb2RlcldpdGhDdXN0b21QcmVjaW5jdHMgPSAhIShzY29kICYgMSk7CiAgICAgICAgICAgICAgY29kLnNvcE1hcmtlclVzZWQgPSAhIShzY29kICYgMik7CiAgICAgICAgICAgICAgY29kLmVwaE1hcmtlclVzZWQgPSAhIShzY29kICYgNCk7CiAgICAgICAgICAgICAgY29kLnByb2dyZXNzaW9uT3JkZXIgPSBkYXRhW2orK107CiAgICAgICAgICAgICAgY29kLmxheWVyc0NvdW50ID0gcmVhZFVpbnQxNihkYXRhLCBqKTsKICAgICAgICAgICAgICBqICs9IDI7CiAgICAgICAgICAgICAgY29kLm11bHRpcGxlQ29tcG9uZW50VHJhbnNmb3JtID0gZGF0YVtqKytdOwoKICAgICAgICAgICAgICBjb2QuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50ID0gZGF0YVtqKytdOwogICAgICAgICAgICAgIGNvZC54Y2IgPSAoZGF0YVtqKytdICYgMHhGKSArIDI7CiAgICAgICAgICAgICAgY29kLnljYiA9IChkYXRhW2orK10gJiAweEYpICsgMjsKICAgICAgICAgICAgICB2YXIgYmxvY2tTdHlsZSA9IGRhdGFbaisrXTsKICAgICAgICAgICAgICBjb2Quc2VsZWN0aXZlQXJpdGhtZXRpY0NvZGluZ0J5cGFzcyA9ICEhKGJsb2NrU3R5bGUgJiAxKTsKICAgICAgICAgICAgICBjb2QucmVzZXRDb250ZXh0UHJvYmFiaWxpdGllcyA9ICEhKGJsb2NrU3R5bGUgJiAyKTsKICAgICAgICAgICAgICBjb2QudGVybWluYXRpb25PbkVhY2hDb2RpbmdQYXNzID0gISEoYmxvY2tTdHlsZSAmIDQpOwogICAgICAgICAgICAgIGNvZC52ZXJ0aWNhbHlTdHJpcGUgPSAhIShibG9ja1N0eWxlICYgOCk7CiAgICAgICAgICAgICAgY29kLnByZWRpY3RhYmxlVGVybWluYXRpb24gPSAhIShibG9ja1N0eWxlICYgMTYpOwogICAgICAgICAgICAgIGNvZC5zZWdtZW50YXRpb25TeW1ib2xVc2VkID0gISEoYmxvY2tTdHlsZSAmIDMyKTsKICAgICAgICAgICAgICBjb2QucmV2ZXJzaWJsZVRyYW5zZm9ybWF0aW9uID0gZGF0YVtqKytdOwogICAgICAgICAgICAgIGlmIChjb2QuZW50cm9weUNvZGVyV2l0aEN1c3RvbVByZWNpbmN0cykgewogICAgICAgICAgICAgICAgdmFyIHByZWNpbmN0c1NpemVzID0gW107CiAgICAgICAgICAgICAgICB3aGlsZSAoaiA8IGxlbmd0aCArIHBvc2l0aW9uKSB7CiAgICAgICAgICAgICAgICAgIHZhciBwcmVjaW5jdHNTaXplID0gZGF0YVtqKytdOwogICAgICAgICAgICAgICAgICBwcmVjaW5jdHNTaXplcy5wdXNoKHsKICAgICAgICAgICAgICAgICAgICBQUHg6IHByZWNpbmN0c1NpemUgJiAweEYsCiAgICAgICAgICAgICAgICAgICAgUFB5OiBwcmVjaW5jdHNTaXplID4+IDQKICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjb2QucHJlY2luY3RzU2l6ZXMgPSBwcmVjaW5jdHNTaXplczsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgdmFyIHVuc3VwcG9ydGVkID0gW107CiAgICAgICAgICAgICAgaWYgKGNvZC5zZWxlY3RpdmVBcml0aG1ldGljQ29kaW5nQnlwYXNzKSB7CiAgICAgICAgICAgICAgICB1bnN1cHBvcnRlZC5wdXNoKCdzZWxlY3RpdmVBcml0aG1ldGljQ29kaW5nQnlwYXNzJyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGlmIChjb2QucmVzZXRDb250ZXh0UHJvYmFiaWxpdGllcykgewogICAgICAgICAgICAgICAgdW5zdXBwb3J0ZWQucHVzaCgncmVzZXRDb250ZXh0UHJvYmFiaWxpdGllcycpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpZiAoY29kLnRlcm1pbmF0aW9uT25FYWNoQ29kaW5nUGFzcykgewogICAgICAgICAgICAgICAgdW5zdXBwb3J0ZWQucHVzaCgndGVybWluYXRpb25PbkVhY2hDb2RpbmdQYXNzJyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGlmIChjb2QudmVydGljYWx5U3RyaXBlKSB7CiAgICAgICAgICAgICAgICB1bnN1cHBvcnRlZC5wdXNoKCd2ZXJ0aWNhbHlTdHJpcGUnKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYgKGNvZC5wcmVkaWN0YWJsZVRlcm1pbmF0aW9uKSB7CiAgICAgICAgICAgICAgICB1bnN1cHBvcnRlZC5wdXNoKCdwcmVkaWN0YWJsZVRlcm1pbmF0aW9uJyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGlmICh1bnN1cHBvcnRlZC5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICBkb05vdFJlY292ZXIgPSB0cnVlOwogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdKUFggRXJyb3I6IFVuc3VwcG9ydGVkIENPRCBvcHRpb25zICgnICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnN1cHBvcnRlZC5qb2luKCcsICcpICsgJyknKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYgKGNvbnRleHQubWFpbkhlYWRlcikgewogICAgICAgICAgICAgICAgY29udGV4dC5DT0QgPSBjb2Q7CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGNvbnRleHQuY3VycmVudFRpbGUuQ09EID0gY29kOwogICAgICAgICAgICAgICAgY29udGV4dC5jdXJyZW50VGlsZS5DT0MgPSBbXTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMHhGRjkwOiAvLyBTdGFydCBvZiB0aWxlLXBhcnQgKFNPVCkKICAgICAgICAgICAgICBsZW5ndGggPSByZWFkVWludDE2KGRhdGEsIHBvc2l0aW9uKTsKICAgICAgICAgICAgICB0aWxlID0ge307CiAgICAgICAgICAgICAgdGlsZS5pbmRleCA9IHJlYWRVaW50MTYoZGF0YSwgcG9zaXRpb24gKyAyKTsKICAgICAgICAgICAgICB0aWxlLmxlbmd0aCA9IHJlYWRVaW50MzIoZGF0YSwgcG9zaXRpb24gKyA0KTsKICAgICAgICAgICAgICB0aWxlLmRhdGFFbmQgPSB0aWxlLmxlbmd0aCArIHBvc2l0aW9uIC0gMjsKICAgICAgICAgICAgICB0aWxlLnBhcnRJbmRleCA9IGRhdGFbcG9zaXRpb24gKyA4XTsKICAgICAgICAgICAgICB0aWxlLnBhcnRzQ291bnQgPSBkYXRhW3Bvc2l0aW9uICsgOV07CgogICAgICAgICAgICAgIGNvbnRleHQubWFpbkhlYWRlciA9IGZhbHNlOwogICAgICAgICAgICAgIGlmICh0aWxlLnBhcnRJbmRleCA9PT0gMCkgewogICAgICAgICAgICAgICAgLy8gcmVzZXQgY29tcG9uZW50IHNwZWNpZmljIHNldHRpbmdzCiAgICAgICAgICAgICAgICB0aWxlLkNPRCA9IGNvbnRleHQuQ09EOwogICAgICAgICAgICAgICAgdGlsZS5DT0MgPSBjb250ZXh0LkNPQy5zbGljZSgwKTsgLy8gY2xvbmUgb2YgdGhlIGdsb2JhbCBDT0MKICAgICAgICAgICAgICAgIHRpbGUuUUNEID0gY29udGV4dC5RQ0Q7CiAgICAgICAgICAgICAgICB0aWxlLlFDQyA9IGNvbnRleHQuUUNDLnNsaWNlKDApOyAvLyBjbG9uZSBvZiB0aGUgZ2xvYmFsIENPQwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBjb250ZXh0LmN1cnJlbnRUaWxlID0gdGlsZTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAweEZGOTM6IC8vIFN0YXJ0IG9mIGRhdGEgKFNPRCkKICAgICAgICAgICAgICB0aWxlID0gY29udGV4dC5jdXJyZW50VGlsZTsKICAgICAgICAgICAgICBpZiAodGlsZS5wYXJ0SW5kZXggPT09IDApIHsKICAgICAgICAgICAgICAgIGluaXRpYWxpemVUaWxlKGNvbnRleHQsIHRpbGUuaW5kZXgpOwogICAgICAgICAgICAgICAgYnVpbGRQYWNrZXRzKGNvbnRleHQpOwogICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgLy8gbW92aW5nIHRvIHRoZSBlbmQgb2YgdGhlIGRhdGEKICAgICAgICAgICAgICBsZW5ndGggPSB0aWxlLmRhdGFFbmQgLSBwb3NpdGlvbjsKICAgICAgICAgICAgICBwYXJzZVRpbGVQYWNrZXRzKGNvbnRleHQsIGRhdGEsIHBvc2l0aW9uLCBsZW5ndGgpOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDB4RkY1NTogLy8gVGlsZS1wYXJ0IGxlbmd0aHMsIG1haW4gaGVhZGVyIChUTE0pCiAgICAgICAgICAgIGNhc2UgMHhGRjU3OiAvLyBQYWNrZXQgbGVuZ3RoLCBtYWluIGhlYWRlciAoUExNKQogICAgICAgICAgICBjYXNlIDB4RkY1ODogLy8gUGFja2V0IGxlbmd0aCwgdGlsZS1wYXJ0IGhlYWRlciAoUExUKQogICAgICAgICAgICBjYXNlIDB4RkY2NDogLy8gQ29tbWVudCAoQ09NKQogICAgICAgICAgICAgIGxlbmd0aCA9IHJlYWRVaW50MTYoZGF0YSwgcG9zaXRpb24pOwogICAgICAgICAgICAgIC8vIHNraXBwaW5nIGNvbnRlbnQKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAweEZGNTM6IC8vIENvZGluZyBzdHlsZSBjb21wb25lbnQgKENPQykKICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0pQWCBFcnJvcjogQ29kZXN0cmVhbSBjb2RlIDB4RkY1MyAoQ09DKSBpcyAnICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vdCBpbXBsZW1lbnRlZCcpOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSlBYIEVycm9yOiBVbmtub3duIGNvZGVzdHJlYW0gY29kZTogJyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUudG9TdHJpbmcoMTYpKTsKICAgICAgICAgIH0KICAgICAgICAgIHBvc2l0aW9uICs9IGxlbmd0aDsKICAgICAgICB9CiAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICBpZiAoZG9Ob3RSZWNvdmVyIHx8IHRoaXMuZmFpbE9uQ29ycnVwdGVkSW1hZ2UpIHsKICAgICAgICAgIHRocm93IGU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHdhcm4oJ1RyeWluZyB0byByZWNvdmVyIGZyb20gJyArIGUubWVzc2FnZSk7CiAgICAgICAgfQogICAgICB9CiAgICAgIHRoaXMudGlsZXMgPSB0cmFuc2Zvcm1Db21wb25lbnRzKGNvbnRleHQpOwogICAgICB0aGlzLndpZHRoID0gY29udGV4dC5TSVouWHNpeiAtIGNvbnRleHQuU0laLlhPc2l6OwogICAgICB0aGlzLmhlaWdodCA9IGNvbnRleHQuU0laLllzaXogLSBjb250ZXh0LlNJWi5ZT3NpejsKICAgICAgdGhpcy5jb21wb25lbnRzQ291bnQgPSBjb250ZXh0LlNJWi5Dc2l6OwogICAgfQogIH07CiAgZnVuY3Rpb24gY2FsY3VsYXRlQ29tcG9uZW50RGltZW5zaW9ucyhjb21wb25lbnQsIHNpeikgewogICAgLy8gU2VjdGlvbiBCLjIgQ29tcG9uZW50IG1hcHBpbmcKICAgIGNvbXBvbmVudC54MCA9IE1hdGguY2VpbChzaXouWE9zaXogLyBjb21wb25lbnQuWFJzaXopOwogICAgY29tcG9uZW50LngxID0gTWF0aC5jZWlsKHNpei5Yc2l6IC8gY29tcG9uZW50LlhSc2l6KTsKICAgIGNvbXBvbmVudC55MCA9IE1hdGguY2VpbChzaXouWU9zaXogLyBjb21wb25lbnQuWVJzaXopOwogICAgY29tcG9uZW50LnkxID0gTWF0aC5jZWlsKHNpei5Zc2l6IC8gY29tcG9uZW50LllSc2l6KTsKICAgIGNvbXBvbmVudC53aWR0aCA9IGNvbXBvbmVudC54MSAtIGNvbXBvbmVudC54MDsKICAgIGNvbXBvbmVudC5oZWlnaHQgPSBjb21wb25lbnQueTEgLSBjb21wb25lbnQueTA7CiAgfQogIGZ1bmN0aW9uIGNhbGN1bGF0ZVRpbGVHcmlkcyhjb250ZXh0LCBjb21wb25lbnRzKSB7CiAgICB2YXIgc2l6ID0gY29udGV4dC5TSVo7CiAgICAvLyBTZWN0aW9uIEIuMyBEaXZpc2lvbiBpbnRvIHRpbGUgYW5kIHRpbGUtY29tcG9uZW50cwogICAgdmFyIHRpbGUsIHRpbGVzID0gW107CiAgICB2YXIgbnVtWHRpbGVzID0gTWF0aC5jZWlsKChzaXouWHNpeiAtIHNpei5YVE9zaXopIC8gc2l6LlhUc2l6KTsKICAgIHZhciBudW1ZdGlsZXMgPSBNYXRoLmNlaWwoKHNpei5Zc2l6IC0gc2l6LllUT3NpeikgLyBzaXouWVRzaXopOwogICAgZm9yICh2YXIgcSA9IDA7IHEgPCBudW1ZdGlsZXM7IHErKykgewogICAgICBmb3IgKHZhciBwID0gMDsgcCA8IG51bVh0aWxlczsgcCsrKSB7CiAgICAgICAgdGlsZSA9IHt9OwogICAgICAgIHRpbGUudHgwID0gTWF0aC5tYXgoc2l6LlhUT3NpeiArIHAgKiBzaXouWFRzaXosIHNpei5YT3Npeik7CiAgICAgICAgdGlsZS50eTAgPSBNYXRoLm1heChzaXouWVRPc2l6ICsgcSAqIHNpei5ZVHNpeiwgc2l6LllPc2l6KTsKICAgICAgICB0aWxlLnR4MSA9IE1hdGgubWluKHNpei5YVE9zaXogKyAocCArIDEpICogc2l6LlhUc2l6LCBzaXouWHNpeik7CiAgICAgICAgdGlsZS50eTEgPSBNYXRoLm1pbihzaXouWVRPc2l6ICsgKHEgKyAxKSAqIHNpei5ZVHNpeiwgc2l6LllzaXopOwogICAgICAgIHRpbGUud2lkdGggPSB0aWxlLnR4MSAtIHRpbGUudHgwOwogICAgICAgIHRpbGUuaGVpZ2h0ID0gdGlsZS50eTEgLSB0aWxlLnR5MDsKICAgICAgICB0aWxlLmNvbXBvbmVudHMgPSBbXTsKICAgICAgICB0aWxlcy5wdXNoKHRpbGUpOwogICAgICB9CiAgICB9CiAgICBjb250ZXh0LnRpbGVzID0gdGlsZXM7CgogICAgdmFyIGNvbXBvbmVudHNDb3VudCA9IHNpei5Dc2l6OwogICAgZm9yICh2YXIgaSA9IDAsIGlpID0gY29tcG9uZW50c0NvdW50OyBpIDwgaWk7IGkrKykgewogICAgICB2YXIgY29tcG9uZW50ID0gY29tcG9uZW50c1tpXTsKICAgICAgZm9yICh2YXIgaiA9IDAsIGpqID0gdGlsZXMubGVuZ3RoOyBqIDwgamo7IGorKykgewogICAgICAgIHZhciB0aWxlQ29tcG9uZW50ID0ge307CiAgICAgICAgdGlsZSA9IHRpbGVzW2pdOwogICAgICAgIHRpbGVDb21wb25lbnQudGN4MCA9IE1hdGguY2VpbCh0aWxlLnR4MCAvIGNvbXBvbmVudC5YUnNpeik7CiAgICAgICAgdGlsZUNvbXBvbmVudC50Y3kwID0gTWF0aC5jZWlsKHRpbGUudHkwIC8gY29tcG9uZW50LllSc2l6KTsKICAgICAgICB0aWxlQ29tcG9uZW50LnRjeDEgPSBNYXRoLmNlaWwodGlsZS50eDEgLyBjb21wb25lbnQuWFJzaXopOwogICAgICAgIHRpbGVDb21wb25lbnQudGN5MSA9IE1hdGguY2VpbCh0aWxlLnR5MSAvIGNvbXBvbmVudC5ZUnNpeik7CiAgICAgICAgdGlsZUNvbXBvbmVudC53aWR0aCA9IHRpbGVDb21wb25lbnQudGN4MSAtIHRpbGVDb21wb25lbnQudGN4MDsKICAgICAgICB0aWxlQ29tcG9uZW50LmhlaWdodCA9IHRpbGVDb21wb25lbnQudGN5MSAtIHRpbGVDb21wb25lbnQudGN5MDsKICAgICAgICB0aWxlLmNvbXBvbmVudHNbaV0gPSB0aWxlQ29tcG9uZW50OwogICAgICB9CiAgICB9CiAgfQogIGZ1bmN0aW9uIGdldEJsb2Nrc0RpbWVuc2lvbnMoY29udGV4dCwgY29tcG9uZW50LCByKSB7CiAgICB2YXIgY29kT3JDb2MgPSBjb21wb25lbnQuY29kaW5nU3R5bGVQYXJhbWV0ZXJzOwogICAgdmFyIHJlc3VsdCA9IHt9OwogICAgaWYgKCFjb2RPckNvYy5lbnRyb3B5Q29kZXJXaXRoQ3VzdG9tUHJlY2luY3RzKSB7CiAgICAgIHJlc3VsdC5QUHggPSAxNTsKICAgICAgcmVzdWx0LlBQeSA9IDE1OwogICAgfSBlbHNlIHsKICAgICAgcmVzdWx0LlBQeCA9IGNvZE9yQ29jLnByZWNpbmN0c1NpemVzW3JdLlBQeDsKICAgICAgcmVzdWx0LlBQeSA9IGNvZE9yQ29jLnByZWNpbmN0c1NpemVzW3JdLlBQeTsKICAgIH0KICAgIC8vIGNhbGN1bGF0ZSBjb2RlYmxvY2sgc2l6ZSBhcyBkZXNjcmliZWQgaW4gc2VjdGlvbiBCLjcKICAgIHJlc3VsdC54Y2JfID0gKHIgPiAwID8gTWF0aC5taW4oY29kT3JDb2MueGNiLCByZXN1bHQuUFB4IC0gMSkgOgogICAgICAgICAgICAgICAgICAgTWF0aC5taW4oY29kT3JDb2MueGNiLCByZXN1bHQuUFB4KSk7CiAgICByZXN1bHQueWNiXyA9IChyID4gMCA/IE1hdGgubWluKGNvZE9yQ29jLnljYiwgcmVzdWx0LlBQeSAtIDEpIDoKICAgICAgICAgICAgICAgICAgIE1hdGgubWluKGNvZE9yQ29jLnljYiwgcmVzdWx0LlBQeSkpOwogICAgcmV0dXJuIHJlc3VsdDsKICB9CiAgZnVuY3Rpb24gYnVpbGRQcmVjaW5jdHMoY29udGV4dCwgcmVzb2x1dGlvbiwgZGltZW5zaW9ucykgewogICAgLy8gU2VjdGlvbiBCLjYgRGl2aXNpb24gcmVzb2x1dGlvbiB0byBwcmVjaW5jdHMKICAgIHZhciBwcmVjaW5jdFdpZHRoID0gMSA8PCBkaW1lbnNpb25zLlBQeDsKICAgIHZhciBwcmVjaW5jdEhlaWdodCA9IDEgPDwgZGltZW5zaW9ucy5QUHk7CiAgICAvLyBKYXNwZXIgaW50cm9kdWNlcyBjb2RlYmxvY2sgZ3JvdXBzIGZvciBtYXBwaW5nIGVhY2ggc3ViYmFuZCBjb2RlYmxvY2tzCiAgICAvLyB0byBwcmVjaW5jdHMuIFByZWNpbmN0IHBhcnRpdGlvbiBkaXZpZGVzIGEgcmVzb2x1dGlvbiBhY2NvcmRpbmcgdG8gd2lkdGgKICAgIC8vIGFuZCBoZWlnaHQgcGFyYW1ldGVycy4gVGhlIHN1YmJhbmQgdGhhdCBiZWxvbmdzIHRvIHRoZSByZXNvbHV0aW9uIGxldmVsCiAgICAvLyBoYXMgYSBkaWZmZXJlbnQgc2l6ZSB0aGFuIHRoZSBsZXZlbCwgdW5sZXNzIGl0IGlzIHRoZSB6ZXJvIHJlc29sdXRpb24uCgogICAgLy8gRnJvbSBKYXNwZXIgZG9jdW1lbnRhdGlvbjoganBlZzIwMDAucGRmLCBzZWN0aW9uIEs6IFRpZXItMiBjb2Rpbmc6CiAgICAvLyBUaGUgcHJlY2luY3QgcGFydGl0aW9uaW5nIGZvciBhIHBhcnRpY3VsYXIgc3ViYmFuZCBpcyBkZXJpdmVkIGZyb20gYQogICAgLy8gcGFydGl0aW9uaW5nIG9mIGl0cyBwYXJlbnQgTEwgYmFuZCAoaS5lLiwgdGhlIExMIGJhbmQgYXQgdGhlIG5leHQgaGlnaGVyCiAgICAvLyByZXNvbHV0aW9uIGxldmVsKS4uLiBUaGUgTEwgYmFuZCBhc3NvY2lhdGVkIHdpdGggZWFjaCByZXNvbHV0aW9uIGxldmVsIGlzCiAgICAvLyBkaXZpZGVkIGludG8gcHJlY2luY3RzLi4uIEVhY2ggb2YgdGhlIHJlc3VsdGluZyBwcmVjaW5jdCByZWdpb25zIGlzIHRoZW4KICAgIC8vIG1hcHBlZCBpbnRvIGl0cyBjaGlsZCBzdWJiYW5kcyAoaWYgYW55KSBhdCB0aGUgbmV4dCBsb3dlciByZXNvbHV0aW9uCiAgICAvLyBsZXZlbC4gVGhpcyBpcyBhY2NvbXBsaXNoZWQgYnkgdXNpbmcgdGhlIGNvb3JkaW5hdGUgdHJhbnNmb3JtYXRpb24KICAgIC8vICh1LCB2KSA9IChjZWlsKHgvMiksIGNlaWwoeS8yKSkgd2hlcmUgKHgsIHkpIGFuZCAodSwgdikgYXJlIHRoZQogICAgLy8gY29vcmRpbmF0ZXMgb2YgYSBwb2ludCBpbiB0aGUgTEwgYmFuZCBhbmQgY2hpbGQgc3ViYmFuZCwgcmVzcGVjdGl2ZWx5LgogICAgdmFyIGlzWmVyb1JlcyA9IHJlc29sdXRpb24ucmVzTGV2ZWwgPT09IDA7CiAgICB2YXIgcHJlY2luY3RXaWR0aEluU3ViYmFuZCA9IDEgPDwgKGRpbWVuc2lvbnMuUFB4ICsgKGlzWmVyb1JlcyA/IDAgOiAtMSkpOwogICAgdmFyIHByZWNpbmN0SGVpZ2h0SW5TdWJiYW5kID0gMSA8PCAoZGltZW5zaW9ucy5QUHkgKyAoaXNaZXJvUmVzID8gMCA6IC0xKSk7CiAgICB2YXIgbnVtcHJlY2luY3Rzd2lkZSA9IChyZXNvbHV0aW9uLnRyeDEgPiByZXNvbHV0aW9uLnRyeDAgPwogICAgICBNYXRoLmNlaWwocmVzb2x1dGlvbi50cngxIC8gcHJlY2luY3RXaWR0aCkgLQogICAgICBNYXRoLmZsb29yKHJlc29sdXRpb24udHJ4MCAvIHByZWNpbmN0V2lkdGgpIDogMCk7CiAgICB2YXIgbnVtcHJlY2luY3RzaGlnaCA9IChyZXNvbHV0aW9uLnRyeTEgPiByZXNvbHV0aW9uLnRyeTAgPwogICAgICBNYXRoLmNlaWwocmVzb2x1dGlvbi50cnkxIC8gcHJlY2luY3RIZWlnaHQpIC0KICAgICAgTWF0aC5mbG9vcihyZXNvbHV0aW9uLnRyeTAgLyBwcmVjaW5jdEhlaWdodCkgOiAwKTsKICAgIHZhciBudW1wcmVjaW5jdHMgPSBudW1wcmVjaW5jdHN3aWRlICogbnVtcHJlY2luY3RzaGlnaDsKCiAgICByZXNvbHV0aW9uLnByZWNpbmN0UGFyYW1ldGVycyA9IHsKICAgICAgcHJlY2luY3RXaWR0aDogcHJlY2luY3RXaWR0aCwKICAgICAgcHJlY2luY3RIZWlnaHQ6IHByZWNpbmN0SGVpZ2h0LAogICAgICBudW1wcmVjaW5jdHN3aWRlOiBudW1wcmVjaW5jdHN3aWRlLAogICAgICBudW1wcmVjaW5jdHNoaWdoOiBudW1wcmVjaW5jdHNoaWdoLAogICAgICBudW1wcmVjaW5jdHM6IG51bXByZWNpbmN0cywKICAgICAgcHJlY2luY3RXaWR0aEluU3ViYmFuZDogcHJlY2luY3RXaWR0aEluU3ViYmFuZCwKICAgICAgcHJlY2luY3RIZWlnaHRJblN1YmJhbmQ6IHByZWNpbmN0SGVpZ2h0SW5TdWJiYW5kCiAgICB9OwogIH0KICBmdW5jdGlvbiBidWlsZENvZGVibG9ja3MoY29udGV4dCwgc3ViYmFuZCwgZGltZW5zaW9ucykgewogICAgLy8gU2VjdGlvbiBCLjcgRGl2aXNpb24gc3ViLWJhbmQgaW50byBjb2RlLWJsb2NrcwogICAgdmFyIHhjYl8gPSBkaW1lbnNpb25zLnhjYl87CiAgICB2YXIgeWNiXyA9IGRpbWVuc2lvbnMueWNiXzsKICAgIHZhciBjb2RlYmxvY2tXaWR0aCA9IDEgPDwgeGNiXzsKICAgIHZhciBjb2RlYmxvY2tIZWlnaHQgPSAxIDw8IHljYl87CiAgICB2YXIgY2J4MCA9IHN1YmJhbmQudGJ4MCA+PiB4Y2JfOwogICAgdmFyIGNieTAgPSBzdWJiYW5kLnRieTAgPj4geWNiXzsKICAgIHZhciBjYngxID0gKHN1YmJhbmQudGJ4MSArIGNvZGVibG9ja1dpZHRoIC0gMSkgPj4geGNiXzsKICAgIHZhciBjYnkxID0gKHN1YmJhbmQudGJ5MSArIGNvZGVibG9ja0hlaWdodCAtIDEpID4+IHljYl87CiAgICB2YXIgcHJlY2luY3RQYXJhbWV0ZXJzID0gc3ViYmFuZC5yZXNvbHV0aW9uLnByZWNpbmN0UGFyYW1ldGVyczsKICAgIHZhciBjb2RlYmxvY2tzID0gW107CiAgICB2YXIgcHJlY2luY3RzID0gW107CiAgICB2YXIgaSwgaiwgY29kZWJsb2NrLCBwcmVjaW5jdE51bWJlcjsKICAgIGZvciAoaiA9IGNieTA7IGogPCBjYnkxOyBqKyspIHsKICAgICAgZm9yIChpID0gY2J4MDsgaSA8IGNieDE7IGkrKykgewogICAgICAgIGNvZGVibG9jayA9IHsKICAgICAgICAgIGNieDogaSwKICAgICAgICAgIGNieTogaiwKICAgICAgICAgIHRieDA6IGNvZGVibG9ja1dpZHRoICogaSwKICAgICAgICAgIHRieTA6IGNvZGVibG9ja0hlaWdodCAqIGosCiAgICAgICAgICB0YngxOiBjb2RlYmxvY2tXaWR0aCAqIChpICsgMSksCiAgICAgICAgICB0YnkxOiBjb2RlYmxvY2tIZWlnaHQgKiAoaiArIDEpCiAgICAgICAgfTsKCiAgICAgICAgY29kZWJsb2NrLnRieDBfID0gTWF0aC5tYXgoc3ViYmFuZC50YngwLCBjb2RlYmxvY2sudGJ4MCk7CiAgICAgICAgY29kZWJsb2NrLnRieTBfID0gTWF0aC5tYXgoc3ViYmFuZC50YnkwLCBjb2RlYmxvY2sudGJ5MCk7CiAgICAgICAgY29kZWJsb2NrLnRieDFfID0gTWF0aC5taW4oc3ViYmFuZC50YngxLCBjb2RlYmxvY2sudGJ4MSk7CiAgICAgICAgY29kZWJsb2NrLnRieTFfID0gTWF0aC5taW4oc3ViYmFuZC50YnkxLCBjb2RlYmxvY2sudGJ5MSk7CgogICAgICAgIC8vIENhbGN1bGF0ZSBwcmVjaW5jdCBudW1iZXIgZm9yIHRoaXMgY29kZWJsb2NrLCBjb2RlYmxvY2sgcG9zaXRpb24KICAgICAgICAvLyBzaG91bGQgYmUgcmVsYXRpdmUgdG8gaXRzIHN1YmJhbmQsIHVzZSBhY3R1YWwgZGltZW5zaW9uIGFuZCBwb3NpdGlvbgogICAgICAgIC8vIFNlZSBjb21tZW50IGFib3V0IGNvZGVibG9jayBncm91cCB3aWR0aCBhbmQgaGVpZ2h0CiAgICAgICAgdmFyIHBpID0gTWF0aC5mbG9vcigoY29kZWJsb2NrLnRieDBfIC0gc3ViYmFuZC50YngwKSAvCiAgICAgICAgICBwcmVjaW5jdFBhcmFtZXRlcnMucHJlY2luY3RXaWR0aEluU3ViYmFuZCk7CiAgICAgICAgdmFyIHBqID0gTWF0aC5mbG9vcigoY29kZWJsb2NrLnRieTBfIC0gc3ViYmFuZC50YnkwKSAvCiAgICAgICAgICBwcmVjaW5jdFBhcmFtZXRlcnMucHJlY2luY3RIZWlnaHRJblN1YmJhbmQpOwogICAgICAgIHByZWNpbmN0TnVtYmVyID0gcGkgKyAocGogKiBwcmVjaW5jdFBhcmFtZXRlcnMubnVtcHJlY2luY3Rzd2lkZSk7CgogICAgICAgIGNvZGVibG9jay5wcmVjaW5jdE51bWJlciA9IHByZWNpbmN0TnVtYmVyOwogICAgICAgIGNvZGVibG9jay5zdWJiYW5kVHlwZSA9IHN1YmJhbmQudHlwZTsKICAgICAgICBjb2RlYmxvY2suTGJsb2NrID0gMzsKCiAgICAgICAgaWYgKGNvZGVibG9jay50YngxXyA8PSBjb2RlYmxvY2sudGJ4MF8gfHwKICAgICAgICAgICAgY29kZWJsb2NrLnRieTFfIDw9IGNvZGVibG9jay50YnkwXykgewogICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIGNvZGVibG9ja3MucHVzaChjb2RlYmxvY2spOwogICAgICAgIC8vIGJ1aWxkaW5nIHByZWNpbmN0IGZvciB0aGUgc3ViLWJhbmQKICAgICAgICB2YXIgcHJlY2luY3QgPSBwcmVjaW5jdHNbcHJlY2luY3ROdW1iZXJdOwogICAgICAgIGlmIChwcmVjaW5jdCAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICBpZiAoaSA8IHByZWNpbmN0LmNieE1pbikgewogICAgICAgICAgICBwcmVjaW5jdC5jYnhNaW4gPSBpOwogICAgICAgICAgfSBlbHNlIGlmIChpID4gcHJlY2luY3QuY2J4TWF4KSB7CiAgICAgICAgICAgIHByZWNpbmN0LmNieE1heCA9IGk7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoaiA8IHByZWNpbmN0LmNieU1pbikgewogICAgICAgICAgICBwcmVjaW5jdC5jYnhNaW4gPSBqOwogICAgICAgICAgfSBlbHNlIGlmIChqID4gcHJlY2luY3QuY2J5TWF4KSB7CiAgICAgICAgICAgIHByZWNpbmN0LmNieU1heCA9IGo7CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHByZWNpbmN0c1twcmVjaW5jdE51bWJlcl0gPSBwcmVjaW5jdCA9IHsKICAgICAgICAgICAgY2J4TWluOiBpLAogICAgICAgICAgICBjYnlNaW46IGosCiAgICAgICAgICAgIGNieE1heDogaSwKICAgICAgICAgICAgY2J5TWF4OiBqCiAgICAgICAgICB9OwogICAgICAgIH0KICAgICAgICBjb2RlYmxvY2sucHJlY2luY3QgPSBwcmVjaW5jdDsKICAgICAgfQogICAgfQogICAgc3ViYmFuZC5jb2RlYmxvY2tQYXJhbWV0ZXJzID0gewogICAgICBjb2RlYmxvY2tXaWR0aDogeGNiXywKICAgICAgY29kZWJsb2NrSGVpZ2h0OiB5Y2JfLAogICAgICBudW1jb2RlYmxvY2t3aWRlOiBjYngxIC0gY2J4MCArIDEsCiAgICAgIG51bWNvZGVibG9ja2hpZ2g6IGNieTEgLSBjYnkwICsgMQogICAgfTsKICAgIHN1YmJhbmQuY29kZWJsb2NrcyA9IGNvZGVibG9ja3M7CiAgICBzdWJiYW5kLnByZWNpbmN0cyA9IHByZWNpbmN0czsKICB9CiAgZnVuY3Rpb24gY3JlYXRlUGFja2V0KHJlc29sdXRpb24sIHByZWNpbmN0TnVtYmVyLCBsYXllck51bWJlcikgewogICAgdmFyIHByZWNpbmN0Q29kZWJsb2NrcyA9IFtdOwogICAgLy8gU2VjdGlvbiBCLjEwLjggT3JkZXIgb2YgaW5mbyBpbiBwYWNrZXQKICAgIHZhciBzdWJiYW5kcyA9IHJlc29sdXRpb24uc3ViYmFuZHM7CiAgICAvLyBzdWItYmFuZHMgYWxyZWFkeSBvcmRlcmVkIGluICdMTCcsICdITCcsICdMSCcsIGFuZCAnSEgnIHNlcXVlbmNlCiAgICBmb3IgKHZhciBpID0gMCwgaWkgPSBzdWJiYW5kcy5sZW5ndGg7IGkgPCBpaTsgaSsrKSB7CiAgICAgIHZhciBzdWJiYW5kID0gc3ViYmFuZHNbaV07CiAgICAgIHZhciBjb2RlYmxvY2tzID0gc3ViYmFuZC5jb2RlYmxvY2tzOwogICAgICBmb3IgKHZhciBqID0gMCwgamogPSBjb2RlYmxvY2tzLmxlbmd0aDsgaiA8IGpqOyBqKyspIHsKICAgICAgICB2YXIgY29kZWJsb2NrID0gY29kZWJsb2Nrc1tqXTsKICAgICAgICBpZiAoY29kZWJsb2NrLnByZWNpbmN0TnVtYmVyICE9PSBwcmVjaW5jdE51bWJlcikgewogICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIHByZWNpbmN0Q29kZWJsb2Nrcy5wdXNoKGNvZGVibG9jayk7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiB7CiAgICAgIGxheWVyTnVtYmVyOiBsYXllck51bWJlciwKICAgICAgY29kZWJsb2NrczogcHJlY2luY3RDb2RlYmxvY2tzCiAgICB9OwogIH0KICBmdW5jdGlvbiBMYXllclJlc29sdXRpb25Db21wb25lbnRQb3NpdGlvbkl0ZXJhdG9yKGNvbnRleHQpIHsKICAgIHZhciBzaXogPSBjb250ZXh0LlNJWjsKICAgIHZhciB0aWxlSW5kZXggPSBjb250ZXh0LmN1cnJlbnRUaWxlLmluZGV4OwogICAgdmFyIHRpbGUgPSBjb250ZXh0LnRpbGVzW3RpbGVJbmRleF07CiAgICB2YXIgbGF5ZXJzQ291bnQgPSB0aWxlLmNvZGluZ1N0eWxlRGVmYXVsdFBhcmFtZXRlcnMubGF5ZXJzQ291bnQ7CiAgICB2YXIgY29tcG9uZW50c0NvdW50ID0gc2l6LkNzaXo7CiAgICB2YXIgbWF4RGVjb21wb3NpdGlvbkxldmVsc0NvdW50ID0gMDsKICAgIGZvciAodmFyIHEgPSAwOyBxIDwgY29tcG9uZW50c0NvdW50OyBxKyspIHsKICAgICAgbWF4RGVjb21wb3NpdGlvbkxldmVsc0NvdW50ID0gTWF0aC5tYXgobWF4RGVjb21wb3NpdGlvbkxldmVsc0NvdW50LAogICAgICAgIHRpbGUuY29tcG9uZW50c1txXS5jb2RpbmdTdHlsZVBhcmFtZXRlcnMuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50KTsKICAgIH0KCiAgICB2YXIgbCA9IDAsIHIgPSAwLCBpID0gMCwgayA9IDA7CgogICAgdGhpcy5uZXh0UGFja2V0ID0gZnVuY3Rpb24gSnB4SW1hZ2VfbmV4dFBhY2tldCgpIHsKICAgICAgLy8gU2VjdGlvbiBCLjEyLjEuMSBMYXllci1yZXNvbHV0aW9uLWNvbXBvbmVudC1wb3NpdGlvbgogICAgICBmb3IgKDsgbCA8IGxheWVyc0NvdW50OyBsKyspIHsKICAgICAgICBmb3IgKDsgciA8PSBtYXhEZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQ7IHIrKykgewogICAgICAgICAgZm9yICg7IGkgPCBjb21wb25lbnRzQ291bnQ7IGkrKykgewogICAgICAgICAgICB2YXIgY29tcG9uZW50ID0gdGlsZS5jb21wb25lbnRzW2ldOwogICAgICAgICAgICBpZiAociA+IGNvbXBvbmVudC5jb2RpbmdTdHlsZVBhcmFtZXRlcnMuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50KSB7CiAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciByZXNvbHV0aW9uID0gY29tcG9uZW50LnJlc29sdXRpb25zW3JdOwogICAgICAgICAgICB2YXIgbnVtcHJlY2luY3RzID0gcmVzb2x1dGlvbi5wcmVjaW5jdFBhcmFtZXRlcnMubnVtcHJlY2luY3RzOwogICAgICAgICAgICBmb3IgKDsgayA8IG51bXByZWNpbmN0czspIHsKICAgICAgICAgICAgICB2YXIgcGFja2V0ID0gY3JlYXRlUGFja2V0KHJlc29sdXRpb24sIGssIGwpOwogICAgICAgICAgICAgIGsrKzsKICAgICAgICAgICAgICByZXR1cm4gcGFja2V0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGsgPSAwOwogICAgICAgICAgfQogICAgICAgICAgaSA9IDA7CiAgICAgICAgfQogICAgICAgIHIgPSAwOwogICAgICB9CiAgICAgIHRocm93IG5ldyBFcnJvcignSlBYIEVycm9yOiBPdXQgb2YgcGFja2V0cycpOwogICAgfTsKICB9CiAgZnVuY3Rpb24gUmVzb2x1dGlvbkxheWVyQ29tcG9uZW50UG9zaXRpb25JdGVyYXRvcihjb250ZXh0KSB7CiAgICB2YXIgc2l6ID0gY29udGV4dC5TSVo7CiAgICB2YXIgdGlsZUluZGV4ID0gY29udGV4dC5jdXJyZW50VGlsZS5pbmRleDsKICAgIHZhciB0aWxlID0gY29udGV4dC50aWxlc1t0aWxlSW5kZXhdOwogICAgdmFyIGxheWVyc0NvdW50ID0gdGlsZS5jb2RpbmdTdHlsZURlZmF1bHRQYXJhbWV0ZXJzLmxheWVyc0NvdW50OwogICAgdmFyIGNvbXBvbmVudHNDb3VudCA9IHNpei5Dc2l6OwogICAgdmFyIG1heERlY29tcG9zaXRpb25MZXZlbHNDb3VudCA9IDA7CiAgICBmb3IgKHZhciBxID0gMDsgcSA8IGNvbXBvbmVudHNDb3VudDsgcSsrKSB7CiAgICAgIG1heERlY29tcG9zaXRpb25MZXZlbHNDb3VudCA9IE1hdGgubWF4KG1heERlY29tcG9zaXRpb25MZXZlbHNDb3VudCwKICAgICAgICB0aWxlLmNvbXBvbmVudHNbcV0uY29kaW5nU3R5bGVQYXJhbWV0ZXJzLmRlY29tcG9zaXRpb25MZXZlbHNDb3VudCk7CiAgICB9CgogICAgdmFyIHIgPSAwLCBsID0gMCwgaSA9IDAsIGsgPSAwOwoKICAgIHRoaXMubmV4dFBhY2tldCA9IGZ1bmN0aW9uIEpweEltYWdlX25leHRQYWNrZXQoKSB7CiAgICAgIC8vIFNlY3Rpb24gQi4xMi4xLjIgUmVzb2x1dGlvbi1sYXllci1jb21wb25lbnQtcG9zaXRpb24KICAgICAgZm9yICg7IHIgPD0gbWF4RGVjb21wb3NpdGlvbkxldmVsc0NvdW50OyByKyspIHsKICAgICAgICBmb3IgKDsgbCA8IGxheWVyc0NvdW50OyBsKyspIHsKICAgICAgICAgIGZvciAoOyBpIDwgY29tcG9uZW50c0NvdW50OyBpKyspIHsKICAgICAgICAgICAgdmFyIGNvbXBvbmVudCA9IHRpbGUuY29tcG9uZW50c1tpXTsKICAgICAgICAgICAgaWYgKHIgPiBjb21wb25lbnQuY29kaW5nU3R5bGVQYXJhbWV0ZXJzLmRlY29tcG9zaXRpb25MZXZlbHNDb3VudCkgewogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICB2YXIgcmVzb2x1dGlvbiA9IGNvbXBvbmVudC5yZXNvbHV0aW9uc1tyXTsKICAgICAgICAgICAgdmFyIG51bXByZWNpbmN0cyA9IHJlc29sdXRpb24ucHJlY2luY3RQYXJhbWV0ZXJzLm51bXByZWNpbmN0czsKICAgICAgICAgICAgZm9yICg7IGsgPCBudW1wcmVjaW5jdHM7KSB7CiAgICAgICAgICAgICAgdmFyIHBhY2tldCA9IGNyZWF0ZVBhY2tldChyZXNvbHV0aW9uLCBrLCBsKTsKICAgICAgICAgICAgICBrKys7CiAgICAgICAgICAgICAgcmV0dXJuIHBhY2tldDsKICAgICAgICAgICAgfQogICAgICAgICAgICBrID0gMDsKICAgICAgICAgIH0KICAgICAgICAgIGkgPSAwOwogICAgICAgIH0KICAgICAgICBsID0gMDsKICAgICAgfQogICAgICB0aHJvdyBuZXcgRXJyb3IoJ0pQWCBFcnJvcjogT3V0IG9mIHBhY2tldHMnKTsKICAgIH07CiAgfQogIGZ1bmN0aW9uIFJlc29sdXRpb25Qb3NpdGlvbkNvbXBvbmVudExheWVySXRlcmF0b3IoY29udGV4dCkgewogICAgdmFyIHNpeiA9IGNvbnRleHQuU0laOwogICAgdmFyIHRpbGVJbmRleCA9IGNvbnRleHQuY3VycmVudFRpbGUuaW5kZXg7CiAgICB2YXIgdGlsZSA9IGNvbnRleHQudGlsZXNbdGlsZUluZGV4XTsKICAgIHZhciBsYXllcnNDb3VudCA9IHRpbGUuY29kaW5nU3R5bGVEZWZhdWx0UGFyYW1ldGVycy5sYXllcnNDb3VudDsKICAgIHZhciBjb21wb25lbnRzQ291bnQgPSBzaXouQ3NpejsKICAgIHZhciBsLCByLCBjLCBwOwogICAgdmFyIG1heERlY29tcG9zaXRpb25MZXZlbHNDb3VudCA9IDA7CiAgICBmb3IgKGMgPSAwOyBjIDwgY29tcG9uZW50c0NvdW50OyBjKyspIHsKICAgICAgdmFyIGNvbXBvbmVudCA9IHRpbGUuY29tcG9uZW50c1tjXTsKICAgICAgbWF4RGVjb21wb3NpdGlvbkxldmVsc0NvdW50ID0gTWF0aC5tYXgobWF4RGVjb21wb3NpdGlvbkxldmVsc0NvdW50LAogICAgICAgIGNvbXBvbmVudC5jb2RpbmdTdHlsZVBhcmFtZXRlcnMuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50KTsKICAgIH0KICAgIHZhciBtYXhOdW1QcmVjaW5jdHNJbkxldmVsID0gbmV3IEludDMyQXJyYXkoCiAgICAgIG1heERlY29tcG9zaXRpb25MZXZlbHNDb3VudCArIDEpOwogICAgZm9yIChyID0gMDsgciA8PSBtYXhEZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQ7ICsrcikgewogICAgICB2YXIgbWF4TnVtUHJlY2luY3RzID0gMDsKICAgICAgZm9yIChjID0gMDsgYyA8IGNvbXBvbmVudHNDb3VudDsgKytjKSB7CiAgICAgICAgdmFyIHJlc29sdXRpb25zID0gdGlsZS5jb21wb25lbnRzW2NdLnJlc29sdXRpb25zOwogICAgICAgIGlmIChyIDwgcmVzb2x1dGlvbnMubGVuZ3RoKSB7CiAgICAgICAgICBtYXhOdW1QcmVjaW5jdHMgPSBNYXRoLm1heChtYXhOdW1QcmVjaW5jdHMsCiAgICAgICAgICAgIHJlc29sdXRpb25zW3JdLnByZWNpbmN0UGFyYW1ldGVycy5udW1wcmVjaW5jdHMpOwogICAgICAgIH0KICAgICAgfQogICAgICBtYXhOdW1QcmVjaW5jdHNJbkxldmVsW3JdID0gbWF4TnVtUHJlY2luY3RzOwogICAgfQogICAgbCA9IDA7CiAgICByID0gMDsKICAgIGMgPSAwOwogICAgcCA9IDA7CgogICAgdGhpcy5uZXh0UGFja2V0ID0gZnVuY3Rpb24gSnB4SW1hZ2VfbmV4dFBhY2tldCgpIHsKICAgICAgLy8gU2VjdGlvbiBCLjEyLjEuMyBSZXNvbHV0aW9uLXBvc2l0aW9uLWNvbXBvbmVudC1sYXllcgogICAgICBmb3IgKDsgciA8PSBtYXhEZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQ7IHIrKykgewogICAgICAgIGZvciAoOyBwIDwgbWF4TnVtUHJlY2luY3RzSW5MZXZlbFtyXTsgcCsrKSB7CiAgICAgICAgICBmb3IgKDsgYyA8IGNvbXBvbmVudHNDb3VudDsgYysrKSB7CiAgICAgICAgICAgIHZhciBjb21wb25lbnQgPSB0aWxlLmNvbXBvbmVudHNbY107CiAgICAgICAgICAgIGlmIChyID4gY29tcG9uZW50LmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQpIHsKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgcmVzb2x1dGlvbiA9IGNvbXBvbmVudC5yZXNvbHV0aW9uc1tyXTsKICAgICAgICAgICAgdmFyIG51bXByZWNpbmN0cyA9IHJlc29sdXRpb24ucHJlY2luY3RQYXJhbWV0ZXJzLm51bXByZWNpbmN0czsKICAgICAgICAgICAgaWYgKHAgPj0gbnVtcHJlY2luY3RzKSB7CiAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yICg7IGwgPCBsYXllcnNDb3VudDspIHsKICAgICAgICAgICAgICB2YXIgcGFja2V0ID0gY3JlYXRlUGFja2V0KHJlc29sdXRpb24sIHAsIGwpOwogICAgICAgICAgICAgIGwrKzsKICAgICAgICAgICAgICByZXR1cm4gcGFja2V0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGwgPSAwOwogICAgICAgICAgfQogICAgICAgICAgYyA9IDA7CiAgICAgICAgfQogICAgICAgIHAgPSAwOwogICAgICB9CiAgICAgIHRocm93IG5ldyBFcnJvcignSlBYIEVycm9yOiBPdXQgb2YgcGFja2V0cycpOwogICAgfTsKICB9CiAgZnVuY3Rpb24gUG9zaXRpb25Db21wb25lbnRSZXNvbHV0aW9uTGF5ZXJJdGVyYXRvcihjb250ZXh0KSB7CiAgICB2YXIgc2l6ID0gY29udGV4dC5TSVo7CiAgICB2YXIgdGlsZUluZGV4ID0gY29udGV4dC5jdXJyZW50VGlsZS5pbmRleDsKICAgIHZhciB0aWxlID0gY29udGV4dC50aWxlc1t0aWxlSW5kZXhdOwogICAgdmFyIGxheWVyc0NvdW50ID0gdGlsZS5jb2RpbmdTdHlsZURlZmF1bHRQYXJhbWV0ZXJzLmxheWVyc0NvdW50OwogICAgdmFyIGNvbXBvbmVudHNDb3VudCA9IHNpei5Dc2l6OwogICAgdmFyIHByZWNpbmN0c1NpemVzID0gZ2V0UHJlY2luY3RTaXplc0luSW1hZ2VTY2FsZSh0aWxlKTsKICAgIHZhciBwcmVjaW5jdHNJdGVyYXRpb25TaXplcyA9IHByZWNpbmN0c1NpemVzOwogICAgdmFyIGwgPSAwLCByID0gMCwgYyA9IDAsIHB4ID0gMCwgcHkgPSAwOwoKICAgIHRoaXMubmV4dFBhY2tldCA9IGZ1bmN0aW9uIEpweEltYWdlX25leHRQYWNrZXQoKSB7CiAgICAgIC8vIFNlY3Rpb24gQi4xMi4xLjQgUG9zaXRpb24tY29tcG9uZW50LXJlc29sdXRpb24tbGF5ZXIKICAgICAgZm9yICg7IHB5IDwgcHJlY2luY3RzSXRlcmF0aW9uU2l6ZXMubWF4TnVtSGlnaDsgcHkrKykgewogICAgICAgIGZvciAoOyBweCA8IHByZWNpbmN0c0l0ZXJhdGlvblNpemVzLm1heE51bVdpZGU7IHB4KyspIHsKICAgICAgICAgIGZvciAoOyBjIDwgY29tcG9uZW50c0NvdW50OyBjKyspIHsKICAgICAgICAgICAgdmFyIGNvbXBvbmVudCA9IHRpbGUuY29tcG9uZW50c1tjXTsKICAgICAgICAgICAgdmFyIGRlY29tcG9zaXRpb25MZXZlbHNDb3VudCA9CiAgICAgICAgICAgICAgY29tcG9uZW50LmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQ7CiAgICAgICAgICAgIGZvciAoOyByIDw9IGRlY29tcG9zaXRpb25MZXZlbHNDb3VudDsgcisrKSB7CiAgICAgICAgICAgICAgdmFyIHJlc29sdXRpb24gPSBjb21wb25lbnQucmVzb2x1dGlvbnNbcl07CiAgICAgICAgICAgICAgdmFyIHNpemVJbkltYWdlU2NhbGUgPQogICAgICAgICAgICAgICAgcHJlY2luY3RzU2l6ZXMuY29tcG9uZW50c1tjXS5yZXNvbHV0aW9uc1tyXTsKICAgICAgICAgICAgICB2YXIgayA9IGdldFByZWNpbmN0SW5kZXhJZkV4aXN0KAogICAgICAgICAgICAgICAgcHgsCiAgICAgICAgICAgICAgICBweSwKICAgICAgICAgICAgICAgIHNpemVJbkltYWdlU2NhbGUsCiAgICAgICAgICAgICAgICBwcmVjaW5jdHNJdGVyYXRpb25TaXplcywKICAgICAgICAgICAgICAgIHJlc29sdXRpb24pOwogICAgICAgICAgICAgIGlmIChrID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZm9yICg7IGwgPCBsYXllcnNDb3VudDspIHsKICAgICAgICAgICAgICAgIHZhciBwYWNrZXQgPSBjcmVhdGVQYWNrZXQocmVzb2x1dGlvbiwgaywgbCk7CiAgICAgICAgICAgICAgICBsKys7CiAgICAgICAgICAgICAgICByZXR1cm4gcGFja2V0OwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBsID0gMDsKICAgICAgICAgICAgfQogICAgICAgICAgICByID0gMDsKICAgICAgICAgIH0KICAgICAgICAgIGMgPSAwOwogICAgICAgIH0KICAgICAgICBweCA9IDA7CiAgICAgIH0KICAgICAgdGhyb3cgbmV3IEVycm9yKCdKUFggRXJyb3I6IE91dCBvZiBwYWNrZXRzJyk7CiAgICB9OwogIH0KICBmdW5jdGlvbiBDb21wb25lbnRQb3NpdGlvblJlc29sdXRpb25MYXllckl0ZXJhdG9yKGNvbnRleHQpIHsKICAgIHZhciBzaXogPSBjb250ZXh0LlNJWjsKICAgIHZhciB0aWxlSW5kZXggPSBjb250ZXh0LmN1cnJlbnRUaWxlLmluZGV4OwogICAgdmFyIHRpbGUgPSBjb250ZXh0LnRpbGVzW3RpbGVJbmRleF07CiAgICB2YXIgbGF5ZXJzQ291bnQgPSB0aWxlLmNvZGluZ1N0eWxlRGVmYXVsdFBhcmFtZXRlcnMubGF5ZXJzQ291bnQ7CiAgICB2YXIgY29tcG9uZW50c0NvdW50ID0gc2l6LkNzaXo7CiAgICB2YXIgcHJlY2luY3RzU2l6ZXMgPSBnZXRQcmVjaW5jdFNpemVzSW5JbWFnZVNjYWxlKHRpbGUpOwogICAgdmFyIGwgPSAwLCByID0gMCwgYyA9IDAsIHB4ID0gMCwgcHkgPSAwOwoKICAgIHRoaXMubmV4dFBhY2tldCA9IGZ1bmN0aW9uIEpweEltYWdlX25leHRQYWNrZXQoKSB7CiAgICAgIC8vIFNlY3Rpb24gQi4xMi4xLjUgQ29tcG9uZW50LXBvc2l0aW9uLXJlc29sdXRpb24tbGF5ZXIKICAgICAgZm9yICg7IGMgPCBjb21wb25lbnRzQ291bnQ7ICsrYykgewogICAgICAgIHZhciBjb21wb25lbnQgPSB0aWxlLmNvbXBvbmVudHNbY107CiAgICAgICAgdmFyIHByZWNpbmN0c0l0ZXJhdGlvblNpemVzID0gcHJlY2luY3RzU2l6ZXMuY29tcG9uZW50c1tjXTsKICAgICAgICB2YXIgZGVjb21wb3NpdGlvbkxldmVsc0NvdW50ID0KICAgICAgICAgIGNvbXBvbmVudC5jb2RpbmdTdHlsZVBhcmFtZXRlcnMuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50OwogICAgICAgIGZvciAoOyBweSA8IHByZWNpbmN0c0l0ZXJhdGlvblNpemVzLm1heE51bUhpZ2g7IHB5KyspIHsKICAgICAgICAgIGZvciAoOyBweCA8IHByZWNpbmN0c0l0ZXJhdGlvblNpemVzLm1heE51bVdpZGU7IHB4KyspIHsKICAgICAgICAgICAgZm9yICg7IHIgPD0gZGVjb21wb3NpdGlvbkxldmVsc0NvdW50OyByKyspIHsKICAgICAgICAgICAgICB2YXIgcmVzb2x1dGlvbiA9IGNvbXBvbmVudC5yZXNvbHV0aW9uc1tyXTsKICAgICAgICAgICAgICB2YXIgc2l6ZUluSW1hZ2VTY2FsZSA9IHByZWNpbmN0c0l0ZXJhdGlvblNpemVzLnJlc29sdXRpb25zW3JdOwogICAgICAgICAgICAgIHZhciBrID0gZ2V0UHJlY2luY3RJbmRleElmRXhpc3QoCiAgICAgICAgICAgICAgICBweCwKICAgICAgICAgICAgICAgIHB5LAogICAgICAgICAgICAgICAgc2l6ZUluSW1hZ2VTY2FsZSwKICAgICAgICAgICAgICAgIHByZWNpbmN0c0l0ZXJhdGlvblNpemVzLAogICAgICAgICAgICAgICAgcmVzb2x1dGlvbik7CiAgICAgICAgICAgICAgaWYgKGsgPT09IG51bGwpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBmb3IgKDsgbCA8IGxheWVyc0NvdW50OykgewogICAgICAgICAgICAgICAgdmFyIHBhY2tldCA9IGNyZWF0ZVBhY2tldChyZXNvbHV0aW9uLCBrLCBsKTsKICAgICAgICAgICAgICAgIGwrKzsKICAgICAgICAgICAgICAgIHJldHVybiBwYWNrZXQ7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGwgPSAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHIgPSAwOwogICAgICAgICAgfQogICAgICAgICAgcHggPSAwOwogICAgICAgIH0KICAgICAgICBweSA9IDA7CiAgICAgIH0KICAgICAgdGhyb3cgbmV3IEVycm9yKCdKUFggRXJyb3I6IE91dCBvZiBwYWNrZXRzJyk7CiAgICB9OwogIH0KICBmdW5jdGlvbiBnZXRQcmVjaW5jdEluZGV4SWZFeGlzdCgKICAgIHB4SW5kZXgsIHB5SW5kZXgsIHNpemVJbkltYWdlU2NhbGUsIHByZWNpbmN0SXRlcmF0aW9uU2l6ZXMsIHJlc29sdXRpb24pIHsKICAgIHZhciBwb3NYID0gcHhJbmRleCAqIHByZWNpbmN0SXRlcmF0aW9uU2l6ZXMubWluV2lkdGg7CiAgICB2YXIgcG9zWSA9IHB5SW5kZXggKiBwcmVjaW5jdEl0ZXJhdGlvblNpemVzLm1pbkhlaWdodDsKICAgIGlmIChwb3NYICUgc2l6ZUluSW1hZ2VTY2FsZS53aWR0aCAhPT0gMCB8fAogICAgICAgIHBvc1kgJSBzaXplSW5JbWFnZVNjYWxlLmhlaWdodCAhPT0gMCkgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0KICAgIHZhciBzdGFydFByZWNpbmN0Um93SW5kZXggPQogICAgICAocG9zWSAvIHNpemVJbkltYWdlU2NhbGUud2lkdGgpICoKICAgICAgcmVzb2x1dGlvbi5wcmVjaW5jdFBhcmFtZXRlcnMubnVtcHJlY2luY3Rzd2lkZTsKICAgIHJldHVybiAocG9zWCAvIHNpemVJbkltYWdlU2NhbGUuaGVpZ2h0KSArIHN0YXJ0UHJlY2luY3RSb3dJbmRleDsKICB9CiAgZnVuY3Rpb24gZ2V0UHJlY2luY3RTaXplc0luSW1hZ2VTY2FsZSh0aWxlKSB7CiAgICB2YXIgY29tcG9uZW50c0NvdW50ID0gdGlsZS5jb21wb25lbnRzLmxlbmd0aDsKICAgIHZhciBtaW5XaWR0aCA9IE51bWJlci5NQVhfVkFMVUU7CiAgICB2YXIgbWluSGVpZ2h0ID0gTnVtYmVyLk1BWF9WQUxVRTsKICAgIHZhciBtYXhOdW1XaWRlID0gMDsKICAgIHZhciBtYXhOdW1IaWdoID0gMDsKICAgIHZhciBzaXplUGVyQ29tcG9uZW50ID0gbmV3IEFycmF5KGNvbXBvbmVudHNDb3VudCk7CiAgICBmb3IgKHZhciBjID0gMDsgYyA8IGNvbXBvbmVudHNDb3VudDsgYysrKSB7CiAgICAgIHZhciBjb21wb25lbnQgPSB0aWxlLmNvbXBvbmVudHNbY107CiAgICAgIHZhciBkZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQgPQogICAgICAgIGNvbXBvbmVudC5jb2RpbmdTdHlsZVBhcmFtZXRlcnMuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50OwogICAgICB2YXIgc2l6ZVBlclJlc29sdXRpb24gPSBuZXcgQXJyYXkoZGVjb21wb3NpdGlvbkxldmVsc0NvdW50ICsgMSk7CiAgICAgIHZhciBtaW5XaWR0aEN1cnJlbnRDb21wb25lbnQgPSBOdW1iZXIuTUFYX1ZBTFVFOwogICAgICB2YXIgbWluSGVpZ2h0Q3VycmVudENvbXBvbmVudCA9IE51bWJlci5NQVhfVkFMVUU7CiAgICAgIHZhciBtYXhOdW1XaWRlQ3VycmVudENvbXBvbmVudCA9IDA7CiAgICAgIHZhciBtYXhOdW1IaWdoQ3VycmVudENvbXBvbmVudCA9IDA7CiAgICAgIHZhciBzY2FsZSA9IDE7CiAgICAgIGZvciAodmFyIHIgPSBkZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQ7IHIgPj0gMDsgLS1yKSB7CiAgICAgICAgdmFyIHJlc29sdXRpb24gPSBjb21wb25lbnQucmVzb2x1dGlvbnNbcl07CiAgICAgICAgdmFyIHdpZHRoQ3VycmVudFJlc29sdXRpb24gPQogICAgICAgICAgc2NhbGUgKiByZXNvbHV0aW9uLnByZWNpbmN0UGFyYW1ldGVycy5wcmVjaW5jdFdpZHRoOwogICAgICAgIHZhciBoZWlnaHRDdXJyZW50UmVzb2x1dGlvbiA9CiAgICAgICAgICBzY2FsZSAqIHJlc29sdXRpb24ucHJlY2luY3RQYXJhbWV0ZXJzLnByZWNpbmN0SGVpZ2h0OwogICAgICAgIG1pbldpZHRoQ3VycmVudENvbXBvbmVudCA9IE1hdGgubWluKAogICAgICAgICAgbWluV2lkdGhDdXJyZW50Q29tcG9uZW50LAogICAgICAgICAgd2lkdGhDdXJyZW50UmVzb2x1dGlvbik7CiAgICAgICAgbWluSGVpZ2h0Q3VycmVudENvbXBvbmVudCA9IE1hdGgubWluKAogICAgICAgICAgbWluSGVpZ2h0Q3VycmVudENvbXBvbmVudCwKICAgICAgICAgIGhlaWdodEN1cnJlbnRSZXNvbHV0aW9uKTsKICAgICAgICBtYXhOdW1XaWRlQ3VycmVudENvbXBvbmVudCA9IE1hdGgubWF4KG1heE51bVdpZGVDdXJyZW50Q29tcG9uZW50LAogICAgICAgICAgcmVzb2x1dGlvbi5wcmVjaW5jdFBhcmFtZXRlcnMubnVtcHJlY2luY3Rzd2lkZSk7CiAgICAgICAgbWF4TnVtSGlnaEN1cnJlbnRDb21wb25lbnQgPSBNYXRoLm1heChtYXhOdW1IaWdoQ3VycmVudENvbXBvbmVudCwKICAgICAgICAgIHJlc29sdXRpb24ucHJlY2luY3RQYXJhbWV0ZXJzLm51bXByZWNpbmN0c2hpZ2gpOwogICAgICAgIHNpemVQZXJSZXNvbHV0aW9uW3JdID0gewogICAgICAgICAgd2lkdGg6IHdpZHRoQ3VycmVudFJlc29sdXRpb24sCiAgICAgICAgICBoZWlnaHQ6IGhlaWdodEN1cnJlbnRSZXNvbHV0aW9uCiAgICAgICAgfTsKICAgICAgICBzY2FsZSA8PD0gMTsKICAgICAgfQogICAgICBtaW5XaWR0aCA9IE1hdGgubWluKG1pbldpZHRoLCBtaW5XaWR0aEN1cnJlbnRDb21wb25lbnQpOwogICAgICBtaW5IZWlnaHQgPSBNYXRoLm1pbihtaW5IZWlnaHQsIG1pbkhlaWdodEN1cnJlbnRDb21wb25lbnQpOwogICAgICBtYXhOdW1XaWRlID0gTWF0aC5tYXgobWF4TnVtV2lkZSwgbWF4TnVtV2lkZUN1cnJlbnRDb21wb25lbnQpOwogICAgICBtYXhOdW1IaWdoID0gTWF0aC5tYXgobWF4TnVtSGlnaCwgbWF4TnVtSGlnaEN1cnJlbnRDb21wb25lbnQpOwogICAgICBzaXplUGVyQ29tcG9uZW50W2NdID0gewogICAgICAgIHJlc29sdXRpb25zOiBzaXplUGVyUmVzb2x1dGlvbiwKICAgICAgICBtaW5XaWR0aDogbWluV2lkdGhDdXJyZW50Q29tcG9uZW50LAogICAgICAgIG1pbkhlaWdodDogbWluSGVpZ2h0Q3VycmVudENvbXBvbmVudCwKICAgICAgICBtYXhOdW1XaWRlOiBtYXhOdW1XaWRlQ3VycmVudENvbXBvbmVudCwKICAgICAgICBtYXhOdW1IaWdoOiBtYXhOdW1IaWdoQ3VycmVudENvbXBvbmVudAogICAgICB9OwogICAgfQogICAgcmV0dXJuIHsKICAgICAgY29tcG9uZW50czogc2l6ZVBlckNvbXBvbmVudCwKICAgICAgbWluV2lkdGg6IG1pbldpZHRoLAogICAgICBtaW5IZWlnaHQ6IG1pbkhlaWdodCwKICAgICAgbWF4TnVtV2lkZTogbWF4TnVtV2lkZSwKICAgICAgbWF4TnVtSGlnaDogbWF4TnVtSGlnaAogICAgfTsKICB9CiAgZnVuY3Rpb24gYnVpbGRQYWNrZXRzKGNvbnRleHQpIHsKICAgIHZhciBzaXogPSBjb250ZXh0LlNJWjsKICAgIHZhciB0aWxlSW5kZXggPSBjb250ZXh0LmN1cnJlbnRUaWxlLmluZGV4OwogICAgdmFyIHRpbGUgPSBjb250ZXh0LnRpbGVzW3RpbGVJbmRleF07CiAgICB2YXIgY29tcG9uZW50c0NvdW50ID0gc2l6LkNzaXo7CiAgICAvLyBDcmVhdGluZyByZXNvbHV0aW9ucyBhbmQgc3ViLWJhbmRzIGZvciBlYWNoIGNvbXBvbmVudAogICAgZm9yICh2YXIgYyA9IDA7IGMgPCBjb21wb25lbnRzQ291bnQ7IGMrKykgewogICAgICB2YXIgY29tcG9uZW50ID0gdGlsZS5jb21wb25lbnRzW2NdOwogICAgICB2YXIgZGVjb21wb3NpdGlvbkxldmVsc0NvdW50ID0KICAgICAgICBjb21wb25lbnQuY29kaW5nU3R5bGVQYXJhbWV0ZXJzLmRlY29tcG9zaXRpb25MZXZlbHNDb3VudDsKICAgICAgLy8gU2VjdGlvbiBCLjUgUmVzb2x1dGlvbiBsZXZlbHMgYW5kIHN1Yi1iYW5kcwogICAgICB2YXIgcmVzb2x1dGlvbnMgPSBbXTsKICAgICAgdmFyIHN1YmJhbmRzID0gW107CiAgICAgIGZvciAodmFyIHIgPSAwOyByIDw9IGRlY29tcG9zaXRpb25MZXZlbHNDb3VudDsgcisrKSB7CiAgICAgICAgdmFyIGJsb2Nrc0RpbWVuc2lvbnMgPSBnZXRCbG9ja3NEaW1lbnNpb25zKGNvbnRleHQsIGNvbXBvbmVudCwgcik7CiAgICAgICAgdmFyIHJlc29sdXRpb24gPSB7fTsKICAgICAgICB2YXIgc2NhbGUgPSAxIDw8IChkZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQgLSByKTsKICAgICAgICByZXNvbHV0aW9uLnRyeDAgPSBNYXRoLmNlaWwoY29tcG9uZW50LnRjeDAgLyBzY2FsZSk7CiAgICAgICAgcmVzb2x1dGlvbi50cnkwID0gTWF0aC5jZWlsKGNvbXBvbmVudC50Y3kwIC8gc2NhbGUpOwogICAgICAgIHJlc29sdXRpb24udHJ4MSA9IE1hdGguY2VpbChjb21wb25lbnQudGN4MSAvIHNjYWxlKTsKICAgICAgICByZXNvbHV0aW9uLnRyeTEgPSBNYXRoLmNlaWwoY29tcG9uZW50LnRjeTEgLyBzY2FsZSk7CiAgICAgICAgcmVzb2x1dGlvbi5yZXNMZXZlbCA9IHI7CiAgICAgICAgYnVpbGRQcmVjaW5jdHMoY29udGV4dCwgcmVzb2x1dGlvbiwgYmxvY2tzRGltZW5zaW9ucyk7CiAgICAgICAgcmVzb2x1dGlvbnMucHVzaChyZXNvbHV0aW9uKTsKCiAgICAgICAgdmFyIHN1YmJhbmQ7CiAgICAgICAgaWYgKHIgPT09IDApIHsKICAgICAgICAgIC8vIG9uZSBzdWItYmFuZCAoTEwpIHdpdGggbGFzdCBkZWNvbXBvc2l0aW9uCiAgICAgICAgICBzdWJiYW5kID0ge307CiAgICAgICAgICBzdWJiYW5kLnR5cGUgPSAnTEwnOwogICAgICAgICAgc3ViYmFuZC50YngwID0gTWF0aC5jZWlsKGNvbXBvbmVudC50Y3gwIC8gc2NhbGUpOwogICAgICAgICAgc3ViYmFuZC50YnkwID0gTWF0aC5jZWlsKGNvbXBvbmVudC50Y3kwIC8gc2NhbGUpOwogICAgICAgICAgc3ViYmFuZC50YngxID0gTWF0aC5jZWlsKGNvbXBvbmVudC50Y3gxIC8gc2NhbGUpOwogICAgICAgICAgc3ViYmFuZC50YnkxID0gTWF0aC5jZWlsKGNvbXBvbmVudC50Y3kxIC8gc2NhbGUpOwogICAgICAgICAgc3ViYmFuZC5yZXNvbHV0aW9uID0gcmVzb2x1dGlvbjsKICAgICAgICAgIGJ1aWxkQ29kZWJsb2Nrcyhjb250ZXh0LCBzdWJiYW5kLCBibG9ja3NEaW1lbnNpb25zKTsKICAgICAgICAgIHN1YmJhbmRzLnB1c2goc3ViYmFuZCk7CiAgICAgICAgICByZXNvbHV0aW9uLnN1YmJhbmRzID0gW3N1YmJhbmRdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB2YXIgYnNjYWxlID0gMSA8PCAoZGVjb21wb3NpdGlvbkxldmVsc0NvdW50IC0gciArIDEpOwogICAgICAgICAgdmFyIHJlc29sdXRpb25TdWJiYW5kcyA9IFtdOwogICAgICAgICAgLy8gdGhyZWUgc3ViLWJhbmRzIChITCwgTEggYW5kIEhIKSB3aXRoIHJlc3Qgb2YgZGVjb21wb3NpdGlvbnMKICAgICAgICAgIHN1YmJhbmQgPSB7fTsKICAgICAgICAgIHN1YmJhbmQudHlwZSA9ICdITCc7CiAgICAgICAgICBzdWJiYW5kLnRieDAgPSBNYXRoLmNlaWwoY29tcG9uZW50LnRjeDAgLyBic2NhbGUgLSAwLjUpOwogICAgICAgICAgc3ViYmFuZC50YnkwID0gTWF0aC5jZWlsKGNvbXBvbmVudC50Y3kwIC8gYnNjYWxlKTsKICAgICAgICAgIHN1YmJhbmQudGJ4MSA9IE1hdGguY2VpbChjb21wb25lbnQudGN4MSAvIGJzY2FsZSAtIDAuNSk7CiAgICAgICAgICBzdWJiYW5kLnRieTEgPSBNYXRoLmNlaWwoY29tcG9uZW50LnRjeTEgLyBic2NhbGUpOwogICAgICAgICAgc3ViYmFuZC5yZXNvbHV0aW9uID0gcmVzb2x1dGlvbjsKICAgICAgICAgIGJ1aWxkQ29kZWJsb2Nrcyhjb250ZXh0LCBzdWJiYW5kLCBibG9ja3NEaW1lbnNpb25zKTsKICAgICAgICAgIHN1YmJhbmRzLnB1c2goc3ViYmFuZCk7CiAgICAgICAgICByZXNvbHV0aW9uU3ViYmFuZHMucHVzaChzdWJiYW5kKTsKCiAgICAgICAgICBzdWJiYW5kID0ge307CiAgICAgICAgICBzdWJiYW5kLnR5cGUgPSAnTEgnOwogICAgICAgICAgc3ViYmFuZC50YngwID0gTWF0aC5jZWlsKGNvbXBvbmVudC50Y3gwIC8gYnNjYWxlKTsKICAgICAgICAgIHN1YmJhbmQudGJ5MCA9IE1hdGguY2VpbChjb21wb25lbnQudGN5MCAvIGJzY2FsZSAtIDAuNSk7CiAgICAgICAgICBzdWJiYW5kLnRieDEgPSBNYXRoLmNlaWwoY29tcG9uZW50LnRjeDEgLyBic2NhbGUpOwogICAgICAgICAgc3ViYmFuZC50YnkxID0gTWF0aC5jZWlsKGNvbXBvbmVudC50Y3kxIC8gYnNjYWxlIC0gMC41KTsKICAgICAgICAgIHN1YmJhbmQucmVzb2x1dGlvbiA9IHJlc29sdXRpb247CiAgICAgICAgICBidWlsZENvZGVibG9ja3MoY29udGV4dCwgc3ViYmFuZCwgYmxvY2tzRGltZW5zaW9ucyk7CiAgICAgICAgICBzdWJiYW5kcy5wdXNoKHN1YmJhbmQpOwogICAgICAgICAgcmVzb2x1dGlvblN1YmJhbmRzLnB1c2goc3ViYmFuZCk7CgogICAgICAgICAgc3ViYmFuZCA9IHt9OwogICAgICAgICAgc3ViYmFuZC50eXBlID0gJ0hIJzsKICAgICAgICAgIHN1YmJhbmQudGJ4MCA9IE1hdGguY2VpbChjb21wb25lbnQudGN4MCAvIGJzY2FsZSAtIDAuNSk7CiAgICAgICAgICBzdWJiYW5kLnRieTAgPSBNYXRoLmNlaWwoY29tcG9uZW50LnRjeTAgLyBic2NhbGUgLSAwLjUpOwogICAgICAgICAgc3ViYmFuZC50YngxID0gTWF0aC5jZWlsKGNvbXBvbmVudC50Y3gxIC8gYnNjYWxlIC0gMC41KTsKICAgICAgICAgIHN1YmJhbmQudGJ5MSA9IE1hdGguY2VpbChjb21wb25lbnQudGN5MSAvIGJzY2FsZSAtIDAuNSk7CiAgICAgICAgICBzdWJiYW5kLnJlc29sdXRpb24gPSByZXNvbHV0aW9uOwogICAgICAgICAgYnVpbGRDb2RlYmxvY2tzKGNvbnRleHQsIHN1YmJhbmQsIGJsb2Nrc0RpbWVuc2lvbnMpOwogICAgICAgICAgc3ViYmFuZHMucHVzaChzdWJiYW5kKTsKICAgICAgICAgIHJlc29sdXRpb25TdWJiYW5kcy5wdXNoKHN1YmJhbmQpOwoKICAgICAgICAgIHJlc29sdXRpb24uc3ViYmFuZHMgPSByZXNvbHV0aW9uU3ViYmFuZHM7CiAgICAgICAgfQogICAgICB9CiAgICAgIGNvbXBvbmVudC5yZXNvbHV0aW9ucyA9IHJlc29sdXRpb25zOwogICAgICBjb21wb25lbnQuc3ViYmFuZHMgPSBzdWJiYW5kczsKICAgIH0KICAgIC8vIEdlbmVyYXRlIHRoZSBwYWNrZXRzIHNlcXVlbmNlCiAgICB2YXIgcHJvZ3Jlc3Npb25PcmRlciA9IHRpbGUuY29kaW5nU3R5bGVEZWZhdWx0UGFyYW1ldGVycy5wcm9ncmVzc2lvbk9yZGVyOwogICAgc3dpdGNoIChwcm9ncmVzc2lvbk9yZGVyKSB7CiAgICAgIGNhc2UgMDoKICAgICAgICB0aWxlLnBhY2tldHNJdGVyYXRvciA9CiAgICAgICAgICBuZXcgTGF5ZXJSZXNvbHV0aW9uQ29tcG9uZW50UG9zaXRpb25JdGVyYXRvcihjb250ZXh0KTsKICAgICAgICBicmVhazsKICAgICAgY2FzZSAxOgogICAgICAgIHRpbGUucGFja2V0c0l0ZXJhdG9yID0KICAgICAgICAgIG5ldyBSZXNvbHV0aW9uTGF5ZXJDb21wb25lbnRQb3NpdGlvbkl0ZXJhdG9yKGNvbnRleHQpOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlIDI6CiAgICAgICAgdGlsZS5wYWNrZXRzSXRlcmF0b3IgPQogICAgICAgICAgbmV3IFJlc29sdXRpb25Qb3NpdGlvbkNvbXBvbmVudExheWVySXRlcmF0b3IoY29udGV4dCk7CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgMzoKICAgICAgICB0aWxlLnBhY2tldHNJdGVyYXRvciA9CiAgICAgICAgICBuZXcgUG9zaXRpb25Db21wb25lbnRSZXNvbHV0aW9uTGF5ZXJJdGVyYXRvcihjb250ZXh0KTsKICAgICAgICBicmVhazsKICAgICAgY2FzZSA0OgogICAgICAgIHRpbGUucGFja2V0c0l0ZXJhdG9yID0KICAgICAgICAgIG5ldyBDb21wb25lbnRQb3NpdGlvblJlc29sdXRpb25MYXllckl0ZXJhdG9yKGNvbnRleHQpOwogICAgICAgIGJyZWFrOwogICAgICBkZWZhdWx0OgogICAgICAgIHRocm93IG5ldyBFcnJvcignSlBYIEVycm9yOiBVbnN1cHBvcnRlZCBwcm9ncmVzc2lvbiBvcmRlciAnICsKICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3Jlc3Npb25PcmRlcik7CiAgICB9CiAgfQogIGZ1bmN0aW9uIHBhcnNlVGlsZVBhY2tldHMoY29udGV4dCwgZGF0YSwgb2Zmc2V0LCBkYXRhTGVuZ3RoKSB7CiAgICB2YXIgcG9zaXRpb24gPSAwOwogICAgdmFyIGJ1ZmZlciwgYnVmZmVyU2l6ZSA9IDAsIHNraXBOZXh0Qml0ID0gZmFsc2U7CiAgICBmdW5jdGlvbiByZWFkQml0cyhjb3VudCkgewogICAgICB3aGlsZSAoYnVmZmVyU2l6ZSA8IGNvdW50KSB7CiAgICAgICAgdmFyIGIgPSBkYXRhW29mZnNldCArIHBvc2l0aW9uXTsKICAgICAgICBwb3NpdGlvbisrOwogICAgICAgIGlmIChza2lwTmV4dEJpdCkgewogICAgICAgICAgYnVmZmVyID0gKGJ1ZmZlciA8PCA3KSB8IGI7CiAgICAgICAgICBidWZmZXJTaXplICs9IDc7CiAgICAgICAgICBza2lwTmV4dEJpdCA9IGZhbHNlOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBidWZmZXIgPSAoYnVmZmVyIDw8IDgpIHwgYjsKICAgICAgICAgIGJ1ZmZlclNpemUgKz0gODsKICAgICAgICB9CiAgICAgICAgaWYgKGIgPT09IDB4RkYpIHsKICAgICAgICAgIHNraXBOZXh0Qml0ID0gdHJ1ZTsKICAgICAgICB9CiAgICAgIH0KICAgICAgYnVmZmVyU2l6ZSAtPSBjb3VudDsKICAgICAgcmV0dXJuIChidWZmZXIgPj4+IGJ1ZmZlclNpemUpICYgKCgxIDw8IGNvdW50KSAtIDEpOwogICAgfQogICAgZnVuY3Rpb24gc2tpcE1hcmtlcklmRXF1YWwodmFsdWUpIHsKICAgICAgaWYgKGRhdGFbb2Zmc2V0ICsgcG9zaXRpb24gLSAxXSA9PT0gMHhGRiAmJgogICAgICAgICAgZGF0YVtvZmZzZXQgKyBwb3NpdGlvbl0gPT09IHZhbHVlKSB7CiAgICAgICAgc2tpcEJ5dGVzKDEpOwogICAgICAgIHJldHVybiB0cnVlOwogICAgICB9IGVsc2UgaWYgKGRhdGFbb2Zmc2V0ICsgcG9zaXRpb25dID09PSAweEZGICYmCiAgICAgICAgICAgICAgICAgZGF0YVtvZmZzZXQgKyBwb3NpdGlvbiArIDFdID09PSB2YWx1ZSkgewogICAgICAgIHNraXBCeXRlcygyKTsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgfQogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICBmdW5jdGlvbiBza2lwQnl0ZXMoY291bnQpIHsKICAgICAgcG9zaXRpb24gKz0gY291bnQ7CiAgICB9CiAgICBmdW5jdGlvbiBhbGlnblRvQnl0ZSgpIHsKICAgICAgYnVmZmVyU2l6ZSA9IDA7CiAgICAgIGlmIChza2lwTmV4dEJpdCkgewogICAgICAgIHBvc2l0aW9uKys7CiAgICAgICAgc2tpcE5leHRCaXQgPSBmYWxzZTsKICAgICAgfQogICAgfQogICAgZnVuY3Rpb24gcmVhZENvZGluZ3Bhc3NlcygpIHsKICAgICAgaWYgKHJlYWRCaXRzKDEpID09PSAwKSB7CiAgICAgICAgcmV0dXJuIDE7CiAgICAgIH0KICAgICAgaWYgKHJlYWRCaXRzKDEpID09PSAwKSB7CiAgICAgICAgcmV0dXJuIDI7CiAgICAgIH0KICAgICAgdmFyIHZhbHVlID0gcmVhZEJpdHMoMik7CiAgICAgIGlmICh2YWx1ZSA8IDMpIHsKICAgICAgICByZXR1cm4gdmFsdWUgKyAzOwogICAgICB9CiAgICAgIHZhbHVlID0gcmVhZEJpdHMoNSk7CiAgICAgIGlmICh2YWx1ZSA8IDMxKSB7CiAgICAgICAgcmV0dXJuIHZhbHVlICsgNjsKICAgICAgfQogICAgICB2YWx1ZSA9IHJlYWRCaXRzKDcpOwogICAgICByZXR1cm4gdmFsdWUgKyAzNzsKICAgIH0KICAgIHZhciB0aWxlSW5kZXggPSBjb250ZXh0LmN1cnJlbnRUaWxlLmluZGV4OwogICAgdmFyIHRpbGUgPSBjb250ZXh0LnRpbGVzW3RpbGVJbmRleF07CiAgICB2YXIgc29wTWFya2VyVXNlZCA9IGNvbnRleHQuQ09ELnNvcE1hcmtlclVzZWQ7CiAgICB2YXIgZXBoTWFya2VyVXNlZCA9IGNvbnRleHQuQ09ELmVwaE1hcmtlclVzZWQ7CiAgICB2YXIgcGFja2V0c0l0ZXJhdG9yID0gdGlsZS5wYWNrZXRzSXRlcmF0b3I7CiAgICB3aGlsZSAocG9zaXRpb24gPCBkYXRhTGVuZ3RoKSB7CiAgICAgIGFsaWduVG9CeXRlKCk7CiAgICAgIGlmIChzb3BNYXJrZXJVc2VkICYmIHNraXBNYXJrZXJJZkVxdWFsKDB4OTEpKSB7CiAgICAgICAgLy8gU2tpcCBhbHNvIG1hcmtlciBzZWdtZW50IGxlbmd0aCBhbmQgcGFja2V0IHNlcXVlbmNlIElECiAgICAgICAgc2tpcEJ5dGVzKDQpOwogICAgICB9CiAgICAgIHZhciBwYWNrZXQgPSBwYWNrZXRzSXRlcmF0b3IubmV4dFBhY2tldCgpOwogICAgICBpZiAoIXJlYWRCaXRzKDEpKSB7CiAgICAgICAgY29udGludWU7CiAgICAgIH0KICAgICAgdmFyIGxheWVyTnVtYmVyID0gcGFja2V0LmxheWVyTnVtYmVyOwogICAgICB2YXIgcXVldWUgPSBbXSwgY29kZWJsb2NrOwogICAgICBmb3IgKHZhciBpID0gMCwgaWkgPSBwYWNrZXQuY29kZWJsb2Nrcy5sZW5ndGg7IGkgPCBpaTsgaSsrKSB7CiAgICAgICAgY29kZWJsb2NrID0gcGFja2V0LmNvZGVibG9ja3NbaV07CiAgICAgICAgdmFyIHByZWNpbmN0ID0gY29kZWJsb2NrLnByZWNpbmN0OwogICAgICAgIHZhciBjb2RlYmxvY2tDb2x1bW4gPSBjb2RlYmxvY2suY2J4IC0gcHJlY2luY3QuY2J4TWluOwogICAgICAgIHZhciBjb2RlYmxvY2tSb3cgPSBjb2RlYmxvY2suY2J5IC0gcHJlY2luY3QuY2J5TWluOwogICAgICAgIHZhciBjb2RlYmxvY2tJbmNsdWRlZCA9IGZhbHNlOwogICAgICAgIHZhciBmaXJzdFRpbWVJbmNsdXNpb24gPSBmYWxzZTsKICAgICAgICB2YXIgdmFsdWVSZWFkeTsKICAgICAgICBpZiAoY29kZWJsb2NrWydpbmNsdWRlZCddICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgIGNvZGVibG9ja0luY2x1ZGVkID0gISFyZWFkQml0cygxKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgLy8gcmVhZGluZyBpbmNsdXNpb24gdHJlZQogICAgICAgICAgcHJlY2luY3QgPSBjb2RlYmxvY2sucHJlY2luY3Q7CiAgICAgICAgICB2YXIgaW5jbHVzaW9uVHJlZSwgemVyb0JpdFBsYW5lc1RyZWU7CiAgICAgICAgICBpZiAocHJlY2luY3RbJ2luY2x1c2lvblRyZWUnXSAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgIGluY2x1c2lvblRyZWUgPSBwcmVjaW5jdC5pbmNsdXNpb25UcmVlOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gYnVpbGRpbmcgaW5jbHVzaW9uIGFuZCB6ZXJvIGJpdC1wbGFuZXMgdHJlZXMKICAgICAgICAgICAgdmFyIHdpZHRoID0gcHJlY2luY3QuY2J4TWF4IC0gcHJlY2luY3QuY2J4TWluICsgMTsKICAgICAgICAgICAgdmFyIGhlaWdodCA9IHByZWNpbmN0LmNieU1heCAtIHByZWNpbmN0LmNieU1pbiArIDE7CiAgICAgICAgICAgIGluY2x1c2lvblRyZWUgPSBuZXcgSW5jbHVzaW9uVHJlZSh3aWR0aCwgaGVpZ2h0LCBsYXllck51bWJlcik7CiAgICAgICAgICAgIHplcm9CaXRQbGFuZXNUcmVlID0gbmV3IFRhZ1RyZWUod2lkdGgsIGhlaWdodCk7CiAgICAgICAgICAgIHByZWNpbmN0LmluY2x1c2lvblRyZWUgPSBpbmNsdXNpb25UcmVlOwogICAgICAgICAgICBwcmVjaW5jdC56ZXJvQml0UGxhbmVzVHJlZSA9IHplcm9CaXRQbGFuZXNUcmVlOwogICAgICAgICAgfQoKICAgICAgICAgIGlmIChpbmNsdXNpb25UcmVlLnJlc2V0KGNvZGVibG9ja0NvbHVtbiwgY29kZWJsb2NrUm93LCBsYXllck51bWJlcikpIHsKICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgICBpZiAocmVhZEJpdHMoMSkpIHsKICAgICAgICAgICAgICAgIHZhbHVlUmVhZHkgPSAhaW5jbHVzaW9uVHJlZS5uZXh0TGV2ZWwoKTsKICAgICAgICAgICAgICAgIGlmICh2YWx1ZVJlYWR5KSB7CiAgICAgICAgICAgICAgICAgIGNvZGVibG9jay5pbmNsdWRlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgIGNvZGVibG9ja0luY2x1ZGVkID0gZmlyc3RUaW1lSW5jbHVzaW9uID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGluY2x1c2lvblRyZWUuaW5jcmVtZW50VmFsdWUobGF5ZXJOdW1iZXIpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICghY29kZWJsb2NrSW5jbHVkZWQpIHsKICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgICAgICBpZiAoZmlyc3RUaW1lSW5jbHVzaW9uKSB7CiAgICAgICAgICB6ZXJvQml0UGxhbmVzVHJlZSA9IHByZWNpbmN0Lnplcm9CaXRQbGFuZXNUcmVlOwogICAgICAgICAgemVyb0JpdFBsYW5lc1RyZWUucmVzZXQoY29kZWJsb2NrQ29sdW1uLCBjb2RlYmxvY2tSb3cpOwogICAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgaWYgKHJlYWRCaXRzKDEpKSB7CiAgICAgICAgICAgICAgdmFsdWVSZWFkeSA9ICF6ZXJvQml0UGxhbmVzVHJlZS5uZXh0TGV2ZWwoKTsKICAgICAgICAgICAgICBpZiAodmFsdWVSZWFkeSkgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIHplcm9CaXRQbGFuZXNUcmVlLmluY3JlbWVudFZhbHVlKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGNvZGVibG9jay56ZXJvQml0UGxhbmVzID0gemVyb0JpdFBsYW5lc1RyZWUudmFsdWU7CiAgICAgICAgfQogICAgICAgIHZhciBjb2RpbmdwYXNzZXMgPSByZWFkQ29kaW5ncGFzc2VzKCk7CiAgICAgICAgd2hpbGUgKHJlYWRCaXRzKDEpKSB7CiAgICAgICAgICBjb2RlYmxvY2suTGJsb2NrKys7CiAgICAgICAgfQogICAgICAgIHZhciBjb2RpbmdwYXNzZXNMb2cyID0gbG9nMihjb2RpbmdwYXNzZXMpOwogICAgICAgIC8vIHJvdW5kaW5nIGRvd24gbG9nMgogICAgICAgIHZhciBiaXRzID0gKChjb2RpbmdwYXNzZXMgPCAoMSA8PCBjb2RpbmdwYXNzZXNMb2cyKSkgPwogICAgICAgICAgY29kaW5ncGFzc2VzTG9nMiAtIDEgOiBjb2RpbmdwYXNzZXNMb2cyKSArIGNvZGVibG9jay5MYmxvY2s7CiAgICAgICAgdmFyIGNvZGVkRGF0YUxlbmd0aCA9IHJlYWRCaXRzKGJpdHMpOwogICAgICAgIHF1ZXVlLnB1c2goewogICAgICAgICAgY29kZWJsb2NrOiBjb2RlYmxvY2ssCiAgICAgICAgICBjb2RpbmdwYXNzZXM6IGNvZGluZ3Bhc3NlcywKICAgICAgICAgIGRhdGFMZW5ndGg6IGNvZGVkRGF0YUxlbmd0aAogICAgICAgIH0pOwogICAgICB9CiAgICAgIGFsaWduVG9CeXRlKCk7CiAgICAgIGlmIChlcGhNYXJrZXJVc2VkKSB7CiAgICAgICAgc2tpcE1hcmtlcklmRXF1YWwoMHg5Mik7CiAgICAgIH0KICAgICAgd2hpbGUgKHF1ZXVlLmxlbmd0aCA+IDApIHsKICAgICAgICB2YXIgcGFja2V0SXRlbSA9IHF1ZXVlLnNoaWZ0KCk7CiAgICAgICAgY29kZWJsb2NrID0gcGFja2V0SXRlbS5jb2RlYmxvY2s7CiAgICAgICAgaWYgKGNvZGVibG9ja1snZGF0YSddID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgIGNvZGVibG9jay5kYXRhID0gW107CiAgICAgICAgfQogICAgICAgIGNvZGVibG9jay5kYXRhLnB1c2goewogICAgICAgICAgZGF0YTogZGF0YSwKICAgICAgICAgIHN0YXJ0OiBvZmZzZXQgKyBwb3NpdGlvbiwKICAgICAgICAgIGVuZDogb2Zmc2V0ICsgcG9zaXRpb24gKyBwYWNrZXRJdGVtLmRhdGFMZW5ndGgsCiAgICAgICAgICBjb2RpbmdwYXNzZXM6IHBhY2tldEl0ZW0uY29kaW5ncGFzc2VzCiAgICAgICAgfSk7CiAgICAgICAgcG9zaXRpb24gKz0gcGFja2V0SXRlbS5kYXRhTGVuZ3RoOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gcG9zaXRpb247CiAgfQogIGZ1bmN0aW9uIGNvcHlDb2VmZmljaWVudHMoY29lZmZpY2llbnRzLCBsZXZlbFdpZHRoLCBsZXZlbEhlaWdodCwgc3ViYmFuZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbHRhLCBtYiwgcmV2ZXJzaWJsZSwgc2VnbWVudGF0aW9uU3ltYm9sVXNlZCkgewogICAgdmFyIHgwID0gc3ViYmFuZC50YngwOwogICAgdmFyIHkwID0gc3ViYmFuZC50YnkwOwogICAgdmFyIHdpZHRoID0gc3ViYmFuZC50YngxIC0gc3ViYmFuZC50YngwOwogICAgdmFyIGNvZGVibG9ja3MgPSBzdWJiYW5kLmNvZGVibG9ja3M7CiAgICB2YXIgcmlnaHQgPSBzdWJiYW5kLnR5cGUuY2hhckF0KDApID09PSAnSCcgPyAxIDogMDsKICAgIHZhciBib3R0b20gPSBzdWJiYW5kLnR5cGUuY2hhckF0KDEpID09PSAnSCcgPyBsZXZlbFdpZHRoIDogMDsKCiAgICBmb3IgKHZhciBpID0gMCwgaWkgPSBjb2RlYmxvY2tzLmxlbmd0aDsgaSA8IGlpOyArK2kpIHsKICAgICAgdmFyIGNvZGVibG9jayA9IGNvZGVibG9ja3NbaV07CiAgICAgIHZhciBibG9ja1dpZHRoID0gY29kZWJsb2NrLnRieDFfIC0gY29kZWJsb2NrLnRieDBfOwogICAgICB2YXIgYmxvY2tIZWlnaHQgPSBjb2RlYmxvY2sudGJ5MV8gLSBjb2RlYmxvY2sudGJ5MF87CiAgICAgIGlmIChibG9ja1dpZHRoID09PSAwIHx8IGJsb2NrSGVpZ2h0ID09PSAwKSB7CiAgICAgICAgY29udGludWU7CiAgICAgIH0KICAgICAgaWYgKGNvZGVibG9ja1snZGF0YSddID09PSB1bmRlZmluZWQpIHsKICAgICAgICBjb250aW51ZTsKICAgICAgfQoKICAgICAgdmFyIGJpdE1vZGVsLCBjdXJyZW50Q29kaW5ncGFzc1R5cGU7CiAgICAgIGJpdE1vZGVsID0gbmV3IEJpdE1vZGVsKGJsb2NrV2lkdGgsIGJsb2NrSGVpZ2h0LCBjb2RlYmxvY2suc3ViYmFuZFR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVibG9jay56ZXJvQml0UGxhbmVzLCBtYik7CiAgICAgIGN1cnJlbnRDb2RpbmdwYXNzVHlwZSA9IDI7IC8vIGZpcnN0IGJpdCBwbGFuZSBzdGFydHMgZnJvbSBjbGVhbnVwCgogICAgICAvLyBjb2xsZWN0IGRhdGEKICAgICAgdmFyIGRhdGEgPSBjb2RlYmxvY2suZGF0YSwgdG90YWxMZW5ndGggPSAwLCBjb2RpbmdwYXNzZXMgPSAwOwogICAgICB2YXIgaiwgamosIGRhdGFJdGVtOwogICAgICBmb3IgKGogPSAwLCBqaiA9IGRhdGEubGVuZ3RoOyBqIDwgamo7IGorKykgewogICAgICAgIGRhdGFJdGVtID0gZGF0YVtqXTsKICAgICAgICB0b3RhbExlbmd0aCArPSBkYXRhSXRlbS5lbmQgLSBkYXRhSXRlbS5zdGFydDsKICAgICAgICBjb2RpbmdwYXNzZXMgKz0gZGF0YUl0ZW0uY29kaW5ncGFzc2VzOwogICAgICB9CiAgICAgIHZhciBlbmNvZGVkRGF0YSA9IG5ldyBVaW50OEFycmF5KHRvdGFsTGVuZ3RoKTsKICAgICAgdmFyIHBvc2l0aW9uID0gMDsKICAgICAgZm9yIChqID0gMCwgamogPSBkYXRhLmxlbmd0aDsgaiA8IGpqOyBqKyspIHsKICAgICAgICBkYXRhSXRlbSA9IGRhdGFbal07CiAgICAgICAgdmFyIGNodW5rID0gZGF0YUl0ZW0uZGF0YS5zdWJhcnJheShkYXRhSXRlbS5zdGFydCwgZGF0YUl0ZW0uZW5kKTsKICAgICAgICBlbmNvZGVkRGF0YS5zZXQoY2h1bmssIHBvc2l0aW9uKTsKICAgICAgICBwb3NpdGlvbiArPSBjaHVuay5sZW5ndGg7CiAgICAgIH0KICAgICAgLy8gZGVjb2RpbmcgdGhlIGl0ZW0KICAgICAgdmFyIGRlY29kZXIgPSBuZXcgQXJpdGhtZXRpY0RlY29kZXIoZW5jb2RlZERhdGEsIDAsIHRvdGFsTGVuZ3RoKTsKICAgICAgYml0TW9kZWwuc2V0RGVjb2RlcihkZWNvZGVyKTsKCiAgICAgIGZvciAoaiA9IDA7IGogPCBjb2RpbmdwYXNzZXM7IGorKykgewogICAgICAgIHN3aXRjaCAoY3VycmVudENvZGluZ3Bhc3NUeXBlKSB7CiAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgIGJpdE1vZGVsLnJ1blNpZ25pZmljYW5jZVByb3BvZ2F0aW9uUGFzcygpOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgYml0TW9kZWwucnVuTWFnbml0dWRlUmVmaW5lbWVudFBhc3MoKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgIGJpdE1vZGVsLnJ1bkNsZWFudXBQYXNzKCk7CiAgICAgICAgICAgIGlmIChzZWdtZW50YXRpb25TeW1ib2xVc2VkKSB7CiAgICAgICAgICAgICAgYml0TW9kZWwuY2hlY2tTZWdtZW50YXRpb25TeW1ib2woKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgY3VycmVudENvZGluZ3Bhc3NUeXBlID0gKGN1cnJlbnRDb2RpbmdwYXNzVHlwZSArIDEpICUgMzsKICAgICAgfQoKICAgICAgdmFyIG9mZnNldCA9IChjb2RlYmxvY2sudGJ4MF8gLSB4MCkgKyAoY29kZWJsb2NrLnRieTBfIC0geTApICogd2lkdGg7CiAgICAgIHZhciBzaWduID0gYml0TW9kZWwuY29lZmZpY2VudHNTaWduOwogICAgICB2YXIgbWFnbml0dWRlID0gYml0TW9kZWwuY29lZmZpY2VudHNNYWduaXR1ZGU7CiAgICAgIHZhciBiaXRzRGVjb2RlZCA9IGJpdE1vZGVsLmJpdHNEZWNvZGVkOwogICAgICB2YXIgbWFnbml0dWRlQ29ycmVjdGlvbiA9IHJldmVyc2libGUgPyAwIDogMC41OwogICAgICB2YXIgaywgbiwgbmI7CiAgICAgIHBvc2l0aW9uID0gMDsKICAgICAgLy8gRG8gdGhlIGludGVybGVhdmluZyBvZiBTZWN0aW9uIEYuMy4zIGhlcmUsIHNvIHdlIGRvIG5vdCBuZWVkCiAgICAgIC8vIHRvIGNvcHkgbGF0ZXIuIExMIGxldmVsIGlzIG5vdCBpbnRlcmxlYXZlZCwganVzdCBjb3BpZWQuCiAgICAgIHZhciBpbnRlcmxlYXZlID0gKHN1YmJhbmQudHlwZSAhPT0gJ0xMJyk7CiAgICAgIGZvciAoaiA9IDA7IGogPCBibG9ja0hlaWdodDsgaisrKSB7CiAgICAgICAgdmFyIHJvdyA9IChvZmZzZXQgLyB3aWR0aCkgfCAwOyAvLyByb3cgaW4gdGhlIG5vbi1pbnRlcmxlYXZlZCBzdWJiYW5kCiAgICAgICAgdmFyIGxldmVsT2Zmc2V0ID0gMiAqIHJvdyAqIChsZXZlbFdpZHRoIC0gd2lkdGgpICsgcmlnaHQgKyBib3R0b207CiAgICAgICAgZm9yIChrID0gMDsgayA8IGJsb2NrV2lkdGg7IGsrKykgewogICAgICAgICAgbiA9IG1hZ25pdHVkZVtwb3NpdGlvbl07CiAgICAgICAgICBpZiAobiAhPT0gMCkgewogICAgICAgICAgICBuID0gKG4gKyBtYWduaXR1ZGVDb3JyZWN0aW9uKSAqIGRlbHRhOwogICAgICAgICAgICBpZiAoc2lnbltwb3NpdGlvbl0gIT09IDApIHsKICAgICAgICAgICAgICBuID0gLW47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbmIgPSBiaXRzRGVjb2RlZFtwb3NpdGlvbl07CiAgICAgICAgICAgIHZhciBwb3MgPSBpbnRlcmxlYXZlID8gKGxldmVsT2Zmc2V0ICsgKG9mZnNldCA8PCAxKSkgOiBvZmZzZXQ7CiAgICAgICAgICAgIGlmIChyZXZlcnNpYmxlICYmIChuYiA+PSBtYikpIHsKICAgICAgICAgICAgICBjb2VmZmljaWVudHNbcG9zXSA9IG47CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgY29lZmZpY2llbnRzW3Bvc10gPSBuICogKDEgPDwgKG1iIC0gbmIpKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgb2Zmc2V0Kys7CiAgICAgICAgICBwb3NpdGlvbisrOwogICAgICAgIH0KICAgICAgICBvZmZzZXQgKz0gd2lkdGggLSBibG9ja1dpZHRoOwogICAgICB9CiAgICB9CiAgfQogIGZ1bmN0aW9uIHRyYW5zZm9ybVRpbGUoY29udGV4dCwgdGlsZSwgYykgewogICAgdmFyIGNvbXBvbmVudCA9IHRpbGUuY29tcG9uZW50c1tjXTsKICAgIHZhciBjb2RpbmdTdHlsZVBhcmFtZXRlcnMgPSBjb21wb25lbnQuY29kaW5nU3R5bGVQYXJhbWV0ZXJzOwogICAgdmFyIHF1YW50aXphdGlvblBhcmFtZXRlcnMgPSBjb21wb25lbnQucXVhbnRpemF0aW9uUGFyYW1ldGVyczsKICAgIHZhciBkZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQgPQogICAgICBjb2RpbmdTdHlsZVBhcmFtZXRlcnMuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50OwogICAgdmFyIHNwcWNkcyA9IHF1YW50aXphdGlvblBhcmFtZXRlcnMuU1BxY2RzOwogICAgdmFyIHNjYWxhckV4cG91bmRlZCA9IHF1YW50aXphdGlvblBhcmFtZXRlcnMuc2NhbGFyRXhwb3VuZGVkOwogICAgdmFyIGd1YXJkQml0cyA9IHF1YW50aXphdGlvblBhcmFtZXRlcnMuZ3VhcmRCaXRzOwogICAgdmFyIHNlZ21lbnRhdGlvblN5bWJvbFVzZWQgPSBjb2RpbmdTdHlsZVBhcmFtZXRlcnMuc2VnbWVudGF0aW9uU3ltYm9sVXNlZDsKICAgIHZhciBwcmVjaXNpb24gPSBjb250ZXh0LmNvbXBvbmVudHNbY10ucHJlY2lzaW9uOwoKICAgIHZhciByZXZlcnNpYmxlID0gY29kaW5nU3R5bGVQYXJhbWV0ZXJzLnJldmVyc2libGVUcmFuc2Zvcm1hdGlvbjsKICAgIHZhciB0cmFuc2Zvcm0gPSAocmV2ZXJzaWJsZSA/IG5ldyBSZXZlcnNpYmxlVHJhbnNmb3JtKCkgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IElycmV2ZXJzaWJsZVRyYW5zZm9ybSgpKTsKCiAgICB2YXIgc3ViYmFuZENvZWZmaWNpZW50cyA9IFtdOwogICAgdmFyIGIgPSAwOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPD0gZGVjb21wb3NpdGlvbkxldmVsc0NvdW50OyBpKyspIHsKICAgICAgdmFyIHJlc29sdXRpb24gPSBjb21wb25lbnQucmVzb2x1dGlvbnNbaV07CgogICAgICB2YXIgd2lkdGggPSByZXNvbHV0aW9uLnRyeDEgLSByZXNvbHV0aW9uLnRyeDA7CiAgICAgIHZhciBoZWlnaHQgPSByZXNvbHV0aW9uLnRyeTEgLSByZXNvbHV0aW9uLnRyeTA7CiAgICAgIC8vIEFsbG9jYXRlIHNwYWNlIGZvciB0aGUgd2hvbGUgc3VibGV2ZWwuCiAgICAgIHZhciBjb2VmZmljaWVudHMgPSBuZXcgRmxvYXQzMkFycmF5KHdpZHRoICogaGVpZ2h0KTsKCiAgICAgIGZvciAodmFyIGogPSAwLCBqaiA9IHJlc29sdXRpb24uc3ViYmFuZHMubGVuZ3RoOyBqIDwgamo7IGorKykgewogICAgICAgIHZhciBtdSwgZXBzaWxvbjsKICAgICAgICBpZiAoIXNjYWxhckV4cG91bmRlZCkgewogICAgICAgICAgLy8gZm9ybXVsYSBFLTUKICAgICAgICAgIG11ID0gc3BxY2RzWzBdLm11OwogICAgICAgICAgZXBzaWxvbiA9IHNwcWNkc1swXS5lcHNpbG9uICsgKGkgPiAwID8gMSAtIGkgOiAwKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgbXUgPSBzcHFjZHNbYl0ubXU7CiAgICAgICAgICBlcHNpbG9uID0gc3BxY2RzW2JdLmVwc2lsb247CiAgICAgICAgICBiKys7CiAgICAgICAgfQoKICAgICAgICB2YXIgc3ViYmFuZCA9IHJlc29sdXRpb24uc3ViYmFuZHNbal07CiAgICAgICAgdmFyIGdhaW5Mb2cyID0gU3ViYmFuZHNHYWluTG9nMltzdWJiYW5kLnR5cGVdOwoKICAgICAgICAvLyBjYWx1bGF0ZSBxdWFudGl6YXRpb24gY29lZmZpY2llbnQgKFNlY3Rpb24gRS4xLjEuMSkKICAgICAgICB2YXIgZGVsdGEgPSAocmV2ZXJzaWJsZSA/IDEgOgogICAgICAgICAgTWF0aC5wb3coMiwgcHJlY2lzaW9uICsgZ2FpbkxvZzIgLSBlcHNpbG9uKSAqICgxICsgbXUgLyAyMDQ4KSk7CiAgICAgICAgdmFyIG1iID0gKGd1YXJkQml0cyArIGVwc2lsb24gLSAxKTsKCiAgICAgICAgLy8gSW4gdGhlIGZpcnN0IHJlc29sdXRpb24gbGV2ZWwsIGNvcHlDb2VmZmljaWVudHMgd2lsbCBmaWxsIHRoZQogICAgICAgIC8vIHdob2xlIGFycmF5IHdpdGggY29lZmZpY2llbnRzLiBJbiB0aGUgc3VjY2VkaW5nIHBhc3NlcywKICAgICAgICAvLyBjb3B5Q29lZmZpY2llbnRzIHdpbGwgY29uc2VjdXRpdmVseSBmaWxsIGluIHRoZSB2YWx1ZXMgdGhhdCBiZWxvbmcKICAgICAgICAvLyB0byB0aGUgaW50ZXJsZWF2ZWQgcG9zaXRpb25zIG9mIHRoZSBITCwgTEgsIGFuZCBISCBjb2VmZmljaWVudHMuCiAgICAgICAgLy8gVGhlIExMIGNvZWZmaWNpZW50cyB3aWxsIHRoZW4gYmUgaW50ZXJsZWF2ZWQgaW4gVHJhbnNmb3JtLml0ZXJhdGUoKS4KICAgICAgICBjb3B5Q29lZmZpY2llbnRzKGNvZWZmaWNpZW50cywgd2lkdGgsIGhlaWdodCwgc3ViYmFuZCwgZGVsdGEsIG1iLAogICAgICAgICAgICAgICAgICAgICAgICAgcmV2ZXJzaWJsZSwgc2VnbWVudGF0aW9uU3ltYm9sVXNlZCk7CiAgICAgIH0KICAgICAgc3ViYmFuZENvZWZmaWNpZW50cy5wdXNoKHsKICAgICAgICB3aWR0aDogd2lkdGgsCiAgICAgICAgaGVpZ2h0OiBoZWlnaHQsCiAgICAgICAgaXRlbXM6IGNvZWZmaWNpZW50cwogICAgICB9KTsKICAgIH0KCiAgICB2YXIgcmVzdWx0ID0gdHJhbnNmb3JtLmNhbGN1bGF0ZShzdWJiYW5kQ29lZmZpY2llbnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnRjeDAsIGNvbXBvbmVudC50Y3kwKTsKICAgIHJldHVybiB7CiAgICAgIGxlZnQ6IGNvbXBvbmVudC50Y3gwLAogICAgICB0b3A6IGNvbXBvbmVudC50Y3kwLAogICAgICB3aWR0aDogcmVzdWx0LndpZHRoLAogICAgICBoZWlnaHQ6IHJlc3VsdC5oZWlnaHQsCiAgICAgIGl0ZW1zOiByZXN1bHQuaXRlbXMKICAgIH07CiAgfQogIGZ1bmN0aW9uIHRyYW5zZm9ybUNvbXBvbmVudHMoY29udGV4dCkgewogICAgdmFyIHNpeiA9IGNvbnRleHQuU0laOwogICAgdmFyIGNvbXBvbmVudHMgPSBjb250ZXh0LmNvbXBvbmVudHM7CiAgICB2YXIgY29tcG9uZW50c0NvdW50ID0gc2l6LkNzaXo7CiAgICB2YXIgcmVzdWx0SW1hZ2VzID0gW107CiAgICBmb3IgKHZhciBpID0gMCwgaWkgPSBjb250ZXh0LnRpbGVzLmxlbmd0aDsgaSA8IGlpOyBpKyspIHsKICAgICAgdmFyIHRpbGUgPSBjb250ZXh0LnRpbGVzW2ldOwogICAgICB2YXIgdHJhbnNmb3JtZWRUaWxlcyA9IFtdOwogICAgICB2YXIgYzsKICAgICAgZm9yIChjID0gMDsgYyA8IGNvbXBvbmVudHNDb3VudDsgYysrKSB7CiAgICAgICAgdHJhbnNmb3JtZWRUaWxlc1tjXSA9IHRyYW5zZm9ybVRpbGUoY29udGV4dCwgdGlsZSwgYyk7CiAgICAgIH0KICAgICAgdmFyIHRpbGUwID0gdHJhbnNmb3JtZWRUaWxlc1swXTsKICAgICAgdmFyIG91dCA9IG5ldyBVaW50OEFycmF5KHRpbGUwLml0ZW1zLmxlbmd0aCAqIGNvbXBvbmVudHNDb3VudCk7CiAgICAgIHZhciByZXN1bHQgPSB7CiAgICAgICAgbGVmdDogdGlsZTAubGVmdCwKICAgICAgICB0b3A6IHRpbGUwLnRvcCwKICAgICAgICB3aWR0aDogdGlsZTAud2lkdGgsCiAgICAgICAgaGVpZ2h0OiB0aWxlMC5oZWlnaHQsCiAgICAgICAgaXRlbXM6IG91dAogICAgICB9OwoKICAgICAgLy8gU2VjdGlvbiBHLjIuMiBJbnZlcnNlIG11bHRpIGNvbXBvbmVudCB0cmFuc2Zvcm0KICAgICAgdmFyIHNoaWZ0LCBvZmZzZXQsIG1heCwgbWluLCBtYXhLOwogICAgICB2YXIgcG9zID0gMCwgaiwgamosIHkwLCB5MSwgeTIsIHIsIGcsIGIsIGssIHZhbDsKICAgICAgaWYgKHRpbGUuY29kaW5nU3R5bGVEZWZhdWx0UGFyYW1ldGVycy5tdWx0aXBsZUNvbXBvbmVudFRyYW5zZm9ybSkgewogICAgICAgIHZhciBmb3VyQ29tcG9uZW50cyA9IGNvbXBvbmVudHNDb3VudCA9PT0gNDsKICAgICAgICB2YXIgeTBpdGVtcyA9IHRyYW5zZm9ybWVkVGlsZXNbMF0uaXRlbXM7CiAgICAgICAgdmFyIHkxaXRlbXMgPSB0cmFuc2Zvcm1lZFRpbGVzWzFdLml0ZW1zOwogICAgICAgIHZhciB5Mml0ZW1zID0gdHJhbnNmb3JtZWRUaWxlc1syXS5pdGVtczsKICAgICAgICB2YXIgeTNpdGVtcyA9IGZvdXJDb21wb25lbnRzID8gdHJhbnNmb3JtZWRUaWxlc1szXS5pdGVtcyA6IG51bGw7CgogICAgICAgIC8vIEhBQ0s6IFRoZSBtdWx0aXBsZSBjb21wb25lbnQgdHJhbnNmb3JtIGZvcm11bGFzIGJlbG93IGFzc3VtZSB0aGF0CiAgICAgICAgLy8gYWxsIGNvbXBvbmVudHMgaGF2ZSB0aGUgc2FtZSBwcmVjaXNpb24uIFdpdGggdGhpcyBpbiBtaW5kLCB3ZQogICAgICAgIC8vIGNvbXB1dGUgc2hpZnQgYW5kIG9mZnNldCBvbmx5IG9uY2UuCiAgICAgICAgc2hpZnQgPSBjb21wb25lbnRzWzBdLnByZWNpc2lvbiAtIDg7CiAgICAgICAgb2Zmc2V0ID0gKDEyOCA8PCBzaGlmdCkgKyAwLjU7CiAgICAgICAgbWF4ID0gMjU1ICogKDEgPDwgc2hpZnQpOwogICAgICAgIG1heEsgPSBtYXggKiAwLjU7CiAgICAgICAgbWluID0gLW1heEs7CgogICAgICAgIHZhciBjb21wb25lbnQwID0gdGlsZS5jb21wb25lbnRzWzBdOwogICAgICAgIHZhciBhbHBoYTAxID0gY29tcG9uZW50c0NvdW50IC0gMzsKICAgICAgICBqaiA9IHkwaXRlbXMubGVuZ3RoOwogICAgICAgIGlmICghY29tcG9uZW50MC5jb2RpbmdTdHlsZVBhcmFtZXRlcnMucmV2ZXJzaWJsZVRyYW5zZm9ybWF0aW9uKSB7CiAgICAgICAgICAvLyBpbnZlcnNlIGlycmV2ZXJzaWJsZSBtdWx0aXBsZSBjb21wb25lbnQgdHJhbnNmb3JtCiAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgamo7IGorKywgcG9zICs9IGFscGhhMDEpIHsKICAgICAgICAgICAgeTAgPSB5MGl0ZW1zW2pdICsgb2Zmc2V0OwogICAgICAgICAgICB5MSA9IHkxaXRlbXNbal07CiAgICAgICAgICAgIHkyID0geTJpdGVtc1tqXTsKICAgICAgICAgICAgciA9IHkwICsgMS40MDIgKiB5MjsKICAgICAgICAgICAgZyA9IHkwIC0gMC4zNDQxMyAqIHkxIC0gMC43MTQxNCAqIHkyOwogICAgICAgICAgICBiID0geTAgKyAxLjc3MiAqIHkxOwogICAgICAgICAgICBvdXRbcG9zKytdID0gciA8PSAwID8gMCA6IHIgPj0gbWF4ID8gMjU1IDogciA+PiBzaGlmdDsKICAgICAgICAgICAgb3V0W3BvcysrXSA9IGcgPD0gMCA/IDAgOiBnID49IG1heCA/IDI1NSA6IGcgPj4gc2hpZnQ7CiAgICAgICAgICAgIG91dFtwb3MrK10gPSBiIDw9IDAgPyAwIDogYiA+PSBtYXggPyAyNTUgOiBiID4+IHNoaWZ0OwogICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAvLyBpbnZlcnNlIHJldmVyc2libGUgbXVsdGlwbGUgY29tcG9uZW50IHRyYW5zZm9ybQogICAgICAgICAgZm9yIChqID0gMDsgaiA8IGpqOyBqKyssIHBvcyArPSBhbHBoYTAxKSB7CiAgICAgICAgICAgIHkwID0geTBpdGVtc1tqXSArIG9mZnNldDsKICAgICAgICAgICAgeTEgPSB5MWl0ZW1zW2pdOwogICAgICAgICAgICB5MiA9IHkyaXRlbXNbal07CiAgICAgICAgICAgIGcgPSB5MCAtICgoeTIgKyB5MSkgPj4gMik7CiAgICAgICAgICAgIHIgPSBnICsgeTI7CiAgICAgICAgICAgIGIgPSBnICsgeTE7CiAgICAgICAgICAgIG91dFtwb3MrK10gPSByIDw9IDAgPyAwIDogciA+PSBtYXggPyAyNTUgOiByID4+IHNoaWZ0OwogICAgICAgICAgICBvdXRbcG9zKytdID0gZyA8PSAwID8gMCA6IGcgPj0gbWF4ID8gMjU1IDogZyA+PiBzaGlmdDsKICAgICAgICAgICAgb3V0W3BvcysrXSA9IGIgPD0gMCA/IDAgOiBiID49IG1heCA/IDI1NSA6IGIgPj4gc2hpZnQ7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmIChmb3VyQ29tcG9uZW50cykgewogICAgICAgICAgZm9yIChqID0gMCwgcG9zID0gMzsgaiA8IGpqOyBqKyssIHBvcyArPSA0KSB7CiAgICAgICAgICAgIGsgPSB5M2l0ZW1zW2pdOwogICAgICAgICAgICBvdXRbcG9zXSA9IGsgPD0gbWluID8gMCA6IGsgPj0gbWF4SyA/IDI1NSA6IChrICsgb2Zmc2V0KSA+PiBzaGlmdDsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0gZWxzZSB7IC8vIG5vIG11bHRpLWNvbXBvbmVudCB0cmFuc2Zvcm0KICAgICAgICBmb3IgKGMgPSAwOyBjIDwgY29tcG9uZW50c0NvdW50OyBjKyspIHsKICAgICAgICAgIHZhciBpdGVtcyA9IHRyYW5zZm9ybWVkVGlsZXNbY10uaXRlbXM7CiAgICAgICAgICBzaGlmdCA9IGNvbXBvbmVudHNbY10ucHJlY2lzaW9uIC0gODsKICAgICAgICAgIG9mZnNldCA9ICgxMjggPDwgc2hpZnQpICsgMC41OwogICAgICAgICAgbWF4ID0gKDEyNy41ICogKDEgPDwgc2hpZnQpKTsKICAgICAgICAgIG1pbiA9IC1tYXg7CiAgICAgICAgICBmb3IgKHBvcyA9IGMsIGogPSAwLCBqaiA9IGl0ZW1zLmxlbmd0aDsgaiA8IGpqOyBqKyspIHsKICAgICAgICAgICAgdmFsID0gaXRlbXNbal07CiAgICAgICAgICAgIG91dFtwb3NdID0gdmFsIDw9IG1pbiA/IDAgOgogICAgICAgICAgICAgICAgICAgICAgIHZhbCA+PSBtYXggPyAyNTUgOiAodmFsICsgb2Zmc2V0KSA+PiBzaGlmdDsKICAgICAgICAgICAgcG9zICs9IGNvbXBvbmVudHNDb3VudDsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgICAgcmVzdWx0SW1hZ2VzLnB1c2gocmVzdWx0KTsKICAgIH0KICAgIHJldHVybiByZXN1bHRJbWFnZXM7CiAgfQogIGZ1bmN0aW9uIGluaXRpYWxpemVUaWxlKGNvbnRleHQsIHRpbGVJbmRleCkgewogICAgdmFyIHNpeiA9IGNvbnRleHQuU0laOwogICAgdmFyIGNvbXBvbmVudHNDb3VudCA9IHNpei5Dc2l6OwogICAgdmFyIHRpbGUgPSBjb250ZXh0LnRpbGVzW3RpbGVJbmRleF07CiAgICBmb3IgKHZhciBjID0gMDsgYyA8IGNvbXBvbmVudHNDb3VudDsgYysrKSB7CiAgICAgIHZhciBjb21wb25lbnQgPSB0aWxlLmNvbXBvbmVudHNbY107CiAgICAgIHZhciBxY2RPclFjYyA9IChjb250ZXh0LmN1cnJlbnRUaWxlLlFDQ1tjXSAhPT0gdW5kZWZpbmVkID8KICAgICAgICBjb250ZXh0LmN1cnJlbnRUaWxlLlFDQ1tjXSA6IGNvbnRleHQuY3VycmVudFRpbGUuUUNEKTsKICAgICAgY29tcG9uZW50LnF1YW50aXphdGlvblBhcmFtZXRlcnMgPSBxY2RPclFjYzsKICAgICAgdmFyIGNvZE9yQ29jID0gKGNvbnRleHQuY3VycmVudFRpbGUuQ09DW2NdICE9PSB1bmRlZmluZWQgID8KICAgICAgICBjb250ZXh0LmN1cnJlbnRUaWxlLkNPQ1tjXSA6IGNvbnRleHQuY3VycmVudFRpbGUuQ09EKTsKICAgICAgY29tcG9uZW50LmNvZGluZ1N0eWxlUGFyYW1ldGVycyA9IGNvZE9yQ29jOwogICAgfQogICAgdGlsZS5jb2RpbmdTdHlsZURlZmF1bHRQYXJhbWV0ZXJzID0gY29udGV4dC5jdXJyZW50VGlsZS5DT0Q7CiAgfQoKICAvLyBTZWN0aW9uIEIuMTAuMiBUYWcgdHJlZXMKICB2YXIgVGFnVHJlZSA9IChmdW5jdGlvbiBUYWdUcmVlQ2xvc3VyZSgpIHsKICAgIGZ1bmN0aW9uIFRhZ1RyZWUod2lkdGgsIGhlaWdodCkgewogICAgICB2YXIgbGV2ZWxzTGVuZ3RoID0gbG9nMihNYXRoLm1heCh3aWR0aCwgaGVpZ2h0KSkgKyAxOwogICAgICB0aGlzLmxldmVscyA9IFtdOwogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxldmVsc0xlbmd0aDsgaSsrKSB7CiAgICAgICAgdmFyIGxldmVsID0gewogICAgICAgICAgd2lkdGg6IHdpZHRoLAogICAgICAgICAgaGVpZ2h0OiBoZWlnaHQsCiAgICAgICAgICBpdGVtczogW10KICAgICAgICB9OwogICAgICAgIHRoaXMubGV2ZWxzLnB1c2gobGV2ZWwpOwogICAgICAgIHdpZHRoID0gTWF0aC5jZWlsKHdpZHRoIC8gMik7CiAgICAgICAgaGVpZ2h0ID0gTWF0aC5jZWlsKGhlaWdodCAvIDIpOwogICAgICB9CiAgICB9CiAgICBUYWdUcmVlLnByb3RvdHlwZSA9IHsKICAgICAgcmVzZXQ6IGZ1bmN0aW9uIFRhZ1RyZWVfcmVzZXQoaSwgaikgewogICAgICAgIHZhciBjdXJyZW50TGV2ZWwgPSAwLCB2YWx1ZSA9IDAsIGxldmVsOwogICAgICAgIHdoaWxlIChjdXJyZW50TGV2ZWwgPCB0aGlzLmxldmVscy5sZW5ndGgpIHsKICAgICAgICAgIGxldmVsID0gdGhpcy5sZXZlbHNbY3VycmVudExldmVsXTsKICAgICAgICAgIHZhciBpbmRleCA9IGkgKyBqICogbGV2ZWwud2lkdGg7CiAgICAgICAgICBpZiAobGV2ZWwuaXRlbXNbaW5kZXhdICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgdmFsdWUgPSBsZXZlbC5pdGVtc1tpbmRleF07CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQogICAgICAgICAgbGV2ZWwuaW5kZXggPSBpbmRleDsKICAgICAgICAgIGkgPj49IDE7CiAgICAgICAgICBqID4+PSAxOwogICAgICAgICAgY3VycmVudExldmVsKys7CiAgICAgICAgfQogICAgICAgIGN1cnJlbnRMZXZlbC0tOwogICAgICAgIGxldmVsID0gdGhpcy5sZXZlbHNbY3VycmVudExldmVsXTsKICAgICAgICBsZXZlbC5pdGVtc1tsZXZlbC5pbmRleF0gPSB2YWx1ZTsKICAgICAgICB0aGlzLmN1cnJlbnRMZXZlbCA9IGN1cnJlbnRMZXZlbDsKICAgICAgICBkZWxldGUgdGhpcy52YWx1ZTsKICAgICAgfSwKICAgICAgaW5jcmVtZW50VmFsdWU6IGZ1bmN0aW9uIFRhZ1RyZWVfaW5jcmVtZW50VmFsdWUoKSB7CiAgICAgICAgdmFyIGxldmVsID0gdGhpcy5sZXZlbHNbdGhpcy5jdXJyZW50TGV2ZWxdOwogICAgICAgIGxldmVsLml0ZW1zW2xldmVsLmluZGV4XSsrOwogICAgICB9LAogICAgICBuZXh0TGV2ZWw6IGZ1bmN0aW9uIFRhZ1RyZWVfbmV4dExldmVsKCkgewogICAgICAgIHZhciBjdXJyZW50TGV2ZWwgPSB0aGlzLmN1cnJlbnRMZXZlbDsKICAgICAgICB2YXIgbGV2ZWwgPSB0aGlzLmxldmVsc1tjdXJyZW50TGV2ZWxdOwogICAgICAgIHZhciB2YWx1ZSA9IGxldmVsLml0ZW1zW2xldmVsLmluZGV4XTsKICAgICAgICBjdXJyZW50TGV2ZWwtLTsKICAgICAgICBpZiAoY3VycmVudExldmVsIDwgMCkgewogICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlOwogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgdGhpcy5jdXJyZW50TGV2ZWwgPSBjdXJyZW50TGV2ZWw7CiAgICAgICAgbGV2ZWwgPSB0aGlzLmxldmVsc1tjdXJyZW50TGV2ZWxdOwogICAgICAgIGxldmVsLml0ZW1zW2xldmVsLmluZGV4XSA9IHZhbHVlOwogICAgICAgIHJldHVybiB0cnVlOwogICAgICB9CiAgICB9OwogICAgcmV0dXJuIFRhZ1RyZWU7CiAgfSkoKTsKCiAgdmFyIEluY2x1c2lvblRyZWUgPSAoZnVuY3Rpb24gSW5jbHVzaW9uVHJlZUNsb3N1cmUoKSB7CiAgICBmdW5jdGlvbiBJbmNsdXNpb25UcmVlKHdpZHRoLCBoZWlnaHQsICBkZWZhdWx0VmFsdWUpIHsKICAgICAgdmFyIGxldmVsc0xlbmd0aCA9IGxvZzIoTWF0aC5tYXgod2lkdGgsIGhlaWdodCkpICsgMTsKICAgICAgdGhpcy5sZXZlbHMgPSBbXTsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZXZlbHNMZW5ndGg7IGkrKykgewogICAgICAgIHZhciBpdGVtcyA9IG5ldyBVaW50OEFycmF5KHdpZHRoICogaGVpZ2h0KTsKICAgICAgICBmb3IgKHZhciBqID0gMCwgamogPSBpdGVtcy5sZW5ndGg7IGogPCBqajsgaisrKSB7CiAgICAgICAgICBpdGVtc1tqXSA9IGRlZmF1bHRWYWx1ZTsKICAgICAgICB9CgogICAgICAgIHZhciBsZXZlbCA9IHsKICAgICAgICAgIHdpZHRoOiB3aWR0aCwKICAgICAgICAgIGhlaWdodDogaGVpZ2h0LAogICAgICAgICAgaXRlbXM6IGl0ZW1zCiAgICAgICAgfTsKICAgICAgICB0aGlzLmxldmVscy5wdXNoKGxldmVsKTsKCiAgICAgICAgd2lkdGggPSBNYXRoLmNlaWwod2lkdGggLyAyKTsKICAgICAgICBoZWlnaHQgPSBNYXRoLmNlaWwoaGVpZ2h0IC8gMik7CiAgICAgIH0KICAgIH0KICAgIEluY2x1c2lvblRyZWUucHJvdG90eXBlID0gewogICAgICByZXNldDogZnVuY3Rpb24gSW5jbHVzaW9uVHJlZV9yZXNldChpLCBqLCBzdG9wVmFsdWUpIHsKICAgICAgICB2YXIgY3VycmVudExldmVsID0gMDsKICAgICAgICB3aGlsZSAoY3VycmVudExldmVsIDwgdGhpcy5sZXZlbHMubGVuZ3RoKSB7CiAgICAgICAgICB2YXIgbGV2ZWwgPSB0aGlzLmxldmVsc1tjdXJyZW50TGV2ZWxdOwogICAgICAgICAgdmFyIGluZGV4ID0gaSArIGogKiBsZXZlbC53aWR0aDsKICAgICAgICAgIGxldmVsLmluZGV4ID0gaW5kZXg7CiAgICAgICAgICB2YXIgdmFsdWUgPSBsZXZlbC5pdGVtc1tpbmRleF07CgogICAgICAgICAgaWYgKHZhbHVlID09PSAweEZGKSB7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQoKICAgICAgICAgIGlmICh2YWx1ZSA+IHN0b3BWYWx1ZSkgewogICAgICAgICAgICB0aGlzLmN1cnJlbnRMZXZlbCA9IGN1cnJlbnRMZXZlbDsKICAgICAgICAgICAgLy8gYWxyZWFkeSBrbm93IGFib3V0IHRoaXMgb25lLCBwcm9wYWdhdGluZyB0aGUgdmFsdWUgdG8gdG9wIGxldmVscwogICAgICAgICAgICB0aGlzLnByb3BhZ2F0ZVZhbHVlcygpOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICB9CgogICAgICAgICAgaSA+Pj0gMTsKICAgICAgICAgIGogPj49IDE7CiAgICAgICAgICBjdXJyZW50TGV2ZWwrKzsKICAgICAgICB9CiAgICAgICAgdGhpcy5jdXJyZW50TGV2ZWwgPSBjdXJyZW50TGV2ZWwgLSAxOwogICAgICAgIHJldHVybiB0cnVlOwogICAgICB9LAogICAgICBpbmNyZW1lbnRWYWx1ZTogZnVuY3Rpb24gSW5jbHVzaW9uVHJlZV9pbmNyZW1lbnRWYWx1ZShzdG9wVmFsdWUpIHsKICAgICAgICB2YXIgbGV2ZWwgPSB0aGlzLmxldmVsc1t0aGlzLmN1cnJlbnRMZXZlbF07CiAgICAgICAgbGV2ZWwuaXRlbXNbbGV2ZWwuaW5kZXhdID0gc3RvcFZhbHVlICsgMTsKICAgICAgICB0aGlzLnByb3BhZ2F0ZVZhbHVlcygpOwogICAgICB9LAogICAgICBwcm9wYWdhdGVWYWx1ZXM6IGZ1bmN0aW9uIEluY2x1c2lvblRyZWVfcHJvcGFnYXRlVmFsdWVzKCkgewogICAgICAgIHZhciBsZXZlbEluZGV4ID0gdGhpcy5jdXJyZW50TGV2ZWw7CiAgICAgICAgdmFyIGxldmVsID0gdGhpcy5sZXZlbHNbbGV2ZWxJbmRleF07CiAgICAgICAgdmFyIGN1cnJlbnRWYWx1ZSA9IGxldmVsLml0ZW1zW2xldmVsLmluZGV4XTsKICAgICAgICB3aGlsZSAoLS1sZXZlbEluZGV4ID49IDApIHsKICAgICAgICAgIGxldmVsID0gdGhpcy5sZXZlbHNbbGV2ZWxJbmRleF07CiAgICAgICAgICBsZXZlbC5pdGVtc1tsZXZlbC5pbmRleF0gPSBjdXJyZW50VmFsdWU7CiAgICAgICAgfQogICAgICB9LAogICAgICBuZXh0TGV2ZWw6IGZ1bmN0aW9uIEluY2x1c2lvblRyZWVfbmV4dExldmVsKCkgewogICAgICAgIHZhciBjdXJyZW50TGV2ZWwgPSB0aGlzLmN1cnJlbnRMZXZlbDsKICAgICAgICB2YXIgbGV2ZWwgPSB0aGlzLmxldmVsc1tjdXJyZW50TGV2ZWxdOwogICAgICAgIHZhciB2YWx1ZSA9IGxldmVsLml0ZW1zW2xldmVsLmluZGV4XTsKICAgICAgICBsZXZlbC5pdGVtc1tsZXZlbC5pbmRleF0gPSAweEZGOwogICAgICAgIGN1cnJlbnRMZXZlbC0tOwogICAgICAgIGlmIChjdXJyZW50TGV2ZWwgPCAwKSB7CiAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICB0aGlzLmN1cnJlbnRMZXZlbCA9IGN1cnJlbnRMZXZlbDsKICAgICAgICBsZXZlbCA9IHRoaXMubGV2ZWxzW2N1cnJlbnRMZXZlbF07CiAgICAgICAgbGV2ZWwuaXRlbXNbbGV2ZWwuaW5kZXhdID0gdmFsdWU7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH0KICAgIH07CiAgICByZXR1cm4gSW5jbHVzaW9uVHJlZTsKICB9KSgpOwoKICAvLyBTZWN0aW9uIEQuIENvZWZmaWNpZW50IGJpdCBtb2RlbGluZwogIHZhciBCaXRNb2RlbCA9IChmdW5jdGlvbiBCaXRNb2RlbENsb3N1cmUoKSB7CiAgICB2YXIgVU5JRk9STV9DT05URVhUID0gMTc7CiAgICB2YXIgUlVOTEVOR1RIX0NPTlRFWFQgPSAxODsKICAgIC8vIFRhYmxlIEQtMQogICAgLy8gVGhlIGluZGV4IGlzIGJpbmFyeSBwcmVzZW50YXRpb246IDBkZGR2dmhoLCBkZGQgLSBzdW0gb2YgRGkgKDAuLjQpLAogICAgLy8gdnYgLSBzdW0gb2YgVmkgKDAuLjIpLCBhbmQgaGggLSBzdW0gb2YgSGkgKDAuLjIpCiAgICB2YXIgTExBbmRMSENvbnRleHRzTGFiZWwgPSBuZXcgVWludDhBcnJheShbCiAgICAgIDAsIDUsIDgsIDAsIDMsIDcsIDgsIDAsIDQsIDcsIDgsIDAsIDAsIDAsIDAsIDAsIDEsIDYsIDgsIDAsIDMsIDcsIDgsIDAsIDQsCiAgICAgIDcsIDgsIDAsIDAsIDAsIDAsIDAsIDIsIDYsIDgsIDAsIDMsIDcsIDgsIDAsIDQsIDcsIDgsIDAsIDAsIDAsIDAsIDAsIDIsIDYsCiAgICAgIDgsIDAsIDMsIDcsIDgsIDAsIDQsIDcsIDgsIDAsIDAsIDAsIDAsIDAsIDIsIDYsIDgsIDAsIDMsIDcsIDgsIDAsIDQsIDcsIDgKICAgIF0pOwogICAgdmFyIEhMQ29udGV4dExhYmVsID0gbmV3IFVpbnQ4QXJyYXkoWwogICAgICAwLCAzLCA0LCAwLCA1LCA3LCA3LCAwLCA4LCA4LCA4LCAwLCAwLCAwLCAwLCAwLCAxLCAzLCA0LCAwLCA2LCA3LCA3LCAwLCA4LAogICAgICA4LCA4LCAwLCAwLCAwLCAwLCAwLCAyLCAzLCA0LCAwLCA2LCA3LCA3LCAwLCA4LCA4LCA4LCAwLCAwLCAwLCAwLCAwLCAyLCAzLAogICAgICA0LCAwLCA2LCA3LCA3LCAwLCA4LCA4LCA4LCAwLCAwLCAwLCAwLCAwLCAyLCAzLCA0LCAwLCA2LCA3LCA3LCAwLCA4LCA4LCA4CiAgICBdKTsKICAgIHZhciBISENvbnRleHRMYWJlbCA9IG5ldyBVaW50OEFycmF5KFsKICAgICAgMCwgMSwgMiwgMCwgMSwgMiwgMiwgMCwgMiwgMiwgMiwgMCwgMCwgMCwgMCwgMCwgMywgNCwgNSwgMCwgNCwgNSwgNSwgMCwgNSwKICAgICAgNSwgNSwgMCwgMCwgMCwgMCwgMCwgNiwgNywgNywgMCwgNywgNywgNywgMCwgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgOCwgOCwKICAgICAgOCwgMCwgOCwgOCwgOCwgMCwgOCwgOCwgOCwgMCwgMCwgMCwgMCwgMCwgOCwgOCwgOCwgMCwgOCwgOCwgOCwgMCwgOCwgOCwgOAogICAgXSk7CgogICAgZnVuY3Rpb24gQml0TW9kZWwod2lkdGgsIGhlaWdodCwgc3ViYmFuZCwgemVyb0JpdFBsYW5lcywgbWIpIHsKICAgICAgdGhpcy53aWR0aCA9IHdpZHRoOwogICAgICB0aGlzLmhlaWdodCA9IGhlaWdodDsKCiAgICAgIHRoaXMuY29udGV4dExhYmVsVGFibGUgPSAoc3ViYmFuZCA9PT0gJ0hIJyA/IEhIQ29udGV4dExhYmVsIDoKICAgICAgICAoc3ViYmFuZCA9PT0gJ0hMJyA/IEhMQ29udGV4dExhYmVsIDogTExBbmRMSENvbnRleHRzTGFiZWwpKTsKCiAgICAgIHZhciBjb2VmZmljaWVudENvdW50ID0gd2lkdGggKiBoZWlnaHQ7CgogICAgICAvLyBjb2VmZmljaWVudHMgb3V0c2lkZSB0aGUgZW5jb2RpbmcgcmVnaW9uIHRyZWF0ZWQgYXMgaW5zaWduaWZpY2FudAogICAgICAvLyBhZGQgYm9yZGVyIHN0YXRlIGNlbGxzIGZvciBzaWduaWZpY2FuY2VTdGF0ZQogICAgICB0aGlzLm5laWdoYm9yc1NpZ25pZmljYW5jZSA9IG5ldyBVaW50OEFycmF5KGNvZWZmaWNpZW50Q291bnQpOwogICAgICB0aGlzLmNvZWZmaWNlbnRzU2lnbiA9IG5ldyBVaW50OEFycmF5KGNvZWZmaWNpZW50Q291bnQpOwogICAgICB0aGlzLmNvZWZmaWNlbnRzTWFnbml0dWRlID0gbWIgPiAxNCA/IG5ldyBVaW50MzJBcnJheShjb2VmZmljaWVudENvdW50KSA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYiA+IDYgPyBuZXcgVWludDE2QXJyYXkoY29lZmZpY2llbnRDb3VudCkgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFVpbnQ4QXJyYXkoY29lZmZpY2llbnRDb3VudCk7CiAgICAgIHRoaXMucHJvY2Vzc2luZ0ZsYWdzID0gbmV3IFVpbnQ4QXJyYXkoY29lZmZpY2llbnRDb3VudCk7CgogICAgICB2YXIgYml0c0RlY29kZWQgPSBuZXcgVWludDhBcnJheShjb2VmZmljaWVudENvdW50KTsKICAgICAgaWYgKHplcm9CaXRQbGFuZXMgIT09IDApIHsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvZWZmaWNpZW50Q291bnQ7IGkrKykgewogICAgICAgICAgYml0c0RlY29kZWRbaV0gPSB6ZXJvQml0UGxhbmVzOwogICAgICAgIH0KICAgICAgfQogICAgICB0aGlzLmJpdHNEZWNvZGVkID0gYml0c0RlY29kZWQ7CgogICAgICB0aGlzLnJlc2V0KCk7CiAgICB9CgogICAgQml0TW9kZWwucHJvdG90eXBlID0gewogICAgICBzZXREZWNvZGVyOiBmdW5jdGlvbiBCaXRNb2RlbF9zZXREZWNvZGVyKGRlY29kZXIpIHsKICAgICAgICB0aGlzLmRlY29kZXIgPSBkZWNvZGVyOwogICAgICB9LAogICAgICByZXNldDogZnVuY3Rpb24gQml0TW9kZWxfcmVzZXQoKSB7CiAgICAgICAgLy8gV2UgaGF2ZSAxNyBjb250ZXh0cyB0aGF0IGFyZSBhY2Nlc3NlZCB2aWEgY29udGV4dCBsYWJlbHMsCiAgICAgICAgLy8gcGx1cyB0aGUgdW5pZm9ybSBhbmQgcnVubGVuZ3RoIGNvbnRleHQuCiAgICAgICAgdGhpcy5jb250ZXh0cyA9IG5ldyBJbnQ4QXJyYXkoMTkpOwoKICAgICAgICAvLyBDb250ZXh0cyBhcmUgcGFja2VkIGludG8gMSBieXRlOgogICAgICAgIC8vIGhpZ2hlc3QgNyBiaXRzIGNhcnJ5IHRoZSBpbmRleCwgbG93ZXN0IGJpdCBjYXJyaWVzIG1wcwogICAgICAgIHRoaXMuY29udGV4dHNbMF0gPSAoNCA8PCAxKSB8IDA7CiAgICAgICAgdGhpcy5jb250ZXh0c1tVTklGT1JNX0NPTlRFWFRdID0gKDQ2IDw8IDEpIHwgMDsKICAgICAgICB0aGlzLmNvbnRleHRzW1JVTkxFTkdUSF9DT05URVhUXSA9ICgzIDw8IDEpIHwgMDsKICAgICAgfSwKICAgICAgc2V0TmVpZ2hib3JzU2lnbmlmaWNhbmNlOgogICAgICAgIGZ1bmN0aW9uIEJpdE1vZGVsX3NldE5laWdoYm9yc1NpZ25pZmljYW5jZShyb3csIGNvbHVtbiwgaW5kZXgpIHsKICAgICAgICB2YXIgbmVpZ2hib3JzU2lnbmlmaWNhbmNlID0gdGhpcy5uZWlnaGJvcnNTaWduaWZpY2FuY2U7CiAgICAgICAgdmFyIHdpZHRoID0gdGhpcy53aWR0aCwgaGVpZ2h0ID0gdGhpcy5oZWlnaHQ7CiAgICAgICAgdmFyIGxlZnQgPSAoY29sdW1uID4gMCk7CiAgICAgICAgdmFyIHJpZ2h0ID0gKGNvbHVtbiArIDEgPCB3aWR0aCk7CiAgICAgICAgdmFyIGk7CgogICAgICAgIGlmIChyb3cgPiAwKSB7CiAgICAgICAgICBpID0gaW5kZXggLSB3aWR0aDsKICAgICAgICAgIGlmIChsZWZ0KSB7CiAgICAgICAgICAgIG5laWdoYm9yc1NpZ25pZmljYW5jZVtpIC0gMV0gKz0gMHgxMDsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChyaWdodCkgewogICAgICAgICAgICBuZWlnaGJvcnNTaWduaWZpY2FuY2VbaSArIDFdICs9IDB4MTA7CiAgICAgICAgICB9CiAgICAgICAgICBuZWlnaGJvcnNTaWduaWZpY2FuY2VbaV0gKz0gMHgwNDsKICAgICAgICB9CgogICAgICAgIGlmIChyb3cgKyAxIDwgaGVpZ2h0KSB7CiAgICAgICAgICBpID0gaW5kZXggKyB3aWR0aDsKICAgICAgICAgIGlmIChsZWZ0KSB7CiAgICAgICAgICAgIG5laWdoYm9yc1NpZ25pZmljYW5jZVtpIC0gMV0gKz0gMHgxMDsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChyaWdodCkgewogICAgICAgICAgICBuZWlnaGJvcnNTaWduaWZpY2FuY2VbaSArIDFdICs9IDB4MTA7CiAgICAgICAgICB9CiAgICAgICAgICBuZWlnaGJvcnNTaWduaWZpY2FuY2VbaV0gKz0gMHgwNDsKICAgICAgICB9CgogICAgICAgIGlmIChsZWZ0KSB7CiAgICAgICAgICBuZWlnaGJvcnNTaWduaWZpY2FuY2VbaW5kZXggLSAxXSArPSAweDAxOwogICAgICAgIH0KICAgICAgICBpZiAocmlnaHQpIHsKICAgICAgICAgIG5laWdoYm9yc1NpZ25pZmljYW5jZVtpbmRleCArIDFdICs9IDB4MDE7CiAgICAgICAgfQogICAgICAgIG5laWdoYm9yc1NpZ25pZmljYW5jZVtpbmRleF0gfD0gMHg4MDsKICAgICAgfSwKICAgICAgcnVuU2lnbmlmaWNhbmNlUHJvcG9nYXRpb25QYXNzOgogICAgICAgIGZ1bmN0aW9uIEJpdE1vZGVsX3J1blNpZ25pZmljYW5jZVByb3BvZ2F0aW9uUGFzcygpIHsKICAgICAgICB2YXIgZGVjb2RlciA9IHRoaXMuZGVjb2RlcjsKICAgICAgICB2YXIgd2lkdGggPSB0aGlzLndpZHRoLCBoZWlnaHQgPSB0aGlzLmhlaWdodDsKICAgICAgICB2YXIgY29lZmZpY2VudHNNYWduaXR1ZGUgPSB0aGlzLmNvZWZmaWNlbnRzTWFnbml0dWRlOwogICAgICAgIHZhciBjb2VmZmljZW50c1NpZ24gPSB0aGlzLmNvZWZmaWNlbnRzU2lnbjsKICAgICAgICB2YXIgbmVpZ2hib3JzU2lnbmlmaWNhbmNlID0gdGhpcy5uZWlnaGJvcnNTaWduaWZpY2FuY2U7CiAgICAgICAgdmFyIHByb2Nlc3NpbmdGbGFncyA9IHRoaXMucHJvY2Vzc2luZ0ZsYWdzOwogICAgICAgIHZhciBjb250ZXh0cyA9IHRoaXMuY29udGV4dHM7CiAgICAgICAgdmFyIGxhYmVscyA9IHRoaXMuY29udGV4dExhYmVsVGFibGU7CiAgICAgICAgdmFyIGJpdHNEZWNvZGVkID0gdGhpcy5iaXRzRGVjb2RlZDsKICAgICAgICB2YXIgcHJvY2Vzc2VkSW52ZXJzZU1hc2sgPSB+MTsKICAgICAgICB2YXIgcHJvY2Vzc2VkTWFzayA9IDE7CiAgICAgICAgdmFyIGZpcnN0TWFnbml0dWRlQml0TWFzayA9IDI7CgogICAgICAgIGZvciAodmFyIGkwID0gMDsgaTAgPCBoZWlnaHQ7IGkwICs9IDQpIHsKICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgd2lkdGg7IGorKykgewogICAgICAgICAgICB2YXIgaW5kZXggPSBpMCAqIHdpZHRoICsgajsKICAgICAgICAgICAgZm9yICh2YXIgaTEgPSAwOyBpMSA8IDQ7IGkxKyssIGluZGV4ICs9IHdpZHRoKSB7CiAgICAgICAgICAgICAgdmFyIGkgPSBpMCArIGkxOwogICAgICAgICAgICAgIGlmIChpID49IGhlaWdodCkgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIC8vIGNsZWFyIHByb2Nlc3NlZCBmbGFnIGZpcnN0CiAgICAgICAgICAgICAgcHJvY2Vzc2luZ0ZsYWdzW2luZGV4XSAmPSBwcm9jZXNzZWRJbnZlcnNlTWFzazsKCiAgICAgICAgICAgICAgaWYgKGNvZWZmaWNlbnRzTWFnbml0dWRlW2luZGV4XSB8fAogICAgICAgICAgICAgICAgICAhbmVpZ2hib3JzU2lnbmlmaWNhbmNlW2luZGV4XSkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICB2YXIgY29udGV4dExhYmVsID0gbGFiZWxzW25laWdoYm9yc1NpZ25pZmljYW5jZVtpbmRleF1dOwogICAgICAgICAgICAgIHZhciBkZWNpc2lvbiA9IGRlY29kZXIucmVhZEJpdChjb250ZXh0cywgY29udGV4dExhYmVsKTsKICAgICAgICAgICAgICBpZiAoZGVjaXNpb24pIHsKICAgICAgICAgICAgICAgIHZhciBzaWduID0gdGhpcy5kZWNvZGVTaWduQml0KGksIGosIGluZGV4KTsKICAgICAgICAgICAgICAgIGNvZWZmaWNlbnRzU2lnbltpbmRleF0gPSBzaWduOwogICAgICAgICAgICAgICAgY29lZmZpY2VudHNNYWduaXR1ZGVbaW5kZXhdID0gMTsKICAgICAgICAgICAgICAgIHRoaXMuc2V0TmVpZ2hib3JzU2lnbmlmaWNhbmNlKGksIGosIGluZGV4KTsKICAgICAgICAgICAgICAgIHByb2Nlc3NpbmdGbGFnc1tpbmRleF0gfD0gZmlyc3RNYWduaXR1ZGVCaXRNYXNrOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBiaXRzRGVjb2RlZFtpbmRleF0rKzsKICAgICAgICAgICAgICBwcm9jZXNzaW5nRmxhZ3NbaW5kZXhdIHw9IHByb2Nlc3NlZE1hc2s7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0sCiAgICAgIGRlY29kZVNpZ25CaXQ6IGZ1bmN0aW9uIEJpdE1vZGVsX2RlY29kZVNpZ25CaXQocm93LCBjb2x1bW4sIGluZGV4KSB7CiAgICAgICAgdmFyIHdpZHRoID0gdGhpcy53aWR0aCwgaGVpZ2h0ID0gdGhpcy5oZWlnaHQ7CiAgICAgICAgdmFyIGNvZWZmaWNlbnRzTWFnbml0dWRlID0gdGhpcy5jb2VmZmljZW50c01hZ25pdHVkZTsKICAgICAgICB2YXIgY29lZmZpY2VudHNTaWduID0gdGhpcy5jb2VmZmljZW50c1NpZ247CiAgICAgICAgdmFyIGNvbnRyaWJ1dGlvbiwgc2lnbjAsIHNpZ24xLCBzaWduaWZpY2FuY2UxOwogICAgICAgIHZhciBjb250ZXh0TGFiZWwsIGRlY29kZWQ7CgogICAgICAgIC8vIGNhbGN1bGF0ZSBob3Jpem9udGFsIGNvbnRyaWJ1dGlvbgogICAgICAgIHNpZ25pZmljYW5jZTEgPSAoY29sdW1uID4gMCAmJiBjb2VmZmljZW50c01hZ25pdHVkZVtpbmRleCAtIDFdICE9PSAwKTsKICAgICAgICBpZiAoY29sdW1uICsgMSA8IHdpZHRoICYmIGNvZWZmaWNlbnRzTWFnbml0dWRlW2luZGV4ICsgMV0gIT09IDApIHsKICAgICAgICAgIHNpZ24xID0gY29lZmZpY2VudHNTaWduW2luZGV4ICsgMV07CiAgICAgICAgICBpZiAoc2lnbmlmaWNhbmNlMSkgewogICAgICAgICAgICBzaWduMCA9IGNvZWZmaWNlbnRzU2lnbltpbmRleCAtIDFdOwogICAgICAgICAgICBjb250cmlidXRpb24gPSAxIC0gc2lnbjEgLSBzaWduMDsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGNvbnRyaWJ1dGlvbiA9IDEgLSBzaWduMSAtIHNpZ24xOwogICAgICAgICAgfQogICAgICAgIH0gZWxzZSBpZiAoc2lnbmlmaWNhbmNlMSkgewogICAgICAgICAgc2lnbjAgPSBjb2VmZmljZW50c1NpZ25baW5kZXggLSAxXTsKICAgICAgICAgIGNvbnRyaWJ1dGlvbiA9IDEgLSBzaWduMCAtIHNpZ24wOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBjb250cmlidXRpb24gPSAwOwogICAgICAgIH0KICAgICAgICB2YXIgaG9yaXpvbnRhbENvbnRyaWJ1dGlvbiA9IDMgKiBjb250cmlidXRpb247CgogICAgICAgIC8vIGNhbGN1bGF0ZSB2ZXJ0aWNhbCBjb250cmlidXRpb24gYW5kIGNvbWJpbmUgd2l0aCB0aGUgaG9yaXpvbnRhbAogICAgICAgIHNpZ25pZmljYW5jZTEgPSAocm93ID4gMCAmJiBjb2VmZmljZW50c01hZ25pdHVkZVtpbmRleCAtIHdpZHRoXSAhPT0gMCk7CiAgICAgICAgaWYgKHJvdyArIDEgPCBoZWlnaHQgJiYgY29lZmZpY2VudHNNYWduaXR1ZGVbaW5kZXggKyB3aWR0aF0gIT09IDApIHsKICAgICAgICAgIHNpZ24xID0gY29lZmZpY2VudHNTaWduW2luZGV4ICsgd2lkdGhdOwogICAgICAgICAgaWYgKHNpZ25pZmljYW5jZTEpIHsKICAgICAgICAgICAgc2lnbjAgPSBjb2VmZmljZW50c1NpZ25baW5kZXggLSB3aWR0aF07CiAgICAgICAgICAgIGNvbnRyaWJ1dGlvbiA9IDEgLSBzaWduMSAtIHNpZ24wICsgaG9yaXpvbnRhbENvbnRyaWJ1dGlvbjsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGNvbnRyaWJ1dGlvbiA9IDEgLSBzaWduMSAtIHNpZ24xICsgaG9yaXpvbnRhbENvbnRyaWJ1dGlvbjsKICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgaWYgKHNpZ25pZmljYW5jZTEpIHsKICAgICAgICAgIHNpZ24wID0gY29lZmZpY2VudHNTaWduW2luZGV4IC0gd2lkdGhdOwogICAgICAgICAgY29udHJpYnV0aW9uID0gMSAtIHNpZ24wIC0gc2lnbjAgKyBob3Jpem9udGFsQ29udHJpYnV0aW9uOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBjb250cmlidXRpb24gPSBob3Jpem9udGFsQ29udHJpYnV0aW9uOwogICAgICAgIH0KCiAgICAgICAgaWYgKGNvbnRyaWJ1dGlvbiA+PSAwKSB7CiAgICAgICAgICBjb250ZXh0TGFiZWwgPSA5ICsgY29udHJpYnV0aW9uOwogICAgICAgICAgZGVjb2RlZCA9IHRoaXMuZGVjb2Rlci5yZWFkQml0KHRoaXMuY29udGV4dHMsIGNvbnRleHRMYWJlbCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGNvbnRleHRMYWJlbCA9IDkgLSBjb250cmlidXRpb247CiAgICAgICAgICBkZWNvZGVkID0gdGhpcy5kZWNvZGVyLnJlYWRCaXQodGhpcy5jb250ZXh0cywgY29udGV4dExhYmVsKSBeIDE7CiAgICAgICAgfQogICAgICAgIHJldHVybiBkZWNvZGVkOwogICAgICB9LAogICAgICBydW5NYWduaXR1ZGVSZWZpbmVtZW50UGFzczoKICAgICAgICBmdW5jdGlvbiBCaXRNb2RlbF9ydW5NYWduaXR1ZGVSZWZpbmVtZW50UGFzcygpIHsKICAgICAgICB2YXIgZGVjb2RlciA9IHRoaXMuZGVjb2RlcjsKICAgICAgICB2YXIgd2lkdGggPSB0aGlzLndpZHRoLCBoZWlnaHQgPSB0aGlzLmhlaWdodDsKICAgICAgICB2YXIgY29lZmZpY2VudHNNYWduaXR1ZGUgPSB0aGlzLmNvZWZmaWNlbnRzTWFnbml0dWRlOwogICAgICAgIHZhciBuZWlnaGJvcnNTaWduaWZpY2FuY2UgPSB0aGlzLm5laWdoYm9yc1NpZ25pZmljYW5jZTsKICAgICAgICB2YXIgY29udGV4dHMgPSB0aGlzLmNvbnRleHRzOwogICAgICAgIHZhciBiaXRzRGVjb2RlZCA9IHRoaXMuYml0c0RlY29kZWQ7CiAgICAgICAgdmFyIHByb2Nlc3NpbmdGbGFncyA9IHRoaXMucHJvY2Vzc2luZ0ZsYWdzOwogICAgICAgIHZhciBwcm9jZXNzZWRNYXNrID0gMTsKICAgICAgICB2YXIgZmlyc3RNYWduaXR1ZGVCaXRNYXNrID0gMjsKICAgICAgICB2YXIgbGVuZ3RoID0gd2lkdGggKiBoZWlnaHQ7CiAgICAgICAgdmFyIHdpZHRoNCA9IHdpZHRoICogNDsKCiAgICAgICAgZm9yICh2YXIgaW5kZXgwID0gMCwgaW5kZXhOZXh0OyBpbmRleDAgPCBsZW5ndGg7IGluZGV4MCA9IGluZGV4TmV4dCkgewogICAgICAgICAgaW5kZXhOZXh0ID0gTWF0aC5taW4obGVuZ3RoLCBpbmRleDAgKyB3aWR0aDQpOwogICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB3aWR0aDsgaisrKSB7CiAgICAgICAgICAgIGZvciAodmFyIGluZGV4ID0gaW5kZXgwICsgajsgaW5kZXggPCBpbmRleE5leHQ7IGluZGV4ICs9IHdpZHRoKSB7CgogICAgICAgICAgICAgIC8vIHNpZ25pZmljYW50IGJ1dCBub3QgdGhvc2UgdGhhdCBoYXZlIGp1c3QgYmVjb21lCiAgICAgICAgICAgICAgaWYgKCFjb2VmZmljZW50c01hZ25pdHVkZVtpbmRleF0gfHwKICAgICAgICAgICAgICAgIChwcm9jZXNzaW5nRmxhZ3NbaW5kZXhdICYgcHJvY2Vzc2VkTWFzaykgIT09IDApIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgdmFyIGNvbnRleHRMYWJlbCA9IDE2OwogICAgICAgICAgICAgIGlmICgocHJvY2Vzc2luZ0ZsYWdzW2luZGV4XSAmIGZpcnN0TWFnbml0dWRlQml0TWFzaykgIT09IDApIHsKICAgICAgICAgICAgICAgIHByb2Nlc3NpbmdGbGFnc1tpbmRleF0gXj0gZmlyc3RNYWduaXR1ZGVCaXRNYXNrOwogICAgICAgICAgICAgICAgLy8gZmlyc3QgcmVmaW5lbWVudAogICAgICAgICAgICAgICB2YXIgc2lnbmlmaWNhbmNlID0gbmVpZ2hib3JzU2lnbmlmaWNhbmNlW2luZGV4XSAmIDEyNzsKICAgICAgICAgICAgICAgY29udGV4dExhYmVsID0gc2lnbmlmaWNhbmNlID09PSAwID8gMTUgOiAxNDsKICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgIHZhciBiaXQgPSBkZWNvZGVyLnJlYWRCaXQoY29udGV4dHMsIGNvbnRleHRMYWJlbCk7CiAgICAgICAgICAgICAgY29lZmZpY2VudHNNYWduaXR1ZGVbaW5kZXhdID0KICAgICAgICAgICAgICAgIChjb2VmZmljZW50c01hZ25pdHVkZVtpbmRleF0gPDwgMSkgfCBiaXQ7CiAgICAgICAgICAgICAgYml0c0RlY29kZWRbaW5kZXhdKys7CiAgICAgICAgICAgICAgcHJvY2Vzc2luZ0ZsYWdzW2luZGV4XSB8PSBwcm9jZXNzZWRNYXNrOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9LAogICAgICBydW5DbGVhbnVwUGFzczogZnVuY3Rpb24gQml0TW9kZWxfcnVuQ2xlYW51cFBhc3MoKSB7CiAgICAgICAgdmFyIGRlY29kZXIgPSB0aGlzLmRlY29kZXI7CiAgICAgICAgdmFyIHdpZHRoID0gdGhpcy53aWR0aCwgaGVpZ2h0ID0gdGhpcy5oZWlnaHQ7CiAgICAgICAgdmFyIG5laWdoYm9yc1NpZ25pZmljYW5jZSA9IHRoaXMubmVpZ2hib3JzU2lnbmlmaWNhbmNlOwogICAgICAgIHZhciBjb2VmZmljZW50c01hZ25pdHVkZSA9IHRoaXMuY29lZmZpY2VudHNNYWduaXR1ZGU7CiAgICAgICAgdmFyIGNvZWZmaWNlbnRzU2lnbiA9IHRoaXMuY29lZmZpY2VudHNTaWduOwogICAgICAgIHZhciBjb250ZXh0cyA9IHRoaXMuY29udGV4dHM7CiAgICAgICAgdmFyIGxhYmVscyA9IHRoaXMuY29udGV4dExhYmVsVGFibGU7CiAgICAgICAgdmFyIGJpdHNEZWNvZGVkID0gdGhpcy5iaXRzRGVjb2RlZDsKICAgICAgICB2YXIgcHJvY2Vzc2luZ0ZsYWdzID0gdGhpcy5wcm9jZXNzaW5nRmxhZ3M7CiAgICAgICAgdmFyIHByb2Nlc3NlZE1hc2sgPSAxOwogICAgICAgIHZhciBmaXJzdE1hZ25pdHVkZUJpdE1hc2sgPSAyOwogICAgICAgIHZhciBvbmVSb3dEb3duID0gd2lkdGg7CiAgICAgICAgdmFyIHR3b1Jvd3NEb3duID0gd2lkdGggKiAyOwogICAgICAgIHZhciB0aHJlZVJvd3NEb3duID0gd2lkdGggKiAzOwogICAgICAgIHZhciBpTmV4dDsKICAgICAgICBmb3IgKHZhciBpMCA9IDA7IGkwIDwgaGVpZ2h0OyBpMCA9IGlOZXh0KSB7CiAgICAgICAgICBpTmV4dCA9IE1hdGgubWluKGkwICsgNCwgaGVpZ2h0KTsKICAgICAgICAgIHZhciBpbmRleEJhc2UgPSBpMCAqIHdpZHRoOwogICAgICAgICAgdmFyIGNoZWNrQWxsRW1wdHkgPSBpMCArIDMgPCBoZWlnaHQ7CiAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHdpZHRoOyBqKyspIHsKICAgICAgICAgICAgdmFyIGluZGV4MCA9IGluZGV4QmFzZSArIGo7CiAgICAgICAgICAgIC8vIHVzaW5nIHRoZSBwcm9wZXJ0eTogbGFiZWxzW25laWdoYm9yc1NpZ25pZmljYW5jZVtpbmRleF1dID09PSAwCiAgICAgICAgICAgIC8vIHdoZW4gbmVpZ2hib3JzU2lnbmlmaWNhbmNlW2luZGV4XSA9PT0gMAogICAgICAgICAgICB2YXIgYWxsRW1wdHkgPSAoY2hlY2tBbGxFbXB0eSAmJgogICAgICAgICAgICAgIHByb2Nlc3NpbmdGbGFnc1tpbmRleDBdID09PSAwICYmCiAgICAgICAgICAgICAgcHJvY2Vzc2luZ0ZsYWdzW2luZGV4MCArIG9uZVJvd0Rvd25dID09PSAwICYmCiAgICAgICAgICAgICAgcHJvY2Vzc2luZ0ZsYWdzW2luZGV4MCArIHR3b1Jvd3NEb3duXSA9PT0gMCAmJgogICAgICAgICAgICAgIHByb2Nlc3NpbmdGbGFnc1tpbmRleDAgKyB0aHJlZVJvd3NEb3duXSA9PT0gMCAmJgogICAgICAgICAgICAgIG5laWdoYm9yc1NpZ25pZmljYW5jZVtpbmRleDBdID09PSAwICYmCiAgICAgICAgICAgICAgbmVpZ2hib3JzU2lnbmlmaWNhbmNlW2luZGV4MCArIG9uZVJvd0Rvd25dID09PSAwICYmCiAgICAgICAgICAgICAgbmVpZ2hib3JzU2lnbmlmaWNhbmNlW2luZGV4MCArIHR3b1Jvd3NEb3duXSA9PT0gMCAmJgogICAgICAgICAgICAgIG5laWdoYm9yc1NpZ25pZmljYW5jZVtpbmRleDAgKyB0aHJlZVJvd3NEb3duXSA9PT0gMCk7CiAgICAgICAgICAgIHZhciBpMSA9IDAsIGluZGV4ID0gaW5kZXgwOwogICAgICAgICAgICB2YXIgaSA9IGkwLCBzaWduOwogICAgICAgICAgICBpZiAoYWxsRW1wdHkpIHsKICAgICAgICAgICAgICB2YXIgaGFzU2lnbmlmaWNhbnRDb2VmZmljZW50ID0KICAgICAgICAgICAgICAgIGRlY29kZXIucmVhZEJpdChjb250ZXh0cywgUlVOTEVOR1RIX0NPTlRFWFQpOwogICAgICAgICAgICAgIGlmICghaGFzU2lnbmlmaWNhbnRDb2VmZmljZW50KSB7CiAgICAgICAgICAgICAgICBiaXRzRGVjb2RlZFtpbmRleDBdKys7CiAgICAgICAgICAgICAgICBiaXRzRGVjb2RlZFtpbmRleDAgKyBvbmVSb3dEb3duXSsrOwogICAgICAgICAgICAgICAgYml0c0RlY29kZWRbaW5kZXgwICsgdHdvUm93c0Rvd25dKys7CiAgICAgICAgICAgICAgICBiaXRzRGVjb2RlZFtpbmRleDAgKyB0aHJlZVJvd3NEb3duXSsrOwogICAgICAgICAgICAgICAgY29udGludWU7IC8vIG5leHQgY29sdW1uCiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGkxID0gKGRlY29kZXIucmVhZEJpdChjb250ZXh0cywgVU5JRk9STV9DT05URVhUKSA8PCAxKSB8CiAgICAgICAgICAgICAgICAgICAgZGVjb2Rlci5yZWFkQml0KGNvbnRleHRzLCBVTklGT1JNX0NPTlRFWFQpOwogICAgICAgICAgICAgIGlmIChpMSAhPT0gMCkgewogICAgICAgICAgICAgICAgaSA9IGkwICsgaTE7CiAgICAgICAgICAgICAgICBpbmRleCArPSBpMSAqIHdpZHRoOwogICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgc2lnbiA9IHRoaXMuZGVjb2RlU2lnbkJpdChpLCBqLCBpbmRleCk7CiAgICAgICAgICAgICAgY29lZmZpY2VudHNTaWduW2luZGV4XSA9IHNpZ247CiAgICAgICAgICAgICAgY29lZmZpY2VudHNNYWduaXR1ZGVbaW5kZXhdID0gMTsKICAgICAgICAgICAgICB0aGlzLnNldE5laWdoYm9yc1NpZ25pZmljYW5jZShpLCBqLCBpbmRleCk7CiAgICAgICAgICAgICAgcHJvY2Vzc2luZ0ZsYWdzW2luZGV4XSB8PSBmaXJzdE1hZ25pdHVkZUJpdE1hc2s7CgogICAgICAgICAgICAgIGluZGV4ID0gaW5kZXgwOwogICAgICAgICAgICAgIGZvciAodmFyIGkyID0gaTA7IGkyIDw9IGk7IGkyKyssIGluZGV4ICs9IHdpZHRoKSB7CiAgICAgICAgICAgICAgICBiaXRzRGVjb2RlZFtpbmRleF0rKzsKICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgIGkxKys7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yIChpID0gaTAgKyBpMTsgaSA8IGlOZXh0OyBpKyssIGluZGV4ICs9IHdpZHRoKSB7CiAgICAgICAgICAgICAgaWYgKGNvZWZmaWNlbnRzTWFnbml0dWRlW2luZGV4XSB8fAogICAgICAgICAgICAgICAgKHByb2Nlc3NpbmdGbGFnc1tpbmRleF0gJiBwcm9jZXNzZWRNYXNrKSAhPT0gMCkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICB2YXIgY29udGV4dExhYmVsID0gbGFiZWxzW25laWdoYm9yc1NpZ25pZmljYW5jZVtpbmRleF1dOwogICAgICAgICAgICAgIHZhciBkZWNpc2lvbiA9IGRlY29kZXIucmVhZEJpdChjb250ZXh0cywgY29udGV4dExhYmVsKTsKICAgICAgICAgICAgICBpZiAoZGVjaXNpb24gPT09IDEpIHsKICAgICAgICAgICAgICAgIHNpZ24gPSB0aGlzLmRlY29kZVNpZ25CaXQoaSwgaiwgaW5kZXgpOwogICAgICAgICAgICAgICAgY29lZmZpY2VudHNTaWduW2luZGV4XSA9IHNpZ247CiAgICAgICAgICAgICAgICBjb2VmZmljZW50c01hZ25pdHVkZVtpbmRleF0gPSAxOwogICAgICAgICAgICAgICAgdGhpcy5zZXROZWlnaGJvcnNTaWduaWZpY2FuY2UoaSwgaiwgaW5kZXgpOwogICAgICAgICAgICAgICAgcHJvY2Vzc2luZ0ZsYWdzW2luZGV4XSB8PSBmaXJzdE1hZ25pdHVkZUJpdE1hc2s7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGJpdHNEZWNvZGVkW2luZGV4XSsrOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9LAogICAgICBjaGVja1NlZ21lbnRhdGlvblN5bWJvbDogZnVuY3Rpb24gQml0TW9kZWxfY2hlY2tTZWdtZW50YXRpb25TeW1ib2woKSB7CiAgICAgICAgdmFyIGRlY29kZXIgPSB0aGlzLmRlY29kZXI7CiAgICAgICAgdmFyIGNvbnRleHRzID0gdGhpcy5jb250ZXh0czsKICAgICAgICB2YXIgc3ltYm9sID0gKGRlY29kZXIucmVhZEJpdChjb250ZXh0cywgVU5JRk9STV9DT05URVhUKSA8PCAzKSB8CiAgICAgICAgICAgICAgICAgICAgIChkZWNvZGVyLnJlYWRCaXQoY29udGV4dHMsIFVOSUZPUk1fQ09OVEVYVCkgPDwgMikgfAogICAgICAgICAgICAgICAgICAgICAoZGVjb2Rlci5yZWFkQml0KGNvbnRleHRzLCBVTklGT1JNX0NPTlRFWFQpIDw8IDEpIHwKICAgICAgICAgICAgICAgICAgICAgIGRlY29kZXIucmVhZEJpdChjb250ZXh0cywgVU5JRk9STV9DT05URVhUKTsKICAgICAgICBpZiAoc3ltYm9sICE9PSAweEEpIHsKICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSlBYIEVycm9yOiBJbnZhbGlkIHNlZ21lbnRhdGlvbiBzeW1ib2wnKTsKICAgICAgICB9CiAgICAgIH0KICAgIH07CgogICAgcmV0dXJuIEJpdE1vZGVsOwogIH0pKCk7CgogIC8vIFNlY3Rpb24gRiwgRGlzY3JldGUgd2F2ZWxldCB0cmFuc2Zvcm1hdGlvbgogIHZhciBUcmFuc2Zvcm0gPSAoZnVuY3Rpb24gVHJhbnNmb3JtQ2xvc3VyZSgpIHsKICAgIGZ1bmN0aW9uIFRyYW5zZm9ybSgpIHt9CgogICAgVHJhbnNmb3JtLnByb3RvdHlwZS5jYWxjdWxhdGUgPQogICAgICBmdW5jdGlvbiB0cmFuc2Zvcm1DYWxjdWxhdGUoc3ViYmFuZHMsIHUwLCB2MCkgewogICAgICB2YXIgbGwgPSBzdWJiYW5kc1swXTsKICAgICAgZm9yICh2YXIgaSA9IDEsIGlpID0gc3ViYmFuZHMubGVuZ3RoOyBpIDwgaWk7IGkrKykgewogICAgICAgIGxsID0gdGhpcy5pdGVyYXRlKGxsLCBzdWJiYW5kc1tpXSwgdTAsIHYwKTsKICAgICAgfQogICAgICByZXR1cm4gbGw7CiAgICB9OwogICAgVHJhbnNmb3JtLnByb3RvdHlwZS5leHRlbmQgPSBmdW5jdGlvbiBleHRlbmQoYnVmZmVyLCBvZmZzZXQsIHNpemUpIHsKICAgICAgLy8gU2VjdGlvbiBGLjMuNyBleHRlbmRpbmcuLi4gdXNpbmcgbWF4IGV4dGVuc2lvbiBvZiA0CiAgICAgIHZhciBpMSA9IG9mZnNldCAtIDEsIGoxID0gb2Zmc2V0ICsgMTsKICAgICAgdmFyIGkyID0gb2Zmc2V0ICsgc2l6ZSAtIDIsIGoyID0gb2Zmc2V0ICsgc2l6ZTsKICAgICAgYnVmZmVyW2kxLS1dID0gYnVmZmVyW2oxKytdOwogICAgICBidWZmZXJbajIrK10gPSBidWZmZXJbaTItLV07CiAgICAgIGJ1ZmZlcltpMS0tXSA9IGJ1ZmZlcltqMSsrXTsKICAgICAgYnVmZmVyW2oyKytdID0gYnVmZmVyW2kyLS1dOwogICAgICBidWZmZXJbaTEtLV0gPSBidWZmZXJbajErK107CiAgICAgIGJ1ZmZlcltqMisrXSA9IGJ1ZmZlcltpMi0tXTsKICAgICAgYnVmZmVyW2kxXSA9IGJ1ZmZlcltqMV07CiAgICAgIGJ1ZmZlcltqMl0gPSBidWZmZXJbaTJdOwogICAgfTsKICAgIFRyYW5zZm9ybS5wcm90b3R5cGUuaXRlcmF0ZSA9IGZ1bmN0aW9uIFRyYW5zZm9ybV9pdGVyYXRlKGxsLCBobF9saF9oaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUwLCB2MCkgewogICAgICB2YXIgbGxXaWR0aCA9IGxsLndpZHRoLCBsbEhlaWdodCA9IGxsLmhlaWdodCwgbGxJdGVtcyA9IGxsLml0ZW1zOwogICAgICB2YXIgd2lkdGggPSBobF9saF9oaC53aWR0aDsKICAgICAgdmFyIGhlaWdodCA9IGhsX2xoX2hoLmhlaWdodDsKICAgICAgdmFyIGl0ZW1zID0gaGxfbGhfaGguaXRlbXM7CiAgICAgIHZhciBpLCBqLCBrLCBsLCB1LCB2OwoKICAgICAgLy8gSW50ZXJsZWF2ZSBMTCBhY2NvcmRpbmcgdG8gU2VjdGlvbiBGLjMuMwogICAgICBmb3IgKGsgPSAwLCBpID0gMDsgaSA8IGxsSGVpZ2h0OyBpKyspIHsKICAgICAgICBsID0gaSAqIDIgKiB3aWR0aDsKICAgICAgICBmb3IgKGogPSAwOyBqIDwgbGxXaWR0aDsgaisrLCBrKyssIGwgKz0gMikgewogICAgICAgICAgaXRlbXNbbF0gPSBsbEl0ZW1zW2tdOwogICAgICAgIH0KICAgICAgfQogICAgICAvLyBUaGUgTEwgYmFuZCBpcyBub3QgbmVlZGVkIGFueW1vcmUuCiAgICAgIGxsSXRlbXMgPSBsbC5pdGVtcyA9IG51bGw7CgogICAgICB2YXIgYnVmZmVyUGFkZGluZyA9IDQ7CiAgICAgIHZhciByb3dCdWZmZXIgPSBuZXcgRmxvYXQzMkFycmF5KHdpZHRoICsgMiAqIGJ1ZmZlclBhZGRpbmcpOwoKICAgICAgLy8gU2VjdGlvbiBGLjMuNCBIT1JfU1IKICAgICAgaWYgKHdpZHRoID09PSAxKSB7CiAgICAgICAgLy8gaWYgd2lkdGggPSAxLCB3aGVuIHUwIGV2ZW4ga2VlcCBpdGVtcyBhcyBpcywgd2hlbiBvZGQgZGl2aWRlIGJ5IDIKICAgICAgICBpZiAoKHUwICYgMSkgIT09IDApIHsKICAgICAgICAgIGZvciAodiA9IDAsIGsgPSAwOyB2IDwgaGVpZ2h0OyB2KyssIGsgKz0gd2lkdGgpIHsKICAgICAgICAgICAgaXRlbXNba10gKj0gMC41OwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICBmb3IgKHYgPSAwLCBrID0gMDsgdiA8IGhlaWdodDsgdisrLCBrICs9IHdpZHRoKSB7CiAgICAgICAgICByb3dCdWZmZXIuc2V0KGl0ZW1zLnN1YmFycmF5KGssIGsgKyB3aWR0aCksIGJ1ZmZlclBhZGRpbmcpOwoKICAgICAgICAgIHRoaXMuZXh0ZW5kKHJvd0J1ZmZlciwgYnVmZmVyUGFkZGluZywgd2lkdGgpOwogICAgICAgICAgdGhpcy5maWx0ZXIocm93QnVmZmVyLCBidWZmZXJQYWRkaW5nLCB3aWR0aCk7CgogICAgICAgICAgaXRlbXMuc2V0KAogICAgICAgICAgICByb3dCdWZmZXIuc3ViYXJyYXkoYnVmZmVyUGFkZGluZywgYnVmZmVyUGFkZGluZyArIHdpZHRoKSwKICAgICAgICAgICAgayk7CiAgICAgICAgfQogICAgICB9CgogICAgICAvLyBBY2Nlc3NlcyB0byB0aGUgaXRlbXMgYXJyYXkgY2FuIHRha2UgbG9uZywgYmVjYXVzZSBpdCBtYXkgbm90IGZpdCBpbnRvCiAgICAgIC8vIENQVSBjYWNoZSBhbmQgaGFzIHRvIGJlIGZldGNoZWQgZnJvbSBtYWluIG1lbW9yeS4gU2luY2Ugc3Vic2VxdWVudAogICAgICAvLyBhY2Nlc3NlcyB0byB0aGUgaXRlbXMgYXJyYXkgYXJlIG5vdCBsb2NhbCB3aGVuIHJlYWRpbmcgY29sdW1ucywgd2UKICAgICAgLy8gaGF2ZSBhIGNhY2hlIG1pc3MgZXZlcnkgdGltZS4gVG8gcmVkdWNlIGNhY2hlIG1pc3NlcywgZ2V0IHVwIHRvCiAgICAgIC8vICdudW1CdWZmZXJzJyBpdGVtcyBhdCBhIHRpbWUgYW5kIHN0b3JlIHRoZW0gaW50byB0aGUgaW5kaXZpZHVhbAogICAgICAvLyBidWZmZXJzLiBUaGUgY29sQnVmZmVycyBzaG91bGQgYmUgc21hbGwgZW5vdWdoIHRvIGZpdCBpbnRvIENQVSBjYWNoZS4KICAgICAgdmFyIG51bUJ1ZmZlcnMgPSAxNjsKICAgICAgdmFyIGNvbEJ1ZmZlcnMgPSBbXTsKICAgICAgZm9yIChpID0gMDsgaSA8IG51bUJ1ZmZlcnM7IGkrKykgewogICAgICAgIGNvbEJ1ZmZlcnMucHVzaChuZXcgRmxvYXQzMkFycmF5KGhlaWdodCArIDIgKiBidWZmZXJQYWRkaW5nKSk7CiAgICAgIH0KICAgICAgdmFyIGIsIGN1cnJlbnRCdWZmZXIgPSAwOwogICAgICBsbCA9IGJ1ZmZlclBhZGRpbmcgKyBoZWlnaHQ7CgogICAgICAvLyBTZWN0aW9uIEYuMy41IFZFUl9TUgogICAgICBpZiAoaGVpZ2h0ID09PSAxKSB7CiAgICAgICAgICAvLyBpZiBoZWlnaHQgPSAxLCB3aGVuIHYwIGV2ZW4ga2VlcCBpdGVtcyBhcyBpcywgd2hlbiBvZGQgZGl2aWRlIGJ5IDIKICAgICAgICBpZiAoKHYwICYgMSkgIT09IDApIHsKICAgICAgICAgIGZvciAodSA9IDA7IHUgPCB3aWR0aDsgdSsrKSB7CiAgICAgICAgICAgIGl0ZW1zW3VdICo9IDAuNTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZm9yICh1ID0gMDsgdSA8IHdpZHRoOyB1KyspIHsKICAgICAgICAgIC8vIGlmIHdlIHJhbiBvdXQgb2YgYnVmZmVycywgY29weSBzZXZlcmFsIGltYWdlIGNvbHVtbnMgYXQgb25jZQogICAgICAgICAgaWYgKGN1cnJlbnRCdWZmZXIgPT09IDApIHsKICAgICAgICAgICAgbnVtQnVmZmVycyA9IE1hdGgubWluKHdpZHRoIC0gdSwgbnVtQnVmZmVycyk7CiAgICAgICAgICAgIGZvciAoayA9IHUsIGwgPSBidWZmZXJQYWRkaW5nOyBsIDwgbGw7IGsgKz0gd2lkdGgsIGwrKykgewogICAgICAgICAgICAgIGZvciAoYiA9IDA7IGIgPCBudW1CdWZmZXJzOyBiKyspIHsKICAgICAgICAgICAgICAgIGNvbEJ1ZmZlcnNbYl1bbF0gPSBpdGVtc1trICsgYl07CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGN1cnJlbnRCdWZmZXIgPSBudW1CdWZmZXJzOwogICAgICAgICAgfQoKICAgICAgICAgIGN1cnJlbnRCdWZmZXItLTsKICAgICAgICAgIHZhciBidWZmZXIgPSBjb2xCdWZmZXJzW2N1cnJlbnRCdWZmZXJdOwogICAgICAgICAgdGhpcy5leHRlbmQoYnVmZmVyLCBidWZmZXJQYWRkaW5nLCBoZWlnaHQpOwogICAgICAgICAgdGhpcy5maWx0ZXIoYnVmZmVyLCBidWZmZXJQYWRkaW5nLCBoZWlnaHQpOwoKICAgICAgICAgIC8vIElmIHRoaXMgaXMgbGFzdCBidWZmZXIgaW4gdGhpcyBncm91cCBvZiBidWZmZXJzLCBmbHVzaCBhbGwgYnVmZmVycy4KICAgICAgICAgIGlmIChjdXJyZW50QnVmZmVyID09PSAwKSB7CiAgICAgICAgICAgIGsgPSB1IC0gbnVtQnVmZmVycyArIDE7CiAgICAgICAgICAgIGZvciAobCA9IGJ1ZmZlclBhZGRpbmc7IGwgPCBsbDsgayArPSB3aWR0aCwgbCsrKSB7CiAgICAgICAgICAgICAgZm9yIChiID0gMDsgYiA8IG51bUJ1ZmZlcnM7IGIrKykgewogICAgICAgICAgICAgICAgaXRlbXNbayArIGJdID0gY29sQnVmZmVyc1tiXVtsXTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KCiAgICAgIHJldHVybiB7CiAgICAgICAgd2lkdGg6IHdpZHRoLAogICAgICAgIGhlaWdodDogaGVpZ2h0LAogICAgICAgIGl0ZW1zOiBpdGVtcwogICAgICB9OwogICAgfTsKICAgIHJldHVybiBUcmFuc2Zvcm07CiAgfSkoKTsKCiAgLy8gU2VjdGlvbiAzLjguMiBJcnJldmVyc2libGUgOS03IGZpbHRlcgogIHZhciBJcnJldmVyc2libGVUcmFuc2Zvcm0gPSAoZnVuY3Rpb24gSXJyZXZlcnNpYmxlVHJhbnNmb3JtQ2xvc3VyZSgpIHsKICAgIGZ1bmN0aW9uIElycmV2ZXJzaWJsZVRyYW5zZm9ybSgpIHsKICAgICAgVHJhbnNmb3JtLmNhbGwodGhpcyk7CiAgICB9CgogICAgSXJyZXZlcnNpYmxlVHJhbnNmb3JtLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoVHJhbnNmb3JtLnByb3RvdHlwZSk7CiAgICBJcnJldmVyc2libGVUcmFuc2Zvcm0ucHJvdG90eXBlLmZpbHRlciA9CiAgICAgIGZ1bmN0aW9uIGlycmV2ZXJzaWJsZVRyYW5zZm9ybUZpbHRlcih4LCBvZmZzZXQsIGxlbmd0aCkgewogICAgICB2YXIgbGVuID0gbGVuZ3RoID4+IDE7CiAgICAgIG9mZnNldCA9IG9mZnNldCB8IDA7CiAgICAgIHZhciBqLCBuLCBjdXJyZW50LCBuZXh0OwoKICAgICAgdmFyIGFscGhhID0gLTEuNTg2MTM0MzQyMDU5OTI0OwogICAgICB2YXIgYmV0YSA9IC0wLjA1Mjk4MDExODU3Mjk2MTsKICAgICAgdmFyIGdhbW1hID0gMC44ODI5MTEwNzU1MzA5MzQ7CiAgICAgIHZhciBkZWx0YSA9IDAuNDQzNTA2ODUyMDQzOTcxOwogICAgICB2YXIgSyA9IDEuMjMwMTc0MTA0OTE0MDAxOwogICAgICB2YXIgS18gPSAxIC8gSzsKCiAgICAgIC8vIHN0ZXAgMSBpcyBjb21iaW5lZCB3aXRoIHN0ZXAgMwoKICAgICAgLy8gc3RlcCAyCiAgICAgIGogPSBvZmZzZXQgLSAzOwogICAgICBmb3IgKG4gPSBsZW4gKyA0OyBuLS07IGogKz0gMikgewogICAgICAgIHhbal0gKj0gS187CiAgICAgIH0KCiAgICAgIC8vIHN0ZXAgMSAmIDMKICAgICAgaiA9IG9mZnNldCAtIDI7CiAgICAgIGN1cnJlbnQgPSBkZWx0YSAqIHhbaiAtMV07CiAgICAgIGZvciAobiA9IGxlbiArIDM7IG4tLTsgaiArPSAyKSB7CiAgICAgICAgbmV4dCA9IGRlbHRhICogeFtqICsgMV07CiAgICAgICAgeFtqXSA9IEsgKiB4W2pdIC0gY3VycmVudCAtIG5leHQ7CiAgICAgICAgaWYgKG4tLSkgewogICAgICAgICAgaiArPSAyOwogICAgICAgICAgY3VycmVudCA9IGRlbHRhICogeFtqICsgMV07CiAgICAgICAgICB4W2pdID0gSyAqIHhbal0gLSBjdXJyZW50IC0gbmV4dDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICB9CgogICAgICAvLyBzdGVwIDQKICAgICAgaiA9IG9mZnNldCAtIDE7CiAgICAgIGN1cnJlbnQgPSBnYW1tYSAqIHhbaiAtIDFdOwogICAgICBmb3IgKG4gPSBsZW4gKyAyOyBuLS07IGogKz0gMikgewogICAgICAgIG5leHQgPSBnYW1tYSAqIHhbaiArIDFdOwogICAgICAgIHhbal0gLT0gY3VycmVudCArIG5leHQ7CiAgICAgICAgaWYgKG4tLSkgewogICAgICAgICAgaiArPSAyOwogICAgICAgICAgY3VycmVudCA9IGdhbW1hICogeFtqICsgMV07CiAgICAgICAgICB4W2pdIC09IGN1cnJlbnQgKyBuZXh0OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIHN0ZXAgNQogICAgICBqID0gb2Zmc2V0OwogICAgICBjdXJyZW50ID0gYmV0YSAqIHhbaiAtIDFdOwogICAgICBmb3IgKG4gPSBsZW4gKyAxOyBuLS07IGogKz0gMikgewogICAgICAgIG5leHQgPSBiZXRhICogeFtqICsgMV07CiAgICAgICAgeFtqXSAtPSBjdXJyZW50ICsgbmV4dDsKICAgICAgICBpZiAobi0tKSB7CiAgICAgICAgICBqICs9IDI7CiAgICAgICAgICBjdXJyZW50ID0gYmV0YSAqIHhbaiArIDFdOwogICAgICAgICAgeFtqXSAtPSBjdXJyZW50ICsgbmV4dDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICB9CgogICAgICAvLyBzdGVwIDYKICAgICAgaWYgKGxlbiAhPT0gMCkgewogICAgICAgIGogPSBvZmZzZXQgKyAxOwogICAgICAgIGN1cnJlbnQgPSBhbHBoYSAqIHhbaiAtIDFdOwogICAgICAgIGZvciAobiA9IGxlbjsgbi0tOyBqICs9IDIpIHsKICAgICAgICAgIG5leHQgPSBhbHBoYSAqIHhbaiArIDFdOwogICAgICAgICAgeFtqXSAtPSBjdXJyZW50ICsgbmV4dDsKICAgICAgICAgIGlmIChuLS0pIHsKICAgICAgICAgICAgaiArPSAyOwogICAgICAgICAgICBjdXJyZW50ID0gYWxwaGEgKiB4W2ogKyAxXTsKICAgICAgICAgICAgeFtqXSAtPSBjdXJyZW50ICsgbmV4dDsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfTsKCiAgICByZXR1cm4gSXJyZXZlcnNpYmxlVHJhbnNmb3JtOwogIH0pKCk7CgogIC8vIFNlY3Rpb24gMy44LjEgUmV2ZXJzaWJsZSA1LTMgZmlsdGVyCiAgdmFyIFJldmVyc2libGVUcmFuc2Zvcm0gPSAoZnVuY3Rpb24gUmV2ZXJzaWJsZVRyYW5zZm9ybUNsb3N1cmUoKSB7CiAgICBmdW5jdGlvbiBSZXZlcnNpYmxlVHJhbnNmb3JtKCkgewogICAgICBUcmFuc2Zvcm0uY2FsbCh0aGlzKTsKICAgIH0KCiAgICBSZXZlcnNpYmxlVHJhbnNmb3JtLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoVHJhbnNmb3JtLnByb3RvdHlwZSk7CiAgICBSZXZlcnNpYmxlVHJhbnNmb3JtLnByb3RvdHlwZS5maWx0ZXIgPQogICAgICBmdW5jdGlvbiByZXZlcnNpYmxlVHJhbnNmb3JtRmlsdGVyKHgsIG9mZnNldCwgbGVuZ3RoKSB7CiAgICAgIHZhciBsZW4gPSBsZW5ndGggPj4gMTsKICAgICAgb2Zmc2V0ID0gb2Zmc2V0IHwgMDsKICAgICAgdmFyIGosIG47CgogICAgICBmb3IgKGogPSBvZmZzZXQsIG4gPSBsZW4gKyAxOyBuLS07IGogKz0gMikgewogICAgICAgIHhbal0gLT0gKHhbaiAtIDFdICsgeFtqICsgMV0gKyAyKSA+PiAyOwogICAgICB9CgogICAgICBmb3IgKGogPSBvZmZzZXQgKyAxLCBuID0gbGVuOyBuLS07IGogKz0gMikgewogICAgICAgIHhbal0gKz0gKHhbaiAtIDFdICsgeFtqICsgMV0pID4+IDE7CiAgICAgIH0KICAgIH07CgogICAgcmV0dXJuIFJldmVyc2libGVUcmFuc2Zvcm07CiAgfSkoKTsKCiAgcmV0dXJuIEpweEltYWdlOwp9KSgpOwoKCnZhciBKYmlnMkltYWdlID0gKGZ1bmN0aW9uIEpiaWcySW1hZ2VDbG9zdXJlKCkgewogIC8vIFV0aWxpdHkgZGF0YSBzdHJ1Y3R1cmVzCiAgZnVuY3Rpb24gQ29udGV4dENhY2hlKCkge30KCiAgQ29udGV4dENhY2hlLnByb3RvdHlwZSA9IHsKICAgIGdldENvbnRleHRzOiBmdW5jdGlvbihpZCkgewogICAgICBpZiAoaWQgaW4gdGhpcykgewogICAgICAgIHJldHVybiB0aGlzW2lkXTsKICAgICAgfQogICAgICByZXR1cm4gKHRoaXNbaWRdID0gbmV3IEludDhBcnJheSgxIDw8IDE2KSk7CiAgICB9CiAgfTsKCiAgZnVuY3Rpb24gRGVjb2RpbmdDb250ZXh0KGRhdGEsIHN0YXJ0LCBlbmQpIHsKICAgIHRoaXMuZGF0YSA9IGRhdGE7CiAgICB0aGlzLnN0YXJ0ID0gc3RhcnQ7CiAgICB0aGlzLmVuZCA9IGVuZDsKICB9CgogIERlY29kaW5nQ29udGV4dC5wcm90b3R5cGUgPSB7CiAgICBnZXQgZGVjb2RlcigpIHsKICAgICAgdmFyIGRlY29kZXIgPSBuZXcgQXJpdGhtZXRpY0RlY29kZXIodGhpcy5kYXRhLCB0aGlzLnN0YXJ0LCB0aGlzLmVuZCk7CiAgICAgIHJldHVybiBzaGFkb3codGhpcywgJ2RlY29kZXInLCBkZWNvZGVyKTsKICAgIH0sCiAgICBnZXQgY29udGV4dENhY2hlKCkgewogICAgICB2YXIgY2FjaGUgPSBuZXcgQ29udGV4dENhY2hlKCk7CiAgICAgIHJldHVybiBzaGFkb3codGhpcywgJ2NvbnRleHRDYWNoZScsIGNhY2hlKTsKICAgIH0KICB9OwoKICAvLyBBbm5leCBBLiBBcml0aG1ldGljIEludGVnZXIgRGVjb2RpbmcgUHJvY2VkdXJlCiAgLy8gQS4yIFByb2NlZHVyZSBmb3IgZGVjb2RpbmcgdmFsdWVzCiAgZnVuY3Rpb24gZGVjb2RlSW50ZWdlcihjb250ZXh0Q2FjaGUsIHByb2NlZHVyZSwgZGVjb2RlcikgewogICAgdmFyIGNvbnRleHRzID0gY29udGV4dENhY2hlLmdldENvbnRleHRzKHByb2NlZHVyZSk7CiAgICB2YXIgcHJldiA9IDE7CgogICAgZnVuY3Rpb24gcmVhZEJpdHMobGVuZ3RoKSB7CiAgICAgIHZhciB2ID0gMDsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewogICAgICAgIHZhciBiaXQgPSBkZWNvZGVyLnJlYWRCaXQoY29udGV4dHMsIHByZXYpOwogICAgICAgIHByZXYgPSAocHJldiA8IDI1NiA/IChwcmV2IDw8IDEpIHwgYml0IDoKICAgICAgICAgICAgICAgICgoKHByZXYgPDwgMSkgfCBiaXQpICYgNTExKSB8IDI1Nik7CiAgICAgICAgdiA9ICh2IDw8IDEpIHwgYml0OwogICAgICB9CiAgICAgIHJldHVybiB2ID4+PiAwOwogICAgfQoKICAgIHZhciBzaWduID0gcmVhZEJpdHMoMSk7CiAgICB2YXIgdmFsdWUgPSByZWFkQml0cygxKSA/CiAgICAgICAgICAgICAgICAgIChyZWFkQml0cygxKSA/CiAgICAgICAgICAgICAgICAgICAgKHJlYWRCaXRzKDEpID8KICAgICAgICAgICAgICAgICAgICAgIChyZWFkQml0cygxKSA/CiAgICAgICAgICAgICAgICAgICAgICAgIChyZWFkQml0cygxKSA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlYWRCaXRzKDMyKSArIDQ0MzYpIDoKICAgICAgICAgICAgICAgICAgICAgICAgcmVhZEJpdHMoMTIpICsgMzQwKSA6CiAgICAgICAgICAgICAgICAgICAgICByZWFkQml0cyg4KSArIDg0KSA6CiAgICAgICAgICAgICAgICAgICAgcmVhZEJpdHMoNikgKyAyMCkgOgogICAgICAgICAgICAgICAgICByZWFkQml0cyg0KSArIDQpIDoKICAgICAgICAgICAgICAgIHJlYWRCaXRzKDIpOwogICAgcmV0dXJuIChzaWduID09PSAwID8gdmFsdWUgOiAodmFsdWUgPiAwID8gLXZhbHVlIDogbnVsbCkpOwogIH0KCiAgLy8gQS4zIFRoZSBJQUlEIGRlY29kaW5nIHByb2NlZHVyZQogIGZ1bmN0aW9uIGRlY29kZUlBSUQoY29udGV4dENhY2hlLCBkZWNvZGVyLCBjb2RlTGVuZ3RoKSB7CiAgICB2YXIgY29udGV4dHMgPSBjb250ZXh0Q2FjaGUuZ2V0Q29udGV4dHMoJ0lBSUQnKTsKCiAgICB2YXIgcHJldiA9IDE7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvZGVMZW5ndGg7IGkrKykgewogICAgICB2YXIgYml0ID0gZGVjb2Rlci5yZWFkQml0KGNvbnRleHRzLCBwcmV2KTsKICAgICAgcHJldiA9IChwcmV2IDw8IDEpIHwgYml0OwogICAgfQogICAgaWYgKGNvZGVMZW5ndGggPCAzMSkgewogICAgICByZXR1cm4gcHJldiAmICgoMSA8PCBjb2RlTGVuZ3RoKSAtIDEpOwogICAgfQogICAgcmV0dXJuIHByZXYgJiAweDdGRkZGRkZGOwogIH0KCiAgLy8gNy4zIFNlZ21lbnQgdHlwZXMKICB2YXIgU2VnbWVudFR5cGVzID0gWwogICAgJ1N5bWJvbERpY3Rpb25hcnknLCBudWxsLCBudWxsLCBudWxsLCAnSW50ZXJtZWRpYXRlVGV4dFJlZ2lvbicsIG51bGwsCiAgICAnSW1tZWRpYXRlVGV4dFJlZ2lvbicsICdJbW1lZGlhdGVMb3NzbGVzc1RleHRSZWdpb24nLCBudWxsLCBudWxsLCBudWxsLAogICAgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgJ3BhdHRlcm5EaWN0aW9uYXJ5JywgbnVsbCwgbnVsbCwgbnVsbCwKICAgICdJbnRlcm1lZGlhdGVIYWxmdG9uZVJlZ2lvbicsIG51bGwsICdJbW1lZGlhdGVIYWxmdG9uZVJlZ2lvbicsCiAgICAnSW1tZWRpYXRlTG9zc2xlc3NIYWxmdG9uZVJlZ2lvbicsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsCiAgICBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCAnSW50ZXJtZWRpYXRlR2VuZXJpY1JlZ2lvbicsIG51bGwsCiAgICAnSW1tZWRpYXRlR2VuZXJpY1JlZ2lvbicsICdJbW1lZGlhdGVMb3NzbGVzc0dlbmVyaWNSZWdpb24nLAogICAgJ0ludGVybWVkaWF0ZUdlbmVyaWNSZWZpbmVtZW50UmVnaW9uJywgbnVsbCwKICAgICdJbW1lZGlhdGVHZW5lcmljUmVmaW5lbWVudFJlZ2lvbicsCiAgICAnSW1tZWRpYXRlTG9zc2xlc3NHZW5lcmljUmVmaW5lbWVudFJlZ2lvbicsIG51bGwsIG51bGwsIG51bGwsIG51bGwsCiAgICAnUGFnZUluZm9ybWF0aW9uJywgJ0VuZE9mUGFnZScsICdFbmRPZlN0cmlwZScsICdFbmRPZkZpbGUnLCAnUHJvZmlsZXMnLAogICAgJ1RhYmxlcycsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsCiAgICAnRXh0ZW5zaW9uJwogIF07CgogIHZhciBDb2RpbmdUZW1wbGF0ZXMgPSBbCiAgICBbe3g6IC0xLCB5OiAtMn0sIHt4OiAwLCB5OiAtMn0sIHt4OiAxLCB5OiAtMn0sIHt4OiAtMiwgeTogLTF9LAogICAgIHt4OiAtMSwgeTogLTF9LCB7eDogMCwgeTogLTF9LCB7eDogMSwgeTogLTF9LCB7eDogMiwgeTogLTF9LAogICAgIHt4OiAtNCwgeTogMH0sIHt4OiAtMywgeTogMH0sIHt4OiAtMiwgeTogMH0sIHt4OiAtMSwgeTogMH1dLAogICAgW3t4OiAtMSwgeTogLTJ9LCB7eDogMCwgeTogLTJ9LCB7eDogMSwgeTogLTJ9LCB7eDogMiwgeTogLTJ9LAogICAgIHt4OiAtMiwgeTogLTF9LCB7eDogLTEsIHk6IC0xfSwge3g6IDAsIHk6IC0xfSwge3g6IDEsIHk6IC0xfSwKICAgICB7eDogMiwgeTogLTF9LCB7eDogLTMsIHk6IDB9LCB7eDogLTIsIHk6IDB9LCB7eDogLTEsIHk6IDB9XSwKICAgIFt7eDogLTEsIHk6IC0yfSwge3g6IDAsIHk6IC0yfSwge3g6IDEsIHk6IC0yfSwge3g6IC0yLCB5OiAtMX0sCiAgICAge3g6IC0xLCB5OiAtMX0sIHt4OiAwLCB5OiAtMX0sIHt4OiAxLCB5OiAtMX0sIHt4OiAtMiwgeTogMH0sCiAgICAge3g6IC0xLCB5OiAwfV0sCiAgICBbe3g6IC0zLCB5OiAtMX0sIHt4OiAtMiwgeTogLTF9LCB7eDogLTEsIHk6IC0xfSwge3g6IDAsIHk6IC0xfSwKICAgICB7eDogMSwgeTogLTF9LCB7eDogLTQsIHk6IDB9LCB7eDogLTMsIHk6IDB9LCB7eDogLTIsIHk6IDB9LCB7eDogLTEsIHk6IDB9XQogIF07CgogIHZhciBSZWZpbmVtZW50VGVtcGxhdGVzID0gWwogICAgewogICAgICBjb2Rpbmc6IFt7eDogMCwgeTogLTF9LCB7eDogMSwgeTogLTF9LCB7eDogLTEsIHk6IDB9XSwKICAgICAgcmVmZXJlbmNlOiBbe3g6IDAsIHk6IC0xfSwge3g6IDEsIHk6IC0xfSwge3g6IC0xLCB5OiAwfSwge3g6IDAsIHk6IDB9LAogICAgICAgICAgICAgICAgICB7eDogMSwgeTogMH0sIHt4OiAtMSwgeTogMX0sIHt4OiAwLCB5OiAxfSwge3g6IDEsIHk6IDF9XQogICAgfSwKICAgIHsKICAgICAgY29kaW5nOiBbe3g6IC0xLCB5OiAtMX0sIHt4OiAwLCB5OiAtMX0sIHt4OiAxLCB5OiAtMX0sIHt4OiAtMSwgeTogMH1dLAogICAgICByZWZlcmVuY2U6IFt7eDogMCwgeTogLTF9LCB7eDogLTEsIHk6IDB9LCB7eDogMCwgeTogMH0sIHt4OiAxLCB5OiAwfSwKICAgICAgICAgICAgICAgICAge3g6IDAsIHk6IDF9LCB7eDogMSwgeTogMX1dCiAgICB9CiAgXTsKCiAgLy8gU2VlIDYuMi41LjcgRGVjb2RpbmcgdGhlIGJpdG1hcC4KICB2YXIgUmV1c2VkQ29udGV4dHMgPSBbCiAgICAweDlCMjUsIC8vIDEwMDExIDAxMTAwMTAgMDEwMQogICAgMHgwNzk1LCAvLyAwMDExIDExMDAxMCAxMDEKICAgIDB4MDBFNSwgLy8gMDAxIDExMDAxIDAxCiAgICAweDAxOTUgIC8vIDAxMTAwMSAwMTAxCiAgXTsKCiAgdmFyIFJlZmluZW1lbnRSZXVzZWRDb250ZXh0cyA9IFsKICAgIDB4MDAyMCwgLy8gJzAwMCcgKyAnMCcgKGNvZGluZykgKyAnMDAwMTAwMDAnICsgJzAnIChyZWZlcmVuY2UpCiAgICAweDAwMDggIC8vICcwMDAwJyArICcwMDEwMDAnCiAgXTsKCiAgZnVuY3Rpb24gZGVjb2RlQml0bWFwVGVtcGxhdGUwKHdpZHRoLCBoZWlnaHQsIGRlY29kaW5nQ29udGV4dCkgewogICAgdmFyIGRlY29kZXIgPSBkZWNvZGluZ0NvbnRleHQuZGVjb2RlcjsKICAgIHZhciBjb250ZXh0cyA9IGRlY29kaW5nQ29udGV4dC5jb250ZXh0Q2FjaGUuZ2V0Q29udGV4dHMoJ0dCJyk7CiAgICB2YXIgY29udGV4dExhYmVsLCBpLCBqLCBwaXhlbCwgcm93LCByb3cxLCByb3cyLCBiaXRtYXAgPSBbXTsKCiAgICAvLyAuLi5vb29vby4uLi4KICAgIC8vIC4ub29vb29vby4uLiBDb250ZXh0IHRlbXBsYXRlIGZvciBjdXJyZW50IHBpeGVsIChYKQogICAgLy8gLm9vb29YLi4uLi4uIChjb25jYXRlbmF0ZSB2YWx1ZXMgb2YgJ28nLXBpeGVscyB0byBnZXQgY29udGV4dExhYmVsKQogICAgdmFyIE9MRF9QSVhFTF9NQVNLID0gMHg3QkY3OyAvLyAwMTExMSAwMTExMTExIDAxMTEKCiAgICBmb3IgKGkgPSAwOyBpIDwgaGVpZ2h0OyBpKyspIHsKICAgICAgcm93ID0gYml0bWFwW2ldID0gbmV3IFVpbnQ4QXJyYXkod2lkdGgpOwogICAgICByb3cxID0gKGkgPCAxKSA/IHJvdyA6IGJpdG1hcFtpIC0gMV07CiAgICAgIHJvdzIgPSAoaSA8IDIpID8gcm93IDogYml0bWFwW2kgLSAyXTsKCiAgICAgIC8vIEF0IHRoZSBiZWdpbm5pbmcgb2YgZWFjaCByb3c6CiAgICAgIC8vIEZpbGwgY29udGV4dExhYmVsIHdpdGggcGl4ZWxzIHRoYXQgYXJlIGFib3ZlL3JpZ2h0IG9mIChYKQogICAgICBjb250ZXh0TGFiZWwgPSAocm93MlswXSA8PCAxMykgfCAocm93MlsxXSA8PCAxMikgfCAocm93MlsyXSA8PCAxMSkgfAogICAgICAgICAgICAgICAgICAgICAocm93MVswXSA8PCA3KSB8IChyb3cxWzFdIDw8IDYpIHwgKHJvdzFbMl0gPDwgNSkgfAogICAgICAgICAgICAgICAgICAgICAocm93MVszXSA8PCA0KTsKCiAgICAgIGZvciAoaiA9IDA7IGogPCB3aWR0aDsgaisrKSB7CiAgICAgICAgcm93W2pdID0gcGl4ZWwgPSBkZWNvZGVyLnJlYWRCaXQoY29udGV4dHMsIGNvbnRleHRMYWJlbCk7CgogICAgICAgIC8vIEF0IGVhY2ggcGl4ZWw6IENsZWFyIGNvbnRleHRMYWJlbCBwaXhlbHMgdGhhdCBhcmUgc2hpZnRlZAogICAgICAgIC8vIG91dCBvZiB0aGUgY29udGV4dCwgdGhlbiBhZGQgbmV3IG9uZXMuCiAgICAgICAgY29udGV4dExhYmVsID0gKChjb250ZXh0TGFiZWwgJiBPTERfUElYRUxfTUFTSykgPDwgMSkgfAogICAgICAgICAgICAgICAgICAgICAgIChqICsgMyA8IHdpZHRoID8gcm93MltqICsgM10gPDwgMTEgOiAwKSB8CiAgICAgICAgICAgICAgICAgICAgICAgKGogKyA0IDwgd2lkdGggPyByb3cxW2ogKyA0XSA8PCA0IDogMCkgfCBwaXhlbDsKICAgICAgfQogICAgfQoKICAgIHJldHVybiBiaXRtYXA7CiAgfQoKICAvLyA2LjIgR2VuZXJpYyBSZWdpb24gRGVjb2RpbmcgUHJvY2VkdXJlCiAgZnVuY3Rpb24gZGVjb2RlQml0bWFwKG1tciwgd2lkdGgsIGhlaWdodCwgdGVtcGxhdGVJbmRleCwgcHJlZGljdGlvbiwgc2tpcCwgYXQsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kaW5nQ29udGV4dCkgewogICAgaWYgKG1tcikgewogICAgICBlcnJvcignSkJJRzIgZXJyb3I6IE1NUiBlbmNvZGluZyBpcyBub3Qgc3VwcG9ydGVkJyk7CiAgICB9CgogICAgLy8gVXNlIG9wdGltaXplZCB2ZXJzaW9uIGZvciB0aGUgbW9zdCBjb21tb24gY2FzZQogICAgaWYgKHRlbXBsYXRlSW5kZXggPT09IDAgJiYgIXNraXAgJiYgIXByZWRpY3Rpb24gJiYgYXQubGVuZ3RoID09PSA0ICYmCiAgICAgICAgYXRbMF0ueCA9PT0gMyAmJiBhdFswXS55ID09PSAtMSAmJiBhdFsxXS54ID09PSAtMyAmJiBhdFsxXS55ID09PSAtMSAmJgogICAgICAgIGF0WzJdLnggPT09IDIgJiYgYXRbMl0ueSA9PT0gLTIgJiYgYXRbM10ueCA9PT0gLTIgJiYgYXRbM10ueSA9PT0gLTIpIHsKICAgICAgcmV0dXJuIGRlY29kZUJpdG1hcFRlbXBsYXRlMCh3aWR0aCwgaGVpZ2h0LCBkZWNvZGluZ0NvbnRleHQpOwogICAgfQoKICAgIHZhciB1c2Vza2lwID0gISFza2lwOwogICAgdmFyIHRlbXBsYXRlID0gQ29kaW5nVGVtcGxhdGVzW3RlbXBsYXRlSW5kZXhdLmNvbmNhdChhdCk7CgogICAgLy8gU29ydGluZyBpcyBub24tc3RhbmRhcmQsIGFuZCBpdCBpcyBub3QgcmVxdWlyZWQuIEJ1dCBzb3J0aW5nIGluY3JlYXNlcwogICAgLy8gdGhlIG51bWJlciBvZiB0ZW1wbGF0ZSBiaXRzIHRoYXQgY2FuIGJlIHJldXNlZCBmcm9tIHRoZSBwcmV2aW91cwogICAgLy8gY29udGV4dExhYmVsIGluIHRoZSBtYWluIGxvb3AuCiAgICB0ZW1wbGF0ZS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7CiAgICAgIHJldHVybiAoYS55IC0gYi55KSB8fCAoYS54IC0gYi54KTsKICAgIH0pOwoKICAgIHZhciB0ZW1wbGF0ZUxlbmd0aCA9IHRlbXBsYXRlLmxlbmd0aDsKICAgIHZhciB0ZW1wbGF0ZVggPSBuZXcgSW50OEFycmF5KHRlbXBsYXRlTGVuZ3RoKTsKICAgIHZhciB0ZW1wbGF0ZVkgPSBuZXcgSW50OEFycmF5KHRlbXBsYXRlTGVuZ3RoKTsKICAgIHZhciBjaGFuZ2luZ1RlbXBsYXRlRW50cmllcyA9IFtdOwogICAgdmFyIHJldXNlTWFzayA9IDAsIG1pblggPSAwLCBtYXhYID0gMCwgbWluWSA9IDA7CiAgICB2YXIgYywgazsKCiAgICBmb3IgKGsgPSAwOyBrIDwgdGVtcGxhdGVMZW5ndGg7IGsrKykgewogICAgICB0ZW1wbGF0ZVhba10gPSB0ZW1wbGF0ZVtrXS54OwogICAgICB0ZW1wbGF0ZVlba10gPSB0ZW1wbGF0ZVtrXS55OwogICAgICBtaW5YID0gTWF0aC5taW4obWluWCwgdGVtcGxhdGVba10ueCk7CiAgICAgIG1heFggPSBNYXRoLm1heChtYXhYLCB0ZW1wbGF0ZVtrXS54KTsKICAgICAgbWluWSA9IE1hdGgubWluKG1pblksIHRlbXBsYXRlW2tdLnkpOwogICAgICAvLyBDaGVjayBpZiB0aGUgdGVtcGxhdGUgcGl4ZWwgYXBwZWFycyBpbiB0d28gY29uc2VjdXRpdmUgY29udGV4dCBsYWJlbHMsCiAgICAgIC8vIHNvIGl0IGNhbiBiZSByZXVzZWQuIE90aGVyd2lzZSwgd2UgYWRkIGl0IHRvIHRoZSBsaXN0IG9mIGNoYW5naW5nCiAgICAgIC8vIHRlbXBsYXRlIGVudHJpZXMuCiAgICAgIGlmIChrIDwgdGVtcGxhdGVMZW5ndGggLSAxICYmCiAgICAgICAgICB0ZW1wbGF0ZVtrXS55ID09PSB0ZW1wbGF0ZVtrICsgMV0ueSAmJgogICAgICAgICAgdGVtcGxhdGVba10ueCA9PT0gdGVtcGxhdGVbayArIDFdLnggLSAxKSB7CiAgICAgICAgcmV1c2VNYXNrIHw9IDEgPDwgKHRlbXBsYXRlTGVuZ3RoIC0gMSAtIGspOwogICAgICB9IGVsc2UgewogICAgICAgIGNoYW5naW5nVGVtcGxhdGVFbnRyaWVzLnB1c2goayk7CiAgICAgIH0KICAgIH0KICAgIHZhciBjaGFuZ2luZ0VudHJpZXNMZW5ndGggPSBjaGFuZ2luZ1RlbXBsYXRlRW50cmllcy5sZW5ndGg7CgogICAgdmFyIGNoYW5naW5nVGVtcGxhdGVYID0gbmV3IEludDhBcnJheShjaGFuZ2luZ0VudHJpZXNMZW5ndGgpOwogICAgdmFyIGNoYW5naW5nVGVtcGxhdGVZID0gbmV3IEludDhBcnJheShjaGFuZ2luZ0VudHJpZXNMZW5ndGgpOwogICAgdmFyIGNoYW5naW5nVGVtcGxhdGVCaXQgPSBuZXcgVWludDE2QXJyYXkoY2hhbmdpbmdFbnRyaWVzTGVuZ3RoKTsKICAgIGZvciAoYyA9IDA7IGMgPCBjaGFuZ2luZ0VudHJpZXNMZW5ndGg7IGMrKykgewogICAgICBrID0gY2hhbmdpbmdUZW1wbGF0ZUVudHJpZXNbY107CiAgICAgIGNoYW5naW5nVGVtcGxhdGVYW2NdID0gdGVtcGxhdGVba10ueDsKICAgICAgY2hhbmdpbmdUZW1wbGF0ZVlbY10gPSB0ZW1wbGF0ZVtrXS55OwogICAgICBjaGFuZ2luZ1RlbXBsYXRlQml0W2NdID0gMSA8PCAodGVtcGxhdGVMZW5ndGggLSAxIC0gayk7CiAgICB9CgogICAgLy8gR2V0IHRoZSBzYWZlIGJvdW5kaW5nIGJveCBlZGdlcyBmcm9tIHRoZSB3aWR0aCwgaGVpZ2h0LCBtaW5YLCBtYXhYLCBtaW5ZCiAgICB2YXIgc2JiX2xlZnQgPSAtbWluWDsKICAgIHZhciBzYmJfdG9wID0gLW1pblk7CiAgICB2YXIgc2JiX3JpZ2h0ID0gd2lkdGggLSBtYXhYOwoKICAgIHZhciBwc2V1ZG9QaXhlbENvbnRleHQgPSBSZXVzZWRDb250ZXh0c1t0ZW1wbGF0ZUluZGV4XTsKICAgIHZhciByb3cgPSBuZXcgVWludDhBcnJheSh3aWR0aCk7CiAgICB2YXIgYml0bWFwID0gW107CgogICAgdmFyIGRlY29kZXIgPSBkZWNvZGluZ0NvbnRleHQuZGVjb2RlcjsKICAgIHZhciBjb250ZXh0cyA9IGRlY29kaW5nQ29udGV4dC5jb250ZXh0Q2FjaGUuZ2V0Q29udGV4dHMoJ0dCJyk7CgogICAgdmFyIGx0cCA9IDAsIGosIGkwLCBqMCwgY29udGV4dExhYmVsID0gMCwgYml0LCBzaGlmdDsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaGVpZ2h0OyBpKyspIHsKICAgICAgaWYgKHByZWRpY3Rpb24pIHsKICAgICAgICB2YXIgc2x0cCA9IGRlY29kZXIucmVhZEJpdChjb250ZXh0cywgcHNldWRvUGl4ZWxDb250ZXh0KTsKICAgICAgICBsdHAgXj0gc2x0cDsKICAgICAgICBpZiAobHRwKSB7CiAgICAgICAgICBiaXRtYXAucHVzaChyb3cpOyAvLyBkdXBsaWNhdGUgcHJldmlvdXMgcm93CiAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcm93ID0gbmV3IFVpbnQ4QXJyYXkocm93KTsKICAgICAgYml0bWFwLnB1c2gocm93KTsKICAgICAgZm9yIChqID0gMDsgaiA8IHdpZHRoOyBqKyspIHsKICAgICAgICBpZiAodXNlc2tpcCAmJiBza2lwW2ldW2pdKSB7CiAgICAgICAgICByb3dbal0gPSAwOwogICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIC8vIEFyZSB3ZSBpbiB0aGUgbWlkZGxlIG9mIGEgc2NhbmxpbmUsIHNvIHdlIGNhbiByZXVzZSBjb250ZXh0TGFiZWwKICAgICAgICAvLyBiaXRzPwogICAgICAgIGlmIChqID49IHNiYl9sZWZ0ICYmIGogPCBzYmJfcmlnaHQgJiYgaSA+PSBzYmJfdG9wKSB7CiAgICAgICAgICAvLyBJZiB5ZXMsIHdlIGNhbiBqdXN0IHNoaWZ0IHRoZSBiaXRzIHRoYXQgYXJlIHJldXNhYmxlIGFuZCBvbmx5CiAgICAgICAgICAvLyBmZXRjaCB0aGUgcmVtYWluaW5nIG9uZXMuCiAgICAgICAgICBjb250ZXh0TGFiZWwgPSAoY29udGV4dExhYmVsIDw8IDEpICYgcmV1c2VNYXNrOwogICAgICAgICAgZm9yIChrID0gMDsgayA8IGNoYW5naW5nRW50cmllc0xlbmd0aDsgaysrKSB7CiAgICAgICAgICAgIGkwID0gaSArIGNoYW5naW5nVGVtcGxhdGVZW2tdOwogICAgICAgICAgICBqMCA9IGogKyBjaGFuZ2luZ1RlbXBsYXRlWFtrXTsKICAgICAgICAgICAgYml0ID0gYml0bWFwW2kwXVtqMF07CiAgICAgICAgICAgIGlmIChiaXQpIHsKICAgICAgICAgICAgICBiaXQgPSBjaGFuZ2luZ1RlbXBsYXRlQml0W2tdOwogICAgICAgICAgICAgIGNvbnRleHRMYWJlbCB8PSBiaXQ7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgLy8gY29tcHV0ZSB0aGUgY29udGV4dExhYmVsIGZyb20gc2NyYXRjaAogICAgICAgICAgY29udGV4dExhYmVsID0gMDsKICAgICAgICAgIHNoaWZ0ID0gdGVtcGxhdGVMZW5ndGggLSAxOwogICAgICAgICAgZm9yIChrID0gMDsgayA8IHRlbXBsYXRlTGVuZ3RoOyBrKyssIHNoaWZ0LS0pIHsKICAgICAgICAgICAgajAgPSBqICsgdGVtcGxhdGVYW2tdOwogICAgICAgICAgICBpZiAoajAgPj0gMCAmJiBqMCA8IHdpZHRoKSB7CiAgICAgICAgICAgICAgaTAgPSBpICsgdGVtcGxhdGVZW2tdOwogICAgICAgICAgICAgIGlmIChpMCA+PSAwKSB7CiAgICAgICAgICAgICAgICBiaXQgPSBiaXRtYXBbaTBdW2owXTsKICAgICAgICAgICAgICAgIGlmIChiaXQpIHsKICAgICAgICAgICAgICAgICAgY29udGV4dExhYmVsIHw9IGJpdCA8PCBzaGlmdDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgdmFyIHBpeGVsID0gZGVjb2Rlci5yZWFkQml0KGNvbnRleHRzLCBjb250ZXh0TGFiZWwpOwogICAgICAgIHJvd1tqXSA9IHBpeGVsOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gYml0bWFwOwogIH0KCiAgLy8gNi4zLjIgR2VuZXJpYyBSZWZpbmVtZW50IFJlZ2lvbiBEZWNvZGluZyBQcm9jZWR1cmUKICBmdW5jdGlvbiBkZWNvZGVSZWZpbmVtZW50KHdpZHRoLCBoZWlnaHQsIHRlbXBsYXRlSW5kZXgsIHJlZmVyZW5jZUJpdG1hcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFgsIG9mZnNldFksIHByZWRpY3Rpb24sIGF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RpbmdDb250ZXh0KSB7CiAgICB2YXIgY29kaW5nVGVtcGxhdGUgPSBSZWZpbmVtZW50VGVtcGxhdGVzW3RlbXBsYXRlSW5kZXhdLmNvZGluZzsKICAgIGlmICh0ZW1wbGF0ZUluZGV4ID09PSAwKSB7CiAgICAgIGNvZGluZ1RlbXBsYXRlID0gY29kaW5nVGVtcGxhdGUuY29uY2F0KFthdFswXV0pOwogICAgfQogICAgdmFyIGNvZGluZ1RlbXBsYXRlTGVuZ3RoID0gY29kaW5nVGVtcGxhdGUubGVuZ3RoOwogICAgdmFyIGNvZGluZ1RlbXBsYXRlWCA9IG5ldyBJbnQzMkFycmF5KGNvZGluZ1RlbXBsYXRlTGVuZ3RoKTsKICAgIHZhciBjb2RpbmdUZW1wbGF0ZVkgPSBuZXcgSW50MzJBcnJheShjb2RpbmdUZW1wbGF0ZUxlbmd0aCk7CiAgICB2YXIgazsKICAgIGZvciAoayA9IDA7IGsgPCBjb2RpbmdUZW1wbGF0ZUxlbmd0aDsgaysrKSB7CiAgICAgIGNvZGluZ1RlbXBsYXRlWFtrXSA9IGNvZGluZ1RlbXBsYXRlW2tdLng7CiAgICAgIGNvZGluZ1RlbXBsYXRlWVtrXSA9IGNvZGluZ1RlbXBsYXRlW2tdLnk7CiAgICB9CgogICAgdmFyIHJlZmVyZW5jZVRlbXBsYXRlID0gUmVmaW5lbWVudFRlbXBsYXRlc1t0ZW1wbGF0ZUluZGV4XS5yZWZlcmVuY2U7CiAgICBpZiAodGVtcGxhdGVJbmRleCA9PT0gMCkgewogICAgICByZWZlcmVuY2VUZW1wbGF0ZSA9IHJlZmVyZW5jZVRlbXBsYXRlLmNvbmNhdChbYXRbMV1dKTsKICAgIH0KICAgIHZhciByZWZlcmVuY2VUZW1wbGF0ZUxlbmd0aCA9IHJlZmVyZW5jZVRlbXBsYXRlLmxlbmd0aDsKICAgIHZhciByZWZlcmVuY2VUZW1wbGF0ZVggPSBuZXcgSW50MzJBcnJheShyZWZlcmVuY2VUZW1wbGF0ZUxlbmd0aCk7CiAgICB2YXIgcmVmZXJlbmNlVGVtcGxhdGVZID0gbmV3IEludDMyQXJyYXkocmVmZXJlbmNlVGVtcGxhdGVMZW5ndGgpOwogICAgZm9yIChrID0gMDsgayA8IHJlZmVyZW5jZVRlbXBsYXRlTGVuZ3RoOyBrKyspIHsKICAgICAgcmVmZXJlbmNlVGVtcGxhdGVYW2tdID0gcmVmZXJlbmNlVGVtcGxhdGVba10ueDsKICAgICAgcmVmZXJlbmNlVGVtcGxhdGVZW2tdID0gcmVmZXJlbmNlVGVtcGxhdGVba10ueTsKICAgIH0KICAgIHZhciByZWZlcmVuY2VXaWR0aCA9IHJlZmVyZW5jZUJpdG1hcFswXS5sZW5ndGg7CiAgICB2YXIgcmVmZXJlbmNlSGVpZ2h0ID0gcmVmZXJlbmNlQml0bWFwLmxlbmd0aDsKCiAgICB2YXIgcHNldWRvUGl4ZWxDb250ZXh0ID0gUmVmaW5lbWVudFJldXNlZENvbnRleHRzW3RlbXBsYXRlSW5kZXhdOwogICAgdmFyIGJpdG1hcCA9IFtdOwoKICAgIHZhciBkZWNvZGVyID0gZGVjb2RpbmdDb250ZXh0LmRlY29kZXI7CiAgICB2YXIgY29udGV4dHMgPSBkZWNvZGluZ0NvbnRleHQuY29udGV4dENhY2hlLmdldENvbnRleHRzKCdHUicpOwoKICAgIHZhciBsdHAgPSAwOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBoZWlnaHQ7IGkrKykgewogICAgICBpZiAocHJlZGljdGlvbikgewogICAgICAgIHZhciBzbHRwID0gZGVjb2Rlci5yZWFkQml0KGNvbnRleHRzLCBwc2V1ZG9QaXhlbENvbnRleHQpOwogICAgICAgIGx0cCBePSBzbHRwOwogICAgICAgIGlmIChsdHApIHsKICAgICAgICAgIGVycm9yKCdKQklHMiBlcnJvcjogcHJlZGljdGlvbiBpcyBub3Qgc3VwcG9ydGVkJyk7CiAgICAgICAgfQogICAgICB9CiAgICAgIHZhciByb3cgPSBuZXcgVWludDhBcnJheSh3aWR0aCk7CiAgICAgIGJpdG1hcC5wdXNoKHJvdyk7CiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgd2lkdGg7IGorKykgewogICAgICAgIHZhciBpMCwgajA7CiAgICAgICAgdmFyIGNvbnRleHRMYWJlbCA9IDA7CiAgICAgICAgZm9yIChrID0gMDsgayA8IGNvZGluZ1RlbXBsYXRlTGVuZ3RoOyBrKyspIHsKICAgICAgICAgIGkwID0gaSArIGNvZGluZ1RlbXBsYXRlWVtrXTsKICAgICAgICAgIGowID0gaiArIGNvZGluZ1RlbXBsYXRlWFtrXTsKICAgICAgICAgIGlmIChpMCA8IDAgfHwgajAgPCAwIHx8IGowID49IHdpZHRoKSB7CiAgICAgICAgICAgIGNvbnRleHRMYWJlbCA8PD0gMTsgLy8gb3V0IG9mIGJvdW5kIHBpeGVsCiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBjb250ZXh0TGFiZWwgPSAoY29udGV4dExhYmVsIDw8IDEpIHwgYml0bWFwW2kwXVtqMF07CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGZvciAoayA9IDA7IGsgPCByZWZlcmVuY2VUZW1wbGF0ZUxlbmd0aDsgaysrKSB7CiAgICAgICAgICBpMCA9IGkgKyByZWZlcmVuY2VUZW1wbGF0ZVlba10gKyBvZmZzZXRZOwogICAgICAgICAgajAgPSBqICsgcmVmZXJlbmNlVGVtcGxhdGVYW2tdICsgb2Zmc2V0WDsKICAgICAgICAgIGlmIChpMCA8IDAgfHwgaTAgPj0gcmVmZXJlbmNlSGVpZ2h0IHx8IGowIDwgMCB8fAogICAgICAgICAgICAgIGowID49IHJlZmVyZW5jZVdpZHRoKSB7CiAgICAgICAgICAgIGNvbnRleHRMYWJlbCA8PD0gMTsgLy8gb3V0IG9mIGJvdW5kIHBpeGVsCiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBjb250ZXh0TGFiZWwgPSAoY29udGV4dExhYmVsIDw8IDEpIHwgcmVmZXJlbmNlQml0bWFwW2kwXVtqMF07CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHZhciBwaXhlbCA9IGRlY29kZXIucmVhZEJpdChjb250ZXh0cywgY29udGV4dExhYmVsKTsKICAgICAgICByb3dbal0gPSBwaXhlbDsKICAgICAgfQogICAgfQoKICAgIHJldHVybiBiaXRtYXA7CiAgfQoKICAvLyA2LjUuNSBEZWNvZGluZyB0aGUgc3ltYm9sIGRpY3Rpb25hcnkKICBmdW5jdGlvbiBkZWNvZGVTeW1ib2xEaWN0aW9uYXJ5KGh1ZmZtYW4sIHJlZmluZW1lbnQsIHN5bWJvbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJPZk5ld1N5bWJvbHMsIG51bWJlck9mRXhwb3J0ZWRTeW1ib2xzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHVmZm1hblRhYmxlcywgdGVtcGxhdGVJbmRleCwgYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZpbmVtZW50VGVtcGxhdGVJbmRleCwgcmVmaW5lbWVudEF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RpbmdDb250ZXh0KSB7CiAgICBpZiAoaHVmZm1hbikgewogICAgICBlcnJvcignSkJJRzIgZXJyb3I6IGh1ZmZtYW4gaXMgbm90IHN1cHBvcnRlZCcpOwogICAgfQoKICAgIHZhciBuZXdTeW1ib2xzID0gW107CiAgICB2YXIgY3VycmVudEhlaWdodCA9IDA7CiAgICB2YXIgc3ltYm9sQ29kZUxlbmd0aCA9IGxvZzIoc3ltYm9scy5sZW5ndGggKyBudW1iZXJPZk5ld1N5bWJvbHMpOwoKICAgIHZhciBkZWNvZGVyID0gZGVjb2RpbmdDb250ZXh0LmRlY29kZXI7CiAgICB2YXIgY29udGV4dENhY2hlID0gZGVjb2RpbmdDb250ZXh0LmNvbnRleHRDYWNoZTsKCiAgICB3aGlsZSAobmV3U3ltYm9scy5sZW5ndGggPCBudW1iZXJPZk5ld1N5bWJvbHMpIHsKICAgICAgdmFyIGRlbHRhSGVpZ2h0ID0gZGVjb2RlSW50ZWdlcihjb250ZXh0Q2FjaGUsICdJQURIJywgZGVjb2Rlcik7IC8vIDYuNS42CiAgICAgIGN1cnJlbnRIZWlnaHQgKz0gZGVsdGFIZWlnaHQ7CiAgICAgIHZhciBjdXJyZW50V2lkdGggPSAwOwogICAgICB2YXIgdG90YWxXaWR0aCA9IDA7CiAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgdmFyIGRlbHRhV2lkdGggPSBkZWNvZGVJbnRlZ2VyKGNvbnRleHRDYWNoZSwgJ0lBRFcnLCBkZWNvZGVyKTsgLy8gNi41LjcKICAgICAgICBpZiAoZGVsdGFXaWR0aCA9PT0gbnVsbCkgewogICAgICAgICAgYnJlYWs7IC8vIE9PQgogICAgICAgIH0KICAgICAgICBjdXJyZW50V2lkdGggKz0gZGVsdGFXaWR0aDsKICAgICAgICB0b3RhbFdpZHRoICs9IGN1cnJlbnRXaWR0aDsKICAgICAgICB2YXIgYml0bWFwOwogICAgICAgIGlmIChyZWZpbmVtZW50KSB7CiAgICAgICAgICAvLyA2LjUuOC4yIFJlZmluZW1lbnQvYWdncmVnYXRlLWNvZGVkIHN5bWJvbCBiaXRtYXAKICAgICAgICAgIHZhciBudW1iZXJPZkluc3RhbmNlcyA9IGRlY29kZUludGVnZXIoY29udGV4dENhY2hlLCAnSUFBSScsIGRlY29kZXIpOwogICAgICAgICAgaWYgKG51bWJlck9mSW5zdGFuY2VzID4gMSkgewogICAgICAgICAgICBiaXRtYXAgPSBkZWNvZGVUZXh0UmVnaW9uKGh1ZmZtYW4sIHJlZmluZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFdpZHRoLCBjdXJyZW50SGVpZ2h0LCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlck9mSW5zdGFuY2VzLCAxLCAvL3N0cmlwIHNpemUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2xzLmNvbmNhdChuZXdTeW1ib2xzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2xDb2RlTGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIC8vdHJhbnNwb3NlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIC8vZHMgb2Zmc2V0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgLy90b3AgbGVmdCA3LjQuMy4xLjEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAvL09SIG9wZXJhdG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHVmZm1hblRhYmxlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZpbmVtZW50VGVtcGxhdGVJbmRleCwgcmVmaW5lbWVudEF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kaW5nQ29udGV4dCk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB2YXIgc3ltYm9sSWQgPSBkZWNvZGVJQUlEKGNvbnRleHRDYWNoZSwgZGVjb2Rlciwgc3ltYm9sQ29kZUxlbmd0aCk7CiAgICAgICAgICAgIHZhciByZHggPSBkZWNvZGVJbnRlZ2VyKGNvbnRleHRDYWNoZSwgJ0lBUkRYJywgZGVjb2Rlcik7IC8vIDYuNC4xMS4zCiAgICAgICAgICAgIHZhciByZHkgPSBkZWNvZGVJbnRlZ2VyKGNvbnRleHRDYWNoZSwgJ0lBUkRZJywgZGVjb2Rlcik7IC8vIDYuNC4xMS40CiAgICAgICAgICAgIHZhciBzeW1ib2wgPSAoc3ltYm9sSWQgPCBzeW1ib2xzLmxlbmd0aCA/IHN5bWJvbHNbc3ltYm9sSWRdIDoKICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdTeW1ib2xzW3N5bWJvbElkIC0gc3ltYm9scy5sZW5ndGhdKTsKICAgICAgICAgICAgYml0bWFwID0gZGVjb2RlUmVmaW5lbWVudChjdXJyZW50V2lkdGgsIGN1cnJlbnRIZWlnaHQsCiAgICAgICAgICAgIHJlZmluZW1lbnRUZW1wbGF0ZUluZGV4LCBzeW1ib2wsIHJkeCwgcmR5LCBmYWxzZSwgcmVmaW5lbWVudEF0LAogICAgICAgICAgICBkZWNvZGluZ0NvbnRleHQpOwogICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAvLyA2LjUuOC4xIERpcmVjdC1jb2RlZCBzeW1ib2wgYml0bWFwCiAgICAgICAgICBiaXRtYXAgPSBkZWNvZGVCaXRtYXAoZmFsc2UsIGN1cnJlbnRXaWR0aCwgY3VycmVudEhlaWdodCwKICAgICAgICAgICAgdGVtcGxhdGVJbmRleCwgZmFsc2UsIG51bGwsIGF0LCBkZWNvZGluZ0NvbnRleHQpOwogICAgICAgIH0KICAgICAgICBuZXdTeW1ib2xzLnB1c2goYml0bWFwKTsKICAgICAgfQogICAgfQogICAgLy8gNi41LjEwIEV4cG9ydGVkIHN5bWJvbHMKICAgIHZhciBleHBvcnRlZFN5bWJvbHMgPSBbXTsKICAgIHZhciBmbGFncyA9IFtdLCBjdXJyZW50RmxhZyA9IGZhbHNlOwogICAgdmFyIHRvdGFsU3ltYm9sc0xlbmd0aCA9IHN5bWJvbHMubGVuZ3RoICsgbnVtYmVyT2ZOZXdTeW1ib2xzOwogICAgd2hpbGUgKGZsYWdzLmxlbmd0aCA8IHRvdGFsU3ltYm9sc0xlbmd0aCkgewogICAgICB2YXIgcnVuTGVuZ3RoID0gZGVjb2RlSW50ZWdlcihjb250ZXh0Q2FjaGUsICdJQUVYJywgZGVjb2Rlcik7CiAgICAgIHdoaWxlIChydW5MZW5ndGgtLSkgewogICAgICAgIGZsYWdzLnB1c2goY3VycmVudEZsYWcpOwogICAgICB9CiAgICAgIGN1cnJlbnRGbGFnID0gIWN1cnJlbnRGbGFnOwogICAgfQogICAgZm9yICh2YXIgaSA9IDAsIGlpID0gc3ltYm9scy5sZW5ndGg7IGkgPCBpaTsgaSsrKSB7CiAgICAgIGlmIChmbGFnc1tpXSkgewogICAgICAgIGV4cG9ydGVkU3ltYm9scy5wdXNoKHN5bWJvbHNbaV0pOwogICAgICB9CiAgICB9CiAgICBmb3IgKHZhciBqID0gMDsgaiA8IG51bWJlck9mTmV3U3ltYm9sczsgaSsrLCBqKyspIHsKICAgICAgaWYgKGZsYWdzW2ldKSB7CiAgICAgICAgZXhwb3J0ZWRTeW1ib2xzLnB1c2gobmV3U3ltYm9sc1tqXSk7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBleHBvcnRlZFN5bWJvbHM7CiAgfQoKICBmdW5jdGlvbiBkZWNvZGVUZXh0UmVnaW9uKGh1ZmZtYW4sIHJlZmluZW1lbnQsIHdpZHRoLCBoZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0UGl4ZWxWYWx1ZSwgbnVtYmVyT2ZTeW1ib2xJbnN0YW5jZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpcFNpemUsIGlucHV0U3ltYm9scywgc3ltYm9sQ29kZUxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9zZWQsIGRzT2Zmc2V0LCByZWZlcmVuY2VDb3JuZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21iaW5hdGlvbk9wZXJhdG9yLCBodWZmbWFuVGFibGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmaW5lbWVudFRlbXBsYXRlSW5kZXgsIHJlZmluZW1lbnRBdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kaW5nQ29udGV4dCkgewogICAgaWYgKGh1ZmZtYW4pIHsKICAgICAgZXJyb3IoJ0pCSUcyIGVycm9yOiBodWZmbWFuIGlzIG5vdCBzdXBwb3J0ZWQnKTsKICAgIH0KCiAgICAvLyBQcmVwYXJlIGJpdG1hcAogICAgdmFyIGJpdG1hcCA9IFtdOwogICAgdmFyIGksIHJvdzsKICAgIGZvciAoaSA9IDA7IGkgPCBoZWlnaHQ7IGkrKykgewogICAgICByb3cgPSBuZXcgVWludDhBcnJheSh3aWR0aCk7CiAgICAgIGlmIChkZWZhdWx0UGl4ZWxWYWx1ZSkgewogICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgd2lkdGg7IGorKykgewogICAgICAgICAgcm93W2pdID0gZGVmYXVsdFBpeGVsVmFsdWU7CiAgICAgICAgfQogICAgICB9CiAgICAgIGJpdG1hcC5wdXNoKHJvdyk7CiAgICB9CgogICAgdmFyIGRlY29kZXIgPSBkZWNvZGluZ0NvbnRleHQuZGVjb2RlcjsKICAgIHZhciBjb250ZXh0Q2FjaGUgPSBkZWNvZGluZ0NvbnRleHQuY29udGV4dENhY2hlOwogICAgdmFyIHN0cmlwVCA9IC1kZWNvZGVJbnRlZ2VyKGNvbnRleHRDYWNoZSwgJ0lBRFQnLCBkZWNvZGVyKTsgLy8gNi40LjYKICAgIHZhciBmaXJzdFMgPSAwOwogICAgaSA9IDA7CiAgICB3aGlsZSAoaSA8IG51bWJlck9mU3ltYm9sSW5zdGFuY2VzKSB7CiAgICAgIHZhciBkZWx0YVQgPSBkZWNvZGVJbnRlZ2VyKGNvbnRleHRDYWNoZSwgJ0lBRFQnLCBkZWNvZGVyKTsgLy8gNi40LjYKICAgICAgc3RyaXBUICs9IGRlbHRhVDsKCiAgICAgIHZhciBkZWx0YUZpcnN0UyA9IGRlY29kZUludGVnZXIoY29udGV4dENhY2hlLCAnSUFGUycsIGRlY29kZXIpOyAvLyA2LjQuNwogICAgICBmaXJzdFMgKz0gZGVsdGFGaXJzdFM7CiAgICAgIHZhciBjdXJyZW50UyA9IGZpcnN0UzsKICAgICAgZG8gewogICAgICAgIHZhciBjdXJyZW50VCA9IChzdHJpcFNpemUgPT09IDEgPyAwIDoKICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlSW50ZWdlcihjb250ZXh0Q2FjaGUsICdJQUlUJywgZGVjb2RlcikpOyAvLyA2LjQuOQogICAgICAgIHZhciB0ID0gc3RyaXBTaXplICogc3RyaXBUICsgY3VycmVudFQ7CiAgICAgICAgdmFyIHN5bWJvbElkID0gZGVjb2RlSUFJRChjb250ZXh0Q2FjaGUsIGRlY29kZXIsIHN5bWJvbENvZGVMZW5ndGgpOwogICAgICAgIHZhciBhcHBseVJlZmluZW1lbnQgPSAocmVmaW5lbWVudCAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlSW50ZWdlcihjb250ZXh0Q2FjaGUsICdJQVJJJywgZGVjb2RlcikpOwogICAgICAgIHZhciBzeW1ib2xCaXRtYXAgPSBpbnB1dFN5bWJvbHNbc3ltYm9sSWRdOwogICAgICAgIHZhciBzeW1ib2xXaWR0aCA9IHN5bWJvbEJpdG1hcFswXS5sZW5ndGg7CiAgICAgICAgdmFyIHN5bWJvbEhlaWdodCA9IHN5bWJvbEJpdG1hcC5sZW5ndGg7CiAgICAgICAgaWYgKGFwcGx5UmVmaW5lbWVudCkgewogICAgICAgICAgdmFyIHJkdyA9IGRlY29kZUludGVnZXIoY29udGV4dENhY2hlLCAnSUFSRFcnLCBkZWNvZGVyKTsgLy8gNi40LjExLjEKICAgICAgICAgIHZhciByZGggPSBkZWNvZGVJbnRlZ2VyKGNvbnRleHRDYWNoZSwgJ0lBUkRIJywgZGVjb2Rlcik7IC8vIDYuNC4xMS4yCiAgICAgICAgICB2YXIgcmR4ID0gZGVjb2RlSW50ZWdlcihjb250ZXh0Q2FjaGUsICdJQVJEWCcsIGRlY29kZXIpOyAvLyA2LjQuMTEuMwogICAgICAgICAgdmFyIHJkeSA9IGRlY29kZUludGVnZXIoY29udGV4dENhY2hlLCAnSUFSRFknLCBkZWNvZGVyKTsgLy8gNi40LjExLjQKICAgICAgICAgIHN5bWJvbFdpZHRoICs9IHJkdzsKICAgICAgICAgIHN5bWJvbEhlaWdodCArPSByZGg7CiAgICAgICAgICBzeW1ib2xCaXRtYXAgPSBkZWNvZGVSZWZpbmVtZW50KHN5bWJvbFdpZHRoLCBzeW1ib2xIZWlnaHQsCiAgICAgICAgICAgIHJlZmluZW1lbnRUZW1wbGF0ZUluZGV4LCBzeW1ib2xCaXRtYXAsIChyZHcgPj4gMSkgKyByZHgsCiAgICAgICAgICAgIChyZGggPj4gMSkgKyByZHksIGZhbHNlLCByZWZpbmVtZW50QXQsCiAgICAgICAgICAgIGRlY29kaW5nQ29udGV4dCk7CiAgICAgICAgfQogICAgICAgIHZhciBvZmZzZXRUID0gdCAtICgocmVmZXJlbmNlQ29ybmVyICYgMSkgPyAwIDogc3ltYm9sSGVpZ2h0KTsKICAgICAgICB2YXIgb2Zmc2V0UyA9IGN1cnJlbnRTIC0gKChyZWZlcmVuY2VDb3JuZXIgJiAyKSA/IHN5bWJvbFdpZHRoIDogMCk7CiAgICAgICAgdmFyIHMyLCB0Miwgc3ltYm9sUm93OwogICAgICAgIGlmICh0cmFuc3Bvc2VkKSB7CiAgICAgICAgICAvLyBQbGFjZSBTeW1ib2wgQml0bWFwIGZyb20gVDEsUzEKICAgICAgICAgIGZvciAoczIgPSAwOyBzMiA8IHN5bWJvbEhlaWdodDsgczIrKykgewogICAgICAgICAgICByb3cgPSBiaXRtYXBbb2Zmc2V0UyArIHMyXTsKICAgICAgICAgICAgaWYgKCFyb3cpIHsKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBzeW1ib2xSb3cgPSBzeW1ib2xCaXRtYXBbczJdOwogICAgICAgICAgICAvLyBUbyBpZ25vcmUgUGFydHMgb2YgU3ltYm9sIGJpdG1hcCB3aGljaCBnb2VzCiAgICAgICAgICAgIC8vIG91dHNpZGUgYml0bWFwIHJlZ2lvbgogICAgICAgICAgICB2YXIgbWF4V2lkdGggPSBNYXRoLm1pbih3aWR0aCAtIG9mZnNldFQsIHN5bWJvbFdpZHRoKTsKICAgICAgICAgICAgc3dpdGNoIChjb21iaW5hdGlvbk9wZXJhdG9yKSB7CiAgICAgICAgICAgICAgY2FzZSAwOiAvLyBPUgogICAgICAgICAgICAgICAgZm9yICh0MiA9IDA7IHQyIDwgbWF4V2lkdGg7IHQyKyspIHsKICAgICAgICAgICAgICAgICAgcm93W29mZnNldFQgKyB0Ml0gfD0gc3ltYm9sUm93W3QyXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIGNhc2UgMjogLy8gWE9SCiAgICAgICAgICAgICAgICBmb3IgKHQyID0gMDsgdDIgPCBtYXhXaWR0aDsgdDIrKykgewogICAgICAgICAgICAgICAgICByb3dbb2Zmc2V0VCArIHQyXSBePSBzeW1ib2xSb3dbdDJdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIGVycm9yKCdKQklHMiBlcnJvcjogb3BlcmF0b3IgJyArIGNvbWJpbmF0aW9uT3BlcmF0b3IgKwogICAgICAgICAgICAgICAgICAgICAgJyBpcyBub3Qgc3VwcG9ydGVkJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGN1cnJlbnRTICs9IHN5bWJvbEhlaWdodCAtIDE7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGZvciAodDIgPSAwOyB0MiA8IHN5bWJvbEhlaWdodDsgdDIrKykgewogICAgICAgICAgICByb3cgPSBiaXRtYXBbb2Zmc2V0VCArIHQyXTsKICAgICAgICAgICAgaWYgKCFyb3cpIHsKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBzeW1ib2xSb3cgPSBzeW1ib2xCaXRtYXBbdDJdOwogICAgICAgICAgICBzd2l0Y2ggKGNvbWJpbmF0aW9uT3BlcmF0b3IpIHsKICAgICAgICAgICAgICBjYXNlIDA6IC8vIE9SCiAgICAgICAgICAgICAgICBmb3IgKHMyID0gMDsgczIgPCBzeW1ib2xXaWR0aDsgczIrKykgewogICAgICAgICAgICAgICAgICByb3dbb2Zmc2V0UyArIHMyXSB8PSBzeW1ib2xSb3dbczJdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgY2FzZSAyOiAvLyBYT1IKICAgICAgICAgICAgICAgIGZvciAoczIgPSAwOyBzMiA8IHN5bWJvbFdpZHRoOyBzMisrKSB7CiAgICAgICAgICAgICAgICAgIHJvd1tvZmZzZXRTICsgczJdIF49IHN5bWJvbFJvd1tzMl07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgZXJyb3IoJ0pCSUcyIGVycm9yOiBvcGVyYXRvciAnICsgY29tYmluYXRpb25PcGVyYXRvciArCiAgICAgICAgICAgICAgICAgICAgICAnIGlzIG5vdCBzdXBwb3J0ZWQnKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgY3VycmVudFMgKz0gc3ltYm9sV2lkdGggLSAxOwogICAgICAgIH0KICAgICAgICBpKys7CiAgICAgICAgdmFyIGRlbHRhUyA9IGRlY29kZUludGVnZXIoY29udGV4dENhY2hlLCAnSUFEUycsIGRlY29kZXIpOyAvLyA2LjQuOAogICAgICAgIGlmIChkZWx0YVMgPT09IG51bGwpIHsKICAgICAgICAgIGJyZWFrOyAvLyBPT0IKICAgICAgICB9CiAgICAgICAgY3VycmVudFMgKz0gZGVsdGFTICsgZHNPZmZzZXQ7CiAgICAgIH0gd2hpbGUgKHRydWUpOwogICAgfQogICAgcmV0dXJuIGJpdG1hcDsKICB9CgogIGZ1bmN0aW9uIHJlYWRTZWdtZW50SGVhZGVyKGRhdGEsIHN0YXJ0KSB7CiAgICB2YXIgc2VnbWVudEhlYWRlciA9IHt9OwogICAgc2VnbWVudEhlYWRlci5udW1iZXIgPSByZWFkVWludDMyKGRhdGEsIHN0YXJ0KTsKICAgIHZhciBmbGFncyA9IGRhdGFbc3RhcnQgKyA0XTsKICAgIHZhciBzZWdtZW50VHlwZSA9IGZsYWdzICYgMHgzRjsKICAgIGlmICghU2VnbWVudFR5cGVzW3NlZ21lbnRUeXBlXSkgewogICAgICBlcnJvcignSkJJRzIgZXJyb3I6IGludmFsaWQgc2VnbWVudCB0eXBlOiAnICsgc2VnbWVudFR5cGUpOwogICAgfQogICAgc2VnbWVudEhlYWRlci50eXBlID0gc2VnbWVudFR5cGU7CiAgICBzZWdtZW50SGVhZGVyLnR5cGVOYW1lID0gU2VnbWVudFR5cGVzW3NlZ21lbnRUeXBlXTsKICAgIHNlZ21lbnRIZWFkZXIuZGVmZXJyZWROb25SZXRhaW4gPSAhIShmbGFncyAmIDB4ODApOwoKICAgIHZhciBwYWdlQXNzb2NpYXRpb25GaWVsZFNpemUgPSAhIShmbGFncyAmIDB4NDApOwogICAgdmFyIHJlZmVycmVkRmxhZ3MgPSBkYXRhW3N0YXJ0ICsgNV07CiAgICB2YXIgcmVmZXJyZWRUb0NvdW50ID0gKHJlZmVycmVkRmxhZ3MgPj4gNSkgJiA3OwogICAgdmFyIHJldGFpbkJpdHMgPSBbcmVmZXJyZWRGbGFncyAmIDMxXTsKICAgIHZhciBwb3NpdGlvbiA9IHN0YXJ0ICsgNjsKICAgIGlmIChyZWZlcnJlZEZsYWdzID09PSA3KSB7CiAgICAgIHJlZmVycmVkVG9Db3VudCA9IHJlYWRVaW50MzIoZGF0YSwgcG9zaXRpb24gLSAxKSAmIDB4MUZGRkZGRkY7CiAgICAgIHBvc2l0aW9uICs9IDM7CiAgICAgIHZhciBieXRlcyA9IChyZWZlcnJlZFRvQ291bnQgKyA3KSA+PiAzOwogICAgICByZXRhaW5CaXRzWzBdID0gZGF0YVtwb3NpdGlvbisrXTsKICAgICAgd2hpbGUgKC0tYnl0ZXMgPiAwKSB7CiAgICAgICAgcmV0YWluQml0cy5wdXNoKGRhdGFbcG9zaXRpb24rK10pOwogICAgICB9CiAgICB9IGVsc2UgaWYgKHJlZmVycmVkRmxhZ3MgPT09IDUgfHwgcmVmZXJyZWRGbGFncyA9PT0gNikgewogICAgICBlcnJvcignSkJJRzIgZXJyb3I6IGludmFsaWQgcmVmZXJyZWQtdG8gZmxhZ3MnKTsKICAgIH0KCiAgICBzZWdtZW50SGVhZGVyLnJldGFpbkJpdHMgPSByZXRhaW5CaXRzOwogICAgdmFyIHJlZmVycmVkVG9TZWdtZW50TnVtYmVyU2l6ZSA9IChzZWdtZW50SGVhZGVyLm51bWJlciA8PSAyNTYgPyAxIDoKICAgICAgKHNlZ21lbnRIZWFkZXIubnVtYmVyIDw9IDY1NTM2ID8gMiA6IDQpKTsKICAgIHZhciByZWZlcnJlZFRvID0gW107CiAgICB2YXIgaSwgaWk7CiAgICBmb3IgKGkgPSAwOyBpIDwgcmVmZXJyZWRUb0NvdW50OyBpKyspIHsKICAgICAgdmFyIG51bWJlciA9IChyZWZlcnJlZFRvU2VnbWVudE51bWJlclNpemUgPT09IDEgPyBkYXRhW3Bvc2l0aW9uXSA6CiAgICAgICAgKHJlZmVycmVkVG9TZWdtZW50TnVtYmVyU2l6ZSA9PT0gMiA/IHJlYWRVaW50MTYoZGF0YSwgcG9zaXRpb24pIDoKICAgICAgICByZWFkVWludDMyKGRhdGEsIHBvc2l0aW9uKSkpOwogICAgICByZWZlcnJlZFRvLnB1c2gobnVtYmVyKTsKICAgICAgcG9zaXRpb24gKz0gcmVmZXJyZWRUb1NlZ21lbnROdW1iZXJTaXplOwogICAgfQogICAgc2VnbWVudEhlYWRlci5yZWZlcnJlZFRvID0gcmVmZXJyZWRUbzsKICAgIGlmICghcGFnZUFzc29jaWF0aW9uRmllbGRTaXplKSB7CiAgICAgIHNlZ21lbnRIZWFkZXIucGFnZUFzc29jaWF0aW9uID0gZGF0YVtwb3NpdGlvbisrXTsKICAgIH0gZWxzZSB7CiAgICAgIHNlZ21lbnRIZWFkZXIucGFnZUFzc29jaWF0aW9uID0gcmVhZFVpbnQzMihkYXRhLCBwb3NpdGlvbik7CiAgICAgIHBvc2l0aW9uICs9IDQ7CiAgICB9CiAgICBzZWdtZW50SGVhZGVyLmxlbmd0aCA9IHJlYWRVaW50MzIoZGF0YSwgcG9zaXRpb24pOwogICAgcG9zaXRpb24gKz0gNDsKCiAgICBpZiAoc2VnbWVudEhlYWRlci5sZW5ndGggPT09IDB4RkZGRkZGRkYpIHsKICAgICAgLy8gNy4yLjcgU2VnbWVudCBkYXRhIGxlbmd0aCwgdW5rbm93biBzZWdtZW50IGxlbmd0aAogICAgICBpZiAoc2VnbWVudFR5cGUgPT09IDM4KSB7IC8vIEltbWVkaWF0ZUdlbmVyaWNSZWdpb24KICAgICAgICB2YXIgZ2VuZXJpY1JlZ2lvbkluZm8gPSByZWFkUmVnaW9uU2VnbWVudEluZm9ybWF0aW9uKGRhdGEsIHBvc2l0aW9uKTsKICAgICAgICB2YXIgZ2VuZXJpY1JlZ2lvblNlZ21lbnRGbGFncyA9IGRhdGFbcG9zaXRpb24gKwogICAgICAgICAgUmVnaW9uU2VnbWVudEluZm9ybWF0aW9uRmllbGRMZW5ndGhdOwogICAgICAgIHZhciBnZW5lcmljUmVnaW9uTW1yID0gISEoZ2VuZXJpY1JlZ2lvblNlZ21lbnRGbGFncyAmIDEpOwogICAgICAgIC8vIHNlYXJjaGluZyBmb3IgdGhlIHNlZ21lbnQgZW5kCiAgICAgICAgdmFyIHNlYXJjaFBhdHRlcm5MZW5ndGggPSA2OwogICAgICAgIHZhciBzZWFyY2hQYXR0ZXJuID0gbmV3IFVpbnQ4QXJyYXkoc2VhcmNoUGF0dGVybkxlbmd0aCk7CiAgICAgICAgaWYgKCFnZW5lcmljUmVnaW9uTW1yKSB7CiAgICAgICAgICBzZWFyY2hQYXR0ZXJuWzBdID0gMHhGRjsKICAgICAgICAgIHNlYXJjaFBhdHRlcm5bMV0gPSAweEFDOwogICAgICAgIH0KICAgICAgICBzZWFyY2hQYXR0ZXJuWzJdID0gKGdlbmVyaWNSZWdpb25JbmZvLmhlaWdodCA+Pj4gMjQpICYgMHhGRjsKICAgICAgICBzZWFyY2hQYXR0ZXJuWzNdID0gKGdlbmVyaWNSZWdpb25JbmZvLmhlaWdodCA+PiAxNikgJiAweEZGOwogICAgICAgIHNlYXJjaFBhdHRlcm5bNF0gPSAoZ2VuZXJpY1JlZ2lvbkluZm8uaGVpZ2h0ID4+IDgpICYgMHhGRjsKICAgICAgICBzZWFyY2hQYXR0ZXJuWzVdID0gZ2VuZXJpY1JlZ2lvbkluZm8uaGVpZ2h0ICYgMHhGRjsKICAgICAgICBmb3IgKGkgPSBwb3NpdGlvbiwgaWkgPSBkYXRhLmxlbmd0aDsgaSA8IGlpOyBpKyspIHsKICAgICAgICAgIHZhciBqID0gMDsKICAgICAgICAgIHdoaWxlIChqIDwgc2VhcmNoUGF0dGVybkxlbmd0aCAmJiBzZWFyY2hQYXR0ZXJuW2pdID09PSBkYXRhW2kgKyBqXSkgewogICAgICAgICAgICBqKys7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoaiA9PT0gc2VhcmNoUGF0dGVybkxlbmd0aCkgewogICAgICAgICAgICBzZWdtZW50SGVhZGVyLmxlbmd0aCA9IGkgKyBzZWFyY2hQYXR0ZXJuTGVuZ3RoOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKHNlZ21lbnRIZWFkZXIubGVuZ3RoID09PSAweEZGRkZGRkZGKSB7CiAgICAgICAgICBlcnJvcignSkJJRzIgZXJyb3I6IHNlZ21lbnQgZW5kIHdhcyBub3QgZm91bmQnKTsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZXJyb3IoJ0pCSUcyIGVycm9yOiBpbnZhbGlkIHVua25vd24gc2VnbWVudCBsZW5ndGgnKTsKICAgICAgfQogICAgfQogICAgc2VnbWVudEhlYWRlci5oZWFkZXJFbmQgPSBwb3NpdGlvbjsKICAgIHJldHVybiBzZWdtZW50SGVhZGVyOwogIH0KCiAgZnVuY3Rpb24gcmVhZFNlZ21lbnRzKGhlYWRlciwgZGF0YSwgc3RhcnQsIGVuZCkgewogICAgdmFyIHNlZ21lbnRzID0gW107CiAgICB2YXIgcG9zaXRpb24gPSBzdGFydDsKICAgIHdoaWxlIChwb3NpdGlvbiA8IGVuZCkgewogICAgICB2YXIgc2VnbWVudEhlYWRlciA9IHJlYWRTZWdtZW50SGVhZGVyKGRhdGEsIHBvc2l0aW9uKTsKICAgICAgcG9zaXRpb24gPSBzZWdtZW50SGVhZGVyLmhlYWRlckVuZDsKICAgICAgdmFyIHNlZ21lbnQgPSB7CiAgICAgICAgaGVhZGVyOiBzZWdtZW50SGVhZGVyLAogICAgICAgIGRhdGE6IGRhdGEKICAgICAgfTsKICAgICAgaWYgKCFoZWFkZXIucmFuZG9tQWNjZXNzKSB7CiAgICAgICAgc2VnbWVudC5zdGFydCA9IHBvc2l0aW9uOwogICAgICAgIHBvc2l0aW9uICs9IHNlZ21lbnRIZWFkZXIubGVuZ3RoOwogICAgICAgIHNlZ21lbnQuZW5kID0gcG9zaXRpb247CiAgICAgIH0KICAgICAgc2VnbWVudHMucHVzaChzZWdtZW50KTsKICAgICAgaWYgKHNlZ21lbnRIZWFkZXIudHlwZSA9PT0gNTEpIHsKICAgICAgICBicmVhazsgLy8gZW5kIG9mIGZpbGUgaXMgZm91bmQKICAgICAgfQogICAgfQogICAgaWYgKGhlYWRlci5yYW5kb21BY2Nlc3MpIHsKICAgICAgZm9yICh2YXIgaSA9IDAsIGlpID0gc2VnbWVudHMubGVuZ3RoOyBpIDwgaWk7IGkrKykgewogICAgICAgIHNlZ21lbnRzW2ldLnN0YXJ0ID0gcG9zaXRpb247CiAgICAgICAgcG9zaXRpb24gKz0gc2VnbWVudHNbaV0uaGVhZGVyLmxlbmd0aDsKICAgICAgICBzZWdtZW50c1tpXS5lbmQgPSBwb3NpdGlvbjsKICAgICAgfQogICAgfQogICAgcmV0dXJuIHNlZ21lbnRzOwogIH0KCiAgLy8gNy40LjEgUmVnaW9uIHNlZ21lbnQgaW5mb3JtYXRpb24gZmllbGQKICBmdW5jdGlvbiByZWFkUmVnaW9uU2VnbWVudEluZm9ybWF0aW9uKGRhdGEsIHN0YXJ0KSB7CiAgICByZXR1cm4gewogICAgICB3aWR0aDogcmVhZFVpbnQzMihkYXRhLCBzdGFydCksCiAgICAgIGhlaWdodDogcmVhZFVpbnQzMihkYXRhLCBzdGFydCArIDQpLAogICAgICB4OiByZWFkVWludDMyKGRhdGEsIHN0YXJ0ICsgOCksCiAgICAgIHk6IHJlYWRVaW50MzIoZGF0YSwgc3RhcnQgKyAxMiksCiAgICAgIGNvbWJpbmF0aW9uT3BlcmF0b3I6IGRhdGFbc3RhcnQgKyAxNl0gJiA3CiAgICB9OwogIH0KICB2YXIgUmVnaW9uU2VnbWVudEluZm9ybWF0aW9uRmllbGRMZW5ndGggPSAxNzsKCiAgZnVuY3Rpb24gcHJvY2Vzc1NlZ21lbnQoc2VnbWVudCwgdmlzaXRvcikgewogICAgdmFyIGhlYWRlciA9IHNlZ21lbnQuaGVhZGVyOwoKICAgIHZhciBkYXRhID0gc2VnbWVudC5kYXRhLCBwb3NpdGlvbiA9IHNlZ21lbnQuc3RhcnQsIGVuZCA9IHNlZ21lbnQuZW5kOwogICAgdmFyIGFyZ3MsIGF0LCBpLCBhdExlbmd0aDsKICAgIHN3aXRjaCAoaGVhZGVyLnR5cGUpIHsKICAgICAgY2FzZSAwOiAvLyBTeW1ib2xEaWN0aW9uYXJ5CiAgICAgICAgLy8gNy40LjIgU3ltYm9sIGRpY3Rpb25hcnkgc2VnbWVudCBzeW50YXgKICAgICAgICB2YXIgZGljdGlvbmFyeSA9IHt9OwogICAgICAgIHZhciBkaWN0aW9uYXJ5RmxhZ3MgPSByZWFkVWludDE2KGRhdGEsIHBvc2l0aW9uKTsgLy8gNy40LjIuMS4xCiAgICAgICAgZGljdGlvbmFyeS5odWZmbWFuID0gISEoZGljdGlvbmFyeUZsYWdzICYgMSk7CiAgICAgICAgZGljdGlvbmFyeS5yZWZpbmVtZW50ID0gISEoZGljdGlvbmFyeUZsYWdzICYgMik7CiAgICAgICAgZGljdGlvbmFyeS5odWZmbWFuREhTZWxlY3RvciA9IChkaWN0aW9uYXJ5RmxhZ3MgPj4gMikgJiAzOwogICAgICAgIGRpY3Rpb25hcnkuaHVmZm1hbkRXU2VsZWN0b3IgPSAoZGljdGlvbmFyeUZsYWdzID4+IDQpICYgMzsKICAgICAgICBkaWN0aW9uYXJ5LmJpdG1hcFNpemVTZWxlY3RvciA9IChkaWN0aW9uYXJ5RmxhZ3MgPj4gNikgJiAxOwogICAgICAgIGRpY3Rpb25hcnkuYWdncmVnYXRpb25JbnN0YW5jZXNTZWxlY3RvciA9IChkaWN0aW9uYXJ5RmxhZ3MgPj4gNykgJiAxOwogICAgICAgIGRpY3Rpb25hcnkuYml0bWFwQ29kaW5nQ29udGV4dFVzZWQgPSAhIShkaWN0aW9uYXJ5RmxhZ3MgJiAyNTYpOwogICAgICAgIGRpY3Rpb25hcnkuYml0bWFwQ29kaW5nQ29udGV4dFJldGFpbmVkID0gISEoZGljdGlvbmFyeUZsYWdzICYgNTEyKTsKICAgICAgICBkaWN0aW9uYXJ5LnRlbXBsYXRlID0gKGRpY3Rpb25hcnlGbGFncyA+PiAxMCkgJiAzOwogICAgICAgIGRpY3Rpb25hcnkucmVmaW5lbWVudFRlbXBsYXRlID0gKGRpY3Rpb25hcnlGbGFncyA+PiAxMikgJiAxOwogICAgICAgIHBvc2l0aW9uICs9IDI7CiAgICAgICAgaWYgKCFkaWN0aW9uYXJ5Lmh1ZmZtYW4pIHsKICAgICAgICAgIGF0TGVuZ3RoID0gZGljdGlvbmFyeS50ZW1wbGF0ZSA9PT0gMCA/IDQgOiAxOwogICAgICAgICAgYXQgPSBbXTsKICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBhdExlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGF0LnB1c2goewogICAgICAgICAgICAgIHg6IHJlYWRJbnQ4KGRhdGEsIHBvc2l0aW9uKSwKICAgICAgICAgICAgICB5OiByZWFkSW50OChkYXRhLCBwb3NpdGlvbiArIDEpCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBwb3NpdGlvbiArPSAyOwogICAgICAgICAgfQogICAgICAgICAgZGljdGlvbmFyeS5hdCA9IGF0OwogICAgICAgIH0KICAgICAgICBpZiAoZGljdGlvbmFyeS5yZWZpbmVtZW50ICYmICFkaWN0aW9uYXJ5LnJlZmluZW1lbnRUZW1wbGF0ZSkgewogICAgICAgICAgYXQgPSBbXTsKICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAyOyBpKyspIHsKICAgICAgICAgICAgYXQucHVzaCh7CiAgICAgICAgICAgICAgeDogcmVhZEludDgoZGF0YSwgcG9zaXRpb24pLAogICAgICAgICAgICAgIHk6IHJlYWRJbnQ4KGRhdGEsIHBvc2l0aW9uICsgMSkKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHBvc2l0aW9uICs9IDI7CiAgICAgICAgICB9CiAgICAgICAgICBkaWN0aW9uYXJ5LnJlZmluZW1lbnRBdCA9IGF0OwogICAgICAgIH0KICAgICAgICBkaWN0aW9uYXJ5Lm51bWJlck9mRXhwb3J0ZWRTeW1ib2xzID0gcmVhZFVpbnQzMihkYXRhLCBwb3NpdGlvbik7CiAgICAgICAgcG9zaXRpb24gKz0gNDsKICAgICAgICBkaWN0aW9uYXJ5Lm51bWJlck9mTmV3U3ltYm9scyA9IHJlYWRVaW50MzIoZGF0YSwgcG9zaXRpb24pOwogICAgICAgIHBvc2l0aW9uICs9IDQ7CiAgICAgICAgYXJncyA9IFtkaWN0aW9uYXJ5LCBoZWFkZXIubnVtYmVyLCBoZWFkZXIucmVmZXJyZWRUbywKICAgICAgICAgICAgICAgIGRhdGEsIHBvc2l0aW9uLCBlbmRdOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlIDY6IC8vIEltbWVkaWF0ZVRleHRSZWdpb24KICAgICAgY2FzZSA3OiAvLyBJbW1lZGlhdGVMb3NzbGVzc1RleHRSZWdpb24KICAgICAgICB2YXIgdGV4dFJlZ2lvbiA9IHt9OwogICAgICAgIHRleHRSZWdpb24uaW5mbyA9IHJlYWRSZWdpb25TZWdtZW50SW5mb3JtYXRpb24oZGF0YSwgcG9zaXRpb24pOwogICAgICAgIHBvc2l0aW9uICs9IFJlZ2lvblNlZ21lbnRJbmZvcm1hdGlvbkZpZWxkTGVuZ3RoOwogICAgICAgIHZhciB0ZXh0UmVnaW9uU2VnbWVudEZsYWdzID0gcmVhZFVpbnQxNihkYXRhLCBwb3NpdGlvbik7CiAgICAgICAgcG9zaXRpb24gKz0gMjsKICAgICAgICB0ZXh0UmVnaW9uLmh1ZmZtYW4gPSAhISh0ZXh0UmVnaW9uU2VnbWVudEZsYWdzICYgMSk7CiAgICAgICAgdGV4dFJlZ2lvbi5yZWZpbmVtZW50ID0gISEodGV4dFJlZ2lvblNlZ21lbnRGbGFncyAmIDIpOwogICAgICAgIHRleHRSZWdpb24uc3RyaXBTaXplID0gMSA8PCAoKHRleHRSZWdpb25TZWdtZW50RmxhZ3MgPj4gMikgJiAzKTsKICAgICAgICB0ZXh0UmVnaW9uLnJlZmVyZW5jZUNvcm5lciA9ICh0ZXh0UmVnaW9uU2VnbWVudEZsYWdzID4+IDQpICYgMzsKICAgICAgICB0ZXh0UmVnaW9uLnRyYW5zcG9zZWQgPSAhISh0ZXh0UmVnaW9uU2VnbWVudEZsYWdzICYgNjQpOwogICAgICAgIHRleHRSZWdpb24uY29tYmluYXRpb25PcGVyYXRvciA9ICh0ZXh0UmVnaW9uU2VnbWVudEZsYWdzID4+IDcpICYgMzsKICAgICAgICB0ZXh0UmVnaW9uLmRlZmF1bHRQaXhlbFZhbHVlID0gKHRleHRSZWdpb25TZWdtZW50RmxhZ3MgPj4gOSkgJiAxOwogICAgICAgIHRleHRSZWdpb24uZHNPZmZzZXQgPSAodGV4dFJlZ2lvblNlZ21lbnRGbGFncyA8PCAxNykgPj4gMjc7CiAgICAgICAgdGV4dFJlZ2lvbi5yZWZpbmVtZW50VGVtcGxhdGUgPSAodGV4dFJlZ2lvblNlZ21lbnRGbGFncyA+PiAxNSkgJiAxOwogICAgICAgIGlmICh0ZXh0UmVnaW9uLmh1ZmZtYW4pIHsKICAgICAgICAgIHZhciB0ZXh0UmVnaW9uSHVmZm1hbkZsYWdzID0gcmVhZFVpbnQxNihkYXRhLCBwb3NpdGlvbik7CiAgICAgICAgICBwb3NpdGlvbiArPSAyOwogICAgICAgICAgdGV4dFJlZ2lvbi5odWZmbWFuRlMgPSAodGV4dFJlZ2lvbkh1ZmZtYW5GbGFncykgJiAzOwogICAgICAgICAgdGV4dFJlZ2lvbi5odWZmbWFuRFMgPSAodGV4dFJlZ2lvbkh1ZmZtYW5GbGFncyA+PiAyKSAmIDM7CiAgICAgICAgICB0ZXh0UmVnaW9uLmh1ZmZtYW5EVCA9ICh0ZXh0UmVnaW9uSHVmZm1hbkZsYWdzID4+IDQpICYgMzsKICAgICAgICAgIHRleHRSZWdpb24uaHVmZm1hblJlZmluZW1lbnREVyA9ICh0ZXh0UmVnaW9uSHVmZm1hbkZsYWdzID4+IDYpICYgMzsKICAgICAgICAgIHRleHRSZWdpb24uaHVmZm1hblJlZmluZW1lbnRESCA9ICh0ZXh0UmVnaW9uSHVmZm1hbkZsYWdzID4+IDgpICYgMzsKICAgICAgICAgIHRleHRSZWdpb24uaHVmZm1hblJlZmluZW1lbnREWCA9ICh0ZXh0UmVnaW9uSHVmZm1hbkZsYWdzID4+IDEwKSAmIDM7CiAgICAgICAgICB0ZXh0UmVnaW9uLmh1ZmZtYW5SZWZpbmVtZW50RFkgPSAodGV4dFJlZ2lvbkh1ZmZtYW5GbGFncyA+PiAxMikgJiAzOwogICAgICAgICAgdGV4dFJlZ2lvbi5odWZmbWFuUmVmaW5lbWVudFNpemVTZWxlY3RvciA9CiAgICAgICAgICAgICEhKHRleHRSZWdpb25IdWZmbWFuRmxhZ3MgJiAxNCk7CiAgICAgICAgfQogICAgICAgIGlmICh0ZXh0UmVnaW9uLnJlZmluZW1lbnQgJiYgIXRleHRSZWdpb24ucmVmaW5lbWVudFRlbXBsYXRlKSB7CiAgICAgICAgICBhdCA9IFtdOwogICAgICAgICAgZm9yIChpID0gMDsgaSA8IDI7IGkrKykgewogICAgICAgICAgICBhdC5wdXNoKHsKICAgICAgICAgICAgICB4OiByZWFkSW50OChkYXRhLCBwb3NpdGlvbiksCiAgICAgICAgICAgICAgeTogcmVhZEludDgoZGF0YSwgcG9zaXRpb24gKyAxKQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgcG9zaXRpb24gKz0gMjsKICAgICAgICAgIH0KICAgICAgICAgIHRleHRSZWdpb24ucmVmaW5lbWVudEF0ID0gYXQ7CiAgICAgICAgfQogICAgICAgIHRleHRSZWdpb24ubnVtYmVyT2ZTeW1ib2xJbnN0YW5jZXMgPSByZWFkVWludDMyKGRhdGEsIHBvc2l0aW9uKTsKICAgICAgICBwb3NpdGlvbiArPSA0OwogICAgICAgIC8vIFRPRE8gNy40LjMuMS43IFN5bWJvbCBJRCBIdWZmbWFuIHRhYmxlIGRlY29kaW5nCiAgICAgICAgaWYgKHRleHRSZWdpb24uaHVmZm1hbikgewogICAgICAgICAgZXJyb3IoJ0pCSUcyIGVycm9yOiBodWZmbWFuIGlzIG5vdCBzdXBwb3J0ZWQnKTsKICAgICAgICB9CiAgICAgICAgYXJncyA9IFt0ZXh0UmVnaW9uLCBoZWFkZXIucmVmZXJyZWRUbywgZGF0YSwgcG9zaXRpb24sIGVuZF07CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgMzg6IC8vIEltbWVkaWF0ZUdlbmVyaWNSZWdpb24KICAgICAgY2FzZSAzOTogLy8gSW1tZWRpYXRlTG9zc2xlc3NHZW5lcmljUmVnaW9uCiAgICAgICAgdmFyIGdlbmVyaWNSZWdpb24gPSB7fTsKICAgICAgICBnZW5lcmljUmVnaW9uLmluZm8gPSByZWFkUmVnaW9uU2VnbWVudEluZm9ybWF0aW9uKGRhdGEsIHBvc2l0aW9uKTsKICAgICAgICBwb3NpdGlvbiArPSBSZWdpb25TZWdtZW50SW5mb3JtYXRpb25GaWVsZExlbmd0aDsKICAgICAgICB2YXIgZ2VuZXJpY1JlZ2lvblNlZ21lbnRGbGFncyA9IGRhdGFbcG9zaXRpb24rK107CiAgICAgICAgZ2VuZXJpY1JlZ2lvbi5tbXIgPSAhIShnZW5lcmljUmVnaW9uU2VnbWVudEZsYWdzICYgMSk7CiAgICAgICAgZ2VuZXJpY1JlZ2lvbi50ZW1wbGF0ZSA9IChnZW5lcmljUmVnaW9uU2VnbWVudEZsYWdzID4+IDEpICYgMzsKICAgICAgICBnZW5lcmljUmVnaW9uLnByZWRpY3Rpb24gPSAhIShnZW5lcmljUmVnaW9uU2VnbWVudEZsYWdzICYgOCk7CiAgICAgICAgaWYgKCFnZW5lcmljUmVnaW9uLm1tcikgewogICAgICAgICAgYXRMZW5ndGggPSBnZW5lcmljUmVnaW9uLnRlbXBsYXRlID09PSAwID8gNCA6IDE7CiAgICAgICAgICBhdCA9IFtdOwogICAgICAgICAgZm9yIChpID0gMDsgaSA8IGF0TGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgYXQucHVzaCh7CiAgICAgICAgICAgICAgeDogcmVhZEludDgoZGF0YSwgcG9zaXRpb24pLAogICAgICAgICAgICAgIHk6IHJlYWRJbnQ4KGRhdGEsIHBvc2l0aW9uICsgMSkKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHBvc2l0aW9uICs9IDI7CiAgICAgICAgICB9CiAgICAgICAgICBnZW5lcmljUmVnaW9uLmF0ID0gYXQ7CiAgICAgICAgfQogICAgICAgIGFyZ3MgPSBbZ2VuZXJpY1JlZ2lvbiwgZGF0YSwgcG9zaXRpb24sIGVuZF07CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgNDg6IC8vIFBhZ2VJbmZvcm1hdGlvbgogICAgICAgIHZhciBwYWdlSW5mbyA9IHsKICAgICAgICAgIHdpZHRoOiByZWFkVWludDMyKGRhdGEsIHBvc2l0aW9uKSwKICAgICAgICAgIGhlaWdodDogcmVhZFVpbnQzMihkYXRhLCBwb3NpdGlvbiArIDQpLAogICAgICAgICAgcmVzb2x1dGlvblg6IHJlYWRVaW50MzIoZGF0YSwgcG9zaXRpb24gKyA4KSwKICAgICAgICAgIHJlc29sdXRpb25ZOiByZWFkVWludDMyKGRhdGEsIHBvc2l0aW9uICsgMTIpCiAgICAgICAgfTsKICAgICAgICBpZiAocGFnZUluZm8uaGVpZ2h0ID09PSAweEZGRkZGRkZGKSB7CiAgICAgICAgICBkZWxldGUgcGFnZUluZm8uaGVpZ2h0OwogICAgICAgIH0KICAgICAgICB2YXIgcGFnZVNlZ21lbnRGbGFncyA9IGRhdGFbcG9zaXRpb24gKyAxNl07CiAgICAgICAgdmFyIHBhZ2VTdHJpcGluZ0luZm9ybWF0aW9tID0gcmVhZFVpbnQxNihkYXRhLCBwb3NpdGlvbiArIDE3KTsKICAgICAgICBwYWdlSW5mby5sb3NzbGVzcyA9ICEhKHBhZ2VTZWdtZW50RmxhZ3MgJiAxKTsKICAgICAgICBwYWdlSW5mby5yZWZpbmVtZW50ID0gISEocGFnZVNlZ21lbnRGbGFncyAmIDIpOwogICAgICAgIHBhZ2VJbmZvLmRlZmF1bHRQaXhlbFZhbHVlID0gKHBhZ2VTZWdtZW50RmxhZ3MgPj4gMikgJiAxOwogICAgICAgIHBhZ2VJbmZvLmNvbWJpbmF0aW9uT3BlcmF0b3IgPSAocGFnZVNlZ21lbnRGbGFncyA+PiAzKSAmIDM7CiAgICAgICAgcGFnZUluZm8ucmVxdWlyZXNCdWZmZXIgPSAhIShwYWdlU2VnbWVudEZsYWdzICYgMzIpOwogICAgICAgIHBhZ2VJbmZvLmNvbWJpbmF0aW9uT3BlcmF0b3JPdmVycmlkZSA9ICEhKHBhZ2VTZWdtZW50RmxhZ3MgJiA2NCk7CiAgICAgICAgYXJncyA9IFtwYWdlSW5mb107CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgNDk6IC8vIEVuZE9mUGFnZQogICAgICAgIGJyZWFrOwogICAgICBjYXNlIDUwOiAvLyBFbmRPZlN0cmlwZQogICAgICAgIGJyZWFrOwogICAgICBjYXNlIDUxOiAvLyBFbmRPZkZpbGUKICAgICAgICBicmVhazsKICAgICAgY2FzZSA2MjogLy8gNy40LjE1IGRlZmluZXMgMiBleHRlbnNpb24gdHlwZXMgd2hpY2gKICAgICAgICAgICAgICAgLy8gYXJlIGNvbW1lbnRzIGFuZCBjYW4gYmUgaWdub3JlZC4KICAgICAgICBicmVhazsKICAgICAgZGVmYXVsdDoKICAgICAgICBlcnJvcignSkJJRzIgZXJyb3I6IHNlZ21lbnQgdHlwZSAnICsgaGVhZGVyLnR5cGVOYW1lICsgJygnICsKICAgICAgICAgICAgICBoZWFkZXIudHlwZSArICcpIGlzIG5vdCBpbXBsZW1lbnRlZCcpOwogICAgfQogICAgdmFyIGNhbGxiYWNrTmFtZSA9ICdvbicgKyBoZWFkZXIudHlwZU5hbWU7CiAgICBpZiAoY2FsbGJhY2tOYW1lIGluIHZpc2l0b3IpIHsKICAgICAgdmlzaXRvcltjYWxsYmFja05hbWVdLmFwcGx5KHZpc2l0b3IsIGFyZ3MpOwogICAgfQogIH0KCiAgZnVuY3Rpb24gcHJvY2Vzc1NlZ21lbnRzKHNlZ21lbnRzLCB2aXNpdG9yKSB7CiAgICBmb3IgKHZhciBpID0gMCwgaWkgPSBzZWdtZW50cy5sZW5ndGg7IGkgPCBpaTsgaSsrKSB7CiAgICAgIHByb2Nlc3NTZWdtZW50KHNlZ21lbnRzW2ldLCB2aXNpdG9yKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHBhcnNlSmJpZzIoZGF0YSwgc3RhcnQsIGVuZCkgewogICAgdmFyIHBvc2l0aW9uID0gc3RhcnQ7CiAgICBpZiAoZGF0YVtwb3NpdGlvbl0gIT09IDB4OTcgfHwgZGF0YVtwb3NpdGlvbiArIDFdICE9PSAweDRBIHx8CiAgICAgICAgZGF0YVtwb3NpdGlvbiArIDJdICE9PSAweDQyIHx8IGRhdGFbcG9zaXRpb24gKyAzXSAhPT0gMHgzMiB8fAogICAgICAgIGRhdGFbcG9zaXRpb24gKyA0XSAhPT0gMHgwRCB8fCBkYXRhW3Bvc2l0aW9uICsgNV0gIT09IDB4MEEgfHwKICAgICAgICBkYXRhW3Bvc2l0aW9uICsgNl0gIT09IDB4MUEgfHwgZGF0YVtwb3NpdGlvbiArIDddICE9PSAweDBBKSB7CiAgICAgIGVycm9yKCdKQklHMiBlcnJvcjogaW52YWxpZCBoZWFkZXInKTsKICAgIH0KICAgIHZhciBoZWFkZXIgPSB7fTsKICAgIHBvc2l0aW9uICs9IDg7CiAgICB2YXIgZmxhZ3MgPSBkYXRhW3Bvc2l0aW9uKytdOwogICAgaGVhZGVyLnJhbmRvbUFjY2VzcyA9ICEoZmxhZ3MgJiAxKTsKICAgIGlmICghKGZsYWdzICYgMikpIHsKICAgICAgaGVhZGVyLm51bWJlck9mUGFnZXMgPSByZWFkVWludDMyKGRhdGEsIHBvc2l0aW9uKTsKICAgICAgcG9zaXRpb24gKz0gNDsKICAgIH0KICAgIHZhciBzZWdtZW50cyA9IHJlYWRTZWdtZW50cyhoZWFkZXIsIGRhdGEsIHBvc2l0aW9uLCBlbmQpOwogICAgZXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpOwogICAgLy8gcHJvY2Vzc1NlZ21lbnRzKHNlZ21lbnRzLCBuZXcgU2ltcGxlU2VnbWVudFZpc2l0b3IoKSk7CiAgfQoKICBmdW5jdGlvbiBwYXJzZUpiaWcyQ2h1bmtzKGNodW5rcykgewogICAgdmFyIHZpc2l0b3IgPSBuZXcgU2ltcGxlU2VnbWVudFZpc2l0b3IoKTsKICAgIGZvciAodmFyIGkgPSAwLCBpaSA9IGNodW5rcy5sZW5ndGg7IGkgPCBpaTsgaSsrKSB7CiAgICAgIHZhciBjaHVuayA9IGNodW5rc1tpXTsKICAgICAgdmFyIHNlZ21lbnRzID0gcmVhZFNlZ21lbnRzKHt9LCBjaHVuay5kYXRhLCBjaHVuay5zdGFydCwgY2h1bmsuZW5kKTsKICAgICAgcHJvY2Vzc1NlZ21lbnRzKHNlZ21lbnRzLCB2aXNpdG9yKTsKICAgIH0KICAgIHJldHVybiB2aXNpdG9yLmJ1ZmZlcjsKICB9CgogIGZ1bmN0aW9uIFNpbXBsZVNlZ21lbnRWaXNpdG9yKCkge30KCiAgU2ltcGxlU2VnbWVudFZpc2l0b3IucHJvdG90eXBlID0gewogICAgb25QYWdlSW5mb3JtYXRpb246IGZ1bmN0aW9uIFNpbXBsZVNlZ21lbnRWaXNpdG9yX29uUGFnZUluZm9ybWF0aW9uKGluZm8pIHsKICAgICAgdGhpcy5jdXJyZW50UGFnZUluZm8gPSBpbmZvOwogICAgICB2YXIgcm93U2l6ZSA9IChpbmZvLndpZHRoICsgNykgPj4gMzsKICAgICAgdmFyIGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KHJvd1NpemUgKiBpbmZvLmhlaWdodCk7CiAgICAgIC8vIFRoZSBjb250ZW50cyBvZiBBcnJheUJ1ZmZlcnMgYXJlIGluaXRpYWxpemVkIHRvIDAuCiAgICAgIC8vIEZpbGwgdGhlIGJ1ZmZlciB3aXRoIDB4RkYgb25seSBpZiBpbmZvLmRlZmF1bHRQaXhlbFZhbHVlIGlzIHNldAogICAgICBpZiAoaW5mby5kZWZhdWx0UGl4ZWxWYWx1ZSkgewogICAgICAgIGZvciAodmFyIGkgPSAwLCBpaSA9IGJ1ZmZlci5sZW5ndGg7IGkgPCBpaTsgaSsrKSB7CiAgICAgICAgICBidWZmZXJbaV0gPSAweEZGOwogICAgICAgIH0KICAgICAgfQogICAgICB0aGlzLmJ1ZmZlciA9IGJ1ZmZlcjsKICAgIH0sCiAgICBkcmF3Qml0bWFwOiBmdW5jdGlvbiBTaW1wbGVTZWdtZW50VmlzaXRvcl9kcmF3Qml0bWFwKHJlZ2lvbkluZm8sIGJpdG1hcCkgewogICAgICB2YXIgcGFnZUluZm8gPSB0aGlzLmN1cnJlbnRQYWdlSW5mbzsKICAgICAgdmFyIHdpZHRoID0gcmVnaW9uSW5mby53aWR0aCwgaGVpZ2h0ID0gcmVnaW9uSW5mby5oZWlnaHQ7CiAgICAgIHZhciByb3dTaXplID0gKHBhZ2VJbmZvLndpZHRoICsgNykgPj4gMzsKICAgICAgdmFyIGNvbWJpbmF0aW9uT3BlcmF0b3IgPSBwYWdlSW5mby5jb21iaW5hdGlvbk9wZXJhdG9yT3ZlcnJpZGUgPwogICAgICAgIHJlZ2lvbkluZm8uY29tYmluYXRpb25PcGVyYXRvciA6IHBhZ2VJbmZvLmNvbWJpbmF0aW9uT3BlcmF0b3I7CiAgICAgIHZhciBidWZmZXIgPSB0aGlzLmJ1ZmZlcjsKICAgICAgdmFyIG1hc2swID0gIDEyOCA+PiAocmVnaW9uSW5mby54ICYgNyk7CiAgICAgIHZhciBvZmZzZXQwID0gcmVnaW9uSW5mby55ICogcm93U2l6ZSArIChyZWdpb25JbmZvLnggPj4gMyk7CiAgICAgIHZhciBpLCBqLCBtYXNrLCBvZmZzZXQ7CiAgICAgIHN3aXRjaCAoY29tYmluYXRpb25PcGVyYXRvcikgewogICAgICAgIGNhc2UgMDogLy8gT1IKICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBoZWlnaHQ7IGkrKykgewogICAgICAgICAgICBtYXNrID0gbWFzazA7CiAgICAgICAgICAgIG9mZnNldCA9IG9mZnNldDA7CiAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCB3aWR0aDsgaisrKSB7CiAgICAgICAgICAgICAgaWYgKGJpdG1hcFtpXVtqXSkgewogICAgICAgICAgICAgICAgYnVmZmVyW29mZnNldF0gfD0gbWFzazsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgbWFzayA+Pj0gMTsKICAgICAgICAgICAgICBpZiAoIW1hc2spIHsKICAgICAgICAgICAgICAgIG1hc2sgPSAxMjg7CiAgICAgICAgICAgICAgICBvZmZzZXQrKzsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgb2Zmc2V0MCArPSByb3dTaXplOwogICAgICAgICAgfQogICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgMjogLy8gWE9SCiAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgaGVpZ2h0OyBpKyspIHsKICAgICAgICAgICAgbWFzayA9IG1hc2swOwogICAgICAgICAgICBvZmZzZXQgPSBvZmZzZXQwOwogICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgd2lkdGg7IGorKykgewogICAgICAgICAgICAgIGlmIChiaXRtYXBbaV1bal0pIHsKICAgICAgICAgICAgICAgIGJ1ZmZlcltvZmZzZXRdIF49IG1hc2s7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIG1hc2sgPj49IDE7CiAgICAgICAgICAgICAgaWYgKCFtYXNrKSB7CiAgICAgICAgICAgICAgICBtYXNrID0gMTI4OwogICAgICAgICAgICAgICAgb2Zmc2V0Kys7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIG9mZnNldDAgKz0gcm93U2l6ZTsKICAgICAgICAgIH0KICAgICAgICAgIGJyZWFrOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICBlcnJvcignSkJJRzIgZXJyb3I6IG9wZXJhdG9yICcgKyBjb21iaW5hdGlvbk9wZXJhdG9yICsKICAgICAgICAgICAgICAgICcgaXMgbm90IHN1cHBvcnRlZCcpOwogICAgICB9CiAgICB9LAogICAgb25JbW1lZGlhdGVHZW5lcmljUmVnaW9uOgogICAgICBmdW5jdGlvbiBTaW1wbGVTZWdtZW50VmlzaXRvcl9vbkltbWVkaWF0ZUdlbmVyaWNSZWdpb24ocmVnaW9uLCBkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQsIGVuZCkgewogICAgICB2YXIgcmVnaW9uSW5mbyA9IHJlZ2lvbi5pbmZvOwogICAgICB2YXIgZGVjb2RpbmdDb250ZXh0ID0gbmV3IERlY29kaW5nQ29udGV4dChkYXRhLCBzdGFydCwgZW5kKTsKICAgICAgdmFyIGJpdG1hcCA9IGRlY29kZUJpdG1hcChyZWdpb24ubW1yLCByZWdpb25JbmZvLndpZHRoLCByZWdpb25JbmZvLmhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpb24udGVtcGxhdGUsIHJlZ2lvbi5wcmVkaWN0aW9uLCBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lvbi5hdCwgZGVjb2RpbmdDb250ZXh0KTsKICAgICAgdGhpcy5kcmF3Qml0bWFwKHJlZ2lvbkluZm8sIGJpdG1hcCk7CiAgICB9LAogICAgb25JbW1lZGlhdGVMb3NzbGVzc0dlbmVyaWNSZWdpb246CiAgICAgIGZ1bmN0aW9uIFNpbXBsZVNlZ21lbnRWaXNpdG9yX29uSW1tZWRpYXRlTG9zc2xlc3NHZW5lcmljUmVnaW9uKCkgewogICAgICB0aGlzLm9uSW1tZWRpYXRlR2VuZXJpY1JlZ2lvbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgfSwKICAgIG9uU3ltYm9sRGljdGlvbmFyeToKICAgICAgZnVuY3Rpb24gU2ltcGxlU2VnbWVudFZpc2l0b3Jfb25TeW1ib2xEaWN0aW9uYXJ5KGRpY3Rpb25hcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U2VnbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVycmVkU2VnbWVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLCBzdGFydCwgZW5kKSB7CiAgICAgIHZhciBodWZmbWFuVGFibGVzOwogICAgICBpZiAoZGljdGlvbmFyeS5odWZmbWFuKSB7CiAgICAgICAgZXJyb3IoJ0pCSUcyIGVycm9yOiBodWZmbWFuIGlzIG5vdCBzdXBwb3J0ZWQnKTsKICAgICAgfQoKICAgICAgLy8gQ29tYmluZXMgZXhwb3J0ZWQgc3ltYm9scyBmcm9tIGFsbCByZWZlcnJlZCBzZWdtZW50cwogICAgICB2YXIgc3ltYm9scyA9IHRoaXMuc3ltYm9sczsKICAgICAgaWYgKCFzeW1ib2xzKSB7CiAgICAgICAgdGhpcy5zeW1ib2xzID0gc3ltYm9scyA9IHt9OwogICAgICB9CgogICAgICB2YXIgaW5wdXRTeW1ib2xzID0gW107CiAgICAgIGZvciAodmFyIGkgPSAwLCBpaSA9IHJlZmVycmVkU2VnbWVudHMubGVuZ3RoOyBpIDwgaWk7IGkrKykgewogICAgICAgIGlucHV0U3ltYm9scyA9IGlucHV0U3ltYm9scy5jb25jYXQoc3ltYm9sc1tyZWZlcnJlZFNlZ21lbnRzW2ldXSk7CiAgICAgIH0KCiAgICAgIHZhciBkZWNvZGluZ0NvbnRleHQgPSBuZXcgRGVjb2RpbmdDb250ZXh0KGRhdGEsIHN0YXJ0LCBlbmQpOwogICAgICBzeW1ib2xzW2N1cnJlbnRTZWdtZW50XSA9IGRlY29kZVN5bWJvbERpY3Rpb25hcnkoZGljdGlvbmFyeS5odWZmbWFuLAogICAgICAgIGRpY3Rpb25hcnkucmVmaW5lbWVudCwgaW5wdXRTeW1ib2xzLCBkaWN0aW9uYXJ5Lm51bWJlck9mTmV3U3ltYm9scywKICAgICAgICBkaWN0aW9uYXJ5Lm51bWJlck9mRXhwb3J0ZWRTeW1ib2xzLCBodWZmbWFuVGFibGVzLAogICAgICAgIGRpY3Rpb25hcnkudGVtcGxhdGUsIGRpY3Rpb25hcnkuYXQsCiAgICAgICAgZGljdGlvbmFyeS5yZWZpbmVtZW50VGVtcGxhdGUsIGRpY3Rpb25hcnkucmVmaW5lbWVudEF0LAogICAgICAgIGRlY29kaW5nQ29udGV4dCk7CiAgICB9LAogICAgb25JbW1lZGlhdGVUZXh0UmVnaW9uOgogICAgICBmdW5jdGlvbiBTaW1wbGVTZWdtZW50VmlzaXRvcl9vbkltbWVkaWF0ZVRleHRSZWdpb24ocmVnaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJyZWRTZWdtZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEsIHN0YXJ0LCBlbmQpIHsKICAgICAgdmFyIHJlZ2lvbkluZm8gPSByZWdpb24uaW5mbzsKICAgICAgdmFyIGh1ZmZtYW5UYWJsZXM7CgogICAgICAvLyBDb21iaW5lcyBleHBvcnRlZCBzeW1ib2xzIGZyb20gYWxsIHJlZmVycmVkIHNlZ21lbnRzCiAgICAgIHZhciBzeW1ib2xzID0gdGhpcy5zeW1ib2xzOwogICAgICB2YXIgaW5wdXRTeW1ib2xzID0gW107CiAgICAgIGZvciAodmFyIGkgPSAwLCBpaSA9IHJlZmVycmVkU2VnbWVudHMubGVuZ3RoOyBpIDwgaWk7IGkrKykgewogICAgICAgIGlucHV0U3ltYm9scyA9IGlucHV0U3ltYm9scy5jb25jYXQoc3ltYm9sc1tyZWZlcnJlZFNlZ21lbnRzW2ldXSk7CiAgICAgIH0KICAgICAgdmFyIHN5bWJvbENvZGVMZW5ndGggPSBsb2cyKGlucHV0U3ltYm9scy5sZW5ndGgpOwoKICAgICAgdmFyIGRlY29kaW5nQ29udGV4dCA9IG5ldyBEZWNvZGluZ0NvbnRleHQoZGF0YSwgc3RhcnQsIGVuZCk7CiAgICAgIHZhciBiaXRtYXAgPSBkZWNvZGVUZXh0UmVnaW9uKHJlZ2lvbi5odWZmbWFuLCByZWdpb24ucmVmaW5lbWVudCwKICAgICAgICByZWdpb25JbmZvLndpZHRoLCByZWdpb25JbmZvLmhlaWdodCwgcmVnaW9uLmRlZmF1bHRQaXhlbFZhbHVlLAogICAgICAgIHJlZ2lvbi5udW1iZXJPZlN5bWJvbEluc3RhbmNlcywgcmVnaW9uLnN0cmlwU2l6ZSwgaW5wdXRTeW1ib2xzLAogICAgICAgIHN5bWJvbENvZGVMZW5ndGgsIHJlZ2lvbi50cmFuc3Bvc2VkLCByZWdpb24uZHNPZmZzZXQsCiAgICAgICAgcmVnaW9uLnJlZmVyZW5jZUNvcm5lciwgcmVnaW9uLmNvbWJpbmF0aW9uT3BlcmF0b3IsIGh1ZmZtYW5UYWJsZXMsCiAgICAgICAgcmVnaW9uLnJlZmluZW1lbnRUZW1wbGF0ZSwgcmVnaW9uLnJlZmluZW1lbnRBdCwgZGVjb2RpbmdDb250ZXh0KTsKICAgICAgdGhpcy5kcmF3Qml0bWFwKHJlZ2lvbkluZm8sIGJpdG1hcCk7CiAgICB9LAogICAgb25JbW1lZGlhdGVMb3NzbGVzc1RleHRSZWdpb246CiAgICAgIGZ1bmN0aW9uIFNpbXBsZVNlZ21lbnRWaXNpdG9yX29uSW1tZWRpYXRlTG9zc2xlc3NUZXh0UmVnaW9uKCkgewogICAgICB0aGlzLm9uSW1tZWRpYXRlVGV4dFJlZ2lvbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgfQogIH07CgogIGZ1bmN0aW9uIEpiaWcySW1hZ2UoKSB7fQoKICBKYmlnMkltYWdlLnByb3RvdHlwZSA9IHsKICAgIHBhcnNlQ2h1bmtzOiBmdW5jdGlvbiBKYmlnMkltYWdlX3BhcnNlQ2h1bmtzKGNodW5rcykgewogICAgICByZXR1cm4gcGFyc2VKYmlnMkNodW5rcyhjaHVua3MpOwogICAgfQogIH07CgogIHJldHVybiBKYmlnMkltYWdlOwp9KSgpOwoKCnZhciBiaWRpID0gUERGSlMuYmlkaSA9IChmdW5jdGlvbiBiaWRpQ2xvc3VyZSgpIHsKICAvLyBDaGFyYWN0ZXIgdHlwZXMgZm9yIHN5bWJvbHMgZnJvbSAwMDAwIHRvIDAwRkYuCiAgdmFyIGJhc2VUeXBlcyA9IFsKICAgICdCTicsICdCTicsICdCTicsICdCTicsICdCTicsICdCTicsICdCTicsICdCTicsICdCTicsICdTJywgJ0InLCAnUycsICdXUycsCiAgICAnQicsICdCTicsICdCTicsICdCTicsICdCTicsICdCTicsICdCTicsICdCTicsICdCTicsICdCTicsICdCTicsICdCTicsICdCTicsCiAgICAnQk4nLCAnQk4nLCAnQicsICdCJywgJ0InLCAnUycsICdXUycsICdPTicsICdPTicsICdFVCcsICdFVCcsICdFVCcsICdPTicsCiAgICAnT04nLCAnT04nLCAnT04nLCAnT04nLCAnT04nLCAnQ1MnLCAnT04nLCAnQ1MnLCAnT04nLCAnRU4nLCAnRU4nLCAnRU4nLAogICAgJ0VOJywgJ0VOJywgJ0VOJywgJ0VOJywgJ0VOJywgJ0VOJywgJ0VOJywgJ09OJywgJ09OJywgJ09OJywgJ09OJywgJ09OJywKICAgICdPTicsICdPTicsICdMJywgJ0wnLCAnTCcsICdMJywgJ0wnLCAnTCcsICdMJywgJ0wnLCAnTCcsICdMJywgJ0wnLCAnTCcsICdMJywKICAgICdMJywgJ0wnLCAnTCcsICdMJywgJ0wnLCAnTCcsICdMJywgJ0wnLCAnTCcsICdMJywgJ0wnLCAnTCcsICdMJywgJ09OJywgJ09OJywKICAgICdPTicsICdPTicsICdPTicsICdPTicsICdMJywgJ0wnLCAnTCcsICdMJywgJ0wnLCAnTCcsICdMJywgJ0wnLCAnTCcsICdMJywKICAgICdMJywgJ0wnLCAnTCcsICdMJywgJ0wnLCAnTCcsICdMJywgJ0wnLCAnTCcsICdMJywgJ0wnLCAnTCcsICdMJywgJ0wnLCAnTCcsCiAgICAnTCcsICdPTicsICdPTicsICdPTicsICdPTicsICdCTicsICdCTicsICdCTicsICdCTicsICdCTicsICdCTicsICdCJywgJ0JOJywKICAgICdCTicsICdCTicsICdCTicsICdCTicsICdCTicsICdCTicsICdCTicsICdCTicsICdCTicsICdCTicsICdCTicsICdCTicsCiAgICAnQk4nLCAnQk4nLCAnQk4nLCAnQk4nLCAnQk4nLCAnQk4nLCAnQk4nLCAnQk4nLCAnQk4nLCAnQk4nLCAnQk4nLCAnQk4nLAogICAgJ0JOJywgJ0NTJywgJ09OJywgJ0VUJywgJ0VUJywgJ0VUJywgJ0VUJywgJ09OJywgJ09OJywgJ09OJywgJ09OJywgJ0wnLCAnT04nLAogICAgJ09OJywgJ09OJywgJ09OJywgJ09OJywgJ0VUJywgJ0VUJywgJ0VOJywgJ0VOJywgJ09OJywgJ0wnLCAnT04nLCAnT04nLCAnT04nLAogICAgJ0VOJywgJ0wnLCAnT04nLCAnT04nLCAnT04nLCAnT04nLCAnT04nLCAnTCcsICdMJywgJ0wnLCAnTCcsICdMJywgJ0wnLCAnTCcsCiAgICAnTCcsICdMJywgJ0wnLCAnTCcsICdMJywgJ0wnLCAnTCcsICdMJywgJ0wnLCAnTCcsICdMJywgJ0wnLCAnTCcsICdMJywgJ0wnLAogICAgJ0wnLCAnT04nLCAnTCcsICdMJywgJ0wnLCAnTCcsICdMJywgJ0wnLCAnTCcsICdMJywgJ0wnLCAnTCcsICdMJywgJ0wnLCAnTCcsCiAgICAnTCcsICdMJywgJ0wnLCAnTCcsICdMJywgJ0wnLCAnTCcsICdMJywgJ0wnLCAnTCcsICdMJywgJ0wnLCAnTCcsICdMJywgJ0wnLAogICAgJ0wnLCAnTCcsICdMJywgJ09OJywgJ0wnLCAnTCcsICdMJywgJ0wnLCAnTCcsICdMJywgJ0wnLCAnTCcKICBdOwoKICAvLyBDaGFyYWN0ZXIgdHlwZXMgZm9yIHN5bWJvbHMgZnJvbSAwNjAwIHRvIDA2RkYKICB2YXIgYXJhYmljVHlwZXMgPSBbCiAgICAnQUwnLCAnQUwnLCAnQUwnLCAnQUwnLCAnQUwnLCAnQUwnLCAnQUwnLCAnQUwnLCAnQUwnLCAnQUwnLCAnQUwnLCAnQUwnLAogICAgJ0NTJywgJ0FMJywgJ09OJywgJ09OJywgJ05TTScsICdOU00nLCAnTlNNJywgJ05TTScsICdOU00nLCAnTlNNJywgJ0FMJywKICAgICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcsCiAgICAnQUwnLCAnQUwnLCAnQUwnLCAnQUwnLCAnQUwnLCAnQUwnLCAnQUwnLCAnQUwnLCAnQUwnLCAnQUwnLCAnQUwnLCAnQUwnLAogICAgJ0FMJywgJ0FMJywgJ0FMJywgJ0FMJywgJ0FMJywgJ0FMJywgJ0FMJywgJ0FMJywgJ0FMJywgJ0FMJywgJ0FMJywgJ0FMJywKICAgICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcsCiAgICAnQUwnLCAnQUwnLCAnQUwnLCAnQUwnLCAnTlNNJywgJ05TTScsICdOU00nLCAnTlNNJywgJ05TTScsICdOU00nLCAnTlNNJywKICAgICdOU00nLCAnTlNNJywgJ05TTScsICdOU00nLCAnTlNNJywgJ05TTScsICdOU00nLCAnQUwnLCAnQUwnLCAnQUwnLCAnQUwnLAogICAgJ0FMJywgJ0FMJywgJ0FMJywgJ0FOJywgJ0FOJywgJ0FOJywgJ0FOJywgJ0FOJywgJ0FOJywgJ0FOJywgJ0FOJywgJ0FOJywKICAgICdBTicsICdFVCcsICdBTicsICdBTicsICdBTCcsICdBTCcsICdBTCcsICdOU00nLCAnQUwnLCAnQUwnLCAnQUwnLCAnQUwnLAogICAgJ0FMJywgJ0FMJywgJ0FMJywgJ0FMJywgJ0FMJywgJ0FMJywgJ0FMJywgJ0FMJywgJ0FMJywgJ0FMJywgJ0FMJywgJ0FMJywKICAgICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcsCiAgICAnQUwnLCAnQUwnLCAnQUwnLCAnQUwnLCAnQUwnLCAnQUwnLCAnQUwnLCAnQUwnLCAnQUwnLCAnQUwnLCAnQUwnLCAnQUwnLAogICAgJ0FMJywgJ0FMJywgJ0FMJywgJ0FMJywgJ0FMJywgJ0FMJywgJ0FMJywgJ0FMJywgJ0FMJywgJ0FMJywgJ0FMJywgJ0FMJywKICAgICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcsCiAgICAnQUwnLCAnQUwnLCAnQUwnLCAnQUwnLCAnQUwnLCAnQUwnLCAnQUwnLCAnQUwnLCAnQUwnLCAnQUwnLCAnQUwnLCAnQUwnLAogICAgJ0FMJywgJ0FMJywgJ0FMJywgJ0FMJywgJ0FMJywgJ0FMJywgJ0FMJywgJ0FMJywgJ0FMJywgJ0FMJywgJ0FMJywgJ0FMJywKICAgICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcsCiAgICAnQUwnLCAnTlNNJywgJ05TTScsICdOU00nLCAnTlNNJywgJ05TTScsICdOU00nLCAnTlNNJywgJ05TTScsICdOU00nLCAnTlNNJywKICAgICdOU00nLCAnTlNNJywgJ05TTScsICdOU00nLCAnTlNNJywgJ05TTScsICdOU00nLCAnTlNNJywgJ05TTScsICdPTicsICdOU00nLAogICAgJ05TTScsICdOU00nLCAnTlNNJywgJ0FMJywgJ0FMJywgJ0FMJywgJ0FMJywgJ0FMJywgJ0FMJywgJ0FMJywgJ0FMJywgJ0FMJywKICAgICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcsICdBTCcKICBdOwoKICBmdW5jdGlvbiBpc09kZChpKSB7CiAgICByZXR1cm4gKGkgJiAxKSAhPT0gMDsKICB9CgogIGZ1bmN0aW9uIGlzRXZlbihpKSB7CiAgICByZXR1cm4gKGkgJiAxKSA9PT0gMDsKICB9CgogIGZ1bmN0aW9uIGZpbmRVbmVxdWFsKGFyciwgc3RhcnQsIHZhbHVlKSB7CiAgICBmb3IgKHZhciBqID0gc3RhcnQsIGpqID0gYXJyLmxlbmd0aDsgaiA8IGpqOyArK2opIHsKICAgICAgaWYgKGFycltqXSAhPT0gdmFsdWUpIHsKICAgICAgICByZXR1cm4gajsKICAgICAgfQogICAgfQogICAgcmV0dXJuIGo7CiAgfQoKICBmdW5jdGlvbiBzZXRWYWx1ZXMoYXJyLCBzdGFydCwgZW5kLCB2YWx1ZSkgewogICAgZm9yICh2YXIgaiA9IHN0YXJ0OyBqIDwgZW5kOyArK2opIHsKICAgICAgYXJyW2pdID0gdmFsdWU7CiAgICB9CiAgfQoKICBmdW5jdGlvbiByZXZlcnNlVmFsdWVzKGFyciwgc3RhcnQsIGVuZCkgewogICAgZm9yICh2YXIgaSA9IHN0YXJ0LCBqID0gZW5kIC0gMTsgaSA8IGo7ICsraSwgLS1qKSB7CiAgICAgIHZhciB0ZW1wID0gYXJyW2ldOwogICAgICBhcnJbaV0gPSBhcnJbal07CiAgICAgIGFycltqXSA9IHRlbXA7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBjcmVhdGVCaWRpVGV4dChzdHIsIGlzTFRSLCB2ZXJ0aWNhbCkgewogICAgcmV0dXJuIHsKICAgICAgc3RyOiBzdHIsCiAgICAgIGRpcjogKHZlcnRpY2FsID8gJ3R0YicgOiAoaXNMVFIgPyAnbHRyJyA6ICdydGwnKSkKICAgIH07CiAgfQoKICAvLyBUaGVzZSBhcmUgdXNlZCBpbiBiaWRpKCksIHdoaWNoIGlzIGNhbGxlZCBmcmVxdWVudGx5LiBXZSByZS11c2UgdGhlbSBvbgogIC8vIGVhY2ggY2FsbCB0byBhdm9pZCB1bm5lY2Vzc2FyeSBhbGxvY2F0aW9ucy4KICB2YXIgY2hhcnMgPSBbXTsKICB2YXIgdHlwZXMgPSBbXTsKCiAgZnVuY3Rpb24gYmlkaShzdHIsIHN0YXJ0TGV2ZWwsIHZlcnRpY2FsKSB7CiAgICB2YXIgaXNMVFIgPSB0cnVlOwogICAgdmFyIHN0ckxlbmd0aCA9IHN0ci5sZW5ndGg7CiAgICBpZiAoc3RyTGVuZ3RoID09PSAwIHx8IHZlcnRpY2FsKSB7CiAgICAgIHJldHVybiBjcmVhdGVCaWRpVGV4dChzdHIsIGlzTFRSLCB2ZXJ0aWNhbCk7CiAgICB9CgogICAgLy8gR2V0IHR5cGVzIGFuZCBmaWxsIGFycmF5cwogICAgY2hhcnMubGVuZ3RoID0gc3RyTGVuZ3RoOwogICAgdHlwZXMubGVuZ3RoID0gc3RyTGVuZ3RoOwogICAgdmFyIG51bUJpZGkgPSAwOwoKICAgIHZhciBpLCBpaTsKICAgIGZvciAoaSA9IDA7IGkgPCBzdHJMZW5ndGg7ICsraSkgewogICAgICBjaGFyc1tpXSA9IHN0ci5jaGFyQXQoaSk7CgogICAgICB2YXIgY2hhckNvZGUgPSBzdHIuY2hhckNvZGVBdChpKTsKICAgICAgdmFyIGNoYXJUeXBlID0gJ0wnOwogICAgICBpZiAoY2hhckNvZGUgPD0gMHgwMGZmKSB7CiAgICAgICAgY2hhclR5cGUgPSBiYXNlVHlwZXNbY2hhckNvZGVdOwogICAgICB9IGVsc2UgaWYgKDB4MDU5MCA8PSBjaGFyQ29kZSAmJiBjaGFyQ29kZSA8PSAweDA1ZjQpIHsKICAgICAgICBjaGFyVHlwZSA9ICdSJzsKICAgICAgfSBlbHNlIGlmICgweDA2MDAgPD0gY2hhckNvZGUgJiYgY2hhckNvZGUgPD0gMHgwNmZmKSB7CiAgICAgICAgY2hhclR5cGUgPSBhcmFiaWNUeXBlc1tjaGFyQ29kZSAmIDB4ZmZdOwogICAgICB9IGVsc2UgaWYgKDB4MDcwMCA8PSBjaGFyQ29kZSAmJiBjaGFyQ29kZSA8PSAweDA4QUMpIHsKICAgICAgICBjaGFyVHlwZSA9ICdBTCc7CiAgICAgIH0KICAgICAgaWYgKGNoYXJUeXBlID09PSAnUicgfHwgY2hhclR5cGUgPT09ICdBTCcgfHwgY2hhclR5cGUgPT09ICdBTicpIHsKICAgICAgICBudW1CaWRpKys7CiAgICAgIH0KICAgICAgdHlwZXNbaV0gPSBjaGFyVHlwZTsKICAgIH0KCiAgICAvLyBEZXRlY3QgdGhlIGJpZGkgbWV0aG9kCiAgICAvLyAtIElmIHRoZXJlIGFyZSBubyBydGwgY2hhcmFjdGVycyB0aGVuIG5vIGJpZGkgbmVlZGVkCiAgICAvLyAtIElmIGxlc3MgdGhhbiAzMCUgY2hhcnMgYXJlIHJ0bCB0aGVuIHN0cmluZyBpcyBwcmltYXJpbHkgbHRyCiAgICAvLyAtIElmIG1vcmUgdGhhbiAzMCUgY2hhcnMgYXJlIHJ0bCB0aGVuIHN0cmluZyBpcyBwcmltYXJpbHkgcnRsCiAgICBpZiAobnVtQmlkaSA9PT0gMCkgewogICAgICBpc0xUUiA9IHRydWU7CiAgICAgIHJldHVybiBjcmVhdGVCaWRpVGV4dChzdHIsIGlzTFRSKTsKICAgIH0KCiAgICBpZiAoc3RhcnRMZXZlbCA9PT0gLTEpIHsKICAgICAgaWYgKChzdHJMZW5ndGggLyBudW1CaWRpKSA8IDAuMykgewogICAgICAgIGlzTFRSID0gdHJ1ZTsKICAgICAgICBzdGFydExldmVsID0gMDsKICAgICAgfSBlbHNlIHsKICAgICAgICBpc0xUUiA9IGZhbHNlOwogICAgICAgIHN0YXJ0TGV2ZWwgPSAxOwogICAgICB9CiAgICB9CgogICAgdmFyIGxldmVscyA9IFtdOwogICAgZm9yIChpID0gMDsgaSA8IHN0ckxlbmd0aDsgKytpKSB7CiAgICAgIGxldmVsc1tpXSA9IHN0YXJ0TGV2ZWw7CiAgICB9CgogICAgLyoKICAgICBYMS1YMTA6IHNraXAgbW9zdCBvZiB0aGlzLCBzaW5jZSB3ZSBhcmUgTk9UIGRvaW5nIHRoZSBlbWJlZGRpbmdzLgogICAgICovCiAgICB2YXIgZSA9IChpc09kZChzdGFydExldmVsKSA/ICdSJyA6ICdMJyk7CiAgICB2YXIgc29yID0gZTsKICAgIHZhciBlb3IgPSBzb3I7CgogICAgLyoKICAgICBXMS4gRXhhbWluZSBlYWNoIG5vbi1zcGFjaW5nIG1hcmsgKE5TTSkgaW4gdGhlIGxldmVsIHJ1biwgYW5kIGNoYW5nZSB0aGUKICAgICB0eXBlIG9mIHRoZSBOU00gdG8gdGhlIHR5cGUgb2YgdGhlIHByZXZpb3VzIGNoYXJhY3Rlci4gSWYgdGhlIE5TTSBpcyBhdCB0aGUKICAgICBzdGFydCBvZiB0aGUgbGV2ZWwgcnVuLCBpdCB3aWxsIGdldCB0aGUgdHlwZSBvZiBzb3IuCiAgICAgKi8KICAgIHZhciBsYXN0VHlwZSA9IHNvcjsKICAgIGZvciAoaSA9IDA7IGkgPCBzdHJMZW5ndGg7ICsraSkgewogICAgICBpZiAodHlwZXNbaV0gPT09ICdOU00nKSB7CiAgICAgICAgdHlwZXNbaV0gPSBsYXN0VHlwZTsKICAgICAgfSBlbHNlIHsKICAgICAgICBsYXN0VHlwZSA9IHR5cGVzW2ldOwogICAgICB9CiAgICB9CgogICAgLyoKICAgICBXMi4gU2VhcmNoIGJhY2t3YXJkcyBmcm9tIGVhY2ggaW5zdGFuY2Ugb2YgYSBFdXJvcGVhbiBudW1iZXIgdW50aWwgdGhlCiAgICAgZmlyc3Qgc3Ryb25nIHR5cGUgKFIsIEwsIEFMLCBvciBzb3IpIGlzIGZvdW5kLiAgSWYgYW4gQUwgaXMgZm91bmQsIGNoYW5nZQogICAgIHRoZSB0eXBlIG9mIHRoZSBFdXJvcGVhbiBudW1iZXIgdG8gQXJhYmljIG51bWJlci4KICAgICAqLwogICAgbGFzdFR5cGUgPSBzb3I7CiAgICB2YXIgdDsKICAgIGZvciAoaSA9IDA7IGkgPCBzdHJMZW5ndGg7ICsraSkgewogICAgICB0ID0gdHlwZXNbaV07CiAgICAgIGlmICh0ID09PSAnRU4nKSB7CiAgICAgICAgdHlwZXNbaV0gPSAobGFzdFR5cGUgPT09ICdBTCcpID8gJ0FOJyA6ICdFTic7CiAgICAgIH0gZWxzZSBpZiAodCA9PT0gJ1InIHx8IHQgPT09ICdMJyB8fCB0ID09PSAnQUwnKSB7CiAgICAgICAgbGFzdFR5cGUgPSB0OwogICAgICB9CiAgICB9CgogICAgLyoKICAgICBXMy4gQ2hhbmdlIGFsbCBBTHMgdG8gUi4KICAgICAqLwogICAgZm9yIChpID0gMDsgaSA8IHN0ckxlbmd0aDsgKytpKSB7CiAgICAgIHQgPSB0eXBlc1tpXTsKICAgICAgaWYgKHQgPT09ICdBTCcpIHsKICAgICAgICB0eXBlc1tpXSA9ICdSJzsKICAgICAgfQogICAgfQoKICAgIC8qCiAgICAgVzQuIEEgc2luZ2xlIEV1cm9wZWFuIHNlcGFyYXRvciBiZXR3ZWVuIHR3byBFdXJvcGVhbiBudW1iZXJzIGNoYW5nZXMgdG8gYQogICAgIEV1cm9wZWFuIG51bWJlci4gQSBzaW5nbGUgY29tbW9uIHNlcGFyYXRvciBiZXR3ZWVuIHR3byBudW1iZXJzIG9mIHRoZSBzYW1lCiAgICAgdHlwZSBjaGFuZ2VzIHRvIHRoYXQgdHlwZToKICAgICAqLwogICAgZm9yIChpID0gMTsgaSA8IHN0ckxlbmd0aCAtIDE7ICsraSkgewogICAgICBpZiAodHlwZXNbaV0gPT09ICdFUycgJiYgdHlwZXNbaSAtIDFdID09PSAnRU4nICYmIHR5cGVzW2kgKyAxXSA9PT0gJ0VOJykgewogICAgICAgIHR5cGVzW2ldID0gJ0VOJzsKICAgICAgfQogICAgICBpZiAodHlwZXNbaV0gPT09ICdDUycgJiYKICAgICAgICAgICh0eXBlc1tpIC0gMV0gPT09ICdFTicgfHwgdHlwZXNbaSAtIDFdID09PSAnQU4nKSAmJgogICAgICAgICAgdHlwZXNbaSArIDFdID09PSB0eXBlc1tpIC0gMV0pIHsKICAgICAgICB0eXBlc1tpXSA9IHR5cGVzW2kgLSAxXTsKICAgICAgfQogICAgfQoKICAgIC8qCiAgICAgVzUuIEEgc2VxdWVuY2Ugb2YgRXVyb3BlYW4gdGVybWluYXRvcnMgYWRqYWNlbnQgdG8gRXVyb3BlYW4gbnVtYmVycyBjaGFuZ2VzCiAgICAgdG8gYWxsIEV1cm9wZWFuIG51bWJlcnM6CiAgICAgKi8KICAgIGZvciAoaSA9IDA7IGkgPCBzdHJMZW5ndGg7ICsraSkgewogICAgICBpZiAodHlwZXNbaV0gPT09ICdFTicpIHsKICAgICAgICAvLyBkbyBiZWZvcmUKICAgICAgICB2YXIgajsKICAgICAgICBmb3IgKGogPSBpIC0gMTsgaiA+PSAwOyAtLWopIHsKICAgICAgICAgIGlmICh0eXBlc1tqXSAhPT0gJ0VUJykgewogICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgICAgIHR5cGVzW2pdID0gJ0VOJzsKICAgICAgICB9CiAgICAgICAgLy8gZG8gYWZ0ZXIKICAgICAgICBmb3IgKGogPSBpICsgMTsgaiA8IHN0ckxlbmd0aDsgLS1qKSB7CiAgICAgICAgICBpZiAodHlwZXNbal0gIT09ICdFVCcpIHsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CiAgICAgICAgICB0eXBlc1tqXSA9ICdFTic7CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgLyoKICAgICBXNi4gT3RoZXJ3aXNlLCBzZXBhcmF0b3JzIGFuZCB0ZXJtaW5hdG9ycyBjaGFuZ2UgdG8gT3RoZXIgTmV1dHJhbDoKICAgICAqLwogICAgZm9yIChpID0gMDsgaSA8IHN0ckxlbmd0aDsgKytpKSB7CiAgICAgIHQgPSB0eXBlc1tpXTsKICAgICAgaWYgKHQgPT09ICdXUycgfHwgdCA9PT0gJ0VTJyB8fCB0ID09PSAnRVQnIHx8IHQgPT09ICdDUycpIHsKICAgICAgICB0eXBlc1tpXSA9ICdPTic7CiAgICAgIH0KICAgIH0KCiAgICAvKgogICAgIFc3LiBTZWFyY2ggYmFja3dhcmRzIGZyb20gZWFjaCBpbnN0YW5jZSBvZiBhIEV1cm9wZWFuIG51bWJlciB1bnRpbCB0aGUKICAgICBmaXJzdCBzdHJvbmcgdHlwZSAoUiwgTCwgb3Igc29yKSBpcyBmb3VuZC4gSWYgYW4gTCBpcyBmb3VuZCwgIHRoZW4gY2hhbmdlCiAgICAgdGhlIHR5cGUgb2YgdGhlIEV1cm9wZWFuIG51bWJlciB0byBMLgogICAgICovCiAgICBsYXN0VHlwZSA9IHNvcjsKICAgIGZvciAoaSA9IDA7IGkgPCBzdHJMZW5ndGg7ICsraSkgewogICAgICB0ID0gdHlwZXNbaV07CiAgICAgIGlmICh0ID09PSAnRU4nKSB7CiAgICAgICAgdHlwZXNbaV0gPSAoKGxhc3RUeXBlID09PSAnTCcpID8gJ0wnIDogJ0VOJyk7CiAgICAgIH0gZWxzZSBpZiAodCA9PT0gJ1InIHx8IHQgPT09ICdMJykgewogICAgICAgIGxhc3RUeXBlID0gdDsKICAgICAgfQogICAgfQoKICAgIC8qCiAgICAgTjEuIEEgc2VxdWVuY2Ugb2YgbmV1dHJhbHMgdGFrZXMgdGhlIGRpcmVjdGlvbiBvZiB0aGUgc3Vycm91bmRpbmcgc3Ryb25nCiAgICAgdGV4dCBpZiB0aGUgdGV4dCBvbiBib3RoIHNpZGVzIGhhcyB0aGUgc2FtZSBkaXJlY3Rpb24uIEV1cm9wZWFuIGFuZCBBcmFiaWMKICAgICBudW1iZXJzIGFyZSB0cmVhdGVkIGFzIHRob3VnaCB0aGV5IHdlcmUgUi4gU3RhcnQtb2YtbGV2ZWwtcnVuIChzb3IpIGFuZAogICAgIGVuZC1vZi1sZXZlbC1ydW4gKGVvcikgYXJlIHVzZWQgYXQgbGV2ZWwgcnVuIGJvdW5kYXJpZXMuCiAgICAgKi8KICAgIGZvciAoaSA9IDA7IGkgPCBzdHJMZW5ndGg7ICsraSkgewogICAgICBpZiAodHlwZXNbaV0gPT09ICdPTicpIHsKICAgICAgICB2YXIgZW5kID0gZmluZFVuZXF1YWwodHlwZXMsIGkgKyAxLCAnT04nKTsKICAgICAgICB2YXIgYmVmb3JlID0gc29yOwogICAgICAgIGlmIChpID4gMCkgewogICAgICAgICAgYmVmb3JlID0gdHlwZXNbaSAtIDFdOwogICAgICAgIH0KCiAgICAgICAgdmFyIGFmdGVyID0gZW9yOwogICAgICAgIGlmIChlbmQgKyAxIDwgc3RyTGVuZ3RoKSB7CiAgICAgICAgICBhZnRlciA9IHR5cGVzW2VuZCArIDFdOwogICAgICAgIH0KICAgICAgICBpZiAoYmVmb3JlICE9PSAnTCcpIHsKICAgICAgICAgIGJlZm9yZSA9ICdSJzsKICAgICAgICB9CiAgICAgICAgaWYgKGFmdGVyICE9PSAnTCcpIHsKICAgICAgICAgIGFmdGVyID0gJ1InOwogICAgICAgIH0KICAgICAgICBpZiAoYmVmb3JlID09PSBhZnRlcikgewogICAgICAgICAgc2V0VmFsdWVzKHR5cGVzLCBpLCBlbmQsIGJlZm9yZSk7CiAgICAgICAgfQogICAgICAgIGkgPSBlbmQgLSAxOyAvLyByZXNldCB0byBlbmQgKC0xIHNvIG5leHQgaXRlcmF0aW9uIGlzIG9rKQogICAgICB9CiAgICB9CgogICAgLyoKICAgICBOMi4gQW55IHJlbWFpbmluZyBuZXV0cmFscyB0YWtlIHRoZSBlbWJlZGRpbmcgZGlyZWN0aW9uLgogICAgICovCiAgICBmb3IgKGkgPSAwOyBpIDwgc3RyTGVuZ3RoOyArK2kpIHsKICAgICAgaWYgKHR5cGVzW2ldID09PSAnT04nKSB7CiAgICAgICAgdHlwZXNbaV0gPSBlOwogICAgICB9CiAgICB9CgogICAgLyoKICAgICBJMS4gRm9yIGFsbCBjaGFyYWN0ZXJzIHdpdGggYW4gZXZlbiAobGVmdC10by1yaWdodCkgZW1iZWRkaW5nIGRpcmVjdGlvbiwKICAgICB0aG9zZSBvZiB0eXBlIFIgZ28gdXAgb25lIGxldmVsIGFuZCB0aG9zZSBvZiB0eXBlIEFOIG9yIEVOIGdvIHVwIHR3bwogICAgIGxldmVscy4KICAgICBJMi4gRm9yIGFsbCBjaGFyYWN0ZXJzIHdpdGggYW4gb2RkIChyaWdodC10by1sZWZ0KSBlbWJlZGRpbmcgZGlyZWN0aW9uLAogICAgIHRob3NlIG9mIHR5cGUgTCwgRU4gb3IgQU4gZ28gdXAgb25lIGxldmVsLgogICAgICovCiAgICBmb3IgKGkgPSAwOyBpIDwgc3RyTGVuZ3RoOyArK2kpIHsKICAgICAgdCA9IHR5cGVzW2ldOwogICAgICBpZiAoaXNFdmVuKGxldmVsc1tpXSkpIHsKICAgICAgICBpZiAodCA9PT0gJ1InKSB7CiAgICAgICAgICBsZXZlbHNbaV0gKz0gMTsKICAgICAgICB9IGVsc2UgaWYgKHQgPT09ICdBTicgfHwgdCA9PT0gJ0VOJykgewogICAgICAgICAgbGV2ZWxzW2ldICs9IDI7CiAgICAgICAgfQogICAgICB9IGVsc2UgeyAvLyBpc09kZAogICAgICAgIGlmICh0ID09PSAnTCcgfHwgdCA9PT0gJ0FOJyB8fCB0ID09PSAnRU4nKSB7CiAgICAgICAgICBsZXZlbHNbaV0gKz0gMTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICAvKgogICAgIEwxLiBPbiBlYWNoIGxpbmUsIHJlc2V0IHRoZSBlbWJlZGRpbmcgbGV2ZWwgb2YgdGhlIGZvbGxvd2luZyBjaGFyYWN0ZXJzIHRvCiAgICAgdGhlIHBhcmFncmFwaCBlbWJlZGRpbmcgbGV2ZWw6CgogICAgIHNlZ21lbnQgc2VwYXJhdG9ycywKICAgICBwYXJhZ3JhcGggc2VwYXJhdG9ycywKICAgICBhbnkgc2VxdWVuY2Ugb2Ygd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIHByZWNlZGluZyBhIHNlZ21lbnQgc2VwYXJhdG9yIG9yCiAgICAgcGFyYWdyYXBoIHNlcGFyYXRvciwgYW5kIGFueSBzZXF1ZW5jZSBvZiB3aGl0ZSBzcGFjZSBjaGFyYWN0ZXJzIGF0IHRoZSBlbmQKICAgICBvZiB0aGUgbGluZS4KICAgICAqLwoKICAgIC8vIGRvbid0IGJvdGhlciBhcyB0ZXh0IGlzIG9ubHkgc2luZ2xlIGxpbmUKCiAgICAvKgogICAgIEwyLiBGcm9tIHRoZSBoaWdoZXN0IGxldmVsIGZvdW5kIGluIHRoZSB0ZXh0IHRvIHRoZSBsb3dlc3Qgb2RkIGxldmVsIG9uCiAgICAgZWFjaCBsaW5lLCByZXZlcnNlIGFueSBjb250aWd1b3VzIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgdGhhdCBhcmUgYXQgdGhhdAogICAgIGxldmVsIG9yIGhpZ2hlci4KICAgICAqLwoKICAgIC8vIGZpbmQgaGlnaGVzdCBsZXZlbCAmIGxvd2VzdCBvZGQgbGV2ZWwKICAgIHZhciBoaWdoZXN0TGV2ZWwgPSAtMTsKICAgIHZhciBsb3dlc3RPZGRMZXZlbCA9IDk5OwogICAgdmFyIGxldmVsOwogICAgZm9yIChpID0gMCwgaWkgPSBsZXZlbHMubGVuZ3RoOyBpIDwgaWk7ICsraSkgewogICAgICBsZXZlbCA9IGxldmVsc1tpXTsKICAgICAgaWYgKGhpZ2hlc3RMZXZlbCA8IGxldmVsKSB7CiAgICAgICAgaGlnaGVzdExldmVsID0gbGV2ZWw7CiAgICAgIH0KICAgICAgaWYgKGxvd2VzdE9kZExldmVsID4gbGV2ZWwgJiYgaXNPZGQobGV2ZWwpKSB7CiAgICAgICAgbG93ZXN0T2RkTGV2ZWwgPSBsZXZlbDsKICAgICAgfQogICAgfQoKICAgIC8vIG5vdyByZXZlcnNlIGJldHdlZW4gdGhvc2UgbGltaXRzCiAgICBmb3IgKGxldmVsID0gaGlnaGVzdExldmVsOyBsZXZlbCA+PSBsb3dlc3RPZGRMZXZlbDsgLS1sZXZlbCkgewogICAgICAvLyBmaW5kIHNlZ21lbnRzIHRvIHJldmVyc2UKICAgICAgdmFyIHN0YXJ0ID0gLTE7CiAgICAgIGZvciAoaSA9IDAsIGlpID0gbGV2ZWxzLmxlbmd0aDsgaSA8IGlpOyArK2kpIHsKICAgICAgICBpZiAobGV2ZWxzW2ldIDwgbGV2ZWwpIHsKICAgICAgICAgIGlmIChzdGFydCA+PSAwKSB7CiAgICAgICAgICAgIHJldmVyc2VWYWx1ZXMoY2hhcnMsIHN0YXJ0LCBpKTsKICAgICAgICAgICAgc3RhcnQgPSAtMTsKICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgaWYgKHN0YXJ0IDwgMCkgewogICAgICAgICAgc3RhcnQgPSBpOwogICAgICAgIH0KICAgICAgfQogICAgICBpZiAoc3RhcnQgPj0gMCkgewogICAgICAgIHJldmVyc2VWYWx1ZXMoY2hhcnMsIHN0YXJ0LCBsZXZlbHMubGVuZ3RoKTsKICAgICAgfQogICAgfQoKICAgIC8qCiAgICAgTDMuIENvbWJpbmluZyBtYXJrcyBhcHBsaWVkIHRvIGEgcmlnaHQtdG8tbGVmdCBiYXNlIGNoYXJhY3RlciB3aWxsIGF0IHRoaXMKICAgICBwb2ludCBwcmVjZWRlIHRoZWlyIGJhc2UgY2hhcmFjdGVyLiBJZiB0aGUgcmVuZGVyaW5nIGVuZ2luZSBleHBlY3RzIHRoZW0gdG8KICAgICBmb2xsb3cgdGhlIGJhc2UgY2hhcmFjdGVycyBpbiB0aGUgZmluYWwgZGlzcGxheSBwcm9jZXNzLCB0aGVuIHRoZSBvcmRlcmluZwogICAgIG9mIHRoZSBtYXJrcyBhbmQgdGhlIGJhc2UgY2hhcmFjdGVyIG11c3QgYmUgcmV2ZXJzZWQuCiAgICAgKi8KCiAgICAvLyBkb24ndCBib3RoZXIgZm9yIG5vdwoKICAgIC8qCiAgICAgTDQuIEEgY2hhcmFjdGVyIHRoYXQgcG9zc2Vzc2VzIHRoZSBtaXJyb3JlZCBwcm9wZXJ0eSBhcyBzcGVjaWZpZWQgYnkKICAgICBTZWN0aW9uIDQuNywgTWlycm9yZWQsIG11c3QgYmUgZGVwaWN0ZWQgYnkgYSBtaXJyb3JlZCBnbHlwaCBpZiB0aGUgcmVzb2x2ZWQKICAgICBkaXJlY3Rpb25hbGl0eSBvZiB0aGF0IGNoYXJhY3RlciBpcyBSLgogICAgICovCgogICAgLy8gZG9uJ3QgbWlycm9yIGFzIGNoYXJhY3RlcnMgYXJlIGFscmVhZHkgbWlycm9yZWQgaW4gdGhlIHBkZgoKICAgIC8vIEZpbmFsbHksIHJldHVybiBzdHJpbmcKICAgIHZhciByZXN1bHQgPSAnJzsKICAgIGZvciAoaSA9IDAsIGlpID0gY2hhcnMubGVuZ3RoOyBpIDwgaWk7ICsraSkgewogICAgICB2YXIgY2ggPSBjaGFyc1tpXTsKICAgICAgaWYgKGNoICE9PSAnPCcgJiYgY2ggIT09ICc+JykgewogICAgICAgIHJlc3VsdCArPSBjaDsKICAgICAgfQogICAgfQogICAgcmV0dXJuIGNyZWF0ZUJpZGlUZXh0KHJlc3VsdCwgaXNMVFIpOwogIH0KCiAgcmV0dXJuIGJpZGk7Cn0pKCk7CgovKiAtKi0gTW9kZTogSmF2YTsgdGFiLXdpZHRoOiAyOyBpbmRlbnQtdGFicy1tb2RlOiBuaWw7IGMtYmFzaWMtb2Zmc2V0OiAyIC0qLSAqLwovKiB2aW06IHNldCBzaGlmdHdpZHRoPTIgdGFic3RvcD0yIGF1dG9pbmRlbnQgY2luZGVudCBleHBhbmR0YWI6ICovCgovKiBDb3B5cmlnaHQgMjAxNCBPcGVyYSBTb2Z0d2FyZSBBU0EKICoKICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAqCiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKICoKICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAogKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KICoKICoKICogQmFzZWQgb24gaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9zbWhhc2hlci93aWtpL011cm11ckhhc2gzLgogKiBIYXNoZXMgcm91Z2hseSAxMDAgS0IgcGVyIG1pbGxpc2Vjb25kIG9uIGk3IDMuNCBHSHouCiAqLwovKiBnbG9iYWxzIFVpbnQzMkFycmF5VmlldyAqLwoKJ3VzZSBzdHJpY3QnOwoKdmFyIE11cm11ckhhc2gzXzY0ID0gKGZ1bmN0aW9uIE11cm11ckhhc2gzXzY0Q2xvc3VyZSAoc2VlZCkgewogIC8vIFdvcmthcm91bmQgZm9yIG1pc3NpbmcgbWF0aCBwcmVjaXNvbiBpbiBKUy4KICB2YXIgTUFTS19ISUdIID0gMHhmZmZmMDAwMDsKICB2YXIgTUFTS19MT1cgPSAweGZmZmY7CgogIGZ1bmN0aW9uIE11cm11ckhhc2gzXzY0IChzZWVkKSB7CiAgICB2YXIgU0VFRCA9IDB4YzNkMmUxZjA7CiAgICB0aGlzLmgxID0gc2VlZCA/IHNlZWQgJiAweGZmZmZmZmZmIDogU0VFRDsKICAgIHRoaXMuaDIgPSBzZWVkID8gc2VlZCAmIDB4ZmZmZmZmZmYgOiBTRUVEOwogIH0KCiAgdmFyIGFsd2F5c1VzZVVpbnQzMkFycmF5VmlldyA9IGZhbHNlOwovLyNpZiAhKEZJUkVGT1ggfHwgTU9aQ0VOVFJBTCB8fCBCMkcgfHwgQ0hST01FKQogIC8vIG9sZCB3ZWJraXRzIGhhdmUgaXNzdWVzIHdpdGggbm9uLWFsaWduZWQgYXJyYXlzCiAgdHJ5IHsKICAgIG5ldyBVaW50MzJBcnJheShuZXcgVWludDhBcnJheSg1KS5idWZmZXIsIDAsIDEpOwogIH0gY2F0Y2ggKGUpIHsKICAgIGFsd2F5c1VzZVVpbnQzMkFycmF5VmlldyA9IHRydWU7CiAgfQovLyNlbmRpZgoKICBNdXJtdXJIYXNoM182NC5wcm90b3R5cGUgPSB7CiAgICB1cGRhdGU6IGZ1bmN0aW9uIE11cm11ckhhc2gzXzY0X3VwZGF0ZShpbnB1dCkgewogICAgICB2YXIgdXNlVWludDMyQXJyYXlWaWV3ID0gYWx3YXlzVXNlVWludDMyQXJyYXlWaWV3OwogICAgICB2YXIgaTsKICAgICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHsKICAgICAgICB2YXIgZGF0YSA9IG5ldyBVaW50OEFycmF5KGlucHV0Lmxlbmd0aCAqIDIpOwogICAgICAgIHZhciBsZW5ndGggPSAwOwogICAgICAgIGZvciAoaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykgewogICAgICAgICAgdmFyIGNvZGUgPSBpbnB1dC5jaGFyQ29kZUF0KGkpOwogICAgICAgICAgaWYgKGNvZGUgPD0gMHhmZikgewogICAgICAgICAgICBkYXRhW2xlbmd0aCsrXSA9IGNvZGU7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgZGF0YVtsZW5ndGgrK10gPSBjb2RlID4+PiA4OwogICAgICAgICAgICBkYXRhW2xlbmd0aCsrXSA9IGNvZGUgJiAweGZmOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSBlbHNlIGlmIChpbnB1dCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHsKICAgICAgICBkYXRhID0gaW5wdXQ7CiAgICAgICAgbGVuZ3RoID0gZGF0YS5sZW5ndGg7CiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGlucHV0ID09PSAnb2JqZWN0JyAmJiAoJ2xlbmd0aCcgaW4gaW5wdXQpKSB7CiAgICAgICAgLy8gcHJvY2Vzc2luZyByZWd1bGFyIGFycmF5cyBhcyB3ZWxsLCBlLmcuIGZvciBJRTkKICAgICAgICBkYXRhID0gaW5wdXQ7CiAgICAgICAgbGVuZ3RoID0gZGF0YS5sZW5ndGg7CiAgICAgICAgdXNlVWludDMyQXJyYXlWaWV3ID0gdHJ1ZTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1dyb25nIGRhdGEgZm9ybWF0IGluIE11cm11ckhhc2gzXzY0X3VwZGF0ZS4gJyArCiAgICAgICAgICAgICAgICAgICAgICAgICdJbnB1dCBtdXN0IGJlIGEgc3RyaW5nIG9yIGFycmF5LicpOwogICAgICB9CgogICAgICB2YXIgYmxvY2tDb3VudHMgPSBsZW5ndGggPj4gMjsKICAgICAgdmFyIHRhaWxMZW5ndGggPSBsZW5ndGggLSBibG9ja0NvdW50cyAqIDQ7CiAgICAgIC8vIHdlIGRvbid0IGNhcmUgYWJvdXQgZW5kaWFubmVzcyBoZXJlCiAgICAgIHZhciBkYXRhVWludDMyID0gdXNlVWludDMyQXJyYXlWaWV3ID8KICAgICAgICBuZXcgVWludDMyQXJyYXlWaWV3KGRhdGEsIGJsb2NrQ291bnRzKSA6CiAgICAgICAgbmV3IFVpbnQzMkFycmF5KGRhdGEuYnVmZmVyLCAwLCBibG9ja0NvdW50cyk7CiAgICAgIHZhciBrMSA9IDA7CiAgICAgIHZhciBrMiA9IDA7CiAgICAgIHZhciBoMSA9IHRoaXMuaDE7CiAgICAgIHZhciBoMiA9IHRoaXMuaDI7CiAgICAgIHZhciBDMSA9IDB4Y2M5ZTJkNTE7CiAgICAgIHZhciBDMiA9IDB4MWI4NzM1OTM7CiAgICAgIHZhciBDMV9MT1cgPSBDMSAmIE1BU0tfTE9XOwogICAgICB2YXIgQzJfTE9XID0gQzIgJiBNQVNLX0xPVzsKCiAgICAgIGZvciAoaSA9IDA7IGkgPCBibG9ja0NvdW50czsgaSsrKSB7CiAgICAgICAgaWYgKGkgJiAxKSB7CiAgICAgICAgICBrMSA9IGRhdGFVaW50MzJbaV07CiAgICAgICAgICBrMSA9IChrMSAqIEMxICYgTUFTS19ISUdIKSB8IChrMSAqIEMxX0xPVyAmIE1BU0tfTE9XKTsKICAgICAgICAgIGsxID0gazEgPDwgMTUgfCBrMSA+Pj4gMTc7CiAgICAgICAgICBrMSA9IChrMSAqIEMyICYgTUFTS19ISUdIKSB8IChrMSAqIEMyX0xPVyAmIE1BU0tfTE9XKTsKICAgICAgICAgIGgxIF49IGsxOwogICAgICAgICAgaDEgPSBoMSA8PCAxMyB8IGgxID4+PiAxOTsKICAgICAgICAgIGgxID0gaDEgKiA1ICsgMHhlNjU0NmI2NDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgazIgPSBkYXRhVWludDMyW2ldOwogICAgICAgICAgazIgPSAoazIgKiBDMSAmIE1BU0tfSElHSCkgfCAoazIgKiBDMV9MT1cgJiBNQVNLX0xPVyk7CiAgICAgICAgICBrMiA9IGsyIDw8IDE1IHwgazIgPj4+IDE3OwogICAgICAgICAgazIgPSAoazIgKiBDMiAmIE1BU0tfSElHSCkgfCAoazIgKiBDMl9MT1cgJiBNQVNLX0xPVyk7CiAgICAgICAgICBoMiBePSBrMjsKICAgICAgICAgIGgyID0gaDIgPDwgMTMgfCBoMiA+Pj4gMTk7CiAgICAgICAgICBoMiA9IGgyICogNSArIDB4ZTY1NDZiNjQ7CiAgICAgICAgfQogICAgICB9CgogICAgICBrMSA9IDA7CgogICAgICBzd2l0Y2ggKHRhaWxMZW5ndGgpIHsKICAgICAgICBjYXNlIDM6CiAgICAgICAgICBrMSBePSBkYXRhW2Jsb2NrQ291bnRzICogNCArIDJdIDw8IDE2OwogICAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqLwogICAgICAgIGNhc2UgMjoKICAgICAgICAgIGsxIF49IGRhdGFbYmxvY2tDb3VudHMgKiA0ICsgMV0gPDwgODsKICAgICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi8KICAgICAgICBjYXNlIDE6CiAgICAgICAgICBrMSBePSBkYXRhW2Jsb2NrQ291bnRzICogNF07CiAgICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovCiAgICAgICAgazEgPSAoazEgKiBDMSAmIE1BU0tfSElHSCkgfCAoazEgKiBDMV9MT1cgJiBNQVNLX0xPVyk7CiAgICAgICAgazEgPSBrMSA8PCAxNSB8IGsxID4+PiAxNzsKICAgICAgICBrMSA9IChrMSAqIEMyICYgTUFTS19ISUdIKSB8IChrMSAqIEMyX0xPVyAmIE1BU0tfTE9XKTsKICAgICAgICBpZiAoYmxvY2tDb3VudHMgJiAxKSB7CiAgICAgICAgICBoMSBePSBrMTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgaDIgXj0gazE7CiAgICAgICAgfQogICAgICB9CgogICAgICB0aGlzLmgxID0gaDE7CiAgICAgIHRoaXMuaDIgPSBoMjsKICAgICAgcmV0dXJuIHRoaXM7CiAgICB9LAoKICAgIGhleGRpZ2VzdDogZnVuY3Rpb24gTXVybXVySGFzaDNfNjRfaGV4ZGlnZXN0ICgpIHsKICAgICAgdmFyIGgxID0gdGhpcy5oMTsKICAgICAgdmFyIGgyID0gdGhpcy5oMjsKCiAgICAgIGgxIF49IGgyID4+PiAxOwogICAgICBoMSA9IChoMSAqIDB4ZWQ1NThjY2QgJiBNQVNLX0hJR0gpIHwgKGgxICogMHg4Y2NkICYgTUFTS19MT1cpOwogICAgICBoMiA9IChoMiAqIDB4ZmY1MWFmZDcgJiBNQVNLX0hJR0gpIHwKICAgICAgICAgICAoKChoMiA8PCAxNiB8IGgxID4+PiAxNikgKiAweGFmZDdlZDU1ICYgTUFTS19ISUdIKSA+Pj4gMTYpOwogICAgICBoMSBePSBoMiA+Pj4gMTsKICAgICAgaDEgPSAoaDEgKiAweDFhODVlYzUzICYgTUFTS19ISUdIKSB8IChoMSAqIDB4ZWM1MyAmIE1BU0tfTE9XKTsKICAgICAgaDIgPSAoaDIgKiAweGM0Y2ViOWZlICYgTUFTS19ISUdIKSB8CiAgICAgICAgICAgKCgoaDIgPDwgMTYgfCBoMSA+Pj4gMTYpICogMHhiOWZlMWE4NSAmIE1BU0tfSElHSCkgPj4+IDE2KTsKICAgICAgaDEgXj0gaDIgPj4+IDE7CgogICAgICBmb3IgKHZhciBpID0gMCwgYXJyID0gW2gxLCBoMl0sIHN0ciA9ICcnOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgdmFyIGhleCA9IChhcnJbaV0gPj4+IDApLnRvU3RyaW5nKDE2KTsKICAgICAgICB3aGlsZSAoaGV4Lmxlbmd0aCA8IDgpIHsKICAgICAgICAgIGhleCA9ICcwJyArIGhleDsKICAgICAgICB9CiAgICAgICAgc3RyICs9IGhleDsKICAgICAgfQoKICAgICAgcmV0dXJuIHN0cjsKICAgIH0KICB9OwoKICByZXR1cm4gTXVybXVySGFzaDNfNjQ7Cn0pKCk7CgoKfSkuY2FsbCgodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpID8gdGhpcyA6IHdpbmRvdyk7CgppZiAoIVBERkpTLndvcmtlclNyYyAmJiB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnKSB7CiAgLy8gd29ya2VyU3JjIGlzIG5vdCBzZXQgLS0gdXNpbmcgbGFzdCBzY3JpcHQgdXJsIHRvIGRlZmluZSBkZWZhdWx0IGxvY2F0aW9uCiAgUERGSlMud29ya2VyU3JjID0gKGZ1bmN0aW9uICgpIHsKICAgICd1c2Ugc3RyaWN0JzsKICAgIHZhciBzY3JpcHRUYWdDb250YWluZXIgPSBkb2N1bWVudC5ib2R5IHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTsKICAgIHZhciBwZGZqc1NyYyA9IHNjcmlwdFRhZ0NvbnRhaW5lci5sYXN0Q2hpbGQuc3JjOwogICAgcmV0dXJuIHBkZmpzU3JjICYmIHBkZmpzU3JjLnJlcGxhY2UoL1wuanMkL2ksICcud29ya2VyLmpzJyk7CiAgfSkoKTsKfQoK]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/ViewerJS/pdfjsversion.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[dmFyIC8qKkBjb25zdHshc3RyaW5nfSovcGRmanNfdmVyc2lvbiA9ICJ2MS4xLjExNCI7Cg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/ViewerJS/PDFViewerPlugin.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnBhZ2UgewogICAgbWFyZ2luOiA3cHggYXV0byA3cHggYXV0bzsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBiYWNrZ3JvdW5kLWNsaXA6IGNvbnRlbnQtYm94OwogICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7CiAgICAKICAgIGJveC1zaGFkb3c6ICAgICAgICAgMHB4IDBweCA3cHggcmdiYSgwLCAwLCAwLCAwLjc1KTsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogMHB4IDBweCA3cHggcmdiYSgwLCAwLCAwLCAwLjc1KTsKICAgIC1tb3otYm94LXNoYWRvdzogICAgMHB4IDBweCA3cHggcmdiYSgwLCAwLCAwLCAwLjc1KTsKICAgIC1tcy1ib3gtc2hhZG93OiAgICAwcHggMHB4IDdweCByZ2JhKDAsIDAsIDAsIDAuNzUpOwogICAgLW8tYm94LXNoYWRvdzogICAgMHB4IDBweCA3cHggcmdiYSgwLCAwLCAwLCAwLjc1KTsKfQoKLnRleHRMYXllciB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxlZnQ6IDA7CiAgdG9wOiAwOwogIHJpZ2h0OiAwOwogIGJvdHRvbTogMDsKICBjb2xvcjogIzAwMDsKICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsKICBvdmVyZmxvdzogaGlkZGVuOwp9CgoudGV4dExheWVyID4gZGl2IHsKICBjb2xvcjogdHJhbnNwYXJlbnQ7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxpbmUtaGVpZ2h0OiAxOwogIHdoaXRlLXNwYWNlOiBwcmU7CiAgY3Vyc29yOiB0ZXh0Owp9Cgo6OnNlbGVjdGlvbiB7IGJhY2tncm91bmQ6cmdiYSgwLDAsMjU1LDAuMyk7IH0KOjotbW96LXNlbGVjdGlvbiB7IGJhY2tncm91bmQ6cmdiYSgwLDAsMjU1LDAuMyk7IH0KCg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/ViewerJS/PDFViewerPlugin.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIEBsaWNlbnNlCiAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEtPIEdtYkggPGNvcHlyaWdodEBrb2dtYmguY29tPgogKgogKiBAbGljc3RhcnQKICogVGhlIEphdmFTY3JpcHQgY29kZSBpbiB0aGlzIHBhZ2UgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQKICogYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogKiAoR05VIEFHUEwpIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mCiAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLiAgVGhlIGNvZGUgaXMgZGlzdHJpYnV0ZWQKICogV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IKICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBBR1BMIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogKiBhbG9uZyB3aXRoIHRoaXMgY29kZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KICoKICogQXMgYWRkaXRpb25hbCBwZXJtaXNzaW9uIHVuZGVyIEdOVSBBR1BMIHZlcnNpb24gMyBzZWN0aW9uIDcsIHlvdQogKiBtYXkgZGlzdHJpYnV0ZSBub24tc291cmNlIChlLmcuLCBtaW5pbWl6ZWQgb3IgY29tcGFjdGVkKSBmb3JtcyBvZgogKiB0aGF0IGNvZGUgd2l0aG91dCB0aGUgY29weSBvZiB0aGUgR05VIEdQTCBub3JtYWxseSByZXF1aXJlZCBieQogKiBzZWN0aW9uIDQsIHByb3ZpZGVkIHlvdSBpbmNsdWRlIHRoaXMgbGljZW5zZSBub3RpY2UgYW5kIGEgVVJMCiAqIHRocm91Z2ggd2hpY2ggcmVjaXBpZW50cyBjYW4gYWNjZXNzIHRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZS4KICoKICogQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgQUdQTCwgYW55IEhUTUwgZmlsZSB3aGljaCBtZXJlbHkgbWFrZXMgZnVuY3Rpb24KICogY2FsbHMgdG8gdGhpcyBjb2RlLCBhbmQgZm9yIHRoYXQgcHVycG9zZSBpbmNsdWRlcyBpdCBieSByZWZlcmVuY2Ugc2hhbGwgYmUKICogZGVlbWVkIGEgc2VwYXJhdGUgd29yayBmb3IgY29weXJpZ2h0IGxhdyBwdXJwb3Nlcy4gSW4gYWRkaXRpb24sIHRoZSBjb3B5cmlnaHQKICogaG9sZGVycyBvZiB0aGlzIGNvZGUgZ2l2ZSB5b3UgcGVybWlzc2lvbiB0byBjb21iaW5lIHRoaXMgY29kZSB3aXRoIGZyZWUKICogc29mdHdhcmUgbGlicmFyaWVzIHRoYXQgYXJlIHJlbGVhc2VkIHVuZGVyIHRoZSBHTlUgTEdQTC4gWW91IG1heSBjb3B5IGFuZAogKiBkaXN0cmlidXRlIHN1Y2ggYSBzeXN0ZW0gZm9sbG93aW5nIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFHUEwgZm9yIHRoaXMgY29kZQogKiBhbmQgdGhlIExHUEwgZm9yIHRoZSBsaWJyYXJpZXMuIElmIHlvdSBtb2RpZnkgdGhpcyBjb2RlLCB5b3UgbWF5IGV4dGVuZCB0aGlzCiAqIGV4Y2VwdGlvbiB0byB5b3VyIHZlcnNpb24gb2YgdGhlIGNvZGUsIGJ1dCB5b3UgYXJlIG5vdCBvYmxpZ2F0ZWQgdG8gZG8gc28uCiAqIElmIHlvdSBkbyBub3Qgd2lzaCB0byBkbyBzbywgZGVsZXRlIHRoaXMgZXhjZXB0aW9uIHN0YXRlbWVudCBmcm9tIHlvdXIKICogdmVyc2lvbi4KICoKICogVGhpcyBsaWNlbnNlIGFwcGxpZXMgdG8gdGhpcyBlbnRpcmUgY29tcGlsYXRpb24uCiAqIEBsaWNlbmQKICogQHNvdXJjZTogaHR0cDovL3ZpZXdlcmpzLm9yZy8KICogQHNvdXJjZTogaHR0cDovL2dpdGh1Yi5jb20va29nbWJoL1ZpZXdlckpTCiAqLwoKLypnbG9iYWwgZG9jdW1lbnQsIFBERkpTLCBjb25zb2xlLCBUZXh0TGF5ZXJCdWlsZGVyKi8KCgpmdW5jdGlvbiBQREZWaWV3ZXJQbHVnaW4oKSB7CiAgICAidXNlIHN0cmljdCI7CgogICAgZnVuY3Rpb24gbG9hZFNjcmlwdChwYXRoLCBjYWxsYmFjaykgewogICAgICAgIHZhciBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKICAgICAgICBzY3JpcHQuYXN5bmMgPSBmYWxzZTsKICAgICAgICBzY3JpcHQuc3JjID0gcGF0aDsKICAgICAgICBzY3JpcHQudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnOwogICAgICAgIHNjcmlwdC5vbmxvYWQgPSBjYWxsYmFjayB8fCBzY3JpcHQub25sb2FkOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0uYXBwZW5kQ2hpbGQoc2NyaXB0KTsKICAgIH0KCiAgICBmdW5jdGlvbiBpbml0KGNhbGxiYWNrKSB7CiAgICAgICAgdmFyIHBsdWdpbkNTUzsKCiAgICAgICAgbG9hZFNjcmlwdCgnLi9jb21wYXRpYmlsaXR5LmpzJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICBsb2FkU2NyaXB0KCcuL3BkZi5qcycpOwogICAgICAgICAgICBsb2FkU2NyaXB0KCcuL3VpX3V0aWxzLmpzJyk7CiAgICAgICAgICAgIGxvYWRTY3JpcHQoJy4vdGV4dF9sYXllcl9idWlsZGVyLmpzJyk7CiAgICAgICAgICAgIGxvYWRTY3JpcHQoJy4vcGRmanN2ZXJzaW9uLmpzJywgY2FsbGJhY2spOwogICAgICAgIH0pOwoKICAgICAgICBwbHVnaW5DU1MgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaW5rJyk7CiAgICAgICAgcGx1Z2luQ1NTLnNldEF0dHJpYnV0ZSgicmVsIiwgInN0eWxlc2hlZXQiKTsKICAgICAgICBwbHVnaW5DU1Muc2V0QXR0cmlidXRlKCJ0eXBlIiwgInRleHQvY3NzIik7CiAgICAgICAgcGx1Z2luQ1NTLnNldEF0dHJpYnV0ZSgiaHJlZiIsICIuL1BERlZpZXdlclBsdWdpbi5jc3MiKTsKICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHBsdWdpbkNTUyk7CiAgICB9CgogICAgdmFyIHNlbGYgPSB0aGlzLAogICAgICAgIHBhZ2VzID0gW10sCiAgICAgICAgZG9tUGFnZXMgPSBbXSwKICAgICAgICBwYWdlVGV4dCA9IFtdLAogICAgICAgIHJlbmRlcmluZ1N0YXRlcyA9IFtdLAogICAgICAgIFJFTkRFUklORyA9IHsKICAgICAgICAgICAgQkxBTks6IDAsCiAgICAgICAgICAgIFJVTk5JTkc6IDEsCiAgICAgICAgICAgIEZJTklTSEVEOiAyCiAgICAgICAgfSwKICAgICAgICBjb250YWluZXIgPSBudWxsLAogICAgICAgIHBkZkRvY3VtZW50ID0gbnVsbCwKICAgICAgICBwYWdlVmlld1Njcm9sbCA9IG51bGwsCiAgICAgICAgaXNQcmVzZW50YXRpb25Nb2RlID0gZmFsc2UsCiAgICAgICAgc2NhbGUgPSAxLAogICAgICAgIGN1cnJlbnRQYWdlID0gMSwKICAgICAgICBwYWdlV2lkdGgsCiAgICAgICAgcGFnZUhlaWdodCwKICAgICAgICBjcmVhdGVkUGFnZUNvdW50ID0gMDsKCiAgICBmdW5jdGlvbiBzY3JvbGxJbnRvVmlldyhlbGVtKSB7CiAgICAgICAgZWxlbS5wYXJlbnROb2RlLnNjcm9sbFRvcCA9IGVsZW0ub2Zmc2V0VG9wOwogICAgfQoKICAgIGZ1bmN0aW9uIGlzU2Nyb2xsZWRJbnRvVmlldyhlbGVtKSB7CiAgICAgICAgdmFyIGRvY1ZpZXdUb3AgPSBjb250YWluZXIuc2Nyb2xsVG9wLAogICAgICAgICAgICBkb2NWaWV3Qm90dG9tID0gZG9jVmlld1RvcCArIGNvbnRhaW5lci5jbGllbnRIZWlnaHQsCiAgICAgICAgICAgIGVsZW1Ub3AgPSBlbGVtLm9mZnNldFRvcCwKICAgICAgICAgICAgZWxlbUJvdHRvbSA9IGVsZW1Ub3AgKyBlbGVtLmNsaWVudEhlaWdodDsKCiAgICAgICAgLy8gSXMgaW4gdmlldyBpZiBlaXRoZXIgdGhlIHRvcCBvciB0aGUgYm90dG9tIG9mIHRoZSBwYWdlIGlzIGJldHdlZW4gdGhlCiAgICAgICAgLy8gZG9jdW1lbnQgdmlld3BvcnQgYm91bmRzLAogICAgICAgIC8vIG9yIGlmIHRoZSB0b3AgaXMgYWJvdmUgdGhlIHZpZXdwb3J0IGFuZCB0aGUgYm90dG9tIGlzIGJlbG93IGl0LgogICAgICAgIHJldHVybiAoZWxlbVRvcCA+PSBkb2NWaWV3VG9wICYmIGVsZW1Ub3AgPCBkb2NWaWV3Qm90dG9tKQogICAgICAgICAgICAgICAgfHwgKGVsZW1Cb3R0b20gPj0gZG9jVmlld1RvcCAmJiBlbGVtQm90dG9tIDwgZG9jVmlld0JvdHRvbSkKICAgICAgICAgICAgICAgIHx8IChlbGVtVG9wIDwgZG9jVmlld1RvcCAmJiBlbGVtQm90dG9tID49IGRvY1ZpZXdCb3R0b20pOwogICAgfQoKICAgIGZ1bmN0aW9uIGdldERvbVBhZ2UocGFnZSkgewogICAgICAgIHJldHVybiBkb21QYWdlc1twYWdlLnBhZ2VJbmRleF07CiAgICB9CiAgICBmdW5jdGlvbiBnZXRQYWdlVGV4dChwYWdlKSB7CiAgICAgICAgcmV0dXJuIHBhZ2VUZXh0W3BhZ2UucGFnZUluZGV4XTsKICAgIH0KICAgIGZ1bmN0aW9uIGdldFJlbmRlcmluZ1N0YXR1cyhwYWdlKSB7CiAgICAgICAgcmV0dXJuIHJlbmRlcmluZ1N0YXRlc1twYWdlLnBhZ2VJbmRleF07CiAgICB9CiAgICBmdW5jdGlvbiBzZXRSZW5kZXJpbmdTdGF0dXMocGFnZSwgcmVuZGVyU3RhdHVzKSB7CiAgICAgICAgcmVuZGVyaW5nU3RhdGVzW3BhZ2UucGFnZUluZGV4XSA9IHJlbmRlclN0YXR1czsKICAgIH0KCiAgICBmdW5jdGlvbiB1cGRhdGVQYWdlRGltZW5zaW9ucyhwYWdlLCB3aWR0aCwgaGVpZ2h0KSB7CiAgICAgICAgdmFyIGRvbVBhZ2UgPSBnZXREb21QYWdlKHBhZ2UpLAogICAgICAgICAgICBjYW52YXMgPSBkb21QYWdlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdjYW52YXMnKVswXSwKICAgICAgICAgICAgdGV4dExheWVyID0gZG9tUGFnZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZGl2JylbMF0sCiAgICAgICAgICAgIGNzc1NjYWxlID0gJ3NjYWxlKCcgKyBzY2FsZSArICcsICcgKyBzY2FsZSArICcpJzsKCiAgICAgICAgZG9tUGFnZS5zdHlsZS53aWR0aCA9IHdpZHRoICsgInB4IjsKICAgICAgICBkb21QYWdlLnN0eWxlLmhlaWdodCA9IGhlaWdodCArICJweCI7CgogICAgICAgIGNhbnZhcy53aWR0aCA9IHdpZHRoOwogICAgICAgIGNhbnZhcy5oZWlnaHQgPSBoZWlnaHQ7CgogICAgICAgIHRleHRMYXllci5zdHlsZS53aWR0aCA9IHdpZHRoICsgInB4IjsKICAgICAgICB0ZXh0TGF5ZXIuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgInB4IjsKCiAgICAgICAgQ3VzdG9tU3R5bGUuc2V0UHJvcCgndHJhbnNmb3JtJywgdGV4dExheWVyLCBjc3NTY2FsZSk7CiAgICAgICAgQ3VzdG9tU3R5bGUuc2V0UHJvcCgndHJhbnNmb3JtT3JpZ2luJywgdGV4dExheWVyLCAnMCUgMCUnKTsKCiAgICAgICAgLy8gT25jZSB0aGUgcGFnZSBkaW1lbnNpb24gaXMgdXBkYXRlZCwgdGhlIHJlbmRlcmluZyBzdGF0ZSBpcyBibGFuay4KICAgICAgICBzZXRSZW5kZXJpbmdTdGF0dXMocGFnZSwgUkVOREVSSU5HLkJMQU5LKTsKICAgIH0KCiAgICBmdW5jdGlvbiByZW5kZXJQYWdlKHBhZ2UpIHsKICAgICAgICB2YXIgZG9tUGFnZSA9IGdldERvbVBhZ2UocGFnZSksCiAgICAgICAgICAgIHRleHRMYXllciA9IGdldFBhZ2VUZXh0KHBhZ2UpLAogICAgICAgICAgICBjYW52YXMgPSBkb21QYWdlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdjYW52YXMnKVswXTsKCiAgICAgICAgaWYgKGdldFJlbmRlcmluZ1N0YXR1cyhwYWdlKSA9PT0gUkVOREVSSU5HLkJMQU5LKSB7CiAgICAgICAgICAgIHNldFJlbmRlcmluZ1N0YXR1cyhwYWdlLCBSRU5ERVJJTkcuUlVOTklORyk7CiAgICAgICAgICAgIHBhZ2UucmVuZGVyKHsKICAgICAgICAgICAgICAgIGNhbnZhc0NvbnRleHQ6IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpLAogICAgICAgICAgICAgICAgdGV4dExheWVyOiB0ZXh0TGF5ZXIsCiAgICAgICAgICAgICAgICB2aWV3cG9ydDogcGFnZS5nZXRWaWV3cG9ydChzY2FsZSkKICAgICAgICAgICAgfSkucHJvbWlzZS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHNldFJlbmRlcmluZ1N0YXR1cyhwYWdlLCBSRU5ERVJJTkcuRklOSVNIRUQpOwogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gY29tcGxldGVMb2FkaW5nKCkgewogICAgICAgIGRvbVBhZ2VzLmZvckVhY2goZnVuY3Rpb24gKGRvbVBhZ2UpIHsKICAgICAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGRvbVBhZ2UpOwogICAgICAgIH0pOwoKICAgICAgICBzZWxmLnNob3dQYWdlKDEpOwogICAgICAgIHNlbGYub25Mb2FkKCk7CiAgICB9CgogICAgZnVuY3Rpb24gY3JlYXRlUGFnZShwYWdlKSB7CiAgICAgICAgdmFyIHBhZ2VOdW1iZXIsCiAgICAgICAgICAgIHRleHRMYXllckRpdiwKICAgICAgICAgICAgdGV4dExheWVyLAogICAgICAgICAgICBjYW52YXMsCiAgICAgICAgICAgIGRvbVBhZ2UsCiAgICAgICAgICAgIHZpZXdwb3J0OwoKICAgICAgICBwYWdlTnVtYmVyID0gcGFnZS5wYWdlSW5kZXggKyAxOwoKICAgICAgICB2aWV3cG9ydCA9IHBhZ2UuZ2V0Vmlld3BvcnQoc2NhbGUpOwoKICAgICAgICBkb21QYWdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgZG9tUGFnZS5pZCA9ICdwYWdlQ29udGFpbmVyJyArIHBhZ2VOdW1iZXI7CiAgICAgICAgZG9tUGFnZS5jbGFzc05hbWUgPSAncGFnZSc7CiAgICAgICAgaWYgKHNlbGYuaXNTbGlkZXNob3coKSkgewogICAgICAgICAgICBkb21QYWdlLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAgfQoKICAgICAgICBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsKICAgICAgICBjYW52YXMuaWQgPSAnY2FudmFzJyArIHBhZ2VOdW1iZXI7CgogICAgICAgIHRleHRMYXllckRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgIHRleHRMYXllckRpdi5jbGFzc05hbWUgPSAndGV4dExheWVyJzsKICAgICAgICB0ZXh0TGF5ZXJEaXYuaWQgPSAndGV4dExheWVyJyArIHBhZ2VOdW1iZXI7CgogICAgICAgIGRvbVBhZ2UuYXBwZW5kQ2hpbGQoY2FudmFzKTsKICAgICAgICBkb21QYWdlLmFwcGVuZENoaWxkKHRleHRMYXllckRpdik7CgogICAgICAgIHBhZ2VzW3BhZ2UucGFnZUluZGV4XSA9IHBhZ2U7CiAgICAgICAgZG9tUGFnZXNbcGFnZS5wYWdlSW5kZXhdID0gZG9tUGFnZTsKICAgICAgICByZW5kZXJpbmdTdGF0ZXNbcGFnZS5wYWdlSW5kZXhdID0gUkVOREVSSU5HLkJMQU5LOwoKICAgICAgICB1cGRhdGVQYWdlRGltZW5zaW9ucyhwYWdlLCB2aWV3cG9ydC53aWR0aCwgdmlld3BvcnQuaGVpZ2h0KTsKICAgICAgICBwYWdlV2lkdGggPSB2aWV3cG9ydC53aWR0aDsKICAgICAgICBwYWdlSGVpZ2h0ID0gdmlld3BvcnQuaGVpZ2h0OwoKICAgICAgICB0ZXh0TGF5ZXIgPSBuZXcgVGV4dExheWVyQnVpbGRlcih7CiAgICAgICAgICAgIHRleHRMYXllckRpdjogdGV4dExheWVyRGl2LAogICAgICAgICAgICB2aWV3cG9ydDogdmlld3BvcnQsCiAgICAgICAgICAgIHBhZ2VJbmRleDogcGFnZU51bWJlciAtIDEKICAgICAgICB9KTsKICAgICAgICBwYWdlLmdldFRleHRDb250ZW50KCkudGhlbihmdW5jdGlvbiAodGV4dENvbnRlbnQpIHsKICAgICAgICAgICAgdGV4dExheWVyLnNldFRleHRDb250ZW50KHRleHRDb250ZW50KTsKICAgICAgICB9KTsKICAgICAgICBwYWdlVGV4dFtwYWdlLnBhZ2VJbmRleF0gPSB0ZXh0TGF5ZXI7CgogICAgICAgIGNyZWF0ZWRQYWdlQ291bnQgKz0gMTsKICAgICAgICBpZiAoY3JlYXRlZFBhZ2VDb3VudCA9PT0gKHBkZkRvY3VtZW50Lm51bVBhZ2VzKSkgewogICAgICAgICAgICBjb21wbGV0ZUxvYWRpbmcoKTsKICAgICAgICB9CiAgICB9CgogICAgdGhpcy5pbml0aWFsaXplID0gZnVuY3Rpb24gKHZpZXdDb250YWluZXIsIGxvY2F0aW9uKSB7CiAgICAgICAgdmFyIHNlbGYgPSB0aGlzLAogICAgICAgICAgICBpLAogICAgICAgICAgICBwbHVnaW5DU1M7CgoKICAgICAgICBpbml0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgUERGSlMud29ya2VyU3JjID0gIi4vcGRmLndvcmtlci5qcyI7CiAgICAgICAgICAgIFBERkpTLmdldERvY3VtZW50KGxvY2F0aW9uKS50aGVuKGZ1bmN0aW9uIGxvYWRQREYoZG9jKSB7CiAgICAgICAgICAgICAgICBwZGZEb2N1bWVudCA9IGRvYzsKICAgICAgICAgICAgICAgIGNvbnRhaW5lciA9IHZpZXdDb250YWluZXI7CgogICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHBkZkRvY3VtZW50Lm51bVBhZ2VzOyBpICs9IDEpIHsKICAgICAgICAgICAgICAgICAgICBwZGZEb2N1bWVudC5nZXRQYWdlKGkgKyAxKS50aGVuKGNyZWF0ZVBhZ2UpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICB9KTsKICAgIH07CgogICAgdGhpcy5pc1NsaWRlc2hvdyA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAvLyBBIHZlcnkgc2ltcGxlIGJ1dCBnZW5lcmFsbHkgdHJ1ZSBndWVzcyAtIGlmIHRoZSB3aWR0aCBpcyBncmVhdGVyIHRoYW4gdGhlIGhlaWdodCwgdHJlYXQgaXQgYXMgYSBzbGlkZXNob3cKICAgICAgICByZXR1cm4gcGFnZVdpZHRoID4gcGFnZUhlaWdodDsKICAgIH07CgogICAgdGhpcy5vbkxvYWQgPSBmdW5jdGlvbiAoKSB7fTsKCiAgICB0aGlzLmdldFBhZ2VzID0gZnVuY3Rpb24gKCkgewogICAgICAgIHJldHVybiBkb21QYWdlczsKICAgIH07CgogICAgdGhpcy5nZXRXaWR0aCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICByZXR1cm4gcGFnZVdpZHRoOwogICAgfTsKCiAgICB0aGlzLmdldEhlaWdodCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICByZXR1cm4gcGFnZUhlaWdodDsKICAgIH07CgogICAgdGhpcy5maXRUb1dpZHRoID0gZnVuY3Rpb24gKHdpZHRoKSB7CiAgICAgICAgdmFyIHpvb21MZXZlbDsKCiAgICAgICAgaWYgKHNlbGYuZ2V0V2lkdGgoKSA9PT0gd2lkdGgpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICB6b29tTGV2ZWwgPSB3aWR0aCAvIHBhZ2VXaWR0aDsKICAgICAgICBzZWxmLnNldFpvb21MZXZlbCh6b29tTGV2ZWwpOwogICAgfTsKCiAgICB0aGlzLmZpdFRvSGVpZ2h0ID0gZnVuY3Rpb24gKGhlaWdodCkgewogICAgICAgIHZhciB6b29tTGV2ZWw7CgogICAgICAgIGlmIChzZWxmLmdldEhlaWdodCgpID09PSBoZWlnaHQpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICB6b29tTGV2ZWwgPSBoZWlnaHQgLyBwYWdlSGVpZ2h0OwogICAgICAgIHNlbGYuc2V0Wm9vbUxldmVsKHpvb21MZXZlbCk7CiAgICB9OwoKICAgIHRoaXMuZml0VG9QYWdlID0gZnVuY3Rpb24gKHdpZHRoLCBoZWlnaHQpIHsKICAgICAgICB2YXIgem9vbUxldmVsID0gd2lkdGggLyBwYWdlV2lkdGg7CiAgICAgICAgaWYgKGhlaWdodCAvIHBhZ2VIZWlnaHQgPCB6b29tTGV2ZWwpIHsKICAgICAgICAgICAgem9vbUxldmVsID0gaGVpZ2h0IC8gcGFnZUhlaWdodDsKICAgICAgICB9CiAgICAgICAgc2VsZi5zZXRab29tTGV2ZWwoem9vbUxldmVsKTsKICAgIH07CgogICAgdGhpcy5maXRTbWFydCA9IGZ1bmN0aW9uICh3aWR0aCwgaGVpZ2h0KSB7CiAgICAgICAgdmFyIHpvb21MZXZlbCA9IHdpZHRoIC8gcGFnZVdpZHRoOwogICAgICAgIGlmIChoZWlnaHQgJiYgKGhlaWdodCAvIHBhZ2VIZWlnaHQpIDwgem9vbUxldmVsKSB7CiAgICAgICAgICAgIHpvb21MZXZlbCA9IGhlaWdodCAvIHBhZ2VIZWlnaHQ7CiAgICAgICAgfQogICAgICAgIHpvb21MZXZlbCA9IE1hdGgubWluKDEuMCwgem9vbUxldmVsKTsKICAgICAgICBzZWxmLnNldFpvb21MZXZlbCh6b29tTGV2ZWwpOwogICAgfTsKCiAgICB0aGlzLnNldFpvb21MZXZlbCA9IGZ1bmN0aW9uICh6b29tTGV2ZWwpIHsKICAgICAgICB2YXIgaTsKCiAgICAgICAgaWYgKHNjYWxlICE9PSB6b29tTGV2ZWwpIHsKICAgICAgICAgICAgc2NhbGUgPSB6b29tTGV2ZWw7CgogICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcGFnZXMubGVuZ3RoOyBpICs9IDEpIHsKICAgICAgICAgICAgICAgIHVwZGF0ZVBhZ2VEaW1lbnNpb25zKHBhZ2VzW2ldLCBwYWdlV2lkdGggKiBzY2FsZSwgcGFnZUhlaWdodCAqIHNjYWxlKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH07CgogICAgdGhpcy5nZXRab29tTGV2ZWwgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgcmV0dXJuIHNjYWxlOwogICAgfTsKCiAgICB0aGlzLm9uU2Nyb2xsID0gZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBpOwoKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZG9tUGFnZXMubGVuZ3RoOyBpICs9IDEpIHsKICAgICAgICAgICAgaWYgKGlzU2Nyb2xsZWRJbnRvVmlldyhkb21QYWdlc1tpXSkpIHsKICAgICAgICAgICAgICAgIGlmIChnZXRSZW5kZXJpbmdTdGF0dXMocGFnZXNbaV0pID09PSBSRU5ERVJJTkcuQkxBTkspIHsKICAgICAgICAgICAgICAgICAgICByZW5kZXJQYWdlKHBhZ2VzW2ldKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH07CgogICAgdGhpcy5nZXRQYWdlSW5WaWV3ID0gZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBpOwoKICAgICAgICBpZiAoc2VsZi5pc1NsaWRlc2hvdygpKSB7CiAgICAgICAgICAgIHJldHVybiBjdXJyZW50UGFnZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZG9tUGFnZXMubGVuZ3RoOyBpICs9IDEpIHsKICAgICAgICAgICAgICAgIGlmIChpc1Njcm9sbGVkSW50b1ZpZXcoZG9tUGFnZXNbaV0pKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkgKyAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKCiAgICB0aGlzLnNob3dQYWdlID0gZnVuY3Rpb24gKG4pIHsKICAgICAgICBpZiAoc2VsZi5pc1NsaWRlc2hvdygpKSB7CiAgICAgICAgICAgIGRvbVBhZ2VzW2N1cnJlbnRQYWdlIC0gMV0uc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICAgICAgY3VycmVudFBhZ2UgPSBuOwogICAgICAgICAgICBkb21QYWdlc1tuIC0gMV0uc3R5bGUuZGlzcGxheSA9ICJibG9jayI7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgc2Nyb2xsSW50b1ZpZXcoZG9tUGFnZXNbbiAtIDFdKTsKICAgICAgICB9CiAgICB9OwoKICAgIHRoaXMuZ2V0UGx1Z2luTmFtZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICByZXR1cm4gIlBERi5qcyIKICAgIH07CgogICAgdGhpcy5nZXRQbHVnaW5WZXJzaW9uID0gZnVuY3Rpb24gKCkgewogICAgICAgIHZhciB2ZXJzaW9uID0gKFN0cmluZyh0eXBlb2YgcGRmanNfdmVyc2lvbikgIT09ICJ1bmRlZmluZWQiCiAgICAgICAgICAgID8gcGRmanNfdmVyc2lvbgogICAgICAgICAgICA6ICJGcm9tIFNvdXJjZSIKICAgICAgICApOwogICAgICAgIHJldHVybiB2ZXJzaW9uOwogICAgfTsKCiAgICB0aGlzLmdldFBsdWdpblVSTCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICByZXR1cm4gImh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL3BkZi5qcy8iOwogICAgfTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/ViewerJS/PluginLoader.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE1IEtPIEdtYkggPGNvcHlyaWdodEBrb2dtYmguY29tPgogKgogKiBAbGljc3RhcnQKICogVGhlIEphdmFTY3JpcHQgY29kZSBpbiB0aGlzIHBhZ2UgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQKICogYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogKiAoR05VIEFHUEwpIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mCiAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLiAgVGhlIGNvZGUgaXMgZGlzdHJpYnV0ZWQKICogV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IKICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBBR1BMIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogKiBhbG9uZyB3aXRoIHRoaXMgY29kZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KICoKICogQXMgYWRkaXRpb25hbCBwZXJtaXNzaW9uIHVuZGVyIEdOVSBBR1BMIHZlcnNpb24gMyBzZWN0aW9uIDcsIHlvdQogKiBtYXkgZGlzdHJpYnV0ZSBub24tc291cmNlIChlLmcuLCBtaW5pbWl6ZWQgb3IgY29tcGFjdGVkKSBmb3JtcyBvZgogKiB0aGF0IGNvZGUgd2l0aG91dCB0aGUgY29weSBvZiB0aGUgR05VIEdQTCBub3JtYWxseSByZXF1aXJlZCBieQogKiBzZWN0aW9uIDQsIHByb3ZpZGVkIHlvdSBpbmNsdWRlIHRoaXMgbGljZW5zZSBub3RpY2UgYW5kIGEgVVJMCiAqIHRocm91Z2ggd2hpY2ggcmVjaXBpZW50cyBjYW4gYWNjZXNzIHRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZS4KICoKICogQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgQUdQTCwgYW55IEhUTUwgZmlsZSB3aGljaCBtZXJlbHkgbWFrZXMgZnVuY3Rpb24KICogY2FsbHMgdG8gdGhpcyBjb2RlLCBhbmQgZm9yIHRoYXQgcHVycG9zZSBpbmNsdWRlcyBpdCBieSByZWZlcmVuY2Ugc2hhbGwgYmUKICogZGVlbWVkIGEgc2VwYXJhdGUgd29yayBmb3IgY29weXJpZ2h0IGxhdyBwdXJwb3Nlcy4gSW4gYWRkaXRpb24sIHRoZSBjb3B5cmlnaHQKICogaG9sZGVycyBvZiB0aGlzIGNvZGUgZ2l2ZSB5b3UgcGVybWlzc2lvbiB0byBjb21iaW5lIHRoaXMgY29kZSB3aXRoIGZyZWUKICogc29mdHdhcmUgbGlicmFyaWVzIHRoYXQgYXJlIHJlbGVhc2VkIHVuZGVyIHRoZSBHTlUgTEdQTC4gWW91IG1heSBjb3B5IGFuZAogKiBkaXN0cmlidXRlIHN1Y2ggYSBzeXN0ZW0gZm9sbG93aW5nIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFHUEwgZm9yIHRoaXMgY29kZQogKiBhbmQgdGhlIExHUEwgZm9yIHRoZSBsaWJyYXJpZXMuIElmIHlvdSBtb2RpZnkgdGhpcyBjb2RlLCB5b3UgbWF5IGV4dGVuZCB0aGlzCiAqIGV4Y2VwdGlvbiB0byB5b3VyIHZlcnNpb24gb2YgdGhlIGNvZGUsIGJ1dCB5b3UgYXJlIG5vdCBvYmxpZ2F0ZWQgdG8gZG8gc28uCiAqIElmIHlvdSBkbyBub3Qgd2lzaCB0byBkbyBzbywgZGVsZXRlIHRoaXMgZXhjZXB0aW9uIHN0YXRlbWVudCBmcm9tIHlvdXIKICogdmVyc2lvbi4KICoKICogVGhpcyBsaWNlbnNlIGFwcGxpZXMgdG8gdGhpcyBlbnRpcmUgY29tcGlsYXRpb24uCiAqIEBsaWNlbmQKICogQHNvdXJjZTogaHR0cDovL3ZpZXdlcmpzLm9yZy8KICogQHNvdXJjZTogaHR0cDovL2dpdGh1Yi5jb20va29nbWJoL1ZpZXdlckpTCiAqLwoKLypnbG9iYWwgZG9jdW1lbnQsIHdpbmRvdywgVmlld2VyLCBPREZWaWV3ZXJQbHVnaW4sIFBERlZpZXdlclBsdWdpbiovCgpmdW5jdGlvbiBsb2FkRG9jdW1lbnQoKSB7CiAgICAidXNlIHN0cmljdCI7CgogICAgdmFyIHBsdWdpblJlZ2lzdHJ5ID0gWwogICAgICAgIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIG9kZk1pbWV0eXBlcyA9IFsKICAgICAgICAgICAgICAgICdhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHQnLAogICAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQudGV4dC1mbGF0LXhtbCcsCiAgICAgICAgICAgICAgICAnYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC50ZXh0LXRlbXBsYXRlJywKICAgICAgICAgICAgICAgICdhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnByZXNlbnRhdGlvbicsCiAgICAgICAgICAgICAgICAnYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5wcmVzZW50YXRpb24tZmxhdC14bWwnLAogICAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQucHJlc2VudGF0aW9uLXRlbXBsYXRlJywKICAgICAgICAgICAgICAgICdhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnNwcmVhZHNoZWV0JywKICAgICAgICAgICAgICAgICdhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnNwcmVhZHNoZWV0LWZsYXQteG1sJywKICAgICAgICAgICAgICAgICdhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnNwcmVhZHNoZWV0LXRlbXBsYXRlJ107CiAgICAgICAgICAgIHZhciBvZGZGaWxlRXh0ZW5zaW9ucyA9IFsKICAgICAgICAgICAgICAgICdvZHQnLAogICAgICAgICAgICAgICAgJ2ZvZHQnLAogICAgICAgICAgICAgICAgJ290dCcsCiAgICAgICAgICAgICAgICAnb2RwJywKICAgICAgICAgICAgICAgICdmb2RwJywKICAgICAgICAgICAgICAgICdvdHAnLAogICAgICAgICAgICAgICAgJ29kcycsCiAgICAgICAgICAgICAgICAnZm9kcycsCiAgICAgICAgICAgICAgICAnb3RzJ107CgogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgc3VwcG9ydHNNaW1ldHlwZTogZnVuY3Rpb24obWltZXR5cGUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKG9kZk1pbWV0eXBlcy5pbmRleE9mKG1pbWV0eXBlKSAhPT0gLTEpOwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHN1cHBvcnRzRmlsZUV4dGVuc2lvbjogZnVuY3Rpb24oZXh0ZW5zaW9uKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChvZGZGaWxlRXh0ZW5zaW9ucy5pbmRleE9mKGV4dGVuc2lvbikgIT09IC0xKTsKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBwYXRoOiAiLi9PREZWaWV3ZXJQbHVnaW4iLAogICAgICAgICAgICAgICAgZ2V0Q2xhc3M6IGZ1bmN0aW9uKCkgeyByZXR1cm4gT0RGVmlld2VyUGx1Z2luOyB9CiAgICAgICAgICAgIH07CiAgICAgICAgfSgpKSwKICAgICAgICB7CiAgICAgICAgICAgIHN1cHBvcnRzTWltZXR5cGU6IGZ1bmN0aW9uKG1pbWV0eXBlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gKG1pbWV0eXBlID09PSAnYXBwbGljYXRpb24vcGRmJyk7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHN1cHBvcnRzRmlsZUV4dGVuc2lvbjogZnVuY3Rpb24oZXh0ZW5zaW9uKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gKGV4dGVuc2lvbiA9PT0gJ3BkZicpOwogICAgICAgICAgICB9LAogICAgICAgICAgICBwYXRoOiAiLi9QREZWaWV3ZXJQbHVnaW4iLAogICAgICAgICAgICBnZXRDbGFzczogZnVuY3Rpb24oKSB7IHJldHVybiBQREZWaWV3ZXJQbHVnaW47IH0KICAgICAgICB9CiAgICBdOwoKICAgIGZ1bmN0aW9uIGxvYWRQbHVnaW4ocGx1Z2luTmFtZSwgY2FsbGJhY2spIHsKICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgdmFyIHNjcmlwdCwgc3R5bGU7CgogICAgICAgIC8vIExvYWQgc2NyaXB0CiAgICAgICAgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7CiAgICAgICAgc2NyaXB0LmFzeW5jID0gZmFsc2U7CiAgICAgICAgc2NyaXB0Lm9ubG9hZCA9IGNhbGxiYWNrOwogICAgICAgIHNjcmlwdC5zcmMgPSBwbHVnaW5OYW1lICsgJy5qcyc7CiAgICAgICAgc2NyaXB0LnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JzsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdLmFwcGVuZENoaWxkKHNjcmlwdCk7CiAgICB9CgoKICAgIGZ1bmN0aW9uIGVzdGltYXRlVHlwZUJ5SGVhZGVyQ29udGVudFR5cGUoZG9jdW1lbnRVcmwsIGNiKSB7CiAgICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwogICAgICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIG1pbWV0eXBlLCBtYXRjaGluZ1BsdWdpbkRhdGE7CiAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PT0gNCkgewogICAgICAgICAgICAgICAgaWYgKCh4aHIuc3RhdHVzID49IDIwMCAmJiB4aHIuc3RhdHVzIDwgMzAwKSB8fCB4aHIuc3RhdHVzID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgbWltZXR5cGUgPSB4aHIuZ2V0UmVzcG9uc2VIZWFkZXIoJ2NvbnRlbnQtdHlwZScpOwoKICAgICAgICAgICAgICAgICAgICBpZiAobWltZXR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcGx1Z2luUmVnaXN0cnkuc29tZShmdW5jdGlvbihwbHVnaW5EYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGx1Z2luRGF0YS5zdXBwb3J0c01pbWV0eXBlKG1pbWV0eXBlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoaW5nUGx1Z2luRGF0YSA9IHBsdWdpbkRhdGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0ZvdW5kIHBsdWdpbiBieSBtaW1ldHlwZSBhbmQgeGhyIGhlYWQ6ICcgKyBtaW1ldHlwZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNiKG1hdGNoaW5nUGx1Z2luRGF0YSk7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIHhoci5vcGVuKCJIRUFEIiwgZG9jdW1lbnRVcmwsIHRydWUpOwogICAgICAgIHhoci5zZW5kKCk7CiAgICB9CgoKICAgIGZ1bmN0aW9uIGRvRXN0aW1hdGVUeXBlQnlGaWxlRXh0ZW5zaW9uKGV4dGVuc2lvbikgewogICAgICAgIHZhciBtYXRjaGluZ1BsdWdpbkRhdGE7CgogICAgICAgIHBsdWdpblJlZ2lzdHJ5LnNvbWUoZnVuY3Rpb24ocGx1Z2luRGF0YSkgewogICAgICAgICAgICBpZiAocGx1Z2luRGF0YS5zdXBwb3J0c0ZpbGVFeHRlbnNpb24oZXh0ZW5zaW9uKSkgewogICAgICAgICAgICAgICAgbWF0Y2hpbmdQbHVnaW5EYXRhID0gcGx1Z2luRGF0YTsKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKCiAgICAgICAgcmV0dXJuIG1hdGNoaW5nUGx1Z2luRGF0YTsKICAgIH0KCgogICAgZnVuY3Rpb24gZXN0aW1hdGVUeXBlQnlGaWxlRXh0ZW5zaW9uKGV4dGVuc2lvbikgewogICAgICAgIHZhciBtYXRjaGluZ1BsdWdpbkRhdGEgPSBkb0VzdGltYXRlVHlwZUJ5RmlsZUV4dGVuc2lvbihleHRlbnNpb24pCgogICAgICAgIGlmIChtYXRjaGluZ1BsdWdpbkRhdGEpIHsKICAgICAgICAgICAgY29uc29sZS5sb2coJ0ZvdW5kIHBsdWdpbiBieSBwYXJhbWV0ZXIgdHlwZTogJyArIGV4dGVuc2lvbik7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbWF0Y2hpbmdQbHVnaW5EYXRhOwogICAgfQoKCiAgICBmdW5jdGlvbiBlc3RpbWF0ZVR5cGVCeUZpbGVFeHRlbnNpb25Gcm9tUGF0aChkb2N1bWVudFVybCkgewogICAgICAgIC8vIFNlZSB0byBnZXQgYW55IHBhdGggZnJvbSB0aGUgdXJsIGFuZCBncmVwIHdoYXQgY291bGQgYmUgYSBmaWxlIGV4dGVuc2lvbgogICAgICAgIHZhciBkb2N1bWVudFBhdGggPSBkb2N1bWVudFVybC5zcGxpdCgnPycpWzBdLAogICAgICAgICAgICBleHRlbnNpb24gPSBkb2N1bWVudFBhdGguc3BsaXQoJy4nKS5wb3AoKSwKICAgICAgICAgICAgbWF0Y2hpbmdQbHVnaW5EYXRhID0gZG9Fc3RpbWF0ZVR5cGVCeUZpbGVFeHRlbnNpb24oZXh0ZW5zaW9uKQoKICAgICAgICBpZiAobWF0Y2hpbmdQbHVnaW5EYXRhKSB7CiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdGb3VuZCBwbHVnaW4gYnkgZmlsZSBleHRlbnNpb24gZnJvbSBwYXRoOiAnICsgZXh0ZW5zaW9uKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBtYXRjaGluZ1BsdWdpbkRhdGE7CiAgICB9CgoKICAgIGZ1bmN0aW9uIHBhcnNlU2VhcmNoUGFyYW1ldGVycyhsb2NhdGlvbikgewogICAgICAgIHZhciBwYXJhbWV0ZXJzID0ge30sCiAgICAgICAgICAgIHNlYXJjaCA9IGxvY2F0aW9uLnNlYXJjaCB8fCAiPyI7CgogICAgICAgIHNlYXJjaC5zdWJzdHIoMSkuc3BsaXQoJyYnKS5mb3JFYWNoKGZ1bmN0aW9uIChxKSB7CiAgICAgICAgICAgIC8vIHNraXAgZW1wdHkgc3RyaW5ncwogICAgICAgICAgICBpZiAoIXEpIHsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBpZiB0aGVyZSBpcyBubyAnPScsIGhhdmUgaXQgaGFuZGxlZCBhcyBpZiBnaXZlbiBrZXkgd2FzIHNldCB0byB1bmRlZmluZWQKICAgICAgICAgICAgdmFyIHMgPSBxLnNwbGl0KCc9JywgMik7CiAgICAgICAgICAgIHBhcmFtZXRlcnNbZGVjb2RlVVJJQ29tcG9uZW50KHNbMF0pXSA9IGRlY29kZVVSSUNvbXBvbmVudChzWzFdKTsKICAgICAgICB9KTsKCiAgICAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CiAgICB9CgoKICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIHZpZXdlciwKICAgICAgICAgICAgZG9jdW1lbnRVcmwgPSBkb2N1bWVudC5sb2NhdGlvbi5oYXNoLnN1YnN0cmluZygxKSwKICAgICAgICAgICAgcGFyYW1ldGVycyA9IHBhcnNlU2VhcmNoUGFyYW1ldGVycyhkb2N1bWVudC5sb2NhdGlvbiksCiAgICAgICAgICAgIFBsdWdpbjsKCiAgICAgICAgaWYgKGRvY3VtZW50VXJsKSB7CiAgICAgICAgICAgIC8vIHRyeSB0byBndWVzcyB0aGUgdGl0bGUgYXMgZmlsZW5hbWUgZnJvbSB0aGUgbG9jYXRpb24sIGlmIG5vdCBzZXQgYnkgcGFyYW1ldGVyCiAgICAgICAgICAgIGlmICghcGFyYW1ldGVycy50aXRsZSkgewogICAgICAgICAgICAgICAgcGFyYW1ldGVycy50aXRsZSA9IGRvY3VtZW50VXJsLnJlcGxhY2UoL14uKltcXFwvXS8sICcnKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcGFyYW1ldGVycy5kb2N1bWVudFVybCA9IGRvY3VtZW50VXJsOwoKICAgICAgICAgICAgLy8gdHJ1c3QgdGhlIHNlcnZlciBtb3N0CiAgICAgICAgICAgIGVzdGltYXRlVHlwZUJ5SGVhZGVyQ29udGVudFR5cGUoZG9jdW1lbnRVcmwsIGZ1bmN0aW9uKHBsdWdpbkRhdGEpIHsKICAgICAgICAgICAgICAgIGlmICghcGx1Z2luRGF0YSkgewogICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJzLnR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcGx1Z2luRGF0YSA9IGVzdGltYXRlVHlwZUJ5RmlsZUV4dGVuc2lvbihwYXJhbWV0ZXJzLnR5cGUpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxhc3QgcmVzc29ydDogdHJ5IHRvIGd1ZXNzIGZyb20gcGF0aAogICAgICAgICAgICAgICAgICAgICAgICBwbHVnaW5EYXRhID0gZXN0aW1hdGVUeXBlQnlGaWxlRXh0ZW5zaW9uRnJvbVBhdGgoZG9jdW1lbnRVcmwpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAocGx1Z2luRGF0YSkgewogICAgICAgICAgICAgICAgICAgIGxvYWRQbHVnaW4ocGx1Z2luRGF0YS5wYXRoLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIFBsdWdpbiA9IHBsdWdpbkRhdGEuZ2V0Q2xhc3MoKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmlld2VyID0gbmV3IFZpZXdlcihuZXcgUGx1Z2luKCksIHBhcmFtZXRlcnMpOwogICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHZpZXdlciA9IG5ldyBWaWV3ZXIoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdmlld2VyID0gbmV3IFZpZXdlcigpOwogICAgICAgIH0KICAgIH07Cn0K]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/ViewerJS/text_layer_builder.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogLSotIE1vZGU6IEphdmE7IHRhYi13aWR0aDogMjsgaW5kZW50LXRhYnMtbW9kZTogbmlsOyBjLWJhc2ljLW9mZnNldDogMiAtKi0gKi8KLyogQ29weXJpZ2h0IDIwMTIgTW96aWxsYSBGb3VuZGF0aW9uCiAqCiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwogKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogKgogKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAqCiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAqLwovKiBnbG9iYWxzIEN1c3RvbVN0eWxlLCBQREZKUyAqLwoKJ3VzZSBzdHJpY3QnOwoKdmFyIE1BWF9URVhUX0RJVlNfVE9fUkVOREVSID0gMTAwMDAwOwoKdmFyIE5vbldoaXRlc3BhY2VSZWdleHAgPSAvXFMvOwoKZnVuY3Rpb24gaXNBbGxXaGl0ZXNwYWNlKHN0cikgewogIHJldHVybiAhTm9uV2hpdGVzcGFjZVJlZ2V4cC50ZXN0KHN0cik7Cn0KCi8qKgogKiBAdHlwZWRlZiB7T2JqZWN0fSBUZXh0TGF5ZXJCdWlsZGVyT3B0aW9ucwogKiBAcHJvcGVydHkge0hUTUxEaXZFbGVtZW50fSB0ZXh0TGF5ZXJEaXYgLSBUaGUgdGV4dCBsYXllciBjb250YWluZXIuCiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBwYWdlSW5kZXggLSBUaGUgcGFnZSBpbmRleC4KICogQHByb3BlcnR5IHtQYWdlVmlld3BvcnR9IHZpZXdwb3J0IC0gVGhlIHZpZXdwb3J0IG9mIHRoZSB0ZXh0IGxheWVyLgogKiBAcHJvcGVydHkge1BERkZpbmRDb250cm9sbGVyfSBmaW5kQ29udHJvbGxlcgogKi8KCi8qKgogKiBUZXh0TGF5ZXJCdWlsZGVyIHByb3ZpZGVzIHRleHQtc2VsZWN0aW9uIGZ1bmN0aW9uYWxpdHkgZm9yIHRoZSBQREYuCiAqIEl0IGRvZXMgdGhpcyBieSBjcmVhdGluZyBvdmVybGF5IGRpdnMgb3ZlciB0aGUgUERGIHRleHQuIFRoZXNlIGRpdnMKICogY29udGFpbiB0ZXh0IHRoYXQgbWF0Y2hlcyB0aGUgUERGIHRleHQgdGhleSBhcmUgb3ZlcmxheWluZy4gVGhpcyBvYmplY3QKICogYWxzbyBwcm92aWRlcyBhIHdheSB0byBoaWdobGlnaHQgdGV4dCB0aGF0IGlzIGJlaW5nIHNlYXJjaGVkIGZvci4KICogQGNsYXNzCiAqLwp2YXIgVGV4dExheWVyQnVpbGRlciA9IChmdW5jdGlvbiBUZXh0TGF5ZXJCdWlsZGVyQ2xvc3VyZSgpIHsKICBmdW5jdGlvbiBUZXh0TGF5ZXJCdWlsZGVyKG9wdGlvbnMpIHsKICAgIHRoaXMudGV4dExheWVyRGl2ID0gb3B0aW9ucy50ZXh0TGF5ZXJEaXY7CiAgICB0aGlzLnJlbmRlcmluZ0RvbmUgPSBmYWxzZTsKICAgIHRoaXMuZGl2Q29udGVudERvbmUgPSBmYWxzZTsKICAgIHRoaXMucGFnZUlkeCA9IG9wdGlvbnMucGFnZUluZGV4OwogICAgdGhpcy5wYWdlTnVtYmVyID0gdGhpcy5wYWdlSWR4ICsgMTsKICAgIHRoaXMubWF0Y2hlcyA9IFtdOwogICAgdGhpcy52aWV3cG9ydCA9IG9wdGlvbnMudmlld3BvcnQ7CiAgICB0aGlzLnRleHREaXZzID0gW107CiAgICB0aGlzLmZpbmRDb250cm9sbGVyID0gb3B0aW9ucy5maW5kQ29udHJvbGxlciB8fCBudWxsOwogIH0KCiAgVGV4dExheWVyQnVpbGRlci5wcm90b3R5cGUgPSB7CiAgICBfZmluaXNoUmVuZGVyaW5nOiBmdW5jdGlvbiBUZXh0TGF5ZXJCdWlsZGVyX2ZpbmlzaFJlbmRlcmluZygpIHsKICAgICAgdGhpcy5yZW5kZXJpbmdEb25lID0gdHJ1ZTsKCiAgICAgIHZhciBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdDdXN0b21FdmVudCcpOwogICAgICBldmVudC5pbml0Q3VzdG9tRXZlbnQoJ3RleHRsYXllcnJlbmRlcmVkJywgdHJ1ZSwgdHJ1ZSwgewogICAgICAgIHBhZ2VOdW1iZXI6IHRoaXMucGFnZU51bWJlcgogICAgICB9KTsKICAgICAgdGhpcy50ZXh0TGF5ZXJEaXYuZGlzcGF0Y2hFdmVudChldmVudCk7CiAgICB9LAoKICAgIHJlbmRlckxheWVyOiBmdW5jdGlvbiBUZXh0TGF5ZXJCdWlsZGVyX3JlbmRlckxheWVyKCkgewogICAgICB2YXIgdGV4dExheWVyRnJhZyA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKICAgICAgdmFyIHRleHREaXZzID0gdGhpcy50ZXh0RGl2czsKICAgICAgdmFyIHRleHREaXZzTGVuZ3RoID0gdGV4dERpdnMubGVuZ3RoOwogICAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7CiAgICAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTsKCiAgICAgIC8vIE5vIHBvaW50IGluIHJlbmRlcmluZyBtYW55IGRpdnMgYXMgaXQgd291bGQgbWFrZSB0aGUgYnJvd3NlcgogICAgICAvLyB1bnVzYWJsZSBldmVuIGFmdGVyIHRoZSBkaXZzIGFyZSByZW5kZXJlZC4KICAgICAgaWYgKHRleHREaXZzTGVuZ3RoID4gTUFYX1RFWFRfRElWU19UT19SRU5ERVIpIHsKICAgICAgICB0aGlzLl9maW5pc2hSZW5kZXJpbmcoKTsKICAgICAgICByZXR1cm47CiAgICAgIH0KCiAgICAgIHZhciBsYXN0Rm9udFNpemU7CiAgICAgIHZhciBsYXN0Rm9udEZhbWlseTsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXh0RGl2c0xlbmd0aDsgaSsrKSB7CiAgICAgICAgdmFyIHRleHREaXYgPSB0ZXh0RGl2c1tpXTsKICAgICAgICBpZiAodGV4dERpdi5kYXRhc2V0LmlzV2hpdGVzcGFjZSAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CgogICAgICAgIHZhciBmb250U2l6ZSA9IHRleHREaXYuc3R5bGUuZm9udFNpemU7CiAgICAgICAgdmFyIGZvbnRGYW1pbHkgPSB0ZXh0RGl2LnN0eWxlLmZvbnRGYW1pbHk7CgogICAgICAgIC8vIE9ubHkgYnVpbGQgZm9udCBzdHJpbmcgYW5kIHNldCB0byBjb250ZXh0IGlmIGRpZmZlcmVudCBmcm9tIGxhc3QuCiAgICAgICAgaWYgKGZvbnRTaXplICE9PSBsYXN0Rm9udFNpemUgfHwgZm9udEZhbWlseSAhPT0gbGFzdEZvbnRGYW1pbHkpIHsKICAgICAgICAgIGN0eC5mb250ID0gZm9udFNpemUgKyAnICcgKyBmb250RmFtaWx5OwogICAgICAgICAgbGFzdEZvbnRTaXplID0gZm9udFNpemU7CiAgICAgICAgICBsYXN0Rm9udEZhbWlseSA9IGZvbnRGYW1pbHk7CiAgICAgICAgfQoKICAgICAgICB2YXIgd2lkdGggPSBjdHgubWVhc3VyZVRleHQodGV4dERpdi50ZXh0Q29udGVudCkud2lkdGg7CiAgICAgICAgaWYgKHdpZHRoID4gMCkgewogICAgICAgICAgdGV4dExheWVyRnJhZy5hcHBlbmRDaGlsZCh0ZXh0RGl2KTsKICAgICAgICAgIHZhciB0cmFuc2Zvcm07CiAgICAgICAgICBpZiAodGV4dERpdi5kYXRhc2V0LmNhbnZhc1dpZHRoICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgLy8gRGF0YXNldCB2YWx1ZXMgY29tZSBvZiB0eXBlIHN0cmluZy4KICAgICAgICAgICAgdmFyIHRleHRTY2FsZSA9IHRleHREaXYuZGF0YXNldC5jYW52YXNXaWR0aCAvIHdpZHRoOwogICAgICAgICAgICB0cmFuc2Zvcm0gPSAnc2NhbGVYKCcgKyB0ZXh0U2NhbGUgKyAnKSc7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0cmFuc2Zvcm0gPSAnJzsKICAgICAgICAgIH0KICAgICAgICAgIHZhciByb3RhdGlvbiA9IHRleHREaXYuZGF0YXNldC5hbmdsZTsKICAgICAgICAgIGlmIChyb3RhdGlvbikgewogICAgICAgICAgICB0cmFuc2Zvcm0gPSAncm90YXRlKCcgKyByb3RhdGlvbiArICdkZWcpICcgKyB0cmFuc2Zvcm07CiAgICAgICAgICB9CiAgICAgICAgICBpZiAodHJhbnNmb3JtKSB7CiAgICAgICAgICAgIEN1c3RvbVN0eWxlLnNldFByb3AoJ3RyYW5zZm9ybScgLCB0ZXh0RGl2LCB0cmFuc2Zvcm0pOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQoKICAgICAgdGhpcy50ZXh0TGF5ZXJEaXYuYXBwZW5kQ2hpbGQodGV4dExheWVyRnJhZyk7CiAgICAgIHRoaXMuX2ZpbmlzaFJlbmRlcmluZygpOwogICAgICB0aGlzLnVwZGF0ZU1hdGNoZXMoKTsKICAgIH0sCgogICAgLyoqCiAgICAgKiBSZW5kZXJzIHRoZSB0ZXh0IGxheWVyLgogICAgICogQHBhcmFtIHtudW1iZXJ9IHRpbWVvdXQgKG9wdGlvbmFsKSBpZiBzcGVjaWZpZWQsIHRoZSByZW5kZXJpbmcgd2FpdHMKICAgICAqICAgZm9yIHNwZWNpZmllZCBhbW91bnQgb2YgbXMuCiAgICAgKi8KICAgIHJlbmRlcjogZnVuY3Rpb24gVGV4dExheWVyQnVpbGRlcl9yZW5kZXIodGltZW91dCkgewogICAgICBpZiAoIXRoaXMuZGl2Q29udGVudERvbmUgfHwgdGhpcy5yZW5kZXJpbmdEb25lKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICBpZiAodGhpcy5yZW5kZXJUaW1lcikgewogICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnJlbmRlclRpbWVyKTsKICAgICAgICB0aGlzLnJlbmRlclRpbWVyID0gbnVsbDsKICAgICAgfQoKICAgICAgaWYgKCF0aW1lb3V0KSB7IC8vIFJlbmRlciByaWdodCBhd2F5CiAgICAgICAgdGhpcy5yZW5kZXJMYXllcigpOwogICAgICB9IGVsc2UgeyAvLyBTY2hlZHVsZQogICAgICAgIHZhciBzZWxmID0gdGhpczsKICAgICAgICB0aGlzLnJlbmRlclRpbWVyID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgIHNlbGYucmVuZGVyTGF5ZXIoKTsKICAgICAgICAgIHNlbGYucmVuZGVyVGltZXIgPSBudWxsOwogICAgICAgIH0sIHRpbWVvdXQpOwogICAgICB9CiAgICB9LAoKICAgIGFwcGVuZFRleHQ6IGZ1bmN0aW9uIFRleHRMYXllckJ1aWxkZXJfYXBwZW5kVGV4dChnZW9tLCBzdHlsZXMpIHsKICAgICAgdmFyIHN0eWxlID0gc3R5bGVzW2dlb20uZm9udE5hbWVdOwogICAgICB2YXIgdGV4dERpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICB0aGlzLnRleHREaXZzLnB1c2godGV4dERpdik7CiAgICAgIGlmIChpc0FsbFdoaXRlc3BhY2UoZ2VvbS5zdHIpKSB7CiAgICAgICAgdGV4dERpdi5kYXRhc2V0LmlzV2hpdGVzcGFjZSA9IHRydWU7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIHZhciB0eCA9IFBERkpTLlV0aWwudHJhbnNmb3JtKHRoaXMudmlld3BvcnQudHJhbnNmb3JtLCBnZW9tLnRyYW5zZm9ybSk7CiAgICAgIHZhciBhbmdsZSA9IE1hdGguYXRhbjIodHhbMV0sIHR4WzBdKTsKICAgICAgaWYgKHN0eWxlLnZlcnRpY2FsKSB7CiAgICAgICAgYW5nbGUgKz0gTWF0aC5QSSAvIDI7CiAgICAgIH0KICAgICAgdmFyIGZvbnRIZWlnaHQgPSBNYXRoLnNxcnQoKHR4WzJdICogdHhbMl0pICsgKHR4WzNdICogdHhbM10pKTsKICAgICAgdmFyIGZvbnRBc2NlbnQgPSBmb250SGVpZ2h0OwogICAgICBpZiAoc3R5bGUuYXNjZW50KSB7CiAgICAgICAgZm9udEFzY2VudCA9IHN0eWxlLmFzY2VudCAqIGZvbnRBc2NlbnQ7CiAgICAgIH0gZWxzZSBpZiAoc3R5bGUuZGVzY2VudCkgewogICAgICAgIGZvbnRBc2NlbnQgPSAoMSArIHN0eWxlLmRlc2NlbnQpICogZm9udEFzY2VudDsKICAgICAgfQoKICAgICAgdmFyIGxlZnQ7CiAgICAgIHZhciB0b3A7CiAgICAgIGlmIChhbmdsZSA9PT0gMCkgewogICAgICAgIGxlZnQgPSB0eFs0XTsKICAgICAgICB0b3AgPSB0eFs1XSAtIGZvbnRBc2NlbnQ7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgbGVmdCA9IHR4WzRdICsgKGZvbnRBc2NlbnQgKiBNYXRoLnNpbihhbmdsZSkpOwogICAgICAgIHRvcCA9IHR4WzVdIC0gKGZvbnRBc2NlbnQgKiBNYXRoLmNvcyhhbmdsZSkpOwogICAgICB9CiAgICAgIHRleHREaXYuc3R5bGUubGVmdCA9IGxlZnQgKyAncHgnOwogICAgICB0ZXh0RGl2LnN0eWxlLnRvcCA9IHRvcCArICdweCc7CiAgICAgIHRleHREaXYuc3R5bGUuZm9udFNpemUgPSBmb250SGVpZ2h0ICsgJ3B4JzsKICAgICAgdGV4dERpdi5zdHlsZS5mb250RmFtaWx5ID0gc3R5bGUuZm9udEZhbWlseTsKCiAgICAgIHRleHREaXYudGV4dENvbnRlbnQgPSBnZW9tLnN0cjsKICAgICAgLy8gfGZvbnROYW1lfCBpcyBvbmx5IHVzZWQgYnkgdGhlIEZvbnQgSW5zcGVjdG9yLiBUaGlzIHRlc3Qgd2lsbCBzdWNjZWVkCiAgICAgIC8vIHdoZW4gZS5nLiB0aGUgRm9udCBJbnNwZWN0b3IgaXMgb2ZmIGJ1dCB0aGUgU3RlcHBlciBpcyBvbiwgYnV0IGl0J3MKICAgICAgLy8gbm90IHdvcnRoIHRoZSBlZmZvcnQgdG8gZG8gYSBtb3JlIGFjY3VyYXRlIHRlc3QuCiAgICAgIGlmIChQREZKUy5wZGZCdWcpIHsKICAgICAgICB0ZXh0RGl2LmRhdGFzZXQuZm9udE5hbWUgPSBnZW9tLmZvbnROYW1lOwogICAgICB9CiAgICAgIC8vIFN0b3JpbmcgaW50byBkYXRhc2V0IHdpbGwgY29udmVydCBudW1iZXIgaW50byBzdHJpbmcuCiAgICAgIGlmIChhbmdsZSAhPT0gMCkgewogICAgICAgIHRleHREaXYuZGF0YXNldC5hbmdsZSA9IGFuZ2xlICogKDE4MCAvIE1hdGguUEkpOwogICAgICB9CiAgICAgIC8vIFdlIGRvbid0IGJvdGhlciBzY2FsaW5nIHNpbmdsZS1jaGFyIHRleHQgZGl2cywgYmVjYXVzZSBpdCBoYXMgdmVyeQogICAgICAvLyBsaXR0bGUgZWZmZWN0IG9uIHRleHQgaGlnaGxpZ2h0aW5nLiBUaGlzIG1ha2VzIHNjcm9sbGluZyBvbiBkb2NzIHdpdGgKICAgICAgLy8gbG90cyBvZiBzdWNoIGRpdnMgYSBsb3QgZmFzdGVyLgogICAgICBpZiAodGV4dERpdi50ZXh0Q29udGVudC5sZW5ndGggPiAxKSB7CiAgICAgICAgaWYgKHN0eWxlLnZlcnRpY2FsKSB7CiAgICAgICAgICB0ZXh0RGl2LmRhdGFzZXQuY2FudmFzV2lkdGggPSBnZW9tLmhlaWdodCAqIHRoaXMudmlld3BvcnQuc2NhbGU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRleHREaXYuZGF0YXNldC5jYW52YXNXaWR0aCA9IGdlb20ud2lkdGggKiB0aGlzLnZpZXdwb3J0LnNjYWxlOwogICAgICAgIH0KICAgICAgfQogICAgfSwKCiAgICBzZXRUZXh0Q29udGVudDogZnVuY3Rpb24gVGV4dExheWVyQnVpbGRlcl9zZXRUZXh0Q29udGVudCh0ZXh0Q29udGVudCkgewogICAgICB0aGlzLnRleHRDb250ZW50ID0gdGV4dENvbnRlbnQ7CgogICAgICB2YXIgdGV4dEl0ZW1zID0gdGV4dENvbnRlbnQuaXRlbXM7CiAgICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSB0ZXh0SXRlbXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsKICAgICAgICB0aGlzLmFwcGVuZFRleHQodGV4dEl0ZW1zW2ldLCB0ZXh0Q29udGVudC5zdHlsZXMpOwogICAgICB9CiAgICAgIHRoaXMuZGl2Q29udGVudERvbmUgPSB0cnVlOwogICAgfSwKCiAgICBjb252ZXJ0TWF0Y2hlczogZnVuY3Rpb24gVGV4dExheWVyQnVpbGRlcl9jb252ZXJ0TWF0Y2hlcyhtYXRjaGVzKSB7CiAgICAgIHZhciBpID0gMDsKICAgICAgdmFyIGlJbmRleCA9IDA7CiAgICAgIHZhciBiaWRpVGV4dHMgPSB0aGlzLnRleHRDb250ZW50Lml0ZW1zOwogICAgICB2YXIgZW5kID0gYmlkaVRleHRzLmxlbmd0aCAtIDE7CiAgICAgIHZhciBxdWVyeUxlbiA9ICh0aGlzLmZpbmRDb250cm9sbGVyID09PSBudWxsID8KICAgICAgICAgICAgICAgICAgICAgIDAgOiB0aGlzLmZpbmRDb250cm9sbGVyLnN0YXRlLnF1ZXJ5Lmxlbmd0aCk7CiAgICAgIHZhciByZXQgPSBbXTsKCiAgICAgIGZvciAodmFyIG0gPSAwLCBsZW4gPSBtYXRjaGVzLmxlbmd0aDsgbSA8IGxlbjsgbSsrKSB7CiAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBzdGFydCBwb3NpdGlvbi4KICAgICAgICB2YXIgbWF0Y2hJZHggPSBtYXRjaGVzW21dOwoKICAgICAgICAvLyBMb29wIG92ZXIgdGhlIGRpdklkeHMuCiAgICAgICAgd2hpbGUgKGkgIT09IGVuZCAmJiBtYXRjaElkeCA+PSAoaUluZGV4ICsgYmlkaVRleHRzW2ldLnN0ci5sZW5ndGgpKSB7CiAgICAgICAgICBpSW5kZXggKz0gYmlkaVRleHRzW2ldLnN0ci5sZW5ndGg7CiAgICAgICAgICBpKys7CiAgICAgICAgfQoKICAgICAgICBpZiAoaSA9PT0gYmlkaVRleHRzLmxlbmd0aCkgewogICAgICAgICAgY29uc29sZS5lcnJvcignQ291bGQgbm90IGZpbmQgYSBtYXRjaGluZyBtYXBwaW5nJyk7CiAgICAgICAgfQoKICAgICAgICB2YXIgbWF0Y2ggPSB7CiAgICAgICAgICBiZWdpbjogewogICAgICAgICAgICBkaXZJZHg6IGksCiAgICAgICAgICAgIG9mZnNldDogbWF0Y2hJZHggLSBpSW5kZXgKICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIGVuZCBwb3NpdGlvbi4KICAgICAgICBtYXRjaElkeCArPSBxdWVyeUxlbjsKCiAgICAgICAgLy8gU29tZXdoYXQgdGhlIHNhbWUgYXJyYXkgYXMgYWJvdmUsIGJ1dCB1c2UgPiBpbnN0ZWFkIG9mID49IHRvIGdldAogICAgICAgIC8vIHRoZSBlbmQgcG9zaXRpb24gcmlnaHQuCiAgICAgICAgd2hpbGUgKGkgIT09IGVuZCAmJiBtYXRjaElkeCA+IChpSW5kZXggKyBiaWRpVGV4dHNbaV0uc3RyLmxlbmd0aCkpIHsKICAgICAgICAgIGlJbmRleCArPSBiaWRpVGV4dHNbaV0uc3RyLmxlbmd0aDsKICAgICAgICAgIGkrKzsKICAgICAgICB9CgogICAgICAgIG1hdGNoLmVuZCA9IHsKICAgICAgICAgIGRpdklkeDogaSwKICAgICAgICAgIG9mZnNldDogbWF0Y2hJZHggLSBpSW5kZXgKICAgICAgICB9OwogICAgICAgIHJldC5wdXNoKG1hdGNoKTsKICAgICAgfQoKICAgICAgcmV0dXJuIHJldDsKICAgIH0sCgogICAgcmVuZGVyTWF0Y2hlczogZnVuY3Rpb24gVGV4dExheWVyQnVpbGRlcl9yZW5kZXJNYXRjaGVzKG1hdGNoZXMpIHsKICAgICAgLy8gRWFybHkgZXhpdCBpZiB0aGVyZSBpcyBub3RoaW5nIHRvIHJlbmRlci4KICAgICAgaWYgKG1hdGNoZXMubGVuZ3RoID09PSAwKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICB2YXIgYmlkaVRleHRzID0gdGhpcy50ZXh0Q29udGVudC5pdGVtczsKICAgICAgdmFyIHRleHREaXZzID0gdGhpcy50ZXh0RGl2czsKICAgICAgdmFyIHByZXZFbmQgPSBudWxsOwogICAgICB2YXIgcGFnZUlkeCA9IHRoaXMucGFnZUlkeDsKICAgICAgdmFyIGlzU2VsZWN0ZWRQYWdlID0gKHRoaXMuZmluZENvbnRyb2xsZXIgPT09IG51bGwgPwogICAgICAgIGZhbHNlIDogKHBhZ2VJZHggPT09IHRoaXMuZmluZENvbnRyb2xsZXIuc2VsZWN0ZWQucGFnZUlkeCkpOwogICAgICB2YXIgc2VsZWN0ZWRNYXRjaElkeCA9ICh0aGlzLmZpbmRDb250cm9sbGVyID09PSBudWxsID8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEgOiB0aGlzLmZpbmRDb250cm9sbGVyLnNlbGVjdGVkLm1hdGNoSWR4KTsKICAgICAgdmFyIGhpZ2hsaWdodEFsbCA9ICh0aGlzLmZpbmRDb250cm9sbGVyID09PSBudWxsID8KICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSA6IHRoaXMuZmluZENvbnRyb2xsZXIuc3RhdGUuaGlnaGxpZ2h0QWxsKTsKICAgICAgdmFyIGluZmluaXR5ID0gewogICAgICAgIGRpdklkeDogLTEsCiAgICAgICAgb2Zmc2V0OiB1bmRlZmluZWQKICAgICAgfTsKCiAgICAgIGZ1bmN0aW9uIGJlZ2luVGV4dChiZWdpbiwgY2xhc3NOYW1lKSB7CiAgICAgICAgdmFyIGRpdklkeCA9IGJlZ2luLmRpdklkeDsKICAgICAgICB0ZXh0RGl2c1tkaXZJZHhdLnRleHRDb250ZW50ID0gJyc7CiAgICAgICAgYXBwZW5kVGV4dFRvRGl2KGRpdklkeCwgMCwgYmVnaW4ub2Zmc2V0LCBjbGFzc05hbWUpOwogICAgICB9CgogICAgICBmdW5jdGlvbiBhcHBlbmRUZXh0VG9EaXYoZGl2SWR4LCBmcm9tT2Zmc2V0LCB0b09mZnNldCwgY2xhc3NOYW1lKSB7CiAgICAgICAgdmFyIGRpdiA9IHRleHREaXZzW2RpdklkeF07CiAgICAgICAgdmFyIGNvbnRlbnQgPSBiaWRpVGV4dHNbZGl2SWR4XS5zdHIuc3Vic3RyaW5nKGZyb21PZmZzZXQsIHRvT2Zmc2V0KTsKICAgICAgICB2YXIgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNvbnRlbnQpOwogICAgICAgIGlmIChjbGFzc05hbWUpIHsKICAgICAgICAgIHZhciBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOwogICAgICAgICAgc3Bhbi5jbGFzc05hbWUgPSBjbGFzc05hbWU7CiAgICAgICAgICBzcGFuLmFwcGVuZENoaWxkKG5vZGUpOwogICAgICAgICAgZGl2LmFwcGVuZENoaWxkKHNwYW4pOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBkaXYuYXBwZW5kQ2hpbGQobm9kZSk7CiAgICAgIH0KCiAgICAgIHZhciBpMCA9IHNlbGVjdGVkTWF0Y2hJZHgsIGkxID0gaTAgKyAxOwogICAgICBpZiAoaGlnaGxpZ2h0QWxsKSB7CiAgICAgICAgaTAgPSAwOwogICAgICAgIGkxID0gbWF0Y2hlcy5sZW5ndGg7CiAgICAgIH0gZWxzZSBpZiAoIWlzU2VsZWN0ZWRQYWdlKSB7CiAgICAgICAgLy8gTm90IGhpZ2hsaWdodGluZyBhbGwgYW5kIHRoaXMgaXNuJ3QgdGhlIHNlbGVjdGVkIHBhZ2UsIHNvIGRvIG5vdGhpbmcuCiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICBmb3IgKHZhciBpID0gaTA7IGkgPCBpMTsgaSsrKSB7CiAgICAgICAgdmFyIG1hdGNoID0gbWF0Y2hlc1tpXTsKICAgICAgICB2YXIgYmVnaW4gPSBtYXRjaC5iZWdpbjsKICAgICAgICB2YXIgZW5kID0gbWF0Y2guZW5kOwogICAgICAgIHZhciBpc1NlbGVjdGVkID0gKGlzU2VsZWN0ZWRQYWdlICYmIGkgPT09IHNlbGVjdGVkTWF0Y2hJZHgpOwogICAgICAgIHZhciBoaWdobGlnaHRTdWZmaXggPSAoaXNTZWxlY3RlZCA/ICcgc2VsZWN0ZWQnIDogJycpOwoKICAgICAgICBpZiAodGhpcy5maW5kQ29udHJvbGxlcikgewogICAgICAgICAgdGhpcy5maW5kQ29udHJvbGxlci51cGRhdGVNYXRjaFBvc2l0aW9uKHBhZ2VJZHgsIGksIHRleHREaXZzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luLmRpdklkeCwgZW5kLmRpdklkeCk7CiAgICAgICAgfQoKICAgICAgICAvLyBNYXRjaCBpbnNpZGUgbmV3IGRpdi4KICAgICAgICBpZiAoIXByZXZFbmQgfHwgYmVnaW4uZGl2SWR4ICE9PSBwcmV2RW5kLmRpdklkeCkgewogICAgICAgICAgLy8gSWYgdGhlcmUgd2FzIGEgcHJldmlvdXMgZGl2LCB0aGVuIGFkZCB0aGUgdGV4dCBhdCB0aGUgZW5kLgogICAgICAgICAgaWYgKHByZXZFbmQgIT09IG51bGwpIHsKICAgICAgICAgICAgYXBwZW5kVGV4dFRvRGl2KHByZXZFbmQuZGl2SWR4LCBwcmV2RW5kLm9mZnNldCwgaW5maW5pdHkub2Zmc2V0KTsKICAgICAgICAgIH0KICAgICAgICAgIC8vIENsZWFyIHRoZSBkaXZzIGFuZCBzZXQgdGhlIGNvbnRlbnQgdW50aWwgdGhlIHN0YXJ0aW5nIHBvaW50LgogICAgICAgICAgYmVnaW5UZXh0KGJlZ2luKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgYXBwZW5kVGV4dFRvRGl2KHByZXZFbmQuZGl2SWR4LCBwcmV2RW5kLm9mZnNldCwgYmVnaW4ub2Zmc2V0KTsKICAgICAgICB9CgogICAgICAgIGlmIChiZWdpbi5kaXZJZHggPT09IGVuZC5kaXZJZHgpIHsKICAgICAgICAgIGFwcGVuZFRleHRUb0RpdihiZWdpbi5kaXZJZHgsIGJlZ2luLm9mZnNldCwgZW5kLm9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAnaGlnaGxpZ2h0JyArIGhpZ2hsaWdodFN1ZmZpeCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGFwcGVuZFRleHRUb0RpdihiZWdpbi5kaXZJZHgsIGJlZ2luLm9mZnNldCwgaW5maW5pdHkub2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICdoaWdobGlnaHQgYmVnaW4nICsgaGlnaGxpZ2h0U3VmZml4KTsKICAgICAgICAgIGZvciAodmFyIG4wID0gYmVnaW4uZGl2SWR4ICsgMSwgbjEgPSBlbmQuZGl2SWR4OyBuMCA8IG4xOyBuMCsrKSB7CiAgICAgICAgICAgIHRleHREaXZzW24wXS5jbGFzc05hbWUgPSAnaGlnaGxpZ2h0IG1pZGRsZScgKyBoaWdobGlnaHRTdWZmaXg7CiAgICAgICAgICB9CiAgICAgICAgICBiZWdpblRleHQoZW5kLCAnaGlnaGxpZ2h0IGVuZCcgKyBoaWdobGlnaHRTdWZmaXgpOwogICAgICAgIH0KICAgICAgICBwcmV2RW5kID0gZW5kOwogICAgICB9CgogICAgICBpZiAocHJldkVuZCkgewogICAgICAgIGFwcGVuZFRleHRUb0RpdihwcmV2RW5kLmRpdklkeCwgcHJldkVuZC5vZmZzZXQsIGluZmluaXR5Lm9mZnNldCk7CiAgICAgIH0KICAgIH0sCgogICAgdXBkYXRlTWF0Y2hlczogZnVuY3Rpb24gVGV4dExheWVyQnVpbGRlcl91cGRhdGVNYXRjaGVzKCkgewogICAgICAvLyBPbmx5IHNob3cgbWF0Y2hlcyB3aGVuIGFsbCByZW5kZXJpbmcgaXMgZG9uZS4KICAgICAgaWYgKCF0aGlzLnJlbmRlcmluZ0RvbmUpIHsKICAgICAgICByZXR1cm47CiAgICAgIH0KCiAgICAgIC8vIENsZWFyIGFsbCBtYXRjaGVzLgogICAgICB2YXIgbWF0Y2hlcyA9IHRoaXMubWF0Y2hlczsKICAgICAgdmFyIHRleHREaXZzID0gdGhpcy50ZXh0RGl2czsKICAgICAgdmFyIGJpZGlUZXh0cyA9IHRoaXMudGV4dENvbnRlbnQuaXRlbXM7CiAgICAgIHZhciBjbGVhcmVkVW50aWxEaXZJZHggPSAtMTsKCiAgICAgIC8vIENsZWFyIGFsbCBjdXJyZW50IG1hdGNoZXMuCiAgICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBtYXRjaGVzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7CiAgICAgICAgdmFyIG1hdGNoID0gbWF0Y2hlc1tpXTsKICAgICAgICB2YXIgYmVnaW4gPSBNYXRoLm1heChjbGVhcmVkVW50aWxEaXZJZHgsIG1hdGNoLmJlZ2luLmRpdklkeCk7CiAgICAgICAgZm9yICh2YXIgbiA9IGJlZ2luLCBlbmQgPSBtYXRjaC5lbmQuZGl2SWR4OyBuIDw9IGVuZDsgbisrKSB7CiAgICAgICAgICB2YXIgZGl2ID0gdGV4dERpdnNbbl07CiAgICAgICAgICBkaXYudGV4dENvbnRlbnQgPSBiaWRpVGV4dHNbbl0uc3RyOwogICAgICAgICAgZGl2LmNsYXNzTmFtZSA9ICcnOwogICAgICAgIH0KICAgICAgICBjbGVhcmVkVW50aWxEaXZJZHggPSBtYXRjaC5lbmQuZGl2SWR4ICsgMTsKICAgICAgfQoKICAgICAgaWYgKHRoaXMuZmluZENvbnRyb2xsZXIgPT09IG51bGwgfHwgIXRoaXMuZmluZENvbnRyb2xsZXIuYWN0aXZlKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICAvLyBDb252ZXJ0IHRoZSBtYXRjaGVzIG9uIHRoZSBwYWdlIGNvbnRyb2xsZXIgaW50byB0aGUgbWF0Y2ggZm9ybWF0CiAgICAgIC8vIHVzZWQgZm9yIHRoZSB0ZXh0TGF5ZXIuCiAgICAgIHRoaXMubWF0Y2hlcyA9IHRoaXMuY29udmVydE1hdGNoZXModGhpcy5maW5kQ29udHJvbGxlciA9PT0gbnVsbCA/CiAgICAgICAgW10gOiAodGhpcy5maW5kQ29udHJvbGxlci5wYWdlTWF0Y2hlc1t0aGlzLnBhZ2VJZHhdIHx8IFtdKSk7CiAgICAgIHRoaXMucmVuZGVyTWF0Y2hlcyh0aGlzLm1hdGNoZXMpOwogICAgfQogIH07CiAgcmV0dXJuIFRleHRMYXllckJ1aWxkZXI7Cn0pKCk7CgovKioKICogQGNvbnN0cnVjdG9yCiAqIEBpbXBsZW1lbnRzIElQREZUZXh0TGF5ZXJGYWN0b3J5CiAqLwpmdW5jdGlvbiBEZWZhdWx0VGV4dExheWVyRmFjdG9yeSgpIHt9CkRlZmF1bHRUZXh0TGF5ZXJGYWN0b3J5LnByb3RvdHlwZSA9IHsKICAvKioKICAgKiBAcGFyYW0ge0hUTUxEaXZFbGVtZW50fSB0ZXh0TGF5ZXJEaXYKICAgKiBAcGFyYW0ge251bWJlcn0gcGFnZUluZGV4CiAgICogQHBhcmFtIHtQYWdlVmlld3BvcnR9IHZpZXdwb3J0CiAgICogQHJldHVybnMge1RleHRMYXllckJ1aWxkZXJ9CiAgICovCiAgY3JlYXRlVGV4dExheWVyQnVpbGRlcjogZnVuY3Rpb24gKHRleHRMYXllckRpdiwgcGFnZUluZGV4LCB2aWV3cG9ydCkgewogICAgcmV0dXJuIG5ldyBUZXh0TGF5ZXJCdWlsZGVyKHsKICAgICAgdGV4dExheWVyRGl2OiB0ZXh0TGF5ZXJEaXYsCiAgICAgIHBhZ2VJbmRleDogcGFnZUluZGV4LAogICAgICB2aWV3cG9ydDogdmlld3BvcnQKICAgIH0pOwogIH0KfTsK]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/ViewerJS/ui_utils.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogLSotIE1vZGU6IEphdmE7IHRhYi13aWR0aDogMjsgaW5kZW50LXRhYnMtbW9kZTogbmlsOyBjLWJhc2ljLW9mZnNldDogMiAtKi0gKi8KLyogQ29weXJpZ2h0IDIwMTIgTW96aWxsYSBGb3VuZGF0aW9uCiAqCiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwogKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogKgogKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAqCiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAqLwoKJ3VzZSBzdHJpY3QnOwoKdmFyIENTU19VTklUUyA9IDk2LjAgLyA3Mi4wOwp2YXIgREVGQVVMVF9TQ0FMRSA9ICdhdXRvJzsKdmFyIFVOS05PV05fU0NBTEUgPSAwOwp2YXIgTUFYX0FVVE9fU0NBTEUgPSAxLjI1Owp2YXIgU0NST0xMQkFSX1BBRERJTkcgPSA0MDsKdmFyIFZFUlRJQ0FMX1BBRERJTkcgPSA1OwoKLy8gb3B0aW1pc2VkIENTUyBjdXN0b20gcHJvcGVydHkgZ2V0dGVyL3NldHRlcgp2YXIgQ3VzdG9tU3R5bGUgPSAoZnVuY3Rpb24gQ3VzdG9tU3R5bGVDbG9zdXJlKCkgewoKICAvLyBBcyBub3RlZCBvbjogaHR0cDovL3d3dy56YWNoc3Ryb25hdXQuY29tL3Bvc3RzLzIwMDkvMDIvMTcvCiAgLy8gICAgICAgICAgICAgIGFuaW1hdGUtY3NzLXRyYW5zZm9ybXMtZmlyZWZveC13ZWJraXQuaHRtbAogIC8vIGluIHNvbWUgdmVyc2lvbnMgb2YgSUU5IGl0IGlzIGNyaXRpY2FsIHRoYXQgbXMgYXBwZWFyIGluIHRoaXMgbGlzdAogIC8vIGJlZm9yZSBNb3oKICB2YXIgcHJlZml4ZXMgPSBbJ21zJywgJ01veicsICdXZWJraXQnLCAnTyddOwogIHZhciBfY2FjaGUgPSB7fTsKCiAgZnVuY3Rpb24gQ3VzdG9tU3R5bGUoKSB7fQoKICBDdXN0b21TdHlsZS5nZXRQcm9wID0gZnVuY3Rpb24gZ2V0KHByb3BOYW1lLCBlbGVtZW50KSB7CiAgICAvLyBjaGVjayBjYWNoZSBvbmx5IHdoZW4gbm8gZWxlbWVudCBpcyBnaXZlbgogICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEgJiYgdHlwZW9mIF9jYWNoZVtwcm9wTmFtZV0gPT09ICdzdHJpbmcnKSB7CiAgICAgIHJldHVybiBfY2FjaGVbcHJvcE5hbWVdOwogICAgfQoKICAgIGVsZW1lbnQgPSBlbGVtZW50IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDsKICAgIHZhciBzdHlsZSA9IGVsZW1lbnQuc3R5bGUsIHByZWZpeGVkLCB1UHJvcE5hbWU7CgogICAgLy8gdGVzdCBzdGFuZGFyZCBwcm9wZXJ0eSBmaXJzdAogICAgaWYgKHR5cGVvZiBzdHlsZVtwcm9wTmFtZV0gPT09ICdzdHJpbmcnKSB7CiAgICAgIHJldHVybiAoX2NhY2hlW3Byb3BOYW1lXSA9IHByb3BOYW1lKTsKICAgIH0KCiAgICAvLyBjYXBpdGFsaXplCiAgICB1UHJvcE5hbWUgPSBwcm9wTmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHByb3BOYW1lLnNsaWNlKDEpOwoKICAgIC8vIHRlc3QgdmVuZG9yIHNwZWNpZmljIHByb3BlcnRpZXMKICAgIGZvciAodmFyIGkgPSAwLCBsID0gcHJlZml4ZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CiAgICAgIHByZWZpeGVkID0gcHJlZml4ZXNbaV0gKyB1UHJvcE5hbWU7CiAgICAgIGlmICh0eXBlb2Ygc3R5bGVbcHJlZml4ZWRdID09PSAnc3RyaW5nJykgewogICAgICAgIHJldHVybiAoX2NhY2hlW3Byb3BOYW1lXSA9IHByZWZpeGVkKTsKICAgICAgfQogICAgfQoKICAgIC8vaWYgYWxsIGZhaWxzIHRoZW4gc2V0IHRvIHVuZGVmaW5lZAogICAgcmV0dXJuIChfY2FjaGVbcHJvcE5hbWVdID0gJ3VuZGVmaW5lZCcpOwogIH07CgogIEN1c3RvbVN0eWxlLnNldFByb3AgPSBmdW5jdGlvbiBzZXQocHJvcE5hbWUsIGVsZW1lbnQsIHN0cikgewogICAgdmFyIHByb3AgPSB0aGlzLmdldFByb3AocHJvcE5hbWUpOwogICAgaWYgKHByb3AgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgIGVsZW1lbnQuc3R5bGVbcHJvcF0gPSBzdHI7CiAgICB9CiAgfTsKCiAgcmV0dXJuIEN1c3RvbVN0eWxlOwp9KSgpOwoKZnVuY3Rpb24gZ2V0RmlsZU5hbWUodXJsKSB7CiAgdmFyIGFuY2hvciA9IHVybC5pbmRleE9mKCcjJyk7CiAgdmFyIHF1ZXJ5ID0gdXJsLmluZGV4T2YoJz8nKTsKICB2YXIgZW5kID0gTWF0aC5taW4oCiAgICBhbmNob3IgPiAwID8gYW5jaG9yIDogdXJsLmxlbmd0aCwKICAgIHF1ZXJ5ID4gMCA/IHF1ZXJ5IDogdXJsLmxlbmd0aCk7CiAgcmV0dXJuIHVybC5zdWJzdHJpbmcodXJsLmxhc3RJbmRleE9mKCcvJywgZW5kKSArIDEsIGVuZCk7Cn0KCi8qKgogKiBSZXR1cm5zIHNjYWxlIGZhY3RvciBmb3IgdGhlIGNhbnZhcy4gSXQgbWFrZXMgc2Vuc2UgZm9yIHRoZSBIaURQSSBkaXNwbGF5cy4KICogQHJldHVybiB7T2JqZWN0fSBUaGUgb2JqZWN0IHdpdGggaG9yaXpvbnRhbCAoc3gpIGFuZCB2ZXJ0aWNhbCAoc3kpCiAgICAgICAgICAgICAgICAgICAgc2NhbGVzLiBUaGUgc2NhbGVkIHByb3BlcnR5IGlzIHNldCB0byBmYWxzZSBpZiBzY2FsaW5nIGlzCiAgICAgICAgICAgICAgICAgICAgbm90IHJlcXVpcmVkLCB0cnVlIG90aGVyd2lzZS4KICovCmZ1bmN0aW9uIGdldE91dHB1dFNjYWxlKGN0eCkgewogIHZhciBkZXZpY2VQaXhlbFJhdGlvID0gd2luZG93LmRldmljZVBpeGVsUmF0aW8gfHwgMTsKICB2YXIgYmFja2luZ1N0b3JlUmF0aW8gPSBjdHgud2Via2l0QmFja2luZ1N0b3JlUGl4ZWxSYXRpbyB8fAogICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5tb3pCYWNraW5nU3RvcmVQaXhlbFJhdGlvIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4Lm1zQmFja2luZ1N0b3JlUGl4ZWxSYXRpbyB8fAogICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5vQmFja2luZ1N0b3JlUGl4ZWxSYXRpbyB8fAogICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5iYWNraW5nU3RvcmVQaXhlbFJhdGlvIHx8IDE7CiAgdmFyIHBpeGVsUmF0aW8gPSBkZXZpY2VQaXhlbFJhdGlvIC8gYmFja2luZ1N0b3JlUmF0aW87CiAgcmV0dXJuIHsKICAgIHN4OiBwaXhlbFJhdGlvLAogICAgc3k6IHBpeGVsUmF0aW8sCiAgICBzY2FsZWQ6IHBpeGVsUmF0aW8gIT09IDEKICB9Owp9CgovKioKICogU2Nyb2xscyBzcGVjaWZpZWQgZWxlbWVudCBpbnRvIHZpZXcgb2YgaXRzIHBhcmVudC4KICogZWxlbWVudCB7T2JqZWN0fSBUaGUgZWxlbWVudCB0byBiZSB2aXNpYmxlLgogKiBzcG90IHtPYmplY3R9IEFuIG9iamVjdCB3aXRoIG9wdGlvbmFsIHRvcCBhbmQgbGVmdCBwcm9wZXJ0aWVzLAogKiAgICAgICAgICAgICAgIHNwZWNpZnlpbmcgdGhlIG9mZnNldCBmcm9tIHRoZSB0b3AgbGVmdCBlZGdlLgogKi8KZnVuY3Rpb24gc2Nyb2xsSW50b1ZpZXcoZWxlbWVudCwgc3BvdCkgewogIC8vIEFzc3VtaW5nIG9mZnNldFBhcmVudCBpcyBhdmFpbGFibGUgKGl0J3Mgbm90IGF2YWlsYWJsZSB3aGVuIHZpZXdlciBpcyBpbgogIC8vIGhpZGRlbiBpZnJhbWUgb3Igb2JqZWN0KS4gV2UgaGF2ZSB0byBzY3JvbGw6IGlmIHRoZSBvZmZzZXRQYXJlbnQgaXMgbm90IHNldAogIC8vIHByb2R1Y2luZyB0aGUgZXJyb3IuIFNlZSBhbHNvIGFuaW1hdGlvblN0YXJ0ZWRDbG9zdXJlLgogIHZhciBwYXJlbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKICB2YXIgb2Zmc2V0WSA9IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5jbGllbnRUb3A7CiAgdmFyIG9mZnNldFggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50LmNsaWVudExlZnQ7CiAgaWYgKCFwYXJlbnQpIHsKICAgIGNvbnNvbGUuZXJyb3IoJ29mZnNldFBhcmVudCBpcyBub3Qgc2V0IC0tIGNhbm5vdCBzY3JvbGwnKTsKICAgIHJldHVybjsKICB9CiAgd2hpbGUgKHBhcmVudC5jbGllbnRIZWlnaHQgPT09IHBhcmVudC5zY3JvbGxIZWlnaHQpIHsKICAgIGlmIChwYXJlbnQuZGF0YXNldC5fc2NhbGVZKSB7CiAgICAgIG9mZnNldFkgLz0gcGFyZW50LmRhdGFzZXQuX3NjYWxlWTsKICAgICAgb2Zmc2V0WCAvPSBwYXJlbnQuZGF0YXNldC5fc2NhbGVYOwogICAgfQogICAgb2Zmc2V0WSArPSBwYXJlbnQub2Zmc2V0VG9wOwogICAgb2Zmc2V0WCArPSBwYXJlbnQub2Zmc2V0TGVmdDsKICAgIHBhcmVudCA9IHBhcmVudC5vZmZzZXRQYXJlbnQ7CiAgICBpZiAoIXBhcmVudCkgewogICAgICByZXR1cm47IC8vIG5vIG5lZWQgdG8gc2Nyb2xsCiAgICB9CiAgfQogIGlmIChzcG90KSB7CiAgICBpZiAoc3BvdC50b3AgIT09IHVuZGVmaW5lZCkgewogICAgICBvZmZzZXRZICs9IHNwb3QudG9wOwogICAgfQogICAgaWYgKHNwb3QubGVmdCAhPT0gdW5kZWZpbmVkKSB7CiAgICAgIG9mZnNldFggKz0gc3BvdC5sZWZ0OwogICAgICBwYXJlbnQuc2Nyb2xsTGVmdCA9IG9mZnNldFg7CiAgICB9CiAgfQogIHBhcmVudC5zY3JvbGxUb3AgPSBvZmZzZXRZOwp9CgovKioKICogSGVscGVyIGZ1bmN0aW9uIHRvIHN0YXJ0IG1vbml0b3JpbmcgdGhlIHNjcm9sbCBldmVudCBhbmQgY29udmVydGluZyB0aGVtIGludG8KICogUERGLmpzIGZyaWVuZGx5IG9uZTogd2l0aCBzY3JvbGwgZGVib3VuY2UgYW5kIHNjcm9sbCBkaXJlY3Rpb24uCiAqLwpmdW5jdGlvbiB3YXRjaFNjcm9sbCh2aWV3QXJlYUVsZW1lbnQsIGNhbGxiYWNrKSB7CiAgdmFyIGRlYm91bmNlU2Nyb2xsID0gZnVuY3Rpb24gZGVib3VuY2VTY3JvbGwoZXZ0KSB7CiAgICBpZiAockFGKSB7CiAgICAgIHJldHVybjsKICAgIH0KICAgIC8vIHNjaGVkdWxlIGFuIGludm9jYXRpb24gb2Ygc2Nyb2xsIGZvciBuZXh0IGFuaW1hdGlvbiBmcmFtZS4KICAgIHJBRiA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24gdmlld0FyZWFFbGVtZW50U2Nyb2xsZWQoKSB7CiAgICAgIHJBRiA9IG51bGw7CgogICAgICB2YXIgY3VycmVudFkgPSB2aWV3QXJlYUVsZW1lbnQuc2Nyb2xsVG9wOwogICAgICB2YXIgbGFzdFkgPSBzdGF0ZS5sYXN0WTsKICAgICAgaWYgKGN1cnJlbnRZICE9PSBsYXN0WSkgewogICAgICAgIHN0YXRlLmRvd24gPSBjdXJyZW50WSA+IGxhc3RZOwogICAgICB9CiAgICAgIHN0YXRlLmxhc3RZID0gY3VycmVudFk7CiAgICAgIGNhbGxiYWNrKHN0YXRlKTsKICAgIH0pOwogIH07CgogIHZhciBzdGF0ZSA9IHsKICAgIGRvd246IHRydWUsCiAgICBsYXN0WTogdmlld0FyZWFFbGVtZW50LnNjcm9sbFRvcCwKICAgIF9ldmVudEhhbmRsZXI6IGRlYm91bmNlU2Nyb2xsCiAgfTsKCiAgdmFyIHJBRiA9IG51bGw7CiAgdmlld0FyZWFFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGRlYm91bmNlU2Nyb2xsLCB0cnVlKTsKICByZXR1cm4gc3RhdGU7Cn0KCi8qKgogKiBVc2UgYmluYXJ5IHNlYXJjaCB0byBmaW5kIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgaXRlbSBpbiBhIGdpdmVuIGFycmF5IHdoaWNoCiAqIHBhc3NlcyBhIGdpdmVuIGNvbmRpdGlvbi4gVGhlIGl0ZW1zIGFyZSBleHBlY3RlZCB0byBiZSBzb3J0ZWQgaW4gdGhlIHNlbnNlCiAqIHRoYXQgaWYgdGhlIGNvbmRpdGlvbiBpcyB0cnVlIGZvciBvbmUgaXRlbSBpbiB0aGUgYXJyYXksIHRoZW4gaXQgaXMgYWxzbyB0cnVlCiAqIGZvciBhbGwgZm9sbG93aW5nIGl0ZW1zLgogKgogKiBAcmV0dXJucyB7TnVtYmVyfSBJbmRleCBvZiB0aGUgZmlyc3QgYXJyYXkgZWxlbWVudCB0byBwYXNzIHRoZSB0ZXN0LAogKiAgICAgICAgICAgICAgICAgICBvciB8aXRlbXMubGVuZ3RofCBpZiBubyBzdWNoIGVsZW1lbnQgZXhpc3RzLgogKi8KZnVuY3Rpb24gYmluYXJ5U2VhcmNoRmlyc3RJdGVtKGl0ZW1zLCBjb25kaXRpb24pIHsKICB2YXIgbWluSW5kZXggPSAwOwogIHZhciBtYXhJbmRleCA9IGl0ZW1zLmxlbmd0aCAtIDE7CgogIGlmIChpdGVtcy5sZW5ndGggPT09IDAgfHwgIWNvbmRpdGlvbihpdGVtc1ttYXhJbmRleF0pKSB7CiAgICByZXR1cm4gaXRlbXMubGVuZ3RoOwogIH0KICBpZiAoY29uZGl0aW9uKGl0ZW1zW21pbkluZGV4XSkpIHsKICAgIHJldHVybiBtaW5JbmRleDsKICB9CgogIHdoaWxlIChtaW5JbmRleCA8IG1heEluZGV4KSB7CiAgICB2YXIgY3VycmVudEluZGV4ID0gKG1pbkluZGV4ICsgbWF4SW5kZXgpID4+IDE7CiAgICB2YXIgY3VycmVudEl0ZW0gPSBpdGVtc1tjdXJyZW50SW5kZXhdOwogICAgaWYgKGNvbmRpdGlvbihjdXJyZW50SXRlbSkpIHsKICAgICAgbWF4SW5kZXggPSBjdXJyZW50SW5kZXg7CiAgICB9IGVsc2UgewogICAgICBtaW5JbmRleCA9IGN1cnJlbnRJbmRleCArIDE7CiAgICB9CiAgfQogIHJldHVybiBtaW5JbmRleDsgLyogPT09IG1heEluZGV4ICovCn0KCi8qKgogKiBHZW5lcmljIGhlbHBlciB0byBmaW5kIG91dCB3aGF0IGVsZW1lbnRzIGFyZSB2aXNpYmxlIHdpdGhpbiBhIHNjcm9sbCBwYW5lLgogKi8KZnVuY3Rpb24gZ2V0VmlzaWJsZUVsZW1lbnRzKHNjcm9sbEVsLCB2aWV3cywgc29ydEJ5VmlzaWJpbGl0eSkgewogIHZhciB0b3AgPSBzY3JvbGxFbC5zY3JvbGxUb3AsIGJvdHRvbSA9IHRvcCArIHNjcm9sbEVsLmNsaWVudEhlaWdodDsKICB2YXIgbGVmdCA9IHNjcm9sbEVsLnNjcm9sbExlZnQsIHJpZ2h0ID0gbGVmdCArIHNjcm9sbEVsLmNsaWVudFdpZHRoOwoKICBmdW5jdGlvbiBpc0VsZW1lbnRCb3R0b21CZWxvd1ZpZXdUb3AodmlldykgewogICAgdmFyIGVsZW1lbnQgPSB2aWV3LmRpdjsKICAgIHZhciBlbGVtZW50Qm90dG9tID0KICAgICAgZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVtZW50LmNsaWVudFRvcCArIGVsZW1lbnQuY2xpZW50SGVpZ2h0OwogICAgcmV0dXJuIGVsZW1lbnRCb3R0b20gPiB0b3A7CiAgfQoKICB2YXIgdmlzaWJsZSA9IFtdLCB2aWV3LCBlbGVtZW50OwogIHZhciBjdXJyZW50SGVpZ2h0LCB2aWV3SGVpZ2h0LCBoaWRkZW5IZWlnaHQsIHBlcmNlbnRIZWlnaHQ7CiAgdmFyIGN1cnJlbnRXaWR0aCwgdmlld1dpZHRoOwogIHZhciBmaXJzdFZpc2libGVFbGVtZW50SW5kID0gKHZpZXdzLmxlbmd0aCA9PT0gMCkgPyAwIDoKICAgIGJpbmFyeVNlYXJjaEZpcnN0SXRlbSh2aWV3cywgaXNFbGVtZW50Qm90dG9tQmVsb3dWaWV3VG9wKTsKCiAgZm9yICh2YXIgaSA9IGZpcnN0VmlzaWJsZUVsZW1lbnRJbmQsIGlpID0gdmlld3MubGVuZ3RoOyBpIDwgaWk7IGkrKykgewogICAgdmlldyA9IHZpZXdzW2ldOwogICAgZWxlbWVudCA9IHZpZXcuZGl2OwogICAgY3VycmVudEhlaWdodCA9IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5jbGllbnRUb3A7CiAgICB2aWV3SGVpZ2h0ID0gZWxlbWVudC5jbGllbnRIZWlnaHQ7CgogICAgaWYgKGN1cnJlbnRIZWlnaHQgPiBib3R0b20pIHsKICAgICAgYnJlYWs7CiAgICB9CgogICAgY3VycmVudFdpZHRoID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5jbGllbnRMZWZ0OwogICAgdmlld1dpZHRoID0gZWxlbWVudC5jbGllbnRXaWR0aDsKICAgIGlmIChjdXJyZW50V2lkdGggKyB2aWV3V2lkdGggPCBsZWZ0IHx8IGN1cnJlbnRXaWR0aCA+IHJpZ2h0KSB7CiAgICAgIGNvbnRpbnVlOwogICAgfQogICAgaGlkZGVuSGVpZ2h0ID0gTWF0aC5tYXgoMCwgdG9wIC0gY3VycmVudEhlaWdodCkgKwogICAgICBNYXRoLm1heCgwLCBjdXJyZW50SGVpZ2h0ICsgdmlld0hlaWdodCAtIGJvdHRvbSk7CiAgICBwZXJjZW50SGVpZ2h0ID0gKCh2aWV3SGVpZ2h0IC0gaGlkZGVuSGVpZ2h0KSAqIDEwMCAvIHZpZXdIZWlnaHQpIHwgMDsKCiAgICB2aXNpYmxlLnB1c2goewogICAgICBpZDogdmlldy5pZCwKICAgICAgeDogY3VycmVudFdpZHRoLAogICAgICB5OiBjdXJyZW50SGVpZ2h0LAogICAgICB2aWV3OiB2aWV3LAogICAgICBwZXJjZW50OiBwZXJjZW50SGVpZ2h0CiAgICB9KTsKICB9CgogIHZhciBmaXJzdCA9IHZpc2libGVbMF07CiAgdmFyIGxhc3QgPSB2aXNpYmxlW3Zpc2libGUubGVuZ3RoIC0gMV07CgogIGlmIChzb3J0QnlWaXNpYmlsaXR5KSB7CiAgICB2aXNpYmxlLnNvcnQoZnVuY3Rpb24oYSwgYikgewogICAgICB2YXIgcGMgPSBhLnBlcmNlbnQgLSBiLnBlcmNlbnQ7CiAgICAgIGlmIChNYXRoLmFicyhwYykgPiAwLjAwMSkgewogICAgICAgIHJldHVybiAtcGM7CiAgICAgIH0KICAgICAgcmV0dXJuIGEuaWQgLSBiLmlkOyAvLyBlbnN1cmUgc3RhYmlsaXR5CiAgICB9KTsKICB9CiAgcmV0dXJuIHtmaXJzdDogZmlyc3QsIGxhc3Q6IGxhc3QsIHZpZXdzOiB2aXNpYmxlfTsKfQoKLyoqCiAqIEV2ZW50IGhhbmRsZXIgdG8gc3VwcHJlc3MgY29udGV4dCBtZW51LgogKi8KZnVuY3Rpb24gbm9Db250ZXh0TWVudUhhbmRsZXIoZSkgewogIGUucHJldmVudERlZmF1bHQoKTsKfQoKLyoqCiAqIFJldHVybnMgdGhlIGZpbGVuYW1lIG9yIGd1ZXNzZWQgZmlsZW5hbWUgZnJvbSB0aGUgdXJsIChzZWUgaXNzdWUgMzQ1NSkuCiAqIHVybCB7U3RyaW5nfSBUaGUgb3JpZ2luYWwgUERGIGxvY2F0aW9uLgogKiBAcmV0dXJuIHtTdHJpbmd9IEd1ZXNzZWQgUERGIGZpbGUgbmFtZS4KICovCmZ1bmN0aW9uIGdldFBERkZpbGVOYW1lRnJvbVVSTCh1cmwpIHsKICB2YXIgcmVVUkkgPSAvXig/OihbXjpdKzopP1wvXC9bXlwvXSspPyhbXj8jXSopKFw/W14jXSopPygjLiopPyQvOwogIC8vICAgICAgICAgICAgU0NIRU1FICAgICAgSE9TVCAgICAgICAgIDEuUEFUSCAgMi5RVUVSWSAgIDMuUkVGCiAgLy8gUGF0dGVybiB0byBnZXQgbGFzdCBtYXRjaGluZyBOQU1FLnBkZgogIHZhciByZUZpbGVuYW1lID0gL1teXC8/Iz1dK1wucGRmXGIoPyEuKlwucGRmXGIpL2k7CiAgdmFyIHNwbGl0VVJJID0gcmVVUkkuZXhlYyh1cmwpOwogIHZhciBzdWdnZXN0ZWRGaWxlbmFtZSA9IHJlRmlsZW5hbWUuZXhlYyhzcGxpdFVSSVsxXSkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVGaWxlbmFtZS5leGVjKHNwbGl0VVJJWzJdKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICByZUZpbGVuYW1lLmV4ZWMoc3BsaXRVUklbM10pOwogIGlmIChzdWdnZXN0ZWRGaWxlbmFtZSkgewogICAgc3VnZ2VzdGVkRmlsZW5hbWUgPSBzdWdnZXN0ZWRGaWxlbmFtZVswXTsKICAgIGlmIChzdWdnZXN0ZWRGaWxlbmFtZS5pbmRleE9mKCclJykgIT09IC0xKSB7CiAgICAgIC8vIFVSTC1lbmNvZGVkICUyRnBhdGglMkZ0byUyRmZpbGUucGRmIHNob3VsZCBiZSBmaWxlLnBkZgogICAgICB0cnkgewogICAgICAgIHN1Z2dlc3RlZEZpbGVuYW1lID0KICAgICAgICAgIHJlRmlsZW5hbWUuZXhlYyhkZWNvZGVVUklDb21wb25lbnQoc3VnZ2VzdGVkRmlsZW5hbWUpKVswXTsKICAgICAgfSBjYXRjaChlKSB7IC8vIFBvc3NpYmxlIChleHRyZW1lbHkgcmFyZSkgZXJyb3JzOgogICAgICAgIC8vIFVSSUVycm9yICJNYWxmb3JtZWQgVVJJIiwgZS5nLiBmb3IgIiVBQS5wZGYiCiAgICAgICAgLy8gVHlwZUVycm9yICJudWxsIGhhcyBubyBwcm9wZXJ0aWVzIiwgZS5nLiBmb3IgIiUyRi5wZGYiCiAgICAgIH0KICAgIH0KICB9CiAgcmV0dXJuIHN1Z2dlc3RlZEZpbGVuYW1lIHx8ICdkb2N1bWVudC5wZGYnOwp9Cgp2YXIgUHJvZ3Jlc3NCYXIgPSAoZnVuY3Rpb24gUHJvZ3Jlc3NCYXJDbG9zdXJlKCkgewoKICBmdW5jdGlvbiBjbGFtcCh2LCBtaW4sIG1heCkgewogICAgcmV0dXJuIE1hdGgubWluKE1hdGgubWF4KHYsIG1pbiksIG1heCk7CiAgfQoKICBmdW5jdGlvbiBQcm9ncmVzc0JhcihpZCwgb3B0cykgewogICAgdGhpcy52aXNpYmxlID0gdHJ1ZTsKCiAgICAvLyBGZXRjaCB0aGUgc3ViLWVsZW1lbnRzIGZvciBsYXRlci4KICAgIHRoaXMuZGl2ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihpZCArICcgLnByb2dyZXNzJyk7CgogICAgLy8gR2V0IHRoZSBsb2FkaW5nIGJhciBlbGVtZW50LCBzbyBpdCBjYW4gYmUgcmVzaXplZCB0byBmaXQgdGhlIHZpZXdlci4KICAgIHRoaXMuYmFyID0gdGhpcy5kaXYucGFyZW50Tm9kZTsKCiAgICAvLyBHZXQgb3B0aW9ucywgd2l0aCBzZW5zaWJsZSBkZWZhdWx0cy4KICAgIHRoaXMuaGVpZ2h0ID0gb3B0cy5oZWlnaHQgfHwgMTAwOwogICAgdGhpcy53aWR0aCA9IG9wdHMud2lkdGggfHwgMTAwOwogICAgdGhpcy51bml0cyA9IG9wdHMudW5pdHMgfHwgJyUnOwoKICAgIC8vIEluaXRpYWxpemUgaGVpZ2h0cy4KICAgIHRoaXMuZGl2LnN0eWxlLmhlaWdodCA9IHRoaXMuaGVpZ2h0ICsgdGhpcy51bml0czsKICAgIHRoaXMucGVyY2VudCA9IDA7CiAgfQoKICBQcm9ncmVzc0Jhci5wcm90b3R5cGUgPSB7CgogICAgdXBkYXRlQmFyOiBmdW5jdGlvbiBQcm9ncmVzc0Jhcl91cGRhdGVCYXIoKSB7CiAgICAgIGlmICh0aGlzLl9pbmRldGVybWluYXRlKSB7CiAgICAgICAgdGhpcy5kaXYuY2xhc3NMaXN0LmFkZCgnaW5kZXRlcm1pbmF0ZScpOwogICAgICAgIHRoaXMuZGl2LnN0eWxlLndpZHRoID0gdGhpcy53aWR0aCArIHRoaXMudW5pdHM7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICB0aGlzLmRpdi5jbGFzc0xpc3QucmVtb3ZlKCdpbmRldGVybWluYXRlJyk7CiAgICAgIHZhciBwcm9ncmVzc1NpemUgPSB0aGlzLndpZHRoICogdGhpcy5fcGVyY2VudCAvIDEwMDsKICAgICAgdGhpcy5kaXYuc3R5bGUud2lkdGggPSBwcm9ncmVzc1NpemUgKyB0aGlzLnVuaXRzOwogICAgfSwKCiAgICBnZXQgcGVyY2VudCgpIHsKICAgICAgcmV0dXJuIHRoaXMuX3BlcmNlbnQ7CiAgICB9LAoKICAgIHNldCBwZXJjZW50KHZhbCkgewogICAgICB0aGlzLl9pbmRldGVybWluYXRlID0gaXNOYU4odmFsKTsKICAgICAgdGhpcy5fcGVyY2VudCA9IGNsYW1wKHZhbCwgMCwgMTAwKTsKICAgICAgdGhpcy51cGRhdGVCYXIoKTsKICAgIH0sCgogICAgc2V0V2lkdGg6IGZ1bmN0aW9uIFByb2dyZXNzQmFyX3NldFdpZHRoKHZpZXdlcikgewogICAgICBpZiAodmlld2VyKSB7CiAgICAgICAgdmFyIGNvbnRhaW5lciA9IHZpZXdlci5wYXJlbnROb2RlOwogICAgICAgIHZhciBzY3JvbGxiYXJXaWR0aCA9IGNvbnRhaW5lci5vZmZzZXRXaWR0aCAtIHZpZXdlci5vZmZzZXRXaWR0aDsKICAgICAgICBpZiAoc2Nyb2xsYmFyV2lkdGggPiAwKSB7CiAgICAgICAgICB0aGlzLmJhci5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ3dpZHRoOiBjYWxjKDEwMCUgLSAnICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxiYXJXaWR0aCArICdweCk7Jyk7CiAgICAgICAgfQogICAgICB9CiAgICB9LAoKICAgIGhpZGU6IGZ1bmN0aW9uIFByb2dyZXNzQmFyX2hpZGUoKSB7CiAgICAgIGlmICghdGhpcy52aXNpYmxlKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlOwogICAgICB0aGlzLmJhci5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTsKICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCdsb2FkaW5nSW5Qcm9ncmVzcycpOwogICAgfSwKCiAgICBzaG93OiBmdW5jdGlvbiBQcm9ncmVzc0Jhcl9zaG93KCkgewogICAgICBpZiAodGhpcy52aXNpYmxlKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIHRoaXMudmlzaWJsZSA9IHRydWU7CiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnbG9hZGluZ0luUHJvZ3Jlc3MnKTsKICAgICAgdGhpcy5iYXIuY2xhc3NMaXN0LnJlbW92ZSgnaGlkZGVuJyk7CiAgICB9CiAgfTsKCiAgcmV0dXJuIFByb2dyZXNzQmFyOwp9KSgpOwo=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/ViewerJS/viewer.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE0IEtPIEdtYkggPGNvcHlyaWdodEBrb2dtYmguY29tPgogKgogKiBAbGljc3RhcnQKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgV2ViT0RGLgogKgogKiBXZWJPREYgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAogKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR05VIEFHUEwpCiAqIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mCiAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBXZWJPREYgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CiAqIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogKiBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqIGFsb25nIHdpdGggV2ViT0RGLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogKiBAbGljZW5kCiAqCiAqIEBzb3VyY2U6IGh0dHA6Ly93d3cud2Vib2RmLm9yZy8KICogQHNvdXJjZTogaHR0cHM6Ly9naXRodWIuY29tL2tvZ21iaC9XZWJPREYvCiAqLwoKLyoKICogVGhpcyBmaWxlIGlzIGEgZGVyaXZhdGl2ZSBmcm9tIGEgcGFydCBvZiBNb3ppbGxhJ3MgUERGLmpzIHByb2plY3QuIFRoZQogKiBvcmlnaW5hbCBsaWNlbnNlIGhlYWRlciBmb2xsb3dzLgogKi8KCi8qIENvcHlyaWdodCAyMDEyIE1vemlsbGEgRm91bmRhdGlvbgogKgogKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICoKICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAqCiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAqLwoKKiB7CiAgICBwYWRkaW5nOiAwOwogICAgbWFyZ2luOiAwOwp9CgpodG1sID4gYm9keSB7CiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLnRpdGxlYmFyID4gc3BhbiwKLnRvb2xiYXJMYWJlbCwKaW5wdXQsCmJ1dHRvbiwKc2VsZWN0IHsKICBmb250OiBtZXNzYWdlLWJveDsKfQoKI3RpdGxlYmFyIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHotaW5kZXg6IDI7IAogICAgdG9wOiAwcHg7CiAgICBsZWZ0OiAwcHg7CiAgICBoZWlnaHQ6IDMycHg7CiAgICB3aWR0aDogMTAwJTsKICAgIG92ZXJmbG93OiBoaWRkZW47CgogICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwcHggMXB4IDNweCByZ2JhKDUwLCA1MCwgNTAsIDAuNzUpOwogICAgLW1vei1ib3gtc2hhZG93OiAgICAwcHggMXB4IDNweCByZ2JhKDUwLCA1MCwgNTAsIDAuNzUpOwogICAgYm94LXNoYWRvdzogICAgICAgICAwcHggMXB4IDNweCByZ2JhKDUwLCA1MCwgNTAsIDAuNzUpOwogICAgCiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoaW1hZ2VzL3RleHR1cmUucG5nKSwgbGluZWFyLWdyYWRpZW50KHJnYmEoNjksIDY5LCA2OSwgLjk1KSwgcmdiYSg4MiwgODIsIDgyLCAuOTkpKTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChpbWFnZXMvdGV4dHVyZS5wbmcpLCAtd2Via2l0LWxpbmVhci1ncmFkaWVudChyZ2JhKDY5LCA2OSwgNjksIC45NSksIHJnYmEoODIsIDgyLCA4MiwgLjk5KSk7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoaW1hZ2VzL3RleHR1cmUucG5nKSwgLW1vei1saW5lYXItZ3JhZGllbnQocmdiYSg2OSwgNjksIDY5LCAuOTUpLCByZ2JhKDgyLCA4MiwgODIsIC45OSkpOwogICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKGltYWdlcy90ZXh0dXJlLnBuZyksIC1tcy1saW5lYXItZ3JhZGllbnQocmdiYSg2OSwgNjksIDY5LCAuOTUpLCByZ2JhKDgyLCA4MiwgODIsIC45OSkpOwogICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKGltYWdlcy90ZXh0dXJlLnBuZyksIC1vLWxpbmVhci1ncmFkaWVudChyZ2JhKDY5LCA2OSwgNjksIC45NSksIHJnYmEoODIsIDgyLCA4MiwgLjk5KSk7Cn0KCiN0aXRsZWJhciBhLCAjYWJvdXREaWFsb2cgYSwgI3RpdGxlYmFyIGE6dmlzaXRlZCwgI2Fib3V0RGlhbG9nIGE6dmlzaXRlZCB7CiAgICBjb2xvcjogI2NjYzsKfQoKI2RvY3VtZW50TmFtZSB7CiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7CiAgICBtYXJnaW4tbGVmdDogMTBweDsKICAgIG1hcmdpbi10b3A6IDhweDsKICAgIGNvbG9yOiAjRjJGMkYyOwogICAgbGluZS1oZWlnaHQ6IDE0cHg7CiAgICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsgCn0KI2RvY3VtZW50TmFtZSB7CiAgICBmb250LXNpemU6IDE0cHg7Cn0KCiN0b29sYmFyQ29udGFpbmVyIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHotaW5kZXg6IDI7IAogICAgYm90dG9tOiAwcHg7CiAgICBsZWZ0OiAwcHg7CiAgICBoZWlnaHQ6IDMycHg7CiAgICB3aWR0aDogMTAwJTsKICAgIG92ZXJmbG93OiBoaWRkZW47CgogICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwcHggLTFweCAzcHggcmdiYSg1MCwgNTAsIDUwLCAwLjc1KTsKICAgIC1tb3otYm94LXNoYWRvdzogICAgMHB4IC0xcHggM3B4IHJnYmEoNTAsIDUwLCA1MCwgMC43NSk7CiAgICBib3gtc2hhZG93OiAgICAgICAgIDBweCAtMXB4IDNweCByZ2JhKDUwLCA1MCwgNTAsIDAuNzUpOwogICAgCiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoaW1hZ2VzL3RleHR1cmUucG5nKSwgbGluZWFyLWdyYWRpZW50KHJnYmEoODIsIDgyLCA4MiwgLjk5KSwgcmdiYSg2OSwgNjksIDY5LCAuOTUpKTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChpbWFnZXMvdGV4dHVyZS5wbmcpLCAtd2Via2l0LWxpbmVhci1ncmFkaWVudChyZ2JhKDgyLCA4MiwgODIsIC45OSksIHJnYmEoNjksIDY5LCA2OSwgLjk1KSk7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoaW1hZ2VzL3RleHR1cmUucG5nKSwgLW1vei1saW5lYXItZ3JhZGllbnQocmdiYSg4MiwgODIsIDgyLCAuOTkpLCByZ2JhKDY5LCA2OSwgNjksIC45NSkpOwogICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKGltYWdlcy90ZXh0dXJlLnBuZyksIC1tcy1saW5lYXItZ3JhZGllbnQocmdiYSg4MiwgODIsIDgyLCAuOTkpLCByZ2JhKDY5LCA2OSwgNjksIC45NSkpOwogICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKGltYWdlcy90ZXh0dXJlLnBuZyksIC1vLWxpbmVhci1ncmFkaWVudChyZ2JhKDgyLCA4MiwgODIsIC45OSksIHJnYmEoNjksIDY5LCA2OSwgLjk1KSk7Cn0KCiN0b29sYmFyIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKI3Rvb2xiYXJNaWRkbGVDb250YWluZXIsICN0b29sYmFyTGVmdCB7CiAgICB2aXNpYmlsaXR5OiBoaWRkZW47Cn0KCmh0bWxbZGlyPSdsdHInXSAjdG9vbGJhckxlZnQgewogICAgbWFyZ2luLWxlZnQ6IC0xcHg7Cn0KaHRtbFtkaXI9J3J0bCddICN0b29sYmFyUmlnaHQgewogICAgbWFyZ2luLWxlZnQ6IC0xcHg7Cn0KaHRtbFtkaXI9J2x0ciddICN0b29sYmFyTGVmdCwKaHRtbFtkaXI9J3J0bCddICN0b29sYmFyUmlnaHQgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwOwogICAgbGVmdDogMDsKfQpodG1sW2Rpcj0nbHRyJ10gI3Rvb2xiYXJSaWdodCwKaHRtbFtkaXI9J3J0bCddICN0b29sYmFyTGVmdCB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDA7CiAgICByaWdodDogMDsKfQpodG1sW2Rpcj0nbHRyJ10gI3Rvb2xiYXJMZWZ0ID4gKiwKaHRtbFtkaXI9J2x0ciddICN0b29sYmFyTWlkZGxlID4gKiwKaHRtbFtkaXI9J2x0ciddICN0b29sYmFyUmlnaHQgPiAqIHsKICAgIGZsb2F0OiBsZWZ0Owp9Cmh0bWxbZGlyPSdydGwnXSAjdG9vbGJhckxlZnQgPiAqLApodG1sW2Rpcj0ncnRsJ10gI3Rvb2xiYXJNaWRkbGUgPiAqLApodG1sW2Rpcj0ncnRsJ10gI3Rvb2xiYXJSaWdodCA+ICogewogICAgZmxvYXQ6IHJpZ2h0Owp9CgovKiBvdXRlci9pbm5lciBjZW50ZXIgcHJvdmlkZXMgaG9yaXpvbnRhbCBjZW50ZXIgKi8KaHRtbFtkaXI9J2x0ciddIC5vdXRlckNlbnRlciB7CiAgICAgIGZsb2F0OiByaWdodDsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICByaWdodDogNTAlOwp9Cmh0bWxbZGlyPSdydGwnXSAub3V0ZXJDZW50ZXIgewogICAgICBmbG9hdDogbGVmdDsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICBsZWZ0OiA1MCU7Cn0KaHRtbFtkaXI9J2x0ciddIC5pbm5lckNlbnRlciB7CiAgICAgIGZsb2F0OiByaWdodDsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICByaWdodDogLTUwJTsKfQpodG1sW2Rpcj0ncnRsJ10gLmlubmVyQ2VudGVyIHsKICAgICAgZmxvYXQ6IGxlZnQ7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgbGVmdDogLTUwJTsKfQoKaHRtbFtkaXI9J2x0ciddIC5zcGxpdFRvb2xiYXJCdXR0b24gewogICAgICBtYXJnaW46IDNweCAycHggNHB4IDA7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9Cmh0bWxbZGlyPSdydGwnXSAuc3BsaXRUb29sYmFyQnV0dG9uIHsKICAgICAgbWFyZ2luOiAzcHggMCA0cHggMnB4OwogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQpodG1sW2Rpcj0nbHRyJ10gLnNwbGl0VG9vbGJhckJ1dHRvbiA+IC50b29sYmFyQnV0dG9uIHsKICAgICAgYm9yZGVyLXJhZGl1czogMDsKICAgICAgICBmbG9hdDogbGVmdDsKfQpodG1sW2Rpcj0ncnRsJ10gLnNwbGl0VG9vbGJhckJ1dHRvbiA+IC50b29sYmFyQnV0dG9uIHsKICAgICAgYm9yZGVyLXJhZGl1czogMDsKICAgICAgICBmbG9hdDogcmlnaHQ7Cn0KCi5zcGxpdFRvb2xiYXJCdXR0b24udG9nZ2xlZCAudG9vbGJhckJ1dHRvbiB7CiAgICAgIG1hcmdpbjogMDsKfQoKLnRvb2xiYXJCdXR0b24gewogICAgYm9yZGVyOiAwIG5vbmU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDApOwogICAgbWluLXdpZHRoOiAzMnB4OwogICAgaGVpZ2h0OiAyNXB4OwogICAgYm9yZGVyLXJhZGl1czogMnB4OwogICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKfQoKaHRtbFtkaXI9J2x0ciddIC50b29sYmFyQnV0dG9uLApodG1sW2Rpcj0nbHRyJ10gLmRyb3Bkb3duVG9vbGJhckJ1dHRvbiB7CiAgICAgIG1hcmdpbjogM3B4IDJweCA0cHggMDsKfQpodG1sW2Rpcj0ncnRsJ10gLnRvb2xiYXJCdXR0b24sCmh0bWxbZGlyPSdydGwnXSAuZHJvcGRvd25Ub29sYmFyQnV0dG9uIHsKICAgICAgbWFyZ2luOiAzcHggMCA0cHggMnB4Owp9CgoudG9vbGJhckJ1dHRvbjpob3ZlciwKLnRvb2xiYXJCdXR0b246Zm9jdXMsCi5kcm9wZG93blRvb2xiYXJCdXR0b24gewogICAgYmFja2dyb3VuZC1jb2xvcjogaHNsYSgwLDAlLDAlLC4xMik7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoaHNsYSgwLDAlLDEwMCUsLjA1KSwgaHNsYSgwLDAlLDEwMCUsMCkpOwogICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoaHNsYSgwLDAlLDEwMCUsLjA1KSwgaHNsYSgwLDAlLDEwMCUsMCkpOwogICAgYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQoaHNsYSgwLDAlLDEwMCUsLjA1KSwgaHNsYSgwLDAlLDEwMCUsMCkpOwogICAgYmFja2dyb3VuZC1pbWFnZTogLW1zLWxpbmVhci1ncmFkaWVudChoc2xhKDAsMCUsMTAwJSwuMDUpLCBoc2xhKDAsMCUsMTAwJSwwKSk7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQoaHNsYSgwLDAlLDEwMCUsLjA1KSwgaHNsYSgwLDAlLDEwMCUsMCkpOwogICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDsKICAgIGJvcmRlcjogMXB4IHNvbGlkIGhzbGEoMCwwJSwwJSwuMzUpOwogICAgYm9yZGVyLWNvbG9yOiBoc2xhKDAsMCUsMCUsLjMyKSBoc2xhKDAsMCUsMCUsLjM4KSBoc2xhKDAsMCUsMCUsLjQyKTsKICAgIGJveC1zaGFkb3c6IDAgMXB4IDAgaHNsYSgwLDAlLDEwMCUsLjA1KSBpbnNldCwKICAgICAgICAgICAgICAgIDAgMCAxcHggaHNsYSgwLDAlLDEwMCUsLjE1KSBpbnNldCwKICAgICAgICAgICAgICAgIDAgMXB4IDAgaHNsYSgwLDAlLDEwMCUsLjA1KTsKfQoKLnRvb2xiYXJCdXR0b246aG92ZXI6YWN0aXZlLAouZHJvcGRvd25Ub29sYmFyQnV0dG9uOmhvdmVyOmFjdGl2ZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2xhKDAsMCUsMCUsLjIpOwogICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KGhzbGEoMCwwJSwxMDAlLC4wNSksIGhzbGEoMCwwJSwxMDAlLDApKTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KGhzbGEoMCwwJSwxMDAlLC4wNSksIGhzbGEoMCwwJSwxMDAlLDApKTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KGhzbGEoMCwwJSwxMDAlLC4wNSksIGhzbGEoMCwwJSwxMDAlLDApKTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC1tcy1saW5lYXItZ3JhZGllbnQoaHNsYSgwLDAlLDEwMCUsLjA1KSwgaHNsYSgwLDAlLDEwMCUsMCkpOwogICAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KGhzbGEoMCwwJSwxMDAlLC4wNSksIGhzbGEoMCwwJSwxMDAlLDApKTsKICAgIGJvcmRlci1jb2xvcjogaHNsYSgwLDAlLDAlLC4zNSkgaHNsYSgwLDAlLDAlLC40KSBoc2xhKDAsMCUsMCUsLjQ1KTsKICAgIGJveC1zaGFkb3c6IDAgMXB4IDFweCBoc2xhKDAsMCUsMCUsLjEpIGluc2V0LAogICAgICAgICAgICAgICAgMCAwIDFweCBoc2xhKDAsMCUsMCUsLjIpIGluc2V0LAogICAgICAgICAgICAgICAgMCAxcHggMCBoc2xhKDAsMCUsMTAwJSwuMDUpOwp9Cgouc3BsaXRUb29sYmFyQnV0dG9uOmhvdmVyID4gLnRvb2xiYXJCdXR0b24sCi5zcGxpdFRvb2xiYXJCdXR0b246Zm9jdXMgPiAudG9vbGJhckJ1dHRvbiwKLnNwbGl0VG9vbGJhckJ1dHRvbi50b2dnbGVkID4gLnRvb2xiYXJCdXR0b24sCi50b29sYmFyQnV0dG9uLnRleHRCdXR0b24gewogICAgYmFja2dyb3VuZC1jb2xvcjogaHNsYSgwLDAlLDAlLC4xMik7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudChoc2xhKDAsMCUsMTAwJSwuMDUpLCBoc2xhKDAsMCUsMTAwJSwwKSk7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtbW96LWxpbmVhci1ncmFkaWVudChoc2xhKDAsMCUsMTAwJSwuMDUpLCBoc2xhKDAsMCUsMTAwJSwwKSk7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtbXMtbGluZWFyLWdyYWRpZW50KGhzbGEoMCwwJSwxMDAlLC4wNSksIGhzbGEoMCwwJSwxMDAlLDApKTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC1vLWxpbmVhci1ncmFkaWVudChoc2xhKDAsMCUsMTAwJSwuMDUpLCBoc2xhKDAsMCUsMTAwJSwwKSk7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoaHNsYSgwLDAlLDEwMCUsLjA1KSwgaHNsYSgwLDAlLDEwMCUsMCkpOwogICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDsKICAgIGJvcmRlcjogMXB4IHNvbGlkIGhzbGEoMCwwJSwwJSwuMzUpOwogICAgYm9yZGVyLWNvbG9yOiBoc2xhKDAsMCUsMCUsLjMyKSBoc2xhKDAsMCUsMCUsLjM4KSBoc2xhKDAsMCUsMCUsLjQyKTsKICAgIGJveC1zaGFkb3c6IDAgMXB4IDAgaHNsYSgwLDAlLDEwMCUsLjA1KSBpbnNldCwKICAgIDAgMCAxcHggaHNsYSgwLDAlLDEwMCUsLjE1KSBpbnNldCwKICAgIDAgMXB4IDAgaHNsYSgwLDAlLDEwMCUsLjA1KTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbi1wcm9wZXJ0eTogYmFja2dyb3VuZC1jb2xvciwgYm9yZGVyLWNvbG9yLCBib3gtc2hhZG93OwogICAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiAxNTBtczsKICAgIC13ZWJraXQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2U7CiAgICAtbW96LXRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tncm91bmQtY29sb3IsIGJvcmRlci1jb2xvciwgYm94LXNoYWRvdzsKICAgIC1tb3otdHJhbnNpdGlvbi1kdXJhdGlvbjogMTUwbXM7CiAgICAtbW96LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlOwogICAgLW1zLXRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tncm91bmQtY29sb3IsIGJvcmRlci1jb2xvciwgYm94LXNoYWRvdzsKICAgIC1tcy10cmFuc2l0aW9uLWR1cmF0aW9uOiAxNTBtczsKICAgIC1tcy10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZTsKICAgIC1vLXRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tncm91bmQtY29sb3IsIGJvcmRlci1jb2xvciwgYm94LXNoYWRvdzsKICAgIC1vLXRyYW5zaXRpb24tZHVyYXRpb246IDE1MG1zOwogICAgLW8tdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2U7CiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBiYWNrZ3JvdW5kLWNvbG9yLCBib3JkZXItY29sb3IsIGJveC1zaGFkb3c7CiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAxNTBtczsKICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlOwoKfQouc3BsaXRUb29sYmFyQnV0dG9uID4gLnRvb2xiYXJCdXR0b246aG92ZXIsCi5zcGxpdFRvb2xiYXJCdXR0b24gPiAudG9vbGJhckJ1dHRvbjpmb2N1cywKLmRyb3Bkb3duVG9vbGJhckJ1dHRvbjpob3ZlciwKLnRvb2xiYXJCdXR0b24udGV4dEJ1dHRvbjpob3ZlciwKLnRvb2xiYXJCdXR0b24udGV4dEJ1dHRvbjpmb2N1cyB7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IGhzbGEoMCwwJSwwJSwuMik7CiAgICAgICAgYm94LXNoYWRvdzogMCAxcHggMCBoc2xhKDAsMCUsMTAwJSwuMDUpIGluc2V0LAogICAgICAgICAgICAgICAgICAgIDAgMCAxcHggaHNsYSgwLDAlLDEwMCUsLjE1KSBpbnNldCwKICAgICAgICAgICAgICAgICAgICAwIDAgMXB4IGhzbGEoMCwwJSwwJSwuMDUpOwogICAgICAgICAgICAgICAgICAgIHotaW5kZXg6IDE5OTsKfQoKCi5zcGxpdFRvb2xiYXJCdXR0b246aG92ZXIgPiAudG9vbGJhckJ1dHRvbiwKLnNwbGl0VG9vbGJhckJ1dHRvbjpmb2N1cyA+IC50b29sYmFyQnV0dG9uLAouc3BsaXRUb29sYmFyQnV0dG9uLnRvZ2dsZWQgPiAudG9vbGJhckJ1dHRvbiwKLnRvb2xiYXJCdXR0b24udGV4dEJ1dHRvbiB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2xhKDAsMCUsMCUsLjEyKTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KGhzbGEoMCwwJSwxMDAlLC4wNSksIGhzbGEoMCwwJSwxMDAlLDApKTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KGhzbGEoMCwwJSwxMDAlLC4wNSksIGhzbGEoMCwwJSwxMDAlLDApKTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IC1tcy1saW5lYXItZ3JhZGllbnQoaHNsYSgwLDAlLDEwMCUsLjA1KSwgaHNsYSgwLDAlLDEwMCUsMCkpOwogICAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KGhzbGEoMCwwJSwxMDAlLC4wNSksIGhzbGEoMCwwJSwxMDAlLDApKTsKICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChoc2xhKDAsMCUsMTAwJSwuMDUpLCBoc2xhKDAsMCUsMTAwJSwwKSk7CiAgICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94OwogICAgYm9yZGVyOiAxcHggc29saWQgaHNsYSgwLDAlLDAlLC4zNSk7CiAgICBib3JkZXItY29sb3I6IGhzbGEoMCwwJSwwJSwuMzIpIGhzbGEoMCwwJSwwJSwuMzgpIGhzbGEoMCwwJSwwJSwuNDIpOwogICAgYm94LXNoYWRvdzogMCAxcHggMCBoc2xhKDAsMCUsMTAwJSwuMDUpIGluc2V0LAogICAgMCAwIDFweCBoc2xhKDAsMCUsMTAwJSwuMTUpIGluc2V0LAogICAgMCAxcHggMCBoc2xhKDAsMCUsMTAwJSwuMDUpOwogICAgLXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5OiBiYWNrZ3JvdW5kLWNvbG9yLCBib3JkZXItY29sb3IsIGJveC1zaGFkb3c7CiAgICAtd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246IDE1MG1zOwogICAgLXdlYmtpdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZTsKICAgIC1tb3otdHJhbnNpdGlvbi1wcm9wZXJ0eTogYmFja2dyb3VuZC1jb2xvciwgYm9yZGVyLWNvbG9yLCBib3gtc2hhZG93OwogICAgLW1vei10cmFuc2l0aW9uLWR1cmF0aW9uOiAxNTBtczsKICAgIC1tb3otdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2U7CiAgICAtbXMtdHJhbnNpdGlvbi1wcm9wZXJ0eTogYmFja2dyb3VuZC1jb2xvciwgYm9yZGVyLWNvbG9yLCBib3gtc2hhZG93OwogICAgLW1zLXRyYW5zaXRpb24tZHVyYXRpb246IDE1MG1zOwogICAgLW1zLXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlOwogICAgLW8tdHJhbnNpdGlvbi1wcm9wZXJ0eTogYmFja2dyb3VuZC1jb2xvciwgYm9yZGVyLWNvbG9yLCBib3gtc2hhZG93OwogICAgLW8tdHJhbnNpdGlvbi1kdXJhdGlvbjogMTUwbXM7CiAgICAtby10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZTsKICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tncm91bmQtY29sb3IsIGJvcmRlci1jb2xvciwgYm94LXNoYWRvdzsKICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDE1MG1zOwogICAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2U7Cgp9Ci5zcGxpdFRvb2xiYXJCdXR0b24gPiAudG9vbGJhckJ1dHRvbjpob3ZlciwKLnNwbGl0VG9vbGJhckJ1dHRvbiA+IC50b29sYmFyQnV0dG9uOmZvY3VzLAouZHJvcGRvd25Ub29sYmFyQnV0dG9uOmhvdmVyLAoudG9vbGJhckJ1dHRvbi50ZXh0QnV0dG9uOmhvdmVyLAoudG9vbGJhckJ1dHRvbi50ZXh0QnV0dG9uOmZvY3VzIHsKICAgIGJhY2tncm91bmQtY29sb3I6IGhzbGEoMCwwJSwwJSwuMik7CiAgICBib3gtc2hhZG93OiAwIDFweCAwIGhzbGEoMCwwJSwxMDAlLC4wNSkgaW5zZXQsCiAgICAgICAgICAgICAgICAwIDAgMXB4IGhzbGEoMCwwJSwxMDAlLC4xNSkgaW5zZXQsCiAgICAgICAgICAgICAgICAgMCAwIDFweCBoc2xhKDAsMCUsMCUsLjA1KTsKICAgIHotaW5kZXg6IDE5OTsKfQoKLmRyb3Bkb3duVG9vbGJhckJ1dHRvbiB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjMzMzICFpbXBvcnRhbnQ7Cn0KCi50b29sYmFyQnV0dG9uLAouZHJvcGRvd25Ub29sYmFyQnV0dG9uIHsKICAgICAgbWluLXdpZHRoOiAxNnB4OwogICAgICAgIHBhZGRpbmc6IDJweCA2cHggMnB4OwogICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsKICAgICAgICAgICAgICBjb2xvcjogaHNsKDAsMCUsOTUlKTsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDE0cHg7CiAgICAgICAgICAgICAgICAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDpub25lOwogICAgICAgICAgICAgICAgICAgICAgLW1vei11c2VyLXNlbGVjdDpub25lOwogICAgICAgICAgICAgICAgICAgICAgICAtbXMtdXNlci1zZWxlY3Q6bm9uZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBPcGVyYSBkb2VzIG5vdCBzdXBwb3J0IHVzZXItc2VsZWN0LCB1c2UgPC4uLiB1bnNlbGVjdGFibGU9Im9uIj4gaW5zdGVhZCAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiBkZWZhdWx0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtd2Via2l0LXRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tncm91bmQtY29sb3IsIGJvcmRlci1jb2xvciwgYm94LXNoYWRvdzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246IDE1MG1zOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLW1vei10cmFuc2l0aW9uLXByb3BlcnR5OiBiYWNrZ3JvdW5kLWNvbG9yLCBib3JkZXItY29sb3IsIGJveC1zaGFkb3c7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLW1vei10cmFuc2l0aW9uLWR1cmF0aW9uOiAxNTBtczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1tb3otdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1tcy10cmFuc2l0aW9uLXByb3BlcnR5OiBiYWNrZ3JvdW5kLWNvbG9yLCBib3JkZXItY29sb3IsIGJveC1zaGFkb3c7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLW1zLXRyYW5zaXRpb24tZHVyYXRpb246IDE1MG1zOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLW1zLXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtby10cmFuc2l0aW9uLXByb3BlcnR5OiBiYWNrZ3JvdW5kLWNvbG9yLCBib3JkZXItY29sb3IsIGJveC1zaGFkb3c7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLW8tdHJhbnNpdGlvbi1kdXJhdGlvbjogMTUwbXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtby10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogYmFja2dyb3VuZC1jb2xvciwgYm9yZGVyLWNvbG9yLCBib3gtc2hhZG93OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDE1MG1zOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2U7Cn0KCmh0bWxbZGlyPSdsdHInXSAudG9vbGJhckJ1dHRvbiwKaHRtbFtkaXI9J2x0ciddIC5kcm9wZG93blRvb2xiYXJCdXR0b24gewogICAgICBtYXJnaW46IDNweCAycHggNHB4IDA7Cn0KaHRtbFtkaXI9J3J0bCddIC50b29sYmFyQnV0dG9uLApodG1sW2Rpcj0ncnRsJ10gLmRyb3Bkb3duVG9vbGJhckJ1dHRvbiB7CiAgICAgIG1hcmdpbjogM3B4IDAgNHB4IDJweDsKfQoKLnNwbGl0VG9vbGJhckJ1dHRvbjpob3ZlciA+IC5zcGxpdFRvb2xiYXJCdXR0b25TZXBhcmF0b3IsCi5zcGxpdFRvb2xiYXJCdXR0b24udG9nZ2xlZCA+IC5zcGxpdFRvb2xiYXJCdXR0b25TZXBhcmF0b3IgewogICAgICBwYWRkaW5nOiAxMnB4IDA7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMXB4IGhzbGEoMCwwJSwxMDAlLC4wMyk7CiAgICAgICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbi1wcm9wZXJ0eTogcGFkZGluZzsKICAgICAgICAgICAgICAtd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246IDEwbXM7CiAgICAgICAgICAgICAgICAtd2Via2l0LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlOwogICAgICAgICAgICAgICAgICAtbW96LXRyYW5zaXRpb24tcHJvcGVydHk6IHBhZGRpbmc7CiAgICAgICAgICAgICAgICAgICAgLW1vei10cmFuc2l0aW9uLWR1cmF0aW9uOiAxMG1zOwogICAgICAgICAgICAgICAgICAgICAgLW1vei10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZTsKICAgICAgICAgICAgICAgICAgICAgICAgLW1zLXRyYW5zaXRpb24tcHJvcGVydHk6IHBhZGRpbmc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgLW1zLXRyYW5zaXRpb24tZHVyYXRpb246IDEwbXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtbXMtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1vLXRyYW5zaXRpb24tcHJvcGVydHk6IHBhZGRpbmc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLW8tdHJhbnNpdGlvbi1kdXJhdGlvbjogMTBtczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1vLXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBwYWRkaW5nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDEwbXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZTsKfQoKLnRvb2xiYXJCdXR0b24udG9nZ2xlZDpob3ZlcjphY3RpdmUsCi5zcGxpdFRvb2xiYXJCdXR0b24gPiAudG9vbGJhckJ1dHRvbjpob3ZlcjphY3RpdmUgewogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2xhKDAsMCUsMCUsLjQpOwogICAgICAgIGJvcmRlci1jb2xvcjogaHNsYSgwLDAlLDAlLC40KSBoc2xhKDAsMCUsMCUsLjUpIGhzbGEoMCwwJSwwJSwuNTUpOwogICAgICAgICAgYm94LXNoYWRvdzogMCAxcHggMXB4IGhzbGEoMCwwJSwwJSwuMikgaW5zZXQsCiAgICAgICAgICAgICAgICAgICAgICAgIDAgMCAxcHggaHNsYSgwLDAlLDAlLC4zKSBpbnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwIDFweCAwIGhzbGEoMCwwJSwxMDAlLC4wNSk7Cn0KCmh0bWxbZGlyPSdsdHInXSAuc3BsaXRUb29sYmFyQnV0dG9uID4gLnRvb2xiYXJCdXR0b246Zmlyc3QtY2hpbGQsCmh0bWxbZGlyPSdydGwnXSAuc3BsaXRUb29sYmFyQnV0dG9uID4gLnRvb2xiYXJCdXR0b246bGFzdC1jaGlsZCB7CiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDRweDsKICAgICAgICAgIG1hcmdpbi1yaWdodDogLTFweDsKICAgICAgICAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMnB4OwogICAgICAgICAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDJweDsKICAgICAgICAgICAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KaHRtbFtkaXI9J2x0ciddIC5zcGxpdFRvb2xiYXJCdXR0b24gPiAudG9vbGJhckJ1dHRvbjpsYXN0LWNoaWxkLApodG1sW2Rpcj0ncnRsJ10gLnNwbGl0VG9vbGJhckJ1dHRvbiA+IC50b29sYmFyQnV0dG9uOmZpcnN0LWNoaWxkIHsKICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIG1hcmdpbjogMDsKICAgICAgICAgIG1hcmdpbi1sZWZ0OiAtMXB4OwogICAgICAgICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMnB4OwogICAgICAgICAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAycHg7CiAgICAgICAgICAgICAgICBib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KLnNwbGl0VG9vbGJhckJ1dHRvblNlcGFyYXRvciB7CiAgICAgIHBhZGRpbmc6IDhweCAwOwogICAgICAgIHdpZHRoOiAxcHg7CiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2xhKDAsMCUsMDAlLC41KTsKICAgICAgICAgICAgei1pbmRleDogOTk7CiAgICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMXB4IGhzbGEoMCwwJSwxMDAlLC4wOCk7CiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgICAgICAgICAgIG1hcmdpbjogNXB4IDA7Cn0KaHRtbFtkaXI9J2x0ciddIC5zcGxpdFRvb2xiYXJCdXR0b25TZXBhcmF0b3IgewogICAgICBmbG9hdDpsZWZ0Owp9Cmh0bWxbZGlyPSdydGwnXSAuc3BsaXRUb29sYmFyQnV0dG9uU2VwYXJhdG9yIHsKICAgICAgZmxvYXQ6cmlnaHQ7Cn0KCi5kcm9wZG93blRvb2xiYXJCdXR0b24gewogICAgICBtaW4td2lkdGg6IDEyMHB4OwogICAgICAgIG1heC13aWR0aDogMTIwcHg7CiAgICAgICAgICBwYWRkaW5nOiA0cHggMnB4IDRweDsKICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzL3Rvb2xiYXJCdXR0b24tbWVudUFycm93cy5wbmcpIG5vLXJlcGVhdDsKfQoKLmRyb3Bkb3duVG9vbGJhckJ1dHRvbiA+IHNlbGVjdCB7CiAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKICAgICAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7IC8qIGluIHRoZSBmdXR1cmUgdGhpcyBtaWdodCBtYXR0ZXIsIHNlZSBidWd6aWxsYSBidWcgIzY0OTg0OSAqLwogICAgICAgICAgbWluLXdpZHRoOiAxNDBweDsKICAgICAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgICAgICAgIGNvbG9yOiBoc2woMCwwJSw5NSUpOwogICAgICAgICAgICAgICAgbWFyZ2luOjA7CiAgICAgICAgICAgICAgICAgIHBhZGRpbmc6MDsKICAgICAgICAgICAgICAgICAgICBib3JkZXI6bm9uZTsKICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsMCk7IC8qIE9wZXJhIGRvZXMgbm90IHN1cHBvcnQgJ3RyYW5zcGFyZW50JyA8c2VsZWN0PiBiYWNrZ3JvdW5kICovCn0KCi5kcm9wZG93blRvb2xiYXJCdXR0b24gPiBzZWxlY3QgPiBvcHRpb24gewogICAgICBiYWNrZ3JvdW5kOiBoc2woMCwwJSwyNCUpOwp9CgojcGFnZVdpZHRoT3B0aW9uIHsKICBib3JkZXItYm90dG9tOiAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAuNSkgc29saWQ7Cn0KCgpodG1sW2Rpcj0nbHRyJ10gLmRyb3Bkb3duVG9vbGJhckJ1dHRvbiB7CiAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDk1JTsKfQpodG1sW2Rpcj0ncnRsJ10gLmRyb3Bkb3duVG9vbGJhckJ1dHRvbiB7CiAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDUlOwp9CgoKLnRvb2xiYXJCdXR0b24uZnVsbHNjcmVlbjo6YmVmb3JlIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGNvbnRlbnQ6IHVybChpbWFnZXMvdG9vbGJhckJ1dHRvbi1mdWxsc2NyZWVuLnBuZyk7Cn0KCi50b29sYmFyQnV0dG9uLnByZXNlbnRhdGlvbjo6YmVmb3JlIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGNvbnRlbnQ6IHVybChpbWFnZXMvdG9vbGJhckJ1dHRvbi1wcmVzZW50YXRpb24ucG5nKTsKfQoKLnRvb2xiYXJCdXR0b24uZG93bmxvYWQ6OmJlZm9yZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBjb250ZW50OiB1cmwoaW1hZ2VzL3Rvb2xiYXJCdXR0b24tZG93bmxvYWQucG5nKTsKfQoKLnRvb2xiYXJCdXR0b24uYWJvdXQgewogICAgY29sb3I6ICNGMkYyRjI7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBmb250LXdlaWdodDogYm9sZDsKICAgIGxpbmUtaGVpZ2h0OiAxNHB4OwogICAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7Cn0KLnRvb2xiYXJCdXR0b24uYWJvdXQ6OmJlZm9yZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cn0KCi50b29sYmFyQnV0dG9uLnpvb21PdXQ6OmJlZm9yZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBjb250ZW50OiB1cmwoaW1hZ2VzL3Rvb2xiYXJCdXR0b24tem9vbU91dC5wbmcpOwp9CiAgICAKLnRvb2xiYXJCdXR0b24uem9vbUluOjpiZWZvcmUgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgY29udGVudDogdXJsKGltYWdlcy90b29sYmFyQnV0dG9uLXpvb21Jbi5wbmcpOwp9CgoudG9vbGJhckJ1dHRvbi5wYWdlVXA6OmJlZm9yZSB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGNvbnRlbnQ6IHVybChpbWFnZXMvdG9vbGJhckJ1dHRvbi1wYWdlVXAucG5nKTsKfQoKLnRvb2xiYXJCdXR0b24ucGFnZURvd246OmJlZm9yZSB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGNvbnRlbnQ6IHVybChpbWFnZXMvdG9vbGJhckJ1dHRvbi1wYWdlRG93bi5wbmcpOwp9CgoudG9vbGJhckZpZWxkLnBhZ2VOdW1iZXIgewogIG1pbi13aWR0aDogMTZweDsKICB0ZXh0LWFsaWduOiByaWdodDsKICB3aWR0aDogNDBweDsKfQoKLnRvb2xiYXJGaWVsZCB7CiAgcGFkZGluZzogM3B4IDZweDsKICBtYXJnaW46IDRweCAwIDRweCAwOwogIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogIGJvcmRlci1yYWRpdXM6IDJweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2xhKDAsMCUsMTAwJSwuMDkpOwogIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KGhzbGEoMCwwJSwxMDAlLC4wNSksIGhzbGEoMCwwJSwxMDAlLDApKTsKICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94OwogIGJvcmRlcjogMXB4IHNvbGlkIGhzbGEoMCwwJSwwJSwuMzUpOwogIGJvcmRlci1jb2xvcjogaHNsYSgwLDAlLDAlLC4zMikgaHNsYSgwLDAlLDAlLC4zOCkgaHNsYSgwLDAlLDAlLC40Mik7CiAgYm94LXNoYWRvdzogMCAxcHggMCBoc2xhKDAsMCUsMCUsLjA1KSBpbnNldCwKICAgICAgICAgICAgICAwIDFweCAwIGhzbGEoMCwwJSwxMDAlLC4wNSk7CiAgY29sb3I6IGhzbCgwLDAlLDk1JSk7CiAgZm9udC1zaXplOiAxMnB4OwogIGxpbmUtaGVpZ2h0OiAxNHB4OwogIG91dGxpbmUtc3R5bGU6IG5vbmU7CiAgLW1vei10cmFuc2l0aW9uLXByb3BlcnR5OiBiYWNrZ3JvdW5kLWNvbG9yLCBib3JkZXItY29sb3IsIGJveC1zaGFkb3c7CiAgLW1vei10cmFuc2l0aW9uLWR1cmF0aW9uOiAxNTBtczsKICAtbW96LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlOwp9CgoudG9vbGJhckZpZWxkLnBhZ2VOdW1iZXI6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sCi50b29sYmFyRmllbGQucGFnZU51bWJlcjo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7CiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CiAgICBtYXJnaW46IDA7Cn0KCi50b29sYmFyRmllbGQ6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6IGhzbGEoMCwwJSwxMDAlLC4xMSk7CiAgYm9yZGVyLWNvbG9yOiBoc2xhKDAsMCUsMCUsLjQpIGhzbGEoMCwwJSwwJSwuNDMpIGhzbGEoMCwwJSwwJSwuNDUpOwp9CgoudG9vbGJhckZpZWxkOmZvY3VzIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2xhKDAsMCUsMTAwJSwuMTUpOwogIGJvcmRlci1jb2xvcjogaHNsYSgyMDQsMTAwJSw2NSUsLjgpIGhzbGEoMjA0LDEwMCUsNjUlLC44NSkgaHNsYSgyMDQsMTAwJSw2NSUsLjkpOwp9CgoudG9vbGJhckxhYmVsIHsKICBtaW4td2lkdGg6IDE2cHg7CiAgcGFkZGluZzogM3B4IDZweCAzcHggMnB4OwogIG1hcmdpbjogNHB4IDJweCA0cHggMDsKICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItcmFkaXVzOiAycHg7CiAgY29sb3I6IGhzbCgwLDAlLDg1JSk7CiAgZm9udC1zaXplOiAxMnB4OwogIGxpbmUtaGVpZ2h0OiAxNHB4OwogIHRleHQtYWxpZ246IGxlZnQ7CiAgLXdlYmtpdC11c2VyLXNlbGVjdDpub25lOwogIC1tb3otdXNlci1zZWxlY3Q6bm9uZTsKICBjdXJzb3I6IGRlZmF1bHQ7Cn0KCiNjYW52YXNDb250YWluZXIgewogICAgb3ZlcmZsb3c6IGF1dG87CgogICAgcGFkZGluZy10b3A6IDZweDsKICAgIHBhZGRpbmctYm90dG9tOiA2cHg7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDMycHg7CiAgICByaWdodDogMDsKICAgIGJvdHRvbTogMzJweDsKICAgIGxlZnQ6IDA7CgogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjODg4OwogICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKGltYWdlcy90ZXh0dXJlLnBuZyk7Cn0KCiNjYW52YXNDb250YWluZXIuc2xpZGVzaG93IHsKICAgIHBhZGRpbmc6IDA7CiAgICBvdmVyZmxvdzogaGlkZGVuOwp9CgojY2FudmFzQ29udGFpbmVyLnNsaWRlc2hvdyA+ICogewogICAgbWFyZ2luOiBhdXRvOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwOwogICAgbGVmdDogMDsKICAgIHJpZ2h0OiAwOwogICAgYm90dG9tOiAwOwp9CgoucHJlc2VudGF0aW9uTW9kZSB7CiAgICB0b3A6IDAgIWltcG9ydGFudDsKICAgIGJvdHRvbTogMCAhaW1wb3J0YW50OwogICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2sgIWltcG9ydGFudDsKICAgIGN1cnNvcjogZGVmYXVsdCAhaW1wb3J0YW50Owp9CgojY2FudmFzIHsKICAgIGJveC1zaGFkb3c6ICAgICAgICAgMHB4IDBweCA3cHggcmdiYSgwLCAwLCAwLCAwLjc1KTsKICAgIC13ZWJraXQtYm94LXNoYWRvdzogMHB4IDBweCA3cHggcmdiYSgwLCAwLCAwLCAwLjc1KTsKICAgIC1tb3otYm94LXNoYWRvdzogICAgMHB4IDBweCA3cHggcmdiYSgwLCAwLCAwLCAwLjc1KTsKICAgIC1tcy1ib3gtc2hhZG93OiAgICAwcHggMHB4IDdweCByZ2JhKDAsIDAsIDAsIDAuNzUpOwogICAgLW8tYm94LXNoYWRvdzogICAgMHB4IDBweCA3cHggcmdiYSgwLCAwLCAwLCAwLjc1KTsKCiAgICAvKgogICAgICogSGlkZSB0aGUgY2FudmFzIG92ZXJmbG93IGJlY2F1c2Ugb3RoZXJ3aXNlIHRoZSBDU1Mtc2NhbGVkICdzaXplcicgY2hpbGQKICAgICAqIG9mIHRoZSBjYW52YXMgd2lsbCBzdGlsbCBhZHZlcnRpc2UgdGhlIG9yaWdpbmFsIHNpemUgaW4gRmlyZWZveCwgY2F1c2luZwogICAgICogc3RyYW5nZSBzY3JvbGxiYXIgYmVoYXZpb3IuCiAgICAgKi8KICAgIG92ZXJmbG93OiBoaWRkZW47Cn0KCiNzbGlkZXJDb250YWluZXIgewogICAgdmlzaWJpbGl0eTogaGlkZGVuOwp9Cgojb3ZlcmxheU5hdmlnYXRvciB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMDsKICAgIHRvcDogY2FsYyg1MCUgLSA1MHB4KTsKICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMCk7CiAgICB6LWluZGV4OiAzOwogICAgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAxcyBlYXNlLW91dDsKICAgIC1tb3otdHJhbnNpdGlvbjogb3BhY2l0eSAxcyBlYXNlLW91dDsKICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMXMgZWFzZS1vdXQ7Cn0KI3ByZXZpb3VzUGFnZSB7CiAgICBmbG9hdDogbGVmdDsKICAgIG1hcmdpbi1sZWZ0OiAxMHB4OwogCiAgICAvKiBDU1MgdHJpYW5nbGUgKi8KICAgIGJvcmRlci10b3A6IDUwcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICBib3JkZXItYm90dG9tOiA1MHB4IHNvbGlkIHRyYW5zcGFyZW50OyAKICAgIGJvcmRlci1yaWdodDogNTBweCBzb2xpZCBibGFjazsKCiAgICBvcGFjaXR5OiAwLjU7Cn0KI25leHRQYWdlIHsKICAgIGZsb2F0OiByaWdodDsKICAgIG1hcmdpbi1yaWdodDogMTBweDsKIAogICAgLyogQ1NTIHRyaWFuZ2xlICovCiAgICBib3JkZXItdG9wOiA1MHB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgYm9yZGVyLWJvdHRvbTogNTBweCBzb2xpZCB0cmFuc3BhcmVudDsgCiAgICBib3JkZXItbGVmdDogNTBweCBzb2xpZCBibGFjazsKCiAgICBvcGFjaXR5OiAwLjU7Cn0KI3ByZXZpb3VzUGFnZTphY3RpdmUgewogICAgb3BhY2l0eTogMC44Owp9CiNuZXh0UGFnZTphY3RpdmUgewogICAgb3BhY2l0eTogMC44Owp9CiNvdmVybGF5Q2xvc2VCdXR0b24gewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAxMHB4OwogICAgcmlnaHQ6IDEwcHg7CiAgICB6LWluZGV4OiAzOwogICAgZm9udC1zaXplOiAzNXB4OwogICAgY29sb3I6IHdoaXRlOwogICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7CiAgICBvcGFjaXR5OiAwLjU7CgogICAgd2lkdGg6IDQwcHg7CiAgICBoZWlnaHQ6IDQwcHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDIwcHg7CiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDIwcHg7CiAgICBib3JkZXItcmFkaXVzOiAyMHB4OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgZGlzcGxheTogbm9uZTsKfQojb3ZlcmxheUNsb3NlQnV0dG9uOmFjdGl2ZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7Cn0KCiNhYm91dERpYWxvZ0NlbnRlcmVyVGFibGUgewogICAgZGlzcGxheTogdGFibGU7CiAgICB3aWR0aDoxMDAlOwogICAgaGVpZ2h0OjEwMCU7Cn0KCiNhYm91dERpYWxvZ0NlbnRlcmVyQ2VsbCB7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgdGV4dC1hbGlnbjpjZW50ZXI7CiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsOwp9CgojYWJvdXREaWFsb2cgewogICAgd2lkdGg6IDI4MHB4OwogICAgYmFja2dyb3VuZC1jb2xvcjogIzY2NjsKICAgIGNvbG9yOiB3aGl0ZTsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGJvcmRlci1yYWRpdXM6IDJweDsKICAgIGJveC1zaGFkb3c6IDBweCAxcHggNnB4IGJsYWNrOwogICAgcGFkZGluZzogNXB4OwogICAgZm9udC1zdHlsZTogc2Fucy1zZXJpZjsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQoKI2Fib3V0RGlhbG9nIGgxIHsKICAgIGZvbnQtc2l6ZTogMjVwdDsKfQoKI2Fib3V0RGlhbG9nIHAgewogICAgZm9udC1zaXplOiAxMHB0Owp9CgojYWJvdXREaWFsb2cgPiAqIHsKICAgIG1hcmdpbjogMTBweDsKfQoKI2RpYWxvZ092ZXJsYXkgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgbGVmdDogMHB4OwogICAgdG9wOiAwcHg7CiAgICB3aWR0aDoxMDAlOwogICAgaGVpZ2h0OjEwMCU7CiAgICB6LWluZGV4OiAzOwogICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLDAsMCwuNSk7CiAgICBvdmVyZmxvdzogYXV0bzsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCiNibGFua2VkIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgICBjdXJzb3I6IG5vbmU7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBsZWZ0OiAwcHg7CiAgICB0b3A6IDBweDsKICAgIHdpZHRoOjEwMCU7CiAgICBoZWlnaHQ6MTAwJTsKICAgIHotaW5kZXg6IDM7Cn0KCkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC1kZXZpY2Utd2lkdGg6IDgwMHB4KSBhbmQgKG1heC1kZXZpY2UtaGVpZ2h0OiA4MDBweCkgewogICAgI2NhbnZhc0NvbnRhaW5lciB7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgIH0KCiAgICAjb3ZlcmxheU5hdmlnYXRvciB7CiAgICAgICAgaGVpZ2h0OiAxMDBweDsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgIH0KICAgICNuZXh0UGFnZSwgI3ByZXZpb3VzUGFnZSB7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IGFsbDsKICAgIH0KCiAgICAjdGl0bGViYXIsICN0b29sYmFyQ29udGFpbmVyIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNik7CiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKICAgICAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjVzOwogICAgICAgIC1tb3otdHJhbnNpdGlvbjogYWxsIDAuNXM7CiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuNXM7CiAgICB9CgogICAgI3RpdGxlYmFyIHsKICAgICAgICB0b3A6IC0zMnB4OwogICAgfQogICAgI3RpdGxlYmFyLnZpZXdlci10b3VjaGVkIHsKICAgICAgICB0b3A6IDBweDsKICAgIH0KICAgICN0b29sYmFyQ29udGFpbmVyIHsKICAgICAgICBib3R0b206IC0zMnB4OwogICAgfQogICAgI3Rvb2xiYXJDb250YWluZXIudmlld2VyLXRvdWNoZWQgewogICAgICAgIGJvdHRvbTogMHB4OwogICAgfQoKICAgIC52aWV3ZXItdG91Y2hlZCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgb3BhY2l0eTogMSAhaW1wb3J0YW50OwogICAgfQoKICAgICNuZXh0LCAjcHJldmlvdXMgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/ViewerJS/viewer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZnVuY3Rpb24gVmlld2VyKGMscil7ZnVuY3Rpb24gUCgpe3ZhciBhLGYsYixkLGg7YyYmKGI9Yy5nZXRQbHVnaW5OYW1lKCksZD1jLmdldFBsdWdpblZlcnNpb24oKSxoPWMuZ2V0UGx1Z2luVVJMKCkpO2E9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7YS5pZD0iYWJvdXREaWFsb2dDZW50ZXJlclRhYmxlIjtmPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2YuaWQ9ImFib3V0RGlhbG9nQ2VudGVyZXJDZWxsIjtzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3MuaWQ9ImFib3V0RGlhbG9nIjtzLmlubmVySFRNTD0nPGgxPlZpZXdlckpTPC9oMT48cD5PcGVuIFNvdXJjZSBkb2N1bWVudCB2aWV3ZXIgZm9yIHdlYnBhZ2VzLCBidWlsdCB3aXRoIEhUTUwgYW5kIEphdmFTY3JpcHQuPC9wPjxwPkxlYXJuIG1vcmUgYW5kIGdldCB5b3VyIG93biBjb3B5IG9uIHRoZSA8YSBocmVmPSJodHRwOi8vdmlld2VyanMub3JnLyIgdGFyZ2V0PSJfYmxhbmsiPlZpZXdlckpTIHdlYnNpdGU8L2E+LjwvcD4nKwooYz8nPHA+VXNpbmcgdGhlIDxhIGhyZWYgPSAiJytoKyciIHRhcmdldD0iX2JsYW5rIj4nK2IrJzwvYT4gKDxzcGFuIGlkID0gInBsdWdpblZlcnNpb24iPicrZCsiPC9zcGFuPikgcGx1Z2luIHRvIHNob3cgeW91IHRoaXMgZG9jdW1lbnQuPC9wPiI6IiIpKyc8cD5TdXBwb3J0ZWQgYnkgPGEgaHJlZj0iaHR0cDovL25sbmV0Lm5sIiB0YXJnZXQ9Il9ibGFuayI+PGJyPjxpbWcgc3JjPSJpbWFnZXMvbmxuZXQucG5nIiB3aWR0aD0iMTYwIiBoZWlnaHQ9IjYwIiBhbHQ9Ik5MbmV0IEZvdW5kYXRpb24iPjwvYT48L3A+PHA+TWFkZSBieSA8YSBocmVmPSJodHRwOi8va29nbWJoLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPjxicj48aW1nIHNyYz0iaW1hZ2VzL2tvZ21iaC5wbmciIHdpZHRoPSIxNzIiIGhlaWdodD0iNDAiIGFsdD0iS08gR21iSCI+PC9hPjwvcD48YnV0dG9uIGlkID0gImFib3V0RGlhbG9nQ2xvc2VCdXR0b24iIGNsYXNzID0gInRvb2xiYXJCdXR0b24gdGV4dEJ1dHRvbiI+Q2xvc2U8L2J1dHRvbj4nOwp3LmFwcGVuZENoaWxkKGEpO2EuYXBwZW5kQ2hpbGQoZik7Zi5hcHBlbmRDaGlsZChzKTthPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIpO2EuaWQ9ImFib3V0IjthLmNsYXNzTmFtZT0idG9vbGJhckJ1dHRvbiB0ZXh0QnV0dG9uIGFib3V0IjthLnRpdGxlPSJBYm91dCI7YS5pbm5lckhUTUw9IlZpZXdlckpTIjtRLmFwcGVuZENoaWxkKGEpO2EuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKCl7dy5zdHlsZS5kaXNwbGF5PSJibG9jayJ9KTtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWJvdXREaWFsb2dDbG9zZUJ1dHRvbiIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbigpe3cuc3R5bGUuZGlzcGxheT0ibm9uZSJ9KX1mdW5jdGlvbiBEKGEpe3ZhciBmPVIub3B0aW9ucyxiLGM9ITEsZDtmb3IoZD0wO2Q8Zi5sZW5ndGg7ZCs9MSliPWZbZF0sYi52YWx1ZSE9PWE/Yi5zZWxlY3RlZD0hMTpjPWIuc2VsZWN0ZWQ9ITA7cmV0dXJuIGN9ZnVuY3Rpb24gRShhLApmLGMpe2EhPT1iLmdldFpvb21MZXZlbCgpJiYoYi5zZXRab29tTGV2ZWwoYSksYz1kb2N1bWVudC5jcmVhdGVFdmVudCgiVUlFdmVudHMiKSxjLmluaXRVSUV2ZW50KCJzY2FsZWNoYW5nZSIsITEsITEsd2luZG93LDApLGMuc2NhbGU9YSxjLnJlc2V0QXV0b1NldHRpbmdzPWYsd2luZG93LmRpc3BhdGNoRXZlbnQoYykpfWZ1bmN0aW9uIEYoKXt2YXIgYTtpZihjLm9uU2Nyb2xsKWMub25TY3JvbGwoKTtjLmdldFBhZ2VJblZpZXcmJihhPWMuZ2V0UGFnZUluVmlldygpKSYmKG09YSxkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGFnZU51bWJlciIpLnZhbHVlPWEpfWZ1bmN0aW9uIEcoYSl7d2luZG93LmNsZWFyVGltZW91dChIKTtIPXdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7RigpfSxhKX1mdW5jdGlvbiBlKGEsYixnKXt2YXIgZSxoO2lmKGU9ImN1c3RvbSI9PT1hP3BhcnNlRmxvYXQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImN1c3RvbVNjYWxlT3B0aW9uIikudGV4dENvbnRlbnQpLwoxMDA6cGFyc2VGbG9hdChhKSlFKGUsITAsZyk7ZWxzZXtlPWQuY2xpZW50V2lkdGgtdDtoPWQuY2xpZW50SGVpZ2h0LXQ7c3dpdGNoKGEpe2Nhc2UgInBhZ2UtYWN0dWFsIjpFKDEsYixnKTticmVhaztjYXNlICJwYWdlLXdpZHRoIjpjLmZpdFRvV2lkdGgoZSk7YnJlYWs7Y2FzZSAicGFnZS1oZWlnaHQiOmMuZml0VG9IZWlnaHQoaCk7YnJlYWs7Y2FzZSAicGFnZS1maXQiOmMuZml0VG9QYWdlKGUsaCk7YnJlYWs7Y2FzZSAiYXV0byI6Yy5pc1NsaWRlc2hvdygpP2MuZml0VG9QYWdlKGUrdCxoK3QpOmMuZml0U21hcnQoZSl9RChhKX1HKDMwMCl9ZnVuY3Rpb24gUyhhKXt2YXIgYjtyZXR1cm4tMSE9PVsiYXV0byIsInBhZ2UtYWN0dWFsIiwicGFnZS13aWR0aCJdLmluZGV4T2YoYSk/YTooYj1wYXJzZUZsb2F0KGEpKSYmSTw9YiYmYjw9Sj9hOlR9ZnVuY3Rpb24gdSgpe249IW47ayYmIW4mJmIudG9nZ2xlUHJlc2VudGF0aW9uTW9kZSgpfWZ1bmN0aW9uIHgoKXt2JiYoeS5jbGFzc05hbWU9CiJ2aWV3ZXItdG91Y2hlZCIsd2luZG93LmNsZWFyVGltZW91dChLKSxLPXdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7eS5jbGFzc05hbWU9IiJ9LDVFMykpfWZ1bmN0aW9uIHooKXtsLmNsYXNzTGlzdC5hZGQoInZpZXdlci10b3VjaGVkIik7cC5jbGFzc0xpc3QuYWRkKCJ2aWV3ZXItdG91Y2hlZCIpO3dpbmRvdy5jbGVhclRpbWVvdXQoTCk7TD13aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe0EoKX0sNUUzKX1mdW5jdGlvbiBBKCl7bC5jbGFzc0xpc3QucmVtb3ZlKCJ2aWV3ZXItdG91Y2hlZCIpO3AuY2xhc3NMaXN0LnJlbW92ZSgidmlld2VyLXRvdWNoZWQiKX1mdW5jdGlvbiBCKCl7bC5jbGFzc0xpc3QuY29udGFpbnMoInZpZXdlci10b3VjaGVkIik/QSgpOnooKX1mdW5jdGlvbiBNKGEpe2JsYW5rZWQuc3R5bGUuZGlzcGxheT0iYmxvY2siO2JsYW5rZWQuc3R5bGUuYmFja2dyb3VuZENvbG9yPWE7QSgpfXZhciBiPXRoaXMsdD00MCxJPTAuMjUsSj00LFQ9ImF1dG8iLAprPSExLG49ITEsTj0hMSx2PSExLEMsZz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlld2VyIiksZD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzQ29udGFpbmVyIikseT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3ZlcmxheU5hdmlnYXRvciIpLGw9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRpdGxlYmFyIikscD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG9vbGJhckNvbnRhaW5lciIpLE89ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRvb2xiYXJMZWZ0IiksVT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG9vbGJhck1pZGRsZUNvbnRhaW5lciIpLFI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNjYWxlU2VsZWN0Iiksdz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGlhbG9nT3ZlcmxheSIpLFE9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRvb2xiYXJSaWdodCIpLHMscT1bXSxtLEgsSyxMO3RoaXMuaW5pdGlhbGl6ZT1mdW5jdGlvbigpe3ZhciBhO2E9ClMoci56b29tKTtDPXIuZG9jdW1lbnRVcmw7ZG9jdW1lbnQudGl0bGU9ci50aXRsZTt2YXIgZj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZG9jdW1lbnROYW1lIik7Zi5pbm5lckhUTUw9IiI7Zi5hcHBlbmRDaGlsZChmLm93bmVyRG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoci50aXRsZSkpO2Mub25Mb2FkPWZ1bmN0aW9uKCl7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBsdWdpblZlcnNpb24iKS5pbm5lckhUTUw9Yy5nZXRQbHVnaW5WZXJzaW9uKCk7KHY9Yy5pc1NsaWRlc2hvdygpKT8oZC5jbGFzc0xpc3QuYWRkKCJzbGlkZXNob3ciKSxPLnN0eWxlLnZpc2liaWxpdHk9InZpc2libGUiKTooVS5zdHlsZS52aXNpYmlsaXR5PSJ2aXNpYmxlIixjLmdldFBhZ2VJblZpZXcmJihPLnN0eWxlLnZpc2liaWxpdHk9InZpc2libGUiKSk7Tj0hMDtxPWMuZ2V0UGFnZXMoKTtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibnVtUGFnZXMiKS5pbm5lckhUTUw9Im9mICIrcS5sZW5ndGg7Yi5zaG93UGFnZSgxKTsKZShhKTtkLm9uc2Nyb2xsPUY7RygpfTtjLmluaXRpYWxpemUoZCxDKX07dGhpcy5zaG93UGFnZT1mdW5jdGlvbihhKXswPj1hP2E9MTphPnEubGVuZ3RoJiYoYT1xLmxlbmd0aCk7Yy5zaG93UGFnZShhKTttPWE7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBhZ2VOdW1iZXIiKS52YWx1ZT1tfTt0aGlzLnNob3dOZXh0UGFnZT1mdW5jdGlvbigpe2Iuc2hvd1BhZ2UobSsxKX07dGhpcy5zaG93UHJldmlvdXNQYWdlPWZ1bmN0aW9uKCl7Yi5zaG93UGFnZShtLTEpfTt0aGlzLmRvd25sb2FkPWZ1bmN0aW9uKCl7dmFyIGE9Qy5zcGxpdCgiIyIpWzBdO3dpbmRvdy5vcGVuKGErIiN2aWV3ZXIuYWN0aW9uPWRvd25sb2FkIiwiX3BhcmVudCIpfTt0aGlzLnRvZ2dsZUZ1bGxTY3JlZW49ZnVuY3Rpb24oKXtuP2RvY3VtZW50LmV4aXRGdWxsc2NyZWVuP2RvY3VtZW50LmV4aXRGdWxsc2NyZWVuKCk6ZG9jdW1lbnQuY2FuY2VsRnVsbFNjcmVlbj9kb2N1bWVudC5jYW5jZWxGdWxsU2NyZWVuKCk6CmRvY3VtZW50Lm1vekNhbmNlbEZ1bGxTY3JlZW4/ZG9jdW1lbnQubW96Q2FuY2VsRnVsbFNjcmVlbigpOmRvY3VtZW50LndlYmtpdEV4aXRGdWxsc2NyZWVuP2RvY3VtZW50LndlYmtpdEV4aXRGdWxsc2NyZWVuKCk6ZG9jdW1lbnQud2Via2l0Q2FuY2VsRnVsbFNjcmVlbj9kb2N1bWVudC53ZWJraXRDYW5jZWxGdWxsU2NyZWVuKCk6ZG9jdW1lbnQubXNFeGl0RnVsbHNjcmVlbiYmZG9jdW1lbnQubXNFeGl0RnVsbHNjcmVlbigpOmcucmVxdWVzdEZ1bGxzY3JlZW4/Zy5yZXF1ZXN0RnVsbHNjcmVlbigpOmcubW96UmVxdWVzdEZ1bGxTY3JlZW4/Zy5tb3pSZXF1ZXN0RnVsbFNjcmVlbigpOmcud2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4/Zy53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpOmcud2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4/Zy53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbihFbGVtZW50LkFMTE9XX0tFWUJPQVJEX0lOUFVUKTpnLm1zUmVxdWVzdEZ1bGxzY3JlZW4mJmcubXNSZXF1ZXN0RnVsbHNjcmVlbigpfTsKdGhpcy50b2dnbGVQcmVzZW50YXRpb25Nb2RlPWZ1bmN0aW9uKCl7dmFyIGE9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm92ZXJsYXlDbG9zZUJ1dHRvbiIpO2s/KCJibG9jayI9PT1ibGFua2VkLnN0eWxlLmRpc3BsYXkmJihibGFua2VkLnN0eWxlLmRpc3BsYXk9Im5vbmUiLEIoKSksbC5zdHlsZS5kaXNwbGF5PXAuc3R5bGUuZGlzcGxheT0iYmxvY2siLGEuc3R5bGUuZGlzcGxheT0ibm9uZSIsZC5jbGFzc0xpc3QucmVtb3ZlKCJwcmVzZW50YXRpb25Nb2RlIiksZC5vbm1vdXNldXA9ZnVuY3Rpb24oKXt9LGQub25jb250ZXh0bWVudT1mdW5jdGlvbigpe30sZC5vbm1vdXNlZG93bj1mdW5jdGlvbigpe30sZSgiYXV0byIpLHY9Yy5pc1NsaWRlc2hvdygpKToobC5zdHlsZS5kaXNwbGF5PXAuc3R5bGUuZGlzcGxheT0ibm9uZSIsYS5zdHlsZS5kaXNwbGF5PSJibG9jayIsZC5jbGFzc0xpc3QuYWRkKCJwcmVzZW50YXRpb25Nb2RlIiksdj0hMCxkLm9ubW91c2Vkb3duPWZ1bmN0aW9uKGEpe2EucHJldmVudERlZmF1bHQoKX0sCmQub25jb250ZXh0bWVudT1mdW5jdGlvbihhKXthLnByZXZlbnREZWZhdWx0KCl9LGQub25tb3VzZXVwPWZ1bmN0aW9uKGEpe2EucHJldmVudERlZmF1bHQoKTsxPT09YS53aGljaD9iLnNob3dOZXh0UGFnZSgpOmIuc2hvd1ByZXZpb3VzUGFnZSgpfSxlKCJwYWdlLWZpdCIpKTtrPSFrfTt0aGlzLmdldFpvb21MZXZlbD1mdW5jdGlvbigpe3JldHVybiBjLmdldFpvb21MZXZlbCgpfTt0aGlzLnNldFpvb21MZXZlbD1mdW5jdGlvbihhKXtjLnNldFpvb21MZXZlbChhKX07dGhpcy56b29tT3V0PWZ1bmN0aW9uKCl7dmFyIGE9KGIuZ2V0Wm9vbUxldmVsKCkvMS4xKS50b0ZpeGVkKDIpLGE9TWF0aC5tYXgoSSxhKTtlKGEsITApfTt0aGlzLnpvb21Jbj1mdW5jdGlvbigpe3ZhciBhPSgxLjEqYi5nZXRab29tTGV2ZWwoKSkudG9GaXhlZCgyKSxhPU1hdGgubWluKEosYSk7ZShhLCEwKX07KGZ1bmN0aW9uKCl7UCgpO2MmJihiLmluaXRpYWxpemUoKSxkb2N1bWVudC5leGl0RnVsbHNjcmVlbnx8CmRvY3VtZW50LmNhbmNlbEZ1bGxTY3JlZW58fGRvY3VtZW50Lm1vekNhbmNlbEZ1bGxTY3JlZW58fGRvY3VtZW50LndlYmtpdEV4aXRGdWxsc2NyZWVufHxkb2N1bWVudC53ZWJraXRDYW5jZWxGdWxsU2NyZWVufHxkb2N1bWVudC5tc0V4aXRGdWxsc2NyZWVufHwoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZ1bGxzY3JlZW4iKS5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iLGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwcmVzZW50YXRpb24iKS5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iKSxkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3ZlcmxheUNsb3NlQnV0dG9uIikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGIudG9nZ2xlRnVsbFNjcmVlbiksZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZ1bGxzY3JlZW4iKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsYi50b2dnbGVGdWxsU2NyZWVuKSxkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicHJlc2VudGF0aW9uIikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLApmdW5jdGlvbigpe258fGIudG9nZ2xlRnVsbFNjcmVlbigpO2IudG9nZ2xlUHJlc2VudGF0aW9uTW9kZSgpfSksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZnVsbHNjcmVlbmNoYW5nZSIsdSksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0ZnVsbHNjcmVlbmNoYW5nZSIsdSksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW96ZnVsbHNjcmVlbmNoYW5nZSIsdSksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiTVNGdWxsc2NyZWVuQ2hhbmdlIix1KSxkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZG93bmxvYWQiKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oKXtiLmRvd25sb2FkKCl9KSxkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiem9vbU91dCIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbigpe2Iuem9vbU91dCgpfSksZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInpvb21JbiIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbigpe2Iuem9vbUluKCl9KSwKZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInByZXZpb3VzIikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKCl7Yi5zaG93UHJldmlvdXNQYWdlKCl9KSxkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibmV4dCIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbigpe2Iuc2hvd05leHRQYWdlKCl9KSxkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicHJldmlvdXNQYWdlIikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKCl7Yi5zaG93UHJldmlvdXNQYWdlKCl9KSxkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibmV4dFBhZ2UiKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oKXtiLnNob3dOZXh0UGFnZSgpfSksZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBhZ2VOdW1iZXIiKS5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7Yi5zaG93UGFnZSh0aGlzLnZhbHVlKX0pLGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzY2FsZVNlbGVjdCIpLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsCmZ1bmN0aW9uKCl7ZSh0aGlzLnZhbHVlKX0pLGQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLHgpLHkuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLHgpLGQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLEIpLGwuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLHopLHAuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLHopLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJzY2FsZWNoYW5nZSIsZnVuY3Rpb24oYSl7dmFyIGI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImN1c3RvbVNjYWxlT3B0aW9uIiksYz1EKFN0cmluZyhhLnNjYWxlKSk7Yi5zZWxlY3RlZD0hMTtjfHwoYi50ZXh0Q29udGVudD1NYXRoLnJvdW5kKDFFNCphLnNjYWxlKS8xMDArIiUiLGIuc2VsZWN0ZWQ9ITApfSwhMCksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsZnVuY3Rpb24oYSl7TiYmKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwYWdlV2lkdGhPcHRpb24iKS5zZWxlY3RlZHx8ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBhZ2VBdXRvT3B0aW9uIikuc2VsZWN0ZWQpJiYKZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2NhbGVTZWxlY3QiKS52YWx1ZSk7eCgpfSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLGZ1bmN0aW9uKGEpe3ZhciBjPWEua2V5Q29kZTthPWEuc2hpZnRLZXk7aWYoImJsb2NrIj09PWJsYW5rZWQuc3R5bGUuZGlzcGxheSlzd2l0Y2goYyl7Y2FzZSAxNjpjYXNlIDE3OmNhc2UgMTg6Y2FzZSA5MTpjYXNlIDkzOmNhc2UgMjI0OmNhc2UgMjI1OmJyZWFrO2RlZmF1bHQ6YmxhbmtlZC5zdHlsZS5kaXNwbGF5PSJub25lIixCKCl9ZWxzZSBzd2l0Y2goYyl7Y2FzZSA4OmNhc2UgMzM6Y2FzZSAzNzpjYXNlIDM4OmNhc2UgODA6Yi5zaG93UHJldmlvdXNQYWdlKCk7YnJlYWs7Y2FzZSAxMzpjYXNlIDM0OmNhc2UgMzk6Y2FzZSA0MDpjYXNlIDc4OmIuc2hvd05leHRQYWdlKCk7YnJlYWs7Y2FzZSAzMjphP2Iuc2hvd1ByZXZpb3VzUGFnZSgpOmIuc2hvd05leHRQYWdlKCk7YnJlYWs7Y2FzZSA2NjpjYXNlIDE5MDprJiZNKCIjMDAwIik7CmJyZWFrO2Nhc2UgODc6Y2FzZSAxODg6ayYmTSgiI0ZGRiIpO2JyZWFrO2Nhc2UgMzY6Yi5zaG93UGFnZSgwKTticmVhaztjYXNlIDM1OmIuc2hvd1BhZ2UocS5sZW5ndGgpfX0pKX0pKCl9Owo=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/ViewerJS/webodf.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKCiBUaGlzIGlzIGEgZ2VuZXJhdGVkIGZpbGUuIERPIE5PVCBFRElULgoKIENvcHlyaWdodCAoQykgMjAxMC0yMDE1IEtPIEdtYkggPGNvcHlyaWdodEBrb2dtYmguY29tPgoKIEBsaWNzdGFydAogVGhlIGNvZGUgaW4gdGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHTlUgQUdQTCkKIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mCiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KCiBUaGUgY29kZSBpbiB0aGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CiBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIGFsb25nIHdpdGggV2ViT0RGLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgoKIEFzIGFkZGl0aW9uYWwgcGVybWlzc2lvbiB1bmRlciBHTlUgQUdQTCB2ZXJzaW9uIDMgc2VjdGlvbiA3LCB5b3UKIG1heSBkaXN0cmlidXRlIFVOTU9ESUZJRUQgVkVSU0lPTlMgT0YgVEhJUyBmaWxlIHdpdGhvdXQgdGhlIGNvcHkgb2YgdGhlIEdOVSBBR1BMIG5vcm1hbGx5CiByZXF1aXJlZCBieSBzZWN0aW9uIDQsIHByb3ZpZGVkIHlvdSBpbmNsdWRlIHRoaXMgbGljZW5zZSBub3RpY2UgYW5kIGEgVVJMCiB0aHJvdWdoIHdoaWNoIHJlY2lwaWVudHMgY2FuIGFjY2VzcyB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UuCgogQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgQUdQTCwgYW55IEhUTUwgZmlsZSB3aGljaCBtZXJlbHkgbWFrZXMgZnVuY3Rpb24KIGNhbGxzIHRvIHRoaXMgY29kZSwgYW5kIGZvciB0aGF0IHB1cnBvc2UgaW5jbHVkZXMgaXQgaW4gdW5tb2RpZmllZCBmb3JtIGJ5IHJlZmVyZW5jZSBvciBpbi1saW5lIHNoYWxsIGJlCiBkZWVtZWQgYSBzZXBhcmF0ZSB3b3JrIGZvciBjb3B5cmlnaHQgbGF3IHB1cnBvc2VzLiBJbiBhZGRpdGlvbiwgdGhlIGNvcHlyaWdodAogaG9sZGVycyBvZiB0aGlzIGNvZGUgZ2l2ZSB5b3UgcGVybWlzc2lvbiB0byBjb21iaW5lIHRoaXMgY29kZSB3aXRoIGZyZWUKIHNvZnR3YXJlIGxpYnJhcmllcyB0aGF0IGFyZSByZWxlYXNlZCB1bmRlciB0aGUgR05VIExHUEwuIFlvdSBtYXkgY29weSBhbmQKIGRpc3RyaWJ1dGUgc3VjaCBhIHN5c3RlbSBmb2xsb3dpbmcgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQUdQTCBmb3IgdGhpcyBjb2RlCiBhbmQgdGhlIExHUEwgZm9yIHRoZSBsaWJyYXJpZXMuIElmIHlvdSBtb2RpZnkgdGhpcyBjb2RlLCB5b3UgbWF5IGV4dGVuZCB0aGlzCiBleGNlcHRpb24gdG8geW91ciB2ZXJzaW9uIG9mIHRoZSBjb2RlLCBidXQgeW91IGFyZSBub3Qgb2JsaWdhdGVkIHRvIGRvIHNvLgogSWYgeW91IGRvIG5vdCB3aXNoIHRvIGRvIHNvLCBkZWxldGUgdGhpcyBleGNlcHRpb24gc3RhdGVtZW50IGZyb20geW91cgogdmVyc2lvbi4KCiBUaGlzIGxpY2Vuc2UgYXBwbGllcyB0byB0aGlzIGVudGlyZSBjb21waWxhdGlvbi4KIEBsaWNlbmQKCiBAc291cmNlOiBodHRwOi8vd3d3LndlYm9kZi5vcmcvCiBAc291cmNlOiBodHRwczovL2dpdGh1Yi5jb20va29nbWJoL1dlYk9ERi8KKi8KdmFyIHdlYm9kZl92ZXJzaW9uPSIwLjUuOSI7ZnVuY3Rpb24gUnVudGltZSgpe31SdW50aW1lLnByb3RvdHlwZS5nZXRWYXJpYWJsZT1mdW5jdGlvbihnKXt9O1J1bnRpbWUucHJvdG90eXBlLnRvSnNvbj1mdW5jdGlvbihnKXt9O1J1bnRpbWUucHJvdG90eXBlLmZyb21Kc29uPWZ1bmN0aW9uKGcpe307UnVudGltZS5wcm90b3R5cGUuYnl0ZUFycmF5RnJvbVN0cmluZz1mdW5jdGlvbihnLGspe307UnVudGltZS5wcm90b3R5cGUuYnl0ZUFycmF5VG9TdHJpbmc9ZnVuY3Rpb24oZyxrKXt9O1J1bnRpbWUucHJvdG90eXBlLnJlYWQ9ZnVuY3Rpb24oZyxrLGQsYil7fTtSdW50aW1lLnByb3RvdHlwZS5yZWFkRmlsZT1mdW5jdGlvbihnLGssZCl7fTtSdW50aW1lLnByb3RvdHlwZS5yZWFkRmlsZVN5bmM9ZnVuY3Rpb24oZyxrKXt9O1J1bnRpbWUucHJvdG90eXBlLmxvYWRYTUw9ZnVuY3Rpb24oZyxrKXt9O1J1bnRpbWUucHJvdG90eXBlLndyaXRlRmlsZT1mdW5jdGlvbihnLGssZCl7fTsKUnVudGltZS5wcm90b3R5cGUuZGVsZXRlRmlsZT1mdW5jdGlvbihnLGspe307UnVudGltZS5wcm90b3R5cGUubG9nPWZ1bmN0aW9uKGcsayl7fTtSdW50aW1lLnByb3RvdHlwZS5zZXRUaW1lb3V0PWZ1bmN0aW9uKGcsayl7fTtSdW50aW1lLnByb3RvdHlwZS5jbGVhclRpbWVvdXQ9ZnVuY3Rpb24oZyl7fTtSdW50aW1lLnByb3RvdHlwZS5saWJyYXJ5UGF0aHM9ZnVuY3Rpb24oKXt9O1J1bnRpbWUucHJvdG90eXBlLmN1cnJlbnREaXJlY3Rvcnk9ZnVuY3Rpb24oKXt9O1J1bnRpbWUucHJvdG90eXBlLnNldEN1cnJlbnREaXJlY3Rvcnk9ZnVuY3Rpb24oZyl7fTtSdW50aW1lLnByb3RvdHlwZS50eXBlPWZ1bmN0aW9uKCl7fTtSdW50aW1lLnByb3RvdHlwZS5nZXRET01JbXBsZW1lbnRhdGlvbj1mdW5jdGlvbigpe307UnVudGltZS5wcm90b3R5cGUucGFyc2VYTUw9ZnVuY3Rpb24oZyl7fTtSdW50aW1lLnByb3RvdHlwZS5leGl0PWZ1bmN0aW9uKGcpe307ClJ1bnRpbWUucHJvdG90eXBlLmdldFdpbmRvdz1mdW5jdGlvbigpe307UnVudGltZS5wcm90b3R5cGUucmVxdWVzdEFuaW1hdGlvbkZyYW1lPWZ1bmN0aW9uKGcpe307UnVudGltZS5wcm90b3R5cGUuY2FuY2VsQW5pbWF0aW9uRnJhbWU9ZnVuY3Rpb24oZyl7fTtSdW50aW1lLnByb3RvdHlwZS5hc3NlcnQ9ZnVuY3Rpb24oZyxrKXt9O3ZhciBJU19DT01QSUxFRF9DT0RFPSEwOwpSdW50aW1lLmJ5dGVBcnJheVRvU3RyaW5nPWZ1bmN0aW9uKGcsayl7ZnVuY3Rpb24gZChiKXt2YXIgZD0iIixyLHE9Yi5sZW5ndGg7Zm9yKHI9MDtyPHE7cis9MSlkKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGJbcl0mMjU1KTtyZXR1cm4gZH1mdW5jdGlvbiBiKGIpe3ZhciBkPSIiLHIscT1iLmxlbmd0aCxlPVtdLGwsYSxjLG07Zm9yKHI9Mzw9cSYmMjM5PT09YlswXSYmMTg3PT09YlsxXSYmMTkxPT09YlsyXT8zOjA7cjxxO3IrPTEpbD1iW3JdLDEyOD5sP2UucHVzaChsKToocis9MSxhPWJbcl0sMTk0PD1sJiYyMjQ+bD9lLnB1c2goKGwmMzEpPDw2fGEmNjMpOihyKz0xLGM9YltyXSwyMjQ8PWwmJjI0MD5sP2UucHVzaCgobCYxNSk8PDEyfChhJjYzKTw8NnxjJjYzKToocis9MSxtPWJbcl0sMjQwPD1sJiYyNDU+bCYmKGw9KGwmNyk8PDE4fChhJjYzKTw8MTJ8KGMmNjMpPDw2fG0mNjMsbC09NjU1MzYsZS5wdXNoKChsPj4xMCkrNTUyOTYsKGwmMTAyMykrNTYzMjApKSkpKSwxRTM8PWUubGVuZ3RoJiYKKGQrPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxlKSxlLmxlbmd0aD0wKTtyZXR1cm4gZCtTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsZSl9dmFyIGY7InV0ZjgiPT09az9mPWIoZyk6KCJiaW5hcnkiIT09ayYmdGhpcy5sb2coIlVuc3VwcG9ydGVkIGVuY29kaW5nOiAiK2spLGY9ZChnKSk7cmV0dXJuIGZ9O1J1bnRpbWUuZ2V0VmFyaWFibGU9ZnVuY3Rpb24oZyl7dHJ5e3JldHVybiBldmFsKGcpfWNhdGNoKGspe319O1J1bnRpbWUudG9Kc29uPWZ1bmN0aW9uKGcpe3JldHVybiBKU09OLnN0cmluZ2lmeShnKX07UnVudGltZS5mcm9tSnNvbj1mdW5jdGlvbihnKXtyZXR1cm4gSlNPTi5wYXJzZShnKX07UnVudGltZS5nZXRGdW5jdGlvbk5hbWU9ZnVuY3Rpb24oZyl7cmV0dXJuIHZvaWQgMD09PWcubmFtZT8oZz0vZnVuY3Rpb25ccysoXHcrKS8uZXhlYyhnKSkmJmdbMV06Zy5uYW1lfTsKUnVudGltZS5hc3NlcnQ9ZnVuY3Rpb24oZyxrKXtpZighZyl0aHJvdyB0aGlzLmxvZygiYWxlcnQiLCJBU1NFUlRJT04gRkFJTEVEOlxuIitrKSxFcnJvcihrKTt9OwpmdW5jdGlvbiBCcm93c2VyUnVudGltZSgpe2Z1bmN0aW9uIGcoYil7dmFyIGU9Yi5sZW5ndGgsbCxhLGM9MDtmb3IobD0wO2w8ZTtsKz0xKWE9Yi5jaGFyQ29kZUF0KGwpLGMrPTErKDEyODxhKSsoMjA0ODxhKSw1NTA0MDxhJiY1NzM0ND5hJiYoYys9MSxsKz0xKTtyZXR1cm4gY31mdW5jdGlvbiBrKGIsZSxsKXt2YXIgYT1iLmxlbmd0aCxjLG07ZT1uZXcgVWludDhBcnJheShuZXcgQXJyYXlCdWZmZXIoZSkpO2w/KGVbMF09MjM5LGVbMV09MTg3LGVbMl09MTkxLG09Myk6bT0wO2ZvcihsPTA7bDxhO2wrPTEpYz1iLmNoYXJDb2RlQXQobCksMTI4PmM/KGVbbV09YyxtKz0xKToyMDQ4PmM/KGVbbV09MTkyfGM+Pj42LGVbbSsxXT0xMjh8YyY2MyxtKz0yKTo1NTA0MD49Y3x8NTczNDQ8PWM/KGVbbV09MjI0fGM+Pj4xMiYxNSxlW20rMV09MTI4fGM+Pj42JjYzLGVbbSsyXT0xMjh8YyY2MyxtKz0zKToobCs9MSxjPShjLTU1Mjk2PDwxMHxiLmNoYXJDb2RlQXQobCktNTYzMjApKzY1NTM2LAplW21dPTI0MHxjPj4+MTgmNyxlW20rMV09MTI4fGM+Pj4xMiY2MyxlW20rMl09MTI4fGM+Pj42JjYzLGVbbSszXT0xMjh8YyY2MyxtKz00KTtyZXR1cm4gZX1mdW5jdGlvbiBkKGIpe3ZhciBlPWIubGVuZ3RoLGw9bmV3IFVpbnQ4QXJyYXkobmV3IEFycmF5QnVmZmVyKGUpKSxhO2ZvcihhPTA7YTxlO2ErPTEpbFthXT1iLmNoYXJDb2RlQXQoYSkmMjU1O3JldHVybiBsfWZ1bmN0aW9uIGIoYixlKXt2YXIgbDt2b2lkIDAhPT1lP2w9YjplPWI7Y29uc29sZS5sb2coZSk7ci5lbmFibGVBbGVydHMmJiJhbGVydCI9PT1sJiZhbGVydChlKX1mdW5jdGlvbiBmKGIsZSxsKXtpZigwIT09bC5zdGF0dXN8fGwucmVzcG9uc2VUZXh0KWlmKDIwMD09PWwuc3RhdHVzfHwwPT09bC5zdGF0dXMpe2lmKGwucmVzcG9uc2UmJiJzdHJpbmciIT09dHlwZW9mIGwucmVzcG9uc2UpImJpbmFyeSI9PT1lPyhsPWwucmVzcG9uc2UsbD1uZXcgVWludDhBcnJheShsKSk6bD1TdHJpbmcobC5yZXNwb25zZSk7ZWxzZSBpZigiYmluYXJ5Ij09PQplKWlmKG51bGwhPT1sLnJlc3BvbnNlQm9keSYmInVuZGVmaW5lZCIhPT1TdHJpbmcodHlwZW9mIFZCQXJyYXkpKXtsPShuZXcgVkJBcnJheShsLnJlc3BvbnNlQm9keSkpLnRvQXJyYXkoKTt2YXIgYT1sLmxlbmd0aDtlPW5ldyBVaW50OEFycmF5KG5ldyBBcnJheUJ1ZmZlcihhKSk7Zm9yKGI9MDtiPGE7Yis9MSllW2JdPWxbYl07bD1lfWVsc2V7KGI9bC5nZXRSZXNwb25zZUhlYWRlcigiQ29udGVudC1MZW5ndGgiKSkmJihiPXBhcnNlSW50KGIsMTApKTtpZihiJiZiIT09bC5yZXNwb25zZVRleHQubGVuZ3RoKWE6e2E9bC5yZXNwb25zZVRleHQ7ZT0hMTt2YXIgYz1nKGEpO2lmKCJudW1iZXIiPT09dHlwZW9mIGIpe2lmKGIhPT1jJiZiIT09YyszKXthPXZvaWQgMDticmVhayBhfWU9YyszPT09YjtjPWJ9YT1rKGEsYyxlKX12b2lkIDA9PT1hJiYoYT1kKGwucmVzcG9uc2VUZXh0KSk7bD1hfWVsc2UgbD1sLnJlc3BvbnNlVGV4dDtsPXtlcnI6bnVsbCxkYXRhOmx9fWVsc2UgbD17ZXJyOmwucmVzcG9uc2VUZXh0fHwKbC5zdGF0dXNUZXh0LGRhdGE6bnVsbH07ZWxzZSBsPXtlcnI6IkZpbGUgIitiKyIgaXMgZW1wdHkuIixkYXRhOm51bGx9O3JldHVybiBsfWZ1bmN0aW9uIG4oYixlLGwpe3ZhciBhPW5ldyBYTUxIdHRwUmVxdWVzdDthLm9wZW4oIkdFVCIsYixsKTthLm92ZXJyaWRlTWltZVR5cGUmJigiYmluYXJ5IiE9PWU/YS5vdmVycmlkZU1pbWVUeXBlKCJ0ZXh0L3BsYWluOyBjaGFyc2V0PSIrZSk6YS5vdmVycmlkZU1pbWVUeXBlKCJ0ZXh0L3BsYWluOyBjaGFyc2V0PXgtdXNlci1kZWZpbmVkIikpO3JldHVybiBhfWZ1bmN0aW9uIHAoYixlLGwpe3ZhciBhPW4oYixlLCEwKTthLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe3ZhciBjOzQ9PT1hLnJlYWR5U3RhdGUmJihjPWYoYixlLGEpLGwoYy5lcnIsYy5kYXRhKSl9O3RyeXthLnNlbmQobnVsbCl9Y2F0Y2goYyl7bChjLm1lc3NhZ2UsbnVsbCl9fXZhciByPXRoaXM7dGhpcy5ieXRlQXJyYXlGcm9tU3RyaW5nPWZ1bmN0aW9uKGIsZSl7dmFyIGw7CiJ1dGY4Ij09PWU/bD1rKGIsZyhiKSwhMSk6KCJiaW5hcnkiIT09ZSYmci5sb2coInVua25vd24gZW5jb2Rpbmc6ICIrZSksbD1kKGIpKTtyZXR1cm4gbH07dGhpcy5ieXRlQXJyYXlUb1N0cmluZz1SdW50aW1lLmJ5dGVBcnJheVRvU3RyaW5nO3RoaXMuZ2V0VmFyaWFibGU9UnVudGltZS5nZXRWYXJpYWJsZTt0aGlzLmZyb21Kc29uPVJ1bnRpbWUuZnJvbUpzb247dGhpcy50b0pzb249UnVudGltZS50b0pzb247dGhpcy5yZWFkRmlsZT1wO3RoaXMucmVhZD1mdW5jdGlvbihiLGUsbCxhKXtwKGIsImJpbmFyeSIsZnVuY3Rpb24oYyxtKXt2YXIgaD1udWxsO2lmKG0pe2lmKCJzdHJpbmciPT09dHlwZW9mIG0pdGhyb3ciVGhpcyBzaG91bGQgbm90IGhhcHBlbi4iO2g9bS5zdWJhcnJheShlLGUrbCl9YShjLGgpfSl9O3RoaXMucmVhZEZpbGVTeW5jPWZ1bmN0aW9uKGIsZSl7dmFyIGw9bihiLGUsITEpLGE7dHJ5e2wuc2VuZChudWxsKTthPWYoYixlLGwpO2lmKGEuZXJyKXRocm93IGEuZXJyOwppZihudWxsPT09YS5kYXRhKXRocm93Ik5vIGRhdGEgcmVhZCBmcm9tICIrYisiLiI7fWNhdGNoKGMpe3Rocm93IGM7fXJldHVybiBhLmRhdGF9O3RoaXMud3JpdGVGaWxlPWZ1bmN0aW9uKGIsZSxsKXt2YXIgYT1uZXcgWE1MSHR0cFJlcXVlc3QsYzthLm9wZW4oIlBVVCIsYiwhMCk7YS5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXs0PT09YS5yZWFkeVN0YXRlJiYoMCE9PWEuc3RhdHVzfHxhLnJlc3BvbnNlVGV4dD8yMDA8PWEuc3RhdHVzJiYzMDA+YS5zdGF0dXN8fDA9PT1hLnN0YXR1cz9sKG51bGwpOmwoIlN0YXR1cyAiK1N0cmluZyhhLnN0YXR1cykrIjogIithLnJlc3BvbnNlVGV4dHx8YS5zdGF0dXNUZXh0KTpsKCJGaWxlICIrYisiIGlzIGVtcHR5LiIpKX07Yz1lLmJ1ZmZlciYmIWEuc2VuZEFzQmluYXJ5P2UuYnVmZmVyOnIuYnl0ZUFycmF5VG9TdHJpbmcoZSwiYmluYXJ5Iik7dHJ5e2Euc2VuZEFzQmluYXJ5P2Euc2VuZEFzQmluYXJ5KGMpOmEuc2VuZChjKX1jYXRjaChtKXtyLmxvZygiSFVIPyAiKwptKyIgIitlKSxsKG0ubWVzc2FnZSl9fTt0aGlzLmRlbGV0ZUZpbGU9ZnVuY3Rpb24oYixlKXt2YXIgbD1uZXcgWE1MSHR0cFJlcXVlc3Q7bC5vcGVuKCJERUxFVEUiLGIsITApO2wub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7ND09PWwucmVhZHlTdGF0ZSYmKDIwMD5sLnN0YXR1cyYmMzAwPD1sLnN0YXR1cz9lKGwucmVzcG9uc2VUZXh0KTplKG51bGwpKX07bC5zZW5kKG51bGwpfTt0aGlzLmxvYWRYTUw9ZnVuY3Rpb24oYixlKXt2YXIgbD1uZXcgWE1MSHR0cFJlcXVlc3Q7bC5vcGVuKCJHRVQiLGIsITApO2wub3ZlcnJpZGVNaW1lVHlwZSYmbC5vdmVycmlkZU1pbWVUeXBlKCJ0ZXh0L3htbCIpO2wub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7ND09PWwucmVhZHlTdGF0ZSYmKDAhPT1sLnN0YXR1c3x8bC5yZXNwb25zZVRleHQ/MjAwPT09bC5zdGF0dXN8fDA9PT1sLnN0YXR1cz9lKG51bGwsbC5yZXNwb25zZVhNTCk6ZShsLnJlc3BvbnNlVGV4dCxudWxsKTplKCJGaWxlICIrCmIrIiBpcyBlbXB0eS4iLG51bGwpKX07dHJ5e2wuc2VuZChudWxsKX1jYXRjaChhKXtlKGEubWVzc2FnZSxudWxsKX19O3RoaXMubG9nPWI7dGhpcy5lbmFibGVBbGVydHM9ITA7dGhpcy5hc3NlcnQ9UnVudGltZS5hc3NlcnQ7dGhpcy5zZXRUaW1lb3V0PWZ1bmN0aW9uKGIsZSl7cmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtiKCl9LGUpfTt0aGlzLmNsZWFyVGltZW91dD1mdW5jdGlvbihiKXtjbGVhclRpbWVvdXQoYil9O3RoaXMubGlicmFyeVBhdGhzPWZ1bmN0aW9uKCl7cmV0dXJuWyJsaWIiXX07dGhpcy5zZXRDdXJyZW50RGlyZWN0b3J5PWZ1bmN0aW9uKCl7fTt0aGlzLmN1cnJlbnREaXJlY3Rvcnk9ZnVuY3Rpb24oKXtyZXR1cm4iIn07dGhpcy50eXBlPWZ1bmN0aW9uKCl7cmV0dXJuIkJyb3dzZXJSdW50aW1lIn07dGhpcy5nZXRET01JbXBsZW1lbnRhdGlvbj1mdW5jdGlvbigpe3JldHVybiB3aW5kb3cuZG9jdW1lbnQuaW1wbGVtZW50YXRpb259O3RoaXMucGFyc2VYTUw9CmZ1bmN0aW9uKGIpe3JldHVybihuZXcgRE9NUGFyc2VyKS5wYXJzZUZyb21TdHJpbmcoYiwidGV4dC94bWwiKX07dGhpcy5leGl0PWZ1bmN0aW9uKGQpe2IoIkNhbGxpbmcgZXhpdCB3aXRoIGNvZGUgIitTdHJpbmcoZCkrIiwgYnV0IGV4aXQoKSBpcyBub3QgaW1wbGVtZW50ZWQuIil9O3RoaXMuZ2V0V2luZG93PWZ1bmN0aW9uKCl7cmV0dXJuIHdpbmRvd307dGhpcy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU9ZnVuY3Rpb24oYil7dmFyIGU9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZXx8d2luZG93LndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZXx8d2luZG93Lm1velJlcXVlc3RBbmltYXRpb25GcmFtZXx8d2luZG93Lm1zUmVxdWVzdEFuaW1hdGlvbkZyYW1lLGw9MDtpZihlKWUuYmluZCh3aW5kb3cpLGw9ZShiKTtlbHNlIHJldHVybiBzZXRUaW1lb3V0KGIsMTUpO3JldHVybiBsfTt0aGlzLmNhbmNlbEFuaW1hdGlvbkZyYW1lPWZ1bmN0aW9uKGIpe3ZhciBlPXdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZXx8CndpbmRvdy53ZWJraXRDYW5jZWxBbmltYXRpb25GcmFtZXx8d2luZG93Lm1vekNhbmNlbEFuaW1hdGlvbkZyYW1lfHx3aW5kb3cubXNDYW5jZWxBbmltYXRpb25GcmFtZTtlPyhlLmJpbmQod2luZG93KSxlKGIpKTpjbGVhclRpbWVvdXQoYil9fQpmdW5jdGlvbiBOb2RlSlNSdW50aW1lKCl7ZnVuY3Rpb24gZyhiKXt2YXIgZT1iLmxlbmd0aCxsLGE9bmV3IFVpbnQ4QXJyYXkobmV3IEFycmF5QnVmZmVyKGUpKTtmb3IobD0wO2w8ZTtsKz0xKWFbbF09YltsXTtyZXR1cm4gYX1mdW5jdGlvbiBrKGQsZSxsKXtmdW5jdGlvbiBhKGEsbSl7aWYoYSlyZXR1cm4gbChhLG51bGwpO2lmKCFtKXJldHVybiBsKCJObyBkYXRhIGZvciAiK2QrIi4iLG51bGwpO2lmKCJzdHJpbmciPT09dHlwZW9mIG0pcmV0dXJuIGwoYSxtKTtsKGEsZyhtKSl9ZD1mLnJlc29sdmUobixkKTsiYmluYXJ5IiE9PWU/Yi5yZWFkRmlsZShkLGUsYSk6Yi5yZWFkRmlsZShkLG51bGwsYSl9dmFyIGQ9dGhpcyxiPXJlcXVpcmUoImZzIiksZj1yZXF1aXJlKCJwYXRoIiksbj0iIixwLHI7dGhpcy5ieXRlQXJyYXlGcm9tU3RyaW5nPWZ1bmN0aW9uKGIsZSl7dmFyIGw9bmV3IEJ1ZmZlcihiLGUpLGEsYz1sLmxlbmd0aCxtPW5ldyBVaW50OEFycmF5KG5ldyBBcnJheUJ1ZmZlcihjKSk7CmZvcihhPTA7YTxjO2ErPTEpbVthXT1sW2FdO3JldHVybiBtfTt0aGlzLmJ5dGVBcnJheVRvU3RyaW5nPVJ1bnRpbWUuYnl0ZUFycmF5VG9TdHJpbmc7dGhpcy5nZXRWYXJpYWJsZT1SdW50aW1lLmdldFZhcmlhYmxlO3RoaXMuZnJvbUpzb249UnVudGltZS5mcm9tSnNvbjt0aGlzLnRvSnNvbj1SdW50aW1lLnRvSnNvbjt0aGlzLnJlYWRGaWxlPWs7dGhpcy5sb2FkWE1MPWZ1bmN0aW9uKGIsZSl7ayhiLCJ1dGYtOCIsZnVuY3Rpb24obCxhKXtpZihsKXJldHVybiBlKGwsbnVsbCk7aWYoIWEpcmV0dXJuIGUoIk5vIGRhdGEgZm9yICIrYisiLiIsbnVsbCk7ZShudWxsLGQucGFyc2VYTUwoYSkpfSl9O3RoaXMud3JpdGVGaWxlPWZ1bmN0aW9uKGQsZSxsKXtlPW5ldyBCdWZmZXIoZSk7ZD1mLnJlc29sdmUobixkKTtiLndyaXRlRmlsZShkLGUsImJpbmFyeSIsZnVuY3Rpb24oYSl7bChhfHxudWxsKX0pfTt0aGlzLmRlbGV0ZUZpbGU9ZnVuY3Rpb24oZCxlKXtkPWYucmVzb2x2ZShuLGQpOwpiLnVubGluayhkLGUpfTt0aGlzLnJlYWQ9ZnVuY3Rpb24oZCxlLGwsYSl7ZD1mLnJlc29sdmUobixkKTtiLm9wZW4oZCwicisiLDY2NixmdW5jdGlvbihjLG0pe2lmKGMpYShjLG51bGwpO2Vsc2V7dmFyIGg9bmV3IEJ1ZmZlcihsKTtiLnJlYWQobSxoLDAsbCxlLGZ1bmN0aW9uKGMpe2IuY2xvc2UobSk7YShjLGcoaCkpfSl9fSl9O3RoaXMucmVhZEZpbGVTeW5jPWZ1bmN0aW9uKGQsZSl7dmFyIGw7bD1iLnJlYWRGaWxlU3luYyhkLCJiaW5hcnkiPT09ZT9udWxsOmUpO2lmKG51bGw9PT1sKXRocm93IkZpbGUgIitkKyIgY291bGQgbm90IGJlIHJlYWQuIjsiYmluYXJ5Ij09PWUmJihsPWcobCkpO3JldHVybiBsfTt0aGlzLmxvZz1mdW5jdGlvbihiLGUpe3ZhciBsO3ZvaWQgMCE9PWU/bD1iOmU9YjsiYWxlcnQiPT09bCYmcHJvY2Vzcy5zdGRlcnIud3JpdGUoIlxuISEhISEgQUxFUlQgISEhISFcbiIpO3Byb2Nlc3Muc3RkZXJyLndyaXRlKGUrIlxuIik7ImFsZXJ0Ij09PWwmJnByb2Nlc3Muc3RkZXJyLndyaXRlKCIhISEhISBBTEVSVCAhISEhIVxuIil9Owp0aGlzLmFzc2VydD1SdW50aW1lLmFzc2VydDt0aGlzLnNldFRpbWVvdXQ9ZnVuY3Rpb24oYixlKXtyZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpe2IoKX0sZSl9O3RoaXMuY2xlYXJUaW1lb3V0PWZ1bmN0aW9uKGIpe2NsZWFyVGltZW91dChiKX07dGhpcy5saWJyYXJ5UGF0aHM9ZnVuY3Rpb24oKXtyZXR1cm5bX19kaXJuYW1lXX07dGhpcy5zZXRDdXJyZW50RGlyZWN0b3J5PWZ1bmN0aW9uKGIpe249Yn07dGhpcy5jdXJyZW50RGlyZWN0b3J5PWZ1bmN0aW9uKCl7cmV0dXJuIG59O3RoaXMudHlwZT1mdW5jdGlvbigpe3JldHVybiJOb2RlSlNSdW50aW1lIn07dGhpcy5nZXRET01JbXBsZW1lbnRhdGlvbj1mdW5jdGlvbigpe3JldHVybiByfTt0aGlzLnBhcnNlWE1MPWZ1bmN0aW9uKGIpe3JldHVybiBwLnBhcnNlRnJvbVN0cmluZyhiLCJ0ZXh0L3htbCIpfTt0aGlzLmV4aXQ9cHJvY2Vzcy5leGl0O3RoaXMuZ2V0V2luZG93PWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9O3RoaXMucmVxdWVzdEFuaW1hdGlvbkZyYW1lPQpmdW5jdGlvbihiKXtyZXR1cm4gc2V0VGltZW91dChiLDE1KX07dGhpcy5jYW5jZWxBbmltYXRpb25GcmFtZT1mdW5jdGlvbihiKXtjbGVhclRpbWVvdXQoYil9O3A9bmV3IChyZXF1aXJlKCJ4bWxkb20iKS5ET01QYXJzZXIpO3I9ZC5wYXJzZVhNTCgiPGEvPiIpLmltcGxlbWVudGF0aW9ufQpmdW5jdGlvbiBSaGlub1J1bnRpbWUoKXt2YXIgZz10aGlzLGs9e30sZD1rLmphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKSxiLGYsbj0iIjtkLnNldFZhbGlkYXRpbmcoITEpO2Quc2V0TmFtZXNwYWNlQXdhcmUoITApO2Quc2V0RXhwYW5kRW50aXR5UmVmZXJlbmNlcyghMSk7ZC5zZXRTY2hlbWEobnVsbCk7Zj1rLm9yZy54bWwuc2F4LkVudGl0eVJlc29sdmVyKHtyZXNvbHZlRW50aXR5OmZ1bmN0aW9uKGIsZCl7dmFyIGY9bmV3IGsuamF2YS5pby5GaWxlUmVhZGVyKGQpO3JldHVybiBuZXcgay5vcmcueG1sLnNheC5JbnB1dFNvdXJjZShmKX19KTtiPWQubmV3RG9jdW1lbnRCdWlsZGVyKCk7Yi5zZXRFbnRpdHlSZXNvbHZlcihmKTt0aGlzLmJ5dGVBcnJheUZyb21TdHJpbmc9ZnVuY3Rpb24oYixkKXt2YXIgZixlPWIubGVuZ3RoLGw9bmV3IFVpbnQ4QXJyYXkobmV3IEFycmF5QnVmZmVyKGUpKTtmb3IoZj0wO2Y8ZTtmKz0xKWxbZl09CmIuY2hhckNvZGVBdChmKSYyNTU7cmV0dXJuIGx9O3RoaXMuYnl0ZUFycmF5VG9TdHJpbmc9UnVudGltZS5ieXRlQXJyYXlUb1N0cmluZzt0aGlzLmdldFZhcmlhYmxlPVJ1bnRpbWUuZ2V0VmFyaWFibGU7dGhpcy5mcm9tSnNvbj1SdW50aW1lLmZyb21Kc29uO3RoaXMudG9Kc29uPVJ1bnRpbWUudG9Kc29uO3RoaXMubG9hZFhNTD1mdW5jdGlvbihkLGYpe3ZhciBuPW5ldyBrLmphdmEuaW8uRmlsZShkKSxlPW51bGw7dHJ5e2U9Yi5wYXJzZShuKX1jYXRjaChsKXtyZXR1cm4gcHJpbnQobCksZihsLG51bGwpfWYobnVsbCxlKX07dGhpcy5yZWFkRmlsZT1mdW5jdGlvbihiLGQsZil7biYmKGI9bisiLyIrYik7dmFyIGU9bmV3IGsuamF2YS5pby5GaWxlKGIpLGw9ImJpbmFyeSI9PT1kPyJsYXRpbjEiOmQ7ZS5pc0ZpbGUoKT8oKGI9cmVhZEZpbGUoYixsKSkmJiJiaW5hcnkiPT09ZCYmKGI9Zy5ieXRlQXJyYXlGcm9tU3RyaW5nKGIsImJpbmFyeSIpKSxmKG51bGwsYikpOmYoYisiIGlzIG5vdCBhIGZpbGUuIiwKbnVsbCl9O3RoaXMud3JpdGVGaWxlPWZ1bmN0aW9uKGIsZCxmKXtuJiYoYj1uKyIvIitiKTtiPW5ldyBrLmphdmEuaW8uRmlsZU91dHB1dFN0cmVhbShiKTt2YXIgZSxsPWQubGVuZ3RoO2ZvcihlPTA7ZTxsO2UrPTEpYi53cml0ZShkW2VdKTtiLmNsb3NlKCk7ZihudWxsKX07dGhpcy5kZWxldGVGaWxlPWZ1bmN0aW9uKGIsZCl7biYmKGI9bisiLyIrYik7dmFyIGY9bmV3IGsuamF2YS5pby5GaWxlKGIpLGU9YitNYXRoLnJhbmRvbSgpLGU9bmV3IGsuamF2YS5pby5GaWxlKGUpO2YucmVuYW1lKGUpPyhlLmRlbGV0ZU9uRXhpdCgpLGQobnVsbCkpOmQoIkNvdWxkIG5vdCBkZWxldGUgIitiKX07dGhpcy5yZWFkPWZ1bmN0aW9uKGIsZCxmLGUpe24mJihiPW4rIi8iK2IpO3ZhciBsO2w9Yjt2YXIgYT0iYmluYXJ5IjsobmV3IGsuamF2YS5pby5GaWxlKGwpKS5pc0ZpbGUoKT8oImJpbmFyeSI9PT1hJiYoYT0ibGF0aW4xIiksbD1yZWFkRmlsZShsLGEpKTpsPW51bGw7bD9lKG51bGwsdGhpcy5ieXRlQXJyYXlGcm9tU3RyaW5nKGwuc3Vic3RyaW5nKGQsCmQrZiksImJpbmFyeSIpKTplKCJDYW5ub3QgcmVhZCAiK2IsbnVsbCl9O3RoaXMucmVhZEZpbGVTeW5jPWZ1bmN0aW9uKGIsZCl7aWYoIWQpcmV0dXJuIiI7dmFyIGY9cmVhZEZpbGUoYixkKTtpZihudWxsPT09Zil0aHJvdyJGaWxlIGNvdWxkIG5vdCBiZSByZWFkLiI7cmV0dXJuIGZ9O3RoaXMubG9nPWZ1bmN0aW9uKGIsZCl7dmFyIGY7dm9pZCAwIT09ZD9mPWI6ZD1iOyJhbGVydCI9PT1mJiZwcmludCgiXG4hISEhISBBTEVSVCAhISEhISIpO3ByaW50KGQpOyJhbGVydCI9PT1mJiZwcmludCgiISEhISEgQUxFUlQgISEhISEiKX07dGhpcy5hc3NlcnQ9UnVudGltZS5hc3NlcnQ7dGhpcy5zZXRUaW1lb3V0PWZ1bmN0aW9uKGIpe2IoKTtyZXR1cm4gMH07dGhpcy5jbGVhclRpbWVvdXQ9ZnVuY3Rpb24oKXt9O3RoaXMubGlicmFyeVBhdGhzPWZ1bmN0aW9uKCl7cmV0dXJuWyJsaWIiXX07dGhpcy5zZXRDdXJyZW50RGlyZWN0b3J5PWZ1bmN0aW9uKGIpe249Yn07dGhpcy5jdXJyZW50RGlyZWN0b3J5PQpmdW5jdGlvbigpe3JldHVybiBufTt0aGlzLnR5cGU9ZnVuY3Rpb24oKXtyZXR1cm4iUmhpbm9SdW50aW1lIn07dGhpcy5nZXRET01JbXBsZW1lbnRhdGlvbj1mdW5jdGlvbigpe3JldHVybiBiLmdldERPTUltcGxlbWVudGF0aW9uKCl9O3RoaXMucGFyc2VYTUw9ZnVuY3Rpb24oZCl7ZD1uZXcgay5qYXZhLmlvLlN0cmluZ1JlYWRlcihkKTtkPW5ldyBrLm9yZy54bWwuc2F4LklucHV0U291cmNlKGQpO3JldHVybiBiLnBhcnNlKGQpfTt0aGlzLmV4aXQ9cXVpdDt0aGlzLmdldFdpbmRvdz1mdW5jdGlvbigpe3JldHVybiBudWxsfTt0aGlzLnJlcXVlc3RBbmltYXRpb25GcmFtZT1mdW5jdGlvbihiKXtiKCk7cmV0dXJuIDB9O3RoaXMuY2FuY2VsQW5pbWF0aW9uRnJhbWU9ZnVuY3Rpb24oKXt9fQpSdW50aW1lLmNyZWF0ZT1mdW5jdGlvbigpe3JldHVybiJ1bmRlZmluZWQiIT09U3RyaW5nKHR5cGVvZiB3aW5kb3cpP25ldyBCcm93c2VyUnVudGltZToidW5kZWZpbmVkIiE9PVN0cmluZyh0eXBlb2YgcmVxdWlyZSk/bmV3IE5vZGVKU1J1bnRpbWU6bmV3IFJoaW5vUnVudGltZX07dmFyIHJ1bnRpbWU9UnVudGltZS5jcmVhdGUoKSxjb3JlPXt9LGd1aT17fSx4bWxkb209e30sb2RmPXt9LG9wcz17fSx3ZWJvZGY9e307KGZ1bmN0aW9uKCl7d2Vib2RmLlZlcnNpb249InVuZGVmaW5lZCIhPT1TdHJpbmcodHlwZW9mIHdlYm9kZl92ZXJzaW9uKT93ZWJvZGZfdmVyc2lvbjoiRnJvbSBTb3VyY2UifSkoKTsKKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZyhiLGQsZSl7dmFyIGw9YisiL21hbmlmZXN0Lmpzb24iLGEsYztydW50aW1lLmxvZygiTG9hZGluZyBtYW5pZmVzdDogIitsKTt0cnl7YT1ydW50aW1lLnJlYWRGaWxlU3luYyhsLCJ1dGYtOCIpfWNhdGNoKG0pe2lmKGUpcnVudGltZS5sb2coIk5vIGxvYWRhYmxlIG1hbmlmZXN0IGZvdW5kLiIpO2Vsc2UgdGhyb3cgY29uc29sZS5sb2coU3RyaW5nKG0pKSxtO3JldHVybn1lPUpTT04ucGFyc2UoYSk7Zm9yKGMgaW4gZSllLmhhc093blByb3BlcnR5KGMpJiYoZFtjXT17ZGlyOmIsZGVwczplW2NdfSl9ZnVuY3Rpb24gayhiLGQsZSl7ZnVuY3Rpb24gbChoKXtpZighbVtoXSYmIWUoaCkpe2lmKGNbaF0pdGhyb3ciQ2lyY3VsYXIgZGVwZW5kZW5jeSBkZXRlY3RlZCBmb3IgIitoKyIuIjtjW2hdPSEwO2lmKCFkW2hdKXRocm93Ik1pc3NpbmcgZGVwZW5kZW5jeSBpbmZvcm1hdGlvbiBmb3IgY2xhc3MgIitoKyIuIjt2YXIgYj1kW2hdLGY9Yi5kZXBzLApuLHI9Zi5sZW5ndGg7Zm9yKG49MDtuPHI7bis9MSlsKGZbbl0pO2NbaF09ITE7bVtoXT0hMDthLnB1c2goYi5kaXIrIi8iK2gucmVwbGFjZSgiLiIsIi8iKSsiLmpzIil9fXZhciBhPVtdLGM9e30sbT17fTtiLmZvckVhY2gobCk7cmV0dXJuIGF9ZnVuY3Rpb24gZChiLGQpe3JldHVybiBkKygiXG4vLyMgc291cmNlVVJMPSIrYil9ZnVuY3Rpb24gYihiKXt2YXIgZixlO2ZvcihmPTA7ZjxiLmxlbmd0aDtmKz0xKWU9cnVudGltZS5yZWFkRmlsZVN5bmMoYltmXSwidXRmLTgiKSxlPWQoYltmXSxlKSxldmFsKGUpfWZ1bmN0aW9uIGYoYil7Yj1iLnNwbGl0KCIuIik7dmFyIGQsZT1wLGw9Yi5sZW5ndGg7Zm9yKGQ9MDtkPGw7ZCs9MSl7aWYoIWUuaGFzT3duUHJvcGVydHkoYltkXSkpcmV0dXJuITE7ZT1lW2JbZF1dfXJldHVybiEwfXZhciBuLHA9e2NvcmU6Y29yZSxndWk6Z3VpLHhtbGRvbTp4bWxkb20sb2RmOm9kZixvcHM6b3BzfTtydW50aW1lLmxvYWRDbGFzc2VzPWZ1bmN0aW9uKGQsCnApe2lmKElTX0NPTVBJTEVEX0NPREV8fDA9PT1kLmxlbmd0aClyZXR1cm4gcCYmcCgpO3ZhciBlO2lmKCEoZT1uKSl7ZT1bXTt2YXIgbD1ydW50aW1lLmxpYnJhcnlQYXRocygpLGE7cnVudGltZS5jdXJyZW50RGlyZWN0b3J5KCkmJi0xPT09bC5pbmRleE9mKHJ1bnRpbWUuY3VycmVudERpcmVjdG9yeSgpKSYmZyhydW50aW1lLmN1cnJlbnREaXJlY3RvcnkoKSxlLCEwKTtmb3IoYT0wO2E8bC5sZW5ndGg7YSs9MSlnKGxbYV0sZSl9bj1lO2Q9ayhkLG4sZik7aWYoMD09PWQubGVuZ3RoKXJldHVybiBwJiZwKCk7aWYoIkJyb3dzZXJSdW50aW1lIj09PXJ1bnRpbWUudHlwZSgpJiZwKXtlPWQ7bD1kb2N1bWVudC5jdXJyZW50U2NyaXB0fHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQubGFzdENoaWxkO2E9ZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO3ZhciBjLG07Zm9yKG09MDttPGUubGVuZ3RoO20rPTEpYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSxjLnR5cGU9CiJ0ZXh0L2phdmFzY3JpcHQiLGMuY2hhcnNldD0idXRmLTgiLGMuYXN5bmM9ITEsYy5zZXRBdHRyaWJ1dGUoInNyYyIsZVttXSksYS5hcHBlbmRDaGlsZChjKTtwJiYoYy5vbmxvYWQ9cCk7bC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLGwpfWVsc2UgYihkKSxwJiZwKCl9O3J1bnRpbWUubG9hZENsYXNzPWZ1bmN0aW9uKGIsZCl7cnVudGltZS5sb2FkQ2xhc3NlcyhbYl0sZCl9fSkoKTsoZnVuY3Rpb24oKXt2YXIgZz1mdW5jdGlvbihnKXtyZXR1cm4gZ307cnVudGltZS5nZXRUcmFuc2xhdG9yPWZ1bmN0aW9uKCl7cmV0dXJuIGd9O3J1bnRpbWUuc2V0VHJhbnNsYXRvcj1mdW5jdGlvbihrKXtnPWt9O3J1bnRpbWUudHI9ZnVuY3Rpb24oayl7dmFyIGQ9ZyhrKTtyZXR1cm4gZCYmInN0cmluZyI9PT1TdHJpbmcodHlwZW9mIGQpP2Q6a319KSgpOwooZnVuY3Rpb24oZyl7ZnVuY3Rpb24gayhkKXtpZihkLmxlbmd0aCl7dmFyIGI9ZFswXTtydW50aW1lLnJlYWRGaWxlKGIsInV0ZjgiLGZ1bmN0aW9uKGYsbil7ZnVuY3Rpb24gZygpe3ZhciBiOyhiPWV2YWwoaykpJiZydW50aW1lLmV4aXQoYil9dmFyIHI9IiIscj1iLmxhc3RJbmRleE9mKCIvIiksaz1uLHI9LTEhPT1yP2Iuc3Vic3RyaW5nKDAscik6Ii4iO3J1bnRpbWUuc2V0Q3VycmVudERpcmVjdG9yeShyKTtmPyhydW50aW1lLmxvZyhmKSxydW50aW1lLmV4aXQoMSkpOm51bGw9PT1rPyhydW50aW1lLmxvZygiTm8gY29kZSBmb3VuZCBmb3IgIitiKSxydW50aW1lLmV4aXQoMSkpOmcuYXBwbHkobnVsbCxkKX0pfX1nPWc/QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZyk6W107Ik5vZGVKU1J1bnRpbWUiPT09cnVudGltZS50eXBlKCk/ayhwcm9jZXNzLmFyZ3Yuc2xpY2UoMikpOiJSaGlub1J1bnRpbWUiPT09cnVudGltZS50eXBlKCk/ayhnKTprKGcuc2xpY2UoMSkpfSkoInVuZGVmaW5lZCIhPT0KU3RyaW5nKHR5cGVvZiBhcmd1bWVudHMpJiZhcmd1bWVudHMpOyhmdW5jdGlvbigpe2NvcmUuQXN5bmM9ZnVuY3Rpb24oKXtyZXR1cm57Zm9yRWFjaDpmdW5jdGlvbihnLGssZCl7ZnVuY3Rpb24gYihiKXtwIT09biYmKGI/KHA9bixkKGIpKToocCs9MSxwPT09biYmZChudWxsKSkpfXZhciBmLG49Zy5sZW5ndGgscD0wO2ZvcihmPTA7ZjxuO2YrPTEpayhnW2ZdLGIpfSxkZXN0cm95QWxsOmZ1bmN0aW9uKGcsayl7ZnVuY3Rpb24gZChiLGYpe2lmKGYpayhmKTtlbHNlIGlmKGI8Zy5sZW5ndGgpZ1tiXShmdW5jdGlvbihmKXtkKGIrMSxmKX0pO2Vsc2UgaygpfWQoMCx2b2lkIDApfX19KCl9KSgpOwpmdW5jdGlvbiBtYWtlQmFzZTY0KCl7ZnVuY3Rpb24gZyhhKXt2YXIgYyxtPWEubGVuZ3RoLGg9bmV3IFVpbnQ4QXJyYXkobmV3IEFycmF5QnVmZmVyKG0pKTtmb3IoYz0wO2M8bTtjKz0xKWhbY109YS5jaGFyQ29kZUF0KGMpJjI1NTtyZXR1cm4gaH1mdW5jdGlvbiBrKGEpe3ZhciBjLG09IiIsaCxiPWEubGVuZ3RoLTI7Zm9yKGg9MDtoPGI7aCs9MyljPWFbaF08PDE2fGFbaCsxXTw8OHxhW2grMl0sbSs9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iW2M+Pj4xOF0sbSs9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iW2M+Pj4xMiY2M10sbSs9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iW2M+Pj42JjYzXSxtKz0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyJbYyYKNjNdO2g9PT1iKzE/KGM9YVtoXTw8NCxtKz0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyJbYz4+PjZdLG0rPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIltjJjYzXSxtKz0iPT0iKTpoPT09YiYmKGM9YVtoXTw8MTB8YVtoKzFdPDwyLG0rPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIltjPj4+MTJdLG0rPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIltjPj4+NiY2M10sbSs9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iW2MmNjNdLG0rPSI9Iik7cmV0dXJuIG19ZnVuY3Rpb24gZChhKXthPWEucmVwbGFjZSgvW15BLVphLXowLTkrXC9dKy9nLAoiIik7dmFyIGM9YS5sZW5ndGgsbT1uZXcgVWludDhBcnJheShuZXcgQXJyYXlCdWZmZXIoMypjKSksYj1hLmxlbmd0aCU0LGQ9MCxsLGU7Zm9yKGw9MDtsPGM7bCs9NCllPShoW2EuY2hhckF0KGwpXXx8MCk8PDE4fChoW2EuY2hhckF0KGwrMSldfHwwKTw8MTJ8KGhbYS5jaGFyQXQobCsyKV18fDApPDw2fChoW2EuY2hhckF0KGwrMyldfHwwKSxtW2RdPWU+PjE2LG1bZCsxXT1lPj44JjI1NSxtW2QrMl09ZSYyNTUsZCs9MztjPTMqYy1bMCwwLDIsMV1bYl07cmV0dXJuIG0uc3ViYXJyYXkoMCxjKX1mdW5jdGlvbiBiKGEpe3ZhciBjLG0saD1hLmxlbmd0aCxiPTAsZD1uZXcgVWludDhBcnJheShuZXcgQXJyYXlCdWZmZXIoMypoKSk7Zm9yKGM9MDtjPGg7Yys9MSltPWFbY10sMTI4Pm0/ZFtiKytdPW06KDIwNDg+bT9kW2IrK109MTkyfG0+Pj42OihkW2IrK109MjI0fG0+Pj4xMiYxNSxkW2IrK109MTI4fG0+Pj42JjYzKSxkW2IrK109MTI4fG0mNjMpO3JldHVybiBkLnN1YmFycmF5KDAsCmIpfWZ1bmN0aW9uIGYoYSl7dmFyIGMsbSxoLGIsZD1hLmxlbmd0aCxsPW5ldyBVaW50OEFycmF5KG5ldyBBcnJheUJ1ZmZlcihkKSksZT0wO2ZvcihjPTA7YzxkO2MrPTEpbT1hW2NdLDEyOD5tP2xbZSsrXT1tOihjKz0xLGg9YVtjXSwyMjQ+bT9sW2UrK109KG0mMzEpPDw2fGgmNjM6KGMrPTEsYj1hW2NdLGxbZSsrXT0obSYxNSk8PDEyfChoJjYzKTw8NnxiJjYzKSk7cmV0dXJuIGwuc3ViYXJyYXkoMCxlKX1mdW5jdGlvbiBuKGEpe3JldHVybiBrKGcoYSkpfWZ1bmN0aW9uIHAoYSl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLGQoYSkpfWZ1bmN0aW9uIHIoYSl7cmV0dXJuIGYoZyhhKSl9ZnVuY3Rpb24gcShhKXthPWYoYSk7Zm9yKHZhciBjPSIiLG09MDttPGEubGVuZ3RoOyljKz1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyxhLnN1YmFycmF5KG0sbSs0NUUzKSksbSs9NDVFMztyZXR1cm4gY31mdW5jdGlvbiBlKGEsYyxtKXt2YXIgaCxiLApkLGw9IiI7Zm9yKGQ9YztkPG07ZCs9MSljPWEuY2hhckNvZGVBdChkKSYyNTUsMTI4PmM/bCs9U3RyaW5nLmZyb21DaGFyQ29kZShjKTooZCs9MSxoPWEuY2hhckNvZGVBdChkKSYyNTUsMjI0PmM/bCs9U3RyaW5nLmZyb21DaGFyQ29kZSgoYyYzMSk8PDZ8aCY2Myk6KGQrPTEsYj1hLmNoYXJDb2RlQXQoZCkmMjU1LGwrPVN0cmluZy5mcm9tQ2hhckNvZGUoKGMmMTUpPDwxMnwoaCY2Myk8PDZ8YiY2MykpKTtyZXR1cm4gbH1mdW5jdGlvbiBsKGEsYyl7ZnVuY3Rpb24gbSgpe3ZhciBkPWIrMUU1O2Q+YS5sZW5ndGgmJihkPWEubGVuZ3RoKTtoKz1lKGEsYixkKTtiPWQ7ZD1iPT09YS5sZW5ndGg7YyhoLGQpJiYhZCYmcnVudGltZS5zZXRUaW1lb3V0KG0sMCl9dmFyIGg9IiIsYj0wOzFFNT5hLmxlbmd0aD9jKGUoYSwwLGEubGVuZ3RoKSwhMCk6KCJzdHJpbmciIT09dHlwZW9mIGEmJihhPWEuc2xpY2UoKSksbSgpKX1mdW5jdGlvbiBhKGEpe3JldHVybiBiKGcoYSkpfWZ1bmN0aW9uIGMoYSl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLApiKGEpKX1mdW5jdGlvbiBtKGEpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyxiKGcoYSkpKX12YXIgaD1mdW5jdGlvbihhKXt2YXIgYz17fSxtLGg7bT0wO2ZvcihoPWEubGVuZ3RoO208aDttKz0xKWNbYS5jaGFyQXQobSldPW07cmV0dXJuIGN9KCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIikseSx4LHo9cnVudGltZS5nZXRXaW5kb3coKSx3LHY7eiYmei5idG9hPyh3PXouYnRvYSx5PWZ1bmN0aW9uKGEpe3JldHVybiB3KG0oYSkpfSk6KHc9bix5PWZ1bmN0aW9uKGMpe3JldHVybiBrKGEoYykpfSk7eiYmei5hdG9iPyh2PXouYXRvYix4PWZ1bmN0aW9uKGEpe2E9dihhKTtyZXR1cm4gZShhLDAsYS5sZW5ndGgpfSk6KHY9cCx4PWZ1bmN0aW9uKGEpe3JldHVybiBxKGQoYSkpfSk7Y29yZS5CYXNlNjQ9ZnVuY3Rpb24oKXt0aGlzLmNvbnZlcnRCeXRlQXJyYXlUb0Jhc2U2ND10aGlzLmNvbnZlcnRVVEY4QXJyYXlUb0Jhc2U2ND0Kazt0aGlzLmNvbnZlcnRCYXNlNjRUb0J5dGVBcnJheT10aGlzLmNvbnZlcnRCYXNlNjRUb1VURjhBcnJheT1kO3RoaXMuY29udmVydFVURjE2QXJyYXlUb0J5dGVBcnJheT10aGlzLmNvbnZlcnRVVEYxNkFycmF5VG9VVEY4QXJyYXk9Yjt0aGlzLmNvbnZlcnRCeXRlQXJyYXlUb1VURjE2QXJyYXk9dGhpcy5jb252ZXJ0VVRGOEFycmF5VG9VVEYxNkFycmF5PWY7dGhpcy5jb252ZXJ0VVRGOFN0cmluZ1RvQmFzZTY0PW47dGhpcy5jb252ZXJ0QmFzZTY0VG9VVEY4U3RyaW5nPXA7dGhpcy5jb252ZXJ0VVRGOFN0cmluZ1RvVVRGMTZBcnJheT1yO3RoaXMuY29udmVydEJ5dGVBcnJheVRvVVRGMTZTdHJpbmc9dGhpcy5jb252ZXJ0VVRGOEFycmF5VG9VVEYxNlN0cmluZz1xO3RoaXMuY29udmVydFVURjhTdHJpbmdUb1VURjE2U3RyaW5nPWw7dGhpcy5jb252ZXJ0VVRGMTZTdHJpbmdUb0J5dGVBcnJheT10aGlzLmNvbnZlcnRVVEYxNlN0cmluZ1RvVVRGOEFycmF5PWE7dGhpcy5jb252ZXJ0VVRGMTZBcnJheVRvVVRGOFN0cmluZz0KYzt0aGlzLmNvbnZlcnRVVEYxNlN0cmluZ1RvVVRGOFN0cmluZz1tO3RoaXMuY29udmVydFVURjE2U3RyaW5nVG9CYXNlNjQ9eTt0aGlzLmNvbnZlcnRCYXNlNjRUb1VURjE2U3RyaW5nPXg7dGhpcy5mcm9tQmFzZTY0PXA7dGhpcy50b0Jhc2U2ND1uO3RoaXMuYXRvYj12O3RoaXMuYnRvYT13O3RoaXMudXRvYj1tO3RoaXMuYnRvdT1sO3RoaXMuZW5jb2RlPXk7dGhpcy5lbmNvZGVVUkk9ZnVuY3Rpb24oYSl7cmV0dXJuIHkoYSkucmVwbGFjZSgvWytcL10vZyxmdW5jdGlvbihhKXtyZXR1cm4iKyI9PT1hPyItIjoiXyJ9KS5yZXBsYWNlKC9cXD0rJC8sIiIpfTt0aGlzLmRlY29kZT1mdW5jdGlvbihhKXtyZXR1cm4geChhLnJlcGxhY2UoL1tcLV9dL2csZnVuY3Rpb24oYSl7cmV0dXJuIi0iPT09YT8iKyI6Ii8ifSkpfTtyZXR1cm4gdGhpc307cmV0dXJuIGNvcmUuQmFzZTY0fWNvcmUuQmFzZTY0PW1ha2VCYXNlNjQoKTsKY29yZS5DU1NVbml0cz1mdW5jdGlvbigpe3ZhciBnPXRoaXMsaz17ImluIjoxLGNtOjIuNTQsbW06MjUuNCxwdDo3MixwYzoxMixweDo5Nn07dGhpcy5jb252ZXJ0PWZ1bmN0aW9uKGQsYixmKXtyZXR1cm4gZCprW2ZdL2tbYl19O3RoaXMuY29udmVydE1lYXN1cmU9ZnVuY3Rpb24oZCxiKXt2YXIgZixuO2QmJmImJihmPXBhcnNlRmxvYXQoZCksbj1kLnJlcGxhY2UoZi50b1N0cmluZygpLCIiKSxmPWcuY29udmVydChmLG4sYikpO3JldHVybiBmfTt0aGlzLmdldFVuaXRzPWZ1bmN0aW9uKGQpe3JldHVybiBkLnN1YnN0cihkLmxlbmd0aC0yLGQubGVuZ3RoKX19OwooZnVuY3Rpb24oKXtmdW5jdGlvbiBnKCl7dmFyIGIsZixuLGcscixrLGUsbCxhO3ZvaWQgMD09PWQmJihmPShiPXJ1bnRpbWUuZ2V0V2luZG93KCkpJiZiLmRvY3VtZW50LGs9Zi5kb2N1bWVudEVsZW1lbnQsZT1mLmJvZHksZD17cmFuZ2VCQ1JJZ25vcmVzRWxlbWVudEJDUjohMSx1bnNjYWxlZFJhbmdlQ2xpZW50UmVjdHM6ITEsZWxlbWVudEJDUklnbm9yZXNCb2R5U2Nyb2xsOiExfSxmJiYoZz1mLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGcuc3R5bGUucG9zaXRpb249ImFic29sdXRlIixnLnN0eWxlLmxlZnQ9Ii05OTk5OXB4IixnLnN0eWxlLnRyYW5zZm9ybT0ic2NhbGUoMikiLGcuc3R5bGVbIi13ZWJraXQtdHJhbnNmb3JtIl09InNjYWxlKDIpIixyPWYuY3JlYXRlRWxlbWVudCgiZGl2IiksZy5hcHBlbmRDaGlsZChyKSxlLmFwcGVuZENoaWxkKGcpLGI9Zi5jcmVhdGVSYW5nZSgpLGIuc2VsZWN0Tm9kZShyKSxkLnJhbmdlQkNSSWdub3Jlc0VsZW1lbnRCQ1I9MD09PWIuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgsCnIuYXBwZW5kQ2hpbGQoZi5jcmVhdGVUZXh0Tm9kZSgiUmVjdCB0cmFuc2Zvcm0gdGVzdCIpKSxmPXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbj1iLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGQudW5zY2FsZWRSYW5nZUNsaWVudFJlY3RzPTI8TWF0aC5hYnMoZi5oZWlnaHQtbi5oZWlnaHQpLGcuc3R5bGUudHJhbnNmb3JtPSIiLGcuc3R5bGVbIi13ZWJraXQtdHJhbnNmb3JtIl09IiIsZj1rLnN0eWxlLm92ZXJmbG93LG49ZS5zdHlsZS5vdmVyZmxvdyxsPWUuc3R5bGUuaGVpZ2h0LGE9ZS5zY3JvbGxUb3Asay5zdHlsZS5vdmVyZmxvdz0idmlzaWJsZSIsZS5zdHlsZS5vdmVyZmxvdz0idmlzaWJsZSIsZS5zdHlsZS5oZWlnaHQ9IjIwMCUiLGUuc2Nyb2xsVG9wPWUuc2Nyb2xsSGVpZ2h0LGQuZWxlbWVudEJDUklnbm9yZXNCb2R5U2Nyb2xsPWIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIT09ci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AsZS5zY3JvbGxUb3A9YSxlLnN0eWxlLmhlaWdodD0KbCxlLnN0eWxlLm92ZXJmbG93PW4say5zdHlsZS5vdmVyZmxvdz1mLGIuZGV0YWNoKCksZS5yZW1vdmVDaGlsZChnKSxiPU9iamVjdC5rZXlzKGQpLm1hcChmdW5jdGlvbihhKXtyZXR1cm4gYSsiOiIrU3RyaW5nKGRbYV0pfSkuam9pbigiLCAiKSxydW50aW1lLmxvZygiRGV0ZWN0ZWQgYnJvd3NlciBxdWlya3MgLSAiK2IpKSk7cmV0dXJuIGR9ZnVuY3Rpb24gayhiLGQsbil7Zm9yKGI9Yj9iLmZpcnN0RWxlbWVudENoaWxkOm51bGw7Yjspe2lmKGIubG9jYWxOYW1lPT09biYmYi5uYW1lc3BhY2VVUkk9PT1kKXJldHVybiBiO2I9Yi5uZXh0RWxlbWVudFNpYmxpbmd9cmV0dXJuIG51bGx9dmFyIGQ7Y29yZS5Eb21VdGlsc0ltcGw9ZnVuY3Rpb24oKXtmdW5jdGlvbiBiKGEsYyl7Zm9yKHZhciBiPTAsZDthLnBhcmVudE5vZGUhPT1jOylydW50aW1lLmFzc2VydChudWxsIT09YS5wYXJlbnROb2RlLCJwYXJlbnQgaXMgbnVsbCIpLGE9YS5wYXJlbnROb2RlO2ZvcihkPWMuZmlyc3RDaGlsZDtkIT09CmE7KWIrPTEsZD1kLm5leHRTaWJsaW5nO3JldHVybiBifWZ1bmN0aW9uIGQoYSxjKXtyZXR1cm4gMD49YS5jb21wYXJlQm91bmRhcnlQb2ludHMoUmFuZ2UuU1RBUlRfVE9fU1RBUlQsYykmJjA8PWEuY29tcGFyZUJvdW5kYXJ5UG9pbnRzKFJhbmdlLkVORF9UT19FTkQsYyl9ZnVuY3Rpb24gbihhLGMpe3JldHVybiAwPj1hLmNvbXBhcmVCb3VuZGFyeVBvaW50cyhSYW5nZS5FTkRfVE9fU1RBUlQsYykmJjA8PWEuY29tcGFyZUJvdW5kYXJ5UG9pbnRzKFJhbmdlLlNUQVJUX1RPX0VORCxjKX1mdW5jdGlvbiBwKGEsYyl7dmFyIGI9bnVsbDthLm5vZGVUeXBlPT09Tm9kZS5URVhUX05PREUmJigwPT09YS5sZW5ndGg/KGEucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChhKSxjLm5vZGVUeXBlPT09Tm9kZS5URVhUX05PREUmJihiPWMpKTooYy5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFJiYoYS5hcHBlbmREYXRhKGMuZGF0YSksYy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGMpKSxiPWEpKTtyZXR1cm4gYn0KZnVuY3Rpb24gcihhKXtmb3IodmFyIGM9YS5wYXJlbnROb2RlO2EuZmlyc3RDaGlsZDspYy5pbnNlcnRCZWZvcmUoYS5maXJzdENoaWxkLGEpO2MucmVtb3ZlQ2hpbGQoYSk7cmV0dXJuIGN9ZnVuY3Rpb24gcShhLGMpe3ZhciBiPWEucGFyZW50Tm9kZSxkPWEuZmlyc3RDaGlsZCxsPWMoYSksZTtpZihsPT09Tm9kZUZpbHRlci5GSUxURVJfU0tJUClyZXR1cm4gYjtmb3IoO2Q7KWU9ZC5uZXh0U2libGluZyxxKGQsYyksZD1lO2ImJmw9PT1Ob2RlRmlsdGVyLkZJTFRFUl9SRUpFQ1QmJnIoYSk7cmV0dXJuIGJ9ZnVuY3Rpb24gZShhLGMpe3JldHVybiBhPT09Y3x8Qm9vbGVhbihhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGMpJk5vZGUuRE9DVU1FTlRfUE9TSVRJT05fQ09OVEFJTkVEX0JZKX1mdW5jdGlvbiBsKGEsYyl7cmV0dXJuIGcoKS51bnNjYWxlZFJhbmdlQ2xpZW50UmVjdHM/YTphL2N9ZnVuY3Rpb24gYShjLGgsYil7T2JqZWN0LmtleXMoaCkuZm9yRWFjaChmdW5jdGlvbihkKXt2YXIgbD0KZC5zcGxpdCgiOiIpLGU9bFsxXSxmPWIobFswXSksbD1oW2RdLG49dHlwZW9mIGw7Im9iamVjdCI9PT1uP09iamVjdC5rZXlzKGwpLmxlbmd0aCYmKGQ9Zj9jLmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoZixlKVswXXx8Yy5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhmLGQpOmMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoZSlbMF18fGMub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KGQpLGMuYXBwZW5kQ2hpbGQoZCksYShkLGwsYikpOmYmJihydW50aW1lLmFzc2VydCgibnVtYmVyIj09PW58fCJzdHJpbmciPT09biwiYXR0ZW1wdGluZyB0byBtYXAgdW5zdXBwb3J0ZWQgdHlwZSAnIituKyInIChrZXk6ICIrZCsiKSIpLGMuc2V0QXR0cmlidXRlTlMoZixkLFN0cmluZyhsKSkpfSl9dmFyIGM9bnVsbDt0aGlzLnNwbGl0Qm91bmRhcmllcz1mdW5jdGlvbihhKXt2YXIgYyxkPVtdLGwsZSxmO2lmKGEuc3RhcnRDb250YWluZXIubm9kZVR5cGU9PT1Ob2RlLlRFWFRfTk9ERXx8YS5lbmRDb250YWluZXIubm9kZVR5cGU9PT0KTm9kZS5URVhUX05PREUpe2w9YS5lbmRDb250YWluZXI7ZT1hLmVuZENvbnRhaW5lci5ub2RlVHlwZSE9PU5vZGUuVEVYVF9OT0RFP2EuZW5kT2Zmc2V0PT09YS5lbmRDb250YWluZXIuY2hpbGROb2Rlcy5sZW5ndGg6ITE7Zj1hLmVuZE9mZnNldDtjPWEuZW5kQ29udGFpbmVyO2lmKGY8Yy5jaGlsZE5vZGVzLmxlbmd0aClmb3IoYz1jLmNoaWxkTm9kZXMuaXRlbShmKSxmPTA7Yy5maXJzdENoaWxkOyljPWMuZmlyc3RDaGlsZDtlbHNlIGZvcig7Yy5sYXN0Q2hpbGQ7KWM9Yy5sYXN0Q2hpbGQsZj1jLm5vZGVUeXBlPT09Tm9kZS5URVhUX05PREU/Yy50ZXh0Q29udGVudC5sZW5ndGg6Yy5jaGlsZE5vZGVzLmxlbmd0aDtjPT09bCYmKGw9bnVsbCk7YS5zZXRFbmQoYyxmKTtmPWEuZW5kQ29udGFpbmVyOzAhPT1hLmVuZE9mZnNldCYmZi5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFJiYoYz1mLGEuZW5kT2Zmc2V0IT09Yy5sZW5ndGgmJihkLnB1c2goYy5zcGxpdFRleHQoYS5lbmRPZmZzZXQpKSwKZC5wdXNoKGMpKSk7Zj1hLnN0YXJ0Q29udGFpbmVyOzAhPT1hLnN0YXJ0T2Zmc2V0JiZmLm5vZGVUeXBlPT09Tm9kZS5URVhUX05PREUmJihjPWYsYS5zdGFydE9mZnNldCE9PWMubGVuZ3RoJiYoZj1jLnNwbGl0VGV4dChhLnN0YXJ0T2Zmc2V0KSxkLnB1c2goYyksZC5wdXNoKGYpLGEuc2V0U3RhcnQoZiwwKSkpO2lmKG51bGwhPT1sKXtmb3IoZj1hLmVuZENvbnRhaW5lcjtmLnBhcmVudE5vZGUmJmYucGFyZW50Tm9kZSE9PWw7KWY9Zi5wYXJlbnROb2RlO2U9ZT9sLmNoaWxkTm9kZXMubGVuZ3RoOmIoZixsKTthLnNldEVuZChsLGUpfX1yZXR1cm4gZH07dGhpcy5jb250YWluc1JhbmdlPWQ7dGhpcy5yYW5nZXNJbnRlcnNlY3Q9bjt0aGlzLnJhbmdlSW50ZXJzZWN0aW9uPWZ1bmN0aW9uKGEsYyl7dmFyIGI7bihhLGMpJiYoYj1hLmNsb25lUmFuZ2UoKSwtMT09PWEuY29tcGFyZUJvdW5kYXJ5UG9pbnRzKFJhbmdlLlNUQVJUX1RPX1NUQVJULGMpJiZiLnNldFN0YXJ0KGMuc3RhcnRDb250YWluZXIsCmMuc3RhcnRPZmZzZXQpLDE9PT1hLmNvbXBhcmVCb3VuZGFyeVBvaW50cyhSYW5nZS5FTkRfVE9fRU5ELGMpJiZiLnNldEVuZChjLmVuZENvbnRhaW5lcixjLmVuZE9mZnNldCkpO3JldHVybiBifTt0aGlzLmdldE5vZGVzSW5SYW5nZT1mdW5jdGlvbihhLGMsYil7dmFyIGQ9W10sbD1hLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyLGw9bC5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFP2wucGFyZW50Tm9kZTpsO2I9YS5zdGFydENvbnRhaW5lci5vd25lckRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIobCxiLGMsITEpO3ZhciBlLGY7YS5lbmRDb250YWluZXIuY2hpbGROb2Rlc1thLmVuZE9mZnNldC0xXT8oZT1hLmVuZENvbnRhaW5lci5jaGlsZE5vZGVzW2EuZW5kT2Zmc2V0LTFdLGY9Tm9kZS5ET0NVTUVOVF9QT1NJVElPTl9QUkVDRURJTkd8Tm9kZS5ET0NVTUVOVF9QT1NJVElPTl9DT05UQUlORURfQlkpOihlPWEuZW5kQ29udGFpbmVyLGY9Tm9kZS5ET0NVTUVOVF9QT1NJVElPTl9QUkVDRURJTkcpOwppZihhLnN0YXJ0Q29udGFpbmVyLmNoaWxkTm9kZXNbYS5zdGFydE9mZnNldF0pYT1hLnN0YXJ0Q29udGFpbmVyLmNoaWxkTm9kZXNbYS5zdGFydE9mZnNldF0sYi5jdXJyZW50Tm9kZT1hO2Vsc2V7dmFyIG49YS5zdGFydENvbnRhaW5lcjthLnN0YXJ0T2Zmc2V0PT09KG4ubm9kZVR5cGU9PT1Ob2RlLlRFWFRfTk9ERT9uLmxlbmd0aDpuLmNoaWxkTm9kZXMubGVuZ3RoKT8oYT1hLnN0YXJ0Q29udGFpbmVyLGIuY3VycmVudE5vZGU9YSxiLmxhc3RDaGlsZCgpLGE9Yi5uZXh0Tm9kZSgpKTooYT1hLnN0YXJ0Q29udGFpbmVyLGIuY3VycmVudE5vZGU9YSl9aWYoYSl7YT1iLmN1cnJlbnROb2RlO2lmKGEhPT1sKWZvcihhPWEucGFyZW50Tm9kZTthJiZhIT09bDspYyhhKT09PU5vZGVGaWx0ZXIuRklMVEVSX1JFSkVDVCYmKGIuY3VycmVudE5vZGU9YSksYT1hLnBhcmVudE5vZGU7YT1iLmN1cnJlbnROb2RlO3N3aXRjaChjKGEpKXtjYXNlIE5vZGVGaWx0ZXIuRklMVEVSX1JFSkVDVDpmb3IoYT0KYi5uZXh0U2libGluZygpOyFhJiZiLnBhcmVudE5vZGUoKTspYT1iLm5leHRTaWJsaW5nKCk7YnJlYWs7Y2FzZSBOb2RlRmlsdGVyLkZJTFRFUl9TS0lQOmE9Yi5uZXh0Tm9kZSgpfWZvcig7YTspe2M9ZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihhKTtpZigwIT09YyYmMD09PShjJmYpKWJyZWFrO2QucHVzaChhKTthPWIubmV4dE5vZGUoKX19cmV0dXJuIGR9O3RoaXMubm9ybWFsaXplVGV4dE5vZGVzPWZ1bmN0aW9uKGEpe2EmJmEubmV4dFNpYmxpbmcmJihhPXAoYSxhLm5leHRTaWJsaW5nKSk7YSYmYS5wcmV2aW91c1NpYmxpbmcmJnAoYS5wcmV2aW91c1NpYmxpbmcsYSl9O3RoaXMucmFuZ2VDb250YWluc05vZGU9ZnVuY3Rpb24oYSxjKXt2YXIgYj1jLm93bmVyRG9jdW1lbnQuY3JlYXRlUmFuZ2UoKSxsPWMub3duZXJEb2N1bWVudC5jcmVhdGVSYW5nZSgpLGU7Yi5zZXRTdGFydChhLnN0YXJ0Q29udGFpbmVyLGEuc3RhcnRPZmZzZXQpO2Iuc2V0RW5kKGEuZW5kQ29udGFpbmVyLAphLmVuZE9mZnNldCk7bC5zZWxlY3ROb2RlQ29udGVudHMoYyk7ZT1kKGIsbCk7Yi5kZXRhY2goKTtsLmRldGFjaCgpO3JldHVybiBlfTt0aGlzLm1lcmdlSW50b1BhcmVudD1yO3RoaXMucmVtb3ZlVW53YW50ZWROb2Rlcz1xO3RoaXMucmVtb3ZlQWxsQ2hpbGROb2Rlcz1mdW5jdGlvbihhKXtmb3IoO2EuZmlyc3RDaGlsZDspYS5yZW1vdmVDaGlsZChhLmZpcnN0Q2hpbGQpfTt0aGlzLmdldEVsZW1lbnRzQnlUYWdOYW1lTlM9ZnVuY3Rpb24oYSxjLGIpe3ZhciBkPVtdO2E9YS5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKGMsYik7ZC5sZW5ndGg9Yj1hLmxlbmd0aDtmb3IoYz0wO2M8YjtjKz0xKWRbY109YS5pdGVtKGMpO3JldHVybiBkfTt0aGlzLmdldEVsZW1lbnRzQnlUYWdOYW1lPWZ1bmN0aW9uKGEsYyl7dmFyIGI9W10sZCxsLGU7ZD1hLmdldEVsZW1lbnRzQnlUYWdOYW1lKGMpO2IubGVuZ3RoPWU9ZC5sZW5ndGg7Zm9yKGw9MDtsPGU7bCs9MSliW2xdPWQuaXRlbShsKTtyZXR1cm4gYn07CnRoaXMuY29udGFpbnNOb2RlPWZ1bmN0aW9uKGEsYyl7cmV0dXJuIGE9PT1jfHxhLmNvbnRhaW5zKGMpfTt0aGlzLmNvbXBhcmVQb2ludHM9ZnVuY3Rpb24oYSxjLGQsbCl7aWYoYT09PWQpcmV0dXJuIGwtYzt2YXIgZT1hLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGQpOzI9PT1lP2U9LTE6ND09PWU/ZT0xOjEwPT09ZT8oYz1iKGEsZCksZT1jPGw/MTotMSk6KGw9YihkLGEpLGU9bDxjPy0xOjEpO3JldHVybiBlfTt0aGlzLmFkYXB0UmFuZ2VEaWZmZXJlbmNlVG9ab29tTGV2ZWw9bDt0aGlzLnRyYW5zbGF0ZVJlY3Q9ZnVuY3Rpb24oYSxjLGIpe3JldHVybnt0b3A6bChhLnRvcC1jLnRvcCxiKSxsZWZ0OmwoYS5sZWZ0LWMubGVmdCxiKSxib3R0b206bChhLmJvdHRvbS1jLnRvcCxiKSxyaWdodDpsKGEucmlnaHQtYy5sZWZ0LGIpLHdpZHRoOmwoYS53aWR0aCxiKSxoZWlnaHQ6bChhLmhlaWdodCxiKX19O3RoaXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0PWZ1bmN0aW9uKGEpe3ZhciBiPQphLm93bmVyRG9jdW1lbnQsZD1nKCksbD1iLmJvZHk7aWYoKCExPT09ZC51bnNjYWxlZFJhbmdlQ2xpZW50UmVjdHN8fGQucmFuZ2VCQ1JJZ25vcmVzRWxlbWVudEJDUikmJmEubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSlyZXR1cm4gYT1hLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGQuZWxlbWVudEJDUklnbm9yZXNCb2R5U2Nyb2xsP3tsZWZ0OmEubGVmdCtsLnNjcm9sbExlZnQscmlnaHQ6YS5yaWdodCtsLnNjcm9sbExlZnQsdG9wOmEudG9wK2wuc2Nyb2xsVG9wLGJvdHRvbTphLmJvdHRvbStsLnNjcm9sbFRvcCx3aWR0aDphLndpZHRoLGhlaWdodDphLmhlaWdodH06YTt2YXIgZTtjP2U9YzpjPWU9Yi5jcmVhdGVSYW5nZSgpO2Q9ZTtkLnNlbGVjdE5vZGUoYSk7cmV0dXJuIGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9O3RoaXMubWFwS2V5VmFsT2JqT250b05vZGU9ZnVuY3Rpb24oYSxjLGIpe09iamVjdC5rZXlzKGMpLmZvckVhY2goZnVuY3Rpb24oZCl7dmFyIGw9ZC5zcGxpdCgiOiIpLAplPWxbMV0sbD1iKGxbMF0pLGY9Y1tkXTtsPyhlPWEuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhsLGUpWzBdLGV8fChlPWEub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobCxkKSxhLmFwcGVuZENoaWxkKGUpKSxlLnRleHRDb250ZW50PWYpOnJ1bnRpbWUubG9nKCJLZXkgaWdub3JlZDogIitkKX0pfTt0aGlzLnJlbW92ZUtleUVsZW1lbnRzRnJvbU5vZGU9ZnVuY3Rpb24oYSxjLGIpe2MuZm9yRWFjaChmdW5jdGlvbihjKXt2YXIgZD1jLnNwbGl0KCI6IiksaD1kWzFdOyhkPWIoZFswXSkpPyhoPWEuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhkLGgpWzBdKT9oLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoaCk6cnVudGltZS5sb2coIkVsZW1lbnQgZm9yICIrYysiIG5vdCBmb3VuZC4iKTpydW50aW1lLmxvZygiUHJvcGVydHkgTmFtZSBpZ25vcmVkOiAiK2MpfSl9O3RoaXMuZ2V0S2V5VmFsUmVwcmVzZW50YXRpb25PZk5vZGU9ZnVuY3Rpb24oYSxjKXtmb3IodmFyIGI9e30sZD1hLmZpcnN0RWxlbWVudENoaWxkLApsO2Q7KXtpZihsPWMoZC5uYW1lc3BhY2VVUkkpKWJbbCsiOiIrZC5sb2NhbE5hbWVdPWQudGV4dENvbnRlbnQ7ZD1kLm5leHRFbGVtZW50U2libGluZ31yZXR1cm4gYn07dGhpcy5tYXBPYmpPbnRvTm9kZT1hO3RoaXMuY2xvbmVFdmVudD1mdW5jdGlvbihhKXt2YXIgYz1PYmplY3QuY3JlYXRlKG51bGwpO09iamVjdC5rZXlzKGEuY29uc3RydWN0b3IucHJvdG90eXBlKS5mb3JFYWNoKGZ1bmN0aW9uKGIpe2NbYl09YVtiXX0pO2MucHJvdG90eXBlPWEuY29uc3RydWN0b3IucHJvdG90eXBlO3JldHVybiBjfTt0aGlzLmdldERpcmVjdENoaWxkPWs7KGZ1bmN0aW9uKGEpe3ZhciBjLGI7Yj1ydW50aW1lLmdldFdpbmRvdygpO251bGwhPT1iJiYoYz1iLm5hdmlnYXRvci5hcHBWZXJzaW9uLnRvTG93ZXJDYXNlKCksYj0tMT09PWMuaW5kZXhPZigiY2hyb21lIikmJigtMSE9PWMuaW5kZXhPZigiYXBwbGV3ZWJraXQiKXx8LTEhPT1jLmluZGV4T2YoInNhZmFyaSIpKSxjPS0xIT09Yy5pbmRleE9mKCJtc2llIil8fAotMSE9PWMuaW5kZXhPZigidHJpZGVudCIpLGJ8fGMpJiYoYS5jb250YWluc05vZGU9ZSl9KSh0aGlzKX07Y29yZS5Eb21VdGlscz1uZXcgY29yZS5Eb21VdGlsc0ltcGx9KSgpOwpjb3JlLkN1cnNvcj1mdW5jdGlvbihnLGspe2Z1bmN0aW9uIGQoYSl7YS5wYXJlbnROb2RlJiYoci5wdXNoKGEucHJldmlvdXNTaWJsaW5nKSxyLnB1c2goYS5uZXh0U2libGluZyksYS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGEpKX1mdW5jdGlvbiBiKGEsYyxiKXtpZihjLm5vZGVUeXBlPT09Tm9kZS5URVhUX05PREUpe3J1bnRpbWUuYXNzZXJ0KEJvb2xlYW4oYyksInB1dEN1cnNvckludG9UZXh0Tm9kZTogaW52YWxpZCBjb250YWluZXIiKTt2YXIgZD1jLnBhcmVudE5vZGU7cnVudGltZS5hc3NlcnQoQm9vbGVhbihkKSwicHV0Q3Vyc29ySW50b1RleHROb2RlOiBjb250YWluZXIgd2l0aG91dCBwYXJlbnQiKTtydW50aW1lLmFzc2VydCgwPD1iJiZiPD1jLmxlbmd0aCwicHV0Q3Vyc29ySW50b1RleHROb2RlOiBvZmZzZXQgaXMgb3V0IG9mIGJvdW5kcyIpOzA9PT1iP2QuaW5zZXJ0QmVmb3JlKGEsYyk6KGIhPT1jLmxlbmd0aCYmYy5zcGxpdFRleHQoYiksZC5pbnNlcnRCZWZvcmUoYSwKYy5uZXh0U2libGluZykpfWVsc2UgYy5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFJiZjLmluc2VydEJlZm9yZShhLGMuY2hpbGROb2Rlcy5pdGVtKGIpKTtyLnB1c2goYS5wcmV2aW91c1NpYmxpbmcpO3IucHVzaChhLm5leHRTaWJsaW5nKX12YXIgZj1nLmNyZWF0ZUVsZW1lbnROUygidXJuOndlYm9kZjpuYW1lczpjdXJzb3IiLCJjdXJzb3IiKSxuPWcuY3JlYXRlRWxlbWVudE5TKCJ1cm46d2Vib2RmOm5hbWVzOmN1cnNvciIsImFuY2hvciIpLHAscj1bXSxxPWcuY3JlYXRlUmFuZ2UoKSxlLGw9Y29yZS5Eb21VdGlsczt0aGlzLmdldE5vZGU9ZnVuY3Rpb24oKXtyZXR1cm4gZn07dGhpcy5nZXRBbmNob3JOb2RlPWZ1bmN0aW9uKCl7cmV0dXJuIG4ucGFyZW50Tm9kZT9uOmZ9O3RoaXMuZ2V0U2VsZWN0ZWRSYW5nZT1mdW5jdGlvbigpe2U/KHEuc2V0U3RhcnRCZWZvcmUoZikscS5jb2xsYXBzZSghMCkpOihxLnNldFN0YXJ0QWZ0ZXIocD9uOmYpLHEuc2V0RW5kQmVmb3JlKHA/CmY6bikpO3JldHVybiBxfTt0aGlzLnNldFNlbGVjdGVkUmFuZ2U9ZnVuY3Rpb24oYSxjKXtxJiZxIT09YSYmcS5kZXRhY2goKTtxPWE7cD0hMSE9PWM7KGU9YS5jb2xsYXBzZWQpPyhkKG4pLGQoZiksYihmLGEuc3RhcnRDb250YWluZXIsYS5zdGFydE9mZnNldCkpOihkKG4pLGQoZiksYihwP2Y6bixhLmVuZENvbnRhaW5lcixhLmVuZE9mZnNldCksYihwP246ZixhLnN0YXJ0Q29udGFpbmVyLGEuc3RhcnRPZmZzZXQpKTtyLmZvckVhY2gobC5ub3JtYWxpemVUZXh0Tm9kZXMpO3IubGVuZ3RoPTB9O3RoaXMuaGFzRm9yd2FyZFNlbGVjdGlvbj1mdW5jdGlvbigpe3JldHVybiBwfTt0aGlzLnJlbW92ZT1mdW5jdGlvbigpe2QoZik7ci5mb3JFYWNoKGwubm9ybWFsaXplVGV4dE5vZGVzKTtyLmxlbmd0aD0wfTtmLnNldEF0dHJpYnV0ZU5TKCJ1cm46d2Vib2RmOm5hbWVzOmN1cnNvciIsIm1lbWJlcklkIixrKTtuLnNldEF0dHJpYnV0ZU5TKCJ1cm46d2Vib2RmOm5hbWVzOmN1cnNvciIsIm1lbWJlcklkIiwKayl9O2NvcmUuRGVzdHJveWFibGU9ZnVuY3Rpb24oKXt9O2NvcmUuRGVzdHJveWFibGUucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oZyl7fTtjb3JlLkV2ZW50U291cmNlPWZ1bmN0aW9uKCl7fTtjb3JlLkV2ZW50U291cmNlLnByb3RvdHlwZS5zdWJzY3JpYmU9ZnVuY3Rpb24oZyxrKXt9O2NvcmUuRXZlbnRTb3VyY2UucHJvdG90eXBlLnVuc3Vic2NyaWJlPWZ1bmN0aW9uKGcsayl7fTsKY29yZS5FdmVudE5vdGlmaWVyPWZ1bmN0aW9uKGcpe2Z1bmN0aW9uIGsoYil7cnVudGltZS5hc3NlcnQoIWQuaGFzT3duUHJvcGVydHkoYiksJ0R1cGxpY2F0ZWQgZXZlbnQgaWRzOiAiJytiKyciIHJlZ2lzdGVyZWQgbW9yZSB0aGFuIG9uY2UuJyk7ZFtiXT1bXX12YXIgZD17fTt0aGlzLmVtaXQ9ZnVuY3Rpb24oYixmKXt2YXIgbixnO3J1bnRpbWUuYXNzZXJ0KGQuaGFzT3duUHJvcGVydHkoYiksJ3Vua25vd24gZXZlbnQgZmlyZWQgIicrYisnIicpO2c9ZFtiXTtmb3Iobj0wO248Zy5sZW5ndGg7bis9MSlnW25dKGYpfTt0aGlzLnN1YnNjcmliZT1mdW5jdGlvbihiLGYpe3J1bnRpbWUuYXNzZXJ0KGQuaGFzT3duUHJvcGVydHkoYiksJ3RyaWVkIHRvIHN1YnNjcmliZSB0byB1bmtub3duIGV2ZW50ICInK2IrJyInKTtkW2JdLnB1c2goZil9O3RoaXMudW5zdWJzY3JpYmU9ZnVuY3Rpb24oYixmKXt2YXIgbjtydW50aW1lLmFzc2VydChkLmhhc093blByb3BlcnR5KGIpLCd0cmllZCB0byB1bnN1YnNjcmliZSBmcm9tIHVua25vd24gZXZlbnQgIicrCmIrJyInKTtuPWRbYl0uaW5kZXhPZihmKTtydW50aW1lLmFzc2VydCgtMSE9PW4sJ3RyaWVkIHRvIHVuc3Vic2NyaWJlIHVua25vd24gY2FsbGJhY2sgZnJvbSBldmVudCAiJytiKyciJyk7LTEhPT1uJiZkW2JdLnNwbGljZShuLDEpfTt0aGlzLnJlZ2lzdGVyPWs7ZyYmZy5mb3JFYWNoKGspfTsKY29yZS5TY2hlZHVsZWRUYXNrPWZ1bmN0aW9uKGcsayxkKXtmdW5jdGlvbiBiKCl7cCYmKGQobikscD0hMSl9ZnVuY3Rpb24gZigpe2IoKTtnLmFwcGx5KHZvaWQgMCxyKTtyPW51bGx9dmFyIG4scD0hMSxyPVtdLHE9ITE7dGhpcy50cmlnZ2VyPWZ1bmN0aW9uKCl7cnVudGltZS5hc3NlcnQoITE9PT1xLCJDYW4ndCB0cmlnZ2VyIGRlc3Ryb3llZCBTY2hlZHVsZWRUYXNrIGluc3RhbmNlIik7cj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO3B8fChwPSEwLG49ayhmKSl9O3RoaXMudHJpZ2dlckltbWVkaWF0ZT1mdW5jdGlvbigpe3J1bnRpbWUuYXNzZXJ0KCExPT09cSwiQ2FuJ3QgdHJpZ2dlciBkZXN0cm95ZWQgU2NoZWR1bGVkVGFzayBpbnN0YW5jZSIpO3I9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtmKCl9O3RoaXMucHJvY2Vzc1JlcXVlc3RzPWZ1bmN0aW9uKCl7cCYmZigpfTt0aGlzLmNhbmNlbD1iO3RoaXMucmVzdGFydD1mdW5jdGlvbigpe3J1bnRpbWUuYXNzZXJ0KCExPT09CnEsIkNhbid0IHRyaWdnZXIgZGVzdHJveWVkIFNjaGVkdWxlZFRhc2sgaW5zdGFuY2UiKTtiKCk7cD0hMDtuPWsoZil9O3RoaXMuZGVzdHJveT1mdW5jdGlvbihkKXtiKCk7cT0hMDtkKCl9fTsKKGZ1bmN0aW9uKCl7dmFyIGc7Y29yZS5UYXNrPXt9O2NvcmUuVGFzay5TVVBQUkVTU19NQU5VQUxfUFJPQ0VTU0lORz0hMTtjb3JlLlRhc2sucHJvY2Vzc1Rhc2tzPWZ1bmN0aW9uKCl7Y29yZS5UYXNrLlNVUFBSRVNTX01BTlVBTF9QUk9DRVNTSU5HfHxnLnBlcmZvcm1SZWRyYXcoKX07Y29yZS5UYXNrLmNyZWF0ZVJlZHJhd1Rhc2s9ZnVuY3Rpb24oayl7cmV0dXJuIG5ldyBjb3JlLlNjaGVkdWxlZFRhc2soayxnLnJlcXVlc3RSZWRyYXdUYXNrLGcuY2FuY2VsUmVkcmF3VGFzayl9O2NvcmUuVGFzay5jcmVhdGVUaW1lb3V0VGFzaz1mdW5jdGlvbihnLGQpe3JldHVybiBuZXcgY29yZS5TY2hlZHVsZWRUYXNrKGcsZnVuY3Rpb24oYil7cmV0dXJuIHJ1bnRpbWUuc2V0VGltZW91dChiLGQpfSxydW50aW1lLmNsZWFyVGltZW91dCl9O2c9bmV3IGZ1bmN0aW9uKCl7dmFyIGc9e307dGhpcy5yZXF1ZXN0UmVkcmF3VGFzaz1mdW5jdGlvbihkKXt2YXIgYj1ydW50aW1lLnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpe2QoKTsKZGVsZXRlIGdbYl19KTtnW2JdPWQ7cmV0dXJuIGJ9O3RoaXMucGVyZm9ybVJlZHJhdz1mdW5jdGlvbigpe09iamVjdC5rZXlzKGcpLmZvckVhY2goZnVuY3Rpb24oZCl7Z1tkXSgpO3J1bnRpbWUuY2FuY2VsQW5pbWF0aW9uRnJhbWUocGFyc2VJbnQoZCwxMCkpfSk7Zz17fX07dGhpcy5jYW5jZWxSZWRyYXdUYXNrPWZ1bmN0aW9uKGQpe3J1bnRpbWUuY2FuY2VsQW5pbWF0aW9uRnJhbWUoZCk7ZGVsZXRlIGdbZF19fX0pKCk7CmNvcmUuRXZlbnRTdWJzY3JpcHRpb25zPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZyhiLGYsbil7Yi5zdWJzY3JpYmUoZixuKTtkLnB1c2goe2V2ZW50U291cmNlOmIsZXZlbnRpZDpmLGNhbGxiYWNrOm59KX1mdW5jdGlvbiBrKCl7dmFyIG49W107ZC5mb3JFYWNoKGZ1bmN0aW9uKGIpe2IuZXZlbnRTb3VyY2UudW5zdWJzY3JpYmUoYi5ldmVudGlkLGIuY2FsbGJhY2spfSk7ZC5sZW5ndGg9MDtPYmplY3Qua2V5cyhmKS5mb3JFYWNoKGZ1bmN0aW9uKGIpe2ZbYl0uZm9yRWFjaChmdW5jdGlvbihiKXtuLnB1c2goYi50YXNrLmRlc3Ryb3kpfSk7ZGVsZXRlIGZbYl19KTtjb3JlLkFzeW5jLmRlc3Ryb3lBbGwobixmdW5jdGlvbigpe30pO2I9bmV3IGNvcmUuRXZlbnROb3RpZmllcn12YXIgZD1bXSxiPW5ldyBjb3JlLkV2ZW50Tm90aWZpZXIsZj17fSxuPTA7dGhpcy5hZGRTdWJzY3JpcHRpb249Zzt0aGlzLmFkZEZyYW1lU3Vic2NyaXB0aW9uPWZ1bmN0aW9uKGQsayxxKXt2YXIgZSxsLGEsYzsKZi5oYXNPd25Qcm9wZXJ0eShrKXx8KGZba109W10pO2E9ZltrXTtmb3IoYz0wO2M8YS5sZW5ndGg7Yys9MSlpZihhW2NdLmV2ZW50U291cmNlPT09ZCl7ZT1hW2NdO2JyZWFrfWV8fChsPSJzIituLG4rPTEsYi5yZWdpc3RlcihsKSxlPXtmcmFtZUV2ZW50SWQ6bCxldmVudFNvdXJjZTpkLHRhc2s6Y29yZS5UYXNrLmNyZWF0ZVJlZHJhd1Rhc2soZnVuY3Rpb24oKXtiLmVtaXQobCx2b2lkIDApfSl9LGEucHVzaChlKSxnKGQsayxlLnRhc2sudHJpZ2dlcikpO2Iuc3Vic2NyaWJlKGUuZnJhbWVFdmVudElkLHEpfTt0aGlzLnVuc3Vic2NyaWJlQWxsPWs7dGhpcy5kZXN0cm95PWZ1bmN0aW9uKGIpe2soKTtiKCl9fTtjb3JlLkxhenlQcm9wZXJ0eT1mdW5jdGlvbihnKXt2YXIgayxkPSExO3RoaXMudmFsdWU9ZnVuY3Rpb24oKXtkfHwoaz1nKCksZD0hMCk7cmV0dXJuIGt9O3RoaXMucmVzZXQ9ZnVuY3Rpb24oKXtkPSExfX07CmNvcmUuTG9vcFdhdGNoRG9nPWZ1bmN0aW9uKGcsayl7dmFyIGQ9RGF0ZS5ub3coKSxiPTA7dGhpcy5jaGVjaz1mdW5jdGlvbigpe3ZhciBmO2lmKGcmJihmPURhdGUubm93KCksZi1kPmcpKXRocm93IHJ1bnRpbWUubG9nKCJhbGVydCIsIndhdGNoZG9nIHRpbWVvdXQiKSwidGltZW91dCEiO2lmKDA8ayYmKGIrPTEsYj5rKSl0aHJvdyBydW50aW1lLmxvZygiYWxlcnQiLCJ3YXRjaGRvZyBsb29wIG92ZXJmbG93IiksImxvb3Agb3ZlcmZsb3ciO319O2NvcmUuTm9kZUZpbHRlckNoYWluPWZ1bmN0aW9uKGcpe3ZhciBrPU5vZGVGaWx0ZXIuRklMVEVSX1JFSkVDVCxkPU5vZGVGaWx0ZXIuRklMVEVSX0FDQ0VQVDt0aGlzLmFjY2VwdE5vZGU9ZnVuY3Rpb24oYil7dmFyIGY7Zm9yKGY9MDtmPGcubGVuZ3RoO2YrPTEpaWYoZ1tmXS5hY2NlcHROb2RlKGIpPT09aylyZXR1cm4gaztyZXR1cm4gZH19Owpjb3JlLlBvc2l0aW9uSXRlcmF0b3I9ZnVuY3Rpb24oZyxrLGQsYil7ZnVuY3Rpb24gZigpe3RoaXMuYWNjZXB0Tm9kZT1mdW5jdGlvbihhKXtyZXR1cm4hYXx8YS5ub2RlVHlwZT09PW0mJjA9PT1hLmxlbmd0aD94Onl9fWZ1bmN0aW9uIG4oYSl7dGhpcy5hY2NlcHROb2RlPWZ1bmN0aW9uKGMpe3JldHVybiFjfHxjLm5vZGVUeXBlPT09bSYmMD09PWMubGVuZ3RoP3g6YS5hY2NlcHROb2RlKGMpfX1mdW5jdGlvbiBwKCl7dmFyIGM9bC5jdXJyZW50Tm9kZSxiPWMubm9kZVR5cGU7YT1iPT09bT9jLmxlbmd0aC0xOmI9PT1oPzE6MH1mdW5jdGlvbiByKCl7aWYobnVsbD09PWwucHJldmlvdXNTaWJsaW5nKCkpe2lmKCFsLnBhcmVudE5vZGUoKXx8bC5jdXJyZW50Tm9kZT09PWcpcmV0dXJuIGwuZmlyc3RDaGlsZCgpLCExO2E9MH1lbHNlIHAoKTtyZXR1cm4hMH1mdW5jdGlvbiBxKCl7dmFyIGI9bC5jdXJyZW50Tm9kZSxkO2Q9YyhiKTtpZihiIT09Zylmb3IoYj1iLnBhcmVudE5vZGU7YiYmCmIhPT1nOyljKGIpPT09eCYmKGwuY3VycmVudE5vZGU9YixkPXgpLGI9Yi5wYXJlbnROb2RlO2Q9PT14PyhhPWwuY3VycmVudE5vZGUubm9kZVR5cGU9PT1tP2IubGVuZ3RoOjEsYj1lLm5leHRQb3NpdGlvbigpKTpiPWQ9PT15PyEwOmUubmV4dFBvc2l0aW9uKCk7YiYmcnVudGltZS5hc3NlcnQoYyhsLmN1cnJlbnROb2RlKT09PXksIm1vdmVUb0FjY2VwdGVkTm9kZSBkaWQgbm90IHJlc3VsdCBpbiB3YWxrZXIgYmVpbmcgb24gYW4gYWNjZXB0ZWQgbm9kZSIpO3JldHVybiBifXZhciBlPXRoaXMsbCxhLGMsbT1Ob2RlLlRFWFRfTk9ERSxoPU5vZGUuRUxFTUVOVF9OT0RFLHk9Tm9kZUZpbHRlci5GSUxURVJfQUNDRVBULHg9Tm9kZUZpbHRlci5GSUxURVJfUkVKRUNUO3RoaXMubmV4dFBvc2l0aW9uPWZ1bmN0aW9uKCl7dmFyIGM9bC5jdXJyZW50Tm9kZSxiPWMubm9kZVR5cGU7aWYoYz09PWcpcmV0dXJuITE7aWYoMD09PWEmJmI9PT1oKW51bGw9PT1sLmZpcnN0Q2hpbGQoKSYmKGE9MSk7CmVsc2UgaWYoYj09PW0mJmErMTxjLmxlbmd0aClhKz0xO2Vsc2UgaWYobnVsbCE9PWwubmV4dFNpYmxpbmcoKSlhPTA7ZWxzZSBpZihsLnBhcmVudE5vZGUoKSlhPTE7ZWxzZSByZXR1cm4hMTtyZXR1cm4hMH07dGhpcy5wcmV2aW91c1Bvc2l0aW9uPWZ1bmN0aW9uKCl7dmFyIGM9ITAsYj1sLmN1cnJlbnROb2RlOzA9PT1hP2M9cigpOmIubm9kZVR5cGU9PT1tPy0tYTpudWxsIT09bC5sYXN0Q2hpbGQoKT9wKCk6Yj09PWc/Yz0hMTphPTA7cmV0dXJuIGN9O3RoaXMucHJldmlvdXNOb2RlPXI7dGhpcy5jb250YWluZXI9ZnVuY3Rpb24oKXt2YXIgYz1sLmN1cnJlbnROb2RlLGI9Yy5ub2RlVHlwZTswPT09YSYmYiE9PW0mJihjPWMucGFyZW50Tm9kZSk7cmV0dXJuIGN9O3RoaXMucmlnaHROb2RlPWZ1bmN0aW9uKCl7dmFyIGI9bC5jdXJyZW50Tm9kZSxkPWIubm9kZVR5cGU7aWYoZD09PW0mJmE9PT1iLmxlbmd0aClmb3IoYj1iLm5leHRTaWJsaW5nO2ImJmMoYikhPT15OyliPWIubmV4dFNpYmxpbmc7CmVsc2UgZD09PWgmJjE9PT1hJiYoYj1udWxsKTtyZXR1cm4gYn07dGhpcy5sZWZ0Tm9kZT1mdW5jdGlvbigpe3ZhciBiPWwuY3VycmVudE5vZGU7aWYoMD09PWEpZm9yKGI9Yi5wcmV2aW91c1NpYmxpbmc7YiYmYyhiKSE9PXk7KWI9Yi5wcmV2aW91c1NpYmxpbmc7ZWxzZSBpZihiLm5vZGVUeXBlPT09aClmb3IoYj1iLmxhc3RDaGlsZDtiJiZjKGIpIT09eTspYj1iLnByZXZpb3VzU2libGluZztyZXR1cm4gYn07dGhpcy5nZXRDdXJyZW50Tm9kZT1mdW5jdGlvbigpe3JldHVybiBsLmN1cnJlbnROb2RlfTt0aGlzLnVuZmlsdGVyZWREb21PZmZzZXQ9ZnVuY3Rpb24oKXtpZihsLmN1cnJlbnROb2RlLm5vZGVUeXBlPT09bSlyZXR1cm4gYTtmb3IodmFyIGM9MCxiPWwuY3VycmVudE5vZGUsYj0xPT09YT9iLmxhc3RDaGlsZDpiLnByZXZpb3VzU2libGluZztiOyljKz0xLGI9Yi5wcmV2aW91c1NpYmxpbmc7cmV0dXJuIGN9O3RoaXMuZ2V0UHJldmlvdXNTaWJsaW5nPWZ1bmN0aW9uKCl7dmFyIGE9CmwuY3VycmVudE5vZGUsYz1sLnByZXZpb3VzU2libGluZygpO2wuY3VycmVudE5vZGU9YTtyZXR1cm4gY307dGhpcy5nZXROZXh0U2libGluZz1mdW5jdGlvbigpe3ZhciBhPWwuY3VycmVudE5vZGUsYz1sLm5leHRTaWJsaW5nKCk7bC5jdXJyZW50Tm9kZT1hO3JldHVybiBjfTt0aGlzLnNldFBvc2l0aW9uQmVmb3JlRWxlbWVudD1mdW5jdGlvbihjKXtydW50aW1lLmFzc2VydChCb29sZWFuKGMpLCJzZXRQb3NpdGlvbkJlZm9yZUVsZW1lbnQgY2FsbGVkIHdpdGhvdXQgZWxlbWVudCIpO2wuY3VycmVudE5vZGU9YzthPTA7cmV0dXJuIHEoKX07dGhpcy5zZXRVbmZpbHRlcmVkUG9zaXRpb249ZnVuY3Rpb24oYyxiKXtydW50aW1lLmFzc2VydChCb29sZWFuKGMpLCJQb3NpdGlvbkl0ZXJhdG9yLnNldFVuZmlsdGVyZWRQb3NpdGlvbiBjYWxsZWQgd2l0aG91dCBjb250YWluZXIiKTtsLmN1cnJlbnROb2RlPWM7Yy5ub2RlVHlwZT09PW0/KGE9YixydW50aW1lLmFzc2VydChiPD1jLmxlbmd0aCwKIkVycm9yIGluIHNldFBvc2l0aW9uOiAiK2IrIiA+ICIrYy5sZW5ndGgpLHJ1bnRpbWUuYXNzZXJ0KDA8PWIsIkVycm9yIGluIHNldFBvc2l0aW9uOiAiK2IrIiA8IDAiKSxiPT09Yy5sZW5ndGgmJihsLm5leHRTaWJsaW5nKCk/YT0wOmwucGFyZW50Tm9kZSgpP2E9MTpydW50aW1lLmFzc2VydCghMSwiRXJyb3IgaW4gc2V0VW5maWx0ZXJlZFBvc2l0aW9uOiBwb3NpdGlvbiBub3QgdmFsaWQuIikpKTpiPGMuY2hpbGROb2Rlcy5sZW5ndGg/KGwuY3VycmVudE5vZGU9Yy5jaGlsZE5vZGVzLml0ZW0oYiksYT0wKTphPTE7cmV0dXJuIHEoKX07dGhpcy5tb3ZlVG9FbmQ9ZnVuY3Rpb24oKXtsLmN1cnJlbnROb2RlPWc7YT0xfTt0aGlzLm1vdmVUb0VuZE9mTm9kZT1mdW5jdGlvbihjKXtjLm5vZGVUeXBlPT09bT9lLnNldFVuZmlsdGVyZWRQb3NpdGlvbihjLGMubGVuZ3RoKToobC5jdXJyZW50Tm9kZT1jLGE9MSl9O3RoaXMuaXNCZWZvcmVOb2RlPWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT1hfTsKdGhpcy5nZXROb2RlRmlsdGVyPWZ1bmN0aW9uKCl7cmV0dXJuIGN9O2M9KGQ/bmV3IG4oZCk6bmV3IGYpLmFjY2VwdE5vZGU7Yy5hY2NlcHROb2RlPWM7az1rfHxOb2RlRmlsdGVyLlNIT1dfQUxMO3J1bnRpbWUuYXNzZXJ0KGcubm9kZVR5cGUhPT1Ob2RlLlRFWFRfTk9ERSwiSW50ZXJuZXQgRXhwbG9yZXIgZG9lc24ndCBhbGxvdyB0cmVlIHdhbGtlciByb290cyB0byBiZSB0ZXh0IG5vZGVzIik7bD1nLm93bmVyRG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihnLGssYyxiKTthPTA7bnVsbD09PWwuZmlyc3RDaGlsZCgpJiYoYT0xKX07Y29yZS5Qb3NpdGlvbkZpbHRlcj1mdW5jdGlvbigpe307Y29yZS5Qb3NpdGlvbkZpbHRlci5GaWx0ZXJSZXN1bHQ9e0ZJTFRFUl9BQ0NFUFQ6MSxGSUxURVJfUkVKRUNUOjIsRklMVEVSX1NLSVA6M307Y29yZS5Qb3NpdGlvbkZpbHRlci5wcm90b3R5cGUuYWNjZXB0UG9zaXRpb249ZnVuY3Rpb24oZyl7fTsKY29yZS5Qb3NpdGlvbkZpbHRlckNoYWluPWZ1bmN0aW9uKCl7dmFyIGc9W10saz1jb3JlLlBvc2l0aW9uRmlsdGVyLkZpbHRlclJlc3VsdC5GSUxURVJfQUNDRVBULGQ9Y29yZS5Qb3NpdGlvbkZpbHRlci5GaWx0ZXJSZXN1bHQuRklMVEVSX1JFSkVDVDt0aGlzLmFjY2VwdFBvc2l0aW9uPWZ1bmN0aW9uKGIpe3ZhciBmO2ZvcihmPTA7ZjxnLmxlbmd0aDtmKz0xKWlmKGdbZl0uYWNjZXB0UG9zaXRpb24oYik9PT1kKXJldHVybiBkO3JldHVybiBrfTt0aGlzLmFkZEZpbHRlcj1mdW5jdGlvbihiKXtnLnB1c2goYil9fTtjb3JlLlN0ZXBEaXJlY3Rpb249e1BSRVZJT1VTOjEsTkVYVDoyfTsKY29yZS5TdGVwSXRlcmF0b3I9ZnVuY3Rpb24oZyxrKXtmdW5jdGlvbiBkKCl7YT1udWxsO209Yz12b2lkIDB9ZnVuY3Rpb24gYigpe3ZvaWQgMD09PW0mJihtPWcuYWNjZXB0UG9zaXRpb24oayk9PT1lKTtyZXR1cm4gbX1mdW5jdGlvbiBmKGEsYyl7ZCgpO3JldHVybiBrLnNldFVuZmlsdGVyZWRQb3NpdGlvbihhLGMpfWZ1bmN0aW9uIG4oKXthfHwoYT1rLmNvbnRhaW5lcigpKTtyZXR1cm4gYX1mdW5jdGlvbiBwKCl7dm9pZCAwPT09YyYmKGM9ay51bmZpbHRlcmVkRG9tT2Zmc2V0KCkpO3JldHVybiBjfWZ1bmN0aW9uIHIoKXtmb3IoZCgpO2submV4dFBvc2l0aW9uKCk7KWlmKGQoKSxiKCkpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gcSgpe2ZvcihkKCk7ay5wcmV2aW91c1Bvc2l0aW9uKCk7KWlmKGQoKSxiKCkpcmV0dXJuITA7cmV0dXJuITF9dmFyIGU9Y29yZS5Qb3NpdGlvbkZpbHRlci5GaWx0ZXJSZXN1bHQuRklMVEVSX0FDQ0VQVCxsPWNvcmUuU3RlcERpcmVjdGlvbi5ORVhULAphLGMsbTt0aGlzLmlzU3RlcD1iO3RoaXMuc2V0UG9zaXRpb249Zjt0aGlzLmNvbnRhaW5lcj1uO3RoaXMub2Zmc2V0PXA7dGhpcy5uZXh0U3RlcD1yO3RoaXMucHJldmlvdXNTdGVwPXE7dGhpcy5hZHZhbmNlU3RlcD1mdW5jdGlvbihhKXtyZXR1cm4gYT09PWw/cigpOnEoKX07dGhpcy5yb3VuZFRvQ2xvc2VzdFN0ZXA9ZnVuY3Rpb24oKXt2YXIgYSxjLGQ9YigpO2R8fChhPW4oKSxjPXAoKSxkPXEoKSxkfHwoZihhLGMpLGQ9cigpKSk7cmV0dXJuIGR9O3RoaXMucm91bmRUb1ByZXZpb3VzU3RlcD1mdW5jdGlvbigpe3ZhciBhPWIoKTthfHwoYT1xKCkpO3JldHVybiBhfTt0aGlzLnJvdW5kVG9OZXh0U3RlcD1mdW5jdGlvbigpe3ZhciBhPWIoKTthfHwoYT1yKCkpO3JldHVybiBhfTt0aGlzLmxlZnROb2RlPWZ1bmN0aW9uKCl7cmV0dXJuIGsubGVmdE5vZGUoKX07dGhpcy5zbmFwc2hvdD1mdW5jdGlvbigpe3JldHVybiBuZXcgY29yZS5TdGVwSXRlcmF0b3IuU3RlcFNuYXBzaG90KG4oKSwKcCgpKX07dGhpcy5yZXN0b3JlPWZ1bmN0aW9uKGEpe2YoYS5jb250YWluZXIsYS5vZmZzZXQpfX07Y29yZS5TdGVwSXRlcmF0b3IuU3RlcFNuYXBzaG90PWZ1bmN0aW9uKGcsayl7dGhpcy5jb250YWluZXI9Zzt0aGlzLm9mZnNldD1rfTsKY29yZS5VdGlscz1mdW5jdGlvbigpe2Z1bmN0aW9uIGcoayxkKXtpZihkJiZBcnJheS5pc0FycmF5KGQpKXtrPWt8fFtdO2lmKCFBcnJheS5pc0FycmF5KGspKXRocm93IkRlc3RpbmF0aW9uIGlzIG5vdCBhbiBhcnJheS4iO2s9ay5jb25jYXQoZC5tYXAoZnVuY3Rpb24oYil7cmV0dXJuIGcobnVsbCxiKX0pKX1lbHNlIGlmKGQmJiJvYmplY3QiPT09dHlwZW9mIGQpe2s9a3x8e307aWYoIm9iamVjdCIhPT10eXBlb2Ygayl0aHJvdyJEZXN0aW5hdGlvbiBpcyBub3QgYW4gb2JqZWN0LiI7T2JqZWN0LmtleXMoZCkuZm9yRWFjaChmdW5jdGlvbihiKXtrW2JdPWcoa1tiXSxkW2JdKX0pfWVsc2Ugaz1kO3JldHVybiBrfXRoaXMuaGFzaFN0cmluZz1mdW5jdGlvbihnKXt2YXIgZD0wLGIsZjtiPTA7Zm9yKGY9Zy5sZW5ndGg7YjxmO2IrPTEpZD0oZDw8NSktZCtnLmNoYXJDb2RlQXQoYiksZHw9MDtyZXR1cm4gZH07dGhpcy5tZXJnZU9iamVjdHM9ZnVuY3Rpb24oayxkKXtPYmplY3Qua2V5cyhkKS5mb3JFYWNoKGZ1bmN0aW9uKGIpe2tbYl09Cmcoa1tiXSxkW2JdKX0pO3JldHVybiBrfX07CmNvcmUuWmlwPWZ1bmN0aW9uKGcsayl7ZnVuY3Rpb24gZChiLGQpe3ZhciBhPXIuZmlsZShiKTthP2QobnVsbCxhLmFzVWludDhBcnJheSgpKTpkKGIrIiBub3QgZm91bmQuIixudWxsKX1mdW5jdGlvbiBiKGIsbCl7ZChiLGZ1bmN0aW9uKGEsYyl7aWYoYXx8bnVsbD09PWMpcmV0dXJuIGwoYSxudWxsKTt2YXIgYj1ydW50aW1lLmJ5dGVBcnJheVRvU3RyaW5nKGMsInV0ZjgiKTtsKG51bGwsYil9KX1mdW5jdGlvbiBmKGIsZCl7dHJ5e2Ioci5nZW5lcmF0ZSh7dHlwZToidWludDhhcnJheSIsY29tcHJlc3Npb246IlNUT1JFIn0pKX1jYXRjaChhKXtkKGEubWVzc2FnZSl9fWZ1bmN0aW9uIG4oYixkKXtmKGZ1bmN0aW9uKGEpe3J1bnRpbWUud3JpdGVGaWxlKGIsYSxkKX0sZCl9dmFyIHA9dGhpcyxyLHE9bmV3IGNvcmUuQmFzZTY0O3RoaXMubG9hZD1kO3RoaXMuc2F2ZT1mdW5jdGlvbihiLGQsYSxjKXtyLmZpbGUoYixkLHtkYXRlOmMsY29tcHJlc3Npb246YT8iREVGTEFURSI6IlNUT1JFIn0pfTsKdGhpcy5yZW1vdmU9ZnVuY3Rpb24oYil7dmFyIGQ9bnVsbCE9PXIuZmlsZShiKTtyLnJlbW92ZShiKTtyZXR1cm4gZH07dGhpcy53cml0ZT1mdW5jdGlvbihiKXtuKGcsYil9O3RoaXMud3JpdGVBcz1uO3RoaXMuY3JlYXRlQnl0ZUFycmF5PWY7dGhpcy5sb2FkQ29udGVudFhtbEFzRnJhZ21lbnRzPWZ1bmN0aW9uKGQsbCl7YihkLGZ1bmN0aW9uKGEsYyl7aWYoYSlyZXR1cm4gbC5yb290RWxlbWVudFJlYWR5KGEpO2wucm9vdEVsZW1lbnRSZWFkeShudWxsLGMsITApfSl9O3RoaXMubG9hZEFzU3RyaW5nPWI7dGhpcy5sb2FkQXNET009ZnVuY3Rpb24oZCxsKXtiKGQsZnVuY3Rpb24oYSxjKXtpZihhfHxudWxsPT09YylsKGEsbnVsbCk7ZWxzZXt2YXIgYj0obmV3IERPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKGMsInRleHQveG1sIik7bChudWxsLGIpfX0pfTt0aGlzLmxvYWRBc0RhdGFVUkw9ZnVuY3Rpb24oYixsLGEpe2QoYixmdW5jdGlvbihjLGIpe2lmKGN8fCFiKXJldHVybiBhKGMsCm51bGwpO3ZhciBkPTAsZTtsfHwobD04MD09PWJbMV0mJjc4PT09YlsyXSYmNzE9PT1iWzNdPyJpbWFnZS9wbmciOjI1NT09PWJbMF0mJjIxNj09PWJbMV0mJjI1NT09PWJbMl0/ImltYWdlL2pwZWciOjcxPT09YlswXSYmNzM9PT1iWzFdJiY3MD09PWJbMl0/ImltYWdlL2dpZiI6IiIpO2ZvcihlPSJkYXRhOiIrbCsiO2Jhc2U2NCwiO2Q8Yi5sZW5ndGg7KWUrPXEuY29udmVydFVURjhBcnJheVRvQmFzZTY0KGIuc3ViYXJyYXkoZCxNYXRoLm1pbihkKzQ1RTMsYi5sZW5ndGgpKSksZCs9NDVFMzthKG51bGwsZSl9KX07dGhpcy5nZXRFbnRyaWVzPWZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5rZXlzKHIuZmlsZXMpLm1hcChmdW5jdGlvbihiKXtyZXR1cm57ZmlsZW5hbWU6YixkYXRlOnIuZmlsZXNbYl0uZGF0ZX19KX07cj1uZXcgZXh0ZXJucy5KU1ppcDtudWxsIT09ayYmcnVudGltZS5yZWFkRmlsZShnLCJiaW5hcnkiLGZ1bmN0aW9uKGIsZCl7InN0cmluZyI9PT10eXBlb2YgZCYmKGI9CiJmaWxlIHdhcyByZWFkIGFzIGEgc3RyaW5nLiBTaG91bGQgYmUgVWludDhBcnJheS4iKTtpZihifHwhZHx8MD09PWQubGVuZ3RoKWsoIkZpbGUgJyIrZysiJyBjYW5ub3QgYmUgcmVhZC4gRXJyOiAiKyhifHwiW25vbmVdIikscCk7ZWxzZSB0cnl7ci5sb2FkKGQse2NoZWNrQ1JDMzI6ITF9KSxrKG51bGwscCl9Y2F0Y2goYSl7ayhhLm1lc3NhZ2UscCl9fSl9O2NvcmUuU2ltcGxlQ2xpZW50UmVjdD1udWxsO2d1aS5Db21tb25Db25zdHJhaW50cz17RURJVDp7QU5OT1RBVElPTlM6e09OTFlfREVMRVRFX09XTjoib25seURlbGV0ZU93biJ9LFJFVklFV19NT0RFOiJyZXZpZXdNb2RlIn19OwpndWkuU2Vzc2lvbkNvbnN0cmFpbnRzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZyhiKXtrLmhhc093blByb3BlcnR5KGIpfHwoa1tiXT0hMSxkLnJlZ2lzdGVyKGIpKX12YXIgaz17fSxkPW5ldyBjb3JlLkV2ZW50Tm90aWZpZXI7dGhpcy5yZWdpc3RlckNvbnN0cmFpbnQ9Zzt0aGlzLnN1YnNjcmliZT1mdW5jdGlvbihiLGYpe2coYik7ZC5zdWJzY3JpYmUoYixmKX07dGhpcy51bnN1YnNjcmliZT1mdW5jdGlvbihiLGYpe2QudW5zdWJzY3JpYmUoYixmKX07dGhpcy5zZXRTdGF0ZT1mdW5jdGlvbihiLGYpe3J1bnRpbWUuYXNzZXJ0KCEwPT09ay5oYXNPd25Qcm9wZXJ0eShiKSwiTm8gc3VjaCBjb25zdHJhaW50Iik7a1tiXSE9PWYmJihrW2JdPWYsZC5lbWl0KGIsZikpfTt0aGlzLmdldFN0YXRlPWZ1bmN0aW9uKGIpe3J1bnRpbWUuYXNzZXJ0KCEwPT09ay5oYXNPd25Qcm9wZXJ0eShiKSwiTm8gc3VjaCBjb25zdHJhaW50Iik7cmV0dXJuIGtbYl19fTsKZ3VpLkJsYWNrbGlzdE5hbWVzcGFjZU5vZGVGaWx0ZXI9ZnVuY3Rpb24oZyl7dmFyIGs9e30sZD1Ob2RlRmlsdGVyLkZJTFRFUl9SRUpFQ1QsYj1Ob2RlRmlsdGVyLkZJTFRFUl9BQ0NFUFQ7dGhpcy5hY2NlcHROb2RlPWZ1bmN0aW9uKGYpe3JldHVybiFmfHxrLmhhc093blByb3BlcnR5KGYubmFtZXNwYWNlVVJJKT9kOmJ9OyhmdW5jdGlvbigpe2cuZm9yRWFjaChmdW5jdGlvbihiKXtrW2JdPSEwfSl9KSgpfTsKb2RmLk5hbWVzcGFjZXM9e25hbWVzcGFjZU1hcDp7Y29uZmlnOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOmNvbmZpZzoxLjAiLGRiOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOmRhdGFiYXNlOjEuMCIsZGM6Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIixkcjNkOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOmRyM2Q6MS4wIixkcmF3OiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOmRyYXdpbmc6MS4wIixjaGFydDoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpjaGFydDoxLjAiLGZvOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnhzbC1mby1jb21wYXRpYmxlOjEuMCIsZm9ybToidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpmb3JtOjEuMCIsbWF0aDoiaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCIsCm1ldGE6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6bWV0YToxLjAiLG51bWJlcjoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpkYXRhc3R5bGU6MS4wIixvZmZpY2U6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6b2ZmaWNlOjEuMCIscHJlc2VudGF0aW9uOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnByZXNlbnRhdGlvbjoxLjAiLHN0eWxlOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnN0eWxlOjEuMCIsc3ZnOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnN2Zy1jb21wYXRpYmxlOjEuMCIsdGFibGU6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6dGFibGU6MS4wIix0ZXh0OiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnRleHQ6MS4wIix4Zm9ybXM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDIveGZvcm1zIiwKeGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHhtbDoiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIn0scHJlZml4TWFwOnt9LGNvbmZpZ25zOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOmNvbmZpZzoxLjAiLGRibnM6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6ZGF0YWJhc2U6MS4wIixkY25zOiJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIsZHIzZG5zOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOmRyM2Q6MS4wIixkcmF3bnM6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6ZHJhd2luZzoxLjAiLGNoYXJ0bnM6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6Y2hhcnQ6MS4wIixmb25zOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnhzbC1mby1jb21wYXRpYmxlOjEuMCIsZm9ybW5zOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOmZvcm06MS4wIiwKbWF0aG5zOiJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MIixtZXRhbnM6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6bWV0YToxLjAiLG51bWJlcm5zOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOmRhdGFzdHlsZToxLjAiLG9mZmljZW5zOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm9mZmljZToxLjAiLHByZXNlbnRhdGlvbm5zOiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnByZXNlbnRhdGlvbjoxLjAiLHN0eWxlbnM6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6c3R5bGU6MS4wIixzdmduczoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpzdmctY29tcGF0aWJsZToxLjAiLHRhYmxlbnM6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6dGFibGU6MS4wIix0ZXh0bnM6InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6dGV4dDoxLjAiLAp4Zm9ybXNuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMi94Zm9ybXMiLHhsaW5rbnM6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UifTsoZnVuY3Rpb24oKXt2YXIgZz1vZGYuTmFtZXNwYWNlcy5uYW1lc3BhY2VNYXAsaz1vZGYuTmFtZXNwYWNlcy5wcmVmaXhNYXAsZDtmb3IoZCBpbiBnKWcuaGFzT3duUHJvcGVydHkoZCkmJihrW2dbZF1dPWQpfSkoKTtvZGYuTmFtZXNwYWNlcy5mb3JFYWNoUHJlZml4PWZ1bmN0aW9uKGcpe3ZhciBrPW9kZi5OYW1lc3BhY2VzLm5hbWVzcGFjZU1hcCxkO2ZvcihkIGluIGspay5oYXNPd25Qcm9wZXJ0eShkKSYmZyhkLGtbZF0pfTsKb2RmLk5hbWVzcGFjZXMubG9va3VwTmFtZXNwYWNlVVJJPWZ1bmN0aW9uKGcpe3ZhciBrPW51bGw7b2RmLk5hbWVzcGFjZXMubmFtZXNwYWNlTWFwLmhhc093blByb3BlcnR5KGcpJiYoaz1vZGYuTmFtZXNwYWNlcy5uYW1lc3BhY2VNYXBbZ10pO3JldHVybiBrfTtvZGYuTmFtZXNwYWNlcy5sb29rdXBQcmVmaXg9ZnVuY3Rpb24oZyl7dmFyIGs9b2RmLk5hbWVzcGFjZXMucHJlZml4TWFwO3JldHVybiBrLmhhc093blByb3BlcnR5KGcpP2tbZ106bnVsbH07b2RmLk5hbWVzcGFjZXMubG9va3VwTmFtZXNwYWNlVVJJLmxvb2t1cE5hbWVzcGFjZVVSST1vZGYuTmFtZXNwYWNlcy5sb29rdXBOYW1lc3BhY2VVUkk7CihmdW5jdGlvbigpe29kZi5PZGZTY2hlbWFJbXBsPWZ1bmN0aW9uKCl7dmFyIGc9W1siY29uZmlnOmNvbmZpZy1pdGVtIiwidW5jYXRlZ29yaXplZCJdLFsiZm9ybTppdGVtIiwib2JqZWN0Il0sWyJmb3JtOm9wdGlvbiIsInVuY2F0ZWdvcml6ZWQiXSxbIm1hdGg6bWF0aCIsImZpZWxkIl0sWyJtZXRhOnVzZXItZGVmaW5lZCIsInVuY2F0ZWdvcml6ZWQiXSxbIm51bWJlcjpjdXJyZW5jeS1zeW1ib2wiLCJ1bmNhdGVnb3JpemVkIl0sWyJudW1iZXI6ZW1iZWRkZWQtdGV4dCIsInVuY2F0ZWdvcml6ZWQiXSxbIm51bWJlcjp0ZXh0IiwidW5jYXRlZ29yaXplZCJdLFsicHJlc2VudGF0aW9uOmRhdGUtdGltZS1kZWNsIiwidW5jYXRlZ29yaXplZCJdLFsicHJlc2VudGF0aW9uOmZvb3Rlci1kZWNsIiwidW5jYXRlZ29yaXplZCJdLFsicHJlc2VudGF0aW9uOmhlYWRlci1kZWNsIiwidW5jYXRlZ29yaXplZCJdLFsic3ZnOmRlc2MiLCJ0ZXh0Il0sWyJzdmc6dGl0bGUiLCJ0ZXh0Il0sWyJ0YWJsZTpkZXNjIiwKInVuY2F0ZWdvcml6ZWQiXSxbInRhYmxlOnRpdGxlIiwidW5jYXRlZ29yaXplZCJdLFsidGV4dDphIiwidGV4dCJdLFsidGV4dDphdXRob3ItaW5pdGlhbHMiLCJmaWVsZCJdLFsidGV4dDphdXRob3ItbmFtZSIsImZpZWxkIl0sWyJ0ZXh0OmJpYmxpb2dyYXBoeS1tYXJrIiwiZmllbGQiXSxbInRleHQ6Ym9va21hcmstcmVmIiwiZmllbGQiXSxbInRleHQ6Y2hhcHRlciIsImZpZWxkIl0sWyJ0ZXh0OmNoYXJhY3Rlci1jb3VudCIsImZpZWxkIl0sWyJ0ZXh0OmNvbmRpdGlvbmFsLXRleHQiLCJmaWVsZCJdLFsidGV4dDpjcmVhdGlvbi1kYXRlIiwiZmllbGQiXSxbInRleHQ6Y3JlYXRpb24tdGltZSIsImZpZWxkIl0sWyJ0ZXh0OmNyZWF0b3IiLCJmaWVsZCJdLFsidGV4dDpkYXRhYmFzZS1kaXNwbGF5IiwiZmllbGQiXSxbInRleHQ6ZGF0YWJhc2UtbmFtZSIsImZpZWxkIl0sWyJ0ZXh0OmRhdGFiYXNlLXJvdy1udW1iZXIiLCJmaWVsZCJdLFsidGV4dDpkYXRlIiwiZmllbGQiXSxbInRleHQ6ZGRlLWNvbm5lY3Rpb24iLAoiZmllbGQiXSxbInRleHQ6ZGVzY3JpcHRpb24iLCJmaWVsZCJdLFsidGV4dDplZGl0aW5nLWN5Y2xlcyIsImZpZWxkIl0sWyJ0ZXh0OmVkaXRpbmctZHVyYXRpb24iLCJmaWVsZCJdLFsidGV4dDpleGVjdXRlLW1hY3JvIiwidW5jYXRlZ29yaXplZCJdLFsidGV4dDpleHByZXNzaW9uIiwidW5jYXRlZ29yaXplZCJdLFsidGV4dDpmaWxlLW5hbWUiLCJmaWVsZCJdLFsidGV4dDpoIiwidGV4dCJdLFsidGV4dDpoaWRkZW4tcGFyYWdyYXBoIiwidGV4dCJdLFsidGV4dDpoaWRkZW4tdGV4dCIsInRleHQiXSxbInRleHQ6aW1hZ2UtY291bnQiLCJmaWVsZCJdLFsidGV4dDppbmRleC1lbnRyeS1zcGFuIiwidW5jYXRlZ29yaXplZCJdLFsidGV4dDppbmRleC10aXRsZS10ZW1wbGF0ZSIsInVuY2F0ZWdvcml6ZWQiXSxbInRleHQ6aW5pdGlhbC1jcmVhdG9yIiwiZmllbGQiXSxbInRleHQ6a2V5d29yZHMiLCJmaWVsZCJdLFsidGV4dDpsaW5lbnVtYmVyaW5nLXNlcGFyYXRvciIsInN0eWxlIl0sClsidGV4dDptZWFzdXJlIiwidW5jYXRlZ29yaXplZCJdLFsidGV4dDptZXRhIiwidW5jYXRlZ29yaXplZCJdLFsidGV4dDptZXRhLWZpZWxkIiwidW5jYXRlZ29yaXplZCJdLFsidGV4dDptb2RpZmljYXRpb24tZGF0ZSIsImZpZWxkIl0sWyJ0ZXh0Om1vZGlmaWNhdGlvbi10aW1lIiwiZmllbGQiXSxbInRleHQ6bm90ZS1jaXRhdGlvbiIsImZpZWxkIl0sWyJ0ZXh0Om5vdGUtY29udGludWF0aW9uLW5vdGljZS1iYWNrd2FyZCIsInN0eWxlIl0sWyJ0ZXh0Om5vdGUtY29udGludWF0aW9uLW5vdGljZS1mb3J3YXJkIiwic3R5bGUiXSxbInRleHQ6bm90ZS1yZWYiLCJmaWVsZCJdLFsidGV4dDpvYmplY3QtY291bnQiLCJmaWVsZCJdLFsidGV4dDpwIiwidGV4dCJdLFsidGV4dDpwYWdlLWNvbnRpbnVhdGlvbiIsInVuY2F0ZWdvcml6ZWQiXSxbInRleHQ6cGFnZS1jb3VudCIsImZpZWxkIl0sWyJ0ZXh0OnBhZ2UtbnVtYmVyIiwiZmllbGQiXSxbInRleHQ6cGFnZS12YXJpYWJsZS1nZXQiLAoiZmllbGQiXSxbInRleHQ6cGFnZS12YXJpYWJsZS1zZXQiLCJmaWVsZCJdLFsidGV4dDpwYXJhZ3JhcGgtY291bnQiLCJmaWVsZCJdLFsidGV4dDpwbGFjZWhvbGRlciIsImZpZWxkIl0sWyJ0ZXh0OnByaW50LWRhdGUiLCJmaWVsZCJdLFsidGV4dDpwcmludC10aW1lIiwiZmllbGQiXSxbInRleHQ6cHJpbnRlZC1ieSIsImZpZWxkIl0sWyJ0ZXh0OnJlZmVyZW5jZS1yZWYiLCJmaWVsZCJdLFsidGV4dDpydWJ5LWJhc2UiLCJ0ZXh0Il0sWyJ0ZXh0OnJ1YnktdGV4dCIsInRleHQiXSxbInRleHQ6c2NyaXB0IiwidGV4dCJdLFsidGV4dDpzZW5kZXItY2l0eSIsImZpZWxkIl0sWyJ0ZXh0OnNlbmRlci1jb21wYW55IiwiZmllbGQiXSxbInRleHQ6c2VuZGVyLWNvdW50cnkiLCJmaWVsZCJdLFsidGV4dDpzZW5kZXItZW1haWwiLCJmaWVsZCJdLFsidGV4dDpzZW5kZXItZmF4IiwiZmllbGQiXSxbInRleHQ6c2VuZGVyLWZpcnN0bmFtZSIsImZpZWxkIl0sWyJ0ZXh0OnNlbmRlci1pbml0aWFscyIsCiJmaWVsZCJdLFsidGV4dDpzZW5kZXItbGFzdG5hbWUiLCJmaWVsZCJdLFsidGV4dDpzZW5kZXItcGhvbmUtcHJpdmF0ZSIsImZpZWxkIl0sWyJ0ZXh0OnNlbmRlci1waG9uZS13b3JrIiwiZmllbGQiXSxbInRleHQ6c2VuZGVyLXBvc2l0aW9uIiwiZmllbGQiXSxbInRleHQ6c2VuZGVyLXBvc3RhbC1jb2RlIiwiZmllbGQiXSxbInRleHQ6c2VuZGVyLXN0YXRlLW9yLXByb3ZpbmNlIiwiZmllbGQiXSxbInRleHQ6c2VuZGVyLXN0cmVldCIsImZpZWxkIl0sWyJ0ZXh0OnNlbmRlci10aXRsZSIsImZpZWxkIl0sWyJ0ZXh0OnNlcXVlbmNlIiwidW5jYXRlZ29yaXplZCJdLFsidGV4dDpzZXF1ZW5jZS1yZWYiLCJ1bmNhdGVnb3JpemVkIl0sWyJ0ZXh0OnNoZWV0LW5hbWUiLCJ1bmNhdGVnb3JpemVkIl0sWyJ0ZXh0OnNwYW4iLCJ0ZXh0Il0sWyJ0ZXh0OnN1YmplY3QiLCJmaWVsZCJdLFsidGV4dDp0YWJsZS1jb3VudCIsImZpZWxkIl0sWyJ0ZXh0OnRhYmxlLWZvcm11bGEiLCJkZXByZWNhdGVkIl0sClsidGV4dDp0ZW1wbGF0ZS1uYW1lIiwidW5jYXRlZ29yaXplZCJdLFsidGV4dDp0ZXh0LWlucHV0IiwiZmllbGQiXSxbInRleHQ6dGltZSIsImZpZWxkIl0sWyJ0ZXh0OnRpdGxlIiwiZmllbGQiXSxbInRleHQ6dXNlci1kZWZpbmVkIiwiZmllbGQiXSxbInRleHQ6dXNlci1maWVsZC1nZXQiLCJmaWVsZCJdLFsidGV4dDp1c2VyLWZpZWxkLWlucHV0IiwiZmllbGQiXSxbInRleHQ6dmFyaWFibGUtZ2V0IiwiZmllbGQiXSxbInRleHQ6dmFyaWFibGUtaW5wdXQiLCJmaWVsZCJdLFsidGV4dDp2YXJpYWJsZS1zZXQiLCJmaWVsZCJdLFsidGV4dDp3b3JkLWNvdW50IiwiZmllbGQiXSxbInhmb3Jtczptb2RlbCIsInVuY2F0ZWdvcml6ZWQiXV0saz17fTt0aGlzLmlzVGV4dENvbnRhaW5lcj1mdW5jdGlvbihkLGIpe3JldHVybiJ0ZXh0Ij09PWtbZCsiOiIrYl19O3RoaXMuaXNGaWVsZD1mdW5jdGlvbihkLGIpe3JldHVybiJmaWVsZCI9PT1rW2QrIjoiK2JdfTt0aGlzLmdldEZpZWxkcz1mdW5jdGlvbigpe3JldHVybiBnLmZpbHRlcihmdW5jdGlvbihkKXtyZXR1cm4iZmllbGQiPT09CmRbMV19KS5tYXAoZnVuY3Rpb24oZCl7cmV0dXJuIGRbMF19KX07KGZ1bmN0aW9uKCl7Zy5mb3JFYWNoKGZ1bmN0aW9uKGQpe3ZhciBiPWRbMV0sZj1kWzBdLnNwbGl0KCI6Iik7ZD1mWzBdO3ZhciBmPWZbMV0sbj1vZGYuTmFtZXNwYWNlcy5sb29rdXBOYW1lc3BhY2VVUkkoZCk7bj9rW24rIjoiK2ZdPWI6cnVudGltZS5sb2coIkRFQlVHOiBPZGZTY2hlbWEgLSB1bmtub3duIHByZWZpeCAnIitkKyInIil9KX0pKCl9O29kZi5PZGZTY2hlbWE9bmV3IG9kZi5PZGZTY2hlbWFJbXBsfSkoKTsKb2RmLk9kZlV0aWxzSW1wbD1mdW5jdGlvbigpe2Z1bmN0aW9uIGcoYSl7cmV0dXJuImltYWdlIj09PShhJiZhLmxvY2FsTmFtZSkmJmEubmFtZXNwYWNlVVJJPT09Un1mdW5jdGlvbiBrKGEpe3JldHVybiBudWxsIT09YSYmYS5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFJiYiZnJhbWUiPT09YS5sb2NhbE5hbWUmJmEubmFtZXNwYWNlVVJJPT09UiYmImFzLWNoYXIiPT09YS5nZXRBdHRyaWJ1dGVOUyhKLCJhbmNob3ItdHlwZSIpfWZ1bmN0aW9uIGQoYSl7dmFyIGM7KGM9ImFubm90YXRpb24iPT09KGEmJmEubG9jYWxOYW1lKSYmYS5uYW1lc3BhY2VVUkk9PT1vZGYuTmFtZXNwYWNlcy5vZmZpY2Vucyl8fChjPSJkaXYiPT09KGEmJmEubG9jYWxOYW1lKSYmImFubm90YXRpb25XcmFwcGVyIj09PWEuY2xhc3NOYW1lKTtyZXR1cm4gY31mdW5jdGlvbiBiKGEpe3JldHVybiJhIj09PShhJiZhLmxvY2FsTmFtZSkmJmEubmFtZXNwYWNlVVJJPT09Sn1mdW5jdGlvbiBmKGEpe3ZhciBjPQphJiZhLmxvY2FsTmFtZTtyZXR1cm4oInAiPT09Y3x8ImgiPT09YykmJmEubmFtZXNwYWNlVVJJPT09Sn1mdW5jdGlvbiBuKGEsYyl7Zm9yKGEmJnZvaWQgMCE9PWMmJiFmKGEpJiZhLmNoaWxkTm9kZXMuaXRlbShjKSYmKGE9YS5jaGlsZE5vZGVzLml0ZW0oYykpO2EmJiFmKGEpOylhPWEucGFyZW50Tm9kZTtyZXR1cm4gYX1mdW5jdGlvbiBwKGEsYyl7Zm9yKDthJiZhIT09Yzspe2lmKGEubmFtZXNwYWNlVVJJPT09b2RmLk5hbWVzcGFjZXMub2ZmaWNlbnMmJiJhbm5vdGF0aW9uIj09PWEubG9jYWxOYW1lKXJldHVybiBhO2E9YS5wYXJlbnROb2RlfXJldHVybiBudWxsfWZ1bmN0aW9uIHIoYSl7cmV0dXJuL15bIFx0XHJcbl0rJC8udGVzdChhKX1mdW5jdGlvbiBxKGEpe2lmKG51bGw9PT1hfHxhLm5vZGVUeXBlIT09Tm9kZS5FTEVNRU5UX05PREUpcmV0dXJuITE7dmFyIGM9YS5sb2NhbE5hbWU7cmV0dXJuIGZhLmlzVGV4dENvbnRhaW5lcihhLm5hbWVzcGFjZVVSSSxjKXx8InNwYW4iPT09CmMmJiJ3ZWJvZGYtYW5ub3RhdGlvbkhpZ2hsaWdodCI9PT1hLmNsYXNzTmFtZX1mdW5jdGlvbiBlKGEpe3JldHVybiBudWxsPT09YXx8YS5ub2RlVHlwZSE9PU5vZGUuRUxFTUVOVF9OT0RFPyExOmZhLmlzRmllbGQoYS5uYW1lc3BhY2VVUkksYS5sb2NhbE5hbWUpfWZ1bmN0aW9uIGwoYSl7dmFyIGM9YSYmYS5sb2NhbE5hbWUsYj0hMTtjJiYoYT1hLm5hbWVzcGFjZVVSSSxhPT09SiYmKGI9InMiPT09Y3x8InRhYiI9PT1jfHwibGluZS1icmVhayI9PT1jKSk7cmV0dXJuIGJ9ZnVuY3Rpb24gYShhKXtyZXR1cm4gbChhKXx8ZShhKXx8ayhhKXx8ZChhKX1mdW5jdGlvbiBjKGEpe3ZhciBjPWEmJmEubG9jYWxOYW1lLGI9ITE7YyYmKGE9YS5uYW1lc3BhY2VVUkksYT09PUomJihiPSJzIj09PWMpKTtyZXR1cm4gYn1mdW5jdGlvbiBtKGEpe3JldHVybi0xIT09Uy5pbmRleE9mKGEubmFtZXNwYWNlVVJJKX1mdW5jdGlvbiBoKGEpe2lmKGwoYSl8fGUoYSkpcmV0dXJuITE7aWYocShhLnBhcmVudE5vZGUpJiYKYS5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFKXJldHVybiAwPT09YS50ZXh0Q29udGVudC5sZW5ndGg7Zm9yKGE9YS5maXJzdENoaWxkO2E7KXtpZihtKGEpfHwhaChhKSlyZXR1cm4hMTthPWEubmV4dFNpYmxpbmd9cmV0dXJuITB9ZnVuY3Rpb24geShhKXtmb3IoO251bGwhPT1hLmZpcnN0Q2hpbGQmJnEoYSk7KWE9YS5maXJzdENoaWxkO3JldHVybiBhfWZ1bmN0aW9uIHgoYSl7Zm9yKDtudWxsIT09YS5sYXN0Q2hpbGQmJnEoYSk7KWE9YS5sYXN0Q2hpbGQ7cmV0dXJuIGF9ZnVuY3Rpb24geihhKXtmb3IoOyFmKGEpJiZudWxsPT09YS5wcmV2aW91c1NpYmxpbmc7KWE9YS5wYXJlbnROb2RlO3JldHVybiBmKGEpP251bGw6eChhLnByZXZpb3VzU2libGluZyl9ZnVuY3Rpb24gdyhhKXtmb3IoOyFmKGEpJiZudWxsPT09YS5uZXh0U2libGluZzspYT1hLnBhcmVudE5vZGU7cmV0dXJuIGYoYSk/bnVsbDp5KGEubmV4dFNpYmxpbmcpfWZ1bmN0aW9uIHYoYil7Zm9yKHZhciBkPSExO2I7KWlmKGIubm9kZVR5cGU9PT0KTm9kZS5URVhUX05PREUpaWYoMD09PWIubGVuZ3RoKWI9eihiKTtlbHNlIHJldHVybiFyKGIuZGF0YS5zdWJzdHIoYi5sZW5ndGgtMSwxKSk7ZWxzZSBhKGIpPyhkPSExPT09YyhiKSxiPW51bGwpOmI9eihiKTtyZXR1cm4gZH1mdW5jdGlvbiB1KGMpe3ZhciBiPSExLGQ7Zm9yKGM9YyYmeShjKTtjOyl7ZD1jLm5vZGVUeXBlPT09Tm9kZS5URVhUX05PREU/Yy5sZW5ndGg6MDtpZigwPGQmJiFyKGMuZGF0YSkpe2I9ITA7YnJlYWt9aWYoYShjKSl7Yj0hMDticmVha31jPXcoYyl9cmV0dXJuIGJ9ZnVuY3Rpb24gdChhLGMpe3JldHVybiByKGEuZGF0YS5zdWJzdHIoYykpPyF1KHcoYSkpOiExfWZ1bmN0aW9uIEEoYyxiKXt2YXIgZD1jLmRhdGEsbTtpZighcihkW2JdKXx8YShjLnBhcmVudE5vZGUpKXJldHVybiExOzA8Yj9yKGRbYi0xXSl8fChtPSEwKTp2KHooYykpJiYobT0hMCk7cmV0dXJuITA9PT1tP3QoYyxiKT8hMTohMDohMX1mdW5jdGlvbiBJKGEpe3JldHVybihhPS8oLT9bMC05XSpbMC05XVswLTldKihcLlswLTldKik/fDArXC5bMC05XSpbMS05XVswLTldKnxcLlswLTldKlsxLTldWzAtOV0qKSgoY20pfChtbSl8KGluKXwocHQpfChwYyl8KHB4KXwoJSkpLy5leGVjKGEpKT8Ke3ZhbHVlOnBhcnNlRmxvYXQoYVsxXSksdW5pdDphWzNdfTpudWxsfWZ1bmN0aW9uIEsoYSl7cmV0dXJuKGE9SShhKSkmJigwPmEudmFsdWV8fCIlIj09PWEudW5pdCk/bnVsbDphfWZ1bmN0aW9uIEwoYSl7cmV0dXJuKGE9SShhKSkmJiIlIiE9PWEudW5pdD9udWxsOmF9ZnVuY3Rpb24gRShhKXtzd2l0Y2goYS5uYW1lc3BhY2VVUkkpe2Nhc2Ugb2RmLk5hbWVzcGFjZXMuZHJhd25zOmNhc2Ugb2RmLk5hbWVzcGFjZXMuc3ZnbnM6Y2FzZSBvZGYuTmFtZXNwYWNlcy5kcjNkbnM6cmV0dXJuITE7Y2FzZSBvZGYuTmFtZXNwYWNlcy50ZXh0bnM6c3dpdGNoKGEubG9jYWxOYW1lKXtjYXNlICJub3RlLWJvZHkiOmNhc2UgInJ1YnktdGV4dCI6cmV0dXJuITF9YnJlYWs7Y2FzZSBvZGYuTmFtZXNwYWNlcy5vZmZpY2Vuczpzd2l0Y2goYS5sb2NhbE5hbWUpe2Nhc2UgImFubm90YXRpb24iOmNhc2UgImJpbmFyeS1kYXRhIjpjYXNlICJldmVudC1saXN0ZW5lcnMiOnJldHVybiExfWJyZWFrO2RlZmF1bHQ6c3dpdGNoKGEubG9jYWxOYW1lKXtjYXNlICJjdXJzb3IiOmNhc2UgImVkaXRpbmZvIjpyZXR1cm4hMX19cmV0dXJuITB9CmZ1bmN0aW9uIE4oYSl7cmV0dXJuIEJvb2xlYW4obihhKSYmKCFyKGEudGV4dENvbnRlbnQpfHxBKGEsMCkpKX1mdW5jdGlvbiBPKGEsYyl7Zm9yKDswPGMubGVuZ3RoJiYhYWEucmFuZ2VDb250YWluc05vZGUoYSxjWzBdKTspYy5zaGlmdCgpO2Zvcig7MDxjLmxlbmd0aCYmIWFhLnJhbmdlQ29udGFpbnNOb2RlKGEsY1tjLmxlbmd0aC0xXSk7KWMucG9wKCl9ZnVuY3Rpb24gRChjLGIsbSl7dmFyIGg7aD1hYS5nZXROb2Rlc0luUmFuZ2UoYyxmdW5jdGlvbihjKXt2YXIgYj1Ob2RlRmlsdGVyLkZJTFRFUl9SRUpFQ1Q7aWYobChjLnBhcmVudE5vZGUpfHxlKGMucGFyZW50Tm9kZSl8fGQoYykpYj1Ob2RlRmlsdGVyLkZJTFRFUl9SRUpFQ1Q7ZWxzZSBpZihjLm5vZGVUeXBlPT09Tm9kZS5URVhUX05PREUpe2lmKG18fE4oYykpYj1Ob2RlRmlsdGVyLkZJTFRFUl9BQ0NFUFR9ZWxzZSBpZihhKGMpKWI9Tm9kZUZpbHRlci5GSUxURVJfQUNDRVBUO2Vsc2UgaWYoRShjKXx8cShjKSliPU5vZGVGaWx0ZXIuRklMVEVSX1NLSVA7CnJldHVybiBifSxOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVHxOb2RlRmlsdGVyLlNIT1dfVEVYVCk7Ynx8TyhjLGgpO3JldHVybiBofWZ1bmN0aW9uIFYoYSxjLGIpe2Zvcig7YTspe2lmKGIoYSkpe2NbMF0hPT1hJiZjLnVuc2hpZnQoYSk7YnJlYWt9aWYoZChhKSlicmVhazthPWEucGFyZW50Tm9kZX19ZnVuY3Rpb24gVyhhLGMpe3ZhciBiPWE7aWYoYzxiLmNoaWxkTm9kZXMubGVuZ3RoLTEpYj1iLmNoaWxkTm9kZXNbYysxXTtlbHNle2Zvcig7IWIubmV4dFNpYmxpbmc7KWI9Yi5wYXJlbnROb2RlO2I9Yi5uZXh0U2libGluZ31mb3IoO2IuZmlyc3RDaGlsZDspYj1iLmZpcnN0Q2hpbGQ7cmV0dXJuIGJ9dmFyIEo9b2RmLk5hbWVzcGFjZXMudGV4dG5zLFI9b2RmLk5hbWVzcGFjZXMuZHJhd25zLFA9b2RmLk5hbWVzcGFjZXMueGxpbmtucyxhYT1jb3JlLkRvbVV0aWxzLFM9W29kZi5OYW1lc3BhY2VzLmRibnMsb2RmLk5hbWVzcGFjZXMuZGNucyxvZGYuTmFtZXNwYWNlcy5kcjNkbnMsb2RmLk5hbWVzcGFjZXMuZHJhd25zLApvZGYuTmFtZXNwYWNlcy5jaGFydG5zLG9kZi5OYW1lc3BhY2VzLmZvcm1ucyxvZGYuTmFtZXNwYWNlcy5udW1iZXJucyxvZGYuTmFtZXNwYWNlcy5vZmZpY2VucyxvZGYuTmFtZXNwYWNlcy5wcmVzZW50YXRpb25ucyxvZGYuTmFtZXNwYWNlcy5zdHlsZW5zLG9kZi5OYW1lc3BhY2VzLnN2Z25zLG9kZi5OYW1lc3BhY2VzLnRhYmxlbnMsb2RmLk5hbWVzcGFjZXMudGV4dG5zXSxmYT1vZGYuT2RmU2NoZW1hO3RoaXMuaXNJbWFnZT1nO3RoaXMuaXNDaGFyYWN0ZXJGcmFtZT1rO3RoaXMuaXNJbmxpbmVSb290PWQ7dGhpcy5pc1RleHRTcGFuPWZ1bmN0aW9uKGEpe3JldHVybiJzcGFuIj09PShhJiZhLmxvY2FsTmFtZSkmJmEubmFtZXNwYWNlVVJJPT09Sn07dGhpcy5pc0h5cGVybGluaz1iO3RoaXMuZ2V0SHlwZXJsaW5rVGFyZ2V0PWZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZU5TKFAsImhyZWYiKXx8IiJ9O3RoaXMuaXNQYXJhZ3JhcGg9Zjt0aGlzLmdldFBhcmFncmFwaEVsZW1lbnQ9Cm47dGhpcy5nZXRQYXJlbnRBbm5vdGF0aW9uPXA7dGhpcy5pc1dpdGhpbkFubm90YXRpb249ZnVuY3Rpb24oYSxjKXtyZXR1cm4gQm9vbGVhbihwKGEsYykpfTt0aGlzLmdldEFubm90YXRpb25DcmVhdG9yPWZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEVsZW1lbnRzQnlUYWdOYW1lTlMob2RmLk5hbWVzcGFjZXMuZGNucywiY3JlYXRvciIpWzBdLnRleHRDb250ZW50fTt0aGlzLmlzTGlzdEl0ZW09ZnVuY3Rpb24oYSl7cmV0dXJuImxpc3QtaXRlbSI9PT0oYSYmYS5sb2NhbE5hbWUpJiZhLm5hbWVzcGFjZVVSST09PUp9O3RoaXMuaXNMaW5lQnJlYWs9ZnVuY3Rpb24oYSl7cmV0dXJuImxpbmUtYnJlYWsiPT09KGEmJmEubG9jYWxOYW1lKSYmYS5uYW1lc3BhY2VVUkk9PT1KfTt0aGlzLmlzT0RGV2hpdGVzcGFjZT1yO3RoaXMuaXNHcm91cGluZ0VsZW1lbnQ9cTt0aGlzLmlzRmllbGRFbGVtZW50PWU7dGhpcy5pc0NoYXJhY3RlckVsZW1lbnQ9bDt0aGlzLmlzQW5jaG9yZWRBc0NoYXJhY3RlckVsZW1lbnQ9CmE7dGhpcy5pc1NwYWNlRWxlbWVudD1jO3RoaXMuaXNPREZOb2RlPW07dGhpcy5oYXNOb09ERkNvbnRlbnQ9aDt0aGlzLmZpcnN0Q2hpbGQ9eTt0aGlzLmxhc3RDaGlsZD14O3RoaXMucHJldmlvdXNOb2RlPXo7dGhpcy5uZXh0Tm9kZT13O3RoaXMuc2NhbkxlZnRGb3JOb25TcGFjZT12O3RoaXMubG9va0xlZnRGb3JDaGFyYWN0ZXI9ZnVuY3Rpb24oYyl7dmFyIGIsZD1iPTA7Yy5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFJiYoZD1jLmxlbmd0aCk7MDxkPyhiPWMuZGF0YSxiPXIoYi5zdWJzdHIoZC0xLDEpKT8xPT09ZD92KHooYykpPzI6MDpyKGIuc3Vic3RyKGQtMiwxKSk/MDoyOjEpOmEoYykmJihiPTEpO3JldHVybiBifTt0aGlzLmxvb2tSaWdodEZvckNoYXJhY3Rlcj1mdW5jdGlvbihjKXt2YXIgYj0hMSxkPTA7YyYmYy5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFJiYoZD1jLmxlbmd0aCk7MDxkP2I9IXIoYy5kYXRhLnN1YnN0cigwLDEpKTphKGMpJiYoYj0hMCk7cmV0dXJuIGJ9Owp0aGlzLnNjYW5MZWZ0Rm9yQW55Q2hhcmFjdGVyPWZ1bmN0aW9uKGMpe3ZhciBiPSExLGQ7Zm9yKGM9YyYmeChjKTtjOyl7ZD1jLm5vZGVUeXBlPT09Tm9kZS5URVhUX05PREU/Yy5sZW5ndGg6MDtpZigwPGQmJiFyKGMuZGF0YSkpe2I9ITA7YnJlYWt9aWYoYShjKSl7Yj0hMDticmVha31jPXooYyl9cmV0dXJuIGJ9O3RoaXMuc2NhblJpZ2h0Rm9yQW55Q2hhcmFjdGVyPXU7dGhpcy5pc1RyYWlsaW5nV2hpdGVzcGFjZT10O3RoaXMuaXNTaWduaWZpY2FudFdoaXRlc3BhY2U9QTt0aGlzLmlzRG93bmdyYWRhYmxlU3BhY2VFbGVtZW50PWZ1bmN0aW9uKGEpe3JldHVybiBjKGEpP3YoeihhKSkmJnUodyhhKSk6ITF9O3RoaXMucGFyc2VMZW5ndGg9STt0aGlzLnBhcnNlTm9uTmVnYXRpdmVMZW5ndGg9Szt0aGlzLnBhcnNlRm9Gb250U2l6ZT1mdW5jdGlvbihhKXt2YXIgYztjPShjPUkoYSkpJiYoMD49Yy52YWx1ZXx8IiUiPT09Yy51bml0KT9udWxsOmM7cmV0dXJuIGN8fEwoYSl9O3RoaXMucGFyc2VGb0xpbmVIZWlnaHQ9CmZ1bmN0aW9uKGEpe3JldHVybiBLKGEpfHxMKGEpfTt0aGlzLmlzVGV4dENvbnRlbnRDb250YWluaW5nTm9kZT1FO3RoaXMuZ2V0VGV4dE5vZGVzPWZ1bmN0aW9uKGEsYyl7dmFyIGI7Yj1hYS5nZXROb2Rlc0luUmFuZ2UoYSxmdW5jdGlvbihhKXt2YXIgYz1Ob2RlRmlsdGVyLkZJTFRFUl9SRUpFQ1Q7YS5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFP04oYSkmJihjPU5vZGVGaWx0ZXIuRklMVEVSX0FDQ0VQVCk6RShhKSYmKGM9Tm9kZUZpbHRlci5GSUxURVJfU0tJUCk7cmV0dXJuIGN9LE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5UfE5vZGVGaWx0ZXIuU0hPV19URVhUKTtjfHxPKGEsYik7cmV0dXJuIGJ9O3RoaXMuZ2V0VGV4dEVsZW1lbnRzPUQ7dGhpcy5nZXRQYXJhZ3JhcGhFbGVtZW50cz1mdW5jdGlvbihhKXt2YXIgYztjPWFhLmdldE5vZGVzSW5SYW5nZShhLGZ1bmN0aW9uKGEpe3ZhciBjPU5vZGVGaWx0ZXIuRklMVEVSX1JFSkVDVDtpZihmKGEpKWM9Tm9kZUZpbHRlci5GSUxURVJfQUNDRVBUOwplbHNlIGlmKEUoYSl8fHEoYSkpYz1Ob2RlRmlsdGVyLkZJTFRFUl9TS0lQO3JldHVybiBjfSxOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCk7VihhLnN0YXJ0Q29udGFpbmVyLGMsZik7cmV0dXJuIGN9O3RoaXMuZ2V0SW1hZ2VFbGVtZW50cz1mdW5jdGlvbihhKXt2YXIgYztjPWFhLmdldE5vZGVzSW5SYW5nZShhLGZ1bmN0aW9uKGEpe3ZhciBjPU5vZGVGaWx0ZXIuRklMVEVSX1NLSVA7ZyhhKSYmKGM9Tm9kZUZpbHRlci5GSUxURVJfQUNDRVBUKTtyZXR1cm4gY30sTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQpO1YoYS5zdGFydENvbnRhaW5lcixjLGcpO3JldHVybiBjfTt0aGlzLmdldEh5cGVybGlua0VsZW1lbnRzPWZ1bmN0aW9uKGEpe3ZhciBjPVtdLGQ9YS5jbG9uZVJhbmdlKCk7YS5jb2xsYXBzZWQmJmEuZW5kQ29udGFpbmVyLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUmJihhPVcoYS5lbmRDb250YWluZXIsYS5lbmRPZmZzZXQpLGEubm9kZVR5cGU9PT1Ob2RlLlRFWFRfTk9ERSYmCmQuc2V0RW5kKGEsMSkpO0QoZCwhMCwhMSkuZm9yRWFjaChmdW5jdGlvbihhKXtmb3IoYT1hLnBhcmVudE5vZGU7IWYoYSk7KXtpZihiKGEpJiYtMT09PWMuaW5kZXhPZihhKSl7Yy5wdXNoKGEpO2JyZWFrfWE9YS5wYXJlbnROb2RlfX0pO2QuZGV0YWNoKCk7cmV0dXJuIGN9O3RoaXMuZ2V0Tm9ybWFsaXplZEZvbnRGYW1pbHlOYW1lPWZ1bmN0aW9uKGEpey9eKFsiJ10pKD86LnxbXG5ccl0pKj9cMSQvLnRlc3QoYSl8fChhPWEucmVwbGFjZSgvXlsgXHRcclxuXGZdKigoPzoufFtcblxyXSkqPylbIFx0XHJcblxmXSokLywiJDEiKSwvWyBcdFxyXG5cZl0vLnRlc3QoYSkmJihhPSInIithLnJlcGxhY2UoL1sgXHRcclxuXGZdKy9nLCIgIikrIiciKSk7cmV0dXJuIGF9fTtvZGYuT2RmVXRpbHM9bmV3IG9kZi5PZGZVdGlsc0ltcGw7Cmd1aS5PZGZUZXh0Qm9keU5vZGVGaWx0ZXI9ZnVuY3Rpb24oKXt2YXIgZz1vZGYuT2RmVXRpbHMsaz1Ob2RlLlRFWFRfTk9ERSxkPU5vZGVGaWx0ZXIuRklMVEVSX1JFSkVDVCxiPU5vZGVGaWx0ZXIuRklMVEVSX0FDQ0VQVCxmPW9kZi5OYW1lc3BhY2VzLnRleHRuczt0aGlzLmFjY2VwdE5vZGU9ZnVuY3Rpb24obil7aWYobi5ub2RlVHlwZT09PWspe2lmKCFnLmlzR3JvdXBpbmdFbGVtZW50KG4ucGFyZW50Tm9kZSkpcmV0dXJuIGR9ZWxzZSBpZihuLm5hbWVzcGFjZVVSST09PWYmJiJ0cmFja2VkLWNoYW5nZXMiPT09bi5sb2NhbE5hbWUpcmV0dXJuIGQ7cmV0dXJuIGJ9fTt4bWxkb20uTFNTZXJpYWxpemVyRmlsdGVyPWZ1bmN0aW9uKCl7fTt4bWxkb20uTFNTZXJpYWxpemVyRmlsdGVyLnByb3RvdHlwZS5hY2NlcHROb2RlPWZ1bmN0aW9uKGcpe307Cm9kZi5PZGZOb2RlRmlsdGVyPWZ1bmN0aW9uKCl7dGhpcy5hY2NlcHROb2RlPWZ1bmN0aW9uKGcpe3JldHVybiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj09PWcubmFtZXNwYWNlVVJJP05vZGVGaWx0ZXIuRklMVEVSX1NLSVA6Zy5uYW1lc3BhY2VVUkkmJmcubmFtZXNwYWNlVVJJLm1hdGNoKC9edXJuOndlYm9kZjovKT9Ob2RlRmlsdGVyLkZJTFRFUl9SRUpFQ1Q6Tm9kZUZpbHRlci5GSUxURVJfQUNDRVBUfX07eG1sZG9tLlhQYXRoSXRlcmF0b3I9ZnVuY3Rpb24oKXt9O3htbGRvbS5YUGF0aEl0ZXJhdG9yLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7fTt4bWxkb20uWFBhdGhJdGVyYXRvci5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt9OwpmdW5jdGlvbiBjcmVhdGVYUGF0aFNpbmdsZXRvbigpe2Z1bmN0aW9uIGcoYixhLGMpe3JldHVybi0xIT09YiYmKGI8YXx8LTE9PT1hKSYmKGI8Y3x8LTE9PT1jKX1mdW5jdGlvbiBrKGIpe2Zvcih2YXIgYT1bXSxjPTAsZD1iLmxlbmd0aCxoO2M8ZDspe3ZhciBmPWIsbj1kLGs9YSxyPSIiLHA9W10scT1mLmluZGV4T2YoIlsiLGMpLHQ9Zi5pbmRleE9mKCIvIixjKSxBPWYuaW5kZXhPZigiPSIsYyk7Zyh0LHEsQSk/KHI9Zi5zdWJzdHJpbmcoYyx0KSxjPXQrMSk6ZyhxLHQsQSk/KHI9Zi5zdWJzdHJpbmcoYyxxKSxjPWUoZixxLHApKTpnKEEsdCxxKT8ocj1mLnN1YnN0cmluZyhjLEEpLGM9QSk6KHI9Zi5zdWJzdHJpbmcoYyxuKSxjPW4pO2sucHVzaCh7bG9jYXRpb246cixwcmVkaWNhdGVzOnB9KTtpZihjPGQmJiI9Ij09PWJbY10pe2g9Yi5zdWJzdHJpbmcoYysxLGQpO2lmKDI8aC5sZW5ndGgmJigiJyI9PT1oWzBdfHwnIic9PT1oWzBdKSloPWguc2xpY2UoMSxoLmxlbmd0aC0xKTsKZWxzZSB0cnl7aD1wYXJzZUludChoLDEwKX1jYXRjaChJKXt9Yz1kfX1yZXR1cm57c3RlcHM6YSx2YWx1ZTpofX1mdW5jdGlvbiBkKCl7dmFyIGI9bnVsbCxhPSExO3RoaXMuc2V0Tm9kZT1mdW5jdGlvbihhKXtiPWF9O3RoaXMucmVzZXQ9ZnVuY3Rpb24oKXthPSExfTt0aGlzLm5leHQ9ZnVuY3Rpb24oKXt2YXIgYz1hP251bGw6YjthPSEwO3JldHVybiBjfX1mdW5jdGlvbiBiKGIsYSxjKXt0aGlzLnJlc2V0PWZ1bmN0aW9uKCl7Yi5yZXNldCgpfTt0aGlzLm5leHQ9ZnVuY3Rpb24oKXtmb3IodmFyIGQ9Yi5uZXh0KCk7ZDspe2Qubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSYmKGQ9ZC5nZXRBdHRyaWJ1dGVOb2RlTlMoYSxjKSk7aWYoZClicmVhaztkPWIubmV4dCgpfXJldHVybiBkfX1mdW5jdGlvbiBmKGIsYSl7dmFyIGM9Yi5uZXh0KCksZD1udWxsO3RoaXMucmVzZXQ9ZnVuY3Rpb24oKXtiLnJlc2V0KCk7Yz1iLm5leHQoKTtkPW51bGx9O3RoaXMubmV4dD1mdW5jdGlvbigpe2Zvcig7Yzspe2lmKGQpaWYoYSYmCmQuZmlyc3RDaGlsZClkPWQuZmlyc3RDaGlsZDtlbHNle2Zvcig7IWQubmV4dFNpYmxpbmcmJmQhPT1jOylkPWQucGFyZW50Tm9kZTtkPT09Yz9jPWIubmV4dCgpOmQ9ZC5uZXh0U2libGluZ31lbHNle2RvKGQ9Yy5maXJzdENoaWxkKXx8KGM9Yi5uZXh0KCkpO3doaWxlKGMmJiFkKX1pZihkJiZkLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUpcmV0dXJuIGR9cmV0dXJuIG51bGx9fWZ1bmN0aW9uIG4oYixhKXt0aGlzLnJlc2V0PWZ1bmN0aW9uKCl7Yi5yZXNldCgpfTt0aGlzLm5leHQ9ZnVuY3Rpb24oKXtmb3IodmFyIGM9Yi5uZXh0KCk7YyYmIWEoYyk7KWM9Yi5uZXh0KCk7cmV0dXJuIGN9fWZ1bmN0aW9uIHAoYixhLGMpe2E9YS5zcGxpdCgiOiIsMik7dmFyIGQ9YyhhWzBdKSxoPWFbMV07cmV0dXJuIG5ldyBuKGIsZnVuY3Rpb24oYSl7cmV0dXJuIGEubG9jYWxOYW1lPT09aCYmYS5uYW1lc3BhY2VVUkk9PT1kfSl9ZnVuY3Rpb24gcihiLGEsYyl7dmFyIG09bmV3IGQsaD1xKG0sCmEsYyksZT1hLnZhbHVlO3JldHVybiB2b2lkIDA9PT1lP25ldyBuKGIsZnVuY3Rpb24oYSl7bS5zZXROb2RlKGEpO2gucmVzZXQoKTtyZXR1cm4gbnVsbCE9PWgubmV4dCgpfSk6bmV3IG4oYixmdW5jdGlvbihhKXttLnNldE5vZGUoYSk7aC5yZXNldCgpO3JldHVybihhPWgubmV4dCgpKT9hLm5vZGVWYWx1ZT09PWU6ITF9KX12YXIgcSxlO2U9ZnVuY3Rpb24oYixhLGMpe2Zvcih2YXIgZD1hLGg9Yi5sZW5ndGgsZT0wO2Q8aDspIl0iPT09YltkXT8oLS1lLDA+PWUmJmMucHVzaChrKGIuc3Vic3RyaW5nKGEsZCkpKSk6IlsiPT09YltkXSYmKDA+PWUmJihhPWQrMSksZSs9MSksZCs9MTtyZXR1cm4gZH07cT1mdW5jdGlvbihkLGEsYyl7dmFyIG0saCxlLG47Zm9yKG09MDttPGEuc3RlcHMubGVuZ3RoO20rPTEpe2U9YS5zdGVwc1ttXTtoPWUubG9jYXRpb247aWYoIiI9PT1oKWQ9bmV3IGYoZCwhMSk7ZWxzZSBpZigiQCI9PT1oWzBdKXtoPWguc3Vic3RyKDEpLnNwbGl0KCI6IiwyKTtuPQpjKGhbMF0pO2lmKCFuKXRocm93Ik5vIG5hbWVzcGFjZSBhc3NvY2lhdGVkIHdpdGggdGhlIHByZWZpeCAiK2hbMF07ZD1uZXcgYihkLG4saFsxXSl9ZWxzZSIuIiE9PWgmJihkPW5ldyBmKGQsITEpLC0xIT09aC5pbmRleE9mKCI6IikmJihkPXAoZCxoLGMpKSk7Zm9yKGg9MDtoPGUucHJlZGljYXRlcy5sZW5ndGg7aCs9MSluPWUucHJlZGljYXRlc1toXSxkPXIoZCxuLGMpfXJldHVybiBkfTtyZXR1cm57Z2V0T0RGRWxlbWVudHNXaXRoWFBhdGg6ZnVuY3Rpb24oYixhLGMpe3ZhciBtPWIub3duZXJEb2N1bWVudCxoPVtdLGU9bnVsbDtpZihtJiYiZnVuY3Rpb24iPT09dHlwZW9mIG0uZXZhbHVhdGUpZm9yKGM9bS5ldmFsdWF0ZShhLGIsYyxYUGF0aFJlc3VsdC5VTk9SREVSRURfTk9ERV9JVEVSQVRPUl9UWVBFLG51bGwpLGU9Yy5pdGVyYXRlTmV4dCgpO251bGwhPT1lOyllLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUmJmgucHVzaChlKSxlPWMuaXRlcmF0ZU5leHQoKTtlbHNle2g9Cm5ldyBkO2guc2V0Tm9kZShiKTtiPWsoYSk7aD1xKGgsYixjKTtiPVtdO2ZvcihjPWgubmV4dCgpO2M7KWIucHVzaChjKSxjPWgubmV4dCgpO2g9Yn1yZXR1cm4gaH19fXhtbGRvbS5YUGF0aD1jcmVhdGVYUGF0aFNpbmdsZXRvbigpOwpvZGYuU3R5bGVJbmZvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZyhhLGMpe3ZhciBiLGQsaCxtLGUsbD0wO2lmKGI9S1thLmxvY2FsTmFtZV0paWYoaD1iW2EubmFtZXNwYWNlVVJJXSlsPWgubGVuZ3RoO2ZvcihiPTA7YjxsO2IrPTEpZD1oW2JdLG09ZC5ucyxlPWQubG9jYWxuYW1lLChkPWEuZ2V0QXR0cmlidXRlTlMobSxlKSkmJmEuc2V0QXR0cmlidXRlTlMobSxBW21dK2UsYytkKTtmb3IoaD1hLmZpcnN0RWxlbWVudENoaWxkO2g7KWcoaCxjKSxoPWgubmV4dEVsZW1lbnRTaWJsaW5nfWZ1bmN0aW9uIGsoYSxjKXt2YXIgYixkLGgsbSxlLGw9MDtpZihiPUtbYS5sb2NhbE5hbWVdKWlmKGg9YlthLm5hbWVzcGFjZVVSSV0pbD1oLmxlbmd0aDtmb3IoYj0wO2I8bDtiKz0xKWlmKGQ9aFtiXSxtPWQubnMsZT1kLmxvY2FsbmFtZSxkPWEuZ2V0QXR0cmlidXRlTlMobSxlKSlkPWQucmVwbGFjZShjLCIiKSxhLnNldEF0dHJpYnV0ZU5TKG0sQVttXStlLGQpO2ZvcihoPWEuZmlyc3RFbGVtZW50Q2hpbGQ7aDspayhoLApjKSxoPWgubmV4dEVsZW1lbnRTaWJsaW5nfWZ1bmN0aW9uIGQoYSxjKXt2YXIgYixkLGgsbSxlLGw9MDtpZihiPUtbYS5sb2NhbE5hbWVdKWlmKGg9YlthLm5hbWVzcGFjZVVSSV0pbD1oLmxlbmd0aDtmb3IoYj0wO2I8bDtiKz0xKWlmKG09aFtiXSxkPW0ubnMsZT1tLmxvY2FsbmFtZSxkPWEuZ2V0QXR0cmlidXRlTlMoZCxlKSljPWN8fHt9LG09bS5rZXluYW1lLGMuaGFzT3duUHJvcGVydHkobSk/Y1ttXVtkXT0xOihlPXt9LGVbZF09MSxjW21dPWUpO3JldHVybiBjfWZ1bmN0aW9uIGIoYSxjKXt2YXIgaCxtO2QoYSxjKTtmb3IoaD1hLmZpcnN0Q2hpbGQ7aDspaC5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFJiYobT1oLGIobSxjKSksaD1oLm5leHRTaWJsaW5nfWZ1bmN0aW9uIGYoYSxjLGIpe3RoaXMua2V5PWE7dGhpcy5uYW1lPWM7dGhpcy5mYW1pbHk9Yjt0aGlzLnJlcXVpcmVzPXt9fWZ1bmN0aW9uIG4oYSxjLGIpe3ZhciBkPWErJyInK2MsaD1iW2RdO2h8fChoPWJbZF09Cm5ldyBmKGQsYSxjKSk7cmV0dXJuIGh9ZnVuY3Rpb24gcChhLGMsYil7dmFyIGQsaCxtLGUsbCxmPTA7ZD1hLmdldEF0dHJpYnV0ZU5TKHYsIm5hbWUiKTtlPWEuZ2V0QXR0cmlidXRlTlModiwiZmFtaWx5Iik7ZCYmZSYmKGM9bihkLGUsYikpO2lmKGMpe2lmKGQ9S1thLmxvY2FsTmFtZV0paWYobT1kW2EubmFtZXNwYWNlVVJJXSlmPW0ubGVuZ3RoO2ZvcihkPTA7ZDxmO2QrPTEpaWYoZT1tW2RdLGg9ZS5ucyxsPWUubG9jYWxuYW1lLGg9YS5nZXRBdHRyaWJ1dGVOUyhoLGwpKWU9ZS5rZXluYW1lLGU9bihoLGUsYiksYy5yZXF1aXJlc1tlLmtleV09ZX1mb3IoYT1hLmZpcnN0RWxlbWVudENoaWxkO2E7KXAoYSxjLGIpLGE9YS5uZXh0RWxlbWVudFNpYmxpbmc7cmV0dXJuIGJ9ZnVuY3Rpb24gcihhLGMpe3ZhciBiPWNbYS5mYW1pbHldO2J8fChiPWNbYS5mYW1pbHldPXt9KTtiW2EubmFtZV09MTtPYmplY3Qua2V5cyhhLnJlcXVpcmVzKS5mb3JFYWNoKGZ1bmN0aW9uKGIpe3IoYS5yZXF1aXJlc1tiXSwKYyl9KX1mdW5jdGlvbiBxKGEsYyl7dmFyIGI9cChhLG51bGwse30pO09iamVjdC5rZXlzKGIpLmZvckVhY2goZnVuY3Rpb24oYSl7YT1iW2FdO3ZhciBkPWNbYS5mYW1pbHldO2QmJmQuaGFzT3duUHJvcGVydHkoYS5uYW1lKSYmcihhLGMpfSl9ZnVuY3Rpb24gZShhLGMpe2Z1bmN0aW9uIGIoYyl7KGM9bS5nZXRBdHRyaWJ1dGVOUyh2LGMpKSYmKGFbY109ITApfXZhciBkPVsiZm9udC1uYW1lIiwiZm9udC1uYW1lLWFzaWFuIiwiZm9udC1uYW1lLWNvbXBsZXgiXSxoLG07Zm9yKGg9YyYmYy5maXJzdEVsZW1lbnRDaGlsZDtoOyltPWgsZC5mb3JFYWNoKGIpLGUoYSxtKSxoPWgubmV4dEVsZW1lbnRTaWJsaW5nfWZ1bmN0aW9uIGwoYSxjKXtmdW5jdGlvbiBiKGEpe3ZhciBkPW0uZ2V0QXR0cmlidXRlTlModixhKTtkJiZjLmhhc093blByb3BlcnR5KGQpJiZtLnNldEF0dHJpYnV0ZU5TKHYsInN0eWxlOiIrYSxjW2RdKX12YXIgZD1bImZvbnQtbmFtZSIsImZvbnQtbmFtZS1hc2lhbiIsCiJmb250LW5hbWUtY29tcGxleCJdLGgsbTtmb3IoaD1hJiZhLmZpcnN0RWxlbWVudENoaWxkO2g7KW09aCxkLmZvckVhY2goYiksbChtLGMpLGg9aC5uZXh0RWxlbWVudFNpYmxpbmd9dmFyIGE9b2RmLk5hbWVzcGFjZXMuY2hhcnRucyxjPW9kZi5OYW1lc3BhY2VzLmRibnMsbT1vZGYuTmFtZXNwYWNlcy5kcjNkbnMsaD1vZGYuTmFtZXNwYWNlcy5kcmF3bnMseT1vZGYuTmFtZXNwYWNlcy5mb3JtbnMseD1vZGYuTmFtZXNwYWNlcy5udW1iZXJucyx6PW9kZi5OYW1lc3BhY2VzLm9mZmljZW5zLHc9b2RmLk5hbWVzcGFjZXMucHJlc2VudGF0aW9ubnMsdj1vZGYuTmFtZXNwYWNlcy5zdHlsZW5zLHU9b2RmLk5hbWVzcGFjZXMudGFibGVucyx0PW9kZi5OYW1lc3BhY2VzLnRleHRucyxBPXsidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpjaGFydDoxLjAiOiJjaGFydDoiLCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOmRhdGFiYXNlOjEuMCI6ImRiOiIsCiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOmRyM2Q6MS4wIjoiZHIzZDoiLCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOmRyYXdpbmc6MS4wIjoiZHJhdzoiLCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnhzbC1mby1jb21wYXRpYmxlOjEuMCI6ImZvOiIsInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6Zm9ybToxLjAiOiJmb3JtOiIsInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6ZGF0YXN0eWxlOjEuMCI6Im51bWJlcjoiLCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm9mZmljZToxLjAiOiJvZmZpY2U6IiwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpwcmVzZW50YXRpb246MS4wIjoicHJlc2VudGF0aW9uOiIsInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6c3R5bGU6MS4wIjoic3R5bGU6IiwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpzdmctY29tcGF0aWJsZToxLjAiOiJzdmc6IiwKInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6dGFibGU6MS4wIjoidGFibGU6IiwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczp0ZXh0OjEuMCI6ImNoYXJ0OiIsImh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSI6InhtbDoifSxJPXt0ZXh0Olt7ZW5zOnYsZW46InRhYi1zdG9wIixhbnM6dixhOiJsZWFkZXItdGV4dC1zdHlsZSJ9LHtlbnM6dixlbjoiZHJvcC1jYXAiLGFuczp2LGE6InN0eWxlLW5hbWUifSx7ZW5zOnQsZW46Im5vdGVzLWNvbmZpZ3VyYXRpb24iLGFuczp0LGE6ImNpdGF0aW9uLWJvZHktc3R5bGUtbmFtZSJ9LHtlbnM6dCxlbjoibm90ZXMtY29uZmlndXJhdGlvbiIsYW5zOnQsYToiY2l0YXRpb24tc3R5bGUtbmFtZSJ9LHtlbnM6dCxlbjoiYSIsYW5zOnQsYToic3R5bGUtbmFtZSJ9LHtlbnM6dCxlbjoiYWxwaGFiZXRpY2FsLWluZGV4IixhbnM6dCxhOiJzdHlsZS1uYW1lIn0se2Vuczp0LGVuOiJsaW5lbnVtYmVyaW5nLWNvbmZpZ3VyYXRpb24iLAphbnM6dCxhOiJzdHlsZS1uYW1lIn0se2Vuczp0LGVuOiJsaXN0LWxldmVsLXN0eWxlLW51bWJlciIsYW5zOnQsYToic3R5bGUtbmFtZSJ9LHtlbnM6dCxlbjoicnVieS10ZXh0IixhbnM6dCxhOiJzdHlsZS1uYW1lIn0se2Vuczp0LGVuOiJzcGFuIixhbnM6dCxhOiJzdHlsZS1uYW1lIn0se2Vuczp0LGVuOiJhIixhbnM6dCxhOiJ2aXNpdGVkLXN0eWxlLW5hbWUifSx7ZW5zOnYsZW46InRleHQtcHJvcGVydGllcyIsYW5zOnYsYToidGV4dC1saW5lLXRocm91Z2gtdGV4dC1zdHlsZSJ9LHtlbnM6dCxlbjoiYWxwaGFiZXRpY2FsLWluZGV4LXNvdXJjZSIsYW5zOnQsYToibWFpbi1lbnRyeS1zdHlsZS1uYW1lIn0se2Vuczp0LGVuOiJpbmRleC1lbnRyeS1iaWJsaW9ncmFwaHkiLGFuczp0LGE6InN0eWxlLW5hbWUifSx7ZW5zOnQsZW46ImluZGV4LWVudHJ5LWNoYXB0ZXIiLGFuczp0LGE6InN0eWxlLW5hbWUifSx7ZW5zOnQsZW46ImluZGV4LWVudHJ5LWxpbmstZW5kIixhbnM6dCxhOiJzdHlsZS1uYW1lIn0sCntlbnM6dCxlbjoiaW5kZXgtZW50cnktbGluay1zdGFydCIsYW5zOnQsYToic3R5bGUtbmFtZSJ9LHtlbnM6dCxlbjoiaW5kZXgtZW50cnktcGFnZS1udW1iZXIiLGFuczp0LGE6InN0eWxlLW5hbWUifSx7ZW5zOnQsZW46ImluZGV4LWVudHJ5LXNwYW4iLGFuczp0LGE6InN0eWxlLW5hbWUifSx7ZW5zOnQsZW46ImluZGV4LWVudHJ5LXRhYi1zdG9wIixhbnM6dCxhOiJzdHlsZS1uYW1lIn0se2Vuczp0LGVuOiJpbmRleC1lbnRyeS10ZXh0IixhbnM6dCxhOiJzdHlsZS1uYW1lIn0se2Vuczp0LGVuOiJpbmRleC10aXRsZS10ZW1wbGF0ZSIsYW5zOnQsYToic3R5bGUtbmFtZSJ9LHtlbnM6dCxlbjoibGlzdC1sZXZlbC1zdHlsZS1idWxsZXQiLGFuczp0LGE6InN0eWxlLW5hbWUifSx7ZW5zOnQsZW46Im91dGxpbmUtbGV2ZWwtc3R5bGUiLGFuczp0LGE6InN0eWxlLW5hbWUifV0scGFyYWdyYXBoOlt7ZW5zOmgsZW46ImNhcHRpb24iLGFuczpoLGE6InRleHQtc3R5bGUtbmFtZSJ9LHtlbnM6aCwKZW46ImNpcmNsZSIsYW5zOmgsYToidGV4dC1zdHlsZS1uYW1lIn0se2VuczpoLGVuOiJjb25uZWN0b3IiLGFuczpoLGE6InRleHQtc3R5bGUtbmFtZSJ9LHtlbnM6aCxlbjoiY29udHJvbCIsYW5zOmgsYToidGV4dC1zdHlsZS1uYW1lIn0se2VuczpoLGVuOiJjdXN0b20tc2hhcGUiLGFuczpoLGE6InRleHQtc3R5bGUtbmFtZSJ9LHtlbnM6aCxlbjoiZWxsaXBzZSIsYW5zOmgsYToidGV4dC1zdHlsZS1uYW1lIn0se2VuczpoLGVuOiJmcmFtZSIsYW5zOmgsYToidGV4dC1zdHlsZS1uYW1lIn0se2VuczpoLGVuOiJsaW5lIixhbnM6aCxhOiJ0ZXh0LXN0eWxlLW5hbWUifSx7ZW5zOmgsZW46Im1lYXN1cmUiLGFuczpoLGE6InRleHQtc3R5bGUtbmFtZSJ9LHtlbnM6aCxlbjoicGF0aCIsYW5zOmgsYToidGV4dC1zdHlsZS1uYW1lIn0se2VuczpoLGVuOiJwb2x5Z29uIixhbnM6aCxhOiJ0ZXh0LXN0eWxlLW5hbWUifSx7ZW5zOmgsZW46InBvbHlsaW5lIixhbnM6aCxhOiJ0ZXh0LXN0eWxlLW5hbWUifSwKe2VuczpoLGVuOiJyZWN0IixhbnM6aCxhOiJ0ZXh0LXN0eWxlLW5hbWUifSx7ZW5zOmgsZW46InJlZ3VsYXItcG9seWdvbiIsYW5zOmgsYToidGV4dC1zdHlsZS1uYW1lIn0se2Vuczp6LGVuOiJhbm5vdGF0aW9uIixhbnM6aCxhOiJ0ZXh0LXN0eWxlLW5hbWUifSx7ZW5zOnksZW46ImNvbHVtbiIsYW5zOnksYToidGV4dC1zdHlsZS1uYW1lIn0se2Vuczp2LGVuOiJzdHlsZSIsYW5zOnYsYToibmV4dC1zdHlsZS1uYW1lIn0se2Vuczp1LGVuOiJib2R5IixhbnM6dSxhOiJwYXJhZ3JhcGgtc3R5bGUtbmFtZSJ9LHtlbnM6dSxlbjoiZXZlbi1jb2x1bW5zIixhbnM6dSxhOiJwYXJhZ3JhcGgtc3R5bGUtbmFtZSJ9LHtlbnM6dSxlbjoiZXZlbi1yb3dzIixhbnM6dSxhOiJwYXJhZ3JhcGgtc3R5bGUtbmFtZSJ9LHtlbnM6dSxlbjoiZmlyc3QtY29sdW1uIixhbnM6dSxhOiJwYXJhZ3JhcGgtc3R5bGUtbmFtZSJ9LHtlbnM6dSxlbjoiZmlyc3Qtcm93IixhbnM6dSxhOiJwYXJhZ3JhcGgtc3R5bGUtbmFtZSJ9LAp7ZW5zOnUsZW46Imxhc3QtY29sdW1uIixhbnM6dSxhOiJwYXJhZ3JhcGgtc3R5bGUtbmFtZSJ9LHtlbnM6dSxlbjoibGFzdC1yb3ciLGFuczp1LGE6InBhcmFncmFwaC1zdHlsZS1uYW1lIn0se2Vuczp1LGVuOiJvZGQtY29sdW1ucyIsYW5zOnUsYToicGFyYWdyYXBoLXN0eWxlLW5hbWUifSx7ZW5zOnUsZW46Im9kZC1yb3dzIixhbnM6dSxhOiJwYXJhZ3JhcGgtc3R5bGUtbmFtZSJ9LHtlbnM6dCxlbjoibm90ZXMtY29uZmlndXJhdGlvbiIsYW5zOnQsYToiZGVmYXVsdC1zdHlsZS1uYW1lIn0se2Vuczp0LGVuOiJhbHBoYWJldGljYWwtaW5kZXgtZW50cnktdGVtcGxhdGUiLGFuczp0LGE6InN0eWxlLW5hbWUifSx7ZW5zOnQsZW46ImJpYmxpb2dyYXBoeS1lbnRyeS10ZW1wbGF0ZSIsYW5zOnQsYToic3R5bGUtbmFtZSJ9LHtlbnM6dCxlbjoiaCIsYW5zOnQsYToic3R5bGUtbmFtZSJ9LHtlbnM6dCxlbjoiaWxsdXN0cmF0aW9uLWluZGV4LWVudHJ5LXRlbXBsYXRlIixhbnM6dCxhOiJzdHlsZS1uYW1lIn0sCntlbnM6dCxlbjoiaW5kZXgtc291cmNlLXN0eWxlIixhbnM6dCxhOiJzdHlsZS1uYW1lIn0se2Vuczp0LGVuOiJvYmplY3QtaW5kZXgtZW50cnktdGVtcGxhdGUiLGFuczp0LGE6InN0eWxlLW5hbWUifSx7ZW5zOnQsZW46InAiLGFuczp0LGE6InN0eWxlLW5hbWUifSx7ZW5zOnQsZW46InRhYmxlLWluZGV4LWVudHJ5LXRlbXBsYXRlIixhbnM6dCxhOiJzdHlsZS1uYW1lIn0se2Vuczp0LGVuOiJ0YWJsZS1vZi1jb250ZW50LWVudHJ5LXRlbXBsYXRlIixhbnM6dCxhOiJzdHlsZS1uYW1lIn0se2Vuczp0LGVuOiJ0YWJsZS1pbmRleC1lbnRyeS10ZW1wbGF0ZSIsYW5zOnQsYToic3R5bGUtbmFtZSJ9LHtlbnM6dCxlbjoidXNlci1pbmRleC1lbnRyeS10ZW1wbGF0ZSIsYW5zOnQsYToic3R5bGUtbmFtZSJ9LHtlbnM6dixlbjoicGFnZS1sYXlvdXQtcHJvcGVydGllcyIsYW5zOnYsYToicmVnaXN0ZXItdHJ1dGgtcmVmLXN0eWxlLW5hbWUifV0sY2hhcnQ6W3tlbnM6YSxlbjoiYXhpcyIsYW5zOmEsCmE6InN0eWxlLW5hbWUifSx7ZW5zOmEsZW46ImNoYXJ0IixhbnM6YSxhOiJzdHlsZS1uYW1lIn0se2VuczphLGVuOiJkYXRhLWxhYmVsIixhbnM6YSxhOiJzdHlsZS1uYW1lIn0se2VuczphLGVuOiJkYXRhLXBvaW50IixhbnM6YSxhOiJzdHlsZS1uYW1lIn0se2VuczphLGVuOiJlcXVhdGlvbiIsYW5zOmEsYToic3R5bGUtbmFtZSJ9LHtlbnM6YSxlbjoiZXJyb3ItaW5kaWNhdG9yIixhbnM6YSxhOiJzdHlsZS1uYW1lIn0se2VuczphLGVuOiJmbG9vciIsYW5zOmEsYToic3R5bGUtbmFtZSJ9LHtlbnM6YSxlbjoiZm9vdGVyIixhbnM6YSxhOiJzdHlsZS1uYW1lIn0se2VuczphLGVuOiJncmlkIixhbnM6YSxhOiJzdHlsZS1uYW1lIn0se2VuczphLGVuOiJsZWdlbmQiLGFuczphLGE6InN0eWxlLW5hbWUifSx7ZW5zOmEsZW46Im1lYW4tdmFsdWUiLGFuczphLGE6InN0eWxlLW5hbWUifSx7ZW5zOmEsZW46InBsb3QtYXJlYSIsYW5zOmEsYToic3R5bGUtbmFtZSJ9LHtlbnM6YSxlbjoicmVncmVzc2lvbi1jdXJ2ZSIsCmFuczphLGE6InN0eWxlLW5hbWUifSx7ZW5zOmEsZW46InNlcmllcyIsYW5zOmEsYToic3R5bGUtbmFtZSJ9LHtlbnM6YSxlbjoic3RvY2stZ2Fpbi1tYXJrZXIiLGFuczphLGE6InN0eWxlLW5hbWUifSx7ZW5zOmEsZW46InN0b2NrLWxvc3MtbWFya2VyIixhbnM6YSxhOiJzdHlsZS1uYW1lIn0se2VuczphLGVuOiJzdG9jay1yYW5nZS1saW5lIixhbnM6YSxhOiJzdHlsZS1uYW1lIn0se2VuczphLGVuOiJzdWJ0aXRsZSIsYW5zOmEsYToic3R5bGUtbmFtZSJ9LHtlbnM6YSxlbjoidGl0bGUiLGFuczphLGE6InN0eWxlLW5hbWUifSx7ZW5zOmEsZW46IndhbGwiLGFuczphLGE6InN0eWxlLW5hbWUifV0sc2VjdGlvbjpbe2Vuczp0LGVuOiJhbHBoYWJldGljYWwtaW5kZXgiLGFuczp0LGE6InN0eWxlLW5hbWUifSx7ZW5zOnQsZW46ImJpYmxpb2dyYXBoeSIsYW5zOnQsYToic3R5bGUtbmFtZSJ9LHtlbnM6dCxlbjoiaWxsdXN0cmF0aW9uLWluZGV4IixhbnM6dCxhOiJzdHlsZS1uYW1lIn0sCntlbnM6dCxlbjoiaW5kZXgtdGl0bGUiLGFuczp0LGE6InN0eWxlLW5hbWUifSx7ZW5zOnQsZW46Im9iamVjdC1pbmRleCIsYW5zOnQsYToic3R5bGUtbmFtZSJ9LHtlbnM6dCxlbjoic2VjdGlvbiIsYW5zOnQsYToic3R5bGUtbmFtZSJ9LHtlbnM6dCxlbjoidGFibGUtb2YtY29udGVudCIsYW5zOnQsYToic3R5bGUtbmFtZSJ9LHtlbnM6dCxlbjoidGFibGUtaW5kZXgiLGFuczp0LGE6InN0eWxlLW5hbWUifSx7ZW5zOnQsZW46InVzZXItaW5kZXgiLGFuczp0LGE6InN0eWxlLW5hbWUifV0scnVieTpbe2Vuczp0LGVuOiJydWJ5IixhbnM6dCxhOiJzdHlsZS1uYW1lIn1dLHRhYmxlOlt7ZW5zOmMsZW46InF1ZXJ5IixhbnM6YyxhOiJzdHlsZS1uYW1lIn0se2VuczpjLGVuOiJ0YWJsZS1yZXByZXNlbnRhdGlvbiIsYW5zOmMsYToic3R5bGUtbmFtZSJ9LHtlbnM6dSxlbjoiYmFja2dyb3VuZCIsYW5zOnUsYToic3R5bGUtbmFtZSJ9LHtlbnM6dSxlbjoidGFibGUiLGFuczp1LGE6InN0eWxlLW5hbWUifV0sCiJ0YWJsZS1jb2x1bW4iOlt7ZW5zOmMsZW46ImNvbHVtbiIsYW5zOmMsYToic3R5bGUtbmFtZSJ9LHtlbnM6dSxlbjoidGFibGUtY29sdW1uIixhbnM6dSxhOiJzdHlsZS1uYW1lIn1dLCJ0YWJsZS1yb3ciOlt7ZW5zOmMsZW46InF1ZXJ5IixhbnM6YyxhOiJkZWZhdWx0LXJvdy1zdHlsZS1uYW1lIn0se2VuczpjLGVuOiJ0YWJsZS1yZXByZXNlbnRhdGlvbiIsYW5zOmMsYToiZGVmYXVsdC1yb3ctc3R5bGUtbmFtZSJ9LHtlbnM6dSxlbjoidGFibGUtcm93IixhbnM6dSxhOiJzdHlsZS1uYW1lIn1dLCJ0YWJsZS1jZWxsIjpbe2VuczpjLGVuOiJjb2x1bW4iLGFuczpjLGE6ImRlZmF1bHQtY2VsbC1zdHlsZS1uYW1lIn0se2Vuczp1LGVuOiJ0YWJsZS1jb2x1bW4iLGFuczp1LGE6ImRlZmF1bHQtY2VsbC1zdHlsZS1uYW1lIn0se2Vuczp1LGVuOiJ0YWJsZS1yb3ciLGFuczp1LGE6ImRlZmF1bHQtY2VsbC1zdHlsZS1uYW1lIn0se2Vuczp1LGVuOiJib2R5IixhbnM6dSxhOiJzdHlsZS1uYW1lIn0sCntlbnM6dSxlbjoiY292ZXJlZC10YWJsZS1jZWxsIixhbnM6dSxhOiJzdHlsZS1uYW1lIn0se2Vuczp1LGVuOiJldmVuLWNvbHVtbnMiLGFuczp1LGE6InN0eWxlLW5hbWUifSx7ZW5zOnUsZW46ImNvdmVyZWQtdGFibGUtY2VsbCIsYW5zOnUsYToic3R5bGUtbmFtZSJ9LHtlbnM6dSxlbjoiZXZlbi1jb2x1bW5zIixhbnM6dSxhOiJzdHlsZS1uYW1lIn0se2Vuczp1LGVuOiJldmVuLXJvd3MiLGFuczp1LGE6InN0eWxlLW5hbWUifSx7ZW5zOnUsZW46ImZpcnN0LWNvbHVtbiIsYW5zOnUsYToic3R5bGUtbmFtZSJ9LHtlbnM6dSxlbjoiZmlyc3Qtcm93IixhbnM6dSxhOiJzdHlsZS1uYW1lIn0se2Vuczp1LGVuOiJsYXN0LWNvbHVtbiIsYW5zOnUsYToic3R5bGUtbmFtZSJ9LHtlbnM6dSxlbjoibGFzdC1yb3ciLGFuczp1LGE6InN0eWxlLW5hbWUifSx7ZW5zOnUsZW46Im9kZC1jb2x1bW5zIixhbnM6dSxhOiJzdHlsZS1uYW1lIn0se2Vuczp1LGVuOiJvZGQtcm93cyIsYW5zOnUsYToic3R5bGUtbmFtZSJ9LAp7ZW5zOnUsZW46InRhYmxlLWNlbGwiLGFuczp1LGE6InN0eWxlLW5hbWUifV0sZ3JhcGhpYzpbe2VuczptLGVuOiJjdWJlIixhbnM6aCxhOiJzdHlsZS1uYW1lIn0se2VuczptLGVuOiJleHRydWRlIixhbnM6aCxhOiJzdHlsZS1uYW1lIn0se2VuczptLGVuOiJyb3RhdGUiLGFuczpoLGE6InN0eWxlLW5hbWUifSx7ZW5zOm0sZW46InNjZW5lIixhbnM6aCxhOiJzdHlsZS1uYW1lIn0se2VuczptLGVuOiJzcGhlcmUiLGFuczpoLGE6InN0eWxlLW5hbWUifSx7ZW5zOmgsZW46ImNhcHRpb24iLGFuczpoLGE6InN0eWxlLW5hbWUifSx7ZW5zOmgsZW46ImNpcmNsZSIsYW5zOmgsYToic3R5bGUtbmFtZSJ9LHtlbnM6aCxlbjoiY29ubmVjdG9yIixhbnM6aCxhOiJzdHlsZS1uYW1lIn0se2VuczpoLGVuOiJjb250cm9sIixhbnM6aCxhOiJzdHlsZS1uYW1lIn0se2VuczpoLGVuOiJjdXN0b20tc2hhcGUiLGFuczpoLGE6InN0eWxlLW5hbWUifSx7ZW5zOmgsZW46ImVsbGlwc2UiLGFuczpoLGE6InN0eWxlLW5hbWUifSwKe2VuczpoLGVuOiJmcmFtZSIsYW5zOmgsYToic3R5bGUtbmFtZSJ9LHtlbnM6aCxlbjoiZyIsYW5zOmgsYToic3R5bGUtbmFtZSJ9LHtlbnM6aCxlbjoibGluZSIsYW5zOmgsYToic3R5bGUtbmFtZSJ9LHtlbnM6aCxlbjoibWVhc3VyZSIsYW5zOmgsYToic3R5bGUtbmFtZSJ9LHtlbnM6aCxlbjoicGFnZS10aHVtYm5haWwiLGFuczpoLGE6InN0eWxlLW5hbWUifSx7ZW5zOmgsZW46InBhdGgiLGFuczpoLGE6InN0eWxlLW5hbWUifSx7ZW5zOmgsZW46InBvbHlnb24iLGFuczpoLGE6InN0eWxlLW5hbWUifSx7ZW5zOmgsZW46InBvbHlsaW5lIixhbnM6aCxhOiJzdHlsZS1uYW1lIn0se2VuczpoLGVuOiJyZWN0IixhbnM6aCxhOiJzdHlsZS1uYW1lIn0se2VuczpoLGVuOiJyZWd1bGFyLXBvbHlnb24iLGFuczpoLGE6InN0eWxlLW5hbWUifSx7ZW5zOnosZW46ImFubm90YXRpb24iLGFuczpoLGE6InN0eWxlLW5hbWUifV0scHJlc2VudGF0aW9uOlt7ZW5zOm0sZW46ImN1YmUiLGFuczp3LAphOiJzdHlsZS1uYW1lIn0se2VuczptLGVuOiJleHRydWRlIixhbnM6dyxhOiJzdHlsZS1uYW1lIn0se2VuczptLGVuOiJyb3RhdGUiLGFuczp3LGE6InN0eWxlLW5hbWUifSx7ZW5zOm0sZW46InNjZW5lIixhbnM6dyxhOiJzdHlsZS1uYW1lIn0se2VuczptLGVuOiJzcGhlcmUiLGFuczp3LGE6InN0eWxlLW5hbWUifSx7ZW5zOmgsZW46ImNhcHRpb24iLGFuczp3LGE6InN0eWxlLW5hbWUifSx7ZW5zOmgsZW46ImNpcmNsZSIsYW5zOncsYToic3R5bGUtbmFtZSJ9LHtlbnM6aCxlbjoiY29ubmVjdG9yIixhbnM6dyxhOiJzdHlsZS1uYW1lIn0se2VuczpoLGVuOiJjb250cm9sIixhbnM6dyxhOiJzdHlsZS1uYW1lIn0se2VuczpoLGVuOiJjdXN0b20tc2hhcGUiLGFuczp3LGE6InN0eWxlLW5hbWUifSx7ZW5zOmgsZW46ImVsbGlwc2UiLGFuczp3LGE6InN0eWxlLW5hbWUifSx7ZW5zOmgsZW46ImZyYW1lIixhbnM6dyxhOiJzdHlsZS1uYW1lIn0se2VuczpoLGVuOiJnIixhbnM6dyxhOiJzdHlsZS1uYW1lIn0sCntlbnM6aCxlbjoibGluZSIsYW5zOncsYToic3R5bGUtbmFtZSJ9LHtlbnM6aCxlbjoibWVhc3VyZSIsYW5zOncsYToic3R5bGUtbmFtZSJ9LHtlbnM6aCxlbjoicGFnZS10aHVtYm5haWwiLGFuczp3LGE6InN0eWxlLW5hbWUifSx7ZW5zOmgsZW46InBhdGgiLGFuczp3LGE6InN0eWxlLW5hbWUifSx7ZW5zOmgsZW46InBvbHlnb24iLGFuczp3LGE6InN0eWxlLW5hbWUifSx7ZW5zOmgsZW46InBvbHlsaW5lIixhbnM6dyxhOiJzdHlsZS1uYW1lIn0se2VuczpoLGVuOiJyZWN0IixhbnM6dyxhOiJzdHlsZS1uYW1lIn0se2VuczpoLGVuOiJyZWd1bGFyLXBvbHlnb24iLGFuczp3LGE6InN0eWxlLW5hbWUifSx7ZW5zOnosZW46ImFubm90YXRpb24iLGFuczp3LGE6InN0eWxlLW5hbWUifV0sImRyYXdpbmctcGFnZSI6W3tlbnM6aCxlbjoicGFnZSIsYW5zOmgsYToic3R5bGUtbmFtZSJ9LHtlbnM6dyxlbjoibm90ZXMiLGFuczpoLGE6InN0eWxlLW5hbWUifSx7ZW5zOnYsZW46ImhhbmRvdXQtbWFzdGVyIiwKYW5zOmgsYToic3R5bGUtbmFtZSJ9LHtlbnM6dixlbjoibWFzdGVyLXBhZ2UiLGFuczpoLGE6InN0eWxlLW5hbWUifV0sImxpc3Qtc3R5bGUiOlt7ZW5zOnQsZW46Imxpc3QiLGFuczp0LGE6InN0eWxlLW5hbWUifSx7ZW5zOnQsZW46Im51bWJlcmVkLXBhcmFncmFwaCIsYW5zOnQsYToic3R5bGUtbmFtZSJ9LHtlbnM6dCxlbjoibGlzdC1pdGVtIixhbnM6dCxhOiJzdHlsZS1vdmVycmlkZSJ9LHtlbnM6dixlbjoic3R5bGUiLGFuczp2LGE6Imxpc3Qtc3R5bGUtbmFtZSJ9XSxkYXRhOlt7ZW5zOnYsZW46InN0eWxlIixhbnM6dixhOiJkYXRhLXN0eWxlLW5hbWUifSx7ZW5zOnYsZW46InN0eWxlIixhbnM6dixhOiJwZXJjZW50YWdlLWRhdGEtc3R5bGUtbmFtZSJ9LHtlbnM6dyxlbjoiZGF0ZS10aW1lLWRlY2wiLGFuczp2LGE6ImRhdGEtc3R5bGUtbmFtZSJ9LHtlbnM6dCxlbjoiY3JlYXRpb24tZGF0ZSIsYW5zOnYsYToiZGF0YS1zdHlsZS1uYW1lIn0se2Vuczp0LGVuOiJjcmVhdGlvbi10aW1lIiwKYW5zOnYsYToiZGF0YS1zdHlsZS1uYW1lIn0se2Vuczp0LGVuOiJkYXRhYmFzZS1kaXNwbGF5IixhbnM6dixhOiJkYXRhLXN0eWxlLW5hbWUifSx7ZW5zOnQsZW46ImRhdGUiLGFuczp2LGE6ImRhdGEtc3R5bGUtbmFtZSJ9LHtlbnM6dCxlbjoiZWRpdGluZy1kdXJhdGlvbiIsYW5zOnYsYToiZGF0YS1zdHlsZS1uYW1lIn0se2Vuczp0LGVuOiJleHByZXNzaW9uIixhbnM6dixhOiJkYXRhLXN0eWxlLW5hbWUifSx7ZW5zOnQsZW46Im1ldGEtZmllbGQiLGFuczp2LGE6ImRhdGEtc3R5bGUtbmFtZSJ9LHtlbnM6dCxlbjoibW9kaWZpY2F0aW9uLWRhdGUiLGFuczp2LGE6ImRhdGEtc3R5bGUtbmFtZSJ9LHtlbnM6dCxlbjoibW9kaWZpY2F0aW9uLXRpbWUiLGFuczp2LGE6ImRhdGEtc3R5bGUtbmFtZSJ9LHtlbnM6dCxlbjoicHJpbnQtZGF0ZSIsYW5zOnYsYToiZGF0YS1zdHlsZS1uYW1lIn0se2Vuczp0LGVuOiJwcmludC10aW1lIixhbnM6dixhOiJkYXRhLXN0eWxlLW5hbWUifSx7ZW5zOnQsCmVuOiJ0YWJsZS1mb3JtdWxhIixhbnM6dixhOiJkYXRhLXN0eWxlLW5hbWUifSx7ZW5zOnQsZW46InRpbWUiLGFuczp2LGE6ImRhdGEtc3R5bGUtbmFtZSJ9LHtlbnM6dCxlbjoidXNlci1kZWZpbmVkIixhbnM6dixhOiJkYXRhLXN0eWxlLW5hbWUifSx7ZW5zOnQsZW46InVzZXItZmllbGQtZ2V0IixhbnM6dixhOiJkYXRhLXN0eWxlLW5hbWUifSx7ZW5zOnQsZW46InVzZXItZmllbGQtaW5wdXQiLGFuczp2LGE6ImRhdGEtc3R5bGUtbmFtZSJ9LHtlbnM6dCxlbjoidmFyaWFibGUtZ2V0IixhbnM6dixhOiJkYXRhLXN0eWxlLW5hbWUifSx7ZW5zOnQsZW46InZhcmlhYmxlLWlucHV0IixhbnM6dixhOiJkYXRhLXN0eWxlLW5hbWUifSx7ZW5zOnQsZW46InZhcmlhYmxlLXNldCIsYW5zOnYsYToiZGF0YS1zdHlsZS1uYW1lIn1dLCJwYWdlLWxheW91dCI6W3tlbnM6dyxlbjoibm90ZXMiLGFuczp2LGE6InBhZ2UtbGF5b3V0LW5hbWUifSx7ZW5zOnYsZW46ImhhbmRvdXQtbWFzdGVyIixhbnM6diwKYToicGFnZS1sYXlvdXQtbmFtZSJ9LHtlbnM6dixlbjoibWFzdGVyLXBhZ2UiLGFuczp2LGE6InBhZ2UtbGF5b3V0LW5hbWUifV19LEssTD14bWxkb20uWFBhdGg7dGhpcy5jb2xsZWN0VXNlZEZvbnRGYWNlcz1lO3RoaXMuY2hhbmdlRm9udEZhY2VOYW1lcz1sO3RoaXMuVXNlZFN0eWxlTGlzdD1mdW5jdGlvbihhLGMpe3ZhciBkPXt9O3RoaXMudXNlcz1mdW5jdGlvbihhKXt2YXIgYz1hLmxvY2FsTmFtZSxiPWEuZ2V0QXR0cmlidXRlTlMoaCwibmFtZSIpfHxhLmdldEF0dHJpYnV0ZU5TKHYsIm5hbWUiKTthPSJzdHlsZSI9PT1jP2EuZ2V0QXR0cmlidXRlTlModiwiZmFtaWx5Iik6YS5uYW1lc3BhY2VVUkk9PT14PyJkYXRhIjpjO3JldHVybihhPWRbYV0pPzA8YVtiXTohMX07YihhLGQpO2MmJnEoYyxkKX07dGhpcy5nZXRTdHlsZU5hbWU9ZnVuY3Rpb24oYSxjKXt2YXIgYixkLGg9S1tjLmxvY2FsTmFtZV07aWYoaCYmKGg9aFtjLm5hbWVzcGFjZVVSSV0pKWZvcihkPTA7ZDxoLmxlbmd0aDtkKz0KMSlpZihoW2RdLmtleW5hbWU9PT1hJiYoaD1oW2RdLGMuaGFzQXR0cmlidXRlTlMoaC5ucyxoLmxvY2FsbmFtZSkpKXtiPWMuZ2V0QXR0cmlidXRlTlMoaC5ucyxoLmxvY2FsbmFtZSk7YnJlYWt9cmV0dXJuIGJ9O3RoaXMuaGFzRGVyaXZlZFN0eWxlcz1mdW5jdGlvbihhLGMsYil7dmFyIGQ9Yi5nZXRBdHRyaWJ1dGVOUyh2LCJuYW1lIik7Yj1iLmdldEF0dHJpYnV0ZU5TKHYsImZhbWlseSIpO3JldHVybiBMLmdldE9ERkVsZW1lbnRzV2l0aFhQYXRoKGEsJy8vc3R5bGU6KltAc3R5bGU6cGFyZW50LXN0eWxlLW5hbWU9IicrZCsnIl1bQHN0eWxlOmZhbWlseT0iJytiKyciXScsYykubGVuZ3RoPyEwOiExfTt0aGlzLnByZWZpeFN0eWxlTmFtZXM9ZnVuY3Rpb24oYSxjLGIpe3ZhciBkO2lmKGEpe2ZvcihkPWEuZmlyc3RDaGlsZDtkOyl7aWYoZC5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFKXt2YXIgbT1kLGU9YyxsPW0uZ2V0QXR0cmlidXRlTlMoaCwibmFtZSIpLGY9dm9pZCAwOwpsP2Y9aDoobD1tLmdldEF0dHJpYnV0ZU5TKHYsIm5hbWUiKSkmJihmPXYpO2YmJm0uc2V0QXR0cmlidXRlTlMoZixBW2ZdKyJuYW1lIixlK2wpfWQ9ZC5uZXh0U2libGluZ31nKGEsYyk7YiYmZyhiLGMpfX07dGhpcy5yZW1vdmVQcmVmaXhGcm9tU3R5bGVOYW1lcz1mdW5jdGlvbihhLGMsYil7dmFyIGQ9bmV3IFJlZ0V4cCgiXiIrYyk7aWYoYSl7Zm9yKGM9YS5maXJzdENoaWxkO2M7KXtpZihjLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUpe3ZhciBtPWMsZT1kLGw9bS5nZXRBdHRyaWJ1dGVOUyhoLCJuYW1lIiksZj12b2lkIDA7bD9mPWg6KGw9bS5nZXRBdHRyaWJ1dGVOUyh2LCJuYW1lIikpJiYoZj12KTtmJiYobD1sLnJlcGxhY2UoZSwiIiksbS5zZXRBdHRyaWJ1dGVOUyhmLEFbZl0rIm5hbWUiLGwpKX1jPWMubmV4dFNpYmxpbmd9ayhhLGQpO2ImJmsoYixkKX19O3RoaXMuZGV0ZXJtaW5lU3R5bGVzRm9yTm9kZT1kO0s9ZnVuY3Rpb24oKXt2YXIgYSxjLGIsZCxoLG09e30sCmUsbCxmLG47Zm9yKGIgaW4gSSlpZihJLmhhc093blByb3BlcnR5KGIpKWZvcihkPUlbYl0sYz1kLmxlbmd0aCxhPTA7YTxjO2ErPTEpaD1kW2FdLGY9aC5lbixuPWguZW5zLG0uaGFzT3duUHJvcGVydHkoZik/ZT1tW2ZdOm1bZl09ZT17fSxlLmhhc093blByb3BlcnR5KG4pP2w9ZVtuXTplW25dPWw9W10sbC5wdXNoKHtuczpoLmFucyxsb2NhbG5hbWU6aC5hLGtleW5hbWU6Yn0pO3JldHVybiBtfSgpfTsiZnVuY3Rpb24iIT09dHlwZW9mIE9iamVjdC5jcmVhdGUmJihPYmplY3QuY3JlYXRlPWZ1bmN0aW9uKGcpe3ZhciBrPWZ1bmN0aW9uKCl7fTtrLnByb3RvdHlwZT1nO3JldHVybiBuZXcga30pOwp4bWxkb20uTFNTZXJpYWxpemVyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZyhiKXt2YXIgZD1ifHx7fSxnPWZ1bmN0aW9uKGIpe3ZhciBhPXt9LGM7Zm9yKGMgaW4gYiliLmhhc093blByb3BlcnR5KGMpJiYoYVtiW2NdXT1jKTtyZXR1cm4gYX0oYiksaz1bZF0scT1bZ10sZT0wO3RoaXMucHVzaD1mdW5jdGlvbigpe2UrPTE7ZD1rW2VdPU9iamVjdC5jcmVhdGUoZCk7Zz1xW2VdPU9iamVjdC5jcmVhdGUoZyl9O3RoaXMucG9wPWZ1bmN0aW9uKCl7ay5wb3AoKTtxLnBvcCgpOy0tZTtkPWtbZV07Zz1xW2VdfTt0aGlzLmdldExvY2FsTmFtZXNwYWNlRGVmaW5pdGlvbnM9ZnVuY3Rpb24oKXtyZXR1cm4gZ307dGhpcy5nZXRRTmFtZT1mdW5jdGlvbihiKXt2YXIgYT1iLm5hbWVzcGFjZVVSSSxjPTAsbTtpZighYSlyZXR1cm4gYi5sb2NhbE5hbWU7aWYobT1nW2FdKXJldHVybiBtKyI6IitiLmxvY2FsTmFtZTtkb3ttfHwhYi5wcmVmaXg/KG09Im5zIitjLGMrPTEpOm09Yi5wcmVmaXg7aWYoZFttXT09PQphKWJyZWFrO2lmKCFkW21dKXtkW21dPWE7Z1thXT1tO2JyZWFrfW09bnVsbH13aGlsZShudWxsPT09bSk7cmV0dXJuIG0rIjoiK2IubG9jYWxOYW1lfX1mdW5jdGlvbiBrKGIpe3JldHVybiBiLnJlcGxhY2UoLyYvZywiJmFtcDsiKS5yZXBsYWNlKC88L2csIiZsdDsiKS5yZXBsYWNlKC8+L2csIiZndDsiKS5yZXBsYWNlKC8nL2csIiZhcG9zOyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7Iil9ZnVuY3Rpb24gZChmLG4pe3ZhciBnPSIiLHI9Yi5maWx0ZXI/Yi5maWx0ZXIuYWNjZXB0Tm9kZShuKTpOb2RlRmlsdGVyLkZJTFRFUl9BQ0NFUFQscTtpZihyPT09Tm9kZUZpbHRlci5GSUxURVJfQUNDRVBUJiZuLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUpe2YucHVzaCgpO3E9Zi5nZXRRTmFtZShuKTt2YXIgZSxsPW4uYXR0cmlidXRlcyxhLGMsbSxoPSIiLHk7ZT0iPCIrcTthPWwubGVuZ3RoO2ZvcihjPTA7YzxhO2MrPTEpbT1sLml0ZW0oYyksImh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIiE9PQptLm5hbWVzcGFjZVVSSSYmKHk9Yi5maWx0ZXI/Yi5maWx0ZXIuYWNjZXB0Tm9kZShtKTpOb2RlRmlsdGVyLkZJTFRFUl9BQ0NFUFQseT09PU5vZGVGaWx0ZXIuRklMVEVSX0FDQ0VQVCYmKHk9Zi5nZXRRTmFtZShtKSxtPSJzdHJpbmciPT09dHlwZW9mIG0udmFsdWU/ayhtLnZhbHVlKTptLnZhbHVlLGgrPSIgIisoeSsnPSInK20rJyInKSkpO2E9Zi5nZXRMb2NhbE5hbWVzcGFjZURlZmluaXRpb25zKCk7Zm9yKGMgaW4gYSlhLmhhc093blByb3BlcnR5KGMpJiYoKGw9YVtjXSk/InhtbG5zIiE9PWwmJihlKz0iIHhtbG5zOiIrYVtjXSsnPSInK2MrJyInKTplKz0nIHhtbG5zPSInK2MrJyInKTtnKz1lKyhoKyI+Iil9aWYocj09PU5vZGVGaWx0ZXIuRklMVEVSX0FDQ0VQVHx8cj09PU5vZGVGaWx0ZXIuRklMVEVSX1NLSVApe2ZvcihyPW4uZmlyc3RDaGlsZDtyOylnKz1kKGYscikscj1yLm5leHRTaWJsaW5nO24ubm9kZVZhbHVlJiYoZys9ayhuLm5vZGVWYWx1ZSkpfXEmJihnKz0iPC8iKwpxKyI+IixmLnBvcCgpKTtyZXR1cm4gZ312YXIgYj10aGlzO3RoaXMuZmlsdGVyPW51bGw7dGhpcy53cml0ZVRvU3RyaW5nPWZ1bmN0aW9uKGIsbil7aWYoIWIpcmV0dXJuIiI7dmFyIGs9bmV3IGcobik7cmV0dXJuIGQoayxiKX19OwooZnVuY3Rpb24oKXtmdW5jdGlvbiBnKGIpe3ZhciBhLGM9ci5sZW5ndGg7Zm9yKGE9MDthPGM7YSs9MSlpZigidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpvZmZpY2U6MS4wIj09PWIubmFtZXNwYWNlVVJJJiZiLmxvY2FsTmFtZT09PXJbYV0pcmV0dXJuIGE7cmV0dXJuLTF9ZnVuY3Rpb24gayhiLGEpe3ZhciBjPW5ldyBmLlVzZWRTdHlsZUxpc3QoYixhKSxkPW5ldyBvZGYuT2RmTm9kZUZpbHRlcjt0aGlzLmFjY2VwdE5vZGU9ZnVuY3Rpb24oYil7dmFyIGU9ZC5hY2NlcHROb2RlKGIpO2U9PT1Ob2RlRmlsdGVyLkZJTFRFUl9BQ0NFUFQmJmIucGFyZW50Tm9kZT09PWEmJmIubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSYmKGU9Yy51c2VzKGIpP05vZGVGaWx0ZXIuRklMVEVSX0FDQ0VQVDpOb2RlRmlsdGVyLkZJTFRFUl9SRUpFQ1QpO3JldHVybiBlfX1mdW5jdGlvbiBkKGIsYSl7dmFyIGM9bmV3IGsoYixhKTt0aGlzLmFjY2VwdE5vZGU9ZnVuY3Rpb24oYSl7dmFyIGI9CmMuYWNjZXB0Tm9kZShhKTtiIT09Tm9kZUZpbHRlci5GSUxURVJfQUNDRVBUfHwhYS5wYXJlbnROb2RlfHxhLnBhcmVudE5vZGUubmFtZXNwYWNlVVJJIT09b2RmLk5hbWVzcGFjZXMudGV4dG5zfHwicyIhPT1hLnBhcmVudE5vZGUubG9jYWxOYW1lJiYidGFiIiE9PWEucGFyZW50Tm9kZS5sb2NhbE5hbWV8fChiPU5vZGVGaWx0ZXIuRklMVEVSX1JFSkVDVCk7cmV0dXJuIGJ9fWZ1bmN0aW9uIGIoYixhKXtpZihhKXt2YXIgYz1nKGEpLGQsaD1iLmZpcnN0Q2hpbGQ7aWYoLTEhPT1jKXtmb3IoO2g7KXtkPWcoaCk7aWYoLTEhPT1kJiZkPmMpYnJlYWs7aD1oLm5leHRTaWJsaW5nfWIuaW5zZXJ0QmVmb3JlKGEsaCl9fX12YXIgZj1uZXcgb2RmLlN0eWxlSW5mbyxuPWNvcmUuRG9tVXRpbHMscD1vZGYuTmFtZXNwYWNlcy5zdHlsZW5zLHI9Im1ldGEgc2V0dGluZ3Mgc2NyaXB0cyBmb250LWZhY2UtZGVjbHMgc3R5bGVzIGF1dG9tYXRpYy1zdHlsZXMgbWFzdGVyLXN0eWxlcyBib2R5Ii5zcGxpdCgiICIpLApxPURhdGUubm93KCkrIl93ZWJvZGZfIixlPW5ldyBjb3JlLkJhc2U2NDtvZGYuT0RGRWxlbWVudD1mdW5jdGlvbigpe307b2RmLk9ERkRvY3VtZW50RWxlbWVudD1mdW5jdGlvbigpe307b2RmLk9ERkRvY3VtZW50RWxlbWVudC5wcm90b3R5cGU9bmV3IG9kZi5PREZFbGVtZW50O29kZi5PREZEb2N1bWVudEVsZW1lbnQucHJvdG90eXBlLmNvbnN0cnVjdG9yPW9kZi5PREZEb2N1bWVudEVsZW1lbnQ7b2RmLk9ERkRvY3VtZW50RWxlbWVudC5wcm90b3R5cGUuZm9udEZhY2VEZWNscz1udWxsO29kZi5PREZEb2N1bWVudEVsZW1lbnQucHJvdG90eXBlLm1hbmlmZXN0PW51bGw7b2RmLk9ERkRvY3VtZW50RWxlbWVudC5wcm90b3R5cGUuc2V0dGluZ3M9bnVsbDtvZGYuT0RGRG9jdW1lbnRFbGVtZW50Lm5hbWVzcGFjZVVSST0idXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpvZmZpY2U6MS4wIjtvZGYuT0RGRG9jdW1lbnRFbGVtZW50LmxvY2FsTmFtZT0iZG9jdW1lbnQiOwpvZGYuQW5ub3RhdGlvbkVsZW1lbnQ9ZnVuY3Rpb24oKXt9O29kZi5PZGZQYXJ0PWZ1bmN0aW9uKGIsYSxjLGQpe3ZhciBoPXRoaXM7dGhpcy5zaXplPTA7dGhpcy50eXBlPW51bGw7dGhpcy5uYW1lPWI7dGhpcy5jb250YWluZXI9Yzt0aGlzLnVybD1udWxsO3RoaXMubWltZXR5cGU9YTt0aGlzLm9uc3RhdGVyZWFkeWNoYW5nZT10aGlzLmRvY3VtZW50PW51bGw7dGhpcy5FTVBUWT0wO3RoaXMuTE9BRElORz0xO3RoaXMuRE9ORT0yO3RoaXMuc3RhdGU9dGhpcy5FTVBUWTt0aGlzLmRhdGE9IiI7dGhpcy5sb2FkPWZ1bmN0aW9uKCl7bnVsbCE9PWQmJih0aGlzLm1pbWV0eXBlPWEsZC5sb2FkQXNEYXRhVVJMKGIsYSxmdW5jdGlvbihhLGMpe2EmJnJ1bnRpbWUubG9nKGEpO2gudXJsPWM7aWYoaC5vbmNoYW5nZSloLm9uY2hhbmdlKGgpO2lmKGgub25zdGF0ZXJlYWR5Y2hhbmdlKWgub25zdGF0ZXJlYWR5Y2hhbmdlKGgpfSkpfX07b2RmLk9kZlBhcnQucHJvdG90eXBlLmxvYWQ9ZnVuY3Rpb24oKXt9OwpvZGYuT2RmUGFydC5wcm90b3R5cGUuZ2V0VXJsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YT8iZGF0YTo7YmFzZTY0LCIrZS50b0Jhc2U2NCh0aGlzLmRhdGEpOm51bGx9O29kZi5PZGZDb250YWluZXI9ZnVuY3Rpb24gYShjLG0pe2Z1bmN0aW9uIGgoYSl7Zm9yKHZhciBjPWEuZmlyc3RDaGlsZCxiO2M7KWI9Yy5uZXh0U2libGluZyxjLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREU/aChjKTpjLm5vZGVUeXBlPT09Tm9kZS5QUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREUmJmEucmVtb3ZlQ2hpbGQoYyksYz1ifWZ1bmN0aW9uIGcoYSl7dmFyIGM9e30sYixkLGg9YS5vd25lckRvY3VtZW50LmNyZWF0ZU5vZGVJdGVyYXRvcihhLE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5ULG51bGwsITEpO2ZvcihhPWgubmV4dE5vZGUoKTthOykidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpvZmZpY2U6MS4wIj09PWEubmFtZXNwYWNlVVJJJiYoImFubm90YXRpb24iPT09CmEubG9jYWxOYW1lPyhiPWEuZ2V0QXR0cmlidXRlTlMoInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6b2ZmaWNlOjEuMCIsIm5hbWUiKSkmJihjLmhhc093blByb3BlcnR5KGIpP3J1bnRpbWUubG9nKCJXYXJuaW5nOiBhbm5vdGF0aW9uIG5hbWUgdXNlZCBtb3JlIHRoYW4gb25jZSB3aXRoIDxvZmZpY2U6YW5ub3RhdGlvbi8+OiAnIitiKyInIik6Y1tiXT1hKToiYW5ub3RhdGlvbi1lbmQiPT09YS5sb2NhbE5hbWUmJigoYj1hLmdldEF0dHJpYnV0ZU5TKCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm9mZmljZToxLjAiLCJuYW1lIikpP2MuaGFzT3duUHJvcGVydHkoYik/KGQ9Y1tiXSxkLmFubm90YXRpb25FbmRFbGVtZW50P3J1bnRpbWUubG9nKCJXYXJuaW5nOiBhbm5vdGF0aW9uIG5hbWUgdXNlZCBtb3JlIHRoYW4gb25jZSB3aXRoIDxvZmZpY2U6YW5ub3RhdGlvbi1lbmQvPjogJyIrYisiJyIpOmQuYW5ub3RhdGlvbkVuZEVsZW1lbnQ9CmEpOnJ1bnRpbWUubG9nKCJXYXJuaW5nOiBhbm5vdGF0aW9uIGVuZCB3aXRob3V0IGFuIGFubm90YXRpb24gc3RhcnQsIG5hbWU6ICciK2IrIiciKTpydW50aW1lLmxvZygiV2FybmluZzogYW5ub3RhdGlvbiBlbmQgd2l0aG91dCBhIG5hbWUgZm91bmQiKSkpLGE9aC5uZXh0Tm9kZSgpfWZ1bmN0aW9uIHIoYSxjKXtmb3IodmFyIGI9YSYmYS5maXJzdENoaWxkO2I7KWIubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSYmYi5zZXRBdHRyaWJ1dGVOUygidXJuOndlYm9kZjpuYW1lczpzY29wZSIsInNjb3BlIixjKSxiPWIubmV4dFNpYmxpbmd9ZnVuY3Rpb24geihhLGMpe2Zvcih2YXIgYj1CLnJvb3RFbGVtZW50Lm1ldGEsYj1iJiZiLmZpcnN0Q2hpbGQ7YiYmKGIubmFtZXNwYWNlVVJJIT09YXx8Yi5sb2NhbE5hbWUhPT1jKTspYj1iLm5leHRTaWJsaW5nO2ZvcihiPWImJmIuZmlyc3RDaGlsZDtiJiZiLm5vZGVUeXBlIT09Tm9kZS5URVhUX05PREU7KWI9Yi5uZXh0U2libGluZztyZXR1cm4gYj8KYi5kYXRhOm51bGx9ZnVuY3Rpb24gdyhhKXt2YXIgYz17fSxiO2ZvcihhPWEuZmlyc3RDaGlsZDthOylhLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUmJmEubmFtZXNwYWNlVVJJPT09cCYmImZvbnQtZmFjZSI9PT1hLmxvY2FsTmFtZSYmKGI9YS5nZXRBdHRyaWJ1dGVOUyhwLCJuYW1lIiksY1tiXT1hKSxhPWEubmV4dFNpYmxpbmc7cmV0dXJuIGN9ZnVuY3Rpb24gdihhLGMpe3ZhciBiPW51bGwsZCxoLGU7aWYoYSlmb3IoYj1hLmNsb25lTm9kZSghMCksZD1iLmZpcnN0RWxlbWVudENoaWxkO2Q7KWg9ZC5uZXh0RWxlbWVudFNpYmxpbmcsKGU9ZC5nZXRBdHRyaWJ1dGVOUygidXJuOndlYm9kZjpuYW1lczpzY29wZSIsInNjb3BlIikpJiZlIT09YyYmYi5yZW1vdmVDaGlsZChkKSxkPWg7cmV0dXJuIGJ9ZnVuY3Rpb24gdShhLGMpe3ZhciBiLGQsaCxlPW51bGwsbT17fTtpZihhKWZvcihjLmZvckVhY2goZnVuY3Rpb24oYSl7Zi5jb2xsZWN0VXNlZEZvbnRGYWNlcyhtLGEpfSksCmU9YS5jbG9uZU5vZGUoITApLGI9ZS5maXJzdEVsZW1lbnRDaGlsZDtiOylkPWIubmV4dEVsZW1lbnRTaWJsaW5nLGg9Yi5nZXRBdHRyaWJ1dGVOUyhwLCJuYW1lIiksbVtoXXx8ZS5yZW1vdmVDaGlsZChiKSxiPWQ7cmV0dXJuIGV9ZnVuY3Rpb24gdChhKXt2YXIgYz1CLnJvb3RFbGVtZW50Lm93bmVyRG9jdW1lbnQsYjtpZihhKXtoKGEuZG9jdW1lbnRFbGVtZW50KTt0cnl7Yj1jLmltcG9ydE5vZGUoYS5kb2N1bWVudEVsZW1lbnQsITApfWNhdGNoKGQpe319cmV0dXJuIGJ9ZnVuY3Rpb24gQShhKXtCLnN0YXRlPWE7aWYoQi5vbmNoYW5nZSlCLm9uY2hhbmdlKEIpO2lmKEIub25zdGF0ZXJlYWR5Y2hhbmdlKUIub25zdGF0ZXJlYWR5Y2hhbmdlKEIpfWZ1bmN0aW9uIEkoYSl7UT1udWxsO0Iucm9vdEVsZW1lbnQ9YTthLmZvbnRGYWNlRGVjbHM9bi5nZXREaXJlY3RDaGlsZChhLCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm9mZmljZToxLjAiLCJmb250LWZhY2UtZGVjbHMiKTsKYS5zdHlsZXM9bi5nZXREaXJlY3RDaGlsZChhLCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm9mZmljZToxLjAiLCJzdHlsZXMiKTthLmF1dG9tYXRpY1N0eWxlcz1uLmdldERpcmVjdENoaWxkKGEsInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6b2ZmaWNlOjEuMCIsImF1dG9tYXRpYy1zdHlsZXMiKTthLm1hc3RlclN0eWxlcz1uLmdldERpcmVjdENoaWxkKGEsInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6b2ZmaWNlOjEuMCIsIm1hc3Rlci1zdHlsZXMiKTthLmJvZHk9bi5nZXREaXJlY3RDaGlsZChhLCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm9mZmljZToxLjAiLCJib2R5Iik7YS5tZXRhPW4uZ2V0RGlyZWN0Q2hpbGQoYSwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpvZmZpY2U6MS4wIiwibWV0YSIpO2Euc2V0dGluZ3M9bi5nZXREaXJlY3RDaGlsZChhLCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm9mZmljZToxLjAiLAoic2V0dGluZ3MiKTthLnNjcmlwdHM9bi5nZXREaXJlY3RDaGlsZChhLCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm9mZmljZToxLjAiLCJzY3JpcHRzIik7ZyhhKX1mdW5jdGlvbiBLKGMpe3ZhciBkPXQoYyksaD1CLnJvb3RFbGVtZW50LGU7ZCYmImRvY3VtZW50LXN0eWxlcyI9PT1kLmxvY2FsTmFtZSYmInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6b2ZmaWNlOjEuMCI9PT1kLm5hbWVzcGFjZVVSST8oaC5mb250RmFjZURlY2xzPW4uZ2V0RGlyZWN0Q2hpbGQoZCwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpvZmZpY2U6MS4wIiwiZm9udC1mYWNlLWRlY2xzIiksYihoLGguZm9udEZhY2VEZWNscyksZT1uLmdldERpcmVjdENoaWxkKGQsInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6b2ZmaWNlOjEuMCIsInN0eWxlcyIpLGguc3R5bGVzPWV8fGMuY3JlYXRlRWxlbWVudE5TKCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm9mZmljZToxLjAiLAoic3R5bGVzIiksYihoLGguc3R5bGVzKSxlPW4uZ2V0RGlyZWN0Q2hpbGQoZCwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpvZmZpY2U6MS4wIiwiYXV0b21hdGljLXN0eWxlcyIpLGguYXV0b21hdGljU3R5bGVzPWV8fGMuY3JlYXRlRWxlbWVudE5TKCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm9mZmljZToxLjAiLCJhdXRvbWF0aWMtc3R5bGVzIikscihoLmF1dG9tYXRpY1N0eWxlcywiZG9jdW1lbnQtc3R5bGVzIiksYihoLGguYXV0b21hdGljU3R5bGVzKSxkPW4uZ2V0RGlyZWN0Q2hpbGQoZCwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpvZmZpY2U6MS4wIiwibWFzdGVyLXN0eWxlcyIpLGgubWFzdGVyU3R5bGVzPWR8fGMuY3JlYXRlRWxlbWVudE5TKCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm9mZmljZToxLjAiLCJtYXN0ZXItc3R5bGVzIiksYihoLGgubWFzdGVyU3R5bGVzKSwKZi5wcmVmaXhTdHlsZU5hbWVzKGguYXV0b21hdGljU3R5bGVzLHEsaC5tYXN0ZXJTdHlsZXMpKTpBKGEuSU5WQUxJRCl9ZnVuY3Rpb24gTChjKXtjPXQoYyk7dmFyIGQsaCxlLG07aWYoYyYmImRvY3VtZW50LWNvbnRlbnQiPT09Yy5sb2NhbE5hbWUmJiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm9mZmljZToxLjAiPT09Yy5uYW1lc3BhY2VVUkkpe2Q9Qi5yb290RWxlbWVudDtlPW4uZ2V0RGlyZWN0Q2hpbGQoYywidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpvZmZpY2U6MS4wIiwiZm9udC1mYWNlLWRlY2xzIik7aWYoZC5mb250RmFjZURlY2xzJiZlKXttPWQuZm9udEZhY2VEZWNsczt2YXIgZyxrLE8scSxEPXt9O2g9dyhtKTtxPXcoZSk7Zm9yKGU9ZS5maXJzdEVsZW1lbnRDaGlsZDtlOyl7Zz1lLm5leHRFbGVtZW50U2libGluZztpZihlLm5hbWVzcGFjZVVSST09PXAmJiJmb250LWZhY2UiPT09ZS5sb2NhbE5hbWUpaWYoaz1lLmdldEF0dHJpYnV0ZU5TKHAsCiJuYW1lIiksaC5oYXNPd25Qcm9wZXJ0eShrKSl7aWYoIWUuaXNFcXVhbE5vZGUoaFtrXSkpe089aztmb3IodmFyIHk9aCxFPXEsdT0wLFc9dm9pZCAwLFc9Tz1PLnJlcGxhY2UoL1xkKyQvLCIiKTt5Lmhhc093blByb3BlcnR5KFcpfHxFLmhhc093blByb3BlcnR5KFcpOyl1Kz0xLFc9Tyt1O089VztlLnNldEF0dHJpYnV0ZU5TKHAsInN0eWxlOm5hbWUiLE8pO20uYXBwZW5kQ2hpbGQoZSk7aFtPXT1lO2RlbGV0ZSBxW2tdO0Rba109T319ZWxzZSBtLmFwcGVuZENoaWxkKGUpLGhba109ZSxkZWxldGUgcVtrXTtlPWd9bT1EfWVsc2UgZSYmKGQuZm9udEZhY2VEZWNscz1lLGIoZCxlKSk7aD1uLmdldERpcmVjdENoaWxkKGMsInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6b2ZmaWNlOjEuMCIsImF1dG9tYXRpYy1zdHlsZXMiKTtyKGgsImRvY3VtZW50LWNvbnRlbnQiKTttJiZmLmNoYW5nZUZvbnRGYWNlTmFtZXMoaCxtKTtpZihkLmF1dG9tYXRpY1N0eWxlcyYmaClmb3IobT0KaC5maXJzdENoaWxkO207KWQuYXV0b21hdGljU3R5bGVzLmFwcGVuZENoaWxkKG0pLG09aC5maXJzdENoaWxkO2Vsc2UgaCYmKGQuYXV0b21hdGljU3R5bGVzPWgsYihkLGgpKTtjPW4uZ2V0RGlyZWN0Q2hpbGQoYywidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpvZmZpY2U6MS4wIiwiYm9keSIpO2lmKG51bGw9PT1jKXRocm93IjxvZmZpY2U6Ym9keS8+IHRhZyBpcyBtaXNpbmcuIjtkLmJvZHk9YztiKGQsZC5ib2R5KX1lbHNlIEEoYS5JTlZBTElEKX1mdW5jdGlvbiBFKGEpe2E9dChhKTt2YXIgYzthJiYiZG9jdW1lbnQtbWV0YSI9PT1hLmxvY2FsTmFtZSYmInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6b2ZmaWNlOjEuMCI9PT1hLm5hbWVzcGFjZVVSSSYmKGM9Qi5yb290RWxlbWVudCxjLm1ldGE9bi5nZXREaXJlY3RDaGlsZChhLCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm9mZmljZToxLjAiLCJtZXRhIiksCmIoYyxjLm1ldGEpKX1mdW5jdGlvbiBOKGEpe2E9dChhKTt2YXIgYzthJiYiZG9jdW1lbnQtc2V0dGluZ3MiPT09YS5sb2NhbE5hbWUmJiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm9mZmljZToxLjAiPT09YS5uYW1lc3BhY2VVUkkmJihjPUIucm9vdEVsZW1lbnQsYy5zZXR0aW5ncz1uLmdldERpcmVjdENoaWxkKGEsInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6b2ZmaWNlOjEuMCIsInNldHRpbmdzIiksYihjLGMuc2V0dGluZ3MpKX1mdW5jdGlvbiBPKGEpe2E9dChhKTt2YXIgYztpZihhJiYibWFuaWZlc3QiPT09YS5sb2NhbE5hbWUmJiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm1hbmlmZXN0OjEuMCI9PT1hLm5hbWVzcGFjZVVSSSlmb3IoYz1CLnJvb3RFbGVtZW50LGMubWFuaWZlc3Q9YSxhPWMubWFuaWZlc3QuZmlyc3RFbGVtZW50Q2hpbGQ7YTspImZpbGUtZW50cnkiPT09YS5sb2NhbE5hbWUmJiJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm1hbmlmZXN0OjEuMCI9PT0KYS5uYW1lc3BhY2VVUkkmJihNW2EuZ2V0QXR0cmlidXRlTlMoInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6bWFuaWZlc3Q6MS4wIiwiZnVsbC1wYXRoIildPWEuZ2V0QXR0cmlidXRlTlMoInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6bWFuaWZlc3Q6MS4wIiwibWVkaWEtdHlwZSIpKSxhPWEubmV4dEVsZW1lbnRTaWJsaW5nfWZ1bmN0aW9uIEQoYSxjLGIpe2E9bi5nZXRFbGVtZW50c0J5VGFnTmFtZShhLGMpO3ZhciBkO2ZvcihkPTA7ZDxhLmxlbmd0aDtkKz0xKWM9YVtkXSxiLmhhc093blByb3BlcnR5KGMubmFtZXNwYWNlVVJJKXx8Yy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGMpfWZ1bmN0aW9uIFYoYSl7RChhLCJzY3JpcHQiLHsidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpkYXRhc3R5bGU6MS4wIjohMCwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpvZmZpY2U6MS4wIjohMCwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczp0YWJsZToxLjAiOiEwLAoidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczp0ZXh0OjEuMCI6ITAsInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6eHNsLWZvLWNvbXBhdGlibGU6MS4wIjohMH0pO0QoYSwic3R5bGUiLHsidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpkYXRhc3R5bGU6MS4wIjohMCwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpkcmF3aW5nOjEuMCI6ITAsInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6c3R5bGU6MS4wIjohMH0pfWZ1bmN0aW9uIFcoYSl7dmFyIGM9YS5maXJzdEVsZW1lbnRDaGlsZCxiPVtdLGQsaCxlLG09YS5hdHRyaWJ1dGVzLGY9bS5sZW5ndGg7Zm9yKGQ9MDtkPGY7ZCs9MSllPW0uaXRlbShkKSxoPWUubG9jYWxOYW1lLnN1YnN0cigwLDIpLnRvTG93ZXJDYXNlKCksbnVsbD09PWUubmFtZXNwYWNlVVJJJiYib24iPT09aCYmYi5wdXNoKGUpO2Y9Yi5sZW5ndGg7Zm9yKGQ9CjA7ZDxmO2QrPTEpYS5yZW1vdmVBdHRyaWJ1dGVOb2RlKGJbZF0pO2Zvcig7YzspVyhjKSxjPWMubmV4dEVsZW1lbnRTaWJsaW5nfWZ1bmN0aW9uIEooYyl7dmFyIGI9Yy5zaGlmdCgpO2I/WS5sb2FkQXNET00oYi5wYXRoLGZ1bmN0aW9uKGQsaCl7aCYmKFYoaCksVyhoLmRvY3VtZW50RWxlbWVudCkpO2IuaGFuZGxlcihoKTtCLnN0YXRlPT09YS5JTlZBTElEP2Q/cnVudGltZS5sb2coIkVSUk9SOiBVbmFibGUgdG8gbG9hZCAiK2IucGF0aCsiIC0gIitkKTpydW50aW1lLmxvZygiRVJST1I6IFVuYWJsZSB0byBsb2FkICIrYi5wYXRoKTooZCYmcnVudGltZS5sb2coIkRFQlVHOiBVbmFibGUgdG8gbG9hZCAiK2IucGF0aCsiIC0gIitkKSxKKGMpKX0pOihnKEIucm9vdEVsZW1lbnQpLEEoYS5ET05FKSl9ZnVuY3Rpb24gUihhKXt2YXIgYz0iIjtvZGYuTmFtZXNwYWNlcy5mb3JFYWNoUHJlZml4KGZ1bmN0aW9uKGEsYil7Yys9IiB4bWxuczoiK2ErJz0iJytiKyciJ30pO3JldHVybic8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PjxvZmZpY2U6JysKYSsiICIrYysnIG9mZmljZTp2ZXJzaW9uPSIxLjIiPid9ZnVuY3Rpb24gUCgpe3ZhciBhPW5ldyB4bWxkb20uTFNTZXJpYWxpemVyLGM9UigiZG9jdW1lbnQtbWV0YSIpO2EuZmlsdGVyPW5ldyBvZGYuT2RmTm9kZUZpbHRlcjtjKz1hLndyaXRlVG9TdHJpbmcoQi5yb290RWxlbWVudC5tZXRhLG9kZi5OYW1lc3BhY2VzLm5hbWVzcGFjZU1hcCk7cmV0dXJuIGMrIjwvb2ZmaWNlOmRvY3VtZW50LW1ldGE+In1mdW5jdGlvbiBhYShhLGMpe3ZhciBiPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczptYW5pZmVzdDoxLjAiLCJtYW5pZmVzdDpmaWxlLWVudHJ5Iik7Yi5zZXRBdHRyaWJ1dGVOUygidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczptYW5pZmVzdDoxLjAiLCJtYW5pZmVzdDpmdWxsLXBhdGgiLGEpO2Iuc2V0QXR0cmlidXRlTlMoInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6bWFuaWZlc3Q6MS4wIiwKIm1hbmlmZXN0Om1lZGlhLXR5cGUiLGMpO3JldHVybiBifWZ1bmN0aW9uIFMoKXt2YXIgYT1ydW50aW1lLnBhcnNlWE1MKCc8bWFuaWZlc3Q6bWFuaWZlc3QgeG1sbnM6bWFuaWZlc3Q9InVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6bWFuaWZlc3Q6MS4wIiBtYW5pZmVzdDp2ZXJzaW9uPSIxLjIiPjwvbWFuaWZlc3Q6bWFuaWZlc3Q+JyksYz1hLmRvY3VtZW50RWxlbWVudCxiPW5ldyB4bWxkb20uTFNTZXJpYWxpemVyLGQ7Zm9yKGQgaW4gTSlNLmhhc093blByb3BlcnR5KGQpJiZjLmFwcGVuZENoaWxkKGFhKGQsTVtkXSkpO2IuZmlsdGVyPW5ldyBvZGYuT2RmTm9kZUZpbHRlcjtyZXR1cm4nPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/PlxuJytiLndyaXRlVG9TdHJpbmcoYSxvZGYuTmFtZXNwYWNlcy5uYW1lc3BhY2VNYXApfWZ1bmN0aW9uIGZhKCl7dmFyIGEsYyxiLGQ9b2RmLk5hbWVzcGFjZXMubmFtZXNwYWNlTWFwLApoPW5ldyB4bWxkb20uTFNTZXJpYWxpemVyLGU9UigiZG9jdW1lbnQtc3R5bGVzIik7Yz12KEIucm9vdEVsZW1lbnQuYXV0b21hdGljU3R5bGVzLCJkb2N1bWVudC1zdHlsZXMiKTtiPUIucm9vdEVsZW1lbnQubWFzdGVyU3R5bGVzLmNsb25lTm9kZSghMCk7YT11KEIucm9vdEVsZW1lbnQuZm9udEZhY2VEZWNscyxbYixCLnJvb3RFbGVtZW50LnN0eWxlcyxjXSk7Zi5yZW1vdmVQcmVmaXhGcm9tU3R5bGVOYW1lcyhjLHEsYik7aC5maWx0ZXI9bmV3IGsoYixjKTtlKz1oLndyaXRlVG9TdHJpbmcoYSxkKTtlKz1oLndyaXRlVG9TdHJpbmcoQi5yb290RWxlbWVudC5zdHlsZXMsZCk7ZSs9aC53cml0ZVRvU3RyaW5nKGMsZCk7ZSs9aC53cml0ZVRvU3RyaW5nKGIsZCk7cmV0dXJuIGUrIjwvb2ZmaWNlOmRvY3VtZW50LXN0eWxlcz4ifWZ1bmN0aW9uIGhhKCl7dmFyIGEsYyxiPW9kZi5OYW1lc3BhY2VzLm5hbWVzcGFjZU1hcCxoPW5ldyB4bWxkb20uTFNTZXJpYWxpemVyLGU9UigiZG9jdW1lbnQtY29udGVudCIpOwpjPXYoQi5yb290RWxlbWVudC5hdXRvbWF0aWNTdHlsZXMsImRvY3VtZW50LWNvbnRlbnQiKTthPXUoQi5yb290RWxlbWVudC5mb250RmFjZURlY2xzLFtjXSk7aC5maWx0ZXI9bmV3IGQoQi5yb290RWxlbWVudC5ib2R5LGMpO2UrPWgud3JpdGVUb1N0cmluZyhhLGIpO2UrPWgud3JpdGVUb1N0cmluZyhjLGIpO2UrPWgud3JpdGVUb1N0cmluZyhCLnJvb3RFbGVtZW50LmJvZHksYik7cmV0dXJuIGUrIjwvb2ZmaWNlOmRvY3VtZW50LWNvbnRlbnQ+In1mdW5jdGlvbiBDKGMsYil7cnVudGltZS5sb2FkWE1MKGMsZnVuY3Rpb24oYyxkKXtpZihjKWIoYyk7ZWxzZSBpZihkKXtWKGQpO1coZC5kb2N1bWVudEVsZW1lbnQpO3ZhciBoPXQoZCk7aCYmImRvY3VtZW50Ij09PWgubG9jYWxOYW1lJiYidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpvZmZpY2U6MS4wIj09PWgubmFtZXNwYWNlVVJJPyhJKGgpLEEoYS5ET05FKSk6QShhLklOVkFMSUQpfWVsc2UgYigiTm8gRE9NIHdhcyBsb2FkZWQuIil9KX0KZnVuY3Rpb24gWihhLGMpe3ZhciBkO2Q9Qi5yb290RWxlbWVudDt2YXIgaD1kLm1ldGE7aHx8KGQubWV0YT1oPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpvZmZpY2U6MS4wIiwibWV0YSIpLGIoZCxoKSk7ZD1oO2EmJm4ubWFwS2V5VmFsT2JqT250b05vZGUoZCxhLG9kZi5OYW1lc3BhY2VzLmxvb2t1cE5hbWVzcGFjZVVSSSk7YyYmbi5yZW1vdmVLZXlFbGVtZW50c0Zyb21Ob2RlKGQsYyxvZGYuTmFtZXNwYWNlcy5sb29rdXBOYW1lc3BhY2VVUkkpfWZ1bmN0aW9uIGJhKGMsYil7ZnVuY3Rpb24gZChhLGMpe3ZhciBiO2N8fChjPWEpO2I9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm9mZmljZToxLjAiLGMpO2ZbYV09YjtmLmFwcGVuZENoaWxkKGIpfXZhciBoPW5ldyBjb3JlLlppcCgiIixudWxsKSxlPSJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LiIrCmMrKCEwPT09Yj8iLXRlbXBsYXRlIjoiIiksbT1ydW50aW1lLmJ5dGVBcnJheUZyb21TdHJpbmcoZSwidXRmOCIpLGY9Qi5yb290RWxlbWVudCxnPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpvZmZpY2U6MS4wIixjKTtoLnNhdmUoIm1pbWV0eXBlIixtLCExLG5ldyBEYXRlKTtkKCJtZXRhIik7ZCgic2V0dGluZ3MiKTtkKCJzY3JpcHRzIik7ZCgiZm9udEZhY2VEZWNscyIsImZvbnQtZmFjZS1kZWNscyIpO2QoInN0eWxlcyIpO2QoImF1dG9tYXRpY1N0eWxlcyIsImF1dG9tYXRpYy1zdHlsZXMiKTtkKCJtYXN0ZXJTdHlsZXMiLCJtYXN0ZXItc3R5bGVzIik7ZCgiYm9keSIpO2YuYm9keS5hcHBlbmRDaGlsZChnKTtNWyIvIl09ZTtNWyJzZXR0aW5ncy54bWwiXT0idGV4dC94bWwiO01bIm1ldGEueG1sIl09InRleHQveG1sIjtNWyJzdHlsZXMueG1sIl09InRleHQveG1sIjtNWyJjb250ZW50LnhtbCJdPSJ0ZXh0L3htbCI7CkEoYS5ET05FKTtyZXR1cm4gaH1mdW5jdGlvbiBVKCl7dmFyIGEsYz1uZXcgRGF0ZSxiPSIiO0Iucm9vdEVsZW1lbnQuc2V0dGluZ3MmJkIucm9vdEVsZW1lbnQuc2V0dGluZ3MuZmlyc3RFbGVtZW50Q2hpbGQmJihhPW5ldyB4bWxkb20uTFNTZXJpYWxpemVyLGI9UigiZG9jdW1lbnQtc2V0dGluZ3MiKSxhLmZpbHRlcj1uZXcgb2RmLk9kZk5vZGVGaWx0ZXIsYis9YS53cml0ZVRvU3RyaW5nKEIucm9vdEVsZW1lbnQuc2V0dGluZ3Msb2RmLk5hbWVzcGFjZXMubmFtZXNwYWNlTWFwKSxiKz0iPC9vZmZpY2U6ZG9jdW1lbnQtc2V0dGluZ3M+Iik7KGE9Yik/KGE9cnVudGltZS5ieXRlQXJyYXlGcm9tU3RyaW5nKGEsInV0ZjgiKSxZLnNhdmUoInNldHRpbmdzLnhtbCIsYSwhMCxjKSk6WS5yZW1vdmUoInNldHRpbmdzLnhtbCIpO2I9cnVudGltZS5nZXRXaW5kb3coKTthPSJXZWJPREYvIit3ZWJvZGYuVmVyc2lvbjtiJiYoYT1hKyIgIitiLm5hdmlnYXRvci51c2VyQWdlbnQpO1ooeyJtZXRhOmdlbmVyYXRvciI6YX0sCm51bGwpO2E9cnVudGltZS5ieXRlQXJyYXlGcm9tU3RyaW5nKFAoKSwidXRmOCIpO1kuc2F2ZSgibWV0YS54bWwiLGEsITAsYyk7YT1ydW50aW1lLmJ5dGVBcnJheUZyb21TdHJpbmcoZmEoKSwidXRmOCIpO1kuc2F2ZSgic3R5bGVzLnhtbCIsYSwhMCxjKTthPXJ1bnRpbWUuYnl0ZUFycmF5RnJvbVN0cmluZyhoYSgpLCJ1dGY4Iik7WS5zYXZlKCJjb250ZW50LnhtbCIsYSwhMCxjKTthPXJ1bnRpbWUuYnl0ZUFycmF5RnJvbVN0cmluZyhTKCksInV0ZjgiKTtZLnNhdmUoIk1FVEEtSU5GL21hbmlmZXN0LnhtbCIsYSwhMCxjKX1mdW5jdGlvbiBnYShhLGMpe1UoKTtZLndyaXRlQXMoYSxmdW5jdGlvbihhKXtjKGEpfSl9dmFyIEI9dGhpcyxZLE09e30sUSxGPSIiO3RoaXMub25zdGF0ZXJlYWR5Y2hhbmdlPW07dGhpcy5zdGF0ZT10aGlzLm9uY2hhbmdlPW51bGw7dGhpcy5nZXRNZXRhZGF0YT16O3RoaXMuc2V0Um9vdEVsZW1lbnQ9STt0aGlzLmdldENvbnRlbnRFbGVtZW50PWZ1bmN0aW9uKCl7dmFyIGE7ClF8fChhPUIucm9vdEVsZW1lbnQuYm9keSxRPW4uZ2V0RGlyZWN0Q2hpbGQoYSwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpvZmZpY2U6MS4wIiwidGV4dCIpfHxuLmdldERpcmVjdENoaWxkKGEsInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6b2ZmaWNlOjEuMCIsInByZXNlbnRhdGlvbiIpfHxuLmdldERpcmVjdENoaWxkKGEsInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6b2ZmaWNlOjEuMCIsInNwcmVhZHNoZWV0IikpO2lmKCFRKXRocm93IkNvdWxkIG5vdCBmaW5kIGNvbnRlbnQgZWxlbWVudCBpbiA8b2ZmaWNlOmJvZHkvPi4iO3JldHVybiBRfTt0aGlzLmdldERvY3VtZW50VHlwZT1mdW5jdGlvbigpe3ZhciBhPUIuZ2V0Q29udGVudEVsZW1lbnQoKTtyZXR1cm4gYSYmYS5sb2NhbE5hbWV9O3RoaXMuaXNUZW1wbGF0ZT1mdW5jdGlvbigpe3JldHVybiItdGVtcGxhdGUiPT09TVsiLyJdLnN1YnN0cigtOSl9Owp0aGlzLnNldElzVGVtcGxhdGU9ZnVuY3Rpb24oYSl7dmFyIGM9TVsiLyJdLGI9Ii10ZW1wbGF0ZSI9PT1jLnN1YnN0cigtOSk7YSE9PWImJihjPWE/YysiLXRlbXBsYXRlIjpjLnN1YnN0cigwLGMubGVuZ3RoLTkpLE1bIi8iXT1jLGE9cnVudGltZS5ieXRlQXJyYXlGcm9tU3RyaW5nKGMsInV0ZjgiKSxZLnNhdmUoIm1pbWV0eXBlIixhLCExLG5ldyBEYXRlKSl9O3RoaXMuZ2V0UGFydD1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IG9kZi5PZGZQYXJ0KGEsTVthXSxCLFkpfTt0aGlzLmdldFBhcnREYXRhPWZ1bmN0aW9uKGEsYyl7WS5sb2FkKGEsYyl9O3RoaXMuc2V0TWV0YWRhdGE9Wjt0aGlzLmluY3JlbWVudEVkaXRpbmdDeWNsZXM9ZnVuY3Rpb24oKXt2YXIgYT16KG9kZi5OYW1lc3BhY2VzLm1ldGFucywiZWRpdGluZy1jeWNsZXMiKSxhPWE/cGFyc2VJbnQoYSwxMCk6MDtpc05hTihhKSYmKGE9MCk7Wih7Im1ldGE6ZWRpdGluZy1jeWNsZXMiOmErMX0sbnVsbCk7cmV0dXJuIGErMX07CnRoaXMuY3JlYXRlQnl0ZUFycmF5PWZ1bmN0aW9uKGEsYyl7VSgpO1kuY3JlYXRlQnl0ZUFycmF5KGEsYyl9O3RoaXMuc2F2ZUFzPWdhO3RoaXMuc2F2ZT1mdW5jdGlvbihhKXtnYShGLGEpfTt0aGlzLmdldFVybD1mdW5jdGlvbigpe3JldHVybiBGfTt0aGlzLnNldEJsb2I9ZnVuY3Rpb24oYSxjLGIpe2I9ZS5jb252ZXJ0QmFzZTY0VG9CeXRlQXJyYXkoYik7WS5zYXZlKGEsYiwhMSxuZXcgRGF0ZSk7TS5oYXNPd25Qcm9wZXJ0eShhKSYmcnVudGltZS5sb2coYSsiIGhhcyBiZWVuIG92ZXJ3cml0dGVuLiIpO01bYV09Y307dGhpcy5yZW1vdmVCbG9iPWZ1bmN0aW9uKGEpe3ZhciBjPVkucmVtb3ZlKGEpO3J1bnRpbWUuYXNzZXJ0KGMsImZpbGUgaXMgbm90IGZvdW5kOiAiK2EpO2RlbGV0ZSBNW2FdfTt0aGlzLnN0YXRlPWEuTE9BRElORzt0aGlzLnJvb3RFbGVtZW50PWZ1bmN0aW9uKGEpe3ZhciBjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhhLm5hbWVzcGFjZVVSSSxhLmxvY2FsTmFtZSksCmI7YT1uZXcgYS5UeXBlO2ZvcihiIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShiKSYmKGNbYl09YVtiXSk7cmV0dXJuIGN9KHtUeXBlOm9kZi5PREZEb2N1bWVudEVsZW1lbnQsbmFtZXNwYWNlVVJJOm9kZi5PREZEb2N1bWVudEVsZW1lbnQubmFtZXNwYWNlVVJJLGxvY2FsTmFtZTpvZGYuT0RGRG9jdW1lbnRFbGVtZW50LmxvY2FsTmFtZX0pO2M9PT1vZGYuT2RmQ29udGFpbmVyLkRvY3VtZW50VHlwZS5URVhUP1k9YmEoInRleHQiKTpjPT09b2RmLk9kZkNvbnRhaW5lci5Eb2N1bWVudFR5cGUuVEVYVF9URU1QTEFURT9ZPWJhKCJ0ZXh0IiwhMCk6Yz09PW9kZi5PZGZDb250YWluZXIuRG9jdW1lbnRUeXBlLlBSRVNFTlRBVElPTj9ZPWJhKCJwcmVzZW50YXRpb24iKTpjPT09b2RmLk9kZkNvbnRhaW5lci5Eb2N1bWVudFR5cGUuUFJFU0VOVEFUSU9OX1RFTVBMQVRFP1k9YmEoInByZXNlbnRhdGlvbiIsITApOmM9PT1vZGYuT2RmQ29udGFpbmVyLkRvY3VtZW50VHlwZS5TUFJFQURTSEVFVD8KWT1iYSgic3ByZWFkc2hlZXQiKTpjPT09b2RmLk9kZkNvbnRhaW5lci5Eb2N1bWVudFR5cGUuU1BSRUFEU0hFRVRfVEVNUExBVEU/WT1iYSgic3ByZWFkc2hlZXQiLCEwKTooRj1jLFk9bmV3IGNvcmUuWmlwKEYsZnVuY3Rpb24oYyxiKXtZPWI7Yz9DKEYsZnVuY3Rpb24oYil7YyYmKFkuZXJyb3I9YysiXG4iK2IsQShhLklOVkFMSUQpKX0pOkooW3twYXRoOiJzdHlsZXMueG1sIixoYW5kbGVyOkt9LHtwYXRoOiJjb250ZW50LnhtbCIsaGFuZGxlcjpMfSx7cGF0aDoibWV0YS54bWwiLGhhbmRsZXI6RX0se3BhdGg6InNldHRpbmdzLnhtbCIsaGFuZGxlcjpOfSx7cGF0aDoiTUVUQS1JTkYvbWFuaWZlc3QueG1sIixoYW5kbGVyOk99XSl9KSl9O29kZi5PZGZDb250YWluZXIuRU1QVFk9MDtvZGYuT2RmQ29udGFpbmVyLkxPQURJTkc9MTtvZGYuT2RmQ29udGFpbmVyLkRPTkU9MjtvZGYuT2RmQ29udGFpbmVyLklOVkFMSUQ9MztvZGYuT2RmQ29udGFpbmVyLlNBVklORz00O29kZi5PZGZDb250YWluZXIuTU9ESUZJRUQ9CjU7b2RmLk9kZkNvbnRhaW5lci5nZXRDb250YWluZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBvZGYuT2RmQ29udGFpbmVyKGEsbnVsbCl9fSkoKTtvZGYuT2RmQ29udGFpbmVyLkRvY3VtZW50VHlwZT17VEVYVDoxLFRFWFRfVEVNUExBVEU6MixQUkVTRU5UQVRJT046MyxQUkVTRU5UQVRJT05fVEVNUExBVEU6NCxTUFJFQURTSEVFVDo1LFNQUkVBRFNIRUVUX1RFTVBMQVRFOjZ9O2d1aS5Bbm5vdGF0YWJsZUNhbnZhcz1mdW5jdGlvbigpe307Z3VpLkFubm90YXRhYmxlQ2FudmFzLnByb3RvdHlwZS5yZWZyZXNoU2l6ZT1mdW5jdGlvbigpe307Z3VpLkFubm90YXRhYmxlQ2FudmFzLnByb3RvdHlwZS5nZXRab29tTGV2ZWw9ZnVuY3Rpb24oKXt9O2d1aS5Bbm5vdGF0YWJsZUNhbnZhcy5wcm90b3R5cGUuZ2V0U2l6ZXI9ZnVuY3Rpb24oKXt9OwpndWkuQW5ub3RhdGlvblZpZXdNYW5hZ2VyPWZ1bmN0aW9uKGcsayxkLGIpe2Z1bmN0aW9uIGYoYyl7dmFyIGI9Yy5hbm5vdGF0aW9uRW5kRWxlbWVudCxkPWwuY3JlYXRlUmFuZ2UoKSxlPWMuZ2V0QXR0cmlidXRlTlMob2RmLk5hbWVzcGFjZXMub2ZmaWNlbnMsIm5hbWUiKTtiJiYoZC5zZXRTdGFydChjLGMuY2hpbGROb2Rlcy5sZW5ndGgpLGQuc2V0RW5kKGIsMCksYz1hLmdldFRleHROb2RlcyhkLCExKSxjLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGM7YTp7Zm9yKGM9YS5wYXJlbnROb2RlO2MubmFtZXNwYWNlVVJJIT09b2RmLk5hbWVzcGFjZXMub2ZmaWNlbnN8fCJib2R5IiE9PWMubG9jYWxOYW1lOyl7aWYoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPT09Yy5uYW1lc3BhY2VVUkkmJiJ3ZWJvZGYtYW5ub3RhdGlvbkhpZ2hsaWdodCI9PT1jLmNsYXNzTmFtZSYmYy5nZXRBdHRyaWJ1dGUoImFubm90YXRpb24iKT09PWUpe2M9ITA7YnJlYWsgYX1jPWMucGFyZW50Tm9kZX1jPQohMX1jfHwoYz1sLmNyZWF0ZUVsZW1lbnQoInNwYW4iKSxjLmNsYXNzTmFtZT0id2Vib2RmLWFubm90YXRpb25IaWdobGlnaHQiLGMuc2V0QXR0cmlidXRlKCJhbm5vdGF0aW9uIixlKSxhLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGMsYSksYy5hcHBlbmRDaGlsZChhKSl9KSk7ZC5kZXRhY2goKX1mdW5jdGlvbiBuKGEpe3ZhciBiPWcuZ2V0U2l6ZXIoKTthPyhkLnN0eWxlLmRpc3BsYXk9ImlubGluZS1ibG9jayIsYi5zdHlsZS5wYWRkaW5nUmlnaHQ9Yy5nZXRDb21wdXRlZFN0eWxlKGQpLndpZHRoKTooZC5zdHlsZS5kaXNwbGF5PSJub25lIixiLnN0eWxlLnBhZGRpbmdSaWdodD0wKTtnLnJlZnJlc2hTaXplKCl9ZnVuY3Rpb24gcCgpe2Uuc29ydChmdW5jdGlvbihhLGMpe3JldHVybiAwIT09KGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYykmTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9GT0xMT1dJTkcpPy0xOjF9KX1mdW5jdGlvbiByKCl7dmFyIGE7Zm9yKGE9MDthPGUubGVuZ3RoO2ErPQoxKXt2YXIgYz1lW2FdLGI9Yy5wYXJlbnROb2RlLGY9Yi5uZXh0RWxlbWVudFNpYmxpbmcsbD1mLm5leHRFbGVtZW50U2libGluZyxuPWIucGFyZW50Tm9kZSxrPTAsaz1lW2UuaW5kZXhPZihjKS0xXSxyPXZvaWQgMCxjPWcuZ2V0Wm9vbUxldmVsKCk7Yi5zdHlsZS5sZWZ0PShkLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQtbi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0KS9jKyJweCI7Yi5zdHlsZS53aWR0aD1kLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoL2MrInB4IjtmLnN0eWxlLndpZHRoPXBhcnNlRmxvYXQoYi5zdHlsZS5sZWZ0KS0zMCsicHgiO2s/KHI9ay5wYXJlbnROb2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLDIwPj0obi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3Atci5ib3R0b20pL2M/Yi5zdHlsZS50b3A9TWF0aC5hYnMobi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3Atci5ib3R0b20pL2MrMjArInB4IjpiLnN0eWxlLnRvcD0iMHB4Iik6CmIuc3R5bGUudG9wPSIwcHgiO2wuc3R5bGUubGVmdD1mLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoL2MrInB4Ijt2YXIgZj1sLnN0eWxlLG49bC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0L2Msaz1sLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcC9jLHI9Yi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0L2MscD1iLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcC9jLHE9MCxJPTAscT1yLW4scT1xKnEsST1wLWssST1JKkksbj1NYXRoLnNxcnQocStJKTtmLndpZHRoPW4rInB4IjtrPU1hdGguYXNpbigoYi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AtbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3ApLyhjKnBhcnNlRmxvYXQobC5zdHlsZS53aWR0aCkpKTtsLnN0eWxlLnRyYW5zZm9ybT0icm90YXRlKCIraysicmFkKSI7bC5zdHlsZS5Nb3pUcmFuc2Zvcm09InJvdGF0ZSgiK2srInJhZCkiO2wuc3R5bGUuV2Via2l0VHJhbnNmb3JtPSJyb3RhdGUoIisKaysicmFkKSI7bC5zdHlsZS5tc1RyYW5zZm9ybT0icm90YXRlKCIraysicmFkKSJ9fWZ1bmN0aW9uIHEoYSl7dmFyIGM9ZS5pbmRleE9mKGEpLGI9YS5wYXJlbnROb2RlLnBhcmVudE5vZGU7ImRpdiI9PT1iLmxvY2FsTmFtZSYmKGIucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSxiKSxiLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYikpO2E9YS5nZXRBdHRyaWJ1dGVOUyhvZGYuTmFtZXNwYWNlcy5vZmZpY2VucywibmFtZSIpO2E9bC5xdWVyeVNlbGVjdG9yQWxsKCdzcGFuLndlYm9kZi1hbm5vdGF0aW9uSGlnaGxpZ2h0W2Fubm90YXRpb249IicrYSsnIl0nKTtmb3IodmFyIGQsYj0wO2I8YS5sZW5ndGg7Yis9MSl7Zm9yKGQ9YS5pdGVtKGIpO2QuZmlyc3RDaGlsZDspZC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShkLmZpcnN0Q2hpbGQsZCk7ZC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGQpfS0xIT09YyYmZS5zcGxpY2UoYywxKTswPT09ZS5sZW5ndGgmJm4oITEpfXZhciBlPVtdLGw9Cmsub3duZXJEb2N1bWVudCxhPW9kZi5PZGZVdGlscyxjPXJ1bnRpbWUuZ2V0V2luZG93KCk7cnVudGltZS5hc3NlcnQoQm9vbGVhbihjKSwiRXhwZWN0ZWQgdG8gYmUgcnVuIGluIGFuIGVudmlyb25tZW50IHdoaWNoIGhhcyBhIGdsb2JhbCB3aW5kb3csIGxpa2UgYSBicm93c2VyLiIpO3RoaXMucmVyZW5kZXJBbm5vdGF0aW9ucz1yO3RoaXMucmVoaWdobGlnaHRBbm5vdGF0aW9ucz1mdW5jdGlvbigpe2UuZm9yRWFjaChmdW5jdGlvbihhKXtmKGEpfSl9O3RoaXMuZ2V0TWluaW11bUhlaWdodEZvckFubm90YXRpb25QYW5lPWZ1bmN0aW9uKCl7cmV0dXJuIm5vbmUiIT09ZC5zdHlsZS5kaXNwbGF5JiYwPGUubGVuZ3RoPyhlW2UubGVuZ3RoLTFdLnBhcmVudE5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tLWQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wKS9nLmdldFpvb21MZXZlbCgpKyJweCI6bnVsbH07dGhpcy5hZGRBbm5vdGF0aW9ucz1mdW5jdGlvbihjKXswIT09CmMubGVuZ3RoJiYobighMCksYy5mb3JFYWNoKGZ1bmN0aW9uKGMpe2UucHVzaChjKTt2YXIgZD1sLmNyZWF0ZUVsZW1lbnQoImRpdiIpLG09bC5jcmVhdGVFbGVtZW50KCJkaXYiKSxuPWwuY3JlYXRlRWxlbWVudCgiZGl2IiksZz1sLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGs7ZC5jbGFzc05hbWU9ImFubm90YXRpb25XcmFwcGVyIjtkLnNldEF0dHJpYnV0ZSgiY3JlYXRvciIsYS5nZXRBbm5vdGF0aW9uQ3JlYXRvcihjKSk7Yy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShkLGMpO20uY2xhc3NOYW1lPSJhbm5vdGF0aW9uTm90ZSI7bS5hcHBlbmRDaGlsZChjKTtiJiYoaz1sLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGsuY2xhc3NOYW1lPSJhbm5vdGF0aW9uUmVtb3ZlQnV0dG9uIixtLmFwcGVuZENoaWxkKGspKTtuLmNsYXNzTmFtZT0iYW5ub3RhdGlvbkNvbm5lY3RvciBob3Jpem9udGFsIjtnLmNsYXNzTmFtZT0iYW5ub3RhdGlvbkNvbm5lY3RvciBhbmd1bGFyIjtkLmFwcGVuZENoaWxkKG0pOwpkLmFwcGVuZENoaWxkKG4pO2QuYXBwZW5kQ2hpbGQoZyk7Yy5hbm5vdGF0aW9uRW5kRWxlbWVudCYmZihjKX0pLHAoKSxyKCkpfTt0aGlzLmZvcmdldEFubm90YXRpb249cTt0aGlzLmZvcmdldEFubm90YXRpb25zPWZ1bmN0aW9uKCl7Zm9yKDtlLmxlbmd0aDspcShlWzBdKX19O2d1aS5WaWV3cG9ydD1mdW5jdGlvbigpe307Z3VpLlZpZXdwb3J0LnByb3RvdHlwZS5zY3JvbGxJbnRvVmlldz1mdW5jdGlvbihnLGspe307Cmd1aS5TaW5nbGVTY3JvbGxWaWV3cG9ydD1mdW5jdGlvbihnKXt0aGlzLnNjcm9sbEludG9WaWV3PWZ1bmN0aW9uKGssZCl7dmFyIGIsZixuLHA7cD1nLm9mZnNldEhlaWdodC1nLmNsaWVudEhlaWdodDtuPWcub2Zmc2V0V2lkdGgtZy5jbGllbnRXaWR0aDt2YXIgcj1nLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2lmKGsmJnIpe2I9ci5sZWZ0KzU7Zj1yLnRvcCs1O249ci5yaWdodC0obis1KTtwPXIuYm90dG9tLShwKzUpO2lmKGR8fGsudG9wPGYpZy5zY3JvbGxUb3AtPWYtay50b3A7ZWxzZSBpZihrLnRvcD5wfHxrLmJvdHRvbT5wKWcuc2Nyb2xsVG9wPWsuYm90dG9tLWsudG9wPD1wLWY/Zy5zY3JvbGxUb3ArKGsuYm90dG9tLXApOmcuc2Nyb2xsVG9wKyhrLnRvcC1mKTtrLmxlZnQ8Yj9nLnNjcm9sbExlZnQtPWItay5sZWZ0OmsucmlnaHQ+biYmKGcuc2Nyb2xsTGVmdD1rLnJpZ2h0LWsubGVmdDw9bi1iP2cuc2Nyb2xsTGVmdCsoay5yaWdodC1uKTpnLnNjcm9sbExlZnQtKGItay5sZWZ0KSl9fX07CihmdW5jdGlvbigpe2Z1bmN0aW9uIGcoZCxuLGsscixxKXt2YXIgZSxsPTAsYTtmb3IoYSBpbiBkKWlmKGQuaGFzT3duUHJvcGVydHkoYSkpe2lmKGw9PT1rKXtlPWE7YnJlYWt9bCs9MX1lP24uZ2V0UGFydERhdGEoZFtlXS5ocmVmLGZ1bmN0aW9uKGEsbSl7aWYoYSlydW50aW1lLmxvZyhhKTtlbHNlIGlmKG0pe3ZhciBoPSJAZm9udC1mYWNlIHsgZm9udC1mYW1pbHk6ICIrKGRbZV0uZmFtaWx5fHxlKSsiOyBzcmM6IHVybChkYXRhOmFwcGxpY2F0aW9uL3gtZm9udC10dGY7Y2hhcnNldD1iaW5hcnk7YmFzZTY0LCIrYi5jb252ZXJ0VVRGOEFycmF5VG9CYXNlNjQobSkrJykgZm9ybWF0KCJ0cnVldHlwZSIpOyB9Jzt0cnl7ci5pbnNlcnRSdWxlKGgsci5jc3NSdWxlcy5sZW5ndGgpfWNhdGNoKGwpe3J1bnRpbWUubG9nKCJQcm9ibGVtIGluc2VydGluZyBydWxlIGluIENTUzogIitydW50aW1lLnRvSnNvbihsKSsiXG5SdWxlOiAiK2gpfX1lbHNlIHJ1bnRpbWUubG9nKCJtaXNzaW5nIGZvbnQgZGF0YSBmb3IgIisKZFtlXS5ocmVmKTtnKGQsbixrKzEscixxKX0pOnEmJnEoKX12YXIgaz14bWxkb20uWFBhdGgsZD1vZGYuT2RmVXRpbHMsYj1uZXcgY29yZS5CYXNlNjQ7b2RmLkZvbnRMb2FkZXI9ZnVuY3Rpb24oKXt0aGlzLmxvYWRGb250cz1mdW5jdGlvbihiLG4pe2Zvcih2YXIgcD1iLnJvb3RFbGVtZW50LmZvbnRGYWNlRGVjbHM7bi5jc3NSdWxlcy5sZW5ndGg7KW4uZGVsZXRlUnVsZShuLmNzc1J1bGVzLmxlbmd0aC0xKTtpZihwKXt2YXIgcj17fSxxLGUsbCxhO2lmKHApZm9yKHA9ay5nZXRPREZFbGVtZW50c1dpdGhYUGF0aChwLCJzdHlsZTpmb250LWZhY2Vbc3ZnOmZvbnQtZmFjZS1zcmNdIixvZGYuTmFtZXNwYWNlcy5sb29rdXBOYW1lc3BhY2VVUkkpLHE9MDtxPHAubGVuZ3RoO3ErPTEpZT1wW3FdLGw9ZS5nZXRBdHRyaWJ1dGVOUyhvZGYuTmFtZXNwYWNlcy5zdHlsZW5zLCJuYW1lIiksYT1kLmdldE5vcm1hbGl6ZWRGb250RmFtaWx5TmFtZShlLmdldEF0dHJpYnV0ZU5TKG9kZi5OYW1lc3BhY2VzLnN2Z25zLAoiZm9udC1mYW1pbHkiKSksZT1rLmdldE9ERkVsZW1lbnRzV2l0aFhQYXRoKGUsInN2Zzpmb250LWZhY2Utc3JjL3N2Zzpmb250LWZhY2UtdXJpIixvZGYuTmFtZXNwYWNlcy5sb29rdXBOYW1lc3BhY2VVUkkpLDA8ZS5sZW5ndGgmJihlPWVbMF0uZ2V0QXR0cmlidXRlTlMob2RmLk5hbWVzcGFjZXMueGxpbmtucywiaHJlZiIpLHJbbF09e2hyZWY6ZSxmYW1pbHk6YX0pO2cocixiLDAsbil9fX19KSgpOwpvZGYuRm9ybWF0dGluZz1mdW5jdGlvbigpe2Z1bmN0aW9uIGcoYSl7cmV0dXJuKGE9QVthXSk/dS5tZXJnZU9iamVjdHMoe30sYSk6e319ZnVuY3Rpb24gaygpe2Zvcih2YXIgYz1hLnJvb3RFbGVtZW50LmZvbnRGYWNlRGVjbHMsYj17fSxkLGUsYz1jJiZjLmZpcnN0RWxlbWVudENoaWxkO2M7KXtpZihkPWMuZ2V0QXR0cmlidXRlTlMoaCwibmFtZSIpKWlmKChlPWMuZ2V0QXR0cmlidXRlTlMobSwiZm9udC1mYW1pbHkiKSl8fDA8Yy5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKG0sImZvbnQtZmFjZS11cmkiKS5sZW5ndGgpYltkXT1lO2M9Yy5uZXh0RWxlbWVudFNpYmxpbmd9cmV0dXJuIGJ9ZnVuY3Rpb24gZChjKXtmb3IodmFyIGI9YS5yb290RWxlbWVudC5zdHlsZXMuZmlyc3RFbGVtZW50Q2hpbGQ7Yjspe2lmKGIubmFtZXNwYWNlVVJJPT09aCYmImRlZmF1bHQtc3R5bGUiPT09Yi5sb2NhbE5hbWUmJmIuZ2V0QXR0cmlidXRlTlMoaCwiZmFtaWx5Iik9PT1jKXJldHVybiBiO2I9Yi5uZXh0RWxlbWVudFNpYmxpbmd9cmV0dXJuIG51bGx9CmZ1bmN0aW9uIGIoYyxiLGQpe3ZhciBlLG0sbDtkPWR8fFthLnJvb3RFbGVtZW50LmF1dG9tYXRpY1N0eWxlcyxhLnJvb3RFbGVtZW50LnN0eWxlc107Zm9yKGw9MDtsPGQubGVuZ3RoO2wrPTEpZm9yKGU9ZFtsXSxlPWUuZmlyc3RFbGVtZW50Q2hpbGQ7ZTspe209ZS5nZXRBdHRyaWJ1dGVOUyhoLCJuYW1lIik7aWYoZS5uYW1lc3BhY2VVUkk9PT1oJiYic3R5bGUiPT09ZS5sb2NhbE5hbWUmJmUuZ2V0QXR0cmlidXRlTlMoaCwiZmFtaWx5Iik9PT1iJiZtPT09Y3x8Imxpc3Qtc3R5bGUiPT09YiYmZS5uYW1lc3BhY2VVUkk9PT15JiYibGlzdC1zdHlsZSI9PT1lLmxvY2FsTmFtZSYmbT09PWN8fCJkYXRhIj09PWImJmUubmFtZXNwYWNlVVJJPT09eCYmbT09PWMpcmV0dXJuIGU7ZT1lLm5leHRFbGVtZW50U2libGluZ31yZXR1cm4gbnVsbH1mdW5jdGlvbiBmKGEpe2Zvcih2YXIgYyxiLGQsZSxtPXt9LGw9YS5maXJzdEVsZW1lbnRDaGlsZDtsOyl7aWYobC5uYW1lc3BhY2VVUkk9PT1oKWZvcihkPQptW2wubm9kZU5hbWVdPXt9LGI9bC5hdHRyaWJ1dGVzLGM9MDtjPGIubGVuZ3RoO2MrPTEpZT1iLml0ZW0oYyksZFtlLm5hbWVdPWUudmFsdWU7bD1sLm5leHRFbGVtZW50U2libGluZ31iPWEuYXR0cmlidXRlcztmb3IoYz0wO2M8Yi5sZW5ndGg7Yys9MSllPWIuaXRlbShjKSxtW2UubmFtZV09ZS52YWx1ZTtyZXR1cm4gbX1mdW5jdGlvbiBuKGMsZSl7Zm9yKHZhciBtPWEucm9vdEVsZW1lbnQuc3R5bGVzLGwsbj17fSxrPWMuZ2V0QXR0cmlidXRlTlMoaCwiZmFtaWx5Iikscj1jO3I7KWw9ZihyKSxuPXUubWVyZ2VPYmplY3RzKGwsbikscj0obD1yLmdldEF0dHJpYnV0ZU5TKGgsInBhcmVudC1zdHlsZS1uYW1lIikpP2IobCxrLFttXSk6bnVsbDtpZihyPWQoaykpbD1mKHIpLG49dS5tZXJnZU9iamVjdHMobCxuKTshMSE9PWUmJihsPWcoayksbj11Lm1lcmdlT2JqZWN0cyhsLG4pKTtyZXR1cm4gbn1mdW5jdGlvbiBwKGIsZCl7ZnVuY3Rpb24gaChhKXtPYmplY3Qua2V5cyhhKS5mb3JFYWNoKGZ1bmN0aW9uKGMpe09iamVjdC5rZXlzKGFbY10pLmZvckVhY2goZnVuY3Rpb24oYSl7Zis9CiJ8IitjKyI6IithKyJ8In0pfSl9Zm9yKHZhciBlPWIubm9kZVR5cGU9PT1Ob2RlLlRFWFRfTk9ERT9iLnBhcmVudE5vZGU6YixtLGw9W10sZj0iIixuPSExO2UmJiF3LmlzSW5saW5lUm9vdChlKSYmZS5wYXJlbnROb2RlIT09YS5yb290RWxlbWVudDspIW4mJncuaXNHcm91cGluZ0VsZW1lbnQoZSkmJihuPSEwKSwobT1jLmRldGVybWluZVN0eWxlc0Zvck5vZGUoZSkpJiZsLnB1c2gobSksZT1lLnBhcmVudE5vZGU7biYmKGwuZm9yRWFjaChoKSxkJiYoZFtmXT1sKSk7cmV0dXJuIG4/bDp2b2lkIDB9ZnVuY3Rpb24gcihjKXt2YXIgZD17b3JkZXJlZFN0eWxlczpbXSxzdHlsZVByb3BlcnRpZXM6e319O2MuZm9yRWFjaChmdW5jdGlvbihjKXtPYmplY3Qua2V5cyhjKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciBtPU9iamVjdC5rZXlzKGNbZV0pWzBdLGw9e25hbWU6bSxmYW1pbHk6ZSxkaXNwbGF5TmFtZTp2b2lkIDAsaXNDb21tb25TdHlsZTohMX0sZjsoZj1iKG0sZSkpPyhlPW4oZiksCmQuc3R5bGVQcm9wZXJ0aWVzPXUubWVyZ2VPYmplY3RzKGUsZC5zdHlsZVByb3BlcnRpZXMpLGwuZGlzcGxheU5hbWU9Zi5nZXRBdHRyaWJ1dGVOUyhoLCJkaXNwbGF5LW5hbWUiKXx8dm9pZCAwLGwuaXNDb21tb25TdHlsZT1mLnBhcmVudE5vZGU9PT1hLnJvb3RFbGVtZW50LnN0eWxlcyk6cnVudGltZS5sb2coIk5vIHN0eWxlIGVsZW1lbnQgZm91bmQgZm9yICciK20rIicgb2YgZmFtaWx5ICciK2UrIiciKTtkLm9yZGVyZWRTdHlsZXMucHVzaChsKX0pfSk7cmV0dXJuIGR9ZnVuY3Rpb24gcShhLGMpe3ZhciBiPXt9LGQ9W107Y3x8KGM9e30pO2EuZm9yRWFjaChmdW5jdGlvbihhKXtwKGEsYil9KTtPYmplY3Qua2V5cyhiKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2NbYV18fChjW2FdPXIoYlthXSkpO2QucHVzaChjW2FdKX0pO3JldHVybiBkfWZ1bmN0aW9uIGUoYyl7Zm9yKHZhciBiPWEucm9vdEVsZW1lbnQubWFzdGVyU3R5bGVzLmZpcnN0RWxlbWVudENoaWxkO2ImJihiLm5hbWVzcGFjZVVSSSE9PQpofHwibWFzdGVyLXBhZ2UiIT09Yi5sb2NhbE5hbWV8fGIuZ2V0QXR0cmlidXRlTlMoaCwibmFtZSIpIT09Yyk7KWI9Yi5uZXh0RWxlbWVudFNpYmxpbmc7cmV0dXJuIGJ9ZnVuY3Rpb24gbChhLGMpe3ZhciBiO2EmJihiPXQuY29udmVydE1lYXN1cmUoYSwicHgiKSk7dm9pZCAwPT09YiYmYyYmKGI9dC5jb252ZXJ0TWVhc3VyZShjLCJweCIpKTtyZXR1cm4gYn12YXIgYSxjPW5ldyBvZGYuU3R5bGVJbmZvLG09b2RmLk5hbWVzcGFjZXMuc3ZnbnMsaD1vZGYuTmFtZXNwYWNlcy5zdHlsZW5zLHk9b2RmLk5hbWVzcGFjZXMudGV4dG5zLHg9b2RmLk5hbWVzcGFjZXMubnVtYmVybnMsej1vZGYuTmFtZXNwYWNlcy5mb25zLHc9b2RmLk9kZlV0aWxzLHY9Y29yZS5Eb21VdGlscyx1PW5ldyBjb3JlLlV0aWxzLHQ9bmV3IGNvcmUuQ1NTVW5pdHMsQT17cGFyYWdyYXBoOnsic3R5bGU6cGFyYWdyYXBoLXByb3BlcnRpZXMiOnsiZm86dGV4dC1hbGlnbiI6ImxlZnQifX19O3RoaXMuZ2V0U3lzdGVtRGVmYXVsdFN0eWxlQXR0cmlidXRlcz0KZzt0aGlzLnNldE9kZkNvbnRhaW5lcj1mdW5jdGlvbihjKXthPWN9O3RoaXMuZ2V0Rm9udE1hcD1rO3RoaXMuZ2V0QXZhaWxhYmxlUGFyYWdyYXBoU3R5bGVzPWZ1bmN0aW9uKCl7Zm9yKHZhciBjPWEucm9vdEVsZW1lbnQuc3R5bGVzLGIsZCxlPVtdLGM9YyYmYy5maXJzdEVsZW1lbnRDaGlsZDtjOykic3R5bGUiPT09Yy5sb2NhbE5hbWUmJmMubmFtZXNwYWNlVVJJPT09aCYmKGI9Yy5nZXRBdHRyaWJ1dGVOUyhoLCJmYW1pbHkiKSwicGFyYWdyYXBoIj09PWImJihiPWMuZ2V0QXR0cmlidXRlTlMoaCwibmFtZSIpLGQ9Yy5nZXRBdHRyaWJ1dGVOUyhoLCJkaXNwbGF5LW5hbWUiKXx8YixiJiZkJiZlLnB1c2goe25hbWU6YixkaXNwbGF5TmFtZTpkfSkpKSxjPWMubmV4dEVsZW1lbnRTaWJsaW5nO3JldHVybiBlfTt0aGlzLmlzU3R5bGVVc2VkPWZ1bmN0aW9uKGIpe3ZhciBkLGU9YS5yb290RWxlbWVudDtkPWMuaGFzRGVyaXZlZFN0eWxlcyhlLG9kZi5OYW1lc3BhY2VzLmxvb2t1cE5hbWVzcGFjZVVSSSwKYik7Yj0obmV3IGMuVXNlZFN0eWxlTGlzdChlLnN0eWxlcykpLnVzZXMoYil8fChuZXcgYy5Vc2VkU3R5bGVMaXN0KGUuYXV0b21hdGljU3R5bGVzKSkudXNlcyhiKXx8KG5ldyBjLlVzZWRTdHlsZUxpc3QoZS5ib2R5KSkudXNlcyhiKTtyZXR1cm4gZHx8Yn07dGhpcy5nZXREZWZhdWx0U3R5bGVFbGVtZW50PWQ7dGhpcy5nZXRTdHlsZUVsZW1lbnQ9Yjt0aGlzLmdldFN0eWxlQXR0cmlidXRlcz1mO3RoaXMuZ2V0SW5oZXJpdGVkU3R5bGVBdHRyaWJ1dGVzPW47dGhpcy5nZXRGaXJzdENvbW1vblBhcmVudFN0eWxlTmFtZU9yU2VsZj1mdW5jdGlvbihjKXt2YXIgZD1hLnJvb3RFbGVtZW50LnN0eWxlcyxlO2lmKGU9YihjLCJwYXJhZ3JhcGgiLFthLnJvb3RFbGVtZW50LmF1dG9tYXRpY1N0eWxlc10pKWlmKGM9ZS5nZXRBdHRyaWJ1dGVOUyhoLCJwYXJlbnQtc3R5bGUtbmFtZSIpLCFjKXJldHVybiBudWxsO3JldHVybihlPWIoYywicGFyYWdyYXBoIixbZF0pKT9jOm51bGx9O3RoaXMuaGFzUGFyYWdyYXBoU3R5bGU9CmZ1bmN0aW9uKGEpe3JldHVybiBCb29sZWFuKGIoYSwicGFyYWdyYXBoIikpfTt0aGlzLmdldEFwcGxpZWRTdHlsZXM9cTt0aGlzLmdldEFwcGxpZWRTdHlsZXNGb3JFbGVtZW50PWZ1bmN0aW9uKGEsYyl7cmV0dXJuIHEoW2FdLGMpWzBdfTt0aGlzLnVwZGF0ZVN0eWxlPWZ1bmN0aW9uKGMsYil7dmFyIGQsZTt2Lm1hcE9iak9udG9Ob2RlKGMsYixvZGYuTmFtZXNwYWNlcy5sb29rdXBOYW1lc3BhY2VVUkkpOyhkPShkPWJbInN0eWxlOnRleHQtcHJvcGVydGllcyJdKSYmZFsic3R5bGU6Zm9udC1uYW1lIl0pJiYhaygpLmhhc093blByb3BlcnR5KGQpJiYoZT1jLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGgsInN0eWxlOmZvbnQtZmFjZSIpLGUuc2V0QXR0cmlidXRlTlMoaCwic3R5bGU6bmFtZSIsZCksZS5zZXRBdHRyaWJ1dGVOUyhtLCJzdmc6Zm9udC1mYW1pbHkiLGQpLGEucm9vdEVsZW1lbnQuZm9udEZhY2VEZWNscy5hcHBlbmRDaGlsZChlKSl9O3RoaXMuY3JlYXRlRGVyaXZlZFN0eWxlT2JqZWN0PQpmdW5jdGlvbihjLGQsZSl7dmFyIGg9YihjLGQpO3J1bnRpbWUuYXNzZXJ0KEJvb2xlYW4oaCksIk5vIHN0eWxlIGVsZW1lbnQgZm91bmQgZm9yICciK2MrIicgb2YgZmFtaWx5ICciK2QrIiciKTtjPWgucGFyZW50Tm9kZT09PWEucm9vdEVsZW1lbnQuc3R5bGVzP3sic3R5bGU6cGFyZW50LXN0eWxlLW5hbWUiOmN9OmYoaCk7Y1sic3R5bGU6ZmFtaWx5Il09ZDt1Lm1lcmdlT2JqZWN0cyhjLGUpO3JldHVybiBjfTt0aGlzLmdldERlZmF1bHRUYWJTdG9wRGlzdGFuY2U9ZnVuY3Rpb24oKXtmb3IodmFyIGE9ZCgicGFyYWdyYXBoIiksYT1hJiZhLmZpcnN0RWxlbWVudENoaWxkLGM7YTspYS5uYW1lc3BhY2VVUkk9PT1oJiYicGFyYWdyYXBoLXByb3BlcnRpZXMiPT09YS5sb2NhbE5hbWUmJihjPWEuZ2V0QXR0cmlidXRlTlMoaCwidGFiLXN0b3AtZGlzdGFuY2UiKSksYT1hLm5leHRFbGVtZW50U2libGluZztjfHwoYz0iMS4yNWNtIik7cmV0dXJuIHcucGFyc2VOb25OZWdhdGl2ZUxlbmd0aChjKX07CnRoaXMuZ2V0TWFzdGVyUGFnZUVsZW1lbnQ9ZTt0aGlzLmdldENvbnRlbnRTaXplPWZ1bmN0aW9uKGMsZCl7dmFyIG0sZixuLGcsayxyLHAscSx5LHU7YTp7Zj1iKGMsZCk7cnVudGltZS5hc3NlcnQoInBhcmFncmFwaCI9PT1kfHwidGFibGUiPT09ZCwic3R5bGVGYW1pbHkgbXVzdCBiZSBlaXRoZXIgcGFyYWdyYXBoIG9yIHRhYmxlIik7aWYoZil7aWYoZj1mLmdldEF0dHJpYnV0ZU5TKGgsIm1hc3Rlci1wYWdlLW5hbWUiKSkobT1lKGYpKXx8cnVudGltZS5sb2coIldBUk46IE5vIG1hc3RlciBwYWdlIGRlZmluaXRpb24gZm91bmQgZm9yICIrZik7bXx8KG09ZSgiU3RhbmRhcmQiKSk7bXx8KG09YS5yb290RWxlbWVudC5tYXN0ZXJTdHlsZXMuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhoLCJtYXN0ZXItcGFnZSIpWzBdKXx8cnVudGltZS5sb2coIldBUk46IERvY3VtZW50IGhhcyBubyBtYXN0ZXIgcGFnZXMgZGVmaW5lZCIpO2lmKG0pZm9yKGY9bS5nZXRBdHRyaWJ1dGVOUyhoLCJwYWdlLWxheW91dC1uYW1lIiksCm49YS5yb290RWxlbWVudC5hdXRvbWF0aWNTdHlsZXMuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhoLCJwYWdlLWxheW91dCIpLGc9MDtnPG4ubGVuZ3RoO2crPTEpaWYobT1uLml0ZW0oZyksbS5nZXRBdHRyaWJ1dGVOUyhoLCJuYW1lIik9PT1mKWJyZWFrIGF9bT1udWxsfW18fChtPXYuZ2V0RGlyZWN0Q2hpbGQoYS5yb290RWxlbWVudC5zdHlsZXMsaCwiZGVmYXVsdC1wYWdlLWxheW91dCIpKTsobT12LmdldERpcmVjdENoaWxkKG0saCwicGFnZS1sYXlvdXQtcHJvcGVydGllcyIpKT8oImxhbmRzY2FwZSI9PT1tLmdldEF0dHJpYnV0ZU5TKGgsInByaW50LW9yaWVudGF0aW9uIik/KGY9IjI5LjdjbSIsbj0iMjEuMDAxY20iKTooZj0iMjEuMDAxY20iLG49IjI5LjdjbSIpLGY9bChtLmdldEF0dHJpYnV0ZU5TKHosInBhZ2Utd2lkdGgiKSxmKSxuPWwobS5nZXRBdHRyaWJ1dGVOUyh6LCJwYWdlLWhlaWdodCIpLG4pLGc9bChtLmdldEF0dHJpYnV0ZU5TKHosIm1hcmdpbiIpKSx2b2lkIDA9PT0KZz8oZz1sKG0uZ2V0QXR0cmlidXRlTlMoeiwibWFyZ2luLWxlZnQiKSwiMmNtIiksaz1sKG0uZ2V0QXR0cmlidXRlTlMoeiwibWFyZ2luLXJpZ2h0IiksIjJjbSIpLHI9bChtLmdldEF0dHJpYnV0ZU5TKHosIm1hcmdpbi10b3AiKSwiMmNtIikscD1sKG0uZ2V0QXR0cmlidXRlTlMoeiwibWFyZ2luLWJvdHRvbSIpLCIyY20iKSk6Zz1rPXI9cD1nLHE9bChtLmdldEF0dHJpYnV0ZU5TKHosInBhZGRpbmciKSksdm9pZCAwPT09cT8ocT1sKG0uZ2V0QXR0cmlidXRlTlMoeiwicGFkZGluZy1sZWZ0IiksIjBjbSIpLHk9bChtLmdldEF0dHJpYnV0ZU5TKHosInBhZGRpbmctcmlnaHQiKSwiMGNtIiksdT1sKG0uZ2V0QXR0cmlidXRlTlMoeiwicGFkZGluZy10b3AiKSwiMGNtIiksbT1sKG0uZ2V0QXR0cmlidXRlTlMoeiwicGFkZGluZy1ib3R0b20iKSwiMGNtIikpOnE9eT11PW09cSk6KGY9bCgiMjEuMDAxY20iKSxuPWwoIjI5LjdjbSIpLGc9az1yPXA9Zz1sKCIyY20iKSxxPXk9dT1tPXE9CmwoIjBjbSIpKTtyZXR1cm57d2lkdGg6Zi1nLWstcS15LGhlaWdodDpuLXItcC11LW19fX07CihmdW5jdGlvbigpe3ZhciBnPW9kZi5OYW1lc3BhY2VzLnN0eWxlbnMsaz1vZGYuTmFtZXNwYWNlcy50ZXh0bnMsZD17Z3JhcGhpYzoiZHJhdyIsImRyYXdpbmctcGFnZSI6ImRyYXciLHBhcmFncmFwaDoidGV4dCIscHJlc2VudGF0aW9uOiJwcmVzZW50YXRpb24iLHJ1Ynk6InRleHQiLHNlY3Rpb246InRleHQiLHRhYmxlOiJ0YWJsZSIsInRhYmxlLWNlbGwiOiJ0YWJsZSIsInRhYmxlLWNvbHVtbiI6InRhYmxlIiwidGFibGUtcm93IjoidGFibGUiLHRleHQ6InRleHQiLGxpc3Q6InRleHQiLHBhZ2U6Im9mZmljZSJ9O29kZi5TdHlsZVRyZWVOb2RlPWZ1bmN0aW9uKGIpe3RoaXMuZGVyaXZlZFN0eWxlcz17fTt0aGlzLmVsZW1lbnQ9Yn07b2RmLlN0eWxlVHJlZT1mdW5jdGlvbihiLGYpe2Z1bmN0aW9uIG4oYil7dmFyIGEsYyxkLGU9e307aWYoIWIpcmV0dXJuIGU7Zm9yKGI9Yi5maXJzdEVsZW1lbnRDaGlsZDtiOyl7aWYoYz1iLm5hbWVzcGFjZVVSSSE9PWd8fCJzdHlsZSIhPT1iLmxvY2FsTmFtZSYmCiJkZWZhdWx0LXN0eWxlIiE9PWIubG9jYWxOYW1lP2IubmFtZXNwYWNlVVJJPT09ayYmImxpc3Qtc3R5bGUiPT09Yi5sb2NhbE5hbWU/Imxpc3QiOmIubmFtZXNwYWNlVVJJIT09Z3x8InBhZ2UtbGF5b3V0IiE9PWIubG9jYWxOYW1lJiYiZGVmYXVsdC1wYWdlLWxheW91dCIhPT1iLmxvY2FsTmFtZT92b2lkIDA6InBhZ2UiOmIuZ2V0QXR0cmlidXRlTlMoZywiZmFtaWx5IikpKGE9Yi5nZXRBdHRyaWJ1dGVOUyhnLCJuYW1lIikpfHwoYT0iIiksZS5oYXNPd25Qcm9wZXJ0eShjKT9kPWVbY106ZVtjXT1kPXt9LGRbYV09YjtiPWIubmV4dEVsZW1lbnRTaWJsaW5nfXJldHVybiBlfWZ1bmN0aW9uIHAoYixhKXtpZihiLmhhc093blByb3BlcnR5KGEpKXJldHVybiBiW2FdO3ZhciBjPW51bGwsZD1PYmplY3Qua2V5cyhiKSxlO2ZvcihlPTA7ZTxkLmxlbmd0aCYmIShjPXAoYltkW2VdXS5kZXJpdmVkU3R5bGVzLGEpKTtlKz0xKTtyZXR1cm4gY31mdW5jdGlvbiByKGIsYSxjKXt2YXIgZCxlLApmO2lmKCFhLmhhc093blByb3BlcnR5KGIpKXJldHVybiBudWxsO2Q9bmV3IG9kZi5TdHlsZVRyZWVOb2RlKGFbYl0pO2U9ZC5lbGVtZW50LmdldEF0dHJpYnV0ZU5TKGcsInBhcmVudC1zdHlsZS1uYW1lIik7Zj1udWxsO2UmJihmPXAoYyxlKXx8cihlLGEsYykpO2Y/Zi5kZXJpdmVkU3R5bGVzW2JdPWQ6Y1tiXT1kO2RlbGV0ZSBhW2JdO3JldHVybiBkfWZ1bmN0aW9uIHEoYixhKXtiJiZPYmplY3Qua2V5cyhiKS5mb3JFYWNoKGZ1bmN0aW9uKGMpe3IoYyxiLGEpfSl9dmFyIGU9e307dGhpcy5nZXRTdHlsZVRyZWU9ZnVuY3Rpb24oKXtyZXR1cm4gZX07KGZ1bmN0aW9uKCl7dmFyIGwsYSxjO2E9bihiKTtjPW4oZik7T2JqZWN0LmtleXMoZCkuZm9yRWFjaChmdW5jdGlvbihiKXtsPWVbYl09e307cShhW2JdLGwpO3EoY1tiXSxsKX0pfSkoKX19KSgpOwooZnVuY3Rpb24oKXtmdW5jdGlvbiBnKGIsZCl7dHJ5e2IuaW5zZXJ0UnVsZShkLGIuY3NzUnVsZXMubGVuZ3RoKX1jYXRjaChmKXtydW50aW1lLmxvZygiY2Fubm90IGxvYWQgcnVsZTogIitkKyIgLSAiK2YpfX1mdW5jdGlvbiBrKGIsZCl7dGhpcy5saXN0Q291bnRlckNvdW50PTA7dGhpcy5jb250ZW50UnVsZXM9Yjt0aGlzLmNvdW50ZXJJZFN0YWNrPVtdO3RoaXMuY29udGludWVkQ291bnRlcklkU3RhY2s9ZH1mdW5jdGlvbiBkKGIpe2Z1bmN0aW9uIGQoYyxoLGYsbCl7dmFyIGs9aC5uYW1lc3BhY2VVUkk9PT1uJiYibGlzdCI9PT1oLmxvY2FsTmFtZSxyPWgubmFtZXNwYWNlVVJJPT09biYmImxpc3QtaXRlbSI9PT1oLmxvY2FsTmFtZTtpZihrfHxyKXtpZihrKXt2YXIgaz1mKz0xLHAsdSx0O2wubGlzdENvdW50ZXJDb3VudCs9MTtyPWMrIi1sZXZlbCIraysiLSIrbC5saXN0Q291bnRlckNvdW50O2guc2V0QXR0cmlidXRlTlMoInVybjp3ZWJvZGY6bmFtZXM6aGVscGVyIiwiY291bnRlci1pZCIsCnIpO3A9bC5jb250aW51ZWRDb3VudGVySWRTdGFjay5zaGlmdCgpO3B8fChwPXIsYSs9cisiIDEgIix1PSd0ZXh0fGxpc3Rbd2Vib2RmaGVscGVyfGNvdW50ZXItaWQ9IicrcisnIl0gPiB0ZXh0fGxpc3QtaXRlbTpmaXJzdC1jaGlsZCA+IDpub3QodGV4dHxsaXN0KTpmaXJzdC1jaGlsZDpiZWZvcmUnLHUrPSJ7Iix1Kz0iY291bnRlci1pbmNyZW1lbnQ6ICIrcCsiIDA7Iix1Kz0ifSIsZyhiLHUpKTtmb3IoO2wuY291bnRlcklkU3RhY2subGVuZ3RoPj1rOylsLmNvdW50ZXJJZFN0YWNrLnBvcCgpO2wuY291bnRlcklkU3RhY2sucHVzaChwKTt0PWwuY29udGVudFJ1bGVzW2sudG9TdHJpbmcoKV18fCIiO2Zvcih1PTE7dTw9azt1Kz0xKXQ9dC5yZXBsYWNlKHUrIndlYm9kZi1saXN0TGV2ZWwiLGwuY291bnRlcklkU3RhY2tbdS0xXSk7dT0ndGV4dHxsaXN0W3dlYm9kZmhlbHBlcnxjb3VudGVyLWlkPSInK3IrJyJdID4gdGV4dHxsaXN0LWl0ZW0gPiA6bm90KHRleHR8bGlzdCk6Zmlyc3QtY2hpbGQ6YmVmb3JlJzsKdSs9InsiO3UrPXQ7dSs9ImNvdW50ZXItaW5jcmVtZW50OiAiK3ArIjsiO3UrPSJ9IjtnKGIsdSl9Zm9yKGg9aC5maXJzdEVsZW1lbnRDaGlsZDtoOylkKGMsaCxmLGwpLGg9aC5uZXh0RWxlbWVudFNpYmxpbmd9ZWxzZSBsLmNvbnRpbnVlZENvdW50ZXJJZFN0YWNrPVtdfXZhciBmPTAsYT0iIixjPXt9O3RoaXMuY3JlYXRlQ291bnRlclJ1bGVzPWZ1bmN0aW9uKGEsYixuKXt2YXIgZz1iLmdldEF0dHJpYnV0ZU5TKHAsImlkIikscj1bXTtuJiYobj1uLmdldEF0dHJpYnV0ZU5TKCJ1cm46d2Vib2RmOm5hbWVzOmhlbHBlciIsImNvdW50ZXItaWQiKSxyPWNbbl0uc2xpY2UoMCkpO2E9bmV3IGsoYSxyKTtnP2c9IlkiK2c6KGYrPTEsZz0iWCIrZik7ZChnLGIsMCxhKTtjW2crIi1sZXZlbDEtMSJdPWEuY291bnRlcklkU3RhY2t9O3RoaXMuaW5pdGlhbGlzZUNyZWF0ZWRDb3VudGVycz1mdW5jdGlvbigpe3ZhciBjO2M9Im9mZmljZXxkb2N1bWVudHsiKygiY291bnRlci1yZXNldDogIithKwoiOyIpO2MrPSJ9IjtnKGIsYyl9fXZhciBiPW9kZi5OYW1lc3BhY2VzLmZvbnMsZj1vZGYuTmFtZXNwYWNlcy5zdHlsZW5zLG49b2RmLk5hbWVzcGFjZXMudGV4dG5zLHA9b2RmLk5hbWVzcGFjZXMueG1sbnMscj17MToiZGVjaW1hbCIsYToibG93ZXItbGF0aW4iLEE6InVwcGVyLWxhdGluIixpOiJsb3dlci1yb21hbiIsSToidXBwZXItcm9tYW4ifTtvZGYuTGlzdFN0eWxlVG9Dc3M9ZnVuY3Rpb24oKXtmdW5jdGlvbiBrKGEpe3ZhciBiPW0ucGFyc2VMZW5ndGgoYSk7cmV0dXJuIGI/Yy5jb252ZXJ0KGIudmFsdWUsYi51bml0LCJweCIpOihydW50aW1lLmxvZygiQ291bGQgbm90IHBhcnNlIHZhbHVlICciK2ErIicuIiksMCl9ZnVuY3Rpb24gZShhKXtyZXR1cm4gYS5yZXBsYWNlKC9cXC9nLCJcXFxcIikucmVwbGFjZSgvIi9nLCdcXCInKX1mdW5jdGlvbiBsKGEsYyl7dmFyIGI7YSYmKGI9YS5nZXRBdHRyaWJ1dGVOUyhuLCJzdHlsZS1uYW1lIikpO3JldHVybiBiPT09Y31mdW5jdGlvbiBhKGEsCmMsYil7Yz1jLmdldEVsZW1lbnRzQnlUYWdOYW1lTlMobiwibGlzdCIpO2E9bmV3IGQoYSk7dmFyIG0sZyxrLHEsdCxBLEk9e30sSztmb3IoSz0wO0s8Yy5sZW5ndGg7Sys9MSlpZihtPWMuaXRlbShLKSxBPW0uZ2V0QXR0cmlidXRlTlMobiwic3R5bGUtbmFtZSIpKXtrPW0uZ2V0QXR0cmlidXRlTlMobiwiY29udGludWUtbnVtYmVyaW5nIik7cT1tLmdldEF0dHJpYnV0ZU5TKG4sImNvbnRpbnVlLWxpc3QiKTsodD1tLmdldEF0dHJpYnV0ZU5TKHAsImlkIikpJiYoSVt0XT1tKTt0PWJbQV0uZWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZDtmb3IodmFyIEw9dm9pZCAwLEU9e307dDspe3ZhciBMPShMPXQuZ2V0QXR0cmlidXRlTlMobiwibGV2ZWwiKSkmJnBhcnNlSW50KEwsMTApLE49dCxPPSIiLEQ9dm9pZCAwLFY9dm9pZCAwLFc9RD12b2lkIDA7aWYoImxpc3QtbGV2ZWwtc3R5bGUtbnVtYmVyIj09PU4ubG9jYWxOYW1lKXt2YXIgSj1OLE89Si5nZXRBdHRyaWJ1dGVOUyhmLCJudW0tZm9ybWF0IiksCkQ9Si5nZXRBdHRyaWJ1dGVOUyhmLCJudW0tc3VmZml4Iil8fCIiLFY9Si5nZXRBdHRyaWJ1dGVOUyhmLCJudW0tcHJlZml4Iil8fCIiLFI9IiIsUD1KLmdldEF0dHJpYnV0ZU5TKG4sImxldmVsIiksSj1KLmdldEF0dHJpYnV0ZU5TKG4sImRpc3BsYXktbGV2ZWxzIik7ViYmKFIrPSciJytlKFYpKyciXG4nKTtpZihyLmhhc093blByb3BlcnR5KE8pKWZvcihQPVA/cGFyc2VJbnQoUCwxMCk6MSxKPUo/cGFyc2VJbnQoSiwxMCk6MTswPEo7KVIrPSIgY291bnRlcigiKyhQLUorMSkrIndlYm9kZi1saXN0TGV2ZWwsIityW09dKyIpIiwxPEomJihSKz0nIi4iJyksLS1KO2Vsc2UgUj1PP1IrKCcgIicrTysnIicpOlIrJyAiIic7Tz0iY29udGVudDoiK1IrJyAiJytlKEQpKyciJ31lbHNlImxpc3QtbGV2ZWwtc3R5bGUtaW1hZ2UiPT09Ti5sb2NhbE5hbWU/Tz0iY29udGVudDogbm9uZSI6Imxpc3QtbGV2ZWwtc3R5bGUtYnVsbGV0Ij09PU4ubG9jYWxOYW1lJiYoTz1OLmdldEF0dHJpYnV0ZU5TKG4sCiJidWxsZXQtY2hhciIpLE89J2NvbnRlbnQ6ICInK2UoTykrJyInKTtpZihEPU4uZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhmLCJsaXN0LWxldmVsLXByb3BlcnRpZXMiKVswXSlWPUQuZ2V0QXR0cmlidXRlTlMobiwibGlzdC1sZXZlbC1wb3NpdGlvbi1hbmQtc3BhY2UtbW9kZSIpLCJsYWJlbC1hbGlnbm1lbnQiPT09ViYmKChEPUQuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhmLCJsaXN0LWxldmVsLWxhYmVsLWFsaWdubWVudCIpWzBdKSYmKFc9RC5nZXRBdHRyaWJ1dGVOUyhuLCJsYWJlbC1mb2xsb3dlZC1ieSIpKSwic3BhY2UiPT09VyYmKE8rPScgIlxcYTAiJykpO0VbTF09IlxuIitPKyI7XG4iO3Q9dC5uZXh0RWxlbWVudFNpYmxpbmd9dD1FO2smJiFxJiZsKGcsQSk/YS5jcmVhdGVDb3VudGVyUnVsZXModCxtLGcpOnEmJmwoSVtxXSxBKT9hLmNyZWF0ZUNvdW50ZXJSdWxlcyh0LG0sSVtxXSk6YS5jcmVhdGVDb3VudGVyUnVsZXModCxtKTtnPW19YS5pbml0aWFsaXNlQ3JlYXRlZENvdW50ZXJzKCl9CnZhciBjPW5ldyBjb3JlLkNTU1VuaXRzLG09b2RmLk9kZlV0aWxzO3RoaXMuYXBwbHlMaXN0U3R5bGVzPWZ1bmN0aW9uKGMsZCxlKXt2YXIgbSxsOyhtPWQubGlzdCkmJk9iamVjdC5rZXlzKG0pLmZvckVhY2goZnVuY3Rpb24oYSl7bD1tW2FdO2Zvcih2YXIgZD1sLmVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQ7ZDspe2lmKGQubmFtZXNwYWNlVVJJPT09bil7Zm9yKHZhciBlPWMscj1kLHA9J3RleHR8bGlzdFt0ZXh0fHN0eWxlLW5hbWU9IicrYSsnIl0nLHk9ci5nZXRBdHRyaWJ1dGVOUyhuLCJsZXZlbCIpLHg9dm9pZCAwLEU9dm9pZCAwLE49RT12b2lkIDAsTz12b2lkIDAsRD12b2lkIDAsVj14PXZvaWQgMCxXPXZvaWQgMCxKPXZvaWQgMCxSPXZvaWQgMCxPPXZvaWQgMCxOPShFPXIuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhmLCJsaXN0LWxldmVsLXByb3BlcnRpZXMiKVswXSkmJkUuZ2V0QXR0cmlidXRlTlMobiwibGlzdC1sZXZlbC1wb3NpdGlvbi1hbmQtc3BhY2UtbW9kZSIpLApPPUUmJkUuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhmLCJsaXN0LWxldmVsLWxhYmVsLWFsaWdubWVudCIpWzBdLHg9eT15JiZwYXJzZUludCh5LDEwKTsxPHg7KXArPSIgPiB0ZXh0fGxpc3QtaXRlbSA+IHRleHR8bGlzdCIsLS14O3g9RSYmRS5nZXRBdHRyaWJ1dGVOUyhiLCJ0ZXh0LWFsaWduIil8fCJsZWZ0Ijtzd2l0Y2goeCl7Y2FzZSAiZW5kIjp4PSJyaWdodCI7YnJlYWs7Y2FzZSAic3RhcnQiOng9ImxlZnQifSJsYWJlbC1hbGlnbm1lbnQiPT09Tj8oRD1PJiZPLmdldEF0dHJpYnV0ZU5TKGIsIm1hcmdpbi1sZWZ0Iil8fCIwcHgiLEo9TyYmTy5nZXRBdHRyaWJ1dGVOUyhiLCJ0ZXh0LWluZGVudCIpfHwiMHB4IixSPU8mJk8uZ2V0QXR0cmlidXRlTlMobiwibGFiZWwtZm9sbG93ZWQtYnkiKSxPPWsoRCkpOihEPUUmJkUuZ2V0QXR0cmlidXRlTlMobiwic3BhY2UtYmVmb3JlIil8fCIwcHgiLFY9RSYmRS5nZXRBdHRyaWJ1dGVOUyhuLCJtaW4tbGFiZWwtd2lkdGgiKXx8IjBweCIsClc9RSYmRS5nZXRBdHRyaWJ1dGVOUyhuLCJtaW4tbGFiZWwtZGlzdGFuY2UiKXx8IjBweCIsTz1rKEQpK2soVikpO0U9cCsiID4gdGV4dHxsaXN0LWl0ZW0iO0UrPSJ7IjtFKz0ibWFyZ2luLWxlZnQ6ICIrTysicHg7IjtFKz0ifSI7ZyhlLEUpO0U9cCsiID4gdGV4dHxsaXN0LWl0ZW0gPiB0ZXh0fGxpc3QiO0UrPSJ7IjtFKz0ibWFyZ2luLWxlZnQ6ICIrLU8rInB4OyI7RSs9In0iO2coZSxFKTtFPXArIiA+IHRleHR8bGlzdC1pdGVtID4gOm5vdCh0ZXh0fGxpc3QpOmZpcnN0LWNoaWxkOmJlZm9yZSI7RSs9InsiO0UrPSJ0ZXh0LWFsaWduOiAiK3grIjsiO0UrPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IjsibGFiZWwtYWxpZ25tZW50Ij09PU4/KEUrPSJtYXJnaW4tbGVmdDogIitKKyI7IiwibGlzdHRhYiI9PT1SJiYoRSs9InBhZGRpbmctcmlnaHQ6IDAuMmNtOyIpKTooRSs9Im1pbi13aWR0aDogIitWKyI7IixFKz0ibWFyZ2luLWxlZnQ6ICIrKDA9PT1wYXJzZUZsb2F0KFYpPyIiOgoiLSIpK1YrIjsiLEUrPSJwYWRkaW5nLXJpZ2h0OiAiK1crIjsiKTtFKz0ifSI7ZyhlLEUpfWQ9ZC5uZXh0RWxlbWVudFNpYmxpbmd9fSk7YShjLGUsbSl9fX0pKCk7b2RmLkxhenlTdHlsZVByb3BlcnRpZXM9ZnVuY3Rpb24oZyxrKXt2YXIgZD17fTt0aGlzLnZhbHVlPWZ1bmN0aW9uKGIpe3ZhciBmO2QuaGFzT3duUHJvcGVydHkoYik/Zj1kW2JdOihmPWtbYl0oKSx2b2lkIDA9PT1mJiZnJiYoZj1nLnZhbHVlKGIpKSxkW2JdPWYpO3JldHVybiBmfTt0aGlzLnJlc2V0PWZ1bmN0aW9uKGIpe2c9YjtkPXt9fX07Cm9kZi5TdHlsZVBhcnNlVXRpbHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBnKGQpe3ZhciBiLGY7ZD0oZD0vKC0/WzAtOV0qWzAtOV1bMC05XSooXC5bMC05XSopP3wwK1wuWzAtOV0qWzEtOV1bMC05XSp8XC5bMC05XSpbMS05XVswLTldKikoKGNtKXwobW0pfChpbil8KHB0KXwocGMpfChweCkpLy5leGVjKGQpKT97dmFsdWU6cGFyc2VGbG9hdChkWzFdKSx1bml0OmRbM119Om51bGw7Zj1kJiZkLnVuaXQ7InB4Ij09PWY/Yj1kLnZhbHVlOiJjbSI9PT1mP2I9ZC52YWx1ZS8yLjU0Kjk2OiJtbSI9PT1mP2I9ZC52YWx1ZS8yNS40Kjk2OiJpbiI9PT1mP2I9OTYqZC52YWx1ZToicHQiPT09Zj9iPWQudmFsdWUvLjc1OiJwYyI9PT1mJiYoYj0xNipkLnZhbHVlKTtyZXR1cm4gYn12YXIgaz1vZGYuTmFtZXNwYWNlcy5zdHlsZW5zO3RoaXMucGFyc2VMZW5ndGg9Zzt0aGlzLnBhcnNlUG9zaXRpdmVMZW5ndGhPclBlcmNlbnQ9ZnVuY3Rpb24oZCxiLGYpe3ZhciBuO2QmJihuPXBhcnNlRmxvYXQoZC5zdWJzdHIoMCwKZC5pbmRleE9mKCIlIikpKSxpc05hTihuKSYmKG49dm9pZCAwKSk7dmFyIGs7dm9pZCAwIT09bj8oZiYmKGs9Zi52YWx1ZShiKSksbj12b2lkIDA9PT1rP3ZvaWQgMDprLzEwMCpuKTpuPWcoZCk7cmV0dXJuIG59O3RoaXMuZ2V0UHJvcGVydGllc0VsZW1lbnQ9ZnVuY3Rpb24oZCxiLGYpe2ZvcihiPWY/Zi5uZXh0RWxlbWVudFNpYmxpbmc6Yi5maXJzdEVsZW1lbnRDaGlsZDtudWxsIT09YiYmKGIubG9jYWxOYW1lIT09ZHx8Yi5uYW1lc3BhY2VVUkkhPT1rKTspYj1iLm5leHRFbGVtZW50U2libGluZztyZXR1cm4gYn07dGhpcy5wYXJzZUF0dHJpYnV0ZUxpc3Q9ZnVuY3Rpb24oZCl7ZCYmKGQ9ZC5yZXBsYWNlKC9eXHMqKC4qPylccyokL2csIiQxIikpO3JldHVybiBkJiYwPGQubGVuZ3RoP2Quc3BsaXQoL1xzKy8pOltdfX07Cm9kZi5TdHlsZTJDU1M9ZnVuY3Rpb24oKXtmdW5jdGlvbiBnKGEsYyxiKXt2YXIgZD1bXTtiPWIuZGVyaXZlZFN0eWxlczt2YXIgZTt2YXIgaD16W2FdLG07dm9pZCAwPT09aD9jPW51bGw6KG09Yz8iWyIraCsnfHN0eWxlLW5hbWU9IicrYysnIl0nOiIiLCJwcmVzZW50YXRpb24iPT09aCYmKGg9ImRyYXciLG09Yz8nW3ByZXNlbnRhdGlvbnxzdHlsZS1uYW1lPSInK2MrJyJdJzoiIiksYz1oKyJ8Iit3W2FdLmpvaW4obSsiLCIraCsifCIpK20pO251bGwhPT1jJiZkLnB1c2goYyk7Zm9yKGUgaW4gYiliLmhhc093blByb3BlcnR5KGUpJiYoYz1nKGEsZSxiW2VdKSxkPWQuY29uY2F0KGMpKTtyZXR1cm4gZH1mdW5jdGlvbiBrKGEpe3ZhciBjPSIiLGI9IiIsYz1udWxsO2lmKCJkZWZhdWx0LXN0eWxlIj09PWEubG9jYWxOYW1lKXJldHVybiBudWxsO2M9YS5nZXRBdHRyaWJ1dGVOUyhsLCJwYXJlbnQtc3R5bGUtbmFtZSIpO2I9YS5nZXRBdHRyaWJ1dGVOUyhsLCJmYW1pbHkiKTtyZXR1cm4gYz0KUy5nZXRPREZFbGVtZW50c1dpdGhYUGF0aChQLGM/Ii8vc3R5bGU6KltAc3R5bGU6bmFtZT0nIitjKyInXVtAc3R5bGU6ZmFtaWx5PSciK2IrIiddIjoiLy9zdHlsZTpkZWZhdWx0LXN0eWxlW0BzdHlsZTpmYW1pbHk9JyIrYisiJ10iLG9kZi5OYW1lc3BhY2VzLmxvb2t1cE5hbWVzcGFjZVVSSSlbMF19ZnVuY3Rpb24gZChhLGMpe3ZhciBiPSIiLGQsZSxoO2ZvcihkPTA7ZDxjLmxlbmd0aDtkKz0xKWlmKGU9Y1tkXSxoPWEuZ2V0QXR0cmlidXRlTlMoZVswXSxlWzFdKSl7aD1oLnRyaW0oKTtpZihELmhhc093blByb3BlcnR5KGVbMV0pKXt2YXIgbT1oLGY9bS5pbmRleE9mKCIgIiksbj12b2lkIDA7aD12b2lkIDA7LTEhPT1mPyhuPW0uc3Vic3RyaW5nKDAsZiksaD1tLnN1YnN0cmluZyhmKSk6KG49bSxoPSIiKTsobj1KLnBhcnNlTGVuZ3RoKG4pKSYmInB0Ij09PW4udW5pdCYmLjc1Pm4udmFsdWUmJihtPSIwLjc1cHQiK2gpO2g9bX1lbHNlIGlmKFYuaGFzT3duUHJvcGVydHkoZVsxXSkpe3ZhciBtPQphLGY9ZVswXSxuPWVbMV0sZz1KLnBhcnNlTGVuZ3RoKGgpLHI9dm9pZCAwLHA9dm9pZCAwLHE9dm9pZCAwLE89dm9pZCAwLHE9dm9pZCAwO2lmKGcmJiIlIj09PWcudW5pdCl7cj1nLnZhbHVlLzEwMDtwPWsobS5wYXJlbnROb2RlKTtmb3IoTz0iMCI7cDspe2lmKHE9eS5nZXREaXJlY3RDaGlsZChwLGwsInBhcmFncmFwaC1wcm9wZXJ0aWVzIikpaWYocT1KLnBhcnNlTGVuZ3RoKHEuZ2V0QXR0cmlidXRlTlMoZixuKSkpe2lmKCIlIiE9PXEudW5pdCl7Tz1xLnZhbHVlKnIrcS51bml0O2JyZWFrfXIqPXEudmFsdWUvMTAwfXA9ayhwKX1oPU99fWVbMl0mJihiKz1lWzJdKyI6IitoKyI7Iil9cmV0dXJuIGJ9ZnVuY3Rpb24gYihhLGMsYixkKXtyZXR1cm4gYytjK2IrYitkK2R9ZnVuY3Rpb24gZihhLGMpe3ZhciBiPVthXSxkPWMuZGVyaXZlZFN0eWxlcztPYmplY3Qua2V5cyhkKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2E9ZihhLGRbYV0pO2I9Yi5jb25jYXQoYSl9KTtyZXR1cm4gYn1mdW5jdGlvbiBuKGEsCmMsYixkKXtmdW5jdGlvbiBlKGMsYil7dmFyIGQ9W10saDtjLmZvckVhY2goZnVuY3Rpb24oYSl7bS5mb3JFYWNoKGZ1bmN0aW9uKGMpe2QucHVzaCgnZHJhd3xwYWdlW3dlYm9kZmhlbHBlcnxwYWdlLXN0eWxlLW5hbWU9IicrYysnIl0gZHJhd3xmcmFtZVtwcmVzZW50YXRpb258Y2xhc3M9IicrYSsnIl0nKX0pfSk7MDxkLmxlbmd0aCYmKGg9ZC5qb2luKCIsIikrInt2aXNpYmlsaXR5OiIrYisiO30iLGEuaW5zZXJ0UnVsZShoLGEuY3NzUnVsZXMubGVuZ3RoKSl9dmFyIG09ZihjLGQpLGw9W10sbj1bXTtbInBhZ2UtbnVtYmVyIiwiZGF0ZS10aW1lIiwiaGVhZGVyIiwiZm9vdGVyIl0uZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYztjPWIuZ2V0QXR0cmlidXRlTlMoaCwiZGlzcGxheS0iK2EpOyJ0cnVlIj09PWM/bC5wdXNoKGEpOiJmYWxzZSI9PT1jJiZuLnB1c2goYSl9KTtlKGwsInZpc2libGUiKTtlKG4sImhpZGRlbiIpfWZ1bmN0aW9uIHAoYSxmLEQsVil7dmFyIHosdztpZigicGFnZSI9PT0KZil7dmFyIEI9Vi5lbGVtZW50LFA9IiIsTSxRO1E9TT0iIjtEPXkuZ2V0RGlyZWN0Q2hpbGQoQixsLCJwYWdlLWxheW91dC1wcm9wZXJ0aWVzIik7dmFyIEY7aWYoRClpZihGPUIuZ2V0QXR0cmlidXRlTlMobCwibmFtZSIpLFArPWQoRCxOKSwoTT15LmdldERpcmVjdENoaWxkKEQsbCwiYmFja2dyb3VuZC1pbWFnZSIpKSYmKFE9TS5nZXRBdHRyaWJ1dGVOUyhtLCJocmVmIikpJiYoUD1QKygiYmFja2dyb3VuZC1pbWFnZTogdXJsKCdvZGZraXQ6IitRKyInKTsiKStkKE0sdSkpLCJwcmVzZW50YXRpb24iPT09Uilmb3IoQj0oQj15LmdldERpcmVjdENoaWxkKEIucGFyZW50Tm9kZS5wYXJlbnROb2RlLGUsIm1hc3Rlci1zdHlsZXMiKSkmJkIuZmlyc3RFbGVtZW50Q2hpbGQ7QjspQi5uYW1lc3BhY2VVUkk9PT1sJiYibWFzdGVyLXBhZ2UiPT09Qi5sb2NhbE5hbWUmJkIuZ2V0QXR0cmlidXRlTlMobCwicGFnZS1sYXlvdXQtbmFtZSIpPT09RiYmKFE9Qi5nZXRBdHRyaWJ1dGVOUyhsLCJuYW1lIiksCk09J2RyYXd8cGFnZVtkcmF3fG1hc3Rlci1wYWdlLW5hbWU9IicrUSsnIl0geycrUCsifSIsUT0nb2ZmaWNlfGJvZHksIGRyYXd8cGFnZVtkcmF3fG1hc3Rlci1wYWdlLW5hbWU9IicrUSsnIl0geycrZChELE8pKyIgfSIsYS5pbnNlcnRSdWxlKE0sYS5jc3NSdWxlcy5sZW5ndGgpLGEuaW5zZXJ0UnVsZShRLGEuY3NzUnVsZXMubGVuZ3RoKSksQj1CLm5leHRFbGVtZW50U2libGluZztlbHNlInRleHQiPT09UiYmKE09Im9mZmljZXx0ZXh0IHsiK1ArIn0iLFE9Im9mZmljZXxib2R5IHt3aWR0aDogIitELmdldEF0dHJpYnV0ZU5TKHEsInBhZ2Utd2lkdGgiKSsiO30iLGEuaW5zZXJ0UnVsZShNLGEuY3NzUnVsZXMubGVuZ3RoKSxhLmluc2VydFJ1bGUoUSxhLmNzc1J1bGVzLmxlbmd0aCkpfWVsc2V7UD1nKGYsRCxWKS5qb2luKCIsIik7Rj0iIjtpZihCPXkuZ2V0RGlyZWN0Q2hpbGQoVi5lbGVtZW50LGwsInRleHQtcHJvcGVydGllcyIpKXt2YXIgUz1CLGNhPXc9IiI7TT0iIjtRPTE7Qj0KIiIrZChTLHYpO3o9Uy5nZXRBdHRyaWJ1dGVOUyhsLCJ0ZXh0LXVuZGVybGluZS1zdHlsZSIpOyJzb2xpZCI9PT16JiYodys9IiB1bmRlcmxpbmUiKTt6PVMuZ2V0QXR0cmlidXRlTlMobCwidGV4dC1saW5lLXRocm91Z2gtc3R5bGUiKTsic29saWQiPT09eiYmKHcrPSIgbGluZS10aHJvdWdoIik7dy5sZW5ndGgmJihCPUIrKCJ0ZXh0LWRlY29yYXRpb246Iit3KyI7XG4iKSsoInRleHQtZGVjb3JhdGlvbi1saW5lOiIrdysiO1xuIiksQis9Ii1tb3otdGV4dC1kZWNvcmF0aW9uLWxpbmU6Iit3KyI7XG4iKTt6PVMuZ2V0QXR0cmlidXRlTlMobCwidGV4dC1saW5lLXRocm91Z2gtdHlwZSIpO3N3aXRjaCh6KXtjYXNlICJkb3VibGUiOmNhKz0iIGRvdWJsZSI7YnJlYWs7Y2FzZSAic2luZ2xlIjpjYSs9IiBzaW5nbGUifWNhJiYoQis9InRleHQtZGVjb3JhdGlvbi1zdHlsZToiK2NhKyI7XG4iLEIrPSItbW96LXRleHQtZGVjb3JhdGlvbi1zdHlsZToiK2NhKyI7XG4iKTtpZih3PVMuZ2V0QXR0cmlidXRlTlMobCwKImZvbnQtbmFtZSIpfHxTLmdldEF0dHJpYnV0ZU5TKHEsImZvbnQtZmFtaWx5Iikpej1XW3ddLEIrPSJmb250LWZhbWlseTogIisoenx8dykrIjsiO2lmKHo9Uy5nZXRBdHRyaWJ1dGVOUyhsLCJ0ZXh0LXBvc2l0aW9uIikpdz14LnBhcnNlQXR0cmlidXRlTGlzdCh6KSx6PXdbMF0sdz13WzFdLEIrPSJ2ZXJ0aWNhbC1hbGlnbjogIit6KyJcbjsgIix3JiYoUT1wYXJzZUZsb2F0KHcpLzEwMCk7aWYoUy5oYXNBdHRyaWJ1dGVOUyhxLCJmb250LXNpemUiKXx8MSE9PVEpe2ZvcihTPVMucGFyZW50Tm9kZTtTOyl7aWYoej0oej15LmdldERpcmVjdENoaWxkKFMsbCwidGV4dC1wcm9wZXJ0aWVzIikpP0oucGFyc2VGb0ZvbnRTaXplKHouZ2V0QXR0cmlidXRlTlMocSwiZm9udC1zaXplIikpOm51bGwpe2lmKCIlIiE9PXoudW5pdCl7TT0iZm9udC1zaXplOiAiK3oudmFsdWUqUSt6LnVuaXQrIjsiO2JyZWFrfVEqPXoudmFsdWUvMTAwfVM9ayhTKX1NfHwoTT0iZm9udC1zaXplOiAiK3BhcnNlRmxvYXQoYWEpKgpRK2ZhLmdldFVuaXRzKGFhKSsiOyIpfUIrPU07Ris9Qn1pZihCPXkuZ2V0RGlyZWN0Q2hpbGQoVi5lbGVtZW50LGwsInBhcmFncmFwaC1wcm9wZXJ0aWVzIikpTT1CLEI9IiIrZChNLHQpLChRPXkuZ2V0RGlyZWN0Q2hpbGQoTSxsLCJiYWNrZ3JvdW5kLWltYWdlIikpJiYoUz1RLmdldEF0dHJpYnV0ZU5TKG0sImhyZWYiKSkmJihCPUIrKCJiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ29kZmtpdDoiK1MrIicpOyIpK2QoUSx1KSksKE09TS5nZXRBdHRyaWJ1dGVOUyhxLCJsaW5lLWhlaWdodCIpKSYmIm5vcm1hbCIhPT1NJiYoTT1KLnBhcnNlRm9MaW5lSGVpZ2h0KE0pLEI9IiUiIT09TS51bml0P0IrKCJsaW5lLWhlaWdodDogIitNLnZhbHVlK00udW5pdCsiOyIpOkIrKCJsaW5lLWhlaWdodDogIitNLnZhbHVlLzEwMCsiOyIpKSxGKz1CO2lmKEI9eS5nZXREaXJlY3RDaGlsZChWLmVsZW1lbnQsbCwiZ3JhcGhpYy1wcm9wZXJ0aWVzIikpUz1CLEI9IiIrZChTLEEpLE09Uy5nZXRBdHRyaWJ1dGVOUyhyLAoib3BhY2l0eSIpLFE9Uy5nZXRBdHRyaWJ1dGVOUyhyLCJmaWxsIiksUz1TLmdldEF0dHJpYnV0ZU5TKHIsImZpbGwtY29sb3IiKSwic29saWQiPT09UXx8ImhhdGNoIj09PVE/UyYmIm5vbmUiIT09Uz8oTT1pc05hTihwYXJzZUZsb2F0KE0pKT8xOnBhcnNlRmxvYXQoTSkvMTAwLFE9Uy5yZXBsYWNlKC9eIz8oW2EtZlxkXSkoW2EtZlxkXSkoW2EtZlxkXSkkL2ksYiksKFM9KFE9L14jPyhbYS1mXGRdezJ9KShbYS1mXGRdezJ9KShbYS1mXGRdezJ9KSQvaS5leGVjKFEpKT97cjpwYXJzZUludChRWzFdLDE2KSxnOnBhcnNlSW50KFFbMl0sMTYpLGI6cGFyc2VJbnQoUVszXSwxNil9Om51bGwpJiYoQis9ImJhY2tncm91bmQtY29sb3I6IHJnYmEoIitTLnIrIiwiK1MuZysiLCIrUy5iKyIsIitNKyIpOyIpKTpCKz0iYmFja2dyb3VuZDogbm9uZTsiOiJub25lIj09PVEmJihCKz0iYmFja2dyb3VuZDogbm9uZTsiKSxGKz1CO2lmKEI9eS5nZXREaXJlY3RDaGlsZChWLmVsZW1lbnQsbCwiZHJhd2luZy1wYWdlLXByb3BlcnRpZXMiKSlNPQpCLFE9IiIrZChNLEEpLCJ0cnVlIj09PU0uZ2V0QXR0cmlidXRlTlMoaCwiYmFja2dyb3VuZC12aXNpYmxlIikmJihRKz0iYmFja2dyb3VuZDogbm9uZTsiKSxGKz1RLG4oYSxELEIsVik7aWYoQj15LmdldERpcmVjdENoaWxkKFYuZWxlbWVudCxsLCJ0YWJsZS1jZWxsLXByb3BlcnRpZXMiKSlEPUYsRj0iIitkKEIsSSksRj1EK0Y7aWYoQj15LmdldERpcmVjdENoaWxkKFYuZWxlbWVudCxsLCJ0YWJsZS1yb3ctcHJvcGVydGllcyIpKUQ9RixGPSIiK2QoQixMKSxGPUQrRjtpZihCPXkuZ2V0RGlyZWN0Q2hpbGQoVi5lbGVtZW50LGwsInRhYmxlLWNvbHVtbi1wcm9wZXJ0aWVzIikpRD1GLEY9IiIrZChCLEspLEY9RCtGO2lmKEI9eS5nZXREaXJlY3RDaGlsZChWLmVsZW1lbnQsbCwidGFibGUtcHJvcGVydGllcyIpKUQ9RixGPSIiK2QoQixFKSxCPUIuZ2V0QXR0cmlidXRlTlMoYywiYm9yZGVyLW1vZGVsIiksImNvbGxhcHNpbmciPT09Qj9GKz0iYm9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlOyI6CiJzZXBhcmF0aW5nIj09PUImJihGKz0iYm9yZGVyLWNvbGxhcHNlOnNlcGFyYXRlOyIpLEY9RCtGOzAhPT1GLmxlbmd0aCYmYS5pbnNlcnRSdWxlKFArInsiK0YrIn0iLGEuY3NzUnVsZXMubGVuZ3RoKX1mb3IodmFyIFggaW4gVi5kZXJpdmVkU3R5bGVzKVYuZGVyaXZlZFN0eWxlcy5oYXNPd25Qcm9wZXJ0eShYKSYmcChhLGYsWCxWLmRlcml2ZWRTdHlsZXNbWF0pfXZhciByPW9kZi5OYW1lc3BhY2VzLmRyYXducyxxPW9kZi5OYW1lc3BhY2VzLmZvbnMsZT1vZGYuTmFtZXNwYWNlcy5vZmZpY2VucyxsPW9kZi5OYW1lc3BhY2VzLnN0eWxlbnMsYT1vZGYuTmFtZXNwYWNlcy5zdmducyxjPW9kZi5OYW1lc3BhY2VzLnRhYmxlbnMsbT1vZGYuTmFtZXNwYWNlcy54bGlua25zLGg9b2RmLk5hbWVzcGFjZXMucHJlc2VudGF0aW9ubnMseT1jb3JlLkRvbVV0aWxzLHg9bmV3IG9kZi5TdHlsZVBhcnNlVXRpbHMsej17Z3JhcGhpYzoiZHJhdyIsImRyYXdpbmctcGFnZSI6ImRyYXciLHBhcmFncmFwaDoidGV4dCIsCnByZXNlbnRhdGlvbjoicHJlc2VudGF0aW9uIixydWJ5OiJ0ZXh0IixzZWN0aW9uOiJ0ZXh0Iix0YWJsZToidGFibGUiLCJ0YWJsZS1jZWxsIjoidGFibGUiLCJ0YWJsZS1jb2x1bW4iOiJ0YWJsZSIsInRhYmxlLXJvdyI6InRhYmxlIix0ZXh0OiJ0ZXh0IixsaXN0OiJ0ZXh0IixwYWdlOiJvZmZpY2UifSx3PXtncmFwaGljOiJjaXJjbGUgY29ubmVjdGVkIGNvbnRyb2wgY3VzdG9tLXNoYXBlIGVsbGlwc2UgZnJhbWUgZyBsaW5lIG1lYXN1cmUgcGFnZSBwYWdlLXRodW1ibmFpbCBwYXRoIHBvbHlnb24gcG9seWxpbmUgcmVjdCByZWd1bGFyLXBvbHlnb24iLnNwbGl0KCIgIikscGFyYWdyYXBoOiJhbHBoYWJldGljYWwtaW5kZXgtZW50cnktdGVtcGxhdGUgaCBpbGx1c3RyYXRpb24taW5kZXgtZW50cnktdGVtcGxhdGUgaW5kZXgtc291cmNlLXN0eWxlIG9iamVjdC1pbmRleC1lbnRyeS10ZW1wbGF0ZSBwIHRhYmxlLWluZGV4LWVudHJ5LXRlbXBsYXRlIHRhYmxlLW9mLWNvbnRlbnQtZW50cnktdGVtcGxhdGUgdXNlci1pbmRleC1lbnRyeS10ZW1wbGF0ZSIuc3BsaXQoIiAiKSwKcHJlc2VudGF0aW9uOiJjYXB0aW9uIGNpcmNsZSBjb25uZWN0b3IgY29udHJvbCBjdXN0b20tc2hhcGUgZWxsaXBzZSBmcmFtZSBnIGxpbmUgbWVhc3VyZSBwYWdlLXRodW1ibmFpbCBwYXRoIHBvbHlnb24gcG9seWxpbmUgcmVjdCByZWd1bGFyLXBvbHlnb24iLnNwbGl0KCIgIiksImRyYXdpbmctcGFnZSI6ImNhcHRpb24gY2lyY2xlIGNvbm5lY3RvciBjb250cm9sIHBhZ2UgY3VzdG9tLXNoYXBlIGVsbGlwc2UgZnJhbWUgZyBsaW5lIG1lYXN1cmUgcGFnZS10aHVtYm5haWwgcGF0aCBwb2x5Z29uIHBvbHlsaW5lIHJlY3QgcmVndWxhci1wb2x5Z29uIi5zcGxpdCgiICIpLHJ1Ynk6WyJydWJ5IiwicnVieS10ZXh0Il0sc2VjdGlvbjoiYWxwaGFiZXRpY2FsLWluZGV4IGJpYmxpb2dyYXBoeSBpbGx1c3RyYXRpb24taW5kZXggaW5kZXgtdGl0bGUgb2JqZWN0LWluZGV4IHNlY3Rpb24gdGFibGUtb2YtY29udGVudCB0YWJsZS1pbmRleCB1c2VyLWluZGV4Ii5zcGxpdCgiICIpLHRhYmxlOlsiYmFja2dyb3VuZCIsCiJ0YWJsZSJdLCJ0YWJsZS1jZWxsIjoiYm9keSBjb3ZlcmVkLXRhYmxlLWNlbGwgZXZlbi1jb2x1bW5zIGV2ZW4tcm93cyBmaXJzdC1jb2x1bW4gZmlyc3Qtcm93IGxhc3QtY29sdW1uIGxhc3Qtcm93IG9kZC1jb2x1bW5zIG9kZC1yb3dzIHRhYmxlLWNlbGwiLnNwbGl0KCIgIiksInRhYmxlLWNvbHVtbiI6WyJ0YWJsZS1jb2x1bW4iXSwidGFibGUtcm93IjpbInRhYmxlLXJvdyJdLHRleHQ6ImEgaW5kZXgtZW50cnktY2hhcHRlciBpbmRleC1lbnRyeS1saW5rLWVuZCBpbmRleC1lbnRyeS1saW5rLXN0YXJ0IGluZGV4LWVudHJ5LXBhZ2UtbnVtYmVyIGluZGV4LWVudHJ5LXNwYW4gaW5kZXgtZW50cnktdGFiLXN0b3AgaW5kZXgtZW50cnktdGV4dCBpbmRleC10aXRsZS10ZW1wbGF0ZSBsaW5lbnVtYmVyaW5nLWNvbmZpZ3VyYXRpb24gbGlzdC1sZXZlbC1zdHlsZS1udW1iZXIgbGlzdC1sZXZlbC1zdHlsZS1idWxsZXQgb3V0bGluZS1sZXZlbC1zdHlsZSBzcGFuIi5zcGxpdCgiICIpLApsaXN0OlsibGlzdC1pdGVtIl19LHY9W1txLCJjb2xvciIsImNvbG9yIl0sW3EsImJhY2tncm91bmQtY29sb3IiLCJiYWNrZ3JvdW5kLWNvbG9yIl0sW3EsImZvbnQtd2VpZ2h0IiwiZm9udC13ZWlnaHQiXSxbcSwiZm9udC1zdHlsZSIsImZvbnQtc3R5bGUiXV0sdT1bW2wsInJlcGVhdCIsImJhY2tncm91bmQtcmVwZWF0Il1dLHQ9W1txLCJiYWNrZ3JvdW5kLWNvbG9yIiwiYmFja2dyb3VuZC1jb2xvciJdLFtxLCJ0ZXh0LWFsaWduIiwidGV4dC1hbGlnbiJdLFtxLCJ0ZXh0LWluZGVudCIsInRleHQtaW5kZW50Il0sW3EsInBhZGRpbmciLCJwYWRkaW5nIl0sW3EsInBhZGRpbmctbGVmdCIsInBhZGRpbmctbGVmdCJdLFtxLCJwYWRkaW5nLXJpZ2h0IiwicGFkZGluZy1yaWdodCJdLFtxLCJwYWRkaW5nLXRvcCIsInBhZGRpbmctdG9wIl0sW3EsInBhZGRpbmctYm90dG9tIiwicGFkZGluZy1ib3R0b20iXSxbcSwiYm9yZGVyLWxlZnQiLCJib3JkZXItbGVmdCJdLFtxLCJib3JkZXItcmlnaHQiLAoiYm9yZGVyLXJpZ2h0Il0sW3EsImJvcmRlci10b3AiLCJib3JkZXItdG9wIl0sW3EsImJvcmRlci1ib3R0b20iLCJib3JkZXItYm90dG9tIl0sW3EsIm1hcmdpbiIsIm1hcmdpbiJdLFtxLCJtYXJnaW4tbGVmdCIsIm1hcmdpbi1sZWZ0Il0sW3EsIm1hcmdpbi1yaWdodCIsIm1hcmdpbi1yaWdodCJdLFtxLCJtYXJnaW4tdG9wIiwibWFyZ2luLXRvcCJdLFtxLCJtYXJnaW4tYm90dG9tIiwibWFyZ2luLWJvdHRvbSJdLFtxLCJib3JkZXIiLCJib3JkZXIiXV0sQT1bW3EsImJhY2tncm91bmQtY29sb3IiLCJiYWNrZ3JvdW5kLWNvbG9yIl0sW3EsIm1pbi1oZWlnaHQiLCJtaW4taGVpZ2h0Il0sW3IsInN0cm9rZSIsImJvcmRlciJdLFthLCJzdHJva2UtY29sb3IiLCJib3JkZXItY29sb3IiXSxbYSwic3Ryb2tlLXdpZHRoIiwiYm9yZGVyLXdpZHRoIl0sW3EsImJvcmRlciIsImJvcmRlciJdLFtxLCJib3JkZXItbGVmdCIsImJvcmRlci1sZWZ0Il0sW3EsImJvcmRlci1yaWdodCIsImJvcmRlci1yaWdodCJdLApbcSwiYm9yZGVyLXRvcCIsImJvcmRlci10b3AiXSxbcSwiYm9yZGVyLWJvdHRvbSIsImJvcmRlci1ib3R0b20iXV0sST1bW3EsImJhY2tncm91bmQtY29sb3IiLCJiYWNrZ3JvdW5kLWNvbG9yIl0sW3EsImJvcmRlci1sZWZ0IiwiYm9yZGVyLWxlZnQiXSxbcSwiYm9yZGVyLXJpZ2h0IiwiYm9yZGVyLXJpZ2h0Il0sW3EsImJvcmRlci10b3AiLCJib3JkZXItdG9wIl0sW3EsImJvcmRlci1ib3R0b20iLCJib3JkZXItYm90dG9tIl0sW3EsImJvcmRlciIsImJvcmRlciJdXSxLPVtbbCwiY29sdW1uLXdpZHRoIiwid2lkdGgiXV0sTD1bW2wsInJvdy1oZWlnaHQiLCJoZWlnaHQiXSxbcSwia2VlcC10b2dldGhlciIsbnVsbF1dLEU9W1tsLCJ3aWR0aCIsIndpZHRoIl0sW3EsIm1hcmdpbi1sZWZ0IiwibWFyZ2luLWxlZnQiXSxbcSwibWFyZ2luLXJpZ2h0IiwibWFyZ2luLXJpZ2h0Il0sW3EsIm1hcmdpbi10b3AiLCJtYXJnaW4tdG9wIl0sW3EsIm1hcmdpbi1ib3R0b20iLCJtYXJnaW4tYm90dG9tIl1dLApOPVtbcSwiYmFja2dyb3VuZC1jb2xvciIsImJhY2tncm91bmQtY29sb3IiXSxbcSwicGFkZGluZyIsInBhZGRpbmciXSxbcSwicGFkZGluZy1sZWZ0IiwicGFkZGluZy1sZWZ0Il0sW3EsInBhZGRpbmctcmlnaHQiLCJwYWRkaW5nLXJpZ2h0Il0sW3EsInBhZGRpbmctdG9wIiwicGFkZGluZy10b3AiXSxbcSwicGFkZGluZy1ib3R0b20iLCJwYWRkaW5nLWJvdHRvbSJdLFtxLCJib3JkZXIiLCJib3JkZXIiXSxbcSwiYm9yZGVyLWxlZnQiLCJib3JkZXItbGVmdCJdLFtxLCJib3JkZXItcmlnaHQiLCJib3JkZXItcmlnaHQiXSxbcSwiYm9yZGVyLXRvcCIsImJvcmRlci10b3AiXSxbcSwiYm9yZGVyLWJvdHRvbSIsImJvcmRlci1ib3R0b20iXSxbcSwibWFyZ2luIiwibWFyZ2luIl0sW3EsIm1hcmdpbi1sZWZ0IiwibWFyZ2luLWxlZnQiXSxbcSwibWFyZ2luLXJpZ2h0IiwibWFyZ2luLXJpZ2h0Il0sW3EsIm1hcmdpbi10b3AiLCJtYXJnaW4tdG9wIl0sW3EsIm1hcmdpbi1ib3R0b20iLCJtYXJnaW4tYm90dG9tIl1dLApPPVtbcSwicGFnZS13aWR0aCIsIndpZHRoIl0sW3EsInBhZ2UtaGVpZ2h0IiwiaGVpZ2h0Il1dLEQ9e2JvcmRlcjohMCwiYm9yZGVyLWxlZnQiOiEwLCJib3JkZXItcmlnaHQiOiEwLCJib3JkZXItdG9wIjohMCwiYm9yZGVyLWJvdHRvbSI6ITAsInN0cm9rZS13aWR0aCI6ITB9LFY9e21hcmdpbjohMCwibWFyZ2luLWxlZnQiOiEwLCJtYXJnaW4tcmlnaHQiOiEwLCJtYXJnaW4tdG9wIjohMCwibWFyZ2luLWJvdHRvbSI6ITB9LFc9e30sSj1vZGYuT2RmVXRpbHMsUixQLGFhLFM9eG1sZG9tLlhQYXRoLGZhPW5ldyBjb3JlLkNTU1VuaXRzO3RoaXMuc3R5bGUyY3NzPWZ1bmN0aW9uKGEsYyxiLGQsZSl7ZnVuY3Rpb24gaChhLGMpe209IkBuYW1lc3BhY2UgIithKyIgdXJsKCIrYysiKTsiO3RyeXtiLmluc2VydFJ1bGUobSxiLmNzc1J1bGVzLmxlbmd0aCl9Y2F0Y2goZCl7fX12YXIgbSxmLGw7Zm9yKFA9YztiLmNzc1J1bGVzLmxlbmd0aDspYi5kZWxldGVSdWxlKGIuY3NzUnVsZXMubGVuZ3RoLQoxKTtvZGYuTmFtZXNwYWNlcy5mb3JFYWNoUHJlZml4KGgpO2goIndlYm9kZmhlbHBlciIsInVybjp3ZWJvZGY6bmFtZXM6aGVscGVyIik7Vz1kO1I9YTthYT1ydW50aW1lLmdldFdpbmRvdygpLmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCJmb250LXNpemUiKXx8IjEycHQiO2ZvcihsIGluIHopaWYoei5oYXNPd25Qcm9wZXJ0eShsKSlmb3IoZiBpbiBhPWVbbF0sYSlhLmhhc093blByb3BlcnR5KGYpJiZwKGIsbCxmLGFbZl0pfX07CihmdW5jdGlvbigpe2Z1bmN0aW9uIGcoayxkKXt2YXIgYj10aGlzO3RoaXMuZ2V0RGlzdGFuY2U9ZnVuY3Rpb24oZCl7dmFyIG49Yi54LWQueDtkPWIueS1kLnk7cmV0dXJuIE1hdGguc3FydChuKm4rZCpkKX07dGhpcy5nZXRDZW50ZXI9ZnVuY3Rpb24oZCl7cmV0dXJuIG5ldyBnKChiLngrZC54KS8yLChiLnkrZC55KS8yKX07Yi54PWs7Yi55PWR9Z3VpLlpvb21IZWxwZXI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBrKGEsYixkLGUpe2E9ZT8idHJhbnNsYXRlM2QoIithKyJweCwgIitiKyJweCwgMCkgc2NhbGUzZCgiK2QrIiwgIitkKyIsIDEpIjoidHJhbnNsYXRlKCIrYSsicHgsICIrYisicHgpIHNjYWxlKCIrZCsiKSI7Yy5zdHlsZS5XZWJraXRUcmFuc2Zvcm09YTtjLnN0eWxlLk1velRyYW5zZm9ybT1hO2Muc3R5bGUubXNUcmFuc2Zvcm09YTtjLnN0eWxlLk9UcmFuc2Zvcm09YTtjLnN0eWxlLnRyYW5zZm9ybT1hfWZ1bmN0aW9uIGQoYSl7YT9rKC1tLngsLW0ueSx4LCEwKTooaygwLAowLHgsITApLGsoMCwwLHgsITEpKX1mdW5jdGlvbiBiKGEpe2lmKHcmJkkpe3ZhciBjPXcuc3R5bGUub3ZlcmZsb3csYj13LmNsYXNzTGlzdC5jb250YWlucygid2Vib2RmLWN1c3RvbVNjcm9sbGJhcnMiKTthJiZifHwhYSYmIWJ8fChhPyh3LmNsYXNzTGlzdC5hZGQoIndlYm9kZi1jdXN0b21TY3JvbGxiYXJzIiksdy5zdHlsZS5vdmVyZmxvdz0iaGlkZGVuIixydW50aW1lLnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpe3cuc3R5bGUub3ZlcmZsb3c9Y30pKTp3LmNsYXNzTGlzdC5yZW1vdmUoIndlYm9kZi1jdXN0b21TY3JvbGxiYXJzIikpfX1mdW5jdGlvbiBmKCl7aygtbS54LC1tLnkseCwhMCk7dy5zY3JvbGxMZWZ0PTA7dy5zY3JvbGxUb3A9MDtLPXYuc3R5bGUub3ZlcmZsb3c7di5zdHlsZS5vdmVyZmxvdz0idmlzaWJsZSI7YighMSl9ZnVuY3Rpb24gbigpe2soMCwwLHgsITApO3cuc2Nyb2xsTGVmdD1tLng7dy5zY3JvbGxUb3A9bS55O3Yuc3R5bGUub3ZlcmZsb3c9Ckt8fCIiO2IoITApfWZ1bmN0aW9uIHAoYSl7cmV0dXJuIG5ldyBnKGEucGFnZVgtYy5vZmZzZXRMZWZ0LGEucGFnZVktYy5vZmZzZXRUb3ApfWZ1bmN0aW9uIHIoYSl7aWYoaCl7bS54LT1hLngtaC54O20ueS09YS55LWgueTt2YXIgYj1tO209bmV3IGcoTWF0aC5taW4oTWF0aC5tYXgoYi54LGMub2Zmc2V0TGVmdCksKGMub2Zmc2V0TGVmdCtjLm9mZnNldFdpZHRoKSp4LXcuY2xpZW50V2lkdGgpLE1hdGgubWluKE1hdGgubWF4KGIueSxjLm9mZnNldFRvcCksKGMub2Zmc2V0VG9wK2Mub2Zmc2V0SGVpZ2h0KSp4LXcuY2xpZW50SGVpZ2h0KSl9aD1hfWZ1bmN0aW9uIHEoYSl7dmFyIGM9YS50b3VjaGVzLmxlbmd0aCxiPTA8Yz9wKGEudG91Y2hlc1swXSk6bnVsbDthPTE8Yz9wKGEudG91Y2hlc1sxXSk6bnVsbDtiJiZhPyh5PWIuZ2V0RGlzdGFuY2UoYSksej14LGg9Yi5nZXRDZW50ZXIoYSksZigpLEE9dC5QSU5DSCk6YiYmKGg9YixBPXQuU0NST0xMKX1mdW5jdGlvbiBlKGEpe3ZhciBiPQphLnRvdWNoZXMubGVuZ3RoLGU9MDxiP3AoYS50b3VjaGVzWzBdKTpudWxsLGI9MTxiP3AoYS50b3VjaGVzWzFdKTpudWxsO2lmKGUmJmIpaWYoYS5wcmV2ZW50RGVmYXVsdCgpLEE9PT10LlNDUk9MTClBPXQuUElOQ0gsZigpLHk9ZS5nZXREaXN0YW5jZShiKTtlbHNle2E9ZS5nZXRDZW50ZXIoYik7ZT1lLmdldERpc3RhbmNlKGIpL3k7cihhKTt2YXIgYj14LGg9TWF0aC5taW4oNCxjLm9mZnNldFBhcmVudC5jbGllbnRXaWR0aC9jLm9mZnNldFdpZHRoKTt4PXoqZTt4PU1hdGgubWluKE1hdGgubWF4KHgsaCksNCk7ZT14L2I7bS54Kz0oZS0xKSooYS54K20ueCk7bS55Kz0oZS0xKSooYS55K20ueSk7ZCghMCl9ZWxzZSBlJiYoQT09PXQuUElOQ0g/KEE9dC5TQ1JPTEwsbigpKTpyKGUpKX1mdW5jdGlvbiBsKCl7QT09PXQuUElOQ0gmJih1LmVtaXQoZ3VpLlpvb21IZWxwZXIuc2lnbmFsWm9vbUNoYW5nZWQseCksbigpLGQoITEpKTtBPXQuTk9ORX1mdW5jdGlvbiBhKCl7dyYmKHcucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsCnEsITEpLHcucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIixlLCExKSx3LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIixsLCExKSl9dmFyIGMsbSxoLHkseCx6LHcsdix1PW5ldyBjb3JlLkV2ZW50Tm90aWZpZXIoW2d1aS5ab29tSGVscGVyLnNpZ25hbFpvb21DaGFuZ2VkXSksdD17Tk9ORTowLFNDUk9MTDoxLFBJTkNIOjJ9LEE9dC5OT05FLEk9cnVudGltZS5nZXRXaW5kb3coKS5oYXNPd25Qcm9wZXJ0eSgib250b3VjaHN0YXJ0IiksSz0iIjt0aGlzLnN1YnNjcmliZT1mdW5jdGlvbihhLGMpe3Uuc3Vic2NyaWJlKGEsYyl9O3RoaXMudW5zdWJzY3JpYmU9ZnVuY3Rpb24oYSxjKXt1LnVuc3Vic2NyaWJlKGEsYyl9O3RoaXMuZ2V0Wm9vbUxldmVsPWZ1bmN0aW9uKCl7cmV0dXJuIHh9O3RoaXMuc2V0Wm9vbUxldmVsPWZ1bmN0aW9uKGEpe2MmJih4PWEsZCghMSksdS5lbWl0KGd1aS5ab29tSGVscGVyLnNpZ25hbFpvb21DaGFuZ2VkLHgpKX07dGhpcy5kZXN0cm95PQpmdW5jdGlvbihjKXthKCk7YighMSk7YygpfTt0aGlzLnNldFpvb21hYmxlRWxlbWVudD1mdW5jdGlvbihoKXthKCk7Yz1oO3c9Yy5vZmZzZXRQYXJlbnQ7dj1jLnBhcmVudE5vZGU7ZCghMSk7dyYmKHcuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIscSwhMSksdy5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLGUsITEpLHcuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLGwsITEpKTtiKCEwKX07ej14PTE7bT1uZXcgZygwLDApfTtndWkuWm9vbUhlbHBlci5zaWduYWxab29tQ2hhbmdlZD0iem9vbUNoYW5nZWQifSkoKTtvcHMuQ2FudmFzPWZ1bmN0aW9uKCl7fTtvcHMuQ2FudmFzLnByb3RvdHlwZS5nZXRab29tTGV2ZWw9ZnVuY3Rpb24oKXt9O29wcy5DYW52YXMucHJvdG90eXBlLmdldEVsZW1lbnQ9ZnVuY3Rpb24oKXt9O29wcy5DYW52YXMucHJvdG90eXBlLmdldFNpemVyPWZ1bmN0aW9uKCl7fTtvcHMuQ2FudmFzLnByb3RvdHlwZS5nZXRab29tSGVscGVyPWZ1bmN0aW9uKCl7fTsKKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZygpe2Z1bmN0aW9uIGEoZCl7Yj0hMDtydW50aW1lLnNldFRpbWVvdXQoZnVuY3Rpb24oKXt0cnl7ZCgpfWNhdGNoKGUpe3J1bnRpbWUubG9nKFN0cmluZyhlKSsiXG4iK2Uuc3RhY2spfWI9ITE7MDxjLmxlbmd0aCYmYShjLnBvcCgpKX0sMTApfXZhciBjPVtdLGI9ITE7dGhpcy5jbGVhclF1ZXVlPWZ1bmN0aW9uKCl7Yy5sZW5ndGg9MH07dGhpcy5hZGRUb1F1ZXVlPWZ1bmN0aW9uKGQpe2lmKDA9PT1jLmxlbmd0aCYmIWIpcmV0dXJuIGEoZCk7Yy5wdXNoKGQpfX1mdW5jdGlvbiBrKGEpe2Z1bmN0aW9uIGMoKXtmb3IoOzA8Yi5jc3NSdWxlcy5sZW5ndGg7KWIuZGVsZXRlUnVsZSgwKTtiLmluc2VydFJ1bGUoIiNzaGFkb3dDb250ZW50IGRyYXd8cGFnZSB7ZGlzcGxheTpub25lO30iLDApO2IuaW5zZXJ0UnVsZSgib2ZmaWNlfHByZXNlbnRhdGlvbiBkcmF3fHBhZ2Uge2Rpc3BsYXk6bm9uZTt9IiwxKTtiLmluc2VydFJ1bGUoIiNzaGFkb3dDb250ZW50IGRyYXd8cGFnZTpudGgtb2YtdHlwZSgiKwpkKyIpIHtkaXNwbGF5OmJsb2NrO30iLDIpO2IuaW5zZXJ0UnVsZSgib2ZmaWNlfHByZXNlbnRhdGlvbiBkcmF3fHBhZ2U6bnRoLW9mLXR5cGUoIitkKyIpIHtkaXNwbGF5OmJsb2NrO30iLDMpfXZhciBiPWEuc2hlZXQsZD0xO3RoaXMuc2hvd0ZpcnN0UGFnZT1mdW5jdGlvbigpe2Q9MTtjKCl9O3RoaXMuc2hvd05leHRQYWdlPWZ1bmN0aW9uKCl7ZCs9MTtjKCl9O3RoaXMuc2hvd1ByZXZpb3VzUGFnZT1mdW5jdGlvbigpezE8ZCYmKC0tZCxjKCkpfTt0aGlzLnNob3dQYWdlPWZ1bmN0aW9uKGEpezA8YSYmKGQ9YSxjKCkpfTt0aGlzLmNzcz1hO3RoaXMuZGVzdHJveT1mdW5jdGlvbihjKXthLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYSk7YygpfX1mdW5jdGlvbiBkKGEpe2E9YS5zaGVldDtmb3IodmFyIGM9YS5jc3NSdWxlcztjLmxlbmd0aDspYS5kZWxldGVSdWxlKGMubGVuZ3RoLTEpfWZ1bmN0aW9uIGIoYSxjLGIpe3ZhciBkPW5ldyBvZGYuU3R5bGUyQ1NTLGU9bmV3IG9kZi5MaXN0U3R5bGVUb0NzczsKYj1iLnNoZWV0O3ZhciBoPShuZXcgb2RmLlN0eWxlVHJlZShhLnJvb3RFbGVtZW50LnN0eWxlcyxhLnJvb3RFbGVtZW50LmF1dG9tYXRpY1N0eWxlcykpLmdldFN0eWxlVHJlZSgpO2Quc3R5bGUyY3NzKGEuZ2V0RG9jdW1lbnRUeXBlKCksYS5yb290RWxlbWVudCxiLGMuZ2V0Rm9udE1hcCgpLGgpO2UuYXBwbHlMaXN0U3R5bGVzKGIsaCxhLnJvb3RFbGVtZW50LmJvZHkpfWZ1bmN0aW9uIGYoYSxjKXsobmV3IG9kZi5Gb250TG9hZGVyKS5sb2FkRm9udHMoYSxjLnNoZWV0KX1mdW5jdGlvbiBuKGEsYyxiKXt2YXIgZD1udWxsO2E9YS5yb290RWxlbWVudC5ib2R5LmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoTCxiKyItZGVjbCIpO2I9Yy5nZXRBdHRyaWJ1dGVOUyhMLCJ1c2UtIitiKyItbmFtZSIpO3ZhciBlO2lmKGImJjA8YS5sZW5ndGgpZm9yKGM9MDtjPGEubGVuZ3RoO2MrPTEpaWYoZT1hW2NdLGUuZ2V0QXR0cmlidXRlTlMoTCwibmFtZSIpPT09Yil7ZD1lLnRleHRDb250ZW50O2JyZWFrfXJldHVybiBkfQpmdW5jdGlvbiBwKGEsYyxiLGQpe3ZhciBlPWEub3duZXJEb2N1bWVudDtjPU4uZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhhLGMsYik7Zm9yKGE9MDthPGMubGVuZ3RoO2ErPTEpTi5yZW1vdmVBbGxDaGlsZE5vZGVzKGNbYV0pLGQmJihiPWNbYV0sYi5hcHBlbmRDaGlsZChlLmNyZWF0ZVRleHROb2RlKGQpKSl9ZnVuY3Rpb24gcihhLGMsYil7Yy5zZXRBdHRyaWJ1dGVOUygidXJuOndlYm9kZjpuYW1lczpoZWxwZXIiLCJzdHlsZWlkIixhKTt2YXIgZCxlPWMuZ2V0QXR0cmlidXRlTlMoSSwiYW5jaG9yLXR5cGUiKSxoPWMuZ2V0QXR0cmlidXRlTlModCwieCIpLG09Yy5nZXRBdHRyaWJ1dGVOUyh0LCJ5IiksZj1jLmdldEF0dHJpYnV0ZU5TKHQsIndpZHRoIiksbD1jLmdldEF0dHJpYnV0ZU5TKHQsImhlaWdodCIpLG49Yy5nZXRBdHRyaWJ1dGVOUyh3LCJtaW4taGVpZ2h0IiksZz1jLmdldEF0dHJpYnV0ZU5TKHcsIm1pbi13aWR0aCIpO2lmKCJhcy1jaGFyIj09PWUpZD0iZGlzcGxheTogaW5saW5lLWJsb2NrOyI7CmVsc2UgaWYoZXx8aHx8bSlkPSJwb3NpdGlvbjogYWJzb2x1dGU7IjtlbHNlIGlmKGZ8fGx8fG58fGcpZD0iZGlzcGxheTogYmxvY2s7IjtoJiYoZCs9ImxlZnQ6ICIraCsiOyIpO20mJihkKz0idG9wOiAiK20rIjsiKTtmJiYoZCs9IndpZHRoOiAiK2YrIjsiKTtsJiYoZCs9ImhlaWdodDogIitsKyI7Iik7biYmKGQrPSJtaW4taGVpZ2h0OiAiK24rIjsiKTtnJiYoZCs9Im1pbi13aWR0aDogIitnKyI7Iik7ZCYmKGQ9ImRyYXd8IitjLmxvY2FsTmFtZSsnW3dlYm9kZmhlbHBlcnxzdHlsZWlkPSInK2ErJyJdIHsnK2QrIn0iLGIuaW5zZXJ0UnVsZShkLGIuY3NzUnVsZXMubGVuZ3RoKSl9ZnVuY3Rpb24gcShhKXtmb3IoYT1hLmZpcnN0Q2hpbGQ7YTspe2lmKGEubmFtZXNwYWNlVVJJPT09diYmImJpbmFyeS1kYXRhIj09PWEubG9jYWxOYW1lKXJldHVybiJkYXRhOmltYWdlL3BuZztiYXNlNjQsIithLnRleHRDb250ZW50LnJlcGxhY2UoL1tcclxuXHNdL2csIiIpO2E9YS5uZXh0U2libGluZ31yZXR1cm4iIn0KZnVuY3Rpb24gZShhLGMsYixkKXtmdW5jdGlvbiBlKGMpe2MmJihjPSdkcmF3fGltYWdlW3dlYm9kZmhlbHBlcnxzdHlsZWlkPSInK2ErJyJdIHsnKygiYmFja2dyb3VuZC1pbWFnZTogdXJsKCIrYysiKTsiKSsifSIsZC5pbnNlcnRSdWxlKGMsZC5jc3NSdWxlcy5sZW5ndGgpKX1mdW5jdGlvbiBoKGEpe2UoYS51cmwpfWIuc2V0QXR0cmlidXRlTlMoInVybjp3ZWJvZGY6bmFtZXM6aGVscGVyIiwic3R5bGVpZCIsYSk7dmFyIG09Yi5nZXRBdHRyaWJ1dGVOUyhLLCJocmVmIiksZjtpZihtKXRyeXtmPWMuZ2V0UGFydChtKSxmLm9uY2hhbmdlPWgsZi5sb2FkKCl9Y2F0Y2gobCl7cnVudGltZS5sb2coInNsaWdodCBwcm9ibGVtOiAiK1N0cmluZyhsKSl9ZWxzZSBtPXEoYiksZShtKX1mdW5jdGlvbiBsKGEpe3ZhciBjPWEub3duZXJEb2N1bWVudDtOLmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoYSxJLCJsaW5lLWJyZWFrIikuZm9yRWFjaChmdW5jdGlvbihhKXthLmhhc0NoaWxkTm9kZXMoKXx8CmEuYXBwZW5kQ2hpbGQoYy5jcmVhdGVFbGVtZW50KCJiciIpKX0pfWZ1bmN0aW9uIGEoYSl7dmFyIGM9YS5vd25lckRvY3VtZW50O04uZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhhLEksInMiKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBiLGQ7Ti5yZW1vdmVBbGxDaGlsZE5vZGVzKGEpO2EuYXBwZW5kQ2hpbGQoYy5jcmVhdGVUZXh0Tm9kZSgiICIpKTtkPXBhcnNlSW50KGEuZ2V0QXR0cmlidXRlTlMoSSwiYyIpLDEwKTtpZigxPGQpZm9yKGEucmVtb3ZlQXR0cmlidXRlTlMoSSwiYyIpLGI9MTtiPGQ7Yis9MSlhLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEuY2xvbmVOb2RlKCEwKSxhKX0pfWZ1bmN0aW9uIGMoYSl7Ti5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKGEsSSwidGFiIikuZm9yRWFjaChmdW5jdGlvbihhKXthLnRleHRDb250ZW50PSJcdCJ9KX1mdW5jdGlvbiBtKGEsYyl7ZnVuY3Rpb24gYihhLGQpe3ZhciBtPWYuZG9jdW1lbnRFbGVtZW50Lm5hbWVzcGFjZVVSSTsidmlkZW8vIj09PQpkLnN1YnN0cigwLDYpPyhlPWYuY3JlYXRlRWxlbWVudE5TKG0sInZpZGVvIiksZS5zZXRBdHRyaWJ1dGUoImNvbnRyb2xzIiwiY29udHJvbHMiKSxoPWYuY3JlYXRlRWxlbWVudE5TKG0sInNvdXJjZSIpLGEmJmguc2V0QXR0cmlidXRlKCJzcmMiLGEpLGguc2V0QXR0cmlidXRlKCJ0eXBlIixkKSxlLmFwcGVuZENoaWxkKGgpLGMucGFyZW50Tm9kZS5hcHBlbmRDaGlsZChlKSk6Yy5pbm5lckh0bWw9IlVucmVjb2duaXNlZCBQbHVnaW4ifWZ1bmN0aW9uIGQoYSl7YihhLnVybCxhLm1pbWV0eXBlKX12YXIgZSxoLG0sZj1jLm93bmVyRG9jdW1lbnQsbDtpZihtPWMuZ2V0QXR0cmlidXRlTlMoSywiaHJlZiIpKXRyeXtsPWEuZ2V0UGFydChtKSxsLm9uY2hhbmdlPWQsbC5sb2FkKCl9Y2F0Y2gobil7cnVudGltZS5sb2coInNsaWdodCBwcm9ibGVtOiAiK1N0cmluZyhuKSl9ZWxzZSBydW50aW1lLmxvZygidXNpbmcgTVA0IGRhdGEgZmFsbGJhY2siKSxtPXEoYyksYihtLCJ2aWRlby9tcDQiKX0KZnVuY3Rpb24gaChhKXt2YXIgYz1hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0sYixkO2I9YS5zdHlsZVNoZWV0cy5sZW5ndGg7Zm9yKGQ9Yy5maXJzdEVsZW1lbnRDaGlsZDtkJiYoInN0eWxlIiE9PWQubG9jYWxOYW1lfHwhZC5oYXNBdHRyaWJ1dGUoIndlYm9kZmNzcyIpKTspZD1kLm5leHRFbGVtZW50U2libGluZztpZihkKXJldHVybiBiPXBhcnNlSW50KGQuZ2V0QXR0cmlidXRlKCJ3ZWJvZGZjc3MiKSwxMCksZC5zZXRBdHRyaWJ1dGUoIndlYm9kZmNzcyIsYisxKSxkOyJzdHJpbmciPT09U3RyaW5nKHR5cGVvZiB3ZWJvZGZfY3NzKT9iPXdlYm9kZl9jc3M6KGQ9IndlYm9kZi5jc3MiLHJ1bnRpbWUuY3VycmVudERpcmVjdG9yeSYmKGQ9cnVudGltZS5jdXJyZW50RGlyZWN0b3J5KCksMDxkLmxlbmd0aCYmIi8iIT09ZC5zdWJzdHIoLTEpJiYoZCs9Ii8iKSxkKz0iLi4vd2Vib2RmLmNzcyIpLGI9cnVudGltZS5yZWFkRmlsZVN5bmMoZCwidXRmLTgiKSk7ZD1hLmNyZWF0ZUVsZW1lbnROUyhjLm5hbWVzcGFjZVVSSSwKInN0eWxlIik7ZC5zZXRBdHRyaWJ1dGUoIm1lZGlhIiwic2NyZWVuLCBwcmludCwgaGFuZGhlbGQsIHByb2plY3Rpb24iKTtkLnNldEF0dHJpYnV0ZSgidHlwZSIsInRleHQvY3NzIik7ZC5zZXRBdHRyaWJ1dGUoIndlYm9kZmNzcyIsIjEiKTtkLmFwcGVuZENoaWxkKGEuY3JlYXRlVGV4dE5vZGUoYikpO2MuYXBwZW5kQ2hpbGQoZCk7cmV0dXJuIGR9ZnVuY3Rpb24geShhKXt2YXIgYz1wYXJzZUludChhLmdldEF0dHJpYnV0ZSgid2Vib2RmY3NzIiksMTApOzE9PT1jP2EucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChhKTphLnNldEF0dHJpYnV0ZSgiY291bnQiLGMtMSl9ZnVuY3Rpb24geChhKXt2YXIgYz1hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0sYj1hLmNyZWF0ZUVsZW1lbnROUyhjLm5hbWVzcGFjZVVSSSwic3R5bGUiKSxkPSIiO2Iuc2V0QXR0cmlidXRlKCJ0eXBlIiwidGV4dC9jc3MiKTtiLnNldEF0dHJpYnV0ZSgibWVkaWEiLCJzY3JlZW4sIHByaW50LCBoYW5kaGVsZCwgcHJvamVjdGlvbiIpOwpvZGYuTmFtZXNwYWNlcy5mb3JFYWNoUHJlZml4KGZ1bmN0aW9uKGEsYyl7ZCs9IkBuYW1lc3BhY2UgIithKyIgdXJsKCIrYysiKTtcbiJ9KTtkKz0iQG5hbWVzcGFjZSB3ZWJvZGZoZWxwZXIgdXJsKHVybjp3ZWJvZGY6bmFtZXM6aGVscGVyKTtcbiI7Yi5hcHBlbmRDaGlsZChhLmNyZWF0ZVRleHROb2RlKGQpKTtjLmFwcGVuZENoaWxkKGIpO3JldHVybiBifXZhciB6PW9kZi5OYW1lc3BhY2VzLmRyYXducyx3PW9kZi5OYW1lc3BhY2VzLmZvbnMsdj1vZGYuTmFtZXNwYWNlcy5vZmZpY2Vucyx1PW9kZi5OYW1lc3BhY2VzLnN0eWxlbnMsdD1vZGYuTmFtZXNwYWNlcy5zdmducyxBPW9kZi5OYW1lc3BhY2VzLnRhYmxlbnMsST1vZGYuTmFtZXNwYWNlcy50ZXh0bnMsSz1vZGYuTmFtZXNwYWNlcy54bGlua25zLEw9b2RmLk5hbWVzcGFjZXMucHJlc2VudGF0aW9ubnMsRT14bWxkb20uWFBhdGgsTj1jb3JlLkRvbVV0aWxzO29kZi5PZGZDYW52YXM9ZnVuY3Rpb24ocSxEKXtmdW5jdGlvbiB0KGEsCmMsYil7ZnVuY3Rpb24gZChhLGMsYixoKXtuYS5hZGRUb1F1ZXVlKGZ1bmN0aW9uKCl7ZShhLGMsYixoKX0pfXZhciBoLG07aD1jLmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoeiwiaW1hZ2UiKTtmb3IoYz0wO2M8aC5sZW5ndGg7Yys9MSltPWguaXRlbShjKSxkKCJpbWFnZSIrU3RyaW5nKGMpLGEsbSxiKX1mdW5jdGlvbiBXKGEsYyl7ZnVuY3Rpb24gYihhLGMpe25hLmFkZFRvUXVldWUoZnVuY3Rpb24oKXttKGEsYyl9KX12YXIgZCxlLGg7ZT1jLmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoeiwicGx1Z2luIik7Zm9yKGQ9MDtkPGUubGVuZ3RoO2QrPTEpaD1lLml0ZW0oZCksYihhLGgpfWZ1bmN0aW9uIHcoKXt2YXIgYTthPVUuZmlyc3RDaGlsZDt2YXIgYz1lYS5nZXRab29tTGV2ZWwoKTthJiYoVS5zdHlsZS5XZWJraXRUcmFuc2Zvcm1PcmlnaW49IjAlIDAlIixVLnN0eWxlLk1velRyYW5zZm9ybU9yaWdpbj0iMCUgMCUiLFUuc3R5bGUubXNUcmFuc2Zvcm1PcmlnaW49IjAlIDAlIixVLnN0eWxlLk9UcmFuc2Zvcm1PcmlnaW49CiIwJSAwJSIsVS5zdHlsZS50cmFuc2Zvcm1PcmlnaW49IjAlIDAlIixNJiYoKGE9TS5nZXRNaW5pbXVtSGVpZ2h0Rm9yQW5ub3RhdGlvblBhbmUoKSk/VS5zdHlsZS5taW5IZWlnaHQ9YTpVLnN0eWxlLnJlbW92ZVByb3BlcnR5KCJtaW4taGVpZ2h0IikpLHEuc3R5bGUud2lkdGg9TWF0aC5yb3VuZChjKlUub2Zmc2V0V2lkdGgpKyJweCIscS5zdHlsZS5oZWlnaHQ9TWF0aC5yb3VuZChjKlUub2Zmc2V0SGVpZ2h0KSsicHgiLHEuc3R5bGUuZGlzcGxheT0iaW5saW5lLWJsb2NrIil9ZnVuY3Rpb24gSyhiLGQpe3ZhciBlPWNhLnNoZWV0O04ucmVtb3ZlQWxsQ2hpbGROb2RlcyhxKTtVPWhhLmNyZWF0ZUVsZW1lbnROUyhxLm5hbWVzcGFjZVVSSSwiZGl2Iik7VS5zdHlsZS5kaXNwbGF5PSJpbmxpbmUtYmxvY2siO1Uuc3R5bGUuYmFja2dyb3VuZD0id2hpdGUiO1Uuc3R5bGUuc2V0UHJvcGVydHkoImZsb2F0IiwibGVmdCIsImltcG9ydGFudCIpO1UuYXBwZW5kQ2hpbGQoZCk7cS5hcHBlbmRDaGlsZChVKTsKZ2E9aGEuY3JlYXRlRWxlbWVudE5TKHEubmFtZXNwYWNlVVJJLCJkaXYiKTtnYS5pZD0iYW5ub3RhdGlvbnNQYW5lIjtYPWhhLmNyZWF0ZUVsZW1lbnROUyhxLm5hbWVzcGFjZVVSSSwiZGl2Iik7WC5pZD0ic2hhZG93Q29udGVudCI7WC5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiO1guc3R5bGUudG9wPTA7WC5zdHlsZS5sZWZ0PTA7Yi5nZXRDb250ZW50RWxlbWVudCgpLmFwcGVuZENoaWxkKFgpO3ZhciBoPWQuYm9keSxtLGY9W10sZztmb3IobT1oLmZpcnN0RWxlbWVudENoaWxkO20mJm0hPT1oOylpZihtLm5hbWVzcGFjZVVSST09PXomJihmW2YubGVuZ3RoXT1tKSxtLmZpcnN0RWxlbWVudENoaWxkKW09bS5maXJzdEVsZW1lbnRDaGlsZDtlbHNle2Zvcig7bSYmbSE9PWgmJiFtLm5leHRFbGVtZW50U2libGluZzspbT1tLnBhcmVudE5vZGU7bSYmbS5uZXh0RWxlbWVudFNpYmxpbmcmJihtPW0ubmV4dEVsZW1lbnRTaWJsaW5nKX1mb3IoZz0wO2c8Zi5sZW5ndGg7Zys9MSltPWZbZ10sCnIoImZyYW1lIitTdHJpbmcoZyksbSxlKTtmPUUuZ2V0T0RGRWxlbWVudHNXaXRoWFBhdGgoaCwiLi8vKlsqW0B0ZXh0OmFuY2hvci10eXBlPSdwYXJhZ3JhcGgnXV0iLG9kZi5OYW1lc3BhY2VzLmxvb2t1cE5hbWVzcGFjZVVSSSk7Zm9yKG09MDttPGYubGVuZ3RoO20rPTEpaD1mW21dLGguc2V0QXR0cmlidXRlTlMmJmguc2V0QXR0cmlidXRlTlMoInVybjp3ZWJvZGY6bmFtZXM6aGVscGVyIiwiY29udGFpbnNwYXJhZ3JhcGhhbmNob3IiLCEwKTtoPVo7bT1YO3ZhciBrLEQseSx4LHc9MCxKO2c9Yi5yb290RWxlbWVudC5vd25lckRvY3VtZW50O2lmKChmPWQuYm9keS5maXJzdEVsZW1lbnRDaGlsZCkmJmYubmFtZXNwYWNlVVJJPT09diYmKCJwcmVzZW50YXRpb24iPT09Zi5sb2NhbE5hbWV8fCJkcmF3aW5nIj09PWYubG9jYWxOYW1lKSlmb3IoZj1mLmZpcnN0RWxlbWVudENoaWxkO2Y7KXtpZihrPShrPWYuZ2V0QXR0cmlidXRlTlMoeiwibWFzdGVyLXBhZ2UtbmFtZSIpKT9oLmdldE1hc3RlclBhZ2VFbGVtZW50KGspOgpudWxsKXtEPWYuZ2V0QXR0cmlidXRlTlMoInVybjp3ZWJvZGY6bmFtZXM6aGVscGVyIiwic3R5bGVpZCIpO3k9Zy5jcmVhdGVFbGVtZW50TlMoeiwiZHJhdzpwYWdlIik7Sj1rLmZpcnN0RWxlbWVudENoaWxkO2Zvcih3PTA7SjspInRydWUiIT09Si5nZXRBdHRyaWJ1dGVOUyhMLCJwbGFjZWhvbGRlciIpJiYoeD1KLmNsb25lTm9kZSghMCkseS5hcHBlbmRDaGlsZCh4KSksSj1KLm5leHRFbGVtZW50U2libGluZyx3Kz0xO0o9eD13PXZvaWQgMDtmb3IodmFyIEI9Ti5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKHkseiwiZnJhbWUiKSx3PTA7dzxCLmxlbmd0aDt3Kz0xKXg9Qlt3XSwoSj14LmdldEF0dHJpYnV0ZU5TKEwsImNsYXNzIikpJiYhL14oZGF0ZS10aW1lfGZvb3RlcnxoZWFkZXJ8cGFnZS1udW1iZXIpJC8udGVzdChKKSYmeC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHgpO3g9Ti5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKHkseiwiKiIpO2Zvcih3PTA7dzx4Lmxlbmd0aDt3Kz0xKXIoRCsKIl8iK3cseFt3XSxlKTttLmFwcGVuZENoaWxkKHkpO3c9U3RyaW5nKG0uZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyh6LCJwYWdlIikubGVuZ3RoKTtwKHksSSwicGFnZS1udW1iZXIiLHcpO3AoeSxMLCJoZWFkZXIiLG4oYixmLCJoZWFkZXIiKSk7cCh5LEwsImZvb3RlciIsbihiLGYsImZvb3RlciIpKTtyKEQseSxlKTt5LnNldEF0dHJpYnV0ZU5TKCJ1cm46d2Vib2RmOm5hbWVzOmhlbHBlciIsInBhZ2Utc3R5bGUtbmFtZSIsZi5nZXRBdHRyaWJ1dGVOUyh6LCJzdHlsZS1uYW1lIikpO3kuc2V0QXR0cmlidXRlTlMoeiwiZHJhdzptYXN0ZXItcGFnZS1uYW1lIixrLmdldEF0dHJpYnV0ZU5TKHUsIm5hbWUiKSl9Zj1mLm5leHRFbGVtZW50U2libGluZ31oPXEubmFtZXNwYWNlVVJJO2Y9Ti5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKGQuYm9keSxBLCJ0YWJsZS1jZWxsIik7Zm9yKG09MDttPGYubGVuZ3RoO20rPTEpZz1mW21dLGcuaGFzQXR0cmlidXRlTlMoQSwibnVtYmVyLWNvbHVtbnMtc3Bhbm5lZCIpJiYKZy5zZXRBdHRyaWJ1dGVOUyhoLCJjb2xzcGFuIixnLmdldEF0dHJpYnV0ZU5TKEEsIm51bWJlci1jb2x1bW5zLXNwYW5uZWQiKSksZy5oYXNBdHRyaWJ1dGVOUyhBLCJudW1iZXItcm93cy1zcGFubmVkIikmJmcuc2V0QXR0cmlidXRlTlMoaCwicm93c3BhbiIsZy5nZXRBdHRyaWJ1dGVOUyhBLCJudW1iZXItcm93cy1zcGFubmVkIikpO2woZC5ib2R5KTthKGQuYm9keSk7YyhkLmJvZHkpO3QoYixkLmJvZHksZSk7VyhiLGQuYm9keSk7VS5pbnNlcnRCZWZvcmUoWCxVLmZpcnN0Q2hpbGQpO2VhLnNldFpvb21hYmxlRWxlbWVudChVKX1mdW5jdGlvbiBQKGEpe0I/KGdhLnBhcmVudE5vZGV8fFUuYXBwZW5kQ2hpbGQoZ2EpLE0mJk0uZm9yZ2V0QW5ub3RhdGlvbnMoKSxNPW5ldyBndWkuQW5ub3RhdGlvblZpZXdNYW5hZ2VyKGZhLGEuYm9keSxnYSxZKSxhPU4uZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhhLmJvZHksdiwiYW5ub3RhdGlvbiIpLE0uYWRkQW5ub3RhdGlvbnMoYSksdygpKTpnYS5wYXJlbnROb2RlJiYKKFUucmVtb3ZlQ2hpbGQoZ2EpLE0uZm9yZ2V0QW5ub3RhdGlvbnMoKSx3KCkpfWZ1bmN0aW9uIGFhKGEpe2Z1bmN0aW9uIGMoKXtkKEYpO2QoamEpO2QoY2EpO04ucmVtb3ZlQWxsQ2hpbGROb2RlcyhxKTtxLnN0eWxlLmRpc3BsYXk9ImlubGluZS1ibG9jayI7dmFyIGU9Qy5yb290RWxlbWVudDtxLm93bmVyRG9jdW1lbnQuaW1wb3J0Tm9kZShlLCEwKTtaLnNldE9kZkNvbnRhaW5lcihDKTtmKEMsRik7YihDLFosamEpO0soQyxlKTtQKGUpO2F8fG5hLmFkZFRvUXVldWUoZnVuY3Rpb24oKXt2YXIgYT1bQ107aWYoZGEuaGFzT3duUHJvcGVydHkoInN0YXRlcmVhZHljaGFuZ2UiKSl7dmFyIGM9ZGEuc3RhdGVyZWFkeWNoYW5nZSxiO2ZvcihiPTA7YjxjLmxlbmd0aDtiKz0xKWNbYl0uYXBwbHkobnVsbCxhKX19KX1DLnN0YXRlPT09b2RmLk9kZkNvbnRhaW5lci5ET05FP2MoKToocnVudGltZS5sb2coIldBUk5JTkc6IHJlZnJlc2hPZGYgY2FsbGVkIGJ1dCBPREYgd2FzIG5vdCBET05FLiIpLApxYT1ydW50aW1lLnNldFRpbWVvdXQoZnVuY3Rpb24gVCgpe0Muc3RhdGU9PT1vZGYuT2RmQ29udGFpbmVyLkRPTkU/YygpOihydW50aW1lLmxvZygid2lsbCBiZSBiYWNrIGxhdGVyLi4uIikscWE9cnVudGltZS5zZXRUaW1lb3V0KFQsNTAwKSl9LDEwMCkpfWZ1bmN0aW9uIFMoYSl7bmEuY2xlYXJRdWV1ZSgpO04ucmVtb3ZlQWxsQ2hpbGROb2RlcyhxKTtxLmFwcGVuZENoaWxkKHEub3duZXJEb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShydW50aW1lLnRyKCJMb2FkaW5nIikrYSsiLi4uIikpO3EucmVtb3ZlQXR0cmlidXRlKCJzdHlsZSIpO0M9bmV3IG9kZi5PZGZDb250YWluZXIoYSxmdW5jdGlvbihhKXtDPWE7YWEoITEpfSl9cnVudGltZS5hc3NlcnQobnVsbCE9PXEmJnZvaWQgMCE9PXEsIm9kZi5PZGZDYW52YXMgY29uc3RydWN0b3IgbmVlZHMgRE9NIGVsZW1lbnQiKTtydW50aW1lLmFzc2VydChudWxsIT09cS5vd25lckRvY3VtZW50JiZ2b2lkIDAhPT1xLm93bmVyRG9jdW1lbnQsCiJvZGYuT2RmQ2FudmFzIGNvbnN0cnVjdG9yIG5lZWRzIERPTSIpO3ZhciBmYT10aGlzLGhhPXEub3duZXJEb2N1bWVudCxDLFo9bmV3IG9kZi5Gb3JtYXR0aW5nLGJhLFU9bnVsbCxnYT1udWxsLEI9ITEsWT0hMSxNPW51bGwsUSxGLGphLGNhLFgsZGE9e30scWEsbGEsaWE9ITEsbWE9ITEsbmE9bmV3IGcsZWE9bmV3IGd1aS5ab29tSGVscGVyLGthPUR8fG5ldyBndWkuU2luZ2xlU2Nyb2xsVmlld3BvcnQocS5wYXJlbnROb2RlKTt0aGlzLnJlZnJlc2hDU1M9ZnVuY3Rpb24oKXtpYT0hMDtsYS50cmlnZ2VyKCl9O3RoaXMucmVmcmVzaFNpemU9ZnVuY3Rpb24oKXtsYS50cmlnZ2VyKCl9O3RoaXMub2RmQ29udGFpbmVyPWZ1bmN0aW9uKCl7cmV0dXJuIEN9O3RoaXMuc2V0T2RmQ29udGFpbmVyPWZ1bmN0aW9uKGEsYyl7Qz1hO2FhKCEwPT09Yyl9O3RoaXMubG9hZD10aGlzLmxvYWQ9Uzt0aGlzLnNhdmU9ZnVuY3Rpb24oYSl7Qy5zYXZlKGEpfTt0aGlzLmFkZExpc3RlbmVyPWZ1bmN0aW9uKGEsCmMpe3N3aXRjaChhKXtjYXNlICJjbGljayI6dmFyIGI9YTtxLmFkZEV2ZW50TGlzdGVuZXI/cS5hZGRFdmVudExpc3RlbmVyKGIsYywhMSk6cS5hdHRhY2hFdmVudD9xLmF0dGFjaEV2ZW50KCJvbiIrYixjKTpxWyJvbiIrYl09YzticmVhaztkZWZhdWx0OmI9ZGEuaGFzT3duUHJvcGVydHkoYSk/ZGFbYV06ZGFbYV09W10sYyYmLTE9PT1iLmluZGV4T2YoYykmJmIucHVzaChjKX19O3RoaXMuZ2V0Rm9ybWF0dGluZz1mdW5jdGlvbigpe3JldHVybiBafTt0aGlzLmdldEFubm90YXRpb25WaWV3TWFuYWdlcj1mdW5jdGlvbigpe3JldHVybiBNfTt0aGlzLnJlZnJlc2hBbm5vdGF0aW9ucz1mdW5jdGlvbigpe1AoQy5yb290RWxlbWVudCl9O3RoaXMucmVyZW5kZXJBbm5vdGF0aW9ucz1mdW5jdGlvbigpe00mJihtYT0hMCxsYS50cmlnZ2VyKCkpfTt0aGlzLmdldFNpemVyPWZ1bmN0aW9uKCl7cmV0dXJuIFV9O3RoaXMuZW5hYmxlQW5ub3RhdGlvbnM9ZnVuY3Rpb24oYSxjKXthIT09QiYmKEI9CmEsWT1jLEMmJlAoQy5yb290RWxlbWVudCkpfTt0aGlzLmFkZEFubm90YXRpb249ZnVuY3Rpb24oYSl7TSYmKE0uYWRkQW5ub3RhdGlvbnMoW2FdKSx3KCkpfTt0aGlzLmZvcmdldEFubm90YXRpb249ZnVuY3Rpb24oYSl7TSYmKE0uZm9yZ2V0QW5ub3RhdGlvbihhKSx3KCkpfTt0aGlzLmdldFpvb21IZWxwZXI9ZnVuY3Rpb24oKXtyZXR1cm4gZWF9O3RoaXMuc2V0Wm9vbUxldmVsPWZ1bmN0aW9uKGEpe2VhLnNldFpvb21MZXZlbChhKX07dGhpcy5nZXRab29tTGV2ZWw9ZnVuY3Rpb24oKXtyZXR1cm4gZWEuZ2V0Wm9vbUxldmVsKCl9O3RoaXMuZml0VG9Db250YWluaW5nRWxlbWVudD1mdW5jdGlvbihhLGMpe3ZhciBiPWVhLmdldFpvb21MZXZlbCgpLGQ9cS5vZmZzZXRIZWlnaHQvYixiPWEvKHEub2Zmc2V0V2lkdGgvYik7Yy9kPGImJihiPWMvZCk7ZWEuc2V0Wm9vbUxldmVsKGIpfTt0aGlzLmZpdFRvV2lkdGg9ZnVuY3Rpb24oYSl7dmFyIGM9cS5vZmZzZXRXaWR0aC9lYS5nZXRab29tTGV2ZWwoKTsKZWEuc2V0Wm9vbUxldmVsKGEvYyl9O3RoaXMuZml0U21hcnQ9ZnVuY3Rpb24oYSxjKXt2YXIgYixkO2Q9ZWEuZ2V0Wm9vbUxldmVsKCk7Yj1xLm9mZnNldFdpZHRoL2Q7ZD1xLm9mZnNldEhlaWdodC9kO2I9YS9iO3ZvaWQgMCE9PWMmJmMvZDxiJiYoYj1jL2QpO2VhLnNldFpvb21MZXZlbChNYXRoLm1pbigxLGIpKX07dGhpcy5maXRUb0hlaWdodD1mdW5jdGlvbihhKXt2YXIgYz1xLm9mZnNldEhlaWdodC9lYS5nZXRab29tTGV2ZWwoKTtlYS5zZXRab29tTGV2ZWwoYS9jKX07dGhpcy5zaG93Rmlyc3RQYWdlPWZ1bmN0aW9uKCl7YmEuc2hvd0ZpcnN0UGFnZSgpfTt0aGlzLnNob3dOZXh0UGFnZT1mdW5jdGlvbigpe2JhLnNob3dOZXh0UGFnZSgpfTt0aGlzLnNob3dQcmV2aW91c1BhZ2U9ZnVuY3Rpb24oKXtiYS5zaG93UHJldmlvdXNQYWdlKCl9O3RoaXMuc2hvd1BhZ2U9ZnVuY3Rpb24oYSl7YmEuc2hvd1BhZ2UoYSk7dygpfTt0aGlzLmdldEVsZW1lbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gcX07CnRoaXMuZ2V0Vmlld3BvcnQ9ZnVuY3Rpb24oKXtyZXR1cm4ga2F9O3RoaXMuYWRkQ3NzRm9yRnJhbWVXaXRoSW1hZ2U9ZnVuY3Rpb24oYSl7dmFyIGM9YS5nZXRBdHRyaWJ1dGVOUyh6LCJuYW1lIiksYj1hLmZpcnN0RWxlbWVudENoaWxkO3IoYyxhLGNhLnNoZWV0KTtiJiZlKGMrImltZyIsQyxiLGNhLnNoZWV0KX07dGhpcy5kZXN0cm95PWZ1bmN0aW9uKGEpe3ZhciBjPWhhLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0sYj1bYmEuZGVzdHJveSxsYS5kZXN0cm95XTtydW50aW1lLmNsZWFyVGltZW91dChxYSk7Z2EmJmdhLnBhcmVudE5vZGUmJmdhLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZ2EpO2VhLmRlc3Ryb3koZnVuY3Rpb24oKXtVJiYocS5yZW1vdmVDaGlsZChVKSxVPW51bGwpfSk7eShRKTtjLnJlbW92ZUNoaWxkKEYpO2MucmVtb3ZlQ2hpbGQoamEpO2MucmVtb3ZlQ2hpbGQoY2EpO2NvcmUuQXN5bmMuZGVzdHJveUFsbChiLGEpfTtRPWgoaGEpO2JhPW5ldyBrKHgoaGEpKTsKRj14KGhhKTtqYT14KGhhKTtjYT14KGhhKTtsYT1jb3JlLlRhc2suY3JlYXRlUmVkcmF3VGFzayhmdW5jdGlvbigpe2lhJiYoYihDLFosamEpLGlhPSExKTttYSYmKE0mJk0ucmVyZW5kZXJBbm5vdGF0aW9ucygpLG1hPSExKTt3KCl9KTtlYS5zdWJzY3JpYmUoZ3VpLlpvb21IZWxwZXIuc2lnbmFsWm9vbUNoYW5nZWQsdyl9fSkoKTsKb2RmLlN0ZXBVdGlscz1mdW5jdGlvbigpe3RoaXMuZ2V0Q29udGVudEJvdW5kcz1mdW5jdGlvbihnKXt2YXIgaz1nLmNvbnRhaW5lcigpLGQsYjtydW50aW1lLmFzc2VydChnLmlzU3RlcCgpLCJTdGVwIGl0ZXJhdG9yIG11c3QgYmUgb24gYSBzdGVwIik7ay5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFJiYwPGcub2Zmc2V0KCk/ZD1nLm9mZnNldCgpOihrPWcubGVmdE5vZGUoKSkmJmsubm9kZVR5cGU9PT1Ob2RlLlRFWFRfTk9ERSYmKGQ9ay5sZW5ndGgpO2smJihrLm5vZGVUeXBlPT09Tm9kZS5URVhUX05PREU/KHJ1bnRpbWUuYXNzZXJ0KDA8ZCwiRW1wdHkgdGV4dCBub2RlIGZvdW5kIiksYj17Y29udGFpbmVyOmssc3RhcnRPZmZzZXQ6ZC0xLGVuZE9mZnNldDpkfSk6Yj17Y29udGFpbmVyOmssc3RhcnRPZmZzZXQ6MCxlbmRPZmZzZXQ6ay5jaGlsZE5vZGVzLmxlbmd0aH0pO3JldHVybiBifX07b3BzLk1lbWJlclByb3BlcnRpZXM9ZnVuY3Rpb24oKXt9OwpvcHMuTWVtYmVyPWZ1bmN0aW9uKGcsayl7dmFyIGQ9bmV3IG9wcy5NZW1iZXJQcm9wZXJ0aWVzO3RoaXMuZ2V0TWVtYmVySWQ9ZnVuY3Rpb24oKXtyZXR1cm4gZ307dGhpcy5nZXRQcm9wZXJ0aWVzPWZ1bmN0aW9uKCl7cmV0dXJuIGR9O3RoaXMuc2V0UHJvcGVydGllcz1mdW5jdGlvbihiKXtPYmplY3Qua2V5cyhiKS5mb3JFYWNoKGZ1bmN0aW9uKGYpe2RbZl09YltmXX0pfTt0aGlzLnJlbW92ZVByb3BlcnRpZXM9ZnVuY3Rpb24oYil7T2JqZWN0LmtleXMoYikuZm9yRWFjaChmdW5jdGlvbihiKXsiZnVsbE5hbWUiIT09YiYmImNvbG9yIiE9PWImJiJpbWFnZVVybCIhPT1iJiZkLmhhc093blByb3BlcnR5KGIpJiZkZWxldGUgZFtiXX0pfTtydW50aW1lLmFzc2VydChCb29sZWFuKGcpLCJObyBtZW1iZXJJZCB3YXMgc3VwcGxpZWQhIik7ay5mdWxsTmFtZXx8KGsuZnVsbE5hbWU9cnVudGltZS50cigiVW5rbm93biBBdXRob3IiKSk7ay5jb2xvcnx8KGsuY29sb3I9ImJsYWNrIik7ay5pbWFnZVVybHx8CihrLmltYWdlVXJsPSJhdmF0YXItam9lLnBuZyIpO2Q9a307b3BzLkRvY3VtZW50PWZ1bmN0aW9uKCl7fTtvcHMuRG9jdW1lbnQucHJvdG90eXBlLmdldE1lbWJlcklkcz1mdW5jdGlvbigpe307b3BzLkRvY3VtZW50LnByb3RvdHlwZS5yZW1vdmVDdXJzb3I9ZnVuY3Rpb24oZyl7fTtvcHMuRG9jdW1lbnQucHJvdG90eXBlLmdldERvY3VtZW50RWxlbWVudD1mdW5jdGlvbigpe307b3BzLkRvY3VtZW50LnByb3RvdHlwZS5nZXRSb290Tm9kZT1mdW5jdGlvbigpe307b3BzLkRvY3VtZW50LnByb3RvdHlwZS5nZXRET01Eb2N1bWVudD1mdW5jdGlvbigpe307b3BzLkRvY3VtZW50LnByb3RvdHlwZS5jbG9uZURvY3VtZW50RWxlbWVudD1mdW5jdGlvbigpe307b3BzLkRvY3VtZW50LnByb3RvdHlwZS5zZXREb2N1bWVudEVsZW1lbnQ9ZnVuY3Rpb24oZyl7fTtvcHMuRG9jdW1lbnQucHJvdG90eXBlLnN1YnNjcmliZT1mdW5jdGlvbihnLGspe307Cm9wcy5Eb2N1bWVudC5wcm90b3R5cGUudW5zdWJzY3JpYmU9ZnVuY3Rpb24oZyxrKXt9O29wcy5Eb2N1bWVudC5wcm90b3R5cGUuZ2V0Q2FudmFzPWZ1bmN0aW9uKCl7fTtvcHMuRG9jdW1lbnQucHJvdG90eXBlLmNyZWF0ZVJvb3RGaWx0ZXI9ZnVuY3Rpb24oZyl7fTtvcHMuRG9jdW1lbnQucHJvdG90eXBlLmNyZWF0ZVBvc2l0aW9uSXRlcmF0b3I9ZnVuY3Rpb24oZyl7fTtvcHMuRG9jdW1lbnQucHJvdG90eXBlLmhhc0N1cnNvcj1mdW5jdGlvbihnKXt9O29wcy5Eb2N1bWVudC5zaWduYWxDdXJzb3JBZGRlZD0iY3Vyc29yL2FkZGVkIjtvcHMuRG9jdW1lbnQuc2lnbmFsQ3Vyc29yUmVtb3ZlZD0iY3Vyc29yL3JlbW92ZWQiO29wcy5Eb2N1bWVudC5zaWduYWxDdXJzb3JNb3ZlZD0iY3Vyc29yL21vdmVkIjtvcHMuRG9jdW1lbnQuc2lnbmFsTWVtYmVyQWRkZWQ9Im1lbWJlci9hZGRlZCI7b3BzLkRvY3VtZW50LnNpZ25hbE1lbWJlclVwZGF0ZWQ9Im1lbWJlci91cGRhdGVkIjsKb3BzLkRvY3VtZW50LnNpZ25hbE1lbWJlclJlbW92ZWQ9Im1lbWJlci9yZW1vdmVkIjsKb3BzLk9kdEN1cnNvcj1mdW5jdGlvbihnLGspe3ZhciBkPXRoaXMsYj17fSxmLG4scD1uZXcgY29yZS5FdmVudE5vdGlmaWVyKFtvcHMuT2R0Q3Vyc29yLnNpZ25hbEN1cnNvclVwZGF0ZWRdKTt0aGlzLnJlbW92ZUZyb21Eb2N1bWVudD1mdW5jdGlvbigpe24ucmVtb3ZlKCl9O3RoaXMuc3Vic2NyaWJlPWZ1bmN0aW9uKGIsZCl7cC5zdWJzY3JpYmUoYixkKX07dGhpcy51bnN1YnNjcmliZT1mdW5jdGlvbihiLGQpe3AudW5zdWJzY3JpYmUoYixkKX07dGhpcy5nZXRNZW1iZXJJZD1mdW5jdGlvbigpe3JldHVybiBnfTt0aGlzLmdldE5vZGU9ZnVuY3Rpb24oKXtyZXR1cm4gbi5nZXROb2RlKCl9O3RoaXMuZ2V0QW5jaG9yTm9kZT1mdW5jdGlvbigpe3JldHVybiBuLmdldEFuY2hvck5vZGUoKX07dGhpcy5nZXRTZWxlY3RlZFJhbmdlPWZ1bmN0aW9uKCl7cmV0dXJuIG4uZ2V0U2VsZWN0ZWRSYW5nZSgpfTt0aGlzLnNldFNlbGVjdGVkUmFuZ2U9ZnVuY3Rpb24oYixmKXtuLnNldFNlbGVjdGVkUmFuZ2UoYiwKZik7cC5lbWl0KG9wcy5PZHRDdXJzb3Iuc2lnbmFsQ3Vyc29yVXBkYXRlZCxkKX07dGhpcy5oYXNGb3J3YXJkU2VsZWN0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIG4uaGFzRm9yd2FyZFNlbGVjdGlvbigpfTt0aGlzLmdldERvY3VtZW50PWZ1bmN0aW9uKCl7cmV0dXJuIGt9O3RoaXMuZ2V0U2VsZWN0aW9uVHlwZT1mdW5jdGlvbigpe3JldHVybiBmfTt0aGlzLnNldFNlbGVjdGlvblR5cGU9ZnVuY3Rpb24oZCl7Yi5oYXNPd25Qcm9wZXJ0eShkKT9mPWQ6cnVudGltZS5sb2coIkludmFsaWQgc2VsZWN0aW9uIHR5cGU6ICIrZCl9O3RoaXMucmVzZXRTZWxlY3Rpb25UeXBlPWZ1bmN0aW9uKCl7ZC5zZXRTZWxlY3Rpb25UeXBlKG9wcy5PZHRDdXJzb3IuUmFuZ2VTZWxlY3Rpb24pfTtuPW5ldyBjb3JlLkN1cnNvcihrLmdldERPTURvY3VtZW50KCksZyk7YltvcHMuT2R0Q3Vyc29yLlJhbmdlU2VsZWN0aW9uXT0hMDtiW29wcy5PZHRDdXJzb3IuUmVnaW9uU2VsZWN0aW9uXT0hMDtkLnJlc2V0U2VsZWN0aW9uVHlwZSgpfTsKb3BzLk9kdEN1cnNvci5SYW5nZVNlbGVjdGlvbj0iUmFuZ2UiO29wcy5PZHRDdXJzb3IuUmVnaW9uU2VsZWN0aW9uPSJSZWdpb24iO29wcy5PZHRDdXJzb3Iuc2lnbmFsQ3Vyc29yVXBkYXRlZD0iY3Vyc29yVXBkYXRlZCI7CihmdW5jdGlvbigpe3ZhciBnPTA7b3BzLlN0ZXBzQ2FjaGU9ZnVuY3Rpb24oayxkLGIpe2Z1bmN0aW9uIGYoYSxjKXt2YXIgZD10aGlzO3RoaXMubm9kZUlkPWE7dGhpcy5zdGVwcz0tMTt0aGlzLm5vZGU9Yzt0aGlzLnByZXZpb3VzQm9va21hcms9dGhpcy5uZXh0Qm9va21hcms9bnVsbDt0aGlzLnNldEl0ZXJhdG9yUG9zaXRpb249ZnVuY3Rpb24oYSl7YS5zZXRQb3NpdGlvbkJlZm9yZUVsZW1lbnQoYyk7YihkLnN0ZXBzLGEpfX1mdW5jdGlvbiBuKGEsYyxkKXt2YXIgZT10aGlzO3RoaXMubm9kZUlkPWE7dGhpcy5zdGVwcz1jO3RoaXMubm9kZT1kO3RoaXMucHJldmlvdXNCb29rbWFyaz10aGlzLm5leHRCb29rbWFyaz1udWxsO3RoaXMuc2V0SXRlcmF0b3JQb3NpdGlvbj1mdW5jdGlvbihhKXthLnNldFVuZmlsdGVyZWRQb3NpdGlvbihkLDApO2IoZS5zdGVwcyxhKX19ZnVuY3Rpb24gcChhLGMpe3ZhciBiPSJbIithLm5vZGVJZDtjJiYoYis9IiA9PiAiK2Mubm9kZUlkKTtyZXR1cm4gYisKIl0ifWZ1bmN0aW9uIHIoKXtpZighMD09PW9wcy5TdGVwc0NhY2hlLkVOQUJMRV9DQUNIRV9WRVJJRklDQVRJT04pe2Zvcih2YXIgYT14LGMsYixkLGU9bmV3IGNvcmUuTG9vcFdhdGNoRG9nKDAsMUU1KSxoPXt9O2E7KXtlLmNoZWNrKCk7KGM9YS5wcmV2aW91c0Jvb2ttYXJrKT9ydW50aW1lLmFzc2VydChjLm5leHRCb29rbWFyaz09PWEsIkJyb2tlbiBib29rbWFyayBsaW5rIHRvIHByZXZpb3VzIEAiK3AoYyxhKSk6KHJ1bnRpbWUuYXNzZXJ0KGE9PT14LCJCcm9rZW4gYm9va21hcmsgbGluayBAIitwKGEpKSxydW50aW1lLmFzc2VydCh2b2lkIDA9PT16fHx4PT09eHx8eC5zdGVwczw9eiwiQmFzZSBwb2ludCBpcyBkYW1hZ2VkIEAiK3AoYSkpKTsoYj1hLm5leHRCb29rbWFyaykmJnJ1bnRpbWUuYXNzZXJ0KGIucHJldmlvdXNCb29rbWFyaz09PWEsIkJyb2tlbiBib29rbWFyayBsaW5rIHRvIG5leHQgQCIrcChhLGIpKTtpZih2b2lkIDA9PT16fHxhPT09eHx8YS5zdGVwczw9eilydW50aW1lLmFzc2VydCh5LmNvbnRhaW5zTm9kZShrLAphLm5vZGUpLCJEaXNjb25uZWN0ZWQgbm9kZSBpcyBiZWluZyByZXBvcnRlZCBhcyB1bmRhbWFnZWQgQCIrcChhKSksYyYmKGQ9YS5ub2RlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGMubm9kZSkscnVudGltZS5hc3NlcnQoMD09PWR8fDAhPT0oZCZ2KSwiQm9va21hcmsgb3JkZXIgd2l0aCBwcmV2aW91cyBkb2VzIG5vdCByZWZsZWN0IERPTSBvcmRlciBAIitwKGMsYSkpKSxiJiZ5LmNvbnRhaW5zTm9kZShrLGIubm9kZSkmJihkPWEubm9kZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihiLm5vZGUpLHJ1bnRpbWUuYXNzZXJ0KDA9PT1kfHwwIT09KGQmdyksIkJvb2ttYXJrIG9yZGVyIHdpdGggbmV4dCBkb2VzIG5vdCByZWZsZWN0IERPTSBvcmRlciBAIitwKGEsYikpKTthPWEubmV4dEJvb2ttYXJrfU9iamVjdC5rZXlzKG0pLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGM9bVthXTsodm9pZCAwPT09enx8YTw9eikmJnJ1bnRpbWUuYXNzZXJ0KGMuc3RlcHM8PWEsIkJvb2ttYXJrIHN0ZXAgb2YgIisKYy5zdGVwcysiIGV4Y2VlZHMgY2FjaGVkIHN0ZXAgbG9va3VwIGZvciAiK2ErIiBAIitwKGMpKTtydW50aW1lLmFzc2VydCghMT09PWguaGFzT3duUHJvcGVydHkoYy5ub2RlSWQpLCJCb29rbWFyayAiK3AoYykrIiBhcHBlYXJzIHR3aWNlIGluIGNhY2hlZCBzdGVwIGxvb2t1cCBhdCBzdGVwcyAiK2hbYy5ub2RlSWRdKyIgYW5kICIrYSk7aFtjLm5vZGVJZF09YX0pfX1mdW5jdGlvbiBxKGEpe3ZhciBjPSIiO2Eubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSYmKGM9YS5nZXRBdHRyaWJ1dGVOUygidXJuOndlYm9kZjpuYW1lczpzdGVwcyIsIm5vZGVJZCIpfHwiIik7cmV0dXJuIGN9ZnVuY3Rpb24gZShhKXt2YXIgYz1nLnRvU3RyaW5nKCk7YS5zZXRBdHRyaWJ1dGVOUygidXJuOndlYm9kZjpuYW1lczpzdGVwcyIsIm5vZGVJZCIsYyk7Zys9MTtyZXR1cm4gY31mdW5jdGlvbiBsKGEpe3ZhciBjLGIsZT1uZXcgY29yZS5Mb29wV2F0Y2hEb2coMCwxRTQpO3ZvaWQgMCE9PXomJmE+CnomJihhPXopO2ZvcihjPU1hdGguZmxvb3IoYS9kKSpkOyFiJiYwPD1jOyliPW1bY10sYy09ZDtmb3IoYj1ifHx4O2IubmV4dEJvb2ttYXJrJiZiLm5leHRCb29rbWFyay5zdGVwczw9YTspZS5jaGVjaygpLGI9Yi5uZXh0Qm9va21hcms7cnVudGltZS5hc3NlcnQoLTE9PT1hfHxiLnN0ZXBzPD1hLCJCb29rbWFyayBAIitwKGIpKyIgYXQgc3RlcCAiK2Iuc3RlcHMrIiBleGNlZWRzIHJlcXVlc3RlZCBzdGVwIG9mICIrYSk7cmV0dXJuIGJ9ZnVuY3Rpb24gYShhKXthLnByZXZpb3VzQm9va21hcmsmJihhLnByZXZpb3VzQm9va21hcmsubmV4dEJvb2ttYXJrPWEubmV4dEJvb2ttYXJrKTthLm5leHRCb29rbWFyayYmKGEubmV4dEJvb2ttYXJrLnByZXZpb3VzQm9va21hcms9YS5wcmV2aW91c0Jvb2ttYXJrKX1mdW5jdGlvbiBjKGEpe2Zvcih2YXIgYyxiPW51bGw7IWImJmEmJmEhPT1rOykoYz1xKGEpKSYmKGI9aFtjXSkmJmIubm9kZSE9PWEmJihydW50aW1lLmxvZygiQ2xvbmVkIG5vZGUgZGV0ZWN0ZWQuIENyZWF0aW5nIG5ldyBib29rbWFyayIpLApiPW51bGwsYS5yZW1vdmVBdHRyaWJ1dGVOUygidXJuOndlYm9kZjpuYW1lczpzdGVwcyIsIm5vZGVJZCIpKSxhPWEucGFyZW50Tm9kZTtyZXR1cm4gYn12YXIgbT17fSxoPXt9LHk9Y29yZS5Eb21VdGlscyx4LHosdz1Ob2RlLkRPQ1VNRU5UX1BPU0lUSU9OX0ZPTExPV0lORyx2PU5vZGUuRE9DVU1FTlRfUE9TSVRJT05fUFJFQ0VESU5HO3RoaXMudXBkYXRlQm9va21hcms9ZnVuY3Rpb24oYyxiKXt2YXIgZyxuPU1hdGguY2VpbChjL2QpKmQscCx2LEU7aWYodm9pZCAwIT09eiYmejxjKXtwPWwoeik7Zm9yKHY9cC5uZXh0Qm9va21hcms7diYmdi5zdGVwczw9YzspZz12Lm5leHRCb29rbWFyayxFPU1hdGguY2VpbCh2LnN0ZXBzL2QpKmQsbVtFXT09PXYmJmRlbGV0ZSBtW0VdLHkuY29udGFpbnNOb2RlKGssdi5ub2RlKT92LnN0ZXBzPWMrMTooYSh2KSxkZWxldGUgaFt2Lm5vZGVJZF0pLHY9Zzt6PWN9ZWxzZSBwPWwoYyk7dj1xKGIpfHxlKGIpO2c9aFt2XTtnP2cubm9kZSE9PWImJihydW50aW1lLmxvZygiQ2xvbmVkIG5vZGUgZGV0ZWN0ZWQuIENyZWF0aW5nIG5ldyBib29rbWFyayIpLAp2PWUoYiksZz1oW3ZdPW5ldyBmKHYsYikpOmc9aFt2XT1uZXcgZih2LGIpO3Y9Zzt2LnN0ZXBzIT09YyYmKGc9TWF0aC5jZWlsKHYuc3RlcHMvZCkqZCxnIT09biYmbVtnXT09PXYmJmRlbGV0ZSBtW2ddLHYuc3RlcHM9Yyk7aWYocCE9PXYmJnAubmV4dEJvb2ttYXJrIT09dil7aWYocC5zdGVwcz09PXYuc3RlcHMpZm9yKDswIT09KHYubm9kZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihwLm5vZGUpJncpJiZwIT09eDspcD1wLnByZXZpb3VzQm9va21hcms7cCE9PXYmJnAubmV4dEJvb2ttYXJrIT09diYmKGEodiksZz1wLm5leHRCb29rbWFyayx2Lm5leHRCb29rbWFyaz1wLm5leHRCb29rbWFyayx2LnByZXZpb3VzQm9va21hcms9cCxwLm5leHRCb29rbWFyaz12LGcmJihnLnByZXZpb3VzQm9va21hcms9dikpfXA9bVtuXTtpZighcHx8di5zdGVwcz5wLnN0ZXBzKW1bbl09djtyKCl9O3RoaXMuc2V0VG9DbG9zZXN0U3RlcD1mdW5jdGlvbihhLGMpe3ZhciBiO3IoKTtiPWwoYSk7Yi5zZXRJdGVyYXRvclBvc2l0aW9uKGMpOwpyZXR1cm4gYi5zdGVwc307dGhpcy5zZXRUb0Nsb3Nlc3REb21Qb2ludD1mdW5jdGlvbihhLGIsZCl7dmFyIGUsaDtyKCk7aWYoYT09PWsmJjA9PT1iKWU9eDtlbHNlIGlmKGE9PT1rJiZiPT09ay5jaGlsZE5vZGVzLmxlbmd0aClmb3IoaCBpbiBlPXgsbSltLmhhc093blByb3BlcnR5KGgpJiYoYT1tW2hdLGEuc3RlcHM+ZS5zdGVwcyYmKGU9YSkpO2Vsc2UgaWYoZT1jKGEuY2hpbGROb2Rlcy5pdGVtKGIpfHxhKSwhZSlmb3IoZC5zZXRVbmZpbHRlcmVkUG9zaXRpb24oYSxiKTshZSYmZC5wcmV2aW91c05vZGUoKTspZT1jKGQuZ2V0Q3VycmVudE5vZGUoKSk7ZT1lfHx4O3ZvaWQgMCE9PXomJmUuc3RlcHM+eiYmKGU9bCh6KSk7ZS5zZXRJdGVyYXRvclBvc2l0aW9uKGQpO3JldHVybiBlLnN0ZXBzfTt0aGlzLmRhbWFnZUNhY2hlQWZ0ZXJTdGVwPWZ1bmN0aW9uKGEpezA+YSYmKGE9LTEpO3ZvaWQgMD09PXo/ej1hOmE8eiYmKHo9YSk7cigpfTsoZnVuY3Rpb24oKXt2YXIgYT1xKGspfHwKZShrKTt4PW5ldyBuKGEsMCxrKX0pKCl9O29wcy5TdGVwc0NhY2hlLkVOQUJMRV9DQUNIRV9WRVJJRklDQVRJT049ITE7b3BzLlN0ZXBzQ2FjaGUuQm9va21hcms9ZnVuY3Rpb24oKXt9O29wcy5TdGVwc0NhY2hlLkJvb2ttYXJrLnByb3RvdHlwZS5zZXRJdGVyYXRvclBvc2l0aW9uPWZ1bmN0aW9uKGcpe319KSgpOwooZnVuY3Rpb24oKXtvcHMuT2R0U3RlcHNUcmFuc2xhdG9yPWZ1bmN0aW9uKGcsayxkLGIpe2Z1bmN0aW9uIGYoYSxiLGQpe3ZhciBlPWIuZ2V0Q3VycmVudE5vZGUoKTtiLmlzQmVmb3JlTm9kZSgpJiZyLmlzUGFyYWdyYXBoKGUpJiYoZHx8KGErPTEpLHAudXBkYXRlQm9va21hcmsoYSxlKSl9ZnVuY3Rpb24gbihjLGIpe2lmKCFifHxkLmFjY2VwdFBvc2l0aW9uKGMpPT09ZSlyZXR1cm4hMDtmb3IoO2MucHJldmlvdXNQb3NpdGlvbigpOylpZihkLmFjY2VwdFBvc2l0aW9uKGMpPT09ZSl7aWYoYihsLGMuY29udGFpbmVyKCksYy51bmZpbHRlcmVkRG9tT2Zmc2V0KCkpKXJldHVybiEwO2JyZWFrfWZvcig7Yy5uZXh0UG9zaXRpb24oKTspaWYoZC5hY2NlcHRQb3NpdGlvbihjKT09PWUpe2lmKGIoYSxjLmNvbnRhaW5lcigpLGMudW5maWx0ZXJlZERvbU9mZnNldCgpKSlyZXR1cm4hMDticmVha31yZXR1cm4hMX12YXIgcCxyPW9kZi5PZGZVdGlscyxxPWNvcmUuRG9tVXRpbHMsZT1jb3JlLlBvc2l0aW9uRmlsdGVyLkZpbHRlclJlc3VsdC5GSUxURVJfQUNDRVBULApsPWNvcmUuU3RlcERpcmVjdGlvbi5QUkVWSU9VUyxhPWNvcmUuU3RlcERpcmVjdGlvbi5ORVhUO3RoaXMuY29udmVydFN0ZXBzVG9Eb21Qb2ludD1mdW5jdGlvbihhKXt2YXIgYixoO2lmKGlzTmFOKGEpKXRocm93IG5ldyBUeXBlRXJyb3IoIlJlcXVlc3RlZCBzdGVwcyBpcyBub3QgbnVtZXJpYyAoIithKyIpIik7aWYoMD5hKXRocm93IG5ldyBSYW5nZUVycm9yKCJSZXF1ZXN0ZWQgc3RlcHMgaXMgbmVnYXRpdmUgKCIrYSsiKSIpO2ZvcihiPXAuc2V0VG9DbG9zZXN0U3RlcChhLGspO2I8YSYmay5uZXh0UG9zaXRpb24oKTspKGg9ZC5hY2NlcHRQb3NpdGlvbihrKT09PWUpJiYoYis9MSksZihiLGssaCk7aWYoYiE9PWEpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlJlcXVlc3RlZCBzdGVwcyAoIithKyIpIGV4Y2VlZHMgYXZhaWxhYmxlIHN0ZXBzICgiK2IrIikiKTtyZXR1cm57bm9kZTprLmNvbnRhaW5lcigpLG9mZnNldDprLnVuZmlsdGVyZWREb21PZmZzZXQoKX19O3RoaXMuY29udmVydERvbVBvaW50VG9TdGVwcz0KZnVuY3Rpb24oYSxiLGgpe3ZhciBsO3EuY29udGFpbnNOb2RlKGcsYSl8fChiPTA+cS5jb21wYXJlUG9pbnRzKGcsMCxhLGIpLGE9ZyxiPWI/MDpnLmNoaWxkTm9kZXMubGVuZ3RoKTtrLnNldFVuZmlsdGVyZWRQb3NpdGlvbihhLGIpO24oayxoKXx8ay5zZXRVbmZpbHRlcmVkUG9zaXRpb24oYSxiKTtoPWsuY29udGFpbmVyKCk7Yj1rLnVuZmlsdGVyZWREb21PZmZzZXQoKTthPXAuc2V0VG9DbG9zZXN0RG9tUG9pbnQoaCxiLGspO2lmKDA+cS5jb21wYXJlUG9pbnRzKGsuY29udGFpbmVyKCksay51bmZpbHRlcmVkRG9tT2Zmc2V0KCksaCxiKSlyZXR1cm4gMDxhP2EtMTphO2Zvcig7KGsuY29udGFpbmVyKCkhPT1ofHxrLnVuZmlsdGVyZWREb21PZmZzZXQoKSE9PWIpJiZrLm5leHRQb3NpdGlvbigpOykobD1kLmFjY2VwdFBvc2l0aW9uKGspPT09ZSkmJihhKz0xKSxmKGEsayxsKTtyZXR1cm4gYSswfTt0aGlzLnByaW1lPWZ1bmN0aW9uKCl7dmFyIGEsYjtmb3IoYT1wLnNldFRvQ2xvc2VzdFN0ZXAoMCwKayk7ay5uZXh0UG9zaXRpb24oKTspKGI9ZC5hY2NlcHRQb3NpdGlvbihrKT09PWUpJiYoYSs9MSksZihhLGssYil9O3RoaXMuaGFuZGxlU3RlcHNJbnNlcnRlZD1mdW5jdGlvbihhKXtwLmRhbWFnZUNhY2hlQWZ0ZXJTdGVwKGEucG9zaXRpb24pfTt0aGlzLmhhbmRsZVN0ZXBzUmVtb3ZlZD1mdW5jdGlvbihhKXtwLmRhbWFnZUNhY2hlQWZ0ZXJTdGVwKGEucG9zaXRpb24tMSl9O3A9bmV3IG9wcy5TdGVwc0NhY2hlKGcsYixmdW5jdGlvbihhLGIpe2Rve2lmKGQuYWNjZXB0UG9zaXRpb24oYik9PT1lKXtmKGEsYiwhMCk7YnJlYWt9ZihhLTEsYiwhMSl9d2hpbGUoYi5uZXh0UG9zaXRpb24oKSl9KX19KSgpO29wcy5PcGVyYXRpb249ZnVuY3Rpb24oKXt9O29wcy5PcGVyYXRpb24ucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oZyl7fTtvcHMuT3BlcmF0aW9uLnByb3RvdHlwZS5leGVjdXRlPWZ1bmN0aW9uKGcpe307b3BzLk9wZXJhdGlvbi5wcm90b3R5cGUuc3BlYz1mdW5jdGlvbigpe307Cm9wcy5UZXh0UG9zaXRpb25GaWx0ZXI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBnKGIsZCl7Zm9yKDtiJiZkKGIpIT09bjspYj1iLnByZXZpb3VzU2libGluZztyZXR1cm4gYn1mdW5jdGlvbiBrKGIsZixlLGwpe3ZhciBhO2lmKGYpe2lmKGQuaXNJbmxpbmVSb290KGYpJiZkLmlzR3JvdXBpbmdFbGVtZW50KGUpKXJldHVybiBwO2w9ZC5sb29rTGVmdEZvckNoYXJhY3RlcihmKTtpZigxPT09bHx8Mj09PWwmJihkLnNjYW5SaWdodEZvckFueUNoYXJhY3RlcihlKXx8ZC5zY2FuUmlnaHRGb3JBbnlDaGFyYWN0ZXIoZC5uZXh0Tm9kZShiKSkpKXJldHVybiBufWVsc2UgaWYoZC5pc0dyb3VwaW5nRWxlbWVudChiKSYmZC5pc0lubGluZVJvb3QoZyhiLnByZXZpb3VzU2libGluZyxsKSkpcmV0dXJuIG47bD1udWxsPT09ZiYmZC5pc1BhcmFncmFwaChiKTthPWQubG9va1JpZ2h0Rm9yQ2hhcmFjdGVyKGUpO2lmKGwpcmV0dXJuIGE/bjpkLnNjYW5SaWdodEZvckFueUNoYXJhY3RlcihlKT9wOm47aWYoIWEpcmV0dXJuIHA7CmY9Znx8ZC5wcmV2aW91c05vZGUoYik7cmV0dXJuIGQuc2NhbkxlZnRGb3JBbnlDaGFyYWN0ZXIoZik/cDpufXZhciBkPW9kZi5PZGZVdGlscyxiPU5vZGUuRUxFTUVOVF9OT0RFLGY9Tm9kZS5URVhUX05PREUsbj1jb3JlLlBvc2l0aW9uRmlsdGVyLkZpbHRlclJlc3VsdC5GSUxURVJfQUNDRVBULHA9Y29yZS5Qb3NpdGlvbkZpbHRlci5GaWx0ZXJSZXN1bHQuRklMVEVSX1JFSkVDVDt0aGlzLmFjY2VwdFBvc2l0aW9uPWZ1bmN0aW9uKGcpe3ZhciBxPWcuY29udGFpbmVyKCksZT1xLm5vZGVUeXBlLGwsYSxjO2lmKGUhPT1iJiZlIT09ZilyZXR1cm4gcDtpZihlPT09Zil7ZT1nLnVuZmlsdGVyZWREb21PZmZzZXQoKTtsPXEuZGF0YTtydW50aW1lLmFzc2VydChlIT09bC5sZW5ndGgsIlVuZXhwZWN0ZWQgb2Zmc2V0LiIpO2lmKDA8ZSl7Zz1sW2UtMV07aWYoIWQuaXNPREZXaGl0ZXNwYWNlKGcpKXJldHVybiBuO2lmKDE8ZSlpZihnPWxbZS0yXSwhZC5pc09ERldoaXRlc3BhY2UoZykpYz0KbjtlbHNle2lmKCFkLmlzT0RGV2hpdGVzcGFjZShsLnN1YnN0cigwLGUpKSlyZXR1cm4gcH1lbHNlIGE9ZC5wcmV2aW91c05vZGUocSksZC5zY2FuTGVmdEZvck5vblNwYWNlKGEpJiYoYz1uKTtpZihjPT09bilyZXR1cm4gZC5pc1RyYWlsaW5nV2hpdGVzcGFjZShxLGUpP3A6bjtnPWxbZV07cmV0dXJuIGQuaXNPREZXaGl0ZXNwYWNlKGcpP3A6ZC5zY2FuTGVmdEZvckFueUNoYXJhY3RlcihkLnByZXZpb3VzTm9kZShxKSk/cDpufWE9Zy5sZWZ0Tm9kZSgpO2M9cTtxPXEucGFyZW50Tm9kZTtjPWsocSxhLGMsZy5nZXROb2RlRmlsdGVyKCkpfWVsc2UgZC5pc0dyb3VwaW5nRWxlbWVudChxKT8oYT1nLmxlZnROb2RlKCksYz1nLnJpZ2h0Tm9kZSgpLGM9ayhxLGEsYyxnLmdldE5vZGVGaWx0ZXIoKSkpOmM9cDtyZXR1cm4gY319OwpmdW5jdGlvbiBSb290RmlsdGVyKGcsayxkKXt2YXIgYj1jb3JlLlBvc2l0aW9uRmlsdGVyLkZpbHRlclJlc3VsdC5GSUxURVJfQUNDRVBULGY9Y29yZS5Qb3NpdGlvbkZpbHRlci5GaWx0ZXJSZXN1bHQuRklMVEVSX1JFSkVDVDt0aGlzLmFjY2VwdFBvc2l0aW9uPWZ1bmN0aW9uKG4pe249bi5jb250YWluZXIoKTt2YXIgcDtwPSJzdHJpbmciPT09dHlwZW9mIGc/a1tnXS5nZXROb2RlKCk6ZztyZXR1cm4gZChuKT09PWQocCk/YjpmfX0Kb3BzLk9kdERvY3VtZW50PWZ1bmN0aW9uKGcpe2Z1bmN0aW9uIGsoYSl7cmV0dXJuIG5ldyBjb3JlLlBvc2l0aW9uSXRlcmF0b3IoYSxBLEwsITEpfWZ1bmN0aW9uIGQoKXt2YXIgYT1nLm9kZkNvbnRhaW5lcigpLmdldENvbnRlbnRFbGVtZW50KCksYz1hJiZhLmxvY2FsTmFtZTtydW50aW1lLmFzc2VydCgidGV4dCI9PT1jLCJVbnN1cHBvcnRlZCBjb250ZW50IGVsZW1lbnQgdHlwZSAnIitjKyInIGZvciBPZHREb2N1bWVudCIpO3JldHVybiBhfWZ1bmN0aW9uIGIoKXtyZXR1cm4gYS5nZXREb2N1bWVudEVsZW1lbnQoKS5vd25lckRvY3VtZW50fWZ1bmN0aW9uIGYoYSl7Zm9yKDthJiYhKGEubmFtZXNwYWNlVVJJPT09b2RmLk5hbWVzcGFjZXMub2ZmaWNlbnMmJiJ0ZXh0Ij09PWEubG9jYWxOYW1lfHxhLm5hbWVzcGFjZVVSST09PW9kZi5OYW1lc3BhY2VzLm9mZmljZW5zJiYiYW5ub3RhdGlvbiI9PT1hLmxvY2FsTmFtZSk7KWE9YS5wYXJlbnROb2RlO3JldHVybiBhfWZ1bmN0aW9uIG4oYSwKYyxiLGQpe2Q9ayhkKTt2YXIgZTsxPT09Yi5sZW5ndGg/ZT1iWzBdOihlPW5ldyBjb3JlLlBvc2l0aW9uRmlsdGVyQ2hhaW4sYi5mb3JFYWNoKGUuYWRkRmlsdGVyKSk7Yj1uZXcgY29yZS5TdGVwSXRlcmF0b3IoZSxkKTtiLnNldFBvc2l0aW9uKGEsYyk7cmV0dXJuIGJ9ZnVuY3Rpb24gcChhKXt2YXIgYz1rKGQoKSk7YT11LmNvbnZlcnRTdGVwc1RvRG9tUG9pbnQoYSk7Yy5zZXRVbmZpbHRlcmVkUG9zaXRpb24oYS5ub2RlLGEub2Zmc2V0KTtyZXR1cm4gY31mdW5jdGlvbiByKGEpe3JldHVybiBhPT09d31mdW5jdGlvbiBxKGMpe3ZhciBiPWMuc3BlYygpLGQ9Yi5tZW1iZXJpZCxlPShuZXcgRGF0ZShiLnRpbWVzdGFtcCkpLnRvSVNPU3RyaW5nKCksYj1nLm9kZkNvbnRhaW5lcigpO2MuaXNFZGl0JiYoZD1hLmdldE1lbWJlcihkKS5nZXRQcm9wZXJ0aWVzKCkuZnVsbE5hbWUsYi5zZXRNZXRhZGF0YSh7ImRjOmNyZWF0b3IiOmQsImRjOmRhdGUiOmV9LG51bGwpLGQ9e3NldFByb3BlcnRpZXM6eyJkYzpjcmVhdG9yIjpkLAoiZGM6ZGF0ZSI6ZX0scmVtb3ZlZFByb3BlcnRpZXM6W119LHR8fChkLnNldFByb3BlcnRpZXNbIm1ldGE6ZWRpdGluZy1jeWNsZXMiXT1iLmluY3JlbWVudEVkaXRpbmdDeWNsZXMoKSxiLnNldE1ldGFkYXRhKG51bGwsWyJtZXRhOmVkaXRpbmctZHVyYXRpb24iLCJtZXRhOmRvY3VtZW50LXN0YXRpc3RpYyJdKSksdD1jLGEuZW1pdChvcHMuT2R0RG9jdW1lbnQuc2lnbmFsTWV0YWRhdGFVcGRhdGVkLGQpKX1mdW5jdGlvbiBlKGEpe3ZhciBiLGQ9W10sZSxmPTI7cnVudGltZS5hc3NlcnQoYS5pc1N0ZXAoKSwicG9zaXRpb25JdGVyYXRvciBpcyBub3QgYXQgYSBzdGVwIik7ZG97aWYoYj1jLmdldENvbnRlbnRCb3VuZHMoYSkpaWYoYj1iLmNvbnRhaW5lcixtLmlzRG93bmdyYWRhYmxlU3BhY2VFbGVtZW50KGIpKXtmb3IoZT1iLmxhc3RDaGlsZDtiLmZpcnN0Q2hpbGQ7KWQucHVzaChiLmZpcnN0Q2hpbGQpLGIucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYi5maXJzdENoaWxkLGIpO2IucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChiKTsKYS5zZXRQb3NpdGlvbihlLGUubm9kZVR5cGU9PT1Ob2RlLlRFWFRfTk9ERT9lLmxlbmd0aDplLmNoaWxkTm9kZXMubGVuZ3RoKTthLnJvdW5kVG9QcmV2aW91c1N0ZXAoKX0tLWZ9d2hpbGUoMDxmJiZhLm5leHRTdGVwKCkpO2QuZm9yRWFjaChoLm5vcm1hbGl6ZVRleHROb2Rlcyl9ZnVuY3Rpb24gbChhLGMsYil7YT1hLmNoaWxkTm9kZXMuaXRlbShjKXx8YTtyZXR1cm4oYT1tLmdldFBhcmFncmFwaEVsZW1lbnQoYSkpJiZoLmNvbnRhaW5zTm9kZShiLGEpP2E6Yn12YXIgYT10aGlzLGMsbT1vZGYuT2RmVXRpbHMsaD1jb3JlLkRvbVV0aWxzLHk9e30seD17fSx6PW5ldyBjb3JlLkV2ZW50Tm90aWZpZXIoW29wcy5Eb2N1bWVudC5zaWduYWxNZW1iZXJBZGRlZCxvcHMuRG9jdW1lbnQuc2lnbmFsTWVtYmVyVXBkYXRlZCxvcHMuRG9jdW1lbnQuc2lnbmFsTWVtYmVyUmVtb3ZlZCxvcHMuRG9jdW1lbnQuc2lnbmFsQ3Vyc29yQWRkZWQsb3BzLkRvY3VtZW50LnNpZ25hbEN1cnNvclJlbW92ZWQsCm9wcy5Eb2N1bWVudC5zaWduYWxDdXJzb3JNb3ZlZCxvcHMuT2R0RG9jdW1lbnQuc2lnbmFsUGFyYWdyYXBoQ2hhbmdlZCxvcHMuT2R0RG9jdW1lbnQuc2lnbmFsUGFyYWdyYXBoU3R5bGVNb2RpZmllZCxvcHMuT2R0RG9jdW1lbnQuc2lnbmFsQ29tbW9uU3R5bGVDcmVhdGVkLG9wcy5PZHREb2N1bWVudC5zaWduYWxDb21tb25TdHlsZURlbGV0ZWQsb3BzLk9kdERvY3VtZW50LnNpZ25hbFRhYmxlQWRkZWQsb3BzLk9kdERvY3VtZW50LnNpZ25hbE9wZXJhdGlvblN0YXJ0LG9wcy5PZHREb2N1bWVudC5zaWduYWxPcGVyYXRpb25FbmQsb3BzLk9kdERvY3VtZW50LnNpZ25hbFByb2Nlc3NpbmdCYXRjaFN0YXJ0LG9wcy5PZHREb2N1bWVudC5zaWduYWxQcm9jZXNzaW5nQmF0Y2hFbmQsb3BzLk9kdERvY3VtZW50LnNpZ25hbFVuZG9TdGFja0NoYW5nZWQsb3BzLk9kdERvY3VtZW50LnNpZ25hbFN0ZXBzSW5zZXJ0ZWQsb3BzLk9kdERvY3VtZW50LnNpZ25hbFN0ZXBzUmVtb3ZlZCxvcHMuT2R0RG9jdW1lbnQuc2lnbmFsTWV0YWRhdGFVcGRhdGVkLApvcHMuT2R0RG9jdW1lbnQuc2lnbmFsQW5ub3RhdGlvbkFkZGVkXSksdz1jb3JlLlN0ZXBEaXJlY3Rpb24uTkVYVCx2LHUsdCxBPU5vZGVGaWx0ZXIuU0hPV19BTEwsST1uZXcgZ3VpLkJsYWNrbGlzdE5hbWVzcGFjZU5vZGVGaWx0ZXIoWyJ1cm46d2Vib2RmOm5hbWVzOmN1cnNvciIsInVybjp3ZWJvZGY6bmFtZXM6ZWRpdGluZm8iXSksSz1uZXcgZ3VpLk9kZlRleHRCb2R5Tm9kZUZpbHRlcixMPW5ldyBjb3JlLk5vZGVGaWx0ZXJDaGFpbihbSSxLXSk7dGhpcy5jcmVhdGVQb3NpdGlvbkl0ZXJhdG9yPWs7dGhpcy5nZXREb2N1bWVudEVsZW1lbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gZy5vZGZDb250YWluZXIoKS5yb290RWxlbWVudH07dGhpcy5jbG9uZURvY3VtZW50RWxlbWVudD1mdW5jdGlvbigpe3ZhciBjPWEuZ2V0RG9jdW1lbnRFbGVtZW50KCksYj1nLmdldEFubm90YXRpb25WaWV3TWFuYWdlcigpO2ImJmIuZm9yZ2V0QW5ub3RhdGlvbnMoKTtjPWMuY2xvbmVOb2RlKCEwKTtnLnJlZnJlc2hBbm5vdGF0aW9ucygpOwphLmZpeEN1cnNvclBvc2l0aW9ucygpO3JldHVybiBjfTt0aGlzLnNldERvY3VtZW50RWxlbWVudD1mdW5jdGlvbihhKXt2YXIgYz1nLm9kZkNvbnRhaW5lcigpO3oudW5zdWJzY3JpYmUob3BzLk9kdERvY3VtZW50LnNpZ25hbFN0ZXBzSW5zZXJ0ZWQsdS5oYW5kbGVTdGVwc0luc2VydGVkKTt6LnVuc3Vic2NyaWJlKG9wcy5PZHREb2N1bWVudC5zaWduYWxTdGVwc1JlbW92ZWQsdS5oYW5kbGVTdGVwc1JlbW92ZWQpO2Muc2V0Um9vdEVsZW1lbnQoYSk7Zy5zZXRPZGZDb250YWluZXIoYywhMCk7Zy5yZWZyZXNoQ1NTKCk7YT1kKCk7dT1uZXcgb3BzLk9kdFN0ZXBzVHJhbnNsYXRvcihhLGsoYSksdiw1MDApO3ouc3Vic2NyaWJlKG9wcy5PZHREb2N1bWVudC5zaWduYWxTdGVwc0luc2VydGVkLHUuaGFuZGxlU3RlcHNJbnNlcnRlZCk7ei5zdWJzY3JpYmUob3BzLk9kdERvY3VtZW50LnNpZ25hbFN0ZXBzUmVtb3ZlZCx1LmhhbmRsZVN0ZXBzUmVtb3ZlZCl9O3RoaXMuZ2V0RE9NRG9jdW1lbnQ9CmI7dGhpcy5nZXRSb290RWxlbWVudD1mO3RoaXMuY3JlYXRlU3RlcEl0ZXJhdG9yPW47dGhpcy5nZXRJdGVyYXRvckF0UG9zaXRpb249cDt0aGlzLmNvbnZlcnRDdXJzb3JTdGVwVG9Eb21Qb2ludD1mdW5jdGlvbihhKXtyZXR1cm4gdS5jb252ZXJ0U3RlcHNUb0RvbVBvaW50KGEpfTt0aGlzLmNvbnZlcnREb21Qb2ludFRvQ3Vyc29yU3RlcD1mdW5jdGlvbihhLGMsYil7dmFyIGQ7Yj09PXcmJihkPXIpO3JldHVybiB1LmNvbnZlcnREb21Qb2ludFRvU3RlcHMoYSxjLGQpfTt0aGlzLmNvbnZlcnREb21Ub0N1cnNvclJhbmdlPWZ1bmN0aW9uKGEpe3ZhciBjO2M9dS5jb252ZXJ0RG9tUG9pbnRUb1N0ZXBzKGEuYW5jaG9yTm9kZSxhLmFuY2hvck9mZnNldCk7YT1hLmFuY2hvck5vZGU9PT1hLmZvY3VzTm9kZSYmYS5hbmNob3JPZmZzZXQ9PT1hLmZvY3VzT2Zmc2V0P2M6dS5jb252ZXJ0RG9tUG9pbnRUb1N0ZXBzKGEuZm9jdXNOb2RlLGEuZm9jdXNPZmZzZXQpO3JldHVybntwb3NpdGlvbjpjLApsZW5ndGg6YS1jfX07dGhpcy5jb252ZXJ0Q3Vyc29yVG9Eb21SYW5nZT1mdW5jdGlvbihhLGMpe3ZhciBkPWIoKS5jcmVhdGVSYW5nZSgpLGUsaDtlPXUuY29udmVydFN0ZXBzVG9Eb21Qb2ludChhKTtjPyhoPXUuY29udmVydFN0ZXBzVG9Eb21Qb2ludChhK2MpLDA8Yz8oZC5zZXRTdGFydChlLm5vZGUsZS5vZmZzZXQpLGQuc2V0RW5kKGgubm9kZSxoLm9mZnNldCkpOihkLnNldFN0YXJ0KGgubm9kZSxoLm9mZnNldCksZC5zZXRFbmQoZS5ub2RlLGUub2Zmc2V0KSkpOmQuc2V0U3RhcnQoZS5ub2RlLGUub2Zmc2V0KTtyZXR1cm4gZH07dGhpcy51cGdyYWRlV2hpdGVzcGFjZXNBdFBvc2l0aW9uPWZ1bmN0aW9uKGEpe3ZhciBiPXAoYSksYj1uZXcgY29yZS5TdGVwSXRlcmF0b3IodixiKSxkLGU9MjtydW50aW1lLmFzc2VydChiLmlzU3RlcCgpLCJwb3NpdGlvbkl0ZXJhdG9yIGlzIG5vdCBhdCBhIHN0ZXAgKHJlcXVlc3RlZCBzdGVwOiAiK2ErIikiKTtkb3tpZihkPWMuZ2V0Q29udGVudEJvdW5kcyhiKSlpZihhPQpkLmNvbnRhaW5lcixkPWQuc3RhcnRPZmZzZXQsYS5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFJiZtLmlzU2lnbmlmaWNhbnRXaGl0ZXNwYWNlKGEsZCkpe3J1bnRpbWUuYXNzZXJ0KCIgIj09PWEuZGF0YVtkXSwidXBncmFkZVdoaXRlc3BhY2VUb0VsZW1lbnQ6IHRleHROb2RlLmRhdGFbb2Zmc2V0XSBzaG91bGQgYmUgYSBsaXRlcmFsIHNwYWNlIik7dmFyIGg9YS5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhvZGYuTmFtZXNwYWNlcy50ZXh0bnMsInRleHQ6cyIpLGY9YS5wYXJlbnROb2RlLGw9YTtoLmFwcGVuZENoaWxkKGEub3duZXJEb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiICIpKTsxPT09YS5sZW5ndGg/Zi5yZXBsYWNlQ2hpbGQoaCxhKTooYS5kZWxldGVEYXRhKGQsMSksMDxkJiYoZDxhLmxlbmd0aCYmYS5zcGxpdFRleHQoZCksbD1hLm5leHRTaWJsaW5nKSxmLmluc2VydEJlZm9yZShoLGwpKTthPWg7Yi5zZXRQb3NpdGlvbihhLGEuY2hpbGROb2Rlcy5sZW5ndGgpOwpiLnJvdW5kVG9QcmV2aW91c1N0ZXAoKX0tLWV9d2hpbGUoMDxlJiZiLm5leHRTdGVwKCkpfTt0aGlzLmRvd25ncmFkZVdoaXRlc3BhY2VzPWU7dGhpcy5kb3duZ3JhZGVXaGl0ZXNwYWNlc0F0UG9zaXRpb249ZnVuY3Rpb24oYSl7YT1wKGEpO2E9bmV3IGNvcmUuU3RlcEl0ZXJhdG9yKHYsYSk7ZShhKX07dGhpcy5nZXRUZXh0Tm9kZUF0U3RlcD1mdW5jdGlvbihjLGQpe3ZhciBlPXAoYyksaD1lLmNvbnRhaW5lcigpLG0sZj0wLGw9bnVsbDtoLm5vZGVUeXBlPT09Tm9kZS5URVhUX05PREU/KG09aCxmPWUudW5maWx0ZXJlZERvbU9mZnNldCgpLDA8bS5sZW5ndGgmJigwPGYmJihtPW0uc3BsaXRUZXh0KGYpKSxtLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGIoKS5jcmVhdGVUZXh0Tm9kZSgiIiksbSksbT1tLnByZXZpb3VzU2libGluZyxmPTApKToobT1iKCkuY3JlYXRlVGV4dE5vZGUoIiIpLGY9MCxoLmluc2VydEJlZm9yZShtLGUucmlnaHROb2RlKCkpKTtpZihkKXtpZih5W2RdJiYKYS5nZXRDdXJzb3JQb3NpdGlvbihkKT09PWMpe2ZvcihsPXlbZF0uZ2V0Tm9kZSgpO2wubmV4dFNpYmxpbmcmJiJjdXJzb3IiPT09bC5uZXh0U2libGluZy5sb2NhbE5hbWU7KWwucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobC5uZXh0U2libGluZyxsKTswPG0ubGVuZ3RoJiZtLm5leHRTaWJsaW5nIT09bCYmKG09YigpLmNyZWF0ZVRleHROb2RlKCIiKSxmPTApO2wucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobSxsKX19ZWxzZSBmb3IoO20ubmV4dFNpYmxpbmcmJiJjdXJzb3IiPT09bS5uZXh0U2libGluZy5sb2NhbE5hbWU7KW0ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobS5uZXh0U2libGluZyxtKTtmb3IoO20ucHJldmlvdXNTaWJsaW5nJiZtLnByZXZpb3VzU2libGluZy5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFOyllPW0ucHJldmlvdXNTaWJsaW5nLGUuYXBwZW5kRGF0YShtLmRhdGEpLGY9ZS5sZW5ndGgsbT1lLG0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChtLm5leHRTaWJsaW5nKTsKZm9yKDttLm5leHRTaWJsaW5nJiZtLm5leHRTaWJsaW5nLm5vZGVUeXBlPT09Tm9kZS5URVhUX05PREU7KWU9bS5uZXh0U2libGluZyxtLmFwcGVuZERhdGEoZS5kYXRhKSxtLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZSk7cmV0dXJue3RleHROb2RlOm0sb2Zmc2V0OmZ9fTt0aGlzLmZpeEN1cnNvclBvc2l0aW9ucz1mdW5jdGlvbigpe09iamVjdC5rZXlzKHkpLmZvckVhY2goZnVuY3Rpb24oYyl7dmFyIGI9eVtjXSxkPWYoYi5nZXROb2RlKCkpLGU9YS5jcmVhdGVSb290RmlsdGVyKGQpLGgsbSxnLGs9ITE7Zz1iLmdldFNlbGVjdGVkUmFuZ2UoKTtoPWwoZy5zdGFydENvbnRhaW5lcixnLnN0YXJ0T2Zmc2V0LGQpO209bihnLnN0YXJ0Q29udGFpbmVyLGcuc3RhcnRPZmZzZXQsW3YsZV0saCk7Zy5jb2xsYXBzZWQ/ZD1tOihoPWwoZy5lbmRDb250YWluZXIsZy5lbmRPZmZzZXQsZCksZD1uKGcuZW5kQ29udGFpbmVyLGcuZW5kT2Zmc2V0LFt2LGVdLGgpKTttLmlzU3RlcCgpJiZkLmlzU3RlcCgpPwptLmNvbnRhaW5lcigpIT09ZC5jb250YWluZXIoKXx8bS5vZmZzZXQoKSE9PWQub2Zmc2V0KCl8fGcuY29sbGFwc2VkJiZiLmdldEFuY2hvck5vZGUoKT09PWIuZ2V0Tm9kZSgpfHwoaz0hMCxnLnNldFN0YXJ0KG0uY29udGFpbmVyKCksbS5vZmZzZXQoKSksZy5jb2xsYXBzZSghMCkpOihrPSEwLHJ1bnRpbWUuYXNzZXJ0KG0ucm91bmRUb0Nsb3Nlc3RTdGVwKCksIk5vIHdhbGthYmxlIHN0ZXAgZm91bmQgZm9yIGN1cnNvciBvd25lZCBieSAiK2MpLGcuc2V0U3RhcnQobS5jb250YWluZXIoKSxtLm9mZnNldCgpKSxydW50aW1lLmFzc2VydChkLnJvdW5kVG9DbG9zZXN0U3RlcCgpLCJObyB3YWxrYWJsZSBzdGVwIGZvdW5kIGZvciBjdXJzb3Igb3duZWQgYnkgIitjKSxnLnNldEVuZChkLmNvbnRhaW5lcigpLGQub2Zmc2V0KCkpKTtrJiYoYi5zZXRTZWxlY3RlZFJhbmdlKGcsYi5oYXNGb3J3YXJkU2VsZWN0aW9uKCkpLGEuZW1pdChvcHMuRG9jdW1lbnQuc2lnbmFsQ3Vyc29yTW92ZWQsCmIpKX0pfTt0aGlzLmdldEN1cnNvclBvc2l0aW9uPWZ1bmN0aW9uKGEpe3JldHVybihhPXlbYV0pP3UuY29udmVydERvbVBvaW50VG9TdGVwcyhhLmdldE5vZGUoKSwwKTowfTt0aGlzLmdldEN1cnNvclNlbGVjdGlvbj1mdW5jdGlvbihhKXthPXlbYV07dmFyIGM9MCxiPTA7YSYmKGM9dS5jb252ZXJ0RG9tUG9pbnRUb1N0ZXBzKGEuZ2V0Tm9kZSgpLDApLGI9dS5jb252ZXJ0RG9tUG9pbnRUb1N0ZXBzKGEuZ2V0QW5jaG9yTm9kZSgpLDApKTtyZXR1cm57cG9zaXRpb246YixsZW5ndGg6Yy1ifX07dGhpcy5nZXRQb3NpdGlvbkZpbHRlcj1mdW5jdGlvbigpe3JldHVybiB2fTt0aGlzLmdldE9kZkNhbnZhcz1mdW5jdGlvbigpe3JldHVybiBnfTt0aGlzLmdldENhbnZhcz1mdW5jdGlvbigpe3JldHVybiBnfTt0aGlzLmdldFJvb3ROb2RlPWQ7dGhpcy5hZGRNZW1iZXI9ZnVuY3Rpb24oYSl7cnVudGltZS5hc3NlcnQodm9pZCAwPT09eFthLmdldE1lbWJlcklkKCldLCJUaGlzIG1lbWJlciBhbHJlYWR5IGV4aXN0cyIpOwp4W2EuZ2V0TWVtYmVySWQoKV09YX07dGhpcy5nZXRNZW1iZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIHguaGFzT3duUHJvcGVydHkoYSk/eFthXTpudWxsfTt0aGlzLnJlbW92ZU1lbWJlcj1mdW5jdGlvbihhKXtkZWxldGUgeFthXX07dGhpcy5nZXRDdXJzb3I9ZnVuY3Rpb24oYSl7cmV0dXJuIHlbYV19O3RoaXMuaGFzQ3Vyc29yPWZ1bmN0aW9uKGEpe3JldHVybiB5Lmhhc093blByb3BlcnR5KGEpfTt0aGlzLmdldE1lbWJlcklkcz1mdW5jdGlvbigpe3JldHVybiBPYmplY3Qua2V5cyh4KX07dGhpcy5hZGRDdXJzb3I9ZnVuY3Rpb24oYyl7cnVudGltZS5hc3NlcnQoQm9vbGVhbihjKSwiT2R0RG9jdW1lbnQ6OmFkZEN1cnNvciB3aXRob3V0IGN1cnNvciIpO3ZhciBiPWMuZ2V0TWVtYmVySWQoKSxkPWEuY29udmVydEN1cnNvclRvRG9tUmFuZ2UoMCwwKTtydW50aW1lLmFzc2VydCgic3RyaW5nIj09PXR5cGVvZiBiLCJPZHREb2N1bWVudDo6YWRkQ3Vyc29yIGhhcyBjdXJzb3Igd2l0aG91dCBtZW1iZXJpZCIpOwpydW50aW1lLmFzc2VydCgheVtiXSwiT2R0RG9jdW1lbnQ6OmFkZEN1cnNvciBpcyBhZGRpbmcgYSBkdXBsaWNhdGUgY3Vyc29yIHdpdGggbWVtYmVyaWQgIitiKTtjLnNldFNlbGVjdGVkUmFuZ2UoZCwhMCk7eVtiXT1jfTt0aGlzLnJlbW92ZUN1cnNvcj1mdW5jdGlvbihjKXt2YXIgYj15W2NdO3JldHVybiBiPyhiLnJlbW92ZUZyb21Eb2N1bWVudCgpLGRlbGV0ZSB5W2NdLGEuZW1pdChvcHMuRG9jdW1lbnQuc2lnbmFsQ3Vyc29yUmVtb3ZlZCxjKSwhMCk6ITF9O3RoaXMubW92ZUN1cnNvcj1mdW5jdGlvbihjLGIsZCxlKXtjPXlbY107Yj1hLmNvbnZlcnRDdXJzb3JUb0RvbVJhbmdlKGIsZCk7YyYmKGMuc2V0U2VsZWN0ZWRSYW5nZShiLDA8PWQpLGMuc2V0U2VsZWN0aW9uVHlwZShlfHxvcHMuT2R0Q3Vyc29yLlJhbmdlU2VsZWN0aW9uKSl9O3RoaXMuZ2V0Rm9ybWF0dGluZz1mdW5jdGlvbigpe3JldHVybiBnLmdldEZvcm1hdHRpbmcoKX07dGhpcy5lbWl0PWZ1bmN0aW9uKGEsYyl7ei5lbWl0KGEsCmMpfTt0aGlzLnN1YnNjcmliZT1mdW5jdGlvbihhLGMpe3ouc3Vic2NyaWJlKGEsYyl9O3RoaXMudW5zdWJzY3JpYmU9ZnVuY3Rpb24oYSxjKXt6LnVuc3Vic2NyaWJlKGEsYyl9O3RoaXMuY3JlYXRlUm9vdEZpbHRlcj1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IFJvb3RGaWx0ZXIoYSx5LGYpfTt0aGlzLmNsb3NlPWZ1bmN0aW9uKGEpe2EoKX07dGhpcy5kZXN0cm95PWZ1bmN0aW9uKGEpe2EoKX07KGZ1bmN0aW9uKCl7dmFyIGE9ZCgpO3Y9bmV3IG9wcy5UZXh0UG9zaXRpb25GaWx0ZXI7Yz1uZXcgb2RmLlN0ZXBVdGlsczt1PW5ldyBvcHMuT2R0U3RlcHNUcmFuc2xhdG9yKGEsayhhKSx2LDUwMCk7ei5zdWJzY3JpYmUob3BzLk9kdERvY3VtZW50LnNpZ25hbFN0ZXBzSW5zZXJ0ZWQsdS5oYW5kbGVTdGVwc0luc2VydGVkKTt6LnN1YnNjcmliZShvcHMuT2R0RG9jdW1lbnQuc2lnbmFsU3RlcHNSZW1vdmVkLHUuaGFuZGxlU3RlcHNSZW1vdmVkKTt6LnN1YnNjcmliZShvcHMuT2R0RG9jdW1lbnQuc2lnbmFsT3BlcmF0aW9uRW5kLApxKTt6LnN1YnNjcmliZShvcHMuT2R0RG9jdW1lbnQuc2lnbmFsUHJvY2Vzc2luZ0JhdGNoRW5kLGNvcmUuVGFzay5wcm9jZXNzVGFza3MpfSkoKX07b3BzLk9kdERvY3VtZW50LnNpZ25hbFBhcmFncmFwaENoYW5nZWQ9InBhcmFncmFwaC9jaGFuZ2VkIjtvcHMuT2R0RG9jdW1lbnQuc2lnbmFsVGFibGVBZGRlZD0idGFibGUvYWRkZWQiO29wcy5PZHREb2N1bWVudC5zaWduYWxDb21tb25TdHlsZUNyZWF0ZWQ9InN0eWxlL2NyZWF0ZWQiO29wcy5PZHREb2N1bWVudC5zaWduYWxDb21tb25TdHlsZURlbGV0ZWQ9InN0eWxlL2RlbGV0ZWQiO29wcy5PZHREb2N1bWVudC5zaWduYWxQYXJhZ3JhcGhTdHlsZU1vZGlmaWVkPSJwYXJhZ3JhcGhzdHlsZS9tb2RpZmllZCI7b3BzLk9kdERvY3VtZW50LnNpZ25hbE9wZXJhdGlvblN0YXJ0PSJvcGVyYXRpb24vc3RhcnQiO29wcy5PZHREb2N1bWVudC5zaWduYWxPcGVyYXRpb25FbmQ9Im9wZXJhdGlvbi9lbmQiOwpvcHMuT2R0RG9jdW1lbnQuc2lnbmFsUHJvY2Vzc2luZ0JhdGNoU3RhcnQ9InJvdXRlci9iYXRjaHN0YXJ0IjtvcHMuT2R0RG9jdW1lbnQuc2lnbmFsUHJvY2Vzc2luZ0JhdGNoRW5kPSJyb3V0ZXIvYmF0Y2hlbmQiO29wcy5PZHREb2N1bWVudC5zaWduYWxVbmRvU3RhY2tDaGFuZ2VkPSJ1bmRvL2NoYW5nZWQiO29wcy5PZHREb2N1bWVudC5zaWduYWxTdGVwc0luc2VydGVkPSJzdGVwcy9pbnNlcnRlZCI7b3BzLk9kdERvY3VtZW50LnNpZ25hbFN0ZXBzUmVtb3ZlZD0ic3RlcHMvcmVtb3ZlZCI7b3BzLk9kdERvY3VtZW50LnNpZ25hbE1ldGFkYXRhVXBkYXRlZD0ibWV0YWRhdGEvdXBkYXRlZCI7b3BzLk9kdERvY3VtZW50LnNpZ25hbEFubm90YXRpb25BZGRlZD0iYW5ub3RhdGlvbi9hZGRlZCI7Cm9wcy5PcEFkZEFubm90YXRpb249ZnVuY3Rpb24oKXtmdW5jdGlvbiBnKGIsZCxlKXt2YXIgZj1iLmdldFRleHROb2RlQXRTdGVwKGUsayk7ZiYmKGI9Zi50ZXh0Tm9kZSxlPWIucGFyZW50Tm9kZSxmLm9mZnNldCE9PWIubGVuZ3RoJiZiLnNwbGl0VGV4dChmLm9mZnNldCksZS5pbnNlcnRCZWZvcmUoZCxiLm5leHRTaWJsaW5nKSwwPT09Yi5sZW5ndGgmJmUucmVtb3ZlQ2hpbGQoYikpfXZhciBrLGQsYixmLG4scDt0aGlzLmluaXQ9ZnVuY3Rpb24oZyl7az1nLm1lbWJlcmlkO2Q9cGFyc2VJbnQoZy50aW1lc3RhbXAsMTApO2I9cGFyc2VJbnQoZy5wb3NpdGlvbiwxMCk7Zj12b2lkIDAhPT1nLmxlbmd0aD9wYXJzZUludChnLmxlbmd0aCwxMCl8fDA6dm9pZCAwO249Zy5uYW1lfTt0aGlzLmlzRWRpdD0hMDt0aGlzLmdyb3VwPXZvaWQgMDt0aGlzLmV4ZWN1dGU9ZnVuY3Rpb24ocil7dmFyIHE9ci5nZXRDdXJzb3IoayksZSxsO3A9ci5nZXRET01Eb2N1bWVudCgpO3ZhciBhPW5ldyBEYXRlKGQpLApjLG0saDtjPXAuY3JlYXRlRWxlbWVudE5TKG9kZi5OYW1lc3BhY2VzLm9mZmljZW5zLCJvZmZpY2U6YW5ub3RhdGlvbiIpO2Muc2V0QXR0cmlidXRlTlMob2RmLk5hbWVzcGFjZXMub2ZmaWNlbnMsIm9mZmljZTpuYW1lIixuKTtlPXAuY3JlYXRlRWxlbWVudE5TKG9kZi5OYW1lc3BhY2VzLmRjbnMsImRjOmNyZWF0b3IiKTtlLnNldEF0dHJpYnV0ZU5TKCJ1cm46d2Vib2RmOm5hbWVzOmVkaXRpbmZvIiwiZWRpdGluZm86bWVtYmVyaWQiLGspO2UudGV4dENvbnRlbnQ9ci5nZXRNZW1iZXIoaykuZ2V0UHJvcGVydGllcygpLmZ1bGxOYW1lO2w9cC5jcmVhdGVFbGVtZW50TlMob2RmLk5hbWVzcGFjZXMuZGNucywiZGM6ZGF0ZSIpO2wuYXBwZW5kQ2hpbGQocC5jcmVhdGVUZXh0Tm9kZShhLnRvSVNPU3RyaW5nKCkpKTthPXAuY3JlYXRlRWxlbWVudE5TKG9kZi5OYW1lc3BhY2VzLnRleHRucywidGV4dDpsaXN0Iik7bT1wLmNyZWF0ZUVsZW1lbnROUyhvZGYuTmFtZXNwYWNlcy50ZXh0bnMsCiJ0ZXh0Omxpc3QtaXRlbSIpO2g9cC5jcmVhdGVFbGVtZW50TlMob2RmLk5hbWVzcGFjZXMudGV4dG5zLCJ0ZXh0OnAiKTttLmFwcGVuZENoaWxkKGgpO2EuYXBwZW5kQ2hpbGQobSk7Yy5hcHBlbmRDaGlsZChlKTtjLmFwcGVuZENoaWxkKGwpO2MuYXBwZW5kQ2hpbGQoYSk7dm9pZCAwIT09ZiYmKGU9cC5jcmVhdGVFbGVtZW50TlMob2RmLk5hbWVzcGFjZXMub2ZmaWNlbnMsIm9mZmljZTphbm5vdGF0aW9uLWVuZCIpLGUuc2V0QXR0cmlidXRlTlMob2RmLk5hbWVzcGFjZXMub2ZmaWNlbnMsIm9mZmljZTpuYW1lIixuKSxjLmFubm90YXRpb25FbmRFbGVtZW50PWUsZyhyLGUsYitmKSk7ZyhyLGMsYik7ci5lbWl0KG9wcy5PZHREb2N1bWVudC5zaWduYWxTdGVwc0luc2VydGVkLHtwb3NpdGlvbjpifSk7cSYmKGU9cC5jcmVhdGVSYW5nZSgpLGw9Yy5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKG9kZi5OYW1lc3BhY2VzLnRleHRucywicCIpWzBdLGUuc2VsZWN0Tm9kZUNvbnRlbnRzKGwpLApxLnNldFNlbGVjdGVkUmFuZ2UoZSwhMSkscS5zZXRTZWxlY3Rpb25UeXBlKG9wcy5PZHRDdXJzb3IuUmFuZ2VTZWxlY3Rpb24pLHIuZW1pdChvcHMuRG9jdW1lbnQuc2lnbmFsQ3Vyc29yTW92ZWQscSkpO3IuZ2V0T2RmQ2FudmFzKCkuYWRkQW5ub3RhdGlvbihjKTtyLmZpeEN1cnNvclBvc2l0aW9ucygpO3IuZW1pdChvcHMuT2R0RG9jdW1lbnQuc2lnbmFsQW5ub3RhdGlvbkFkZGVkLHttZW1iZXJJZDprLGFubm90YXRpb246Y30pO3JldHVybiEwfTt0aGlzLnNwZWM9ZnVuY3Rpb24oKXtyZXR1cm57b3B0eXBlOiJBZGRBbm5vdGF0aW9uIixtZW1iZXJpZDprLHRpbWVzdGFtcDpkLHBvc2l0aW9uOmIsbGVuZ3RoOmYsbmFtZTpufX19OwpvcHMuT3BBZGRDdXJzb3I9ZnVuY3Rpb24oKXt2YXIgZyxrO3RoaXMuaW5pdD1mdW5jdGlvbihkKXtnPWQubWVtYmVyaWQ7az1kLnRpbWVzdGFtcH07dGhpcy5pc0VkaXQ9ITE7dGhpcy5ncm91cD12b2lkIDA7dGhpcy5leGVjdXRlPWZ1bmN0aW9uKGQpe3ZhciBiPWQuZ2V0Q3Vyc29yKGcpO2lmKGIpcmV0dXJuITE7Yj1uZXcgb3BzLk9kdEN1cnNvcihnLGQpO2QuYWRkQ3Vyc29yKGIpO2QuZW1pdChvcHMuRG9jdW1lbnQuc2lnbmFsQ3Vyc29yQWRkZWQsYik7cmV0dXJuITB9O3RoaXMuc3BlYz1mdW5jdGlvbigpe3JldHVybntvcHR5cGU6IkFkZEN1cnNvciIsbWVtYmVyaWQ6Zyx0aW1lc3RhbXA6a319fTsKb3BzLk9wQWRkTWVtYmVyPWZ1bmN0aW9uKCl7dmFyIGcsayxkO3RoaXMuaW5pdD1mdW5jdGlvbihiKXtnPWIubWVtYmVyaWQ7az1wYXJzZUludChiLnRpbWVzdGFtcCwxMCk7ZD1iLnNldFByb3BlcnRpZXN9O3RoaXMuaXNFZGl0PSExO3RoaXMuZ3JvdXA9dm9pZCAwO3RoaXMuZXhlY3V0ZT1mdW5jdGlvbihiKXt2YXIgZjtpZihiLmdldE1lbWJlcihnKSlyZXR1cm4hMTtmPW5ldyBvcHMuTWVtYmVyKGcsZCk7Yi5hZGRNZW1iZXIoZik7Yi5lbWl0KG9wcy5Eb2N1bWVudC5zaWduYWxNZW1iZXJBZGRlZCxmKTtyZXR1cm4hMH07dGhpcy5zcGVjPWZ1bmN0aW9uKCl7cmV0dXJue29wdHlwZToiQWRkTWVtYmVyIixtZW1iZXJpZDpnLHRpbWVzdGFtcDprLHNldFByb3BlcnRpZXM6ZH19fTsKb3BzLk9wQWRkU3R5bGU9ZnVuY3Rpb24oKXt2YXIgZyxrLGQsYixmLG4scD1vZGYuTmFtZXNwYWNlcy5zdHlsZW5zO3RoaXMuaW5pdD1mdW5jdGlvbihwKXtnPXAubWVtYmVyaWQ7az1wLnRpbWVzdGFtcDtkPXAuc3R5bGVOYW1lO2I9cC5zdHlsZUZhbWlseTtmPSJ0cnVlIj09PXAuaXNBdXRvbWF0aWNTdHlsZXx8ITA9PT1wLmlzQXV0b21hdGljU3R5bGU7bj1wLnNldFByb3BlcnRpZXN9O3RoaXMuaXNFZGl0PSEwO3RoaXMuZ3JvdXA9dm9pZCAwO3RoaXMuZXhlY3V0ZT1mdW5jdGlvbihnKXt2YXIgaz1nLmdldE9kZkNhbnZhcygpLm9kZkNvbnRhaW5lcigpLGU9Zy5nZXRGb3JtYXR0aW5nKCksbD1nLmdldERPTURvY3VtZW50KCkuY3JlYXRlRWxlbWVudE5TKHAsInN0eWxlOnN0eWxlIik7aWYoIWwpcmV0dXJuITE7biYmZS51cGRhdGVTdHlsZShsLG4pO2wuc2V0QXR0cmlidXRlTlMocCwic3R5bGU6ZmFtaWx5IixiKTtsLnNldEF0dHJpYnV0ZU5TKHAsInN0eWxlOm5hbWUiLGQpO2Y/Cmsucm9vdEVsZW1lbnQuYXV0b21hdGljU3R5bGVzLmFwcGVuZENoaWxkKGwpOmsucm9vdEVsZW1lbnQuc3R5bGVzLmFwcGVuZENoaWxkKGwpO2cuZ2V0T2RmQ2FudmFzKCkucmVmcmVzaENTUygpO2Z8fGcuZW1pdChvcHMuT2R0RG9jdW1lbnQuc2lnbmFsQ29tbW9uU3R5bGVDcmVhdGVkLHtuYW1lOmQsZmFtaWx5OmJ9KTtyZXR1cm4hMH07dGhpcy5zcGVjPWZ1bmN0aW9uKCl7cmV0dXJue29wdHlwZToiQWRkU3R5bGUiLG1lbWJlcmlkOmcsdGltZXN0YW1wOmssc3R5bGVOYW1lOmQsc3R5bGVGYW1pbHk6Yixpc0F1dG9tYXRpY1N0eWxlOmYsc2V0UHJvcGVydGllczpufX19OwpvZGYuT2JqZWN0TmFtZUdlbmVyYXRvcj1mdW5jdGlvbihnLGspe2Z1bmN0aW9uIGQoYSxjKXt2YXIgYj17fTt0aGlzLmdlbmVyYXRlTmFtZT1mdW5jdGlvbigpe3ZhciBkPWMoKSxlPTAsZjtkbyBmPWErZSxlKz0xO3doaWxlKGJbZl18fGRbZl0pO2JbZl09ITA7cmV0dXJuIGZ9fWZ1bmN0aW9uIGIoKXt2YXIgYT17fTtbZy5yb290RWxlbWVudC5hdXRvbWF0aWNTdHlsZXMsZy5yb290RWxlbWVudC5zdHlsZXNdLmZvckVhY2goZnVuY3Rpb24oYyl7Zm9yKGM9Yy5maXJzdEVsZW1lbnRDaGlsZDtjOyljLm5hbWVzcGFjZVVSST09PWYmJiJzdHlsZSI9PT1jLmxvY2FsTmFtZSYmKGFbYy5nZXRBdHRyaWJ1dGVOUyhmLCJuYW1lIildPSEwKSxjPWMubmV4dEVsZW1lbnRTaWJsaW5nfSk7cmV0dXJuIGF9dmFyIGY9b2RmLk5hbWVzcGFjZXMuc3R5bGVucyxuPW9kZi5OYW1lc3BhY2VzLmRyYXducyxwPW9kZi5OYW1lc3BhY2VzLnhsaW5rbnMscj0obmV3IGNvcmUuVXRpbHMpLmhhc2hTdHJpbmcoayksCnE9bnVsbCxlPW51bGwsbD1udWxsLGE9e30sYz17fTt0aGlzLmdlbmVyYXRlU3R5bGVOYW1lPWZ1bmN0aW9uKCl7bnVsbD09PXEmJihxPW5ldyBkKCJhdXRvIityKyJfIixmdW5jdGlvbigpe3JldHVybiBiKCl9KSk7cmV0dXJuIHEuZ2VuZXJhdGVOYW1lKCl9O3RoaXMuZ2VuZXJhdGVGcmFtZU5hbWU9ZnVuY3Rpb24oKXt2YXIgYyxiLGY7aWYobnVsbD09PWUpe2I9Zy5yb290RWxlbWVudC5ib2R5LmdldEVsZW1lbnRzQnlUYWdOYW1lTlMobiwiZnJhbWUiKTtmb3IoYz0wO2M8Yi5sZW5ndGg7Yys9MSlmPWIuaXRlbShjKSxhW2YuZ2V0QXR0cmlidXRlTlMobiwibmFtZSIpXT0hMDtlPW5ldyBkKCJmciIrcisiXyIsZnVuY3Rpb24oKXtyZXR1cm4gYX0pfXJldHVybiBlLmdlbmVyYXRlTmFtZSgpfTt0aGlzLmdlbmVyYXRlSW1hZ2VOYW1lPWZ1bmN0aW9uKCl7dmFyIGEsYixlO2lmKG51bGw9PT1sKXtlPWcucm9vdEVsZW1lbnQuYm9keS5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKG4sImltYWdlIik7CmZvcihhPTA7YTxlLmxlbmd0aDthKz0xKWI9ZS5pdGVtKGEpLGI9Yi5nZXRBdHRyaWJ1dGVOUyhwLCJocmVmIiksYj1iLnN1YnN0cmluZyg5LGIubGFzdEluZGV4T2YoIi4iKSksY1tiXT0hMDtsPW5ldyBkKCJpbWciK3IrIl8iLGZ1bmN0aW9uKCl7cmV0dXJuIGN9KX1yZXR1cm4gbC5nZW5lcmF0ZU5hbWUoKX19OwpvZGYuVGV4dFN0eWxlQXBwbGljYXRvcj1mdW5jdGlvbihnLGssZCl7ZnVuY3Rpb24gYihiKXtmdW5jdGlvbiBkKGEsYil7cmV0dXJuIm9iamVjdCI9PT10eXBlb2YgYSYmIm9iamVjdCI9PT10eXBlb2YgYj9PYmplY3Qua2V5cyhhKS5ldmVyeShmdW5jdGlvbihlKXtyZXR1cm4gZChhW2VdLGJbZV0pfSk6YT09PWJ9dmFyIGE9e307dGhpcy5pc1N0eWxlQXBwbGllZD1mdW5jdGlvbihjKXtjPWsuZ2V0QXBwbGllZFN0eWxlc0ZvckVsZW1lbnQoYyxhKS5zdHlsZVByb3BlcnRpZXM7cmV0dXJuIGQoYixjKX19ZnVuY3Rpb24gZihiKXt2YXIgZj17fTt0aGlzLmFwcGx5U3R5bGVUb0NvbnRhaW5lcj1mdW5jdGlvbihhKXt2YXIgYztjPWEuZ2V0QXR0cmlidXRlTlMociwic3R5bGUtbmFtZSIpO3ZhciBtPWEub3duZXJEb2N1bWVudDtjPWN8fCIiO2lmKCFmLmhhc093blByb3BlcnR5KGMpKXt2YXIgaD1jLG47bj1jP2suY3JlYXRlRGVyaXZlZFN0eWxlT2JqZWN0KGMsInRleHQiLGIpOmI7bT0KbS5jcmVhdGVFbGVtZW50TlMocSwic3R5bGU6c3R5bGUiKTtrLnVwZGF0ZVN0eWxlKG0sbik7bS5zZXRBdHRyaWJ1dGVOUyhxLCJzdHlsZTpuYW1lIixnLmdlbmVyYXRlU3R5bGVOYW1lKCkpO20uc2V0QXR0cmlidXRlTlMocSwic3R5bGU6ZmFtaWx5IiwidGV4dCIpO20uc2V0QXR0cmlidXRlTlMoInVybjp3ZWJvZGY6bmFtZXM6c2NvcGUiLCJzY29wZSIsImRvY3VtZW50LWNvbnRlbnQiKTtkLmFwcGVuZENoaWxkKG0pO2ZbaF09bX1jPWZbY10uZ2V0QXR0cmlidXRlTlMocSwibmFtZSIpO2Euc2V0QXR0cmlidXRlTlMociwidGV4dDpzdHlsZS1uYW1lIixjKX19ZnVuY3Rpb24gbihiLGQpe3ZhciBhPWIub3duZXJEb2N1bWVudCxjPWIucGFyZW50Tm9kZSxtLGgsZixnPW5ldyBjb3JlLkxvb3BXYXRjaERvZygxRTQpO2g9W107aC5wdXNoKGIpO2ZvcihmPWIubmV4dFNpYmxpbmc7ZiYmcC5yYW5nZUNvbnRhaW5zTm9kZShkLGYpOylnLmNoZWNrKCksaC5wdXNoKGYpLGY9Zi5uZXh0U2libGluZzsKInNwYW4iIT09Yy5sb2NhbE5hbWV8fGMubmFtZXNwYWNlVVJJIT09cj8obT1hLmNyZWF0ZUVsZW1lbnROUyhyLCJ0ZXh0OnNwYW4iKSxjLmluc2VydEJlZm9yZShtLGIpLGE9ITEpOihiLnByZXZpb3VzU2libGluZyYmIXAucmFuZ2VDb250YWluc05vZGUoZCxjLmZpcnN0Q2hpbGQpPyhtPWMuY2xvbmVOb2RlKCExKSxjLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG0sYy5uZXh0U2libGluZykpOm09YyxhPSEwKTtoLmZvckVhY2goZnVuY3Rpb24oYSl7YS5wYXJlbnROb2RlIT09bSYmbS5hcHBlbmRDaGlsZChhKX0pO2lmKGYmJmEpZm9yKGg9bS5jbG9uZU5vZGUoITEpLG0ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoaCxtLm5leHRTaWJsaW5nKTtmOylnLmNoZWNrKCksYT1mLm5leHRTaWJsaW5nLGguYXBwZW5kQ2hpbGQoZiksZj1hO3JldHVybiBtfXZhciBwPWNvcmUuRG9tVXRpbHMscj1vZGYuTmFtZXNwYWNlcy50ZXh0bnMscT1vZGYuTmFtZXNwYWNlcy5zdHlsZW5zO3RoaXMuYXBwbHlTdHlsZT0KZnVuY3Rpb24oZCxnLGEpe3ZhciBjPXt9LG0saCxrLHA7cnVudGltZS5hc3NlcnQoYSYmYS5oYXNPd25Qcm9wZXJ0eSgic3R5bGU6dGV4dC1wcm9wZXJ0aWVzIiksImFwcGx5U3R5bGUgd2l0aG91dCBhbnkgdGV4dCBwcm9wZXJ0aWVzIik7Y1sic3R5bGU6dGV4dC1wcm9wZXJ0aWVzIl09YVsic3R5bGU6dGV4dC1wcm9wZXJ0aWVzIl07az1uZXcgZihjKTtwPW5ldyBiKGMpO2QuZm9yRWFjaChmdW5jdGlvbihhKXttPXAuaXNTdHlsZUFwcGxpZWQoYSk7ITE9PT1tJiYoaD1uKGEsZyksay5hcHBseVN0eWxlVG9Db250YWluZXIoaCkpfSl9fTsKb3BzLk9wQXBwbHlEaXJlY3RTdHlsaW5nPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZyhiLGQsZil7dmFyIGE9Yi5nZXRPZGZDYW52YXMoKS5vZGZDb250YWluZXIoKSxjPXIuc3BsaXRCb3VuZGFyaWVzKGQpLG09cC5nZXRUZXh0Tm9kZXMoZCwhMSk7KG5ldyBvZGYuVGV4dFN0eWxlQXBwbGljYXRvcihuZXcgb2RmLk9iamVjdE5hbWVHZW5lcmF0b3IoYSxrKSxiLmdldEZvcm1hdHRpbmcoKSxhLnJvb3RFbGVtZW50LmF1dG9tYXRpY1N0eWxlcykpLmFwcGx5U3R5bGUobSxkLGYpO2MuZm9yRWFjaChyLm5vcm1hbGl6ZVRleHROb2Rlcyl9dmFyIGssZCxiLGYsbixwPW9kZi5PZGZVdGlscyxyPWNvcmUuRG9tVXRpbHM7dGhpcy5pbml0PWZ1bmN0aW9uKGcpe2s9Zy5tZW1iZXJpZDtkPWcudGltZXN0YW1wO2I9cGFyc2VJbnQoZy5wb3NpdGlvbiwxMCk7Zj1wYXJzZUludChnLmxlbmd0aCwxMCk7bj1nLnNldFByb3BlcnRpZXN9O3RoaXMuaXNFZGl0PSEwO3RoaXMuZ3JvdXA9dm9pZCAwO3RoaXMuZXhlY3V0ZT0KZnVuY3Rpb24ocil7dmFyIGU9ci5jb252ZXJ0Q3Vyc29yVG9Eb21SYW5nZShiLGYpLGw9cC5nZXRQYXJhZ3JhcGhFbGVtZW50cyhlKTtnKHIsZSxuKTtlLmRldGFjaCgpO3IuZ2V0T2RmQ2FudmFzKCkucmVmcmVzaENTUygpO3IuZml4Q3Vyc29yUG9zaXRpb25zKCk7bC5mb3JFYWNoKGZ1bmN0aW9uKGEpe3IuZW1pdChvcHMuT2R0RG9jdW1lbnQuc2lnbmFsUGFyYWdyYXBoQ2hhbmdlZCx7cGFyYWdyYXBoRWxlbWVudDphLG1lbWJlcklkOmssdGltZVN0YW1wOmR9KX0pO3IuZ2V0T2RmQ2FudmFzKCkucmVyZW5kZXJBbm5vdGF0aW9ucygpO3JldHVybiEwfTt0aGlzLnNwZWM9ZnVuY3Rpb24oKXtyZXR1cm57b3B0eXBlOiJBcHBseURpcmVjdFN0eWxpbmciLG1lbWJlcmlkOmssdGltZXN0YW1wOmQscG9zaXRpb246YixsZW5ndGg6ZixzZXRQcm9wZXJ0aWVzOm59fX07Cm9wcy5PcEFwcGx5SHlwZXJsaW5rPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZyhiKXtmb3IoO2I7KXtpZihyLmlzSHlwZXJsaW5rKGIpKXJldHVybiEwO2I9Yi5wYXJlbnROb2RlfXJldHVybiExfXZhciBrLGQsYixmLG4scD1jb3JlLkRvbVV0aWxzLHI9b2RmLk9kZlV0aWxzO3RoaXMuaW5pdD1mdW5jdGlvbihnKXtrPWcubWVtYmVyaWQ7ZD1nLnRpbWVzdGFtcDtiPWcucG9zaXRpb247Zj1nLmxlbmd0aDtuPWcuaHlwZXJsaW5rfTt0aGlzLmlzRWRpdD0hMDt0aGlzLmdyb3VwPXZvaWQgMDt0aGlzLmV4ZWN1dGU9ZnVuY3Rpb24ocSl7dmFyIGU9cS5nZXRET01Eb2N1bWVudCgpLGw9cS5jb252ZXJ0Q3Vyc29yVG9Eb21SYW5nZShiLGYpLGE9cC5zcGxpdEJvdW5kYXJpZXMobCksYz1bXSxtPXIuZ2V0VGV4dE5vZGVzKGwsITEpO2lmKDA9PT1tLmxlbmd0aClyZXR1cm4hMTttLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI9ci5nZXRQYXJhZ3JhcGhFbGVtZW50KGEpO3J1bnRpbWUuYXNzZXJ0KCExPT09CmcoYSksIlRoZSBnaXZlbiByYW5nZSBzaG91bGQgbm90IGNvbnRhaW4gYW55IGxpbmsuIik7dmFyIGQ9bixtPWUuY3JlYXRlRWxlbWVudE5TKG9kZi5OYW1lc3BhY2VzLnRleHRucywidGV4dDphIik7bS5zZXRBdHRyaWJ1dGVOUyhvZGYuTmFtZXNwYWNlcy54bGlua25zLCJ4bGluazp0eXBlIiwic2ltcGxlIik7bS5zZXRBdHRyaWJ1dGVOUyhvZGYuTmFtZXNwYWNlcy54bGlua25zLCJ4bGluazpocmVmIixkKTthLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG0sYSk7bS5hcHBlbmRDaGlsZChhKTstMT09PWMuaW5kZXhPZihiKSYmYy5wdXNoKGIpfSk7YS5mb3JFYWNoKHAubm9ybWFsaXplVGV4dE5vZGVzKTtsLmRldGFjaCgpO3EuZml4Q3Vyc29yUG9zaXRpb25zKCk7cS5nZXRPZGZDYW52YXMoKS5yZWZyZXNoU2l6ZSgpO3EuZ2V0T2RmQ2FudmFzKCkucmVyZW5kZXJBbm5vdGF0aW9ucygpO2MuZm9yRWFjaChmdW5jdGlvbihhKXtxLmVtaXQob3BzLk9kdERvY3VtZW50LnNpZ25hbFBhcmFncmFwaENoYW5nZWQsCntwYXJhZ3JhcGhFbGVtZW50OmEsbWVtYmVySWQ6ayx0aW1lU3RhbXA6ZH0pfSk7cmV0dXJuITB9O3RoaXMuc3BlYz1mdW5jdGlvbigpe3JldHVybntvcHR5cGU6IkFwcGx5SHlwZXJsaW5rIixtZW1iZXJpZDprLHRpbWVzdGFtcDpkLHBvc2l0aW9uOmIsbGVuZ3RoOmYsaHlwZXJsaW5rOm59fX07Cm9wcy5PcEluc2VydEltYWdlPWZ1bmN0aW9uKCl7dmFyIGcsayxkLGIsZixuLHAscixxPW9kZi5OYW1lc3BhY2VzLmRyYXducyxlPW9kZi5OYW1lc3BhY2VzLnN2Z25zLGw9b2RmLk5hbWVzcGFjZXMudGV4dG5zLGE9b2RmLk5hbWVzcGFjZXMueGxpbmtucyxjPW9kZi5PZGZVdGlsczt0aGlzLmluaXQ9ZnVuY3Rpb24oYSl7Zz1hLm1lbWJlcmlkO2s9YS50aW1lc3RhbXA7ZD1hLnBvc2l0aW9uO2I9YS5maWxlbmFtZTtmPWEuZnJhbWVXaWR0aDtuPWEuZnJhbWVIZWlnaHQ7cD1hLmZyYW1lU3R5bGVOYW1lO3I9YS5mcmFtZU5hbWV9O3RoaXMuaXNFZGl0PSEwO3RoaXMuZ3JvdXA9dm9pZCAwO3RoaXMuZXhlY3V0ZT1mdW5jdGlvbihtKXt2YXIgaD1tLmdldE9kZkNhbnZhcygpLHk9bS5nZXRUZXh0Tm9kZUF0U3RlcChkLGcpLHgsejtpZigheSlyZXR1cm4hMTt4PXkudGV4dE5vZGU7ej1jLmdldFBhcmFncmFwaEVsZW1lbnQoeCk7dmFyIHk9eS5vZmZzZXQhPT14Lmxlbmd0aD94LnNwbGl0VGV4dCh5Lm9mZnNldCk6CngubmV4dFNpYmxpbmcsdz1tLmdldERPTURvY3VtZW50KCksdj13LmNyZWF0ZUVsZW1lbnROUyhxLCJkcmF3OmltYWdlIiksdz13LmNyZWF0ZUVsZW1lbnROUyhxLCJkcmF3OmZyYW1lIik7di5zZXRBdHRyaWJ1dGVOUyhhLCJ4bGluazpocmVmIixiKTt2LnNldEF0dHJpYnV0ZU5TKGEsInhsaW5rOnR5cGUiLCJzaW1wbGUiKTt2LnNldEF0dHJpYnV0ZU5TKGEsInhsaW5rOnNob3ciLCJlbWJlZCIpO3Yuc2V0QXR0cmlidXRlTlMoYSwieGxpbms6YWN0dWF0ZSIsIm9uTG9hZCIpO3cuc2V0QXR0cmlidXRlTlMocSwiZHJhdzpzdHlsZS1uYW1lIixwKTt3LnNldEF0dHJpYnV0ZU5TKHEsImRyYXc6bmFtZSIscik7dy5zZXRBdHRyaWJ1dGVOUyhsLCJ0ZXh0OmFuY2hvci10eXBlIiwiYXMtY2hhciIpO3cuc2V0QXR0cmlidXRlTlMoZSwic3ZnOndpZHRoIixmKTt3LnNldEF0dHJpYnV0ZU5TKGUsInN2ZzpoZWlnaHQiLG4pO3cuYXBwZW5kQ2hpbGQodik7eC5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh3LAp5KTttLmVtaXQob3BzLk9kdERvY3VtZW50LnNpZ25hbFN0ZXBzSW5zZXJ0ZWQse3Bvc2l0aW9uOmR9KTswPT09eC5sZW5ndGgmJngucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh4KTtoLmFkZENzc0ZvckZyYW1lV2l0aEltYWdlKHcpO2gucmVmcmVzaENTUygpO20uZW1pdChvcHMuT2R0RG9jdW1lbnQuc2lnbmFsUGFyYWdyYXBoQ2hhbmdlZCx7cGFyYWdyYXBoRWxlbWVudDp6LG1lbWJlcklkOmcsdGltZVN0YW1wOmt9KTtoLnJlcmVuZGVyQW5ub3RhdGlvbnMoKTtyZXR1cm4hMH07dGhpcy5zcGVjPWZ1bmN0aW9uKCl7cmV0dXJue29wdHlwZToiSW5zZXJ0SW1hZ2UiLG1lbWJlcmlkOmcsdGltZXN0YW1wOmssZmlsZW5hbWU6Yixwb3NpdGlvbjpkLGZyYW1lV2lkdGg6ZixmcmFtZUhlaWdodDpuLGZyYW1lU3R5bGVOYW1lOnAsZnJhbWVOYW1lOnJ9fX07Cm9wcy5PcEluc2VydFRhYmxlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZyhhLGMpe3ZhciBkO2lmKDE9PT1lLmxlbmd0aClkPWVbMF07ZWxzZSBpZigzPT09ZS5sZW5ndGgpc3dpdGNoKGEpe2Nhc2UgMDpkPWVbMF07YnJlYWs7Y2FzZSBiLTE6ZD1lWzJdO2JyZWFrO2RlZmF1bHQ6ZD1lWzFdfWVsc2UgZD1lW2FdO2lmKDE9PT1kLmxlbmd0aClyZXR1cm4gZFswXTtpZigzPT09ZC5sZW5ndGgpc3dpdGNoKGMpe2Nhc2UgMDpyZXR1cm4gZFswXTtjYXNlIGYtMTpyZXR1cm4gZFsyXTtkZWZhdWx0OnJldHVybiBkWzFdfXJldHVybiBkW2NdfXZhciBrLGQsYixmLG4scCxyLHEsZSxsPW9kZi5PZGZVdGlsczt0aGlzLmluaXQ9ZnVuY3Rpb24oYSl7az1hLm1lbWJlcmlkO2Q9YS50aW1lc3RhbXA7bj1hLnBvc2l0aW9uO2I9YS5pbml0aWFsUm93cztmPWEuaW5pdGlhbENvbHVtbnM7cD1hLnRhYmxlTmFtZTtyPWEudGFibGVTdHlsZU5hbWU7cT1hLnRhYmxlQ29sdW1uU3R5bGVOYW1lO2U9YS50YWJsZUNlbGxTdHlsZU1hdHJpeH07CnRoaXMuaXNFZGl0PSEwO3RoaXMuZ3JvdXA9dm9pZCAwO3RoaXMuZXhlY3V0ZT1mdW5jdGlvbihhKXt2YXIgYz1hLmdldFRleHROb2RlQXRTdGVwKG4pLGU9YS5nZXRSb290Tm9kZSgpO2lmKGMpe3ZhciBoPWEuZ2V0RE9NRG9jdW1lbnQoKSx5PWguY3JlYXRlRWxlbWVudE5TKCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnRhYmxlOjEuMCIsInRhYmxlOnRhYmxlIikseD1oLmNyZWF0ZUVsZW1lbnROUygidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczp0YWJsZToxLjAiLCJ0YWJsZTp0YWJsZS1jb2x1bW4iKSx6LHcsdix1O3ImJnkuc2V0QXR0cmlidXRlTlMoInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6dGFibGU6MS4wIiwidGFibGU6c3R5bGUtbmFtZSIscik7cCYmeS5zZXRBdHRyaWJ1dGVOUygidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczp0YWJsZToxLjAiLCJ0YWJsZTpuYW1lIixwKTt4LnNldEF0dHJpYnV0ZU5TKCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnRhYmxlOjEuMCIsCiJ0YWJsZTpudW1iZXItY29sdW1ucy1yZXBlYXRlZCIsZik7cSYmeC5zZXRBdHRyaWJ1dGVOUygidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczp0YWJsZToxLjAiLCJ0YWJsZTpzdHlsZS1uYW1lIixxKTt5LmFwcGVuZENoaWxkKHgpO2Zvcih2PTA7djxiO3YrPTEpe3g9aC5jcmVhdGVFbGVtZW50TlMoInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6dGFibGU6MS4wIiwidGFibGU6dGFibGUtcm93Iik7Zm9yKHU9MDt1PGY7dSs9MSl6PWguY3JlYXRlRWxlbWVudE5TKCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnRhYmxlOjEuMCIsInRhYmxlOnRhYmxlLWNlbGwiKSwodz1nKHYsdSkpJiZ6LnNldEF0dHJpYnV0ZU5TKCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnRhYmxlOjEuMCIsInRhYmxlOnN0eWxlLW5hbWUiLHcpLHc9aC5jcmVhdGVFbGVtZW50TlMoInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6dGV4dDoxLjAiLAoidGV4dDpwIiksei5hcHBlbmRDaGlsZCh3KSx4LmFwcGVuZENoaWxkKHopO3kuYXBwZW5kQ2hpbGQoeCl9Yz1sLmdldFBhcmFncmFwaEVsZW1lbnQoYy50ZXh0Tm9kZSk7ZS5pbnNlcnRCZWZvcmUoeSxjLm5leHRTaWJsaW5nKTthLmVtaXQob3BzLk9kdERvY3VtZW50LnNpZ25hbFN0ZXBzSW5zZXJ0ZWQse3Bvc2l0aW9uOm59KTthLmdldE9kZkNhbnZhcygpLnJlZnJlc2hTaXplKCk7YS5lbWl0KG9wcy5PZHREb2N1bWVudC5zaWduYWxUYWJsZUFkZGVkLHt0YWJsZUVsZW1lbnQ6eSxtZW1iZXJJZDprLHRpbWVTdGFtcDpkfSk7YS5nZXRPZGZDYW52YXMoKS5yZXJlbmRlckFubm90YXRpb25zKCk7cmV0dXJuITB9cmV0dXJuITF9O3RoaXMuc3BlYz1mdW5jdGlvbigpe3JldHVybntvcHR5cGU6Ikluc2VydFRhYmxlIixtZW1iZXJpZDprLHRpbWVzdGFtcDpkLHBvc2l0aW9uOm4saW5pdGlhbFJvd3M6Yixpbml0aWFsQ29sdW1uczpmLHRhYmxlTmFtZTpwLHRhYmxlU3R5bGVOYW1lOnIsdGFibGVDb2x1bW5TdHlsZU5hbWU6cSwKdGFibGVDZWxsU3R5bGVNYXRyaXg6ZX19fTsKb3BzLk9wSW5zZXJ0VGV4dD1mdW5jdGlvbigpe2Z1bmN0aW9uIGcoYil7cmV0dXJuIlx0IiE9PWImJnAuaXNPREZXaGl0ZXNwYWNlKGIpfXZhciBrLGQsYixmLG4scD1vZGYuT2RmVXRpbHM7dGhpcy5pbml0PWZ1bmN0aW9uKGcpe2s9Zy5tZW1iZXJpZDtkPWcudGltZXN0YW1wO2I9Zy5wb3NpdGlvbjtuPWcudGV4dDtmPSJ0cnVlIj09PWcubW92ZUN1cnNvcnx8ITA9PT1nLm1vdmVDdXJzb3J9O3RoaXMuaXNFZGl0PSEwO3RoaXMuZ3JvdXA9dm9pZCAwO3RoaXMuZXhlY3V0ZT1mdW5jdGlvbihyKXt2YXIgcSxlLGwsYT1udWxsLGM9ci5nZXRET01Eb2N1bWVudCgpLG0saD0wLHkseD1yLmdldEN1cnNvcihrKSx6O3IudXBncmFkZVdoaXRlc3BhY2VzQXRQb3NpdGlvbihiKTtpZihxPXIuZ2V0VGV4dE5vZGVBdFN0ZXAoYikpe2U9cS50ZXh0Tm9kZTthPWUubmV4dFNpYmxpbmc7bD1lLnBhcmVudE5vZGU7bT1wLmdldFBhcmFncmFwaEVsZW1lbnQoZSk7Zm9yKHo9MDt6PG4ubGVuZ3RoO3orPQoxKXtpZighKHk9Ilx0Ij09PW5bel0pKXt5PW47dmFyIHc9ejt5PWcoeVt3XSkmJigwPT09d3x8dz09PXkubGVuZ3RoLTF8fGcoeVt3LTFdKSl9eSYmKDA9PT1oPyhxLm9mZnNldCE9PWUubGVuZ3RoJiYoYT1lLnNwbGl0VGV4dChxLm9mZnNldCkpLDA8eiYmZS5hcHBlbmREYXRhKG4uc3Vic3RyaW5nKDAseikpKTpoPHomJihoPW4uc3Vic3RyaW5nKGgseiksbC5pbnNlcnRCZWZvcmUoYy5jcmVhdGVUZXh0Tm9kZShoKSxhKSksaD16KzEsIlx0Ij09PW5bel0/KHk9Yy5jcmVhdGVFbGVtZW50TlMoInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6dGV4dDoxLjAiLCJ0ZXh0OnRhYiIpLHkuYXBwZW5kQ2hpbGQoYy5jcmVhdGVUZXh0Tm9kZSgiXHQiKSkpOigiICIhPT1uW3pdJiZydW50aW1lLmxvZygiV0FSTjogSW5zZXJ0VGV4dCBvcGVyYXRpb24gY29udGFpbnMgbm9uLXRhYiwgbm9uLXNwYWNlIHdoaXRlc3BhY2UgY2hhcmFjdGVyIChjaGFyYWN0ZXIgY29kZSAiK24uY2hhckNvZGVBdCh6KSsKIikiKSx5PWMuY3JlYXRlRWxlbWVudE5TKCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnRleHQ6MS4wIiwidGV4dDpzIikseS5hcHBlbmRDaGlsZChjLmNyZWF0ZVRleHROb2RlKCIgIikpKSxsLmluc2VydEJlZm9yZSh5LGEpKX0wPT09aD9lLmluc2VydERhdGEocS5vZmZzZXQsbik6aDxuLmxlbmd0aCYmKHE9bi5zdWJzdHJpbmcoaCksbC5pbnNlcnRCZWZvcmUoYy5jcmVhdGVUZXh0Tm9kZShxKSxhKSk7bD1lLnBhcmVudE5vZGU7YT1lLm5leHRTaWJsaW5nO2wucmVtb3ZlQ2hpbGQoZSk7bC5pbnNlcnRCZWZvcmUoZSxhKTswPT09ZS5sZW5ndGgmJmUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKTtyLmVtaXQob3BzLk9kdERvY3VtZW50LnNpZ25hbFN0ZXBzSW5zZXJ0ZWQse3Bvc2l0aW9uOmJ9KTt4JiZmJiYoci5tb3ZlQ3Vyc29yKGssYituLmxlbmd0aCwwKSxyLmVtaXQob3BzLkRvY3VtZW50LnNpZ25hbEN1cnNvck1vdmVkLHgpKTtyLmRvd25ncmFkZVdoaXRlc3BhY2VzQXRQb3NpdGlvbihiKTsKci5kb3duZ3JhZGVXaGl0ZXNwYWNlc0F0UG9zaXRpb24oYituLmxlbmd0aCk7ci5nZXRPZGZDYW52YXMoKS5yZWZyZXNoU2l6ZSgpO3IuZW1pdChvcHMuT2R0RG9jdW1lbnQuc2lnbmFsUGFyYWdyYXBoQ2hhbmdlZCx7cGFyYWdyYXBoRWxlbWVudDptLG1lbWJlcklkOmssdGltZVN0YW1wOmR9KTtyLmdldE9kZkNhbnZhcygpLnJlcmVuZGVyQW5ub3RhdGlvbnMoKTtyZXR1cm4hMH1yZXR1cm4hMX07dGhpcy5zcGVjPWZ1bmN0aW9uKCl7cmV0dXJue29wdHlwZToiSW5zZXJ0VGV4dCIsbWVtYmVyaWQ6ayx0aW1lc3RhbXA6ZCxwb3NpdGlvbjpiLHRleHQ6bixtb3ZlQ3Vyc29yOmZ9fX07Cm9kZi5Db2xsYXBzaW5nUnVsZXM9ZnVuY3Rpb24oZyl7ZnVuY3Rpb24gayhkKXtyZXR1cm4gYi5pc09ERk5vZGUoZCl8fCJiciI9PT1kLmxvY2FsTmFtZSYmYi5pc0xpbmVCcmVhayhkLnBhcmVudE5vZGUpfHxkLm5vZGVUeXBlPT09Tm9kZS5URVhUX05PREUmJmIuaXNPREZOb2RlKGQucGFyZW50Tm9kZSk/Tm9kZUZpbHRlci5GSUxURVJfUkVKRUNUOk5vZGVGaWx0ZXIuRklMVEVSX0FDQ0VQVH1mdW5jdGlvbiBkKG4pe3ZhciBwO24ubm9kZVR5cGU9PT1Ob2RlLlRFWFRfTk9ERT8ocD1uLnBhcmVudE5vZGUscC5yZW1vdmVDaGlsZChuKSk6cD1mLnJlbW92ZVVud2FudGVkTm9kZXMobixrKTtpZihuPXApbj1wLG49IWIuaXNQYXJhZ3JhcGgobikmJm4hPT1nJiZiLmhhc05vT0RGQ29udGVudChuKTtyZXR1cm4gbj9kKHApOnB9dmFyIGI9b2RmLk9kZlV0aWxzLGY9Y29yZS5Eb21VdGlsczt0aGlzLm1lcmdlQ2hpbGRyZW5JbnRvUGFyZW50PWR9OwpvcHMuT3BNZXJnZVBhcmFncmFwaD1mdW5jdGlvbigpe2Z1bmN0aW9uIGcoYSl7cmV0dXJuIG9kZi5PZGZVdGlscy5pc0lubGluZVJvb3QoYSk/Tm9kZUZpbHRlci5GSUxURVJfU0tJUDpsLmlzR3JvdXBpbmdFbGVtZW50KGEpJiZsLmhhc05vT0RGQ29udGVudChhKT9Ob2RlRmlsdGVyLkZJTFRFUl9SRUpFQ1Q6Tm9kZUZpbHRlci5GSUxURVJfQUNDRVBUfWZ1bmN0aW9uIGsoYSl7aWYoYS5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFKXtpZigwPT09YS5sZW5ndGgpcmV0dXJuIHJ1bnRpbWUubG9nKCJXQVJOOiBFbXB0eSB0ZXh0IG5vZGUgZm91bmQgZHVyaW5nIG1lcmdlIG9wZXJhdGlvbiIpLCEwO2lmKGwuaXNPREZXaGl0ZXNwYWNlKGEuZGF0YSkmJiExPT09bC5pc1NpZ25pZmljYW50V2hpdGVzcGFjZShhLDApKXJldHVybiEwO2E9IiN0ZXh0In1lbHNlIGE9KGEucHJlZml4P2EucHJlZml4KyI6IjoiIikrYS5sb2NhbE5hbWU7cnVudGltZS5sb2coIldBUk46IFVuZXhwZWN0ZWQgdGV4dCBlbGVtZW50IGZvdW5kIG5lYXIgcGFyYWdyYXBoIGJvdW5kYXJ5IFsiKwphKyJdIik7cmV0dXJuITF9ZnVuY3Rpb24gZChjKXtjLmNvbGxhcHNlZHx8KGEuc3BsaXRCb3VuZGFyaWVzKGMpLGM9bC5nZXRUZXh0RWxlbWVudHMoYywhMSwhMCkuZmlsdGVyKGspLGMuZm9yRWFjaChmdW5jdGlvbihhKXthLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYSl9KSl9ZnVuY3Rpb24gYihhLGMsYil7YT1hLmNvbnZlcnRDdXJzb3JTdGVwVG9Eb21Qb2ludChjKTt2YXIgZD1sLmdldFBhcmFncmFwaEVsZW1lbnQoYS5ub2RlLGEub2Zmc2V0KTtydW50aW1lLmFzc2VydChCb29sZWFuKGQpLCJQYXJhZ3JhcGggbm90IGZvdW5kIGF0IHN0ZXAgIitjKTtiJiZiLnNldFBvc2l0aW9uKGEubm9kZSxhLm9mZnNldCk7cmV0dXJuIGR9dmFyIGYsbixwLHIscSxlLGw9b2RmLk9kZlV0aWxzLGE9Y29yZS5Eb21VdGlscyxjPW9kZi5OYW1lc3BhY2VzLnRleHRuczt0aGlzLmluaXQ9ZnVuY3Rpb24oYSl7Zj1hLm1lbWJlcmlkO249YS50aW1lc3RhbXA7cD1hLm1vdmVDdXJzb3I7cj1hLnBhcmFncmFwaFN0eWxlTmFtZTsKcT1wYXJzZUludChhLnNvdXJjZVN0YXJ0UG9zaXRpb24sMTApO2U9cGFyc2VJbnQoYS5kZXN0aW5hdGlvblN0YXJ0UG9zaXRpb24sMTApfTt0aGlzLmlzRWRpdD0hMDt0aGlzLmdyb3VwPXZvaWQgMDt0aGlzLmV4ZWN1dGU9ZnVuY3Rpb24obSl7dmFyIGgsbCxrPW0uZ2V0Q3Vyc29yKGYpO2g9bS5nZXRSb290Tm9kZSgpO3ZhciB6PW5ldyBvZGYuQ29sbGFwc2luZ1J1bGVzKGgpLHc9bS5jcmVhdGVTdGVwSXRlcmF0b3IoaCwwLFttLmdldFBvc2l0aW9uRmlsdGVyKCldLGgpLHY7cnVudGltZS5hc3NlcnQoZTxxLCJEZXN0aW5hdGlvbiBwYXJhZ3JhcGggKCIrZSsiKSBtdXN0IGJlIGJlZm9yZSBzb3VyY2UgcGFyYWdyYXBoICgiK3ErIikiKTtsPWIobSxlKTtoPWIobSxxLHcpO3cucHJldmlvdXNTdGVwKCk7cnVudGltZS5hc3NlcnQoYS5jb250YWluc05vZGUobCx3LmNvbnRhaW5lcigpKSwiRGVzdGluYXRpb24gcGFyYWdyYXBoIG11c3QgYmUgYWRqYWNlbnQgdG8gdGhlIHNvdXJjZSBwYXJhZ3JhcGgiKTsKdj1sLm93bmVyRG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTt3LnNldFBvc2l0aW9uKGwsbC5jaGlsZE5vZGVzLmxlbmd0aCk7dy5yb3VuZFRvUHJldmlvdXNTdGVwKCk7di5zZXRTdGFydCh3LmNvbnRhaW5lcigpLHcub2Zmc2V0KCkpO3Yuc2V0RW5kKGwsbC5jaGlsZE5vZGVzLmxlbmd0aCk7ZCh2KTt2PWwuY2hpbGROb2Rlcy5sZW5ndGg7dmFyIHU9aC5vd25lckRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7dy5zZXRQb3NpdGlvbihoLDApO3cucm91bmRUb05leHRTdGVwKCk7dS5zZXRTdGFydChoLDApO3Uuc2V0RW5kKHcuY29udGFpbmVyKCksdy5vZmZzZXQoKSk7ZCh1KTtmb3IodT1oLmZpcnN0Q2hpbGQ7dTspImVkaXRpbmZvIj09PXUubG9jYWxOYW1lP2gucmVtb3ZlQ2hpbGQodSk6KGwuYXBwZW5kQ2hpbGQodSksYS5yZW1vdmVVbndhbnRlZE5vZGVzKHUsZykpLHU9aC5maXJzdENoaWxkO3J1bnRpbWUuYXNzZXJ0KDA9PT1oLmNoaWxkTm9kZXMubGVuZ3RoLCJTb3VyY2UgcGFyYWdyYXBoIHNob3VsZCBiZSBlbXB0eSBiZWZvcmUgaXQgaXMgcmVtb3ZlZCIpOwp6Lm1lcmdlQ2hpbGRyZW5JbnRvUGFyZW50KGgpO20uZW1pdChvcHMuT2R0RG9jdW1lbnQuc2lnbmFsU3RlcHNSZW1vdmVkLHtwb3NpdGlvbjpxLTF9KTt3LnNldFBvc2l0aW9uKGwsdik7dy5yb3VuZFRvQ2xvc2VzdFN0ZXAoKTt3LnByZXZpb3VzU3RlcCgpfHx3LnJvdW5kVG9OZXh0U3RlcCgpO20uZG93bmdyYWRlV2hpdGVzcGFjZXModyk7cj9sLnNldEF0dHJpYnV0ZU5TKGMsInRleHQ6c3R5bGUtbmFtZSIscik6bC5yZW1vdmVBdHRyaWJ1dGVOUyhjLCJzdHlsZS1uYW1lIik7ayYmcCYmKG0ubW92ZUN1cnNvcihmLHEtMSwwKSxtLmVtaXQob3BzLkRvY3VtZW50LnNpZ25hbEN1cnNvck1vdmVkLGspKTttLmZpeEN1cnNvclBvc2l0aW9ucygpO20uZ2V0T2RmQ2FudmFzKCkucmVmcmVzaFNpemUoKTttLmVtaXQob3BzLk9kdERvY3VtZW50LnNpZ25hbFBhcmFncmFwaENoYW5nZWQse3BhcmFncmFwaEVsZW1lbnQ6bCxtZW1iZXJJZDpmLHRpbWVTdGFtcDpufSk7bS5nZXRPZGZDYW52YXMoKS5yZXJlbmRlckFubm90YXRpb25zKCk7CnJldHVybiEwfTt0aGlzLnNwZWM9ZnVuY3Rpb24oKXtyZXR1cm57b3B0eXBlOiJNZXJnZVBhcmFncmFwaCIsbWVtYmVyaWQ6Zix0aW1lc3RhbXA6bixtb3ZlQ3Vyc29yOnAscGFyYWdyYXBoU3R5bGVOYW1lOnIsc291cmNlU3RhcnRQb3NpdGlvbjpxLGRlc3RpbmF0aW9uU3RhcnRQb3NpdGlvbjplfX19OwpvcHMuT3BNb3ZlQ3Vyc29yPWZ1bmN0aW9uKCl7dmFyIGcsayxkLGIsZjt0aGlzLmluaXQ9ZnVuY3Rpb24obil7Zz1uLm1lbWJlcmlkO2s9bi50aW1lc3RhbXA7ZD1uLnBvc2l0aW9uO2I9bi5sZW5ndGh8fDA7Zj1uLnNlbGVjdGlvblR5cGV8fG9wcy5PZHRDdXJzb3IuUmFuZ2VTZWxlY3Rpb259O3RoaXMuaXNFZGl0PSExO3RoaXMuZ3JvdXA9dm9pZCAwO3RoaXMuZXhlY3V0ZT1mdW5jdGlvbihuKXt2YXIgaz1uLmdldEN1cnNvcihnKSxyO2lmKCFrKXJldHVybiExO3I9bi5jb252ZXJ0Q3Vyc29yVG9Eb21SYW5nZShkLGIpO2suc2V0U2VsZWN0ZWRSYW5nZShyLDA8PWIpO2suc2V0U2VsZWN0aW9uVHlwZShmKTtuLmVtaXQob3BzLkRvY3VtZW50LnNpZ25hbEN1cnNvck1vdmVkLGspO3JldHVybiEwfTt0aGlzLnNwZWM9ZnVuY3Rpb24oKXtyZXR1cm57b3B0eXBlOiJNb3ZlQ3Vyc29yIixtZW1iZXJpZDpnLHRpbWVzdGFtcDprLHBvc2l0aW9uOmQsbGVuZ3RoOmIsc2VsZWN0aW9uVHlwZTpmfX19OwpvcHMuT3BSZW1vdmVBbm5vdGF0aW9uPWZ1bmN0aW9uKCl7dmFyIGcsayxkLGIsZj1jb3JlLkRvbVV0aWxzO3RoaXMuaW5pdD1mdW5jdGlvbihmKXtnPWYubWVtYmVyaWQ7az1mLnRpbWVzdGFtcDtkPXBhcnNlSW50KGYucG9zaXRpb24sMTApO2I9cGFyc2VJbnQoZi5sZW5ndGgsMTApfTt0aGlzLmlzRWRpdD0hMDt0aGlzLmdyb3VwPXZvaWQgMDt0aGlzLmV4ZWN1dGU9ZnVuY3Rpb24oYil7ZnVuY3Rpb24gZyhiKXtxLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGIscSl9Zm9yKHZhciBrPWIuZ2V0SXRlcmF0b3JBdFBvc2l0aW9uKGQpLmNvbnRhaW5lcigpLHE7ay5uYW1lc3BhY2VVUkkhPT1vZGYuTmFtZXNwYWNlcy5vZmZpY2Vuc3x8ImFubm90YXRpb24iIT09ay5sb2NhbE5hbWU7KWs9ay5wYXJlbnROb2RlO2lmKG51bGw9PT1rKXJldHVybiExO3E9aztrPXEuYW5ub3RhdGlvbkVuZEVsZW1lbnQ7Yi5nZXRPZGZDYW52YXMoKS5mb3JnZXRBbm5vdGF0aW9uKHEpO2YuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhxLAoidXJuOndlYm9kZjpuYW1lczpjdXJzb3IiLCJjdXJzb3IiKS5mb3JFYWNoKGcpO2YuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhxLCJ1cm46d2Vib2RmOm5hbWVzOmN1cnNvciIsImFuY2hvciIpLmZvckVhY2goZyk7cS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHEpO2smJmsucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChrKTtiLmVtaXQob3BzLk9kdERvY3VtZW50LnNpZ25hbFN0ZXBzUmVtb3ZlZCx7cG9zaXRpb246MDxkP2QtMTpkfSk7Yi5nZXRPZGZDYW52YXMoKS5yZXJlbmRlckFubm90YXRpb25zKCk7Yi5maXhDdXJzb3JQb3NpdGlvbnMoKTtyZXR1cm4hMH07dGhpcy5zcGVjPWZ1bmN0aW9uKCl7cmV0dXJue29wdHlwZToiUmVtb3ZlQW5ub3RhdGlvbiIsbWVtYmVyaWQ6Zyx0aW1lc3RhbXA6ayxwb3NpdGlvbjpkLGxlbmd0aDpifX19OwpvcHMuT3BSZW1vdmVCbG9iPWZ1bmN0aW9uKCl7dmFyIGcsayxkO3RoaXMuaW5pdD1mdW5jdGlvbihiKXtnPWIubWVtYmVyaWQ7az1iLnRpbWVzdGFtcDtkPWIuZmlsZW5hbWV9O3RoaXMuaXNFZGl0PSEwO3RoaXMuZ3JvdXA9dm9pZCAwO3RoaXMuZXhlY3V0ZT1mdW5jdGlvbihiKXtiLmdldE9kZkNhbnZhcygpLm9kZkNvbnRhaW5lcigpLnJlbW92ZUJsb2IoZCk7cmV0dXJuITB9O3RoaXMuc3BlYz1mdW5jdGlvbigpe3JldHVybntvcHR5cGU6IlJlbW92ZUJsb2IiLG1lbWJlcmlkOmcsdGltZXN0YW1wOmssZmlsZW5hbWU6ZH19fTsKb3BzLk9wUmVtb3ZlQ3Vyc29yPWZ1bmN0aW9uKCl7dmFyIGcsazt0aGlzLmluaXQ9ZnVuY3Rpb24oZCl7Zz1kLm1lbWJlcmlkO2s9ZC50aW1lc3RhbXB9O3RoaXMuaXNFZGl0PSExO3RoaXMuZ3JvdXA9dm9pZCAwO3RoaXMuZXhlY3V0ZT1mdW5jdGlvbihkKXtyZXR1cm4gZC5yZW1vdmVDdXJzb3IoZyk/ITA6ITF9O3RoaXMuc3BlYz1mdW5jdGlvbigpe3JldHVybntvcHR5cGU6IlJlbW92ZUN1cnNvciIsbWVtYmVyaWQ6Zyx0aW1lc3RhbXA6a319fTsKb3BzLk9wUmVtb3ZlSHlwZXJsaW5rPWZ1bmN0aW9uKCl7dmFyIGcsayxkLGIsZj1jb3JlLkRvbVV0aWxzLG49b2RmLk9kZlV0aWxzO3RoaXMuaW5pdD1mdW5jdGlvbihmKXtnPWYubWVtYmVyaWQ7az1mLnRpbWVzdGFtcDtkPWYucG9zaXRpb247Yj1mLmxlbmd0aH07dGhpcy5pc0VkaXQ9ITA7dGhpcy5ncm91cD12b2lkIDA7dGhpcy5leGVjdXRlPWZ1bmN0aW9uKHApe3ZhciByPXAuY29udmVydEN1cnNvclRvRG9tUmFuZ2UoZCxiKSxxPW4uZ2V0SHlwZXJsaW5rRWxlbWVudHMocik7cnVudGltZS5hc3NlcnQoMT09PXEubGVuZ3RoLCJUaGUgZ2l2ZW4gcmFuZ2Ugc2hvdWxkIG9ubHkgY29udGFpbiBhIHNpbmdsZSBsaW5rLiIpO3E9Zi5tZXJnZUludG9QYXJlbnQocVswXSk7ci5kZXRhY2goKTtwLmZpeEN1cnNvclBvc2l0aW9ucygpO3AuZ2V0T2RmQ2FudmFzKCkucmVmcmVzaFNpemUoKTtwLmdldE9kZkNhbnZhcygpLnJlcmVuZGVyQW5ub3RhdGlvbnMoKTtwLmVtaXQob3BzLk9kdERvY3VtZW50LnNpZ25hbFBhcmFncmFwaENoYW5nZWQsCntwYXJhZ3JhcGhFbGVtZW50Om4uZ2V0UGFyYWdyYXBoRWxlbWVudChxKSxtZW1iZXJJZDpnLHRpbWVTdGFtcDprfSk7cmV0dXJuITB9O3RoaXMuc3BlYz1mdW5jdGlvbigpe3JldHVybntvcHR5cGU6IlJlbW92ZUh5cGVybGluayIsbWVtYmVyaWQ6Zyx0aW1lc3RhbXA6ayxwb3NpdGlvbjpkLGxlbmd0aDpifX19O29wcy5PcFJlbW92ZU1lbWJlcj1mdW5jdGlvbigpe3ZhciBnLGs7dGhpcy5pbml0PWZ1bmN0aW9uKGQpe2c9ZC5tZW1iZXJpZDtrPXBhcnNlSW50KGQudGltZXN0YW1wLDEwKX07dGhpcy5pc0VkaXQ9ITE7dGhpcy5ncm91cD12b2lkIDA7dGhpcy5leGVjdXRlPWZ1bmN0aW9uKGQpe2lmKCFkLmdldE1lbWJlcihnKSlyZXR1cm4hMTtkLnJlbW92ZU1lbWJlcihnKTtkLmVtaXQob3BzLkRvY3VtZW50LnNpZ25hbE1lbWJlclJlbW92ZWQsZyk7cmV0dXJuITB9O3RoaXMuc3BlYz1mdW5jdGlvbigpe3JldHVybntvcHR5cGU6IlJlbW92ZU1lbWJlciIsbWVtYmVyaWQ6Zyx0aW1lc3RhbXA6a319fTsKb3BzLk9wUmVtb3ZlU3R5bGU9ZnVuY3Rpb24oKXt2YXIgZyxrLGQsYjt0aGlzLmluaXQ9ZnVuY3Rpb24oZil7Zz1mLm1lbWJlcmlkO2s9Zi50aW1lc3RhbXA7ZD1mLnN0eWxlTmFtZTtiPWYuc3R5bGVGYW1pbHl9O3RoaXMuaXNFZGl0PSEwO3RoaXMuZ3JvdXA9dm9pZCAwO3RoaXMuZXhlY3V0ZT1mdW5jdGlvbihmKXt2YXIgZz1mLmdldEZvcm1hdHRpbmcoKS5nZXRTdHlsZUVsZW1lbnQoZCxiKTtpZighZylyZXR1cm4hMTtnLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZyk7Zi5nZXRPZGZDYW52YXMoKS5yZWZyZXNoQ1NTKCk7Zi5lbWl0KG9wcy5PZHREb2N1bWVudC5zaWduYWxDb21tb25TdHlsZURlbGV0ZWQse25hbWU6ZCxmYW1pbHk6Yn0pO3JldHVybiEwfTt0aGlzLnNwZWM9ZnVuY3Rpb24oKXtyZXR1cm57b3B0eXBlOiJSZW1vdmVTdHlsZSIsbWVtYmVyaWQ6Zyx0aW1lc3RhbXA6ayxzdHlsZU5hbWU6ZCxzdHlsZUZhbWlseTpifX19OwpvcHMuT3BSZW1vdmVUZXh0PWZ1bmN0aW9uKCl7dmFyIGcsayxkLGIsZj1vZGYuT2RmVXRpbHMsbj1jb3JlLkRvbVV0aWxzO3RoaXMuaW5pdD1mdW5jdGlvbihmKXtydW50aW1lLmFzc2VydCgwPD1mLmxlbmd0aCwiT3BSZW1vdmVUZXh0IG9ubHkgc3VwcG9ydHMgcG9zaXRpdmUgbGVuZ3RocyIpO2c9Zi5tZW1iZXJpZDtrPWYudGltZXN0YW1wO2Q9cGFyc2VJbnQoZi5wb3NpdGlvbiwxMCk7Yj1wYXJzZUludChmLmxlbmd0aCwxMCl9O3RoaXMuaXNFZGl0PSEwO3RoaXMuZ3JvdXA9dm9pZCAwO3RoaXMuZXhlY3V0ZT1mdW5jdGlvbihwKXt2YXIgcixxLGUsbD1wLmdldEN1cnNvcihnKSxhPW5ldyBvZGYuQ29sbGFwc2luZ1J1bGVzKHAuZ2V0Um9vdE5vZGUoKSk7cC51cGdyYWRlV2hpdGVzcGFjZXNBdFBvc2l0aW9uKGQpO3AudXBncmFkZVdoaXRlc3BhY2VzQXRQb3NpdGlvbihkK2IpO3I9cC5jb252ZXJ0Q3Vyc29yVG9Eb21SYW5nZShkLGIpO24uc3BsaXRCb3VuZGFyaWVzKHIpO3E9Zi5nZXRUZXh0RWxlbWVudHMociwKITEsITApO2U9Zi5nZXRQYXJhZ3JhcGhFbGVtZW50KHIuc3RhcnRDb250YWluZXIsci5zdGFydE9mZnNldCk7cnVudGltZS5hc3NlcnQodm9pZCAwIT09ZSwiQXR0ZW1wdGluZyB0byByZW1vdmUgdGV4dCBvdXRzaWRlIGEgcGFyYWdyYXBoIGVsZW1lbnQiKTtyLmRldGFjaCgpO3EuZm9yRWFjaChmdW5jdGlvbihjKXtjLnBhcmVudE5vZGU/KHJ1bnRpbWUuYXNzZXJ0KG4uY29udGFpbnNOb2RlKGUsYyksIlJlbW92ZVRleHQgb25seSBzdXBwb3J0cyByZW1vdmluZyBlbGVtZW50cyB3aXRoaW4gdGhlIHNhbWUgcGFyYWdyYXBoIiksYS5tZXJnZUNoaWxkcmVuSW50b1BhcmVudChjKSk6cnVudGltZS5sb2coIldBUk46IHRleHQgZWxlbWVudCBoYXMgYWxyZWFkeSBiZWVuIHJlbW92ZWQgZnJvbSBpdCdzIGNvbnRhaW5lciIpfSk7cC5lbWl0KG9wcy5PZHREb2N1bWVudC5zaWduYWxTdGVwc1JlbW92ZWQse3Bvc2l0aW9uOmR9KTtwLmRvd25ncmFkZVdoaXRlc3BhY2VzQXRQb3NpdGlvbihkKTsKcC5maXhDdXJzb3JQb3NpdGlvbnMoKTtwLmdldE9kZkNhbnZhcygpLnJlZnJlc2hTaXplKCk7cC5lbWl0KG9wcy5PZHREb2N1bWVudC5zaWduYWxQYXJhZ3JhcGhDaGFuZ2VkLHtwYXJhZ3JhcGhFbGVtZW50OmUsbWVtYmVySWQ6Zyx0aW1lU3RhbXA6a30pO2wmJihsLnJlc2V0U2VsZWN0aW9uVHlwZSgpLHAuZW1pdChvcHMuRG9jdW1lbnQuc2lnbmFsQ3Vyc29yTW92ZWQsbCkpO3AuZ2V0T2RmQ2FudmFzKCkucmVyZW5kZXJBbm5vdGF0aW9ucygpO3JldHVybiEwfTt0aGlzLnNwZWM9ZnVuY3Rpb24oKXtyZXR1cm57b3B0eXBlOiJSZW1vdmVUZXh0IixtZW1iZXJpZDpnLHRpbWVzdGFtcDprLHBvc2l0aW9uOmQsbGVuZ3RoOmJ9fX07Cm9wcy5PcFNldEJsb2I9ZnVuY3Rpb24oKXt2YXIgZyxrLGQsYixmO3RoaXMuaW5pdD1mdW5jdGlvbihuKXtnPW4ubWVtYmVyaWQ7az1uLnRpbWVzdGFtcDtkPW4uZmlsZW5hbWU7Yj1uLm1pbWV0eXBlO2Y9bi5jb250ZW50fTt0aGlzLmlzRWRpdD0hMDt0aGlzLmdyb3VwPXZvaWQgMDt0aGlzLmV4ZWN1dGU9ZnVuY3Rpb24oZyl7Zy5nZXRPZGZDYW52YXMoKS5vZGZDb250YWluZXIoKS5zZXRCbG9iKGQsYixmKTtyZXR1cm4hMH07dGhpcy5zcGVjPWZ1bmN0aW9uKCl7cmV0dXJue29wdHlwZToiU2V0QmxvYiIsbWVtYmVyaWQ6Zyx0aW1lc3RhbXA6ayxmaWxlbmFtZTpkLG1pbWV0eXBlOmIsY29udGVudDpmfX19OwpvcHMuT3BTZXRQYXJhZ3JhcGhTdHlsZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGcoYixkLGYpe3ZhciBlPVtiLmdldFBvc2l0aW9uRmlsdGVyKCldLGc9Zi5jb250YWluZXIoKTtmPWYudW5maWx0ZXJlZERvbU9mZnNldCgpO3JldHVybiExPT09Yi5jcmVhdGVTdGVwSXRlcmF0b3IoZyxmLGUsZCkucHJldmlvdXNTdGVwKCl9dmFyIGssZCxiLGYsbj1vZGYuT2RmVXRpbHM7dGhpcy5pbml0PWZ1bmN0aW9uKGcpe2s9Zy5tZW1iZXJpZDtkPWcudGltZXN0YW1wO2I9Zy5wb3NpdGlvbjtmPWcuc3R5bGVOYW1lfTt0aGlzLmlzRWRpdD0hMDt0aGlzLmdyb3VwPXZvaWQgMDt0aGlzLmV4ZWN1dGU9ZnVuY3Rpb24ocCl7dmFyIHIscTtyPXAuZ2V0SXRlcmF0b3JBdFBvc2l0aW9uKGIpO3JldHVybihxPW4uZ2V0UGFyYWdyYXBoRWxlbWVudChyLmNvbnRhaW5lcigpKSk/KHJ1bnRpbWUuYXNzZXJ0KGcocCxxLHIpLCJTZXRQYXJhZ3JhcGhTdHlsZSBwb3NpdGlvbiBzaG91bGQgYmUgdGhlIGZpcnN0IHBvc2l0aW9uIGluIHRoZSBwYXJhZ3JhcGgiKSwKZj9xLnNldEF0dHJpYnV0ZU5TKCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnRleHQ6MS4wIiwidGV4dDpzdHlsZS1uYW1lIixmKTpxLnJlbW92ZUF0dHJpYnV0ZU5TKCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnRleHQ6MS4wIiwic3R5bGUtbmFtZSIpLHAuZ2V0T2RmQ2FudmFzKCkucmVmcmVzaFNpemUoKSxwLmVtaXQob3BzLk9kdERvY3VtZW50LnNpZ25hbFBhcmFncmFwaENoYW5nZWQse3BhcmFncmFwaEVsZW1lbnQ6cSx0aW1lU3RhbXA6ZCxtZW1iZXJJZDprfSkscC5nZXRPZGZDYW52YXMoKS5yZXJlbmRlckFubm90YXRpb25zKCksITApOiExfTt0aGlzLnNwZWM9ZnVuY3Rpb24oKXtyZXR1cm57b3B0eXBlOiJTZXRQYXJhZ3JhcGhTdHlsZSIsbWVtYmVyaWQ6ayx0aW1lc3RhbXA6ZCxwb3NpdGlvbjpiLHN0eWxlTmFtZTpmfX19OwpvcHMuT3BTcGxpdFBhcmFncmFwaD1mdW5jdGlvbigpe3ZhciBnLGssZCxiLGYsbixwPW9kZi5PZGZVdGlscyxyPW9kZi5OYW1lc3BhY2VzLnRleHRuczt0aGlzLmluaXQ9ZnVuY3Rpb24ocCl7Zz1wLm1lbWJlcmlkO2s9cC50aW1lc3RhbXA7Yj1wLnBvc2l0aW9uO2Q9cC5zb3VyY2VQYXJhZ3JhcGhQb3NpdGlvbjtuPXAucGFyYWdyYXBoU3R5bGVOYW1lO2Y9InRydWUiPT09cC5tb3ZlQ3Vyc29yfHwhMD09PXAubW92ZUN1cnNvcn07dGhpcy5pc0VkaXQ9ITA7dGhpcy5ncm91cD12b2lkIDA7dGhpcy5leGVjdXRlPWZ1bmN0aW9uKGQpe3ZhciBlLGwsYSxjLG0saCx5LHg9ZC5nZXRDdXJzb3IoZyk7ZC51cGdyYWRlV2hpdGVzcGFjZXNBdFBvc2l0aW9uKGIpO2U9ZC5nZXRUZXh0Tm9kZUF0U3RlcChiKTtpZighZSlyZXR1cm4hMTtsPXAuZ2V0UGFyYWdyYXBoRWxlbWVudChlLnRleHROb2RlKTtpZighbClyZXR1cm4hMTthPXAuaXNMaXN0SXRlbShsLnBhcmVudE5vZGUpP2wucGFyZW50Tm9kZToKbDswPT09ZS5vZmZzZXQ/KHk9ZS50ZXh0Tm9kZS5wcmV2aW91c1NpYmxpbmcsaD1udWxsKTooeT1lLnRleHROb2RlLGg9ZS5vZmZzZXQ+PWUudGV4dE5vZGUubGVuZ3RoP251bGw6ZS50ZXh0Tm9kZS5zcGxpdFRleHQoZS5vZmZzZXQpKTtmb3IoYz1lLnRleHROb2RlO2MhPT1hOyl7Yz1jLnBhcmVudE5vZGU7bT1jLmNsb25lTm9kZSghMSk7aCYmbS5hcHBlbmRDaGlsZChoKTtpZih5KWZvcig7eSYmeS5uZXh0U2libGluZzspbS5hcHBlbmRDaGlsZCh5Lm5leHRTaWJsaW5nKTtlbHNlIGZvcig7Yy5maXJzdENoaWxkOyltLmFwcGVuZENoaWxkKGMuZmlyc3RDaGlsZCk7Yy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShtLGMubmV4dFNpYmxpbmcpO3k9YztoPW19cC5pc0xpc3RJdGVtKGgpJiYoaD1oLmNoaWxkTm9kZXMuaXRlbSgwKSk7bj9oLnNldEF0dHJpYnV0ZU5TKHIsInRleHQ6c3R5bGUtbmFtZSIsbik6aC5yZW1vdmVBdHRyaWJ1dGVOUyhyLCJzdHlsZS1uYW1lIik7MD09PWUudGV4dE5vZGUubGVuZ3RoJiYKZS50ZXh0Tm9kZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGUudGV4dE5vZGUpO2QuZW1pdChvcHMuT2R0RG9jdW1lbnQuc2lnbmFsU3RlcHNJbnNlcnRlZCx7cG9zaXRpb246Yn0pO3gmJmYmJihkLm1vdmVDdXJzb3IoZyxiKzEsMCksZC5lbWl0KG9wcy5Eb2N1bWVudC5zaWduYWxDdXJzb3JNb3ZlZCx4KSk7ZC5maXhDdXJzb3JQb3NpdGlvbnMoKTtkLmdldE9kZkNhbnZhcygpLnJlZnJlc2hTaXplKCk7ZC5lbWl0KG9wcy5PZHREb2N1bWVudC5zaWduYWxQYXJhZ3JhcGhDaGFuZ2VkLHtwYXJhZ3JhcGhFbGVtZW50OmwsbWVtYmVySWQ6Zyx0aW1lU3RhbXA6a30pO2QuZW1pdChvcHMuT2R0RG9jdW1lbnQuc2lnbmFsUGFyYWdyYXBoQ2hhbmdlZCx7cGFyYWdyYXBoRWxlbWVudDpoLG1lbWJlcklkOmcsdGltZVN0YW1wOmt9KTtkLmdldE9kZkNhbnZhcygpLnJlcmVuZGVyQW5ub3RhdGlvbnMoKTtyZXR1cm4hMH07dGhpcy5zcGVjPWZ1bmN0aW9uKCl7cmV0dXJue29wdHlwZToiU3BsaXRQYXJhZ3JhcGgiLAptZW1iZXJpZDpnLHRpbWVzdGFtcDprLHBvc2l0aW9uOmIsc291cmNlUGFyYWdyYXBoUG9zaXRpb246ZCxwYXJhZ3JhcGhTdHlsZU5hbWU6bixtb3ZlQ3Vyc29yOmZ9fX07Cm9wcy5PcFVwZGF0ZU1lbWJlcj1mdW5jdGlvbigpe2Z1bmN0aW9uIGcoZCl7dmFyIGY9Ii8vZGM6Y3JlYXRvcltAZWRpdGluZm86bWVtYmVyaWQ9JyIraysiJ10iO2Q9eG1sZG9tLlhQYXRoLmdldE9ERkVsZW1lbnRzV2l0aFhQYXRoKGQuZ2V0Um9vdE5vZGUoKSxmLGZ1bmN0aW9uKGIpe3JldHVybiJlZGl0aW5mbyI9PT1iPyJ1cm46d2Vib2RmOm5hbWVzOmVkaXRpbmZvIjpvZGYuTmFtZXNwYWNlcy5sb29rdXBOYW1lc3BhY2VVUkkoYil9KTtmb3IoZj0wO2Y8ZC5sZW5ndGg7Zis9MSlkW2ZdLnRleHRDb250ZW50PWIuZnVsbE5hbWV9dmFyIGssZCxiLGY7dGhpcy5pbml0PWZ1bmN0aW9uKGcpe2s9Zy5tZW1iZXJpZDtkPXBhcnNlSW50KGcudGltZXN0YW1wLDEwKTtiPWcuc2V0UHJvcGVydGllcztmPWcucmVtb3ZlZFByb3BlcnRpZXN9O3RoaXMuaXNFZGl0PSExO3RoaXMuZ3JvdXA9dm9pZCAwO3RoaXMuZXhlY3V0ZT1mdW5jdGlvbihkKXt2YXIgcD1kLmdldE1lbWJlcihrKTtpZighcClyZXR1cm4hMTsKZiYmcC5yZW1vdmVQcm9wZXJ0aWVzKGYpO2ImJihwLnNldFByb3BlcnRpZXMoYiksYi5mdWxsTmFtZSYmZyhkKSk7ZC5lbWl0KG9wcy5Eb2N1bWVudC5zaWduYWxNZW1iZXJVcGRhdGVkLHApO3JldHVybiEwfTt0aGlzLnNwZWM9ZnVuY3Rpb24oKXtyZXR1cm57b3B0eXBlOiJVcGRhdGVNZW1iZXIiLG1lbWJlcmlkOmssdGltZXN0YW1wOmQsc2V0UHJvcGVydGllczpiLHJlbW92ZWRQcm9wZXJ0aWVzOmZ9fX07Cm9wcy5PcFVwZGF0ZU1ldGFkYXRhPWZ1bmN0aW9uKCl7dmFyIGcsayxkLGI7dGhpcy5pbml0PWZ1bmN0aW9uKGYpe2c9Zi5tZW1iZXJpZDtrPXBhcnNlSW50KGYudGltZXN0YW1wLDEwKTtkPWYuc2V0UHJvcGVydGllcztiPWYucmVtb3ZlZFByb3BlcnRpZXN9O3RoaXMuaXNFZGl0PSEwO3RoaXMuZ3JvdXA9dm9pZCAwO3RoaXMuZXhlY3V0ZT1mdW5jdGlvbihmKXt2YXIgZz1mLmdldE9kZkNhbnZhcygpLm9kZkNvbnRhaW5lcigpLGs9bnVsbDtiJiYoaz1iLmF0dHJpYnV0ZXMuc3BsaXQoIiwiKSk7Zy5zZXRNZXRhZGF0YShkLGspO2YuZW1pdChvcHMuT2R0RG9jdW1lbnQuc2lnbmFsTWV0YWRhdGFVcGRhdGVkLHtzZXRQcm9wZXJ0aWVzOm51bGwhPT1kP2Q6e30scmVtb3ZlZFByb3BlcnRpZXM6bnVsbCE9PWs/azpbXX0pO3JldHVybiEwfTt0aGlzLnNwZWM9ZnVuY3Rpb24oKXtyZXR1cm57b3B0eXBlOiJVcGRhdGVNZXRhZGF0YSIsbWVtYmVyaWQ6Zyx0aW1lc3RhbXA6ayxzZXRQcm9wZXJ0aWVzOmQsCnJlbW92ZWRQcm9wZXJ0aWVzOmJ9fX07Cm9wcy5PcFVwZGF0ZVBhcmFncmFwaFN0eWxlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZyhiLGQpe3ZhciBlLGYsYT1kP2Quc3BsaXQoIiwiKTpbXTtmb3IoZT0wO2U8YS5sZW5ndGg7ZSs9MSlmPWFbZV0uc3BsaXQoIjoiKSxiLnJlbW92ZUF0dHJpYnV0ZU5TKG9kZi5OYW1lc3BhY2VzLmxvb2t1cE5hbWVzcGFjZVVSSShmWzBdKSxmWzFdKX12YXIgayxkLGIsZixuLHA9b2RmLk5hbWVzcGFjZXMuc3R5bGVuczt0aGlzLmluaXQ9ZnVuY3Rpb24oZyl7az1nLm1lbWJlcmlkO2Q9Zy50aW1lc3RhbXA7Yj1nLnN0eWxlTmFtZTtmPWcuc2V0UHJvcGVydGllcztuPWcucmVtb3ZlZFByb3BlcnRpZXN9O3RoaXMuaXNFZGl0PSEwO3RoaXMuZ3JvdXA9dm9pZCAwO3RoaXMuZXhlY3V0ZT1mdW5jdGlvbihkKXt2YXIgaz1kLmdldEZvcm1hdHRpbmcoKSxlLGwsYTtyZXR1cm4oZT0iIiE9PWI/ay5nZXRTdHlsZUVsZW1lbnQoYiwicGFyYWdyYXBoIik6ay5nZXREZWZhdWx0U3R5bGVFbGVtZW50KCJwYXJhZ3JhcGgiKSk/KGw9CmUuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhwLCJwYXJhZ3JhcGgtcHJvcGVydGllcyIpLml0ZW0oMCksYT1lLmdldEVsZW1lbnRzQnlUYWdOYW1lTlMocCwidGV4dC1wcm9wZXJ0aWVzIikuaXRlbSgwKSxmJiZrLnVwZGF0ZVN0eWxlKGUsZiksbiYmKGs9blsic3R5bGU6cGFyYWdyYXBoLXByb3BlcnRpZXMiXSxsJiZrJiYoZyhsLGsuYXR0cmlidXRlcyksMD09PWwuYXR0cmlidXRlcy5sZW5ndGgmJmUucmVtb3ZlQ2hpbGQobCkpLGs9blsic3R5bGU6dGV4dC1wcm9wZXJ0aWVzIl0sYSYmayYmKGcoYSxrLmF0dHJpYnV0ZXMpLDA9PT1hLmF0dHJpYnV0ZXMubGVuZ3RoJiZlLnJlbW92ZUNoaWxkKGEpKSxnKGUsbi5hdHRyaWJ1dGVzKSksZC5nZXRPZGZDYW52YXMoKS5yZWZyZXNoQ1NTKCksZC5lbWl0KG9wcy5PZHREb2N1bWVudC5zaWduYWxQYXJhZ3JhcGhTdHlsZU1vZGlmaWVkLGIpLGQuZ2V0T2RmQ2FudmFzKCkucmVyZW5kZXJBbm5vdGF0aW9ucygpLCEwKTohMX07dGhpcy5zcGVjPQpmdW5jdGlvbigpe3JldHVybntvcHR5cGU6IlVwZGF0ZVBhcmFncmFwaFN0eWxlIixtZW1iZXJpZDprLHRpbWVzdGFtcDpkLHN0eWxlTmFtZTpiLHNldFByb3BlcnRpZXM6ZixyZW1vdmVkUHJvcGVydGllczpufX19OwpvcHMuT3BlcmF0aW9uRmFjdG9yeT1mdW5jdGlvbigpe2Z1bmN0aW9uIGcoZCl7cmV0dXJuIGZ1bmN0aW9uKGIpe3JldHVybiBuZXcgZH19dmFyIGs7dGhpcy5yZWdpc3Rlcj1mdW5jdGlvbihkLGIpe2tbZF09Yn07dGhpcy5jcmVhdGU9ZnVuY3Rpb24oZCl7dmFyIGI9bnVsbCxmPWtbZC5vcHR5cGVdO2YmJihiPWYoZCksYi5pbml0KGQpKTtyZXR1cm4gYn07az17QWRkTWVtYmVyOmcob3BzLk9wQWRkTWVtYmVyKSxVcGRhdGVNZW1iZXI6ZyhvcHMuT3BVcGRhdGVNZW1iZXIpLFJlbW92ZU1lbWJlcjpnKG9wcy5PcFJlbW92ZU1lbWJlciksQWRkQ3Vyc29yOmcob3BzLk9wQWRkQ3Vyc29yKSxBcHBseURpcmVjdFN0eWxpbmc6ZyhvcHMuT3BBcHBseURpcmVjdFN0eWxpbmcpLFNldEJsb2I6ZyhvcHMuT3BTZXRCbG9iKSxSZW1vdmVCbG9iOmcob3BzLk9wUmVtb3ZlQmxvYiksSW5zZXJ0SW1hZ2U6ZyhvcHMuT3BJbnNlcnRJbWFnZSksSW5zZXJ0VGFibGU6ZyhvcHMuT3BJbnNlcnRUYWJsZSksCkluc2VydFRleHQ6ZyhvcHMuT3BJbnNlcnRUZXh0KSxSZW1vdmVUZXh0Omcob3BzLk9wUmVtb3ZlVGV4dCksTWVyZ2VQYXJhZ3JhcGg6ZyhvcHMuT3BNZXJnZVBhcmFncmFwaCksU3BsaXRQYXJhZ3JhcGg6ZyhvcHMuT3BTcGxpdFBhcmFncmFwaCksU2V0UGFyYWdyYXBoU3R5bGU6ZyhvcHMuT3BTZXRQYXJhZ3JhcGhTdHlsZSksVXBkYXRlUGFyYWdyYXBoU3R5bGU6ZyhvcHMuT3BVcGRhdGVQYXJhZ3JhcGhTdHlsZSksQWRkU3R5bGU6ZyhvcHMuT3BBZGRTdHlsZSksUmVtb3ZlU3R5bGU6ZyhvcHMuT3BSZW1vdmVTdHlsZSksTW92ZUN1cnNvcjpnKG9wcy5PcE1vdmVDdXJzb3IpLFJlbW92ZUN1cnNvcjpnKG9wcy5PcFJlbW92ZUN1cnNvciksQWRkQW5ub3RhdGlvbjpnKG9wcy5PcEFkZEFubm90YXRpb24pLFJlbW92ZUFubm90YXRpb246ZyhvcHMuT3BSZW1vdmVBbm5vdGF0aW9uKSxVcGRhdGVNZXRhZGF0YTpnKG9wcy5PcFVwZGF0ZU1ldGFkYXRhKSxBcHBseUh5cGVybGluazpnKG9wcy5PcEFwcGx5SHlwZXJsaW5rKSwKUmVtb3ZlSHlwZXJsaW5rOmcob3BzLk9wUmVtb3ZlSHlwZXJsaW5rKX19O29wcy5PcGVyYXRpb25Sb3V0ZXI9ZnVuY3Rpb24oKXt9O29wcy5PcGVyYXRpb25Sb3V0ZXIucHJvdG90eXBlLnNldE9wZXJhdGlvbkZhY3Rvcnk9ZnVuY3Rpb24oZyl7fTtvcHMuT3BlcmF0aW9uUm91dGVyLnByb3RvdHlwZS5zZXRQbGF5YmFja0Z1bmN0aW9uPWZ1bmN0aW9uKGcpe307b3BzLk9wZXJhdGlvblJvdXRlci5wcm90b3R5cGUucHVzaD1mdW5jdGlvbihnKXt9O29wcy5PcGVyYXRpb25Sb3V0ZXIucHJvdG90eXBlLmNsb3NlPWZ1bmN0aW9uKGcpe307b3BzLk9wZXJhdGlvblJvdXRlci5wcm90b3R5cGUuc3Vic2NyaWJlPWZ1bmN0aW9uKGcsayl7fTtvcHMuT3BlcmF0aW9uUm91dGVyLnByb3RvdHlwZS51bnN1YnNjcmliZT1mdW5jdGlvbihnLGspe307b3BzLk9wZXJhdGlvblJvdXRlci5wcm90b3R5cGUuaGFzTG9jYWxVbnN5bmNlZE9wcz1mdW5jdGlvbigpe307Cm9wcy5PcGVyYXRpb25Sb3V0ZXIucHJvdG90eXBlLmhhc1Nlc3Npb25Ib3N0Q29ubmVjdGlvbj1mdW5jdGlvbigpe307b3BzLk9wZXJhdGlvblJvdXRlci5zaWduYWxQcm9jZXNzaW5nQmF0Y2hTdGFydD0icm91dGVyL2JhdGNoc3RhcnQiO29wcy5PcGVyYXRpb25Sb3V0ZXIuc2lnbmFsUHJvY2Vzc2luZ0JhdGNoRW5kPSJyb3V0ZXIvYmF0Y2hlbmQiOwpvcHMuVHJpdmlhbE9wZXJhdGlvblJvdXRlcj1mdW5jdGlvbigpe3ZhciBnPW5ldyBjb3JlLkV2ZW50Tm90aWZpZXIoW29wcy5PcGVyYXRpb25Sb3V0ZXIuc2lnbmFsUHJvY2Vzc2luZ0JhdGNoU3RhcnQsb3BzLk9wZXJhdGlvblJvdXRlci5zaWduYWxQcm9jZXNzaW5nQmF0Y2hFbmRdKSxrLGQsYj0wO3RoaXMuc2V0T3BlcmF0aW9uRmFjdG9yeT1mdW5jdGlvbihiKXtrPWJ9O3RoaXMuc2V0UGxheWJhY2tGdW5jdGlvbj1mdW5jdGlvbihiKXtkPWJ9O3RoaXMucHVzaD1mdW5jdGlvbihmKXtiKz0xO2cuZW1pdChvcHMuT3BlcmF0aW9uUm91dGVyLnNpZ25hbFByb2Nlc3NpbmdCYXRjaFN0YXJ0LHt9KTtmLmZvckVhY2goZnVuY3Rpb24oZil7Zj1mLnNwZWMoKTtmLnRpbWVzdGFtcD1EYXRlLm5vdygpO2Y9ay5jcmVhdGUoZik7Zi5ncm91cD0iZyIrYjtkKGYpfSk7Zy5lbWl0KG9wcy5PcGVyYXRpb25Sb3V0ZXIuc2lnbmFsUHJvY2Vzc2luZ0JhdGNoRW5kLHt9KX07dGhpcy5jbG9zZT1mdW5jdGlvbihiKXtiKCl9Owp0aGlzLnN1YnNjcmliZT1mdW5jdGlvbihiLGQpe2cuc3Vic2NyaWJlKGIsZCl9O3RoaXMudW5zdWJzY3JpYmU9ZnVuY3Rpb24oYixkKXtnLnVuc3Vic2NyaWJlKGIsZCl9O3RoaXMuaGFzTG9jYWxVbnN5bmNlZE9wcz1mdW5jdGlvbigpe3JldHVybiExfTt0aGlzLmhhc1Nlc3Npb25Ib3N0Q29ubmVjdGlvbj1mdW5jdGlvbigpe3JldHVybiEwfX07Cm9wcy5TZXNzaW9uPWZ1bmN0aW9uKGcpe2Z1bmN0aW9uIGsoYil7Zi5lbWl0KG9wcy5PZHREb2N1bWVudC5zaWduYWxQcm9jZXNzaW5nQmF0Y2hTdGFydCxiKX1mdW5jdGlvbiBkKGIpe2YuZW1pdChvcHMuT2R0RG9jdW1lbnQuc2lnbmFsUHJvY2Vzc2luZ0JhdGNoRW5kLGIpfXZhciBiPW5ldyBvcHMuT3BlcmF0aW9uRmFjdG9yeSxmPW5ldyBvcHMuT2R0RG9jdW1lbnQoZyksbj1udWxsO3RoaXMuc2V0T3BlcmF0aW9uRmFjdG9yeT1mdW5jdGlvbihkKXtiPWQ7biYmbi5zZXRPcGVyYXRpb25GYWN0b3J5KGIpfTt0aGlzLnNldE9wZXJhdGlvblJvdXRlcj1mdW5jdGlvbihnKXtuJiYobi51bnN1YnNjcmliZShvcHMuT3BlcmF0aW9uUm91dGVyLnNpZ25hbFByb2Nlc3NpbmdCYXRjaFN0YXJ0LGspLG4udW5zdWJzY3JpYmUob3BzLk9wZXJhdGlvblJvdXRlci5zaWduYWxQcm9jZXNzaW5nQmF0Y2hFbmQsZCkpO249ZztuLnN1YnNjcmliZShvcHMuT3BlcmF0aW9uUm91dGVyLnNpZ25hbFByb2Nlc3NpbmdCYXRjaFN0YXJ0LAprKTtuLnN1YnNjcmliZShvcHMuT3BlcmF0aW9uUm91dGVyLnNpZ25hbFByb2Nlc3NpbmdCYXRjaEVuZCxkKTtnLnNldFBsYXliYWNrRnVuY3Rpb24oZnVuY3Rpb24oYil7Zi5lbWl0KG9wcy5PZHREb2N1bWVudC5zaWduYWxPcGVyYXRpb25TdGFydCxiKTtyZXR1cm4gYi5leGVjdXRlKGYpPyhmLmVtaXQob3BzLk9kdERvY3VtZW50LnNpZ25hbE9wZXJhdGlvbkVuZCxiKSwhMCk6ITF9KTtnLnNldE9wZXJhdGlvbkZhY3RvcnkoYil9O3RoaXMuZ2V0T3BlcmF0aW9uRmFjdG9yeT1mdW5jdGlvbigpe3JldHVybiBifTt0aGlzLmdldE9kdERvY3VtZW50PWZ1bmN0aW9uKCl7cmV0dXJuIGZ9O3RoaXMuZW5xdWV1ZT1mdW5jdGlvbihiKXtuLnB1c2goYil9O3RoaXMuY2xvc2U9ZnVuY3Rpb24oYil7bi5jbG9zZShmdW5jdGlvbihkKXtkP2IoZCk6Zi5jbG9zZShiKX0pfTt0aGlzLmRlc3Ryb3k9ZnVuY3Rpb24oYil7Zi5kZXN0cm95KGIpfTt0aGlzLnNldE9wZXJhdGlvblJvdXRlcihuZXcgb3BzLlRyaXZpYWxPcGVyYXRpb25Sb3V0ZXIpfTsKZ3VpLkFubm90YXRpb25Db250cm9sbGVyPWZ1bmN0aW9uKGcsayxkKXtmdW5jdGlvbiBiKCl7dmFyIGE9ci5nZXRDdXJzb3IoZCksYT1hJiZhLmdldE5vZGUoKSxiPSExO2EmJihiPSFsLmlzV2l0aGluQW5ub3RhdGlvbihhLHIuZ2V0Um9vdE5vZGUoKSkpO2IhPT1xJiYocT1iLGUuZW1pdChndWkuQW5ub3RhdGlvbkNvbnRyb2xsZXIuYW5ub3RhdGFibGVDaGFuZ2VkLHEpKX1mdW5jdGlvbiBmKGEpe2EuZ2V0TWVtYmVySWQoKT09PWQmJmIoKX1mdW5jdGlvbiBuKGEpe2E9PT1kJiZiKCl9ZnVuY3Rpb24gcChhKXthLmdldE1lbWJlcklkKCk9PT1kJiZiKCl9dmFyIHI9Zy5nZXRPZHREb2N1bWVudCgpLHE9ITEsZT1uZXcgY29yZS5FdmVudE5vdGlmaWVyKFtndWkuQW5ub3RhdGlvbkNvbnRyb2xsZXIuYW5ub3RhdGFibGVDaGFuZ2VkXSksbD1vZGYuT2RmVXRpbHMsYT1jb3JlLlN0ZXBEaXJlY3Rpb24uTkVYVDt0aGlzLmlzQW5ub3RhdGFibGU9ZnVuY3Rpb24oKXtyZXR1cm4gcX07dGhpcy5hZGRBbm5vdGF0aW9uPQpmdW5jdGlvbigpe3ZhciBhPW5ldyBvcHMuT3BBZGRBbm5vdGF0aW9uLGI9ci5nZXRDdXJzb3JTZWxlY3Rpb24oZCksZT1iLmxlbmd0aCxiPWIucG9zaXRpb247cSYmKDA9PT1lP2U9dm9pZCAwOihiPTA8PWU/YjpiK2UsZT1NYXRoLmFicyhlKSksYS5pbml0KHttZW1iZXJpZDpkLHBvc2l0aW9uOmIsbGVuZ3RoOmUsbmFtZTpkK0RhdGUubm93KCl9KSxnLmVucXVldWUoW2FdKSl9O3RoaXMucmVtb3ZlQW5ub3RhdGlvbj1mdW5jdGlvbihjKXt2YXIgYixlO2I9ci5nZXRNZW1iZXIoZCkuZ2V0UHJvcGVydGllcygpLmZ1bGxOYW1lO2lmKCEwIT09ay5nZXRTdGF0ZShndWkuQ29tbW9uQ29uc3RyYWludHMuRURJVC5BTk5PVEFUSU9OUy5PTkxZX0RFTEVURV9PV04pfHxiPT09bC5nZXRBbm5vdGF0aW9uQ3JlYXRvcihjKSliPXIuY29udmVydERvbVBvaW50VG9DdXJzb3JTdGVwKGMsMCxhKSxlPXIuY29udmVydERvbVBvaW50VG9DdXJzb3JTdGVwKGMsYy5jaGlsZE5vZGVzLmxlbmd0aCksYz0KbmV3IG9wcy5PcFJlbW92ZUFubm90YXRpb24sYy5pbml0KHttZW1iZXJpZDpkLHBvc2l0aW9uOmIsbGVuZ3RoOmUtYn0pLGU9bmV3IG9wcy5PcE1vdmVDdXJzb3IsZS5pbml0KHttZW1iZXJpZDpkLHBvc2l0aW9uOjA8Yj9iLTE6YixsZW5ndGg6MH0pLGcuZW5xdWV1ZShbYyxlXSl9O3RoaXMuc3Vic2NyaWJlPWZ1bmN0aW9uKGEsYil7ZS5zdWJzY3JpYmUoYSxiKX07dGhpcy51bnN1YnNjcmliZT1mdW5jdGlvbihhLGIpe2UudW5zdWJzY3JpYmUoYSxiKX07dGhpcy5kZXN0cm95PWZ1bmN0aW9uKGEpe3IudW5zdWJzY3JpYmUob3BzLkRvY3VtZW50LnNpZ25hbEN1cnNvckFkZGVkLGYpO3IudW5zdWJzY3JpYmUob3BzLkRvY3VtZW50LnNpZ25hbEN1cnNvclJlbW92ZWQsbik7ci51bnN1YnNjcmliZShvcHMuRG9jdW1lbnQuc2lnbmFsQ3Vyc29yTW92ZWQscCk7YSgpfTtrLnJlZ2lzdGVyQ29uc3RyYWludChndWkuQ29tbW9uQ29uc3RyYWludHMuRURJVC5BTk5PVEFUSU9OUy5PTkxZX0RFTEVURV9PV04pOwpyLnN1YnNjcmliZShvcHMuRG9jdW1lbnQuc2lnbmFsQ3Vyc29yQWRkZWQsZik7ci5zdWJzY3JpYmUob3BzLkRvY3VtZW50LnNpZ25hbEN1cnNvclJlbW92ZWQsbik7ci5zdWJzY3JpYmUob3BzLkRvY3VtZW50LnNpZ25hbEN1cnNvck1vdmVkLHApO2IoKX07Z3VpLkFubm90YXRpb25Db250cm9sbGVyLmFubm90YXRhYmxlQ2hhbmdlZD0iYW5ub3RhdGFibGUvY2hhbmdlZCI7Cmd1aS5BdmF0YXI9ZnVuY3Rpb24oZyxrKXt2YXIgZD10aGlzLGIsZixuO3RoaXMuc2V0Q29sb3I9ZnVuY3Rpb24oYil7Zi5zdHlsZS5ib3JkZXJDb2xvcj1ifTt0aGlzLnNldEltYWdlVXJsPWZ1bmN0aW9uKGIpe2QuaXNWaXNpYmxlKCk/Zi5zcmM9YjpuPWJ9O3RoaXMuaXNWaXNpYmxlPWZ1bmN0aW9uKCl7cmV0dXJuImJsb2NrIj09PWIuc3R5bGUuZGlzcGxheX07dGhpcy5zaG93PWZ1bmN0aW9uKCl7biYmKGYuc3JjPW4sbj12b2lkIDApO2Iuc3R5bGUuZGlzcGxheT0iYmxvY2sifTt0aGlzLmhpZGU9ZnVuY3Rpb24oKXtiLnN0eWxlLmRpc3BsYXk9Im5vbmUifTt0aGlzLm1hcmtBc0ZvY3Vzc2VkPWZ1bmN0aW9uKGQpe2Q/Yi5jbGFzc0xpc3QuYWRkKCJhY3RpdmUiKTpiLmNsYXNzTGlzdC5yZW1vdmUoImFjdGl2ZSIpfTt0aGlzLmRlc3Ryb3k9ZnVuY3Rpb24oZCl7Zy5yZW1vdmVDaGlsZChiKTtkKCl9OyhmdW5jdGlvbigpe3ZhciBkPWcub3duZXJEb2N1bWVudDtiPWQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CmY9ZC5jcmVhdGVFbGVtZW50KCJpbWciKTtiLmFwcGVuZENoaWxkKGYpO2Iuc3R5bGUuZGlzcGxheT1rPyJibG9jayI6Im5vbmUiO2IuY2xhc3NOYW1lPSJoYW5kbGUiO2cuYXBwZW5kQ2hpbGQoYil9KSgpfTtndWkuU3RlcEluZm89ZnVuY3Rpb24oKXt9O2d1aS5TdGVwSW5mby5WaXN1YWxEaXJlY3Rpb249e0xFRlRfVE9fUklHSFQ6MCxSSUdIVF9UT19MRUZUOjF9O2d1aS5TdGVwSW5mby5wcm90b3R5cGUuY29udGFpbmVyPWZ1bmN0aW9uKCl7fTtndWkuU3RlcEluZm8ucHJvdG90eXBlLm9mZnNldD1mdW5jdGlvbigpe307Z3VpLlZpc3VhbFN0ZXBTY2FubmVyPWZ1bmN0aW9uKCl7fTtndWkuVmlzdWFsU3RlcFNjYW5uZXIucHJvdG90eXBlLnByb2Nlc3M9ZnVuY3Rpb24oZyxrLGQpe307Cmd1aS5HdWlTdGVwVXRpbHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBnKGYpe2Y9ZC5nZXRDb250ZW50Qm91bmRzKGYpO3ZhciBnLGU9bnVsbDtpZihmKWlmKGYuY29udGFpbmVyLm5vZGVUeXBlPT09Tm9kZS5URVhUX05PREUpZz1mLmNvbnRhaW5lci5vd25lckRvY3VtZW50LmNyZWF0ZVJhbmdlKCksZy5zZXRTdGFydChmLmNvbnRhaW5lcixmLnN0YXJ0T2Zmc2V0KSxnLnNldEVuZChmLmNvbnRhaW5lcixmLmVuZE9mZnNldCksKGU9MDxnLmdldENsaWVudFJlY3RzKCkubGVuZ3RoP2cuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk6bnVsbCkmJiIgIj09PWYuY29udGFpbmVyLmRhdGEuc3Vic3RyaW5nKGYuc3RhcnRPZmZzZXQsZi5lbmRPZmZzZXQpJiYxPj1lLndpZHRoJiYoZT1udWxsKSxnLmRldGFjaCgpO2Vsc2UgaWYoay5pc0NoYXJhY3RlckVsZW1lbnQoZi5jb250YWluZXIpfHxrLmlzQ2hhcmFjdGVyRnJhbWUoZi5jb250YWluZXIpKWU9Yi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoZi5jb250YWluZXIpOwpyZXR1cm4gZX12YXIgaz1vZGYuT2RmVXRpbHMsZD1uZXcgb2RmLlN0ZXBVdGlscyxiPWNvcmUuRG9tVXRpbHMsZj1jb3JlLlN0ZXBEaXJlY3Rpb24uTkVYVCxuPWd1aS5TdGVwSW5mby5WaXN1YWxEaXJlY3Rpb24uTEVGVF9UT19SSUdIVCxwPWd1aS5TdGVwSW5mby5WaXN1YWxEaXJlY3Rpb24uUklHSFRfVE9fTEVGVDt0aGlzLmdldENvbnRlbnRSZWN0PWc7dGhpcy5tb3ZlVG9GaWx0ZXJlZFN0ZXA9ZnVuY3Rpb24oYixkLGUpe2Z1bmN0aW9uIGwoYSxiKXtiLnByb2Nlc3ModyxoLGspJiYoYT0hMCwheCYmYi50b2tlbiYmKHg9Yi50b2tlbikpO3JldHVybiBhfXZhciBhPWQ9PT1mLGMsbSxoLGsseCx6PWIuc25hcHNob3QoKTtjPSExO3ZhciB3O2RvIGM9ZyhiKSx3PXt0b2tlbjpiLnNuYXBzaG90KCksY29udGFpbmVyOmIuY29udGFpbmVyLG9mZnNldDpiLm9mZnNldCxkaXJlY3Rpb246ZCx2aXN1YWxEaXJlY3Rpb246ZD09PWY/bjpwfSxtPWIubmV4dFN0ZXAoKT9nKGIpOm51bGwsYi5yZXN0b3JlKHcudG9rZW4pLAphPyhoPWMsaz1tKTooaD1tLGs9YyksYz1lLnJlZHVjZShsLCExKTt3aGlsZSghYyYmYi5hZHZhbmNlU3RlcChkKSk7Y3x8ZS5mb3JFYWNoKGZ1bmN0aW9uKGEpeyF4JiZhLnRva2VuJiYoeD1hLnRva2VuKX0pO2IucmVzdG9yZSh4fHx6KTtyZXR1cm4gQm9vbGVhbih4KX19OwpndWkuQ2FyZXQ9ZnVuY3Rpb24oZyxrLGQsYil7ZnVuY3Rpb24gZigpe2Euc3R5bGUub3BhY2l0eT0iMCI9PT1hLnN0eWxlLm9wYWNpdHk/IjEiOiIwIjt0LnRyaWdnZXIoKX1mdW5jdGlvbiBuKCl7eS5zZWxlY3ROb2RlQ29udGVudHMoaCk7cmV0dXJuIHkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9ZnVuY3Rpb24gcChhKXtyZXR1cm4gRVthXSE9PUxbYV19ZnVuY3Rpb24gcigpe09iamVjdC5rZXlzKEwpLmZvckVhY2goZnVuY3Rpb24oYSl7RVthXT1MW2FdfSl9ZnVuY3Rpb24gcSgpe2lmKCExPT09TC5pc1Nob3dufHxnLmdldFNlbGVjdGlvblR5cGUoKSE9PW9wcy5PZHRDdXJzb3IuUmFuZ2VTZWxlY3Rpb258fCFiJiYhZy5nZXRTZWxlY3RlZFJhbmdlKCkuY29sbGFwc2VkKUwudmlzaWJpbGl0eT0iaGlkZGVuIixhLnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiIsdC5jYW5jZWwoKTtlbHNlIGlmKEwudmlzaWJpbGl0eT0idmlzaWJsZSIsYS5zdHlsZS52aXNpYmlsaXR5PSJ2aXNpYmxlIiwKITE9PT1MLmlzRm9jdXNlZClhLnN0eWxlLm9wYWNpdHk9IjEiLHQuY2FuY2VsKCk7ZWxzZXtpZihBfHxwKCJ2aXNpYmlsaXR5IikpYS5zdHlsZS5vcGFjaXR5PSIxIix0LmNhbmNlbCgpO3QudHJpZ2dlcigpfWlmKEt8fEkpe3ZhciBkO2Q9Zy5nZXROb2RlKCk7dmFyIGUsaCxmPXouZ2V0Qm91bmRpbmdDbGllbnRSZWN0KHguZ2V0U2l6ZXIoKSkscT0hMSx5PTA7ZC5yZW1vdmVBdHRyaWJ1dGVOUygidXJuOndlYm9kZjpuYW1lczpjdXJzb3IiLCJjYXJldC1zaXplci1hY3RpdmUiKTtpZigwPGQuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgpaD1uKCkseT1oLmxlZnQtei5nZXRCb3VuZGluZ0NsaWVudFJlY3QoZCkubGVmdCxxPSEwO2Vsc2UgaWYodi5zZXRQb3NpdGlvbihkLDApLGg9dy5nZXRDb250ZW50UmVjdCh2KSwhaCYmdi5uZXh0U3RlcCgpJiYoZT13LmdldENvbnRlbnRSZWN0KHYpKSYmKGg9ZSxxPSEwKSxofHwoZC5zZXRBdHRyaWJ1dGVOUygidXJuOndlYm9kZjpuYW1lczpjdXJzb3IiLAoiY2FyZXQtc2l6ZXItYWN0aXZlIiwidHJ1ZSIpLGg9bigpLHE9ITApLCFoKWZvcihydW50aW1lLmxvZygiV0FSTjogTm8gc3VpdGFibGUgY2xpZW50IHJlY3RhbmdsZSBmb3VuZCBmb3IgdmlzdWFsIGNhcmV0IGZvciAiK2cuZ2V0TWVtYmVySWQoKSk7ZDspe2lmKDA8ZC5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCl7aD16LmdldEJvdW5kaW5nQ2xpZW50UmVjdChkKTtxPSEwO2JyZWFrfWQ9ZC5wYXJlbnROb2RlfWg9ei50cmFuc2xhdGVSZWN0KGgsZix4LmdldFpvb21MZXZlbCgpKTtkPXt0b3A6aC50b3AsaGVpZ2h0OmguaGVpZ2h0LHJpZ2h0OnE/aC5sZWZ0OmgucmlnaHQsd2lkdGg6ei5hZGFwdFJhbmdlRGlmZmVyZW5jZVRvWm9vbUxldmVsKHkseC5nZXRab29tTGV2ZWwoKSl9Ozg+ZC5oZWlnaHQmJihkPXt0b3A6ZC50b3AtKDgtZC5oZWlnaHQpLzIsaGVpZ2h0OjgscmlnaHQ6ZC5yaWdodH0pO2wuc3R5bGUuaGVpZ2h0PWQuaGVpZ2h0KyJweCI7bC5zdHlsZS50b3A9ZC50b3ArInB4IjsKbC5zdHlsZS5sZWZ0PWQucmlnaHQtZC53aWR0aCsicHgiO2wuc3R5bGUud2lkdGg9ZC53aWR0aD9kLndpZHRoKyJweCI6IiI7bSYmKGQ9cnVudGltZS5nZXRXaW5kb3coKS5nZXRDb21wdXRlZFN0eWxlKGcuZ2V0Tm9kZSgpLG51bGwpLGQuZm9udD9tLnN0eWxlLmZvbnQ9ZC5mb250OihtLnN0eWxlLmZvbnRTdHlsZT1kLmZvbnRTdHlsZSxtLnN0eWxlLmZvbnRWYXJpYW50PWQuZm9udFZhcmlhbnQsbS5zdHlsZS5mb250V2VpZ2h0PWQuZm9udFdlaWdodCxtLnN0eWxlLmZvbnRTaXplPWQuZm9udFNpemUsbS5zdHlsZS5saW5lSGVpZ2h0PWQubGluZUhlaWdodCxtLnN0eWxlLmZvbnRGYW1pbHk9ZC5mb250RmFtaWx5KSl9TC5pc1Nob3duJiZJJiZrLnNjcm9sbEludG9WaWV3KGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO3AoImlzRm9jdXNlZCIpJiZjLm1hcmtBc0ZvY3Vzc2VkKEwuaXNGb2N1c2VkKTtyKCk7Sz1JPUE9ITF9ZnVuY3Rpb24gZShhKXtsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobCk7CmgucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChoKTthKCl9dmFyIGwsYSxjLG0saCx5LHg9Zy5nZXREb2N1bWVudCgpLmdldENhbnZhcygpLHo9Y29yZS5Eb21VdGlscyx3PW5ldyBndWkuR3VpU3RlcFV0aWxzLHYsdSx0LEE9ITEsST0hMSxLPSExLEw9e2lzRm9jdXNlZDohMSxpc1Nob3duOiEwLHZpc2liaWxpdHk6ImhpZGRlbiJ9LEU9e2lzRm9jdXNlZDohTC5pc0ZvY3VzZWQsaXNTaG93bjohTC5pc1Nob3duLHZpc2liaWxpdHk6ImhpZGRlbiJ9O3RoaXMuaGFuZGxlVXBkYXRlPWZ1bmN0aW9uKCl7Sz0hMDt1LnRyaWdnZXIoKX07dGhpcy5yZWZyZXNoQ3Vyc29yQmxpbmtpbmc9ZnVuY3Rpb24oKXtBPSEwO3UudHJpZ2dlcigpfTt0aGlzLnNldEZvY3VzPWZ1bmN0aW9uKCl7TC5pc0ZvY3VzZWQ9ITA7dS50cmlnZ2VyKCl9O3RoaXMucmVtb3ZlRm9jdXM9ZnVuY3Rpb24oKXtMLmlzRm9jdXNlZD0hMTt1LnRyaWdnZXIoKX07dGhpcy5zaG93PWZ1bmN0aW9uKCl7TC5pc1Nob3duPSEwO3UudHJpZ2dlcigpfTsKdGhpcy5oaWRlPWZ1bmN0aW9uKCl7TC5pc1Nob3duPSExO3UudHJpZ2dlcigpfTt0aGlzLnNldEF2YXRhckltYWdlVXJsPWZ1bmN0aW9uKGEpe2Muc2V0SW1hZ2VVcmwoYSl9O3RoaXMuc2V0Q29sb3I9ZnVuY3Rpb24oYil7YS5zdHlsZS5ib3JkZXJDb2xvcj1iO2Muc2V0Q29sb3IoYil9O3RoaXMuZ2V0Q3Vyc29yPWZ1bmN0aW9uKCl7cmV0dXJuIGd9O3RoaXMuZ2V0Rm9jdXNFbGVtZW50PWZ1bmN0aW9uKCl7cmV0dXJuIGF9O3RoaXMudG9nZ2xlSGFuZGxlVmlzaWJpbGl0eT1mdW5jdGlvbigpe2MuaXNWaXNpYmxlKCk/Yy5oaWRlKCk6Yy5zaG93KCl9O3RoaXMuc2hvd0hhbmRsZT1mdW5jdGlvbigpe2Muc2hvdygpfTt0aGlzLmhpZGVIYW5kbGU9ZnVuY3Rpb24oKXtjLmhpZGUoKX07dGhpcy5zZXRPdmVybGF5RWxlbWVudD1mdW5jdGlvbihhKXttPWE7bC5hcHBlbmRDaGlsZChhKTtLPSEwO3UudHJpZ2dlcigpfTt0aGlzLmVuc3VyZVZpc2libGU9ZnVuY3Rpb24oKXtJPSEwO3UudHJpZ2dlcigpfTsKdGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gei5nZXRCb3VuZGluZ0NsaWVudFJlY3QobCl9O3RoaXMuZGVzdHJveT1mdW5jdGlvbihhKXtjb3JlLkFzeW5jLmRlc3Ryb3lBbGwoW3UuZGVzdHJveSx0LmRlc3Ryb3ksYy5kZXN0cm95LGVdLGEpfTsoZnVuY3Rpb24oKXt2YXIgYj1nLmdldERvY3VtZW50KCksZT1bYi5jcmVhdGVSb290RmlsdGVyKGcuZ2V0TWVtYmVySWQoKSksYi5nZXRQb3NpdGlvbkZpbHRlcigpXSxtPWIuZ2V0RE9NRG9jdW1lbnQoKTt5PW0uY3JlYXRlUmFuZ2UoKTtoPW0uY3JlYXRlRWxlbWVudCgic3BhbiIpO2guY2xhc3NOYW1lPSJ3ZWJvZGYtY2FyZXRTaXplciI7aC50ZXh0Q29udGVudD0ifCI7Zy5nZXROb2RlKCkuYXBwZW5kQ2hpbGQoaCk7bD1tLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2wuc2V0QXR0cmlidXRlTlMoInVybjp3ZWJvZGY6bmFtZXM6ZWRpdGluZm8iLCJlZGl0aW5mbzptZW1iZXJpZCIsZy5nZXRNZW1iZXJJZCgpKTsKbC5jbGFzc05hbWU9IndlYm9kZi1jYXJldE92ZXJsYXkiO2E9bS5jcmVhdGVFbGVtZW50KCJkaXYiKTthLmNsYXNzTmFtZT0iY2FyZXQiO2wuYXBwZW5kQ2hpbGQoYSk7Yz1uZXcgZ3VpLkF2YXRhcihsLGQpO3guZ2V0U2l6ZXIoKS5hcHBlbmRDaGlsZChsKTt2PWIuY3JlYXRlU3RlcEl0ZXJhdG9yKGcuZ2V0Tm9kZSgpLDAsZSxiLmdldFJvb3ROb2RlKCkpO3U9Y29yZS5UYXNrLmNyZWF0ZVJlZHJhd1Rhc2socSk7dD1jb3JlLlRhc2suY3JlYXRlVGltZW91dFRhc2soZiw1MDApO3UudHJpZ2dlckltbWVkaWF0ZSgpfSkoKX07Cm9kZi5UZXh0U2VyaWFsaXplcj1mdW5jdGlvbigpe2Z1bmN0aW9uIGcoYil7dmFyIGY9IiIsbj1rLmZpbHRlcj9rLmZpbHRlci5hY2NlcHROb2RlKGIpOk5vZGVGaWx0ZXIuRklMVEVSX0FDQ0VQVCxwPWIubm9kZVR5cGUscjtpZigobj09PU5vZGVGaWx0ZXIuRklMVEVSX0FDQ0VQVHx8bj09PU5vZGVGaWx0ZXIuRklMVEVSX1NLSVApJiZkLmlzVGV4dENvbnRlbnRDb250YWluaW5nTm9kZShiKSlmb3Iocj1iLmZpcnN0Q2hpbGQ7cjspZis9ZyhyKSxyPXIubmV4dFNpYmxpbmc7bj09PU5vZGVGaWx0ZXIuRklMVEVSX0FDQ0VQVCYmKHA9PT1Ob2RlLkVMRU1FTlRfTk9ERSYmZC5pc1BhcmFncmFwaChiKT9mKz0iXG4iOnA9PT1Ob2RlLlRFWFRfTk9ERSYmYi50ZXh0Q29udGVudCYmKGYrPWIudGV4dENvbnRlbnQpKTtyZXR1cm4gZn12YXIgaz10aGlzLGQ9b2RmLk9kZlV0aWxzO3RoaXMuZmlsdGVyPW51bGw7dGhpcy53cml0ZVRvU3RyaW5nPWZ1bmN0aW9uKGIpe2lmKCFiKXJldHVybiIiOwpiPWcoYik7IlxuIj09PWJbYi5sZW5ndGgtMV0mJihiPWIuc3Vic3RyKDAsYi5sZW5ndGgtMSkpO3JldHVybiBifX07Z3VpLk1pbWVEYXRhRXhwb3J0ZXI9ZnVuY3Rpb24oKXt2YXIgZzt0aGlzLmV4cG9ydFJhbmdlVG9EYXRhVHJhbnNmZXI9ZnVuY3Rpb24oayxkKXt2YXIgYjtiPWQuc3RhcnRDb250YWluZXIub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7Yi5hcHBlbmRDaGlsZChkLmNsb25lQ29udGVudHMoKSk7Yj1nLndyaXRlVG9TdHJpbmcoYik7dHJ5e2suc2V0RGF0YSgidGV4dC9wbGFpbiIsYil9Y2F0Y2goZil7ay5zZXREYXRhKCJUZXh0IixiKX19O2c9bmV3IG9kZi5UZXh0U2VyaWFsaXplcjtnLmZpbHRlcj1uZXcgb2RmLk9kZk5vZGVGaWx0ZXJ9OwpndWkuQ2xpcGJvYXJkPWZ1bmN0aW9uKGcpe3RoaXMuc2V0RGF0YUZyb21SYW5nZT1mdW5jdGlvbihrLGQpe3ZhciBiLGY9ay5jbGlwYm9hcmREYXRhO2I9cnVudGltZS5nZXRXaW5kb3coKTshZiYmYiYmKGY9Yi5jbGlwYm9hcmREYXRhKTtmPyhiPSEwLGcuZXhwb3J0UmFuZ2VUb0RhdGFUcmFuc2ZlcihmLGQpLGsucHJldmVudERlZmF1bHQoKSk6Yj0hMTtyZXR1cm4gYn19OwpndWkuU2Vzc2lvbkNvbnRleHQ9ZnVuY3Rpb24oZyxrKXt2YXIgZD1nLmdldE9kdERvY3VtZW50KCksYj1vZGYuT2RmVXRpbHM7dGhpcy5pc0xvY2FsQ3Vyc29yV2l0aGluT3duQW5ub3RhdGlvbj1mdW5jdGlvbigpe3ZhciBmPWQuZ2V0Q3Vyc29yKGspLGc7aWYoIWYpcmV0dXJuITE7Zz1mJiZmLmdldE5vZGUoKTtmPWQuZ2V0TWVtYmVyKGspLmdldFByb3BlcnRpZXMoKS5mdWxsTmFtZTtyZXR1cm4oZz1iLmdldFBhcmVudEFubm90YXRpb24oZyxkLmdldFJvb3ROb2RlKCkpKSYmYi5nZXRBbm5vdGF0aW9uQ3JlYXRvcihnKT09PWY/ITA6ITF9fTsKZ3VpLlN0eWxlU3VtbWFyeT1mdW5jdGlvbihnKXtmdW5jdGlvbiBrKGIsZCl7dmFyIGs9YisifCIrZCxxO2YuaGFzT3duUHJvcGVydHkoayl8fChxPVtdLGcuZm9yRWFjaChmdW5jdGlvbihlKXtlPShlPWUuc3R5bGVQcm9wZXJ0aWVzW2JdKSYmZVtkXTstMT09PXEuaW5kZXhPZihlKSYmcS5wdXNoKGUpfSksZltrXT1xKTtyZXR1cm4gZltrXX1mdW5jdGlvbiBkKGIsZCxmKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZz1rKGIsZCk7cmV0dXJuIGYubGVuZ3RoPj1nLmxlbmd0aCYmZy5ldmVyeShmdW5jdGlvbihiKXtyZXR1cm4tMSE9PWYuaW5kZXhPZihiKX0pfX1mdW5jdGlvbiBiKGIsZCl7dmFyIGY9ayhiLGQpO3JldHVybiAxPT09Zi5sZW5ndGg/ZlswXTp2b2lkIDB9dmFyIGY9e307dGhpcy5nZXRQcm9wZXJ0eVZhbHVlcz1rO3RoaXMuZ2V0Q29tbW9uVmFsdWU9Yjt0aGlzLmlzQm9sZD1kKCJzdHlsZTp0ZXh0LXByb3BlcnRpZXMiLCJmbzpmb250LXdlaWdodCIsWyJib2xkIl0pO3RoaXMuaXNJdGFsaWM9CmQoInN0eWxlOnRleHQtcHJvcGVydGllcyIsImZvOmZvbnQtc3R5bGUiLFsiaXRhbGljIl0pO3RoaXMuaGFzVW5kZXJsaW5lPWQoInN0eWxlOnRleHQtcHJvcGVydGllcyIsInN0eWxlOnRleHQtdW5kZXJsaW5lLXN0eWxlIixbInNvbGlkIl0pO3RoaXMuaGFzU3RyaWtlVGhyb3VnaD1kKCJzdHlsZTp0ZXh0LXByb3BlcnRpZXMiLCJzdHlsZTp0ZXh0LWxpbmUtdGhyb3VnaC1zdHlsZSIsWyJzb2xpZCJdKTt0aGlzLmZvbnRTaXplPWZ1bmN0aW9uKCl7dmFyIGQ9Yigic3R5bGU6dGV4dC1wcm9wZXJ0aWVzIiwiZm86Zm9udC1zaXplIik7cmV0dXJuIGQmJnBhcnNlRmxvYXQoZCl9O3RoaXMuZm9udE5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gYigic3R5bGU6dGV4dC1wcm9wZXJ0aWVzIiwic3R5bGU6Zm9udC1uYW1lIil9O3RoaXMuaXNBbGlnbmVkTGVmdD1kKCJzdHlsZTpwYXJhZ3JhcGgtcHJvcGVydGllcyIsImZvOnRleHQtYWxpZ24iLFsibGVmdCIsInN0YXJ0Il0pO3RoaXMuaXNBbGlnbmVkQ2VudGVyPQpkKCJzdHlsZTpwYXJhZ3JhcGgtcHJvcGVydGllcyIsImZvOnRleHQtYWxpZ24iLFsiY2VudGVyIl0pO3RoaXMuaXNBbGlnbmVkUmlnaHQ9ZCgic3R5bGU6cGFyYWdyYXBoLXByb3BlcnRpZXMiLCJmbzp0ZXh0LWFsaWduIixbInJpZ2h0IiwiZW5kIl0pO3RoaXMuaXNBbGlnbmVkSnVzdGlmaWVkPWQoInN0eWxlOnBhcmFncmFwaC1wcm9wZXJ0aWVzIiwiZm86dGV4dC1hbGlnbiIsWyJqdXN0aWZ5Il0pO3RoaXMudGV4dD17aXNCb2xkOnRoaXMuaXNCb2xkLGlzSXRhbGljOnRoaXMuaXNJdGFsaWMsaGFzVW5kZXJsaW5lOnRoaXMuaGFzVW5kZXJsaW5lLGhhc1N0cmlrZVRocm91Z2g6dGhpcy5oYXNTdHJpa2VUaHJvdWdoLGZvbnRTaXplOnRoaXMuZm9udFNpemUsZm9udE5hbWU6dGhpcy5mb250TmFtZX07dGhpcy5wYXJhZ3JhcGg9e2lzQWxpZ25lZExlZnQ6dGhpcy5pc0FsaWduZWRMZWZ0LGlzQWxpZ25lZENlbnRlcjp0aGlzLmlzQWxpZ25lZENlbnRlcixpc0FsaWduZWRSaWdodDp0aGlzLmlzQWxpZ25lZFJpZ2h0LAppc0FsaWduZWRKdXN0aWZpZWQ6dGhpcy5pc0FsaWduZWRKdXN0aWZpZWR9fTsKZ3VpLkRpcmVjdEZvcm1hdHRpbmdDb250cm9sbGVyPWZ1bmN0aW9uKGcsayxkLGIsZixuLHApe2Z1bmN0aW9uIHIoKXtyZXR1cm4gVS52YWx1ZSgpLnN0eWxlU3VtbWFyeX1mdW5jdGlvbiBxKCl7cmV0dXJuIFUudmFsdWUoKS5lbmFibGVkRmVhdHVyZXN9ZnVuY3Rpb24gZShhKXt2YXIgYjthLmNvbGxhcHNlZD8oYj1hLnN0YXJ0Q29udGFpbmVyLGIuaGFzQ2hpbGROb2RlcygpJiZhLnN0YXJ0T2Zmc2V0PGIuY2hpbGROb2Rlcy5sZW5ndGgmJihiPWIuY2hpbGROb2Rlcy5pdGVtKGEuc3RhcnRPZmZzZXQpKSxhPVtiXSk6YT1TLmdldFRleHRFbGVtZW50cyhhLCEwLCExKTtyZXR1cm4gYX1mdW5jdGlvbiBsKCl7dmFyIGE9UC5nZXRDdXJzb3IoYiksYz1hJiZhLmdldFNlbGVjdGVkUmFuZ2UoKSxoPVtdLGg9W10sZj0hMCxnPXtkaXJlY3RUZXh0U3R5bGluZzohMCxkaXJlY3RQYXJhZ3JhcGhTdHlsaW5nOiEwfTtjJiYoaD1lKGMpLDA9PT1oLmxlbmd0aCYmKGg9W2Muc3RhcnRDb250YWluZXIsCmMuZW5kQ29udGFpbmVyXSxmPSExKSxoPVAuZ2V0Rm9ybWF0dGluZygpLmdldEFwcGxpZWRTdHlsZXMoaCkpO3ZvaWQgMCE9PWhbMF0mJlomJihoWzBdLnN0eWxlUHJvcGVydGllcz1hYS5tZXJnZU9iamVjdHMoaFswXS5zdHlsZVByb3BlcnRpZXMsWikpOyEwPT09ay5nZXRTdGF0ZShndWkuQ29tbW9uQ29uc3RyYWludHMuRURJVC5SRVZJRVdfTU9ERSkmJihnLmRpcmVjdFRleHRTdHlsaW5nPWcuZGlyZWN0UGFyYWdyYXBoU3R5bGluZz1kLmlzTG9jYWxDdXJzb3JXaXRoaW5Pd25Bbm5vdGF0aW9uKCkpO2cuZGlyZWN0VGV4dFN0eWxpbmcmJihnLmRpcmVjdFRleHRTdHlsaW5nPWYmJnZvaWQgMCE9PWEmJmEuZ2V0U2VsZWN0aW9uVHlwZSgpPT09b3BzLk9kdEN1cnNvci5SYW5nZVNlbGVjdGlvbik7cmV0dXJue2VuYWJsZWRGZWF0dXJlczpnLGFwcGxpZWRTdHlsZXM6aCxzdHlsZVN1bW1hcnk6bmV3IGd1aS5TdHlsZVN1bW1hcnkoaCl9fWZ1bmN0aW9uIGEoYSxiKXt2YXIgYz17fTtPYmplY3Qua2V5cyhhKS5mb3JFYWNoKGZ1bmN0aW9uKGQpe3ZhciBlPQphW2RdKCksaD1iW2RdKCk7ZSE9PWgmJihjW2RdPWgpfSk7cmV0dXJuIGN9ZnVuY3Rpb24gYygpe3ZhciBiLGM7Yz1iYS5zdHlsZVN1bW1hcnk7dmFyIGQ9VS52YWx1ZSgpLGU9ZC5zdHlsZVN1bW1hcnksaD1iYS5lbmFibGVkRmVhdHVyZXMsZj1kLmVuYWJsZWRGZWF0dXJlcztiPWEoYy50ZXh0LGUudGV4dCk7Yz1hKGMucGFyYWdyYXBoLGUucGFyYWdyYXBoKTtoPSEoZi5kaXJlY3RUZXh0U3R5bGluZz09PWguZGlyZWN0VGV4dFN0eWxpbmcmJmYuZGlyZWN0UGFyYWdyYXBoU3R5bGluZz09PWguZGlyZWN0UGFyYWdyYXBoU3R5bGluZyk7YmE9ZDtoJiZmYS5lbWl0KGd1aS5EaXJlY3RGb3JtYXR0aW5nQ29udHJvbGxlci5lbmFibGVkQ2hhbmdlZCxmKTswPE9iamVjdC5rZXlzKGIpLmxlbmd0aCYmZmEuZW1pdChndWkuRGlyZWN0Rm9ybWF0dGluZ0NvbnRyb2xsZXIudGV4dFN0eWxpbmdDaGFuZ2VkLGIpOzA8T2JqZWN0LmtleXMoYykubGVuZ3RoJiZmYS5lbWl0KGd1aS5EaXJlY3RGb3JtYXR0aW5nQ29udHJvbGxlci5wYXJhZ3JhcGhTdHlsaW5nQ2hhbmdlZCwKYyl9ZnVuY3Rpb24gbSgpe1UucmVzZXQoKTtjKCl9ZnVuY3Rpb24gaChhKXsoInN0cmluZyI9PT10eXBlb2YgYT9hOmEuZ2V0TWVtYmVySWQoKSk9PT1iJiZVLnJlc2V0KCl9ZnVuY3Rpb24geSgpe1UucmVzZXQoKX1mdW5jdGlvbiB4KGEpe3ZhciBjPVAuZ2V0Q3Vyc29yKGIpO2E9YS5wYXJhZ3JhcGhFbGVtZW50O2MmJlMuZ2V0UGFyYWdyYXBoRWxlbWVudChjLmdldE5vZGUoKSk9PT1hJiZVLnJlc2V0KCl9ZnVuY3Rpb24geihhLGIpe2IoIWEoKSk7cmV0dXJuITB9ZnVuY3Rpb24gdyhhKXtpZihxKCkuZGlyZWN0VGV4dFN0eWxpbmcpe3ZhciBjPVAuZ2V0Q3Vyc29yU2VsZWN0aW9uKGIpLGQ9eyJzdHlsZTp0ZXh0LXByb3BlcnRpZXMiOmF9OzAhPT1jLmxlbmd0aD8oYT1uZXcgb3BzLk9wQXBwbHlEaXJlY3RTdHlsaW5nLGEuaW5pdCh7bWVtYmVyaWQ6Yixwb3NpdGlvbjpjLnBvc2l0aW9uLGxlbmd0aDpjLmxlbmd0aCxzZXRQcm9wZXJ0aWVzOmR9KSxnLmVucXVldWUoW2FdKSk6KFo9CmFhLm1lcmdlT2JqZWN0cyhafHx7fSxkKSxVLnJlc2V0KCkpfX1mdW5jdGlvbiB2KGEsYil7dmFyIGM9e307Y1thXT1iO3coYyl9ZnVuY3Rpb24gdShhKXthPWEuc3BlYygpO1omJmEubWVtYmVyaWQ9PT1iJiYiU3BsaXRQYXJhZ3JhcGgiIT09YS5vcHR5cGUmJihaPW51bGwsVS5yZXNldCgpKX1mdW5jdGlvbiB0KGEpe3YoImZvOmZvbnQtd2VpZ2h0IixhPyJib2xkIjoibm9ybWFsIil9ZnVuY3Rpb24gQShhKXt2KCJmbzpmb250LXN0eWxlIixhPyJpdGFsaWMiOiJub3JtYWwiKX1mdW5jdGlvbiBJKGEpe3YoInN0eWxlOnRleHQtdW5kZXJsaW5lLXN0eWxlIixhPyJzb2xpZCI6Im5vbmUiKX1mdW5jdGlvbiBLKGEpe3YoInN0eWxlOnRleHQtbGluZS10aHJvdWdoLXN0eWxlIixhPyJzb2xpZCI6Im5vbmUiKX1mdW5jdGlvbiBMKGEpe2lmKHEoKS5kaXJlY3RQYXJhZ3JhcGhTdHlsaW5nKXt2YXIgYz1QLmdldEN1cnNvcihiKS5nZXRTZWxlY3RlZFJhbmdlKCksYz1TLmdldFBhcmFncmFwaEVsZW1lbnRzKGMpLApkPVAuZ2V0Rm9ybWF0dGluZygpLGU9W10saD17fSxtO2MuZm9yRWFjaChmdW5jdGlvbihjKXt2YXIgZz1QLmNvbnZlcnREb21Qb2ludFRvQ3Vyc29yU3RlcChjLDAsQyksbD1jLmdldEF0dHJpYnV0ZU5TKG9kZi5OYW1lc3BhY2VzLnRleHRucywic3R5bGUtbmFtZSIpLGs7Yz1sP2guaGFzT3duUHJvcGVydHkobCk/aFtsXTp2b2lkIDA6bTtjfHwoYz1mLmdlbmVyYXRlU3R5bGVOYW1lKCksbD8oaFtsXT1jLGs9ZC5jcmVhdGVEZXJpdmVkU3R5bGVPYmplY3QobCwicGFyYWdyYXBoIix7fSkpOihtPWMsaz17fSksaz1hKGspLGw9bmV3IG9wcy5PcEFkZFN0eWxlLGwuaW5pdCh7bWVtYmVyaWQ6YixzdHlsZU5hbWU6Yy50b1N0cmluZygpLHN0eWxlRmFtaWx5OiJwYXJhZ3JhcGgiLGlzQXV0b21hdGljU3R5bGU6ITAsc2V0UHJvcGVydGllczprfSksZS5wdXNoKGwpKTtsPW5ldyBvcHMuT3BTZXRQYXJhZ3JhcGhTdHlsZTtsLmluaXQoe21lbWJlcmlkOmIsc3R5bGVOYW1lOmMudG9TdHJpbmcoKSwKcG9zaXRpb246Z30pO2UucHVzaChsKX0pO2cuZW5xdWV1ZShlKX19ZnVuY3Rpb24gRShhKXtMKGZ1bmN0aW9uKGIpe3JldHVybiBhYS5tZXJnZU9iamVjdHMoYixhKX0pfWZ1bmN0aW9uIE4oYSl7RSh7InN0eWxlOnBhcmFncmFwaC1wcm9wZXJ0aWVzIjp7ImZvOnRleHQtYWxpZ24iOmF9fSl9ZnVuY3Rpb24gTyhhLGIpe3ZhciBjPVAuZ2V0Rm9ybWF0dGluZygpLmdldERlZmF1bHRUYWJTdG9wRGlzdGFuY2UoKSxkPWJbInN0eWxlOnBhcmFncmFwaC1wcm9wZXJ0aWVzIl0sZTtkJiYoZD1kWyJmbzptYXJnaW4tbGVmdCJdLGU9Uy5wYXJzZUxlbmd0aChkKSk7cmV0dXJuIGFhLm1lcmdlT2JqZWN0cyhiLHsic3R5bGU6cGFyYWdyYXBoLXByb3BlcnRpZXMiOnsiZm86bWFyZ2luLWxlZnQiOmUmJmUudW5pdD09PWMudW5pdD9lLnZhbHVlK2EqYy52YWx1ZStlLnVuaXQ6YSpjLnZhbHVlK2MudW5pdH19KX1mdW5jdGlvbiBEKGEsYil7dmFyIGM9ZShhKSxjPTA9PT1jLmxlbmd0aD9bYS5zdGFydENvbnRhaW5lcl06CmMsYz1QLmdldEZvcm1hdHRpbmcoKS5nZXRBcHBsaWVkU3R5bGVzKGMpLGQ9MDxjLmxlbmd0aD9jWzBdLnN0eWxlUHJvcGVydGllczp2b2lkIDAsaD1QLmdldEZvcm1hdHRpbmcoKS5nZXRBcHBsaWVkU3R5bGVzRm9yRWxlbWVudChiKS5zdHlsZVByb3BlcnRpZXM7aWYoIWR8fCJ0ZXh0IiE9PWRbInN0eWxlOmZhbWlseSJdfHwhZFsic3R5bGU6dGV4dC1wcm9wZXJ0aWVzIl0pcmV0dXJuITE7aWYoIWh8fCFoWyJzdHlsZTp0ZXh0LXByb3BlcnRpZXMiXSlyZXR1cm4hMDtkPWRbInN0eWxlOnRleHQtcHJvcGVydGllcyJdO2g9aFsic3R5bGU6dGV4dC1wcm9wZXJ0aWVzIl07cmV0dXJuIU9iamVjdC5rZXlzKGQpLmV2ZXJ5KGZ1bmN0aW9uKGEpe3JldHVybiBkW2FdPT09aFthXX0pfWZ1bmN0aW9uIFYoKXt9ZnVuY3Rpb24gVygpe3JldHVybiExfWZ1bmN0aW9uIEooKXtyZXR1cm4hMX12YXIgUj10aGlzLFA9Zy5nZXRPZHREb2N1bWVudCgpLGFhPW5ldyBjb3JlLlV0aWxzLFM9b2RmLk9kZlV0aWxzLApmYT1uZXcgY29yZS5FdmVudE5vdGlmaWVyKFtndWkuRGlyZWN0Rm9ybWF0dGluZ0NvbnRyb2xsZXIuZW5hYmxlZENoYW5nZWQsZ3VpLkRpcmVjdEZvcm1hdHRpbmdDb250cm9sbGVyLnRleHRTdHlsaW5nQ2hhbmdlZCxndWkuRGlyZWN0Rm9ybWF0dGluZ0NvbnRyb2xsZXIucGFyYWdyYXBoU3R5bGluZ0NoYW5nZWRdKSxoYT1vZGYuTmFtZXNwYWNlcy50ZXh0bnMsQz1jb3JlLlN0ZXBEaXJlY3Rpb24uTkVYVCxaPW51bGwsYmEsVTt0aGlzLmVuYWJsZWRGZWF0dXJlcz1xO3RoaXMuZm9ybWF0VGV4dFNlbGVjdGlvbj13O3RoaXMuY3JlYXRlQ3Vyc29yU3R5bGVPcD1mdW5jdGlvbihhLGMsZCl7dmFyIGU9bnVsbCxoPVo7ZCYmKGg9KGQ9VS52YWx1ZSgpLmFwcGxpZWRTdHlsZXNbMF0pJiZkLnN0eWxlUHJvcGVydGllcyk7aCYmaFsic3R5bGU6dGV4dC1wcm9wZXJ0aWVzIl0mJihlPW5ldyBvcHMuT3BBcHBseURpcmVjdFN0eWxpbmcsZS5pbml0KHttZW1iZXJpZDpiLHBvc2l0aW9uOmEsbGVuZ3RoOmMsCnNldFByb3BlcnRpZXM6eyJzdHlsZTp0ZXh0LXByb3BlcnRpZXMiOmhbInN0eWxlOnRleHQtcHJvcGVydGllcyJdfX0pLFo9bnVsbCxVLnJlc2V0KCkpO3JldHVybiBlfTt0aGlzLnNldEJvbGQ9dDt0aGlzLnNldEl0YWxpYz1BO3RoaXMuc2V0SGFzVW5kZXJsaW5lPUk7dGhpcy5zZXRIYXNTdHJpa2V0aHJvdWdoPUs7dGhpcy5zZXRGb250U2l6ZT1mdW5jdGlvbihhKXt2KCJmbzpmb250LXNpemUiLGErInB0Iil9O3RoaXMuc2V0Rm9udE5hbWU9ZnVuY3Rpb24oYSl7digic3R5bGU6Zm9udC1uYW1lIixhKX07dGhpcy5nZXRBcHBsaWVkU3R5bGVzPWZ1bmN0aW9uKCl7cmV0dXJuIFUudmFsdWUoKS5hcHBsaWVkU3R5bGVzfTt0aGlzLnRvZ2dsZUJvbGQ9ei5iaW5kKFIsZnVuY3Rpb24oKXtyZXR1cm4gcigpLmlzQm9sZCgpfSx0KTt0aGlzLnRvZ2dsZUl0YWxpYz16LmJpbmQoUixmdW5jdGlvbigpe3JldHVybiByKCkuaXNJdGFsaWMoKX0sQSk7dGhpcy50b2dnbGVVbmRlcmxpbmU9ei5iaW5kKFIsCmZ1bmN0aW9uKCl7cmV0dXJuIHIoKS5oYXNVbmRlcmxpbmUoKX0sSSk7dGhpcy50b2dnbGVTdHJpa2V0aHJvdWdoPXouYmluZChSLGZ1bmN0aW9uKCl7cmV0dXJuIHIoKS5oYXNTdHJpa2VUaHJvdWdoKCl9LEspO3RoaXMuaXNCb2xkPWZ1bmN0aW9uKCl7cmV0dXJuIHIoKS5pc0JvbGQoKX07dGhpcy5pc0l0YWxpYz1mdW5jdGlvbigpe3JldHVybiByKCkuaXNJdGFsaWMoKX07dGhpcy5oYXNVbmRlcmxpbmU9ZnVuY3Rpb24oKXtyZXR1cm4gcigpLmhhc1VuZGVybGluZSgpfTt0aGlzLmhhc1N0cmlrZVRocm91Z2g9ZnVuY3Rpb24oKXtyZXR1cm4gcigpLmhhc1N0cmlrZVRocm91Z2goKX07dGhpcy5mb250U2l6ZT1mdW5jdGlvbigpe3JldHVybiByKCkuZm9udFNpemUoKX07dGhpcy5mb250TmFtZT1mdW5jdGlvbigpe3JldHVybiByKCkuZm9udE5hbWUoKX07dGhpcy5pc0FsaWduZWRMZWZ0PWZ1bmN0aW9uKCl7cmV0dXJuIHIoKS5pc0FsaWduZWRMZWZ0KCl9O3RoaXMuaXNBbGlnbmVkQ2VudGVyPQpmdW5jdGlvbigpe3JldHVybiByKCkuaXNBbGlnbmVkQ2VudGVyKCl9O3RoaXMuaXNBbGlnbmVkUmlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gcigpLmlzQWxpZ25lZFJpZ2h0KCl9O3RoaXMuaXNBbGlnbmVkSnVzdGlmaWVkPWZ1bmN0aW9uKCl7cmV0dXJuIHIoKS5pc0FsaWduZWRKdXN0aWZpZWQoKX07dGhpcy5hbGlnblBhcmFncmFwaExlZnQ9ZnVuY3Rpb24oKXtOKCJsZWZ0Iik7cmV0dXJuITB9O3RoaXMuYWxpZ25QYXJhZ3JhcGhDZW50ZXI9ZnVuY3Rpb24oKXtOKCJjZW50ZXIiKTtyZXR1cm4hMH07dGhpcy5hbGlnblBhcmFncmFwaFJpZ2h0PWZ1bmN0aW9uKCl7TigicmlnaHQiKTtyZXR1cm4hMH07dGhpcy5hbGlnblBhcmFncmFwaEp1c3RpZmllZD1mdW5jdGlvbigpe04oImp1c3RpZnkiKTtyZXR1cm4hMH07dGhpcy5pbmRlbnQ9ZnVuY3Rpb24oKXtMKE8uYmluZChudWxsLDEpKTtyZXR1cm4hMH07dGhpcy5vdXRkZW50PWZ1bmN0aW9uKCl7TChPLmJpbmQobnVsbCwtMSkpO3JldHVybiEwfTsKdGhpcy5jcmVhdGVQYXJhZ3JhcGhTdHlsZU9wcz1mdW5jdGlvbihhKXtpZighcSgpLmRpcmVjdFBhcmFncmFwaFN0eWxpbmcpcmV0dXJuW107dmFyIGM9UC5nZXRDdXJzb3IoYiksZD1jLmdldFNlbGVjdGVkUmFuZ2UoKSxlPVtdLGgsZztjLmhhc0ZvcndhcmRTZWxlY3Rpb24oKT8oaD1jLmdldEFuY2hvck5vZGUoKSxnPWMuZ2V0Tm9kZSgpKTooaD1jLmdldE5vZGUoKSxnPWMuZ2V0QW5jaG9yTm9kZSgpKTtjPVMuZ2V0UGFyYWdyYXBoRWxlbWVudChnKTtydW50aW1lLmFzc2VydChCb29sZWFuKGMpLCJEaXJlY3RGb3JtYXR0aW5nQ29udHJvbGxlcjogQ3Vyc29yIG91dHNpZGUgcGFyYWdyYXBoIik7dmFyIG09YyxsPVtQLmdldFBvc2l0aW9uRmlsdGVyKCksUC5jcmVhdGVSb290RmlsdGVyKGIpXTtpZighMSE9PVAuY3JlYXRlU3RlcEl0ZXJhdG9yKGQuZW5kQ29udGFpbmVyLGQuZW5kT2Zmc2V0LGwsbSkubmV4dFN0ZXAoKSlyZXR1cm4gZTtnIT09aCYmKGM9Uy5nZXRQYXJhZ3JhcGhFbGVtZW50KGgpKTsKaWYoIVomJiFEKGQsYykpcmV0dXJuIGU7ZD0oZD1VLnZhbHVlKCkuYXBwbGllZFN0eWxlc1swXSkmJmQuc3R5bGVQcm9wZXJ0aWVzO2lmKCFkKXJldHVybiBlO2lmKGM9Yy5nZXRBdHRyaWJ1dGVOUyhoYSwic3R5bGUtbmFtZSIpKWQ9eyJzdHlsZTp0ZXh0LXByb3BlcnRpZXMiOmRbInN0eWxlOnRleHQtcHJvcGVydGllcyJdfSxkPVAuZ2V0Rm9ybWF0dGluZygpLmNyZWF0ZURlcml2ZWRTdHlsZU9iamVjdChjLCJwYXJhZ3JhcGgiLGQpO2g9Zi5nZW5lcmF0ZVN0eWxlTmFtZSgpO2M9bmV3IG9wcy5PcEFkZFN0eWxlO2MuaW5pdCh7bWVtYmVyaWQ6YixzdHlsZU5hbWU6aCxzdHlsZUZhbWlseToicGFyYWdyYXBoIixpc0F1dG9tYXRpY1N0eWxlOiEwLHNldFByb3BlcnRpZXM6ZH0pO2UucHVzaChjKTtjPW5ldyBvcHMuT3BTZXRQYXJhZ3JhcGhTdHlsZTtjLmluaXQoe21lbWJlcmlkOmIsc3R5bGVOYW1lOmgscG9zaXRpb246YX0pO2UucHVzaChjKTtyZXR1cm4gZX07dGhpcy5zdWJzY3JpYmU9CmZ1bmN0aW9uKGEsYyl7ZmEuc3Vic2NyaWJlKGEsYyl9O3RoaXMudW5zdWJzY3JpYmU9ZnVuY3Rpb24oYSxjKXtmYS51bnN1YnNjcmliZShhLGMpfTt0aGlzLmRlc3Ryb3k9ZnVuY3Rpb24oYSl7UC51bnN1YnNjcmliZShvcHMuRG9jdW1lbnQuc2lnbmFsQ3Vyc29yQWRkZWQsaCk7UC51bnN1YnNjcmliZShvcHMuRG9jdW1lbnQuc2lnbmFsQ3Vyc29yUmVtb3ZlZCxoKTtQLnVuc3Vic2NyaWJlKG9wcy5Eb2N1bWVudC5zaWduYWxDdXJzb3JNb3ZlZCxoKTtQLnVuc3Vic2NyaWJlKG9wcy5PZHREb2N1bWVudC5zaWduYWxQYXJhZ3JhcGhTdHlsZU1vZGlmaWVkLHkpO1AudW5zdWJzY3JpYmUob3BzLk9kdERvY3VtZW50LnNpZ25hbFBhcmFncmFwaENoYW5nZWQseCk7UC51bnN1YnNjcmliZShvcHMuT2R0RG9jdW1lbnQuc2lnbmFsT3BlcmF0aW9uRW5kLHUpO1AudW5zdWJzY3JpYmUob3BzLk9kdERvY3VtZW50LnNpZ25hbFByb2Nlc3NpbmdCYXRjaEVuZCxjKTtrLnVuc3Vic2NyaWJlKGd1aS5Db21tb25Db25zdHJhaW50cy5FRElULlJFVklFV19NT0RFLAptKTthKCl9OyhmdW5jdGlvbigpe1Auc3Vic2NyaWJlKG9wcy5Eb2N1bWVudC5zaWduYWxDdXJzb3JBZGRlZCxoKTtQLnN1YnNjcmliZShvcHMuRG9jdW1lbnQuc2lnbmFsQ3Vyc29yUmVtb3ZlZCxoKTtQLnN1YnNjcmliZShvcHMuRG9jdW1lbnQuc2lnbmFsQ3Vyc29yTW92ZWQsaCk7UC5zdWJzY3JpYmUob3BzLk9kdERvY3VtZW50LnNpZ25hbFBhcmFncmFwaFN0eWxlTW9kaWZpZWQseSk7UC5zdWJzY3JpYmUob3BzLk9kdERvY3VtZW50LnNpZ25hbFBhcmFncmFwaENoYW5nZWQseCk7UC5zdWJzY3JpYmUob3BzLk9kdERvY3VtZW50LnNpZ25hbE9wZXJhdGlvbkVuZCx1KTtQLnN1YnNjcmliZShvcHMuT2R0RG9jdW1lbnQuc2lnbmFsUHJvY2Vzc2luZ0JhdGNoRW5kLGMpO2suc3Vic2NyaWJlKGd1aS5Db21tb25Db25zdHJhaW50cy5FRElULlJFVklFV19NT0RFLG0pO1U9bmV3IGNvcmUuTGF6eVByb3BlcnR5KGwpO2JhPVUudmFsdWUoKTtufHwoUi5mb3JtYXRUZXh0U2VsZWN0aW9uPVYsClIuc2V0Qm9sZD1WLFIuc2V0SXRhbGljPVYsUi5zZXRIYXNVbmRlcmxpbmU9VixSLnNldEhhc1N0cmlrZXRocm91Z2g9VixSLnNldEZvbnRTaXplPVYsUi5zZXRGb250TmFtZT1WLFIudG9nZ2xlQm9sZD1KLFIudG9nZ2xlSXRhbGljPUosUi50b2dnbGVVbmRlcmxpbmU9SixSLnRvZ2dsZVN0cmlrZXRocm91Z2g9Sik7cHx8KFIuYWxpZ25QYXJhZ3JhcGhDZW50ZXI9VyxSLmFsaWduUGFyYWdyYXBoSnVzdGlmaWVkPVcsUi5hbGlnblBhcmFncmFwaExlZnQ9VyxSLmFsaWduUGFyYWdyYXBoUmlnaHQ9VyxSLmNyZWF0ZVBhcmFncmFwaFN0eWxlT3BzPWZ1bmN0aW9uKCl7cmV0dXJuW119LFIuaW5kZW50PVcsUi5vdXRkZW50PVcpfSkoKX07Z3VpLkRpcmVjdEZvcm1hdHRpbmdDb250cm9sbGVyLmVuYWJsZWRDaGFuZ2VkPSJlbmFibGVkL2NoYW5nZWQiO2d1aS5EaXJlY3RGb3JtYXR0aW5nQ29udHJvbGxlci50ZXh0U3R5bGluZ0NoYW5nZWQ9InRleHRTdHlsaW5nL2NoYW5nZWQiOwpndWkuRGlyZWN0Rm9ybWF0dGluZ0NvbnRyb2xsZXIucGFyYWdyYXBoU3R5bGluZ0NoYW5nZWQ9InBhcmFncmFwaFN0eWxpbmcvY2hhbmdlZCI7Z3VpLkRpcmVjdEZvcm1hdHRpbmdDb250cm9sbGVyLlNlbGVjdGlvbkluZm89ZnVuY3Rpb24oKXt9OwpndWkuS2V5Ym9hcmRIYW5kbGVyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZyhiLGQpe2R8fChkPWsuTm9uZSk7c3dpdGNoKGIpe2Nhc2UgZ3VpLktleWJvYXJkSGFuZGxlci5LZXlDb2RlLkxlZnRNZXRhOmNhc2UgZ3VpLktleWJvYXJkSGFuZGxlci5LZXlDb2RlLlJpZ2h0TWV0YTpjYXNlIGd1aS5LZXlib2FyZEhhbmRsZXIuS2V5Q29kZS5NZXRhSW5Nb3ppbGxhOmR8PWsuTWV0YTticmVhaztjYXNlIGd1aS5LZXlib2FyZEhhbmRsZXIuS2V5Q29kZS5DdHJsOmR8PWsuQ3RybDticmVhaztjYXNlIGd1aS5LZXlib2FyZEhhbmRsZXIuS2V5Q29kZS5BbHQ6ZHw9ay5BbHQ7YnJlYWs7Y2FzZSBndWkuS2V5Ym9hcmRIYW5kbGVyLktleUNvZGUuU2hpZnQ6ZHw9ay5TaGlmdH1yZXR1cm4gYisiOiIrZH12YXIgaz1ndWkuS2V5Ym9hcmRIYW5kbGVyLk1vZGlmaWVyLGQ9bnVsbCxiPXt9O3RoaXMuc2V0RGVmYXVsdD1mdW5jdGlvbihiKXtkPWJ9O3RoaXMuYmluZD1mdW5jdGlvbihkLGsscCxyKXtkPWcoZCwKayk7cnVudGltZS5hc3NlcnQocnx8ITE9PT1iLmhhc093blByb3BlcnR5KGQpLCJ0cmllZCB0byBvdmVyd3JpdGUgdGhlIGNhbGxiYWNrIGhhbmRsZXIgb2Yga2V5IGNvbWJvOiAiK2QpO2JbZF09cH07dGhpcy51bmJpbmQ9ZnVuY3Rpb24oZCxrKXt2YXIgcD1nKGQsayk7ZGVsZXRlIGJbcF19O3RoaXMucmVzZXQ9ZnVuY3Rpb24oKXtkPW51bGw7Yj17fX07dGhpcy5oYW5kbGVFdmVudD1mdW5jdGlvbihmKXt2YXIgbj1mLmtleUNvZGUscD1rLk5vbmU7Zi5tZXRhS2V5JiYocHw9ay5NZXRhKTtmLmN0cmxLZXkmJihwfD1rLkN0cmwpO2YuYWx0S2V5JiYocHw9ay5BbHQpO2Yuc2hpZnRLZXkmJihwfD1rLlNoaWZ0KTtuPWcobixwKTtuPWJbbl07cD0hMTtuP3A9bigpOm51bGwhPT1kJiYocD1kKGYpKTtwJiYoZi5wcmV2ZW50RGVmYXVsdD9mLnByZXZlbnREZWZhdWx0KCk6Zi5yZXR1cm5WYWx1ZT0hMSl9fTsKZ3VpLktleWJvYXJkSGFuZGxlci5Nb2RpZmllcj17Tm9uZTowLE1ldGE6MSxDdHJsOjIsQWx0OjQsQ3RybEFsdDo2LFNoaWZ0OjgsTWV0YVNoaWZ0OjksQ3RybFNoaWZ0OjEwLEFsdFNoaWZ0OjEyfTtndWkuS2V5Ym9hcmRIYW5kbGVyLktleUNvZGU9e0JhY2tzcGFjZTo4LFRhYjo5LENsZWFyOjEyLEVudGVyOjEzLFNoaWZ0OjE2LEN0cmw6MTcsQWx0OjE4LEVuZDozNSxIb21lOjM2LExlZnQ6MzcsVXA6MzgsUmlnaHQ6MzksRG93bjo0MCxEZWxldGU6NDYsQTo2NSxCOjY2LEM6NjcsRDo2OCxFOjY5LEY6NzAsRzo3MSxIOjcyLEk6NzMsSjo3NCxLOjc1LEw6NzYsTTo3NyxOOjc4LE86NzksUDo4MCxROjgxLFI6ODIsUzo4MyxUOjg0LFU6ODUsVjo4NixXOjg3LFg6ODgsWTo4OSxaOjkwLExlZnRNZXRhOjkxLFJpZ2h0TWV0YTo5MyxNZXRhSW5Nb3ppbGxhOjIyNH07Cmd1aS5IeXBlcmxpbmtDbGlja0hhbmRsZXI9ZnVuY3Rpb24oZyxrLGQpe2Z1bmN0aW9uIGIoKXt2YXIgYT1nKCk7cnVudGltZS5hc3NlcnQoQm9vbGVhbihhLmNsYXNzTGlzdCksIkRvY3VtZW50IGNvbnRhaW5lciBoYXMgbm8gY2xhc3NMaXN0IGVsZW1lbnQiKTthLmNsYXNzTGlzdC5yZW1vdmUoIndlYm9kZi1pbmFjdGl2ZUxpbmtzIil9ZnVuY3Rpb24gZigpe3ZhciBhPWcoKTtydW50aW1lLmFzc2VydChCb29sZWFuKGEuY2xhc3NMaXN0KSwiRG9jdW1lbnQgY29udGFpbmVyIGhhcyBubyBjbGFzc0xpc3QgZWxlbWVudCIpO2EuY2xhc3NMaXN0LmFkZCgid2Vib2RmLWluYWN0aXZlTGlua3MiKX1mdW5jdGlvbiBuKCl7YS5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1cyIsZiwhMSk7bS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2sudW5iaW5kKGEua2V5Q29kZSxhLm1vZGlmaWVyKTtkLnVuYmluZChhLmtleUNvZGUsYS5tb2RpZmllcil9KTttLmxlbmd0aD0wfWZ1bmN0aW9uIHAoYyl7bigpOwppZihjIT09ci5Ob25lKXthLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIixmLCExKTtzd2l0Y2goYyl7Y2FzZSByLkN0cmw6bS5wdXNoKHtrZXlDb2RlOnEuQ3RybCxtb2RpZmllcjpyLk5vbmV9KTticmVhaztjYXNlIHIuTWV0YTptLnB1c2goe2tleUNvZGU6cS5MZWZ0TWV0YSxtb2RpZmllcjpyLk5vbmV9KSxtLnB1c2goe2tleUNvZGU6cS5SaWdodE1ldGEsbW9kaWZpZXI6ci5Ob25lfSksbS5wdXNoKHtrZXlDb2RlOnEuTWV0YUluTW96aWxsYSxtb2RpZmllcjpyLk5vbmV9KX1tLmZvckVhY2goZnVuY3Rpb24oYSl7ay5iaW5kKGEua2V5Q29kZSxhLm1vZGlmaWVyLGIpO2QuYmluZChhLmtleUNvZGUsYS5tb2RpZmllcixmKX0pfX12YXIgcj1ndWkuS2V5Ym9hcmRIYW5kbGVyLk1vZGlmaWVyLHE9Z3VpLktleWJvYXJkSGFuZGxlci5LZXlDb2RlLGU9eG1sZG9tLlhQYXRoLGw9b2RmLk9kZlV0aWxzLGE9cnVudGltZS5nZXRXaW5kb3coKSxjPXIuTm9uZSxtPVtdO3J1bnRpbWUuYXNzZXJ0KG51bGwhPT0KYSwiRXhwZWN0ZWQgdG8gYmUgcnVuIGluIGFuIGVudmlyb25tZW50IHdoaWNoIGhhcyBhIGdsb2JhbCB3aW5kb3csIGxpa2UgYSBicm93c2VyLiIpO3RoaXMuaGFuZGxlQ2xpY2s9ZnVuY3Rpb24oYil7dmFyIGQ9Yi50YXJnZXR8fGIuc3JjRWxlbWVudCxmLG07Yi5jdHJsS2V5P2Y9ci5DdHJsOmIubWV0YUtleSYmKGY9ci5NZXRhKTtpZihjPT09ci5Ob25lfHxjPT09Zil7YTp7Zm9yKDtudWxsIT09ZDspe2lmKGwuaXNIeXBlcmxpbmsoZCkpYnJlYWsgYTtpZihsLmlzUGFyYWdyYXBoKGQpKWJyZWFrO2Q9ZC5wYXJlbnROb2RlfWQ9bnVsbH1kJiYoZD1sLmdldEh5cGVybGlua1RhcmdldChkKSwiIiE9PWQmJigiIyI9PT1kWzBdPyhkPWQuc3Vic3RyaW5nKDEpLGY9ZygpLG09ZS5nZXRPREZFbGVtZW50c1dpdGhYUGF0aChmLCIvL3RleHQ6Ym9va21hcmstc3RhcnRbQHRleHQ6bmFtZT0nIitkKyInXSIsb2RmLk5hbWVzcGFjZXMubG9va3VwTmFtZXNwYWNlVVJJKSwwPT09bS5sZW5ndGgmJgoobT1lLmdldE9ERkVsZW1lbnRzV2l0aFhQYXRoKGYsIi8vdGV4dDpib29rbWFya1tAdGV4dDpuYW1lPSciK2QrIiddIixvZGYuTmFtZXNwYWNlcy5sb29rdXBOYW1lc3BhY2VVUkkpKSwwPG0ubGVuZ3RoJiZtWzBdLnNjcm9sbEludG9WaWV3KCEwKSk6L15ccyooamF2YXNjcmlwdHxkYXRhKTovLnRlc3QoZCk/cnVudGltZS5sb2coIldBUk46IiwicG90ZW50aWFsbHkgbWFsaWNpb3VzIFVSTCBpZ25vcmVkIik6YS5vcGVuKGQpLGIucHJldmVudERlZmF1bHQ/Yi5wcmV2ZW50RGVmYXVsdCgpOmIucmV0dXJuVmFsdWU9ITEpKX19O3RoaXMuc2V0TW9kaWZpZXI9ZnVuY3Rpb24oYSl7YyE9PWEmJihydW50aW1lLmFzc2VydChhPT09ci5Ob25lfHxhPT09ci5DdHJsfHxhPT09ci5NZXRhLCJVbnN1cHBvcnRlZCBLZXlib2FyZEhhbmRsZXIuTW9kaWZpZXIgdmFsdWU6ICIrYSksYz1hLGMhPT1yLk5vbmU/ZigpOmIoKSxwKGMpKX07dGhpcy5nZXRNb2RpZmllcj1mdW5jdGlvbigpe3JldHVybiBjfTsKdGhpcy5kZXN0cm95PWZ1bmN0aW9uKGEpe2YoKTtuKCk7YSgpfX07Cmd1aS5FdmVudE1hbmFnZXI9ZnVuY3Rpb24oZyl7ZnVuY3Rpb24gayhhKXtmdW5jdGlvbiBiKGEsYyxkKXt2YXIgZSxoPSExO2U9Im9uIitjO2EuYXR0YWNoRXZlbnQmJihhLmF0dGFjaEV2ZW50KGUsZCksaD0hMCk7IWgmJmEuYWRkRXZlbnRMaXN0ZW5lciYmKGEuYWRkRXZlbnRMaXN0ZW5lcihjLGQsITEpLGg9ITApO2gmJiF1W2NdfHwhYS5oYXNPd25Qcm9wZXJ0eShlKXx8KGFbZV09ZCl9ZnVuY3Rpb24gYyhhLGIsZCl7dmFyIGU9Im9uIitiO2EuZGV0YWNoRXZlbnQmJmEuZGV0YWNoRXZlbnQoZSxkKTthLnJlbW92ZUV2ZW50TGlzdGVuZXImJmEucmVtb3ZlRXZlbnRMaXN0ZW5lcihiLGQsITEpO2FbZV09PT1kJiYoYVtlXT1udWxsKX1mdW5jdGlvbiBkKGMpe2lmKC0xPT09aC5pbmRleE9mKGMpKXtoLnB1c2goYyk7aWYoZS5maWx0ZXJzLmV2ZXJ5KGZ1bmN0aW9uKGEpe3JldHVybiBhKGMpfSkpdHJ5e2YuZW1pdChhLGMpfWNhdGNoKGIpe3J1bnRpbWUubG9nKCJFcnJvciBvY2N1cnJlZCB3aGlsZSBwcm9jZXNzaW5nICIrCmErIjpcbiIrYi5tZXNzYWdlKyJcbiIrYi5zdGFjayl9cnVudGltZS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aC5zcGxpY2UoaC5pbmRleE9mKGMpLDEpfSwwKX19dmFyIGU9dGhpcyxoPVtdLGY9bmV3IGNvcmUuRXZlbnROb3RpZmllcihbYV0pO3RoaXMuZmlsdGVycz1bXTt0aGlzLnN1YnNjcmliZT1mdW5jdGlvbihjKXtmLnN1YnNjcmliZShhLGMpfTt0aGlzLnVuc3Vic2NyaWJlPWZ1bmN0aW9uKGMpe2YudW5zdWJzY3JpYmUoYSxjKX07dGhpcy5kZXN0cm95PWZ1bmN0aW9uKCl7Yyh2LGEsZCk7YyhLLGEsZCk7YyhMLGEsZCl9O3RbYV0mJmIodixhLGQpO2IoSyxhLGQpO2IoTCxhLGQpfWZ1bmN0aW9uIGQoYSxjLGIpe2Z1bmN0aW9uIGQoYyl7YihjLGUsZnVuY3Rpb24oYyl7Yy50eXBlPWE7aC5lbWl0KGEsYyl9KX12YXIgZT17fSxoPW5ldyBjb3JlLkV2ZW50Tm90aWZpZXIoW2FdKTt0aGlzLnN1YnNjcmliZT1mdW5jdGlvbihjKXtoLnN1YnNjcmliZShhLGMpfTt0aGlzLnVuc3Vic2NyaWJlPQpmdW5jdGlvbihjKXtoLnVuc3Vic2NyaWJlKGEsYyl9O3RoaXMuZGVzdHJveT1mdW5jdGlvbigpe2MuZm9yRWFjaChmdW5jdGlvbihhKXtFLnVuc3Vic2NyaWJlKGEsZCl9KX07KGZ1bmN0aW9uKCl7Yy5mb3JFYWNoKGZ1bmN0aW9uKGEpe0Uuc3Vic2NyaWJlKGEsZCl9KX0pKCl9ZnVuY3Rpb24gYihhKXtydW50aW1lLmNsZWFyVGltZW91dChhKTtkZWxldGUgTlthXX1mdW5jdGlvbiBmKGEsYyl7dmFyIGQ9cnVudGltZS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YSgpO2IoZCl9LGMpO05bZF09ITA7cmV0dXJuIGR9ZnVuY3Rpb24gbihhLGMsZCl7dmFyIGU9YS50b3VjaGVzLmxlbmd0aCxoPWEudG91Y2hlc1swXSxnPWMudGltZXI7InRvdWNobW92ZSI9PT1hLnR5cGV8fCJ0b3VjaGVuZCI9PT1hLnR5cGU/ZyYmYihnKToidG91Y2hzdGFydCI9PT1hLnR5cGUmJigxIT09ZT9ydW50aW1lLmNsZWFyVGltZW91dChnKTpnPWYoZnVuY3Rpb24oKXtkKHtjbGllbnRYOmguY2xpZW50WCxjbGllbnRZOmguY2xpZW50WSwKcGFnZVg6aC5wYWdlWCxwYWdlWTpoLnBhZ2VZLHRhcmdldDphLnRhcmdldHx8YS5zcmNFbGVtZW50fHxudWxsLGRldGFpbDoxfSl9LDQwMCkpO2MudGltZXI9Z31mdW5jdGlvbiBwKGEsYyxiKXt2YXIgZD1hLnRvdWNoZXNbMF0sZT1hLnRhcmdldHx8YS5zcmNFbGVtZW50fHxudWxsLGg9Yy50YXJnZXQ7MSE9PWEudG91Y2hlcy5sZW5ndGh8fCJ0b3VjaGVuZCI9PT1hLnR5cGU/aD1udWxsOiJ0b3VjaHN0YXJ0Ij09PWEudHlwZSYmIndlYm9kZi1kcmFnZ2FibGUiPT09ZS5nZXRBdHRyaWJ1dGUoImNsYXNzIik/aD1lOiJ0b3VjaG1vdmUiPT09YS50eXBlJiZoJiYoYS5wcmV2ZW50RGVmYXVsdCgpLGEuc3RvcFByb3BhZ2F0aW9uKCksYih7Y2xpZW50WDpkLmNsaWVudFgsY2xpZW50WTpkLmNsaWVudFkscGFnZVg6ZC5wYWdlWCxwYWdlWTpkLnBhZ2VZLHRhcmdldDpoLGRldGFpbDoxfSkpO2MudGFyZ2V0PWh9ZnVuY3Rpb24gcihhLGMsYil7dmFyIGQ9YS50YXJnZXR8fGEuc3JjRWxlbWVudHx8Cm51bGwsZT1jLmRyYWdnaW5nOyJkcmFnIj09PWEudHlwZT9lPSEwOiJ0b3VjaGVuZCI9PT1hLnR5cGUmJmUmJihlPSExLGE9YS5jaGFuZ2VkVG91Y2hlc1swXSxiKHtjbGllbnRYOmEuY2xpZW50WCxjbGllbnRZOmEuY2xpZW50WSxwYWdlWDphLnBhZ2VYLHBhZ2VZOmEucGFnZVksdGFyZ2V0OmQsZGV0YWlsOjF9KSk7Yy5kcmFnZ2luZz1lfWZ1bmN0aW9uIHEoKXtMLmNsYXNzTGlzdC5hZGQoIndlYm9kZi10b3VjaEVuYWJsZWQiKTtFLnVuc3Vic2NyaWJlKCJ0b3VjaHN0YXJ0IixxKX1mdW5jdGlvbiBlKGEpe3ZhciBjPWEuc2Nyb2xsWCxiPWEuc2Nyb2xsWTt0aGlzLnJlc3RvcmU9ZnVuY3Rpb24oKXthLnNjcm9sbFg9PT1jJiZhLnNjcm9sbFk9PT1ifHxhLnNjcm9sbFRvKGMsYil9fWZ1bmN0aW9uIGwoYSl7dmFyIGM9YS5zY3JvbGxUb3AsYj1hLnNjcm9sbExlZnQ7dGhpcy5yZXN0b3JlPWZ1bmN0aW9uKCl7aWYoYS5zY3JvbGxUb3AhPT1jfHxhLnNjcm9sbExlZnQhPT1iKWEuc2Nyb2xsVG9wPQpjLGEuc2Nyb2xsTGVmdD1ifX1mdW5jdGlvbiBhKGEsYyl7dmFyIGI9SVthXXx8QVthXXx8bnVsbDshYiYmYyYmKGI9SVthXT1uZXcgayhhKSk7cmV0dXJuIGJ9ZnVuY3Rpb24gYyhjLGIpe2EoYywhMCkuc3Vic2NyaWJlKGIpfWZ1bmN0aW9uIG0oYyxiKXt2YXIgZD1hKGMsITEpO2QmJmQudW5zdWJzY3JpYmUoYil9ZnVuY3Rpb24gaCgpe3JldHVybiBnLmdldERPTURvY3VtZW50KCkuYWN0aXZlRWxlbWVudD09PUt9ZnVuY3Rpb24geSgpe2goKSYmSy5ibHVyKCk7Sy5zZXRBdHRyaWJ1dGUoImRpc2FibGVkIiwidHJ1ZSIpfWZ1bmN0aW9uIHgoKXtLLnJlbW92ZUF0dHJpYnV0ZSgiZGlzYWJsZWQiKX1mdW5jdGlvbiB6KGEpe2Zvcih2YXIgYz1bXTthOykoYS5zY3JvbGxXaWR0aD5hLmNsaWVudFdpZHRofHxhLnNjcm9sbEhlaWdodD5hLmNsaWVudEhlaWdodCkmJmMucHVzaChuZXcgbChhKSksYT1hLnBhcmVudE5vZGU7Yy5wdXNoKG5ldyBlKHYpKTtyZXR1cm4gY31mdW5jdGlvbiB3KCl7dmFyIGE7CmgoKXx8KGE9eihLKSx4KCksSy5mb2N1cygpLGEuZm9yRWFjaChmdW5jdGlvbihhKXthLnJlc3RvcmUoKX0pKX12YXIgdj1ydW50aW1lLmdldFdpbmRvdygpLHU9e2JlZm9yZWN1dDohMCxiZWZvcmVwYXN0ZTohMCxsb25ncHJlc3M6ITAsZHJhZzohMCxkcmFnc3RvcDohMH0sdD17bW91c2Vkb3duOiEwLG1vdXNldXA6ITAsZm9jdXM6ITB9LEE9e30sST17fSxLLEw9Zy5nZXRDYW52YXMoKS5nZXRFbGVtZW50KCksRT10aGlzLE49e307dGhpcy5hZGRGaWx0ZXI9ZnVuY3Rpb24oYyxiKXthKGMsITApLmZpbHRlcnMucHVzaChiKX07dGhpcy5yZW1vdmVGaWx0ZXI9ZnVuY3Rpb24oYyxiKXt2YXIgZD1hKGMsITApLGU9ZC5maWx0ZXJzLmluZGV4T2YoYik7LTEhPT1lJiZkLmZpbHRlcnMuc3BsaWNlKGUsMSl9O3RoaXMuc3Vic2NyaWJlPWM7dGhpcy51bnN1YnNjcmliZT1tO3RoaXMuaGFzRm9jdXM9aDt0aGlzLmZvY3VzPXc7dGhpcy5nZXRFdmVudFRyYXA9ZnVuY3Rpb24oKXtyZXR1cm4gS307CnRoaXMuc2V0RWRpdGluZz1mdW5jdGlvbihhKXt2YXIgYz1oKCk7YyYmSy5ibHVyKCk7YT9LLnJlbW92ZUF0dHJpYnV0ZSgicmVhZE9ubHkiKTpLLnNldEF0dHJpYnV0ZSgicmVhZE9ubHkiLCJ0cnVlIik7YyYmdygpfTt0aGlzLmRlc3Ryb3k9ZnVuY3Rpb24oYSl7bSgidG91Y2hzdGFydCIscSk7T2JqZWN0LmtleXMoTikuZm9yRWFjaChmdW5jdGlvbihhKXtiKHBhcnNlSW50KGEsMTApKX0pO04ubGVuZ3RoPTA7T2JqZWN0LmtleXMoQSkuZm9yRWFjaChmdW5jdGlvbihhKXtBW2FdLmRlc3Ryb3koKX0pO0E9e307bSgibW91c2Vkb3duIix5KTttKCJtb3VzZXVwIix4KTttKCJjb250ZXh0bWVudSIseCk7T2JqZWN0LmtleXMoSSkuZm9yRWFjaChmdW5jdGlvbihhKXtJW2FdLmRlc3Ryb3koKX0pO0k9e307Sy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKEspO2EoKX07KGZ1bmN0aW9uKCl7dmFyIGE9Zy5nZXRPZGZDYW52YXMoKS5nZXRTaXplcigpLGI9YS5vd25lckRvY3VtZW50O3J1bnRpbWUuYXNzZXJ0KEJvb2xlYW4odiksCiJFdmVudE1hbmFnZXIgcmVxdWlyZXMgYSB3aW5kb3cgb2JqZWN0IHRvIG9wZXJhdGUgY29ycmVjdGx5Iik7Sz1iLmNyZWF0ZUVsZW1lbnQoInRleHRhcmVhIik7Sy5pZD0iZXZlbnRUcmFwIjtLLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCItMSIpO0suc2V0QXR0cmlidXRlKCJyZWFkT25seSIsInRydWUiKTtLLnNldEF0dHJpYnV0ZSgicm93cyIsIjEiKTthLmFwcGVuZENoaWxkKEspO2MoIm1vdXNlZG93biIseSk7YygibW91c2V1cCIseCk7YygiY29udGV4dG1lbnUiLHgpO0EubG9uZ3ByZXNzPW5ldyBkKCJsb25ncHJlc3MiLFsidG91Y2hzdGFydCIsInRvdWNobW92ZSIsInRvdWNoZW5kIl0sbik7QS5kcmFnPW5ldyBkKCJkcmFnIixbInRvdWNoc3RhcnQiLCJ0b3VjaG1vdmUiLCJ0b3VjaGVuZCJdLHApO0EuZHJhZ3N0b3A9bmV3IGQoImRyYWdzdG9wIixbImRyYWciLCJ0b3VjaGVuZCJdLHIpO2MoInRvdWNoc3RhcnQiLHEpfSkoKX07Cmd1aS5JT1NTYWZhcmlTdXBwb3J0PWZ1bmN0aW9uKGcpe2Z1bmN0aW9uIGsoKXtkLmlubmVySGVpZ2h0IT09ZC5vdXRlckhlaWdodCYmKGIuc3R5bGUuZGlzcGxheT0ibm9uZSIscnVudGltZS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKXtiLnN0eWxlLmRpc3BsYXk9ImJsb2NrIn0pKX12YXIgZD1ydW50aW1lLmdldFdpbmRvdygpLGI9Zy5nZXRFdmVudFRyYXAoKTt0aGlzLmRlc3Ryb3k9ZnVuY3Rpb24oZCl7Zy51bnN1YnNjcmliZSgiZm9jdXMiLGspO2IucmVtb3ZlQXR0cmlidXRlKCJhdXRvY2FwaXRhbGl6ZSIpO2Iuc3R5bGUuV2Via2l0VHJhbnNmb3JtPSIiO2QoKX07Zy5zdWJzY3JpYmUoImZvY3VzIixrKTtiLnNldEF0dHJpYnV0ZSgiYXV0b2NhcGl0YWxpemUiLCJvZmYiKTtiLnN0eWxlLldlYmtpdFRyYW5zZm9ybT0idHJhbnNsYXRlWCgtMTAwMDBweCkifTsKZ3VpLkh5cGVybGlua0NvbnRyb2xsZXI9ZnVuY3Rpb24oZyxrLGQsYil7ZnVuY3Rpb24gZigpe3ZhciBiPSEwOyEwPT09ay5nZXRTdGF0ZShndWkuQ29tbW9uQ29uc3RyYWludHMuRURJVC5SRVZJRVdfTU9ERSkmJihiPWQuaXNMb2NhbEN1cnNvcldpdGhpbk93bkFubm90YXRpb24oKSk7YiE9PWUmJihlPWIscS5lbWl0KGd1aS5IeXBlcmxpbmtDb250cm9sbGVyLmVuYWJsZWRDaGFuZ2VkLGUpKX1mdW5jdGlvbiBuKGQpe2QuZ2V0TWVtYmVySWQoKT09PWImJmYoKX12YXIgcD1vZGYuT2RmVXRpbHMscj1nLmdldE9kdERvY3VtZW50KCkscT1uZXcgY29yZS5FdmVudE5vdGlmaWVyKFtndWkuSHlwZXJsaW5rQ29udHJvbGxlci5lbmFibGVkQ2hhbmdlZF0pLGU9ITE7dGhpcy5pc0VuYWJsZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gZX07dGhpcy5zdWJzY3JpYmU9ZnVuY3Rpb24oYixhKXtxLnN1YnNjcmliZShiLGEpfTt0aGlzLnVuc3Vic2NyaWJlPWZ1bmN0aW9uKGIsYSl7cS51bnN1YnNjcmliZShiLAphKX07dGhpcy5hZGRIeXBlcmxpbms9ZnVuY3Rpb24oZCxhKXtpZihlKXt2YXIgYz1yLmdldEN1cnNvclNlbGVjdGlvbihiKSxmPW5ldyBvcHMuT3BBcHBseUh5cGVybGluayxoPVtdO2lmKDA9PT1jLmxlbmd0aHx8YSlhPWF8fGQsZj1uZXcgb3BzLk9wSW5zZXJ0VGV4dCxmLmluaXQoe21lbWJlcmlkOmIscG9zaXRpb246Yy5wb3NpdGlvbix0ZXh0OmF9KSxjLmxlbmd0aD1hLmxlbmd0aCxoLnB1c2goZik7Zj1uZXcgb3BzLk9wQXBwbHlIeXBlcmxpbms7Zi5pbml0KHttZW1iZXJpZDpiLHBvc2l0aW9uOmMucG9zaXRpb24sbGVuZ3RoOmMubGVuZ3RoLGh5cGVybGluazpkfSk7aC5wdXNoKGYpO2cuZW5xdWV1ZShoKX19O3RoaXMucmVtb3ZlSHlwZXJsaW5rcz1mdW5jdGlvbigpe2lmKGUpe3ZhciBkPXIuY3JlYXRlUG9zaXRpb25JdGVyYXRvcihyLmdldFJvb3ROb2RlKCkpLGE9ci5nZXRDdXJzb3IoYikuZ2V0U2VsZWN0ZWRSYW5nZSgpLGM9cC5nZXRIeXBlcmxpbmtFbGVtZW50cyhhKSwKZj1hLmNvbGxhcHNlZCYmMT09PWMubGVuZ3RoLGg9ci5nZXRET01Eb2N1bWVudCgpLmNyZWF0ZVJhbmdlKCksaz1bXSxuLHE7MCE9PWMubGVuZ3RoJiYoYy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2guc2VsZWN0Tm9kZUNvbnRlbnRzKGEpO249ci5jb252ZXJ0RG9tVG9DdXJzb3JSYW5nZSh7YW5jaG9yTm9kZTpoLnN0YXJ0Q29udGFpbmVyLGFuY2hvck9mZnNldDpoLnN0YXJ0T2Zmc2V0LGZvY3VzTm9kZTpoLmVuZENvbnRhaW5lcixmb2N1c09mZnNldDpoLmVuZE9mZnNldH0pO3E9bmV3IG9wcy5PcFJlbW92ZUh5cGVybGluaztxLmluaXQoe21lbWJlcmlkOmIscG9zaXRpb246bi5wb3NpdGlvbixsZW5ndGg6bi5sZW5ndGh9KTtrLnB1c2gocSl9KSxmfHwoZj1jWzBdLC0xPT09YS5jb21wYXJlUG9pbnQoZiwwKSYmKGguc2V0U3RhcnQoZiwwKSxoLnNldEVuZChhLnN0YXJ0Q29udGFpbmVyLGEuc3RhcnRPZmZzZXQpLG49ci5jb252ZXJ0RG9tVG9DdXJzb3JSYW5nZSh7YW5jaG9yTm9kZTpoLnN0YXJ0Q29udGFpbmVyLAphbmNob3JPZmZzZXQ6aC5zdGFydE9mZnNldCxmb2N1c05vZGU6aC5lbmRDb250YWluZXIsZm9jdXNPZmZzZXQ6aC5lbmRPZmZzZXR9KSwwPG4ubGVuZ3RoJiYocT1uZXcgb3BzLk9wQXBwbHlIeXBlcmxpbmsscS5pbml0KHttZW1iZXJpZDpiLHBvc2l0aW9uOm4ucG9zaXRpb24sbGVuZ3RoOm4ubGVuZ3RoLGh5cGVybGluazpwLmdldEh5cGVybGlua1RhcmdldChmKX0pLGsucHVzaChxKSkpLGM9Y1tjLmxlbmd0aC0xXSxkLm1vdmVUb0VuZE9mTm9kZShjKSxkPWQudW5maWx0ZXJlZERvbU9mZnNldCgpLDE9PT1hLmNvbXBhcmVQb2ludChjLGQpJiYoaC5zZXRTdGFydChhLmVuZENvbnRhaW5lcixhLmVuZE9mZnNldCksaC5zZXRFbmQoYyxkKSxuPXIuY29udmVydERvbVRvQ3Vyc29yUmFuZ2Uoe2FuY2hvck5vZGU6aC5zdGFydENvbnRhaW5lcixhbmNob3JPZmZzZXQ6aC5zdGFydE9mZnNldCxmb2N1c05vZGU6aC5lbmRDb250YWluZXIsZm9jdXNPZmZzZXQ6aC5lbmRPZmZzZXR9KSwwPG4ubGVuZ3RoJiYKKHE9bmV3IG9wcy5PcEFwcGx5SHlwZXJsaW5rLHEuaW5pdCh7bWVtYmVyaWQ6Yixwb3NpdGlvbjpuLnBvc2l0aW9uLGxlbmd0aDpuLmxlbmd0aCxoeXBlcmxpbms6cC5nZXRIeXBlcmxpbmtUYXJnZXQoYyl9KSxrLnB1c2gocSkpKSksZy5lbnF1ZXVlKGspLGguZGV0YWNoKCkpfX07dGhpcy5kZXN0cm95PWZ1bmN0aW9uKGIpe3IudW5zdWJzY3JpYmUob3BzLkRvY3VtZW50LnNpZ25hbEN1cnNvck1vdmVkLG4pO2sudW5zdWJzY3JpYmUoZ3VpLkNvbW1vbkNvbnN0cmFpbnRzLkVESVQuUkVWSUVXX01PREUsZik7YigpfTtyLnN1YnNjcmliZShvcHMuRG9jdW1lbnQuc2lnbmFsQ3Vyc29yTW92ZWQsbik7ay5zdWJzY3JpYmUoZ3VpLkNvbW1vbkNvbnN0cmFpbnRzLkVESVQuUkVWSUVXX01PREUsZik7ZigpfTtndWkuSHlwZXJsaW5rQ29udHJvbGxlci5lbmFibGVkQ2hhbmdlZD0iZW5hYmxlZC9jaGFuZ2VkIjsKZ3VpLkltYWdlQ29udHJvbGxlcj1mdW5jdGlvbihnLGssZCxiLGYpe2Z1bmN0aW9uIG4oKXt2YXIgYT0hMDshMD09PWsuZ2V0U3RhdGUoZ3VpLkNvbW1vbkNvbnN0cmFpbnRzLkVESVQuUkVWSUVXX01PREUpJiYoYT1kLmlzTG9jYWxDdXJzb3JXaXRoaW5Pd25Bbm5vdGF0aW9uKCkpO2EhPT1tJiYobT1hLGMuZW1pdChndWkuSW1hZ2VDb250cm9sbGVyLmVuYWJsZWRDaGFuZ2VkLG0pKX1mdW5jdGlvbiBwKGEpe2EuZ2V0TWVtYmVySWQoKT09PWImJm4oKX12YXIgcj17ImltYWdlL2dpZiI6Ii5naWYiLCJpbWFnZS9qcGVnIjoiLmpwZyIsImltYWdlL3BuZyI6Ii5wbmcifSxxPW9kZi5OYW1lc3BhY2VzLnRleHRucyxlPWcuZ2V0T2R0RG9jdW1lbnQoKSxsPW9kZi5PZGZVdGlscyxhPWUuZ2V0Rm9ybWF0dGluZygpLGM9bmV3IGNvcmUuRXZlbnROb3RpZmllcihbZ3VpLkh5cGVybGlua0NvbnRyb2xsZXIuZW5hYmxlZENoYW5nZWRdKSxtPSExO3RoaXMuaXNFbmFibGVkPWZ1bmN0aW9uKCl7cmV0dXJuIG19Owp0aGlzLnN1YnNjcmliZT1mdW5jdGlvbihhLGIpe2Muc3Vic2NyaWJlKGEsYil9O3RoaXMudW5zdWJzY3JpYmU9ZnVuY3Rpb24oYSxiKXtjLnVuc3Vic2NyaWJlKGEsYil9O3RoaXMuaW5zZXJ0SW1hZ2U9ZnVuY3Rpb24oYyxkLGssbil7aWYobSl7dmFyIHA9bmV3IGNvcmUuQ1NTVW5pdHM7cnVudGltZS5hc3NlcnQoMDxrJiYwPG4sIkJvdGggd2lkdGggYW5kIGhlaWdodCBvZiB0aGUgaW1hZ2Ugc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiAwcHguIik7bj17d2lkdGg6ayxoZWlnaHQ6bn07aWYoaz1sLmdldFBhcmFncmFwaEVsZW1lbnQoZS5nZXRDdXJzb3IoYikuZ2V0Tm9kZSgpKS5nZXRBdHRyaWJ1dGVOUyhxLCJzdHlsZS1uYW1lIikpe2s9YS5nZXRDb250ZW50U2l6ZShrLCJwYXJhZ3JhcGgiKTt2YXIgdj0xLHU9MTtuLndpZHRoPmsud2lkdGgmJih2PWsud2lkdGgvbi53aWR0aCk7bi5oZWlnaHQ+ay5oZWlnaHQmJih1PWsuaGVpZ2h0L24uaGVpZ2h0KTtrPU1hdGgubWluKHYsdSk7bj0Ke3dpZHRoOm4ud2lkdGgqayxoZWlnaHQ6bi5oZWlnaHQqa319az1wLmNvbnZlcnQobi53aWR0aCwicHgiLCJjbSIpKyJjbSI7cD1wLmNvbnZlcnQobi5oZWlnaHQsInB4IiwiY20iKSsiY20iO3U9ZS5nZXRPZGZDYW52YXMoKS5vZGZDb250YWluZXIoKS5yb290RWxlbWVudC5zdHlsZXM7bj1jLnRvTG93ZXJDYXNlKCk7dmFyIHY9ci5oYXNPd25Qcm9wZXJ0eShuKT9yW25dOm51bGwsdDtuPVtdO3J1bnRpbWUuYXNzZXJ0KG51bGwhPT12LCJJbWFnZSB0eXBlIGlzIG5vdCBzdXBwb3J0ZWQ6ICIrYyk7dj0iUGljdHVyZXMvIitmLmdlbmVyYXRlSW1hZ2VOYW1lKCkrdjt0PW5ldyBvcHMuT3BTZXRCbG9iO3QuaW5pdCh7bWVtYmVyaWQ6YixmaWxlbmFtZTp2LG1pbWV0eXBlOmMsY29udGVudDpkfSk7bi5wdXNoKHQpO2EuZ2V0U3R5bGVFbGVtZW50KCJHcmFwaGljcyIsImdyYXBoaWMiLFt1XSl8fChjPW5ldyBvcHMuT3BBZGRTdHlsZSxjLmluaXQoe21lbWJlcmlkOmIsc3R5bGVOYW1lOiJHcmFwaGljcyIsCnN0eWxlRmFtaWx5OiJncmFwaGljIixpc0F1dG9tYXRpY1N0eWxlOiExLHNldFByb3BlcnRpZXM6eyJzdHlsZTpncmFwaGljLXByb3BlcnRpZXMiOnsidGV4dDphbmNob3ItdHlwZSI6InBhcmFncmFwaCIsInN2Zzp4IjoiMGNtIiwic3ZnOnkiOiIwY20iLCJzdHlsZTp3cmFwIjoiZHluYW1pYyIsInN0eWxlOm51bWJlci13cmFwcGVkLXBhcmFncmFwaHMiOiJuby1saW1pdCIsInN0eWxlOndyYXAtY29udG91ciI6ImZhbHNlIiwic3R5bGU6dmVydGljYWwtcG9zIjoidG9wIiwic3R5bGU6dmVydGljYWwtcmVsIjoicGFyYWdyYXBoIiwic3R5bGU6aG9yaXpvbnRhbC1wb3MiOiJjZW50ZXIiLCJzdHlsZTpob3Jpem9udGFsLXJlbCI6InBhcmFncmFwaCJ9fX0pLG4ucHVzaChjKSk7Yz1mLmdlbmVyYXRlU3R5bGVOYW1lKCk7ZD1uZXcgb3BzLk9wQWRkU3R5bGU7ZC5pbml0KHttZW1iZXJpZDpiLHN0eWxlTmFtZTpjLHN0eWxlRmFtaWx5OiJncmFwaGljIixpc0F1dG9tYXRpY1N0eWxlOiEwLApzZXRQcm9wZXJ0aWVzOnsic3R5bGU6cGFyZW50LXN0eWxlLW5hbWUiOiJHcmFwaGljcyIsInN0eWxlOmdyYXBoaWMtcHJvcGVydGllcyI6eyJzdHlsZTp2ZXJ0aWNhbC1wb3MiOiJ0b3AiLCJzdHlsZTp2ZXJ0aWNhbC1yZWwiOiJiYXNlbGluZSIsInN0eWxlOmhvcml6b250YWwtcG9zIjoiY2VudGVyIiwic3R5bGU6aG9yaXpvbnRhbC1yZWwiOiJwYXJhZ3JhcGgiLCJmbzpiYWNrZ3JvdW5kLWNvbG9yIjoidHJhbnNwYXJlbnQiLCJzdHlsZTpiYWNrZ3JvdW5kLXRyYW5zcGFyZW5jeSI6IjEwMCUiLCJzdHlsZTpzaGFkb3ciOiJub25lIiwic3R5bGU6bWlycm9yIjoibm9uZSIsImZvOmNsaXAiOiJyZWN0KDBjbSwgMGNtLCAwY20sIDBjbSkiLCJkcmF3Omx1bWluYW5jZSI6IjAlIiwiZHJhdzpjb250cmFzdCI6IjAlIiwiZHJhdzpyZWQiOiIwJSIsImRyYXc6Z3JlZW4iOiIwJSIsImRyYXc6Ymx1ZSI6IjAlIiwiZHJhdzpnYW1tYSI6IjEwMCUiLCJkcmF3OmNvbG9yLWludmVyc2lvbiI6ImZhbHNlIiwKImRyYXc6aW1hZ2Utb3BhY2l0eSI6IjEwMCUiLCJkcmF3OmNvbG9yLW1vZGUiOiJzdGFuZGFyZCJ9fX0pO24ucHVzaChkKTt0PW5ldyBvcHMuT3BJbnNlcnRJbWFnZTt0LmluaXQoe21lbWJlcmlkOmIscG9zaXRpb246ZS5nZXRDdXJzb3JQb3NpdGlvbihiKSxmaWxlbmFtZTp2LGZyYW1lV2lkdGg6ayxmcmFtZUhlaWdodDpwLGZyYW1lU3R5bGVOYW1lOmMsZnJhbWVOYW1lOmYuZ2VuZXJhdGVGcmFtZU5hbWUoKX0pO24ucHVzaCh0KTtnLmVucXVldWUobil9fTt0aGlzLmRlc3Ryb3k9ZnVuY3Rpb24oYSl7ZS51bnN1YnNjcmliZShvcHMuRG9jdW1lbnQuc2lnbmFsQ3Vyc29yTW92ZWQscCk7ay51bnN1YnNjcmliZShndWkuQ29tbW9uQ29uc3RyYWludHMuRURJVC5SRVZJRVdfTU9ERSxuKTthKCl9O2Uuc3Vic2NyaWJlKG9wcy5Eb2N1bWVudC5zaWduYWxDdXJzb3JNb3ZlZCxwKTtrLnN1YnNjcmliZShndWkuQ29tbW9uQ29uc3RyYWludHMuRURJVC5SRVZJRVdfTU9ERSxuKTtuKCl9OwpndWkuSW1hZ2VDb250cm9sbGVyLmVuYWJsZWRDaGFuZ2VkPSJlbmFibGVkL2NoYW5nZWQiOwpndWkuSW1hZ2VTZWxlY3Rvcj1mdW5jdGlvbihnKXtmdW5jdGlvbiBrKCl7dmFyIGQ9Zy5nZXRTaXplcigpLGs9Zi5jcmVhdGVFbGVtZW50KCJkaXYiKTtrLmlkPSJpbWFnZVNlbGVjdG9yIjtrLnN0eWxlLmJvcmRlcldpZHRoPSIxcHgiO2QuYXBwZW5kQ2hpbGQoayk7Yi5mb3JFYWNoKGZ1bmN0aW9uKGIpe3ZhciBkPWYuY3JlYXRlRWxlbWVudCgiZGl2Iik7ZC5jbGFzc05hbWU9YjtrLmFwcGVuZENoaWxkKGQpfSk7cmV0dXJuIGt9dmFyIGQ9b2RmLk5hbWVzcGFjZXMuc3ZnbnMsYj0idG9wTGVmdCB0b3BSaWdodCBib3R0b21SaWdodCBib3R0b21MZWZ0IHRvcE1pZGRsZSByaWdodE1pZGRsZSBib3R0b21NaWRkbGUgbGVmdE1pZGRsZSIuc3BsaXQoIiAiKSxmPWcuZ2V0RWxlbWVudCgpLm93bmVyRG9jdW1lbnQsbj0hMTt0aGlzLnNlbGVjdD1mdW5jdGlvbihiKXt2YXIgcixxLGU9Zi5nZXRFbGVtZW50QnlJZCgiaW1hZ2VTZWxlY3RvciIpO2V8fChlPWsoKSk7bj0hMDtyPWUucGFyZW50Tm9kZTsKcT1iLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3ZhciBsPXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksYT1nLmdldFpvb21MZXZlbCgpO3I9KHEubGVmdC1sLmxlZnQpL2EtMTtxPShxLnRvcC1sLnRvcCkvYS0xO2Uuc3R5bGUuZGlzcGxheT0iYmxvY2siO2Uuc3R5bGUubGVmdD1yKyJweCI7ZS5zdHlsZS50b3A9cSsicHgiO2Uuc3R5bGUud2lkdGg9Yi5nZXRBdHRyaWJ1dGVOUyhkLCJ3aWR0aCIpO2Uuc3R5bGUuaGVpZ2h0PWIuZ2V0QXR0cmlidXRlTlMoZCwiaGVpZ2h0Iil9O3RoaXMuY2xlYXJTZWxlY3Rpb249ZnVuY3Rpb24oKXt2YXIgYjtuJiYoYj1mLmdldEVsZW1lbnRCeUlkKCJpbWFnZVNlbGVjdG9yIikpJiYoYi5zdHlsZS5kaXNwbGF5PSJub25lIik7bj0hMX07dGhpcy5pc1NlbGVjdG9yRWxlbWVudD1mdW5jdGlvbihiKXt2YXIgZD1mLmdldEVsZW1lbnRCeUlkKCJpbWFnZVNlbGVjdG9yIik7cmV0dXJuIGQ/Yj09PWR8fGIucGFyZW50Tm9kZT09PWQ6ITF9fTsKKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZyhnKXtmdW5jdGlvbiBkKGIpe3A9Yi53aGljaCYmU3RyaW5nLmZyb21DaGFyQ29kZShiLndoaWNoKT09PW47bj12b2lkIDA7cmV0dXJuITE9PT1wfWZ1bmN0aW9uIGIoKXtwPSExfWZ1bmN0aW9uIGYoYil7bj1iLmRhdGE7cD0hMX12YXIgbixwPSExO3RoaXMuZGVzdHJveT1mdW5jdGlvbihuKXtnLnVuc3Vic2NyaWJlKCJ0ZXh0SW5wdXQiLGIpO2cudW5zdWJzY3JpYmUoImNvbXBvc2l0aW9uZW5kIixmKTtnLnJlbW92ZUZpbHRlcigia2V5cHJlc3MiLGQpO24oKX07Zy5zdWJzY3JpYmUoInRleHRJbnB1dCIsYik7Zy5zdWJzY3JpYmUoImNvbXBvc2l0aW9uZW5kIixmKTtnLmFkZEZpbHRlcigia2V5cHJlc3MiLGQpfWd1aS5JbnB1dE1ldGhvZEVkaXRvcj1mdW5jdGlvbihrLGQpe2Z1bmN0aW9uIGIoYyl7YSYmKGM/YS5nZXROb2RlKCkuc2V0QXR0cmlidXRlTlMoInVybjp3ZWJvZGY6bmFtZXM6Y3Vyc29yIiwiY29tcG9zaW5nIiwidHJ1ZSIpOihhLmdldE5vZGUoKS5yZW1vdmVBdHRyaWJ1dGVOUygidXJuOndlYm9kZjpuYW1lczpjdXJzb3IiLAoiY29tcG9zaW5nIiksaC50ZXh0Q29udGVudD0iIikpfWZ1bmN0aW9uIGYoKXt4JiYoeD0hMSxiKCExKSx3LmVtaXQoZ3VpLklucHV0TWV0aG9kRWRpdG9yLnNpZ25hbENvbXBvc2l0aW9uRW5kLHtkYXRhOnp9KSx6PSIiKX1mdW5jdGlvbiBuKCl7SXx8KEk9ITAsZigpLGEmJmEuZ2V0U2VsZWN0ZWRSYW5nZSgpLmNvbGxhcHNlZD9jLnZhbHVlPSIiOmMudmFsdWU9dS53cml0ZVRvU3RyaW5nKGEuZ2V0U2VsZWN0ZWRSYW5nZSgpLmNsb25lQ29udGVudHMoKSksYy5zZXRTZWxlY3Rpb25SYW5nZSgwLGMudmFsdWUubGVuZ3RoKSxJPSExKX1mdW5jdGlvbiBwKCl7ZC5oYXNGb2N1cygpJiZ5LnRyaWdnZXIoKX1mdW5jdGlvbiByKCl7dj12b2lkIDA7eS5jYW5jZWwoKTtiKCEwKTt4fHx3LmVtaXQoZ3VpLklucHV0TWV0aG9kRWRpdG9yLnNpZ25hbENvbXBvc2l0aW9uU3RhcnQse2RhdGE6IiJ9KX1mdW5jdGlvbiBxKGEpe2E9dj1hLmRhdGE7eD0hMDt6Kz1hO3kudHJpZ2dlcigpfWZ1bmN0aW9uIGUoYSl7YS5kYXRhIT09CnYmJihhPWEuZGF0YSx4PSEwLHorPWEseS50cmlnZ2VyKCkpO3Y9dm9pZCAwfWZ1bmN0aW9uIGwoKXtoLnRleHRDb250ZW50PWMudmFsdWV9dmFyIGE9bnVsbCxjPWQuZ2V0RXZlbnRUcmFwKCksbT1jLm93bmVyRG9jdW1lbnQsaCx5LHg9ITEsej0iIix3PW5ldyBjb3JlLkV2ZW50Tm90aWZpZXIoW2d1aS5JbnB1dE1ldGhvZEVkaXRvci5zaWduYWxDb21wb3NpdGlvblN0YXJ0LGd1aS5JbnB1dE1ldGhvZEVkaXRvci5zaWduYWxDb21wb3NpdGlvbkVuZF0pLHYsdSx0PVtdLEEsST0hMTt0aGlzLnN1YnNjcmliZT13LnN1YnNjcmliZTt0aGlzLnVuc3Vic2NyaWJlPXcudW5zdWJzY3JpYmU7dGhpcy5yZWdpc3RlckN1cnNvcj1mdW5jdGlvbihjKXtjLmdldE1lbWJlcklkKCk9PT1rJiYoYT1jLGEuZ2V0Tm9kZSgpLmFwcGVuZENoaWxkKGgpLGMuc3Vic2NyaWJlKG9wcy5PZHRDdXJzb3Iuc2lnbmFsQ3Vyc29yVXBkYXRlZCxwKSxkLnN1YnNjcmliZSgiaW5wdXQiLGwpLGQuc3Vic2NyaWJlKCJjb21wb3NpdGlvbnVwZGF0ZSIsCmwpKX07dGhpcy5yZW1vdmVDdXJzb3I9ZnVuY3Rpb24oYyl7YSYmYz09PWsmJihhLmdldE5vZGUoKS5yZW1vdmVDaGlsZChoKSxhLnVuc3Vic2NyaWJlKG9wcy5PZHRDdXJzb3Iuc2lnbmFsQ3Vyc29yVXBkYXRlZCxwKSxkLnVuc3Vic2NyaWJlKCJpbnB1dCIsbCksZC51bnN1YnNjcmliZSgiY29tcG9zaXRpb251cGRhdGUiLGwpLGE9bnVsbCl9O3RoaXMuZGVzdHJveT1mdW5jdGlvbihhKXtkLnVuc3Vic2NyaWJlKCJjb21wb3NpdGlvbnN0YXJ0IixyKTtkLnVuc3Vic2NyaWJlKCJjb21wb3NpdGlvbmVuZCIscSk7ZC51bnN1YnNjcmliZSgidGV4dElucHV0IixlKTtkLnVuc3Vic2NyaWJlKCJrZXlwcmVzcyIsZik7ZC51bnN1YnNjcmliZSgiZm9jdXMiLG4pO2NvcmUuQXN5bmMuZGVzdHJveUFsbChBLGEpfTsoZnVuY3Rpb24oKXt1PW5ldyBvZGYuVGV4dFNlcmlhbGl6ZXI7dS5maWx0ZXI9bmV3IG9kZi5PZGZOb2RlRmlsdGVyO2Quc3Vic2NyaWJlKCJjb21wb3NpdGlvbnN0YXJ0IixyKTsKZC5zdWJzY3JpYmUoImNvbXBvc2l0aW9uZW5kIixxKTtkLnN1YnNjcmliZSgidGV4dElucHV0IixlKTtkLnN1YnNjcmliZSgia2V5cHJlc3MiLGYpO2Quc3Vic2NyaWJlKCJmb2N1cyIsbik7dC5wdXNoKG5ldyBnKGQpKTtBPXQubWFwKGZ1bmN0aW9uKGEpe3JldHVybiBhLmRlc3Ryb3l9KTtoPW0uY3JlYXRlRWxlbWVudCgic3BhbiIpO2guc2V0QXR0cmlidXRlKCJpZCIsImNvbXBvc2VyIik7eT1jb3JlLlRhc2suY3JlYXRlVGltZW91dFRhc2sobiwxKTtBLnB1c2goeS5kZXN0cm95KX0pKCl9O2d1aS5JbnB1dE1ldGhvZEVkaXRvci5zaWduYWxDb21wb3NpdGlvblN0YXJ0PSJpbnB1dC9jb21wb3NpdGlvbnN0YXJ0IjtndWkuSW5wdXRNZXRob2RFZGl0b3Iuc2lnbmFsQ29tcG9zaXRpb25FbmQ9ImlucHV0L2NvbXBvc2l0aW9uZW5kIn0pKCk7Cmd1aS5NZXRhZGF0YUNvbnRyb2xsZXI9ZnVuY3Rpb24oZyxrKXtmdW5jdGlvbiBkKGIpe24uZW1pdChndWkuTWV0YWRhdGFDb250cm9sbGVyLnNpZ25hbE1ldGFkYXRhQ2hhbmdlZCxiKX1mdW5jdGlvbiBiKGIpe3ZhciBkPS0xPT09cC5pbmRleE9mKGIpO2R8fHJ1bnRpbWUubG9nKCJTZXR0aW5nICIrYisiIGlzIHJlc3RyaWN0ZWQuIik7cmV0dXJuIGR9dmFyIGY9Zy5nZXRPZHREb2N1bWVudCgpLG49bmV3IGNvcmUuRXZlbnROb3RpZmllcihbZ3VpLk1ldGFkYXRhQ29udHJvbGxlci5zaWduYWxNZXRhZGF0YUNoYW5nZWRdKSxwPVsiZGM6Y3JlYXRvciIsImRjOmRhdGUiLCJtZXRhOmVkaXRpbmctY3ljbGVzIiwibWV0YTplZGl0aW5nLWR1cmF0aW9uIiwibWV0YTpkb2N1bWVudC1zdGF0aXN0aWMiXTt0aGlzLnNldE1ldGFkYXRhPWZ1bmN0aW9uKGQsZil7dmFyIGU9e30sbD0iIixhO2QmJk9iamVjdC5rZXlzKGQpLmZpbHRlcihiKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2VbYV09ZFthXX0pOwpmJiYobD1mLmZpbHRlcihiKS5qb2luKCIsIikpO2lmKDA8bC5sZW5ndGh8fDA8T2JqZWN0LmtleXMoZSkubGVuZ3RoKWE9bmV3IG9wcy5PcFVwZGF0ZU1ldGFkYXRhLGEuaW5pdCh7bWVtYmVyaWQ6ayxzZXRQcm9wZXJ0aWVzOmUscmVtb3ZlZFByb3BlcnRpZXM6MDxsLmxlbmd0aD97YXR0cmlidXRlczpsfTpudWxsfSksZy5lbnF1ZXVlKFthXSl9O3RoaXMuZ2V0TWV0YWRhdGE9ZnVuY3Rpb24oYil7dmFyIGQ7cnVudGltZS5hc3NlcnQoInN0cmluZyI9PT10eXBlb2YgYiwiUHJvcGVydHkgbXVzdCBiZSBhIHN0cmluZyIpO2Q9Yi5zcGxpdCgiOiIpO3J1bnRpbWUuYXNzZXJ0KDI9PT1kLmxlbmd0aCwiUHJvcGVydHkgbXVzdCBiZSBhIG5hbWVzcGFjZS1wcmVmaXhlZCBzdHJpbmciKTtiPW9kZi5OYW1lc3BhY2VzLmxvb2t1cE5hbWVzcGFjZVVSSShkWzBdKTtydW50aW1lLmFzc2VydChCb29sZWFuKGIpLCJQcmVmaXggbXVzdCBiZSBmb3IgYW4gT0RGIG5hbWVzcGFjZS4iKTtyZXR1cm4gZi5nZXRPZGZDYW52YXMoKS5vZGZDb250YWluZXIoKS5nZXRNZXRhZGF0YShiLApkWzFdKX07dGhpcy5zdWJzY3JpYmU9ZnVuY3Rpb24oYixkKXtuLnN1YnNjcmliZShiLGQpfTt0aGlzLnVuc3Vic2NyaWJlPWZ1bmN0aW9uKGIsZCl7bi51bnN1YnNjcmliZShiLGQpfTt0aGlzLmRlc3Ryb3k9ZnVuY3Rpb24oYil7Zi51bnN1YnNjcmliZShvcHMuT2R0RG9jdW1lbnQuc2lnbmFsTWV0YWRhdGFVcGRhdGVkLGQpO2IoKX07Zi5zdWJzY3JpYmUob3BzLk9kdERvY3VtZW50LnNpZ25hbE1ldGFkYXRhVXBkYXRlZCxkKX07Z3VpLk1ldGFkYXRhQ29udHJvbGxlci5zaWduYWxNZXRhZGF0YUNoYW5nZWQ9Im1ldGFkYXRhL2NoYW5nZWQiOwpndWkuUGFzdGVDb250cm9sbGVyPWZ1bmN0aW9uKGcsayxkLGIpe2Z1bmN0aW9uIGYoKXtyPSEwPT09ay5nZXRTdGF0ZShndWkuQ29tbW9uQ29uc3RyYWludHMuRURJVC5SRVZJRVdfTU9ERSk/ZC5pc0xvY2FsQ3Vyc29yV2l0aGluT3duQW5ub3RhdGlvbigpOiEwfWZ1bmN0aW9uIG4oYSl7YS5nZXRNZW1iZXJJZCgpPT09YiYmZigpfXZhciBwPWcuZ2V0T2R0RG9jdW1lbnQoKSxyPSExLHE9b2RmLk5hbWVzcGFjZXMudGV4dG5zLGU9Y29yZS5TdGVwRGlyZWN0aW9uLk5FWFQsbD1vZGYuT2RmVXRpbHM7dGhpcy5pc0VuYWJsZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gcn07dGhpcy5wYXN0ZT1mdW5jdGlvbihhKXtpZihyKXt2YXIgYz1wLmdldEN1cnNvclBvc2l0aW9uKGIpLGQ9cC5nZXRDdXJzb3IoYikuZ2V0Tm9kZSgpLGQ9bC5nZXRQYXJhZ3JhcGhFbGVtZW50KGQpLGg9ZC5nZXRBdHRyaWJ1dGVOUyhxLCJzdHlsZS1uYW1lIil8fCIiLGY9YyxrPVtdLG49cC5jb252ZXJ0RG9tUG9pbnRUb0N1cnNvclN0ZXAoZCwKMCxlKTthLnJlcGxhY2UoL1xyL2csIiIpLnNwbGl0KCJcbiIpLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGM9bmV3IG9wcy5PcEluc2VydFRleHQsZD1uZXcgb3BzLk9wU3BsaXRQYXJhZ3JhcGg7Yy5pbml0KHttZW1iZXJpZDpiLHBvc2l0aW9uOmYsdGV4dDphLG1vdmVDdXJzb3I6ITB9KTtrLnB1c2goYyk7Zis9YS5sZW5ndGg7ZC5pbml0KHttZW1iZXJpZDpiLHBvc2l0aW9uOmYscGFyYWdyYXBoU3R5bGVOYW1lOmgsc291cmNlUGFyYWdyYXBoUG9zaXRpb246bixtb3ZlQ3Vyc29yOiEwfSk7ay5wdXNoKGQpO249Zis9MX0pO2sucG9wKCk7Zy5lbnF1ZXVlKGspfX07dGhpcy5kZXN0cm95PWZ1bmN0aW9uKGEpe3AudW5zdWJzY3JpYmUob3BzLkRvY3VtZW50LnNpZ25hbEN1cnNvck1vdmVkLG4pO2sudW5zdWJzY3JpYmUoZ3VpLkNvbW1vbkNvbnN0cmFpbnRzLkVESVQuUkVWSUVXX01PREUsZik7YSgpfTtwLnN1YnNjcmliZShvcHMuRG9jdW1lbnQuc2lnbmFsQ3Vyc29yTW92ZWQsbik7Cmsuc3Vic2NyaWJlKGd1aS5Db21tb25Db25zdHJhaW50cy5FRElULlJFVklFV19NT0RFLGYpO2YoKX07Z3VpLkNsb3Nlc3RYT2Zmc2V0U2Nhbm5lcj1mdW5jdGlvbihnKXtmdW5jdGlvbiBrKGIpe3JldHVybiBudWxsIT09YiYmdm9pZCAwIT09Zj9NYXRoLmFicyhiLWcpPmY6ITF9ZnVuY3Rpb24gZChiKXtudWxsIT09YiYmITE9PT1rKGIpJiYoZj1NYXRoLmFicyhiLWcpKX12YXIgYj10aGlzLGYsbj1ndWkuU3RlcEluZm8uVmlzdWFsRGlyZWN0aW9uLkxFRlRfVE9fUklHSFQ7dGhpcy50b2tlbj12b2lkIDA7dGhpcy5wcm9jZXNzPWZ1bmN0aW9uKGYsZyxxKXt2YXIgZSxsO2YudmlzdWFsRGlyZWN0aW9uPT09bj8oZT1nJiZnLnJpZ2h0LGw9cSYmcS5sZWZ0KTooZT1nJiZnLmxlZnQsbD1xJiZxLnJpZ2h0KTtpZihrKGUpfHxrKGwpKXJldHVybiEwO2lmKGd8fHEpZChlKSxkKGwpLGIudG9rZW49Zi50b2tlbjtyZXR1cm4hMX19OwpndWkuTGluZUJvdW5kYXJ5U2Nhbm5lcj1mdW5jdGlvbigpe3ZhciBnPXRoaXMsaz1udWxsO3RoaXMudG9rZW49dm9pZCAwO3RoaXMucHJvY2Vzcz1mdW5jdGlvbihkLGIsZil7dmFyIG47aWYobj1mKWlmKGspe3ZhciBwPWs7bj1NYXRoLm1pbihwLmJvdHRvbS1wLnRvcCxmLmJvdHRvbS1mLnRvcCk7dmFyIHI9TWF0aC5tYXgocC50b3AsZi50b3ApLHA9TWF0aC5taW4ocC5ib3R0b20sZi5ib3R0b20pLXI7bj0uND49KDA8bj9wL246MCl9ZWxzZSBuPSExOyFifHxmJiYhbnx8KGcudG9rZW49ZC50b2tlbik7aWYobilyZXR1cm4hMDtrPShkPWspJiZiP3tsZWZ0Ok1hdGgubWluKGQubGVmdCxiLmxlZnQpLHJpZ2h0Ok1hdGgubWF4KGQucmlnaHQsYi5yaWdodCksdG9wOk1hdGgubWluKGQudG9wLGIudG9wKSxib3R0b206TWF0aC5taW4oZC5ib3R0b20sYi5ib3R0b20pfTpkfHxiO3JldHVybiExfX07Cmd1aS5QYXJhZ3JhcGhCb3VuZGFyeVNjYW5uZXI9ZnVuY3Rpb24oKXt2YXIgZz10aGlzLGs9ITEsZCxiPW9kZi5PZGZVdGlsczt0aGlzLnRva2VuPXZvaWQgMDt0aGlzLnByb2Nlc3M9ZnVuY3Rpb24oZil7dmFyIG49Yi5nZXRQYXJhZ3JhcGhFbGVtZW50KGYuY29udGFpbmVyKCkpO2t8fChkPW4saz0hMCk7aWYoZCE9PW4pcmV0dXJuITA7Zy50b2tlbj1mLnRva2VuO3JldHVybiExfX07Cm9kZi5Xb3JkQm91bmRhcnlGaWx0ZXI9ZnVuY3Rpb24oZyxrKXtmdW5jdGlvbiBkKGEsYixjKXtmb3IodmFyIGQ9bnVsbCxlPWcuZ2V0Um9vdE5vZGUoKSxmO2EhPT1lJiZudWxsIT09YSYmbnVsbD09PWQ7KWY9MD5iP2EucHJldmlvdXNTaWJsaW5nOmEubmV4dFNpYmxpbmcsYyhmKT09PU5vZGVGaWx0ZXIuRklMVEVSX0FDQ0VQVCYmKGQ9ZiksYT1hLnBhcmVudE5vZGU7cmV0dXJuIGR9ZnVuY3Rpb24gYihhLGIpe3ZhciBjO3JldHVybiBudWxsPT09YT9tLk5PX05FSUdIQk9VUjpwLmlzQ2hhcmFjdGVyRWxlbWVudChhKT9tLlNQQUNFX0NIQVI6YS5ub2RlVHlwZT09PWZ8fHAuaXNUZXh0U3BhbihhKXx8cC5pc0h5cGVybGluayhhKT8oYz1hLnRleHRDb250ZW50LmNoYXJBdChiKCkpLHEudGVzdChjKT9tLlNQQUNFX0NIQVI6ci50ZXN0KGMpP20uUFVOQ1RVQVRJT05fQ0hBUjptLldPUkRfQ0hBUik6bS5PVEhFUn12YXIgZj1Ob2RlLlRFWFRfTk9ERSxuPU5vZGUuRUxFTUVOVF9OT0RFLApwPW9kZi5PZGZVdGlscyxyPS9bIS0jJS0qLC1cLzotOz8tQFxbLVxdX3t9XHUwMGExXHUwMGFiXHUwMGI3XHUwMGJiXHUwMGJmO1x1MDBiN1x1MDU1YS1cdTA1NWZcdTA1ODktXHUwNThhXHUwNWJlXHUwNWMwXHUwNWMzXHUwNWM2XHUwNWYzLVx1MDVmNFx1MDYwOS1cdTA2MGFcdTA2MGMtXHUwNjBkXHUwNjFiXHUwNjFlLVx1MDYxZlx1MDY2YS1cdTA2NmRcdTA2ZDRcdTA3MDAtXHUwNzBkXHUwN2Y3LVx1MDdmOVx1MDk2NC1cdTA5NjVcdTA5NzBcdTBkZjRcdTBlNGZcdTBlNWEtXHUwZTViXHUwZjA0LVx1MGYxMlx1MGYzYS1cdTBmM2RcdTBmODVcdTBmZDAtXHUwZmQ0XHUxMDRhLVx1MTA0Zlx1MTBmYlx1MTM2MS1cdTEzNjhcdTE2NmQtXHUxNjZlXHUxNjliLVx1MTY5Y1x1MTZlYi1cdTE2ZWRcdTE3MzUtXHUxNzM2XHUxN2Q0LVx1MTdkNlx1MTdkOC1cdTE3ZGFcdTE4MDAtXHUxODBhXHUxOTQ0LVx1MTk0NVx1MTlkZS1cdTE5ZGZcdTFhMWUtXHUxYTFmXHUxYjVhLVx1MWI2MFx1MWMzYi1cdTFjM2ZcdTFjN2UtXHUxYzdmXHUyMDAwLVx1MjA2ZVx1MjA3ZC1cdTIwN2VcdTIwOGQtXHUyMDhlXHUzMDA4LVx1MzAwOVx1Mjc2OC1cdTI3NzVcdTI3YzUtXHUyN2M2XHUyN2U2LVx1MjdlZlx1Mjk4My1cdTI5OThcdTI5ZDgtXHUyOWRiXHUyOWZjLVx1MjlmZFx1MmNmOS1cdTJjZmNcdTJjZmUtXHUyY2ZmXHUyZTAwLVx1MmU3ZVx1MzAwMC1cdTMwM2ZcdTMwYTBcdTMwZmJcdWE2MGQtXHVhNjBmXHVhNjczXHVhNjdlXHVhODc0LVx1YTg3N1x1YThjZS1cdWE4Y2ZcdWE5MmUtXHVhOTJmXHVhOTVmXHVhYTVjLVx1YWE1Zlx1ZmQzZS1cdWZkM2ZcdWZlMTAtXHVmZTE5XHVmZTMwLVx1ZmU1Mlx1ZmU1NC1cdWZlNjFcdWZlNjNcdWZlNjhcdWZlNmEtXHVmZTZiXHVmZjAxLVx1ZmYwM1x1ZmYwNS1cdWZmMGFcdWZmMGMtXHVmZjBmXHVmZjFhLVx1ZmYxYlx1ZmYxZi1cdWZmMjBcdWZmM2ItXHVmZjNkXHVmZjNmXHVmZjViXHVmZjVkXHVmZjVmLVx1ZmY2NV18XHVkODAwW1x1ZGQwMC1cdWRkMDFcdWRmOWZcdWRmZDBdfFx1ZDgwMltcdWRkMWZcdWRkM2ZcdWRlNTAtXHVkZTU4XXxcdWQ4MDlbXHVkYzAwLVx1ZGM3ZV0vLApxPS9ccy8sZT1jb3JlLlBvc2l0aW9uRmlsdGVyLkZpbHRlclJlc3VsdC5GSUxURVJfQUNDRVBULGw9Y29yZS5Qb3NpdGlvbkZpbHRlci5GaWx0ZXJSZXN1bHQuRklMVEVSX1JFSkVDVCxhPW9kZi5Xb3JkQm91bmRhcnlGaWx0ZXIuSW5jbHVkZVdoaXRlc3BhY2UuVFJBSUxJTkcsYz1vZGYuV29yZEJvdW5kYXJ5RmlsdGVyLkluY2x1ZGVXaGl0ZXNwYWNlLkxFQURJTkcsbT17Tk9fTkVJR0hCT1VSOjAsU1BBQ0VfQ0hBUjoxLFBVTkNUVUFUSU9OX0NIQVI6MixXT1JEX0NIQVI6MyxPVEhFUjo0fTt0aGlzLmFjY2VwdFBvc2l0aW9uPWZ1bmN0aW9uKGYpe3ZhciBnPWYuY29udGFpbmVyKCkscD1mLmxlZnROb2RlKCkscj1mLnJpZ2h0Tm9kZSgpLHE9Zi51bmZpbHRlcmVkRG9tT2Zmc2V0LHY9ZnVuY3Rpb24oKXtyZXR1cm4gZi51bmZpbHRlcmVkRG9tT2Zmc2V0KCktMX07Zy5ub2RlVHlwZT09PW4mJihudWxsPT09ciYmKHI9ZChnLDEsZi5nZXROb2RlRmlsdGVyKCkpKSxudWxsPT09cCYmKHA9CmQoZywtMSxmLmdldE5vZGVGaWx0ZXIoKSkpKTtnIT09ciYmKHE9ZnVuY3Rpb24oKXtyZXR1cm4gMH0pO2chPT1wJiZudWxsIT09cCYmKHY9ZnVuY3Rpb24oKXtyZXR1cm4gcC50ZXh0Q29udGVudC5sZW5ndGgtMX0pO2c9YihwLHYpO3I9YihyLHEpO3JldHVybiBnPT09bS5XT1JEX0NIQVImJnI9PT1tLldPUkRfQ0hBUnx8Zz09PW0uUFVOQ1RVQVRJT05fQ0hBUiYmcj09PW0uUFVOQ1RVQVRJT05fQ0hBUnx8az09PWEmJmchPT1tLk5PX05FSUdIQk9VUiYmcj09PW0uU1BBQ0VfQ0hBUnx8az09PWMmJmc9PT1tLlNQQUNFX0NIQVImJnIhPT1tLk5PX05FSUdIQk9VUj9sOmV9fTtvZGYuV29yZEJvdW5kYXJ5RmlsdGVyLkluY2x1ZGVXaGl0ZXNwYWNlPXtOb25lOjAsVFJBSUxJTkc6MSxMRUFESU5HOjJ9OwpndWkuU2VsZWN0aW9uQ29udHJvbGxlcj1mdW5jdGlvbihnLGspe2Z1bmN0aW9uIGQoYSl7dmFyIGI9YS5zcGVjKCk7aWYoYS5pc0VkaXR8fGIubWVtYmVyaWQ9PT1rKUk9dm9pZCAwLEsuY2FuY2VsKCl9ZnVuY3Rpb24gYigpe3ZhciBhPXguZ2V0Q3Vyc29yKGspLmdldE5vZGUoKTtyZXR1cm4geC5jcmVhdGVTdGVwSXRlcmF0b3IoYSwwLFt2LHRdLHguZ2V0Um9vdEVsZW1lbnQoYSkpfWZ1bmN0aW9uIGYoYSxiLGMpe2M9bmV3IG9kZi5Xb3JkQm91bmRhcnlGaWx0ZXIoeCxjKTt2YXIgZD14LmdldFJvb3RFbGVtZW50KGEpfHx4LmdldFJvb3ROb2RlKCksZT14LmNyZWF0ZVJvb3RGaWx0ZXIoZCk7cmV0dXJuIHguY3JlYXRlU3RlcEl0ZXJhdG9yKGEsYixbdixlLGNdLGQpfWZ1bmN0aW9uIG4oYSxiKXtyZXR1cm4gYj97YW5jaG9yTm9kZTphLnN0YXJ0Q29udGFpbmVyLGFuY2hvck9mZnNldDphLnN0YXJ0T2Zmc2V0LGZvY3VzTm9kZTphLmVuZENvbnRhaW5lcixmb2N1c09mZnNldDphLmVuZE9mZnNldH06CnthbmNob3JOb2RlOmEuZW5kQ29udGFpbmVyLGFuY2hvck9mZnNldDphLmVuZE9mZnNldCxmb2N1c05vZGU6YS5zdGFydENvbnRhaW5lcixmb2N1c09mZnNldDphLnN0YXJ0T2Zmc2V0fX1mdW5jdGlvbiBwKGEsYixjKXt2YXIgZD1uZXcgb3BzLk9wTW92ZUN1cnNvcjtkLmluaXQoe21lbWJlcmlkOmsscG9zaXRpb246YSxsZW5ndGg6Ynx8MCxzZWxlY3Rpb25UeXBlOmN9KTtyZXR1cm4gZH1mdW5jdGlvbiByKGEsYixjKXt2YXIgZDtkPXguZ2V0Q3Vyc29yKGspO2Q9bihkLmdldFNlbGVjdGVkUmFuZ2UoKSxkLmhhc0ZvcndhcmRTZWxlY3Rpb24oKSk7ZC5mb2N1c05vZGU9YTtkLmZvY3VzT2Zmc2V0PWI7Y3x8KGQuYW5jaG9yTm9kZT1kLmZvY3VzTm9kZSxkLmFuY2hvck9mZnNldD1kLmZvY3VzT2Zmc2V0KTthPXguY29udmVydERvbVRvQ3Vyc29yUmFuZ2UoZCk7Zy5lbnF1ZXVlKFtwKGEucG9zaXRpb24sYS5sZW5ndGgpXSl9ZnVuY3Rpb24gcShhKXt2YXIgYjtiPWYoYS5zdGFydENvbnRhaW5lciwKYS5zdGFydE9mZnNldCxMKTtiLnJvdW5kVG9QcmV2aW91c1N0ZXAoKSYmYS5zZXRTdGFydChiLmNvbnRhaW5lcigpLGIub2Zmc2V0KCkpO2I9ZihhLmVuZENvbnRhaW5lcixhLmVuZE9mZnNldCxFKTtiLnJvdW5kVG9OZXh0U3RlcCgpJiZhLnNldEVuZChiLmNvbnRhaW5lcigpLGIub2Zmc2V0KCkpfWZ1bmN0aW9uIGUoYSl7dmFyIGI9dy5nZXRQYXJhZ3JhcGhFbGVtZW50cyhhKSxjPWJbMF0sYj1iW2IubGVuZ3RoLTFdO2MmJmEuc2V0U3RhcnQoYywwKTtiJiYody5pc1BhcmFncmFwaChhLmVuZENvbnRhaW5lcikmJjA9PT1hLmVuZE9mZnNldD9hLnNldEVuZEJlZm9yZShiKTphLnNldEVuZChiLGIuY2hpbGROb2Rlcy5sZW5ndGgpKX1mdW5jdGlvbiBsKGEsYixjLGQpe3ZhciBlLGY7ZD8oZT1jLnN0YXJ0Q29udGFpbmVyLGY9Yy5zdGFydE9mZnNldCk6KGU9Yy5lbmRDb250YWluZXIsZj1jLmVuZE9mZnNldCk7ei5jb250YWluc05vZGUoYSxlKXx8KGY9MD56LmNvbXBhcmVQb2ludHMoYSwKMCxlLGYpPzA6YS5jaGlsZE5vZGVzLmxlbmd0aCxlPWEpO2E9eC5jcmVhdGVTdGVwSXRlcmF0b3IoZSxmLGIsdy5nZXRQYXJhZ3JhcGhFbGVtZW50KGUpfHxhKTthLnJvdW5kVG9DbG9zZXN0U3RlcCgpfHxydW50aW1lLmFzc2VydCghMSwiTm8gc3RlcCBmb3VuZCBpbiByZXF1ZXN0ZWQgcmFuZ2UiKTtkP2Muc2V0U3RhcnQoYS5jb250YWluZXIoKSxhLm9mZnNldCgpKTpjLnNldEVuZChhLmNvbnRhaW5lcigpLGEub2Zmc2V0KCkpfWZ1bmN0aW9uIGEoYSxjKXt2YXIgZD1iKCk7ZC5hZHZhbmNlU3RlcChhKSYmcihkLmNvbnRhaW5lcigpLGQub2Zmc2V0KCksYyl9ZnVuY3Rpb24gYyhhLGMpe3ZhciBkLGU9SSxmPVtuZXcgZ3VpLkxpbmVCb3VuZGFyeVNjYW5uZXIsbmV3IGd1aS5QYXJhZ3JhcGhCb3VuZGFyeVNjYW5uZXJdO3ZvaWQgMD09PWUmJkEmJihlPUEoKSk7aXNOYU4oZSl8fChkPWIoKSx1Lm1vdmVUb0ZpbHRlcmVkU3RlcChkLGEsZikmJmQuYWR2YW5jZVN0ZXAoYSkmJihmPVtuZXcgZ3VpLkNsb3Nlc3RYT2Zmc2V0U2Nhbm5lcihlKSwKbmV3IGd1aS5MaW5lQm91bmRhcnlTY2FubmVyLG5ldyBndWkuUGFyYWdyYXBoQm91bmRhcnlTY2FubmVyXSx1Lm1vdmVUb0ZpbHRlcmVkU3RlcChkLGEsZikmJihyKGQuY29udGFpbmVyKCksZC5vZmZzZXQoKSxjKSxJPWUsSy5yZXN0YXJ0KCkpKSl9ZnVuY3Rpb24gbShhLGMpe3ZhciBkPWIoKSxlPVtuZXcgZ3VpLkxpbmVCb3VuZGFyeVNjYW5uZXIsbmV3IGd1aS5QYXJhZ3JhcGhCb3VuZGFyeVNjYW5uZXJdO3UubW92ZVRvRmlsdGVyZWRTdGVwKGQsYSxlKSYmcihkLmNvbnRhaW5lcigpLGQub2Zmc2V0KCksYyl9ZnVuY3Rpb24gaChhLGIpe3ZhciBjPXguZ2V0Q3Vyc29yKGspLGM9bihjLmdldFNlbGVjdGVkUmFuZ2UoKSxjLmhhc0ZvcndhcmRTZWxlY3Rpb24oKSksYz1mKGMuZm9jdXNOb2RlLGMuZm9jdXNPZmZzZXQsTCk7Yy5hZHZhbmNlU3RlcChhKSYmcihjLmNvbnRhaW5lcigpLGMub2Zmc2V0KCksYil9ZnVuY3Rpb24geShhLGIsYyl7dmFyIGQ9ITEsZT14LmdldEN1cnNvcihrKSwKZT1uKGUuZ2V0U2VsZWN0ZWRSYW5nZSgpLGUuaGFzRm9yd2FyZFNlbGVjdGlvbigpKSxkPXguZ2V0Um9vdEVsZW1lbnQoZS5mb2N1c05vZGUpO3J1bnRpbWUuYXNzZXJ0KEJvb2xlYW4oZCksIlNlbGVjdGlvbkNvbnRyb2xsZXI6IEN1cnNvciBvdXRzaWRlIHJvb3QiKTtlPXguY3JlYXRlU3RlcEl0ZXJhdG9yKGUuZm9jdXNOb2RlLGUuZm9jdXNPZmZzZXQsW3YsdF0sZCk7ZS5yb3VuZFRvQ2xvc2VzdFN0ZXAoKTtlLmFkdmFuY2VTdGVwKGEpJiYoYz1jKGUuY29udGFpbmVyKCkpKSYmKGE9PT1OPyhlLnNldFBvc2l0aW9uKGMsMCksZD1lLnJvdW5kVG9OZXh0U3RlcCgpKTooZS5zZXRQb3NpdGlvbihjLGMuY2hpbGROb2Rlcy5sZW5ndGgpLGQ9ZS5yb3VuZFRvUHJldmlvdXNTdGVwKCkpLGQmJnIoZS5jb250YWluZXIoKSxlLm9mZnNldCgpLGIpKX12YXIgeD1nLmdldE9kdERvY3VtZW50KCksej1jb3JlLkRvbVV0aWxzLHc9b2RmLk9kZlV0aWxzLHY9eC5nZXRQb3NpdGlvbkZpbHRlcigpLAp1PW5ldyBndWkuR3VpU3RlcFV0aWxzLHQ9eC5jcmVhdGVSb290RmlsdGVyKGspLEE9bnVsbCxJLEssTD1vZGYuV29yZEJvdW5kYXJ5RmlsdGVyLkluY2x1ZGVXaGl0ZXNwYWNlLlRSQUlMSU5HLEU9b2RmLldvcmRCb3VuZGFyeUZpbHRlci5JbmNsdWRlV2hpdGVzcGFjZS5MRUFESU5HLE49Y29yZS5TdGVwRGlyZWN0aW9uLlBSRVZJT1VTLE89Y29yZS5TdGVwRGlyZWN0aW9uLk5FWFQ7dGhpcy5zZWxlY3Rpb25Ub1JhbmdlPWZ1bmN0aW9uKGEpe3ZhciBiPTA8PXouY29tcGFyZVBvaW50cyhhLmFuY2hvck5vZGUsYS5hbmNob3JPZmZzZXQsYS5mb2N1c05vZGUsYS5mb2N1c09mZnNldCksYz1hLmZvY3VzTm9kZS5vd25lckRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Yj8oYy5zZXRTdGFydChhLmFuY2hvck5vZGUsYS5hbmNob3JPZmZzZXQpLGMuc2V0RW5kKGEuZm9jdXNOb2RlLGEuZm9jdXNPZmZzZXQpKTooYy5zZXRTdGFydChhLmZvY3VzTm9kZSxhLmZvY3VzT2Zmc2V0KSxjLnNldEVuZChhLmFuY2hvck5vZGUsCmEuYW5jaG9yT2Zmc2V0KSk7cmV0dXJue3JhbmdlOmMsaGFzRm9yd2FyZFNlbGVjdGlvbjpifX07dGhpcy5yYW5nZVRvU2VsZWN0aW9uPW47dGhpcy5zZWxlY3RJbWFnZT1mdW5jdGlvbihhKXt2YXIgYz14LmdldFJvb3RFbGVtZW50KGEpLGI9eC5jcmVhdGVSb290RmlsdGVyKGMpLGM9eC5jcmVhdGVTdGVwSXRlcmF0b3IoYSwwLFtiLHguZ2V0UG9zaXRpb25GaWx0ZXIoKV0sYyksZDtjLnJvdW5kVG9QcmV2aW91c1N0ZXAoKXx8cnVudGltZS5hc3NlcnQoITEsIk5vIHdhbGthYmxlIHBvc2l0aW9uIGJlZm9yZSBmcmFtZSIpO2I9Yy5jb250YWluZXIoKTtkPWMub2Zmc2V0KCk7Yy5zZXRQb3NpdGlvbihhLGEuY2hpbGROb2Rlcy5sZW5ndGgpO2Mucm91bmRUb05leHRTdGVwKCl8fHJ1bnRpbWUuYXNzZXJ0KCExLCJObyB3YWxrYWJsZSBwb3NpdGlvbiBhZnRlciBmcmFtZSIpO2E9eC5jb252ZXJ0RG9tVG9DdXJzb3JSYW5nZSh7YW5jaG9yTm9kZTpiLGFuY2hvck9mZnNldDpkLGZvY3VzTm9kZTpjLmNvbnRhaW5lcigpLApmb2N1c09mZnNldDpjLm9mZnNldCgpfSk7YT1wKGEucG9zaXRpb24sYS5sZW5ndGgsb3BzLk9kdEN1cnNvci5SZWdpb25TZWxlY3Rpb24pO2cuZW5xdWV1ZShbYV0pfTt0aGlzLmV4cGFuZFRvV29yZEJvdW5kYXJpZXM9cTt0aGlzLmV4cGFuZFRvUGFyYWdyYXBoQm91bmRhcmllcz1lO3RoaXMuc2VsZWN0UmFuZ2U9ZnVuY3Rpb24oYSxjLGIpe3ZhciBkPXguZ2V0T2RmQ2FudmFzKCkuZ2V0RWxlbWVudCgpLGYsaD1bdl07Zj16LmNvbnRhaW5zTm9kZShkLGEuc3RhcnRDb250YWluZXIpO2Q9ei5jb250YWluc05vZGUoZCxhLmVuZENvbnRhaW5lcik7aWYoZnx8ZClpZihmJiZkJiYoMj09PWI/cShhKTozPD1iJiZlKGEpKSwoYj1jP3guZ2V0Um9vdEVsZW1lbnQoYS5zdGFydENvbnRhaW5lcik6eC5nZXRSb290RWxlbWVudChhLmVuZENvbnRhaW5lcikpfHwoYj14LmdldFJvb3ROb2RlKCkpLGgucHVzaCh4LmNyZWF0ZVJvb3RGaWx0ZXIoYikpLGwoYixoLGEsITApLGwoYixoLGEsITEpLGE9Cm4oYSxjKSxjPXguY29udmVydERvbVRvQ3Vyc29yUmFuZ2UoYSksYT14LmdldEN1cnNvclNlbGVjdGlvbihrKSxjLnBvc2l0aW9uIT09YS5wb3NpdGlvbnx8Yy5sZW5ndGghPT1hLmxlbmd0aClhPXAoYy5wb3NpdGlvbixjLmxlbmd0aCxvcHMuT2R0Q3Vyc29yLlJhbmdlU2VsZWN0aW9uKSxnLmVucXVldWUoW2FdKX07dGhpcy5tb3ZlQ3Vyc29yVG9MZWZ0PWZ1bmN0aW9uKCl7YShOLCExKTtyZXR1cm4hMH07dGhpcy5tb3ZlQ3Vyc29yVG9SaWdodD1mdW5jdGlvbigpe2EoTywhMSk7cmV0dXJuITB9O3RoaXMuZXh0ZW5kU2VsZWN0aW9uVG9MZWZ0PWZ1bmN0aW9uKCl7YShOLCEwKTtyZXR1cm4hMH07dGhpcy5leHRlbmRTZWxlY3Rpb25Ub1JpZ2h0PWZ1bmN0aW9uKCl7YShPLCEwKTtyZXR1cm4hMH07dGhpcy5zZXRDYXJldFhQb3NpdGlvbkxvY2F0b3I9ZnVuY3Rpb24oYSl7QT1hfTt0aGlzLm1vdmVDdXJzb3JVcD1mdW5jdGlvbigpe2MoTiwhMSk7cmV0dXJuITB9O3RoaXMubW92ZUN1cnNvckRvd249CmZ1bmN0aW9uKCl7YyhPLCExKTtyZXR1cm4hMH07dGhpcy5leHRlbmRTZWxlY3Rpb25VcD1mdW5jdGlvbigpe2MoTiwhMCk7cmV0dXJuITB9O3RoaXMuZXh0ZW5kU2VsZWN0aW9uRG93bj1mdW5jdGlvbigpe2MoTywhMCk7cmV0dXJuITB9O3RoaXMubW92ZUN1cnNvckJlZm9yZVdvcmQ9ZnVuY3Rpb24oKXtoKE4sITEpO3JldHVybiEwfTt0aGlzLm1vdmVDdXJzb3JQYXN0V29yZD1mdW5jdGlvbigpe2goTywhMSk7cmV0dXJuITB9O3RoaXMuZXh0ZW5kU2VsZWN0aW9uQmVmb3JlV29yZD1mdW5jdGlvbigpe2goTiwhMCk7cmV0dXJuITB9O3RoaXMuZXh0ZW5kU2VsZWN0aW9uUGFzdFdvcmQ9ZnVuY3Rpb24oKXtoKE8sITApO3JldHVybiEwfTt0aGlzLm1vdmVDdXJzb3JUb0xpbmVTdGFydD1mdW5jdGlvbigpe20oTiwhMSk7cmV0dXJuITB9O3RoaXMubW92ZUN1cnNvclRvTGluZUVuZD1mdW5jdGlvbigpe20oTywhMSk7cmV0dXJuITB9O3RoaXMuZXh0ZW5kU2VsZWN0aW9uVG9MaW5lU3RhcnQ9CmZ1bmN0aW9uKCl7bShOLCEwKTtyZXR1cm4hMH07dGhpcy5leHRlbmRTZWxlY3Rpb25Ub0xpbmVFbmQ9ZnVuY3Rpb24oKXttKE8sITApO3JldHVybiEwfTt0aGlzLmV4dGVuZFNlbGVjdGlvblRvUGFyYWdyYXBoU3RhcnQ9ZnVuY3Rpb24oKXt5KE4sITAsdy5nZXRQYXJhZ3JhcGhFbGVtZW50KTtyZXR1cm4hMH07dGhpcy5leHRlbmRTZWxlY3Rpb25Ub1BhcmFncmFwaEVuZD1mdW5jdGlvbigpe3koTywhMCx3LmdldFBhcmFncmFwaEVsZW1lbnQpO3JldHVybiEwfTt0aGlzLm1vdmVDdXJzb3JUb1BhcmFncmFwaFN0YXJ0PWZ1bmN0aW9uKCl7eShOLCExLHcuZ2V0UGFyYWdyYXBoRWxlbWVudCk7cmV0dXJuITB9O3RoaXMubW92ZUN1cnNvclRvUGFyYWdyYXBoRW5kPWZ1bmN0aW9uKCl7eShPLCExLHcuZ2V0UGFyYWdyYXBoRWxlbWVudCk7cmV0dXJuITB9O3RoaXMubW92ZUN1cnNvclRvRG9jdW1lbnRTdGFydD1mdW5jdGlvbigpe3koTiwhMSx4LmdldFJvb3RFbGVtZW50KTtyZXR1cm4hMH07CnRoaXMubW92ZUN1cnNvclRvRG9jdW1lbnRFbmQ9ZnVuY3Rpb24oKXt5KE8sITEseC5nZXRSb290RWxlbWVudCk7cmV0dXJuITB9O3RoaXMuZXh0ZW5kU2VsZWN0aW9uVG9Eb2N1bWVudFN0YXJ0PWZ1bmN0aW9uKCl7eShOLCEwLHguZ2V0Um9vdEVsZW1lbnQpO3JldHVybiEwfTt0aGlzLmV4dGVuZFNlbGVjdGlvblRvRG9jdW1lbnRFbmQ9ZnVuY3Rpb24oKXt5KE8sITAseC5nZXRSb290RWxlbWVudCk7cmV0dXJuITB9O3RoaXMuZXh0ZW5kU2VsZWN0aW9uVG9FbnRpcmVEb2N1bWVudD1mdW5jdGlvbigpe3ZhciBhPXguZ2V0Q3Vyc29yKGspLGE9eC5nZXRSb290RWxlbWVudChhLmdldE5vZGUoKSksYyxiLGQ7cnVudGltZS5hc3NlcnQoQm9vbGVhbihhKSwiU2VsZWN0aW9uQ29udHJvbGxlcjogQ3Vyc29yIG91dHNpZGUgcm9vdCIpO2Q9eC5jcmVhdGVTdGVwSXRlcmF0b3IoYSwwLFt2LHRdLGEpO2Qucm91bmRUb0Nsb3Nlc3RTdGVwKCk7Yz1kLmNvbnRhaW5lcigpO2I9ZC5vZmZzZXQoKTsKZC5zZXRQb3NpdGlvbihhLGEuY2hpbGROb2Rlcy5sZW5ndGgpO2Qucm91bmRUb0Nsb3Nlc3RTdGVwKCk7YT14LmNvbnZlcnREb21Ub0N1cnNvclJhbmdlKHthbmNob3JOb2RlOmMsYW5jaG9yT2Zmc2V0OmIsZm9jdXNOb2RlOmQuY29udGFpbmVyKCksZm9jdXNPZmZzZXQ6ZC5vZmZzZXQoKX0pO2cuZW5xdWV1ZShbcChhLnBvc2l0aW9uLGEubGVuZ3RoKV0pO3JldHVybiEwfTt0aGlzLmRlc3Ryb3k9ZnVuY3Rpb24oYSl7eC51bnN1YnNjcmliZShvcHMuT2R0RG9jdW1lbnQuc2lnbmFsT3BlcmF0aW9uU3RhcnQsZCk7Y29yZS5Bc3luYy5kZXN0cm95QWxsKFtLLmRlc3Ryb3ldLGEpfTsoZnVuY3Rpb24oKXtLPWNvcmUuVGFzay5jcmVhdGVUaW1lb3V0VGFzayhmdW5jdGlvbigpe0k9dm9pZCAwfSwyRTMpO3guc3Vic2NyaWJlKG9wcy5PZHREb2N1bWVudC5zaWduYWxPcGVyYXRpb25TdGFydCxkKX0pKCl9OwpndWkuVGV4dENvbnRyb2xsZXI9ZnVuY3Rpb24oZyxrLGQsYixmLG4pe2Z1bmN0aW9uIHAoKXt5PSEwPT09ay5nZXRTdGF0ZShndWkuQ29tbW9uQ29uc3RyYWludHMuRURJVC5SRVZJRVdfTU9ERSk/ZC5pc0xvY2FsQ3Vyc29yV2l0aGluT3duQW5ub3RhdGlvbigpOiEwfWZ1bmN0aW9uIHIoYSl7YS5nZXRNZW1iZXJJZCgpPT09YiYmcCgpfWZ1bmN0aW9uIHEoYSxiLGQpe3ZhciBlPVtjLmdldFBvc2l0aW9uRmlsdGVyKCldO2QmJmUucHVzaChjLmNyZWF0ZVJvb3RGaWx0ZXIoYS5zdGFydENvbnRhaW5lcikpO2Q9Yy5jcmVhdGVTdGVwSXRlcmF0b3IoYS5zdGFydENvbnRhaW5lcixhLnN0YXJ0T2Zmc2V0LGUsYik7ZC5yb3VuZFRvQ2xvc2VzdFN0ZXAoKXx8cnVudGltZS5hc3NlcnQoITEsIk5vIHdhbGthYmxlIHN0ZXAgZm91bmQgaW4gcGFyYWdyYXBoIGVsZW1lbnQgYXQgcmFuZ2Ugc3RhcnQiKTtiPWMuY29udmVydERvbVBvaW50VG9DdXJzb3JTdGVwKGQuY29udGFpbmVyKCksZC5vZmZzZXQoKSk7CmEuY29sbGFwc2VkP2E9YjooZC5zZXRQb3NpdGlvbihhLmVuZENvbnRhaW5lcixhLmVuZE9mZnNldCksZC5yb3VuZFRvQ2xvc2VzdFN0ZXAoKXx8cnVudGltZS5hc3NlcnQoITEsIk5vIHdhbGthYmxlIHN0ZXAgZm91bmQgaW4gcGFyYWdyYXBoIGVsZW1lbnQgYXQgcmFuZ2UgZW5kIiksYT1jLmNvbnZlcnREb21Qb2ludFRvQ3Vyc29yU3RlcChkLmNvbnRhaW5lcigpLGQub2Zmc2V0KCkpKTtyZXR1cm57cG9zaXRpb246YixsZW5ndGg6YS1ifX1mdW5jdGlvbiBlKGEpe3ZhciBjLGQsZSxmPW0uZ2V0UGFyYWdyYXBoRWxlbWVudHMoYSksZz1hLmNsb25lUmFuZ2UoKSxsPVtdO2M9ZlswXTsxPGYubGVuZ3RoJiYobS5oYXNOb09ERkNvbnRlbnQoYykmJihjPWZbZi5sZW5ndGgtMV0pLGQ9Yy5nZXRBdHRyaWJ1dGVOUyhvZGYuTmFtZXNwYWNlcy50ZXh0bnMsInN0eWxlLW5hbWUiKXx8IiIpO2YuZm9yRWFjaChmdW5jdGlvbihjLGYpe3ZhciBtLGs7Zy5zZXRTdGFydChjLDApO2cuY29sbGFwc2UoITApOwptPXEoZyxjLCExKS5wb3NpdGlvbjswPGYmJihrPW5ldyBvcHMuT3BNZXJnZVBhcmFncmFwaCxrLmluaXQoe21lbWJlcmlkOmIscGFyYWdyYXBoU3R5bGVOYW1lOmQsZGVzdGluYXRpb25TdGFydFBvc2l0aW9uOmUsc291cmNlU3RhcnRQb3NpdGlvbjptLG1vdmVDdXJzb3I6MT09PWZ9KSxsLnVuc2hpZnQoaykpO2U9bTtnLnNlbGVjdE5vZGVDb250ZW50cyhjKTtpZihtPWgucmFuZ2VJbnRlcnNlY3Rpb24oZyxhKSltPXEobSxjLCEwKSwwPG0ubGVuZ3RoJiYoaz1uZXcgb3BzLk9wUmVtb3ZlVGV4dCxrLmluaXQoe21lbWJlcmlkOmIscG9zaXRpb246bS5wb3NpdGlvbixsZW5ndGg6bS5sZW5ndGh9KSxsLnVuc2hpZnQoaykpfSk7cmV0dXJuIGx9ZnVuY3Rpb24gbChhKXswPmEubGVuZ3RoJiYoYS5wb3NpdGlvbis9YS5sZW5ndGgsYS5sZW5ndGg9LWEubGVuZ3RoKTtyZXR1cm4gYX1mdW5jdGlvbiBhKGEpe2lmKCF5KXJldHVybiExO3ZhciBkLGY9Yy5nZXRDdXJzb3IoYikuZ2V0U2VsZWN0ZWRSYW5nZSgpLmNsb25lUmFuZ2UoKSwKaD1sKGMuZ2V0Q3Vyc29yU2VsZWN0aW9uKGIpKSxtO2lmKDA9PT1oLmxlbmd0aCl7aD12b2lkIDA7ZD1jLmdldEN1cnNvcihiKS5nZXROb2RlKCk7bT1jLmdldFJvb3RFbGVtZW50KGQpO3ZhciBrPVtjLmdldFBvc2l0aW9uRmlsdGVyKCksYy5jcmVhdGVSb290RmlsdGVyKG0pXTttPWMuY3JlYXRlU3RlcEl0ZXJhdG9yKGQsMCxrLG0pO20ucm91bmRUb0Nsb3Nlc3RTdGVwKCkmJihhP20ubmV4dFN0ZXAoKTptLnByZXZpb3VzU3RlcCgpKSYmKGg9bChjLmNvbnZlcnREb21Ub0N1cnNvclJhbmdlKHthbmNob3JOb2RlOmQsYW5jaG9yT2Zmc2V0OjAsZm9jdXNOb2RlOm0uY29udGFpbmVyKCksZm9jdXNPZmZzZXQ6bS5vZmZzZXQoKX0pKSxhPyhmLnNldFN0YXJ0KGQsMCksZi5zZXRFbmQobS5jb250YWluZXIoKSxtLm9mZnNldCgpKSk6KGYuc2V0U3RhcnQobS5jb250YWluZXIoKSxtLm9mZnNldCgpKSxmLnNldEVuZChkLDApKSl9aCYmZy5lbnF1ZXVlKGUoZikpO3JldHVybiB2b2lkIDAhPT0KaH12YXIgYz1nLmdldE9kdERvY3VtZW50KCksbT1vZGYuT2RmVXRpbHMsaD1jb3JlLkRvbVV0aWxzLHk9ITEseD1vZGYuTmFtZXNwYWNlcy50ZXh0bnMsej1jb3JlLlN0ZXBEaXJlY3Rpb24uTkVYVDt0aGlzLmlzRW5hYmxlZD1mdW5jdGlvbigpe3JldHVybiB5fTt0aGlzLmVucXVldWVQYXJhZ3JhcGhTcGxpdHRpbmdPcHM9ZnVuY3Rpb24oKXtpZigheSlyZXR1cm4hMTt2YXIgYT1jLmdldEN1cnNvcihiKSxkPWEuZ2V0U2VsZWN0ZWRSYW5nZSgpLGY9bChjLmdldEN1cnNvclNlbGVjdGlvbihiKSksaD1bXSxhPW0uZ2V0UGFyYWdyYXBoRWxlbWVudChhLmdldE5vZGUoKSksaz1hLmdldEF0dHJpYnV0ZU5TKHgsInN0eWxlLW5hbWUiKXx8IiI7MDxmLmxlbmd0aCYmKGg9aC5jb25jYXQoZShkKSkpO2Q9bmV3IG9wcy5PcFNwbGl0UGFyYWdyYXBoO2QuaW5pdCh7bWVtYmVyaWQ6Yixwb3NpdGlvbjpmLnBvc2l0aW9uLHBhcmFncmFwaFN0eWxlTmFtZTprLHNvdXJjZVBhcmFncmFwaFBvc2l0aW9uOmMuY29udmVydERvbVBvaW50VG9DdXJzb3JTdGVwKGEsCjAseiksbW92ZUN1cnNvcjohMH0pO2gucHVzaChkKTtuJiYoZj1uKGYucG9zaXRpb24rMSksaD1oLmNvbmNhdChmKSk7Zy5lbnF1ZXVlKGgpO3JldHVybiEwfTt0aGlzLnJlbW92ZVRleHRCeUJhY2tzcGFjZUtleT1mdW5jdGlvbigpe3JldHVybiBhKCExKX07dGhpcy5yZW1vdmVUZXh0QnlEZWxldGVLZXk9ZnVuY3Rpb24oKXtyZXR1cm4gYSghMCl9O3RoaXMucmVtb3ZlQ3VycmVudFNlbGVjdGlvbj1mdW5jdGlvbigpe2lmKCF5KXJldHVybiExO3ZhciBhPWMuZ2V0Q3Vyc29yKGIpLmdldFNlbGVjdGVkUmFuZ2UoKTtnLmVucXVldWUoZShhKSk7cmV0dXJuITB9O3RoaXMuaW5zZXJ0VGV4dD1mdW5jdGlvbihhKXtpZih5KXt2YXIgZD1jLmdldEN1cnNvcihiKS5nZXRTZWxlY3RlZFJhbmdlKCksaD1sKGMuZ2V0Q3Vyc29yU2VsZWN0aW9uKGIpKSxtPVtdLGs9ITE7MDxoLmxlbmd0aCYmKG09bS5jb25jYXQoZShkKSksaz0hMCk7ZD1uZXcgb3BzLk9wSW5zZXJ0VGV4dDtkLmluaXQoe21lbWJlcmlkOmIsCnBvc2l0aW9uOmgucG9zaXRpb24sdGV4dDphLG1vdmVDdXJzb3I6ITB9KTttLnB1c2goZCk7ZiYmKGE9ZihoLnBvc2l0aW9uLGEubGVuZ3RoLGspKSYmbS5wdXNoKGEpO2cuZW5xdWV1ZShtKX19O3RoaXMuZGVzdHJveT1mdW5jdGlvbihhKXtjLnVuc3Vic2NyaWJlKG9wcy5Eb2N1bWVudC5zaWduYWxDdXJzb3JNb3ZlZCxyKTtrLnVuc3Vic2NyaWJlKGd1aS5Db21tb25Db25zdHJhaW50cy5FRElULlJFVklFV19NT0RFLHApO2EoKX07Yy5zdWJzY3JpYmUob3BzLkRvY3VtZW50LnNpZ25hbEN1cnNvck1vdmVkLHIpO2suc3Vic2NyaWJlKGd1aS5Db21tb25Db25zdHJhaW50cy5FRElULlJFVklFV19NT0RFLHApO3AoKX07Z3VpLlVuZG9NYW5hZ2VyPWZ1bmN0aW9uKCl7fTtndWkuVW5kb01hbmFnZXIucHJvdG90eXBlLnN1YnNjcmliZT1mdW5jdGlvbihnLGspe307Z3VpLlVuZG9NYW5hZ2VyLnByb3RvdHlwZS51bnN1YnNjcmliZT1mdW5jdGlvbihnLGspe307Cmd1aS5VbmRvTWFuYWdlci5wcm90b3R5cGUuc2V0RG9jdW1lbnQ9ZnVuY3Rpb24oZyl7fTtndWkuVW5kb01hbmFnZXIucHJvdG90eXBlLnNldEluaXRpYWxTdGF0ZT1mdW5jdGlvbigpe307Z3VpLlVuZG9NYW5hZ2VyLnByb3RvdHlwZS5pbml0aWFsaXplPWZ1bmN0aW9uKCl7fTtndWkuVW5kb01hbmFnZXIucHJvdG90eXBlLnB1cmdlSW5pdGlhbFN0YXRlPWZ1bmN0aW9uKCl7fTtndWkuVW5kb01hbmFnZXIucHJvdG90eXBlLnNldFBsYXliYWNrRnVuY3Rpb249ZnVuY3Rpb24oZyl7fTtndWkuVW5kb01hbmFnZXIucHJvdG90eXBlLmhhc1VuZG9TdGF0ZXM9ZnVuY3Rpb24oKXt9O2d1aS5VbmRvTWFuYWdlci5wcm90b3R5cGUuaGFzUmVkb1N0YXRlcz1mdW5jdGlvbigpe307Z3VpLlVuZG9NYW5hZ2VyLnByb3RvdHlwZS5tb3ZlRm9yd2FyZD1mdW5jdGlvbihnKXt9O2d1aS5VbmRvTWFuYWdlci5wcm90b3R5cGUubW92ZUJhY2t3YXJkPWZ1bmN0aW9uKGcpe307Cmd1aS5VbmRvTWFuYWdlci5wcm90b3R5cGUub25PcGVyYXRpb25FeGVjdXRlZD1mdW5jdGlvbihnKXt9O2d1aS5VbmRvTWFuYWdlci5wcm90b3R5cGUuaXNEb2N1bWVudE1vZGlmaWVkPWZ1bmN0aW9uKCl7fTtndWkuVW5kb01hbmFnZXIucHJvdG90eXBlLnNldERvY3VtZW50TW9kaWZpZWQ9ZnVuY3Rpb24oZyl7fTtndWkuVW5kb01hbmFnZXIuc2lnbmFsVW5kb1N0YWNrQ2hhbmdlZD0idW5kb1N0YWNrQ2hhbmdlZCI7Z3VpLlVuZG9NYW5hZ2VyLnNpZ25hbFVuZG9TdGF0ZUNyZWF0ZWQ9InVuZG9TdGF0ZUNyZWF0ZWQiO2d1aS5VbmRvTWFuYWdlci5zaWduYWxVbmRvU3RhdGVNb2RpZmllZD0idW5kb1N0YXRlTW9kaWZpZWQiO2d1aS5VbmRvTWFuYWdlci5zaWduYWxEb2N1bWVudE1vZGlmaWVkQ2hhbmdlZD0iZG9jdW1lbnRNb2RpZmllZENoYW5nZWQiOwpndWkuU2Vzc2lvbkNvbnRyb2xsZXJPcHRpb25zPWZ1bmN0aW9uKCl7dGhpcy5hbm5vdGF0aW9uc0VuYWJsZWQ9dGhpcy5kaXJlY3RQYXJhZ3JhcGhTdHlsaW5nRW5hYmxlZD10aGlzLmRpcmVjdFRleHRTdHlsaW5nRW5hYmxlZD0hMX07CihmdW5jdGlvbigpe3ZhciBnPWNvcmUuUG9zaXRpb25GaWx0ZXIuRmlsdGVyUmVzdWx0LkZJTFRFUl9BQ0NFUFQ7Z3VpLlNlc3Npb25Db250cm9sbGVyPWZ1bmN0aW9uKGssZCxiLGYpe2Z1bmN0aW9uIG4oYSxjKXt2YXIgYj1KLmdldERPTURvY3VtZW50KCksZD1udWxsO2IuY2FyZXRSYW5nZUZyb21Qb2ludD8oYj1iLmNhcmV0UmFuZ2VGcm9tUG9pbnQoYSxjKSxkPXtjb250YWluZXI6Yi5zdGFydENvbnRhaW5lcixvZmZzZXQ6Yi5zdGFydE9mZnNldH0pOmIuY2FyZXRQb3NpdGlvbkZyb21Qb2ludCYmKGI9Yi5jYXJldFBvc2l0aW9uRnJvbVBvaW50KGEsYykpJiZiLm9mZnNldE5vZGUmJihkPXtjb250YWluZXI6Yi5vZmZzZXROb2RlLG9mZnNldDpiLm9mZnNldH0pO3JldHVybiBkfWZ1bmN0aW9uIHAoYSl7dmFyIGM9Si5nZXRDdXJzb3IoZCkuZ2V0U2VsZWN0ZWRSYW5nZSgpO2MuY29sbGFwc2VkP2EucHJldmVudERlZmF1bHQoKTpoYS5zZXREYXRhRnJvbVJhbmdlKGEsYyk/ZGEucmVtb3ZlQ3VycmVudFNlbGVjdGlvbigpOgpydW50aW1lLmxvZygiQ3V0IG9wZXJhdGlvbiBmYWlsZWQiKX1mdW5jdGlvbiByKCl7cmV0dXJuITEhPT1KLmdldEN1cnNvcihkKS5nZXRTZWxlY3RlZFJhbmdlKCkuY29sbGFwc2VkfWZ1bmN0aW9uIHEoYSl7dmFyIGM9Si5nZXRDdXJzb3IoZCkuZ2V0U2VsZWN0ZWRSYW5nZSgpO2MuY29sbGFwc2VkP2EucHJldmVudERlZmF1bHQoKTpoYS5zZXREYXRhRnJvbVJhbmdlKGEsYyl8fHJ1bnRpbWUubG9nKCJDb3B5IG9wZXJhdGlvbiBmYWlsZWQiKX1mdW5jdGlvbiBlKGEpe3ZhciBjO1cuY2xpcGJvYXJkRGF0YSYmVy5jbGlwYm9hcmREYXRhLmdldERhdGE/Yz1XLmNsaXBib2FyZERhdGEuZ2V0RGF0YSgiVGV4dCIpOmEuY2xpcGJvYXJkRGF0YSYmYS5jbGlwYm9hcmREYXRhLmdldERhdGEmJihjPWEuY2xpcGJvYXJkRGF0YS5nZXREYXRhKCJ0ZXh0L3BsYWluIikpO2MmJihkYS5yZW1vdmVDdXJyZW50U2VsZWN0aW9uKCksZWEucGFzdGUoYykpO2EucHJldmVudERlZmF1bHQ/YS5wcmV2ZW50RGVmYXVsdCgpOgphLnJldHVyblZhbHVlPSExfWZ1bmN0aW9uIGwoKXtyZXR1cm4hMX1mdW5jdGlvbiBhKGEpe2lmKFEpUS5vbk9wZXJhdGlvbkV4ZWN1dGVkKGEpfWZ1bmN0aW9uIGMoYSl7Si5lbWl0KG9wcy5PZHREb2N1bWVudC5zaWduYWxVbmRvU3RhY2tDaGFuZ2VkLGEpfWZ1bmN0aW9uIG0oKXt2YXIgYTtyZXR1cm4gUT8oYT1GLmhhc0ZvY3VzKCksUS5tb3ZlQmFja3dhcmQoMSksYSYmRi5mb2N1cygpLCEwKTohMX1mdW5jdGlvbiBoKCl7dmFyIGE7cmV0dXJuIFE/KGE9Ri5oYXNGb2N1cygpLFEubW92ZUZvcndhcmQoMSksYSYmRi5mb2N1cygpLCEwKTohMX1mdW5jdGlvbiB5KGEpe3ZhciBjPUouZ2V0Q3Vyc29yKGQpLmdldFNlbGVjdGVkUmFuZ2UoKSxlPShhLnRhcmdldHx8YS5zcmNFbGVtZW50fHxudWxsKS5nZXRBdHRyaWJ1dGUoImVuZCIpO2MmJmUmJihhPW4oYS5jbGllbnRYLGEuY2xpZW50WSkpJiYoaWEuc2V0VW5maWx0ZXJlZFBvc2l0aW9uKGEuY29udGFpbmVyLGEub2Zmc2V0KSxZLmFjY2VwdFBvc2l0aW9uKGlhKT09PQpnJiYoYz1jLmNsb25lUmFuZ2UoKSwibGVmdCI9PT1lP2Muc2V0U3RhcnQoaWEuY29udGFpbmVyKCksaWEudW5maWx0ZXJlZERvbU9mZnNldCgpKTpjLnNldEVuZChpYS5jb250YWluZXIoKSxpYS51bmZpbHRlcmVkRG9tT2Zmc2V0KCkpLGIuc2V0U2VsZWN0ZWRSYW5nZShjLCJyaWdodCI9PT1lKSxKLmVtaXQob3BzLkRvY3VtZW50LnNpZ25hbEN1cnNvck1vdmVkLGIpKSl9ZnVuY3Rpb24geCgpe1Quc2VsZWN0UmFuZ2UoYi5nZXRTZWxlY3RlZFJhbmdlKCksYi5oYXNGb3J3YXJkU2VsZWN0aW9uKCksMSl9ZnVuY3Rpb24geigpe3ZhciBhPVcuZ2V0U2VsZWN0aW9uKCksYz0wPGEucmFuZ2VDb3VudCYmVC5zZWxlY3Rpb25Ub1JhbmdlKGEpO1UmJmMmJihCPSEwLGxhLmNsZWFyU2VsZWN0aW9uKCksaWEuc2V0VW5maWx0ZXJlZFBvc2l0aW9uKGEuZm9jdXNOb2RlLGEuZm9jdXNPZmZzZXQpLFkuYWNjZXB0UG9zaXRpb24oaWEpPT09ZyYmKDI9PT1vYT9ULmV4cGFuZFRvV29yZEJvdW5kYXJpZXMoYy5yYW5nZSk6CjM8PW9hJiZULmV4cGFuZFRvUGFyYWdyYXBoQm91bmRhcmllcyhjLnJhbmdlKSxiLnNldFNlbGVjdGVkUmFuZ2UoYy5yYW5nZSxjLmhhc0ZvcndhcmRTZWxlY3Rpb24pLEouZW1pdChvcHMuRG9jdW1lbnQuc2lnbmFsQ3Vyc29yTW92ZWQsYikpKX1mdW5jdGlvbiB3KGEpe3ZhciBjPWEudGFyZ2V0fHxhLnNyY0VsZW1lbnR8fG51bGwsYj1KLmdldEN1cnNvcihkKTtpZihVPW51bGwhPT1jJiZhYS5jb250YWluc05vZGUoSi5nZXRPZGZDYW52YXMoKS5nZXRFbGVtZW50KCksYykpQj0hMSxjPUouZ2V0Um9vdEVsZW1lbnQoYyl8fEouZ2V0Um9vdE5vZGUoKSxZPUouY3JlYXRlUm9vdEZpbHRlcihjKSxvYT0wPT09YS5idXR0b24/YS5kZXRhaWw6MCxiJiZhLnNoaWZ0S2V5P1cuZ2V0U2VsZWN0aW9uKCkuY29sbGFwc2UoYi5nZXRBbmNob3JOb2RlKCksMCk6KGE9Vy5nZXRTZWxlY3Rpb24oKSxjPWIuZ2V0U2VsZWN0ZWRSYW5nZSgpLGEuZXh0ZW5kP2IuaGFzRm9yd2FyZFNlbGVjdGlvbigpPwooYS5jb2xsYXBzZShjLnN0YXJ0Q29udGFpbmVyLGMuc3RhcnRPZmZzZXQpLGEuZXh0ZW5kKGMuZW5kQ29udGFpbmVyLGMuZW5kT2Zmc2V0KSk6KGEuY29sbGFwc2UoYy5lbmRDb250YWluZXIsYy5lbmRPZmZzZXQpLGEuZXh0ZW5kKGMuc3RhcnRDb250YWluZXIsYy5zdGFydE9mZnNldCkpOihhLnJlbW92ZUFsbFJhbmdlcygpLGEuYWRkUmFuZ2UoYy5jbG9uZVJhbmdlKCkpKSksMTxvYSYmeigpfWZ1bmN0aW9uIHYoYSl7dmFyIGM9Si5nZXRSb290RWxlbWVudChhKSxiPUouY3JlYXRlUm9vdEZpbHRlcihjKSxjPUouY3JlYXRlU3RlcEl0ZXJhdG9yKGEsMCxbYixKLmdldFBvc2l0aW9uRmlsdGVyKCldLGMpO2Muc2V0UG9zaXRpb24oYSxhLmNoaWxkTm9kZXMubGVuZ3RoKTtyZXR1cm4gYy5yb3VuZFRvTmV4dFN0ZXAoKT97Y29udGFpbmVyOmMuY29udGFpbmVyKCksb2Zmc2V0OmMub2Zmc2V0KCl9Om51bGx9ZnVuY3Rpb24gdShhKXt2YXIgYztjPShjPVcuZ2V0U2VsZWN0aW9uKCkpP3thbmNob3JOb2RlOmMuYW5jaG9yTm9kZSwKYW5jaG9yT2Zmc2V0OmMuYW5jaG9yT2Zmc2V0LGZvY3VzTm9kZTpjLmZvY3VzTm9kZSxmb2N1c09mZnNldDpjLmZvY3VzT2Zmc2V0fTpudWxsO3ZhciBiPVcuZ2V0U2VsZWN0aW9uKCkuaXNDb2xsYXBzZWQsZCxlO2MuYW5jaG9yTm9kZXx8Yy5mb2N1c05vZGV8fCEoZD1uKGEuY2xpZW50WCxhLmNsaWVudFkpKXx8KGMuYW5jaG9yTm9kZT1kLmNvbnRhaW5lcixjLmFuY2hvck9mZnNldD1kLm9mZnNldCxjLmZvY3VzTm9kZT1jLmFuY2hvck5vZGUsYy5mb2N1c09mZnNldD1jLmFuY2hvck9mZnNldCk7aWYoUy5pc0ltYWdlKGMuZm9jdXNOb2RlKSYmMD09PWMuZm9jdXNPZmZzZXQmJlMuaXNDaGFyYWN0ZXJGcmFtZShjLmZvY3VzTm9kZS5wYXJlbnROb2RlKSl7aWYoZT1jLmZvY3VzTm9kZS5wYXJlbnROb2RlLGQ9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxhLmNsaWVudFg+ZC5sZWZ0JiYoZD12KGUpKSljLmZvY3VzTm9kZT1kLmNvbnRhaW5lcixjLmZvY3VzT2Zmc2V0PWQub2Zmc2V0LApiJiYoYy5hbmNob3JOb2RlPWMuZm9jdXNOb2RlLGMuYW5jaG9yT2Zmc2V0PWMuZm9jdXNPZmZzZXQpfWVsc2UgUy5pc0ltYWdlKGMuZm9jdXNOb2RlLmZpcnN0Q2hpbGQpJiYxPT09Yy5mb2N1c09mZnNldCYmUy5pc0NoYXJhY3RlckZyYW1lKGMuZm9jdXNOb2RlKSYmKGQ9dihjLmZvY3VzTm9kZSkpJiYoYy5hbmNob3JOb2RlPWMuZm9jdXNOb2RlPWQuY29udGFpbmVyLGMuYW5jaG9yT2Zmc2V0PWMuZm9jdXNPZmZzZXQ9ZC5vZmZzZXQpO2MuYW5jaG9yTm9kZSYmYy5mb2N1c05vZGUmJihjPVQuc2VsZWN0aW9uVG9SYW5nZShjKSxULnNlbGVjdFJhbmdlKGMucmFuZ2UsYy5oYXNGb3J3YXJkU2VsZWN0aW9uLDA9PT1hLmJ1dHRvbj9hLmRldGFpbDowKSk7Ri5mb2N1cygpfWZ1bmN0aW9uIHQoYSl7dmFyIGM7aWYoYz1uKGEuY2xpZW50WCxhLmNsaWVudFkpKWE9Yy5jb250YWluZXIsYz1jLm9mZnNldCxhPXthbmNob3JOb2RlOmEsYW5jaG9yT2Zmc2V0OmMsZm9jdXNOb2RlOmEsZm9jdXNPZmZzZXQ6Y30sCmE9VC5zZWxlY3Rpb25Ub1JhbmdlKGEpLFQuc2VsZWN0UmFuZ2UoYS5yYW5nZSxhLmhhc0ZvcndhcmRTZWxlY3Rpb24sMiksRi5mb2N1cygpfWZ1bmN0aW9uIEEoYSl7dmFyIGM9YS50YXJnZXR8fGEuc3JjRWxlbWVudHx8bnVsbCxkLGUsZjttYS5wcm9jZXNzUmVxdWVzdHMoKTtVJiYoUy5pc0ltYWdlKGMpJiZTLmlzQ2hhcmFjdGVyRnJhbWUoYy5wYXJlbnROb2RlKSYmVy5nZXRTZWxlY3Rpb24oKS5pc0NvbGxhcHNlZD8oVC5zZWxlY3RJbWFnZShjLnBhcmVudE5vZGUpLEYuZm9jdXMoKSk6bGEuaXNTZWxlY3RvckVsZW1lbnQoYyk/Ri5mb2N1cygpOkI/KGM9Yi5nZXRTZWxlY3RlZFJhbmdlKCksZT1jLmNvbGxhcHNlZCxTLmlzSW1hZ2UoYy5lbmRDb250YWluZXIpJiYwPT09Yy5lbmRPZmZzZXQmJlMuaXNDaGFyYWN0ZXJGcmFtZShjLmVuZENvbnRhaW5lci5wYXJlbnROb2RlKSYmKGY9Yy5lbmRDb250YWluZXIucGFyZW50Tm9kZSxmPXYoZikpJiYoYy5zZXRFbmQoZi5jb250YWluZXIsCmYub2Zmc2V0KSxlJiZjLmNvbGxhcHNlKCExKSksVC5zZWxlY3RSYW5nZShjLGIuaGFzRm9yd2FyZFNlbGVjdGlvbigpLDA9PT1hLmJ1dHRvbj9hLmRldGFpbDowKSxGLmZvY3VzKCkpOnVhP3UoYSk6KGQ9YWEuY2xvbmVFdmVudChhKSxNPXJ1bnRpbWUuc2V0VGltZW91dChmdW5jdGlvbigpe3UoZCl9LDApKSxvYT0wLEI9VT0hMSl9ZnVuY3Rpb24gSShhKXt2YXIgYz1KLmdldEN1cnNvcihkKS5nZXRTZWxlY3RlZFJhbmdlKCk7Yy5jb2xsYXBzZWR8fGZhLmV4cG9ydFJhbmdlVG9EYXRhVHJhbnNmZXIoYS5kYXRhVHJhbnNmZXIsYyl9ZnVuY3Rpb24gSygpe1UmJkYuZm9jdXMoKTtvYT0wO0I9VT0hMX1mdW5jdGlvbiBMKGEpe0EoYSl9ZnVuY3Rpb24gRShhKXt2YXIgYz1hLnRhcmdldHx8YS5zcmNFbGVtZW50fHxudWxsLGI9bnVsbDsiYW5ub3RhdGlvblJlbW92ZUJ1dHRvbiI9PT1jLmNsYXNzTmFtZT8ocnVudGltZS5hc3NlcnQoamEsIlJlbW92ZSBidXR0b25zIGFyZSBkaXNwbGF5ZWQgb24gYW5ub3RhdGlvbnMgd2hpbGUgYW5ub3RhdGlvbiBlZGl0aW5nIGlzIGRpc2FibGVkIGluIHRoZSBjb250cm9sbGVyLiIpLApiPWMucGFyZW50Tm9kZS5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKG9kZi5OYW1lc3BhY2VzLm9mZmljZW5zLCJhbm5vdGF0aW9uIikuaXRlbSgwKSxjYS5yZW1vdmVBbm5vdGF0aW9uKGIpLEYuZm9jdXMoKSk6IndlYm9kZi1kcmFnZ2FibGUiIT09Yy5nZXRBdHRyaWJ1dGUoImNsYXNzIikmJkEoYSl9ZnVuY3Rpb24gTihhKXsoYT1hLmRhdGEpJiYoLTE9PT1hLmluZGV4T2YoIlxuIik/ZGEuaW5zZXJ0VGV4dChhKTplYS5wYXN0ZShhKSl9ZnVuY3Rpb24gTyhhKXtyZXR1cm4gZnVuY3Rpb24oKXthKCk7cmV0dXJuITB9fWZ1bmN0aW9uIEQoYSl7cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiBKLmdldEN1cnNvcihkKS5nZXRTZWxlY3Rpb25UeXBlKCk9PT1vcHMuT2R0Q3Vyc29yLlJhbmdlU2VsZWN0aW9uP2EoYyk6ITB9fWZ1bmN0aW9uIFYoYyl7Ri51bnN1YnNjcmliZSgia2V5ZG93biIsQy5oYW5kbGVFdmVudCk7Ri51bnN1YnNjcmliZSgia2V5cHJlc3MiLFouaGFuZGxlRXZlbnQpO0YudW5zdWJzY3JpYmUoImtleXVwIiwKYmEuaGFuZGxlRXZlbnQpO0YudW5zdWJzY3JpYmUoImNvcHkiLHEpO0YudW5zdWJzY3JpYmUoIm1vdXNlZG93biIsdyk7Ri51bnN1YnNjcmliZSgibW91c2Vtb3ZlIixtYS50cmlnZ2VyKTtGLnVuc3Vic2NyaWJlKCJtb3VzZXVwIixFKTtGLnVuc3Vic2NyaWJlKCJjb250ZXh0bWVudSIsTCk7Ri51bnN1YnNjcmliZSgiZHJhZ3N0YXJ0IixJKTtGLnVuc3Vic2NyaWJlKCJkcmFnZW5kIixLKTtGLnVuc3Vic2NyaWJlKCJjbGljayIscGEuaGFuZGxlQ2xpY2spO0YudW5zdWJzY3JpYmUoImxvbmdwcmVzcyIsdCk7Ri51bnN1YnNjcmliZSgiZHJhZyIseSk7Ri51bnN1YnNjcmliZSgiZHJhZ3N0b3AiLHgpO0oudW5zdWJzY3JpYmUob3BzLk9kdERvY3VtZW50LnNpZ25hbE9wZXJhdGlvbkVuZCxuYS50cmlnZ2VyKTtKLnVuc3Vic2NyaWJlKG9wcy5Eb2N1bWVudC5zaWduYWxDdXJzb3JBZGRlZCxrYS5yZWdpc3RlckN1cnNvcik7Si51bnN1YnNjcmliZShvcHMuRG9jdW1lbnQuc2lnbmFsQ3Vyc29yUmVtb3ZlZCwKa2EucmVtb3ZlQ3Vyc29yKTtKLnVuc3Vic2NyaWJlKG9wcy5PZHREb2N1bWVudC5zaWduYWxPcGVyYXRpb25FbmQsYSk7YygpfXZhciBXPXJ1bnRpbWUuZ2V0V2luZG93KCksSj1rLmdldE9kdERvY3VtZW50KCksUj1uZXcgZ3VpLlNlc3Npb25Db25zdHJhaW50cyxQPW5ldyBndWkuU2Vzc2lvbkNvbnRleHQoayxkKSxhYT1jb3JlLkRvbVV0aWxzLFM9b2RmLk9kZlV0aWxzLGZhPW5ldyBndWkuTWltZURhdGFFeHBvcnRlcixoYT1uZXcgZ3VpLkNsaXBib2FyZChmYSksQz1uZXcgZ3VpLktleWJvYXJkSGFuZGxlcixaPW5ldyBndWkuS2V5Ym9hcmRIYW5kbGVyLGJhPW5ldyBndWkuS2V5Ym9hcmRIYW5kbGVyLFU9ITEsZ2E9bmV3IG9kZi5PYmplY3ROYW1lR2VuZXJhdG9yKEouZ2V0T2RmQ2FudmFzKCkub2RmQ29udGFpbmVyKCksZCksQj0hMSxZPW51bGwsTSxRPW51bGwsRj1uZXcgZ3VpLkV2ZW50TWFuYWdlcihKKSxqYT1mLmFubm90YXRpb25zRW5hYmxlZCxjYT1uZXcgZ3VpLkFubm90YXRpb25Db250cm9sbGVyKGssClIsZCksWD1uZXcgZ3VpLkRpcmVjdEZvcm1hdHRpbmdDb250cm9sbGVyKGssUixQLGQsZ2EsZi5kaXJlY3RUZXh0U3R5bGluZ0VuYWJsZWQsZi5kaXJlY3RQYXJhZ3JhcGhTdHlsaW5nRW5hYmxlZCksZGE9bmV3IGd1aS5UZXh0Q29udHJvbGxlcihrLFIsUCxkLFguY3JlYXRlQ3Vyc29yU3R5bGVPcCxYLmNyZWF0ZVBhcmFncmFwaFN0eWxlT3BzKSxxYT1uZXcgZ3VpLkltYWdlQ29udHJvbGxlcihrLFIsUCxkLGdhKSxsYT1uZXcgZ3VpLkltYWdlU2VsZWN0b3IoSi5nZXRPZGZDYW52YXMoKSksaWE9Si5jcmVhdGVQb3NpdGlvbkl0ZXJhdG9yKEouZ2V0Um9vdE5vZGUoKSksbWEsbmEsZWE9bmV3IGd1aS5QYXN0ZUNvbnRyb2xsZXIoayxSLFAsZCksa2E9bmV3IGd1aS5JbnB1dE1ldGhvZEVkaXRvcihkLEYpLG9hPTAscGE9bmV3IGd1aS5IeXBlcmxpbmtDbGlja0hhbmRsZXIoSi5nZXRPZGZDYW52YXMoKS5nZXRFbGVtZW50LEMsYmEpLHRhPW5ldyBndWkuSHlwZXJsaW5rQ29udHJvbGxlcihrLApSLFAsZCksVD1uZXcgZ3VpLlNlbGVjdGlvbkNvbnRyb2xsZXIoayxkKSx2YT1uZXcgZ3VpLk1ldGFkYXRhQ29udHJvbGxlcihrLGQpLEc9Z3VpLktleWJvYXJkSGFuZGxlci5Nb2RpZmllcixIPWd1aS5LZXlib2FyZEhhbmRsZXIuS2V5Q29kZSxyYT0tMSE9PVcubmF2aWdhdG9yLmFwcFZlcnNpb24udG9Mb3dlckNhc2UoKS5pbmRleE9mKCJtYWMiKSx1YT0tMSE9PVsiaVBhZCIsImlQb2QiLCJpUGhvbmUiXS5pbmRleE9mKFcubmF2aWdhdG9yLnBsYXRmb3JtKSxzYTtydW50aW1lLmFzc2VydChudWxsIT09VywiRXhwZWN0ZWQgdG8gYmUgcnVuIGluIGFuIGVudmlyb25tZW50IHdoaWNoIGhhcyBhIGdsb2JhbCB3aW5kb3csIGxpa2UgYSBicm93c2VyLiIpO3RoaXMudW5kbz1tO3RoaXMucmVkbz1oO3RoaXMuaW5zZXJ0TG9jYWxDdXJzb3I9ZnVuY3Rpb24oKXtydW50aW1lLmFzc2VydCh2b2lkIDA9PT1rLmdldE9kdERvY3VtZW50KCkuZ2V0Q3Vyc29yKGQpLCJJbnNlcnRpbmcgbG9jYWwgY3Vyc29yIGEgc2Vjb25kIHRpbWUuIik7CnZhciBhPW5ldyBvcHMuT3BBZGRDdXJzb3I7YS5pbml0KHttZW1iZXJpZDpkfSk7ay5lbnF1ZXVlKFthXSk7Ri5mb2N1cygpfTt0aGlzLnJlbW92ZUxvY2FsQ3Vyc29yPWZ1bmN0aW9uKCl7cnVudGltZS5hc3NlcnQodm9pZCAwIT09ay5nZXRPZHREb2N1bWVudCgpLmdldEN1cnNvcihkKSwiUmVtb3ZpbmcgbG9jYWwgY3Vyc29yIHdpdGhvdXQgaW5zZXJ0aW5nIGJlZm9yZS4iKTt2YXIgYT1uZXcgb3BzLk9wUmVtb3ZlQ3Vyc29yO2EuaW5pdCh7bWVtYmVyaWQ6ZH0pO2suZW5xdWV1ZShbYV0pfTt0aGlzLnN0YXJ0RWRpdGluZz1mdW5jdGlvbigpe2thLnN1YnNjcmliZShndWkuSW5wdXRNZXRob2RFZGl0b3Iuc2lnbmFsQ29tcG9zaXRpb25TdGFydCxkYS5yZW1vdmVDdXJyZW50U2VsZWN0aW9uKTtrYS5zdWJzY3JpYmUoZ3VpLklucHV0TWV0aG9kRWRpdG9yLnNpZ25hbENvbXBvc2l0aW9uRW5kLE4pO0Yuc3Vic2NyaWJlKCJiZWZvcmVjdXQiLHIpO0Yuc3Vic2NyaWJlKCJjdXQiLHApOwpGLnN1YnNjcmliZSgiYmVmb3JlcGFzdGUiLGwpO0Yuc3Vic2NyaWJlKCJwYXN0ZSIsZSk7USYmUS5pbml0aWFsaXplKCk7Ri5zZXRFZGl0aW5nKCEwKTtwYS5zZXRNb2RpZmllcihyYT9HLk1ldGE6Ry5DdHJsKTtDLmJpbmQoSC5CYWNrc3BhY2UsRy5Ob25lLE8oZGEucmVtb3ZlVGV4dEJ5QmFja3NwYWNlS2V5KSwhMCk7Qy5iaW5kKEguRGVsZXRlLEcuTm9uZSxkYS5yZW1vdmVUZXh0QnlEZWxldGVLZXkpO0MuYmluZChILlRhYixHLk5vbmUsRChmdW5jdGlvbigpe2RhLmluc2VydFRleHQoIlx0Iik7cmV0dXJuITB9KSk7cmE/KEMuYmluZChILkNsZWFyLEcuTm9uZSxkYS5yZW1vdmVDdXJyZW50U2VsZWN0aW9uKSxDLmJpbmQoSC5CLEcuTWV0YSxEKFgudG9nZ2xlQm9sZCkpLEMuYmluZChILkksRy5NZXRhLEQoWC50b2dnbGVJdGFsaWMpKSxDLmJpbmQoSC5VLEcuTWV0YSxEKFgudG9nZ2xlVW5kZXJsaW5lKSksQy5iaW5kKEguTCxHLk1ldGFTaGlmdCxEKFguYWxpZ25QYXJhZ3JhcGhMZWZ0KSksCkMuYmluZChILkUsRy5NZXRhU2hpZnQsRChYLmFsaWduUGFyYWdyYXBoQ2VudGVyKSksQy5iaW5kKEguUixHLk1ldGFTaGlmdCxEKFguYWxpZ25QYXJhZ3JhcGhSaWdodCkpLEMuYmluZChILkosRy5NZXRhU2hpZnQsRChYLmFsaWduUGFyYWdyYXBoSnVzdGlmaWVkKSksamEmJkMuYmluZChILkMsRy5NZXRhU2hpZnQsY2EuYWRkQW5ub3RhdGlvbiksQy5iaW5kKEguWixHLk1ldGEsbSksQy5iaW5kKEguWixHLk1ldGFTaGlmdCxoKSk6KEMuYmluZChILkIsRy5DdHJsLEQoWC50b2dnbGVCb2xkKSksQy5iaW5kKEguSSxHLkN0cmwsRChYLnRvZ2dsZUl0YWxpYykpLEMuYmluZChILlUsRy5DdHJsLEQoWC50b2dnbGVVbmRlcmxpbmUpKSxDLmJpbmQoSC5MLEcuQ3RybFNoaWZ0LEQoWC5hbGlnblBhcmFncmFwaExlZnQpKSxDLmJpbmQoSC5FLEcuQ3RybFNoaWZ0LEQoWC5hbGlnblBhcmFncmFwaENlbnRlcikpLEMuYmluZChILlIsRy5DdHJsU2hpZnQsRChYLmFsaWduUGFyYWdyYXBoUmlnaHQpKSwKQy5iaW5kKEguSixHLkN0cmxTaGlmdCxEKFguYWxpZ25QYXJhZ3JhcGhKdXN0aWZpZWQpKSxqYSYmQy5iaW5kKEguQyxHLkN0cmxBbHQsY2EuYWRkQW5ub3RhdGlvbiksQy5iaW5kKEguWixHLkN0cmwsbSksQy5iaW5kKEguWixHLkN0cmxTaGlmdCxoKSk7Wi5zZXREZWZhdWx0KEQoZnVuY3Rpb24oYSl7dmFyIGM7Yz1udWxsPT09YS53aGljaHx8dm9pZCAwPT09YS53aGljaD9TdHJpbmcuZnJvbUNoYXJDb2RlKGEua2V5Q29kZSk6MCE9PWEud2hpY2gmJjAhPT1hLmNoYXJDb2RlP1N0cmluZy5mcm9tQ2hhckNvZGUoYS53aGljaCk6bnVsbDtyZXR1cm4hY3x8YS5hbHRLZXl8fGEuY3RybEtleXx8YS5tZXRhS2V5PyExOihkYS5pbnNlcnRUZXh0KGMpLCEwKX0pKTtaLmJpbmQoSC5FbnRlcixHLk5vbmUsRChkYS5lbnF1ZXVlUGFyYWdyYXBoU3BsaXR0aW5nT3BzKSl9O3RoaXMuZW5kRWRpdGluZz1mdW5jdGlvbigpe2thLnVuc3Vic2NyaWJlKGd1aS5JbnB1dE1ldGhvZEVkaXRvci5zaWduYWxDb21wb3NpdGlvblN0YXJ0LApkYS5yZW1vdmVDdXJyZW50U2VsZWN0aW9uKTtrYS51bnN1YnNjcmliZShndWkuSW5wdXRNZXRob2RFZGl0b3Iuc2lnbmFsQ29tcG9zaXRpb25FbmQsTik7Ri51bnN1YnNjcmliZSgiY3V0IixwKTtGLnVuc3Vic2NyaWJlKCJiZWZvcmVjdXQiLHIpO0YudW5zdWJzY3JpYmUoInBhc3RlIixlKTtGLnVuc3Vic2NyaWJlKCJiZWZvcmVwYXN0ZSIsbCk7Ri5zZXRFZGl0aW5nKCExKTtwYS5zZXRNb2RpZmllcihHLk5vbmUpO0MuYmluZChILkJhY2tzcGFjZSxHLk5vbmUsZnVuY3Rpb24oKXtyZXR1cm4hMH0sITApO0MudW5iaW5kKEguRGVsZXRlLEcuTm9uZSk7Qy51bmJpbmQoSC5UYWIsRy5Ob25lKTtyYT8oQy51bmJpbmQoSC5DbGVhcixHLk5vbmUpLEMudW5iaW5kKEguQixHLk1ldGEpLEMudW5iaW5kKEguSSxHLk1ldGEpLEMudW5iaW5kKEguVSxHLk1ldGEpLEMudW5iaW5kKEguTCxHLk1ldGFTaGlmdCksQy51bmJpbmQoSC5FLEcuTWV0YVNoaWZ0KSxDLnVuYmluZChILlIsRy5NZXRhU2hpZnQpLApDLnVuYmluZChILkosRy5NZXRhU2hpZnQpLGphJiZDLnVuYmluZChILkMsRy5NZXRhU2hpZnQpLEMudW5iaW5kKEguWixHLk1ldGEpLEMudW5iaW5kKEguWixHLk1ldGFTaGlmdCkpOihDLnVuYmluZChILkIsRy5DdHJsKSxDLnVuYmluZChILkksRy5DdHJsKSxDLnVuYmluZChILlUsRy5DdHJsKSxDLnVuYmluZChILkwsRy5DdHJsU2hpZnQpLEMudW5iaW5kKEguRSxHLkN0cmxTaGlmdCksQy51bmJpbmQoSC5SLEcuQ3RybFNoaWZ0KSxDLnVuYmluZChILkosRy5DdHJsU2hpZnQpLGphJiZDLnVuYmluZChILkMsRy5DdHJsQWx0KSxDLnVuYmluZChILlosRy5DdHJsKSxDLnVuYmluZChILlosRy5DdHJsU2hpZnQpKTtaLnNldERlZmF1bHQobnVsbCk7Wi51bmJpbmQoSC5FbnRlcixHLk5vbmUpfTt0aGlzLmdldElucHV0TWVtYmVySWQ9ZnVuY3Rpb24oKXtyZXR1cm4gZH07dGhpcy5nZXRTZXNzaW9uPWZ1bmN0aW9uKCl7cmV0dXJuIGt9O3RoaXMuZ2V0U2Vzc2lvbkNvbnN0cmFpbnRzPWZ1bmN0aW9uKCl7cmV0dXJuIFJ9Owp0aGlzLnNldFVuZG9NYW5hZ2VyPWZ1bmN0aW9uKGEpe1EmJlEudW5zdWJzY3JpYmUoZ3VpLlVuZG9NYW5hZ2VyLnNpZ25hbFVuZG9TdGFja0NoYW5nZWQsYyk7aWYoUT1hKVEuc2V0RG9jdW1lbnQoSiksUS5zZXRQbGF5YmFja0Z1bmN0aW9uKGsuZW5xdWV1ZSksUS5zdWJzY3JpYmUoZ3VpLlVuZG9NYW5hZ2VyLnNpZ25hbFVuZG9TdGFja0NoYW5nZWQsYyl9O3RoaXMuZ2V0VW5kb01hbmFnZXI9ZnVuY3Rpb24oKXtyZXR1cm4gUX07dGhpcy5nZXRNZXRhZGF0YUNvbnRyb2xsZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdmF9O3RoaXMuZ2V0QW5ub3RhdGlvbkNvbnRyb2xsZXI9ZnVuY3Rpb24oKXtyZXR1cm4gY2F9O3RoaXMuZ2V0RGlyZWN0Rm9ybWF0dGluZ0NvbnRyb2xsZXI9ZnVuY3Rpb24oKXtyZXR1cm4gWH07dGhpcy5nZXRIeXBlcmxpbmtDbGlja0hhbmRsZXI9ZnVuY3Rpb24oKXtyZXR1cm4gcGF9O3RoaXMuZ2V0SHlwZXJsaW5rQ29udHJvbGxlcj1mdW5jdGlvbigpe3JldHVybiB0YX07CnRoaXMuZ2V0SW1hZ2VDb250cm9sbGVyPWZ1bmN0aW9uKCl7cmV0dXJuIHFhfTt0aGlzLmdldFNlbGVjdGlvbkNvbnRyb2xsZXI9ZnVuY3Rpb24oKXtyZXR1cm4gVH07dGhpcy5nZXRUZXh0Q29udHJvbGxlcj1mdW5jdGlvbigpe3JldHVybiBkYX07dGhpcy5nZXRFdmVudE1hbmFnZXI9ZnVuY3Rpb24oKXtyZXR1cm4gRn07dGhpcy5nZXRLZXlib2FyZEhhbmRsZXJzPWZ1bmN0aW9uKCl7cmV0dXJue2tleWRvd246QyxrZXlwcmVzczpafX07dGhpcy5kZXN0cm95PWZ1bmN0aW9uKGEpe3ZhciBjPVttYS5kZXN0cm95LG5hLmRlc3Ryb3ksWC5kZXN0cm95LGthLmRlc3Ryb3ksRi5kZXN0cm95LHBhLmRlc3Ryb3ksdGEuZGVzdHJveSx2YS5kZXN0cm95LFQuZGVzdHJveSxkYS5kZXN0cm95LFZdO3NhJiZjLnVuc2hpZnQoc2EuZGVzdHJveSk7cnVudGltZS5jbGVhclRpbWVvdXQoTSk7Y29yZS5Bc3luYy5kZXN0cm95QWxsKGMsYSl9O21hPWNvcmUuVGFzay5jcmVhdGVSZWRyYXdUYXNrKHopOwpuYT1jb3JlLlRhc2suY3JlYXRlUmVkcmF3VGFzayhmdW5jdGlvbigpe3ZhciBhPUouZ2V0Q3Vyc29yKGQpO2lmKGEmJmEuZ2V0U2VsZWN0aW9uVHlwZSgpPT09b3BzLk9kdEN1cnNvci5SZWdpb25TZWxlY3Rpb24mJihhPVMuZ2V0SW1hZ2VFbGVtZW50cyhhLmdldFNlbGVjdGVkUmFuZ2UoKSlbMF0pKXtsYS5zZWxlY3QoYS5wYXJlbnROb2RlKTtyZXR1cm59bGEuY2xlYXJTZWxlY3Rpb24oKX0pO0MuYmluZChILkxlZnQsRy5Ob25lLEQoVC5tb3ZlQ3Vyc29yVG9MZWZ0KSk7Qy5iaW5kKEguUmlnaHQsRy5Ob25lLEQoVC5tb3ZlQ3Vyc29yVG9SaWdodCkpO0MuYmluZChILlVwLEcuTm9uZSxEKFQubW92ZUN1cnNvclVwKSk7Qy5iaW5kKEguRG93bixHLk5vbmUsRChULm1vdmVDdXJzb3JEb3duKSk7Qy5iaW5kKEguTGVmdCxHLlNoaWZ0LEQoVC5leHRlbmRTZWxlY3Rpb25Ub0xlZnQpKTtDLmJpbmQoSC5SaWdodCxHLlNoaWZ0LEQoVC5leHRlbmRTZWxlY3Rpb25Ub1JpZ2h0KSk7Qy5iaW5kKEguVXAsCkcuU2hpZnQsRChULmV4dGVuZFNlbGVjdGlvblVwKSk7Qy5iaW5kKEguRG93bixHLlNoaWZ0LEQoVC5leHRlbmRTZWxlY3Rpb25Eb3duKSk7Qy5iaW5kKEguSG9tZSxHLk5vbmUsRChULm1vdmVDdXJzb3JUb0xpbmVTdGFydCkpO0MuYmluZChILkVuZCxHLk5vbmUsRChULm1vdmVDdXJzb3JUb0xpbmVFbmQpKTtDLmJpbmQoSC5Ib21lLEcuQ3RybCxEKFQubW92ZUN1cnNvclRvRG9jdW1lbnRTdGFydCkpO0MuYmluZChILkVuZCxHLkN0cmwsRChULm1vdmVDdXJzb3JUb0RvY3VtZW50RW5kKSk7Qy5iaW5kKEguSG9tZSxHLlNoaWZ0LEQoVC5leHRlbmRTZWxlY3Rpb25Ub0xpbmVTdGFydCkpO0MuYmluZChILkVuZCxHLlNoaWZ0LEQoVC5leHRlbmRTZWxlY3Rpb25Ub0xpbmVFbmQpKTtDLmJpbmQoSC5VcCxHLkN0cmxTaGlmdCxEKFQuZXh0ZW5kU2VsZWN0aW9uVG9QYXJhZ3JhcGhTdGFydCkpO0MuYmluZChILkRvd24sRy5DdHJsU2hpZnQsRChULmV4dGVuZFNlbGVjdGlvblRvUGFyYWdyYXBoRW5kKSk7CkMuYmluZChILkhvbWUsRy5DdHJsU2hpZnQsRChULmV4dGVuZFNlbGVjdGlvblRvRG9jdW1lbnRTdGFydCkpO0MuYmluZChILkVuZCxHLkN0cmxTaGlmdCxEKFQuZXh0ZW5kU2VsZWN0aW9uVG9Eb2N1bWVudEVuZCkpO3JhPyhDLmJpbmQoSC5MZWZ0LEcuQWx0LEQoVC5tb3ZlQ3Vyc29yQmVmb3JlV29yZCkpLEMuYmluZChILlJpZ2h0LEcuQWx0LEQoVC5tb3ZlQ3Vyc29yUGFzdFdvcmQpKSxDLmJpbmQoSC5MZWZ0LEcuTWV0YSxEKFQubW92ZUN1cnNvclRvTGluZVN0YXJ0KSksQy5iaW5kKEguUmlnaHQsRy5NZXRhLEQoVC5tb3ZlQ3Vyc29yVG9MaW5lRW5kKSksQy5iaW5kKEguSG9tZSxHLk1ldGEsRChULm1vdmVDdXJzb3JUb0RvY3VtZW50U3RhcnQpKSxDLmJpbmQoSC5FbmQsRy5NZXRhLEQoVC5tb3ZlQ3Vyc29yVG9Eb2N1bWVudEVuZCkpLEMuYmluZChILkxlZnQsRy5BbHRTaGlmdCxEKFQuZXh0ZW5kU2VsZWN0aW9uQmVmb3JlV29yZCkpLEMuYmluZChILlJpZ2h0LEcuQWx0U2hpZnQsCkQoVC5leHRlbmRTZWxlY3Rpb25QYXN0V29yZCkpLEMuYmluZChILkxlZnQsRy5NZXRhU2hpZnQsRChULmV4dGVuZFNlbGVjdGlvblRvTGluZVN0YXJ0KSksQy5iaW5kKEguUmlnaHQsRy5NZXRhU2hpZnQsRChULmV4dGVuZFNlbGVjdGlvblRvTGluZUVuZCkpLEMuYmluZChILlVwLEcuQWx0U2hpZnQsRChULmV4dGVuZFNlbGVjdGlvblRvUGFyYWdyYXBoU3RhcnQpKSxDLmJpbmQoSC5Eb3duLEcuQWx0U2hpZnQsRChULmV4dGVuZFNlbGVjdGlvblRvUGFyYWdyYXBoRW5kKSksQy5iaW5kKEguVXAsRy5NZXRhU2hpZnQsRChULmV4dGVuZFNlbGVjdGlvblRvRG9jdW1lbnRTdGFydCkpLEMuYmluZChILkRvd24sRy5NZXRhU2hpZnQsRChULmV4dGVuZFNlbGVjdGlvblRvRG9jdW1lbnRFbmQpKSxDLmJpbmQoSC5BLEcuTWV0YSxEKFQuZXh0ZW5kU2VsZWN0aW9uVG9FbnRpcmVEb2N1bWVudCkpKTooQy5iaW5kKEguTGVmdCxHLkN0cmwsRChULm1vdmVDdXJzb3JCZWZvcmVXb3JkKSksQy5iaW5kKEguUmlnaHQsCkcuQ3RybCxEKFQubW92ZUN1cnNvclBhc3RXb3JkKSksQy5iaW5kKEguTGVmdCxHLkN0cmxTaGlmdCxEKFQuZXh0ZW5kU2VsZWN0aW9uQmVmb3JlV29yZCkpLEMuYmluZChILlJpZ2h0LEcuQ3RybFNoaWZ0LEQoVC5leHRlbmRTZWxlY3Rpb25QYXN0V29yZCkpLEMuYmluZChILkEsRy5DdHJsLEQoVC5leHRlbmRTZWxlY3Rpb25Ub0VudGlyZURvY3VtZW50KSkpO3VhJiYoc2E9bmV3IGd1aS5JT1NTYWZhcmlTdXBwb3J0KEYpKTtGLnN1YnNjcmliZSgia2V5ZG93biIsQy5oYW5kbGVFdmVudCk7Ri5zdWJzY3JpYmUoImtleXByZXNzIixaLmhhbmRsZUV2ZW50KTtGLnN1YnNjcmliZSgia2V5dXAiLGJhLmhhbmRsZUV2ZW50KTtGLnN1YnNjcmliZSgiY29weSIscSk7Ri5zdWJzY3JpYmUoIm1vdXNlZG93biIsdyk7Ri5zdWJzY3JpYmUoIm1vdXNlbW92ZSIsbWEudHJpZ2dlcik7Ri5zdWJzY3JpYmUoIm1vdXNldXAiLEUpO0Yuc3Vic2NyaWJlKCJjb250ZXh0bWVudSIsTCk7Ri5zdWJzY3JpYmUoImRyYWdzdGFydCIsCkkpO0Yuc3Vic2NyaWJlKCJkcmFnZW5kIixLKTtGLnN1YnNjcmliZSgiY2xpY2siLHBhLmhhbmRsZUNsaWNrKTtGLnN1YnNjcmliZSgibG9uZ3ByZXNzIix0KTtGLnN1YnNjcmliZSgiZHJhZyIseSk7Ri5zdWJzY3JpYmUoImRyYWdzdG9wIix4KTtKLnN1YnNjcmliZShvcHMuT2R0RG9jdW1lbnQuc2lnbmFsT3BlcmF0aW9uRW5kLG5hLnRyaWdnZXIpO0ouc3Vic2NyaWJlKG9wcy5Eb2N1bWVudC5zaWduYWxDdXJzb3JBZGRlZCxrYS5yZWdpc3RlckN1cnNvcik7Si5zdWJzY3JpYmUob3BzLkRvY3VtZW50LnNpZ25hbEN1cnNvclJlbW92ZWQsa2EucmVtb3ZlQ3Vyc29yKTtKLnN1YnNjcmliZShvcHMuT2R0RG9jdW1lbnQuc2lnbmFsT3BlcmF0aW9uRW5kLGEpfX0pKCk7Cmd1aS5DYXJldE1hbmFnZXI9ZnVuY3Rpb24oZyxrKXtmdW5jdGlvbiBkKGIpe3JldHVybiBuLmhhc093blByb3BlcnR5KGIpP25bYl06bnVsbH1mdW5jdGlvbiBiKCl7cmV0dXJuIE9iamVjdC5rZXlzKG4pLm1hcChmdW5jdGlvbihiKXtyZXR1cm4gbltiXX0pfWZ1bmN0aW9uIGYoYil7dmFyIGQ9bltiXTtkJiYoZGVsZXRlIG5bYl0sYj09PWcuZ2V0SW5wdXRNZW1iZXJJZCgpPyhyLnVuc3Vic2NyaWJlKG9wcy5PZHREb2N1bWVudC5zaWduYWxQcm9jZXNzaW5nQmF0Y2hFbmQsZC5lbnN1cmVWaXNpYmxlKSxyLnVuc3Vic2NyaWJlKG9wcy5Eb2N1bWVudC5zaWduYWxDdXJzb3JNb3ZlZCxkLnJlZnJlc2hDdXJzb3JCbGlua2luZykscS51bnN1YnNjcmliZSgiY29tcG9zaXRpb251cGRhdGUiLGQuaGFuZGxlVXBkYXRlKSxxLnVuc3Vic2NyaWJlKCJjb21wb3NpdGlvbmVuZCIsZC5oYW5kbGVVcGRhdGUpLHEudW5zdWJzY3JpYmUoImZvY3VzIixkLnNldEZvY3VzKSxxLnVuc3Vic2NyaWJlKCJibHVyIiwKZC5yZW1vdmVGb2N1cykscC5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1cyIsZC5zaG93LCExKSxwLnJlbW92ZUV2ZW50TGlzdGVuZXIoImJsdXIiLGQuaGlkZSwhMSkpOnIudW5zdWJzY3JpYmUob3BzLk9kdERvY3VtZW50LnNpZ25hbFByb2Nlc3NpbmdCYXRjaEVuZCxkLmhhbmRsZVVwZGF0ZSksZC5kZXN0cm95KGZ1bmN0aW9uKCl7fSkpfXZhciBuPXt9LHA9cnVudGltZS5nZXRXaW5kb3coKSxyPWcuZ2V0U2Vzc2lvbigpLmdldE9kdERvY3VtZW50KCkscT1nLmdldEV2ZW50TWFuYWdlcigpO3RoaXMucmVnaXN0ZXJDdXJzb3I9ZnVuY3Rpb24oYixkLGEpe3ZhciBjPWIuZ2V0TWVtYmVySWQoKTtiPW5ldyBndWkuQ2FyZXQoYixrLGQsYSk7bltjXT1iO2M9PT1nLmdldElucHV0TWVtYmVySWQoKT8ocnVudGltZS5sb2coIlN0YXJ0aW5nIHRvIHRyYWNrIGlucHV0IG9uIG5ldyBjdXJzb3Igb2YgIitjKSxyLnN1YnNjcmliZShvcHMuT2R0RG9jdW1lbnQuc2lnbmFsUHJvY2Vzc2luZ0JhdGNoRW5kLApiLmVuc3VyZVZpc2libGUpLHIuc3Vic2NyaWJlKG9wcy5Eb2N1bWVudC5zaWduYWxDdXJzb3JNb3ZlZCxiLnJlZnJlc2hDdXJzb3JCbGlua2luZykscS5zdWJzY3JpYmUoImNvbXBvc2l0aW9udXBkYXRlIixiLmhhbmRsZVVwZGF0ZSkscS5zdWJzY3JpYmUoImNvbXBvc2l0aW9uZW5kIixiLmhhbmRsZVVwZGF0ZSkscS5zdWJzY3JpYmUoImZvY3VzIixiLnNldEZvY3VzKSxxLnN1YnNjcmliZSgiYmx1ciIsYi5yZW1vdmVGb2N1cykscC5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsYi5zaG93LCExKSxwLmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLGIuaGlkZSwhMSksYi5zZXRPdmVybGF5RWxlbWVudChxLmdldEV2ZW50VHJhcCgpKSk6ci5zdWJzY3JpYmUob3BzLk9kdERvY3VtZW50LnNpZ25hbFByb2Nlc3NpbmdCYXRjaEVuZCxiLmhhbmRsZVVwZGF0ZSk7cmV0dXJuIGJ9O3RoaXMuZ2V0Q2FyZXQ9ZDt0aGlzLmdldENhcmV0cz1iO3RoaXMuZGVzdHJveT1mdW5jdGlvbihkKXt2YXIgbD0KYigpLm1hcChmdW5jdGlvbihhKXtyZXR1cm4gYS5kZXN0cm95fSk7Zy5nZXRTZWxlY3Rpb25Db250cm9sbGVyKCkuc2V0Q2FyZXRYUG9zaXRpb25Mb2NhdG9yKG51bGwpO3IudW5zdWJzY3JpYmUob3BzLkRvY3VtZW50LnNpZ25hbEN1cnNvclJlbW92ZWQsZik7bj17fTtjb3JlLkFzeW5jLmRlc3Ryb3lBbGwobCxkKX07Zy5nZXRTZWxlY3Rpb25Db250cm9sbGVyKCkuc2V0Q2FyZXRYUG9zaXRpb25Mb2NhdG9yKGZ1bmN0aW9uKCl7dmFyIGI9ZChnLmdldElucHV0TWVtYmVySWQoKSksZjtiJiYoZj1iLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTtyZXR1cm4gZj9mLnJpZ2h0OnZvaWQgMH0pO3Iuc3Vic2NyaWJlKG9wcy5Eb2N1bWVudC5zaWduYWxDdXJzb3JSZW1vdmVkLGYpfTsKZ3VpLkVkaXRJbmZvSGFuZGxlPWZ1bmN0aW9uKGcpe3ZhciBrPVtdLGQsYj1nLm93bmVyRG9jdW1lbnQsZj1iLmRvY3VtZW50RWxlbWVudC5uYW1lc3BhY2VVUkk7dGhpcy5zZXRFZGl0cz1mdW5jdGlvbihnKXtrPWc7dmFyIHAscixxLGU7Y29yZS5Eb21VdGlscy5yZW1vdmVBbGxDaGlsZE5vZGVzKGQpO2ZvcihnPTA7ZzxrLmxlbmd0aDtnKz0xKXA9Yi5jcmVhdGVFbGVtZW50TlMoZiwiZGl2IikscC5jbGFzc05hbWU9ImVkaXRJbmZvIixyPWIuY3JlYXRlRWxlbWVudE5TKGYsInNwYW4iKSxyLmNsYXNzTmFtZT0iZWRpdEluZm9Db2xvciIsci5zZXRBdHRyaWJ1dGVOUygidXJuOndlYm9kZjpuYW1lczplZGl0aW5mbyIsImVkaXRpbmZvOm1lbWJlcmlkIixrW2ddLm1lbWJlcmlkKSxxPWIuY3JlYXRlRWxlbWVudE5TKGYsInNwYW4iKSxxLmNsYXNzTmFtZT0iZWRpdEluZm9BdXRob3IiLHEuc2V0QXR0cmlidXRlTlMoInVybjp3ZWJvZGY6bmFtZXM6ZWRpdGluZm8iLCJlZGl0aW5mbzptZW1iZXJpZCIsCmtbZ10ubWVtYmVyaWQpLGU9Yi5jcmVhdGVFbGVtZW50TlMoZiwic3BhbiIpLGUuY2xhc3NOYW1lPSJlZGl0SW5mb1RpbWUiLGUuc2V0QXR0cmlidXRlTlMoInVybjp3ZWJvZGY6bmFtZXM6ZWRpdGluZm8iLCJlZGl0aW5mbzptZW1iZXJpZCIsa1tnXS5tZW1iZXJpZCksZS5hcHBlbmRDaGlsZChiLmNyZWF0ZVRleHROb2RlKGtbZ10udGltZS50b1N0cmluZygpKSkscC5hcHBlbmRDaGlsZChyKSxwLmFwcGVuZENoaWxkKHEpLHAuYXBwZW5kQ2hpbGQoZSksZC5hcHBlbmRDaGlsZChwKX07dGhpcy5zaG93PWZ1bmN0aW9uKCl7ZC5zdHlsZS5kaXNwbGF5PSJibG9jayJ9O3RoaXMuaGlkZT1mdW5jdGlvbigpe2Quc3R5bGUuZGlzcGxheT0ibm9uZSJ9O3RoaXMuZGVzdHJveT1mdW5jdGlvbihiKXtnLnJlbW92ZUNoaWxkKGQpO2IoKX07ZD1iLmNyZWF0ZUVsZW1lbnROUyhmLCJkaXYiKTtkLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCJlZGl0SW5mb0hhbmRsZSIpO2Quc3R5bGUuZGlzcGxheT0ibm9uZSI7CmcuYXBwZW5kQ2hpbGQoZCl9OwpvcHMuRWRpdEluZm89ZnVuY3Rpb24oZyxrKXtmdW5jdGlvbiBkKCl7dmFyIGI9W10sZDtmb3IoZCBpbiBmKWYuaGFzT3duUHJvcGVydHkoZCkmJmIucHVzaCh7bWVtYmVyaWQ6ZCx0aW1lOmZbZF0udGltZX0pO2Iuc29ydChmdW5jdGlvbihiLGQpe3JldHVybiBiLnRpbWUtZC50aW1lfSk7cmV0dXJuIGJ9dmFyIGIsZj17fTt0aGlzLmdldE5vZGU9ZnVuY3Rpb24oKXtyZXR1cm4gYn07dGhpcy5nZXRPZHREb2N1bWVudD1mdW5jdGlvbigpe3JldHVybiBrfTt0aGlzLmdldEVkaXRzPWZ1bmN0aW9uKCl7cmV0dXJuIGZ9O3RoaXMuZ2V0U29ydGVkRWRpdHM9ZnVuY3Rpb24oKXtyZXR1cm4gZCgpfTt0aGlzLmFkZEVkaXQ9ZnVuY3Rpb24oYixkKXtmW2JdPXt0aW1lOmR9fTt0aGlzLmNsZWFyRWRpdHM9ZnVuY3Rpb24oKXtmPXt9fTt0aGlzLmRlc3Ryb3k9ZnVuY3Rpb24oZCl7Zy5wYXJlbnROb2RlJiZnLnJlbW92ZUNoaWxkKGIpO2QoKX07Yj1rLmdldERPTURvY3VtZW50KCkuY3JlYXRlRWxlbWVudE5TKCJ1cm46d2Vib2RmOm5hbWVzOmVkaXRpbmZvIiwiZWRpdGluZm8iKTsKZy5pbnNlcnRCZWZvcmUoYixnLmZpcnN0Q2hpbGQpfTsKZ3VpLkVkaXRJbmZvTWFya2VyPWZ1bmN0aW9uKGcsayl7ZnVuY3Rpb24gZChiLGEpe3JldHVybiBydW50aW1lLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtwLnN0eWxlLm9wYWNpdHk9Yn0sYSl9dmFyIGI9dGhpcyxmLG4scCxyLHEsZTt0aGlzLmFkZEVkaXQ9ZnVuY3Rpb24oYixhKXt2YXIgYz1EYXRlLm5vdygpLWE7Zy5hZGRFZGl0KGIsYSk7bi5zZXRFZGl0cyhnLmdldFNvcnRlZEVkaXRzKCkpO3Auc2V0QXR0cmlidXRlTlMoInVybjp3ZWJvZGY6bmFtZXM6ZWRpdGluZm8iLCJlZGl0aW5mbzptZW1iZXJpZCIsYik7cnVudGltZS5jbGVhclRpbWVvdXQocSk7cnVudGltZS5jbGVhclRpbWVvdXQoZSk7MUU0PmM/KHI9ZCgxLDApLHE9ZCguNSwxRTQtYyksZT1kKC4yLDJFNC1jKSk6MUU0PD1jJiYyRTQ+Yz8ocj1kKC41LDApLGU9ZCguMiwyRTQtYykpOnI9ZCguMiwwKX07dGhpcy5nZXRFZGl0cz1mdW5jdGlvbigpe3JldHVybiBnLmdldEVkaXRzKCl9O3RoaXMuY2xlYXJFZGl0cz1mdW5jdGlvbigpe2cuY2xlYXJFZGl0cygpOwpuLnNldEVkaXRzKFtdKTtwLmhhc0F0dHJpYnV0ZU5TKCJ1cm46d2Vib2RmOm5hbWVzOmVkaXRpbmZvIiwiZWRpdGluZm86bWVtYmVyaWQiKSYmcC5yZW1vdmVBdHRyaWJ1dGVOUygidXJuOndlYm9kZjpuYW1lczplZGl0aW5mbyIsImVkaXRpbmZvOm1lbWJlcmlkIil9O3RoaXMuZ2V0RWRpdEluZm89ZnVuY3Rpb24oKXtyZXR1cm4gZ307dGhpcy5zaG93PWZ1bmN0aW9uKCl7cC5zdHlsZS5kaXNwbGF5PSJibG9jayJ9O3RoaXMuaGlkZT1mdW5jdGlvbigpe2IuaGlkZUhhbmRsZSgpO3Auc3R5bGUuZGlzcGxheT0ibm9uZSJ9O3RoaXMuc2hvd0hhbmRsZT1mdW5jdGlvbigpe24uc2hvdygpfTt0aGlzLmhpZGVIYW5kbGU9ZnVuY3Rpb24oKXtuLmhpZGUoKX07dGhpcy5kZXN0cm95PWZ1bmN0aW9uKGIpe3J1bnRpbWUuY2xlYXJUaW1lb3V0KHIpO3J1bnRpbWUuY2xlYXJUaW1lb3V0KHEpO3J1bnRpbWUuY2xlYXJUaW1lb3V0KGUpO2YucmVtb3ZlQ2hpbGQocCk7bi5kZXN0cm95KGZ1bmN0aW9uKGEpe2E/CmIoYSk6Zy5kZXN0cm95KGIpfSl9OyhmdW5jdGlvbigpe3ZhciBkPWcuZ2V0T2R0RG9jdW1lbnQoKS5nZXRET01Eb2N1bWVudCgpO3A9ZC5jcmVhdGVFbGVtZW50TlMoZC5kb2N1bWVudEVsZW1lbnQubmFtZXNwYWNlVVJJLCJkaXYiKTtwLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCJlZGl0SW5mb01hcmtlciIpO3Aub25tb3VzZW92ZXI9ZnVuY3Rpb24oKXtiLnNob3dIYW5kbGUoKX07cC5vbm1vdXNlb3V0PWZ1bmN0aW9uKCl7Yi5oaWRlSGFuZGxlKCl9O2Y9Zy5nZXROb2RlKCk7Zi5hcHBlbmRDaGlsZChwKTtuPW5ldyBndWkuRWRpdEluZm9IYW5kbGUoZik7a3x8Yi5oaWRlKCl9KSgpfTsKZ3VpLkh5cGVybGlua1Rvb2x0aXBWaWV3PWZ1bmN0aW9uKGcsayl7dmFyIGQ9Y29yZS5Eb21VdGlscyxiPW9kZi5PZGZVdGlscyxmPXJ1bnRpbWUuZ2V0V2luZG93KCksbixwLHI7cnVudGltZS5hc3NlcnQobnVsbCE9PWYsIkV4cGVjdGVkIHRvIGJlIHJ1biBpbiBhbiBlbnZpcm9ubWVudCB3aGljaCBoYXMgYSBnbG9iYWwgd2luZG93LCBsaWtlIGEgYnJvd3Nlci4iKTt0aGlzLnNob3dUb29sdGlwPWZ1bmN0aW9uKHEpe3ZhciBlPXEudGFyZ2V0fHxxLnNyY0VsZW1lbnQsbD1nLmdldFNpemVyKCksYT1nLmdldFpvb21MZXZlbCgpLGM7YTp7Zm9yKDtlOyl7aWYoYi5pc0h5cGVybGluayhlKSlicmVhayBhO2lmKGIuaXNQYXJhZ3JhcGgoZSl8fGIuaXNJbmxpbmVSb290KGUpKWJyZWFrO2U9ZS5wYXJlbnROb2RlfWU9bnVsbH1pZihlKXtkLmNvbnRhaW5zTm9kZShsLHIpfHxsLmFwcGVuZENoaWxkKHIpO2M9cDt2YXIgbTtzd2l0Y2goaygpKXtjYXNlIGd1aS5LZXlib2FyZEhhbmRsZXIuTW9kaWZpZXIuQ3RybDptPQpydW50aW1lLnRyKCJDdHJsLWNsaWNrIHRvIGZvbGxvdyBsaW5rIik7YnJlYWs7Y2FzZSBndWkuS2V5Ym9hcmRIYW5kbGVyLk1vZGlmaWVyLk1ldGE6bT1ydW50aW1lLnRyKCJcdTIzMTgtY2xpY2sgdG8gZm9sbG93IGxpbmsiKTticmVhaztkZWZhdWx0Om09IiJ9Yy50ZXh0Q29udGVudD1tO24udGV4dENvbnRlbnQ9Yi5nZXRIeXBlcmxpbmtUYXJnZXQoZSk7ci5zdHlsZS5kaXNwbGF5PSJibG9jayI7Yz1mLmlubmVyV2lkdGgtci5vZmZzZXRXaWR0aC0xNTtlPXEuY2xpZW50WD5jP2M6cS5jbGllbnRYKzE1O2M9Zi5pbm5lckhlaWdodC1yLm9mZnNldEhlaWdodC0xMDtxPXEuY2xpZW50WT5jP2M6cS5jbGllbnRZKzEwO2w9bC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtlPShlLWwubGVmdCkvYTtxPShxLWwudG9wKS9hO3Iuc3R5bGUubGVmdD1lKyJweCI7ci5zdHlsZS50b3A9cSsicHgifX07dGhpcy5oaWRlVG9vbHRpcD1mdW5jdGlvbigpe3Iuc3R5bGUuZGlzcGxheT0ibm9uZSJ9O3RoaXMuZGVzdHJveT0KZnVuY3Rpb24oYil7ci5wYXJlbnROb2RlJiZyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocik7YigpfTsoZnVuY3Rpb24oKXt2YXIgYj1nLmdldEVsZW1lbnQoKS5vd25lckRvY3VtZW50O249Yi5jcmVhdGVFbGVtZW50KCJzcGFuIik7cD1iLmNyZWF0ZUVsZW1lbnQoInNwYW4iKTtuLmNsYXNzTmFtZT0id2Vib2RmLWh5cGVybGlua1Rvb2x0aXBMaW5rIjtwLmNsYXNzTmFtZT0id2Vib2RmLWh5cGVybGlua1Rvb2x0aXBUZXh0IjtyPWIuY3JlYXRlRWxlbWVudCgiZGl2Iik7ci5jbGFzc05hbWU9IndlYm9kZi1oeXBlcmxpbmtUb29sdGlwIjtyLmFwcGVuZENoaWxkKG4pO3IuYXBwZW5kQ2hpbGQocCk7Zy5nZXRFbGVtZW50KCkuYXBwZW5kQ2hpbGQocil9KSgpfTsKZ3VpLk9kZkZpZWxkVmlldz1mdW5jdGlvbihnKXtmdW5jdGlvbiBrKCl7dmFyIGI9b2RmLk9kZlNjaGVtYS5nZXRGaWVsZHMoKS5tYXAoZnVuY3Rpb24oYil7cmV0dXJuIGIucmVwbGFjZSgiOiIsInwiKX0pLGQ9Yi5qb2luKCIsXG4iKSsiXG57IGJhY2tncm91bmQtY29sb3I6ICNEMEQwRDA7IH1cbiIsYj1iLm1hcChmdW5jdGlvbihiKXtyZXR1cm4gYisiOmVtcHR5OjphZnRlciJ9KS5qb2luKCIsXG4iKSsiXG57IGNvbnRlbnQ6JyAnOyB3aGl0ZS1zcGFjZTogcHJlOyB9XG4iO3JldHVybiBkKyJcbiIrYn12YXIgZCxiPWcuZ2V0RWxlbWVudCgpLm93bmVyRG9jdW1lbnQ7dGhpcy5zaG93RmllbGRIaWdobGlnaHQ9ZnVuY3Rpb24oKXtkLmFwcGVuZENoaWxkKGIuY3JlYXRlVGV4dE5vZGUoaygpKSl9O3RoaXMuaGlkZUZpZWxkSGlnaGxpZ2h0PWZ1bmN0aW9uKCl7Zm9yKHZhciBiPWQuc2hlZXQsZz1iLmNzc1J1bGVzO2cubGVuZ3RoOyliLmRlbGV0ZVJ1bGUoZy5sZW5ndGgtMSl9O3RoaXMuZGVzdHJveT0KZnVuY3Rpb24oYil7ZC5wYXJlbnROb2RlJiZkLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZCk7YigpfTtkPWZ1bmN0aW9uKCl7dmFyIGQ9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpLml0ZW0oMCksZz1iLmNyZWF0ZUVsZW1lbnQoInN0eWxlIiksaz0iIjtnLnR5cGU9InRleHQvY3NzIjtnLm1lZGlhPSJzY3JlZW4sIHByaW50LCBoYW5kaGVsZCwgcHJvamVjdGlvbiI7b2RmLk5hbWVzcGFjZXMuZm9yRWFjaFByZWZpeChmdW5jdGlvbihiLGQpe2srPSJAbmFtZXNwYWNlICIrYisiIHVybCgiK2QrIik7XG4ifSk7Zy5hcHBlbmRDaGlsZChiLmNyZWF0ZVRleHROb2RlKGspKTtkLmFwcGVuZENoaWxkKGcpO3JldHVybiBnfSgpfTsKZ3VpLlNoYWRvd0N1cnNvcj1mdW5jdGlvbihnKXt2YXIgaz1nLmdldERPTURvY3VtZW50KCkuY3JlYXRlUmFuZ2UoKSxkPSEwO3RoaXMucmVtb3ZlRnJvbURvY3VtZW50PWZ1bmN0aW9uKCl7fTt0aGlzLmdldE1lbWJlcklkPWZ1bmN0aW9uKCl7cmV0dXJuIGd1aS5TaGFkb3dDdXJzb3IuU2hhZG93Q3Vyc29yTWVtYmVySWR9O3RoaXMuZ2V0U2VsZWN0ZWRSYW5nZT1mdW5jdGlvbigpe3JldHVybiBrfTt0aGlzLnNldFNlbGVjdGVkUmFuZ2U9ZnVuY3Rpb24oYixmKXtrPWI7ZD0hMSE9PWZ9O3RoaXMuaGFzRm9yd2FyZFNlbGVjdGlvbj1mdW5jdGlvbigpe3JldHVybiBkfTt0aGlzLmdldERvY3VtZW50PWZ1bmN0aW9uKCl7cmV0dXJuIGd9O3RoaXMuZ2V0U2VsZWN0aW9uVHlwZT1mdW5jdGlvbigpe3JldHVybiBvcHMuT2R0Q3Vyc29yLlJhbmdlU2VsZWN0aW9ufTtrLnNldFN0YXJ0KGcuZ2V0Um9vdE5vZGUoKSwwKX07Z3VpLlNoYWRvd0N1cnNvci5TaGFkb3dDdXJzb3JNZW1iZXJJZD0iIjsKZ3VpLlNlbGVjdGlvblZpZXc9ZnVuY3Rpb24oZyl7fTtndWkuU2VsZWN0aW9uVmlldy5wcm90b3R5cGUucmVyZW5kZXI9ZnVuY3Rpb24oKXt9O2d1aS5TZWxlY3Rpb25WaWV3LnByb3RvdHlwZS5zaG93PWZ1bmN0aW9uKCl7fTtndWkuU2VsZWN0aW9uVmlldy5wcm90b3R5cGUuaGlkZT1mdW5jdGlvbigpe307Z3VpLlNlbGVjdGlvblZpZXcucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oZyl7fTsKZ3VpLlNlbGVjdGlvblZpZXdNYW5hZ2VyPWZ1bmN0aW9uKGcpe2Z1bmN0aW9uIGsoKXtyZXR1cm4gT2JqZWN0LmtleXMoZCkubWFwKGZ1bmN0aW9uKGIpe3JldHVybiBkW2JdfSl9dmFyIGQ9e307dGhpcy5nZXRTZWxlY3Rpb25WaWV3PWZ1bmN0aW9uKGIpe3JldHVybiBkLmhhc093blByb3BlcnR5KGIpP2RbYl06bnVsbH07dGhpcy5nZXRTZWxlY3Rpb25WaWV3cz1rO3RoaXMucmVtb3ZlU2VsZWN0aW9uVmlldz1mdW5jdGlvbihiKXtkLmhhc093blByb3BlcnR5KGIpJiYoZFtiXS5kZXN0cm95KGZ1bmN0aW9uKCl7fSksZGVsZXRlIGRbYl0pfTt0aGlzLmhpZGVTZWxlY3Rpb25WaWV3PWZ1bmN0aW9uKGIpe2QuaGFzT3duUHJvcGVydHkoYikmJmRbYl0uaGlkZSgpfTt0aGlzLnNob3dTZWxlY3Rpb25WaWV3PWZ1bmN0aW9uKGIpe2QuaGFzT3duUHJvcGVydHkoYikmJmRbYl0uc2hvdygpfTt0aGlzLnJlcmVuZGVyU2VsZWN0aW9uVmlld3M9ZnVuY3Rpb24oKXtPYmplY3Qua2V5cyhkKS5mb3JFYWNoKGZ1bmN0aW9uKGIpe2RbYl0ucmVyZW5kZXIoKX0pfTsKdGhpcy5yZWdpc3RlckN1cnNvcj1mdW5jdGlvbihiLGYpe3ZhciBrPWIuZ2V0TWVtYmVySWQoKSxwPW5ldyBnKGIpO2Y/cC5zaG93KCk6cC5oaWRlKCk7cmV0dXJuIGRba109cH07dGhpcy5kZXN0cm95PWZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGQoayxyKXtyP2Iocik6azxnLmxlbmd0aD9nW2tdLmRlc3Ryb3koZnVuY3Rpb24oYil7ZChrKzEsYil9KTpiKCl9dmFyIGc9aygpO2QoMCx2b2lkIDApfX07Z3VpLlNlc3Npb25WaWV3T3B0aW9ucz1mdW5jdGlvbigpe3RoaXMuY2FyZXRCbGlua3NPblJhbmdlU2VsZWN0PXRoaXMuY2FyZXRBdmF0YXJzSW5pdGlhbGx5VmlzaWJsZT10aGlzLmVkaXRJbmZvTWFya2Vyc0luaXRpYWxseVZpc2libGU9ITB9OwooZnVuY3Rpb24oKXtmdW5jdGlvbiBnKGcsZCl7cmV0dXJuIHZvaWQgMCE9PWc/Qm9vbGVhbihnKTpkfWd1aS5TZXNzaW9uVmlldz1mdW5jdGlvbihrLGQsYixmLG4scCl7ZnVuY3Rpb24gcihhKXthLm1lbWJlcklkPT09ZCYmSS5nZXRWaWV3cG9ydCgpLnNjcm9sbEludG9WaWV3KGEuYW5ub3RhdGlvbi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSl9ZnVuY3Rpb24gcSgpe3ZhciBhPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIikuaXRlbSgwKSxjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7Yy50eXBlPSJ0ZXh0L2NzcyI7Yy5tZWRpYT0ic2NyZWVuLCBwcmludCwgaGFuZGhlbGQsIHByb2plY3Rpb24iO2EuYXBwZW5kQ2hpbGQoYyk7cmV0dXJuIGN9ZnVuY3Rpb24gZShhLGMsYil7ZnVuY3Rpb24gZShjLGIsZCl7Yj1jKydbZWRpdGluZm98bWVtYmVyaWQ9IicrYSsnIl0nK2QrYjthOnt2YXIgZj12LmZpcnN0Q2hpbGQ7Zm9yKGM9YysnW2VkaXRpbmZvfG1lbWJlcmlkPSInKwphKyciXScrZCsieyI7Zjspe2lmKGYubm9kZVR5cGU9PT1Ob2RlLlRFWFRfTk9ERSYmMD09PWYuZGF0YS5pbmRleE9mKGMpKXtjPWY7YnJlYWsgYX1mPWYubmV4dFNpYmxpbmd9Yz1udWxsfWM/Yy5kYXRhPWI6di5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShiKSl9ZSgiZGl2LmVkaXRJbmZvTWFya2VyIiwieyBiYWNrZ3JvdW5kLWNvbG9yOiAiK2IrIjsgfSIsIiIpO2UoInNwYW4uZWRpdEluZm9Db2xvciIsInsgYmFja2dyb3VuZC1jb2xvcjogIitiKyI7IH0iLCIiKTtlKCJzcGFuLmVkaXRJbmZvQXV0aG9yIiwneyBjb250ZW50OiAiJytjKyciOyB9JywiOmJlZm9yZSIpO2UoImRjfGNyZWF0b3IiLCJ7IGJhY2tncm91bmQtY29sb3I6ICIrYisiOyB9IiwiIik7ZSgiLndlYm9kZi1zZWxlY3Rpb25PdmVybGF5IiwieyBmaWxsOiAiK2IrIjsgc3Ryb2tlOiAiK2IrIjt9IiwiIik7YT09PWQmJihlKCIud2Vib2RmLXRvdWNoRW5hYmxlZCAud2Vib2RmLXNlbGVjdGlvbk92ZXJsYXkiLAoieyBkaXNwbGF5OiBibG9jazsgfSIsIiA+IC53ZWJvZGYtZHJhZ2dhYmxlIiksYT1ndWkuU2hhZG93Q3Vyc29yLlNoYWRvd0N1cnNvck1lbWJlcklkLGUoIi53ZWJvZGYtc2VsZWN0aW9uT3ZlcmxheSIsInsgZmlsbDogIitiKyI7IHN0cm9rZTogIitiKyI7fSIsIiIpLGUoIi53ZWJvZGYtdG91Y2hFbmFibGVkIC53ZWJvZGYtc2VsZWN0aW9uT3ZlcmxheSIsInsgZGlzcGxheTogYmxvY2s7IH0iLCIgPiAud2Vib2RmLWRyYWdnYWJsZSIpKX1mdW5jdGlvbiBsKGEpe3ZhciBjLGI7Zm9yKGIgaW4gdCl0Lmhhc093blByb3BlcnR5KGIpJiYoYz10W2JdLGE/Yy5zaG93KCk6Yy5oaWRlKCkpfWZ1bmN0aW9uIGEoYSl7bi5nZXRDYXJldHMoKS5mb3JFYWNoKGZ1bmN0aW9uKGMpe2E/Yy5zaG93SGFuZGxlKCk6Yy5oaWRlSGFuZGxlKCl9KX1mdW5jdGlvbiBjKGEpe3ZhciBjPWEuZ2V0TWVtYmVySWQoKTthPWEuZ2V0UHJvcGVydGllcygpO2UoYyxhLmZ1bGxOYW1lLGEuY29sb3IpfWZ1bmN0aW9uIG0oYSl7dmFyIGM9CmEuZ2V0TWVtYmVySWQoKSxkPWIuZ2V0T2R0RG9jdW1lbnQoKS5nZXRNZW1iZXIoYykuZ2V0UHJvcGVydGllcygpO24ucmVnaXN0ZXJDdXJzb3IoYSxFLE4pO3AucmVnaXN0ZXJDdXJzb3IoYSwhMCk7aWYoYT1uLmdldENhcmV0KGMpKWEuc2V0QXZhdGFySW1hZ2VVcmwoZC5pbWFnZVVybCksYS5zZXRDb2xvcihkLmNvbG9yKTtydW50aW1lLmxvZygiKysrIFZpZXcgaGVyZSArKysgZWFnZXJseSBjcmVhdGVkIGFuIENhcmV0IGZvciAnIitjKyInISArKysiKX1mdW5jdGlvbiBoKGEpe2E9YS5nZXRNZW1iZXJJZCgpO3ZhciBjPXAuZ2V0U2VsZWN0aW9uVmlldyhkKSxiPXAuZ2V0U2VsZWN0aW9uVmlldyhndWkuU2hhZG93Q3Vyc29yLlNoYWRvd0N1cnNvck1lbWJlcklkKSxlPW4uZ2V0Q2FyZXQoZCk7YT09PWQ/KGIuaGlkZSgpLGMmJmMuc2hvdygpLGUmJmUuc2hvdygpKTphPT09Z3VpLlNoYWRvd0N1cnNvci5TaGFkb3dDdXJzb3JNZW1iZXJJZCYmKGIuc2hvdygpLGMmJmMuaGlkZSgpLAplJiZlLmhpZGUoKSl9ZnVuY3Rpb24geShhKXtwLnJlbW92ZVNlbGVjdGlvblZpZXcoYSl9ZnVuY3Rpb24geChhKXt2YXIgYz1hLnBhcmFncmFwaEVsZW1lbnQsZD1hLm1lbWJlcklkO2E9YS50aW1lU3RhbXA7dmFyIGUsZj0iIixoPWMuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUygidXJuOndlYm9kZjpuYW1lczplZGl0aW5mbyIsImVkaXRpbmZvIikuaXRlbSgwKTtoPyhmPWguZ2V0QXR0cmlidXRlTlMoInVybjp3ZWJvZGY6bmFtZXM6ZWRpdGluZm8iLCJpZCIpLGU9dFtmXSk6KGY9TWF0aC5yYW5kb20oKS50b1N0cmluZygpLGU9bmV3IG9wcy5FZGl0SW5mbyhjLGIuZ2V0T2R0RG9jdW1lbnQoKSksZT1uZXcgZ3VpLkVkaXRJbmZvTWFya2VyKGUsTCksaD1jLmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoInVybjp3ZWJvZGY6bmFtZXM6ZWRpdGluZm8iLCJlZGl0aW5mbyIpLml0ZW0oMCksaC5zZXRBdHRyaWJ1dGVOUygidXJuOndlYm9kZjpuYW1lczplZGl0aW5mbyIsImlkIixmKSx0W2ZdPWUpOwplLmFkZEVkaXQoZCxuZXcgRGF0ZShhKSk7Sy50cmlnZ2VyKCl9ZnVuY3Rpb24geigpe3ZhciBhO3UuaGFzQ2hpbGROb2RlcygpJiZjb3JlLkRvbVV0aWxzLnJlbW92ZUFsbENoaWxkTm9kZXModSk7ITA9PT1mLmdldFN0YXRlKGd1aS5Db21tb25Db25zdHJhaW50cy5FRElULkFOTk9UQVRJT05TLk9OTFlfREVMRVRFX09XTikmJihhPWIuZ2V0T2R0RG9jdW1lbnQoKS5nZXRNZW1iZXIoZCkpJiYoYT1hLmdldFByb3BlcnRpZXMoKS5mdWxsTmFtZSx1LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIuYW5ub3RhdGlvbldyYXBwZXI6bm90KFtjcmVhdG9yID0gJyIrYSsiJ10pIC5hbm5vdGF0aW9uUmVtb3ZlQnV0dG9uIHsgZGlzcGxheTogbm9uZTsgfSIpKSl9ZnVuY3Rpb24gdyhhKXt2YXIgYj1PYmplY3Qua2V5cyh0KS5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIHRbYV19KTtBLnVuc3Vic2NyaWJlKG9wcy5Eb2N1bWVudC5zaWduYWxNZW1iZXJBZGRlZCxjKTtBLnVuc3Vic2NyaWJlKG9wcy5Eb2N1bWVudC5zaWduYWxNZW1iZXJVcGRhdGVkLApjKTtBLnVuc3Vic2NyaWJlKG9wcy5Eb2N1bWVudC5zaWduYWxDdXJzb3JBZGRlZCxtKTtBLnVuc3Vic2NyaWJlKG9wcy5Eb2N1bWVudC5zaWduYWxDdXJzb3JSZW1vdmVkLHkpO0EudW5zdWJzY3JpYmUob3BzLk9kdERvY3VtZW50LnNpZ25hbFBhcmFncmFwaENoYW5nZWQseCk7QS51bnN1YnNjcmliZShvcHMuRG9jdW1lbnQuc2lnbmFsQ3Vyc29yTW92ZWQsaCk7QS51bnN1YnNjcmliZShvcHMuT2R0RG9jdW1lbnQuc2lnbmFsUGFyYWdyYXBoQ2hhbmdlZCxwLnJlcmVuZGVyU2VsZWN0aW9uVmlld3MpO0EudW5zdWJzY3JpYmUob3BzLk9kdERvY3VtZW50LnNpZ25hbFRhYmxlQWRkZWQscC5yZXJlbmRlclNlbGVjdGlvblZpZXdzKTtBLnVuc3Vic2NyaWJlKG9wcy5PZHREb2N1bWVudC5zaWduYWxQYXJhZ3JhcGhTdHlsZU1vZGlmaWVkLHAucmVyZW5kZXJTZWxlY3Rpb25WaWV3cyk7Zi51bnN1YnNjcmliZShndWkuQ29tbW9uQ29uc3RyYWludHMuRURJVC5BTk5PVEFUSU9OUy5PTkxZX0RFTEVURV9PV04sCnopO0EudW5zdWJzY3JpYmUob3BzLkRvY3VtZW50LnNpZ25hbE1lbWJlckFkZGVkLHopO0EudW5zdWJzY3JpYmUob3BzLkRvY3VtZW50LnNpZ25hbE1lbWJlclVwZGF0ZWQseik7di5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHYpO3UucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh1KTsoZnVuY3Rpb24gVyhjLGQpe2Q/YShkKTpjPGIubGVuZ3RoP2JbY10uZGVzdHJveShmdW5jdGlvbihhKXtXKGMrMSxhKX0pOmEoKX0pKDAsdm9pZCAwKX12YXIgdix1LHQ9e30sQSxJLEssTD1nKGsuZWRpdEluZm9NYXJrZXJzSW5pdGlhbGx5VmlzaWJsZSwhMCksRT1nKGsuY2FyZXRBdmF0YXJzSW5pdGlhbGx5VmlzaWJsZSwhMCksTj1nKGsuY2FyZXRCbGlua3NPblJhbmdlU2VsZWN0LCEwKTt0aGlzLnNob3dFZGl0SW5mb01hcmtlcnM9ZnVuY3Rpb24oKXtMfHwoTD0hMCxsKEwpKX07dGhpcy5oaWRlRWRpdEluZm9NYXJrZXJzPWZ1bmN0aW9uKCl7TCYmKEw9ITEsbChMKSl9O3RoaXMuc2hvd0NhcmV0QXZhdGFycz0KZnVuY3Rpb24oKXtFfHwoRT0hMCxhKEUpKX07dGhpcy5oaWRlQ2FyZXRBdmF0YXJzPWZ1bmN0aW9uKCl7RSYmKEU9ITEsYShFKSl9O3RoaXMuZ2V0U2Vzc2lvbj1mdW5jdGlvbigpe3JldHVybiBifTt0aGlzLmdldENhcmV0PWZ1bmN0aW9uKGEpe3JldHVybiBuLmdldENhcmV0KGEpfTt0aGlzLmRlc3Ryb3k9ZnVuY3Rpb24oYSl7dmFyIGM9W0suZGVzdHJveSx3XTtBLnVuc3Vic2NyaWJlKG9wcy5PZHREb2N1bWVudC5zaWduYWxBbm5vdGF0aW9uQWRkZWQscik7Y29yZS5Bc3luYy5kZXN0cm95QWxsKGMsYSl9O0E9Yi5nZXRPZHREb2N1bWVudCgpO0k9QS5nZXRPZGZDYW52YXMoKTtBLnN1YnNjcmliZShvcHMuT2R0RG9jdW1lbnQuc2lnbmFsQW5ub3RhdGlvbkFkZGVkLHIpO0Euc3Vic2NyaWJlKG9wcy5Eb2N1bWVudC5zaWduYWxNZW1iZXJBZGRlZCxjKTtBLnN1YnNjcmliZShvcHMuRG9jdW1lbnQuc2lnbmFsTWVtYmVyVXBkYXRlZCxjKTtBLnN1YnNjcmliZShvcHMuRG9jdW1lbnQuc2lnbmFsQ3Vyc29yQWRkZWQsCm0pO0Euc3Vic2NyaWJlKG9wcy5Eb2N1bWVudC5zaWduYWxDdXJzb3JSZW1vdmVkLHkpO0Euc3Vic2NyaWJlKG9wcy5PZHREb2N1bWVudC5zaWduYWxQYXJhZ3JhcGhDaGFuZ2VkLHgpO0Euc3Vic2NyaWJlKG9wcy5Eb2N1bWVudC5zaWduYWxDdXJzb3JNb3ZlZCxoKTtBLnN1YnNjcmliZShvcHMuT2R0RG9jdW1lbnQuc2lnbmFsUGFyYWdyYXBoQ2hhbmdlZCxwLnJlcmVuZGVyU2VsZWN0aW9uVmlld3MpO0Euc3Vic2NyaWJlKG9wcy5PZHREb2N1bWVudC5zaWduYWxUYWJsZUFkZGVkLHAucmVyZW5kZXJTZWxlY3Rpb25WaWV3cyk7QS5zdWJzY3JpYmUob3BzLk9kdERvY3VtZW50LnNpZ25hbFBhcmFncmFwaFN0eWxlTW9kaWZpZWQscC5yZXJlbmRlclNlbGVjdGlvblZpZXdzKTtmLnN1YnNjcmliZShndWkuQ29tbW9uQ29uc3RyYWludHMuRURJVC5BTk5PVEFUSU9OUy5PTkxZX0RFTEVURV9PV04seik7QS5zdWJzY3JpYmUob3BzLkRvY3VtZW50LnNpZ25hbE1lbWJlckFkZGVkLHopO0Euc3Vic2NyaWJlKG9wcy5Eb2N1bWVudC5zaWduYWxNZW1iZXJVcGRhdGVkLAp6KTt2PXEoKTt2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJAbmFtZXNwYWNlIGVkaXRpbmZvIHVybCh1cm46d2Vib2RmOm5hbWVzOmVkaXRpbmZvKTsiKSk7di5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiQG5hbWVzcGFjZSBkYyB1cmwoaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8pOyIpKTt1PXEoKTt6KCk7Sz1jb3JlLlRhc2suY3JlYXRlUmVkcmF3VGFzayhmdW5jdGlvbigpe3ZhciBhPUkuZ2V0QW5ub3RhdGlvblZpZXdNYW5hZ2VyKCk7YSYmKGEucmVoaWdobGlnaHRBbm5vdGF0aW9ucygpLEEuZml4Q3Vyc29yUG9zaXRpb25zKCkpfSl9fSkoKTsKZ3VpLlN2Z1NlbGVjdGlvblZpZXc9ZnVuY3Rpb24oZyl7ZnVuY3Rpb24gaygpe3ZhciBhPWMuZ2V0Um9vdE5vZGUoKTttIT09YSYmKG09YSxoPWMuZ2V0Q2FudmFzKCkuZ2V0U2l6ZXIoKSxoLmFwcGVuZENoaWxkKHgpLHguc2V0QXR0cmlidXRlKCJjbGFzcyIsIndlYm9kZi1zZWxlY3Rpb25PdmVybGF5Iiksdy5zZXRBdHRyaWJ1dGUoImNsYXNzIiwid2Vib2RmLWRyYWdnYWJsZSIpLHYuc2V0QXR0cmlidXRlKCJjbGFzcyIsIndlYm9kZi1kcmFnZ2FibGUiKSx3LnNldEF0dHJpYnV0ZSgiZW5kIiwibGVmdCIpLHYuc2V0QXR0cmlidXRlKCJlbmQiLCJyaWdodCIpLHcuc2V0QXR0cmlidXRlKCJyIiw4KSx2LnNldEF0dHJpYnV0ZSgiciIsOCkseC5hcHBlbmRDaGlsZCh6KSx4LmFwcGVuZENoaWxkKHcpLHguYXBwZW5kQ2hpbGQodikpfWZ1bmN0aW9uIGQoYSl7YT1hLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybiBCb29sZWFuKGEmJjAhPT1hLmhlaWdodCl9ZnVuY3Rpb24gYihhKXt2YXIgYz0KdS5nZXRUZXh0RWxlbWVudHMoYSwhMCwhMSksYj1hLmNsb25lUmFuZ2UoKSxlPWEuY2xvbmVSYW5nZSgpO2E9YS5jbG9uZVJhbmdlKCk7aWYoIWMubGVuZ3RoKXJldHVybiBudWxsO3ZhciBmO2E6e2Y9MDt2YXIgaD1jW2ZdLGc9Yi5zdGFydENvbnRhaW5lcj09PWg/Yi5zdGFydE9mZnNldDowLG09ZztiLnNldFN0YXJ0KGgsZyk7Zm9yKGIuc2V0RW5kKGgsbSk7IWQoYik7KXtpZihoLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUmJm08aC5jaGlsZE5vZGVzLmxlbmd0aCltPWguY2hpbGROb2Rlcy5sZW5ndGg7ZWxzZSBpZihoLm5vZGVUeXBlPT09Tm9kZS5URVhUX05PREUmJm08aC5sZW5ndGgpbSs9MTtlbHNlIGlmKGNbZl0paD1jW2ZdLGYrPTEsZz1tPTA7ZWxzZXtmPSExO2JyZWFrIGF9Yi5zZXRTdGFydChoLGcpO2Iuc2V0RW5kKGgsbSl9Zj0hMH1pZighZilyZXR1cm4gbnVsbDthOntmPWMubGVuZ3RoLTE7aD1jW2ZdO209Zz1lLmVuZENvbnRhaW5lcj09PWg/ZS5lbmRPZmZzZXQ6Cmgubm9kZVR5cGU9PT1Ob2RlLlRFWFRfTk9ERT9oLmxlbmd0aDpoLmNoaWxkTm9kZXMubGVuZ3RoO2Uuc2V0U3RhcnQoaCxnKTtmb3IoZS5zZXRFbmQoaCxtKTshZChlKTspe2lmKGgubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSYmMDxnKWc9MDtlbHNlIGlmKGgubm9kZVR5cGU9PT1Ob2RlLlRFWFRfTk9ERSYmMDxnKS0tZztlbHNlIGlmKGNbZl0paD1jW2ZdLC0tZixnPW09aC5sZW5ndGh8fGguY2hpbGROb2Rlcy5sZW5ndGg7ZWxzZXtjPSExO2JyZWFrIGF9ZS5zZXRTdGFydChoLGcpO2Uuc2V0RW5kKGgsbSl9Yz0hMH1pZighYylyZXR1cm4gbnVsbDthLnNldFN0YXJ0KGIuc3RhcnRDb250YWluZXIsYi5zdGFydE9mZnNldCk7YS5zZXRFbmQoZS5lbmRDb250YWluZXIsZS5lbmRPZmZzZXQpO3JldHVybntmaXJzdFJhbmdlOmIsbGFzdFJhbmdlOmUsZmlsbGVyUmFuZ2U6YX19ZnVuY3Rpb24gZihhLGMpe3ZhciBiPXt9O2IudG9wPU1hdGgubWluKGEudG9wLGMudG9wKTtiLmxlZnQ9Ck1hdGgubWluKGEubGVmdCxjLmxlZnQpO2IucmlnaHQ9TWF0aC5tYXgoYS5yaWdodCxjLnJpZ2h0KTtiLmJvdHRvbT1NYXRoLm1heChhLmJvdHRvbSxjLmJvdHRvbSk7Yi53aWR0aD1iLnJpZ2h0LWIubGVmdDtiLmhlaWdodD1iLmJvdHRvbS1iLnRvcDtyZXR1cm4gYn1mdW5jdGlvbiBuKGEsYyl7YyYmMDxjLndpZHRoJiYwPGMuaGVpZ2h0JiYoYT1hP2YoYSxjKTpjKTtyZXR1cm4gYX1mdW5jdGlvbiBwKGEpe2Z1bmN0aW9uIGIoYSl7Sy5zZXRVbmZpbHRlcmVkUG9zaXRpb24oYSwwKTtyZXR1cm4gdi5hY2NlcHROb2RlKGEpPT09TCYmeC5hY2NlcHRQb3NpdGlvbihLKT09PUw/TDpFfWZ1bmN0aW9uIGQoYSl7dmFyIGM9bnVsbDtiKGEpPT09TCYmKGM9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoYSkpO3JldHVybiBjfXZhciBlPWEuY29tbW9uQW5jZXN0b3JDb250YWluZXIsZj1hLnN0YXJ0Q29udGFpbmVyLGg9YS5lbmRDb250YWluZXIsZz1hLnN0YXJ0T2Zmc2V0LG09YS5lbmRPZmZzZXQsCmssbCxwPW51bGwscixxPXkuY3JlYXRlUmFuZ2UoKSx4LHY9bmV3IG9kZi5PZGZOb2RlRmlsdGVyLHc7aWYoZj09PWV8fGg9PT1lKXJldHVybiBxPWEuY2xvbmVSYW5nZSgpLHA9cS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxxLmRldGFjaCgpLHA7Zm9yKGE9ZjthLnBhcmVudE5vZGUhPT1lOylhPWEucGFyZW50Tm9kZTtmb3IobD1oO2wucGFyZW50Tm9kZSE9PWU7KWw9bC5wYXJlbnROb2RlO3g9Yy5jcmVhdGVSb290RmlsdGVyKGYpO2ZvcihlPWEubmV4dFNpYmxpbmc7ZSYmZSE9PWw7KXI9ZChlKSxwPW4ocCxyKSxlPWUubmV4dFNpYmxpbmc7aWYodS5pc1BhcmFncmFwaChhKSlwPW4ocCx0LmdldEJvdW5kaW5nQ2xpZW50UmVjdChhKSk7ZWxzZSBpZihhLm5vZGVUeXBlPT09Tm9kZS5URVhUX05PREUpZT1hLHEuc2V0U3RhcnQoZSxnKSxxLnNldEVuZChlLGU9PT1sP206ZS5sZW5ndGgpLHI9cS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxwPW4ocCxyKTtlbHNlIGZvcih3PXkuY3JlYXRlVHJlZVdhbGtlcihhLApOb2RlRmlsdGVyLlNIT1dfVEVYVCxiLCExKSxlPXcuY3VycmVudE5vZGU9ZjtlJiZlIT09aDspcS5zZXRTdGFydChlLGcpLHEuc2V0RW5kKGUsZS5sZW5ndGgpLHI9cS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxwPW4ocCxyKSxrPWUsZz0wLGU9dy5uZXh0Tm9kZSgpO2t8fChrPWYpO2lmKHUuaXNQYXJhZ3JhcGgobCkpcD1uKHAsdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QobCkpO2Vsc2UgaWYobC5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFKWU9bCxxLnNldFN0YXJ0KGUsZT09PWE/ZzowKSxxLnNldEVuZChlLG0pLHI9cS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxwPW4ocCxyKTtlbHNlIGZvcih3PXkuY3JlYXRlVHJlZVdhbGtlcihsLE5vZGVGaWx0ZXIuU0hPV19URVhULGIsITEpLGU9dy5jdXJyZW50Tm9kZT1oO2UmJmUhPT1rOylpZihxLnNldFN0YXJ0KGUsMCkscS5zZXRFbmQoZSxtKSxyPXEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscD1uKHAsciksZT13LnByZXZpb3VzTm9kZSgpKW09CmUubGVuZ3RoO3JldHVybiBwfWZ1bmN0aW9uIHIoYSxjKXt2YXIgYj1hLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGQ9e3dpZHRoOjB9O2QudG9wPWIudG9wO2QuYm90dG9tPWIuYm90dG9tO2QuaGVpZ2h0PWIuaGVpZ2h0O2QubGVmdD1kLnJpZ2h0PWM/Yi5yaWdodDpiLmxlZnQ7cmV0dXJuIGR9ZnVuY3Rpb24gcSgpe3ZhciBhPWcuZ2V0U2VsZWN0ZWRSYW5nZSgpLGM7aWYoYz1JJiZnLmdldFNlbGVjdGlvblR5cGUoKT09PW9wcy5PZHRDdXJzb3IuUmFuZ2VTZWxlY3Rpb24mJiFhLmNvbGxhcHNlZCl7aygpO3ZhciBkPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGgpLGU9QS5nZXRab29tTGV2ZWwoKSxhPWIoYSksbSxsLG4scSx5LHU7aWYoYSl7Yz1hLmZpcnN0UmFuZ2U7bT1hLmxhc3RSYW5nZTtsPWEuZmlsbGVyUmFuZ2U7bj10LnRyYW5zbGF0ZVJlY3QocihjLCExKSxkLGUpO3k9dC50cmFuc2xhdGVSZWN0KHIobSwhMCksZCxlKTtxPShxPXAobCkpP3QudHJhbnNsYXRlUmVjdChxLApkLGUpOmYobix5KTt1PXEubGVmdDtxPW4ubGVmdCtNYXRoLm1heCgwLHEud2lkdGgtKG4ubGVmdC1xLmxlZnQpKTtkPU1hdGgubWluKG4udG9wLHkudG9wKTtlPXkudG9wK3kuaGVpZ2h0O3U9W3t4Om4ubGVmdCx5OmQrbi5oZWlnaHR9LHt4Om4ubGVmdCx5OmR9LHt4OnEseTpkfSx7eDpxLHk6ZS15LmhlaWdodH0se3g6eS5yaWdodCx5OmUteS5oZWlnaHR9LHt4OnkucmlnaHQseTplfSx7eDp1LHk6ZX0se3g6dSx5OmQrbi5oZWlnaHR9LHt4Om4ubGVmdCx5OmQrbi5oZWlnaHR9XTtxPSIiO3ZhciBFO2ZvcihFPTA7RTx1Lmxlbmd0aDtFKz0xKXErPXVbRV0ueCsiLCIrdVtFXS55KyIgIjt6LnNldEF0dHJpYnV0ZSgicG9pbnRzIixxKTt3LnNldEF0dHJpYnV0ZSgiY3giLG4ubGVmdCk7dy5zZXRBdHRyaWJ1dGUoImN5IixkK24uaGVpZ2h0LzIpO3Yuc2V0QXR0cmlidXRlKCJjeCIseS5yaWdodCk7di5zZXRBdHRyaWJ1dGUoImN5IixlLXkuaGVpZ2h0LzIpO2MuZGV0YWNoKCk7bS5kZXRhY2goKTsKbC5kZXRhY2goKX1jPUJvb2xlYW4oYSl9eC5zdHlsZS5kaXNwbGF5PWM/ImJsb2NrIjoibm9uZSJ9ZnVuY3Rpb24gZShhKXtJJiZhPT09ZyYmTi50cmlnZ2VyKCl9ZnVuY3Rpb24gbChhKXthPTgvYTt3LnNldEF0dHJpYnV0ZSgiciIsYSk7di5zZXRBdHRyaWJ1dGUoInIiLGEpfWZ1bmN0aW9uIGEoYSl7aC5yZW1vdmVDaGlsZCh4KTtoLmNsYXNzTGlzdC5yZW1vdmUoIndlYm9kZi12aXJ0dWFsU2VsZWN0aW9ucyIpO2cuZ2V0RG9jdW1lbnQoKS51bnN1YnNjcmliZShvcHMuRG9jdW1lbnQuc2lnbmFsQ3Vyc29yTW92ZWQsZSk7QS51bnN1YnNjcmliZShndWkuWm9vbUhlbHBlci5zaWduYWxab29tQ2hhbmdlZCxsKTthKCl9dmFyIGM9Zy5nZXREb2N1bWVudCgpLG0saCx5PWMuZ2V0RE9NRG9jdW1lbnQoKSx4PXkuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsInN2ZyIpLHo9eS5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwKInBvbHlnb24iKSx3PXkuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImNpcmNsZSIpLHY9eS5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiY2lyY2xlIiksdT1vZGYuT2RmVXRpbHMsdD1jb3JlLkRvbVV0aWxzLEE9Yy5nZXRDYW52YXMoKS5nZXRab29tSGVscGVyKCksST0hMCxLPWcuZ2V0RG9jdW1lbnQoKS5jcmVhdGVQb3NpdGlvbkl0ZXJhdG9yKGMuZ2V0Um9vdE5vZGUoKSksTD1Ob2RlRmlsdGVyLkZJTFRFUl9BQ0NFUFQsRT1Ob2RlRmlsdGVyLkZJTFRFUl9SRUpFQ1QsTjt0aGlzLnJlcmVuZGVyPWZ1bmN0aW9uKCl7SSYmTi50cmlnZ2VyKCl9O3RoaXMuc2hvdz1mdW5jdGlvbigpe0k9ITA7Ti50cmlnZ2VyKCl9O3RoaXMuaGlkZT1mdW5jdGlvbigpe0k9ITE7Ti50cmlnZ2VyKCl9O3RoaXMuZGVzdHJveT1mdW5jdGlvbihjKXtjb3JlLkFzeW5jLmRlc3Ryb3lBbGwoW04uZGVzdHJveSxhXSxjKX07KGZ1bmN0aW9uKCl7dmFyIGE9CmcuZ2V0TWVtYmVySWQoKTtOPWNvcmUuVGFzay5jcmVhdGVSZWRyYXdUYXNrKHEpO2soKTt4LnNldEF0dHJpYnV0ZU5TKCJ1cm46d2Vib2RmOm5hbWVzOmVkaXRpbmZvIiwiZWRpdGluZm86bWVtYmVyaWQiLGEpO2guY2xhc3NMaXN0LmFkZCgid2Vib2RmLXZpcnR1YWxTZWxlY3Rpb25zIik7Zy5nZXREb2N1bWVudCgpLnN1YnNjcmliZShvcHMuRG9jdW1lbnQuc2lnbmFsQ3Vyc29yTW92ZWQsZSk7QS5zdWJzY3JpYmUoZ3VpLlpvb21IZWxwZXIuc2lnbmFsWm9vbUNoYW5nZWQsbCk7bChBLmdldFpvb21MZXZlbCgpKX0pKCl9OwpndWkuVW5kb1N0YXRlUnVsZXM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBnKGIsZCl7dmFyIGc9Yi5sZW5ndGg7dGhpcy5wcmV2aW91cz1mdW5jdGlvbigpe2ZvcigtLWc7MDw9ZzstLWcpaWYoZChiW2ddKSlyZXR1cm4gYltnXTtyZXR1cm4gbnVsbH19ZnVuY3Rpb24gayhiKXtiPWIuc3BlYygpO3ZhciBkO2IuaGFzT3duUHJvcGVydHkoInBvc2l0aW9uIikmJihkPWIucG9zaXRpb24pO3JldHVybiBkfWZ1bmN0aW9uIGQoYil7cmV0dXJuIGIuaXNFZGl0fWZ1bmN0aW9uIGIoYixkLGcpe2lmKCFnKXJldHVybiBnPWsoYiktayhkKSwwPT09Z3x8MT09PU1hdGguYWJzKGcpO2I9ayhiKTtkPWsoZCk7Zz1rKGcpO3JldHVybiBiLWQ9PT1kLWd9dGhpcy5pc0VkaXRPcGVyYXRpb249ZDt0aGlzLmlzUGFydE9mT3BlcmF0aW9uU2V0PWZ1bmN0aW9uKGYsayl7dmFyIHA9dm9pZCAwIT09Zi5ncm91cCxyO2lmKCFmLmlzRWRpdHx8MD09PWsubGVuZ3RoKXJldHVybiEwO3I9a1trLmxlbmd0aC0xXTtpZihwJiYKZi5ncm91cD09PXIuZ3JvdXApcmV0dXJuITA7YTpzd2l0Y2goZi5zcGVjKCkub3B0eXBlKXtjYXNlICJSZW1vdmVUZXh0IjpjYXNlICJJbnNlcnRUZXh0IjpyPSEwO2JyZWFrIGE7ZGVmYXVsdDpyPSExfWlmKHImJmsuc29tZShkKSl7aWYocCl7dmFyIHE7cD1mLnNwZWMoKS5vcHR5cGU7cj1uZXcgZyhrLGQpO3ZhciBlPXIucHJldmlvdXMoKSxsPW51bGwsYSxjO3J1bnRpbWUuYXNzZXJ0KEJvb2xlYW4oZSksIk5vIGVkaXQgb3BlcmF0aW9ucyBmb3VuZCBpbiBzdGF0ZSIpO2M9ZS5ncm91cDtydW50aW1lLmFzc2VydCh2b2lkIDAhPT1jLCJPcGVyYXRpb24gaGFzIG5vIGdyb3VwIik7Zm9yKGE9MTtlJiZlLmdyb3VwPT09Yzspe2lmKHA9PT1lLnNwZWMoKS5vcHR5cGUpe3E9ZTticmVha31lPXIucHJldmlvdXMoKX1pZihxKXtmb3IoZT1yLnByZXZpb3VzKCk7ZTspe2lmKGUuZ3JvdXAhPT1jKXtpZigyPT09YSlicmVhaztjPWUuZ3JvdXA7YSs9MX1pZihwPT09ZS5zcGVjKCkub3B0eXBlKXtsPQplO2JyZWFrfWU9ci5wcmV2aW91cygpfXE9YihmLHEsbCl9ZWxzZSBxPSExO3JldHVybiBxfXE9Zi5zcGVjKCkub3B0eXBlO3A9bmV3IGcoayxkKTtyPXAucHJldmlvdXMoKTtydW50aW1lLmFzc2VydChCb29sZWFuKHIpLCJObyBlZGl0IG9wZXJhdGlvbnMgZm91bmQgaW4gc3RhdGUiKTtxPXE9PT1yLnNwZWMoKS5vcHR5cGU/YihmLHIscC5wcmV2aW91cygpKTohMTtyZXR1cm4gcX1yZXR1cm4hMX19OwooZnVuY3Rpb24oKXtmdW5jdGlvbiBnKGIsZCl7dGhpcy5tYWluSWQ9dm9pZCAwIT09Yj9iOi0xO3RoaXMuc3ViSWQ9dm9pZCAwIT09ZD9kOi0xfWZ1bmN0aW9uIGsoYixmLGspe2Z1bmN0aW9uIHAoZCxhKXtyZXR1cm4gZCsoYi5pc0VkaXRPcGVyYXRpb24oYSk/MTowKX12YXIgcixxLGU7dGhpcy5hZGRPcGVyYXRpb249ZnVuY3Rpb24oZCl7Yi5pc0VkaXRPcGVyYXRpb24oZCkmJihlKz0xKTtxLnB1c2goZCl9O3RoaXMuaXNOZXh0U3RhdGVJZD1mdW5jdGlvbihiKXtyZXR1cm4gYi5tYWluSWQ9PT1yJiZiLnN1YklkPT09ZX07dGhpcy5nZXROZXh0U3RhdGVJZD1mdW5jdGlvbigpe3JldHVybiBuZXcgZyhyLGUpfTt0aGlzLmdldE9wZXJhdGlvbnM9ZnVuY3Rpb24oKXtyZXR1cm4gcX07cj1kKz0xO3E9Znx8W107ZT1mJiZrP2YucmVkdWNlKHAsMCk6MH12YXIgZD0wO2d1aS5Ucml2aWFsVW5kb01hbmFnZXI9ZnVuY3Rpb24oYil7ZnVuY3Rpb24gZCgpe3JldHVybiEwIT09dS5pc05leHRTdGF0ZUlkKHYpfQpmdW5jdGlvbiBuKGEpe2E9YS5nZXRPcGVyYXRpb25zKCk7MDxhLmxlbmd0aCYmKEw9ITAseihhKSxMPSExKX1mdW5jdGlvbiBwKCl7SS5lbWl0KGd1aS5VbmRvTWFuYWdlci5zaWduYWxVbmRvU3RhY2tDaGFuZ2VkLHt1bmRvQXZhaWxhYmxlOm0uaGFzVW5kb1N0YXRlcygpLHJlZG9BdmFpbGFibGU6bS5oYXNSZWRvU3RhdGVzKCl9KX1mdW5jdGlvbiByKGEpe3ZhciBjPWQoKTthIT09YyYmSS5lbWl0KGd1aS5VbmRvTWFuYWdlci5zaWduYWxEb2N1bWVudE1vZGlmaWVkQ2hhbmdlZCxjKX1mdW5jdGlvbiBxKCl7dSE9PXgmJnUhPT10W3QubGVuZ3RoLTFdJiZ0LnB1c2godSl9ZnVuY3Rpb24gZShhKXt2YXIgYz1hLnByZXZpb3VzU2libGluZ3x8YS5uZXh0U2libGluZzthLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYSk7aC5ub3JtYWxpemVUZXh0Tm9kZXMoYyl9ZnVuY3Rpb24gbChhKXtyZXR1cm4gT2JqZWN0LmtleXMoYSkubWFwKGZ1bmN0aW9uKGMpe3JldHVybiBhW2NdfSl9ZnVuY3Rpb24gYShhKXtmdW5jdGlvbiBjKGEpe3ZhciBoPQphLnNwZWMoKTtpZihlW2gubWVtYmVyaWRdKXN3aXRjaChoLm9wdHlwZSl7Y2FzZSAiQWRkQ3Vyc29yIjpiW2gubWVtYmVyaWRdfHwoYltoLm1lbWJlcmlkXT1hLGRlbGV0ZSBlW2gubWVtYmVyaWRdLC0tZik7YnJlYWs7Y2FzZSAiTW92ZUN1cnNvciI6ZFtoLm1lbWJlcmlkXXx8KGRbaC5tZW1iZXJpZF09YSl9fXZhciBiPXt9LGQ9e30sZT17fSxmLGg7aD1hLnBvcCgpO3cuZ2V0TWVtYmVySWRzKCkuZm9yRWFjaChmdW5jdGlvbihhKXtlW2FdPSEwfSk7Zm9yKGY9T2JqZWN0LmtleXMoZSkubGVuZ3RoO2gmJjA8ZjspaD1oLmdldE9wZXJhdGlvbnMoKSxoLnJldmVyc2UoKSxoLmZvckVhY2goYyksaD1hLnBvcCgpO3JldHVybiBuZXcgayhLLGwoYikuY29uY2F0KGwoZCkpKX1mdW5jdGlvbiBjKCl7dmFyIGM9ZCgpLGI9eT13LmNsb25lRG9jdW1lbnRFbGVtZW50KCk7aC5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKGIsInVybjp3ZWJvZGY6bmFtZXM6Y3Vyc29yIiwiY3Vyc29yIikuZm9yRWFjaChlKTsKaC5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKGIsInVybjp3ZWJvZGY6bmFtZXM6Y3Vyc29yIiwiYW5jaG9yIikuZm9yRWFjaChlKTtxKCk7dT14PWEoW3hdLmNvbmNhdCh0KSk7dC5sZW5ndGg9MDtBLmxlbmd0aD0wO2N8fCh2PXUuZ2V0TmV4dFN0YXRlSWQoKSk7cCgpO3IoYyl9dmFyIG09dGhpcyxoPWNvcmUuRG9tVXRpbHMseSx4LHosdyx2LHUsdD1bXSxBPVtdLEk9bmV3IGNvcmUuRXZlbnROb3RpZmllcihbZ3VpLlVuZG9NYW5hZ2VyLnNpZ25hbFVuZG9TdGFja0NoYW5nZWQsZ3VpLlVuZG9NYW5hZ2VyLnNpZ25hbFVuZG9TdGF0ZUNyZWF0ZWQsZ3VpLlVuZG9NYW5hZ2VyLnNpZ25hbFVuZG9TdGF0ZU1vZGlmaWVkLGd1aS5VbmRvTWFuYWdlci5zaWduYWxEb2N1bWVudE1vZGlmaWVkQ2hhbmdlZCxndWkuVHJpdmlhbFVuZG9NYW5hZ2VyLnNpZ25hbERvY3VtZW50Um9vdFJlcGxhY2VkXSksSz1ifHxuZXcgZ3VpLlVuZG9TdGF0ZVJ1bGVzLEw9ITE7dGhpcy5zdWJzY3JpYmU9ZnVuY3Rpb24oYSwKYyl7SS5zdWJzY3JpYmUoYSxjKX07dGhpcy51bnN1YnNjcmliZT1mdW5jdGlvbihhLGMpe0kudW5zdWJzY3JpYmUoYSxjKX07dGhpcy5pc0RvY3VtZW50TW9kaWZpZWQ9ZDt0aGlzLnNldERvY3VtZW50TW9kaWZpZWQ9ZnVuY3Rpb24oYSl7ZCgpIT09YSYmKHY9YT9uZXcgZzp1LmdldE5leHRTdGF0ZUlkKCksSS5lbWl0KGd1aS5VbmRvTWFuYWdlci5zaWduYWxEb2N1bWVudE1vZGlmaWVkQ2hhbmdlZCxhKSl9O3RoaXMuaGFzVW5kb1N0YXRlcz1mdW5jdGlvbigpe3JldHVybiAwPHQubGVuZ3RofTt0aGlzLmhhc1JlZG9TdGF0ZXM9ZnVuY3Rpb24oKXtyZXR1cm4gMDxBLmxlbmd0aH07dGhpcy5zZXREb2N1bWVudD1mdW5jdGlvbihhKXt3PWF9O3RoaXMucHVyZ2VJbml0aWFsU3RhdGU9ZnVuY3Rpb24oKXt2YXIgYT1kKCk7dC5sZW5ndGg9MDtBLmxlbmd0aD0wO3U9eD1uZXcgayhLKTt2PXUuZ2V0TmV4dFN0YXRlSWQoKTt5PW51bGw7cCgpO3IoYSl9O3RoaXMuc2V0SW5pdGlhbFN0YXRlPQpjO3RoaXMuaW5pdGlhbGl6ZT1mdW5jdGlvbigpe3l8fGMoKX07dGhpcy5zZXRQbGF5YmFja0Z1bmN0aW9uPWZ1bmN0aW9uKGEpe3o9YX07dGhpcy5vbk9wZXJhdGlvbkV4ZWN1dGVkPWZ1bmN0aW9uKGEpe2lmKCFMKXt2YXIgYz1kKCk7Sy5pc0VkaXRPcGVyYXRpb24oYSkmJih1PT09eHx8MDxBLmxlbmd0aCl8fCFLLmlzUGFydE9mT3BlcmF0aW9uU2V0KGEsdS5nZXRPcGVyYXRpb25zKCkpPyhBLmxlbmd0aD0wLHEoKSx1PW5ldyBrKEssW2FdLCEwKSx0LnB1c2godSksSS5lbWl0KGd1aS5VbmRvTWFuYWdlci5zaWduYWxVbmRvU3RhdGVDcmVhdGVkLHtvcGVyYXRpb25zOnUuZ2V0T3BlcmF0aW9ucygpfSkscCgpKToodS5hZGRPcGVyYXRpb24oYSksSS5lbWl0KGd1aS5VbmRvTWFuYWdlci5zaWduYWxVbmRvU3RhdGVNb2RpZmllZCx7b3BlcmF0aW9uczp1LmdldE9wZXJhdGlvbnMoKX0pKTtyKGMpfX07dGhpcy5tb3ZlRm9yd2FyZD1mdW5jdGlvbihhKXtmb3IodmFyIGM9MCxiPWQoKSwKZTthJiZBLmxlbmd0aDspZT1BLnBvcCgpLHQucHVzaChlKSxuKGUpLC0tYSxjKz0xO2MmJih1PXRbdC5sZW5ndGgtMV0scCgpLHIoYikpO3JldHVybiBjfTt0aGlzLm1vdmVCYWNrd2FyZD1mdW5jdGlvbihhKXtmb3IodmFyIGM9MCxiPWQoKTthJiZ0Lmxlbmd0aDspQS5wdXNoKHQucG9wKCkpLC0tYSxjKz0xO2MmJih3LmdldE1lbWJlcklkcygpLmZvckVhY2goZnVuY3Rpb24oYSl7dy5oYXNDdXJzb3IoYSkmJncucmVtb3ZlQ3Vyc29yKGEpfSksdy5zZXREb2N1bWVudEVsZW1lbnQoeS5jbG9uZU5vZGUoITApKSxJLmVtaXQoZ3VpLlRyaXZpYWxVbmRvTWFuYWdlci5zaWduYWxEb2N1bWVudFJvb3RSZXBsYWNlZCx7fSksbih4KSx0LmZvckVhY2gobiksdT10W3QubGVuZ3RoLTFdfHx4LHAoKSxyKGIpKTtyZXR1cm4gY307dT14PW5ldyBrKEspO3Y9dS5nZXROZXh0U3RhdGVJZCgpfTtndWkuVHJpdmlhbFVuZG9NYW5hZ2VyLnNpZ25hbERvY3VtZW50Um9vdFJlcGxhY2VkPSJkb2N1bWVudFJvb3RSZXBsYWNlZCJ9KSgpOwpvZGYuR3JhcGhpY1Byb3BlcnRpZXM9ZnVuY3Rpb24oZyxrLGQpe3ZhciBiPXRoaXMsZj1vZGYuTmFtZXNwYWNlcy5zdHlsZW5zLG49b2RmLk5hbWVzcGFjZXMuc3ZnbnM7dGhpcy52ZXJ0aWNhbFBvcz1mdW5jdGlvbigpe3JldHVybiBiLmRhdGEudmFsdWUoInZlcnRpY2FsUG9zIil9O3RoaXMudmVydGljYWxSZWw9ZnVuY3Rpb24oKXtyZXR1cm4gYi5kYXRhLnZhbHVlKCJ2ZXJ0aWNhbFJlbCIpfTt0aGlzLmhvcml6b250YWxQb3M9ZnVuY3Rpb24oKXtyZXR1cm4gYi5kYXRhLnZhbHVlKCJob3Jpem9udGFsUG9zIil9O3RoaXMuaG9yaXpvbnRhbFJlbD1mdW5jdGlvbigpe3JldHVybiBiLmRhdGEudmFsdWUoImhvcml6b250YWxSZWwiKX07dGhpcy5zdHJva2VXaWR0aD1mdW5jdGlvbigpe3JldHVybiBiLmRhdGEudmFsdWUoInN0cm9rZVdpZHRoIil9O2IuZGF0YT1uZXcgb2RmLkxhenlTdHlsZVByb3BlcnRpZXModm9pZCAwPT09ZD92b2lkIDA6ZC5kYXRhLHt2ZXJ0aWNhbFBvczpmdW5jdGlvbigpe3ZhciBiPQpnLmdldEF0dHJpYnV0ZU5TKGYsInZlcnRpY2FsLXBvcyIpO3JldHVybiIiPT09Yj92b2lkIDA6Yn0sdmVydGljYWxSZWw6ZnVuY3Rpb24oKXt2YXIgYj1nLmdldEF0dHJpYnV0ZU5TKGYsInZlcnRpY2FsLXJlbCIpO3JldHVybiIiPT09Yj92b2lkIDA6Yn0saG9yaXpvbnRhbFBvczpmdW5jdGlvbigpe3ZhciBiPWcuZ2V0QXR0cmlidXRlTlMoZiwiaG9yaXpvbnRhbC1wb3MiKTtyZXR1cm4iIj09PWI/dm9pZCAwOmJ9LGhvcml6b250YWxSZWw6ZnVuY3Rpb24oKXt2YXIgYj1nLmdldEF0dHJpYnV0ZU5TKGYsImhvcml6b250YWwtcmVsIik7cmV0dXJuIiI9PT1iP3ZvaWQgMDpifSxzdHJva2VXaWR0aDpmdW5jdGlvbigpe3ZhciBiPWcuZ2V0QXR0cmlidXRlTlMobiwic3Ryb2tlLXdpZHRoIik7cmV0dXJuIGsucGFyc2VMZW5ndGgoYil9fSl9OwpvZGYuQ29tcHV0ZWRHcmFwaGljUHJvcGVydGllcz1mdW5jdGlvbigpe3ZhciBnO3RoaXMuc2V0R3JhcGhpY1Byb3BlcnRpZXM9ZnVuY3Rpb24oayl7Zz1rfTt0aGlzLnZlcnRpY2FsUG9zPWZ1bmN0aW9uKCl7cmV0dXJuIGcmJmcudmVydGljYWxQb3MoKXx8ImZyb20tdG9wIn07dGhpcy52ZXJ0aWNhbFJlbD1mdW5jdGlvbigpe3JldHVybiBnJiZnLnZlcnRpY2FsUmVsKCl8fCJwYWdlIn07dGhpcy5ob3Jpem9udGFsUG9zPWZ1bmN0aW9uKCl7cmV0dXJuIGcmJmcuaG9yaXpvbnRhbFBvcygpfHwiZnJvbS1sZWZ0In07dGhpcy5ob3Jpem9udGFsUmVsPWZ1bmN0aW9uKCl7cmV0dXJuIGcmJmcuaG9yaXpvbnRhbFJlbCgpfHwicGFnZSJ9fTsKb2RmLlBhZ2VMYXlvdXRQcm9wZXJ0aWVzPWZ1bmN0aW9uKGcsayxkKXt2YXIgYj10aGlzLGY9b2RmLk5hbWVzcGFjZXMuZm9uczt0aGlzLnBhZ2VIZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gYi5kYXRhLnZhbHVlKCJwYWdlSGVpZ2h0Iil8fDExMjN9O3RoaXMucGFnZVdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuIGIuZGF0YS52YWx1ZSgicGFnZVdpZHRoIil8fDc5NH07Yi5kYXRhPW5ldyBvZGYuTGF6eVN0eWxlUHJvcGVydGllcyh2b2lkIDA9PT1kP3ZvaWQgMDpkLmRhdGEse3BhZ2VIZWlnaHQ6ZnVuY3Rpb24oKXt2YXIgYjtnJiYoYj1nLmdldEF0dHJpYnV0ZU5TKGYsInBhZ2UtaGVpZ2h0IiksYj1rLnBhcnNlTGVuZ3RoKGIpKTtyZXR1cm4gYn0scGFnZVdpZHRoOmZ1bmN0aW9uKCl7dmFyIGI7ZyYmKGI9Zy5nZXRBdHRyaWJ1dGVOUyhmLCJwYWdlLXdpZHRoIiksYj1rLnBhcnNlTGVuZ3RoKGIpKTtyZXR1cm4gYn19KX07Cm9kZi5QYWdlTGF5b3V0PWZ1bmN0aW9uKGcsayxkKXt2YXIgYj1udWxsO2cmJihiPWsuZ2V0UHJvcGVydGllc0VsZW1lbnQoInBhZ2UtbGF5b3V0LXByb3BlcnRpZXMiLGcpKTt0aGlzLnBhZ2VMYXlvdXQ9bmV3IG9kZi5QYWdlTGF5b3V0UHJvcGVydGllcyhiLGssZCYmZC5wYWdlTGF5b3V0KX07b2RmLlBhZ2VMYXlvdXRDYWNoZT1mdW5jdGlvbigpe307b2RmLlBhZ2VMYXlvdXRDYWNoZS5wcm90b3R5cGUuZ2V0UGFnZUxheW91dD1mdW5jdGlvbihnKXt9O29kZi5QYWdlTGF5b3V0Q2FjaGUucHJvdG90eXBlLmdldERlZmF1bHRQYWdlTGF5b3V0PWZ1bmN0aW9uKCl7fTsKb2RmLlBhcmFncmFwaFByb3BlcnRpZXM9ZnVuY3Rpb24oZyxrLGQpe3ZhciBiPXRoaXMsZj1vZGYuTmFtZXNwYWNlcy5mb25zO3RoaXMubWFyZ2luVG9wPWZ1bmN0aW9uKCl7cmV0dXJuIGIuZGF0YS52YWx1ZSgibWFyZ2luVG9wIil9O2IuZGF0YT1uZXcgb2RmLkxhenlTdHlsZVByb3BlcnRpZXModm9pZCAwPT09ZD92b2lkIDA6ZC5kYXRhLHttYXJnaW5Ub3A6ZnVuY3Rpb24oKXt2YXIgYj1nLmdldEF0dHJpYnV0ZU5TKGYsIm1hcmdpbi10b3AiKTtyZXR1cm4gay5wYXJzZVBvc2l0aXZlTGVuZ3RoT3JQZXJjZW50KGIsIm1hcmdpblRvcCIsZCYmZC5kYXRhKX19KX07Cm9kZi5Db21wdXRlZFBhcmFncmFwaFByb3BlcnRpZXM9ZnVuY3Rpb24oKXt2YXIgZz17fSxrPVtdO3RoaXMuc2V0U3R5bGVDaGFpbj1mdW5jdGlvbihkKXtrPWQ7Zz17fX07dGhpcy5tYXJnaW5Ub3A9ZnVuY3Rpb24oKXt2YXIgZCxiO2lmKGcuaGFzT3duUHJvcGVydHkoIm1hcmdpblRvcCIpKWQ9Zy5tYXJnaW5Ub3A7ZWxzZXtmb3IoYj0wO3ZvaWQgMD09PWQmJmI8ay5sZW5ndGg7Yis9MSlkPWtbYl0ubWFyZ2luVG9wKCk7Zy5tYXJnaW5Ub3A9ZH1yZXR1cm4gZHx8MH19OwpvZGYuVGV4dFByb3BlcnRpZXM9ZnVuY3Rpb24oZyxrLGQpe3ZhciBiPXRoaXMsZj1vZGYuTmFtZXNwYWNlcy5mb25zO3RoaXMuZm9udFNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gYi5kYXRhLnZhbHVlKCJmb250U2l6ZSIpfTtiLmRhdGE9bmV3IG9kZi5MYXp5U3R5bGVQcm9wZXJ0aWVzKHZvaWQgMD09PWQ/dm9pZCAwOmQuZGF0YSx7Zm9udFNpemU6ZnVuY3Rpb24oKXt2YXIgYj1nLmdldEF0dHJpYnV0ZU5TKGYsImZvbnQtc2l6ZSIpO3JldHVybiBrLnBhcnNlUG9zaXRpdmVMZW5ndGhPclBlcmNlbnQoYiwiZm9udFNpemUiLGQmJmQuZGF0YSl9fSl9OwpvZGYuQ29tcHV0ZWRUZXh0UHJvcGVydGllcz1mdW5jdGlvbigpe3ZhciBnPXt9LGs9W107dGhpcy5zZXRTdHlsZUNoYWluPWZ1bmN0aW9uKGQpe2s9ZDtnPXt9fTt0aGlzLmZvbnRTaXplPWZ1bmN0aW9uKCl7dmFyIGQsYjtpZihnLmhhc093blByb3BlcnR5KCJmb250U2l6ZSIpKWQ9Zy5mb250U2l6ZTtlbHNle2ZvcihiPTA7dm9pZCAwPT09ZCYmYjxrLmxlbmd0aDtiKz0xKWQ9a1tiXS5mb250U2l6ZSgpO2cuZm9udFNpemU9ZH1yZXR1cm4gZHx8MTJ9fTtvZGYuTWFzdGVyUGFnZT1mdW5jdGlvbihnLGspe3ZhciBkO2c/KGQ9Zy5nZXRBdHRyaWJ1dGVOUyhvZGYuTmFtZXNwYWNlcy5zdHlsZW5zLCJwYWdlLWxheW91dC1uYW1lIiksdGhpcy5wYWdlTGF5b3V0PWsuZ2V0UGFnZUxheW91dChkKSk6dGhpcy5wYWdlTGF5b3V0PWsuZ2V0RGVmYXVsdFBhZ2VMYXlvdXQoKX07b2RmLk1hc3RlclBhZ2VDYWNoZT1mdW5jdGlvbigpe307Cm9kZi5NYXN0ZXJQYWdlQ2FjaGUucHJvdG90eXBlLmdldE1hc3RlclBhZ2U9ZnVuY3Rpb24oZyl7fTsKb2RmLlN0eWxlUGlsZUVudHJ5PWZ1bmN0aW9uKGcsayxkLGIpe3RoaXMubWFzdGVyUGFnZT1mdW5jdGlvbigpe3ZhciBiPWcuZ2V0QXR0cmlidXRlTlMob2RmLk5hbWVzcGFjZXMuc3R5bGVucywibWFzdGVyLXBhZ2UtbmFtZSIpLGs9bnVsbDtiJiYoaz1kLmdldE1hc3RlclBhZ2UoYikpO3JldHVybiBrfTsoZnVuY3Rpb24oZCl7dmFyIG49Zy5nZXRBdHRyaWJ1dGVOUyhvZGYuTmFtZXNwYWNlcy5zdHlsZW5zLCJmYW1pbHkiKSxwPW51bGw7aWYoImdyYXBoaWMiPT09bnx8ImNoYXJ0Ij09PW4pZC5ncmFwaGljPXZvaWQgMD09PWI/dm9pZCAwOmIuZ3JhcGhpYyxwPWsuZ2V0UHJvcGVydGllc0VsZW1lbnQoImdyYXBoaWMtcHJvcGVydGllcyIsZyxwKSxudWxsIT09cCYmKGQuZ3JhcGhpYz1uZXcgb2RmLkdyYXBoaWNQcm9wZXJ0aWVzKHAsayxkLmdyYXBoaWMpKTtpZigicGFyYWdyYXBoIj09PW58fCJ0YWJsZS1jZWxsIj09PW58fCJncmFwaGljIj09PW58fCJwcmVzZW50YXRpb24iPT09Cm58fCJjaGFydCI9PT1uKWQucGFyYWdyYXBoPXZvaWQgMD09PWI/dm9pZCAwOmIucGFyYWdyYXBoLHA9ay5nZXRQcm9wZXJ0aWVzRWxlbWVudCgicGFyYWdyYXBoLXByb3BlcnRpZXMiLGcscCksbnVsbCE9PXAmJihkLnBhcmFncmFwaD1uZXcgb2RmLlBhcmFncmFwaFByb3BlcnRpZXMocCxrLGQucGFyYWdyYXBoKSk7aWYoInRleHQiPT09bnx8InBhcmFncmFwaCI9PT1ufHwidGFibGUtY2VsbCI9PT1ufHwiZ3JhcGhpYyI9PT1ufHwicHJlc2VudGF0aW9uIj09PW58fCJjaGFydCI9PT1uKWQudGV4dD12b2lkIDA9PT1iP3ZvaWQgMDpiLnRleHQscD1rLmdldFByb3BlcnRpZXNFbGVtZW50KCJ0ZXh0LXByb3BlcnRpZXMiLGcscCksbnVsbCE9PXAmJihkLnRleHQ9bmV3IG9kZi5UZXh0UHJvcGVydGllcyhwLGssZC50ZXh0KSl9KSh0aGlzKX07Cm9kZi5TdHlsZVBpbGU9ZnVuY3Rpb24oZyxrKXtmdW5jdGlvbiBkKGQsYSl7dmFyIGMsZjtkLmhhc0F0dHJpYnV0ZU5TKGIsInBhcmVudC1zdHlsZS1uYW1lIikmJihmPWQuZ2V0QXR0cmlidXRlTlMoYiwicGFyZW50LXN0eWxlLW5hbWUiKSwtMT09PWEuaW5kZXhPZihmKSYmKGM9ZShmLGEpKSk7cmV0dXJuIG5ldyBvZGYuU3R5bGVQaWxlRW50cnkoZCxnLGssYyl9dmFyIGI9b2RmLk5hbWVzcGFjZXMuc3R5bGVucyxmPXt9LG49e30scCxyPXt9LHE9e30sZTtlPWZ1bmN0aW9uKGIsYSl7dmFyIGM9cltiXSxlOyFjJiYoZT1mW2JdKSYmKGEucHVzaChiKSxjPWQoZSxhKSxyW2JdPWMpO3JldHVybiBjfTt0aGlzLmdldFN0eWxlPWZ1bmN0aW9uKGIpe3ZhciBhPXFbYl18fHJbYl0sYyxlPVtdO2F8fChjPW5bYl0sY3x8KGM9ZltiXSkmJmUucHVzaChiKSxjJiYoYT1kKGMsZSkpKTtyZXR1cm4gYX07dGhpcy5hZGRDb21tb25TdHlsZT1mdW5jdGlvbihkKXt2YXIgYTtkLmhhc0F0dHJpYnV0ZU5TKGIsCiJuYW1lIikmJihhPWQuZ2V0QXR0cmlidXRlTlMoYiwibmFtZSIpLGYuaGFzT3duUHJvcGVydHkoYSl8fChmW2FdPWQpKX07dGhpcy5hZGRBdXRvbWF0aWNTdHlsZT1mdW5jdGlvbihkKXt2YXIgYTtkLmhhc0F0dHJpYnV0ZU5TKGIsIm5hbWUiKSYmKGE9ZC5nZXRBdHRyaWJ1dGVOUyhiLCJuYW1lIiksbi5oYXNPd25Qcm9wZXJ0eShhKXx8KG5bYV09ZCkpfTt0aGlzLnNldERlZmF1bHRTdHlsZT1mdW5jdGlvbihiKXt2b2lkIDA9PT1wJiYocD1kKGIsW10pKX07dGhpcy5nZXREZWZhdWx0U3R5bGU9ZnVuY3Rpb24oKXtyZXR1cm4gcH19O29kZi5Db21wdXRlZEdyYXBoaWNTdHlsZT1mdW5jdGlvbigpe3RoaXMudGV4dD1uZXcgb2RmLkNvbXB1dGVkVGV4dFByb3BlcnRpZXM7dGhpcy5wYXJhZ3JhcGg9bmV3IG9kZi5Db21wdXRlZFBhcmFncmFwaFByb3BlcnRpZXM7dGhpcy5ncmFwaGljPW5ldyBvZGYuQ29tcHV0ZWRHcmFwaGljUHJvcGVydGllc307Cm9kZi5Db21wdXRlZFBhcmFncmFwaFN0eWxlPWZ1bmN0aW9uKCl7dGhpcy50ZXh0PW5ldyBvZGYuQ29tcHV0ZWRUZXh0UHJvcGVydGllczt0aGlzLnBhcmFncmFwaD1uZXcgb2RmLkNvbXB1dGVkUGFyYWdyYXBoUHJvcGVydGllc307b2RmLkNvbXB1dGVkVGV4dFN0eWxlPWZ1bmN0aW9uKCl7dGhpcy50ZXh0PW5ldyBvZGYuQ29tcHV0ZWRUZXh0UHJvcGVydGllc307Cm9kZi5TdHlsZUNhY2hlPWZ1bmN0aW9uKGcpe2Z1bmN0aW9uIGsoYSxjLGIsZCl7Yz1iLmdldEF0dHJpYnV0ZU5TKGMsImNsYXNzLW5hbWVzIik7dmFyIGU7aWYoYylmb3IoYz1jLnNwbGl0KCIgIiksZT0wO2U8Yy5sZW5ndGg7ZSs9MSlpZihiPWNbZV0pZC5wdXNoKGEpLGQucHVzaChiKX1mdW5jdGlvbiBkKGEsYyl7dmFyIGI9eC5nZXRTdHlsZU5hbWUoInBhcmFncmFwaCIsYSk7dm9pZCAwIT09YiYmKGMucHVzaCgicGFyYWdyYXBoIiksYy5wdXNoKGIpKTthLm5hbWVzcGFjZVVSSSE9PWh8fCJoIiE9PWEubG9jYWxOYW1lJiYicCIhPT1hLmxvY2FsTmFtZXx8aygicGFyYWdyYXBoIixoLGEsYyk7cmV0dXJuIGN9ZnVuY3Rpb24gYihhLGMsYil7dmFyIGQ9W10sZSxoLGYsZztmb3IoZT0wO2U8YS5sZW5ndGg7ZSs9MilmPWFbZV0sZz1hW2UrMV0sZj1yW2ZdLGc9Zi5nZXRTdHlsZShnKSx2b2lkIDAhPT1nJiYoZz1nW2NdLHZvaWQgMCE9PWcmJmchPT1oJiYoZC5wdXNoKGcpLGg9ZykpOwpmPXJbYl07aWYoZz1mLmdldERlZmF1bHRTdHlsZSgpKWc9Z1tjXSx2b2lkIDAhPT1nJiZnIT09aCYmZC5wdXNoKGcpO3JldHVybiBkfWZ1bmN0aW9uIGYoYSxjKXt2YXIgYj14LmdldFN0eWxlTmFtZSgidGV4dCIsYSksZT1hLnBhcmVudE5vZGU7dm9pZCAwIT09YiYmKGMucHVzaCgidGV4dCIpLGMucHVzaChiKSk7InNwYW4iPT09YS5sb2NhbE5hbWUmJmEubmFtZXNwYWNlVVJJPT09aCYmaygidGV4dCIsaCxhLGMpO2lmKCFlfHxlPT09ZylyZXR1cm4gYztlLm5hbWVzcGFjZVVSSSE9PWh8fCJwIiE9PWUubG9jYWxOYW1lJiYiaCIhPT1lLmxvY2FsTmFtZT9mKGUsYyk6ZChlLGMpO3JldHVybiBjfWZ1bmN0aW9uIG4oYSl7YT1hLmdldEF0dHJpYnV0ZU5TKHksImZhbWlseSIpO3JldHVybiByW2FdfXZhciBwPXRoaXMscixxLGUsbCxhLGMsbSxoPW9kZi5OYW1lc3BhY2VzLnRleHRucyx5PW9kZi5OYW1lc3BhY2VzLnN0eWxlbnMseD1uZXcgb2RmLlN0eWxlSW5mbyx6PW5ldyBvZGYuU3R5bGVQYXJzZVV0aWxzLAp3LHYsdSx0LEEsSTt0aGlzLmdldENvbXB1dGVkR3JhcGhpY1N0eWxlPWZ1bmN0aW9uKGEpe3ZhciBjPVtdO2E9eC5nZXRTdHlsZU5hbWUoImdyYXBoaWMiLGEpO3ZvaWQgMCE9PWEmJihjLnB1c2goImdyYXBoaWMiKSxjLnB1c2goYSkpO2E9Yy5qb2luKCIvIik7dmFyIGQ9bFthXTtydW50aW1lLmFzc2VydCgwPT09Yy5sZW5ndGglMiwiSW52YWxpZCBzdHlsZSBjaGFpbi4iKTt2b2lkIDA9PT1kJiYoZD1uZXcgb2RmLkNvbXB1dGVkR3JhcGhpY1N0eWxlLGQuZ3JhcGhpYy5zZXRHcmFwaGljUHJvcGVydGllcyhiKGMsImdyYXBoaWMiLCJncmFwaGljIilbMF0pLGQudGV4dC5zZXRTdHlsZUNoYWluKGIoYywidGV4dCIsImdyYXBoaWMiKSksZC5wYXJhZ3JhcGguc2V0U3R5bGVDaGFpbihiKGMsInBhcmFncmFwaCIsImdyYXBoaWMiKSksbFthXT1kKTtyZXR1cm4gZH07dGhpcy5nZXRDb21wdXRlZFBhcmFncmFwaFN0eWxlPWZ1bmN0aW9uKGEpe2E9ZChhLFtdKTt2YXIgYz1hLmpvaW4oIi8iKSwKZj1lW2NdO3J1bnRpbWUuYXNzZXJ0KDA9PT1hLmxlbmd0aCUyLCJJbnZhbGlkIHN0eWxlIGNoYWluLiIpO3ZvaWQgMD09PWYmJihmPW5ldyBvZGYuQ29tcHV0ZWRQYXJhZ3JhcGhTdHlsZSxmLnRleHQuc2V0U3R5bGVDaGFpbihiKGEsInRleHQiLCJwYXJhZ3JhcGgiKSksZi5wYXJhZ3JhcGguc2V0U3R5bGVDaGFpbihiKGEsInBhcmFncmFwaCIsInBhcmFncmFwaCIpKSxlW2NdPWYpO3JldHVybiBmfTt0aGlzLmdldENvbXB1dGVkVGV4dFN0eWxlPWZ1bmN0aW9uKGEpe2E9ZihhLFtdKTt2YXIgYz1hLmpvaW4oIi8iKSxkPXFbY107cnVudGltZS5hc3NlcnQoMD09PWEubGVuZ3RoJTIsIkludmFsaWQgc3R5bGUgY2hhaW4uIik7dm9pZCAwPT09ZCYmKGQ9bmV3IG9kZi5Db21wdXRlZFRleHRTdHlsZSxkLnRleHQuc2V0U3R5bGVDaGFpbihiKGEsInRleHQiLCJ0ZXh0IikpLHFbY109ZCk7cmV0dXJuIGR9O3RoaXMuZ2V0UGFnZUxheW91dD1mdW5jdGlvbihhKXt2YXIgYz1JW2FdO2N8fCgoYz0KQVthXSk/KGM9bmV3IG9kZi5QYWdlTGF5b3V0KGMseix0KSxJW2FdPWMpOmM9dCk7cmV0dXJuIGN9O3RoaXMuZ2V0RGVmYXVsdFBhZ2VMYXlvdXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdH07dGhpcy5nZXRNYXN0ZXJQYWdlPWZ1bmN0aW9uKGEpe3ZhciBjPXZbYV07dm9pZCAwPT09YyYmKChjPXdbYV0pPyhjPW5ldyBvZGYuTWFzdGVyUGFnZShjLHApLHZbYV09Yyk6Yz1udWxsKTtyZXR1cm4gY307dGhpcy5nZXREZWZhdWx0TWFzdGVyUGFnZT1mdW5jdGlvbigpe3JldHVybiB1fTt0aGlzLnVwZGF0ZT1mdW5jdGlvbigpe3ZhciBiLGQsZj1udWxsLGg9bnVsbDtxPXt9O2U9e307bD17fTt3PXt9O3Y9e307ST17fTtBPXt9O2E9bmV3IG9kZi5TdHlsZVBpbGUoeixwKTtjPW5ldyBvZGYuU3R5bGVQaWxlKHoscCk7bT1uZXcgb2RmLlN0eWxlUGlsZSh6LHApO3I9e3RleHQ6YSxwYXJhZ3JhcGg6YyxncmFwaGljOm19O2ZvcihiPWcuc3R5bGVzLmZpcnN0RWxlbWVudENoaWxkO2I7KWIubmFtZXNwYWNlVVJJPT09CnkmJigoZD1uKGIpKT8ic3R5bGUiPT09Yi5sb2NhbE5hbWU/ZC5hZGRDb21tb25TdHlsZShiKToiZGVmYXVsdC1zdHlsZSI9PT1iLmxvY2FsTmFtZSYmZC5zZXREZWZhdWx0U3R5bGUoYik6ImRlZmF1bHQtcGFnZS1sYXlvdXQiPT09Yi5sb2NhbE5hbWUmJihmPWIpKSxiPWIubmV4dEVsZW1lbnRTaWJsaW5nO3Q9bmV3IG9kZi5QYWdlTGF5b3V0KGYseik7Zm9yKGI9Zy5hdXRvbWF0aWNTdHlsZXMuZmlyc3RFbGVtZW50Q2hpbGQ7YjspYi5uYW1lc3BhY2VVUkk9PT15JiYoKGQ9bihiKSkmJiJzdHlsZSI9PT1iLmxvY2FsTmFtZT9kLmFkZEF1dG9tYXRpY1N0eWxlKGIpOiJwYWdlLWxheW91dCI9PT1iLmxvY2FsTmFtZSYmKEFbYi5nZXRBdHRyaWJ1dGVOUyh5LCJuYW1lIildPWIpKSxiPWIubmV4dEVsZW1lbnRTaWJsaW5nO2ZvcihiPWcubWFzdGVyU3R5bGVzLmZpcnN0RWxlbWVudENoaWxkO2I7KWIubmFtZXNwYWNlVVJJPT09eSYmIm1hc3Rlci1wYWdlIj09PWIubG9jYWxOYW1lJiYoaD0KaHx8YixkPWIsZj1kLmdldEF0dHJpYnV0ZU5TKHksIm5hbWUiKSwwPGYubGVuZ3RoJiYhdy5oYXNPd25Qcm9wZXJ0eShmKSYmKHdbZl09ZCkpLGI9Yi5uZXh0RWxlbWVudFNpYmxpbmc7dT1uZXcgb2RmLk1hc3RlclBhZ2UoaCxwKX19OwpvcHMuT3BlcmF0aW9uVHJhbnNmb3JtTWF0cml4PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZyhhKXthLnBvc2l0aW9uKz1hLmxlbmd0aDthLmxlbmd0aCo9LTF9ZnVuY3Rpb24gayhhKXt2YXIgYz0wPmEubGVuZ3RoO2MmJmcoYSk7cmV0dXJuIGN9ZnVuY3Rpb24gZChhLGMpe2Z1bmN0aW9uIGIoZSl7YVtlXT09PWMmJmQucHVzaChlKX12YXIgZD1bXTthJiZbInN0eWxlOnBhcmVudC1zdHlsZS1uYW1lIiwic3R5bGU6bmV4dC1zdHlsZS1uYW1lIl0uZm9yRWFjaChiKTtyZXR1cm4gZH1mdW5jdGlvbiBiKGEsYyl7ZnVuY3Rpb24gYihkKXthW2RdPT09YyYmZGVsZXRlIGFbZF19YSYmWyJzdHlsZTpwYXJlbnQtc3R5bGUtbmFtZSIsInN0eWxlOm5leHQtc3R5bGUtbmFtZSJdLmZvckVhY2goYil9ZnVuY3Rpb24gZihhKXt2YXIgYz17fTtPYmplY3Qua2V5cyhhKS5mb3JFYWNoKGZ1bmN0aW9uKGIpe2NbYl09Im9iamVjdCI9PT10eXBlb2YgYVtiXT9mKGFbYl0pOmFbYl19KTtyZXR1cm4gY31mdW5jdGlvbiBuKGEsCmMsYixkKXt2YXIgZSxmPSExLGc9ITEsayxsPVtdO2QmJmQuYXR0cmlidXRlcyYmKGw9ZC5hdHRyaWJ1dGVzLnNwbGl0KCIsIikpO2EmJihifHwwPGwubGVuZ3RoKSYmT2JqZWN0LmtleXMoYSkuZm9yRWFjaChmdW5jdGlvbihjKXt2YXIgZD1hW2NdLGU7Im9iamVjdCIhPT10eXBlb2YgZCYmKGImJihlPWJbY10pLHZvaWQgMCE9PWU/KGRlbGV0ZSBhW2NdLGc9ITAsZT09PWQmJihkZWxldGUgYltjXSxmPSEwKSk6LTEhPT1sLmluZGV4T2YoYykmJihkZWxldGUgYVtjXSxnPSEwKSl9KTtpZihjJiZjLmF0dHJpYnV0ZXMmJihifHwwPGwubGVuZ3RoKSl7az1jLmF0dHJpYnV0ZXMuc3BsaXQoIiwiKTtmb3IoZD0wO2Q8ay5sZW5ndGg7ZCs9MSlpZihlPWtbZF0sYiYmdm9pZCAwIT09YltlXXx8bCYmLTEhPT1sLmluZGV4T2YoZSkpay5zcGxpY2UoZCwxKSwtLWQsZz0hMDswPGsubGVuZ3RoP2MuYXR0cmlidXRlcz1rLmpvaW4oIiwiKTpkZWxldGUgYy5hdHRyaWJ1dGVzfXJldHVybnttYWpvckNoYW5nZWQ6ZiwKbWlub3JDaGFuZ2VkOmd9fWZ1bmN0aW9uIHAoYSl7Zm9yKHZhciBjIGluIGEpaWYoYS5oYXNPd25Qcm9wZXJ0eShjKSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiByKGEpe2Zvcih2YXIgYyBpbiBhKWlmKGEuaGFzT3duUHJvcGVydHkoYykmJigiYXR0cmlidXRlcyIhPT1jfHwwPGEuYXR0cmlidXRlcy5sZW5ndGgpKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIHEoYSxjLGIsZCxlKXt2YXIgZj1hP2FbZV06bnVsbCxnPWM/Y1tlXTpudWxsLGs9Yj9iW2VdOm51bGwsbD1kP2RbZV06bnVsbCxxO3E9bihmLGcsayxsKTtmJiYhcChmKSYmZGVsZXRlIGFbZV07ZyYmIXIoZykmJmRlbGV0ZSBjW2VdO2smJiFwKGspJiZkZWxldGUgYltlXTtsJiYhcihsKSYmZGVsZXRlIGRbZV07cmV0dXJuIHF9ZnVuY3Rpb24gZShhLGMpe3JldHVybntvcFNwZWNzQTpbYV0sb3BTcGVjc0I6W2NdfX12YXIgbDtsPXtBZGRBbm5vdGF0aW9uOntBZGRBbm5vdGF0aW9uOmZ1bmN0aW9uKGEsYyxiKXt2YXIgZDsKYS5wb3NpdGlvbjxjLnBvc2l0aW9uPyhkPWEsYj1jKTpjLnBvc2l0aW9uPGEucG9zaXRpb24/KGQ9YyxiPWEpOihkPWI/YTpjLGI9Yj9jOmEpO2IucG9zaXRpb248ZC5wb3NpdGlvbitkLmxlbmd0aCYmKGQubGVuZ3RoKz0yKTtiLnBvc2l0aW9uKz0yO3JldHVybntvcFNwZWNzQTpbYV0sb3BTcGVjc0I6W2NdfX0sQWRkQ3Vyc29yOmUsQWRkTWVtYmVyOmUsQWRkU3R5bGU6ZSxBcHBseURpcmVjdFN0eWxpbmc6ZnVuY3Rpb24oYSxjKXthLnBvc2l0aW9uPD1jLnBvc2l0aW9uP2MucG9zaXRpb24rPTI6YS5wb3NpdGlvbjw9Yy5wb3NpdGlvbitjLmxlbmd0aCYmKGMubGVuZ3RoKz0yKTtyZXR1cm57b3BTcGVjc0E6W2FdLG9wU3BlY3NCOltjXX19LEluc2VydFRleHQ6ZnVuY3Rpb24oYSxjKXtjLnBvc2l0aW9uPD1hLnBvc2l0aW9uP2EucG9zaXRpb24rPWMudGV4dC5sZW5ndGg6KHZvaWQgMCE9PWEubGVuZ3RoJiZjLnBvc2l0aW9uPD1hLnBvc2l0aW9uK2EubGVuZ3RoJiYoYS5sZW5ndGgrPQpjLnRleHQubGVuZ3RoKSxjLnBvc2l0aW9uKz0yKTtyZXR1cm57b3BTcGVjc0E6W2FdLG9wU3BlY3NCOltjXX19LE1lcmdlUGFyYWdyYXBoOmZ1bmN0aW9uKGEsYyl7Yy5zb3VyY2VTdGFydFBvc2l0aW9uPD1hLnBvc2l0aW9uPy0tYS5wb3NpdGlvbjoodm9pZCAwIT09YS5sZW5ndGgmJmMuc291cmNlU3RhcnRQb3NpdGlvbjw9YS5wb3NpdGlvbithLmxlbmd0aCYmLS1hLmxlbmd0aCxjLnNvdXJjZVN0YXJ0UG9zaXRpb24rPTIsYS5wb3NpdGlvbjxjLmRlc3RpbmF0aW9uU3RhcnRQb3NpdGlvbiYmKGMuZGVzdGluYXRpb25TdGFydFBvc2l0aW9uKz0yKSk7cmV0dXJue29wU3BlY3NBOlthXSxvcFNwZWNzQjpbY119fSxNb3ZlQ3Vyc29yOmZ1bmN0aW9uKGEsYyl7dmFyIGI9ayhjKTthLnBvc2l0aW9uPGMucG9zaXRpb24/Yy5wb3NpdGlvbis9MjphLnBvc2l0aW9uPGMucG9zaXRpb24rYy5sZW5ndGgmJihjLmxlbmd0aCs9Mik7YiYmZyhjKTtyZXR1cm57b3BTcGVjc0E6W2FdLG9wU3BlY3NCOltjXX19LApSZW1vdmVBbm5vdGF0aW9uOmZ1bmN0aW9uKGEsYyl7YS5wb3NpdGlvbjxjLnBvc2l0aW9uPyhjLnBvc2l0aW9uPGEucG9zaXRpb24rYS5sZW5ndGgmJihhLmxlbmd0aC09Yy5sZW5ndGgrMiksYy5wb3NpdGlvbis9Mik6YS5wb3NpdGlvbi09Yy5sZW5ndGgrMjtyZXR1cm57b3BTcGVjc0E6W2FdLG9wU3BlY3NCOltjXX19LFJlbW92ZUN1cnNvcjplLFJlbW92ZU1lbWJlcjplLFJlbW92ZVN0eWxlOmUsUmVtb3ZlVGV4dDpmdW5jdGlvbihhLGMpe3ZhciBiPWMucG9zaXRpb24sZD1jLnBvc2l0aW9uK2MubGVuZ3RoLGUsZj1bYV0sZz1bY107YS5wb3NpdGlvbjw9Yy5wb3NpdGlvbj9jLnBvc2l0aW9uKz0yOmEucG9zaXRpb248ZCYmKGMubGVuZ3RoPWEucG9zaXRpb24tYy5wb3NpdGlvbixlPXtvcHR5cGU6IlJlbW92ZVRleHQiLG1lbWJlcmlkOmMubWVtYmVyaWQsdGltZXN0YW1wOmMudGltZXN0YW1wLHBvc2l0aW9uOmEucG9zaXRpb24rMixsZW5ndGg6ZC1hLnBvc2l0aW9ufSxnLnVuc2hpZnQoZSkpOwpjLnBvc2l0aW9uK2MubGVuZ3RoPD1hLnBvc2l0aW9uPyhhLnBvc2l0aW9uLT1jLmxlbmd0aCx2b2lkIDAhPT1hLmxlbmd0aCYmZSYmKGEubGVuZ3RoPWUubGVuZ3RoPj1hLmxlbmd0aD8wOmEubGVuZ3RoLWUubGVuZ3RoKSk6dm9pZCAwIT09YS5sZW5ndGgmJihlPWEucG9zaXRpb24rYS5sZW5ndGgsZDw9ZT9hLmxlbmd0aC09Yy5sZW5ndGg6YjxlJiYoYS5sZW5ndGg9Yi1hLnBvc2l0aW9uKSk7cmV0dXJue29wU3BlY3NBOmYsb3BTcGVjc0I6Z319LFNldFBhcmFncmFwaFN0eWxlOmZ1bmN0aW9uKGEsYyl7YS5wb3NpdGlvbjxjLnBvc2l0aW9uJiYoYy5wb3NpdGlvbis9Mik7cmV0dXJue29wU3BlY3NBOlthXSxvcFNwZWNzQjpbY119fSxTcGxpdFBhcmFncmFwaDpmdW5jdGlvbihhLGMpe2EucG9zaXRpb248Yy5zb3VyY2VQYXJhZ3JhcGhQb3NpdGlvbiYmKGMuc291cmNlUGFyYWdyYXBoUG9zaXRpb24rPTIpO2MucG9zaXRpb248PWEucG9zaXRpb24/YS5wb3NpdGlvbis9MToodm9pZCAwIT09CmEubGVuZ3RoJiZjLnBvc2l0aW9uPD1hLnBvc2l0aW9uK2EubGVuZ3RoJiYoYS5sZW5ndGgrPTEpLGMucG9zaXRpb24rPTIpO3JldHVybntvcFNwZWNzQTpbYV0sb3BTcGVjc0I6W2NdfX0sVXBkYXRlTWVtYmVyOmUsVXBkYXRlTWV0YWRhdGE6ZSxVcGRhdGVQYXJhZ3JhcGhTdHlsZTplfSxBZGRDdXJzb3I6e0FkZEN1cnNvcjplLEFkZE1lbWJlcjplLEFkZFN0eWxlOmUsQXBwbHlEaXJlY3RTdHlsaW5nOmUsSW5zZXJ0VGV4dDplLE1lcmdlUGFyYWdyYXBoOmUsTW92ZUN1cnNvcjplLFJlbW92ZUFubm90YXRpb246ZSxSZW1vdmVDdXJzb3I6ZSxSZW1vdmVNZW1iZXI6ZSxSZW1vdmVTdHlsZTplLFJlbW92ZVRleHQ6ZSxTZXRQYXJhZ3JhcGhTdHlsZTplLFNwbGl0UGFyYWdyYXBoOmUsVXBkYXRlTWVtYmVyOmUsVXBkYXRlTWV0YWRhdGE6ZSxVcGRhdGVQYXJhZ3JhcGhTdHlsZTplfSxBZGRNZW1iZXI6e0FkZFN0eWxlOmUsQXBwbHlEaXJlY3RTdHlsaW5nOmUsSW5zZXJ0VGV4dDplLE1lcmdlUGFyYWdyYXBoOmUsCk1vdmVDdXJzb3I6ZSxSZW1vdmVBbm5vdGF0aW9uOmUsUmVtb3ZlQ3Vyc29yOmUsUmVtb3ZlU3R5bGU6ZSxSZW1vdmVUZXh0OmUsU2V0UGFyYWdyYXBoU3R5bGU6ZSxTcGxpdFBhcmFncmFwaDplLFVwZGF0ZU1ldGFkYXRhOmUsVXBkYXRlUGFyYWdyYXBoU3R5bGU6ZX0sQWRkU3R5bGU6e0FkZFN0eWxlOmUsQXBwbHlEaXJlY3RTdHlsaW5nOmUsSW5zZXJ0VGV4dDplLE1lcmdlUGFyYWdyYXBoOmUsTW92ZUN1cnNvcjplLFJlbW92ZUFubm90YXRpb246ZSxSZW1vdmVDdXJzb3I6ZSxSZW1vdmVNZW1iZXI6ZSxSZW1vdmVTdHlsZTpmdW5jdGlvbihhLGMpe3ZhciBlLGY9W2FdLGc9W2NdO2Euc3R5bGVGYW1pbHk9PT1jLnN0eWxlRmFtaWx5JiYoZT1kKGEuc2V0UHJvcGVydGllcyxjLnN0eWxlTmFtZSksMDxlLmxlbmd0aCYmKGU9e29wdHlwZToiVXBkYXRlUGFyYWdyYXBoU3R5bGUiLG1lbWJlcmlkOmMubWVtYmVyaWQsdGltZXN0YW1wOmMudGltZXN0YW1wLHN0eWxlTmFtZTphLnN0eWxlTmFtZSwKcmVtb3ZlZFByb3BlcnRpZXM6e2F0dHJpYnV0ZXM6ZS5qb2luKCIsIil9fSxnLnVuc2hpZnQoZSkpLGIoYS5zZXRQcm9wZXJ0aWVzLGMuc3R5bGVOYW1lKSk7cmV0dXJue29wU3BlY3NBOmYsb3BTcGVjc0I6Z319LFJlbW92ZVRleHQ6ZSxTZXRQYXJhZ3JhcGhTdHlsZTplLFNwbGl0UGFyYWdyYXBoOmUsVXBkYXRlTWVtYmVyOmUsVXBkYXRlTWV0YWRhdGE6ZSxVcGRhdGVQYXJhZ3JhcGhTdHlsZTplfSxBcHBseURpcmVjdFN0eWxpbmc6e0FwcGx5RGlyZWN0U3R5bGluZzpmdW5jdGlvbihhLGMsYil7dmFyIGQsZSxnLGssbCxuLHIsdDtrPVthXTtnPVtjXTtpZighKGEucG9zaXRpb24rYS5sZW5ndGg8PWMucG9zaXRpb258fGEucG9zaXRpb24+PWMucG9zaXRpb24rYy5sZW5ndGgpKXtkPWI/YTpjO2U9Yj9jOmE7aWYoYS5wb3NpdGlvbiE9PWMucG9zaXRpb258fGEubGVuZ3RoIT09Yy5sZW5ndGgpbj1mKGQpLHI9ZihlKTtjPXEoZS5zZXRQcm9wZXJ0aWVzLG51bGwsZC5zZXRQcm9wZXJ0aWVzLApudWxsLCJzdHlsZTp0ZXh0LXByb3BlcnRpZXMiKTtpZihjLm1ham9yQ2hhbmdlZHx8Yy5taW5vckNoYW5nZWQpZz1bXSxhPVtdLGs9ZC5wb3NpdGlvbitkLmxlbmd0aCxsPWUucG9zaXRpb24rZS5sZW5ndGgsZS5wb3NpdGlvbjxkLnBvc2l0aW9uP2MubWlub3JDaGFuZ2VkJiYodD1mKHIpLHQubGVuZ3RoPWQucG9zaXRpb24tZS5wb3NpdGlvbixhLnB1c2godCksZS5wb3NpdGlvbj1kLnBvc2l0aW9uLGUubGVuZ3RoPWwtZS5wb3NpdGlvbik6ZC5wb3NpdGlvbjxlLnBvc2l0aW9uJiZjLm1ham9yQ2hhbmdlZCYmKHQ9ZihuKSx0Lmxlbmd0aD1lLnBvc2l0aW9uLWQucG9zaXRpb24sZy5wdXNoKHQpLGQucG9zaXRpb249ZS5wb3NpdGlvbixkLmxlbmd0aD1rLWQucG9zaXRpb24pLGw+az9jLm1pbm9yQ2hhbmdlZCYmKG49cixuLnBvc2l0aW9uPWssbi5sZW5ndGg9bC1rLGEucHVzaChuKSxlLmxlbmd0aD1rLWUucG9zaXRpb24pOms+bCYmYy5tYWpvckNoYW5nZWQmJihuLnBvc2l0aW9uPWwsCm4ubGVuZ3RoPWstbCxnLnB1c2gobiksZC5sZW5ndGg9bC1kLnBvc2l0aW9uKSxkLnNldFByb3BlcnRpZXMmJnAoZC5zZXRQcm9wZXJ0aWVzKSYmZy5wdXNoKGQpLGUuc2V0UHJvcGVydGllcyYmcChlLnNldFByb3BlcnRpZXMpJiZhLnB1c2goZSksYj8oaz1nLGc9YSk6az1hfXJldHVybntvcFNwZWNzQTprLG9wU3BlY3NCOmd9fSxJbnNlcnRUZXh0OmZ1bmN0aW9uKGEsYyl7Yy5wb3NpdGlvbjw9YS5wb3NpdGlvbj9hLnBvc2l0aW9uKz1jLnRleHQubGVuZ3RoOmMucG9zaXRpb248PWEucG9zaXRpb24rYS5sZW5ndGgmJihhLmxlbmd0aCs9Yy50ZXh0Lmxlbmd0aCk7cmV0dXJue29wU3BlY3NBOlthXSxvcFNwZWNzQjpbY119fSxNZXJnZVBhcmFncmFwaDpmdW5jdGlvbihhLGMpe3ZhciBiPWEucG9zaXRpb24sZD1hLnBvc2l0aW9uK2EubGVuZ3RoO2I+PWMuc291cmNlU3RhcnRQb3NpdGlvbiYmLS1iO2Q+PWMuc291cmNlU3RhcnRQb3NpdGlvbiYmLS1kO2EucG9zaXRpb249YjthLmxlbmd0aD0KZC1iO3JldHVybntvcFNwZWNzQTpbYV0sb3BTcGVjc0I6W2NdfX0sTW92ZUN1cnNvcjplLFJlbW92ZUFubm90YXRpb246ZnVuY3Rpb24oYSxiKXt2YXIgZD1hLnBvc2l0aW9uLGU9YS5wb3NpdGlvbithLmxlbmd0aCxmPWIucG9zaXRpb24rYi5sZW5ndGgsZz1bYV0saz1bYl07Yi5wb3NpdGlvbjw9ZCYmZTw9Zj9nPVtdOihmPGQmJihkLT1iLmxlbmd0aCsyKSxmPGUmJihlLT1iLmxlbmd0aCsyKSxhLnBvc2l0aW9uPWQsYS5sZW5ndGg9ZS1kKTtyZXR1cm57b3BTcGVjc0E6ZyxvcFNwZWNzQjprfX0sUmVtb3ZlQ3Vyc29yOmUsUmVtb3ZlTWVtYmVyOmUsUmVtb3ZlU3R5bGU6ZSxSZW1vdmVUZXh0OmZ1bmN0aW9uKGEsYil7dmFyIGQ9YS5wb3NpdGlvbithLmxlbmd0aCxlPWIucG9zaXRpb24rYi5sZW5ndGgsZj1bYV0sZz1bYl07ZTw9YS5wb3NpdGlvbj9hLnBvc2l0aW9uLT1iLmxlbmd0aDpiLnBvc2l0aW9uPGQmJihhLnBvc2l0aW9uPGIucG9zaXRpb24/YS5sZW5ndGg9ZTxkP2EubGVuZ3RoLQpiLmxlbmd0aDpiLnBvc2l0aW9uLWEucG9zaXRpb246KGEucG9zaXRpb249Yi5wb3NpdGlvbixlPGQ/YS5sZW5ndGg9ZC1lOmY9W10pKTtyZXR1cm57b3BTcGVjc0E6ZixvcFNwZWNzQjpnfX0sU2V0UGFyYWdyYXBoU3R5bGU6ZSxTcGxpdFBhcmFncmFwaDpmdW5jdGlvbihhLGIpe2IucG9zaXRpb248YS5wb3NpdGlvbj9hLnBvc2l0aW9uKz0xOmIucG9zaXRpb248YS5wb3NpdGlvbithLmxlbmd0aCYmKGEubGVuZ3RoKz0xKTtyZXR1cm57b3BTcGVjc0E6W2FdLG9wU3BlY3NCOltiXX19LFVwZGF0ZU1lbWJlcjplLFVwZGF0ZU1ldGFkYXRhOmUsVXBkYXRlUGFyYWdyYXBoU3R5bGU6ZX0sSW5zZXJ0VGV4dDp7SW5zZXJ0VGV4dDpmdW5jdGlvbihhLGIsZCl7YS5wb3NpdGlvbjxiLnBvc2l0aW9uP2IucG9zaXRpb24rPWEudGV4dC5sZW5ndGg6YS5wb3NpdGlvbj5iLnBvc2l0aW9uP2EucG9zaXRpb24rPWIudGV4dC5sZW5ndGg6ZD9iLnBvc2l0aW9uKz1hLnRleHQubGVuZ3RoOmEucG9zaXRpb24rPQpiLnRleHQubGVuZ3RoO3JldHVybntvcFNwZWNzQTpbYV0sb3BTcGVjc0I6W2JdfX0sTWVyZ2VQYXJhZ3JhcGg6ZnVuY3Rpb24oYSxiKXthLnBvc2l0aW9uPj1iLnNvdXJjZVN0YXJ0UG9zaXRpb24/LS1hLnBvc2l0aW9uOihhLnBvc2l0aW9uPGIuc291cmNlU3RhcnRQb3NpdGlvbiYmKGIuc291cmNlU3RhcnRQb3NpdGlvbis9YS50ZXh0Lmxlbmd0aCksYS5wb3NpdGlvbjxiLmRlc3RpbmF0aW9uU3RhcnRQb3NpdGlvbiYmKGIuZGVzdGluYXRpb25TdGFydFBvc2l0aW9uKz1hLnRleHQubGVuZ3RoKSk7cmV0dXJue29wU3BlY3NBOlthXSxvcFNwZWNzQjpbYl19fSxNb3ZlQ3Vyc29yOmZ1bmN0aW9uKGEsYil7dmFyIGQ9ayhiKTthLnBvc2l0aW9uPGIucG9zaXRpb24/Yi5wb3NpdGlvbis9YS50ZXh0Lmxlbmd0aDphLnBvc2l0aW9uPGIucG9zaXRpb24rYi5sZW5ndGgmJihiLmxlbmd0aCs9YS50ZXh0Lmxlbmd0aCk7ZCYmZyhiKTtyZXR1cm57b3BTcGVjc0E6W2FdLG9wU3BlY3NCOltiXX19LApSZW1vdmVBbm5vdGF0aW9uOmZ1bmN0aW9uKGEsYil7dmFyIGQ9YS5wb3NpdGlvbixlPWIucG9zaXRpb24rYi5sZW5ndGgsZj1bYV0sZz1bYl07Yi5wb3NpdGlvbjw9ZCYmZDw9ZT8oZj1bXSxiLmxlbmd0aCs9YS50ZXh0Lmxlbmd0aCk6ZTxhLnBvc2l0aW9uP2EucG9zaXRpb24tPWIubGVuZ3RoKzI6Yi5wb3NpdGlvbis9YS50ZXh0Lmxlbmd0aDtyZXR1cm57b3BTcGVjc0E6ZixvcFNwZWNzQjpnfX0sUmVtb3ZlQ3Vyc29yOmUsUmVtb3ZlTWVtYmVyOmUsUmVtb3ZlU3R5bGU6ZSxSZW1vdmVUZXh0OmZ1bmN0aW9uKGEsYil7dmFyIGQ7ZD1iLnBvc2l0aW9uK2IubGVuZ3RoO3ZhciBlPVthXSxmPVtiXTtkPD1hLnBvc2l0aW9uP2EucG9zaXRpb24tPWIubGVuZ3RoOmEucG9zaXRpb248PWIucG9zaXRpb24/Yi5wb3NpdGlvbis9YS50ZXh0Lmxlbmd0aDooYi5sZW5ndGg9YS5wb3NpdGlvbi1iLnBvc2l0aW9uLGQ9e29wdHlwZToiUmVtb3ZlVGV4dCIsbWVtYmVyaWQ6Yi5tZW1iZXJpZCx0aW1lc3RhbXA6Yi50aW1lc3RhbXAsCnBvc2l0aW9uOmEucG9zaXRpb24rYS50ZXh0Lmxlbmd0aCxsZW5ndGg6ZC1hLnBvc2l0aW9ufSxmLnVuc2hpZnQoZCksYS5wb3NpdGlvbj1iLnBvc2l0aW9uKTtyZXR1cm57b3BTcGVjc0E6ZSxvcFNwZWNzQjpmfX0sU2V0UGFyYWdyYXBoU3R5bGU6ZnVuY3Rpb24oYSxiKXtiLnBvc2l0aW9uPmEucG9zaXRpb24mJihiLnBvc2l0aW9uKz1hLnRleHQubGVuZ3RoKTtyZXR1cm57b3BTcGVjc0E6W2FdLG9wU3BlY3NCOltiXX19LFNwbGl0UGFyYWdyYXBoOmZ1bmN0aW9uKGEsYil7YS5wb3NpdGlvbjxiLnNvdXJjZVBhcmFncmFwaFBvc2l0aW9uJiYoYi5zb3VyY2VQYXJhZ3JhcGhQb3NpdGlvbis9YS50ZXh0Lmxlbmd0aCk7YS5wb3NpdGlvbjw9Yi5wb3NpdGlvbj9iLnBvc2l0aW9uKz1hLnRleHQubGVuZ3RoOmEucG9zaXRpb24rPTE7cmV0dXJue29wU3BlY3NBOlthXSxvcFNwZWNzQjpbYl19fSxVcGRhdGVNZW1iZXI6ZSxVcGRhdGVNZXRhZGF0YTplLFVwZGF0ZVBhcmFncmFwaFN0eWxlOmV9LApNZXJnZVBhcmFncmFwaDp7TWVyZ2VQYXJhZ3JhcGg6ZnVuY3Rpb24oYSxiLGQpe3ZhciBlPVthXSxmPVtiXSxnO2EuZGVzdGluYXRpb25TdGFydFBvc2l0aW9uPT09Yi5kZXN0aW5hdGlvblN0YXJ0UG9zaXRpb24/KGU9W10sZj1bXSxhLm1vdmVDdXJzb3ImJihnPXtvcHR5cGU6Ik1vdmVDdXJzb3IiLG1lbWJlcmlkOmEubWVtYmVyaWQsdGltZXN0YW1wOmEudGltZXN0YW1wLHBvc2l0aW9uOmEuc291cmNlU3RhcnRQb3NpdGlvbi0xfSxlLnB1c2goZykpLGIubW92ZUN1cnNvciYmKGc9e29wdHlwZToiTW92ZUN1cnNvciIsbWVtYmVyaWQ6Yi5tZW1iZXJpZCx0aW1lc3RhbXA6Yi50aW1lc3RhbXAscG9zaXRpb246Yi5zb3VyY2VTdGFydFBvc2l0aW9uLTF9LGYucHVzaChnKSksYT1kP2E6YixhPXtvcHR5cGU6IlNldFBhcmFncmFwaFN0eWxlIixtZW1iZXJpZDphLm1lbWJlcmlkLHRpbWVzdGFtcDphLnRpbWVzdGFtcCxwb3NpdGlvbjphLmRlc3RpbmF0aW9uU3RhcnRQb3NpdGlvbixzdHlsZU5hbWU6YS5wYXJhZ3JhcGhTdHlsZU5hbWV9LApkP2UucHVzaChhKTpmLnB1c2goYSkpOmIuc291cmNlU3RhcnRQb3NpdGlvbj09PWEuZGVzdGluYXRpb25TdGFydFBvc2l0aW9uPyhhLmRlc3RpbmF0aW9uU3RhcnRQb3NpdGlvbj1iLmRlc3RpbmF0aW9uU3RhcnRQb3NpdGlvbiwtLWEuc291cmNlU3RhcnRQb3NpdGlvbixhLnBhcmFncmFwaFN0eWxlTmFtZT1iLnBhcmFncmFwaFN0eWxlTmFtZSk6YS5zb3VyY2VTdGFydFBvc2l0aW9uPT09Yi5kZXN0aW5hdGlvblN0YXJ0UG9zaXRpb24/KGIuZGVzdGluYXRpb25TdGFydFBvc2l0aW9uPWEuZGVzdGluYXRpb25TdGFydFBvc2l0aW9uLC0tYi5zb3VyY2VTdGFydFBvc2l0aW9uLGIucGFyYWdyYXBoU3R5bGVOYW1lPWEucGFyYWdyYXBoU3R5bGVOYW1lKTphLmRlc3RpbmF0aW9uU3RhcnRQb3NpdGlvbjxiLmRlc3RpbmF0aW9uU3RhcnRQb3NpdGlvbj8oLS1iLmRlc3RpbmF0aW9uU3RhcnRQb3NpdGlvbiwtLWIuc291cmNlU3RhcnRQb3NpdGlvbik6KC0tYS5kZXN0aW5hdGlvblN0YXJ0UG9zaXRpb24sCi0tYS5zb3VyY2VTdGFydFBvc2l0aW9uKTtyZXR1cm57b3BTcGVjc0E6ZSxvcFNwZWNzQjpmfX0sTW92ZUN1cnNvcjpmdW5jdGlvbihhLGIpe3ZhciBkPWIucG9zaXRpb24sZT1iLnBvc2l0aW9uK2IubGVuZ3RoLGY9TWF0aC5taW4oZCxlKSxkPU1hdGgubWF4KGQsZSk7Zj49YS5zb3VyY2VTdGFydFBvc2l0aW9uJiYtLWY7ZD49YS5zb3VyY2VTdGFydFBvc2l0aW9uJiYtLWQ7MDw9Yi5sZW5ndGg/KGIucG9zaXRpb249ZixiLmxlbmd0aD1kLWYpOihiLnBvc2l0aW9uPWQsYi5sZW5ndGg9Zi1kKTtyZXR1cm57b3BTcGVjc0E6W2FdLG9wU3BlY3NCOltiXX19LFJlbW92ZUFubm90YXRpb246ZnVuY3Rpb24oYSxiKXt2YXIgZD1iLnBvc2l0aW9uK2IubGVuZ3RoLGU9W2FdLGY9W2JdO2IucG9zaXRpb248PWEuZGVzdGluYXRpb25TdGFydFBvc2l0aW9uJiZhLnNvdXJjZVN0YXJ0UG9zaXRpb248PWQ/KGU9W10sLS1iLmxlbmd0aCk6YS5zb3VyY2VTdGFydFBvc2l0aW9uPGIucG9zaXRpb24/LS1iLnBvc2l0aW9uOgooZDxhLmRlc3RpbmF0aW9uU3RhcnRQb3NpdGlvbiYmKGEuZGVzdGluYXRpb25TdGFydFBvc2l0aW9uLT1iLmxlbmd0aCsyKSxkPGEuc291cmNlU3RhcnRQb3NpdGlvbiYmKGEuc291cmNlU3RhcnRQb3NpdGlvbi09Yi5sZW5ndGgrMikpO3JldHVybntvcFNwZWNzQTplLG9wU3BlY3NCOmZ9fSxSZW1vdmVDdXJzb3I6ZSxSZW1vdmVNZW1iZXI6ZSxSZW1vdmVTdHlsZTplLFJlbW92ZVRleHQ6ZnVuY3Rpb24oYSxiKXtiLnBvc2l0aW9uPj1hLnNvdXJjZVN0YXJ0UG9zaXRpb24/LS1iLnBvc2l0aW9uOihiLnBvc2l0aW9uPGEuZGVzdGluYXRpb25TdGFydFBvc2l0aW9uJiYoYS5kZXN0aW5hdGlvblN0YXJ0UG9zaXRpb24tPWIubGVuZ3RoKSxiLnBvc2l0aW9uPGEuc291cmNlU3RhcnRQb3NpdGlvbiYmKGEuc291cmNlU3RhcnRQb3NpdGlvbi09Yi5sZW5ndGgpKTtyZXR1cm57b3BTcGVjc0E6W2FdLG9wU3BlY3NCOltiXX19LFNldFBhcmFncmFwaFN0eWxlOmZ1bmN0aW9uKGEsYil7dmFyIGQ9ClthXSxlPVtiXTtpZihiLnBvc2l0aW9uPmEuc291cmNlU3RhcnRQb3NpdGlvbiktLWIucG9zaXRpb247ZWxzZSBpZihiLnBvc2l0aW9uPT09YS5kZXN0aW5hdGlvblN0YXJ0UG9zaXRpb258fGIucG9zaXRpb249PT1hLnNvdXJjZVN0YXJ0UG9zaXRpb24pYi5wb3NpdGlvbj1hLmRlc3RpbmF0aW9uU3RhcnRQb3NpdGlvbixhLnBhcmFncmFwaFN0eWxlTmFtZT1iLnN0eWxlTmFtZTtyZXR1cm57b3BTcGVjc0E6ZCxvcFNwZWNzQjplfX0sU3BsaXRQYXJhZ3JhcGg6ZnVuY3Rpb24oYSxiKXt2YXIgZCxlPVthXSxmPVtiXTtiLnBvc2l0aW9uPGEuZGVzdGluYXRpb25TdGFydFBvc2l0aW9uPyhhLmRlc3RpbmF0aW9uU3RhcnRQb3NpdGlvbis9MSxhLnNvdXJjZVN0YXJ0UG9zaXRpb24rPTEpOmIucG9zaXRpb24+PWEuZGVzdGluYXRpb25TdGFydFBvc2l0aW9uJiZiLnBvc2l0aW9uPGEuc291cmNlU3RhcnRQb3NpdGlvbj8oYi5wYXJhZ3JhcGhTdHlsZU5hbWU9YS5wYXJhZ3JhcGhTdHlsZU5hbWUsCmQ9e29wdHlwZToiU2V0UGFyYWdyYXBoU3R5bGUiLG1lbWJlcmlkOmEubWVtYmVyaWQsdGltZXN0YW1wOmEudGltZXN0YW1wLHBvc2l0aW9uOmEuZGVzdGluYXRpb25TdGFydFBvc2l0aW9uLHN0eWxlTmFtZTphLnBhcmFncmFwaFN0eWxlTmFtZX0sZS5wdXNoKGQpLGIucG9zaXRpb249PT1hLnNvdXJjZVN0YXJ0UG9zaXRpb24tMSYmYS5tb3ZlQ3Vyc29yJiYoZD17b3B0eXBlOiJNb3ZlQ3Vyc29yIixtZW1iZXJpZDphLm1lbWJlcmlkLHRpbWVzdGFtcDphLnRpbWVzdGFtcCxwb3NpdGlvbjpiLnBvc2l0aW9uLGxlbmd0aDowfSxlLnB1c2goZCkpLGEuZGVzdGluYXRpb25TdGFydFBvc2l0aW9uPWIucG9zaXRpb24rMSxhLnNvdXJjZVN0YXJ0UG9zaXRpb24rPTEpOmIucG9zaXRpb24+PWEuc291cmNlU3RhcnRQb3NpdGlvbiYmKC0tYi5wb3NpdGlvbiwtLWIuc291cmNlUGFyYWdyYXBoUG9zaXRpb24pO3JldHVybntvcFNwZWNzQTplLG9wU3BlY3NCOmZ9fSxVcGRhdGVNZW1iZXI6ZSxVcGRhdGVNZXRhZGF0YTplLApVcGRhdGVQYXJhZ3JhcGhTdHlsZTplfSxNb3ZlQ3Vyc29yOntNb3ZlQ3Vyc29yOmUsUmVtb3ZlQW5ub3RhdGlvbjpmdW5jdGlvbihhLGIpe3ZhciBkPWsoYSksZT1hLnBvc2l0aW9uK2EubGVuZ3RoLGY9Yi5wb3NpdGlvbitiLmxlbmd0aDtiLnBvc2l0aW9uPD1hLnBvc2l0aW9uJiZlPD1mPyhhLnBvc2l0aW9uPWIucG9zaXRpb24tMSxhLmxlbmd0aD0wKTooZjxhLnBvc2l0aW9uP2EucG9zaXRpb24tPWIubGVuZ3RoKzI6ZjxlJiYoYS5sZW5ndGgtPWIubGVuZ3RoKzIpLGQmJmcoYSkpO3JldHVybntvcFNwZWNzQTpbYV0sb3BTcGVjc0I6W2JdfX0sUmVtb3ZlQ3Vyc29yOmZ1bmN0aW9uKGEsYil7cmV0dXJue29wU3BlY3NBOmEubWVtYmVyaWQ9PT1iLm1lbWJlcmlkP1tdOlthXSxvcFNwZWNzQjpbYl19fSxSZW1vdmVNZW1iZXI6ZSxSZW1vdmVTdHlsZTplLFJlbW92ZVRleHQ6ZnVuY3Rpb24oYSxiKXt2YXIgZD1rKGEpLGU9YS5wb3NpdGlvbithLmxlbmd0aCxmPWIucG9zaXRpb24rYi5sZW5ndGg7CmY8PWEucG9zaXRpb24/YS5wb3NpdGlvbi09Yi5sZW5ndGg6Yi5wb3NpdGlvbjxlJiYoYS5wb3NpdGlvbjxiLnBvc2l0aW9uP2EubGVuZ3RoPWY8ZT9hLmxlbmd0aC1iLmxlbmd0aDpiLnBvc2l0aW9uLWEucG9zaXRpb246KGEucG9zaXRpb249Yi5wb3NpdGlvbixhLmxlbmd0aD1mPGU/ZS1mOjApKTtkJiZnKGEpO3JldHVybntvcFNwZWNzQTpbYV0sb3BTcGVjc0I6W2JdfX0sU2V0UGFyYWdyYXBoU3R5bGU6ZSxTcGxpdFBhcmFncmFwaDpmdW5jdGlvbihhLGIpe3ZhciBkPWsoYSk7Yi5wb3NpdGlvbjxhLnBvc2l0aW9uP2EucG9zaXRpb24rPTE6Yi5wb3NpdGlvbjxhLnBvc2l0aW9uK2EubGVuZ3RoJiYoYS5sZW5ndGgrPTEpO2QmJmcoYSk7cmV0dXJue29wU3BlY3NBOlthXSxvcFNwZWNzQjpbYl19fSxVcGRhdGVNZW1iZXI6ZSxVcGRhdGVNZXRhZGF0YTplLFVwZGF0ZVBhcmFncmFwaFN0eWxlOmV9LFJlbW92ZUFubm90YXRpb246e1JlbW92ZUFubm90YXRpb246ZnVuY3Rpb24oYSxiKXt2YXIgZD0KW2FdLGU9W2JdO2EucG9zaXRpb249PT1iLnBvc2l0aW9uJiZhLmxlbmd0aD09PWIubGVuZ3RoPyhkPVtdLGU9W10pOmEucG9zaXRpb248Yi5wb3NpdGlvbj9iLnBvc2l0aW9uLT1hLmxlbmd0aCsyOmEucG9zaXRpb24tPWIubGVuZ3RoKzI7cmV0dXJue29wU3BlY3NBOmQsb3BTcGVjc0I6ZX19LFJlbW92ZUN1cnNvcjplLFJlbW92ZU1lbWJlcjplLFJlbW92ZVN0eWxlOmUsUmVtb3ZlVGV4dDpmdW5jdGlvbihhLGIpe3ZhciBkPWEucG9zaXRpb24rYS5sZW5ndGgsZT1iLnBvc2l0aW9uK2IubGVuZ3RoLGY9W2FdLGc9W2JdO2EucG9zaXRpb248PWIucG9zaXRpb24mJmU8PWQ/KGc9W10sYS5sZW5ndGgtPWIubGVuZ3RoKTplPGEucG9zaXRpb24/YS5wb3NpdGlvbi09Yi5sZW5ndGg6Yi5wb3NpdGlvbjxhLnBvc2l0aW9uPyhhLnBvc2l0aW9uPWIucG9zaXRpb24rMSxiLmxlbmd0aC09YS5sZW5ndGgrMik6Yi5wb3NpdGlvbi09YS5sZW5ndGgrMjtyZXR1cm57b3BTcGVjc0E6ZixvcFNwZWNzQjpnfX0sClNldFBhcmFncmFwaFN0eWxlOmZ1bmN0aW9uKGEsYil7dmFyIGQ9Yi5wb3NpdGlvbixlPWEucG9zaXRpb24rYS5sZW5ndGgsZj1bYV0sZz1bYl07YS5wb3NpdGlvbjw9ZCYmZDw9ZT9nPVtdOmU8ZCYmKGIucG9zaXRpb24tPWEubGVuZ3RoKzIpO3JldHVybntvcFNwZWNzQTpmLG9wU3BlY3NCOmd9fSxTcGxpdFBhcmFncmFwaDpmdW5jdGlvbihhLGIpe3ZhciBkPWIucG9zaXRpb24sZT1hLnBvc2l0aW9uK2EubGVuZ3RoLGY9W2FdLGc9W2JdO2EucG9zaXRpb248PWQmJmQ8PWU/KGc9W10sYS5sZW5ndGgrPTEpOihlPGIuc291cmNlUGFyYWdyYXBoUG9zaXRpb24mJihiLnNvdXJjZVBhcmFncmFwaFBvc2l0aW9uLT1hLmxlbmd0aCsyKSxlPGQ/Yi5wb3NpdGlvbi09YS5sZW5ndGgrMjphLnBvc2l0aW9uKz0xKTtyZXR1cm57b3BTcGVjc0E6ZixvcFNwZWNzQjpnfX0sVXBkYXRlTWVtYmVyOmUsVXBkYXRlTWV0YWRhdGE6ZSxVcGRhdGVQYXJhZ3JhcGhTdHlsZTplfSxSZW1vdmVDdXJzb3I6e1JlbW92ZUN1cnNvcjpmdW5jdGlvbihhLApiKXt2YXIgZD1hLm1lbWJlcmlkPT09Yi5tZW1iZXJpZDtyZXR1cm57b3BTcGVjc0E6ZD9bXTpbYV0sb3BTcGVjc0I6ZD9bXTpbYl19fSxSZW1vdmVNZW1iZXI6ZSxSZW1vdmVTdHlsZTplLFJlbW92ZVRleHQ6ZSxTZXRQYXJhZ3JhcGhTdHlsZTplLFNwbGl0UGFyYWdyYXBoOmUsVXBkYXRlTWVtYmVyOmUsVXBkYXRlTWV0YWRhdGE6ZSxVcGRhdGVQYXJhZ3JhcGhTdHlsZTplfSxSZW1vdmVNZW1iZXI6e1JlbW92ZVN0eWxlOmUsUmVtb3ZlVGV4dDplLFNldFBhcmFncmFwaFN0eWxlOmUsU3BsaXRQYXJhZ3JhcGg6ZSxVcGRhdGVNZXRhZGF0YTplLFVwZGF0ZVBhcmFncmFwaFN0eWxlOmV9LFJlbW92ZVN0eWxlOntSZW1vdmVTdHlsZTpmdW5jdGlvbihhLGIpe3ZhciBkPWEuc3R5bGVOYW1lPT09Yi5zdHlsZU5hbWUmJmEuc3R5bGVGYW1pbHk9PT1iLnN0eWxlRmFtaWx5O3JldHVybntvcFNwZWNzQTpkP1tdOlthXSxvcFNwZWNzQjpkP1tdOltiXX19LFJlbW92ZVRleHQ6ZSxTZXRQYXJhZ3JhcGhTdHlsZTpmdW5jdGlvbihhLApiKXt2YXIgZCxlPVthXSxmPVtiXTsicGFyYWdyYXBoIj09PWEuc3R5bGVGYW1pbHkmJmEuc3R5bGVOYW1lPT09Yi5zdHlsZU5hbWUmJihkPXtvcHR5cGU6IlNldFBhcmFncmFwaFN0eWxlIixtZW1iZXJpZDphLm1lbWJlcmlkLHRpbWVzdGFtcDphLnRpbWVzdGFtcCxwb3NpdGlvbjpiLnBvc2l0aW9uLHN0eWxlTmFtZToiIn0sZS51bnNoaWZ0KGQpLGIuc3R5bGVOYW1lPSIiKTtyZXR1cm57b3BTcGVjc0E6ZSxvcFNwZWNzQjpmfX0sU3BsaXRQYXJhZ3JhcGg6ZSxVcGRhdGVNZW1iZXI6ZSxVcGRhdGVNZXRhZGF0YTplLFVwZGF0ZVBhcmFncmFwaFN0eWxlOmZ1bmN0aW9uKGEsYyl7dmFyIGUsZj1bYV0sZz1bY107InBhcmFncmFwaCI9PT1hLnN0eWxlRmFtaWx5JiYoZT1kKGMuc2V0UHJvcGVydGllcyxhLnN0eWxlTmFtZSksMDxlLmxlbmd0aCYmKGU9e29wdHlwZToiVXBkYXRlUGFyYWdyYXBoU3R5bGUiLG1lbWJlcmlkOmEubWVtYmVyaWQsdGltZXN0YW1wOmEudGltZXN0YW1wLHN0eWxlTmFtZTpjLnN0eWxlTmFtZSwKcmVtb3ZlZFByb3BlcnRpZXM6e2F0dHJpYnV0ZXM6ZS5qb2luKCIsIil9fSxmLnVuc2hpZnQoZSkpLGEuc3R5bGVOYW1lPT09Yy5zdHlsZU5hbWU/Zz1bXTpiKGMuc2V0UHJvcGVydGllcyxhLnN0eWxlTmFtZSkpO3JldHVybntvcFNwZWNzQTpmLG9wU3BlY3NCOmd9fX0sUmVtb3ZlVGV4dDp7UmVtb3ZlVGV4dDpmdW5jdGlvbihhLGIpe3ZhciBkPWEucG9zaXRpb24rYS5sZW5ndGgsZT1iLnBvc2l0aW9uK2IubGVuZ3RoLGY9W2FdLGc9W2JdO2U8PWEucG9zaXRpb24/YS5wb3NpdGlvbi09Yi5sZW5ndGg6ZDw9Yi5wb3NpdGlvbj9iLnBvc2l0aW9uLT1hLmxlbmd0aDpiLnBvc2l0aW9uPGQmJihhLnBvc2l0aW9uPGIucG9zaXRpb24/KGEubGVuZ3RoPWU8ZD9hLmxlbmd0aC1iLmxlbmd0aDpiLnBvc2l0aW9uLWEucG9zaXRpb24sZDxlPyhiLnBvc2l0aW9uPWEucG9zaXRpb24sYi5sZW5ndGg9ZS1kKTpnPVtdKTooZDxlP2IubGVuZ3RoLT1hLmxlbmd0aDpiLnBvc2l0aW9uPGEucG9zaXRpb24/CmIubGVuZ3RoPWEucG9zaXRpb24tYi5wb3NpdGlvbjpnPVtdLGU8ZD8oYS5wb3NpdGlvbj1iLnBvc2l0aW9uLGEubGVuZ3RoPWQtZSk6Zj1bXSkpO3JldHVybntvcFNwZWNzQTpmLG9wU3BlY3NCOmd9fSxTZXRQYXJhZ3JhcGhTdHlsZTpmdW5jdGlvbihhLGIpe2EucG9zaXRpb248Yi5wb3NpdGlvbiYmKGIucG9zaXRpb24tPWEubGVuZ3RoKTtyZXR1cm57b3BTcGVjc0E6W2FdLG9wU3BlY3NCOltiXX19LFNwbGl0UGFyYWdyYXBoOmZ1bmN0aW9uKGEsYil7dmFyIGQ9YS5wb3NpdGlvbithLmxlbmd0aCxlPVthXSxmPVtiXTtiLnBvc2l0aW9uPD1hLnBvc2l0aW9uP2EucG9zaXRpb24rPTE6Yi5wb3NpdGlvbjxkJiYoYS5sZW5ndGg9Yi5wb3NpdGlvbi1hLnBvc2l0aW9uLGQ9e29wdHlwZToiUmVtb3ZlVGV4dCIsbWVtYmVyaWQ6YS5tZW1iZXJpZCx0aW1lc3RhbXA6YS50aW1lc3RhbXAscG9zaXRpb246Yi5wb3NpdGlvbisxLGxlbmd0aDpkLWIucG9zaXRpb259LGUudW5zaGlmdChkKSk7YS5wb3NpdGlvbisKYS5sZW5ndGg8PWIucG9zaXRpb24/Yi5wb3NpdGlvbi09YS5sZW5ndGg6YS5wb3NpdGlvbjxiLnBvc2l0aW9uJiYoYi5wb3NpdGlvbj1hLnBvc2l0aW9uKTthLnBvc2l0aW9uK2EubGVuZ3RoPGIuc291cmNlUGFyYWdyYXBoUG9zaXRpb24mJihiLnNvdXJjZVBhcmFncmFwaFBvc2l0aW9uLT1hLmxlbmd0aCk7cmV0dXJue29wU3BlY3NBOmUsb3BTcGVjc0I6Zn19LFVwZGF0ZU1lbWJlcjplLFVwZGF0ZU1ldGFkYXRhOmUsVXBkYXRlUGFyYWdyYXBoU3R5bGU6ZX0sU2V0UGFyYWdyYXBoU3R5bGU6e1NldFBhcmFncmFwaFN0eWxlOmZ1bmN0aW9uKGEsYixkKXthLnBvc2l0aW9uPT09Yi5wb3NpdGlvbiYmKGQ/Yi5zdHlsZU5hbWU9YS5zdHlsZU5hbWU6YS5zdHlsZU5hbWU9Yi5zdHlsZU5hbWUpO3JldHVybntvcFNwZWNzQTpbYV0sb3BTcGVjc0I6W2JdfX0sU3BsaXRQYXJhZ3JhcGg6ZnVuY3Rpb24oYSxiKXt2YXIgZD1bYV0sZT1bYl0sZzthLnBvc2l0aW9uPmIucG9zaXRpb24/YS5wb3NpdGlvbis9CjE6YS5wb3NpdGlvbj09PWIuc291cmNlUGFyYWdyYXBoUG9zaXRpb24mJihiLnBhcmFncmFwaFN0eWxlTmFtZT1hLnN0eWxlTmFtZSxnPWYoYSksZy5wb3NpdGlvbj1iLnBvc2l0aW9uKzEsZC5wdXNoKGcpKTtyZXR1cm57b3BTcGVjc0E6ZCxvcFNwZWNzQjplfX0sVXBkYXRlTWVtYmVyOmUsVXBkYXRlTWV0YWRhdGE6ZSxVcGRhdGVQYXJhZ3JhcGhTdHlsZTplfSxTcGxpdFBhcmFncmFwaDp7U3BsaXRQYXJhZ3JhcGg6ZnVuY3Rpb24oYSxiLGQpe3ZhciBlLGY7YS5wb3NpdGlvbjxiLnBvc2l0aW9uP2U9ITA6Yi5wb3NpdGlvbjxhLnBvc2l0aW9uP2Y9ITA6YS5wb3NpdGlvbj09PWIucG9zaXRpb24mJihkP2U9ITA6Zj0hMCk7ZT8oYi5wb3NpdGlvbis9MSxiLnNvdXJjZVBhcmFncmFwaFBvc2l0aW9uPWEucG9zaXRpb248Yi5zb3VyY2VQYXJhZ3JhcGhQb3NpdGlvbj9iLnNvdXJjZVBhcmFncmFwaFBvc2l0aW9uKzE6YS5wb3NpdGlvbisxKTpmJiYoYS5wb3NpdGlvbis9MSxhLnNvdXJjZVBhcmFncmFwaFBvc2l0aW9uPQpiLnBvc2l0aW9uPGIuc291cmNlUGFyYWdyYXBoUG9zaXRpb24/YS5zb3VyY2VQYXJhZ3JhcGhQb3NpdGlvbisxOmIucG9zaXRpb24rMSk7cmV0dXJue29wU3BlY3NBOlthXSxvcFNwZWNzQjpbYl19fSxVcGRhdGVNZW1iZXI6ZSxVcGRhdGVNZXRhZGF0YTplLFVwZGF0ZVBhcmFncmFwaFN0eWxlOmV9LFVwZGF0ZU1lbWJlcjp7VXBkYXRlTWV0YWRhdGE6ZSxVcGRhdGVQYXJhZ3JhcGhTdHlsZTplfSxVcGRhdGVNZXRhZGF0YTp7VXBkYXRlTWV0YWRhdGE6ZnVuY3Rpb24oYSxiLGQpe3ZhciBlLGY9W2FdLGc9W2JdO2U9ZD9hOmI7YT1kP2I6YTtuKGEuc2V0UHJvcGVydGllc3x8bnVsbCxhLnJlbW92ZWRQcm9wZXJ0aWVzfHxudWxsLGUuc2V0UHJvcGVydGllc3x8bnVsbCxlLnJlbW92ZWRQcm9wZXJ0aWVzfHxudWxsKTtlLnNldFByb3BlcnRpZXMmJnAoZS5zZXRQcm9wZXJ0aWVzKXx8ZS5yZW1vdmVkUHJvcGVydGllcyYmcihlLnJlbW92ZWRQcm9wZXJ0aWVzKXx8KGQ/Zj1bXTpnPVtdKTsKYS5zZXRQcm9wZXJ0aWVzJiZwKGEuc2V0UHJvcGVydGllcyl8fGEucmVtb3ZlZFByb3BlcnRpZXMmJnIoYS5yZW1vdmVkUHJvcGVydGllcyl8fChkP2c9W106Zj1bXSk7cmV0dXJue29wU3BlY3NBOmYsb3BTcGVjc0I6Z319LFVwZGF0ZVBhcmFncmFwaFN0eWxlOmV9LFVwZGF0ZVBhcmFncmFwaFN0eWxlOntVcGRhdGVQYXJhZ3JhcGhTdHlsZTpmdW5jdGlvbihhLGIsZCl7dmFyIGUsZj1bYV0sZz1bYl07YS5zdHlsZU5hbWU9PT1iLnN0eWxlTmFtZSYmKGU9ZD9hOmIsYT1kP2I6YSxxKGEuc2V0UHJvcGVydGllcyxhLnJlbW92ZWRQcm9wZXJ0aWVzLGUuc2V0UHJvcGVydGllcyxlLnJlbW92ZWRQcm9wZXJ0aWVzLCJzdHlsZTpwYXJhZ3JhcGgtcHJvcGVydGllcyIpLHEoYS5zZXRQcm9wZXJ0aWVzLGEucmVtb3ZlZFByb3BlcnRpZXMsZS5zZXRQcm9wZXJ0aWVzLGUucmVtb3ZlZFByb3BlcnRpZXMsInN0eWxlOnRleHQtcHJvcGVydGllcyIpLG4oYS5zZXRQcm9wZXJ0aWVzfHxudWxsLGEucmVtb3ZlZFByb3BlcnRpZXN8fApudWxsLGUuc2V0UHJvcGVydGllc3x8bnVsbCxlLnJlbW92ZWRQcm9wZXJ0aWVzfHxudWxsKSxlLnNldFByb3BlcnRpZXMmJnAoZS5zZXRQcm9wZXJ0aWVzKXx8ZS5yZW1vdmVkUHJvcGVydGllcyYmcihlLnJlbW92ZWRQcm9wZXJ0aWVzKXx8KGQ/Zj1bXTpnPVtdKSxhLnNldFByb3BlcnRpZXMmJnAoYS5zZXRQcm9wZXJ0aWVzKXx8YS5yZW1vdmVkUHJvcGVydGllcyYmcihhLnJlbW92ZWRQcm9wZXJ0aWVzKXx8KGQ/Zz1bXTpmPVtdKSk7cmV0dXJue29wU3BlY3NBOmYsb3BTcGVjc0I6Z319fX07dGhpcy5wYXNzVW5jaGFuZ2VkPWU7dGhpcy5leHRlbmRUcmFuc2Zvcm1hdGlvbnM9ZnVuY3Rpb24oYSl7T2JqZWN0LmtleXMoYSkuZm9yRWFjaChmdW5jdGlvbihiKXt2YXIgZD1hW2JdLGUsZj1sLmhhc093blByb3BlcnR5KGIpO3J1bnRpbWUubG9nKChmPyJFeHRlbmRpbmciOiJBZGRpbmciKSsiIG1hcCBmb3Igb3B0eXBlQTogIitiKTtmfHwobFtiXT17fSk7ZT1sW2JdO09iamVjdC5rZXlzKGQpLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGY9CmUuaGFzT3duUHJvcGVydHkoYSk7cnVudGltZS5hc3NlcnQoYjw9YSwiV3Jvbmcgb3JkZXI6IitiKyIsICIrYSk7cnVudGltZS5sb2coIiAgIisoZj8iT3ZlcndyaXRpbmciOiJBZGRpbmciKSsiIGVudHJ5IGZvciBvcHR5cGVCOiAiK2EpO2VbYV09ZFthXX0pfSl9O3RoaXMudHJhbnNmb3JtT3BzcGVjVnNPcHNwZWM9ZnVuY3Rpb24oYSxiKXt2YXIgZD1hLm9wdHlwZTw9Yi5vcHR5cGUsZTtydW50aW1lLmxvZygiQ3Jvc3N0cmFuc2Zvcm1pbmc6Iik7cnVudGltZS5sb2cocnVudGltZS50b0pzb24oYSkpO3J1bnRpbWUubG9nKHJ1bnRpbWUudG9Kc29uKGIpKTtkfHwoZT1hLGE9YixiPWUpOyhlPShlPWxbYS5vcHR5cGVdKSYmZVtiLm9wdHlwZV0pPyhlPWUoYSxiLCFkKSxkfHxudWxsPT09ZXx8KGU9e29wU3BlY3NBOmUub3BTcGVjc0Isb3BTcGVjc0I6ZS5vcFNwZWNzQX0pKTplPW51bGw7cnVudGltZS5sb2coInJlc3VsdDoiKTtlPyhydW50aW1lLmxvZyhydW50aW1lLnRvSnNvbihlLm9wU3BlY3NBKSksCnJ1bnRpbWUubG9nKHJ1bnRpbWUudG9Kc29uKGUub3BTcGVjc0IpKSk6cnVudGltZS5sb2coIm51bGwiKTtyZXR1cm4gZX19OwpvcHMuT3BlcmF0aW9uVHJhbnNmb3JtZXI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBnKGQsYil7Zm9yKHZhciBmLG4scD1bXSxyPVtdOzA8ZC5sZW5ndGgmJmI7KXtmPWQuc2hpZnQoKTtmPWsudHJhbnNmb3JtT3BzcGVjVnNPcHNwZWMoZixiKTtpZighZilyZXR1cm4gbnVsbDtwPXAuY29uY2F0KGYub3BTcGVjc0EpO2lmKDA9PT1mLm9wU3BlY3NCLmxlbmd0aCl7cD1wLmNvbmNhdChkKTtiPW51bGw7YnJlYWt9Zm9yKDsxPGYub3BTcGVjc0IubGVuZ3RoOyl7bj1nKGQsZi5vcFNwZWNzQi5zaGlmdCgpKTtpZighbilyZXR1cm4gbnVsbDtyPXIuY29uY2F0KG4ub3BTcGVjc0IpO2Q9bi5vcFNwZWNzQX1iPWYub3BTcGVjc0IucG9wKCl9YiYmci5wdXNoKGIpO3JldHVybntvcFNwZWNzQTpwLG9wU3BlY3NCOnJ9fXZhciBrPW5ldyBvcHMuT3BlcmF0aW9uVHJhbnNmb3JtTWF0cml4O3RoaXMuZ2V0T3BlcmF0aW9uVHJhbnNmb3JtTWF0cml4PWZ1bmN0aW9uKCl7cmV0dXJuIGt9O3RoaXMudHJhbnNmb3JtPQpmdW5jdGlvbihkLGIpe2Zvcih2YXIgZixrPVtdOzA8Yi5sZW5ndGg7KXtmPWcoZCxiLnNoaWZ0KCkpO2lmKCFmKXJldHVybiBudWxsO2Q9Zi5vcFNwZWNzQTtrPWsuY29uY2F0KGYub3BTcGVjc0IpfXJldHVybntvcFNwZWNzQTpkLG9wU3BlY3NCOmt9fX07dmFyIHdlYm9kZl9jc3M9J0BuYW1lc3BhY2UgZHJhdyB1cmwodXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpkcmF3aW5nOjEuMCk7QG5hbWVzcGFjZSBmbyB1cmwodXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczp4c2wtZm8tY29tcGF0aWJsZToxLjApO0BuYW1lc3BhY2Ugb2ZmaWNlIHVybCh1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm9mZmljZToxLjApO0BuYW1lc3BhY2UgcHJlc2VudGF0aW9uIHVybCh1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnByZXNlbnRhdGlvbjoxLjApO0BuYW1lc3BhY2Ugc3R5bGUgdXJsKHVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6c3R5bGU6MS4wKTtAbmFtZXNwYWNlIHN2ZyB1cmwodXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpzdmctY29tcGF0aWJsZToxLjApO0BuYW1lc3BhY2UgdGFibGUgdXJsKHVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6dGFibGU6MS4wKTtAbmFtZXNwYWNlIHRleHQgdXJsKHVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6dGV4dDoxLjApO0BuYW1lc3BhY2Ugd2Vib2RmaGVscGVyIHVybCh1cm46d2Vib2RmOm5hbWVzOmhlbHBlcik7QG5hbWVzcGFjZSBjdXJzb3IgdXJsKHVybjp3ZWJvZGY6bmFtZXM6Y3Vyc29yKTtAbmFtZXNwYWNlIGVkaXRpbmZvIHVybCh1cm46d2Vib2RmOm5hbWVzOmVkaXRpbmZvKTtAbmFtZXNwYWNlIGFubm90YXRpb24gdXJsKHVybjp3ZWJvZGY6bmFtZXM6YW5ub3RhdGlvbik7QG5hbWVzcGFjZSBkYyB1cmwoaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8pO0BuYW1lc3BhY2Ugc3ZnbnMgdXJsKGh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnKTtvZmZpY2V8ZG9jdW1lbnQgPiAqLCBvZmZpY2V8ZG9jdW1lbnQtY29udGVudCA+ICoge2Rpc3BsYXk6IG5vbmU7fW9mZmljZXxib2R5LCBvZmZpY2V8ZG9jdW1lbnQge2Rpc3BsYXk6IGlubGluZS1ibG9jaztwb3NpdGlvbjogcmVsYXRpdmU7fXRleHR8cCwgdGV4dHxoIHtkaXNwbGF5OiBibG9jaztwYWRkaW5nOiAwO21hcmdpbjogMDtsaW5lLWhlaWdodDogbm9ybWFsO3Bvc2l0aW9uOiByZWxhdGl2ZTt9dGV4dHxwOjphZnRlciwgdGV4dHxoOjphZnRlciB7Y29udGVudDogIlxcMjAwQiI7d2hpdGUtc3BhY2U6IHByZTt9Klt3ZWJvZGZoZWxwZXJ8Y29udGFpbnNwYXJhZ3JhcGhhbmNob3JdIHtwb3NpdGlvbjogcmVsYXRpdmU7fXRleHR8cyB7d2hpdGUtc3BhY2U6IHByZTt9dGV4dHx0YWIge2Rpc3BsYXk6IGlubGluZTt3aGl0ZS1zcGFjZTogcHJlO310ZXh0fHRyYWNrZWQtY2hhbmdlcyB7ZGlzcGxheTogbm9uZTt9b2ZmaWNlfGJpbmFyeS1kYXRhIHtkaXNwbGF5OiBub25lO31vZmZpY2V8dGV4dCB7ZGlzcGxheTogYmxvY2s7dGV4dC1hbGlnbjogbGVmdDtvdmVyZmxvdzogdmlzaWJsZTt3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7fW9mZmljZXx0ZXh0OjpzZWxlY3Rpb24ge2JhY2tncm91bmQ6IHRyYW5zcGFyZW50O30ud2Vib2RmLXZpcnR1YWxTZWxlY3Rpb25zICo6OnNlbGVjdGlvbiB7YmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7fS53ZWJvZGYtdmlydHVhbFNlbGVjdGlvbnMgKjo6LW1vei1zZWxlY3Rpb24ge2JhY2tncm91bmQ6IHRyYW5zcGFyZW50O31vZmZpY2V8dGV4dCAqIGRyYXd8dGV4dC1ib3gge2Rpc3BsYXk6IGJsb2NrO2JvcmRlcjogMXB4IHNvbGlkICNkM2QzZDM7fW9mZmljZXx0ZXh0IGRyYXd8ZnJhbWUge3otaW5kZXg6IDE7fW9mZmljZXxzcHJlYWRzaGVldCB7ZGlzcGxheTogYmxvY2s7Ym9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtlbXB0eS1jZWxsczogc2hvdztmb250LWZhbWlseTogc2Fucy1zZXJpZjtmb250LXNpemU6IDEwcHQ7dGV4dC1hbGlnbjogbGVmdDtwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7b3ZlcmZsb3c6IGhpZGRlbjt9b2ZmaWNlfHByZXNlbnRhdGlvbiB7ZGlzcGxheTogaW5saW5lLWJsb2NrO3RleHQtYWxpZ246IGxlZnQ7fSNzaGFkb3dDb250ZW50IHtkaXNwbGF5OiBpbmxpbmUtYmxvY2s7dGV4dC1hbGlnbjogbGVmdDt9ZHJhd3xwYWdlIHtkaXNwbGF5OiBibG9jaztwb3NpdGlvbjogcmVsYXRpdmU7b3ZlcmZsb3c6IGhpZGRlbjt9cHJlc2VudGF0aW9ufG5vdGVzLCBwcmVzZW50YXRpb258Zm9vdGVyLWRlY2wsIHByZXNlbnRhdGlvbnxkYXRlLXRpbWUtZGVjbCB7ZGlzcGxheTogbm9uZTt9QG1lZGlhIHByaW50IHtkcmF3fHBhZ2Uge2JvcmRlcjogMXB0IHNvbGlkIGJsYWNrO3BhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDt9cHJlc2VudGF0aW9ufG5vdGVzIHt9fW9mZmljZXxzcHJlYWRzaGVldCB0ZXh0fHAge2JvcmRlcjogMHB4O3BhZGRpbmc6IDFweDttYXJnaW46IDBweDt9b2ZmaWNlfHNwcmVhZHNoZWV0IHRhYmxlfHRhYmxlIHttYXJnaW46IDNweDt9b2ZmaWNlfHNwcmVhZHNoZWV0IHRhYmxlfHRhYmxlOmFmdGVyIHt9b2ZmaWNlfHNwcmVhZHNoZWV0IHRhYmxlfHRhYmxlLXJvdyB7Y291bnRlci1pbmNyZW1lbnQ6IHJvdzt9b2ZmaWNlfHNwcmVhZHNoZWV0IHRhYmxlfHRhYmxlLXJvdzpiZWZvcmUge3dpZHRoOiAzZW07YmFja2dyb3VuZDogI2NjY2NjYztib3JkZXI6IDFweCBzb2xpZCBibGFjazt0ZXh0LWFsaWduOiBjZW50ZXI7Y29udGVudDogY291bnRlcihyb3cpO2Rpc3BsYXk6IHRhYmxlLWNlbGw7fW9mZmljZXxzcHJlYWRzaGVldCB0YWJsZXx0YWJsZS1jZWxsIHtib3JkZXI6IDFweCBzb2xpZCAjY2NjY2NjO310YWJsZXx0YWJsZSB7ZGlzcGxheTogdGFibGU7fWRyYXd8ZnJhbWUgdGFibGV8dGFibGUge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTtiYWNrZ3JvdW5kOiB3aGl0ZTt9dGFibGV8dGFibGUtaGVhZGVyLXJvd3Mge2Rpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91cDt9dGFibGV8dGFibGUtcm93IHtkaXNwbGF5OiB0YWJsZS1yb3c7fXRhYmxlfHRhYmxlLWNvbHVtbiB7ZGlzcGxheTogdGFibGUtY29sdW1uO310YWJsZXx0YWJsZS1jZWxsIHt3aWR0aDogMC44ODlpbjtkaXNwbGF5OiB0YWJsZS1jZWxsO3dvcmQtYnJlYWs6IGJyZWFrLWFsbDt9ZHJhd3xmcmFtZSB7ZGlzcGxheTogYmxvY2s7fWRyYXd8aW1hZ2Uge2Rpc3BsYXk6IGJsb2NrO3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTt0b3A6IDBweDtsZWZ0OiAwcHg7YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtiYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTstbW96LWJhY2tncm91bmQtc2l6ZTogMTAwJSAxMDAlO31kcmF3fGZyYW1lID4gZHJhd3xpbWFnZTpudGgtb2YtdHlwZShuKzIpIHtkaXNwbGF5OiBub25lO310ZXh0fGxpc3Q6YmVmb3JlIHtkaXNwbGF5OiBub25lO2NvbnRlbnQ6IiI7fXRleHR8bGlzdCB7ZGlzcGxheTogYmxvY2s7fXRleHR8bGlzdC1pdGVtIHtkaXNwbGF5OiBibG9jazt9dGV4dHxudW1iZXIge2Rpc3BsYXk6bm9uZTt9dGV4dHxhIHtjb2xvcjogYmx1ZTt0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtjdXJzb3I6IHBvaW50ZXI7fS53ZWJvZGYtaW5hY3RpdmVMaW5rcyB0ZXh0fGEge2N1cnNvcjogdGV4dDt9dGV4dHxub3RlLWNpdGF0aW9uIHt2ZXJ0aWNhbC1hbGlnbjogc3VwZXI7Zm9udC1zaXplOiBzbWFsbGVyO310ZXh0fG5vdGUtYm9keSB7ZGlzcGxheTogbm9uZTt9dGV4dHxub3RlOmhvdmVyIHRleHR8bm90ZS1jaXRhdGlvbiB7YmFja2dyb3VuZDogI2RkZGRkZDt9dGV4dHxub3RlOmhvdmVyIHRleHR8bm90ZS1ib2R5IHtkaXNwbGF5OiBibG9jaztsZWZ0OjFlbTttYXgtd2lkdGg6IDgwJTtwb3NpdGlvbjogYWJzb2x1dGU7YmFja2dyb3VuZDogI2ZmZmZhYTt9dGV4dHxiaWJsaW9ncmFwaHktc291cmNlIHtkaXNwbGF5OiBub25lO31zdmd8dGl0bGUsIHN2Z3xkZXNjIHtkaXNwbGF5OiBub25lO312aWRlbyB7d2lkdGg6IDEwMCU7aGVpZ2h0OiAxMDAlfWN1cnNvcnxhbmNob3Ige2Rpc3BsYXk6IG5vbmU7fWN1cnNvcnxjdXJzb3Ige2Rpc3BsYXk6IG5vbmU7fS53ZWJvZGYtY2FyZXRPdmVybGF5IHtwb3NpdGlvbjogYWJzb2x1dGU7dG9wOiA1JTtoZWlnaHQ6IDFlbTt6LWluZGV4OiAxMDtwYWRkaW5nLWxlZnQ6IDFweDtwb2ludGVyLWV2ZW50czogbm9uZTt9LndlYm9kZi1jYXJldE92ZXJsYXkgLmNhcmV0IHtwb3NpdGlvbjogYWJzb2x1dGU7Ym9yZGVyLWxlZnQ6IDJweCBzb2xpZCBibGFjazt0b3A6IDA7Ym90dG9tOiAwO3JpZ2h0OiAwO30ud2Vib2RmLWNhcmV0T3ZlcmxheSAuaGFuZGxlIHtwb3NpdGlvbjogYWJzb2x1dGU7bWFyZ2luLXRvcDogNXB4O3BhZGRpbmctdG9wOiAzcHg7bWFyZ2luLWxlZnQ6IGF1dG87bWFyZ2luLXJpZ2h0OiBhdXRvO3dpZHRoOiA2NHB4O2hlaWdodDogNjhweDtib3JkZXItcmFkaXVzOiA1cHg7b3BhY2l0eTogMC4zO3RleHQtYWxpZ246IGNlbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiBibGFjaztib3gtc2hhZG93OiAwcHggMHB4IDVweCByZ2IoOTAsIDkwLCA5MCk7Ym9yZGVyOiAxcHggc29saWQgYmxhY2s7dG9wOiAtODVweDtyaWdodDogLTMycHg7fS53ZWJvZGYtY2FyZXRPdmVybGF5IC5oYW5kbGUgPiBpbWcge2JveC1zaGFkb3c6IDBweCAwcHggNXB4IHJnYig5MCwgOTAsIDkwKSBpbnNldDtiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjAwLCAyMDAsIDIwMCk7Ym9yZGVyLXJhZGl1czogNXB4O2JvcmRlcjogMnB4IHNvbGlkO2hlaWdodDogNjBweDt3aWR0aDogNjBweDtkaXNwbGF5OiBibG9jazttYXJnaW46IGF1dG87fS53ZWJvZGYtY2FyZXRPdmVybGF5IC5oYW5kbGUuYWN0aXZlIHtvcGFjaXR5OiAwLjg7fS53ZWJvZGYtY2FyZXRPdmVybGF5IC5oYW5kbGU6YWZ0ZXIge2NvbnRlbnQ6ICIgIjtwb3NpdGlvbjogYWJzb2x1dGU7d2lkdGg6IDBweDtoZWlnaHQ6IDBweDtib3JkZXItc3R5bGU6IHNvbGlkO2JvcmRlci13aWR0aDogOC43cHggNXB4IDAgNXB4O2JvcmRlci1jb2xvcjogYmxhY2sgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7dG9wOiAxMDAlO2xlZnQ6IDQzJTt9LndlYm9kZi1jYXJldFNpemVyIHtkaXNwbGF5OiBpbmxpbmUtYmxvY2s7d2lkdGg6IDA7dmlzaWJpbGl0eTogaGlkZGVuO30jZXZlbnRUcmFwIHtkaXNwbGF5OiBibG9jaztwb3NpdGlvbjogYWJzb2x1dGU7Ym90dG9tOiAwO2xlZnQ6IDA7b3V0bGluZTogbm9uZTtvcGFjaXR5OiAwO2NvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDApO3BvaW50ZXItZXZlbnRzOiBub25lO3doaXRlLXNwYWNlOiBwcmU7b3ZlcmZsb3c6IGhpZGRlbjt9Y3Vyc29yfGN1cnNvciA+ICNjb21wb3NlciB7dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7fWN1cnNvcnxjdXJzb3JbY3Vyc29yfGNhcmV0LXNpemVyLWFjdGl2ZT0idHJ1ZSJdLGN1cnNvcnxjdXJzb3JbY3Vyc29yfGNvbXBvc2luZz0idHJ1ZSJdIHtkaXNwbGF5OiBpbmxpbmU7fWVkaXRpbmZvfGVkaXRpbmZvIHtkaXNwbGF5OiBpbmxpbmUtYmxvY2s7fS5lZGl0SW5mb01hcmtlciB7cG9zaXRpb246IGFic29sdXRlO3dpZHRoOiAxMHB4O2hlaWdodDogMTAwJTtsZWZ0OiAtMjBweDtvcGFjaXR5OiAwLjg7dG9wOiAwO2JvcmRlci1yYWRpdXM6IDVweDtiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtib3gtc2hhZG93OiAwcHggMHB4IDVweCByZ2JhKDUwLCA1MCwgNTAsIDAuNzUpO30uZWRpdEluZm9NYXJrZXI6aG92ZXIge2JveC1zaGFkb3c6IDBweCAwcHggOHB4IHJnYmEoMCwgMCwgMCwgMSk7fS5lZGl0SW5mb0hhbmRsZSB7cG9zaXRpb246IGFic29sdXRlO2JhY2tncm91bmQtY29sb3I6IGJsYWNrO3BhZGRpbmc6IDVweDtib3JkZXItcmFkaXVzOiA1cHg7b3BhY2l0eTogMC44O2JveC1zaGFkb3c6IDBweCAwcHggNXB4IHJnYmEoNTAsIDUwLCA1MCwgMC43NSk7Ym90dG9tOiAxMDAlO21hcmdpbi1ib3R0b206IDEwcHg7ei1pbmRleDogMztsZWZ0OiAtMjVweDt9LmVkaXRJbmZvSGFuZGxlOmFmdGVyIHtjb250ZW50OiAiICI7cG9zaXRpb246IGFic29sdXRlO3dpZHRoOiAwcHg7aGVpZ2h0OiAwcHg7Ym9yZGVyLXN0eWxlOiBzb2xpZDtib3JkZXItd2lkdGg6IDguN3B4IDVweCAwIDVweDtib3JkZXItY29sb3I6IGJsYWNrIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O3RvcDogMTAwJTtsZWZ0OiA1cHg7fS5lZGl0SW5mbyB7Zm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7Zm9udC13ZWlnaHQ6IG5vcm1hbDtmb250LXN0eWxlOiBub3JtYWw7dGV4dC1kZWNvcmF0aW9uOiBub25lO2NvbG9yOiB3aGl0ZTt3aWR0aDogMTAwJTtoZWlnaHQ6IDEycHQ7fS5lZGl0SW5mb0NvbG9yIHtmbG9hdDogbGVmdDt3aWR0aDogMTBwdDtoZWlnaHQ6IDEwcHQ7Ym9yZGVyOiAxcHggc29saWQgd2hpdGU7fS5lZGl0SW5mb0F1dGhvciB7ZmxvYXQ6IGxlZnQ7bWFyZ2luLWxlZnQ6IDVwdDtmb250LXNpemU6IDEwcHQ7dGV4dC1hbGlnbjogbGVmdDtoZWlnaHQ6IDEycHQ7bGluZS1oZWlnaHQ6IDEycHQ7fS5lZGl0SW5mb1RpbWUge2Zsb2F0OiByaWdodDttYXJnaW4tbGVmdDogMzBwdDtmb250LXNpemU6IDhwdDtmb250LXN0eWxlOiBpdGFsaWM7Y29sb3I6IHllbGxvdztoZWlnaHQ6IDEycHQ7bGluZS1oZWlnaHQ6IDEycHQ7fS5hbm5vdGF0aW9uV3JhcHBlciB7ZGlzcGxheTogaW5saW5lO3Bvc2l0aW9uOiByZWxhdGl2ZTt9LmFubm90YXRpb25SZW1vdmVCdXR0b246YmVmb3JlIHtjb250ZW50OiAiXHUwMGQ3Ijtjb2xvcjogd2hpdGU7cGFkZGluZzogNXB4O2xpbmUtaGVpZ2h0OiAxZW07fS5hbm5vdGF0aW9uUmVtb3ZlQnV0dG9uIHt3aWR0aDogMjBweDtoZWlnaHQ6IDIwcHg7Ym9yZGVyLXJhZGl1czogMTBweDtiYWNrZ3JvdW5kLWNvbG9yOiBibGFjaztib3gtc2hhZG93OiAwcHggMHB4IDVweCByZ2JhKDUwLCA1MCwgNTAsIDAuNzUpO3Bvc2l0aW9uOiBhYnNvbHV0ZTt0b3A6IC0xMHB4O2xlZnQ6IC0xMHB4O3otaW5kZXg6IDM7dGV4dC1hbGlnbjogY2VudGVyO2ZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmO2ZvbnQtc3R5bGU6IG5vcm1hbDtmb250LXdlaWdodDogbm9ybWFsO3RleHQtZGVjb3JhdGlvbjogbm9uZTtmb250LXNpemU6IDE1cHg7fS5hbm5vdGF0aW9uUmVtb3ZlQnV0dG9uOmhvdmVyIHtjdXJzb3I6IHBvaW50ZXI7Ym94LXNoYWRvdzogMHB4IDBweCA1cHggcmdiYSgwLCAwLCAwLCAxKTt9LmFubm90YXRpb25Ob3RlIHt3aWR0aDogNGNtO3Bvc2l0aW9uOiBhYnNvbHV0ZTtkaXNwbGF5OiBpbmxpbmU7ei1pbmRleDogMTA7dG9wOiAwO30uYW5ub3RhdGlvbk5vdGUgPiBvZmZpY2V8YW5ub3RhdGlvbiB7ZGlzcGxheTogYmxvY2s7dGV4dC1hbGlnbjogbGVmdDt9LmFubm90YXRpb25Db25uZWN0b3Ige3Bvc2l0aW9uOiBhYnNvbHV0ZTtkaXNwbGF5OiBpbmxpbmU7dG9wOiAwO3otaW5kZXg6IDI7Ym9yZGVyLXRvcDogMXB4IGRhc2hlZCBicm93bjt9LmFubm90YXRpb25Db25uZWN0b3IuYW5ndWxhciB7LW1vei10cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IHRvcDstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGxlZnQgdG9wOy1tcy10cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IHRvcDt0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IHRvcDt9LmFubm90YXRpb25Db25uZWN0b3IuaG9yaXpvbnRhbCB7bGVmdDogMDt9LmFubm90YXRpb25Db25uZWN0b3IuaG9yaXpvbnRhbDpiZWZvcmUge2NvbnRlbnQ6ICIiO2Rpc3BsYXk6IGlubGluZTtwb3NpdGlvbjogYWJzb2x1dGU7d2lkdGg6IDBweDtoZWlnaHQ6IDBweDtib3JkZXItc3R5bGU6IHNvbGlkO2JvcmRlci13aWR0aDogOC43cHggNXB4IDAgNXB4O2JvcmRlci1jb2xvcjogYnJvd24gdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7dG9wOiAtMXB4O2xlZnQ6IC01cHg7fW9mZmljZXxhbm5vdGF0aW9uIHt3aWR0aDogMTAwJTtoZWlnaHQ6IDEwMCU7ZGlzcGxheTogbm9uZTtiYWNrZ3JvdW5kOiByZ2IoMTk4LCAyMzgsIDE4NCk7YmFja2dyb3VuZDogLW1vei1saW5lYXItZ3JhZGllbnQoOTBkZWcsIHJnYigxOTgsIDIzOCwgMTg0KSAzMCUsIHJnYigxODAsIDE5NiwgMTU5KSAxMDAlKTtiYWNrZ3JvdW5kOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCg5MGRlZywgcmdiKDE5OCwgMjM4LCAxODQpIDMwJSwgcmdiKDE4MCwgMTk2LCAxNTkpIDEwMCUpO2JhY2tncm91bmQ6IC1vLWxpbmVhci1ncmFkaWVudCg5MGRlZywgcmdiKDE5OCwgMjM4LCAxODQpIDMwJSwgcmdiKDE4MCwgMTk2LCAxNTkpIDEwMCUpO2JhY2tncm91bmQ6IC1tcy1saW5lYXItZ3JhZGllbnQoOTBkZWcsIHJnYigxOTgsIDIzOCwgMTg0KSAzMCUsIHJnYigxODAsIDE5NiwgMTU5KSAxMDAlKTtiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCByZ2IoMTk4LCAyMzgsIDE4NCkgMzAlLCByZ2IoMTgwLCAxOTYsIDE1OSkgMTAwJSk7Ym94LXNoYWRvdzogMCAzcHggNHB4IC0zcHggI2NjYzt9b2ZmaWNlfGFubm90YXRpb24gPiBkY3xjcmVhdG9yIHtkaXNwbGF5OiBibG9jaztmb250LXNpemU6IDEwcHQ7Zm9udC13ZWlnaHQ6IG5vcm1hbDtmb250LXN0eWxlOiBub3JtYWw7Zm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7Y29sb3I6IHdoaXRlO2JhY2tncm91bmQtY29sb3I6IGJyb3duO3BhZGRpbmc6IDRweDt9b2ZmaWNlfGFubm90YXRpb24gPiBkY3xkYXRlIHtkaXNwbGF5OiBibG9jaztmb250LXNpemU6IDEwcHQ7Zm9udC13ZWlnaHQ6IG5vcm1hbDtmb250LXN0eWxlOiBub3JtYWw7Zm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7Ym9yZGVyOiA0cHggc29saWQgdHJhbnNwYXJlbnQ7Y29sb3I6IGJsYWNrO31vZmZpY2V8YW5ub3RhdGlvbiA+IHRleHR8bGlzdCB7ZGlzcGxheTogYmxvY2s7cGFkZGluZzogNXB4O31vZmZpY2V8YW5ub3RhdGlvbiB0ZXh0fHAge2ZvbnQtc2l6ZTogMTBwdDtjb2xvcjogYmxhY2s7Zm9udC13ZWlnaHQ6IG5vcm1hbDtmb250LXN0eWxlOiBub3JtYWw7dGV4dC1kZWNvcmF0aW9uOiBub25lO2ZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmO30jYW5ub3RhdGlvbnNQYW5lIHtiYWNrZ3JvdW5kLWNvbG9yOiAjRUFFQUVBO3dpZHRoOiA0Y207aGVpZ2h0OiAxMDAlO2Rpc3BsYXk6IG5vbmU7cG9zaXRpb246IGFic29sdXRlO291dGxpbmU6IDFweCBzb2xpZCAjY2NjO30ud2Vib2RmLWFubm90YXRpb25IaWdobGlnaHQge2JhY2tncm91bmQtY29sb3I6IHllbGxvdztwb3NpdGlvbjogcmVsYXRpdmU7fS53ZWJvZGYtc2VsZWN0aW9uT3ZlcmxheSB7cG9zaXRpb246IGFic29sdXRlO3BvaW50ZXItZXZlbnRzOiBub25lO3RvcDogMDtsZWZ0OiAwO3RvcDogMDtsZWZ0OiAwO3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTt6LWluZGV4OiAxNTt9LndlYm9kZi1zZWxlY3Rpb25PdmVybGF5ID4gcG9seWdvbiB7ZmlsbC1vcGFjaXR5OiAwLjM7c3Ryb2tlLW9wYWNpdHk6IDAuODtzdHJva2Utd2lkdGg6IDE7ZmlsbC1ydWxlOiBldmVub2RkO30ud2Vib2RmLXNlbGVjdGlvbk92ZXJsYXkgPiAud2Vib2RmLWRyYWdnYWJsZSB7ZmlsbC1vcGFjaXR5OiAwLjg7c3Ryb2tlLW9wYWNpdHk6IDA7c3Ryb2tlLXdpZHRoOiA4O3BvaW50ZXItZXZlbnRzOiBhbGw7ZGlzcGxheTogbm9uZTstbW96LXRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgY2VudGVyOy1tcy10cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgY2VudGVyO3RyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7fSNpbWFnZVNlbGVjdG9yIHtkaXNwbGF5OiBub25lO3Bvc2l0aW9uOiBhYnNvbHV0ZTtib3JkZXItc3R5bGU6IHNvbGlkO2JvcmRlci1jb2xvcjogYmxhY2s7fSNpbWFnZVNlbGVjdG9yID4gZGl2IHt3aWR0aDogNXB4O2hlaWdodDogNXB4O2Rpc3BsYXk6IGJsb2NrO3Bvc2l0aW9uOiBhYnNvbHV0ZTtib3JkZXI6IDFweCBzb2xpZCBibGFjaztiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO30jaW1hZ2VTZWxlY3RvciA+IC50b3BMZWZ0IHt0b3A6IC00cHg7bGVmdDogLTRweDt9I2ltYWdlU2VsZWN0b3IgPiAudG9wUmlnaHQge3RvcDogLTRweDtyaWdodDogLTRweDt9I2ltYWdlU2VsZWN0b3IgPiAuYm90dG9tUmlnaHQge3JpZ2h0OiAtNHB4O2JvdHRvbTogLTRweDt9I2ltYWdlU2VsZWN0b3IgPiAuYm90dG9tTGVmdCB7Ym90dG9tOiAtNHB4O2xlZnQ6IC00cHg7fSNpbWFnZVNlbGVjdG9yID4gLnRvcE1pZGRsZSB7dG9wOiAtNHB4O2xlZnQ6IDUwJTttYXJnaW4tbGVmdDogLTIuNXB4O30jaW1hZ2VTZWxlY3RvciA+IC5yaWdodE1pZGRsZSB7dG9wOiA1MCU7cmlnaHQ6IC00cHg7bWFyZ2luLXRvcDogLTIuNXB4O30jaW1hZ2VTZWxlY3RvciA+IC5ib3R0b21NaWRkbGUge2JvdHRvbTogLTRweDtsZWZ0OiA1MCU7bWFyZ2luLWxlZnQ6IC0yLjVweDt9I2ltYWdlU2VsZWN0b3IgPiAubGVmdE1pZGRsZSB7dG9wOiA1MCU7bGVmdDogLTRweDttYXJnaW4tdG9wOiAtMi41cHg7fWRpdi53ZWJvZGYtY3VzdG9tU2Nyb2xsYmFyczo6LXdlYmtpdC1zY3JvbGxiYXJ7d2lkdGg6IDhweDtoZWlnaHQ6IDhweDtiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDt9ZGl2LndlYm9kZi1jdXN0b21TY3JvbGxiYXJzOjotd2Via2l0LXNjcm9sbGJhci10cmFja3tiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDt9ZGl2LndlYm9kZi1jdXN0b21TY3JvbGxiYXJzOjotd2Via2l0LXNjcm9sbGJhci10aHVtYntiYWNrZ3JvdW5kLWNvbG9yOiAjNDQ0O2JvcmRlci1yYWRpdXM6IDRweDt9LndlYm9kZi1oeXBlcmxpbmtUb29sdGlwIHtkaXNwbGF5OiBub25lO2NvbG9yOiB3aGl0ZTtiYWNrZ3JvdW5kLWNvbG9yOiBibGFjaztib3JkZXItcmFkaXVzOiA1cHg7Ym94LXNoYWRvdzogMnB4IDJweCA1cHggZ3JheTtwYWRkaW5nOiAzcHg7cG9zaXRpb246IGFic29sdXRlO21heC13aWR0aDogMjEwcHg7dGV4dC1hbGlnbjogbGVmdDt3b3JkLWJyZWFrOiBicmVhay1hbGw7ei1pbmRleDogMTY7fS53ZWJvZGYtaHlwZXJsaW5rVG9vbHRpcFRleHQge2Rpc3BsYXk6IGJsb2NrO2ZvbnQtd2VpZ2h0OiBib2xkO30nOy8qCgogQGxpY3N0YXJ0CkpTWmlwIC0gQSBKYXZhc2NyaXB0IGNsYXNzIGZvciBnZW5lcmF0aW5nIGFuZCByZWFkaW5nIHppcCBmaWxlcwo8aHR0cDovL3N0dWFydGsuY29tL2pzemlwPgoKKGMpIDIwMDktMjAxNCBTdHVhcnQgS25pZ2h0bGV5IDxzdHVhcnQgW2F0XSBzdHVhcnRrLmNvbT4KRHVhbCBsaWNlbmNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2Ugb3IgR1BMdjMuIFNlZSBodHRwczovL3Jhdy5naXRodWIuY29tL1N0dWsvanN6aXAvbWFzdGVyL0xJQ0VOU0UubWFya2Rvd24uCgpKU1ppcCB1c2VzIHRoZSBsaWJyYXJ5IHBha28gcmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIDoKaHR0cHM6Ly9naXRodWIuY29tL25vZGVjYS9wYWtvL2Jsb2IvbWFzdGVyL0xJQ0VOU0UKIEBsaWNlbmQKKi8KIWZ1bmN0aW9uKGUpe3ZhciBnbG9iYWxTY29wZT10eXBlb2Ygd2luZG93IT09InVuZGVmaW5lZCI/d2luZG93OnR5cGVvZiBnbG9iYWwhPT0idW5kZWZpbmVkIj9nbG9iYWw6e30sZXh0ZXJucz1nbG9iYWxTY29wZS5leHRlcm5zfHwoZ2xvYmFsU2NvcGUuZXh0ZXJucz17fSk7ZXh0ZXJucy5KU1ppcD1lKCl9KGZ1bmN0aW9uKCl7dmFyIGRlZmluZSxtb2R1bGUsZXhwb3J0cztyZXR1cm4gZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PSJmdW5jdGlvbiImJnJlcXVpcmU7aWYoIXUmJmEpcmV0dXJuIGEobywhMCk7aWYoaSlyZXR1cm4gaShvLCEwKTt0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIitvKyInIik7fXZhciBmPW5bb109e2V4cG9ydHM6e319O3Rbb11bMF0uY2FsbChmLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG49dFtvXVsxXVtlXTtyZXR1cm4gcyhuP246ZSl9LGYsCmYuZXhwb3J0cyxlLHQsbixyKX1yZXR1cm4gbltvXS5leHBvcnRzfXZhciBpPXR5cGVvZiByZXF1aXJlPT0iZnVuY3Rpb24iJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KHsxOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXt2YXIgX2tleVN0cj0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLz0iO2V4cG9ydHMuZW5jb2RlPWZ1bmN0aW9uKGlucHV0LHV0Zjgpe3ZhciBvdXRwdXQ9IiI7dmFyIGNocjEsY2hyMixjaHIzLGVuYzEsZW5jMixlbmMzLGVuYzQ7dmFyIGk9MDt3aGlsZShpPGlucHV0Lmxlbmd0aCl7Y2hyMT1pbnB1dC5jaGFyQ29kZUF0KGkrKyk7Y2hyMj1pbnB1dC5jaGFyQ29kZUF0KGkrKyk7Y2hyMz1pbnB1dC5jaGFyQ29kZUF0KGkrKyk7ZW5jMT1jaHIxPj4yO2VuYzI9KGNocjEmMyk8PDR8Y2hyMj4+NDtlbmMzPShjaHIyJjE1KTw8MnxjaHIzPj4KNjtlbmM0PWNocjMmNjM7aWYoaXNOYU4oY2hyMikpZW5jMz1lbmM0PTY0O2Vsc2UgaWYoaXNOYU4oY2hyMykpZW5jND02NDtvdXRwdXQ9b3V0cHV0K19rZXlTdHIuY2hhckF0KGVuYzEpK19rZXlTdHIuY2hhckF0KGVuYzIpK19rZXlTdHIuY2hhckF0KGVuYzMpK19rZXlTdHIuY2hhckF0KGVuYzQpfXJldHVybiBvdXRwdXR9O2V4cG9ydHMuZGVjb2RlPWZ1bmN0aW9uKGlucHV0LHV0Zjgpe3ZhciBvdXRwdXQ9IiI7dmFyIGNocjEsY2hyMixjaHIzO3ZhciBlbmMxLGVuYzIsZW5jMyxlbmM0O3ZhciBpPTA7aW5wdXQ9aW5wdXQucmVwbGFjZSgvW15BLVphLXowLTlcK1wvXD1dL2csIiIpO3doaWxlKGk8aW5wdXQubGVuZ3RoKXtlbmMxPV9rZXlTdHIuaW5kZXhPZihpbnB1dC5jaGFyQXQoaSsrKSk7ZW5jMj1fa2V5U3RyLmluZGV4T2YoaW5wdXQuY2hhckF0KGkrKykpO2VuYzM9X2tleVN0ci5pbmRleE9mKGlucHV0LmNoYXJBdChpKyspKTtlbmM0PV9rZXlTdHIuaW5kZXhPZihpbnB1dC5jaGFyQXQoaSsrKSk7CmNocjE9ZW5jMTw8MnxlbmMyPj40O2NocjI9KGVuYzImMTUpPDw0fGVuYzM+PjI7Y2hyMz0oZW5jMyYzKTw8NnxlbmM0O291dHB1dD1vdXRwdXQrU3RyaW5nLmZyb21DaGFyQ29kZShjaHIxKTtpZihlbmMzIT02NClvdXRwdXQ9b3V0cHV0K1N0cmluZy5mcm9tQ2hhckNvZGUoY2hyMik7aWYoZW5jNCE9NjQpb3V0cHV0PW91dHB1dCtTdHJpbmcuZnJvbUNoYXJDb2RlKGNocjMpfXJldHVybiBvdXRwdXR9fSx7fV0sMjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7ZnVuY3Rpb24gQ29tcHJlc3NlZE9iamVjdCgpe3RoaXMuY29tcHJlc3NlZFNpemU9MDt0aGlzLnVuY29tcHJlc3NlZFNpemU9MDt0aGlzLmNyYzMyPTA7dGhpcy5jb21wcmVzc2lvbk1ldGhvZD1udWxsO3RoaXMuY29tcHJlc3NlZENvbnRlbnQ9bnVsbH1Db21wcmVzc2VkT2JqZWN0LnByb3RvdHlwZT17Z2V0Q29udGVudDpmdW5jdGlvbigpe3JldHVybiBudWxsfSxnZXRDb21wcmVzc2VkQ29udGVudDpmdW5jdGlvbigpe3JldHVybiBudWxsfX07Cm1vZHVsZS5leHBvcnRzPUNvbXByZXNzZWRPYmplY3R9LHt9XSwzOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtleHBvcnRzLlNUT1JFPXttYWdpYzoiXHgwMFx4MDAiLGNvbXByZXNzOmZ1bmN0aW9uKGNvbnRlbnQpe3JldHVybiBjb250ZW50fSx1bmNvbXByZXNzOmZ1bmN0aW9uKGNvbnRlbnQpe3JldHVybiBjb250ZW50fSxjb21wcmVzc0lucHV0VHlwZTpudWxsLHVuY29tcHJlc3NJbnB1dFR5cGU6bnVsbH07ZXhwb3J0cy5ERUZMQVRFPV9kZXJlcV8oIi4vZmxhdGUiKX0seyIuL2ZsYXRlIjo4fV0sNDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7dmFyIHV0aWxzPV9kZXJlcV8oIi4vdXRpbHMiKTt2YXIgdGFibGU9WzAsMTk5Njk1OTg5NCwzOTkzOTE5Nzg4LDI1Njc1MjQ3OTQsMTI0NjM0MTM3LDE4ODYwNTc2MTUsMzkxNTYyMTY4NSwyNjU3MzkyMDM1LDI0OTI2ODI3NCwyMDQ0NTA4MzI0LDM3NzIxMTUyMzAsMjU0NzE3Nzg2NCwxNjI5NDE5OTUsMjEyNTU2MTAyMSwKMzg4NzYwNzA0NywyNDI4NDQ0MDQ5LDQ5ODUzNjU0OCwxNzg5OTI3NjY2LDQwODkwMTY2NDgsMjIyNzA2MTIxNCw0NTA1NDg4NjEsMTg0MzI1ODYwMyw0MTA3NTgwNzUzLDIyMTE2Nzc2MzksMzI1ODgzOTkwLDE2ODQ3NzcxNTIsNDI1MTEyMjA0MiwyMzIxOTI2NjM2LDMzNTYzMzQ4NywxNjYxMzY1NDY1LDQxOTUzMDI3NTUsMjM2NjExNTMxNyw5OTcwNzMwOTYsMTI4MTk1Mzg4NiwzNTc5ODU1MzMyLDI3MjQ2ODgyNDIsMTAwNjg4ODE0NSwxMjU4NjA3Njg3LDM1MjQxMDE2MjksMjc2ODk0MjQ0Myw5MDEwOTc3MjIsMTExOTAwMDY4NCwzNjg2NTE3MjA2LDI4OTgwNjU3MjgsODUzMDQ0NDUxLDExNzIyNjYxMDEsMzcwNTAxNTc1OSwyODgyNjE2NjY1LDY1MTc2Nzk4MCwxMzczNTAzNTQ2LDMzNjk1NTQzMDQsMzIxODEwNDU5OCw1NjU1MDcyNTMsMTQ1NDYyMTczMSwzNDg1MTExNzA1LDMwOTk0MzYzMDMsNjcxMjY2OTc0LDE1OTQxOTgwMjQsMzMyMjczMDkzMCwyOTcwMzQ3ODEyLDc5NTgzNTUyNywKMTQ4MzIzMDIyNSwzMjQ0MzY3Mjc1LDMwNjAxNDk1NjUsMTk5NDE0NjE5MiwzMTE1ODUzNCwyNTYzOTA3NzcyLDQwMjM3MTc5MzAsMTkwNzQ1OTQ2NSwxMTI2MzcyMTUsMjY4MDE1MzI1MywzOTA0NDI3MDU5LDIwMTM3NzYyOTAsMjUxNzIyMDM2LDI1MTcyMTUzNzQsMzc3NTgzMDA0MCwyMTM3NjU2NzYzLDE0MTM3NjgxMywyNDM5Mjc3NzE5LDM4NjUyNzEyOTcsMTgwMjE5NTQ0NCw0NzY4NjQ4NjYsMjIzODAwMTM2OCw0MDY2NTA4ODc4LDE4MTIzNzA5MjUsNDUzMDkyNzMxLDIxODE2MjUwMjUsNDExMTQ1MTIyMywxNzA2MDg4OTAyLDMxNDA0MjcwNCwyMzQ0NTMyMjAyLDQyNDAwMTc1MzIsMTY1ODY1ODI3MSwzNjY2MTk5NzcsMjM2MjY3MDMyMyw0MjI0OTk0NDA1LDEzMDM1MzU5NjAsOTg0OTYxNDg2LDI3NDcwMDcwOTIsMzU2OTAzNzUzOCwxMjU2MTcwODE3LDEwMzc2MDQzMTEsMjc2NTIxMDczMywzNTU0MDc5OTk1LDExMzEwMTQ1MDYsODc5Njc5OTk2LDI5MDkyNDM0NjIsMzY2Mzc3MTg1NiwKMTE0MTEyNDQ2Nyw4NTU4NDIyNzcsMjg1MjgwMTYzMSwzNzA4NjQ4NjQ5LDEzNDI1MzM5NDgsNjU0NDU5MzA2LDMxODgzOTYwNDgsMzM3MzAxNTE3NCwxNDY2NDc5OTA5LDU0NDE3OTYzNSwzMTEwNTIzOTEzLDM0NjI1MjIwMTUsMTU5MTY3MTA1NCw3MDIxMzg3NzYsMjk2NjQ2MDQ1MCwzMzUyNzk5NDEyLDE1MDQ5MTg4MDcsNzgzNTUxODczLDMwODI2NDA0NDMsMzIzMzQ0Mjk4OSwzOTg4MjkyMzg0LDI1OTYyNTQ2NDYsNjIzMTcwNjgsMTk1NzgxMDg0MiwzOTM5ODQ1OTQ1LDI2NDc4MTYxMTEsODE0NzA5OTcsMTk0MzgwMzUyMywzODE0OTE4OTMwLDI0ODk1OTY4MDQsMjI1Mjc0NDMwLDIwNTM3OTAzNzYsMzgyNjE3NTc1NSwyNDY2OTA2MDEzLDE2NzgxNjc0MywyMDk3NjUxMzc3LDQwMjc1NTI1ODAsMjI2NTQ5MDM4Niw1MDM0NDQwNzIsMTc2MjA1MDgxNCw0MTUwNDE3MjQ1LDIxNTQxMjkzNTUsNDI2NTIyMjI1LDE4NTI1MDc4NzksNDI3NTMxMzUyNiwyMzEyMzE3OTIwLDI4Mjc1MzYyNiwKMTc0MjU1NTg1Miw0MTg5NzA4MTQzLDIzOTQ4Nzc5NDUsMzk3OTE3NzYzLDE2MjIxODM2MzcsMzYwNDM5MDg4OCwyNzE0ODY2NTU4LDk1MzcyOTczMiwxMzQwMDc2NjI2LDM1MTg3MTk5ODUsMjc5NzM2MDk5OSwxMDY4ODI4MzgxLDEyMTk2Mzg4NTksMzYyNDc0MTg1MCwyOTM2Njc1MTQ4LDkwNjE4NTQ2MiwxMDkwODEyNTEyLDM3NDc2NzIwMDMsMjgyNTM3OTY2OSw4MjkzMjkxMzUsMTE4MTMzNTE2MSwzNDEyMTc3ODA0LDMxNjA4MzQ4NDIsNjI4MDg1NDA4LDEzODI2MDUzNjYsMzQyMzM2OTEwOSwzMTM4MDc4NDY3LDU3MDU2MjIzMywxNDI2NDAwODE1LDMzMTczMTY1NDIsMjk5ODczMzYwOCw3MzMyMzk5NTQsMTU1NTI2MTk1NiwzMjY4OTM1NTkxLDMwNTAzNjA2MjUsNzUyNDU5NDAzLDE1NDEzMjAyMjEsMjYwNzA3MTkyMCwzOTY1OTczMDMwLDE5Njk5MjI5NzIsNDA3MzU0OTgsMjYxNzgzNzIyNSwzOTQzNTc3MTUxLDE5MTMwODc4NzcsODM5MDgzNzEsMjUxMjM0MTYzNCwzODAzNzQwNjkyLAoyMDc1MjA4NjIyLDIxMzI2MTExMiwyNDYzMjcyNjAzLDM4NTU5OTAyODUsMjA5NDg1NDA3MSwxOTg5NTg4ODEsMjI2MjAyOTAxMiw0MDU3MjYwNjEwLDE3NTkzNTk5OTIsNTM0NDE0MTkwLDIxNzY3MTg1NDEsNDEzOTMyOTExNSwxODczODM2MDAxLDQxNDY2NDU2NywyMjgyMjQ4OTM0LDQyNzkyMDAzNjgsMTcxMTY4NDU1NCwyODUyODExMTYsMjQwNTgwMTcyNyw0MTY3MjE2NzQ1LDE2MzQ0Njc3OTUsMzc2MjI5NzAxLDI2ODUwNjc4OTYsMzYwODAwNzQwNiwxMzA4OTE4NjEyLDk1NjU0MzkzOCwyODA4NTU1MTA1LDM0OTU5NTgyNjMsMTIzMTYzNjMwMSwxMDQ3NDI3MDM1LDI5MzI5NTk4MTgsMzY1NDcwMzgzNiwxMDg4MzU5MjcwLDkzNjkxOEUzLDI4NDc3MTQ4OTksMzczNjgzNzgyOSwxMjAyOTAwODYzLDgxNzIzMzg5NywzMTgzMzQyMTA4LDM0MDEyMzcxMzAsMTQwNDI3NzU1Miw2MTU4MTgxNTAsMzEzNDIwNzQ5MywzNDUzNDIxMjAzLDE0MjM4NTc0NDksNjAxNDUwNDMxLDMwMDk4Mzc2MTQsCjMyOTQ3MTA0NTYsMTU2NzEwMzc0Niw3MTE5Mjg3MjQsMzAyMDY2ODQ3MSwzMjcyMzgwMDY1LDE1MTAzMzQyMzUsNzU1MTY3MTE3XTttb2R1bGUuZXhwb3J0cz1mdW5jdGlvbiBjcmMzMihpbnB1dCxjcmMpe2lmKHR5cGVvZiBpbnB1dD09PSJ1bmRlZmluZWQifHwhaW5wdXQubGVuZ3RoKXJldHVybiAwO3ZhciBpc0FycmF5PXV0aWxzLmdldFR5cGVPZihpbnB1dCkhPT0ic3RyaW5nIjtpZih0eXBlb2YgY3JjPT0idW5kZWZpbmVkIiljcmM9MDt2YXIgeD0wO3ZhciB5PTA7dmFyIGI9MDtjcmM9Y3JjXi0xO2Zvcih2YXIgaT0wLGlUb3A9aW5wdXQubGVuZ3RoO2k8aVRvcDtpKyspe2I9aXNBcnJheT9pbnB1dFtpXTppbnB1dC5jaGFyQ29kZUF0KGkpO3k9KGNyY15iKSYyNTU7eD10YWJsZVt5XTtjcmM9Y3JjPj4+OF54fXJldHVybiBjcmNeLTF9fSx7Ii4vdXRpbHMiOjIxfV0sNTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7dmFyIHV0aWxzPV9kZXJlcV8oIi4vdXRpbHMiKTsKZnVuY3Rpb24gRGF0YVJlYWRlcihkYXRhKXt0aGlzLmRhdGE9bnVsbDt0aGlzLmxlbmd0aD0wO3RoaXMuaW5kZXg9MH1EYXRhUmVhZGVyLnByb3RvdHlwZT17Y2hlY2tPZmZzZXQ6ZnVuY3Rpb24ob2Zmc2V0KXt0aGlzLmNoZWNrSW5kZXgodGhpcy5pbmRleCtvZmZzZXQpfSxjaGVja0luZGV4OmZ1bmN0aW9uKG5ld0luZGV4KXtpZih0aGlzLmxlbmd0aDxuZXdJbmRleHx8bmV3SW5kZXg8MCl0aHJvdyBuZXcgRXJyb3IoIkVuZCBvZiBkYXRhIHJlYWNoZWQgKGRhdGEgbGVuZ3RoID0gIit0aGlzLmxlbmd0aCsiLCBhc2tlZCBpbmRleCA9ICIrbmV3SW5kZXgrIikuIENvcnJ1cHRlZCB6aXAgPyIpO30sc2V0SW5kZXg6ZnVuY3Rpb24obmV3SW5kZXgpe3RoaXMuY2hlY2tJbmRleChuZXdJbmRleCk7dGhpcy5pbmRleD1uZXdJbmRleH0sc2tpcDpmdW5jdGlvbihuKXt0aGlzLnNldEluZGV4KHRoaXMuaW5kZXgrbil9LGJ5dGVBdDpmdW5jdGlvbihpKXt9LHJlYWRJbnQ6ZnVuY3Rpb24oc2l6ZSl7dmFyIHJlc3VsdD0KMCxpO3RoaXMuY2hlY2tPZmZzZXQoc2l6ZSk7Zm9yKGk9dGhpcy5pbmRleCtzaXplLTE7aT49dGhpcy5pbmRleDtpLS0pcmVzdWx0PShyZXN1bHQ8PDgpK3RoaXMuYnl0ZUF0KGkpO3RoaXMuaW5kZXgrPXNpemU7cmV0dXJuIHJlc3VsdH0scmVhZFN0cmluZzpmdW5jdGlvbihzaXplKXtyZXR1cm4gdXRpbHMudHJhbnNmb3JtVG8oInN0cmluZyIsdGhpcy5yZWFkRGF0YShzaXplKSl9LHJlYWREYXRhOmZ1bmN0aW9uKHNpemUpe30sbGFzdEluZGV4T2ZTaWduYXR1cmU6ZnVuY3Rpb24oc2lnKXt9LHJlYWREYXRlOmZ1bmN0aW9uKCl7dmFyIGRvc3RpbWU9dGhpcy5yZWFkSW50KDQpO3JldHVybiBuZXcgRGF0ZSgoZG9zdGltZT4+MjUmMTI3KSsxOTgwLChkb3N0aW1lPj4yMSYxNSktMSxkb3N0aW1lPj4xNiYzMSxkb3N0aW1lPj4xMSYzMSxkb3N0aW1lPj41JjYzLChkb3N0aW1lJjMxKTw8MSl9fTttb2R1bGUuZXhwb3J0cz1EYXRhUmVhZGVyfSx7Ii4vdXRpbHMiOjIxfV0sNjpbZnVuY3Rpb24oX2RlcmVxXywKbW9kdWxlLGV4cG9ydHMpe2V4cG9ydHMuYmFzZTY0PWZhbHNlO2V4cG9ydHMuYmluYXJ5PWZhbHNlO2V4cG9ydHMuZGlyPWZhbHNlO2V4cG9ydHMuY3JlYXRlRm9sZGVycz1mYWxzZTtleHBvcnRzLmRhdGU9bnVsbDtleHBvcnRzLmNvbXByZXNzaW9uPW51bGw7ZXhwb3J0cy5jb21tZW50PW51bGx9LHt9XSw3OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXt2YXIgdXRpbHM9X2RlcmVxXygiLi91dGlscyIpO2V4cG9ydHMuc3RyaW5nMmJpbmFyeT1mdW5jdGlvbihzdHIpe3JldHVybiB1dGlscy5zdHJpbmcyYmluYXJ5KHN0cil9O2V4cG9ydHMuc3RyaW5nMlVpbnQ4QXJyYXk9ZnVuY3Rpb24oc3RyKXtyZXR1cm4gdXRpbHMudHJhbnNmb3JtVG8oInVpbnQ4YXJyYXkiLHN0cil9O2V4cG9ydHMudWludDhBcnJheTJTdHJpbmc9ZnVuY3Rpb24oYXJyYXkpe3JldHVybiB1dGlscy50cmFuc2Zvcm1Ubygic3RyaW5nIixhcnJheSl9O2V4cG9ydHMuc3RyaW5nMkJsb2I9ZnVuY3Rpb24oc3RyKXt2YXIgYnVmZmVyPQp1dGlscy50cmFuc2Zvcm1UbygiYXJyYXlidWZmZXIiLHN0cik7cmV0dXJuIHV0aWxzLmFycmF5QnVmZmVyMkJsb2IoYnVmZmVyKX07ZXhwb3J0cy5hcnJheUJ1ZmZlcjJCbG9iPWZ1bmN0aW9uKGJ1ZmZlcil7cmV0dXJuIHV0aWxzLmFycmF5QnVmZmVyMkJsb2IoYnVmZmVyKX07ZXhwb3J0cy50cmFuc2Zvcm1Ubz1mdW5jdGlvbihvdXRwdXRUeXBlLGlucHV0KXtyZXR1cm4gdXRpbHMudHJhbnNmb3JtVG8ob3V0cHV0VHlwZSxpbnB1dCl9O2V4cG9ydHMuZ2V0VHlwZU9mPWZ1bmN0aW9uKGlucHV0KXtyZXR1cm4gdXRpbHMuZ2V0VHlwZU9mKGlucHV0KX07ZXhwb3J0cy5jaGVja1N1cHBvcnQ9ZnVuY3Rpb24odHlwZSl7cmV0dXJuIHV0aWxzLmNoZWNrU3VwcG9ydCh0eXBlKX07ZXhwb3J0cy5NQVhfVkFMVUVfMTZCSVRTPXV0aWxzLk1BWF9WQUxVRV8xNkJJVFM7ZXhwb3J0cy5NQVhfVkFMVUVfMzJCSVRTPXV0aWxzLk1BWF9WQUxVRV8zMkJJVFM7ZXhwb3J0cy5wcmV0dHk9ZnVuY3Rpb24oc3RyKXtyZXR1cm4gdXRpbHMucHJldHR5KHN0cil9OwpleHBvcnRzLmZpbmRDb21wcmVzc2lvbj1mdW5jdGlvbihjb21wcmVzc2lvbk1ldGhvZCl7cmV0dXJuIHV0aWxzLmZpbmRDb21wcmVzc2lvbihjb21wcmVzc2lvbk1ldGhvZCl9O2V4cG9ydHMuaXNSZWdFeHA9ZnVuY3Rpb24ob2JqZWN0KXtyZXR1cm4gdXRpbHMuaXNSZWdFeHAob2JqZWN0KX19LHsiLi91dGlscyI6MjF9XSw4OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXt2YXIgVVNFX1RZUEVEQVJSQVk9dHlwZW9mIFVpbnQ4QXJyYXkhPT0idW5kZWZpbmVkIiYmdHlwZW9mIFVpbnQxNkFycmF5IT09InVuZGVmaW5lZCImJnR5cGVvZiBVaW50MzJBcnJheSE9PSJ1bmRlZmluZWQiO3ZhciBwYWtvPV9kZXJlcV8oInBha28iKTtleHBvcnRzLnVuY29tcHJlc3NJbnB1dFR5cGU9VVNFX1RZUEVEQVJSQVk/InVpbnQ4YXJyYXkiOiJhcnJheSI7ZXhwb3J0cy5jb21wcmVzc0lucHV0VHlwZT1VU0VfVFlQRURBUlJBWT8idWludDhhcnJheSI6ImFycmF5IjtleHBvcnRzLm1hZ2ljPQoiXGJceDAwIjtleHBvcnRzLmNvbXByZXNzPWZ1bmN0aW9uKGlucHV0KXtyZXR1cm4gcGFrby5kZWZsYXRlUmF3KGlucHV0KX07ZXhwb3J0cy51bmNvbXByZXNzPWZ1bmN0aW9uKGlucHV0KXtyZXR1cm4gcGFrby5pbmZsYXRlUmF3KGlucHV0KX19LHsicGFrbyI6MjR9XSw5OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXt2YXIgYmFzZTY0PV9kZXJlcV8oIi4vYmFzZTY0Iik7ZnVuY3Rpb24gSlNaaXAoZGF0YSxvcHRpb25zKXtpZighKHRoaXMgaW5zdGFuY2VvZiBKU1ppcCkpcmV0dXJuIG5ldyBKU1ppcChkYXRhLG9wdGlvbnMpO3RoaXMuZmlsZXM9e307dGhpcy5jb21tZW50PW51bGw7dGhpcy5yb290PSIiO2lmKGRhdGEpdGhpcy5sb2FkKGRhdGEsb3B0aW9ucyk7dGhpcy5jbG9uZT1mdW5jdGlvbigpe3ZhciBuZXdPYmo9bmV3IEpTWmlwO2Zvcih2YXIgaSBpbiB0aGlzKWlmKHR5cGVvZiB0aGlzW2ldIT09ImZ1bmN0aW9uIiluZXdPYmpbaV09dGhpc1tpXTtyZXR1cm4gbmV3T2JqfX0KSlNaaXAucHJvdG90eXBlPV9kZXJlcV8oIi4vb2JqZWN0Iik7SlNaaXAucHJvdG90eXBlLmxvYWQ9X2RlcmVxXygiLi9sb2FkIik7SlNaaXAuc3VwcG9ydD1fZGVyZXFfKCIuL3N1cHBvcnQiKTtKU1ppcC5kZWZhdWx0cz1fZGVyZXFfKCIuL2RlZmF1bHRzIik7SlNaaXAudXRpbHM9X2RlcmVxXygiLi9kZXByZWNhdGVkUHVibGljVXRpbHMiKTtKU1ppcC5iYXNlNjQ9e2VuY29kZTpmdW5jdGlvbihpbnB1dCl7cmV0dXJuIGJhc2U2NC5lbmNvZGUoaW5wdXQpfSxkZWNvZGU6ZnVuY3Rpb24oaW5wdXQpe3JldHVybiBiYXNlNjQuZGVjb2RlKGlucHV0KX19O0pTWmlwLmNvbXByZXNzaW9ucz1fZGVyZXFfKCIuL2NvbXByZXNzaW9ucyIpO21vZHVsZS5leHBvcnRzPUpTWmlwfSx7Ii4vYmFzZTY0IjoxLCIuL2NvbXByZXNzaW9ucyI6MywiLi9kZWZhdWx0cyI6NiwiLi9kZXByZWNhdGVkUHVibGljVXRpbHMiOjcsIi4vbG9hZCI6MTAsIi4vb2JqZWN0IjoxMywiLi9zdXBwb3J0IjoxN31dLDEwOltmdW5jdGlvbihfZGVyZXFfLAptb2R1bGUsZXhwb3J0cyl7dmFyIGJhc2U2ND1fZGVyZXFfKCIuL2Jhc2U2NCIpO3ZhciBaaXBFbnRyaWVzPV9kZXJlcV8oIi4vemlwRW50cmllcyIpO21vZHVsZS5leHBvcnRzPWZ1bmN0aW9uKGRhdGEsb3B0aW9ucyl7dmFyIGZpbGVzLHppcEVudHJpZXMsaSxpbnB1dDtvcHRpb25zPW9wdGlvbnN8fHt9O2lmKG9wdGlvbnMuYmFzZTY0KWRhdGE9YmFzZTY0LmRlY29kZShkYXRhKTt6aXBFbnRyaWVzPW5ldyBaaXBFbnRyaWVzKGRhdGEsb3B0aW9ucyk7ZmlsZXM9emlwRW50cmllcy5maWxlcztmb3IoaT0wO2k8ZmlsZXMubGVuZ3RoO2krKyl7aW5wdXQ9ZmlsZXNbaV07dGhpcy5maWxlKGlucHV0LmZpbGVOYW1lLGlucHV0LmRlY29tcHJlc3NlZCx7YmluYXJ5OnRydWUsb3B0aW1pemVkQmluYXJ5U3RyaW5nOnRydWUsZGF0ZTppbnB1dC5kYXRlLGRpcjppbnB1dC5kaXIsY29tbWVudDppbnB1dC5maWxlQ29tbWVudC5sZW5ndGg/aW5wdXQuZmlsZUNvbW1lbnQ6bnVsbCxjcmVhdGVGb2xkZXJzOm9wdGlvbnMuY3JlYXRlRm9sZGVyc30pfWlmKHppcEVudHJpZXMuemlwQ29tbWVudC5sZW5ndGgpdGhpcy5jb21tZW50PQp6aXBFbnRyaWVzLnppcENvbW1lbnQ7cmV0dXJuIHRoaXN9fSx7Ii4vYmFzZTY0IjoxLCIuL3ppcEVudHJpZXMiOjIyfV0sMTE6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpeyhmdW5jdGlvbihCdWZmZXIpe21vZHVsZS5leHBvcnRzPWZ1bmN0aW9uKGRhdGEsZW5jb2Rpbmcpe3JldHVybiBuZXcgQnVmZmVyKGRhdGEsZW5jb2RpbmcpfTttb2R1bGUuZXhwb3J0cy50ZXN0PWZ1bmN0aW9uKGIpe3JldHVybiBCdWZmZXIuaXNCdWZmZXIoYil9fSkuY2FsbCh0aGlzLHR5cGVvZiBCdWZmZXIhPT0idW5kZWZpbmVkIj9CdWZmZXI6dW5kZWZpbmVkKX0se31dLDEyOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXt2YXIgVWludDhBcnJheVJlYWRlcj1fZGVyZXFfKCIuL3VpbnQ4QXJyYXlSZWFkZXIiKTtmdW5jdGlvbiBOb2RlQnVmZmVyUmVhZGVyKGRhdGEpe3RoaXMuZGF0YT1kYXRhO3RoaXMubGVuZ3RoPXRoaXMuZGF0YS5sZW5ndGg7dGhpcy5pbmRleD0wfU5vZGVCdWZmZXJSZWFkZXIucHJvdG90eXBlPQpuZXcgVWludDhBcnJheVJlYWRlcjtOb2RlQnVmZmVyUmVhZGVyLnByb3RvdHlwZS5yZWFkRGF0YT1mdW5jdGlvbihzaXplKXt0aGlzLmNoZWNrT2Zmc2V0KHNpemUpO3ZhciByZXN1bHQ9dGhpcy5kYXRhLnNsaWNlKHRoaXMuaW5kZXgsdGhpcy5pbmRleCtzaXplKTt0aGlzLmluZGV4Kz1zaXplO3JldHVybiByZXN1bHR9O21vZHVsZS5leHBvcnRzPU5vZGVCdWZmZXJSZWFkZXJ9LHsiLi91aW50OEFycmF5UmVhZGVyIjoxOH1dLDEzOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXt2YXIgc3VwcG9ydD1fZGVyZXFfKCIuL3N1cHBvcnQiKTt2YXIgdXRpbHM9X2RlcmVxXygiLi91dGlscyIpO3ZhciBjcmMzMj1fZGVyZXFfKCIuL2NyYzMyIik7dmFyIHNpZ25hdHVyZT1fZGVyZXFfKCIuL3NpZ25hdHVyZSIpO3ZhciBkZWZhdWx0cz1fZGVyZXFfKCIuL2RlZmF1bHRzIik7dmFyIGJhc2U2ND1fZGVyZXFfKCIuL2Jhc2U2NCIpO3ZhciBjb21wcmVzc2lvbnM9X2RlcmVxXygiLi9jb21wcmVzc2lvbnMiKTsKdmFyIENvbXByZXNzZWRPYmplY3Q9X2RlcmVxXygiLi9jb21wcmVzc2VkT2JqZWN0Iik7dmFyIG5vZGVCdWZmZXI9X2RlcmVxXygiLi9ub2RlQnVmZmVyIik7dmFyIHV0Zjg9X2RlcmVxXygiLi91dGY4Iik7dmFyIFN0cmluZ1dyaXRlcj1fZGVyZXFfKCIuL3N0cmluZ1dyaXRlciIpO3ZhciBVaW50OEFycmF5V3JpdGVyPV9kZXJlcV8oIi4vdWludDhBcnJheVdyaXRlciIpO3ZhciBnZXRSYXdEYXRhPWZ1bmN0aW9uKGZpbGUpe2lmKGZpbGUuX2RhdGEgaW5zdGFuY2VvZiBDb21wcmVzc2VkT2JqZWN0KXtmaWxlLl9kYXRhPWZpbGUuX2RhdGEuZ2V0Q29udGVudCgpO2ZpbGUub3B0aW9ucy5iaW5hcnk9dHJ1ZTtmaWxlLm9wdGlvbnMuYmFzZTY0PWZhbHNlO2lmKHV0aWxzLmdldFR5cGVPZihmaWxlLl9kYXRhKT09PSJ1aW50OGFycmF5Iil7dmFyIGNvcHk9ZmlsZS5fZGF0YTtmaWxlLl9kYXRhPW5ldyBVaW50OEFycmF5KGNvcHkubGVuZ3RoKTtpZihjb3B5Lmxlbmd0aCE9PTApZmlsZS5fZGF0YS5zZXQoY29weSwKMCl9fXJldHVybiBmaWxlLl9kYXRhfTt2YXIgZ2V0QmluYXJ5RGF0YT1mdW5jdGlvbihmaWxlKXt2YXIgcmVzdWx0PWdldFJhd0RhdGEoZmlsZSksdHlwZT11dGlscy5nZXRUeXBlT2YocmVzdWx0KTtpZih0eXBlPT09InN0cmluZyIpe2lmKCFmaWxlLm9wdGlvbnMuYmluYXJ5KWlmKHN1cHBvcnQubm9kZWJ1ZmZlcilyZXR1cm4gbm9kZUJ1ZmZlcihyZXN1bHQsInV0Zi04Iik7cmV0dXJuIGZpbGUuYXNCaW5hcnkoKX1yZXR1cm4gcmVzdWx0fTt2YXIgZGF0YVRvU3RyaW5nPWZ1bmN0aW9uKGFzVVRGOCl7dmFyIHJlc3VsdD1nZXRSYXdEYXRhKHRoaXMpO2lmKHJlc3VsdD09PW51bGx8fHR5cGVvZiByZXN1bHQ9PT0idW5kZWZpbmVkIilyZXR1cm4iIjtpZih0aGlzLm9wdGlvbnMuYmFzZTY0KXJlc3VsdD1iYXNlNjQuZGVjb2RlKHJlc3VsdCk7aWYoYXNVVEY4JiZ0aGlzLm9wdGlvbnMuYmluYXJ5KXJlc3VsdD1vdXQudXRmOGRlY29kZShyZXN1bHQpO2Vsc2UgcmVzdWx0PXV0aWxzLnRyYW5zZm9ybVRvKCJzdHJpbmciLApyZXN1bHQpO2lmKCFhc1VURjgmJiF0aGlzLm9wdGlvbnMuYmluYXJ5KXJlc3VsdD11dGlscy50cmFuc2Zvcm1Ubygic3RyaW5nIixvdXQudXRmOGVuY29kZShyZXN1bHQpKTtyZXR1cm4gcmVzdWx0fTt2YXIgWmlwT2JqZWN0PWZ1bmN0aW9uKG5hbWUsZGF0YSxvcHRpb25zKXt0aGlzLm5hbWU9bmFtZTt0aGlzLmRpcj1vcHRpb25zLmRpcjt0aGlzLmRhdGU9b3B0aW9ucy5kYXRlO3RoaXMuY29tbWVudD1vcHRpb25zLmNvbW1lbnQ7dGhpcy5fZGF0YT1kYXRhO3RoaXMub3B0aW9ucz1vcHRpb25zO3RoaXMuX2luaXRpYWxNZXRhZGF0YT17ZGlyOm9wdGlvbnMuZGlyLGRhdGU6b3B0aW9ucy5kYXRlfX07WmlwT2JqZWN0LnByb3RvdHlwZT17YXNUZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIGRhdGFUb1N0cmluZy5jYWxsKHRoaXMsdHJ1ZSl9LGFzQmluYXJ5OmZ1bmN0aW9uKCl7cmV0dXJuIGRhdGFUb1N0cmluZy5jYWxsKHRoaXMsZmFsc2UpfSxhc05vZGVCdWZmZXI6ZnVuY3Rpb24oKXt2YXIgcmVzdWx0PQpnZXRCaW5hcnlEYXRhKHRoaXMpO3JldHVybiB1dGlscy50cmFuc2Zvcm1Ubygibm9kZWJ1ZmZlciIscmVzdWx0KX0sYXNVaW50OEFycmF5OmZ1bmN0aW9uKCl7dmFyIHJlc3VsdD1nZXRCaW5hcnlEYXRhKHRoaXMpO3JldHVybiB1dGlscy50cmFuc2Zvcm1UbygidWludDhhcnJheSIscmVzdWx0KX0sYXNBcnJheUJ1ZmZlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmFzVWludDhBcnJheSgpLmJ1ZmZlcn19O3ZhciBkZWNUb0hleD1mdW5jdGlvbihkZWMsYnl0ZXMpe3ZhciBoZXg9IiIsaTtmb3IoaT0wO2k8Ynl0ZXM7aSsrKXtoZXgrPVN0cmluZy5mcm9tQ2hhckNvZGUoZGVjJjI1NSk7ZGVjPWRlYz4+Pjh9cmV0dXJuIGhleH07dmFyIGV4dGVuZD1mdW5jdGlvbigpe3ZhciByZXN1bHQ9e30saSxhdHRyO2ZvcihpPTA7aTxhcmd1bWVudHMubGVuZ3RoO2krKylmb3IoYXR0ciBpbiBhcmd1bWVudHNbaV0paWYoYXJndW1lbnRzW2ldLmhhc093blByb3BlcnR5KGF0dHIpJiZ0eXBlb2YgcmVzdWx0W2F0dHJdPT09CiJ1bmRlZmluZWQiKXJlc3VsdFthdHRyXT1hcmd1bWVudHNbaV1bYXR0cl07cmV0dXJuIHJlc3VsdH07dmFyIHByZXBhcmVGaWxlQXR0cnM9ZnVuY3Rpb24obyl7bz1vfHx7fTtpZihvLmJhc2U2ND09PXRydWUmJihvLmJpbmFyeT09PW51bGx8fG8uYmluYXJ5PT09dW5kZWZpbmVkKSlvLmJpbmFyeT10cnVlO289ZXh0ZW5kKG8sZGVmYXVsdHMpO28uZGF0ZT1vLmRhdGV8fG5ldyBEYXRlO2lmKG8uY29tcHJlc3Npb24hPT1udWxsKW8uY29tcHJlc3Npb249by5jb21wcmVzc2lvbi50b1VwcGVyQ2FzZSgpO3JldHVybiBvfTt2YXIgZmlsZUFkZD1mdW5jdGlvbihuYW1lLGRhdGEsbyl7dmFyIGRhdGFUeXBlPXV0aWxzLmdldFR5cGVPZihkYXRhKSxwYXJlbnQ7bz1wcmVwYXJlRmlsZUF0dHJzKG8pO2lmKG8uY3JlYXRlRm9sZGVycyYmKHBhcmVudD1wYXJlbnRGb2xkZXIobmFtZSkpKWZvbGRlckFkZC5jYWxsKHRoaXMscGFyZW50LHRydWUpO2lmKG8uZGlyfHxkYXRhPT09bnVsbHx8dHlwZW9mIGRhdGE9PT0KInVuZGVmaW5lZCIpe28uYmFzZTY0PWZhbHNlO28uYmluYXJ5PWZhbHNlO2RhdGE9bnVsbH1lbHNlIGlmKGRhdGFUeXBlPT09InN0cmluZyIpe2lmKG8uYmluYXJ5JiYhby5iYXNlNjQpaWYoby5vcHRpbWl6ZWRCaW5hcnlTdHJpbmchPT10cnVlKWRhdGE9dXRpbHMuc3RyaW5nMmJpbmFyeShkYXRhKX1lbHNle28uYmFzZTY0PWZhbHNlO28uYmluYXJ5PXRydWU7aWYoIWRhdGFUeXBlJiYhKGRhdGEgaW5zdGFuY2VvZiBDb21wcmVzc2VkT2JqZWN0KSl0aHJvdyBuZXcgRXJyb3IoIlRoZSBkYXRhIG9mICciK25hbWUrIicgaXMgaW4gYW4gdW5zdXBwb3J0ZWQgZm9ybWF0ICEiKTtpZihkYXRhVHlwZT09PSJhcnJheWJ1ZmZlciIpZGF0YT11dGlscy50cmFuc2Zvcm1UbygidWludDhhcnJheSIsZGF0YSl9dmFyIG9iamVjdD1uZXcgWmlwT2JqZWN0KG5hbWUsZGF0YSxvKTt0aGlzLmZpbGVzW25hbWVdPW9iamVjdDtyZXR1cm4gb2JqZWN0fTt2YXIgcGFyZW50Rm9sZGVyPWZ1bmN0aW9uKHBhdGgpe2lmKHBhdGguc2xpY2UoLTEpPT0KIi8iKXBhdGg9cGF0aC5zdWJzdHJpbmcoMCxwYXRoLmxlbmd0aC0xKTt2YXIgbGFzdFNsYXNoPXBhdGgubGFzdEluZGV4T2YoIi8iKTtyZXR1cm4gbGFzdFNsYXNoPjA/cGF0aC5zdWJzdHJpbmcoMCxsYXN0U2xhc2gpOiIifTt2YXIgZm9sZGVyQWRkPWZ1bmN0aW9uKG5hbWUsY3JlYXRlRm9sZGVycyl7aWYobmFtZS5zbGljZSgtMSkhPSIvIiluYW1lKz0iLyI7Y3JlYXRlRm9sZGVycz10eXBlb2YgY3JlYXRlRm9sZGVycyE9PSJ1bmRlZmluZWQiP2NyZWF0ZUZvbGRlcnM6ZmFsc2U7aWYoIXRoaXMuZmlsZXNbbmFtZV0pZmlsZUFkZC5jYWxsKHRoaXMsbmFtZSxudWxsLHtkaXI6dHJ1ZSxjcmVhdGVGb2xkZXJzOmNyZWF0ZUZvbGRlcnN9KTtyZXR1cm4gdGhpcy5maWxlc1tuYW1lXX07dmFyIGdlbmVyYXRlQ29tcHJlc3NlZE9iamVjdEZyb209ZnVuY3Rpb24oZmlsZSxjb21wcmVzc2lvbil7dmFyIHJlc3VsdD1uZXcgQ29tcHJlc3NlZE9iamVjdCxjb250ZW50O2lmKGZpbGUuX2RhdGEgaW5zdGFuY2VvZgpDb21wcmVzc2VkT2JqZWN0KXtyZXN1bHQudW5jb21wcmVzc2VkU2l6ZT1maWxlLl9kYXRhLnVuY29tcHJlc3NlZFNpemU7cmVzdWx0LmNyYzMyPWZpbGUuX2RhdGEuY3JjMzI7aWYocmVzdWx0LnVuY29tcHJlc3NlZFNpemU9PT0wfHxmaWxlLmRpcil7Y29tcHJlc3Npb249Y29tcHJlc3Npb25zWyJTVE9SRSJdO3Jlc3VsdC5jb21wcmVzc2VkQ29udGVudD0iIjtyZXN1bHQuY3JjMzI9MH1lbHNlIGlmKGZpbGUuX2RhdGEuY29tcHJlc3Npb25NZXRob2Q9PT1jb21wcmVzc2lvbi5tYWdpYylyZXN1bHQuY29tcHJlc3NlZENvbnRlbnQ9ZmlsZS5fZGF0YS5nZXRDb21wcmVzc2VkQ29udGVudCgpO2Vsc2V7Y29udGVudD1maWxlLl9kYXRhLmdldENvbnRlbnQoKTtyZXN1bHQuY29tcHJlc3NlZENvbnRlbnQ9Y29tcHJlc3Npb24uY29tcHJlc3ModXRpbHMudHJhbnNmb3JtVG8oY29tcHJlc3Npb24uY29tcHJlc3NJbnB1dFR5cGUsY29udGVudCkpfX1lbHNle2NvbnRlbnQ9Z2V0QmluYXJ5RGF0YShmaWxlKTsKaWYoIWNvbnRlbnR8fGNvbnRlbnQubGVuZ3RoPT09MHx8ZmlsZS5kaXIpe2NvbXByZXNzaW9uPWNvbXByZXNzaW9uc1siU1RPUkUiXTtjb250ZW50PSIifXJlc3VsdC51bmNvbXByZXNzZWRTaXplPWNvbnRlbnQubGVuZ3RoO3Jlc3VsdC5jcmMzMj1jcmMzMihjb250ZW50KTtyZXN1bHQuY29tcHJlc3NlZENvbnRlbnQ9Y29tcHJlc3Npb24uY29tcHJlc3ModXRpbHMudHJhbnNmb3JtVG8oY29tcHJlc3Npb24uY29tcHJlc3NJbnB1dFR5cGUsY29udGVudCkpfXJlc3VsdC5jb21wcmVzc2VkU2l6ZT1yZXN1bHQuY29tcHJlc3NlZENvbnRlbnQubGVuZ3RoO3Jlc3VsdC5jb21wcmVzc2lvbk1ldGhvZD1jb21wcmVzc2lvbi5tYWdpYztyZXR1cm4gcmVzdWx0fTt2YXIgZ2VuZXJhdGVaaXBQYXJ0cz1mdW5jdGlvbihuYW1lLGZpbGUsY29tcHJlc3NlZE9iamVjdCxvZmZzZXQpe3ZhciBkYXRhPWNvbXByZXNzZWRPYmplY3QuY29tcHJlc3NlZENvbnRlbnQsdXRmRW5jb2RlZEZpbGVOYW1lPXV0aWxzLnRyYW5zZm9ybVRvKCJzdHJpbmciLAp1dGY4LnV0ZjhlbmNvZGUoZmlsZS5uYW1lKSksY29tbWVudD1maWxlLmNvbW1lbnR8fCIiLHV0ZkVuY29kZWRDb21tZW50PXV0aWxzLnRyYW5zZm9ybVRvKCJzdHJpbmciLHV0ZjgudXRmOGVuY29kZShjb21tZW50KSksdXNlVVRGOEZvckZpbGVOYW1lPXV0ZkVuY29kZWRGaWxlTmFtZS5sZW5ndGghPT1maWxlLm5hbWUubGVuZ3RoLHVzZVVURjhGb3JDb21tZW50PXV0ZkVuY29kZWRDb21tZW50Lmxlbmd0aCE9PWNvbW1lbnQubGVuZ3RoLG89ZmlsZS5vcHRpb25zLGRvc1RpbWUsZG9zRGF0ZSxleHRyYUZpZWxkcz0iIix1bmljb2RlUGF0aEV4dHJhRmllbGQ9IiIsdW5pY29kZUNvbW1lbnRFeHRyYUZpZWxkPSIiLGRpcixkYXRlO2lmKGZpbGUuX2luaXRpYWxNZXRhZGF0YS5kaXIhPT1maWxlLmRpcilkaXI9ZmlsZS5kaXI7ZWxzZSBkaXI9by5kaXI7aWYoZmlsZS5faW5pdGlhbE1ldGFkYXRhLmRhdGUhPT1maWxlLmRhdGUpZGF0ZT1maWxlLmRhdGU7ZWxzZSBkYXRlPW8uZGF0ZTtkb3NUaW1lPQpkYXRlLmdldEhvdXJzKCk7ZG9zVGltZT1kb3NUaW1lPDw2O2Rvc1RpbWU9ZG9zVGltZXxkYXRlLmdldE1pbnV0ZXMoKTtkb3NUaW1lPWRvc1RpbWU8PDU7ZG9zVGltZT1kb3NUaW1lfGRhdGUuZ2V0U2Vjb25kcygpLzI7ZG9zRGF0ZT1kYXRlLmdldEZ1bGxZZWFyKCktMTk4MDtkb3NEYXRlPWRvc0RhdGU8PDQ7ZG9zRGF0ZT1kb3NEYXRlfGRhdGUuZ2V0TW9udGgoKSsxO2Rvc0RhdGU9ZG9zRGF0ZTw8NTtkb3NEYXRlPWRvc0RhdGV8ZGF0ZS5nZXREYXRlKCk7aWYodXNlVVRGOEZvckZpbGVOYW1lKXt1bmljb2RlUGF0aEV4dHJhRmllbGQ9ZGVjVG9IZXgoMSwxKStkZWNUb0hleChjcmMzMih1dGZFbmNvZGVkRmlsZU5hbWUpLDQpK3V0ZkVuY29kZWRGaWxlTmFtZTtleHRyYUZpZWxkcys9InVwIitkZWNUb0hleCh1bmljb2RlUGF0aEV4dHJhRmllbGQubGVuZ3RoLDIpK3VuaWNvZGVQYXRoRXh0cmFGaWVsZH1pZih1c2VVVEY4Rm9yQ29tbWVudCl7dW5pY29kZUNvbW1lbnRFeHRyYUZpZWxkPQpkZWNUb0hleCgxLDEpK2RlY1RvSGV4KHRoaXMuY3JjMzIodXRmRW5jb2RlZENvbW1lbnQpLDQpK3V0ZkVuY29kZWRDb21tZW50O2V4dHJhRmllbGRzKz0idWMiK2RlY1RvSGV4KHVuaWNvZGVDb21tZW50RXh0cmFGaWVsZC5sZW5ndGgsMikrdW5pY29kZUNvbW1lbnRFeHRyYUZpZWxkfXZhciBoZWFkZXI9IiI7aGVhZGVyKz0iXG5ceDAwIjtoZWFkZXIrPXVzZVVURjhGb3JGaWxlTmFtZXx8dXNlVVRGOEZvckNvbW1lbnQ/Ilx4MDBcYiI6Ilx4MDBceDAwIjtoZWFkZXIrPWNvbXByZXNzZWRPYmplY3QuY29tcHJlc3Npb25NZXRob2Q7aGVhZGVyKz1kZWNUb0hleChkb3NUaW1lLDIpO2hlYWRlcis9ZGVjVG9IZXgoZG9zRGF0ZSwyKTtoZWFkZXIrPWRlY1RvSGV4KGNvbXByZXNzZWRPYmplY3QuY3JjMzIsNCk7aGVhZGVyKz1kZWNUb0hleChjb21wcmVzc2VkT2JqZWN0LmNvbXByZXNzZWRTaXplLDQpO2hlYWRlcis9ZGVjVG9IZXgoY29tcHJlc3NlZE9iamVjdC51bmNvbXByZXNzZWRTaXplLAo0KTtoZWFkZXIrPWRlY1RvSGV4KHV0ZkVuY29kZWRGaWxlTmFtZS5sZW5ndGgsMik7aGVhZGVyKz1kZWNUb0hleChleHRyYUZpZWxkcy5sZW5ndGgsMik7dmFyIGZpbGVSZWNvcmQ9c2lnbmF0dXJlLkxPQ0FMX0ZJTEVfSEVBREVSK2hlYWRlcit1dGZFbmNvZGVkRmlsZU5hbWUrZXh0cmFGaWVsZHM7dmFyIGRpclJlY29yZD1zaWduYXR1cmUuQ0VOVFJBTF9GSUxFX0hFQURFUisiXHUwMDE0XHgwMCIraGVhZGVyK2RlY1RvSGV4KHV0ZkVuY29kZWRDb21tZW50Lmxlbmd0aCwyKSsiXHgwMFx4MDAiKyJceDAwXHgwMCIrKGRpcj09PXRydWU/Ilx1MDAxMFx4MDBceDAwXHgwMCI6Ilx4MDBceDAwXHgwMFx4MDAiKStkZWNUb0hleChvZmZzZXQsNCkrdXRmRW5jb2RlZEZpbGVOYW1lK2V4dHJhRmllbGRzK3V0ZkVuY29kZWRDb21tZW50O3JldHVybntmaWxlUmVjb3JkOmZpbGVSZWNvcmQsZGlyUmVjb3JkOmRpclJlY29yZCxjb21wcmVzc2VkT2JqZWN0OmNvbXByZXNzZWRPYmplY3R9fTt2YXIgb3V0PQp7bG9hZDpmdW5jdGlvbihzdHJlYW0sb3B0aW9ucyl7dGhyb3cgbmV3IEVycm9yKCJMb2FkIG1ldGhvZCBpcyBub3QgZGVmaW5lZC4gSXMgdGhlIGZpbGUganN6aXAtbG9hZC5qcyBpbmNsdWRlZCA/Iik7fSxmaWx0ZXI6ZnVuY3Rpb24oc2VhcmNoKXt2YXIgcmVzdWx0PVtdLGZpbGVuYW1lLHJlbGF0aXZlUGF0aCxmaWxlLGZpbGVDbG9uZTtmb3IoZmlsZW5hbWUgaW4gdGhpcy5maWxlcyl7aWYoIXRoaXMuZmlsZXMuaGFzT3duUHJvcGVydHkoZmlsZW5hbWUpKWNvbnRpbnVlO2ZpbGU9dGhpcy5maWxlc1tmaWxlbmFtZV07ZmlsZUNsb25lPW5ldyBaaXBPYmplY3QoZmlsZS5uYW1lLGZpbGUuX2RhdGEsZXh0ZW5kKGZpbGUub3B0aW9ucykpO3JlbGF0aXZlUGF0aD1maWxlbmFtZS5zbGljZSh0aGlzLnJvb3QubGVuZ3RoLGZpbGVuYW1lLmxlbmd0aCk7aWYoZmlsZW5hbWUuc2xpY2UoMCx0aGlzLnJvb3QubGVuZ3RoKT09PXRoaXMucm9vdCYmc2VhcmNoKHJlbGF0aXZlUGF0aCxmaWxlQ2xvbmUpKXJlc3VsdC5wdXNoKGZpbGVDbG9uZSl9cmV0dXJuIHJlc3VsdH0sCmZpbGU6ZnVuY3Rpb24obmFtZSxkYXRhLG8pe2lmKGFyZ3VtZW50cy5sZW5ndGg9PT0xKWlmKHV0aWxzLmlzUmVnRXhwKG5hbWUpKXt2YXIgcmVnZXhwPW5hbWU7cmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uKHJlbGF0aXZlUGF0aCxmaWxlKXtyZXR1cm4hZmlsZS5kaXImJnJlZ2V4cC50ZXN0KHJlbGF0aXZlUGF0aCl9KX1lbHNlIHJldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbihyZWxhdGl2ZVBhdGgsZmlsZSl7cmV0dXJuIWZpbGUuZGlyJiZyZWxhdGl2ZVBhdGg9PT1uYW1lfSlbMF18fG51bGw7ZWxzZXtuYW1lPXRoaXMucm9vdCtuYW1lO2ZpbGVBZGQuY2FsbCh0aGlzLG5hbWUsZGF0YSxvKX1yZXR1cm4gdGhpc30sZm9sZGVyOmZ1bmN0aW9uKGFyZyl7aWYoIWFyZylyZXR1cm4gdGhpcztpZih1dGlscy5pc1JlZ0V4cChhcmcpKXJldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbihyZWxhdGl2ZVBhdGgsZmlsZSl7cmV0dXJuIGZpbGUuZGlyJiZhcmcudGVzdChyZWxhdGl2ZVBhdGgpfSk7CnZhciBuYW1lPXRoaXMucm9vdCthcmc7dmFyIG5ld0ZvbGRlcj1mb2xkZXJBZGQuY2FsbCh0aGlzLG5hbWUpO3ZhciByZXQ9dGhpcy5jbG9uZSgpO3JldC5yb290PW5ld0ZvbGRlci5uYW1lO3JldHVybiByZXR9LHJlbW92ZTpmdW5jdGlvbihuYW1lKXtuYW1lPXRoaXMucm9vdCtuYW1lO3ZhciBmaWxlPXRoaXMuZmlsZXNbbmFtZV07aWYoIWZpbGUpe2lmKG5hbWUuc2xpY2UoLTEpIT0iLyIpbmFtZSs9Ii8iO2ZpbGU9dGhpcy5maWxlc1tuYW1lXX1pZihmaWxlJiYhZmlsZS5kaXIpZGVsZXRlIHRoaXMuZmlsZXNbbmFtZV07ZWxzZXt2YXIga2lkcz10aGlzLmZpbHRlcihmdW5jdGlvbihyZWxhdGl2ZVBhdGgsZmlsZSl7cmV0dXJuIGZpbGUubmFtZS5zbGljZSgwLG5hbWUubGVuZ3RoKT09PW5hbWV9KTtmb3IodmFyIGk9MDtpPGtpZHMubGVuZ3RoO2krKylkZWxldGUgdGhpcy5maWxlc1traWRzW2ldLm5hbWVdfXJldHVybiB0aGlzfSxnZW5lcmF0ZTpmdW5jdGlvbihvcHRpb25zKXtvcHRpb25zPQpleHRlbmQob3B0aW9uc3x8e30se2Jhc2U2NDp0cnVlLGNvbXByZXNzaW9uOiJTVE9SRSIsdHlwZToiYmFzZTY0Iixjb21tZW50Om51bGx9KTt1dGlscy5jaGVja1N1cHBvcnQob3B0aW9ucy50eXBlKTt2YXIgemlwRGF0YT1bXSxsb2NhbERpckxlbmd0aD0wLGNlbnRyYWxEaXJMZW5ndGg9MCx3cml0ZXIsaSx1dGZFbmNvZGVkQ29tbWVudD11dGlscy50cmFuc2Zvcm1Ubygic3RyaW5nIix0aGlzLnV0ZjhlbmNvZGUob3B0aW9ucy5jb21tZW50fHx0aGlzLmNvbW1lbnR8fCIiKSk7Zm9yKHZhciBuYW1lIGluIHRoaXMuZmlsZXMpe2lmKCF0aGlzLmZpbGVzLmhhc093blByb3BlcnR5KG5hbWUpKWNvbnRpbnVlO3ZhciBmaWxlPXRoaXMuZmlsZXNbbmFtZV07dmFyIGNvbXByZXNzaW9uTmFtZT1maWxlLm9wdGlvbnMuY29tcHJlc3Npb258fG9wdGlvbnMuY29tcHJlc3Npb24udG9VcHBlckNhc2UoKTt2YXIgY29tcHJlc3Npb249Y29tcHJlc3Npb25zW2NvbXByZXNzaW9uTmFtZV07aWYoIWNvbXByZXNzaW9uKXRocm93IG5ldyBFcnJvcihjb21wcmVzc2lvbk5hbWUrCiIgaXMgbm90IGEgdmFsaWQgY29tcHJlc3Npb24gbWV0aG9kICEiKTt2YXIgY29tcHJlc3NlZE9iamVjdD1nZW5lcmF0ZUNvbXByZXNzZWRPYmplY3RGcm9tLmNhbGwodGhpcyxmaWxlLGNvbXByZXNzaW9uKTt2YXIgemlwUGFydD1nZW5lcmF0ZVppcFBhcnRzLmNhbGwodGhpcyxuYW1lLGZpbGUsY29tcHJlc3NlZE9iamVjdCxsb2NhbERpckxlbmd0aCk7bG9jYWxEaXJMZW5ndGgrPXppcFBhcnQuZmlsZVJlY29yZC5sZW5ndGgrY29tcHJlc3NlZE9iamVjdC5jb21wcmVzc2VkU2l6ZTtjZW50cmFsRGlyTGVuZ3RoKz16aXBQYXJ0LmRpclJlY29yZC5sZW5ndGg7emlwRGF0YS5wdXNoKHppcFBhcnQpfXZhciBkaXJFbmQ9IiI7ZGlyRW5kPXNpZ25hdHVyZS5DRU5UUkFMX0RJUkVDVE9SWV9FTkQrIlx4MDBceDAwIisiXHgwMFx4MDAiK2RlY1RvSGV4KHppcERhdGEubGVuZ3RoLDIpK2RlY1RvSGV4KHppcERhdGEubGVuZ3RoLDIpK2RlY1RvSGV4KGNlbnRyYWxEaXJMZW5ndGgsNCkrZGVjVG9IZXgobG9jYWxEaXJMZW5ndGgsCjQpK2RlY1RvSGV4KHV0ZkVuY29kZWRDb21tZW50Lmxlbmd0aCwyKSt1dGZFbmNvZGVkQ29tbWVudDt2YXIgdHlwZU5hbWU9b3B0aW9ucy50eXBlLnRvTG93ZXJDYXNlKCk7aWYodHlwZU5hbWU9PT0idWludDhhcnJheSJ8fHR5cGVOYW1lPT09ImFycmF5YnVmZmVyInx8dHlwZU5hbWU9PT0iYmxvYiJ8fHR5cGVOYW1lPT09Im5vZGVidWZmZXIiKXdyaXRlcj1uZXcgVWludDhBcnJheVdyaXRlcihsb2NhbERpckxlbmd0aCtjZW50cmFsRGlyTGVuZ3RoK2RpckVuZC5sZW5ndGgpO2Vsc2Ugd3JpdGVyPW5ldyBTdHJpbmdXcml0ZXIobG9jYWxEaXJMZW5ndGgrY2VudHJhbERpckxlbmd0aCtkaXJFbmQubGVuZ3RoKTtmb3IoaT0wO2k8emlwRGF0YS5sZW5ndGg7aSsrKXt3cml0ZXIuYXBwZW5kKHppcERhdGFbaV0uZmlsZVJlY29yZCk7d3JpdGVyLmFwcGVuZCh6aXBEYXRhW2ldLmNvbXByZXNzZWRPYmplY3QuY29tcHJlc3NlZENvbnRlbnQpfWZvcihpPTA7aTx6aXBEYXRhLmxlbmd0aDtpKyspd3JpdGVyLmFwcGVuZCh6aXBEYXRhW2ldLmRpclJlY29yZCk7CndyaXRlci5hcHBlbmQoZGlyRW5kKTt2YXIgemlwPXdyaXRlci5maW5hbGl6ZSgpO3N3aXRjaChvcHRpb25zLnR5cGUudG9Mb3dlckNhc2UoKSl7Y2FzZSAidWludDhhcnJheSI6Y2FzZSAiYXJyYXlidWZmZXIiOmNhc2UgIm5vZGVidWZmZXIiOnJldHVybiB1dGlscy50cmFuc2Zvcm1UbyhvcHRpb25zLnR5cGUudG9Mb3dlckNhc2UoKSx6aXApO2Nhc2UgImJsb2IiOnJldHVybiB1dGlscy5hcnJheUJ1ZmZlcjJCbG9iKHV0aWxzLnRyYW5zZm9ybVRvKCJhcnJheWJ1ZmZlciIsemlwKSk7Y2FzZSAiYmFzZTY0IjpyZXR1cm4gb3B0aW9ucy5iYXNlNjQ/YmFzZTY0LmVuY29kZSh6aXApOnppcDtkZWZhdWx0OnJldHVybiB6aXB9fSxjcmMzMjpmdW5jdGlvbihpbnB1dCxjcmMpe3JldHVybiBjcmMzMihpbnB1dCxjcmMpfSx1dGY4ZW5jb2RlOmZ1bmN0aW9uKHN0cmluZyl7cmV0dXJuIHV0aWxzLnRyYW5zZm9ybVRvKCJzdHJpbmciLHV0ZjgudXRmOGVuY29kZShzdHJpbmcpKX0sdXRmOGRlY29kZTpmdW5jdGlvbihpbnB1dCl7cmV0dXJuIHV0ZjgudXRmOGRlY29kZShpbnB1dCl9fTsKbW9kdWxlLmV4cG9ydHM9b3V0fSx7Ii4vYmFzZTY0IjoxLCIuL2NvbXByZXNzZWRPYmplY3QiOjIsIi4vY29tcHJlc3Npb25zIjozLCIuL2NyYzMyIjo0LCIuL2RlZmF1bHRzIjo2LCIuL25vZGVCdWZmZXIiOjExLCIuL3NpZ25hdHVyZSI6MTQsIi4vc3RyaW5nV3JpdGVyIjoxNiwiLi9zdXBwb3J0IjoxNywiLi91aW50OEFycmF5V3JpdGVyIjoxOSwiLi91dGY4IjoyMCwiLi91dGlscyI6MjF9XSwxNDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7ZXhwb3J0cy5MT0NBTF9GSUxFX0hFQURFUj0iUEtcdTAwMDNcdTAwMDQiO2V4cG9ydHMuQ0VOVFJBTF9GSUxFX0hFQURFUj0iUEtcdTAwMDFcdTAwMDIiO2V4cG9ydHMuQ0VOVFJBTF9ESVJFQ1RPUllfRU5EPSJQS1x1MDAwNVx1MDAwNiI7ZXhwb3J0cy5aSVA2NF9DRU5UUkFMX0RJUkVDVE9SWV9MT0NBVE9SPSJQS1x1MDAwNlx1MDAwNyI7ZXhwb3J0cy5aSVA2NF9DRU5UUkFMX0RJUkVDVE9SWV9FTkQ9IlBLXHUwMDA2XHUwMDA2IjsKZXhwb3J0cy5EQVRBX0RFU0NSSVBUT1I9IlBLXHUwMDA3XGIifSx7fV0sMTU6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe3ZhciBEYXRhUmVhZGVyPV9kZXJlcV8oIi4vZGF0YVJlYWRlciIpO3ZhciB1dGlscz1fZGVyZXFfKCIuL3V0aWxzIik7ZnVuY3Rpb24gU3RyaW5nUmVhZGVyKGRhdGEsb3B0aW1pemVkQmluYXJ5U3RyaW5nKXt0aGlzLmRhdGE9ZGF0YTtpZighb3B0aW1pemVkQmluYXJ5U3RyaW5nKXRoaXMuZGF0YT11dGlscy5zdHJpbmcyYmluYXJ5KHRoaXMuZGF0YSk7dGhpcy5sZW5ndGg9dGhpcy5kYXRhLmxlbmd0aDt0aGlzLmluZGV4PTB9U3RyaW5nUmVhZGVyLnByb3RvdHlwZT1uZXcgRGF0YVJlYWRlcjtTdHJpbmdSZWFkZXIucHJvdG90eXBlLmJ5dGVBdD1mdW5jdGlvbihpKXtyZXR1cm4gdGhpcy5kYXRhLmNoYXJDb2RlQXQoaSl9O1N0cmluZ1JlYWRlci5wcm90b3R5cGUubGFzdEluZGV4T2ZTaWduYXR1cmU9ZnVuY3Rpb24oc2lnKXtyZXR1cm4gdGhpcy5kYXRhLmxhc3RJbmRleE9mKHNpZyl9OwpTdHJpbmdSZWFkZXIucHJvdG90eXBlLnJlYWREYXRhPWZ1bmN0aW9uKHNpemUpe3RoaXMuY2hlY2tPZmZzZXQoc2l6ZSk7dmFyIHJlc3VsdD10aGlzLmRhdGEuc2xpY2UodGhpcy5pbmRleCx0aGlzLmluZGV4K3NpemUpO3RoaXMuaW5kZXgrPXNpemU7cmV0dXJuIHJlc3VsdH07bW9kdWxlLmV4cG9ydHM9U3RyaW5nUmVhZGVyfSx7Ii4vZGF0YVJlYWRlciI6NSwiLi91dGlscyI6MjF9XSwxNjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7dmFyIHV0aWxzPV9kZXJlcV8oIi4vdXRpbHMiKTt2YXIgU3RyaW5nV3JpdGVyPWZ1bmN0aW9uKCl7dGhpcy5kYXRhPVtdfTtTdHJpbmdXcml0ZXIucHJvdG90eXBlPXthcHBlbmQ6ZnVuY3Rpb24oaW5wdXQpe2lucHV0PXV0aWxzLnRyYW5zZm9ybVRvKCJzdHJpbmciLGlucHV0KTt0aGlzLmRhdGEucHVzaChpbnB1dCl9LGZpbmFsaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YS5qb2luKCIiKX19O21vZHVsZS5leHBvcnRzPVN0cmluZ1dyaXRlcn0sCnsiLi91dGlscyI6MjF9XSwxNzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7KGZ1bmN0aW9uKEJ1ZmZlcil7ZXhwb3J0cy5iYXNlNjQ9dHJ1ZTtleHBvcnRzLmFycmF5PXRydWU7ZXhwb3J0cy5zdHJpbmc9dHJ1ZTtleHBvcnRzLmFycmF5YnVmZmVyPXR5cGVvZiBBcnJheUJ1ZmZlciE9PSJ1bmRlZmluZWQiJiZ0eXBlb2YgVWludDhBcnJheSE9PSJ1bmRlZmluZWQiO2V4cG9ydHMubm9kZWJ1ZmZlcj10eXBlb2YgQnVmZmVyIT09InVuZGVmaW5lZCI7ZXhwb3J0cy51aW50OGFycmF5PXR5cGVvZiBVaW50OEFycmF5IT09InVuZGVmaW5lZCI7aWYodHlwZW9mIEFycmF5QnVmZmVyPT09InVuZGVmaW5lZCIpZXhwb3J0cy5ibG9iPWZhbHNlO2Vsc2V7dmFyIGJ1ZmZlcj1uZXcgQXJyYXlCdWZmZXIoMCk7dHJ5e2V4cG9ydHMuYmxvYj0obmV3IEJsb2IoW2J1ZmZlcl0se3R5cGU6ImFwcGxpY2F0aW9uL3ppcCJ9KSkuc2l6ZT09PTB9Y2F0Y2goZSl7dHJ5e3ZhciBCdWlsZGVyPQp3aW5kb3cuQmxvYkJ1aWxkZXJ8fHdpbmRvdy5XZWJLaXRCbG9iQnVpbGRlcnx8d2luZG93Lk1vekJsb2JCdWlsZGVyfHx3aW5kb3cuTVNCbG9iQnVpbGRlcjt2YXIgYnVpbGRlcj1uZXcgQnVpbGRlcjtidWlsZGVyLmFwcGVuZChidWZmZXIpO2V4cG9ydHMuYmxvYj1idWlsZGVyLmdldEJsb2IoImFwcGxpY2F0aW9uL3ppcCIpLnNpemU9PT0wfWNhdGNoKGUpe2V4cG9ydHMuYmxvYj1mYWxzZX19fX0pLmNhbGwodGhpcyx0eXBlb2YgQnVmZmVyIT09InVuZGVmaW5lZCI/QnVmZmVyOnVuZGVmaW5lZCl9LHt9XSwxODpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7dmFyIERhdGFSZWFkZXI9X2RlcmVxXygiLi9kYXRhUmVhZGVyIik7ZnVuY3Rpb24gVWludDhBcnJheVJlYWRlcihkYXRhKXtpZihkYXRhKXt0aGlzLmRhdGE9ZGF0YTt0aGlzLmxlbmd0aD10aGlzLmRhdGEubGVuZ3RoO3RoaXMuaW5kZXg9MH19VWludDhBcnJheVJlYWRlci5wcm90b3R5cGU9bmV3IERhdGFSZWFkZXI7ClVpbnQ4QXJyYXlSZWFkZXIucHJvdG90eXBlLmJ5dGVBdD1mdW5jdGlvbihpKXtyZXR1cm4gdGhpcy5kYXRhW2ldfTtVaW50OEFycmF5UmVhZGVyLnByb3RvdHlwZS5sYXN0SW5kZXhPZlNpZ25hdHVyZT1mdW5jdGlvbihzaWcpe3ZhciBzaWcwPXNpZy5jaGFyQ29kZUF0KDApLHNpZzE9c2lnLmNoYXJDb2RlQXQoMSksc2lnMj1zaWcuY2hhckNvZGVBdCgyKSxzaWczPXNpZy5jaGFyQ29kZUF0KDMpO2Zvcih2YXIgaT10aGlzLmxlbmd0aC00O2k+PTA7LS1pKWlmKHRoaXMuZGF0YVtpXT09PXNpZzAmJnRoaXMuZGF0YVtpKzFdPT09c2lnMSYmdGhpcy5kYXRhW2krMl09PT1zaWcyJiZ0aGlzLmRhdGFbaSszXT09PXNpZzMpcmV0dXJuIGk7cmV0dXJuLTF9O1VpbnQ4QXJyYXlSZWFkZXIucHJvdG90eXBlLnJlYWREYXRhPWZ1bmN0aW9uKHNpemUpe3RoaXMuY2hlY2tPZmZzZXQoc2l6ZSk7aWYoc2l6ZT09PTApcmV0dXJuIG5ldyBVaW50OEFycmF5KDApO3ZhciByZXN1bHQ9dGhpcy5kYXRhLnN1YmFycmF5KHRoaXMuaW5kZXgsCnRoaXMuaW5kZXgrc2l6ZSk7dGhpcy5pbmRleCs9c2l6ZTtyZXR1cm4gcmVzdWx0fTttb2R1bGUuZXhwb3J0cz1VaW50OEFycmF5UmVhZGVyfSx7Ii4vZGF0YVJlYWRlciI6NX1dLDE5OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXt2YXIgdXRpbHM9X2RlcmVxXygiLi91dGlscyIpO3ZhciBVaW50OEFycmF5V3JpdGVyPWZ1bmN0aW9uKGxlbmd0aCl7dGhpcy5kYXRhPW5ldyBVaW50OEFycmF5KGxlbmd0aCk7dGhpcy5pbmRleD0wfTtVaW50OEFycmF5V3JpdGVyLnByb3RvdHlwZT17YXBwZW5kOmZ1bmN0aW9uKGlucHV0KXtpZihpbnB1dC5sZW5ndGghPT0wKXtpbnB1dD11dGlscy50cmFuc2Zvcm1UbygidWludDhhcnJheSIsaW5wdXQpO3RoaXMuZGF0YS5zZXQoaW5wdXQsdGhpcy5pbmRleCk7dGhpcy5pbmRleCs9aW5wdXQubGVuZ3RofX0sZmluYWxpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kYXRhfX07bW9kdWxlLmV4cG9ydHM9VWludDhBcnJheVdyaXRlcn0seyIuL3V0aWxzIjoyMX1dLAoyMDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7dmFyIHV0aWxzPV9kZXJlcV8oIi4vdXRpbHMiKTt2YXIgc3VwcG9ydD1fZGVyZXFfKCIuL3N1cHBvcnQiKTt2YXIgbm9kZUJ1ZmZlcj1fZGVyZXFfKCIuL25vZGVCdWZmZXIiKTt2YXIgX3V0ZjhsZW49bmV3IEFycmF5KDI1Nik7Zm9yKHZhciBpPTA7aTwyNTY7aSsrKV91dGY4bGVuW2ldPWk+PTI1Mj82Omk+PTI0OD81Omk+PTI0MD80Omk+PTIyND8zOmk+PTE5Mj8yOjE7X3V0ZjhsZW5bMjU0XT1fdXRmOGxlblsyNTRdPTE7dmFyIHN0cmluZzJidWY9ZnVuY3Rpb24oc3RyKXt2YXIgYnVmLGMsYzIsbV9wb3MsaSxzdHJfbGVuPXN0ci5sZW5ndGgsYnVmX2xlbj0wO2ZvcihtX3Bvcz0wO21fcG9zPHN0cl9sZW47bV9wb3MrKyl7Yz1zdHIuY2hhckNvZGVBdChtX3Bvcyk7aWYoKGMmNjQ1MTIpPT09NTUyOTYmJm1fcG9zKzE8c3RyX2xlbil7YzI9c3RyLmNoYXJDb2RlQXQobV9wb3MrMSk7aWYoKGMyJjY0NTEyKT09PTU2MzIwKXtjPQo2NTUzNisoYy01NTI5Njw8MTApKyhjMi01NjMyMCk7bV9wb3MrK319YnVmX2xlbis9YzwxMjg/MTpjPDIwNDg/MjpjPDY1NTM2PzM6NH1pZihzdXBwb3J0LnVpbnQ4YXJyYXkpYnVmPW5ldyBVaW50OEFycmF5KGJ1Zl9sZW4pO2Vsc2UgYnVmPW5ldyBBcnJheShidWZfbGVuKTtmb3IoaT0wLG1fcG9zPTA7aTxidWZfbGVuO21fcG9zKyspe2M9c3RyLmNoYXJDb2RlQXQobV9wb3MpO2lmKChjJjY0NTEyKT09PTU1Mjk2JiZtX3BvcysxPHN0cl9sZW4pe2MyPXN0ci5jaGFyQ29kZUF0KG1fcG9zKzEpO2lmKChjMiY2NDUxMik9PT01NjMyMCl7Yz02NTUzNisoYy01NTI5Njw8MTApKyhjMi01NjMyMCk7bV9wb3MrK319aWYoYzwxMjgpYnVmW2krK109YztlbHNlIGlmKGM8MjA0OCl7YnVmW2krK109MTkyfGM+Pj42O2J1ZltpKytdPTEyOHxjJjYzfWVsc2UgaWYoYzw2NTUzNil7YnVmW2krK109MjI0fGM+Pj4xMjtidWZbaSsrXT0xMjh8Yz4+PjYmNjM7YnVmW2krK109MTI4fGMmNjN9ZWxzZXtidWZbaSsrXT0KMjQwfGM+Pj4xODtidWZbaSsrXT0xMjh8Yz4+PjEyJjYzO2J1ZltpKytdPTEyOHxjPj4+NiY2MztidWZbaSsrXT0xMjh8YyY2M319cmV0dXJuIGJ1Zn07dmFyIHV0Zjhib3JkZXI9ZnVuY3Rpb24oYnVmLG1heCl7dmFyIHBvczttYXg9bWF4fHxidWYubGVuZ3RoO2lmKG1heD5idWYubGVuZ3RoKW1heD1idWYubGVuZ3RoO3Bvcz1tYXgtMTt3aGlsZShwb3M+PTAmJihidWZbcG9zXSYxOTIpPT09MTI4KXBvcy0tO2lmKHBvczwwKXJldHVybiBtYXg7aWYocG9zPT09MClyZXR1cm4gbWF4O3JldHVybiBwb3MrX3V0ZjhsZW5bYnVmW3Bvc11dPm1heD9wb3M6bWF4fTt2YXIgYnVmMnN0cmluZz1mdW5jdGlvbihidWYpe3ZhciBzdHIsaSxvdXQsYyxjX2xlbjt2YXIgbGVuPWJ1Zi5sZW5ndGg7dmFyIHV0ZjE2YnVmPW5ldyBBcnJheShsZW4qMik7Zm9yKG91dD0wLGk9MDtpPGxlbjspe2M9YnVmW2krK107aWYoYzwxMjgpe3V0ZjE2YnVmW291dCsrXT1jO2NvbnRpbnVlfWNfbGVuPV91dGY4bGVuW2NdOwppZihjX2xlbj40KXt1dGYxNmJ1ZltvdXQrK109NjU1MzM7aSs9Y19sZW4tMTtjb250aW51ZX1jJj1jX2xlbj09PTI/MzE6Y19sZW49PT0zPzE1Ojc7d2hpbGUoY19sZW4+MSYmaTxsZW4pe2M9Yzw8NnxidWZbaSsrXSY2MztjX2xlbi0tfWlmKGNfbGVuPjEpe3V0ZjE2YnVmW291dCsrXT02NTUzMztjb250aW51ZX1pZihjPDY1NTM2KXV0ZjE2YnVmW291dCsrXT1jO2Vsc2V7Yy09NjU1MzY7dXRmMTZidWZbb3V0KytdPTU1Mjk2fGM+PjEwJjEwMjM7dXRmMTZidWZbb3V0KytdPTU2MzIwfGMmMTAyM319aWYodXRmMTZidWYubGVuZ3RoIT09b3V0KWlmKHV0ZjE2YnVmLnN1YmFycmF5KXV0ZjE2YnVmPXV0ZjE2YnVmLnN1YmFycmF5KDAsb3V0KTtlbHNlIHV0ZjE2YnVmLmxlbmd0aD1vdXQ7cmV0dXJuIHV0aWxzLmFwcGx5RnJvbUNoYXJDb2RlKHV0ZjE2YnVmKX07ZXhwb3J0cy51dGY4ZW5jb2RlPWZ1bmN0aW9uIHV0ZjhlbmNvZGUoc3RyKXtpZihzdXBwb3J0Lm5vZGVidWZmZXIpcmV0dXJuIG5vZGVCdWZmZXIoc3RyLAoidXRmLTgiKTtyZXR1cm4gc3RyaW5nMmJ1ZihzdHIpfTtleHBvcnRzLnV0ZjhkZWNvZGU9ZnVuY3Rpb24gdXRmOGRlY29kZShidWYpe2lmKHN1cHBvcnQubm9kZWJ1ZmZlcilyZXR1cm4gdXRpbHMudHJhbnNmb3JtVG8oIm5vZGVidWZmZXIiLGJ1ZikudG9TdHJpbmcoInV0Zi04Iik7YnVmPXV0aWxzLnRyYW5zZm9ybVRvKHN1cHBvcnQudWludDhhcnJheT8idWludDhhcnJheSI6ImFycmF5IixidWYpO3ZhciByZXN1bHQ9W10saz0wLGxlbj1idWYubGVuZ3RoLGNodW5rPTY1NTM2O3doaWxlKGs8bGVuKXt2YXIgbmV4dEJvdW5kYXJ5PXV0Zjhib3JkZXIoYnVmLE1hdGgubWluKGsrY2h1bmssbGVuKSk7aWYoc3VwcG9ydC51aW50OGFycmF5KXJlc3VsdC5wdXNoKGJ1ZjJzdHJpbmcoYnVmLnN1YmFycmF5KGssbmV4dEJvdW5kYXJ5KSkpO2Vsc2UgcmVzdWx0LnB1c2goYnVmMnN0cmluZyhidWYuc2xpY2UoayxuZXh0Qm91bmRhcnkpKSk7az1uZXh0Qm91bmRhcnl9cmV0dXJuIHJlc3VsdC5qb2luKCIiKX19LAp7Ii4vbm9kZUJ1ZmZlciI6MTEsIi4vc3VwcG9ydCI6MTcsIi4vdXRpbHMiOjIxfV0sMjE6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe3ZhciBzdXBwb3J0PV9kZXJlcV8oIi4vc3VwcG9ydCIpO3ZhciBjb21wcmVzc2lvbnM9X2RlcmVxXygiLi9jb21wcmVzc2lvbnMiKTt2YXIgbm9kZUJ1ZmZlcj1fZGVyZXFfKCIuL25vZGVCdWZmZXIiKTtleHBvcnRzLnN0cmluZzJiaW5hcnk9ZnVuY3Rpb24oc3RyKXt2YXIgcmVzdWx0PSIiO2Zvcih2YXIgaT0wO2k8c3RyLmxlbmd0aDtpKyspcmVzdWx0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKHN0ci5jaGFyQ29kZUF0KGkpJjI1NSk7cmV0dXJuIHJlc3VsdH07ZXhwb3J0cy5hcnJheUJ1ZmZlcjJCbG9iPWZ1bmN0aW9uKGJ1ZmZlcil7ZXhwb3J0cy5jaGVja1N1cHBvcnQoImJsb2IiKTt0cnl7cmV0dXJuIG5ldyBCbG9iKFtidWZmZXJdLHt0eXBlOiJhcHBsaWNhdGlvbi96aXAifSl9Y2F0Y2goZSl7dHJ5e3ZhciBCdWlsZGVyPXdpbmRvdy5CbG9iQnVpbGRlcnx8CndpbmRvdy5XZWJLaXRCbG9iQnVpbGRlcnx8d2luZG93Lk1vekJsb2JCdWlsZGVyfHx3aW5kb3cuTVNCbG9iQnVpbGRlcjt2YXIgYnVpbGRlcj1uZXcgQnVpbGRlcjtidWlsZGVyLmFwcGVuZChidWZmZXIpO3JldHVybiBidWlsZGVyLmdldEJsb2IoImFwcGxpY2F0aW9uL3ppcCIpfWNhdGNoKGUpe3Rocm93IG5ldyBFcnJvcigiQnVnIDogY2FuJ3QgY29uc3RydWN0IHRoZSBCbG9iLiIpO319fTtmdW5jdGlvbiBpZGVudGl0eShpbnB1dCl7cmV0dXJuIGlucHV0fWZ1bmN0aW9uIHN0cmluZ1RvQXJyYXlMaWtlKHN0cixhcnJheSl7Zm9yKHZhciBpPTA7aTxzdHIubGVuZ3RoOysraSlhcnJheVtpXT1zdHIuY2hhckNvZGVBdChpKSYyNTU7cmV0dXJuIGFycmF5fWZ1bmN0aW9uIGFycmF5TGlrZVRvU3RyaW5nKGFycmF5KXt2YXIgY2h1bms9NjU1MzY7dmFyIHJlc3VsdD1bXSxsZW49YXJyYXkubGVuZ3RoLHR5cGU9ZXhwb3J0cy5nZXRUeXBlT2YoYXJyYXkpLGs9MCxjYW5Vc2VBcHBseT10cnVlOwp0cnl7c3dpdGNoKHR5cGUpe2Nhc2UgInVpbnQ4YXJyYXkiOlN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxuZXcgVWludDhBcnJheSgwKSk7YnJlYWs7Y2FzZSAibm9kZWJ1ZmZlciI6U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLG5vZGVCdWZmZXIoMCkpO2JyZWFrfX1jYXRjaChlKXtjYW5Vc2VBcHBseT1mYWxzZX1pZighY2FuVXNlQXBwbHkpe3ZhciByZXN1bHRTdHI9IiI7Zm9yKHZhciBpPTA7aTxhcnJheS5sZW5ndGg7aSsrKXJlc3VsdFN0cis9U3RyaW5nLmZyb21DaGFyQ29kZShhcnJheVtpXSk7cmV0dXJuIHJlc3VsdFN0cn13aGlsZShrPGxlbiYmY2h1bms+MSl0cnl7aWYodHlwZT09PSJhcnJheSJ8fHR5cGU9PT0ibm9kZWJ1ZmZlciIpcmVzdWx0LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLGFycmF5LnNsaWNlKGssTWF0aC5taW4oaytjaHVuayxsZW4pKSkpO2Vsc2UgcmVzdWx0LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLAphcnJheS5zdWJhcnJheShrLE1hdGgubWluKGsrY2h1bmssbGVuKSkpKTtrKz1jaHVua31jYXRjaChlKXtjaHVuaz1NYXRoLmZsb29yKGNodW5rLzIpfXJldHVybiByZXN1bHQuam9pbigiIil9ZXhwb3J0cy5hcHBseUZyb21DaGFyQ29kZT1hcnJheUxpa2VUb1N0cmluZztmdW5jdGlvbiBhcnJheUxpa2VUb0FycmF5TGlrZShhcnJheUZyb20sYXJyYXlUbyl7Zm9yKHZhciBpPTA7aTxhcnJheUZyb20ubGVuZ3RoO2krKylhcnJheVRvW2ldPWFycmF5RnJvbVtpXTtyZXR1cm4gYXJyYXlUb312YXIgdHJhbnNmb3JtPXt9O3RyYW5zZm9ybVsic3RyaW5nIl09eyJzdHJpbmciOmlkZW50aXR5LCJhcnJheSI6ZnVuY3Rpb24oaW5wdXQpe3JldHVybiBzdHJpbmdUb0FycmF5TGlrZShpbnB1dCxuZXcgQXJyYXkoaW5wdXQubGVuZ3RoKSl9LCJhcnJheWJ1ZmZlciI6ZnVuY3Rpb24oaW5wdXQpe3JldHVybiB0cmFuc2Zvcm1bInN0cmluZyJdWyJ1aW50OGFycmF5Il0oaW5wdXQpLmJ1ZmZlcn0sInVpbnQ4YXJyYXkiOmZ1bmN0aW9uKGlucHV0KXtyZXR1cm4gc3RyaW5nVG9BcnJheUxpa2UoaW5wdXQsCm5ldyBVaW50OEFycmF5KGlucHV0Lmxlbmd0aCkpfSwibm9kZWJ1ZmZlciI6ZnVuY3Rpb24oaW5wdXQpe3JldHVybiBzdHJpbmdUb0FycmF5TGlrZShpbnB1dCxub2RlQnVmZmVyKGlucHV0Lmxlbmd0aCkpfX07dHJhbnNmb3JtWyJhcnJheSJdPXsic3RyaW5nIjphcnJheUxpa2VUb1N0cmluZywiYXJyYXkiOmlkZW50aXR5LCJhcnJheWJ1ZmZlciI6ZnVuY3Rpb24oaW5wdXQpe3JldHVybihuZXcgVWludDhBcnJheShpbnB1dCkpLmJ1ZmZlcn0sInVpbnQ4YXJyYXkiOmZ1bmN0aW9uKGlucHV0KXtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoaW5wdXQpfSwibm9kZWJ1ZmZlciI6ZnVuY3Rpb24oaW5wdXQpe3JldHVybiBub2RlQnVmZmVyKGlucHV0KX19O3RyYW5zZm9ybVsiYXJyYXlidWZmZXIiXT17InN0cmluZyI6ZnVuY3Rpb24oaW5wdXQpe3JldHVybiBhcnJheUxpa2VUb1N0cmluZyhuZXcgVWludDhBcnJheShpbnB1dCkpfSwiYXJyYXkiOmZ1bmN0aW9uKGlucHV0KXtyZXR1cm4gYXJyYXlMaWtlVG9BcnJheUxpa2UobmV3IFVpbnQ4QXJyYXkoaW5wdXQpLApuZXcgQXJyYXkoaW5wdXQuYnl0ZUxlbmd0aCkpfSwiYXJyYXlidWZmZXIiOmlkZW50aXR5LCJ1aW50OGFycmF5IjpmdW5jdGlvbihpbnB1dCl7cmV0dXJuIG5ldyBVaW50OEFycmF5KGlucHV0KX0sIm5vZGVidWZmZXIiOmZ1bmN0aW9uKGlucHV0KXtyZXR1cm4gbm9kZUJ1ZmZlcihuZXcgVWludDhBcnJheShpbnB1dCkpfX07dHJhbnNmb3JtWyJ1aW50OGFycmF5Il09eyJzdHJpbmciOmFycmF5TGlrZVRvU3RyaW5nLCJhcnJheSI6ZnVuY3Rpb24oaW5wdXQpe3JldHVybiBhcnJheUxpa2VUb0FycmF5TGlrZShpbnB1dCxuZXcgQXJyYXkoaW5wdXQubGVuZ3RoKSl9LCJhcnJheWJ1ZmZlciI6ZnVuY3Rpb24oaW5wdXQpe3JldHVybiBpbnB1dC5idWZmZXJ9LCJ1aW50OGFycmF5IjppZGVudGl0eSwibm9kZWJ1ZmZlciI6ZnVuY3Rpb24oaW5wdXQpe3JldHVybiBub2RlQnVmZmVyKGlucHV0KX19O3RyYW5zZm9ybVsibm9kZWJ1ZmZlciJdPXsic3RyaW5nIjphcnJheUxpa2VUb1N0cmluZywKImFycmF5IjpmdW5jdGlvbihpbnB1dCl7cmV0dXJuIGFycmF5TGlrZVRvQXJyYXlMaWtlKGlucHV0LG5ldyBBcnJheShpbnB1dC5sZW5ndGgpKX0sImFycmF5YnVmZmVyIjpmdW5jdGlvbihpbnB1dCl7cmV0dXJuIHRyYW5zZm9ybVsibm9kZWJ1ZmZlciJdWyJ1aW50OGFycmF5Il0oaW5wdXQpLmJ1ZmZlcn0sInVpbnQ4YXJyYXkiOmZ1bmN0aW9uKGlucHV0KXtyZXR1cm4gYXJyYXlMaWtlVG9BcnJheUxpa2UoaW5wdXQsbmV3IFVpbnQ4QXJyYXkoaW5wdXQubGVuZ3RoKSl9LCJub2RlYnVmZmVyIjppZGVudGl0eX07ZXhwb3J0cy50cmFuc2Zvcm1Ubz1mdW5jdGlvbihvdXRwdXRUeXBlLGlucHV0KXtpZighaW5wdXQpaW5wdXQ9IiI7aWYoIW91dHB1dFR5cGUpcmV0dXJuIGlucHV0O2V4cG9ydHMuY2hlY2tTdXBwb3J0KG91dHB1dFR5cGUpO3ZhciBpbnB1dFR5cGU9ZXhwb3J0cy5nZXRUeXBlT2YoaW5wdXQpO3ZhciByZXN1bHQ9dHJhbnNmb3JtW2lucHV0VHlwZV1bb3V0cHV0VHlwZV0oaW5wdXQpOwpyZXR1cm4gcmVzdWx0fTtleHBvcnRzLmdldFR5cGVPZj1mdW5jdGlvbihpbnB1dCl7aWYodHlwZW9mIGlucHV0PT09InN0cmluZyIpcmV0dXJuInN0cmluZyI7aWYoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGlucHV0KT09PSJbb2JqZWN0IEFycmF5XSIpcmV0dXJuImFycmF5IjtpZihzdXBwb3J0Lm5vZGVidWZmZXImJm5vZGVCdWZmZXIudGVzdChpbnB1dCkpcmV0dXJuIm5vZGVidWZmZXIiO2lmKHN1cHBvcnQudWludDhhcnJheSYmaW5wdXQgaW5zdGFuY2VvZiBVaW50OEFycmF5KXJldHVybiJ1aW50OGFycmF5IjtpZihzdXBwb3J0LmFycmF5YnVmZmVyJiZpbnB1dCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKXJldHVybiJhcnJheWJ1ZmZlciJ9O2V4cG9ydHMuY2hlY2tTdXBwb3J0PWZ1bmN0aW9uKHR5cGUpe3ZhciBzdXBwb3J0ZWQ9c3VwcG9ydFt0eXBlLnRvTG93ZXJDYXNlKCldO2lmKCFzdXBwb3J0ZWQpdGhyb3cgbmV3IEVycm9yKHR5cGUrIiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnJvd3NlciIpOwp9O2V4cG9ydHMuTUFYX1ZBTFVFXzE2QklUUz02NTUzNTtleHBvcnRzLk1BWF9WQUxVRV8zMkJJVFM9LTE7ZXhwb3J0cy5wcmV0dHk9ZnVuY3Rpb24oc3RyKXt2YXIgcmVzPSIiLGNvZGUsaTtmb3IoaT0wO2k8KHN0cnx8IiIpLmxlbmd0aDtpKyspe2NvZGU9c3RyLmNoYXJDb2RlQXQoaSk7cmVzKz0iXFx4IisoY29kZTwxNj8iMCI6IiIpK2NvZGUudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCl9cmV0dXJuIHJlc307ZXhwb3J0cy5maW5kQ29tcHJlc3Npb249ZnVuY3Rpb24oY29tcHJlc3Npb25NZXRob2Qpe2Zvcih2YXIgbWV0aG9kIGluIGNvbXByZXNzaW9ucyl7aWYoIWNvbXByZXNzaW9ucy5oYXNPd25Qcm9wZXJ0eShtZXRob2QpKWNvbnRpbnVlO2lmKGNvbXByZXNzaW9uc1ttZXRob2RdLm1hZ2ljPT09Y29tcHJlc3Npb25NZXRob2QpcmV0dXJuIGNvbXByZXNzaW9uc1ttZXRob2RdfXJldHVybiBudWxsfTtleHBvcnRzLmlzUmVnRXhwPWZ1bmN0aW9uKG9iamVjdCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmplY3QpPT09CiJbb2JqZWN0IFJlZ0V4cF0ifX0seyIuL2NvbXByZXNzaW9ucyI6MywiLi9ub2RlQnVmZmVyIjoxMSwiLi9zdXBwb3J0IjoxN31dLDIyOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXt2YXIgU3RyaW5nUmVhZGVyPV9kZXJlcV8oIi4vc3RyaW5nUmVhZGVyIik7dmFyIE5vZGVCdWZmZXJSZWFkZXI9X2RlcmVxXygiLi9ub2RlQnVmZmVyUmVhZGVyIik7dmFyIFVpbnQ4QXJyYXlSZWFkZXI9X2RlcmVxXygiLi91aW50OEFycmF5UmVhZGVyIik7dmFyIHV0aWxzPV9kZXJlcV8oIi4vdXRpbHMiKTt2YXIgc2lnPV9kZXJlcV8oIi4vc2lnbmF0dXJlIik7dmFyIFppcEVudHJ5PV9kZXJlcV8oIi4vemlwRW50cnkiKTt2YXIgc3VwcG9ydD1fZGVyZXFfKCIuL3N1cHBvcnQiKTt2YXIganN6aXBQcm90bz1fZGVyZXFfKCIuL29iamVjdCIpO2Z1bmN0aW9uIFppcEVudHJpZXMoZGF0YSxsb2FkT3B0aW9ucyl7dGhpcy5maWxlcz1bXTt0aGlzLmxvYWRPcHRpb25zPWxvYWRPcHRpb25zOwppZihkYXRhKXRoaXMubG9hZChkYXRhKX1aaXBFbnRyaWVzLnByb3RvdHlwZT17Y2hlY2tTaWduYXR1cmU6ZnVuY3Rpb24oZXhwZWN0ZWRTaWduYXR1cmUpe3ZhciBzaWduYXR1cmU9dGhpcy5yZWFkZXIucmVhZFN0cmluZyg0KTtpZihzaWduYXR1cmUhPT1leHBlY3RlZFNpZ25hdHVyZSl0aHJvdyBuZXcgRXJyb3IoIkNvcnJ1cHRlZCB6aXAgb3IgYnVnIDogdW5leHBlY3RlZCBzaWduYXR1cmUgIisiKCIrdXRpbHMucHJldHR5KHNpZ25hdHVyZSkrIiwgZXhwZWN0ZWQgIit1dGlscy5wcmV0dHkoZXhwZWN0ZWRTaWduYXR1cmUpKyIpIik7fSxyZWFkQmxvY2tFbmRPZkNlbnRyYWw6ZnVuY3Rpb24oKXt0aGlzLmRpc2tOdW1iZXI9dGhpcy5yZWFkZXIucmVhZEludCgyKTt0aGlzLmRpc2tXaXRoQ2VudHJhbERpclN0YXJ0PXRoaXMucmVhZGVyLnJlYWRJbnQoMik7dGhpcy5jZW50cmFsRGlyUmVjb3Jkc09uVGhpc0Rpc2s9dGhpcy5yZWFkZXIucmVhZEludCgyKTt0aGlzLmNlbnRyYWxEaXJSZWNvcmRzPQp0aGlzLnJlYWRlci5yZWFkSW50KDIpO3RoaXMuY2VudHJhbERpclNpemU9dGhpcy5yZWFkZXIucmVhZEludCg0KTt0aGlzLmNlbnRyYWxEaXJPZmZzZXQ9dGhpcy5yZWFkZXIucmVhZEludCg0KTt0aGlzLnppcENvbW1lbnRMZW5ndGg9dGhpcy5yZWFkZXIucmVhZEludCgyKTt0aGlzLnppcENvbW1lbnQ9dGhpcy5yZWFkZXIucmVhZFN0cmluZyh0aGlzLnppcENvbW1lbnRMZW5ndGgpO3RoaXMuemlwQ29tbWVudD1qc3ppcFByb3RvLnV0ZjhkZWNvZGUodGhpcy56aXBDb21tZW50KX0scmVhZEJsb2NrWmlwNjRFbmRPZkNlbnRyYWw6ZnVuY3Rpb24oKXt0aGlzLnppcDY0RW5kT2ZDZW50cmFsU2l6ZT10aGlzLnJlYWRlci5yZWFkSW50KDgpO3RoaXMudmVyc2lvbk1hZGVCeT10aGlzLnJlYWRlci5yZWFkU3RyaW5nKDIpO3RoaXMudmVyc2lvbk5lZWRlZD10aGlzLnJlYWRlci5yZWFkSW50KDIpO3RoaXMuZGlza051bWJlcj10aGlzLnJlYWRlci5yZWFkSW50KDQpO3RoaXMuZGlza1dpdGhDZW50cmFsRGlyU3RhcnQ9CnRoaXMucmVhZGVyLnJlYWRJbnQoNCk7dGhpcy5jZW50cmFsRGlyUmVjb3Jkc09uVGhpc0Rpc2s9dGhpcy5yZWFkZXIucmVhZEludCg4KTt0aGlzLmNlbnRyYWxEaXJSZWNvcmRzPXRoaXMucmVhZGVyLnJlYWRJbnQoOCk7dGhpcy5jZW50cmFsRGlyU2l6ZT10aGlzLnJlYWRlci5yZWFkSW50KDgpO3RoaXMuY2VudHJhbERpck9mZnNldD10aGlzLnJlYWRlci5yZWFkSW50KDgpO3RoaXMuemlwNjRFeHRlbnNpYmxlRGF0YT17fTt2YXIgZXh0cmFEYXRhU2l6ZT10aGlzLnppcDY0RW5kT2ZDZW50cmFsU2l6ZS00NCxpbmRleD0wLGV4dHJhRmllbGRJZCxleHRyYUZpZWxkTGVuZ3RoLGV4dHJhRmllbGRWYWx1ZTt3aGlsZShpbmRleDxleHRyYURhdGFTaXplKXtleHRyYUZpZWxkSWQ9dGhpcy5yZWFkZXIucmVhZEludCgyKTtleHRyYUZpZWxkTGVuZ3RoPXRoaXMucmVhZGVyLnJlYWRJbnQoNCk7ZXh0cmFGaWVsZFZhbHVlPXRoaXMucmVhZGVyLnJlYWRTdHJpbmcoZXh0cmFGaWVsZExlbmd0aCk7CnRoaXMuemlwNjRFeHRlbnNpYmxlRGF0YVtleHRyYUZpZWxkSWRdPXtpZDpleHRyYUZpZWxkSWQsbGVuZ3RoOmV4dHJhRmllbGRMZW5ndGgsdmFsdWU6ZXh0cmFGaWVsZFZhbHVlfX19LHJlYWRCbG9ja1ppcDY0RW5kT2ZDZW50cmFsTG9jYXRvcjpmdW5jdGlvbigpe3RoaXMuZGlza1dpdGhaaXA2NENlbnRyYWxEaXJTdGFydD10aGlzLnJlYWRlci5yZWFkSW50KDQpO3RoaXMucmVsYXRpdmVPZmZzZXRFbmRPZlppcDY0Q2VudHJhbERpcj10aGlzLnJlYWRlci5yZWFkSW50KDgpO3RoaXMuZGlza3NDb3VudD10aGlzLnJlYWRlci5yZWFkSW50KDQpO2lmKHRoaXMuZGlza3NDb3VudD4xKXRocm93IG5ldyBFcnJvcigiTXVsdGktdm9sdW1lcyB6aXAgYXJlIG5vdCBzdXBwb3J0ZWQiKTt9LHJlYWRMb2NhbEZpbGVzOmZ1bmN0aW9uKCl7dmFyIGksZmlsZTtmb3IoaT0wO2k8dGhpcy5maWxlcy5sZW5ndGg7aSsrKXtmaWxlPXRoaXMuZmlsZXNbaV07dGhpcy5yZWFkZXIuc2V0SW5kZXgoZmlsZS5sb2NhbEhlYWRlck9mZnNldCk7CnRoaXMuY2hlY2tTaWduYXR1cmUoc2lnLkxPQ0FMX0ZJTEVfSEVBREVSKTtmaWxlLnJlYWRMb2NhbFBhcnQodGhpcy5yZWFkZXIpO2ZpbGUuaGFuZGxlVVRGOCgpfX0scmVhZENlbnRyYWxEaXI6ZnVuY3Rpb24oKXt2YXIgZmlsZTt0aGlzLnJlYWRlci5zZXRJbmRleCh0aGlzLmNlbnRyYWxEaXJPZmZzZXQpO3doaWxlKHRoaXMucmVhZGVyLnJlYWRTdHJpbmcoNCk9PT1zaWcuQ0VOVFJBTF9GSUxFX0hFQURFUil7ZmlsZT1uZXcgWmlwRW50cnkoe3ppcDY0OnRoaXMuemlwNjR9LHRoaXMubG9hZE9wdGlvbnMpO2ZpbGUucmVhZENlbnRyYWxQYXJ0KHRoaXMucmVhZGVyKTt0aGlzLmZpbGVzLnB1c2goZmlsZSl9fSxyZWFkRW5kT2ZDZW50cmFsOmZ1bmN0aW9uKCl7dmFyIG9mZnNldD10aGlzLnJlYWRlci5sYXN0SW5kZXhPZlNpZ25hdHVyZShzaWcuQ0VOVFJBTF9ESVJFQ1RPUllfRU5EKTtpZihvZmZzZXQ9PT0tMSl0aHJvdyBuZXcgRXJyb3IoIkNvcnJ1cHRlZCB6aXAgOiBjYW4ndCBmaW5kIGVuZCBvZiBjZW50cmFsIGRpcmVjdG9yeSIpOwp0aGlzLnJlYWRlci5zZXRJbmRleChvZmZzZXQpO3RoaXMuY2hlY2tTaWduYXR1cmUoc2lnLkNFTlRSQUxfRElSRUNUT1JZX0VORCk7dGhpcy5yZWFkQmxvY2tFbmRPZkNlbnRyYWwoKTtpZih0aGlzLmRpc2tOdW1iZXI9PT11dGlscy5NQVhfVkFMVUVfMTZCSVRTfHx0aGlzLmRpc2tXaXRoQ2VudHJhbERpclN0YXJ0PT09dXRpbHMuTUFYX1ZBTFVFXzE2QklUU3x8dGhpcy5jZW50cmFsRGlyUmVjb3Jkc09uVGhpc0Rpc2s9PT11dGlscy5NQVhfVkFMVUVfMTZCSVRTfHx0aGlzLmNlbnRyYWxEaXJSZWNvcmRzPT09dXRpbHMuTUFYX1ZBTFVFXzE2QklUU3x8dGhpcy5jZW50cmFsRGlyU2l6ZT09PXV0aWxzLk1BWF9WQUxVRV8zMkJJVFN8fHRoaXMuY2VudHJhbERpck9mZnNldD09PXV0aWxzLk1BWF9WQUxVRV8zMkJJVFMpe3RoaXMuemlwNjQ9dHJ1ZTtvZmZzZXQ9dGhpcy5yZWFkZXIubGFzdEluZGV4T2ZTaWduYXR1cmUoc2lnLlpJUDY0X0NFTlRSQUxfRElSRUNUT1JZX0xPQ0FUT1IpO2lmKG9mZnNldD09PQotMSl0aHJvdyBuZXcgRXJyb3IoIkNvcnJ1cHRlZCB6aXAgOiBjYW4ndCBmaW5kIHRoZSBaSVA2NCBlbmQgb2YgY2VudHJhbCBkaXJlY3RvcnkgbG9jYXRvciIpO3RoaXMucmVhZGVyLnNldEluZGV4KG9mZnNldCk7dGhpcy5jaGVja1NpZ25hdHVyZShzaWcuWklQNjRfQ0VOVFJBTF9ESVJFQ1RPUllfTE9DQVRPUik7dGhpcy5yZWFkQmxvY2taaXA2NEVuZE9mQ2VudHJhbExvY2F0b3IoKTt0aGlzLnJlYWRlci5zZXRJbmRleCh0aGlzLnJlbGF0aXZlT2Zmc2V0RW5kT2ZaaXA2NENlbnRyYWxEaXIpO3RoaXMuY2hlY2tTaWduYXR1cmUoc2lnLlpJUDY0X0NFTlRSQUxfRElSRUNUT1JZX0VORCk7dGhpcy5yZWFkQmxvY2taaXA2NEVuZE9mQ2VudHJhbCgpfX0scHJlcGFyZVJlYWRlcjpmdW5jdGlvbihkYXRhKXt2YXIgdHlwZT11dGlscy5nZXRUeXBlT2YoZGF0YSk7aWYodHlwZT09PSJzdHJpbmciJiYhc3VwcG9ydC51aW50OGFycmF5KXRoaXMucmVhZGVyPW5ldyBTdHJpbmdSZWFkZXIoZGF0YSwKdGhpcy5sb2FkT3B0aW9ucy5vcHRpbWl6ZWRCaW5hcnlTdHJpbmcpO2Vsc2UgaWYodHlwZT09PSJub2RlYnVmZmVyIil0aGlzLnJlYWRlcj1uZXcgTm9kZUJ1ZmZlclJlYWRlcihkYXRhKTtlbHNlIHRoaXMucmVhZGVyPW5ldyBVaW50OEFycmF5UmVhZGVyKHV0aWxzLnRyYW5zZm9ybVRvKCJ1aW50OGFycmF5IixkYXRhKSl9LGxvYWQ6ZnVuY3Rpb24oZGF0YSl7dGhpcy5wcmVwYXJlUmVhZGVyKGRhdGEpO3RoaXMucmVhZEVuZE9mQ2VudHJhbCgpO3RoaXMucmVhZENlbnRyYWxEaXIoKTt0aGlzLnJlYWRMb2NhbEZpbGVzKCl9fTttb2R1bGUuZXhwb3J0cz1aaXBFbnRyaWVzfSx7Ii4vbm9kZUJ1ZmZlclJlYWRlciI6MTIsIi4vb2JqZWN0IjoxMywiLi9zaWduYXR1cmUiOjE0LCIuL3N0cmluZ1JlYWRlciI6MTUsIi4vc3VwcG9ydCI6MTcsIi4vdWludDhBcnJheVJlYWRlciI6MTgsIi4vdXRpbHMiOjIxLCIuL3ppcEVudHJ5IjoyM31dLDIzOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXt2YXIgU3RyaW5nUmVhZGVyPQpfZGVyZXFfKCIuL3N0cmluZ1JlYWRlciIpO3ZhciB1dGlscz1fZGVyZXFfKCIuL3V0aWxzIik7dmFyIENvbXByZXNzZWRPYmplY3Q9X2RlcmVxXygiLi9jb21wcmVzc2VkT2JqZWN0Iik7dmFyIGpzemlwUHJvdG89X2RlcmVxXygiLi9vYmplY3QiKTtmdW5jdGlvbiBaaXBFbnRyeShvcHRpb25zLGxvYWRPcHRpb25zKXt0aGlzLm9wdGlvbnM9b3B0aW9uczt0aGlzLmxvYWRPcHRpb25zPWxvYWRPcHRpb25zfVppcEVudHJ5LnByb3RvdHlwZT17aXNFbmNyeXB0ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5iaXRGbGFnJjEpPT09MX0sdXNlVVRGODpmdW5jdGlvbigpe3JldHVybih0aGlzLmJpdEZsYWcmMjA0OCk9PT0yMDQ4fSxwcmVwYXJlQ29tcHJlc3NlZENvbnRlbnQ6ZnVuY3Rpb24ocmVhZGVyLGZyb20sbGVuZ3RoKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcHJldmlvdXNJbmRleD1yZWFkZXIuaW5kZXg7cmVhZGVyLnNldEluZGV4KGZyb20pO3ZhciBjb21wcmVzc2VkRmlsZURhdGE9CnJlYWRlci5yZWFkRGF0YShsZW5ndGgpO3JlYWRlci5zZXRJbmRleChwcmV2aW91c0luZGV4KTtyZXR1cm4gY29tcHJlc3NlZEZpbGVEYXRhfX0scHJlcGFyZUNvbnRlbnQ6ZnVuY3Rpb24ocmVhZGVyLGZyb20sbGVuZ3RoLGNvbXByZXNzaW9uLHVuY29tcHJlc3NlZFNpemUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBjb21wcmVzc2VkRmlsZURhdGE9dXRpbHMudHJhbnNmb3JtVG8oY29tcHJlc3Npb24udW5jb21wcmVzc0lucHV0VHlwZSx0aGlzLmdldENvbXByZXNzZWRDb250ZW50KCkpO3ZhciB1bmNvbXByZXNzZWRGaWxlRGF0YT1jb21wcmVzc2lvbi51bmNvbXByZXNzKGNvbXByZXNzZWRGaWxlRGF0YSk7aWYodW5jb21wcmVzc2VkRmlsZURhdGEubGVuZ3RoIT09dW5jb21wcmVzc2VkU2l6ZSl0aHJvdyBuZXcgRXJyb3IoIkJ1ZyA6IHVuY29tcHJlc3NlZCBkYXRhIHNpemUgbWlzbWF0Y2giKTtyZXR1cm4gdW5jb21wcmVzc2VkRmlsZURhdGF9fSxyZWFkTG9jYWxQYXJ0OmZ1bmN0aW9uKHJlYWRlcil7dmFyIGNvbXByZXNzaW9uLApsb2NhbEV4dHJhRmllbGRzTGVuZ3RoO3JlYWRlci5za2lwKDIyKTt0aGlzLmZpbGVOYW1lTGVuZ3RoPXJlYWRlci5yZWFkSW50KDIpO2xvY2FsRXh0cmFGaWVsZHNMZW5ndGg9cmVhZGVyLnJlYWRJbnQoMik7dGhpcy5maWxlTmFtZT1yZWFkZXIucmVhZFN0cmluZyh0aGlzLmZpbGVOYW1lTGVuZ3RoKTtyZWFkZXIuc2tpcChsb2NhbEV4dHJhRmllbGRzTGVuZ3RoKTtpZih0aGlzLmNvbXByZXNzZWRTaXplPT0tMXx8dGhpcy51bmNvbXByZXNzZWRTaXplPT0tMSl0aHJvdyBuZXcgRXJyb3IoIkJ1ZyBvciBjb3JydXB0ZWQgemlwIDogZGlkbid0IGdldCBlbm91Z2ggaW5mb3JtYXRpb25zIGZyb20gdGhlIGNlbnRyYWwgZGlyZWN0b3J5ICIrIihjb21wcmVzc2VkU2l6ZSA9PSAtMSB8fCB1bmNvbXByZXNzZWRTaXplID09IC0xKSIpO2NvbXByZXNzaW9uPXV0aWxzLmZpbmRDb21wcmVzc2lvbih0aGlzLmNvbXByZXNzaW9uTWV0aG9kKTtpZihjb21wcmVzc2lvbj09PW51bGwpdGhyb3cgbmV3IEVycm9yKCJDb3JydXB0ZWQgemlwIDogY29tcHJlc3Npb24gIisKdXRpbHMucHJldHR5KHRoaXMuY29tcHJlc3Npb25NZXRob2QpKyIgdW5rbm93biAoaW5uZXIgZmlsZSA6ICIrdGhpcy5maWxlTmFtZSsiKSIpO3RoaXMuZGVjb21wcmVzc2VkPW5ldyBDb21wcmVzc2VkT2JqZWN0O3RoaXMuZGVjb21wcmVzc2VkLmNvbXByZXNzZWRTaXplPXRoaXMuY29tcHJlc3NlZFNpemU7dGhpcy5kZWNvbXByZXNzZWQudW5jb21wcmVzc2VkU2l6ZT10aGlzLnVuY29tcHJlc3NlZFNpemU7dGhpcy5kZWNvbXByZXNzZWQuY3JjMzI9dGhpcy5jcmMzMjt0aGlzLmRlY29tcHJlc3NlZC5jb21wcmVzc2lvbk1ldGhvZD10aGlzLmNvbXByZXNzaW9uTWV0aG9kO3RoaXMuZGVjb21wcmVzc2VkLmdldENvbXByZXNzZWRDb250ZW50PXRoaXMucHJlcGFyZUNvbXByZXNzZWRDb250ZW50KHJlYWRlcixyZWFkZXIuaW5kZXgsdGhpcy5jb21wcmVzc2VkU2l6ZSxjb21wcmVzc2lvbik7dGhpcy5kZWNvbXByZXNzZWQuZ2V0Q29udGVudD10aGlzLnByZXBhcmVDb250ZW50KHJlYWRlciwKcmVhZGVyLmluZGV4LHRoaXMuY29tcHJlc3NlZFNpemUsY29tcHJlc3Npb24sdGhpcy51bmNvbXByZXNzZWRTaXplKTtpZih0aGlzLmxvYWRPcHRpb25zLmNoZWNrQ1JDMzIpe3RoaXMuZGVjb21wcmVzc2VkPXV0aWxzLnRyYW5zZm9ybVRvKCJzdHJpbmciLHRoaXMuZGVjb21wcmVzc2VkLmdldENvbnRlbnQoKSk7aWYoanN6aXBQcm90by5jcmMzMih0aGlzLmRlY29tcHJlc3NlZCkhPT10aGlzLmNyYzMyKXRocm93IG5ldyBFcnJvcigiQ29ycnVwdGVkIHppcCA6IENSQzMyIG1pc21hdGNoIik7fX0scmVhZENlbnRyYWxQYXJ0OmZ1bmN0aW9uKHJlYWRlcil7dGhpcy52ZXJzaW9uTWFkZUJ5PXJlYWRlci5yZWFkU3RyaW5nKDIpO3RoaXMudmVyc2lvbk5lZWRlZD1yZWFkZXIucmVhZEludCgyKTt0aGlzLmJpdEZsYWc9cmVhZGVyLnJlYWRJbnQoMik7dGhpcy5jb21wcmVzc2lvbk1ldGhvZD1yZWFkZXIucmVhZFN0cmluZygyKTt0aGlzLmRhdGU9cmVhZGVyLnJlYWREYXRlKCk7dGhpcy5jcmMzMj0KcmVhZGVyLnJlYWRJbnQoNCk7dGhpcy5jb21wcmVzc2VkU2l6ZT1yZWFkZXIucmVhZEludCg0KTt0aGlzLnVuY29tcHJlc3NlZFNpemU9cmVhZGVyLnJlYWRJbnQoNCk7dGhpcy5maWxlTmFtZUxlbmd0aD1yZWFkZXIucmVhZEludCgyKTt0aGlzLmV4dHJhRmllbGRzTGVuZ3RoPXJlYWRlci5yZWFkSW50KDIpO3RoaXMuZmlsZUNvbW1lbnRMZW5ndGg9cmVhZGVyLnJlYWRJbnQoMik7dGhpcy5kaXNrTnVtYmVyU3RhcnQ9cmVhZGVyLnJlYWRJbnQoMik7dGhpcy5pbnRlcm5hbEZpbGVBdHRyaWJ1dGVzPXJlYWRlci5yZWFkSW50KDIpO3RoaXMuZXh0ZXJuYWxGaWxlQXR0cmlidXRlcz1yZWFkZXIucmVhZEludCg0KTt0aGlzLmxvY2FsSGVhZGVyT2Zmc2V0PXJlYWRlci5yZWFkSW50KDQpO2lmKHRoaXMuaXNFbmNyeXB0ZWQoKSl0aHJvdyBuZXcgRXJyb3IoIkVuY3J5cHRlZCB6aXAgYXJlIG5vdCBzdXBwb3J0ZWQiKTt0aGlzLmZpbGVOYW1lPXJlYWRlci5yZWFkU3RyaW5nKHRoaXMuZmlsZU5hbWVMZW5ndGgpOwp0aGlzLnJlYWRFeHRyYUZpZWxkcyhyZWFkZXIpO3RoaXMucGFyc2VaSVA2NEV4dHJhRmllbGQocmVhZGVyKTt0aGlzLmZpbGVDb21tZW50PXJlYWRlci5yZWFkU3RyaW5nKHRoaXMuZmlsZUNvbW1lbnRMZW5ndGgpO3RoaXMuZGlyPXRoaXMuZXh0ZXJuYWxGaWxlQXR0cmlidXRlcyYxNj90cnVlOmZhbHNlfSxwYXJzZVpJUDY0RXh0cmFGaWVsZDpmdW5jdGlvbihyZWFkZXIpe2lmKCF0aGlzLmV4dHJhRmllbGRzWzFdKXJldHVybjt2YXIgZXh0cmFSZWFkZXI9bmV3IFN0cmluZ1JlYWRlcih0aGlzLmV4dHJhRmllbGRzWzFdLnZhbHVlKTtpZih0aGlzLnVuY29tcHJlc3NlZFNpemU9PT11dGlscy5NQVhfVkFMVUVfMzJCSVRTKXRoaXMudW5jb21wcmVzc2VkU2l6ZT1leHRyYVJlYWRlci5yZWFkSW50KDgpO2lmKHRoaXMuY29tcHJlc3NlZFNpemU9PT11dGlscy5NQVhfVkFMVUVfMzJCSVRTKXRoaXMuY29tcHJlc3NlZFNpemU9ZXh0cmFSZWFkZXIucmVhZEludCg4KTtpZih0aGlzLmxvY2FsSGVhZGVyT2Zmc2V0PT09CnV0aWxzLk1BWF9WQUxVRV8zMkJJVFMpdGhpcy5sb2NhbEhlYWRlck9mZnNldD1leHRyYVJlYWRlci5yZWFkSW50KDgpO2lmKHRoaXMuZGlza051bWJlclN0YXJ0PT09dXRpbHMuTUFYX1ZBTFVFXzMyQklUUyl0aGlzLmRpc2tOdW1iZXJTdGFydD1leHRyYVJlYWRlci5yZWFkSW50KDQpfSxyZWFkRXh0cmFGaWVsZHM6ZnVuY3Rpb24ocmVhZGVyKXt2YXIgc3RhcnQ9cmVhZGVyLmluZGV4LGV4dHJhRmllbGRJZCxleHRyYUZpZWxkTGVuZ3RoLGV4dHJhRmllbGRWYWx1ZTt0aGlzLmV4dHJhRmllbGRzPXRoaXMuZXh0cmFGaWVsZHN8fHt9O3doaWxlKHJlYWRlci5pbmRleDxzdGFydCt0aGlzLmV4dHJhRmllbGRzTGVuZ3RoKXtleHRyYUZpZWxkSWQ9cmVhZGVyLnJlYWRJbnQoMik7ZXh0cmFGaWVsZExlbmd0aD1yZWFkZXIucmVhZEludCgyKTtleHRyYUZpZWxkVmFsdWU9cmVhZGVyLnJlYWRTdHJpbmcoZXh0cmFGaWVsZExlbmd0aCk7dGhpcy5leHRyYUZpZWxkc1tleHRyYUZpZWxkSWRdPQp7aWQ6ZXh0cmFGaWVsZElkLGxlbmd0aDpleHRyYUZpZWxkTGVuZ3RoLHZhbHVlOmV4dHJhRmllbGRWYWx1ZX19fSxoYW5kbGVVVEY4OmZ1bmN0aW9uKCl7aWYodGhpcy51c2VVVEY4KCkpe3RoaXMuZmlsZU5hbWU9anN6aXBQcm90by51dGY4ZGVjb2RlKHRoaXMuZmlsZU5hbWUpO3RoaXMuZmlsZUNvbW1lbnQ9anN6aXBQcm90by51dGY4ZGVjb2RlKHRoaXMuZmlsZUNvbW1lbnQpfWVsc2V7dmFyIHVwYXRoPXRoaXMuZmluZEV4dHJhRmllbGRVbmljb2RlUGF0aCgpO2lmKHVwYXRoIT09bnVsbCl0aGlzLmZpbGVOYW1lPXVwYXRoO3ZhciB1Y29tbWVudD10aGlzLmZpbmRFeHRyYUZpZWxkVW5pY29kZUNvbW1lbnQoKTtpZih1Y29tbWVudCE9PW51bGwpdGhpcy5maWxlQ29tbWVudD11Y29tbWVudH19LGZpbmRFeHRyYUZpZWxkVW5pY29kZVBhdGg6ZnVuY3Rpb24oKXt2YXIgdXBhdGhGaWVsZD10aGlzLmV4dHJhRmllbGRzWzI4Nzg5XTtpZih1cGF0aEZpZWxkKXt2YXIgZXh0cmFSZWFkZXI9Cm5ldyBTdHJpbmdSZWFkZXIodXBhdGhGaWVsZC52YWx1ZSk7aWYoZXh0cmFSZWFkZXIucmVhZEludCgxKSE9PTEpcmV0dXJuIG51bGw7aWYoanN6aXBQcm90by5jcmMzMih0aGlzLmZpbGVOYW1lKSE9PWV4dHJhUmVhZGVyLnJlYWRJbnQoNCkpcmV0dXJuIG51bGw7cmV0dXJuIGpzemlwUHJvdG8udXRmOGRlY29kZShleHRyYVJlYWRlci5yZWFkU3RyaW5nKHVwYXRoRmllbGQubGVuZ3RoLTUpKX1yZXR1cm4gbnVsbH0sZmluZEV4dHJhRmllbGRVbmljb2RlQ29tbWVudDpmdW5jdGlvbigpe3ZhciB1Y29tbWVudEZpZWxkPXRoaXMuZXh0cmFGaWVsZHNbMjU0NjFdO2lmKHVjb21tZW50RmllbGQpe3ZhciBleHRyYVJlYWRlcj1uZXcgU3RyaW5nUmVhZGVyKHVjb21tZW50RmllbGQudmFsdWUpO2lmKGV4dHJhUmVhZGVyLnJlYWRJbnQoMSkhPT0xKXJldHVybiBudWxsO2lmKGpzemlwUHJvdG8uY3JjMzIodGhpcy5maWxlQ29tbWVudCkhPT1leHRyYVJlYWRlci5yZWFkSW50KDQpKXJldHVybiBudWxsOwpyZXR1cm4ganN6aXBQcm90by51dGY4ZGVjb2RlKGV4dHJhUmVhZGVyLnJlYWRTdHJpbmcodWNvbW1lbnRGaWVsZC5sZW5ndGgtNSkpfXJldHVybiBudWxsfX07bW9kdWxlLmV4cG9ydHM9WmlwRW50cnl9LHsiLi9jb21wcmVzc2VkT2JqZWN0IjoyLCIuL29iamVjdCI6MTMsIi4vc3RyaW5nUmVhZGVyIjoxNSwiLi91dGlscyI6MjF9XSwyNDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7dmFyIGFzc2lnbj1fZGVyZXFfKCIuL2xpYi91dGlscy9jb21tb24iKS5hc3NpZ247dmFyIGRlZmxhdGU9X2RlcmVxXygiLi9saWIvZGVmbGF0ZSIpO3ZhciBpbmZsYXRlPV9kZXJlcV8oIi4vbGliL2luZmxhdGUiKTt2YXIgY29uc3RhbnRzPV9kZXJlcV8oIi4vbGliL3psaWIvY29uc3RhbnRzIik7dmFyIHBha289e307YXNzaWduKHBha28sZGVmbGF0ZSxpbmZsYXRlLGNvbnN0YW50cyk7bW9kdWxlLmV4cG9ydHM9cGFrb30seyIuL2xpYi9kZWZsYXRlIjoyNSwiLi9saWIvaW5mbGF0ZSI6MjYsCiIuL2xpYi91dGlscy9jb21tb24iOjI3LCIuL2xpYi96bGliL2NvbnN0YW50cyI6MzB9XSwyNTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7dmFyIHpsaWJfZGVmbGF0ZT1fZGVyZXFfKCIuL3psaWIvZGVmbGF0ZS5qcyIpO3ZhciB1dGlscz1fZGVyZXFfKCIuL3V0aWxzL2NvbW1vbiIpO3ZhciBzdHJpbmdzPV9kZXJlcV8oIi4vdXRpbHMvc3RyaW5ncyIpO3ZhciBtc2c9X2RlcmVxXygiLi96bGliL21lc3NhZ2VzIik7dmFyIHpzdHJlYW09X2RlcmVxXygiLi96bGliL3pzdHJlYW0iKTt2YXIgWl9OT19GTFVTSD0wO3ZhciBaX0ZJTklTSD00O3ZhciBaX09LPTA7dmFyIFpfU1RSRUFNX0VORD0xO3ZhciBaX0RFRkFVTFRfQ09NUFJFU1NJT049LTE7dmFyIFpfREVGQVVMVF9TVFJBVEVHWT0wO3ZhciBaX0RFRkxBVEVEPTg7dmFyIERlZmxhdGU9ZnVuY3Rpb24ob3B0aW9ucyl7dGhpcy5vcHRpb25zPXV0aWxzLmFzc2lnbih7bGV2ZWw6Wl9ERUZBVUxUX0NPTVBSRVNTSU9OLAptZXRob2Q6Wl9ERUZMQVRFRCxjaHVua1NpemU6MTYzODQsd2luZG93Qml0czoxNSxtZW1MZXZlbDo4LHN0cmF0ZWd5OlpfREVGQVVMVF9TVFJBVEVHWSx0bzoiIn0sb3B0aW9uc3x8e30pO3ZhciBvcHQ9dGhpcy5vcHRpb25zO2lmKG9wdC5yYXcmJm9wdC53aW5kb3dCaXRzPjApb3B0LndpbmRvd0JpdHM9LW9wdC53aW5kb3dCaXRzO2Vsc2UgaWYob3B0Lmd6aXAmJm9wdC53aW5kb3dCaXRzPjAmJm9wdC53aW5kb3dCaXRzPDE2KW9wdC53aW5kb3dCaXRzKz0xNjt0aGlzLmVycj0wO3RoaXMubXNnPSIiO3RoaXMuZW5kZWQ9ZmFsc2U7dGhpcy5jaHVua3M9W107dGhpcy5zdHJtPW5ldyB6c3RyZWFtO3RoaXMuc3RybS5hdmFpbF9vdXQ9MDt2YXIgc3RhdHVzPXpsaWJfZGVmbGF0ZS5kZWZsYXRlSW5pdDIodGhpcy5zdHJtLG9wdC5sZXZlbCxvcHQubWV0aG9kLG9wdC53aW5kb3dCaXRzLG9wdC5tZW1MZXZlbCxvcHQuc3RyYXRlZ3kpO2lmKHN0YXR1cyE9PVpfT0spdGhyb3cgbmV3IEVycm9yKG1zZ1tzdGF0dXNdKTsKaWYob3B0LmhlYWRlcil6bGliX2RlZmxhdGUuZGVmbGF0ZVNldEhlYWRlcih0aGlzLnN0cm0sb3B0LmhlYWRlcil9O0RlZmxhdGUucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24oZGF0YSxtb2RlKXt2YXIgc3RybT10aGlzLnN0cm07dmFyIGNodW5rU2l6ZT10aGlzLm9wdGlvbnMuY2h1bmtTaXplO3ZhciBzdGF0dXMsX21vZGU7aWYodGhpcy5lbmRlZClyZXR1cm4gZmFsc2U7X21vZGU9bW9kZT09PX5+bW9kZT9tb2RlOm1vZGU9PT10cnVlP1pfRklOSVNIOlpfTk9fRkxVU0g7aWYodHlwZW9mIGRhdGE9PT0ic3RyaW5nIilzdHJtLmlucHV0PXN0cmluZ3Muc3RyaW5nMmJ1ZihkYXRhKTtlbHNlIHN0cm0uaW5wdXQ9ZGF0YTtzdHJtLm5leHRfaW49MDtzdHJtLmF2YWlsX2luPXN0cm0uaW5wdXQubGVuZ3RoO2Rve2lmKHN0cm0uYXZhaWxfb3V0PT09MCl7c3RybS5vdXRwdXQ9bmV3IHV0aWxzLkJ1ZjgoY2h1bmtTaXplKTtzdHJtLm5leHRfb3V0PTA7c3RybS5hdmFpbF9vdXQ9Y2h1bmtTaXplfXN0YXR1cz0KemxpYl9kZWZsYXRlLmRlZmxhdGUoc3RybSxfbW9kZSk7aWYoc3RhdHVzIT09Wl9TVFJFQU1fRU5EJiZzdGF0dXMhPT1aX09LKXt0aGlzLm9uRW5kKHN0YXR1cyk7dGhpcy5lbmRlZD10cnVlO3JldHVybiBmYWxzZX1pZihzdHJtLmF2YWlsX291dD09PTB8fHN0cm0uYXZhaWxfaW49PT0wJiZfbW9kZT09PVpfRklOSVNIKWlmKHRoaXMub3B0aW9ucy50bz09PSJzdHJpbmciKXRoaXMub25EYXRhKHN0cmluZ3MuYnVmMmJpbnN0cmluZyh1dGlscy5zaHJpbmtCdWYoc3RybS5vdXRwdXQsc3RybS5uZXh0X291dCkpKTtlbHNlIHRoaXMub25EYXRhKHV0aWxzLnNocmlua0J1ZihzdHJtLm91dHB1dCxzdHJtLm5leHRfb3V0KSl9d2hpbGUoKHN0cm0uYXZhaWxfaW4+MHx8c3RybS5hdmFpbF9vdXQ9PT0wKSYmc3RhdHVzIT09Wl9TVFJFQU1fRU5EKTtpZihfbW9kZT09PVpfRklOSVNIKXtzdGF0dXM9emxpYl9kZWZsYXRlLmRlZmxhdGVFbmQodGhpcy5zdHJtKTt0aGlzLm9uRW5kKHN0YXR1cyk7CnRoaXMuZW5kZWQ9dHJ1ZTtyZXR1cm4gc3RhdHVzPT09Wl9PS31yZXR1cm4gdHJ1ZX07RGVmbGF0ZS5wcm90b3R5cGUub25EYXRhPWZ1bmN0aW9uKGNodW5rKXt0aGlzLmNodW5rcy5wdXNoKGNodW5rKX07RGVmbGF0ZS5wcm90b3R5cGUub25FbmQ9ZnVuY3Rpb24oc3RhdHVzKXtpZihzdGF0dXM9PT1aX09LKWlmKHRoaXMub3B0aW9ucy50bz09PSJzdHJpbmciKXRoaXMucmVzdWx0PXRoaXMuY2h1bmtzLmpvaW4oIiIpO2Vsc2UgdGhpcy5yZXN1bHQ9dXRpbHMuZmxhdHRlbkNodW5rcyh0aGlzLmNodW5rcyk7dGhpcy5jaHVua3M9W107dGhpcy5lcnI9c3RhdHVzO3RoaXMubXNnPXRoaXMuc3RybS5tc2d9O2Z1bmN0aW9uIGRlZmxhdGUoaW5wdXQsb3B0aW9ucyl7dmFyIGRlZmxhdG9yPW5ldyBEZWZsYXRlKG9wdGlvbnMpO2RlZmxhdG9yLnB1c2goaW5wdXQsdHJ1ZSk7aWYoZGVmbGF0b3IuZXJyKXRocm93IGRlZmxhdG9yLm1zZztyZXR1cm4gZGVmbGF0b3IucmVzdWx0fWZ1bmN0aW9uIGRlZmxhdGVSYXcoaW5wdXQsCm9wdGlvbnMpe29wdGlvbnM9b3B0aW9uc3x8e307b3B0aW9ucy5yYXc9dHJ1ZTtyZXR1cm4gZGVmbGF0ZShpbnB1dCxvcHRpb25zKX1mdW5jdGlvbiBnemlwKGlucHV0LG9wdGlvbnMpe29wdGlvbnM9b3B0aW9uc3x8e307b3B0aW9ucy5nemlwPXRydWU7cmV0dXJuIGRlZmxhdGUoaW5wdXQsb3B0aW9ucyl9ZXhwb3J0cy5EZWZsYXRlPURlZmxhdGU7ZXhwb3J0cy5kZWZsYXRlPWRlZmxhdGU7ZXhwb3J0cy5kZWZsYXRlUmF3PWRlZmxhdGVSYXc7ZXhwb3J0cy5nemlwPWd6aXB9LHsiLi91dGlscy9jb21tb24iOjI3LCIuL3V0aWxzL3N0cmluZ3MiOjI4LCIuL3psaWIvZGVmbGF0ZS5qcyI6MzIsIi4vemxpYi9tZXNzYWdlcyI6MzcsIi4vemxpYi96c3RyZWFtIjozOX1dLDI2OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXt2YXIgemxpYl9pbmZsYXRlPV9kZXJlcV8oIi4vemxpYi9pbmZsYXRlLmpzIik7dmFyIHV0aWxzPV9kZXJlcV8oIi4vdXRpbHMvY29tbW9uIik7dmFyIHN0cmluZ3M9Cl9kZXJlcV8oIi4vdXRpbHMvc3RyaW5ncyIpO3ZhciBjPV9kZXJlcV8oIi4vemxpYi9jb25zdGFudHMiKTt2YXIgbXNnPV9kZXJlcV8oIi4vemxpYi9tZXNzYWdlcyIpO3ZhciB6c3RyZWFtPV9kZXJlcV8oIi4vemxpYi96c3RyZWFtIik7dmFyIGd6aGVhZGVyPV9kZXJlcV8oIi4vemxpYi9nemhlYWRlciIpO3ZhciBJbmZsYXRlPWZ1bmN0aW9uKG9wdGlvbnMpe3RoaXMub3B0aW9ucz11dGlscy5hc3NpZ24oe2NodW5rU2l6ZToxNjM4NCx3aW5kb3dCaXRzOjAsdG86IiJ9LG9wdGlvbnN8fHt9KTt2YXIgb3B0PXRoaXMub3B0aW9ucztpZihvcHQucmF3JiZvcHQud2luZG93Qml0cz49MCYmb3B0LndpbmRvd0JpdHM8MTYpe29wdC53aW5kb3dCaXRzPS1vcHQud2luZG93Qml0cztpZihvcHQud2luZG93Qml0cz09PTApb3B0LndpbmRvd0JpdHM9LTE1fWlmKG9wdC53aW5kb3dCaXRzPj0wJiZvcHQud2luZG93Qml0czwxNiYmIShvcHRpb25zJiZvcHRpb25zLndpbmRvd0JpdHMpKW9wdC53aW5kb3dCaXRzKz0KMzI7aWYob3B0LndpbmRvd0JpdHM+MTUmJm9wdC53aW5kb3dCaXRzPDQ4KWlmKChvcHQud2luZG93Qml0cyYxNSk9PT0wKW9wdC53aW5kb3dCaXRzfD0xNTt0aGlzLmVycj0wO3RoaXMubXNnPSIiO3RoaXMuZW5kZWQ9ZmFsc2U7dGhpcy5jaHVua3M9W107dGhpcy5zdHJtPW5ldyB6c3RyZWFtO3RoaXMuc3RybS5hdmFpbF9vdXQ9MDt2YXIgc3RhdHVzPXpsaWJfaW5mbGF0ZS5pbmZsYXRlSW5pdDIodGhpcy5zdHJtLG9wdC53aW5kb3dCaXRzKTtpZihzdGF0dXMhPT1jLlpfT0spdGhyb3cgbmV3IEVycm9yKG1zZ1tzdGF0dXNdKTt0aGlzLmhlYWRlcj1uZXcgZ3poZWFkZXI7emxpYl9pbmZsYXRlLmluZmxhdGVHZXRIZWFkZXIodGhpcy5zdHJtLHRoaXMuaGVhZGVyKX07SW5mbGF0ZS5wcm90b3R5cGUucHVzaD1mdW5jdGlvbihkYXRhLG1vZGUpe3ZhciBzdHJtPXRoaXMuc3RybTt2YXIgY2h1bmtTaXplPXRoaXMub3B0aW9ucy5jaHVua1NpemU7dmFyIHN0YXR1cyxfbW9kZTt2YXIgbmV4dF9vdXRfdXRmOCwKdGFpbCx1dGY4c3RyO2lmKHRoaXMuZW5kZWQpcmV0dXJuIGZhbHNlO19tb2RlPW1vZGU9PT1+fm1vZGU/bW9kZTptb2RlPT09dHJ1ZT9jLlpfRklOSVNIOmMuWl9OT19GTFVTSDtpZih0eXBlb2YgZGF0YT09PSJzdHJpbmciKXN0cm0uaW5wdXQ9c3RyaW5ncy5iaW5zdHJpbmcyYnVmKGRhdGEpO2Vsc2Ugc3RybS5pbnB1dD1kYXRhO3N0cm0ubmV4dF9pbj0wO3N0cm0uYXZhaWxfaW49c3RybS5pbnB1dC5sZW5ndGg7ZG97aWYoc3RybS5hdmFpbF9vdXQ9PT0wKXtzdHJtLm91dHB1dD1uZXcgdXRpbHMuQnVmOChjaHVua1NpemUpO3N0cm0ubmV4dF9vdXQ9MDtzdHJtLmF2YWlsX291dD1jaHVua1NpemV9c3RhdHVzPXpsaWJfaW5mbGF0ZS5pbmZsYXRlKHN0cm0sYy5aX05PX0ZMVVNIKTtpZihzdGF0dXMhPT1jLlpfU1RSRUFNX0VORCYmc3RhdHVzIT09Yy5aX09LKXt0aGlzLm9uRW5kKHN0YXR1cyk7dGhpcy5lbmRlZD10cnVlO3JldHVybiBmYWxzZX1pZihzdHJtLm5leHRfb3V0KWlmKHN0cm0uYXZhaWxfb3V0PT09CjB8fHN0YXR1cz09PWMuWl9TVFJFQU1fRU5EfHxzdHJtLmF2YWlsX2luPT09MCYmX21vZGU9PT1jLlpfRklOSVNIKWlmKHRoaXMub3B0aW9ucy50bz09PSJzdHJpbmciKXtuZXh0X291dF91dGY4PXN0cmluZ3MudXRmOGJvcmRlcihzdHJtLm91dHB1dCxzdHJtLm5leHRfb3V0KTt0YWlsPXN0cm0ubmV4dF9vdXQtbmV4dF9vdXRfdXRmODt1dGY4c3RyPXN0cmluZ3MuYnVmMnN0cmluZyhzdHJtLm91dHB1dCxuZXh0X291dF91dGY4KTtzdHJtLm5leHRfb3V0PXRhaWw7c3RybS5hdmFpbF9vdXQ9Y2h1bmtTaXplLXRhaWw7aWYodGFpbCl1dGlscy5hcnJheVNldChzdHJtLm91dHB1dCxzdHJtLm91dHB1dCxuZXh0X291dF91dGY4LHRhaWwsMCk7dGhpcy5vbkRhdGEodXRmOHN0cil9ZWxzZSB0aGlzLm9uRGF0YSh1dGlscy5zaHJpbmtCdWYoc3RybS5vdXRwdXQsc3RybS5uZXh0X291dCkpfXdoaWxlKHN0cm0uYXZhaWxfaW4+MCYmc3RhdHVzIT09Yy5aX1NUUkVBTV9FTkQpO2lmKHN0YXR1cz09PQpjLlpfU1RSRUFNX0VORClfbW9kZT1jLlpfRklOSVNIO2lmKF9tb2RlPT09Yy5aX0ZJTklTSCl7c3RhdHVzPXpsaWJfaW5mbGF0ZS5pbmZsYXRlRW5kKHRoaXMuc3RybSk7dGhpcy5vbkVuZChzdGF0dXMpO3RoaXMuZW5kZWQ9dHJ1ZTtyZXR1cm4gc3RhdHVzPT09Yy5aX09LfXJldHVybiB0cnVlfTtJbmZsYXRlLnByb3RvdHlwZS5vbkRhdGE9ZnVuY3Rpb24oY2h1bmspe3RoaXMuY2h1bmtzLnB1c2goY2h1bmspfTtJbmZsYXRlLnByb3RvdHlwZS5vbkVuZD1mdW5jdGlvbihzdGF0dXMpe2lmKHN0YXR1cz09PWMuWl9PSylpZih0aGlzLm9wdGlvbnMudG89PT0ic3RyaW5nIil0aGlzLnJlc3VsdD10aGlzLmNodW5rcy5qb2luKCIiKTtlbHNlIHRoaXMucmVzdWx0PXV0aWxzLmZsYXR0ZW5DaHVua3ModGhpcy5jaHVua3MpO3RoaXMuY2h1bmtzPVtdO3RoaXMuZXJyPXN0YXR1czt0aGlzLm1zZz10aGlzLnN0cm0ubXNnfTtmdW5jdGlvbiBpbmZsYXRlKGlucHV0LG9wdGlvbnMpe3ZhciBpbmZsYXRvcj0KbmV3IEluZmxhdGUob3B0aW9ucyk7aW5mbGF0b3IucHVzaChpbnB1dCx0cnVlKTtpZihpbmZsYXRvci5lcnIpdGhyb3cgaW5mbGF0b3IubXNnO3JldHVybiBpbmZsYXRvci5yZXN1bHR9ZnVuY3Rpb24gaW5mbGF0ZVJhdyhpbnB1dCxvcHRpb25zKXtvcHRpb25zPW9wdGlvbnN8fHt9O29wdGlvbnMucmF3PXRydWU7cmV0dXJuIGluZmxhdGUoaW5wdXQsb3B0aW9ucyl9ZXhwb3J0cy5JbmZsYXRlPUluZmxhdGU7ZXhwb3J0cy5pbmZsYXRlPWluZmxhdGU7ZXhwb3J0cy5pbmZsYXRlUmF3PWluZmxhdGVSYXc7ZXhwb3J0cy51bmd6aXA9aW5mbGF0ZX0seyIuL3V0aWxzL2NvbW1vbiI6MjcsIi4vdXRpbHMvc3RyaW5ncyI6MjgsIi4vemxpYi9jb25zdGFudHMiOjMwLCIuL3psaWIvZ3poZWFkZXIiOjMzLCIuL3psaWIvaW5mbGF0ZS5qcyI6MzUsIi4vemxpYi9tZXNzYWdlcyI6MzcsIi4vemxpYi96c3RyZWFtIjozOX1dLDI3OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXt2YXIgVFlQRURfT0s9CnR5cGVvZiBVaW50OEFycmF5IT09InVuZGVmaW5lZCImJnR5cGVvZiBVaW50MTZBcnJheSE9PSJ1bmRlZmluZWQiJiZ0eXBlb2YgSW50MzJBcnJheSE9PSJ1bmRlZmluZWQiO2V4cG9ydHMuYXNzaWduPWZ1bmN0aW9uKG9iail7dmFyIHNvdXJjZXM9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpO3doaWxlKHNvdXJjZXMubGVuZ3RoKXt2YXIgc291cmNlPXNvdXJjZXMuc2hpZnQoKTtpZighc291cmNlKWNvbnRpbnVlO2lmKHR5cGVvZiBzb3VyY2UhPT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKHNvdXJjZSsibXVzdCBiZSBub24tb2JqZWN0Iik7Zm9yKHZhciBwIGluIHNvdXJjZSlpZihzb3VyY2UuaGFzT3duUHJvcGVydHkocCkpb2JqW3BdPXNvdXJjZVtwXX1yZXR1cm4gb2JqfTtleHBvcnRzLnNocmlua0J1Zj1mdW5jdGlvbihidWYsc2l6ZSl7aWYoYnVmLmxlbmd0aD09PXNpemUpcmV0dXJuIGJ1ZjtpZihidWYuc3ViYXJyYXkpcmV0dXJuIGJ1Zi5zdWJhcnJheSgwLApzaXplKTtidWYubGVuZ3RoPXNpemU7cmV0dXJuIGJ1Zn07dmFyIGZuVHlwZWQ9e2FycmF5U2V0OmZ1bmN0aW9uKGRlc3Qsc3JjLHNyY19vZmZzLGxlbixkZXN0X29mZnMpe2lmKHNyYy5zdWJhcnJheSYmZGVzdC5zdWJhcnJheSl7ZGVzdC5zZXQoc3JjLnN1YmFycmF5KHNyY19vZmZzLHNyY19vZmZzK2xlbiksZGVzdF9vZmZzKTtyZXR1cm59Zm9yKHZhciBpPTA7aTxsZW47aSsrKWRlc3RbZGVzdF9vZmZzK2ldPXNyY1tzcmNfb2ZmcytpXX0sZmxhdHRlbkNodW5rczpmdW5jdGlvbihjaHVua3Mpe3ZhciBpLGwsbGVuLHBvcyxjaHVuayxyZXN1bHQ7bGVuPTA7Zm9yKGk9MCxsPWNodW5rcy5sZW5ndGg7aTxsO2krKylsZW4rPWNodW5rc1tpXS5sZW5ndGg7cmVzdWx0PW5ldyBVaW50OEFycmF5KGxlbik7cG9zPTA7Zm9yKGk9MCxsPWNodW5rcy5sZW5ndGg7aTxsO2krKyl7Y2h1bms9Y2h1bmtzW2ldO3Jlc3VsdC5zZXQoY2h1bmsscG9zKTtwb3MrPWNodW5rLmxlbmd0aH1yZXR1cm4gcmVzdWx0fX07CnZhciBmblVudHlwZWQ9e2FycmF5U2V0OmZ1bmN0aW9uKGRlc3Qsc3JjLHNyY19vZmZzLGxlbixkZXN0X29mZnMpe2Zvcih2YXIgaT0wO2k8bGVuO2krKylkZXN0W2Rlc3Rfb2ZmcytpXT1zcmNbc3JjX29mZnMraV19LGZsYXR0ZW5DaHVua3M6ZnVuY3Rpb24oY2h1bmtzKXtyZXR1cm5bXS5jb25jYXQuYXBwbHkoW10sY2h1bmtzKX19O2V4cG9ydHMuc2V0VHlwZWQ9ZnVuY3Rpb24ob24pe2lmKG9uKXtleHBvcnRzLkJ1Zjg9VWludDhBcnJheTtleHBvcnRzLkJ1ZjE2PVVpbnQxNkFycmF5O2V4cG9ydHMuQnVmMzI9SW50MzJBcnJheTtleHBvcnRzLmFzc2lnbihleHBvcnRzLGZuVHlwZWQpfWVsc2V7ZXhwb3J0cy5CdWY4PUFycmF5O2V4cG9ydHMuQnVmMTY9QXJyYXk7ZXhwb3J0cy5CdWYzMj1BcnJheTtleHBvcnRzLmFzc2lnbihleHBvcnRzLGZuVW50eXBlZCl9fTtleHBvcnRzLnNldFR5cGVkKFRZUEVEX09LKX0se31dLDI4OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXt2YXIgdXRpbHM9Cl9kZXJlcV8oIi4vY29tbW9uIik7dmFyIFNUUl9BUFBMWV9PSz10cnVlO3ZhciBTVFJfQVBQTFlfVUlBX09LPXRydWU7dHJ5e1N0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxbMF0pfWNhdGNoKF9fKXtTVFJfQVBQTFlfT0s9ZmFsc2V9dHJ5e1N0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxuZXcgVWludDhBcnJheSgxKSl9Y2F0Y2goX18pe1NUUl9BUFBMWV9VSUFfT0s9ZmFsc2V9dmFyIF91dGY4bGVuPW5ldyB1dGlscy5CdWY4KDI1Nik7Zm9yKHZhciBpPTA7aTwyNTY7aSsrKV91dGY4bGVuW2ldPWk+PTI1Mj82Omk+PTI0OD81Omk+PTI0MD80Omk+PTIyND8zOmk+PTE5Mj8yOjE7X3V0ZjhsZW5bMjU0XT1fdXRmOGxlblsyNTRdPTE7ZXhwb3J0cy5zdHJpbmcyYnVmPWZ1bmN0aW9uKHN0cil7dmFyIGJ1ZixjLGMyLG1fcG9zLGksc3RyX2xlbj1zdHIubGVuZ3RoLGJ1Zl9sZW49MDtmb3IobV9wb3M9MDttX3BvczxzdHJfbGVuO21fcG9zKyspe2M9c3RyLmNoYXJDb2RlQXQobV9wb3MpOwppZigoYyY2NDUxMik9PT01NTI5NiYmbV9wb3MrMTxzdHJfbGVuKXtjMj1zdHIuY2hhckNvZGVBdChtX3BvcysxKTtpZigoYzImNjQ1MTIpPT09NTYzMjApe2M9NjU1MzYrKGMtNTUyOTY8PDEwKSsoYzItNTYzMjApO21fcG9zKyt9fWJ1Zl9sZW4rPWM8MTI4PzE6YzwyMDQ4PzI6Yzw2NTUzNj8zOjR9YnVmPW5ldyB1dGlscy5CdWY4KGJ1Zl9sZW4pO2ZvcihpPTAsbV9wb3M9MDtpPGJ1Zl9sZW47bV9wb3MrKyl7Yz1zdHIuY2hhckNvZGVBdChtX3Bvcyk7aWYoKGMmNjQ1MTIpPT09NTUyOTYmJm1fcG9zKzE8c3RyX2xlbil7YzI9c3RyLmNoYXJDb2RlQXQobV9wb3MrMSk7aWYoKGMyJjY0NTEyKT09PTU2MzIwKXtjPTY1NTM2KyhjLTU1Mjk2PDwxMCkrKGMyLTU2MzIwKTttX3BvcysrfX1pZihjPDEyOClidWZbaSsrXT1jO2Vsc2UgaWYoYzwyMDQ4KXtidWZbaSsrXT0xOTJ8Yz4+PjY7YnVmW2krK109MTI4fGMmNjN9ZWxzZSBpZihjPDY1NTM2KXtidWZbaSsrXT0yMjR8Yz4+PjEyO2J1ZltpKytdPQoxMjh8Yz4+PjYmNjM7YnVmW2krK109MTI4fGMmNjN9ZWxzZXtidWZbaSsrXT0yNDB8Yz4+PjE4O2J1ZltpKytdPTEyOHxjPj4+MTImNjM7YnVmW2krK109MTI4fGM+Pj42JjYzO2J1ZltpKytdPTEyOHxjJjYzfX1yZXR1cm4gYnVmfTtmdW5jdGlvbiBidWYyYmluc3RyaW5nKGJ1ZixsZW4pe2lmKGxlbjw2NTUzNylpZihidWYuc3ViYXJyYXkmJlNUUl9BUFBMWV9VSUFfT0t8fCFidWYuc3ViYXJyYXkmJlNUUl9BUFBMWV9PSylyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLHV0aWxzLnNocmlua0J1ZihidWYsbGVuKSk7dmFyIHJlc3VsdD0iIjtmb3IodmFyIGk9MDtpPGxlbjtpKyspcmVzdWx0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKGJ1ZltpXSk7cmV0dXJuIHJlc3VsdH1leHBvcnRzLmJ1ZjJiaW5zdHJpbmc9ZnVuY3Rpb24oYnVmKXtyZXR1cm4gYnVmMmJpbnN0cmluZyhidWYsYnVmLmxlbmd0aCl9O2V4cG9ydHMuYmluc3RyaW5nMmJ1Zj1mdW5jdGlvbihzdHIpe3ZhciBidWY9Cm5ldyB1dGlscy5CdWY4KHN0ci5sZW5ndGgpO2Zvcih2YXIgaT0wLGxlbj1idWYubGVuZ3RoO2k8bGVuO2krKylidWZbaV09c3RyLmNoYXJDb2RlQXQoaSk7cmV0dXJuIGJ1Zn07ZXhwb3J0cy5idWYyc3RyaW5nPWZ1bmN0aW9uKGJ1ZixtYXgpe3ZhciBpLG91dCxjLGNfbGVuO3ZhciBsZW49bWF4fHxidWYubGVuZ3RoO3ZhciB1dGYxNmJ1Zj1uZXcgQXJyYXkobGVuKjIpO2ZvcihvdXQ9MCxpPTA7aTxsZW47KXtjPWJ1ZltpKytdO2lmKGM8MTI4KXt1dGYxNmJ1ZltvdXQrK109Yztjb250aW51ZX1jX2xlbj1fdXRmOGxlbltjXTtpZihjX2xlbj40KXt1dGYxNmJ1ZltvdXQrK109NjU1MzM7aSs9Y19sZW4tMTtjb250aW51ZX1jJj1jX2xlbj09PTI/MzE6Y19sZW49PT0zPzE1Ojc7d2hpbGUoY19sZW4+MSYmaTxsZW4pe2M9Yzw8NnxidWZbaSsrXSY2MztjX2xlbi0tfWlmKGNfbGVuPjEpe3V0ZjE2YnVmW291dCsrXT02NTUzMztjb250aW51ZX1pZihjPDY1NTM2KXV0ZjE2YnVmW291dCsrXT0KYztlbHNle2MtPTY1NTM2O3V0ZjE2YnVmW291dCsrXT01NTI5NnxjPj4xMCYxMDIzO3V0ZjE2YnVmW291dCsrXT01NjMyMHxjJjEwMjN9fXJldHVybiBidWYyYmluc3RyaW5nKHV0ZjE2YnVmLG91dCl9O2V4cG9ydHMudXRmOGJvcmRlcj1mdW5jdGlvbihidWYsbWF4KXt2YXIgcG9zO21heD1tYXh8fGJ1Zi5sZW5ndGg7aWYobWF4PmJ1Zi5sZW5ndGgpbWF4PWJ1Zi5sZW5ndGg7cG9zPW1heC0xO3doaWxlKHBvcz49MCYmKGJ1Zltwb3NdJjE5Mik9PT0xMjgpcG9zLS07aWYocG9zPDApcmV0dXJuIG1heDtpZihwb3M9PT0wKXJldHVybiBtYXg7cmV0dXJuIHBvcytfdXRmOGxlbltidWZbcG9zXV0+bWF4P3BvczptYXh9fSx7Ii4vY29tbW9uIjoyN31dLDI5OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtmdW5jdGlvbiBhZGxlcjMyKGFkbGVyLGJ1ZixsZW4scG9zKXt2YXIgczE9YWRsZXImNjU1MzV8MCxzMj1hZGxlcj4+PjE2JjY1NTM1fDAsbj0wO3doaWxlKGxlbiE9PTApe249Cmxlbj4yRTM/MkUzOmxlbjtsZW4tPW47ZG97czE9czErYnVmW3BvcysrXXwwO3MyPXMyK3MxfDB9d2hpbGUoLS1uKTtzMSU9NjU1MjE7czIlPTY1NTIxfXJldHVybiBzMXxzMjw8MTZ8MH1tb2R1bGUuZXhwb3J0cz1hZGxlcjMyfSx7fV0sMzA6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe21vZHVsZS5leHBvcnRzPXtaX05PX0ZMVVNIOjAsWl9QQVJUSUFMX0ZMVVNIOjEsWl9TWU5DX0ZMVVNIOjIsWl9GVUxMX0ZMVVNIOjMsWl9GSU5JU0g6NCxaX0JMT0NLOjUsWl9UUkVFUzo2LFpfT0s6MCxaX1NUUkVBTV9FTkQ6MSxaX05FRURfRElDVDoyLFpfRVJSTk86LTEsWl9TVFJFQU1fRVJST1I6LTIsWl9EQVRBX0VSUk9SOi0zLFpfQlVGX0VSUk9SOi01LFpfTk9fQ09NUFJFU1NJT046MCxaX0JFU1RfU1BFRUQ6MSxaX0JFU1RfQ09NUFJFU1NJT046OSxaX0RFRkFVTFRfQ09NUFJFU1NJT046LTEsWl9GSUxURVJFRDoxLFpfSFVGRk1BTl9PTkxZOjIsWl9STEU6MyxaX0ZJWEVEOjQsClpfREVGQVVMVF9TVFJBVEVHWTowLFpfQklOQVJZOjAsWl9URVhUOjEsWl9VTktOT1dOOjIsWl9ERUZMQVRFRDo4fX0se31dLDMxOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtmdW5jdGlvbiBtYWtlVGFibGUoKXt2YXIgYyx0YWJsZT1bXTtmb3IodmFyIG49MDtuPDI1NjtuKyspe2M9bjtmb3IodmFyIGs9MDtrPDg7aysrKWM9YyYxPzM5ODgyOTIzODReYz4+PjE6Yz4+PjE7dGFibGVbbl09Y31yZXR1cm4gdGFibGV9dmFyIGNyY1RhYmxlPW1ha2VUYWJsZSgpO2Z1bmN0aW9uIGNyYzMyKGNyYyxidWYsbGVuLHBvcyl7dmFyIHQ9Y3JjVGFibGUsZW5kPXBvcytsZW47Y3JjPWNyY14tMTtmb3IodmFyIGk9cG9zO2k8ZW5kO2krKyljcmM9Y3JjPj4+OF50WyhjcmNeYnVmW2ldKSYyNTVdO3JldHVybiBjcmNeLTF9bW9kdWxlLmV4cG9ydHM9Y3JjMzJ9LHt9XSwzMjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7dmFyIHV0aWxzPV9kZXJlcV8oIi4uL3V0aWxzL2NvbW1vbiIpOwp2YXIgdHJlZXM9X2RlcmVxXygiLi90cmVlcyIpO3ZhciBhZGxlcjMyPV9kZXJlcV8oIi4vYWRsZXIzMiIpO3ZhciBjcmMzMj1fZGVyZXFfKCIuL2NyYzMyIik7dmFyIG1zZz1fZGVyZXFfKCIuL21lc3NhZ2VzIik7dmFyIFpfTk9fRkxVU0g9MDt2YXIgWl9QQVJUSUFMX0ZMVVNIPTE7dmFyIFpfRlVMTF9GTFVTSD0zO3ZhciBaX0ZJTklTSD00O3ZhciBaX0JMT0NLPTU7dmFyIFpfT0s9MDt2YXIgWl9TVFJFQU1fRU5EPTE7dmFyIFpfU1RSRUFNX0VSUk9SPS0yO3ZhciBaX0RBVEFfRVJST1I9LTM7dmFyIFpfQlVGX0VSUk9SPS01O3ZhciBaX0RFRkFVTFRfQ09NUFJFU1NJT049LTE7dmFyIFpfRklMVEVSRUQ9MTt2YXIgWl9IVUZGTUFOX09OTFk9Mjt2YXIgWl9STEU9Mzt2YXIgWl9GSVhFRD00O3ZhciBaX0RFRkFVTFRfU1RSQVRFR1k9MDt2YXIgWl9VTktOT1dOPTI7dmFyIFpfREVGTEFURUQ9ODt2YXIgTUFYX01FTV9MRVZFTD05O3ZhciBNQVhfV0JJVFM9MTU7dmFyIERFRl9NRU1fTEVWRUw9Cjg7dmFyIExFTkdUSF9DT0RFUz0yOTt2YXIgTElURVJBTFM9MjU2O3ZhciBMX0NPREVTPUxJVEVSQUxTKzErTEVOR1RIX0NPREVTO3ZhciBEX0NPREVTPTMwO3ZhciBCTF9DT0RFUz0xOTt2YXIgSEVBUF9TSVpFPTIqTF9DT0RFUysxO3ZhciBNQVhfQklUUz0xNTt2YXIgTUlOX01BVENIPTM7dmFyIE1BWF9NQVRDSD0yNTg7dmFyIE1JTl9MT09LQUhFQUQ9TUFYX01BVENIK01JTl9NQVRDSCsxO3ZhciBQUkVTRVRfRElDVD0zMjt2YXIgSU5JVF9TVEFURT00Mjt2YXIgRVhUUkFfU1RBVEU9Njk7dmFyIE5BTUVfU1RBVEU9NzM7dmFyIENPTU1FTlRfU1RBVEU9OTE7dmFyIEhDUkNfU1RBVEU9MTAzO3ZhciBCVVNZX1NUQVRFPTExMzt2YXIgRklOSVNIX1NUQVRFPTY2Njt2YXIgQlNfTkVFRF9NT1JFPTE7dmFyIEJTX0JMT0NLX0RPTkU9Mjt2YXIgQlNfRklOSVNIX1NUQVJURUQ9Mzt2YXIgQlNfRklOSVNIX0RPTkU9NDt2YXIgT1NfQ09ERT0zO2Z1bmN0aW9uIGVycihzdHJtLGVycm9yQ29kZSl7c3RybS5tc2c9Cm1zZ1tlcnJvckNvZGVdO3JldHVybiBlcnJvckNvZGV9ZnVuY3Rpb24gcmFuayhmKXtyZXR1cm4oZjw8MSktKGY+ND85OjApfWZ1bmN0aW9uIHplcm8oYnVmKXt2YXIgbGVuPWJ1Zi5sZW5ndGg7d2hpbGUoLS1sZW4+PTApYnVmW2xlbl09MH1mdW5jdGlvbiBmbHVzaF9wZW5kaW5nKHN0cm0pe3ZhciBzPXN0cm0uc3RhdGU7dmFyIGxlbj1zLnBlbmRpbmc7aWYobGVuPnN0cm0uYXZhaWxfb3V0KWxlbj1zdHJtLmF2YWlsX291dDtpZihsZW49PT0wKXJldHVybjt1dGlscy5hcnJheVNldChzdHJtLm91dHB1dCxzLnBlbmRpbmdfYnVmLHMucGVuZGluZ19vdXQsbGVuLHN0cm0ubmV4dF9vdXQpO3N0cm0ubmV4dF9vdXQrPWxlbjtzLnBlbmRpbmdfb3V0Kz1sZW47c3RybS50b3RhbF9vdXQrPWxlbjtzdHJtLmF2YWlsX291dC09bGVuO3MucGVuZGluZy09bGVuO2lmKHMucGVuZGluZz09PTApcy5wZW5kaW5nX291dD0wfWZ1bmN0aW9uIGZsdXNoX2Jsb2NrX29ubHkocyxsYXN0KXt0cmVlcy5fdHJfZmx1c2hfYmxvY2socywKcy5ibG9ja19zdGFydD49MD9zLmJsb2NrX3N0YXJ0Oi0xLHMuc3Ryc3RhcnQtcy5ibG9ja19zdGFydCxsYXN0KTtzLmJsb2NrX3N0YXJ0PXMuc3Ryc3RhcnQ7Zmx1c2hfcGVuZGluZyhzLnN0cm0pfWZ1bmN0aW9uIHB1dF9ieXRlKHMsYil7cy5wZW5kaW5nX2J1ZltzLnBlbmRpbmcrK109Yn1mdW5jdGlvbiBwdXRTaG9ydE1TQihzLGIpe3MucGVuZGluZ19idWZbcy5wZW5kaW5nKytdPWI+Pj44JjI1NTtzLnBlbmRpbmdfYnVmW3MucGVuZGluZysrXT1iJjI1NX1mdW5jdGlvbiByZWFkX2J1ZihzdHJtLGJ1ZixzdGFydCxzaXplKXt2YXIgbGVuPXN0cm0uYXZhaWxfaW47aWYobGVuPnNpemUpbGVuPXNpemU7aWYobGVuPT09MClyZXR1cm4gMDtzdHJtLmF2YWlsX2luLT1sZW47dXRpbHMuYXJyYXlTZXQoYnVmLHN0cm0uaW5wdXQsc3RybS5uZXh0X2luLGxlbixzdGFydCk7aWYoc3RybS5zdGF0ZS53cmFwPT09MSlzdHJtLmFkbGVyPWFkbGVyMzIoc3RybS5hZGxlcixidWYsbGVuLHN0YXJ0KTsKZWxzZSBpZihzdHJtLnN0YXRlLndyYXA9PT0yKXN0cm0uYWRsZXI9Y3JjMzIoc3RybS5hZGxlcixidWYsbGVuLHN0YXJ0KTtzdHJtLm5leHRfaW4rPWxlbjtzdHJtLnRvdGFsX2luKz1sZW47cmV0dXJuIGxlbn1mdW5jdGlvbiBsb25nZXN0X21hdGNoKHMsY3VyX21hdGNoKXt2YXIgY2hhaW5fbGVuZ3RoPXMubWF4X2NoYWluX2xlbmd0aDt2YXIgc2Nhbj1zLnN0cnN0YXJ0O3ZhciBtYXRjaDt2YXIgbGVuO3ZhciBiZXN0X2xlbj1zLnByZXZfbGVuZ3RoO3ZhciBuaWNlX21hdGNoPXMubmljZV9tYXRjaDt2YXIgbGltaXQ9cy5zdHJzdGFydD5zLndfc2l6ZS1NSU5fTE9PS0FIRUFEP3Muc3Ryc3RhcnQtKHMud19zaXplLU1JTl9MT09LQUhFQUQpOjA7dmFyIF93aW49cy53aW5kb3c7dmFyIHdtYXNrPXMud19tYXNrO3ZhciBwcmV2PXMucHJldjt2YXIgc3RyZW5kPXMuc3Ryc3RhcnQrTUFYX01BVENIO3ZhciBzY2FuX2VuZDE9X3dpbltzY2FuK2Jlc3RfbGVuLTFdO3ZhciBzY2FuX2VuZD1fd2luW3NjYW4rCmJlc3RfbGVuXTtpZihzLnByZXZfbGVuZ3RoPj1zLmdvb2RfbWF0Y2gpY2hhaW5fbGVuZ3RoPj49MjtpZihuaWNlX21hdGNoPnMubG9va2FoZWFkKW5pY2VfbWF0Y2g9cy5sb29rYWhlYWQ7ZG97bWF0Y2g9Y3VyX21hdGNoO2lmKF93aW5bbWF0Y2grYmVzdF9sZW5dIT09c2Nhbl9lbmR8fF93aW5bbWF0Y2grYmVzdF9sZW4tMV0hPT1zY2FuX2VuZDF8fF93aW5bbWF0Y2hdIT09X3dpbltzY2FuXXx8X3dpblsrK21hdGNoXSE9PV93aW5bc2NhbisxXSljb250aW51ZTtzY2FuKz0yO21hdGNoKys7ZG87d2hpbGUoX3dpblsrK3NjYW5dPT09X3dpblsrK21hdGNoXSYmX3dpblsrK3NjYW5dPT09X3dpblsrK21hdGNoXSYmX3dpblsrK3NjYW5dPT09X3dpblsrK21hdGNoXSYmX3dpblsrK3NjYW5dPT09X3dpblsrK21hdGNoXSYmX3dpblsrK3NjYW5dPT09X3dpblsrK21hdGNoXSYmX3dpblsrK3NjYW5dPT09X3dpblsrK21hdGNoXSYmX3dpblsrK3NjYW5dPT09X3dpblsrK21hdGNoXSYmX3dpblsrK3NjYW5dPT09Cl93aW5bKyttYXRjaF0mJnNjYW48c3RyZW5kKTtsZW49TUFYX01BVENILShzdHJlbmQtc2Nhbik7c2Nhbj1zdHJlbmQtTUFYX01BVENIO2lmKGxlbj5iZXN0X2xlbil7cy5tYXRjaF9zdGFydD1jdXJfbWF0Y2g7YmVzdF9sZW49bGVuO2lmKGxlbj49bmljZV9tYXRjaClicmVhaztzY2FuX2VuZDE9X3dpbltzY2FuK2Jlc3RfbGVuLTFdO3NjYW5fZW5kPV93aW5bc2NhbitiZXN0X2xlbl19fXdoaWxlKChjdXJfbWF0Y2g9cHJldltjdXJfbWF0Y2gmd21hc2tdKT5saW1pdCYmLS1jaGFpbl9sZW5ndGghPT0wKTtpZihiZXN0X2xlbjw9cy5sb29rYWhlYWQpcmV0dXJuIGJlc3RfbGVuO3JldHVybiBzLmxvb2thaGVhZH1mdW5jdGlvbiBmaWxsX3dpbmRvdyhzKXt2YXIgX3dfc2l6ZT1zLndfc2l6ZTt2YXIgcCxuLG0sbW9yZSxzdHI7ZG97bW9yZT1zLndpbmRvd19zaXplLXMubG9va2FoZWFkLXMuc3Ryc3RhcnQ7aWYocy5zdHJzdGFydD49X3dfc2l6ZSsoX3dfc2l6ZS1NSU5fTE9PS0FIRUFEKSl7dXRpbHMuYXJyYXlTZXQocy53aW5kb3csCnMud2luZG93LF93X3NpemUsX3dfc2l6ZSwwKTtzLm1hdGNoX3N0YXJ0LT1fd19zaXplO3Muc3Ryc3RhcnQtPV93X3NpemU7cy5ibG9ja19zdGFydC09X3dfc2l6ZTtuPXMuaGFzaF9zaXplO3A9bjtkb3ttPXMuaGVhZFstLXBdO3MuaGVhZFtwXT1tPj1fd19zaXplP20tX3dfc2l6ZTowfXdoaWxlKC0tbik7bj1fd19zaXplO3A9bjtkb3ttPXMucHJldlstLXBdO3MucHJldltwXT1tPj1fd19zaXplP20tX3dfc2l6ZTowfXdoaWxlKC0tbik7bW9yZSs9X3dfc2l6ZX1pZihzLnN0cm0uYXZhaWxfaW49PT0wKWJyZWFrO249cmVhZF9idWYocy5zdHJtLHMud2luZG93LHMuc3Ryc3RhcnQrcy5sb29rYWhlYWQsbW9yZSk7cy5sb29rYWhlYWQrPW47aWYocy5sb29rYWhlYWQrcy5pbnNlcnQ+PU1JTl9NQVRDSCl7c3RyPXMuc3Ryc3RhcnQtcy5pbnNlcnQ7cy5pbnNfaD1zLndpbmRvd1tzdHJdO3MuaW5zX2g9KHMuaW5zX2g8PHMuaGFzaF9zaGlmdF5zLndpbmRvd1tzdHIrMV0pJnMuaGFzaF9tYXNrOwp3aGlsZShzLmluc2VydCl7cy5pbnNfaD0ocy5pbnNfaDw8cy5oYXNoX3NoaWZ0XnMud2luZG93W3N0citNSU5fTUFUQ0gtMV0pJnMuaGFzaF9tYXNrO3MucHJldltzdHImcy53X21hc2tdPXMuaGVhZFtzLmluc19oXTtzLmhlYWRbcy5pbnNfaF09c3RyO3N0cisrO3MuaW5zZXJ0LS07aWYocy5sb29rYWhlYWQrcy5pbnNlcnQ8TUlOX01BVENIKWJyZWFrfX19d2hpbGUocy5sb29rYWhlYWQ8TUlOX0xPT0tBSEVBRCYmcy5zdHJtLmF2YWlsX2luIT09MCl9ZnVuY3Rpb24gZGVmbGF0ZV9zdG9yZWQocyxmbHVzaCl7dmFyIG1heF9ibG9ja19zaXplPTY1NTM1O2lmKG1heF9ibG9ja19zaXplPnMucGVuZGluZ19idWZfc2l6ZS01KW1heF9ibG9ja19zaXplPXMucGVuZGluZ19idWZfc2l6ZS01O2Zvcig7Oyl7aWYocy5sb29rYWhlYWQ8PTEpe2ZpbGxfd2luZG93KHMpO2lmKHMubG9va2FoZWFkPT09MCYmZmx1c2g9PT1aX05PX0ZMVVNIKXJldHVybiBCU19ORUVEX01PUkU7aWYocy5sb29rYWhlYWQ9PT0KMClicmVha31zLnN0cnN0YXJ0Kz1zLmxvb2thaGVhZDtzLmxvb2thaGVhZD0wO3ZhciBtYXhfc3RhcnQ9cy5ibG9ja19zdGFydCttYXhfYmxvY2tfc2l6ZTtpZihzLnN0cnN0YXJ0PT09MHx8cy5zdHJzdGFydD49bWF4X3N0YXJ0KXtzLmxvb2thaGVhZD1zLnN0cnN0YXJ0LW1heF9zdGFydDtzLnN0cnN0YXJ0PW1heF9zdGFydDtmbHVzaF9ibG9ja19vbmx5KHMsZmFsc2UpO2lmKHMuc3RybS5hdmFpbF9vdXQ9PT0wKXJldHVybiBCU19ORUVEX01PUkV9aWYocy5zdHJzdGFydC1zLmJsb2NrX3N0YXJ0Pj1zLndfc2l6ZS1NSU5fTE9PS0FIRUFEKXtmbHVzaF9ibG9ja19vbmx5KHMsZmFsc2UpO2lmKHMuc3RybS5hdmFpbF9vdXQ9PT0wKXJldHVybiBCU19ORUVEX01PUkV9fXMuaW5zZXJ0PTA7aWYoZmx1c2g9PT1aX0ZJTklTSCl7Zmx1c2hfYmxvY2tfb25seShzLHRydWUpO2lmKHMuc3RybS5hdmFpbF9vdXQ9PT0wKXJldHVybiBCU19GSU5JU0hfU1RBUlRFRDtyZXR1cm4gQlNfRklOSVNIX0RPTkV9aWYocy5zdHJzdGFydD4Kcy5ibG9ja19zdGFydCl7Zmx1c2hfYmxvY2tfb25seShzLGZhbHNlKTtpZihzLnN0cm0uYXZhaWxfb3V0PT09MClyZXR1cm4gQlNfTkVFRF9NT1JFfXJldHVybiBCU19ORUVEX01PUkV9ZnVuY3Rpb24gZGVmbGF0ZV9mYXN0KHMsZmx1c2gpe3ZhciBoYXNoX2hlYWQ7dmFyIGJmbHVzaDtmb3IoOzspe2lmKHMubG9va2FoZWFkPE1JTl9MT09LQUhFQUQpe2ZpbGxfd2luZG93KHMpO2lmKHMubG9va2FoZWFkPE1JTl9MT09LQUhFQUQmJmZsdXNoPT09Wl9OT19GTFVTSClyZXR1cm4gQlNfTkVFRF9NT1JFO2lmKHMubG9va2FoZWFkPT09MClicmVha31oYXNoX2hlYWQ9MDtpZihzLmxvb2thaGVhZD49TUlOX01BVENIKXtzLmluc19oPShzLmluc19oPDxzLmhhc2hfc2hpZnRecy53aW5kb3dbcy5zdHJzdGFydCtNSU5fTUFUQ0gtMV0pJnMuaGFzaF9tYXNrO2hhc2hfaGVhZD1zLnByZXZbcy5zdHJzdGFydCZzLndfbWFza109cy5oZWFkW3MuaW5zX2hdO3MuaGVhZFtzLmluc19oXT1zLnN0cnN0YXJ0fWlmKGhhc2hfaGVhZCE9PQowJiZzLnN0cnN0YXJ0LWhhc2hfaGVhZDw9cy53X3NpemUtTUlOX0xPT0tBSEVBRClzLm1hdGNoX2xlbmd0aD1sb25nZXN0X21hdGNoKHMsaGFzaF9oZWFkKTtpZihzLm1hdGNoX2xlbmd0aD49TUlOX01BVENIKXtiZmx1c2g9dHJlZXMuX3RyX3RhbGx5KHMscy5zdHJzdGFydC1zLm1hdGNoX3N0YXJ0LHMubWF0Y2hfbGVuZ3RoLU1JTl9NQVRDSCk7cy5sb29rYWhlYWQtPXMubWF0Y2hfbGVuZ3RoO2lmKHMubWF0Y2hfbGVuZ3RoPD1zLm1heF9sYXp5X21hdGNoJiZzLmxvb2thaGVhZD49TUlOX01BVENIKXtzLm1hdGNoX2xlbmd0aC0tO2Rve3Muc3Ryc3RhcnQrKztzLmluc19oPShzLmluc19oPDxzLmhhc2hfc2hpZnRecy53aW5kb3dbcy5zdHJzdGFydCtNSU5fTUFUQ0gtMV0pJnMuaGFzaF9tYXNrO2hhc2hfaGVhZD1zLnByZXZbcy5zdHJzdGFydCZzLndfbWFza109cy5oZWFkW3MuaW5zX2hdO3MuaGVhZFtzLmluc19oXT1zLnN0cnN0YXJ0fXdoaWxlKC0tcy5tYXRjaF9sZW5ndGghPT0KMCk7cy5zdHJzdGFydCsrfWVsc2V7cy5zdHJzdGFydCs9cy5tYXRjaF9sZW5ndGg7cy5tYXRjaF9sZW5ndGg9MDtzLmluc19oPXMud2luZG93W3Muc3Ryc3RhcnRdO3MuaW5zX2g9KHMuaW5zX2g8PHMuaGFzaF9zaGlmdF5zLndpbmRvd1tzLnN0cnN0YXJ0KzFdKSZzLmhhc2hfbWFza319ZWxzZXtiZmx1c2g9dHJlZXMuX3RyX3RhbGx5KHMsMCxzLndpbmRvd1tzLnN0cnN0YXJ0XSk7cy5sb29rYWhlYWQtLTtzLnN0cnN0YXJ0Kyt9aWYoYmZsdXNoKXtmbHVzaF9ibG9ja19vbmx5KHMsZmFsc2UpO2lmKHMuc3RybS5hdmFpbF9vdXQ9PT0wKXJldHVybiBCU19ORUVEX01PUkV9fXMuaW5zZXJ0PXMuc3Ryc3RhcnQ8TUlOX01BVENILTE/cy5zdHJzdGFydDpNSU5fTUFUQ0gtMTtpZihmbHVzaD09PVpfRklOSVNIKXtmbHVzaF9ibG9ja19vbmx5KHMsdHJ1ZSk7aWYocy5zdHJtLmF2YWlsX291dD09PTApcmV0dXJuIEJTX0ZJTklTSF9TVEFSVEVEO3JldHVybiBCU19GSU5JU0hfRE9ORX1pZihzLmxhc3RfbGl0KXtmbHVzaF9ibG9ja19vbmx5KHMsCmZhbHNlKTtpZihzLnN0cm0uYXZhaWxfb3V0PT09MClyZXR1cm4gQlNfTkVFRF9NT1JFfXJldHVybiBCU19CTE9DS19ET05FfWZ1bmN0aW9uIGRlZmxhdGVfc2xvdyhzLGZsdXNoKXt2YXIgaGFzaF9oZWFkO3ZhciBiZmx1c2g7dmFyIG1heF9pbnNlcnQ7Zm9yKDs7KXtpZihzLmxvb2thaGVhZDxNSU5fTE9PS0FIRUFEKXtmaWxsX3dpbmRvdyhzKTtpZihzLmxvb2thaGVhZDxNSU5fTE9PS0FIRUFEJiZmbHVzaD09PVpfTk9fRkxVU0gpcmV0dXJuIEJTX05FRURfTU9SRTtpZihzLmxvb2thaGVhZD09PTApYnJlYWt9aGFzaF9oZWFkPTA7aWYocy5sb29rYWhlYWQ+PU1JTl9NQVRDSCl7cy5pbnNfaD0ocy5pbnNfaDw8cy5oYXNoX3NoaWZ0XnMud2luZG93W3Muc3Ryc3RhcnQrTUlOX01BVENILTFdKSZzLmhhc2hfbWFzaztoYXNoX2hlYWQ9cy5wcmV2W3Muc3Ryc3RhcnQmcy53X21hc2tdPXMuaGVhZFtzLmluc19oXTtzLmhlYWRbcy5pbnNfaF09cy5zdHJzdGFydH1zLnByZXZfbGVuZ3RoPQpzLm1hdGNoX2xlbmd0aDtzLnByZXZfbWF0Y2g9cy5tYXRjaF9zdGFydDtzLm1hdGNoX2xlbmd0aD1NSU5fTUFUQ0gtMTtpZihoYXNoX2hlYWQhPT0wJiZzLnByZXZfbGVuZ3RoPHMubWF4X2xhenlfbWF0Y2gmJnMuc3Ryc3RhcnQtaGFzaF9oZWFkPD1zLndfc2l6ZS1NSU5fTE9PS0FIRUFEKXtzLm1hdGNoX2xlbmd0aD1sb25nZXN0X21hdGNoKHMsaGFzaF9oZWFkKTtpZihzLm1hdGNoX2xlbmd0aDw9NSYmKHMuc3RyYXRlZ3k9PT1aX0ZJTFRFUkVEfHxzLm1hdGNoX2xlbmd0aD09PU1JTl9NQVRDSCYmcy5zdHJzdGFydC1zLm1hdGNoX3N0YXJ0PjQwOTYpKXMubWF0Y2hfbGVuZ3RoPU1JTl9NQVRDSC0xfWlmKHMucHJldl9sZW5ndGg+PU1JTl9NQVRDSCYmcy5tYXRjaF9sZW5ndGg8PXMucHJldl9sZW5ndGgpe21heF9pbnNlcnQ9cy5zdHJzdGFydCtzLmxvb2thaGVhZC1NSU5fTUFUQ0g7YmZsdXNoPXRyZWVzLl90cl90YWxseShzLHMuc3Ryc3RhcnQtMS1zLnByZXZfbWF0Y2gscy5wcmV2X2xlbmd0aC0KTUlOX01BVENIKTtzLmxvb2thaGVhZC09cy5wcmV2X2xlbmd0aC0xO3MucHJldl9sZW5ndGgtPTI7ZG8gaWYoKytzLnN0cnN0YXJ0PD1tYXhfaW5zZXJ0KXtzLmluc19oPShzLmluc19oPDxzLmhhc2hfc2hpZnRecy53aW5kb3dbcy5zdHJzdGFydCtNSU5fTUFUQ0gtMV0pJnMuaGFzaF9tYXNrO2hhc2hfaGVhZD1zLnByZXZbcy5zdHJzdGFydCZzLndfbWFza109cy5oZWFkW3MuaW5zX2hdO3MuaGVhZFtzLmluc19oXT1zLnN0cnN0YXJ0fXdoaWxlKC0tcy5wcmV2X2xlbmd0aCE9PTApO3MubWF0Y2hfYXZhaWxhYmxlPTA7cy5tYXRjaF9sZW5ndGg9TUlOX01BVENILTE7cy5zdHJzdGFydCsrO2lmKGJmbHVzaCl7Zmx1c2hfYmxvY2tfb25seShzLGZhbHNlKTtpZihzLnN0cm0uYXZhaWxfb3V0PT09MClyZXR1cm4gQlNfTkVFRF9NT1JFfX1lbHNlIGlmKHMubWF0Y2hfYXZhaWxhYmxlKXtiZmx1c2g9dHJlZXMuX3RyX3RhbGx5KHMsMCxzLndpbmRvd1tzLnN0cnN0YXJ0LTFdKTtpZihiZmx1c2gpZmx1c2hfYmxvY2tfb25seShzLApmYWxzZSk7cy5zdHJzdGFydCsrO3MubG9va2FoZWFkLS07aWYocy5zdHJtLmF2YWlsX291dD09PTApcmV0dXJuIEJTX05FRURfTU9SRX1lbHNle3MubWF0Y2hfYXZhaWxhYmxlPTE7cy5zdHJzdGFydCsrO3MubG9va2FoZWFkLS19fWlmKHMubWF0Y2hfYXZhaWxhYmxlKXtiZmx1c2g9dHJlZXMuX3RyX3RhbGx5KHMsMCxzLndpbmRvd1tzLnN0cnN0YXJ0LTFdKTtzLm1hdGNoX2F2YWlsYWJsZT0wfXMuaW5zZXJ0PXMuc3Ryc3RhcnQ8TUlOX01BVENILTE/cy5zdHJzdGFydDpNSU5fTUFUQ0gtMTtpZihmbHVzaD09PVpfRklOSVNIKXtmbHVzaF9ibG9ja19vbmx5KHMsdHJ1ZSk7aWYocy5zdHJtLmF2YWlsX291dD09PTApcmV0dXJuIEJTX0ZJTklTSF9TVEFSVEVEO3JldHVybiBCU19GSU5JU0hfRE9ORX1pZihzLmxhc3RfbGl0KXtmbHVzaF9ibG9ja19vbmx5KHMsZmFsc2UpO2lmKHMuc3RybS5hdmFpbF9vdXQ9PT0wKXJldHVybiBCU19ORUVEX01PUkV9cmV0dXJuIEJTX0JMT0NLX0RPTkV9CmZ1bmN0aW9uIGRlZmxhdGVfcmxlKHMsZmx1c2gpe3ZhciBiZmx1c2g7dmFyIHByZXY7dmFyIHNjYW4sc3RyZW5kO3ZhciBfd2luPXMud2luZG93O2Zvcig7Oyl7aWYocy5sb29rYWhlYWQ8PU1BWF9NQVRDSCl7ZmlsbF93aW5kb3cocyk7aWYocy5sb29rYWhlYWQ8PU1BWF9NQVRDSCYmZmx1c2g9PT1aX05PX0ZMVVNIKXJldHVybiBCU19ORUVEX01PUkU7aWYocy5sb29rYWhlYWQ9PT0wKWJyZWFrfXMubWF0Y2hfbGVuZ3RoPTA7aWYocy5sb29rYWhlYWQ+PU1JTl9NQVRDSCYmcy5zdHJzdGFydD4wKXtzY2FuPXMuc3Ryc3RhcnQtMTtwcmV2PV93aW5bc2Nhbl07aWYocHJldj09PV93aW5bKytzY2FuXSYmcHJldj09PV93aW5bKytzY2FuXSYmcHJldj09PV93aW5bKytzY2FuXSl7c3RyZW5kPXMuc3Ryc3RhcnQrTUFYX01BVENIO2RvO3doaWxlKHByZXY9PT1fd2luWysrc2Nhbl0mJnByZXY9PT1fd2luWysrc2Nhbl0mJnByZXY9PT1fd2luWysrc2Nhbl0mJnByZXY9PT1fd2luWysrc2Nhbl0mJgpwcmV2PT09X3dpblsrK3NjYW5dJiZwcmV2PT09X3dpblsrK3NjYW5dJiZwcmV2PT09X3dpblsrK3NjYW5dJiZwcmV2PT09X3dpblsrK3NjYW5dJiZzY2FuPHN0cmVuZCk7cy5tYXRjaF9sZW5ndGg9TUFYX01BVENILShzdHJlbmQtc2Nhbik7aWYocy5tYXRjaF9sZW5ndGg+cy5sb29rYWhlYWQpcy5tYXRjaF9sZW5ndGg9cy5sb29rYWhlYWR9fWlmKHMubWF0Y2hfbGVuZ3RoPj1NSU5fTUFUQ0gpe2JmbHVzaD10cmVlcy5fdHJfdGFsbHkocywxLHMubWF0Y2hfbGVuZ3RoLU1JTl9NQVRDSCk7cy5sb29rYWhlYWQtPXMubWF0Y2hfbGVuZ3RoO3Muc3Ryc3RhcnQrPXMubWF0Y2hfbGVuZ3RoO3MubWF0Y2hfbGVuZ3RoPTB9ZWxzZXtiZmx1c2g9dHJlZXMuX3RyX3RhbGx5KHMsMCxzLndpbmRvd1tzLnN0cnN0YXJ0XSk7cy5sb29rYWhlYWQtLTtzLnN0cnN0YXJ0Kyt9aWYoYmZsdXNoKXtmbHVzaF9ibG9ja19vbmx5KHMsZmFsc2UpO2lmKHMuc3RybS5hdmFpbF9vdXQ9PT0wKXJldHVybiBCU19ORUVEX01PUkV9fXMuaW5zZXJ0PQowO2lmKGZsdXNoPT09Wl9GSU5JU0gpe2ZsdXNoX2Jsb2NrX29ubHkocyx0cnVlKTtpZihzLnN0cm0uYXZhaWxfb3V0PT09MClyZXR1cm4gQlNfRklOSVNIX1NUQVJURUQ7cmV0dXJuIEJTX0ZJTklTSF9ET05FfWlmKHMubGFzdF9saXQpe2ZsdXNoX2Jsb2NrX29ubHkocyxmYWxzZSk7aWYocy5zdHJtLmF2YWlsX291dD09PTApcmV0dXJuIEJTX05FRURfTU9SRX1yZXR1cm4gQlNfQkxPQ0tfRE9ORX1mdW5jdGlvbiBkZWZsYXRlX2h1ZmYocyxmbHVzaCl7dmFyIGJmbHVzaDtmb3IoOzspe2lmKHMubG9va2FoZWFkPT09MCl7ZmlsbF93aW5kb3cocyk7aWYocy5sb29rYWhlYWQ9PT0wKXtpZihmbHVzaD09PVpfTk9fRkxVU0gpcmV0dXJuIEJTX05FRURfTU9SRTticmVha319cy5tYXRjaF9sZW5ndGg9MDtiZmx1c2g9dHJlZXMuX3RyX3RhbGx5KHMsMCxzLndpbmRvd1tzLnN0cnN0YXJ0XSk7cy5sb29rYWhlYWQtLTtzLnN0cnN0YXJ0Kys7aWYoYmZsdXNoKXtmbHVzaF9ibG9ja19vbmx5KHMsCmZhbHNlKTtpZihzLnN0cm0uYXZhaWxfb3V0PT09MClyZXR1cm4gQlNfTkVFRF9NT1JFfX1zLmluc2VydD0wO2lmKGZsdXNoPT09Wl9GSU5JU0gpe2ZsdXNoX2Jsb2NrX29ubHkocyx0cnVlKTtpZihzLnN0cm0uYXZhaWxfb3V0PT09MClyZXR1cm4gQlNfRklOSVNIX1NUQVJURUQ7cmV0dXJuIEJTX0ZJTklTSF9ET05FfWlmKHMubGFzdF9saXQpe2ZsdXNoX2Jsb2NrX29ubHkocyxmYWxzZSk7aWYocy5zdHJtLmF2YWlsX291dD09PTApcmV0dXJuIEJTX05FRURfTU9SRX1yZXR1cm4gQlNfQkxPQ0tfRE9ORX12YXIgQ29uZmlnPWZ1bmN0aW9uKGdvb2RfbGVuZ3RoLG1heF9sYXp5LG5pY2VfbGVuZ3RoLG1heF9jaGFpbixmdW5jKXt0aGlzLmdvb2RfbGVuZ3RoPWdvb2RfbGVuZ3RoO3RoaXMubWF4X2xhenk9bWF4X2xhenk7dGhpcy5uaWNlX2xlbmd0aD1uaWNlX2xlbmd0aDt0aGlzLm1heF9jaGFpbj1tYXhfY2hhaW47dGhpcy5mdW5jPWZ1bmN9O3ZhciBjb25maWd1cmF0aW9uX3RhYmxlOwpjb25maWd1cmF0aW9uX3RhYmxlPVtuZXcgQ29uZmlnKDAsMCwwLDAsZGVmbGF0ZV9zdG9yZWQpLG5ldyBDb25maWcoNCw0LDgsNCxkZWZsYXRlX2Zhc3QpLG5ldyBDb25maWcoNCw1LDE2LDgsZGVmbGF0ZV9mYXN0KSxuZXcgQ29uZmlnKDQsNiwzMiwzMixkZWZsYXRlX2Zhc3QpLG5ldyBDb25maWcoNCw0LDE2LDE2LGRlZmxhdGVfc2xvdyksbmV3IENvbmZpZyg4LDE2LDMyLDMyLGRlZmxhdGVfc2xvdyksbmV3IENvbmZpZyg4LDE2LDEyOCwxMjgsZGVmbGF0ZV9zbG93KSxuZXcgQ29uZmlnKDgsMzIsMTI4LDI1NixkZWZsYXRlX3Nsb3cpLG5ldyBDb25maWcoMzIsMTI4LDI1OCwxMDI0LGRlZmxhdGVfc2xvdyksbmV3IENvbmZpZygzMiwyNTgsMjU4LDQwOTYsZGVmbGF0ZV9zbG93KV07ZnVuY3Rpb24gbG1faW5pdChzKXtzLndpbmRvd19zaXplPTIqcy53X3NpemU7emVybyhzLmhlYWQpO3MubWF4X2xhenlfbWF0Y2g9Y29uZmlndXJhdGlvbl90YWJsZVtzLmxldmVsXS5tYXhfbGF6eTsKcy5nb29kX21hdGNoPWNvbmZpZ3VyYXRpb25fdGFibGVbcy5sZXZlbF0uZ29vZF9sZW5ndGg7cy5uaWNlX21hdGNoPWNvbmZpZ3VyYXRpb25fdGFibGVbcy5sZXZlbF0ubmljZV9sZW5ndGg7cy5tYXhfY2hhaW5fbGVuZ3RoPWNvbmZpZ3VyYXRpb25fdGFibGVbcy5sZXZlbF0ubWF4X2NoYWluO3Muc3Ryc3RhcnQ9MDtzLmJsb2NrX3N0YXJ0PTA7cy5sb29rYWhlYWQ9MDtzLmluc2VydD0wO3MubWF0Y2hfbGVuZ3RoPXMucHJldl9sZW5ndGg9TUlOX01BVENILTE7cy5tYXRjaF9hdmFpbGFibGU9MDtzLmluc19oPTB9ZnVuY3Rpb24gRGVmbGF0ZVN0YXRlKCl7dGhpcy5zdHJtPW51bGw7dGhpcy5zdGF0dXM9MDt0aGlzLnBlbmRpbmdfYnVmPW51bGw7dGhpcy5wZW5kaW5nX2J1Zl9zaXplPTA7dGhpcy5wZW5kaW5nX291dD0wO3RoaXMucGVuZGluZz0wO3RoaXMud3JhcD0wO3RoaXMuZ3poZWFkPW51bGw7dGhpcy5nemluZGV4PTA7dGhpcy5tZXRob2Q9Wl9ERUZMQVRFRDt0aGlzLmxhc3RfZmx1c2g9Ci0xO3RoaXMud19zaXplPTA7dGhpcy53X2JpdHM9MDt0aGlzLndfbWFzaz0wO3RoaXMud2luZG93PW51bGw7dGhpcy53aW5kb3dfc2l6ZT0wO3RoaXMucHJldj1udWxsO3RoaXMuaGVhZD1udWxsO3RoaXMuaW5zX2g9MDt0aGlzLmhhc2hfc2l6ZT0wO3RoaXMuaGFzaF9iaXRzPTA7dGhpcy5oYXNoX21hc2s9MDt0aGlzLmhhc2hfc2hpZnQ9MDt0aGlzLmJsb2NrX3N0YXJ0PTA7dGhpcy5tYXRjaF9sZW5ndGg9MDt0aGlzLnByZXZfbWF0Y2g9MDt0aGlzLm1hdGNoX2F2YWlsYWJsZT0wO3RoaXMuc3Ryc3RhcnQ9MDt0aGlzLm1hdGNoX3N0YXJ0PTA7dGhpcy5sb29rYWhlYWQ9MDt0aGlzLnByZXZfbGVuZ3RoPTA7dGhpcy5tYXhfY2hhaW5fbGVuZ3RoPTA7dGhpcy5tYXhfbGF6eV9tYXRjaD0wO3RoaXMubGV2ZWw9MDt0aGlzLnN0cmF0ZWd5PTA7dGhpcy5nb29kX21hdGNoPTA7dGhpcy5uaWNlX21hdGNoPTA7dGhpcy5keW5fbHRyZWU9bmV3IHV0aWxzLkJ1ZjE2KEhFQVBfU0laRSoyKTt0aGlzLmR5bl9kdHJlZT0KbmV3IHV0aWxzLkJ1ZjE2KCgyKkRfQ09ERVMrMSkqMik7dGhpcy5ibF90cmVlPW5ldyB1dGlscy5CdWYxNigoMipCTF9DT0RFUysxKSoyKTt6ZXJvKHRoaXMuZHluX2x0cmVlKTt6ZXJvKHRoaXMuZHluX2R0cmVlKTt6ZXJvKHRoaXMuYmxfdHJlZSk7dGhpcy5sX2Rlc2M9bnVsbDt0aGlzLmRfZGVzYz1udWxsO3RoaXMuYmxfZGVzYz1udWxsO3RoaXMuYmxfY291bnQ9bmV3IHV0aWxzLkJ1ZjE2KE1BWF9CSVRTKzEpO3RoaXMuaGVhcD1uZXcgdXRpbHMuQnVmMTYoMipMX0NPREVTKzEpO3plcm8odGhpcy5oZWFwKTt0aGlzLmhlYXBfbGVuPTA7dGhpcy5oZWFwX21heD0wO3RoaXMuZGVwdGg9bmV3IHV0aWxzLkJ1ZjE2KDIqTF9DT0RFUysxKTt6ZXJvKHRoaXMuZGVwdGgpO3RoaXMubF9idWY9MDt0aGlzLmxpdF9idWZzaXplPTA7dGhpcy5sYXN0X2xpdD0wO3RoaXMuZF9idWY9MDt0aGlzLm9wdF9sZW49MDt0aGlzLnN0YXRpY19sZW49MDt0aGlzLm1hdGNoZXM9MDt0aGlzLmluc2VydD0wOwp0aGlzLmJpX2J1Zj0wO3RoaXMuYmlfdmFsaWQ9MH1mdW5jdGlvbiBkZWZsYXRlUmVzZXRLZWVwKHN0cm0pe3ZhciBzO2lmKCFzdHJtfHwhc3RybS5zdGF0ZSlyZXR1cm4gZXJyKHN0cm0sWl9TVFJFQU1fRVJST1IpO3N0cm0udG90YWxfaW49c3RybS50b3RhbF9vdXQ9MDtzdHJtLmRhdGFfdHlwZT1aX1VOS05PV047cz1zdHJtLnN0YXRlO3MucGVuZGluZz0wO3MucGVuZGluZ19vdXQ9MDtpZihzLndyYXA8MClzLndyYXA9LXMud3JhcDtzLnN0YXR1cz1zLndyYXA/SU5JVF9TVEFURTpCVVNZX1NUQVRFO3N0cm0uYWRsZXI9cy53cmFwPT09Mj8wOjE7cy5sYXN0X2ZsdXNoPVpfTk9fRkxVU0g7dHJlZXMuX3RyX2luaXQocyk7cmV0dXJuIFpfT0t9ZnVuY3Rpb24gZGVmbGF0ZVJlc2V0KHN0cm0pe3ZhciByZXQ9ZGVmbGF0ZVJlc2V0S2VlcChzdHJtKTtpZihyZXQ9PT1aX09LKWxtX2luaXQoc3RybS5zdGF0ZSk7cmV0dXJuIHJldH1mdW5jdGlvbiBkZWZsYXRlU2V0SGVhZGVyKHN0cm0saGVhZCl7aWYoIXN0cm18fAohc3RybS5zdGF0ZSlyZXR1cm4gWl9TVFJFQU1fRVJST1I7aWYoc3RybS5zdGF0ZS53cmFwIT09MilyZXR1cm4gWl9TVFJFQU1fRVJST1I7c3RybS5zdGF0ZS5nemhlYWQ9aGVhZDtyZXR1cm4gWl9PS31mdW5jdGlvbiBkZWZsYXRlSW5pdDIoc3RybSxsZXZlbCxtZXRob2Qsd2luZG93Qml0cyxtZW1MZXZlbCxzdHJhdGVneSl7aWYoIXN0cm0pcmV0dXJuIFpfU1RSRUFNX0VSUk9SO3ZhciB3cmFwPTE7aWYobGV2ZWw9PT1aX0RFRkFVTFRfQ09NUFJFU1NJT04pbGV2ZWw9NjtpZih3aW5kb3dCaXRzPDApe3dyYXA9MDt3aW5kb3dCaXRzPS13aW5kb3dCaXRzfWVsc2UgaWYod2luZG93Qml0cz4xNSl7d3JhcD0yO3dpbmRvd0JpdHMtPTE2fWlmKG1lbUxldmVsPDF8fG1lbUxldmVsPk1BWF9NRU1fTEVWRUx8fG1ldGhvZCE9PVpfREVGTEFURUR8fHdpbmRvd0JpdHM8OHx8d2luZG93Qml0cz4xNXx8bGV2ZWw8MHx8bGV2ZWw+OXx8c3RyYXRlZ3k8MHx8c3RyYXRlZ3k+Wl9GSVhFRClyZXR1cm4gZXJyKHN0cm0sClpfU1RSRUFNX0VSUk9SKTtpZih3aW5kb3dCaXRzPT09OCl3aW5kb3dCaXRzPTk7dmFyIHM9bmV3IERlZmxhdGVTdGF0ZTtzdHJtLnN0YXRlPXM7cy5zdHJtPXN0cm07cy53cmFwPXdyYXA7cy5nemhlYWQ9bnVsbDtzLndfYml0cz13aW5kb3dCaXRzO3Mud19zaXplPTE8PHMud19iaXRzO3Mud19tYXNrPXMud19zaXplLTE7cy5oYXNoX2JpdHM9bWVtTGV2ZWwrNztzLmhhc2hfc2l6ZT0xPDxzLmhhc2hfYml0cztzLmhhc2hfbWFzaz1zLmhhc2hfc2l6ZS0xO3MuaGFzaF9zaGlmdD1+figocy5oYXNoX2JpdHMrTUlOX01BVENILTEpL01JTl9NQVRDSCk7cy53aW5kb3c9bmV3IHV0aWxzLkJ1Zjgocy53X3NpemUqMik7cy5oZWFkPW5ldyB1dGlscy5CdWYxNihzLmhhc2hfc2l6ZSk7cy5wcmV2PW5ldyB1dGlscy5CdWYxNihzLndfc2l6ZSk7cy5saXRfYnVmc2l6ZT0xPDxtZW1MZXZlbCs2O3MucGVuZGluZ19idWZfc2l6ZT1zLmxpdF9idWZzaXplKjQ7cy5wZW5kaW5nX2J1Zj1uZXcgdXRpbHMuQnVmOChzLnBlbmRpbmdfYnVmX3NpemUpOwpzLmRfYnVmPXMubGl0X2J1ZnNpemU+PjE7cy5sX2J1Zj0oMSsyKSpzLmxpdF9idWZzaXplO3MubGV2ZWw9bGV2ZWw7cy5zdHJhdGVneT1zdHJhdGVneTtzLm1ldGhvZD1tZXRob2Q7cmV0dXJuIGRlZmxhdGVSZXNldChzdHJtKX1mdW5jdGlvbiBkZWZsYXRlSW5pdChzdHJtLGxldmVsKXtyZXR1cm4gZGVmbGF0ZUluaXQyKHN0cm0sbGV2ZWwsWl9ERUZMQVRFRCxNQVhfV0JJVFMsREVGX01FTV9MRVZFTCxaX0RFRkFVTFRfU1RSQVRFR1kpfWZ1bmN0aW9uIGRlZmxhdGUoc3RybSxmbHVzaCl7dmFyIG9sZF9mbHVzaCxzO3ZhciBiZWcsdmFsO2lmKCFzdHJtfHwhc3RybS5zdGF0ZXx8Zmx1c2g+Wl9CTE9DS3x8Zmx1c2g8MClyZXR1cm4gc3RybT9lcnIoc3RybSxaX1NUUkVBTV9FUlJPUik6Wl9TVFJFQU1fRVJST1I7cz1zdHJtLnN0YXRlO2lmKCFzdHJtLm91dHB1dHx8IXN0cm0uaW5wdXQmJnN0cm0uYXZhaWxfaW4hPT0wfHxzLnN0YXR1cz09PUZJTklTSF9TVEFURSYmZmx1c2ghPT1aX0ZJTklTSClyZXR1cm4gZXJyKHN0cm0sCnN0cm0uYXZhaWxfb3V0PT09MD9aX0JVRl9FUlJPUjpaX1NUUkVBTV9FUlJPUik7cy5zdHJtPXN0cm07b2xkX2ZsdXNoPXMubGFzdF9mbHVzaDtzLmxhc3RfZmx1c2g9Zmx1c2g7aWYocy5zdGF0dXM9PT1JTklUX1NUQVRFKWlmKHMud3JhcD09PTIpe3N0cm0uYWRsZXI9MDtwdXRfYnl0ZShzLDMxKTtwdXRfYnl0ZShzLDEzOSk7cHV0X2J5dGUocyw4KTtpZighcy5nemhlYWQpe3B1dF9ieXRlKHMsMCk7cHV0X2J5dGUocywwKTtwdXRfYnl0ZShzLDApO3B1dF9ieXRlKHMsMCk7cHV0X2J5dGUocywwKTtwdXRfYnl0ZShzLHMubGV2ZWw9PT05PzI6cy5zdHJhdGVneT49Wl9IVUZGTUFOX09OTFl8fHMubGV2ZWw8Mj80OjApO3B1dF9ieXRlKHMsT1NfQ09ERSk7cy5zdGF0dXM9QlVTWV9TVEFURX1lbHNle3B1dF9ieXRlKHMsKHMuZ3poZWFkLnRleHQ/MTowKSsocy5nemhlYWQuaGNyYz8yOjApKyghcy5nemhlYWQuZXh0cmE/MDo0KSsoIXMuZ3poZWFkLm5hbWU/MDo4KSsoIXMuZ3poZWFkLmNvbW1lbnQ/CjA6MTYpKTtwdXRfYnl0ZShzLHMuZ3poZWFkLnRpbWUmMjU1KTtwdXRfYnl0ZShzLHMuZ3poZWFkLnRpbWU+PjgmMjU1KTtwdXRfYnl0ZShzLHMuZ3poZWFkLnRpbWU+PjE2JjI1NSk7cHV0X2J5dGUocyxzLmd6aGVhZC50aW1lPj4yNCYyNTUpO3B1dF9ieXRlKHMscy5sZXZlbD09PTk/MjpzLnN0cmF0ZWd5Pj1aX0hVRkZNQU5fT05MWXx8cy5sZXZlbDwyPzQ6MCk7cHV0X2J5dGUocyxzLmd6aGVhZC5vcyYyNTUpO2lmKHMuZ3poZWFkLmV4dHJhJiZzLmd6aGVhZC5leHRyYS5sZW5ndGgpe3B1dF9ieXRlKHMscy5nemhlYWQuZXh0cmEubGVuZ3RoJjI1NSk7cHV0X2J5dGUocyxzLmd6aGVhZC5leHRyYS5sZW5ndGg+PjgmMjU1KX1pZihzLmd6aGVhZC5oY3JjKXN0cm0uYWRsZXI9Y3JjMzIoc3RybS5hZGxlcixzLnBlbmRpbmdfYnVmLHMucGVuZGluZywwKTtzLmd6aW5kZXg9MDtzLnN0YXR1cz1FWFRSQV9TVEFURX19ZWxzZXt2YXIgaGVhZGVyPVpfREVGTEFURUQrKHMud19iaXRzLTg8PAo0KTw8ODt2YXIgbGV2ZWxfZmxhZ3M9LTE7aWYocy5zdHJhdGVneT49Wl9IVUZGTUFOX09OTFl8fHMubGV2ZWw8MilsZXZlbF9mbGFncz0wO2Vsc2UgaWYocy5sZXZlbDw2KWxldmVsX2ZsYWdzPTE7ZWxzZSBpZihzLmxldmVsPT09NilsZXZlbF9mbGFncz0yO2Vsc2UgbGV2ZWxfZmxhZ3M9MztoZWFkZXJ8PWxldmVsX2ZsYWdzPDw2O2lmKHMuc3Ryc3RhcnQhPT0wKWhlYWRlcnw9UFJFU0VUX0RJQ1Q7aGVhZGVyKz0zMS1oZWFkZXIlMzE7cy5zdGF0dXM9QlVTWV9TVEFURTtwdXRTaG9ydE1TQihzLGhlYWRlcik7aWYocy5zdHJzdGFydCE9PTApe3B1dFNob3J0TVNCKHMsc3RybS5hZGxlcj4+PjE2KTtwdXRTaG9ydE1TQihzLHN0cm0uYWRsZXImNjU1MzUpfXN0cm0uYWRsZXI9MX1pZihzLnN0YXR1cz09PUVYVFJBX1NUQVRFKWlmKHMuZ3poZWFkLmV4dHJhKXtiZWc9cy5wZW5kaW5nO3doaWxlKHMuZ3ppbmRleDwocy5nemhlYWQuZXh0cmEubGVuZ3RoJjY1NTM1KSl7aWYocy5wZW5kaW5nPT09CnMucGVuZGluZ19idWZfc2l6ZSl7aWYocy5nemhlYWQuaGNyYyYmcy5wZW5kaW5nPmJlZylzdHJtLmFkbGVyPWNyYzMyKHN0cm0uYWRsZXIscy5wZW5kaW5nX2J1ZixzLnBlbmRpbmctYmVnLGJlZyk7Zmx1c2hfcGVuZGluZyhzdHJtKTtiZWc9cy5wZW5kaW5nO2lmKHMucGVuZGluZz09PXMucGVuZGluZ19idWZfc2l6ZSlicmVha31wdXRfYnl0ZShzLHMuZ3poZWFkLmV4dHJhW3MuZ3ppbmRleF0mMjU1KTtzLmd6aW5kZXgrK31pZihzLmd6aGVhZC5oY3JjJiZzLnBlbmRpbmc+YmVnKXN0cm0uYWRsZXI9Y3JjMzIoc3RybS5hZGxlcixzLnBlbmRpbmdfYnVmLHMucGVuZGluZy1iZWcsYmVnKTtpZihzLmd6aW5kZXg9PT1zLmd6aGVhZC5leHRyYS5sZW5ndGgpe3MuZ3ppbmRleD0wO3Muc3RhdHVzPU5BTUVfU1RBVEV9fWVsc2Ugcy5zdGF0dXM9TkFNRV9TVEFURTtpZihzLnN0YXR1cz09PU5BTUVfU1RBVEUpaWYocy5nemhlYWQubmFtZSl7YmVnPXMucGVuZGluZztkb3tpZihzLnBlbmRpbmc9PT0Kcy5wZW5kaW5nX2J1Zl9zaXplKXtpZihzLmd6aGVhZC5oY3JjJiZzLnBlbmRpbmc+YmVnKXN0cm0uYWRsZXI9Y3JjMzIoc3RybS5hZGxlcixzLnBlbmRpbmdfYnVmLHMucGVuZGluZy1iZWcsYmVnKTtmbHVzaF9wZW5kaW5nKHN0cm0pO2JlZz1zLnBlbmRpbmc7aWYocy5wZW5kaW5nPT09cy5wZW5kaW5nX2J1Zl9zaXplKXt2YWw9MTticmVha319aWYocy5nemluZGV4PHMuZ3poZWFkLm5hbWUubGVuZ3RoKXZhbD1zLmd6aGVhZC5uYW1lLmNoYXJDb2RlQXQocy5nemluZGV4KyspJjI1NTtlbHNlIHZhbD0wO3B1dF9ieXRlKHMsdmFsKX13aGlsZSh2YWwhPT0wKTtpZihzLmd6aGVhZC5oY3JjJiZzLnBlbmRpbmc+YmVnKXN0cm0uYWRsZXI9Y3JjMzIoc3RybS5hZGxlcixzLnBlbmRpbmdfYnVmLHMucGVuZGluZy1iZWcsYmVnKTtpZih2YWw9PT0wKXtzLmd6aW5kZXg9MDtzLnN0YXR1cz1DT01NRU5UX1NUQVRFfX1lbHNlIHMuc3RhdHVzPUNPTU1FTlRfU1RBVEU7aWYocy5zdGF0dXM9PT1DT01NRU5UX1NUQVRFKWlmKHMuZ3poZWFkLmNvbW1lbnQpe2JlZz0Kcy5wZW5kaW5nO2Rve2lmKHMucGVuZGluZz09PXMucGVuZGluZ19idWZfc2l6ZSl7aWYocy5nemhlYWQuaGNyYyYmcy5wZW5kaW5nPmJlZylzdHJtLmFkbGVyPWNyYzMyKHN0cm0uYWRsZXIscy5wZW5kaW5nX2J1ZixzLnBlbmRpbmctYmVnLGJlZyk7Zmx1c2hfcGVuZGluZyhzdHJtKTtiZWc9cy5wZW5kaW5nO2lmKHMucGVuZGluZz09PXMucGVuZGluZ19idWZfc2l6ZSl7dmFsPTE7YnJlYWt9fWlmKHMuZ3ppbmRleDxzLmd6aGVhZC5jb21tZW50Lmxlbmd0aCl2YWw9cy5nemhlYWQuY29tbWVudC5jaGFyQ29kZUF0KHMuZ3ppbmRleCsrKSYyNTU7ZWxzZSB2YWw9MDtwdXRfYnl0ZShzLHZhbCl9d2hpbGUodmFsIT09MCk7aWYocy5nemhlYWQuaGNyYyYmcy5wZW5kaW5nPmJlZylzdHJtLmFkbGVyPWNyYzMyKHN0cm0uYWRsZXIscy5wZW5kaW5nX2J1ZixzLnBlbmRpbmctYmVnLGJlZyk7aWYodmFsPT09MClzLnN0YXR1cz1IQ1JDX1NUQVRFfWVsc2Ugcy5zdGF0dXM9SENSQ19TVEFURTtpZihzLnN0YXR1cz09PQpIQ1JDX1NUQVRFKWlmKHMuZ3poZWFkLmhjcmMpe2lmKHMucGVuZGluZysyPnMucGVuZGluZ19idWZfc2l6ZSlmbHVzaF9wZW5kaW5nKHN0cm0pO2lmKHMucGVuZGluZysyPD1zLnBlbmRpbmdfYnVmX3NpemUpe3B1dF9ieXRlKHMsc3RybS5hZGxlciYyNTUpO3B1dF9ieXRlKHMsc3RybS5hZGxlcj4+OCYyNTUpO3N0cm0uYWRsZXI9MDtzLnN0YXR1cz1CVVNZX1NUQVRFfX1lbHNlIHMuc3RhdHVzPUJVU1lfU1RBVEU7aWYocy5wZW5kaW5nIT09MCl7Zmx1c2hfcGVuZGluZyhzdHJtKTtpZihzdHJtLmF2YWlsX291dD09PTApe3MubGFzdF9mbHVzaD0tMTtyZXR1cm4gWl9PS319ZWxzZSBpZihzdHJtLmF2YWlsX2luPT09MCYmcmFuayhmbHVzaCk8PXJhbmsob2xkX2ZsdXNoKSYmZmx1c2ghPT1aX0ZJTklTSClyZXR1cm4gZXJyKHN0cm0sWl9CVUZfRVJST1IpO2lmKHMuc3RhdHVzPT09RklOSVNIX1NUQVRFJiZzdHJtLmF2YWlsX2luIT09MClyZXR1cm4gZXJyKHN0cm0sWl9CVUZfRVJST1IpOwppZihzdHJtLmF2YWlsX2luIT09MHx8cy5sb29rYWhlYWQhPT0wfHxmbHVzaCE9PVpfTk9fRkxVU0gmJnMuc3RhdHVzIT09RklOSVNIX1NUQVRFKXt2YXIgYnN0YXRlPXMuc3RyYXRlZ3k9PT1aX0hVRkZNQU5fT05MWT9kZWZsYXRlX2h1ZmYocyxmbHVzaCk6cy5zdHJhdGVneT09PVpfUkxFP2RlZmxhdGVfcmxlKHMsZmx1c2gpOmNvbmZpZ3VyYXRpb25fdGFibGVbcy5sZXZlbF0uZnVuYyhzLGZsdXNoKTtpZihic3RhdGU9PT1CU19GSU5JU0hfU1RBUlRFRHx8YnN0YXRlPT09QlNfRklOSVNIX0RPTkUpcy5zdGF0dXM9RklOSVNIX1NUQVRFO2lmKGJzdGF0ZT09PUJTX05FRURfTU9SRXx8YnN0YXRlPT09QlNfRklOSVNIX1NUQVJURUQpe2lmKHN0cm0uYXZhaWxfb3V0PT09MClzLmxhc3RfZmx1c2g9LTE7cmV0dXJuIFpfT0t9aWYoYnN0YXRlPT09QlNfQkxPQ0tfRE9ORSl7aWYoZmx1c2g9PT1aX1BBUlRJQUxfRkxVU0gpdHJlZXMuX3RyX2FsaWduKHMpO2Vsc2UgaWYoZmx1c2ghPT1aX0JMT0NLKXt0cmVlcy5fdHJfc3RvcmVkX2Jsb2NrKHMsCjAsMCxmYWxzZSk7aWYoZmx1c2g9PT1aX0ZVTExfRkxVU0gpe3plcm8ocy5oZWFkKTtpZihzLmxvb2thaGVhZD09PTApe3Muc3Ryc3RhcnQ9MDtzLmJsb2NrX3N0YXJ0PTA7cy5pbnNlcnQ9MH19fWZsdXNoX3BlbmRpbmcoc3RybSk7aWYoc3RybS5hdmFpbF9vdXQ9PT0wKXtzLmxhc3RfZmx1c2g9LTE7cmV0dXJuIFpfT0t9fX1pZihmbHVzaCE9PVpfRklOSVNIKXJldHVybiBaX09LO2lmKHMud3JhcDw9MClyZXR1cm4gWl9TVFJFQU1fRU5EO2lmKHMud3JhcD09PTIpe3B1dF9ieXRlKHMsc3RybS5hZGxlciYyNTUpO3B1dF9ieXRlKHMsc3RybS5hZGxlcj4+OCYyNTUpO3B1dF9ieXRlKHMsc3RybS5hZGxlcj4+MTYmMjU1KTtwdXRfYnl0ZShzLHN0cm0uYWRsZXI+PjI0JjI1NSk7cHV0X2J5dGUocyxzdHJtLnRvdGFsX2luJjI1NSk7cHV0X2J5dGUocyxzdHJtLnRvdGFsX2luPj44JjI1NSk7cHV0X2J5dGUocyxzdHJtLnRvdGFsX2luPj4xNiYyNTUpO3B1dF9ieXRlKHMsc3RybS50b3RhbF9pbj4+CjI0JjI1NSl9ZWxzZXtwdXRTaG9ydE1TQihzLHN0cm0uYWRsZXI+Pj4xNik7cHV0U2hvcnRNU0IocyxzdHJtLmFkbGVyJjY1NTM1KX1mbHVzaF9wZW5kaW5nKHN0cm0pO2lmKHMud3JhcD4wKXMud3JhcD0tcy53cmFwO3JldHVybiBzLnBlbmRpbmchPT0wP1pfT0s6Wl9TVFJFQU1fRU5EfWZ1bmN0aW9uIGRlZmxhdGVFbmQoc3RybSl7dmFyIHN0YXR1cztpZighc3RybXx8IXN0cm0uc3RhdGUpcmV0dXJuIFpfU1RSRUFNX0VSUk9SO3N0YXR1cz1zdHJtLnN0YXRlLnN0YXR1cztpZihzdGF0dXMhPT1JTklUX1NUQVRFJiZzdGF0dXMhPT1FWFRSQV9TVEFURSYmc3RhdHVzIT09TkFNRV9TVEFURSYmc3RhdHVzIT09Q09NTUVOVF9TVEFURSYmc3RhdHVzIT09SENSQ19TVEFURSYmc3RhdHVzIT09QlVTWV9TVEFURSYmc3RhdHVzIT09RklOSVNIX1NUQVRFKXJldHVybiBlcnIoc3RybSxaX1NUUkVBTV9FUlJPUik7c3RybS5zdGF0ZT1udWxsO3JldHVybiBzdGF0dXM9PT1CVVNZX1NUQVRFP2VycihzdHJtLApaX0RBVEFfRVJST1IpOlpfT0t9ZXhwb3J0cy5kZWZsYXRlSW5pdD1kZWZsYXRlSW5pdDtleHBvcnRzLmRlZmxhdGVJbml0Mj1kZWZsYXRlSW5pdDI7ZXhwb3J0cy5kZWZsYXRlUmVzZXQ9ZGVmbGF0ZVJlc2V0O2V4cG9ydHMuZGVmbGF0ZVJlc2V0S2VlcD1kZWZsYXRlUmVzZXRLZWVwO2V4cG9ydHMuZGVmbGF0ZVNldEhlYWRlcj1kZWZsYXRlU2V0SGVhZGVyO2V4cG9ydHMuZGVmbGF0ZT1kZWZsYXRlO2V4cG9ydHMuZGVmbGF0ZUVuZD1kZWZsYXRlRW5kO2V4cG9ydHMuZGVmbGF0ZUluZm89InBha28gZGVmbGF0ZSAoZnJvbSBOb2RlY2EgcHJvamVjdCkifSx7Ii4uL3V0aWxzL2NvbW1vbiI6MjcsIi4vYWRsZXIzMiI6MjksIi4vY3JjMzIiOjMxLCIuL21lc3NhZ2VzIjozNywiLi90cmVlcyI6Mzh9XSwzMzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7ZnVuY3Rpb24gR1poZWFkZXIoKXt0aGlzLnRleHQ9MDt0aGlzLnRpbWU9MDt0aGlzLnhmbGFncz0wO3RoaXMub3M9MDsKdGhpcy5leHRyYT1udWxsO3RoaXMuZXh0cmFfbGVuPTA7dGhpcy5uYW1lPSIiO3RoaXMuY29tbWVudD0iIjt0aGlzLmhjcmM9MDt0aGlzLmRvbmU9ZmFsc2V9bW9kdWxlLmV4cG9ydHM9R1poZWFkZXJ9LHt9XSwzNDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7dmFyIEJBRD0zMDt2YXIgVFlQRT0xMjttb2R1bGUuZXhwb3J0cz1mdW5jdGlvbiBpbmZsYXRlX2Zhc3Qoc3RybSxzdGFydCl7dmFyIHN0YXRlO3ZhciBfaW47dmFyIGxhc3Q7dmFyIF9vdXQ7dmFyIGJlZzt2YXIgZW5kO3ZhciBkbWF4O3ZhciB3c2l6ZTt2YXIgd2hhdmU7dmFyIHduZXh0O3ZhciB3aW5kb3c7dmFyIGhvbGQ7dmFyIGJpdHM7dmFyIGxjb2RlO3ZhciBkY29kZTt2YXIgbG1hc2s7dmFyIGRtYXNrO3ZhciBoZXJlO3ZhciBvcDt2YXIgbGVuO3ZhciBkaXN0O3ZhciBmcm9tO3ZhciBmcm9tX3NvdXJjZTt2YXIgaW5wdXQsb3V0cHV0O3N0YXRlPXN0cm0uc3RhdGU7X2luPXN0cm0ubmV4dF9pbjtpbnB1dD0Kc3RybS5pbnB1dDtsYXN0PV9pbisoc3RybS5hdmFpbF9pbi01KTtfb3V0PXN0cm0ubmV4dF9vdXQ7b3V0cHV0PXN0cm0ub3V0cHV0O2JlZz1fb3V0LShzdGFydC1zdHJtLmF2YWlsX291dCk7ZW5kPV9vdXQrKHN0cm0uYXZhaWxfb3V0LTI1Nyk7ZG1heD1zdGF0ZS5kbWF4O3dzaXplPXN0YXRlLndzaXplO3doYXZlPXN0YXRlLndoYXZlO3duZXh0PXN0YXRlLnduZXh0O3dpbmRvdz1zdGF0ZS53aW5kb3c7aG9sZD1zdGF0ZS5ob2xkO2JpdHM9c3RhdGUuYml0cztsY29kZT1zdGF0ZS5sZW5jb2RlO2Rjb2RlPXN0YXRlLmRpc3Rjb2RlO2xtYXNrPSgxPDxzdGF0ZS5sZW5iaXRzKS0xO2RtYXNrPSgxPDxzdGF0ZS5kaXN0Yml0cyktMTt0b3A6ZG97aWYoYml0czwxNSl7aG9sZCs9aW5wdXRbX2luKytdPDxiaXRzO2JpdHMrPTg7aG9sZCs9aW5wdXRbX2luKytdPDxiaXRzO2JpdHMrPTh9aGVyZT1sY29kZVtob2xkJmxtYXNrXTtkb2xlbjpmb3IoOzspe29wPWhlcmU+Pj4yNDtob2xkPj4+PW9wOwpiaXRzLT1vcDtvcD1oZXJlPj4+MTYmMjU1O2lmKG9wPT09MClvdXRwdXRbX291dCsrXT1oZXJlJjY1NTM1O2Vsc2UgaWYob3AmMTYpe2xlbj1oZXJlJjY1NTM1O29wJj0xNTtpZihvcCl7aWYoYml0czxvcCl7aG9sZCs9aW5wdXRbX2luKytdPDxiaXRzO2JpdHMrPTh9bGVuKz1ob2xkJigxPDxvcCktMTtob2xkPj4+PW9wO2JpdHMtPW9wfWlmKGJpdHM8MTUpe2hvbGQrPWlucHV0W19pbisrXTw8Yml0cztiaXRzKz04O2hvbGQrPWlucHV0W19pbisrXTw8Yml0cztiaXRzKz04fWhlcmU9ZGNvZGVbaG9sZCZkbWFza107ZG9kaXN0OmZvcig7Oyl7b3A9aGVyZT4+PjI0O2hvbGQ+Pj49b3A7Yml0cy09b3A7b3A9aGVyZT4+PjE2JjI1NTtpZihvcCYxNil7ZGlzdD1oZXJlJjY1NTM1O29wJj0xNTtpZihiaXRzPG9wKXtob2xkKz1pbnB1dFtfaW4rK108PGJpdHM7Yml0cys9ODtpZihiaXRzPG9wKXtob2xkKz1pbnB1dFtfaW4rK108PGJpdHM7Yml0cys9OH19ZGlzdCs9aG9sZCYoMTw8b3ApLTE7CmlmKGRpc3Q+ZG1heCl7c3RybS5tc2c9ImludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrIjtzdGF0ZS5tb2RlPUJBRDticmVhayB0b3B9aG9sZD4+Pj1vcDtiaXRzLT1vcDtvcD1fb3V0LWJlZztpZihkaXN0Pm9wKXtvcD1kaXN0LW9wO2lmKG9wPndoYXZlKWlmKHN0YXRlLnNhbmUpe3N0cm0ubXNnPSJpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayI7c3RhdGUubW9kZT1CQUQ7YnJlYWsgdG9wfWZyb209MDtmcm9tX3NvdXJjZT13aW5kb3c7aWYod25leHQ9PT0wKXtmcm9tKz13c2l6ZS1vcDtpZihvcDxsZW4pe2xlbi09b3A7ZG8gb3V0cHV0W19vdXQrK109d2luZG93W2Zyb20rK107d2hpbGUoLS1vcCk7ZnJvbT1fb3V0LWRpc3Q7ZnJvbV9zb3VyY2U9b3V0cHV0fX1lbHNlIGlmKHduZXh0PG9wKXtmcm9tKz13c2l6ZSt3bmV4dC1vcDtvcC09d25leHQ7aWYob3A8bGVuKXtsZW4tPW9wO2RvIG91dHB1dFtfb3V0KytdPXdpbmRvd1tmcm9tKytdO3doaWxlKC0tb3ApO2Zyb209MDsKaWYod25leHQ8bGVuKXtvcD13bmV4dDtsZW4tPW9wO2RvIG91dHB1dFtfb3V0KytdPXdpbmRvd1tmcm9tKytdO3doaWxlKC0tb3ApO2Zyb209X291dC1kaXN0O2Zyb21fc291cmNlPW91dHB1dH19fWVsc2V7ZnJvbSs9d25leHQtb3A7aWYob3A8bGVuKXtsZW4tPW9wO2RvIG91dHB1dFtfb3V0KytdPXdpbmRvd1tmcm9tKytdO3doaWxlKC0tb3ApO2Zyb209X291dC1kaXN0O2Zyb21fc291cmNlPW91dHB1dH19d2hpbGUobGVuPjIpe291dHB1dFtfb3V0KytdPWZyb21fc291cmNlW2Zyb20rK107b3V0cHV0W19vdXQrK109ZnJvbV9zb3VyY2VbZnJvbSsrXTtvdXRwdXRbX291dCsrXT1mcm9tX3NvdXJjZVtmcm9tKytdO2xlbi09M31pZihsZW4pe291dHB1dFtfb3V0KytdPWZyb21fc291cmNlW2Zyb20rK107aWYobGVuPjEpb3V0cHV0W19vdXQrK109ZnJvbV9zb3VyY2VbZnJvbSsrXX19ZWxzZXtmcm9tPV9vdXQtZGlzdDtkb3tvdXRwdXRbX291dCsrXT1vdXRwdXRbZnJvbSsrXTtvdXRwdXRbX291dCsrXT0Kb3V0cHV0W2Zyb20rK107b3V0cHV0W19vdXQrK109b3V0cHV0W2Zyb20rK107bGVuLT0zfXdoaWxlKGxlbj4yKTtpZihsZW4pe291dHB1dFtfb3V0KytdPW91dHB1dFtmcm9tKytdO2lmKGxlbj4xKW91dHB1dFtfb3V0KytdPW91dHB1dFtmcm9tKytdfX19ZWxzZSBpZigob3AmNjQpPT09MCl7aGVyZT1kY29kZVsoaGVyZSY2NTUzNSkrKGhvbGQmKDE8PG9wKS0xKV07Y29udGludWUgZG9kaXN0fWVsc2V7c3RybS5tc2c9ImludmFsaWQgZGlzdGFuY2UgY29kZSI7c3RhdGUubW9kZT1CQUQ7YnJlYWsgdG9wfWJyZWFrfX1lbHNlIGlmKChvcCY2NCk9PT0wKXtoZXJlPWxjb2RlWyhoZXJlJjY1NTM1KSsoaG9sZCYoMTw8b3ApLTEpXTtjb250aW51ZSBkb2xlbn1lbHNlIGlmKG9wJjMyKXtzdGF0ZS5tb2RlPVRZUEU7YnJlYWsgdG9wfWVsc2V7c3RybS5tc2c9ImludmFsaWQgbGl0ZXJhbC9sZW5ndGggY29kZSI7c3RhdGUubW9kZT1CQUQ7YnJlYWsgdG9wfWJyZWFrfX13aGlsZShfaW48bGFzdCYmCl9vdXQ8ZW5kKTtsZW49Yml0cz4+MztfaW4tPWxlbjtiaXRzLT1sZW48PDM7aG9sZCY9KDE8PGJpdHMpLTE7c3RybS5uZXh0X2luPV9pbjtzdHJtLm5leHRfb3V0PV9vdXQ7c3RybS5hdmFpbF9pbj1faW48bGFzdD81KyhsYXN0LV9pbik6NS0oX2luLWxhc3QpO3N0cm0uYXZhaWxfb3V0PV9vdXQ8ZW5kPzI1NysoZW5kLV9vdXQpOjI1Ny0oX291dC1lbmQpO3N0YXRlLmhvbGQ9aG9sZDtzdGF0ZS5iaXRzPWJpdHM7cmV0dXJufX0se31dLDM1OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXt2YXIgdXRpbHM9X2RlcmVxXygiLi4vdXRpbHMvY29tbW9uIik7dmFyIGFkbGVyMzI9X2RlcmVxXygiLi9hZGxlcjMyIik7dmFyIGNyYzMyPV9kZXJlcV8oIi4vY3JjMzIiKTt2YXIgaW5mbGF0ZV9mYXN0PV9kZXJlcV8oIi4vaW5mZmFzdCIpO3ZhciBpbmZsYXRlX3RhYmxlPV9kZXJlcV8oIi4vaW5mdHJlZXMiKTt2YXIgQ09ERVM9MDt2YXIgTEVOUz0xO3ZhciBESVNUUz0yO3ZhciBaX0ZJTklTSD0KNDt2YXIgWl9CTE9DSz01O3ZhciBaX1RSRUVTPTY7dmFyIFpfT0s9MDt2YXIgWl9TVFJFQU1fRU5EPTE7dmFyIFpfTkVFRF9ESUNUPTI7dmFyIFpfU1RSRUFNX0VSUk9SPS0yO3ZhciBaX0RBVEFfRVJST1I9LTM7dmFyIFpfTUVNX0VSUk9SPS00O3ZhciBaX0JVRl9FUlJPUj0tNTt2YXIgWl9ERUZMQVRFRD04O3ZhciBIRUFEPTE7dmFyIEZMQUdTPTI7dmFyIFRJTUU9Mzt2YXIgT1M9NDt2YXIgRVhMRU49NTt2YXIgRVhUUkE9Njt2YXIgTkFNRT03O3ZhciBDT01NRU5UPTg7dmFyIEhDUkM9OTt2YXIgRElDVElEPTEwO3ZhciBESUNUPTExO3ZhciBUWVBFPTEyO3ZhciBUWVBFRE89MTM7dmFyIFNUT1JFRD0xNDt2YXIgQ09QWV89MTU7dmFyIENPUFk9MTY7dmFyIFRBQkxFPTE3O3ZhciBMRU5MRU5TPTE4O3ZhciBDT0RFTEVOUz0xOTt2YXIgTEVOXz0yMDt2YXIgTEVOPTIxO3ZhciBMRU5FWFQ9MjI7dmFyIERJU1Q9MjM7dmFyIERJU1RFWFQ9MjQ7dmFyIE1BVENIPTI1O3ZhciBMSVQ9MjY7CnZhciBDSEVDSz0yNzt2YXIgTEVOR1RIPTI4O3ZhciBET05FPTI5O3ZhciBCQUQ9MzA7dmFyIE1FTT0zMTt2YXIgU1lOQz0zMjt2YXIgRU5PVUdIX0xFTlM9ODUyO3ZhciBFTk9VR0hfRElTVFM9NTkyO3ZhciBNQVhfV0JJVFM9MTU7dmFyIERFRl9XQklUUz1NQVhfV0JJVFM7ZnVuY3Rpb24gWlNXQVAzMihxKXtyZXR1cm4ocT4+PjI0JjI1NSkrKHE+Pj44JjY1MjgwKSsoKHEmNjUyODApPDw4KSsoKHEmMjU1KTw8MjQpfWZ1bmN0aW9uIEluZmxhdGVTdGF0ZSgpe3RoaXMubW9kZT0wO3RoaXMubGFzdD1mYWxzZTt0aGlzLndyYXA9MDt0aGlzLmhhdmVkaWN0PWZhbHNlO3RoaXMuZmxhZ3M9MDt0aGlzLmRtYXg9MDt0aGlzLmNoZWNrPTA7dGhpcy50b3RhbD0wO3RoaXMuaGVhZD1udWxsO3RoaXMud2JpdHM9MDt0aGlzLndzaXplPTA7dGhpcy53aGF2ZT0wO3RoaXMud25leHQ9MDt0aGlzLndpbmRvdz1udWxsO3RoaXMuaG9sZD0wO3RoaXMuYml0cz0wO3RoaXMubGVuZ3RoPTA7dGhpcy5vZmZzZXQ9CjA7dGhpcy5leHRyYT0wO3RoaXMubGVuY29kZT1udWxsO3RoaXMuZGlzdGNvZGU9bnVsbDt0aGlzLmxlbmJpdHM9MDt0aGlzLmRpc3RiaXRzPTA7dGhpcy5uY29kZT0wO3RoaXMubmxlbj0wO3RoaXMubmRpc3Q9MDt0aGlzLmhhdmU9MDt0aGlzLm5leHQ9bnVsbDt0aGlzLmxlbnM9bmV3IHV0aWxzLkJ1ZjE2KDMyMCk7dGhpcy53b3JrPW5ldyB1dGlscy5CdWYxNigyODgpO3RoaXMubGVuZHluPW51bGw7dGhpcy5kaXN0ZHluPW51bGw7dGhpcy5zYW5lPTA7dGhpcy5iYWNrPTA7dGhpcy53YXM9MH1mdW5jdGlvbiBpbmZsYXRlUmVzZXRLZWVwKHN0cm0pe3ZhciBzdGF0ZTtpZighc3RybXx8IXN0cm0uc3RhdGUpcmV0dXJuIFpfU1RSRUFNX0VSUk9SO3N0YXRlPXN0cm0uc3RhdGU7c3RybS50b3RhbF9pbj1zdHJtLnRvdGFsX291dD1zdGF0ZS50b3RhbD0wO3N0cm0ubXNnPSIiO2lmKHN0YXRlLndyYXApc3RybS5hZGxlcj1zdGF0ZS53cmFwJjE7c3RhdGUubW9kZT1IRUFEO3N0YXRlLmxhc3Q9CjA7c3RhdGUuaGF2ZWRpY3Q9MDtzdGF0ZS5kbWF4PTMyNzY4O3N0YXRlLmhlYWQ9bnVsbDtzdGF0ZS5ob2xkPTA7c3RhdGUuYml0cz0wO3N0YXRlLmxlbmNvZGU9c3RhdGUubGVuZHluPW5ldyB1dGlscy5CdWYzMihFTk9VR0hfTEVOUyk7c3RhdGUuZGlzdGNvZGU9c3RhdGUuZGlzdGR5bj1uZXcgdXRpbHMuQnVmMzIoRU5PVUdIX0RJU1RTKTtzdGF0ZS5zYW5lPTE7c3RhdGUuYmFjaz0tMTtyZXR1cm4gWl9PS31mdW5jdGlvbiBpbmZsYXRlUmVzZXQoc3RybSl7dmFyIHN0YXRlO2lmKCFzdHJtfHwhc3RybS5zdGF0ZSlyZXR1cm4gWl9TVFJFQU1fRVJST1I7c3RhdGU9c3RybS5zdGF0ZTtzdGF0ZS53c2l6ZT0wO3N0YXRlLndoYXZlPTA7c3RhdGUud25leHQ9MDtyZXR1cm4gaW5mbGF0ZVJlc2V0S2VlcChzdHJtKX1mdW5jdGlvbiBpbmZsYXRlUmVzZXQyKHN0cm0sd2luZG93Qml0cyl7dmFyIHdyYXA7dmFyIHN0YXRlO2lmKCFzdHJtfHwhc3RybS5zdGF0ZSlyZXR1cm4gWl9TVFJFQU1fRVJST1I7CnN0YXRlPXN0cm0uc3RhdGU7aWYod2luZG93Qml0czwwKXt3cmFwPTA7d2luZG93Qml0cz0td2luZG93Qml0c31lbHNle3dyYXA9KHdpbmRvd0JpdHM+PjQpKzE7aWYod2luZG93Qml0czw0OCl3aW5kb3dCaXRzJj0xNX1pZih3aW5kb3dCaXRzJiYod2luZG93Qml0czw4fHx3aW5kb3dCaXRzPjE1KSlyZXR1cm4gWl9TVFJFQU1fRVJST1I7aWYoc3RhdGUud2luZG93IT09bnVsbCYmc3RhdGUud2JpdHMhPT13aW5kb3dCaXRzKXN0YXRlLndpbmRvdz1udWxsO3N0YXRlLndyYXA9d3JhcDtzdGF0ZS53Yml0cz13aW5kb3dCaXRzO3JldHVybiBpbmZsYXRlUmVzZXQoc3RybSl9ZnVuY3Rpb24gaW5mbGF0ZUluaXQyKHN0cm0sd2luZG93Qml0cyl7dmFyIHJldDt2YXIgc3RhdGU7aWYoIXN0cm0pcmV0dXJuIFpfU1RSRUFNX0VSUk9SO3N0YXRlPW5ldyBJbmZsYXRlU3RhdGU7c3RybS5zdGF0ZT1zdGF0ZTtzdGF0ZS53aW5kb3c9bnVsbDtyZXQ9aW5mbGF0ZVJlc2V0MihzdHJtLHdpbmRvd0JpdHMpOwppZihyZXQhPT1aX09LKXN0cm0uc3RhdGU9bnVsbDtyZXR1cm4gcmV0fWZ1bmN0aW9uIGluZmxhdGVJbml0KHN0cm0pe3JldHVybiBpbmZsYXRlSW5pdDIoc3RybSxERUZfV0JJVFMpfXZhciB2aXJnaW49dHJ1ZTt2YXIgbGVuZml4LGRpc3RmaXg7ZnVuY3Rpb24gZml4ZWR0YWJsZXMoc3RhdGUpe2lmKHZpcmdpbil7dmFyIHN5bTtsZW5maXg9bmV3IHV0aWxzLkJ1ZjMyKDUxMik7ZGlzdGZpeD1uZXcgdXRpbHMuQnVmMzIoMzIpO3N5bT0wO3doaWxlKHN5bTwxNDQpc3RhdGUubGVuc1tzeW0rK109ODt3aGlsZShzeW08MjU2KXN0YXRlLmxlbnNbc3ltKytdPTk7d2hpbGUoc3ltPDI4MClzdGF0ZS5sZW5zW3N5bSsrXT03O3doaWxlKHN5bTwyODgpc3RhdGUubGVuc1tzeW0rK109ODtpbmZsYXRlX3RhYmxlKExFTlMsc3RhdGUubGVucywwLDI4OCxsZW5maXgsMCxzdGF0ZS53b3JrLHtiaXRzOjl9KTtzeW09MDt3aGlsZShzeW08MzIpc3RhdGUubGVuc1tzeW0rK109NTtpbmZsYXRlX3RhYmxlKERJU1RTLApzdGF0ZS5sZW5zLDAsMzIsZGlzdGZpeCwwLHN0YXRlLndvcmsse2JpdHM6NX0pO3Zpcmdpbj1mYWxzZX1zdGF0ZS5sZW5jb2RlPWxlbmZpeDtzdGF0ZS5sZW5iaXRzPTk7c3RhdGUuZGlzdGNvZGU9ZGlzdGZpeDtzdGF0ZS5kaXN0Yml0cz01fWZ1bmN0aW9uIHVwZGF0ZXdpbmRvdyhzdHJtLHNyYyxlbmQsY29weSl7dmFyIGRpc3Q7dmFyIHN0YXRlPXN0cm0uc3RhdGU7aWYoc3RhdGUud2luZG93PT09bnVsbCl7c3RhdGUud3NpemU9MTw8c3RhdGUud2JpdHM7c3RhdGUud25leHQ9MDtzdGF0ZS53aGF2ZT0wO3N0YXRlLndpbmRvdz1uZXcgdXRpbHMuQnVmOChzdGF0ZS53c2l6ZSl9aWYoY29weT49c3RhdGUud3NpemUpe3V0aWxzLmFycmF5U2V0KHN0YXRlLndpbmRvdyxzcmMsZW5kLXN0YXRlLndzaXplLHN0YXRlLndzaXplLDApO3N0YXRlLnduZXh0PTA7c3RhdGUud2hhdmU9c3RhdGUud3NpemV9ZWxzZXtkaXN0PXN0YXRlLndzaXplLXN0YXRlLnduZXh0O2lmKGRpc3Q+Y29weSlkaXN0PQpjb3B5O3V0aWxzLmFycmF5U2V0KHN0YXRlLndpbmRvdyxzcmMsZW5kLWNvcHksZGlzdCxzdGF0ZS53bmV4dCk7Y29weS09ZGlzdDtpZihjb3B5KXt1dGlscy5hcnJheVNldChzdGF0ZS53aW5kb3csc3JjLGVuZC1jb3B5LGNvcHksMCk7c3RhdGUud25leHQ9Y29weTtzdGF0ZS53aGF2ZT1zdGF0ZS53c2l6ZX1lbHNle3N0YXRlLnduZXh0Kz1kaXN0O2lmKHN0YXRlLnduZXh0PT09c3RhdGUud3NpemUpc3RhdGUud25leHQ9MDtpZihzdGF0ZS53aGF2ZTxzdGF0ZS53c2l6ZSlzdGF0ZS53aGF2ZSs9ZGlzdH19cmV0dXJuIDB9ZnVuY3Rpb24gaW5mbGF0ZShzdHJtLGZsdXNoKXt2YXIgc3RhdGU7dmFyIGlucHV0LG91dHB1dDt2YXIgbmV4dDt2YXIgcHV0O3ZhciBoYXZlLGxlZnQ7dmFyIGhvbGQ7dmFyIGJpdHM7dmFyIF9pbixfb3V0O3ZhciBjb3B5O3ZhciBmcm9tO3ZhciBmcm9tX3NvdXJjZTt2YXIgaGVyZT0wO3ZhciBoZXJlX2JpdHMsaGVyZV9vcCxoZXJlX3ZhbDt2YXIgbGFzdF9iaXRzLApsYXN0X29wLGxhc3RfdmFsO3ZhciBsZW47dmFyIHJldDt2YXIgaGJ1Zj1uZXcgdXRpbHMuQnVmOCg0KTt2YXIgb3B0czt2YXIgbjt2YXIgb3JkZXI9WzE2LDE3LDE4LDAsOCw3LDksNiwxMCw1LDExLDQsMTIsMywxMywyLDE0LDEsMTVdO2lmKCFzdHJtfHwhc3RybS5zdGF0ZXx8IXN0cm0ub3V0cHV0fHwhc3RybS5pbnB1dCYmc3RybS5hdmFpbF9pbiE9PTApcmV0dXJuIFpfU1RSRUFNX0VSUk9SO3N0YXRlPXN0cm0uc3RhdGU7aWYoc3RhdGUubW9kZT09PVRZUEUpc3RhdGUubW9kZT1UWVBFRE87cHV0PXN0cm0ubmV4dF9vdXQ7b3V0cHV0PXN0cm0ub3V0cHV0O2xlZnQ9c3RybS5hdmFpbF9vdXQ7bmV4dD1zdHJtLm5leHRfaW47aW5wdXQ9c3RybS5pbnB1dDtoYXZlPXN0cm0uYXZhaWxfaW47aG9sZD1zdGF0ZS5ob2xkO2JpdHM9c3RhdGUuYml0cztfaW49aGF2ZTtfb3V0PWxlZnQ7cmV0PVpfT0s7aW5mX2xlYXZlOmZvcig7Oylzd2l0Y2goc3RhdGUubW9kZSl7Y2FzZSBIRUFEOmlmKHN0YXRlLndyYXA9PT0KMCl7c3RhdGUubW9kZT1UWVBFRE87YnJlYWt9d2hpbGUoYml0czwxNil7aWYoaGF2ZT09PTApYnJlYWsgaW5mX2xlYXZlO2hhdmUtLTtob2xkKz1pbnB1dFtuZXh0KytdPDxiaXRzO2JpdHMrPTh9aWYoc3RhdGUud3JhcCYyJiZob2xkPT09MzU2MTUpe3N0YXRlLmNoZWNrPTA7aGJ1ZlswXT1ob2xkJjI1NTtoYnVmWzFdPWhvbGQ+Pj44JjI1NTtzdGF0ZS5jaGVjaz1jcmMzMihzdGF0ZS5jaGVjayxoYnVmLDIsMCk7aG9sZD0wO2JpdHM9MDtzdGF0ZS5tb2RlPUZMQUdTO2JyZWFrfXN0YXRlLmZsYWdzPTA7aWYoc3RhdGUuaGVhZClzdGF0ZS5oZWFkLmRvbmU9ZmFsc2U7aWYoIShzdGF0ZS53cmFwJjEpfHwoKChob2xkJjI1NSk8PDgpKyhob2xkPj44KSklMzEpe3N0cm0ubXNnPSJpbmNvcnJlY3QgaGVhZGVyIGNoZWNrIjtzdGF0ZS5tb2RlPUJBRDticmVha31pZigoaG9sZCYxNSkhPT1aX0RFRkxBVEVEKXtzdHJtLm1zZz0idW5rbm93biBjb21wcmVzc2lvbiBtZXRob2QiO3N0YXRlLm1vZGU9CkJBRDticmVha31ob2xkPj4+PTQ7Yml0cy09NDtsZW49KGhvbGQmMTUpKzg7aWYoc3RhdGUud2JpdHM9PT0wKXN0YXRlLndiaXRzPWxlbjtlbHNlIGlmKGxlbj5zdGF0ZS53Yml0cyl7c3RybS5tc2c9ImludmFsaWQgd2luZG93IHNpemUiO3N0YXRlLm1vZGU9QkFEO2JyZWFrfXN0YXRlLmRtYXg9MTw8bGVuO3N0cm0uYWRsZXI9c3RhdGUuY2hlY2s9MTtzdGF0ZS5tb2RlPWhvbGQmNTEyP0RJQ1RJRDpUWVBFO2hvbGQ9MDtiaXRzPTA7YnJlYWs7Y2FzZSBGTEFHUzp3aGlsZShiaXRzPDE2KXtpZihoYXZlPT09MClicmVhayBpbmZfbGVhdmU7aGF2ZS0tO2hvbGQrPWlucHV0W25leHQrK108PGJpdHM7Yml0cys9OH1zdGF0ZS5mbGFncz1ob2xkO2lmKChzdGF0ZS5mbGFncyYyNTUpIT09Wl9ERUZMQVRFRCl7c3RybS5tc2c9InVua25vd24gY29tcHJlc3Npb24gbWV0aG9kIjtzdGF0ZS5tb2RlPUJBRDticmVha31pZihzdGF0ZS5mbGFncyY1NzM0NCl7c3RybS5tc2c9InVua25vd24gaGVhZGVyIGZsYWdzIHNldCI7CnN0YXRlLm1vZGU9QkFEO2JyZWFrfWlmKHN0YXRlLmhlYWQpc3RhdGUuaGVhZC50ZXh0PWhvbGQ+PjgmMTtpZihzdGF0ZS5mbGFncyY1MTIpe2hidWZbMF09aG9sZCYyNTU7aGJ1ZlsxXT1ob2xkPj4+OCYyNTU7c3RhdGUuY2hlY2s9Y3JjMzIoc3RhdGUuY2hlY2ssaGJ1ZiwyLDApfWhvbGQ9MDtiaXRzPTA7c3RhdGUubW9kZT1USU1FO2Nhc2UgVElNRTp3aGlsZShiaXRzPDMyKXtpZihoYXZlPT09MClicmVhayBpbmZfbGVhdmU7aGF2ZS0tO2hvbGQrPWlucHV0W25leHQrK108PGJpdHM7Yml0cys9OH1pZihzdGF0ZS5oZWFkKXN0YXRlLmhlYWQudGltZT1ob2xkO2lmKHN0YXRlLmZsYWdzJjUxMil7aGJ1ZlswXT1ob2xkJjI1NTtoYnVmWzFdPWhvbGQ+Pj44JjI1NTtoYnVmWzJdPWhvbGQ+Pj4xNiYyNTU7aGJ1ZlszXT1ob2xkPj4+MjQmMjU1O3N0YXRlLmNoZWNrPWNyYzMyKHN0YXRlLmNoZWNrLGhidWYsNCwwKX1ob2xkPTA7Yml0cz0wO3N0YXRlLm1vZGU9T1M7Y2FzZSBPUzp3aGlsZShiaXRzPAoxNil7aWYoaGF2ZT09PTApYnJlYWsgaW5mX2xlYXZlO2hhdmUtLTtob2xkKz1pbnB1dFtuZXh0KytdPDxiaXRzO2JpdHMrPTh9aWYoc3RhdGUuaGVhZCl7c3RhdGUuaGVhZC54ZmxhZ3M9aG9sZCYyNTU7c3RhdGUuaGVhZC5vcz1ob2xkPj44fWlmKHN0YXRlLmZsYWdzJjUxMil7aGJ1ZlswXT1ob2xkJjI1NTtoYnVmWzFdPWhvbGQ+Pj44JjI1NTtzdGF0ZS5jaGVjaz1jcmMzMihzdGF0ZS5jaGVjayxoYnVmLDIsMCl9aG9sZD0wO2JpdHM9MDtzdGF0ZS5tb2RlPUVYTEVOO2Nhc2UgRVhMRU46aWYoc3RhdGUuZmxhZ3MmMTAyNCl7d2hpbGUoYml0czwxNil7aWYoaGF2ZT09PTApYnJlYWsgaW5mX2xlYXZlO2hhdmUtLTtob2xkKz1pbnB1dFtuZXh0KytdPDxiaXRzO2JpdHMrPTh9c3RhdGUubGVuZ3RoPWhvbGQ7aWYoc3RhdGUuaGVhZClzdGF0ZS5oZWFkLmV4dHJhX2xlbj1ob2xkO2lmKHN0YXRlLmZsYWdzJjUxMil7aGJ1ZlswXT1ob2xkJjI1NTtoYnVmWzFdPWhvbGQ+Pj44JjI1NTtzdGF0ZS5jaGVjaz0KY3JjMzIoc3RhdGUuY2hlY2ssaGJ1ZiwyLDApfWhvbGQ9MDtiaXRzPTB9ZWxzZSBpZihzdGF0ZS5oZWFkKXN0YXRlLmhlYWQuZXh0cmE9bnVsbDtzdGF0ZS5tb2RlPUVYVFJBO2Nhc2UgRVhUUkE6aWYoc3RhdGUuZmxhZ3MmMTAyNCl7Y29weT1zdGF0ZS5sZW5ndGg7aWYoY29weT5oYXZlKWNvcHk9aGF2ZTtpZihjb3B5KXtpZihzdGF0ZS5oZWFkKXtsZW49c3RhdGUuaGVhZC5leHRyYV9sZW4tc3RhdGUubGVuZ3RoO2lmKCFzdGF0ZS5oZWFkLmV4dHJhKXN0YXRlLmhlYWQuZXh0cmE9bmV3IEFycmF5KHN0YXRlLmhlYWQuZXh0cmFfbGVuKTt1dGlscy5hcnJheVNldChzdGF0ZS5oZWFkLmV4dHJhLGlucHV0LG5leHQsY29weSxsZW4pfWlmKHN0YXRlLmZsYWdzJjUxMilzdGF0ZS5jaGVjaz1jcmMzMihzdGF0ZS5jaGVjayxpbnB1dCxjb3B5LG5leHQpO2hhdmUtPWNvcHk7bmV4dCs9Y29weTtzdGF0ZS5sZW5ndGgtPWNvcHl9aWYoc3RhdGUubGVuZ3RoKWJyZWFrIGluZl9sZWF2ZX1zdGF0ZS5sZW5ndGg9CjA7c3RhdGUubW9kZT1OQU1FO2Nhc2UgTkFNRTppZihzdGF0ZS5mbGFncyYyMDQ4KXtpZihoYXZlPT09MClicmVhayBpbmZfbGVhdmU7Y29weT0wO2Rve2xlbj1pbnB1dFtuZXh0K2NvcHkrK107aWYoc3RhdGUuaGVhZCYmbGVuJiZzdGF0ZS5sZW5ndGg8NjU1MzYpc3RhdGUuaGVhZC5uYW1lKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGxlbil9d2hpbGUobGVuJiZjb3B5PGhhdmUpO2lmKHN0YXRlLmZsYWdzJjUxMilzdGF0ZS5jaGVjaz1jcmMzMihzdGF0ZS5jaGVjayxpbnB1dCxjb3B5LG5leHQpO2hhdmUtPWNvcHk7bmV4dCs9Y29weTtpZihsZW4pYnJlYWsgaW5mX2xlYXZlfWVsc2UgaWYoc3RhdGUuaGVhZClzdGF0ZS5oZWFkLm5hbWU9bnVsbDtzdGF0ZS5sZW5ndGg9MDtzdGF0ZS5tb2RlPUNPTU1FTlQ7Y2FzZSBDT01NRU5UOmlmKHN0YXRlLmZsYWdzJjQwOTYpe2lmKGhhdmU9PT0wKWJyZWFrIGluZl9sZWF2ZTtjb3B5PTA7ZG97bGVuPWlucHV0W25leHQrY29weSsrXTtpZihzdGF0ZS5oZWFkJiYKbGVuJiZzdGF0ZS5sZW5ndGg8NjU1MzYpc3RhdGUuaGVhZC5jb21tZW50Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKGxlbil9d2hpbGUobGVuJiZjb3B5PGhhdmUpO2lmKHN0YXRlLmZsYWdzJjUxMilzdGF0ZS5jaGVjaz1jcmMzMihzdGF0ZS5jaGVjayxpbnB1dCxjb3B5LG5leHQpO2hhdmUtPWNvcHk7bmV4dCs9Y29weTtpZihsZW4pYnJlYWsgaW5mX2xlYXZlfWVsc2UgaWYoc3RhdGUuaGVhZClzdGF0ZS5oZWFkLmNvbW1lbnQ9bnVsbDtzdGF0ZS5tb2RlPUhDUkM7Y2FzZSBIQ1JDOmlmKHN0YXRlLmZsYWdzJjUxMil7d2hpbGUoYml0czwxNil7aWYoaGF2ZT09PTApYnJlYWsgaW5mX2xlYXZlO2hhdmUtLTtob2xkKz1pbnB1dFtuZXh0KytdPDxiaXRzO2JpdHMrPTh9aWYoaG9sZCE9PShzdGF0ZS5jaGVjayY2NTUzNSkpe3N0cm0ubXNnPSJoZWFkZXIgY3JjIG1pc21hdGNoIjtzdGF0ZS5tb2RlPUJBRDticmVha31ob2xkPTA7Yml0cz0wfWlmKHN0YXRlLmhlYWQpe3N0YXRlLmhlYWQuaGNyYz0Kc3RhdGUuZmxhZ3M+PjkmMTtzdGF0ZS5oZWFkLmRvbmU9dHJ1ZX1zdHJtLmFkbGVyPXN0YXRlLmNoZWNrPTA7c3RhdGUubW9kZT1UWVBFO2JyZWFrO2Nhc2UgRElDVElEOndoaWxlKGJpdHM8MzIpe2lmKGhhdmU9PT0wKWJyZWFrIGluZl9sZWF2ZTtoYXZlLS07aG9sZCs9aW5wdXRbbmV4dCsrXTw8Yml0cztiaXRzKz04fXN0cm0uYWRsZXI9c3RhdGUuY2hlY2s9WlNXQVAzMihob2xkKTtob2xkPTA7Yml0cz0wO3N0YXRlLm1vZGU9RElDVDtjYXNlIERJQ1Q6aWYoc3RhdGUuaGF2ZWRpY3Q9PT0wKXtzdHJtLm5leHRfb3V0PXB1dDtzdHJtLmF2YWlsX291dD1sZWZ0O3N0cm0ubmV4dF9pbj1uZXh0O3N0cm0uYXZhaWxfaW49aGF2ZTtzdGF0ZS5ob2xkPWhvbGQ7c3RhdGUuYml0cz1iaXRzO3JldHVybiBaX05FRURfRElDVH1zdHJtLmFkbGVyPXN0YXRlLmNoZWNrPTE7c3RhdGUubW9kZT1UWVBFO2Nhc2UgVFlQRTppZihmbHVzaD09PVpfQkxPQ0t8fGZsdXNoPT09Wl9UUkVFUylicmVhayBpbmZfbGVhdmU7CmNhc2UgVFlQRURPOmlmKHN0YXRlLmxhc3Qpe2hvbGQ+Pj49Yml0cyY3O2JpdHMtPWJpdHMmNztzdGF0ZS5tb2RlPUNIRUNLO2JyZWFrfXdoaWxlKGJpdHM8Myl7aWYoaGF2ZT09PTApYnJlYWsgaW5mX2xlYXZlO2hhdmUtLTtob2xkKz1pbnB1dFtuZXh0KytdPDxiaXRzO2JpdHMrPTh9c3RhdGUubGFzdD1ob2xkJjE7aG9sZD4+Pj0xO2JpdHMtPTE7c3dpdGNoKGhvbGQmMyl7Y2FzZSAwOnN0YXRlLm1vZGU9U1RPUkVEO2JyZWFrO2Nhc2UgMTpmaXhlZHRhYmxlcyhzdGF0ZSk7c3RhdGUubW9kZT1MRU5fO2lmKGZsdXNoPT09Wl9UUkVFUyl7aG9sZD4+Pj0yO2JpdHMtPTI7YnJlYWsgaW5mX2xlYXZlfWJyZWFrO2Nhc2UgMjpzdGF0ZS5tb2RlPVRBQkxFO2JyZWFrO2Nhc2UgMzpzdHJtLm1zZz0iaW52YWxpZCBibG9jayB0eXBlIjtzdGF0ZS5tb2RlPUJBRH1ob2xkPj4+PTI7Yml0cy09MjticmVhaztjYXNlIFNUT1JFRDpob2xkPj4+PWJpdHMmNztiaXRzLT1iaXRzJjc7d2hpbGUoYml0czwKMzIpe2lmKGhhdmU9PT0wKWJyZWFrIGluZl9sZWF2ZTtoYXZlLS07aG9sZCs9aW5wdXRbbmV4dCsrXTw8Yml0cztiaXRzKz04fWlmKChob2xkJjY1NTM1KSE9PShob2xkPj4+MTZeNjU1MzUpKXtzdHJtLm1zZz0iaW52YWxpZCBzdG9yZWQgYmxvY2sgbGVuZ3RocyI7c3RhdGUubW9kZT1CQUQ7YnJlYWt9c3RhdGUubGVuZ3RoPWhvbGQmNjU1MzU7aG9sZD0wO2JpdHM9MDtzdGF0ZS5tb2RlPUNPUFlfO2lmKGZsdXNoPT09Wl9UUkVFUylicmVhayBpbmZfbGVhdmU7Y2FzZSBDT1BZXzpzdGF0ZS5tb2RlPUNPUFk7Y2FzZSBDT1BZOmNvcHk9c3RhdGUubGVuZ3RoO2lmKGNvcHkpe2lmKGNvcHk+aGF2ZSljb3B5PWhhdmU7aWYoY29weT5sZWZ0KWNvcHk9bGVmdDtpZihjb3B5PT09MClicmVhayBpbmZfbGVhdmU7dXRpbHMuYXJyYXlTZXQob3V0cHV0LGlucHV0LG5leHQsY29weSxwdXQpO2hhdmUtPWNvcHk7bmV4dCs9Y29weTtsZWZ0LT1jb3B5O3B1dCs9Y29weTtzdGF0ZS5sZW5ndGgtPWNvcHk7CmJyZWFrfXN0YXRlLm1vZGU9VFlQRTticmVhaztjYXNlIFRBQkxFOndoaWxlKGJpdHM8MTQpe2lmKGhhdmU9PT0wKWJyZWFrIGluZl9sZWF2ZTtoYXZlLS07aG9sZCs9aW5wdXRbbmV4dCsrXTw8Yml0cztiaXRzKz04fXN0YXRlLm5sZW49KGhvbGQmMzEpKzI1Nztob2xkPj4+PTU7Yml0cy09NTtzdGF0ZS5uZGlzdD0oaG9sZCYzMSkrMTtob2xkPj4+PTU7Yml0cy09NTtzdGF0ZS5uY29kZT0oaG9sZCYxNSkrNDtob2xkPj4+PTQ7Yml0cy09NDtpZihzdGF0ZS5ubGVuPjI4Nnx8c3RhdGUubmRpc3Q+MzApe3N0cm0ubXNnPSJ0b28gbWFueSBsZW5ndGggb3IgZGlzdGFuY2Ugc3ltYm9scyI7c3RhdGUubW9kZT1CQUQ7YnJlYWt9c3RhdGUuaGF2ZT0wO3N0YXRlLm1vZGU9TEVOTEVOUztjYXNlIExFTkxFTlM6d2hpbGUoc3RhdGUuaGF2ZTxzdGF0ZS5uY29kZSl7d2hpbGUoYml0czwzKXtpZihoYXZlPT09MClicmVhayBpbmZfbGVhdmU7aGF2ZS0tO2hvbGQrPWlucHV0W25leHQrK108PGJpdHM7CmJpdHMrPTh9c3RhdGUubGVuc1tvcmRlcltzdGF0ZS5oYXZlKytdXT1ob2xkJjc7aG9sZD4+Pj0zO2JpdHMtPTN9d2hpbGUoc3RhdGUuaGF2ZTwxOSlzdGF0ZS5sZW5zW29yZGVyW3N0YXRlLmhhdmUrK11dPTA7c3RhdGUubGVuY29kZT1zdGF0ZS5sZW5keW47c3RhdGUubGVuYml0cz03O29wdHM9e2JpdHM6c3RhdGUubGVuYml0c307cmV0PWluZmxhdGVfdGFibGUoQ09ERVMsc3RhdGUubGVucywwLDE5LHN0YXRlLmxlbmNvZGUsMCxzdGF0ZS53b3JrLG9wdHMpO3N0YXRlLmxlbmJpdHM9b3B0cy5iaXRzO2lmKHJldCl7c3RybS5tc2c9ImludmFsaWQgY29kZSBsZW5ndGhzIHNldCI7c3RhdGUubW9kZT1CQUQ7YnJlYWt9c3RhdGUuaGF2ZT0wO3N0YXRlLm1vZGU9Q09ERUxFTlM7Y2FzZSBDT0RFTEVOUzp3aGlsZShzdGF0ZS5oYXZlPHN0YXRlLm5sZW4rc3RhdGUubmRpc3Qpe2Zvcig7Oyl7aGVyZT1zdGF0ZS5sZW5jb2RlW2hvbGQmKDE8PHN0YXRlLmxlbmJpdHMpLTFdO2hlcmVfYml0cz0KaGVyZT4+PjI0O2hlcmVfb3A9aGVyZT4+PjE2JjI1NTtoZXJlX3ZhbD1oZXJlJjY1NTM1O2lmKGhlcmVfYml0czw9Yml0cylicmVhaztpZihoYXZlPT09MClicmVhayBpbmZfbGVhdmU7aGF2ZS0tO2hvbGQrPWlucHV0W25leHQrK108PGJpdHM7Yml0cys9OH1pZihoZXJlX3ZhbDwxNil7aG9sZD4+Pj1oZXJlX2JpdHM7Yml0cy09aGVyZV9iaXRzO3N0YXRlLmxlbnNbc3RhdGUuaGF2ZSsrXT1oZXJlX3ZhbH1lbHNle2lmKGhlcmVfdmFsPT09MTYpe249aGVyZV9iaXRzKzI7d2hpbGUoYml0czxuKXtpZihoYXZlPT09MClicmVhayBpbmZfbGVhdmU7aGF2ZS0tO2hvbGQrPWlucHV0W25leHQrK108PGJpdHM7Yml0cys9OH1ob2xkPj4+PWhlcmVfYml0cztiaXRzLT1oZXJlX2JpdHM7aWYoc3RhdGUuaGF2ZT09PTApe3N0cm0ubXNnPSJpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0IjtzdGF0ZS5tb2RlPUJBRDticmVha31sZW49c3RhdGUubGVuc1tzdGF0ZS5oYXZlLTFdO2NvcHk9MysoaG9sZCYKMyk7aG9sZD4+Pj0yO2JpdHMtPTJ9ZWxzZSBpZihoZXJlX3ZhbD09PTE3KXtuPWhlcmVfYml0cyszO3doaWxlKGJpdHM8bil7aWYoaGF2ZT09PTApYnJlYWsgaW5mX2xlYXZlO2hhdmUtLTtob2xkKz1pbnB1dFtuZXh0KytdPDxiaXRzO2JpdHMrPTh9aG9sZD4+Pj1oZXJlX2JpdHM7Yml0cy09aGVyZV9iaXRzO2xlbj0wO2NvcHk9MysoaG9sZCY3KTtob2xkPj4+PTM7Yml0cy09M31lbHNle249aGVyZV9iaXRzKzc7d2hpbGUoYml0czxuKXtpZihoYXZlPT09MClicmVhayBpbmZfbGVhdmU7aGF2ZS0tO2hvbGQrPWlucHV0W25leHQrK108PGJpdHM7Yml0cys9OH1ob2xkPj4+PWhlcmVfYml0cztiaXRzLT1oZXJlX2JpdHM7bGVuPTA7Y29weT0xMSsoaG9sZCYxMjcpO2hvbGQ+Pj49NztiaXRzLT03fWlmKHN0YXRlLmhhdmUrY29weT5zdGF0ZS5ubGVuK3N0YXRlLm5kaXN0KXtzdHJtLm1zZz0iaW52YWxpZCBiaXQgbGVuZ3RoIHJlcGVhdCI7c3RhdGUubW9kZT1CQUQ7YnJlYWt9d2hpbGUoY29weS0tKXN0YXRlLmxlbnNbc3RhdGUuaGF2ZSsrXT0KbGVufX1pZihzdGF0ZS5tb2RlPT09QkFEKWJyZWFrO2lmKHN0YXRlLmxlbnNbMjU2XT09PTApe3N0cm0ubXNnPSJpbnZhbGlkIGNvZGUgLS0gbWlzc2luZyBlbmQtb2YtYmxvY2siO3N0YXRlLm1vZGU9QkFEO2JyZWFrfXN0YXRlLmxlbmJpdHM9OTtvcHRzPXtiaXRzOnN0YXRlLmxlbmJpdHN9O3JldD1pbmZsYXRlX3RhYmxlKExFTlMsc3RhdGUubGVucywwLHN0YXRlLm5sZW4sc3RhdGUubGVuY29kZSwwLHN0YXRlLndvcmssb3B0cyk7c3RhdGUubGVuYml0cz1vcHRzLmJpdHM7aWYocmV0KXtzdHJtLm1zZz0iaW52YWxpZCBsaXRlcmFsL2xlbmd0aHMgc2V0IjtzdGF0ZS5tb2RlPUJBRDticmVha31zdGF0ZS5kaXN0Yml0cz02O3N0YXRlLmRpc3Rjb2RlPXN0YXRlLmRpc3RkeW47b3B0cz17Yml0czpzdGF0ZS5kaXN0Yml0c307cmV0PWluZmxhdGVfdGFibGUoRElTVFMsc3RhdGUubGVucyxzdGF0ZS5ubGVuLHN0YXRlLm5kaXN0LHN0YXRlLmRpc3Rjb2RlLDAsc3RhdGUud29yayxvcHRzKTsKc3RhdGUuZGlzdGJpdHM9b3B0cy5iaXRzO2lmKHJldCl7c3RybS5tc2c9ImludmFsaWQgZGlzdGFuY2VzIHNldCI7c3RhdGUubW9kZT1CQUQ7YnJlYWt9c3RhdGUubW9kZT1MRU5fO2lmKGZsdXNoPT09Wl9UUkVFUylicmVhayBpbmZfbGVhdmU7Y2FzZSBMRU5fOnN0YXRlLm1vZGU9TEVOO2Nhc2UgTEVOOmlmKGhhdmU+PTYmJmxlZnQ+PTI1OCl7c3RybS5uZXh0X291dD1wdXQ7c3RybS5hdmFpbF9vdXQ9bGVmdDtzdHJtLm5leHRfaW49bmV4dDtzdHJtLmF2YWlsX2luPWhhdmU7c3RhdGUuaG9sZD1ob2xkO3N0YXRlLmJpdHM9Yml0cztpbmZsYXRlX2Zhc3Qoc3RybSxfb3V0KTtwdXQ9c3RybS5uZXh0X291dDtvdXRwdXQ9c3RybS5vdXRwdXQ7bGVmdD1zdHJtLmF2YWlsX291dDtuZXh0PXN0cm0ubmV4dF9pbjtpbnB1dD1zdHJtLmlucHV0O2hhdmU9c3RybS5hdmFpbF9pbjtob2xkPXN0YXRlLmhvbGQ7Yml0cz1zdGF0ZS5iaXRzO2lmKHN0YXRlLm1vZGU9PT1UWVBFKXN0YXRlLmJhY2s9Ci0xO2JyZWFrfXN0YXRlLmJhY2s9MDtmb3IoOzspe2hlcmU9c3RhdGUubGVuY29kZVtob2xkJigxPDxzdGF0ZS5sZW5iaXRzKS0xXTtoZXJlX2JpdHM9aGVyZT4+PjI0O2hlcmVfb3A9aGVyZT4+PjE2JjI1NTtoZXJlX3ZhbD1oZXJlJjY1NTM1O2lmKGhlcmVfYml0czw9Yml0cylicmVhaztpZihoYXZlPT09MClicmVhayBpbmZfbGVhdmU7aGF2ZS0tO2hvbGQrPWlucHV0W25leHQrK108PGJpdHM7Yml0cys9OH1pZihoZXJlX29wJiYoaGVyZV9vcCYyNDApPT09MCl7bGFzdF9iaXRzPWhlcmVfYml0cztsYXN0X29wPWhlcmVfb3A7bGFzdF92YWw9aGVyZV92YWw7Zm9yKDs7KXtoZXJlPXN0YXRlLmxlbmNvZGVbbGFzdF92YWwrKChob2xkJigxPDxsYXN0X2JpdHMrbGFzdF9vcCktMSk+Pmxhc3RfYml0cyldO2hlcmVfYml0cz1oZXJlPj4+MjQ7aGVyZV9vcD1oZXJlPj4+MTYmMjU1O2hlcmVfdmFsPWhlcmUmNjU1MzU7aWYobGFzdF9iaXRzK2hlcmVfYml0czw9Yml0cylicmVhaztpZihoYXZlPT09CjApYnJlYWsgaW5mX2xlYXZlO2hhdmUtLTtob2xkKz1pbnB1dFtuZXh0KytdPDxiaXRzO2JpdHMrPTh9aG9sZD4+Pj1sYXN0X2JpdHM7Yml0cy09bGFzdF9iaXRzO3N0YXRlLmJhY2srPWxhc3RfYml0c31ob2xkPj4+PWhlcmVfYml0cztiaXRzLT1oZXJlX2JpdHM7c3RhdGUuYmFjays9aGVyZV9iaXRzO3N0YXRlLmxlbmd0aD1oZXJlX3ZhbDtpZihoZXJlX29wPT09MCl7c3RhdGUubW9kZT1MSVQ7YnJlYWt9aWYoaGVyZV9vcCYzMil7c3RhdGUuYmFjaz0tMTtzdGF0ZS5tb2RlPVRZUEU7YnJlYWt9aWYoaGVyZV9vcCY2NCl7c3RybS5tc2c9ImludmFsaWQgbGl0ZXJhbC9sZW5ndGggY29kZSI7c3RhdGUubW9kZT1CQUQ7YnJlYWt9c3RhdGUuZXh0cmE9aGVyZV9vcCYxNTtzdGF0ZS5tb2RlPUxFTkVYVDtjYXNlIExFTkVYVDppZihzdGF0ZS5leHRyYSl7bj1zdGF0ZS5leHRyYTt3aGlsZShiaXRzPG4pe2lmKGhhdmU9PT0wKWJyZWFrIGluZl9sZWF2ZTtoYXZlLS07aG9sZCs9aW5wdXRbbmV4dCsrXTw8CmJpdHM7Yml0cys9OH1zdGF0ZS5sZW5ndGgrPWhvbGQmKDE8PHN0YXRlLmV4dHJhKS0xO2hvbGQ+Pj49c3RhdGUuZXh0cmE7Yml0cy09c3RhdGUuZXh0cmE7c3RhdGUuYmFjays9c3RhdGUuZXh0cmF9c3RhdGUud2FzPXN0YXRlLmxlbmd0aDtzdGF0ZS5tb2RlPURJU1Q7Y2FzZSBESVNUOmZvcig7Oyl7aGVyZT1zdGF0ZS5kaXN0Y29kZVtob2xkJigxPDxzdGF0ZS5kaXN0Yml0cyktMV07aGVyZV9iaXRzPWhlcmU+Pj4yNDtoZXJlX29wPWhlcmU+Pj4xNiYyNTU7aGVyZV92YWw9aGVyZSY2NTUzNTtpZihoZXJlX2JpdHM8PWJpdHMpYnJlYWs7aWYoaGF2ZT09PTApYnJlYWsgaW5mX2xlYXZlO2hhdmUtLTtob2xkKz1pbnB1dFtuZXh0KytdPDxiaXRzO2JpdHMrPTh9aWYoKGhlcmVfb3AmMjQwKT09PTApe2xhc3RfYml0cz1oZXJlX2JpdHM7bGFzdF9vcD1oZXJlX29wO2xhc3RfdmFsPWhlcmVfdmFsO2Zvcig7Oyl7aGVyZT1zdGF0ZS5kaXN0Y29kZVtsYXN0X3ZhbCsoKGhvbGQmKDE8PGxhc3RfYml0cysKbGFzdF9vcCktMSk+Pmxhc3RfYml0cyldO2hlcmVfYml0cz1oZXJlPj4+MjQ7aGVyZV9vcD1oZXJlPj4+MTYmMjU1O2hlcmVfdmFsPWhlcmUmNjU1MzU7aWYobGFzdF9iaXRzK2hlcmVfYml0czw9Yml0cylicmVhaztpZihoYXZlPT09MClicmVhayBpbmZfbGVhdmU7aGF2ZS0tO2hvbGQrPWlucHV0W25leHQrK108PGJpdHM7Yml0cys9OH1ob2xkPj4+PWxhc3RfYml0cztiaXRzLT1sYXN0X2JpdHM7c3RhdGUuYmFjays9bGFzdF9iaXRzfWhvbGQ+Pj49aGVyZV9iaXRzO2JpdHMtPWhlcmVfYml0cztzdGF0ZS5iYWNrKz1oZXJlX2JpdHM7aWYoaGVyZV9vcCY2NCl7c3RybS5tc2c9ImludmFsaWQgZGlzdGFuY2UgY29kZSI7c3RhdGUubW9kZT1CQUQ7YnJlYWt9c3RhdGUub2Zmc2V0PWhlcmVfdmFsO3N0YXRlLmV4dHJhPWhlcmVfb3AmMTU7c3RhdGUubW9kZT1ESVNURVhUO2Nhc2UgRElTVEVYVDppZihzdGF0ZS5leHRyYSl7bj1zdGF0ZS5leHRyYTt3aGlsZShiaXRzPG4pe2lmKGhhdmU9PT0KMClicmVhayBpbmZfbGVhdmU7aGF2ZS0tO2hvbGQrPWlucHV0W25leHQrK108PGJpdHM7Yml0cys9OH1zdGF0ZS5vZmZzZXQrPWhvbGQmKDE8PHN0YXRlLmV4dHJhKS0xO2hvbGQ+Pj49c3RhdGUuZXh0cmE7Yml0cy09c3RhdGUuZXh0cmE7c3RhdGUuYmFjays9c3RhdGUuZXh0cmF9aWYoc3RhdGUub2Zmc2V0PnN0YXRlLmRtYXgpe3N0cm0ubXNnPSJpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayI7c3RhdGUubW9kZT1CQUQ7YnJlYWt9c3RhdGUubW9kZT1NQVRDSDtjYXNlIE1BVENIOmlmKGxlZnQ9PT0wKWJyZWFrIGluZl9sZWF2ZTtjb3B5PV9vdXQtbGVmdDtpZihzdGF0ZS5vZmZzZXQ+Y29weSl7Y29weT1zdGF0ZS5vZmZzZXQtY29weTtpZihjb3B5PnN0YXRlLndoYXZlKWlmKHN0YXRlLnNhbmUpe3N0cm0ubXNnPSJpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayI7c3RhdGUubW9kZT1CQUQ7YnJlYWt9aWYoY29weT5zdGF0ZS53bmV4dCl7Y29weS09c3RhdGUud25leHQ7CmZyb209c3RhdGUud3NpemUtY29weX1lbHNlIGZyb209c3RhdGUud25leHQtY29weTtpZihjb3B5PnN0YXRlLmxlbmd0aCljb3B5PXN0YXRlLmxlbmd0aDtmcm9tX3NvdXJjZT1zdGF0ZS53aW5kb3d9ZWxzZXtmcm9tX3NvdXJjZT1vdXRwdXQ7ZnJvbT1wdXQtc3RhdGUub2Zmc2V0O2NvcHk9c3RhdGUubGVuZ3RofWlmKGNvcHk+bGVmdCljb3B5PWxlZnQ7bGVmdC09Y29weTtzdGF0ZS5sZW5ndGgtPWNvcHk7ZG8gb3V0cHV0W3B1dCsrXT1mcm9tX3NvdXJjZVtmcm9tKytdO3doaWxlKC0tY29weSk7aWYoc3RhdGUubGVuZ3RoPT09MClzdGF0ZS5tb2RlPUxFTjticmVhaztjYXNlIExJVDppZihsZWZ0PT09MClicmVhayBpbmZfbGVhdmU7b3V0cHV0W3B1dCsrXT1zdGF0ZS5sZW5ndGg7bGVmdC0tO3N0YXRlLm1vZGU9TEVOO2JyZWFrO2Nhc2UgQ0hFQ0s6aWYoc3RhdGUud3JhcCl7d2hpbGUoYml0czwzMil7aWYoaGF2ZT09PTApYnJlYWsgaW5mX2xlYXZlO2hhdmUtLTtob2xkfD1pbnB1dFtuZXh0KytdPDwKYml0cztiaXRzKz04fV9vdXQtPWxlZnQ7c3RybS50b3RhbF9vdXQrPV9vdXQ7c3RhdGUudG90YWwrPV9vdXQ7aWYoX291dClzdHJtLmFkbGVyPXN0YXRlLmNoZWNrPXN0YXRlLmZsYWdzP2NyYzMyKHN0YXRlLmNoZWNrLG91dHB1dCxfb3V0LHB1dC1fb3V0KTphZGxlcjMyKHN0YXRlLmNoZWNrLG91dHB1dCxfb3V0LHB1dC1fb3V0KTtfb3V0PWxlZnQ7aWYoKHN0YXRlLmZsYWdzP2hvbGQ6WlNXQVAzMihob2xkKSkhPT1zdGF0ZS5jaGVjayl7c3RybS5tc2c9ImluY29ycmVjdCBkYXRhIGNoZWNrIjtzdGF0ZS5tb2RlPUJBRDticmVha31ob2xkPTA7Yml0cz0wfXN0YXRlLm1vZGU9TEVOR1RIO2Nhc2UgTEVOR1RIOmlmKHN0YXRlLndyYXAmJnN0YXRlLmZsYWdzKXt3aGlsZShiaXRzPDMyKXtpZihoYXZlPT09MClicmVhayBpbmZfbGVhdmU7aGF2ZS0tO2hvbGQrPWlucHV0W25leHQrK108PGJpdHM7Yml0cys9OH1pZihob2xkIT09KHN0YXRlLnRvdGFsJjQyOTQ5NjcyOTUpKXtzdHJtLm1zZz0KImluY29ycmVjdCBsZW5ndGggY2hlY2siO3N0YXRlLm1vZGU9QkFEO2JyZWFrfWhvbGQ9MDtiaXRzPTB9c3RhdGUubW9kZT1ET05FO2Nhc2UgRE9ORTpyZXQ9Wl9TVFJFQU1fRU5EO2JyZWFrIGluZl9sZWF2ZTtjYXNlIEJBRDpyZXQ9Wl9EQVRBX0VSUk9SO2JyZWFrIGluZl9sZWF2ZTtjYXNlIE1FTTpyZXR1cm4gWl9NRU1fRVJST1I7Y2FzZSBTWU5DOmRlZmF1bHQ6cmV0dXJuIFpfU1RSRUFNX0VSUk9SfXN0cm0ubmV4dF9vdXQ9cHV0O3N0cm0uYXZhaWxfb3V0PWxlZnQ7c3RybS5uZXh0X2luPW5leHQ7c3RybS5hdmFpbF9pbj1oYXZlO3N0YXRlLmhvbGQ9aG9sZDtzdGF0ZS5iaXRzPWJpdHM7aWYoc3RhdGUud3NpemV8fF9vdXQhPT1zdHJtLmF2YWlsX291dCYmc3RhdGUubW9kZTxCQUQmJihzdGF0ZS5tb2RlPENIRUNLfHxmbHVzaCE9PVpfRklOSVNIKSlpZih1cGRhdGV3aW5kb3coc3RybSxzdHJtLm91dHB1dCxzdHJtLm5leHRfb3V0LF9vdXQtc3RybS5hdmFpbF9vdXQpKXtzdGF0ZS5tb2RlPQpNRU07cmV0dXJuIFpfTUVNX0VSUk9SfV9pbi09c3RybS5hdmFpbF9pbjtfb3V0LT1zdHJtLmF2YWlsX291dDtzdHJtLnRvdGFsX2luKz1faW47c3RybS50b3RhbF9vdXQrPV9vdXQ7c3RhdGUudG90YWwrPV9vdXQ7aWYoc3RhdGUud3JhcCYmX291dClzdHJtLmFkbGVyPXN0YXRlLmNoZWNrPXN0YXRlLmZsYWdzP2NyYzMyKHN0YXRlLmNoZWNrLG91dHB1dCxfb3V0LHN0cm0ubmV4dF9vdXQtX291dCk6YWRsZXIzMihzdGF0ZS5jaGVjayxvdXRwdXQsX291dCxzdHJtLm5leHRfb3V0LV9vdXQpO3N0cm0uZGF0YV90eXBlPXN0YXRlLmJpdHMrKHN0YXRlLmxhc3Q/NjQ6MCkrKHN0YXRlLm1vZGU9PT1UWVBFPzEyODowKSsoc3RhdGUubW9kZT09PUxFTl98fHN0YXRlLm1vZGU9PT1DT1BZXz8yNTY6MCk7aWYoKF9pbj09PTAmJl9vdXQ9PT0wfHxmbHVzaD09PVpfRklOSVNIKSYmcmV0PT09Wl9PSylyZXQ9Wl9CVUZfRVJST1I7cmV0dXJuIHJldH1mdW5jdGlvbiBpbmZsYXRlRW5kKHN0cm0pe2lmKCFzdHJtfHwKIXN0cm0uc3RhdGUpcmV0dXJuIFpfU1RSRUFNX0VSUk9SO3ZhciBzdGF0ZT1zdHJtLnN0YXRlO2lmKHN0YXRlLndpbmRvdylzdGF0ZS53aW5kb3c9bnVsbDtzdHJtLnN0YXRlPW51bGw7cmV0dXJuIFpfT0t9ZnVuY3Rpb24gaW5mbGF0ZUdldEhlYWRlcihzdHJtLGhlYWQpe3ZhciBzdGF0ZTtpZighc3RybXx8IXN0cm0uc3RhdGUpcmV0dXJuIFpfU1RSRUFNX0VSUk9SO3N0YXRlPXN0cm0uc3RhdGU7aWYoKHN0YXRlLndyYXAmMik9PT0wKXJldHVybiBaX1NUUkVBTV9FUlJPUjtzdGF0ZS5oZWFkPWhlYWQ7aGVhZC5kb25lPWZhbHNlO3JldHVybiBaX09LfWV4cG9ydHMuaW5mbGF0ZVJlc2V0PWluZmxhdGVSZXNldDtleHBvcnRzLmluZmxhdGVSZXNldDI9aW5mbGF0ZVJlc2V0MjtleHBvcnRzLmluZmxhdGVSZXNldEtlZXA9aW5mbGF0ZVJlc2V0S2VlcDtleHBvcnRzLmluZmxhdGVJbml0PWluZmxhdGVJbml0O2V4cG9ydHMuaW5mbGF0ZUluaXQyPWluZmxhdGVJbml0MjtleHBvcnRzLmluZmxhdGU9CmluZmxhdGU7ZXhwb3J0cy5pbmZsYXRlRW5kPWluZmxhdGVFbmQ7ZXhwb3J0cy5pbmZsYXRlR2V0SGVhZGVyPWluZmxhdGVHZXRIZWFkZXI7ZXhwb3J0cy5pbmZsYXRlSW5mbz0icGFrbyBpbmZsYXRlIChmcm9tIE5vZGVjYSBwcm9qZWN0KSJ9LHsiLi4vdXRpbHMvY29tbW9uIjoyNywiLi9hZGxlcjMyIjoyOSwiLi9jcmMzMiI6MzEsIi4vaW5mZmFzdCI6MzQsIi4vaW5mdHJlZXMiOjM2fV0sMzY6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe3ZhciB1dGlscz1fZGVyZXFfKCIuLi91dGlscy9jb21tb24iKTt2YXIgTUFYQklUUz0xNTt2YXIgRU5PVUdIX0xFTlM9ODUyO3ZhciBFTk9VR0hfRElTVFM9NTkyO3ZhciBDT0RFUz0wO3ZhciBMRU5TPTE7dmFyIERJU1RTPTI7dmFyIGxiYXNlPVszLDQsNSw2LDcsOCw5LDEwLDExLDEzLDE1LDE3LDE5LDIzLDI3LDMxLDM1LDQzLDUxLDU5LDY3LDgzLDk5LDExNSwxMzEsMTYzLDE5NSwyMjcsMjU4LDAsMF07dmFyIGxleHQ9WzE2LAoxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNywxNywxNywxNywxOCwxOCwxOCwxOCwxOSwxOSwxOSwxOSwyMCwyMCwyMCwyMCwyMSwyMSwyMSwyMSwxNiw3Miw3OF07dmFyIGRiYXNlPVsxLDIsMyw0LDUsNyw5LDEzLDE3LDI1LDMzLDQ5LDY1LDk3LDEyOSwxOTMsMjU3LDM4NSw1MTMsNzY5LDEwMjUsMTUzNywyMDQ5LDMwNzMsNDA5Nyw2MTQ1LDgxOTMsMTIyODksMTYzODUsMjQ1NzcsMCwwXTt2YXIgZGV4dD1bMTYsMTYsMTYsMTYsMTcsMTcsMTgsMTgsMTksMTksMjAsMjAsMjEsMjEsMjIsMjIsMjMsMjMsMjQsMjQsMjUsMjUsMjYsMjYsMjcsMjcsMjgsMjgsMjksMjksNjQsNjRdO21vZHVsZS5leHBvcnRzPWZ1bmN0aW9uIGluZmxhdGVfdGFibGUodHlwZSxsZW5zLGxlbnNfaW5kZXgsY29kZXMsdGFibGUsdGFibGVfaW5kZXgsd29yayxvcHRzKXt2YXIgYml0cz1vcHRzLmJpdHM7dmFyIGxlbj0wO3ZhciBzeW09MDt2YXIgbWluPTAsbWF4PTA7dmFyIHJvb3Q9MDt2YXIgY3Vycj0wO3ZhciBkcm9wPQowO3ZhciBsZWZ0PTA7dmFyIHVzZWQ9MDt2YXIgaHVmZj0wO3ZhciBpbmNyO3ZhciBmaWxsO3ZhciBsb3c7dmFyIG1hc2s7dmFyIG5leHQ7dmFyIGJhc2U9bnVsbDt2YXIgYmFzZV9pbmRleD0wO3ZhciBlbmQ7dmFyIGNvdW50PW5ldyB1dGlscy5CdWYxNihNQVhCSVRTKzEpO3ZhciBvZmZzPW5ldyB1dGlscy5CdWYxNihNQVhCSVRTKzEpO3ZhciBleHRyYT1udWxsO3ZhciBleHRyYV9pbmRleD0wO3ZhciBoZXJlX2JpdHMsaGVyZV9vcCxoZXJlX3ZhbDtmb3IobGVuPTA7bGVuPD1NQVhCSVRTO2xlbisrKWNvdW50W2xlbl09MDtmb3Ioc3ltPTA7c3ltPGNvZGVzO3N5bSsrKWNvdW50W2xlbnNbbGVuc19pbmRleCtzeW1dXSsrO3Jvb3Q9Yml0cztmb3IobWF4PU1BWEJJVFM7bWF4Pj0xO21heC0tKWlmKGNvdW50W21heF0hPT0wKWJyZWFrO2lmKHJvb3Q+bWF4KXJvb3Q9bWF4O2lmKG1heD09PTApe3RhYmxlW3RhYmxlX2luZGV4KytdPTE8PDI0fDY0PDwxNnwwO3RhYmxlW3RhYmxlX2luZGV4KytdPQoxPDwyNHw2NDw8MTZ8MDtvcHRzLmJpdHM9MTtyZXR1cm4gMH1mb3IobWluPTE7bWluPG1heDttaW4rKylpZihjb3VudFttaW5dIT09MClicmVhaztpZihyb290PG1pbilyb290PW1pbjtsZWZ0PTE7Zm9yKGxlbj0xO2xlbjw9TUFYQklUUztsZW4rKyl7bGVmdDw8PTE7bGVmdC09Y291bnRbbGVuXTtpZihsZWZ0PDApcmV0dXJuLTF9aWYobGVmdD4wJiYodHlwZT09PUNPREVTfHxtYXghPT0xKSlyZXR1cm4tMTtvZmZzWzFdPTA7Zm9yKGxlbj0xO2xlbjxNQVhCSVRTO2xlbisrKW9mZnNbbGVuKzFdPW9mZnNbbGVuXStjb3VudFtsZW5dO2ZvcihzeW09MDtzeW08Y29kZXM7c3ltKyspaWYobGVuc1tsZW5zX2luZGV4K3N5bV0hPT0wKXdvcmtbb2Zmc1tsZW5zW2xlbnNfaW5kZXgrc3ltXV0rK109c3ltO2lmKHR5cGU9PT1DT0RFUyl7YmFzZT1leHRyYT13b3JrO2VuZD0xOX1lbHNlIGlmKHR5cGU9PT1MRU5TKXtiYXNlPWxiYXNlO2Jhc2VfaW5kZXgtPTI1NztleHRyYT1sZXh0O2V4dHJhX2luZGV4LT0KMjU3O2VuZD0yNTZ9ZWxzZXtiYXNlPWRiYXNlO2V4dHJhPWRleHQ7ZW5kPS0xfWh1ZmY9MDtzeW09MDtsZW49bWluO25leHQ9dGFibGVfaW5kZXg7Y3Vycj1yb290O2Ryb3A9MDtsb3c9LTE7dXNlZD0xPDxyb290O21hc2s9dXNlZC0xO2lmKHR5cGU9PT1MRU5TJiZ1c2VkPkVOT1VHSF9MRU5TfHx0eXBlPT09RElTVFMmJnVzZWQ+RU5PVUdIX0RJU1RTKXJldHVybiAxO3ZhciBpPTA7Zm9yKDs7KXtpKys7aGVyZV9iaXRzPWxlbi1kcm9wO2lmKHdvcmtbc3ltXTxlbmQpe2hlcmVfb3A9MDtoZXJlX3ZhbD13b3JrW3N5bV19ZWxzZSBpZih3b3JrW3N5bV0+ZW5kKXtoZXJlX29wPWV4dHJhW2V4dHJhX2luZGV4K3dvcmtbc3ltXV07aGVyZV92YWw9YmFzZVtiYXNlX2luZGV4K3dvcmtbc3ltXV19ZWxzZXtoZXJlX29wPTMyKzY0O2hlcmVfdmFsPTB9aW5jcj0xPDxsZW4tZHJvcDtmaWxsPTE8PGN1cnI7bWluPWZpbGw7ZG97ZmlsbC09aW5jcjt0YWJsZVtuZXh0KyhodWZmPj5kcm9wKStmaWxsXT0KaGVyZV9iaXRzPDwyNHxoZXJlX29wPDwxNnxoZXJlX3ZhbHwwfXdoaWxlKGZpbGwhPT0wKTtpbmNyPTE8PGxlbi0xO3doaWxlKGh1ZmYmaW5jcilpbmNyPj49MTtpZihpbmNyIT09MCl7aHVmZiY9aW5jci0xO2h1ZmYrPWluY3J9ZWxzZSBodWZmPTA7c3ltKys7aWYoLS1jb3VudFtsZW5dPT09MCl7aWYobGVuPT09bWF4KWJyZWFrO2xlbj1sZW5zW2xlbnNfaW5kZXgrd29ya1tzeW1dXX1pZihsZW4+cm9vdCYmKGh1ZmYmbWFzaykhPT1sb3cpe2lmKGRyb3A9PT0wKWRyb3A9cm9vdDtuZXh0Kz1taW47Y3Vycj1sZW4tZHJvcDtsZWZ0PTE8PGN1cnI7d2hpbGUoY3Vycitkcm9wPG1heCl7bGVmdC09Y291bnRbY3Vycitkcm9wXTtpZihsZWZ0PD0wKWJyZWFrO2N1cnIrKztsZWZ0PDw9MX11c2VkKz0xPDxjdXJyO2lmKHR5cGU9PT1MRU5TJiZ1c2VkPkVOT1VHSF9MRU5TfHx0eXBlPT09RElTVFMmJnVzZWQ+RU5PVUdIX0RJU1RTKXJldHVybiAxO2xvdz1odWZmJm1hc2s7dGFibGVbbG93XT1yb290PDwKMjR8Y3Vycjw8MTZ8bmV4dC10YWJsZV9pbmRleHwwfX1pZihodWZmIT09MCl0YWJsZVtuZXh0K2h1ZmZdPWxlbi1kcm9wPDwyNHw2NDw8MTZ8MDtvcHRzLmJpdHM9cm9vdDtyZXR1cm4gMH19LHsiLi4vdXRpbHMvY29tbW9uIjoyN31dLDM3OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXttb2R1bGUuZXhwb3J0cz17MjoibmVlZCBkaWN0aW9uYXJ5IiwxOiJzdHJlYW0gZW5kIiwwOiIiLCItMSI6ImZpbGUgZXJyb3IiLCItMiI6InN0cmVhbSBlcnJvciIsIi0zIjoiZGF0YSBlcnJvciIsIi00IjoiaW5zdWZmaWNpZW50IG1lbW9yeSIsIi01IjoiYnVmZmVyIGVycm9yIiwiLTYiOiJpbmNvbXBhdGlibGUgdmVyc2lvbiJ9fSx7fV0sMzg6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe3ZhciB1dGlscz1fZGVyZXFfKCIuLi91dGlscy9jb21tb24iKTt2YXIgWl9GSVhFRD00O3ZhciBaX0JJTkFSWT0wO3ZhciBaX1RFWFQ9MTt2YXIgWl9VTktOT1dOPTI7ZnVuY3Rpb24gemVybyhidWYpe3ZhciBsZW49CmJ1Zi5sZW5ndGg7d2hpbGUoLS1sZW4+PTApYnVmW2xlbl09MH12YXIgU1RPUkVEX0JMT0NLPTA7dmFyIFNUQVRJQ19UUkVFUz0xO3ZhciBEWU5fVFJFRVM9Mjt2YXIgTUlOX01BVENIPTM7dmFyIE1BWF9NQVRDSD0yNTg7dmFyIExFTkdUSF9DT0RFUz0yOTt2YXIgTElURVJBTFM9MjU2O3ZhciBMX0NPREVTPUxJVEVSQUxTKzErTEVOR1RIX0NPREVTO3ZhciBEX0NPREVTPTMwO3ZhciBCTF9DT0RFUz0xOTt2YXIgSEVBUF9TSVpFPTIqTF9DT0RFUysxO3ZhciBNQVhfQklUUz0xNTt2YXIgQnVmX3NpemU9MTY7dmFyIE1BWF9CTF9CSVRTPTc7dmFyIEVORF9CTE9DSz0yNTY7dmFyIFJFUF8zXzY9MTY7dmFyIFJFUFpfM18xMD0xNzt2YXIgUkVQWl8xMV8xMzg9MTg7dmFyIGV4dHJhX2xiaXRzPVswLDAsMCwwLDAsMCwwLDAsMSwxLDEsMSwyLDIsMiwyLDMsMywzLDMsNCw0LDQsNCw1LDUsNSw1LDBdO3ZhciBleHRyYV9kYml0cz1bMCwwLDAsMCwxLDEsMiwyLDMsMyw0LDQsNSw1LDYsNiw3LAo3LDgsOCw5LDksMTAsMTAsMTEsMTEsMTIsMTIsMTMsMTNdO3ZhciBleHRyYV9ibGJpdHM9WzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwzLDddO3ZhciBibF9vcmRlcj1bMTYsMTcsMTgsMCw4LDcsOSw2LDEwLDUsMTEsNCwxMiwzLDEzLDIsMTQsMSwxNV07dmFyIERJU1RfQ09ERV9MRU49NTEyO3ZhciBzdGF0aWNfbHRyZWU9bmV3IEFycmF5KChMX0NPREVTKzIpKjIpO3plcm8oc3RhdGljX2x0cmVlKTt2YXIgc3RhdGljX2R0cmVlPW5ldyBBcnJheShEX0NPREVTKjIpO3plcm8oc3RhdGljX2R0cmVlKTt2YXIgX2Rpc3RfY29kZT1uZXcgQXJyYXkoRElTVF9DT0RFX0xFTik7emVybyhfZGlzdF9jb2RlKTt2YXIgX2xlbmd0aF9jb2RlPW5ldyBBcnJheShNQVhfTUFUQ0gtTUlOX01BVENIKzEpO3plcm8oX2xlbmd0aF9jb2RlKTt2YXIgYmFzZV9sZW5ndGg9bmV3IEFycmF5KExFTkdUSF9DT0RFUyk7emVybyhiYXNlX2xlbmd0aCk7dmFyIGJhc2VfZGlzdD1uZXcgQXJyYXkoRF9DT0RFUyk7Cnplcm8oYmFzZV9kaXN0KTt2YXIgU3RhdGljVHJlZURlc2M9ZnVuY3Rpb24oc3RhdGljX3RyZWUsZXh0cmFfYml0cyxleHRyYV9iYXNlLGVsZW1zLG1heF9sZW5ndGgpe3RoaXMuc3RhdGljX3RyZWU9c3RhdGljX3RyZWU7dGhpcy5leHRyYV9iaXRzPWV4dHJhX2JpdHM7dGhpcy5leHRyYV9iYXNlPWV4dHJhX2Jhc2U7dGhpcy5lbGVtcz1lbGVtczt0aGlzLm1heF9sZW5ndGg9bWF4X2xlbmd0aDt0aGlzLmhhc19zdHJlZT1zdGF0aWNfdHJlZSYmc3RhdGljX3RyZWUubGVuZ3RofTt2YXIgc3RhdGljX2xfZGVzYzt2YXIgc3RhdGljX2RfZGVzYzt2YXIgc3RhdGljX2JsX2Rlc2M7dmFyIFRyZWVEZXNjPWZ1bmN0aW9uKGR5bl90cmVlLHN0YXRfZGVzYyl7dGhpcy5keW5fdHJlZT1keW5fdHJlZTt0aGlzLm1heF9jb2RlPTA7dGhpcy5zdGF0X2Rlc2M9c3RhdF9kZXNjfTtmdW5jdGlvbiBkX2NvZGUoZGlzdCl7cmV0dXJuIGRpc3Q8MjU2P19kaXN0X2NvZGVbZGlzdF06X2Rpc3RfY29kZVsyNTYrCihkaXN0Pj4+NyldfWZ1bmN0aW9uIHB1dF9zaG9ydChzLHcpe3MucGVuZGluZ19idWZbcy5wZW5kaW5nKytdPXcmMjU1O3MucGVuZGluZ19idWZbcy5wZW5kaW5nKytdPXc+Pj44JjI1NX1mdW5jdGlvbiBzZW5kX2JpdHMocyx2YWx1ZSxsZW5ndGgpe2lmKHMuYmlfdmFsaWQ+QnVmX3NpemUtbGVuZ3RoKXtzLmJpX2J1Znw9dmFsdWU8PHMuYmlfdmFsaWQmNjU1MzU7cHV0X3Nob3J0KHMscy5iaV9idWYpO3MuYmlfYnVmPXZhbHVlPj5CdWZfc2l6ZS1zLmJpX3ZhbGlkO3MuYmlfdmFsaWQrPWxlbmd0aC1CdWZfc2l6ZX1lbHNle3MuYmlfYnVmfD12YWx1ZTw8cy5iaV92YWxpZCY2NTUzNTtzLmJpX3ZhbGlkKz1sZW5ndGh9fWZ1bmN0aW9uIHNlbmRfY29kZShzLGMsdHJlZSl7c2VuZF9iaXRzKHMsdHJlZVtjKjJdLHRyZWVbYyoyKzFdKX1mdW5jdGlvbiBiaV9yZXZlcnNlKGNvZGUsbGVuKXt2YXIgcmVzPTA7ZG97cmVzfD1jb2RlJjE7Y29kZT4+Pj0xO3Jlczw8PTF9d2hpbGUoLS1sZW4+MCk7CnJldHVybiByZXM+Pj4xfWZ1bmN0aW9uIGJpX2ZsdXNoKHMpe2lmKHMuYmlfdmFsaWQ9PT0xNil7cHV0X3Nob3J0KHMscy5iaV9idWYpO3MuYmlfYnVmPTA7cy5iaV92YWxpZD0wfWVsc2UgaWYocy5iaV92YWxpZD49OCl7cy5wZW5kaW5nX2J1ZltzLnBlbmRpbmcrK109cy5iaV9idWYmMjU1O3MuYmlfYnVmPj49ODtzLmJpX3ZhbGlkLT04fX1mdW5jdGlvbiBnZW5fYml0bGVuKHMsZGVzYyl7dmFyIHRyZWU9ZGVzYy5keW5fdHJlZTt2YXIgbWF4X2NvZGU9ZGVzYy5tYXhfY29kZTt2YXIgc3RyZWU9ZGVzYy5zdGF0X2Rlc2Muc3RhdGljX3RyZWU7dmFyIGhhc19zdHJlZT1kZXNjLnN0YXRfZGVzYy5oYXNfc3RyZWU7dmFyIGV4dHJhPWRlc2Muc3RhdF9kZXNjLmV4dHJhX2JpdHM7dmFyIGJhc2U9ZGVzYy5zdGF0X2Rlc2MuZXh0cmFfYmFzZTt2YXIgbWF4X2xlbmd0aD1kZXNjLnN0YXRfZGVzYy5tYXhfbGVuZ3RoO3ZhciBoO3ZhciBuLG07dmFyIGJpdHM7dmFyIHhiaXRzO3ZhciBmO3ZhciBvdmVyZmxvdz0KMDtmb3IoYml0cz0wO2JpdHM8PU1BWF9CSVRTO2JpdHMrKylzLmJsX2NvdW50W2JpdHNdPTA7dHJlZVtzLmhlYXBbcy5oZWFwX21heF0qMisxXT0wO2ZvcihoPXMuaGVhcF9tYXgrMTtoPEhFQVBfU0laRTtoKyspe249cy5oZWFwW2hdO2JpdHM9dHJlZVt0cmVlW24qMisxXSoyKzFdKzE7aWYoYml0cz5tYXhfbGVuZ3RoKXtiaXRzPW1heF9sZW5ndGg7b3ZlcmZsb3crK310cmVlW24qMisxXT1iaXRzO2lmKG4+bWF4X2NvZGUpY29udGludWU7cy5ibF9jb3VudFtiaXRzXSsrO3hiaXRzPTA7aWYobj49YmFzZSl4Yml0cz1leHRyYVtuLWJhc2VdO2Y9dHJlZVtuKjJdO3Mub3B0X2xlbis9ZiooYml0cyt4Yml0cyk7aWYoaGFzX3N0cmVlKXMuc3RhdGljX2xlbis9Ziooc3RyZWVbbioyKzFdK3hiaXRzKX1pZihvdmVyZmxvdz09PTApcmV0dXJuO2Rve2JpdHM9bWF4X2xlbmd0aC0xO3doaWxlKHMuYmxfY291bnRbYml0c109PT0wKWJpdHMtLTtzLmJsX2NvdW50W2JpdHNdLS07cy5ibF9jb3VudFtiaXRzKwoxXSs9MjtzLmJsX2NvdW50W21heF9sZW5ndGhdLS07b3ZlcmZsb3ctPTJ9d2hpbGUob3ZlcmZsb3c+MCk7Zm9yKGJpdHM9bWF4X2xlbmd0aDtiaXRzIT09MDtiaXRzLS0pe249cy5ibF9jb3VudFtiaXRzXTt3aGlsZShuIT09MCl7bT1zLmhlYXBbLS1oXTtpZihtPm1heF9jb2RlKWNvbnRpbnVlO2lmKHRyZWVbbSoyKzFdIT09Yml0cyl7cy5vcHRfbGVuKz0oYml0cy10cmVlW20qMisxXSkqdHJlZVttKjJdO3RyZWVbbSoyKzFdPWJpdHN9bi0tfX19ZnVuY3Rpb24gZ2VuX2NvZGVzKHRyZWUsbWF4X2NvZGUsYmxfY291bnQpe3ZhciBuZXh0X2NvZGU9bmV3IEFycmF5KE1BWF9CSVRTKzEpO3ZhciBjb2RlPTA7dmFyIGJpdHM7dmFyIG47Zm9yKGJpdHM9MTtiaXRzPD1NQVhfQklUUztiaXRzKyspbmV4dF9jb2RlW2JpdHNdPWNvZGU9Y29kZStibF9jb3VudFtiaXRzLTFdPDwxO2ZvcihuPTA7bjw9bWF4X2NvZGU7bisrKXt2YXIgbGVuPXRyZWVbbioyKzFdO2lmKGxlbj09PTApY29udGludWU7CnRyZWVbbioyXT1iaV9yZXZlcnNlKG5leHRfY29kZVtsZW5dKyssbGVuKX19ZnVuY3Rpb24gdHJfc3RhdGljX2luaXQoKXt2YXIgbjt2YXIgYml0czt2YXIgbGVuZ3RoO3ZhciBjb2RlO3ZhciBkaXN0O3ZhciBibF9jb3VudD1uZXcgQXJyYXkoTUFYX0JJVFMrMSk7bGVuZ3RoPTA7Zm9yKGNvZGU9MDtjb2RlPExFTkdUSF9DT0RFUy0xO2NvZGUrKyl7YmFzZV9sZW5ndGhbY29kZV09bGVuZ3RoO2ZvcihuPTA7bjwxPDxleHRyYV9sYml0c1tjb2RlXTtuKyspX2xlbmd0aF9jb2RlW2xlbmd0aCsrXT1jb2RlfV9sZW5ndGhfY29kZVtsZW5ndGgtMV09Y29kZTtkaXN0PTA7Zm9yKGNvZGU9MDtjb2RlPDE2O2NvZGUrKyl7YmFzZV9kaXN0W2NvZGVdPWRpc3Q7Zm9yKG49MDtuPDE8PGV4dHJhX2RiaXRzW2NvZGVdO24rKylfZGlzdF9jb2RlW2Rpc3QrK109Y29kZX1kaXN0Pj49Nztmb3IoO2NvZGU8RF9DT0RFUztjb2RlKyspe2Jhc2VfZGlzdFtjb2RlXT1kaXN0PDw3O2ZvcihuPTA7bjwxPDxleHRyYV9kYml0c1tjb2RlXS0KNztuKyspX2Rpc3RfY29kZVsyNTYrZGlzdCsrXT1jb2RlfWZvcihiaXRzPTA7Yml0czw9TUFYX0JJVFM7Yml0cysrKWJsX2NvdW50W2JpdHNdPTA7bj0wO3doaWxlKG48PTE0Myl7c3RhdGljX2x0cmVlW24qMisxXT04O24rKztibF9jb3VudFs4XSsrfXdoaWxlKG48PTI1NSl7c3RhdGljX2x0cmVlW24qMisxXT05O24rKztibF9jb3VudFs5XSsrfXdoaWxlKG48PTI3OSl7c3RhdGljX2x0cmVlW24qMisxXT03O24rKztibF9jb3VudFs3XSsrfXdoaWxlKG48PTI4Nyl7c3RhdGljX2x0cmVlW24qMisxXT04O24rKztibF9jb3VudFs4XSsrfWdlbl9jb2RlcyhzdGF0aWNfbHRyZWUsTF9DT0RFUysxLGJsX2NvdW50KTtmb3Iobj0wO248RF9DT0RFUztuKyspe3N0YXRpY19kdHJlZVtuKjIrMV09NTtzdGF0aWNfZHRyZWVbbioyXT1iaV9yZXZlcnNlKG4sNSl9c3RhdGljX2xfZGVzYz1uZXcgU3RhdGljVHJlZURlc2Moc3RhdGljX2x0cmVlLGV4dHJhX2xiaXRzLExJVEVSQUxTKzEsTF9DT0RFUywKTUFYX0JJVFMpO3N0YXRpY19kX2Rlc2M9bmV3IFN0YXRpY1RyZWVEZXNjKHN0YXRpY19kdHJlZSxleHRyYV9kYml0cywwLERfQ09ERVMsTUFYX0JJVFMpO3N0YXRpY19ibF9kZXNjPW5ldyBTdGF0aWNUcmVlRGVzYyhuZXcgQXJyYXkoMCksZXh0cmFfYmxiaXRzLDAsQkxfQ09ERVMsTUFYX0JMX0JJVFMpfWZ1bmN0aW9uIGluaXRfYmxvY2socyl7dmFyIG47Zm9yKG49MDtuPExfQ09ERVM7bisrKXMuZHluX2x0cmVlW24qMl09MDtmb3Iobj0wO248RF9DT0RFUztuKyspcy5keW5fZHRyZWVbbioyXT0wO2ZvcihuPTA7bjxCTF9DT0RFUztuKyspcy5ibF90cmVlW24qMl09MDtzLmR5bl9sdHJlZVtFTkRfQkxPQ0sqMl09MTtzLm9wdF9sZW49cy5zdGF0aWNfbGVuPTA7cy5sYXN0X2xpdD1zLm1hdGNoZXM9MH1mdW5jdGlvbiBiaV93aW5kdXAocyl7aWYocy5iaV92YWxpZD44KXB1dF9zaG9ydChzLHMuYmlfYnVmKTtlbHNlIGlmKHMuYmlfdmFsaWQ+MClzLnBlbmRpbmdfYnVmW3MucGVuZGluZysrXT0Kcy5iaV9idWY7cy5iaV9idWY9MDtzLmJpX3ZhbGlkPTB9ZnVuY3Rpb24gY29weV9ibG9jayhzLGJ1ZixsZW4saGVhZGVyKXtiaV93aW5kdXAocyk7aWYoaGVhZGVyKXtwdXRfc2hvcnQocyxsZW4pO3B1dF9zaG9ydChzLH5sZW4pfXV0aWxzLmFycmF5U2V0KHMucGVuZGluZ19idWYscy53aW5kb3csYnVmLGxlbixzLnBlbmRpbmcpO3MucGVuZGluZys9bGVufWZ1bmN0aW9uIHNtYWxsZXIodHJlZSxuLG0sZGVwdGgpe3ZhciBfbjI9bioyO3ZhciBfbTI9bSoyO3JldHVybiB0cmVlW19uMl08dHJlZVtfbTJdfHx0cmVlW19uMl09PT10cmVlW19tMl0mJmRlcHRoW25dPD1kZXB0aFttXX1mdW5jdGlvbiBwcWRvd25oZWFwKHMsdHJlZSxrKXt2YXIgdj1zLmhlYXBba107dmFyIGo9azw8MTt3aGlsZShqPD1zLmhlYXBfbGVuKXtpZihqPHMuaGVhcF9sZW4mJnNtYWxsZXIodHJlZSxzLmhlYXBbaisxXSxzLmhlYXBbal0scy5kZXB0aCkpaisrO2lmKHNtYWxsZXIodHJlZSx2LHMuaGVhcFtqXSxzLmRlcHRoKSlicmVhazsKcy5oZWFwW2tdPXMuaGVhcFtqXTtrPWo7ajw8PTF9cy5oZWFwW2tdPXZ9ZnVuY3Rpb24gY29tcHJlc3NfYmxvY2socyxsdHJlZSxkdHJlZSl7dmFyIGRpc3Q7dmFyIGxjO3ZhciBseD0wO3ZhciBjb2RlO3ZhciBleHRyYTtpZihzLmxhc3RfbGl0IT09MCl7ZG97ZGlzdD1zLnBlbmRpbmdfYnVmW3MuZF9idWYrbHgqMl08PDh8cy5wZW5kaW5nX2J1ZltzLmRfYnVmK2x4KjIrMV07bGM9cy5wZW5kaW5nX2J1ZltzLmxfYnVmK2x4XTtseCsrO2lmKGRpc3Q9PT0wKXNlbmRfY29kZShzLGxjLGx0cmVlKTtlbHNle2NvZGU9X2xlbmd0aF9jb2RlW2xjXTtzZW5kX2NvZGUocyxjb2RlK0xJVEVSQUxTKzEsbHRyZWUpO2V4dHJhPWV4dHJhX2xiaXRzW2NvZGVdO2lmKGV4dHJhIT09MCl7bGMtPWJhc2VfbGVuZ3RoW2NvZGVdO3NlbmRfYml0cyhzLGxjLGV4dHJhKX1kaXN0LS07Y29kZT1kX2NvZGUoZGlzdCk7c2VuZF9jb2RlKHMsY29kZSxkdHJlZSk7ZXh0cmE9ZXh0cmFfZGJpdHNbY29kZV07aWYoZXh0cmEhPT0KMCl7ZGlzdC09YmFzZV9kaXN0W2NvZGVdO3NlbmRfYml0cyhzLGRpc3QsZXh0cmEpfX19d2hpbGUobHg8cy5sYXN0X2xpdCl9c2VuZF9jb2RlKHMsRU5EX0JMT0NLLGx0cmVlKX1mdW5jdGlvbiBidWlsZF90cmVlKHMsZGVzYyl7dmFyIHRyZWU9ZGVzYy5keW5fdHJlZTt2YXIgc3RyZWU9ZGVzYy5zdGF0X2Rlc2Muc3RhdGljX3RyZWU7dmFyIGhhc19zdHJlZT1kZXNjLnN0YXRfZGVzYy5oYXNfc3RyZWU7dmFyIGVsZW1zPWRlc2Muc3RhdF9kZXNjLmVsZW1zO3ZhciBuLG07dmFyIG1heF9jb2RlPS0xO3ZhciBub2RlO3MuaGVhcF9sZW49MDtzLmhlYXBfbWF4PUhFQVBfU0laRTtmb3Iobj0wO248ZWxlbXM7bisrKWlmKHRyZWVbbioyXSE9PTApe3MuaGVhcFsrK3MuaGVhcF9sZW5dPW1heF9jb2RlPW47cy5kZXB0aFtuXT0wfWVsc2UgdHJlZVtuKjIrMV09MDt3aGlsZShzLmhlYXBfbGVuPDIpe25vZGU9cy5oZWFwWysrcy5oZWFwX2xlbl09bWF4X2NvZGU8Mj8rK21heF9jb2RlOjA7dHJlZVtub2RlKgoyXT0xO3MuZGVwdGhbbm9kZV09MDtzLm9wdF9sZW4tLTtpZihoYXNfc3RyZWUpcy5zdGF0aWNfbGVuLT1zdHJlZVtub2RlKjIrMV19ZGVzYy5tYXhfY29kZT1tYXhfY29kZTtmb3Iobj1zLmhlYXBfbGVuPj4xO24+PTE7bi0tKXBxZG93bmhlYXAocyx0cmVlLG4pO25vZGU9ZWxlbXM7ZG97bj1zLmhlYXBbMV07cy5oZWFwWzFdPXMuaGVhcFtzLmhlYXBfbGVuLS1dO3BxZG93bmhlYXAocyx0cmVlLDEpO209cy5oZWFwWzFdO3MuaGVhcFstLXMuaGVhcF9tYXhdPW47cy5oZWFwWy0tcy5oZWFwX21heF09bTt0cmVlW25vZGUqMl09dHJlZVtuKjJdK3RyZWVbbSoyXTtzLmRlcHRoW25vZGVdPShzLmRlcHRoW25dPj1zLmRlcHRoW21dP3MuZGVwdGhbbl06cy5kZXB0aFttXSkrMTt0cmVlW24qMisxXT10cmVlW20qMisxXT1ub2RlO3MuaGVhcFsxXT1ub2RlKys7cHFkb3duaGVhcChzLHRyZWUsMSl9d2hpbGUocy5oZWFwX2xlbj49Mik7cy5oZWFwWy0tcy5oZWFwX21heF09cy5oZWFwWzFdO2dlbl9iaXRsZW4ocywKZGVzYyk7Z2VuX2NvZGVzKHRyZWUsbWF4X2NvZGUscy5ibF9jb3VudCl9ZnVuY3Rpb24gc2Nhbl90cmVlKHMsdHJlZSxtYXhfY29kZSl7dmFyIG47dmFyIHByZXZsZW49LTE7dmFyIGN1cmxlbjt2YXIgbmV4dGxlbj10cmVlWzAqMisxXTt2YXIgY291bnQ9MDt2YXIgbWF4X2NvdW50PTc7dmFyIG1pbl9jb3VudD00O2lmKG5leHRsZW49PT0wKXttYXhfY291bnQ9MTM4O21pbl9jb3VudD0zfXRyZWVbKG1heF9jb2RlKzEpKjIrMV09NjU1MzU7Zm9yKG49MDtuPD1tYXhfY29kZTtuKyspe2N1cmxlbj1uZXh0bGVuO25leHRsZW49dHJlZVsobisxKSoyKzFdO2lmKCsrY291bnQ8bWF4X2NvdW50JiZjdXJsZW49PT1uZXh0bGVuKWNvbnRpbnVlO2Vsc2UgaWYoY291bnQ8bWluX2NvdW50KXMuYmxfdHJlZVtjdXJsZW4qMl0rPWNvdW50O2Vsc2UgaWYoY3VybGVuIT09MCl7aWYoY3VybGVuIT09cHJldmxlbilzLmJsX3RyZWVbY3VybGVuKjJdKys7cy5ibF90cmVlW1JFUF8zXzYqMl0rK31lbHNlIGlmKGNvdW50PD0KMTApcy5ibF90cmVlW1JFUFpfM18xMCoyXSsrO2Vsc2Ugcy5ibF90cmVlW1JFUFpfMTFfMTM4KjJdKys7Y291bnQ9MDtwcmV2bGVuPWN1cmxlbjtpZihuZXh0bGVuPT09MCl7bWF4X2NvdW50PTEzODttaW5fY291bnQ9M31lbHNlIGlmKGN1cmxlbj09PW5leHRsZW4pe21heF9jb3VudD02O21pbl9jb3VudD0zfWVsc2V7bWF4X2NvdW50PTc7bWluX2NvdW50PTR9fX1mdW5jdGlvbiBzZW5kX3RyZWUocyx0cmVlLG1heF9jb2RlKXt2YXIgbjt2YXIgcHJldmxlbj0tMTt2YXIgY3VybGVuO3ZhciBuZXh0bGVuPXRyZWVbMCoyKzFdO3ZhciBjb3VudD0wO3ZhciBtYXhfY291bnQ9Nzt2YXIgbWluX2NvdW50PTQ7aWYobmV4dGxlbj09PTApe21heF9jb3VudD0xMzg7bWluX2NvdW50PTN9Zm9yKG49MDtuPD1tYXhfY29kZTtuKyspe2N1cmxlbj1uZXh0bGVuO25leHRsZW49dHJlZVsobisxKSoyKzFdO2lmKCsrY291bnQ8bWF4X2NvdW50JiZjdXJsZW49PT1uZXh0bGVuKWNvbnRpbnVlO2Vsc2UgaWYoY291bnQ8Cm1pbl9jb3VudCl7ZG8gc2VuZF9jb2RlKHMsY3VybGVuLHMuYmxfdHJlZSk7d2hpbGUoLS1jb3VudCE9PTApfWVsc2UgaWYoY3VybGVuIT09MCl7aWYoY3VybGVuIT09cHJldmxlbil7c2VuZF9jb2RlKHMsY3VybGVuLHMuYmxfdHJlZSk7Y291bnQtLX1zZW5kX2NvZGUocyxSRVBfM182LHMuYmxfdHJlZSk7c2VuZF9iaXRzKHMsY291bnQtMywyKX1lbHNlIGlmKGNvdW50PD0xMCl7c2VuZF9jb2RlKHMsUkVQWl8zXzEwLHMuYmxfdHJlZSk7c2VuZF9iaXRzKHMsY291bnQtMywzKX1lbHNle3NlbmRfY29kZShzLFJFUFpfMTFfMTM4LHMuYmxfdHJlZSk7c2VuZF9iaXRzKHMsY291bnQtMTEsNyl9Y291bnQ9MDtwcmV2bGVuPWN1cmxlbjtpZihuZXh0bGVuPT09MCl7bWF4X2NvdW50PTEzODttaW5fY291bnQ9M31lbHNlIGlmKGN1cmxlbj09PW5leHRsZW4pe21heF9jb3VudD02O21pbl9jb3VudD0zfWVsc2V7bWF4X2NvdW50PTc7bWluX2NvdW50PTR9fX1mdW5jdGlvbiBidWlsZF9ibF90cmVlKHMpe3ZhciBtYXhfYmxpbmRleDsKc2Nhbl90cmVlKHMscy5keW5fbHRyZWUscy5sX2Rlc2MubWF4X2NvZGUpO3NjYW5fdHJlZShzLHMuZHluX2R0cmVlLHMuZF9kZXNjLm1heF9jb2RlKTtidWlsZF90cmVlKHMscy5ibF9kZXNjKTtmb3IobWF4X2JsaW5kZXg9QkxfQ09ERVMtMTttYXhfYmxpbmRleD49MzttYXhfYmxpbmRleC0tKWlmKHMuYmxfdHJlZVtibF9vcmRlclttYXhfYmxpbmRleF0qMisxXSE9PTApYnJlYWs7cy5vcHRfbGVuKz0zKihtYXhfYmxpbmRleCsxKSs1KzUrNDtyZXR1cm4gbWF4X2JsaW5kZXh9ZnVuY3Rpb24gc2VuZF9hbGxfdHJlZXMocyxsY29kZXMsZGNvZGVzLGJsY29kZXMpe3ZhciByYW5rO3NlbmRfYml0cyhzLGxjb2Rlcy0yNTcsNSk7c2VuZF9iaXRzKHMsZGNvZGVzLTEsNSk7c2VuZF9iaXRzKHMsYmxjb2Rlcy00LDQpO2ZvcihyYW5rPTA7cmFuazxibGNvZGVzO3JhbmsrKylzZW5kX2JpdHMocyxzLmJsX3RyZWVbYmxfb3JkZXJbcmFua10qMisxXSwzKTtzZW5kX3RyZWUocyxzLmR5bl9sdHJlZSwKbGNvZGVzLTEpO3NlbmRfdHJlZShzLHMuZHluX2R0cmVlLGRjb2Rlcy0xKX1mdW5jdGlvbiBkZXRlY3RfZGF0YV90eXBlKHMpe3ZhciBibGFja19tYXNrPTQwOTM2MjQ0NDc7dmFyIG47Zm9yKG49MDtuPD0zMTtuKyssYmxhY2tfbWFzaz4+Pj0xKWlmKGJsYWNrX21hc2smMSYmcy5keW5fbHRyZWVbbioyXSE9PTApcmV0dXJuIFpfQklOQVJZO2lmKHMuZHluX2x0cmVlWzkqMl0hPT0wfHxzLmR5bl9sdHJlZVsxMCoyXSE9PTB8fHMuZHluX2x0cmVlWzEzKjJdIT09MClyZXR1cm4gWl9URVhUO2ZvcihuPTMyO248TElURVJBTFM7bisrKWlmKHMuZHluX2x0cmVlW24qMl0hPT0wKXJldHVybiBaX1RFWFQ7cmV0dXJuIFpfQklOQVJZfXZhciBzdGF0aWNfaW5pdF9kb25lPWZhbHNlO2Z1bmN0aW9uIF90cl9pbml0KHMpe2lmKCFzdGF0aWNfaW5pdF9kb25lKXt0cl9zdGF0aWNfaW5pdCgpO3N0YXRpY19pbml0X2RvbmU9dHJ1ZX1zLmxfZGVzYz1uZXcgVHJlZURlc2Mocy5keW5fbHRyZWUsc3RhdGljX2xfZGVzYyk7CnMuZF9kZXNjPW5ldyBUcmVlRGVzYyhzLmR5bl9kdHJlZSxzdGF0aWNfZF9kZXNjKTtzLmJsX2Rlc2M9bmV3IFRyZWVEZXNjKHMuYmxfdHJlZSxzdGF0aWNfYmxfZGVzYyk7cy5iaV9idWY9MDtzLmJpX3ZhbGlkPTA7aW5pdF9ibG9jayhzKX1mdW5jdGlvbiBfdHJfc3RvcmVkX2Jsb2NrKHMsYnVmLHN0b3JlZF9sZW4sbGFzdCl7c2VuZF9iaXRzKHMsKFNUT1JFRF9CTE9DSzw8MSkrKGxhc3Q/MTowKSwzKTtjb3B5X2Jsb2NrKHMsYnVmLHN0b3JlZF9sZW4sdHJ1ZSl9ZnVuY3Rpb24gX3RyX2FsaWduKHMpe3NlbmRfYml0cyhzLFNUQVRJQ19UUkVFUzw8MSwzKTtzZW5kX2NvZGUocyxFTkRfQkxPQ0ssc3RhdGljX2x0cmVlKTtiaV9mbHVzaChzKX1mdW5jdGlvbiBfdHJfZmx1c2hfYmxvY2socyxidWYsc3RvcmVkX2xlbixsYXN0KXt2YXIgb3B0X2xlbmIsc3RhdGljX2xlbmI7dmFyIG1heF9ibGluZGV4PTA7aWYocy5sZXZlbD4wKXtpZihzLnN0cm0uZGF0YV90eXBlPT09Wl9VTktOT1dOKXMuc3RybS5kYXRhX3R5cGU9CmRldGVjdF9kYXRhX3R5cGUocyk7YnVpbGRfdHJlZShzLHMubF9kZXNjKTtidWlsZF90cmVlKHMscy5kX2Rlc2MpO21heF9ibGluZGV4PWJ1aWxkX2JsX3RyZWUocyk7b3B0X2xlbmI9cy5vcHRfbGVuKzMrNz4+PjM7c3RhdGljX2xlbmI9cy5zdGF0aWNfbGVuKzMrNz4+PjM7aWYoc3RhdGljX2xlbmI8PW9wdF9sZW5iKW9wdF9sZW5iPXN0YXRpY19sZW5ifWVsc2Ugb3B0X2xlbmI9c3RhdGljX2xlbmI9c3RvcmVkX2xlbis1O2lmKHN0b3JlZF9sZW4rNDw9b3B0X2xlbmImJmJ1ZiE9PS0xKV90cl9zdG9yZWRfYmxvY2socyxidWYsc3RvcmVkX2xlbixsYXN0KTtlbHNlIGlmKHMuc3RyYXRlZ3k9PT1aX0ZJWEVEfHxzdGF0aWNfbGVuYj09PW9wdF9sZW5iKXtzZW5kX2JpdHMocywoU1RBVElDX1RSRUVTPDwxKSsobGFzdD8xOjApLDMpO2NvbXByZXNzX2Jsb2NrKHMsc3RhdGljX2x0cmVlLHN0YXRpY19kdHJlZSl9ZWxzZXtzZW5kX2JpdHMocywoRFlOX1RSRUVTPDwxKSsobGFzdD8xOjApLAozKTtzZW5kX2FsbF90cmVlcyhzLHMubF9kZXNjLm1heF9jb2RlKzEscy5kX2Rlc2MubWF4X2NvZGUrMSxtYXhfYmxpbmRleCsxKTtjb21wcmVzc19ibG9jayhzLHMuZHluX2x0cmVlLHMuZHluX2R0cmVlKX1pbml0X2Jsb2NrKHMpO2lmKGxhc3QpYmlfd2luZHVwKHMpfWZ1bmN0aW9uIF90cl90YWxseShzLGRpc3QsbGMpe3MucGVuZGluZ19idWZbcy5kX2J1ZitzLmxhc3RfbGl0KjJdPWRpc3Q+Pj44JjI1NTtzLnBlbmRpbmdfYnVmW3MuZF9idWYrcy5sYXN0X2xpdCoyKzFdPWRpc3QmMjU1O3MucGVuZGluZ19idWZbcy5sX2J1ZitzLmxhc3RfbGl0XT1sYyYyNTU7cy5sYXN0X2xpdCsrO2lmKGRpc3Q9PT0wKXMuZHluX2x0cmVlW2xjKjJdKys7ZWxzZXtzLm1hdGNoZXMrKztkaXN0LS07cy5keW5fbHRyZWVbKF9sZW5ndGhfY29kZVtsY10rTElURVJBTFMrMSkqMl0rKztzLmR5bl9kdHJlZVtkX2NvZGUoZGlzdCkqMl0rK31yZXR1cm4gcy5sYXN0X2xpdD09PXMubGl0X2J1ZnNpemUtMX0KZXhwb3J0cy5fdHJfaW5pdD1fdHJfaW5pdDtleHBvcnRzLl90cl9zdG9yZWRfYmxvY2s9X3RyX3N0b3JlZF9ibG9jaztleHBvcnRzLl90cl9mbHVzaF9ibG9jaz1fdHJfZmx1c2hfYmxvY2s7ZXhwb3J0cy5fdHJfdGFsbHk9X3RyX3RhbGx5O2V4cG9ydHMuX3RyX2FsaWduPV90cl9hbGlnbn0seyIuLi91dGlscy9jb21tb24iOjI3fV0sMzk6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe2Z1bmN0aW9uIFpTdHJlYW0oKXt0aGlzLmlucHV0PW51bGw7dGhpcy5uZXh0X2luPTA7dGhpcy5hdmFpbF9pbj0wO3RoaXMudG90YWxfaW49MDt0aGlzLm91dHB1dD1udWxsO3RoaXMubmV4dF9vdXQ9MDt0aGlzLmF2YWlsX291dD0wO3RoaXMudG90YWxfb3V0PTA7dGhpcy5tc2c9IiI7dGhpcy5zdGF0ZT1udWxsO3RoaXMuZGF0YV90eXBlPTI7dGhpcy5hZGxlcj0wfW1vZHVsZS5leHBvcnRzPVpTdHJlYW19LHt9XX0se30sWzldKSg5KX0pOwo=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/ZeroClipboard.swf</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/js/_include.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[dmFyIGVuY29kZVVSTCxzaG93X2FuaW1hdGlvbixoaWRlX2FuaW1hdGlvbixhcHBseSxhcHBseV9ub25lLGFwcGx5X2ltZyxhcHBseV9hbnksYXBwbHlfdmlkZW8sYXBwbHlfbGluayxhcHBseV9maWxlX3JlbmFtZSxhcHBseV9maWxlX2R1cGxpY2F0ZSxhcHBseV9mb2xkZXJfcmVuYW1lOyFmdW5jdGlvbihlLGEsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oYSl7c2hvd19hbmltYXRpb24oKTt2YXIgdD1uZXcgSW1hZ2U7dC5zcmM9YSxlKHQpLm9uKCJsb2FkIixmdW5jdGlvbigpe2hpZGVfYW5pbWF0aW9uKCl9KX1mdW5jdGlvbiBpKCl7ZSgiI3RleHRmaWxlX2NyZWF0ZV9hcmVhIikucGFyZW50KCkucGFyZW50KCkucmVtb3ZlKCk7dmFyIGE9ZSgiI2xhbmdfZmlsZW5hbWUiKS52YWwoKSsnOiA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImNyZWF0ZV90ZXh0X2ZpbGVfbmFtZSIgc3R5bGU9Im1pbi1oZWlnaHQ6MzBweCI+PGJyPjxocj48dGV4dGFyZWEgaWQ9InRleHRmaWxlX2NyZWF0ZV9hcmVhIiBzdHlsZT0id2lkdGg6MTAwJTtoZWlnaHQ6MTUwcHg7Ij48L3RleHRhcmVhPic7Ym9vdGJveC5kaWFsb2coYSxbe2xhYmVsOmUoIiNjYW5jZWwiKS52YWwoKSwiY2xhc3MiOiJidG4ifSx7bGFiZWw6ZSgiI29rIikudmFsKCksImNsYXNzIjoiYnRuLWludmVyc2UiLGNhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGE9ZSgiI2NyZWF0ZV90ZXh0X2ZpbGVfbmFtZSIpLnZhbCgpLHQ9ZSgiI3RleHRmaWxlX2NyZWF0ZV9hcmVhIikudmFsKCk7aWYobnVsbCE9PWEpe2E9eShhKTt2YXIgbj1lKCIjc3ViX2ZvbGRlciIpLnZhbCgpK2UoIiNmbGRyX3ZhbHVlIikudmFsKCk7ZS5hamF4KHt0eXBlOiJQT1NUIix1cmw6ImV4ZWN1dGUucGhwP2FjdGlvbj1jcmVhdGVfZmlsZSIsZGF0YTp7cGF0aDpuLG5hbWU6YSxuZXdfY29udGVudDp0fX0pLmRvbmUoZnVuY3Rpb24oYSl7IiIhPWEmJmJvb3Rib3guYWxlcnQoYSxmdW5jdGlvbigpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXt3aW5kb3cubG9jYXRpb24uaHJlZj1lKCIjcmVmcmVzaCIpLmF0dHIoImhyZWYiKSsiJiIrKG5ldyBEYXRlKS5nZXRUaW1lKCl9LDUwMCl9KX0pfX19XSx7aGVhZGVyOmUoIiNsYW5nX25ld19maWxlIikudmFsKCl9KX1mdW5jdGlvbiByKGEpe2UoIiN0ZXh0ZmlsZV9lZGl0X2FyZWEiKS5wYXJlbnQoKS5wYXJlbnQoKS5yZW1vdmUoKTt2YXIgdD1hLmZpbmQoIi5yZW5hbWUtZmlsZS1wYXRocyIpLmF0dHIoImRhdGEtcGF0aCIpO2UuYWpheCh7dHlwZToiUE9TVCIsdXJsOiJhamF4X2NhbGxzLnBocD9hY3Rpb249Z2V0X2ZpbGUmc3ViX2FjdGlvbj1lZGl0JnByZXZpZXdfbW9kZT10ZXh0IixkYXRhOntwYXRoOnR9fSkuZG9uZShmdW5jdGlvbihuKXtib290Ym94LmRpYWxvZyhuLFt7bGFiZWw6ZSgiI2NhbmNlbCIpLnZhbCgpLCJjbGFzcyI6ImJ0biJ9LHtsYWJlbDplKCIjb2siKS52YWwoKSwiY2xhc3MiOiJidG4taW52ZXJzZSIsY2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgYT1lKCIjdGV4dGZpbGVfZWRpdF9hcmVhIikudmFsKCk7ZS5hamF4KHt0eXBlOiJQT1NUIix1cmw6ImV4ZWN1dGUucGhwP2FjdGlvbj1zYXZlX3RleHRfZmlsZSIsZGF0YTp7cGF0aDp0LG5ld19jb250ZW50OmF9fSkuZG9uZShmdW5jdGlvbihlKXsiIiE9ZSYmYm9vdGJveC5hbGVydChlKX0pfX1dLHtoZWFkZXI6YS5maW5kKCIubmFtZV9kb3dubG9hZCIpLnZhbCgpfSl9KX1mdW5jdGlvbiBvKCl7ZS5hamF4KHt0eXBlOiJQT1NUIix1cmw6ImFqYXhfY2FsbHMucGhwP2FjdGlvbj1nZXRfbGFuZyIsZGF0YTp7fX0pLmRvbmUoZnVuY3Rpb24oYSl7Ym9vdGJveC5kaWFsb2coYSxbe2xhYmVsOmUoIiNjYW5jZWwiKS52YWwoKSwiY2xhc3MiOiJidG4ifSx7bGFiZWw6ZSgiI29rIikudmFsKCksImNsYXNzIjoiYnRuLWludmVyc2UiLGNhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGE9ZSgiI25ld19sYW5nX3NlbGVjdCIpLnZhbCgpO2UuYWpheCh7dHlwZToiUE9TVCIsdXJsOiJhamF4X2NhbGxzLnBocD9hY3Rpb249Y2hhbmdlX2xhbmciLGRhdGE6e2Nob29zZW5fbGFuZzphfX0pLmRvbmUoZnVuY3Rpb24oYSl7IiIhPWE/Ym9vdGJveC5hbGVydChhKTpzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7d2luZG93LmxvY2F0aW9uLmhyZWY9ZSgiI3JlZnJlc2giKS5hdHRyKCJocmVmIikrIiYiKyhuZXcgRGF0ZSkuZ2V0VGltZSgpfSw1MDApfSl9fV0se2hlYWRlcjplKCIjbGFuZ19sYW5nX2NoYW5nZSIpLnZhbCgpfSl9KX1mdW5jdGlvbiBsKGEpe2UoIiNmaWxlc19wZXJtaXNzaW9uX3N0YXJ0IikucGFyZW50KCkucGFyZW50KCkucmVtb3ZlKCk7dmFyIHQ7dD1hLmZpbmQoIi5yZW5hbWUtZmlsZS1wYXRocyIpLmF0dHIoYS5oYXNDbGFzcygiZGlyZWN0b3J5Iik/ImRhdGEtcGF0aCI6ImRhdGEtcGF0aCIpLGUuYWpheCh7dHlwZToiUE9TVCIsdXJsOiJhamF4X2NhbGxzLnBocD9hY3Rpb249Y2htb2QiLGRhdGE6e3BhdGg6dH19KS5kb25lKGZ1bmN0aW9uKGEpe2Jvb3Rib3guZGlhbG9nKGEsW3tsYWJlbDplKCIjY2FuY2VsIikudmFsKCksImNsYXNzIjoiYnRuIn0se2xhYmVsOmUoIiNvayIpLnZhbCgpLCJjbGFzcyI6ImJ0bi1pbnZlcnNlIixjYWxsYmFjazpmdW5jdGlvbigpe3ZhciBhPWUoIiNjaG1vZF9mb3JtICNjaG1vZF92YWx1ZSIpLnZhbCgpO2lmKCIiIT1hJiYidW5kZWZpbmVkIiE9dHlwZW9mIGEpe3ZhciBuPWUoIiNjaG1vZF9mb3JtIGlucHV0W25hbWU9YXBwbHlfcmVjdXJzaXZlXTpjaGVja2VkIikudmFsKCk7KCIiPT1ufHwidW5kZWZpbmVkIj09dHlwZW9mIG4pJiYobj0ibm9uZSIpLGUuYWpheCh7dHlwZToiUE9TVCIsdXJsOiJleGVjdXRlLnBocD9hY3Rpb249Y2htb2QiLGRhdGE6e3BhdGg6dCxuZXdfbW9kZTphLGlzX3JlY3Vyc2l2ZTpufX0pLmRvbmUoZnVuY3Rpb24oZSl7IiIhPWUmJmJvb3Rib3guYWxlcnQoZSl9KX19fV0se2hlYWRlcjplKCIjbGFuZ19maWxlX3Blcm1pc3Npb24iKS52YWwoKX0pfSl9ZnVuY3Rpb24gYyhhKXt2YXIgdD1bXTtpZih0LnVzZXI9MCx0Lmdyb3VwPTAsdC5hbGw9MCwidW5kZWZpbmVkIiE9dHlwZW9mIGEmJjE9PWEpe3ZhciBuPWUoIiNjaG1vZF9mb3JtICNjaG1vZF92YWx1ZSIpLnZhbCgpO3QudXNlcj1uLnN1YnN0cigwLDEpLHQuZ3JvdXA9bi5zdWJzdHIoMSwxKSx0LmFsbD1uLnN1YnN0cigyLDEpLGUuZWFjaCh0LGZ1bmN0aW9uKGEpeygiIj09dFthXXx8MD09ZS5pc051bWVyaWModFthXSl8fHBhcnNlSW50KHRbYV0pPDB8fHBhcnNlSW50KHRbYV0pPjcpJiYodFthXT0iMCIpfSksZSgiI2NobW9kX2Zvcm0gaW5wdXQ6Y2hlY2tib3giKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGE9ZSh0aGlzKS5hdHRyKCJkYXRhLWdyb3VwIiksbj1lKHRoaXMpLmF0dHIoImRhdGEtdmFsdWUiKTtzKHRbYV0sbik/ZSh0aGlzKS5wcm9wKCJjaGVja2VkIiwhMCk6ZSh0aGlzKS5wcm9wKCJjaGVja2VkIiwhMSl9KX1lbHNlIGUoIiNjaG1vZF9mb3JtIGlucHV0OmNoZWNrYm94OmNoZWNrZWQiKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGE9ZSh0aGlzKS5hdHRyKCJkYXRhLWdyb3VwIiksbj1lKHRoaXMpLmF0dHIoImRhdGEtdmFsdWUiKTt0W2FdPXBhcnNlSW50KHRbYV0pK3BhcnNlSW50KG4pfSksZSgiI2NobW9kX2Zvcm0gI2NobW9kX3ZhbHVlIikudmFsKHQudXNlci50b1N0cmluZygpK3QuZ3JvdXAudG9TdHJpbmcoKSt0LmFsbC50b1N0cmluZygpKX1mdW5jdGlvbiBzKGEsdCl7dmFyIG49W107cmV0dXJuIG5bMV09WzEsMyw1LDddLG5bMl09WzIsMyw2LDddLG5bNF09WzQsNSw2LDddLGE9cGFyc2VJbnQoYSksdD1wYXJzZUludCh0KSwtMSE9ZS5pbkFycmF5KGEsblt0XSl9ZnVuY3Rpb24gZCgpe2Jvb3Rib3guY29uZmlybShlKCIjbGFuZ19jbGVhcl9jbGlwYm9hcmRfY29uZmlybSIpLnZhbCgpLGUoIiNjYW5jZWwiKS52YWwoKSxlKCIjb2siKS52YWwoKSxmdW5jdGlvbihhKXsxPT1hJiZlLmFqYXgoe3R5cGU6IlBPU1QiLHVybDoiYWpheF9jYWxscy5waHA/YWN0aW9uPWNsZWFyX2NsaXBib2FyZCIsZGF0YTp7fX0pLmRvbmUoZnVuY3Rpb24oYSl7IiIhPWE/Ym9vdGJveC5hbGVydChhKTplKCIjY2xpcGJvYXJkIikudmFsKCIwIiksdighMSl9KX0pfWZ1bmN0aW9uIHAoYSx0KXtpZigiY29weSI9PXR8fCJjdXQiPT10KXt2YXIgbjtuPWEuZmluZCgiLnJlbmFtZS1maWxlLXBhdGhzIikuYXR0cihhLmhhc0NsYXNzKCJkaXJlY3RvcnkiKT8iZGF0YS1wYXRoIjoiZGF0YS1wYXRoIiksZS5hamF4KHt0eXBlOiJQT1NUIix1cmw6ImFqYXhfY2FsbHMucGhwP2FjdGlvbj1jb3B5X2N1dCIsZGF0YTp7cGF0aDpuLHN1Yl9hY3Rpb246dH19KS5kb25lKGZ1bmN0aW9uKGEpeyIiIT1hP2Jvb3Rib3guYWxlcnQoYSk6KGUoIiNjbGlwYm9hcmQiKS52YWwoIjEiKSx2KCEwKSl9KX19ZnVuY3Rpb24gZihhKXtib290Ym94LmNvbmZpcm0oZSgiI2xhbmdfcGFzdGVfY29uZmlybSIpLnZhbCgpLGUoIiNjYW5jZWwiKS52YWwoKSxlKCIjb2siKS52YWwoKSxmdW5jdGlvbih0KXtpZigxPT10KXt2YXIgbjtuPSJ1bmRlZmluZWQiIT10eXBlb2YgYT9hLmZpbmQoIi5yZW5hbWUtZm9sZGVyIikuYXR0cigiZGF0YS1wYXRoIik6ZSgiI3N1Yl9mb2xkZXIiKS52YWwoKStlKCIjZmxkcl92YWx1ZSIpLnZhbCgpLGUuYWpheCh7dHlwZToiUE9TVCIsdXJsOiJleGVjdXRlLnBocD9hY3Rpb249cGFzdGVfY2xpcGJvYXJkIixkYXRhOntwYXRoOm59fSkuZG9uZShmdW5jdGlvbihhKXsiIiE9YT9ib290Ym94LmFsZXJ0KGEpOihlKCIjY2xpcGJvYXJkIikudmFsKCIwIiksdighMSksc2V0VGltZW91dChmdW5jdGlvbigpe3dpbmRvdy5sb2NhdGlvbi5ocmVmPWUoIiNyZWZyZXNoIikuYXR0cigiaHJlZiIpKyImIisobmV3IERhdGUpLmdldFRpbWUoKX0sMzAwKSl9KX19KX1mdW5jdGlvbiB1KGEsdCl7dmFyIG47bj1hLmZpbmQoYS5oYXNDbGFzcygiZGlyZWN0b3J5Iik/Ii5yZW5hbWUtZm9sZGVyIjoiLnJlbmFtZS1maWxlIik7dmFyIGk9bi5hdHRyKCJkYXRhLXBhdGgiKTthLnBhcmVudCgpLmhpZGUoMTAwKSxlLmFqYXgoe3R5cGU6IlBPU1QiLHVybDoiYWpheF9jYWxscy5waHA/YWN0aW9uPWNvcHlfY3V0IixkYXRhOntwYXRoOmksc3ViX2FjdGlvbjoiY3V0In19KS5kb25lKGZ1bmN0aW9uKG4pe2lmKCIiIT1uKWJvb3Rib3guYWxlcnQobik7ZWxzZXt2YXIgaTtpPSJ1bmRlZmluZWQiIT10eXBlb2YgdD90Lmhhc0NsYXNzKCJiYWNrLWRpcmVjdG9yeSIpP3QuZmluZCgiLnBhdGgiKS52YWwoKTp0LmZpbmQoIi5yZW5hbWUtZm9sZGVyIikuYXR0cigiZGF0YS1wYXRoIik6ZSgiI3N1Yl9mb2xkZXIiKS52YWwoKStlKCIjZmxkcl92YWx1ZSIpLnZhbCgpLGUuYWpheCh7dHlwZToiUE9TVCIsdXJsOiJleGVjdXRlLnBocD9hY3Rpb249cGFzdGVfY2xpcGJvYXJkIixkYXRhOntwYXRoOml9fSkuZG9uZShmdW5jdGlvbih0KXsiIiE9dD8oYm9vdGJveC5hbGVydCh0KSxhLnBhcmVudCgpLnNob3coMTAwKSk6KGUoIiNjbGlwYm9hcmQiKS52YWwoIjAiKSx2KCExKSxhLnBhcmVudCgpLnJlbW92ZSgpKX0pfX0pLmVycm9yKGZ1bmN0aW9uKCl7YS5wYXJlbnQoKS5zaG93KDEwMCl9KX1mdW5jdGlvbiB2KGEpezE9PWE/ZSgiLnBhc3RlLWhlcmUtYnRuLCAuY2xlYXItY2xpcGJvYXJkLWJ0biIpLnJlbW92ZUNsYXNzKCJkaXNhYmxlZCIpOmUoIi5wYXN0ZS1oZXJlLWJ0biwgLmNsZWFyLWNsaXBib2FyZC1idG4iKS5hZGRDbGFzcygiZGlzYWJsZWQiKX1mdW5jdGlvbiBtKHQpe3ZhciBuPWUoIi5icmVhZGNydW1iIikud2lkdGgoKSt0LGk9ZSgiI3ZpZXciKSxyPWUoIiNoZWxwIik7aWYoZSgiLnVwbG9hZGVyIikuY3NzKCJ3aWR0aCIsbiksaS52YWwoKT4wKXtpZigxPT1pLnZhbCgpKWUoInVsLmdyaWQgbGksIHVsLmdyaWQgZmlndXJlIikuY3NzKCJ3aWR0aCIsIjEwMCUiKTtlbHNle3ZhciBvPU1hdGguZmxvb3Iobi8zODApOzA9PW8mJihvPTEsZSgiaDQiKS5jc3MoImZvbnQtc2l6ZSIsMTIpKSxuPU1hdGguZmxvb3Iobi9vLTMpLGUoInVsLmdyaWQgbGksIHVsLmdyaWQgZmlndXJlIikuY3NzKCJ3aWR0aCIsbil9ci5oaWRlKCl9ZWxzZSBhLnRvdWNoJiZyLnNob3coKX1mdW5jdGlvbiBoKCl7dmFyIGE9ZSh0aGlzKTswPT1lKCIjdmlldyIpLnZhbCgpJiYoMT09YS5hdHRyKCJ0b2dnbGUiKT8oYS5hdHRyKCJ0b2dnbGUiLDApLGEuYW5pbWF0ZSh7dG9wOiIwcHgifSx7cXVldWU6ITEsZHVyYXRpb246MzAwfSkpOihhLmF0dHIoInRvZ2dsZSIsMSksYS5hbmltYXRlKHt0b3A6Ii0zMHB4In0se3F1ZXVlOiExLGR1cmF0aW9uOjMwMH0pKSl9ZnVuY3Rpb24gXyhlKXt2YXIgYT1uZXcgUmVnRXhwKCIoPzpbPyZdfCYpIitlKyI9KFteJl0rKSIsImkiKSx0PXdpbmRvdy5sb2NhdGlvbi5zZWFyY2gubWF0Y2goYSk7cmV0dXJuIHQmJnQubGVuZ3RoPjE/dFsxXTpudWxsfWZ1bmN0aW9uIGcoKXsxPT1lKCIjcG9wdXAiKS52YWwoKT93aW5kb3cuY2xvc2UoKTooImZ1bmN0aW9uIj09dHlwZW9mIHBhcmVudC4kKCIubW9kYWwiKS5tb2RhbCYmcGFyZW50LiQoIi5tb2RhbCIpLm1vZGFsKCJoaWRlIiksInVuZGVmaW5lZCIhPXR5cGVvZiBwYXJlbnQualF1ZXJ5JiZwYXJlbnQualF1ZXJ5PyJmdW5jdGlvbiI9PXR5cGVvZiBwYXJlbnQualF1ZXJ5LmZhbmN5Ym94JiZwYXJlbnQualF1ZXJ5LmZhbmN5Ym94LmNsb3NlKCk6ImZ1bmN0aW9uIj09dHlwZW9mIHBhcmVudC4kLmZhbmN5Ym94JiZwYXJlbnQuJC5mYW5jeWJveC5jbG9zZSgpKX1mdW5jdGlvbiBiKGUpe2Zvcih2YXIgZSxhPVsvW1wzMDAtXDMwNl0vZywvW1wzNDAtXDM0Nl0vZywvW1wzMTAtXDMxM10vZywvW1wzNTAtXDM1M10vZywvW1wzMTQtXDMxN10vZywvW1wzNTQtXDM1N10vZywvW1wzMjItXDMzMF0vZywvW1wzNjItXDM3MF0vZywvW1wzMzEtXDMzNF0vZywvW1wzNzEtXDM3NF0vZywvW1wzMjFdL2csL1tcMzYxXS9nLC9bXDMwN10vZywvW1wzNDddL2ddLHQ9WyJBIiwiYSIsIkUiLCJlIiwiSSIsImkiLCJPIiwibyIsIlUiLCJ1IiwiTiIsIm4iLCJDIiwiYyJdLG49MDtuPGEubGVuZ3RoO24rKyllPWUucmVwbGFjZShhW25dLHRbbl0pO3JldHVybiBlfWZ1bmN0aW9uIHkoYSl7cmV0dXJuIG51bGwhPWE/KCJ0cnVlIj09ZSgiI3RyYW5zbGl0ZXJhdGlvbiIpLnZhbCgpJiYoYT1iKGEpLGE9YS5yZXBsYWNlKC9bXkEtWmEtejAtOVwuXC1cW1xdIF9dKy9nLCIiKSksInRydWUiPT1lKCIjY29udmVydF9zcGFjZXMiKS52YWwoKSYmKGE9YS5yZXBsYWNlKC8gL2csZSgiI3JlcGxhY2Vfd2l0aCIpLnZhbCgpKSxhPWEudG9Mb3dlckNhc2UoKSksYT1hLnJlcGxhY2UoJyInLCIiKSxhPWEucmVwbGFjZSgiJyIsIiIpLGE9YS5yZXBsYWNlKCIvIiwiIiksYT1hLnJlcGxhY2UoIlxcIiwiIiksYT1hLnJlcGxhY2UoLzxcLz9bXj5dKyg+fCQpL2csIiIpLGUudHJpbShhKSk6bnVsbH1mdW5jdGlvbiB3KGEsdCxuLGkscil7bnVsbCE9PW4mJihuPXkobiksZS5hamF4KHt0eXBlOiJQT1NUIix1cmw6ImV4ZWN1dGUucGhwP2FjdGlvbj0iK2EsZGF0YTp7cGF0aDp0LG5hbWU6bi5yZXBsYWNlKCIvIiwiIil9fSkuZG9uZShmdW5jdGlvbihlKXtyZXR1cm4iIiE9ZT8oYm9vdGJveC5hbGVydChlKSwhMSk6KCIiIT1yJiZ3aW5kb3dbcl0oaSxuKSwhMCl9KSl9ZnVuY3Rpb24geChhLHQpe3ZhciBuPWUoImxpLmRpciIsInVsLmdyaWQiKS5maWx0ZXIoIjp2aXNpYmxlIiksaT1lKCJsaS5maWxlIiwidWwuZ3JpZCIpLmZpbHRlcigiOnZpc2libGUiKSxyPVtdLG89W10sbD1bXSxjPVtdO24uZWFjaChmdW5jdGlvbigpe3ZhciBhPWUodGhpcyksbj1hLmZpbmQodCkudmFsKCk7aWYoZS5pc051bWVyaWMobikpZm9yKG49cGFyc2VGbG9hdChuKTsidW5kZWZpbmVkIiE9dHlwZW9mIHJbbl0mJnJbbl07KW49cGFyc2VGbG9hdChwYXJzZUZsb2F0KG4pK3BhcnNlRmxvYXQoLjAwMSkpO2Vsc2Ugbj1uKyJhIithLmZpbmQoImg0IGEiKS5hdHRyKCJkYXRhLWZpbGUiKTtyW25dPWEuaHRtbCgpLG8ucHVzaChuKX0pLGkuZWFjaChmdW5jdGlvbigpe3ZhciBhPWUodGhpcyksbj1hLmZpbmQodCkudmFsKCk7aWYoZS5pc051bWVyaWMobikpZm9yKG49cGFyc2VGbG9hdChuKTsidW5kZWZpbmVkIiE9dHlwZW9mIGxbbl0mJmxbbl07KW49cGFyc2VGbG9hdChwYXJzZUZsb2F0KG4pK3BhcnNlRmxvYXQoLjAwMSkpO2Vsc2Ugbj1uKyJhIithLmZpbmQoImg0IGEiKS5hdHRyKCJkYXRhLWZpbGUiKTtsW25dPWEuaHRtbCgpLGMucHVzaChuKX0pLGUuaXNOdW1lcmljKG9bMF0pP28uc29ydChmdW5jdGlvbihlLGEpe3JldHVybiBwYXJzZUZsb2F0KGUpLXBhcnNlRmxvYXQoYSl9KTpvLnNvcnQoKSxlLmlzTnVtZXJpYyhjWzBdKT9jLnNvcnQoZnVuY3Rpb24oZSxhKXtyZXR1cm4gcGFyc2VGbG9hdChlKS1wYXJzZUZsb2F0KGEpfSk6Yy5zb3J0KCksYSYmKG8ucmV2ZXJzZSgpLGMucmV2ZXJzZSgpKSxuLmVhY2goZnVuY3Rpb24oYSl7dmFyIHQ9ZSh0aGlzKTt0Lmh0bWwocltvW2FdXSl9KSxpLmVhY2goZnVuY3Rpb24oYSl7dmFyIHQ9ZSh0aGlzKTt0Lmh0bWwobFtjW2FdXSl9KX1mdW5jdGlvbiBrKGUsYSl7cmV0dXJuIGZlYXRoZXJFZGl0b3IubGF1bmNoKHtpbWFnZTplLHVybDphfSksITF9ZnVuY3Rpb24gQygpe2UoIi5sYXp5LWxvYWRlZCIpLmxhenlsb2FkKCl9dmFyIGo9IjkuOS43IixUPSEwLEk9MCxPPWZ1bmN0aW9uKCl7dmFyIGU9MDtyZXR1cm4gZnVuY3Rpb24oYSx0KXtjbGVhclRpbWVvdXQoZSksZT1zZXRUaW1lb3V0KGEsdCl9fSgpLFM9ZnVuY3Rpb24oYSl7dmFyIHQ9ZSgiI2Jhc2VfdXJsIikudmFsKCkrZSgiI2N1cl9kaXIiKS52YWwoKSxuPWEuZmluZCgiYS5saW5rIikuYXR0cigiZGF0YS1maWxlIik7cmV0dXJuIiIhPW4mJm51bGwhPW4mJih0Kz1uKSxuPWEuZmluZCgiaDQgYS5mb2xkZXItbGluayIpLmF0dHIoImRhdGEtZmlsZSIpLCIiIT1uJiZudWxsIT1uJiYodCs9biksdH0sVT17Y29udGV4dEFjdGlvbnM6e2NvcHlfdXJsOmZ1bmN0aW9uKGEpe3ZhciB0PVMoYSk7Ym9vdGJveC5hbGVydCgnVVJMOjxici8+PGRpdiBjbGFzcz0iaW5wdXQtYXBwZW5kIiBzdHlsZT0id2lkdGg6MTAwJSI+PGlucHV0IGlkPSJ1cmxfdGV4dCcrSSsnIiB0eXBlPSJ0ZXh0IiBzdHlsZT0id2lkdGg6ODAlOyBoZWlnaHQ6MzBweDsiIHZhbHVlPSInK2VuY29kZVVSTCh0KSsnIiAvPjxidXR0b24gaWQ9ImNvcHktYnV0dG9uJytJKyciIGNsYXNzPSJidG4gYnRuLWludmVyc2UgY29weS1idXR0b24iIHN0eWxlPSJ3aWR0aDoyMCU7IGhlaWdodDozMHB4OyIgZGF0YS1jbGlwYm9hcmQtdGFyZ2V0PSJ1cmxfdGV4dCcrSSsnIiBkYXRhLWNsaXBib2FyZC10ZXh0PSJDb3B5IE1lISIgdGl0bGU9ImNvcHkiPjwvYnV0dG9uPjwvZGl2PicpLGUoIiNjb3B5LWJ1dHRvbiIrSSkuaHRtbCgnPGkgY2xhc3M9Imljb24gaWNvbi13aGl0ZSBpY29uLXNoYXJlIj48L2k+ICcrZSgiI2xhbmdfY29weSIpLnZhbCgpKTt2YXIgbj1uZXcgWmVyb0NsaXBib2FyZChlKCIjY29weS1idXR0b24iK0kpKTtuLm9uKCJyZWFkeSIsZnVuY3Rpb24oYSl7bi5vbigid3JvbmdGbGFzaCBub0ZsYXNoIixmdW5jdGlvbigpe1plcm9DbGlwYm9hcmQuZGVzdHJveSgpfSksbi5vbigiYWZ0ZXJjb3B5IixmdW5jdGlvbihhKXtlKCIjY29weS1idXR0b24iK0kpLmh0bWwoJzxpIGNsYXNzPSJpY29uIGljb24tb2siPjwvaT4gJytlKCIjb2siKS52YWwoKSksZSgiI2NvcHktYnV0dG9uIitJKS5hdHRyKCJjbGFzcyIsImJ0biBkaXNhYmxlZCIpLEkrK30pLG4ub24oImVycm9yIixmdW5jdGlvbihlKXt9KX0pfSx1bnppcDpmdW5jdGlvbihhKXt2YXIgdD1lKCIjc3ViX2ZvbGRlciIpLnZhbCgpK2UoIiNmbGRyX3ZhbHVlIikudmFsKCkrYS5maW5kKCJhLmxpbmsiKS5hdHRyKCJkYXRhLWZpbGUiKTtlLmFqYXgoe3R5cGU6IlBPU1QiLHVybDoiYWpheF9jYWxscy5waHA/YWN0aW9uPWV4dHJhY3QiLGRhdGE6e3BhdGg6dH19KS5kb25lKGZ1bmN0aW9uKGEpeyIiIT1hP2Jvb3Rib3guYWxlcnQoYSk6d2luZG93LmxvY2F0aW9uLmhyZWY9ZSgiI3JlZnJlc2giKS5hdHRyKCJocmVmIikrIiYiKyhuZXcgRGF0ZSkuZ2V0VGltZSgpfSl9LGVkaXRfaW1nOmZ1bmN0aW9uKGEpe3ZhciB0PWEuYXR0cigiZGF0YS1uYW1lIiksbj1lKCIjYmFzZV91cmxfdHJ1ZSIpLnZhbCgpK2UoIiNjdXJfZGlyIikudmFsKCkrdCxpPWUoIiNhdmlhcnlfaW1nIik7aS5hdHRyKCJkYXRhLW5hbWUiLHQpLHNob3dfYW5pbWF0aW9uKCksaS5hdHRyKCJzcmMiLG4pLmxvYWQoayhpLmF0dHIoImlkIiksbikpfSxkdXBsaWNhdGU6ZnVuY3Rpb24oYSl7dmFyIHQ9YS5maW5kKCJoNCIpLnRleHQoKS50cmltKCk7Ym9vdGJveC5wcm9tcHQoZSgiI2xhbmdfZHVwbGljYXRlIikudmFsKCksZSgiI2NhbmNlbCIpLnZhbCgpLGUoIiNvayIpLnZhbCgpLGZ1bmN0aW9uKGUpe2lmKG51bGwhPT1lJiYoZT15KGUpLGUhPXQpKXt2YXIgbj1hLmZpbmQoIi5yZW5hbWUtZmlsZSIpO3coImR1cGxpY2F0ZV9maWxlIixuLmF0dHIoImRhdGEtcGF0aCIpLGUsbiwiYXBwbHlfZmlsZV9kdXBsaWNhdGUiKX19LHQpfSxzZWxlY3Q6ZnVuY3Rpb24oYSl7dmFyIHQsbj1TKGEpLGk9ZSgiI2ZpZWxkX2lkIikudmFsKCkscj1lKCIjcmV0dXJuX3JlbGF0aXZlX3VybCIpLnZhbCgpO2lmKDE9PXImJihuPW4ucmVwbGFjZShlKCIjYmFzZV91cmwiKS52YWwoKSwiIiksbj1uLnJlcGxhY2UoZSgiI2N1cl9kaXIiKS52YWwoKSwiIikpLHQ9MT09ZSgiI3BvcHVwIikudmFsKCk/d2luZG93Lm9wZW5lcjp3aW5kb3cucGFyZW50LCIiIT1pKWlmKDE9PWUoIiNjcm9zc2RvbWFpbiIpLnZhbCgpKXQucG9zdE1lc3NhZ2Uoe3NlbmRlcjoicmVzcG9uc2l2ZWZpbGVtYW5hZ2VyIix1cmw6bixmaWVsZF9pZDppfSwiKiIpO2Vsc2V7dmFyIG89ZSgiIyIraSx0LmRvY3VtZW50KTtvLnZhbChuKS50cmlnZ2VyKCJjaGFuZ2UiKSwiZnVuY3Rpb24iPT10eXBlb2YgdC5yZXNwb25zaXZlX2ZpbGVtYW5hZ2VyX2NhbGxiYWNrJiZ0LnJlc3BvbnNpdmVfZmlsZW1hbmFnZXJfY2FsbGJhY2soaSksZygpfWVsc2UgYXBwbHlfYW55KG4pfSxjb3B5OmZ1bmN0aW9uKGUpe3AoZSwiY29weSIpfSxjdXQ6ZnVuY3Rpb24oZSl7cChlLCJjdXQiKX0scGFzdGU6ZnVuY3Rpb24oKXtmKCl9LGNobW9kOmZ1bmN0aW9uKGUpe2woZSl9LGVkaXRfdGV4dF9maWxlOmZ1bmN0aW9uKGUpe3IoZSl9fSxtYWtlQ29udGV4dE1lbnU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzO2UuY29udGV4dE1lbnUoe3NlbGVjdG9yOiJmaWd1cmU6bm90KC5iYWNrLWRpcmVjdG9yeSksIC5saXN0LXZpZXcyIGZpZ3VyZTpub3QoLmJhY2stZGlyZWN0b3J5KSIsYXV0b0hpZGU6ITAsYnVpbGQ6ZnVuY3Rpb24obil7bi5hZGRDbGFzcygic2VsZWN0ZWQiKTt2YXIgaT17Y2FsbGJhY2s6ZnVuY3Rpb24oZSx0KXthLmNvbnRleHRBY3Rpb25zW2VdKG4pfSxpdGVtczp7fX07cmV0dXJuKG4uZmluZCgiLmltZy1wcmVjb250YWluZXItbWluaSAuZmlsZXR5cGUiKS5oYXNDbGFzcygicG5nIil8fG4uZmluZCgiLmltZy1wcmVjb250YWluZXItbWluaSAuZmlsZXR5cGUiKS5oYXNDbGFzcygianBnIil8fG4uZmluZCgiLmltZy1wcmVjb250YWluZXItbWluaSAuZmlsZXR5cGUiKS5oYXNDbGFzcygianBlZyIpKSYmdCYmKGkuaXRlbXMuZWRpdF9pbWc9e25hbWU6ZSgiI2xhbmdfZWRpdF9pbWFnZSIpLnZhbCgpLGljb246ImVkaXRfaW1nIixkaXNhYmxlZDohMX0pLG4uaGFzQ2xhc3MoImRpcmVjdG9yeSIpJiYwIT1lKCIjdHlwZV9wYXJhbSIpLnZhbCgpJiYoaS5pdGVtcy5zZWxlY3Q9e25hbWU6ZSgiI2xhbmdfc2VsZWN0IikudmFsKCksaWNvbjoiIixkaXNhYmxlZDohMX0pLGkuaXRlbXMuY29weV91cmw9e25hbWU6ZSgiI2xhbmdfc2hvd191cmwiKS52YWwoKSxpY29uOiJ1cmwiLGRpc2FibGVkOiExfSwobi5maW5kKCIuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZSIpLmhhc0NsYXNzKCJ6aXAiKXx8bi5maW5kKCIuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZSIpLmhhc0NsYXNzKCJ0YXIiKXx8bi5maW5kKCIuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZSIpLmhhc0NsYXNzKCJneiIpKSYmKGkuaXRlbXMudW56aXA9e25hbWU6ZSgiI2xhbmdfZXh0cmFjdCIpLnZhbCgpLGljb246ImV4dHJhY3QiLGRpc2FibGVkOiExfSksbi5maW5kKCIuaW1nLXByZWNvbnRhaW5lci1taW5pIC5maWxldHlwZSIpLmhhc0NsYXNzKCJlZGl0LXRleHQtZmlsZS1hbGxvd2VkIikmJihpLml0ZW1zLmVkaXRfdGV4dF9maWxlPXtuYW1lOmUoIiNsYW5nX2VkaXRfZmlsZSIpLnZhbCgpLGljb246ImVkaXQiLGRpc2FibGVkOiExfSksbi5oYXNDbGFzcygiZGlyZWN0b3J5Iil8fDEhPWUoIiNkdXBsaWNhdGUiKS52YWwoKXx8KGkuaXRlbXMuZHVwbGljYXRlPXtuYW1lOmUoIiNsYW5nX2R1cGxpY2F0ZSIpLnZhbCgpLGljb246ImR1cGxpY2F0ZSIsZGlzYWJsZWQ6ITF9KSxuLmhhc0NsYXNzKCJkaXJlY3RvcnkiKXx8MSE9ZSgiI2NvcHlfY3V0X2ZpbGVzX2FsbG93ZWQiKS52YWwoKT9uLmhhc0NsYXNzKCJkaXJlY3RvcnkiKSYmMT09ZSgiI2NvcHlfY3V0X2RpcnNfYWxsb3dlZCIpLnZhbCgpJiYoaS5pdGVtcy5jb3B5PXtuYW1lOmUoIiNsYW5nX2NvcHkiKS52YWwoKSxpY29uOiJjb3B5IixkaXNhYmxlZDohMX0saS5pdGVtcy5jdXQ9e25hbWU6ZSgiI2xhbmdfY3V0IikudmFsKCksaWNvbjoiY3V0IixkaXNhYmxlZDohMX0pOihpLml0ZW1zLmNvcHk9e25hbWU6ZSgiI2xhbmdfY29weSIpLnZhbCgpLGljb246ImNvcHkiLGRpc2FibGVkOiExfSxpLml0ZW1zLmN1dD17bmFtZTplKCIjbGFuZ19jdXQiKS52YWwoKSxpY29uOiJjdXQiLGRpc2FibGVkOiExfSksMD09ZSgiI2NsaXBib2FyZCIpLnZhbCgpfHxuLmhhc0NsYXNzKCJkaXJlY3RvcnkiKXx8KGkuaXRlbXMucGFzdGU9e25hbWU6ZSgiI2xhbmdfcGFzdGVfaGVyZSIpLnZhbCgpLGljb246ImNsaXBib2FyZC1hcHBseSIsZGlzYWJsZWQ6ITF9KSxuLmhhc0NsYXNzKCJkaXJlY3RvcnkiKXx8MSE9ZSgiI2NobW9kX2ZpbGVzX2FsbG93ZWQiKS52YWwoKT9uLmhhc0NsYXNzKCJkaXJlY3RvcnkiKSYmMT09ZSgiI2NobW9kX2RpcnNfYWxsb3dlZCIpLnZhbCgpJiYoaS5pdGVtcy5jaG1vZD17bmFtZTplKCIjbGFuZ19maWxlX3Blcm1pc3Npb24iKS52YWwoKSxpY29uOiJrZXkiLGRpc2FibGVkOiExfSk6aS5pdGVtcy5jaG1vZD17bmFtZTplKCIjbGFuZ19maWxlX3Blcm1pc3Npb24iKS52YWwoKSxpY29uOiJrZXkiLGRpc2FibGVkOiExfSxpLml0ZW1zLnNlcD0iLS0tLSIsaS5pdGVtcy5pbmZvPXtuYW1lOiI8c3Ryb25nPiIrZSgiI2xhbmdfZmlsZV9pbmZvIikudmFsKCkrIjwvc3Ryb25nPiIsZGlzYWJsZWQ6ITB9LGkuaXRlbXMubmFtZT17bmFtZTpuLmF0dHIoImRhdGEtbmFtZSIpLGljb246ImxhYmVsIixkaXNhYmxlZDohMH0sImltZyI9PW4uYXR0cigiZGF0YS10eXBlIikmJihpLml0ZW1zLmRpbWVuc2lvbj17bmFtZTpuLmZpbmQoIi5pbWctZGltZW5zaW9uIikuaHRtbCgpLGljb246ImRpbWVuc2lvbiIsZGlzYWJsZWQ6ITB9KSxpLml0ZW1zLnNpemU9bi5oYXNDbGFzcygiZGlyZWN0b3J5Iik/e25hbWU6bi5maW5kKCIuZmlsZS1zaXplIikuaHRtbCgpKyIgLSAiK24uZmluZCgiLm5maWxlcyIpLnZhbCgpKyIgIitlKCIjbGFuZ19maWxlcyIpLnZhbCgpKyIgLSAiK24uZmluZCgiLm5mb2xkZXJzIikudmFsKCkrIiAiK2UoIiNsYW5nX2ZvbGRlcnMiKS52YWwoKSxpY29uOiJzaXplIixkaXNhYmxlZDohMH06e25hbWU6bi5maW5kKCIuZmlsZS1zaXplIikuaHRtbCgpLGljb246InNpemUiLGRpc2FibGVkOiEwfSxpLml0ZW1zLmRhdGU9e25hbWU6bi5maW5kKCIuZmlsZS1kYXRlIikuaHRtbCgpLGljb246ImRhdGUiLGRpc2FibGVkOiEwfSxpfSxldmVudHM6e2hpZGU6ZnVuY3Rpb24oKXtlKCJmaWd1cmUiKS5yZW1vdmVDbGFzcygic2VsZWN0ZWQiKX19fSksZShkb2N1bWVudCkub24oImNvbnRleHRtZW51IixmdW5jdGlvbihhKXtyZXR1cm4gZShhLnRhcmdldCkuaXMoImZpZ3VyZSIpP3ZvaWQgMDohMX0pfSxiaW5kR3JpZEV2ZW50czpmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSl7d2luZG93W2EuYXR0cigiZGF0YS1mdW5jdGlvbiIpXShhLmF0dHIoImRhdGEtZmlsZSIpLGUoIiNmaWVsZF9pZCIpLnZhbCgpKX12YXIgdD1lKCJ1bC5ncmlkIik7dC5vbigiY2xpY2siLCIubW9kYWxBViIsZnVuY3Rpb24oYSl7dmFyIHQ9ZSh0aGlzKTthLnByZXZlbnREZWZhdWx0KCk7dmFyIG49ZSgiI3ByZXZpZXdBViIpLGk9ZSgiLmJvZHktcHJldmlldyIpO24ucmVtb3ZlRGF0YSgibW9kYWwiKSxuLm1vZGFsKHtiYWNrZHJvcDoic3RhdGljIixrZXlib2FyZDohMX0pLHQuaGFzQ2xhc3MoImF1ZGlvIik/aS5jc3MoImhlaWdodCIsIjgwcHgiKTppLmNzcygiaGVpZ2h0IiwiMzQ1cHgiKSxlLmFqYXgoe3VybDp0LmF0dHIoImRhdGEtdXJsIiksc3VjY2VzczpmdW5jdGlvbihlKXtpLmh0bWwoZSl9fSl9KSx0Lm9uKCJjbGljayIsIi5maWxlLXByZXZpZXctYnRuIixmdW5jdGlvbihhKXt2YXIgdD1lKHRoaXMpO2EucHJldmVudERlZmF1bHQoKSxlLmFqYXgoe3VybDp0LmF0dHIoImRhdGEtdXJsIiksc3VjY2VzczpmdW5jdGlvbihlKXtib290Ym94Lm1vZGFsKGUsIiAiK3QucGFyZW50KCkucGFyZW50KCkucGFyZW50KCkuZmluZCgiLm5hbWUiKS52YWwoKSl9fSl9KSx0Lm9uKCJjbGljayIsIi5wcmV2aWV3IixmdW5jdGlvbigpe3ZhciBhPWUodGhpcyk7cmV0dXJuIDA9PWEuaGFzQ2xhc3MoImRpc2FibGVkIikmJmUoIiNmdWxsLWltZyIpLmF0dHIoInNyYyIsZGVjb2RlVVJJQ29tcG9uZW50KGEuYXR0cigiZGF0YS11cmwiKSkpLCEwfSksdC5vbigiY2xpY2siLCIucmVuYW1lLWZpbGUiLGZ1bmN0aW9uKCl7dmFyIGE9ZSh0aGlzKSx0PWEucGFyZW50KCkucGFyZW50KCkucGFyZW50KCksbj10LmZpbmQoImg0IiksaT1lLnRyaW0obi50ZXh0KCkpO2Jvb3Rib3gucHJvbXB0KGUoIiNyZW5hbWUiKS52YWwoKSxlKCIjY2FuY2VsIikudmFsKCksZSgiI29rIikudmFsKCksZnVuY3Rpb24oZSl7bnVsbCE9PWUmJihlPXkoZSksZSE9aSYmdygicmVuYW1lX2ZpbGUiLGEuYXR0cigiZGF0YS1wYXRoIiksZSx0LCJhcHBseV9maWxlX3JlbmFtZSIpKX0saSl9KSx0Lm9uKCJjbGljayIsIi5yZW5hbWUtZm9sZGVyIixmdW5jdGlvbigpe3ZhciBhPWUodGhpcyksdD1hLnBhcmVudCgpLnBhcmVudCgpLnBhcmVudCgpLG49dC5maW5kKCJoNCIpLGk9ZS50cmltKG4udGV4dCgpKTtib290Ym94LnByb21wdChlKCIjcmVuYW1lIikudmFsKCksZSgiI2NhbmNlbCIpLnZhbCgpLGUoIiNvayIpLnZhbCgpLGZ1bmN0aW9uKGUpe251bGwhPT1lJiYoZT15KGUpLnJlcGxhY2UoIi4iLCIiKSxlIT1pJiZ3KCJyZW5hbWVfZm9sZGVyIixhLmF0dHIoImRhdGEtcGF0aCIpLGUsdCwiYXBwbHlfZm9sZGVyX3JlbmFtZSIpKX0saSl9KSx0Lm9uKCJjbGljayIsIi5kZWxldGUtZmlsZSIsZnVuY3Rpb24oKXt2YXIgYT1lKHRoaXMpO2Jvb3Rib3guY29uZmlybShhLmF0dHIoImRhdGEtY29uZmlybSIpLGUoIiNjYW5jZWwiKS52YWwoKSxlKCIjb2siKS52YWwoKSxmdW5jdGlvbih0KXtpZigxPT10KXt3KCJkZWxldGVfZmlsZSIsYS5hdHRyKCJkYXRhLXBhdGgiKSwiIiwiIiwiIik7dmFyIG49ZSgiI2ZpbGVzX251bWJlciIpO24udGV4dChwYXJzZUludChuLnRleHQoKSktMSksYS5wYXJlbnQoKS5wYXJlbnQoKS5wYXJlbnQoKS5wYXJlbnQoKS5yZW1vdmUoKX19KX0pLHQub24oImNsaWNrIiwiLmRlbGV0ZS1mb2xkZXIiLGZ1bmN0aW9uKCl7dmFyIGE9ZSh0aGlzKTtib290Ym94LmNvbmZpcm0oYS5hdHRyKCJkYXRhLWNvbmZpcm0iKSxlKCIjY2FuY2VsIikudmFsKCksZSgiI29rIikudmFsKCksZnVuY3Rpb24odCl7aWYoMT09dCl7dygiZGVsZXRlX2ZvbGRlciIsYS5hdHRyKCJkYXRhLXBhdGgiKSwiIiwiIiwiIik7dmFyIG49ZSgiI2ZvbGRlcnNfbnVtYmVyIik7bi50ZXh0KHBhcnNlSW50KG4udGV4dCgpKS0xKSxhLnBhcmVudCgpLnBhcmVudCgpLnBhcmVudCgpLnJlbW92ZSgpfX0pfSksZSgidWwuZ3JpZCIpLm9uKCJjbGljayIsIi5saW5rIixmdW5jdGlvbigpe2EoZSh0aGlzKSl9KSxlKCJ1bC5ncmlkIikub24oImNsaWNrIiwiZGl2LmJveCIsZnVuY3Rpb24odCl7dmFyIG49ZSh0aGlzKS5maW5kKCIubGluayIpO2lmKDAhPT1uLmxlbmd0aClhKG4pO2Vsc2V7dmFyIGk9ZSh0aGlzKS5maW5kKCIuZm9sZGVyLWxpbmsiKTswIT09aS5sZW5ndGgmJihkb2N1bWVudC5sb2NhdGlvbj1lKGkpLnByb3AoImhyZWYiKSl9fSl9LG1ha2VGaWx0ZXJzOmZ1bmN0aW9uKGEpe2UoIiNmaWx0ZXItaW5wdXQiKS5vbigia2V5dXAiLGZ1bmN0aW9uKCl7ZSgiLmZpbHRlcnMgbGFiZWwiKS5yZW1vdmVDbGFzcygiYnRuLWludmVyc2UiKSxlKCIuZmlsdGVycyBsYWJlbCIpLmZpbmQoImkiKS5yZW1vdmVDbGFzcygiaWNvbi13aGl0ZSIpLGUoIiNmZi1pdGVtLXR5cGUtYWxsIikuYWRkQ2xhc3MoImJ0bi1pbnZlcnNlIiksZSgiI2ZmLWl0ZW0tdHlwZS1hbGwiKS5maW5kKCJpIikuYWRkQ2xhc3MoImljb24td2hpdGUiKTt2YXIgdD15KGUodGhpcykudmFsKCkpLnRvTG93ZXJDYXNlKCk7ZSh0aGlzKS52YWwodCksYSYmTyhmdW5jdGlvbigpe2UoImxpIiwidWwuZ3JpZCAiKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGE9ZSh0aGlzKTsiIiE9dCYmLTE9PWEuYXR0cigiZGF0YS1uYW1lIikudG9Mb3dlckNhc2UoKS5pbmRleE9mKHQpP2EuaGlkZSgxMDApOmEuc2hvdygxMDApfSksZS5hamF4KHt1cmw6ImFqYXhfY2FsbHMucGhwP2FjdGlvbj1maWx0ZXImdHlwZT0iK3R9KS5kb25lKGZ1bmN0aW9uKGUpeyIiIT1lJiZib290Ym94LmFsZXJ0KGUpfSksTyhmdW5jdGlvbigpe3ZhciBhPTAhPWUoIiNkZXNjZW5kaW5nIikudmFsKCk/ITA6ITE7eChhLCIuIitlKCIjc29ydF9ieSIpLnZhbCgpKSxDKCl9LDUwMCl9LDMwMCl9KS5rZXlwcmVzcyhmdW5jdGlvbihhKXsxMz09YS53aGljaCYmZSgiI2ZpbHRlciIpLnRyaWdnZXIoImNsaWNrIil9KSxlKCIjZmlsdGVyIikub24oImNsaWNrIixmdW5jdGlvbigpe3ZhciBhPXkoZSgiI2ZpbHRlci1pbnB1dCIpLnZhbCgpKTt3aW5kb3cubG9jYXRpb24uaHJlZj1lKCIjY3VycmVudF91cmwiKS52YWwoKSsiJmZpbHRlcj0iK2F9KX0sbWFrZVVwbG9hZGVyOmZ1bmN0aW9uKCl7ZSgiI3VwbG9hZGVyLWJ0biIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXt2YXIgYT1lKCIjc3ViX2ZvbGRlciIpLnZhbCgpK2UoIiNmbGRyX3ZhbHVlIikudmFsKCkrIi8iO2E9YS5zdWJzdHJpbmcoMCxhLmxlbmd0aC0xKSxlKCIjaWZyYW1lLWNvbnRhaW5lciIpLmh0bWwoZSgiPGlmcmFtZSAvPiIse25hbWU6IkpVcGxvYWQiLGlkOiJ1cGxvYWRlcl9mcmFtZSIsc3JjOiJ1cGxvYWRlci9pbmRleC5waHA/cGF0aD0iK2EsZnJhbWVib3JkZXI6MCx3aWR0aDoiMTAwJSIsaGVpZ2h0OjM2MH0pKX0pLGUoIi51cGxvYWQtYnRuIikub24oImNsaWNrIixmdW5jdGlvbigpe2UoIi51cGxvYWRlciIpLnNob3coNTAwKX0pLGUoIi5jbG9zZS11cGxvYWRlciIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtlKCIudXBsb2FkZXIiKS5oaWRlKDUwMCksc2V0VGltZW91dChmdW5jdGlvbigpe3dpbmRvdy5sb2NhdGlvbi5ocmVmPWUoIiNyZWZyZXNoIikuYXR0cigiaHJlZiIpKyImIisobmV3IERhdGUpLmdldFRpbWUoKX0sNDIwKX0pfSxtYWtlU29ydDpmdW5jdGlvbihhKXtlKCJpbnB1dFtuYW1lPXJhZGlvLXNvcnRdIikub24oImNsaWNrIixmdW5jdGlvbigpe3ZhciBuPWUodGhpcykuYXR0cigiZGF0YS1pdGVtIiksaT1lKCIjIituKSxyPWUoIi5maWx0ZXJzIGxhYmVsIik7ci5yZW1vdmVDbGFzcygiYnRuLWludmVyc2UiKSxyLmZpbmQoImkiKS5yZW1vdmVDbGFzcygiaWNvbi13aGl0ZSIpLGUoIiNmaWx0ZXItaW5wdXQiKS52YWwoIiIpLGkuYWRkQ2xhc3MoImJ0bi1pbnZlcnNlIiksaS5maW5kKCJpIikuYWRkQ2xhc3MoImljb24td2hpdGUiKSwiZmYtaXRlbS10eXBlLWFsbCI9PW4/YT9lKCIuZ3JpZCBsaSIpLnNob3coMzAwKTp3aW5kb3cubG9jYXRpb24uaHJlZj1lKCIjY3VycmVudF91cmwiKS52YWwoKSsiJnNvcnRfYnk9IitlKCIjc29ydF9ieSIpLnZhbCgpKyImZGVzY2VuZGluZz0iKyh0PzE6MCk6ZSh0aGlzKS5pcygiOmNoZWNrZWQiKSYmKGUoIi5ncmlkIGxpIikubm90KCIuIituKS5oaWRlKDMwMCksZSgiLmdyaWQgbGkuIituKS5zaG93KDMwMCkpLEMoKX0pO3ZhciB0PWUoIiNkZXNjZW5kaW5nIikudmFsKCk7ZSgiLnNvcnRlciIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXt2YXIgbj1lKHRoaXMpO3Q9ZSgiI3NvcnRfYnkiKS52YWwoKT09PW4uYXR0cigiZGF0YS1zb3J0Iik/MD09dD8hMDohMTohMCxhPyhlLmFqYXgoe3VybDoiYWpheF9jYWxscy5waHA/YWN0aW9uPXNvcnQmc29ydF9ieT0iK24uYXR0cigiZGF0YS1zb3J0IikrIiZkZXNjZW5kaW5nPSIrKHQ/MTowKX0pLHgodCwiLiIrbi5hdHRyKCJkYXRhLXNvcnQiKSksZSgiIGEuc29ydGVyIikucmVtb3ZlQ2xhc3MoImRlc2NlbmRpbmciKS5yZW1vdmVDbGFzcygiYXNjZW5kaW5nIiksZSgiLnNvcnQtIituLmF0dHIoImRhdGEtc29ydCIpKS5hZGRDbGFzcyh0PyJkZXNjZW5kaW5nIjoiYXNjZW5kaW5nIiksZSgiI3NvcnRfYnkiKS52YWwobi5hdHRyKCJkYXRhLXNvcnQiKSksZSgiI2Rlc2NlbmRpbmciKS52YWwodD8xOjApLEMoKSk6d2luZG93LmxvY2F0aW9uLmhyZWY9ZSgiI2N1cnJlbnRfdXJsIikudmFsKCkrIiZzb3J0X2J5PSIrbi5hdHRyKCJkYXRhLXNvcnQiKSsiJmRlc2NlbmRpbmc9IisodD8xOjApfSl9fTtlKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpe2lmKGUoIiNyZm1Ecm9wem9uZSIpLm9uKCJjbGljayIsIi5kei1zdWNjZXNzIC5kei1kZXRhaWwiLGZ1bmN0aW9uKCl7dmFyIGE9ZSh0aGlzKTthbGVydChhLmZpbmQoIi5kei1maWxlbmFtZSBzcGFuIikudGV4KCkpfSksVCYmVS5tYWtlQ29udGV4dE1lbnUoKSxlKCIjZnVsbC1pbWciKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7ZSgiI3ByZXZpZXdMaWdodGJveCIpLmxpZ2h0Ym94KCJoaWRlIil9KSxlKCJib2R5Iikub24oImNsaWNrIixmdW5jdGlvbigpe2UoIi50aXAtcmlnaHQiKS50b29sdGlwKCJoaWRlIil9KSxVLmJpbmRHcmlkRXZlbnRzKCkscGFyc2VJbnQoZSgiI2ZpbGVfbnVtYmVyIikudmFsKCkpPnBhcnNlSW50KGUoIiNmaWxlX251bWJlcl9saW1pdF9qcyIpLnZhbCgpKSl2YXIgdD0hMTtlbHNlIHZhciB0PSEwO2lmKFUubWFrZVNvcnQodCksVS5tYWtlRmlsdGVycyh0KSxlKCIjaW5mbyIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtib290Ym94LmFsZXJ0KCc8ZGl2IGNsYXNzPSJ0ZXh0LWNlbnRlciI+PGJyLz48aW1nIHNyYz0iaW1nL2xvZ28ucG5nIiBhbHQ9InJlc3BvbnNpdmUgZmlsZW1hbmFnZXIiLz48YnIvPjxici8+PHA+PHN0cm9uZz5SRVNQT05TSVZFIGZpbGVtYW5hZ2VyIHYuJytqKyc8L3N0cm9uZz48YnIvPjxhIGhyZWY9Imh0dHA6Ly93d3cucmVzcG9uc2l2ZWZpbGVtYW5hZ2VyLmNvbSI+cmVzcG9uc2l2ZWZpbGVtYW5hZ2VyLmNvbTwvYT48L3A+PGJyLz48cD5Db3B5cmlnaHQgwqkgPGEgaHJlZj0iaHR0cDovL3d3dy50ZWNyYWlsLmNvbSIgYWx0PSJ0ZWNyYWlsIj5UZWNyYWlsPC9hPiAtIEFsYmVydG8gUGVyaXBvbGxpLiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvcD48YnIvPjxwPkxpY2Vuc2U8YnIvPjxzbWFsbD48aW1nIGFsdD0iQ3JlYXRpdmUgQ29tbW9ucyBMaWNlbnNlIiBzdHlsZT0iYm9yZGVyLXdpZHRoOjAiIHNyYz0iaHR0cDovL3Jlc3BvbnNpdmVmaWxlbWFuYWdlci5jb20vbGljZW5zZS5waHAiIC8+PGJyIC8+VGhpcyB3b3JrIGlzIGxpY2Vuc2VkIHVuZGVyIGEgPGEgcmVsPSJsaWNlbnNlIiBocmVmPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1uYy8zLjAvIj5DcmVhdGl2ZSBDb21tb25zIEF0dHJpYnV0aW9uLU5vbkNvbW1lcmNpYWwgMy4wIFVucG9ydGVkIExpY2Vuc2U8L2E+Ljwvc21hbGw+PC9wPjwvZGl2PicpfSksZSgiI2NoYW5nZV9sYW5nX2J0biIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtvKCl9KSxVLm1ha2VVcGxvYWRlcigpLGUoImJvZHkiKS5vbigia2V5cHJlc3MiLGZ1bmN0aW9uKGUpe3ZhciBhPVN0cmluZy5mcm9tQ2hhckNvZGUoZS53aGljaCk7cmV0dXJuIiciPT1hfHwnIic9PWF8fCJcXCI9PWF8fCIvIj09YT8hMTp2b2lkIDB9KSxlKCJ1bC5ncmlkIGxpIGZpZ2NhcHRpb24iKS5vbigiY2xpY2siLCdhW2RhdGEtdG9nZ2xlPSJsaWdodGJveCJdJyxmdW5jdGlvbigpe24oZGVjb2RlVVJJQ29tcG9uZW50KGUodGhpcykuYXR0cigiZGF0YS11cmwiKSkpfSksZSgiLmNyZWF0ZS1maWxlLWJ0biIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtpKCl9KSxlKCIubmV3LWZvbGRlciIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtib290Ym94LnByb21wdChlKCIjaW5zZXJ0X2ZvbGRlcl9uYW1lIikudmFsKCksZSgiI2NhbmNlbCIpLnZhbCgpLGUoIiNvayIpLnZhbCgpLGZ1bmN0aW9uKGEpe2lmKG51bGwhPT1hKXthPXkoYSkucmVwbGFjZSgiLiIsIiIpO3ZhciB0PWUoIiNzdWJfZm9sZGVyIikudmFsKCkrZSgiI2ZsZHJfdmFsdWUiKS52YWwoKTtlLmFqYXgoe3R5cGU6IlBPU1QiLHVybDoiZXhlY3V0ZS5waHA/YWN0aW9uPWNyZWF0ZV9mb2xkZXIiLGRhdGE6e3BhdGg6dCxuYW1lOmF9fSkuZG9uZShmdW5jdGlvbihhKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7d2luZG93LmxvY2F0aW9uLmhyZWY9ZSgiI3JlZnJlc2giKS5hdHRyKCJocmVmIikrIiYiKyhuZXcgRGF0ZSkuZ2V0VGltZSgpfSwzMDApfSl9fSl9KSxlKCIudmlldy1jb250cm9sbGVyIGJ1dHRvbiIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXt2YXIgYT1lKHRoaXMpO2UoIi52aWV3LWNvbnRyb2xsZXIgYnV0dG9uIikucmVtb3ZlQ2xhc3MoImJ0bi1pbnZlcnNlIiksZSgiLnZpZXctY29udHJvbGxlciBpIikucmVtb3ZlQ2xhc3MoImljb24td2hpdGUiKSxhLmFkZENsYXNzKCJidG4taW52ZXJzZSIpLGEuZmluZCgiaSIpLmFkZENsYXNzKCJpY29uLXdoaXRlIiksZS5hamF4KHt1cmw6ImFqYXhfY2FsbHMucGhwP2FjdGlvbj12aWV3JnR5cGU9IithLmF0dHIoImRhdGEtdmFsdWUiKX0pLmRvbmUoZnVuY3Rpb24oZSl7IiIhPWUmJmJvb3Rib3guYWxlcnQoZSl9KSwidW5kZWZpbmVkIiE9dHlwZW9mIGUoInVsLmdyaWQiKVswXSYmZSgidWwuZ3JpZCIpWzBdJiYoZSgidWwuZ3JpZCIpWzBdLmNsYXNzTmFtZT1lKCJ1bC5ncmlkIilbMF0uY2xhc3NOYW1lLnJlcGxhY2UoL1xibGlzdC12aWV3Lio/XGIvZywiIikpLCJ1bmRlZmluZWQiIT10eXBlb2YgZSgiLnNvcnRlci1jb250YWluZXIiKVswXSYmZSgiLnNvcnRlci1jb250YWluZXIiKVswXSYmKGUoIi5zb3J0ZXItY29udGFpbmVyIilbMF0uY2xhc3NOYW1lPWUoIi5zb3J0ZXItY29udGFpbmVyIilbMF0uY2xhc3NOYW1lLnJlcGxhY2UoL1xibGlzdC12aWV3Lio/XGIvZywiIikpO3ZhciB0PWEuYXR0cigiZGF0YS12YWx1ZSIpO2UoIiN2aWV3IikudmFsKHQpLGUoInVsLmdyaWQiKS5hZGRDbGFzcygibGlzdC12aWV3Iit0KSxlKCIuc29ydGVyLWNvbnRhaW5lciIpLmFkZENsYXNzKCJsaXN0LXZpZXciK3QpLGEuYXR0cigiZGF0YS12YWx1ZSIpPj0xP20oMTQpOihlKCJ1bC5ncmlkIGxpIikuY3NzKCJ3aWR0aCIsMTI2KSxlKCJ1bC5ncmlkIGZpZ3VyZSIpLmNzcygid2lkdGgiLDEyMikpLEMoKX0pLGEudG91Y2g/KGUoIiNoZWxwIikuc2hvdygpLGUoIi5ib3g6bm90KC5uby1lZmZlY3QpIikuc3dpcGUoe3N3aXBlTGVmdDpoLHN3aXBlUmlnaHQ6aCx0aHJlc2hvbGQ6MzB9KSk6KGUoIi50aXAiKS50b29sdGlwKHtwbGFjZW1lbnQ6ImJvdHRvbSJ9KSxlKCIudGlwLXRvcCIpLnRvb2x0aXAoe3BsYWNlbWVudDoidG9wIn0pLGUoIi50aXAtbGVmdCIpLnRvb2x0aXAoe3BsYWNlbWVudDoibGVmdCJ9KSxlKCIudGlwLXJpZ2h0IikudG9vbHRpcCh7cGxhY2VtZW50OiJyaWdodCJ9KSxlKCJib2R5IikuYWRkQ2xhc3MoIm5vLXRvdWNoIikpLGUoIi5wYXN0ZS1oZXJlLWJ0biIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXswPT1lKHRoaXMpLmhhc0NsYXNzKCJkaXNhYmxlZCIpJiZmKCl9KSxlKCIuY2xlYXItY2xpcGJvYXJkLWJ0biIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXswPT1lKHRoaXMpLmhhc0NsYXNzKCJkaXNhYmxlZCIpJiZkKCl9KSwhYS5jc3N0cmFuc2Zvcm1zKXt2YXIgcj1lKCJmaWd1cmUiKTtyLm9uKCJtb3VzZW92ZXIiLGZ1bmN0aW9uKCl7MD09ZSgiI3ZpZXciKS52YWwoKSYmZSgiI21haW4taXRlbS1jb250YWluZXIiKS5oYXNDbGFzcygibm8tZWZmZWN0LXNsaWRlIik9PT0hMSYmZSh0aGlzKS5maW5kKCIuYm94Om5vdCgubm8tZWZmZWN0KSIpLmFuaW1hdGUoe3RvcDoiLTI2cHgifSx7cXVldWU6ITEsZHVyYXRpb246MzAwfSl9KSxyLm9uKCJtb3VzZW91dCIsZnVuY3Rpb24oKXswPT1lKCIjdmlldyIpLnZhbCgpJiZlKHRoaXMpLmZpbmQoIi5ib3g6bm90KC5uby1lZmZlY3QpIikuYW5pbWF0ZSh7dG9wOiIwcHgifSx7cXVldWU6ITEsZHVyYXRpb246MzAwfSl9KX1lKHdpbmRvdykucmVzaXplKGZ1bmN0aW9uKCl7bSgyOCl9KSxtKDE0KSx2KDE9PWUoIiNjbGlwYm9hcmQiKS52YWwoKT8hMDohMSksZSgibGkuZGlyLCBsaS5maWxlIikuZHJhZ2dhYmxlKHtkaXN0YW5jZToyMCxjdXJzb3I6Im1vdmUiLGhlbHBlcjpmdW5jdGlvbigpe2UodGhpcykuZmluZCgiZmlndXJlIikuZmluZCgiLmJveCIpLmNzcygidG9wIiwiMHB4Iik7dmFyIGE9ZSh0aGlzKS5jbG9uZSgpLmNzcygiei1pbmRleCIsMWUzKS5maW5kKCIuYm94IikuY3NzKCJib3gtc2hhZG93Iiwibm9uZSIpLmNzcygiLXdlYmtpdC1ib3gtc2hhZG93Iiwibm9uZSIpLnBhcmVudCgpLnBhcmVudCgpO3JldHVybiBlKHRoaXMpLmFkZENsYXNzKCJzZWxlY3RlZCIpLGF9LHN0YXJ0OmZ1bmN0aW9uKCl7MD09ZSgiI3ZpZXciKS52YWwoKSYmZSgiI21haW4taXRlbS1jb250YWluZXIiKS5hZGRDbGFzcygibm8tZWZmZWN0LXNsaWRlIil9LHN0b3A6ZnVuY3Rpb24oKXtlKHRoaXMpLnJlbW92ZUNsYXNzKCJzZWxlY3RlZCIpLDA9PWUoIiN2aWV3IikudmFsKCkmJmUoIiNtYWluLWl0ZW0tY29udGFpbmVyIikucmVtb3ZlQ2xhc3MoIm5vLWVmZmVjdC1zbGlkZSIpfX0pLGUoImxpLmRpcixsaS5iYWNrIikuZHJvcHBhYmxlKHthY2NlcHQ6InVsLmdyaWQgbGkiLGFjdGl2ZUNsYXNzOiJ1aS1zdGF0ZS1oaWdobGlnaHQiLGhvdmVyQ2xhc3M6InVpLXN0YXRlLWhvdmVyIixkcm9wOmZ1bmN0aW9uKGEsdCl7dSh0LmRyYWdnYWJsZS5maW5kKCJmaWd1cmUiKSxlKHRoaXMpLmZpbmQoImZpZ3VyZSIpKX19KSxlKGRvY3VtZW50KS5vbigia2V5dXAiLCIjY2htb2RfZm9ybSAjY2htb2RfdmFsdWUiLGZ1bmN0aW9uKCl7YyghMCl9KSxlKGRvY3VtZW50KS5vbigiY2hhbmdlIiwiI2NobW9kX2Zvcm0gaW5wdXQiLGZ1bmN0aW9uKCl7YyghMSl9KSxlKGRvY3VtZW50KS5vbigiZm9jdXNvdXQiLCIjY2htb2RfZm9ybSAjY2htb2RfdmFsdWUiLGZ1bmN0aW9uKCl7dmFyIGE9ZSgiI2NobW9kX2Zvcm0gI2NobW9kX3ZhbHVlIik7bnVsbD09YS52YWwoKS5tYXRjaCgvXlswLTddezN9JC8pJiYoYS52YWwoYS5hdHRyKCJkYXRhLWRlZi12YWx1ZSIpKSxjKCEwKSl9KX0pLGVuY29kZVVSTD1mdW5jdGlvbihlKXtmb3IodmFyIGE9ZS5zcGxpdCgiLyIpLHQ9Mzt0PGEubGVuZ3RoO3QrKylhW3RdPWVuY29kZVVSSUNvbXBvbmVudChhW3RdKTtyZXR1cm4gYS5qb2luKCIvIil9LGFwcGx5PWZ1bmN0aW9uKGEsdCl7dmFyIG47bj0xPT1lKCIjcG9wdXAiKS52YWwoKT93aW5kb3cub3BlbmVyOndpbmRvdy5wYXJlbnQ7dmFyIGk9ZSgiI2N1cl9kaXIiKS52YWwoKSxyPWUoIiNzdWJkaXIiKS52YWwoKSxvPWUoIiNiYXNlX3VybCIpLnZhbCgpLGw9YS5zdWJzdHIoMCxhLmxhc3RJbmRleE9mKCIuIikpLGM9YS5zcGxpdCgiLiIpLnBvcCgpO2M9Yy50b0xvd2VyQ2FzZSgpO3ZhciBzPSIiLGQ9WyJvZ2ciLCJtcDMiLCJ3YXYiXSxwPVsibXA0Iiwib2dnIiwid2VibSJdLGY9ZSgiI3JldHVybl9yZWxhdGl2ZV91cmwiKS52YWwoKSx1PWVuY29kZVVSTCgoMT09Zj9yOm8raSkrYSk7aWYoIiIhPXQpaWYoMT09ZSgiI2Nyb3NzZG9tYWluIikudmFsKCkpbi5wb3N0TWVzc2FnZSh7c2VuZGVyOiJyZXNwb25zaXZlZmlsZW1hbmFnZXIiLHVybDp1LGZpZWxkX2lkOnR9LCIqIik7ZWxzZXt2YXIgdj1lKCIjIit0LG4uZG9jdW1lbnQpO3YudmFsKHUpLnRyaWdnZXIoImNoYW5nZSIpLCJmdW5jdGlvbiI9PXR5cGVvZiBuLnJlc3BvbnNpdmVfZmlsZW1hbmFnZXJfY2FsbGJhY2smJm4ucmVzcG9uc2l2ZV9maWxlbWFuYWdlcl9jYWxsYmFjayh0KSxnKCl9ZWxzZSBlLmluQXJyYXkoYyxleHRfaW1nKT4tMT9zPSc8aW1nIHNyYz0iJyt1KyciIGFsdD0iJytsKyciIC8+JzplLmluQXJyYXkoYyxwKT4tMT9zPSc8dmlkZW8gY29udHJvbHMgc291cmNlIHNyYz0iJyt1KyciIHR5cGU9InZpZGVvLycrYysnIj4nK2wrIjwvdmlkZW8+IjplLmluQXJyYXkoYyxkKT4tMT8oIm1wMyI9PWMmJihjPSJtcGVnIikscz0nPGF1ZGlvIGNvbnRyb2xzIHNyYz0iJyt1KyciIHR5cGU9ImF1ZGlvLycrYysnIj4nK2wrIjwvYXVkaW8+Iik6cz0nPGEgaHJlZj0iJyt1KyciIHRpdGxlPSInK2wrJyI+JytsKyI8L2E+IiwxPT1lKCIjY3Jvc3Nkb21haW4iKS52YWwoKT9uLnBvc3RNZXNzYWdlKHtzZW5kZXI6InJlc3BvbnNpdmVmaWxlbWFuYWdlciIsdXJsOnUsZmllbGRfaWQ6bnVsbCxodG1sOnN9LCIqIik6cGFyZW50LnRpbnltY2UubWFqb3JWZXJzaW9uPDQ/KHBhcmVudC50aW55bWNlLmFjdGl2ZUVkaXRvci5leGVjQ29tbWFuZCgibWNlSW5zZXJ0Q29udGVudCIsITEscykscGFyZW50LnRpbnltY2UuYWN0aXZlRWRpdG9yLndpbmRvd01hbmFnZXIuY2xvc2UocGFyZW50LnRpbnltY2UuYWN0aXZlRWRpdG9yLndpbmRvd01hbmFnZXIucGFyYW1zLm1jZV93aW5kb3dfaWQpKToocGFyZW50LnRpbnltY2UuYWN0aXZlRWRpdG9yLmluc2VydENvbnRlbnQocykscGFyZW50LnRpbnltY2UuYWN0aXZlRWRpdG9yLndpbmRvd01hbmFnZXIuY2xvc2UoKSl9LGFwcGx5X2xpbms9ZnVuY3Rpb24oYSx0KXtpZigxPT1lKCIjcG9wdXAiKS52YWwoKSl2YXIgbj13aW5kb3cub3BlbmVyO2Vsc2UgdmFyIG49d2luZG93LnBhcmVudDt2YXIgaT1lKCIjY3VyX2RpciIpLnZhbCgpO2k9aS5yZXBsYWNlKCJcXCIsIi8iKTt2YXIgcj1lKCIjc3ViZGlyIikudmFsKCk7cj1yLnJlcGxhY2UoIlxcIiwiLyIpO3ZhciBvPWUoIiNiYXNlX3VybCIpLnZhbCgpLGw9ZSgiI3JldHVybl9yZWxhdGl2ZV91cmwiKS52YWwoKSxjPWVuY29kZVVSTCgoMT09bD9yOm8raSkrYSk7aWYoIiIhPXQpaWYoMT09ZSgiI2Nyb3NzZG9tYWluIikudmFsKCkpbi5wb3N0TWVzc2FnZSh7c2VuZGVyOiJyZXNwb25zaXZlZmlsZW1hbmFnZXIiLHVybDpjLGZpZWxkX2lkOnR9LCIqIik7ZWxzZXt2YXIgcz1lKCIjIit0LG4uZG9jdW1lbnQpO3MudmFsKGMpLnRyaWdnZXIoImNoYW5nZSIpLCJmdW5jdGlvbiI9PXR5cGVvZiBuLnJlc3BvbnNpdmVfZmlsZW1hbmFnZXJfY2FsbGJhY2smJm4ucmVzcG9uc2l2ZV9maWxlbWFuYWdlcl9jYWxsYmFjayh0KSxnKCl9ZWxzZSBhcHBseV9hbnkoYyl9LGFwcGx5X2ltZz1mdW5jdGlvbihhLHQpe3ZhciBuO249MT09ZSgiI3BvcHVwIikudmFsKCk/d2luZG93Lm9wZW5lcjp3aW5kb3cucGFyZW50O3ZhciBpPWUoIiNjdXJfZGlyIikudmFsKCk7aT1pLnJlcGxhY2UoIlxcIiwiLyIpO3ZhciByPWUoIiNzdWJkaXIiKS52YWwoKTtyPXIucmVwbGFjZSgiXFwiLCIvIik7dmFyIG89ZSgiI2Jhc2VfdXJsIikudmFsKCksbD1lKCIjcmV0dXJuX3JlbGF0aXZlX3VybCIpLnZhbCgpLGM9ZW5jb2RlVVJMKCgxPT1sP3I6bytpKSthKTtpZigiIiE9dClpZigxPT1lKCIjY3Jvc3Nkb21haW4iKS52YWwoKSluLnBvc3RNZXNzYWdlKHtzZW5kZXI6InJlc3BvbnNpdmVmaWxlbWFuYWdlciIsdXJsOmMsZmllbGRfaWQ6dH0sIioiKTtlbHNle3ZhciBzPWUoIiMiK3Qsbi5kb2N1bWVudCk7cy52YWwoYykudHJpZ2dlcigiY2hhbmdlIiksImZ1bmN0aW9uIj09dHlwZW9mIG4ucmVzcG9uc2l2ZV9maWxlbWFuYWdlcl9jYWxsYmFjayYmbi5yZXNwb25zaXZlX2ZpbGVtYW5hZ2VyX2NhbGxiYWNrKHQpLGcoKX1lbHNlIGFwcGx5X2FueShjKX0sYXBwbHlfdmlkZW89ZnVuY3Rpb24oYSx0KXt2YXIgbjtuPTE9PWUoIiNwb3B1cCIpLnZhbCgpP3dpbmRvdy5vcGVuZXI6d2luZG93LnBhcmVudDt2YXIgaT1lKCIjY3VyX2RpciIpLnZhbCgpO2k9aS5yZXBsYWNlKCJcXCIsIi8iKTt2YXIgcj1lKCIjc3ViZGlyIikudmFsKCk7cj1yLnJlcGxhY2UoIlxcIiwiLyIpO3ZhciBvPWUoIiNiYXNlX3VybCIpLnZhbCgpLGw9ZSgiI3JldHVybl9yZWxhdGl2ZV91cmwiKS52YWwoKSxjPWVuY29kZVVSTCgoMT09bD9yOm8raSkrYSk7aWYoIiIhPXQpaWYoMT09ZSgiI2Nyb3NzZG9tYWluIikudmFsKCkpbi5wb3N0TWVzc2FnZSh7c2VuZGVyOiJyZXNwb25zaXZlZmlsZW1hbmFnZXIiLHVybDpjLGZpZWxkX2lkOnR9LCIqIik7ZWxzZXt2YXIgcz1lKCIjIit0LG4uZG9jdW1lbnQpO3MudmFsKGMpLnRyaWdnZXIoImNoYW5nZSIpLCJmdW5jdGlvbiI9PXR5cGVvZiBuLnJlc3BvbnNpdmVfZmlsZW1hbmFnZXJfY2FsbGJhY2smJm4ucmVzcG9uc2l2ZV9maWxlbWFuYWdlcl9jYWxsYmFjayh0KSxnKCl9ZWxzZSBhcHBseV9hbnkoYyl9LGFwcGx5X25vbmU9ZnVuY3Rpb24oYSl7dmFyIHQ9ZSgidWwuZ3JpZCIpLmZpbmQoJ2xpW2RhdGEtbmFtZT0iJythKyciXSBmaWdjYXB0aW9uIGEnKTt0WzFdLmNsaWNrKCksZSgiLnRpcC1yaWdodCIpLnRvb2x0aXAoImhpZGUiKX0sYXBwbHlfYW55PWZ1bmN0aW9uKGEpe2lmKDE9PWUoIiNjcm9zc2RvbWFpbiIpLnZhbCgpKXdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2Uoe3NlbmRlcjoicmVzcG9uc2l2ZWZpbGVtYW5hZ2VyIix1cmw6YSxmaWVsZF9pZDpudWxsfSwiKiIpO2Vsc2V7dmFyIHQ9ZSgiI2VkaXRvciIpLnZhbCgpO2lmKCJja2VkaXRvciI9PXQpe3ZhciBuPV8oIkNLRWRpdG9yRnVuY051bSIpO3dpbmRvdy5vcGVuZXIuQ0tFRElUT1IudG9vbHMuY2FsbEZ1bmN0aW9uKG4sYSksd2luZG93LmNsb3NlKCl9ZWxzZSBwYXJlbnQudGlueW1jZS5tYWpvclZlcnNpb248ND8ocGFyZW50LnRpbnltY2UuYWN0aXZlRWRpdG9yLndpbmRvd01hbmFnZXIucGFyYW1zLnNldFVybChhKSxwYXJlbnQudGlueW1jZS5hY3RpdmVFZGl0b3Iud2luZG93TWFuYWdlci5jbG9zZShwYXJlbnQudGlueW1jZS5hY3RpdmVFZGl0b3Iud2luZG93TWFuYWdlci5wYXJhbXMubWNlX3dpbmRvd19pZCkpOihwYXJlbnQudGlueW1jZS5hY3RpdmVFZGl0b3Iud2luZG93TWFuYWdlci5nZXRQYXJhbXMoKS5zZXRVcmwoYSkscGFyZW50LnRpbnltY2UuYWN0aXZlRWRpdG9yLndpbmRvd01hbmFnZXIuY2xvc2UoKSl9fSxhcHBseV9maWxlX2R1cGxpY2F0ZT1mdW5jdGlvbihlLGEpe3ZhciB0PWUucGFyZW50KCkucGFyZW50KCkucGFyZW50KCkucGFyZW50KCk7dC5hZnRlcigiPGxpIGNsYXNzPSciK3QuYXR0cigiY2xhc3MiKSsiJyBkYXRhLW5hbWU9JyIrdC5hdHRyKCJkYXRhLW5hbWUiKSsiJz4iK3QuaHRtbCgpKyI8L2xpPiIpO3ZhciBuPXQubmV4dCgpO2FwcGx5X2ZpbGVfcmVuYW1lKG4uZmluZCgiZmlndXJlIiksYSk7dmFyIGk9bi5maW5kKCIuZG93bmxvYWQtZm9ybSIpLHI9ImZvcm0iKyhuZXcgRGF0ZSkuZ2V0VGltZSgpO2kuYXR0cigiaWQiLHIpLGkuZmluZCgiLnRpcC1yaWdodCIpLmF0dHIoIm9uY2xpY2siLCIkKCcjIityKyInKS5zdWJtaXQoKTsiKX0sYXBwbHlfZmlsZV9yZW5hbWU9ZnVuY3Rpb24oYSx0KXt2YXIgbjthLmF0dHIoImRhdGEtbmFtZSIsdCksYS5wYXJlbnQoKS5hdHRyKCJkYXRhLW5hbWUiLHQpLGEuZmluZCgiaDQiKS5maW5kKCJhIikudGV4dCh0KTt2YXIgaT1hLmZpbmQoImEubGluayIpO249aS5hdHRyKCJkYXRhLWZpbGUiKTt2YXIgcj1uLnN1YnN0cmluZyhuLmxhc3RJbmRleE9mKCIvIikrMSksbz1uLnN1YnN0cmluZyhuLmxhc3RJbmRleE9mKCIuIikrMSk7aS5lYWNoKGZ1bmN0aW9uKCl7ZSh0aGlzKS5hdHRyKCJkYXRhLWZpbGUiLGVuY29kZVVSSUNvbXBvbmVudCh0KyIuIitvKSl9KSxhLmZpbmQoImltZyIpLmVhY2goZnVuY3Rpb24oKXt2YXIgYT1lKHRoaXMpLmF0dHIoInNyYyIpO2UodGhpcykuYXR0cigic3JjIixhLnJlcGxhY2Uocix0KyIuIitvKSsiP3RpbWU9IisobmV3IERhdGUpLmdldFRpbWUoKSksZSh0aGlzKS5hdHRyKCJhbHQiLHQrIiB0aHVtYm5haWxzIil9KTt2YXIgbD1hLmZpbmQoImEucHJldmlldyIpO249bC5hdHRyKCJkYXRhLXVybCIpLCJ1bmRlZmluZWQiIT10eXBlb2YgbiYmbiYmbC5hdHRyKCJkYXRhLXVybCIsbi5yZXBsYWNlKGVuY29kZVVSSUNvbXBvbmVudChyKSxlbmNvZGVVUklDb21wb25lbnQodCsiLiIrbykpKSxhLnBhcmVudCgpLmF0dHIoImRhdGEtbmFtZSIsdCsiLiIrbyksYS5hdHRyKCJkYXRhLW5hbWUiLHQrIi4iK28pLGEuZmluZCgiLm5hbWVfZG93bmxvYWQiKS52YWwodCsiLiIrbyk7dmFyIGM9YS5maW5kKCJhLnJlbmFtZS1maWxlIikscz1hLmZpbmQoImEuZGVsZXRlLWZpbGUiKSxkPWMuYXR0cigiZGF0YS1wYXRoIikscD1kLnJlcGxhY2Uocix0KyIuIitvKTtjLmF0dHIoImRhdGEtcGF0aCIscCkscy5hdHRyKCJkYXRhLXBhdGgiLHApfSxhcHBseV9mb2xkZXJfcmVuYW1lPWZ1bmN0aW9uKGEsdCl7YS5hdHRyKCJkYXRhLW5hbWUiLHQpLGEuZmluZCgiZmlndXJlIikuYXR0cigiZGF0YS1uYW1lIix0KTt2YXIgbj1hLmZpbmQoImg0IikuZmluZCgiYSIpLnRleHQoKTthLmZpbmQoImg0ID4gYSIpLnRleHQodCk7dmFyIGk9YS5maW5kKCIuZm9sZGVyLWxpbmsiKSxyPWkuYXR0cigiaHJlZiIpLG89ZSgiI2ZsZHJfdmFsdWUiKS52YWwoKSxsPXIucmVwbGFjZSgiZmxkcj0iK28rZW5jb2RlVVJJQ29tcG9uZW50KG4pLCJmbGRyPSIrbytlbmNvZGVVUklDb21wb25lbnQodCkpO2kuZWFjaChmdW5jdGlvbigpe2UodGhpcykuYXR0cigiaHJlZiIsbCl9KTt2YXIgYz1hLmZpbmQoImEuZGVsZXRlLWZvbGRlciIpLHM9YS5maW5kKCJhLnJlbmFtZS1mb2xkZXIiKSxkPXMuYXR0cigiZGF0YS1wYXRoIikscD1kLmxhc3RJbmRleE9mKCIvIiksZj1kLnN1YnN0cigwLHArMSkrdDtjLmF0dHIoImRhdGEtcGF0aCIsZikscy5hdHRyKCJkYXRhLXBhdGgiLGYpfSxzaG93X2FuaW1hdGlvbj1mdW5jdGlvbigpe2UoIiNsb2FkaW5nX2NvbnRhaW5lciIpLmNzcygiZGlzcGxheSIsImJsb2NrIiksZSgiI2xvYWRpbmciKS5jc3MoIm9wYWNpdHkiLCIuNyIpfSxoaWRlX2FuaW1hdGlvbj1mdW5jdGlvbigpe2UoIiNsb2FkaW5nX2NvbnRhaW5lciIpLmZhZGVPdXQoKX19KGpRdWVyeSxNb2Rlcm5penIsaW1hZ2VfZWRpdG9yKTs=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/lang/az_AZ.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJldHVybiBhcnJheSgKCiAgICAnU2VsZWN0JyA9PiAnU2XDpycsCiAgICAnRGVzZWxlY3RfQWxsJyA9PiAnRGVzZWxlY3QgQWxsJywKICAgICdTZWxlY3RfQWxsJyA9PiAnU2VsZWN0IEFsbCcsCiAgICAnRXJhc2UnID0+ICdTaWwnLAogICAgJ09wZW4nID0+ICdBw6cnLAogICAgJ0NvbmZpcm1fZGVsJyA9PiAnQnUgZmF5bMSxIHNpbG1layBpc3TJmWRpeWluaXpkyZkgyZltaW5zaW5pem1pPycsCiAgICAnQWxsJyA9PiAnSGFtxLFzxLEnLAogICAgJ0ZpbGVzJyA9PiAnRmF5bGxhcicsCiAgICAnSW1hZ2VzJyA9PiAnxZ7JmWtpbGzJmXInLAogICAgJ0FyY2hpdmVzJyA9PiAnQXJ4aXZsyZlyJywKICAgICdFcnJvcl9VcGxvYWQnID0+ICdZw7xrbMmZbcmZayBpc3TJmWRpeWluaXogZmF5bCBtYWtzaW11bSBsaW1pdGkga2XDp2RpLicsCiAgICAnRXJyb3JfZXh0ZW5zaW9uJyA9PiAnRmF5bCB1emFudMSxc8SxIGljYXrJmXNpIHlveGR1ci4nLAogICAgJ1VwbG9hZF9maWxlJyA9PiAnRmF5bCBZw7xrbMmZJywKICAgICdGaWx0ZXJzJyA9PiAnRmlsdHJsyZlyJywKICAgICdWaWRlb3MnID0+ICdWaWRlb2xhcicsCiAgICAnTXVzaWMnID0+ICdNYWhuxLFsYXInLAogICAgJ05ld19Gb2xkZXInID0+ICdZZW5pIEZvbGRlcicsCiAgICAnRm9sZGVyX0NyZWF0ZWQnID0+ICdGb2xkZXIgbcO8dsmZZmbJmXFpeXnJmXRsyZkgeWFyYWTEsWxkxLEuJywKICAgICdFeGlzdGluZ19Gb2xkZXInID0+ICdNw7Z2Y3VkIGZvbGRlcicsCiAgICAnQ29uZmlybV9Gb2xkZXJfZGVsJyA9PiAnQnUgZm9sZGVyaSB2yZkgacOnaW5kyZlraWzJmXJpIHNpbG3JmWsgaXN0yZlkaXlpbml6yZkgyZltaW5zaW5pem1pPycsCiAgICAnUmV0dXJuX0ZpbGVzX0xpc3QnID0+ICdGYXlsbGFyxLFuIHNpeWFoxLFzxLFuYSBnZXJpIHFhecSxdCcsCiAgICAnUHJldmlldycgPT4gJ8SwbGsgYmF4xLHFnycsCiAgICAnRG93bmxvYWQnID0+ICdZw7xrbMmZJywKICAgICdJbnNlcnRfRm9sZGVyX05hbWUnID0+ICdGb2xkZXIgYWTEsSDJmWxhdsmZIGV0OicsCiAgICAnUm9vdCcgPT4gJ2vDtmsnLAogICAgJ1JlbmFtZScgPT4gJ1llbmlkyZluIEFkbGFuZMSxcicsCiAgICAnQmFjaycgPT4gJ2dlcmknLAogICAgJ1ZpZXcnID0+ICdHw7Zyw7xuw7zFnycsCiAgICAnVmlld19saXN0JyA9PiAnTGlzdCBnw7Zyw7xuw7zFn8O8JywKICAgICdWaWV3X2NvbHVtbnNfbGlzdCcgPT4gJ1PDvHR1bmx1IGxpc3QgZ8O2csO8bsO8xZ/DvCcsCiAgICAnVmlld19ib3hlcycgPT4gJ1F1dHUgZ8O2csO8bsO8xZ/DvCcsCiAgICAnVG9vbGJhcicgPT4gJ0FsyZl0bMmZciBQYW5lbGknLAogICAgJ0FjdGlvbnMnID0+ICdGyZlhbGl5ecmZdGzJmXInLAogICAgJ1JlbmFtZV9leGlzdGluZ19maWxlJyA9PiAnQnUgZmF5bCB2YXIgYXJ0xLFxJywKICAgICdSZW5hbWVfZXhpc3RpbmdfZm9sZGVyJyA9PiAnQnUgZm9sZGVyIHZhciBhcnTEsXEnLAogICAgJ0VtcHR5X25hbWUnID0+ICdBZCBzYWjJmXNpIGJvxZ9kdXIuJywKICAgICdUZXh0X2ZpbHRlcicgPT4gJ2ZpbHRybMmZLi4uJywKICAgICdTd2lwZV9oZWxwJyA9PiAnVmFyaWFudGxhcsSxIGfDtnJtyZlrIMO8w6fDvG4gZmlsZS9mb2xkZXIgYWTEsW5hIHTEsWtsYXnEsW4nLAogICAgJ1VwbG9hZF9iYXNlJyA9PiAnTm9ybWFsIFnDvGtsyZltyZknLAogICAgJ1VwbG9hZF9iYXNlX2hlbHAnID0+ICJEcmFnICYgRHJvcCBmaWxlcyhtb2Rlcm4gYnJvd3NlcnMpIG9yIGNsaWNrIGluIHVwcGVyIGJ1dHRvbiB0byBBZGQgdGhlIGZpbGUocykgYW5kIGNsaWNrIG9uIFN0YXJ0IHVwbG9hZC4gV2hlbiB0aGUgdXBsb2FkIGlzIGNvbXBsZXRlLCBjbGljayB0aGUgJ1JldHVybiB0byBmaWxlcyBsaXN0JyBidXR0b24uIiwKICAgICdVcGxvYWRfYWRkX2ZpbGVzJyA9PiAnQWRkIGZpbGUocyknLAogICAgJ1VwbG9hZF9zdGFydCcgPT4gJ1N0YXJ0IHVwbG9hZCcsCiAgICAnVXBsb2FkX2Vycm9yX21lc3NhZ2VzJyA9PmFycmF5KAogICAgICAgIDEgPT4gJ1RoZSB1cGxvYWRlZCBmaWxlIGV4Y2VlZHMgdGhlIHVwbG9hZF9tYXhfZmlsZXNpemUgZGlyZWN0aXZlIGluIHBocC5pbmknLAogICAgICAgIDIgPT4gJ1RoZSB1cGxvYWRlZCBmaWxlIGV4Y2VlZHMgdGhlIE1BWF9GSUxFX1NJWkUgZGlyZWN0aXZlIHRoYXQgd2FzIHNwZWNpZmllZCBpbiB0aGUgSFRNTCBmb3JtJywKICAgICAgICAzID0+ICdUaGUgdXBsb2FkZWQgZmlsZSB3YXMgb25seSBwYXJ0aWFsbHkgdXBsb2FkZWQnLAogICAgICAgIDQgPT4gJ05vIGZpbGUgd2FzIHVwbG9hZGVkJywKICAgICAgICA2ID0+ICdNaXNzaW5nIGEgdGVtcG9yYXJ5IGZvbGRlcicsCiAgICAgICAgNyA9PiAnRmFpbGVkIHRvIHdyaXRlIGZpbGUgdG8gZGlzaycsCiAgICAgICAgOCA9PiAnQSBQSFAgZXh0ZW5zaW9uIHN0b3BwZWQgdGhlIGZpbGUgdXBsb2FkJywKICAgICAgICAncG9zdF9tYXhfc2l6ZScgPT4gJ1RoZSB1cGxvYWRlZCBmaWxlIGV4Y2VlZHMgdGhlIHBvc3RfbWF4X3NpemUgZGlyZWN0aXZlIGluIHBocC5pbmknLAogICAgICAgICdtYXhfZmlsZV9zaXplJyA9PiAnRmlsZSBpcyB0b28gYmlnJywKICAgICAgICAnbWluX2ZpbGVfc2l6ZScgPT4gJ0ZpbGUgaXMgdG9vIHNtYWxsJywKICAgICAgICAnYWNjZXB0X2ZpbGVfdHlwZXMnID0+ICdGaWxldHlwZSBub3QgYWxsb3dlZCcsCiAgICAgICAgJ21heF9udW1iZXJfb2ZfZmlsZXMnID0+ICdNYXhpbXVtIG51bWJlciBvZiBmaWxlcyBleGNlZWRlZCcsCiAgICAgICAgJ21heF93aWR0aCcgPT4gJ0ltYWdlIGV4Y2VlZHMgbWF4aW11bSB3aWR0aCcsCiAgICAgICAgJ21pbl93aWR0aCcgPT4gJ0ltYWdlIHJlcXVpcmVzIGEgbWluaW11bSB3aWR0aCcsCiAgICAgICAgJ21heF9oZWlnaHQnID0+ICdJbWFnZSBleGNlZWRzIG1heGltdW0gaGVpZ2h0JywKICAgICAgICAnbWluX2hlaWdodCcgPT4gJ0ltYWdlIHJlcXVpcmVzIGEgbWluaW11bSBoZWlnaHQnLAogICAgICAgICdhYm9ydCcgPT4gJ0ZpbGUgdXBsb2FkIGFib3J0ZWQnLAogICAgICAgICdpbWFnZV9yZXNpemUnID0+ICdGYWlsZWQgdG8gcmVzaXplIGltYWdlJwogICAgKSwKICAgICdVcGxvYWRfdXJsJyA9PiAnRnJvbSB1cmwnLAogICAgJ1R5cGVfZGlyJyA9PiAnS2F0YWxvcScsCiAgICAnVHlwZScgPT4gJ07DtnYnLAogICAgJ0RpbWVuc2lvbicgPT4gJ8OWbMOnw7wnLAogICAgJ1NpemUnID0+ICfDh8mZa2knLAogICAgJ0RhdGUnID0+ICdUYXJpeCcsCiAgICAnRmlsZW5hbWUnID0+ICdGYXlsIGFkxLEnLAogICAgJ09wZXJhdGlvbnMnID0+ICfGj23JmWxpeXlhdGxhcicsCiAgICAnRGF0ZV90eXBlJyA9PiAnZC1tLVknLAogICAgJ09LJyA9PiAnUmF6xLF5YW0nLAogICAgJ0NhbmNlbCcgPT4gJ0zJmcSfdiBFdCcsCiAgICAnU29ydGluZycgPT4gJ3PEsXJhbGFtYScsCiAgICAnU2hvd191cmwnID0+ICdVUkwgZ8O2c3TJmXInLAogICAgJ0V4dHJhY3QnID0+ICdidXJhIMOnxLF4YXJ0JywKICAgICdGaWxlX2luZm8nID0+ICdmYXlsIG3JmWx1bWF0xLEnLAogICAgJ0VkaXRfaW1hZ2UnID0+ICfFn8mZa2xpIHJlZGFrdMmZIGV0JywKICAgICdEdXBsaWNhdGUnID0+ICdEdWJsaWthdCcsCiAgICAnRm9sZGVycycgPT4gICdGb2xkZXJzJywKICAgICdDb3B5JyA9PiAnQ29weScsCiAgICAnQ3V0JyA9PiAnQ3V0JywKICAgICdQYXN0ZScgPT4gJ1Bhc3RlJywKICAgICdDQicgPT4gICdDQicsIC8vIGNsaXBib2FyZAogICAgJ1Bhc3RlX0hlcmUnID0+ICdQYXN0ZSB0byB0aGlzIGRpcmVjdG9yeScsCiAgICAnUGFzdGVfQ29uZmlybScgPT4gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBwYXN0ZSB0byB0aGlzIGRpcmVjdG9yeT8gVGhpcyB3aWxsIG92ZXJ3cml0ZSBleGlzdGluZyBmaWxlcy9mb2xkZXJzIGlmIGVuY291bnRlcmVkIGFueS4nLAogICAgJ1Bhc3RlX0ZhaWxlZCcgPT4gJ0ZhaWxlZCB0byBwYXN0ZSBmaWxlKHMpJywKICAgICdDbGVhcl9DbGlwYm9hcmQnID0+ICdDbGVhciBjbGlwYm9hcmQnLAogICAgJ0NsZWFyX0NsaXBib2FyZF9Db25maXJtJyA9PiAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNsZWFyIHRoZSBjbGlwYm9hcmQ/JywKICAgICdGaWxlc19PTl9DbGlwYm9hcmQnID0+ICdUaGVyZSBhcmUgZmlsZXMgb24gdGhlIGNsaXBib2FyZC4nLAogICAgJ0NvcHlfQ3V0X1NpemVfTGltaXQnID0+ICdUaGUgc2VsZWN0ZWQgZmlsZXMvZm9sZGVycyBhcmUgdG9vIGJpZyB0byAlcy4gTGltaXQ6ICVkIE1CL29wZXJhdGlvbicsIC8vICVzID0gY3V0IG9yIGNvcHkKICAgICdDb3B5X0N1dF9Db3VudF9MaW1pdCcgPT4gJ1lvdSBzZWxlY3RlZCB0b28gbWFueSBmaWxlcy9mb2xkZXJzIHRvICVzLiBMaW1pdDogJWQgZmlsZXMvb3BlcmF0aW9uJywgLy8gJXMgPSBjdXQgb3IgY29weQogICAgJ0NvcHlfQ3V0X05vdF9BbGxvd2VkJyA9PiAnWW91IGFyZSBub3QgYWxsb3dlZCB0byAlcyBmaWxlcy4nLCAvLyAlcygxKSA9IGN1dCBvciBjb3B5ID0+ICAlcygyKSA9IGZpbGVzIG9yIGZvbGRlcnMKICAgICdJbWFnZV9FZGl0b3JfTm9fU2F2ZScgPT4gICdDb3VsZCBub3Qgc2F2ZSBpbWFnZScsCiAgICAnSW1hZ2VfRWRpdG9yX0V4aXQnID0+ICJFeGl0IiwKICAgICdJbWFnZV9FZGl0b3JfU2F2ZScgPT4gIlNhdmUiLAogICAgJ1ppcF9Ob19FeHRyYWN0JyA9PiAgJ0NvdWxkIG5vdCBleHRyYWN0LiBGaWxlIG1pZ2h0IGJlIGNvcnJ1cHQuJywKICAgICdaaXBfSW52YWxpZCcgPT4gICdUaGlzIGV4dGVuc2lvbiBpcyBub3Qgc3VwcG9ydGVkLiBWYWxpZDogemlwLCBneiwgdGFyLicsCiAgICAnRGlyX05vX1dyaXRlJyA9PiAgJ1RoZSBkaXJlY3RvcnkgeW91IHNlbGVjdGVkIGlzIG5vdCB3cml0YWJsZS4nLAogICAgJ0Z1bmN0aW9uX0Rpc2FibGVkJyA9PiAgJ1RoZSAlcyBmdW5jdGlvbiBoYXMgYmVlbiBkaXNhYmxlZCBieSB0aGUgc2VydmVyLicsIC8vICVzID0gY3V0IG9yIGNvcHkKICAgICdGaWxlX1Blcm1pc3Npb24nID0+ICAnRmlsZSBwZXJtaXNzaW9uJywKICAgICdGaWxlX1Blcm1pc3Npb25fTm90X0FsbG93ZWQnID0+ICAnQ2hhbmdpbmcgJXMgcGVybWlzc2lvbnMgYXJlIG5vdCBhbGxvd2VkLicsIC8vICVzID0gZmlsZXMgb3IgZm9sZGVycwogICAgJ0ZpbGVfUGVybWlzc2lvbl9SZWN1cnNpdmUnID0+ICAnQXBwbHkgcmVjdXJzaXZlbHk/JywKICAgICdGaWxlX1Blcm1pc3Npb25fV3JvbmdfTW9kZScgPT4gICJUaGUgc3VwcGxpZWQgcGVybWlzc2lvbiBtb2RlIGlzIGluY29ycmVjdC4iLAogICAgJ1VzZXInID0+ICAnVXNlcicsCiAgICAnR3JvdXAnID0+ICAnR3JvdXAnLAogICAgJ1llcycgPT4gICdZZXMnLAogICAgJ05vJyA9PiAgJ05vJywKICAgICdMYW5nX05vdF9Gb3VuZCcgPT4gICdDb3VsZCBub3QgZmluZCBsYW5ndWFnZS4nLAogICAgJ0xhbmdfQ2hhbmdlJyA9PiAgJ0NoYW5nZSB0aGUgbGFuZ3VhZ2UnLAogICAgJ0ZpbGVfTm90X0ZvdW5kJyA9PiAgJ0NvdWxkIG5vdCBmaW5kIHRoZSBmaWxlLicsCiAgICAnRmlsZV9PcGVuX0VkaXRfTm90X0FsbG93ZWQnID0+ICAnWW91IGFyZSBub3QgYWxsb3dlZCB0byAlcyB0aGlzIGZpbGUuJywgLy8gJXMgPSBvcGVuIG9yIGVkaXQKICAgICdFZGl0JyA9PiAgJ0VkaXQnLAogICAgJ0VkaXRfRmlsZScgPT4gICJFZGl0IGZpbGUncyBjb250ZW50IiwKICAgICdGaWxlX1NhdmVfT0snID0+ICAiRmlsZSBzdWNjZXNzZnVsbHkgc2F2ZWQuIiwKICAgICdGaWxlX1NhdmVfRXJyb3InID0+ICAiVGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIHNhdmluZyB0aGUgZmlsZS4iLAogICAgJ05ld19GaWxlJyA9PiAnTmV3IEZpbGUnLAogICAgJ05vX0V4dGVuc2lvbicgPT4gJ1lvdSBoYXZlIHRvIGFkZCBhIGZpbGUgZXh0ZW5zaW9uLicsCiAgICAnVmFsaWRfRXh0ZW5zaW9ucycgPT4gJ1ZhbGlkIGV4dGVuc2lvbnM6ICVzJywgLy8gJXMgPSB0eHQgPT4gbG9nIGV0Yy4KICAgICdVcGxvYWRfbWVzc2FnZScgPT4gIkRyb3AgZmlsZSBoZXJlIHRvIHVwbG9hZCIsCgogICAgJ1NFUlZFUiBFUlJPUicgPT4gIlNFUlZFUiBFUlJPUiIsCiAgICAnZm9yYmlkZGVuJyA9PiAiRm9yYmlkZW4iLAogICAgJ3dyb25nIHBhdGgnID0+ICJXcm9uZyBwYXRoIiwKICAgICd3cm9uZyBuYW1lJyA9PiAiV3JvbmcgbmFtZSIsCiAgICAnd3JvbmcgZXh0ZW5zaW9uJyA9PiAiV3JvbmcgZXh0ZW5zaW9uIiwKICAgICd3cm9uZyBvcHRpb24nID0+ICJXcm9uZyBvcHRpb24iLAogICAgJ3dyb25nIGRhdGEnID0+ICJXcm9uZyBkYXRhIiwKICAgICd3cm9uZyBhY3Rpb24nID0+ICJXcm9uZyBhY3Rpb24iLAogICAgJ3dyb25nIHN1Yi1hY3Rpb24nID0+ICJXcm9uZyBzdWItYWN0aW8iLAogICAgJ25vIGFjdGlvbiBwYXNzZWQnID0+ICJObyBhY3Rpb24gcGFzc2VkIiwKICAgICdubyBwYXRoJyA9PiAiTm8gcGF0aCIsCiAgICAnbm8gZmlsZScgPT4gIk5vIGZpbGUiLAogICAgJ3ZpZXcgdHlwZSBudW1iZXIgbWlzc2luZycgPT4gIlZpZXcgdHlwZSBudW1iZXIgbWlzc2luZyIsCiAgICAnTm90IGVub3VnaCBNZW1vcnknID0+ICJOb3QgZW5vdWdoIE1lbW9yeSIsCiAgICAnbWF4X3NpemVfcmVhY2hlZCcgPT4gIllvdXIgaW1hZ2UgZm9sZGVyIGhhcyByZWFjaCBpdHMgbWF4aW1hbGUgc2l6ZSBvZiAlZCBNQi4iLCAvLyVkID0gbWF4IG92ZXJhbGwgc2l6ZQogICAgJ0InID0+ICJCIiwKICAgICdLQicgPT4gIktCIiwKICAgICdNQicgPT4gIk1CIiwKICAgICdHQicgPT4gIkdCIiwKICAgICdUQicgPT4gIlRCIiwKICAgICd0b3RhbCBzaXplJyA9PiAiVG90YWwgc2l6ZSIsCik7Cg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/lang/bg_BG.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJldHVybiBhcnJheSgKCiAgICAnU2VsZWN0JyA9PiAn0JjQt9Cx0LXRgNC4JywKICAgICdEZXNlbGVjdF9BbGwnID0+ICdEZXNlbGVjdCBBbGwnLAogICAgJ1NlbGVjdF9BbGwnID0+ICdTZWxlY3QgQWxsJywKICAgICdFcmFzZScgPT4gJ9CY0LfRgtGA0LjQuScsCiAgICAnT3BlbicgPT4gJ9Ce0YLQstCw0YDRj9C90LUnLAogICAgJ0NvbmZpcm1fZGVsJyA9PiAn0KHQuNCz0YPRgNC90Lgg0LvQuCDRgdGC0LUsINGH0LUg0LjRgdC60LDRgtC1INC00LAg0LjQt9GC0YDQuNC10YLQtSDRgtC+0LfQuCDRhNCw0LnQuz8nLAogICAgJ0FsbCcgPT4gJ9CS0YHQuNGH0LrQvicsCiAgICAnRmlsZXMnID0+ICfQpNCw0LnQu9CwJywKICAgICdJbWFnZXMnID0+ICfQmNC30L7QsdGA0LDQttC10L3QuNGPJywKICAgICdBcmNoaXZlcycgPT4gJ9CQ0YDRhdC40LLQuCcsCiAgICAnRXJyb3JfVXBsb2FkJyA9PiAn0JrQsNGH0LXQvdC40Y/RgiDRhNCw0LnQuyDQvdCw0LTQvNC40L3QsNCy0LAg0LzQsNC60YHQuNC80LDQu9C90L4g0YDQsNC30YDQtdGI0LXQvdCw0YLQsCDQs9C+0LvQtdC80LjQvdCwLicsCiAgICAnRXJyb3JfZXh0ZW5zaW9uJyA9PiAn0KLQvtCy0LAg0YTQsNC50LvQvtCy0L4g0YDQsNC30YjQuNGA0LXQvdC40LUg0L3QtSDQtSDQv9C+0LfQstC+0LvQtdC90L4uJywKICAgICdVcGxvYWRfZmlsZScgPT4gJ9Ca0LDRh9C10YLQtSDRhNCw0LnQuycsCiAgICAnRmlsdGVycycgPT4gJ9Cf0LDQv9C60LAnLAogICAgJ1ZpZGVvcycgPT4gJ9CS0LjQtNC10L4nLAogICAgJ011c2ljJyA9PiAn0JzRg9C30LjQutCwJywKICAgICdOZXdfRm9sZGVyJyA9PiAn0J3QvtCy0LAg0L/QsNC/0LrQsCcsCiAgICAnRm9sZGVyX0NyZWF0ZWQnID0+ICfQn9Cw0L/QutCw0YLQsCDQtSDQv9GA0LDQstC40LvQvdC+INGB0YrQt9C00LDQtNC10L3QsCcsCiAgICAnRXhpc3RpbmdfRm9sZGVyJyA9PiAn0KHRitGJ0LXRgdGC0LLRg9Cy0LDRidCwINC/0LDQv9C60LAnLAogICAgJ0NvbmZpcm1fRm9sZGVyX2RlbCcgPT4gJ9Ch0LjQs9GD0YDQvdC4INC70Lgg0YHRgtC1LCDRh9C1INC40YHQutCw0YLQtSDQtNCwINC40LfRgtGA0LjQtdGC0LUg0L/QsNC/0LrQsNGC0LAg0Lgg0LLRgdC40YfQutC+ID0+ICDQutC+0LXRgtC+INGB0LUg0YHRitC00YrRgNC20LAg0YEg0L3QtdGPPycsCiAgICAnUmV0dXJuX0ZpbGVzX0xpc3QnID0+ICfQktGA0YrRidCw0L3QtSDQutGK0Lwg0YHQv9C40YHRitC60LAg0YEg0YTQsNC50LvQvtCy0LUnLAogICAgJ1ByZXZpZXcnID0+ICfQn9GA0LXQs9C70LXQtCcsCiAgICAnRG93bmxvYWQnID0+ICfQodCy0LDQu9C4JywKICAgICdJbnNlcnRfRm9sZGVyX05hbWUnID0+ICfQktGK0LLQtdC00LXRgtC1INC40LzQtSDQvdCwINC/0LDQv9C60LDRgtCwOicsCiAgICAnUm9vdCcgPT4gJ9Ce0YHQvdC+0LLQvdCwJywKICAgICdSZW5hbWUnID0+ICfQn9GA0LXQuNC80LXQvdGD0LLQsNC90LUnLAogICAgJ0JhY2snID0+ICfQntCx0YDQsNGC0L3QvicsCiAgICAnVmlldycgPT4gJ9CY0LfQs9C70LXQtCcsCiAgICAnVmlld19saXN0JyA9PiAn0KHQv9C40YHRitC6JywKICAgICdWaWV3X2NvbHVtbnNfbGlzdCcgPT4gJ9Ca0L7Qu9C+0L3QuCcsCiAgICAnVmlld19ib3hlcycgPT4gJ9Ca0YPRgtC40LgnLAogICAgJ1Rvb2xiYXInID0+ICfQm9C10L3RgtCwINGBINC40L3RgdGC0YDRg9C80LXQvdGC0LgnLAogICAgJ0FjdGlvbnMnID0+ICfQlNC10LnRgdGC0LLQuNGPJywKICAgICdSZW5hbWVfZXhpc3RpbmdfZmlsZScgPT4gJ9Ck0LDQudC70YrRgiDQstC10YfQtSDRgdGK0YnQtdGB0YLQstGD0LLQsCcsCiAgICAnUmVuYW1lX2V4aXN0aW5nX2ZvbGRlcicgPT4gJ9Cf0LDQv9C60LDRgtCwINCy0LXRh9C1INGB0YrRidC10YHRgtCy0YPQstCwJywKICAgICdFbXB0eV9uYW1lJyA9PiAn0JjQvNC10YLQviDQvdCwINGE0LDQudC70LAg0LUg0L/RgNCw0LfQvdC+JywKICAgICdUZXh0X2ZpbHRlcicgPT4gJ9GC0LXQutGB0YLQvtCyINGE0LjQu9GC0YrRgCcsCiAgICAnU3dpcGVfaGVscCcgPT4gJ9Cf0LvRitC30L3QtdGC0LUg0LjQvNC10YLQviDQvdCwINGE0LDQudC70LAv0L/QsNC/0LrQsNGC0LAg0LfQsCDQvtC/0YbQuNC4JywKICAgICdVcGxvYWRfYmFzZScgPT4gJ9CR0LDQt9C+0LLQviDQutCw0YfQstCw0L3QtScsCiAgICAnVXBsb2FkX2Jhc2VfaGVscCcgPT4gIkRyYWcgJiBEcm9wIGZpbGVzKG1vZGVybiBicm93c2Vycykgb3IgY2xpY2sgaW4gdXBwZXIgYnV0dG9uIHRvIEFkZCB0aGUgZmlsZShzKSBhbmQgY2xpY2sgb24gU3RhcnQgdXBsb2FkLiBXaGVuIHRoZSB1cGxvYWQgaXMgY29tcGxldGUsIGNsaWNrIHRoZSAnUmV0dXJuIHRvIGZpbGVzIGxpc3QnIGJ1dHRvbi4iLAogICAgJ1VwbG9hZF9hZGRfZmlsZXMnID0+ICdBZGQgZmlsZShzKScsCiAgICAnVXBsb2FkX3N0YXJ0JyA9PiAnU3RhcnQgdXBsb2FkJywKICAgICdVcGxvYWRfZXJyb3JfbWVzc2FnZXMnID0+YXJyYXkoCiAgICAgICAgMSA9PiAnVGhlIHVwbG9hZGVkIGZpbGUgZXhjZWVkcyB0aGUgdXBsb2FkX21heF9maWxlc2l6ZSBkaXJlY3RpdmUgaW4gcGhwLmluaScsCiAgICAgICAgMiA9PiAnVGhlIHVwbG9hZGVkIGZpbGUgZXhjZWVkcyB0aGUgTUFYX0ZJTEVfU0laRSBkaXJlY3RpdmUgdGhhdCB3YXMgc3BlY2lmaWVkIGluIHRoZSBIVE1MIGZvcm0nLAogICAgICAgIDMgPT4gJ1RoZSB1cGxvYWRlZCBmaWxlIHdhcyBvbmx5IHBhcnRpYWxseSB1cGxvYWRlZCcsCiAgICAgICAgNCA9PiAnTm8gZmlsZSB3YXMgdXBsb2FkZWQnLAogICAgICAgIDYgPT4gJ01pc3NpbmcgYSB0ZW1wb3JhcnkgZm9sZGVyJywKICAgICAgICA3ID0+ICdGYWlsZWQgdG8gd3JpdGUgZmlsZSB0byBkaXNrJywKICAgICAgICA4ID0+ICdBIFBIUCBleHRlbnNpb24gc3RvcHBlZCB0aGUgZmlsZSB1cGxvYWQnLAogICAgICAgICdwb3N0X21heF9zaXplJyA9PiAnVGhlIHVwbG9hZGVkIGZpbGUgZXhjZWVkcyB0aGUgcG9zdF9tYXhfc2l6ZSBkaXJlY3RpdmUgaW4gcGhwLmluaScsCiAgICAgICAgJ21heF9maWxlX3NpemUnID0+ICdGaWxlIGlzIHRvbyBiaWcnLAogICAgICAgICdtaW5fZmlsZV9zaXplJyA9PiAnRmlsZSBpcyB0b28gc21hbGwnLAogICAgICAgICdhY2NlcHRfZmlsZV90eXBlcycgPT4gJ0ZpbGV0eXBlIG5vdCBhbGxvd2VkJywKICAgICAgICAnbWF4X251bWJlcl9vZl9maWxlcycgPT4gJ01heGltdW0gbnVtYmVyIG9mIGZpbGVzIGV4Y2VlZGVkJywKICAgICAgICAnbWF4X3dpZHRoJyA9PiAnSW1hZ2UgZXhjZWVkcyBtYXhpbXVtIHdpZHRoJywKICAgICAgICAnbWluX3dpZHRoJyA9PiAnSW1hZ2UgcmVxdWlyZXMgYSBtaW5pbXVtIHdpZHRoJywKICAgICAgICAnbWF4X2hlaWdodCcgPT4gJ0ltYWdlIGV4Y2VlZHMgbWF4aW11bSBoZWlnaHQnLAogICAgICAgICdtaW5faGVpZ2h0JyA9PiAnSW1hZ2UgcmVxdWlyZXMgYSBtaW5pbXVtIGhlaWdodCcsCiAgICAgICAgJ2Fib3J0JyA9PiAnRmlsZSB1cGxvYWQgYWJvcnRlZCcsCiAgICAgICAgJ2ltYWdlX3Jlc2l6ZScgPT4gJ0ZhaWxlZCB0byByZXNpemUgaW1hZ2UnCiAgICApLAogICAgJ1VwbG9hZF91cmwnID0+ICdGcm9tIHVybCcsCiAgICAnVHlwZV9kaXInID0+ICfQv9Cw0L/QutCwJywKICAgICdUeXBlJyA9PiAn0KLQuNC/JywKICAgICdEaW1lbnNpb24nID0+ICfQoNCw0LfQvNC10YAnLAogICAgJ1NpemUnID0+ICfQk9C+0LvQtdC80LjQvdCwJywKICAgICdEYXRlJyA9PiAn0JTQsNGC0LAnLAogICAgJ0ZpbGVuYW1lJyA9PiAn0JjQvNC1JywKICAgICdPcGVyYXRpb25zJyA9PiAn0J7Qv9C10YDQsNGG0LjQuCcsCiAgICAnRGF0ZV90eXBlJyA9PiAneS1tLWQnLAogICAgJ09LJyA9PiAn0J7QmicsCiAgICAnQ2FuY2VsJyA9PiAn0J7RgtC60LDQtycsCiAgICAnU29ydGluZycgPT4gJ9GB0L7RgNGC0LjRgNCw0L3QtScsCiAgICAnU2hvd191cmwnID0+ICfQv9C+0LrQsNC20LggVVJMJywKICAgICdFeHRyYWN0JyA9PiAn0YDQsNC30LDRgNGF0LjQstC40YDQsNC5INGC0YPQuicsCiAgICAnRmlsZV9pbmZvJyA9PiAn0LjQvdGE0L7RgNC80LDRhtC40Y8g0LfQsCDRhNCw0LnQuycsCiAgICAnRWRpdF9pbWFnZScgPT4gJ9GA0LXQtNCw0LrRgtC40YDQsNC5INC40LfQvtCx0YDQsNC20LXQvdC40LUnLAogICAgJ0R1cGxpY2F0ZScgPT4gJ9CU0YPQsdC70LjQutCw0YInLAogICAgJ0ZvbGRlcnMnID0+ICAn0J/QsNC/0LrQuCcsCiAgICAnQ29weScgPT4gJ9Ca0L7Qv9C40YDQsNC90LUnLAogICAgJ0N1dCcgPT4gJ9CY0LfRgNGP0LfQstCw0L3QtScsCiAgICAnUGFzdGUnID0+ICfQn9C+0YHRgtCw0LLRj9C90LUnLAogICAgJ0NCJyA9PiAgJ0NCJywgLy8gY2xpcGJvYXJkCiAgICAnUGFzdGVfSGVyZScgPT4gJ9Cf0L7RgdGC0LDQstC4INCyINGC0LDQt9C4INC/0LDQv9C60LAnLAogICAgJ1Bhc3RlX0NvbmZpcm0nID0+ICfQodC40LPRg9GA0L3QuCDQu9C4INGB0YLQtSwg0YfQtSDQuNGB0LrQsNGC0LUg0LTQsCDQv9C+0YHRgtCw0LLQuNGC0LUg0LIg0YLQsNC30Lgg0L/QsNC/0LrQsD8g0KLQvtCy0LAg0LzQvtC20LUg0LTQsCDQv9GA0LXQt9Cw0L/QuNGI0LUg0YTQsNC50LvQvtCy0LXRgtC1INCyINC90LXRjy4nLAogICAgJ1Bhc3RlX0ZhaWxlZCcgPT4gJ9CT0YDQtdGI0LrQsCDQv9GA0Lgg0L/QvtGB0YLQsNCy0Y/QvdC10YLQviDQvdCwINGE0LDQudC70LAv0L7QstC10YLQtScsCiAgICAnQ2xlYXJfQ2xpcGJvYXJkJyA9PiAn0JjQt9GH0LjRgdGC0Lgg0LrQu9C40L/QsdC+0YDQtNCwJywKICAgICdDbGVhcl9DbGlwYm9hcmRfQ29uZmlybScgPT4gJ9Ch0LjQs9GD0YDQvdC4INC70Lgg0YHRgtC1LCDRh9C1INC40YHQutCw0YLQtSDQtNCwINC40LfRh9C40YHRgtC40YLQtSDQutC70LjQv9Cx0L7RgNC00LA/JywKICAgICdGaWxlc19PTl9DbGlwYm9hcmQnID0+ICfQmNC80LAg0YTQsNC50LvQvtCy0LUg0LIg0LrQu9C40L/QsdC+0YDQtNCwLicsCiAgICAnQ29weV9DdXRfU2l6ZV9MaW1pdCcgPT4gJ9CY0LfQsdGA0LDQvdC40YLQtSDRhNCw0LnQu9C+0LLQtS/Qv9Cw0L/QutC4INGB0LAg0L/RgNC10LrQsNC70LXQvdC+INCz0L7Qu9C10LzQuCDQt9CwICVzLiDQm9C40LzQuNGCOiAlZCBNQi/QtNC10LnRgdGC0LLQuNC1JywgLy8gJXMgPSBjdXQgb3IgY29weQogICAgJ0NvcHlfQ3V0X0NvdW50X0xpbWl0JyA9PiAn0JjQt9Cx0YDQsNC70Lgg0YHRgtC1INC/0YDQtdC60LDQu9C10L3QtdC90L4g0LzQvdC+0LPQviDRhNCw0LnQu9C+0LLQtS/Qv9Cw0L/QutC4INC30LAgJXMuINCb0LjQvNC40YI6ICVkINGE0LDQudC70LAv0LTQtdC50YHRgtCy0LjQtScsIC8vICVzID0gY3V0IG9yIGNvcHkKICAgICdDb3B5X0N1dF9Ob3RfQWxsb3dlZCcgPT4gJ9Cd0Y/QvNCw0YLQtSDQv9GA0LDQstC+INC30LAgJXMg0L3QsCDRhNCw0LnQu9C+0LLQtS4nLCAvLyAlcygxKSA9IGN1dCBvciBjb3B5ID0+ICAlcygyKSA9IGZpbGVzIG9yIGZvbGRlcnMKICAgICdJbWFnZV9FZGl0b3JfTm9fU2F2ZScgPT4gICfQmNC30L7QsdGA0LDQttC10L3QuNC10YLQviDQvdC1INC80L7QttC1INC00LAg0LHRitC00LUg0LfQsNC/0LjRgdCw0L3QvicsCiAgICAnSW1hZ2VfRWRpdG9yX0V4aXQnID0+ICJFeGl0IiwKICAgICdJbWFnZV9FZGl0b3JfU2F2ZScgPT4gIlNhdmUiLAogICAgJ1ppcF9Ob19FeHRyYWN0JyA9PiAgJ9Cd0LXQstGK0LfQvNC+0LbQvdC+INGA0LDQt9Cw0YDRhdC40LLQuNGA0LDQvdC1LiDQpNCw0LnQu9GK0YIg0LLQtdGA0L7Rj9GC0L3QviDQtSDQv9C+0LLRgNC10LTQtdC9LicsCiAgICAnWmlwX0ludmFsaWQnID0+ICAn0KLQvtCy0LAg0YDQsNC30YjQuNGA0LXQvdC1INC90LUg0YHQtSDQv9C+0LTQtNGK0YDQttCwLiDQktCw0LvQuNC00L3QuDogemlwLCBneiwgdGFyLicsCiAgICAnRGlyX05vX1dyaXRlJyA9PiAgJ9Cd0Y/QvNCw0YLQtSDQv9GA0LDQstCwINC30LAg0LfQsNC/0LjRgSDQsiDQuNC30LHRgNCw0L3QsNGC0LAg0L/QsNC/0LrQsC4nLAogICAgJ0Z1bmN0aW9uX0Rpc2FibGVkJyA9PiAgJyVzLdGC0L4g0LUg0LfQsNCx0YDQsNC90LXQvdC+INC90LAg0YHRitGA0LLRitGA0LAuJywgLy8gJXMgPSBjdXQgb3IgY29weQogICAgJ0ZpbGVfUGVybWlzc2lvbicgPT4gICfQpNCw0LnQu9C+0LLQuCDQv9GA0LDQstCwJywKICAgICdGaWxlX1Blcm1pc3Npb25fTm90X0FsbG93ZWQnID0+ICAn0J3QtSDQtSDRgNCw0LfRgNC10YjQtdC90LAg0L/RgNC+0LzRj9C90LDRgtCwINC90LAg0L/RgNCw0LLQsCDQt9CwICVzLicsIC8vICVzID0gZmlsZXMgb3IgZm9sZGVycwogICAgJ0ZpbGVfUGVybWlzc2lvbl9SZWN1cnNpdmUnID0+ICAn0KDQtdC60YPRgNGB0LjQstC90L4g0L/RgNC40LvQsNCz0LDQvdC1PycsCiAgICAnRmlsZV9QZXJtaXNzaW9uX1dyb25nX01vZGUnID0+ICAi0JfQsNC00LDQtNC10L3QuNGC0LUg0L/RgNCw0LLQsCDRgdCwINCz0YDQtdGI0L3QuC4iLAogICAgJ1VzZXInID0+ICAn0J/QvtGC0YDQtdCx0LjRgtC10LsnLAogICAgJ0dyb3VwJyA9PiAgJ9CT0YDRg9C/0LAnLAogICAgJ1llcycgPT4gICfQlNCwJywKICAgICdObycgPT4gICfQndC1JywKICAgICdMYW5nX05vdF9Gb3VuZCcgPT4gICfQldC30LjQutGK0YIg0L3QtSDQvNC+0LbQtSDQtNCwINCx0YrQtNC1INC90LDQvNC10YDQtdC9LicsCiAgICAnTGFuZ19DaGFuZ2UnID0+ICAn0KHQvNC10L3QuCDQtdC30LjQutCwJywKICAgICdGaWxlX05vdF9Gb3VuZCcgPT4gICfQpNCw0LnQu9GK0YIg0L3QtSDQvNC+0LbQtSDQtNCwINCx0YrQtNC1INC90LDQvNC10YDQtdC9LicsCiAgICAnRmlsZV9PcGVuX0VkaXRfTm90X0FsbG93ZWQnID0+ICAn0J3Rj9C80LDRgtC1INGA0LDQt9GA0LXRiNC10L3QuNC1INC30LAgJXMg0L3QsCDRgtC+0LfQuCDRhNCw0LnQuy4nLCAvLyAlcyA9IG9wZW4gb3IgZWRpdAogICAgJ0VkaXQnID0+ICAn0KDQtdC00LDQutGG0LjRjycsCiAgICAnRWRpdF9GaWxlJyA9PiAgItCg0LXQtNCw0LrRhtC40Y8g0L3QsCDRgdGK0LTRitGA0LbQsNC90LjQtdGC0L4g0L3QsCDRhNCw0LnQu9CwIiwKICAgICdGaWxlX1NhdmVfT0snID0+ICAi0KTQsNC50LvRitGCINC1INGD0YHQv9C10YjQvdC+INC30LDQv9C40YHQsNC9LiIsCiAgICAnRmlsZV9TYXZlX0Vycm9yJyA9PiAgItCS0YrQt9C90LjQutC90LAg0LPRgNC10YjQutCwINC/0YDQuCDQt9Cw0L/QuNGB0LLQsNC90LXRgtC+INC90LAg0YTQsNC50LvQsC4iLAogICAgJ05ld19GaWxlJyA9PiAn0J3QvtCyINGE0LDQudC7JywKICAgICdOb19FeHRlbnNpb24nID0+ICfQotGA0Y/QsdCy0LAg0LTQsCDQt9Cw0LTQsNC00LXRgtC1INGA0LDQt9GI0LjRgNC10L3QuNC1INC90LAg0YTQsNC50LvQsC4nLAogICAgJ1ZhbGlkX0V4dGVuc2lvbnMnID0+ICfQktCw0LvQuNC00L3QuCDRgNCw0LfRiNC40YDQtdC90LjRjzogJXMnLCAvLyAlcyA9IHR4dCA9PiBsb2cgZXRjLgogICAgJ1VwbG9hZF9tZXNzYWdlJyA9PiAi0J/RgNC+0LLQu9Cw0YfQtdGC0LUg0Lgg0YHQv9GD0YHQvdC10YLQtSDRhNCw0LnQu9CwINGC0YPQuiDQt9CwINC00LAg0LPQviDQutCw0YfQuNGC0LUuIiwKCiAgICAnU0VSVkVSIEVSUk9SJyA9PiAi0KHQqtCg0JLQqtCg0J3QkCDQk9Cg0JXQqNCa0JAiLAogICAgJ2ZvcmJpZGRlbicgPT4gItCX0LDQsdGA0LDQvdC10L3QviIsCiAgICAnd3JvbmcgcGF0aCcgPT4gItCT0YDQtdGI0LXQvSDQv9GK0YIiLAogICAgJ3dyb25nIG5hbWUnID0+ICLQk9GA0LXRiNC90L4g0LjQvNC1IiwKICAgICd3cm9uZyBleHRlbnNpb24nID0+ICLQk9GA0LXRiNC90L4g0YDQsNC30YjQuNGA0LXQvdC40LUiLAogICAgJ3dyb25nIG9wdGlvbicgPT4gItCT0YDQtdGI0L3QsCDQvtC/0YbQuNGPIiwKICAgICd3cm9uZyBkYXRhJyA9PiAi0JPRgNC10YjQvdC4INC00LDQvdC90LgiLAogICAgJ3dyb25nIGFjdGlvbicgPT4gItCT0YDQtdGI0L3QviDQtNC10LnRgdGC0LLQuNC1IiwKICAgICd3cm9uZyBzdWItYWN0aW9uJyA9PiAi0JPRgNC10YjQvdC+INCy0YLQvtGA0LjRh9C90L4g0LTQtdC50YHRgtCy0LjQtSIsCiAgICAnbm8gYWN0aW9uIHBhc3NlZCcgPT4gItCd0LUg0LUg0L/QvtC00LDQtNC10L3QviDQtNC10LnRgdGC0LLQuNC1IiwKICAgICdubyBwYXRoJyA9PiAi0J3Rj9C80LAg0L/RitGCIiwKICAgICdubyBmaWxlJyA9PiAi0J3Rj9C80LAg0YTQsNC50LsiLAogICAgJ3ZpZXcgdHlwZSBudW1iZXIgbWlzc2luZycgPT4gItCd0L7QvNC10YDRitGCINC90LAg0L/RgNC10LPQu9C10LTQsCDQu9C40L/RgdCy0LAiLAogICAgJ05vdCBlbm91Z2ggTWVtb3J5JyA9PiAi0J3QtdC00L7RgdGC0LDRgtGK0YfQvdCwINC/0LDQvNC10YIiLAogICAgJ21heF9zaXplX3JlYWNoZWQnID0+ICLQktCw0YjQsNGC0LAg0L/QsNC/0LrQsCDQt9CwINC40LfQvtCx0YDQsNC20LXQvdC40Y8g0LTQvtGB0YLQuNCz0L3QsCDQvNCw0LrRgdC40LzRg9C80YrRgiDQvtGCICVkIE1CLiIsIC8vJWQgPSBtYXggb3ZlcmFsbCBzaXplCiAgICAnQicgPT4gIkIiLAogICAgJ0tCJyA9PiAiS0IiLAogICAgJ01CJyA9PiAiTUIiLAogICAgJ0dCJyA9PiAiR0IiLAogICAgJ1RCJyA9PiAiVEIiLAogICAgJ3RvdGFsIHNpemUnID0+ICLQntCx0Ykg0YDQsNC30LzQtdGAIiwKKTsK]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/lang/ca.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJldHVybiBhcnJheSgKICAgICdTZWxlY3QnID0+ICdTZWxlY2Npb25hcicsCiAgICAnRGVzZWxlY3RfQWxsJyA9PiAnRGVzZWxlY3QgQWxsJywKICAgICdTZWxlY3RfQWxsJyA9PiAnU2VsZWN0IEFsbCcsCiAgICAnRXJhc2UnID0+ICdFbGltaW5hcicsCiAgICAnT3BlbicgPT4gJ09icmlyJywKICAgICdDb25maXJtX2RlbCcgPT4gJ1NlZ3VyIHF1ZSBkZXNpdGdlcyBlbGltaW5hciBhcXVlc3QgYXJ4aXU/JywKICAgICdBbGwnID0+ICdUb3RzJywKICAgICdGaWxlcycgPT4gJ0FyeGl1cycsCiAgICAnSW1hZ2VzJyA9PiAnSW1hdGdlcycsCiAgICAnQXJjaGl2ZXMnID0+ICdGaXR4ZXJzJywKICAgICdFcnJvcl9VcGxvYWQnID0+ICdMXCdhcnhpdSBxdWUgaW50ZW50YSBwdWphciBleGNlZGVpeCBlbCBtw6B4aW0gcGVybcOocy4nLAogICAgJ0Vycm9yX2V4dGVuc2lvbicgPT4gJ0xcJ2V4dGVuc2nDsyBkZSBsXCdhcnhpdSBubyBlc3TDoCBwZXJtZXNhLicsCiAgICAnVXBsb2FkX2ZpbGUnID0+ICdQdWphcicsCiAgICAnRmlsdGVycycgPT4gJ0ZpbHRyZXMnLAogICAgJ1ZpZGVvcycgPT4gJ1bDrWRlb3MnLAogICAgJ011c2ljJyA9PiAnTXVzaWNhJywKICAgICdOZXdfRm9sZGVyJyA9PiAnTm92YSBjYXJwZXRhJywKICAgICdGb2xkZXJfQ3JlYXRlZCcgPT4gJ0xhIGNhcnBldGEgaGEgZXN0YXQgY3JlYWRhIGV4aXRvc2FtZW50LicsCiAgICAnRXhpc3RpbmdfRm9sZGVyJyA9PiAnQ2FycGV0YSBleGlzdGVudCcsCiAgICAnQ29uZmlybV9Gb2xkZXJfZGVsJyA9PiAnU2VndXIgcXVlIGRlc2l0Z2VzIGVsaW1pbmFyIGxhIGNhcnBldGEgaSB0b3RzIGVscyBlbGVtZW50cyBxdWUgY29udMOpPycsCiAgICAnUmV0dXJuX0ZpbGVzX0xpc3QnID0+ICdUb3JuYXIgYSBsYSBsbGlzdGEgZFwnYXJ4aXVzJywKICAgICdQcmV2aWV3JyA9PiAnVmlzdGEgcHLDqHZpYScsCiAgICAnRG93bmxvYWQnID0+ICdEZXNjYXJyZWdhcicsCiAgICAnSW5zZXJ0X0ZvbGRlcl9OYW1lJyA9PiAnTm9tIGRlIGxhIGNhcnBldGE6JywKICAgICdSb290JyA9PiAnQXJyZWwnLAogICAgJ1JlbmFtZScgPT4gJ1Jlbm9tYnJhcicsCiAgICAnQmFjaycgPT4gJ1Rvcm5hcicsCiAgICAnVmlldycgPT4gJ1Zpc3RhJywKICAgICdWaWV3X2xpc3QnID0+ICdWaXN0YSBkZSBsbGlzdGEnLAogICAgJ1ZpZXdfY29sdW1uc19saXN0JyA9PiAnVmlzdGEgZGUgY29sdW1uZXMnLAogICAgJ1ZpZXdfYm94ZXMnID0+ICdWaXN0YSBkZSBtaW5pYXR1cmVzJywKICAgICdUb29sYmFyJyA9PiAnQmFycmEgZFwnZWluZXMnLAogICAgJ0FjdGlvbnMnID0+ICdBY2Npb25zJywKICAgICdSZW5hbWVfZXhpc3RpbmdfZmlsZScgPT4gJ0xcJ2FyeGl1IGphIGV4aXN0ZWl4JywKICAgICdSZW5hbWVfZXhpc3RpbmdfZm9sZGVyJyA9PiAnTGEgY2FycGV0YSBqYSBleGlzdGVpeCcsCiAgICAnRW1wdHlfbmFtZScgPT4gJ0VsIG5vbSBlcyB0cm9iYSBidWl0JywKICAgICdUZXh0X2ZpbHRlcicgPT4gJ2ZpbHRyZSBkZSB0ZXh0JywKICAgICdTd2lwZV9oZWxwJyA9PiAnRGVzbGl6ZSBlbCBub20gZGUgbFwnYXJ4aXUvY2FycGV0YSBwZXIgbW9zdHJhciBsZXMgb3BjaW9ucycsCiAgICAnVXBsb2FkX2Jhc2UnID0+ICdQdWphZGEgZFwnYXJ4aXVzIFNJTVBMRScsCiAgICAnVXBsb2FkX2phdmEnID0+ICdQdWphZGEgZFwnYXJ4aXVzIEpBVkEgKHBhcmEgYXJ4aXVzIHBlc2F0cyknLAogICAgJ1VwbG9hZF91cmwnID0+ICdVUkwnLAogICAgJ1VwbG9hZF9qYXZhX2hlbHAnID0+ICJTaSBlbCBhcHBsZXQgbm8gY2FycmVnYTogMS4gQXNzZWd1cmEndCBkZSB0ZW5pciBKYXZhIGluc3RhbMK3bGF0OyBzaW7DsyBkZXNjYXJyZWdhLWhvIGkgaW5zdGFswrdsYS1obyA8YSBocmVmPSdodHRwOi8vamF2YS5jb20vZW4vZG93bmxvYWQvJz5kZXMgZCdhcXXDrTwvYT4gMi4gQXNzZWd1cmEndCBxdWUgZWwgdGV1IGZpcmV3YWxsIG5vIGVzdGlndWkgYmxvcXVlamFudCByZXMuIiwKICAgICdVcGxvYWRfYmFzZV9oZWxwJyA9PiAiQXJyb3NzZWdhIGkgZGVpeGEgYW5hciBlbHMgYXJ4aXVzIGRpbnMgZCdhcXVlc3RhIMOgcmVhIG8gZmFjaSBjbGljIGVuIGVsbGEgKHBlciBhIG5hdmVnYWRvcnMgbW9kZXJucykgZW4gY2FzIGNvbnRyYXJpLCBzZWxlY2Npb25pIGwnYXJ4aXUgaSBmYWNpIGNsaWMgZW4gZWwgYm90w7MuIFF1YW4gZmluYWxpdHppIGxhIHB1amFkYSwgZmFjaSBjbGljIGVuIGVsIGJvdMOzIHN1cGVyaW9yIHBlciB0b3JuYXIuIiwKICAgICdUeXBlX2RpcicgPT4gJ0NhcnBldGEnLAogICAgJ1R5cGUnID0+ICdUaXB1cycsCiAgICAnRGltZW5zaW9uJyA9PiAnRGltZW5zaW9ucycsCiAgICAnU2l6ZScgPT4gJ1BlcycsCiAgICAnRGF0ZScgPT4gJ0RhdGEnLAogICAgJ0ZpbGVuYW1lJyA9PiAnTm9tJywKICAgICdPcGVyYXRpb25zJyA9PiAnT3BlcmFjaW9ucycsCiAgICAnRGF0ZV90eXBlJyA9PiAnZC1tLXknLAogICAgJ09LJyA9PiAnT0snLAogICAgJ0NhbmNlbCcgPT4gJ0NhbmNlbMK3bGFyJywKICAgICdTb3J0aW5nJyA9PiAnT3JkZW5hcicsCiAgICAnU2hvd191cmwnID0+ICdNb3N0cmFyIFVSTCcsCiAgICAnRXh0cmFjdCcgPT4gJ0V4dHJldXJlIGFxdcOtJywKICAgICdGaWxlX2luZm8nID0+ICdJbmZvcm1hY2nDsycsCiAgICAnRWRpdF9pbWFnZScgPT4gJ0VkaXRhciBpbWF0Z2UnLAogICAgJ0R1cGxpY2F0ZScgPT4gJ0R1cGxpY2FyJywKICAgICdGb2xkZXJzJyA9PiAnQ2FycGV0ZXMnLAogICAgJ0NvcHknID0+ICdDb3BpYXInLAogICAgJ0N1dCcgPT4gJ1RhbGxhcicsCiAgICAnUGFzdGUnID0+ICdFbmdhbnhhcicsCiAgICAnQ0InID0+ICdDQicsIC8vIGNsaXBib2FyZAogICAgJ1Bhc3RlX0hlcmUnID0+ICdFbmdhbnhhciBlbiBhcXVlc3QgZGlyZWN0b3JpJywKICAgICdQYXN0ZV9Db25maXJtJyA9PiAnRXN0ZXUgc2VndXIgcXVlIHZvbGV1IGVuZ2FueGFyIGVuIGFxdWVzdCBkaXJlY3Rvcmk/IEFpeMOyIHNvYnJlZXNjcml1csOgIGFyeGl1cy9jYXJwZXRlcyBleGlzdGVudHMgc2kgZXMgdHJvYmEgY2FwIGlndWFsLicsCiAgICAnUGFzdGVfRmFpbGVkJyA9PiAnTm8gc+KAmWhhIHBvZ3V0IGVuZ2FueGFyIGVscyBmaXR4ZXJzLicsCiAgICAnQ2xlYXJfQ2xpcGJvYXJkJyA9PiAnTmV0ZWphciBwb3J0YXBhcGVycycsCiAgICAnQ2xlYXJfQ2xpcGJvYXJkX0NvbmZpcm0nID0+ICdFc3RldSBzZWd1ciBxdWUgdm9sZXUgZXNib3JyYXIgZWwgcG9ydGFwYXBlcnM/JywKICAgICdGaWxlc19PTl9DbGlwYm9hcmQnID0+ICdIaSBoYSBhcnhpdXMgYWwgUG9ydGFwYXBlcnMuJywKICAgICdDb3B5X0N1dF9TaXplX0xpbWl0JyA9PiAnRWxzIGFyeGl1cy9jYXJwZXRlcyBzZWxlY2Npb25hZGVzIHPDs24gbWFzc2EgZ3JhbnMgcGVyICVzLiBMaW1pdDogJWQgTUIvb3BlcmFjacOzJywgLy8gJXMgPSBjdXQgb3IgY29weQogICAgJ0NvcHlfQ3V0X0NvdW50X0xpbWl0JyA9PiAnSGV1IHNlbGVjY2lvbmF0IG1hc3NhIGZpdHhlcnMvY2FycGV0ZXMgYSAlcy4gTGltaXQ6ICVkIGFyeGl1L29wZXJhY2nDsycsIC8vICVzID0gY3V0IG9yIGNvcHkKICAgICdDb3B5X0N1dF9Ob3RfQWxsb3dlZCcgPT4gJ05vIHRlIHBlcm1pc29zIHBlciAlcyBlbHMgYXJ4aXVzLicsIC8vICVzKDEpID0gY3V0IG9yIGNvcHksICVzKDIpID0gZmlsZXMgb3IgZm9sZGVycwogICAgJ0ltYWdlX0VkaXRvcl9Ob19TYXZlJyA9PiAnTm8gc+KAmWhhIHBvZ3V0IGRlc2FyIGxhIGltYXRnZS4nLAogICAgJ0ltYWdlX0VkaXRvcl9FeGl0JyA9PiAiRXhpdCIsCiAgICAnSW1hZ2VfRWRpdG9yX1NhdmUnID0+ICJTYXZlIiwKICAgICdaaXBfTm9fRXh0cmFjdCcgPT4gJ05vIGVzIHBvdCBleHRyZXVyZS4gTOKAmUFyeGl1IHBvZHJpYSBlc3RhciBjb3JydXB0ZS4nLAogICAgJ1ppcF9JbnZhbGlkJyA9PiAnQXF1ZXN0YSBleHRlbnNpw7Mgbm8gw6lzIHN1cG9ydGFkYS4gVsOgbGlkOiB6aXAsIGd6LCB0YXIuJywKICAgICdEaXJfTm9fV3JpdGUnID0+ICdFbCBkaXJlY3Rvcmkgc2VsZWNjaW9uYXQgbm8gdGUgcGVybWlzb3MgZOKAmWVzY3JpcHR1cmEuJywKICAgICdGdW5jdGlvbl9EaXNhYmxlZCcgPT4gJ0xhIGZ1bmNpw7MgZGUgJXMgbm8gZXN0YSBkaXNwb25pYmxlIGFsIHNlcnZpZG9yLicsIC8vICVzID0gY3V0IG9yIGNvcHkKICAgICdGaWxlX1Blcm1pc3Npb24nID0+ICdQZXJtaXNvcyBk4oCZYXJ4aXUnLAogICAgJ0ZpbGVfUGVybWlzc2lvbl9Ob3RfQWxsb3dlZCcgPT4gJ0xhIG1vZGlmaWNhY2nDsyBkZWxzIHBlcm1pc29zIGRlICVzIG5vIGVzIHBlcm3DqHMuJywgLy8gJXMgPSBmaWxlcyBvciBmb2xkZXJzCiAgICAnRmlsZV9QZXJtaXNzaW9uX1JlY3Vyc2l2ZScgPT4gJ0FwbGljYXIgcmVjdXJzaXZhbWVudD8nLAogICAgJ0ZpbGVfUGVybWlzc2lvbl9Xcm9uZ19Nb2RlJyA9PiAiRWwgbW9kZSBkZSBwZXJtw61zIHN1Ym1pbmlzdHJhdCDDqXMgaW5jb3JyZWN0ZS4uIiwKICAgICdVc2VyJyA9PiAnVXN1YXJpJywKICAgICdHcm91cCcgPT4gJ0dydXAnLAogICAgJ1llcycgPT4gJ1NpJywKICAgICdObycgPT4gJ05vJywKICAgICdMYW5nX05vdF9Gb3VuZCcgPT4gJ05vIGVzIHBvdCB0cm9iYXIgbFwnaWRpb21hLicsCiAgICAnTGFuZ19DaGFuZ2UnID0+ICdNb2RpZmljYXIgaWRpb21hJywKICAgICdGaWxlX05vdF9Gb3VuZCcgPT4gJ05vIHNcJ2hhIHBvZ3V0IHRyb2JhciBsXCdhcnhpdS4nLAogICAgJ0ZpbGVfT3Blbl9FZGl0X05vdF9BbGxvd2VkJyA9PiAnTm8gdGVucyBwZXJtaXNvcyBwZXIgb2JyaXIgJXMgbFwnYXJ4aXUuJywgLy8gJXMgPSBvcGVuIG9yIGVkaXQKICAgICdFZGl0JyA9PiAnTW9kaWZpY2FyJywKICAgICdFZGl0X0ZpbGUnID0+ICJFZGl0YXIgZWwgY29udGluZ3V0IGRlIGxcJ2FyeGl1LiIsCiAgICAnRmlsZV9TYXZlX09LJyA9PiAiQXJ4aXUgZGVzYXQgY29ycmVjdGFtZW50LiIsCiAgICAnRmlsZV9TYXZlX0Vycm9yJyA9PiAiSGkgaGEgaGFndXQgdW4gZXJyb3IgbWVudHJlIGVzIGRlc2F2YSBsXCdhcnhpdS4iLAogICAgJ05ld19GaWxlJyA9PiAnTm91IGFyeGl1JywKICAgICdOb19FeHRlbnNpb24nID0+ICdIYSBkXCdhZmVnaXIgdW5hIGV4dGVuc2nDsyBkXCdhcnhpdS4nLAogICAgJ1ZhbGlkX0V4dGVuc2lvbnMnID0+ICdFeHRlbnNpb25zIHZhbGlkZXM6ICVzJywgLy8gJXMgPSB0eHQsbG9nIGV0Yy4KICAgICdVcGxvYWRfbWVzc2FnZScgPT4gIkFycm9zc2VnYSBhcnhpdSBhcXXDrSBwZXIgY2FycmVnYXIuIiwKCiAgICAnU0VSVkVSIEVSUk9SJyA9PiAiU0VSVkVSIEVSUk9SIiwKICAgICdmb3JiaWRkZW4nID0+ICJGb3JiaWRlbiIsCiAgICAnd3JvbmcgcGF0aCcgPT4gIldyb25nIHBhdGgiLAogICAgJ3dyb25nIG5hbWUnID0+ICJXcm9uZyBuYW1lIiwKICAgICd3cm9uZyBleHRlbnNpb24nID0+ICJXcm9uZyBleHRlbnNpb24iLAogICAgJ3dyb25nIG9wdGlvbicgPT4gIldyb25nIG9wdGlvbiIsCiAgICAnd3JvbmcgZGF0YScgPT4gIldyb25nIGRhdGEiLAogICAgJ3dyb25nIGFjdGlvbicgPT4gIldyb25nIGFjdGlvbiIsCiAgICAnd3Jvbmcgc3ViLWFjdGlvbicgPT4gIldyb25nIHN1Yi1hY3RpbyIsCiAgICAnbm8gYWN0aW9uIHBhc3NlZCcgPT4gIk5vIGFjdGlvbiBwYXNzZWQiLAogICAgJ25vIHBhdGgnID0+ICJObyBwYXRoIiwKICAgICdubyBmaWxlJyA9PiAiTm8gZmlsZSIsCiAgICAndmlldyB0eXBlIG51bWJlciBtaXNzaW5nJyA9PiAiVmlldyB0eXBlIG51bWJlciBtaXNzaW5nIiwKICAgICdOb3QgZW5vdWdodCBNZW1vcnknID0+ICJOb3QgZW5vdWdodCBNZW1vcnkiLAogICAgJ21heF9zaXplX3JlYWNoZWQnID0+ICJZb3VyIGltYWdlIGZvbGRlciBoYXMgcmVhY2ggaXRzIG1heGltYWxlIHNpemUgb2YgJWQgTUIuIiwgLy8lZCA9IG1heCBvdmVyYWxsIHNpemUKICAgICdCJyA9PiAiQiIsCiAgICAnS0InID0+ICJLQiIsCiAgICAnTUInID0+ICJNQiIsCiAgICAnR0InID0+ICJHQiIsCiAgICAnVEInID0+ICJUQiIsCiAgICAndG90YWwgc2l6ZScgPT4gIlRvdGFsIHNpemUiLAopOwo=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/lang/cs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJldHVybiBhcnJheSgKCgknU2VsZWN0JyA9PiAnVnlicmF0JywKCSdEZXNlbGVjdF9BbGwnID0+ICdacnXFoWl0IHbFoWUnLAoJJ1NlbGVjdF9BbGwnID0+ICdWeWJyYXQgdsWhZScsCgknRXJhc2UnID0+ICdTbWF6YXQnLAoJJ09wZW4nID0+ICdPdGV2xZnDrXQnLAoJJ0NvbmZpcm1fZGVsJyA9PiAnT3ByYXZkdSBjaGNldGUgc21hemF0IHRlbnRvIHNvdWJvcj8nLAoJJ0FsbCcgPT4gJ1bFoWUnLAoJJ0ZpbGVzJyA9PiAnU291Ym9yeScsCgknSW1hZ2VzJyA9PiAnT2Jyw6F6a3knLAoJJ0FyY2hpdmVzJyA9PiAnQXJjaGl2eScsCgknRXJyb3JfVXBsb2FkJyA9PiAnTmFocsOhdmFuw70gc291Ym9yIGplIHDFmcOtbGnFoSB2ZWxrw70uJywKCSdFcnJvcl9leHRlbnNpb24nID0+ICdOYWhyw6F2w6Fuw60gc291Ym9yxa8gcyB0b3V0byBwxZnDrXBvbm91IG5lbsOtIHBvdm9sZW5vLicsCgknVXBsb2FkX2ZpbGUnID0+ICdOYWhyw6F0IHNvdWJvcicsCgknRmlsdGVycycgPT4gJ0ZpbHRyJywKCSdWaWRlb3MnID0+ICdWaWRlYScsCgknTXVzaWMnID0+ICdIdWRiYScsCgknTmV3X0ZvbGRlcicgPT4gJ05vdsOhIHNsb8W+a2EnLAoJJ0ZvbGRlcl9DcmVhdGVkJyA9PiAnU2xvxb5rYSB2eXR2b8WZZW5hJywKCSdFeGlzdGluZ19Gb2xkZXInID0+ICdFeGlzdHVqw61jw60gc2xvxb5rYScsCgknQ29uZmlybV9Gb2xkZXJfZGVsJyA9PiAnT3ByYXZkdSBjaGNldGUgc21hemF0IHR1dG8gc2xvxb5rdSBhIGplasOtIG9ic2FoPycsCgknUmV0dXJuX0ZpbGVzX0xpc3QnID0+ICdacMSbdCBrIHNlem5hbXUgc291Ym9yxa8nLAoJJ1ByZXZpZXcnID0+ICdOw6FobGVkJywKCSdEb3dubG9hZCcgPT4gJ1N0w6Fobm91dCcsCgknSW5zZXJ0X0ZvbGRlcl9OYW1lJyA9PiAnVmxvxb50ZSBuw6F6ZXYgc2xvxb5reTonLAoJJ1Jvb3QnID0+ICdyb290JywKCSdSZW5hbWUnID0+ICdQxZllam1lbm92YXQnLAoJJ0JhY2snID0+ICd6cMSbdCcsCgknVmlldycgPT4gJ1pvYnJhemVuw60nLAoJJ1ZpZXdfbGlzdCcgPT4gJ1Nlem5hbSBzb3Vib3LFrycsCgknVmlld19jb2x1bW5zX2xpc3QnID0+ICdEdm91c2xvdXBjb3bDvSBzZXpuYW0gc291Ym9yxa8nLAoJJ1ZpZXdfYm94ZXMnID0+ICdEbGHFvmRpY292w6kgem9icmF6ZW7DrScsCgknVG9vbGJhcicgPT4gJ1BhbmVsIG7DoXN0cm9qxa8nLAoJJ0FjdGlvbnMnID0+ICdBa2NlJywKCSdSZW5hbWVfZXhpc3RpbmdfZmlsZScgPT4gJ1RlbnRvIHNvdWJvciBqacW+IGV4aXN0dWplJywKCSdSZW5hbWVfZXhpc3RpbmdfZm9sZGVyJyA9PiAnVGF0byBzbG/FvmthIGppxb4gZXhpc3R1amUnLAoJJ0VtcHR5X25hbWUnID0+ICdaYWRhbGkganN0ZSBwcsOhemRuw70gbsOhemV2JywKCSdUZXh0X2ZpbHRlcicgPT4gJ3RleHRvdsO9IGZpbHRyJywKCSdTd2lwZV9oZWxwJyA9PiAnUHJvIHpvYnJhemVuw60gbW/Fvm5vc3TDrSBrbGlrbsSbdGUgbmEgbsOhemV2IHNvdWJvcnUvc2xvxb5reS4nLAoJJ1VwbG9hZF9iYXNlJyA9PiAnWsOha2xhZG7DrSBuYWhyw6F2w6Fuw60nLAoJJ1VwbG9hZF9iYXNlX2hlbHAnID0+ICJTb3Vib3J5IHDFmWV0w6FobsSbdGUgKHBvdXplIG1vZGVybsOtIHByb2hsw63FvmXEjWUpIG5lYm8ga2xpa27Em3RlIG5hIGhvcm7DrSB0bGHEjcOtdGtvICdQxZlpZGF0IHNvdWJvcih5KScgYSBwb3TDqSBuYSB0bGHEjcOtdGtvICdTcHV0aXQgbmFocsOhdsOhbsOtJy4gQcW+IGJ1ZGUgbmFocsOhdsOhbsOtIGRva29uxI1lbm8sIGtsaWtuxJt0ZSBuYSAnWnDEm3QgayBzZXpuYW11IHNvdWJvcsWvJy4iLAoJJ1VwbG9hZF9hZGRfZmlsZXMnID0+ICdQxZlpZGF0IHNvdWJvcih5KScsCgknVXBsb2FkX3N0YXJ0JyA9PiAnU3B1dGl0IG5haHLDoXbDoW7DrScsCgknVXBsb2FkX2Vycm9yX21lc3NhZ2VzJyA9PmFycmF5KAoJCTEgPT4gJ05haHLDoXZhbsO9IHNvdWJvciBtw6EgdsSbdMWhw60gdmVsaWtvc3QsIG5lxb4gY28gcG92b2x1amUgZGlyZWt0aXZhIHVwbG9hZF9tYXhfZmlsZXNpemUgdiBwaHAuaW5pJywKCQkyID0+ICdOYWhyw6F2YW7DvSBzb3Vib3IgbcOhIHbEm3TFocOtIHZlbGlrb3N0LCBuZcW+IGNvIHBvdm9sdWplIGRpcmVrdGl2YSBNQVhfRklMRV9TSVpFIHV2ZWRlbsOhIHYgSFRNTCBmb3JtdWzDocWZaScsCgkJMyA9PiAnU291Ym9yIGJ5bCBuYWhyw6FuIHBvdXplIHogxI3DoXN0aScsCgkJNCA9PiAnTmVieWwgbmFocsOhbiDFvsOhZG7DvSBzb3Vib3InLAoJCTYgPT4gJ0NoeWLDrSBkb8SNYXNuw6Egc2xvxb5rYScsCgkJNyA9PiAnUMWZaSB6YXBpc292w6Fuw60gc291Ym9ydSBuYSBkaXNrIGRvxaFsbyBrIGNoeWLEmycsCgkJOCA9PiAnTmFocsOhdsOhbsOtIHNvdWJvcsWvIHphc3RhdmlsbyByb3rFocOtxb5lbsOtIFBIUCcsCgkJJ3Bvc3RfbWF4X3NpemUnID0+ICdOYWhyw6F2YW7DvSBzb3Vib3IgbcOhIHbEm3TFocOtIHZlbGlrb3N0LCBuZcW+IGNvIHBvdm9sdWplIGRpcmVrdGl2YSBwb3N0X21heF9zaXplIHYgcGhwLmluaScsCgkJJ21heF9maWxlX3NpemUnID0+ICdQxZnDrWxpxaEgdmVsa8O9IHNvdWJvcicsCgkJJ21pbl9maWxlX3NpemUnID0+ICdQxZnDrWxpxaEgbWFsw70gc291Ym9yJywKCQknYWNjZXB0X2ZpbGVfdHlwZXMnID0+ICdOZW7DrSBwb3ZvbGVuIHRlbnRvIHR5cCBzb3Vib3J1IChwxZnDrXBvbmEpJywKCQknbWF4X251bWJlcl9vZl9maWxlcycgPT4gJ1DFmWVrcm/EjWVuIG1heGltw6FsbsOtIHBvxI1ldCBzb3Vib3LFrycsCgkJJ21heF93aWR0aCcgPT4gJ09icsOhemVrIHDFmWVzYWh1amUgbWF4aW3DoWxuw60gxaHDrcWZa3UnLAoJCSdtaW5fd2lkdGgnID0+ICdPYnLDoXplayB2ecW+YWR1amUgbWluaW3DoWxuw60gxaHDrcWZa3UnLAoJCSdtYXhfaGVpZ2h0JyA9PiAnT2Jyw6F6ZWsgcMWZZXNhaHVqZSBtYXhpbcOhbG7DrSB2w73FoWt1JywKCQknbWluX2hlaWdodCcgPT4gJ09icsOhemVrIHZ5xb5hZHVqZSBtaW5pbcOhbG7DrSB2w73FoWt1JywKCQknYWJvcnQnID0+ICdOYWhyw6F2w6Fuw60gc291Ym9ydSBieWxvIHDFmWVydcWhZW5vJywKCQknaW1hZ2VfcmVzaXplJyA9PiAnTmVwb2RhxZlpbG8gc2Ugem3Em25pdCB2ZWxpa29zdCBvYnLDoXprdScKCSksCgknVXBsb2FkX3VybCcgPT4gJ1ogdXJsIGFkcmVzeScsCgknVHlwZV9kaXInID0+ICdzbG/FvmthJywKCSdUeXBlJyA9PiAnVHlwJywKCSdEaW1lbnNpb24nID0+ICdSb3ptxJtyJywKCSdTaXplJyA9PiAnVmVsaWtvc3QnLAoJJ0RhdGUnID0+ICdEYXR1bScsCgknRmlsZW5hbWUnID0+ICdOw6F6ZXYnLAoJJ09wZXJhdGlvbnMnID0+ICdPcGVyYWNlJywKCSdEYXRlX3R5cGUnID0+ICdkLm0uWScsCgknT0snID0+ICdPSycsCgknQ2FuY2VsJyA9PiAnWnJ1xaFpdCcsCgknU29ydGluZycgPT4gJ8WYYXplbsOtJywKCSdTaG93X3VybCcgPT4gJ1pvYnJheml0IFVSTCBhZHJlc3UnLAoJJ0V4dHJhY3QnID0+ICdSb3piYWxpdCB6ZGUnLAoJJ0ZpbGVfaW5mbycgPT4gJ0luZm9ybWFjZSBvIHNvdWJvcnUnLAoJJ0VkaXRfaW1hZ2UnID0+ICdVcHJhdml0IG9icsOhemVrJywKCSdEdXBsaWNhdGUnID0+ICdEdXBsaWtvdmF0JywKCSdGb2xkZXJzJyA9PiAnU2xvxb5reScsCgknQ29weScgPT4gJ0tvcMOtcm92YXQnLAoJJ0N1dCcgPT4gJ1Z5am1vdXQnLAoJJ1Bhc3RlJyA9PiAnVmxvxb5pdCcsCgknQ0InID0+ICdTY2hyw6Fua2EnLCAvLyBjbGlwYm9hcmQKCSdQYXN0ZV9IZXJlJyA9PiAnVmxvxb5pdCBkbyB0w6l0byBzbG/Fvmt5JywKCSdQYXN0ZV9Db25maXJtJyA9PiAnU2t1dGXEjW7EmyBjaGNldGUgdmxvxb5pdCBvYnNhaCBzY2hyw6Fua3kgZG8gdMOpdG8gc2xvxb5reT8gRXhpc3R1asOtY8OtIHNvdWJvcnkgxI1pIHNsb8W+a3kgYnVkb3UgcMWZZXBzw6FueS4nLAoJJ1Bhc3RlX0ZhaWxlZCcgPT4gJ1Zsb8W+ZW7DrSBzZWxoYWxvJywKCSdDbGVhcl9DbGlwYm9hcmQnID0+ICdWeW1hemF0IHNjaHLDoW5rdScsCgknQ2xlYXJfQ2xpcGJvYXJkX0NvbmZpcm0nID0+ICdTa3V0ZcSNbsSbIGNoY2V0ZSB2eW1hemF0IG9ic2FoIHNjaHLDoW5reT8nLAoJJ0ZpbGVzX09OX0NsaXBib2FyZCcgPT4gJ1ZlIHNjaHLDoW5jZSBqc291IHNvdWJvcnkuJywKCSdDb3B5X0N1dF9TaXplX0xpbWl0JyA9PiAnWnZvbGVuw6kgc291Ym9yeS9zbG/Fvmt5IGpzb3UgcMWZw61sacWhIHZlbGvDqSBwcm8gb3BlcmFjaSAlcy4gTGltaXQ6ICVkIE1CL29wZXJhY2UnLCAvLyAlcyA9IGN1dCBvciBjb3B5CgknQ29weV9DdXRfQ291bnRfTGltaXQnID0+ICdadm9saWxpIGpzdGUgcMWZw61sacWhIG1ub2hvIHNvdWJvcsWvL3Nsb8W+ZWsgcHJvIG9wZXJhY2kgJXMuIExpbWl0OiAlZCBzb3Vib3LFry9vcGVyYWNlJywgLy8gJXMgPSBjdXQgb3IgY29weQoJJ0NvcHlfQ3V0X05vdF9BbGxvd2VkJyA9PiAnTmVtw6F0ZSBvcHLDoXZuxJtuw60gJXMuJywgLy8gJXMoMSkgPSBjdXQgb3IgY29weSwgJXMoMikgPSBmaWxlcyBvciBmb2xkZXJzCgknSW1hZ2VfRWRpdG9yX05vX1NhdmUnID0+ICdPYnLDoXplayBuZWx6ZSB1bG/Fvml0JywKCSdJbWFnZV9FZGl0b3JfRXhpdCcgPT4gIkV4aXQiLAogICAgJ0ltYWdlX0VkaXRvcl9TYXZlJyA9PiAiU2F2ZSIsCiAgICAnWmlwX05vX0V4dHJhY3QnID0+ICdBcmNow612IG5lbHplIHJvemJhbGl0LiBTb3Vib3IgbcWvxb5lIGLDvXQgcG/FoWtvemVuLicsCgknWmlwX0ludmFsaWQnID0+ICdQxZnDrXBvbmEgbmVuw60gcG9kcG9yb3bDoW5hLiBQb3ZvbGVuw6k6IHppcCwgZ3osIHRhci4nLAoJJ0Rpcl9Ob19Xcml0ZScgPT4gJ1Z5YnJhbsOhIHNsb8W+a2EgbmVuw60gemFwaXNvdmF0ZWxuw6EuJywKCSdGdW5jdGlvbl9EaXNhYmxlZCcgPT4gJ0Z1bmtjZSAlcyBieWxhIHphbcOtdG51dGEgc2VydmVyZW0uJywgLy8gJXMgPSBjdXQgb3IgY29weQoJJ0ZpbGVfUGVybWlzc2lvbicgPT4gJ1Byw6F2YSBzb3Vib3J1JywKCSdGaWxlX1Blcm1pc3Npb25fTm90X0FsbG93ZWQnID0+ICdabcSbbmEgb3Byw6F2bsSbbsOtIHBybyAlcyBuZW7DrSBwb3ZvbGVuYS4nLCAvLyAlcyA9IGZpbGVzIG9yIGZvbGRlcnMKCSdGaWxlX1Blcm1pc3Npb25fUmVjdXJzaXZlJyA9PiAnUG91xb7DrXQgcmVrdXJ6aXZuxJs/JywKCSdGaWxlX1Blcm1pc3Npb25fV3JvbmdfTW9kZScgPT4gIlphZGFuw70ga8OzZCBvcHLDoXZuxJtuw60gbmVuw60gcGxhdG7DvS4iLAoJJ1VzZXInID0+ICdVxb5pdmF0ZWwnLAoJJ0dyb3VwJyA9PiAnU2t1cGluYScsCgknWWVzJyA9PiAnQW5vJywKCSdObycgPT4gJ05lJywKCSdMYW5nX05vdF9Gb3VuZCcgPT4gJ0phenlrIG5lYnlsIG5hbGV6ZW4uJywKCSdMYW5nX0NoYW5nZScgPT4gJ1ptxJtuaXQgamF6eWsnLAoJJ0ZpbGVfTm90X0ZvdW5kJyA9PiAnU291Ym9yIG5lYnlsIG5hbGV6ZW4uJywKCSdGaWxlX09wZW5fRWRpdF9Ob3RfQWxsb3dlZCcgPT4gJ05lbcOhdGUgb3Byw6F2bsSbbsOtICVzIHRlbnRvIHNvdWJvci4nLCAvLyAlcyA9IG9wZW4gb3IgZWRpdAoJJ0VkaXQnID0+ICdVcHJhdml0JywKCSdFZGl0X0ZpbGUnID0+ICJVcHJhdml0IG9ic2FoIHNvdWJvcnUiLAoJJ0ZpbGVfU2F2ZV9PSycgPT4gIlNvdWJvciBieWwgw7pzcMSbxaFuxJsgdWxvxb5lbi4iLAoJJ0ZpbGVfU2F2ZV9FcnJvcicgPT4gIkRvxaFsbyBrIGNoeWLEmyBwxZlpIHVrbMOhZMOhbsOtIHNvdWJvcnUuIiwKCSdOZXdfRmlsZScgPT4gJ05vdsO9IHNvdWJvcicsCgknTm9fRXh0ZW5zaW9uJyA9PiAnTXVzw610ZSBkb3Bsbml0IHDFmcOtcG9udSBzb3Vib3J1LicsCgknVmFsaWRfRXh0ZW5zaW9ucycgPT4gJ1Bvdm9sZW7DqSBwxZnDrXBvbnk6ICVzJywgLy8gJXMgPSB0eHQsbG9nIGV0Yy4KCSdVcGxvYWRfbWVzc2FnZScgPT4gIlBybyBuYWhyw6Fuw60gcMWZZXTDoWhuxJt0ZSBzb3Vib3IoeSkgc2VtIiwKCgknU0VSVkVSIEVSUk9SJyA9PiAiQ0hZQkEgU0VSVkVSVSIsCgknZm9yYmlkZW4nID0+ICJaYWvDoXrDoW5vIiwKCSd3cm9uZyBwYXRoJyA9PiAiTmVwbGF0bsOhIGNlc3RhIiwKCSd3cm9uZyBuYW1lJyA9PiAiTmVwbGF0bsOhIG7DoXpldiIsCgknd3JvbmcgZXh0ZW5zaW9uJyA9PiAiTmVwbGF0bsOhIHDFmcOtcG9uYSIsCgknd3Jvbmcgb3B0aW9uJyA9PiAiTmVwbGF0bsOhIHZvbGJhIiwKCSd3cm9uZyBkYXRhJyA9PiAiTmVwbGF0bsOhIGRhdGEiLAoJJ3dyb25nIGFjdGlvbicgPT4gIk5lcGxhdG7DoSBha2NlIiwKCSd3cm9uZyBzdWItYWN0aW9uJyA9PiAiTmVwbGF0bsOhIHBvZGFrY2UiLAoJJ25vIGFjdGlvbiBwYXNzZWQnID0+ICJOZWJ5bGEgcMWZZWTDoW5hIMW+w6FkbsOhIGFrY2UiLAoJJ25vIHBhdGgnID0+ICLFvcOhZG7DoSBjZXN0YSIsCgknbm8gZmlsZScgPT4gIsW9w6FkbsO9IHNvdWJvciIsCgkndmlldyB0eXBlIG51bWJlciBtaXNzaW5nJyA9PiAiQ2h5YsOtIMSNw61zbG8gdHlwdSBwcm8gem9icmF6ZW7DrSIsCgknTm90IGVub3VnaCBNZW1vcnknID0+ICJOZWRvc3RhdGVrIHBhbcSbdGkiLAoJJ21heF9zaXplX3JlYWNoZWQnID0+ICJWYcWhZSBzbG/FvmthIHMgb2Jyw6F6a3kgZG9zw6FobGEgbWF4aW3DoWxuw60gdmVsaWtvc3RpICVkIE1CLiIsIC8vJWQgPSBtYXggb3ZlcmFsbCBzaXplCgknQicgPT4gIkIiLAoJJ0tCJyA9PiAiS0IiLAoJJ01CJyA9PiAiTUIiLAoJJ0dCJyA9PiAiR0IiLAoJJ1RCJyA9PiAiVEIiLAoJJ3RvdGFsIHNpemUnID0+ICJDZWxrb3bDoSB2ZWxpa29zdCIsCik7Cg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/lang/da.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJldHVybiBhcnJheSgKCiAgICAnU2VsZWN0JyA9PiAnVsOmbGcnLAogICAgJ0Rlc2VsZWN0X0FsbCcgPT4gJ0Rlc2VsZWN0IEFsbCcsCiAgICAnU2VsZWN0X0FsbCcgPT4gJ1NlbGVjdCBBbGwnLAogICAgJ0VyYXNlJyA9PiAnU2xldCcsCiAgICAnT3BlbicgPT4gJ8OFYm4nLAogICAgJ0NvbmZpcm1fZGVsJyA9PiAnRXIgZHUgc2lra2VyIHDDpSBhdCBkdSB2aWwgc2xldHRlIGRlbm5lIGZpbD8nLAogICAgJ0FsbCcgPT4gJ0FsbGUnLAogICAgJ0ZpbGVzJyA9PiAnRmlsZXInLAogICAgJ0ltYWdlcycgPT4gJ0JpbGxlZGVyJywKICAgICdBcmNoaXZlcycgPT4gJ01hcHBlcicsCiAgICAnRXJyb3JfVXBsb2FkJyA9PiAnRGVuIHVwbG9hZGVkZSBmaWwgZXIgc3TDuHJyZSBlbmQgdGlsbGFkdCAoMTAwTUIpLicsCiAgICAnRXJyb3JfZXh0ZW5zaW9uJyA9PiAnRmlsIHR5cGVuIGVyIGlra2UgdGlsbGFkdC4nLAogICAgJ1VwbG9hZF9maWxlJyA9PiAnVXBsb2FkJywKICAgICdGaWx0ZXJzJyA9PiAnRmlsdGVyJywKICAgICdWaWRlb3MnID0+ICdWaWRlb2VyJywKICAgICdNdXNpYycgPT4gJ011c2lrJywKICAgICdOZXdfRm9sZGVyJyA9PiAnTnkgbWFwcGUnLAogICAgJ0ZvbGRlcl9DcmVhdGVkJyA9PiAnTWFwcGVuIGVyIG9wcmV0dGV0IGtvcnJla3QnLAogICAgJ0V4aXN0aW5nX0ZvbGRlcicgPT4gJ01hcHBlbiBmaW5kZXMgYWxsZXJlZGUnLAogICAgJ0NvbmZpcm1fRm9sZGVyX2RlbCcgPT4gJ0VyIGR1IHNpa2tlciBww6UgYXQgZHUgdmlsIHNsZXR0ZSBtYXBwZW4gb2cgYWx0IGRlbnMgaW5kaG9sZD8nLAogICAgJ1JldHVybl9GaWxlc19MaXN0JyA9PiAnVGlsYmFnZSB0aWwgZmlsIG92ZXJzaWd0ZW4nLAogICAgJ1ByZXZpZXcnID0+ICdQcmV2aWV3JywKICAgICdEb3dubG9hZCcgPT4gJ0Rvd25sb2FkJywKICAgICdJbnNlcnRfRm9sZGVyX05hbWUnID0+ICdJbmRzw6Z0IG1hcHBlIG5hdm46JywKICAgICdSb290JyA9PiAncm9kJywKICAgICdSZW5hbWUnID0+ICdPbWTDuGInLAogICAgJ0JhY2snID0+ICd0aWxiYWdlJywKICAgICdWaWV3JyA9PiAnU2UnLAogICAgJ1ZpZXdfbGlzdCcgPT4gJ1ZpcyBsaXN0ZScsCiAgICAnVmlld19jb2x1bW5zX2xpc3QnID0+ICdTw7hqbGUgbGlzdGUnLAogICAgJ1ZpZXdfYm94ZXMnID0+ICdCb3ggbGlzdCcsCiAgICAnVG9vbGJhcicgPT4gJ1Rvb2xiYXInLAogICAgJ0FjdGlvbnMnID0+ICdIYW5kbGluZ2VyJywKICAgICdSZW5hbWVfZXhpc3RpbmdfZmlsZScgPT4gJ0ZpbGVuIGZpbmRlcyBhbGxlcmVkZScsCiAgICAnUmVuYW1lX2V4aXN0aW5nX2ZvbGRlcicgPT4gJ01hcHBlbiBmaW5kZXMgYWxsZXJlZGUnLAogICAgJ0VtcHR5X25hbWUnID0+ICdJbmRzw6Z0IGV0IG5hdm4nLAogICAgJ1RleHRfZmlsdGVyJyA9PiAndGVrc3QgZmlsdGVyJywKICAgICdTd2lwZV9oZWxwJyA9PiAnU3dpcGUgb3ZlciBuYXZuZXQgcMOlIGZpbC9tYXBwZSBmb3IgYXQgc2UgbXVsaWdoZWRlcicsCiAgICAnVXBsb2FkX2Jhc2UnID0+ICdCYXNpcyB1cGxvYWQnLAogICAgJ1VwbG9hZF9iYXNlX2hlbHAnID0+ICJEcmFnICYgRHJvcCBmaWxlcyhtb2Rlcm4gYnJvd3NlcnMpIG9yIGNsaWNrIGluIHVwcGVyIGJ1dHRvbiB0byBBZGQgdGhlIGZpbGUocykgYW5kIGNsaWNrIG9uIFN0YXJ0IHVwbG9hZC4gV2hlbiB0aGUgdXBsb2FkIGlzIGNvbXBsZXRlLCBjbGljayB0aGUgJ1JldHVybiB0byBmaWxlcyBsaXN0JyBidXR0b24uIiwKICAgICdVcGxvYWRfYWRkX2ZpbGVzJyA9PiAnQWRkIGZpbGUocyknLAogICAgJ1VwbG9hZF9zdGFydCcgPT4gJ1N0YXJ0IHVwbG9hZCcsCiAgICAnVXBsb2FkX2Vycm9yX21lc3NhZ2VzJyA9PmFycmF5KAogICAgICAgIDEgPT4gJ1RoZSB1cGxvYWRlZCBmaWxlIGV4Y2VlZHMgdGhlIHVwbG9hZF9tYXhfZmlsZXNpemUgZGlyZWN0aXZlIGluIHBocC5pbmknLAogICAgICAgIDIgPT4gJ1RoZSB1cGxvYWRlZCBmaWxlIGV4Y2VlZHMgdGhlIE1BWF9GSUxFX1NJWkUgZGlyZWN0aXZlIHRoYXQgd2FzIHNwZWNpZmllZCBpbiB0aGUgSFRNTCBmb3JtJywKICAgICAgICAzID0+ICdUaGUgdXBsb2FkZWQgZmlsZSB3YXMgb25seSBwYXJ0aWFsbHkgdXBsb2FkZWQnLAogICAgICAgIDQgPT4gJ05vIGZpbGUgd2FzIHVwbG9hZGVkJywKICAgICAgICA2ID0+ICdNaXNzaW5nIGEgdGVtcG9yYXJ5IGZvbGRlcicsCiAgICAgICAgNyA9PiAnRmFpbGVkIHRvIHdyaXRlIGZpbGUgdG8gZGlzaycsCiAgICAgICAgOCA9PiAnQSBQSFAgZXh0ZW5zaW9uIHN0b3BwZWQgdGhlIGZpbGUgdXBsb2FkJywKICAgICAgICAncG9zdF9tYXhfc2l6ZScgPT4gJ1RoZSB1cGxvYWRlZCBmaWxlIGV4Y2VlZHMgdGhlIHBvc3RfbWF4X3NpemUgZGlyZWN0aXZlIGluIHBocC5pbmknLAogICAgICAgICdtYXhfZmlsZV9zaXplJyA9PiAnRmlsZSBpcyB0b28gYmlnJywKICAgICAgICAnbWluX2ZpbGVfc2l6ZScgPT4gJ0ZpbGUgaXMgdG9vIHNtYWxsJywKICAgICAgICAnYWNjZXB0X2ZpbGVfdHlwZXMnID0+ICdGaWxldHlwZSBub3QgYWxsb3dlZCcsCiAgICAgICAgJ21heF9udW1iZXJfb2ZfZmlsZXMnID0+ICdNYXhpbXVtIG51bWJlciBvZiBmaWxlcyBleGNlZWRlZCcsCiAgICAgICAgJ21heF93aWR0aCcgPT4gJ0ltYWdlIGV4Y2VlZHMgbWF4aW11bSB3aWR0aCcsCiAgICAgICAgJ21pbl93aWR0aCcgPT4gJ0ltYWdlIHJlcXVpcmVzIGEgbWluaW11bSB3aWR0aCcsCiAgICAgICAgJ21heF9oZWlnaHQnID0+ICdJbWFnZSBleGNlZWRzIG1heGltdW0gaGVpZ2h0JywKICAgICAgICAnbWluX2hlaWdodCcgPT4gJ0ltYWdlIHJlcXVpcmVzIGEgbWluaW11bSBoZWlnaHQnLAogICAgICAgICdhYm9ydCcgPT4gJ0ZpbGUgdXBsb2FkIGFib3J0ZWQnLAogICAgICAgICdpbWFnZV9yZXNpemUnID0+ICdGYWlsZWQgdG8gcmVzaXplIGltYWdlJwogICAgKSwKICAgICdVcGxvYWRfdXJsJyA9PiAnRnJvbSB1cmwnLAogICAgJ1R5cGVfZGlyJyA9PiAnZGlyJywKICAgICdUeXBlJyA9PiAnVHlwZScsCiAgICAnRGltZW5zaW9uJyA9PiAnRGltZW5zaW9uZXInLAogICAgJ1NpemUnID0+ICdTdMO4cnJlbHNlJywKICAgICdEYXRlJyA9PiAnRGF0bycsCiAgICAnRmlsZW5hbWUnID0+ICdGaWxlbmF2bicsCiAgICAnT3BlcmF0aW9ucycgPT4gJ09wZXJhdGlvbmVyJywKICAgICdEYXRlX3R5cGUnID0+ICfDpXItbcOlbmVkLWRhZycsCiAgICAnT0snID0+ICdPSycsCiAgICAnQ2FuY2VsJyA9PiAnQWZicnlkJywKICAgICdTb3J0aW5nJyA9PiAnc29ydGVyaW5nJywKICAgICdTaG93X3VybCcgPT4gJ1ZpcyBzdGknLAogICAgJ0V4dHJhY3QnID0+ICdGb2xkIHVkIGhlcicsCiAgICAnRmlsZV9pbmZvJyA9PiAnZmlsIGluZm8nLAogICAgJ0VkaXRfaW1hZ2UnID0+ICdSZWRpZ8OpciBiaWxsZWRlJywKICAgICdEdXBsaWNhdGUnID0+ICdLb3Bpw6lyJywKICAgICdGb2xkZXJzJyA9PiAnTWFwcGVyJywKICAgICdDb3B5JyA9PiAnS29wacOpcicsCiAgICAnQ3V0JyA9PiAnS2xpcCcsCiAgICAnUGFzdGUnID0+ICdJbmRzw6Z0JywKICAgICdDQicgPT4gJ1VLSCcsIC8vIGNsaXBib2FyZAogICAgJ1Bhc3RlX0hlcmUnID0+ICdJbmRzw6Z0IGkgZGVubmUgbWFwcGUnLAogICAgJ1Bhc3RlX0NvbmZpcm0nID0+ICdFciBkdSBzaWtrZXIgcMOlIGF0IGR1IHZpbCBpbmRzw6Z0dGUgaSBkZW5uZSBtYXBwZT8gRGV0IHZpbCBvdmVya3JpdmUgYWxsZXJlZGUgZWtzaXN0ZXJlbmRlIGZpbGVyL21hcHBlciwgaHZpcyBkZXIgZmluZGVzIG5vZ2VuLicsCiAgICAnUGFzdGVfRmFpbGVkJyA9PiAnRGV0IGx5a2tlZGVzIGlra2UgYXQgaW5kc8OmdHRlIGZpbChlbi9lcm5lKScsCiAgICAnQ2xlYXJfQ2xpcGJvYXJkJyA9PiAnU2xldCBpbmRob2xkZXQgYWYgdWRrbGlwc2hvbGRlcmVuJywKICAgICdDbGVhcl9DbGlwYm9hcmRfQ29uZmlybScgPT4gJ0VyIGR1IHNpa2tlciBww6UgYXQgZHUgdmlsIHNsZXR0ZSBpbmRob2xkZXQgYWYgdWRrbGlwc2hvbGRlcmVuPycsCiAgICAnRmlsZXNfT05fQ2xpcGJvYXJkJyA9PiAnRGVyIGZpbmRlcyBmaWxlciBpIHVka2xpcHNob2xkZXJlbi4nLAogICAgJ0NvcHlfQ3V0X1NpemVfTGltaXQnID0+ICdEZSB2YWxndGUgZmlsZXIvbWFwcGVyIGVyIGZvciBzdG9yZSB0aWwgYXQgJXMuIE1heC46ICVkIE1CL29wZXJhdGlvbicsIC8vICVzID0gY3V0IG9yIGNvcHkKICAgICdDb3B5X0N1dF9Db3VudF9MaW1pdCcgPT4gJ0R1IGhhciB2YWxndCBmb3IgbWFuZ2UgZmlsZXIvbWFwcGVyIHRpbCBhdCAlcy4gTWF4LjogJWQgZmlsZXIvb3BlcmF0aW9uJywgLy8gJXMgPSBjdXQgb3IgY29weQogICAgJ0NvcHlfQ3V0X05vdF9BbGxvd2VkJyA9PiAnRHUgaGFyIGlra2UgdGlsbGFkZWxzZSB0aWwgYXQgJXMgZmlsZXIuIFRhbCBtZWQgZGluIGFkbWluaXN0cmF0b3IuJywgLy8gJXMoMSkgPSBjdXQgb3IgY29weSwgJXMoMikgPSBmaWxlcyBvciBmb2xkZXJzCiAgICAnSW1hZ2VfRWRpdG9yX05vX1NhdmUnID0+ICdEZXQgdmFyIGlra2UgbXVsaWd0IGF0IGdlbW1lIGJpbGxlZGV0JywKICAgICdJbWFnZV9FZGl0b3JfRXhpdCcgPT4gIkV4aXQiLAogICAgJ0ltYWdlX0VkaXRvcl9TYXZlJyA9PiAiU2F2ZSIsCiAgICAnWmlwX05vX0V4dHJhY3QnID0+ICdEZXQgdmFyIGlra2UgbXVsaWd0IGF0IGhlbnRlLiBGaWxlbiBlciBtdWxpZ3ZpcyDDuGRlbGFndC4nLAogICAgJ1ppcF9JbnZhbGlkJyA9PiAnRGVubmUgZmlsdHlwZSB1bmRlcnN0w7h0dGVzIGlra2UuIERlIG11bGlnZSBmaWx0eXBlciBlcjogemlwLCBneiwgdGFyLicsCiAgICAnRGlyX05vX1dyaXRlJyA9PiAnRGVyIGthbiBpa2tlIHNrcml2ZXMgdGlsIGRlbiB2YWxndGUgbWFwcGUuIEtvbnRha3QgZGluIGFkbWluaXN0cmF0b3IuJywKICAgICdGdW5jdGlvbl9EaXNhYmxlZCcgPT4gJ0Rlbm5lICVzIGZ1bmt0aW9uIGVyIHNsw6VldCBmcmEgYWYgc2VydmVyZW4uJywgLy8gJXMgPSBjdXQgb3IgY29weQogICAgJ0ZpbGVfUGVybWlzc2lvbicgPT4gJ0ZpbCB0aWxsYWRlbHNlcicsCiAgICAnRmlsZV9QZXJtaXNzaW9uX05vdF9BbGxvd2VkJyA9PiAnRGV0IGVyIGlra2UgdGlsbGFkdCBhdCDDpm5kcmUgdGlsbGFkZWxzZW4gZm9yICVzLicsIC8vICVzID0gZmlsZXMgb3IgZm9sZGVycwogICAgJ0ZpbGVfUGVybWlzc2lvbl9SZWN1cnNpdmUnID0+ICdHw7hyZXMgdmVkIGFsbGUgbWFwcGVyIG9nIGZpbGVyIChyZWt1cnNpdnQpPycsCiAgICAnRmlsZV9QZXJtaXNzaW9uX1dyb25nX01vZGUnID0+ICJEZW4gYW52ZW5kdGUgaW5kc3RpbGxpbmcgZm9yIHRpbGxhZGVsc2UgZXIgaWtrZSBrb3JyZWt0LiIsCiAgICAnVXNlcicgPT4gJ0JydWdlcicsCiAgICAnR3JvdXAnID0+ICdHcnVwcGUnLAogICAgJ1llcycgPT4gJ0phJywKICAgICdObycgPT4gJ05laicsCiAgICAnTGFuZ19Ob3RfRm91bmQnID0+ICdDZXQgdmFyIGlra2UgbXVsaWd0IGF0IGZpbmRlIHNwcm9nLWZpbGVuLicsCiAgICAnTGFuZ19DaGFuZ2UnID0+ICdBbmRldCBzcHJvZycsCiAgICAnRmlsZV9Ob3RfRm91bmQnID0+ICdEZXQgdmFyIGlra2UgbXVsaWd0IGF0IGZpbmRlIGZpbGVuLicsCiAgICAnRmlsZV9PcGVuX0VkaXRfTm90X0FsbG93ZWQnID0+ICdEdSBoYXIgaWtrZSB0aWxhZGVsc2UgdGlsIGF0ICVzIGRlbm5lIGZpbC4nLCAvLyAlcyA9IG9wZW4gb3IgZWRpdAogICAgJ0VkaXQnID0+ICdSZWRpZ8OpcicsCiAgICAnRWRpdF9GaWxlJyA9PiAiUmVkaWfDqXIgZmlsZW5zIGluZGhvbGQiLAogICAgJ0ZpbGVfU2F2ZV9PSycgPT4gIkZpbGVuIGJsZXYgZ2VtdC4iLAogICAgJ0ZpbGVfU2F2ZV9FcnJvcicgPT4gIkRlciBvcHN0b2QgZW4gZmVqbCBpIGZvcnPDuGdldCBww6UgYXQgZ2VtbWUgZmlsZW4uIiwKICAgICdOZXdfRmlsZScgPT4gJ09wcmV0IG55IGZpbCcsCiAgICAnTm9fRXh0ZW5zaW9uJyA9PiAnSHVzayBhdCB0aWxmw7hqZSBmaWx0eXBlLicsCiAgICAnVmFsaWRfRXh0ZW5zaW9ucycgPT4gJ0d5bGRpZ2UgZmlsdHlwZXIgZXI6ICVzJywgLy8gJXMgPSB0eHQsbG9nIGV0Yy4KICAgICdVcGxvYWRfbWVzc2FnZScgPT4gIkRyb3AgZmlsZSBoZXJlIHRvIHVwbG9hZCIsCgogICAgJ1NFUlZFUiBFUlJPUicgPT4gIlNFUlZFUiBFUlJPUiIsCiAgICAnZm9yYmlkZGVuJyA9PiAiRm9yYmlkZW4iLAogICAgJ3dyb25nIHBhdGgnID0+ICJXcm9uZyBwYXRoIiwKICAgICd3cm9uZyBuYW1lJyA9PiAiV3JvbmcgbmFtZSIsCiAgICAnd3JvbmcgZXh0ZW5zaW9uJyA9PiAiV3JvbmcgZXh0ZW5zaW9uIiwKICAgICd3cm9uZyBvcHRpb24nID0+ICJXcm9uZyBvcHRpb24iLAogICAgJ3dyb25nIGRhdGEnID0+ICJXcm9uZyBkYXRhIiwKICAgICd3cm9uZyBhY3Rpb24nID0+ICJXcm9uZyBhY3Rpb24iLAogICAgJ3dyb25nIHN1Yi1hY3Rpb24nID0+ICJXcm9uZyBzdWItYWN0aW8iLAogICAgJ25vIGFjdGlvbiBwYXNzZWQnID0+ICJObyBhY3Rpb24gcGFzc2VkIiwKICAgICdubyBwYXRoJyA9PiAiTm8gcGF0aCIsCiAgICAnbm8gZmlsZScgPT4gIk5vIGZpbGUiLAogICAgJ3ZpZXcgdHlwZSBudW1iZXIgbWlzc2luZycgPT4gIlZpZXcgdHlwZSBudW1iZXIgbWlzc2luZyIsCiAgICAnTm90IGVub3VnaCBNZW1vcnknID0+ICJOb3QgZW5vdWdoIE1lbW9yeSIsCiAgICAnbWF4X3NpemVfcmVhY2hlZCcgPT4gIllvdXIgaW1hZ2UgZm9sZGVyIGhhcyByZWFjaCBpdHMgbWF4aW1hbGUgc2l6ZSBvZiAlZCBNQi4iLCAvLyVkID0gbWF4IG92ZXJhbGwgc2l6ZQogICAgJ0InID0+ICJCIiwKICAgICdLQicgPT4gIktCIiwKICAgICdNQicgPT4gIk1CIiwKICAgICdHQicgPT4gIkdCIiwKICAgICdUQicgPT4gIlRCIiwKICAgICd0b3RhbCBzaXplJyA9PiAiVG90YWwgc2l6ZSIsCik7Cg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/lang/de.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJldHVybiBhcnJheSgKCiAgICAnU2VsZWN0JyA9PiAnQXVzdyZhdW1sO2hsZW4nLAogICAgJ0Rlc2VsZWN0X0FsbCcgPT4gJ0FsbGUgYWJ3JmF1bWw7aGxlbicsCiAgICAnU2VsZWN0X0FsbCcgPT4gJ0FsbGUgYXVzdyZhdW1sO2hsZW4nLAogICAgJ0VyYXNlJyA9PiAnTCZvdW1sO3NjaGVuJywKICAgICdPcGVuJyA9PiAnJk91bWw7ZmZuZW4nLAogICAgJ0NvbmZpcm1fZGVsJyA9PiAnU2luZCBTaWUgc2ljaGVyLCBkYXNzIFNpZSBkaWVzZSBEYXRlaSBsJm91bWw7c2NoZW4gd29sbGVuPycsCiAgICAnQWxsJyA9PiAnQWxsZScsCiAgICAnRmlsZXMnID0+ICdEYXRlaWVuJywKICAgICdJbWFnZXMnID0+ICdCaWxkZXInLAogICAgJ0FyY2hpdmVzJyA9PiAnQXJjaGl2ZScsCiAgICAnRXJyb3JfVXBsb2FkJyA9PiAnRGllIERhdGVpICZ1dW1sO2JlcnNjaHJlaXRldCBkaWUgbWF4aW1hbCBlcmxhdWJ0ZSBHciZvdW1sOyZzemxpZztlLicsCiAgICAnRXJyb3JfZXh0ZW5zaW9uJyA9PiAnRGllc2VyIERhdGVpdHlwIGlzdCBuaWNodCBlcmxhdWJ0LicsCiAgICAnVXBsb2FkX2ZpbGUnID0+ICdIb2NobGFkZW4nLAogICAgJ0ZpbHRlcnMnID0+ICdGaWx0ZXInLAogICAgJ1ZpZGVvcycgPT4gJ1ZpZGVvcycsCiAgICAnTXVzaWMnID0+ICdNdXNpaycsCiAgICAnTmV3X0ZvbGRlcicgPT4gJ05ldWVzIFZlcnplaWNobmlzJywKICAgICdGb2xkZXJfQ3JlYXRlZCcgPT4gJ1ZlcnplaWNobmlzIGVyZm9sZ3JlaWNoIGVyc3RlbGx0JywKICAgICdFeGlzdGluZ19Gb2xkZXInID0+ICdWZXJ6ZWljaG5pcyBzY2hsaWUmc3psaWc7ZW4nLAogICAgJ0NvbmZpcm1fRm9sZGVyX2RlbCcgPT4gJ1NpbmQgU2llIHNpY2hlciwgZGFzcyBTaWUgZGllc2VzIFZlcnplaWNobmlzIGlua2x1c2l2ZSBhbGxlciBkYXJpbiBlbnRoYWx0ZW5lbiBEYXRlaWVuIGwmb3VtbDtzY2hlbiBtJm91bWw7Y2h0ZW4/JywKICAgICdSZXR1cm5fRmlsZXNfTGlzdCcgPT4gJ1p1ciZ1dW1sO2NrIHp1ciBEYXRlaSZ1dW1sO2JlcnNpY2h0JywKICAgICdQcmV2aWV3JyA9PiAnVm9yc2NoYXUnLAogICAgJ0Rvd25sb2FkJyA9PiAnRG93bmxvYWQnLAogICAgJ0luc2VydF9Gb2xkZXJfTmFtZScgPT4gJ1ZlcnplaWNobmlzbmFtZW4gYW5nZWJlbjonLAogICAgJ1Jvb3QnID0+ICdCYXNpc3ZlcnplaWNobmlzJywKICAgICdSZW5hbWUnID0+ICdVbWJlbmVubmVuJywKICAgICdCYWNrJyA9PiAnenVyJnV1bWw7Y2snLAogICAgJ1ZpZXcnID0+ICdBbnNpY2h0JywKICAgICdWaWV3X2xpc3QnID0+ICdMaXN0ZW5hbnNpY2h0JywKICAgICdWaWV3X2NvbHVtbnNfbGlzdCcgPT4gJ1NwYWx0ZW5hbnNpY2h0JywKICAgICdWaWV3X2JveGVzJyA9PiAnQm94LUFuc2ljaHQnLAogICAgJ1Rvb2xiYXInID0+ICdXZXJremV1Z2xlaXN0ZScsCiAgICAnQWN0aW9ucycgPT4gJ0FrdGlvbmVuJywKICAgICdSZW5hbWVfZXhpc3RpbmdfZmlsZScgPT4gJ0RpZSBEYXRlaSBleGlzdGllcnQgYmVyZWl0cycsCiAgICAnUmVuYW1lX2V4aXN0aW5nX2ZvbGRlcicgPT4gJ0RhcyBWZXJ6ZWljaG5pcyBleGlzdGllcnQgYmVyZWl0cycsCiAgICAnRW1wdHlfbmFtZScgPT4gJ0RlciBOYW1lIGlzdCBsZWVyJywKICAgICdUZXh0X2ZpbHRlcicgPT4gJ1N1Y2hlJywKICAgICdTd2lwZV9oZWxwJyA9PiAnRmFocmVuIFNpZSBtaXQgZGVyIE1hdXMgJnV1bWw7YmVyIGRpZSBEYXRlaSwgdW0gc2ljaCBEZXRhaWxzIGFuemVpZ2VuIHp1IGxhc3Nlbi4nLAogICAgJ1VwbG9hZF9iYXNlJyA9PiAnU3RhbmRhcmQgSG9jaGxhZGVuJywKICAgICdVcGxvYWRfYmFzZV9oZWxwJyA9PiAiWmllaGVuIFNpZSBkaWUgRGF0ZWllbiBwZXIgRHJhZyAmIERyb3AgYXVmIGRpZSBGbCZhdW1sO2NoZSAobW9kZXJuZSBCcm93c2VyKSBvZGVyIGtsaWNrZW4gU2llIGF1ZiBkaWUgb2JlcmUgU2NoYWx0ZmwmYXVtbDtjaGUsIHVtIGRpZSBEYXRlaShlbikgaGluenV6dWYmdXVtbDtnZW4gdW5kIGtsaWNrZW4gU2llIGF1ZiBcIkhvY2hsYWRlbiBiZWdpbm5lblwiLiBXZW5uIGRhcyBIb2NobGFkZW4gYWJnZXNjaGxvc3NlbiBpc3QsIGtsaWNrZW4gU2llIGF1ZiBkaWUgU2NoYWx0ZmwmYXVtbDtjaGUgXCJadXIgRGF0ZWlsaXN0ZSB6dXImdXVtbDtja2tlaHJlblwiLiIsCiAgICAnVXBsb2FkX2FkZF9maWxlcycgPT4gJ0RhdGVpZW4gaGluenVmJnV1bWw7Z2VuJywKICAgICdVcGxvYWRfc3RhcnQnID0+ICdIb2NobGFkZW4gYmVnaW5uZW4nLAogICAgJ1VwbG9hZF9lcnJvcl9tZXNzYWdlcycgPT4gYXJyYXkoCiAgICAgICAgMSA9PiAnRGllIGhvY2hnZWxhZGVuZSBEYXRlaSAmdXVtbDtiZXJzY2hyZWl0ZXQgZGllIEFud2Vpc3VuZyBcInVwbG9hZF9tYXhfZmlsZXNpemVcIiBpbiBkZXIgcGhwLmluaScsCiAgICAgICAgMiA9PiAnRGllIGhvY2hnZWxhZGVuZSBEYXRlaSAmdXVtbDtiZXJzY2hyZWl0ZXQgZGllIEFud2Vpc3VuZyBcIk1BWF9GSUxFX1NJWkVcIiwgZGllIGltIEhUTUwtRm9ybXVsYXIgYW5nZWdlYmVuIHd1cmRlJywKICAgICAgICAzID0+ICdEaWUgaG9jaGdlbGFkZW5lIERhdGVpIHd1cmRlIG51ciB0ZWlsd2Vpc2UgaG9jaGdlbGFkZW4nLAogICAgICAgIDQgPT4gJ0VzIHd1cmRlIGtlaW5lIERhdGVpIGhvY2hnZWxhZGVuJywKICAgICAgICA2ID0+ICdFaW4gdGVtcG9yJmF1bWw7cmVyIE9yZG5lciBmZWhsdCcsCiAgICAgICAgNyA9PiAnRmVobGVyIGJlaW0gU2NocmVpYmVuIGRlciBEYXRlaSBhdWYgZGllIEZlc3RwbGF0dGUnLAogICAgICAgIDggPT4gJ0VpbmUgUEhQLUVyd2VpdGVydW5nIGhhdCBkZW4gVXBsb2FkIGRlciBEYXRlaSBnZXN0b3BwdC4nLAogICAgICAgICdwb3N0X21heF9zaXplJyA9PiAnRGllIGhvY2hnZWxhZGVuZSBEYXRlaSAmdXVtbDtiZXJzY2hyZWl0ZXQgZGllIEFud2Vpc3VuZyBcInBvc3RfbWF4X3NpemVcIiBpbiBkZXIgcGhwLmluaScsCiAgICAgICAgJ21heF9maWxlX3NpemUnID0+ICdEYXRlaSBpc3QgenUgZ3JvJnN6bGlnOycsCiAgICAgICAgJ21pbl9maWxlX3NpemUnID0+ICdEYXRlaSBpc3QgenUga2xlaW4nLAogICAgICAgICdhY2NlcHRfZmlsZV90eXBlcycgPT4gJ0RhdGVpdHlwIG5pY2h0IGVybGF1YnQnLAogICAgICAgICdtYXhfbnVtYmVyX29mX2ZpbGVzJyA9PiAnTWF4aW1hbGUgQW56YWhsIHZvbiBEYXRlaWVuICZ1dW1sO2JlcnNjaHJpdHRlbicsCiAgICAgICAgJ21heF93aWR0aCcgPT4gJ0RhcyBCaWxkICZ1dW1sO2JlcnNjaHJlaXRldCBkaWUgbWF4aW1hbGUgQnJlaXRlJywKICAgICAgICAnbWluX3dpZHRoJyA9PiAnQmlsZCBiZW4mb3VtbDt0aWd0IGVpbmUgbWluaW1hbGUgQnJlaXRlJywKICAgICAgICAnbWF4X2hlaWdodCcgPT4gJ0RhcyBCaWxkICZ1dW1sO2JlcnNjaHJlaXRldCBkaWUgbWF4aW1hbGUgSCZvdW1sO2hlJywKICAgICAgICAnbWluX2hlaWdodCcgPT4gJ0JpbGQgZXJmb3JkZXJ0IGVpbmUgbWluaW1hbGUgSCZvdW1sO2hlJywKICAgICAgICAnYWJvcnQnID0+ICdIb2NobGFkZW4gYWJnZWJyb2NoZW4nLAogICAgICAgICdpbWFnZV9yZXNpemUnID0+ICdGZWhsZXIgYmVpbSAmQXVtbDtuZGVybiBkZXIgQmlsZGdyJm91bWw7JnN6bGlnO2UnCiAgICApLAogICAgJ1VwbG9hZF91cmwnID0+ICdWb24gVVJMJywKICAgICdUeXBlX2RpcicgPT4gJ1ZlcnplaWNobmlzJywKICAgICdUeXBlJyA9PiAnVHlwJywKICAgICdEaW1lbnNpb24nID0+ICdEaW1lbnNpb25lbicsCiAgICAnU2l6ZScgPT4gJ0dyJm91bWw7JnN6bGlnO2UnLAogICAgJ0RhdGUnID0+ICdEYXR1bScsCiAgICAnRmlsZW5hbWUnID0+ICdEYXRlaW5hbWUnLAogICAgJ09wZXJhdGlvbnMnID0+ICdPcGVyYXRpb25lbicsCiAgICAnRGF0ZV90eXBlJyA9PiAnZC5tLnknLAogICAgJ09LJyA9PiAnT0snLAogICAgJ0NhbmNlbCcgPT4gJ0FiYnJlY2hlbicsCiAgICAnU29ydGluZycgPT4gJ1NvcnRpZXJlJywKICAgICdTaG93X3VybCcgPT4gJ3plaWdlIFVSTCcsCiAgICAnRXh0cmFjdCcgPT4gJ2hpZXIgZW50cGFja2VuJywKICAgICdGaWxlX2luZm8nID0+ICdEYXRlaWluZm8nLAogICAgJ0VkaXRfaW1hZ2UnID0+ICdCaWxkIGVkaXRpZXJlbicsCiAgICAnRHVwbGljYXRlJyA9PiAnRHVwbGl6aWVyZW4nLAogICAgJ0ZvbGRlcnMnID0+ICdPcmRuZXInLAogICAgJ0NvcHknID0+ICdLb3BpZXJlbicsCiAgICAnQ3V0JyA9PiAnQXVzc3NjaG5laWRlbicsCiAgICAnUGFzdGUnID0+ICdFaW5mJnV1bWw7Z2VuJywKICAgICdDQicgPT4gJ1p3aXNjaGVuYWJsYWdlJywgLy8gY2xpcGJvYXJkCiAgICAnUGFzdGVfSGVyZScgPT4gJ0F1cyBkZXIgWndpc2NoZW5hYmxhZ2UgZWluZiZ1dW1sO2dlbicsCiAgICAnUGFzdGVfQ29uZmlybScgPT4gJ1NpbmQgU2llIHNpY2hlciwgZGFzcyBTaWUgZXMgaW4gZGllc2VuIE9yZG5lciBlaW5mJnV1bWw7Z2VuIG0mb3VtbDtjaHRlbj8gRXhpc3RpZXJlbmRlIERhdGVpZW4vVmVyemVpY2huaXNzZSB3ZXJkZW4gJnV1bWw7YmVyc2NocmllYmVuLicsCiAgICAnUGFzdGVfRmFpbGVkJyA9PiAnRWluZiZ1dW1sO2dlbiBmZWhnZXNjaGxhZ2VuIScsCiAgICAnQ2xlYXJfQ2xpcGJvYXJkJyA9PiAnWndpc2NoZW5hYmxhZ2UgbGVlcmVuJywKICAgICdDbGVhcl9DbGlwYm9hcmRfQ29uZmlybScgPT4gJ1p3aXNjaGVuYWJsYWdlIHdpcmtpY2ggbGVlcmVuPycsCiAgICAnRmlsZXNfT05fQ2xpcGJvYXJkJyA9PiAnU2llIGhhYmVuIGJlcmVpdHMgRGF0ZWllbiBpbiBkZXIgWndpc2NoZW5hYmxhZ2UhJywKICAgICdDb3B5X0N1dF9TaXplX0xpbWl0JyA9PiAnRGllIERhdGVpZW4gc2luZCB6dSBncm8mc3psaWc7IHp1bSAlcy4gTGltaXQ6ICVkIE1CIHBybyBBa3Rpb24nLCAvLyAlcyA9IGN1dCBvciBjb3B5CiAgICAnQ29weV9DdXRfQ291bnRfTGltaXQnID0+ICdTaWUgaGFiZW4genUgdmllbGUgRGF0ZWllbi9PcmRuZXIgenVtICVzIGF1c2dldyZhdW1sO2x0LiBMaW1pdDogJWQgRGF0ZWllbiBwcm8gQWt0aW9uJywgLy8gJXMgPSBjdXQgb3IgY29weQogICAgJ0NvcHlfQ3V0X05vdF9BbGxvd2VkJyA9PiAnU2llIGhhYmVuIG5pY2h0IGRpZSBCZXJlY2h0aWd1bmdlbiB6dW0gJXMgdm9uIERhdGVpZW4uJywgLy8gJXMoMSkgPSBjdXQgb3IgY29weSwgJXMoMikgPSBmaWxlcyBvciBmb2xkZXJzCiAgICAnSW1hZ2VfRWRpdG9yX05vX1NhdmUnID0+ICdEYXMgQmlsZCBrb25udGUgbmljaHQgZ2VzcGVpY2hlcnQgd2VyZGVuLicsCiAgICAnSW1hZ2VfRWRpdG9yX0V4aXQnID0+ICJBdXNnYW5nIiwKICAgICdJbWFnZV9FZGl0b3JfU2F2ZScgPT4gIlNwYXJlbiIsCiAgICAnWmlwX05vX0V4dHJhY3QnID0+ICdaaXAgRGF0ZWkga29ubnRlIG5pY2h0IGVudHBhY2t0IHdlcmRlbi4gRGllIERhdGVpIGlzdCBtJm91bWw7Z2xpY2hlcndlaXNlIGJlc2NoJmF1bWw7ZGlndC4nLAogICAgJ1ppcF9JbnZhbGlkJyA9PiAnRGllc2VzIERhdGVpZm9ybWF0IHdpcmQgbmljaHQgdW50ZXJzdCZ1dW1sO3p0LiBadWdlbGFzc2VuZSBGb3JtYXRlOiB6aXAsIGd6IHVuZCB0YXIuJywKICAgICdEaXJfTm9fV3JpdGUnID0+ICdEaWVzZXMgRGF0ZWl2ZXJ6ZWljaGlzIGlzdCBzY2hyZWliZ2VzY2gmdXVtbDt0enQuJywKICAgICdGdW5jdGlvbl9EaXNhYmxlZCcgPT4gJ0RpZSBGdW5rdGlvbiAlcyBpc3Qgc2VydmVyc2VpdGlnIGRlYWt0aXZpZXJ0LicsIC8vICVzID0gY3V0IG9yIGNvcHkKICAgICdGaWxlX1Blcm1pc3Npb24nID0+ICdEYXRlaWJlcmVjaHRpZ3VuZycsCiAgICAnRmlsZV9QZXJtaXNzaW9uX05vdF9BbGxvd2VkJyA9PiAnJkF1bWw7bmRlcm4gJXMgUmVjaHRlIGlzdCBuaWNodCBlcmxhdWJ0LicsIC8vICVzID0gZmlsZXMgb3IgZm9sZGVycwogICAgJ0ZpbGVfUGVybWlzc2lvbl9SZWN1cnNpdmUnID0+ICdSZWt1cnNpdiBhbndlbmRlbj8nLAogICAgJ0ZpbGVfUGVybWlzc2lvbl9Xcm9uZ19Nb2RlJyA9PiAiRGVyIGFuZ2VnZWJlbmUgQmVyZWNodGlndW5nc21vZHVzIGlzdCBmYWxzY2guIiwKICAgICdVc2VyJyA9PiAnQmVudXR6ZXInLAogICAgJ0dyb3VwJyA9PiAnR3J1cHBlJywKICAgICdZZXMnID0+ICdKYScsCiAgICAnTm8nID0+ICdOZWluJywKICAgICdMYW5nX05vdF9Gb3VuZCcgPT4gJ1NwcmFjaGUgd3VyZGUgbmljaHQgZ2VmdW5kZW4uJywKICAgICdMYW5nX0NoYW5nZScgPT4gJ1NwcmFjaGUgd2VjaHNlbG4nLAogICAgJ0ZpbGVfTm90X0ZvdW5kJyA9PiAnRGF0ZWkgd3VyZGUgbmljaHQgZ2VmdW5kZW4uJywKICAgICdGaWxlX09wZW5fRWRpdF9Ob3RfQWxsb3dlZCcgPT4gJ1NpZSBzaW5kIG5pY2h0IGJlcmVjaHRpZ3QgZGllc2UgRGF0ZWkgenUgJS4nLCAvLyAlcyA9IG9wZW4gb3IgZWRpdAogICAgJ0VkaXQnID0+ICdCZWFyYmVpdGVuJywKICAgICdFZGl0X0ZpbGUnID0+ICJEYXRlaWluaGFsdCBiZWFyYmVpdGVuIiwKICAgICdGaWxlX1NhdmVfT0snID0+ICJEYXRlaSBlcmZvbGdyZWljaCBnZXNwZWljaGVydC4iLAogICAgJ0ZpbGVfU2F2ZV9FcnJvcicgPT4gIkJlaW0gU3BlaWNoZXJuIGRlciBEYXRlaSBpc3QgZWluIEZlaGxlciBhdWZnZXRyZXRlbi4iLAogICAgJ05ld19GaWxlJyA9PiAnTmV1ZSBEYXRlaScsCiAgICAnTm9fRXh0ZW5zaW9uJyA9PiAnRGF0ZWllbmR1bmcgbXVzcyBoaW56dWdlZiZ1dW1sO2d0IHdlcmRlbi4nLAogICAgJ1ZhbGlkX0V4dGVuc2lvbnMnID0+ICdFcmxhdWJ0ZSBEYXRlaWVuZHVuZ2VuOiAlcycsIC8vICVzID0gdHh0LGxvZyBldGMuCiAgICAnVXBsb2FkX21lc3NhZ2UnID0+ICJEYXRlaSBoaWVyIHp1bSBIb2NobGFkZW4gYWJsZWdlbiIsCgogICAgJ1NFUlZFUiBFUlJPUicgPT4gIlNFUlZFUiBGRUhMRVIiLAogICAgJ2ZvcmJpZGVuJyA9PiAiVmVyYm90ZW4iLAogICAgJ3dyb25nIHBhdGgnID0+ICJGYWxzY2hlciBQZmFkIiwKICAgICd3cm9uZyBuYW1lJyA9PiAiRmFsc2NoZXIgTmFtZSIsCiAgICAnd3JvbmcgZXh0ZW5zaW9uJyA9PiAiRmFsc2NoZSBFcndlaXRlcnVuZyIsCiAgICAnd3Jvbmcgb3B0aW9uJyA9PiAiRmFsc2NoZSBPcHRpb24iLAogICAgJ3dyb25nIGRhdGEnID0+ICJGYWxzY2hlbiBEYXRlbiIsCiAgICAnd3JvbmcgYWN0aW9uJyA9PiAiRmFsc2NoZSBBa3Rpb24iLAogICAgJ3dyb25nIHN1Yi1hY3Rpb24nID0+ICJGYWxzY2hlIFN1YmFrdGlvbiIsCiAgICAnbm8gYWN0aW9uIHBhc3NlZCcgPT4gIktlaW5lIEFrdGlvbiAmdXVtbDtiZXJnZWJlbiIsCiAgICAnbm8gcGF0aCcgPT4gIktlaW4gUGZhZCIsCiAgICAnbm8gZmlsZScgPT4gIktlaW5lIERhdGVpIiwKICAgICd2aWV3IHR5cGUgbnVtYmVyIG1pc3NpbmcnID0+ICJUeXBudW1tZXIgZmVobHQiLAogICAgJ05vdCBlbm91Z2ggTWVtb3J5JyA9PiAiTmljaHQgZ2Vuw7xnZW5kIFNwZWljaGVyIiwKICAgICdtYXhfc2l6ZV9yZWFjaGVkJyA9PiAiSWhyIEJpbGRlci1PcmRuZXIgaGF0IGRpZSBtYXhpbWFsZSBHciZvdW1sOyZzemxpZztlIHZvbiAlZCBNQiBlcnJlaWNodC4iLCAvLyVkID0gbWF4IG92ZXJhbGwgc2l6ZQogICAgJ0InID0+ICJCIiwKICAgICdLQicgPT4gIktCIiwKICAgICdNQicgPT4gIk1CIiwKICAgICdHQicgPT4gIkdCIiwKICAgICdUQicgPT4gIlRCIiwKICAgICd0b3RhbCBzaXplJyA9PiAiR2VzYW10Z3Imb3VtbDsmc3psaWc7ZSIsCik7Cg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/lang/el_GR.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJldHVybiBhcnJheSgKCiAgICAnU2VsZWN0JyA9PiAnzpXPgM65zrvOv86zzq4nLAogICAgJ0Rlc2VsZWN0X0FsbCcgPT4gJ0Rlc2VsZWN0IEFsbCcsCiAgICAnU2VsZWN0X0FsbCcgPT4gJ1NlbGVjdCBBbGwnLAogICAgJ0VyYXNlJyA9PiAnzpTOuc6xzrPPgc6xz4bOricsCiAgICAnT3BlbicgPT4gJ86Gzr3Ov865zrPOvM6xJywKICAgICdDb25maXJtX2RlbCcgPT4gJ86Vzq/Pg8+EzrUgz4POr86zzr/Phc+Bzr/OuSDPjM+EzrkgzrjOrc67zrXPhM61IM69zrEgzrTOuc6xzrPPgc6sz4jOtc+EzrUgzrHPhc+Ez4wgz4TOvyDOsc+Bz4fOtc6vzr87JywKICAgICdBbGwnID0+ICfOjM67zrEnLAogICAgJ0ZpbGVzJyA9PiAnzojOs86zz4HOsc+GzrEnLAogICAgJ0ltYWdlcycgPT4gJ86VzrnOus+Mzr3Otc+CJywKICAgICdBcmNoaXZlcycgPT4gJ86Rz4HPh861zq/OsScsCiAgICAnRXJyb3JfVXBsb2FkJyA9PiAnzqTOvyDOsc+Bz4fOtc6vzr8gz4DOv8+FIM68zrXPhM6xz4bOv8+Bz4TPjs64zrfOus61IM+Fz4DOtc+BzrLOsc6vzr3Otc65IM+Ezr8gzrzOrc6zzrnPg8+Ezr8gzrXPgM65z4TPgc61z4DPjM68zrXOvc6/IM68zq3Os861zrjOv8+CLicsCiAgICAnRXJyb3JfZXh0ZW5zaW9uJyA9PiAnzpcgzrrOsc+EzqzOu863zr7OtyDOsc+Bz4fOtc6vzr/PhSDOtM61zr0gzrXPgM65z4TPgc6tz4DOtc+EzrHOuS4nLAogICAgJ1VwbG9hZF9maWxlJyA9PiAnzpzOtc+EzrHPhs+Mz4HPhM+Jz4POtycsCiAgICAnRmlsdGVycycgPT4gJ86mzq/Ou8+Ez4HOsScsCiAgICAnVmlkZW9zJyA9PiAnzpLOr869z4TOtc6/JywKICAgICdNdXNpYycgPT4gJ86czr/Phc+DzrnOus6uJywKICAgICdOZXdfRm9sZGVyJyA9PiAnzp3Orc6/z4Igz4bOrM66zrXOu86/z4InLAogICAgJ0ZvbGRlcl9DcmVhdGVkJyA9PiAnzp8gz4bOrM66zrXOu86/z4IgzrTOt868zrnOv8+Fz4HOs86uzrjOt866zrUnLAogICAgJ0V4aXN0aW5nX0ZvbGRlcicgPT4gJ86lz4DOrM+Bz4fPic69IM+GzqzOus61zrvOv8+CJywKICAgICdDb25maXJtX0ZvbGRlcl9kZWwnID0+ICfOlc6vz4PPhM61IM+Dzq/Os86/z4XPgc6/zrkgz4zPhM65IM64zq3Ou861z4TOtSDOvc6xIM60zrnOsc6zz4HOrM+IzrXPhM61IM+Ezr8gz4bOrM66zrXOu86/IM66zrHOuSDPjM67zrEgz4TOsSDPg8+Ezr/Ouc+HzrXOr86xIM+Azr/PhSDPgM61z4HOuc6tz4fOv869z4TOsc65IM+DzrUgzrHPhc+Ez4zOvTsnLAogICAgJ1JldHVybl9GaWxlc19MaXN0JyA9PiAnzpXPgM65z4PPhM+Bzr/Phs6uIM+Dz4TOv869IM66zrHPhM6szrvOv86zzr8gz4TPic69IM6xz4HPh861zq/Pic69JywKICAgICdQcmV2aWV3JyA9PiAnzqDPgc6/zrXPgM65z4POus+Mz4DOt8+DzrcnLAogICAgJ0Rvd25sb2FkJyA9PiAnzpvOrs+IzrcnLAogICAgJ0luc2VydF9Gb2xkZXJfTmFtZScgPT4gJ86VzrnPg86szrPOtc+EzrUgz4TOvyDPjM69zr/OvM6xIM+Ezr/PhSDPhs6xzrrOrc67zr/PhTonLAogICAgJ1Jvb3QnID0+ICdyb290JywKICAgICdSZW5hbWUnID0+ICfOnM61z4TOv869zr/OvM6xz4POr86xJywKICAgICdCYWNrJyA9PiAnz4DOr8+Dz4knLAogICAgJ1ZpZXcnID0+ICfOoM+Bzr/Oss6/zrvOricsCiAgICAnVmlld19saXN0JyA9PiAnzqDPgc6/zrLOv867zq4gzrvOr8+Dz4TOsc+CJywKICAgICdWaWV3X2NvbHVtbnNfbGlzdCcgPT4gJ86gz4HOv86yzr/Ou86uIM67zq/Pg8+EzrHPgiDOvM61IM+Dz4TOrs67zrXPgicsCiAgICAnVmlld19ib3hlcycgPT4gJ86gz4HOv86yzr/Ou86uIM+AzrvOsc65z4POr86/z4UnLAogICAgJ1Rvb2xiYXInID0+ICfOk8+BzrHOvM68zq4gzrXPgc6zzrHOu861zq/Pic69JywKICAgICdBY3Rpb25zJyA9PiAnzpXOvc6tz4HOs861zrnOtc+CJywKICAgICdSZW5hbWVfZXhpc3RpbmdfZmlsZScgPT4gJ86kzr8gzrHPgc+HzrXOr86/IM+Fz4DOrM+Bz4fOtc65IM6uzrTOtycsCiAgICAnUmVuYW1lX2V4aXN0aW5nX2ZvbGRlcicgPT4gJ86fIM+GzqzOus61zrvOv8+CIM+Fz4DOrM+Bz4fOtc65IM6uzrTOtycsCiAgICAnRW1wdHlfbmFtZScgPT4gJ86kzr8gz4zOvc6/zrzOsSDOtc6vzr3Osc65IM66zrXOvc+MJywKICAgICdUZXh0X2ZpbHRlcicgPT4gJ866zrXOr868zrXOvc6/IM+Gzq/Ou8+Ez4HOv8+FJywKICAgICdTd2lwZV9oZWxwJyA9PiAnzqDOtc+BzqzPg8+EzrUgzrzOtSDPhM6/IM+Azr/Ovc+Ezq/Ous65IM+AzqzOvc+JIM6xz4DPjCDPhM6/IM+Mzr3Ov868zrEgz4TOv8+FIM6xz4HPh861zq/Ov8+FIC8gz4bOsc66zq3Ou86/z4UgzrPOuc6xIM69zrEgzrTOtc6vz4TOtSDPhM65z4IgzrXPgM65zrvOv86zzq3PgicsCiAgICAnVXBsb2FkX2Jhc2UnID0+ICfOks6xz4POuc66zq4gzrzOtc+EzrHPhs+Mz4HPhM+Jz4POtycsCiAgICAnVXBsb2FkX2Jhc2VfaGVscCcgPT4gIkRyYWcgJiBEcm9wIGZpbGVzKG1vZGVybiBicm93c2Vycykgb3IgY2xpY2sgaW4gdXBwZXIgYnV0dG9uIHRvIEFkZCB0aGUgZmlsZShzKSBhbmQgY2xpY2sgb24gU3RhcnQgdXBsb2FkLiBXaGVuIHRoZSB1cGxvYWQgaXMgY29tcGxldGUsIGNsaWNrIHRoZSAnUmV0dXJuIHRvIGZpbGVzIGxpc3QnIGJ1dHRvbi4iLAogICAgJ1VwbG9hZF9hZGRfZmlsZXMnID0+ICdBZGQgZmlsZShzKScsCiAgICAnVXBsb2FkX3N0YXJ0JyA9PiAnU3RhcnQgdXBsb2FkJywKICAgICdVcGxvYWRfZXJyb3JfbWVzc2FnZXMnID0+YXJyYXkoCiAgICAgICAgMSA9PiAnVGhlIHVwbG9hZGVkIGZpbGUgZXhjZWVkcyB0aGUgdXBsb2FkX21heF9maWxlc2l6ZSBkaXJlY3RpdmUgaW4gcGhwLmluaScsCiAgICAgICAgMiA9PiAnVGhlIHVwbG9hZGVkIGZpbGUgZXhjZWVkcyB0aGUgTUFYX0ZJTEVfU0laRSBkaXJlY3RpdmUgdGhhdCB3YXMgc3BlY2lmaWVkIGluIHRoZSBIVE1MIGZvcm0nLAogICAgICAgIDMgPT4gJ1RoZSB1cGxvYWRlZCBmaWxlIHdhcyBvbmx5IHBhcnRpYWxseSB1cGxvYWRlZCcsCiAgICAgICAgNCA9PiAnTm8gZmlsZSB3YXMgdXBsb2FkZWQnLAogICAgICAgIDYgPT4gJ01pc3NpbmcgYSB0ZW1wb3JhcnkgZm9sZGVyJywKICAgICAgICA3ID0+ICdGYWlsZWQgdG8gd3JpdGUgZmlsZSB0byBkaXNrJywKICAgICAgICA4ID0+ICdBIFBIUCBleHRlbnNpb24gc3RvcHBlZCB0aGUgZmlsZSB1cGxvYWQnLAogICAgICAgICdwb3N0X21heF9zaXplJyA9PiAnVGhlIHVwbG9hZGVkIGZpbGUgZXhjZWVkcyB0aGUgcG9zdF9tYXhfc2l6ZSBkaXJlY3RpdmUgaW4gcGhwLmluaScsCiAgICAgICAgJ21heF9maWxlX3NpemUnID0+ICdGaWxlIGlzIHRvbyBiaWcnLAogICAgICAgICdtaW5fZmlsZV9zaXplJyA9PiAnRmlsZSBpcyB0b28gc21hbGwnLAogICAgICAgICdhY2NlcHRfZmlsZV90eXBlcycgPT4gJ0ZpbGV0eXBlIG5vdCBhbGxvd2VkJywKICAgICAgICAnbWF4X251bWJlcl9vZl9maWxlcycgPT4gJ01heGltdW0gbnVtYmVyIG9mIGZpbGVzIGV4Y2VlZGVkJywKICAgICAgICAnbWF4X3dpZHRoJyA9PiAnSW1hZ2UgZXhjZWVkcyBtYXhpbXVtIHdpZHRoJywKICAgICAgICAnbWluX3dpZHRoJyA9PiAnSW1hZ2UgcmVxdWlyZXMgYSBtaW5pbXVtIHdpZHRoJywKICAgICAgICAnbWF4X2hlaWdodCcgPT4gJ0ltYWdlIGV4Y2VlZHMgbWF4aW11bSBoZWlnaHQnLAogICAgICAgICdtaW5faGVpZ2h0JyA9PiAnSW1hZ2UgcmVxdWlyZXMgYSBtaW5pbXVtIGhlaWdodCcsCiAgICAgICAgJ2Fib3J0JyA9PiAnRmlsZSB1cGxvYWQgYWJvcnRlZCcsCiAgICAgICAgJ2ltYWdlX3Jlc2l6ZScgPT4gJ0ZhaWxlZCB0byByZXNpemUgaW1hZ2UnCiAgICApLAogICAgJ1VwbG9hZF91cmwnID0+ICdGcm9tIHVybCcsCiAgICAnVHlwZV9kaXInID0+ICfPhs6szrrOtc67zr/PgicsCiAgICAnVHlwZScgPT4gJ86kz43PgM6/z4InLAogICAgJ0RpbWVuc2lvbicgPT4gJ86UzrnOrM+Dz4TOsc+DzrcnLAogICAgJ1NpemUnID0+ICfOnM6tzrPOtc64zr/PgicsCiAgICAnRGF0ZScgPT4gJ86XzrzOtc+Bzr/OvM63zr3Or86xJywKICAgICdGaWxlbmFtZScgPT4gJ86Mzr3Ov868zrEgzrHPgc+HzrXOr86/z4UnLAogICAgJ09wZXJhdGlvbnMnID0+ICfOm861zrnPhM6/z4XPgc6zzq/Otc+CJywKICAgICdEYXRlX3R5cGUnID0+ICd5LW0tZCcsCiAgICAnT0snID0+ICdPSycsCiAgICAnQ2FuY2VsJyA9PiAnzpHOus+Nz4HPic+DzrcnLAogICAgJ1NvcnRpbmcnID0+ICfPhM6xzr7Ouc69z4zOvM63z4POtycsCiAgICAnU2hvd191cmwnID0+ICfOtc68z4bOrM69zrnPg863IFVSTCcsCiAgICAnRXh0cmFjdCcgPT4gJ86Vzr7Osc6zz4nOs86uIM61zrTPjicsCiAgICAnRmlsZV9pbmZvJyA9PiAnz4DOu863z4HOv8+Gzr/Pgc6vzrXPgiDOsc+Bz4fOtc6vzr/PhScsCiAgICAnRWRpdF9pbWFnZScgPT4gJ861z4DOtc6+zrXPgc6zzrHPg86vzrEgzrXOuc66z4zOvc6xz4InLAogICAgJ0R1cGxpY2F0ZScgPT4gJ86Rzr3PhM65zrPPgc6xz4bOricsCiAgICAnRm9sZGVycycgPT4gJ86mzqzOus61zrvOv865JywKICAgICdDb3B5JyA9PiAnzpHOvc+EzrnOs8+BzrHPhs6uJywKICAgICdDdXQnID0+ICfOkc+Azr/Ous6/z4DOricsCiAgICAnUGFzdGUnID0+ICfOlc+AzrnOus+MzrvOu863z4POtycsCiAgICAnQ0InID0+ICdDQicsIC8vIGNsaXBib2FyZAogICAgJ1Bhc3RlX0hlcmUnID0+ICfOlc+AzrnOus+MzrvOu863z4POtyDPg861IM6xz4XPhM+Mzr0gz4TOv869IM+GzqzOus61zrvOvycsCiAgICAnUGFzdGVfQ29uZmlybScgPT4gJ86Vzq/Pg8+EzrUgzrLOrc6yzrHOuc6/zrkgz4zPhM65IM64zq3Ou861z4TOtSDOvc6xIM61z4DOuc66zr/Ou867zq7Pg861z4TOtSDPg861IM6xz4XPhM+Mzr0gz4TOv869IM+GzqzOus61zrvOvzsgzpHPhc+Ez4wgzrjOsSDOsc69z4TOuc66zrHPhM6xz4PPhM6uz4POtc65IM+Fz4DOrM+Bz4fOv869z4TOsSDOsc+Bz4fOtc6vzrEgLyDPhs6xzrrOrc67zr/Phc+CIM6xzr0gzrLPgc61zrjOv8+Nzr0gz4zOvM6/zrnOsS4nLAogICAgJ1Bhc3RlX0ZhaWxlZCcgPT4gJ86Rz4DOv8+Ez4XPh86vzrEgzrXPgM65zrrPjM67zrvOt8+DzrfPgiDPhM6/z4Uoz4nOvSkgzrHPgc+HzrXOr86/z4Uoz4nOvSknLAogICAgJ0NsZWFyX0NsaXBib2FyZCcgPT4gJ86GzrTOtc65zrHPg868zrEgY2xpcGJvYXJkJywKICAgICdDbGVhcl9DbGlwYm9hcmRfQ29uZmlybScgPT4gJ86Vzq/Pg8+EzrUgz4POr86zzr/Phc+Bzr/OuSDPjM+EzrkgzrjOrc67zrXPhM61IM69zrEgzrHOtM61zrnOrM+DzrXPhM61IM+Ezr8gY2xpcGJvYXJkOycsCiAgICAnRmlsZXNfT05fQ2xpcGJvYXJkJyA9PiAnzqXPgM6sz4HPh86/z4XOvSDOsc+Bz4fOtc6vzrEgz4PPhM6/IGNsaXBib2FyZC4nLAogICAgJ0NvcHlfQ3V0X1NpemVfTGltaXQnID0+ICfOpM6xIM61z4DOuc67zrXOs868zq3Ovc6xIM6xz4HPh861zq/OsS/Phs6szrrOtc67zr/OuSDOtc6vzr3Osc65IM+Azr/Ou8+NIM68zrXOs86szrvOsSDOs865zrEgJXMuIM6Mz4HOuc6/OiAlZCBNQi/Ou861zrnPhM6/z4XPgc6zzq/OsScsIC8vICVzID0gY3V0IG9yIGNvcHkKICAgICdDb3B5X0N1dF9Db3VudF9MaW1pdCcgPT4gJ86Vz4DOuc67zq3Ovs6xz4TOtSDPgM6sz4HOsSDPgM6/zrvOu86sIM6xz4HPh861zq/OsS/Phs6xzrrOrc67zr/Phc+CIM6zzrnOsSAlcy4gzozPgc65zr86ICVkIM6xz4HPh861zq/OsS/Ou861zrnPhM6/z4XPgc6zzq/OsScsIC8vICVzID0gY3V0IG9yIGNvcHkKICAgICdDb3B5X0N1dF9Ob3RfQWxsb3dlZCcgPT4gJ86UzrXOvSDOtc+AzrnPhM+Bzq3PgM61z4TOsc65IM63ICVzIM6xz4HPh861zq/Pic69LicsIC8vICVzKDEpID0gY3V0IG9yIGNvcHksICVzKDIpID0gZmlsZXMgb3IgZm9sZGVycwogICAgJ0ltYWdlX0VkaXRvcl9Ob19TYXZlJyA9PiAnzpTOtc69IM6uz4TOsc69IM60z4XOvc6xz4TOriDOtyDOsc+Azr/OuM6uzrrOtc+Fz4POtyDPhM63z4IgzrXOuc66z4zOvc6xz4InLAogICAgJ0ltYWdlX0VkaXRvcl9FeGl0JyA9PiAiRXhpdCIsCiAgICAnSW1hZ2VfRWRpdG9yX1NhdmUnID0+ICJTYXZlIiwKICAgICdaaXBfTm9fRXh0cmFjdCcgPT4gJ86UzrXOvSDOrs+EzrHOvSDOtM+Fzr3Osc+Ezq4gzrcgzrXOvs6xzrPPic6zzq4uIM6kzr8gzrHPgc+HzrXOr86/IM68z4DOv8+BzrXOryDOvc6xIM61zq/Ovc6xzrkgzrrOsc+EzrXPg8+Ez4HOsc68zrzOrc69zr8uJywKICAgICdaaXBfSW52YWxpZCcgPT4gJ86XIM66zrHPhM6szrvOt86+zrcgzrHPhc+Ezq4gzrTOtc69IM+Fz4DOv8+Dz4TOt8+Bzq/Ots61z4TOsc65LiDOiM6zzrrPhc+BzrE6IHppcCwgZ3osIHRhci4nLAogICAgJ0Rpcl9Ob19Xcml0ZScgPT4gJ86fIM+GzqzOus61zrvOv8+CIM+Azr/PhSDOtc+AzrnOu86tzr7Osc+EzrUgzrTOtc69IM61zq/Ovc6xzrkgzrXOs86zz4HOrM+IzrnOvM6/z4IuJywKICAgICdGdW5jdGlvbl9EaXNhYmxlZCcgPT4gJ86XIM67zrXOuc+Ezr/Phc+BzrPOr86xIM6zzrnOsSAlcyDOrc+HzrXOuSDOsc+AzrXOvc61z4HOs86/z4DOv865zrfOuM61zq8gzrHPgM+MIM+Ezr8gzrTOuc6xzrrOv868zrnPg8+Ezq4uJywgLy8gJXMgPSBjdXQgb3IgY29weQogICAgJ0ZpbGVfUGVybWlzc2lvbicgPT4gJ0ZpbGUgcGVybWlzc2lvbicsCiAgICAnRmlsZV9QZXJtaXNzaW9uX05vdF9BbGxvd2VkJyA9PiAnQ2hhbmdpbmcgJXMgcGVybWlzc2lvbnMgYXJlIG5vdCBhbGxvd2VkLicsIC8vICVzID0gZmlsZXMgb3IgZm9sZGVycwogICAgJ0ZpbGVfUGVybWlzc2lvbl9SZWN1cnNpdmUnID0+ICdBcHBseSByZWN1cnNpdmVseT8nLAogICAgJ0ZpbGVfUGVybWlzc2lvbl9Xcm9uZ19Nb2RlJyA9PiAiVGhlIHN1cHBsaWVkIHBlcm1pc3Npb24gbW9kZSBpcyBpbmNvcnJlY3QuIiwKICAgICdVc2VyJyA9PiAnVXNlcicsCiAgICAnR3JvdXAnID0+ICdHcm91cCcsCiAgICAnWWVzJyA9PiAnWWVzJywKICAgICdObycgPT4gJ05vJywKICAgICdMYW5nX05vdF9Gb3VuZCcgPT4gJ0NvdWxkIG5vdCBmaW5kIGxhbmd1YWdlLicsCiAgICAnTGFuZ19DaGFuZ2UnID0+ICdDaGFuZ2UgdGhlIGxhbmd1YWdlJywKICAgICdGaWxlX05vdF9Gb3VuZCcgPT4gJ0NvdWxkIG5vdCBmaW5kIHRoZSBmaWxlLicsCiAgICAnRmlsZV9PcGVuX0VkaXRfTm90X0FsbG93ZWQnID0+ICdZb3UgYXJlIG5vdCBhbGxvd2VkIHRvICVzIHRoaXMgZmlsZS4nLCAvLyAlcyA9IG9wZW4gb3IgZWRpdAogICAgJ0VkaXQnID0+ICdFZGl0JywKICAgICdFZGl0X0ZpbGUnID0+ICJFZGl0IGZpbGUncyBjb250ZW50IiwKICAgICdGaWxlX1NhdmVfT0snID0+ICJGaWxlIHN1Y2Nlc3NmdWxseSBzYXZlZC4iLAogICAgJ0ZpbGVfU2F2ZV9FcnJvcicgPT4gIlRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSBzYXZpbmcgdGhlIGZpbGUuIiwKICAgICdOZXdfRmlsZScgPT4gJ05ldyBGaWxlJywKICAgICdOb19FeHRlbnNpb24nID0+ICdZb3UgaGF2ZSB0byBhZGQgYSBmaWxlIGV4dGVuc2lvbi4nLAogICAgJ1ZhbGlkX0V4dGVuc2lvbnMnID0+ICdWYWxpZCBleHRlbnNpb25zOiAlcycsIC8vICVzID0gdHh0LGxvZyBldGMuCiAgICAnVXBsb2FkX21lc3NhZ2UnID0+ICJEcm9wIGZpbGUgaGVyZSB0byB1cGxvYWQiLAoKICAgICdTRVJWRVIgRVJST1InID0+ICJTRVJWRVIgRVJST1IiLAogICAgJ2ZvcmJpZGRlbicgPT4gIkZvcmJpZGVuIiwKICAgICd3cm9uZyBwYXRoJyA9PiAiV3JvbmcgcGF0aCIsCiAgICAnd3JvbmcgbmFtZScgPT4gIldyb25nIG5hbWUiLAogICAgJ3dyb25nIGV4dGVuc2lvbicgPT4gIldyb25nIGV4dGVuc2lvbiIsCiAgICAnd3Jvbmcgb3B0aW9uJyA9PiAiV3Jvbmcgb3B0aW9uIiwKICAgICd3cm9uZyBkYXRhJyA9PiAiV3JvbmcgZGF0YSIsCiAgICAnd3JvbmcgYWN0aW9uJyA9PiAiV3JvbmcgYWN0aW9uIiwKICAgICd3cm9uZyBzdWItYWN0aW9uJyA9PiAiV3Jvbmcgc3ViLWFjdGlvIiwKICAgICdubyBhY3Rpb24gcGFzc2VkJyA9PiAiTm8gYWN0aW9uIHBhc3NlZCIsCiAgICAnbm8gcGF0aCcgPT4gIk5vIHBhdGgiLAogICAgJ25vIGZpbGUnID0+ICJObyBmaWxlIiwKICAgICd2aWV3IHR5cGUgbnVtYmVyIG1pc3NpbmcnID0+ICJWaWV3IHR5cGUgbnVtYmVyIG1pc3NpbmciLAogICAgJ05vdCBlbm91Z2ggTWVtb3J5JyA9PiAiTm90IGVub3VnaCBNZW1vcnkiLAogICAgJ21heF9zaXplX3JlYWNoZWQnID0+ICJZb3VyIGltYWdlIGZvbGRlciBoYXMgcmVhY2ggaXRzIG1heGltYWxlIHNpemUgb2YgJWQgTUIuIiwgLy8lZCA9IG1heCBvdmVyYWxsIHNpemUKICAgICdCJyA9PiAiQiIsCiAgICAnS0InID0+ICJLQiIsCiAgICAnTUInID0+ICJNQiIsCiAgICAnR0InID0+ICJHQiIsCiAgICAnVEInID0+ICJUQiIsCiAgICAndG90YWwgc2l6ZScgPT4gIlRvdGFsIHNpemUiLAopOwo=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/lang/en_EN.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJldHVybiBhcnJheSgKCiAgICAnU2VsZWN0JyA9PiAnU2VsZWN0JywKICAgICdEZXNlbGVjdF9BbGwnID0+ICdEZXNlbGVjdCBBbGwnLAogICAgJ1NlbGVjdF9BbGwnID0+ICdTZWxlY3QgQWxsJywKICAgICdFcmFzZScgPT4gJ0VyYXNlJywKICAgICdPcGVuJyA9PiAnT3BlbicsCiAgICAnQ29uZmlybV9kZWwnID0+ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlPycsCiAgICAnQWxsJyA9PiAnQWxsJywKICAgICdGaWxlcycgPT4gJ0ZpbGVzJywKICAgICdJbWFnZXMnID0+ICdJbWFnZXMnLAogICAgJ0FyY2hpdmVzJyA9PiAnQXJjaGl2ZXMnLAogICAgJ0Vycm9yX1VwbG9hZCcgPT4gJ1RoZSB1cGxvYWRlZCBmaWxlIGV4Y2VlZHMgdGhlIG1heCBzaXplIGFsbG93ZWQuJywKICAgICdFcnJvcl9leHRlbnNpb24nID0+ICdGaWxlIGV4dGVuc2lvbiBpcyBub3QgYWxsb3dlZC4nLAogICAgJ1VwbG9hZF9maWxlJyA9PiAnVXBsb2FkJywKICAgICdGaWx0ZXJzJyA9PiAnRmlsdGVycycsCiAgICAnVmlkZW9zJyA9PiAnVmlkZW9zJywKICAgICdNdXNpYycgPT4gJ011c2ljJywKICAgICdOZXdfRm9sZGVyJyA9PiAnTmV3IEZvbGRlcicsCiAgICAnRm9sZGVyX0NyZWF0ZWQnID0+ICdGb2xkZXIgY29ycmVjdGx5IGNyZWF0ZWQnLAogICAgJ0V4aXN0aW5nX0ZvbGRlcicgPT4gJ0V4aXN0aW5nIGZvbGRlcicsCiAgICAnQ29uZmlybV9Gb2xkZXJfZGVsJyA9PiAnQXJlIHlvdSBzdXJlIHRvIGRlbGV0ZSB0aGUgZm9sZGVyIGFuZCBhbGwgdGhlIGVsZW1lbnRzIGluIGl0PycsCiAgICAnUmV0dXJuX0ZpbGVzX0xpc3QnID0+ICdSZXR1cm4gdG8gZmlsZXMgbGlzdCcsCiAgICAnUHJldmlldycgPT4gJ1ByZXZpZXcnLAogICAgJ0Rvd25sb2FkJyA9PiAnRG93bmxvYWQnLAogICAgJ0luc2VydF9Gb2xkZXJfTmFtZScgPT4gJ0luc2VydCBmb2xkZXIgbmFtZTonLAogICAgJ1Jvb3QnID0+ICdyb290JywKICAgICdSZW5hbWUnID0+ICdSZW5hbWUnLAogICAgJ0JhY2snID0+ICdiYWNrJywKICAgICdWaWV3JyA9PiAnVmlldycsCiAgICAnVmlld19saXN0JyA9PiAnTGlzdCB2aWV3JywKICAgICdWaWV3X2NvbHVtbnNfbGlzdCcgPT4gJ0NvbHVtbnMgbGlzdCB2aWV3JywKICAgICdWaWV3X2JveGVzJyA9PiAnQm94IHZpZXcnLAogICAgJ1Rvb2xiYXInID0+ICdUb29sYmFyJywKICAgICdBY3Rpb25zJyA9PiAnQWN0aW9ucycsCiAgICAnUmVuYW1lX2V4aXN0aW5nX2ZpbGUnID0+ICdUaGUgZmlsZSBpcyBhbHJlYWR5IGV4aXN0aW5nJywKICAgICdSZW5hbWVfZXhpc3RpbmdfZm9sZGVyJyA9PiAnVGhlIGZvbGRlciBpcyBhbHJlYWR5IGV4aXN0aW5nJywKICAgICdFbXB0eV9uYW1lJyA9PiAnVGhlIG5hbWUgaXMgZW1wdHknLAogICAgJ1RleHRfZmlsdGVyJyA9PiAndGV4dCBmaWx0ZXInLAogICAgJ1N3aXBlX2hlbHAnID0+ICdTd2lwZSB0aGUgbmFtZSBvZiBmaWxlL2ZvbGRlciB0byBzaG93IG9wdGlvbnMnLAogICAgJ1VwbG9hZF9iYXNlJyA9PiAnQmFzZSB1cGxvYWQnLAogICAgJ1VwbG9hZF9iYXNlX2hlbHAnID0+ICJEcmFnICYgRHJvcCBmaWxlcyhtb2Rlcm4gYnJvd3NlcnMpIG9yIGNsaWNrIGluIHVwcGVyIGJ1dHRvbiB0byBBZGQgdGhlIGZpbGUocykgYW5kIGNsaWNrIG9uIFN0YXJ0IHVwbG9hZC4gV2hlbiB0aGUgdXBsb2FkIGlzIGNvbXBsZXRlLCBjbGljayB0aGUgJ1JldHVybiB0byBmaWxlcyBsaXN0JyBidXR0b24uIiwKICAgICdVcGxvYWRfYWRkX2ZpbGVzJyA9PiAnQWRkIGZpbGUocyknLAogICAgJ1VwbG9hZF9zdGFydCcgPT4gJ1N0YXJ0IHVwbG9hZCcsCiAgICAnVXBsb2FkX2Vycm9yX21lc3NhZ2VzJyA9PmFycmF5KAogICAgICAgIDEgPT4gJ1RoZSB1cGxvYWRlZCBmaWxlIGV4Y2VlZHMgdGhlIHVwbG9hZF9tYXhfZmlsZXNpemUgZGlyZWN0aXZlIGluIHBocC5pbmknLAogICAgICAgIDIgPT4gJ1RoZSB1cGxvYWRlZCBmaWxlIGV4Y2VlZHMgdGhlIE1BWF9GSUxFX1NJWkUgZGlyZWN0aXZlIHRoYXQgd2FzIHNwZWNpZmllZCBpbiB0aGUgSFRNTCBmb3JtJywKICAgICAgICAzID0+ICdUaGUgdXBsb2FkZWQgZmlsZSB3YXMgb25seSBwYXJ0aWFsbHkgdXBsb2FkZWQnLAogICAgICAgIDQgPT4gJ05vIGZpbGUgd2FzIHVwbG9hZGVkJywKICAgICAgICA2ID0+ICdNaXNzaW5nIGEgdGVtcG9yYXJ5IGZvbGRlcicsCiAgICAgICAgNyA9PiAnRmFpbGVkIHRvIHdyaXRlIGZpbGUgdG8gZGlzaycsCiAgICAgICAgOCA9PiAnQSBQSFAgZXh0ZW5zaW9uIHN0b3BwZWQgdGhlIGZpbGUgdXBsb2FkJywKICAgICAgICAncG9zdF9tYXhfc2l6ZScgPT4gJ1RoZSB1cGxvYWRlZCBmaWxlIGV4Y2VlZHMgdGhlIHBvc3RfbWF4X3NpemUgZGlyZWN0aXZlIGluIHBocC5pbmknLAogICAgICAgICdtYXhfZmlsZV9zaXplJyA9PiAnRmlsZSBpcyB0b28gYmlnJywKICAgICAgICAnbWluX2ZpbGVfc2l6ZScgPT4gJ0ZpbGUgaXMgdG9vIHNtYWxsJywKICAgICAgICAnYWNjZXB0X2ZpbGVfdHlwZXMnID0+ICdGaWxldHlwZSBub3QgYWxsb3dlZCcsCiAgICAgICAgJ21heF9udW1iZXJfb2ZfZmlsZXMnID0+ICdNYXhpbXVtIG51bWJlciBvZiBmaWxlcyBleGNlZWRlZCcsCiAgICAgICAgJ21heF93aWR0aCcgPT4gJ0ltYWdlIGV4Y2VlZHMgbWF4aW11bSB3aWR0aCcsCiAgICAgICAgJ21pbl93aWR0aCcgPT4gJ0ltYWdlIHJlcXVpcmVzIGEgbWluaW11bSB3aWR0aCcsCiAgICAgICAgJ21heF9oZWlnaHQnID0+ICdJbWFnZSBleGNlZWRzIG1heGltdW0gaGVpZ2h0JywKICAgICAgICAnbWluX2hlaWdodCcgPT4gJ0ltYWdlIHJlcXVpcmVzIGEgbWluaW11bSBoZWlnaHQnLAogICAgICAgICdhYm9ydCcgPT4gJ0ZpbGUgdXBsb2FkIGFib3J0ZWQnLAogICAgICAgICdpbWFnZV9yZXNpemUnID0+ICdGYWlsZWQgdG8gcmVzaXplIGltYWdlJwogICAgKSwKICAgICdVcGxvYWRfdXJsJyA9PiAnRnJvbSB1cmwnLAogICAgJ1R5cGVfZGlyJyA9PiAnZGlyJywKICAgICdUeXBlJyA9PiAnVHlwZScsCiAgICAnRGltZW5zaW9uJyA9PiAnRGltZW5zaW9uJywKICAgICdTaXplJyA9PiAnU2l6ZScsCiAgICAnRGF0ZScgPT4gJ0RhdGUnLAogICAgJ0ZpbGVuYW1lJyA9PiAnRmlsZW5hbWUnLAogICAgJ09wZXJhdGlvbnMnID0+ICdPcGVyYXRpb25zJywKICAgICdEYXRlX3R5cGUnID0+ICd5LW0tZCcsCiAgICAnT0snID0+ICdPSycsCiAgICAnQ2FuY2VsJyA9PiAnQ2FuY2VsJywKICAgICdTb3J0aW5nJyA9PiAnc29ydGluZycsCiAgICAnU2hvd191cmwnID0+ICdTaG93IFVSTCcsCiAgICAnRXh0cmFjdCcgPT4gJ0V4dHJhY3QgaGVyZScsCiAgICAnRmlsZV9pbmZvJyA9PiAnZmlsZSBpbmZvJywKICAgICdFZGl0X2ltYWdlJyA9PiAnRWRpdCBpbWFnZScsCiAgICAnRHVwbGljYXRlJyA9PiAnRHVwbGljYXRlJywKICAgICdGb2xkZXJzJyA9PiAnRm9sZGVycycsCiAgICAnQ29weScgPT4gJ0NvcHknLAogICAgJ0N1dCcgPT4gJ0N1dCcsCiAgICAnUGFzdGUnID0+ICdQYXN0ZScsCiAgICAnQ0InID0+ICdDQicsIC8vIGNsaXBib2FyZAogICAgJ1Bhc3RlX0hlcmUnID0+ICdQYXN0ZSB0byB0aGlzIGRpcmVjdG9yeScsCiAgICAnUGFzdGVfQ29uZmlybScgPT4gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBwYXN0ZSB0byB0aGlzIGRpcmVjdG9yeT8gVGhpcyB3aWxsIG92ZXJ3cml0ZSBleGlzdGluZyBmaWxlcy9mb2xkZXJzIGlmIGVuY291bnRlcmVkIGFueS4nLAogICAgJ1Bhc3RlX0ZhaWxlZCcgPT4gJ0ZhaWxlZCB0byBwYXN0ZSBmaWxlKHMpJywKICAgICdDbGVhcl9DbGlwYm9hcmQnID0+ICdDbGVhciBjbGlwYm9hcmQnLAogICAgJ0NsZWFyX0NsaXBib2FyZF9Db25maXJtJyA9PiAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNsZWFyIHRoZSBjbGlwYm9hcmQ/JywKICAgICdGaWxlc19PTl9DbGlwYm9hcmQnID0+ICdUaGVyZSBhcmUgZmlsZXMgb24gdGhlIGNsaXBib2FyZC4nLAogICAgJ0NvcHlfQ3V0X1NpemVfTGltaXQnID0+ICdUaGUgc2VsZWN0ZWQgZmlsZXMvZm9sZGVycyBhcmUgdG9vIGJpZyB0byAlMSRzLiBMaW1pdDogJTIkZCBNQi9vcGVyYXRpb24nLCAvLyAlMSRzID0gY3V0IG9yIGNvcHksICUyJGQgPSBtYXggc2l6ZQogICAgJ0NvcHlfQ3V0X0NvdW50X0xpbWl0JyA9PiAnWW91IHNlbGVjdGVkIHRvbyBtYW55IGZpbGVzL2ZvbGRlcnMgdG8gJTEkcy4gTGltaXQ6ICUyJGQgZmlsZXMvb3BlcmF0aW9uJywgLy8gJTEkcyA9IGN1dCBvciBjb3B5LCAlMiRkID0gbWF4IGNvdW50CiAgICAnQ29weV9DdXRfTm90X0FsbG93ZWQnID0+ICdZb3UgYXJlIG5vdCBhbGxvd2VkIHRvICUxJHMgJTIkcy4nLCAvLyAlMTIkcyA9IGN1dCBvciBjb3B5LCAlMiRzID0gZmlsZXMgb3IgZm9sZGVycwogICAgJ0ltYWdlX0VkaXRvcl9Ob19TYXZlJyA9PiAnQ291bGQgbm90IHNhdmUgaW1hZ2UnLAogICAgJ0ltYWdlX0VkaXRvcl9FeGl0JyA9PiAiRXhpdCIsCiAgICAnSW1hZ2VfRWRpdG9yX1NhdmUnID0+ICJTYXZlIiwKICAgICdaaXBfTm9fRXh0cmFjdCcgPT4gJ0NvdWxkIG5vdCBleHRyYWN0LiBGaWxlIG1pZ2h0IGJlIGNvcnJ1cHQuJywKICAgICdaaXBfSW52YWxpZCcgPT4gJ1RoaXMgZXh0ZW5zaW9uIGlzIG5vdCBzdXBwb3J0ZWQuIFZhbGlkOiB6aXAsIGd6LCB0YXIuJywKICAgICdEaXJfTm9fV3JpdGUnID0+ICdUaGUgZGlyZWN0b3J5IHlvdSBzZWxlY3RlZCBpcyBub3Qgd3JpdGFibGUuJywKICAgICdGdW5jdGlvbl9EaXNhYmxlZCcgPT4gJ1RoZSAlcyBmdW5jdGlvbiBoYXMgYmVlbiBkaXNhYmxlZCBieSB0aGUgc2VydmVyLicsIC8vICVzID0gY3V0IG9yIGNvcHkKICAgICdGaWxlX1Blcm1pc3Npb24nID0+ICdGaWxlIHBlcm1pc3Npb24nLAogICAgJ0ZpbGVfUGVybWlzc2lvbl9Ob3RfQWxsb3dlZCcgPT4gJ0NoYW5naW5nICVzIHBlcm1pc3Npb25zIGFyZSBub3QgYWxsb3dlZC4nLCAvLyAlcyA9IGZpbGVzIG9yIGZvbGRlcnMKICAgICdGaWxlX1Blcm1pc3Npb25fUmVjdXJzaXZlJyA9PiAnQXBwbHkgcmVjdXJzaXZlbHk/JywKICAgICdGaWxlX1Blcm1pc3Npb25fV3JvbmdfTW9kZScgPT4gIlRoZSBzdXBwbGllZCBwZXJtaXNzaW9uIG1vZGUgaXMgaW5jb3JyZWN0LiIsCiAgICAnVXNlcicgPT4gJ1VzZXInLAogICAgJ0dyb3VwJyA9PiAnR3JvdXAnLAogICAgJ1llcycgPT4gJ1llcycsCiAgICAnTm8nID0+ICdObycsCiAgICAnTGFuZ19Ob3RfRm91bmQnID0+ICdDb3VsZCBub3QgZmluZCB0aGUgbGFuZ3VhZ2UuJywKICAgICdMYW5nX0NoYW5nZScgPT4gJ0NoYW5nZSB0aGUgbGFuZ3VhZ2UnLAogICAgJ0ZpbGVfTm90X0ZvdW5kJyA9PiAnQ291bGQgbm90IGZpbmQgdGhlIGZpbGUuJywKICAgICdGaWxlX09wZW5fRWRpdF9Ob3RfQWxsb3dlZCcgPT4gJ1lvdSBhcmUgbm90IGFsbG93ZWQgdG8gJXMgdGhpcyBmaWxlLicsIC8vICVzID0gb3BlbiBvciBlZGl0CiAgICAnRWRpdCcgPT4gJ0VkaXQnLAogICAgJ0VkaXRfRmlsZScgPT4gIkVkaXQgZmlsZSdzIGNvbnRlbnQiLAogICAgJ0ZpbGVfU2F2ZV9PSycgPT4gIkZpbGUgc3VjY2Vzc2Z1bGx5IHNhdmVkLiIsCiAgICAnRmlsZV9TYXZlX0Vycm9yJyA9PiAiVGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIHNhdmluZyB0aGUgZmlsZS4iLAogICAgJ05ld19GaWxlJyA9PiAnTmV3IEZpbGUnLAogICAgJ05vX0V4dGVuc2lvbicgPT4gJ1lvdSBoYXZlIHRvIGFkZCBhIGZpbGUgZXh0ZW5zaW9uLicsCiAgICAnVmFsaWRfRXh0ZW5zaW9ucycgPT4gJ1ZhbGlkIGV4dGVuc2lvbnM6ICVzJywgLy8gJXMgPSB0eHQsbG9nIGV0Yy4KCiAgICAnU0VSVkVSIEVSUk9SJyA9PiAiU0VSVkVSIEVSUk9SIiwKICAgICdmb3JiaWRkZW4nID0+ICJGb3JiaWRkZW4iLAogICAgJ3dyb25nIHBhdGgnID0+ICJXcm9uZyBwYXRoIiwKICAgICd3cm9uZyBuYW1lJyA9PiAiV3JvbmcgbmFtZSIsCiAgICAnd3JvbmcgZXh0ZW5zaW9uJyA9PiAiV3JvbmcgZXh0ZW5zaW9uIiwKICAgICd3cm9uZyBvcHRpb24nID0+ICJXcm9uZyBvcHRpb24iLAogICAgJ3dyb25nIGRhdGEnID0+ICJXcm9uZyBkYXRhIiwKICAgICd3cm9uZyBhY3Rpb24nID0+ICJXcm9uZyBhY3Rpb24iLAogICAgJ3dyb25nIHN1Yi1hY3Rpb24nID0+ICJXcm9uZyBzdWItYWN0aW8iLAogICAgJ25vIGFjdGlvbiBwYXNzZWQnID0+ICJObyBhY3Rpb24gcGFzc2VkIiwKICAgICdubyBwYXRoJyA9PiAiTm8gcGF0aCIsCiAgICAnbm8gZmlsZScgPT4gIk5vIGZpbGUiLAogICAgJ3ZpZXcgdHlwZSBudW1iZXIgbWlzc2luZycgPT4gIlZpZXcgdHlwZSBudW1iZXIgbWlzc2luZyIsCiAgICAnTm90IGVub3VnaCBNZW1vcnknID0+ICJOb3QgZW5vdWdoIE1lbW9yeSIsCiAgICAnbWF4X3NpemVfcmVhY2hlZCcgPT4gIllvdXIgaW1hZ2UgZm9sZGVyIGhhcyByZWFjaCBpdHMgbWF4aW1hbGUgc2l6ZSBvZiAlZCBNQi4iLCAvLyVkID0gbWF4IG92ZXJhbGwgc2l6ZQogICAgJ0InID0+ICJCIiwKICAgICdLQicgPT4gIktCIiwKICAgICdNQicgPT4gIk1CIiwKICAgICdHQicgPT4gIkdCIiwKICAgICdUQicgPT4gIlRCIiwKICAgICd0b3RhbCBzaXplJyA9PiAiVG90YWwgc2l6ZSIKKTsK]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/lang/es.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJldHVybiBhcnJheSgKCiAgICAnU2VsZWN0JyA9PiAnU2VsZWNjaW9uYXInLAogICAgJ0Rlc2VsZWN0X0FsbCcgPT4gJ0Rlc2VsZWNjaW9uYXIgdG9kb3MnLAogICAgJ1NlbGVjdF9BbGwnID0+ICdTZWxlY2Npb25hciB0b2RvcycsCiAgICAnRXJhc2UnID0+ICdFbGltaW5hcicsCiAgICAnT3BlbicgPT4gJ0FicmlyJywKICAgICdDb25maXJtX2RlbCcgPT4gJ8K/U2VndXJvIHF1ZSBkZXNlYXMgZWxpbWluYXIgZXN0ZSBhcmNoaXZvPycsCiAgICAnQWxsJyA9PiAnVG9kb3MnLAogICAgJ0ZpbGVzJyA9PiAnQXJjaGl2b3MnLAogICAgJ0ltYWdlcycgPT4gJ0ltw6FnZW5lcycsCiAgICAnQXJjaGl2ZXMnID0+ICdGaWNoZXJvcycsCiAgICAnRXJyb3JfVXBsb2FkJyA9PiAnRWwgYXJjaGl2byBxdWUgaW50ZW50YSBzdWJpciBleGNlZGUgZWwgbcOheGltbyBwZXJtaXRpZG8uJywKICAgICdFcnJvcl9leHRlbnNpb24nID0+ICdMYSBleHRlbnNpw7NuIGRlbCBhcmNoaXZvIG5vIGVzdMOhIHBlcm1pdGlkYS4nLAogICAgJ1VwbG9hZF9maWxlJyA9PiAnU3ViaXInLAogICAgJ0ZpbHRlcnMnID0+ICdGaWx0cm9zJywKICAgICdWaWRlb3MnID0+ICdWw61kZW9zJywKICAgICdNdXNpYycgPT4gJ03DunNpY2EnLAogICAgJ05ld19Gb2xkZXInID0+ICdOdWV2YSBjYXJwZXRhJywKICAgICdGb2xkZXJfQ3JlYXRlZCcgPT4gJ0xhIGNhcnBldGEgaGEgc2lkbyBjcmVhZGEgY29ycmVjdGFtZW50ZS4nLAogICAgJ0V4aXN0aW5nX0ZvbGRlcicgPT4gJ0NhcnBldGEgZXhpc3RlbnRlJywKICAgICdDb25maXJtX0ZvbGRlcl9kZWwnID0+ICfCv1NlZ3VybyBxdWUgZGVzZWFzIGVsaW1pbmFyIGxhIGNhcnBldGEgeSB0b2RvcyBsb3MgZWxlbWVudG9zIHF1ZSBjb250aWVuZT8nLAogICAgJ1JldHVybl9GaWxlc19MaXN0JyA9PiAnUmVncmVzYXIgYSBsYSBsaXN0YSBkZSBhcmNoaXZvcycsCiAgICAnUHJldmlldycgPT4gJ1Zpc3RhIHByZXZpYScsCiAgICAnRG93bmxvYWQnID0+ICdEZXNjYXJnYXInLAogICAgJ0luc2VydF9Gb2xkZXJfTmFtZScgPT4gJ05vbWJyZSBkZSBsYSBjYXJwZXRhOicsCiAgICAnUm9vdCcgPT4gJ3Jhw616JywKICAgICdSZW5hbWUnID0+ICdSZW5vbWJyYXInLAogICAgJ0JhY2snID0+ICdBdHLDoXMnLAogICAgJ1ZpZXcnID0+ICdWaXN0YScsCiAgICAnVmlld19saXN0JyA9PiAnVmlzdGEgZGUgbGlzdGEnLAogICAgJ1ZpZXdfY29sdW1uc19saXN0JyA9PiAnVmlzdGEgZGUgY29sdW1uYXMnLAogICAgJ1ZpZXdfYm94ZXMnID0+ICdWaXN0YSBkZSBtaW5pYXR1cmFzJywKICAgICdUb29sYmFyJyA9PiAnQmFycmEgZGUgaGVycmFtaWVudGFzJywKICAgICdBY3Rpb25zJyA9PiAnQWNjaW9uZXMnLAogICAgJ1JlbmFtZV9leGlzdGluZ19maWxlJyA9PiAnRWwgYXJjaGl2byB5YSBleGlzdGUnLAogICAgJ1JlbmFtZV9leGlzdGluZ19mb2xkZXInID0+ICdMYSBjYXJwZXRhIHlhIGV4aXN0ZScsCiAgICAnRW1wdHlfbmFtZScgPT4gJ0VsIG5vbWJyZSBzZSBlbmN1ZW50cmEgdmFjw61vJywKICAgICdUZXh0X2ZpbHRlcicgPT4gJ2ZpbHRybyBkZSB0ZXh0bycsCiAgICAnU3dpcGVfaGVscCcgPT4gJ0Rlc2xpemUgZWwgbm9tYnJlIGRlbCBhcmNoaXZvL2NhcnBldGEgcGFyYSBtb3N0cmFyIGxhcyBvcGNpb25lcycsCiAgICAnVXBsb2FkX2Jhc2UnID0+ICdTdWJpZGEgZGUgYXJjaGl2b3MgU0lNUExFJywKICAgICdVcGxvYWRfYmFzZV9oZWxwJyA9PiAiQXJyYXN0cmFyIHkgc29sdGFyIGFyY2hpdm9zKERyYWcgJiBEcm9wIE5hdmVnYWRvcmVzIG1vZGVybm9zKSBvIGhheiBjbGljayBlbiBlbCBib3TDs24gc3VwZXJpb3IgcGFyYSBBw7FhZGlyIGxvcyBhcmNoaXZvcyB5IGNsaWNrIGVuIEVtcGV6YXIgc3ViaWRhLiBDdWFuZG8gbGEgc3ViaWRhIHNlIGhheWEgY29tcGxldGFkbywgaGF6IGNsaWNrIGVuIGVsIGJvdMOzbiAnUmVncmVzYXIgYSBsYSBsaXN0YSBkZSBhcmNoaXZvcyciLAogICAgJ1VwbG9hZF9hZGRfZmlsZXMnID0+ICdBw7FhZGlyIGFyY2hpdm9zJywKICAgICdVcGxvYWRfc3RhcnQnID0+ICdFbXBlemFyIHN1YmlkYScsCiAgICAnVXBsb2FkX2Vycm9yX21lc3NhZ2VzJyA9PmFycmF5KAogICAgICAgIDEgPT4gJ0VsIGFyY2hpdm8gc3ViaWRvIGV4Y2VkZSBsYSBkaXJlY3RpdmEgdXBsb2FkX21heF9maWxlc2l6ZSBlbiBwaHAuaW5pJywKICAgICAgICAyID0+ICdFbCBhcmNoaXZvIHN1YmlkbyBleGNlZGUgbGEgZGlyZWN0aXZhIE1BWF9GSUxFX1NJWkUgZXNwZWNpZmljYWRhIGVuIGVsIGZvcm11bGFyaW8gSFRNTCcsCiAgICAgICAgMyA9PiAnRWwgYXJjaGl2byBzdWJpZG8gc29sbyBmdWUgc3ViaWRvIHBhcmNpYWxtZW50ZScsCiAgICAgICAgNCA9PiAnTm8gc2UgaGEgc3ViaWRvIG5pbsO6biBhcmNoaXZvJywKICAgICAgICA2ID0+ICdObyBzZSBlbmN1ZW50cmEgbGEgY2FycGV0YSB0ZW1wb3JhbCcsCiAgICAgICAgNyA9PiAnRmFsbMOzIGxhIGVzY3JpdHVyYSBkZWwgYXJjaGl2byBlbiBlbCBkaXNjbycsCiAgICAgICAgOCA9PiAnVW5hIGV4dGVuc2nDs24gZGUgUEhQIGRldHV2byBsYSBzdWJpZGEgZGVsIGFyY2hpdm8nLAogICAgICAgICdwb3N0X21heF9zaXplJyA9PiAnRWwgYXJjaGl2byBzdWJpZG8gZXhjZWRlIGxhIGRpcmVjdGl2YSB1cGxvYWRfbWF4X2ZpbGVzaXplIGVuIHBocC5pbmknLAogICAgICAgICdtYXhfZmlsZV9zaXplJyA9PiAnRWwgYXJjaGl2byBlcyBkZW1hc2lhZG8gZ3JhbmRlJywKICAgICAgICAnbWluX2ZpbGVfc2l6ZScgPT4gJ0VsIGFyY2hpdm8gZXMgZGVtYXNpYWRvIHBlcXVlw7FvJywKICAgICAgICAnYWNjZXB0X2ZpbGVfdHlwZXMnID0+ICdUaXBvIGRlIGFyY2hpdm8gKEZpbGV0eXBlKSBubyBwZXJtaXRpZG8nLAogICAgICAgICdtYXhfbnVtYmVyX29mX2ZpbGVzJyA9PiAnTsO6bWVybyBtw6F4aW1vIGRlIGFyY2hpdm9zIGV4Y2VkaWRvJywKICAgICAgICAnbWF4X3dpZHRoJyA9PiAnTGEgaW1hZ2VuIGV4Y2VkZSBlbCBhbmNobyBtw6F4aW1vJywKICAgICAgICAnbWluX3dpZHRoJyA9PiAnTGEgaW1hZ2VuIHJlcXVpZXJlIHVuIGFuY2hvIG3DrW5pbW8nLAogICAgICAgICdtYXhfaGVpZ2h0JyA9PiAnTGEgaW1hZ2VuIGV4Y2VkZSBlbCBhbHRvIG3DoXhpbW8nLAogICAgICAgICdtaW5faGVpZ2h0JyA9PiAnTGEgaW1hZ2VuIHJlcXVpZXJlIHVuIGFsdG8gbcOtbmltbycsCiAgICAgICAgJ2Fib3J0JyA9PiAnU3ViaWRhIGRlIGFyY2hpdm8gY2FuY2VsYWRhJywKICAgICAgICAnaW1hZ2VfcmVzaXplJyA9PiAnRXJyb3IgYWwgcmVkaW1lbnNpb25hciBsYSBpbWFnZW4nCiAgICApLAogICAgJ1VwbG9hZF91cmwnID0+ICdEZXNkZSB1cmwnLAogICAgJ1R5cGVfZGlyJyA9PiAnQ2FycGV0YScsCiAgICAnVHlwZScgPT4gJ1RpcG8nLAogICAgJ0RpbWVuc2lvbicgPT4gJ0RpbWVuc2lvbmVzJywKICAgICdTaXplJyA9PiAnUGVzbycsCiAgICAnRGF0ZScgPT4gJ0ZlY2hhJywKICAgICdGaWxlbmFtZScgPT4gJ05vbWJyZScsCiAgICAnT3BlcmF0aW9ucycgPT4gJ09wZXJhY2lvbmVzJywKICAgICdEYXRlX3R5cGUnID0+ICd5LW0tZCcsCiAgICAnT0snID0+ICdBY2VwdGFyJywKICAgICdDYW5jZWwnID0+ICdDYW5jZWxhcicsCiAgICAnU29ydGluZycgPT4gJ09yZGVuYXInLAogICAgJ1Nob3dfdXJsJyA9PiAnTW9zdHJhciBVUkwnLAogICAgJ0V4dHJhY3QnID0+ICdFeHRyYWVyIGFxdcOtJywKICAgICdGaWxlX2luZm8nID0+ICdJbmZvcm1hY2nDs24nLAogICAgJ0VkaXRfaW1hZ2UnID0+ICdFZGl0YXIgaW1hZ2VuJywKICAgICdEdXBsaWNhdGUnID0+ICdEdXBsaWNhcicsCiAgICAnRm9sZGVycycgPT4gJ0NhcnBldGFzJywKICAgICdDb3B5JyA9PiAnQ29waWFyJywKICAgICdDdXQnID0+ICdDb3J0YXInLAogICAgJ1Bhc3RlJyA9PiAnUGVnYXInLAogICAgJ0NCJyA9PiAnUG9ydGFwYXBlbGVzJywgLy8gY2xpcGJvYXJkCiAgICAnUGFzdGVfSGVyZScgPT4gJ1BlZ2FyIGVuIGVzdGEgY2FycGV0YScsCiAgICAnUGFzdGVfQ29uZmlybScgPT4gJ8K/RXN0w6Egc2VndXJvIGRlIHBlZ2FyIGVsIGNvbnRlbmlkbyBlbiBlc3RhIGNhcnBldGE/IEVzdGEgYWNjacOzbiBzb2JyZWVzY3JpYmlyw6EgbG9zIGFyY2hpdm9zIHkgY2FycGV0YXMgZXhpc3RlbnRlcy4nLAogICAgJ1Bhc3RlX0ZhaWxlZCcgPT4gJ0Vycm9yIGFsIHBlZ2FyIGxvcyBhcmNoaXZvcycsCiAgICAnQ2xlYXJfQ2xpcGJvYXJkJyA9PiAnTGltcGlhciBlbCBwb3J0YXBhcGVsZXMnLAogICAgJ0NsZWFyX0NsaXBib2FyZF9Db25maXJtJyA9PiAnwr9Fc3TDoSBzZWd1cm8gcXVlIGRlc2VhIGxpbXBpYXIgZWwgcG9ydGFwYXBlbGVzPycsCiAgICAnRmlsZXNfT05fQ2xpcGJvYXJkJyA9PiAnRXhpc3RlbiBhcmNoaXZvcyBlbiBlbCBwb3J0YXBhcGVsZXMnLAogICAgJ0NvcHlfQ3V0X1NpemVfTGltaXQnID0+ICdMb3MgYXJjaGl2b3MvY2FycGV0YXMgc2VsZWNjaW9uYWRvcyBzb24gZGVtYXNpYWRvIGdyYW5kZXMgcGFyYSAlcy4gTMOtbWl0ZTogJWQgTUIvb3BlcmFjacOzbicsIC8vICVzID0gY3V0IG9yIGNvcHkKICAgICdDb3B5X0N1dF9Db3VudF9MaW1pdCcgPT4gJ0hhIHNlbGVjY2lvbmFkbyBkZW1hc2lhZG9zIGFyY2hpdm9zL2NhcnBldGFzIHBhcmEgJXMuIEzDrW1pdGU6ICVkIGFyY2hpdm9zL29wZXJhY2nDs24nLCAvLyAlcyA9IGN1dCBvciBjb3B5CiAgICAnQ29weV9DdXRfTm90X0FsbG93ZWQnID0+ICdObyBlc3TDoSBwZXJtaXRpZG8gZGUgJXMgYXJjaGl2b3MuJywgLy8gJXMoMSkgPSBjdXQgb3IgY29weSwgJXMoMikgPSBmaWxlcyBvciBmb2xkZXJzCiAgICAnSW1hZ2VfRWRpdG9yX05vX1NhdmUnID0+ICdObyBmdWUgcG9zaWJsZSBndWFyZGFyIGxhIGltYWdlbicsCiAgICAnSW1hZ2VfRWRpdG9yX0V4aXQnID0+ICJTYWxpZGEiLAogICAgJ0ltYWdlX0VkaXRvcl9TYXZlJyA9PiAiU2FsdmFyIiwKICAgICdaaXBfTm9fRXh0cmFjdCcgPT4gJ05vIGZ1ZSBwb3NpYmxlIGV4dHJhZXIgbG9zIGFyY2hpdm9zLiBFcyBwb3NpYmxlIHF1ZSBlbCBhcmNoaXZvIGVzdMOpIGNvcnJ1cHRvLicsCiAgICAnWmlwX0ludmFsaWQnID0+ICdFc3RhIGV4dGVuc2nDs24gbm8gZXMgc29wb3J0YWRhLiBFeHRlbnNpb25lcyB2w6FsaWRhczogemlwLCBneiwgdGFyLicsCiAgICAnRGlyX05vX1dyaXRlJyA9PiAnRWwgZGlyZWN0b3JpbyBxdWUgaGEgc2VsZWNjaW9uYWRvIG5vIHRpZW5lIHBlcm1pc29zIGRlIGVzY3JpdHVyYS4nLAogICAgJ0Z1bmN0aW9uX0Rpc2FibGVkJyA9PiAnTGEgZnVuY2nDs24gJXMgaGEgc2lkbyBkZXNoYWJpbGl0YWRhIGVuIGVsIHNlcnZpZG9yLicsIC8vICVzID0gY3V0IG9yIGNvcHkKICAgICdGaWxlX1Blcm1pc3Npb24nID0+ICdQZXJtaXNvcyBkZSBhcmNoaXZvcycsCiAgICAnRmlsZV9QZXJtaXNzaW9uX05vdF9BbGxvd2VkJyA9PiAnQ2FtYmlhciAlcyBwZXJtaXNvcyBubyBlc3TDoSBwZXJtaXRpZG8uJywgLy8gJXMgPSBmaWxlcyBvciBmb2xkZXJzCiAgICAnRmlsZV9QZXJtaXNzaW9uX1JlY3Vyc2l2ZScgPT4gJ0FwbGljYXIgcmVjdXJzaXZhbWVudGU/JywKICAgICdGaWxlX1Blcm1pc3Npb25fV3JvbmdfTW9kZScgPT4gIkVsIG1vZG8gZGUgcGVybWlzbyBzdW1pbmlzdHJhZG8gZXMgaW5jb3JyZWN0by4iLAogICAgJ1VzZXInID0+ICdVc3VhcmlvJywKICAgICdHcm91cCcgPT4gJ0dydXBvJywKICAgICdZZXMnID0+ICdTaScsCiAgICAnTm8nID0+ICdObycsCiAgICAnTGFuZ19Ob3RfRm91bmQnID0+ICdObyBzZSBoYSBwb2RpZG8gZW5jb250cmFyIGVsIGlkaW9tYS4nLAogICAgJ0xhbmdfQ2hhbmdlJyA9PiAnQ2FtYmlhciBpZGlvbWEnLAogICAgJ0ZpbGVfTm90X0ZvdW5kJyA9PiAnTm8gc2UgcHVlZGUgZW5jb250cmFyIGVsIGFyY2hpdm8uJywKICAgICdGaWxlX09wZW5fRWRpdF9Ob3RfQWxsb3dlZCcgPT4gJ05vIGVzdMOhcyBhdXRvcml6YWRvIGEgJXMgZXN0ZSBhcmNoaXZvLicsIC8vICVzID0gb3BlbiBvciBlZGl0CiAgICAnRWRpdCcgPT4gJ0VkaXRhcicsCiAgICAnRWRpdF9GaWxlJyA9PiAiRWRpdGFyIGNvbnRlbmlkbyBkZWwgYXJjaGl2byIsCiAgICAnRmlsZV9TYXZlX09LJyA9PiAiQXJjaGl2byBndWFyZGFkbyBzYXRpc2ZhY3RvcmlhbWVudGUuIiwKICAgICdGaWxlX1NhdmVfRXJyb3InID0+ICJPY3VycmnDsyB1biBlcnJvciBndWFyZGFuZG8gZWwgYXJjaGl2by4iLAogICAgJ05ld19GaWxlJyA9PiAnTnVldm8gYXJjaGl2bycsCiAgICAnTm9fRXh0ZW5zaW9uJyA9PiAnRGViZXMgYcOxYWRpciB1bmEgZXh0ZW5zacOzbiBhbCBhcmNoaXZvLicsCiAgICAnVmFsaWRfRXh0ZW5zaW9ucycgPT4gJ0V4dGVuc2lvbmVzIHbDoWxpZGFzOiAlcycsIC8vICVzID0gdHh0LGxvZyBldGMuCiAgICAnVXBsb2FkX21lc3NhZ2UnID0+ICJBcnJhc3RyYSBhcmNoaXZvcyBhcXXDrSBwYXJhIHN1YmlyIiwKCiAgICAnU0VSVkVSIEVSUk9SJyA9PiAiRVJST1IgREVMIFNFUlZJRE9SIiwKICAgICdmb3JiaWRkZW4nID0+ICJQcm9oaWJpZG8iLAogICAgJ3dyb25nIHBhdGgnID0+ICJSdXRhIGluY29ycmVjdGEiLAogICAgJ3dyb25nIG5hbWUnID0+ICJOb21icmUgaW5jb3JyZWN0byIsCiAgICAnd3JvbmcgZXh0ZW5zaW9uJyA9PiAiRXh0ZW5zacOzbiBpbmNvcnJlY3RhIiwKICAgICd3cm9uZyBvcHRpb24nID0+ICJPcGNpw7NuIGluY29ycmVjdGEiLAogICAgJ3dyb25nIGRhdGEnID0+ICJEYXRvcyBpbmNvcnJlY3RvcyIsCiAgICAnd3JvbmcgYWN0aW9uJyA9PiAiQWNjacOzbiBpbmNvcnJlY3RhIiwKICAgICd3cm9uZyBzdWItYWN0aW9uJyA9PiAiU3ViLWFjY2nDs24gaW5jb3JyZWN0YSIsCiAgICAnbm8gYWN0aW9uIHBhc3NlZCcgPT4gIk5vIHNlIGhhIHJlY2liaWRvIHVuYSBhY2Npw7NuIiwKICAgICdubyBwYXRoJyA9PiAiU2luIHJ1dGEiLAogICAgJ25vIGZpbGUnID0+ICJTaW4gYXJjaGl2byIsCiAgICAndmlldyB0eXBlIG51bWJlciBtaXNzaW5nJyA9PiAiRmFsdGEgZWwgbsO6bWVybyBkZSB0aXBvIGRlIHZpc3RhIiwKICAgICdOb3QgZW5vdWdoIE1lbW9yeScgPT4gIk5vIGhheSBtZW3Ds3JpYSBzdWZpY2llbnRlIiwKICAgICdtYXhfc2l6ZV9yZWFjaGVkJyA9PiAiTGEgY2FycGV0YSBkZSBpbcOhZ2VuZXMgaGEgZXhjZWRpZG8gZWwgdGFtYcOxbyBtw6F4aW1vIGRlICVkIE1CLiIsIC8vJWQgPSBtYXggb3ZlcmFsbCBzaXplCiAgICAnQicgPT4gIkIiLAogICAgJ0tCJyA9PiAiS0IiLAogICAgJ01CJyA9PiAiTUIiLAogICAgJ0dCJyA9PiAiR0IiLAogICAgJ1RCJyA9PiAiVEIiLAogICAgJ3RvdGFsIHNpemUnID0+ICJUYW1hw7FvIHRvdGFsIiwKKTsK]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/lang/fa.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJldHVybiBhcnJheSgKCiAgICAnU2VsZWN0JyA9PiAn2KfZhtiq2K7Yp9ioJywKICAgICdEZXNlbGVjdF9BbGwnID0+ICdEZXNlbGVjdCBBbGwnLAogICAgJ1NlbGVjdF9BbGwnID0+ICdTZWxlY3QgQWxsJywKICAgICdFcmFzZScgPT4gJ9it2LDZgScsCiAgICAnT3BlbicgPT4gJ9io2KfYstqv2LTYp9uM24wnLAogICAgJ0NvbmZpcm1fZGVsJyA9PiAn2YXbjNiu2YjYp9mH24zYryDYp9uM2YYg2YHYp9uM2YQg2LHYpyDYrdiw2YEg2qnZhtuM2K/YnycsCiAgICAnQWxsJyA9PiAn2YfZhdmHJywKICAgICdGaWxlcycgPT4gJ9mB2KfbjNmE2YfYpycsCiAgICAnSW1hZ2VzJyA9PiAn2KrYtdin2YjbjNixJywKICAgICdBcmNoaXZlcycgPT4gJ9ii2LHYtNuM2YgnLAogICAgJ0Vycm9yX1VwbG9hZCcgPT4gJ9mB2KfbjNmEINii2b7ZhNmI2K8g2LTYr9mHINio24zYtCDYp9iyINit2K/Yp9qp2KvYsSDYp9mG2K/Yp9iy2Ycg2YXYrNin2LIg2KfYs9iqLicsCiAgICAnRXJyb3JfZXh0ZW5zaW9uJyA9PiAn2YbZiNi5INmB2KfbjNmEINmF2KzYp9iyINmG24zYs9iqLicsCiAgICAnVXBsb2FkX2ZpbGUnID0+ICfYotm+2YTZiNivJywKICAgICdGaWx0ZXJzJyA9PiAn2YHbjNmE2KrYsdmH2KcnLAogICAgJ1ZpZGVvcycgPT4gJ9mI24zYr9im2YjZh9inJywKICAgICdNdXNpYycgPT4gJ9mF2YjYstuM2qknLAogICAgJ05ld19Gb2xkZXInID0+ICfZvtmI2LTZhyDYrNiv24zYrycsCiAgICAnRm9sZGVyX0NyZWF0ZWQnID0+ICfZvtmI2LTZhyDYqNmHINiv2LHYs9iq24wg2KfbjNis2KfYryDYtNivJywKICAgICdFeGlzdGluZ19Gb2xkZXInID0+ICfZvtmI2LTZhyDZh9in24wg2YXZiNis2YjYrycsCiAgICAnQ29uZmlybV9Gb2xkZXJfZGVsJyA9PiAn2KLbjNinINmF24zYrtmI2KfZh9uM2K8g2KfbjNmGINm+2YjYtNmHINix2Kcg2KjYpyDYqtmF2KfZhSDZhdit2KrZiNin24zYtCDYrdiw2YEg2qnZhtuM2K/YnycsCiAgICAnUmV0dXJuX0ZpbGVzX0xpc3QnID0+ICfYqNix2q/YtNiqINio2Ycg2YTbjNiz2Kog2YHYp9uM2YTZh9inJywKICAgICdQcmV2aWV3JyA9PiAn2b7bjNi0INmG2YXYp9uM2LQnLAogICAgJ0Rvd25sb2FkJyA9PiAn2K/Yp9mG2YTZiNivJywKICAgICdJbnNlcnRfRm9sZGVyX05hbWUnID0+ICfZhtin2YUg2b7ZiNi02Yc6JywKICAgICdSb290JyA9PiAn2LTYp9iu2Ycg2KfYtdmE24wnLAogICAgJ1JlbmFtZScgPT4gJ9iq2LrbjNuM2LEg2YbYp9mFJywKICAgICdCYWNrJyA9PiAn2KjYsdqv2LTYqicsCiAgICAnVmlldycgPT4gJ9mG2YXYp9uM2LQnLAogICAgJ1ZpZXdfbGlzdCcgPT4gJ9mG2YXYp9uM2LQg2YTbjNiz2KonLAogICAgJ1ZpZXdfY29sdW1uc19saXN0JyA9PiAn2YbZhdin24zYtCDZhNuM2LPYqiDYs9iq2YjZhtuMJywKICAgICdWaWV3X2JveGVzJyA9PiAn2YbZhdin24zYtCDYqNin2qnYs9mH2KcnLAogICAgJ1Rvb2xiYXInID0+ICfZhtmI2KfYsSDYp9io2LLYp9ixJywKICAgICdBY3Rpb25zJyA9PiAn2LnZhdmE24zYp9iqJywKICAgICdSZW5hbWVfZXhpc3RpbmdfZmlsZScgPT4gJ9mB2KfbjNmEINin2LIg2YLYqNmEINmF2YjYrNmI2K8g2KfYs9iqJywKICAgICdSZW5hbWVfZXhpc3RpbmdfZm9sZGVyJyA9PiAn2b7ZiNi02Ycg2KfYsiDZgtio2YQg2YXZiNis2YjYryDYp9iz2KonLAogICAgJ0VtcHR5X25hbWUnID0+ICfZhtin2YUg2K7Yp9mE24wg2KfYs9iqJywKICAgICdUZXh0X2ZpbHRlcicgPT4gJ9mB24zZhNiq2LEg2YbZiNi02KrZhycsCiAgICAnU3dpcGVfaGVscCcgPT4gJ9ix2YjbjCDZhtin2YUg2YHYp9uM2YQv2b7ZiNi02Ycg2KjYsdmI24zYryDYqtinINqv2LLbjNmG2Ycg2YfYp9uMINio24zYtNiq2LHbjCDZhtmF2KfbjNi0INiv2KfYr9mHINi02YjZhtivIC4gJywKICAgICdVcGxvYWRfYmFzZScgPT4gJ9ii2b7ZhNmI2K/YsSDYp9i12YTbjCcsCiAgICAnVXBsb2FkX2Jhc2VfaGVscCcgPT4gIkRyYWcgJiBEcm9wIGZpbGVzKG1vZGVybiBicm93c2Vycykgb3IgY2xpY2sgaW4gdXBwZXIgYnV0dG9uIHRvIEFkZCB0aGUgZmlsZShzKSBhbmQgY2xpY2sgb24gU3RhcnQgdXBsb2FkLiBXaGVuIHRoZSB1cGxvYWQgaXMgY29tcGxldGUsIGNsaWNrIHRoZSAnUmV0dXJuIHRvIGZpbGVzIGxpc3QnIGJ1dHRvbi4iLAogICAgJ1VwbG9hZF9hZGRfZmlsZXMnID0+ICdBZGQgZmlsZShzKScsCiAgICAnVXBsb2FkX3N0YXJ0JyA9PiAnU3RhcnQgdXBsb2FkJywKICAgICdVcGxvYWRfZXJyb3JfbWVzc2FnZXMnID0+YXJyYXkoCiAgICAgICAgMSA9PiAnVGhlIHVwbG9hZGVkIGZpbGUgZXhjZWVkcyB0aGUgdXBsb2FkX21heF9maWxlc2l6ZSBkaXJlY3RpdmUgaW4gcGhwLmluaScsCiAgICAgICAgMiA9PiAnVGhlIHVwbG9hZGVkIGZpbGUgZXhjZWVkcyB0aGUgTUFYX0ZJTEVfU0laRSBkaXJlY3RpdmUgdGhhdCB3YXMgc3BlY2lmaWVkIGluIHRoZSBIVE1MIGZvcm0nLAogICAgICAgIDMgPT4gJ1RoZSB1cGxvYWRlZCBmaWxlIHdhcyBvbmx5IHBhcnRpYWxseSB1cGxvYWRlZCcsCiAgICAgICAgNCA9PiAnTm8gZmlsZSB3YXMgdXBsb2FkZWQnLAogICAgICAgIDYgPT4gJ01pc3NpbmcgYSB0ZW1wb3JhcnkgZm9sZGVyJywKICAgICAgICA3ID0+ICdGYWlsZWQgdG8gd3JpdGUgZmlsZSB0byBkaXNrJywKICAgICAgICA4ID0+ICdBIFBIUCBleHRlbnNpb24gc3RvcHBlZCB0aGUgZmlsZSB1cGxvYWQnLAogICAgICAgICdwb3N0X21heF9zaXplJyA9PiAnVGhlIHVwbG9hZGVkIGZpbGUgZXhjZWVkcyB0aGUgcG9zdF9tYXhfc2l6ZSBkaXJlY3RpdmUgaW4gcGhwLmluaScsCiAgICAgICAgJ21heF9maWxlX3NpemUnID0+ICdGaWxlIGlzIHRvbyBiaWcnLAogICAgICAgICdtaW5fZmlsZV9zaXplJyA9PiAnRmlsZSBpcyB0b28gc21hbGwnLAogICAgICAgICdhY2NlcHRfZmlsZV90eXBlcycgPT4gJ0ZpbGV0eXBlIG5vdCBhbGxvd2VkJywKICAgICAgICAnbWF4X251bWJlcl9vZl9maWxlcycgPT4gJ01heGltdW0gbnVtYmVyIG9mIGZpbGVzIGV4Y2VlZGVkJywKICAgICAgICAnbWF4X3dpZHRoJyA9PiAnSW1hZ2UgZXhjZWVkcyBtYXhpbXVtIHdpZHRoJywKICAgICAgICAnbWluX3dpZHRoJyA9PiAnSW1hZ2UgcmVxdWlyZXMgYSBtaW5pbXVtIHdpZHRoJywKICAgICAgICAnbWF4X2hlaWdodCcgPT4gJ0ltYWdlIGV4Y2VlZHMgbWF4aW11bSBoZWlnaHQnLAogICAgICAgICdtaW5faGVpZ2h0JyA9PiAnSW1hZ2UgcmVxdWlyZXMgYSBtaW5pbXVtIGhlaWdodCcsCiAgICAgICAgJ2Fib3J0JyA9PiAnRmlsZSB1cGxvYWQgYWJvcnRlZCcsCiAgICAgICAgJ2ltYWdlX3Jlc2l6ZScgPT4gJ0ZhaWxlZCB0byByZXNpemUgaW1hZ2UnCiAgICApLAogICAgJ1VwbG9hZF91cmwnID0+ICdGcm9tIHVybCcsCiAgICAnVHlwZV9kaXInID0+ICfZhdiz24zYsScsCiAgICAnVHlwZScgPT4gJ9mG2YjYuScsCiAgICAnRGltZW5zaW9uJyA9PiAn2KjYudivJywKICAgICdTaXplJyA9PiAn2KfZhtiv2KfYstmHJywKICAgICdEYXRlJyA9PiAn2KrYp9ix24zYricsCiAgICAnRmlsZW5hbWUnID0+ICfZhtin2YUg2YHYp9uM2YQnLAogICAgJ09wZXJhdGlvbnMnID0+ICfYudmF2YTbjNin2KonLAogICAgJ0RhdGVfdHlwZScgPT4gJ3ktbS1kJywKICAgICdPSycgPT4gJ9io2KfYtNmHJywKICAgICdDYW5jZWwnID0+ICfZhNi62YgnLAogICAgJ1NvcnRpbmcnID0+ICfZhdix2KrYqCDYs9in2LLbjCcsCiAgICAnU2hvd191cmwnID0+ICfZhtmF2KfbjNi0INii2K/YsdizJywKICAgICdFeHRyYWN0JyA9PiAn2KfYs9iq2K7Ysdin2Kwg2K/YsSDYp9uM2YbYrNinJywKICAgICdGaWxlX2luZm8nID0+ICfYp9i32YTYp9i52KfYqiDZgdin24zZhCcsCiAgICAnRWRpdF9pbWFnZScgPT4gJ9mI24zYsdin24zYtCDYqti12YjbjNixJywKICAgICdEdXBsaWNhdGUnID0+ICfYqtqp2LHYp9ixJywKICAgICdGb2xkZXJzJyA9PiAn2b7ZiNi02Ycg2YfYpycsCiAgICAnQ29weScgPT4gJ9qp2b7bjCcsCiAgICAnQ3V0JyA9PiAn2KjYsduM2K/ZhicsCiAgICAnUGFzdGUnID0+ICfYr9ix2KwnLAogICAgJ0NCJyA9PiAn2qnZhNuM2b4g2KjYsdivJywgLy8gY2xpcGJvYXJkCiAgICAnUGFzdGVfSGVyZScgPT4gJ9iv2LHYrCDYr9ixINin24zZhiDZhdiz24zYsScsCiAgICAnUGFzdGVfQ29uZmlybScgPT4gJ9ii24zYpyDZhdmF2KbZhiDZh9iz2KrbjNivINqp2Ycg2YXbjNiu2YjYp9mH24zYryDYr9ixINin24zZhiDZhdiz24zYsSDYr9ix2Kwg2qnZhtuM2K8g2J8gINin2q/YsSDZgdin24zZhCDZh9mF2YbYp9mFINmI2KzZiNivINiv2KfYtNiq2Ycg2KjYp9i02K8g2YHYp9uM2YQg2KzYr9uM2K8g2LHZiNuMINmB2KfbjNmEINmC2KjZhNuMIE92ZXJXcml0ZSDYrtmI2KfZh9ivINi02K8gLicsCiAgICAnUGFzdGVfRmFpbGVkJyA9PiAn2K7Yt9inINiv2LEg2K/YsdisINmB2KfbjNmEICjZh9inKSAhICcsCiAgICAnQ2xlYXJfQ2xpcGJvYXJkJyA9PiAn2b7Yp9qpINqp2LHYr9mGINqp2YTbjNm+INio2LHYrycsCiAgICAnQ2xlYXJfQ2xpcGJvYXJkX0NvbmZpcm0nID0+ICfZhdi32YXYptmG24zYryDaqdmHINmF24wg2K7ZiNin2YfbjNivINqp2YTbjNm+INio2LHYryDYsdinINiu2KfZhNuMINqp2YbbjNivINifJywKICAgICdGaWxlc19PTl9DbGlwYm9hcmQnID0+ICfaqdmE24zZviDYqNix2K8g2K3Yp9mI24wg2YHYp9uM2YQg2KfYs9iqIC4nLAogICAgJ0NvcHlfQ3V0X1NpemVfTGltaXQnID0+ICfZgdin24zZhC/ZvtmI2LTZhyDYp9mG2KrYrtin2KjbjCDYp9iyINit2K/Yp9qp2KvYsSDYrdis2YUg2YXYrNin2LIg2KjYsdin24wgJXMg2KjYstix2q/YqtixINmH2LPYqtmG2K8uINmF2K3Yr9mI2K/bjNiqOiAlZCBNQi/YudmF2YTbjNin2KonLCAvLyAlcyA9IGN1dCBvciBjb3B5CiAgICAnQ29weV9DdXRfQ291bnRfTGltaXQnID0+ICfYqti52K/Yp9ivINmB2KfbjNmEL9m+2YjYtNmHINmH2KfbjCDYp9mG2KrYrtin2KjbjCDYqNix2KfbjCAlcyDYqNiz24zYp9ixINiy24zYp9ivINin2LPYqiAuINmF2K3Yr9mI2K/bjNiqOiAlZCDZgdin24zZhC/YudmF2YTbjNin2KonLCAvLyAlcyA9IGN1dCBvciBjb3B5CiAgICAnQ29weV9DdXRfTm90X0FsbG93ZWQnID0+ICfYtNmF2Kcg2KfYrNin2LLZhyAlcyDYp9uM2YYg2YHYp9uM2YQg2LHYpyDZhtiv2KfYsduM2K8gLicsIC8vICVzKDEpID0gY3V0IG9yIGNvcHksICVzKDIpID0gZmlsZXMgb3IgZm9sZGVycwogICAgJ0ltYWdlX0VkaXRvcl9Ob19TYXZlJyA9PiAn2YbYqtmI2KfZhtiz2Kog2KrYtdmI24zYsSDYsdinINiw2K7bjNix2Ycg2qnZhtivIC4nLAogICAgJ0ltYWdlX0VkaXRvcl9FeGl0JyA9PiAiRXhpdCIsCiAgICAnSW1hZ2VfRWRpdG9yX1NhdmUnID0+ICJTYXZlIiwKICAgICdaaXBfTm9fRXh0cmFjdCcgPT4gJ9iu2LfYpyDYr9ixINmB2LHYotuM2YbYryBVbnppcCAuINmF2YXaqdmGINin2LPYqiDZgdin24zZhCDYotiz24zYqCDYr9uM2K/ZhyDYqNin2LTYryAuJywKICAgICdaaXBfSW52YWxpZCcgPT4gJ9m+2LPZiNmG2K8g2YXZiNix2K8g2YbYuNixINm+2LTbjNio2KfZhtuMINmG2YXbjNi02YjYryDYjCDZhdis2KfYsiA6IHppcCwgZ3osIHRhci4nLAogICAgJ0Rpcl9Ob19Xcml0ZScgPT4gJ9mF2LPbjNixINin2YbYqtiu2KfYqNuMINmC2KfYqNmEINmG2YjYtNiq2YYg2YbbjNiz2KogLicsCiAgICAnRnVuY3Rpb25fRGlzYWJsZWQnID0+ICfYqtin2KjYuSAlcyDYp9iyINiz2YXYqiDYs9ix2YjYsSDYutuM2LEg2YHYudin2YQg2LTYr9mHINin2LPYqiAuJywgLy8gJXMgPSBjdXQgb3IgY29weQogICAgJ0ZpbGVfUGVybWlzc2lvbicgPT4gJ9iv2LPYqtix2LPbjCDZgdin24zZhCcsCiAgICAnRmlsZV9QZXJtaXNzaW9uX05vdF9BbGxvd2VkJyA9PiAn2KrYutuM24zYsSDYr9iz2KrYsdiz24wgJXMg2YXYrNin2LIg2YbZhduMINio2KfYtNivIC4nLCAvLyAlcyA9IGZpbGVzIG9yIGZvbGRlcnMKICAgICdGaWxlX1Blcm1pc3Npb25fUmVjdXJzaXZlJyA9PiAn2KfYudmF2KfZhCDYqNin2LLar9i02KrbjCDYqNmI2K/ZhtifJywKICAgICdGaWxlX1Blcm1pc3Npb25fV3JvbmdfTW9kZScgPT4gItiv2LPYqtix2LPbjCDYp9i52YXYp9mEINi02K/ZhyDYp9i02KrYqNin2Ycg2KfYs9iqIC4iLAogICAgJ1VzZXInID0+ICfaqdin2LHYqNixJywKICAgICdHcm91cCcgPT4gJ9qv2LHZiNmHJywKICAgICdZZXMnID0+ICfYqNmE2YcnLAogICAgJ05vJyA9PiAn2K7YqNixJywKICAgICdMYW5nX05vdF9Gb3VuZCcgPT4gJ9iy2KjYp9mGINmF2YjYsdivINmG2LjYsSDbjNin2YHYqiDZhti02K8gLicsCiAgICAnTGFuZ19DaGFuZ2UnID0+ICfYqti624zbjNixINiy2KjYp9mGJywKICAgICdGaWxlX05vdF9Gb3VuZCcgPT4gJ9mG2KrZiNin2YbYs9iqINmB2KfbjNmEINix2Kcg2b7bjNiv2Kcg2qnZhtivIC4nLAogICAgJ0ZpbGVfT3Blbl9FZGl0X05vdF9BbGxvd2VkJyA9PiAn2LTZhdinINmG2YXbjNiq2YjYp9mG24zYryDYp9uM2YYg2YHYp9uM2YQg2LHYpyAlcyDaqdmG24zYry4nLCAvLyAlcyA9IG9wZW4gb3IgZWRpdAogICAgJ0VkaXQnID0+ICfZiNuM2LHYp9uM2LQnLAogICAgJ0VkaXRfRmlsZScgPT4gItmI24zYsdin24zYtCDZhdit2KrZiNin24wg2YHYp9uM2YQiLAogICAgJ0ZpbGVfU2F2ZV9PSycgPT4gItmB2KfbjNmEINio2Kcg2YXZiNmB2YLbjNiqINiw2K7bjNix2Ycg2LTYryAuIiwKICAgICdGaWxlX1NhdmVfRXJyb3InID0+ICLYrti32KfbjNuMINiv2LEg2YfZhtqv2KfZhSDYsNiu24zYsdmHINmB2KfbjNmEINix2K4g2K/Yp9iv2Ycg2KfYs9iqIC4iLAogICAgJ05ld19GaWxlJyA9PiAn2YHYp9uM2YQg2KzYr9uM2K8nLAogICAgJ05vX0V4dGVuc2lvbicgPT4gJ9i02YXYpyDYqNin24zYryDZvtiz2YjZhtivINmI2KfYsdivINqp2YbbjNivIC4nLAogICAgJ1ZhbGlkX0V4dGVuc2lvbnMnID0+ICfZvtiz2YjZhtivINmH2KfbjCDZhdis2KfYsiA6ICVzJywgLy8gJXMgPSB0eHQsbG9nIGV0Yy4KICAgICdVcGxvYWRfbWVzc2FnZScgPT4gItmB2KfbjNmEINmH2Kcg2LHYpyDYp9uM2YbYrNinINio2qnYtNuM2K8g2KrYpyDYotm+2YTZiNivINi02YjZhtivICIsCgogICAgJ1NFUlZFUiBFUlJPUicgPT4gItiu2LfYp9uMINiz2LHZiNixIiwKICAgICdmb3JiaWRkZW4nID0+ICLZhdmF2YbZiNi5IiwKICAgICd3cm9uZyBwYXRoJyA9PiAi2YXYs9uM2LEg2KfYtNiq2KjYp9mHIiwKICAgICd3cm9uZyBuYW1lJyA9PiAi2YbYp9mFINi624zYsSDZhdis2KfYsiIsCiAgICAnd3JvbmcgZXh0ZW5zaW9uJyA9PiAi2b7Ys9mI2YbYryDYutuM2LEg2YXYrNin2LIiLAogICAgJ3dyb25nIG9wdGlvbicgPT4gItqv2LLbjNmG2Ycg2YfYp9uMINi624zYsSDZhdis2KfYsiIsCiAgICAnd3JvbmcgZGF0YScgPT4gItiv24zYqtinINin2LTYqtio2KfZhyIsCiAgICAnd3JvbmcgYWN0aW9uJyA9PiAi2LnZhdmEINin2LTYqtio2KfZhyIsCiAgICAnd3Jvbmcgc3ViLWFjdGlvbicgPT4gItiu2LfYp9uMINiy24zYsSDYr9iz2KrZiNixIiwKICAgICdubyBhY3Rpb24gcGFzc2VkJyA9PiAi2KjYr9mI2YYg2K/Ys9iq2YjYsSIsCiAgICAnbm8gcGF0aCcgPT4gItio2K/ZiNmGINmF2LPbjNixIiwKICAgICdubyBmaWxlJyA9PiAi2KjYr9mI2YYg2YHYp9uM2YQiLAogICAgJ3ZpZXcgdHlwZSBudW1iZXIgbWlzc2luZycgPT4gItmG2YXYp9uM2LQg2KrYudiv2KfYryDZhtmI2Lkg2YfYp9uMINi624zYsSDZhdis2KfYsiIsCiAgICAnTm90IGVub3VnaCBNZW1vcnknID0+ICLZhtio2YjYryDZgdi22KfbjCDaqdin2YHbjCIsCiAgICAnbWF4X3NpemVfcmVhY2hlZCcgPT4gItm+2YjYtNmHINiq2LXZiNuM2LEg2LTZhdinINio2Ycg2K3Yr9in2qnYq9ixINin2YbYr9in2LLZhyDYrtmI2K8gWyVkIE1CXSDYsdiz24zYr9mHINin2LPYqiAuIiwgLy8lZCA9IG1heCBvdmVyYWxsIHNpemUKICAgICdCJyA9PiAiQiIsCiAgICAnS0InID0+ICJLQiIsCiAgICAnTUInID0+ICJNQiIsCiAgICAnR0InID0+ICJHQiIsCiAgICAnVEInID0+ICJUQiIsCiAgICAndG90YWwgc2l6ZScgPT4gItit2KzZhSDaqdmE24wiLAopOwo=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/lang/fr_FR.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJldHVybiBhcnJheSgKCiAgICAnU2VsZWN0JyA9PiAnU8OpbGVjdGlvbm5lcicsCiAgICAnRGVzZWxlY3RfQWxsJyA9PiAnRGVzZWxlY3QgQWxsJywKICAgICdTZWxlY3RfQWxsJyA9PiAnU2VsZWN0IEFsbCcsCiAgICAnRXJhc2UnID0+ICdFZmZhY2VyJywKICAgICdPcGVuJyA9PiAnT3V2cmlyJywKICAgICdDb25maXJtX2RlbCcgPT4gJ8OKdGVzLXZvdXMgc8O7ciBkZSB2b3Vsb2lyIGVmZmFjZXIgY2UgZmljaGllciA/JywKICAgICdBbGwnID0+ICdUb3VzJywKICAgICdGaWxlcycgPT4gJ0ZpY2hpZXJzJywKICAgICdJbWFnZXMnID0+ICdJbWFnZXMnLAogICAgJ0FyY2hpdmVzJyA9PiAnQXJjaGl2ZXMnLAogICAgJ0Vycm9yX1VwbG9hZCcgPT4gJ1ZvdHJlIGZpY2hpZXIgZMOpcGFzc2UgbGEgdGFpbGxlIG1heGltdW0gYXV0b3Jpc8OpZS4nLAogICAgJ0Vycm9yX2V4dGVuc2lvbicgPT4gJ0V4dGVuc2lvbiBkZSBmaWNoaWVyIG5vbiBhdXRvcmlzw6llLicsCiAgICAnVXBsb2FkX2ZpbGUnID0+ICdFbnZveWVyIHVuIGZpY2hpZXInLAogICAgJ0ZpbHRlcnMnID0+ICdGaWx0cmVyJywKICAgICdWaWRlb3MnID0+ICdWaWTDqW9zJywKICAgICdNdXNpYycgPT4gJ011c2lxdWUnLAogICAgJ05ld19Gb2xkZXInID0+ICdOb3V2ZWF1IGRvc3NpZXInLAogICAgJ0ZvbGRlcl9DcmVhdGVkJyA9PiAnRG9zc2llciBjb3JyZWN0ZW1lbnQgY3LDqcOpJywKICAgICdFeGlzdGluZ19Gb2xkZXInID0+ICdEb3NzaWVyIGV4aXN0YW50JywKICAgICdDb25maXJtX0ZvbGRlcl9kZWwnID0+ICfDinRlcy12b3VzIHPDu3IgZGUgdm91bG9pciBzdXBwcmltZXIgbGUgZG9zc2llciBhaW5zaSBxdWUgdG91cyBzZXMgw6lsw6ltZW50cyA/JywKICAgICdSZXR1cm5fRmlsZXNfTGlzdCcgPT4gJ1JldmVuaXIgw6AgbGEgbGlzdGUgZGVzIGZpY2hpZXJzJywKICAgICdQcmV2aWV3JyA9PiAnQXBlcsOndScsCiAgICAnRG93bmxvYWQnID0+ICdUw6lsw6ljaGFyZ2VyJywKICAgICdJbnNlcnRfRm9sZGVyX05hbWUnID0+ICdJbnPDqXJlciBsZSBub20gZHUgZG9zc2llciA6JywKICAgICdSb290JyA9PiAnUmFjaW5lJywKICAgICdSZW5hbWUnID0+ICdSZW5vbW1lcicsCiAgICAnQmFjaycgPT4gJ1JldG91cicsCiAgICAnVmlldycgPT4gJ1Z1ZScsCiAgICAnVmlld19saXN0JyA9PiAnVnVlIHBhciBsaXN0ZScsCiAgICAnVmlld19jb2x1bW5zX2xpc3QnID0+ICdWdWUgcGFyIGxpc3RlcyBkZSBjb2xvbm5lJywKICAgICdWaWV3X2JveGVzJyA9PiAnVnVlIHBhciBpY8O0bmVzJywKICAgICdUb29sYmFyJyA9PiAnQmFycmUgZFwnb3V0aWxzJywKICAgICdBY3Rpb25zJyA9PiAnQWN0aW9ucycsCiAgICAnUmVuYW1lX2V4aXN0aW5nX2ZpbGUnID0+ICdDZSBmaWNoaWVyIGV4aXN0ZSBkw6lqw6AnLAogICAgJ1JlbmFtZV9leGlzdGluZ19mb2xkZXInID0+ICdDZSBkb3NzaWVyIGV4aXN0ZSBkw6lqw6AnLAogICAgJ0VtcHR5X25hbWUnID0+ICdMZSBub20gZXN0IHZpZGUnLAogICAgJ1RleHRfZmlsdGVyJyA9PiAnVGV4dGUgZGUgZmlsdHJhZ2UnLAogICAgJ1N3aXBlX2hlbHAnID0+ICdHbGlzc2V6IGxlIG5vbSBkdSBmaWNoaWVyL2Rvc3NpZXIgcG91ciBhZmZpY2hlciBsZXMgb3B0aW9ucycsCiAgICAnVXBsb2FkX2Jhc2UnID0+ICdUw6lsw6ljaGFyZ2VtZW50IGNsYXNzaXF1ZScsCiAgICAnVXBsb2FkX2Jhc2VfaGVscCcgPT4gJ0dsaXNzZXItRMOpcG9zZXIgZGVzIGZpY2hpZXJzIChuYXZpZ2F0ZXVycyByw6ljZW50cykgb3UgY2xpcXVlciBzdXIgbGUgYm9udG9ucyBlbiBoYXV0IHBvdXIgYWpvdXRlciBkZXMgZmljaGllcnMuIENsaXF1ZXIgc3VyICJFbnZveWVyIGxlcyBmaWNoaWVycyIuIExvcnNxdWUgbGUgY2hhcmdlbWVudCBlc3QgY29tcGxldCwgY2xpcXVlciBzdXIgIlJldmVuaXIgw6AgbGEgbGlzdGUgZGVzIGZpY2hpZXJzIi4nLAogICAgJ1VwbG9hZF9hZGRfZmlsZXMnID0+ICdBam91dGVyIGRlcyBmaWNoaWVycycsCiAgICAnVXBsb2FkX3N0YXJ0JyA9PiAnRW52b3llciBsZXMgZmljaGllcnMnLAogICAgJ1VwbG9hZF9lcnJvcl9tZXNzYWdlcycgPT5hcnJheSgKICAgICAgICAxID0+ICdMYSB0YWlsbGUgZHUgZmljaGllciBkw6lwYXNzZSBsYSBsaW1pdGUgZml4w6llIHBhciBsZSBwYXJhbcOodHJlIHVwbG9hZF9tYXhfZmlsZXNpemUgZGFucyBwaHAuaW5pJywKICAgICAgICAyID0+ICdMYSB0YWlsbGUgZHUgZmljaGllciBkw6lwYXNzZSBsYSBsaW1pdGUgZml4w6llIHBhciBsZSBwYXJhbcOodHJlIE1BWF9GSUxFX1NJWkUgZHUgZm9ybXVsYWlyZScsCiAgICAgICAgMyA9PiAnTGUgZmljaGllciBuXCdhIHBhcyDDqXTDqSBjb3JyZWN0ZW1lbnQgdMOpbMOpY2hhcmfDqScsCiAgICAgICAgNCA9PiAnQXVjdW4gZmljaGllciBuXCdhIHBhcyDDqXTDqSB0w6lsw6ljaGFyZ8OpJywKICAgICAgICA2ID0+ICdJbCBtYW5xdWUgbGUgcsOpcGVydG9pcmUgdGVtcG9yYWlyZScsCiAgICAgICAgNyA9PiAnSW1wb3NzaWJsZSBkXCfDqWNyaXJlIGxlIGZpY2hpZXIgc3VyIGxlIGRpc3F1ZScsCiAgICAgICAgOCA9PiAnVW5lIGV4dGVuc2lvbiBQSFAgYSBibG9xdcOpIGxlIHTDqWzDqWNoYXJnZW1lbnQnLAogICAgICAgICdwb3N0X21heF9zaXplJyA9PiAnTGEgdGFpbGxlIGR1IGZpY2hpZXIgZMOpcGFzc2UgbGEgbGltaXRlIGZpeMOpZSBwYXIgbGUgcGFyYW3DqHRyZSBwb3N0X21heF9zaXplIGRhbnMgcGhwLmluaScsCiAgICAgICAgJ21heF9maWxlX3NpemUnID0+ICdMYSB0YWlsbGUgZHUgZmljaGllciBlc3QgdHJvcCBpbXBvcnRhbnRlJywKICAgICAgICAnbWluX2ZpbGVfc2l6ZScgPT4gJ0xhIHRhaWxsZSBkdSBmaWNoaWVyIGVzdCB0cm9wIGZhaWJsZScsCiAgICAgICAgJ2FjY2VwdF9maWxlX3R5cGVzJyA9PiAnQ2UgdHlwZSBkZSBmaWNoaWVyIG5cJ2VzdCBwYXMgYWNjZXB0w6knLAogICAgICAgICdtYXhfbnVtYmVyX29mX2ZpbGVzJyA9PiAnTGUgbm9tYnJlIGRlIGZpY2hpZXJzIMOgIHTDqWzDqWNoYXJnZXIgZXN0IHRyb3AgaW1wb3J0YW50JywKICAgICAgICAnbWF4X3dpZHRoJyA9PiAnTGEgbGFyZ2V1ciBkZSBsXCdpbWFnZSBlc3Qgc3Vww6lyaWV1cmUgw6AgbGEgbGltaXRlIG1heGltdW0gYXV0b3Jpc8OpZScsCiAgICAgICAgJ21pbl93aWR0aCcgPT4gJ0xhIGxhcmdldXIgZGUgbFwnaW1hZ2UgZXN0IGluZsOpcmlldXJlIMOgIGxhIGxpbWl0ZSBtaW5pbXVtIGF1dG9yaXPDqWUnLAogICAgICAgICdtYXhfaGVpZ2h0JyA9PiAnTGEgaGF1dGV1ciBkZSBsXCdpbWFnZSBlc3Qgc3Vww6lyaWV1cmUgw6AgbGEgbGltaXRlIG1heGltdW0gYXV0b3Jpc8OpZScsCiAgICAgICAgJ21pbl9oZWlnaHQnID0+ICdMYSBoYXV0ZXVyIGRlIGxcJ2ltYWdlIGVzdCBpbmbDqXJpZXVyZSDDoCBsYSBsaW1pdGUgbWluaW11bSBhdXRvcmlzw6llJywKICAgICAgICAnYWJvcnQnID0+ICdUw6lsw6ljaGFyZ2VtZW50IGRlcyBmaWNoaWVycyBhbm51bMOpJywKICAgICAgICAnaW1hZ2VfcmVzaXplJyA9PiAnSW1wb3NzaWJsZSBkZSByZWRpbWVuc2lvbm5lciBsXCdpbWFnZScKICAgICksCiAgICAnVXBsb2FkX3VybCcgPT4gJ0RlcHVpcyB1bmUgVVJMJywKICAgICdUeXBlX2RpcicgPT4gJ2RpcicsCiAgICAnVHlwZScgPT4gJ1R5cGUnLAogICAgJ0RpbWVuc2lvbicgPT4gJ0RpbWVuc2lvbicsCiAgICAnU2l6ZScgPT4gJ1RhaWxsZScsCiAgICAnRGF0ZScgPT4gJ0RhdGUnLAogICAgJ0ZpbGVuYW1lJyA9PiAnTm9tJywKICAgICdPcGVyYXRpb25zJyA9PiAnT3DDqXJhdGlvbnMnLAogICAgJ0RhdGVfdHlwZScgPT4gJ2QvbS9ZJywKICAgICdPSycgPT4gJ09LJywKICAgICdDYW5jZWwnID0+ICdBbm51bGVyJywKICAgICdTb3J0aW5nJyA9PiAnVHJpZXInLAogICAgJ1Nob3dfdXJsJyA9PiAnQWZmaWNoZXIgbFwnVVJMJywKICAgICdFeHRyYWN0JyA9PiAnRXh0cmFpcmUgaWNpJywKICAgICdGaWxlX2luZm8nID0+ICdJbmZvcm1hdGlvbicsCiAgICAnRWRpdF9pbWFnZScgPT4gJ0VkaXRlciBsXCdpbWFnZScsCiAgICAnRHVwbGljYXRlJyA9PiAnRHVwbGlxdWVyJywKICAgICdGb2xkZXJzJyA9PiAnRG9zc2llcnMnLAogICAgJ0NvcHknID0+ICdDb3BpZXInLAogICAgJ0N1dCcgPT4gJ0NvdXBlcicsCiAgICAnUGFzdGUnID0+ICdDb2xsZXInLAogICAgJ0NCJyA9PiAnUFAnLCAvLyBQcmVzc2UtcGFwaWVycwogICAgJ1Bhc3RlX0hlcmUnID0+ICdDb2xsZXIgZGFucyBjZSBkb3NzaWVyJywKICAgICdQYXN0ZV9Db25maXJtJyA9PiAnw4p0ZXMtdm91cyBzw7tyIGRlIHZvdWxvaXIgY29sbGVyIGRhbnMgY2UgcsOpcGVydG9pcmUgPyBDZXR0ZSBhY3Rpb24gcmVtcGxhY2VyYSBsZXMgZmljaGllcnMvZG9zc2llcnMgZMOpasOgIGV4aXN0YW50cy4nLAogICAgJ1Bhc3RlX0ZhaWxlZCcgPT4gJ0ltcG9zc2libGUgZGUgY29sbGVyIGxlcyBmaWNoaWVyKHMpJywKICAgICdDbGVhcl9DbGlwYm9hcmQnID0+ICdWaWRlciBsZSBwcmVzc2UtcGFwaWVycycsCiAgICAnQ2xlYXJfQ2xpcGJvYXJkX0NvbmZpcm0nID0+ICfDinRlcy12b3VzIHPDu3IgZGUgdm91bG9pciB2aWRlciBsZSBwcmVzc2UtcGFwaWVycyA/JywKICAgICdGaWxlc19PTl9DbGlwYm9hcmQnID0+ICdMZSBwcmVzc2UtcGFwaWVycyBjb250aWVudCBkZXMgZmljaGllcnMuJywKICAgICdDb3B5X0N1dF9TaXplX0xpbWl0JyA9PiAnTGVzIGZpY2hpZXJzL2Rvc3NpZXJzIHPDqWxlY3Rpb25uw6lzIHNvbnQgdHJvcCBncm9zIHBvdXIgJTEkcy4gTGltaXRlOiAlMiRkIE1CL29ww6lyYXRpb24nLCAvLyAlMSRzID0gY3V0IG9yIGNvcHksICUyJGQgPSBtYXggc2l6ZQogICAgJ0NvcHlfQ3V0X0NvdW50X0xpbWl0JyA9PiAnVm91cyBhdmV6IHPDqWxlY3Rpb25uw6kgdHJvcCBkZSBmaWNoaWVycy9kb3NzaWVyIHBvdXIgJTEkcy4gTGltaXRlOiAlMiRkIGZpY2hpZXJzL29ww6lyYXRpb24nLCAvLyAlMSRzID0gY3V0IG9yIGNvcHksICUyJGQgPSBtYXggY291bnQKICAgICdDb3B5X0N1dF9Ob3RfQWxsb3dlZCcgPT4gJ1ZvdXMgblwnw6p0ZXMgcGFzIGF1dG9yaXPDqSDDoCAlMSRzIGRlcyAlMiRzLicsIC8vICUxMiRzID0gY3V0IG9yIGNvcHksICUyJHMgPSBmaWxlcyBvciBmb2xkZXJzCiAgICAnSW1hZ2VfRWRpdG9yX05vX1NhdmUnID0+ICdJbXBvc3NpYmxlIGRcJ2VucmVnaXN0cmVyIGxcJ2ltYWdlJywKICAgICdJbWFnZV9FZGl0b3JfRXhpdCcgPT4gIlNvcnRpZSIsCiAgICAnSW1hZ2VfRWRpdG9yX1NhdmUnID0+ICJTYXV2ZWdhcmRlciIsCiAgICAnWmlwX05vX0V4dHJhY3QnID0+ICdFeHRyYWN0aW9uIGltcG9zc2libGUuIExlIGZpY2hpZXIgZXN0IHBldXQtw6p0cmUgY29ycm9tcHUuJywKICAgICdaaXBfSW52YWxpZCcgPT4gJ0NldHRlIGV4dGVuc2lvbiBuXCdlc3QgcGFzIHN1cHBvcnTDqWUuIEV4dGVuc2lvbnMgdmFsaWRlczogemlwLCBneiwgdGFyLicsCiAgICAnRGlyX05vX1dyaXRlJyA9PiAnTGUgcsOpcGVydG9pcmUgcXVlIHZvdXMgYXZleiBzw6lsZWN0aW9ubsOpIG5cJ2VzdCBwYXMgYWNjZXNzaWJsZSBlbiDDqWNyaXR1cmUuJywKICAgICdGdW5jdGlvbl9EaXNhYmxlZCcgPT4gJ0xhIGZvbmN0aW9uICVzIGEgw6l0w6kgZMOpc2FjdGl2w6llIHN1ciBsZSBzZXJ2ZXVyLicsIC8vICVzID0gY3V0IG9yIGNvcHkKICAgICdGaWxlX1Blcm1pc3Npb24nID0+ICdQZXJtaXNzaW9uIGR1IGZpY2hpZXInLAogICAgJ0ZpbGVfUGVybWlzc2lvbl9Ob3RfQWxsb3dlZCcgPT4gJ0xlIGNoYW5nZW1lbnQgZGUgcGVybWlzc2lvbiAlcyBuXCdlc3QgcGFzIGF1dG9yaXPDqS4nLCAvLyAlcyA9IGZpbGVzIG9yIGZvbGRlcnMKICAgICdGaWxlX1Blcm1pc3Npb25fUmVjdXJzaXZlJyA9PiAnQXBwbGlxdWV6IHJlY3Vyc2l2ZW1lbnQgPycsCiAgICAnRmlsZV9QZXJtaXNzaW9uX1dyb25nX01vZGUnID0+ICdMZXMgcGVybWlzc2lvbnMgc2Fpc2llcyBzb250IGluY29ycmVjdGVzLicsCiAgICAnVXNlcicgPT4gJ1V0aWxpc2F0ZXVyJywKICAgICdHcm91cCcgPT4gJ0dyb3VwZScsCiAgICAnWWVzJyA9PiAnT3VpJywKICAgICdObycgPT4gJ05vbicsCiAgICAnTGFuZ19Ob3RfRm91bmQnID0+ICdMZSBmaWNoaWVyIGRlIGxhbmd1ZSBlc3QgaW50cm91dmFibGUuJywKICAgICdMYW5nX0NoYW5nZScgPT4gJ0NoYW5nZXIgbGEgbGFuZ3VlJywKICAgICdGaWxlX05vdF9Gb3VuZCcgPT4gJ0xlIGZpY2hpZXIgZXN0IGludHJvdXZhYmxlLicsCiAgICAnRmlsZV9PcGVuX0VkaXRfTm90X0FsbG93ZWQnID0+ICdWb3VzIG5lIGRpc3Bvc2V6IHBhcyBkZXMgYXV0b3Jpc2F0aW9ucyBzdXIgbGUgZmljaGllciAlcy4nLCAvLyAlcyA9IG9wZW4gb3IgZWRpdAogICAgJ0VkaXQnID0+ICdFZGl0ZXInLAogICAgJ0VkaXRfRmlsZScgPT4gJ0VkaXRlciBsZSBjb250ZW51IGR1IGZpY2hpZXInLAogICAgJ0ZpbGVfU2F2ZV9PSycgPT4gJ0ZpY2hpZXIgZW5yZWdpc3Ryw6kgYXZlYyBzdWNjw6hzLicsCiAgICAnRmlsZV9TYXZlX0Vycm9yJyA9PiAnVW5lIGVycmV1ciBzXCdlc3QgcHJvZHVpdGUgbG9ycyBkZSBsXCdlbnJlZ2lzdHJlbWVudCBkdSBmaWNoaWVyLicsCiAgICAnTmV3X0ZpbGUnID0+ICdOb3V2ZWF1IGZpY2hpZXInLAogICAgJ05vX0V4dGVuc2lvbicgPT4gJ1ZvdXMgZGV2ZXogYWpvdXRlciB1bmUgZXh0ZW5zaW9uIGF1IGZpY2hpZXIuJywKICAgICdWYWxpZF9FeHRlbnNpb25zJyA9PiAnRXh0ZW5zaW9ucyB2YWxpZGVzOiAlcycsIC8vICVzID0gdHh0LGxvZyBldGMuCiAgICAnVXBsb2FkX21lc3NhZ2UnID0+ICdHbGlzc2V6IGxlcyBmaWNoaWVycyBpY2kgcG91ciBsZXMgYWpvdXRlcicsCgogICAgJ1NFUlZFUiBFUlJPUicgPT4gIkVSUkVVUiBTRVJWRVVSIiwKICAgICdmb3JiaWRkZW4nID0+ICJJbnRlcmRpdCIsCiAgICAnd3JvbmcgcGF0aCcgPT4gIkNoZW1pbiBpbnZhbGlkZSIsCiAgICAnd3JvbmcgbmFtZScgPT4gIk5vbSBpbnZhbGlkZSIsCiAgICAnd3JvbmcgZXh0ZW5zaW9uJyA9PiAiRXh0ZW5zaW9uIGludmFsaWRlIiwKICAgICd3cm9uZyBvcHRpb24nID0+ICJPcHRpb24gaW52YWxpZGUiLAogICAgJ3dyb25nIGRhdGEnID0+ICJEb25uw6llcyBpbnZhbGlkZXMiLAogICAgJ3dyb25nIGFjdGlvbicgPT4gIkFjdGlvbiBpbnZhbGlkZSIsCiAgICAnd3Jvbmcgc3ViLWFjdGlvbicgPT4gIlNvdXMtYWN0aW9uIGludmFsaWRlIiwKICAgICdubyBhY3Rpb24gcGFzc2VkJyA9PiAiQXVjdW5lIGFjdGlvbiBkZW1hbmTDqWUiLAogICAgJ25vIHBhdGgnID0+ICJDaGVtaW4gbWFucXVhbnQiLAogICAgJ25vIGZpbGUnID0+ICJGaWNoaWVyIG1hbnF1YW50IiwKICAgICd2aWV3IHR5cGUgbnVtYmVyIG1pc3NpbmcnID0+ICJUeXBlIGRlIHZ1ZSBtYW5xdWFudCIsCiAgICAnTm90IGVub3VnaCBNZW1vcnknID0+ICJNw6ltb2lyZSBpbnN1ZmZpc2FudGUiLAogICAgJ21heF9zaXplX3JlYWNoZWQnID0+ICJWb3RyZSByw6lwZXJ0b2lyZSBkJ2ltYWdlIGEgZMOpasOgIGF0dGVpbmQgc2EgdGFpbGxlIG1heGltYWxlIGRlICVkIG1vLiIsIC8vJWQgPSBtYXggb3ZlcmFsbCBzaXplCiAgICAnQicgPT4gIm8iLAogICAgJ0tCJyA9PiAiS28iLAogICAgJ01CJyA9PiAiTW8iLAogICAgJ0dCJyA9PiAiR28iLAogICAgJ1RCJyA9PiAiVG8iLAogICAgJ3RvdGFsIHNpemUnID0+ICJUYWlsbGUgdG90YWxlIiwKKTsK]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/lang/he_IL.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJldHVybiBhcnJheSgKCiAgICAnU2VsZWN0JyA9PiAn15HXl9eoJywKICAgICdEZXNlbGVjdF9BbGwnID0+ICdEZXNlbGVjdCBBbGwnLAogICAgJ1NlbGVjdF9BbGwnID0+ICdTZWxlY3QgQWxsJywKICAgICdFcmFzZScgPT4gJ9ee15fXpycsCiAgICAnT3BlbicgPT4gJ9ek16rXlycsCiAgICAnQ29uZmlybV9kZWwnID0+ICfXlNeQ150g15DXqteUINeR15jXldeXINep15HXqNem15XXoNeaINec157Xl9eV16cg15DXqiDXlNen15XXkdelID8nLAogICAgJ0FsbCcgPT4gJ9eU15vXnCcsCiAgICAnRmlsZXMnID0+ICfXp9eR16bXmdedJywKICAgICdJbWFnZXMnID0+ICfXqtee15XXoNeV16onLAogICAgJ0FyY2hpdmVzJyA9PiAn15DXqNeb15nXldeg15nXnScsCiAgICAnRXJyb3JfVXBsb2FkJyA9PiAn15LXldeT15wg15TXp9eV15HXpSDXlNee16bXldeo16Mg15fXldeo15Ig157XnyDXlNeS15HXldecINeU157Xldeq16ggLicsCiAgICAnRXJyb3JfZXh0ZW5zaW9uJyA9PiAn16rXkdeg15nXqiDXlNen15XXkdelINeQ15Ug16HXmdeV157XqiDXlNen15XXkdelINeQ15nXoNefINeX15XXp9eZ15XXqiAuJywKICAgICdVcGxvYWRfZmlsZScgPT4gJ9eU16LXnNeUJywKICAgICdGaWx0ZXJzJyA9PiAn16HXoNeg15nXnScsCiAgICAnVmlkZW9zJyA9PiAn15XXmdeT15DXlScsCiAgICAnTXVzaWMnID0+ICfXnteV15bXmden15QnLAogICAgJ05ld19Gb2xkZXInID0+ICfXqteZ16fXmdeUINeX15PXqdeUJywKICAgICdGb2xkZXJfQ3JlYXRlZCcgPT4gJ9eU16rXmden15nXlCDXoNeV16bXqNeUIC4nLAogICAgJ0V4aXN0aW5nX0ZvbGRlcicgPT4gJ9eU16rXmden15nXlCDXp9eZ15nXnteqJywKICAgICdDb25maXJtX0ZvbGRlcl9kZWwnID0+ICfXlNeQ150g15DXqteUINeR15jXldeXINep15HXqNem15XXoNeaINec157Xl9eV16cg15DXqiDXlNeq15nXp9eZ15Qg15XXm9ecINen15HXpteZ15QgPycsCiAgICAnUmV0dXJuX0ZpbGVzX0xpc3QnID0+ICfXl9eW15XXqCDXnNeo16nXmdee16og16fXkdem15nXnScsCiAgICAnUHJldmlldycgPT4gJ9eq16bXldeS15Qg157Xp9eT15nXnteUJywKICAgICdEb3dubG9hZCcgPT4gJ9eU15XXqNeTJywKICAgICdJbnNlcnRfRm9sZGVyX05hbWUnID0+ICfXlNeb16DXoSDXqdedINeq15nXp9eZ15Q6JywKICAgICdSb290JyA9PiAncm9vdCcsCiAgICAnUmVuYW1lJyA9PiAn16nXoNeUINep150nLAogICAgJ0JhY2snID0+ICfXl9eW15XXqCcsCiAgICAnVmlldycgPT4gJ9em16TXlCcsCiAgICAnVmlld19saXN0JyA9PiAn16rXpteV15LXqiDXqNep15nXnteUJywKICAgICdWaWV3X2NvbHVtbnNfbGlzdCcgPT4gJ9eq16bXldeS16og16jXqdeZ157XlCDXkdeY15XXqNeZ150nLAogICAgJ1ZpZXdfYm94ZXMnID0+ICfXqtem15XXkteqINen15XXpNeh15DXldeqJywKICAgICdUb29sYmFyJyA9PiAn16HXqNeS15wg15vXnNeZ150nLAogICAgJ0FjdGlvbnMnID0+ICfXpNei15XXnNeV16onLAogICAgJ1JlbmFtZV9leGlzdGluZ19maWxlJyA9PiAn15TXp9eV15HXpSDXm9eR16gg16fXmdeZ150nLAogICAgJ1JlbmFtZV9leGlzdGluZ19mb2xkZXInID0+ICfXlNeq15nXp9eZ15Qg15vXkdeoINen15nXmdee16onLAogICAgJ0VtcHR5X25hbWUnID0+ICfXqdedINeU16fXldeR16Ug16jXmdenJywKICAgICdUZXh0X2ZpbHRlcicgPT4gJ9eh16DXnyDXmNen16HXmCcsCiAgICAnU3dpcGVfaGVscCcgPT4gJ9eh157XnyDXkNeqINeU16fXldeR16UgLyDXqteZ16fXmdeUINei15wg157XoNeqINec15TXpteZ15Ig15DXpNep16jXmdeV16onLAogICAgJ1VwbG9hZF9iYXNlJyA9PiAn16jXkteZ15wnLAogICAgJ1VwbG9hZF9iYXNlX2hlbHAnID0+ICJEcmFnICYgRHJvcCBmaWxlcyhtb2Rlcm4gYnJvd3NlcnMpIG9yIGNsaWNrIGluIHVwcGVyIGJ1dHRvbiB0byBBZGQgdGhlIGZpbGUocykgYW5kIGNsaWNrIG9uIFN0YXJ0IHVwbG9hZC4gV2hlbiB0aGUgdXBsb2FkIGlzIGNvbXBsZXRlLCBjbGljayB0aGUgJ1JldHVybiB0byBmaWxlcyBsaXN0JyBidXR0b24uIiwKICAgICdVcGxvYWRfYWRkX2ZpbGVzJyA9PiAnQWRkIGZpbGUocyknLAogICAgJ1VwbG9hZF9zdGFydCcgPT4gJ1N0YXJ0IHVwbG9hZCcsCiAgICAnVXBsb2FkX2Vycm9yX21lc3NhZ2VzJyA9PmFycmF5KAogICAgICAgIDEgPT4gJ1RoZSB1cGxvYWRlZCBmaWxlIGV4Y2VlZHMgdGhlIHVwbG9hZF9tYXhfZmlsZXNpemUgZGlyZWN0aXZlIGluIHBocC5pbmknLAogICAgICAgIDIgPT4gJ1RoZSB1cGxvYWRlZCBmaWxlIGV4Y2VlZHMgdGhlIE1BWF9GSUxFX1NJWkUgZGlyZWN0aXZlIHRoYXQgd2FzIHNwZWNpZmllZCBpbiB0aGUgSFRNTCBmb3JtJywKICAgICAgICAzID0+ICdUaGUgdXBsb2FkZWQgZmlsZSB3YXMgb25seSBwYXJ0aWFsbHkgdXBsb2FkZWQnLAogICAgICAgIDQgPT4gJ05vIGZpbGUgd2FzIHVwbG9hZGVkJywKICAgICAgICA2ID0+ICdNaXNzaW5nIGEgdGVtcG9yYXJ5IGZvbGRlcicsCiAgICAgICAgNyA9PiAnRmFpbGVkIHRvIHdyaXRlIGZpbGUgdG8gZGlzaycsCiAgICAgICAgOCA9PiAnQSBQSFAgZXh0ZW5zaW9uIHN0b3BwZWQgdGhlIGZpbGUgdXBsb2FkJywKICAgICAgICAncG9zdF9tYXhfc2l6ZScgPT4gJ1RoZSB1cGxvYWRlZCBmaWxlIGV4Y2VlZHMgdGhlIHBvc3RfbWF4X3NpemUgZGlyZWN0aXZlIGluIHBocC5pbmknLAogICAgICAgICdtYXhfZmlsZV9zaXplJyA9PiAnRmlsZSBpcyB0b28gYmlnJywKICAgICAgICAnbWluX2ZpbGVfc2l6ZScgPT4gJ0ZpbGUgaXMgdG9vIHNtYWxsJywKICAgICAgICAnYWNjZXB0X2ZpbGVfdHlwZXMnID0+ICdGaWxldHlwZSBub3QgYWxsb3dlZCcsCiAgICAgICAgJ21heF9udW1iZXJfb2ZfZmlsZXMnID0+ICdNYXhpbXVtIG51bWJlciBvZiBmaWxlcyBleGNlZWRlZCcsCiAgICAgICAgJ21heF93aWR0aCcgPT4gJ0ltYWdlIGV4Y2VlZHMgbWF4aW11bSB3aWR0aCcsCiAgICAgICAgJ21pbl93aWR0aCcgPT4gJ0ltYWdlIHJlcXVpcmVzIGEgbWluaW11bSB3aWR0aCcsCiAgICAgICAgJ21heF9oZWlnaHQnID0+ICdJbWFnZSBleGNlZWRzIG1heGltdW0gaGVpZ2h0JywKICAgICAgICAnbWluX2hlaWdodCcgPT4gJ0ltYWdlIHJlcXVpcmVzIGEgbWluaW11bSBoZWlnaHQnLAogICAgICAgICdhYm9ydCcgPT4gJ0ZpbGUgdXBsb2FkIGFib3J0ZWQnLAogICAgICAgICdpbWFnZV9yZXNpemUnID0+ICdGYWlsZWQgdG8gcmVzaXplIGltYWdlJwogICAgKSwKICAgICdVcGxvYWRfdXJsJyA9PiAnRnJvbSB1cmwnLAogICAgJ1R5cGVfZGlyJyA9PiAn16rXmden15nXlCcsCiAgICAnVHlwZScgPT4gJ9eh15XXkicsCiAgICAnRGltZW5zaW9uJyA9PiAn157Xmdee15PXmdedJywKICAgICdTaXplJyA9PiAn15LXldeT15wnLAogICAgJ0RhdGUnID0+ICfXqteQ16jXmdeaJywKICAgICdGaWxlbmFtZScgPT4gJ9ep150g15TXp9eV15HXpScsCiAgICAnT3BlcmF0aW9ucycgPT4gJ9ek16LXldec15XXqicsCiAgICAnRGF0ZV90eXBlJyA9PiAnZC1tLXknLAogICAgJ09LJyA9PiAn15DXmdep15XXqCcsCiAgICAnQ2FuY2VsJyA9PiAn15HXmdeY15XXnCcsCiAgICAnU29ydGluZycgPT4gJ9ee15nXldefJywKICAgICdTaG93X3VybCcgPT4gJ9eU16bXkiDXm9eq15XXkdeqJywKICAgICdFeHRyYWN0JyA9PiAn15fXnNelINec15vXkNefJywKICAgICdGaWxlX2luZm8nID0+ICfXnteQ16TXmdeZ16DXmdedJywKICAgICdFZGl0X2ltYWdlJyA9PiAn16LXqNeV15og16rXnteV16DXlCcsCiAgICAnRHVwbGljYXRlJyA9PiAn16nXm9ek15wnLAogICAgJ0ZvbGRlcnMnLCAn16rXmden15nXldeqJywKICAgICdDb3B5JyA9PiAn15TXoteq16cnLAogICAgJ0N1dCcgPT4gJ9eS15bXldeoJywKICAgICdQYXN0ZScgPT4gJ9eU15PXkdenJywKICAgICdDQicsICfXnNeV15cg16LXqNeZ15vXlCcsIC8vIGNsaXBib2FyZAogICAgJ1Bhc3RlX0hlcmUnID0+ICfXlNeT15HXpyDXnNeq15nXp9eZ15Qg15bXlScsCiAgICAnUGFzdGVfQ29uZmlybScgPT4gJ9eU15DXnSDXkNeq15Qg15HXmNeV15cg16nXkdeo16bXldeg15og15zXlNeT15HXmdenINec16rXmden15nXlCDXlteVID8g16TXoteV15zXlCDXlteVINeq15fXnNeZ16Mg15HXmdefINeU16fXkdem15nXnSDXkdee16fXqNeUINep15wg15TXqteg15LXqdeV16onLAogICAgJ1Bhc3RlX0ZhaWxlZCcgPT4gJ9eg15vXqdecINeR15TXoteq16fXqiDXp9eR16bXmdedJywKICAgICdDbGVhcl9DbGlwYm9hcmQnID0+ICfXoNen15Qg15zXldeXINei16jXmdeb15QnLAogICAgJ0NsZWFyX0NsaXBib2FyZF9Db25maXJtJyA9PiAn15TXkNedINeQ16rXlCDXkdeY15XXlyDXqdeR16jXpteV16DXmiDXnNeg16fXldeqINeQ16og15zXldeXINeU16LXqNeZ15vXlCA/JywKICAgICdGaWxlc19PTl9DbGlwYm9hcmQnID0+ICfXmdep16DXnSDXp9eR16bXmdedINeR15zXldeXINeU16LXqNeZ15vXlC4nLAogICAgJ0NvcHlfQ3V0X1NpemVfTGltaXQnID0+ICfXkteV15PXnCDXlNen15XXkdem15nXnSAvINeU16rXmden15nXlCDXkteT15XXnNeZ150g157Xk9eZICVzLiDXlNeS15HXnNeUOiAlZCBNQi/XnNek16LXldec15QnLCAvLyAlcyA9IGN1dCBvciBjb3B5CiAgICAnQ29weV9DdXRfQ291bnRfTGltaXQnID0+ICfXkdeX16gg15nXldeq16gg157Xk9eZINeq15nXp9eZ15XXqi/Xp9eR16bXmdedINec16TXoteV15zXlCAlcy4g15TXkteR15zXlDogJWQgZmlsZXMvb3BlcmF0aW9uJywgLy8gJXMgPSBjdXQgb3IgY29weQogICAgJ0NvcHlfQ3V0X05vdF9BbGxvd2VkJyA9PiAn15DXmdeg15og16jXkNep15kg15wlcyDXp9eR16bXmdedLicsIC8vICVzKDEpID0gY3V0IG9yIGNvcHksICVzKDIpID0gZmlsZXMgb3IgZm9sZGVycwogICAgJ0ltYWdlX0VkaXRvcl9Ob19TYXZlJywgJ9ec15Ag16DXmdeq158g15zXqdee15XXqCDXkNeqINeU16rXnteV16DXlCAuJywKICAgICdJbWFnZV9FZGl0b3JfRXhpdCcgPT4gIkV4aXQiLAogICAgJ0ltYWdlX0VkaXRvcl9TYXZlJyA9PiAiU2F2ZSIsCiAgICAnWmlwX05vX0V4dHJhY3QnLCAn15zXkCDXoNeZ16rXnyDXnNeX15zXpSAsINeU16fXkdelINek15LXldedLicsCiAgICAnWmlwX0ludmFsaWQnLCAn16HXldeSINeQ15Ug16TXldeo157XmCDXlNen15XXkdelINeQ15nXoNeVINeg16rXnteaLiDXl9eV16fXmTogemlwLCBneiwgdGFyLicsCiAgICAnRGlyX05vX1dyaXRlJywgJ9eU16rXmden15nXlCDXqdeR15fXqNeqINeQ15nXoNeUINeg15nXqteg16og15zXm9eq15nXkdeUJywKICAgICdGdW5jdGlvbl9EaXNhYmxlZCcsICfXlCAlcyDXpNeV16DXp9em15nXlCDXkNeZ16DXlCDXpNei15nXnNeULicsIC8vICVzID0gY3V0IG9yIGNvcHkKICAgICdGaWxlX1Blcm1pc3Npb24nLCAn15TXqNeQ16nXldeqINen15XXkdelJywKICAgICdGaWxlX1Blcm1pc3Npb25fTm90X0FsbG93ZWQnLCAn16nXmdeg15XXmSAlcyDXlNeo15DXqdeV16og15zXkCDXoNeZ16rXoNeqINec16LXqNeZ15vXlC4nLCAvLyAlcyA9IGZpbGVzIG9yIGZvbGRlcnMKICAgICdGaWxlX1Blcm1pc3Npb25fUmVjdXJzaXZlJywgJ9eU15fXnCDXqNen15XXqNeh15nXkdeZ15XXqj8nLAogICAgJ0ZpbGVfUGVybWlzc2lvbl9Xcm9uZ19Nb2RlJywgIteU16jXqdeQ15XXqiDXqdeg16rXoNeVINeQ15nXoNefINeX15XXp9eZ15XXqi4iLAogICAgJ1VzZXInLCAn157Xqdeq157XqdeZ150nLAogICAgJ0dyb3VwJywgJ9en15HXldem15XXqicsCiAgICAnWWVzJywgJ9eb158nLAogICAgJ05vJywgJ9ec15AnLAogICAgJ0xhbmdfTm90X0ZvdW5kJywgJ9ec15Ag16DXmdeq158g15zXntem15XXkCDXkNeqINeU16nXpNeUINeU157XkdeV16fXqdeqIC4nLAogICAgJ0xhbmdfQ2hhbmdlJywgJ9eU15fXnNejINep16TXlCcsCiAgICAnRmlsZV9Ob3RfRm91bmQnLCAn15zXkCDXoNeZ16rXnyDXnNeQ16rXqCDXkNeqINeU16fXldeR16Ug15TXnteR15XXp9epLicsCiAgICAnRmlsZV9PcGVuX0VkaXRfTm90X0FsbG93ZWQnLCAn15DXmdeg15og157Xldeo16nXlCDXnCVzINeQ16og15TXp9eV15HXpS4nLCAvLyAlcyA9IG9wZW4gb3IgZWRpdAogICAgJ0VkaXQnLCAn16LXqNeV15onLAogICAgJ0VkaXRfRmlsZScsICLXoteo15XXmiDXkNeqINeq15XXm9efINeU16fXldeR16UiLAogICAgJ0ZpbGVfU2F2ZV9PSycsICLXlNen15XXkdelINeg16nXnteoINeR15TXptec15fXlCAuIiwKICAgICdGaWxlX1NhdmVfRXJyb3InLCAi16nXkteZ15DXlCDXkdei16og16nXnteZ16jXqiDXlNen15XXkdelLiIsCiAgICAnTmV3X0ZpbGUnID0+ICfXp9eV15HXpSDXl9eT16knLAogICAgJ05vX0V4dGVuc2lvbicgPT4gJ9eX15XXkdeUINec16bXmdeZ158g15DXqiDXodeZ15XXnteqINeU16fXldeR16UuJywKICAgICdWYWxpZF9FeHRlbnNpb25zJyA9PiAn16HXmdeV157XldeqINeX15XXp9eZ15XXqjogJXMnLCAvLyAlcyA9IHR4dCxsb2cgZXRjLgogICAgJ1VwbG9hZF9tZXNzYWdlJyA9PiAiRHJvcCBmaWxlIGhlcmUgdG8gdXBsb2FkIiwKCiAgICAnU0VSVkVSIEVSUk9SJyA9PiAiU0VSVkVSIEVSUk9SIiwKICAgICdmb3JiaWRkZW4nID0+ICJGb3JiaWRlbiIsCiAgICAnd3JvbmcgcGF0aCcgPT4gIldyb25nIHBhdGgiLAogICAgJ3dyb25nIG5hbWUnID0+ICJXcm9uZyBuYW1lIiwKICAgICd3cm9uZyBleHRlbnNpb24nID0+ICJXcm9uZyBleHRlbnNpb24iLAogICAgJ3dyb25nIG9wdGlvbicgPT4gIldyb25nIG9wdGlvbiIsCiAgICAnd3JvbmcgZGF0YScgPT4gIldyb25nIGRhdGEiLAogICAgJ3dyb25nIGFjdGlvbicgPT4gIldyb25nIGFjdGlvbiIsCiAgICAnd3Jvbmcgc3ViLWFjdGlvbicgPT4gIldyb25nIHN1Yi1hY3RpbyIsCiAgICAnbm8gYWN0aW9uIHBhc3NlZCcgPT4gIk5vIGFjdGlvbiBwYXNzZWQiLAogICAgJ25vIHBhdGgnID0+ICJObyBwYXRoIiwKICAgICdubyBmaWxlJyA9PiAiTm8gZmlsZSIsCiAgICAndmlldyB0eXBlIG51bWJlciBtaXNzaW5nJyA9PiAiVmlldyB0eXBlIG51bWJlciBtaXNzaW5nIiwKICAgICdOb3QgZW5vdWdoIE1lbW9yeScgPT4gIk5vdCBlbm91Z2ggTWVtb3J5IiwKICAgICdtYXhfc2l6ZV9yZWFjaGVkJyA9PiAiWW91ciBpbWFnZSBmb2xkZXIgaGFzIHJlYWNoIGl0cyBtYXhpbWFsZSBzaXplIG9mICVkIE1CLiIsIC8vJWQgPSBtYXggb3ZlcmFsbCBzaXplCiAgICAnQicgPT4gIkIiLAogICAgJ0tCJyA9PiAiS0IiLAogICAgJ01CJyA9PiAiTUIiLAogICAgJ0dCJyA9PiAiR0IiLAogICAgJ1RCJyA9PiAiVEIiLAogICAgJ3RvdGFsIHNpemUnID0+ICJUb3RhbCBzaXplIiwKKTsK]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/lang/hr.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJldHVybiBhcnJheSgKCiAgICAnU2VsZWN0JyA9PiAnT2RhYmVyaScsCiAgICAnRGVzZWxlY3RfQWxsJyA9PiAnRGVzZWxlY3QgQWxsJywKICAgICdTZWxlY3RfQWxsJyA9PiAnU2VsZWN0IEFsbCcsCiAgICAnRXJhc2UnID0+ICdPYnJpxaFpJywKICAgICdPcGVuJyA9PiAnT3R2b3JpJywKICAgICdDb25maXJtX2RlbCcgPT4gJ0plc3RlIGxpIHNpZ3VybmkgZGEgxb5lbGl0ZSBvYnJpc2F0aSBvdnUgZGF0b3Rla3U/JywKICAgICdBbGwnID0+ICdTdmUnLAogICAgJ0ZpbGVzJyA9PiAnRGF0b3Rla2UnLAogICAgJ0ltYWdlcycgPT4gJ1NsaWtlJywKICAgICdBcmNoaXZlcycgPT4gJ0tvbXByZXNpcmFuZSBhcmhpdmUnLAogICAgJ0Vycm9yX1VwbG9hZCcgPT4gJ0RhdG90ZWthIGtvanUgxb5lbGl0ZSBwcmVuZXN0aSBwcmVsYXppIG1heGltYWxudSBkb3B1xaF0ZW51IHZlbGnEjWludS4nLAogICAgJ0Vycm9yX2V4dGVuc2lvbicgPT4gJ0RhdG90ZWthIHMgdG9tIGVrc3Rlbnppam9tIG5pamUgZG9wdcWhdGVuYS4nLAogICAgJ1VwbG9hZF9maWxlJyA9PiAnUHJlbmVzaScsCiAgICAnRmlsdGVycycgPT4gJ0ZpbHRlcmknLAogICAgJ1ZpZGVvcycgPT4gJ1ZpZGVvIHphcGlzaScsCiAgICAnTXVzaWMnID0+ICdHbGF6YmEnLAogICAgJ05ld19Gb2xkZXInID0+ICdOb3ZhIG1hcGEnLAogICAgJ0ZvbGRlcl9DcmVhdGVkJyA9PiAnTWFwYSBqZSB1c3BqZcWhbm8ga3JlaXJhbmEnLAogICAgJ0V4aXN0aW5nX0ZvbGRlcicgPT4gJ1Bvc3RvamXEh2EgbWFwYScsCiAgICAnQ29uZmlybV9Gb2xkZXJfZGVsJyA9PiAnSmVzdGUgbGkgc2lndXJuaSBkYSDFvmVsaXRlIG9icmlzYXRpIG92dSBtYXB1IGkgc3ZlIGRhdG90ZWtlIHUgbmpvaj8nLAogICAgJ1JldHVybl9GaWxlc19MaXN0JyA9PiAnVnJhdGkgc2UgbmEgcHJlZ2xlZCBkYXRvdGVrYScsCiAgICAnUHJldmlldycgPT4gJ1BvZ2xlZGFqJywKICAgICdEb3dubG9hZCcgPT4gJ1ByZXV6bWknLAogICAgJ0luc2VydF9Gb2xkZXJfTmFtZScgPT4gJ05heml2IG5vdmUgbWFwZTonLAogICAgJ1Jvb3QnID0+ICdwb2xhem5vJywKICAgICdSZW5hbWUnID0+ICdQcmVpbWVudWonLAogICAgJ0JhY2snID0+ICduYXRyYWcnLAogICAgJ1ZpZXcnID0+ICdQcmlrYXonLAogICAgJ1ZpZXdfbGlzdCcgPT4gJ1ByaWtheiBsaXN0ZScsCiAgICAnVmlld19jb2x1bW5zX2xpc3QnID0+ICdQcmlrYXogc3R1cGFjLWxpc3RlJywKICAgICdWaWV3X2JveGVzJyA9PiAnUHJpa2F6IGdyaWQnLAogICAgJ1Rvb2xiYXInID0+ICdBbGF0bmEgdHJha2EnLAogICAgJ0FjdGlvbnMnID0+ICdSYWRuamEnLAogICAgJ1JlbmFtZV9leGlzdGluZ19maWxlJyA9PiAnRGF0b3Rla2EgdmXEhyBwb3N0b2ppJywKICAgICdSZW5hbWVfZXhpc3RpbmdfZm9sZGVyJyA9PiAnTWFwYSB2ZcSHIHBvc3RvamknLAogICAgJ0VtcHR5X25hbWUnID0+ICdOYXppdiBuaWplIHVwaXNhbicsCiAgICAnVGV4dF9maWx0ZXInID0+ICdmaWx0cmlyYWogcG8gbmF6aXZ1JywKICAgICdTd2lwZV9oZWxwJyA9PiAnUG92dWNpdGUgcHJzdG9tIGltZSBkYXRvdGVrZSAvIG1hcGUgemEgcHJpa2F6IG1vZ3XEh25vc3RpJywKICAgICdVcGxvYWRfYmFzZScgPT4gJ1B1dGFuamEgZG8gbWFwZSB6YSBwcmVuZXNlbmUgZGF0b3Rla2UnLAogICAgJ1VwbG9hZF9iYXNlX2hlbHAnID0+ICJEcmFnICYgRHJvcCBmaWxlcyhtb2Rlcm4gYnJvd3NlcnMpIG9yIGNsaWNrIGluIHVwcGVyIGJ1dHRvbiB0byBBZGQgdGhlIGZpbGUocykgYW5kIGNsaWNrIG9uIFN0YXJ0IHVwbG9hZC4gV2hlbiB0aGUgdXBsb2FkIGlzIGNvbXBsZXRlLCBjbGljayB0aGUgJ1JldHVybiB0byBmaWxlcyBsaXN0JyBidXR0b24uIiwKICAgICdVcGxvYWRfYWRkX2ZpbGVzJyA9PiAnQWRkIGZpbGUocyknLAogICAgJ1VwbG9hZF9zdGFydCcgPT4gJ1N0YXJ0IHVwbG9hZCcsCiAgICAnVXBsb2FkX2Vycm9yX21lc3NhZ2VzJyA9PmFycmF5KAogICAgICAgIDEgPT4gJ1RoZSB1cGxvYWRlZCBmaWxlIGV4Y2VlZHMgdGhlIHVwbG9hZF9tYXhfZmlsZXNpemUgZGlyZWN0aXZlIGluIHBocC5pbmknLAogICAgICAgIDIgPT4gJ1RoZSB1cGxvYWRlZCBmaWxlIGV4Y2VlZHMgdGhlIE1BWF9GSUxFX1NJWkUgZGlyZWN0aXZlIHRoYXQgd2FzIHNwZWNpZmllZCBpbiB0aGUgSFRNTCBmb3JtJywKICAgICAgICAzID0+ICdUaGUgdXBsb2FkZWQgZmlsZSB3YXMgb25seSBwYXJ0aWFsbHkgdXBsb2FkZWQnLAogICAgICAgIDQgPT4gJ05vIGZpbGUgd2FzIHVwbG9hZGVkJywKICAgICAgICA2ID0+ICdNaXNzaW5nIGEgdGVtcG9yYXJ5IGZvbGRlcicsCiAgICAgICAgNyA9PiAnRmFpbGVkIHRvIHdyaXRlIGZpbGUgdG8gZGlzaycsCiAgICAgICAgOCA9PiAnQSBQSFAgZXh0ZW5zaW9uIHN0b3BwZWQgdGhlIGZpbGUgdXBsb2FkJywKICAgICAgICAncG9zdF9tYXhfc2l6ZScgPT4gJ1RoZSB1cGxvYWRlZCBmaWxlIGV4Y2VlZHMgdGhlIHBvc3RfbWF4X3NpemUgZGlyZWN0aXZlIGluIHBocC5pbmknLAogICAgICAgICdtYXhfZmlsZV9zaXplJyA9PiAnRmlsZSBpcyB0b28gYmlnJywKICAgICAgICAnbWluX2ZpbGVfc2l6ZScgPT4gJ0ZpbGUgaXMgdG9vIHNtYWxsJywKICAgICAgICAnYWNjZXB0X2ZpbGVfdHlwZXMnID0+ICdGaWxldHlwZSBub3QgYWxsb3dlZCcsCiAgICAgICAgJ21heF9udW1iZXJfb2ZfZmlsZXMnID0+ICdNYXhpbXVtIG51bWJlciBvZiBmaWxlcyBleGNlZWRlZCcsCiAgICAgICAgJ21heF93aWR0aCcgPT4gJ0ltYWdlIGV4Y2VlZHMgbWF4aW11bSB3aWR0aCcsCiAgICAgICAgJ21pbl93aWR0aCcgPT4gJ0ltYWdlIHJlcXVpcmVzIGEgbWluaW11bSB3aWR0aCcsCiAgICAgICAgJ21heF9oZWlnaHQnID0+ICdJbWFnZSBleGNlZWRzIG1heGltdW0gaGVpZ2h0JywKICAgICAgICAnbWluX2hlaWdodCcgPT4gJ0ltYWdlIHJlcXVpcmVzIGEgbWluaW11bSBoZWlnaHQnLAogICAgICAgICdhYm9ydCcgPT4gJ0ZpbGUgdXBsb2FkIGFib3J0ZWQnLAogICAgICAgICdpbWFnZV9yZXNpemUnID0+ICdGYWlsZWQgdG8gcmVzaXplIGltYWdlJwogICAgKSwKICAgICdVcGxvYWRfdXJsJyA9PiAnRnJvbSB1cmwnLAogICAgJ1R5cGVfZGlyJyA9PiAnbWFwYScsCiAgICAnVHlwZScgPT4gJ1RpcCcsCiAgICAnRGltZW5zaW9uJyA9PiAnRGltZW56aWplJywKICAgICdTaXplJyA9PiAnVmVsacSNaW5hJywKICAgICdEYXRlJyA9PiAnRGF0dW0nLAogICAgJ0ZpbGVuYW1lJyA9PiAnTmF6aXYgZGF0b3Rla2UnLAogICAgJ09wZXJhdGlvbnMnID0+ICdSYWRuamUnLAogICAgJ0RhdGVfdHlwZScgPT4gJ3ktbS1kJywKICAgICdPSycgPT4gJ1UgcmVkdScsCiAgICAnQ2FuY2VsJyA9PiAnT2R1c3RhbmknLAogICAgJ1NvcnRpbmcnID0+ICdzb3J0aXJhbmplJywKICAgICdTaG93X3VybCcgPT4gJ3ByaWthxb5pIFVSTCcsCiAgICAnRXh0cmFjdCcgPT4gJ3Jhc3Bha2lyYWogb3ZkamUnLAogICAgJ0ZpbGVfaW5mbycgPT4gJ2luZm9ybWFjaWplJywKICAgICdFZGl0X2ltYWdlJyA9PiAndXJlZGkgc2xpa3UnLAogICAgJ0R1cGxpY2F0ZScgPT4gJ2tvcGlyYWonLAogICAgJ0ZvbGRlcnMnID0+ICdGb2xkZXJzJywKICAgICdDb3B5JyA9PiAnQ29weScsCiAgICAnQ3V0JyA9PiAnQ3V0JywKICAgICdQYXN0ZScgPT4gJ1Bhc3RlJywKICAgICdDQicgPT4gJ0NCJywgLy8gY2xpcGJvYXJkCiAgICAnUGFzdGVfSGVyZScgPT4gJ1Bhc3RlIHRvIHRoaXMgZGlyZWN0b3J5JywKICAgICdQYXN0ZV9Db25maXJtJyA9PiAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHBhc3RlIHRvIHRoaXMgZGlyZWN0b3J5PyBUaGlzIHdpbGwgb3ZlcndyaXRlIGV4aXN0aW5nIGZpbGVzL2ZvbGRlcnMgaWYgZW5jb3VudGVyZWQgYW55LicsCiAgICAnUGFzdGVfRmFpbGVkJyA9PiAnRmFpbGVkIHRvIHBhc3RlIGZpbGUocyknLAogICAgJ0NsZWFyX0NsaXBib2FyZCcgPT4gJ0NsZWFyIGNsaXBib2FyZCcsCiAgICAnQ2xlYXJfQ2xpcGJvYXJkX0NvbmZpcm0nID0+ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gY2xlYXIgdGhlIGNsaXBib2FyZD8nLAogICAgJ0ZpbGVzX09OX0NsaXBib2FyZCcgPT4gJ1RoZXJlIGFyZSBmaWxlcyBvbiB0aGUgY2xpcGJvYXJkLicsCiAgICAnQ29weV9DdXRfU2l6ZV9MaW1pdCcgPT4gJ1RoZSBzZWxlY3RlZCBmaWxlcy9mb2xkZXJzIGFyZSB0b28gYmlnIHRvICVzLiBMaW1pdDogJWQgTUIvb3BlcmF0aW9uJywgLy8gJXMgPSBjdXQgb3IgY29weQogICAgJ0NvcHlfQ3V0X0NvdW50X0xpbWl0JyA9PiAnWW91IHNlbGVjdGVkIHRvbyBtYW55IGZpbGVzL2ZvbGRlcnMgdG8gJXMuIExpbWl0OiAlZCBmaWxlcy9vcGVyYXRpb24nLCAvLyAlcyA9IGN1dCBvciBjb3B5CiAgICAnQ29weV9DdXRfTm90X0FsbG93ZWQnID0+ICdZb3UgYXJlIG5vdCBhbGxvd2VkIHRvICVzIGZpbGVzLicsIC8vICVzKDEpID0gY3V0IG9yIGNvcHksICVzKDIpID0gZmlsZXMgb3IgZm9sZGVycwogICAgJ0ltYWdlX0VkaXRvcl9Ob19TYXZlJyA9PiAnQ291bGQgbm90IHNhdmUgaW1hZ2UnLAogICAgJ0ltYWdlX0VkaXRvcl9FeGl0JyA9PiAiRXhpdCIsCiAgICAnSW1hZ2VfRWRpdG9yX1NhdmUnID0+ICJTYXZlIiwKICAgICdaaXBfTm9fRXh0cmFjdCcgPT4gJ0NvdWxkIG5vdCBleHRyYWN0LiBGaWxlIG1pZ2h0IGJlIGNvcnJ1cHQuJywKICAgICdaaXBfSW52YWxpZCcgPT4gJ1RoaXMgZXh0ZW5zaW9uIGlzIG5vdCBzdXBwb3J0ZWQuIFZhbGlkOiB6aXAsIGd6LCB0YXIuJywKICAgICdEaXJfTm9fV3JpdGUnID0+ICdUaGUgZGlyZWN0b3J5IHlvdSBzZWxlY3RlZCBpcyBub3Qgd3JpdGFibGUuJywKICAgICdGdW5jdGlvbl9EaXNhYmxlZCcgPT4gJ1RoZSAlcyBmdW5jdGlvbiBoYXMgYmVlbiBkaXNhYmxlZCBieSB0aGUgc2VydmVyLicsIC8vICVzID0gY3V0IG9yIGNvcHkKICAgICdGaWxlX1Blcm1pc3Npb24nID0+ICdGaWxlIHBlcm1pc3Npb24nLAogICAgJ0ZpbGVfUGVybWlzc2lvbl9Ob3RfQWxsb3dlZCcgPT4gJ0NoYW5naW5nICVzIHBlcm1pc3Npb25zIGFyZSBub3QgYWxsb3dlZC4nLCAvLyAlcyA9IGZpbGVzIG9yIGZvbGRlcnMKICAgICdGaWxlX1Blcm1pc3Npb25fUmVjdXJzaXZlJyA9PiAnQXBwbHkgcmVjdXJzaXZlbHk/JywKICAgICdGaWxlX1Blcm1pc3Npb25fV3JvbmdfTW9kZScgPT4gIlRoZSBzdXBwbGllZCBwZXJtaXNzaW9uIG1vZGUgaXMgaW5jb3JyZWN0LiIsCiAgICAnVXNlcicgPT4gJ1VzZXInLAogICAgJ0dyb3VwJyA9PiAnR3JvdXAnLAogICAgJ1llcycgPT4gJ1llcycsCiAgICAnTm8nID0+ICdObycsCiAgICAnTGFuZ19Ob3RfRm91bmQnID0+ICdDb3VsZCBub3QgZmluZCBsYW5ndWFnZS4nLAogICAgJ0xhbmdfQ2hhbmdlJyA9PiAnQ2hhbmdlIHRoZSBsYW5ndWFnZScsCiAgICAnRmlsZV9Ob3RfRm91bmQnID0+ICdDb3VsZCBub3QgZmluZCB0aGUgZmlsZS4nLAogICAgJ0ZpbGVfT3Blbl9FZGl0X05vdF9BbGxvd2VkJyA9PiAnWW91IGFyZSBub3QgYWxsb3dlZCB0byAlcyB0aGlzIGZpbGUuJywgLy8gJXMgPSBvcGVuIG9yIGVkaXQKICAgICdFZGl0JyA9PiAnRWRpdCcsCiAgICAnRWRpdF9GaWxlJyA9PiAiRWRpdCBmaWxlJ3MgY29udGVudCIsCiAgICAnRmlsZV9TYXZlX09LJyA9PiAiRmlsZSBzdWNjZXNzZnVsbHkgc2F2ZWQuIiwKICAgICdGaWxlX1NhdmVfRXJyb3InID0+ICJUaGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgc2F2aW5nIHRoZSBmaWxlLiIsCiAgICAnTmV3X0ZpbGUnID0+ICdOZXcgRmlsZScsCiAgICAnTm9fRXh0ZW5zaW9uJyA9PiAnWW91IGhhdmUgdG8gYWRkIGEgZmlsZSBleHRlbnNpb24uJywKICAgICdWYWxpZF9FeHRlbnNpb25zJyA9PiAnVmFsaWQgZXh0ZW5zaW9uczogJXMnLCAvLyAlcyA9IHR4dCxsb2cgZXRjLgogICAgJ1VwbG9hZF9tZXNzYWdlJyA9PiAiRHJvcCBmaWxlIGhlcmUgdG8gdXBsb2FkIiwKCiAgICAnU0VSVkVSIEVSUk9SJyA9PiAiU0VSVkVSIEVSUk9SIiwKICAgICdmb3JiaWRkZW4nID0+ICJGb3JiaWRlbiIsCiAgICAnd3JvbmcgcGF0aCcgPT4gIldyb25nIHBhdGgiLAogICAgJ3dyb25nIG5hbWUnID0+ICJXcm9uZyBuYW1lIiwKICAgICd3cm9uZyBleHRlbnNpb24nID0+ICJXcm9uZyBleHRlbnNpb24iLAogICAgJ3dyb25nIG9wdGlvbicgPT4gIldyb25nIG9wdGlvbiIsCiAgICAnd3JvbmcgZGF0YScgPT4gIldyb25nIGRhdGEiLAogICAgJ3dyb25nIGFjdGlvbicgPT4gIldyb25nIGFjdGlvbiIsCiAgICAnd3Jvbmcgc3ViLWFjdGlvbicgPT4gIldyb25nIHN1Yi1hY3RpbyIsCiAgICAnbm8gYWN0aW9uIHBhc3NlZCcgPT4gIk5vIGFjdGlvbiBwYXNzZWQiLAogICAgJ25vIHBhdGgnID0+ICJObyBwYXRoIiwKICAgICdubyBmaWxlJyA9PiAiTm8gZmlsZSIsCiAgICAndmlldyB0eXBlIG51bWJlciBtaXNzaW5nJyA9PiAiVmlldyB0eXBlIG51bWJlciBtaXNzaW5nIiwKICAgICdOb3QgZW5vdWdoIE1lbW9yeScgPT4gIk5vdCBlbm91Z2ggTWVtb3J5IiwKICAgICdtYXhfc2l6ZV9yZWFjaGVkJyA9PiAiWW91ciBpbWFnZSBmb2xkZXIgaGFzIHJlYWNoIGl0cyBtYXhpbWFsZSBzaXplIG9mICVkIE1CLiIsIC8vJWQgPSBtYXggb3ZlcmFsbCBzaXplCiAgICAnQicgPT4gIkIiLAogICAgJ0tCJyA9PiAiS0IiLAogICAgJ01CJyA9PiAiTUIiLAogICAgJ0dCJyA9PiAiR0IiLAogICAgJ1RCJyA9PiAiVEIiLAogICAgJ3RvdGFsIHNpemUnID0+ICJUb3RhbCBzaXplIiwKKTsK]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/lang/hu_HU.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJldHVybiBhcnJheSgKCiAgICAnU2VsZWN0JyA9PiAnVGFsbMOzesOhcycsCiAgICAnRGVzZWxlY3RfQWxsJyA9PiAnS2lqZWzDtmzDqXMgdMO2cmzDqXNlJywKICAgICdTZWxlY3RfQWxsJyA9PiAnw5Zzc3plcyBraWplbMO2bMOpc2UnLAogICAgJ0VyYXNlJyA9PiAnVMO2cmzDqXMnLAogICAgJ09wZW4nID0+ICdNZWdueWl0w6FzJywKICAgICdDb25maXJtX2RlbCcgPT4gJ0JpenRvc2FuIHTDtnJsw7ZkIGV6dCBhIGbDoWpsdD8nLAogICAgJ0FsbCcgPT4gJ8OWc3N6ZXMnLAogICAgJ0ZpbGVzJyA9PiAnZsOhamwnLAogICAgJ0ltYWdlcycgPT4gJ0vDqXBlaycsCiAgICAnQXJjaGl2ZXMnID0+ICdUw7Ztw7Zyw610ZXR0JywKICAgICdFcnJvcl9VcGxvYWQnID0+ICdBIGtpdsOhbGFzenRvdHQgZsOhamwgbcOpcmV0ZSB0w7psIG5hZ3khJywKICAgICdFcnJvcl9leHRlbnNpb24nID0+ICdBIG1lZ2Fkb3R0IGtpdGVyamVzenTDqXPFsSBmw6FqbCBuZW0gZW5nZWTDqWx5ZXpldHQuJywKICAgICdVcGxvYWRfZmlsZScgPT4gJ0bDoWpsIGZlbHTDtmx0w6lzZScsCiAgICAnRmlsdGVycycgPT4gJ1N6xbFyxZEnLAogICAgJ1ZpZGVvcycgPT4gJ1ZpZGXDsycsCiAgICAnTXVzaWMnID0+ICdaZW5lJywKICAgICdOZXdfRm9sZGVyJyA9PiAnw5pqIG1hcHBhJywKICAgICdGb2xkZXJfQ3JlYXRlZCcgPT4gJ01hcHBhIGzDqXRyZWhvenZhJywKICAgICdFeGlzdGluZ19Gb2xkZXInID0+ICdNYXBwYSBtw6FyIGzDqXRlemlrJywKICAgICdDb25maXJtX0ZvbGRlcl9kZWwnID0+ICdCaXp0b3NhbiB0w7ZybMO2ZCBhIGvDtm55dnTDoXJhdCDDqXMgYW5uYWsgdGFydGFsbcOhdD8nLAogICAgJ1JldHVybl9GaWxlc19MaXN0JyA9PiAnVmlzc3phIGEgZsOhamxsaXN0w6Fob3onLAogICAgJ1ByZXZpZXcnID0+ICdFbMWRbsOpemV0JywKICAgICdEb3dubG9hZCcgPT4gJ0xldMO2bHTDqXMnLAogICAgJ0luc2VydF9Gb2xkZXJfTmFtZScgPT4gJ01hcHBhIG5ldmU6JywKICAgICdSb290JyA9PiAncm9vdCcsCiAgICAnUmVuYW1lJyA9PiAnw4F0bmV2ZXrDqXMnLAogICAgJ0JhY2snID0+ICd2aXNzemEnLAogICAgJ1ZpZXcnID0+ICdOw6l6ZXQnLAogICAgJ1ZpZXdfbGlzdCcgPT4gJ0xpc3RhJywKICAgICdWaWV3X2NvbHVtbnNfbGlzdCcgPT4gJ09zemxvcG9rJywKICAgICdWaWV3X2JveGVzJyA9PiAnTWluaWF0xbFyw7ZrJywKICAgICdUb29sYmFyJyA9PiAnRXN6a8O2esO2aycsCiAgICAnQWN0aW9ucycgPT4gJ03FsXZlbGV0ZWsnLAogICAgJ1JlbmFtZV9leGlzdGluZ19maWxlJyA9PiAnQSBmw6FqbCBtw6FyIGzDqXRlemlrJywKICAgICdSZW5hbWVfZXhpc3RpbmdfZm9sZGVyJyA9PiAnQSBtYXBwYSBtw6FyIGzDqXRlemlrJywKICAgICdFbXB0eV9uYW1lJyA9PiAnQSBuw6l2IG5pbmNzIG1lZ2FkdmEnLAogICAgJ1RleHRfZmlsdGVyJyA9PiAnc3rFsXLDqXMnLAogICAgJ1N3aXBlX2hlbHAnID0+ICdIw7p6ZCBheiBlZ2VyZWQgYSBmw6FqbC9tYXBwYSBuZXbDqXJlLCBob2d5IGzDoXNkIGF6IG9wY2nDs2thdC4nLAogICAgJ1VwbG9hZF9iYXNlJyA9PiAnRsOpbHTDtmx0w6lzIGEgc3rDoW3DrXTDs2fDqXByxZFsJywKICAgICdVcGxvYWRfYmFzZV9oZWxwJyA9PiAiSMO6enphIGlkZSBhIGZlbHTDtmx0ZW5pIGvDrXbDoW50IGbDoWpsb2thdCwgdmFneSBrYXR0aW50c29uIGEgJ0bDoWpsKG9rKSBob3p6w6FhZMOhc2EgZ29tYnJhLiBIYSBraXbDoWxhc3p0b3R0YSBhIGbDoWpsb2thdCBrYXR0aW50c29uIGEgJ0ZlbHTDtmx0w6lzIGluZMOtdMOhc2EnIGdvbWJhLiBNaXV0w6FuIGVsa8Opc3rDvGx0IGEgZmVsdMO2bHTDqXMga2F0dGludHNvbiBhIGZlbnRpICdWaXNzemEgYSBmw6FqbGxpc3TDoWhveicgZ29tYnJhLiIsCiAgICAnVXBsb2FkX2FkZF9maWxlcycgPT4gJ0bDoWpsKG9rKSBob3p6w6FhZMOhc2EnLAogICAgJ1VwbG9hZF9zdGFydCcgPT4gJ0ZlbHTDtmx0w6lzIGVsaW5kw610w6FzYScsCiAgICAnVXBsb2FkX2Vycm9yX21lc3NhZ2VzJyA9PmFycmF5KAogICAgICAgIDEgPT4gJ1RoZSB1cGxvYWRlZCBmaWxlIGV4Y2VlZHMgdGhlIHVwbG9hZF9tYXhfZmlsZXNpemUgZGlyZWN0aXZlIGluIHBocC5pbmknLAogICAgICAgIDIgPT4gJ1RoZSB1cGxvYWRlZCBmaWxlIGV4Y2VlZHMgdGhlIE1BWF9GSUxFX1NJWkUgZGlyZWN0aXZlIHRoYXQgd2FzIHNwZWNpZmllZCBpbiB0aGUgSFRNTCBmb3JtJywKICAgICAgICAzID0+ICdUaGUgdXBsb2FkZWQgZmlsZSB3YXMgb25seSBwYXJ0aWFsbHkgdXBsb2FkZWQnLAogICAgICAgIDQgPT4gJ05vIGZpbGUgd2FzIHVwbG9hZGVkJywKICAgICAgICA2ID0+ICdNaXNzaW5nIGEgdGVtcG9yYXJ5IGZvbGRlcicsCiAgICAgICAgNyA9PiAnRmFpbGVkIHRvIHdyaXRlIGZpbGUgdG8gZGlzaycsCiAgICAgICAgOCA9PiAnQSBQSFAgZXh0ZW5zaW9uIHN0b3BwZWQgdGhlIGZpbGUgdXBsb2FkJywKICAgICAgICAncG9zdF9tYXhfc2l6ZScgPT4gJ1RoZSB1cGxvYWRlZCBmaWxlIGV4Y2VlZHMgdGhlIHBvc3RfbWF4X3NpemUgZGlyZWN0aXZlIGluIHBocC5pbmknLAogICAgICAgICdtYXhfZmlsZV9zaXplJyA9PiAnQSBmw6FqbCBtw6lyZXRlIHTDumwgbmFneSEnLAogICAgICAgICdtaW5fZmlsZV9zaXplJyA9PiAnQSBmw6FqbCBtw6lyZXRlIHTDumwga2ljc2khJywKICAgICAgICAnYWNjZXB0X2ZpbGVfdHlwZXMnID0+ICdGaWxldHlwZSBub3QgYWxsb3dlZCcsCiAgICAgICAgJ21heF9udW1iZXJfb2ZfZmlsZXMnID0+ICdNYXhpbXVtIG51bWJlciBvZiBmaWxlcyBleGNlZWRlZCcsCiAgICAgICAgJ21heF93aWR0aCcgPT4gJ0Ega8OpcCBtw6lyZXRlIGVsw6lydGUgYSBtYXhpbcOhbGlzIHN6w6lsZXNzw6lnZXQhJywKICAgICAgICAnbWluX3dpZHRoJyA9PiAnQSBrw6lwIG3DqXJldGUgbmVtIMOpcmkgZWwgYSBtaW5pbcOhbGlzIHN6w6lsZXNzw6lnZXQhJywKICAgICAgICAnbWF4X2hlaWdodCcgPT4gJ0Ega8OpcCBtw6lyZXRlIGVsw6lydGUgYSBtYXhpbcOhbGlzIG1hZ2Fzc8OhZ290IScsCiAgICAgICAgJ21pbl9oZWlnaHQnID0+ICdBIGvDqXAgbcOpcmV0ZSBuZW0gw6lyaSBlbCBhIG1pbmltw6FsaXMgbWFnYXNzw6Fnb3QhJywKICAgICAgICAnYWJvcnQnID0+ICdGaWxlIHVwbG9hZCBhYm9ydGVkJywKICAgICAgICAnaW1hZ2VfcmVzaXplJyA9PiAnQSBrw6lwIMOhdG3DqXJldMOpesOpc2Ugc2lrZXJ0ZWxlbiEnCiAgICApLAogICAgJ1VwbG9hZF91cmwnID0+ICdGZWx0w7ZsdMOpcyBVUkwtcsWRbCcsCiAgICAnVHlwZV9kaXInID0+ICdNYXBwYScsCiAgICAnVHlwZScgPT4gJ1TDrXB1cycsCiAgICAnRGltZW5zaW9uJyA9PiAnRmVsYm9udMOhcycsCiAgICAnU2l6ZScgPT4gJ03DqXJldCcsCiAgICAnRGF0ZScgPT4gJ0TDoXR1bScsCiAgICAnRmlsZW5hbWUnID0+ICdOw6l2JywKICAgICdPcGVyYXRpb25zJyA9PiAnTcWxdmVsZXRlaycsCiAgICAnRGF0ZV90eXBlJyA9PiAneS1tLWQnLAogICAgJ09LJyA9PiAnT0snLAogICAgJ0NhbmNlbCcgPT4gJ03DqWdzZScsCiAgICAnU29ydGluZycgPT4gJ1JlbmRlesOpcycsCiAgICAnU2hvd191cmwnID0+ICdVUkwgbWVnamVsZW7DrXTDqXNlJywKICAgICdFeHRyYWN0JyA9PiAnS2lib250w6FzIGlkZScsCiAgICAnRmlsZV9pbmZvJyA9PiAnRsOhamwgaW5mbycsCiAgICAnRWRpdF9pbWFnZScgPT4gJ0vDqXAgc3plcmtlc3p0w6lzZScsCiAgICAnRHVwbGljYXRlJyA9PiAnS2zDs25vesOhcycsCiAgICAnRm9sZGVycycgPT4gJ21hcHBhJywKICAgICdDb3B5JyA9PiAnTcOhc29sw6FzJywKICAgICdDdXQnID0+ICdLaXbDoWfDoXMnLAogICAgJ1Bhc3RlJyA9PiAnQmVpbGxlc3p0w6lzJywKICAgICdDQicgPT4gJ1ZMJywgLy8gY2xpcGJvYXJkCiAgICAnUGFzdGVfSGVyZScgPT4gJ0JlaWxsZXN6dMOpcyBlYmJlIGEgbWFwcMOhYmEuJywKICAgICdQYXN0ZV9Db25maXJtJyA9PiAnQml6dG9zIHZhZ3kgYmVubmUsIGhvZ3kgZWJiZSBhIG1hcHDDoWJhIHN6ZXJldG7DqWQgYmVpbGxlc3p0ZW5pIGEgZsOhamxva2F0PyBBIGzDqXRlesWRIGbDoWpsb2svbWFwcMOhayBmZWzDvGwgbGVzem5layDDrXJ2YS4nLAogICAgJ1Bhc3RlX0ZhaWxlZCcgPT4gJ0EgYmVpbGxlc3p0w6lzIHNpa2VydGVsZW4hJywKICAgICdDbGVhcl9DbGlwYm9hcmQnID0+ICdWw6Fnw7NsYXAgdMO2cmzDqXNlJywKICAgICdDbGVhcl9DbGlwYm9hcmRfQ29uZmlybScgPT4gJ0JpenRvc2FuIHTDtnJsw7ZkIGEgdsOhZ8OzbGFwIHRhcnRhbG3DoXQ/JywKICAgICdGaWxlc19PTl9DbGlwYm9hcmQnID0+ICdGw6FqbG9rIHRhbMOhbGhhdMOzYWsgYSB2w6Fnw7NsYXBvbi4nLAogICAgJ0NvcHlfQ3V0X1NpemVfTGltaXQnID0+ICdBIGtpdsOhbGFzenRvdHQgZsOhamxvay9tYXBww6FrIHTDumwgbmFneW9rIGEgJXNob3ouIExpbWl0OiAlZCBNQi9txbF2ZWxldCcsIC8vICVzID0gY3V0IG9yIGNvcHkKICAgICdDb3B5X0N1dF9Db3VudF9MaW1pdCcgPT4gJ1TDumwgc29rIGbDoWpsdCB2w6FsYXN6dG90dMOhbCBraSBhICVzaG96LiBMaW1pdDogJWQgZsOhamwvbcWxdmVsZXQnLCAvLyAlcyA9IGN1dCBvciBjb3B5CiAgICAnQ29weV9DdXRfTm90X0FsbG93ZWQnID0+ICdBICVzIG5lbSBlbmdlZMOpbHllemV0dC4nLCAvLyAlcygxKSA9IGN1dCBvciBjb3B5LCAlcygyKSA9IGZpbGVzIG9yIGZvbGRlcnMKICAgICdJbWFnZV9FZGl0b3JfTm9fU2F2ZScgPT4gJ0Ega8OpcCBtZW50w6lzZSBzaWtlcnRlbGVuLicsCiAgICAnSW1hZ2VfRWRpdG9yX0V4aXQnID0+ICJFeGl0IiwKICAgICdJbWFnZV9FZGl0b3JfU2F2ZScgPT4gIlNhdmUiLAogICAgJ1ppcF9Ob19FeHRyYWN0JyA9PiAnS2ljc29tYWdvbMOhcyBzaWtlcnRlbGVuLiBMZWhldCwgaG9neSBrb3JydXB0IGEgZsOhamwuJywKICAgICdaaXBfSW52YWxpZCcgPT4gJ0V6IGEga2l0ZXJqZXN6dMOpcyBuZW0gdMOhbW9nYXRvdHQuIFTDoW1vZ2F0b3R0OiB6aXAsIGd6LCB0YXIuJywKICAgICdEaXJfTm9fV3JpdGUnID0+ICdBIGtpdsOhbGFzenRvdHQgbWFwcGEgbmVtIMOtcmhhdMOzLicsCiAgICAnRnVuY3Rpb25fRGlzYWJsZWQnID0+ICdBICVzIGZ1bmtjacOzdCBsZXRpbHRvdHRhIGEgc3plcnZlci4nLCAvLyAlcyA9IGN1dCBvciBjb3B5CiAgICAnRmlsZV9QZXJtaXNzaW9uJyA9PiAnRW5nZWTDqWx5ZWsnLAogICAgJ0ZpbGVfUGVybWlzc2lvbl9Ob3RfQWxsb3dlZCcgPT4gJ0EgJXMgam9nYWluYWsgYSBtZWd2w6FsdG96dGF0w6FzYSBuZW0gZW5nZWTDqWx5ZXpldHQuJywgLy8gJXMgPSBmaWxlcyBvciBmb2xkZXJzCiAgICAnRmlsZV9QZXJtaXNzaW9uX1JlY3Vyc2l2ZScgPT4gJ1Jla3VyesOtdiBiZcOhbGzDrXTDoXMgYXogYWxtYXBww6FrcmE/JywKICAgICdGaWxlX1Blcm1pc3Npb25fV3JvbmdfTW9kZScgPT4gIkEgYmXDrXJ0IGVuZ2Vkw6lseSBuZW0gbWVnZmVsZWzFkS4iLAogICAgJ1VzZXInID0+ICdGZWxoYXN6bsOhbMOzJywKICAgICdHcm91cCcgPT4gJ0Nzb3BvcnQnLAogICAgJ1llcycgPT4gJ0lnZW4nLAogICAgJ05vJyA9PiAnTmVtJywKICAgICdMYW5nX05vdF9Gb3VuZCcgPT4gJ0EgbnllbHYgbmVtIHRhbMOhbGhhdMOzLicsCiAgICAnTGFuZ19DaGFuZ2UnID0+ICdOeWVsdiBtZWd2w6FsdG96dGF0w6FzYScsCiAgICAnRmlsZV9Ob3RfRm91bmQnID0+ICdBIGbDoWpsIG5lbSB0YWzDoWxoYXTDsy4nLAogICAgJ0ZpbGVfT3Blbl9FZGl0X05vdF9BbGxvd2VkJyA9PiAnTmluY3Mgam9nb2QgJXMgYSBmw6FqbHQuJywgLy8gJXMgPSBvcGVuIG9yIGVkaXQKICAgICdFZGl0JyA9PiAnU3plcmtlc3p0w6lzJywKICAgICdFZGl0X0ZpbGUnID0+ICJGw6FqbCBzemVya2VzenTDqXNlIiwKICAgICdGaWxlX1NhdmVfT0snID0+ICJGw6FqbCBzaWtlcmVzZW4gbWVudHZlLiIsCiAgICAnRmlsZV9TYXZlX0Vycm9yJyA9PiAiSGliYSB0w7ZydMOpbnQgYSBmw6FqbCBtZW50w6lzZSBrw7Z6YmVuLiIsCiAgICAnTmV3X0ZpbGUnID0+ICfDmmogZsOhamwnLAogICAgJ05vX0V4dGVuc2lvbicgPT4gJ01lZyBrZWxsIGFkbm9kIGEgZsOhamwga2l0ZXJqZXN6dMOpc8OpdC4nLAogICAgJ1ZhbGlkX0V4dGVuc2lvbnMnID0+ICdFbGZvZ2Fkb3R0IGtpdGVyamVzenTDqXNlazogJXMnLCAvLyAlcyA9IHR4dCxsb2cgZXRjLgogICAgJ1VwbG9hZF9tZXNzYWdlJyA9PiAiRHJvcCBmaWxlIGhlcmUgdG8gdXBsb2FkIiwKCiAgICAnU0VSVkVSIEVSUk9SJyA9PiAiU0VSVkVSIEVSUk9SIiwKICAgICdmb3JiaWRkZW4nID0+ICJGb3JiaWRlbiIsCiAgICAnd3JvbmcgcGF0aCcgPT4gIldyb25nIHBhdGgiLAogICAgJ3dyb25nIG5hbWUnID0+ICJXcm9uZyBuYW1lIiwKICAgICd3cm9uZyBleHRlbnNpb24nID0+ICJXcm9uZyBleHRlbnNpb24iLAogICAgJ3dyb25nIG9wdGlvbicgPT4gIldyb25nIG9wdGlvbiIsCiAgICAnd3JvbmcgZGF0YScgPT4gIldyb25nIGRhdGEiLAogICAgJ3dyb25nIGFjdGlvbicgPT4gIldyb25nIGFjdGlvbiIsCiAgICAnd3Jvbmcgc3ViLWFjdGlvbicgPT4gIldyb25nIHN1Yi1hY3RpbyIsCiAgICAnbm8gYWN0aW9uIHBhc3NlZCcgPT4gIk5vIGFjdGlvbiBwYXNzZWQiLAogICAgJ25vIHBhdGgnID0+ICJObyBwYXRoIiwKICAgICdubyBmaWxlJyA9PiAiTm8gZmlsZSIsCiAgICAndmlldyB0eXBlIG51bWJlciBtaXNzaW5nJyA9PiAiVmlldyB0eXBlIG51bWJlciBtaXNzaW5nIiwKICAgICdOb3QgZW5vdWdoIE1lbW9yeScgPT4gIk5vdCBlbm91Z2ggTWVtb3J5IiwKICAgICdtYXhfc2l6ZV9yZWFjaGVkJyA9PiAiWW91ciBpbWFnZSBmb2xkZXIgaGFzIHJlYWNoIGl0cyBtYXhpbWFsZSBzaXplIG9mICVkIE1CLiIsIC8vJWQgPSBtYXggb3ZlcmFsbCBzaXplCiAgICAnQicgPT4gIkIiLAogICAgJ0tCJyA9PiAiS0IiLAogICAgJ01CJyA9PiAiTUIiLAogICAgJ0dCJyA9PiAiR0IiLAogICAgJ1RCJyA9PiAiVEIiLAogICAgJ3RvdGFsIHNpemUnID0+ICJUb3RhbCBzaXplIiwKKTsK]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/lang/id.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJldHVybiBhcnJheSgKCiAgICAnU2VsZWN0JyA9PiAnUGlsaWgnLAogICAgJ0Rlc2VsZWN0X0FsbCcgPT4gJ0Rlc2VsZWN0IEFsbCcsCiAgICAnU2VsZWN0X0FsbCcgPT4gJ1NlbGVjdCBBbGwnLAogICAgJ0VyYXNlJyA9PiAnSGFwdXMnLAogICAgJ09wZW4nID0+ICdCdWthJywKICAgICdDb25maXJtX2RlbCcgPT4gJ0FwYWthaCBhbmRhIHlha2luIG1lbmdoYXB1cyBiZXJrYXMgaW5pPycsCiAgICAnQWxsJyA9PiAnU2VtdWEnLAogICAgJ0ZpbGVzJyA9PiAnQmVya2FzJywKICAgICdJbWFnZXMnID0+ICdHYW1iYXInLAogICAgJ0FyY2hpdmVzJyA9PiAnQXJzaXAnLAogICAgJ0Vycm9yX1VwbG9hZCcgPT4gJ0JlcmthcyB5YW5nIGRpdWJhaCBtZWxlYmloaSBiYXRhcyB1a3VyYW4geWFuZyBkaXBlcmJvbGVoa2FuLicsCiAgICAnRXJyb3JfZXh0ZW5zaW9uJyA9PiAnRWtzdGVuc2kgYmVya2FzIHRpZGFrIGRpcGVyYm9sZWhrYW4uJywKICAgICdVcGxvYWRfZmlsZScgPT4gJ1VuZ2dhaCcsCiAgICAnRmlsdGVycycgPT4gJ1NhcmluZycsCiAgICAnVmlkZW9zJyA9PiAnVmlkZW8nLAogICAgJ011c2ljJyA9PiAnTXVzaWsnLAogICAgJ05ld19Gb2xkZXInID0+ICdGb2xkZXIgQmFydScsCiAgICAnRm9sZGVyX0NyZWF0ZWQnID0+ICdGb2xkZXIgVGVsYWggRGlidWF0JywKICAgICdFeGlzdGluZ19Gb2xkZXInID0+ICdGb2xkZXIgeWFuZyBhZGEnLAogICAgJ0NvbmZpcm1fRm9sZGVyX2RlbCcgPT4gJ0FwYWthaCBhbmRhIHlha2luIG1lbmdoYXB1cyBmb2xkZXIgZGFuIHNlbXVhIGlzaSBkaWRhbGFtbnlhPycsCiAgICAnUmV0dXJuX0ZpbGVzX0xpc3QnID0+ICdLZW1iYWxpIGtlIGRhZnRhcicsCiAgICAnUHJldmlldycgPT4gJ1ByYXRhbXBpbCcsCiAgICAnRG93bmxvYWQnID0+ICdVbmR1aCcsCiAgICAnSW5zZXJ0X0ZvbGRlcl9OYW1lJyA9PiAnTWFzdWtrYW4gbmFtYSBmb2xkZXI6JywKICAgICdSb290JyA9PiAncm9vdCcsCiAgICAnUmVuYW1lJyA9PiAnVWJhaCBuYW1hJywKICAgICdCYWNrJyA9PiAna2VtYmFsaScsCiAgICAnVmlldycgPT4gJ2xpaGF0JywKICAgICdWaWV3X2xpc3QnID0+ICdUYW1waWxhbiBEYWZ0YXInLAogICAgJ1ZpZXdfY29sdW1uc19saXN0JyA9PiAnVGFtcGlsYW4gRGFmdGFyIGtvbG9tJywKICAgICdWaWV3X2JveGVzJyA9PiAnVGFtcGlsYW4gS290YWsnLAogICAgJ1Rvb2xiYXInID0+ICdUb29sYmFyJywKICAgICdBY3Rpb25zJyA9PiAnQWtzaScsCiAgICAnUmVuYW1lX2V4aXN0aW5nX2ZpbGUnID0+ICdCZXJrYXMgU3VkYWggYWRhJywKICAgICdSZW5hbWVfZXhpc3RpbmdfZm9sZGVyJyA9PiAnRm9sZGVyIHN1ZGFoIGFkYScsCiAgICAnRW1wdHlfbmFtZScgPT4gJ05hbWEgS29zb25nJywKICAgICdUZXh0X2ZpbHRlcicgPT4gJ3NhcmluZyB0ZWtzJywKICAgICdTd2lwZV9oZWxwJyA9PiAnQXJhaGthbiBwYWRhIG5hbWEgYmVya2FzL2ZvbGRlciB1bnR1ayBtZWxpaGF0IHBpbGloYW4nLAogICAgJ1VwbG9hZF9iYXNlJyA9PiAnQmFzaXMgVW5nZ2FoJywKICAgICdVcGxvYWRfYmFzZV9oZWxwJyA9PiAiRHJhZyAmIERyb3AgZmlsZXMobW9kZXJuIGJyb3dzZXJzKSBvciBjbGljayBpbiB1cHBlciBidXR0b24gdG8gQWRkIHRoZSBmaWxlKHMpIGFuZCBjbGljayBvbiBTdGFydCB1cGxvYWQuIFdoZW4gdGhlIHVwbG9hZCBpcyBjb21wbGV0ZSwgY2xpY2sgdGhlICdSZXR1cm4gdG8gZmlsZXMgbGlzdCcgYnV0dG9uLiIsCiAgICAnVXBsb2FkX2FkZF9maWxlcycgPT4gJ0FkZCBmaWxlKHMpJywKICAgICdVcGxvYWRfc3RhcnQnID0+ICdTdGFydCB1cGxvYWQnLAogICAgJ1VwbG9hZF9lcnJvcl9tZXNzYWdlcycgPT5hcnJheSgKICAgICAgICAxID0+ICdUaGUgdXBsb2FkZWQgZmlsZSBleGNlZWRzIHRoZSB1cGxvYWRfbWF4X2ZpbGVzaXplIGRpcmVjdGl2ZSBpbiBwaHAuaW5pJywKICAgICAgICAyID0+ICdUaGUgdXBsb2FkZWQgZmlsZSBleGNlZWRzIHRoZSBNQVhfRklMRV9TSVpFIGRpcmVjdGl2ZSB0aGF0IHdhcyBzcGVjaWZpZWQgaW4gdGhlIEhUTUwgZm9ybScsCiAgICAgICAgMyA9PiAnVGhlIHVwbG9hZGVkIGZpbGUgd2FzIG9ubHkgcGFydGlhbGx5IHVwbG9hZGVkJywKICAgICAgICA0ID0+ICdObyBmaWxlIHdhcyB1cGxvYWRlZCcsCiAgICAgICAgNiA9PiAnTWlzc2luZyBhIHRlbXBvcmFyeSBmb2xkZXInLAogICAgICAgIDcgPT4gJ0ZhaWxlZCB0byB3cml0ZSBmaWxlIHRvIGRpc2snLAogICAgICAgIDggPT4gJ0EgUEhQIGV4dGVuc2lvbiBzdG9wcGVkIHRoZSBmaWxlIHVwbG9hZCcsCiAgICAgICAgJ3Bvc3RfbWF4X3NpemUnID0+ICdUaGUgdXBsb2FkZWQgZmlsZSBleGNlZWRzIHRoZSBwb3N0X21heF9zaXplIGRpcmVjdGl2ZSBpbiBwaHAuaW5pJywKICAgICAgICAnbWF4X2ZpbGVfc2l6ZScgPT4gJ0ZpbGUgaXMgdG9vIGJpZycsCiAgICAgICAgJ21pbl9maWxlX3NpemUnID0+ICdGaWxlIGlzIHRvbyBzbWFsbCcsCiAgICAgICAgJ2FjY2VwdF9maWxlX3R5cGVzJyA9PiAnRmlsZXR5cGUgbm90IGFsbG93ZWQnLAogICAgICAgICdtYXhfbnVtYmVyX29mX2ZpbGVzJyA9PiAnTWF4aW11bSBudW1iZXIgb2YgZmlsZXMgZXhjZWVkZWQnLAogICAgICAgICdtYXhfd2lkdGgnID0+ICdJbWFnZSBleGNlZWRzIG1heGltdW0gd2lkdGgnLAogICAgICAgICdtaW5fd2lkdGgnID0+ICdJbWFnZSByZXF1aXJlcyBhIG1pbmltdW0gd2lkdGgnLAogICAgICAgICdtYXhfaGVpZ2h0JyA9PiAnSW1hZ2UgZXhjZWVkcyBtYXhpbXVtIGhlaWdodCcsCiAgICAgICAgJ21pbl9oZWlnaHQnID0+ICdJbWFnZSByZXF1aXJlcyBhIG1pbmltdW0gaGVpZ2h0JywKICAgICAgICAnYWJvcnQnID0+ICdGaWxlIHVwbG9hZCBhYm9ydGVkJywKICAgICAgICAnaW1hZ2VfcmVzaXplJyA9PiAnRmFpbGVkIHRvIHJlc2l6ZSBpbWFnZScKICAgICksCiAgICAnVXBsb2FkX3VybCcgPT4gJ0Zyb20gdXJsJywKICAgICdUeXBlX2RpcicgPT4gJ2RpcmVrdG9yaScsCiAgICAnVHlwZScgPT4gJ1RpcGUnLAogICAgJ0RpbWVuc2lvbicgPT4gJ0RpbWVuc2knLAogICAgJ1NpemUnID0+ICdVa3VyYW4nLAogICAgJ0RhdGUnID0+ICdUYW5nZ2FsJywKICAgICdGaWxlbmFtZScgPT4gJ05hbWFfYmVya2FzJywKICAgICdPcGVyYXRpb25zJyA9PiAnT3BlcmFzaScsCiAgICAnRGF0ZV90eXBlJyA9PiAneS1tLWQnLAogICAgJ09LJyA9PiAnT0snLAogICAgJ0NhbmNlbCcgPT4gJ0NhbmNlbCcsCiAgICAnU29ydGluZycgPT4gJ1NvcnRpcicsCiAgICAnU2hvd191cmwnID0+ICdsaWhhdCBVUkwnLAogICAgJ0V4dHJhY3QnID0+ICdleHRyYWN0IGRpc2luaScsCiAgICAnRmlsZV9pbmZvJyA9PiAnaW5mbyBiZXJrYXMnLAogICAgJ0VkaXRfaW1hZ2UnID0+ICdlZGl0IGdhbWJhcicsCiAgICAnRHVwbGljYXRlJyA9PiAnRHVwbGlrYXQnLAogICAgJ0ZvbGRlcnMnID0+ICdGb2xkZXJzJywKICAgICdDb3B5JyA9PiAnQ29weScsCiAgICAnQ3V0JyA9PiAnQ3V0JywKICAgICdQYXN0ZScgPT4gJ1Bhc3RlJywKICAgICdDQicgPT4gJ0NCJywgLy8gY2xpcGJvYXJkCiAgICAnUGFzdGVfSGVyZScgPT4gJ1Bhc3RlIHRvIHRoaXMgZGlyZWN0b3J5JywKICAgICdQYXN0ZV9Db25maXJtJyA9PiAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHBhc3RlIHRvIHRoaXMgZGlyZWN0b3J5PyBUaGlzIHdpbGwgb3ZlcndyaXRlIGV4aXN0aW5nIGZpbGVzL2ZvbGRlcnMgaWYgZW5jb3VudGVyZWQgYW55LicsCiAgICAnUGFzdGVfRmFpbGVkJyA9PiAnRmFpbGVkIHRvIHBhc3RlIGZpbGUocyknLAogICAgJ0NsZWFyX0NsaXBib2FyZCcgPT4gJ0NsZWFyIGNsaXBib2FyZCcsCiAgICAnQ2xlYXJfQ2xpcGJvYXJkX0NvbmZpcm0nID0+ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gY2xlYXIgdGhlIGNsaXBib2FyZD8nLAogICAgJ0ZpbGVzX09OX0NsaXBib2FyZCcgPT4gJ1RoZXJlIGFyZSBmaWxlcyBvbiB0aGUgY2xpcGJvYXJkLicsCiAgICAnQ29weV9DdXRfU2l6ZV9MaW1pdCcgPT4gJ1RoZSBzZWxlY3RlZCBmaWxlcy9mb2xkZXJzIGFyZSB0b28gYmlnIHRvICVzLiBMaW1pdDogJWQgTUIvb3BlcmF0aW9uJywgLy8gJXMgPSBjdXQgb3IgY29weQogICAgJ0NvcHlfQ3V0X0NvdW50X0xpbWl0JyA9PiAnWW91IHNlbGVjdGVkIHRvbyBtYW55IGZpbGVzL2ZvbGRlcnMgdG8gJXMuIExpbWl0OiAlZCBmaWxlcy9vcGVyYXRpb24nLCAvLyAlcyA9IGN1dCBvciBjb3B5CiAgICAnQ29weV9DdXRfTm90X0FsbG93ZWQnID0+ICdZb3UgYXJlIG5vdCBhbGxvd2VkIHRvICVzIGZpbGVzLicsIC8vICVzKDEpID0gY3V0IG9yIGNvcHksICVzKDIpID0gZmlsZXMgb3IgZm9sZGVycwogICAgJ0ltYWdlX0VkaXRvcl9Ob19TYXZlJyA9PiAnQ291bGQgbm90IHNhdmUgaW1hZ2UnLAogICAgJ0ltYWdlX0VkaXRvcl9FeGl0JyA9PiAiRXhpdCIsCiAgICAnSW1hZ2VfRWRpdG9yX1NhdmUnID0+ICJTYXZlIiwKICAgICdaaXBfTm9fRXh0cmFjdCcgPT4gJ0NvdWxkIG5vdCBleHRyYWN0LiBGaWxlIG1pZ2h0IGJlIGNvcnJ1cHQuJywKICAgICdaaXBfSW52YWxpZCcgPT4gJ1RoaXMgZXh0ZW5zaW9uIGlzIG5vdCBzdXBwb3J0ZWQuIFZhbGlkOiB6aXAsIGd6LCB0YXIuJywKICAgICdEaXJfTm9fV3JpdGUnID0+ICdUaGUgZGlyZWN0b3J5IHlvdSBzZWxlY3RlZCBpcyBub3Qgd3JpdGFibGUuJywKICAgICdGdW5jdGlvbl9EaXNhYmxlZCcgPT4gJ1RoZSAlcyBmdW5jdGlvbiBoYXMgYmVlbiBkaXNhYmxlZCBieSB0aGUgc2VydmVyLicsIC8vICVzID0gY3V0IG9yIGNvcHkKICAgICdGaWxlX1Blcm1pc3Npb24nID0+ICdGaWxlIHBlcm1pc3Npb24nLAogICAgJ0ZpbGVfUGVybWlzc2lvbl9Ob3RfQWxsb3dlZCcgPT4gJ0NoYW5naW5nICVzIHBlcm1pc3Npb25zIGFyZSBub3QgYWxsb3dlZC4nLCAvLyAlcyA9IGZpbGVzIG9yIGZvbGRlcnMKICAgICdGaWxlX1Blcm1pc3Npb25fUmVjdXJzaXZlJyA9PiAnQXBwbHkgcmVjdXJzaXZlbHk/JywKICAgICdGaWxlX1Blcm1pc3Npb25fV3JvbmdfTW9kZScgPT4gIlRoZSBzdXBwbGllZCBwZXJtaXNzaW9uIG1vZGUgaXMgaW5jb3JyZWN0LiIsCiAgICAnVXNlcicgPT4gJ1VzZXInLAogICAgJ0dyb3VwJyA9PiAnR3JvdXAnLAogICAgJ1llcycgPT4gJ1llcycsCiAgICAnTm8nID0+ICdObycsCiAgICAnTGFuZ19Ob3RfRm91bmQnID0+ICdDb3VsZCBub3QgZmluZCBsYW5ndWFnZS4nLAogICAgJ0xhbmdfQ2hhbmdlJyA9PiAnQ2hhbmdlIHRoZSBsYW5ndWFnZScsCiAgICAnRmlsZV9Ob3RfRm91bmQnID0+ICdDb3VsZCBub3QgZmluZCB0aGUgZmlsZS4nLAogICAgJ0ZpbGVfT3Blbl9FZGl0X05vdF9BbGxvd2VkJyA9PiAnWW91IGFyZSBub3QgYWxsb3dlZCB0byAlcyB0aGlzIGZpbGUuJywgLy8gJXMgPSBvcGVuIG9yIGVkaXQKICAgICdFZGl0JyA9PiAnRWRpdCcsCiAgICAnRWRpdF9GaWxlJyA9PiAiRWRpdCBmaWxlJ3MgY29udGVudCIsCiAgICAnRmlsZV9TYXZlX09LJyA9PiAiRmlsZSBzdWNjZXNzZnVsbHkgc2F2ZWQuIiwKICAgICdGaWxlX1NhdmVfRXJyb3InID0+ICJUaGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgc2F2aW5nIHRoZSBmaWxlLiIsCiAgICAnTmV3X0ZpbGUnID0+ICdOZXcgRmlsZScsCiAgICAnTm9fRXh0ZW5zaW9uJyA9PiAnWW91IGhhdmUgdG8gYWRkIGEgZmlsZSBleHRlbnNpb24uJywKICAgICdWYWxpZF9FeHRlbnNpb25zJyA9PiAnVmFsaWQgZXh0ZW5zaW9uczogJXMnLCAvLyAlcyA9IHR4dCxsb2cgZXRjLgogICAgJ1VwbG9hZF9tZXNzYWdlJyA9PiAiRHJvcCBmaWxlIGhlcmUgdG8gdXBsb2FkIiwKCiAgICAnU0VSVkVSIEVSUk9SJyA9PiAiU0VSVkVSIEVSUk9SIiwKICAgICdmb3JiaWRkZW4nID0+ICJGb3JiaWRlbiIsCiAgICAnd3JvbmcgcGF0aCcgPT4gIldyb25nIHBhdGgiLAogICAgJ3dyb25nIG5hbWUnID0+ICJXcm9uZyBuYW1lIiwKICAgICd3cm9uZyBleHRlbnNpb24nID0+ICJXcm9uZyBleHRlbnNpb24iLAogICAgJ3dyb25nIG9wdGlvbicgPT4gIldyb25nIG9wdGlvbiIsCiAgICAnd3JvbmcgZGF0YScgPT4gIldyb25nIGRhdGEiLAogICAgJ3dyb25nIGFjdGlvbicgPT4gIldyb25nIGFjdGlvbiIsCiAgICAnd3Jvbmcgc3ViLWFjdGlvbicgPT4gIldyb25nIHN1Yi1hY3RpbyIsCiAgICAnbm8gYWN0aW9uIHBhc3NlZCcgPT4gIk5vIGFjdGlvbiBwYXNzZWQiLAogICAgJ25vIHBhdGgnID0+ICJObyBwYXRoIiwKICAgICdubyBmaWxlJyA9PiAiTm8gZmlsZSIsCiAgICAndmlldyB0eXBlIG51bWJlciBtaXNzaW5nJyA9PiAiVmlldyB0eXBlIG51bWJlciBtaXNzaW5nIiwKICAgICdOb3QgZW5vdWdoIE1lbW9yeScgPT4gIk5vdCBlbm91Z2ggTWVtb3J5IiwKICAgICdtYXhfc2l6ZV9yZWFjaGVkJyA9PiAiWW91ciBpbWFnZSBmb2xkZXIgaGFzIHJlYWNoIGl0cyBtYXhpbWFsZSBzaXplIG9mICVkIE1CLiIsIC8vJWQgPSBtYXggb3ZlcmFsbCBzaXplCiAgICAnQicgPT4gIkIiLAogICAgJ0tCJyA9PiAiS0IiLAogICAgJ01CJyA9PiAiTUIiLAogICAgJ0dCJyA9PiAiR0IiLAogICAgJ1RCJyA9PiAiVEIiLAogICAgJ3RvdGFsIHNpemUnID0+ICJUb3RhbCBzaXplIiwKKTsK]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/lang/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/lang/it.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJldHVybiBhcnJheSgKCiAgICAnU2VsZWN0JyA9PiAnU2VsZXppb25hJywKICAgICdEZXNlbGVjdF9BbGwnID0+ICdEZXNlbGVjdCBBbGwnLAogICAgJ1NlbGVjdF9BbGwnID0+ICdTZWxlY3QgQWxsJywKICAgICdFcmFzZScgPT4gJ0NhbmNlbGxhJywKICAgICdPcGVuJyA9PiAnQXByaScsCiAgICAnQ29uZmlybV9kZWwnID0+ICdTZWkgc2ljdXJvIGRpIHZvbGVyZSBjYW5jZWxsYXJlIHF1ZXN0byBmaWxlPycsCiAgICAnQWxsJyA9PiAnVHV0dGknLAogICAgJ0ZpbGVzJyA9PiAnRmlsZScsCiAgICAnSW1hZ2VzJyA9PiAnSW1tYWdpbmknLAogICAgJ0FyY2hpdmVzJyA9PiAnQXJjaGl2aScsCiAgICAnRXJyb3JfVXBsb2FkJyA9PiAnSWwgZmlsZSBjYXJpY2F0byBzdXBlcmEgaSBsaW1pdGkgaW1wb3N0aS4nLAogICAgJ0Vycm9yX2V4dGVuc2lvbicgPT4gJ0lsIHRpcG8gZGVsIGZpbGUgY2FyaWNhdG8gbm9uIMOoIHBlcm1lc3NvLicsCiAgICAnVXBsb2FkX2ZpbGUnID0+ICdDYXJpY2EnLAogICAgJ0ZpbHRlcnMnID0+ICdGaWx0cmknLAogICAgJ1ZpZGVvcycgPT4gJ1ZpZGVvJywKICAgICdNdXNpYycgPT4gJ011c2ljYScsCiAgICAnTmV3X0ZvbGRlcicgPT4gJ051b3ZhIENhcnRlbGxhJywKICAgICdGb2xkZXJfQ3JlYXRlZCcgPT4gJ0NhcnRlbGxhIGNyZWF0YSBjb3JyZXR0YW1lbnRlJywKICAgICdFeGlzdGluZ19Gb2xkZXInID0+ICdDYXJ0ZWxsYSBnacOgIGVzaXN0ZW50ZScsCiAgICAnQ29uZmlybV9Gb2xkZXJfZGVsJyA9PiAnU2VpIHNpY3VybyBkaSB2b2xlciBjYW5jZWxsYXJlIGxhIGNhcnRlbGxhIGUgdHV0dGkgaSBmaWxlIGluIGVzc2EgY29udGVudXRpPycsCiAgICAnUmV0dXJuX0ZpbGVzX0xpc3QnID0+ICdSaXRvcm5hIGFsbGEgbGlzdGEgZGVpIGZpbGUnLAogICAgJ1ByZXZpZXcnID0+ICdBbnRlcHJpbWEnLAogICAgJ0Rvd25sb2FkJyA9PiAnRG93bmxvYWQnLAogICAgJ0luc2VydF9Gb2xkZXJfTmFtZScgPT4gJ0luc2VyaXNjaSBpbCBub21lIGRlbGxhIGNhcnRlbGxhOicsCiAgICAnUm9vdCcgPT4gJ2Jhc2UnLAogICAgJ1JlbmFtZScgPT4gJ1Jpbm9taW5hJywKICAgICdCYWNrJyA9PiAnaW5kaWV0cm8nLAogICAgJ1ZpZXcnID0+ICdWaXN0YScsCiAgICAnVmlld19saXN0JyA9PiAnVmlzdGEgYSBsaXN0YScsCiAgICAnVmlld19jb2x1bW5zX2xpc3QnID0+ICdWaXN0YSBhIGNvbG9ubmUnLAogICAgJ1ZpZXdfYm94ZXMnID0+ICdWaXN0YSBhIGJveCcsCiAgICAnVG9vbGJhcicgPT4gJ1Rvb2xiYXInLAogICAgJ0FjdGlvbnMnID0+ICdBemlvbmknLAogICAgJ1JlbmFtZV9leGlzdGluZ19maWxlJyA9PiAnSWwgZmlsZSBlc2lzdGUgZ2nDoCcsCiAgICAnUmVuYW1lX2V4aXN0aW5nX2ZvbGRlcicgPT4gJ0xhIGNhcnRlbGxhIGVzaXN0ZSBnacOgJywKICAgICdFbXB0eV9uYW1lJyA9PiAnSWwgbm9tZSDDqCB2dW90bycsCiAgICAnVGV4dF9maWx0ZXInID0+ICdmaWx0cm8gZGkgdGVzdG8nLAogICAgJ1N3aXBlX2hlbHAnID0+ICdFc2VndWkgdW5vIFN3aXBlIHN1bCBub21lIGRlbCBmaWxlL2NhcnRlbGxhIHBlciBtb3N0cmFyZSBsZSBvcHppb25pJywKICAgICdVcGxvYWRfYmFzZScgPT4gJ1VwbG9hZCBCYXNlJywKICAgICdVcGxvYWRfYWRkX2ZpbGVzJyA9PiAnQWdnaXVuZ2kgZmlsZScsCiAgICAnVXBsb2FkX3N0YXJ0JyA9PiAiRXNlZ3VpIGwndXBsb2FkIiwKICAgICdVcGxvYWRfYmFzZV9oZWxwJyA9PiAiVHJhc2NpbmEgaSBmaWxlIG5lbGwnYXJlYSBzdXBlcmlvcmUgKHBlciBpIG1vZGVybmkgYnJvd3NlcikgbyBjbGljY2Egc3VsIGJvdHRvbmUgXCJBZ2dpdW5naSBmaWxlXCIgZSBjbGljY2Egc3VsIGJvdHRvbmUgXCJFc2VndWkgbCd1cGxvYWRcIi4gIFF1YW5kbyBpbCBjYXJpY2FtZW50byBkZWkgZmlsZSDDqCB0ZXJtaW5hdG8gY2xpY2NhIHN1bCBib3R0b25lIGRpIHJpdG9ybm8gaW4gYWx0by4iLAogICAgJ1VwbG9hZF9lcnJvcl9tZXNzYWdlcycgPT5hcnJheSgKICAgICAgICAxID0+ICdUaGUgdXBsb2FkZWQgZmlsZSBleGNlZWRzIHRoZSB1cGxvYWRfbWF4X2ZpbGVzaXplIGRpcmVjdGl2ZSBpbiBwaHAuaW5pJywKICAgICAgICAyID0+ICdUaGUgdXBsb2FkZWQgZmlsZSBleGNlZWRzIHRoZSBNQVhfRklMRV9TSVpFIGRpcmVjdGl2ZSB0aGF0IHdhcyBzcGVjaWZpZWQgaW4gdGhlIEhUTUwgZm9ybScsCiAgICAgICAgMyA9PiAnVGhlIHVwbG9hZGVkIGZpbGUgd2FzIG9ubHkgcGFydGlhbGx5IHVwbG9hZGVkJywKICAgICAgICA0ID0+ICdObyBmaWxlIHdhcyB1cGxvYWRlZCcsCiAgICAgICAgNiA9PiAnTWlzc2luZyBhIHRlbXBvcmFyeSBmb2xkZXInLAogICAgICAgIDcgPT4gJ0ZhaWxlZCB0byB3cml0ZSBmaWxlIHRvIGRpc2snLAogICAgICAgIDggPT4gJ0EgUEhQIGV4dGVuc2lvbiBzdG9wcGVkIHRoZSBmaWxlIHVwbG9hZCcsCiAgICAgICAgJ3Bvc3RfbWF4X3NpemUnID0+ICdUaGUgdXBsb2FkZWQgZmlsZSBleGNlZWRzIHRoZSBwb3N0X21heF9zaXplIGRpcmVjdGl2ZSBpbiBwaHAuaW5pJywKICAgICAgICAnbWF4X2ZpbGVfc2l6ZScgPT4gJ0ZpbGUgaXMgdG9vIGJpZycsCiAgICAgICAgJ21pbl9maWxlX3NpemUnID0+ICdGaWxlIGlzIHRvbyBzbWFsbCcsCiAgICAgICAgJ2FjY2VwdF9maWxlX3R5cGVzJyA9PiAnRmlsZXR5cGUgbm90IGFsbG93ZWQnLAogICAgICAgICdtYXhfbnVtYmVyX29mX2ZpbGVzJyA9PiAnTWF4aW11bSBudW1iZXIgb2YgZmlsZXMgZXhjZWVkZWQnLAogICAgICAgICdtYXhfd2lkdGgnID0+ICdJbWFnZSBleGNlZWRzIG1heGltdW0gd2lkdGgnLAogICAgICAgICdtaW5fd2lkdGgnID0+ICdJbWFnZSByZXF1aXJlcyBhIG1pbmltdW0gd2lkdGgnLAogICAgICAgICdtYXhfaGVpZ2h0JyA9PiAnSW1hZ2UgZXhjZWVkcyBtYXhpbXVtIGhlaWdodCcsCiAgICAgICAgJ21pbl9oZWlnaHQnID0+ICdJbWFnZSByZXF1aXJlcyBhIG1pbmltdW0gaGVpZ2h0JywKICAgICAgICAnYWJvcnQnID0+ICdGaWxlIHVwbG9hZCBhYm9ydGVkJywKICAgICAgICAnaW1hZ2VfcmVzaXplJyA9PiAnRmFpbGVkIHRvIHJlc2l6ZSBpbWFnZScKICAgICksCiAgICAnVXBsb2FkX3VybCcgPT4gJ1VSTCcsCiAgICAnVHlwZV9kaXInID0+ICdkaXInLAogICAgJ1R5cGUnID0+ICdUaXBvJywKICAgICdEaW1lbnNpb24nID0+ICdEaW1lbnNpb25lJywKICAgICdTaXplJyA9PiAnUGVzbycsCiAgICAnRGF0ZScgPT4gJ0RhdGEnLAogICAgJ0ZpbGVuYW1lJyA9PiAnTm9tZScsCiAgICAnT3BlcmF0aW9ucycgPT4gJ09wZXJhemlvbmknLAogICAgJ0RhdGVfdHlwZScgPT4gJ2QvbS95JywKICAgICdPSycgPT4gJ09LJywKICAgICdDYW5jZWwnID0+ICdBbm51bGxhJywKICAgICdTb3J0aW5nJyA9PiAnb3JkaW5hJywKICAgICdTaG93X3VybCcgPT4gJ01vc3RyYSBVUkwnLAogICAgJ0V4dHJhY3QnID0+ICdlc3RyYWkgcXVpJywKICAgICdGaWxlX2luZm8nID0+ICdpbmZvcm1hemlvbmkgZmlsZScsCiAgICAnRWRpdF9pbWFnZScgPT4gJ01vZGlmaWNhIGltbWFnaW5lJywKICAgICdEdXBsaWNhdGUnID0+ICdEdXBsaWNhJywKICAgICdGb2xkZXJzJyA9PiAnQ2FydGVsbGUnLAogICAgJ0NvcHknID0+ICdDb3BpYScsCiAgICAnQ3V0JyA9PiAnVGFnbGlhJywKICAgICdQYXN0ZScgPT4gJ0luY29sbGEnLAogICAgJ0NCJyA9PiAnQ0InLCAvLyBjbGlwYm9hcmQKICAgICdQYXN0ZV9IZXJlJyA9PiAnSW5jb2xsYSBzdSBxdWVzdGEgY2FydGVsbGEnLAogICAgJ1Bhc3RlX0NvbmZpcm0nID0+ICdTZWkgc2ljdXJvIGRpIHZvbGVyIGluY29sbGFyZSBpbiBxdWVzdGEgY2FydGVsbGE/IFF1ZXN0byBmaWxlIHNvdnJhc2NyaXZlcsOgIGkgZmlsZS9jYXJ0ZWxsZSBlc2lzdGVudGkgcXVhbFwnb3JhIGNpIGZvc3Nlcm8uJywKICAgICdQYXN0ZV9GYWlsZWQnID0+ICdFcnJvcmUgbmVsbFwnaW5jb2xsYXJlIGlsL2kgZmlsZScsCiAgICAnQ2xlYXJfQ2xpcGJvYXJkJyA9PiAnUHVsaXNjaSBjbGlwYm9hcmQnLAogICAgJ0NsZWFyX0NsaXBib2FyZF9Db25maXJtJyA9PiAnU2VpIHNpY3VybyBkaSB2b2xlciBjYW5jZWxsYXJlIGxhIGNsaXBib2FyZD8nLAogICAgJ0ZpbGVzX09OX0NsaXBib2FyZCcgPT4gJ0NpIHNvbm8gZmlsZSBuZWxsYSBjbGlwYm9hcmQuJywKICAgICdDb3B5X0N1dF9TaXplX0xpbWl0JyA9PiAnSSBmaWxlIG8gY2FydGVsbGUgc2VsZXppb25hdGkgc29ubyB0cm9wcG8gZ3JhbmRpIHBlciAlcy4gSWwgbGltaXRlIMOoOiAlZCBNQi9vcGVyYXppb25lJywgLy8gJXMgPSBjdXQgb3IgY29weQogICAgJ0NvcHlfQ3V0X0NvdW50X0xpbWl0JyA9PiAnSGFpIHNlbGV6aW9uYXRvIHRyb3BwaSBmaWxlL2NhcnRlbGxlIGRhICVzLiBJbCBsaW1pdGUgw6g6ICVkIGZpbGUvb3BlcmF6aW9uZScsIC8vICVzID0gY3V0IG9yIGNvcHkKICAgICdDb3B5X0N1dF9Ob3RfQWxsb3dlZCcgPT4gJ05vbiBoYWkgaSBwZXJtZXNzaSBwZXIgJXMgJXMuJywgLy8gJXMoMSkgPSBjdXQgb3IgY29weSwgJXMoMikgPSBmaWxlcyBvciBmb2xkZXJzCiAgICAnSW1hZ2VfRWRpdG9yX05vX1NhdmUnID0+ICdOb24gw6ggc3RhdG8gcG9zc2liaWxlIHNhbHZhcmUgbFwnaW1tYWdpbmUnLAogICAgJ0ltYWdlX0VkaXRvcl9FeGl0JyA9PiAiRXNjaSIsCiAgICAnSW1hZ2VfRWRpdG9yX1NhdmUnID0+ICJTYWx2YSIsCiAgICAnWmlwX05vX0V4dHJhY3QnID0+ICdOb24gc2kgcHXDsiBlc3RyYXJyZSBpbCBwYWNjaGV0dG8gcGVyY2jDqCBzZW1icmEgY29ycm90dG8nLAogICAgJ1ppcF9JbnZhbGlkJyA9PiAnUXVlc3RhIGVzdGVuc2lvbmUgbm9uIMOoIHN1cHBvcnRhdGEuIExlIGVzdGVuc2lvbmkgdmFsaWRlIHNvbm86IHppcCwgZ3osIHRhci4nLAogICAgJ0Rpcl9Ob19Xcml0ZScgPT4gJ0xhIGNhcnRlbGxhIHNlbGV6aW9uYXRhIG5vbiDDqCBzY3JpdmliaWxlLicsCiAgICAnRnVuY3Rpb25fRGlzYWJsZWQnID0+ICdMYSBmdW56aW9uZSAlcyDDqCBzdGF0YSBkaXNhYmlsaXRhdGEuJywgLy8gJXMgPSBjdXQgb3IgY29weQogICAgJ0ZpbGVfUGVybWlzc2lvbicgPT4gJ1Blcm1lc3NpIGZpbGUnLAogICAgJ0ZpbGVfUGVybWlzc2lvbl9Ob3RfQWxsb3dlZCcgPT4gJ0lsIGNhbWJpYW1lbnRvIGRlaSBwZXJtZXNzaSBkaSAlcyBub24gw6ggcGVybWVzc28uJywgLy8gJXMgPSBmaWxlcyBvciBmb2xkZXJzCiAgICAnRmlsZV9QZXJtaXNzaW9uX1JlY3Vyc2l2ZScgPT4gJ0FwcGxpY2Egcmljb3JzaXZhbWVudGU/JywKICAgICdGaWxlX1Blcm1pc3Npb25fV3JvbmdfTW9kZScgPT4gIkxhIG1vZGFsaXTDoCBkaSBhdXRvcml6emF6aW9uZSBub24gw6ggY29ycmV0dGEuIiwKICAgICdVc2VyJyA9PiAnVXRlbnRlJywKICAgICdHcm91cCcgPT4gJ0dydXBwbycsCiAgICAnWWVzJyA9PiAnU2knLAogICAgJ05vJyA9PiAnTm8nLAogICAgJ0xhbmdfTm90X0ZvdW5kJyA9PiAnTGEgbGluZ3VhIG5vbiDDqCBzdGF0YSB0cm92YXRhLicsCiAgICAnTGFuZ19DaGFuZ2UnID0+ICdDYW1iaWEgbGEgbGluZ3VhJywKICAgICdGaWxlX05vdF9Gb3VuZCcgPT4gJ0lsIGZpbGUgbm9uIMOoIHN0YXRvIHRyb3ZhdG8uJywKICAgICdGaWxlX09wZW5fRWRpdF9Ob3RfQWxsb3dlZCcgPT4gJ05vbiBoYWkgaWwgcGVybWVzc28gZGkgJXMgcXVlc3RvIGZpbGUuJywgLy8gJXMgPSBvcGVuIG9yIGVkaXQKICAgICdFZGl0JyA9PiAnTW9kaWZpY2EnLAogICAgJ0VkaXRfRmlsZScgPT4gIk1vZGlmaWNhIGlsIGNvbnRlbnV0byBkaSBxdWVzdG8gZmlsZSIsCiAgICAnRmlsZV9TYXZlX09LJyA9PiAiSWwgZmlsZSDDqCBzdGF0byBzYWx2YXRvIGNvbiBzdWNjZXNzby4iLAogICAgJ0ZpbGVfU2F2ZV9FcnJvcicgPT4gIkMnw6ggc3RhdG8gdW4gZXJyb3JlIG5lbCBzYWx2YXRhZ2dpbyBkZWwgZmlsZS4iLAogICAgJ05ld19GaWxlJyA9PiAnTnVvdm8gZmlsZScsCiAgICAnTm9fRXh0ZW5zaW9uJywiTm9uIGhhaSBpbnNlcml0byBsJ2VzdGVuc2lvbmUgZGVsIGZpbGUuIiwKICAgICdWYWxpZF9FeHRlbnNpb25zJyA9PiAnRXN0ZW5zaW9uaSB2YWxpZGU6ICVzJywgLy8gJXMgPSB0eHQsbG9nIGV0Yy4KICAgICdVcGxvYWRfbWVzc2FnZScgPT4gIlRyYXNjaW5hIHF1aSBpIGZpbGUgcGVyIGwndXBsb2FkIiwKCiAgICAnU0VSVkVSIEVSUk9SJyA9PiAiU0VSVkVSIEVSUk9SIiwKICAgICdmb3JiaWRkZW4nID0+ICJGb3JiaWRlbiIsCiAgICAnd3JvbmcgcGF0aCcgPT4gIldyb25nIHBhdGgiLAogICAgJ3dyb25nIG5hbWUnID0+ICJXcm9uZyBuYW1lIiwKICAgICd3cm9uZyBleHRlbnNpb24nID0+ICJXcm9uZyBleHRlbnNpb24iLAogICAgJ3dyb25nIG9wdGlvbicgPT4gIldyb25nIG9wdGlvbiIsCiAgICAnd3JvbmcgZGF0YScgPT4gIldyb25nIGRhdGEiLAogICAgJ3dyb25nIGFjdGlvbicgPT4gIldyb25nIGFjdGlvbiIsCiAgICAnd3Jvbmcgc3ViLWFjdGlvbicgPT4gIldyb25nIHN1Yi1hY3RpbyIsCiAgICAnbm8gYWN0aW9uIHBhc3NlZCcgPT4gIk5vIGFjdGlvbiBwYXNzZWQiLAogICAgJ25vIHBhdGgnID0+ICJObyBwYXRoIiwKICAgICdubyBmaWxlJyA9PiAiTm8gZmlsZSIsCiAgICAndmlldyB0eXBlIG51bWJlciBtaXNzaW5nJyA9PiAiVmlldyB0eXBlIG51bWJlciBtaXNzaW5nIiwKICAgICdOb3QgZW5vdWdoIE1lbW9yeScgPT4gIk5vdCBlbm91Z2ggTWVtb3J5IiwKICAgICdtYXhfc2l6ZV9yZWFjaGVkJyA9PiAiWW91ciBpbWFnZSBmb2xkZXIgaGFzIHJlYWNoIGl0cyBtYXhpbWFsZSBzaXplIG9mICVkIE1CLiIsIC8vJWQgPSBtYXggb3ZlcmFsbCBzaXplCiAgICAnQicgPT4gIkIiLAogICAgJ0tCJyA9PiAiS0IiLAogICAgJ01CJyA9PiAiTUIiLAogICAgJ0dCJyA9PiAiR0IiLAogICAgJ1RCJyA9PiAiVEIiLAogICAgJ3RvdGFsIHNpemUnID0+ICJUb3RhbCBzaXplIgopOwo=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/lang/ja.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJldHVybiBhcnJheSgKCiAgICAnU2VsZWN0JyA9PiAn6YG45oqeJywKICAgICdEZXNlbGVjdF9BbGwnID0+ICdEZXNlbGVjdCBBbGwnLAogICAgJ1NlbGVjdF9BbGwnID0+ICdTZWxlY3QgQWxsJywKICAgICdFcmFzZScgPT4gJ+a2iOWOuycsCiAgICAnT3BlbicgPT4gJ+mWi+OBjycsCiAgICAnQ29uZmlybV9kZWwnID0+ICfjgZPjga7jg5XjgqHjgqTjg6vjgpLliYrpmaTjgZfjgb7jgZnjgYs/JywKICAgICdBbGwnID0+ICflhajjgaYnLAogICAgJ0ZpbGVzJyA9PiAn44OV44Kh44Kk44OrJywKICAgICdJbWFnZXMnID0+ICfjgqTjg6Hjg7zjgrgnLAogICAgJ0FyY2hpdmVzJyA9PiAn44Ki44O844Kr44Kk44OWJywKICAgICdFcnJvcl9VcGxvYWQnID0+ICfjgqLjg4Pjg5fjg63jg7zjg4nlj6/og73jgarmnIDlpKfjgrXjgqTjgrrjgpLotoXjgYjjgabjgYTjgb7jgZnjgIInLAogICAgJ0Vycm9yX2V4dGVuc2lvbicgPT4gJ+aLoeW8teWtkOOBjOioseWPr+OBleOCjOOBpuOBhOOBvuOBm+OCk+OAgicsCiAgICAnVXBsb2FkX2ZpbGUnID0+ICfjgqLjg4Pjg5fjg63jg7zjg4knLAogICAgJ0ZpbHRlcnMnID0+ICfjg5XjgqPjg6vjgr8nLAogICAgJ1ZpZGVvcycgPT4gJ+ODk+ODh+OCqicsCiAgICAnTXVzaWMnID0+ICfpn7Pmpb0nLAogICAgJ05ld19Gb2xkZXInID0+ICfmlrDopo/jg5Xjgqnjg6vjg4AnLAogICAgJ0ZvbGRlcl9DcmVhdGVkJyA9PiAn44OV44Kp44Or44OA44KS5L2c5oiQ44GX44G+44GX44GfJywKICAgICdFeGlzdGluZ19Gb2xkZXInID0+ICflrZjlnKjjgZnjgovjg5Xjgqnjg6vjg4AnLAogICAgJ0NvbmZpcm1fRm9sZGVyX2RlbCcgPT4gJ+ODleOCqeODq+ODgOOBqOODleOCqeODq+ODgOOBruS4rei6q+OCkuWJiumZpOOBl+OBvuOBmeOBiz8nLAogICAgJ1JldHVybl9GaWxlc19MaXN0JyA9PiAn44OV44Kh44Kk44Or44Gu5LiA6Kan44Gr5oi744KLJywKICAgICdQcmV2aWV3JyA9PiAn44OX44Os44OT44Ol44O8JywKICAgICdEb3dubG9hZCcgPT4gJ+ODgOOCpuODs+ODreODvOODiScsCiAgICAnSW5zZXJ0X0ZvbGRlcl9OYW1lJyA9PiAn44OV44Kp44Or44OA5ZCN44Gu6L+95YqgJywKICAgICdSb290JyA9PiAn44Or44O844OIJywKICAgICdSZW5hbWUnID0+ICflkI3np7DlpInmm7QnLAogICAgJ0JhY2snID0+ICfmiLvjgosnLAogICAgJ1ZpZXcnID0+ICfjg5Pjg6Xjg7wnLAogICAgJ1ZpZXdfbGlzdCcgPT4gJ+S4gOimp+ihqOekuicsCiAgICAnVmlld19jb2x1bW5zX2xpc3QnID0+ICfjgqvjg6njg6DooajnpLonLAogICAgJ1ZpZXdfYm94ZXMnID0+ICfjg5zjg4Pjgq/jgrnooajnpLonLAogICAgJ1Rvb2xiYXInID0+ICfjg4Tjg7zjg6vjg5Djg7wnLAogICAgJ0FjdGlvbnMnID0+ICfjgqLjgq/jgrfjg6fjg7MnLAogICAgJ1JlbmFtZV9leGlzdGluZ19maWxlJyA9PiAn44GT44Gu44OV44Kh44Kk44Or44Gv44GZ44Gn44Gr5a2Y5Zyo44GX44Gm44GE44G+44GZ44CCJywKICAgICdSZW5hbWVfZXhpc3RpbmdfZm9sZGVyJyA9PiAn44GT44Gu44OV44Kp44Or44OA44Gv44GZ44Gn44Gr5a2Y5Zyo44GX44Gm44GE44G+44GZ44CCJywKICAgICdFbXB0eV9uYW1lJyA9PiAn5ZCN5YmN44GM56m644Gn44GZJywKICAgICdUZXh0X2ZpbHRlcicgPT4gJ+ODhuOCreOCueODiOODleOCo+ODq+OCvycsCiAgICAnU3dpcGVfaGVscCcgPT4gJ+ODleOCoeOCpOODq+ODu+ODleOCqeODq+ODgOWQjeOCkuOCueODr+OCpOODl+OBl+OBpuOCquODl+OCt+ODp+ODs+OCkuihqOekuuOBmeOCiycsCiAgICAnVXBsb2FkX2Jhc2UnID0+ICfmqJnmupbjgqLjg4Pjg5fjg63jg7zjg4knLAogICAgJ1VwbG9hZF9iYXNlX2hlbHAnID0+ICJEcmFnICYgRHJvcCBmaWxlcyhtb2Rlcm4gYnJvd3NlcnMpIG9yIGNsaWNrIGluIHVwcGVyIGJ1dHRvbiB0byBBZGQgdGhlIGZpbGUocykgYW5kIGNsaWNrIG9uIFN0YXJ0IHVwbG9hZC4gV2hlbiB0aGUgdXBsb2FkIGlzIGNvbXBsZXRlLCBjbGljayB0aGUgJ1JldHVybiB0byBmaWxlcyBsaXN0JyBidXR0b24uIiwKICAgICdVcGxvYWRfYWRkX2ZpbGVzJyA9PiAnQWRkIGZpbGUocyknLAogICAgJ1VwbG9hZF9zdGFydCcgPT4gJ1N0YXJ0IHVwbG9hZCcsCiAgICAnVXBsb2FkX2Vycm9yX21lc3NhZ2VzJyA9PmFycmF5KAogICAgICAgIDEgPT4gJ1RoZSB1cGxvYWRlZCBmaWxlIGV4Y2VlZHMgdGhlIHVwbG9hZF9tYXhfZmlsZXNpemUgZGlyZWN0aXZlIGluIHBocC5pbmknLAogICAgICAgIDIgPT4gJ1RoZSB1cGxvYWRlZCBmaWxlIGV4Y2VlZHMgdGhlIE1BWF9GSUxFX1NJWkUgZGlyZWN0aXZlIHRoYXQgd2FzIHNwZWNpZmllZCBpbiB0aGUgSFRNTCBmb3JtJywKICAgICAgICAzID0+ICdUaGUgdXBsb2FkZWQgZmlsZSB3YXMgb25seSBwYXJ0aWFsbHkgdXBsb2FkZWQnLAogICAgICAgIDQgPT4gJ05vIGZpbGUgd2FzIHVwbG9hZGVkJywKICAgICAgICA2ID0+ICdNaXNzaW5nIGEgdGVtcG9yYXJ5IGZvbGRlcicsCiAgICAgICAgNyA9PiAnRmFpbGVkIHRvIHdyaXRlIGZpbGUgdG8gZGlzaycsCiAgICAgICAgOCA9PiAnQSBQSFAgZXh0ZW5zaW9uIHN0b3BwZWQgdGhlIGZpbGUgdXBsb2FkJywKICAgICAgICAncG9zdF9tYXhfc2l6ZScgPT4gJ1RoZSB1cGxvYWRlZCBmaWxlIGV4Y2VlZHMgdGhlIHBvc3RfbWF4X3NpemUgZGlyZWN0aXZlIGluIHBocC5pbmknLAogICAgICAgICdtYXhfZmlsZV9zaXplJyA9PiAnRmlsZSBpcyB0b28gYmlnJywKICAgICAgICAnbWluX2ZpbGVfc2l6ZScgPT4gJ0ZpbGUgaXMgdG9vIHNtYWxsJywKICAgICAgICAnYWNjZXB0X2ZpbGVfdHlwZXMnID0+ICdGaWxldHlwZSBub3QgYWxsb3dlZCcsCiAgICAgICAgJ21heF9udW1iZXJfb2ZfZmlsZXMnID0+ICdNYXhpbXVtIG51bWJlciBvZiBmaWxlcyBleGNlZWRlZCcsCiAgICAgICAgJ21heF93aWR0aCcgPT4gJ0ltYWdlIGV4Y2VlZHMgbWF4aW11bSB3aWR0aCcsCiAgICAgICAgJ21pbl93aWR0aCcgPT4gJ0ltYWdlIHJlcXVpcmVzIGEgbWluaW11bSB3aWR0aCcsCiAgICAgICAgJ21heF9oZWlnaHQnID0+ICdJbWFnZSBleGNlZWRzIG1heGltdW0gaGVpZ2h0JywKICAgICAgICAnbWluX2hlaWdodCcgPT4gJ0ltYWdlIHJlcXVpcmVzIGEgbWluaW11bSBoZWlnaHQnLAogICAgICAgICdhYm9ydCcgPT4gJ0ZpbGUgdXBsb2FkIGFib3J0ZWQnLAogICAgICAgICdpbWFnZV9yZXNpemUnID0+ICdGYWlsZWQgdG8gcmVzaXplIGltYWdlJwogICAgKSwKICAgICdVcGxvYWRfdXJsJyA9PiAnRnJvbSB1cmwnLAogICAgJ1R5cGVfZGlyJyA9PiAn44OH44Kj44Os44Kv44OI44OqJywKICAgICdUeXBlJyA9PiAn56iu6aGeJywKICAgICdEaW1lbnNpb24nID0+ICfnlLvlg4/jgrXjgqTjgronLAogICAgJ1NpemUnID0+ICfjgrXjgqTjgronLAogICAgJ0RhdGUnID0+ICfml6Xku5gnLAogICAgJ0ZpbGVuYW1lJyA9PiAn44OV44Kh44Kk44Or5ZCNJywKICAgICdPcGVyYXRpb25zJyA9PiAn5pON5L2cJywKICAgICdEYXRlX3R5cGUnID0+ICdZL20vZCcsCiAgICAnT0snID0+ICdPSycsCiAgICAnQ2FuY2VsJyA9PiAn44Kt44Oj44Oz44K744OrJywKICAgICdTb3J0aW5nJyA9PiAn44K944O844OIJywKICAgICdTaG93X3VybCcgPT4gJ1VSTOihqOekuicsCiAgICAnRXh0cmFjdCcgPT4gJ+OBk+OBk+OBq+ino+WHjScsCiAgICAnRmlsZV9pbmZvJyA9PiAn44OV44Kh44Kk44Or5oOF5aCxJywKICAgICdFZGl0X2ltYWdlJyA9PiAn55S75YOP57eo6ZuGJywKICAgICdEdXBsaWNhdGUnID0+ICfopIfoo70nLAogICAgJ0ZvbGRlcnMnID0+ICfjg5Xjgqnjg6vjg4AnLAogICAgJ0NvcHknID0+ICfjgrPjg5Tjg7wnLAogICAgJ0N1dCcgPT4gJ+OCq+ODg+ODiCcsCiAgICAnUGFzdGUnID0+ICfjg5rjg7zjgrnjg4gnLAogICAgJ0NCJyA9PiAn44Kv44Oq44OD44OX44Oc44O844OJJywgLy8gY2xpcGJvYXJkCiAgICAnUGFzdGVfSGVyZScgPT4gJ+OBk+OBruODh+OCo+ODrOOCr+ODiOODquOBq+ODmuODvOOCueODiOOBmeOCiycsCiAgICAnUGFzdGVfQ29uZmlybScgPT4gJ+OBk+OBruODh+OCo+ODrOOCr+ODiOODquOBq+ODmuODvOOCueODiOOBl+OBvuOBmeOBi++8n+aXouWtmOOBruODleOCoeOCpOODqy/jg5Xjgqnjg6vjg4Djga/kuIrmm7jjgY3jgZXjgozjgb7jgZnjgIInLAogICAgJ1Bhc3RlX0ZhaWxlZCcgPT4gJ+ODmuODvOOCueODiOOBp+OBjeOBvuOBm+OCk+OBp+OBl+OBn+OAgicsCiAgICAnQ2xlYXJfQ2xpcGJvYXJkJyA9PiAn44Kv44Oq44OD44OX44Oc44O844OJ44Gu5raI5Y67JywKICAgICdDbGVhcl9DbGlwYm9hcmRfQ29uZmlybScgPT4gJ+OCr+ODquODg+ODl+ODnOODvOODieWGheOBruODh+ODvOOCv+OCkua2iOWOu+OBl+OBvuOBmeOBiz8nLAogICAgJ0ZpbGVzX09OX0NsaXBib2FyZCcgPT4gJ+OCr+ODquODg+ODl+ODnOODvOODieOBq+ODleOCoeOCpOODq+OBjOOBguOCiuOBvuOBmeOAgicsCiAgICAnQ29weV9DdXRfU2l6ZV9MaW1pdCcgPT4gJ+mBuOaKnuOBl+OBn+ODleOCoeOCpOODq+OBjC/jg5Xjgqnjg6vjg4DjgpLvvIVz44GZ44KL44Gr44Gv5aSn44GN44GZ44GO44G+44GZ44CCIOODquODn+ODg+ODiDogJWQgTUIv5pON5L2cJywgLy8gJXMgPSBjdXQgb3IgY29weQogICAgJ0NvcHlfQ3V0X0NvdW50X0xpbWl0JyA9PiAn6YG45oqe44GX44Gf44OV44Kh44Kk44Or44GML+ODleOCqeODq+ODgOOCku+8hXPjgZnjgovjgavjga/lpKfjgY3jgZnjgY7jgb7jgZnjgIIg44Oq44Of44OD44OIOiAlZCDjg5XjgqHjgqTjg6sv5pON5L2cJywgLy8gJXMgPSBjdXQgb3IgY29weQogICAgJ0NvcHlfQ3V0X05vdF9BbGxvd2VkJyA9PiAn44OV44Kh44Kk44Or44KSICVzIOOBmeOCi+ioseWPr+OBjOOBguOCiuOBvuOBm+OCk+OAgicsIC8vICVzKDEpID0gY3V0IG9yIGNvcHksICVzKDIpID0gZmlsZXMgb3IgZm9sZGVycwogICAgJ0ltYWdlX0VkaXRvcl9Ob19TYXZlJyA9PiAn44Kk44Oh44O844K444KS5L+d5a2Y44Gn44GN44G+44Gb44KT44Gn44GX44GfJywKICAgICdJbWFnZV9FZGl0b3JfRXhpdCcgPT4gIkV4aXQiLAogICAgJ0ltYWdlX0VkaXRvcl9TYXZlJyA9PiAiU2F2ZSIsCiAgICAnWmlwX05vX0V4dHJhY3QnID0+ICfop6Plh43jgafjgY3jgb7jgZvjgpPjgafjgZfjgZ/jgILjg5XjgqHjgqTjg6vjgYznoLTmkI3jgZfjgabjgYTjgovlj6/og73mgKfjgYzjgYLjgorjgb7jgZnjgIInLAogICAgJ1ppcF9JbnZhbGlkJyA9PiAn5ouh5by15a2Q44GM44K144Od44O844OI44GV44KM44Gm44G+44Gb44KT44CC5pyJ5Yq577ya44CAemlwLCBneiwgdGFyLicsCiAgICAnRGlyX05vX1dyaXRlJyA9PiAn6YG45oqe44GX44Gf44OH44Kj44Os44Kv44OI44Oq44Gr5pu444GN6L6844G/5qip6ZmQ44GM44GC44KK44G+44Gb44KTJywKICAgICdGdW5jdGlvbl9EaXNhYmxlZCcgPT4gJyVzIOOBr+OCteODvOODkOOBq+OCiOOBo+OBpueEoeWKueOBq+OBleOCjOOBpuOBhOOBvuOBmeOAgicsIC8vICVzID0gY3V0IG9yIGNvcHkKICAgICdGaWxlX1Blcm1pc3Npb24nID0+ICfjg5XjgqHjgqTjg6vjga7mqKnpmZAnLAogICAgJ0ZpbGVfUGVybWlzc2lvbl9Ob3RfQWxsb3dlZCcgPT4gJyVzIOOBruaoqemZkOWkieabtOOBr+ioseWPr+OBleOCjOOBpuOBhOOBvuOBm+OCk+OAgicsIC8vICVzID0gZmlsZXMgb3IgZm9sZGVycwogICAgJ0ZpbGVfUGVybWlzc2lvbl9SZWN1cnNpdmUnID0+ICflhoXljIXjgZnjgovjg5XjgqHjgqTjg6vjgavpgannlKjjgZfjgb7jgZnjgYs/JywKICAgICdGaWxlX1Blcm1pc3Npb25fV3JvbmdfTW9kZScgPT4gIuS+m+e1puOBleOCjOOBn+aoqemZkOOBjOato+OBl+OBj+OBguOCiuOBvuOBm+OCk+OAgiIsCiAgICAnVXNlcicgPT4gJ+ODpuODvOOCtuODvCcsCiAgICAnR3JvdXAnID0+ICfjgrDjg6vjg7zjg5cnLAogICAgJ1llcycgPT4gJ+OBr+OBhCcsCiAgICAnTm8nID0+ICfjgYTjgYTjgYgnLAogICAgJ0xhbmdfTm90X0ZvdW5kJyA9PiAn6KiA6Kqe44GM44G/44Gk44GL44KK44G+44Gb44KT44Gn44GX44Gf44CCJywKICAgICdMYW5nX0NoYW5nZScgPT4gJ+iogOiqnuOBruWkieabtCcsCiAgICAnRmlsZV9Ob3RfRm91bmQnID0+ICfoqIDoqp7jg5XjgqHjgqTjg6vjgYzjgb/jgaTjgYvjgorjgb7jgZvjgpPjgafjgZfjgZ/jgIInLAogICAgJ0ZpbGVfT3Blbl9FZGl0X05vdF9BbGxvd2VkJyA9PiAn44GT44Gu44OV44Kh44Kk44Or44KSJXPjgZPjgajjgYzjgafjgY3jgb7jgZvjgpPjgafjgZfjgZ/jgIInLCAvLyAlcyA9IG9wZW4gb3IgZWRpdAogICAgJ0VkaXQnID0+ICfnt6jpm4bjgZnjgosnLAogICAgJ0VkaXRfRmlsZScgPT4gIuODleOCoeOCpOODq+OCkue3qOmbhiIsCiAgICAnRmlsZV9TYXZlX09LJyA9PiAi44OV44Kh44Kk44Or44Gu5L+d5a2Y44GM5a6M5LqG44GX44G+44GX44Gf44CCIiwKICAgICdGaWxlX1NhdmVfRXJyb3InID0+ICLjg5XjgqHjgqTjg6vjga7kv53lrZjmmYLjgavjgqjjg6njg7zjgYznmbrnlJ/jgZfjgb7jgZfjgZ/jgIIiLAogICAgJ05ld19GaWxlJyA9PiAn5paw6KaP44OV44Kh44Kk44OrJywKICAgICdOb19FeHRlbnNpb24nID0+ICfjg5XjgqHjgqTjg6vjga7mi6HlvLXlrZDjgpLmjIflrprjgZfjgabjgY/jgaDjgZXjgYTjgIInLAogICAgJ1ZhbGlkX0V4dGVuc2lvbnMnID0+ICfmnInlirnjgarmi6HlvLXlrZA6ICVzJywgLy8gJXMgPSB0eHQsbG9nIGV0Yy4KICAgICdVcGxvYWRfbWVzc2FnZScgPT4gIkRyb3AgZmlsZSBoZXJlIHRvIHVwbG9hZCIsCgogICAgJ1NFUlZFUiBFUlJPUicgPT4gIlNFUlZFUiBFUlJPUiIsCiAgICAnZm9yYmlkZGVuJyA9PiAiRm9yYmlkZW4iLAogICAgJ3dyb25nIHBhdGgnID0+ICJXcm9uZyBwYXRoIiwKICAgICd3cm9uZyBuYW1lJyA9PiAiV3JvbmcgbmFtZSIsCiAgICAnd3JvbmcgZXh0ZW5zaW9uJyA9PiAiV3JvbmcgZXh0ZW5zaW9uIiwKICAgICd3cm9uZyBvcHRpb24nID0+ICJXcm9uZyBvcHRpb24iLAogICAgJ3dyb25nIGRhdGEnID0+ICJXcm9uZyBkYXRhIiwKICAgICd3cm9uZyBhY3Rpb24nID0+ICJXcm9uZyBhY3Rpb24iLAogICAgJ3dyb25nIHN1Yi1hY3Rpb24nID0+ICJXcm9uZyBzdWItYWN0aW8iLAogICAgJ25vIGFjdGlvbiBwYXNzZWQnID0+ICJObyBhY3Rpb24gcGFzc2VkIiwKICAgICdubyBwYXRoJyA9PiAiTm8gcGF0aCIsCiAgICAnbm8gZmlsZScgPT4gIk5vIGZpbGUiLAogICAgJ3ZpZXcgdHlwZSBudW1iZXIgbWlzc2luZycgPT4gIlZpZXcgdHlwZSBudW1iZXIgbWlzc2luZyIsCiAgICAnTm90IGVub3VnaCBNZW1vcnknID0+ICJOb3QgZW5vdWdoIE1lbW9yeSIsCiAgICAnbWF4X3NpemVfcmVhY2hlZCcgPT4gIllvdXIgaW1hZ2UgZm9sZGVyIGhhcyByZWFjaCBpdHMgbWF4aW1hbGUgc2l6ZSBvZiAlZCBNQi4iLCAvLyVkID0gbWF4IG92ZXJhbGwgc2l6ZQogICAgJ0InID0+ICJCIiwKICAgICdLQicgPT4gIktCIiwKICAgICdNQicgPT4gIk1CIiwKICAgICdHQicgPT4gIkdCIiwKICAgICdUQicgPT4gIlRCIiwKICAgICd0b3RhbCBzaXplJyA9PiAiVG90YWwgc2l6ZSIsCik7Cg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/lang/languages.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJldHVybiBhcnJheSgKCiAgICAnYXpfQVonID0+ICdBesmZcmJheWNhbiBkaWxpJywKICAgICdiZ19CRycgPT4gJ9Cx0YrQu9Cz0LDRgNGB0LrQuCDQtdC30LjQuicsCiAgICAnY2EnID0+ICdDYXRhbMOgLCB2YWxlbmNpw6AnLAogICAgJ2NzJyA9PiAnxI1lxaF0aW5hLCDEjWVza8O9IGphenlrJywKICAgICdkYScgPT4gJ0RhbnNrJywKICAgICdkZScgPT4gJ0RldXRzY2gnLAogICAgJ2VsX0dSJyA9PiAnzrXOu867zrfOvc65zrrOrCcsCiAgICAnZW5fRU4nID0+ICdFbmdsaXNoJywKICAgICdlcycgPT4gJ0VzcGHDsW9sJywKICAgICdmYScgPT4gJ9mB2KfYsdiz24wnLAogICAgJ2ZyX0ZSJyA9PiAnRnJhbsOnYWlzJywKICAgICdoZV9JTCcgPT4gJ0hlYnJldyAoSXNyYWVsKScsCiAgICAnaHInID0+ICdIcnZhdHNraSBqZXppaycsCiAgICAnaHVfSFUnID0+ICdNYWd5YXInLAogICAgJ2lkJyA9PiAnQmFoYXNhIEluZG9uZXNpYScsCiAgICAnaXQnID0+ICdJdGFsaWFubycsCiAgICAnamEnID0+ICfml6XmnKwnLAogICAgJ2x0JyA9PiAnTGlldHV2acWzIGthbGJhJywKICAgICdtbl9NTicgPT4gJ9C80L7QvdCz0L7QuycsCiAgICAnbmJfTk8nID0+ICdOb3JzayBib2ttw6VsJywKICAgICdubl9OTycgPT4gJ05vcnNrIG55bm9yc2snLAogICAgJ25sJyA9PiAnTmVkZXJsYW5kcywgVmxhYW1zJywKICAgICdwbCcgPT4gJ0rEmXp5ayBwb2xza2ksIHBvbHN6Y3p5em5hJywKICAgICdwdF9CUicgPT4gJ1BvcnR1Z3XDqnMoQnJhemlsKScsCiAgICAncHRfUFQnID0+ICdQb3J0dWd1w6pzJywKICAgICdybycgPT4gJ1JvbcOibsSDJywKICAgICdydScgPT4gJ1DRg9GB0YHQutC40Lkg0Y/Qt9GL0LonLAogICAgJ3NrJyA9PiAnU2xvdmVuxI1pbmEnLAogICAgJ3NsJyA9PiAnU2xvdmVuc2tpIGplemlrJywKICAgICdzdl9TRScgPT4gJ1N2ZW5za2EnLAogICAgJ3RoX1RIJyA9PiAn4LmE4LiX4LiiJywKICAgICd0cl9UUicgPT4gJ1TDvHJrw6dlJywKICAgICd1a19VQScgPT4gJ1nQutGA0LDRl9C90YHRjNC60LAg0LzQvtCy0LAnLAogICAgJ3ZpJyA9PiAnVGnhur9uZyBWaeG7h3QnLAogICAgJ3poX0NOJyA9PiAn5Lit5paHIChaaMWNbmd3w6luKSwg5rGJ6K+tLCDmvKLoqp4nLAoKICAgIC8vIHNvdXJjZTogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MaXN0X29mX0lTT182MzktMV9jb2RlcwopOwo=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/lang/lt.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJldHVybiBhcnJheSgKCiAgICAnU2VsZWN0JyA9PiAnUGFzaXJpbmt0aScsCiAgICAnRGVzZWxlY3RfQWxsJyA9PiAnRGVzZWxlY3QgQWxsJywKICAgICdTZWxlY3RfQWxsJyA9PiAnU2VsZWN0IEFsbCcsCiAgICAnRXJhc2UnID0+ICdJxaF0cmludGknLAogICAgJ09wZW4nID0+ICdBdGlkYXJ5dGknLAogICAgJ0NvbmZpcm1fZGVsJyA9PiAnQXIgdGlrcmFpIG5vcml0ZSBpxaF0cmludGkgxaHEryBmYWlsxIU/JywKICAgICdBbGwnID0+ICdWaXNpJywKICAgICdGaWxlcycgPT4gJ0ZhaWxhaScsCiAgICAnSW1hZ2VzJyA9PiAnTnVvdHJhdWtvcycsCiAgICAnQXJjaGl2ZXMnID0+ICdBcmNoeXZhaScsCiAgICAnRXJyb3JfVXBsb2FkJyA9PiAnRmFpbG8gZHlkaXMgdmlyxaFpamEgbnVzdGF0eXTEhSBsaW1pdMSFLicsCiAgICAnRXJyb3JfZXh0ZW5zaW9uJyA9PiAnVG9rcyBmYWlsbyBmb3JtYXRhcyB5cmEgbmVnYWxpbWFzLicsCiAgICAnVXBsb2FkX2ZpbGUnID0+ICfErmtlbHRpIGZhaWx1cycsCiAgICAnRmlsdGVycycgPT4gJ0ZpbHRydW90aScsCiAgICAnVmlkZW9zJyA9PiAnVmlkZW8gZmFpbGFpJywKICAgICdNdXNpYycgPT4gJ011emlrYScsCiAgICAnTmV3X0ZvbGRlcicgPT4gJ1N1a3VydGkga2F0YWxvZ8SFJywKICAgICdGb2xkZXJfQ3JlYXRlZCcgPT4gJ0thdGFsb2dhcyBzxJdrbWluZ2FpIHN1a3VydGFzJywKICAgICdFeGlzdGluZ19Gb2xkZXInID0+ICdFZ3ppc3R1b2phbnRpcyBrYXRhbG9nYXMnLAogICAgJ0NvbmZpcm1fRm9sZGVyX2RlbCcgPT4gJ0FyIHRpa3JhaSBub3JpdGUgacWhdHJpbnRpIMWhxK8ga2F0YWxvZ8SFIHN1IHZpc2FpcyBqYW1lIGVzYW7EjWlhaXMgZmFpbGFpcz8nLAogICAgJ1JldHVybl9GaWxlc19MaXN0JyA9PiAnR3LEr8W+dGkgxK8gZmFpbMWzIHPEhXJhxaHEhScsCiAgICAnUHJldmlldycgPT4gJ1BlcsW+acWrcsSXdGknLAogICAgJ0Rvd25sb2FkJyA9PiAnQXRzaXNpxbNzdGknLAogICAgJ0luc2VydF9Gb2xkZXJfTmFtZScgPT4gJ0thdGFsb2dvIHBhdmFkaW5pbWFzOicsCiAgICAnUm9vdCcgPT4gJ3Jvb3QnLAogICAgJ1JlbmFtZScgPT4gJ1BlcnZhZGludGknLAogICAgJ0JhY2snID0+ICdncsSvxb50aScsCiAgICAnVmlldycgPT4gJ1JvZHltYXMnLAogICAgJ1ZpZXdfbGlzdCcgPT4gJ1PEhXJhxaFhcycsCiAgICAnVmlld19jb2x1bW5zX2xpc3QnID0+ICdTdHVscGVsaWFpJywKICAgICdWaWV3X2JveGVzJyA9PiAnVGlua2xlbGlzJywKICAgICdUb29sYmFyJyA9PiAnxK5yYW5racWzIGp1b3N0YScsCiAgICAnQWN0aW9ucycgPT4gJ1ZlaWtzbWFpJywKICAgICdSZW5hbWVfZXhpc3RpbmdfZmlsZScgPT4gJ1Rva3MgZmFpbGFzIGphdSB5cmEgc3VrdXJ0YXMnLAogICAgJ1JlbmFtZV9leGlzdGluZ19mb2xkZXInID0+ICdUb2tzIGthdGFsb2dhcyBqYXUgeXJhIHN1a3VydGFzJywKICAgICdFbXB0eV9uYW1lJyA9PiAnUGF2YWRpbmltYXMgbmVnYWxpIGLFq3RpIHR1xaHEjWlhcycsCiAgICAnVGV4dF9maWx0ZXInID0+ICdpZcWha290aScsCiAgICAnU3dpcGVfaGVscCcgPT4gJ1RlbXBraXRlIGZhaWxvL2thdGFsb2dvIHBhdmFkaW5pbcSFLCBrYWQgcGFtYXR5dHVtxJd0ZSBpbmZvcm1hY2lqxIUnLAogICAgJ1VwbG9hZF9iYXNlJyA9PiAnUGFncmluZGluaXMgxK9rxJdsaW1hcycsCiAgICAnVXBsb2FkX2Jhc2VfaGVscCcgPT4gIkRyYWcgJiBEcm9wIGZpbGVzKG1vZGVybiBicm93c2Vycykgb3IgY2xpY2sgaW4gdXBwZXIgYnV0dG9uIHRvIEFkZCB0aGUgZmlsZShzKSBhbmQgY2xpY2sgb24gU3RhcnQgdXBsb2FkLiBXaGVuIHRoZSB1cGxvYWQgaXMgY29tcGxldGUsIGNsaWNrIHRoZSAnUmV0dXJuIHRvIGZpbGVzIGxpc3QnIGJ1dHRvbi4iLAogICAgJ1VwbG9hZF9hZGRfZmlsZXMnID0+ICdBZGQgZmlsZShzKScsCiAgICAnVXBsb2FkX3N0YXJ0JyA9PiAnU3RhcnQgdXBsb2FkJywKICAgICdVcGxvYWRfZXJyb3JfbWVzc2FnZXMnID0+YXJyYXkoCiAgICAgICAgMSA9PiAnVGhlIHVwbG9hZGVkIGZpbGUgZXhjZWVkcyB0aGUgdXBsb2FkX21heF9maWxlc2l6ZSBkaXJlY3RpdmUgaW4gcGhwLmluaScsCiAgICAgICAgMiA9PiAnVGhlIHVwbG9hZGVkIGZpbGUgZXhjZWVkcyB0aGUgTUFYX0ZJTEVfU0laRSBkaXJlY3RpdmUgdGhhdCB3YXMgc3BlY2lmaWVkIGluIHRoZSBIVE1MIGZvcm0nLAogICAgICAgIDMgPT4gJ1RoZSB1cGxvYWRlZCBmaWxlIHdhcyBvbmx5IHBhcnRpYWxseSB1cGxvYWRlZCcsCiAgICAgICAgNCA9PiAnTm8gZmlsZSB3YXMgdXBsb2FkZWQnLAogICAgICAgIDYgPT4gJ01pc3NpbmcgYSB0ZW1wb3JhcnkgZm9sZGVyJywKICAgICAgICA3ID0+ICdGYWlsZWQgdG8gd3JpdGUgZmlsZSB0byBkaXNrJywKICAgICAgICA4ID0+ICdBIFBIUCBleHRlbnNpb24gc3RvcHBlZCB0aGUgZmlsZSB1cGxvYWQnLAogICAgICAgICdwb3N0X21heF9zaXplJyA9PiAnVGhlIHVwbG9hZGVkIGZpbGUgZXhjZWVkcyB0aGUgcG9zdF9tYXhfc2l6ZSBkaXJlY3RpdmUgaW4gcGhwLmluaScsCiAgICAgICAgJ21heF9maWxlX3NpemUnID0+ICdGaWxlIGlzIHRvbyBiaWcnLAogICAgICAgICdtaW5fZmlsZV9zaXplJyA9PiAnRmlsZSBpcyB0b28gc21hbGwnLAogICAgICAgICdhY2NlcHRfZmlsZV90eXBlcycgPT4gJ0ZpbGV0eXBlIG5vdCBhbGxvd2VkJywKICAgICAgICAnbWF4X251bWJlcl9vZl9maWxlcycgPT4gJ01heGltdW0gbnVtYmVyIG9mIGZpbGVzIGV4Y2VlZGVkJywKICAgICAgICAnbWF4X3dpZHRoJyA9PiAnSW1hZ2UgZXhjZWVkcyBtYXhpbXVtIHdpZHRoJywKICAgICAgICAnbWluX3dpZHRoJyA9PiAnSW1hZ2UgcmVxdWlyZXMgYSBtaW5pbXVtIHdpZHRoJywKICAgICAgICAnbWF4X2hlaWdodCcgPT4gJ0ltYWdlIGV4Y2VlZHMgbWF4aW11bSBoZWlnaHQnLAogICAgICAgICdtaW5faGVpZ2h0JyA9PiAnSW1hZ2UgcmVxdWlyZXMgYSBtaW5pbXVtIGhlaWdodCcsCiAgICAgICAgJ2Fib3J0JyA9PiAnRmlsZSB1cGxvYWQgYWJvcnRlZCcsCiAgICAgICAgJ2ltYWdlX3Jlc2l6ZScgPT4gJ0ZhaWxlZCB0byByZXNpemUgaW1hZ2UnCiAgICApLAogICAgJ1VwbG9hZF91cmwnID0+ICdGcm9tIHVybCcsCiAgICAnVHlwZV9kaXInID0+ICdkaXInLAogICAgJ1R5cGUnID0+ICdUaXBhcycsCiAgICAnRGltZW5zaW9uJyA9PiAnTWF0bWVueXMnLAogICAgJ1NpemUnID0+ICdEeWRpcycsCiAgICAnRGF0ZScgPT4gJ0RhdGEnLAogICAgJ0ZpbGVuYW1lJyA9PiAnUGF2YWRpbmltYXMnLAogICAgJ09wZXJhdGlvbnMnID0+ICdPcGVyYWNpam9zJywKICAgICdEYXRlX3R5cGUnID0+ICdZLW0tZCcsCiAgICAnT0snID0+ICdHZXJhaScsCiAgICAnQ2FuY2VsJyA9PiAnQXTFoWF1a3RpJywKICAgICdTb3J0aW5nJyA9PiAncmlraXVvdGknLAogICAgJ1Nob3dfdXJsJyA9PiAncm9keXRpIG51b3JvZMSFJywKICAgICdFeHRyYWN0JyA9PiAnScWhdHJhdWt0aSDEjWlhJywKICAgICdGaWxlX2luZm8nID0+ICdGYWlsbyBpbmZvcm1hY2lqYScsCiAgICAnRWRpdF9pbWFnZScgPT4gJ3JlZGFndW90aSBudW90cmF1a8SFJywKICAgICdEdXBsaWNhdGUnID0+ICdTdWt1cnRpIGtvcGlqxIUnLAogICAgJ0ZvbGRlcnMnID0+ICdLYXRhbG9nYWknLAogICAgJ0NvcHknID0+ICdLb3BpanVvdGknLAogICAgJ0N1dCcgPT4gJ0nFoWtpcnB0aScsCiAgICAnUGFzdGUnID0+ICfErmtsaWp1b3RpJywKICAgICdDQicgPT4gJ0NCJywgLy8gY2xpcGJvYXJkCiAgICAnUGFzdGVfSGVyZScgPT4gJ8Sua2xpanVvdGkgZGFiYXJ0aW5pYW1lIGthdGFsb2dlJywKICAgICdQYXN0ZV9Db25maXJtJyA9PiAnQXIgdGlrcmFpIG5vcml0ZSDEr2tsaWp1b3RpIMSvIMWhxK8ga2F0YWxvZ8SFPyBWaXNpIGZhaWxhaS9rYXRhbG9nYWkgdG9raWFpcyBwYcSNaWFpcyBwYXZhZGluaW1haXMgYnVzIHBlcnJhxaF5dGkuJywKICAgICdQYXN0ZV9GYWlsZWQnID0+ICdOZXBhdnlrbyDEr2tsaWp1b3RpJywKICAgICdDbGVhcl9DbGlwYm9hcmQnID0+ICdJxaF2YWx5dGkgacWha2FycGluxJknLAogICAgJ0NsZWFyX0NsaXBib2FyZF9Db25maXJtJyA9PiAnQXIgdGlrcmFpIG5vcml0ZSBpxaF2YWx5dGkgacWha2FycGluxJk/JywKICAgICdGaWxlc19PTl9DbGlwYm9hcmQnID0+ICdJxaFrYXJwaW7El2plIHlyYSBmYWlsxbMuJywKICAgICdDb3B5X0N1dF9TaXplX0xpbWl0JyA9PiAnUGFzaXJpbmt0aSBmYWlsYWkva2F0YWxvZ2FpIHlyYSBwZXIgZGlkZWxpIGF0bGlrdGkgIiVzIiBvcGVyYWNpamFpLiBMaW1pdGFzOiAlZCBNQicsIC8vICVzID0gY3V0IG9yIGNvcHkKICAgICdDb3B5X0N1dF9Db3VudF9MaW1pdCcgPT4gJ1Bhc2lyaW5rb3RlIHBlciBkYXVnIGZhaWzFsy9rYXRhbG9nxbMgYXRsaWt0aSAiJXMiIG9wZXJhY2lqYWkuIExpbWl0YXM6ICVkIGZhaWzFsy9rYXRhbG9nxbMnLCAvLyAlcyA9IGN1dCBvciBjb3B5CiAgICAnQ29weV9DdXRfTm90X0FsbG93ZWQnID0+ICdKxatzIG5ldHVyaXRlIHRlaXNpxbMgYXRsaWt0aSAiJXMiIGZ1bmtjaWpvcyBmYWlsYW1zLicsIC8vICVzKDEpID0gY3V0IG9yIGNvcHksICVzKDIpID0gZmlsZXMgb3IgZm9sZGVycwogICAgJ0ltYWdlX0VkaXRvcl9Ob19TYXZlJyA9PiAnTmVwYXZ5a28gacWhc2F1Z290aSBudW90cmF1a29zJywKICAgICdJbWFnZV9FZGl0b3JfRXhpdCcgPT4gIkV4aXQiLAogICAgJ0ltYWdlX0VkaXRvcl9TYXZlJyA9PiAiU2F2ZSIsCiAgICAnWmlwX05vX0V4dHJhY3QnID0+ICdOZXBhdnlrbyBpxaF0cmF1a3RpLiBGYWlsYXMgZ2FsaSBixat0aSBzdWdhZGludGFzLicsCiAgICAnWmlwX0ludmFsaWQnID0+ICdUb2tzIGZvcm1hdGFzIHlyYSBuZWxlaWTFvmlhbWFzLiBHYWxpbWkgZm9ybWF0YWk6IHppcCwgZ3osIHRhci4nLAogICAgJ0Rpcl9Ob19Xcml0ZScgPT4gJ0thdGFsb2dhcywga3VyxK8gcGFzaXJpbmtvdGUgbmV0dXJpIMSvcmHFoXltbyB0ZWlzacWzLicsCiAgICAnRnVuY3Rpb25fRGlzYWJsZWQnID0+ICdGdW5rY2lqYSAiJXMiIMWhaWFtZSBzZXJ2ZXJ5amUgeXJhIGnFoWp1bmd0YS4nLCAvLyAlcyA9IGN1dCBvciBjb3B5CiAgICAnRmlsZV9QZXJtaXNzaW9uJyA9PiAnRmlsZSBwZXJtaXNzaW9uJywKICAgICdGaWxlX1Blcm1pc3Npb25fTm90X0FsbG93ZWQnID0+ICdDaGFuZ2luZyAlcyBwZXJtaXNzaW9ucyBhcmUgbm90IGFsbG93ZWQuJywgLy8gJXMgPSBmaWxlcyBvciBmb2xkZXJzCiAgICAnRmlsZV9QZXJtaXNzaW9uX1JlY3Vyc2l2ZScgPT4gJ0FwcGx5IHJlY3Vyc2l2ZWx5PycsCiAgICAnRmlsZV9QZXJtaXNzaW9uX1dyb25nX01vZGUnID0+ICJUaGUgc3VwcGxpZWQgcGVybWlzc2lvbiBtb2RlIGlzIGluY29ycmVjdC4iLAogICAgJ1VzZXInID0+ICdVc2VyJywKICAgICdHcm91cCcgPT4gJ0dyb3VwJywKICAgICdZZXMnID0+ICdZZXMnLAogICAgJ05vJyA9PiAnTm8nLAogICAgJ0xhbmdfTm90X0ZvdW5kJyA9PiAnQ291bGQgbm90IGZpbmQgbGFuZ3VhZ2UuJywKICAgICdMYW5nX0NoYW5nZScgPT4gJ0NoYW5nZSB0aGUgbGFuZ3VhZ2UnLAogICAgJ0ZpbGVfTm90X0ZvdW5kJyA9PiAnQ291bGQgbm90IGZpbmQgdGhlIGZpbGUuJywKICAgICdGaWxlX09wZW5fRWRpdF9Ob3RfQWxsb3dlZCcgPT4gJ1lvdSBhcmUgbm90IGFsbG93ZWQgdG8gJXMgdGhpcyBmaWxlLicsIC8vICVzID0gb3BlbiBvciBlZGl0CiAgICAnRWRpdCcgPT4gJ0VkaXQnLAogICAgJ0VkaXRfRmlsZScgPT4gIkVkaXQgZmlsZSdzIGNvbnRlbnQiLAogICAgJ0ZpbGVfU2F2ZV9PSycgPT4gIkZpbGUgc3VjY2Vzc2Z1bGx5IHNhdmVkLiIsCiAgICAnRmlsZV9TYXZlX0Vycm9yJyA9PiAiVGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIHNhdmluZyB0aGUgZmlsZS4iLAogICAgJ05ld19GaWxlJyA9PiAnTmV3IEZpbGUnLAogICAgJ05vX0V4dGVuc2lvbicgPT4gJ1lvdSBoYXZlIHRvIGFkZCBhIGZpbGUgZXh0ZW5zaW9uLicsCiAgICAnVmFsaWRfRXh0ZW5zaW9ucycgPT4gJ1ZhbGlkIGV4dGVuc2lvbnM6ICVzJywgLy8gJXMgPSB0eHQsbG9nIGV0Yy4KICAgICdVcGxvYWRfbWVzc2FnZScgPT4gIkRyb3AgZmlsZSBoZXJlIHRvIHVwbG9hZCIsCgogICAgJ1NFUlZFUiBFUlJPUicgPT4gIlNFUlZFUiBFUlJPUiIsCiAgICAnZm9yYmlkZGVuJyA9PiAiRm9yYmlkZW4iLAogICAgJ3dyb25nIHBhdGgnID0+ICJXcm9uZyBwYXRoIiwKICAgICd3cm9uZyBuYW1lJyA9PiAiV3JvbmcgbmFtZSIsCiAgICAnd3JvbmcgZXh0ZW5zaW9uJyA9PiAiV3JvbmcgZXh0ZW5zaW9uIiwKICAgICd3cm9uZyBvcHRpb24nID0+ICJXcm9uZyBvcHRpb24iLAogICAgJ3dyb25nIGRhdGEnID0+ICJXcm9uZyBkYXRhIiwKICAgICd3cm9uZyBhY3Rpb24nID0+ICJXcm9uZyBhY3Rpb24iLAogICAgJ3dyb25nIHN1Yi1hY3Rpb24nID0+ICJXcm9uZyBzdWItYWN0aW8iLAogICAgJ25vIGFjdGlvbiBwYXNzZWQnID0+ICJObyBhY3Rpb24gcGFzc2VkIiwKICAgICdubyBwYXRoJyA9PiAiTm8gcGF0aCIsCiAgICAnbm8gZmlsZScgPT4gIk5vIGZpbGUiLAogICAgJ3ZpZXcgdHlwZSBudW1iZXIgbWlzc2luZycgPT4gIlZpZXcgdHlwZSBudW1iZXIgbWlzc2luZyIsCiAgICAnTm90IGVub3VnaCBNZW1vcnknID0+ICJOb3QgZW5vdWdoIE1lbW9yeSIsCiAgICAnbWF4X3NpemVfcmVhY2hlZCcgPT4gIllvdXIgaW1hZ2UgZm9sZGVyIGhhcyByZWFjaCBpdHMgbWF4aW1hbGUgc2l6ZSBvZiAlZCBNQi4iLCAvLyVkID0gbWF4IG92ZXJhbGwgc2l6ZQogICAgJ0InID0+ICJCIiwKICAgICdLQicgPT4gIktCIiwKICAgICdNQicgPT4gIk1CIiwKICAgICdHQicgPT4gIkdCIiwKICAgICdUQicgPT4gIlRCIiwKICAgICd0b3RhbCBzaXplJyA9PiAiVG90YWwgc2l6ZSIsCik7Cg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/lang/mn_MN.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJldHVybiBhcnJheSgKCiAgICAnU2VsZWN0JyA9PiAn0KHQvtC90LPQvtGFJywKICAgICdEZXNlbGVjdF9BbGwnID0+ICdEZXNlbGVjdCBBbGwnLAogICAgJ1NlbGVjdF9BbGwnID0+ICdTZWxlY3QgQWxsJywKICAgICdFcmFzZScgPT4gJ9Cj0YHRgtCz0LDRhScsCiAgICAnT3BlbicgPT4gJ9Cd0Y3RjdGFJywKICAgICdDb25maXJtX2RlbCcgPT4gJ9Ci0LAg0Y3QvdGNINGE0LDQudC70YvQsyDRg9GB0YLQs9Cw0YXQtNCw0LAg0LjRgtCz0Y3Qu9GC0Y3QuSDQsdCw0LnQvdCwINGD0YM/JywKICAgICdBbGwnID0+ICfQkdKv0LPQtCcsCiAgICAnRmlsZXMnID0+ICfQpNCw0LnQu9GD0YPQtCcsCiAgICAnSW1hZ2VzJyA9PiAn0JfRg9GA0LDQs9C90YPRg9C0JywKICAgICdBcmNoaXZlcycgPT4gJ9CQ0YDRhdC40LLQu9Cw0LPQtNGB0LDQvSDRhNCw0LnQu9GD0YPQtCcsCiAgICAnRXJyb3JfVXBsb2FkJyA9PiAn0KXRg9GD0LvRgdCw0L0g0YTQsNC50Lsg0LfTqdCy0YjTqdOp0YDTqdCz0LTTqdGFINGF0Y3QvNC20Y3RjdC90Y3RjdGBINC40YUg0LHQsNC50L3QsC4nLAogICAgJ0Vycm9yX2V4dGVuc2lvbicgPT4gJ9Ck0LDQudC70YvQvSDTqdGA0LPTqdGC0LPTqdGFINC306nQstGI06nTqdGA06nQs9C006nTqdCz0q/QuS4nLAogICAgJ1VwbG9hZF9maWxlJyA9PiAn0KXRg9GD0LvQsNGFJywKICAgICdGaWx0ZXJzJyA9PiAn0KjSr9Kv0LvRgtKv0q/RgNKv0q/QtCcsCiAgICAnVmlkZW9zJyA9PiAn0JHQuNGH0LvRjdCz0L3Sr9Kv0LQnLAogICAgJ011c2ljJyA9PiAn0JTRg9GD0L3Rg9GD0LQnLAogICAgJ05ld19Gb2xkZXInID0+ICfQqNC40L3RjSDRhdCw0LLRgtCw0YEnLAogICAgJ0ZvbGRlcl9DcmVhdGVkJyA9PiAn0KXQsNCy0YLQsNGBINCw0LzQttC40LvRgtGC0LDQuSDSr9Kv0YHQu9GN0Y0nLAogICAgJ0V4aXN0aW5nX0ZvbGRlcicgPT4gJ9CU0LDQstGF0LDRgNC00YHQsNC9INGF0LDQstGC0LDRgScsCiAgICAnQ29uZmlybV9Gb2xkZXJfZGVsJyA9PiAn0KXQsNCy0YLQsNGBINCx0L7Qu9C+0L0g0LTQvtGC0L7RgNGFINCx0q/RhSDRhNCw0LnQu9GD0YPQtNGL0LMg0YPRgdGC0LPQsNGF0LTQsNCwINC40YLQs9GN0LvRgtGN0Lkg0LHQsNC50L3QsCDRg9GDPycsCiAgICAnUmV0dXJuX0ZpbGVzX0xpc3QnID0+ICfQpNCw0LnQu9GL0L0g0LbQsNCz0YHQsNCw0LvRgiDRgNGD0YMg0LHRg9GG0LDRhScsCiAgICAnUHJldmlldycgPT4gJ9Cj0YDRjNC00YfQuNC70LDQvSDRhdCw0YDQsNGFJywKICAgICdEb3dubG9hZCcgPT4gJ9Ci0LDRgtCw0LYg0LDQstCw0YUnLAogICAgJ0luc2VydF9Gb2xkZXJfTmFtZScgPT4gJ9Cl0LDQstGC0LDRgdC90Ysg0L3RjdGA0LjQudCzINC+0YDRg9GD0LvQvdCwINGD0YM6JywKICAgICdSb290JyA9PiAncm9vdCcsCiAgICAnUmVuYW1lJyA9PiAn0J3RjdGA0LvRjdGFJywKICAgICdCYWNrJyA9PiAn0LHRg9GG0LDRhScsCiAgICAnVmlldycgPT4gJ9Ku0LfRjdGFJywKICAgICdWaWV3X2xpc3QnID0+ICfQltCw0LPRgdCw0LDQu9GC0LDQsNGAINGF0LDRgNCw0YUnLAogICAgJ1ZpZXdfY29sdW1uc19saXN0JyA9PiAn0JHQsNCz0LDQvdCw0LDRgCDRhdCw0YDQsNGFJywKICAgICdWaWV3X2JveGVzJyA9PiAn0KXQsNC50YDRhtCz0LDQsNGAINGF0LDRgNCw0YUnLAogICAgJ1Rvb2xiYXInID0+ICfQotC+0LLRh9C40LvRgdC+0L0g0YLQvtCy0YfQvdGD0YPQtCcsCiAgICAnQWN0aW9ucycgPT4gJ9Ku0LnQu9C00Y3QuycsCiAgICAnUmVuYW1lX2V4aXN0aW5nX2ZpbGUnID0+ICfQpNCw0LnQuyDQsNC70Ywg0YXRjdC00LjQudC90Y0g0q/Sr9GB0YHRjdC9INCx0LDQudC90LAnLAogICAgJ1JlbmFtZV9leGlzdGluZ19mb2xkZXInID0+ICfQpdCw0LLRgtCw0YEg0LDQu9GMINGF0Y3QtNC40LnQvdGNINKv0q/RgdGN0L0g0LHQsNC50L3QsCcsCiAgICAnRW1wdHlfbmFtZScgPT4gJ9Cd0Y3RgCDRhdC+0L7RgdC+0L0g0LHQsNC50L3QsCcsCiAgICAnVGV4dF9maWx0ZXInID0+ICfRgtC10LrRgdGC0Y3QvSDRiNKv0q/Qu9GC0q/Sr9GAJywKICAgICdTd2lwZV9oZWxwJyA9PiAn0KTQsNC50Lsv0KXQsNCy0YLQsNGB0L3RiyDQvdGN0YDQuNC50LMg0YLQvtCy0YjQvtC+0LQg0YLQvtGF0LjRgNCz0L7QvtCzINGF0LDRgNC90LAg0YPRgycsCiAgICAnVXBsb2FkX2Jhc2UnID0+ICfQrdC90LPQuNC50L3RjdGN0YAg0YXRg9GD0LvQsNGFJywKICAgICdVcGxvYWRfYmFzZV9oZWxwJyA9PiAiRHJhZyAmIERyb3AgZmlsZXMobW9kZXJuIGJyb3dzZXJzKSBvciBjbGljayBpbiB1cHBlciBidXR0b24gdG8gQWRkIHRoZSBmaWxlKHMpIGFuZCBjbGljayBvbiBTdGFydCB1cGxvYWQuIFdoZW4gdGhlIHVwbG9hZCBpcyBjb21wbGV0ZSwgY2xpY2sgdGhlICdSZXR1cm4gdG8gZmlsZXMgbGlzdCcgYnV0dG9uLiIsCiAgICAnVXBsb2FkX2FkZF9maWxlcycgPT4gJ0FkZCBmaWxlKHMpJywKICAgICdVcGxvYWRfc3RhcnQnID0+ICdTdGFydCB1cGxvYWQnLAogICAgJ1VwbG9hZF9lcnJvcl9tZXNzYWdlcycgPT5hcnJheSgKICAgICAgICAxID0+ICdUaGUgdXBsb2FkZWQgZmlsZSBleGNlZWRzIHRoZSB1cGxvYWRfbWF4X2ZpbGVzaXplIGRpcmVjdGl2ZSBpbiBwaHAuaW5pJywKICAgICAgICAyID0+ICdUaGUgdXBsb2FkZWQgZmlsZSBleGNlZWRzIHRoZSBNQVhfRklMRV9TSVpFIGRpcmVjdGl2ZSB0aGF0IHdhcyBzcGVjaWZpZWQgaW4gdGhlIEhUTUwgZm9ybScsCiAgICAgICAgMyA9PiAnVGhlIHVwbG9hZGVkIGZpbGUgd2FzIG9ubHkgcGFydGlhbGx5IHVwbG9hZGVkJywKICAgICAgICA0ID0+ICdObyBmaWxlIHdhcyB1cGxvYWRlZCcsCiAgICAgICAgNiA9PiAnTWlzc2luZyBhIHRlbXBvcmFyeSBmb2xkZXInLAogICAgICAgIDcgPT4gJ0ZhaWxlZCB0byB3cml0ZSBmaWxlIHRvIGRpc2snLAogICAgICAgIDggPT4gJ0EgUEhQIGV4dGVuc2lvbiBzdG9wcGVkIHRoZSBmaWxlIHVwbG9hZCcsCiAgICAgICAgJ3Bvc3RfbWF4X3NpemUnID0+ICdUaGUgdXBsb2FkZWQgZmlsZSBleGNlZWRzIHRoZSBwb3N0X21heF9zaXplIGRpcmVjdGl2ZSBpbiBwaHAuaW5pJywKICAgICAgICAnbWF4X2ZpbGVfc2l6ZScgPT4gJ0ZpbGUgaXMgdG9vIGJpZycsCiAgICAgICAgJ21pbl9maWxlX3NpemUnID0+ICdGaWxlIGlzIHRvbyBzbWFsbCcsCiAgICAgICAgJ2FjY2VwdF9maWxlX3R5cGVzJyA9PiAnRmlsZXR5cGUgbm90IGFsbG93ZWQnLAogICAgICAgICdtYXhfbnVtYmVyX29mX2ZpbGVzJyA9PiAnTWF4aW11bSBudW1iZXIgb2YgZmlsZXMgZXhjZWVkZWQnLAogICAgICAgICdtYXhfd2lkdGgnID0+ICdJbWFnZSBleGNlZWRzIG1heGltdW0gd2lkdGgnLAogICAgICAgICdtaW5fd2lkdGgnID0+ICdJbWFnZSByZXF1aXJlcyBhIG1pbmltdW0gd2lkdGgnLAogICAgICAgICdtYXhfaGVpZ2h0JyA9PiAnSW1hZ2UgZXhjZWVkcyBtYXhpbXVtIGhlaWdodCcsCiAgICAgICAgJ21pbl9oZWlnaHQnID0+ICdJbWFnZSByZXF1aXJlcyBhIG1pbmltdW0gaGVpZ2h0JywKICAgICAgICAnYWJvcnQnID0+ICdGaWxlIHVwbG9hZCBhYm9ydGVkJywKICAgICAgICAnaW1hZ2VfcmVzaXplJyA9PiAnRmFpbGVkIHRvIHJlc2l6ZSBpbWFnZScKICAgICksCiAgICAnVXBsb2FkX3VybCcgPT4gJ0Zyb20gdXJsJywKICAgICdUeXBlX2RpcicgPT4gJ2RpcicsCiAgICAnVHlwZScgPT4gJ9Ci06nRgNOp0LsnLAogICAgJ0RpbWVuc2lvbicgPT4gJ9Cl0LDRgNGM0YbQsNCwJywKICAgICdTaXplJyA9PiAn0KXRjdC80LbRjdGNJywKICAgICdEYXRlJyA9PiAn0J7Qs9C90L7QvicsCiAgICAnRmlsZW5hbWUnID0+ICfQpNCw0LnQu9GL0L0g0L3RjdGAJywKICAgICdPcGVyYXRpb25zJyA9PiAn0q7QudC70LTRjdC70q/Sr9C0JywKICAgICdEYXRlX3R5cGUnID0+ICd5LW0tZCcsCiAgICAnT0snID0+ICfQntCaJywKICAgICdDYW5jZWwnID0+ICfQkdGD0YbQsNGFJywKICAgICdTb3J0aW5nJyA9PiAn0Y3RgNGN0LzQsdGN0LvRjdGFJywKICAgICdTaG93X3VybCcgPT4gJ1VSTC3QsyDRhdCw0YDQsNGFJywKICAgICdFeHRyYWN0JyA9PiAn0Y3QvdC0INC30LDQtNC70LAnLAogICAgJ0ZpbGVfaW5mbycgPT4gJ9GE0LDQudC70YvQvSDQvNGN0LTRjdGN0LvRjdC7JywKICAgICdFZGl0X2ltYWdlJyA9PiAn0LfRg9GA0LDQsyDQt9Cw0YHQstCw0YDQu9Cw0YUnLAogICAgJ0R1cGxpY2F0ZScgPT4gJ9CU0LDQstGF0LDRgNC00YPRg9C70LDRhScsCiAgICAnRm9sZGVycycgPT4gJ0ZvbGRlcnMnLAogICAgJ0NvcHknID0+ICdDb3B5JywKICAgICdDdXQnID0+ICdDdXQnLAogICAgJ1Bhc3RlJyA9PiAnUGFzdGUnLAogICAgJ0NCJyA9PiAnQ0InLCAvLyBjbGlwYm9hcmQKICAgICdQYXN0ZV9IZXJlJyA9PiAnUGFzdGUgdG8gdGhpcyBkaXJlY3RvcnknLAogICAgJ1Bhc3RlX0NvbmZpcm0nID0+ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcGFzdGUgdG8gdGhpcyBkaXJlY3Rvcnk/IFRoaXMgd2lsbCBvdmVyd3JpdGUgZXhpc3RpbmcgZmlsZXMvZm9sZGVycyBpZiBlbmNvdW50ZXJlZCBhbnkuJywKICAgICdQYXN0ZV9GYWlsZWQnID0+ICdGYWlsZWQgdG8gcGFzdGUgZmlsZShzKScsCiAgICAnQ2xlYXJfQ2xpcGJvYXJkJyA9PiAnQ2xlYXIgY2xpcGJvYXJkJywKICAgICdDbGVhcl9DbGlwYm9hcmRfQ29uZmlybScgPT4gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjbGVhciB0aGUgY2xpcGJvYXJkPycsCiAgICAnRmlsZXNfT05fQ2xpcGJvYXJkJyA9PiAnVGhlcmUgYXJlIGZpbGVzIG9uIHRoZSBjbGlwYm9hcmQuJywKICAgICdDb3B5X0N1dF9TaXplX0xpbWl0JyA9PiAnVGhlIHNlbGVjdGVkIGZpbGVzL2ZvbGRlcnMgYXJlIHRvbyBiaWcgdG8gJXMuIExpbWl0OiAlZCBNQi9vcGVyYXRpb24nLCAvLyAlcyA9IGN1dCBvciBjb3B5CiAgICAnQ29weV9DdXRfQ291bnRfTGltaXQnID0+ICdZb3Ugc2VsZWN0ZWQgdG9vIG1hbnkgZmlsZXMvZm9sZGVycyB0byAlcy4gTGltaXQ6ICVkIGZpbGVzL29wZXJhdGlvbicsIC8vICVzID0gY3V0IG9yIGNvcHkKICAgICdDb3B5X0N1dF9Ob3RfQWxsb3dlZCcgPT4gJ1lvdSBhcmUgbm90IGFsbG93ZWQgdG8gJXMgZmlsZXMuJywgLy8gJXMoMSkgPSBjdXQgb3IgY29weSwgJXMoMikgPSBmaWxlcyBvciBmb2xkZXJzCiAgICAnSW1hZ2VfRWRpdG9yX05vX1NhdmUnID0+ICdDb3VsZCBub3Qgc2F2ZSBpbWFnZScsCiAgICAnSW1hZ2VfRWRpdG9yX0V4aXQnID0+ICJFeGl0IiwKICAgICdJbWFnZV9FZGl0b3JfU2F2ZScgPT4gIlNhdmUiLAogICAgJ1ppcF9Ob19FeHRyYWN0JyA9PiAnQ291bGQgbm90IGV4dHJhY3QuIEZpbGUgbWlnaHQgYmUgY29ycnVwdC4nLAogICAgJ1ppcF9JbnZhbGlkJyA9PiAnVGhpcyBleHRlbnNpb24gaXMgbm90IHN1cHBvcnRlZC4gVmFsaWQ6IHppcCwgZ3osIHRhci4nLAogICAgJ0Rpcl9Ob19Xcml0ZScgPT4gJ1RoZSBkaXJlY3RvcnkgeW91IHNlbGVjdGVkIGlzIG5vdCB3cml0YWJsZS4nLAogICAgJ0Z1bmN0aW9uX0Rpc2FibGVkJyA9PiAnVGhlICVzIGZ1bmN0aW9uIGhhcyBiZWVuIGRpc2FibGVkIGJ5IHRoZSBzZXJ2ZXIuJywgLy8gJXMgPSBjdXQgb3IgY29weQogICAgJ0ZpbGVfUGVybWlzc2lvbicgPT4gJ0ZpbGUgcGVybWlzc2lvbicsCiAgICAnRmlsZV9QZXJtaXNzaW9uX05vdF9BbGxvd2VkJyA9PiAnQ2hhbmdpbmcgJXMgcGVybWlzc2lvbnMgYXJlIG5vdCBhbGxvd2VkLicsIC8vICVzID0gZmlsZXMgb3IgZm9sZGVycwogICAgJ0ZpbGVfUGVybWlzc2lvbl9SZWN1cnNpdmUnID0+ICdBcHBseSByZWN1cnNpdmVseT8nLAogICAgJ0ZpbGVfUGVybWlzc2lvbl9Xcm9uZ19Nb2RlJyA9PiAiVGhlIHN1cHBsaWVkIHBlcm1pc3Npb24gbW9kZSBpcyBpbmNvcnJlY3QuIiwKICAgICdVc2VyJyA9PiAnVXNlcicsCiAgICAnR3JvdXAnID0+ICdHcm91cCcsCiAgICAnWWVzJyA9PiAnWWVzJywKICAgICdObycgPT4gJ05vJywKICAgICdMYW5nX05vdF9Gb3VuZCcgPT4gJ0NvdWxkIG5vdCBmaW5kIGxhbmd1YWdlLicsCiAgICAnTGFuZ19DaGFuZ2UnID0+ICdDaGFuZ2UgdGhlIGxhbmd1YWdlJywKICAgICdGaWxlX05vdF9Gb3VuZCcgPT4gJ0NvdWxkIG5vdCBmaW5kIHRoZSBmaWxlLicsCiAgICAnRmlsZV9PcGVuX0VkaXRfTm90X0FsbG93ZWQnID0+ICdZb3UgYXJlIG5vdCBhbGxvd2VkIHRvICVzIHRoaXMgZmlsZS4nLCAvLyAlcyA9IG9wZW4gb3IgZWRpdAogICAgJ0VkaXQnID0+ICdFZGl0JywKICAgICdFZGl0X0ZpbGUnID0+ICJFZGl0IGZpbGUncyBjb250ZW50IiwKICAgICdGaWxlX1NhdmVfT0snID0+ICJGaWxlIHN1Y2Nlc3NmdWxseSBzYXZlZC4iLAogICAgJ0ZpbGVfU2F2ZV9FcnJvcicgPT4gIlRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSBzYXZpbmcgdGhlIGZpbGUuIiwKICAgICdOZXdfRmlsZScgPT4gJ05ldyBGaWxlJywKICAgICdOb19FeHRlbnNpb24nID0+ICdZb3UgaGF2ZSB0byBhZGQgYSBmaWxlIGV4dGVuc2lvbi4nLAogICAgJ1ZhbGlkX0V4dGVuc2lvbnMnID0+ICdWYWxpZCBleHRlbnNpb25zOiAlcycsIC8vICVzID0gdHh0LGxvZyBldGMuCiAgICAnVXBsb2FkX21lc3NhZ2UnID0+ICJEcm9wIGZpbGUgaGVyZSB0byB1cGxvYWQiLAoKICAgICdTRVJWRVIgRVJST1InID0+ICJTRVJWRVIgRVJST1IiLAogICAgJ2ZvcmJpZGRlbicgPT4gIkZvcmJpZGVuIiwKICAgICd3cm9uZyBwYXRoJyA9PiAiV3JvbmcgcGF0aCIsCiAgICAnd3JvbmcgbmFtZScgPT4gIldyb25nIG5hbWUiLAogICAgJ3dyb25nIGV4dGVuc2lvbicgPT4gIldyb25nIGV4dGVuc2lvbiIsCiAgICAnd3Jvbmcgb3B0aW9uJyA9PiAiV3Jvbmcgb3B0aW9uIiwKICAgICd3cm9uZyBkYXRhJyA9PiAiV3JvbmcgZGF0YSIsCiAgICAnd3JvbmcgYWN0aW9uJyA9PiAiV3JvbmcgYWN0aW9uIiwKICAgICd3cm9uZyBzdWItYWN0aW9uJyA9PiAiV3Jvbmcgc3ViLWFjdGlvIiwKICAgICdubyBhY3Rpb24gcGFzc2VkJyA9PiAiTm8gYWN0aW9uIHBhc3NlZCIsCiAgICAnbm8gcGF0aCcgPT4gIk5vIHBhdGgiLAogICAgJ25vIGZpbGUnID0+ICJObyBmaWxlIiwKICAgICd2aWV3IHR5cGUgbnVtYmVyIG1pc3NpbmcnID0+ICJWaWV3IHR5cGUgbnVtYmVyIG1pc3NpbmciLAogICAgJ05vdCBlbm91Z2ggTWVtb3J5JyA9PiAiTm90IGVub3VnaCBNZW1vcnkiLAogICAgJ21heF9zaXplX3JlYWNoZWQnID0+ICJZb3VyIGltYWdlIGZvbGRlciBoYXMgcmVhY2ggaXRzIG1heGltYWxlIHNpemUgb2YgJWQgTUIuIiwgLy8lZCA9IG1heCBvdmVyYWxsIHNpemUKICAgICdCJyA9PiAiQiIsCiAgICAnS0InID0+ICJLQiIsCiAgICAnTUInID0+ICJNQiIsCiAgICAnR0InID0+ICJHQiIsCiAgICAnVEInID0+ICJUQiIsCiAgICAndG90YWwgc2l6ZScgPT4gIlRvdGFsIHNpemUiLAopOwo=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/lang/nb_NO.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJldHVybiBhcnJheSgKCiAgICAnU2VsZWN0JyA9PiAnVmVsZycsCiAgICAnRGVzZWxlY3RfQWxsJyA9PiAnRGVzZWxlY3QgQWxsJywKICAgICdTZWxlY3RfQWxsJyA9PiAnU2VsZWN0IEFsbCcsCiAgICAnRXJhc2UnID0+ICdTbGV0dCcsCiAgICAnT3BlbicgPT4gJ8OFcG5lJywKICAgICdDb25maXJtX2RlbCcgPT4gJ0VyIGR1IHNpa2tlciBww6UgYXQgZHUgdmlsIHNsZXR0ZSBkZW5uZSBmaWxlbj8nLAogICAgJ0FsbCcgPT4gJ0FsbGUnLAogICAgJ0ZpbGVzJyA9PiAnRmlsZXInLAogICAgJ0ltYWdlcycgPT4gJ0JpbGRlcicsCiAgICAnQXJjaGl2ZXMnID0+ICdBcmtpdicsCiAgICAnRXJyb3JfVXBsb2FkJyA9PiAnRGVuIG9wcGxhc3RlZGUgZmlsZW4gb3ZlcnNrcmlkZXIgbWFrc2ltYWwgdGlsbGF0dCBzdMO4cnJlbHNlLicsCiAgICAnRXJyb3JfZXh0ZW5zaW9uJyA9PiAnRmlsdHlwZW4gZXIgaWtrZSB0aWxsYXR0LicsCiAgICAnVXBsb2FkX2ZpbGUnID0+ICdMYXN0IG9wcCBmaWwnLAogICAgJ0ZpbHRlcnMnID0+ICdGaWx0ZXInLAogICAgJ1ZpZGVvcycgPT4gJ1ZpZGVvZXInLAogICAgJ011c2ljJyA9PiAnTXVzaWtrJywKICAgICdOZXdfRm9sZGVyJyA9PiAnTnkgbWFwcGUnLAogICAgJ0ZvbGRlcl9DcmVhdGVkJyA9PiAnTWFwcGUgb3BwcmV0dGV0JywKICAgICdFeGlzdGluZ19Gb2xkZXInID0+ICdFa3Npc3RlcmVuZGUgbWFwcGUnLAogICAgJ0NvbmZpcm1fRm9sZGVyX2RlbCcgPT4gJ0VyIGR1IHNpa2tlciBww6UgYXQgZHUgdmlsIHNsZXR0ZSBtYXBwZW4gb2cgYWx0IGlubmhvbGRldD8nLAogICAgJ1JldHVybl9GaWxlc19MaXN0JyA9PiAnVGlsYmFrZSB0aWwgZmlsb3ZlcnNpa3RlbicsCiAgICAnUHJldmlldycgPT4gJ0ZvcmjDpW5kc3Zpc25pbmcnLAogICAgJ0Rvd25sb2FkJyA9PiAnTGFzdCBuZWQnLAogICAgJ0luc2VydF9Gb2xkZXJfTmFtZScgPT4gJ0dpIG1hcHBlbiBldCBuYXZuOicsCiAgICAnUm9vdCcgPT4gJ1JvdCcsCiAgICAnUmVuYW1lJyA9PiAnR2kgbnl0dCBuYXZuJywKICAgICdCYWNrJyA9PiAnVGlsYmFrZScsCiAgICAnVmlldycgPT4gJ1Zpc25pbmcnLAogICAgJ1ZpZXdfbGlzdCcgPT4gJ0xpc3RldmlzbmluZycsCiAgICAnVmlld19jb2x1bW5zX2xpc3QnID0+ICdTaWRlIHZlZCBzaWRlJywKICAgICdWaWV3X2JveGVzJyA9PiAnQm9rc3Zpc25pbmcnLAogICAgJ1Rvb2xiYXInID0+ICdWZXJrdMO4eWxpbmplJywKICAgICdBY3Rpb25zJyA9PiAnR2rDuHJlbcOlbCcsCiAgICAnUmVuYW1lX2V4aXN0aW5nX2ZpbGUnID0+ICdGaWxlbiBlciBhbGxlcmVkZSBvcHByZXR0ZXQnLAogICAgJ1JlbmFtZV9leGlzdGluZ19mb2xkZXInID0+ICdNYXBwZW4gZXIgYWxsZXJlZGUgb3BwcmV0dGV0JywKICAgICdFbXB0eV9uYW1lJyA9PiAnVG9tdCBuYXZuJywKICAgICdUZXh0X2ZpbHRlcicgPT4gJ1Rla3N0LWZpbHRlcicsCiAgICAnU3dpcGVfaGVscCcgPT4gJ1N2ZWlwIGZpbG5hdm5ldC9tYXBwZW5hdm5ldCBmb3Igw6UgdmlzZSBhbHRlcm5hdGl2ZXInLAogICAgJ1VwbG9hZF9iYXNlJyA9PiAnVmFubGlnIG9wcGxhc3RpbmcnLAogICAgJ1VwbG9hZF9iYXNlX2hlbHAnID0+ICJEcmFnICYgRHJvcCBmaWxlcyhtb2Rlcm4gYnJvd3NlcnMpIG9yIGNsaWNrIGluIHVwcGVyIGJ1dHRvbiB0byBBZGQgdGhlIGZpbGUocykgYW5kIGNsaWNrIG9uIFN0YXJ0IHVwbG9hZC4gV2hlbiB0aGUgdXBsb2FkIGlzIGNvbXBsZXRlLCBjbGljayB0aGUgJ1JldHVybiB0byBmaWxlcyBsaXN0JyBidXR0b24uIiwKICAgICdVcGxvYWRfYWRkX2ZpbGVzJyA9PiAnQWRkIGZpbGUocyknLAogICAgJ1VwbG9hZF9zdGFydCcgPT4gJ1N0YXJ0IHVwbG9hZCcsCiAgICAnVXBsb2FkX2Vycm9yX21lc3NhZ2VzJyA9PmFycmF5KAogICAgICAgIDEgPT4gJ1RoZSB1cGxvYWRlZCBmaWxlIGV4Y2VlZHMgdGhlIHVwbG9hZF9tYXhfZmlsZXNpemUgZGlyZWN0aXZlIGluIHBocC5pbmknLAogICAgICAgIDIgPT4gJ1RoZSB1cGxvYWRlZCBmaWxlIGV4Y2VlZHMgdGhlIE1BWF9GSUxFX1NJWkUgZGlyZWN0aXZlIHRoYXQgd2FzIHNwZWNpZmllZCBpbiB0aGUgSFRNTCBmb3JtJywKICAgICAgICAzID0+ICdUaGUgdXBsb2FkZWQgZmlsZSB3YXMgb25seSBwYXJ0aWFsbHkgdXBsb2FkZWQnLAogICAgICAgIDQgPT4gJ05vIGZpbGUgd2FzIHVwbG9hZGVkJywKICAgICAgICA2ID0+ICdNaXNzaW5nIGEgdGVtcG9yYXJ5IGZvbGRlcicsCiAgICAgICAgNyA9PiAnRmFpbGVkIHRvIHdyaXRlIGZpbGUgdG8gZGlzaycsCiAgICAgICAgOCA9PiAnQSBQSFAgZXh0ZW5zaW9uIHN0b3BwZWQgdGhlIGZpbGUgdXBsb2FkJywKICAgICAgICAncG9zdF9tYXhfc2l6ZScgPT4gJ1RoZSB1cGxvYWRlZCBmaWxlIGV4Y2VlZHMgdGhlIHBvc3RfbWF4X3NpemUgZGlyZWN0aXZlIGluIHBocC5pbmknLAogICAgICAgICdtYXhfZmlsZV9zaXplJyA9PiAnRmlsZSBpcyB0b28gYmlnJywKICAgICAgICAnbWluX2ZpbGVfc2l6ZScgPT4gJ0ZpbGUgaXMgdG9vIHNtYWxsJywKICAgICAgICAnYWNjZXB0X2ZpbGVfdHlwZXMnID0+ICdGaWxldHlwZSBub3QgYWxsb3dlZCcsCiAgICAgICAgJ21heF9udW1iZXJfb2ZfZmlsZXMnID0+ICdNYXhpbXVtIG51bWJlciBvZiBmaWxlcyBleGNlZWRlZCcsCiAgICAgICAgJ21heF93aWR0aCcgPT4gJ0ltYWdlIGV4Y2VlZHMgbWF4aW11bSB3aWR0aCcsCiAgICAgICAgJ21pbl93aWR0aCcgPT4gJ0ltYWdlIHJlcXVpcmVzIGEgbWluaW11bSB3aWR0aCcsCiAgICAgICAgJ21heF9oZWlnaHQnID0+ICdJbWFnZSBleGNlZWRzIG1heGltdW0gaGVpZ2h0JywKICAgICAgICAnbWluX2hlaWdodCcgPT4gJ0ltYWdlIHJlcXVpcmVzIGEgbWluaW11bSBoZWlnaHQnLAogICAgICAgICdhYm9ydCcgPT4gJ0ZpbGUgdXBsb2FkIGFib3J0ZWQnLAogICAgICAgICdpbWFnZV9yZXNpemUnID0+ICdGYWlsZWQgdG8gcmVzaXplIGltYWdlJwogICAgKSwKICAgICdVcGxvYWRfdXJsJyA9PiAnRnJvbSB1cmwnLAogICAgJ1R5cGVfZGlyJyA9PiAnTWFwcGUnLAogICAgJ1R5cGUnID0+ICdUeXBlJywKICAgICdEaW1lbnNpb24nID0+ICdEaW1lbnNqb25lcicsCiAgICAnU2l6ZScgPT4gJ1N0w7hycmVsc2UnLAogICAgJ0RhdGUnID0+ICdEYXRvJywKICAgICdGaWxlbmFtZScgPT4gJ0ZpbG5hdm4nLAogICAgJ09wZXJhdGlvbnMnID0+ICdIYW5kbGluZ2VyJywKICAgICdEYXRlX3R5cGUnID0+ICdkLm0ueScsCiAgICAnT0snID0+ICdPSycsCiAgICAnQ2FuY2VsJyA9PiAnQXZicnl0JywKICAgICdTb3J0aW5nJyA9PiAnU29ydGVyaW5nJywKICAgICdTaG93X3VybCcgPT4gJ1ZpcyBVUkwnLAogICAgJ0V4dHJhY3QnID0+ICdQYWtrIHV0IGhlcicsCiAgICAnRmlsZV9pbmZvJyA9PiAnRmlsLWluZm8nLAogICAgJ0VkaXRfaW1hZ2UnID0+ICdSZWRpZ2VyIGJpbGRlJywKICAgICdEdXBsaWNhdGUnID0+ICdEdXBsaWthdCcsCiAgICAnRm9sZGVycycgPT4gJ01hcHBlcicsCiAgICAnQ29weScgPT4gJ0tvcGllcicsCiAgICAnQ3V0JyA9PiAnS2xpcHAgdXQnLAogICAgJ1Bhc3RlJyA9PiAnTGltIGlubicsCiAgICAnQ0InID0+ICdVdGtsaXBwc3RhdmxlJywgLy8gY2xpcGJvYXJkCiAgICAnUGFzdGVfSGVyZScgPT4gJ0xpbSBpbm4gaSBkZW5uZSBtYXBwZW4nLAogICAgJ1Bhc3RlX0NvbmZpcm0nID0+ICdFciBkdSBzaWtrZXIgcMOlIGF0IGR1IHZpbCBsaW1lIGlubiBpIGRlbm5lIG1hcHBlbj8gRGV0dGUgdmlsIG92ZXJza3JpdmUgZXZlbnR1ZWxsZSBla3Npc3RlcmVuZGUgZmlsZXIgZWxsZXIgbWFwcGVyLicsCiAgICAnUGFzdGVfRmFpbGVkJyA9PiAnTGltIGlubiBmZWlsZXQnLAogICAgJ0NsZWFyX0NsaXBib2FyZCcgPT4gJ1TDuG0gdXRrbGlwcHN0YXZsZW4nLAogICAgJ0NsZWFyX0NsaXBib2FyZF9Db25maXJtJyA9PiAnRXIgZHUgc2lra2VyIHDDpSBhdCBkdSB2aWwgdMO4bW1lIHV0a2xpcHBzdGF2bGVuPycsCiAgICAnRmlsZXNfT05fQ2xpcGJvYXJkJyA9PiAnRGVyIGVyIGZpbGVyIHDDpSB1dGtsaXBwc3Rhdmxlbi4nLAogICAgJ0NvcHlfQ3V0X1NpemVfTGltaXQnID0+ICdEZSB2YWxndGUgZmlsZW5lL21hcHBlbmUgZXIgZm9yIHN0b3JlIGZvciAlcy4gR3JlbnNlOiAlZCBNQi9vcGVyYXNqb24nLCAvLyAlcyA9IGN1dCBvciBjb3B5CiAgICAnQ29weV9DdXRfQ291bnRfTGltaXQnID0+ICdEdSB2YWxndGUgZm9yIG1hbmdlIGZpbGVyL21hcHBlciBmb3IgJXMuIEdyZW5zZTogJWQgZmlsZXIvb3BlcmFzam9uJywgLy8gJXMgPSBjdXQgb3IgY29weQogICAgJ0NvcHlfQ3V0X05vdF9BbGxvd2VkJyA9PiAnRHUgaGFyIGlra2UgbG92IHRpbCDDpSAlcyBmaWxlci4nLCAvLyAlcygxKSA9IGN1dCBvciBjb3B5LCAlcygyKSA9IGZpbGVzIG9yIGZvbGRlcnMKICAgICdJbWFnZV9FZGl0b3JfTm9fU2F2ZScgPT4gJ0t1bm5lIGlra2UgbGFncmUgYmlsZGV0JywKICAgICdJbWFnZV9FZGl0b3JfRXhpdCcgPT4gIkV4aXQiLAogICAgJ0ltYWdlX0VkaXRvcl9TYXZlJyA9PiAiU2F2ZSIsCiAgICAnWmlwX05vX0V4dHJhY3QnID0+ICdLdW5uZSBpa2tlIHBha2tlIHV0LiBGaWxlbiBlciBtdWxpZ2VucyDDuGRlbGFndC4nLAogICAgJ1ppcF9JbnZhbGlkJyA9PiAnRGV0dGUgZmlsZXR0ZXJuYXZuZXQgZXIgaWtrZSBzdMO4dHRldC4gR3lsZGlnZSBmaWxlcjogemlwLCBneiwgdGFyLicsCiAgICAnRGlyX05vX1dyaXRlJyA9PiAnTWFwcGVuIGR1IHZhbGd0ZSBlciBpa2tlIHNrcml2YmFyLicsCiAgICAnRnVuY3Rpb25fRGlzYWJsZWQnID0+ICdGdW5rc2pvbmVuICVzIGVyIGJsaXR0IGRlYWt0aXZlcnQgYXYgc2VydmVyZW4uJywgLy8gJXMgPSBjdXQgb3IgY29weQogICAgJ0ZpbGVfUGVybWlzc2lvbicgPT4gJ0ZpbHJldHRpZ2hldGVyJywKICAgICdGaWxlX1Blcm1pc3Npb25fTm90X0FsbG93ZWQnID0+ICdGb3JhbmRyaW5nIGF2ICVzIHJldHRpZ2hldGVyIGVyIGlra2UgdGlsbGF0dC4nLCAvLyAlcyA9IGZpbGVzIG9yIGZvbGRlcnMKICAgICdGaWxlX1Blcm1pc3Npb25fUmVjdXJzaXZlJyA9PiAnVXRmw7hyIHJla3Vyc2l2dD8nLAogICAgJ0ZpbGVfUGVybWlzc2lvbl9Xcm9uZ19Nb2RlJyA9PiAiRmlscmV0dGlnaGV0ZW4gZXIgZmVpbC4iLAogICAgJ1VzZXInID0+ICdCcnVrZXInLAogICAgJ0dyb3VwJyA9PiAnR3J1cHBlJywKICAgICdZZXMnID0+ICdKYScsCiAgICAnTm8nID0+ICdOZWknLAogICAgJ0xhbmdfTm90X0ZvdW5kJyA9PiAnS3VubmUgaWtrZSBmaW5uZSBzcHLDpWsuJywKICAgICdMYW5nX0NoYW5nZScgPT4gJ0ZvcmFuZHJlIHNwcsOlaycsCiAgICAnRmlsZV9Ob3RfRm91bmQnID0+ICdGYW50IGlra2UgZmlsZW4uJywKICAgICdGaWxlX09wZW5fRWRpdF9Ob3RfQWxsb3dlZCcgPT4gJ0R1IGhhciBpa2tlIHRpbGxhdGVsc2UgdGlsIMOlICVzIGRlbm5lIGZpbGVuLicsIC8vICVzID0gb3BlbiBvciBlZGl0CiAgICAnRWRpdCcgPT4gJ1JlZGlnZXInLAogICAgJ0VkaXRfRmlsZScgPT4gIlJlZGlnZXIgZmlsZW5zIGlubmhvbGQiLAogICAgJ0ZpbGVfU2F2ZV9PSycgPT4gIkZpbGVuIGJsZSBsYWdyZXQuIiwKICAgICdGaWxlX1NhdmVfRXJyb3InID0+ICJEZXQgb3Bwc3RvZCBlbiBmZWlsIG7DpXIgZmlsZW4gYmxlIGxhZ3JldC4iLAogICAgJ05ld19GaWxlJyA9PiAnTnkgZmlsJywKICAgICdOb19FeHRlbnNpb24nID0+ICdEdSBtw6UgbGVnZ2UgdGlsIGV0IGZpbC1ldHRlcm5hdm4uJywKICAgICdWYWxpZF9FeHRlbnNpb25zJyA9PiAnR3lsZGlnZSBmaWwtZXR0ZXJuYXZuOiAlcycsIC8vICVzID0gdHh0LGxvZyBldGMuCiAgICAnVXBsb2FkX21lc3NhZ2UnID0+ICJEcm9wIGZpbGUgaGVyZSB0byB1cGxvYWQiLAoKICAgICdTRVJWRVIgRVJST1InID0+ICJTRVJWRVIgRVJST1IiLAogICAgJ2ZvcmJpZGRlbicgPT4gIkZvcmJpZGVuIiwKICAgICd3cm9uZyBwYXRoJyA9PiAiV3JvbmcgcGF0aCIsCiAgICAnd3JvbmcgbmFtZScgPT4gIldyb25nIG5hbWUiLAogICAgJ3dyb25nIGV4dGVuc2lvbicgPT4gIldyb25nIGV4dGVuc2lvbiIsCiAgICAnd3Jvbmcgb3B0aW9uJyA9PiAiV3Jvbmcgb3B0aW9uIiwKICAgICd3cm9uZyBkYXRhJyA9PiAiV3JvbmcgZGF0YSIsCiAgICAnd3JvbmcgYWN0aW9uJyA9PiAiV3JvbmcgYWN0aW9uIiwKICAgICd3cm9uZyBzdWItYWN0aW9uJyA9PiAiV3Jvbmcgc3ViLWFjdGlvIiwKICAgICdubyBhY3Rpb24gcGFzc2VkJyA9PiAiTm8gYWN0aW9uIHBhc3NlZCIsCiAgICAnbm8gcGF0aCcgPT4gIk5vIHBhdGgiLAogICAgJ25vIGZpbGUnID0+ICJObyBmaWxlIiwKICAgICd2aWV3IHR5cGUgbnVtYmVyIG1pc3NpbmcnID0+ICJWaWV3IHR5cGUgbnVtYmVyIG1pc3NpbmciLAogICAgJ05vdCBlbm91Z2ggTWVtb3J5JyA9PiAiTm90IGVub3VnaCBNZW1vcnkiLAogICAgJ21heF9zaXplX3JlYWNoZWQnID0+ICJZb3VyIGltYWdlIGZvbGRlciBoYXMgcmVhY2ggaXRzIG1heGltYWxlIHNpemUgb2YgJWQgTUIuIiwgLy8lZCA9IG1heCBvdmVyYWxsIHNpemUKICAgICdCJyA9PiAiQiIsCiAgICAnS0InID0+ICJLQiIsCiAgICAnTUInID0+ICJNQiIsCiAgICAnR0InID0+ICJHQiIsCiAgICAnVEInID0+ICJUQiIsCiAgICAndG90YWwgc2l6ZScgPT4gIlRvdGFsIHNpemUiLAopOwo=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/lang/nl.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJldHVybiBhcnJheSgKCiAgICAnU2VsZWN0JyA9PiAnU2VsZWN0ZXJlbicsCiAgICAnRGVzZWxlY3RfQWxsJyA9PiAnRGVzZWxlY3QgQWxsJywKICAgICdTZWxlY3RfQWxsJyA9PiAnU2VsZWN0IEFsbCcsCiAgICAnRXJhc2UnID0+ICdWZXJ3aWpkZXJlbicsCiAgICAnT3BlbicgPT4gJ09wZW5lbicsCiAgICAnQ29uZmlybV9kZWwnID0+ICdXZWV0IHUgemVrZXIgZGF0IHUgZGl0IGJlc3RhbmQgd2lsdCB2ZXJ3aWpkZXJlbj8nLAogICAgJ0FsbCcgPT4gJ0FsbGVzIFdlZXJnZXZlbicsCiAgICAnRmlsZXMnID0+ICdCZXN0YW5kZW4nLAogICAgJ0ltYWdlcycgPT4gJ0FmYmVlbGRpbmdlbicsCiAgICAnQXJjaGl2ZXMnID0+ICdBcmNoaWV2ZW4nLAogICAgJ0Vycm9yX1VwbG9hZCcgPT4gJ0hldCBiZXN0YW5kIG92ZXJzY2hyaWpkdCBkZSBtYXhpbXVtIHRvZWdlc3RhbmUgZ3Jvb3R0ZS4nLAogICAgJ0Vycm9yX2V4dGVuc2lvbicgPT4gJ0Jlc3RhbmQgZXh0ZW5zaWUgaXMgbmlldCB0b2VnZXN0YWFuJywKICAgICdVcGxvYWRfZmlsZScgPT4gJ0Jlc3RhbmQgdXBsb2FkZW4nLAogICAgJ0ZpbHRlcnMnID0+ICdGaWx0ZXInLAogICAgJ1ZpZGVvcycgPT4gJ1ZpZGVvcycsCiAgICAnTXVzaWMnID0+ICdNdXppZWsnLAogICAgJ05ld19GaWxlJyA9PiAnTmlldXcgYmVzdGFuZCcsCiAgICAnTmV3X0ZvbGRlcicgPT4gJ05pZXV3ZSBtYXAnLAogICAgJ0ZvbGRlcl9DcmVhdGVkJyA9PiAnTWFwIGFhbmdlbWFha3QnLAogICAgJ0V4aXN0aW5nX0ZvbGRlcicgPT4gJ0Jlc3RhYW5kZSBtYXAnLAogICAgJ0NvbmZpcm1fRm9sZGVyX2RlbCcgPT4gJ1dlZXQgdSB6ZWtlciBkYXQgdSBkZXplIG1hcCBlbiBhbGxlIGJlc3RhbmRlbiBoaWVyaW4gd2lsdCB2ZXJ3aWpkZXJlbj8nLAogICAgJ1JldHVybl9GaWxlc19MaXN0JyA9PiAnVGVydWcgbmFhciBiZXN0YW5kZW4nLAogICAgJ1ByZXZpZXcnID0+ICdWb29yYmVlbGQnLAogICAgJ0Rvd25sb2FkJyA9PiAnRG93bmxvYWQnLAogICAgJ0luc2VydF9Gb2xkZXJfTmFtZScgPT4gJ01hcCBuYWFtOicsCiAgICAnUm9vdCcgPT4gJ3Jvb3QnLAogICAgJ1JlbmFtZScgPT4gJ0hlcm5vZW1lbicsCiAgICAnQmFjaycgPT4gJ1RlcnVnJywKICAgICdWaWV3JyA9PiAnV2VlcmdhdmUnLAogICAgJ1ZpZXdfbGlzdCcgPT4gJ0xpanN0IHdlZXJnYXZlJywKICAgICdWaWV3X2NvbHVtbnNfbGlzdCcgPT4gJ0tvbG9tLWxpanN0IHdlZXJnYXZlJywKICAgICdWaWV3X2JveGVzJyA9PiAnVGVnZWwgd2VlcmdhdmUnLAogICAgJ1Rvb2xiYXInID0+ICdXZXJrYmFsaycsCiAgICAnQWN0aW9ucycgPT4gJ0FjdGllcycsCiAgICAnUmVuYW1lX2V4aXN0aW5nX2ZpbGUnID0+ICdIZXQgYmVzdGFuZCBiZXN0YWF0IGFsJywKICAgICdSZW5hbWVfZXhpc3RpbmdfZm9sZGVyJyA9PiAnRGUgbWFwIGJlc3RhYXQgYWwnLAogICAgJ0VtcHR5X25hbWUnID0+ICdEZSBiZXN0YW5kc25hYW0gaXMgbGVlZycsCiAgICAnVGV4dF9maWx0ZXInID0+ICdab2VrZW4uLi4nLAogICAgJ1N3aXBlX2hlbHAnID0+ICdTd2lwZSBvdmVyIGRlIG5hYW0gdmFuIGVlbiBiZXN0YW5kIG9mIG1hcCBvbSBvcHRpZXMgdGUgemllbicsCiAgICAnVXBsb2FkX2Jhc2UnID0+ICdTdGFuZGFhcmQgdXBsb2FkZXInLAogICAgJ1VwbG9hZF9iYXNlX2hlbHAnID0+ICJEcmFnICYgRHJvcCBiZXN0YW5kZW4gKG1vZGVybmUgYnJvd3NlcnMpIG9mIGtsaWsgb3AgZGUgYm92ZW5zdGUga25vcCBvbSBoZXQgYmVzdGFuZCAoZW4pIHRvZSB0ZSB2b2VnZW4gZW4ga2xpayBvcCBCZWdpbiB1cGxvYWRlbi4gV2FubmVlciBoZXQgdXBsb2FkZW4gaXMgdm9sdG9vaWQsIGtsaWt0IHUgb3AgZGUga25vcCAnVGVydWcgbmFhciBiZXN0YW5kZW4nLiIsCiAgICAnVXBsb2FkX2FkZF9maWxlcycgPT4gJ1ZvZWcgYmVzdGFuZGVuIHRvZScsCiAgICAnVXBsb2FkX3N0YXJ0JyA9PiAnQmVnaW4gdXBsb2FkZW4nLAogICAgJ1VwbG9hZF9lcnJvcl9tZXNzYWdlcycgPT5hcnJheSgKICAgICAgICAxID0+ICdCZXN0YW5kc2dyb290dGUgaXMgdGUgZ3Jvb3QuJywKICAgICAgICAyID0+ICdCZXN0YW5kc2dyb290dGUgaXMgdGUgZ3Jvb3QuJywKICAgICAgICAzID0+ICdCZXN0YW5kIGlzIHNsZWNodHMgZ2VkZWVsdGVsaWprIGdldXBsb2FkLicsCiAgICAgICAgNCA9PiAnSGV0IGJlc3RhbmQgaXMgbmlldCB1cGxvYWRlZC4nLAogICAgICAgIDYgPT4gJ0VyIG9udGJyZWVrdCBlZW4gZm9sZGVyLicsCiAgICAgICAgNyA9PiAnS2FuIGJlc3RhbmQgbmlldCB3ZWdzY2hyaWp2ZW4uJywKICAgICAgICA4ID0+ICdFZW4gZXh0ZW50aWUgaGVlZnQgaGV0IHVwbG9hZGVuIGdlc3RvcHQuJywKICAgICAgICAncG9zdF9tYXhfc2l6ZScgPT4gJ0Jlc3RhbmRzZ3Jvb3R0ZSBpcyB0ZSBncm9vdC4nLAogICAgICAgICdtYXhfZmlsZV9zaXplJyA9PiAnQmVzdGFuZHNncm9vdHRlIGlzIHRlIGdyb290LicsCiAgICAgICAgJ21pbl9maWxlX3NpemUnID0+ICdCZXN0YW5kc2dyb290dGUgaXMgdGUga2xlaW4uJywKICAgICAgICAnYWNjZXB0X2ZpbGVfdHlwZXMnID0+ICdCZXN0YW5kc3R5cGUgbmlldCBvbmRlcnN0ZXVuZC4nLAogICAgICAgICdtYXhfbnVtYmVyX29mX2ZpbGVzJyA9PiAnTWF4aW11bSBhYW50YWwgYmVzdGFuZGVuIGJlcmVpa3QuJywKICAgICAgICAnbWF4X3dpZHRoJyA9PiAnQWZiZWVsZGluZyB0ZSBicmVlZC4nLAogICAgICAgICdtaW5fd2lkdGgnID0+ICdBZmJlZWxkaW5nIG5pZXQgYnJlZWQgZ2Vub2VnLicsCiAgICAgICAgJ21heF9oZWlnaHQnID0+ICdBZmJlZWxkaW5nIHRlIGhvb2cuJywKICAgICAgICAnbWluX2hlaWdodCcgPT4gJ0FmYmVlbGRpbmcgbmlldCBob29nIGdlbm9lZy4nLAogICAgICAgICdhYm9ydCcgPT4gJ1VwbG9hZGVuIG9uZGVyYnJva2VuLicsCiAgICAgICAgJ2ltYWdlX3Jlc2l6ZScgPT4gJ1Jlc2l6ZW4gaXMgbWlzbHVrdC4nCiAgICApLAogICAgJ1VwbG9hZF91cmwnID0+ICdWYW4gdXJsJywKICAgICdUeXBlX2RpcicgPT4gJ21hcCcsCiAgICAnVHlwZScgPT4gJ1R5cGUnLAogICAgJ0RpbWVuc2lvbicgPT4gJ0FmbWV0aW5nZW4nLAogICAgJ1NpemUnID0+ICdHcm9vdHRlJywKICAgICdEYXRlJyA9PiAnRGF0dW0nLAogICAgJ0ZpbGVuYW1lJyA9PiAnTmFhbScsCiAgICAnT3BlcmF0aW9ucycgPT4gJ0Jld2Vya2luZ2VuJywKICAgICdEYXRlX3R5cGUnID0+ICdkLW0teScsCiAgICAnT0snID0+ICdPSycsCiAgICAnQ2FuY2VsJyA9PiAnQW5udWxlcmVuJywKICAgICdTb3J0aW5nJyA9PiAnU29ydGVyZW4gb3AnLAogICAgJ1Nob3dfdXJsJyA9PiAnVG9vbiBVUkwnLAogICAgJ0V4dHJhY3QnID0+ICdIaWVyIHVpdHBha2tlbicsCiAgICAnRmlsZV9pbmZvJyA9PiAnQmVzdGFuZHMtaW5mbycsCiAgICAnRWRpdF9pbWFnZScgPT4gJ0FmYmVlbGRpbmcgYmV3ZXJrZW4nLAogICAgJ0R1cGxpY2F0ZScgPT4gJ0R1cGxpY2VyZW4nLAogICAgJ0ZvbGRlcnMnID0+ICdGb2xkZXJzJywKICAgICdDb3B5JyA9PiAnS29wacOrcmVuJywKICAgICdDdXQnID0+ICdLbmlwcGVuJywKICAgICdQYXN0ZScgPT4gJ1BsYWtrZW4nLAogICAgJ0NCJyA9PiAnS2xlbWJvcmQnLCAvLyBjbGlwYm9hcmQKICAgICdQYXN0ZV9IZXJlJyA9PiAnSGllciBwbGFra2VuJywKICAgICdQYXN0ZV9Db25maXJtJyA9PiAnV2VldCB1IHpla2VyIGRhdCB1IGluIGRlemUgbWFwIHdpbHQgcGxha2tlbj8gRGl0IG92ZXJzY2hyaWpmdCBtYXBwZW4vYmVzdGFuZGVuIG1ldCBkZXplbGZkZSBuYWFtIGluZGllbiBkZXplIHZvb3Jrb21lbi4nLAogICAgJ1Bhc3RlX0ZhaWxlZCcgPT4gJ05pZXQgZ2VsdWt0IGRlIGJlc3RhbmRlbiB0ZSBwbGFra2VuJywKICAgICdDbGVhcl9DbGlwYm9hcmQnID0+ICdXaXMga2xlbWJvcmQnLAogICAgJ0NsZWFyX0NsaXBib2FyZF9Db25maXJtJyA9PiAnV2VldCB1IHpla2VyIGRhdCB1IGhldCBrbGVtYm9yZCB3aWx0IHdpc3Nlbj8nLAogICAgJ0ZpbGVzX09OX0NsaXBib2FyZCcgPT4gJ0VyIHN0YWFuIGJlc3RhbmRlbiBvcCBoZXQga2xlbWJvcmQuJywKICAgICdDb3B5X0N1dF9TaXplX0xpbWl0JyA9PiAnRGUgZ2VzZWxlY3RlZXJkZSBtYXBwZW4vYmVzdGFuZGVuIHppam4gdGUgZ3Jvb3Qgb20gdGUgJXMuIE1heGltYWFsOiAlZCBNQi9vcGVyYXRpb24nLCAvLyAlcyA9IGN1dCBvciBjb3B5CiAgICAnQ29weV9DdXRfQ291bnRfTGltaXQnID0+ICdlciB6aWpuIHRldmVlbCBtYXBwZW4vYmVzdGFuZGVuIGdlc2VsZWN0ZWVyZCBvbSB0ZSAlcy4gTWF4aW1hYWw6ICVkIGZpbGVzL29wZXJhdGlvbicsIC8vICVzID0gY3V0IG9yIGNvcHkKICAgICdDb3B5X0N1dF9Ob3RfQWxsb3dlZCcgPT4gJ0hldCBpcyBuaWV0IHRvZWdlc3RhYW4gYmVzdGFuZGVuIHRlICVzLicsIC8vICVzKDEpID0gY3V0IG9yIGNvcHksICVzKDIpID0gZmlsZXMgb3IgZm9sZGVycwogICAgJ0ltYWdlX0VkaXRvcl9Ob19TYXZlJyA9PiAnS2FuIGRlIGFmYmVlbGRpbmcgbmlldCBvcHNsYWFuJywKICAgICdJbWFnZV9FZGl0b3JfRXhpdCcgPT4gIkV4aXQiLAogICAgJ0ltYWdlX0VkaXRvcl9TYXZlJyA9PiAiU2F2ZSIsCiAgICAnWmlwX05vX0V4dHJhY3QnID0+ICdLYW4gbmlldCB1aXRwYWtrZW4uIEJlc3RhbmQgaXMgd2VsbGljaHQgYmVzY2hhZGlndC4nLAogICAgJ1ppcF9JbnZhbGlkJyA9PiAnRGV6ZSBleHRlbnNpZSBpcyBuaWV0IHRvZWdlc3RhYW4uIFZhbGlkOiB6aXAsIGd6LCB0YXIuJywKICAgICdEaXJfTm9fV3JpdGUnID0+ICdEZSBnZXNlbGVjdGVlcmRlIG1hcCBpcyBuaWV0IGJlc2NocmlqZmJhYXIuJywKICAgICdGdW5jdGlvbl9EaXNhYmxlZCcgPT4gJ0RlIGZ1bmN0aWUgJXMgaXMgdWl0Z2VzY2hha2VsZCBkb29yIGRlIHNlcnZlci4nLCAvLyAlcyA9IGN1dCBvciBjb3B5CiAgICAnRmlsZV9QZXJtaXNzaW9uJyA9PiAnUmVjaHRlbicsCiAgICAnRmlsZV9QZXJtaXNzaW9uX05vdF9BbGxvd2VkJyA9PiAnQWFucGFzc2VuIHZhbiBkZSByZWNodGVuIHZhbiAlcyBpcyBuaWV0IHRvZWdlc3RhYW4uJywgLy8gJXMgPSBmaWxlcyBvciBmb2xkZXJzCiAgICAnRmlsZV9QZXJtaXNzaW9uX1JlY3Vyc2l2ZScgPT4gJ1RvZXBhc3NlbiB2b29yIGFsbGVzIGJpbm5lbiBkZXplIG1hcD8nLAogICAgJ0ZpbGVfUGVybWlzc2lvbl9Xcm9uZ19Nb2RlJyA9PiAiRGUgZ2V3ZW5zdGUgcmVjaHRlbiB6aWpuIG5pZXQganVpc3QuIiwKICAgICdVc2VyJyA9PiAnR2VicnVpa2VyJywKICAgICdHcm91cCcgPT4gJ0dyb2VwJywKICAgICdZZXMnID0+ICdKYScsCiAgICAnTm8nID0+ICdOZWUnLAogICAgJ0xhbmdfTm90X0ZvdW5kJyA9PiAnS2FuIGRlIHRhYWwgbmlldCB2aW5kZW4uJywKICAgICdMYW5nX0NoYW5nZScgPT4gJ1ZlcmFuZGVyIGRlIHRhYWwnLAogICAgJ0ZpbGVfTm90X0ZvdW5kJyA9PiAnS2FuIGhldCBiZXN0YW5kIG5pZXQgdmluZGVuLicsCiAgICAnRmlsZV9PcGVuX0VkaXRfTm90X0FsbG93ZWQnID0+ICdKZSBiZW50IG5pZXQgYmV2b2VnZCBkaXQgYmVzdGFuZCB0ZSAlcy4nLCAvLyAlcyA9IG9wZW4gb3IgZWRpdAogICAgJ0VkaXQnID0+ICdCZXdlcmtlbicsCiAgICAnRWRpdF9GaWxlJyA9PiAiQmV3ZXJrdCBkZSBpbmhvdWQgdmFuIGRpdCBiZXN0YW5kIiwKICAgICdGaWxlX1NhdmVfT0snID0+ICJCZXN0YW5kIGlzIG9wZ2VzbGFnZW4uIiwKICAgICdGaWxlX1NhdmVfRXJyb3InID0+ICJFciBpcyBlZW4gZm91dCBvcGdldHJlZGVuIHRpamRlbnMgaGV0IG9wc2xhYW4gdmFuIGhldCBiZXN0YW5kLiIsCiAgICAnTm9fRXh0ZW5zaW9uJyA9PiAnSmUgbW9ldCBlZW4gYmVzdGFuZHMtZXh0ZW5zaWUgdG9ldm9lZ2VuLicsCiAgICAnVmFsaWRfRXh0ZW5zaW9ucycgPT4gJ0dlbGRpZ2UgZXh0ZW5zaWVzOiAlcycsIC8vICVzID0gdHh0LGxvZyBldGMuCiAgICAnVXBsb2FkX21lc3NhZ2UnID0+ICJTbGVlcCBoaWVyIGJlc3RhbmRlbiBvbSB0ZSB1cGxvYWRlbiIsCgogICAgJ1NFUlZFUiBFUlJPUicgPT4gIlNFUlZFUiBFUlJPUiIsCiAgICAnZm9yYmlkZGVuJyA9PiAiVmVyYm9kZW4iLAogICAgJ3dyb25nIHBhdGgnID0+ICJXcm9uZyBwYXRoIiwKICAgICd3cm9uZyBuYW1lJyA9PiAiV3JvbmcgbmFtZSIsCiAgICAnd3JvbmcgZXh0ZW5zaW9uJyA9PiAiV3JvbmcgZXh0ZW5zaW9uIiwKICAgICd3cm9uZyBvcHRpb24nID0+ICJXcm9uZyBvcHRpb24iLAogICAgJ3dyb25nIGRhdGEnID0+ICJXcm9uZyBkYXRhIiwKICAgICd3cm9uZyBhY3Rpb24nID0+ICJXcm9uZyBhY3Rpb24iLAogICAgJ3dyb25nIHN1Yi1hY3Rpb24nID0+ICJXcm9uZyBzdWItYWN0aW8iLAogICAgJ25vIGFjdGlvbiBwYXNzZWQnID0+ICJObyBhY3Rpb24gcGFzc2VkIiwKICAgICdubyBwYXRoJyA9PiAiTm8gcGF0aCIsCiAgICAnbm8gZmlsZScgPT4gIk5vIGZpbGUiLAogICAgJ3ZpZXcgdHlwZSBudW1iZXIgbWlzc2luZycgPT4gIlZpZXcgdHlwZSBudW1iZXIgbWlzc2luZyIsCiAgICAnTm90IGVub3VnaCBNZW1vcnknID0+ICJOb3QgZW5vdWdoIE1lbW9yeSIsCiAgICAnbWF4X3NpemVfcmVhY2hlZCcgPT4gIllvdXIgaW1hZ2UgZm9sZGVyIGhhcyByZWFjaCBpdHMgbWF4aW1hbGUgc2l6ZSBvZiAlZCBNQi4iLCAvLyVkID0gbWF4IG92ZXJhbGwgc2l6ZQogICAgJ0InID0+ICJCIiwKICAgICdLQicgPT4gIktCIiwKICAgICdNQicgPT4gIk1CIiwKICAgICdHQicgPT4gIkdCIiwKICAgICdUQicgPT4gIlRCIiwKICAgICd0b3RhbCBzaXplJyA9PiAiVG90YWwgc2l6ZSIsCik7Cg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/lang/nn_NO.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJldHVybiBhcnJheSgKCiAgICAnU2VsZWN0JyA9PiAnVmVsJywKICAgICdEZXNlbGVjdF9BbGwnID0+ICdEZXNlbGVjdCBBbGwnLAogICAgJ1NlbGVjdF9BbGwnID0+ICdTZWxlY3QgQWxsJywKICAgICdFcmFzZScgPT4gJ1NsZXR0JywKICAgICdPcGVuJyA9PiAnT3BuZScsCiAgICAnQ29uZmlybV9kZWwnID0+ICdFciBkdSBzaWtrZXIgcMOlIGF0IGR1IHZpbCBzbGV0dGUgZGVubmUgZmlsYT8nLAogICAgJ0FsbCcgPT4gJ0FsbGUnLAogICAgJ0ZpbGVzJyA9PiAnRmlsZXInLAogICAgJ0ltYWdlcycgPT4gJ0JpbGV0ZScsCiAgICAnQXJjaGl2ZXMnID0+ICdBcmtpdicsCiAgICAnRXJyb3JfVXBsb2FkJyA9PiAnRGVuIG9wcGxhc3RhIGZpbGEgb3ZlciBvdmVyIG1ha3NpbWFsIHRpbGxhdGVuIHN0b3JsZWlrLicsCiAgICAnRXJyb3JfZXh0ZW5zaW9uJyA9PiAnRGVubmUgZmlsdHlwZW4gZXIgaWtramUgbG92LicsCiAgICAnVXBsb2FkX2ZpbGUnID0+ICdMYXN0IG9wcCBmaWwnLAogICAgJ0ZpbHRlcnMnID0+ICdGaWx0ZXInLAogICAgJ1ZpZGVvcycgPT4gJ1ZpZGVvYXInLAogICAgJ011c2ljJyA9PiAnTXVzaWtrJywKICAgICdOZXdfRm9sZGVyJyA9PiAnTnkgbWFwcGUnLAogICAgJ0ZvbGRlcl9DcmVhdGVkJyA9PiAnTWFwcGUgb3BwcmV0dGEnLAogICAgJ0V4aXN0aW5nX0ZvbGRlcicgPT4gJ0Vrc2lzdGVyYW5kZSBtYXBwZScsCiAgICAnQ29uZmlybV9Gb2xkZXJfZGVsJyA9PiAnRXIgZHUgc2lra2VyIHDDpSBhdCBkdSB2aWwgc2xldHRlIG1hcHBhIG9nIGFsdCBpbm5oYWxkZXQ/JywKICAgICdSZXR1cm5fRmlsZXNfTGlzdCcgPT4gJ1RpbGJha2UgdGlsIGZpbG92ZXJzaWt0YScsCiAgICAnUHJldmlldycgPT4gJ0bDuHJlaGFuZHN2aXNpbmcnLAogICAgJ0Rvd25sb2FkJyA9PiAnTGFzdCBuZWQnLAogICAgJ0luc2VydF9Gb2xkZXJfTmFtZScgPT4gJ0dpIG1hcHBhIGVpdCBuYW1uOicsCiAgICAnUm9vdCcgPT4gJ1JvdCcsCiAgICAnUmVuYW1lJyA9PiAnR2kgbnl0dCBuYW1uJywKICAgICdCYWNrJyA9PiAnVGlsYmFrZScsCiAgICAnVmlldycgPT4gJ1Zpc2luZycsCiAgICAnVmlld19saXN0JyA9PiAnTGlzdGV2aXNpbmcnLAogICAgJ1ZpZXdfY29sdW1uc19saXN0JyA9PiAnU2lkZSB2ZWQgc2lkZScsCiAgICAnVmlld19ib3hlcycgPT4gJ0Jva3N2aXNpbmcnLAogICAgJ1Rvb2xiYXInID0+ICdWZXJrdMO4eWxpbmplJywKICAgICdBY3Rpb25zJyA9PiAnR2plcmVtw6VsJywKICAgICdSZW5hbWVfZXhpc3RpbmdfZmlsZScgPT4gJ0ZpbGEgZXIgb3BwcmV0dGEgZnLDpSBmw7hyJywKICAgICdSZW5hbWVfZXhpc3RpbmdfZm9sZGVyJyA9PiAnTWFwcGEgZXIgb3BwcmV0dGEgZnLDpSBmw7hyJywKICAgICdFbXB0eV9uYW1lJyA9PiAnVG9tdCBuYW1uJywKICAgICdUZXh0X2ZpbHRlcicgPT4gJ1Rla3N0LWZpbHRlcicsCiAgICAnU3dpcGVfaGVscCcgPT4gJ1N2ZWlwIGZpbG5hbW5ldC9tYXBwZW5hbW5ldCBmb3Igw6Ugc2rDpSBhbHRlcm5hdGl2JywKICAgICdVcGxvYWRfYmFzZScgPT4gJ1ZhbmxlZyBvcHBsYXN0aW5nJywKICAgICdVcGxvYWRfYmFzZV9oZWxwJyA9PiAiRHJhIG9nIHNsZXBwIGZpbGVyIChtb2Rlcm5lIG5ldHRsZXNhcmFyKSBlbGxlciBrbGlrayBww6Uga25hcHBlbiDCq0xlZ2cgdGlsIGZpbChlcinCuyDDuHZzdCBvZyBkZXJldHRlciBww6UgwqtTdGFydCBvcHBsYXN0aW5nwrsuIE7DpXIgb3BwbGFzdGluZ2EgZXIgZmVyZGlnLCBrbGlrayBrbmFwcGVuIMKrVGlsYmFrZSB0aWwgZmlsb3ZlcnNpa3RhwrsuIiwKICAgICdVcGxvYWRfYWRkX2ZpbGVzJyA9PiAnTGVnZyB0aWwgZmlsKGVyKScsCiAgICAnVXBsb2FkX3N0YXJ0JyA9PiAnU3RhcnQgb3BwbGFzdGluZycsCiAgICAnVXBsb2FkX2Vycm9yX21lc3NhZ2VzJyA9PmFycmF5KAogICAgICAgIDEgPT4gJ0ZpbGEgZW5uIHN0w7hycmUgZW5uIGdyZW5zYSB1cGxvYWRfbWF4X2ZpbGVzaXplIGkgcGhwLmluaScsCiAgICAgICAgMiA9PiAnRmlsYSBlciBzdMO4cnJlIGVubiBkaXJla3RpdmV0IE1BWF9GSUxFX1NJWkUgaSBIVE1MLXNramVtYWV0JywKICAgICAgICAzID0+ICdGaWxhIHZhcnQgYmVycmUgZGVsdmlzIG9wcGxhc3RhJywKICAgICAgICA0ID0+ICdJbmdhIGZpbCB2YXJ0IG9wcGxhc3RhJywKICAgICAgICA2ID0+ICdNYW5nbGFyIG1hcHBlIGZvciBtZWxsb21iZWxzIGxhZ3JpbmcnLAogICAgICAgIDcgPT4gJ0Zla2sgaWtramUgdGlsIMOlIHNrcml2ZSBmaWxhIHRpbCBkaXNrZW4nLAogICAgICAgIDggPT4gJ0VpIFBIUC11dHZpZGluZyBzdGFuc2EgZmlsb3BwbGFzdGluZ2EnLAogICAgICAgICdwb3N0X21heF9zaXplJyA9PiAnRmlsYSBlbm4gc3TDuHJyZSBlbm4gZGV0IHNvbSBlciBzZXR0IHNvbSBwb3N0X21heF9zaXplIGkgcGhwLmluaScsCiAgICAgICAgJ21heF9maWxlX3NpemUnID0+ICdGaWxlIGVyIGZvciBzdG9yJywKICAgICAgICAnbWluX2ZpbGVfc2l6ZScgPT4gJ0ZpbGUgZXIgZm9yIGxpdGEnLAogICAgICAgICdhY2NlcHRfZmlsZV90eXBlcycgPT4gJ0ZpbGV0eXBlbiBlciBpa2tqZSBsb3YnLAogICAgICAgICdtYXhfbnVtYmVyX29mX2ZpbGVzJyA9PiAnU8OlIG1hbmdlIGZpbGVyIGVyIGlra2plIGxvdicsCiAgICAgICAgJ21heF93aWR0aCcgPT4gJ0JpbGV0ZXQgZXIgZm9yIGJyZWl0dCcsCiAgICAgICAgJ21pbl93aWR0aCcgPT4gJ0JpbGV0ZXQgZXIgaWtramUgYnJlaXR0IG5vaycsCiAgICAgICAgJ21heF9oZWlnaHQnID0+ICdCaWxldGV0IGVyIGZvciBow7hndCcsCiAgICAgICAgJ21pbl9oZWlnaHQnID0+ICdCaWxldGV0IGVyIGlra2plIGjDuGd0IG5vaycsCiAgICAgICAgJ2Fib3J0JyA9PiAnRmlsb3BwbGFzdGluZyBhdmJyb3RlbicsCiAgICAgICAgJ2ltYWdlX3Jlc2l6ZScgPT4gJ0t1bm5lIGlra2plIGVuZHJlIHN0b3JsZWlrIHDDpSBiaWxldGV0JwogICAgKSwKICAgICdVcGxvYWRfdXJsJyA9PiAnVVJMIGZvciBvcHBsYXN0aW5nJywKICAgICdUeXBlX2RpcicgPT4gJ01hcHBlJywKICAgICdUeXBlJyA9PiAnVHlwZScsCiAgICAnRGltZW5zaW9uJyA9PiAnRGltZW5zam9uYXInLAogICAgJ1NpemUnID0+ICdTdG9ybGVpaycsCiAgICAnRGF0ZScgPT4gJ0RhdG8nLAogICAgJ0ZpbGVuYW1lJyA9PiAnRmlsbmFtbicsCiAgICAnT3BlcmF0aW9ucycgPT4gJ0hhbmRsaW5nYXInLAogICAgJ0RhdGVfdHlwZScgPT4gJ2QubS55JywKICAgICdPSycgPT4gJ09LJywKICAgICdDYW5jZWwnID0+ICdBdmJyeXQnLAogICAgJ1NvcnRpbmcnID0+ICdTb3J0ZXJpbmcnLAogICAgJ1Nob3dfdXJsJyA9PiAnVmlzIFVSTCcsCiAgICAnRXh0cmFjdCcgPT4gJ1Bha2sgdXQgaGVyJywKICAgICdGaWxlX2luZm8nID0+ICdGaWwtaW5mbycsCiAgICAnRWRpdF9pbWFnZScgPT4gJ1JlZGlnZXIgYmlsZXRlJywKICAgICdEdXBsaWNhdGUnID0+ICdEdXBsaWthdCcsCiAgICAnRm9sZGVycycgPT4gJ01hcHBlcicsCiAgICAnQ29weScgPT4gJ0tvcGllcicsCiAgICAnQ3V0JyA9PiAnS2xpcHAgdXQnLAogICAgJ1Bhc3RlJyA9PiAnTGltIGlubicsCiAgICAnQ0InID0+ICdVdGtsaXBwc3RhdmxlJywgLy8gY2xpcGJvYXJkCiAgICAnUGFzdGVfSGVyZScgPT4gJ0xpbSBpbm4gaSBkZW5uZSBtYXBwYScsCiAgICAnUGFzdGVfQ29uZmlybScgPT4gJ0VyIGR1IHNpa2tlciBww6UgYXQgZHUgdmlsIGxpbWUgaW5uIGkgZGVubmUgbWFwcGE/IERldHRlIHZpbCBvdmVyc2tyaXZlIGV2ZW50dWVsbGUgZWtzaXN0ZXJhbmRlIGZpbGVyIGVsbGVyIG1hcHBlci4nLAogICAgJ1Bhc3RlX0ZhaWxlZCcgPT4gJ0lubm5saW1pbmcgZmVpbGEnLAogICAgJ0NsZWFyX0NsaXBib2FyZCcgPT4gJ1TDuG0gdXRrbGlwcHN0YXZsYScsCiAgICAnQ2xlYXJfQ2xpcGJvYXJkX0NvbmZpcm0nID0+ICdFciBkdSBzaWtrZXIgcMOlIGF0IGR1IHZpbCB0w7htbWUgdXRrbGlwcHN0YXZsYT8nLAogICAgJ0ZpbGVzX09OX0NsaXBib2FyZCcgPT4gJ0RldCBlciBmaWxlciBww6UgdXRrbGlwcHN0YXZsYS4nLAogICAgJ0NvcHlfQ3V0X1NpemVfTGltaXQnID0+ICdEZWkgdmFsZGUgZmlsZW5lL21hcHBlbmUgZXIgZm9yIHN0b3JlIGZvciAlcy4gR3JlbnNlOiAlZCBNQi9vcGVyYXNqb24nLCAvLyAlcyA9IGN1dCBvciBjb3B5CiAgICAnQ29weV9DdXRfQ291bnRfTGltaXQnID0+ICdEdSB2YWxkZSBmb3IgbWFuZ2UgZmlsZXIvbWFwcGVyIGZvciAlcy4gR3JlbnNlOiAlZCBmaWxlci9vcGVyYXNqb24nLCAvLyAlcyA9IGN1dCBvciBjb3B5CiAgICAnQ29weV9DdXRfTm90X0FsbG93ZWQnID0+ICdEdSBoYXIgaWtramUgbG92IHRpbCDDpSAlcyBmaWxlci4nLCAvLyAlcygxKSA9IGN1dCBvciBjb3B5LCAlcygyKSA9IGZpbGVzIG9yIGZvbGRlcnMKICAgICdJbWFnZV9FZGl0b3JfTm9fU2F2ZScgPT4gJ0t1bm5lIGlra2plIGxhZ3JlIGJpbGV0ZXQnLAogICAgJ0ltYWdlX0VkaXRvcl9FeGl0JyA9PiAiRXhpdCIsCiAgICAnSW1hZ2VfRWRpdG9yX1NhdmUnID0+ICJTYXZlIiwKICAgICdaaXBfTm9fRXh0cmFjdCcgPT4gJ0t1bm5lIGlra2plIHBha2tlIHV0LiBGaWxhIGthbiB2ZXJlIHNrYWRhLicsCiAgICAnWmlwX0ludmFsaWQnID0+ICdEZXR0ZSBmaWxldHRlcm5hbW5ldCBlciBpa2tqZSBzdMO4dHRhLiBHeWxkaWdlIGZpbGVyOiB6aXAsIGd6LCB0YXIuJywKICAgICdEaXJfTm9fV3JpdGUnID0+ICdNYXBwYSBkdSB2YWxkZSBrYW4gaWtramUgc2tyaXZhc3QgdGlsLicsCiAgICAnRnVuY3Rpb25fRGlzYWJsZWQnID0+ICdGdW5rc2pvbmVuICVzIGVyIGRlYWt0aXZlcnQgYXYgc2VydmVyZW4uJywgLy8gJXMgPSBjdXQgb3IgY29weQogICAgJ0ZpbGVfUGVybWlzc2lvbicgPT4gJ0ZpbGzDuHl2ZScsCiAgICAnRmlsZV9QZXJtaXNzaW9uX05vdF9BbGxvd2VkJyA9PiAnRW5kcmluZyBhdiAlcyBsw7h5dmUgZXIgaWtramUgbG92LicsIC8vICVzID0gZmlsZXMgb3IgZm9sZGVycwogICAgJ0ZpbGVfUGVybWlzc2lvbl9SZWN1cnNpdmUnID0+ICdVdGbDuHIgcmVrdXJzaXZ0PycsCiAgICAnRmlsZV9QZXJtaXNzaW9uX1dyb25nX01vZGUnID0+ICJGaWxsw7h5dmV0IGVyIGZlaWwuIiwKICAgICdVc2VyJyA9PiAnQnJ1a2FyJywKICAgICdHcm91cCcgPT4gJ0dydXBwZScsCiAgICAnWWVzJyA9PiAnSmEnLAogICAgJ05vJyA9PiAnTmVpJywKICAgICdMYW5nX05vdF9Gb3VuZCcgPT4gJ0t1bm5lIGlra2plIGZpbm5lIHNwcsOlay4nLAogICAgJ0xhbmdfQ2hhbmdlJyA9PiAnRW5kcmUgc3Byw6VrJywKICAgICdGaWxlX05vdF9Gb3VuZCcgPT4gJ0Zhbm4gaWtramUgZmlsYS4nLAogICAgJ0ZpbGVfT3Blbl9FZGl0X05vdF9BbGxvd2VkJyA9PiAnRHUgaGFyIGlra2plIGxvdiB0aWwgw6UgJXMgZGVubmUgZmlsYS4nLCAvLyAlcyA9IG9wZW4gb3IgZWRpdAogICAgJ0VkaXQnID0+ICdSZWRpZ2VyJywKICAgICdFZGl0X0ZpbGUnID0+ICJSZWRpZ2VyIGZpbGlubmhhbGRldCIsCiAgICAnRmlsZV9TYXZlX09LJyA9PiAiRmlsYSB2YXJ0IGxhZ3JhLiIsCiAgICAnRmlsZV9TYXZlX0Vycm9yJyA9PiAiRGV0IG9wcHN0b2QgZWluIGZlaWwgdmVkIGxhZ3JpbmcgYXYgZmlsYS4iLAogICAgJ05ld19GaWxlJyA9PiAnTnkgZmlsJywKICAgICdOb19FeHRlbnNpb24nID0+ICdEdSBtw6UgbGVnZ2UgdGlsIGVpdCBmaWwtZXR0ZXJuYW1uLicsCiAgICAnVmFsaWRfRXh0ZW5zaW9ucycgPT4gJ0d5bGRpZ2UgZmlsLWV0dGVybmFtbjogJXMnLCAvLyAlcyA9IHR4dCxsb2cgZXRjLgogICAgJ1VwbG9hZF9tZXNzYWdlJyA9PiAiU2xlcHAgZmlsYSBoZXIgZm9yIMOlIGxhc3RlIG9wcCIsCgogICAgJ1NFUlZFUiBFUlJPUicgPT4gIlNFUlZFUkZFSUwiLAogICAgJ2ZvcmJpZGRlbicgPT4gIklra2plIGxvdiIsCiAgICAnd3JvbmcgcGF0aCcgPT4gIkZlaWwgYmFuZSIsCiAgICAnd3JvbmcgbmFtZScgPT4gIkZlaWwgbmFtbiIsCiAgICAnd3JvbmcgZXh0ZW5zaW9uJyA9PiAiRmVpbCB1dHZpZGluZyIsCiAgICAnd3Jvbmcgb3B0aW9uJyA9PiAiRmVpbCB2YWwiLAogICAgJ3dyb25nIGRhdGEnID0+ICJGZWlsIGRhdGEiLAogICAgJ3dyb25nIGFjdGlvbicgPT4gIkZlaWwgaGFuZGxpbmciLAogICAgJ3dyb25nIHN1Yi1hY3Rpb24nID0+ICJGZWlsIHVuZGVyaGFuZGxpbmciLAogICAgJ25vIGFjdGlvbiBwYXNzZWQnID0+ICJJbmdhIGhhbmRsaW5nIHNlbmR0IiwKICAgICdubyBwYXRoJyA9PiAiSW5nZW4gYmFuZSIsCiAgICAnbm8gZmlsZScgPT4gIkluZ2EgZmlsIiwKICAgICd2aWV3IHR5cGUgbnVtYmVyIG1pc3NpbmcnID0+ICJNYW5nbGFyIHR5cGVudW1tZXIgZm9yIHZpc2luZyIsCiAgICAnTm90IGVub3VnaCBNZW1vcnknID0+ICJJa2tqZSBub2sgbWlubmUiLAogICAgJ21heF9zaXplX3JlYWNoZWQnID0+ICJCaWxldG1hcHBhIGRpIGhhciBuw6VkZCBzaW4gbWFrc2ltYWxlIHN0b3JsZWlrICVkIE1CLiIsIC8vJWQgPSBtYXggb3ZlcmFsbCBzaXplCiAgICAnQicgPT4gIkIiLAogICAgJ0tCJyA9PiAiS0IiLAogICAgJ01CJyA9PiAiTUIiLAogICAgJ0dCJyA9PiAiR0IiLAogICAgJ1RCJyA9PiAiVEIiLAogICAgJ3RvdGFsIHNpemUnID0+ICJUb3RhbCBzdG9ybGVpayIsCik7Cg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/lang/pl.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJldHVybiBhcnJheSgKCiAgICAnU2VsZWN0JyA9PiAnV3liaWVyeicsCiAgICAnRGVzZWxlY3RfQWxsJyA9PiAnRGVzZWxlY3QgQWxsJywKICAgICdTZWxlY3RfQWxsJyA9PiAnU2VsZWN0IEFsbCcsCiAgICAnRXJhc2UnID0+ICdVc3XFhCcsCiAgICAnT3BlbicgPT4gJ090d8OzcnonLAogICAgJ0NvbmZpcm1fZGVsJyA9PiAnQ3p5IGplc3RlxZsgcGV3aWVuLCDFvGUgY2hjZXN6IHVzdW7EhcSHIHRlbiBwbGlrPycsCiAgICAnQWxsJyA9PiAnV3N6eXN0a2llJywKICAgICdGaWxlcycgPT4gJ1BsaWtpJywKICAgICdJbWFnZXMnID0+ICdaZGrEmWNpYScsCiAgICAnQXJjaGl2ZXMnID0+ICdBcmNoaXdhJywKICAgICdFcnJvcl9VcGxvYWQnID0+ICdQbGlrIHByemVrcmFjemEgbWFrc3ltYWxueSBkb3p3b2xvbnkgcm96bWlhci4nLAogICAgJ0Vycm9yX2V4dGVuc2lvbicgPT4gJ05pZWRvendvbG9uZSByb3pzemVyemVuaWUgcGxpa3UuJywKICAgICdVcGxvYWRfZmlsZScgPT4gJ1dncmFqIHBsaWsnLAogICAgJ0ZpbHRlcnMnID0+ICdGaWx0ciB3aWRva3UnLAogICAgJ1ZpZGVvcycgPT4gJ0ZpbG15JywKICAgICdNdXNpYycgPT4gJ011enlrYScsCiAgICAnTmV3X0ZvbGRlcicgPT4gJ05vd3kgZm9sZGVyJywKICAgICdGb2xkZXJfQ3JlYXRlZCcgPT4gJ0ZvbGRlciB6b3N0YcWCIHV0d29yem9ueSBwb3ByYXduaWUnLAogICAgJ0V4aXN0aW5nX0ZvbGRlcicgPT4gJ0lzdG5pZWrEhWN5IGZvbGRlcicsCiAgICAnQ29uZmlybV9Gb2xkZXJfZGVsJyA9PiAnQ3p5IGplc3RlxZsgcGV3aWVuLCDFvGUgY2hjZXN6IHVzdW7EhcSHIGZvbGRlciBpIHdzenlzdGtvIGNvIHpuYWpkdWplIHNpxJnCoHcgbmltPycsCiAgICAnUmV0dXJuX0ZpbGVzX0xpc3QnID0+ICdQb3dyw7N0IGRvIGxpc3R5IHBsaWvDs3cnLAogICAgJ1ByZXZpZXcnID0+ICdQb2RnbMSFZCcsCiAgICAnRG93bmxvYWQnID0+ICdQb2JpZXJ6JywKICAgICdJbnNlcnRfRm9sZGVyX05hbWUnID0+ICdQb2RhaiBuYXp3xJkgZm9sZGVydTonLAogICAgJ1Jvb3QnID0+ICdyb290JywKICAgICdSZW5hbWUnID0+ICdabWllxYQgbmF6d8SZJywKICAgICdCYWNrJyA9PiAnWy4uXScsCiAgICAnVmlldycgPT4gJ1dpZG9rJywKICAgICdWaWV3X2xpc3QnID0+ICdMaXN0YScsCiAgICAnVmlld19jb2x1bW5zX2xpc3QnID0+ICdLb2x1bW5vd3knLAogICAgJ1ZpZXdfYm94ZXMnID0+ICdCbG9rb3d5JywKICAgICdUb29sYmFyJyA9PiAnUGFzZWsnLAogICAgJ0FjdGlvbnMnID0+ICdPcGNqZScsCiAgICAnUmVuYW1lX2V4aXN0aW5nX2ZpbGUnID0+ICdUZW4gcGxpayBqdcW8IHR1dGFqIHVtaWVzemN6b25vJywKICAgICdSZW5hbWVfZXhpc3RpbmdfZm9sZGVyJyA9PiAnVGVuIGZvbGRlciBqdcW8IHR1dGFqIHV0d29yem9ubycsCiAgICAnRW1wdHlfbmFtZScgPT4gJ05pZSBwb2Rhbm8gd3ltYWdhbmVqIG5hend5JywKICAgICdUZXh0X2ZpbHRlcicgPT4gJ3dwaXN6IHR4dCcsCiAgICAnU3dpcGVfaGVscCcgPT4gJ0tsaWtuaWogdyBuYXp3xJkgcGxpa3UvZm9sZGVydSBieSB3ecWbd2lldGxpxIcgZG9zdMSZcG5lIG9wY2plJywKICAgICdVcGxvYWRfYmFzZScgPT4gJ1dncnl3YW5pZSBzdGFuZGFyZG93ZScsCiAgICAnVXBsb2FkX2Jhc2VfaGVscCcgPT4gIkRyYWcgJiBEcm9wIGZpbGVzKG1vZGVybiBicm93c2Vycykgb3IgY2xpY2sgaW4gdXBwZXIgYnV0dG9uIHRvIEFkZCB0aGUgZmlsZShzKSBhbmQgY2xpY2sgb24gU3RhcnQgdXBsb2FkLiBXaGVuIHRoZSB1cGxvYWQgaXMgY29tcGxldGUsIGNsaWNrIHRoZSAnUmV0dXJuIHRvIGZpbGVzIGxpc3QnIGJ1dHRvbi4iLAogICAgJ1VwbG9hZF9hZGRfZmlsZXMnID0+ICdBZGQgZmlsZShzKScsCiAgICAnVXBsb2FkX3N0YXJ0JyA9PiAnU3RhcnQgdXBsb2FkJywKICAgICdVcGxvYWRfZXJyb3JfbWVzc2FnZXMnID0+YXJyYXkoCiAgICAgICAgMSA9PiAnVGhlIHVwbG9hZGVkIGZpbGUgZXhjZWVkcyB0aGUgdXBsb2FkX21heF9maWxlc2l6ZSBkaXJlY3RpdmUgaW4gcGhwLmluaScsCiAgICAgICAgMiA9PiAnVGhlIHVwbG9hZGVkIGZpbGUgZXhjZWVkcyB0aGUgTUFYX0ZJTEVfU0laRSBkaXJlY3RpdmUgdGhhdCB3YXMgc3BlY2lmaWVkIGluIHRoZSBIVE1MIGZvcm0nLAogICAgICAgIDMgPT4gJ1RoZSB1cGxvYWRlZCBmaWxlIHdhcyBvbmx5IHBhcnRpYWxseSB1cGxvYWRlZCcsCiAgICAgICAgNCA9PiAnTm8gZmlsZSB3YXMgdXBsb2FkZWQnLAogICAgICAgIDYgPT4gJ01pc3NpbmcgYSB0ZW1wb3JhcnkgZm9sZGVyJywKICAgICAgICA3ID0+ICdGYWlsZWQgdG8gd3JpdGUgZmlsZSB0byBkaXNrJywKICAgICAgICA4ID0+ICdBIFBIUCBleHRlbnNpb24gc3RvcHBlZCB0aGUgZmlsZSB1cGxvYWQnLAogICAgICAgICdwb3N0X21heF9zaXplJyA9PiAnVGhlIHVwbG9hZGVkIGZpbGUgZXhjZWVkcyB0aGUgcG9zdF9tYXhfc2l6ZSBkaXJlY3RpdmUgaW4gcGhwLmluaScsCiAgICAgICAgJ21heF9maWxlX3NpemUnID0+ICdGaWxlIGlzIHRvbyBiaWcnLAogICAgICAgICdtaW5fZmlsZV9zaXplJyA9PiAnRmlsZSBpcyB0b28gc21hbGwnLAogICAgICAgICdhY2NlcHRfZmlsZV90eXBlcycgPT4gJ0ZpbGV0eXBlIG5vdCBhbGxvd2VkJywKICAgICAgICAnbWF4X251bWJlcl9vZl9maWxlcycgPT4gJ01heGltdW0gbnVtYmVyIG9mIGZpbGVzIGV4Y2VlZGVkJywKICAgICAgICAnbWF4X3dpZHRoJyA9PiAnSW1hZ2UgZXhjZWVkcyBtYXhpbXVtIHdpZHRoJywKICAgICAgICAnbWluX3dpZHRoJyA9PiAnSW1hZ2UgcmVxdWlyZXMgYSBtaW5pbXVtIHdpZHRoJywKICAgICAgICAnbWF4X2hlaWdodCcgPT4gJ0ltYWdlIGV4Y2VlZHMgbWF4aW11bSBoZWlnaHQnLAogICAgICAgICdtaW5faGVpZ2h0JyA9PiAnSW1hZ2UgcmVxdWlyZXMgYSBtaW5pbXVtIGhlaWdodCcsCiAgICAgICAgJ2Fib3J0JyA9PiAnRmlsZSB1cGxvYWQgYWJvcnRlZCcsCiAgICAgICAgJ2ltYWdlX3Jlc2l6ZScgPT4gJ0ZhaWxlZCB0byByZXNpemUgaW1hZ2UnCiAgICApLAogICAgJ1VwbG9hZF91cmwnID0+ICdGcm9tIHVybCcsCiAgICAnVHlwZV9kaXInID0+ICdGTEQnLAogICAgJ1R5cGUnID0+ICdSb3ouJywKICAgICdEaW1lbnNpb24nID0+ICdSb3ptaWFyJywKICAgICdTaXplJyA9PiAnV2xrLicsCiAgICAnRGF0ZScgPT4gJyBDemFzJywKICAgICdGaWxlbmFtZScgPT4gJ05hendhJywKICAgICdPcGVyYXRpb25zJyA9PiAnT3BjamUnLAogICAgJ0RhdGVfdHlwZScgPT4gJ2QtbS15JywKICAgICdPSycgPT4gJ09LJywKICAgICdDYW5jZWwnID0+ICdBbnVsdWonLAogICAgJ1NvcnRpbmcnID0+ICdTb3J0b3dhbmllJywKICAgICdTaG93X3VybCcgPT4gJ3Bva2HFvCBVUkwnLAogICAgJ0V4dHJhY3QnID0+ICdyb3pwYWt1aiB0dXRhaicsCiAgICAnRmlsZV9pbmZvJyA9PiAnaW5mbyBvIHBsaWt1JywKICAgICdFZGl0X2ltYWdlJyA9PiAnZWR5Y2phIG9icmF6dScsCiAgICAnRHVwbGljYXRlJyA9PiAnUG93aWVsJywKICAgICdGb2xkZXJzJyA9PiAnRm9sZGVyeScsCiAgICAnQ29weScgPT4gJ0tvcGl1aicsCiAgICAnQ3V0JyA9PiAnV3l0bmlqJywKICAgICdQYXN0ZScgPT4gJ1drbGVqJywKICAgICdDQicgPT4gJ1NjaG93ZWsnLCAvLyBjbGlwYm9hcmQKICAgICdQYXN0ZV9IZXJlJyA9PiAnV2tsZWogZG8gdGVnbyBmb2xkZXJ1JywKICAgICdQYXN0ZV9Db25maXJtJyA9PiAnQ3p5IGplc3RlxZsgcGV3aWVuLCDFvGUgY2hjZXN6IHdrbGVpxIcgdG8gZG8gdGVnbyBmb2xkZXJ1PyBPcGVyYWNqYSBuYWRwaXN6ZSBpc3RuaWVqxIVjZSBqdcW8IHdjemVzbmllaiBwbGlraS9wb2Rmb2xkZXJ5IGJleiBtb8W8bGl3b8WbY2kgaWNoIG9kenlza2FuaWEuJywKICAgICdQYXN0ZV9GYWlsZWQnID0+ICdPcGVyYWNqYSB3a2xlamVuaWEgcGxpa8OzdyBuaWUgcG93aW9kxYJhIHNpxJknLAogICAgJ0NsZWFyX0NsaXBib2FyZCcgPT4gJ1d5Y3p5xZvEhyBzY2hvd2VrJywKICAgICdDbGVhcl9DbGlwYm9hcmRfQ29uZmlybScgPT4gJ0N6eSBqZXN0ZcWbIHBld2llbiwgxbxlIGNoY2VzeiB3eWN6ecWbY2nEhyB6YXNvYnkgc2Nob3drYT8nLAogICAgJ0ZpbGVzX09OX0NsaXBib2FyZCcgPT4gJ0RvIHNjaG93a2Egem9zdGHFgnkgZG9kYW5lIHBsaWtpLicsCiAgICAnQ29weV9DdXRfU2l6ZV9MaW1pdCcgPT4gJ1d5YnJhbmUgcGxpa2kvZm9sZGVyeSBtYWrEhSB6Ynl0IGR1xbx5IHJvem1pYXIgYnkgd3lrb25hxIcgb3BlcmFjasSZICVzLiBPYm93acSFenVqZSBvZ3JhbmljemVuaWUgZG86ICVkIE1CL2V0YXAgb3BlcmFjamknLCAvLyAlcyA9IGN1dCBvciBjb3B5CiAgICAnQ29weV9DdXRfQ291bnRfTGltaXQnID0+ICdXeWJyYcWCZcWbIHpieXQgd2llbGUgcGxpa8Ozdy9mb2xkZXLDs3cgYnkgd3lrb25hxIcgb3BlcmFjasSZICVzLiBMaW1pdDogJWQgcGxpa8Ozdy9ldGFwIG9wZXJhY2ppJywgLy8gJXMgPSBjdXQgb3IgY29weQogICAgJ0NvcHlfQ3V0X05vdF9BbGxvd2VkJyA9PiAnTmllIG1hc3ogdXByYXduaWXFhCBkbyB3eWtvbmFuaWEgZHppYcWCYW5pYSAlcyBuYSB0eWNoIHBsaWthY2guJywgLy8gJXMoMSkgPSBjdXQgb3IgY29weSwgJXMoMikgPSBmaWxlcyBvciBmb2xkZXJzCiAgICAnSW1hZ2VfRWRpdG9yX05vX1NhdmUnID0+ICdOaWUgbW/FvG5hIHphcGlzYcSHIG9icmF6a2EnLAogICAgJ0ltYWdlX0VkaXRvcl9FeGl0JyA9PiAiRXhpdCIsCiAgICAnSW1hZ2VfRWRpdG9yX1NhdmUnID0+ICJTYXZlIiwKICAgICdaaXBfTm9fRXh0cmFjdCcgPT4gJ0FyY2hpd3VtIFpJUCBuaWUgbW/FvGUgem9zdGHEhyByb3pwYWtvd2FuZSB0YW0uIFBsaWsgbW/FvGUgYnnEhyB1c3prb2R6b255LicsCiAgICAnWmlwX0ludmFsaWQnID0+ICdUZSByb3pzemVyemVuaWEgcGxpa8OzdyBuaWUgcG9zaWFkYWrEhSB0dXRhaiBuYXN6ZWdvIHdzcGllcmFuZS4gRG9wdXN6Y3phbXkgdHlsa28gZm9ybWF0OiB6aXAsIGd6LCB0YXIuJywKICAgICdEaXJfTm9fV3JpdGUnID0+ICdGb2xkZXIga3TDs3J5IHd5YnJhxYJlxZssIG5pZSBwb3NpYWRhIHVwcmF3bmllxYQgY2htb2QgdW1vxbxsaXdpYWrEhWN5Y2ggcG9wcmF3bnkgemFwaXMuJywKICAgICdGdW5jdGlvbl9EaXNhYmxlZCcgPT4gJ09wZXJhY2phICVzIHpvc3RhxYJhIHphYmxva293YW5hIHByemV6IG9wcm9ncmFtb3dhbmllIFR3b2plZ28gc2Vyd2VyYS4nLCAvLyAlcyA9IGN1dCBvciBjb3B5CiAgICAnRmlsZV9QZXJtaXNzaW9uJyA9PiAnVXByYXduaWVuaWEgcGxpa3UnLAogICAgJ0ZpbGVfUGVybWlzc2lvbl9Ob3RfQWxsb3dlZCcgPT4gJ1ptaWFuYSB1cHJhd25pZcWEIGRsYSAlcyBqZXN0IG5pZWRvendvbG9uYS4nLCAvLyAlcyA9IGZpbGVzIG9yIGZvbGRlcnMKICAgICdGaWxlX1Blcm1pc3Npb25fUmVjdXJzaXZlJyA9PiAnWmFzdG9zb3dhxIcgcmVrdXJzeXduaWU/JywKICAgICdGaWxlX1Blcm1pc3Npb25fV3JvbmdfTW9kZScgPT4gIlphc3Rvc293YW5lIHVwcmF3bmllbmlhIHPEhSBuaWVwb3ByYXduZS4iLAogICAgJ1VzZXInID0+ICdVxbx5dGtvd25paycsCiAgICAnR3JvdXAnID0+ICdHcnVwYScsCiAgICAnWWVzJyA9PiAnVGFrJywKICAgICdObycgPT4gJ05pZScsCiAgICAnTGFuZ19Ob3RfRm91bmQnID0+ICdOaWUgem5hbGV6aW9ubyBqxJl6eWthLicsCiAgICAnTGFuZ19DaGFuZ2UnID0+ICdabWllxYQgasSZenlrJywKICAgICdGaWxlX05vdF9Gb3VuZCcgPT4gJ05pZSBtb8W8bmEgem5hbGXFusSHIHBsaWt1LicsCiAgICAnRmlsZV9PcGVuX0VkaXRfTm90X0FsbG93ZWQnID0+ICdOaWUgbWFzeiB1cHJhd25pZW4gZG8gcGxpa3UgJXMuJywgLy8gJXMgPSBvcGVuIG9yIGVkaXQKICAgICdFZGl0JyA9PiAnRWR5dHVqJywKICAgICdFZGl0X0ZpbGUnID0+ICJFZHl0dWogemF3YXJ0b8WbxIcgcGxpa3UiLAogICAgJ0ZpbGVfU2F2ZV9PSycgPT4gIlBsaWsgem9zdGHFgiB6YXBpc2FueS4iLAogICAgJ0ZpbGVfU2F2ZV9FcnJvcicgPT4gIld5c3TEhXBpxYIgYsWCxIVkIHBvZGN6YXMgemFwaXN5d2FuaWEgcGxpa3UuIiwKICAgICdOZXdfRmlsZScgPT4gJ1V0d8OzcnogcGxpaycsCiAgICAnTm9fRXh0ZW5zaW9uJyA9PiAnTXVzaXN6IGRvZGHEhyByb3pzemVyemVuaWUgZG8gcGxpa3UuJywKICAgICdWYWxpZF9FeHRlbnNpb25zJyA9PiAnUG9wcmF3bmUgcm96c3plcnplbmlhOiAlcycsIC8vICVzID0gdHh0LGxvZyBldGMuCiAgICAnVXBsb2FkX21lc3NhZ2UnID0+ICJVcHXFm8SHIHBsaWsgYWJ5IGdvIHByemVzxYJhxIciLAoKICAgICdTRVJWRVIgRVJST1InID0+ICJCxYLEhWQgc2Vyd2VyYSIsCiAgICAnZm9yYmlkZGVuJyA9PiAiQnJhayBkb3N0xJlwdSIsCiAgICAnd3JvbmcgcGF0aCcgPT4gIk5pZXByYXdpZMWCb3dhIMWbY2llxbxrYSIsCiAgICAnd3JvbmcgbmFtZScgPT4gIk5pZXByYXdpZMWCb3dhIG5hendhIiwKICAgICd3cm9uZyBleHRlbnNpb24nID0+ICJOaWVwcmF3aWTFgm93ZSByb3pzemVyemVuaWUgcGxpa3UiLAogICAgJ3dyb25nIG9wdGlvbicgPT4gIk5pZXByYXdpZMWCb3dhIG9wY2phIiwKICAgICd3cm9uZyBkYXRhJyA9PiAiTmllcHJhd2lkxYJvd2UgZGFuZSIsCiAgICAnd3JvbmcgYWN0aW9uJyA9PiAiTmllcHJhd2lkxYJvd2EgYWtjamEiLAogICAgJ3dyb25nIHN1Yi1hY3Rpb24nID0+ICJOaWVwcmF3aWTFgm93YSBwb2QtYWtjamEiLAogICAgJ25vIGFjdGlvbiBwYXNzZWQnID0+ICJOaWUgb2tyZcWbbG9ubyBha2NqaSIsCiAgICAnbm8gcGF0aCcgPT4gIkJyYWsgxZtjaWXFvGtpIiwKICAgICdubyBmaWxlJyA9PiAiQnJhayBwbGlrdSIsCiAgICAndmlldyB0eXBlIG51bWJlciBtaXNzaW5nJyA9PiAiQnJhayBudW1lcnUgdHlwdSB3aWRva3UiLAogICAgJ05vdCBlbm91Z2ggTWVtb3J5JyA9PiAiWmJ5dCBtYcWCbyBwYW1pxJljaSIsCiAgICAnbWF4X3NpemVfcmVhY2hlZCcgPT4gIlR3w7NqIGthdGFsb2cgeiBvYnJhemthbWkgb3NpxIVnbsSFxYIgbWFrc3ltYWxueSByb3ptaWFyOiAlZCBNQi4iLCAvLyVkID0gbWF4IG92ZXJhbGwgc2l6ZQogICAgJ0InID0+ICJCIiwKICAgICdLQicgPT4gIktCIiwKICAgICdNQicgPT4gIk1CIiwKICAgICdHQicgPT4gIkdCIiwKICAgICdUQicgPT4gIlRCIiwKICAgICd0b3RhbCBzaXplJyA9PiAiQ2HFgmtvd2l0eSByb3ptaWFyIiwKKTsK]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/lang/pt_BR.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJldHVybiBhcnJheSgKCiAgICAnU2VsZWN0JyA9PiAnU2VsZWNpb25hcicsCiAgICAnRGVzZWxlY3RfQWxsJyA9PiAnRGVzZWxlY3QgQWxsJywKICAgICdTZWxlY3RfQWxsJyA9PiAnU2VsZWN0IEFsbCcsCiAgICAnRXJhc2UnID0+ICdBcGFnYXInLAogICAgJ09wZW4nID0+ICdBYnJpcicsCiAgICAnQ29uZmlybV9kZWwnID0+ICdUZW0gY2VydGV6YSBxdWUgcXVlciBkZWxldGFyIGVzdGUgYXJxdWl2bz8nLAogICAgJ0FsbCcgPT4gJ1RvZG9zJywKICAgICdGaWxlcycgPT4gJ0FycXVpdm9zJywKICAgICdJbWFnZXMnID0+ICdJbWFnZW5zJywKICAgICdBcmNoaXZlcycgPT4gJ0NvbXBhY3RhZG9zJywKICAgICdFcnJvcl9VcGxvYWQnID0+ICdPIGFycXVpdm8gZW52aWFkbyDDqSBtYWlvciBxdWUgbyBsaW1pdGUgcGVybWl0aWRvLicsCiAgICAnRXJyb3JfZXh0ZW5zaW9uJyA9PiAnRXh0ZW5zw6NvIG7Do28gcGVybWl0aWRhLicsCiAgICAnVXBsb2FkX2ZpbGUnID0+ICdFbnZpYXIgdW0gYXJxdWl2bycsCiAgICAnRmlsdGVycycgPT4gJ0ZpbHRybycsCiAgICAnVmlkZW9zJyA9PiAnVsOtZGVvcycsCiAgICAnTXVzaWMnID0+ICdNdXNpY2EnLAogICAgJ05ld19Gb2xkZXInID0+ICdOb3ZhIHBhc3RhJywKICAgICdGb2xkZXJfQ3JlYXRlZCcgPT4gJ1Bhc3RhIGNyaWFkYSBjb3JyZXRhbWVudGUnLAogICAgJ0V4aXN0aW5nX0ZvbGRlcicgPT4gJ1Bhc3RhIGV4aXN0ZW50ZScsCiAgICAnQ29uZmlybV9Gb2xkZXJfZGVsJyA9PiAnVGVtIGNlcnRlemEgcXVlIHZvY8OqIHF1ZXIgZGVsZXRhciBhIHBhc3RhIGUgdG9kbyBvIHNldSBjb250ZcO6ZG8/JywKICAgICdSZXR1cm5fRmlsZXNfTGlzdCcgPT4gJ1ZvbHRhciDDoCBsaXN0YSBkZSBhcnF1aXZvcycsCiAgICAnUHJldmlldycgPT4gJ1Byw6l2aWEnLAogICAgJ0Rvd25sb2FkJyA9PiAnQmFpeGFyJywKICAgICdJbnNlcnRfRm9sZGVyX05hbWUnID0+ICdJbnNpcmEgbyBub21lIGRhIHBhc3RhOicsCiAgICAnUm9vdCcgPT4gJ3Jvb3QnLAogICAgJ1JlbmFtZScgPT4gJ011ZGFyIG8gbm9tZScsCiAgICAnQmFjaycgPT4gJ2RlIHZvbHRhJywKICAgICdWaWV3JyA9PiAnTW9kbyBkZSBWaXN1YWxpemHDp8OjbycsCiAgICAnVmlld19saXN0JyA9PiAnTGlzdGEnLAogICAgJ1ZpZXdfY29sdW1uc19saXN0JyA9PiAnTGlzdGEgZGUgQ29sdW5hcycsCiAgICAnVmlld19ib3hlcycgPT4gJ0JveCcsCiAgICAnVG9vbGJhcicgPT4gJ1Rvb2xiYXInLAogICAgJ0FjdGlvbnMnID0+ICdBw6fDtWVzJywKICAgICdSZW5hbWVfZXhpc3RpbmdfZmlsZScgPT4gJ08gYXJxdWl2byBqw6EgZXhpc3RlIScsCiAgICAnUmVuYW1lX2V4aXN0aW5nX2ZvbGRlcicgPT4gJ0EgcGFzdGEgasOhIGV4aXN0ZSEnLAogICAgJ0VtcHR5X25hbWUnID0+ICdPIG5vbWUgZXN0w6EgdmF6aW8hJywKICAgICdUZXh0X2ZpbHRlcicgPT4gJ0ZpbHRyYXInLAogICAgJ1N3aXBlX2hlbHAnID0+ICdQYXNzZSBvIG5vbWUgZG8gYXJxdWl2by9wYXN0YSBwYXJhIHZlciBhcyBvcMOnw7VlcycsCiAgICAnVXBsb2FkX2Jhc2UnID0+ICdCYXNlIHVwbG9hZCcsCiAgICAnVXBsb2FkX2Jhc2VfaGVscCcgPT4gIkRyYWcgJiBEcm9wIGZpbGVzKG1vZGVybiBicm93c2Vycykgb3IgY2xpY2sgaW4gdXBwZXIgYnV0dG9uIHRvIEFkZCB0aGUgZmlsZShzKSBhbmQgY2xpY2sgb24gU3RhcnQgdXBsb2FkLiBXaGVuIHRoZSB1cGxvYWQgaXMgY29tcGxldGUsIGNsaWNrIHRoZSAnUmV0dXJuIHRvIGZpbGVzIGxpc3QnIGJ1dHRvbi4iLAogICAgJ1VwbG9hZF9hZGRfZmlsZXMnID0+ICdBZGQgZmlsZShzKScsCiAgICAnVXBsb2FkX3N0YXJ0JyA9PiAnU3RhcnQgdXBsb2FkJywKICAgICdVcGxvYWRfZXJyb3JfbWVzc2FnZXMnID0+YXJyYXkoCiAgICAgICAgMSA9PiAnVGhlIHVwbG9hZGVkIGZpbGUgZXhjZWVkcyB0aGUgdXBsb2FkX21heF9maWxlc2l6ZSBkaXJlY3RpdmUgaW4gcGhwLmluaScsCiAgICAgICAgMiA9PiAnVGhlIHVwbG9hZGVkIGZpbGUgZXhjZWVkcyB0aGUgTUFYX0ZJTEVfU0laRSBkaXJlY3RpdmUgdGhhdCB3YXMgc3BlY2lmaWVkIGluIHRoZSBIVE1MIGZvcm0nLAogICAgICAgIDMgPT4gJ1RoZSB1cGxvYWRlZCBmaWxlIHdhcyBvbmx5IHBhcnRpYWxseSB1cGxvYWRlZCcsCiAgICAgICAgNCA9PiAnTm8gZmlsZSB3YXMgdXBsb2FkZWQnLAogICAgICAgIDYgPT4gJ01pc3NpbmcgYSB0ZW1wb3JhcnkgZm9sZGVyJywKICAgICAgICA3ID0+ICdGYWlsZWQgdG8gd3JpdGUgZmlsZSB0byBkaXNrJywKICAgICAgICA4ID0+ICdBIFBIUCBleHRlbnNpb24gc3RvcHBlZCB0aGUgZmlsZSB1cGxvYWQnLAogICAgICAgICdwb3N0X21heF9zaXplJyA9PiAnVGhlIHVwbG9hZGVkIGZpbGUgZXhjZWVkcyB0aGUgcG9zdF9tYXhfc2l6ZSBkaXJlY3RpdmUgaW4gcGhwLmluaScsCiAgICAgICAgJ21heF9maWxlX3NpemUnID0+ICdGaWxlIGlzIHRvbyBiaWcnLAogICAgICAgICdtaW5fZmlsZV9zaXplJyA9PiAnRmlsZSBpcyB0b28gc21hbGwnLAogICAgICAgICdhY2NlcHRfZmlsZV90eXBlcycgPT4gJ0ZpbGV0eXBlIG5vdCBhbGxvd2VkJywKICAgICAgICAnbWF4X251bWJlcl9vZl9maWxlcycgPT4gJ01heGltdW0gbnVtYmVyIG9mIGZpbGVzIGV4Y2VlZGVkJywKICAgICAgICAnbWF4X3dpZHRoJyA9PiAnSW1hZ2UgZXhjZWVkcyBtYXhpbXVtIHdpZHRoJywKICAgICAgICAnbWluX3dpZHRoJyA9PiAnSW1hZ2UgcmVxdWlyZXMgYSBtaW5pbXVtIHdpZHRoJywKICAgICAgICAnbWF4X2hlaWdodCcgPT4gJ0ltYWdlIGV4Y2VlZHMgbWF4aW11bSBoZWlnaHQnLAogICAgICAgICdtaW5faGVpZ2h0JyA9PiAnSW1hZ2UgcmVxdWlyZXMgYSBtaW5pbXVtIGhlaWdodCcsCiAgICAgICAgJ2Fib3J0JyA9PiAnRmlsZSB1cGxvYWQgYWJvcnRlZCcsCiAgICAgICAgJ2ltYWdlX3Jlc2l6ZScgPT4gJ0ZhaWxlZCB0byByZXNpemUgaW1hZ2UnCiAgICApLAogICAgJ1VwbG9hZF91cmwnID0+ICdGcm9tIHVybCcsCiAgICAnVHlwZV9kaXInID0+ICdkaXInLAogICAgJ1R5cGUnID0+ICdUaXBvJywKICAgICdEaW1lbnNpb24nID0+ICdEaW1lbnPDo28nLAogICAgJ1NpemUnID0+ICdUYW1hbmhvJywKICAgICdEYXRlJyA9PiAnRGF0YScsCiAgICAnRmlsZW5hbWUnID0+ICdOb21lJywKICAgICdPcGVyYXRpb25zJyA9PiAnT3BlcmHDp8O1ZXMnLAogICAgJ0RhdGVfdHlwZScgPT4gJ2QvbS9ZJywKICAgICdPSycgPT4gJ09LJywKICAgICdDYW5jZWwnID0+ICdDYW5jZWxhcicsCiAgICAnU29ydGluZycgPT4gJ09yZGVuYXInLAogICAgJ1Nob3dfdXJsJyA9PiAnTW9zdHJhciBVUkwnLAogICAgJ0V4dHJhY3QnID0+ICdFeHRyYWlyIGFxdWknLAogICAgJ0ZpbGVfaW5mbycgPT4gJ0luZm9ybWHDp8OjbyBkbyBBcnF1aXZvJywKICAgICdFZGl0X2ltYWdlJyA9PiAnRWRpdGFyIGEgaW1hZ2VtJywKICAgICdEdXBsaWNhdGUnID0+ICdEdXBsaWNhcicsCiAgICAnRm9sZGVycycgPT4gJ1Bhc3RhcycsCiAgICAnQ29weScgPT4gJ0NvcGlhcicsCiAgICAnQ3V0JyA9PiAnUmVjb3J0YXInLAogICAgJ1Bhc3RlJyA9PiAnQ29sYXInLAogICAgJ0NCJyA9PiAnw4FyZWEgZGUgVHJhbnNmZXLDqm5jaWEnLCAvLyBjbGlwYm9hcmQKICAgICdQYXN0ZV9IZXJlJyA9PiAnQ29waWFyIHBhcmEgZXN0ZSBkaXJldMOzcmlvJywKICAgICdQYXN0ZV9Db25maXJtJyA9PiAnVm9jw6ogdGVtIGNlcnRlemEgcXVlciBjb3BpYXIgcGFyYSBlc3RlIGRpcmV0w7NyaW8/IElzc28gc29icmVzY3JldmVyw6EgcGFzdGFzL2FycXVpdm9zIGV4aXN0ZW50ZXMgc2UgZW5jb250cmFyIGFsZ3VtYSBjb2lzYS4nLAogICAgJ1Bhc3RlX0ZhaWxlZCcgPT4gJ07Do28gZm9pIHBvc3PDrXZlbCBjb2xhciBvKHMpIGFycXVpdm8ocyknLAogICAgJ0NsZWFyX0NsaXBib2FyZCcgPT4gJ0xpbXBhciDDoXJlYSBkZSB0cmFuc2ZlcsOqbmNpYScsCiAgICAnQ2xlYXJfQ2xpcGJvYXJkX0NvbmZpcm0nID0+ICdUZW0gY2VydGV6YSBkZSBxdWUgZGVzZWphIGxpbXBhciBhIMOhcmVhIGRlIHRyYW5zZmVyw6puY2lhPycsCiAgICAnRmlsZXNfT05fQ2xpcGJvYXJkJyA9PiAnSMOhIGFycXVpdm9zIG5hIMOhcmVhIGRlIHRyYW5zZmVyw6puY2lhLicsCiAgICAnQ29weV9DdXRfU2l6ZV9MaW1pdCcgPT4gJ09zIGFycXVpdm9zL3Bhc3RhcyBzZWxlY2lvbmFkb3Mgc8OjbyBncmFuZGVzIGRlbWFpcyBwYXJhICVzLiBMaW1pdGU6ICVkIE1CL29wZXJhw6fDo28nLCAvLyAlcyA9IGN1dCBvciBjb3B5CiAgICAnQ29weV9DdXRfQ291bnRfTGltaXQnID0+ICdWb2PDqiBzZWxlY2lvbm91IG11aXRvcyBhcnF1aXZvcy9wYXN0YXMgcGFyYSAlcy4gTGltaXRlOiAlZCBhcnF1aXZvcy9vcGVyYcOnw6NvJywgLy8gJXMgPSBjdXQgb3IgY29weQogICAgJ0NvcHlfQ3V0X05vdF9BbGxvd2VkJyA9PiAnVm9jw6ogbsOjbyB0ZW0gcGVybWlzc8OjbyBwYXJhICVzIGFycXVpdm9zLicsIC8vICVzKDEpID0gY3V0IG9yIGNvcHksICVzKDIpID0gZmlsZXMgb3IgZm9sZGVycwogICAgJ0ltYWdlX0VkaXRvcl9Ob19TYXZlJyA9PiAnTsOjbyBmb2kgcG9zc8OtdmVsIHNhbHZhciBhIGltYWdlbScsCiAgICAnSW1hZ2VfRWRpdG9yX0V4aXQnID0+ICJTYcOtZGEiLAogICAgJ0ltYWdlX0VkaXRvcl9TYXZlJyA9PiAiU2FsdmUiLAogICAgJ1ppcF9Ob19FeHRyYWN0JyA9PiAnTsOjbyBmb2kgcG9zc8OtdmVsIGV4dHJhaXIuIEFycXVpdm8gcG9kZSBlc3RhciBjb3Jyb21waWRvLicsCiAgICAnWmlwX0ludmFsaWQnID0+ICdFc3RhIGV4dGVuc8OjbyBuw6NvIMOpIHN1cG9ydGFkYS4gVsOhbGlkb3M6IHppcCwgZ3osIHRhci4nLAogICAgJ0Rpcl9Ob19Xcml0ZScgPT4gJ08gZGlyZXTDs3JpbyBzZWxlY2lvbmFkbyBuw6NvIMOpIGdyYXbDoXZlbC4nLAogICAgJ0Z1bmN0aW9uX0Rpc2FibGVkJyA9PiAnQSBmdW7Dp8OjbyAlcyBmb2kgZGVzYXRpdmFkbyBwZWxvIHNlcnZpZG9yLicsIC8vICVzID0gY3V0IG9yIGNvcHkKICAgICdGaWxlX1Blcm1pc3Npb24nID0+ICdQZXJtaXNzw6NvIGFycXVpdm8nLAogICAgJ0ZpbGVfUGVybWlzc2lvbl9Ob3RfQWxsb3dlZCcgPT4gJ011ZGFuw6dhcyBkZSBwZXJtaXNzw7VlcyBkZSAlcyBuw6NvIHPDo28gcGVybWl0aWRvcy4nLCAvLyAlcyA9IGZpbGVzIG9yIGZvbGRlcnMKICAgICdGaWxlX1Blcm1pc3Npb25fUmVjdXJzaXZlJyA9PiAnQXBsaWNhciByZWN1cnNpdmFtZW50ZT8nLAogICAgJ0ZpbGVfUGVybWlzc2lvbl9Xcm9uZ19Nb2RlJyA9PiAiTyBtb2RvIGRlIHBlcm1pc3PDo28gZm9ybmVjaWRvIGVzdMOhIGluY29ycmV0by4iLAogICAgJ1VzZXInID0+ICdVc3XDoXJpbycsCiAgICAnR3JvdXAnID0+ICdHcnVwbycsCiAgICAnWWVzJyA9PiAnU2ltJywKICAgICdObycgPT4gJ07Do28nLAogICAgJ0xhbmdfTm90X0ZvdW5kJyA9PiAnTsOjbyBmb2kgcG9zc8OtdmVsIGVuY29udHJhciB1bWEgbGluZ3VhZ2VtLicsCiAgICAnTGFuZ19DaGFuZ2UnID0+ICdBbHRlcmFyIG8gaWRpb21hJywKICAgICdGaWxlX05vdF9Gb3VuZCcgPT4gJ07Do28gZm9pIHBvc3PDrXZlbCBlbmNvbnRyYXIgbyBhcnF1aXZvLicsCiAgICAnRmlsZV9PcGVuX0VkaXRfTm90X0FsbG93ZWQnID0+ICdWb2PDqiBuw6NvIHRlbSBwZXJtaXNzw6NvIHBhcmEgJXMgZXN0ZSBhcnF1aXZvLicsIC8vICVzID0gb3BlbiBvciBlZGl0CiAgICAnRWRpdCcgPT4gJ0VkaXRhcicsCiAgICAnRWRpdF9GaWxlJyA9PiAiRWRpdGFyIGNvbnRlw7pkbyBkbyBhcnF1aXZvIiwKICAgICdGaWxlX1NhdmVfT0snID0+ICJBcnF1aXZvIHNhbHZvIGNvbSBzdWNlc3NvLiIsCiAgICAnRmlsZV9TYXZlX0Vycm9yJyA9PiAiSG91dmUgdW0gZXJybyBhbyBzYWx2YXIgbyBhcnF1aXZvLiIsCiAgICAnTmV3X0ZpbGUnID0+ICdOb3ZvIEFycXVpdm8nLAogICAgJ05vX0V4dGVuc2lvbicgPT4gJ1ZvY8OqIHRlbSBxdWUgYWRpY2lvbmFyIHVtYSBleHRlbnPDo28gZGUgYXJxdWl2by4nLAogICAgJ1ZhbGlkX0V4dGVuc2lvbnMnID0+ICdFeHRlbnPDtWVzIHbDoWxpZGFzOiAlcycsIC8vICVzID0gdHh0LGxvZyBldGMuCiAgICAnVXBsb2FkX21lc3NhZ2UnID0+ICJBcnJhc3RlIGFycXVpdm8gYXF1aSBwYXJhIGVudmlhciIsCgogICAgJ1NFUlZFUiBFUlJPUicgPT4gIkVSUk8gU0VSVklET1IiLAogICAgJ2ZvcmJpZGRlbicgPT4gInByb2liaWRvIiwKICAgICd3cm9uZyBwYXRoJyA9PiAiY2FtaW5obyBlcnJhZG8iLAogICAgJ3dyb25nIG5hbWUnID0+ICJub21lIGVycmFkbyIsCiAgICAnd3JvbmcgZXh0ZW5zaW9uJyA9PiAiZXh0ZW5zw6NvIGVycmFkYSIsCiAgICAnd3Jvbmcgb3B0aW9uJyA9PiAib3DDp8OjbyBlcnJhZGEiLAogICAgJ3dyb25nIGRhdGEnID0+ICJkYWRvcyBlcnJhZG9zIiwKICAgICd3cm9uZyBhY3Rpb24nID0+ICJhw6fDo28gZXJyYWRhIiwKICAgICd3cm9uZyBzdWItYWN0aW9uJyA9PiAic3ViLWHDp8OjbyBlcnJhZGEiLAogICAgJ25vIGFjdGlvbiBwYXNzZWQnID0+ICJuZW5odW1hIGHDp8OjbyBwYXNzYWRhIiwKICAgICdubyBwYXRoJyA9PiAibmVuaHVtIGNhbWluaG8iLAogICAgJ25vIGZpbGUnID0+ICJuZW5odW0gYXJxdWl2byIsCiAgICAndmlldyB0eXBlIG51bWJlciBtaXNzaW5nJyA9PiAiVmVyIHRpcG8gZGUgbsO6bWVybyBmYWx0YW5kbyIsCiAgICAnTm90IGVub3VnaCBNZW1vcnknID0+ICJNZW3Ds3JpYSBpbnN1ZmljaWVudGUiLAogICAgJ21heF9zaXplX3JlYWNoZWQnID0+ICJTdWEgcGFzdGEgZGUgaW1hZ2VucyBhdGluZ2l1IHNldSB0YW1hbmhvIG3DoXhpbW8gZGUgJWQgTUIuIiwgLy8lZCA9IG1heCBvdmVyYWxsIHNpemUKICAgICdCJyA9PiAiQiIsCiAgICAnS0InID0+ICJLQiIsCiAgICAnTUInID0+ICJNQiIsCiAgICAnR0InID0+ICJHQiIsCiAgICAnVEInID0+ICJUQiIsCiAgICAndG90YWwgc2l6ZScgPT4gIlRhbWFuaG8gdG90YWwiLAopOwo=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/lang/pt_PT.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJldHVybiBhcnJheSgKCiAgICAnU2VsZWN0JyA9PiAnU2VsZWNjaW9uYXInLAogICAgJ0Rlc2VsZWN0X0FsbCcgPT4gJ0Rlc2VsZWN0IEFsbCcsCiAgICAnU2VsZWN0X0FsbCcgPT4gJ1NlbGVjdCBBbGwnLAogICAgJ0VyYXNlJyA9PiAnRWxpbWluYXInLAogICAgJ09wZW4nID0+ICdBYnJpcicsCiAgICAnQ29uZmlybV9kZWwnID0+ICdUZW0gY2VydGV6YSBxdWUgcHJldGVuZGUgZWxpbWluYXIgZXN0ZSBhcnF1aXZvPycsCiAgICAnQWxsJyA9PiAnVG9kb3MnLAogICAgJ0ZpbGVzJyA9PiAnRmljaGVpcm9zJywKICAgICdJbWFnZXMnID0+ICdJbWFnZW5zJywKICAgICdBcmNoaXZlcycgPT4gJ0NvbXBhY3RhZG9zJywKICAgICdFcnJvcl9VcGxvYWQnID0+ICdPIGZpY2hlaXJvIGVudmlhZG8gw6kgbWFpb3IgcXVlIG8gbGltaXRlIHBlcm1pdGlkby4nLAogICAgJ0Vycm9yX2V4dGVuc2lvbicgPT4gJ0V4dGVuc8OjbyBuw6NvIHBlcm1pdGlkYS4nLAogICAgJ1VwbG9hZF9maWxlJyA9PiAnQ2FycmVnYXIgZmljaGVpcm8nLAogICAgJ0ZpbHRlcnMnID0+ICdGaWx0cm8nLAogICAgJ1ZpZGVvcycgPT4gJ1bDrWRlb3MnLAogICAgJ011c2ljJyA9PiAnTcO6c2ljYScsCiAgICAnTmV3X0ZvbGRlcicgPT4gJ05vdmEgcGFzdGEnLAogICAgJ0ZvbGRlcl9DcmVhdGVkJyA9PiAnUGFzdGEgY3JpYWRhIGNvbSBzdWNlc3NvJywKICAgICdFeGlzdGluZ19Gb2xkZXInID0+ICdQYXN0YSBleGlzdGVudGUnLAogICAgJ0NvbmZpcm1fRm9sZGVyX2RlbCcgPT4gJ1RlbSBjZXJ0ZXphIHF1ZSBwcmV0ZW5kZSBlbGltaW5hciBhIHBhc3RhIGUgdG9kbyBvIHNldSBjb250ZcO6ZG8/JywKICAgICdSZXR1cm5fRmlsZXNfTGlzdCcgPT4gJ1ZvbHRhciDDoCBsaXN0YSBkZSBmaWNoZWlyb3MnLAogICAgJ1ByZXZpZXcnID0+ICdQcsOpLXZpc3VhbGl6YXInLAogICAgJ0Rvd25sb2FkJyA9PiAnRGVzY2FycmVnYXInLAogICAgJ0luc2VydF9Gb2xkZXJfTmFtZScgPT4gJ0luc2lyYSBvIG5vbWUgZGEgcGFzdGE6JywKICAgICdSb290JyA9PiAncm9vdCcsCiAgICAnUmVuYW1lJyA9PiAnTXVkYXIgbyBub21lJywKICAgICdCYWNrJyA9PiAnZGUgdm9sdGEnLAogICAgJ1ZpZXcnID0+ICdWaXN0YScsCiAgICAnVmlld19saXN0JyA9PiAnVmlzdGEgZGUgbGlzdGEnLAogICAgJ1ZpZXdfY29sdW1uc19saXN0JyA9PiAnVmlzdGEgZGUgY29sdW5hJywKICAgICdWaWV3X2JveGVzJyA9PiAnVmlzdGEgZGUgY2FpeGFzJywKICAgICdUb29sYmFyJyA9PiAnQmFycmEgZGUgRmVycmFtZW50YXMnLAogICAgJ0FjdGlvbnMnID0+ICdBY8Onw7VlcycsCiAgICAnUmVuYW1lX2V4aXN0aW5nX2ZpbGUnID0+ICdPIGZpY2hlaXJvIGrDoSBleGlzdGUnLAogICAgJ1JlbmFtZV9leGlzdGluZ19mb2xkZXInID0+ICdBIHBhc3RhIGrDoSBleGlzdGUnLAogICAgJ0VtcHR5X25hbWUnID0+ICdOb21lIGVzdMOhIHZhemlvJywKICAgICdUZXh0X2ZpbHRlcicgPT4gJ2ZpbHRybyBwb3IgdGV4dG8nLAogICAgJ1N3aXBlX2hlbHAnID0+ICdQYXNzZSBvIG5vbWUgZG8gYXJxdWl2byAvIHBhc3RhIHBhcmEgdmVyIGFzIG9ww6fDtWVzJywKICAgICdVcGxvYWRfYmFzZScgPT4gJ0VudmlvIGLDoXNpY28nLAogICAgJ1VwbG9hZF9iYXNlX2hlbHAnID0+ICJEcmFnICYgRHJvcCBmaWxlcyhtb2Rlcm4gYnJvd3NlcnMpIG9yIGNsaWNrIGluIHVwcGVyIGJ1dHRvbiB0byBBZGQgdGhlIGZpbGUocykgYW5kIGNsaWNrIG9uIFN0YXJ0IHVwbG9hZC4gV2hlbiB0aGUgdXBsb2FkIGlzIGNvbXBsZXRlLCBjbGljayB0aGUgJ1JldHVybiB0byBmaWxlcyBsaXN0JyBidXR0b24uIiwKICAgICdVcGxvYWRfYWRkX2ZpbGVzJyA9PiAnQWRkIGZpbGUocyknLAogICAgJ1VwbG9hZF9zdGFydCcgPT4gJ1N0YXJ0IHVwbG9hZCcsCiAgICAnVXBsb2FkX2Vycm9yX21lc3NhZ2VzJyA9PmFycmF5KAogICAgICAgIDEgPT4gJ1RoZSB1cGxvYWRlZCBmaWxlIGV4Y2VlZHMgdGhlIHVwbG9hZF9tYXhfZmlsZXNpemUgZGlyZWN0aXZlIGluIHBocC5pbmknLAogICAgICAgIDIgPT4gJ1RoZSB1cGxvYWRlZCBmaWxlIGV4Y2VlZHMgdGhlIE1BWF9GSUxFX1NJWkUgZGlyZWN0aXZlIHRoYXQgd2FzIHNwZWNpZmllZCBpbiB0aGUgSFRNTCBmb3JtJywKICAgICAgICAzID0+ICdUaGUgdXBsb2FkZWQgZmlsZSB3YXMgb25seSBwYXJ0aWFsbHkgdXBsb2FkZWQnLAogICAgICAgIDQgPT4gJ05vIGZpbGUgd2FzIHVwbG9hZGVkJywKICAgICAgICA2ID0+ICdNaXNzaW5nIGEgdGVtcG9yYXJ5IGZvbGRlcicsCiAgICAgICAgNyA9PiAnRmFpbGVkIHRvIHdyaXRlIGZpbGUgdG8gZGlzaycsCiAgICAgICAgOCA9PiAnQSBQSFAgZXh0ZW5zaW9uIHN0b3BwZWQgdGhlIGZpbGUgdXBsb2FkJywKICAgICAgICAncG9zdF9tYXhfc2l6ZScgPT4gJ1RoZSB1cGxvYWRlZCBmaWxlIGV4Y2VlZHMgdGhlIHBvc3RfbWF4X3NpemUgZGlyZWN0aXZlIGluIHBocC5pbmknLAogICAgICAgICdtYXhfZmlsZV9zaXplJyA9PiAnRmlsZSBpcyB0b28gYmlnJywKICAgICAgICAnbWluX2ZpbGVfc2l6ZScgPT4gJ0ZpbGUgaXMgdG9vIHNtYWxsJywKICAgICAgICAnYWNjZXB0X2ZpbGVfdHlwZXMnID0+ICdGaWxldHlwZSBub3QgYWxsb3dlZCcsCiAgICAgICAgJ21heF9udW1iZXJfb2ZfZmlsZXMnID0+ICdNYXhpbXVtIG51bWJlciBvZiBmaWxlcyBleGNlZWRlZCcsCiAgICAgICAgJ21heF93aWR0aCcgPT4gJ0ltYWdlIGV4Y2VlZHMgbWF4aW11bSB3aWR0aCcsCiAgICAgICAgJ21pbl93aWR0aCcgPT4gJ0ltYWdlIHJlcXVpcmVzIGEgbWluaW11bSB3aWR0aCcsCiAgICAgICAgJ21heF9oZWlnaHQnID0+ICdJbWFnZSBleGNlZWRzIG1heGltdW0gaGVpZ2h0JywKICAgICAgICAnbWluX2hlaWdodCcgPT4gJ0ltYWdlIHJlcXVpcmVzIGEgbWluaW11bSBoZWlnaHQnLAogICAgICAgICdhYm9ydCcgPT4gJ0ZpbGUgdXBsb2FkIGFib3J0ZWQnLAogICAgICAgICdpbWFnZV9yZXNpemUnID0+ICdGYWlsZWQgdG8gcmVzaXplIGltYWdlJwogICAgKSwKICAgICdVcGxvYWRfdXJsJyA9PiAnRnJvbSB1cmwnLAogICAgJ1R5cGVfZGlyJyA9PiAnZGlyJywKICAgICdUeXBlJyA9PiAnVGlwbycsCiAgICAnRGltZW5zaW9uJyA9PiAnRGltZW5zw6NvJywKICAgICdTaXplJyA9PiAnVGFtYW5obycsCiAgICAnRGF0ZScgPT4gJ0RhdGUnLAogICAgJ0ZpbGVuYW1lJyA9PiAnRGF0YScsCiAgICAnT3BlcmF0aW9ucycgPT4gJ09wZXJhw6fDtWVzJywKICAgICdEYXRlX3R5cGUnID0+ICdkLW0teScsCiAgICAnT0snID0+ICdPSycsCiAgICAnQ2FuY2VsJyA9PiAnQ2FuY2VsYXInLAogICAgJ1NvcnRpbmcnID0+ICdvcmRlbmFyJywKICAgICdTaG93X3VybCcgPT4gJ21vc3RyYXIgVVJMJywKICAgICdFeHRyYWN0JyA9PiAnZXh0cmFpciBoZXJlJywKICAgICdGaWxlX2luZm8nID0+ICdpbmZvLiBmaWNoZWlybycsCiAgICAnRWRpdF9pbWFnZScgPT4gJ2VkaXRhciBpbWFnZW0nLAogICAgJ0R1cGxpY2F0ZScgPT4gJ0R1cGxpY2FyJywKICAgICdGb2xkZXJzJyA9PiAnUGFzdGFzJywKICAgICdDb3B5JyA9PiAnQ29waWFyJywKICAgICdDdXQnID0+ICdDb3J0YXInLAogICAgJ1Bhc3RlJyA9PiAnQ29sYXInLAogICAgJ0NCJyA9PiAnQVQnLCAvLyBjbGlwYm9hcmQKICAgICdQYXN0ZV9IZXJlJyA9PiAnQ29sYXIgcGFyYSBlc3RhIGRpcmVjdG9yaWEnLAogICAgJ1Bhc3RlX0NvbmZpcm0nID0+ICdWb2PDqiB0ZW0gYSBjZXJ0ZXphIHF1ZSBkZXNlamEgY29sYXIgYSBlc3RlIGRpcmV0w7NyaW8/IElzc28gc3Vic3RpdHVpcsOhIG9zIGFycXVpdm9zIGV4aXN0ZW50ZXMgb3UgcGFzdGFzIHNlIGV4aXN0aXJlbScsCiAgICAnUGFzdGVfRmFpbGVkJyA9PiAnRmFsaGEgYW8gY29sYXIgZmljaGVpcm9zKHMpJywKICAgICdDbGVhcl9DbGlwYm9hcmQnID0+ICdMaW1wYXIgw6FyZWEgZGUgdHJhbnNmZXLDqm5jaWEnLAogICAgJ0NsZWFyX0NsaXBib2FyZF9Db25maXJtJyA9PiAnVm9jw6ogdGVtIGNlcnRlemEgcXVlIGRlc2VqYSBsaW1wYXIgYSDDoXJlYSBkZSB0cmFuc2ZlcsOqbmNpYT8nLAogICAgJ0ZpbGVzX09OX0NsaXBib2FyZCcgPT4gJ0jDoSBhcnF1aXZvcyBuYSDDoXJlYSBkZSB0cmFuc2ZlcsOqbmNpYS4nLAogICAgJ0NvcHlfQ3V0X1NpemVfTGltaXQnID0+ICdPcyBmaWNoZWlyb3MvcGFzdGFzIHPDo28gZGVtYXNpYWRvIGdyYW5kZXMgcGFyYSAlcy4gTGltaXRlOiAlZCBNQi9vcGVyYcOnw6NvJywgLy8gJXMgPSBjdXQgb3IgY29weQogICAgJ0NvcHlfQ3V0X0NvdW50X0xpbWl0JyA9PiAnVm9jw6ogc2VsZWNpb25vdSBtdWl0b3MgYXJxdWl2b3MgLyBwYXN0YXMgcGFyYSAlcy4gTGltaXQ6ICVkIGZpY2hlaXJvcy9vcGVyYcOnw6NvJywgLy8gJXMgPSBjdXQgb3IgY29weQogICAgJ0NvcHlfQ3V0X05vdF9BbGxvd2VkJyA9PiAnTsOjbyB0ZSBwZXJtaXNzw6NvIHBhcmEgJXMgZmljaGVpcm9zLicsIC8vICVzKDEpID0gY3V0IG9yIGNvcHksICVzKDIpID0gZmlsZXMgb3IgZm9sZGVycwogICAgJ0ltYWdlX0VkaXRvcl9Ob19TYXZlJyA9PiAnTsOjbyBmb2kgcG9zc8OtdmVsIGdyYXZhciBpbWFnZW0nLAogICAgJ0ltYWdlX0VkaXRvcl9FeGl0JyA9PiAiU2HDrWRhIiwKICAgICdJbWFnZV9FZGl0b3JfU2F2ZScgPT4gIlNhbHZlIiwKICAgICdaaXBfTm9fRXh0cmFjdCcgPT4gJ07Do28gZm9pIHBvc3PDrXZlbCBleHRyYWlyLiBPIGFycXVpdm8gcG9kZSBlc3RhciBjb3Jyb21waWRvLicsCiAgICAnWmlwX0ludmFsaWQnID0+ICdFeHRlbnPDo28gbsOjbyBzdXBvcnRhZGEuIFbDoWxpZGFzOiB6aXAsIGd6LCB0YXIuJywKICAgICdEaXJfTm9fV3JpdGUnID0+ICdBIHBhc3RhIGVzY29saGlkYSBuw6NvIHRlbSBwZXJtaXNzw7VlcyBwYXJhIGVzY3JldmVyLicsCiAgICAnRnVuY3Rpb25fRGlzYWJsZWQnID0+ICdBIGZ1bsOnw6NvICVzIGZvaSBkZXNsaWdhZGEgcGVsbyBzZXJ2aWRvci4nLCAvLyAlcyA9IGN1dCBvciBjb3B5CiAgICAnRmlsZV9QZXJtaXNzaW9uJyA9PiAnUGVybWlzc8OjbyBkbyBGaWNoZWlybycsCiAgICAnRmlsZV9QZXJtaXNzaW9uX05vdF9BbGxvd2VkJyA9PiAnTXVkYXIgYXMgcGVybWlzc8O1ZXMgZG9zICVzIG7Do28gw6kgcGVybWl0aWRvLicsIC8vICVzID0gZmlsZXMgb3IgZm9sZGVycwogICAgJ0ZpbGVfUGVybWlzc2lvbl9SZWN1cnNpdmUnID0+ICdBQXBsaWNhciBkZSBmb3JtYSByZWN1cnNpdmE/JywKICAgICdGaWxlX1Blcm1pc3Npb25fV3JvbmdfTW9kZScgPT4gIk8gbW9kbyBkZSBwZXJtaXNzw6NvIGZvcm5lY2lkbyBlc3TDoSBpbmNvcnJldG8uIiwKICAgICdVc2VyJyA9PiAnVXRpbGl6YWRvcicsCiAgICAnR3JvdXAnID0+ICdHcnVwbycsCiAgICAnWWVzJyA9PiAnU2ltJywKICAgICdObycgPT4gJ07Do28nLAogICAgJ0xhbmdfTm90X0ZvdW5kJyA9PiAnTsOjbyBmb2kgcG9zc8OtdmVsIGVuY29udHJhciBvIGlkaW9tYS4nLAogICAgJ0xhbmdfQ2hhbmdlJyA9PiAnQWx0ZXJhciBvIGlkaW9tYScsCiAgICAnRmlsZV9Ob3RfRm91bmQnID0+ICdOw6NvIGZvaSBwb3Nzw612ZWwgZW5jb250cmFyIG8gYXJxdWl2by4nLAogICAgJ0ZpbGVfT3Blbl9FZGl0X05vdF9BbGxvd2VkJyA9PiAnTsOjbyB0ZW0gcGVybWlzc8OjbyBwYXJhICVzIGVzdGUgZmljaGVpcm8uJywgLy8gJXMgPSBvcGVuIG9yIGVkaXQKICAgICdFZGl0JyA9PiAnRWRpdGFyJywKICAgICdFZGl0X0ZpbGUnID0+ICJFZGl0YXIgY29udGXDumRvIGRvIGZpY2hlaXJvIiwKICAgICdGaWxlX1NhdmVfT0snID0+ICJGaWNoZWlybyBncmF2YWRvIGNvbSBzdWNlc3NvLiIsCiAgICAnRmlsZV9TYXZlX0Vycm9yJyA9PiAiT2NvcnJldSB1bSBlcnJvIGR1cmFudGUgYSBncmF2YcOnw6NvIGRvIGZpY2hlaXJvLiIsCiAgICAnTmV3X0ZpbGUnID0+ICdOb3ZvIGZpY2hlaXJvJywKICAgICdOb19FeHRlbnNpb24nID0+ICdUZW0gZGUgYWRpY2lvbmFyIHVtYSBleHRlbnPDo28gYW8gZmljaGVpcm8uJywKICAgICdWYWxpZF9FeHRlbnNpb25zJyA9PiAnRXh0ZW5zw7VlcyB2w6FsaWRhczogJXMnLCAvLyAlcyA9IHR4dCxsb2cgZXRjLgogICAgJ1VwbG9hZF9tZXNzYWdlJyA9PiAiRHJvcCBmaWxlIGhlcmUgdG8gdXBsb2FkIiwKCiAgICAnU0VSVkVSIEVSUk9SJyA9PiAiU0VSVkVSIEVSUk9SIiwKICAgICdmb3JiaWRkZW4nID0+ICJGb3JiaWRlbiIsCiAgICAnd3JvbmcgcGF0aCcgPT4gIldyb25nIHBhdGgiLAogICAgJ3dyb25nIG5hbWUnID0+ICJXcm9uZyBuYW1lIiwKICAgICd3cm9uZyBleHRlbnNpb24nID0+ICJXcm9uZyBleHRlbnNpb24iLAogICAgJ3dyb25nIG9wdGlvbicgPT4gIldyb25nIG9wdGlvbiIsCiAgICAnd3JvbmcgZGF0YScgPT4gIldyb25nIGRhdGEiLAogICAgJ3dyb25nIGFjdGlvbicgPT4gIldyb25nIGFjdGlvbiIsCiAgICAnd3Jvbmcgc3ViLWFjdGlvbicgPT4gIldyb25nIHN1Yi1hY3RpbyIsCiAgICAnbm8gYWN0aW9uIHBhc3NlZCcgPT4gIk5vIGFjdGlvbiBwYXNzZWQiLAogICAgJ25vIHBhdGgnID0+ICJObyBwYXRoIiwKICAgICdubyBmaWxlJyA9PiAiTm8gZmlsZSIsCiAgICAndmlldyB0eXBlIG51bWJlciBtaXNzaW5nJyA9PiAiVmlldyB0eXBlIG51bWJlciBtaXNzaW5nIiwKICAgICdOb3QgZW5vdWdoIE1lbW9yeScgPT4gIk5vdCBlbm91Z2ggTWVtb3J5IiwKICAgICdtYXhfc2l6ZV9yZWFjaGVkJyA9PiAiWW91ciBpbWFnZSBmb2xkZXIgaGFzIHJlYWNoIGl0cyBtYXhpbWFsZSBzaXplIG9mICVkIE1CLiIsIC8vJWQgPSBtYXggb3ZlcmFsbCBzaXplCiAgICAnQicgPT4gIkIiLAogICAgJ0tCJyA9PiAiS0IiLAogICAgJ01CJyA9PiAiTUIiLAogICAgJ0dCJyA9PiAiR0IiLAogICAgJ1RCJyA9PiAiVEIiLAogICAgJ3RvdGFsIHNpemUnID0+ICJUb3RhbCBzaXplIiwKKTsK]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/lang/ro.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJldHVybiBhcnJheSgKCiAgICAnU2VsZWN0JyA9PiAnU2VsZWN0ZWF6xIMnLAogICAgJ0Rlc2VsZWN0X0FsbCcgPT4gJ0Rlc2VsZWN0IEFsbCcsCiAgICAnU2VsZWN0X0FsbCcgPT4gJ1NlbGVjdCBBbGwnLAogICAgJ0VyYXNlJyA9PiAnyJh0ZXJnZScsCiAgICAnT3BlbicgPT4gJ0Rlc2NoaWRlJywKICAgICdDb25maXJtX2RlbCcgPT4gJ1N1bnRlyJtpIHNpZ3VyKMSDKSBjxIMgdnJlyJtpIHPEgyDImXRlcmdlyJtpIGFjZXN0IGZpyJlpZXI/JywKICAgICdBbGwnID0+ICdUb2F0ZScsCiAgICAnRmlsZXMnID0+ICdGaciZaWVyZScsCiAgICAnSW1hZ2VzJyA9PiAnSW1hZ2luaScsCiAgICAnQXJjaGl2ZXMnID0+ICdBcmhpdmUnLAogICAgJ0Vycm9yX1VwbG9hZCcgPT4gJ0ZpyJlpZXJ1bCDDrm5jxINyY2F0IGRlcMSDyJllyJl0ZSBkaW1lbnNpdW5lYSBtYXhpbcSDIGFkbWlzxIMuJywKICAgICdFcnJvcl9leHRlbnNpb24nID0+ICdGaciZaWVyZWxlIGN1IGFjZWFzdMSDIGV4dGVuc2llIG51IHN1bnQgcGVybWlzZScsCiAgICAnVXBsb2FkX2ZpbGUnID0+ICdVcGxvYWQnLCAvLyDDjm5jYXJjxIMgLSB0aGlzIGlzIHRoZSBjb3JyZWN0IHRyYW5zbGF0aW9uIGZvciAiVXBsb2FkIiBidXQgaW4gUm9tYW5pYSwgd2UgYXJlIG1vcmUgZmFtaWxpYXIgdG8gdGhlIGVuZ2xpc2ggdGVybQogICAgJ0ZpbHRlcnMnID0+ICdGaWx0cmUnLAogICAgJ1ZpZGVvcycgPT4gJ0ZpyJlpZXJlIHZpZGVvJywKICAgICdNdXNpYycgPT4gJ0ZpyJlpZXJlIGF1ZGlvJywKICAgICdOZXdfRm9sZGVyJyA9PiAnRm9sZGVyIG5vdScsCiAgICAnRm9sZGVyX0NyZWF0ZWQnID0+ICdGb2xkZXJ1bCBhIGZvc3QgY3JlYXQgY3Ugc3VjY2VzJywKICAgICdFeGlzdGluZ19Gb2xkZXInID0+ICdGb2xkZXIgZXhpc3RlbnQnLAogICAgJ0NvbmZpcm1fRm9sZGVyX2RlbCcgPT4gJ1N1bnRlyJtpIHNpZ3VyKMSDKSBjxIMgdnJlyJtpIHPEgyDImXRlcmdlyJtpIGFjZXN0IGZvbGRlciDImWkgdG9hdGUgZmnImWllcmVsZSBkaW4gZWw/JywKICAgICdSZXR1cm5fRmlsZXNfTGlzdCcgPT4gJ8OObmFwb2kgbGEgbGlzdGEgZGUgZmnImWllcmUnLAogICAgJ1ByZXZpZXcnID0+ICdQcmV2aXp1YWxpemFyZScsCiAgICAnRG93bmxvYWQnID0+ICdEZXNjxINyY2FyZScsCiAgICAnSW5zZXJ0X0ZvbGRlcl9OYW1lJyA9PiAnQWRhdWfEgyBkZW51bWlyZSBsYSBmb2xkZXI6JywKICAgICdSb290JyA9PiAnZm9sZGVyIHLEg2TEg2NpbsSDJywKICAgICdSZW5hbWUnID0+ICdSZWRlbnVtaXJlJywKICAgICdCYWNrJyA9PiAnw65uYXBvaScsCiAgICAnVmlldycgPT4gJ1ZpenVhbGl6YXJlJywKICAgICdWaWV3X2xpc3QnID0+ICdWaXp1YWxpemFyZSBsaXN0xIMnLAogICAgJ1ZpZXdfY29sdW1uc19saXN0JyA9PiAnVml6dWFsaXphcmUgY29sb2FuZScsCiAgICAnVmlld19ib3hlcycgPT4gJ1ZpenVhbGl6YXJlIHBpY3RvZ3JhbWUnLAogICAgJ1Rvb2xiYXInID0+ICdCYXLEgyBkZSB1bmVsdGUnLAogICAgJ0FjdGlvbnMnID0+ICdBY8ibaXVuaScsCiAgICAnUmVuYW1lX2V4aXN0aW5nX2ZpbGUnID0+ICdEZWphIGV4aXN0xIMgdW4gZmnImWllciBjdSBhY2Vhc3TEgyBkZW51bWlyZScsCiAgICAnUmVuYW1lX2V4aXN0aW5nX2ZvbGRlcicgPT4gJ0RlamEgZXhpc3TEgyB1biBmb2xkZXIgY3UgYWNlYXN0xIMgZGVudW1pcmUnLAogICAgJ0VtcHR5X25hbWUnID0+ICdEZW51bWlyZWEgbnUgZXN0ZSBjb21wbGV0YXTEgycsCiAgICAnVGV4dF9maWx0ZXInID0+ICdmaWx0cnUgdGV4dCcsCiAgICAnU3dpcGVfaGVscCcgPT4gJ0dsaXNlYXrEgyBwZSBudW1lbGUgZmnImWllcnVsdWkvZm9sZGVydWx1aSBwZW50cnUgb3DIm2l1bmknLAogICAgJ1VwbG9hZF9iYXNlJyA9PiAnVXBsb2FkIHN0YW5kYXJkJywKICAgICdVcGxvYWRfYmFzZV9oZWxwJyA9PiAiQWRhdWfEgyBmaciZaWVyZSAoZHJhZyAmIGRyb3AgLSBicm93c2VyZSBtb2Rlcm5lKSBzYXUgY2xpY2sgcGUgYnV0b251bCBBZGF1Z8SDIGZpyJlpZXIoZSksIGRlIG1haSBzdXMgYXBvaSBwZSBidXRvbnVsIFN0YXJ0IHVwbG9hZC4gRHVwxIMgY2UgdXBsb2FkLXVsIGVzdGUgZmluYWxpemF0LCBhcMSDc2HIm2kgcGUgYnV0b251bCDDjm5hcG9pIGxhIGxpc3RhIGRlIGZpyJlpZXJlLiIsCiAgICAnVXBsb2FkX2FkZF9maWxlcycgPT4gJ0FkYXVnxIMgZmnImWllcihlKScsCiAgICAnVXBsb2FkX3N0YXJ0JyA9PiAnU3RhcnQgdXBsb2FkJywKICAgICdVcGxvYWRfZXJyb3JfbWVzc2FnZXMnID0+YXJyYXkoCiAgICAgICAgMSA9PiAnRGltZW5zaXVuZWEgZmnImWllcnVsdWkgdXBsb2FkYXQgZGVwxIPImWXImXRlIHZhbG9hcmVhIGRpbiBkaXJlY3RpdmEgdXBsb2FkX21heF9maWxlc2l6ZSBkaW4gZmnImWllcnVsIHBocC5pbmknLAogICAgICAgIDIgPT4gJ0RpbWVuc2l1bmVhIGZpyJlpZXJ1bHVpIHVwbG9hZGF0IGRlcMSDyJllyJl0ZSB2YWxvYXJlYSBkaW4gZGlyZWN0aXZhIE1BWF9GSUxFX1NJWkUgc3BlY2lmaWNhdMSDIMOubiBmb3JtdWxhcnVsIEhUTUwnLAogICAgICAgIDMgPT4gJ0ZpyJlpZXJ1bCB1cGxvYWRhdCBhIGZvc3Qgw65uY8SDcmNhdCBwYXLIm2lhbCAnLAogICAgICAgIDQgPT4gJ05pY3VuIGZpyJlpZXIgbnUgYSBmb3N0IHVwbG9hZGF0JywKICAgICAgICA2ID0+ICdGb2xkZXJ1bCB0ZW1wb3JhciBsaXBzZciZdGUnLAogICAgICAgIDcgPT4gJ1NjcmllcmVhIGZpyJlpZXJ1bHVpIHBlIGRpc2MgYSBlyJl1YXQnLAogICAgICAgIDggPT4gJ08gZXh0ZW5zaWUgUEhQIGEgw65udHJlcnVwdCB1cGxvYWQtdWwnLAogICAgICAgICdwb3N0X21heF9zaXplJyA9PiAnRGltZW5zaXVuZWEgZmnImWllcnVsdWkgdXBsb2FkYXQgZGVwxIPImWXImXRlIHZhbG9hcmVhIGRpbiBkaXJlY3RpdmEgcG9zdF9tYXhfc2l6ZSBkaW4gZmnImWllcnVsIHBocC5pbmknLAogICAgICAgICdtYXhfZmlsZV9zaXplJyA9PiAnRmnImWllcnVsIGVzdGUgcHJlYSBtYXJlJywKICAgICAgICAnbWluX2ZpbGVfc2l6ZScgPT4gJ0ZpyJlpZXJ1bCBlc3RlIHByZWEgbWljJywKICAgICAgICAnYWNjZXB0X2ZpbGVfdHlwZXMnID0+ICdUaXB1bCBkZSBmaciZaWVyIG51IGVzdGUgcGVybWlzJywKICAgICAgICAnbWF4X251bWJlcl9vZl9maWxlcycgPT4gJ051bcSDcnVsIG1heGltIGRlIGZpyJlpZXJlIGEgZm9zdCBkZXDEg8iZaXQnLAogICAgICAgICdtYXhfd2lkdGgnID0+ICdSZXpvbHXIm2lhIGltYWdpbmlpIGRlcMSDyJllyJl0ZSBsxIPIm2ltZWEgbWF4aW3EgyBhZG1pc8SDJywKICAgICAgICAnbWluX3dpZHRoJyA9PiAnUmV6b2x1yJtpYSBpbWFnaW5paSBlc3RlIG1haSBtaWPEgyBkZWPDonQgbMSDyJtpbWVhIG1pbmltxIMgbmVjZXNhcsSDJywKICAgICAgICAnbWF4X2hlaWdodCcgPT4gJ1Jlem9sdcibaWEgaW1hZ2luaWkgZGVwxIPImWXImXRlIMOubsSDbMibaW1lYSBtYXhpbcSDIGFkbWlzxIMnLAogICAgICAgICdtaW5faGVpZ2h0JyA9PiAnUmV6b2x1yJtpYSBpbWFnaW5paSBlc3RlIG1haSBtaWPEgyBkZWPDonQgw65uxINsyJtpbWVhIG1pbmltxIMgbmVjZXNhcsSDJywKICAgICAgICAnYWJvcnQnID0+ICdQcm9jZXN1bCBkZSB1cGxvYWQgYSBmb3N0IMOubnRyZXJ1cHQnLAogICAgICAgICdpbWFnZV9yZXNpemUnID0+ICdJbWFnaW5lYSBudSBhIHB1dHV0IGZpIHJlZGltZW5zaW9uYXTEgycKICAgICksCiAgICAnVXBsb2FkX3VybCcgPT4gJ0RpbiB1cmwnLAogICAgJ1R5cGVfZGlyJyA9PiAnZGlyJywKICAgICdUeXBlJyA9PiAnVGlwJywKICAgICdEaW1lbnNpb24nID0+ICdEaW1lbnNpdW5lJywKICAgICdTaXplJyA9PiAnTcSDcmltZScsCiAgICAnRGF0ZScgPT4gJ0RhdGEnLAogICAgJ0ZpbGVuYW1lJyA9PiAnTnVtZSBmaciZaWVyJywKICAgICdPcGVyYXRpb25zJyA9PiAnT3BlcmHIm2lpJywKICAgICdEYXRlX3R5cGUnID0+ICd5LW0tZCcsCiAgICAnT0snID0+ICdPSycsCiAgICAnQ2FuY2VsJyA9PiAnQW51bGFyZScsCiAgICAnU29ydGluZycgPT4gJ3NvcnRhcmUnLAogICAgJ1Nob3dfdXJsJyA9PiAnQWZpc2VhesSDIFVSTCcsCiAgICAnRXh0cmFjdCcgPT4gJ0V4dHJhZ2UgYWljaScsCiAgICAnRmlsZV9pbmZvJyA9PiAnaW5mb3JtYcibaWkgZmnImWllcicsCiAgICAnRWRpdF9pbWFnZScgPT4gJ0VkaXRhcmUgaW1hZ2luZScsCiAgICAnRHVwbGljYXRlJyA9PiAnTXVsdGlwbGljYXJlJywKICAgICdGb2xkZXJzJyA9PiAnRm9sZGVyZScsCiAgICAnQ29weScgPT4gJ0NvcGllcmUnLAogICAgJ0N1dCcgPT4gJ1TEg2llcmUnLAogICAgJ1Bhc3RlJyA9PiAnTGlwaXJlJywKICAgICdDQicgPT4gJ0NsaXBib2FyZCcsIC8vIGNsaXBib2FyZAogICAgJ1Bhc3RlX0hlcmUnID0+ICdMaXBpcmUgw65uIGFjZXN0IGZvbGRlcicsCiAgICAnUGFzdGVfQ29uZmlybScgPT4gJ1N1bnRlyJtpIHNpZ3VyKMSDKSBjxIMgZG9yacibaSBzxIMgY29waWHIm2kgZmnImWllcnVsIMOubiBhY2VzdCBmb2xkZXI/IEFjZWFzdMSDIG9wZXJhyJtpdW5lIHZhIHN1cHJhc2NyaWUgZm9sZGVyZWxlIHNhdSBmaciZaWVyZWxlIGN1IGFjZWlhyJlpIGRlbnVtaXJlLicsCiAgICAnUGFzdGVfRmFpbGVkJyA9PiAnT3BlcmHIm2l1bmVhIGRlIGxpcGlyZSBhIGZpyJlpZXJlbG9yIGEgZciZdWF0JywKICAgICdDbGVhcl9DbGlwYm9hcmQnID0+ICfImHRlcmdlIGNsaXBib2FyZCcsCiAgICAnQ2xlYXJfQ2xpcGJvYXJkX0NvbmZpcm0nID0+ICdTdW50ZcibaSBzaWd1cijEgykgY8SDIGRvcmnIm2kgc8SDIMiZdGVyZ2XIm2kgY29uyJtpbnV0dWwgY2xpcGJvYXJkLXVsdWk/JywKICAgICdGaWxlc19PTl9DbGlwYm9hcmQnID0+ICdFeGlzdMSDIGZpyJlpZXJlIMOubiBjbGlwYm9hcmQuJywKICAgICdDb3B5X0N1dF9TaXplX0xpbWl0JyA9PiAnRm9sZGVyZWxlL2ZpyJlpZXJlbGUgc2VsZWN0YXRlIHN1bnQgcHJlYSBtYXJpIHBlbnRydSBhICUxJHMuIExpbWl0YSBtYXhpbcSDOiAlMiRkIE1CL29wZXJhyJtpdW5lJywgLy8gJTEkcyA9IGN1dCBvciBjb3B5LCAlMiRkID0gbWF4IHNpemUKICAgICdDb3B5X0N1dF9Db3VudF9MaW1pdCcgPT4gJ0HIm2kgc2VsZWN0YXQgcHJlYSBtdWx0ZSBmb2xkZXJlL2ZpyJlpZXJlIHBlbnRydSBhICUxJHMuIExpbWl0YSBtYXhpbcSDOiAlMiRkIGZpbGVzL29wZXJhyJtpdW5lJywgLy8gJTEkcyA9IGN1dCBvciBjb3B5LCAlMiRkID0gbWF4IGNvdW50CiAgICAnQ29weV9DdXRfTm90X0FsbG93ZWQnID0+ICdOdSBhdmXIm2kgcGVybWlzaXVuaSBwZW50cnUgYSAlMSRzICUyJHMuJywgLy8gJTEyJHMgPSBjdXQgb3IgY29weSwgJTIkcyA9IGZpbGVzIG9yIGZvbGRlcnMKICAgICdJbWFnZV9FZGl0b3JfTm9fU2F2ZScgPT4gJ0ltYWdpbmVhIG51IHBvYXRlIGZpIHNhbHZhdMSDJywKICAgICdJbWFnZV9FZGl0b3JfRXhpdCcgPT4gIkV4aXQiLAogICAgJ0ltYWdlX0VkaXRvcl9TYXZlJyA9PiAiU2F2ZSIsCiAgICAnWmlwX05vX0V4dHJhY3QnID0+ICdGaXNpZXJlbGUgZGluIGFyaGl2xIMgbnUgcG90IGZpIGV4dHJhc2UuIEVzdGUgcG9zaWJpbCBjYSBhcmhpdmEgc8SDIGZpZSBjb3J1cHTEgy4nLAogICAgJ1ppcF9JbnZhbGlkJyA9PiAnRXh0ZW5zaWEgbnUgZXN0ZSBzdXBvcnRhdMSDLiBFeHRlbnNpaSB2YWxpZGU6IHppcCwgZ3osIHRhci4nLAogICAgJ0Rpcl9Ob19Xcml0ZScgPT4gJ0ZvbGRlcnVsIHNlbGVjdGF0IG51IGFyZSBwZXJtaXNpdW5pIGRlIHNjcmllcmUuJywKICAgICdGdW5jdGlvbl9EaXNhYmxlZCcgPT4gJ0Z1bmPIm2lhICVzIGEgZm9zdCBkZXphY3RpdmF0xIMgZGluIHNlcnZlci4nLCAvLyAlcyA9IGN1dCBvciBjb3B5CiAgICAnRmlsZV9QZXJtaXNzaW9uJyA9PiAnUGVybWlzaXVuaSBmaciZaWVyJywKICAgICdGaWxlX1Blcm1pc3Npb25fTm90X0FsbG93ZWQnID0+ICdNb2RpZmljYXJlIHBlcm1pc2l1bmlsb3IgcGVudHJ1ICVzIG51IGVzdGUgcGVybWlzxIMuJywgLy8gJXMgPSBmaWxlcyBvciBmb2xkZXJzCiAgICAnRmlsZV9QZXJtaXNzaW9uX1JlY3Vyc2l2ZScgPT4gJ0V4ZWN1dMSDIMOubiBtb2QgcmVjdXJzaXY/JywKICAgICdGaWxlX1Blcm1pc3Npb25fV3JvbmdfTW9kZScgPT4gIlBlcm1pc2l1bmVhIGZ1cm5pemF0xIMgbnUgZXN0ZSBwZXJtaXPEgy4iLAogICAgJ1VzZXInID0+ICdVdGlsaXphdG9yJywKICAgICdHcm91cCcgPT4gJ0dydXAnLAogICAgJ1llcycgPT4gJ0RhJywKICAgICdObycgPT4gJ051JywKICAgICdMYW5nX05vdF9Gb3VuZCcgPT4gJ0xpbWJhIGFsZWFzxIMsIG51IHBvYXRlIGZpIGfEg3NpdMSDLicsCiAgICAnTGFuZ19DaGFuZ2UnID0+ICdNb2RpZmljYXJlIGxpbWJhJywKICAgICdGaWxlX05vdF9Gb3VuZCcgPT4gJ0Zpc2llcnVsIG51IHBvYXRlIGZpIGfEg3NpdC4nLAogICAgJ0ZpbGVfT3Blbl9FZGl0X05vdF9BbGxvd2VkJyA9PiAnTnUgYXZlyJtpIHBlcm1pc2l1bmkgcGVudHJ1IGEgJXMgYWNlc3QgZmnImWllci4nLCAvLyAlcyA9IG9wZW4gb3IgZWRpdAogICAgJ0VkaXQnID0+ICdFZGl0YXJlJywKICAgICdFZGl0X0ZpbGUnID0+ICJFZGl0YXJlIGNvbsibaW51dCBmaciZaWVyIiwKICAgICdGaWxlX1NhdmVfT0snID0+ICJGaciZaWVydWwgYSBmb3N0IHNhbHZhdCBjdSBzdWNjZXMuIiwKICAgICdGaWxlX1NhdmVfRXJyb3InID0+ICJBIGludGVydmVuaXQgbyBlcm9hcmUgbGEgc2FsdmFyZWEgZmnImWllcnVsdWkuIiwKICAgICdOZXdfRmlsZScgPT4gJ0ZpyJlpZXIgbm91JywKICAgICdOb19FeHRlbnNpb24nID0+ICdFc3RlIG5lY2VzYXIgc8SDIGFkxIN1Z2HIm2kgbyBleHRlbnNpZSB2YWxpZMSDIGxhIGZpyJlpZXIuJywKICAgICdWYWxpZF9FeHRlbnNpb25zJyA9PiAnRXh0ZW5zaWkgdmFsaWRlOiAlcycsIC8vICVzID0gdHh0LGxvZyBldGMuCiAgICAnVXBsb2FkX21lc3NhZ2UnID0+ICJEcmFnICYgZHJvcCBsYSBmaciZaWVyZSBwZW50cnUgdXBsb2FkIiwKCiAgICAnU0VSVkVSIEVSUk9SJyA9PiAiRVJPQVJFIFNFUlZFUiIsCiAgICAnZm9yYmlkZGVuJyA9PiAiSW50ZXJ6aXMiLAogICAgJ3dyb25nIHBhdGgnID0+ICJDYWxlIGluY29yZWN0xIMiLAogICAgJ3dyb25nIG5hbWUnID0+ICJEZW51bWlyZSBpbmNvcmVjdMSDIiwKICAgICd3cm9uZyBleHRlbnNpb24nID0+ICJFeHRlbnNpZSBpbmNvcmVjdMSDIiwKICAgICd3cm9uZyBvcHRpb24nID0+ICJPcMibaXVuZSBpbmNvcmVjdMSDIiwKICAgICd3cm9uZyBkYXRhJyA9PiAiRGF0YSBpbmNvcmVjdMSDIiwKICAgICd3cm9uZyBhY3Rpb24nID0+ICJBY8ibaXVuZSBpbmNvcmVjdMSDIiwKICAgICd3cm9uZyBzdWItYWN0aW9uJyA9PiAiU3ViYWPIm2l1bmUgaW5jb3JlY3TEgyIsCiAgICAnbm8gYWN0aW9uIHBhc3NlZCcgPT4gIk5pY2lvIGFjyJtpdW5lIG51IHMtYSBmaW5hbGl6YXQiLAogICAgJ25vIHBhdGgnID0+ICJDYWxlIGluZXhpc3RlbnTEgyIsCiAgICAnbm8gZmlsZScgPT4gIkZpyJlpZXIgaW5leGlzdGVudCIsCiAgICAndmlldyB0eXBlIG51bWJlciBtaXNzaW5nJyA9PiAiTGlwc8SDIG51bcSDciB0aXAgZGUgdml6dWFsaXphcmUiLAogICAgJ05vdCBlbm91Z2ggTWVtb3J5JyA9PiAiTWVtb3JpZSBpbnN1ZmljaWVudMSDIiwKICAgICdtYXhfc2l6ZV9yZWFjaGVkJyA9PiAiRm9sZGVydWwgZGUgaW1hZ2luaSBhIGF0aW5zIGRpbWVuc2l1bmVhIG1heGltxIMgZGUgJWQgTUIuIiwgLy8lZCA9IG1heCBvdmVyYWxsIHNpemUKICAgICdCJyA9PiAiQiIsCiAgICAnS0InID0+ICJLQiIsCiAgICAnTUInID0+ICJNQiIsCiAgICAnR0InID0+ICJHQiIsCiAgICAnVEInID0+ICJUQiIsCiAgICAndG90YWwgc2l6ZScgPT4gIkRpbWVuc2l1bmUgdG90YWzEgyIsCik7Cg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/lang/ru.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJldHVybiBhcnJheSgKCiAgICAnU2VsZWN0JyA9PiAn0JLRi9Cx0YDQsNGC0YwnLAogICAgJ0Rlc2VsZWN0X0FsbCcgPT4gJ0Rlc2VsZWN0IEFsbCcsCiAgICAnU2VsZWN0X0FsbCcgPT4gJ1NlbGVjdCBBbGwnLAogICAgJ0VyYXNlJyA9PiAn0KPQtNCw0LvQuNGC0YwnLAogICAgJ09wZW4nID0+ICfQntGC0LrRgNGL0YLRjCcsCiAgICAnQ29uZmlybV9kZWwnID0+ICfQktGLINGD0LLQtdGA0LXQvdGLLCDRh9GC0L4g0YXQvtGC0LjRgtC1INGD0LTQsNC70LjRgtGMINGN0YLQvtGCINGE0LDQudC7PycsCiAgICAnQWxsJyA9PiAn0J7Rh9C40YHRgtC40YLRjCDRhNC40LvRjNGC0YAnLAogICAgJ0ZpbGVzJyA9PiAn0KTQsNC50LvRiycsCiAgICAnSW1hZ2VzJyA9PiAn0JjQt9C+0LHRgNCw0LbQtdC90LjRjycsCiAgICAnQXJjaGl2ZXMnID0+ICfQkNGA0YXQuNCy0YsnLAogICAgJ0Vycm9yX1VwbG9hZCcgPT4gJ9CX0LDQs9GA0YPQttCw0LXQvNGL0Lkg0YTQsNC50Lsg0L/RgNC10LLRi9GI0LDQtdGCINC00L7Qv9GD0YHRgtC40LzRi9C5INGA0LDQt9C80LXRgC4nLAogICAgJ0Vycm9yX2V4dGVuc2lvbicgPT4gJ9Cd0LXQtNC+0L/Rg9GB0YLQuNC80YvQuSDRhNC+0YDQvNCw0YIg0YTQsNC50LvQsC4nLAogICAgJ1VwbG9hZF9maWxlJyA9PiAn0JfQsNCz0YDRg9C30LjRgtGMINGE0LDQudC7JywKICAgICdGaWx0ZXJzJyA9PiAn0KTQuNC70YzRgtGAJywKICAgICdWaWRlb3MnID0+ICfQktC40LTQtdC+JywKICAgICdNdXNpYycgPT4gJ9Cc0YPQt9GL0LrQsCcsCiAgICAnTmV3X0ZvbGRlcicgPT4gJ9Cd0L7QstCw0Y8g0L/QsNC/0LrQsCcsCiAgICAnRm9sZGVyX0NyZWF0ZWQnID0+ICfQn9Cw0L/QutCwINGD0YHQv9C10YjQvdC+INGB0L7Qt9C00LDQvdCwJywKICAgICdFeGlzdGluZ19Gb2xkZXInID0+ICfQodGD0YnQtdGB0YLQstGD0Y7RidCw0Y8g0L/QsNC/0LrQsCcsCiAgICAnQ29uZmlybV9Gb2xkZXJfZGVsJyA9PiAn0JLRiyDRg9Cy0LXRgNC10L3Riywg0YfRgtC+INGF0L7RgtC40YLQtSDRg9C00LDQu9C40YLRjCDRjdGC0YMg0L/QsNC/0LrRgyDQuCDQstGB0LUg0YTQsNC50LvRiyDQsiDQvdC10Lk/JywKICAgICdSZXR1cm5fRmlsZXNfTGlzdCcgPT4gJ9CS0LXRgNC90YPRgtGM0YHRjyDQuiDRgdC/0LjRgdC60YMg0YTQsNC50LvQvtCyJywKICAgICdQcmV2aWV3JyA9PiAn0J/RgNC+0YHQvNC+0YLRgCcsCiAgICAnRG93bmxvYWQnID0+ICfQl9Cw0LPRgNGD0LfQuNGC0YwnLAogICAgJ0luc2VydF9Gb2xkZXJfTmFtZScgPT4gJ9CS0LLQtdC00LjRgtC1INC40LzRjyDQv9Cw0L/QutC4OicsCiAgICAnUm9vdCcgPT4gJ9Ca0L7RgNC90LXQstCw0Y8g0L/QsNC/0LrQsCcsCiAgICAnUmVuYW1lJyA9PiAn0J/QtdGA0LXQuNC80LXQvdC+0LLQsNGC0YwnLAogICAgJ0JhY2snID0+ICfQndCw0LfQsNC0JywKICAgICdWaWV3JyA9PiAn0JLQuNC0JywKICAgICdWaWV3X2xpc3QnID0+ICfQodC/0LjRgdC+0LonLAogICAgJ1ZpZXdfY29sdW1uc19saXN0JyA9PiAn0KHRgtC+0LvQsdGG0YsnLAogICAgJ1ZpZXdfYm94ZXMnID0+ICfQn9C70LjRgtC60LAnLAogICAgJ1Rvb2xiYXInID0+ICfQn9Cw0L3QtdC70YwnLAogICAgJ0FjdGlvbnMnID0+ICfQlNC10LnRgdGC0LLQuNGPJywKICAgICdSZW5hbWVfZXhpc3RpbmdfZmlsZScgPT4gJ9Ck0LDQudC7INGD0LbQtSDRgdGD0YnQtdGB0YLQstGD0LXRgicsCiAgICAnUmVuYW1lX2V4aXN0aW5nX2ZvbGRlcicgPT4gJ9Cf0LDQv9C60LAg0YPQttC1INGB0YPRidC10YHRgtCy0YPQtdGCJywKICAgICdFbXB0eV9uYW1lJyA9PiAn0J3QtSDQt9Cw0L/QvtC70L3QtdC90L4g0LjQvNGPJywKICAgICdUZXh0X2ZpbHRlcicgPT4gJ9GE0LjQu9GM0YLRgCcsCiAgICAnU3dpcGVfaGVscCcgPT4gJ9Cd0LDQstC10LTQuNGC0LUg0L3QsCDQuNC80Y8g0YTQsNC50LvQsC/Qv9Cw0L/QutC4LCDRh9GC0L7QsdGLINGD0LLQuNC00LXRgtGMINC+0L/RhtC40LgnLAogICAgJ1VwbG9hZF9iYXNlJyA9PiAn0J7RgdC90L7QstC90LDRjyDQt9Cw0LPRgNGD0LfQutCwJywKICAgICdVcGxvYWRfYmFzZV9oZWxwJyA9PiAi0J/QtdGA0LXRgtCw0YnQuNGC0LUg0YTQsNC50LvRiyAo0YHQvtCy0YDQtdC80LXQvdC90YvQtSDQsdGA0LDRg9C30LXRgNGLKSDQuNC70Lgg0L3QsNC20LzQuNGC0LUg0L3QsCDQstC10YDRhdC90Y7RjiDQutC90L7Qv9C60YMsINGH0YLQvtCx0Ysg0LTQvtCx0LDQstC40YLRjCDRhNCw0LnQuyjRiyksINC4INC90LDQttC80LjRgtC1IMKr0J3QsNGH0LDRgtGMINC30LDQs9GA0YPQt9C60YPCuy4g0JrQvtCz0LTQsCDQt9Cw0LPRgNGD0LfQutCwINCx0YPQtNC10YIg0LfQsNCy0LXRgNGI0LXQvdCwLCDQvdCw0LbQvNC40YLQtSDQutC90L7Qv9C60YMgwqvQktC+0LfQstGA0LDRgiDQuiDRgdC/0LjRgdC60YMg0YTQsNC50LvQvtCywrsuIiwKICAgICdVcGxvYWRfYWRkX2ZpbGVzJyA9PiAn0JTQvtCx0LDQstC40YLRjCDRhNCw0LnQuyjRiyknLAogICAgJ1VwbG9hZF9zdGFydCcgPT4gJ9Cd0LDRh9Cw0YLRjCDQt9Cw0LPRgNGD0LfQutGDJywKICAgICdVcGxvYWRfZXJyb3JfbWVzc2FnZXMnID0+YXJyYXkoCiAgICAgICAgMSA9PiAn0JfQsNCz0YDRg9C20LXQvdC90YvQuSDRhNCw0LnQuyDQv9GA0LXQstGL0YjQsNC10YIg0L/QsNGA0LDQvNC10YLRgCB1cGxvYWRfbWF4X2ZpbGVzaXplINCyIHBocC5pbmknLAogICAgICAgIDIgPT4gJ9CX0LDQs9GA0YPQttC10L3QvdGL0Lkg0YTQsNC50Lsg0L/RgNC10LLRi9GI0LDQtdGCINC/0LDRgNCw0LzQtdGC0YAgTUFYX0ZJTEVfU0laRSwg0YPQutCw0LfQsNC90L3Ri9C5INCyIEhUTUwt0YTQvtGA0LzQtScsCiAgICAgICAgMyA9PiAn0KTQsNC50Lsg0LHRi9C7INC30LDQs9GA0YPQttC10L0g0YLQvtC70YzQutC+INGH0LDRgdGC0LjRh9C90L4nLAogICAgICAgIDQgPT4gJ9Ck0LDQudC7INC90LUg0YPQtNCw0LvQvtGB0Ywg0LfQsNCz0YDRg9C30LjRgtGMJywKICAgICAgICA2ID0+ICfQntGC0YHRg9GC0YHRgtCy0YPQtdGCINCy0YDQtdC80LXQvdC90LDRjyDQv9Cw0L/QutCwJywKICAgICAgICA3ID0+ICfQndC1INGD0LTQsNC70L7RgdGMINC30LDQv9C40YHQsNGC0Ywg0YTQsNC50Lsg0L3QsCDQtNC40YHQuicsCiAgICAgICAgOCA9PiAn0KDQsNGB0YjQuNGA0LXQvdC40LUgUEhQINC+0YHRgtCw0L3QvtCy0LjQu9C+INC30LDQs9GA0YPQt9C60YMg0YTQsNC50LvQsCcsCiAgICAgICAgJ3Bvc3RfbWF4X3NpemUnID0+ICfQl9Cw0LPRgNGD0LbQtdC90L3Ri9C5INGE0LDQudC7INC/0YDQtdCy0YvRiNCw0LXRgiDQv9Cw0YDQsNC80LXRgtGAIHBvc3RfbWF4X3NpemUg0LIgcGhwLmluaScsCiAgICAgICAgJ21heF9maWxlX3NpemUnID0+ICfQoNCw0LfQvNC10YAg0YTQsNC50LvQsCDRgdC70LjRiNC60L7QvCDQsdC+0LvRjNGI0L7QuScsCiAgICAgICAgJ21pbl9maWxlX3NpemUnID0+ICfQoNCw0LfQvNC10YAg0YTQsNC50LvQsCDRgdC70LjRiNC60L7QvCDQvNCw0LvQtdC90YzQutC40LknLAogICAgICAgICdhY2NlcHRfZmlsZV90eXBlcycgPT4gJ9Cd0LXQtNC+0L/Rg9GB0YLQuNC80YvQuSDRgtC40L8g0YTQsNC50LvQsCcsCiAgICAgICAgJ21heF9udW1iZXJfb2ZfZmlsZXMnID0+ICfQn9GA0LXQstGL0YjQtdC90L4g0LzQsNC60YHQuNC80LDQu9GM0L3QvtC1INC60L7Qu9C40YfQtdGB0YLQstC+INGE0LDQudC70L7QsicsCiAgICAgICAgJ21heF93aWR0aCcgPT4gJ9CY0LfQvtCx0YDQsNC20LXQvdC40LUg0L/RgNC10LLRi9GI0LDQtdGCINC80LDQutGB0LjQvNCw0LvRjNC90YPRjiDRiNC40YDQuNC90YMnLAogICAgICAgICdtaW5fd2lkdGgnID0+ICfQmNC30L7QsdGA0LDQttC10L3QuNC1INGC0YDQtdCx0YPQtdGCINC80LjQvdC40LzQsNC70YzQvdC+0Lkg0YjQuNGA0LjQvdGLJywKICAgICAgICAnbWF4X2hlaWdodCcgPT4gJ9CY0LfQvtCx0YDQsNC20LXQvdC40LUg0L/RgNC10LLRi9GI0LDQtdGCINC80LDQutGB0LjQvNCw0LvRjNC90YPRjiDQstGL0YHQvtGC0YMnLAogICAgICAgICdtaW5faGVpZ2h0JyA9PiAn0JjQt9C+0LHRgNCw0LbQtdC90LjQtSDRgtGA0LXQsdGD0LXRgiDQvNC40L3QuNC80LDQu9GM0L3QvtC5INCy0YvRgdC+0YLRiycsCiAgICAgICAgJ2Fib3J0JyA9PiAn0JfQsNCz0YDRg9C30LrQsCDRhNCw0LnQu9CwINC/0YDQtdGA0LLQsNC90LAnLAogICAgICAgICdpbWFnZV9yZXNpemUnID0+ICfQndC1INGD0LTQsNC70L7RgdGMINC40LfQvNC10L3QuNGC0Ywg0YDQsNC30LzQtdGAINC40LfQvtCx0YDQsNC20LXQvdC40Y8nCiAgICApLAogICAgJ1VwbG9hZF91cmwnID0+ICfQn9C+INCw0LTRgNC10YHRgycsCiAgICAnVHlwZV9kaXInID0+ICfQv9Cw0L/QutCwJywKICAgICdUeXBlJyA9PiAn0KLQuNC/JywKICAgICdEaW1lbnNpb24nID0+ICfQoNCw0LfRgNC10YjQtdC90LjQtScsCiAgICAnU2l6ZScgPT4gJ9Cg0LDQt9C80LXRgCcsCiAgICAnRGF0ZScgPT4gJ9CU0LDRgtCwJywKICAgICdGaWxlbmFtZScgPT4gJ9CY0LzRjyZuYnNwO9GE0LDQudC70LAnLAogICAgJ09wZXJhdGlvbnMnID0+ICfQlNC10LnRgdGC0LLQuNC1JywKICAgICdEYXRlX3R5cGUnID0+ICdkLW0tWScsCiAgICAnT0snID0+ICdPSycsCiAgICAnQ2FuY2VsJyA9PiAn0J7RgtC80LXQvdCwJywKICAgICdTb3J0aW5nJyA9PiAn0KHQvtGA0YLQuNGA0L7QstC60LAnLAogICAgJ1Nob3dfdXJsJyA9PiAn0J/QvtC60LDQt9Cw0YLRjCBVUkwnLAogICAgJ0V4dHJhY3QnID0+ICfQoNCw0YHQv9Cw0LrQvtCy0LDRgtGMINC30LTQtdGB0YwnLAogICAgJ0ZpbGVfaW5mbycgPT4gJ9Ch0LLQvtC50YHRgtCy0LAg0YTQsNC50LvQsCcsCiAgICAnRWRpdF9pbWFnZScgPT4gJ9Cg0LXQtNCw0LrRgtC40YDQvtCy0LDRgtGMJywKICAgICdEdXBsaWNhdGUnID0+ICfQodC+0LfQtNCw0YLRjCDQutC+0L/QuNGOJywKICAgICdGb2xkZXJzJyA9PiAn0J/QsNC/0LrQuCcsCiAgICAnQ29weScgPT4gJ9Ca0L7Qv9C40YDQvtCy0LDRgtGMJywKICAgICdDdXQnID0+ICfQktGL0YDQtdC30LDRgtGMJywKICAgICdQYXN0ZScgPT4gJ9CS0YHRgtCw0LLQuNGC0YwnLAogICAgJ0NCJyA9PiAn0JHRg9GE0LXRgCDQvtCx0LzQtdC90LAnLCAvLyBjbGlwYm9hcmQKICAgICdQYXN0ZV9IZXJlJyA9PiAn0JLRgdGC0LDQstC40YLRjCDQsiDRgtC10LrRg9GJ0YPRjiDQv9Cw0L/QutGDJywKICAgICdQYXN0ZV9Db25maXJtJyA9PiAn0JLRiyDRhdC+0YLQuNGC0LUg0LLRgdGC0LDQstC40YLRjCDQsiDRjdGC0YMg0L/QsNC/0LrRgz8g0J/RgNC4INGB0L7QstC/0LDQtNC10L3QuNC4INC40LzRkdC9INGE0LDQudC70Ysg0LHRg9C00YPRgiDQv9C10YDQtdC30LDQv9C40YHQsNC90YsnLAogICAgJ1Bhc3RlX0ZhaWxlZCcgPT4gJ9Cd0LUg0YPQtNCw0LvQvtGB0Ywg0LLRgdGC0LDQstC40YLRjCDRhNCw0LnQuyjRiykuJywKICAgICdDbGVhcl9DbGlwYm9hcmQnID0+ICfQntGH0LjRgdGC0LjRgtGMINCx0YPRhNC10YAg0L7QsdC80LXQvdCwJywKICAgICdDbGVhcl9DbGlwYm9hcmRfQ29uZmlybScgPT4gJ9Ce0YfQuNGB0YLQuNGC0Ywg0LHRg9GE0LXRgCDQvtCx0LzQtdC90LA/JywKICAgICdGaWxlc19PTl9DbGlwYm9hcmQnID0+ICfQldGB0YLRjCDRhNCw0LnQu9GLINCyINCx0YPRhNC10YDQtSDQvtCx0LzQtdC90LAuJywKICAgICdDb3B5X0N1dF9TaXplX0xpbWl0JyA9PiAn0JLRi9Cx0YDQsNC90L3Ri9C1INGE0LDQudC70Ysv0L/QsNC/0LrQuCDRgdC70LjRiNC60L7QvCDQsdC+0LvRjNGI0LjQtSDQtNC70Y8gJXMuINCe0LPRgNCw0L3QuNGH0LXQvdC40LU6ICVkINCc0LEg0LfQsCDQvtC00L3RgyDQvtC/0LXRgNCw0YbQuNGOJywgLy8gJXMgPSBjdXQgb3IgY29weQogICAgJ0NvcHlfQ3V0X0NvdW50X0xpbWl0JyA9PiAn0JLRi9Cx0YDQsNC90L4g0YHQu9C40YjQutC+0Lwg0LzQvdC+0LPQviDRhNCw0LnQu9C+0LIv0L/QsNC/0L7QuiDQtNC70Y8gJXMuINCe0LPRgNCw0L3QuNGH0LXQvdC40LU6ICVkINGE0LDQudC70L7QsiDQt9CwINC+0LTQvdGDINC+0L/QtdGA0LDRhtC40Y4nLCAvLyAlcyA9IGN1dCBvciBjb3B5CiAgICAnQ29weV9DdXRfTm90X0FsbG93ZWQnID0+ICfQktGLINC90LUg0LzQvtC20LXRgtC1ICVzINGE0LDQudC70YsuJywgLy8gJXMoMSkgPSBjdXQgb3IgY29weSwgJXMoMikgPSBmaWxlcyBvciBmb2xkZXJzCiAgICAnSW1hZ2VfRWRpdG9yX05vX1NhdmUnID0+ICfQndC10LLQvtC30LzQvtC20L3QviDRgdC+0YXRgNCw0L3QuNGC0Ywg0LjQt9C+0LHRgNCw0LbQtdC90LjQtS4nLAogICAgJ0ltYWdlX0VkaXRvcl9FeGl0JyA9PiAiRXhpdCIsCiAgICAnSW1hZ2VfRWRpdG9yX1NhdmUnID0+ICJTYXZlIiwKICAgICdaaXBfTm9fRXh0cmFjdCcgPT4gJ9CY0LfQstC70LXRh9GMINC90LXQstC+0LfQvNC+0LbQvdC+LiDQktC+0LfQvNC+0LbQvdC+INGE0LDQudC7INC/0L7QstGA0LXQttC00ZHQvS4nLAogICAgJ1ppcF9JbnZhbGlkJyA9PiAn0K3RgtC+INGA0LDRgdGI0LjRgNC10L3QuNC1INC90LUg0L/QvtC00LTQtdGA0LbQuNCy0LDQtdGC0YHRjy4gINCg0LDQt9GA0LXRiNGR0L3QvdGL0LU6IHppcCwgZ3osIHRhci4nLAogICAgJ0Rpcl9Ob19Xcml0ZScgPT4gJ9CS0YvQsdGA0LDQvdC90YvQuSDQutCw0YLQsNC70L7QsyDQvdC10LTQvtGB0YLRg9C/0LXQvSDQtNC70Y8g0LfQsNC/0LjRgdC4LicsCiAgICAnRnVuY3Rpb25fRGlzYWJsZWQnID0+ICfQpNGD0L3QutGG0LjRjyAlcyDQsdGL0LvQsCDQvtGC0LrQu9GO0YfQtdC90LAg0L3QsCDRgdC10YDQstC10YDQtS4nLCAvLyAlcyA9IGN1dCBvciBjb3B5CiAgICAnRmlsZV9QZXJtaXNzaW9uJyA9PiAn0KDQsNC30YDQtdGI0LXQvdC40Y8g0L3QsCDRhNCw0LnQuycsCiAgICAnRmlsZV9QZXJtaXNzaW9uX05vdF9BbGxvd2VkJyA9PiAn0JjQt9C80LXQvdC10L3QuNC1INGA0LDQt9GA0LXRiNC10L3QuNC5ICVzINC90LUg0LTQvtC/0YPRgdC60LDQtdGC0YHRjy4nLCAvLyAlcyA9IGZpbGVzIG9yIGZvbGRlcnMKICAgICdGaWxlX1Blcm1pc3Npb25fUmVjdXJzaXZlJyA9PiAn0J/RgNC40LzQtdC90LjRgtGMINGA0LXQutGD0YDRgdC40LLQvdC+PycsCiAgICAnRmlsZV9QZXJtaXNzaW9uX1dyb25nX01vZGUnID0+ICLQktGL0LHRgNCw0L3QvdGL0LUg0YDQtdC20LjQvCDRgNCw0LfRgNC10YjQtdC90LjQuSDQvdC10LrQvtGA0YDQtdC60YLQtdC9LiIsCiAgICAnVXNlcicgPT4gJ9Cf0L7Qu9GM0LfQvtCy0LDRgtC10LvRjCcsCiAgICAnR3JvdXAnID0+ICfQk9GA0YPQv9C/0LAnLAogICAgJ1llcycgPT4gJ9CU0LAnLAogICAgJ05vJyA9PiAn0J3QtdGCJywKICAgICdMYW5nX05vdF9Gb3VuZCcgPT4gJ9Cd0LXQstC+0LfQvNC+0LbQvdC+INC90LDQudGC0Lgg0Y/Qt9GL0LonLAogICAgJ0xhbmdfQ2hhbmdlJyA9PiAn0KHQvNC10L3QuNGC0Ywg0Y/Qt9GL0LonLAogICAgJ0ZpbGVfTm90X0ZvdW5kJyA9PiAn0J3QtdCy0L7Qt9C80L7QttC90L4g0L3QsNC50YLQuCDRhNCw0LnQuycsCiAgICAnRmlsZV9PcGVuX0VkaXRfTm90X0FsbG93ZWQnID0+ICfQktGLINC90LUg0LzQvtC20LXRgtC1ICVzINGN0YLQvtGCINGE0LDQudC7LicsIC8vICVzID0gb3BlbiBvciBlZGl0CiAgICAnRWRpdCcgPT4gJ9Cg0LXQtNCw0LrRgtC40YDQvtCy0LDRgtGMJywKICAgICdFZGl0X0ZpbGUnID0+ICLQoNC10LTQsNC60YLQuNGA0L7QstCw0YLRjCDRgdC+0LTQtdGA0LbQuNC80L7QtSDRhNCw0LnQu9CwIiwKICAgICdGaWxlX1NhdmVfT0snID0+ICLQpNCw0LnQuyDRg9GB0L/QtdGI0L3QviDRgdC+0YXRgNCw0L3RkdC9IiwKICAgICdGaWxlX1NhdmVfRXJyb3InID0+ICLQn9GA0L7QuNC30L7RiNC70LAg0L7RiNC40LHQutCwINC/0YDQuCDRgdC+0YXRgNCw0L3QtdC90LjQuCDRhNCw0LnQu9CwIiwKICAgICdOZXdfRmlsZScgPT4gJ9Cd0L7QstGL0Lkg0YTQsNC50LsnLAogICAgJ05vX0V4dGVuc2lvbicgPT4gJ9Cd0LXQvtCx0YXQvtC00LjQvNC+INC00L7QsdCw0LLQuNGC0Ywg0YDQsNGB0YjQuNGA0LXQvdC40LUg0YTQsNC50LvQsCcsCiAgICAnVmFsaWRfRXh0ZW5zaW9ucycgPT4gJ9Cg0LDQt9GA0LXRiNGR0L3QvdGL0LUg0YDQsNGB0YjQuNGA0LXQvdC40Y8g0YTQsNC50LvQsDogJXMnLCAvLyAlcyA9IHR4dCxsb2cgZXRjLgogICAgJ1VwbG9hZF9tZXNzYWdlJyA9PiAi0J/QtdGA0LXRgtCw0YnQuNGC0LUg0YTQsNC50Lsg0YHRjtC00LAsINGH0YLQvtCx0Ysg0LfQsNCz0YDRg9C30LjRgtGMIiwKICAgICdTRVJWRVIgRVJST1InID0+ICLQodCV0KDQktCV0KDQndCQ0K8g0J7QqNCY0JHQmtCQIiwKICAgICdmb3JiaWRkZW4nID0+ICLQl9Cw0L/RgNC10YnQtdC90L4iLAogICAgJ3dyb25nIHBhdGgnID0+ICLQndC10LLQtdGA0L3Ri9C5INC/0YPRgtGMIiwKICAgICd3cm9uZyBuYW1lJyA9PiAi0J3QtdCy0LXRgNC90L7QtSDQuNC80Y8iLAogICAgJ3dyb25nIGV4dGVuc2lvbicgPT4gItCd0LXQstC10YDQvdC+0LUg0YDQsNGB0YjQuNGA0LXQvdC40LUiLAogICAgJ3dyb25nIG9wdGlvbicgPT4gItCd0LXQstC10YDQvdCw0Y8g0L7Qv9GG0LjRjyIsCiAgICAnd3JvbmcgZGF0YScgPT4gItCd0LXQstC10YDQvdGL0LUg0LTQsNC90L3Ri9C1IiwKICAgICd3cm9uZyBhY3Rpb24nID0+ICLQndC10LLQtdGA0L3QvtC1INC00LXQudGB0YLQstC40LUiLAogICAgJ3dyb25nIHN1Yi1hY3Rpb24nID0+ICLQndC10LLQtdGA0L3QvtC1INC00L7Qvy7QtNC10LnRgdGC0LLQuNC1IiwKICAgICdubyBhY3Rpb24gcGFzc2VkJyA9PiAi0JTQtdC50YHRgtCy0LjQtSDQvdC1INGB0YDQsNCx0L7RgtCw0LvQviIsCiAgICAnbm8gcGF0aCcgPT4gItCf0YPRgtGMINC90LUg0YHRg9GJ0LXRgdGC0LLRg9C10YIiLAogICAgJ25vIGZpbGUnID0+ICLQpNCw0LnQuyDQvdC1INGB0YPRidC10YHRgtCy0YPQtdGCIiwKICAgICd2aWV3IHR5cGUgbnVtYmVyIG1pc3NpbmcnID0+ICLQlNCw0L3QvdGL0Lkg0YLQuNC/INC+0YLRgdGD0YLRgdGC0LLRg9C10YIiLAogICAgJ05vdCBlbm91Z2ggTWVtb3J5JyA9PiAi0J3QtdC00L7RgdGC0LDRgtC+0YfQvdC+INC/0LDQvNGP0YLQuCIsCiAgICAnbWF4X3NpemVfcmVhY2hlZCcgPT4gItCf0LDQv9C60LAg0LTQvtGB0YLQuNCz0LvQsCDQvNCw0LrRgdC40LzQsNC70YzQvdC+0LPQviDRgNCw0LfQvNC10YDQsCDQsiAlZCBNQi4iLCAvLyVkID0gbWF4IG92ZXJhbGwgc2l6ZQogICAgJ0InID0+ICJCIiwKICAgICdLQicgPT4gIktCIiwKICAgICdNQicgPT4gIk1CIiwKICAgICdHQicgPT4gIkdCIiwKICAgICdUQicgPT4gIlRCIiwKICAgICd0b3RhbCBzaXplJyA9PiAi0J7QsdGJ0LjQuSDRgNCw0LfQvNC10YAiLAopOwo=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/lang/sk.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJldHVybiBhcnJheSgKCiAgICAnU2VsZWN0JyA9PiAnVnlicmHFpScsCiAgICAnRGVzZWxlY3RfQWxsJyA9PiAnRGVzZWxlY3QgQWxsJywKICAgICdTZWxlY3RfQWxsJyA9PiAnU2VsZWN0IEFsbCcsCiAgICAnRXJhc2UnID0+ICdPZHN0csOhbmnFpScsCiAgICAnT3BlbicgPT4gJ090dm9yacWlJywKICAgICdDb25maXJtX2RlbCcgPT4gJ05hb3phaiBvZHN0csOhbmnFpSB0ZW50byBzw7pib3I/JywKICAgICdBbGwnID0+ICdWxaFldGt5JywKICAgICdGaWxlcycgPT4gJ1PDumJvcnknLAogICAgJ0ltYWdlcycgPT4gJ09icsOhemt5JywKICAgICdBcmNoaXZlcycgPT4gJ0FyY2jDrXZ5JywKICAgICdFcnJvcl9VcGxvYWQnID0+ICdTw7pib3IgcHJlc2FodWplIG1heGltw6FsbnUgbW/Fvm7DuiB2ZcS+a29zxaUuJywKICAgICdFcnJvcl9leHRlbnNpb24nID0+ICdUeXAgc8O6Ym9ydSBuaWUgamUgcG9kcG9yb3ZhbsO9LicsCiAgICAnVXBsb2FkX2ZpbGUnID0+ICdTw7pib3InLAogICAgJ0ZpbHRlcnMnID0+ICdGaWx0cm92YcWlJywKICAgICdWaWRlb3MnID0+ICdWaWRlw6EnLAogICAgJ011c2ljJyA9PiAnSHVkYmEnLAogICAgJ05ld19Gb2xkZXInID0+ICdBZHJlc8OhcicsCiAgICAnRm9sZGVyX0NyZWF0ZWQnID0+ICdBZHJlc8OhciBib2wgdnl0dm9yZW7DvScsCiAgICAnRXhpc3RpbmdfRm9sZGVyJyA9PiAnQWRyZXPDoXIgdcW+IGV4aXN0dWplJywKICAgICdDb25maXJtX0ZvbGRlcl9kZWwnID0+ICdOYW96YWogY2hjZXRlIHZ5bWF6YcWlIGFkcmVzw6FyIGEgb2RzdHLDoW5pxaUgdGFrIHbFoWV0a3kgc8O6Ym9yeSB2IMWIb20/JywKICAgICdSZXR1cm5fRmlsZXNfTGlzdCcgPT4gJ1Nww6TFpSBuYSB6b3puYW0gc8O6Ym9yb3YnLAogICAgJ1ByZXZpZXcnID0+ICdOw6FoxL5hZCcsCiAgICAnRG93bmxvYWQnID0+ICdTdGlhaG51xaUnLAogICAgJ0luc2VydF9Gb2xkZXJfTmFtZScgPT4gJ07DoXpvdiBhZHJlc8OhcmE6JywKICAgICdSb290JyA9PiAncm9vdCcsCiAgICAnUmVuYW1lJyA9PiAnUHJlbWVub3ZhxaUnLAogICAgJ0JhY2snID0+ICdzcMOkxaUnLAogICAgJ1ZpZXcnID0+ICdab2JyYXppxaUnLAogICAgJ1ZpZXdfbGlzdCcgPT4gJ1pvem5hbScsCiAgICAnVmlld19jb2x1bW5zX2xpc3QnID0+ICdTdMS6cGNlJywKICAgICdWaWV3X2JveGVzJyA9PiAnSWtvbnknLAogICAgJ1Rvb2xiYXInID0+ICdOw6FzdHJvamUnLAogICAgJ0FjdGlvbnMnID0+ICdQcmlkYcWlJywKICAgICdSZW5hbWVfZXhpc3RpbmdfZmlsZScgPT4gJ1PDumJvciB1xb4gZXhpc3R1amUnLAogICAgJ1JlbmFtZV9leGlzdGluZ19mb2xkZXInID0+ICdBZHJlc8OhciB1xb4gZXhpc3R1amUnLAogICAgJ0VtcHR5X25hbWUnID0+ICdOw6F6b3YgamUgcHLDoXpkbnknLAogICAgJ1RleHRfZmlsdGVyJyA9PiAnVnloxL5hZGHFpScsCiAgICAnU3dpcGVfaGVscCcgPT4gJ1ByZSB2aWFjIG1vxb5ub3N0w60gcHJlamRpdGUgbXnFoW91IG5hIHPDumJvci9hZHJlc8OhcicsCiAgICAnVXBsb2FkX2Jhc2UnID0+ICdLbGFzaWNrw6kgbmFocmF0aWUgc8O6Ym9yb3YnLAogICAgJ1VwbG9hZF9iYXNlX2hlbHAnID0+ICJEcmFnICYgRHJvcCBmaWxlcyhtb2Rlcm4gYnJvd3NlcnMpIG9yIGNsaWNrIGluIHVwcGVyIGJ1dHRvbiB0byBBZGQgdGhlIGZpbGUocykgYW5kIGNsaWNrIG9uIFN0YXJ0IHVwbG9hZC4gV2hlbiB0aGUgdXBsb2FkIGlzIGNvbXBsZXRlLCBjbGljayB0aGUgJ1JldHVybiB0byBmaWxlcyBsaXN0JyBidXR0b24uIiwKICAgICdVcGxvYWRfYWRkX2ZpbGVzJyA9PiAnQWRkIGZpbGUocyknLAogICAgJ1VwbG9hZF9zdGFydCcgPT4gJ1N0YXJ0IHVwbG9hZCcsCiAgICAnVXBsb2FkX2Vycm9yX21lc3NhZ2VzJyA9PmFycmF5KAogICAgICAgIDEgPT4gJ1RoZSB1cGxvYWRlZCBmaWxlIGV4Y2VlZHMgdGhlIHVwbG9hZF9tYXhfZmlsZXNpemUgZGlyZWN0aXZlIGluIHBocC5pbmknLAogICAgICAgIDIgPT4gJ1RoZSB1cGxvYWRlZCBmaWxlIGV4Y2VlZHMgdGhlIE1BWF9GSUxFX1NJWkUgZGlyZWN0aXZlIHRoYXQgd2FzIHNwZWNpZmllZCBpbiB0aGUgSFRNTCBmb3JtJywKICAgICAgICAzID0+ICdUaGUgdXBsb2FkZWQgZmlsZSB3YXMgb25seSBwYXJ0aWFsbHkgdXBsb2FkZWQnLAogICAgICAgIDQgPT4gJ05vIGZpbGUgd2FzIHVwbG9hZGVkJywKICAgICAgICA2ID0+ICdNaXNzaW5nIGEgdGVtcG9yYXJ5IGZvbGRlcicsCiAgICAgICAgNyA9PiAnRmFpbGVkIHRvIHdyaXRlIGZpbGUgdG8gZGlzaycsCiAgICAgICAgOCA9PiAnQSBQSFAgZXh0ZW5zaW9uIHN0b3BwZWQgdGhlIGZpbGUgdXBsb2FkJywKICAgICAgICAncG9zdF9tYXhfc2l6ZScgPT4gJ1RoZSB1cGxvYWRlZCBmaWxlIGV4Y2VlZHMgdGhlIHBvc3RfbWF4X3NpemUgZGlyZWN0aXZlIGluIHBocC5pbmknLAogICAgICAgICdtYXhfZmlsZV9zaXplJyA9PiAnRmlsZSBpcyB0b28gYmlnJywKICAgICAgICAnbWluX2ZpbGVfc2l6ZScgPT4gJ0ZpbGUgaXMgdG9vIHNtYWxsJywKICAgICAgICAnYWNjZXB0X2ZpbGVfdHlwZXMnID0+ICdGaWxldHlwZSBub3QgYWxsb3dlZCcsCiAgICAgICAgJ21heF9udW1iZXJfb2ZfZmlsZXMnID0+ICdNYXhpbXVtIG51bWJlciBvZiBmaWxlcyBleGNlZWRlZCcsCiAgICAgICAgJ21heF93aWR0aCcgPT4gJ0ltYWdlIGV4Y2VlZHMgbWF4aW11bSB3aWR0aCcsCiAgICAgICAgJ21pbl93aWR0aCcgPT4gJ0ltYWdlIHJlcXVpcmVzIGEgbWluaW11bSB3aWR0aCcsCiAgICAgICAgJ21heF9oZWlnaHQnID0+ICdJbWFnZSBleGNlZWRzIG1heGltdW0gaGVpZ2h0JywKICAgICAgICAnbWluX2hlaWdodCcgPT4gJ0ltYWdlIHJlcXVpcmVzIGEgbWluaW11bSBoZWlnaHQnLAogICAgICAgICdhYm9ydCcgPT4gJ0ZpbGUgdXBsb2FkIGFib3J0ZWQnLAogICAgICAgICdpbWFnZV9yZXNpemUnID0+ICdGYWlsZWQgdG8gcmVzaXplIGltYWdlJwogICAgKSwKICAgICdVcGxvYWRfdXJsJyA9PiAnRnJvbSB1cmwnLAogICAgJ1R5cGVfZGlyJyA9PiAnZGlyJywKICAgICdUeXBlJyA9PiAnVHlwJywKICAgICdEaW1lbnNpb24nID0+ICdSb3psw63FoWVuaWUnLAogICAgJ1NpemUnID0+ICdWZcS+a29zxaUnLAogICAgJ0RhdGUnID0+ICdEw6F0dW0nLAogICAgJ0ZpbGVuYW1lJyA9PiAnTsOhem92JywKICAgICdPcGVyYXRpb25zJyA9PiAnT3BlcsOhY2llJywKICAgICdEYXRlX3R5cGUnID0+ICdkLm0uWScsCiAgICAnT0snID0+ICdPSycsCiAgICAnQ2FuY2VsJyA9PiAnWnJ1xaFpxaUnLAogICAgJ1NvcnRpbmcnID0+ICdab3JhZGnFpScsCiAgICAnU2hvd191cmwnID0+ICdab2JyYXRpxaUgVVJMJywKICAgICdFeHRyYWN0JyA9PiAnUm96YmFsacWlIHNlbScsCiAgICAnRmlsZV9pbmZvJyA9PiAnSW5mb3Jtw6FjaWUgbyBzw7pib3JlJywKICAgICdFZGl0X2ltYWdlJyA9PiAnVXByYXZpxaUgb2Jyw6F6b2snLAogICAgJ0R1cGxpY2F0ZScgPT4gJ0R1cGxpa292YcWlJywKICAgICdGb2xkZXJzJyA9PiAnQWRyZXPDoXJlJywKICAgICdDb3B5JyA9PiAnS29ww61yb3ZhxaUnLAogICAgJ0N1dCcgPT4gJ1Z5c3RyaWhuw7rFpScsCiAgICAnUGFzdGUnID0+ICdQcmlsZXBpxaUnLAogICAgJ0NCJyA9PiAnU2NocsOhbmthJywgLy8gY2xpcGJvYXJkCiAgICAnUGFzdGVfSGVyZScgPT4gJ1ByaWxlcGnFpSBkbyB0b2h0byBhZHJlc8OhcmEnLAogICAgJ1Bhc3RlX0NvbmZpcm0nID0+ICdOYW96YWogY2hjZXRlIHByaWxlcGnFpSBzw7pib3J5IGRvIHRvaHRvIGFkcmVzw6FyYT8gRXhpc3R1asO6Y2Ugc8O6Ym9yeSBzYSBwcmVww63FoXUuJywKICAgICdQYXN0ZV9GYWlsZWQnID0+ICdabHloYWxvIHByaWxlcGVuaWUgc8O6Ym9yb3YnLAogICAgJ0NsZWFyX0NsaXBib2FyZCcgPT4gJ1Z5xI1pc3RpxaUgc2NocsOhbmt1JywKICAgICdDbGVhcl9DbGlwYm9hcmRfQ29uZmlybScgPT4gJ05hb3phaiBjaGNldGUgdnnEjWlzdGnFpSBzY2hyw6Fua3U/JywKICAgICdGaWxlc19PTl9DbGlwYm9hcmQnID0+ICdNw6F0ZSBzw7pib3J5IHYgc2NocsOhbmtlLicsCiAgICAnQ29weV9DdXRfU2l6ZV9MaW1pdCcgPT4gJ1Z5YnJhbsOpIHBvbG/Fvmt5IHPDuiBwcsOtbGnFoSB2ZcS+a8OpIG5hIHRvIGFieSBib2xpIHZ5c3RyaWhudXTDqSBhbGVibyBrb3DDrXJvdmFuw6kuIExpbWl0OiAlZCBNQi9vcGVyw6FjaWEnLCAvLyAlcyA9IGN1dCBvciBjb3B5CiAgICAnQ29weV9DdXRfQ291bnRfTGltaXQnID0+ICdWeWJyYWxpIHN0ZSBwcsOtbGnFoSB2ZcS+YSBwb2xvxb5pZWsgbmEgdG8gYWJ5IGJvbGkgdnlzdHJpaG51dMOpIGFsZWJvIGtvcMOtcm92YW7DqS4gTGltaXQ6ICVkIGZpbGVzL29wZXLDoWNpYScsIC8vICVzID0gY3V0IG9yIGNvcHkKICAgICdDb3B5X0N1dF9Ob3RfQWxsb3dlZCcgPT4gJ05lbcOhdGUgcG92b2xlbmllIG5hIHZ5c3RyaWhudXRpZSBhbGVibyBrb3DDrXJvdmFuaWUgcG9sb8W+aWVrLicsIC8vICVzKDEpID0gY3V0IG9yIGNvcHksICVzKDIpID0gZmlsZXMgb3IgZm9sZGVycwogICAgJ0ltYWdlX0VkaXRvcl9Ob19TYXZlJyA9PiAnT2Jyw6F6b2sgbmVib2wgdWxvxb5lbsO9LicsCiAgICAnSW1hZ2VfRWRpdG9yX0V4aXQnID0+ICJFeGl0IiwKICAgICdJbWFnZV9FZGl0b3JfU2F2ZScgPT4gIlNhdmUiLAogICAgJ1ppcF9Ob19FeHRyYWN0JyA9PiAnU8O6Ym9yIG5lbW/Fvm5vIHJvemJhbGnFpS4gTcO0xb5lIGJ5xaUgcG/FoWtvZGVuw70uJywKICAgICdaaXBfSW52YWxpZCcgPT4gJ1RlbnRvIHR5cCBzw7pib3J1IG5lbW/Fvm5vIHJvemJhbGnFpS4gUG92b2xlbsOpIGZvcm3DoXR5OiB6aXAsIGd6LCB0YXIuJywKICAgICdEaXJfTm9fV3JpdGUnID0+ICdEbyB2eWJyYW7DqWhvIGFkcmVzw6FyYSBuZW1vxb5ubyB6YXBpc292YcWlLicsCiAgICAnRnVuY3Rpb25fRGlzYWJsZWQnID0+ICdGdW5rY2l1IHZ5c3RyaWhuw7rFpSBhbGVibyBrb3DDrXJvdmHFpSBuZXBvZHBvcnVqZSBWw6FzIHdlYmhvc3RpbmcuJywgLy8gJXMgPSBjdXQgb3IgY29weQogICAgJ0ZpbGVfUGVybWlzc2lvbicgPT4gJ1Bvdm9sZW5pYSBzw7pib3JvdicsCiAgICAnRmlsZV9QZXJtaXNzaW9uX05vdF9BbGxvd2VkJyA9PiAnWm1lbmEgcG92b2xlbsOtIHPDumJvcm92IGFsZWJvIGFkcmVzw6Fyb3YgbmllIGplIHBvdm9sZW7DoS4nLCAvLyAlcyA9IGZpbGVzIG9yIGZvbGRlcnMKICAgICdGaWxlX1Blcm1pc3Npb25fUmVjdXJzaXZlJyA9PiAnUG91xb5pxaUgbmEgdm5vcmVuw6kgc8O6Ym9yeSBhIGFkcmVzw6FyZT8nLAogICAgJ0ZpbGVfUGVybWlzc2lvbl9Xcm9uZ19Nb2RlJyA9PiAiTmVzcHLDoXZueSBtw7NkIHBvdm9sZW5pYSIsCiAgICAnVXNlcicgPT4gJ1XFvsOtdmF0ZcS+JywKICAgICdHcm91cCcgPT4gJ1NrdXBpbmEnLAogICAgJ1llcycgPT4gJ8OBbm8nLAogICAgJ05vJyA9PiAnTmllJywKICAgICdMYW5nX05vdF9Gb3VuZCcgPT4gJ0phenlrIG5lYm9sIG7DoWpkZW7DvS4nLAogICAgJ0xhbmdfQ2hhbmdlJyA9PiAnWm1lbmnFpSBqYXp5aycsCiAgICAnRmlsZV9Ob3RfRm91bmQnID0+ICdTw7pib3Igc2EgbmVuYcWhaWVsLicsCiAgICAnRmlsZV9PcGVuX0VkaXRfTm90X0FsbG93ZWQnID0+ICdOZW3DoXRlIHByw6F2byBvdHZvcmnFpSBhbGVibyB1cHJhdm92YcWlIHRlbnRvIHPDumJvci4nLCAvLyAlcyA9IG9wZW4gb3IgZWRpdAogICAgJ0VkaXQnID0+ICdVcHJhdmnFpScsCiAgICAnRWRpdF9GaWxlJyA9PiAiVXByYXZpxaUgb2JzYWggc8O6Ym9ydSIsCiAgICAnRmlsZV9TYXZlX09LJyA9PiAiU8O6Ym9yIGJvbCB1bG/FvmVuw70uIiwKICAgICdGaWxlX1NhdmVfRXJyb3InID0+ICJOYXN0YWxhIGNoeWJhISBTw7pib3IgbmVib2wgdWxvxb5lbsO9LiIsCiAgICAnTmV3X0ZpbGUnID0+ICdOb3bDvSBzw7pib3InLAogICAgJ05vX0V4dGVuc2lvbicgPT4gJ011c8OtdGUgcHJpZGHFpSBwcsOtcG9udSBzw7pib3J1LicsCiAgICAnVmFsaWRfRXh0ZW5zaW9ucycgPT4gJ1Bvdm9sZW7DqSBwcsOtcG9ueTogJXMnLCAvLyAlcyA9IHR4dCxsb2cgZXRjLgogICAgJ1VwbG9hZF9tZXNzYWdlJyA9PiAiRHJvcCBmaWxlIGhlcmUgdG8gdXBsb2FkIiwKCiAgICAnU0VSVkVSIEVSUk9SJyA9PiAiU0VSVkVSIEVSUk9SIiwKICAgICdmb3JiaWRkZW4nID0+ICJGb3JiaWRlbiIsCiAgICAnd3JvbmcgcGF0aCcgPT4gIldyb25nIHBhdGgiLAogICAgJ3dyb25nIG5hbWUnID0+ICJXcm9uZyBuYW1lIiwKICAgICd3cm9uZyBleHRlbnNpb24nID0+ICJXcm9uZyBleHRlbnNpb24iLAogICAgJ3dyb25nIG9wdGlvbicgPT4gIldyb25nIG9wdGlvbiIsCiAgICAnd3JvbmcgZGF0YScgPT4gIldyb25nIGRhdGEiLAogICAgJ3dyb25nIGFjdGlvbicgPT4gIldyb25nIGFjdGlvbiIsCiAgICAnd3Jvbmcgc3ViLWFjdGlvbicgPT4gIldyb25nIHN1Yi1hY3RpbyIsCiAgICAnbm8gYWN0aW9uIHBhc3NlZCcgPT4gIk5vIGFjdGlvbiBwYXNzZWQiLAogICAgJ25vIHBhdGgnID0+ICJObyBwYXRoIiwKICAgICdubyBmaWxlJyA9PiAiTm8gZmlsZSIsCiAgICAndmlldyB0eXBlIG51bWJlciBtaXNzaW5nJyA9PiAiVmlldyB0eXBlIG51bWJlciBtaXNzaW5nIiwKICAgICdOb3QgZW5vdWdoIE1lbW9yeScgPT4gIk5vdCBlbm91Z2ggTWVtb3J5IiwKICAgICdtYXhfc2l6ZV9yZWFjaGVkJyA9PiAiWW91ciBpbWFnZSBmb2xkZXIgaGFzIHJlYWNoIGl0cyBtYXhpbWFsZSBzaXplIG9mICVkIE1CLiIsIC8vJWQgPSBtYXggb3ZlcmFsbCBzaXplCiAgICAnQicgPT4gIkIiLAogICAgJ0tCJyA9PiAiS0IiLAogICAgJ01CJyA9PiAiTUIiLAogICAgJ0dCJyA9PiAiR0IiLAogICAgJ1RCJyA9PiAiVEIiLAogICAgJ3RvdGFsIHNpemUnID0+ICJUb3RhbCBzaXplIiwKKTsK]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/lang/sl.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJldHVybiBhcnJheSgKCiAgICAnU2VsZWN0JyA9PiAnT3puYcSNaScsCiAgICAnRGVzZWxlY3RfQWxsJyA9PiAnRGVzZWxlY3QgQWxsJywKICAgICdTZWxlY3RfQWxsJyA9PiAnU2VsZWN0IEFsbCcsCiAgICAnRXJhc2UnID0+ICdJemJyacWhaScsCiAgICAnT3BlbicgPT4gJ09kcHJpJywKICAgICdDb25maXJtX2RlbCcgPT4gJ0FsaSByZXMgxb5lbGl0ZSBpemJyaXNhdGkgdG8gZGF0b3Rla28/JywKICAgICdBbGwnID0+ICdWc2UnLAogICAgJ0ZpbGVzJyA9PiAnRGF0b3Rla2UnLAogICAgJ0ltYWdlcycgPT4gJ1NsaWtlJywKICAgICdBcmNoaXZlcycgPT4gJ0FyaGl2JywKICAgICdFcnJvcl9VcGxvYWQnID0+ICdWZWxpa29zdCBkYXRvdGVrZSBwcmVzZWdhIG1ha3NpbWFsbm8gZG92b2xqZW5vIHZlbGlrb3N0LicsCiAgICAnRXJyb3JfZXh0ZW5zaW9uJyA9PiAnSXpicmFuYSB2cnN0YSBkYXRvdGVrZSBuaSBkb3ZvbGplbmEuJywKICAgICdVcGxvYWRfZmlsZScgPT4gJ05hbG/FvmkgZGF0b3Rla2UgbmEgc3RyZcW+bmlrJywKICAgICdGaWx0ZXJzJyA9PiAnRmlsdHJpJywKICAgICdWaWRlb3MnID0+ICdWaWRlbycsCiAgICAnTXVzaWMnID0+ICdHbGFzYmEnLAogICAgJ05ld19Gb2xkZXInID0+ICdOb3ZhIG1hcGEnLAogICAgJ0ZvbGRlcl9DcmVhdGVkJyA9PiAnTWFwYSBqZSBiaWxhIHVzdHZhcmplbmEnLAogICAgJ0V4aXN0aW5nX0ZvbGRlcicgPT4gJ09ic3RvamXEjWEgbWFwYScsCiAgICAnQ29uZmlybV9Gb2xkZXJfZGVsJyA9PiAnQWxpIHJlcyDFvmVsaXRlIGl6YnJpc2F0aSBtYXBvIGluIHZzbyB2c2ViaW5vLCBraSBqZSB2IG1hcGk/JywKICAgICdSZXR1cm5fRmlsZXNfTGlzdCcgPT4gJ05hemFqIG5hIHNlem5hbSBkYXRvdGVrJywKICAgICdQcmV2aWV3JyA9PiAnUHJlZG9nbGVkJywKICAgICdEb3dubG9hZCcgPT4gJ1ByZW5lc2knLAogICAgJ0luc2VydF9Gb2xkZXJfTmFtZScgPT4gJ1ZwacWhdGUgaW1lIG1hcGU6JywKICAgICdSb290JyA9PiAnRG9tb3YnLAogICAgJ1JlbmFtZScgPT4gJ1ByZWltZW51aicsCiAgICAnQmFjaycgPT4gJ05hemFqJywKICAgICdWaWV3JyA9PiAnUHJpa2F6JywKICAgICdWaWV3X2xpc3QnID0+ICdTZXpuYW0nLAogICAgJ1ZpZXdfY29sdW1uc19saXN0JyA9PiAnU3RvbHBjaScsCiAgICAnVmlld19ib3hlcycgPT4gJ09rdmlyamknLAogICAgJ1Rvb2xiYXInID0+ICdPcm9kbmEgdnJzdGljYScsCiAgICAnQWN0aW9ucycgPT4gJ0FrY2lqZScsCiAgICAnUmVuYW1lX2V4aXN0aW5nX2ZpbGUnID0+ICdEYXRvdGVrYSDFvmUgb2JzdGFqYScsCiAgICAnUmVuYW1lX2V4aXN0aW5nX2ZvbGRlcicgPT4gJ01hcGEgxb5lIG9ic3RhamEnLAogICAgJ0VtcHR5X25hbWUnID0+ICdJbWUgamUgcHJhem5vJywKICAgICdUZXh0X2ZpbHRlcicgPT4gJ2nFocSNaScsCiAgICAnU3dpcGVfaGVscCcgPT4gJ0l6bWFrbmkgaW1lIGRhdG90ZWtlL21hcGUgemEgcHJpa2F6IG1vxb5ub3N0aScsCiAgICAnVXBsb2FkX2Jhc2UnID0+ICdPc25vdm5pIG5hxI1pbicsCiAgICAnVXBsb2FkX2Jhc2VfaGVscCcgPT4gIkRyYWcgJiBEcm9wIGZpbGVzKG1vZGVybiBicm93c2Vycykgb3IgY2xpY2sgaW4gdXBwZXIgYnV0dG9uIHRvIEFkZCB0aGUgZmlsZShzKSBhbmQgY2xpY2sgb24gU3RhcnQgdXBsb2FkLiBXaGVuIHRoZSB1cGxvYWQgaXMgY29tcGxldGUsIGNsaWNrIHRoZSAnUmV0dXJuIHRvIGZpbGVzIGxpc3QnIGJ1dHRvbi4iLAogICAgJ1VwbG9hZF9hZGRfZmlsZXMnID0+ICdBZGQgZmlsZShzKScsCiAgICAnVXBsb2FkX3N0YXJ0JyA9PiAnU3RhcnQgdXBsb2FkJywKICAgICdVcGxvYWRfZXJyb3JfbWVzc2FnZXMnID0+YXJyYXkoCiAgICAgICAgMSA9PiAnVGhlIHVwbG9hZGVkIGZpbGUgZXhjZWVkcyB0aGUgdXBsb2FkX21heF9maWxlc2l6ZSBkaXJlY3RpdmUgaW4gcGhwLmluaScsCiAgICAgICAgMiA9PiAnVGhlIHVwbG9hZGVkIGZpbGUgZXhjZWVkcyB0aGUgTUFYX0ZJTEVfU0laRSBkaXJlY3RpdmUgdGhhdCB3YXMgc3BlY2lmaWVkIGluIHRoZSBIVE1MIGZvcm0nLAogICAgICAgIDMgPT4gJ1RoZSB1cGxvYWRlZCBmaWxlIHdhcyBvbmx5IHBhcnRpYWxseSB1cGxvYWRlZCcsCiAgICAgICAgNCA9PiAnTm8gZmlsZSB3YXMgdXBsb2FkZWQnLAogICAgICAgIDYgPT4gJ01pc3NpbmcgYSB0ZW1wb3JhcnkgZm9sZGVyJywKICAgICAgICA3ID0+ICdGYWlsZWQgdG8gd3JpdGUgZmlsZSB0byBkaXNrJywKICAgICAgICA4ID0+ICdBIFBIUCBleHRlbnNpb24gc3RvcHBlZCB0aGUgZmlsZSB1cGxvYWQnLAogICAgICAgICdwb3N0X21heF9zaXplJyA9PiAnVGhlIHVwbG9hZGVkIGZpbGUgZXhjZWVkcyB0aGUgcG9zdF9tYXhfc2l6ZSBkaXJlY3RpdmUgaW4gcGhwLmluaScsCiAgICAgICAgJ21heF9maWxlX3NpemUnID0+ICdGaWxlIGlzIHRvbyBiaWcnLAogICAgICAgICdtaW5fZmlsZV9zaXplJyA9PiAnRmlsZSBpcyB0b28gc21hbGwnLAogICAgICAgICdhY2NlcHRfZmlsZV90eXBlcycgPT4gJ0ZpbGV0eXBlIG5vdCBhbGxvd2VkJywKICAgICAgICAnbWF4X251bWJlcl9vZl9maWxlcycgPT4gJ01heGltdW0gbnVtYmVyIG9mIGZpbGVzIGV4Y2VlZGVkJywKICAgICAgICAnbWF4X3dpZHRoJyA9PiAnSW1hZ2UgZXhjZWVkcyBtYXhpbXVtIHdpZHRoJywKICAgICAgICAnbWluX3dpZHRoJyA9PiAnSW1hZ2UgcmVxdWlyZXMgYSBtaW5pbXVtIHdpZHRoJywKICAgICAgICAnbWF4X2hlaWdodCcgPT4gJ0ltYWdlIGV4Y2VlZHMgbWF4aW11bSBoZWlnaHQnLAogICAgICAgICdtaW5faGVpZ2h0JyA9PiAnSW1hZ2UgcmVxdWlyZXMgYSBtaW5pbXVtIGhlaWdodCcsCiAgICAgICAgJ2Fib3J0JyA9PiAnRmlsZSB1cGxvYWQgYWJvcnRlZCcsCiAgICAgICAgJ2ltYWdlX3Jlc2l6ZScgPT4gJ0ZhaWxlZCB0byByZXNpemUgaW1hZ2UnCiAgICApLAogICAgJ1VwbG9hZF91cmwnID0+ICdGcm9tIHVybCcsCiAgICAnVHlwZV9kaXInID0+ICdNYXBhJywKICAgICdUeXBlJyA9PiAnVnJzdGEnLAogICAgJ0RpbWVuc2lvbicgPT4gJ0RpbWVuemlqYScsCiAgICAnU2l6ZScgPT4gJ1ZlbGlrb3N0JywKICAgICdEYXRlJyA9PiAnRGF0dW0nLAogICAgJ0ZpbGVuYW1lJyA9PiAnSW1lJywKICAgICdPcGVyYXRpb25zJyA9PiAnVWthemknLAogICAgJ0RhdGVfdHlwZScgPT4gJ2QubS55JywKICAgICdPSycgPT4gJ1BvdHJkaScsCiAgICAnQ2FuY2VsJyA9PiAnUHJla2xpxI1pJywKICAgICdTb3J0aW5nJyA9PiAnUmF6dnJzdGkgcG86JywKICAgICdTaG93X3VybCcgPT4gJ1ByaWthxb5pIHBvdmV6YXZvJywKICAgICdFeHRyYWN0JyA9PiAnUmF6xaFpcmkgc2VtJywKICAgICdGaWxlX2luZm8nID0+ICdQb2RhdGtpIG8gZGF0b3Rla2knLAogICAgJ0VkaXRfaW1hZ2UnID0+ICdVcmVkaSBzbGlrbycsCiAgICAnRHVwbGljYXRlJyA9PiAnUG9kdm9qaScsCiAgICAnRm9sZGVycycgPT4gJ0ZvbGRlcnMnLAogICAgJ0NvcHknID0+ICdDb3B5JywKICAgICdDdXQnID0+ICdDdXQnLAogICAgJ1Bhc3RlJyA9PiAnUGFzdGUnLAogICAgJ0NCJyA9PiAnQ0InLCAvLyBjbGlwYm9hcmQKICAgICdQYXN0ZV9IZXJlJyA9PiAnUGFzdGUgdG8gdGhpcyBkaXJlY3RvcnknLAogICAgJ1Bhc3RlX0NvbmZpcm0nID0+ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcGFzdGUgdG8gdGhpcyBkaXJlY3Rvcnk/IFRoaXMgd2lsbCBvdmVyd3JpdGUgZXhpc3RpbmcgZmlsZXMvZm9sZGVycyBpZiBlbmNvdW50ZXJlZCBhbnkuJywKICAgICdQYXN0ZV9GYWlsZWQnID0+ICdGYWlsZWQgdG8gcGFzdGUgZmlsZShzKScsCiAgICAnQ2xlYXJfQ2xpcGJvYXJkJyA9PiAnQ2xlYXIgY2xpcGJvYXJkJywKICAgICdDbGVhcl9DbGlwYm9hcmRfQ29uZmlybScgPT4gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjbGVhciB0aGUgY2xpcGJvYXJkPycsCiAgICAnRmlsZXNfT05fQ2xpcGJvYXJkJyA9PiAnVGhlcmUgYXJlIGZpbGVzIG9uIHRoZSBjbGlwYm9hcmQuJywKICAgICdDb3B5X0N1dF9TaXplX0xpbWl0JyA9PiAnVGhlIHNlbGVjdGVkIGZpbGVzL2ZvbGRlcnMgYXJlIHRvbyBiaWcgdG8gJXMuIExpbWl0OiAlZCBNQi9vcGVyYXRpb24nLCAvLyAlcyA9IGN1dCBvciBjb3B5CiAgICAnQ29weV9DdXRfQ291bnRfTGltaXQnID0+ICdZb3Ugc2VsZWN0ZWQgdG9vIG1hbnkgZmlsZXMvZm9sZGVycyB0byAlcy4gTGltaXQ6ICVkIGZpbGVzL29wZXJhdGlvbicsIC8vICVzID0gY3V0IG9yIGNvcHkKICAgICdDb3B5X0N1dF9Ob3RfQWxsb3dlZCcgPT4gJ1lvdSBhcmUgbm90IGFsbG93ZWQgdG8gJXMgZmlsZXMuJywgLy8gJXMoMSkgPSBjdXQgb3IgY29weSwgJXMoMikgPSBmaWxlcyBvciBmb2xkZXJzCiAgICAnSW1hZ2VfRWRpdG9yX05vX1NhdmUnID0+ICdDb3VsZCBub3Qgc2F2ZSBpbWFnZScsCiAgICAnSW1hZ2VfRWRpdG9yX0V4aXQnID0+ICJFeGl0IiwKICAgICdJbWFnZV9FZGl0b3JfU2F2ZScgPT4gIlNhdmUiLAogICAgJ1ppcF9Ob19FeHRyYWN0JyA9PiAnQ291bGQgbm90IGV4dHJhY3QuIEZpbGUgbWlnaHQgYmUgY29ycnVwdC4nLAogICAgJ1ppcF9JbnZhbGlkJyA9PiAnVGhpcyBleHRlbnNpb24gaXMgbm90IHN1cHBvcnRlZC4gVmFsaWQ6IHppcCwgZ3osIHRhci4nLAogICAgJ0Rpcl9Ob19Xcml0ZScgPT4gJ1RoZSBkaXJlY3RvcnkgeW91IHNlbGVjdGVkIGlzIG5vdCB3cml0YWJsZS4nLAogICAgJ0Z1bmN0aW9uX0Rpc2FibGVkJyA9PiAnVGhlICVzIGZ1bmN0aW9uIGhhcyBiZWVuIGRpc2FibGVkIGJ5IHRoZSBzZXJ2ZXIuJywgLy8gJXMgPSBjdXQgb3IgY29weQogICAgJ0ZpbGVfUGVybWlzc2lvbicgPT4gJ0ZpbGUgcGVybWlzc2lvbicsCiAgICAnRmlsZV9QZXJtaXNzaW9uX05vdF9BbGxvd2VkJyA9PiAnQ2hhbmdpbmcgJXMgcGVybWlzc2lvbnMgYXJlIG5vdCBhbGxvd2VkLicsIC8vICVzID0gZmlsZXMgb3IgZm9sZGVycwogICAgJ0ZpbGVfUGVybWlzc2lvbl9SZWN1cnNpdmUnID0+ICdBcHBseSByZWN1cnNpdmVseT8nLAogICAgJ0ZpbGVfUGVybWlzc2lvbl9Xcm9uZ19Nb2RlJyA9PiAiVGhlIHN1cHBsaWVkIHBlcm1pc3Npb24gbW9kZSBpcyBpbmNvcnJlY3QuIiwKICAgICdVc2VyJyA9PiAnVXNlcicsCiAgICAnR3JvdXAnID0+ICdHcm91cCcsCiAgICAnWWVzJyA9PiAnWWVzJywKICAgICdObycgPT4gJ05vJywKICAgICdMYW5nX05vdF9Gb3VuZCcgPT4gJ0NvdWxkIG5vdCBmaW5kIGxhbmd1YWdlLicsCiAgICAnTGFuZ19DaGFuZ2UnID0+ICdDaGFuZ2UgdGhlIGxhbmd1YWdlJywKICAgICdGaWxlX05vdF9Gb3VuZCcgPT4gJ0NvdWxkIG5vdCBmaW5kIHRoZSBmaWxlLicsCiAgICAnRmlsZV9PcGVuX0VkaXRfTm90X0FsbG93ZWQnID0+ICdZb3UgYXJlIG5vdCBhbGxvd2VkIHRvICVzIHRoaXMgZmlsZS4nLCAvLyAlcyA9IG9wZW4gb3IgZWRpdAogICAgJ0VkaXQnID0+ICdFZGl0JywKICAgICdFZGl0X0ZpbGUnID0+ICJFZGl0IGZpbGUncyBjb250ZW50IiwKICAgICdGaWxlX1NhdmVfT0snID0+ICJGaWxlIHN1Y2Nlc3NmdWxseSBzYXZlZC4iLAogICAgJ0ZpbGVfU2F2ZV9FcnJvcicgPT4gIlRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSBzYXZpbmcgdGhlIGZpbGUuIiwKICAgICdOZXdfRmlsZScgPT4gJ05ldyBGaWxlJywKICAgICdOb19FeHRlbnNpb24nID0+ICdZb3UgaGF2ZSB0byBhZGQgYSBmaWxlIGV4dGVuc2lvbi4nLAogICAgJ1ZhbGlkX0V4dGVuc2lvbnMnID0+ICdWYWxpZCBleHRlbnNpb25zOiAlcycsIC8vICVzID0gdHh0LGxvZyBldGMuCiAgICAnVXBsb2FkX21lc3NhZ2UnID0+ICJEcm9wIGZpbGUgaGVyZSB0byB1cGxvYWQiLAoKICAgICdTRVJWRVIgRVJST1InID0+ICJTRVJWRVIgRVJST1IiLAogICAgJ2ZvcmJpZGRlbicgPT4gIkZvcmJpZGVuIiwKICAgICd3cm9uZyBwYXRoJyA9PiAiV3JvbmcgcGF0aCIsCiAgICAnd3JvbmcgbmFtZScgPT4gIldyb25nIG5hbWUiLAogICAgJ3dyb25nIGV4dGVuc2lvbicgPT4gIldyb25nIGV4dGVuc2lvbiIsCiAgICAnd3Jvbmcgb3B0aW9uJyA9PiAiV3Jvbmcgb3B0aW9uIiwKICAgICd3cm9uZyBkYXRhJyA9PiAiV3JvbmcgZGF0YSIsCiAgICAnd3JvbmcgYWN0aW9uJyA9PiAiV3JvbmcgYWN0aW9uIiwKICAgICd3cm9uZyBzdWItYWN0aW9uJyA9PiAiV3Jvbmcgc3ViLWFjdGlvIiwKICAgICdubyBhY3Rpb24gcGFzc2VkJyA9PiAiTm8gYWN0aW9uIHBhc3NlZCIsCiAgICAnbm8gcGF0aCcgPT4gIk5vIHBhdGgiLAogICAgJ25vIGZpbGUnID0+ICJObyBmaWxlIiwKICAgICd2aWV3IHR5cGUgbnVtYmVyIG1pc3NpbmcnID0+ICJWaWV3IHR5cGUgbnVtYmVyIG1pc3NpbmciLAogICAgJ05vdCBlbm91Z2ggTWVtb3J5JyA9PiAiTm90IGVub3VnaCBNZW1vcnkiLAogICAgJ21heF9zaXplX3JlYWNoZWQnID0+ICJZb3VyIGltYWdlIGZvbGRlciBoYXMgcmVhY2ggaXRzIG1heGltYWxlIHNpemUgb2YgJWQgTUIuIiwgLy8lZCA9IG1heCBvdmVyYWxsIHNpemUKICAgICdCJyA9PiAiQiIsCiAgICAnS0InID0+ICJLQiIsCiAgICAnTUInID0+ICJNQiIsCiAgICAnR0InID0+ICJHQiIsCiAgICAnVEInID0+ICJUQiIsCiAgICAndG90YWwgc2l6ZScgPT4gIlRvdGFsIHNpemUiLAopOwo=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/lang/sv_SE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJldHVybiBhcnJheSgKCiAgICAnU2VsZWN0JyA9PiAnVsOkbGonLCAvLyBTZWxlY3QKICAgICdEZXNlbGVjdF9BbGwnID0+ICdEZXNlbGVjdCBBbGwnLAogICAgJ1NlbGVjdF9BbGwnID0+ICdTZWxlY3QgQWxsJywKICAgICdFcmFzZScgPT4gJ1JhZGVyYScsIC8vIEVyYXNlCiAgICAnT3BlbicgPT4gJ8OWcHBuYScsIC8vIE9wZW4KICAgICdDb25maXJtX2RlbCcgPT4gJ8OEciBkdSBzw6RrZXIgcMOlIGF0dCBkdSB2aWxsIHJhZGVyYSBkZW5uYSBmaWw/JywgLy9BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgZmlsZT8KICAgICdBbGwnID0+ICdBbGxhJywgLy8gQWxsCiAgICAnRmlsZXMnID0+ICdGaWxlcicsIC8vIEZpbGVzCiAgICAnSW1hZ2VzJyA9PiAnQmlsZGVyJywgLy8gSW1hZ2VzCiAgICAnQXJjaGl2ZXMnID0+ICdBcmtpdicsIC8vIEFyY2hpdmVzCiAgICAnRXJyb3JfVXBsb2FkJyA9PiAnRGVuIHVwcGxhZGRhZGUgZmlsZW4gw7Z2ZXJza3JpZGVyIG1heCBzdG9ybGVrZW4uJywgLy8gVGhlIHVwbG9hZGVkIGZpbGUgZXhjZWVkcyB0aGUgbWF4IHNpemUgYWxsb3dlZC4KICAgICdFcnJvcl9leHRlbnNpb24nID0+ICdGaWx0eXBlbiDDpHIgZWogdGlsbMOldGVuLicsIC8vIEZpbGUgZXh0ZW5zaW9uIGlzIG5vdCBhbGxvd2VkLgogICAgJ1VwbG9hZF9maWxlJyA9PiAnTGFkZGEgdXBwJywgLy8gVXBsb2FkCiAgICAnRmlsdGVycycgPT4gJ0ZpbHRlcicsIC8vIEZpbHRlcnMKICAgICdWaWRlb3MnID0+ICdWaWRlb3InLCAvLyBWaWRlb3MKICAgICdNdXNpYycgPT4gJ011c2lrJywgLy8gTXVzaWMKICAgICdOZXdfRm9sZGVyJyA9PiAnTnkga2F0YWxvZycsIC8vIE5ldyBGb2xkZXIKICAgICdGb2xkZXJfQ3JlYXRlZCcgPT4gJ0thdGFsb2dlbiBoYXIgc2thcGF0cycsIC8vIEZvbGRlciBjb3JyZWN0bHkgY3JlYXRlZAogICAgJ0V4aXN0aW5nX0ZvbGRlcicgPT4gJ0JlZmludGxpZyBrYXRhbG9nJywgLy8gRXhpc3RpbmcgZm9sZGVyCiAgICAnQ29uZmlybV9Gb2xkZXJfZGVsJyA9PiAnw4RyIGR1IHPDpGtlciBww6UgYXR0IGR1IHZpbGwgcmFkZXJhIGRlbm5hIGthdGFsb2cgc2FtdCBkZXNzIGlubmVow6VsbD8nLCAvLyBBcmUgeW91IHN1cmUgdG8gZGVsZXRlIHRoZSBmb2xkZXIgYW5kIGFsbCB0aGUgZWxlbWVudHMgaW4gaXQ/CiAgICAnUmV0dXJuX0ZpbGVzX0xpc3QnID0+ICdUaWxsYmFrYSB0aWxsIGZpbHZpc2FyZW4nLCAvLyBSZXR1cm4gdG8gZmlsZXMgbGlzdAogICAgJ1ByZXZpZXcnID0+ICdGw7ZyaGFuZHNncmFuc2thJywgLy8gUHJldmlldwogICAgJ0Rvd25sb2FkJyA9PiAnTGFkZGEgaGVtJywgLy8gRG93bmxvYWQKICAgICdJbnNlcnRfRm9sZGVyX05hbWUnID0+ICdBbmdlIGthdGFsb2cgbmFtbjonLCAvLyBJbnNlcnQgZm9sZGVyIG5hbWU6CiAgICAnUm9vdCcgPT4gJ3Jvb3QnLCAvLyByb290CiAgICAnUmVuYW1lJyA9PiAnQnl0IG5hbW4nLCAvLyBSZW5hbWUKICAgICdCYWNrJyA9PiAndGlsbGJha2EnLCAvLyBiYWNrCiAgICAnVmlldycgPT4gJ1Zpc2EnLCAvLyBWaWV3CiAgICAnVmlld19saXN0JyA9PiAnTGlzdHZ5JywgLy8gTGlzdCB2aWV3CiAgICAnVmlld19jb2x1bW5zX2xpc3QnID0+ICdDb2x1bW52eScsIC8vIENvbHVtbnMgbGlzdCB2aWV3CiAgICAnVmlld19ib3hlcycgPT4gJ0JveHZ5JywgLy8gQm94IHZpZXcKICAgICdUb29sYmFyJyA9PiAnVmVya3R5Z3Nmw6RsdCcsIC8vIFRvb2xiYXIKICAgICdBY3Rpb25zJyA9PiAnw4V0Z8OkcmRlcicsIC8vIEFjdGlvbnMKICAgICdSZW5hbWVfZXhpc3RpbmdfZmlsZScgPT4gJ0RldCBmaW5ucyByZWRhbiBlbiBmaWwgbWVkIGRldCBuYW1uZXQnLCAvLyBUaGUgZmlsZSBpcyBhbHJlYWR5IGV4aXN0aW5nCiAgICAnUmVuYW1lX2V4aXN0aW5nX2ZvbGRlcicgPT4gJ0RldCBmaW5ucyByZWRhbiBlbiBrYXRhbG9nIG1lZCBkZXQgbmFtbmV0JywgLy8gVGhlIGZvbGRlciBpcyBhbHJlYWR5IGV4aXN0aW5nCiAgICAnRW1wdHlfbmFtZScgPT4gJ0R1IGhhciBlaiBhbmdpdmV0IG7DpWdvdCBuYW1uJywgLy8gVGhlIG5hbWUgaXMgZW1wdHkKICAgICdUZXh0X2ZpbHRlcicgPT4gJ3RleHQgZmlsdGVyJywgLy8gdGV4dCBmaWx0ZXIKICAgICdTd2lwZV9oZWxwJyA9PiAnU3ZlcCDDtnZlciBmaWxuYW1uZXQva2F0YWxvZ25hbW5ldCBmw7ZyIGF0dCB2aXNhIMOldGfDpHJkZXInLCAvLyBTd2lwZSB0aGUgbmFtZSBvZiBmaWxlL2ZvbGRlciB0byBzaG93IG9wdGlvbnMKICAgICdVcGxvYWRfYmFzZScgPT4gJ0Jhc2FsIHVwcGxhZGRuaW5nJywgLy8gQmFzZSB1cGxvYWQKICAgICdVcGxvYWRfYmFzZV9oZWxwJyA9PiAiRHJhZyAmIERyb3AgZmlsZXMobW9kZXJuIGJyb3dzZXJzKSBvciBjbGljayBpbiB1cHBlciBidXR0b24gdG8gQWRkIHRoZSBmaWxlKHMpIGFuZCBjbGljayBvbiBTdGFydCB1cGxvYWQuIFdoZW4gdGhlIHVwbG9hZCBpcyBjb21wbGV0ZSwgY2xpY2sgdGhlICdSZXR1cm4gdG8gZmlsZXMgbGlzdCcgYnV0dG9uLiIsCiAgICAnVXBsb2FkX2FkZF9maWxlcycgPT4gJ0FkZCBmaWxlKHMpJywKICAgICdVcGxvYWRfc3RhcnQnID0+ICdTdGFydCB1cGxvYWQnLAogICAgJ1VwbG9hZF9lcnJvcl9tZXNzYWdlcycgPT5hcnJheSgKICAgICAgICAxID0+ICdUaGUgdXBsb2FkZWQgZmlsZSBleGNlZWRzIHRoZSB1cGxvYWRfbWF4X2ZpbGVzaXplIGRpcmVjdGl2ZSBpbiBwaHAuaW5pJywKICAgICAgICAyID0+ICdUaGUgdXBsb2FkZWQgZmlsZSBleGNlZWRzIHRoZSBNQVhfRklMRV9TSVpFIGRpcmVjdGl2ZSB0aGF0IHdhcyBzcGVjaWZpZWQgaW4gdGhlIEhUTUwgZm9ybScsCiAgICAgICAgMyA9PiAnVGhlIHVwbG9hZGVkIGZpbGUgd2FzIG9ubHkgcGFydGlhbGx5IHVwbG9hZGVkJywKICAgICAgICA0ID0+ICdObyBmaWxlIHdhcyB1cGxvYWRlZCcsCiAgICAgICAgNiA9PiAnTWlzc2luZyBhIHRlbXBvcmFyeSBmb2xkZXInLAogICAgICAgIDcgPT4gJ0ZhaWxlZCB0byB3cml0ZSBmaWxlIHRvIGRpc2snLAogICAgICAgIDggPT4gJ0EgUEhQIGV4dGVuc2lvbiBzdG9wcGVkIHRoZSBmaWxlIHVwbG9hZCcsCiAgICAgICAgJ3Bvc3RfbWF4X3NpemUnID0+ICdUaGUgdXBsb2FkZWQgZmlsZSBleGNlZWRzIHRoZSBwb3N0X21heF9zaXplIGRpcmVjdGl2ZSBpbiBwaHAuaW5pJywKICAgICAgICAnbWF4X2ZpbGVfc2l6ZScgPT4gJ0ZpbGUgaXMgdG9vIGJpZycsCiAgICAgICAgJ21pbl9maWxlX3NpemUnID0+ICdGaWxlIGlzIHRvbyBzbWFsbCcsCiAgICAgICAgJ2FjY2VwdF9maWxlX3R5cGVzJyA9PiAnRmlsZXR5cGUgbm90IGFsbG93ZWQnLAogICAgICAgICdtYXhfbnVtYmVyX29mX2ZpbGVzJyA9PiAnTWF4aW11bSBudW1iZXIgb2YgZmlsZXMgZXhjZWVkZWQnLAogICAgICAgICdtYXhfd2lkdGgnID0+ICdJbWFnZSBleGNlZWRzIG1heGltdW0gd2lkdGgnLAogICAgICAgICdtaW5fd2lkdGgnID0+ICdJbWFnZSByZXF1aXJlcyBhIG1pbmltdW0gd2lkdGgnLAogICAgICAgICdtYXhfaGVpZ2h0JyA9PiAnSW1hZ2UgZXhjZWVkcyBtYXhpbXVtIGhlaWdodCcsCiAgICAgICAgJ21pbl9oZWlnaHQnID0+ICdJbWFnZSByZXF1aXJlcyBhIG1pbmltdW0gaGVpZ2h0JywKICAgICAgICAnYWJvcnQnID0+ICdGaWxlIHVwbG9hZCBhYm9ydGVkJywKICAgICAgICAnaW1hZ2VfcmVzaXplJyA9PiAnRmFpbGVkIHRvIHJlc2l6ZSBpbWFnZScKICAgICksCiAgICAnVXBsb2FkX3VybCcgPT4gJ0Zyb20gdXJsJywKICAgICdUeXBlX2RpcicgPT4gJ2thdGFsb2cnLCAvLyBkaXIKICAgICdUeXBlJyA9PiAnVHlwJywgLy8gVHlwZQogICAgJ0RpbWVuc2lvbicgPT4gJ0RpbWVuc2lvbicsIC8vIERpbWVuc2lvbgogICAgJ1NpemUnID0+ICdTdG9ybGVrJywgLy8gU2l6ZQogICAgJ0RhdGUnID0+ICdEYXR1bScsIC8vIERhdGUKICAgICdGaWxlbmFtZScgPT4gJ0ZpbG5hbWUnLCAvLyBGaWxlbmFtZQogICAgJ09wZXJhdGlvbnMnID0+ICdIYW5kbGluZ2FyJywgLy8gT3BlcmF0aW9ucwogICAgJ0RhdGVfdHlwZScgPT4gJ3ktbS1kJywgLy8geS1tLWQKICAgICdPSycgPT4gJ09LJywgLy8gT0sKICAgICdDYW5jZWwnID0+ICdBdmJyeXQnLCAvLyBDYW5jZWwKICAgICdTb3J0aW5nJyA9PiAnc29ydGVyaW5nJywgLy8gc29ydGluZwogICAgJ1Nob3dfdXJsJyA9PiAndmlzYSBzw7ZrdsOkZycsIC8vIHNob3cgVVJMCiAgICAnRXh0cmFjdCcgPT4gJ3BhY2thIHVwcCBow6RyJywgLy8gZXh0cmFjdCBoZXJlCiAgICAnRmlsZV9pbmZvJyA9PiAnZmlsIGluZm9ybWF0aW9uJywgLy8gZmlsZSBpbmZvCiAgICAnRWRpdF9pbWFnZScgPT4gJ2VkaXRlcmEgYmlsZCcsIC8vIGVkaXQgaW1hZ2UKICAgICdEdXBsaWNhdGUnID0+ICdEdXBsaWNlcmEnLCAvLyBEdXBsaWNhdGUKICAgICdGb2xkZXJzJyA9PiAnRm9sZGVycycsIC8vIEZvbGRlcnMKICAgICdDb3B5JyA9PiAnS29waWVyYScsIC8vIENvcHkKICAgICdDdXQnID0+ICdLbGlwcCB1dCcsIC8vIEN1dAogICAgJ1Bhc3RlJyA9PiAnS2xpc3RyYSBpbicsIC8vIFBhc3RlCiAgICAnQ0InID0+ICdVcmtsaXBwJywgLy9DQiwgIGNsaXBib2FyZAogICAgJ1Bhc3RlX0hlcmUnID0+ICdLbGlzdHJhIGluIGkgZGVubmEgbWFwcCcsIC8vIFBhc3RlIHRvIHRoaXMgZGlyZWN0b3J5CiAgICAnUGFzdGVfQ29uZmlybScgPT4gJ8OEciBkdSBzw6RrZXIgcMOlIGF0dCBkdSB2aWxsIGtsaXN0cmEgaW4gaSBkZW5uYSBtYXBwPyBCZWZpbnRsaWdhIGZpbGVyIG9jaCBtYXBwYXIga2FuIGJsaSDDtnZlcnNrcml2bmEuJywgLy8gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHBhc3RlIHRvIHRoaXMgZGlyZWN0b3J5PyBUaGlzIHdpbGwgb3ZlcndyaXRlIGV4aXN0aW5nIGZpbGVzL2ZvbGRlcnMgaWYgZW5jb3VudGVyZWQgYW55LgogICAgJ1Bhc3RlX0ZhaWxlZCcgPT4gJ01pc3NseWNrYWRlcyBtZWQgYXR0IGtsaXN0cmEgaW4gZmlsKGVyKScsIC8vIEZhaWxlZCB0byBwYXN0ZSBmaWxlKHMpCiAgICAnQ2xlYXJfQ2xpcGJvYXJkJyA9PiAnUmVuc2EgdXJrbGlwcCcsIC8vIENsZWFyIGNsaXBib2FyZAogICAgJ0NsZWFyX0NsaXBib2FyZF9Db25maXJtJyA9PiAnw4RyIGR1IHPDpGtlciBww6UgYXR0IGR1IHZpbGwgcmVuc2EgdXJrbGlwcD8nLCAvLyBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gY2xlYXIgdGhlIGNsaXBib2FyZD8KICAgICdGaWxlc19PTl9DbGlwYm9hcmQnID0+ICdEZXQgZmlubnMgZmlsZXIgaSB1cmtsaXBwLicsIC8vIFRoZXJlIGFyZSBmaWxlcyBvbiB0aGUgY2xpcGJvYXJkLgogICAgJ0NvcHlfQ3V0X1NpemVfTGltaXQnID0+ICdEZSB2YWxkYSBmaWxlcm5hL21hcHBhcm5hIMOkciBmw7ZyIHN0b3JhIGbDtnIgYXR0ICVzLiBHcsOkbnM6ICVkIE1CIHBlciBvcGVyYXRpb24nLCAvLyBUaGUgc2VsZWN0ZWQgZmlsZXMvZm9sZGVycyBhcmUgdG9vIGJpZyB0byAlcy4gTGltaXQ6ICVkIE1CL29wZXJhdGlvbiAgICAgICVzID0gY3V0IG9yIGNvcHkKICAgICdDb3B5X0N1dF9Db3VudF9MaW1pdCcgPT4gJ0bDtnIgbcOlbmdhIGZpbGVyL21hcHBhciDDpHIgdmFsZGEgZsO2ciBhdHQgZGUgc2thIGt1bm5hICVzLiBHcsOkbnM6ICNkIGZpbGVyIHBlciBvcGVyYXRpb24nLCAvLyBZb3Ugc2VsZWN0ZWQgdG9vIG1hbnkgZmlsZXMvZm9sZGVycyB0byAlcy4gTGltaXQ6ICVkIGZpbGVzL29wZXJhdGlvbiAgICAgJXMgPSBjdXQgb3IgY29weQogICAgJ0NvcHlfQ3V0X05vdF9BbGxvd2VkJyA9PiAnRHUgaGFyIGVqIGJlaMO2cmlnaGV0IGF0dCAlcyBmaWxlci4nLCAvLyBZb3UgYXJlIG5vdCBhbGxvd2VkIHRvICVzIGZpbGVzLiAgICAgICAgJXMoMSkgPSBjdXQgb3IgY29weSwgJXMoMikgPSBmaWxlcyBvciBmb2xkZXJzCiAgICAnSW1hZ2VfRWRpdG9yX05vX1NhdmUnID0+ICdNaXNzbHlja2FkZXMgbWVkIGF0dCBzcGFyYSBiaWxkJywgLy8gQ291bGQgbm90IHNhdmUgaW1hZ2UKICAgICdJbWFnZV9FZGl0b3JfRXhpdCcgPT4gIkV4aXQiLAogICAgJ0ltYWdlX0VkaXRvcl9TYXZlJyA9PiAiU2F2ZSIsCiAgICAnWmlwX05vX0V4dHJhY3QnID0+ICdNaXNzbHlja2FkZXMgbWVkIGF0dCBwYWNrYSB1cHAuIEZpbGVuIGthbiBldmVudHVlbGx0IHZhcmEga29ycnVwdC4nLCAvLyBDb3VsZCBub3QgZXh0cmFjdC4gRmlsZSBtaWdodCBiZSBjb3JydXB0LgogICAgJ1ppcF9JbnZhbGlkJyA9PiAnRmlsdHlwZW4gc3TDtmRzIGVqLiBTdMO2ZGphIGZpbHR5cGVyOiB6aXAsIGd6IG9jaCB0YXIuJywgLy8gVGhpcyBleHRlbnNpb24gaXMgbm90IHN1cHBvcnRlZC4gVmFsaWQ6IHppcCwgZ3osIHRhci4KICAgICdEaXJfTm9fV3JpdGUnID0+ICdEZXQgZ8OlciBlaiBhdHQgc2tyaXZhIHRpbGwgZGVuIHZhbGRhIHPDtmt2w6RnZW4uJywgLy8gVGhlIGRpcmVjdG9yeSB5b3Ugc2VsZWN0ZWQgaXMgbm90IHdyaXRhYmxlLgogICAgJ0Z1bmN0aW9uX0Rpc2FibGVkJyA9PiAnRnVua3Rpb25lbiBmw7ZyIGF0dCAlcyDDpHIgaW5ha3RpdmVyYWQuJywgLy8gVGhlICVzIGZ1bmN0aW9uIGhhcyBiZWVuIGRpc2FibGVkIGJ5IHRoZSBzZXJ2ZXIuICAgICAgICVzID0gY3V0IG9yIGNvcHkKICAgICdGaWxlX1Blcm1pc3Npb24nID0+ICdGaWxlIHBlcm1pc3Npb24nLAogICAgJ0ZpbGVfUGVybWlzc2lvbl9Ob3RfQWxsb3dlZCcgPT4gJ0NoYW5naW5nICVzIHBlcm1pc3Npb25zIGFyZSBub3QgYWxsb3dlZC4nLCAvLyAlcyA9IGZpbGVzIG9yIGZvbGRlcnMKICAgICdGaWxlX1Blcm1pc3Npb25fUmVjdXJzaXZlJyA9PiAnVGlsbMOkbXBhIHJla3Vyc2l2dCcsIC8vICdBcHBseSByZWN1cnNpdmVseT8nCiAgICAnRmlsZV9QZXJtaXNzaW9uX1dyb25nX01vZGUnID0+ICdGZWxha3RpZ2EgZmlscsOkdHRpZ2hldGVyLicsIC8vICJUaGUgc3VwcGxpZWQgcGVybWlzc2lvbiBtb2RlIGlzIGluY29ycmVjdC4iCiAgICAnVXNlcicgPT4gJ0FudsOkbmRhcmUnLCAvLyAnVXNlcicKICAgICdHcm91cCcgPT4gJ0dydXBwJywgLy8gJ0dyb3VwJwogICAgJ1llcycgPT4gJ0phJywgLy8gJ1llcycKICAgICdObycgPT4gJ05laicsIC8vICdObycKICAgICdMYW5nX05vdF9Gb3VuZCcgPT4gJ0t1bmRlIGludGUgaGl0dGEgc3Byw6VrLicsIC8vICdDb3VsZCBub3QgZmluZCBsYW5ndWFnZS4nCiAgICAnTGFuZ19DaGFuZ2UnID0+ICdWw6R4bGEgc3Byw6VrJywgLy8gJ0NoYW5nZSB0aGUgbGFuZ3VhZ2UnCiAgICAnRmlsZV9Ob3RfRm91bmQnID0+ICdLdW5kZSBpbnRlIGhpdHRhIGZpbCcsIC8vICdDb3VsZCBub3QgZmluZCB0aGUgZmlsZS4nCiAgICAnRmlsZV9PcGVuX0VkaXRfTm90X0FsbG93ZWQnID0+ICdEdSBoYXIgaW50ZSByw6R0dGlnaGV0ZXIgdGlsbCAlcyBkZW4gaMOkciBmaWxlbi4nLCAvLyAnWW91IGFyZSBub3QgYWxsb3dlZCB0byAlcyB0aGlzIGZpbGUuJywgLy8gJXMgPSBvcGVuIG9yIGVkaXQKICAgICdFZGl0JyA9PiAnUmVkaWdlcmEnLCAvLyAnRWRpdCcKICAgICdFZGl0X0ZpbGUnID0+ICdSZWRpZ2VyYSBmaWxlbnMgaW5uZWjDpWxsJywgLy8gIkVkaXQgZmlsZSdzIGNvbnRlbnQiCiAgICAnRmlsZV9TYXZlX09LJyA9PiAnRmlsZW4gc3BhcmFkZXMnLCAvLyAiRmlsZSBzdWNjZXNzZnVsbHkgc2F2ZWQuIgogICAgJ0ZpbGVfU2F2ZV9FcnJvcicgPT4gJ0RldCB1cHBzdG9kIGV0dCBmZWwgbsOkciBmaWxlbiBzcGFyYWRlcy4nLCAvLyAiVGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIHNhdmluZyB0aGUgZmlsZS4iCiAgICAnTmV3X0ZpbGUnID0+ICdOeSBmaWwnLCAvLyAnTmV3IEZpbGUnCiAgICAnTm9fRXh0ZW5zaW9uJyA9PiAnRHUgbcOlc3RlIGzDpGdnYSB0aWxsIGVuIGZpbMOkbmRlbHNlJywgLy8gJ1lvdSBoYXZlIHRvIGFkZCBhIGZpbGUgZXh0ZW5zaW9uLicKICAgICdWYWxpZF9FeHRlbnNpb25zJyA9PiAnVGlsbMOldG5hIGZpbMOkbmRlbHNlcjogJXMnLCAvLyAnVmFsaWQgZXh0ZW5zaW9uczogJXMnLCAvLyAlcyA9IHR4dCxsb2cgZXRjLgogICAgJ1VwbG9hZF9tZXNzYWdlJyA9PiAnU2zDpHBwIGZpbCBow6RyIGbDtnIgYXR0IGxhZGRhIHVwcCcsIC8vICJEcm9wIGZpbGUgaGVyZSB0byB1cGxvYWQiCgogICAgJ1NFUlZFUiBFUlJPUicgPT4gJ1NFUlZFUiBGRUwnLCAvLyAiU0VSVkVSIEVSUk9SIiwKICAgICdmb3JiaWRkZW4nID0+ICdGw7ZyYmp1ZGV0JywgLy8gIkZvcmJpZGVuIiwKICAgICd3cm9uZyBwYXRoJyA9PiAnRmVsIHPDtmt2w6RnJywgLy8gIldyb25nIHBhdGgiLAogICAgJ3dyb25nIG5hbWUnID0+ICdGZWwgbmFtbicsIC8vICJXcm9uZyBuYW1lIiwKICAgICd3cm9uZyBleHRlbnNpb24nID0+ICdGZWwgZmlsw6RuZGVsc2UnLCAvLyAiV3JvbmcgZXh0ZW5zaW9uIiwKICAgICd3cm9uZyBvcHRpb24nID0+ICdGZWwgYWx0ZXJuYXRpdicsIC8vICJXcm9uZyBvcHRpb24iLAogICAgJ3dyb25nIGRhdGEnID0+ICdGZWwgZGF0YScsIC8vICJXcm9uZyBkYXRhIiwKICAgICd3cm9uZyBhY3Rpb24nID0+ICdGZWwgw6V0Z8OkcmQnLCAvLyAiV3JvbmcgYWN0aW9uIiwKICAgICd3cm9uZyBzdWItYWN0aW9uJyA9PiAnRmVsIGRlbMOldGfDpHJkJywgLy8gIldyb25nIHN1Yi1hY3RpbyIsCiAgICAnbm8gYWN0aW9uIHBhc3NlZCcgPT4gJ0luZ2VuIMOldGfDpHJkIHNraWNrYWQnLCAvLyAiTm8gYWN0aW9uIHBhc3NlZCIsCiAgICAnbm8gcGF0aCcgPT4gJ0luZ2VuIHPDtmt2w6RnJywgLy8iTm8gcGF0aCIsCiAgICAnbm8gZmlsZScgPT4gJ0luZ2VuIGZpbCcsIC8vIk5vIGZpbGUiLAogICAgJ3ZpZXcgdHlwZSBudW1iZXIgbWlzc2luZycgPT4gJ1Z5dHlwc251bW1lciBzYWtuYXMnLCAvLyAiVmlldyB0eXBlIG51bWJlciBtaXNzaW5nIiwKICAgICdOb3QgZW5vdWdoIE1lbW9yeScgPT4gJ0ludGUgdGlsbHLDpGNrbGlndCBtZWQgbWlubmUnLCAvLyAiTm90IGVub3VnaCBNZW1vcnkiLAogICAgJ21heF9zaXplX3JlYWNoZWQnID0+ICdEaW4gYmlsZGthdGFsb2cgaGFyIG7DpXR0IGRlbiBtYXhpbWFsYSBzdG9ybGVrZW4gYXYgJWQgTUInLCAvLyAiWW91ciBpbWFnZSBmb2xkZXIgaGFzIHJlYWNoIGl0cyBtYXhpbWFsZSBzaXplIG9mICVkIE1CLiIsIC8vJWQgPSBtYXggb3ZlcmFsbCBzaXplCiAgICAnQicgPT4gIkIiLAogICAgJ0tCJyA9PiAiS0IiLAogICAgJ01CJyA9PiAiTUIiLAogICAgJ0dCJyA9PiAiR0IiLAogICAgJ1RCJyA9PiAiVEIiLAogICAgJ3RvdGFsIHNpemUnID0+ICdUb3RhbCBzdG9ybGVrJywgLy8gIlRvdGFsIHNpemUiLAopOwo=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/lang/th_TH.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIOC4nOC4ueC5ieC5geC4m+C4pTog4LiT4Lix4LiQ4Lie4LiH4Lip4LmMIOC4quC4suC4o+C4hOC4k+C4sijguYLguJTguJnguLHguJcpCiAqIOC5guC4m+C4o+C5hOC4n+C4peC5jDogaHR0cHM6Ly93ZWIuZmFjZWJvb2suY29tL3BhbmRvbnVzCiAqIOC5gOC4p+C5h+C4muC5hOC4i+C4leC5jDogd3d3Lm1hcHJhbmdzb2Z0LmNvbQogKiDguYHguJvguKXguYDguKHguLfguYjguK3guKfguLHguJnguJfguLXguYg6IDkvMTEvMjU1OQogKiDguYDguKfguKXguLI6IDI6NTIKICovCgpyZXR1cm4gYXJyYXkoCgogICAgJ1NlbGVjdCcgPT4gJ+C5gOC4peC4t+C4reC4gScsCiAgICAnRGVzZWxlY3RfQWxsJyA9PiAnRGVzZWxlY3QgQWxsJywKICAgICdTZWxlY3RfQWxsJyA9PiAnU2VsZWN0IEFsbCcsCiAgICAnRXJhc2UnID0+ICfguKXguJonLAogICAgJ09wZW4nID0+ICfguYDguJvguLTguJQnLAogICAgJ0NvbmZpcm1fZGVsJyA9PiAn4LiE4Li44LiT4LiV4LmJ4Lit4LiH4LiB4Liy4Lij4Lil4Lia4LmE4Lif4Lil4LmM4LiZ4Li14LmJIOC5g+C4iuC5iCDguKvguKPguLfguK0g4LmE4Lih4LmIID8nLAogICAgJ0FsbCcgPT4gJ+C4l+C4seC5ieC4h+C4q+C4oeC4lCcsCiAgICAnRmlsZXMnID0+ICfguYTguJ/guKXguYwnLAogICAgJ0ltYWdlcycgPT4gJ+C4o+C4ueC4m+C4oOC4suC4nicsCiAgICAnQXJjaGl2ZXMnID0+ICfguYTguJ/guKXguYzguJrguLXguJrguK3guLHguJQnLAogICAgJ0Vycm9yX1VwbG9hZCcgPT4gJ+C5hOC4n+C4peC5jOC4l+C4teC5iOC4hOC4uOC4k+C4reC4seC4nuC5guC4q+C4peC4lCDguKHguLXguILguJnguLLguJTguYDguIHguLTguJnguJfguLXguYjguYTguJTguYnguKPguLHguJrguK3guJnguLjguI3guLLguJXguLQnLAogICAgJ0Vycm9yX2V4dGVuc2lvbicgPT4gJ+C4iuC4meC4tOC4lOC5hOC4n+C4peC5jOC4meC4teC5iSDguYTguKHguYjguK3guJnguLjguI3guLLguJXguLTguYPguKvguYnguK3guLHguJ7guYLguKvguKXguJQnLAogICAgJ1VwbG9hZF9maWxlJyA9PiAn4Lit4Lix4Lie4LmC4Lir4Lil4LiUJywKICAgICdGaWx0ZXJzJyA9PiAn4Lib4Lij4Liw4LmA4Lig4LiXJywKICAgICdWaWRlb3MnID0+ICfguKfguLTguJTguLXguYLguK0nLAogICAgJ011c2ljJyA9PiAn4LmA4Lie4Lil4LiHJywKICAgICdOZXdfRm9sZGVyJyA9PiAn4Liq4Lij4LmJ4Liy4LiH4LmC4Lif4Lil4LmA4LiU4Lit4Lij4LmM4LmD4Lir4Lih4LmIJywKICAgICdGb2xkZXJfQ3JlYXRlZCcgPT4gJ+C4quC4o+C5ieC4suC4h+C5guC4n+C4peC5gOC4lOC4reC4o+C5jOC5gOC4o+C4teC4ouC4muC4o+C5ieC4reC4oicsCiAgICAnRXhpc3RpbmdfRm9sZGVyJyA9PiAn4LmC4Lif4Lil4LmA4LiU4Lit4Lij4LmM4LiK4Li34LmI4Lit4LiZ4Li14LmJ4Lih4Li14Lit4Lii4Li54LmI4LmB4Lil4LmJ4LinJywKICAgICdDb25maXJtX0ZvbGRlcl9kZWwnID0+ICfguITguLjguJPguJXguYnguK3guIfguIHguLLguKPguKXguJrguYLguJ/guKXguYDguJTguK3guKPguYzguJnguLXguYkg4Lij4Lin4Lih4LiX4Lix4LmJ4LiH4LmE4Lif4Lil4LmM4LiX4Lix4LmJ4LiH4Lir4Lih4LiU4LmD4LiZ4LiZ4Lix4LmJ4LiZIOC5g+C4iuC5iCDguKvguKPguLfguK0g4LmE4Lih4LmIID8nLAogICAgJ1JldHVybl9GaWxlc19MaXN0JyA9PiAn4LiB4Lil4Lix4Lia4Liq4Li54LmI4Lir4LiZ4LmJ4Liy4Lij4Liy4Lii4LiB4Liy4LijJywKICAgICdQcmV2aWV3JyA9PiAn4LmB4Liq4LiU4LiH4LiV4Lix4Lin4Lit4Lii4LmI4Liy4LiHJywKICAgICdEb3dubG9hZCcgPT4gJ+C4lOC4suC4p+C4meC5jOC5guC4q+C4peC4lCcsCiAgICAnSW5zZXJ0X0ZvbGRlcl9OYW1lJyA9PiAn4Lij4Liw4Lia4Li44LiK4Li34LmI4Lit4LmC4Lif4Lil4LmA4LiU4Lit4Lij4LmM4LiX4Li14LmI4LiV4LmJ4Lit4LiH4LiB4Liy4LijOicsCiAgICAnUm9vdCcgPT4gJ+C4q+C4meC5ieC4suC4q+C4peC4seC4gScsCiAgICAnUmVuYW1lJyA9PiAn4LmA4Lib4Lil4Li14LmI4Lii4LiZ4LiK4Li34LmI4LitJywKICAgICdCYWNrJyA9PiAn4LiB4Lil4Lix4LiaJywKICAgICdWaWV3JyA9PiAn4LiU4Li5JywKICAgICdWaWV3X2xpc3QnID0+ICfguYHguKrguJTguIfguYHguJrguJrguKPguLLguKLguIHguLLguKMnLAogICAgJ1ZpZXdfY29sdW1uc19saXN0JyA9PiAn4LmB4Liq4LiU4LiH4LmB4Lia4Lia4LiE4Lit4Lil4Lix4Lih4LiZ4LmMJywKICAgICdWaWV3X2JveGVzJyA9PiAn4LmB4Liq4LiU4LiH4LmB4Lia4Lia4LiC4LiZ4Liy4LiU4LmD4Lir4LiN4LmIJywKICAgICdUb29sYmFyJyA9PiAn4LmA4LiE4Lij4Li34LmI4Lit4LiH4Lih4Li34LitJywKICAgICdBY3Rpb25zJyA9PiAn4Lil4LiH4Lih4Li34LitJywKICAgICdSZW5hbWVfZXhpc3RpbmdfZmlsZScgPT4gJ+C5hOC4n+C4peC5jOC4iuC4t+C5iOC4reC4meC4teC5ieC4oeC4teC4reC4ouC4ueC5iOC5geC4peC5ieC4pycsCiAgICAnUmVuYW1lX2V4aXN0aW5nX2ZvbGRlcicgPT4gJ+C5guC4n+C4peC5gOC4lOC4reC4o+C5jOC4iuC4t+C5iOC4reC4meC4teC5ieC4oeC4teC4reC4ouC4ueC5iOC5geC4peC5ieC4pycsCiAgICAnRW1wdHlfbmFtZScgPT4gJ+C4iuC4t+C5iOC4reC5hOC4n+C4peC5jOC5hOC4oeC5iOC4quC4suC4oeC4suC4o+C4luC5gOC4m+C5h+C4meC4hOC5iOC4suC4p+C5iOC4suC4h+C5hOC4lOC5iScsCiAgICAnVGV4dF9maWx0ZXInID0+ICfguKPguLDguJrguLjguITguLPguITguYnguJknLAogICAgJ1N3aXBlX2hlbHAnID0+ICdTd2lwZSB0aGUgbmFtZSBvZiBmaWxlL2ZvbGRlciB0byBzaG93IG9wdGlvbnMnLAogICAgJ1VwbG9hZF9iYXNlJyA9PiAn4Lit4Lix4Lie4LmC4Lir4Lil4LiU4LmB4Lia4Lia4LiY4Lij4Lij4Lih4LiU4LiyJywKICAgICdVcGxvYWRfdXJsJyA9PiAn4Lit4Lix4Lie4LmC4Lir4Lil4LiU4LiI4Liy4LiBIFVSTCcsCiAgICAnVXBsb2FkX2Jhc2VfaGVscCcgPT4gIuC4quC4suC4oeC4suC4o+C4luC4reC4seC4nuC5guC4q+C4peC4lOC5hOC4n+C4peC5jOC5geC4muC4muC4peC4suC4geC4p+C4suC4h+C5hOC4lOC5iSDguKvguKPguLfguK3guITguKXguLTguIHguJfguLXguYjguJvguLjguYjguKHguJTguYnguLLguJnguJrguJnguYDguJ7guLfguYjguK3guYDguJ7guLTguYjguKHguYTguJ/guKXguYzguYHguKXguLDguITguKXguLTguIHguK3guLHguJ7guYLguKvguKXguJQg4LmA4Lih4Li34LmI4Lit4LiB4Liy4Lij4Lit4Lix4Lib4LmC4Lir4Lil4LiU4LmA4Liq4Lij4LmH4LiI4Liq4Lih4Lia4Li54Lij4LiT4LmM4LiE4Lil4Li04LiB4Lib4Li44LmI4LihIFwi4LiB4Lil4Lix4Lia4Liq4Li54LmI4Lir4LiZ4LmJ4Liy4Lij4Liy4Lii4LiB4Liy4LijXCIiLAogICAgJ1VwbG9hZF9hZGRfZmlsZXMnID0+ICfguYDguKXguLfguK3guIHguYTguJ/guKXguYwgKOC4quC4suC4oeC4suC4o+C5gOC4peC4t+C4reC4geC5hOC4lOC5ieC4q+C4peC4suC4ouC5hOC4n+C4peC5jCknLAogICAgJ1VwbG9hZF9zdGFydCcgPT4gJ+C4reC4seC4nuC5guC4q+C4peC4lCcsCiAgICAnVXBsb2FkX2Vycm9yX21lc3NhZ2VzJyA9PmFycmF5KAogICAgICAgIDEgPT4gJ1RoZSB1cGxvYWRlZCBmaWxlIGV4Y2VlZHMgdGhlIHVwbG9hZF9tYXhfZmlsZXNpemUgZGlyZWN0aXZlIGluIHBocC5pbmknLAogICAgICAgIDIgPT4gJ1RoZSB1cGxvYWRlZCBmaWxlIGV4Y2VlZHMgdGhlIE1BWF9GSUxFX1NJWkUgZGlyZWN0aXZlIHRoYXQgd2FzIHNwZWNpZmllZCBpbiB0aGUgSFRNTCBmb3JtJywKICAgICAgICAzID0+ICdUaGUgdXBsb2FkZWQgZmlsZSB3YXMgb25seSBwYXJ0aWFsbHkgdXBsb2FkZWQnLAogICAgICAgIDQgPT4gJ05vIGZpbGUgd2FzIHVwbG9hZGVkJywKICAgICAgICA2ID0+ICdNaXNzaW5nIGEgdGVtcG9yYXJ5IGZvbGRlcicsCiAgICAgICAgNyA9PiAnRmFpbGVkIHRvIHdyaXRlIGZpbGUgdG8gZGlzaycsCiAgICAgICAgOCA9PiAnQSBQSFAgZXh0ZW5zaW9uIHN0b3BwZWQgdGhlIGZpbGUgdXBsb2FkJywKICAgICAgICAncG9zdF9tYXhfc2l6ZScgPT4gJ1RoZSB1cGxvYWRlZCBmaWxlIGV4Y2VlZHMgdGhlIHBvc3RfbWF4X3NpemUgZGlyZWN0aXZlIGluIHBocC5pbmknLAogICAgICAgICdtYXhfZmlsZV9zaXplJyA9PiAnRmlsZSBpcyB0b28gYmlnJywKICAgICAgICAnbWluX2ZpbGVfc2l6ZScgPT4gJ0ZpbGUgaXMgdG9vIHNtYWxsJywKICAgICAgICAnYWNjZXB0X2ZpbGVfdHlwZXMnID0+ICdGaWxldHlwZSBub3QgYWxsb3dlZCcsCiAgICAgICAgJ21heF9udW1iZXJfb2ZfZmlsZXMnID0+ICdNYXhpbXVtIG51bWJlciBvZiBmaWxlcyBleGNlZWRlZCcsCiAgICAgICAgJ21heF93aWR0aCcgPT4gJ0ltYWdlIGV4Y2VlZHMgbWF4aW11bSB3aWR0aCcsCiAgICAgICAgJ21pbl93aWR0aCcgPT4gJ0ltYWdlIHJlcXVpcmVzIGEgbWluaW11bSB3aWR0aCcsCiAgICAgICAgJ21heF9oZWlnaHQnID0+ICdJbWFnZSBleGNlZWRzIG1heGltdW0gaGVpZ2h0JywKICAgICAgICAnbWluX2hlaWdodCcgPT4gJ0ltYWdlIHJlcXVpcmVzIGEgbWluaW11bSBoZWlnaHQnLAogICAgICAgICdhYm9ydCcgPT4gJ0ZpbGUgdXBsb2FkIGFib3J0ZWQnLAogICAgICAgICdpbWFnZV9yZXNpemUnID0+ICdGYWlsZWQgdG8gcmVzaXplIGltYWdlJwogICAgKSwKICAgICdUeXBlX2RpcicgPT4gJ2RpcicsCiAgICAnVHlwZScgPT4gJ+C4iuC4meC4tOC4lCcsCiAgICAnRGltZW5zaW9uJyA9PiAnRGltZW5zaW9uJywKICAgICdTaXplJyA9PiAn4LiC4LiZ4Liy4LiUJywKICAgICdEYXRlJyA9PiAn4Lin4Lix4LiZ4LiX4Li14LmIJywKICAgICdGaWxlbmFtZScgPT4gJ+C4iuC4t+C5iOC4reC5hOC4n+C4peC5jCcsCiAgICAnT3BlcmF0aW9ucycgPT4gJ09wZXJhdGlvbnMnLAogICAgJ0RhdGVfdHlwZScgPT4gJ2QvbS9ZIEg6aTpzJywKICAgICdPSycgPT4gJ+C4leC4geC4peC4hycsCiAgICAnQ2FuY2VsJyA9PiAn4Lii4LiB4LmA4Lil4Li04LiBJywKICAgICdTb3J0aW5nJyA9PiAn4LiI4Lix4LiU4LmA4Lij4Li14Lii4LiHJywKICAgICdTaG93X3VybCcgPT4gJ+C5geC4quC4lOC4hyBVUkwnLAogICAgJ0V4dHJhY3QnID0+ICdFeHRyYWN0IGhlcmUnLAogICAgJ0ZpbGVfaW5mbycgPT4gJ+C4o+C4suC4ouC4peC4sOC5gOC4reC4teC4ouC4lCcsCiAgICAnRWRpdF9pbWFnZScgPT4gJ+C5geC4geC5ieC5hOC4guC4o+C4ueC4m+C4oOC4suC4nicsCiAgICAnRHVwbGljYXRlJyA9PiAn4LiX4Liz4LiL4LmJ4LizJywKICAgICdGb2xkZXJzJyA9PiAn4LmC4Lif4Lil4LmA4LiU4Lit4Lij4LmMJywKICAgICdDb3B5JyA9PiAn4LiE4Lix4LiU4Lil4Lit4LiBJywKICAgICdDdXQnID0+ICfguJXguLHguJQnLAogICAgJ1Bhc3RlJyA9PiAn4Lin4Liy4LiHJywKICAgICdDQicgPT4gJ0NCJywgLy8gY2xpcGJvYXJkCiAgICAnUGFzdGVfSGVyZScgPT4gJ+C4p+C4suC4h+C5g+C4meC5guC4nuC4peC5gOC4lOC4reC4o+C5jOC4meC4teC5iScsCiAgICAnUGFzdGVfQ29uZmlybScgPT4gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBwYXN0ZSB0byB0aGlzIGRpcmVjdG9yeT8gVGhpcyB3aWxsIG92ZXJ3cml0ZSBleGlzdGluZyBmaWxlcy9mb2xkZXJzIGlmIGVuY291bnRlcmVkIGFueS4nLAogICAgJ1Bhc3RlX0ZhaWxlZCcgPT4gJ0ZhaWxlZCB0byBwYXN0ZSBmaWxlKHMpJywKICAgICdDbGVhcl9DbGlwYm9hcmQnID0+ICfguKXguJrguJfguLXguYjguIHguYfguK3guJvguJvguLXguYnguYTguKfguYknLAogICAgJ0NsZWFyX0NsaXBib2FyZF9Db25maXJtJyA9PiAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNsZWFyIHRoZSBjbGlwYm9hcmQ/JywKICAgICdGaWxlc19PTl9DbGlwYm9hcmQnID0+ICdUaGVyZSBhcmUgZmlsZXMgb24gdGhlIGNsaXBib2FyZC4nLAogICAgJ0NvcHlfQ3V0X1NpemVfTGltaXQnID0+ICdUaGUgc2VsZWN0ZWQgZmlsZXMvZm9sZGVycyBhcmUgdG9vIGJpZyB0byAlMSRzLiBMaW1pdDogJTIkZCBNQi9vcGVyYXRpb24nLCAvLyAlMSRzID0gY3V0IG9yIGNvcHksICUyJGQgPSBtYXggc2l6ZQogICAgJ0NvcHlfQ3V0X0NvdW50X0xpbWl0JyA9PiAnWW91IHNlbGVjdGVkIHRvbyBtYW55IGZpbGVzL2ZvbGRlcnMgdG8gJTEkcy4gTGltaXQ6ICUyJGQgZmlsZXMvb3BlcmF0aW9uJywgLy8gJTEkcyA9IGN1dCBvciBjb3B5LCAlMiRkID0gbWF4IGNvdW50CiAgICAnQ29weV9DdXRfTm90X0FsbG93ZWQnID0+ICdZb3UgYXJlIG5vdCBhbGxvd2VkIHRvICUxJHMgJTIkcy4nLCAvLyAlMTIkcyA9IGN1dCBvciBjb3B5LCAlMiRzID0gZmlsZXMgb3IgZm9sZGVycwogICAgJ0ltYWdlX0VkaXRvcl9Ob19TYXZlJyA9PiAnQ291bGQgbm90IHNhdmUgaW1hZ2UnLAogICAgJ0ltYWdlX0VkaXRvcl9FeGl0JyA9PiAiRXhpdCIsCiAgICAnSW1hZ2VfRWRpdG9yX1NhdmUnID0+ICJTYXZlIiwKICAgICdaaXBfTm9fRXh0cmFjdCcgPT4gJ0NvdWxkIG5vdCBleHRyYWN0LiBGaWxlIG1pZ2h0IGJlIGNvcnJ1cHQuJywKICAgICdaaXBfSW52YWxpZCcgPT4gJ1RoaXMgZXh0ZW5zaW9uIGlzIG5vdCBzdXBwb3J0ZWQuIFZhbGlkOiB6aXAsIGd6LCB0YXIuJywKICAgICdEaXJfTm9fV3JpdGUnID0+ICdUaGUgZGlyZWN0b3J5IHlvdSBzZWxlY3RlZCBpcyBub3Qgd3JpdGFibGUuJywKICAgICdGdW5jdGlvbl9EaXNhYmxlZCcgPT4gJ1RoZSAlcyBmdW5jdGlvbiBoYXMgYmVlbiBkaXNhYmxlZCBieSB0aGUgc2VydmVyLicsIC8vICVzID0gY3V0IG9yIGNvcHkKICAgICdGaWxlX1Blcm1pc3Npb24nID0+ICfguIHguLPguKvguJnguJQgcGVybWlzc2lvbicsCiAgICAnRmlsZV9QZXJtaXNzaW9uX05vdF9BbGxvd2VkJyA9PiAnQ2hhbmdpbmcgJXMgcGVybWlzc2lvbnMgYXJlIG5vdCBhbGxvd2VkLicsIC8vICVzID0gZmlsZXMgb3IgZm9sZGVycwogICAgJ0ZpbGVfUGVybWlzc2lvbl9SZWN1cnNpdmUnID0+ICdBcHBseSByZWN1cnNpdmVseT8nLAogICAgJ0ZpbGVfUGVybWlzc2lvbl9Xcm9uZ19Nb2RlJyA9PiAiVGhlIHN1cHBsaWVkIHBlcm1pc3Npb24gbW9kZSBpcyBpbmNvcnJlY3QuIiwKICAgICdVc2VyJyA9PiAnVXNlcicsCiAgICAnR3JvdXAnID0+ICdHcm91cCcsCiAgICAnWWVzJyA9PiAnWWVzJywKICAgICdObycgPT4gJ05vJywKICAgICdMYW5nX05vdF9Gb3VuZCcgPT4gJ0NvdWxkIG5vdCBmaW5kIHRoZSBsYW5ndWFnZS4nLAogICAgJ0xhbmdfQ2hhbmdlJyA9PiAn4LmA4Lib4Lil4Li14LmI4Lii4LiZ4Lig4Liy4Lip4LiyJywKICAgICdGaWxlX05vdF9Gb3VuZCcgPT4gJ0NvdWxkIG5vdCBmaW5kIHRoZSBmaWxlLicsCiAgICAnRmlsZV9PcGVuX0VkaXRfTm90X0FsbG93ZWQnID0+ICdZb3UgYXJlIG5vdCBhbGxvd2VkIHRvICVzIHRoaXMgZmlsZS4nLCAvLyAlcyA9IG9wZW4gb3IgZWRpdAogICAgJ0VkaXQnID0+ICdFZGl0JywKICAgICdFZGl0X0ZpbGUnID0+ICLguYHguIHguYnguYTguILguYTguJ/guKXguYzguJnguLXguYkiLAogICAgJ0ZpbGVfU2F2ZV9PSycgPT4gIuC4muC4seC4meC4l+C4tuC4geC4quC4s+C5gOC4o+C5h+C4iCIsCiAgICAnRmlsZV9TYXZlX0Vycm9yJyA9PiAiVGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIHNhdmluZyB0aGUgZmlsZS4iLAogICAgJ05ld19GaWxlJyA9PiAn4Liq4Lij4LmJ4Liy4LiH4LmE4Lif4Lil4LmM4LmD4Lir4Lih4LmIJywKICAgICdOb19FeHRlbnNpb24nID0+ICdZb3UgaGF2ZSB0byBhZGQgYSBmaWxlIGV4dGVuc2lvbi4nLAogICAgJ1ZhbGlkX0V4dGVuc2lvbnMnID0+ICdWYWxpZCBleHRlbnNpb25zOiAlcycsIC8vICVzID0gdHh0LGxvZyBldGMuCiAgICAnVXBsb2FkX21lc3NhZ2UnID0+ICLguKXguLLguIHguYTguJ/guKXguYzguKHguLLguKfguLLguIfguKvguKPguLfguK3guITguKXguLTguIHguJfguLXguYjguJnguLXguYgg4LmA4Lie4Li34LmI4Lit4Lit4Lix4Lie4LmC4Lir4Lil4LiUIiwKCiAgICAnU0VSVkVSIEVSUk9SJyA9PiAiU0VSVkVSIEVSUk9SIiwKICAgICdmb3JiaWRkZW4nID0+ICJGb3JiaWRlbiIsCiAgICAnd3JvbmcgcGF0aCcgPT4gIldyb25nIHBhdGgiLAogICAgJ3dyb25nIG5hbWUnID0+ICJXcm9uZyBuYW1lIiwKICAgICd3cm9uZyBleHRlbnNpb24nID0+ICJXcm9uZyBleHRlbnNpb24iLAogICAgJ3dyb25nIG9wdGlvbicgPT4gIldyb25nIG9wdGlvbiIsCiAgICAnd3JvbmcgZGF0YScgPT4gIldyb25nIGRhdGEiLAogICAgJ3dyb25nIGFjdGlvbicgPT4gIldyb25nIGFjdGlvbiIsCiAgICAnd3Jvbmcgc3ViLWFjdGlvbicgPT4gIldyb25nIHN1Yi1hY3RpbyIsCiAgICAnbm8gYWN0aW9uIHBhc3NlZCcgPT4gIk5vIGFjdGlvbiBwYXNzZWQiLAogICAgJ25vIHBhdGgnID0+ICJObyBwYXRoIiwKICAgICdubyBmaWxlJyA9PiAiTm8gZmlsZSIsCiAgICAndmlldyB0eXBlIG51bWJlciBtaXNzaW5nJyA9PiAiVmlldyB0eXBlIG51bWJlciBtaXNzaW5nIiwKICAgICdOb3QgZW5vdWdoIE1lbW9yeScgPT4gIk5vdCBlbm91Z2ggTWVtb3J5IiwKICAgICdtYXhfc2l6ZV9yZWFjaGVkJyA9PiAiWW91ciBpbWFnZSBmb2xkZXIgaGFzIHJlYWNoIGl0cyBtYXhpbWFsZSBzaXplIG9mICVkIE1CLiIsIC8vJWQgPSBtYXggb3ZlcmFsbCBzaXplCiAgICAnQicgPT4gIkIiLAogICAgJ0tCJyA9PiAiS0IiLAogICAgJ01CJyA9PiAiTUIiLAogICAgJ0dCJyA9PiAiR0IiLAogICAgJ1RCJyA9PiAiVEIiLAogICAgJ3RvdGFsIHNpemUnID0+ICJUb3RhbCBzaXplIiwKKTsK]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/lang/tr_TR.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJldHVybiBhcnJheSgKCiAgICAnU2VsZWN0JyA9PiAnU2XDpycsCiAgICAnRGVzZWxlY3RfQWxsJyA9PiAnSGnDp2JpcmluaSBzZcOnbWUnLAogICAgJ1NlbGVjdF9BbGwnID0+ICdIZXBzaW5pIHNlw6cnLAogICAgJ0VyYXNlJyA9PiAnU2lsJywKICAgICdPcGVuJyA9PiAnQcOnJywKICAgICdDb25maXJtX2RlbCcgPT4gJ0J1IGRvc3lhecSxIHNpbG1layBpc3RlZGnEn2luaXpkZW4gZW1pbiBtaXNpbml6PycsCiAgICAnQWxsJyA9PiAnVMO8bcO8JywKICAgICdGaWxlcycgPT4gJ0Rvc3lhbGFyJywKICAgICdJbWFnZXMnID0+ICdSZXNpbWxlcicsCiAgICAnQXJjaGl2ZXMnID0+ICdBcsWfaXZsZXInLAogICAgJ0Vycm9yX1VwbG9hZCcgPT4gJ1nDvGtsZW1leWUgw6dhbMSxxZ90xLHEn8SxbsSxeiBkb3N5YSBtYXhpbXVtIHnDvGtsZW1lIGxpbWl0aW5pIGHFn3TEsS4nLAogICAgJ0Vycm9yX2V4dGVuc2lvbicgPT4gJ0Rvc3lhIHV6YW50xLFzxLFuYSBpemluIHlvay4nLAogICAgJ1VwbG9hZF9maWxlJyA9PiAnRG9zeWEgWcO8a2xlJywKICAgICdGaWx0ZXJzJyA9PiAnRmlsdHJlbGVyJywKICAgICdWaWRlb3MnID0+ICdWaWRlb2xhcicsCiAgICAnTXVzaWMnID0+ICdNw7x6aWtsZXInLAogICAgJ05ld19Gb2xkZXInID0+ICdZZW5pIEtsYXPDtnInLAogICAgJ0ZvbGRlcl9DcmVhdGVkJyA9PiAnS2xhc8O2ciBiYcWfYXLEsXlsYSBvbHXFn3R1cnVsZHUuJywKICAgICdFeGlzdGluZ19Gb2xkZXInID0+ICdNZXZjdXQgS2xhc8O2cicsCiAgICAnQ29uZmlybV9Gb2xkZXJfZGVsJyA9PiAnQnUga2xhc8O2csO8IHZlIGnDp2luZGVraWxlcmkgc2lsbWVrIGlzdGVkacSfaW5pemRlbiBlbWluIG1pc2luaXo/JywKICAgICdSZXR1cm5fRmlsZXNfTGlzdCcgPT4gJ0Rvc3lhIExpc3Rlc2luZSBHZXJpIETDtm4nLAogICAgJ1ByZXZpZXcnID0+ICfDlm5pemxlbWUnLAogICAgJ0Rvd25sb2FkJyA9PiAnxLBuZGlyJywKICAgICdJbnNlcnRfRm9sZGVyX05hbWUnID0+ICdLbGFzw7ZyIEFkxLEgRWtsZTonLAogICAgJ1Jvb3QnID0+ICdrw7ZrJywKICAgICdSZW5hbWUnID0+ICdZZW5pZGVuIEFkbGFuZMSxcicsCiAgICAnQmFjaycgPT4gJ0dlcmknLAogICAgJ1ZpZXcnID0+ICdHw7Zyw7xuw7xtJywKICAgICdWaWV3X2xpc3QnID0+ICdMaXN0ZSBHw7Zyw7xuw7xtw7wnLAogICAgJ1ZpZXdfY29sdW1uc19saXN0JyA9PiAnS29sb25sdSBMaXN0ZSBHw7Zyw7xuw7xtw7wnLAogICAgJ1ZpZXdfYm94ZXMnID0+ICdLdXR1IEfDtnLDvG7DvG3DvCcsCiAgICAnVG9vbGJhcicgPT4gJ0FyYcOnIMOHdWJ1xJ91JywKICAgICdBY3Rpb25zJyA9PiAnRXlsZW1sZXInLAogICAgJ1JlbmFtZV9leGlzdGluZ19maWxlJyA9PiAnQnUgZG9zeWEgemF0ZW4gbWV2Y3V0JywKICAgICdSZW5hbWVfZXhpc3RpbmdfZm9sZGVyJyA9PiAnQnUga2xhc8O2ciB6YXRlbiBtZXZjdXQnLAogICAgJ0VtcHR5X25hbWUnID0+ICfEsHNpbSBBbGFuxLEgQm/Fny4nLAogICAgJ1RleHRfZmlsdGVyJyA9PiAnRmlsdHJlbGUuLi4nLAogICAgJ1N3aXBlX2hlbHAnID0+ICdTZcOnZW5la2xlcmkgZ8O2csO8bnTDvGxlbWVrIGnDp2luIGRvc3lhL2tsYXPDtnIgaXNtaW5lIHTEsWtsYXnEsW4nLAogICAgJ1VwbG9hZF9iYXNlJyA9PiAnTm9ybWFsIFnDvGtsZW1lJywKICAgICdVcGxvYWRfYmFzZV9oZWxwJyA9PiAiRG9zeWFsYXLEsSBzw7xyw7xrbGV5aXAgYsSxcmFrxLFuIChtb2Rlcm4gdGFyYXnEsWPEsWxhcikgdmV5YSBkb3N5YSBla2xleWUgdMSxa2xheWFyYWsgZG9zeWFsYXLEsSBla2xleWluIHZlIFnDvGtsZW1leWkgYmHFn2xhdCdhIHTEsWtsYXnEsW4uIFnDvGtsZW1lIHRhbWFtbGFuZMSxxJ/EsW5kYSwgJ0Rvc3lhIGxpc3Rlc2luZSBkw7ZuJyBkw7zEn21lc2luaSB0xLFrbGF5xLFuLiIsCiAgICAnVXBsb2FkX2FkZF9maWxlcycgPT4gJ0Rvc3lhKGxhcsSxKSBFa2xlJywKICAgICdVcGxvYWRfc3RhcnQnID0+ICdZw7xrbGVtZXlpIEJhxZ9sYXQnLAogICAgJ1VwbG9hZF9lcnJvcl9tZXNzYWdlcycgPT5hcnJheSgKICAgICAgICAxID0+ICdUaGUgdXBsb2FkZWQgZmlsZSBleGNlZWRzIHRoZSB1cGxvYWRfbWF4X2ZpbGVzaXplIGRpcmVjdGl2ZSBpbiBwaHAuaW5pJywKICAgICAgICAyID0+ICdUaGUgdXBsb2FkZWQgZmlsZSBleGNlZWRzIHRoZSBNQVhfRklMRV9TSVpFIGRpcmVjdGl2ZSB0aGF0IHdhcyBzcGVjaWZpZWQgaW4gdGhlIEhUTUwgZm9ybScsCiAgICAgICAgMyA9PiAnVGhlIHVwbG9hZGVkIGZpbGUgd2FzIG9ubHkgcGFydGlhbGx5IHVwbG9hZGVkJywKICAgICAgICA0ID0+ICdEb3N5YSBZw7xrbGVuZW1lZGknLAogICAgICAgIDYgPT4gJ0dlw6dpY2kgZG9zeWEgZWtzaWsnLAogICAgICAgIDcgPT4gJ0Rvc3lhIGRpc2tlIHlhesSxbGFtYWTEsScsCiAgICAgICAgOCA9PiAnUEhQIHV6YW50xLFzxLEgZG9zeWEgecO8a2xlbWV5aSBkdXJkdXJkdS4nLAogICAgICAgICdwb3N0X21heF9zaXplJyA9PiAnWcO8a2xlbmVuIGRvc3lhIHBocC5pbmkgZG9zeWFzxLFuZGFraSBwb3N0X21heF9zaXplIHnDtm5lcmdlc2luaSBhxZ/EsXlvcicsCiAgICAgICAgJ21heF9maWxlX3NpemUnID0+ICdEb3N5YSDDp29rIGLDvHnDvGsnLAogICAgICAgICdtaW5fZmlsZV9zaXplJyA9PiAnRG9zeWEgw6dvayBrw7zDp8O8aycsCiAgICAgICAgJ2FjY2VwdF9maWxlX3R5cGVzJyA9PiAnRG9zeWEgdMO8csO8bmUgaXppbiB2ZXJpbG1lZGknLAogICAgICAgICdtYXhfbnVtYmVyX29mX2ZpbGVzJyA9PiAnTWF4aW11bSBkb3N5YSBzYXnEsXPEsSBhxZ/EsWxkxLEnLAogICAgICAgICdtYXhfd2lkdGgnID0+ICdHw7Zyw7xudMO8IG1ha3NpbXVtIGdlbmnFn2xpxJ9pbmkgYcWfxLF5b3InLAogICAgICAgICdtaW5fd2lkdGgnID0+ICdSZXNpbSBtaW5pbXVtIGdlbmnFn2xpayBnZXJla3RpcmlyJywKICAgICAgICAnbWF4X2hlaWdodCcgPT4gJ0fDtnLDvG50w7wgbWFrc2ltdW0gecO8a3Nla2xpxJ9pbmkgYcWfxLF5b3InLAogICAgICAgICdtaW5faGVpZ2h0JyA9PiAnUmVzaW0gbWluaW11bSB5w7xrc2VrbGlrIGdlcmVrdGlyaXInLAogICAgICAgICdhYm9ydCcgPT4gJ0Rvc3lhIHnDvGtsZW1lIGlwdGFsIGVkaWxkaScsCiAgICAgICAgJ2ltYWdlX3Jlc2l6ZScgPT4gJ1Jlc2ltIHllbmlkZW4gYm95dXRsYW5kxLFyxLFsYW1hZMSxJwogICAgKSwKICAgICdVcGxvYWRfdXJsJyA9PiAnVVJM4oCZZGVuJywKICAgICdUeXBlX2RpcicgPT4gJ0RpemluJywKICAgICdUeXBlJyA9PiAnVMO8cicsCiAgICAnRGltZW5zaW9uJyA9PiAnRWJhdCcsCiAgICAnU2l6ZScgPT4gJ0JveXV0JywKICAgICdEYXRlJyA9PiAnVGFyaWgnLAogICAgJ0ZpbGVuYW1lJyA9PiAnRG9zeWEgQWTEsScsCiAgICAnT3BlcmF0aW9ucycgPT4gJ8SwxZ9sZW1sZXInLAogICAgJ0RhdGVfdHlwZScgPT4gJ2QtbS1ZJywKICAgICdPSycgPT4gJ1RhbWFtJywKICAgICdDYW5jZWwnID0+ICfEsHB0YWwnLAogICAgJ1NvcnRpbmcnID0+ICdTxLFyYWxhbWEnLAogICAgJ1Nob3dfdXJsJyA9PiAnVVJMIEfDtnN0ZXInLAogICAgJ0V4dHJhY3QnID0+ICdCdXJheWEgw4fEsWthcnQnLAogICAgJ0ZpbGVfaW5mbycgPT4gJ0Rvc3lhIEJpbGdpc2knLAogICAgJ0VkaXRfaW1hZ2UnID0+ICdSZXNtaSBEw7x6ZW5sZScsCiAgICAnRHVwbGljYXRlJyA9PiAnw4dvxJ9hbHQnLAogICAgJ0ZvbGRlcnMnID0+ICdLbGFzw7ZybGVyJywKICAgICdDb3B5JyA9PiAnS29weWFsYScsCiAgICAnQ3V0JyA9PiAnS2VzJywKICAgICdQYXN0ZScgPT4gJ1lhcMSxxZ90xLFyJywKICAgICdDQicgPT4gJ1Bhbm8nLCAvLyBjbGlwYm9hcmQKICAgICdQYXN0ZV9IZXJlJyA9PiAnQnUgZGl6aW5lIHlhcMSxxZ90xLFyxLFuJywKICAgICdQYXN0ZV9Db25maXJtJyA9PiAnU2l6IGJ1IGRpemluZSB5YXDEscWfdMSxcm1hayBpc3RlZGnEn2luaXpkZW4gZW1pbiBtaXNpbml6PyDDlm5jZWtpIGRvc3lhbGFyL2tsYXPDtnJsZXIgc2lsaW5lY2VrIHZlIHllcmluZSBidSBkb3N5YWxhci9rbGFzw7ZybGVyIHlhesSxbGFjYWt0xLFyLicsCiAgICAnUGFzdGVfRmFpbGVkJyA9PiAnRG9zeWFsYXLEsSB5YXDEscWfdMSxcm1hIGnFn2xlbWkgYmHFn2FyxLFzxLF6LicsCiAgICAnQ2xlYXJfQ2xpcGJvYXJkJyA9PiAnUGFub3l1IFRlbWl6bGUnLAogICAgJ0NsZWFyX0NsaXBib2FyZF9Db25maXJtJyA9PiAnUGFub3lhIHNpbG1layBpc3RlZGnEn2luaXpkZW4gZW1pbiBtaXNpbml6PycsCiAgICAnRmlsZXNfT05fQ2xpcGJvYXJkJyA9PiAnUGFub2RhIGRvc3lhbGFyIHZhcmTEsXIuJywKICAgICdDb3B5X0N1dF9TaXplX0xpbWl0JyA9PiAnU2XDp2lsZW4gZG9zeWFsYXIva2xhc8O2cmxlciBpw6dpbiDDp29rIGLDvHnDvGsgICVzLiBMaW1pdDogJWQgTUIvxLDFn2xlbWknLCAvLyAlcyA9IGN1dCBvciBjb3B5CiAgICAnQ29weV9DdXRfQ291bnRfTGltaXQnID0+ICdTaXogw6dvayBmYXpsYSBkb3N5YS9rbGFzw7ZyIHNlw6d0aW5peiAlcy4gTGltaXQ6JWQgRG9zeWFsYXIvxLDFn2xlbWxlcicsIC8vICVzID0gY3V0IG9yIGNvcHkKICAgICdDb3B5X0N1dF9Ob3RfQWxsb3dlZCcgPT4gJyVzIERvc3lhbGFyxLEgacOnaW4gaXppbiB2ZXJpbG1lei4nLCAvLyAlcygxKSA9IGN1dCBvciBjb3B5LCAlcygyKSA9IGZpbGVzIG9yIGZvbGRlcnMKICAgICdJbWFnZV9FZGl0b3JfTm9fU2F2ZScgPT4gJ0J1IGfDtnLDvG50w7wga2F5ZGVkaWxlbWVkaScsCiAgICAnSW1hZ2VfRWRpdG9yX0V4aXQnID0+ICJFeGl0IiwKICAgICdJbWFnZV9FZGl0b3JfU2F2ZScgPT4gIlNhdmUiLAogICAgJ1ppcF9Ob19FeHRyYWN0JyA9PiAnRMSxxZ9hIMOnxLFrYXJtYSBpxZ9sZW1pIHlhcMSxbGFtYWTEsS4gRG9zeWEgYm96dWsgb2xhYmlsaXIuJywKICAgICdaaXBfSW52YWxpZCcgPT4gJ0J1IGRvc3lhIHV6YW50xLFzxLEgZGVzdGVrbGVubWl5b3IuIEdlw6dlcmxpIFV6YW50xLFsYXI6IHppcCwgZ3osIHRhci4nLAogICAgJ0Rpcl9Ob19Xcml0ZScgPT4gJ1Nlw6d0acSfaW5peiBkaXppbiB5YXrEsWxhYmlsaXIgZGXEn2lsLicsCiAgICAnRnVuY3Rpb25fRGlzYWJsZWQnID0+ICclcyDEsMWfbGV2aSBzdW51Y3UgdGFyYWbEsW5kYW4gZGV2cmUgZMSxxZ/EsSBixLFyYWvEsWxkxLEuJywgLy8gJXMgPSBjdXQgb3IgY29weQogICAgJ0ZpbGVfUGVybWlzc2lvbicgPT4gJ0Rvc3lhIMSwemlubGVyaScsCiAgICAnRmlsZV9QZXJtaXNzaW9uX05vdF9BbGxvd2VkJyA9PiAnJXMgRG9zeWEgxLB6aW5sZXJpbmluIGRlxJ9pxZ90aXJpbG1lc2luZSBpemluIHZlcmlsbWl5b3IuJywgLy8gJXMgPSBmaWxlcyBvciBmb2xkZXJzCiAgICAnRmlsZV9QZXJtaXNzaW9uX1JlY3Vyc2l2ZScgPT4gJ0RlxJ9pxZ9saWtsZXIgdXlndWxhbnPEsW4gbcSxPycsCiAgICAnRmlsZV9QZXJtaXNzaW9uX1dyb25nX01vZGUnID0+ICJHaXJpbGVuIGl6aW4gbW9kdSBoYXRhbMSxLiIsCiAgICAnVXNlcicgPT4gJ0t1bGxhbsSxY8SxJywKICAgICdHcm91cCcgPT4gJ0dydXAnLAogICAgJ1llcycgPT4gJ0V2ZXQnLAogICAgJ05vJyA9PiAnSGF5xLFyJywKICAgICdMYW5nX05vdF9Gb3VuZCcgPT4gJ0RpbCBkb3N5YXPEsSBidWx1bmFtYWTEsS4nLAogICAgJ0xhbmdfQ2hhbmdlJyA9PiAnRGlsaSBkZcSfacWfdGlyJywKICAgICdGaWxlX05vdF9Gb3VuZCcgPT4gJ0Rvc3lhIGJ1bHVuYW1hZMSxLicsCiAgICAnRmlsZV9PcGVuX0VkaXRfTm90X0FsbG93ZWQnID0+ICdCdSBkb3N5YXnEsSAlcyBpem5pbml6IGJ1bHVubXV5b3IuJywgLy8gJXMgPSBvcGVuIG9yIGVkaXQKICAgICdFZGl0JyA9PiAnRMO8emVubGUnLAogICAgJ0VkaXRfRmlsZScgPT4gIkRvc3lhbsSxbiBpw6dlcmnEn2luaSBkw7x6ZW5sZSIsCiAgICAnRmlsZV9TYXZlX09LJyA9PiAiRG9zeWEgYmHFn2FyxLF5bGEga2F5ZGVkaWxkaS4iLAogICAgJ0ZpbGVfU2F2ZV9FcnJvcicgPT4gIkRvc3lhIGtheWRlZGlsaXJrZW4gYmlyIGhhdGEgb2x1xZ90dS4iLAogICAgJ05ld19GaWxlJyA9PiAnWWVuaSBEb3N5YScsCiAgICAnTm9fRXh0ZW5zaW9uJyA9PiAnTMO8dGZlbiBiaXIgZG9zeWEgdXphbnTEsXPEsSBla2xleWluaXouJywKICAgICdWYWxpZF9FeHRlbnNpb25zJyA9PiAnR2XDp2VybGkgZWtsZW50aWxlcjogJXMnLCAvLyAlcyA9IHR4dCxsb2cgZXRjLgogICAgJ1VwbG9hZF9tZXNzYWdlJyA9PiAiRHJvcCBmaWxlIGhlcmUgdG8gdXBsb2FkIiwKCiAgICAnU0VSVkVSIEVSUk9SJyA9PiAiU0VSVkVSIEVSUk9SIiwKICAgICdmb3JiaWRkZW4nID0+ICJGb3JiaWRlbiIsCiAgICAnd3JvbmcgcGF0aCcgPT4gIldyb25nIHBhdGgiLAogICAgJ3dyb25nIG5hbWUnID0+ICJXcm9uZyBuYW1lIiwKICAgICd3cm9uZyBleHRlbnNpb24nID0+ICJXcm9uZyBleHRlbnNpb24iLAogICAgJ3dyb25nIG9wdGlvbicgPT4gIldyb25nIG9wdGlvbiIsCiAgICAnd3JvbmcgZGF0YScgPT4gIldyb25nIGRhdGEiLAogICAgJ3dyb25nIGFjdGlvbicgPT4gIldyb25nIGFjdGlvbiIsCiAgICAnd3Jvbmcgc3ViLWFjdGlvbicgPT4gIldyb25nIHN1Yi1hY3RpbyIsCiAgICAnbm8gYWN0aW9uIHBhc3NlZCcgPT4gIk5vIGFjdGlvbiBwYXNzZWQiLAogICAgJ25vIHBhdGgnID0+ICJObyBwYXRoIiwKICAgICdubyBmaWxlJyA9PiAiTm8gZmlsZSIsCiAgICAndmlldyB0eXBlIG51bWJlciBtaXNzaW5nJyA9PiAiVmlldyB0eXBlIG51bWJlciBtaXNzaW5nIiwKICAgICdOb3QgZW5vdWdoIE1lbW9yeScgPT4gIk5vdCBlbm91Z2ggTWVtb3J5IiwKICAgICdtYXhfc2l6ZV9yZWFjaGVkJyA9PiAiWW91ciBpbWFnZSBmb2xkZXIgaGFzIHJlYWNoIGl0cyBtYXhpbWFsZSBzaXplIG9mICVkIE1CLiIsIC8vJWQgPSBtYXggb3ZlcmFsbCBzaXplCiAgICAnQicgPT4gIkIiLAogICAgJ0tCJyA9PiAiS0IiLAogICAgJ01CJyA9PiAiTUIiLAogICAgJ0dCJyA9PiAiR0IiLAogICAgJ1RCJyA9PiAiVEIiLAogICAgJ3RvdGFsIHNpemUnID0+ICJUb3RhbCBzaXplIiwKKTsK]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/lang/uk_UA.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJldHVybiBhcnJheSgKCiAgICAnU2VsZWN0JyA9PiAn0JLQuNCx0YDQsNGC0LgnLAogICAgJ0Rlc2VsZWN0X0FsbCcgPT4gJ0Rlc2VsZWN0IEFsbCcsCiAgICAnU2VsZWN0X0FsbCcgPT4gJ1NlbGVjdCBBbGwnLAogICAgJ0VyYXNlJyA9PiAn0JLQuNC00LDQu9C40YLQuCcsCiAgICAnT3BlbicgPT4gJ9CS0ZbQtNC60YDQuNGC0LgnLAogICAgJ0NvbmZpcm1fZGVsJyA9PiAn0JLQv9C10LLQvdC10L3Rliwg0YnQviDRhdC+0YfQtdGC0LUg0LLQuNC00LDQu9C40YLQuCDRhtC10Lkg0YTQsNC50Ls/JywKICAgICdBbGwnID0+ICfQktGB0ZYnLAogICAgJ0ZpbGVzJyA9PiAn0KTQsNC50LvQuCcsCiAgICAnSW1hZ2VzJyA9PiAn0JfQvtCx0YDQsNC20LXQvdC90Y8nLAogICAgJ0FyY2hpdmVzJyA9PiAn0JDRgNGF0ZbQstC4JywKICAgICdFcnJvcl9VcGxvYWQnID0+ICfQpNCw0LnQuywg0YnQviDQt9Cw0LLQsNC90YLQsNC20YPRlNGC0YzRgdGPINC/0LXRgNC10LLQuNGJ0YPRlCDQtNC+0LfQstC+0LvQtdC90LjQuSDRgNC+0LfQvNGW0YAuJywKICAgICdFcnJvcl9leHRlbnNpb24nID0+ICfQndC10L/RgNC40L/Rg9GB0YLQuNC80LjQuSDRhNC+0YDQvNCw0YIg0YTQsNC50LvRgy4nLAogICAgJ1VwbG9hZF9maWxlJyA9PiAn0JfQsNCy0LDQvdGC0LDQttC40YLQuCDRhNCw0LnQuycsCiAgICAnRmlsdGVycycgPT4gJ9Ck0ZbQu9GM0YLRgCcsCiAgICAnVmlkZW9zJyA9PiAn0JLRltC00LXQvicsCiAgICAnTXVzaWMnID0+ICfQnNGD0LfQuNC60LAnLAogICAgJ05ld19Gb2xkZXInID0+ICfQndC+0LLQsCDRgtC10LrQsCcsCiAgICAnRm9sZGVyX0NyZWF0ZWQnID0+ICfQotC10LrRgyDRg9GB0L/RltGI0L3QviDRgdGC0LLQvtGA0LXQvdC+JywKICAgICdFeGlzdGluZ19Gb2xkZXInID0+ICfQhtGB0L3Rg9GO0YfQsCDRgtC10LrQsCcsCiAgICAnQ29uZmlybV9Gb2xkZXJfZGVsJyA9PiAn0JLQv9C10LLQvdC10L3Rliwg0YnQviDRhdC+0YfQtdGC0LUg0LLQuNC00LDQu9C40YLQuCDRhtGOINGC0LXQutGDINGWINCy0YHRliDRhNCw0LnQu9C4INCyINC90ZbQuT8nLAogICAgJ1JldHVybl9GaWxlc19MaXN0JyA9PiAn0J/QvtCy0LXRgNC90YPRgtC40YHRjyDQtNC+INGB0L/QuNGB0LrRgyDRhNCw0LnQu9GW0LInLAogICAgJ1ByZXZpZXcnID0+ICfQn9C10YDQtdCz0LvRj9C0JywKICAgICdEb3dubG9hZCcgPT4gJ9CX0LDQstCw0L3RgtCw0LbQuNGC0LgnLAogICAgJ0luc2VydF9Gb2xkZXJfTmFtZScgPT4gJ9CS0LLQtdC00ZbRgtGMINGW0Lxg0Y8g0L/QsNC/0LrQuDonLAogICAgJ1Jvb3QnID0+ICfQmtC+0YDQtdC90LXQstCwINGC0LXQutCwJywKICAgICdSZW5hbWUnID0+ICfQn9C10YDQtdGW0LzQtdC90YPQstCw0YLQuCcsCiAgICAnQmFjaycgPT4gJ9C90LDQt9Cw0LQnLAogICAgJ1ZpZXcnID0+ICfQktC40LPQu9GP0LQnLAogICAgJ1ZpZXdfbGlzdCcgPT4gJ9Ch0L/QuNGB0L7QuicsCiAgICAnVmlld19jb2x1bW5zX2xpc3QnID0+ICfQodGC0L7QstC/0YfQuNC60LgnLAogICAgJ1ZpZXdfYm94ZXMnID0+ICfQn9C70LjRgtC60L7RjicsCiAgICAnVG9vbGJhcicgPT4gJ9Cf0LDQvdC10LvRjCcsCiAgICAnQWN0aW9ucycgPT4gJ9CU0ZbRlycsCiAgICAnUmVuYW1lX2V4aXN0aW5nX2ZpbGUnID0+ICfQpNCw0LnQuyDQstC20LUg0ZbRgdC90YPRlCcsCiAgICAnUmVuYW1lX2V4aXN0aW5nX2ZvbGRlcicgPT4gJ9Ci0LXQutCwINCy0LbQtSDRltGB0L3Rg9GUJywKICAgICdFbXB0eV9uYW1lJyA9PiAn0J3QtSDQt9Cw0L/QvtCy0L3QtdC90L4g0ZbQvGDRjycsCiAgICAnVGV4dF9maWx0ZXInID0+ICfRhNGW0LvRjNGC0YAnLAogICAgJ1N3aXBlX2hlbHAnID0+ICfQndCw0LLQtdC00ZbRgtGMINC90LAg0ZbQvGDRjyDRhNCw0LnQu9GDL9C/0LDQv9C60LgsINGJ0L7QsSDQv9C+0LHQsNGH0LjRgtC4INC+0L/RhtGW0ZcnLAogICAgJ1VwbG9hZF9iYXNlJyA9PiAn0J7RgdC90L7QstC90LUg0LfQsNCy0LDQvdGC0LDQttC10L3QvdGPJywKICAgICdVcGxvYWRfYmFzZV9oZWxwJyA9PiAiRHJhZyAmIERyb3AgZmlsZXMobW9kZXJuIGJyb3dzZXJzKSBvciBjbGljayBpbiB1cHBlciBidXR0b24gdG8gQWRkIHRoZSBmaWxlKHMpIGFuZCBjbGljayBvbiBTdGFydCB1cGxvYWQuIFdoZW4gdGhlIHVwbG9hZCBpcyBjb21wbGV0ZSwgY2xpY2sgdGhlICdSZXR1cm4gdG8gZmlsZXMgbGlzdCcgYnV0dG9uLiIsCiAgICAnVXBsb2FkX2FkZF9maWxlcycgPT4gJ0FkZCBmaWxlKHMpJywKICAgICdVcGxvYWRfc3RhcnQnID0+ICdTdGFydCB1cGxvYWQnLAogICAgJ1VwbG9hZF9lcnJvcl9tZXNzYWdlcycgPT5hcnJheSgKICAgICAgICAxID0+ICdUaGUgdXBsb2FkZWQgZmlsZSBleGNlZWRzIHRoZSB1cGxvYWRfbWF4X2ZpbGVzaXplIGRpcmVjdGl2ZSBpbiBwaHAuaW5pJywKICAgICAgICAyID0+ICdUaGUgdXBsb2FkZWQgZmlsZSBleGNlZWRzIHRoZSBNQVhfRklMRV9TSVpFIGRpcmVjdGl2ZSB0aGF0IHdhcyBzcGVjaWZpZWQgaW4gdGhlIEhUTUwgZm9ybScsCiAgICAgICAgMyA9PiAnVGhlIHVwbG9hZGVkIGZpbGUgd2FzIG9ubHkgcGFydGlhbGx5IHVwbG9hZGVkJywKICAgICAgICA0ID0+ICdObyBmaWxlIHdhcyB1cGxvYWRlZCcsCiAgICAgICAgNiA9PiAnTWlzc2luZyBhIHRlbXBvcmFyeSBmb2xkZXInLAogICAgICAgIDcgPT4gJ0ZhaWxlZCB0byB3cml0ZSBmaWxlIHRvIGRpc2snLAogICAgICAgIDggPT4gJ0EgUEhQIGV4dGVuc2lvbiBzdG9wcGVkIHRoZSBmaWxlIHVwbG9hZCcsCiAgICAgICAgJ3Bvc3RfbWF4X3NpemUnID0+ICdUaGUgdXBsb2FkZWQgZmlsZSBleGNlZWRzIHRoZSBwb3N0X21heF9zaXplIGRpcmVjdGl2ZSBpbiBwaHAuaW5pJywKICAgICAgICAnbWF4X2ZpbGVfc2l6ZScgPT4gJ0ZpbGUgaXMgdG9vIGJpZycsCiAgICAgICAgJ21pbl9maWxlX3NpemUnID0+ICdGaWxlIGlzIHRvbyBzbWFsbCcsCiAgICAgICAgJ2FjY2VwdF9maWxlX3R5cGVzJyA9PiAnRmlsZXR5cGUgbm90IGFsbG93ZWQnLAogICAgICAgICdtYXhfbnVtYmVyX29mX2ZpbGVzJyA9PiAnTWF4aW11bSBudW1iZXIgb2YgZmlsZXMgZXhjZWVkZWQnLAogICAgICAgICdtYXhfd2lkdGgnID0+ICdJbWFnZSBleGNlZWRzIG1heGltdW0gd2lkdGgnLAogICAgICAgICdtaW5fd2lkdGgnID0+ICdJbWFnZSByZXF1aXJlcyBhIG1pbmltdW0gd2lkdGgnLAogICAgICAgICdtYXhfaGVpZ2h0JyA9PiAnSW1hZ2UgZXhjZWVkcyBtYXhpbXVtIGhlaWdodCcsCiAgICAgICAgJ21pbl9oZWlnaHQnID0+ICdJbWFnZSByZXF1aXJlcyBhIG1pbmltdW0gaGVpZ2h0JywKICAgICAgICAnYWJvcnQnID0+ICdGaWxlIHVwbG9hZCBhYm9ydGVkJywKICAgICAgICAnaW1hZ2VfcmVzaXplJyA9PiAnRmFpbGVkIHRvIHJlc2l6ZSBpbWFnZScKICAgICksCiAgICAnVXBsb2FkX3VybCcgPT4gJ0Zyb20gdXJsJywKICAgICdUeXBlX2RpcicgPT4gJ9Ci0LXQutCwJywKICAgICdUeXBlJyA9PiAn0KLQuNC/JywKICAgICdEaW1lbnNpb24nID0+ICfQoNC+0LfQvNGW0YAnLAogICAgJ1NpemUnID0+ICfQntCxYNGU0LwnLAogICAgJ0RhdGUnID0+ICfQlNCw0YLQsCcsCiAgICAnRmlsZW5hbWUnID0+ICfQhtC8YNGPINGE0LDQudC70YMnLAogICAgJ09wZXJhdGlvbnMnID0+ICfQlNGW0ZcnLAogICAgJ0RhdGVfdHlwZScgPT4gJ2QtbS15JywKICAgICdPSycgPT4gJ09LJywKICAgICdDYW5jZWwnID0+ICfQktGW0LTQvNGW0L3QsCcsCiAgICAnU29ydGluZycgPT4gJ9Ch0L7RgNGC0YPQstCw0L3QvdGPJywKICAgICdTaG93X3VybCcgPT4gJ9Cf0L7QutCw0LfQsNGC0LggVVJMJywKICAgICdFeHRyYWN0JyA9PiAn0JLQuNC00L7QsdGD0YLQuCDRgtGD0YInLAogICAgJ0ZpbGVfaW5mbycgPT4gJ9CG0L3RhNC+INGE0LDQudC70LAnLAogICAgJ0VkaXRfaW1hZ2UnID0+ICfQoNC10LTQsNCz0YPQstCw0YLQuCDQt9C+0LHRgNCw0LbQtdC90L3RjycsCiAgICAnRHVwbGljYXRlJyA9PiAn0JTRg9Cx0LvRltC60LDRgtC4JywKICAgICdGb2xkZXJzJyA9PiAn0J/QsNC/0LrQuCcsCiAgICAnQ29weScgPT4gJ9Ca0L7Qv9GW0Y7QstCw0YLQuCcsCiAgICAnQ3V0JyA9PiAn0JLQuNGA0ZbQt9Cw0YLQuCcsCiAgICAnUGFzdGUnID0+ICfQktGB0YLQsNCy0LjRgtC4JywKICAgICdDQicgPT4gJ9CR0J4nLCAvLyBjbGlwYm9hcmQKICAgICdQYXN0ZV9IZXJlJyA9PiAn0JLRgdGC0LDQstC40YLQuCDQsiDRhtGOINGC0LXQutGDJywKICAgICdQYXN0ZV9Db25maXJtJyA9PiAn0JLQuCDQstC/0LXQstC90LXQvdGWLCDRidC+INGF0L7Rh9C10YLQtSDQstGB0YLQsNCy0LjRgtC4INCyINGG0Y4g0YLQtdC60YM/INCm0LUg0L/QtdGA0LXQt9Cw0L/QuNGI0LUg0LLRgdGWINGE0LDQudC70Lgv0L/QsNC/0LrQuCwg0Y/QutGJ0L4g0YLQsNC60ZYg0LHRg9C00YPRgtGMLicsCiAgICAnUGFzdGVfRmFpbGVkJyA9PiAn0J/QvtC80LjQu9C60LAg0LLRgdGC0LDQstC60Lgg0YTQsNC50LvRltCyJywKICAgICdDbGVhcl9DbGlwYm9hcmQnID0+ICfQntGH0LjRgdGC0LjRgtC4INCx0YPRhNC10YAg0L7QsdC80ZbQvdGDJywKICAgICdDbGVhcl9DbGlwYm9hcmRfQ29uZmlybScgPT4gJ9CS0Lgg0LLQv9C10LLQvdC10L3Rliwg0YnQviDRhdC+0YfQtdGC0LUg0L7Rh9C40YHRgtC40YLQuCDQsdGD0YTQtdGAINC+0LHQvNGW0L3Rgz8nLAogICAgJ0ZpbGVzX09OX0NsaXBib2FyZCcgPT4gJ9Cd0LXQvNCw0ZQg0YTQsNC50LvRltCyINGDINCx0YPRhNC10YDRliDQvtCx0LzRltC90YMuJywKICAgICdDb3B5X0N1dF9TaXplX0xpbWl0JyA9PiAn0JLQuNCx0YDQsNC90ZYg0YTQsNC50LvQuC/Qv9Cw0L/QutC4INC30LDQstC10LvQuNC60ZYg0LTQu9GPICVzLiDQntCx0LzQtdC20LXQvdC90Y86ICVkIE1CL9C+0L/QtdGA0LDRhtGW0Y4nLCAvLyAlcyA9IGN1dCBvciBjb3B5CiAgICAnQ29weV9DdXRfQ291bnRfTGltaXQnID0+ICfQktC4INCy0LjQsdGA0LDQu9C4INC30LDQsdCw0LPQsNGC0L4g0YTQsNC50LvRltCyL9C/0LDQv9C+0Log0LTQu9GPICVzLiDQntCx0LzQtdC20LXQvdC90Y86ICVkINGE0LDQudC70ZbQsi/QvtC/0LXRgNCw0YbRltGOJywgLy8gJXMgPSBjdXQgb3IgY29weQogICAgJ0NvcHlfQ3V0X05vdF9BbGxvd2VkJyA9PiAn0KMg0LLQsNGBINC90LXQvNCw0ZQg0L/RgNCw0LIg0LTQvtGB0YLRg9C/0YMg0LTQu9GPICVzINGE0LDQudC70ZbQsi4nLCAvLyAlcygxKSA9IGN1dCBvciBjb3B5LCAlcygyKSA9IGZpbGVzIG9yIGZvbGRlcnMKICAgICdJbWFnZV9FZGl0b3JfTm9fU2F2ZScgPT4gJ9Cd0LXQvNC+0LbQu9C40LLQviDQt9Cx0LXRgNC10LPRgtC4INC30L7QsdGA0LDQttC10L3QvdGPJywKICAgICdJbWFnZV9FZGl0b3JfRXhpdCcgPT4gIkV4aXQiLAogICAgJ0ltYWdlX0VkaXRvcl9TYXZlJyA9PiAiU2F2ZSIsCiAgICAnWmlwX05vX0V4dHJhY3QnID0+ICfQndC10LzQvtC20LvQuNCy0L4g0LLQuNC00L7QsdGD0YLQuC4g0KTQsNC50Lsg0LzQvtC20LUg0LHRg9GC0Lgg0L/QvtGI0LrQvtC00LbQtdC90LjQvCcsCiAgICAnWmlwX0ludmFsaWQnID0+ICfQptC1INGA0L7Qt9GI0LjRgNC10L3QvdGPINC90LUg0L/RltC00YLRgNC40LzRg9GU0YLRjNGB0Y8uINCc0L7QttC70LjQstGWOiB6aXAsIGd6LCB0YXIuJywKICAgICdEaXJfTm9fV3JpdGUnID0+ICfQntCx0YDQsNC90LAg0YLQtdC60LAg0LfQsNGF0LjRidC10L3QsCDQstGW0LQg0LfQsNC/0LjRgdGDLicsCiAgICAnRnVuY3Rpb25fRGlzYWJsZWQnID0+ICfQpNGD0L3QutGG0ZbRjyAlcyDQt9Cw0LHQvtGA0L7QvdC10L3QsCDRgdC10YDQstC10YDQvtC8LicsIC8vICVzID0gY3V0IG9yIGNvcHkKICAgICdGaWxlX1Blcm1pc3Npb24nID0+ICfQn9GA0LDQstCwINC00L7RgdGC0YPQv9GDJywKICAgICdGaWxlX1Blcm1pc3Npb25fTm90X0FsbG93ZWQnID0+ICfQl9C80ZbQvdCwINC/0YDQsNCyINC00L7RgdGC0YPQv9GDINC00LvRjyAlcyDQt9Cw0LHQvtGA0L7QvdC10L3QsC4nLCAvLyAlcyA9IGZpbGVzIG9yIGZvbGRlcnMKICAgICdGaWxlX1Blcm1pc3Npb25fUmVjdXJzaXZlJyA9PiAn0JfQsNGB0YLQvtGB0YPQstCw0YLQuCDRgNC10LrRg9GA0YHQuNCy0L3Qvj8nLAogICAgJ0ZpbGVfUGVybWlzc2lvbl9Xcm9uZ19Nb2RlJyA9PiAi0J3QsNC00LDQvdGLINC/0YDQsNCy0LAg0LTQvtGB0YLRg9C/0YMg0L3QtdCy0ZbRgNC90ZYuIiwKICAgICdVc2VyJyA9PiAn0JrQvtGA0LjRgdGC0YPQstCw0YcnLAogICAgJ0dyb3VwJyA9PiAn0JPRgNGD0L/QsCcsCiAgICAnWWVzJyA9PiAn0KLQsNC6JywKICAgICdObycgPT4gJ9Cd0ZYnLAogICAgJ0xhbmdfTm90X0ZvdW5kJyA9PiAn0J3QtSDQvNC+0LbRgyDQt9C90LDQudGC0Lgg0LzQvtCy0YMuJywKICAgICdMYW5nX0NoYW5nZScgPT4gJ9CX0LzRltC90LAg0LzQvtCy0LgnLAogICAgJ0ZpbGVfTm90X0ZvdW5kJyA9PiAn0J3QtSDQvNC+0LbRgyDQt9C90LDQudGC0Lgg0YTQsNC50LsuJywKICAgICdGaWxlX09wZW5fRWRpdF9Ob3RfQWxsb3dlZCcgPT4gJ9CjINCy0LDRgSDQvdC10LzQsNGUINC/0YDQsNCyINC00LvRjyDQstGW0LTQutGA0LjRgtGC0Y8g0YbRjNC+0LPQviDRhNCw0LnQu9GDICVzLicsIC8vICVzID0gb3BlbiBvciBlZGl0CiAgICAnRWRpdCcgPT4gJ9Cg0LXQtNCw0LPRg9Cy0LDRgtC4JywKICAgICdFZGl0X0ZpbGUnID0+ICLQoNC10LTQsNCz0YPQstCw0YLQuCDQstC80ZbRgdGCINGE0LDQudC70YMiLAogICAgJ0ZpbGVfU2F2ZV9PSycgPT4gItCk0LDQudC7INGD0YHQv9GW0YjQvdC+INC30LHQtdGA0LXQttC10L3Qvi4iLAogICAgJ0ZpbGVfU2F2ZV9FcnJvcicgPT4gItCS0LjQvdC40LrQu9CwINC/0L7QvNC40LvQutCwINC/0YDQuCDQt9Cx0LXRgNC10LbQtdC90L3RliDRhNCw0LnQu9GDLiIsCiAgICAnTmV3X0ZpbGUnID0+ICfQndC+0LLQuNC5INGE0LDQudC7JywKICAgICdOb19FeHRlbnNpb24nID0+ICfQktCw0Lwg0L3QtdC+0LHRhdGW0LTQvdC+INC00L7QtNCw0YLQuCDRgNC+0LfRiNC40YDQtdC90L3RjyDRhNCw0LnQu9GDLicsCiAgICAnVmFsaWRfRXh0ZW5zaW9ucycgPT4gJ9CU0L7Qt9Cy0L7Qu9C10L3RliDRgNC+0LfRiNC40YDQtdC90L3RjzogJXMnLCAvLyAlcyA9IHR4dCxsb2cgZXRjLgogICAgJ1VwbG9hZF9tZXNzYWdlJyA9PiAi0J/QtdGA0LXRgtGP0LPQvdGW0YLRjCDRgdGO0LTQuCDRhNCw0LnQuyDQtNC70Y8g0LfQsNCy0LDQvdGC0LDQttC10L3QvdGPIiwKCiAgICAnU0VSVkVSIEVSUk9SJyA9PiAi0J/QntCc0JjQm9Ca0JAg0KHQldCg0JLQldCg0JAiLAogICAgJ2ZvcmJpZGRlbicgPT4gItCX0LDQsdC+0YDQvtC90LXQvdC+IiwKICAgICd3cm9uZyBwYXRoJyA9PiAi0KXQuNCx0L3QuNC5INGI0LvRj9GFIiwKICAgICd3cm9uZyBuYW1lJyA9PiAi0KXQuNCx0L3QtSDRltC8YNGPIiwKICAgICd3cm9uZyBleHRlbnNpb24nID0+ICLQpdC40LHQvdC1INGA0L7Qt9GI0LjRgNC10L3QvdGPIiwKICAgICd3cm9uZyBvcHRpb24nID0+ICLQpdC40LHQvdCwINC+0L/QtdGA0LDRhtGW0Y8iLAogICAgJ3dyb25nIGRhdGEnID0+ICLQpdC40LHQvdGWINC00LDQvdGWIiwKICAgICd3cm9uZyBhY3Rpb24nID0+ICLQpdC40LHQvdCwINC00ZbRjyIsCiAgICAnd3Jvbmcgc3ViLWFjdGlvbicgPT4gItCl0LjQsdC90LAg0L/RltC0LdC00ZbRjyIsCiAgICAnbm8gYWN0aW9uIHBhc3NlZCcgPT4gItCW0L7QtNC90L7RlyDQtNGW0Zcg0L3QtSDQv9C10YDQtdC00LDQvdC+IiwKICAgICdubyBwYXRoJyA9PiAi0J3QtdC80LDRlCDRiNC70Y/RhdGDIiwKICAgICdubyBmaWxlJyA9PiAi0J3QtdC80LDRlCDRhNCw0LnQu9GDIiwKICAgICd2aWV3IHR5cGUgbnVtYmVyIG1pc3NpbmcnID0+ICLQktGW0LTRgdGD0YLQvdGW0Lkg0L3QvtC80LXRgCDRgtC40L/RgyDQv9C10YDQtdCz0LvRj9C00YMiLAogICAgJ05vdCBlbm91Z2ggTWVtb3J5JyA9PiAi0J3QtdC00L7RgdGC0LDRgtC90YzQviDQv9Cw0Lxg0Y/RgtGWIiwKICAgICdtYXhfc2l6ZV9yZWFjaGVkJyA9PiAi0JLQsNGI0LAg0YLQtdC60LAg0LTQvtGB0Y/Qs9C70LAg0LzQsNC60YHQuNC80LDQu9GM0L3QvtCz0L4g0LvRltC80ZbRgtGDINGDICVkINCc0LEuIiwgLy8lZCA9IG1heCBvdmVyYWxsIHNpemUKICAgICdCJyA9PiAi0JEiLAogICAgJ0tCJyA9PiAi0JrQsSIsCiAgICAnTUInID0+ICLQnNCxIiwKICAgICdHQicgPT4gItCT0LEiLAogICAgJ1RCJyA9PiAi0KLQsSIsCiAgICAndG90YWwgc2l6ZScgPT4gItCX0LDQs9Cw0LvRjNC90LjQuSDRgNC+0LfQvNGW0YAiLAopOwo=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/lang/vi.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJldHVybiBhcnJheSgKCiAgICAnU2VsZWN0JyA9PiAnQ2jhu41uJywKICAgICdEZXNlbGVjdF9BbGwnID0+ICdEZXNlbGVjdCBBbGwnLAogICAgJ1NlbGVjdF9BbGwnID0+ICdTZWxlY3QgQWxsJywKICAgICdFcmFzZScgPT4gJ1jDs2EnLAogICAgJ09wZW4nID0+ICdN4bufJywKICAgICdDb25maXJtX2RlbCcgPT4gJ0LhuqFuIGPDsyBjaOG6r2MgY2jhuq9uIG114buRbiB4w7NhIGZpbGUgbsOgeSBraMO0bmc/JywKICAgICdBbGwnID0+ICdU4bqldCBj4bqjJywKICAgICdGaWxlcycgPT4gJ0ZpbGUnLAogICAgJ0ltYWdlcycgPT4gJ0ltYWdlcycsCiAgICAnQXJjaGl2ZXMnID0+ICdBcmNoaXZlcycsCiAgICAnRXJyb3JfVXBsb2FkJyA9PiAnRmlsZSDEkcaw4bujYyB1cGxvYWQgdsaw4bujdCBxdcOhIGR1bmcgbMaw4bujbmcgY2hvIHBow6lwLicsCiAgICAnRXJyb3JfZXh0ZW5zaW9uJyA9PiAnxJDhu4tuaCBk4bqhbmcgZmlsZSBraMO0bmcgxJHGsOG7o2MgY2jhuqVwIG5o4bqtbi4nLAogICAgJ1VwbG9hZF9maWxlJyA9PiAnVXBsb2FkJywKICAgICdGaWx0ZXJzJyA9PiAnTOG7jWMnLAogICAgJ1ZpZGVvcycgPT4gJ1ZpZGVvcycsCiAgICAnTXVzaWMnID0+ICdNdXNpYycsCiAgICAnTmV3X0ZvbGRlcicgPT4gJ1ThuqFvIHRoxrAgbeG7pWMnLAogICAgJ0ZvbGRlcl9DcmVhdGVkJyA9PiAnVGjGsCBt4bulYyDEkcOjIMSRxrDhu6NjIHThuqFvJywKICAgICdFeGlzdGluZ19Gb2xkZXInID0+ICdUaMawIG3hu6VjIMSRw6MgdOG7k24gdOG6oWknLAogICAgJ0NvbmZpcm1fRm9sZGVyX2RlbCcgPT4gJ0LhuqFuIGPDsyBjaOG6r2MgY2jhuq9uIG114buRbiB4w7NhIFRoxrAgbeG7pWMgbsOgeSBjw7luZyB24bubaSBt4buNaSB0aOG7qSBiw6puIHRyb25nPycsCiAgICAnUmV0dXJuX0ZpbGVzX0xpc3QnID0+ICdRdWF5IGzhuqFpIGRhbmggc8OhY2ggZmlsZScsCiAgICAnUHJldmlldycgPT4gJ1ByZXZpZXcnLAogICAgJ0Rvd25sb2FkJyA9PiAnRG93bmxvYWQnLAogICAgJ0luc2VydF9Gb2xkZXJfTmFtZScgPT4gJ05o4bqtcCB0w6puIHRoxrAgbeG7pWM6JywKICAgICdSb290JyA9PiAncm9vdCcsCiAgICAnUmVuYW1lJyA9PiAnxJDhu5VpIHTDqm4nLAogICAgJ0JhY2snID0+ICdiYWNrJywKICAgICdWaWV3JyA9PiAnWGVtJywKICAgICdWaWV3X2xpc3QnID0+ICdYZW0gZOG6oW5nIGRhbmggc8OhY2gnLAogICAgJ1ZpZXdfY29sdW1uc19saXN0JyA9PiAnWGVtIGThuqFuZyBj4buZdCcsCiAgICAnVmlld19ib3hlcycgPT4gJ1hlbSBk4bqhbmcgbMaw4bubaScsCiAgICAnVG9vbGJhcicgPT4gJ1RoYW5oIGPDtG5nIGPhu6UnLAogICAgJ0FjdGlvbnMnID0+ICdBY3Rpb25zJywKICAgICdSZW5hbWVfZXhpc3RpbmdfZmlsZScgPT4gJ0ZpbGUgbsOgeSDEkcOjIHThu5NuIHThuqFpJywKICAgICdSZW5hbWVfZXhpc3RpbmdfZm9sZGVyJyA9PiAnVGjGsCBt4bulYyBuw6B5IMSRw6MgdOG7k24gdOG6oWknLAogICAgJ0VtcHR5X25hbWUnID0+ICdUw6puIMSR4buDIHRy4buRbmcnLAogICAgJ1RleHRfZmlsdGVyJyA9PiAnTOG7jWMgdGhlbyB0w6puJywKICAgICdTd2lwZV9oZWxwJyA9PiAnU3dpcGUgdGhlIG5hbWUgb2YgZmlsZS9mb2xkZXIgdG8gc2hvdyBvcHRpb25zJywKICAgICdVcGxvYWRfYmFzZScgPT4gJ1VwbG9hZCB0aMO0bmcgdGjGsOG7nW5nJywKICAgICdVcGxvYWRfYmFzZV9oZWxwJyA9PiAiRHJhZyAmIERyb3AgZmlsZXMobW9kZXJuIGJyb3dzZXJzKSBvciBjbGljayBpbiB1cHBlciBidXR0b24gdG8gQWRkIHRoZSBmaWxlKHMpIGFuZCBjbGljayBvbiBTdGFydCB1cGxvYWQuIFdoZW4gdGhlIHVwbG9hZCBpcyBjb21wbGV0ZSwgY2xpY2sgdGhlICdSZXR1cm4gdG8gZmlsZXMgbGlzdCcgYnV0dG9uLiIsCiAgICAnVXBsb2FkX2FkZF9maWxlcycgPT4gJ0FkZCBmaWxlKHMpJywKICAgICdVcGxvYWRfc3RhcnQnID0+ICdTdGFydCB1cGxvYWQnLAogICAgJ1VwbG9hZF9lcnJvcl9tZXNzYWdlcycgPT5hcnJheSgKICAgICAgICAxID0+ICdUaGUgdXBsb2FkZWQgZmlsZSBleGNlZWRzIHRoZSB1cGxvYWRfbWF4X2ZpbGVzaXplIGRpcmVjdGl2ZSBpbiBwaHAuaW5pJywKICAgICAgICAyID0+ICdUaGUgdXBsb2FkZWQgZmlsZSBleGNlZWRzIHRoZSBNQVhfRklMRV9TSVpFIGRpcmVjdGl2ZSB0aGF0IHdhcyBzcGVjaWZpZWQgaW4gdGhlIEhUTUwgZm9ybScsCiAgICAgICAgMyA9PiAnVGhlIHVwbG9hZGVkIGZpbGUgd2FzIG9ubHkgcGFydGlhbGx5IHVwbG9hZGVkJywKICAgICAgICA0ID0+ICdObyBmaWxlIHdhcyB1cGxvYWRlZCcsCiAgICAgICAgNiA9PiAnTWlzc2luZyBhIHRlbXBvcmFyeSBmb2xkZXInLAogICAgICAgIDcgPT4gJ0ZhaWxlZCB0byB3cml0ZSBmaWxlIHRvIGRpc2snLAogICAgICAgIDggPT4gJ0EgUEhQIGV4dGVuc2lvbiBzdG9wcGVkIHRoZSBmaWxlIHVwbG9hZCcsCiAgICAgICAgJ3Bvc3RfbWF4X3NpemUnID0+ICdUaGUgdXBsb2FkZWQgZmlsZSBleGNlZWRzIHRoZSBwb3N0X21heF9zaXplIGRpcmVjdGl2ZSBpbiBwaHAuaW5pJywKICAgICAgICAnbWF4X2ZpbGVfc2l6ZScgPT4gJ0ZpbGUgaXMgdG9vIGJpZycsCiAgICAgICAgJ21pbl9maWxlX3NpemUnID0+ICdGaWxlIGlzIHRvbyBzbWFsbCcsCiAgICAgICAgJ2FjY2VwdF9maWxlX3R5cGVzJyA9PiAnRmlsZXR5cGUgbm90IGFsbG93ZWQnLAogICAgICAgICdtYXhfbnVtYmVyX29mX2ZpbGVzJyA9PiAnTWF4aW11bSBudW1iZXIgb2YgZmlsZXMgZXhjZWVkZWQnLAogICAgICAgICdtYXhfd2lkdGgnID0+ICdJbWFnZSBleGNlZWRzIG1heGltdW0gd2lkdGgnLAogICAgICAgICdtaW5fd2lkdGgnID0+ICdJbWFnZSByZXF1aXJlcyBhIG1pbmltdW0gd2lkdGgnLAogICAgICAgICdtYXhfaGVpZ2h0JyA9PiAnSW1hZ2UgZXhjZWVkcyBtYXhpbXVtIGhlaWdodCcsCiAgICAgICAgJ21pbl9oZWlnaHQnID0+ICdJbWFnZSByZXF1aXJlcyBhIG1pbmltdW0gaGVpZ2h0JywKICAgICAgICAnYWJvcnQnID0+ICdGaWxlIHVwbG9hZCBhYm9ydGVkJywKICAgICAgICAnaW1hZ2VfcmVzaXplJyA9PiAnRmFpbGVkIHRvIHJlc2l6ZSBpbWFnZScKICAgICksCiAgICAnVXBsb2FkX3VybCcgPT4gJ0Zyb20gdXJsJywKICAgICdUeXBlX2RpcicgPT4gJ2RpcicsCiAgICAnVHlwZScgPT4gJ0xv4bqhaSBGaWxlJywKICAgICdEaW1lbnNpb24nID0+ICdLw61jaCB0aMaw4bubYycsCiAgICAnU2l6ZScgPT4gJ1NpemUnLAogICAgJ0RhdGUnID0+ICdOZ8OgeSB04bqhbycsCiAgICAnRmlsZW5hbWUnID0+ICdUw6puIEZpbGUnLAogICAgJ09wZXJhdGlvbnMnID0+ICdUw7l5IGNo4buNbicsCiAgICAnRGF0ZV90eXBlJyA9PiAneS1tLWQnLAogICAgJ09LJyA9PiAnT0snLAogICAgJ0NhbmNlbCcgPT4gJ0jhu6d5JywKICAgICdTb3J0aW5nJyA9PiAnc29ydGluZycsCiAgICAnU2hvd191cmwnID0+ICdYZW0gVVJMJywKICAgICdFeHRyYWN0JyA9PiAnR2nhuqNpIG7DqW4gdOG6oWkgxJHDonknLAogICAgJ0ZpbGVfaW5mbycgPT4gJ1Row7RuZyB0aW4gZmlsZScsCiAgICAnRWRpdF9pbWFnZScgPT4gJ1Phu61hIGltYWdlJywKICAgICdEdXBsaWNhdGUnID0+ICdOaMOibiBi4bqjbicsCiAgICAnRm9sZGVycycgPT4gJ1RoxrAgbeG7pWMnLAogICAgJ0NvcHknID0+ICdDb3B5JywKICAgICdDdXQnID0+ICdDdXQnLAogICAgJ1Bhc3RlJyA9PiAnUGFzdGUnLAogICAgJ0NCJyA9PiAnQ0InLCAvLyBjbGlwYm9hcmQKICAgICdQYXN0ZV9IZXJlJyA9PiAnUGFzdGUgdsOgbyB0aMawIG3hu6VjIG7DoHknLAogICAgJ1Bhc3RlX0NvbmZpcm0nID0+ICdC4bqhbiBjw7MgY2jhuq9jIGNo4bqvbiBtdeG7kW4gUGFzdGUgdsOgbyB0aMawIG3hu6VjIG7DoHk/IFZp4buHYyBuw6B5IHPhur0gZ2hlIMSRw6ggbMOqbiBjw6FvIGZpbGUvZm9sZGVyIGPFqSBu4bq/dSBjw7MuJywKICAgICdQYXN0ZV9GYWlsZWQnID0+ICdM4buXaSBraGkgcGFzdGUgZmlsZScsCiAgICAnQ2xlYXJfQ2xpcGJvYXJkJyA9PiAnWMOzYSBjbGlwYm9hcmQnLAogICAgJ0NsZWFyX0NsaXBib2FyZF9Db25maXJtJyA9PiAnQuG6oW4gY8OzIGNo4bqvYyBjaOG6r24gbXXhu5FuIHjDs2EgY2xpcGJvYXJkPycsCiAgICAnRmlsZXNfT05fQ2xpcGJvYXJkJyA9PiAnRGFuaCBzw6FjaCBmaWxlIHRyb25nIGNsaXBib2FyZC4nLAogICAgJ0NvcHlfQ3V0X1NpemVfTGltaXQnID0+ICdGaWxlL2ZvbGRlciDEkcaw4bujYyBjaOG7jW4gcXXDoSBs4bubbiDEkeG7gyAlcy4gR2nhu5tpIGjhuqFuOiAlZCBNQi90aGFvIHTDoWMnLCAvLyAlcyA9IGN1dCBvciBjb3B5CiAgICAnQ29weV9DdXRfQ291bnRfTGltaXQnID0+ICdC4bqhbiDEkcOjIGNo4buNbiBxdcOhIG5oaeG7gXUgZmlsZS9mb2xkZXIgxJHhu4MgJXMuIEdp4bubaSBo4bqhbjogJWQgZmlsZXMvdGhhbyB0w6FjJywgLy8gJXMgPSBjdXQgb3IgY29weQogICAgJ0NvcHlfQ3V0X05vdF9BbGxvd2VkJyA9PiAnQuG6oW4ga2jDtG5nIMSRxrDhu6NjIHBow6lwIMSR4buDICVzIGZpbGUuJywgLy8gJXMoMSkgPSBjdXQgb3IgY29weSwgJXMoMikgPSBmaWxlcyBvciBmb2xkZXJzCiAgICAnSW1hZ2VfRWRpdG9yX05vX1NhdmUnID0+ICdLaMO0bmcgdGjhu4MgbMawdSBpbWFnZScsCiAgICAnSW1hZ2VfRWRpdG9yX0V4aXQnID0+ICJFeGl0IiwKICAgICdJbWFnZV9FZGl0b3JfU2F2ZScgPT4gIlNhdmUiLAogICAgJ1ppcF9Ob19FeHRyYWN0JyA9PiAnS2jDtG5nIHRo4buDIGdp4bqjaSBuw6luLiBGaWxlIGPDsyB0aOG7gyBi4buLIGzhu5dpLicsCiAgICAnWmlwX0ludmFsaWQnID0+ICfEkOG7i25oIGThuqFuZyBuw6B5IGtow7RuZyDEkcaw4bujYyBo4buXIHRy4bujLiBDaOG6pXAgbmjhuq1uOiB6aXAsIGd6LCB0YXIuJywKICAgICdEaXJfTm9fV3JpdGUnID0+ICdUaMawIG3hu6VjIGLhuqFuIGNo4buNbiBraMO0bmcgY2hvIHBow6lwIGdoaSBk4buvIGxp4buHdSB2w6BvLicsCiAgICAnRnVuY3Rpb25fRGlzYWJsZWQnID0+ICdDaOG7qWMgbsSDbmcgJXMgxJHDoyBi4buLIFThuq90IGLGoWkgc2VydmVyLicsIC8vICVzID0gY3V0IG9yIGNvcHkKICAgICdGaWxlX1Blcm1pc3Npb24nID0+ICdGaWxlIHBlcm1pc3Npb24nLAogICAgJ0ZpbGVfUGVybWlzc2lvbl9Ob3RfQWxsb3dlZCcgPT4gJ8SQ4buVaSBwZXJtaXNzaW9ucyBj4bunYSAlcyBraMO0bmcgxJHGsOG7o2MgY2jhuqVwIG5o4bqtbi4nLCAvLyAlcyA9IGZpbGVzIG9yIGZvbGRlcnMKICAgICdGaWxlX1Blcm1pc3Npb25fUmVjdXJzaXZlJyA9PiAnQXBwbHkgcmVjdXJzaXZlbHk/JywKICAgICdGaWxlX1Blcm1pc3Npb25fV3JvbmdfTW9kZScgPT4gIkPDoWMgcGVybWlzc2lvbiBi4bqhbiBjaOG7jW4ga2jDtG5nIGNow61uaCB4w6FjLiIsCiAgICAnVXNlcicgPT4gJ1VzZXInLAogICAgJ0dyb3VwJyA9PiAnR3JvdXAnLAogICAgJ1llcycgPT4gJ1llcycsCiAgICAnTm8nID0+ICdObycsCiAgICAnTGFuZ19Ob3RfRm91bmQnID0+ICdLaMO0bmcgdMOsbSB0aOG6pXkgbmfDtG4gbmfhu68uJywKICAgICdMYW5nX0NoYW5nZScgPT4gJ8SQ4buVaSBuZ8O0biBuZ+G7rycsCiAgICAnRmlsZV9Ob3RfRm91bmQnID0+ICdLaMO0bmcgdMOsbSB0aOG6pXkgZmlsZS4nLAogICAgJ0ZpbGVfT3Blbl9FZGl0X05vdF9BbGxvd2VkJyA9PiAnQuG6oW4ga2jDtG5nIMSRxrDhu6NjIHBow6lwIMSR4buDICVzIGZpbGUgbsOgeS4nLCAvLyAlcyA9IG9wZW4gb3IgZWRpdAogICAgJ0VkaXQnID0+ICdT4butYScsCiAgICAnRWRpdF9GaWxlJyA9PiAiU+G7rWEgbuG7mWkgZHVuZyBmaWxlIiwKICAgICdGaWxlX1NhdmVfT0snID0+ICJGaWxlIMSRxrDhu6NjIGzGsHUgdGjDoG5oIGPDtG5nLiIsCiAgICAnRmlsZV9TYXZlX0Vycm9yJyA9PiAixJDDoyBjw7MgbOG7l2kga2hpIGzGsHUgZmlsZS4iLAogICAgJ05ld19GaWxlJyA9PiAnVOG6oW8gRmlsZSBt4bubaScsCiAgICAnTm9fRXh0ZW5zaW9uJyA9PiAnWW91IGhhdmUgdG8gYWRkIGEgZmlsZSBleHRlbnNpb24uJywKICAgICdWYWxpZF9FeHRlbnNpb25zJyA9PiAnRXh0ZW5zaW9uIMSRxrDhu6NjIGNo4bqlcCBuaOG6rW46ICVzJywgLy8gJXMgPSB0eHQsbG9nIGV0Yy4KICAgICdVcGxvYWRfbWVzc2FnZScgPT4gIkRyb3AgZmlsZSBoZXJlIHRvIHVwbG9hZCIsCgogICAgJ1NFUlZFUiBFUlJPUicgPT4gIlNFUlZFUiBFUlJPUiIsCiAgICAnZm9yYmlkZGVuJyA9PiAiRm9yYmlkZW4iLAogICAgJ3dyb25nIHBhdGgnID0+ICJXcm9uZyBwYXRoIiwKICAgICd3cm9uZyBuYW1lJyA9PiAiV3JvbmcgbmFtZSIsCiAgICAnd3JvbmcgZXh0ZW5zaW9uJyA9PiAiV3JvbmcgZXh0ZW5zaW9uIiwKICAgICd3cm9uZyBvcHRpb24nID0+ICJXcm9uZyBvcHRpb24iLAogICAgJ3dyb25nIGRhdGEnID0+ICJXcm9uZyBkYXRhIiwKICAgICd3cm9uZyBhY3Rpb24nID0+ICJXcm9uZyBhY3Rpb24iLAogICAgJ3dyb25nIHN1Yi1hY3Rpb24nID0+ICJXcm9uZyBzdWItYWN0aW8iLAogICAgJ25vIGFjdGlvbiBwYXNzZWQnID0+ICJObyBhY3Rpb24gcGFzc2VkIiwKICAgICdubyBwYXRoJyA9PiAiTm8gcGF0aCIsCiAgICAnbm8gZmlsZScgPT4gIk5vIGZpbGUiLAogICAgJ3ZpZXcgdHlwZSBudW1iZXIgbWlzc2luZycgPT4gIlZpZXcgdHlwZSBudW1iZXIgbWlzc2luZyIsCiAgICAnTm90IGVub3VnaCBNZW1vcnknID0+ICJOb3QgZW5vdWdoIE1lbW9yeSIsCiAgICAnbWF4X3NpemVfcmVhY2hlZCcgPT4gIllvdXIgaW1hZ2UgZm9sZGVyIGhhcyByZWFjaCBpdHMgbWF4aW1hbGUgc2l6ZSBvZiAlZCBNQi4iLCAvLyVkID0gbWF4IG92ZXJhbGwgc2l6ZQogICAgJ0InID0+ICJCIiwKICAgICdLQicgPT4gIktCIiwKICAgICdNQicgPT4gIk1CIiwKICAgICdHQicgPT4gIkdCIiwKICAgICdUQicgPT4gIlRCIiwKICAgICd0b3RhbCBzaXplJyA9PiAiVG90YWwgc2l6ZSIsCik7Cg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/lang/zh_CN.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJldHVybiBhcnJheSgKCiAgICAnU2VsZWN0JyA9PiAn6YCJ5oupJywKICAgICdEZXNlbGVjdF9BbGwnID0+ICdEZXNlbGVjdCBBbGwnLAogICAgJ1NlbGVjdF9BbGwnID0+ICdTZWxlY3QgQWxsJywKICAgICdFcmFzZScgPT4gJ+WIoOmZpCcsCiAgICAnT3BlbicgPT4gJ+aJk+W8gCcsCiAgICAnQ29uZmlybV9kZWwnID0+ICfnoa7lrprliKDpmaTmraTmlofku7Y/JywKICAgICdBbGwnID0+ICfmiYDmnIknLAogICAgJ0ZpbGVzJyA9PiAn5paH5Lu2JywKICAgICdJbWFnZXMnID0+ICflm77niYcnLAogICAgJ0FyY2hpdmVzJyA9PiAn5a2Y5qGjJywKICAgICdFcnJvcl9VcGxvYWQnID0+ICfkuIrkvKDnmoTmlofku7botoXov4fkuoblhYHorrjnmoTmnIDlpKflsLrlr7gnLAogICAgJ0Vycm9yX2V4dGVuc2lvbicgPT4gJ+atpOexu+aWh+S7tuS4jeiiq+aUr+aMgScsCiAgICAnVXBsb2FkX2ZpbGUnID0+ICfkuIrkvKAnLAogICAgJ0ZpbHRlcnMnID0+ICfov4fmu6QnLAogICAgJ1ZpZGVvcycgPT4gJ+inhumikScsCiAgICAnTXVzaWMnID0+ICfpn7PkuZAnLAogICAgJ05ld19Gb2xkZXInID0+ICfmlrDmlofku7blpLknLAogICAgJ0ZvbGRlcl9DcmVhdGVkJyA9PiAn5paH5Lu25aS55Yib5bu65oiQ5YqfJywKICAgICdFeGlzdGluZ19Gb2xkZXInID0+ICfmlofku7blpLnlt7Lnu4/lrZjlnKgnLAogICAgJ0NvbmZpcm1fRm9sZGVyX2RlbCcgPT4gJ+ehruWumuWIoOmZpOatpOaWh+S7tuWkueWSjOmHjOmdoueahOaJgOacieaWh+S7tj8nLAogICAgJ1JldHVybl9GaWxlc19MaXN0JyA9PiAn6L+U5Zue5paH5Lu25YiX6KGoJywKICAgICdQcmV2aWV3JyA9PiAn6aKE6KeIJywKICAgICdEb3dubG9hZCcgPT4gJ+S4i+i9vScsCiAgICAnSW5zZXJ0X0ZvbGRlcl9OYW1lJyA9PiAn5aGr5YaZ5paH5Lu25aS55ZCN56ewOicsCiAgICAnUm9vdCcgPT4gJ3Jvb3QnLAogICAgJ1JlbmFtZScgPT4gJ+aUueWQjScsCiAgICAnQmFjaycgPT4gJ+i/lOWbnicsCiAgICAnVmlldycgPT4gJ+inhuWbvicsCiAgICAnVmlld19saXN0JyA9PiAn5YiX6KGo6KeG5Zu+JywKICAgICdWaWV3X2NvbHVtbnNfbGlzdCcgPT4gJ+WIl+inhuWbvicsCiAgICAnVmlld19ib3hlcycgPT4gJ+aWueWdl+inhuWbvicsCiAgICAnVG9vbGJhcicgPT4gJ+W3peWFt+agjycsCiAgICAnQWN0aW9ucycgPT4gJ+aTjeS9nCcsCiAgICAnUmVuYW1lX2V4aXN0aW5nX2ZpbGUnID0+ICfmlofku7blt7LlrZjlnKgnLAogICAgJ1JlbmFtZV9leGlzdGluZ19mb2xkZXInID0+ICfmlofku7blpLnlt7LlrZjlnKgnLAogICAgJ0VtcHR5X25hbWUnID0+ICfor7fovpPlhaXmlofku7blkI0nLAogICAgJ1RleHRfZmlsdGVyJyA9PiAn5paH5a2X6L+H5rukJywKICAgICdTd2lwZV9oZWxwJyA9PiAn5Zyo5paH5Lu25oiW5paH5Lu25aS555qE5ZCN56ew5LiK5YiS6L+H5bey5pi+56S65pu05aSa6YCJ6aG5JywKICAgICdVcGxvYWRfYmFzZScgPT4gJ+aZrumAmuS4iuS8oCcsCiAgICAnVXBsb2FkX2Jhc2VfaGVscCcgPT4gIkRyYWcgJiBEcm9wIGZpbGVzKG1vZGVybiBicm93c2Vycykgb3IgY2xpY2sgaW4gdXBwZXIgYnV0dG9uIHRvIEFkZCB0aGUgZmlsZShzKSBhbmQgY2xpY2sgb24gU3RhcnQgdXBsb2FkLiBXaGVuIHRoZSB1cGxvYWQgaXMgY29tcGxldGUsIGNsaWNrIHRoZSAnUmV0dXJuIHRvIGZpbGVzIGxpc3QnIGJ1dHRvbi4iLAogICAgJ1VwbG9hZF9hZGRfZmlsZXMnID0+ICdBZGQgZmlsZShzKScsCiAgICAnVXBsb2FkX3N0YXJ0JyA9PiAnU3RhcnQgdXBsb2FkJywKICAgICdVcGxvYWRfZXJyb3JfbWVzc2FnZXMnID0+YXJyYXkoCiAgICAgICAgMSA9PiAnVGhlIHVwbG9hZGVkIGZpbGUgZXhjZWVkcyB0aGUgdXBsb2FkX21heF9maWxlc2l6ZSBkaXJlY3RpdmUgaW4gcGhwLmluaScsCiAgICAgICAgMiA9PiAnVGhlIHVwbG9hZGVkIGZpbGUgZXhjZWVkcyB0aGUgTUFYX0ZJTEVfU0laRSBkaXJlY3RpdmUgdGhhdCB3YXMgc3BlY2lmaWVkIGluIHRoZSBIVE1MIGZvcm0nLAogICAgICAgIDMgPT4gJ1RoZSB1cGxvYWRlZCBmaWxlIHdhcyBvbmx5IHBhcnRpYWxseSB1cGxvYWRlZCcsCiAgICAgICAgNCA9PiAnTm8gZmlsZSB3YXMgdXBsb2FkZWQnLAogICAgICAgIDYgPT4gJ01pc3NpbmcgYSB0ZW1wb3JhcnkgZm9sZGVyJywKICAgICAgICA3ID0+ICdGYWlsZWQgdG8gd3JpdGUgZmlsZSB0byBkaXNrJywKICAgICAgICA4ID0+ICdBIFBIUCBleHRlbnNpb24gc3RvcHBlZCB0aGUgZmlsZSB1cGxvYWQnLAogICAgICAgICdwb3N0X21heF9zaXplJyA9PiAnVGhlIHVwbG9hZGVkIGZpbGUgZXhjZWVkcyB0aGUgcG9zdF9tYXhfc2l6ZSBkaXJlY3RpdmUgaW4gcGhwLmluaScsCiAgICAgICAgJ21heF9maWxlX3NpemUnID0+ICdGaWxlIGlzIHRvbyBiaWcnLAogICAgICAgICdtaW5fZmlsZV9zaXplJyA9PiAnRmlsZSBpcyB0b28gc21hbGwnLAogICAgICAgICdhY2NlcHRfZmlsZV90eXBlcycgPT4gJ0ZpbGV0eXBlIG5vdCBhbGxvd2VkJywKICAgICAgICAnbWF4X251bWJlcl9vZl9maWxlcycgPT4gJ01heGltdW0gbnVtYmVyIG9mIGZpbGVzIGV4Y2VlZGVkJywKICAgICAgICAnbWF4X3dpZHRoJyA9PiAnSW1hZ2UgZXhjZWVkcyBtYXhpbXVtIHdpZHRoJywKICAgICAgICAnbWluX3dpZHRoJyA9PiAnSW1hZ2UgcmVxdWlyZXMgYSBtaW5pbXVtIHdpZHRoJywKICAgICAgICAnbWF4X2hlaWdodCcgPT4gJ0ltYWdlIGV4Y2VlZHMgbWF4aW11bSBoZWlnaHQnLAogICAgICAgICdtaW5faGVpZ2h0JyA9PiAnSW1hZ2UgcmVxdWlyZXMgYSBtaW5pbXVtIGhlaWdodCcsCiAgICAgICAgJ2Fib3J0JyA9PiAnRmlsZSB1cGxvYWQgYWJvcnRlZCcsCiAgICAgICAgJ2ltYWdlX3Jlc2l6ZScgPT4gJ0ZhaWxlZCB0byByZXNpemUgaW1hZ2UnCiAgICApLAogICAgJ1VwbG9hZF91cmwnID0+ICdGcm9tIHVybCcsCiAgICAnVHlwZV9kaXInID0+ICdkaXInLAogICAgJ1R5cGUnID0+ICfnsbvlnosnLAogICAgJ0RpbWVuc2lvbicgPT4gJ+WwuuWvuCcsCiAgICAnU2l6ZScgPT4gJ+Wkp+WwjycsCiAgICAnRGF0ZScgPT4gJ+aXpeacnycsCiAgICAnRmlsZW5hbWUnID0+ICfmlofku7blkI0nLAogICAgJ09wZXJhdGlvbnMnID0+ICfmk43kvZwnLAogICAgJ0RhdGVfdHlwZScgPT4gJ3ktbS1kJywKICAgICdPSycgPT4gJ09LJywKICAgICdDYW5jZWwnID0+ICflj5bmtognLAogICAgJ1NvcnRpbmcnID0+ICfmjpLluo8nLAogICAgJ1Nob3dfdXJsJyA9PiAn5pi+56S6VVJMJywKICAgICdFeHRyYWN0JyA9PiAn6Kej5Y6L57yp5Yiw6L+Z6YeMJywKICAgICdGaWxlX2luZm8nID0+ICfmlofku7bkv6Hmga8nLAogICAgJ0VkaXRfaW1hZ2UnID0+ICfnvJbovpHlm77niYcnLAogICAgJ0R1cGxpY2F0ZScgPT4gJ+WkjeWIticsCiAgICAnRm9sZGVycycgPT4gJ+aWh+S7tuWkuScsCiAgICAnQ29weScgPT4gJ+aLt+i0nScsCiAgICAnQ3V0JyA9PiAn5Ymq5YiHJywKICAgICdQYXN0ZScgPT4gJ+eymOi0tCcsCiAgICAnQ0InID0+ICfnspjotLTmnb8nLCAvLyBjbGlwYm9hcmQKICAgICdQYXN0ZV9IZXJlJyA9PiAn57KY6LS05Yiw6L+Z5Liq55uu5b2VJywKICAgICdQYXN0ZV9Db25maXJtJyA9PiAn56Gu5a6a57KY6LS05Yiw6L+Z5Liq55uu5b2VPyDov5nmnInlj6/og73kvJropobnm5blt7Lnu4/lrZjlnKjnmoTmlofku7bmiJbmlofku7blpLknLAogICAgJ1Bhc3RlX0ZhaWxlZCcgPT4gJ+aWh+S7tueymOi0tOWksei0pScsCiAgICAnQ2xlYXJfQ2xpcGJvYXJkJyA9PiAn5riF6Zmk57KY6LS05p2/JywKICAgICdDbGVhcl9DbGlwYm9hcmRfQ29uZmlybScgPT4gJ+ehruWumua4hemZpOeymOi0tOadvz8nLAogICAgJ0ZpbGVzX09OX0NsaXBib2FyZCcgPT4gJ+eymOi0tOadv+S4iui/mOacieaWh+S7tuWtmOWcqCcsCiAgICAnQ29weV9DdXRfU2l6ZV9MaW1pdCcgPT4gJ+aXoOazlSAlcyDpgInmi6nnmoTmlofku7bvvIzpgInmi6nnmoTmlofku7blpKrlpKfvvIzotoXov4fkuoblhYHorrjnmoTlpKflsI86ICVkIE1CJywgLy8gJXMgPSBjdXQgb3IgY29weQogICAgJ0NvcHlfQ3V0X0NvdW50X0xpbWl0JyA9PiAn5peg5rOVICVzIOmAieaLqeeahOaWh+S7tu+8jOaCqOmAieaLqeeahOaWh+S7tuWSjOaWh+S7tuWkueaVsOebrui2hei/h+mZkOWItjogJWQg5Liq5paH5Lu2JywgLy8gJXMgPSBjdXQgb3IgY29weQogICAgJ0NvcHlfQ3V0X05vdF9BbGxvd2VkJyA9PiAnIOaCqOayoeacieadg+mZkCAlcyDmlofku7YnLCAvLyAlcygxKSA9IGN1dCBvciBjb3B5LCAlcygyKSA9IGZpbGVzIG9yIGZvbGRlcnMKICAgICdJbWFnZV9FZGl0b3JfTm9fU2F2ZScgPT4gJ+aXoOazleS/neWtmOWbvueJhycsCiAgICAnSW1hZ2VfRWRpdG9yX0V4aXQnID0+ICJFeGl0IiwKICAgICdJbWFnZV9FZGl0b3JfU2F2ZScgPT4gIlNhdmUiLAogICAgJ1ppcF9Ob19FeHRyYWN0JyA9PiAn5paH5Lu26Kej5Y6L57yp5aSx6LSl44CC5paH5Lu25Y+v6IO95bey57uP5o2f5Z2PJywKICAgICdaaXBfSW52YWxpZCcgPT4gJ+S4jeaUr+aMgeatpOaWh+S7tuWQjue8gO+8jOaUr+aMgeeahOWQjue8gOWQjTogemlwLCBneiwgdGFyLicsCiAgICAnRGlyX05vX1dyaXRlJyA9PiAn5oKo6YCJ5oup55qE55uu5b2V5rKh5pyJ5YaZ5p2D6ZmQJywKICAgICdGdW5jdGlvbl9EaXNhYmxlZCcgPT4gJyVzIOWKn+iDveW3sue7j+iiq+acjeWKoeWZqOemgeeUqOOAgicsIC8vICVzID0gY3V0IG9yIGNvcHkKICAgICdGaWxlX1Blcm1pc3Npb24nID0+ICdGaWxlIHBlcm1pc3Npb24nLAogICAgJ0ZpbGVfUGVybWlzc2lvbl9Ob3RfQWxsb3dlZCcgPT4gJ0NoYW5naW5nICVzIHBlcm1pc3Npb25zIGFyZSBub3QgYWxsb3dlZC4nLCAvLyAlcyA9IGZpbGVzIG9yIGZvbGRlcnMKICAgICdGaWxlX1Blcm1pc3Npb25fUmVjdXJzaXZlJyA9PiAnQXBwbHkgcmVjdXJzaXZlbHk/JywKICAgICdGaWxlX1Blcm1pc3Npb25fV3JvbmdfTW9kZScgPT4gIlRoZSBzdXBwbGllZCBwZXJtaXNzaW9uIG1vZGUgaXMgaW5jb3JyZWN0LiIsCiAgICAnVXNlcicgPT4gJ1VzZXInLAogICAgJ0dyb3VwJyA9PiAnR3JvdXAnLAogICAgJ1llcycgPT4gJ1llcycsCiAgICAnTm8nID0+ICdObycsCiAgICAnTGFuZ19Ob3RfRm91bmQnID0+ICdDb3VsZCBub3QgZmluZCBsYW5ndWFnZS4nLAogICAgJ0xhbmdfQ2hhbmdlJyA9PiAnQ2hhbmdlIHRoZSBsYW5ndWFnZScsCiAgICAnRmlsZV9Ob3RfRm91bmQnID0+ICdDb3VsZCBub3QgZmluZCB0aGUgZmlsZS4nLAogICAgJ0ZpbGVfT3Blbl9FZGl0X05vdF9BbGxvd2VkJyA9PiAnWW91IGFyZSBub3QgYWxsb3dlZCB0byAlcyB0aGlzIGZpbGUuJywgLy8gJXMgPSBvcGVuIG9yIGVkaXQKICAgICdFZGl0JyA9PiAnRWRpdCcsCiAgICAnRWRpdF9GaWxlJyA9PiAiRWRpdCBmaWxlJ3MgY29udGVudCIsCiAgICAnRmlsZV9TYXZlX09LJyA9PiAiRmlsZSBzdWNjZXNzZnVsbHkgc2F2ZWQuIiwKICAgICdGaWxlX1NhdmVfRXJyb3InID0+ICJUaGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgc2F2aW5nIHRoZSBmaWxlLiIsCiAgICAnTmV3X0ZpbGUnID0+ICdOZXcgRmlsZScsCiAgICAnTm9fRXh0ZW5zaW9uJyA9PiAnWW91IGhhdmUgdG8gYWRkIGEgZmlsZSBleHRlbnNpb24uJywKICAgICdWYWxpZF9FeHRlbnNpb25zJyA9PiAnVmFsaWQgZXh0ZW5zaW9uczogJXMnLCAvLyAlcyA9IHR4dCxsb2cgZXRjLgogICAgJ1VwbG9hZF9tZXNzYWdlJyA9PiAiRHJvcCBmaWxlIGhlcmUgdG8gdXBsb2FkIiwKCiAgICAnU0VSVkVSIEVSUk9SJyA9PiAiU0VSVkVSIEVSUk9SIiwKICAgICdmb3JiaWRkZW4nID0+ICJGb3JiaWRlbiIsCiAgICAnd3JvbmcgcGF0aCcgPT4gIldyb25nIHBhdGgiLAogICAgJ3dyb25nIG5hbWUnID0+ICJXcm9uZyBuYW1lIiwKICAgICd3cm9uZyBleHRlbnNpb24nID0+ICJXcm9uZyBleHRlbnNpb24iLAogICAgJ3dyb25nIG9wdGlvbicgPT4gIldyb25nIG9wdGlvbiIsCiAgICAnd3JvbmcgZGF0YScgPT4gIldyb25nIGRhdGEiLAogICAgJ3dyb25nIGFjdGlvbicgPT4gIldyb25nIGFjdGlvbiIsCiAgICAnd3Jvbmcgc3ViLWFjdGlvbicgPT4gIldyb25nIHN1Yi1hY3RpbyIsCiAgICAnbm8gYWN0aW9uIHBhc3NlZCcgPT4gIk5vIGFjdGlvbiBwYXNzZWQiLAogICAgJ25vIHBhdGgnID0+ICJObyBwYXRoIiwKICAgICdubyBmaWxlJyA9PiAiTm8gZmlsZSIsCiAgICAndmlldyB0eXBlIG51bWJlciBtaXNzaW5nJyA9PiAiVmlldyB0eXBlIG51bWJlciBtaXNzaW5nIiwKICAgICdOb3QgZW5vdWdoIE1lbW9yeScgPT4gIk5vdCBlbm91Z2ggTWVtb3J5IiwKICAgICdtYXhfc2l6ZV9yZWFjaGVkJyA9PiAiWW91ciBpbWFnZSBmb2xkZXIgaGFzIHJlYWNoIGl0cyBtYXhpbWFsZSBzaXplIG9mICVkIE1CLiIsIC8vJWQgPSBtYXggb3ZlcmFsbCBzaXplCiAgICAnQicgPT4gIkIiLAogICAgJ0tCJyA9PiAiS0IiLAogICAgJ01CJyA9PiAiTUIiLAogICAgJ0dCJyA9PiAiR0IiLAogICAgJ1RCJyA9PiAiVEIiLAogICAgJ3RvdGFsIHNpemUnID0+ICJUb3RhbCBzaXplIiwKKTsK]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIHBsdWdpbi5qcwogKgogKiBDb3B5cmlnaHQsIEFsYmVydG8gUGVyaXBvbGxpCiAqIFJlbGVhc2VkIHVuZGVyIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tTm9uQ29tbWVyY2lhbCAzLjAgVW5wb3J0ZWQgTGljZW5zZS4KICoKICogQ29udHJpYnV0aW5nOiBodHRwczovL2dpdGh1Yi5jb20vdHJpcHBvL1Jlc3BvbnNpdmVGaWxlbWFuYWdlcgogKi8KCnRpbnltY2UuUGx1Z2luTWFuYWdlci5hZGQoJ2ZpbGVtYW5hZ2VyJywgZnVuY3Rpb24oZWRpdG9yKSB7CgoJZWRpdG9yLnNldHRpbmdzLmZpbGVfcGlja2VyX3R5cGVzID0gJ2ZpbGUgaW1hZ2UgbWVkaWEnOwoJZWRpdG9yLnNldHRpbmdzLmZpbGVfcGlja2VyX2NhbGxiYWNrID0gZmlsZW1hbmFnZXI7CgoJZnVuY3Rpb24gZmlsZW1hbmFnZXJfb25NZXNzYWdlKGV2ZW50KXsKCQlpZihlZGl0b3Iuc2V0dGluZ3MuZXh0ZXJuYWxfZmlsZW1hbmFnZXJfcGF0aC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoZXZlbnQub3JpZ2luLnRvTG93ZXJDYXNlKCkpID09PSAwKXsKCQkJaWYoZXZlbnQuZGF0YS5zZW5kZXIgPT09ICdyZXNwb25zaXZlZmlsZW1hbmFnZXInKXsKCQkJCXRpbnltY2UuYWN0aXZlRWRpdG9yLndpbmRvd01hbmFnZXIuZ2V0UGFyYW1zKCkuc2V0VXJsKGV2ZW50LmRhdGEudXJsKTsKCQkJCXRpbnltY2UuYWN0aXZlRWRpdG9yLndpbmRvd01hbmFnZXIuY2xvc2UoKTsKCgkJCQkvLyBSZW1vdmUgZXZlbnQgbGlzdGVuZXIgZm9yIGEgbWVzc2FnZSBmcm9tIFJlc3BvbnNpdmVGaWxlbWFuYWdlcgoJCQkJaWYod2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIpewoJCQkJCXdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZmlsZW1hbmFnZXJfb25NZXNzYWdlLCBmYWxzZSk7CgkJCQl9IGVsc2UgewoJCQkJCXdpbmRvdy5kZXRhY2hFdmVudCgnb25tZXNzYWdlJywgZmlsZW1hbmFnZXJfb25NZXNzYWdlKTsKCQkJCX0KCQkJfQoJCX0KCX0KCglmdW5jdGlvbiBmaWxlbWFuYWdlcihjYWxsYmFjaywgdmFsdWUsIG1ldGEpIHsKCQl2YXIgd2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aC0zMDsKCQl2YXIgaGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0LTYwOwoJCWlmKHdpZHRoID4gMTgwMCkgd2lkdGg9MTgwMDsKCQlpZihoZWlnaHQgPiAxMjAwKSBoZWlnaHQ9MTIwMDsKCQlpZih3aWR0aD42MDApewoJCQl2YXIgd2lkdGhfcmVkdWNlID0gKHdpZHRoIC0gMjApICUgMTM4OwoJCQl3aWR0aCA9IHdpZHRoIC0gd2lkdGhfcmVkdWNlICsgMTA7CgkJfQoKCQkvLyBERUZBVUxUIEFTIEZJTEUKCQl1cmx0eXBlPTI7CgkJaWYgKG1ldGEuZmlsZXR5cGUgPT09ICdpbWFnZScgfHwgbWV0YS5tZWRpYVR5cGUgPT09ICdpbWFnZScpIHsgdXJsdHlwZT0xOyB9CgkJaWYgKG1ldGEuZmlsZXR5cGUgPT09ICdtZWRpYScgfHwgbWV0YS5tZWRpYVR5cGUgPT09ICdtZWRpYScpIHsgdXJsdHlwZT0zOyB9CgoJCXZhciB0aXRsZT0iUkVTUE9OU0lWRSBGaWxlTWFuYWdlciI7CgkJaWYgKHR5cGVvZiBlZGl0b3Iuc2V0dGluZ3MuZmlsZW1hbmFnZXJfdGl0bGUgIT09ICJ1bmRlZmluZWQiICYmIGVkaXRvci5zZXR0aW5ncy5maWxlbWFuYWdlcl90aXRsZSkgewoJCQl0aXRsZT1lZGl0b3Iuc2V0dGluZ3MuZmlsZW1hbmFnZXJfdGl0bGU7CgkJfQoJCXZhciBha2V5PSJrZXkiOwoJCWlmICh0eXBlb2YgZWRpdG9yLnNldHRpbmdzLmZpbGVtYW5hZ2VyX2FjY2Vzc19rZXkgIT09ICJ1bmRlZmluZWQiICYmIGVkaXRvci5zZXR0aW5ncy5maWxlbWFuYWdlcl9hY2Nlc3Nfa2V5KSB7CgkJCWFrZXk9ZWRpdG9yLnNldHRpbmdzLmZpbGVtYW5hZ2VyX2FjY2Vzc19rZXk7CgkJfQoJCXZhciBzb3J0X2J5PSIiOwoJCWlmICh0eXBlb2YgZWRpdG9yLnNldHRpbmdzLmZpbGVtYW5hZ2VyX3NvcnRfYnkgIT09ICJ1bmRlZmluZWQiICYmIGVkaXRvci5zZXR0aW5ncy5maWxlbWFuYWdlcl9zb3J0X2J5KSB7CgkJCXNvcnRfYnk9IiZzb3J0X2J5PSIrZWRpdG9yLnNldHRpbmdzLmZpbGVtYW5hZ2VyX3NvcnRfYnk7CgkJfQoJCXZhciBkZXNjZW5kaW5nPTA7CgkJaWYgKHR5cGVvZiBlZGl0b3Iuc2V0dGluZ3MuZmlsZW1hbmFnZXJfZGVzY2VuZGluZyAhPT0gInVuZGVmaW5lZCIgJiYgZWRpdG9yLnNldHRpbmdzLmZpbGVtYW5hZ2VyX2Rlc2NlbmRpbmcpIHsKCQkJZGVzY2VuZGluZz1lZGl0b3Iuc2V0dGluZ3MuZmlsZW1hbmFnZXJfZGVzY2VuZGluZzsKCQl9CgkJdmFyIGZsZHI9IiI7CgkJaWYgKHR5cGVvZiBlZGl0b3Iuc2V0dGluZ3MuZmlsZW1hbmFnZXJfc3ViZm9sZGVyICE9PSAidW5kZWZpbmVkIiAmJiBlZGl0b3Iuc2V0dGluZ3MuZmlsZW1hbmFnZXJfc3ViZm9sZGVyKSB7CgkJCWZsZHI9IiZmbGRyPSIrZWRpdG9yLnNldHRpbmdzLmZpbGVtYW5hZ2VyX3N1YmZvbGRlcjsKCQl9CgkJdmFyIGNyb3NzZG9tYWluPSIiOwoJCWlmICh0eXBlb2YgZWRpdG9yLnNldHRpbmdzLmZpbGVtYW5hZ2VyX2Nyb3NzZG9tYWluICE9PSAidW5kZWZpbmVkIiAmJiBlZGl0b3Iuc2V0dGluZ3MuZmlsZW1hbmFnZXJfY3Jvc3Nkb21haW4pIHsKCQkJY3Jvc3Nkb21haW49IiZjcm9zc2RvbWFpbj0xIjsKCgkJCS8vIEFkZCBoYW5kbGVyIGZvciBhIG1lc3NhZ2UgZnJvbSBSZXNwb25zaXZlRmlsZW1hbmFnZXIKCQkJaWYod2luZG93LmFkZEV2ZW50TGlzdGVuZXIpewoJCQkJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBmaWxlbWFuYWdlcl9vbk1lc3NhZ2UsIGZhbHNlKTsKCQkJfSBlbHNlIHsKCQkJCXdpbmRvdy5hdHRhY2hFdmVudCgnb25tZXNzYWdlJywgZmlsZW1hbmFnZXJfb25NZXNzYWdlKTsKCQkJfQoJCX0KCgkJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBmdW5jdGlvbiByZWNlaXZlTWVzc2FnZShldmVudCkgewoJCQl3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHJlY2VpdmVNZXNzYWdlLCBmYWxzZSk7CgkJCWlmIChldmVudC5kYXRhLnNlbmRlciA9PT0gJ3Jlc3BvbnNpdmVmaWxlbWFuYWdlcicpIHsKCQkJCWNhbGxiYWNrKGV2ZW50LmRhdGEudXJsKTsKCQkJfQoJCX0sIGZhbHNlKTsKCgkJdmFyIGRpYWxvZ1VybCA9IGVkaXRvci5zZXR0aW5ncy5leHRlcm5hbF9maWxlbWFuYWdlcl9wYXRoKydkaWFsb2cucGhwP3R5cGU9Jyt1cmx0eXBlKycmZGVzY2VuZGluZz0nK2Rlc2NlbmRpbmcrc29ydF9ieStmbGRyK2Nyb3NzZG9tYWluKycmbGFuZz0nK2VkaXRvci5zZXR0aW5ncy5sYW5ndWFnZSsnJmFrZXk9Jytha2V5OwoKCQlpZiAodGlueW1jZS5tYWpvclZlcnNpb24gPiA0KSB7CgkJCXRpbnltY2UuYWN0aXZlRWRpdG9yLndpbmRvd01hbmFnZXIub3BlblVybCh7CgkJCQl0aXRsZTogdGl0bGUsCgkJCQl1cmw6IGRpYWxvZ1VybCwKCQkJCXdpZHRoOiB3aWR0aCwKCQkJCWhlaWdodDogaGVpZ2h0LAoJCQkJcmVzaXphYmxlOiB0cnVlLAoJCQkJbWF4aW1pemFibGU6IHRydWUsCgkJCQlpbmxpbmU6IDEsCgkJCX0pOwoJCX0gZWxzZSB7CgkJCXRpbnltY2UuYWN0aXZlRWRpdG9yLndpbmRvd01hbmFnZXIub3Blbih7CgkJCQl0aXRsZTogdGl0bGUsCgkJCQlmaWxlOiBkaWFsb2dVcmwsCgkJCQl3aWR0aDogd2lkdGgsCgkJCQloZWlnaHQ6IGhlaWdodCwKCQkJCXJlc2l6YWJsZTogdHJ1ZSwKCQkJCW1heGltaXphYmxlOiB0cnVlLAoJCQkJaW5saW5lOiAxLAoJCQl9KTsKCQl9Cgl9CgoJcmV0dXJuIGZhbHNlOwp9KTsK]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/upload.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnRyeSB7CiAgICBpZiAoIWlzc2V0KCRjb25maWcpKSB7CiAgICAgICAgJGNvbmZpZyA9IGluY2x1ZGUgJ2NvbmZpZy9jb25maWcucGhwJzsKICAgIH0KCiAgICBpbmNsdWRlICdpbmNsdWRlL3V0aWxzLnBocCc7CgogICAgaWYgKCRfU0VTU0lPTlsnUkYnXVsidmVyaWZ5Il0gIT0gIlJFU1BPTlNJVkVmaWxlbWFuYWdlciIpIHsKICAgICAgICByZXNwb25zZSh0cmFucygnZm9yYmlkZGVuJykgLiBBZGRFcnJvckxvY2F0aW9uKCksIDQwMyktPnNlbmQoKTsKICAgICAgICBleGl0OwogICAgfQoKICAgIGluY2x1ZGUgJ2luY2x1ZGUvbWltZV90eXBlX2xpYi5waHAnOwoKICAgICRmdHAgPSBmdHBfY29uKCRjb25maWcpOwoKICAgIGlmICgkZnRwKSB7CiAgICAgICAgJHNvdXJjZV9iYXNlID0gJGNvbmZpZ1snZnRwX2Jhc2VfZm9sZGVyJ10gLiAkY29uZmlnWyd1cGxvYWRfZGlyJ107CiAgICAgICAgJHRodW1iX2Jhc2UgPSAkY29uZmlnWydmdHBfYmFzZV9mb2xkZXInXSAuICRjb25maWdbJ2Z0cF90aHVtYnNfZGlyJ107CiAgICB9IGVsc2UgewogICAgICAgICRzb3VyY2VfYmFzZSA9ICRjb25maWdbJ2N1cnJlbnRfcGF0aCddOwogICAgICAgICR0aHVtYl9iYXNlID0gJGNvbmZpZ1sndGh1bWJzX2Jhc2VfcGF0aCddOwogICAgfQoKICAgIGlmIChpc3NldCgkX1BPU1RbImZsZHIiXSkpIHsKICAgICAgICAkX1BPU1RbJ2ZsZHInXSA9IHN0cl9yZXBsYWNlKCd1bmRlZmluZWQnLCAnJywgJF9QT1NUWydmbGRyJ10pOwogICAgICAgICRzdG9yZUZvbGRlciA9ICRzb3VyY2VfYmFzZSAuICRfUE9TVFsiZmxkciJdOwogICAgICAgICRzdG9yZUZvbGRlclRodW1iID0gJHRodW1iX2Jhc2UgLiAkX1BPU1RbImZsZHIiXTsKICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICRmbGRyID0gcmF3dXJsZGVjb2RlKHRyaW0oc3RyaXBfdGFncygkX1BPU1RbJ2ZsZHInXSksICIvIikgLiAiLyIpOwoKICAgIGlmICghY2hlY2tSZWxhdGl2ZVBhdGgoJGZsZHIpKSB7CiAgICAgICAgcmVzcG9uc2UodHJhbnMoJ3dyb25nIHBhdGgnKSAuIEFkZEVycm9yTG9jYXRpb24oKSktPnNlbmQoKTsKICAgICAgICBleGl0OwogICAgfQoKICAgICRwYXRoID0gJHN0b3JlRm9sZGVyOwogICAgJGN5Y2xlID0gdHJ1ZTsKICAgICRtYXhfY3ljbGVzID0gNTA7CiAgICAkaSA9IDA7CiAgICAvL0dFVCBjb25maWcKICAgIHdoaWxlICgkY3ljbGUgJiYgJGkgPCAkbWF4X2N5Y2xlcykgewogICAgICAgICRpKys7CiAgICAgICAgaWYgKCRwYXRoID09ICRjb25maWdbJ2N1cnJlbnRfcGF0aCddKSB7CiAgICAgICAgICAgICRjeWNsZSA9IGZhbHNlOwogICAgICAgIH0KICAgICAgICBpZiAoZmlsZV9leGlzdHMoJHBhdGggLiAiY29uZmlnLnBocCIpKSB7CiAgICAgICAgICAgICRjb25maWdUZW1wID0gaW5jbHVkZSAkcGF0aCAuICdjb25maWcucGhwJzsKICAgICAgICAgICAgJGNvbmZpZyA9IGFycmF5X21lcmdlKCRjb25maWcsICRjb25maWdUZW1wKTsKICAgICAgICAgICAgLy9UT0RPIHN3aXRjaCB0byBhcnJheQogICAgICAgICAgICAkY3ljbGUgPSBmYWxzZTsKICAgICAgICB9CiAgICAgICAgJHBhdGggPSBmaXhfZGlybmFtZSgkcGF0aCkgLiAnLyc7CiAgICB9CgogICAgcmVxdWlyZSgnVXBsb2FkSGFuZGxlci5waHAnKTsKICAgICRtZXNzYWdlcyA9IG51bGw7CiAgICBpZiAodHJhbnMoIlVwbG9hZF9lcnJvcl9tZXNzYWdlcyIpICE9PSAiVXBsb2FkX2Vycm9yX21lc3NhZ2VzIikgewogICAgICAgICRtZXNzYWdlcyA9IHRyYW5zKCJVcGxvYWRfZXJyb3JfbWVzc2FnZXMiKTsKICAgIH0KCiAgICAvLyBtYWtlIHN1cmUgdGhlIGxlbmd0aCBpcyBsaW1pdGVkIHRvIGF2b2lkIERPUyBhdHRhY2tzCiAgICBpZiAoaXNzZXQoJF9QT1NUWyd1cmwnXSkgJiYgc3RybGVuKCRfUE9TVFsndXJsJ10pIDwgMjAwMCkgewogICAgICAgICR1cmwgPSAkX1BPU1RbJ3VybCddOwogICAgICAgICR1cmxQYXR0ZXJuID0gJy9eKGh0dHBzPzpcL1wvKT8oW1xkYS16XC4tXStcLlthLXpcLl17Miw2fXxbXGRcLl0rKShbXC8/PSYjXXsxfVtcZGEtelwuLV0rKSpbXC9cP10/JC9pJzsKCiAgICAgICAgaWYgKHByZWdfbWF0Y2goJHVybFBhdHRlcm4sICR1cmwpKSB7CiAgICAgICAgICAgICR0ZW1wID0gdGVtcG5hbSgnL3RtcCcsJ1JGJyk7CgogICAgICAgICAgICAkY2ggPSBjdXJsX2luaXQoJHVybCk7CiAgICAgICAgICAgICRmcCA9IGZvcGVuKCR0ZW1wLCAnd2InKTsKICAgICAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0ZJTEUsICRmcCk7CiAgICAgICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9IRUFERVIsIDApOwogICAgICAgICAgICBjdXJsX2V4ZWMoJGNoKTsKICAgICAgICAgICAgaWYgKGN1cmxfZXJybm8oJGNoKSkgewogICAgICAgICAgICAgICAgY3VybF9jbG9zZSgkY2gpOwogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignSW52YWxpZCBVUkwnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjdXJsX2Nsb3NlKCRjaCk7CiAgICAgICAgICAgIGZjbG9zZSgkZnApOwoKICAgICAgICAgICAgJF9GSUxFU1snZmlsZXMnXSA9IGFycmF5KAogICAgICAgICAgICAgICAgJ25hbWUnID0+IGFycmF5KGJhc2VuYW1lKCRfUE9TVFsndXJsJ10pKSwKICAgICAgICAgICAgICAgICd0bXBfbmFtZScgPT4gYXJyYXkoJHRlbXApLAogICAgICAgICAgICAgICAgJ3NpemUnID0+IGFycmF5KGZpbGVzaXplKCR0ZW1wKSksCiAgICAgICAgICAgICAgICAndHlwZScgPT4gbnVsbAogICAgICAgICAgICApOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ0lzIG5vdCBhIHZhbGlkIFVSTC4nKTsKICAgICAgICB9CiAgICB9CgoKICAgIGlmICgkY29uZmlnWydtaW1lX2V4dGVuc2lvbl9yZW5hbWUnXSkgewogICAgICAgICRpbmZvID0gcGF0aGluZm8oJF9GSUxFU1snZmlsZXMnXVsnbmFtZSddWzBdKTsKICAgICAgICAkbWltZV90eXBlID0gJF9GSUxFU1snZmlsZXMnXVsndHlwZSddWzBdOwogICAgICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ21pbWVfY29udGVudF90eXBlJykpIHsKICAgICAgICAgICAgJG1pbWVfdHlwZSA9IG1pbWVfY29udGVudF90eXBlKCRfRklMRVNbJ2ZpbGVzJ11bJ3RtcF9uYW1lJ11bMF0pOwogICAgICAgIH0gZWxzZWlmIChmdW5jdGlvbl9leGlzdHMoJ2ZpbmZvX29wZW4nKSkgewogICAgICAgICAgICAkZmluZm8gPSBmaW5mb19vcGVuKEZJTEVJTkZPX01JTUVfVFlQRSk7CiAgICAgICAgICAgICRtaW1lX3R5cGUgPSBmaW5mb19maWxlKCRmaW5mbywgJF9GSUxFU1snZmlsZXMnXVsndG1wX25hbWUnXVswXSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJG1pbWVfdHlwZSA9IGdldF9maWxlX21pbWVfdHlwZSgkX0ZJTEVTWydmaWxlcyddWyd0bXBfbmFtZSddWzBdKTsKICAgICAgICB9CiAgICAgICAgJGV4dGVuc2lvbiA9IGdldF9leHRlbnNpb25fZnJvbV9taW1lKCRtaW1lX3R5cGUpOwoKICAgICAgICBpZiAoJGV4dGVuc2lvbiA9PSAnc28nIHx8ICRleHRlbnNpb24gPT0gJycgfHwgJG1pbWVfdHlwZSA9PSAidGV4dC90cm9mZiIpIHsKICAgICAgICAgICAgJGV4dGVuc2lvbiA9ICRpbmZvWydleHRlbnNpb24nXTsKICAgICAgICB9CiAgICAgICAgJGZpbGVuYW1lID0gJGluZm9bJ2ZpbGVuYW1lJ10gLiAiLiIgLiAkZXh0ZW5zaW9uOwogICAgfSBlbHNlIHsKICAgICAgICAkZmlsZW5hbWUgPSAkX0ZJTEVTWydmaWxlcyddWyduYW1lJ11bMF07CiAgICB9CiAgICAkX0ZJTEVTWydmaWxlcyddWyduYW1lJ11bMF0gPSBmaXhfZmlsZW5hbWUoJGZpbGVuYW1lLCAkY29uZmlnKTsKCiAgICBpZighJF9GSUxFU1snZmlsZXMnXVsndHlwZSddWzBdKXsKICAgICAgICAkX0ZJTEVTWydmaWxlcyddWyd0eXBlJ11bMF0gPSAkbWltZV90eXBlOwoKICAgIH0KICAgIC8vIExvd2VyQ2FzZQogICAgaWYgKCRjb25maWdbJ2xvd2VyX2Nhc2UnXSkgewogICAgICAgICRfRklMRVNbJ2ZpbGVzJ11bJ25hbWUnXVswXSA9IGZpeF9zdHJ0b2xvd2VyKCRfRklMRVNbJ2ZpbGVzJ11bJ25hbWUnXVswXSk7CiAgICB9CiAgICBpZiAoIWNoZWNrcmVzdWx0aW5nc2l6ZSgkX0ZJTEVTWydmaWxlcyddWydzaXplJ11bMF0pKSB7CiAgICAJaWYgKCAhaXNzZXQoJHVwbG9hZF9oYW5kbGVyLT5yZXNwb25zZVsnZmlsZXMnXVswXSkgKSB7CiAgICAgICAgICAgIC8vIEF2b2lkICIgV2FybmluZzogQ3JlYXRpbmcgZGVmYXVsdCBvYmplY3QgZnJvbSBlbXB0eSB2YWx1ZSAuLi4gIgogICAgICAgICAgICAkdXBsb2FkX2hhbmRsZXItPnJlc3BvbnNlWydmaWxlcyddWzBdID0gbmV3IHN0ZENsYXNzKCk7CiAgICAgICAgfQogICAgICAgICR1cGxvYWRfaGFuZGxlci0+cmVzcG9uc2VbJ2ZpbGVzJ11bMF0tPmVycm9yID0gc3ByaW50Zih0cmFucygnbWF4X3NpemVfcmVhY2hlZCcpLCAkY29uZmlnWydNYXhTaXplVG90YWwnXSkgLiBBZGRFcnJvckxvY2F0aW9uKCk7CiAgICAgICAgZWNobyBqc29uX2VuY29kZSgkdXBsb2FkX2hhbmRsZXItPnJlc3BvbnNlKTsKICAgICAgICBleGl0KCk7CiAgICB9CgogICAgJHVwbG9hZENvbmZpZyA9IGFycmF5KAogICAgICAgICdjb25maWcnID0+ICRjb25maWcsCiAgICAgICAgJ3N0b3JlRm9sZGVyJyA9PiAkc3RvcmVGb2xkZXIsCiAgICAgICAgJ3N0b3JlRm9sZGVyVGh1bWInID0+ICRzdG9yZUZvbGRlclRodW1iLAogICAgICAgICdmdHAnID0+ICRmdHAsCiAgICAgICAgJ3VwbG9hZF9kaXInID0+IGRpcm5hbWUoJF9TRVJWRVJbJ1NDUklQVF9GSUxFTkFNRSddKSAuICcvJyAuICRzdG9yZUZvbGRlciwKICAgICAgICAndXBsb2FkX3VybCcgPT4gJGNvbmZpZ1snYmFzZV91cmwnXSAuICRjb25maWdbJ3VwbG9hZF9kaXInXSAuICRfUE9TVFsnZmxkciddLAogICAgICAgICdta2Rpcl9tb2RlJyA9PiAkY29uZmlnWydmb2xkZXJQZXJtaXNzaW9uJ10sCiAgICAgICAgJ21heF9maWxlX3NpemUnID0+ICRjb25maWdbJ01heFNpemVVcGxvYWQnXSAqIDEwMjQgKiAxMDI0LAogICAgICAgICdjb3JyZWN0X2ltYWdlX2V4dGVuc2lvbnMnID0+IHRydWUsCiAgICAgICAgJ3ByaW50X3Jlc3BvbnNlJyA9PiBmYWxzZQogICAgKTsKCiAgICBpZiAoISRjb25maWdbJ2V4dF9ibGFja2xpc3QnXSkgewogICAgICAgICR1cGxvYWRDb25maWdbJ2FjY2VwdF9maWxlX3R5cGVzJ10gPSAnL1wuKCcgLiBpbXBsb2RlKCd8JywgJGNvbmZpZ1snZXh0J10pIC4gJykkL2knOwoKICAgICAgICBpZiAoJGNvbmZpZ1snZmlsZXNfd2l0aG91dF9leHRlbnNpb24nXSkgewogICAgICAgICAgICAkdXBsb2FkQ29uZmlnWydhY2NlcHRfZmlsZV90eXBlcyddID0gJy8oKFwuKCcgLiBpbXBsb2RlKCd8JywgJGNvbmZpZ1snZXh0J10pIC4gJykkKXwoXlteLl0rJCkpJC9pJzsKICAgICAgICB9CiAgICB9IGVsc2UgewogICAgICAgICR1cGxvYWRDb25maWdbJ2FjY2VwdF9maWxlX3R5cGVzJ10gPSAnL1wuKD8hJyAuIGltcGxvZGUoJ3wnLCAkY29uZmlnWydleHRfYmxhY2tsaXN0J10pIC4gJyQpL2knOwoKICAgICAgICBpZiAoJGNvbmZpZ1snZmlsZXNfd2l0aG91dF9leHRlbnNpb24nXSkgewogICAgICAgICAgICAkdXBsb2FkQ29uZmlnWydhY2NlcHRfZmlsZV90eXBlcyddID0gJy8oKFwuKD8hJyAuIGltcGxvZGUoJ3wnLCAkY29uZmlnWydleHRfYmxhY2tsaXN0J10pIC4gJyQpKXwoXlteLl0rJCkpL2knOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoJGZ0cCkgewogICAgICAgIGlmICghaXNfZGlyKCRjb25maWdbJ2Z0cF90ZW1wX2ZvbGRlciddKSkgewogICAgICAgICAgICBta2RpcigkY29uZmlnWydmdHBfdGVtcF9mb2xkZXInXSwgJGNvbmZpZ1snZm9sZGVyUGVybWlzc2lvbiddLCB0cnVlKTsKICAgICAgICB9CgogICAgICAgIGlmICghaXNfZGlyKCRjb25maWdbJ2Z0cF90ZW1wX2ZvbGRlciddIC4gInRodW1icyIpKSB7CiAgICAgICAgICAgIG1rZGlyKCRjb25maWdbJ2Z0cF90ZW1wX2ZvbGRlciddIC4gInRodW1icyIsICRjb25maWdbJ2ZvbGRlclBlcm1pc3Npb24nXSwgdHJ1ZSk7CiAgICAgICAgfQoKICAgICAgICAkdXBsb2FkQ29uZmlnWyd1cGxvYWRfZGlyJ10gPSAkY29uZmlnWydmdHBfdGVtcF9mb2xkZXInXTsKICAgIH0KCiAgICAvL3ByaW50X3IoJF9GSUxFUyk7ZGllKCk7CiAgICAkdXBsb2FkX2hhbmRsZXIgPSBuZXcgVXBsb2FkSGFuZGxlcigkdXBsb2FkQ29uZmlnLCB0cnVlLCAkbWVzc2FnZXMpOwp9IGNhdGNoIChFeGNlcHRpb24gJGUpIHsKICAgICRyZXR1cm4gPSBhcnJheSgpOwoKICAgIGlmICgkX0ZJTEVTWydmaWxlcyddKSB7CiAgICAgICAgZm9yZWFjaCAoJF9GSUxFU1snZmlsZXMnXVsnbmFtZSddIGFzICRpID0+ICRuYW1lKSB7CiAgICAgICAgICAgICRyZXR1cm5bXSA9IGFycmF5KAogICAgICAgICAgICAgICAgJ25hbWUnID0+ICRuYW1lLAogICAgICAgICAgICAgICAgJ2Vycm9yJyA9PiAkZS0+Z2V0TWVzc2FnZSgpLAogICAgICAgICAgICAgICAgJ3NpemUnID0+ICRfRklMRVNbJ2ZpbGVzJ11bJ3NpemUnXVskaV0sCiAgICAgICAgICAgICAgICAndHlwZScgPT4gJF9GSUxFU1snZmlsZXMnXVsndHlwZSddWyRpXQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgZWNobyBqc29uX2VuY29kZShhcnJheSgiZmlsZXMiID0+ICRyZXR1cm4pKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgZWNobyBqc29uX2VuY29kZShhcnJheSgiZXJyb3IiID0+ICRlLT5nZXRNZXNzYWdlKCkpKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/uploader/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/uploader/index.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KJGNvbmZpZyA9IGluY2x1ZGUgJy4uL2NvbmZpZy9jb25maWcucGhwJzsNCi8vVE9ETyBzd2l0Y2ggdG8gYXJyYXkNCmV4dHJhY3QoJGNvbmZpZywgRVhUUl9PVkVSV1JJVEUpOw0KDQppZiAoICEgJGphdmFfdXBsb2FkKQ0Kew0KCWRpZSgnZm9yYmlkZGVuJyk7DQp9DQppZiAoJF9TRVNTSU9OWydSRiddWyJ2ZXJpZnkiXSAhPSAiUkVTUE9OU0lWRWZpbGVtYW5hZ2VyIikNCnsNCglkaWUoJ2ZvcmJpZGRlbicpOw0KfQ0KDQovL0xldCdzIGxvYWQgdGhlICdpbnRlcmVzdGluZycgc3R1ZmYgLi4uICA7LSkNCmluY2x1ZGUgJ2p1cGxvYWQucGhwJzsNCmluY2x1ZGUgJy4uL2luY2x1ZGUvdXRpbHMucGhwJzsNCg0KJHBhdGggPSAkY3VycmVudF9wYXRoIC4gJF9HRVRbJ3BhdGgnXTsNCiRjeWNsZSA9IHRydWU7DQokbWF4X2N5Y2xlcyA9IDUwOw0KJGkgPSAwOw0Kd2hpbGUgKCRjeWNsZSAmJiAkaSA8ICRtYXhfY3ljbGVzKQ0Kew0KCSRpKys7DQoJaWYgKCRwYXRoID09ICRjdXJyZW50X3BhdGgpDQoJew0KCQkkY3ljbGUgPSBmYWxzZTsNCgl9DQoNCglpZiAoZmlsZV9leGlzdHMoJHBhdGggLiAiY29uZmlnLnBocCIpKQ0KCXsNCgkJcmVxdWlyZV9vbmNlICRwYXRoIC4gImNvbmZpZy5waHAiOw0KCQkkY3ljbGUgPSBmYWxzZTsNCgl9DQoJJHBhdGggPSBmaXhfZGlybmFtZSgkcGF0aCkgLiAiLyI7DQp9DQoNCiRwYXRoID0gIi4uLyIgLiAkY3VycmVudF9wYXRoIC4gJF9HRVRbJ3BhdGgnXTsNCg0KaWYgKHN0cnBvcygkX0dFVFsncGF0aCddLCAnLi4vJykgIT09IGZhbHNlIHx8IHN0cnBvcygkX0dFVFsncGF0aCddLCAnLi8nKSAhPT0gZmFsc2UgfHwgc3RycG9zKCRfR0VUWydwYXRoJ10sICcvJykgPT09IDApDQp7DQoJZGllICgncGF0aCBlcnJvcicpOw0KfQ0KDQokcGF0aCA9IHN0cl9yZXBsYWNlKCcgJywgJ34nLCAkcGF0aCk7DQovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KLy8vLy8vLy8vLy8vLy8vICAgVGhlIHVzZXIgY2FsbGJhY2sgZnVuY3Rpb24sIHRoYXQgY2FuIGJlIGNhbGxlZCBhZnRlciB1cGxvYWQgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8NCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQovKioNCiAqIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQsIG9uY2UgYWxsIGZpbGVzIGFyZSB1cGxvYWRlZCwgd2l0aCB0aGUgbGlzdCBvZiB1cGxvYWRlZCBmaWxlcyBhcyBhbiBhcmd1bWVudC4NCiAqDQogKiBDb25kaXRpb24gdG8gaGF2ZSB0aGlzIGZ1bmN0aW9uIGNhbGxlZDoNCiAqIC0gSGF2ZSB0aGUgYXBwbGV0IHBhcmFtZXRlciBhZnRlclVwbG9hZFVSTCB1bnNldCBpbiB0aGlzIGZpbGUuIFRoaXMgbWFrZXMgdGhlIGFwcGxldCB1c2UgaXRzIGRlZmF1bHQgYmVoYXZpb3IsIHRoYXQNCiAqIGlzOiBhZnRlclVwbG9hZFVSTCBpcyB0aGUgY3VycmVudCB3ZWIgcGFnZSwgd2l0aCB0aGUgP2FmdGVydXBsb2FkPTEgcGFyYW1ldGVyIGFkZGVkLg0KICogLSBIYXZlIHRoZSBjbGFzcyBwYXJhbWV0ZXIgY2FsbGJhY2tBZnRlclVwbG9hZE1hbmFnZW1lbnQgc2V0IHRvICdoYW5kbGVfdXBsb2FkZWRfZmlsZXMnLCBuYW1lIG9mIHRoaXMgY2FsbGJhY2suIFlvdQ0KICogY2FuIHVzZSBhbnkgbmFtZSB5b3Ugd2FudCwgYnV0IHRoZSBmdW5jdGlvbiBtdXN0IGFjY2VwdCBvbmUgdW5pcXVlIHBhcmFtZXRlcjogdGhlIGFycmF5IHRoYXQgY29udGFpbnMgdGhlIGZpbGUNCiAqIGRlc2NyaXB0aW9ucy4NCiAqDQogKiBAcGFyYW0gJGp1cGxvYWRQaHBTdXBwb3J0Q2xhc3MgVGhlIGluc3RhbmNlIG9mIHRoZSBKVXBsb2FkIFBIUCBjbGFzcy4NCiAqIEBwYXJhbSAkZmlsZSAgICAgICAgICAgICAgICAgICBUaGUgYXJyYXkgd2ljaCBjb250YWlucyBpbmZvIGFib3V0IGFsbCB1cGxvYWRlZCBmaWxlcy4NCiAqLw0KZnVuY3Rpb24gaGFuZGxlX3VwbG9hZGVkX2ZpbGVzKCRqdXBsb2FkUGhwU3VwcG9ydENsYXNzLCAkZmlsZXMpDQp7DQoJcmV0dXJuDQoJCSI8UD5XZSBhcmUgaW4gdGhlICdoYW5kbGVfdXBsb2FkZWRfZmlsZXMnIGNhbGxiYWNrIGZ1bmN0aW9uLCBpbiB0aGUgaW5kZXgucGhwIHNjcmlwdC4gVG8gYXZvaWQgZG91YmxlIGNvZGluZywgd2UgIg0KCQkuICJqdXN0IGNhbGwgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhlIEpVcGxvYWQgUEhQIGNsYXNzLiBKdXN0IHJlcGxhY2UgdGhpcyBieSB5b3VyIGNvZGUuLi48L1A+Ig0KCQkuICRqdXBsb2FkUGhwU3VwcG9ydENsYXNzLT5kZWZhdWx0QWZ0ZXJVcGxvYWRNYW5hZ2VtZW50KCk7Ow0KDQp9DQoNCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQoNCg0KLy9GaXJzdDogdGhlIGFwcGxldCBwYXJhbWV0ZXJzDQovLw0KLy8gRGVmYXVsdCB2YWx1ZSBzaG91bGQgd29yayBuaWNlIG9uIG1vc3QgY29uZmlndXJhdGlvbi4gSW4gdGhpcyBzYW1wbGUsIHdlIHVzZSBzb21lIHNwZWNpZmljIHBhcmFtZXRlcnMsIHRvIHNob3cNCi8vIGhvdyB0byB1c2UgdGhpcyBhcnJheS4NCi8vIFNlZSBjb21tZW50IGZvciB0aGUgcGFyYW1ldGVycyB1c2VkIG9uIHRoaXMgZGVtbyBwYWdlLg0KLy8NCi8vIFlvdSBjYW4gdXNlIGFsbCBhcHBsZXQgcGFyYW1ldGVycyBpbiB0aGlzIGFycmF5Lg0KLy8gc2VlIGFsbCBkZXRhaWxzIGh0dHA6Ly9qdXBsb2FkLnNvdXJjZWZvcmdlLm5ldC9ob3d0by1jdXN0b21pemF0aW9uLmh0bWwNCi8vDQokYXBwbGV0UGFyYW1ldGVycyA9IGFycmF5KA0KCS8vRGVmYXVsdCB2YWx1ZSBpcyAuLi4gbWF4aW11bSBzaXplIGZvciBhIGZpbGUgb24gdGhlIGN1cnJlbnQgRlMuIDJHIGlzIHByb2JsYWJseSB0b28gbXVjaCBhbHJlYWR5Lg0KCSdtYXhGaWxlU2l6ZScgICAgICAgICAgID0+ICRKQVZBTWF4U2l6ZVVwbG9hZCAuICdHJywNCgkvLw0KCS8vSW4gdGhlIHNvdXJjZWZvcmdlIHByb2plY3Qgc3RydWN0dXJlLCB0aGUgYXBwbGV0IGphciBmaWxlIGlzIG9uZSBmb2xkZXIgYmVsb3cuIERlZmF1bHQNCgkvL2NvbmZpZ3VyYXRpb24gaXMgb2ssIGlmIHdqaGsuanVwbG9hZC5qYXIgaXMgaW4gdGhlIHNhbWUgZm9sZGVyIGFzIHRoZSBzY3JpcHQgY29udGFpbmluZyB0aGlzIGNhbGwuDQoJJ2FyY2hpdmUnICAgICAgICAgICAgICAgPT4gJ3dqaGsuanVwbG9hZC5qYXInLA0KCSdzaG93TG9nV2luZG93JyAgICAgICAgID0+ICdmYWxzZScsDQoJJ3dpZHRoJyAgICAgICAgICAgICAgICAgPT4gJzEwMCUnLA0KCSdoZWlnaHQnICAgICAgICAgICAgICAgID0+ICczNThweCcsDQoJJ25hbWUnICAgICAgICAgICAgICAgICAgPT4gJ05vIGxpbWl0IFVwbG9hZGVyJywNCgknYWxsb3dlZEZpbGVFeHRlbnNpb25zJyA9PiBpbXBsb2RlKCcvJywgJGV4dCksDQoJLy9UbyBtYW5hZ2UsIG90aGVyIGphciBmaWxlcywgbGlrZSB0aGUgZnRwIGphciBmaWxlcyBpZiBwb3N0VVJMIGlzIGFuIEZUUCBVUkw6DQoJLy8nYXJjaGl2ZScgPT4gJ3dqaGsuanVwbG9hZC5qYXIsamFrYXJ0YS1jb21tb25zLW9yby5qYXIsamFrYXJ0YS1jb21tb25zLW5ldC5qYXInLA0KCS8vDQoJLy9EZWZhdWx0IGFmdGVyVXBsb2FkVVJMIGRpc3BsYXlzIHRoZSBsaXN0IG9mIHVwbG9hZGVkIGZpbGVzIGFib3ZlIHRoZSBhcHBsZXQgKGluIHRoZSA8IS0tSlVQTE9BRF9GSUxFUy0tPiBtYXJrZXJzLCBzZWUgYmVsb3cpDQoJLy9Zb3UgY2FuIHVzZSBhbnkgcGFnZSB5b3Ugd2FudCwgdG8gbWFuYWdlIHRoZSB1cGxvYWRlZCBmaWxlcy4gSGVyZSBpcyBhIHNhbXBsZSwgdGhhdCBhbHNvIG9ubHkgc2hvd3MgdGhlIGxpc3Qgb2YgZmlsZXMuDQoJJ2FmdGVyVXBsb2FkVVJMJyAgICAgICAgPT4gJ3N1Y2Nlc3MucGhwP3BhdGg9JyAuICRfR0VUWydwYXRoJ10sDQoJLy8NCgkvL1RoaXMgZGVtbyBleHBlY3RzIHRoZSBtZDVzdW0gdG8gYmUgc2VudCBieSB0aGUgYXBwbGV0LiBCdXQgdGhlIHBhcmFtZXRlciBpcyBub3QgbWFuZGF0b3J5DQoJLy9UaGlzIHZhbHVlIHNob3VsZCBiZSBzZXQgdG8gZmFsc2UgKG9yIHRoZSBsaW5lIGNvbW1lbnRlZCksIGZvciBiaWcgZmlsZXMsIGFzIG1kNSBjYWxjdWxhdGlvbg0KCS8vbWF5IGJlIGxvbmcgIChOb3RlIHRoaXMgbXVzdCBiZSBzdHJpbmcgYW5kICpub3QqIGJvb2xlYW4gdHJ1ZS9mYWxzZSkNCgknc2VuZE1ENVN1bScgICAgICAgICAgICA9PiAnZmFsc2UnLA0KCS8vDQoJJ2RlYnVnTGV2ZWwnICAgICAgICAgICAgPT4gMCAvLyAxMDAgZGlzYWJsZXMgcmVkaXJlY3QgYWZ0ZXIgdXBsb2FkLCBzbyB3ZSBrZWVwIGl0IGJlbG93LiBUaGlzIHN0aWxsIGdpdmVzIGEgbG90IG9mIGluZm9ybWF0aW9uLCBpbiBjYXNlIG9mIHByb2JsZW0uDQopOw0KDQovLyBmb3IgaHRhY2Nlc3MgcHJvdGVjdGVkIGZvbGRlcnMNCmlmICgoaXNzZXQoJF9TRVJWRVJbJ1BIUF9BVVRIX1VTRVInXSkgJiYgJF9TRVJWRVJbJ1BIUF9BVVRIX1VTRVInXSAhPSAnJykgJiYgJF9TRVJWRVJbJ1BIUF9BVVRIX1VTRVInXSAhPSAnJyAmJiAkX1NFUlZFUlsnUEhQX0FVVEhfVVNFUiddICE9ICcnKQ0Kew0KCSRhcHBsZXRQYXJhbWV0ZXJzWydzcGVjaWZpY0hlYWRlcnMnXSA9ICdBdXRob3JpemF0aW9uOiBCYXNpYyAnIC4gYmFzZTY0X2VuY29kZSgkX1NFUlZFUlsnUEhQX0FVVEhfVVNFUiddIC4gIjoiIC4gJF9TRVJWRVJbJ1BIUF9BVVRIX1BXJ10pOw0KfQ0KDQovLw0KLy9UaGVuOiB0aGUganVwbG9hZCBQSFAgY2xhc3MgcGFyYW1ldGVycw0KJGNsYXNzUGFyYW1ldGVycyA9IGFycmF5KA0KCS8vRmlsZXMgd29uJ3QgYmUgc3RvcmVkIG9uIHRoZSBzZXJ2ZXIuIFVzZWZ1bCBmb3IgZmlyc3QgdGVzdHMgb2YgdGhlIGFwcGxldCBiZWhhdmlvciAuLi4gYW5kIHNvdXJjZWZvcmdlIGRlbW8gc2l0ZSAhDQoJJ2RlbW9fbW9kZScgICAgID0+IGZhbHNlLA0KCS8vDQoJLy9BbGxvdyBjcmVhdGlvbiBvZiBzdWJkaXJlY3Rvcmllcywgd2hlbiB1cGxvYWRpbmcgc2V2ZXJhbCBmb2xkZXJzL2ZpbGVzIChkcmFnIGFuZCBkcm9wIGEgZm9sZGVyIG9uIHRoZSBhcHBsZXQgdG8gdXNlIGl0KS4NCgknYWxsb3dfc3ViZGlycycgPT4gdHJ1ZSwNCgkvLw0KCS8vIFRoZSBjYWxsYmFja0FmdGVyVXBsb2FkTWFuYWdlbWVudCBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCwgb25jZSBhbGwgZmlsZXMgYXJlIHVwbG9hZGVkLCB3aXRoIHRoZSBsaXN0DQoJLy9vZiB1cGxvYWRlZCBmaWxlcyBhcyBhbiBhcmd1bWVudC4gU2VlIHRoZSBhYm92ZSBzYW1wbGUsIGFuZCBjaGFuZ2UgaXQgYWNjb3JkaW5nIHRvIHlvdXIgbmVlZHMuDQoJLy8nY2FsbGJhY2tBZnRlclVwbG9hZE1hbmFnZW1lbnQnID0+ICdoYW5kbGVfdXBsb2FkZWRfZmlsZXMnLA0KCS8vDQoJLy9JIHdvcmsgb24gd2luZG93cy4gVGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiBpcyAvdmFyL3RtcC9qdXBsb2FkX3Rlc3QNCgknZGVzdGRpcicgICAgICAgPT4gJHBhdGggIC8vV2hlcmUgdG8gc3RvcmUgdGhlIGZpbGVzIG9uIHRoZSB3ZWINCgkvLydlcnJvcm1haWwnID0+ICdtZUBteS5kb21haW4ub3JnJywNCik7DQppZiAoICEgZW1wdHkoJGNvbnZlcnRfc3BhY2VzKSkNCnsNCgkkY2xhc3NQYXJhbWV0ZXJzWydjb252ZXJ0X3NwYWNlcyddID0gdHJ1ZTsNCn0NCg0KLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8NCi8vIEluc3RhbnRpYXRlIGFuZCBpbml0aWFsaXplIEpVcGxvYWQgOiBpbnRlZ3JhdGlvbiBvZiB0aGUgYXBwbGV0IGluIHlvdXIgd2ViIHNpdGUuDQokanVwbG9hZFBocFN1cHBvcnRDbGFzcyA9IG5ldyBKVXBsb2FkKCRhcHBsZXRQYXJhbWV0ZXJzLCAkY2xhc3NQYXJhbWV0ZXJzKTsNCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQoNCg0KLy9UaGVuLCBhIHNpbXBsZSBIVE1MIHBhZ2UsIGZvciB0aGUgZGVtbw0KLy8NCi8vICI8IS0tSlVQTE9BRF9GSUxFUy0tPiIgaXMgdGhlIHRhZyB3aGVyZSB0aGUgbGlzdCBvZiB1cGxvYWRlZCBmaWxlcyB3aWxsIGJlIHdyaXR0ZW4uDQovLyAiPCEtLUpVUExPQURfQVBQTEVULS0+IiBpcyB0aGUgcGxhY2Ugd2hlcmUgdGhlIGFwcGxldCB3aWxsIGJlIGludGVncmF0ZWQsIGluIHRoZSB3ZWIgcGFnZS4NCj8+DQo8aHRtbD4NCjxoZWFkPg0KCTwhLS1KVVBMT0FEX0pTQ1JJUFQtLT4NCgk8dGl0bGU+SlVwbG9hZCBSRVNQT05TSVZFIGZpbGVtYW5hZ2VyPC90aXRsZT4NCgk8c3R5bGU+DQoJCWJvZHkgew0KCQkJcGFkZGluZzogMHB4Ow0KCQkJbWFyZ2luOiAwcHg7DQoJCX0NCgk8L3N0eWxlPg0KPC9oZWFkPg0KPGJvZHk+DQo8ZGl2IGFsaWduPSJjZW50ZXIiPjwhLS1KVVBMT0FEX0ZJTEVTLS0+PC9kaXY+DQo8ZGl2IGFsaWduPSJjZW50ZXIiPjwhLS1KVVBMT0FEX0FQUExFVC0tPjwvZGl2Pg0KPC9ib2R5Pg0KPC9odG1sPg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/uploader/jupload.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLyoqDQogKiBUaGlzIGNsYXNzIG1hbmFnZSB1cGxvYWQsIHdpdGggdXNlIG9mIHRoZSBKVXBsb2FkIGFwcGxldC4gSXQncyBib3RoIGEgc2FtcGxlIHRvIHNob3cgaG93IHRvIHVzZSB0aGUgYXBwbGV0LCBhbmQNCiAqIGEgY2xhc3MgeW91IGNhbiB1c2UgZGlyZWN0bHkgaW50byB5b3VyIG93biBhcHBsaWNhdGlvbi4NCiAqDQogKiBSZWNvbW1hbmRhdGlvbjogRG9uJ3QgdXBkYXRlIGl0cyBjb2RlICENCiAqDQogKiBCeSBkb2luZyB0aGlzLCB5b3UnbGwgYmUgYWJsZSB0byByZXVzZSBkaXJlY3RseSBhbnkgdXBkYXRlIGNvbWluZyBmcm9tIHRoZSBKVXBsb2FkIHByb2plY3QsIGluc3RlYWQgb2YgcmVwb3J0aW5nIHlvdXINCiAqIG1vZGlmaWNhdGlvbnMgaW50byBhbnkgbmV3IHZlcnNpb24gb2YgdGhpcyBjbGFzcy4gVGhpcyBndWFyYW50ZWVzIHlvdSB0aGF0IHlvdXIgcHJvamVjdCBjYW4gdXNlIHRoZSBsYXN0IHZlcnNpb24gb2YNCiAqIEpVcGxvYWQsIHdpdGhvdXQgYW55IGNvZGUgbW9kaWZpY2F0aW9uLiBXZSB3b3JrIHNvIHRoYXQgdGhlIGFwcGxldCBiZWhhdmlvciByZW1haW5zIHVuY2hhbmdlZCwgYnV0IGZyb20gdGltZSB0byB0aW1lLA0KICogYSBjaGFuZ2UgY2FuIGFwcGVhci4NCiAqDQogKiBTYW1wbGU6DQogKiAtIFNlZSB0aGUgaW5kZXgucGhwIHNhbXBsZXMsIGluIHRoZSBzYW1lIGZvbGRlci4NCiAqDQogKiBOb3RlczoNCiAqIC0gbWF4Q2h1bmtTaXplOiB0aGlzIGNsYXNzIHVzZSBhIGRlZmF1bHQgbWF4Q2h1bmtTaXplIG9mIDUwMEsgKG9yIGxlc3MsIGRlcGVuZGluZyBvbiB0aGUgc2NyaXB0IG1heCBzaXplKS4gVGhpcyBhbGxvd3MNCiAqIHVwbG9hZCBvZiBGSUxFUyBPRiBBTlkgU0laRSBvbiBxdWl0ZSBhbGwgSVNQIGhvc3RpbmcuIElmIGl0J3MgdG9vIGJpZyBmb3IgeW91ICh0aGUgbWF4IHVwbG9hZCBzaXplIG9mIHlvdXIgSVNQIGlzIGxlc3MNCiAqIHRoYW4gNTAwSyksIG9yIGlmIHlvdSB3YW50IG5vIGNodW5rIGF0IGFsbCwgeW91IGNhbiwgb2YgY291cnNlLCBvdmVycmlkZSB0aGlzIGRlZmF1bHQgdmFsdWUuDQogKg0KICoNCiAqDQogKiBQYXJhbWV0ZXJzOg0KICogLSAkYXBwbGV0cGFyYW1zIGNvbnRhaW5zIGEgbWFwIGZvciBhcHBsZXQgcGFyYW1ldGVyczoga2V5IGlzIHRoZSBhcHBsZXQgcGFyYW1ldGVyIG5hbWUuIFRoZSB2YWx1ZSBpcyB0aGUgdmFsdWUgdG8gdHJhbnNtaXQNCiAqIAkJdG8gdGhlIGFwcGxldC4gU2VlIHRoZSBhcHBsZXQgZG9jdW1lbnRhdGlvbiBmb3IgaW5mb3JtYXRpb24gb24gYWxsIGFwcGxldCBwYXJhbWV0ZXJzLg0KICogLSAkY2xhc3NwYXJhbXMgY29udGFpbnMgdGhlIHBhcmFtZXRlciBzcGVjaWZpYyBmb3IgdGhlIEpVcGxvYWQgY2xhc3MgYmVsb3cuIEhlcmUgYXJlIHRoZSBtYWluIGNsYXNzIHBhcmFtZXRlcnM6DQogKiAJCS0gZGVtb19tb2RlLiBGaWxlcyBhcmUgdXBsb2FkZWQgdG8gdGhlIHNlcnZlciwgYnV0IG5vdCBzdG9yZWQgb24gaXRzIGhhcmQgZHJpdmUuIFRoYXQgaXM6IHlvdSBjYW4gc2ltdWxhdGUgdGhlIGdsb2JhbA0KICogCQliZWhhdmlvciwgYnV0IHdvbid0IGNvbnN1bWUgaGFyZCBkcml2ZSBzcGFjZS4gVGhpcyBtb2RlIGlzIHVzZWQgb24gc291cmNlZm9yZ2Ugd2ViIHNpdGUuDQogKg0KICoNCiAqIE91dHB1dCBnZW5lcmF0ZWQgZm9yIHVwbG9hZGVkIGZpbGVzOg0KICogLSAkZmlsZXMgaXMgYW4gYXJyYXkgb2YgYXJyYXkuIFRoaXMgY2FuIGJlIG1hbmFnZWQgYnkgKGEpIHRoZSBmdW5jdGlvbiBnaXZlbiBpbiB0aGUgY2FsbGJhY2tBZnRlclVwbG9hZE1hbmFnZW1lbnQgY2xhc3MNCiAqIAkJcGFyYW1ldGVyLCBvciAoYikgd2l0aGluIHRoZSBwYWdlIHdob3NlIFVSTCBpcyBnaXZlbiBpbiB0aGUgYWZ0ZXJVcGxvYWRVUkwgYXBwbGV0IHBhcmFtZXRlciwgb3IgKGMpIHlvdSBjYW4gRXh0ZW5kIHRoZQ0KICogCQljbGFzcyBhbmQgcmVkZWNsYXJlIGRlZmF1bHRBZnRlclVwbG9hZE1hbmFnZW1lbnQoKSB0byB5b3VyIG5lZWRzLg0KICogCVNlZSB0aGUgZGVmYXVsdEFmdGVyVXBsb2FkTWFuYWdlbWVudCgpIGZvciBhIHNhbXBsZSBvbiBob3d0byBtYW5hZ2UgdGhpcyBhcnJheS4NCiAqDQogKiAgIFRoaXMgYXJyYXkgY29udGFpbnM6DQogKiAgICAgLSBPbmUgZW50cnkgcGVyIGZpbGUuIEVhY2ggZW50cnkgaXMgYW4gYXJyYXksIHRoYXQgY29udGFpbnMgYWxsIGZpbGVzIHByb3BlcnRpZXMsIHN0b3JlZCBhcyAka2V5PT4kdmFsdWUuDQogKiAJCVRoZSBhdmFpbGFibGUga2V5cyBhcmU6DQogKiAJCSAgLSBuYW1lOiB0aGUgZmlsZW5hbWUsIGFzIGl0IGlzIG5vdyBzdG9yZWQgb24gdGhlIHN5c3RlbS4NCiAqIAkJICAtIHNpemU6IHRoZSBmaWxlIHNpemUNCiAqIAkJICAtIHBhdGg6IHRoZSBhYnNvbHV0ZSBwYXRoLCB3aGVyZSB0aGUgZmlsZSBoYXMgYmVlbiBzdG9yZWQuDQogKiAJCQktIGZ1bGxOYW1lOiB0aGUgY2Fub25pY2FsIGZpbGUgbmFtZSAoaS5lLiBpbmNsdWRpbmcgdGhlIGFic29sdXRlIHBhdGgpDQogKiAJCSAgLSBtZDVzdW06IHRoZSBtZDVzdW0gb2YgdGhlIGZpbGUsIGlmIGZ1cnRoZXIgY29udHJvbCBpcyBuZWVkZWQuDQogKiAJCQktIG1pbWV0eXBlOiB0aGUgY2FsY3VsYXRlZCBtaW1lIHR5cGUgb2YgdGhlIGZpbGUNCiAqIAkJICAtIElmIHRoZSBmb3JtRGF0YSBhcHBsZXQgcGFyYW1ldGVyIGlzIHVzZWQ6IGFsbCBhdHRyaWJ1dGVzIChrZXkgYW5kIHZhbHVlKSB1cGxvYWRlZCBieSB0aGUgYXBwbGV0LCBhcmUgcHV0IGhlcmUsDQogKiAJCQlyZXBlYXRlZCBmb3IgZWFjaCBmaWxlLg0KICoNCiAqIAkJTm90ZTogaWYgeW91IGFyZSB1c2luZyBhIGNhbGxiYWNrIGZ1bmN0aW9uIChpLmUuIGNhbGxiYWNrQWZ0ZXJVcGxvYWRNYW5hZ2VtZW50KSBhbmQgeW91IGRvIG5vdCBzZWUgYSBnbG9iYWwgJ29iamVjdCcgeW91DQogKiAJCQkJCWFyZSBleHBlY3RpbmcgdGhlbiBpdCBtaWdodCBoYXZlIGJlZW4gZGVzdHJveWVkIGJ5IFBIUCAtIGMuZi4gaHR0cDovL2J1Z3MucGhwLm5ldC9idWcucGhwP2lkPTM5NjkzDQogKg0KICovDQoNCmNsYXNzIEpVcGxvYWQgew0KDQoJdmFyICRhcHBsZXRwYXJhbXM7DQoJdmFyICRjbGFzc3BhcmFtczsNCgl2YXIgJGZpbGVzOw0KDQoJcHVibGljIGZ1bmN0aW9uIEpVcGxvYWQoJGFwcGxldHBhcmFtcyA9IGFycmF5KCksICRjbGFzc3BhcmFtcyA9IGFycmF5KCkpIHsNCgkJaWYgKGdldHR5cGUoJGNsYXNzcGFyYW1zKSAhPSAnYXJyYXknKQ0KCQkkdGhpcy0+YWJvcnQoJ0ludmFsaWQgdHlwZSBvZiBwYXJhbWV0ZXIgY2xhc3NwYXJhbXM6IEV4cGVjdGluZyBhbiBhcnJheScpOw0KCQlpZiAoZ2V0dHlwZSgkYXBwbGV0cGFyYW1zKSAhPSAnYXJyYXknKQ0KCQkkdGhpcy0+YWJvcnQoJ0ludmFsaWQgdHlwZSBvZiBwYXJhbWV0ZXIgYXBwbGV0cGFyYW1zOiBFeHBlY3RpbmcgYW4gYXJyYXknKTsNCg0KCQkvLyBzZXQgc29tZSBkZWZhdWx0cyBmb3IgdGhlIGFwcGxldCBwYXJhbXMNCgkJaWYgKCFpc3NldCgkYXBwbGV0cGFyYW1zWydhZnRlclVwbG9hZFVSTCddKSkNCgkJJGFwcGxldHBhcmFtc1snYWZ0ZXJVcGxvYWRVUkwnXSA9ICRfU0VSVkVSWydQSFBfU0VMRiddIC4gJz9hZnRlcnVwbG9hZD0xJzsNCgkJaWYgKCFpc3NldCgkYXBwbGV0cGFyYW1zWyduYW1lJ10pKQ0KCQkkYXBwbGV0cGFyYW1zWyduYW1lJ10gPSAnSlVwbG9hZCc7DQoJCWlmICghaXNzZXQoJGFwcGxldHBhcmFtc1snYXJjaGl2ZSddKSkNCgkJJGFwcGxldHBhcmFtc1snYXJjaGl2ZSddID0gJ3dqaGsuanVwbG9hZC5qYXInOw0KCQlpZiAoIWlzc2V0KCRhcHBsZXRwYXJhbXNbJ2NvZGUnXSkpDQoJCSRhcHBsZXRwYXJhbXNbJ2NvZGUnXSA9ICd3amhrLmp1cGxvYWQyLkpVcGxvYWRBcHBsZXQnOw0KCQlpZiAoIWlzc2V0KCRhcHBsZXRwYXJhbXNbJ2RlYnVnTGV2ZWwnXSkpDQoJCSRhcHBsZXRwYXJhbXNbJ2RlYnVnTGV2ZWwnXSA9IDA7DQoJCWlmICghaXNzZXQoJGFwcGxldHBhcmFtc1snaHR0cFVwbG9hZFBhcmFtZXRlclR5cGUnXSkpDQoJCSRhcHBsZXRwYXJhbXNbJ2h0dHBVcGxvYWRQYXJhbWV0ZXJUeXBlJ10gPSAnYXJyYXknOw0KCQlpZiAoIWlzc2V0KCRhcHBsZXRwYXJhbXNbJ3Nob3dMb2dXaW5kb3cnXSkpDQoJCSRhcHBsZXRwYXJhbXNbJ3Nob3dMb2dXaW5kb3cnXSA9ICgkYXBwbGV0cGFyYW1zWydkZWJ1Z0xldmVsJ10gPiAwKSA/ICd0cnVlJyA6ICdmYWxzZSc7DQoJCWlmICghaXNzZXQoJGFwcGxldHBhcmFtc1snd2lkdGgnXSkpDQoJCSRhcHBsZXRwYXJhbXNbJ3dpZHRoJ10gPSA2NDA7DQoJCWlmICghaXNzZXQoJGFwcGxldHBhcmFtc1snaGVpZ2h0J10pKQ0KCQkkYXBwbGV0cGFyYW1zWydoZWlnaHQnXSA9ICgkYXBwbGV0cGFyYW1zWydzaG93TG9nV2luZG93J10gPT0gJ3RydWUnKSA/IDUwMCA6IDMwMDsNCgkJaWYgKCFpc3NldCgkYXBwbGV0cGFyYW1zWydtYXlzY3JpcHQnXSkpDQoJCSRhcHBsZXRwYXJhbXNbJ21heXNjcmlwdCddID0gJ3RydWUnOw0KCQlpZiAoIWlzc2V0KCRhcHBsZXRwYXJhbXNbJ3NjcmlwdGFibGUnXSkpDQoJCSRhcHBsZXRwYXJhbXNbJ3NjcmlwdGFibGUnXSA9ICdmYWxzZSc7DQoJCS8vaWYgKCFpc3NldCgkYXBwbGV0cGFyYW1zWydzdHJpbmdVcGxvYWRTdWNjZXNzJ10pKQ0KCQkkYXBwbGV0cGFyYW1zWydzdHJpbmdVcGxvYWRTdWNjZXNzJ10gPSAnU1VDQ0VTUyc7DQoJCS8vaWYgKCFpc3NldCgkYXBwbGV0cGFyYW1zWydzdHJpbmdVcGxvYWRFcnJvciddKSkNCgkJJGFwcGxldHBhcmFtc1snc3RyaW5nVXBsb2FkRXJyb3InXSA9ICdFUlJPUjogKC4qKSc7DQoJCSRtYXhwb3N0ID0gJHRoaXMtPnRvYnl0ZXMoaW5pX2dldCgncG9zdF9tYXhfc2l6ZScpKTsNCgkJJG1heG1lbSA9ICR0aGlzLT50b2J5dGVzKGluaV9nZXQoJ21lbW9yeV9saW1pdCcpKTsNCgkJJG1heGZzID0gJHRoaXMtPnRvYnl0ZXMoaW5pX2dldCgndXBsb2FkX21heF9maWxlc2l6ZScpKTsNCgkJJG9iZCA9IGluaV9nZXQoJ29wZW5fYmFzZWRpcicpOw0KCQlpZiAoIWlzc2V0KCRhcHBsZXRwYXJhbXNbJ21heENodW5rU2l6ZSddKSkgew0KCQkJJG1heGNodW5rID0gKCRtYXhwb3N0IDwgJG1heG1lbSkgPyAkbWF4cG9zdCA6ICRtYXhtZW07DQoJCQkkbWF4Y2h1bmsgPSAoJG1heGNodW5rIDwgJG1heGZzKSA/ICRtYXhjaHVuayA6ICRtYXhmczsNCgkJCSRtYXhjaHVuayAvPSA0Ow0KCQkJJG9wdGNodW5rID0gKDUwMDAwMCA+ICRtYXhjaHVuaykgPyAkbWF4Y2h1bmsgOiA1MDAwMDA7DQoJCQkkYXBwbGV0cGFyYW1zWydtYXhDaHVua1NpemUnXSA9ICRvcHRjaHVuazsNCgkJfQ0KCQkkYXBwbGV0cGFyYW1zWydtYXhDaHVua1NpemUnXSA9ICR0aGlzLT50b2J5dGVzKCRhcHBsZXRwYXJhbXNbJ21heENodW5rU2l6ZSddKTsNCgkJaWYgKCFpc3NldCgkYXBwbGV0cGFyYW1zWydtYXhGaWxlU2l6ZSddKSkNCgkJJGFwcGxldHBhcmFtc1snbWF4RmlsZVNpemUnXSA9ICRtYXhmczsNCgkJJGFwcGxldHBhcmFtc1snbWF4RmlsZVNpemUnXSA9ICR0aGlzLT50b2J5dGVzKCRhcHBsZXRwYXJhbXNbJ21heEZpbGVTaXplJ10pOw0KCQlpZiAoaXNzZXQoJGNsYXNzcGFyYW1zWydlcnJvcm1haWwnXSkpIHsNCgkJCSRhcHBsZXRwYXJhbXNbJ3VybFRvU2VuZEVycm9yVG8nXSA9ICRfU0VSVkVSWyJQSFBfU0VMRiJdIC4gJz9lcnJvcm1haWwnOw0KCQl9DQoNCgkJLy8gU2FtZSBmb3IgY2xhc3MgcGFyYW1ldGVycw0KCQlpZiAoIWlzc2V0KCRjbGFzc3BhcmFtc1snZGVtb19tb2RlJ10pKQ0KCQkkY2xhc3NwYXJhbXNbJ2RlbW9fbW9kZSddID0gZmFsc2U7DQoJCWlmICgkY2xhc3NwYXJhbXNbJ2RlbW9fbW9kZSddKSB7DQoJCQkkY2xhc3NwYXJhbXNbJ2NyZWF0ZV9kZXN0ZGlyJ10gPSBmYWxzZTsNCgkJCSRjbGFzc3BhcmFtc1snYWxsb3dfc3ViZGlycyddID0gdHJ1ZTsNCgkJCSRjbGFzc3BhcmFtc1snYWxsb3dfemVyb3NpemVkJ10gPSB0cnVlOw0KCQkJJGNsYXNzcGFyYW1zWydkdXBsaWNhdGUnXSA9ICdvdmVyd3JpdGUnOw0KCQl9DQoJCWlmICghaXNzZXQoJGNsYXNzcGFyYW1zWydkZWJ1Z19waHAnXSkpCQkJCQkJCQkJCQkvLyBzZXQgdHJ1ZSB0byBsb2cgc29tZSBtZXNzYWdlcyBpbiBQSFAgbG9nDQoJCSRjbGFzc3BhcmFtc1snZGVidWdfcGhwJ10gPSBmYWxzZTsNCgkJaWYgKCFpc3NldCgkdGhpcy0+Y2xhc3NwYXJhbXNbJ2FsbG93ZWRfbWltZV90eXBlcyddKSkJCQkJLy8gYXJyYXkgb2YgYWxsb3dlZCBNSU1FIHR5cGUNCgkJJGNsYXNzcGFyYW1zWydhbGxvd2VkX21pbWVfdHlwZXMnXSA9ICdhbGwnOw0KCQlpZiAoIWlzc2V0KCR0aGlzLT5jbGFzc3BhcmFtc1snYWxsb3dlZF9maWxlX2V4dGVuc2lvbnMnXSkpIAkvLyBhcnJheSBvZiBhbGxvd2VkIGZpbGUgZXh0ZW5zaW9ucw0KCQkkY2xhc3NwYXJhbXNbJ2FsbG93ZWRfZmlsZV9leHRlbnNpb25zJ10gPSAnYWxsJzsNCgkJaWYgKCFpc3NldCgkY2xhc3NwYXJhbXNbJ3ZlcmJvc2VfZXJyb3JzJ10pKQkJCQkJCS8vIHNob3VsZG4ndCBkaXNwbGF5IHNlcnZlciBpbmZvIG9uIGEgcHJvZHVjdGlvbiBzaXRlIQ0KCQkkY2xhc3NwYXJhbXNbJ3ZlcmJvc2VfZXJyb3JzJ10gPSB0cnVlOw0KCQlpZiAoIWlzc2V0KCRjbGFzc3BhcmFtc1snc2Vzc2lvbl9yZWdlbmVyYXRlJ10pKQ0KCQkkY2xhc3NwYXJhbXNbJ3Nlc3Npb25fcmVnZW5lcmF0ZSddID0gZmFsc2U7DQoJCWlmICghaXNzZXQoJGNsYXNzcGFyYW1zWydjcmVhdGVfZGVzdGRpciddKSkNCgkJJGNsYXNzcGFyYW1zWydjcmVhdGVfZGVzdGRpciddID0gdHJ1ZTsNCgkJaWYgKCFpc3NldCgkY2xhc3NwYXJhbXNbJ2FsbG93X3N1YmRpcnMnXSkpDQoJCSRjbGFzc3BhcmFtc1snYWxsb3dfc3ViZGlycyddID0gZmFsc2U7DQoJCWlmICghaXNzZXQoJGNsYXNzcGFyYW1zWydzcGFjZXNfaW5fc3ViZGlycyddKSkNCgkJJGNsYXNzcGFyYW1zWydzcGFjZXNfaW5fc3ViZGlycyddID0gZmFsc2U7DQoJCWlmICghaXNzZXQoJGNsYXNzcGFyYW1zWydjb252ZXJ0X3NwYWNlcyddKSkgICAgICAgICAvLyBzZXQgdG8gdHJ1ZSB0byBjb252ZXJ0IHNwYWNlcyBpbiBmaWxlbmFtZXMgdG8gXw0KCQkkY2xhc3NwYXJhbXNbJ2NvbnZlcnRfc3BhY2VzJ10gPSBmYWxzZTsNCgkJaWYgKCFpc3NldCgkY2xhc3NwYXJhbXNbJ2FsbG93X3plcm9zaXplZCddKSkNCgkJJGNsYXNzcGFyYW1zWydhbGxvd196ZXJvc2l6ZWQnXSA9IGZhbHNlOw0KCQlpZiAoIWlzc2V0KCRjbGFzc3BhcmFtc1snZHVwbGljYXRlJ10pKQ0KCQkkY2xhc3NwYXJhbXNbJ2R1cGxpY2F0ZSddID0gJ3JlbmFtZSc7DQoJCWlmICghaXNzZXQoJGNsYXNzcGFyYW1zWydkaXJwZXJtJ10pKQ0KCQkkY2xhc3NwYXJhbXNbJ2RpcnBlcm0nXSA9IDA3NTU7DQoJCWlmICghaXNzZXQoJGNsYXNzcGFyYW1zWydmaWxlcGVybSddKSkNCgkJJGNsYXNzcGFyYW1zWydmaWxlcGVybSddID0gMDY0NDsNCgkJaWYgKCFpc3NldCgkY2xhc3NwYXJhbXNbJ2Rlc3RkaXInXSkpIHsNCgkJCWlmICgkb2JkICE9ICcnKQ0KCQkJJGNsYXNzcGFyYW1zWydkZXN0ZGlyJ10gPSAkb2JkOw0KCQkJZWxzZQ0KCQkJJGNsYXNzcGFyYW1zWydkZXN0ZGlyJ10gPSAnL3Zhci90bXAvanVwbG9hZF90ZXN0JzsNCgkJfWVsc2V7DQoJCQkkY2xhc3NwYXJhbXNbJ2Rlc3RkaXInXT1zdHJfcmVwbGFjZSgnficsJyAnLCRjbGFzc3BhcmFtc1snZGVzdGRpciddKTsNCgkJfQ0KCQlpZiAoJGNsYXNzcGFyYW1zWydjcmVhdGVfZGVzdGRpciddKSB7DQoJCQkkX3VtYXNrID0gdW1hc2soMCk7IAkvLyBvdmVycmlkZSB0aGUgc3lzdGVtIG1hc2sNCgkJCUBta2RpcigkY2xhc3NwYXJhbXNbJ2Rlc3RkaXInXSwgJGNsYXNzcGFyYW1zWydkaXJwZXJtJ10pOw0KCQkJdW1hc2soJF91bWFzayk7DQoJCX0NCgkJaWYgKCFpc19kaXIoJGNsYXNzcGFyYW1zWydkZXN0ZGlyJ10pICYmIGlzX3dyaXRhYmxlKCRjbGFzc3BhcmFtc1snZGVzdGRpciddKSkNCgkJJHRoaXMtPmFib3J0KCdEZXN0aW5hdGlvbiBkaXIgbm90IGFjY2Vzc2libGUnKTsNCgkJaWYgKCFpc3NldCgkY2xhc3NwYXJhbXNbJ3RtcF9wcmVmaXgnXSkpDQoJCSRjbGFzc3BhcmFtc1sndG1wX3ByZWZpeCddID0gJ2p1dG1wLic7DQoJCWlmICghaXNzZXQoJGNsYXNzcGFyYW1zWyd2YXJfcHJlZml4J10pKQ0KCQkkY2xhc3NwYXJhbXNbJ3Zhcl9wcmVmaXgnXSA9ICdqdXZhci4nOw0KCQlpZiAoIWlzc2V0KCRjbGFzc3BhcmFtc1snanNjcmlwdF93cmFwcGVyJ10pKQ0KCQkkY2xhc3NwYXJhbXNbJ2pzY3JpcHRfd3JhcHBlciddID0gJ0pVcGxvYWRTZXRQcm9wZXJ0eSc7DQoJCWlmICghaXNzZXQoJGNsYXNzcGFyYW1zWyd0YWdfanNjcmlwdCddKSkNCgkJJGNsYXNzcGFyYW1zWyd0YWdfanNjcmlwdCddID0gJzwhLS1KVVBMT0FEX0pTQ1JJUFQtLT4nOw0KCQlpZiAoIWlzc2V0KCRjbGFzc3BhcmFtc1sndGFnX2FwcGxldCddKSkNCgkJJGNsYXNzcGFyYW1zWyd0YWdfYXBwbGV0J10gPSAnPCEtLUpVUExPQURfQVBQTEVULS0+JzsNCgkJaWYgKCFpc3NldCgkY2xhc3NwYXJhbXNbJ3RhZ19mbGlzdCddKSkNCgkJJGNsYXNzcGFyYW1zWyd0YWdfZmxpc3QnXSA9ICc8IS0tSlVQTE9BRF9GSUxFUy0tPic7DQoJCWlmICghaXNzZXQoJGNsYXNzcGFyYW1zWydodHRwX2ZsaXN0X3N0YXJ0J10pKQ0KCQkkY2xhc3NwYXJhbXNbJ2h0dHBfZmxpc3Rfc3RhcnQnXSA9DQogICAgICAgICAgICAJCSI8dGFibGUgYm9yZGVyPScxJz48VFI+PFRIPkZpbGVuYW1lPC9USD48VEg+ZmlsZSBzaXplPC9USD48VEg+UmVsYXRpdmUgcGF0aDwvVEg+PFRIPkZ1bGwgbmFtZTwvVEg+PFRIPm1kNXN1bTwvVEg+PFRIPlNwZWNpZmljIHBhcmFtZXRlcnM8L1RIPjwvVFI+IjsNCgkJaWYgKCFpc3NldCgkY2xhc3NwYXJhbXNbJ2h0dHBfZmxpc3RfZW5kJ10pKQ0KCQkkY2xhc3NwYXJhbXNbJ2h0dHBfZmxpc3RfZW5kJ10gPSAiPC90YWJsZT5cbiI7DQoJCWlmICghaXNzZXQoJGNsYXNzcGFyYW1zWydodHRwX2ZsaXN0X2ZpbGVfYmVmb3JlJ10pKQ0KCQkkY2xhc3NwYXJhbXNbJ2h0dHBfZmxpc3RfZmlsZV9iZWZvcmUnXSA9ICI8dHI+PHRkPiI7DQoJCWlmICghaXNzZXQoJGNsYXNzcGFyYW1zWydodHRwX2ZsaXN0X2ZpbGVfYmV0d2VlbiddKSkNCgkJJGNsYXNzcGFyYW1zWydodHRwX2ZsaXN0X2ZpbGVfYmV0d2VlbiddID0gIjwvdGQ+PHRkPiI7DQoJCWlmICghaXNzZXQoJGNsYXNzcGFyYW1zWydodHRwX2ZsaXN0X2ZpbGVfYWZ0ZXInXSkpDQoJCSRjbGFzc3BhcmFtc1snaHR0cF9mbGlzdF9maWxlX2FmdGVyJ10gPSAiPC90ZD48L3RyPlxuIjsNCg0KCQkkdGhpcy0+YXBwbGV0cGFyYW1zID0gJGFwcGxldHBhcmFtczsNCgkJJHRoaXMtPmNsYXNzcGFyYW1zID0gJGNsYXNzcGFyYW1zOw0KCQkkdGhpcy0+cGFnZV9zdGFydCgpOw0KCX0NCg0KCS8qKg0KCSAqIFJldHVybiBhbiBhcnJheSBvZiB1cGxvYWRlZCBmaWxlcyAqIFRoZSBhcnJheSBjb250YWluczogbmFtZSwgc2l6ZSwgdG1wX25hbWUsIGVycm9yLA0KCSAqIHJlbGF0aXZlUGF0aCwgbWQ1c3VtLCBtaW1ldHlwZSwgZnVsbE5hbWUsIHBhdGgNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gdXBsb2FkZWRmaWxlcygpIHsNCgkJcmV0dXJuICR0aGlzLT5maWxlczsNCgl9DQoNCgkvKioNCgkgKiBMb2cgYSBtZXNzYWdlIG9uIHRoZSBjdXJyZW50IG91dHB1dCwgYXMgYSBIVE1MIGNvbW1lbnQuDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGxvZ0RlYnVnKCRmdW5jdGlvbiwgJG1zZywgJGh0bWxDb21tZW50PXRydWUpIHsNCgkJJG91dHB1dCA9ICJbREVCVUddIFskZnVuY3Rpb25dICRtc2ciOw0KCQlpZiAoJGh0bWxDb21tZW50KSB7DQoJCQllY2hvKCI8IS0tICRvdXRwdXQgLS0+XHJcbiIpOw0KCQl9IGVsc2Ugew0KCQkJZWNobygiJG91dHB1dFxyXG4iKTsNCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIExvZyBhIG1lc3NhZ2UgdG8gdGhlIFBIUCBsb2cuDQoJICogRGVjbGFyZWQgInByb3RlY3RlZCIgc28gaXQgbWF5IGJlIEV4dGVuZGVkIGlmIHlvdSByZXF1aXJlIGN1c3RvbWlzZWQgbG9nZ2luZyAoZS5nLiBwYXJ0aWN1bGFyIGxvZyBmaWxlIGxvY2F0aW9uKS4NCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gbG9nUEhQRGVidWcoJGZ1bmN0aW9uLCAkbXNnKSB7DQoJCWlmICgkdGhpcy0+Y2xhc3NwYXJhbXNbJ2RlYnVnX3BocCddID09PSB0cnVlKSB7DQoJCQkkb3V0cHV0ID0gIltERUJVR10gWyRmdW5jdGlvbl0gIi4kdGhpcy0+YXJyYXlleHBhbmQoJG1zZyk7DQoJCQllcnJvcl9sb2coJG91dHB1dCk7DQoJCX0NCgl9DQoNCglwcml2YXRlIGZ1bmN0aW9uIGFycmF5ZXhwYW5kKCRhcnJheSkgew0KCQkkb3V0cHV0ID0gJyc7DQoJCWlmIChpc19hcnJheSgkYXJyYXkpKSB7DQoJCQlmb3JlYWNoICgkYXJyYXkgYXMgJGtleSA9PiAkdmFsdWUpIHsNCgkJCQkkb3V0cHV0IC49ICJcbiAiLiRrZXkuJyA9PiAnLiR0aGlzLT5hcnJheWV4cGFuZCgkdmFsdWUpOw0KCQkJfQ0KCQl9IGVsc2Ugew0KCQkJJG91dHB1dCAuPSAkYXJyYXk7DQoJCX0NCgkJcmV0dXJuICRvdXRwdXQ7DQoJfQ0KDQoNCgkvKioNCgkgKiBDb252ZXJ0IGEgdmFsdWUgZW5kaW5nIGluICdHJywnTScgb3IgJ0snIHRvIGJ5dGVzDQoJICoNCgkgKi8NCglwcml2YXRlIGZ1bmN0aW9uIHRvYnl0ZXMoJHZhbCkgew0KCQkkdmFsID0gdHJpbSgkdmFsKTsNCgkJJGxhc3QgPSBmaXhfc3RydG9sb3dlcigkdmFse3N0cmxlbigkdmFsKS0xfSk7DQoJCXN3aXRjaCgkbGFzdCkgew0KCQkJY2FzZSAnZyc6DQoJCQkJJHZhbCAqPSAxMDI0Ow0KCQkJY2FzZSAnbSc6DQoJCQkJJHZhbCAqPSAxMDI0Ow0KCQkJY2FzZSAnayc6DQoJCQkJJHZhbCAqPSAxMDI0Ow0KCQl9DQoJCXJldHVybiAkdmFsOw0KCX0NCg0KCS8qKg0KCSAqIEJ1aWxkIGEgc3RyaW5nLCBjb250YWluaW5nIGEgamF2YXNjcmlwdCB3cmFwcGVyIGZ1bmN0aW9uDQoJICogZm9yIHNldHRpbmcgYXBwbGV0IHByb3BlcnRpZXMgdmlhIEphdmFTY3JpcHQuIFRoaXMgaXMgbmVjZXNzYXJ5LA0KCSAqIGJlY2F1c2Ugd2UgdXNlIHRoZSAibW9kZXJuIiBtZXRob2Qgb2YgaW5jbHVkaW5nIHRoZSBhcHBsZXQgKHVzaW5nDQoJICogPG9iamVjdD4gcmVzcC4gPGVtYmVkPiB0YWdzKSBpbiBvcmRlciB0byB0cmlnZ2VyIGF1dG9tYXRpYyBKUkUgZG93bmxvYWRpbmcuDQoJICogVGhlcmVmb3JlLCBpbiBOZXRzY2FwZS1saWtlIGJyb3dzZXJzLCB0aGUgYXBwbGV0IGlzIGFjY2Vzc2libGUgdmlhDQoJICogdGhlIGRvY3VtZW50LmVtYmVkc1tdIGFycmF5IHdoaWxlIGluIG90aGVycywgaXQgaXMgYWNjZXNzaWJsZSB2aWEgdGhlDQoJICogZG9jdW1lbnQuYXBwbGV0c1tdIGFycmF5Lg0KCSAqDQoJICogQHJldHVybiBBIHN0cmluZywgY29udGFpbmluZyB0aGUgbmVjZXNzYXJ5IHdyYXBwZXIgZnVuY3Rpb24gKG5hbWVkIEpVcGxvYWRTZXRQcm9wZXJ0eSkNCgkgKi8NCglwcml2YXRlIGZ1bmN0aW9uIHN0cl9qc2luaXQoKSB7DQoJCSROID0gIlxuIjsNCgkJJG5hbWUgPSAkdGhpcy0+YXBwbGV0cGFyYW1zWyduYW1lJ107DQoJCSRyZXQgPSAnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPicuJE47DQoJCSRyZXQgLj0gJzwhLS0nLiROOw0KCQkkcmV0IC49ICdmdW5jdGlvbiAnLiR0aGlzLT5jbGFzc3BhcmFtc1snanNjcmlwdF93cmFwcGVyJ10uJyhuYW1lLCB2YWx1ZSkgeycuJE47DQoJCSRyZXQgLj0gJyAgZG9jdW1lbnQuYXBwbGV0c1siJy4kbmFtZS4nIl0gPT0gbnVsbCB8fCBkb2N1bWVudC5hcHBsZXRzWyInLiRuYW1lLiciXS5zZXRQcm9wZXJ0eShuYW1lLHZhbHVlKTsnLiROOw0KCQkkcmV0IC49ICcgIGRvY3VtZW50LmVtYmVkc1siJy4kbmFtZS4nIl0gPT0gbnVsbCB8fCBkb2N1bWVudC5lbWJlZHNbIicuJG5hbWUuJyJdLnNldFByb3BlcnR5KG5hbWUsdmFsdWUpOycuJE47DQoJCSRyZXQgLj0gJ30nLiROOw0KCQkkcmV0IC49ICcvLy0tPicuJE47DQoJCSRyZXQgLj0gJzwvc2NyaXB0Pic7DQoJCXJldHVybiAkcmV0Ow0KCX0NCg0KCS8qKg0KCSAqIEJ1aWxkIGEgc3RyaW5nLCBjb250YWluaW5nIHRoZSBhcHBsZXQgdGFnIHdpdGggYWxsIHBhcmFtZXRlcnMuDQoJICoNCgkgKiBAcmV0dXJuIEEgc3RyaW5nLCBjb250YWluaW5nIHRoZSBhcHBsZXQgdGFnDQoJICovDQoJcHJpdmF0ZSBmdW5jdGlvbiBzdHJfYXBwbGV0KCkgew0KCQkkTiA9ICJcbiI7DQoJCSRwYXJhbXMgPSAkdGhpcy0+YXBwbGV0cGFyYW1zOw0KCQkvLyByZXR1cm4gdGhlIGFjdHVhbCBhcHBsZXQgdGFnDQoJCSRyZXQgPSAnPG9iamVjdCBjbGFzc2lkID0gImNsc2lkOjhBRDlDODQwLTA0NEUtMTFEMS1CM0U5LTAwODA1RjQ5OUQ5MyInLiROOw0KCQkkcmV0IC49ICcgIGNvZGViYXNlID0gImh0dHA6Ly9qYXZhLnN1bi5jb20vdXBkYXRlLzEuNS4wL2ppbnN0YWxsLTFfNS13aW5kb3dzLWk1ODYuY2FiI1ZlcnNpb249NSwwLDAsMyInLiROOw0KCQkkcmV0IC49ICcgIHdpZHRoID0gIicuJHBhcmFtc1snd2lkdGgnXS4nIicuJE47DQoJCSRyZXQgLj0gJyAgaGVpZ2h0ID0gIicuJHBhcmFtc1snaGVpZ2h0J10uJyInLiROOw0KCQkkcmV0IC49ICcgIG5hbWUgPSAiJy4kcGFyYW1zWyduYW1lJ10uJyI+Jy4kTjsNCgkJZm9yZWFjaCAoJHBhcmFtcyBhcyAka2V5ID0+ICR2YWwpIHsNCgkJCWlmICgka2V5ICE9ICd3aWR0aCcgJiYgJGtleSAhPSAnaGVpZ2h0JykNCgkJCSRyZXQgLj0gJyAgPHBhcmFtIG5hbWUgPSAiJy4ka2V5LiciIHZhbHVlID0gIicuJHZhbC4nIiAvPicuJE47DQoJCX0NCgkJJHJldCAuPSAnICA8Y29tbWVudD4nLiROOw0KCQkkcmV0IC49ICcgICAgPGVtYmVkJy4kTjsNCgkJJHJldCAuPSAnICAgICAgdHlwZSA9ICJhcHBsaWNhdGlvbi94LWphdmEtYXBwbGV0O3ZlcnNpb249MS41IicuJE47DQoJCWZvcmVhY2ggKCRwYXJhbXMgYXMgJGtleSA9PiAkdmFsKQ0KCQkkcmV0IC49ICcgICAgICAnLiRrZXkuJyA9ICInLiR2YWwuJyInLiROOw0KCQkkcmV0IC49ICcgICAgICBwbHVnaW5zcGFnZSA9ICJodHRwOi8vamF2YS5zdW4uY29tL3Byb2R1Y3RzL3BsdWdpbi9pbmRleC5odG1sI2Rvd25sb2FkIj4nLiROOw0KCQkkcmV0IC49ICcgICAgICA8bm9lbWJlZD4nLiROOw0KCQkkcmV0IC49ICcgICAgICAgIEphdmEgMS41IG9yIGhpZ2hlciBwbHVnaW4gcmVxdWlyZWQuJy4kTjsNCgkJJHJldCAuPSAnICAgICAgPC9ub2VtYmVkPicuJE47DQoJCSRyZXQgLj0gJyAgICA8L2VtYmVkPicuJE47DQoJCSRyZXQgLj0gJyAgPC9jb21tZW50PicuJE47DQoJCSRyZXQgLj0gJzwvb2JqZWN0Pic7DQoJCXJldHVybiAkcmV0Ow0KCX0NCg0KCXByaXZhdGUgZnVuY3Rpb24gYWJvcnQoJG1zZyA9ICcnKSB7DQoJCSR0aGlzLT5jbGVhbnVwKCk7DQoJCWlmICgkbXNnICE9ICcnKQ0KCQlkaWUoc3RyX3JlcGxhY2UoJyguKiknLCRtc2csJHRoaXMtPmFwcGxldHBhcmFtc1snc3RyaW5nVXBsb2FkRXJyb3InXSkuIlxuIik7DQoJCWV4aXQ7DQoJfQ0KDQoJcHJpdmF0ZSBmdW5jdGlvbiB3YXJuaW5nKCRtc2cgPSAnJykgew0KCQkkdGhpcy0+Y2xlYW51cCgpOw0KCQlpZiAoJG1zZyAhPSAnJykNCgkJZWNobygnV0FSTklORzogJy4kbXNnLiJcbiIpOw0KCQllY2hvICR0aGlzLT5hcHBsZXRwYXJhbXNbJ3N0cmluZ1VwbG9hZFN1Y2Nlc3MnXS4iXG4iOw0KCQlleGl0Ow0KCX0NCg0KCXByaXZhdGUgZnVuY3Rpb24gY2xlYW51cCgpIHsNCgkJLy8gcmVtb3ZlIGFsbCB1cGxvYWRlZCBmaWxlcyBvZiAqdGhpcyogcmVxdWVzdA0KCQlpZiAoaXNzZXQoJF9GSUxFUykpIHsNCgkJCWZvcmVhY2ggKCRfRklMRVMgYXMgJGtleSA9PiAkdmFsKQ0KCQkJQHVubGluaygkdmFsWyd0bXBfbmFtZSddKTsNCgkJfQ0KCQkvLyByZW1vdmUgYWNjdW11bGF0ZWQgZmlsZSwgaWYgYW55Lg0KCQlAdW5saW5rKCR0aGlzLT5jbGFzc3BhcmFtc1snZGVzdGRpciddLicvJy4kdGhpcy0+Y2xhc3NwYXJhbXNbJ3RtcF9wcmVmaXgnXS5zZXNzaW9uX2lkKCkpOw0KCQlAdW5saW5rKCR0aGlzLT5jbGFzc3BhcmFtc1snZGVzdGRpciddLicvJy4kdGhpcy0+Y2xhc3NwYXJhbXNbJ3RtcF9wcmVmaXgnXS4ndG1wJy5zZXNzaW9uX2lkKCkpOw0KCQkvLyByZXNldCBzZXNzaW9uIHZhcg0KCQkkX1NFU1NJT05bJ1JGJ11bJHRoaXMtPmNsYXNzcGFyYW1zWyd2YXJfcHJlZml4J10uJ3NpemUnXSA9IDA7DQoJCXJldHVybjsNCgl9DQoNCglwcml2YXRlIGZ1bmN0aW9uIG1rZGlycCgkcGF0aCkgew0KCQkvLyBjcmVhdGUgc3ViZGlyIChoaWVyYXJ5KSBiZWxvdyBkZXN0ZGlyOw0KCQkkZGlycyA9IGV4cGxvZGUoJy8nLCAkcGF0aCk7DQoJCSRwYXRoID0gJHRoaXMtPmNsYXNzcGFyYW1zWydkZXN0ZGlyJ107DQoJCWZvcmVhY2ggKCRkaXJzIGFzICRkaXIpIHsNCgkJCSRwYXRoIC49ICcvJy4kZGlyOw0KCQkJaWYgKCFmaWxlX2V4aXN0cygkcGF0aCkpIHsgIC8vIEAgZG9lcyBOT1QgYWx3YXlzIHN1cHJlc3MgdGhlIGVycm9yIQ0KCQkJCSRfdW1hc2sgPSB1bWFzaygwKTsgCS8vIG92ZXJyaWRlIHRoZSBzeXN0ZW0gbWFzaw0KCQkJCUBta2RpcigkcGF0aCwgJHRoaXMtPmNsYXNzcGFyYW1zWydkaXJwZXJtJ10pOw0KCQkJCXVtYXNrKCRfdW1hc2spOw0KCQkJfQ0KCQl9DQoJCWlmICghaXNfZGlyKCRwYXRoKSAmJiBpc193cml0YWJsZSgkcGF0aCkpDQoJCSR0aGlzLT5hYm9ydCgnRGVzdGluYXRpb24gZGlyIG5vdCBhY2Nlc3NpYmxlJyk7DQoJfQ0KDQoJLyoqDQoJICogVGhpcyBtZXRob2Q6DQoJICogLSBSZXBsYWNlcyBzb21lIHBvdGVudGlhbGx5IGRhbmdlcm91cyBjaGFyYWN0ZXJzIGJ5ICdfJyAoaW4gdGhlIGdpdmVuIG5hbWUgYW4gcmVsYXRpdmUgcGF0aCkNCgkgKiAtIENoZWNrcyBpZiBhIGZpbGVzIG9mIHRoZSBzYW1lIG5hbWUgYWxyZWFkeSBleGlzdHMuDQoJICogCQktIElmIG5vOiBubyBwcm9ibGVtLg0KCSAqIAkJLSBJZiB5ZXMsIGFuZCB0aGUgZHVwbGljYXRlIGNsYXNzIHBhcmFtIGlzIHNldCB0byByZW5hbWUsIHRoZSBmaWxlIGlzIHJlbmFtZWQuDQoJICogCQktIElmIHllcywgYW5kIHRoZSBkdXBsaWNhdGUgY2xhc3MgcGFyYW0gaXMgc2V0IHRvIG92ZXJ3cml0ZSwgdGhlIGZpbGUgaXMgbm90IHJlbmFtZWQuIFRoZSBleGlzdGluZyBvbmUgd2lsbCBiZSBlcmFzZWQuDQoJICogCQktIElmIHllcywgYW5kIHRoZSBkdXBsaWNhdGUgY2xhc3MgcGFyYW0gaXMgc2V0IHRvIHJlamVjdCwgYW4gZXJyb3IgaXMgdGhyb3duLg0KCSAqLw0KCXByaXZhdGUgZnVuY3Rpb24gZHN0ZmluYWwoJiRuYW1lLCAmJHN1YmRpcikgew0KCQkkbmFtZSA9IHByZWdfcmVwbGFjZSgnIVtgJFxcXFwvfF0hJywgJ18nLCAkbmFtZSk7DQoJCWlmICgkdGhpcy0+Y2xhc3NwYXJhbXNbJ2NvbnZlcnRfc3BhY2VzJ10pIHsNCiAgICAgICAgICAgICRuYW1lID0gc3RyX3JlcGxhY2UoJyAnLCAnXycsICRuYW1lKTsNCgkJfQ0KCQlpZiAoJHRoaXMtPmNsYXNzcGFyYW1zWydhbGxvd19zdWJkaXJzJ10gJiYgKCRzdWJkaXIgIT0gJycpKSB7DQoJCQkkc3ViZGlyID0gdHJpbShwcmVnX3JlcGxhY2UoJyFcXFxcIScsJy8nLCRzdWJkaXIpLCcvJyk7DQoJCQkkc3ViZGlyID0gcHJlZ19yZXBsYWNlKCchW2AkfF0hJywgJ18nLCAkc3ViZGlyKTsNCgkJCWlmICghJHRoaXMtPmNsYXNzcGFyYW1zWydzcGFjZXNfaW5fc3ViZGlycyddKSB7DQoJCQkJJHN1YmRpciA9IHN0cl9yZXBsYWNlKCcgJywnXycsJHN1YmRpcik7DQoJCQl9DQoJCQkvLyByZWN1cnNpdmVseSBjcmVhdGUgc3ViZGlyDQoJCQlpZiAoISR0aGlzLT5jbGFzc3BhcmFtc1snZGVtb19tb2RlJ10pDQoJCQkkdGhpcy0+bWtkaXJwKCRzdWJkaXIpOw0KCQkJLy8gYXBwZW5kIGEgc2xhc2gNCgkJCSRzdWJkaXIgLj0gJy8nOw0KCQl9IGVsc2Ugew0KCQkJJHN1YmRpciA9ICcnOw0KCQl9DQoJCSRyZXQgPSAkdGhpcy0+Y2xhc3NwYXJhbXNbJ2Rlc3RkaXInXS4nLycuJHN1YmRpci4kbmFtZTsNCgkJaWYgKGZpbGVfZXhpc3RzKCRyZXQpKSB7DQoJCQlpZiAoJHRoaXMtPmNsYXNzcGFyYW1zWydkdXBsaWNhdGUnXSA9PSAnb3ZlcndyaXRlJykgew0KCQkJCXJldHVybiAkcmV0Ow0KCQkJfQ0KCQkJaWYgKCR0aGlzLT5jbGFzc3BhcmFtc1snZHVwbGljYXRlJ10gPT0gJ3JlamVjdCcpIHsNCgkJCQkkdGhpcy0+YWJvcnQoJ0EgZmlsZSB3aXRoIHRoZSBzYW1lIG5hbWUgYWxyZWFkeSBleGlzdHMnKTsNCgkJCX0NCgkJCWlmICgkdGhpcy0+Y2xhc3NwYXJhbXNbJ2R1cGxpY2F0ZSddID09ICd3YXJuaW5nJykgew0KCQkJCSR0aGlzLT53YXJuaW5nKCJGaWxlICRuYW1lIGFscmVhZHkgZXhpc3RzIC0gcmVqZWN0ZWQiKTsNCgkJCX0NCgkJCWlmICgkdGhpcy0+Y2xhc3NwYXJhbXNbJ2R1cGxpY2F0ZSddID09ICdyZW5hbWUnKSB7DQoJCQkJJGNudCA9IDE7DQoJCQkJJGRpciA9ICR0aGlzLT5jbGFzc3BhcmFtc1snZGVzdGRpciddLicvJy4kc3ViZGlyOw0KCQkJCSRleHQgPSBzdHJyY2hyKCRuYW1lLCAnLicpOw0KCQkJCWlmICgkZXh0KSB7DQoJCQkJCSRuYW1lV2l0aG91dEV4dGVuc2lvbiA9IHN1YnN0cigkbmFtZSwgMCwgc3RybGVuKCRuYW1lKSAtIHN0cmxlbigkZXh0KSk7DQoJCQkJfSBlbHNlIHsNCgkJCQkJJGV4dCA9ICcnOw0KCQkJCQkkbmFtZVdpdGhvdXRFeHRlbnNpb24gPSAkbmFtZTsNCgkJCQl9DQoNCgkJCQkkcnRyeSA9ICRkaXIuJG5hbWVXaXRob3V0RXh0ZW5zaW9uLidfJy4kY250LiRleHQ7DQoJCQkJd2hpbGUgKGZpbGVfZXhpc3RzKCRydHJ5KSkgew0KCQkJCQkkY250Kys7DQoJCQkJCSRydHJ5ID0gJGRpci4kbmFtZVdpdGhvdXRFeHRlbnNpb24uJy5fJy4kY250LiRleHQ7DQoJCQkJfQ0KCQkJCS8vV2Ugc3RvcmUgdGhlIHJlc3VsdCBuYW1lIGluIHRoZSBieVJlZmVyZW5jZSBuYW1lIHBhcmFtZXRlci4NCgkJCQkkbmFtZSA9ICRuYW1lV2l0aG91dEV4dGVuc2lvbi4nXycuJGNudC4kZXh0Ow0KCQkJCSRyZXQgPSAkcnRyeTsNCgkJCX0NCgkJfQ0KCQlyZXR1cm4gJHJldDsNCgl9DQoNCgkvKioNCgkgKiBFeGFtcGxlIGZ1bmN0aW9uIHRvIHByb2Nlc3MgdGhlIGZpbGVzIHVwbG9hZGVkLiAgVGhpcyBvbmUgc2ltcGx5IGRpc3BsYXlzIHRoZSBmaWxlcycgZGF0YS4NCgkgKg0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBkZWZhdWx0QWZ0ZXJVcGxvYWRNYW5hZ2VtZW50KCkgew0KCQkkZmxpc3QgPSAnW2RlZmF1bHRBZnRlclVwbG9hZE1hbmFnZW1lbnRdIE5iIHVwbG9hZGVkIGZpbGVzIGlzOiAnIC4gc2l6ZW9mKCR0aGlzLT5maWxlcyk7DQoJCSRmbGlzdCA9ICR0aGlzLT5jbGFzc3BhcmFtc1snaHR0cF9mbGlzdF9zdGFydCddOw0KCQlmb3JlYWNoICgkdGhpcy0+ZmlsZXMgYXMgJGYpIHsNCgkJCS8vJGYgaXMgYW4gYXJyYXksIHRoYXQgY29udGFpbnMgYWxsIGluZm8gYWJvdXQgdGhlIHVwbG9hZGVkIGZpbGUuDQoJCQkkdGhpcy0+bG9nRGVidWcoJ2RlZmF1bHRBZnRlclVwbG9hZE1hbmFnZW1lbnQnLCAiICBSZWFkaW5nIGZpbGUgJHtmWyduYW1lJ119Iik7DQoJCQkkZmxpc3QgLj0gJHRoaXMtPmNsYXNzcGFyYW1zWydodHRwX2ZsaXN0X2ZpbGVfYmVmb3JlJ107DQoJCQkkZmxpc3QgLj0gJGZbJ25hbWUnXTsNCgkJCSRmbGlzdCAuPSAkdGhpcy0+Y2xhc3NwYXJhbXNbJ2h0dHBfZmxpc3RfZmlsZV9iZXR3ZWVuJ107DQoJCQkkZmxpc3QgLj0gJGZbJ3NpemUnXTsNCgkJCSRmbGlzdCAuPSAkdGhpcy0+Y2xhc3NwYXJhbXNbJ2h0dHBfZmxpc3RfZmlsZV9iZXR3ZWVuJ107DQoJCQkkZmxpc3QgLj0gJGZbJ3JlbGF0aXZlUGF0aCddOw0KCQkJJGZsaXN0IC49ICR0aGlzLT5jbGFzc3BhcmFtc1snaHR0cF9mbGlzdF9maWxlX2JldHdlZW4nXTsNCgkJCSRmbGlzdCAuPSAkZlsnZnVsbE5hbWUnXTsNCgkJCSRmbGlzdCAuPSAkdGhpcy0+Y2xhc3NwYXJhbXNbJ2h0dHBfZmxpc3RfZmlsZV9iZXR3ZWVuJ107DQoJCQkkZmxpc3QgLj0gJGZbJ21kNXN1bSddOw0KCQkJJGFkZEJSID0gZmFsc2U7DQoJCQlmb3JlYWNoICgkZiBhcyAka2V5PT4kdmFsdWUpIHsNCgkJCQkvL0lmIGl0J3MgYSBzcGVjaWZpYyBrZXksIGxldCdzIGRpc3BsYXkgaXQ6DQoJCQkJaWYgKCRrZXkgIT0gJ25hbWUnICYmICRrZXkgIT0gJ3NpemUnICYmICRrZXkgIT0gJ3JlbGF0aXZlUGF0aCcgJiYgJGtleSAhPSAnZnVsbE5hbWUnICYmICRrZXkgIT0gJ21kNXN1bScpIHsNCgkJCQkJaWYgKCRhZGRCUikgew0KCQkJCQkJJGZsaXN0IC49ICI8YnI+IjsNCgkJCQkJfSBlbHNlIHsNCgkJCQkJCS8vIEZpcnN0IGxpbmUuIFdlIG11c3QgYWRkIGEgbmV3ICdvZmZpY2lhbCcgbGlzdCBzZXBhcmF0b3IuDQoJCQkJCQkkZmxpc3QgLj0gJHRoaXMtPmNsYXNzcGFyYW1zWydodHRwX2ZsaXN0X2ZpbGVfYmV0d2VlbiddOw0KCQkJCQkJJGFkZEJSID0gdHJ1ZTsNCgkJCQkJfQ0KCQkJCQkkZmxpc3QgLj0gIiRrZXkgPT4gJHZhbHVlIjsNCgkJCQl9DQoJCQl9DQoJCQkkZmxpc3QgLj0gJHRoaXMtPmNsYXNzcGFyYW1zWydodHRwX2ZsaXN0X2ZpbGVfYWZ0ZXInXTsNCgl9DQoJJGZsaXN0IC49ICR0aGlzLT5jbGFzc3BhcmFtc1snaHR0cF9mbGlzdF9lbmQnXTsNCg0KCXJldHVybiAkZmxpc3Q7DQp9DQoNCi8qKg0KICogR2VuZXJhdGlvbiBvZiB0aGUgYXBwbGV0IHRhZywgYW5kIG5lY2Vzc2FyeSB0aGluZ3MgYXJvdW5kIChqcyBjb250ZW50KS4gSW5zZXJ0aW9uIG9mIHRoaXMgaW50byB0aGUgY29udGVudCBvZiB0aGUNCiAqIHBhZ2UuDQogKiBTZWUgdGhlIHRhZ19qc2NyaXB0IGFuZCB0YWdfYXBwbGV0IGNsYXNzIHBhcmFtZXRlcnMuDQogKi8NCnByaXZhdGUgZnVuY3Rpb24gZ2VuZXJhdGVBcHBsZXRUYWcoJHN0cikgew0KCSR0aGlzLT5sb2dEZWJ1ZygnZ2VuZXJhdGVBcHBsZXRUYWcnLCAnRW50ZXJpbmcgZnVuY3Rpb24nKTsNCgkkc3RyID0gcHJlZ19yZXBsYWNlKCcvJy4kdGhpcy0+Y2xhc3NwYXJhbXNbJ3RhZ19qc2NyaXB0J10uJy8nLCAkdGhpcy0+c3RyX2pzaW5pdCgpLCAkc3RyKTsNCglyZXR1cm4gcHJlZ19yZXBsYWNlKCcvJy4kdGhpcy0+Y2xhc3NwYXJhbXNbJ3RhZ19hcHBsZXQnXS4nLycsICR0aGlzLT5zdHJfYXBwbGV0KCksICRzdHIpOw0KfQ0KDQovKioNCiAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gY29uc3RydWN0aW5nIHRoZSBwYWdlLCB3aGVuIHdlJ3JlIG5vdCByZXZlaXZpbmcgdXBsb2FkZWQgZmlsZXMuIEl0ICdqdXN0JyBjb25zdHJ1Y3QNCiAqIHRoZSBhcHBsZXQgdGFnLCBieSBjYWxsaW5nIHRoZSByZWxldmFudCBmdW5jdGlvbi4NCiAqDQogKiBUaGlzICptdXN0KiBiZSBwdWJsaWMsIGJlY2F1c2UgaXQgaXMgY2FsbGVkIGZyb20gUEhQJ3Mgb3V0cHV0IGJ1ZmZlcmluZw0KICovDQpwdWJsaWMgZnVuY3Rpb24gaW50ZXJjZXB0QmVmb3JlVXBsb2FkKCRzdHIpIHsNCgkkdGhpcy0+bG9nRGVidWcoJ2ludGVyY2VwdEJlZm9yZVVwbG9hZCcsICdFbnRlcmluZyBmdW5jdGlvbicpOw0KCXJldHVybiAkdGhpcy0+Z2VuZXJhdGVBcHBsZXRUYWcoJHN0cik7DQp9DQoNCi8qKg0KICogVGhpcyBmdW5jdGlvbiBkaXNwbGF5cyB0aGUgdXBsb2FkZWQgZmlsZXMgZGVzY3JpcHRpb24gaW4gdGhlIGN1cnJlbnQgcGFnZSAoc2VlIHRhZ19mbGlzdCBjbGFzcyBwYXJhbWV0ZXIpDQogKg0KICogVGhpcyAqbXVzdCogYmUgcHVibGljLCBiZWNhdXNlIGl0IGlzIGNhbGxlZCBmcm9tIFBIUCdzIG91dHB1dCBidWZmZXJpbmcuDQogKi8NCnB1YmxpYyBmdW5jdGlvbiBpbnRlcmNlcHRBZnRlclVwbG9hZCgkc3RyKSB7DQoJJHRoaXMtPmxvZ0RlYnVnKCdpbnRlcmNlcHRBZnRlclVwbG9hZCcsICdFbnRlcmluZyBmdW5jdGlvbicpOw0KCSR0aGlzLT5sb2dQSFBEZWJ1ZygnaW50ZXJjZXB0QWZ0ZXJVcGxvYWQnLCAkdGhpcy0+ZmlsZXMpOw0KDQoJaWYgKGNvdW50KCR0aGlzLT5maWxlcykgPiAwKSB7DQoJCWlmIChpc3NldCgkdGhpcy0+Y2xhc3NwYXJhbXNbJ2NhbGxiYWNrQWZ0ZXJVcGxvYWRNYW5hZ2VtZW50J10pKSB7DQoJCQkkdGhpcy0+bG9nRGVidWcoJ2ludGVyY2VwdEFmdGVyVXBsb2FkJywgJ0JlZm9yZSBjYWxsIG9mICcgLiR0aGlzLT5jbGFzc3BhcmFtc1snY2FsbGJhY2tBZnRlclVwbG9hZE1hbmFnZW1lbnQnXSk7DQoJCQkkc3RyRm9yRkxpc3RDb250ZW50ID0gY2FsbF91c2VyX2Z1bmMoJHRoaXMtPmNsYXNzcGFyYW1zWydjYWxsYmFja0FmdGVyVXBsb2FkTWFuYWdlbWVudCddLCAkdGhpcywgJHRoaXMtPmZpbGVzKTsNCgkJfSBlbHNlIHsNCgkJCSRzdHJGb3JGTGlzdENvbnRlbnQgPSAkdGhpcy0+ZGVmYXVsdEFmdGVyVXBsb2FkTWFuYWdlbWVudCgpOw0KCQl9DQoJCSRzdHIgPSBwcmVnX3JlcGxhY2UoJy8nLiR0aGlzLT5jbGFzc3BhcmFtc1sndGFnX2ZsaXN0J10uJy8nLCAkc3RyRm9yRkxpc3RDb250ZW50LCAkc3RyKTsNCgl9DQoJcmV0dXJuICR0aGlzLT5nZW5lcmF0ZUFwcGxldFRhZygkc3RyKTsNCn0NCg0KLyoqDQogKiBUaGlzIG1ldGhvZCBtYW5hZ2VzIHRoZSByZWNlaXZpbmcgb2YgdGhlIGRlYnVnIGxvZywgd2hlbiBhbiBlcnJvciBvY2N1cnMuDQogKi8NCnByaXZhdGUgZnVuY3Rpb24gcmVjZWl2ZV9kZWJ1Z19sb2coKSB7DQoJLy8gaGFuZGxlIGVycm9yIHJlcG9ydA0KCWlmIChpc3NldCgkX1BPU1RbJ2Rlc2NyaXB0aW9uJ10pICYmIGlzc2V0KCRfUE9TVFsnbG9nJ10pKSB7DQoJCSRtc2cgPSAkX1BPU1RbJ2xvZyddOw0KCQltYWlsKCR0aGlzLT5jbGFzc3BhcmFtc1snZXJyb3JtYWlsJ10sICRfUE9TVFsnZGVzY3JpcHRpb24nXSwgJG1zZyk7DQoJfSBlbHNlIHsNCgkJaWYgKGlzc2V0KCRfU0VSVkVSWydTRVJWRVJfQURNSU4nXSkpDQoJCW1haWwoJF9TRVJWRVJbJ1NFUlZFUl9BRE1JTiddLCAnRW1wdHkganVwbG9hZCBlcnJvciBsb2cnLA0KICAgICAgICAgICAgICAgICAgICAnQW4gZW1wdHkgbG9nIGhhcyBqdXN0IGJlZW4gcG9zdGVkLicpOw0KCQkkdGhpcy0+bG9nUEhQRGVidWcoJ3JlY2VpdmVfZGVidWdfbG9nJywgJ0VtcHR5IGVycm9yIGxvZyByZWNlaXZlZCcpOw0KCX0NCglleGl0Ow0KfQ0KDQovKioNCiAqIFRoaXMgbWV0aG9kIGlzIHRoZSBoZWFydCBvZiB0aGUgc3lzdGVtLiBJdCBtYW5hZ2UgdGhlIGZpbGVzIHNlbnQgYnkgdGhlIGFwcGxldCwgY2hlY2sgdGhlIGluY29taW5nIHBhcmFtZXRlcnMgKG1kNXN1bSkgYW5kDQogKiByZWNvbnN0cnVjdCB0aGUgZmlsZXMgc2VudCBpbiBjaHVuayBtb2RlLg0KICoNCiAqIFRoZSByZXN1bHQgaXMgc3RvcmVkIGluIHRoZSAkZmlsZXMgYXJyYXksIGFuZCBjYW4gdGhlbiBiZSBtYW5hZ2VkIGJ5IHRoZSBmdW5jdGlvbiBnaXZlbiBpbiB0aGUgY2FsbGJhY2tBZnRlclVwbG9hZE1hbmFnZW1lbnQNCiAqIGNsYXNzIHBhcmFtZXRlciwgb3Igd2l0aGluIHRoZSBwYWdlIHdob3NlIFVSTCBpcyBnaXZlbiBpbiB0aGUgYWZ0ZXJVcGxvYWRVUkwgYXBwbGV0IHBhcmFtZXRlci4NCiAqIE9yIHlvdSBjYW4gRXh0ZW5kIHRoZSBjbGFzcyBhbmQgcmVkZWNsYXJlIGRlZmF1bHRBZnRlclVwbG9hZE1hbmFnZW1lbnQoKSB0byB5b3VyIG5lZWRzLg0KICovDQpwcml2YXRlIGZ1bmN0aW9uIHJlY2VpdmVfdXBsb2FkZWRfZmlsZXMoKSB7DQoJJHRoaXMtPmxvZ0RlYnVnKCdyZWNlaXZlX3VwbG9hZGVkX2ZpbGVzJywgJ0VudGVyaW5nIFBPU1QgbWFuYWdlbWVudCcpOw0KDQoJaWYgKHNlc3Npb25faWQoKSA9PSAnJykgew0KCQlzZXNzaW9uX3N0YXJ0KCk7DQoJfQ0KCS8vIHdlIGNoZWNrIGZvciB0aGUgc2Vzc2lvbiAqYWZ0ZXIqIGhhbmRsaW5nIHBvc3NpYmxlIGVycm9yIGxvZw0KCS8vIGJlY2F1c2UgYW4gZXJyb3IgY291bGQgaGF2ZSBoYXBwZW5lZCBiZWNhdXNlIHRoZSBzZXNzaW9uLWlkIGlzIG1pc3NpbmcuDQoJaWYgKCFpc3NldCgkX1NFU1NJT05bJ1JGJ11bJHRoaXMtPmNsYXNzcGFyYW1zWyd2YXJfcHJlZml4J10uJ3NpemUnXSkpIHsNCgkJJHRoaXMtPmFib3J0KCdJbnZhbGlkIHNlc3Npb24gKGluIGFmdGVydXBsb2FkLCBQT1NULCBjaGVjayBvZiBzaXplKScpOw0KCX0NCglpZiAoIWlzc2V0KCRfU0VTU0lPTlsnUkYnXVskdGhpcy0+Y2xhc3NwYXJhbXNbJ3Zhcl9wcmVmaXgnXS4nZmlsZXMnXSkpIHsNCgkJJHRoaXMtPmFib3J0KCdJbnZhbGlkIHNlc3Npb24gKGluIGFmdGVydXBsb2FkLCBQT1NULCBjaGVjayBvZiBmaWxlcyknKTsNCgl9DQoJJHRoaXMtPmZpbGVzID0gJF9TRVNTSU9OWydSRiddWyR0aGlzLT5jbGFzc3BhcmFtc1sndmFyX3ByZWZpeCddLidmaWxlcyddOw0KCWlmICghaXNfYXJyYXkoJHRoaXMtPmZpbGVzKSkgew0KCQkkdGhpcy0+YWJvcnQoJ0ludmFsaWQgc2Vzc2lvbiAoaW4gYWZ0ZXJ1cGxvYWQsIFBPU1QsIGlzX2FycmF5KGZpbGVzKSknKTsNCgl9DQoJaWYgKCR0aGlzLT5hcHBsZXRwYXJhbXNbJ3NlbmRNRDVTdW0nXSA9PSAndHJ1ZScgICYmICAhaXNzZXQoJF9QT1NUWydtZDVzdW0nXSkpIHsNCgkJJHRoaXMtPmFib3J0KCdSZXF1aXJlZCBQT1NUIHZhcmlhYmxlIG1kNXN1bSBpcyBtaXNzaW5nJyk7DQoJfQ0KCSRjbnQgPSAwOw0KCWZvcmVhY2ggKCRfRklMRVMgYXMgJGtleSA9PiAkdmFsdWUpIHsNCgkJLy9MZXQncyByZWFkIHRoZSAkX0ZJTEVTIGRhdGENCgkJaWYgKGlzc2V0KCRmaWxlc19kYXRhKSkgew0KCQkJdW5zZXQoJGZpbGVzX2RhdGEpOw0KCQl9DQoJCSRqdXBhcnQJCQk9IChpc3NldCgkX1BPU1RbJ2p1cGFydCddKSkJCSAJCT8gKGludCkkX1BPU1RbJ2p1cGFydCddCQk6IDA7DQoJCSRqdWZpbmFsCQk9IChpc3NldCgkX1BPU1RbJ2p1ZmluYWwnXSkpCSAJCT8gKGludCkkX1BPU1RbJ2p1ZmluYWwnXQk6IDE7DQoJCSRyZWxwYXRocwkJPSAoaXNzZXQoJF9QT1NUWydyZWxwYXRoaW5mbyddKSkgCT8gJF9QT1NUWydyZWxwYXRoaW5mbyddCQk6IG51bGw7DQoJCSRtZDVzdW1zCQk9IChpc3NldCgkX1BPU1RbJ21kNXN1bSddKSkJCQkJPyAkX1BPU1RbJ21kNXN1bSddCQkJCTogbnVsbDsNCgkJJG1pbWV0eXBlcyAJPSAoaXNzZXQoJF9QT1NUWydtaW1ldHlwZSddKSkgCSAJPyAkX1BPU1RbJ21pbWV0eXBlJ10gCQkJOiBudWxsOw0KCQkvLyRyZWxwYXRocyA9IChpc3NldCgkX1BPU1RbInJlbHBhdGhpbmZvJGNudCJdKSkgPyAkX1BPU1RbInJlbHBhdGhpbmZvJGNudCJdIDogbnVsbDsNCgkJLy8kbWQ1c3VtcyA9IChpc3NldCgkX1BPU1RbIm1kNXN1bSRjbnQiXSkpID8gJF9QT1NUWyJtZDVzdW0kY250Il0gOiBudWxsOw0KDQoJCWlmIChnZXR0eXBlKCRyZWxwYXRocykgPT0gJ3N0cmluZycpIHsNCgkJCSRyZWxwYXRocyA9IGFycmF5KCRyZWxwYXRocyk7DQoJCX0NCgkJaWYgKGdldHR5cGUoJG1kNXN1bXMpID09ICdzdHJpbmcnKSB7DQoJCQkkbWQ1c3VtcyA9IGFycmF5KCRtZDVzdW1zKTsNCgkJfQ0KCQlpZiAoJHRoaXMtPmFwcGxldHBhcmFtc1snc2VuZE1ENVN1bSddID09ICd0cnVlJyAgJiYgIWlzX2FycmF5KCRtZDVzdW1zKSkgew0KCQkJJHRoaXMtPmFib3J0KCdFeHBlY3RpbmcgYW4gYXJyYXkgb2YgTUQ1IGNoZWNrc3VtcycpOw0KCQl9DQoJCWlmICghaXNfYXJyYXkoJHJlbHBhdGhzKSkgew0KCQkJJHRoaXMtPmFib3J0KCdFeHBlY3RpbmcgYW4gYXJyYXkgb2YgcmVsYXRpdmUgcGF0aHMnKTsNCgkJfQ0KCQlpZiAoIWlzX2FycmF5KCRtaW1ldHlwZXMpKSB7DQoJCQkkdGhpcy0+YWJvcnQoJ0V4cGVjdGluZyBhbiBhcnJheSBvZiBNSU1FIHR5cGVzJyk7DQoJCX0NCgkJLy8gQ2hlY2sgdGhlIE1JTUUgdHlwZSAobm90ZTogdGhpcyBpcyBlYXNpbHkgZm9yZ2VkISkNCgkJaWYgKGlzc2V0KCR0aGlzLT5jbGFzc3BhcmFtc1snYWxsb3dlZF9taW1lX3R5cGVzJ10pICYmIGlzX2FycmF5KCR0aGlzLT5jbGFzc3BhcmFtc1snYWxsb3dlZF9taW1lX3R5cGVzJ10pKSB7DQoJCQlpZiAoIWluX2FycmF5KCRtaW1ldHlwZXNbJGNudF0sICR0aGlzLT5jbGFzc3BhcmFtc1snYWxsb3dlZF9taW1lX3R5cGVzJ10pKSB7DQoJCQkJJHRoaXMtPmFib3J0KCdNSU1FIHR5cGUgJy4kbWltZXR5cGVzWyRjbnRdLicgbm90IGFsbG93ZWQnKTsNCgkJCX0NCgkJfQ0KCQlpZiAoaXNzZXQoJHRoaXMtPmNsYXNzcGFyYW1zWydhbGxvd2VkX2ZpbGVfZXh0ZW5zaW9ucyddKSAmJiBpc19hcnJheSgkdGhpcy0+Y2xhc3NwYXJhbXNbJ2FsbG93ZWRfZmlsZV9leHRlbnNpb25zJ10pKSB7DQoJCQkkZmlsZUV4dGVuc2lvbiA9IHN1YnN0cihzdHJyY2hyKCR2YWx1ZVsnbmFtZSddWyRjbnRdLCAiLiIpLCAxKTsNCgkJCWlmICghaW5fYXJyYXkoJGZpbGVFeHRlbnNpb24sICR0aGlzLT5jbGFzc3BhcmFtc1snYWxsb3dlZF9maWxlX2V4dGVuc2lvbnMnXSkpIHsNCgkJCQkkdGhpcy0+YWJvcnQoJ0ZpbGUgZXh0ZW5zaW9uICcuJGZpbGVFeHRlbnNpb24uJyBub3QgYWxsb3dlZCcpOw0KCQkJfQ0KCQl9DQoNCgkJJGRzdGRpciA9ICR0aGlzLT5jbGFzc3BhcmFtc1snZGVzdGRpciddOw0KCQkkZHN0bmFtZSA9ICRkc3RkaXIuJy8nLiR0aGlzLT5jbGFzc3BhcmFtc1sndG1wX3ByZWZpeCddLnNlc3Npb25faWQoKTsNCgkJJHRtcG5hbWUgPSAkZHN0ZGlyLicvJy4kdGhpcy0+Y2xhc3NwYXJhbXNbJ3RtcF9wcmVmaXgnXS4ndG1wJy5zZXNzaW9uX2lkKCk7DQoNCgkJLy8gQ29udHJvbHMgYXJlIG5vdyBkb25lLiBMZXQncyBzdG9yZSB0aGUgY3VycmVudCB1cGxvYWRlZCBmaWxlcyBwcm9wZXJ0aWVzIGluIGFuIGFycmF5LCBmb3IgZnV0dXJlIHVzZS4NCgkJJGZpbGVzX2RhdGFbJ25hbWUnXQkJCQkJPSAkdmFsdWVbJ25hbWUnXVskY250XTsNCgkJJGZpbGVzX2RhdGFbJ3NpemUnXQkJCQkJPSAnbm90IGNhbGN1bGF0ZWQgeWV0JzsNCgkJJGZpbGVzX2RhdGFbJ3RtcF9uYW1lJ10JCQk9ICR2YWx1ZVsndG1wX25hbWUnXVskY250XTsNCgkJJGZpbGVzX2RhdGFbJ2Vycm9yJ10gICAgCQk9ICR2YWx1ZVsnZXJyb3InXVskY250XTsNCgkJJGZpbGVzX2RhdGFbJ3JlbGF0aXZlUGF0aCddID0gJHJlbHBhdGhzWyRjbnRdOw0KCQkkZmlsZXNfZGF0YVsnbWQ1c3VtJ10gIAkJCT0gJG1kNXN1bXNbJGNudF07DQoJCSRmaWxlc19kYXRhWydtaW1ldHlwZSddICAJCT0gJG1pbWV0eXBlc1skY250XTsNCg0KCQlpZiAoIW1vdmVfdXBsb2FkZWRfZmlsZSgkZmlsZXNfZGF0YVsndG1wX25hbWUnXSwgJHRtcG5hbWUpKSB7DQoJCQlpZiAoJGNsYXNzcGFyYW1zWyd2ZXJib3NlX2Vycm9ycyddKSB7DQoJCQkJJHRoaXMtPmFib3J0KCJVbmFibGUgdG8gbW92ZSB1cGxvYWRlZCBmaWxlIChmcm9tICR7ZmlsZXNfZGF0YVsndG1wX25hbWUnXX0gdG8gJHRtcG5hbWUpIik7DQoJCX0gZWxzZSB7DQoJCQl0cmlnZ2VyX2Vycm9yKCJVbmFibGUgdG8gbW92ZSB1cGxvYWRlZCBmaWxlIChmcm9tICR7ZmlsZXNfZGF0YVsndG1wX25hbWUnXX0gdG8gJHRtcG5hbWUpIixFX1VTRVJfV0FSTklORyk7DQoJCQkkdGhpcy0+YWJvcnQoIlVuYWJsZSB0byBtb3ZlIHVwbG9hZGVkIGZpbGUiKTsNCgl9DQp9DQoNCi8vIEluIGRlbW8gbW9kZSwgbm8gZmlsZSBzdG9yaW5nIGlzIGRvbmUuIFdlIGp1c3QgZGVsZXRlIHRoZSBuZXdseSB1cGxvYWRlZCBmaWxlLg0KaWYgKCR0aGlzLT5jbGFzc3BhcmFtc1snZGVtb19tb2RlJ10pIHsNCglpZiAoJGp1ZmluYWwgfHwgKCEkanVwYXJ0KSkgew0KCQlpZiAoJGp1cGFydCkgew0KCQkJJGZpbGVzX2RhdGFbJ3NpemUnXQkJPSAoJGp1cGFydC0xKSAqICR0aGlzLT5hcHBsZXRwYXJhbXNbJ21heENodW5rU2l6ZSddICsgZmlsZXNpemUoJHRtcG5hbWUpOw0KCQl9IGVsc2Ugew0KCQkJJGZpbGVzX2RhdGFbJ3NpemUnXQkJPSBmaWxlc2l6ZSgkdG1wbmFtZSk7DQoJCX0NCgkJJGZpbGVzX2RhdGFbJ2Z1bGxOYW1lJ10JPSAnRGVtbyBtb2RlPEJSPk5vIGZpbGUgc3RvcmluZyc7DQoJCWFycmF5X3B1c2goJHRoaXMtPmZpbGVzLCAkZmlsZXNfZGF0YSk7DQoJfQ0KCXVubGluaygkdG1wbmFtZSk7DQoJJGNudCsrOw0KCWNvbnRpbnVlOw0KfQ0KLy9JZiB3ZSBnZXQgaGVyZSwgdGhlIHVwbG9hZCBpcyBhIHJlYWwgb25lIChubyBkZW1vKQ0KaWYgKCRqdXBhcnQpIHsNCgkvLyBnb3QgYSBjaHVuayBvZiBhIG11bHRpLXBhcnQgdXBsb2FkDQoJJGxlbiA9IGZpbGVzaXplKCR0bXBuYW1lKTsNCgkkX1NFU1NJT05bJ1JGJ11bJHRoaXMtPmNsYXNzcGFyYW1zWyd2YXJfcHJlZml4J10uJ3NpemUnXSArPSAkbGVuOw0KCWlmICgkbGVuID4gMCkgew0KCQkkc3JjID0gZm9wZW4oJHRtcG5hbWUsICdyYicpOw0KCQkkZHN0ID0gZm9wZW4oJGRzdG5hbWUsICgkanVwYXJ0ID09IDEpID8gJ3diJyA6ICdhYicpOw0KCQl3aGlsZSAoJGxlbiA+IDApIHsNCgkJCSRybGVuID0gKCRsZW4gPiA4MTkyKSA/IDgxOTIgOiAkbGVuOw0KCQkJJGJ1ZiA9IGZyZWFkKCRzcmMsICRybGVuKTsNCgkJCWlmICghJGJ1Zikgew0KCQkJCWZjbG9zZSgkc3JjKTsNCgkJCQlmY2xvc2UoJGRzdCk7DQoJCQkJdW5saW5rKCRkc3RuYW1lKTsNCgkJCQkkdGhpcy0+YWJvcnQoJ3JlYWQgSU8gZXJyb3InKTsNCgkJCX0NCgkJCWlmICghZndyaXRlKCRkc3QsICRidWYsICRybGVuKSkgew0KCQkJCWZjbG9zZSgkc3JjKTsNCgkJCQlmY2xvc2UoJGRzdCk7DQoJCQkJdW5saW5rKCRkc3RuYW1lKTsNCgkJCQkkdGhpcy0+YWJvcnQoJ3dyaXRlIElPIGVycm9yJyk7DQoJCQl9DQoJCQkkbGVuIC09ICRybGVuOw0KCQl9DQoJCWZjbG9zZSgkc3JjKTsNCgkJZmNsb3NlKCRkc3QpOw0KCQl1bmxpbmsoJHRtcG5hbWUpOw0KCX0NCglpZiAoJGp1ZmluYWwpIHsNCgkJLy8gVGhpcyBpcyB0aGUgbGFzdCBjaHVuay4gQ2hlY2sgdG90YWwgbGVuZ2h0IGFuZA0KCQkvLyByZW5hbWUgaXQgdG8gaXQncyBmaW5hbCBuYW1lLg0KCQkkZGxlbiA9IGZpbGVzaXplKCRkc3RuYW1lKTsNCgkJaWYgKCRkbGVuICE9ICRfU0VTU0lPTlsnUkYnXVskdGhpcy0+Y2xhc3NwYXJhbXNbJ3Zhcl9wcmVmaXgnXS4nc2l6ZSddKQ0KCQkkdGhpcy0+YWJvcnQoJ2ZpbGUgc2l6ZSBtaXNtYXRjaCcpOw0KCQlpZiAoJHRoaXMtPmFwcGxldHBhcmFtc1snc2VuZE1ENVN1bSddID09ICd0cnVlJyApIHsNCgkJCWlmICgkbWQ1c3Vtc1skY250XSAhPSBtZDVfZmlsZSgkZHN0bmFtZSkpDQoJCQkkdGhpcy0+YWJvcnQoJ01ENSBjaGVja3N1bSBtaXNtYXRjaCcpOw0KCQl9DQoJCS8vIHJlbW92ZSB6ZXJvIHNpemVkIGZpbGVzDQoJCWlmICgoJGRsZW4gPiAwKSB8fCAkdGhpcy0+Y2xhc3NwYXJhbXNbJ2FsbG93X3plcm9zaXplZCddKSB7DQoJCQkkZHN0ZmluYWwgPSAkdGhpcy0+ZHN0ZmluYWwoJGZpbGVzX2RhdGFbJ25hbWUnXSwkZmlsZXNfZGF0YVsncmVsYXRpdmVQYXRoJ10pOw0KCQkJaWYgKCFyZW5hbWUoJGRzdG5hbWUsICRkc3RmaW5hbCkpDQoJCQkkdGhpcy0+YWJvcnQoJ3JlbmFtZSBJTyBlcnJvcicpOw0KCQkJJF91bWFzayA9IHVtYXNrKDApOyAJLy8gb3ZlcnJpZGUgdGhlIHN5c3RlbSBtYXNrDQoJCQlpZiAoIWNobW9kKCRkc3RmaW5hbCwgJHRoaXMtPmNsYXNzcGFyYW1zWydmaWxlcGVybSddKSkNCgkJCQkkdGhpcy0+YWJvcnQoJ2NobW9kIElPIGVycm9yJyk7DQoJCQl1bWFzaygkX3VtYXNrKTsNCgkJCSRmaWxlc19kYXRhWydzaXplJ10JCT0gZmlsZXNpemUoJGRzdGZpbmFsKTsNCgkJCSRmaWxlc19kYXRhWydmdWxsTmFtZSddCT0gJGRzdGZpbmFsOw0KCQkJJGZpbGVzX2RhdGFbJ3BhdGgnXQk9IGZpeF9kaXJuYW1lKCRkc3RmaW5hbCk7DQoJCQlhcnJheV9wdXNoKCR0aGlzLT5maWxlcywgJGZpbGVzX2RhdGEpOw0KCQl9IGVsc2Ugew0KCQkJdW5saW5rKCRkc3RuYW1lKTsNCgkJfQ0KCQkvLyByZXNldCBzZXNzaW9uIHZhcg0KCQkkX1NFU1NJT05bJ1JGJ11bJHRoaXMtPmNsYXNzcGFyYW1zWyd2YXJfcHJlZml4J10uJ3NpemUnXSA9IDA7DQoJfQ0KfSBlbHNlIHsNCgkvLyBHb3QgYSBzaW5nbGUgZmlsZSB1cGxvYWQuIFRyaXZpYWwuDQoJaWYgKCR0aGlzLT5hcHBsZXRwYXJhbXNbJ3NlbmRNRDVTdW0nXSA9PSAndHJ1ZScgKSB7DQoJCWlmICgkbWQ1c3Vtc1skY250XSAhPSBtZDVfZmlsZSgkdG1wbmFtZSkpDQoJCQkkdGhpcy0+YWJvcnQoJ01ENSBjaGVja3N1bSBtaXNtYXRjaCcpOw0KCX0NCgkkZHN0ZmluYWwgPSAkdGhpcy0+ZHN0ZmluYWwoJGZpbGVzX2RhdGFbJ25hbWUnXSwkZmlsZXNfZGF0YVsncmVsYXRpdmVQYXRoJ10pOw0KCWlmICghcmVuYW1lKCR0bXBuYW1lLCAkZHN0ZmluYWwpKQ0KCSR0aGlzLT5hYm9ydCgncmVuYW1lIElPIGVycm9yJyk7DQoJJF91bWFzayA9IHVtYXNrKDApOyAJLy8gb3ZlcnJpZGUgdGhlIHN5c3RlbSBtYXNrDQoJaWYgKCFjaG1vZCgkZHN0ZmluYWwsICR0aGlzLT5jbGFzc3BhcmFtc1snZmlsZXBlcm0nXSkpDQoJCSR0aGlzLT5hYm9ydCgnY2htb2QgSU8gZXJyb3InKTsNCgl1bWFzaygkX3VtYXNrKTsNCgkkZmlsZXNfZGF0YVsnc2l6ZSddCQk9IGZpbGVzaXplKCRkc3RmaW5hbCk7DQoJJGZpbGVzX2RhdGFbJ2Z1bGxOYW1lJ10JPSAkZHN0ZmluYWw7DQoJJGZpbGVzX2RhdGFbJ3BhdGgnXQk9IGZpeF9kaXJuYW1lKCRkc3RmaW5hbCk7DQoJYXJyYXlfcHVzaCgkdGhpcy0+ZmlsZXMsICRmaWxlc19kYXRhKTsNCn0NCiRjbnQrKzsNCn0NCg0KZWNobyAkdGhpcy0+YXBwbGV0cGFyYW1zWydzdHJpbmdVcGxvYWRTdWNjZXNzJ10uIlxuIjsNCiRfU0VTU0lPTlsnUkYnXVskdGhpcy0+Y2xhc3NwYXJhbXNbJ3Zhcl9wcmVmaXgnXS4nZmlsZXMnXSA9ICR0aGlzLT5maWxlczsNCnNlc3Npb25fd3JpdGVfY2xvc2UoKTsNCmV4aXQ7DQp9DQoNCi8qKg0KICoNCiAqDQogKi8NCnByaXZhdGUgZnVuY3Rpb24gcGFnZV9zdGFydCgpIHsNCgkkdGhpcy0+bG9nRGVidWcoJ3BhZ2Vfc3RhcnQnLCAnRW50ZXJpbmcgZnVuY3Rpb24nKTsNCg0KCS8vIElmIHRoZSBhcHBsZXQgY2hlY2tzIGZvciB0aGUgc2VydmVyUHJvdG9jb2wsIGl0IGlzc3VlcyBhIEhFQUQgcmVxdWVzdA0KCS8vIC0+IFNpbXBseSByZXR1cm4gYW4gZW1wdHkgZG9jLg0KCWlmICgkX1NFUlZFUlsnUkVRVUVTVF9NRVRIT0QnXSA9PSAnSEVBRCcpIHsNCgkJLy8gTm90aGluZyB0byBkbw0KDQoJfSBlbHNlIGlmICgkX1NFUlZFUlsnUkVRVUVTVF9NRVRIT0QnXSA9PSAnR0VUJykgew0KCQkvLyBBIEdFVCByZXF1ZXN0IG1lYW5zOiByZXR1cm4gdXBsb2FkIHBhZ2UNCgkJJHRoaXMtPmxvZ0RlYnVnKCdwYWdlX3N0YXJ0JywgJ0VudGVyaW5nIEdFVCBtYW5hZ2VtZW50Jyk7DQoNCgkJaWYgKHNlc3Npb25faWQoKSA9PSAnJykgew0KCQkJc2Vzc2lvbl9zdGFydCgpOw0KCQl9DQoJCWlmIChpc3NldCgkX0dFVFsnYWZ0ZXJ1cGxvYWQnXSkpIHsNCgkJCSR0aGlzLT5sb2dEZWJ1ZygncGFnZV9zdGFydCcsICdhZnRlcnVwbG9hZCBpcyBzZXQnKTsNCgkJCWlmICghaXNzZXQoJF9TRVNTSU9OWydSRiddWyR0aGlzLT5jbGFzc3BhcmFtc1sndmFyX3ByZWZpeCddLidmaWxlcyddKSkgew0KCQkJCSR0aGlzLT5hYm9ydCgnSW52YWxpZCBzZXNzaW9uIChpbiBhZnRlcnVwbG9hZCwgR0VULCBjaGVjayBvZiAkX1NFU1NJT05bIlJGIl0pOiBmaWxlcyBhcnJheSBpcyBub3Qgc2V0Jyk7DQoJCQl9DQoJCQkkdGhpcy0+ZmlsZXMgPSAkX1NFU1NJT05bJ1JGJ11bJHRoaXMtPmNsYXNzcGFyYW1zWyd2YXJfcHJlZml4J10uJ2ZpbGVzJ107DQoJCQlpZiAoIWlzX2FycmF5KCR0aGlzLT5maWxlcykpIHsNCgkJCQkkdGhpcy0+YWJvcnQoJ0ludmFsaWQgc2Vzc2lvbiAoaW4gYWZ0ZXJ1cGxvYWQsIEdFVCwgY2hlY2sgb2YgaXNfYXJyYXkoZmlsZXMpKTogZmlsZXMgaXMgbm90IGFuIGFycmF5Jyk7DQoJCQl9DQoJCQkvLyBjbGVhciBzZXNzaW9uIGRhdGEgcmVhZHkgZm9yIG5ldyB1cGxvYWQNCgkJCSRfU0VTU0lPTlsnUkYnXVskdGhpcy0+Y2xhc3NwYXJhbXNbJ3Zhcl9wcmVmaXgnXS4nZmlsZXMnXSA9IGFycmF5KCk7DQoNCgkJCS8vIHN0YXJ0IGludGVyY2VwdGluZyB0aGUgY29udGVudCBvZiB0aGUgY2FsbGluZyBwYWdlLCB0byBkaXNwbGF5IHRoZSB1cGxvYWQgcmVzdWx0Lg0KCQkJb2Jfc3RhcnQoYXJyYXkoJiAkdGhpcywgJ2ludGVyY2VwdEFmdGVyVXBsb2FkJykpOw0KDQoJCX0gZWxzZSB7DQoJCQkkdGhpcy0+bG9nRGVidWcoJ3BhZ2Vfc3RhcnQnLCAnYWZ0ZXJ1cGxvYWQgaXMgbm90IHNldCcpOw0KCQkJaWYgKCR0aGlzLT5jbGFzc3BhcmFtc1snc2Vzc2lvbl9yZWdlbmVyYXRlJ10pIHsNCgkJCQlzZXNzaW9uX3JlZ2VuZXJhdGVfaWQodHJ1ZSk7DQoJCQl9DQoJCQkkdGhpcy0+ZmlsZXMgPSBhcnJheSgpOw0KCQkJJF9TRVNTSU9OWydSRiddWyR0aGlzLT5jbGFzc3BhcmFtc1sndmFyX3ByZWZpeCddLidzaXplJ10gPSAwOw0KCQkJJF9TRVNTSU9OWydSRiddWyR0aGlzLT5jbGFzc3BhcmFtc1sndmFyX3ByZWZpeCddLidmaWxlcyddID0gJHRoaXMtPmZpbGVzOw0KCQkJLy8gc3RhcnQgaW50ZXJjZXB0aW5nIHRoZSBjb250ZW50IG9mIHRoZSBjYWxsaW5nIHBhZ2UsIHRvIGRpc3BsYXkgdGhlIGFwcGxldCB0YWcuDQoJCQlvYl9zdGFydChhcnJheSgmICR0aGlzLCAnaW50ZXJjZXB0QmVmb3JlVXBsb2FkJykpOw0KCQl9DQoNCgl9IGVsc2UgaWYgKCRfU0VSVkVSWydSRVFVRVNUX01FVEhPRCddID09ICdQT1NUJykgew0KCQkvLyBJZiB3ZSBnb3QgYSBQT1NUIHJlcXVlc3QsIHRoaXMgaXMgdGhlIHJlYWwgd29yay4NCgkJaWYgKGlzc2V0KCRfR0VUWydlcnJvcm1haWwnXSkpIHsNCgkJCS8vSHVtLCBhbiBlcnJvciBvY2N1cnMgb24gc2VydmVyIHNpZGUuIExldCdzIG1hbmFnZSB0aGUgZGVidWcgbG9nLCB0aGF0IHdlIGp1c3QgcmVjZWl2ZWQuDQoJCQkkdGhpcy0+cmVjZWl2ZV9kZWJ1Z19sb2coKTsNCgkJfSBlbHNlIHsNCgkJCSR0aGlzLT5yZWNlaXZlX3VwbG9hZGVkX2ZpbGVzKCk7DQoJCX0NCgl9DQp9DQp9DQoNCi8vIFBIUCBlbmQgdGFnIG9taXR0ZWQgaW50ZW50aW9uYWxseSEhDQo=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/uploader/success.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/uploader/success.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGh0bWw+DQo8aGVhZD4NCgk8IS0tSlVQTE9BRF9KU0NSSVBULS0+DQoJPHRpdGxlPkpVcGxvYWQgUkVTUE9OU0lWRSBmaWxlbWFuYWdlcjwvdGl0bGU+DQoJPHN0eWxlPg0KCQlib2R5IHsNCgkJCXBhZGRpbmc6IDBweDsNCgkJCW1hcmdpbjogMHB4Ow0KCQl9DQoJPC9zdHlsZT4NCgk8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIg0KCQkgIGNvbnRlbnQ9IjM7dXJsPWluZGV4LnBocD9wYXRoPTw/cGhwIGVjaG8gc3RyaXBfdGFncyhwcmVnX3JlcGxhY2UoIi9bXmEtekEtWjAtOVwuXFtcXV98IC1dLyIsICcnLCAkX0dFVFsncGF0aCddKSk7ID8+Ij4NCjwvaGVhZD4NCjxib2R5Pg0KPGNlbnRlcj48YnIvPjxici8+DQoJPGltZyBzcmM9InN1Y2Nlc3MuanBnIiBhbHQ9InN1Y2Nlc3MiPg0KPC9jZW50ZXI+DQo8L2JvZHk+DQo8L2h0bWw+]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/uploader/wjhk.jupload.jar</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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AAAAAAAAAAW2AQBsYW5nL2xhbmdfemhfVFcucHJvcGVydGllc1BLAQIUABQACAgIAPCMzUBFgHA8bwMAAJwGAABBAAAAAAAAAAAAAAAAAPbBAQB3amhrL2p1cGxvYWQyL2NvbnRleHQvRGVmYXVsdEpVcGxvYWRDb250ZXh0JDFQcm9wZXJ0eVNldHRlci5jbGFzc1BLAQIUABQACAgIAPCMzUC/VEOr/wIAABkGAAA6AAAAAAAAAAAAAAAAANTFAQB3amhrL2p1cGxvYWQyL2NvbnRleHQvRGVmYXVsdEpVcGxvYWRDb250ZXh0JENhbGxiYWNrLmNsYXNzUEsBAhQAFAAICAgA8IzNQD/lVjQgGgAAMz0AADEAAAAAAAAAAAAAAAAAO8kBAHdqaGsvanVwbG9hZDIvY29udGV4dC9EZWZhdWx0SlVwbG9hZENvbnRleHQuY2xhc3NQSwECFAAUAAgICADwjM1A1enhvnUFAAC/CgAALQAAAAAAAAAAAAAAAAC64wEAd2poay9qdXBsb2FkMi9jb250ZXh0L0phdmFzY3JpcHRIYW5kbGVyLmNsYXNzUEsBAhQAFAAICAgA8IzNQLs1l3bbAgAAUwYAACoAAAAAAAAAAAAAAAAAiukBAHdqaGsvanVwbG9hZDIvY29udGV4dC9KVXBsb2FkQ29udGV4dC5jbGFzc1BLAQIUABQACAgIAPCMzUCRvaFTIBIAANslAAAwAAAAAAAAAAAAAAAAAL3sAQB3amhrL2p1cGxvYWQyL2NvbnRleHQvSlVwbG9hZENvbnRleHRBcHBsZXQuY2xhc3NQSwECFAAUAAgICADwjM1AHimWaN8KAADcGAAANAAAAAAAAAAAAAAAAAA7/wEAd2poay9qdXBsb2FkMi9jb250ZXh0L0pVcGxvYWRDb250ZXh0RXhlY3V0YWJsZS5jbGFzc1BLAQIUABQACAgIAPCMzUDNe/4gAAEAAGQBAAAfAAAAAAAAAAAAAAAAAHwKAgB3amhrL2p1cGxvYWQyL0VtcHR5QXBwbGV0LmNsYXNzUEsBAhQAFAAICAgA8IzNQI5emN43AgAAHgQAADEAAAAAAAAAAAAAAAAAyQsCAHdqaGsvanVwbG9hZDIvZXhjZXB0aW9uL0pVcGxvYWRFT0ZFeGNlcHRpb24uY2xhc3NQSwECFAAUAAgICADwjM1Ax2NMiOwDAABFCAAALgAAAAAAAAAAAAAAAABfDgIAd2poay9qdXBsb2FkMi9leGNlcHRpb24vSlVwbG9hZEV4Y2VwdGlvbi5jbGFzc1BLAQIUABQACAgIAPCMzUBwwsniNwEAAAYCAAA9AAAAAAAAAAAAAAAAAKcSAgB3amhrL2p1cGxvYWQyL2V4Y2VwdGlvbi9KVXBsb2FkRXhjZXB0aW9uU3RvcEFkZGluZ0ZpbGVzLmNsYXNzUEsBAhQAFAAICAgA8IzNQLx8+8f3AQAA3QMAADgAAAAAAAAAAAAAAAAASRQCAHdqaGsvanVwbG9hZDIvZXhjZXB0aW9uL0pVcGxvYWRFeGNlcHRpb25Ub29CaWdGaWxlLmNsYXNzUEsBAhQAFAAICAgA8IzNQKOgbL2VAQAAMAMAADoAAAAAAAAAAAAAAAAAphYCAHdqaGsvanVwbG9hZDIvZXhjZXB0aW9uL0pVcGxvYWRFeGNlcHRpb25VcGxvYWRGYWlsZWQuY2xhc3NQSwECFAAUAAgICADwjM1AKNLDRqcBAABpAwAASQAAAAAAAAAAAAAAAACjGAIAd2poay9qdXBsb2FkMi9leGNlcHRpb24vSlVwbG9hZEV4Y2VwdGlvblVwbG9hZEZhaWxlZFN1Y2Nlc3NOb3RGb3VuZC5jbGFzc1BLAQIUABQACAgIAPCMzUDbUCTSEgIAALgDAAAwAAAAAAAAAAAAAAAAAMEaAgB3amhrL2p1cGxvYWQyL2V4Y2VwdGlvbi9KVXBsb2FkSW50ZXJydXB0ZWQuY2xhc3NQSwECFAAUAAgICADwjM1AELDZE5EBAAAnAwAAMAAAAAAAAAAAAAAAAAAxHQIAd2poay9qdXBsb2FkMi9leGNlcHRpb24vSlVwbG9hZElPRXhjZXB0aW9uLmNsYXNzUEsBAhQAFAAICAgA8IzNQGJAiNUjAQAACAIAACoAAAAAAAAAAAAAAAAAIB8CAHdqaGsvanVwbG9hZDIvZmlsZWRhdGEvQXVkaW9GaWxlRGF0YS5jbGFzc1BLAQIUABQACAgIAPCMzUBU7n0dbw4AAHsdAAAsAAAAAAAAAAAAAAAAAJsgAgB3amhrL2p1cGxvYWQyL2ZpbGVkYXRhL0RlZmF1bHRGaWxlRGF0YS5jbGFzc1BLAQIUABQACAgIAPCMzUB4ZbHqxgEAACYDAAAlAAAAAAAAAAAAAAAAAGQvAgB3amhrL2p1cGxvYWQyL2ZpbGVkYXRhL0ZpbGVEYXRhLmNsYXNzUEsBAhQAFAAICAgA8IzNQFo+COIvBwAAnA0AADsAAAAAAAAAAAAAAAAAfTECAHdqaGsvanVwbG9hZDIvZmlsZWRhdGEvaGVscGVyL0ltYWdlRmlsZUNvbnZlcnNpb25JbmZvLmNsYXNzUEsBAhQAFAAICAgA8IzNQIKIqQAYFAAAHCsAAC8AAAAAAAAAAAAAAAAAFTkCAHdqaGsvanVwbG9hZDIvZmlsZWRhdGEvaGVscGVyL0ltYWdlSGVscGVyLmNsYXNzUEsBAhQAFAAICAgA8IzNQCbWCTeFDQAA9h4AADsAAAAAAAAAAAAAAAAAik0CAHdqaGsvanVwbG9hZDIvZmlsZWRhdGEvaGVscGVyL0ltYWdlUmVhZGVyV3JpdGVySGVscGVyLmNsYXNzUEsBAhQAFAAICAgA8IzNQNJldGchHAAAFT0AACwAAAAAAAAAAAAAAAAAeFsCAHdqaGsvanVwbG9hZDIvZmlsZWRhdGEvUGljdHVyZUZpbGVEYXRhLmNsYXNzUEsBAhQAFAAICAgA8IzNQLF6KBsqCgAA4xMAACMAAAAAAAAAAAAAAAAA83cCAHdqaGsvanVwbG9hZDIvZ3VpL0RlYnVnRGlhbG9nLmNsYXNzUEsBAhQAFAAICAgA8IzNQFLldTewAQAA/AIAACsAAAAAAAAAAAAAAAAAboICAHdqaGsvanVwbG9hZDIvZ3VpL0RpYWxvZ1VwbG9hZFJldHJ5JDEuY2xhc3NQSwECFAAUAAgICADwjM1AaxOHdGUMAAAbGgAAKQAAAAAAAAAAAAAAAAB3hAIAd2poay9qdXBsb2FkMi9ndWkvRGlhbG9nVXBsb2FkUmV0cnkuY2xhc3NQSwECFAAUAAgICADwjM1AJzb8CC0HAACxDwAAIwAAAAAAAAAAAAAAAAAzkQIAd2poay9qdXBsb2FkMi9ndWkvRG5ETGlzdGVuZXIuY2xhc3NQSwECFAAUAAgICADwjM1A8+Z/G38DAABpBgAAMgAAAAAAAAAAAAAAAACxmAIAd2poay9qdXBsb2FkMi9ndWkvZmlsZXBhbmVsL0NvbHVtbkNvbXBhcmF0b3IuY2xhc3NQSwECFAAUAAgICADwjM1AosLO6QsDAACZBQAALgAAAAAAAAAAAAAAAACQnAIAd2poay9qdXBsb2FkMi9ndWkvZmlsZXBhbmVsL0RhdGVSZW5kZXJlci5jbGFzc1BLAQIUABQACAgIAPCMzUB8uH3JuAEAAEUDAAArAAAAAAAAAAAAAAAAAPefAgB3amhrL2p1cGxvYWQyL2d1aS9maWxlcGFuZWwvRmlsZVBhbmVsLmNsYXNzUEsBAhQAFAAICAgA8IzNQN2xRi0JDQAAfhoAADUAAAAAAAAAAAAAAAAACKICAHdqaGsvanVwbG9hZDIvZ3VpL2ZpbGVwYW5lbC9GaWxlUGFuZWxEYXRhTW9kZWwyLmNsYXNzUEsBAhQAFAAICAgA8IzNQMCcyPIlCAAAsBIAADEAAAAAAAAAAAAAAAAAdK8CAHdqaGsvanVwbG9hZDIvZ3VpL2ZpbGVwYW5lbC9GaWxlUGFuZWxKVGFibGUuY2xhc3NQSwECFAAUAAgICADwjM1AGwr+RaILAABpGgAAMwAAAAAAAAAAAAAAAAD4twIAd2poay9qdXBsb2FkMi9ndWkvZmlsZXBhbmVsL0ZpbGVQYW5lbFRhYmxlSW1wLmNsYXNzUEsBAhQAFAAICAgA8IzNQJy6PzoqAgAAgQMAAC4AAAAAAAAAAAAAAAAA+8MCAHdqaGsvanVwbG9hZDIvZ3VpL2ZpbGVwYW5lbC9OYW1lUmVuZGVyZXIuY2xhc3NQSwECFAAUAAgICADwjM1Ax0D8ZMIGAADfDAAALgAAAAAAAAAAAAAAAACBxgIAd2poay9qdXBsb2FkMi9ndWkvZmlsZXBhbmVsL1NpemVSZW5kZXJlci5jbGFzc1BLAQIUABQACAgIAPCMzUDaptB4eQMAADEGAAAvAAAAAAAAAAAAAAAAAJ/NAgB3amhrL2p1cGxvYWQyL2d1aS9maWxlcGFuZWwvU29ydEFycm93SWNvbi5jbGFzc1BLAQIUABQACAgIAPCMzUCLmCc9xwQAAAkJAAA0AAAAAAAAAAAAAAAAAHXRAgB3amhrL2p1cGxvYWQyL2d1aS9maWxlcGFuZWwvU29ydEhlYWRlclJlbmRlcmVyLmNsYXNzUEsBAhQAFAAICAgA8IzNQHkWVMv+BAAA5gkAACIAAAAAAAAAAAAAAAAAntYCAHdqaGsvanVwbG9hZDIvZ3VpL0ljb25Xb3JrZXIuY2xhc3NQSwECFAAUAAgICADwjM1AmvxADIoCAABfBQAAMAAAAAAAAAAAAAAAAADs2wIAd2poay9qdXBsb2FkMi9ndWkvaW1hZ2UvRGlhbG9nUGljdHVyZVBhbmVsLmNsYXNzUEsBAhQAFAAICAgA8IzNQD/3ItPqBQAAkAsAADEAAAAAAAAAAAAAAAAA1N4CAHdqaGsvanVwbG9hZDIvZ3VpL2ltYWdlL0pVcGxvYWRJbWFnZVByZXZpZXcuY2xhc3NQSwECFAAUAAgICADwjM1ALmR1fYsDAABdBwAALQAAAAAAAAAAAAAAAAAd5QIAd2poay9qdXBsb2FkMi9ndWkvaW1hZ2UvTG9hZEltYWdlVGhyZWFkLmNsYXNzUEsBAhQAFAAICAgA8IzNQATjiEYKBgAAkg0AACsAAAAAAAAAAAAAAAAAA+kCAHdqaGsvanVwbG9hZDIvZ3VpL2ltYWdlL1BpY3R1cmVEaWFsb2cuY2xhc3NQSwECFAAUAAgICADwjM1AA3vTlyoIAAD7EQAAKgAAAAAAAAAAAAAAAABm7wIAd2poay9qdXBsb2FkMi9ndWkvaW1hZ2UvUGljdHVyZVBhbmVsLmNsYXNzUEsBAhQAFAAICAgA8IzNQL/HetP0BgAA/Q4AAC0AAAAAAAAAAAAAAAAA6PcCAHdqaGsvanVwbG9hZDIvZ3VpL0pVcGxvYWREZWJ1Z1BvcHVwTWVudS5jbGFzc1BLAQIUABQACAgIAPCMzUAMwjAeUAMAALEGAAAqAAAAAAAAAAAAAAAAADf/AgB3amhrL2p1cGxvYWQyL2d1aS9KVXBsb2FkRmlsZUNob29zZXIuY2xhc3NQSwECFAAUAAgICADwjM1A2EEBl70BAAA1AwAAKQAAAAAAAAAAAAAAAADfAgMAd2poay9qdXBsb2FkMi9ndWkvSlVwbG9hZEZpbGVGaWx0ZXIuY2xhc3NQSwECFAAUAAgICADwjM1AHPd9lo4IAAA+EwAAJwAAAAAAAAAAAAAAAADzBAMAd2poay9qdXBsb2FkMi9ndWkvSlVwbG9hZEZpbGVWaWV3LmNsYXNzUEsBAhQAFAAICAgA8IzNQJFVf7RCAwAAfwYAACwAAAAAAAAAAAAAAAAA1g0DAHdqaGsvanVwbG9hZDIvZ3VpL0pVcGxvYWRNYWluUG9wdXBNZW51LmNsYXNzUEsBAhQAFAAICAgA8IzNQNLta5lUAgAADgUAACQAAAAAAAAAAAAAAAAAchEDAHdqaGsvanVwbG9hZDIvZ3VpL0pVcGxvYWRQYW5lbC5jbGFzc1BLAQIUABQACAgIAPCMzUAGMD+O5RQAACMyAAAoAAAAAAAAAAAAAAAAABgUAwB3amhrL2p1cGxvYWQyL2d1aS9KVXBsb2FkUGFuZWxJbXBsLmNsYXNzUEsBAhQAFAAICAgA8IzNQGYj48DMBAAA9QgAADgAAAAAAAAAAAAAAAAAUykDAHdqaGsvanVwbG9hZDIvZ3VpL0pVcGxvYWRUZXh0QXJlYSRMb2dNZXNzYWdlVGhyZWFkLmNsYXNzUEsBAhQAFAAICAgA8IzNQA4Mq84UCQAAoxIAACcAAAAAAAAAAAAAAAAAhS4DAHdqaGsvanVwbG9hZDIvZ3VpL0pVcGxvYWRUZXh0QXJlYS5jbGFzc1BLAQIUABQACAgIAPCMzUAKvAy3/wcAAGcRAAAuAAAAAAAAAAAAAAAAAO43AwB3amhrL2p1cGxvYWQyL2d1aS9KVXBsb2FkVHJhbnNmZXJIYW5kbGVyLmNsYXNzUEsBAhQAFAAICAgA8IzNQFPhUXUNAgAA5wMAADkAAAAAAAAAAAAAAAAASUADAHdqaGsvanVwbG9hZDIvSlVwbG9hZEFwcGxldCQxSlVwbG9hZEFwcGxldERlc3Ryb3llci5jbGFzc1BLAQIUABQACAgIAPCMzUDdxGOV3gEAAJUDAAA7AAAAAAAAAAAAAAAAAL1CAwB3amhrL2p1cGxvYWQyL0pVcGxvYWRBcHBsZXQkMUpVcGxvYWRBcHBsZXRJbml0aWFsaXplci5jbGFzc1BLAQIUABQACAgIAPCMzUAa1j2rTAYAAGENAAAhAAAAAAAAAAAAAAAAAARFAwB3amhrL2p1cGxvYWQyL0pVcGxvYWRBcHBsZXQuY2xhc3NQSwECFAAUAAgICADwjM1AAwp5x1gBAAAjAgAAIwAAAAAAAAAAAAAAAACfSwMAd2poay9qdXBsb2FkMi9KVXBsb2FkRGFlbW9uJDEuY2xhc3NQSwECFAAUAAgICADwjM1Ae5wv9fMCAAA6BQAAIQAAAAAAAAAAAAAAAABITQMAd2poay9qdXBsb2FkMi9KVXBsb2FkRGFlbW9uLmNsYXNzUEsBAhQAFAAICAgA8IzNQD59y9HbCgAAWBYAADMAAAAAAAAAAAAAAAAAilADAHdqaGsvanVwbG9hZDIvcG9saWNpZXMvQ29wcGVybWluZVVwbG9hZFBvbGljeS5jbGFzc1BLAQIUABQACAgIAPCMzUCkA8/GZQEAAKICAABEAAAAAAAAAAAAAAAAAMZbAwB3amhrL2p1cGxvYWQyL3BvbGljaWVzL0N1c3RvbWl6ZWROYkZpbGVzUGVyUmVxdWVzdFVwbG9hZFBvbGljeS5jbGFzc1BLAQIUABQACAgIAPCMzUCbEMSAWwIAAAwFAAAyAAAAAAAAAAAAAAAAAJ1dAwB3amhrL2p1cGxvYWQyL3BvbGljaWVzL0RlZmF1bHRVcGxvYWRQb2xpY3kkMS5jbGFzc1BLAQIUABQACAgIAPCMzUDidxTNmk8AAEyyAAAwAAAAAAAAAAAAAAAAAFhgAwB3amhrL2p1cGxvYWQyL3BvbGljaWVzL0RlZmF1bHRVcGxvYWRQb2xpY3kuY2xhc3NQSwECFAAUAAgICADwjM1AJSdDHX0BAACkAgAAMwAAAAAAAAAAAAAAAABQsAMAd2poay9qdXBsb2FkMi9wb2xpY2llcy9GaWxlQnlGaWxlVXBsb2FkUG9saWN5LmNsYXNzUEsBAhQAFAAICAgA8IzNQIUdGywoAwAAtgYAADYAAAAAAAAAAAAAAAAALrIDAHdqaGsvanVwbG9hZDIvcG9saWNpZXMvRmlsZXNUb2dldGhlclVwbG9hZFBvbGljeS5jbGFzc1BLAQIUABQACAgIAPCMzUDXJOYb3BYAAHs1AAAwAAAAAAAAAAAAAAAAALq1AwB3amhrL2p1cGxvYWQyL3BvbGljaWVzL1BpY3R1cmVVcGxvYWRQb2xpY3kuY2xhc3NQSwECFAAUAAgICADwjM1AMevZALILAABfFwAAMwAAAAAAAAAAAAAAAAD0zAMAd2poay9qdXBsb2FkMi9wb2xpY2llcy9TaWx2ZXJwZWFzVXBsb2FkUG9saWN5LmNsYXNzUEsBAhQAFAAICAgA8IzNQG81jcvoCAAATRMAADQAAAAAAAAAAAAAAAAAB9kDAHdqaGsvanVwbG9hZDIvcG9saWNpZXMvU3VwZXJTaW1wbGVVcGxvYWRQb2xpY3kuY2xhc3NQSwECFAAUAAgICADwjM1AlqP/R3gPAADLKAAAKQAAAAAAAAAAAAAAAABR4gMAd2poay9qdXBsb2FkMi9wb2xpY2llcy9VcGxvYWRQb2xpY3kuY2xhc3NQSwECFAAUAAgICADwjM1ACqYwhIYHAADqDwAAMAAAAAAAAAAAAAAAAAAg8gMAd2poay9qdXBsb2FkMi9wb2xpY2llcy9VcGxvYWRQb2xpY3lGYWN0b3J5LmNsYXNzUEsBAhQAFAAICAgA8IzNQOoD+FRtFAAA6isAADIAAAAAAAAAAAAAAAAABPoDAHdqaGsvanVwbG9hZDIvdXBsb2FkL0RlZmF1bHRGaWxlVXBsb2FkVGhyZWFkLmNsYXNzUEsBAhQAFAAICAgA8IzNQHMYnZVoCQAAcBUAADAAAAAAAAAAAAAAAAAA0Q4EAHdqaGsvanVwbG9hZDIvdXBsb2FkL0ZpbGVQcmVwYXJhdGlvblRocmVhZC5jbGFzc1BLAQIUABQACAgIAPCMzUDk7WwmJwIAABAFAAAyAAAAAAAAAAAAAAAAAJcYBAB3amhrL2p1cGxvYWQyL3VwbG9hZC9GaWxlVXBsb2FkTWFuYWdlclRocmVhZC5jbGFzc1BLAQIUABQACAgIAPCMzUAYSameGREAAI0oAAA2AAAAAAAAAAAAAAAAAB4bBAB3amhrL2p1cGxvYWQyL3VwbG9hZC9GaWxlVXBsb2FkTWFuYWdlclRocmVhZEltcGwuY2xhc3NQSwECFAAUAAgICADwjM1AAb5v36sBAAAtAwAAKwAAAAAAAAAAAAAAAACbLAQAd2poay9qdXBsb2FkMi91cGxvYWQvRmlsZVVwbG9hZFRocmVhZC5jbGFzc1BLAQIUABQACAgIAPCMzUD7hVr+ehQAAJwsAAAuAAAAAAAAAAAAAAAAAJ8uBAB3amhrL2p1cGxvYWQyL3VwbG9hZC9GaWxlVXBsb2FkVGhyZWFkRlRQLmNsYXNzUEsBAhQAFAAICAgA8IzNQCgD5vVjFAAABS8AAC8AAAAAAAAAAAAAAAAAdUMEAHdqaGsvanVwbG9hZDIvdXBsb2FkL0ZpbGVVcGxvYWRUaHJlYWRIVFRQLmNsYXNzUEsBAhQAFAAICAgA8IzNQP+AZ9GKAQAAIgQAADIAAAAAAAAAAAAAAAAANVgEAHdqaGsvanVwbG9hZDIvdXBsb2FkL2hlbHBlci9CeXRlQXJyYXlFbmNvZGVyLmNsYXNzUEsBAhQAFAAICAgA8IzNQMB8QwdsDwAADCMAADYAAAAAAAAAAAAAAAAAH1oEAHdqaGsvanVwbG9hZDIvdXBsb2FkL2hlbHBlci9CeXRlQXJyYXlFbmNvZGVySFRUUC5jbGFzc1BLAQIUABQACAgIAPCMzUDqV5tucgQAAIIIAAAyAAAAAAAAAAAAAAAAAO9pBAB3amhrL2p1cGxvYWQyL3VwbG9hZC9oZWxwZXIvQ29va2llSmFyJENvb2tpZS5jbGFzc1BLAQIUABQACAgIAPCMzUCWLROmbQsAAL4VAAArAAAAAAAAAAAAAAAAAMFuBAB3amhrL2p1cGxvYWQyL3VwbG9hZC9oZWxwZXIvQ29va2llSmFyLmNsYXNzUEsBAhQAFAAICAgA8IzNQIWeotuqAAAA8AAAAC8AAAAAAAAAAAAAAAAAh3oEAHdqaGsvanVwbG9hZDIvdXBsb2FkL2hlbHBlci9IdHRwQ29ubmVjdCQxLmNsYXNzUEsBAhQAFAAICAgA8IzNQEVt+o5pAgAAqwUAADAAAAAAAAAAAAAAAAAAjnsEAHdqaGsvanVwbG9hZDIvdXBsb2FkL2hlbHBlci9IdHRwQ29ubmVjdCRUTS5jbGFzc1BLAQIUABQACAgIAPCMzUBOLmGXJxMAAOwnAAAtAAAAAAAAAAAAAAAAAFV+BAB3amhrL2p1cGxvYWQyL3VwbG9hZC9oZWxwZXIvSHR0cENvbm5lY3QuY2xhc3NQSwECFAAUAAgICADwjM1AyofwBrMXAAB9NQAANgAAAAAAAAAAAAAAAADXkQQAd2poay9qdXBsb2FkMi91cGxvYWQvaGVscGVyL0hUVFBDb25uZWN0aW9uSGVscGVyLmNsYXNzUEsBAhQAFAAICAgA8IzNQJhR3yirEQAAEiMAADcAAAAAAAAAAAAAAAAA7qkEAHdqaGsvanVwbG9hZDIvdXBsb2FkL2hlbHBlci9IVFRQSW5wdXRTdHJlYW1SZWFkZXIuY2xhc3NQSwECFAAUAAgICADwjM1AFxL4dqoEAAAECQAAOgAAAAAAAAAAAAAAAAD+uwQAd2poay9qdXBsb2FkMi91cGxvYWQvaGVscGVyL0h0dHBQcm90b2NvbEZpbmRlclRocmVhZC5jbGFzc1BLAQIUABQACAgIAPCMzUC2zyLuph0AAGU7AAA5AAAAAAAAAAAAAAAAABDBBAB3amhrL2p1cGxvYWQyL3VwbG9hZC9oZWxwZXIvSW50ZXJhY3RpdmVUcnVzdE1hbmFnZXIuY2xhc3NQSwECFAAUAAgICADwjM1Ax4rdzxkPAAADIAAANAAAAAAAAAAAAAAAAAAd3wQAd2poay9qdXBsb2FkMi91cGxvYWQvaGVscGVyL1Byb2dyZXNzQmFyTWFuYWdlci5jbGFzc1BLAQIUABQACAgIAPCMzUDihOBQQwgAAEETAAAzAAAAAAAAAAAAAAAAAJjuBAB3amhrL2p1cGxvYWQyL3VwbG9hZC9QYWNrZXRDb25zdHJ1Y3Rpb25UaHJlYWQuY2xhc3NQSwECFAAUAAgICADwjM1AMqAhml4LAAAdGgAAKQAAAAAAAAAAAAAAAAA89wQAd2poay9qdXBsb2FkMi91cGxvYWQvVXBsb2FkRmlsZURhdGEuY2xhc3NQSwECFAAUAAgICADwjM1AvbTg6DIBAAA0AgAAMgAAAAAAAAAAAAAAAADxAgUAd2poay9qdXBsb2FkMi91cGxvYWQvVXBsb2FkRmlsZURhdGFQb2lzb25uZWQuY2xhc3NQSwECFAAUAAgICADwjM1AnaBqxccEAABgCgAAKwAAAAAAAAAAAAAAAACDBAUAd2poay9qdXBsb2FkMi91cGxvYWQvVXBsb2FkRmlsZVBhY2tldC5jbGFzc1BLAQIUABQACAgIAPCMzUBvOONPIgEAACQCAAA0AAAAAAAAAAAAAAAAAKMJBQB3amhrL2p1cGxvYWQyL3VwbG9hZC9VcGxvYWRGaWxlUGFja2V0UG9pc29ubmVkLmNsYXNzUEsFBgAAAACcAJwA6jIAACcLBQAAAA==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/filemanager/UploadHandler.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogalF1ZXJ5IEZpbGUgVXBsb2FkIFBsdWdpbiBQSFAgQ2xhc3MKICogaHR0cHM6Ly9naXRodWIuY29tL2JsdWVpbXAvalF1ZXJ5LUZpbGUtVXBsb2FkCiAqCiAqIENvcHlyaWdodCAyMDEwLCBTZWJhc3RpYW4gVHNjaGFuCiAqIGh0dHBzOi8vYmx1ZWltcC5uZXQKICoKICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlOgogKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVAogKi8KCmNsYXNzIFVwbG9hZEhhbmRsZXIKewoKICAgIHByb3RlY3RlZCAkb3B0aW9uczsKCiAgICAvLyBQSFAgRmlsZSBVcGxvYWQgZXJyb3IgbWVzc2FnZSBjb2RlczoKICAgIC8vIGh0dHA6Ly9waHAubmV0L21hbnVhbC9lbi9mZWF0dXJlcy5maWxlLXVwbG9hZC5lcnJvcnMucGhwCiAgICBwcm90ZWN0ZWQgJGVycm9yX21lc3NhZ2VzID0gYXJyYXkoCiAgICAgICAgMSA9PiAnVGhlIHVwbG9hZGVkIGZpbGUgZXhjZWVkcyB0aGUgdXBsb2FkX21heF9maWxlc2l6ZSBkaXJlY3RpdmUgaW4gcGhwLmluaScsCiAgICAgICAgMiA9PiAnVGhlIHVwbG9hZGVkIGZpbGUgZXhjZWVkcyB0aGUgTUFYX0ZJTEVfU0laRSBkaXJlY3RpdmUgdGhhdCB3YXMgc3BlY2lmaWVkIGluIHRoZSBIVE1MIGZvcm0nLAogICAgICAgIDMgPT4gJ1RoZSB1cGxvYWRlZCBmaWxlIHdhcyBvbmx5IHBhcnRpYWxseSB1cGxvYWRlZCcsCiAgICAgICAgNCA9PiAnTm8gZmlsZSB3YXMgdXBsb2FkZWQnLAogICAgICAgIDYgPT4gJ01pc3NpbmcgYSB0ZW1wb3JhcnkgZm9sZGVyJywKICAgICAgICA3ID0+ICdGYWlsZWQgdG8gd3JpdGUgZmlsZSB0byBkaXNrJywKICAgICAgICA4ID0+ICdBIFBIUCBleHRlbnNpb24gc3RvcHBlZCB0aGUgZmlsZSB1cGxvYWQnLAogICAgICAgICdwb3N0X21heF9zaXplJyA9PiAnVGhlIHVwbG9hZGVkIGZpbGUgZXhjZWVkcyB0aGUgcG9zdF9tYXhfc2l6ZSBkaXJlY3RpdmUgaW4gcGhwLmluaScsCiAgICAgICAgJ21heF9maWxlX3NpemUnID0+ICdGaWxlIGlzIHRvbyBiaWcnLAogICAgICAgICdtaW5fZmlsZV9zaXplJyA9PiAnRmlsZSBpcyB0b28gc21hbGwnLAogICAgICAgICdhY2NlcHRfZmlsZV90eXBlcycgPT4gJ0ZpbGV0eXBlIG5vdCBhbGxvd2VkJywKICAgICAgICAnbWF4X251bWJlcl9vZl9maWxlcycgPT4gJ01heGltdW0gbnVtYmVyIG9mIGZpbGVzIGV4Y2VlZGVkJywKICAgICAgICAnbWF4X3dpZHRoJyA9PiAnSW1hZ2UgZXhjZWVkcyBtYXhpbXVtIHdpZHRoJywKICAgICAgICAnbWluX3dpZHRoJyA9PiAnSW1hZ2UgcmVxdWlyZXMgYSBtaW5pbXVtIHdpZHRoJywKICAgICAgICAnbWF4X2hlaWdodCcgPT4gJ0ltYWdlIGV4Y2VlZHMgbWF4aW11bSBoZWlnaHQnLAogICAgICAgICdtaW5faGVpZ2h0JyA9PiAnSW1hZ2UgcmVxdWlyZXMgYSBtaW5pbXVtIGhlaWdodCcsCiAgICAgICAgJ2Fib3J0JyA9PiAnRmlsZSB1cGxvYWQgYWJvcnRlZCcsCiAgICAgICAgJ2ltYWdlX3Jlc2l6ZScgPT4gJ0ZhaWxlZCB0byByZXNpemUgaW1hZ2UnCiAgICApOwoKICAgIGNvbnN0IElNQUdFVFlQRV9HSUYgPSAxOwogICAgY29uc3QgSU1BR0VUWVBFX0pQRUcgPSAyOwogICAgY29uc3QgSU1BR0VUWVBFX1BORyA9IDM7CgogICAgcHJvdGVjdGVkICRpbWFnZV9vYmplY3RzID0gYXJyYXkoKTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJG9wdGlvbnMgPSBudWxsLCAkaW5pdGlhbGl6ZSA9IHRydWUsICRlcnJvcl9tZXNzYWdlcyA9IG51bGwpIHsKICAgICAgICAkdGhpcy0+cmVzcG9uc2UgPSBhcnJheSgpOwogICAgICAgICR0aGlzLT5vcHRpb25zID0gYXJyYXkoCiAgICAgICAgICAgICdzY3JpcHRfdXJsJyA9PiAkdGhpcy0+Z2V0X2Z1bGxfdXJsKCkuJy8nLiR0aGlzLT5iYXNlbmFtZSgkdGhpcy0+Z2V0X3NlcnZlcl92YXIoJ1NDUklQVF9OQU1FJykpLAogICAgICAgICAgICAndXBsb2FkX2RpcicgPT4gZGlybmFtZSgkdGhpcy0+Z2V0X3NlcnZlcl92YXIoJ1NDUklQVF9GSUxFTkFNRScpKS4nL2ZpbGVzLycsCiAgICAgICAgICAgICd1cGxvYWRfdXJsJyA9PiAkdGhpcy0+Z2V0X2Z1bGxfdXJsKCkuJy9maWxlcy8nLAogICAgICAgICAgICAnaW5wdXRfc3RyZWFtJyA9PiAncGhwOi8vaW5wdXQnLAogICAgICAgICAgICAndXNlcl9kaXJzJyA9PiBmYWxzZSwKICAgICAgICAgICAgJ21rZGlyX21vZGUnID0+IDA3NTUsCiAgICAgICAgICAgICdwYXJhbV9uYW1lJyA9PiAnZmlsZXMnLAogICAgICAgICAgICAvLyBTZXQgdGhlIGZvbGxvd2luZyBvcHRpb24gdG8gJ1BPU1QnLCBpZiB5b3VyIHNlcnZlciBkb2VzIG5vdCBzdXBwb3J0CiAgICAgICAgICAgIC8vIERFTEVURSByZXF1ZXN0cy4gVGhpcyBpcyBhIHBhcmFtZXRlciBzZW50IHRvIHRoZSBjbGllbnQ6CiAgICAgICAgICAgICdkZWxldGVfdHlwZScgPT4gJ0RFTEVURScsCiAgICAgICAgICAgICdhY2Nlc3NfY29udHJvbF9hbGxvd19vcmlnaW4nID0+ICcqJywKICAgICAgICAgICAgJ2FjY2Vzc19jb250cm9sX2FsbG93X2NyZWRlbnRpYWxzJyA9PiBmYWxzZSwKICAgICAgICAgICAgJ2FjY2Vzc19jb250cm9sX2FsbG93X21ldGhvZHMnID0+IGFycmF5KAogICAgICAgICAgICAgICAgJ09QVElPTlMnLAogICAgICAgICAgICAgICAgJ0hFQUQnLAogICAgICAgICAgICAgICAgJ0dFVCcsCiAgICAgICAgICAgICAgICAnUE9TVCcsCiAgICAgICAgICAgICAgICAnUFVUJywKICAgICAgICAgICAgICAgICdQQVRDSCcsCiAgICAgICAgICAgICAgICAnREVMRVRFJwogICAgICAgICAgICApLAogICAgICAgICAgICAnYWNjZXNzX2NvbnRyb2xfYWxsb3dfaGVhZGVycycgPT4gYXJyYXkoCiAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJywKICAgICAgICAgICAgICAgICdDb250ZW50LVJhbmdlJywKICAgICAgICAgICAgICAgICdDb250ZW50LURpc3Bvc2l0aW9uJwogICAgICAgICAgICApLAogICAgICAgICAgICAvLyBCeSBkZWZhdWx0LCBhbGxvdyByZWRpcmVjdHMgdG8gdGhlIHJlZmVyZXIgcHJvdG9jb2wraG9zdDoKICAgICAgICAgICAgJ3JlZGlyZWN0X2FsbG93X3RhcmdldCcgPT4gJy9eJy5wcmVnX3F1b3RlKAogICAgICAgICAgICAgIHBhcnNlX3VybCgkdGhpcy0+Z2V0X3NlcnZlcl92YXIoJ0hUVFBfUkVGRVJFUicpLCBQSFBfVVJMX1NDSEVNRSkKICAgICAgICAgICAgICAgIC4nOi8vJwogICAgICAgICAgICAgICAgLnBhcnNlX3VybCgkdGhpcy0+Z2V0X3NlcnZlcl92YXIoJ0hUVFBfUkVGRVJFUicpLCBQSFBfVVJMX0hPU1QpCiAgICAgICAgICAgICAgICAuJy8nLCAvLyBUcmFpbGluZyBzbGFzaCB0byBub3QgbWF0Y2ggc3ViZG9tYWlucyBieSBtaXN0YWtlCiAgICAgICAgICAgICAgJy8nIC8vIHByZWdfcXVvdGUgZGVsaW1pdGVyIHBhcmFtCiAgICAgICAgICAgICkuJy8nLAogICAgICAgICAgICAvLyBFbmFibGUgdG8gcHJvdmlkZSBmaWxlIGRvd25sb2FkcyB2aWEgR0VUIHJlcXVlc3RzIHRvIHRoZSBQSFAgc2NyaXB0OgogICAgICAgICAgICAvLyAgICAgMS4gU2V0IHRvIDEgdG8gZG93bmxvYWQgZmlsZXMgdmlhIHJlYWRmaWxlIG1ldGhvZCB0aHJvdWdoIFBIUAogICAgICAgICAgICAvLyAgICAgMi4gU2V0IHRvIDIgdG8gc2VuZCBhIFgtU2VuZGZpbGUgaGVhZGVyIGZvciBsaWdodHRwZC9BcGFjaGUKICAgICAgICAgICAgLy8gICAgIDMuIFNldCB0byAzIHRvIHNlbmQgYSBYLUFjY2VsLVJlZGlyZWN0IGhlYWRlciBmb3IgbmdpbngKICAgICAgICAgICAgLy8gSWYgc2V0IHRvIDIgb3IgMywgYWRqdXN0IHRoZSB1cGxvYWRfdXJsIG9wdGlvbiB0byB0aGUgYmFzZSBwYXRoIG9mCiAgICAgICAgICAgIC8vIHRoZSByZWRpcmVjdCBwYXJhbWV0ZXIsIGUuZy4gJy9maWxlcy8nLgogICAgICAgICAgICAnZG93bmxvYWRfdmlhX3BocCcgPT4gZmFsc2UsCiAgICAgICAgICAgIC8vIFJlYWQgZmlsZXMgaW4gY2h1bmtzIHRvIGF2b2lkIG1lbW9yeSBsaW1pdHMgd2hlbiBkb3dubG9hZF92aWFfcGhwCiAgICAgICAgICAgIC8vIGlzIGVuYWJsZWQsIHNldCB0byAwIHRvIGRpc2FibGUgY2h1bmtlZCByZWFkaW5nIG9mIGZpbGVzOgogICAgICAgICAgICAncmVhZGZpbGVfY2h1bmtfc2l6ZScgPT4gMTAgKiAxMDI0ICogMTAyNCwgLy8gMTAgTWlCCiAgICAgICAgICAgIC8vIERlZmluZXMgd2hpY2ggZmlsZXMgY2FuIGJlIGRpc3BsYXllZCBpbmxpbmUgd2hlbiBkb3dubG9hZGVkOgogICAgICAgICAgICAnaW5saW5lX2ZpbGVfdHlwZXMnID0+ICcvXC4oZ2lmfGpwZT9nfHBuZykkL2knLAogICAgICAgICAgICAvLyBEZWZpbmVzIHdoaWNoIGZpbGVzIChiYXNlZCBvbiB0aGVpciBuYW1lcykgYXJlIGFjY2VwdGVkIGZvciB1cGxvYWQuCiAgICAgICAgICAgIC8vIEJ5IGRlZmF1bHQsIG9ubHkgYWxsb3dzIGZpbGUgdXBsb2FkcyB3aXRoIGltYWdlIGZpbGUgZXh0ZW5zaW9ucy4KICAgICAgICAgICAgLy8gT25seSBjaGFuZ2UgdGhpcyBzZXR0aW5nIGFmdGVyIG1ha2luZyBzdXJlIHRoYXQgYW55IGFsbG93ZWQgZmlsZQogICAgICAgICAgICAvLyB0eXBlcyBjYW5ub3QgYmUgZXhlY3V0ZWQgYnkgdGhlIHdlYnNlcnZlciBpbiB0aGUgZmlsZXMgZGlyZWN0b3J5LAogICAgICAgICAgICAvLyBlLmcuIFBIUCBzY3JpcHRzLCBub3IgZXhlY3V0ZWQgYnkgdGhlIGJyb3dzZXIgd2hlbiBkb3dubG9hZGVkLAogICAgICAgICAgICAvLyBlLmcuIEhUTUwgZmlsZXMgd2l0aCBlbWJlZGRlZCBKYXZhU2NyaXB0IGNvZGUuCiAgICAgICAgICAgIC8vIFBsZWFzZSBhbHNvIHJlYWQgdGhlIFNFQ1VSSVRZLm1kIGRvY3VtZW50IGluIHRoaXMgcmVwb3NpdG9yeS4KICAgICAgICAgICAgJ2FjY2VwdF9maWxlX3R5cGVzJyA9PiAnL1wuKGdpZnxqcGU/Z3xwbmcpJC9pJywKICAgICAgICAgICAgLy8gUmVwbGFjZXMgZG90cyBpbiBmaWxlbmFtZXMgd2l0aCB0aGUgZ2l2ZW4gc3RyaW5nLgogICAgICAgICAgICAvLyBDYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyBpdCB0byBmYWxzZSBvciBhbiBlbXB0eSBzdHJpbmcuCiAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB0aGlzIGlzIGEgc2VjdXJpdHkgZmVhdHVyZSBmb3Igc2VydmVycyB0aGF0IHN1cHBvcnQKICAgICAgICAgICAgLy8gbXVsdGlwbGUgZmlsZSBleHRlbnNpb25zLCBlLmcuIHRoZSBBcGFjaGUgQWRkSGFuZGxlciBEaXJlY3RpdmU6CiAgICAgICAgICAgIC8vIGh0dHBzOi8vaHR0cGQuYXBhY2hlLm9yZy9kb2NzL2N1cnJlbnQvbW9kL21vZF9taW1lLmh0bWwjYWRkaGFuZGxlcgogICAgICAgICAgICAvLyBCZWZvcmUgZGlzYWJsaW5nIGl0LCBtYWtlIHN1cmUgdGhhdCBmaWxlcyB1cGxvYWRlZCB3aXRoIG11bHRpcGxlCiAgICAgICAgICAgIC8vIGV4dGVuc2lvbnMgY2Fubm90IGJlIGV4ZWN1dGVkIGJ5IHRoZSB3ZWJzZXJ2ZXIsIGUuZy4KICAgICAgICAgICAgLy8gImV4YW1wbGUucGhwLnBuZyIgd2l0aCBlbWJlZGRlZCBQSFAgY29kZSwgbm9yIGV4ZWN1dGVkIGJ5IHRoZQogICAgICAgICAgICAvLyBicm93c2VyIHdoZW4gZG93bmxvYWRlZCwgZS5nLiAiZXhhbXBsZS5odG1sLmdpZiIgd2l0aCBlbWJlZGRlZAogICAgICAgICAgICAvLyBKYXZhU2NyaXB0IGNvZGUuCiAgICAgICAgICAgICdyZXBsYWNlX2RvdHNfaW5fZmlsZW5hbWVzJyA9PiAnLScsCiAgICAgICAgICAgIC8vIFRoZSBwaHAuaW5pIHNldHRpbmdzIHVwbG9hZF9tYXhfZmlsZXNpemUgYW5kIHBvc3RfbWF4X3NpemUKICAgICAgICAgICAgLy8gdGFrZSBwcmVjZWRlbmNlIG92ZXIgdGhlIGZvbGxvd2luZyBtYXhfZmlsZV9zaXplIHNldHRpbmc6CiAgICAgICAgICAgICdtYXhfZmlsZV9zaXplJyA9PiBudWxsLAogICAgICAgICAgICAnbWluX2ZpbGVfc2l6ZScgPT4gMSwKICAgICAgICAgICAgLy8gVGhlIG1heGltdW0gbnVtYmVyIG9mIGZpbGVzIGZvciB0aGUgdXBsb2FkIGRpcmVjdG9yeToKICAgICAgICAgICAgJ21heF9udW1iZXJfb2ZfZmlsZXMnID0+IG51bGwsCiAgICAgICAgICAgIC8vIFJlYWRzIGZpcnN0IGZpbGUgYnl0ZXMgdG8gaWRlbnRpZnkgYW5kIGNvcnJlY3QgZmlsZSBleHRlbnNpb25zOgogICAgICAgICAgICAnY29ycmVjdF9pbWFnZV9leHRlbnNpb25zJyA9PiBmYWxzZSwKICAgICAgICAgICAgLy8gSW1hZ2UgcmVzb2x1dGlvbiByZXN0cmljdGlvbnM6CiAgICAgICAgICAgICdtYXhfd2lkdGgnID0+IG51bGwsCiAgICAgICAgICAgICdtYXhfaGVpZ2h0JyA9PiBudWxsLAogICAgICAgICAgICAnbWluX3dpZHRoJyA9PiAxLAogICAgICAgICAgICAnbWluX2hlaWdodCcgPT4gMSwKICAgICAgICAgICAgLy8gU2V0IHRoZSBmb2xsb3dpbmcgb3B0aW9uIHRvIGZhbHNlIHRvIGVuYWJsZSByZXN1bWFibGUgdXBsb2FkczoKICAgICAgICAgICAgJ2Rpc2NhcmRfYWJvcnRlZF91cGxvYWRzJyA9PiB0cnVlLAogICAgICAgICAgICAvLyBTZXQgdG8gMCB0byB1c2UgdGhlIEdEIGxpYnJhcnkgdG8gc2NhbGUgYW5kIG9yaWVudCBpbWFnZXMsCiAgICAgICAgICAgIC8vIHNldCB0byAxIHRvIHVzZSBpbWFnaWNrIChpZiBpbnN0YWxsZWQsIGZhbGxzIGJhY2sgdG8gR0QpLAogICAgICAgICAgICAvLyBzZXQgdG8gMiB0byB1c2UgdGhlIEltYWdlTWFnaWNrIGNvbnZlcnQgYmluYXJ5IGRpcmVjdGx5OgogICAgICAgICAgICAnaW1hZ2VfbGlicmFyeScgPT4gMSwKICAgICAgICAgICAgLy8gVW5jb21tZW50IHRoZSBmb2xsb3dpbmcgdG8gZGVmaW5lIGFuIGFycmF5IG9mIHJlc291cmNlIGxpbWl0cwogICAgICAgICAgICAvLyBmb3IgaW1hZ2ljazoKICAgICAgICAgICAgLyoKICAgICAgICAgICAgJ2ltYWdpY2tfcmVzb3VyY2VfbGltaXRzJyA9PiBhcnJheSgKICAgICAgICAgICAgICAgIGltYWdpY2s6OlJFU09VUkNFVFlQRV9NQVAgPT4gMzIsCiAgICAgICAgICAgICAgICBpbWFnaWNrOjpSRVNPVVJDRVRZUEVfTUVNT1JZID0+IDMyCiAgICAgICAgICAgICksCiAgICAgICAgICAgICovCiAgICAgICAgICAgIC8vIENvbW1hbmQgb3IgcGF0aCBmb3IgdG8gdGhlIEltYWdlTWFnaWNrIGNvbnZlcnQgYmluYXJ5OgogICAgICAgICAgICAnY29udmVydF9iaW4nID0+ICdjb252ZXJ0JywKICAgICAgICAgICAgLy8gVW5jb21tZW50IHRoZSBmb2xsb3dpbmcgdG8gYWRkIHBhcmFtZXRlcnMgaW4gZnJvbnQgb2YgZWFjaAogICAgICAgICAgICAvLyBJbWFnZU1hZ2ljayBjb252ZXJ0IGNhbGwgKHRoZSBsaW1pdCBjb25zdHJhaW50cyBzZWVtIG9ubHkKICAgICAgICAgICAgLy8gdG8gaGF2ZSBhbiBlZmZlY3QgaWYgcHV0IGluIGZyb250KToKICAgICAgICAgICAgLyoKICAgICAgICAgICAgJ2NvbnZlcnRfcGFyYW1zJyA9PiAnLWxpbWl0IG1lbW9yeSAzMk1pQiAtbGltaXQgbWFwIDMyTWlCJywKICAgICAgICAgICAgKi8KICAgICAgICAgICAgLy8gQ29tbWFuZCBvciBwYXRoIGZvciB0byB0aGUgSW1hZ2VNYWdpY2sgaWRlbnRpZnkgYmluYXJ5OgogICAgICAgICAgICAnaWRlbnRpZnlfYmluJyA9PiAnaWRlbnRpZnknLAogICAgICAgICAgICAnaW1hZ2VfdmVyc2lvbnMnID0+IGFycmF5KAogICAgICAgICAgICAgICAgLy8gVGhlIGVtcHR5IGltYWdlIHZlcnNpb24ga2V5IGRlZmluZXMgb3B0aW9ucyBmb3IgdGhlIG9yaWdpbmFsIGltYWdlLgogICAgICAgICAgICAgICAgLy8gS2VlcCBpbiBtaW5kOiB0aGVzZSBpbWFnZSBtYW5pcHVsYXRpb25zIGFyZSBpbmhlcml0ZWQgYnkgYWxsIG90aGVyIGltYWdlIHZlcnNpb25zIGZyb20gdGhpcyBwb2ludCBvbndhcmRzLiAKICAgICAgICAgICAgICAgIC8vIEFsc28gbm90ZSB0aGF0IHRoZSBwcm9wZXJ0eSAnbm9fY2FjaGUnIGlzIG5vdCBpbmhlcml0ZWQsIHNpbmNlIGl0J3Mgbm90IGEgbWFuaXB1bGF0aW9uLgogICAgICAgICAgICAgICAgJycgPT4gYXJyYXkoCiAgICAgICAgICAgICAgICAgICAgLy8gQXV0b21hdGljYWxseSByb3RhdGUgaW1hZ2VzIGJhc2VkIG9uIEVYSUYgbWV0YSBkYXRhOgogICAgICAgICAgICAgICAgICAgICdhdXRvX29yaWVudCcgPT4gdHJ1ZQogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgIC8vIFlvdSBjYW4gYWRkIGFycmF5cyB0byBnZW5lcmF0ZSBkaWZmZXJlbnQgdmVyc2lvbnMuCiAgICAgICAgICAgICAgICAvLyBUaGUgbmFtZSBvZiB0aGUga2V5IGlzIHRoZSBuYW1lIG9mIHRoZSB2ZXJzaW9uIChleGFtcGxlOiAnbWVkaXVtJykuIAogICAgICAgICAgICAgICAgLy8gdGhlIGFycmF5IGNvbnRhaW5zIHRoZSBvcHRpb25zIHRvIGFwcGx5LgogICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICdtZWRpdW0nID0+IGFycmF5KAogICAgICAgICAgICAgICAgICAgICdtYXhfd2lkdGgnID0+IDgwMCwKICAgICAgICAgICAgICAgICAgICAnbWF4X2hlaWdodCcgPT4gNjAwCiAgICAgICAgICAgICAgICApLAoJCSAgICAgICAgKi8KICAgICAgICAgICAgICAgIC8vJ3RodW1ibmFpbCcgPT4gYXJyYXkoCiAgICAgICAgICAgICAgICAgICAgLy8gVW5jb21tZW50IHRoZSBmb2xsb3dpbmcgdG8gdXNlIGEgZGVmaW5lZCBkaXJlY3RvcnkgZm9yIHRoZSB0aHVtYm5haWxzCiAgICAgICAgICAgICAgICAgICAgLy8gaW5zdGVhZCBvZiBhIHN1YmRpcmVjdG9yeSBiYXNlZCBvbiB0aGUgdmVyc2lvbiBpZGVudGlmaWVyLgogICAgICAgICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoaXMgZGlyZWN0b3J5IGRvZXNuJ3QgYWxsb3cgZXhlY3V0aW9uIG9mIGZpbGVzIGlmIHlvdQogICAgICAgICAgICAgICAgICAgIC8vIGRvbid0IHBvc2UgYW55IHJlc3RyaWN0aW9ucyBvbiB0aGUgdHlwZSBvZiB1cGxvYWRlZCBmaWxlcywgZS5nLiBieQogICAgICAgICAgICAgICAgICAgIC8vIGNvcHlpbmcgdGhlIC5odGFjY2VzcyBmaWxlIGZyb20gdGhlIGZpbGVzIGRpcmVjdG9yeSBmb3IgQXBhY2hlOgogICAgICAgICAgICAgICAgICAgIC8vJ3VwbG9hZF9kaXInID0+IGRpcm5hbWUoJHRoaXMtPmdldF9zZXJ2ZXJfdmFyKCdTQ1JJUFRfRklMRU5BTUUnKSkuJy90aHVtYi8nLAogICAgICAgICAgICAgICAgICAgIC8vJ3VwbG9hZF91cmwnID0+ICR0aGlzLT5nZXRfZnVsbF91cmwoKS4nL3RodW1iLycsCiAgICAgICAgICAgICAgICAgICAgLy8gVW5jb21tZW50IHRoZSBmb2xsb3dpbmcgdG8gZm9yY2UgdGhlIG1heAogICAgICAgICAgICAgICAgICAgIC8vIGRpbWVuc2lvbnMgYW5kIGUuZy4gY3JlYXRlIHNxdWFyZSB0aHVtYm5haWxzOgogICAgICAgICAgICAgICAgICAgIC8vICdhdXRvX29yaWVudCcgPT4gdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAvLyAnY3JvcCcgPT4gdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAvLyAnanBlZ19xdWFsaXR5JyA9PiA3MCwKICAgICAgICAgICAgICAgICAgICAvLyAnbm9fY2FjaGUnID0+IHRydWUsICh0aGVyZSdzIGEgY2FjaGluZyBvcHRpb24sIGJ1dCB0aGlzIHJlbWVtYmVycyB0aHVtYm5haWwgc2l6ZXMgZnJvbSBhIHByZXZpb3VzIGFjdGlvbiEpCiAgICAgICAgICAgICAgICAgICAgLy8gJ3N0cmlwJyA9PiB0cnVlLCAodGhpcyBzdHJpcHMgRVhJRiB0YWdzLCBzdWNoIGFzIGdlb2xvY2F0aW9uKQogICAgICAgICAgICAgICAgICAgIC8vICdtYXhfd2lkdGgnID0+IDgwLCAvLyBlaXRoZXIgc3BlY2lmeSB3aWR0aCwgb3Igc2V0IHRvIDAuIFRoZW4gd2lkdGggaXMgYXV0b21hdGljYWxseSBhZGp1c3RlZCAtIGtlZXBpbmcgYXNwZWN0IHJhdGlvIHRvIGEgc3BlY2lmaWVkIG1heF9oZWlnaHQuCiAgICAgICAgICAgICAgICAgICAgLy8gJ21heF9oZWlnaHQnID0+IDgwIC8vIGVpdGhlciBzcGVjaWZ5IGhlaWdodCwgb3Igc2V0IHRvIDAuIFRoZW4gaGVpZ2h0IGlzIGF1dG9tYXRpY2FsbHkgYWRqdXN0ZWQgLSBrZWVwaW5nIGFzcGVjdCByYXRpbyB0byBhIHNwZWNpZmllZCBtYXhfd2lkdGguCiAgICAgICAgICAgICAgICAvLyApCiAgICAgICAgICAgICksCiAgICAgICAgICAgICdwcmludF9yZXNwb25zZScgPT4gdHJ1ZQogICAgICAgICk7CiAgICAgICAgaWYgKCRvcHRpb25zKSB7CiAgICAgICAgICAgICR0aGlzLT5vcHRpb25zID0gJG9wdGlvbnMgKyAkdGhpcy0+b3B0aW9uczsKICAgICAgICB9CiAgICAgICAgaWYgKCRlcnJvcl9tZXNzYWdlcykgewogICAgICAgICAgICAkdGhpcy0+ZXJyb3JfbWVzc2FnZXMgPSAkZXJyb3JfbWVzc2FnZXMgKyAkdGhpcy0+ZXJyb3JfbWVzc2FnZXM7CiAgICAgICAgfQogICAgICAgIGlmICgkaW5pdGlhbGl6ZSkgewogICAgICAgICAgICAkdGhpcy0+aW5pdGlhbGl6ZSgpOwogICAgICAgIH0KICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gaW5pdGlhbGl6ZSgpIHsKICAgICAgICBzd2l0Y2ggKCR0aGlzLT5nZXRfc2VydmVyX3ZhcignUkVRVUVTVF9NRVRIT0QnKSkgewogICAgICAgICAgICBjYXNlICdPUFRJT05TJzoKICAgICAgICAgICAgY2FzZSAnSEVBRCc6CiAgICAgICAgICAgICAgICAkdGhpcy0+aGVhZCgpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ0dFVCc6CiAgICAgICAgICAgICAgICAkdGhpcy0+Z2V0KCR0aGlzLT5vcHRpb25zWydwcmludF9yZXNwb25zZSddKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdQQVRDSCc6CiAgICAgICAgICAgIGNhc2UgJ1BVVCc6CiAgICAgICAgICAgIGNhc2UgJ1BPU1QnOgogICAgICAgICAgICAgICAgJHRoaXMtPnBvc3QoJHRoaXMtPm9wdGlvbnNbJ3ByaW50X3Jlc3BvbnNlJ10pOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ0RFTEVURSc6CiAgICAgICAgICAgICAgICAkdGhpcy0+ZGVsZXRlKCR0aGlzLT5vcHRpb25zWydwcmludF9yZXNwb25zZSddKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgJHRoaXMtPmhlYWRlcignSFRUUC8xLjEgNDA1IE1ldGhvZCBOb3QgQWxsb3dlZCcpOwogICAgICAgIH0KICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0X2Z1bGxfdXJsKCkgewogICAgICAgICRodHRwcyA9ICFlbXB0eSgkX1NFUlZFUlsnSFRUUFMnXSkgJiYgc3RyY2FzZWNtcCgkX1NFUlZFUlsnSFRUUFMnXSwgJ29uJykgPT09IDAgfHwKICAgICAgICAgICAgIWVtcHR5KCRfU0VSVkVSWydIVFRQX1hfRk9SV0FSREVEX1BST1RPJ10pICYmCiAgICAgICAgICAgICAgICBzdHJjYXNlY21wKCRfU0VSVkVSWydIVFRQX1hfRk9SV0FSREVEX1BST1RPJ10sICdodHRwcycpID09PSAwOwogICAgICAgIHJldHVybgogICAgICAgICAgICAoJGh0dHBzID8gJ2h0dHBzOi8vJyA6ICdodHRwOi8vJykuCiAgICAgICAgICAgICghZW1wdHkoJF9TRVJWRVJbJ1JFTU9URV9VU0VSJ10pID8gJF9TRVJWRVJbJ1JFTU9URV9VU0VSJ10uJ0AnIDogJycpLgogICAgICAgICAgICAoaXNzZXQoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSA/ICRfU0VSVkVSWydIVFRQX0hPU1QnXSA6ICgkX1NFUlZFUlsnU0VSVkVSX05BTUUnXS4KICAgICAgICAgICAgKCRodHRwcyAmJiAkX1NFUlZFUlsnU0VSVkVSX1BPUlQnXSA9PT0gNDQzIHx8CiAgICAgICAgICAgICRfU0VSVkVSWydTRVJWRVJfUE9SVCddID09PSA4MCA/ICcnIDogJzonLiRfU0VSVkVSWydTRVJWRVJfUE9SVCddKSkpLgogICAgICAgICAgICBzdWJzdHIoJF9TRVJWRVJbJ1NDUklQVF9OQU1FJ10sMCwgc3RycnBvcygkX1NFUlZFUlsnU0NSSVBUX05BTUUnXSwgJy8nKSk7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldF91c2VyX2lkKCkgewogICAgICAgIEBzZXNzaW9uX3N0YXJ0KCk7CiAgICAgICAgcmV0dXJuIHNlc3Npb25faWQoKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0X3VzZXJfcGF0aCgpIHsKICAgICAgICBpZiAoJHRoaXMtPm9wdGlvbnNbJ3VzZXJfZGlycyddKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+Z2V0X3VzZXJfaWQoKS4nLyc7CiAgICAgICAgfQogICAgICAgIHJldHVybiAnJzsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0X3VwbG9hZF9wYXRoKCRmaWxlX25hbWUgPSBudWxsLCAkdmVyc2lvbiA9IG51bGwpIHsKICAgICAgICAkZmlsZV9uYW1lID0gJGZpbGVfbmFtZSA/ICRmaWxlX25hbWUgOiAnJzsKICAgICAgICBpZiAoZW1wdHkoJHZlcnNpb24pKSB7CiAgICAgICAgICAgICR2ZXJzaW9uX3BhdGggPSAnJzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdmVyc2lvbl9kaXIgPSBAJHRoaXMtPm9wdGlvbnNbJ2ltYWdlX3ZlcnNpb25zJ11bJHZlcnNpb25dWyd1cGxvYWRfZGlyJ107CiAgICAgICAgICAgIGlmICgkdmVyc2lvbl9kaXIpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkdmVyc2lvbl9kaXIuJHRoaXMtPmdldF91c2VyX3BhdGgoKS4kZmlsZV9uYW1lOwogICAgICAgICAgICB9CiAgICAgICAgICAgICR2ZXJzaW9uX3BhdGggPSAkdmVyc2lvbi4nLyc7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkdGhpcy0+b3B0aW9uc1sndXBsb2FkX2RpciddLiR0aGlzLT5nZXRfdXNlcl9wYXRoKCkKICAgICAgICAgICAgLiR2ZXJzaW9uX3BhdGguJGZpbGVfbmFtZTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0X3F1ZXJ5X3NlcGFyYXRvcigkdXJsKSB7CiAgICAgICAgcmV0dXJuIHN0cnBvcygkdXJsLCAnPycpID09PSBmYWxzZSA/ICc/JyA6ICcmJzsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0X2Rvd25sb2FkX3VybCgkZmlsZV9uYW1lLCAkdmVyc2lvbiA9IG51bGwsICRkaXJlY3QgPSBmYWxzZSkgewogICAgICAgIGlmICghJGRpcmVjdCAmJiAkdGhpcy0+b3B0aW9uc1snZG93bmxvYWRfdmlhX3BocCddKSB7CiAgICAgICAgICAgICR1cmwgPSAkdGhpcy0+b3B0aW9uc1snc2NyaXB0X3VybCddCiAgICAgICAgICAgICAgICAuJHRoaXMtPmdldF9xdWVyeV9zZXBhcmF0b3IoJHRoaXMtPm9wdGlvbnNbJ3NjcmlwdF91cmwnXSkKICAgICAgICAgICAgICAgIC4kdGhpcy0+Z2V0X3Npbmd1bGFyX3BhcmFtX25hbWUoKQogICAgICAgICAgICAgICAgLic9Jy5yYXd1cmxlbmNvZGUoJGZpbGVfbmFtZSk7CiAgICAgICAgICAgIGlmICgkdmVyc2lvbikgewogICAgICAgICAgICAgICAgJHVybCAuPSAnJnZlcnNpb249Jy5yYXd1cmxlbmNvZGUoJHZlcnNpb24pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAkdXJsLicmZG93bmxvYWQ9MSc7CiAgICAgICAgfQogICAgICAgIGlmIChlbXB0eSgkdmVyc2lvbikpIHsKICAgICAgICAgICAgJHZlcnNpb25fcGF0aCA9ICcnOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR2ZXJzaW9uX3VybCA9IEAkdGhpcy0+b3B0aW9uc1snaW1hZ2VfdmVyc2lvbnMnXVskdmVyc2lvbl1bJ3VwbG9hZF91cmwnXTsKICAgICAgICAgICAgaWYgKCR2ZXJzaW9uX3VybCkgewogICAgICAgICAgICAgICAgcmV0dXJuICR2ZXJzaW9uX3VybC4kdGhpcy0+Z2V0X3VzZXJfcGF0aCgpLnJhd3VybGVuY29kZSgkZmlsZV9uYW1lKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkdmVyc2lvbl9wYXRoID0gcmF3dXJsZW5jb2RlKCR2ZXJzaW9uKS4nLyc7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkdGhpcy0+b3B0aW9uc1sndXBsb2FkX3VybCddLiR0aGlzLT5nZXRfdXNlcl9wYXRoKCkKICAgICAgICAgICAgLiR2ZXJzaW9uX3BhdGgucmF3dXJsZW5jb2RlKCRmaWxlX25hbWUpOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBzZXRfYWRkaXRpb25hbF9maWxlX3Byb3BlcnRpZXMoJGZpbGUpIHsKICAgICAgICAkZmlsZS0+ZGVsZXRlVXJsID0gJHRoaXMtPm9wdGlvbnNbJ3NjcmlwdF91cmwnXQogICAgICAgICAgICAuJHRoaXMtPmdldF9xdWVyeV9zZXBhcmF0b3IoJHRoaXMtPm9wdGlvbnNbJ3NjcmlwdF91cmwnXSkKICAgICAgICAgICAgLiR0aGlzLT5nZXRfc2luZ3VsYXJfcGFyYW1fbmFtZSgpCiAgICAgICAgICAgIC4nPScucmF3dXJsZW5jb2RlKCRmaWxlLT5uYW1lKTsKICAgICAgICAkZmlsZS0+ZGVsZXRlVHlwZSA9ICR0aGlzLT5vcHRpb25zWydkZWxldGVfdHlwZSddOwogICAgICAgIGlmICgkZmlsZS0+ZGVsZXRlVHlwZSAhPT0gJ0RFTEVURScpIHsKICAgICAgICAgICAgJGZpbGUtPmRlbGV0ZVVybCAuPSAnJl9tZXRob2Q9REVMRVRFJzsKICAgICAgICB9CiAgICAgICAgaWYgKCR0aGlzLT5vcHRpb25zWydhY2Nlc3NfY29udHJvbF9hbGxvd19jcmVkZW50aWFscyddKSB7CiAgICAgICAgICAgICRmaWxlLT5kZWxldGVXaXRoQ3JlZGVudGlhbHMgPSB0cnVlOwogICAgICAgIH0KICAgIH0KCiAgICAvLyBGaXggZm9yIG92ZXJmbG93aW5nIHNpZ25lZCAzMiBiaXQgaW50ZWdlcnMsCiAgICAvLyB3b3JrcyBmb3Igc2l6ZXMgdXAgdG8gMl4zMi0xIGJ5dGVzICg0IEdpQiAtIDEpOgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGZpeF9pbnRlZ2VyX292ZXJmbG93KCRzaXplKSB7CiAgICAgICAgaWYgKCRzaXplIDwgMCkgewogICAgICAgICAgICAkc2l6ZSArPSAyLjAgKiAoUEhQX0lOVF9NQVggKyAxKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRzaXplOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRfZmlsZV9zaXplKCRmaWxlX3BhdGgsICRjbGVhcl9zdGF0X2NhY2hlID0gZmFsc2UpIHsKICAgICAgICBpZiAoJGNsZWFyX3N0YXRfY2FjaGUpIHsKICAgICAgICAgICAgaWYgKHZlcnNpb25fY29tcGFyZShQSFBfVkVSU0lPTiwgJzUuMy4wJykgPj0gMCkgewogICAgICAgICAgICAgICAgY2xlYXJzdGF0Y2FjaGUodHJ1ZSwgJGZpbGVfcGF0aCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBjbGVhcnN0YXRjYWNoZSgpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAkdGhpcy0+Zml4X2ludGVnZXJfb3ZlcmZsb3coZmlsZXNpemUoJGZpbGVfcGF0aCkpOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBpc192YWxpZF9maWxlX29iamVjdCgkZmlsZV9uYW1lKSB7CiAgICAgICAgJGZpbGVfcGF0aCA9ICR0aGlzLT5nZXRfdXBsb2FkX3BhdGgoJGZpbGVfbmFtZSk7CiAgICAgICAgaWYgKGlzX2ZpbGUoJGZpbGVfcGF0aCkgJiYgJGZpbGVfbmFtZVswXSAhPT0gJy4nKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldF9maWxlX29iamVjdCgkZmlsZV9uYW1lKSB7CiAgICAgICAgaWYgKCR0aGlzLT5pc192YWxpZF9maWxlX29iamVjdCgkZmlsZV9uYW1lKSkgewogICAgICAgICAgICAkZmlsZSA9IG5ldyBcc3RkQ2xhc3MoKTsKICAgICAgICAgICAgJGZpbGUtPm5hbWUgPSAkZmlsZV9uYW1lOwogICAgICAgICAgICAkZmlsZS0+c2l6ZSA9ICR0aGlzLT5nZXRfZmlsZV9zaXplKAogICAgICAgICAgICAgICAgJHRoaXMtPmdldF91cGxvYWRfcGF0aCgkZmlsZV9uYW1lKQogICAgICAgICAgICApOwogICAgICAgICAgICAkZmlsZS0+dXJsID0gJHRoaXMtPmdldF9kb3dubG9hZF91cmwoJGZpbGUtPm5hbWUpOwogICAgICAgICAgICBmb3JlYWNoICgkdGhpcy0+b3B0aW9uc1snaW1hZ2VfdmVyc2lvbnMnXSBhcyAkdmVyc2lvbiA9PiAkb3B0aW9ucykgewogICAgICAgICAgICAgICAgaWYgKCFlbXB0eSgkdmVyc2lvbikpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoaXNfZmlsZSgkdGhpcy0+Z2V0X3VwbG9hZF9wYXRoKCRmaWxlX25hbWUsICR2ZXJzaW9uKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGZpbGUtPnskdmVyc2lvbi4nVXJsJ30gPSAkdGhpcy0+Z2V0X2Rvd25sb2FkX3VybCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmaWxlLT5uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHZlcnNpb24KICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHRoaXMtPnNldF9hZGRpdGlvbmFsX2ZpbGVfcHJvcGVydGllcygkZmlsZSk7CiAgICAgICAgICAgIHJldHVybiAkZmlsZTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldF9maWxlX29iamVjdHMoJGl0ZXJhdGlvbl9tZXRob2QgPSAnZ2V0X2ZpbGVfb2JqZWN0JykgewogICAgICAgICR1cGxvYWRfZGlyID0gJHRoaXMtPmdldF91cGxvYWRfcGF0aCgpOwogICAgICAgIGlmICghaXNfZGlyKCR1cGxvYWRfZGlyKSkgewogICAgICAgICAgICByZXR1cm4gYXJyYXkoKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGFycmF5X3ZhbHVlcyhhcnJheV9maWx0ZXIoYXJyYXlfbWFwKAogICAgICAgICAgICBhcnJheSgkdGhpcywgJGl0ZXJhdGlvbl9tZXRob2QpLAogICAgICAgICAgICBzY2FuZGlyKCR1cGxvYWRfZGlyKQogICAgICAgICkpKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY291bnRfZmlsZV9vYmplY3RzKCkgewogICAgICAgIHJldHVybiBjb3VudCgkdGhpcy0+Z2V0X2ZpbGVfb2JqZWN0cygnaXNfdmFsaWRfZmlsZV9vYmplY3QnKSk7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldF9lcnJvcl9tZXNzYWdlKCRlcnJvcikgewogICAgICAgIHJldHVybiBpc3NldCgkdGhpcy0+ZXJyb3JfbWVzc2FnZXNbJGVycm9yXSkgPwogICAgICAgICAgICAkdGhpcy0+ZXJyb3JfbWVzc2FnZXNbJGVycm9yXSA6ICRlcnJvcjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2NvbmZpZ19ieXRlcygkdmFsKSB7CiAgICAgICAgJHZhbCA9IHRyaW0oJHZhbCk7CiAgICAgICAgJGxhc3QgPSBzdHJ0b2xvd2VyKCR2YWxbc3RybGVuKCR2YWwpLTFdKTsKICAgICAgICAkdmFsID0gKGludCkkdmFsOwogICAgICAgIHN3aXRjaCAoJGxhc3QpIHsKICAgICAgICAgICAgY2FzZSAnZyc6CiAgICAgICAgICAgICAgICAkdmFsICo9IDEwMjQ7CiAgICAgICAgICAgIGNhc2UgJ20nOgogICAgICAgICAgICAgICAgJHZhbCAqPSAxMDI0OwogICAgICAgICAgICBjYXNlICdrJzoKICAgICAgICAgICAgICAgICR2YWwgKj0gMTAyNDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICR0aGlzLT5maXhfaW50ZWdlcl9vdmVyZmxvdygkdmFsKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gdmFsaWRhdGUoJHVwbG9hZGVkX2ZpbGUsICRmaWxlLCAkZXJyb3IsICRpbmRleCkgewogICAgICAgIGlmICgkZXJyb3IpIHsKICAgICAgICAgICAgJGZpbGUtPmVycm9yID0gJHRoaXMtPmdldF9lcnJvcl9tZXNzYWdlKCRlcnJvcik7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgJGNvbnRlbnRfbGVuZ3RoID0gJHRoaXMtPmZpeF9pbnRlZ2VyX292ZXJmbG93KAogICAgICAgICAgICAoaW50KSR0aGlzLT5nZXRfc2VydmVyX3ZhcignQ09OVEVOVF9MRU5HVEgnKQogICAgICAgICk7CiAgICAgICAgJHBvc3RfbWF4X3NpemUgPSAkdGhpcy0+Z2V0X2NvbmZpZ19ieXRlcyhpbmlfZ2V0KCdwb3N0X21heF9zaXplJykpOwogICAgICAgIGlmICgkcG9zdF9tYXhfc2l6ZSAmJiAoJGNvbnRlbnRfbGVuZ3RoID4gJHBvc3RfbWF4X3NpemUpKSB7CiAgICAgICAgICAgICRmaWxlLT5lcnJvciA9ICR0aGlzLT5nZXRfZXJyb3JfbWVzc2FnZSgncG9zdF9tYXhfc2l6ZScpOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIGlmICghcHJlZ19tYXRjaCgkdGhpcy0+b3B0aW9uc1snYWNjZXB0X2ZpbGVfdHlwZXMnXSwgJGZpbGUtPm5hbWUpKSB7CiAgICAgICAgICAgICRmaWxlLT5lcnJvciA9ICR0aGlzLT5nZXRfZXJyb3JfbWVzc2FnZSgnYWNjZXB0X2ZpbGVfdHlwZXMnKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICBpZiAoJHVwbG9hZGVkX2ZpbGUgJiYgaXNfdXBsb2FkZWRfZmlsZSgkdXBsb2FkZWRfZmlsZSkpIHsKICAgICAgICAgICAgJGZpbGVfc2l6ZSA9ICR0aGlzLT5nZXRfZmlsZV9zaXplKCR1cGxvYWRlZF9maWxlKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkZmlsZV9zaXplID0gJGNvbnRlbnRfbGVuZ3RoOwogICAgICAgIH0KICAgICAgICBpZiAoJHRoaXMtPm9wdGlvbnNbJ21heF9maWxlX3NpemUnXSAmJiAoCiAgICAgICAgICAgICAgICAkZmlsZV9zaXplID4gJHRoaXMtPm9wdGlvbnNbJ21heF9maWxlX3NpemUnXSB8fAogICAgICAgICAgICAgICAgJGZpbGUtPnNpemUgPiAkdGhpcy0+b3B0aW9uc1snbWF4X2ZpbGVfc2l6ZSddKQogICAgICAgICAgICApIHsKICAgICAgICAgICAgJGZpbGUtPmVycm9yID0gJHRoaXMtPmdldF9lcnJvcl9tZXNzYWdlKCdtYXhfZmlsZV9zaXplJyk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgaWYgKCR0aGlzLT5vcHRpb25zWydtaW5fZmlsZV9zaXplJ10gJiYKICAgICAgICAgICAgJGZpbGVfc2l6ZSA8ICR0aGlzLT5vcHRpb25zWydtaW5fZmlsZV9zaXplJ10pIHsKICAgICAgICAgICAgJGZpbGUtPmVycm9yID0gJHRoaXMtPmdldF9lcnJvcl9tZXNzYWdlKCdtaW5fZmlsZV9zaXplJyk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgaWYgKGlzX2ludCgkdGhpcy0+b3B0aW9uc1snbWF4X251bWJlcl9vZl9maWxlcyddKSAmJgogICAgICAgICAgICAgICAgKCR0aGlzLT5jb3VudF9maWxlX29iamVjdHMoKSA+PSAkdGhpcy0+b3B0aW9uc1snbWF4X251bWJlcl9vZl9maWxlcyddKSAmJgogICAgICAgICAgICAgICAgLy8gSWdub3JlIGFkZGl0aW9uYWwgY2h1bmtzIG9mIGV4aXN0aW5nIGZpbGVzOgogICAgICAgICAgICAgICAgIWlzX2ZpbGUoJHRoaXMtPmdldF91cGxvYWRfcGF0aCgkZmlsZS0+bmFtZSkpKSB7CiAgICAgICAgICAgICRmaWxlLT5lcnJvciA9ICR0aGlzLT5nZXRfZXJyb3JfbWVzc2FnZSgnbWF4X251bWJlcl9vZl9maWxlcycpOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgICRtYXhfd2lkdGggPSBAJHRoaXMtPm9wdGlvbnNbJ21heF93aWR0aCddOwogICAgICAgICRtYXhfaGVpZ2h0ID0gQCR0aGlzLT5vcHRpb25zWydtYXhfaGVpZ2h0J107CiAgICAgICAgJG1pbl93aWR0aCA9IEAkdGhpcy0+b3B0aW9uc1snbWluX3dpZHRoJ107CiAgICAgICAgJG1pbl9oZWlnaHQgPSBAJHRoaXMtPm9wdGlvbnNbJ21pbl9oZWlnaHQnXTsKICAgICAgICBpZiAoKCRtYXhfd2lkdGggfHwgJG1heF9oZWlnaHQgfHwgJG1pbl93aWR0aCB8fCAkbWluX2hlaWdodCkKICAgICAgICAgICAgJiYgJHRoaXMtPmlzX3ZhbGlkX2ltYWdlX2ZpbGUoJHVwbG9hZGVkX2ZpbGUpKSB7CiAgICAgICAgICAgIGxpc3QoJGltZ193aWR0aCwgJGltZ19oZWlnaHQpID0gJHRoaXMtPmdldF9pbWFnZV9zaXplKCR1cGxvYWRlZF9maWxlKTsKICAgICAgICAgICAgLy8gSWYgd2UgYXJlIGF1dG8gcm90YXRpbmcgdGhlIGltYWdlIGJ5IGRlZmF1bHQsIGRvIHRoZSBjaGVja3Mgb24KICAgICAgICAgICAgLy8gdGhlIGNvcnJlY3Qgb3JpZW50YXRpb24KICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgQCR0aGlzLT5vcHRpb25zWydpbWFnZV92ZXJzaW9ucyddWycnXVsnYXV0b19vcmllbnQnXSAmJgogICAgICAgICAgICAgICAgZnVuY3Rpb25fZXhpc3RzKCdleGlmX3JlYWRfZGF0YScpICYmCiAgICAgICAgICAgICAgICAoJGV4aWYgPSBAZXhpZl9yZWFkX2RhdGEoJHVwbG9hZGVkX2ZpbGUpKSAmJgogICAgICAgICAgICAgICAgKCgoaW50KSBAJGV4aWZbJ09yaWVudGF0aW9uJ10pID49IDUpCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgJHRtcCA9ICRpbWdfd2lkdGg7CiAgICAgICAgICAgICAgICAkaW1nX3dpZHRoID0gJGltZ19oZWlnaHQ7CiAgICAgICAgICAgICAgICAkaW1nX2hlaWdodCA9ICR0bXA7CiAgICAgICAgICAgICAgICB1bnNldCgkdG1wKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoIWVtcHR5KCRpbWdfd2lkdGgpKSB7CiAgICAgICAgICAgIGlmICgkbWF4X3dpZHRoICYmICRpbWdfd2lkdGggPiAkbWF4X3dpZHRoKSB7CiAgICAgICAgICAgICAgICAkZmlsZS0+ZXJyb3IgPSAkdGhpcy0+Z2V0X2Vycm9yX21lc3NhZ2UoJ21heF93aWR0aCcpOwogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgkbWF4X2hlaWdodCAmJiAkaW1nX2hlaWdodCA+ICRtYXhfaGVpZ2h0KSB7CiAgICAgICAgICAgICAgICAkZmlsZS0+ZXJyb3IgPSAkdGhpcy0+Z2V0X2Vycm9yX21lc3NhZ2UoJ21heF9oZWlnaHQnKTsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoJG1pbl93aWR0aCAmJiAkaW1nX3dpZHRoIDwgJG1pbl93aWR0aCkgewogICAgICAgICAgICAgICAgJGZpbGUtPmVycm9yID0gJHRoaXMtPmdldF9lcnJvcl9tZXNzYWdlKCdtaW5fd2lkdGgnKTsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoJG1pbl9oZWlnaHQgJiYgJGltZ19oZWlnaHQgPCAkbWluX2hlaWdodCkgewogICAgICAgICAgICAgICAgJGZpbGUtPmVycm9yID0gJHRoaXMtPmdldF9lcnJvcl9tZXNzYWdlKCdtaW5faGVpZ2h0Jyk7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHVwY291bnRfbmFtZV9jYWxsYmFjaygkbWF0Y2hlcykgewogICAgICAgICRpbmRleCA9IGlzc2V0KCRtYXRjaGVzWzFdKSA/ICgoaW50KSRtYXRjaGVzWzFdKSArIDEgOiAxOwogICAgICAgICRleHQgPSBpc3NldCgkbWF0Y2hlc1syXSkgPyAkbWF0Y2hlc1syXSA6ICcnOwogICAgICAgIHJldHVybiAnICgnLiRpbmRleC4nKScuJGV4dDsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gdXBjb3VudF9uYW1lKCRuYW1lKSB7CiAgICAgICAgcmV0dXJuIHByZWdfcmVwbGFjZV9jYWxsYmFjaygKICAgICAgICAgICAgJy8oPzooPzogXCgoW1xkXSspXCkpPyhcLlteLl0rKSk/JC8nLAogICAgICAgICAgICBhcnJheSgkdGhpcywgJ3VwY291bnRfbmFtZV9jYWxsYmFjaycpLAogICAgICAgICAgICAkbmFtZSwKICAgICAgICAgICAgMQogICAgICAgICk7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldF91bmlxdWVfZmlsZW5hbWUoJGZpbGVfcGF0aCwgJG5hbWUsICRzaXplLCAkdHlwZSwgJGVycm9yLAogICAgICAgICAgICAkaW5kZXgsICRjb250ZW50X3JhbmdlKSB7CiAgICAgICAgd2hpbGUoaXNfZGlyKCR0aGlzLT5nZXRfdXBsb2FkX3BhdGgoJG5hbWUpKSkgewogICAgICAgICAgICAkbmFtZSA9ICR0aGlzLT51cGNvdW50X25hbWUoJG5hbWUpOwogICAgICAgIH0KICAgICAgICAvLyBLZWVwIGFuIGV4aXN0aW5nIGZpbGVuYW1lIGlmIHRoaXMgaXMgcGFydCBvZiBhIGNodW5rZWQgdXBsb2FkOgogICAgICAgICR1cGxvYWRlZF9ieXRlcyA9ICR0aGlzLT5maXhfaW50ZWdlcl9vdmVyZmxvdygoaW50KSRjb250ZW50X3JhbmdlWzFdKTsKICAgICAgICB3aGlsZSAoaXNfZmlsZSgkdGhpcy0+Z2V0X3VwbG9hZF9wYXRoKCRuYW1lKSkpIHsKICAgICAgICAgICAgaWYgKCR1cGxvYWRlZF9ieXRlcyA9PT0gJHRoaXMtPmdldF9maWxlX3NpemUoCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmdldF91cGxvYWRfcGF0aCgkbmFtZSkpKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICAkbmFtZSA9ICR0aGlzLT51cGNvdW50X25hbWUoJG5hbWUpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJG5hbWU7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGZpeF9maWxlX2V4dGVuc2lvbigkZmlsZV9wYXRoLCAkbmFtZSwgJHNpemUsICR0eXBlLCAkZXJyb3IsCiAgICAgICAgICAgICRpbmRleCwgJGNvbnRlbnRfcmFuZ2UpIHsKICAgICAgICAvLyBBZGQgbWlzc2luZyBmaWxlIGV4dGVuc2lvbiBmb3Iga25vd24gaW1hZ2UgdHlwZXM6CiAgICAgICAgaWYgKHN0cnBvcygkbmFtZSwgJy4nKSA9PT0gZmFsc2UgJiYKICAgICAgICAgICAgICAgIHByZWdfbWF0Y2goJy9eaW1hZ2VcLyhnaWZ8anBlP2d8cG5nKS8nLCAkdHlwZSwgJG1hdGNoZXMpKSB7CiAgICAgICAgICAgICRuYW1lIC49ICcuJy4kbWF0Y2hlc1sxXTsKICAgICAgICB9CiAgICAgICAgaWYgKCR0aGlzLT5vcHRpb25zWydjb3JyZWN0X2ltYWdlX2V4dGVuc2lvbnMnXSkgewogICAgICAgICAgICBzd2l0Y2ggKCR0aGlzLT5pbWFnZXR5cGUoJGZpbGVfcGF0aCkpIHsKICAgICAgICAgICAgICAgIGNhc2Ugc2VsZjo6SU1BR0VUWVBFX0pQRUc6CiAgICAgICAgICAgICAgICAgICAgJGV4dGVuc2lvbnMgPSBhcnJheSgnanBnJywgJ2pwZWcnKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2Ugc2VsZjo6SU1BR0VUWVBFX1BORzoKICAgICAgICAgICAgICAgICAgICAkZXh0ZW5zaW9ucyA9IGFycmF5KCdwbmcnKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2Ugc2VsZjo6SU1BR0VUWVBFX0dJRjoKICAgICAgICAgICAgICAgICAgICAkZXh0ZW5zaW9ucyA9IGFycmF5KCdnaWYnKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBBZGp1c3QgaW5jb3JyZWN0IGltYWdlIGZpbGUgZXh0ZW5zaW9uczoKICAgICAgICAgICAgaWYgKCFlbXB0eSgkZXh0ZW5zaW9ucykpIHsKICAgICAgICAgICAgICAgICRwYXJ0cyA9IGV4cGxvZGUoJy4nLCAkbmFtZSk7CiAgICAgICAgICAgICAgICAkZXh0SW5kZXggPSBjb3VudCgkcGFydHMpIC0gMTsKICAgICAgICAgICAgICAgICRleHQgPSBzdHJ0b2xvd2VyKEAkcGFydHNbJGV4dEluZGV4XSk7CiAgICAgICAgICAgICAgICBpZiAoIWluX2FycmF5KCRleHQsICRleHRlbnNpb25zKSkgewogICAgICAgICAgICAgICAgICAgICRwYXJ0c1skZXh0SW5kZXhdID0gJGV4dGVuc2lvbnNbMF07CiAgICAgICAgICAgICAgICAgICAgJG5hbWUgPSBpbXBsb2RlKCcuJywgJHBhcnRzKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gJG5hbWU7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHRyaW1fZmlsZV9uYW1lKCRmaWxlX3BhdGgsICRuYW1lLCAkc2l6ZSwgJHR5cGUsICRlcnJvciwKICAgICAgICAgICAgJGluZGV4LCAkY29udGVudF9yYW5nZSkgewogICAgICAgIC8vIFJlbW92ZSBwYXRoIGluZm9ybWF0aW9uIGFuZCBkb3RzIGFyb3VuZCB0aGUgZmlsZW5hbWUsIHRvIHByZXZlbnQgdXBsb2FkaW5nCiAgICAgICAgLy8gaW50byBkaWZmZXJlbnQgZGlyZWN0b3JpZXMgb3IgcmVwbGFjaW5nIGhpZGRlbiBzeXN0ZW0gZmlsZXMuCiAgICAgICAgLy8gQWxzbyByZW1vdmUgY29udHJvbCBjaGFyYWN0ZXJzIGFuZCBzcGFjZXMgKFx4MDAuLlx4MjApIGFyb3VuZCB0aGUgZmlsZW5hbWU6CiAgICAgICAgJG5hbWUgPSB0cmltKCR0aGlzLT5iYXNlbmFtZShzdHJpcHNsYXNoZXMoJG5hbWUpKSwgIi5ceDAwLi5ceDIwIik7CiAgICAgICAgLy8gUmVwbGFjZSBkb3RzIGluIGZpbGVuYW1lcyB0byBhdm9pZCBzZWN1cml0eSBpc3N1ZXMgd2l0aCBzZXJ2ZXJzCiAgICAgICAgLy8gdGhhdCBpbnRlcnByZXQgbXVsdGlwbGUgZmlsZSBleHRlbnNpb25zLCBlLmcuICJleGFtcGxlLnBocC5wbmciOgogICAgICAgICRyZXBsYWNlbWVudCA9ICR0aGlzLT5vcHRpb25zWydyZXBsYWNlX2RvdHNfaW5fZmlsZW5hbWVzJ107CiAgICAgICAgaWYgKCFlbXB0eSgkcmVwbGFjZW1lbnQpKSB7CiAgICAgICAgICAgICRwYXJ0cyA9IGV4cGxvZGUoJy4nLCAkbmFtZSk7CiAgICAgICAgICAgIGlmIChjb3VudCgkcGFydHMpID4gMikgewogICAgICAgICAgICAgICAgJGV4dCA9IGFycmF5X3BvcCgkcGFydHMpOwogICAgICAgICAgICAgICAgJG5hbWUgPSBpbXBsb2RlKCRyZXBsYWNlbWVudCwgJHBhcnRzKS4nLicuJGV4dDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAvLyBVc2UgYSB0aW1lc3RhbXAgZm9yIGVtcHR5IGZpbGVuYW1lczoKICAgICAgICBpZiAoISRuYW1lKSB7CiAgICAgICAgICAgICRuYW1lID0gc3RyX3JlcGxhY2UoJy4nLCAnLScsIG1pY3JvdGltZSh0cnVlKSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkbmFtZTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0X2ZpbGVfbmFtZSgkZmlsZV9wYXRoLCAkbmFtZSwgJHNpemUsICR0eXBlLCAkZXJyb3IsCiAgICAgICAgICAgICRpbmRleCwgJGNvbnRlbnRfcmFuZ2UpIHsKICAgICAgICAkbmFtZSA9ICR0aGlzLT50cmltX2ZpbGVfbmFtZSgkZmlsZV9wYXRoLCAkbmFtZSwgJHNpemUsICR0eXBlLCAkZXJyb3IsCiAgICAgICAgICAgICRpbmRleCwgJGNvbnRlbnRfcmFuZ2UpOwogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0X3VuaXF1ZV9maWxlbmFtZSgKICAgICAgICAgICAgJGZpbGVfcGF0aCwKICAgICAgICAgICAgJHRoaXMtPmZpeF9maWxlX2V4dGVuc2lvbigkZmlsZV9wYXRoLCAkbmFtZSwgJHNpemUsICR0eXBlLCAkZXJyb3IsCiAgICAgICAgICAgICAgICAkaW5kZXgsICRjb250ZW50X3JhbmdlKSwKICAgICAgICAgICAgJHNpemUsCiAgICAgICAgICAgICR0eXBlLAogICAgICAgICAgICAkZXJyb3IsCiAgICAgICAgICAgICRpbmRleCwKICAgICAgICAgICAgJGNvbnRlbnRfcmFuZ2UKICAgICAgICApOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRfc2NhbGVkX2ltYWdlX2ZpbGVfcGF0aHMoJGZpbGVfbmFtZSwgJHZlcnNpb24pIHsKICAgICAgICAkZmlsZV9wYXRoID0gJHRoaXMtPmdldF91cGxvYWRfcGF0aCgkZmlsZV9uYW1lKTsKICAgICAgICBpZiAoIWVtcHR5KCR2ZXJzaW9uKSkgewogICAgICAgICAgICAkdmVyc2lvbl9kaXIgPSAkdGhpcy0+Z2V0X3VwbG9hZF9wYXRoKG51bGwsICR2ZXJzaW9uKTsKICAgICAgICAgICAgaWYgKCFpc19kaXIoJHZlcnNpb25fZGlyKSkgewogICAgICAgICAgICAgICAgbWtkaXIoJHZlcnNpb25fZGlyLCAkdGhpcy0+b3B0aW9uc1snbWtkaXJfbW9kZSddLCB0cnVlKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkbmV3X2ZpbGVfcGF0aCA9ICR2ZXJzaW9uX2Rpci4nLycuJGZpbGVfbmFtZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkbmV3X2ZpbGVfcGF0aCA9ICRmaWxlX3BhdGg7CiAgICAgICAgfQogICAgICAgIHJldHVybiBhcnJheSgkZmlsZV9wYXRoLCAkbmV3X2ZpbGVfcGF0aCk7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdkX2dldF9pbWFnZV9vYmplY3QoJGZpbGVfcGF0aCwgJGZ1bmMsICRub19jYWNoZSA9IGZhbHNlKSB7CiAgICAgICAgaWYgKGVtcHR5KCR0aGlzLT5pbWFnZV9vYmplY3RzWyRmaWxlX3BhdGhdKSB8fCAkbm9fY2FjaGUpIHsKICAgICAgICAgICAgJHRoaXMtPmdkX2Rlc3Ryb3lfaW1hZ2Vfb2JqZWN0KCRmaWxlX3BhdGgpOwogICAgICAgICAgICAkdGhpcy0+aW1hZ2Vfb2JqZWN0c1skZmlsZV9wYXRoXSA9ICRmdW5jKCRmaWxlX3BhdGgpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJHRoaXMtPmltYWdlX29iamVjdHNbJGZpbGVfcGF0aF07CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdkX3NldF9pbWFnZV9vYmplY3QoJGZpbGVfcGF0aCwgJGltYWdlKSB7CiAgICAgICAgJHRoaXMtPmdkX2Rlc3Ryb3lfaW1hZ2Vfb2JqZWN0KCRmaWxlX3BhdGgpOwogICAgICAgICR0aGlzLT5pbWFnZV9vYmplY3RzWyRmaWxlX3BhdGhdID0gJGltYWdlOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZF9kZXN0cm95X2ltYWdlX29iamVjdCgkZmlsZV9wYXRoKSB7CiAgICAgICAgJGltYWdlID0gKGlzc2V0KCR0aGlzLT5pbWFnZV9vYmplY3RzWyRmaWxlX3BhdGhdKSkgPyAkdGhpcy0+aW1hZ2Vfb2JqZWN0c1skZmlsZV9wYXRoXSA6IG51bGwgOwogICAgICAgIHJldHVybiAkaW1hZ2UgJiYgaW1hZ2VkZXN0cm95KCRpbWFnZSk7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdkX2ltYWdlZmxpcCgkaW1hZ2UsICRtb2RlKSB7CiAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnaW1hZ2VmbGlwJykpIHsKICAgICAgICAgICAgcmV0dXJuIGltYWdlZmxpcCgkaW1hZ2UsICRtb2RlKTsKICAgICAgICB9CiAgICAgICAgJG5ld193aWR0aCA9ICRzcmNfd2lkdGggPSBpbWFnZXN4KCRpbWFnZSk7CiAgICAgICAgJG5ld19oZWlnaHQgPSAkc3JjX2hlaWdodCA9IGltYWdlc3koJGltYWdlKTsKICAgICAgICAkbmV3X2ltZyA9IGltYWdlY3JlYXRldHJ1ZWNvbG9yKCRuZXdfd2lkdGgsICRuZXdfaGVpZ2h0KTsKICAgICAgICAkc3JjX3ggPSAwOwogICAgICAgICRzcmNfeSA9IDA7CiAgICAgICAgc3dpdGNoICgkbW9kZSkgewogICAgICAgICAgICBjYXNlICcxJzogLy8gZmxpcCBvbiB0aGUgaG9yaXpvbnRhbCBheGlzCiAgICAgICAgICAgICAgICAkc3JjX3kgPSAkbmV3X2hlaWdodCAtIDE7CiAgICAgICAgICAgICAgICAkc3JjX2hlaWdodCA9IC0kbmV3X2hlaWdodDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICcyJzogLy8gZmxpcCBvbiB0aGUgdmVydGljYWwgYXhpcwogICAgICAgICAgICAgICAgJHNyY194ICA9ICRuZXdfd2lkdGggLSAxOwogICAgICAgICAgICAgICAgJHNyY193aWR0aCA9IC0kbmV3X3dpZHRoOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJzMnOiAvLyBmbGlwIG9uIGJvdGggYXhlcwogICAgICAgICAgICAgICAgJHNyY195ID0gJG5ld19oZWlnaHQgLSAxOwogICAgICAgICAgICAgICAgJHNyY19oZWlnaHQgPSAtJG5ld19oZWlnaHQ7CiAgICAgICAgICAgICAgICAkc3JjX3ggID0gJG5ld193aWR0aCAtIDE7CiAgICAgICAgICAgICAgICAkc3JjX3dpZHRoID0gLSRuZXdfd2lkdGg7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHJldHVybiAkaW1hZ2U7CiAgICAgICAgfQogICAgICAgIGltYWdlY29weXJlc2FtcGxlZCgKICAgICAgICAgICAgJG5ld19pbWcsCiAgICAgICAgICAgICRpbWFnZSwKICAgICAgICAgICAgMCwKICAgICAgICAgICAgMCwKICAgICAgICAgICAgJHNyY194LAogICAgICAgICAgICAkc3JjX3ksCiAgICAgICAgICAgICRuZXdfd2lkdGgsCiAgICAgICAgICAgICRuZXdfaGVpZ2h0LAogICAgICAgICAgICAkc3JjX3dpZHRoLAogICAgICAgICAgICAkc3JjX2hlaWdodAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICRuZXdfaW1nOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZF9vcmllbnRfaW1hZ2UoJGZpbGVfcGF0aCwgJHNyY19pbWcpIHsKICAgICAgICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygnZXhpZl9yZWFkX2RhdGEnKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgICRleGlmID0gQGV4aWZfcmVhZF9kYXRhKCRmaWxlX3BhdGgpOwogICAgICAgIGlmICgkZXhpZiA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICAkb3JpZW50YXRpb24gPSAoaW50KUAkZXhpZlsnT3JpZW50YXRpb24nXTsKICAgICAgICBpZiAoJG9yaWVudGF0aW9uIDwgMiB8fCAkb3JpZW50YXRpb24gPiA4KSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgc3dpdGNoICgkb3JpZW50YXRpb24pIHsKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgJG5ld19pbWcgPSAkdGhpcy0+Z2RfaW1hZ2VmbGlwKAogICAgICAgICAgICAgICAgICAgICRzcmNfaW1nLAogICAgICAgICAgICAgICAgICAgIGRlZmluZWQoJ0lNR19GTElQX1ZFUlRJQ0FMJykgPyBJTUdfRkxJUF9WRVJUSUNBTCA6IDIKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgJG5ld19pbWcgPSBpbWFnZXJvdGF0ZSgkc3JjX2ltZywgMTgwLCAwKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgICAkbmV3X2ltZyA9ICR0aGlzLT5nZF9pbWFnZWZsaXAoCiAgICAgICAgICAgICAgICAgICAgJHNyY19pbWcsCiAgICAgICAgICAgICAgICAgICAgZGVmaW5lZCgnSU1HX0ZMSVBfSE9SSVpPTlRBTCcpID8gSU1HX0ZMSVBfSE9SSVpPTlRBTCA6IDEKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgICAgJHRtcF9pbWcgPSAkdGhpcy0+Z2RfaW1hZ2VmbGlwKAogICAgICAgICAgICAgICAgICAgICRzcmNfaW1nLAogICAgICAgICAgICAgICAgICAgIGRlZmluZWQoJ0lNR19GTElQX0hPUklaT05UQUwnKSA/IElNR19GTElQX0hPUklaT05UQUwgOiAxCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJG5ld19pbWcgPSBpbWFnZXJvdGF0ZSgkdG1wX2ltZywgMjcwLCAwKTsKICAgICAgICAgICAgICAgIGltYWdlZGVzdHJveSgkdG1wX2ltZyk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICAgICAgJG5ld19pbWcgPSBpbWFnZXJvdGF0ZSgkc3JjX2ltZywgMjcwLCAwKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDc6CiAgICAgICAgICAgICAgICAkdG1wX2ltZyA9ICR0aGlzLT5nZF9pbWFnZWZsaXAoCiAgICAgICAgICAgICAgICAgICAgJHNyY19pbWcsCiAgICAgICAgICAgICAgICAgICAgZGVmaW5lZCgnSU1HX0ZMSVBfVkVSVElDQUwnKSA/IElNR19GTElQX1ZFUlRJQ0FMIDogMgogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRuZXdfaW1nID0gaW1hZ2Vyb3RhdGUoJHRtcF9pbWcsIDI3MCwgMCk7CiAgICAgICAgICAgICAgICBpbWFnZWRlc3Ryb3koJHRtcF9pbWcpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgODoKICAgICAgICAgICAgICAgICRuZXdfaW1nID0gaW1hZ2Vyb3RhdGUoJHNyY19pbWcsIDkwLCAwKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICAkdGhpcy0+Z2Rfc2V0X2ltYWdlX29iamVjdCgkZmlsZV9wYXRoLCAkbmV3X2ltZyk7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdkX2NyZWF0ZV9zY2FsZWRfaW1hZ2UoJGZpbGVfbmFtZSwgJHZlcnNpb24sICRvcHRpb25zKSB7CiAgICAgICAgaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2ltYWdlY3JlYXRldHJ1ZWNvbG9yJykpIHsKICAgICAgICAgICAgZXJyb3JfbG9nKCdGdW5jdGlvbiBub3QgZm91bmQ6IGltYWdlY3JlYXRldHJ1ZWNvbG9yJyk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgbGlzdCgkZmlsZV9wYXRoLCAkbmV3X2ZpbGVfcGF0aCkgPQogICAgICAgICAgICAkdGhpcy0+Z2V0X3NjYWxlZF9pbWFnZV9maWxlX3BhdGhzKCRmaWxlX25hbWUsICR2ZXJzaW9uKTsKICAgICAgICAkdHlwZSA9IHN0cnRvbG93ZXIoc3Vic3RyKHN0cnJjaHIoJGZpbGVfbmFtZSwgJy4nKSwgMSkpOwogICAgICAgIHN3aXRjaCAoJHR5cGUpIHsKICAgICAgICAgICAgY2FzZSAnanBnJzoKICAgICAgICAgICAgY2FzZSAnanBlZyc6CiAgICAgICAgICAgICAgICAkc3JjX2Z1bmMgPSAnaW1hZ2VjcmVhdGVmcm9tanBlZyc7CiAgICAgICAgICAgICAgICAkd3JpdGVfZnVuYyA9ICdpbWFnZWpwZWcnOwogICAgICAgICAgICAgICAgJGltYWdlX3F1YWxpdHkgPSBpc3NldCgkb3B0aW9uc1snanBlZ19xdWFsaXR5J10pID8KICAgICAgICAgICAgICAgICAgICAkb3B0aW9uc1snanBlZ19xdWFsaXR5J10gOiA3NTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdnaWYnOgogICAgICAgICAgICAgICAgJHNyY19mdW5jID0gJ2ltYWdlY3JlYXRlZnJvbWdpZic7CiAgICAgICAgICAgICAgICAkd3JpdGVfZnVuYyA9ICdpbWFnZWdpZic7CiAgICAgICAgICAgICAgICAkaW1hZ2VfcXVhbGl0eSA9IG51bGw7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAncG5nJzoKICAgICAgICAgICAgICAgICRzcmNfZnVuYyA9ICdpbWFnZWNyZWF0ZWZyb21wbmcnOwogICAgICAgICAgICAgICAgJHdyaXRlX2Z1bmMgPSAnaW1hZ2VwbmcnOwogICAgICAgICAgICAgICAgJGltYWdlX3F1YWxpdHkgPSBpc3NldCgkb3B0aW9uc1sncG5nX3F1YWxpdHknXSkgPwogICAgICAgICAgICAgICAgICAgICRvcHRpb25zWydwbmdfcXVhbGl0eSddIDogOTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICAkc3JjX2ltZyA9ICR0aGlzLT5nZF9nZXRfaW1hZ2Vfb2JqZWN0KAogICAgICAgICAgICAkZmlsZV9wYXRoLAogICAgICAgICAgICAkc3JjX2Z1bmMsCiAgICAgICAgICAgICFlbXB0eSgkb3B0aW9uc1snbm9fY2FjaGUnXSkKICAgICAgICApOwogICAgICAgICRpbWFnZV9vcmllbnRlZCA9IGZhbHNlOwogICAgICAgIGlmICghZW1wdHkoJG9wdGlvbnNbJ2F1dG9fb3JpZW50J10pICYmICR0aGlzLT5nZF9vcmllbnRfaW1hZ2UoCiAgICAgICAgICAgICAgICAkZmlsZV9wYXRoLAogICAgICAgICAgICAgICAgJHNyY19pbWcKICAgICAgICAgICAgKSkgewogICAgICAgICAgICAkaW1hZ2Vfb3JpZW50ZWQgPSB0cnVlOwogICAgICAgICAgICAkc3JjX2ltZyA9ICR0aGlzLT5nZF9nZXRfaW1hZ2Vfb2JqZWN0KAogICAgICAgICAgICAgICAgJGZpbGVfcGF0aCwKICAgICAgICAgICAgICAgICRzcmNfZnVuYwogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICAkbWF4X3dpZHRoID0gJGltZ193aWR0aCA9IGltYWdlc3goJHNyY19pbWcpOwogICAgICAgICRtYXhfaGVpZ2h0ID0gJGltZ19oZWlnaHQgPSBpbWFnZXN5KCRzcmNfaW1nKTsKICAgICAgICBpZiAoIWVtcHR5KCRvcHRpb25zWydtYXhfd2lkdGgnXSkpIHsKICAgICAgICAgICAgJG1heF93aWR0aCA9ICRvcHRpb25zWydtYXhfd2lkdGgnXTsKICAgICAgICB9CiAgICAgICAgaWYgKCFlbXB0eSgkb3B0aW9uc1snbWF4X2hlaWdodCddKSkgewogICAgICAgICAgICAkbWF4X2hlaWdodCA9ICRvcHRpb25zWydtYXhfaGVpZ2h0J107CiAgICAgICAgfQogICAgICAgICRzY2FsZSA9IG1pbigKICAgICAgICAgICAgJG1heF93aWR0aCAvICRpbWdfd2lkdGgsCiAgICAgICAgICAgICRtYXhfaGVpZ2h0IC8gJGltZ19oZWlnaHQKICAgICAgICApOwogICAgICAgIGlmICgkc2NhbGUgPj0gMSkgewogICAgICAgICAgICBpZiAoJGltYWdlX29yaWVudGVkKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJHdyaXRlX2Z1bmMoJHNyY19pbWcsICRuZXdfZmlsZV9wYXRoLCAkaW1hZ2VfcXVhbGl0eSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCRmaWxlX3BhdGggIT09ICRuZXdfZmlsZV9wYXRoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gY29weSgkZmlsZV9wYXRoLCAkbmV3X2ZpbGVfcGF0aCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICAgIGlmIChlbXB0eSgkb3B0aW9uc1snY3JvcCddKSkgewogICAgICAgICAgICAkbmV3X3dpZHRoID0gJGltZ193aWR0aCAqICRzY2FsZTsKICAgICAgICAgICAgJG5ld19oZWlnaHQgPSAkaW1nX2hlaWdodCAqICRzY2FsZTsKICAgICAgICAgICAgJGRzdF94ID0gMDsKICAgICAgICAgICAgJGRzdF95ID0gMDsKICAgICAgICAgICAgJG5ld19pbWcgPSBpbWFnZWNyZWF0ZXRydWVjb2xvcigkbmV3X3dpZHRoLCAkbmV3X2hlaWdodCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKCgkaW1nX3dpZHRoIC8gJGltZ19oZWlnaHQpID49ICgkbWF4X3dpZHRoIC8gJG1heF9oZWlnaHQpKSB7CiAgICAgICAgICAgICAgICAkbmV3X3dpZHRoID0gJGltZ193aWR0aCAvICgkaW1nX2hlaWdodCAvICRtYXhfaGVpZ2h0KTsKICAgICAgICAgICAgICAgICRuZXdfaGVpZ2h0ID0gJG1heF9oZWlnaHQ7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkbmV3X3dpZHRoID0gJG1heF93aWR0aDsKICAgICAgICAgICAgICAgICRuZXdfaGVpZ2h0ID0gJGltZ19oZWlnaHQgLyAoJGltZ193aWR0aCAvICRtYXhfd2lkdGgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRkc3RfeCA9IDAgLSAoJG5ld193aWR0aCAtICRtYXhfd2lkdGgpIC8gMjsKICAgICAgICAgICAgJGRzdF95ID0gMCAtICgkbmV3X2hlaWdodCAtICRtYXhfaGVpZ2h0KSAvIDI7CiAgICAgICAgICAgICRuZXdfaW1nID0gaW1hZ2VjcmVhdGV0cnVlY29sb3IoJG1heF93aWR0aCwgJG1heF9oZWlnaHQpOwogICAgICAgIH0KICAgICAgICAvLyBIYW5kbGUgdHJhbnNwYXJlbmN5IGluIEdJRiBhbmQgUE5HIGltYWdlczoKICAgICAgICBzd2l0Y2ggKCR0eXBlKSB7CiAgICAgICAgICAgIGNhc2UgJ2dpZic6CiAgICAgICAgICAgIGNhc2UgJ3BuZyc6CiAgICAgICAgICAgICAgICBpbWFnZWNvbG9ydHJhbnNwYXJlbnQoJG5ld19pbWcsIGltYWdlY29sb3JhbGxvY2F0ZSgkbmV3X2ltZywgMCwgMCwgMCkpOwogICAgICAgICAgICBjYXNlICdwbmcnOgogICAgICAgICAgICAgICAgaW1hZ2VhbHBoYWJsZW5kaW5nKCRuZXdfaW1nLCBmYWxzZSk7CiAgICAgICAgICAgICAgICBpbWFnZXNhdmVhbHBoYSgkbmV3X2ltZywgdHJ1ZSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgJHN1Y2Nlc3MgPSBpbWFnZWNvcHlyZXNhbXBsZWQoCiAgICAgICAgICAgICRuZXdfaW1nLAogICAgICAgICAgICAkc3JjX2ltZywKICAgICAgICAgICAgJGRzdF94LAogICAgICAgICAgICAkZHN0X3ksCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgICRuZXdfd2lkdGgsCiAgICAgICAgICAgICRuZXdfaGVpZ2h0LAogICAgICAgICAgICAkaW1nX3dpZHRoLAogICAgICAgICAgICAkaW1nX2hlaWdodAogICAgICAgICkgJiYgJHdyaXRlX2Z1bmMoJG5ld19pbWcsICRuZXdfZmlsZV9wYXRoLCAkaW1hZ2VfcXVhbGl0eSk7CiAgICAgICAgJHRoaXMtPmdkX3NldF9pbWFnZV9vYmplY3QoJGZpbGVfcGF0aCwgJG5ld19pbWcpOwogICAgICAgIHJldHVybiAkc3VjY2VzczsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gaW1hZ2lja19nZXRfaW1hZ2Vfb2JqZWN0KCRmaWxlX3BhdGgsICRub19jYWNoZSA9IGZhbHNlKSB7CiAgICAgICAgaWYgKGVtcHR5KCR0aGlzLT5pbWFnZV9vYmplY3RzWyRmaWxlX3BhdGhdKSB8fCAkbm9fY2FjaGUpIHsKICAgICAgICAgICAgJHRoaXMtPmltYWdpY2tfZGVzdHJveV9pbWFnZV9vYmplY3QoJGZpbGVfcGF0aCk7CiAgICAgICAgICAgICRpbWFnZSA9IG5ldyBcSW1hZ2ljaygpOwogICAgICAgICAgICBpZiAoIWVtcHR5KCR0aGlzLT5vcHRpb25zWydpbWFnaWNrX3Jlc291cmNlX2xpbWl0cyddKSkgewogICAgICAgICAgICAgICAgZm9yZWFjaCAoJHRoaXMtPm9wdGlvbnNbJ2ltYWdpY2tfcmVzb3VyY2VfbGltaXRzJ10gYXMgJHR5cGUgPT4gJGxpbWl0KSB7CiAgICAgICAgICAgICAgICAgICAgJGltYWdlLT5zZXRSZXNvdXJjZUxpbWl0KCR0eXBlLCAkbGltaXQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgICRpbWFnZS0+cmVhZEltYWdlKCRmaWxlX3BhdGgpOwogICAgICAgICAgICAkdGhpcy0+aW1hZ2Vfb2JqZWN0c1skZmlsZV9wYXRoXSA9ICRpbWFnZTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICR0aGlzLT5pbWFnZV9vYmplY3RzWyRmaWxlX3BhdGhdOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBpbWFnaWNrX3NldF9pbWFnZV9vYmplY3QoJGZpbGVfcGF0aCwgJGltYWdlKSB7CiAgICAgICAgJHRoaXMtPmltYWdpY2tfZGVzdHJveV9pbWFnZV9vYmplY3QoJGZpbGVfcGF0aCk7CiAgICAgICAgJHRoaXMtPmltYWdlX29iamVjdHNbJGZpbGVfcGF0aF0gPSAkaW1hZ2U7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGltYWdpY2tfZGVzdHJveV9pbWFnZV9vYmplY3QoJGZpbGVfcGF0aCkgewogICAgICAgICRpbWFnZSA9IChpc3NldCgkdGhpcy0+aW1hZ2Vfb2JqZWN0c1skZmlsZV9wYXRoXSkpID8gJHRoaXMtPmltYWdlX29iamVjdHNbJGZpbGVfcGF0aF0gOiBudWxsIDsKICAgICAgICByZXR1cm4gJGltYWdlICYmICRpbWFnZS0+ZGVzdHJveSgpOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBpbWFnaWNrX29yaWVudF9pbWFnZSgkaW1hZ2UpIHsKICAgICAgICAkb3JpZW50YXRpb24gPSAkaW1hZ2UtPmdldEltYWdlT3JpZW50YXRpb24oKTsKICAgICAgICAkYmFja2dyb3VuZCA9IG5ldyBcSW1hZ2lja1BpeGVsKCdub25lJyk7CiAgICAgICAgc3dpdGNoICgkb3JpZW50YXRpb24pIHsKICAgICAgICAgICAgY2FzZSBcaW1hZ2ljazo6T1JJRU5UQVRJT05fVE9QUklHSFQ6IC8vIDIKICAgICAgICAgICAgICAgICRpbWFnZS0+ZmxvcEltYWdlKCk7IC8vIGhvcml6b250YWwgZmxvcCBhcm91bmQgeS1heGlzCiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSBcaW1hZ2ljazo6T1JJRU5UQVRJT05fQk9UVE9NUklHSFQ6IC8vIDMKICAgICAgICAgICAgICAgICRpbWFnZS0+cm90YXRlSW1hZ2UoJGJhY2tncm91bmQsIDE4MCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSBcaW1hZ2ljazo6T1JJRU5UQVRJT05fQk9UVE9NTEVGVDogLy8gNAogICAgICAgICAgICAgICAgJGltYWdlLT5mbGlwSW1hZ2UoKTsgLy8gdmVydGljYWwgZmxpcCBhcm91bmQgeC1heGlzCiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSBcaW1hZ2ljazo6T1JJRU5UQVRJT05fTEVGVFRPUDogLy8gNQogICAgICAgICAgICAgICAgJGltYWdlLT5mbG9wSW1hZ2UoKTsgLy8gaG9yaXpvbnRhbCBmbG9wIGFyb3VuZCB5LWF4aXMKICAgICAgICAgICAgICAgICRpbWFnZS0+cm90YXRlSW1hZ2UoJGJhY2tncm91bmQsIDI3MCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSBcaW1hZ2ljazo6T1JJRU5UQVRJT05fUklHSFRUT1A6IC8vIDYKICAgICAgICAgICAgICAgICRpbWFnZS0+cm90YXRlSW1hZ2UoJGJhY2tncm91bmQsIDkwKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIFxpbWFnaWNrOjpPUklFTlRBVElPTl9SSUdIVEJPVFRPTTogLy8gNwogICAgICAgICAgICAgICAgJGltYWdlLT5mbGlwSW1hZ2UoKTsgLy8gdmVydGljYWwgZmxpcCBhcm91bmQgeC1heGlzCiAgICAgICAgICAgICAgICAkaW1hZ2UtPnJvdGF0ZUltYWdlKCRiYWNrZ3JvdW5kLCAyNzApOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgXGltYWdpY2s6Ok9SSUVOVEFUSU9OX0xFRlRCT1RUT006IC8vIDgKICAgICAgICAgICAgICAgICRpbWFnZS0+cm90YXRlSW1hZ2UoJGJhY2tncm91bmQsIDI3MCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgJGltYWdlLT5zZXRJbWFnZU9yaWVudGF0aW9uKFxpbWFnaWNrOjpPUklFTlRBVElPTl9UT1BMRUZUKTsgLy8gMQogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBpbWFnaWNrX2NyZWF0ZV9zY2FsZWRfaW1hZ2UoJGZpbGVfbmFtZSwgJHZlcnNpb24sICRvcHRpb25zKSB7CiAgICAgICAgbGlzdCgkZmlsZV9wYXRoLCAkbmV3X2ZpbGVfcGF0aCkgPQogICAgICAgICAgICAkdGhpcy0+Z2V0X3NjYWxlZF9pbWFnZV9maWxlX3BhdGhzKCRmaWxlX25hbWUsICR2ZXJzaW9uKTsKICAgICAgICAkaW1hZ2UgPSAkdGhpcy0+aW1hZ2lja19nZXRfaW1hZ2Vfb2JqZWN0KAogICAgICAgICAgICAkZmlsZV9wYXRoLAogICAgICAgICAgICAhZW1wdHkoJG9wdGlvbnNbJ2Nyb3AnXSkgfHwgIWVtcHR5KCRvcHRpb25zWydub19jYWNoZSddKQogICAgICAgICk7CiAgICAgICAgaWYgKCRpbWFnZS0+Z2V0SW1hZ2VGb3JtYXQoKSA9PT0gJ0dJRicpIHsKICAgICAgICAgICAgLy8gSGFuZGxlIGFuaW1hdGVkIEdJRnM6CiAgICAgICAgICAgICRpbWFnZXMgPSAkaW1hZ2UtPmNvYWxlc2NlSW1hZ2VzKCk7CiAgICAgICAgICAgIGZvcmVhY2ggKCRpbWFnZXMgYXMgJGZyYW1lKSB7CiAgICAgICAgICAgICAgICAkaW1hZ2UgPSAkZnJhbWU7CiAgICAgICAgICAgICAgICAkdGhpcy0+aW1hZ2lja19zZXRfaW1hZ2Vfb2JqZWN0KCRmaWxlX25hbWUsICRpbWFnZSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkaW1hZ2Vfb3JpZW50ZWQgPSBmYWxzZTsKICAgICAgICBpZiAoIWVtcHR5KCRvcHRpb25zWydhdXRvX29yaWVudCddKSkgewogICAgICAgICAgICAkaW1hZ2Vfb3JpZW50ZWQgPSAkdGhpcy0+aW1hZ2lja19vcmllbnRfaW1hZ2UoJGltYWdlKTsKICAgICAgICB9IAoJICAgIAogICAgICAgICRpbWFnZV9yZXNpemUgPSBmYWxzZTsgCiAgICAgICAgJG5ld193aWR0aCA9ICRtYXhfd2lkdGggPSAkaW1nX3dpZHRoID0gJGltYWdlLT5nZXRJbWFnZVdpZHRoKCk7CiAgICAgICAgJG5ld19oZWlnaHQgPSAkbWF4X2hlaWdodCA9ICRpbWdfaGVpZ2h0ID0gJGltYWdlLT5nZXRJbWFnZUhlaWdodCgpOyAKCQkgIAogICAgICAgIC8vIHVzZSBpc3NldCgpLiBVc2VyIG1pZ2h0IGJlIHNldHRpbmcgbWF4X3dpZHRoID0gMCAoYXV0byBpbiByZWd1bGFyIHJlc2l6aW5nKS4gVmFsdWUgMCB3b3VsZCBiZSBjb25zaWRlcmVkIGVtcHR5IHdoZW4geW91IHVzZSBlbXB0eSgpCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydtYXhfd2lkdGgnXSkpIHsKICAgICAgICAgICAgJGltYWdlX3Jlc2l6ZSA9IHRydWU7IAogICAgICAgICAgICAkbmV3X3dpZHRoID0gJG1heF93aWR0aCA9ICRvcHRpb25zWydtYXhfd2lkdGgnXTsgCiAgICAgICAgfQogICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1snbWF4X2hlaWdodCddKSkgewogICAgICAgICAgICAkaW1hZ2VfcmVzaXplID0gdHJ1ZTsKICAgICAgICAgICAgJG5ld19oZWlnaHQgPSAkbWF4X2hlaWdodCA9ICRvcHRpb25zWydtYXhfaGVpZ2h0J107CiAgICAgICAgfQogICAgICAgIAogICAgICAgICRpbWFnZV9zdHJpcCA9IChpc3NldCgkb3B0aW9uc1snc3RyaXAnXSkgPyAkb3B0aW9uc1snc3RyaXAnXSA6IGZhbHNlKTsKIAogICAgICAgIGlmICggISRpbWFnZV9vcmllbnRlZCAmJiAoJG1heF93aWR0aCA+PSAkaW1nX3dpZHRoKSAmJiAoJG1heF9oZWlnaHQgPj0gJGltZ19oZWlnaHQpICYmICEkaW1hZ2Vfc3RyaXAgJiYgZW1wdHkoJG9wdGlvbnNbImpwZWdfcXVhbGl0eSJdKSApIHsgICAgICAgIAogICAgICAgICAgICBpZiAoJGZpbGVfcGF0aCAhPT0gJG5ld19maWxlX3BhdGgpIHsKICAgICAgICAgICAgICAgIHJldHVybiBjb3B5KCRmaWxlX3BhdGgsICRuZXdfZmlsZV9wYXRoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgJGNyb3AgPSAoaXNzZXQoJG9wdGlvbnNbJ2Nyb3AnXSkgPyAkb3B0aW9uc1snY3JvcCddIDogZmFsc2UpOwogICAgICAgIAogICAgICAgIGlmICgkY3JvcCkgewogICAgICAgICAgICAkeCA9IDA7CiAgICAgICAgICAgICR5ID0gMDsKICAgICAgICAgICAgaWYgKCgkaW1nX3dpZHRoIC8gJGltZ19oZWlnaHQpID49ICgkbWF4X3dpZHRoIC8gJG1heF9oZWlnaHQpKSB7CiAgICAgICAgICAgICAgICAkbmV3X3dpZHRoID0gMDsgLy8gRW5hYmxlcyBwcm9wb3J0aW9uYWwgc2NhbGluZyBiYXNlZCBvbiBtYXhfaGVpZ2h0CiAgICAgICAgICAgICAgICAkeCA9ICgkaW1nX3dpZHRoIC8gKCRpbWdfaGVpZ2h0IC8gJG1heF9oZWlnaHQpIC0gJG1heF93aWR0aCkgLyAyOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJG5ld19oZWlnaHQgPSAwOyAvLyBFbmFibGVzIHByb3BvcnRpb25hbCBzY2FsaW5nIGJhc2VkIG9uIG1heF93aWR0aAogICAgICAgICAgICAgICAgJHkgPSAoJGltZ19oZWlnaHQgLyAoJGltZ193aWR0aCAvICRtYXhfd2lkdGgpIC0gJG1heF9oZWlnaHQpIC8gMjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkc3VjY2VzcyA9ICRpbWFnZS0+cmVzaXplSW1hZ2UoCiAgICAgICAgICAgICRuZXdfd2lkdGgsCiAgICAgICAgICAgICRuZXdfaGVpZ2h0LAogICAgICAgICAgICBpc3NldCgkb3B0aW9uc1snZmlsdGVyJ10pID8gJG9wdGlvbnNbJ2ZpbHRlciddIDogXGltYWdpY2s6OkZJTFRFUl9MQU5DWk9TLAogICAgICAgICAgICBpc3NldCgkb3B0aW9uc1snYmx1ciddKSA/ICRvcHRpb25zWydibHVyJ10gOiAxLAogICAgICAgICAgICAkbmV3X3dpZHRoICYmICRuZXdfaGVpZ2h0IC8vIGZpdCBpbWFnZSBpbnRvIGNvbnN0cmFpbnRzIGlmIG5vdCB0byBiZSBjcm9wcGVkCiAgICAgICAgKTsKICAgICAgICBpZiAoJHN1Y2Nlc3MgJiYgJGNyb3ApIHsKICAgICAgICAgICAgJHN1Y2Nlc3MgPSAkaW1hZ2UtPmNyb3BJbWFnZSgKICAgICAgICAgICAgICAgICRtYXhfd2lkdGgsCiAgICAgICAgICAgICAgICAkbWF4X2hlaWdodCwKICAgICAgICAgICAgICAgICR4LAogICAgICAgICAgICAgICAgJHkKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCRzdWNjZXNzKSB7CiAgICAgICAgICAgICAgICAkc3VjY2VzcyA9ICRpbWFnZS0+c2V0SW1hZ2VQYWdlKCRtYXhfd2lkdGgsICRtYXhfaGVpZ2h0LCAwLCAwKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkdHlwZSA9IHN0cnRvbG93ZXIoc3Vic3RyKHN0cnJjaHIoJGZpbGVfbmFtZSwgJy4nKSwgMSkpOwogICAgICAgIHN3aXRjaCAoJHR5cGUpIHsKICAgICAgICAgICAgY2FzZSAnanBnJzoKICAgICAgICAgICAgY2FzZSAnanBlZyc6CiAgICAgICAgICAgICAgICBpZiAoIWVtcHR5KCRvcHRpb25zWydqcGVnX3F1YWxpdHknXSkpIHsKICAgICAgICAgICAgICAgICAgICAkaW1hZ2UtPnNldEltYWdlQ29tcHJlc3Npb24oXGltYWdpY2s6OkNPTVBSRVNTSU9OX0pQRUcpOwogICAgICAgICAgICAgICAgICAgICRpbWFnZS0+c2V0SW1hZ2VDb21wcmVzc2lvblF1YWxpdHkoJG9wdGlvbnNbJ2pwZWdfcXVhbGl0eSddKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBpZiAoICRpbWFnZV9zdHJpcCApIHsKICAgICAgICAgICAgJGltYWdlLT5zdHJpcEltYWdlKCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkc3VjY2VzcyAmJiAkaW1hZ2UtPndyaXRlSW1hZ2UoJG5ld19maWxlX3BhdGgpOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBpbWFnZW1hZ2lja19jcmVhdGVfc2NhbGVkX2ltYWdlKCRmaWxlX25hbWUsICR2ZXJzaW9uLCAkb3B0aW9ucykgewogICAgICAgIGxpc3QoJGZpbGVfcGF0aCwgJG5ld19maWxlX3BhdGgpID0KICAgICAgICAgICAgJHRoaXMtPmdldF9zY2FsZWRfaW1hZ2VfZmlsZV9wYXRocygkZmlsZV9uYW1lLCAkdmVyc2lvbik7CiAgICAgICAgJHJlc2l6ZSA9IEAkb3B0aW9uc1snbWF4X3dpZHRoJ10KICAgICAgICAgICAgLihlbXB0eSgkb3B0aW9uc1snbWF4X2hlaWdodCddKSA/ICcnIDogJ1gnLiRvcHRpb25zWydtYXhfaGVpZ2h0J10pOwogICAgICAgIGlmICghJHJlc2l6ZSAmJiBlbXB0eSgkb3B0aW9uc1snYXV0b19vcmllbnQnXSkpIHsKICAgICAgICAgICAgaWYgKCRmaWxlX3BhdGggIT09ICRuZXdfZmlsZV9wYXRoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gY29weSgkZmlsZV9wYXRoLCAkbmV3X2ZpbGVfcGF0aCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICAgICRjbWQgPSAkdGhpcy0+b3B0aW9uc1snY29udmVydF9iaW4nXTsKICAgICAgICBpZiAoIWVtcHR5KCR0aGlzLT5vcHRpb25zWydjb252ZXJ0X3BhcmFtcyddKSkgewogICAgICAgICAgICAkY21kIC49ICcgJy4kdGhpcy0+b3B0aW9uc1snY29udmVydF9wYXJhbXMnXTsKICAgICAgICB9CiAgICAgICAgJGNtZCAuPSAnICcuZXNjYXBlc2hlbGxhcmcoJGZpbGVfcGF0aCk7CiAgICAgICAgaWYgKCFlbXB0eSgkb3B0aW9uc1snYXV0b19vcmllbnQnXSkpIHsKICAgICAgICAgICAgJGNtZCAuPSAnIC1hdXRvLW9yaWVudCc7CiAgICAgICAgfQogICAgICAgIGlmICgkcmVzaXplKSB7CiAgICAgICAgICAgIC8vIEhhbmRsZSBhbmltYXRlZCBHSUZzOgogICAgICAgICAgICAkY21kIC49ICcgLWNvYWxlc2NlJzsKICAgICAgICAgICAgaWYgKGVtcHR5KCRvcHRpb25zWydjcm9wJ10pKSB7CiAgICAgICAgICAgICAgICAkY21kIC49ICcgLXJlc2l6ZSAnLmVzY2FwZXNoZWxsYXJnKCRyZXNpemUuJz4nKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRjbWQgLj0gJyAtcmVzaXplICcuZXNjYXBlc2hlbGxhcmcoJHJlc2l6ZS4nXicpOwogICAgICAgICAgICAgICAgJGNtZCAuPSAnIC1ncmF2aXR5IGNlbnRlcic7CiAgICAgICAgICAgICAgICAkY21kIC49ICcgLWNyb3AgJy5lc2NhcGVzaGVsbGFyZygkcmVzaXplLicrMCswJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBwYWdlIGRpbWVuc2lvbnMgYXJlIGNvcnJlY3QgKGZpeGVzIG9mZnNldHMgb2YgYW5pbWF0ZWQgR0lGcyk6CiAgICAgICAgICAgICRjbWQgLj0gJyArcmVwYWdlJzsKICAgICAgICB9CiAgICAgICAgaWYgKCFlbXB0eSgkb3B0aW9uc1snY29udmVydF9wYXJhbXMnXSkpIHsKICAgICAgICAgICAgJGNtZCAuPSAnICcuJG9wdGlvbnNbJ2NvbnZlcnRfcGFyYW1zJ107CiAgICAgICAgfQogICAgICAgICRjbWQgLj0gJyAnLmVzY2FwZXNoZWxsYXJnKCRuZXdfZmlsZV9wYXRoKTsKICAgICAgICBleGVjKCRjbWQsICRvdXRwdXQsICRlcnJvcik7CiAgICAgICAgaWYgKCRlcnJvcikgewogICAgICAgICAgICBlcnJvcl9sb2coaW1wbG9kZSgnXG4nLCAkb3V0cHV0KSk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldF9pbWFnZV9zaXplKCRmaWxlX3BhdGgpIHsKICAgICAgICBpZiAoJHRoaXMtPm9wdGlvbnNbJ2ltYWdlX2xpYnJhcnknXSkgewogICAgICAgICAgICBpZiAoZXh0ZW5zaW9uX2xvYWRlZCgnaW1hZ2ljaycpKSB7CiAgICAgICAgICAgICAgICAkaW1hZ2UgPSBuZXcgXEltYWdpY2soKTsKICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKEAkaW1hZ2UtPnBpbmdJbWFnZSgkZmlsZV9wYXRoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkZGltZW5zaW9ucyA9IGFycmF5KCRpbWFnZS0+Z2V0SW1hZ2VXaWR0aCgpLCAkaW1hZ2UtPmdldEltYWdlSGVpZ2h0KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAkaW1hZ2UtPmRlc3Ryb3koKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRkaW1lbnNpb25zOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9IGNhdGNoIChcRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgICAgICAgICAgZXJyb3JfbG9nKCRlLT5nZXRNZXNzYWdlKCkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgkdGhpcy0+b3B0aW9uc1snaW1hZ2VfbGlicmFyeSddID09PSAyKSB7CiAgICAgICAgICAgICAgICAkY21kID0gJHRoaXMtPm9wdGlvbnNbJ2lkZW50aWZ5X2JpbiddOwogICAgICAgICAgICAgICAgJGNtZCAuPSAnIC1waW5nICcuZXNjYXBlc2hlbGxhcmcoJGZpbGVfcGF0aCk7CiAgICAgICAgICAgICAgICBleGVjKCRjbWQsICRvdXRwdXQsICRlcnJvcik7CiAgICAgICAgICAgICAgICBpZiAoISRlcnJvciAmJiAhZW1wdHkoJG91dHB1dCkpIHsKICAgICAgICAgICAgICAgICAgICAvLyBpbWFnZS5qcGcgSlBFRyAxOTIweDEwODAgMTkyMHgxMDgwKzArMCA4LWJpdCBzUkdCIDQ2NUtCIDAuMDAwdSAwOjAwLjAwMAogICAgICAgICAgICAgICAgICAgICRpbmZvcyA9IHByZWdfc3BsaXQoJy9ccysvJywgc3Vic3RyKCRvdXRwdXRbMF0sIHN0cmxlbigkZmlsZV9wYXRoKSkpOwogICAgICAgICAgICAgICAgICAgICRkaW1lbnNpb25zID0gcHJlZ19zcGxpdCgnL3gvJywgJGluZm9zWzJdKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJGRpbWVuc2lvbnM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2dldGltYWdlc2l6ZScpKSB7CiAgICAgICAgICAgIGVycm9yX2xvZygnRnVuY3Rpb24gbm90IGZvdW5kOiBnZXRpbWFnZXNpemUnKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gQGdldGltYWdlc2l6ZSgkZmlsZV9wYXRoKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY3JlYXRlX3NjYWxlZF9pbWFnZSgkZmlsZV9uYW1lLCAkdmVyc2lvbiwgJG9wdGlvbnMpIHsKICAgICAgICB0cnkgewogICAgICAgICAgICBpZiAoJHRoaXMtPm9wdGlvbnNbJ2ltYWdlX2xpYnJhcnknXSA9PT0gMikgewogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5pbWFnZW1hZ2lja19jcmVhdGVfc2NhbGVkX2ltYWdlKCRmaWxlX25hbWUsICR2ZXJzaW9uLCAkb3B0aW9ucyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCR0aGlzLT5vcHRpb25zWydpbWFnZV9saWJyYXJ5J10gJiYgZXh0ZW5zaW9uX2xvYWRlZCgnaW1hZ2ljaycpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPmltYWdpY2tfY3JlYXRlX3NjYWxlZF9pbWFnZSgkZmlsZV9uYW1lLCAkdmVyc2lvbiwgJG9wdGlvbnMpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+Z2RfY3JlYXRlX3NjYWxlZF9pbWFnZSgkZmlsZV9uYW1lLCAkdmVyc2lvbiwgJG9wdGlvbnMpOwogICAgICAgIH0gY2F0Y2ggKFxFeGNlcHRpb24gJGUpIHsKICAgICAgICAgICAgZXJyb3JfbG9nKCRlLT5nZXRNZXNzYWdlKCkpOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBkZXN0cm95X2ltYWdlX29iamVjdCgkZmlsZV9wYXRoKSB7CiAgICAgICAgaWYgKCR0aGlzLT5vcHRpb25zWydpbWFnZV9saWJyYXJ5J10gJiYgZXh0ZW5zaW9uX2xvYWRlZCgnaW1hZ2ljaycpKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+aW1hZ2lja19kZXN0cm95X2ltYWdlX29iamVjdCgkZmlsZV9wYXRoKTsKICAgICAgICB9CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGltYWdldHlwZSgkZmlsZV9wYXRoKSB7CiAgICAgICAgJGZwID0gZm9wZW4oJGZpbGVfcGF0aCwgJ3InKTsKICAgICAgICAkZGF0YSA9IGZyZWFkKCRmcCwgNCk7CiAgICAgICAgZmNsb3NlKCRmcCk7CiAgICAgICAgLy8gR0lGOiA0NyA0OSA0NiAzOAogICAgICAgIGlmICgkZGF0YSA9PT0gJ0dJRjgnKSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjpJTUFHRVRZUEVfR0lGOwogICAgICAgIH0KICAgICAgICAvLyBKUEc6IEZGIEQ4IEZGCiAgICAgICAgaWYgKGJpbjJoZXgoc3Vic3RyKCRkYXRhLCAwLCAzKSkgPT09ICdmZmQ4ZmYnKSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjpJTUFHRVRZUEVfSlBFRzsKICAgICAgICB9CiAgICAgICAgLy8gUE5HOiA4OSA1MCA0RSA0NwogICAgICAgIGlmIChiaW4yaGV4KEAkZGF0YVswXSkuc3Vic3RyKCRkYXRhLCAxLCA0KSA9PT0gJzg5UE5HJykgewogICAgICAgICAgICByZXR1cm4gc2VsZjo6SU1BR0VUWVBFX1BORzsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBpc192YWxpZF9pbWFnZV9maWxlKCRmaWxlX3BhdGgpIHsKICAgICAgICBpZiAoIXByZWdfbWF0Y2goJy9cLihnaWZ8anBlP2d8cG5nKSQvaScsICRmaWxlX3BhdGgpKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICEhJHRoaXMtPmltYWdldHlwZSgkZmlsZV9wYXRoKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gaGFuZGxlX2ltYWdlX2ZpbGUoJGZpbGVfcGF0aCwgJGZpbGUpIHsKICAgICAgICAkZmFpbGVkX3ZlcnNpb25zID0gYXJyYXkoKTsKICAgICAgICBmb3JlYWNoICgkdGhpcy0+b3B0aW9uc1snaW1hZ2VfdmVyc2lvbnMnXSBhcyAkdmVyc2lvbiA9PiAkb3B0aW9ucykgewogICAgICAgICAgICBpZiAoJHRoaXMtPmNyZWF0ZV9zY2FsZWRfaW1hZ2UoJGZpbGUtPm5hbWUsICR2ZXJzaW9uLCAkb3B0aW9ucykpIHsKICAgICAgICAgICAgICAgIGlmICghZW1wdHkoJHZlcnNpb24pKSB7CiAgICAgICAgICAgICAgICAgICAgJGZpbGUtPnskdmVyc2lvbi4nVXJsJ30gPSAkdGhpcy0+Z2V0X2Rvd25sb2FkX3VybCgKICAgICAgICAgICAgICAgICAgICAgICAgJGZpbGUtPm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICR2ZXJzaW9uCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJGZpbGUtPnNpemUgPSAkdGhpcy0+Z2V0X2ZpbGVfc2l6ZSgkZmlsZV9wYXRoLCB0cnVlKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRmYWlsZWRfdmVyc2lvbnNbXSA9ICR2ZXJzaW9uID8gJHZlcnNpb24gOiAnb3JpZ2luYWwnOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmIChjb3VudCgkZmFpbGVkX3ZlcnNpb25zKSkgewogICAgICAgICAgICAkZmlsZS0+ZXJyb3IgPSAkdGhpcy0+Z2V0X2Vycm9yX21lc3NhZ2UoJ2ltYWdlX3Jlc2l6ZScpCiAgICAgICAgICAgICAgICAgICAgLicgKCcuaW1wbG9kZSgkZmFpbGVkX3ZlcnNpb25zLCAnLCAnKS4nKSc7CiAgICAgICAgfQogICAgICAgIC8vIEZyZWUgbWVtb3J5OgogICAgICAgICR0aGlzLT5kZXN0cm95X2ltYWdlX29iamVjdCgkZmlsZV9wYXRoKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gaGFuZGxlX2ZpbGVfdXBsb2FkKCR1cGxvYWRlZF9maWxlLCAkbmFtZSwgJHNpemUsICR0eXBlLCAkZXJyb3IsCiAgICAgICAgICAgICRpbmRleCA9IG51bGwsICRjb250ZW50X3JhbmdlID0gbnVsbCkgewogICAgICAgICRmaWxlID0gbmV3IFxzdGRDbGFzcygpOwogICAgICAgICRmaWxlLT5uYW1lID0gJHRoaXMtPmdldF9maWxlX25hbWUoJHVwbG9hZGVkX2ZpbGUsICRuYW1lLCAkc2l6ZSwgJHR5cGUsICRlcnJvciwKICAgICAgICAgICAgJGluZGV4LCAkY29udGVudF9yYW5nZSk7CiAgICAgICAgJGZpbGUtPnNpemUgPSAkdGhpcy0+Zml4X2ludGVnZXJfb3ZlcmZsb3coKGludCkkc2l6ZSk7CiAgICAgICAgJGZpbGUtPnR5cGUgPSAkdHlwZTsKICAgICAgICBpZiAoJHRoaXMtPnZhbGlkYXRlKCR1cGxvYWRlZF9maWxlLCAkZmlsZSwgJGVycm9yLCAkaW5kZXgpKSB7CiAgICAgICAgICAgICR0aGlzLT5oYW5kbGVfZm9ybV9kYXRhKCRmaWxlLCAkaW5kZXgpOwogICAgICAgICAgICAkdXBsb2FkX2RpciA9ICR0aGlzLT5nZXRfdXBsb2FkX3BhdGgoKTsKICAgICAgICAgICAgaWYgKCFpc19kaXIoJHVwbG9hZF9kaXIpKSB7CiAgICAgICAgICAgICAgICBta2RpcigkdXBsb2FkX2RpciwgJHRoaXMtPm9wdGlvbnNbJ21rZGlyX21vZGUnXSwgdHJ1ZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGZpbGVfcGF0aCA9ICR0aGlzLT5nZXRfdXBsb2FkX3BhdGgoJGZpbGUtPm5hbWUpOwogICAgICAgICAgICAkYXBwZW5kX2ZpbGUgPSAkY29udGVudF9yYW5nZSAmJiBpc19maWxlKCRmaWxlX3BhdGgpICYmCiAgICAgICAgICAgICAgICAkZmlsZS0+c2l6ZSA+ICR0aGlzLT5nZXRfZmlsZV9zaXplKCRmaWxlX3BhdGgpOwogICAgICAgICAgICBpZiAoJHVwbG9hZGVkX2ZpbGUgJiYgaXNfdXBsb2FkZWRfZmlsZSgkdXBsb2FkZWRfZmlsZSkpIHsKICAgICAgICAgICAgICAgIC8vIG11bHRpcGFydC9mb3JtZGF0YSB1cGxvYWRzIChQT1NUIG1ldGhvZCB1cGxvYWRzKQogICAgICAgICAgICAgICAgaWYgKCRhcHBlbmRfZmlsZSkgewogICAgICAgICAgICAgICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKAogICAgICAgICAgICAgICAgICAgICAgICAkZmlsZV9wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICBmb3BlbigkdXBsb2FkZWRfZmlsZSwgJ3InKSwKICAgICAgICAgICAgICAgICAgICAgICAgRklMRV9BUFBFTkQKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBtb3ZlX3VwbG9hZGVkX2ZpbGUoJHVwbG9hZGVkX2ZpbGUsICRmaWxlX3BhdGgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgLy8gTm9uLW11bHRpcGFydCB1cGxvYWRzIChQVVQgbWV0aG9kIHN1cHBvcnQpCiAgICAgICAgICAgICAgICBmaWxlX3B1dF9jb250ZW50cygKICAgICAgICAgICAgICAgICAgICAkZmlsZV9wYXRoLAogICAgICAgICAgICAgICAgICAgIGZvcGVuKCR0aGlzLT5vcHRpb25zWydpbnB1dF9zdHJlYW0nXSwgJ3InKSwKICAgICAgICAgICAgICAgICAgICAkYXBwZW5kX2ZpbGUgPyBGSUxFX0FQUEVORCA6IDAKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGZpbGVfc2l6ZSA9ICR0aGlzLT5nZXRfZmlsZV9zaXplKCRmaWxlX3BhdGgsICRhcHBlbmRfZmlsZSk7CiAgICAgICAgICAgIGlmICgkZmlsZV9zaXplID09PSAkZmlsZS0+c2l6ZSkgewogICAgICAgICAgICAgICAgJGZpbGUtPnVybCA9ICR0aGlzLT5nZXRfZG93bmxvYWRfdXJsKCRmaWxlLT5uYW1lKTsKICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+aXNfdmFsaWRfaW1hZ2VfZmlsZSgkZmlsZV9wYXRoKSkgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5oYW5kbGVfaW1hZ2VfZmlsZSgkZmlsZV9wYXRoLCAkZmlsZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkZmlsZS0+c2l6ZSA9ICRmaWxlX3NpemU7CiAgICAgICAgICAgICAgICBpZiAoISRjb250ZW50X3JhbmdlICYmICR0aGlzLT5vcHRpb25zWydkaXNjYXJkX2Fib3J0ZWRfdXBsb2FkcyddKSB7CiAgICAgICAgICAgICAgICAgICAgdW5saW5rKCRmaWxlX3BhdGgpOwogICAgICAgICAgICAgICAgICAgICRmaWxlLT5lcnJvciA9ICR0aGlzLT5nZXRfZXJyb3JfbWVzc2FnZSgnYWJvcnQnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkdGhpcy0+c2V0X2FkZGl0aW9uYWxfZmlsZV9wcm9wZXJ0aWVzKCRmaWxlKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRmaWxlOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiByZWFkZmlsZSgkZmlsZV9wYXRoKSB7CiAgICAgICAgJGZpbGVfc2l6ZSA9ICR0aGlzLT5nZXRfZmlsZV9zaXplKCRmaWxlX3BhdGgpOwogICAgICAgICRjaHVua19zaXplID0gJHRoaXMtPm9wdGlvbnNbJ3JlYWRmaWxlX2NodW5rX3NpemUnXTsKICAgICAgICBpZiAoJGNodW5rX3NpemUgJiYgJGZpbGVfc2l6ZSA+ICRjaHVua19zaXplKSB7CiAgICAgICAgICAgICRoYW5kbGUgPSBmb3BlbigkZmlsZV9wYXRoLCAncmInKTsKICAgICAgICAgICAgd2hpbGUgKCFmZW9mKCRoYW5kbGUpKSB7CiAgICAgICAgICAgICAgICBlY2hvIGZyZWFkKCRoYW5kbGUsICRjaHVua19zaXplKTsKICAgICAgICAgICAgICAgIEBvYl9mbHVzaCgpOwogICAgICAgICAgICAgICAgQGZsdXNoKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZmNsb3NlKCRoYW5kbGUpOwogICAgICAgICAgICByZXR1cm4gJGZpbGVfc2l6ZTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJlYWRmaWxlKCRmaWxlX3BhdGgpOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBib2R5KCRzdHIpIHsKICAgICAgICBlY2hvICRzdHI7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGhlYWRlcigkc3RyKSB7CiAgICAgICAgaGVhZGVyKCRzdHIpOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRfdXBsb2FkX2RhdGEoJGlkKSB7CiAgICAgICAgcmV0dXJuIEAkX0ZJTEVTWyRpZF07CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldF9wb3N0X3BhcmFtKCRpZCkgewogICAgICAgIHJldHVybiBAJF9QT1NUWyRpZF07CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldF9xdWVyeV9wYXJhbSgkaWQpIHsKICAgICAgICByZXR1cm4gQCRfR0VUWyRpZF07CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldF9zZXJ2ZXJfdmFyKCRpZCkgewogICAgICAgIHJldHVybiBAJF9TRVJWRVJbJGlkXTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gaGFuZGxlX2Zvcm1fZGF0YSgkZmlsZSwgJGluZGV4KSB7CiAgICAgICAgLy8gSGFuZGxlIGZvcm0gZGF0YSwgZS5nLiAkX1BPU1RbJ2Rlc2NyaXB0aW9uJ11bJGluZGV4XQogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRfdmVyc2lvbl9wYXJhbSgpIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmJhc2VuYW1lKHN0cmlwc2xhc2hlcygkdGhpcy0+Z2V0X3F1ZXJ5X3BhcmFtKCd2ZXJzaW9uJykpKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0X3Npbmd1bGFyX3BhcmFtX25hbWUoKSB7CiAgICAgICAgcmV0dXJuIHN1YnN0cigkdGhpcy0+b3B0aW9uc1sncGFyYW1fbmFtZSddLCAwLCAtMSk7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldF9maWxlX25hbWVfcGFyYW0oKSB7CiAgICAgICAgJG5hbWUgPSAkdGhpcy0+Z2V0X3Npbmd1bGFyX3BhcmFtX25hbWUoKTsKICAgICAgICByZXR1cm4gJHRoaXMtPmJhc2VuYW1lKHN0cmlwc2xhc2hlcygkdGhpcy0+Z2V0X3F1ZXJ5X3BhcmFtKCRuYW1lKSkpOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRfZmlsZV9uYW1lc19wYXJhbXMoKSB7CiAgICAgICAgJHBhcmFtcyA9ICR0aGlzLT5nZXRfcXVlcnlfcGFyYW0oJHRoaXMtPm9wdGlvbnNbJ3BhcmFtX25hbWUnXSk7CiAgICAgICAgaWYgKCEkcGFyYW1zKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KICAgICAgICBmb3JlYWNoICgkcGFyYW1zIGFzICRrZXkgPT4gJHZhbHVlKSB7CiAgICAgICAgICAgICRwYXJhbXNbJGtleV0gPSAkdGhpcy0+YmFzZW5hbWUoc3RyaXBzbGFzaGVzKCR2YWx1ZSkpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJHBhcmFtczsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0X2ZpbGVfdHlwZSgkZmlsZV9wYXRoKSB7CiAgICAgICAgc3dpdGNoIChzdHJ0b2xvd2VyKHBhdGhpbmZvKCRmaWxlX3BhdGgsIFBBVEhJTkZPX0VYVEVOU0lPTikpKSB7CiAgICAgICAgICAgIGNhc2UgJ2pwZWcnOgogICAgICAgICAgICBjYXNlICdqcGcnOgogICAgICAgICAgICAgICAgcmV0dXJuICdpbWFnZS9qcGVnJzsKICAgICAgICAgICAgY2FzZSAncG5nJzoKICAgICAgICAgICAgICAgIHJldHVybiAnaW1hZ2UvcG5nJzsKICAgICAgICAgICAgY2FzZSAnZ2lmJzoKICAgICAgICAgICAgICAgIHJldHVybiAnaW1hZ2UvZ2lmJzsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGRvd25sb2FkKCkgewogICAgICAgIHN3aXRjaCAoJHRoaXMtPm9wdGlvbnNbJ2Rvd25sb2FkX3ZpYV9waHAnXSkgewogICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAkcmVkaXJlY3RfaGVhZGVyID0gbnVsbDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAkcmVkaXJlY3RfaGVhZGVyID0gJ1gtU2VuZGZpbGUnOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgICRyZWRpcmVjdF9oZWFkZXIgPSAnWC1BY2NlbC1SZWRpcmVjdCc7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+aGVhZGVyKCdIVFRQLzEuMSA0MDMgRm9yYmlkZGVuJyk7CiAgICAgICAgfQogICAgICAgICRmaWxlX25hbWUgPSAkdGhpcy0+Z2V0X2ZpbGVfbmFtZV9wYXJhbSgpOwogICAgICAgIGlmICghJHRoaXMtPmlzX3ZhbGlkX2ZpbGVfb2JqZWN0KCRmaWxlX25hbWUpKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+aGVhZGVyKCdIVFRQLzEuMSA0MDQgTm90IEZvdW5kJyk7CiAgICAgICAgfQogICAgICAgIGlmICgkcmVkaXJlY3RfaGVhZGVyKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+aGVhZGVyKAogICAgICAgICAgICAgICAgJHJlZGlyZWN0X2hlYWRlci4nOiAnLiR0aGlzLT5nZXRfZG93bmxvYWRfdXJsKAogICAgICAgICAgICAgICAgICAgICRmaWxlX25hbWUsCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmdldF92ZXJzaW9uX3BhcmFtKCksCiAgICAgICAgICAgICAgICAgICAgdHJ1ZQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICAkZmlsZV9wYXRoID0gJHRoaXMtPmdldF91cGxvYWRfcGF0aCgkZmlsZV9uYW1lLCAkdGhpcy0+Z2V0X3ZlcnNpb25fcGFyYW0oKSk7CiAgICAgICAgLy8gUHJldmVudCBicm93c2VycyBmcm9tIE1JTUUtc25pZmZpbmcgdGhlIGNvbnRlbnQtdHlwZToKICAgICAgICAkdGhpcy0+aGVhZGVyKCdYLUNvbnRlbnQtVHlwZS1PcHRpb25zOiBub3NuaWZmJyk7CiAgICAgICAgaWYgKCFwcmVnX21hdGNoKCR0aGlzLT5vcHRpb25zWydpbmxpbmVfZmlsZV90eXBlcyddLCAkZmlsZV9uYW1lKSkgewogICAgICAgICAgICAkdGhpcy0+aGVhZGVyKCdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScpOwogICAgICAgICAgICAkdGhpcy0+aGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0iJy4kZmlsZV9uYW1lLiciJyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPmhlYWRlcignQ29udGVudC1UeXBlOiAnLiR0aGlzLT5nZXRfZmlsZV90eXBlKCRmaWxlX3BhdGgpKTsKICAgICAgICAgICAgJHRoaXMtPmhlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbjogaW5saW5lOyBmaWxlbmFtZT0iJy4kZmlsZV9uYW1lLiciJyk7CiAgICAgICAgfQogICAgICAgICR0aGlzLT5oZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoOiAnLiR0aGlzLT5nZXRfZmlsZV9zaXplKCRmaWxlX3BhdGgpKTsKICAgICAgICAkdGhpcy0+aGVhZGVyKCdMYXN0LU1vZGlmaWVkOiAnLmdtZGF0ZSgnRCwgZCBNIFkgSDppOnMgVCcsIGZpbGVtdGltZSgkZmlsZV9wYXRoKSkpOwogICAgICAgICR0aGlzLT5yZWFkZmlsZSgkZmlsZV9wYXRoKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gc2VuZF9jb250ZW50X3R5cGVfaGVhZGVyKCkgewogICAgICAgICR0aGlzLT5oZWFkZXIoJ1Zhcnk6IEFjY2VwdCcpOwogICAgICAgIGlmIChzdHJwb3MoJHRoaXMtPmdldF9zZXJ2ZXJfdmFyKCdIVFRQX0FDQ0VQVCcpLCAnYXBwbGljYXRpb24vanNvbicpICE9PSBmYWxzZSkgewogICAgICAgICAgICAkdGhpcy0+aGVhZGVyKCdDb250ZW50LXR5cGU6IGFwcGxpY2F0aW9uL2pzb24nKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdGhpcy0+aGVhZGVyKCdDb250ZW50LXR5cGU6IHRleHQvcGxhaW4nKTsKICAgICAgICB9CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHNlbmRfYWNjZXNzX2NvbnRyb2xfaGVhZGVycygpIHsKICAgICAgICAkdGhpcy0+aGVhZGVyKCdBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW46ICcuJHRoaXMtPm9wdGlvbnNbJ2FjY2Vzc19jb250cm9sX2FsbG93X29yaWdpbiddKTsKICAgICAgICAkdGhpcy0+aGVhZGVyKCdBY2Nlc3MtQ29udHJvbC1BbGxvdy1DcmVkZW50aWFsczogJwogICAgICAgICAgICAuKCR0aGlzLT5vcHRpb25zWydhY2Nlc3NfY29udHJvbF9hbGxvd19jcmVkZW50aWFscyddID8gJ3RydWUnIDogJ2ZhbHNlJykpOwogICAgICAgICR0aGlzLT5oZWFkZXIoJ0FjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHM6ICcKICAgICAgICAgICAgLmltcGxvZGUoJywgJywgJHRoaXMtPm9wdGlvbnNbJ2FjY2Vzc19jb250cm9sX2FsbG93X21ldGhvZHMnXSkpOwogICAgICAgICR0aGlzLT5oZWFkZXIoJ0FjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnM6ICcKICAgICAgICAgICAgLmltcGxvZGUoJywgJywgJHRoaXMtPm9wdGlvbnNbJ2FjY2Vzc19jb250cm9sX2FsbG93X2hlYWRlcnMnXSkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZW5lcmF0ZV9yZXNwb25zZSgkY29udGVudCwgJHByaW50X3Jlc3BvbnNlID0gdHJ1ZSkgewogICAgICAgICR0aGlzLT5yZXNwb25zZSA9ICRjb250ZW50OwogICAgICAgIGlmICgkcHJpbnRfcmVzcG9uc2UpIHsKICAgICAgICAgICAgJGpzb24gPSBqc29uX2VuY29kZSgkY29udGVudCk7CiAgICAgICAgICAgICRyZWRpcmVjdCA9IHN0cmlwc2xhc2hlcygkdGhpcy0+Z2V0X3Bvc3RfcGFyYW0oJ3JlZGlyZWN0JykpOwogICAgICAgICAgICBpZiAoJHJlZGlyZWN0ICYmIHByZWdfbWF0Y2goJHRoaXMtPm9wdGlvbnNbJ3JlZGlyZWN0X2FsbG93X3RhcmdldCddLCAkcmVkaXJlY3QpKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+aGVhZGVyKCdMb2NhdGlvbjogJy5zcHJpbnRmKCRyZWRpcmVjdCwgcmF3dXJsZW5jb2RlKCRqc29uKSkpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgICR0aGlzLT5oZWFkKCk7CiAgICAgICAgICAgIGlmICgkdGhpcy0+Z2V0X3NlcnZlcl92YXIoJ0hUVFBfQ09OVEVOVF9SQU5HRScpKSB7CiAgICAgICAgICAgICAgICAkZmlsZXMgPSBpc3NldCgkY29udGVudFskdGhpcy0+b3B0aW9uc1sncGFyYW1fbmFtZSddXSkgPwogICAgICAgICAgICAgICAgICAgICRjb250ZW50WyR0aGlzLT5vcHRpb25zWydwYXJhbV9uYW1lJ11dIDogbnVsbDsKICAgICAgICAgICAgICAgIGlmICgkZmlsZXMgJiYgaXNfYXJyYXkoJGZpbGVzKSAmJiBpc19vYmplY3QoJGZpbGVzWzBdKSAmJiAkZmlsZXNbMF0tPnNpemUpIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+aGVhZGVyKCdSYW5nZTogMC0nLigKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmZpeF9pbnRlZ2VyX292ZXJmbG93KChpbnQpJGZpbGVzWzBdLT5zaXplKSAtIDEKICAgICAgICAgICAgICAgICAgICApKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkdGhpcy0+Ym9keSgkanNvbik7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkY29udGVudDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3Jlc3BvbnNlICgpIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlc3BvbnNlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBoZWFkKCkgewogICAgICAgICR0aGlzLT5oZWFkZXIoJ1ByYWdtYTogbm8tY2FjaGUnKTsKICAgICAgICAkdGhpcy0+aGVhZGVyKCdDYWNoZS1Db250cm9sOiBuby1zdG9yZSwgbm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZScpOwogICAgICAgICR0aGlzLT5oZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb246IGlubGluZTsgZmlsZW5hbWU9ImZpbGVzLmpzb24iJyk7CiAgICAgICAgLy8gUHJldmVudCBJbnRlcm5ldCBFeHBsb3JlciBmcm9tIE1JTUUtc25pZmZpbmcgdGhlIGNvbnRlbnQtdHlwZToKICAgICAgICAkdGhpcy0+aGVhZGVyKCdYLUNvbnRlbnQtVHlwZS1PcHRpb25zOiBub3NuaWZmJyk7CiAgICAgICAgaWYgKCR0aGlzLT5vcHRpb25zWydhY2Nlc3NfY29udHJvbF9hbGxvd19vcmlnaW4nXSkgewogICAgICAgICAgICAkdGhpcy0+c2VuZF9hY2Nlc3NfY29udHJvbF9oZWFkZXJzKCk7CiAgICAgICAgfQogICAgICAgICR0aGlzLT5zZW5kX2NvbnRlbnRfdHlwZV9oZWFkZXIoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0KCRwcmludF9yZXNwb25zZSA9IHRydWUpIHsKICAgICAgICBpZiAoJHByaW50X3Jlc3BvbnNlICYmICR0aGlzLT5nZXRfcXVlcnlfcGFyYW0oJ2Rvd25sb2FkJykpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5kb3dubG9hZCgpOwogICAgICAgIH0KICAgICAgICAkZmlsZV9uYW1lID0gJHRoaXMtPmdldF9maWxlX25hbWVfcGFyYW0oKTsKICAgICAgICBpZiAoJGZpbGVfbmFtZSkgewogICAgICAgICAgICAkcmVzcG9uc2UgPSBhcnJheSgKICAgICAgICAgICAgICAgICR0aGlzLT5nZXRfc2luZ3VsYXJfcGFyYW1fbmFtZSgpID0+ICR0aGlzLT5nZXRfZmlsZV9vYmplY3QoJGZpbGVfbmFtZSkKICAgICAgICAgICAgKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkcmVzcG9uc2UgPSBhcnJheSgKICAgICAgICAgICAgICAgICR0aGlzLT5vcHRpb25zWydwYXJhbV9uYW1lJ10gPT4gJHRoaXMtPmdldF9maWxlX29iamVjdHMoKQogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJHRoaXMtPmdlbmVyYXRlX3Jlc3BvbnNlKCRyZXNwb25zZSwgJHByaW50X3Jlc3BvbnNlKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcG9zdCgkcHJpbnRfcmVzcG9uc2UgPSB0cnVlKSB7CiAgICAgICAgaWYgKCR0aGlzLT5nZXRfcXVlcnlfcGFyYW0oJ19tZXRob2QnKSA9PT0gJ0RFTEVURScpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5kZWxldGUoJHByaW50X3Jlc3BvbnNlKTsKICAgICAgICB9CiAgICAgICAgJHVwbG9hZCA9ICR0aGlzLT5nZXRfdXBsb2FkX2RhdGEoJHRoaXMtPm9wdGlvbnNbJ3BhcmFtX25hbWUnXSk7CiAgICAgICAgLy8gUGFyc2UgdGhlIENvbnRlbnQtRGlzcG9zaXRpb24gaGVhZGVyLCBpZiBhdmFpbGFibGU6CiAgICAgICAgJGNvbnRlbnRfZGlzcG9zaXRpb25faGVhZGVyID0gJHRoaXMtPmdldF9zZXJ2ZXJfdmFyKCdIVFRQX0NPTlRFTlRfRElTUE9TSVRJT04nKTsKICAgICAgICAkZmlsZV9uYW1lID0gJGNvbnRlbnRfZGlzcG9zaXRpb25faGVhZGVyID8KICAgICAgICAgICAgcmF3dXJsZGVjb2RlKHByZWdfcmVwbGFjZSgKICAgICAgICAgICAgICAgICcvKF5bXiJdKyIpfCgiJCkvJywKICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgJGNvbnRlbnRfZGlzcG9zaXRpb25faGVhZGVyCiAgICAgICAgICAgICkpIDogbnVsbDsKCiAgICAgICAgLy8gQ01TTVMgdGlueW1jZSBxdWljayBmaXggZm9yIGxhcmdlIGZpbGVzCiAgICAgICAgaWYgKGlzc2V0KCRjb250ZW50X2Rpc3Bvc2l0aW9uX2hlYWRlcikgJiYgIWVtcHR5KCRjb250ZW50X2Rpc3Bvc2l0aW9uX2hlYWRlcikgKSB7CiAgICAgICAgICAgICRmaWxlX25hbWUgPSBzdHJfcmVwbGFjZSgnYXR0YWNobWVudDsgZmlsZW5hbWU9JiMzNDsnLCAnJywgJGNvbnRlbnRfZGlzcG9zaXRpb25faGVhZGVyKTsKICAgICAgICAgICAgJGZpbGVfbmFtZSA9IHN0cl9yZXBsYWNlKCcmIzM0OycsICcnLCAkZmlsZV9uYW1lKTsKICAgICAgICB9CiAgICAgICAgLy8gQ01TTVMgZW5kIHF1aWNrIGZpeAoKICAgICAgICAvLyBQYXJzZSB0aGUgQ29udGVudC1SYW5nZSBoZWFkZXIsIHdoaWNoIGhhcyB0aGUgZm9sbG93aW5nIGZvcm06CiAgICAgICAgLy8gQ29udGVudC1SYW5nZTogYnl0ZXMgMC01MjQyODcvMjAwMDAwMAogICAgICAgICRjb250ZW50X3JhbmdlX2hlYWRlciA9ICR0aGlzLT5nZXRfc2VydmVyX3ZhcignSFRUUF9DT05URU5UX1JBTkdFJyk7CiAgICAgICAgJGNvbnRlbnRfcmFuZ2UgPSAkY29udGVudF9yYW5nZV9oZWFkZXIgPwogICAgICAgICAgICBwcmVnX3NwbGl0KCcvW14wLTldKy8nLCAkY29udGVudF9yYW5nZV9oZWFkZXIpIDogbnVsbDsKICAgICAgICAkc2l6ZSA9ICAkY29udGVudF9yYW5nZSA/ICRjb250ZW50X3JhbmdlWzNdIDogbnVsbDsKICAgICAgICAkZmlsZXMgPSBhcnJheSgpOwogICAgICAgIGlmICgkdXBsb2FkKSB7CiAgICAgICAgICAgIGlmIChpc19hcnJheSgkdXBsb2FkWyd0bXBfbmFtZSddKSkgewogICAgICAgICAgICAgICAgLy8gcGFyYW1fbmFtZSBpcyBhbiBhcnJheSBpZGVudGlmaWVyIGxpa2UgImZpbGVzW10iLAogICAgICAgICAgICAgICAgLy8gJHVwbG9hZCBpcyBhIG11bHRpLWRpbWVuc2lvbmFsIGFycmF5OgogICAgICAgICAgICAgICAgZm9yZWFjaCAoJHVwbG9hZFsndG1wX25hbWUnXSBhcyAkaW5kZXggPT4gJHZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgJGZpbGVzW10gPSAkdGhpcy0+aGFuZGxlX2ZpbGVfdXBsb2FkKAogICAgICAgICAgICAgICAgICAgICAgICAkdXBsb2FkWyd0bXBfbmFtZSddWyRpbmRleF0sCiAgICAgICAgICAgICAgICAgICAgICAgICRmaWxlX25hbWUgPyAkZmlsZV9uYW1lIDogJHVwbG9hZFsnbmFtZSddWyRpbmRleF0sCiAgICAgICAgICAgICAgICAgICAgICAgICRzaXplID8gJHNpemUgOiAkdXBsb2FkWydzaXplJ11bJGluZGV4XSwKICAgICAgICAgICAgICAgICAgICAgICAgJHVwbG9hZFsndHlwZSddWyRpbmRleF0sCiAgICAgICAgICAgICAgICAgICAgICAgIGlzc2V0KCR1cGxvYWRbJ2Vycm9yJ10pID8gJHVwbG9hZFsnZXJyb3InXVskaW5kZXhdIDogbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgJGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAkY29udGVudF9yYW5nZQogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAvLyBwYXJhbV9uYW1lIGlzIGEgc2luZ2xlIG9iamVjdCBpZGVudGlmaWVyIGxpa2UgImZpbGUiLAogICAgICAgICAgICAgICAgLy8gJHVwbG9hZCBpcyBhIG9uZS1kaW1lbnNpb25hbCBhcnJheToKICAgICAgICAgICAgICAgICRmaWxlc1tdID0gJHRoaXMtPmhhbmRsZV9maWxlX3VwbG9hZCgKICAgICAgICAgICAgICAgICAgICBpc3NldCgkdXBsb2FkWyd0bXBfbmFtZSddKSA/ICR1cGxvYWRbJ3RtcF9uYW1lJ10gOiBudWxsLAogICAgICAgICAgICAgICAgICAgICRmaWxlX25hbWUgPyAkZmlsZV9uYW1lIDogKGlzc2V0KCR1cGxvYWRbJ25hbWUnXSkgPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHVwbG9hZFsnbmFtZSddIDogbnVsbCksCiAgICAgICAgICAgICAgICAgICAgJHNpemUgPyAkc2l6ZSA6IChpc3NldCgkdXBsb2FkWydzaXplJ10pID8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR1cGxvYWRbJ3NpemUnXSA6ICR0aGlzLT5nZXRfc2VydmVyX3ZhcignQ09OVEVOVF9MRU5HVEgnKSksCiAgICAgICAgICAgICAgICAgICAgaXNzZXQoJHVwbG9hZFsndHlwZSddKSA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdXBsb2FkWyd0eXBlJ10gOiAkdGhpcy0+Z2V0X3NlcnZlcl92YXIoJ0NPTlRFTlRfVFlQRScpLAogICAgICAgICAgICAgICAgICAgIGlzc2V0KCR1cGxvYWRbJ2Vycm9yJ10pID8gJHVwbG9hZFsnZXJyb3InXSA6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgbnVsbCwKICAgICAgICAgICAgICAgICAgICAkY29udGVudF9yYW5nZQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkcmVzcG9uc2UgPSBhcnJheSgkdGhpcy0+b3B0aW9uc1sncGFyYW1fbmFtZSddID0+ICRmaWxlcyk7CiAgICAgICAgJG5hbWUgPSAkZmlsZV9uYW1lID8gJGZpbGVfbmFtZSA6ICR1cGxvYWRbJ25hbWUnXVswXTsKICAgICAgICAkcmVzID0gJHRoaXMtPmdlbmVyYXRlX3Jlc3BvbnNlKCRyZXNwb25zZSwgJHByaW50X3Jlc3BvbnNlKTsKICAgICAgICBpZihpc19maWxlKCR0aGlzLT5nZXRfdXBsb2FkX3BhdGgoJG5hbWUpKSl7CiAgICAgICAgICAgICR1cGxvYWRlZF9ieXRlcyA9ICR0aGlzLT5maXhfaW50ZWdlcl9vdmVyZmxvdygoaW50KSRjb250ZW50X3JhbmdlWzFdKTsKICAgICAgICAgICAgJHRvdGFsU2l6ZSA9ICR0aGlzLT5nZXRfZmlsZV9zaXplKCR0aGlzLT5nZXRfdXBsb2FkX3BhdGgoJG5hbWUpKTsKICAgICAgICAgICAgaWYgKCR0b3RhbFNpemUgLSAkdXBsb2FkZWRfYnl0ZXMgLSAkdGhpcy0+b3B0aW9uc1sncmVhZGZpbGVfY2h1bmtfc2l6ZSddIDwgMCkgewogICAgICAgICAgICAgICAgJHRoaXMtPm9uVXBsb2FkRW5kKCRyZXMpOwogICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICR0aGlzLT5oZWFkKCk7CiAgICAgICAgICAgICAgICAkdGhpcy0+Ym9keShqc29uX2VuY29kZSgkcmVzKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgJHRoaXMtPmhlYWQoKTsKICAgICAgICAgICAgJHRoaXMtPmJvZHkoanNvbl9lbmNvZGUoJHJlcykpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJHJlczsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gb25VcGxvYWRFbmQgKCRyZXMpewogICAgICAgICR0YXJnZXRQYXRoID0gJHRoaXMtPm9wdGlvbnNbJ3N0b3JlRm9sZGVyJ107CiAgICAgICAgJHRhcmdldFBhdGhUaHVtYiA9ICR0aGlzLT5vcHRpb25zWydzdG9yZUZvbGRlclRodW1iJ107CgogICAgICAgIGlmKCEkdGhpcy0+b3B0aW9uc1snZnRwJ10pewogICAgICAgICAgICAkdGFyZ2V0RmlsZSA9ICAkdGFyZ2V0UGF0aC4gJHJlc1snZmlsZXMnXVswXS0+bmFtZTsKICAgICAgICAgICAgJHRhcmdldEZpbGVUaHVtYiA9ICAkdGFyZ2V0UGF0aFRodW1iLiAkcmVzWydmaWxlcyddWzBdLT5uYW1lOwogICAgICAgICAgICBpZiAoIWlzX2RpcigkdGFyZ2V0UGF0aFRodW1iKSkgewogICAgICAgICAgICAgICAgbWtkaXIoJHRhcmdldFBhdGhUaHVtYiwgJHRoaXMtPm9wdGlvbnNbJ21rZGlyX21vZGUnXSwgdHJ1ZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoaXNfZmlsZSgkdGFyZ2V0RmlsZSkpIHsKICAgICAgICAgICAgICAgIGNobW9kKCR0YXJnZXRGaWxlLCAkdGhpcy0+b3B0aW9uc1snY29uZmlnJ11bJ2ZpbGVQZXJtaXNzaW9uJ10pOwogICAgICAgICAgICB9ZWxzZWlmKGlzX2RpcigkdGFyZ2V0RmlsZSkpewogICAgICAgICAgICAgICAgY2htb2QoJHRhcmdldEZpbGUsICR0aGlzLT5vcHRpb25zWydjb25maWcnXVsnZm9sZGVyUGVybWlzc2lvbiddKTsKICAgICAgICAgICAgfQogICAgICAgIH1lbHNlewogICAgICAgICAgICAkdGFyZ2V0RmlsZSA9ICR0aGlzLT5vcHRpb25zWydjb25maWcnXVsnZnRwX3RlbXBfZm9sZGVyJ10uJHJlc1snZmlsZXMnXVswXS0+bmFtZTsKICAgICAgICAgICAgJHRhcmdldEZpbGVUaHVtYiA9ICAkdGhpcy0+b3B0aW9uc1snY29uZmlnJ11bJ2Z0cF90ZW1wX2ZvbGRlciddLiJ0aHVtYnMvIi4gJHJlc1snZmlsZXMnXVswXS0+bmFtZTsKICAgICAgICB9CgogICAgICAgIC8vY2hlY2sgaWYgaW1hZ2UgKGFuZCBzdXBwb3J0ZWQpCiAgICAgICAgJGlzX2ltZyA9IEZBTFNFOwogICAgICAgIGlmICgkdGhpcy0+aXNfdmFsaWRfaW1hZ2VfZmlsZSgkdGFyZ2V0RmlsZSkpewogICAgICAgICAgICAkaXNfaW1nID0gVFJVRTsKICAgICAgICB9CgogICAgICAgIGlmICgkaXNfaW1nKQogICAgICAgIHsKICAgICAgICAgICAgaWYoaXNzZXQoJHRoaXMtPm9wdGlvbnNbJ2NvbmZpZyddWydpbWFnZV93YXRlcm1hcmsnXSkgJiYgJHRoaXMtPm9wdGlvbnNbJ2NvbmZpZyddWydpbWFnZV93YXRlcm1hcmsnXSl7CiAgICAgICAgICAgICAgICByZXF1aXJlX29uY2UoJ2luY2x1ZGUvcGhwX2ltYWdlX21hZ2ljaWFuLnBocCcpOwoKICAgICAgICAgICAgICAgICRtYWdpY2lhbk9iaiA9IG5ldyBpbWFnZUxpYigkdGFyZ2V0RmlsZSk7CiAgICAgICAgICAgICAgICAkbWFnaWNpYW5PYmogLT4gYWRkV2F0ZXJtYXJrKCR0aGlzLT5vcHRpb25zWydjb25maWcnXVsnaW1hZ2Vfd2F0ZXJtYXJrJ10sICR0aGlzLT5vcHRpb25zWydjb25maWcnXVsnaW1hZ2Vfd2F0ZXJtYXJrX3Bvc2l0aW9uJ10sICAkdGhpcy0+b3B0aW9uc1snY29uZmlnJ11bJ2ltYWdlX3dhdGVybWFya19wYWRkaW5nJ10pOwoKICAgICAgICAgICAgICAgICRtYWdpY2lhbk9iaiAtPiBzYXZlSW1hZ2UoJHRhcmdldEZpbGUpOwogICAgICAgICAgICB9CgoKCiAgICAgICAgICAgICR0aHVtYlJlc3VsdCA9IGNyZWF0ZV9pbWcoJHRhcmdldEZpbGUsICR0YXJnZXRGaWxlVGh1bWIsIDEyMiwgOTEpOwoKICAgICAgICAgICAgaWYgKCAkdGh1bWJSZXN1bHQhPT10cnVlKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpZigkdGh1bWJSZXN1bHQgPT09IGZhbHNlKXsKICAgICAgICAgICAgICAgICAgICAkcmVzWydmaWxlcyddWzBdLT5lcnJvciA9IHRyYW5zKCJOb3QgZW5vdWdoIE1lbW9yeSIpOwogICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgJHJlc1snZmlsZXMnXVswXS0+ZXJyb3IgPSAkdGh1bWJSZXN1bHQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpZiggISR0aGlzLT5vcHRpb25zWydmdHAnXSAmJiAhIG5ld190aHVtYm5haWxzX2NyZWF0aW9uKCR0YXJnZXRQYXRoLCR0YXJnZXRGaWxlLCRfRklMRVNbJ2ZpbGVzJ11bJ25hbWUnXVswXSwkdGhpcy0+b3B0aW9uc1snY29uZmlnJ11bJ2N1cnJlbnRfcGF0aCddLCR0aGlzLT5vcHRpb25zWydjb25maWcnXSkpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJHJlc1snZmlsZXMnXVswXS0+ZXJyb3IgPSB0cmFucygiTm90IGVub3VnaCBNZW1vcnkiKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkaW1naW5mbyA9IGdldGltYWdlc2l6ZSgkdGFyZ2V0RmlsZSk7CiAgICAgICAgICAgICAgICAgICAgJHNyY1dpZHRoID0gJGltZ2luZm9bMF07CiAgICAgICAgICAgICAgICAgICAgJHNyY0hlaWdodCA9ICRpbWdpbmZvWzFdOwoKICAgICAgICAgICAgICAgICAgICAvLyByZXNpemUgaW1hZ2VzIGlmIHNldAogICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+b3B0aW9uc1snY29uZmlnJ11bJ2ltYWdlX3Jlc2l6aW5nJ10pCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPm9wdGlvbnNbJ2NvbmZpZyddWydpbWFnZV9yZXNpemluZ193aWR0aCddID09IDApIC8vIGlmIHdpZHRoIG5vdCBzZXQKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5vcHRpb25zWydjb25maWcnXVsnaW1hZ2VfcmVzaXppbmdfaGVpZ2h0J10gPT0gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+b3B0aW9uc1snY29uZmlnJ11bJ2ltYWdlX3Jlc2l6aW5nX3dpZHRoJ10gPSAkc3JjV2lkdGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPm9wdGlvbnNbJ2NvbmZpZyddWydpbWFnZV9yZXNpemluZ19oZWlnaHQnXSA9ICRzcmNIZWlnaHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPm9wdGlvbnNbJ2NvbmZpZyddWydpbWFnZV9yZXNpemluZ193aWR0aCddID0gJHRoaXMtPm9wdGlvbnNbJ2NvbmZpZyddWydpbWFnZV9yZXNpemluZ19oZWlnaHQnXSokc3JjV2lkdGgvJHNyY0hlaWdodDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlaWYgKCR0aGlzLT5vcHRpb25zWydjb25maWcnXVsnaW1hZ2VfcmVzaXppbmdfaGVpZ2h0J10gPT0gMCkgLy8gaWYgaGVpZ2h0IG5vdCBzZXQKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPm9wdGlvbnNbJ2NvbmZpZyddWydpbWFnZV9yZXNpemluZ19oZWlnaHQnXSA9ICR0aGlzLT5vcHRpb25zWydjb25maWcnXVsnaW1hZ2VfcmVzaXppbmdfd2lkdGgnXSokc3JjSGVpZ2h0LyRzcmNXaWR0aDsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gbmV3IGRpbXMgYW5kIGNyZWF0ZQogICAgICAgICAgICAgICAgICAgICAgICAkc3JjV2lkdGggPSAkdGhpcy0+b3B0aW9uc1snY29uZmlnJ11bJ2ltYWdlX3Jlc2l6aW5nX3dpZHRoJ107CiAgICAgICAgICAgICAgICAgICAgICAgICRzcmNIZWlnaHQgPSAkdGhpcy0+b3B0aW9uc1snY29uZmlnJ11bJ2ltYWdlX3Jlc2l6aW5nX2hlaWdodCddOwogICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVfaW1nKCR0YXJnZXRGaWxlLCAkdGFyZ2V0RmlsZSwgJHRoaXMtPm9wdGlvbnNbJ2NvbmZpZyddWydpbWFnZV9yZXNpemluZ193aWR0aCddLCAkdGhpcy0+b3B0aW9uc1snY29uZmlnJ11bJ2ltYWdlX3Jlc2l6aW5nX2hlaWdodCddLCAkdGhpcy0+b3B0aW9uc1snY29uZmlnJ11bJ2ltYWdlX3Jlc2l6aW5nX21vZGUnXSk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAvL21heCByZXNpemluZyBsaW1pdCBjb250cm9sCiAgICAgICAgICAgICAgICAgICAgJHJlc2l6ZSA9IEZBTFNFOwogICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+b3B0aW9uc1snY29uZmlnJ11bJ2ltYWdlX21heF93aWR0aCddICE9IDAgJiYgJHNyY1dpZHRoID4gJHRoaXMtPm9wdGlvbnNbJ2NvbmZpZyddWydpbWFnZV9tYXhfd2lkdGgnXSAmJiAkdGhpcy0+b3B0aW9uc1snY29uZmlnJ11bJ2ltYWdlX3Jlc2l6aW5nX292ZXJyaWRlJ10gPT09IEZBTFNFKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHJlc2l6ZSA9IFRSVUU7CiAgICAgICAgICAgICAgICAgICAgICAgICRzcmNXaWR0aCA9ICR0aGlzLT5vcHRpb25zWydjb25maWcnXVsnaW1hZ2VfbWF4X3dpZHRoJ107CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPm9wdGlvbnNbJ2NvbmZpZyddWydpbWFnZV9tYXhfaGVpZ2h0J10gPT0gMCkgJHNyY0hlaWdodCA9ICR0aGlzLT5vcHRpb25zWydjb25maWcnXVsnaW1hZ2VfbWF4X3dpZHRoJ10qJHNyY0hlaWdodC8kc3JjV2lkdGg7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPm9wdGlvbnNbJ2NvbmZpZyddWydpbWFnZV9tYXhfaGVpZ2h0J10gIT0gMCAmJiAkc3JjSGVpZ2h0ID4gJHRoaXMtPm9wdGlvbnNbJ2NvbmZpZyddWydpbWFnZV9tYXhfaGVpZ2h0J10gJiYgJHRoaXMtPm9wdGlvbnNbJ2NvbmZpZyddWydpbWFnZV9yZXNpemluZ19vdmVycmlkZSddID09PSBGQUxTRSl7CiAgICAgICAgICAgICAgICAgICAgICAgICRyZXNpemUgPSBUUlVFOwogICAgICAgICAgICAgICAgICAgICAgICAkc3JjSGVpZ2h0ID0gJHRoaXMtPm9wdGlvbnNbJ2NvbmZpZyddWydpbWFnZV9tYXhfaGVpZ2h0J107CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPm9wdGlvbnNbJ2NvbmZpZyddWydpbWFnZV9tYXhfd2lkdGgnXSA9PSAwKSAkc3JjV2lkdGggPSAkdGhpcy0+b3B0aW9uc1snY29uZmlnJ11bJ2ltYWdlX21heF9oZWlnaHQnXSokc3JjV2lkdGgvJHNyY0hlaWdodDsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmICgkcmVzaXplKXsgY3JlYXRlX2ltZygkdGFyZ2V0RmlsZSwgJHRhcmdldEZpbGUsICRzcmNXaWR0aCwgJHNyY0hlaWdodCwgJHRoaXMtPm9wdGlvbnNbJ2NvbmZpZyddWydpbWFnZV9tYXhfbW9kZSddKTsgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZigkdGhpcy0+b3B0aW9uc1snZnRwJ10pewoKICAgICAgICAgICAgJHRoaXMtPm9wdGlvbnNbJ2Z0cCddLT5wdXQoJHRhcmdldFBhdGguICRyZXNbJ2ZpbGVzJ11bMF0tPm5hbWUsICR0YXJnZXRGaWxlLCBGVFBfQklOQVJZKTsKICAgICAgICAgICAgdW5saW5rKCR0YXJnZXRGaWxlKTsKICAgICAgICAgICAgaWYgKCRpc19pbWcpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICR0aGlzLT5vcHRpb25zWydmdHAnXS0+cHV0KCR0YXJnZXRQYXRoVGh1bWIuICRyZXNbJ2ZpbGVzJ11bMF0tPm5hbWUsICR0YXJnZXRGaWxlVGh1bWIsIEZUUF9CSU5BUlkpOwogICAgICAgICAgICAgICAgdW5saW5rKCR0YXJnZXRGaWxlVGh1bWIpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICR0aGlzLT5oZWFkKCk7CiAgICAgICAgJHRoaXMtPmJvZHkoanNvbl9lbmNvZGUoJHJlcykpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBkZWxldGUoJHByaW50X3Jlc3BvbnNlID0gdHJ1ZSkgewogICAgICAgICRmaWxlX25hbWVzID0gJHRoaXMtPmdldF9maWxlX25hbWVzX3BhcmFtcygpOwogICAgICAgIGlmIChlbXB0eSgkZmlsZV9uYW1lcykpIHsKICAgICAgICAgICAgJGZpbGVfbmFtZXMgPSBhcnJheSgkdGhpcy0+Z2V0X2ZpbGVfbmFtZV9wYXJhbSgpKTsKICAgICAgICB9CiAgICAgICAgJHJlc3BvbnNlID0gYXJyYXkoKTsKICAgICAgICBmb3JlYWNoICgkZmlsZV9uYW1lcyBhcyAkZmlsZV9uYW1lKSB7CiAgICAgICAgICAgICRmaWxlX3BhdGggPSAkdGhpcy0+Z2V0X3VwbG9hZF9wYXRoKCRmaWxlX25hbWUpOwogICAgICAgICAgICAkc3VjY2VzcyA9IGlzX2ZpbGUoJGZpbGVfcGF0aCkgJiYgJGZpbGVfbmFtZVswXSAhPT0gJy4nICYmIHVubGluaygkZmlsZV9wYXRoKTsKICAgICAgICAgICAgaWYgKCRzdWNjZXNzKSB7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkdGhpcy0+b3B0aW9uc1snaW1hZ2VfdmVyc2lvbnMnXSBhcyAkdmVyc2lvbiA9PiAkb3B0aW9ucykgewogICAgICAgICAgICAgICAgICAgIGlmICghZW1wdHkoJHZlcnNpb24pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRmaWxlID0gJHRoaXMtPmdldF91cGxvYWRfcGF0aCgkZmlsZV9uYW1lLCAkdmVyc2lvbik7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc19maWxlKCRmaWxlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5saW5rKCRmaWxlKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkcmVzcG9uc2VbJGZpbGVfbmFtZV0gPSAkc3VjY2VzczsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZW5lcmF0ZV9yZXNwb25zZSgkcmVzcG9uc2UsICRwcmludF9yZXNwb25zZSk7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGJhc2VuYW1lKCRmaWxlcGF0aCwgJHN1ZmZpeCA9IG51bGwpIHsKICAgICAgICAkc3BsaXRlZCA9IHByZWdfc3BsaXQoJy9cLy8nLCBydHJpbSAoJGZpbGVwYXRoLCAnLyAnKSk7CiAgICAgICAgcmV0dXJuIHN1YnN0cihiYXNlbmFtZSgnWCcuJHNwbGl0ZWRbY291bnQoJHNwbGl0ZWQpLTFdLCAkc3VmZml4KSwgMSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IAo=]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/LICENSE.TXT</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[VGhpcyB3b3JrIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBDcmVhdGl2ZSBDb21tb25zIEF0dHJpYnV0aW9uLU5vbkNvbW1lcmNpYWwgMy4wIFVucG9ydGVkIExpY2Vuc2UuIFRvIHZpZXcgYSBjb3B5IG9mIHRoaXMgbGljZW5zZSwgdmlzaXQgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktbmMvMy4wLyBvciBzZW5kIGEgbGV0dGVyIHRvIENyZWF0aXZlIENvbW1vbnMsIDQ0NCBDYXN0cm8gU3RyZWV0LCBTdWl0ZSA5MDAsIE1vdW50YWluIFZpZXcsIENhbGlmb3JuaWEsIDk0MDQxLCBVU0Eu]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBSZXNwb25zaXZlIEZpbGVNYW5hZ2VyIGZvciBUaW55TUNFIGFuZCBDS0VkaXRvcgoKUmVzcG9uc2l2ZSBGaWxlTWFuYWdlciBpcyBhIGZyZWUgb3Blbi1zb3VyY2UgZmlsZSBtYW5hZ2VyIG1hZGUgd2l0aCB0aGUgalF1ZXJ5IGxpYnJhcnksIENTUzMsIFBIUCBhbmQgSFRNTDUgdGhhdCBvZmZlcnMgYSBuaWNlIGFuZCBlbGVnYW50IHdheSB0byB1cGxvYWQgYW5kIGluc2VydCBmaWxlcywgaW1hZ2VzIGFuZCB2aWRlb3MuIFlvdSBjYW4gdXNlIGl0IGFzIGV4dGVybmFsIHBsdWdpbiBmb3IgVGlueU1DRSB2ZXJzaW9uIDQueC4gb3IgQ0tFZGl0b3IgYW5kIHlvdSBjYW4gYWxzbyB1c2UgaXQgYXMgYSBzdGFuZC1hbG9uZSBmaWxlIG1hbmFnZXIgdG8gbWFuYWdlIGFuZCBzZWxlY3QgZmlsZXMuIFRoZSBzY3JpcHQgYXV0b21hdGljYWxseSBjcmVhdGVzIHRodW1ibmFpbHMgb2YgaW1hZ2VzIGZvciB0aGUgcHJldmlldyBsaXN0IGFuZCBjYW4gY3JlYXRlIGFsc28gZXh0ZXJuYWwgdGh1bWJuYWlscyB0byB1c2UgaW4geW91ciBjbXMgb3Igc2l0ZS4gSXQgY2FuIGJlIGNvbmZpZ3VyZWQgZm9yIGF1dG9tYXRpYyByZXNpemluZyBvZiB1cGxvYWRlZCBpbWFnZXMgb3IgdG8gYXV0b21hdGljYWxseSBsaW1pdCB0aGUgc2l6ZS4gWW91IGNhbiBwZXJzb25hbGl6ZSB0aGUgY29uZmlndXJhdGlvbiBmb3IgZWFjaCBmb2xkZXIuIFlvdSBjYW4gc2V0IGEgc3ViZm9sZGVyIGFzIHRoZSByb290IGFuZCBjaGFuZ2UgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIGVhY2ggdXNlciwgcGFnZSBvciBGaWxlTWFuYWdlciBjYWxsLiBJcyBjb21wYXRpYmxlIHdpdGggbXVsdGktdXNlciBtb2RlIGFuZCB5b3UgY2FuIGVkaXQgaW1hZ2VzIHdpdGggYXZpYXJ5IGVkaXRvciwgc29ydGluZyBmaWxlcy4KCkRFTU8gQU5EIERPQ1VNRU5UQVRJT046IGh0dHA6Ly93d3cucmVzcG9uc2l2ZWZpbGVtYW5hZ2VyLmNvbS8KClBST0RVQ1RJT04gVkVSU0lPTiBET1dOTE9BRDogaHR0cHM6Ly9naXRodWIuY29tL3RyaXBwby9SZXNwb25zaXZlRmlsZW1hbmFnZXIvcmVsZWFzZXMKClJlbGVhc2VkIHVuZGVyIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tTm9uQ29tbWVyY2lhbCAzLjAgVW5wb3J0ZWQgTGljZW5zZS4KCkNyZWF0b3IgOiBpbmZvQGFsYmVydG9wZXJpcG9sbGkuY29tIC0gdHIxcHAwCgojIyMgTG9jYWxpemF0aW9uCgotIEFaRSBbRWxzaGFkIEFnYXlldl0gCi0gQkdSIFtTdGFuaXNsYXYgUGFuZXZdCi0gQlJBIFtwYXVsb21hbnJpcXVlXQotIENBVCBbTWFuZWwgUGXDsWFdCi0gQ0hOIFtWdSBEb2FuIFRoYW5nXQotIENSTyAKLSBDWkUgW2psdXN0aWNreV0KLSBEQU4gW01vcnRlbiBIZXNzZWxiZXJnIEdyb3ZlXQotIEVORwotIEVTUCBbUm9iZXJ0byBTYW50YW1hcmlhXSAKLSBGUkEgW01hdGhpZXUgRHVjaGFybWVdCi0gR0VSIFtPbGl2ZXIgQmV0YV0KLSBHUkMgW3Zrb3V2ZWxpc10KLSBIZWJyZXcgW3NhZ2llMjEyXQotIEhVTiBbTm92YWsgU3phYm9sY3NdCi0gSU5EIFt1cmF5b2dpXQotIElUQQotIEpQTiBbVnUgRG9hbiBUaGFuZ10KLSBMVFUgW1RvbWFzIE5vcmvFq25hc10KLSBNT04gW1R1bWVuenVsIEJhdGphcmdhbF0KLSBOTEQgW01hcnRpam4gdmFuIGRlciBNYWRlXQotIE5PUiBbUMOlbCBTY2hyb2VkZXJdCi0gUGVyc2lhbiBbd2ViMndlYiBlc2YgaXJdCi0gUE9MIFtNaWNoZWxsIEhvZHXFhF0KLSBQT1IgW1PDqXJnaW8gTGltYV0KLSBSVVMgW3Zhc3JvbWFuZF0gCi0gU0xPIFtSb21hbiDFoG92xI3DrWtdCi0gU1ZOIFtQZXRlciBCZW5rb10KLSBTV0UgW0pvbiBTdGVuXQotIFRVUiBbQWhtZWQgRmFydWsgQm9yYV0KLSBVS1IgW1NlcmdleV0KCiMjIyBEZXZlbG9wbWVudAoKSW4gb3JkZXIgdG8gd29yayBvbiBhc3NldHMsIHlvdSBuZWVkIHRvIGluc3RhbGwgW05vZGUuanNdKGh0dHA6Ly9ub2RlanMub3JnKSwgW0Jvd2VyXShodHRwOi8vYm93ZXIuaW8pIGFuZCBbZ3VscF0oaHR0cDovL2d1bHBqcy5jb20pLCB0aGVuIGNkIHRvIHlvdXIgZm9sZGVyIGFuZCBydW4gdGhlc2UgY29tbWFuZHM6CgoxLiBJbnN0YWxsIGJvd2VyIHBhY2thZ2VzIGFjY29yZGluZyB0byBib3dlci5qc29uIChkaXJlY3RvcnkgYXBwL2Fzc2V0cy9jb21wb25lbnRzKQoKICAgYGBgCiAgIGJvd2VyIGluc3RhbGwKICAgYGBgCjIuIEluc3RhbGwgZ3VscCBwYWNrYWdlcyBhY2NvcmRpbmcgdG8gZ3VscGZpbGUuanMgKGRpcmVjdG9yeSBub2RlX21vZHVsZXMpCgogICBgYGAKICAgbnBtIGluc3RhbGwKICAgYGBgCjMuIENvbXBpbGUgYXNzZXRzCgogICBgYGAKICAgZ3VscAogICBgYGAKCkd1bHAgdXNlIFtsYXJhdmVsLWVsaXhpcl0oaHR0cDovL2xhcmF2ZWwuY29tL2RvY3MvNS4wL2VsaXhpcikKIyMjIENyZWRpdHMKCi0gW0Jvb3RzdHJhcF0oaHR0cDovL3R3aXR0ZXIuZ2l0aHViLmlvL2Jvb3RzdHJhcCkKLSBbQm9vdHN0cmFwIExpZ2h0Ym94XShodHRwOi8vamJ1dHouZ2l0aHViLmlvL2Jvb3RzdHJhcC1saWdodGJveCkKLSBbRHJvcHpvbmVqc10oaHR0cDovL3d3dy5kcm9wem9uZWpzLmNvbSkKLSBbRmFuY3lib3hdKGh0dHA6Ly9mYW5jeWJveC5uZXQpCi0gW1RvdWNoU3dpcGVdKGh0dHA6Ly9sYWJzLnJhbXBpbnRlcmFjdGl2ZS5jby51ay90b3VjaFN3aXBlL2RlbW9zKQotIFtQSFAgSW1hZ2UgTWFnaWNpYW5dKGh0dHA6Ly9waHBpbWFnZW1hZ2ljaWFuLmphcnJvZG9iZXJ0by5jb20pCi0gW01pbmkgaWNvbnNdKGh0dHA6Ly93d3cuZmF0Y293LmNvbS9mcmVlLWljb25zKQotIFtKdXBsb2FkXShodHRwOi8vanVwbG9hZC5zb3VyY2Vmb3JnZS5uZXQpCi0gW0Jvb3Rib3hdKGh0dHA6Ly9ib290Ym94anMuY29tKQotIFtqUXVlcnkgY29udGV4dE1lbnVdKGh0dHA6Ly9tZWRpYWxpemUuZ2l0aHViLmlvL2pRdWVyeS1jb250ZXh0TWVudSkKLSBbQm9vdHN0cmFwLW1vZGFsXShodHRwczovL2dpdGh1Yi5jb20vanNjaHIvYm9vdHN0cmFwLW1vZGFsKQotIFtqUGxheWVyXShodHRwOi8vanBsYXllci5vcmcpCi0gW1ZpZXdlckpTXShodHRwOi8vdmlld2VyanMub3JnKQotIFtMYXp5IExvYWQgUGx1Z2luIGZvciBqUXVlcnldKGh0dHA6Ly93d3cuYXBwZWxzaWluaS5uZXQvcHJvamVjdHMvbGF6eWxvYWQpCg==]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/tinymce_plugin/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/responsive_filemanager/tinymce_plugin/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/tinymce_plugin/responsivefilemanager/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/responsive_filemanager/tinymce_plugin/responsivefilemanager/img/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/responsive_filemanager/tinymce_plugin/responsivefilemanager/img/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/tinymce_plugin/responsivefilemanager/img/insertfile.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/tinymce_plugin/responsivefilemanager/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/responsive_filemanager/tinymce_plugin/responsivefilemanager/plugin.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIHBsdWdpbi5qcwogKgogKiBDb3B5cmlnaHQsIEFsYmVydG8gUGVyaXBvbGxpCiAqIFJlbGVhc2VkIHVuZGVyIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tTm9uQ29tbWVyY2lhbCAzLjAgVW5wb3J0ZWQgTGljZW5zZS4KICoKICogQ29udHJpYnV0aW5nOiBodHRwczovL2dpdGh1Yi5jb20vdHJpcHBvL1Jlc3BvbnNpdmVGaWxlbWFuYWdlcgogKi8KCnRpbnltY2UuUGx1Z2luTWFuYWdlci5hZGQoJ3Jlc3BvbnNpdmVmaWxlbWFuYWdlcicsIGZ1bmN0aW9uKGVkaXRvcikgewoKCWZ1bmN0aW9uIHJlc3BvbnNpdmVmaWxlbWFuYWdlcl9vbk1lc3NhZ2UoZXZlbnQpewoJCWlmKGVkaXRvci5zZXR0aW5ncy5leHRlcm5hbF9maWxlbWFuYWdlcl9wYXRoLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihldmVudC5vcmlnaW4udG9Mb3dlckNhc2UoKSkgPT09IDApewoJCQlpZihldmVudC5kYXRhLnNlbmRlciA9PT0gJ3Jlc3BvbnNpdmVmaWxlbWFuYWdlcicpewoJCQkJdGlueW1jZS5hY3RpdmVFZGl0b3IuaW5zZXJ0Q29udGVudChldmVudC5kYXRhLmh0bWwpOwoJCQkJdGlueW1jZS5hY3RpdmVFZGl0b3Iud2luZG93TWFuYWdlci5jbG9zZSgpOwoKCQkJCS8vIFJlbW92ZSBldmVudCBsaXN0ZW5lciBmb3IgYSBtZXNzYWdlIGZyb20gUmVzcG9uc2l2ZUZpbGVtYW5hZ2VyCgkJCQlpZih3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcil7CgkJCQkJd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCByZXNwb25zaXZlZmlsZW1hbmFnZXJfb25NZXNzYWdlLCBmYWxzZSk7CgkJCQl9IGVsc2UgewoJCQkJCXdpbmRvdy5kZXRhY2hFdmVudCgnb25tZXNzYWdlJywgcmVzcG9uc2l2ZWZpbGVtYW5hZ2VyX29uTWVzc2FnZSk7CgkJCQl9CgkJCX0KCQl9Cgl9CiAgICAKCWZ1bmN0aW9uIG9wZW5tYW5hZ2VyKCkgewoJCXZhciB3aWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoLTIwOwoJCXZhciBoZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQtNDA7CgkJaWYod2lkdGggPiAxODAwKSB3aWR0aD0xODAwOwoJCWlmKGhlaWdodCA+IDEyMDApIGhlaWdodD0xMjAwOwoJCWlmKHdpZHRoPjYwMCl7CgkJCXZhciB3aWR0aF9yZWR1Y2UgPSAod2lkdGggLSAyMCkgJSAxMzg7CgkJCXdpZHRoID0gd2lkdGggLSB3aWR0aF9yZWR1Y2UgKyAxMDsKCQl9CgoJCWVkaXRvci5mb2N1cyh0cnVlKTsKCQl2YXIgdGl0bGU9IlJFU1BPTlNJVkUgRmlsZU1hbmFnZXIiOwoJCWlmICh0eXBlb2YgZWRpdG9yLnNldHRpbmdzLmZpbGVtYW5hZ2VyX3RpdGxlICE9PSAidW5kZWZpbmVkIiAmJiBlZGl0b3Iuc2V0dGluZ3MuZmlsZW1hbmFnZXJfdGl0bGUpIHsKCQkJdGl0bGU9ZWRpdG9yLnNldHRpbmdzLmZpbGVtYW5hZ2VyX3RpdGxlOwoJCX0KCQl2YXIgYWtleT0ia2V5IjsKCQlpZiAodHlwZW9mIGVkaXRvci5zZXR0aW5ncy5maWxlbWFuYWdlcl9hY2Nlc3Nfa2V5ICE9PSAidW5kZWZpbmVkIiAmJiBlZGl0b3Iuc2V0dGluZ3MuZmlsZW1hbmFnZXJfYWNjZXNzX2tleSkgewoJCQlha2V5PWVkaXRvci5zZXR0aW5ncy5maWxlbWFuYWdlcl9hY2Nlc3Nfa2V5OwoJCX0KCQl2YXIgc29ydF9ieT0iIjsKCQlpZiAodHlwZW9mIGVkaXRvci5zZXR0aW5ncy5maWxlbWFuYWdlcl9zb3J0X2J5ICE9PSAidW5kZWZpbmVkIiAmJiBlZGl0b3Iuc2V0dGluZ3MuZmlsZW1hbmFnZXJfc29ydF9ieSkgewoJCQlzb3J0X2J5PSImc29ydF9ieT0iK2VkaXRvci5zZXR0aW5ncy5maWxlbWFuYWdlcl9zb3J0X2J5OwoJCX0KCQl2YXIgZGVzY2VuZGluZz0iZmFsc2UiOwoJCWlmICh0eXBlb2YgZWRpdG9yLnNldHRpbmdzLmZpbGVtYW5hZ2VyX2Rlc2NlbmRpbmcgIT09ICJ1bmRlZmluZWQiICYmIGVkaXRvci5zZXR0aW5ncy5maWxlbWFuYWdlcl9kZXNjZW5kaW5nKSB7CgkJCWRlc2NlbmRpbmc9ZWRpdG9yLnNldHRpbmdzLmZpbGVtYW5hZ2VyX2Rlc2NlbmRpbmc7CgkJfQoJCXZhciBmbGRyPSIiOwoJCWlmICh0eXBlb2YgZWRpdG9yLnNldHRpbmdzLmZpbGVtYW5hZ2VyX3N1YmZvbGRlciAhPT0gInVuZGVmaW5lZCIgJiYgZWRpdG9yLnNldHRpbmdzLmZpbGVtYW5hZ2VyX3N1YmZvbGRlcikgewoJCQlmbGRyPSImZmxkcj0iK2VkaXRvci5zZXR0aW5ncy5maWxlbWFuYWdlcl9zdWJmb2xkZXI7CgkJfQoJCXZhciBjcm9zc2RvbWFpbj0iIjsKCQlpZiAodHlwZW9mIGVkaXRvci5zZXR0aW5ncy5maWxlbWFuYWdlcl9jcm9zc2RvbWFpbiAhPT0gInVuZGVmaW5lZCIgJiYgZWRpdG9yLnNldHRpbmdzLmZpbGVtYW5hZ2VyX2Nyb3NzZG9tYWluKSB7CgkJCWNyb3NzZG9tYWluPSImY3Jvc3Nkb21haW49MSI7CgoJCQkvLyBBZGQgaGFuZGxlciBmb3IgYSBtZXNzYWdlIGZyb20gUmVzcG9uc2l2ZUZpbGVtYW5hZ2VyCgkJCWlmKHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKXsKCQkJCXdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgcmVzcG9uc2l2ZWZpbGVtYW5hZ2VyX29uTWVzc2FnZSwgZmFsc2UpOwoJCQl9IGVsc2UgewoJCQkJd2luZG93LmF0dGFjaEV2ZW50KCdvbm1lc3NhZ2UnLCByZXNwb25zaXZlZmlsZW1hbmFnZXJfb25NZXNzYWdlKTsKCQkJfQoJCX0KCgkJY29uc3QgZmlsZVVybCA9IGVkaXRvci5zZXR0aW5ncy5leHRlcm5hbF9maWxlbWFuYWdlcl9wYXRoKydkaWFsb2cucGhwP3R5cGU9NCZkZXNjZW5kaW5nPScrZGVzY2VuZGluZytzb3J0X2J5K2ZsZHIrY3Jvc3Nkb21haW4rJyZsYW5nPScrZWRpdG9yLnNldHRpbmdzLmxhbmd1YWdlKycmYWtleT0nK2FrZXk7CgoJCWlmICh0aW55bWNlLm1ham9yVmVyc2lvbiA8IDUpIHsKCQkJd2luID0gZWRpdG9yLndpbmRvd01hbmFnZXIub3Blbih7CgkJCQl0aXRsZTogdGl0bGUsCgkJCQlmaWxlOiBmaWxlVXJsLAoJCQkJd2lkdGg6IHdpZHRoLAoJCQkJaGVpZ2h0OiBoZWlnaHQsCgkJCQlpbmxpbmU6IDEsCgkJCQlyZXNpemFibGU6IHRydWUsCgkJCQltYXhpbWl6YWJsZTogdHJ1ZQoJCQl9KTsKCQl9IGVsc2UgewoJCQl3aW4gPSBlZGl0b3Iud2luZG93TWFuYWdlci5vcGVuVXJsKHsKCQkJCXRpdGxlOiB0aXRsZSwKCQkJCXVybDogZmlsZVVybCwKCQkJCXdpZHRoOiB3aWR0aCwKCQkJCWhlaWdodDogaGVpZ2h0LAoJCQkJaW5saW5lOiAxLAoJCQkJcmVzaXphYmxlOiB0cnVlLAoJCQkJbWF4aW1pemFibGU6IHRydWUKCQkJfSk7CgkJfQoJfQoKCWlmICh0aW55bWNlLm1ham9yVmVyc2lvbiA8IDUpIHsKCQllZGl0b3IuYWRkQnV0dG9uKCdyZXNwb25zaXZlZmlsZW1hbmFnZXInLCB7CgkJCWljb246ICdicm93c2UnLAoJCQl0b29sdGlwOiAnSW5zZXJ0IGZpbGUnLAoJCQlzaG9ydGN1dDogJ0N0cmwrRScsCgkJCW9uQ2xpY2s6IG9wZW5tYW5hZ2VyCgkJfSk7CgoJCWVkaXRvci5hZGRTaG9ydGN1dCgnQ3RybCtFJywgJycsIG9wZW5tYW5hZ2VyKTsKCgkJZWRpdG9yLmFkZE1lbnVJdGVtKCdyZXNwb25zaXZlZmlsZW1hbmFnZXInLCB7CgkJCWljb246ICdicm93c2UnLAoJCQl0ZXh0OiAnSW5zZXJ0IGZpbGUnLAoJCQlzaG9ydGN1dDogJ0N0cmwrRScsCgkJCW9uQ2xpY2s6IG9wZW5tYW5hZ2VyLAoJCQljb250ZXh0OiAnaW5zZXJ0JwoJCX0pOwoJfSBlbHNlIHsKCQllZGl0b3IudWkucmVnaXN0cnkuYWRkQnV0dG9uKCdyZXNwb25zaXZlZmlsZW1hbmFnZXInLCB7CgkJCWljb246ICdicm93c2UnLAoJCQl0b29sdGlwOiAnSW5zZXJ0IGZpbGUnLAoJCQlzaG9ydGN1dDogJ0N0cmwrRScsCgkJCW9uQWN0aW9uOiBvcGVubWFuYWdlcgoJCX0pOwoKCQllZGl0b3IuYWRkU2hvcnRjdXQoJ0N0cmwrRScsICcnLCBvcGVubWFuYWdlcik7CgoJCWVkaXRvci51aS5yZWdpc3RyeS5hZGRNZW51SXRlbSgncmVzcG9uc2l2ZWZpbGVtYW5hZ2VyJywgewoJCQlpY29uOiAnYnJvd3NlJywKCQkJdGV4dDogJ0luc2VydCBmaWxlJywKCQkJc2hvcnRjdXQ6ICdDdHJsK0UnLAoJCQlvbkFjdGlvbjogb3Blbm1hbmFnZXIsCgkJCWNvbnRleHQ6ICdpbnNlcnQnCgkJfSk7Cgl9Cn0pOwo=]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/admin_editprofile.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CjxzY3JpcHQgc3JjPSJ7JG1vZC0+Z2V0TW9kdWxlVVJMUGF0aCgpfS9saWIvanMvYXV0b3NpemUubWluLmpzIj48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsKCQl0YSA9ICQoJ3RleHRhcmVhJyk7CgkJYXV0b3NpemUodGEpOwoKCQkkKCcudGlueW1jZS1wcm9maWxlLWVkaXQgI3BhZ2VfdGFicyA+IGRpdicpLm1vdXNlZG93bihmdW5jdGlvbigpewoJCQlhdXRvc2l6ZS51cGRhdGUodGEpOwoJCX0pOwoJfSk7Cjwvc2NyaXB0PgoKe2Z1bmN0aW9uIG5hbWU9J2xhYmVsJ30KCTxwIGNsYXNzPSJwYWdldGV4dCI+CgkJPGxhYmVsIHtpZiBpc3NldCgkZm9yKX1mb3I9InskZm9yfSJ7L2lmfT57JG1vZC0+TGFuZygkdGV4dCl9PC9sYWJlbD4KCQl7aWYgaXNzZXQoJGhlbHApICYmICRoZWxwfQoJCQl7Y21zX2hlbHAgdGl0bGU9JG1vZC0+TGFuZygkdGV4dCkga2V5PSJoZWxwX3skaGVscH0ifQoJCXsvaWZ9CgkJe2lmICFlbXB0eSgkZG9jdW1lbnRhdGlvbil9CgkJCSZuYnNwOyg8YSBocmVmPSJ7JGRvY3VtZW50YXRpb259IiB0YXJnZXQ9Il9ibGFuayI+eyRtb2QtPkxhbmcoJ2RvY3VtZW50YXRpb24nKX08L2E+KQoJCXsvaWZ9Cgk8L3A+CnsvZnVuY3Rpb259Cgp7ZnVuY3Rpb24gbmFtZT0nc3VibWl0X2Zvcm1fYnV0dG9ucyd9Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPgoJCQk8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JGFjdGlvbmlkfXN1Ym1pdCIgdmFsdWU9InskbW9kLT5MYW5nKCdzdWJtaXQnKX0iIGNsYXNzPSJwYWdlYnV0dG9uIiAvPgoJCQk8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JGFjdGlvbmlkfWNhbmNlbCIgdmFsdWU9InskbW9kLT5MYW5nKCdjYW5jZWwnKX0iIGNsYXNzPSJwYWdlYnV0dG9uIiAvPgoJCQk8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JGFjdGlvbmlkfWFwcGx5IiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ2FwcGx5Jyl9IiBjbGFzcz0icGFnZWJ1dHRvbiIgLz4KCQk8L3A+Cgk8L2Rpdj4Key9mdW5jdGlvbn0KCntmdW5jdGlvbiBuYW1lPSdjaGVja2JveCcgc2ltcGxlPWZhbHNlfQoJe2lmICEkc2ltcGxlfQoJCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJCXtsYWJlbCB0ZXh0PSRmbGRfbmFtZSBmb3I9JGZsZF9uYW1lfQoJCQk8cCBjbGFzcz0icGFnZWlucHV0Ij4KCQkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InskYWN0aW9uaWR9eyRmbGRfbmFtZX0iIHZhbHVlPSIwIj4KCQkJCTxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9InskZmxkX25hbWV9IiBuYW1lPSJ7JGFjdGlvbmlkfXskZmxkX25hbWV9IiB2YWx1ZT0iMSIge2lmICRwcm9maWxlLT57JGZsZF9uYW1lfX1jaGVja2VkPSJjaGVja2VkInsvaWZ9PgoJCQk8L3A+CgkJPC9kaXY+Cgl7ZWxzZX0geyogU2ltcGxlIG9uZWxpbmUgKn0KCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ7JGFjdGlvbmlkfXskZmxkX25hbWV9IiB2YWx1ZT0iMCI+CgkJPGxhYmVsPgoJCQk8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJ7JGZsZF9uYW1lfSIgbmFtZT0ieyRhY3Rpb25pZH17JGZsZF9uYW1lfSIgdmFsdWU9IjEiIHtpZiAkcHJvZmlsZS0+eyRmbGRfbmFtZX19Y2hlY2tlZD0iY2hlY2tlZCJ7L2lmfT4geyRtb2QtPkxhbmcoJGZsZF9uYW1lKX0KCQk8L2xhYmVsPjxicj4KCXsvaWZ9CnsvZnVuY3Rpb259Cgp7ZnVuY3Rpb24gbmFtZT0ndGV4dF9pbnB1dCd9CgoJe2lmICFpc3NldCgkaGVscCl9CgkJeyRoZWxwPWZhbHNlfQoJey9pZn0KCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCXtpZiBpc3NldCgkbGFiZWxfbmFtZSl9CgkJCXtsYWJlbCB0ZXh0PSRsYWJlbF9uYW1lIGZvcj0kZmxkX25hbWUgaGVscD0kaGVscH0KCQl7ZWxzZX0KCQkJe2xhYmVsIHRleHQ9JGZsZF9uYW1lIGZvcj0kZmxkX25hbWUgaGVscD0kaGVscH0KCQl7L2lmfQoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPgoJCQk8aW5wdXQgbmFtZT0neyRhY3Rpb25pZH17JGZsZF9uYW1lfScgdmFsdWU9J3skcHJvZmlsZS0+JGZsZF9uYW1lfScgaWQ9J3skZmxkX25hbWV9JyB7aWYgaXNzZXQoJHNpemUpfXNpemU9Inskc2l6ZX17L2lmfSI+IHtpZiBpc3NldCgkZXh0KX17JGV4dH17L2lmfQoJCTwvcD4KCTwvZGl2Pgp7L2Z1bmN0aW9ufQoKe2Z1bmN0aW9uIG5hbWU9J3RleHRhcmVhJ30KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJe2lmICFpc3NldCgkdGV4dCl9CgkJCXskdGV4dD0kZmxkX25hbWV9CgkJey9pZn0KCQl7aWYgIWVtcHR5KCRkb2N1bWVudGF0aW9uKX0KCQkJe2xhYmVsIHRleHQ9JHRleHQgZm9yPSRmbGRfbmFtZSBkb2N1bWVudGF0aW9uPSRkb2N1bWVudGF0aW9ufQoJCXtlbHNlaWYgIWlzc2V0KCRub2xhYmVsKX0KCQkJe2xhYmVsIHRleHQ9JHRleHQgZm9yPSRmbGRfbmFtZX0KCQl7L2lmfQoJCXtpZiBpc3NldCgkc3VidGV4dCl9CgkJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPgoJCQkJeyRtb2QtPkxhbmcoJHN1YnRleHQpfQoJCQk8L3A+CgkJey9pZn0KCgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+CgkJCXtjbXNfdGV4dGFyZWEgbmFtZT0ieyRhY3Rpb25pZH17JGZsZF9uYW1lfSIgdmFsdWU9JHByb2ZpbGUtPnskZmxkX25hbWV9IHJvd3M9MX0KCQkJe2lmIGlzc2V0KCRzdWJoZWxwKX0KCQkJCTxicj57JG1vZC0+TGFuZygnc3ViaGVscF8nfGNhdDokc3ViaGVscCl9CgkJCXsvaWZ9CgkJPC9wPgoJPC9kaXY+CnsvZnVuY3Rpb259CgoKCjxkaXYgY2xhc3M9InRpbnltY2UtcHJvZmlsZS1lZGl0Ij4KCgk8aDM+e3N0cmlwfQoJCXtpZiAkbW9kZSBlcSAnYWRkJ30KCQkJeyRtb2QtPkxhbmcoJ25ld19wcm9maWxlJyl9CgkJe2Vsc2V9CgkJCXskbW9kLT5MYW5nKCdlZGl0X3Byb2ZpbGUnKX06IHskcHJvZmlsZS0+bmFtZX0mbmJzcDsoSUQgeyRwcm9maWxlLT5pZF9wcm9maWxlfSkKCQl7L2lmfQoJey9zdHJpcH08L2gzPgoKCgl7Zm9ybV9zdGFydH0KCgl7KiBVc2luZyBhbiBleHRlcm5hbCBIVE1MIGRlbW8gZmlsZSBzbyBkZXNpZ25lciBjYW4gb3ZlcnJpZGUgaXQgaW4gYXNzZXRzL21vZHVsZV9jdXN0b20gLSB0aGlzIGlzIG9ubHkgZm9yIHRoZSBmaXJzdCBkZWZhdWx0IGNvbnRlbnQgLSBhZnRlciBzYXZpbmcsIHRoaXMgaXMgbWFuYWdlZCBieSBhIGNtcyBwcmVmZXJlbmNlICp9Cgl7aWYgJHBsYXlncm91bmRfY29udGVudCBlcSAnJ30KCQl7aW5jbHVkZSBmaWxlPSdtb2R1bGVfZmlsZV90cGw6VGlueU1DRTthZG1pbl9leGFtcGxlLnRwbCcgYXNzaWduPXBsYXlncm91bmRfY29udGVudH0KCXsvaWZ9Cgl7Y21zX3RleHRhcmVhIGZvcmNlbW9kdWxlPSdUaW55TUNFJyBuYW1lPSJ7JGFjdGlvbmlkfXBsYXlncm91bmRfY29udGVudCIgaWQ9J3RpbnltY2VfZXhhbXBsZScgY2xhc3M9J1RpbnlNQ0UnIHZhbHVlPSRwbGF5Z3JvdW5kX2NvbnRlbnR9CgoKCgoKCXsqIEFjdGl2ZSB0YWIgKn0KCXskYWN0aXZlX3RhYj0nZ2VuZXJhbCd9Cgl7aWYgaXNzZXQoJGFjdGlvbnBhcmFtc1snYWN0aXZlX3RhYiddKX0KCQl7JGFjdGl2ZV90YWI9JGFjdGlvbnBhcmFtc1snYWN0aXZlX3RhYiddfQoJey9pZn0KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InskYWN0aW9uaWR9YWN0aXZlX3RhYiIgaWQ9ImFjdGl2ZV90YWIiIHZhbHVlPSJ7JGFjdGl2ZV90YWJ9Ij4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQkkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewoJCQkkKCcjcGFnZV90YWJzID4gZGl2JykubW91c2Vkb3duKGZ1bmN0aW9uKCl7CgkJCQl0YWJfaWQgPSAkKHRoaXMpLmF0dHIoJ2lkJyk7CgkJCQkkKCcjYWN0aXZlX3RhYicpLnZhbCh0YWJfaWQpOwoJCQl9KTsKCQl9KTsKCTwvc2NyaXB0PgoKCXtzdWJtaXRfZm9ybV9idXR0b25zfQoKCXtpZiAkcHJvZmlsZS0+aWRfcHJvZmlsZX0KCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ7JGFjdGlvbmlkfWlkX3Byb2ZpbGUiIHZhbHVlPSJ7JHByb2ZpbGUtPmlkX3Byb2ZpbGV9Ij4KCXsvaWZ9CgoKCgoKCQl7dGFiX2hlYWRlciBuYW1lPSdnZW5lcmFsJyBsYWJlbD0kbW9kLT5MYW5nKCdnZW5lcmFsJykgYWN0aXZlPSRhY3RpdmVfdGFifQoJCXt0YWJfaGVhZGVyIG5hbWU9J3BsdWdpbnMnIGxhYmVsPSRtb2QtPkxhbmcoJ3BsdWdpbnMnKSBhY3RpdmU9JGFjdGl2ZV90YWJ9CgkJe3RhYl9oZWFkZXIgbmFtZT0nbWVudWJhcicgbGFiZWw9JG1vZC0+TGFuZygnbWVudWJhcicpIGFjdGl2ZT0kYWN0aXZlX3RhYn0KCQl7dGFiX2hlYWRlciBuYW1lPSd0b29sYmFyJyBsYWJlbD0kbW9kLT5MYW5nKCd0b29sYmFyJykgYWN0aXZlPSRhY3RpdmVfdGFifQoJCXt0YWJfaGVhZGVyIG5hbWU9J2NvbnRleHRtZW51JyBsYWJlbD0kbW9kLT5MYW5nKCdjb250ZXh0bWVudScpIGFjdGl2ZT0kYWN0aXZlX3RhYn0KCQl7dGFiX2hlYWRlciBuYW1lPSdjc3MnIGxhYmVsPSdDU1MnIGFjdGl2ZT0kYWN0aXZlX3RhYn0KCQl7dGFiX2hlYWRlciBuYW1lPSdmaWxlbWFuYWdlcicgbGFiZWw9JG1vZC0+TGFuZygnZmlsZW1hbmFnZXInKSBhY3RpdmU9JGFjdGl2ZV90YWJ9CgkJe3RhYl9oZWFkZXIgbmFtZT0ndXNlcnNfZ3JvdXBzJyBsYWJlbD0kbW9kLT5MYW5nKCd1c2VyZ3JvdXBzJykgYWN0aXZlPSRhY3RpdmVfdGFifQoJCXt0YWJfaGVhZGVyIG5hbWU9J3RlbXBsYXRlcycgbGFiZWw9JG1vZC0+TGFuZygndGVtcGxhdGVzJykgYWN0aXZlPSRhY3RpdmVfdGFifQoKCgkJeyogR0VORVJBTCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICp9CgkJe3RhYl9zdGFydCBuYW1lPSdnZW5lcmFsJ30KCQkJe3RleHRfaW5wdXQgZmxkX25hbWU9J25hbWUnIGxhYmVsX25hbWU9J3Byb2ZpbGVfbmFtZSd9CgoJCQk8aHI+CgkJCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJCQl7bGFiZWwgdGV4dD0ncmVzaXplJyBmb3I9J3Jlc2l6ZSd9CgkJCQk8cCBjbGFzcz0icGFnZWlucHV0Ij4KCQkJCQk8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9InskYWN0aW9uaWR9cmVzaXplIiBpZD0icmVzaXplXzAiIHZhbHVlPSIwIiB7aWYgISRwcm9maWxlLT5yZXNpemV9IGNoZWNrZWQ9ImNoZWNrZWQiey9pZn0+CgkJCQkJPGxhYmVsIGZvcj0icmVzaXplXzAiPnskbW9kLT5MYW5nKCdyZXNpemVfbm8nKX08L2xhYmVsPjxicj4KCgkJCQkJPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJ7JGFjdGlvbmlkfXJlc2l6ZSIgaWQ9InJlc2l6ZV8xIiB2YWx1ZT0iMSIge2lmICRwcm9maWxlLT5yZXNpemUgZXEgJzEnfSBjaGVja2VkPSJjaGVja2VkInsvaWZ9PgoJCQkJCTxsYWJlbCBmb3I9InJlc2l6ZV8xIj57JG1vZC0+TGFuZygncmVzaXplX3ZlcnRpY2FsJyl9PC9sYWJlbD48YnI+CgoJCQkJCTxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0ieyRhY3Rpb25pZH1yZXNpemUiIGlkPSJyZXNpemVfYm90aCIgdmFsdWU9ImJvdGgiIHtpZiAkcHJvZmlsZS0+cmVzaXplIGVxICdib3RoJ30gY2hlY2tlZD0iY2hlY2tlZCJ7L2lmfT4KCQkJCQk8bGFiZWwgZm9yPSJyZXNpemVfYm90aCI+eyRtb2QtPkxhbmcoJ3Jlc2l6ZV9ib3RoJyl9PC9sYWJlbD4KCQkJCTwvcD4KCQkJPC9kaXY+CgoJCQl7Y2hlY2tib3ggZmxkX25hbWU9J2F1dG9yZXNpemUnIGhlbHA9J2F1dG9yZXNpemUnfQoKCQkJPGhyPgoJCQl7Y2hlY2tib3ggZmxkX25hbWU9J3Nob3dfc3RhdHVzYmFyJyBoZWxwPSdzaG93X3N0YXR1c2Jhcid9CgoJCQk8aHI+CgkJCXtjaGVja2JveCBmbGRfbmFtZT0nZm9yY2VkX3Jvb3RfYmxvY2snIGhlbHA9J2ZvcmNlZF9yb290X2Jsb2NrJyBkb2N1bWVudGF0aW9uPSdodHRwczovL3d3dy50aW55bWNlLmNvbS9kb2NzL2NvbmZpZ3VyZS9jb250ZW50LWZpbHRlcmluZy8jZm9yY2VkX3Jvb3RfYmxvY2snfQoKCgoJCXsqIFBMVUdJTlMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqfQoJCXt0YWJfc3RhcnQgbmFtZT0ncGx1Z2lucyd9CgkJCXt0ZXh0YXJlYSBmbGRfbmFtZT0ncGx1Z2lucycgZG9jdW1lbnRhdGlvbj0naHR0cHM6Ly93d3cudGlueW1jZS5jb20vZG9jcy9wbHVnaW5zLycgaGVscD0ncGx1Z2lucyd9CgoJCQl7Y2hlY2tib3ggZmxkX25hbWU9J2VuYWJsZV9saW5rZXInIGhlbHA9J2Ntc21zX2xpbmtlcid9CgoKCQkJeyogRXh0ZXJuYWwgbW9kdWxlcyBsaXN0ICp9CgkJCXtpZiBpc3NldCgkZXh0ZXJuYWxfbW9kdWxlcykgYW5kICFlbXB0eSgkZXh0ZXJuYWxfbW9kdWxlcyl9CgkJCQk8aHI+CgoJCQkJe2xhYmVsIHRleHQ9J2V4dGVybmFsX21vZHVsZXMnIGhlbHA9J2V4dGVybmFsX21vZHVsZXMnfQoKCQkJCXtmb3JlYWNoICRleHRlcm5hbF9tb2R1bGVzIGFzICRtb2RfbmFtZT0+JG1vZF9pbmZvc30KCQkJCQk8bGFiZWw+CgkJCQkJCTxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ieyRhY3Rpb25pZH1leHRlcm5hbF9tb2R1bGVzW10iIHZhbHVlPSJ7JG1vZF9uYW1lfSIge2lmIGlzX2FycmF5KCRwcm9maWxlLT5leHRlcm5hbF9tb2R1bGVzKSBhbmQgaW5fYXJyYXkoJG1vZF9uYW1lLCAkcHJvZmlsZS0+ZXh0ZXJuYWxfbW9kdWxlcyl9Y2hlY2tlZD0iY2hlY2tlZCJ7L2lmfT4geyRtb2RfaW5mb3MuZnJpZW5kbHluYW1lfSAtIHskbW9kLT5MYW5nKCdidXR0b25fbmFtZScpfTogPHN0cm9uZz57JG1vZF9pbmZvcy5idXR0b25fbmFtZX08L3N0cm9uZz4KCQkJCQk8L2xhYmVsPgoJCQkJCTxicj4KCQkJCXsvZm9yZWFjaH0KCgkJCQl7Y2hlY2tib3ggZmxkX25hbWU9J2V4dGVybmFsX21vZHVsZXNfc2hvd19tZW51dGV4dCd9CgoJCQl7L2lmfQoKCQkJPGhyPgoKCQkJeyogQ3VzdG9tIGRyb3Bkb3duICp9CgkJCXtjaGVja2JveCBmbGRfbmFtZT0nZW5hYmxlX2N1c3RvbV9kcm9wZG93bicgaGVscD0nZW5hYmxlX2N1c3RvbV9kcm9wZG93bid9CgkJCXt0ZXh0X2lucHV0IGZsZF9uYW1lPSdjdXN0b21fZHJvcGRvd25fdGl0bGUnIGxhYmVsX25hbWU9J2N1c3RvbV9kcm9wZG93bl90aXRsZSd9CgkJCXt0ZXh0YXJlYSBmbGRfbmFtZT0nY3VzdG9tX2Ryb3Bkb3duJyBzdWJoZWxwPSdjdXN0b21fZHJvcGRvd24nfQoKCQkJPGhyPgoKCQkJe2xhYmVsIHRleHQ9J2ltYWdlX3BsdWdpbid9CgkJCXtjaGVja2JveCBmbGRfbmFtZT0naW1hZ2VfYWR2dGFiJyBzaW1wbGU9dHJ1ZX0KCgoKCgoJCXsqIE1FTlUgQkFSICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKn0KCQl7dGFiX3N0YXJ0IG5hbWU9J21lbnViYXInfQoJCQl7Y2hlY2tib3ggZmxkX25hbWU9J3Nob3dfbWVudWJhcid9CgkJCXt0ZXh0YXJlYSBmbGRfbmFtZT0nbWVudWJhcicgZG9jdW1lbnRhdGlvbj0naHR0cHM6Ly93d3cudGlueW1jZS5jb20vZG9jcy9hZHZhbmNlZC9lZGl0b3ItY29udHJvbC1pZGVudGlmaWVycy8nIGhlbHA9J21lbnViYXInfQoKCQkJe2xhYmVsIHRleHQ9J2FkdmFuY2VkX21lbnUnIGhlbHA9J2FkdmFuY2VkX21lbnUnfQoKCQkJe2NoZWNrYm94IGZsZF9uYW1lPSd1c2VfYWR2YW5jZWRfbWVudScgaGVscD0ndXNlX2F2YW5jZWRfbWVudScgc2ltcGxlPXRydWV9CgkJCXt0ZXh0YXJlYSBmbGRfbmFtZT0nYWR2YW5jZWRfbWVudScgbm9sYWJlbD0xfQoKCgoJCXsqIFRPT0xCQVIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqfQoJCXt0YWJfc3RhcnQgbmFtZT0ndG9vbGJhcid9CgkJCXtjaGVja2JveCBmbGRfbmFtZT0nc2hvd190b29sYmFyJyBoZWxwPSd0b29sYmFyJ30KCQkJe3RleHRhcmVhIGZsZF9uYW1lPSd0b29sYmFyMScgZG9jdW1lbnRhdGlvbj0naHR0cHM6Ly93d3cudGlueW1jZS5jb20vZG9jcy9hZHZhbmNlZC9lZGl0b3ItY29udHJvbC1pZGVudGlmaWVycy8nfQoJCQl7dGV4dGFyZWEgZmxkX25hbWU9J3Rvb2xiYXIyJyBkb2N1bWVudGF0aW9uPSdodHRwczovL3d3dy50aW55bWNlLmNvbS9kb2NzL2FkdmFuY2VkL2VkaXRvci1jb250cm9sLWlkZW50aWZpZXJzLycgc3ViaGVscD0ndG9vbGJhcid9CgoJCQl7aWYgaXNzZXQoJGV4dGVybmFsX21vZHVsZXMpIGFuZCBpc19hcnJheSgkcHJvZmlsZS0+ZXh0ZXJuYWxfbW9kdWxlcyl9CgkJCQk8cCBjbGFzcz0icGFnZWlucHV0Ij4KCQkJCQl7JG1vZC0+TGFuZygnZXh0ZXJuYWxfbW9kdWxlcycpfToKCQkJCQl7Zm9yZWFjaCAkcHJvZmlsZS0+ZXh0ZXJuYWxfbW9kdWxlcyBhcyAkZXh0X21vZHVsZV9sb2FkZWR9CgkJCQkJCTxlbT57JGV4dGVybmFsX21vZHVsZXNbJGV4dF9tb2R1bGVfbG9hZGVkXVsnYnV0dG9uX25hbWUnXX08L2VtPgoJCQkJCXsvZm9yZWFjaH0KCQkJCTwvcD4KCQkJey9pZn0KCgkJCTxocj4KCgkJCXsqIEJsb2NrIGZvcm1hdHMgKn0KCQkJe2NoZWNrYm94IGZsZF9uYW1lPSd1c2VfY3VzdG9tX2Jsb2NrX2Zvcm1hdHMnIGhlbHA9J3VzZV9jdXN0b21fYmxvY2tfZm9ybWF0cyd9CgkJCXt0ZXh0YXJlYSBmbGRfbmFtZT0nYmxvY2tfZm9ybWF0cycgc3ViaGVscD0nY3VzdG9tX2Jsb2NrX2Zvcm1hdHMnfQoKCgoKCgkJeyogQ09OVEVYVE1FTlUgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqfQoJCXt0YWJfc3RhcnQgbmFtZT0nY29udGV4dG1lbnUnfQoKCQkJe3RleHRhcmVhIGZsZF9uYW1lPSdjb250ZXh0bWVudScgdGV4dD0nY29udGV4dG1lbnVfY29udGVudCcgZG9jdW1lbnRhdGlvbj0naHR0cHM6Ly93d3cudGlueS5jbG91ZC9kb2NzL2NvbmZpZ3VyZS9lZGl0b3ItYXBwZWFyYW5jZS8jY29udGV4dG1lbnUnIHN1YmhlbHA9J2NvbnRleHRtZW51X2NvbnRlbnQnfQoKCgkJeyogQ1NTICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKn0KCQl7dGFiX3N0YXJ0IG5hbWU9J2Nzcyd9CgkJCTxmaWVsZHNldD4KCQkJCTxsZWdlbmQ+eyRtb2QtPkxhbmcoJ2Nzc19lZGl0b3JfcmVuZGVyJyl9PC9sZWdlbmQ+CgkJCQk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCQkJCXtsYWJlbCB0ZXh0PSdkZXNpZ25fY3NzJyBmb3I9J2lkX2Rlc2lnbicgaGVscD0nZGVzaWduX2Nzcyd9CgkJCQkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+CgkJCQkJCTxzZWxlY3QgbmFtZT0neyRhY3Rpb25pZH1pZF9kZXNpZ24nIGlkPSJpZF9kZXNpZ24iPgoJCQkJCQkJPG9wdGlvbiB2YWx1ZT0iMCIge2lmICRwcm9maWxlLT5pZF9kZXNpZ24gZXEgMH1zZWxlY3RlZD0ic2VsZWN0ZWQiey9pZn0+CgkJCQkJCQkJLSB7JG1vZC0+TGFuZygnbm9fZGVzaWduX2xpbmtlZCcpfSAtCgkJCQkJCQk8L29wdGlvbj4KCQkJCQkJCXtmb3JlYWNoICRkZXNpZ25zIGFzICRkZXNpZ259CgkJCQkJCQkJPG9wdGlvbiB2YWx1ZT0ieyRkZXNpZ24tPmdldF9pZCgpfSIge2lmICRkZXNpZ24tPmdldF9pZCgpIGVxICRwcm9maWxlLT5pZF9kZXNpZ259c2VsZWN0ZWQ9InNlbGVjdGVkInsvaWZ9PgoJCQkJCQkJCQl7JGRlc2lnbi0+Z2V0X25hbWUoKX0KCQkJCQkJCQk8L29wdGlvbj4KCQkJCQkJCXsvZm9yZWFjaH0KCQkJCQkJPC9zZWxlY3Q+CgkJCQkJPC9wPgoJCQkJPC9kaXY+CgkJCQkKCQkJCXtpZiBpc3NldCgkY21zbXNfdmVyc2lvbl8yMykgYW5kICRjbXNtc192ZXJzaW9uXzIzfQoJCQkJCXt0ZXh0YXJlYSBmbGRfbmFtZT0nY3NzX2ZpbGVzJyBoZWxwPSdjc3NfZmlsZXMnIHN1YnRleHQ9J2Nzc19maWxlc19pbmZvJ30KCQkJCXsvaWZ9CgkJCQoJCQk8L2ZpZWxkc2V0PgoKCQkJPGZpZWxkc2V0PgoJCQkJe3RleHRhcmVhIGZsZF9uYW1lPSdzdHlsZV9mb3JtYXRzJyBzdWJ0ZXh0PSdzdHlsZV9mb3JtYXRzX2luZm8nIGhlbHA9J3N0eWxlX2Zvcm1hdHMnIGRvY3VtZW50YXRpb249J2h0dHBzOi8vd3d3LnRpbnltY2UuY29tL2RvY3MvY29uZmlndXJlL2NvbnRlbnQtZm9ybWF0dGluZy8jc3R5bGVfZm9ybWF0cyd9CgkJCTwvZmllbGRzZXQ+CgoJCQk8ZmllbGRzZXQ+CgkJCQk8bGVnZW5kPnskbW9kLT5MYW5nKCdjc3NfY2xhc3NlcycpfTwvbGVnZW5kPgoKCQkJCTxkaXYgY2xhc3M9ImNfZnVsbCBjZiI+CgkJCQkJPGRpdiBjbGFzcz0iZ3JpZF82Ij4KCQkJCQkJe3RleHRhcmVhIGZsZF9uYW1lPSdsaW5rX2NsYXNzZXMnIHN1YnRleHQ9J2xpbmtfY2xhc3Nlc19pbmZvJyBoZWxwPSdsaW5rX2NsYXNzZXMnfQoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImdyaWRfNiI+CgkJCQkJCXt0ZXh0YXJlYSBmbGRfbmFtZT0naW1hZ2VfY2xhc3Nlcycgc3VidGV4dD0naW1hZ2VfY2xhc3Nlc19pbmZvJyBoZWxwPSdpbWFnZV9jbGFzc2VzJ30KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQk8L2ZpZWxkc2V0PgoKCgoKCQl7KiBGSUxFTUFOQUdFUiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICp9CgkJe3RhYl9zdGFydCBuYW1lPSdmaWxlbWFuYWdlcid9CgkJCXtjaGVja2JveCBmbGRfbmFtZT0nZmlsZW1hbmFnZXJfdXNlJyBoZWxwPSdmaWxlbWFuYWdlcl91c2UnfQoKCQkJe2NoZWNrYm94IGZsZF9uYW1lPSdyZWxhdGl2ZV91cmxzJyBoZWxwPSdyZWxhdGl2ZV91cmxzJ30KCgkJCXsqIEZpbGVtYW5hZ2VyIG9wdGlvbnMgKn0KCQkJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQkJCTxmaWVsZHNldD4KCQkJCQk8bGVnZW5kPnskbW9kLT5MYW5nKCdmaWxlbWFuYWdlcl9vcHRpb25zJyl9PC9sZWdlbmQ+CgoJCQkJCTxkaXYgY2xhc3M9ImNfZnVsbCBjZiI+CgkJCQkJCTxkaXYgY2xhc3M9ImdyaWRfNiI+CgkJCQkJCQl7Y2hlY2tib3ggZmxkX25hbWU9J2ZpbGVtYW5hZ2VyX2RlbGV0ZV9maWxlcycgc2ltcGxlPXRydWV9CgkJCQkJCQl7Y2hlY2tib3ggZmxkX25hbWU9J2ZpbGVtYW5hZ2VyX2NyZWF0ZV9mb2xkZXJzJyBzaW1wbGU9dHJ1ZX0KCQkJCQkJCXtjaGVja2JveCBmbGRfbmFtZT0nZmlsZW1hbmFnZXJfZGVsZXRlX2ZvbGRlcnMnIHNpbXBsZT10cnVlfQoJCQkJCQkJe2NoZWNrYm94IGZsZF9uYW1lPSdmaWxlbWFuYWdlcl91cGxvYWRfZmlsZXMnIHNpbXBsZT10cnVlfQoJCQkJCQkJe2NoZWNrYm94IGZsZF9uYW1lPSdmaWxlbWFuYWdlcl9yZW5hbWVfZmlsZXMnIHNpbXBsZT10cnVlfQoJCQkJCQkJe2NoZWNrYm94IGZsZF9uYW1lPSdmaWxlbWFuYWdlcl9yZW5hbWVfZm9sZGVycycgc2ltcGxlPXRydWV9CgkJCQkJCQl7Y2hlY2tib3ggZmxkX25hbWU9J2ZpbGVtYW5hZ2VyX2R1cGxpY2F0ZV9maWxlcycgc2ltcGxlPXRydWV9CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJncmlkXzYiPgoJCQkJCQkJe2NoZWNrYm94IGZsZF9uYW1lPSdmaWxlbWFuYWdlcl9jb3B5X2N1dF9maWxlcycgc2ltcGxlPXRydWV9CgkJCQkJCQl7Y2hlY2tib3ggZmxkX25hbWU9J2ZpbGVtYW5hZ2VyX2NvcHlfY3V0X2RpcnMnIHNpbXBsZT10cnVlfQoJCQkJCQkJe2NoZWNrYm94IGZsZF9uYW1lPSdmaWxlbWFuYWdlcl9jaG1vZF9maWxlcycgc2ltcGxlPXRydWV9CgkJCQkJCQl7Y2hlY2tib3ggZmxkX25hbWU9J2ZpbGVtYW5hZ2VyX2NobW9kX2RpcnMnIHNpbXBsZT10cnVlfQoJCQkJCQkJe2NoZWNrYm94IGZsZF9uYW1lPSdmaWxlbWFuYWdlcl9wcmV2aWV3X3RleHRfZmlsZXMnIHNpbXBsZT10cnVlfQoJCQkJCQkJe2NoZWNrYm94IGZsZF9uYW1lPSdmaWxlbWFuYWdlcl9jcmVhdGVfdGV4dF9maWxlcycgc2ltcGxlPXRydWV9CgkJCQkJCQl7Y2hlY2tib3ggZmxkX25hbWU9J2ZpbGVtYW5hZ2VyX2VkaXRfdGV4dF9maWxlcycgc2ltcGxlPXRydWV9CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJPC9maWVsZHNldD4KCQkJPC9kaXY+CgoJCQk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCQkJPGZpZWxkc2V0PgoJCQkJCTxsZWdlbmQ+eyRtb2QtPkxhbmcoJ2ZpbGVtYW5hZ2VyX2ltYWdlX3Jlc2l6aW5nX3RpdGxlJyl9IHtjbXNfaGVscCB0aXRsZT0kbW9kLT5MYW5nKCdmaWxlbWFuYWdlcl9pbWFnZV9yZXNpemluZ190aXRsZScpIGtleT0naGVscF9maWxlbWFuYWdlcl9pbWFnZV9yZXNpemluZyd9PC9sZWdlbmQ+CgkJCQkJe2NoZWNrYm94IGZsZF9uYW1lPSdmaWxlbWFuYWdlcl9pbWFnZV9yZXNpemluZycgc2ltcGxlPXRydWV9CgoJCQkJCTxkaXYgY2xhc3M9ImNfZnVsbCBjZiI+CgkJCQkJCTxkaXYgY2xhc3M9ImdyaWRfNiI+CgkJCQkJCQl7dGV4dF9pbnB1dCBmbGRfbmFtZT0nZmlsZW1hbmFnZXJfaW1hZ2VfcmVzaXppbmdfd2lkdGgnIGV4dD0ncHgnIHNpemU9M30KCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImdyaWRfNiI+CgkJCQkJCQl7dGV4dF9pbnB1dCBmbGRfbmFtZT0nZmlsZW1hbmFnZXJfaW1hZ2VfcmVzaXppbmdfaGVpZ2h0JyBleHQ9J3B4JyBzaXplPTN9CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJPC9maWVsZHNldD4KCQkJPC9kaXY+CgoKCQkJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQkJCTxmaWVsZHNldD4KCQkJCQk8bGVnZW5kPnskbW9kLT5MYW5nKCdmaWxlbWFuYWdlcl9waG90b19lZGl0b3InKX0ge2Ntc19oZWxwIHRpdGxlPSRtb2QtPkxhbmcoJ2ZpbGVtYW5hZ2VyX3Bob3RvX2VkaXRvcicpIGtleT0iaGVscF90dWlfZWRpdG9yIn08L2xlZ2VuZD4KCQkJCQl7Y2hlY2tib3ggZmxkX25hbWU9J2ZpbGVtYW5hZ2VyX3R1aV9hY3RpdmUnIHNpbXBsZT10cnVlfQoJCQkJPC9maWVsZHNldD4KCQkJPC9kaXY+CgoKCgkJeyogVVNFUiBHUk9VUFMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqfQoJCXt0YWJfc3RhcnQgbmFtZT0ndXNlcnNfZ3JvdXBzJ30KCQkJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQkJCXtsYWJlbCB0ZXh0PSd1c2VyZ3JvdXBzJyBmb3I9J3VzZXJncm91cHMnIGhlbHA9J3VzZXJncm91cHMnfQoJCQkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+CgkJCQkJPHNlbGVjdCBuYW1lPSJ7JGFjdGlvbmlkfXVzZXJncm91cHNbXSIgaWQ9InVzZXJncm91cHMiIG11bHRpcGxlPSJtdWx0aXBsZSIgc2l6ZT0iNSI+CgkJCQkJCXtodG1sX29wdGlvbnMgb3B0aW9ucz0kdXNlcmdyb3VwcyBzZWxlY3RlZD0kcHJvZmlsZS0+dXNlcmdyb3Vwc19pZHN9CgkJCQkJPC9zZWxlY3Q+CgkJCQk8L3A+CgkJCTwvZGl2PgoKCQkJe3RleHRfaW5wdXQgZmxkX25hbWU9J3ByaW9yaXR5JyBoZWxwPSdwcmlvcml0eScgc2l6ZT0zfQoKCgoJCXsqIFRFTVBMQVRFUyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICp9CgkJe3RhYl9zdGFydCBuYW1lPSd0ZW1wbGF0ZXMnfQoJCQk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCQkJe2xhYmVsIHRleHQ9J2pzX3RlbXBsYXRlJyBmb3I9J2lkX3RlbXBsYXRlJyBoZWxwPSdqc190ZW1wbGF0ZSd9CgkJCQk8cCBjbGFzcz0icGFnZWlucHV0Ij4KCQkJCQk8c2VsZWN0IG5hbWU9J3skYWN0aW9uaWR9aWRfdGVtcGxhdGUnIGlkPSJpZF90ZW1wbGF0ZSI+CgkJCQkJCTxvcHRpb24gdmFsdWU9Ii0xIiB7aWYgJHByb2ZpbGUtPmlkX3RlbXBsYXRlIGVxIC0xfXNlbGVjdGVkPSJzZWxlY3RlZCJ7L2lmfT4KCQkJCQkJCS0geyRtb2QtPkxhbmcoJ29yaWdfanNfdGVtcGxhdGVfZmlsZScpfSAtCgkJCQkJCTwvb3B0aW9uPgoKCQkJCQkJe2lmICFlbXB0eSgkdGVtcGxhdGVzKX0KCQkJCQkJCTxvcHRpb24gdmFsdWU9IjAiIHtpZiAkcHJvZmlsZS0+aWRfdGVtcGxhdGUgZXEgMH1zZWxlY3RlZD0ic2VsZWN0ZWQiey9pZn0+CgkJCQkJCQkJLSB7JG1vZC0+TGFuZygnZGVmYXVsdF9kZXNpZ25tYW5hZ2VyX3RlbXBsYXRlJyl9IC0KCQkJCQkJCTwvb3B0aW9uPgoJCQkJCQkJe2ZvcmVhY2ggJHRlbXBsYXRlcyBhcyAkdGVtcGxhdGV9CgkJCQkJCQkJPG9wdGlvbiB2YWx1ZT0ieyR0ZW1wbGF0ZS0+Z2V0X2lkKCl9IiB7aWYgJHRlbXBsYXRlLT5nZXRfaWQoKSBlcSAkcHJvZmlsZS0+aWRfdGVtcGxhdGV9c2VsZWN0ZWQ9InNlbGVjdGVkInsvaWZ9PgoJCQkJCQkJCQl7JHRlbXBsYXRlLT5nZXRfbmFtZSgpfQoJCQkJCQkJCTwvb3B0aW9uPgoJCQkJCQkJey9mb3JlYWNofQoJCQkJCQl7L2lmfQoJCQkJCTwvc2VsZWN0PgoJCQkJPC9wPgoJCQk8L2Rpdj4KCgkJCXt0ZXh0YXJlYSBmbGRfbmFtZT0nZXh0cmFfanMnIGhlbHA9J2V4dHJhX2pzJ30KCgkJCTxocj4KCgkJCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJCQl7Y2hlY2tib3ggZmxkX25hbWU9J2VuYWJsZV91c2VyX3RlbXBsYXRlcycgaGVscD0ndXNlcl90ZW1wbGF0ZXMnfQoKCQkJCXsqIHtpZiBpc3NldCgkY21zbXNfdmVyc2lvbl8yMykgYW5kICRjbXNtc192ZXJzaW9uXzIzfSAqfQoJCQkJCXt0ZXh0X2lucHV0IGZsZF9uYW1lPSd1c2VyX3RlbXBsYXRlc19maWxlc19kaXInIGhlbHA9J3VzZXJfdGVtcGxhdGVzX2ZpbGVzX2Rpcicgc2l6ZT04MH0KCQkJCXsqIHsvaWZ9ICp9CgkJCTwvZGl2PgoKCgoJCXt0YWJfZW5kfQoKCgoKCgkJe3N1Ym1pdF9mb3JtX2J1dHRvbnN9CgoKCgl7Zm9ybV9lbmR9CjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/admin_example.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHA+CiAgICA8aW1nIHNyYz0ne3VwbG9hZHNfdXJsfS9pbWFnZXMvbG9nbzEuZ2lmJyBhbGlnbj0ncmlnaHQnIC8+TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gTWF1cmlzIGV0IGlwc3VtIGlkIGFudGUgZGlnbmlzc2ltIGN1cnN1cyBzb2xsaWNpdHVkaW4gZWdldCBlcmF0LiBRdWlzcXVlIHNpdCBhbWV0IGFyY3UgdXJuYS4gTnVsbGEgdWx0cmljaWVzIGxhY2luaWEgc2FwaWVuLCBzZWQgYWxpcXVhbSBxdWFtIGZldWdpYXQgaW4uIERvbmVjIGNvbnNlY3RldHVyIHByZXRpdW0gY29uZ3VlLiBJbnRlZ2VyIGFsaXF1YW0gZmFjaWxpc2lzIGxhY3VzLCB1dCBmYWNpbGlzaXMgZXJhdCBwaGFyZXRyYSBlZ2V0LiBEdWlzIGRhcGlidXMgcG9zdWVyZSBudW5jLCBpZCBncmF2aWRhIG1hc3NhIHBlbGxlbnRlc3F1ZSBhYy4gRHVpcyBtYXNzYSBsZWN0dXMsIHRlbXBvciBzZWQgaW1wZXJkaWV0IGFsaXF1YW0sIGx1Y3R1cyB1dCByaXN1cy4gSW50ZWdlciBuaXNsIGxpYmVybywgcG9ydHRpdG9yIHNpdCBhbWV0IHNhZ2l0dGlzIGF0LCBzb2RhbGVzIGF0IHVybmEuIE1hZWNlbmFzIGZhY2lsaXNpcyBhcmN1IGVnZXQgbnVsbGEgaW1wZXJkaWV0IHNlZCBpbnRlcmR1bSBtYXNzYSBwcmV0aXVtLiBJbiBpZCBlcm9zIG9yY2ksIHBoYXJldHJhIGRpZ25pc3NpbSBuaXNsLiBRdWlzcXVlIHZpdGFlIGx1Y3R1cyB0dXJwaXMuIEFlbmVhbiBwdWx2aW5hciBhY2N1bXNhbiBqdXN0bywgdmVsIHB1bHZpbmFyIG1pIGNvbnNlcXVhdCBpbi4gVmVzdGlidWx1bSBhYyB0dXJwaXMgdmVsIG1hc3NhIHZlbmVuYXRpcyB2b2x1dHBhdCBwbGFjZXJhdCBpbiBkaWFtLiBRdWlzcXVlIGFjIG1hZ25hIGRvbG9yLiBBbGlxdWFtIHNhZ2l0dGlzIGludGVyZHVtIHVybmEgYSBldWlzbW9kLiAKPC9wPgo=]]></data>
	</file>
	<file>
	  <filename>/templates/admin_profileslist.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CntpZiAkcHJvZmlsZXN9CgogIDx0YWJsZSBjbGFzcz0icGFnZXRhYmxlIj4KICAgIDx0aGVhZD4KICAgICAgPHRyPgogICAgICAgIDx0aD57JG1vZC0+TGFuZygnaWQnKX08L3RoPgogICAgICAgIDx0aD57JG1vZC0+TGFuZygncHJvZmlsZV9uYW1lJyl9PC90aD4KICAgICAgICA8dGg+eyRtb2QtPkxhbmcoJ3VzZXJncm91cHMnKX08L3RoPgogICAgICAgIDx0aD57JG1vZC0+TGFuZygncHJpb3JpdHknKX08L3RoPgogICAgICAgIDx0aD57JG1vZC0+TGFuZygnZGVmYXVsdCcpfTwvdGg+CiAgICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+PC90aD4KICAgICAgICA8dGggY2xhc3M9InBhZ2VpY29uIj48L3RoPgogICAgICAgIDx0aCBjbGFzcz0icGFnZWljb24iPjwvdGg+CiAgICAgIDwvdHI+CiAgICA8L3RoZWFkPgoKICAgIHtmb3JlYWNoICRwcm9maWxlcyBhcyAkcHJvZmlsZX0KCiAgICAgIHtjeWNsZSB2YWx1ZXM9InJvdzEscm93MiIgYXNzaWduPSdyb3djbGFzcyd9CiAgICAgIHtjbXNfYWN0aW9uX3VybCBhY3Rpb249YWRtaW5fZWRpdHByb2ZpbGUgaWRfcHJvZmlsZT0kcHJvZmlsZS0+aWRfcHJvZmlsZSBhc3NpZ249J2VkaXRfdXJsJ30KICAgICAge2Ntc19hY3Rpb25fdXJsIGFjdGlvbj1hZG1pbl9jb3B5cHJvZmlsZSBpZF9wcm9maWxlPSRwcm9maWxlLT5pZF9wcm9maWxlIGFzc2lnbj0nY29weV91cmwnfQogICAgICB7Y21zX2FjdGlvbl91cmwgYWN0aW9uPWFkbWluX2RlbGV0ZXByb2ZpbGUgaWRfcHJvZmlsZT0kcHJvZmlsZS0+aWRfcHJvZmlsZSBhc3NpZ249J2RlbGV0ZV91cmwnfQoKICAgICAgPHRyIGNsYXNzPSJ7JHJvd2NsYXNzfSIgb25tb3VzZW92ZXI9InRoaXMuY2xhc3NOYW1lPSd7JHJvd2NsYXNzfWhvdmVyJzsiIG9ubW91c2VvdXQ9InRoaXMuY2xhc3NOYW1lPSd7JHJvd2NsYXNzfSc7Ij4KICAgICAgICA8dGQ+CiAgICAgICAgICA8YSBocmVmPSJ7JGVkaXRfdXJsfSI+eyRwcm9maWxlLT5pZF9wcm9maWxlfTwvYT4KICAgICAgICA8L3RkPgogICAgICAgIDx0ZD4KICAgICAgICAgIDxhIGhyZWY9InskZWRpdF91cmx9Ij57JHByb2ZpbGUtPm5hbWV9PC9hPgogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAge2ZvcmVhY2ggJHByb2ZpbGUtPnVzZXJncm91cHMgYXMgJHVzZXJncm91cH17c3RyaXB9CiAgICAgICAgICAgIHskdXNlcmdyb3VwLT5uYW1lfXtpZiAhJHVzZXJncm91cEBsYXN0fSwgey9pZn0KICAgICAgICAgIHtmb3JlYWNoZWxzZX0KICAgICAgICAgICAgLQogICAgICAgICAgey9zdHJpcH17L2ZvcmVhY2h9CiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+CiAgICAgICAgICB7JHByb2ZpbGUtPnByaW9yaXR5fQogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPgogICAgICAgICAge2lmICRwcm9maWxlLT5pZF9wcm9maWxlIGVxICRpZF9kZWZhdWx0X3Byb2ZpbGV9CiAgICAgICAgICAgIHthZG1pbl9pY29uIGljb249J3RydWUuZ2lmJ30KICAgICAgICAgIHtlbHNlfQogICAgICAgICAgICA8YSBocmVmPSJ7Y21zX2FjdGlvbl91cmwgYWN0aW9uPWFkbWluX3NldGRlZmF1bHRwcm9maWxlIGlkX3Byb2ZpbGU9JHByb2ZpbGUtPmlkX3Byb2ZpbGV9Ij4KICAgICAgICAgICAgICB7YWRtaW5faWNvbiBpY29uPSdmYWxzZS5naWYnfQogICAgICAgICAgICA8L2E+CiAgICAgICAgICB7L2lmfQogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPjxhIGhyZWY9InskZWRpdF91cmx9IiB0aXRsZT0ieyRtb2QtPkxhbmcoJ2VkaXRfcHJvZmlsZScpfSI+e2FkbWluX2ljb24gaWNvbj0nZWRpdC5naWYnfTwvYT48L3RkPgogICAgICAgIDx0ZD48YSBocmVmPSJ7JGNvcHlfdXJsfSIgdGl0bGU9InskbW9kLT5MYW5nKCdjb3B5X3Byb2ZpbGUnKX0iPnthZG1pbl9pY29uIGljb249J2NvcHkuZ2lmJ308L2E+PC90ZD4KICAgICAgICA8dGQ+PGEgaHJlZj0ieyRkZWxldGVfdXJsfSIgdGl0bGU9InskbW9kLT5MYW5nKCdkZWxldGVfcHJvZmlsZScpfSIgb25jbGljaz0icmV0dXJuIGNvbmZpcm0oJ3skbW9kLT5MYW5nKCdkZWxldGVfcHJvZmlsZV9jb25maXJtJyl9Jyk7Ij57YWRtaW5faWNvbiBpY29uPSdkZWxldGUuZ2lmJ308L2E+PC90ZD4KICAgICAgPC90cj4KCiAgICB7L2ZvcmVhY2h9CgogIDwvdGFibGU+Cgp7L2lmfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/changelog.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPlZlcnNpb25zIGZvciBDTVMgTWFkZSBTaW1wbGUgMi4yLjExIGFuZCAyLjMrIHdpdGggVGlueU1DRSA1KzwvaDM+Cjx1bD4KICAgIDxsaT4KICAgICAgICA8cD4KICAgICAgICAgICAgPHN0cm9uZz5WZXJzaW9uIDMuMy4yIChTaWxtYXJpbGxpb24pPC9zdHJvbmc+CiAgICAgICAgPHVsPgogICAgICAgICAgICA8bGk+VXBkYXRlZCBUaW55KE1DRSkgdG8gNS4zLjE8L2xpPgogICAgICAgICAgICA8bGk+Rml4ZWQgIzEyMzA4IHdoaWNoIGNhdXNlZCB3cm9uZ2x5IG5hbWVzIGNhY2hlZCBjb25maWcgZmlsZXMgdG8gYnJlYWsgc2Vzc2lvbi4gVGhhbmtzIHRvIFZlbGRlbiBmb3IgaXNvbGF0aW5nIGFuZCBzdWdnZXN0aW5nIGZpeCE8L2xpPgogICAgICAgICAgICA8bGk+PC9saT4KICAgICAgICA8L3VsPgogICAgICAgIDwvcD4KICAgIDwvbGk+CiAgPGxpPgogICAgPHA+CiAgICAgIDxzdHJvbmc+VmVyc2lvbiAzLjMuMTwvc3Ryb25nPgogICAgICA8dWw+CiAgICAgICAgPGxpPlVwZGF0ZWQgVGlueShNQ0UpIHRvIDUuMS4wPC9saT4KICAgICAgICA8bGk+TGFyZ2UgKCsybWIpIGZpbGVzIHVwbG9hZCBmaXg8L2xpPgogICAgICAgIDxsaT5TbWFsbCBxdWljayBmaXggZm9yIGR1cGxpY2F0ZSBjbXNtc19saW5rZXIgcGx1Z2luIGluIGNvbnRleHRtZW51PC9saT4KICAgICAgPC91bD4KICAgIDwvcD4KICA8L2xpPgogIDxsaT4KICAgIDxwPgogICAgICA8c3Ryb25nPlZlcnNpb24gMy4zPC9zdHJvbmc+CiAgICAgIDx1bD4KICAgICAgICA8bGk+U3RvcHMgdGhlICJiZXRhIiBjeWNsZSBhcyBpdCBkaWRuJ3QgbWFrZSBhbnkgc2Vuc2UgYW55bW9yZTwvbGk+CiAgICAgICAgPGxpPldvcmtzIGluIENNU01TIDIuMyAtIE1pbmltdW0gQ01TTVMgdmVyc2lvbiBpcyBub3cgMi4yLjExPC9saT4KICAgICAgICA8bGk+CiAgICAgICAgICBVcGRhdGVkIFRpbnlNQ0UgdG8gbWFqb3IgNS54IHZlcnNpb24gKDUuMC4xNSkgLSBJZiB5b3UgbWFkZSBzb21lIEpTIGN1c3RvbWl6YXRpb25zIHlvdSdsbCBoYXZlIHRvIGNoZWNrIGlmIGV2ZXJ5dGhpbmcgaXMgb2ssIGFuZC9vciB1cGRhdGUgeW91ciBUaW55TUNFIEpTIGZpbGUvdGVtcGxhdGUuCiAgICAgICAgPC9saT4KICAgICAgICA8bGk+CiAgICAgICAgICBTaG91bGQgd29yayB3aXRoIENTUyBmcm9tIHRoZSBEZXNpZ25NYW5hZ2VyIG9yIGZyb20gZmlsZXMgKENNU01TIDIuMyspCiAgICAgICAgPC9saT4KICAgICAgICA8bGk+UmVtb3ZlZCB0aGUgY29udGV4dF9tZW51IHBsdWdpbiBmcm9tIHRoZSBwbHVnaW5zIGxpc3Q6IGl0J3Mgbm93IGluIHRoZSBjb3JlLiBBZGRlZCBzb21lIGRvY3MgYW5kIHJlbW92ZWQgdGhlIGVuYWJsZS9kaXNhYmxlIG9mIHRoaXMgb3B0aW9uIChhbHdheXMgZW5hYmxlZCkuIElmIHlvdSBuZWVkIHRoZSBicm93c2VyIG5hdGl2ZSByaWdodC1jbGljaywgeW91IGNhbiBDVFJMICsgUmlnaHQgY2xpY2suPC9saT4KICAgICAgICA8bGk+Q29waWVkIHRoZSBjbXNtc19saW5rZXIgcGx1Z2luIGZyb20gdGhlIGxhdGVzdCBNaWNyb1RpbnksIGFuZCB1cGdyYWRlZCB0byB3b3JrIHdpdGggVGlueSA1Ky4gSWYgeW91IG5lZWQgdGhhdCBwbHVnaW4gaW4gdGhlIG1lbnViYXIsIHlvdSBtdXN0IG5vdyB1c2UgdGhlIGN1c3RvbSBtZW51YmFyIG9wdGlvbjwvbGk+CiAgICAgICAgPGxpPlVwZGF0ZWQgUmVzcG9uc2l2ZSBGaWxlIE1hbmFnZXIgOS4xNC4wIC0gTm93IHNoaXBwZWQgd2l0aCBUVUkgSW1hZ2UgRWRpdG9yIGluc3RlYWQgb2YgQWRvYmUgQXZpYXJ5PC9saT4KICAgICAgICA8bGk+CiAgICAgICAgICBOZXcgPGVtPmZpbGUtYmFzZWQgdGlueW1jZSB0ZW1wbGF0ZXM8L2VtPiBvcHRpb24gYXNpZGUgb2YgdGhlIERlc2lnbk1hbmFnZXIgb25lcy4gKHNlZSB0aGUgPGVtPnRlbXBsYXRlczwvZW0+IHByZWYgdGFiKS4KICAgICAgICA8L2xpPgogICAgICAgIDxsaT4KICAgICAgICAgIE1vdmVkIC8gcmVtb3ZlZCBzb21lIHByZWZzCiAgICAgICAgPC9saT4KICAgICAgPC91bD4KICAgIDwvcD4KICA8L2xpPgo8L3VsPgoKPGgzPlZlcnNpb25zIGZvciBDTVMgTWFkZSBTaW1wbGUgMi4qIHdpdGggVGlueU1DRSA0KzwvaDM+Cjx1bD4KICA8bGk+CiAgICA8cD4KICAgICAgPHN0cm9uZz5WZXJzaW9uIDMuMi1iZXRhNjwvc3Ryb25nPgogICAgICA8dWw+CiAgICAgICAgPGxpPlVwZGF0ZWQgVGlueU1DRSB0byA0LjguMDwvbGk+CiAgICAgICAgPGxpPlVwZGF0ZWQgdGhlIG1lc3NhZ2VzIG1lY2hhbmlzbSBmb3IgY21zbXMgMi4yLjY8L2xpPgogICAgICAgIDxsaT5VcGRhdGVkIFJlc3BvbnNpdmUgRmlsZSBNYW5hZ2VyIHRvIHY5LjEzLjEgLSBOb3cgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IHNob3VsZCBiZSBzYXZlZCBhbmQgcmUtb3BlbmVkPC9saT4KICAgICAgICA8bGk+UXVpY2sgZml4IGZvciB0aGUgdXBsb2FkIG9mID4ybWIgZmlsZXMgaW4gUkZNIC0gd29yayBpbiBwcm9ncmVzcywgcGxlYXNlIHRlc3QhPC9saT4KICAgICAgICA8bGk+KHNob3VsZCBiZSBidXQgdGVzdCkgZml4ZWQgZm9yIHRoZSBlbmdsaXNoIGxhbmd1YWdlIC5waHAgZmlsZSBwcm9ibGVtPC9saT4KICAgICAgPC91bD4KICAgIDwvcD4KICA8L2xpPgogIDxsaT4KICAgIDxwPgogICAgICA8c3Ryb25nPlZlcnNpb24gMy4yLWJldGE1PC9zdHJvbmc+CiAgICAgIDx1bD4KICAgICAgICA8bGk+VXBkYXRlZCBUaW55TUNFIHRvIDQuNy42PC9saT4KICAgICAgICA8bGk+VXBkYXRlZCBSZXNwb25zaXZlIEZpbGUgTWFuYWdlciB0byB2OS4xMi4yPC9saT4KICAgICAgICA8bGk+SWYgeW91ciBidWxsZXQgLyBvcmRlcmVkIGxpc3RzIGJ1dHRvbnMgYXJlIG1pc3NpbmcsIGFkZCB0aGUgPGVtPmxpc3RzPC9lbT4gcGx1Z2luIHRvIHlvdXIgdmFyaW91cyBwcm9maWxlczwvbGk+CiAgICAgIDwvdWw+CiAgICA8L3A+CiAgPC9saT4KCTxsaT4KCQk8cD4KCQkJPHN0cm9uZz5WZXJzaW9uIDMuMi1iZXRhNDwvc3Ryb25nPgoJCQk8dWw+CgkJCQk8bGk+VXBkYXRlZCB0aW55bWNlIHRvIDQuNi4zIC0gbm90ZSB0aGF0IElFIDgtOS0xMCBhcmUgbm8gbW9yZSBzdXBwb3J0ZWQ8L2xpPgoJCQkJPGxpPlVwZGF0ZWQgdG8gUmVzcG9uc2l2ZSBGaWxlIE1hbmFnZXIgdi4gOS4xMS4zPC9saT4KCQkJCTxsaT5DU1MgbWFuYWdlbWVudCB1cGdyYWRlOiBpZiB5b3UgYXJlIHVzaW5nIGEgY3VzdG9tIFRpbnlNQ0UgSlMgaW5pdCBzY3JpcHQsIHBsZWFzZSB1cGRhdGUgdGhlICdjb250ZW50X2NzcycgcGFydCBhY2NvcmRpbmcgdG8gdGhlIG9yaWdpbmFsIEpTIHRlbXBsYXRlPC9saT4KCQkJCTxsaT5Ob3cgdGhlIGRlbW8gSFRNTCBjb250ZW50IGlzIHNhdmVkIGR1cmluZyB0aGUgcHJvZmlsZSBzYXZlIC0gdGhpcyBpcyBhIGdsb2JhbCBwcmVmZXJlbmNlIGFjcm9zcyBhbGwgdGhlIHByb2ZpbGVzPC9saT4KCQkJCTxsaT5VcGdyYWRlIHNjcmlwdCBmaXggd3J0IHRhYmxlIG5hbWVzPC9saT4KCQkJCTxsaT5JbWFnZXMgLyBkb2N1bWVudHMgbGlua3MgZnJvbSB0aGUgUmVzcG9uc2l2ZSBmaWxlIG1hbmFnZXIgc2hvdWxkIG5vdCBhZGQgYSB0aW1lIHBhcmFtZXRlciAocGxlYXNlIGNsZWFyIHlvdXIgY2FjaGUgYW5kIHRlc3QpPC9saT4KCQkJCTxsaT5EaXNhYmxlIGJyb3dzZXIgY2FjaGluZywgZml4IGZvciBHYWxsZXJ5IG1vZHVsZSBwbHVnaW48L2xpPgoJCQkJPGxpPkxhbmd1YWdlcyBmaXhlcyAtIEJSIzExMjg5PC9saT4KCQkJCTxsaT5WYXJpb3VzIGJ1ZyBmaXhlczwvbGk+CgkJCTwvdWw+CgkJPC9wPgoJPC9saT4KCTxsaT4KCQk8cD4KCQkJPHN0cm9uZz5WZXJzaW9uIDMuMS40PC9zdHJvbmc+CgkJCTx1bD4KCQkJCTxsaT5CdWcgZml4IHdydCBmaWxlbXRpbWUgd2FybmluZyB3aGVuIHRoZSBKUyBjb25maWd1cmF0aW9uIGRvZXNuJ3QgZXhpc3Q8L2xpPgoJCQkJPGxpPkJ1ZyBmaXggd3J0IFJGTSBmaWxlL2RpciBwZXJtaXNzaW9ucyAoNzY2IGluc3RlYWQgb2YgNzU1KTwvbGk+CgkJCTwvdWw+CgkJPC9wPgoJPC9saT4KICA8bGk+CiAgICA8cD4KICAgICAgPHN0cm9uZz5WZXJzaW9uIDMuMS4zPC9zdHJvbmc+CiAgICA8L3A+CiAgICA8dWw+CiAgICAgIDxsaT5GaXhlZCBzb21lIGJ1Z3MgYW5kIHNlY3VyaXR5IGlzc3VlczwvbGk+CiAgICAgIDxsaT5GaXhlZCBidWcgMTEwMDUgOiBUaW55TUNFIGphdmFzY3JpcHQgZmlsZSBpcyByZWdlbmVyYXRlZCB3aGVuIGEgc3R5bHNoZWV0IGhhcyBiZWVuIHVwZGF0ZWQ8L2xpPgogICAgICA8bGk+VXBkYXRlZCBUaW55TUNFIHRvIDQuMy4xMTwvbGk+CiAgICAgIDxsaT5VcGRhdGVkIFJlc3BvbnNpdmVGaWxlTWFuYWdlciB0byB2ZXJzaW9uIDkuMTAuMTwvbGk+CiAgICA8L3VsPgogIDwvbGk+CiAgPGxpPgogICAgPHA+PHN0cm9uZz5WZXJzaW9uIDMuMS4yPC9zdHJvbmc+PC9wPgogICAgPHVsPgogICAgICA8bGk+SW1wcm92ZWQgUmVzcG9uc2l2ZSBmaWxlIG1hbmFnZXIgY29uZmlndXJhdGlvbiBvbiBzdWJkaXIgaW5zdGFsbHMgKHRoYW5rcyB0byBBbGJlcnRvIFBlcmlwb2xsaSkuIEF2aWFyeSBzaG91bGQgbm93IHdvcmsgb24gbG9jYWxob3N0IGluc3RhbGxzLjwvbGk+CiAgICAgIDxsaT5Db3JyZWN0ZWQgY2hhbmdlbG9nIHZlcnNpb25zIGVycm9yPC9saT4KICAgIDwvdWw+CiAgPC9saT4KICA8bGk+CiAgICA8cD48c3Ryb25nPlZlcnNpb24gMy4xLjE8L3N0cm9uZz48L3A+CiAgICA8dWw+CiAgICAgIDxsaT5CdWcgZml4IHJlZ2FyZGluZyB0byBBdmlhcnkgd2hlbiBDTVMgTWFkZSBTaW1wbGUgaXMgaW5zdGFsbGVkIGluIGEgc3ViZGlyPC9saT4KICAgICAgPGxpPlVwZ3JhZGVkIHRvIFRpbnlNQ0UgNC4zLjQ8L2xpPgogICAgPC91bD4KICA8L2xpPgogIDxsaT4KICAgIDxwPjxzdHJvbmc+VmVyc2lvbiAzLjE8L3N0cm9uZz48L3A+CiAgICA8dWw+CiAgICAgIDxsaT5VcGdyYWRlZCB0byBUaW55TUNFIDQuMy4zPC9saT4KICAgICAgPGxpPkFkZCBhbiBvcHRpb24gdG8gdXNlIHJlbGF0aXZlIG9yIGFic29sdXRlIFVSTHMgZm9yIGltYWdlcyBvciBsaW5rczwvbGk+CiAgICAgIDxsaT5BZGQgYW4gb3B0aW9uIHRvIHVzZSB0aGUgaW1hZ2UgYWR2YW5jZWQgdGFiIGZvciBzdHlsZSwgYm9yZGVyIG9yIHNwYWNpbmcuPC9saT4KICAgIDwvdWw+CiAgPC9saT4KICA8bGk+CiAgICA8cD48c3Ryb25nPlZlcnNpb24gMy4wPC9zdHJvbmc+PC9wPgogICAgPHA+Q29tcGxldGUgcmV3cml0ZSBmb3IgQ01TIE1hZGUgU2ltcGxlIDIuMSBhbmQgdGhlIG5ldyBUaW55TUNFIHZlcnNpb24gNDwvcD4KICAgIDxwPlBsZWFzZSBub3RlIHRoYXQgPHN0cm9uZyBzdHlsZT0iY29sb3I6ICNlMDAiPnRoZSB1cGdyYWRlIHNjcmlwdCB3aWxsIHRyeSB0byBrZWVwIHNvbWUgb2YgeW91ciBwcmV2aW91cyBUaW55TUNFIHByZWZlcmVuY2VzLCBidXQgd2lsbCByZW1vdmUgc29tZSBvdGhlcnM8L3N0cm9uZz4uIDxzdHJvbmcgc3R5bGU9ImNvbG9yOiAjZTAwIj5Zb3UgTVVTVCBjb25maWd1cmUgdGhlIGVkaXRvciBwcm9maWxlcyByaWdodCBhZnRlciB0aGUgdXBncmFkZSBhbmQgbWFrZSBzb21lIHVzZXIgdGVzdHM8L3N0cm9uZz4uPC9wPgogICAgPHA+UGxlYXNlIGJhY2t1cCB5b3VyIGZpbGVzIGFuZCBkYXRhYmFzZSBiZWZvcmUgdXBncmFkaW5nLjwvcD4KCiAgICA8aDM+V2hhdCBkaWQgY2hhbmdlPzwvaDM+CiAgICA8cD4KICAgICAgRXZlcnl0aGluZy4uLiB3ZSBkaWQgd3JpdGUgdGhhdCBuZXcgdmVyc2lvbiBmcm9tIHNjcmF0Y2guIFdoYXQgeW91J2xsIGZpbmQgaW5zaWRlOgogICAgICA8dWw+CiAgICAgICAgPGxpPlByb2ZpbGUgbWFuYWdlbWVudDogY3JlYXRlIGFzIG11Y2ggcHJvZmlsZXMgYXMgeW91IHdhbnQsIGFuZCBsaW5rIHRoZW0gdG8geW91IHVzZXJzIGdyb3VwcyBhbmQvb3IgdG8gZnJvbnRlbmQgdXNlcnM8L2xpPgogICAgICAgIDxsaT5Mb3RzIG9mIGN1c3RvbWl6YXRpb24gb3B0aW9uczogdG9vbGJhciwgbWVudWJhciwgZXh0ZXJuYWwgbW9kdWxlcywgY3VzdG9tIHN0eWxlcywgLi4uPC9saT4KICAgICAgICA8bGk+VXNlcyB0aGUgaW50ZXJuYWwgcGFnZSBsaW5rZXIgZnJvbSB0aGUgTWljcm9UaW55IG1vZHVsZS48L2xpPgogICAgICAgIDxsaT5FbWJlZHMgdGhlIHBvd2VyZnVsIDxhIGhyZWY9Imh0dHA6Ly93d3cucmVzcG9uc2l2ZWZpbGVtYW5hZ2VyLmNvbS8iIHRhcmdldD0iX2JsYW5rIj5SZXNwb25zaXZlIEZpbGUgTWFuYWdlcjwvYT4gdGhhbmtzIHRvIGl0cyBhdXRob3IgQWxiZXJ0byBQZXJpcG9sbGkuIE5vdGU6IGZvciBzZWN1cml0eSByZWFzb25zLCB0aGUgUmVzcG9uc2l2ZSBGaWxlIE1hbmFnZXIgd2lsbCBub3QgYmUgYXZhaWxhYmxlIHRvIHRoZSBmcm9udGVuZCB1c2VyczwvbGk+CiAgICAgICAgPGxpPkFiaWxpdHkgdG8gdXNlIGFuIGV4dGVybmFsIGphdmFzY3JpcHQgdGVtcGxhdGUgZmlsZSBmcm9tIHRoZSBEZXNpZ25NYW5hZ2VyIGluc3RlYWQgb2YgdGhlIHN0b2NrIEpTIGZpbGUgLSBUaGlzIHBlcm1pdHMgYSBjb21wbGV0ZSBjdXN0b21pemF0aW9uIG9mIHRoZSBpbml0IHNjcmlwdC48L2xpPgogICAgICAgIDxsaT5DdXN0b21pemFibGUgYXBwZWFyYW5jZSBieSBzcGVjaWZ5aW5nIGEgQ1NTIGRlc2lnbiB0byB1c2UgZm9yIHRoZSBlZGl0b3IuPC9saT4KICAgICAgPC91bD4KICAgIDwvcD4KICAgIDxwPgogICAgICBIb3BlIHlvdSdsbCBlbmpveSBpdCA6KQogICAgPC9wPgoKICAgIDxwPgogICAgICBXZSBuZWVkIGhlbHAgdG8gdGVzdCB0aGUgbW9kdWxlIGFuZCBpbXByb3ZlIGl0LiBQbGVhc2UgZ2l2ZSB1cyBmZWVkYmFjayB0aHJvdWdoIHRoZSBDTVNNUyBidWcgcmVwb3J0IHN5c3RlbSAoPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9idWcvbGlzdC8xMiIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvYnVnL2xpc3QvMTI8L2E+KQogICAgPC9wPgogICAgPHA+CiAgICAgIER1cmluZyB0aGUgdXBncmFkZSBwcm9jZXNzLCB0aGUgbW9kdWxlIHdpbGwgcmVtb3ZlIHlvdXIgb2xkIFRpbnlNQ0Ugb3B0aW9ucy9jb25maWd1cmF0aW9ucy4gUGxlYXNlIGtlZXAgYSBiYWNrdXAgaWYgeW91IG5lZWQgdG8gY2hlY2sgeW91ciBvbGQgY29uZmlndXJhdGlvbiBsYXRlci4KICAgIDwvcD4KICAgIDxwPgogICAgICBXZSB3aWxsIG5vdCBiZSByZXNwb25zaWJsZSBvZiBhbnkgZGF0YSBsb3NzLiBQbGVhc2UgYWx3YXlzIGRvIGJhY2t1cCB5b3VyIG9sZCBmaWxlcyBiZWZvcmUgdXBncmFkaW5nLgogICAgPC9wPgoKICA8L2xpPgo8L3VsPgo8YnI+PGJyPgoKPGhyPgo8aDM+T2xkZXIgdmVyc2lvbnMgZm9yIENNUyBNYWRlIFNpbXBsZSAxLiogc2VyaWVzPC9oMz4KPHVsPgo8bGk+CiAgICA8cD48c3Ryb25nPlZlcnNpb24gMi45LjEyPC9zdHJvbmc+PC9wPgogICAgPHA+VXBkYXRlZCB0byBUaW55TUNFIDMuNS44PC9wPgo8L2xpPgo8bGk+Cgk8cD48c3Ryb25nPlZlcnNpb24gMi45LjExPC9zdHJvbmc+PC9wPgoJPHA+VXBkYXRlZCB0byBUaW55TUNFIDMuNS42PC9wPgoJPHA+UmVzdG9yZWQgdGhlIE5ld2xpbmUtc3R5bGUgb3B0aW9uICZsdDtwJmd0OyBvciAmbHQ7YnImZ3Q7PC9wPgo8L2xpPgo8bGk+CiAgICA8cD48c3Ryb25nPlZlcnNpb24gMi45LjEwLjE8L3N0cm9uZz48L3A+CiAgICA8cD5GaXhlZCBzdHVwaWQgY29uZmlnLWVycm9yczwvcD4KPC9saT4KPGxpPgogICAgPHA+PHN0cm9uZz5WZXJzaW9uIDIuOS4xMDwvc3Ryb25nPjwvcD4KICAgIDxwPlVwZGF0ZWQgdG8gVGlueU1DRSAzLjUuNTwvcD4KICAgIDxwPlVwZGF0ZWQgdG8gVGlueU1DRSAzLjUuNC4xIChmaXhpbmcgc2hpZnQtQSk8L3A+CiAgICA8cD5SZW1vdmVkIGNvZGUgcmVsYXRlZCB0byB0aGUgb2Jzb2xldGUgZm9yY2VfcC9icl9uZXdsaW5lczwvcD4KICAgIDxwPkFkZGVkIGFuIG9wdGlvbiB0byB1c2UgdGhlIGh0bWw1IHNjaGVtZTwvcD4KPC9saT4KPGxpPgogICAgPHA+PHN0cm9uZz5WZXJzaW9uIDIuOS45PC9zdHJvbmc+PC9wPgogICAgPHA+VXBkYXRlZCB0byBUaW55TUNFIDMuNS40PC9wPgogICAgPHA+PC9wPgogICAgPHA+PC9wPgo8L2xpPgo8bGk+CiAgPHA+PHN0cm9uZz5WZXJzaW9uIDIuOS44PC9zdHJvbmc+PC9wPgogIDxwPlVwZGF0ZWQgdG8gVGlueU1DRSAzLjQuOTwvcD4KICA8cD5NYWRlIGZpbGVwaWNrZXIgd29yayB3aXRoIGRvdHMgaW4gdGhlIG5hbWUsIGZpeGVzICM3NzUyLCB0aGFua3MhPC9wPgogIDxwPlN0cmlwcyBvZmYgc29tZSBwaHAgcHV0IGludG8gdGhlIHN0eWxlc2hlZXQgYnkgc21hcnR5LCBiYWQgc21hcnR5ISAjNzYzNjwvcD4KICA8cD5GaXhlZCBzb20gbm90aWNlczwvcD4KCjwvbGk+CjxsaT4KICAgIDxwPjxzdHJvbmc+VmVyc2lvbiAyLjkuNzwvc3Ryb25nPjwvcD4KICAgIDxwPlVwZGF0ZWQgdG8gVGlueU1DRSAzLjQuODwvcD4KPC9saT4KICA8bGk+CiAgICA8cD48c3Ryb25nPlZlcnNpb24gMi45LjY8L3N0cm9uZz48L3A+CiAgICA8cD5CdWdyZXBvcnQgIzc0MjUgLSBTbWFydHkgZXJyb3JzIGluICZxdW90ZTtBYm91dCB0aGUgVGlueU1DRSBtb2R1bGUmcXVvdGU7PC9wPgogICAgPHA+Rml4ZWQgRmlsZVBpY2tlci1idWdzLi4uIHdlbGNvbWUgYmFjayB0byBhIHdvcmtpbmcgc3RhdGUhPC9wPgogIDwvbGk+CiAgPGxpPgogICAgPHA+PHN0cm9uZz5WZXJzaW9uIDIuOS41PC9zdHJvbmc+PC9wPgogICAgPHA+VXBkYXRlZCB0byBUaW55TUNFIDMuNC43PC9wPgogIDwvbGk+CiAgPGxpPgogICAgPHA+PHN0cm9uZz5WZXJzaW9uIDIuOS40PC9zdHJvbmc+PC9wPgogICAgPHA+VXBkYXRlZCB0byBUaW55TUNFIDMuNC42PC9wPgogICAgPHA+TW9yZSAxLjEwLWZpeGVzIChvbmx5IHVzYWJsZSB3aXRoIDEuMTAgb3IgbGF0ZXIgbm93KTwvcD4KICAgIDxwPlJlbW92ZWQgc3RhcnQvc3RvcEV4cGFuZC1zdHVmZiBhcyB0aGV5IGFyZSBub3QgaW4gdGhlcmUgYW55bW9yZS48L3A+CiAgPC9saT4KICA8bGk+CiAgICA8cD48c3Ryb25nPlZlcnNpb24gMi45LjM8L3N0cm9uZz48L3A+CiAgICA8cD5GaXhlcyB0byAxLjEwLWNvbXBhdGliaWxpdHkgKG1vZHVsZWxpc3QgdHJhdmVyc2VsKTwvcD4KICA8L2xpPgogIDxsaT4KICAgIDxwPjxzdHJvbmc+VmVyc2lvbiAyLjkuMjwvc3Ryb25nPjwvcD4KICAgIDxwPlRpbnlNQ0UgdXBkYXRlZCB0byAzLjQuNDwvcD4KICAgIDxwPjwvcD4KICAgIDxwPjwvcD4KICA8L2xpPgogIDxsaT4KICAgIDxwPjxzdHJvbmc+VmVyc2lvbiAyLjkuMTwvc3Ryb25nPjwvcD4KICAgIDxwPlRpbnlNQ0UgdXBkYXRlZCB0byAzLjQuMy4yPC9wPgogICAgPHA+Rml4ZWQgdXJscyB0byBwbHVnaW4tZG9jczwvcD4KICAgIDxwPjwvcD4KICA8L2xpPgogIDxsaT4KICAgIDxwPjxzdHJvbmc+VmVyc2lvbiAyLjkuMDwvc3Ryb25nPjwvcD4KICAgIDxwPlRpbnlNQ0UgdXBkYXRlZCB0byAzLjQuMjwvcD4KICAgIDxwPmNtc19zZWxmbGluay1zdHlsZSBsaW5rcyBzaG91bGQgbm93IHdvcmsgYmV0dGVyPC9wPgogICAgPHA+Rml4ZWQgYSBidWcgd2l0aCBpbWFnZXMgY29udGFpbmluZyBmb3JlaWduIGNoYXJzICgjNDU4NSkgdGhhbmtzIHRvIGN2b2d0PC9wPgogIDwvbGk+CgogIDxsaT4KCiAgPHA+PHN0cm9uZz5WZXJzaW9uIDIuOC4zPC9zdHJvbmc+PC9wPgogIDxwPlJlbW92ZSBjb21tZW50cyBmcm9tIHN0dWZmIGluamVjdGVkIGludG8gaGVhZC48L3A+CiAgPHA+Rml4ZWQgYSBidWcgaW4gR2VybWFuIGxhbmcgZmlsZSBicmVha2luZyBhZHZhbmNlZCBmb3JtPC9wPgogIDxwPjwvcD4KICA8L2xpPgoKICA8bGk+CiAgPHA+PHN0cm9uZz5WZXJzaW9uIDIuOC4yPC9zdHJvbmc+PC9wPgogIDxwPkZpeGVkIHRoZSB0cnVuY2F0aW9uIG9mIHV0ZjgtZW5jb2RlZCBtZW51dGV4dHMgaW4gY21zbGlua2VyPC9wPgogIDwvbGk+CiAgPGxpPgogIDxwPjxzdHJvbmc+VmVyc2lvbiAyLjguMTwvc3Ryb25nPjwvcD4KICA8cD5NaW5vciBmaXggaW4gZXhwcmVzc2lvbiB1c2VkIHRvIHRlc3QgaWYgZnJvbnRlbmQgd3lzaXd5ZyB3YXMgYWN0aXZlLjwvcD4KICA8L2xpPgogIDxsaT4KICA8cD5GaXhlZCB0aGF0IGFkbWluLXRlbXBsYXRlIHdhcyBzaG93biBhZnRlciB1c2luZyBmaWxlb3BzIGluIGZpbGVwaWNrZXI8L3A+CiAgPHA+U29tZSBmaXhlcyB0byBjbXNsaW5rZXIgZHJvcGRvd24gd2hlbiBlbnRyaWVzIGhhZCBub24tVVMgY2hhcnM8L3A+CiAgPHA+UmVpbnRyb2R1Y2VkIHN0eWxlc2hlZXQucGhwIGVudHJ5cG9pbnQgYXMgdGlueSBkb2VzIG5vdCBzdXBwb3J0IGxvYWRpbmcgZnJvbSB1cmxzIHdpdGggY29tbWFzIGluIHRoZW0uLi48L3A+CiAgPHA+UmVtb3ZlZCBzb21lIGRlYnVnZ2lub3V0cHV0IGluIGZpbGVwaWNrZXI8L3A+CiAgPC9saT4KPGxpPgogIDxwPjxzdHJvbmc+VmVyc2lvbiAyLjguMDwvc3Ryb25nPjwvcD4KICA8cD5SZXdyb3RlIHRlc3QtZWRpdG9yLiBNdWNoIG5pY2VyIEkgdGhpbmsuPC9wPgogIDxwPlJlbW92ZWQgbGFzdCBub24tY21zIGVudHJ5cG9pbnQsIGZpbGVwaWNrZXI8L3A+CiAgPHA+SW1hZ2V1cGxvYWRpbmcgbm93IGhvbmVycyB0aGUgc2l0ZS10aHVtYm5haWxzaXplIHNldHRpbmc8L3A+CiAgPHA+VXBsb2FkaW4gbm9uLWltYWdlcyB3aGVuIGluIGltYWdlc2VsZWN0b3Igbm93IHdvcmtzPC9wPgogIDxwPkdlbmVyYXRpb24gdGh1bWJuYWlscyB3aGVuIHVwbG9hZGluZyBpbWFnZXMgcmlnaHQgYWZ0ZXIgaW5zdGFsbGF0aW9uIGZpeGVkPC9wPgogIDxwPlVwZGF0ZWQgdG8gVGlueSAzLjMuOS4yPC9wPgo8L2xpPgo8bGk+CiAgPHA+PHN0cm9uZz5WZXJzaW9uIDIuNy40PC9zdHJvbmc+PC9wPgogIDxwPlVwZGF0ZWQgdG8gVGlueSAzLjMuOTwvcD4KICA8cD5QcmVwYXJlZCBtb2R1bGUgZm9yIDEuOS1zZXJpZXM8L3A+CiAgPHA+R2VuZXJhbCBjb2RlLWNsZWFudXBzPC9wPgogIDxwPkFkZGVkIGFuIG9wdGlvbiB0byBhdm9pZCBUaW55J3MgbGlua2NvbnZlcnNpb24sIG1ha2VzIHNtYXJ0eSBpbiB1cmxzIHBvc3NpYmxlPC9wPgogIDxwPkFkZGVkIGFuIG9wdGlvbmFsIGFkZGl0aW9uIHRvIHRoZSBvdXRwdXQgb2YgdGhlIENNU0xpbmtlciwgYm90aCBpbiBzZWxmbGluayBvciBocmVmIG1ldGhvZDwvcD4KPC9saT4KPGxpPgogIDxwPjxzdHJvbmc+VmVyc2lvbiAyLjcuMzwvc3Ryb25nPjwvcD4KICA8cD5Ob3cgaGFuZGxlcyB0aGUgU21hcnR5LXByb2Nlc3NlZCBmZWF0dXJlcyBvZiB0aGUgbmV3IGNtc19zdHlsZXNoZWV0LXN0eWxlIHRhZzwvcD4KICA8cD5GaXhlcyBwYXRocyB3aGVuIHVzaW5nIGludGVybmFsIHByZXR0eSB1cmxzPC9wPgo8L2xpPgo8bGk+CiAgPHA+PHN0cm9uZz5WZXJzaW9uIDIuNy4yPC9zdHJvbmc+PC9wPgogIDxwPlVwZGF0ZWQgdG8gVGlueSAzLjMuODwvcD4KICA8cD5BZGRlZCBhIG1pc3NpbmcgbGFuZ3N0cmluZzwvcD4KICA8cD5NYWRlIHN0YXRpYyBjb25maWcgdGhlIGRlZmF1bHQgYW5kIG1hZGUgc3VyZSBpdCBnZXRzIHJld3JpdHRlbiBldmVyeSB0aW1lLjwvcD4KPC9saT4KPGxpPgogIDxwPjxzdHJvbmc+VmVyc2lvbiAyLjcuMTwvc3Ryb25nPjwvcD4KICA8cD5VcGRhdGVkIHRvIFRpbnkgMy4zLjUuMTwvcD4KPC9saT4KPGxpPgogIDxwPjxzdHJvbmc+VmVyc2lvbiAyLjcuMDwvc3Ryb25nPjwvcD4KICA8cD5JbXBsZW1lbnRlZCBhIHBsdWdpbi1zeXN0ZW0sIHNvIG90aGVyIG1vZHVsZXMgY2FuIHJlZ2lzdGVyIHBsdWdpbnMgaW4gVGlueSBhbGxvd2luZyBzdHVmZiBsaWtlIHZlcnkgZWFzeSBpbnNlcnRpb24gb2YgdGFncyBldGMuPC9wPgogIDxwPkltcGxlbWVudGVkIGFuIG9wdGlvbiB0byBhbGxvdyBpbnBsYWNlIHJlc2l6aW5nIG9mIHRoZSBlZGl0b3IgZmllbGQ8L3A+CiAgPHA+VXBkYXRlZCB0byBUaW55IDMuMy4zPC9wPgo8L2xpPgo8bGk+CiAgPHA+PHN0cm9uZz5WZXJzaW9uIDIuNi42PC9zdHJvbmc+PC9wPgogIDxwPlVwZGF0ZWQgdG8gVGlueSAzLjMuMjwvcD4KICA8cD5GaXhlcyBpbnRlcm5hbCBsaW5rZXIgc28gaXQgaG9uZXJzIHVzZV9oaWVyYXJjaHk9ZmFsc2U8L3A+CiAgPHA+Rml4ZWQgZGVmYXVsdCB2YWx1ZSBmb3IgY21zbGlua2Vyc3R5bGU8L3A+CiAgPHA+TmV3bGluZSBpbiBtZW51dGV4dCBubyBsb25nZXIgYnJlYWtzIHRpbnkgKGNvdWxkIGNvbWUgZnJvbSBwYXN0ZXMpPC9wPgo8L2xpPgo8bGk+CiAgPHA+PHN0cm9uZz5WZXJzaW9uIDIuNi41PC9zdHJvbmc+PC9wPgogIDxwPlVwZGF0ZWQgdG8gVGlueSAzLjMuMTwvcD4KICA8cD5OZXcgb3B0aW9uIHRvIGFsbG93IGJhc2ljIEZNIG9wZXJhdGlvbnMgZXZlbiBpZiBNb2RpZnkgRmlsZXMgcGVybWlzc2lvbiBpcyBub3QgY2hlY2tlZDwvcD4KPC9saT4KPGxpPgogIDxwPjxzdHJvbmc+VmVyc2lvbiAyLjYuNDwvc3Ryb25nPjwvcD4KICA8cD5Ob3cgbm90IGRlcGVuZGluZyBvbiBhZG1pbi10aGVtZSdzIGFjb25zIGFueW1vcmUuIFRoYW5rcyBOdW5vPC9wPgogIDxwPlVwZGF0ZWQgdG8gVGlueSAzLjMtZmluYWw8L3A+CiAgPHA+Rml4ZWQgc3BlbGxjaGVja2VyIHdoaWNoIGJyb2tlIGluIDIuNi4zLiBTb3JyeSEgTXkgZmF1bHQuLi48L3A+CjwvbGk+CjxsaT4KICA8cD48c3Ryb25nPlZlcnNpb24gMi42LjM8L3N0cm9uZz48L3A+CiAgPHA+QWRkZWQgYW4gb3B0aW9uIHRvIGdlbmVyYXRlIGNtcy1jb21wYXRpYmxlIHRodW1ibmFpbHMgd2hlbiB1cGxvYWRpbmcgZmlsZXMgdGhvdWdoIHRoZSBmaWxlcGlja2VyLjwvcD4KICA8cD5VcGRhdGVkIHRvIFRpbnkgMy4zcmMxPC9wPgo8L2xpPgo8bGk+CiAgPHA+PHN0cm9uZz5WZXJzaW9uIDIuNi4yPC9zdHJvbmc+PC9wPgogIDxwPkNoYW5nZWQgdGhlIHdheSB7Y21zX3NlbGZsaW5rfS1zdHlsZSBpbnRlcm5hbCBsaW5rcyB3YXMgcmVuZGVyZWQuIEZpeGVkIHRoZSA8aW1nPi1zaXR1YXRpb24uIFRoYW5rcyBmb3IgdGhlIHNvbHV0aW9uIENhbGd1eSE8L3A+CiAgPHA+VXBkYXRlZCB0byBUaW55IDMuMy1iZXRhMjwvcD4KPC9saT4KPGxpPgogIDxwPjxzdHJvbmc+VmVyc2lvbiAyLjYuMS4xPC9zdHJvbmc+PC9wPgogIDxwPkZpeGVkIHByZXNlbnRhdGlvbiBvZiB0aGUgbmV3bHkgc2F2ZWQgcmVzdHJpY3QgZGlyIG9wdGlvbjwvcD4KPC9saT4KPGxpPgogIDxwPjxzdHJvbmc+VmVyc2lvbiAyLjYuMTwvc3Ryb25nPjwvcD4KICA8cD5JbXBsZW1lbnRlZCByZXN0cmljdGluZyB1c2VycyBvZiBiYXNpYyBwcm9maWxlIHRvIGEgZGlyIGNhbGxlZCBieSB0aGVpciB1c2VybmFtZTwvcD4KICA8cD5SZW5hbWVkIGEgY291cGxlIG9mIGZpbGVzIHRvIHByb2ZpbGVzIGluc3RlYWQgb2YgdG9vbGJhcnMuIFNlZW1lZCBtb3JlIGxvZ2ljYWwgbm93LjwvcD4KICA8cD5JbXBsZW1lbnRlZCBkZWxldGlvbiBvZiAoZW1wdHktb25seSkgc3ViZGlycyBpbiBmaWxlcGlja2VyPC9wPgogIDxwPlJld3JvdGUgZXh0cmFjb25maWcgbG9naWMgc28gbXVsdGlsaW5lLXN0dWZmIGFyZSBwb3NzaWJsZTwvcD4KPC9saT4KPGxpPgogIDxwPjxzdHJvbmc+VmVyc2lvbiAyLjYuMDwvc3Ryb25nPjwvcD4KICA8cD5Ob3cgaW5jbHVkZXMgc3BlbGxjaGVja2VyIGZ1bmN0aW9uYWxpdHksIHRoYW5rcyBOdW5vITwvcD4KPC9saT4KPGxpPgogIDxwPjxzdHJvbmc+VmVyc2lvbjogMi41LjY8L3N0cm9uZz48L3A+CiAgPHA+Rml4ZWQgdGhlIGNtc2xpbmtlcnN0eWxlIG9wdGlvbiwgc28gaXQgZG9lcyB3aGF0IGl0IHNob3VsZDwvcD4KICA8cD5SZWVuYWJsZWQgTGl0aGF1bmlhbiBsYW5ndWFnZTwvcD4KPC9saT4KPGxpPgogIDxwPjxzdHJvbmc+VmVyc2lvbjogMi41LjUgKGNhbGd1eTEwMDApPC9zdHJvbmc+PC9wPgogIDxwPk1vZGlmaWVkIHRvIHdvcmsgd2l0aCBzZXNzaW9uLnVzZV9jb29raWVzID0gMDwvcD4KICA8cD5VcGRhdGVkIHRvIFRpbnkgMy4yLjcsIGJ1Z2ZpeGluIHJlbGVhc2UgKHNpbG1hcmlsbGlvbik8L3A+CiAgPHA+Tm93IGNoZWNrIGZvciBpbGxlZ2FsIGNoYXJzIGluIGZpbGVuYW1lIHdoZW4gdXBsb2FkaW5nIGZpbGVzLjwvcD4KPC9saT4KPGxpPgogIDxwPjxzdHJvbmc+VmVyc2lvbjogMi41LjQ8L3N0cm9uZz48L3A+CiAgPHA+UmV2aXNlZCBnbG9iYWwgJGNtcywgcHJlcGFyaW5nIGZvciAxLjctYXBpPC9wPgogIDxwPkZpeGVkIGJ1ZyBkaXNhYmxpbmcgdGhlIHd5c2l3eWcgdG9nZ2xlYm94IHVwb24gc2F2aW5nIHRoZSBiYXNpYyB0b29sYmFyIHByb2ZpbGU8L3A+CiAgPHA+Rml4ZWQgYnVnIHdpdGggdHJ1bmNhdGVkIG1lbnV0ZXh0cyB3aXRoIHF1b3RlcyBpbiB0aGVtIG5vdCBnZXR0aW5nIHByb3Blcmx5IGVzY2FwZWQsIGJyZWFraW5nIGNvbmZpZzwvcD4KICA8cD5VcGRhdGVkIHRvIGxhdGVzdCBUaW55TUNFIDMuMi42LCBpbnRyb2R1Y2luZyBhIHdvcmRjb3VudC1wbHVnaW48L3A+CjwvbGk+CjxsaT4KICA8cD48c3Ryb25nPlZlcnNpb246IDIuNS4zPC9zdHJvbmc+PC9wPgogIDxwPlJld3JvdGUgZnJvbnRlbmQgZnVuY3Rpb25hbGl0eSB0byB1c2UgZXZlbnRzIGluc3RlYWQgb2YgY2FsbGJhY2tzLCBwcmVwYXJpbmcgZm9yIDEuNy1hcGk8L3A+CiAgPHA+PC9wPgo8L2xpPgo8bGk+CiAgPHA+PHN0cm9uZz5WZXJzaW9uOiAyLjUuMjwvc3Ryb25nPjwvcD4KICA8cD5GaXhlZCB3cm9uZyBwYXRoIHRvIGRlbGV0ZSBpY29uIGluIGZpbGVwaWNrZXIgd2hlbiB1c2luZyBjdXN0b21pemVkIGFkbWluIGRpciAodGhhbmtzIE1laVJpZU0pPC9wPgogIDxwPlJlbW92ZWQgdGhlIGNsZWFuIG9uIHBhc3RlIGZvciBub3csIGxlYXZpbmcgaXQgZW5hYmxlZC4gU2VlbWVkIHRvIGRvIG5vIGRpZmZlcmVuY2UgZm9yIG1vc3QgcGVvcGxlLi4uPC9wPgo8L2xpPgo8bGk+CiAgPHA+PHN0cm9uZz5WZXJzaW9uOiAyLjUuMTwvc3Ryb25nPjwvcD4KICA8cD5VcGRhdGVkIHRvIFRpbnlNQ0UgMy4yLjUgYW5kIHVwZGF0ZWQgdHJhbnNsYXRpb25zIGFzIHdlbGw8L3A+CiAgPHA+Rml4ZWQgZXh0cmFjb25maWc8L3A+CiAgPHA+PC9wPgo8L2xpPgo8bGk+CiAgPHA+PHN0cm9uZz5WZXJzaW9uOiAyLjUuMDwvc3Ryb25nPjwvcD4KICA8cD5GaXhlZCBhIHNtYWxsIHN5bnRheC1lcnJvciBpbiBjb25maWcgZmlsZSBicmVha2luZyB0aW55IGluIGZyb250ZW5kIGluIElFPC9wPgogIDxwPkZpeGVkIGEgcHJvYmxlbSBjb25jZXJuaW5nIHJlc2V0dGluZyBzZXR0aW5ncyB0byBkZWZhdWx0IHZhbHVlcyAoaW50cm9kdWNlZCBkdWUgdGhlIG5lZWQgb2YgdW5pcXVlIGlkJ3Mgb2Ygc3VibWl0YnV0dG9ucyk8L3A+CiAgPHA+Rml4ZWQgYSBjb3VwbGUgb2YgdHlwb3M8L3A+CjwvbGk+CjxsaT4KICA8cD48c3Ryb25nPlZlcnNpb246IDIuNS4wLWJldGEzPC9zdHJvbmc+PC9wPgogIDxwPkhhZCB0byBtb3ZlIHRvZ2dsZSBidXR0b24gb3B0aW9uIHRvIGFkdmFuY2VkIHBhZ2UgaW5zdGVhZCBvZiBwcm9maWxlcy4gTm90IHBvc3NpYmxlIHRvIGNvbnRyb2wgcHJlc2VudGx5LjwvcD4KICA8cD5SZXdyb3RlIGZyb250L2JhY2tlbmQgZGV0ZWN0aW9uLiBTaG91bGQgYmUgYSBsb3QgbW9yZSBzdGFibGUuPC9wPgogIDxwPlVwZGF0ZWQgdG8gVGlueSAzLjIuMywgc2hvdWxkIGhhdmUgYSBuZXcgYW5kIGltcHJvdmUgUGFzdGUgbG9naWMgYXV0b21hZ2ljYWxseSBkZXRlY3RpbmcgV29yZC1wYXN0ZXMgYW5kIGNsZWFuaW5nPC9wPgo8L2xpPgo8bGk+CiAgPHA+PHN0cm9uZz5WZXJzaW9uOiAyLjUuMC1iZXRhMjwvc3Ryb25nPjwvcD4KICA8cD5NYWRlIHN1cnJvdW5kaW5nIHNlbGVjdGVkIHRleHQgd2l0aCBzb21ldGhpbmcgcG9zc2libGUgaW4gdGhlIGN1c3RvbS1kcm9wZG93bjwvcD4KICA8cD5GaXhlZCByZXNldHRpbmcgYWR2YW5jZWQtcHJvZmlsZTwvcD4KICA8cD5GaXhlZCB0YWJsZSBjb250cm9scyB3aGVuIG9ubHkgZW5hYmxlZCBpbiBhZHZhbmNlZCBwcm9maWxlPC9wPgogIDxwPkZpeGVkIGEgbG90IG9mIHZhbGlkYXRpb24gaXNzdWVzPC9wPgogIDxwPkltcGxlbWVudGVkIGZpbGUgZGVsZXRpb248L3A+CiAgPHA+UmV2YW1wZWQgcGVybWlzc2lvbi1wb2xpY2llcyB0byB0YWtlIE1vZGlmeSBGaWxlcyBpbnRvIGFjY291bnQgbW9yZTwvcD4KPC9saT4KPGxpPgogIDxwPjxzdHJvbmc+VmVyc2lvbjogMi41LjAtYmV0YTE8L3N0cm9uZz48L3A+CiAgPHA+SW1wbGVtZW50ZWQgb250aGVmbHktcmVzaXppbmcgb2YgdXBsb2FkZWQgaW1hZ2VzPC9wPgogIDxwPlJld3JvdGUgdG9vbGJhcnMgaW50byBwcm9maWxlcyBhbGxvd2luZyBhIHNlcGVyYXRlIGFkdmFuY2VkIHByb2ZpbGUgZm9yIHNlbGVjdGVkIHVzZXJzPC9wPgogIDxwPk1hZGUgc3R5bGVzaGVldCBpbmNsdWRlIHNjcmVlbi1jc3MgZXZlbiBpZiBvdGhlciBjYXRlZ29yaWVzIHdhcyBhbHNvIHNlbGVjdGVkIChhbmQgdGhlIHNjcmVlbi1vbmx5IG9wdGlvbiB3YXMgZW5hYmxlZCwgdGhhdCBpcyk8L3A+CiAgPHA+Rml4ZWQgYSBzbWFsbCBidWcgd2hlbiB0cnlpbmcgdG8gbWFrZSBpbnRlcm5hbCBsaW5rcyBvdXQgb2YgaW1hZ2VzPC9wPgogIDxwPlVwZGF0ZWQgdGlueSB0byAzLjIuMjwvcD4KPC9saT4KCjxsaT4KICA8cD48c3Ryb25nPlZlcnNpb246IDIuNC4xMzwvc3Ryb25nPjwvcD4KICA8cD5GaXhlZCByZXNldHRpbmcgdG9vbGJhcnM8L3A+CjwvbGk+Cgo8bGk+CiAgPHA+PHN0cm9uZz5WZXJzaW9uOiAyLjQuMTI8L3N0cm9uZz48L3A+CiAgPHA+QWRkZWQgc3VwcG9ydCBmb3IgY29uZmlndXJpbmcgdGhlIHRoaXJkIHRvb2xiYXI8L3A+CiAgPHA+QWRkZWQgb3B0aW9uIHRvIHNob3cgYWN0dWFsIHRodW1ibmFpbC1maWxlczwvcD4KICA8cD5GaXhlZCBmaWxldHlwZSBpY29ucyBpbiBGaWxlUGlja2VyPC9wPgogIDxwPlJlc3RydWN0dXJlZCB0YWItY29udGVudCBpbnRvIHNlcGVyYXQgZmlsZXMgZm9yIGVhc2llciBtYWludGVuYW5jZTwvcD4KICA8cD5JbXBsZW1lbnRlZCB8IGFzIHNlcGVyYXRvciBpbiB0b29sYmFyczwvcD4KICA8cD5GaXhlZCBmcm9udGVuZC10b29sYmFyczwvcD4KPC9saT4KCjxsaT4KICA8cD48c3Ryb25nPlZlcnNpb246IDIuNC4xMTwvc3Ryb25nPjwvcD4KICA8cD5GaXhlZCBzbWFsbCBwb3RlbnRpb24gd2FybmluZyBvbiBzdGF0KCktdXNhZ2UgaW4gRmlsZXBpY2tlcjwvcD4KICA8cD5BZGRlZCBzdXBwb3J0IGZvciBuZXcgSGFzQ2FwYWJpbGl0eSBhcGktY2FsbDwvcD4KPC9saT4KCiAgPGxpPgogIDxwPjxzdHJvbmc+VmVyc2lvbjogMi40LjEwPC9zdHJvbmc+PC9wPgogIDxwPlNvcnJ5IEkgZm9yZ290Li4uPC9wPgoJPC9saT4KCgk8bGk+CiAgPHA+PHN0cm9uZz5WZXJzaW9uOiAyLjQuOTwvc3Ryb25nPjwvcD4KICA8cD5GaXhlZCBGaWxlUGlja2VyIHdpdGggcmVnYXJkcyB0byBuZXcgeHNzLXNlY3VyaXR5PC9wPgogIDxwPlVwZGF0ZWQgdG8gVGlueU1DRSAzLjIuMTwvcD4KCTwvbGk+CgoJPGxpPgoJPHA+PHN0cm9uZz5WZXJzaW9uOiAyLjQuODwvc3Ryb25nPjwvcD4KCTxwPlVwZGF0ZWQgdG8gVGlueU1DRSAzLjIuMC4xPC9wPgoJPHA+Rml4ZWQgdXNpbmcgcHJvcGVyIGhpZXJhcmNoeSBmb3IgcHJldHR5IHVybHM8L3A+Cgk8cD5BZGRlZCBhZHZhbmNlZCBvcHRpb24gdG8gc3RhcnR1cCBlZGl0b3JzIGluIGRpc2FibGVkIHN0YXRlPC9wPgoJPC9saT4KCQk8bGk+CgkJPHA+PHN0cm9uZz5WZXJzaW9uOiAyLjQuNzwvc3Ryb25nPjwvcD4KCQk8cD5SZW1vdmVkIHNpbXBsZXBhc3RlIHBsdWdpbiBhbmQgcmVpbnNlcnRlZCBzdG9jayBwYXN0ZS4gVGhhdCBvdGhlciBzb2x1dGlvbiBjb25mdXNlZCBwZW9wbGUuPC9wPgoJCTxwPkFkZGVkIG11bHRpcGxlICpib3ggZW50cmllcyB0byBkcm9wZG93biBpbiBhZHYgbGluazwvcD4KCQk8cD5GaXhlZCBmaWxlcGlja2VyIHdoZW4gdXNlZCBvbiBodHRwcy1zaXRlczwvcD4KCQk8cD5Ob3cgcmV3cml0aW5nIGNvbmZpZy1maWxlIHdpdGggZXZlcnkgc2hvd2luZyB3aGVuIHVzaW5nIHN0YXRpYyBjb25maWcsIGZpeGluZyB0aGUgcmV2ZXJzZWQgdG9nZ2xlLWJveCBidWc8L3A+CgkJPC9saT4KCQk8bGk+CgkJPHA+PHN0cm9uZz5WZXJzaW9uOiAyLjQuNTwvc3Ryb25nPjwvcD4KCQk8cD5GaXhlZCBwcm9ibGVtIHdpdGggY21zbGlua2VyIG5vdCBhbGxvd2luZyB0byBzZWxlY3QgcGFyZW50cGFnZXMgU29ycnkgZ3V5cywgdGhhdCB3YXMgYSBuZXdseSBpbnRyb2R1Y2VkIHByb2JsZW08L3A+CgkJPHA+Rml4ZWQgYSBzbWFsbCBidWcgd2hpY2ggY291bGQgY2F1c2UgcmVsYXRpdmUgdXJscyB0byBnZW5lcmF0ZSBzb21ldGhpbmcgaW5jbHVkaW5nIHRoZSBob3N0LW5hbWU8L3A+CgkJPC9saT4KCQk8bGk+CgkJPHA+PHN0cm9uZz5WZXJzaW9uOiAyLjQuNDwvc3Ryb25nPjwvcD4KCQk8cD5Ob3cgb3B0aW9uYWxseSBvbmx5IGluY2x1ZGVzIHN0eWxlc2hlZXRzIHRhZ2dlZCBhcyAnc2NyZWVuJyBvciAnYWxsJyB3aGVuIHJlYWRpbmcgc3R5bGVzPC9wPgoJCTxwPk1vdmVkIGNoYW5nZWxvZyB0byB0ZW1wbGF0ZS4gSXQgd2FzIGh1dXVnZS4uLjwvcD4KCQk8cD5VcGRhdGVkIHNpbXBsZXBhc3RlLXBsdWdpbjwvcD4KCQk8cD5BZGRlZCBhbiBpbnB1dCBmaWVsZCB3aXRoIHN0dWZmIGFkZGVkIHRvIHN0eWxlc2hlZXQ8L3A+CgkJPHA+RGlkIGFuIG9wdGlvbiB0byB1c2UgYSBzdGF0aWM8L3A+CgkJPC9saT4KCQk8bGk+CgkJPHA+PHN0cm9uZz5WZXJzaW9uOiAyLjQuMzwvc3Ryb25nPjwvcD4KCQk8cD5JbXBsZW1lbnRlZCBhbm90aGVyIHRyaWNrIHRvIHByZXZlbnQgc3R5bGVzaGVldCBjb250ZW50IGZyb20gYmVpbmcgY2FjaGVkPC9wPgoJCTxwPk5vdyBvcmRlcnMgdGhlIHN0eWxlc2hlZXQgYWZ0ZXIgYXNzb2Nfb3JkZXIgaW5zdGVhZCBvZiBkYXRlPC9wPgoJCTwvbGk+CgkJPGxpPgoJCTxwPjxzdHJvbmc+VmVyc2lvbjogMi40LjI8L3N0cm9uZz48L3A+CgkJPHA+Rml4ZWQgb25seSBzaG93aW5nIGltYWdlcyBldmVuIGlmIGxpbmsgdG8gYWxsIGZpbGV0eXBlcyBzaG91bGQgYmEgcG9zc2libGU8L3A+CgkJPHA+VXBkYXRlZCB0byBUaW55IDMuMS4wLjE8L3A+CgkJPC9saT4KCQk8bGk+CgkJPHA+PHN0cm9uZz5WZXJzaW9uOiAyLjQuMTwvc3Ryb25nPjwvcD4KCQk8cD5GaXhlZCBidWcgY2F1c2luZyB0aW55IHRvIGJyZWFrIGlmIHVzaW5nIGN1c3RvbSBjc3Mtc3R5bGVzPC9wPgoJCTxwPlJlaW1wbGVtZW50ZWQgZmlsZSB1cGxvYWQvZGlyLWNyZWF0aW9uIGluIEZpbGVQaWNrZXI8L3A+CgkJPHA+VXBkYXRlZCB0byBUaW55IDMuMC45PC9wPgoJCTxwPkltcGxlbWVudGVkIHByZXR0eSB1cmxzIGZvciBocmVmLXN0eWxlIGxpbmtzIHdoZW4gZW5hYmxlZCBpbiBjb25maWcucGhwPC9wPgoJCTwvbGk+CgkJPGxpPgoJCTxwPjxzdHJvbmc+VmVyc2lvbjogMi40LjA8L3N0cm9uZz48L3A+CgkJPHA+RGlzdHJpYnV0ZWQgd2l0aCBDTVNNUyAxLjM8L3A+CgkJPC9saT4KCQk8bGk+CgkJPHA+VmVyc2lvbjogMi40LjBiNTwvcD4KCQk8cD5BZGRlZCBoZWxwIGZvciB0b29sYmFyPC9wPgoJCTxwPkFkZGVkIGNtc2xpbmtlci1zdHlsZTwvcD4KCQk8cD5BZGRlZCBGaWxlcGlja2VyLXN0eWxlPC9wPgoJCTxwPkZpeGVkIHRoZSBidWcgd2hlcmUgY29udGVudCBjaGFuZ2VzIHdhcyB1bmRvbiB3aGVuIHd5c2l3eWcgd2FzIGRpc2FibGVkIHdpdGggdGhlIGNoZWNrIGJveDwvcD4KCQk8cD5BZGRlZCBvcHRpb24gdG8gdHVybiByZWxldGl2ZS11cmxzIG9mZjwvcD4KCQk8cD5OdW5vIHJlZGVzaWduZWQgZmlsZXBpY2tlciBkaWFsb2d1ZTwvcD4KCQk8cD5BZGRlZCBjdXN0b21pemFibGUgZGltZW5zaW9ucyBvZiBGaWxlUGlja2VyPC9wPgoJCTxwPk51bWVyb3VzIGJ1ZyBmaXhlczwvcD4KCQk8L2xpPgoJCTxsaT4KCQk8cD5WZXJzaW9uOiAyLjQuMGI0PC9wPgoJCTxwPkVuYWJsZWQgZXh0cmFjb25maWctb3B0aW9uPC9wPgoJCTxwPkltcGxlbWVudGVkIG9wdGlvbiBmb3IgZm9yY2VkX3Jvb3RfYmxvY2s8L3A+CgkJPHA+V29yayBvbiBzdXBwb3J0ZWQgcHJldHR5LXVybHMsIHRoYW5rcyBOdW5vITwvcD4KCQk8cD5VcGRhdGVkIHRvIFRpbnkgMy4wLjg8L3A+CgkJPC9saT4KCQk8bGk+CgkJPHA+VmVyc2lvbjogMi40LjBiMzwvcD4KCQk8cD5GaXhlZCBmcm9udGVuZCB1c2FnZTwvcD4KCQk8cD5hZGRlZCBhIGNvdXBsZSBvZiB1cGdyYWRlcyBmcm9tIGNtc21zbGluay1wbHVnaW4gdG8gY21zbGlua2VyPC9wPgoJCTxwPkFkZGVkIGxpbmtzIGZvciBwbHVnaW5oZWxwPC9wPgoJCTxwPkZpeGVkIGpzLWVycm9yIGJyZWFraW5nIGVkaXRvciBpbiBJRTwvcD4KCQk8cD5BZGRlZCBidXR0b25zIGZvciByZXNldHRpbmcgdG8gZGVmYXVsdCB2YWx1ZXM8L3A+CgkJPC9saT4KCQk8bGk+CgkJPHA+VmVyc2lvbjogMi40LjBiMjwvcD4KCQk8cD5EaWQgcHJldHRpZXIgZGVmYXVsdCB2YWx1ZSBmb3IgY3VzdG9tbWVudTwvcD4KCQk8cD5GaXhlZCBodG1sZW50aXR5IHByb2JsZW1zIGluIGNtc2xpbmtlci1wYXJ0IGNyYXNoaW5nIHdob2xlIGVkaXRvcjwvcD4KCQk8L2xpPgoJCTxsaT4KCQk8cD5WZXJzaW9uOiAyLjQuMGIxPC9wPgoJCTxwPjwvcD4KCQk8cD5VcGdyYWRlZCB0byBsYXRlc3QgVGlueU1DRTwvcD4KCQk8cD5DbXNtcy1saW5rZXIgcmVpbXBsZW1lbnRlZDwvcD4KCQk8cD5DdXN0b20gZHJvcGRvd25tZW51IGltcGxlbWVudGVkPC9wPgoJCTxwPkZpbGVwaWNrZXIgYnVncyBmaXhlZCwgbGlua2UgdXNpbmcgaXQgZm9yIGxpbmtpbmcgdG8gbm9uLWltYWdlLWZpbGVzPC9wPgoJCTxwPnN0eWxlc2hlZXQgY29kZSByZXdyaXR0ZW4gdXNpbmcgYWRvZGIgaW5zdGVhZCBvZiBwbGFpbiBteXNxbC9wZ3NxbC4gc2hvdWxkIGJlIGxvdHMgc2FmZXIgbm93PC9wPgoJCTwvbGk+CgkJPGxpPgoJCTxwPlZlcnNpb246IDIuNC4wYTI8L3A+CgkJPHA+PC9wPgoJCTxwPlVwZ3JhZGVkIHRvIGxhdGVzdCBUaW55TUNFPC9wPgoJCTxwPlRvb2xiYXJzIGZvciBmcm9udGVuZC9iYWNrZW5kIGNhbiBub3cgYmUgY29uZmlndXJlZCBzZXBlcmF0ZWx5PC9wPgoJCTxwPkZpbGVwaWNrZXIgcmVpbXBsZW1lbnRlZCwgc2ltcGxlIGZvciBub3csIGJ1dCB3b3JrczwvcD4KCQk8L2xpPgoJCTxsaT4KCQk8cD5WZXJzaW9uOiAyLjQuMGExPC9wPgoJCTxwPjwvcD4KCQk8cD5VcGdyYWRlZCB0byBUaW55TUNFIDMuMDwvcD4KCQk8cD5TdG9wcGVkIHRoZSBzdHVwaWQgc2VwZXJhdGlvbiBiZXR3ZWVuIGFkdmFuY2VkIGFuZCBiYXNpYyB2ZXJzaW9uLiBOb3cgb25seSB0aGlzIG9uZSBpcyBpbiBkZXZlbG9wbWVudCwga2VwdCBhcyB0cmltIGFzIHBvc3NpYmxlLCBidXQgd2l0aCBsb3RzIG9mIHBsdWdpbnM8L3A+CgkJPHA+U3RhcnRlZCBvcmdhbml6aW5nIGFkbWluLXNldHRpbmdzIGxvZ2ljYWxseTwvcD4KCQk8L2xpPgoJCTxsaT4KCQk8cD5WZXJzaW9uOiAyLjIuNzwvcD4KCQk8cD5GaXhlZCBpbmplY3Rpb24gdnVsbmVyYWJpbGl0eSBpbiBjb250ZW50X2Nzcy5waHA8L3A+CgkJPC9saT4KCQk8bGk+CgkJPHA+VmVyc2lvbjogMi4yLjY8L3A+CgkJPHA+TWFkZSBmaWxlIHVwbG9hZGluZyB0aHJvdWdoIHNpbXBsZWJyb3dzZXIgaG9ub3IgZGVmYXVsdF91cGxvYWRfcGVybWlzc2lvbjwvcD4KCQk8L2xpPgoJCTxsaT4KCQk8cD5WZXJzaW9uOiAyLjIuNTwvcD4KCQk8cD5NYWRlIHRoZSBlbnRpdHllbmNvZGluZyBhIHByZWZlcmVuY2U8L3A+CgkJPHA+TWFkZSBUaW55IHdvcmsgYXMgZnJvbnRlbmQgd3lzaXd5ZyBtb2R1bGU8L3A+CgkJPHA+Rml4ZWQgbWlzc2luZyBibG9ja2Zvcm1hdCBkZWZhdWx0IHVwb24gbmV3IGluc3RhbGxhdGlvbiAodGhhbmtzIFV0dGVyIGZvciBub3RpY2luZyk8L3A+CgkJPC9saT4KCQk8bGk+CgkJPHA+VmVyc2lvbjogMi4yLjQ8L3A+CgkJPHA+Rml4ZWQgdGhlIElFIHRvZ2dsZSBidWc8L3A+CgkJPHA+U3BlZWRlZCB1cCB0dXJuaW5nIGVkaXRvciBvbi9vZmYgcXVpdGUgYSBiaXQgKHVzaW5nIG1jZVRvZ2dsZUVkaXRvciBpbiBzdGVhZCBvZiBsb2FkaW5nL3VubG9hZGluZyB3aG9sZSBzeXN0ZW0pPC9wPgoJCTwvbGk+CgkJPGxpPgoJCTxwPlZlcnNpb246IDIuMi4zPC9wPgoJCTxwPlVwZGF0ZWQgdG8gVGlueU1DRSB2ZXJzaW9uIDIuMS4yLCBmaXhlcyB0dXJuaW5nIHd5c2l3eWcgb24vb2ZmIG9uIHBhZ2VzIGNvbnRhaW5pbmcgbXVsdGlwbGUgdGV4dGFyZWFzPC9wPgoJCTxwPkZpeGVkIGEgYnVnIG1ha2luZyB5b3UgZW5kIHVwIGluIHdyb25nIHRhYiB3aGVuIHNhdmluZyB0b29sYmFyPC9wPgoJCTxwPjwvcD4KCQk8L2xpPgogICAgPGxpPgoJCTxwPlZlcnNpb246IDIuMi4yPC9wPgoJCTxwPk51bWVyZW91cyBzbWFsbGVyIHR3ZWVrcy48L3A+CiAgICA8cD5GaXhlZCBwcm9ibGVtIHdpdGggY2hhbmdpbmcgYmV0d2VlbiBwYWdlcyB3aXRoIFRpbnkgYW5kIEVkaXRBcmVhLjwvcD4KICAgIDxwPlNlc3Npb25pemVkIHRoZSBsaXZlIGxhbmd1YWdlLjwvcD4KICAgIDxwPkFkZGVkIGNoYXJtYXAgdG8gZGVmYXVsdCB0b29sYmFyLjwvcD4KCQk8L2xpPgoJCTxsaT4KCQk8cD5WZXJzaW9uOiAyLjIuMTwvcD4KCQk8cD5GaXhlZCBibG9ja2Zvcm1hdCBkcm9wZG93biBub3cgYWN0dWFsbHkgcmVmbGVjdGluZyB0aGUgdmFsdWVzIGluIHRoZSBlZGl0IGJveDwvcD4KCQk8cD5SZXdyb3RlIHRleHRhcmVhIG1hbmFnZW1lbnQgdG8gdXNpbmcgc2Vzc2lvbnMuIFNob3VsZCBmaXggdGhlIGRvdWJsZS10aW55cyBhcHBlYXJpbmcgcmFuZG9tbHkuPC9wPgoJCTwvbGk+CiAgICA8bGk+CgkJPHA+VmVyc2lvbjogMi4yLjA8L3A+CgkJPHA+U3BsaXQgVGlueU1DRSBpbnRvIDIgbW9kdWxlcywgb25lIGZvciBpbmNsdXNpb24gaW4gZGlzdHJpYnV0aW9uIGFuZCBvbmUgZm9yIG1vcmUgYWR2YW5jZWQgdXNlLiBUaGlzIGlzIHRoZSBCYXNpYyB2ZXJzaW9uLjwvcD4KCQk8cD5NYWRlIHRhYmxlIG9wZXJhdGlvbnMgYW4gb3B0aW9uPC9wPgoJCTxwPlJlbW92ZWQgdGhlIG5vbndvcmtpbmcgJ3JlcGxhY2UgY21zLWxpbmtzIHdoaWxlIHdyaXRpbmcnPC9wPgoJCTxwPkdlbmVyYWxseSB0cmltbWVkIGRvd24gdGhlIG1vZHVsZSB0byBhIHNpemUgYWNjZXB0YWJsZSBmb3IgdGhlIG1haW4gZGlzdHJpYnV0aW9uPC9wPgoJCTwvbGk+CiAgICA8bGk+CgkJPHA+VmVyc2lvbjogMi4wLjY8L3A+CgkJPHA+TWFkZSBpdCBwb3NzaWJsZSB0byBhZGQgc29tZXRoaW5nIGV4dHJhIHRvIHRoZSBjb25maWd1cmF0aW9uPC9wPgoJCTxwPkFkZGVkIHBhc3RlIGFzIHBsYWluIHRleHQgcGx1Z2luPC9wPgoJCTxwPkFkZGVkIGFuIG9wdGlvbiB0byBzaG93IGEgYnV0dG9uIHR1cm5pbmcgdGhlIHd5c2l3eWctZnVuY3Rpb25hbGl0eSBvbi9vZmY8L3A+CgkJPHA+R2VuZXJhbCBzcGVlZCBpbXByb3ZlbWVudHM8L3A+CgkJPHA+VXBkYXRlZCB0byBUaW55IDIuMS4xLCBUaW55Q29tcHJlc3NlZCAxLjEuMCBhbmQgU3BlbGxDaGVja2VyIDEuMC40PC9wPgoJCTwvbGk+CgkJPGxpPgoJCTxwPlZlcnNpb246IDIuMC41PC9wPgoJCTxwPkFkZGVkIGEgeGh0bWwtZWxlbWVudHMgb25seSBvcHRpb248L3A+CgkJPHA+TW92ZWQgamF2YXNjcmlwdCBjb25maWcgaW50byBhbiBleHRlcm5hbCBmaWxlPC9wPgoJCTxwPkFkZGVkIHNlbGVjdGluZyBwIG9yIGJyLyBzdHlsZSBuZXdsaW5lczwvcD4KCQk8cD5VcGRhdGVkIHRvIG5ldyBjb21wcmVzc2lvbiBlbmdpbmUuIFNob3VsZCBmaXggc29tZSBidWdzIHJlbGF0ZWQgdG8gdGhpczwvcD4KCQk8cD5BZGRlZCBwbHVnaW4gZGVzY3JpcHRpb25zIGZyb20gZG9jczwvcD4KCQk8cD5GaXhlZCBzaG93aW5nIG9mIGNvcnJlY3QgdGVzdGFyZWEgZXZlbiBpZiBhbm90aGVyIHd5c2l3eWcgaXMgY2hvc2VuPC9wPgoJCTxwPlVwZGF0ZWQgdG8gVGlueSAyLjEuMDwvcD4KCQk8cD5BZGRlZCB0aHVtYm5haWwgcHJldmlld3MgaW4gaW1hZ2UgYnJvd3Nlci48L3A+CgkJPC9saT4KCQk8bGk+CgkJPHA+VmVyc2lvbjogMi4wLjQ8L3A+CgkJPHA+Rml4ZWQgY3VzdG9taXplZCB0ZXh0YXJlYSB3aWR0aDwvcD4KCQk8cD5VcGRhdGVkIHRvIFRpbnkgMi4wLjc8L3A+CgkJPHA+UmV2ZXJzZWQgY2hhbmdlbG9nIGNvbnRlbnQgKGZyb20gbm93IG9uIGF0IGxlYXN0KSA7LSk8L3A+CgkJPHA+PC9wPgoJCTwvbGk+CgoJCTxsaT4KCQk8cD5WZXJzaW9uOiAxLjA8L3A+CgkJPHA+T3JpZ2luYWwgbW9kdWxlIGNvZGUgZm9yIFRpbnlNQ0UgV1lTSVdZRyB0ZXh0YXJlYSByZXBsYWNlbWVudCB0b29sLjwvcD4KCQk8L2xpPgoJCTxsaT4KCQk8cD5BdXRob3I6IFNpbW9uIEJyb3duICZsdDtzaW1vbkB1cHRvZWxldmVuLndzJmd0OzwvcD4KCQk8cD5WZXJzaW9uOiAxLjE8L3A+CgkJPHA+Q29udmVydGVkIGZvciB1c2Ugd2l0aCBuZXcgQ01TIE1vZHVsZSBhcmNoaXRlY3R1cmUuPC9wPgoJCTxwPlVwZ3JhZGVkIFRpbnlNQ0UgdG8gdmVyc2lvbiAxLjQyLjwvcD4KCQk8L2xpPgoJCTxsaT4KCQk8cD5WZXJzaW9uOiAxLjI8L3A+CgkJPHA+Rml4ZWQgYnVnIHdpdGggcGF0aHMgYmVpbmcgY3JlYXRlZCB3cm9uZyBvbiBpbWFnZSBpbnNlcnQuPC9wPgoJCTwvbGk+CgkJPGxpPgoJCTxwPlZlcnNpb246IDIuMC4wPC9wPgoJCTxwPkF1dGhvcjogU3RlZmFuIFImb3VtbDtsbGluPC9wPgoJCTxwPlVQREFURUQgdG8gdmVyc2lvbiAyLjAuNS4xIG9mIFRpbnlNQ0UgZWRpdG9yLjwvcD4KCQk8cD5BREQgcGx1Z2lucyBzaW1wbGVicm93c2VyLCBjbXNtc2xpbmsgPC9wPgoJCTxwPkFERCBzb21lIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy48L3A+CgkJPHA+QUREIHBlcm1pc3Npb24gdG8gbW9kaWZ5IHNldHRpbmdzLjwvcD4KCQk8L2xpPgoJCTxsaT4KCQk8cD5WZXJzaW9uOiAyLjAuMTwvcD4KCQk8cD5VUERBVEVEIHRvIHZlcnNpb24gMi4wLjYuMSBvZiBUaW55TUNFIGVkaXRvci48L3A+CgkJPHA+QUREIGNvbmZpZ3VyYXRpb24gb3B0aW9uczogbGFuZ3VhZ2UgYW5kIHNvdXJjZV9mb3JtYXR0aW5nLjwvcD4KCQk8cD5JbXByb3ZlZCBwbHVnaW4gY29uZmlndXJhdGlvbi48L3A+CgkJPHA+QUREIG1vcmUgbGFuZ3VhZ2VzLjwvcD4KCQk8L2xpPgoJCTxsaT4KCQk8cD5WZXJzaW9uOiAyLjAuMjwvcD4KCQk8cD5GSVggZmlsZWJyb3dzZXI8L3A+CgkJPHA+RklYIHNlY3VyaXR5IGZsYXcgaW4gZmlsZWJyb3dzZXI8L3A+CgkJPC9saT4KCQk8bGk+CgkJPHA+VmVyc2lvbjogMi4wLjM8L3A+CgkJPHA+Q29udmVydGVkIHRvIG5ldyBmZXRjaC1tZXRob2Qgb2YgY29udGVudF9hcnJheTwvcD4KCQk8cD5GSVggc2VjdXJpdHkgZmxhdyBpbiBmaWxlYnJvd3NlcjwvcD4KCQk8cD5BZGRlZCBsb2NhbGl6YXRpb24gb2YgdGVzdGFyZWEtdGV4dDwvcD4KCQk8L2xpPgoJCTwvdWw+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/defaultadmin.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Cgo8ZGl2IGNsYXNzPSJwYWdlY29udGFpbmVyIj4KCgk8YSBocmVmPSJ7Y21zX2FjdGlvbl91cmwgYWN0aW9uPSdhZG1pbl9lZGl0cHJvZmlsZSd9Ij4KCQl7YWRtaW5faWNvbiBpY29uPSduZXdvYmplY3QuZ2lmJ30mbmJzcDt7JG1vZC0+TGFuZygnbmV3X3Byb2ZpbGUnKX0KCTwvYT4KCgl7aW5jbHVkZSBmaWxlPSdtb2R1bGVfZmlsZV90cGw6VGlueU1DRTthZG1pbl9wcm9maWxlc2xpc3QudHBsJyBzY29wZT0ncm9vdCd9CgoKCjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/templates/orig_js_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogT3JpZyBKUyBUZW1wbGF0ZSAqfQoKdGlueW1jZS5pbml0KHsKCXNlbGVjdG9yOiAne2lmIGlzc2V0KCRzZWxlY3RvcikgJiYgJHNlbGVjdG9yICE9ICcnfXskc2VsZWN0b3J9e2Vsc2V9dGV4dGFyZWEuVGlueU1DRXsvaWZ9JywKCWxhbmd1YWdlOiAneyRsYW5ndWFnZX0nLAoJY21zbXNfdGlueTogY21zbXNfdGlueSA9IHsKCQl7aWYgJGVuYWJsZV9saW5rZXJ9CgkJCWxpbmtlcl90ZXh0IDogJ3skVGlueU1DRS0+TGFuZygnY21zbXNfbGlua2VyJyl8ZXNjYXBlOidxdW90ZXMnfScsCgkJCWxpbmtlcl90aXRsZSA6ICd7JFRpbnlNQ0UtPkxhbmcoJ3RpdGxlX2Ntc21zX2xpbmtlcicpfGVzY2FwZToncXVvdGVzJ30nLAoJCQlsaW5rZXJfaW1hZ2UgOiAneyRUaW55TUNFLT5HZXRNb2R1bGVVUkxQYXRoKCl9L2xpYi9pbWFnZXMvY21zbXNsaW5rLmdpZicsCgkJCWxpbmtlcl91cmwgOiAneyRsaW5rZXJfdXJsfScsCgkJCWxpbmtlcl9hdXRvY29tcGxldGVfdXJsIDogJ3skZ2V0cGFnZXNfdXJsfScsCgkJCWxpbmtlcl9ocmVmIDogJ3skVGlueU1DRS0+TGFuZygncHJvbXB0X2hyZWYnKXxlc2NhcGU6J3F1b3Rlcyd9JywKCQkJcHJvbXB0X3BhZ2UgOiAneyRUaW55TUNFLT5MYW5nKCdwcm9tcHRfbGlua2VyJyl8ZXNjYXBlOidxdW90ZXMnfScsCgkJCXByb21wdF9wYWdlX2luZm8gOiAneyRUaW55TUNFLT5MYW5nKCdpbmZvX2xpbmtlcl9hdXRvY29tcGxldGUnKXxlc2NhcGU6J3F1b3Rlcyd9JywKCQkJcHJvbXB0X2FsaWFzIDogJ3skVGlueU1DRS0+TGFuZygncHJvbXB0X3NlbGVjdGVkYWxpYXMnKXxlc2NhcGU6J3F1b3Rlcyd9JywKCQkJcHJvbXB0X2FsaWFzX2luZm8gOiAneyRUaW55TUNFLT5MYW5nKCd0b29sdGlwX3NlbGVjdGVkYWxpYXMnKXxlc2NhcGU6J3F1b3Rlcyd9JywKCQkJcHJvbXB0X3RleHQgOiAneyRUaW55TUNFLT5MYW5nKCdwcm9tcHRfdGV4dHRvZGlzcGxheScpfGVzY2FwZToncXVvdGVzJ30nLAoJCQlwcm9tcHRfY2xhc3MgOiAneyRUaW55TUNFLT5MYW5nKCdwcm9tcHRfY2xhc3MnKXxlc2NhcGU6J3F1b3Rlcyd9JywKCQkJcHJvbXB0X3JlbCA6ICd7JFRpbnlNQ0UtPkxhbmcoJ3Byb21wdF9yZWwnKXxlc2NhcGU6J3F1b3Rlcyd9JywKCQkJcHJvbXB0X3RhcmdldCA6ICd7JFRpbnlNQ0UtPkxhbmcoJ3Byb21wdF90YXJnZXQnKXxlc2NhcGU6J3F1b3Rlcyd9JywKCQkJdGFiX2dlbmVyYWwgOiAneyRUaW55TUNFLT5MYW5nKCd0YWJfZ2VuZXJhbF90aXRsZScpfGVzY2FwZToncXVvdGVzJ30nLAoJCQl0YWJfYWR2YW5jZWQgOiAneyRUaW55TUNFLT5MYW5nKCd0YWJfYWR2YW5jZWRfdGl0bGUnKXxlc2NhcGU6J3F1b3Rlcyd9JywKCQkJdGFyZ2V0X25vbmUgOiAneyRUaW55TUNFLT5MYW5nKCdub25lJyl8ZXNjYXBlOidxdW90ZXMnfScsCgkJCXRhcmdldF9uZXdfd2luZG93IDogJ3skVGlueU1DRS0+TGFuZygnbmV3d2luZG93Jyl8ZXNjYXBlOidxdW90ZXMnfScsCgkJCWxvYWRpbmdfaW5mbyA6ICd7JFRpbnlNQ0UtPkxhbmcoJ2xvYWRpbmdfaW5mbycpfGVzY2FwZToncXVvdGVzJ30nCgkJey9pZn0KCX0sCgl7aWYgJHByb2ZpbGUtPnJlbGF0aXZlX3VybHN9CgkJcmVsYXRpdmVfdXJsczogdHJ1ZSwKCXtlbHNlfQoJCXJlbGF0aXZlX3VybHM6IGZhbHNlLAoJCXJlbW92ZV9zY3JpcHRfaG9zdDogZmFsc2UsCgl7L2lmfQoJZG9jdW1lbnRfYmFzZV91cmw6ICd7cm9vdF91cmx9LycsCglicm93c2VyX3NwZWxsY2hlY2s6IHRydWUsCgoJe2lmICRwcm9maWxlLT5mb3JjZWRfcm9vdF9ibG9jayBlcSAwfQoJCWZvcmNlZF9yb290X2Jsb2NrOiBmYWxzZSwKCXsvaWZ9CgoJeyogUExVR0lOUyAqfQoJcGx1Z2luczogJ3skcHJvZmlsZS0+cGx1Z2luc30ge2lmICRlbmFibGVfbGlua2VyIGFuZCAkcHJvZmlsZS0+cGx1Z2luc3xzdHJwb3M6J2Ntc21zX2xpbmtlcicgPT09IGZhbHNlfWNtc21zX2xpbmtlcnsvaWYgfSB7aWYgJHByb2ZpbGUtPmVuYWJsZV91c2VyX3RlbXBsYXRlc310ZW1wbGF0ZXsvaWZ9IHtpZiAkcHJvZmlsZS0+YXV0b3Jlc2l6ZX1hdXRvcmVzaXpley9pZn0nLAoKCXsqUExVR0lOUyBPUFRJT05TKn0KCXtpZiAkcHJvZmlsZS0+aW1hZ2VfYWR2dGFifQoJCWltYWdlX2FkdnRhYjogdHJ1ZSwKCXsvaWZ9CgoJY29udGV4dG1lbnU6ICJ7aWYgJGVuYWJsZV9saW5rZXIgYW5kICRwcm9maWxlLT5jb250ZXh0bWVudXxzdHJwb3M6J2Ntc21zX2xpbmtlcicgPT09IGZhbHNlfWNtc21zX2xpbmtlcnsvaWZ9IHskcHJvZmlsZS0+Y29udGV4dG1lbnV9IiwKCgl7KiBNRU5VIEJBUiAqfQoJe2lmICEkcHJvZmlsZS0+c2hvd19tZW51YmFyfQoJCW1lbnViYXI6IGZhbHNlLAoJe2Vsc2V9CgkJe2lmICRwcm9maWxlLT51c2VfYWR2YW5jZWRfbWVudSAmJiAhZW1wdHkoJHByb2ZpbGUtPmFkdmFuY2VkX21lbnUpfQoJCQltZW51OiB7JHByb2ZpbGUtPmFkdmFuY2VkX21lbnV9LAoJCXtlbHNlfQoJCQltZW51YmFyOiAneyRwcm9maWxlLT5tZW51YmFyfScsCgkJey9pZn0KCXsvaWZ9CgoJeyogVE9PTEJBUiAqfQoJe2lmICEkcHJvZmlsZS0+c2hvd190b29sYmFyfQoJCXRvb2xiYXI6IGZhbHNlLAoJe2Vsc2V9CgkJdG9vbGJhcjE6ICd7JHByb2ZpbGUtPnRvb2xiYXIxfScsCgkJe2lmICFlbXB0eSgkcHJvZmlsZS0+dG9vbGJhcjIpfQoJCQl0b29sYmFyMjogJ3skcHJvZmlsZS0+dG9vbGJhcjJ9JywKCQl7L2lmfQoJey9pZn0KCgl7KiBTVEFUVVNCQVIgKn0KCXtpZiAhJHByb2ZpbGUtPnNob3dfc3RhdHVzYmFyICYmICRwcm9maWxlLT5yZXNpemUgPT0gZmFsc2V9CgkJc3RhdHVzYmFyOiBmYWxzZSwKCXsvaWZ9CgoJeyogUkVTSVpFICp9Cgl7aWYgJHByb2ZpbGUtPnJlc2l6ZSA9PSBmYWxzZX0KCQlyZXNpemU6IGZhbHNlLAoJe2Vsc2VpZiAkcHJvZmlsZS0+cmVzaXplID09ICdib3RoJ30KCQlyZXNpemU6ICdib3RoJywKCXtlbHNlfQoJCXJlc2l6ZTogdHJ1ZSwKCXsvaWZ9CgoJaGVpZ2h0OiAyMCwKCWF1dG9yZXNpemVfbWluX2hlaWdodDogMTAsCglhdXRvcmVzaXplX21heF9oZWlnaHQ6IDYwMCwKCWF1dG9yZXNpemVfYm90dG9tX21hcmdpbjogMTAsCgoJeyogQ1NTICp9Cgl7aWYgaXNzZXQoJGNvbnRlbnRfY3NzKSAmJiAkY29udGVudF9jc3MgIT0gJyd9CgkJY29udGVudF9jc3M6ICd7JGNvbnRlbnRfY3NzfScsCgl7L2lmfQoKCgl7KiBHRU5FUkFMIENTUyBDTEFTU0VTICp9Cgl7aWYgaXNzZXQoJHN0eWxlX2Zvcm1hdHMpIGFuZCAhZW1wdHkoJHN0eWxlX2Zvcm1hdHMpfQoJCXN0eWxlX2Zvcm1hdHM6IFsKCQkJe2ZvcmVhY2ggJHN0eWxlX2Zvcm1hdHMgYXMgJHN0eWxlX2Zvcm1hdH0KCQkJCXtsZGVsaW19eyRzdHlsZV9mb3JtYXR9e3JkZWxpbX0sCgkJCXsvZm9yZWFjaH0KCQldLAoJey9pZn0KCgl7KiBMSU5LIENTUyBDTEFTU0VTICp9Cgl7aWYgaXNzZXQoJGxpbmtfY2xhc3Nlcyl9CgkJbGlua19jbGFzc19saXN0OiBbCgkJCXtmb3JlYWNoICRsaW5rX2NsYXNzZXMgYXMgJG5hbWUgPT4gJGNsYXNzZXN9CgkJCQl7bGRlbGltfXRpdGxlOiAneyRuYW1lfScsIHZhbHVlOiAneyRjbGFzc2VzfGVzY2FwZTpqYXZhc2NyaXB0fSd7cmRlbGltfSwKCQkJey9mb3JlYWNofQoJCV0sCgl7L2lmfQoKCXsqIElNQUdFUyBDU1MgQ0xBU1NFUyAqfQoJe2lmIGlzc2V0KCRpbWFnZV9jbGFzc2VzKX0KCQlpbWFnZV9jbGFzc19saXN0OiBbCgkJCXtmb3JlYWNoICRpbWFnZV9jbGFzc2VzIGFzICRuYW1lID0+ICRjbGFzc2VzfQoJCQkJe2xkZWxpbX10aXRsZTogJ3skbmFtZX0nLCB2YWx1ZTogJ3skY2xhc3Nlc3xlc2NhcGU6amF2YXNjcmlwdH0ne3JkZWxpbX0sCgkJCXsvZm9yZWFjaH0KCQldLAoJey9pZn0KCgl7KiBGT1JNQVQgRk9SIERST1BET1dOIElOIFRPT0xCQVIgKGJ1dHRvbiBmb3JtYXRzZWxlY3QpICp9Cgl7aWYgJHByb2ZpbGUtPnVzZV9jdXN0b21fYmxvY2tfZm9ybWF0cyBhbmQgJHByb2ZpbGUtPmJsb2NrX2Zvcm1hdHMgbmVxICcnfQoJCWJsb2NrX2Zvcm1hdHM6ICJ7JHByb2ZpbGUtPmJsb2NrX2Zvcm1hdHN9IiwKCXsvaWZ9CgoJeyogRklMRU1BTkFHRVIgKn0KCXtpZiBpc3NldCgkY2FuX3VzZV9maWxlbWFuYWdlcikgYW5kICRjYW5fdXNlX2ZpbGVtYW5hZ2VyIGFuZCAkcHJvZmlsZS0+ZmlsZW1hbmFnZXJfdXNlfQoJCWV4dGVybmFsX2ZpbGVtYW5hZ2VyX3BhdGg6InskVGlueU1DRS0+Z2V0TW9kdWxlVVJMUGF0aCgpfS9yZXNwb25zaXZlX2ZpbGVtYW5hZ2VyL2ZpbGVtYW5hZ2VyLyIsCgkgIAlmaWxlbWFuYWdlcl90aXRsZTogInskVGlueU1DRS0+TGFuZygnZmlsZW1hbmFnZXInKX0iLAoJCWZpbGVtYW5hZ2VyX2FjY2Vzc19rZXk6ICJ7JGFjY2Vzc19rZXl9IiwKCXsvaWZ9CgoJeyogVVNFUiBURU1QTEFURVMgKn0KCXtpZiAkcHJvZmlsZS0+ZW5hYmxlX3VzZXJfdGVtcGxhdGVzfQoJCXRlbXBsYXRlcyA6IFsKCQkJe2lmIGlzc2V0KCR1c2VyX3RlbXBsYXRlcyl9CgkJCQl7Zm9yZWFjaCAkdXNlcl90ZW1wbGF0ZXMgYXMgJHVzZXJfdGVtcGxhdGV9CgkJCQkJe2xkZWxpbX0idGl0bGUiOiAieyR1c2VyX3RlbXBsYXRlLT5nZXRfbmFtZSgpfGVzY2FwZToncXVvdGVzJ30iLCAiZGVzY3JpcHRpb24iOiAieyR1c2VyX3RlbXBsYXRlLT5nZXRfZGVzY3JpcHRpb24oKXxlc2NhcGU6J3F1b3Rlcyd9IiwgImNvbnRlbnQiOiAieyR1c2VyX3RlbXBsYXRlLT5nZXRfY29udGVudCgpfHN0cmlwfHJlcGxhY2U6JyInOidcIid9IntyZGVsaW19LAoJCQkJey9mb3JlYWNofQoJCQl7L2lmfQoJCQl7aWYgaXNzZXQoJHVzZXJfdGVtcGxhdGVzX2ZpbGVzKX0KCQkJCXtmb3JlYWNoICR1c2VyX3RlbXBsYXRlc19maWxlcyBhcyAkdGl0bGUgPT4gJGNvbnRlbnR9CgkJCQkJe2xkZWxpbX0idGl0bGUiOiAieyR0aXRsZXxlc2NhcGU6J3F1b3Rlcyd9IiwgImRlc2NyaXB0aW9uIjogIiIsICJjb250ZW50IjogInskY29udGVudHxzdHJpcHxyZXBsYWNlOiciJzonXCInfSJ7cmRlbGltfSwKCQkJCXsvZm9yZWFjaH0KCQkJey9pZn0KCQldLAoJey9pZn0KCgoJeyogRVhURVJOQUwgUExVR0lOUyAqfQoJZXh0ZXJuYWxfcGx1Z2luczogewoJCXtpZiAkZW5hYmxlX2xpbmtlcn0KCQkJImNtc21zX2xpbmtlciIgOiAieyRUaW55TUNFLT5nZXRNb2R1bGVVUkxQYXRoKCl9L2xpYi9qcy90aW55bWNlX2V4dGVybmFsX3BsdWdpbnMvY21zbXNfbGlua2VyL3BsdWdpbi5qcyIsCgkJey9pZn0KCQl7aWYgaXNzZXQoJGNhbl91c2VfZmlsZW1hbmFnZXIpIGFuZCAkY2FuX3VzZV9maWxlbWFuYWdlciBhbmQgJHByb2ZpbGUtPmZpbGVtYW5hZ2VyX3VzZX0KCQkJImZpbGVtYW5hZ2VyIiA6ICJ7JFRpbnlNQ0UtPmdldE1vZHVsZVVSTFBhdGgoKX0vcmVzcG9uc2l2ZV9maWxlbWFuYWdlci9maWxlbWFuYWdlci9wbHVnaW4ubWluLmpzIiwKCQkJInJlc3BvbnNpdmVmaWxlbWFuYWdlciIgOiAieyRUaW55TUNFLT5nZXRNb2R1bGVVUkxQYXRoKCl9L3Jlc3BvbnNpdmVfZmlsZW1hbmFnZXIvdGlueW1jZV9wbHVnaW4vcmVzcG9uc2l2ZWZpbGVtYW5hZ2VyL3BsdWdpbi5taW4uanMiLAoJCXsvaWZ9Cgl9LAoKCgl7KiBjYWxsYmFjayBmdW5jdGlvbnMgKn0KCXVybGNvbnZlcnRlcl9jYWxsYmFjazogZnVuY3Rpb24odXJsLCBlbG0sIG9uc2F2ZSwgbmFtZSkgewoJCXZhciBzZWxmID0gdGhpczsKCQl2YXIgc2V0dGluZ3MgPSBzZWxmLnNldHRpbmdzOwoKCQlpZiAoIXNldHRpbmdzLmNvbnZlcnRfdXJscyB8fCAoIGVsbSAmJiBlbG0ubm9kZU5hbWUgPT0gJ0xJTksnICkgfHwgdXJsLmluZGV4T2YoJ2ZpbGU6JykgPT09IDAgfHwgdXJsLmxlbmd0aCA9PT0gMCkgewoJCQlyZXR1cm4gdXJsOwoJCX0KCgkJLy8gZml4IGVudGl0aWVzIGluIGNtc19zZWxmbGluayB1cmxzLgoJCWlmICh1cmwuaW5kZXhPZignY21zX3NlbGZsaW5rJykgIT0gLTEpIHsKCQkJZGVjb2RlVVJJKHVybCk7CgkJCXVybCA9IHVybC5yZXBsYWNlKCclMjAnLCAnICcpOwoJCQlyZXR1cm4gdXJsOwoJCX0KCQkvLyBDb252ZXJ0IHRvIHJlbGF0aXZlCgkJaWYgKHNldHRpbmdzLnJlbGF0aXZlX3VybHMpIHsKCQkJcmV0dXJuIHNlbGYuZG9jdW1lbnRCYXNlVVJJLnRvUmVsYXRpdmUodXJsKTsKCQl9CgoJCS8vIENvbnZlcnQgdG8gYWJzb2x1dGUKCQl1cmwgPSBzZWxmLmRvY3VtZW50QmFzZVVSSS50b0Fic29sdXRlKHVybCwgc2V0dGluZ3MucmVtb3ZlX3NjcmlwdF9ob3N0KTsKCQlyZXR1cm4gdXJsOwoJfSwKCgoJc2V0dXA6IGZ1bmN0aW9uKGVkaXRvcikgewoJCWVkaXRvci5vbignY2hhbmdlJywgZnVuY3Rpb24oZSkgewoJCQkkKGRvY3VtZW50KS50cmlnZ2VyKCdjbXNtc19mb3JtY2hhbmdlJyk7CgkJfSk7CgoJCXsqIENVU1RPTSBEUk9QRE9XTiAqfQoJCXtpZiBpc3NldCgkY3VzdG9tX2Ryb3Bkb3duKX0KCQkJZWRpdG9yLnVpLnJlZ2lzdHJ5LmFkZE1lbnVCdXR0b24oJ2N1c3RvbWRyb3Bkb3duJywKCQkJCXsKCQkJCQl7aWYgIWVtcHR5KCRwcm9maWxlLT5jdXN0b21fZHJvcGRvd25fdGl0bGUpfQoJCQkJCQl0ZXh0OiAnIHskcHJvZmlsZS0+Y3VzdG9tX2Ryb3Bkb3duX3RpdGxlfScsCgkJCQkJey9pZn0KCQkJCQl0b29sdGlwOiAneyRwcm9maWxlLT5jdXN0b21fZHJvcGRvd25fdGl0bGV9JywKCQkJCQlpY29uOiAnY29kZS1zYW1wbGUnLAoJCQkJCWZldGNoOiBmdW5jdGlvbihjYWxsYmFjaykgewoJCQkJCQl2YXIgaXRlbXMgPSBbCgkJCQkJCQl7Zm9yZWFjaCAkY3VzdG9tX2Ryb3Bkb3duIGFzICRlbnRyeX0KCQkJCQkJCQl7CgkJCQkJCQkJCXR5cGU6ICdtZW51aXRlbScsCgkJCQkJCQkJCXRleHQ6ICd7JGVudHJ5LnRpdGxlfScsCgkJCQkJCQkJCW9uQWN0aW9uOiBmdW5jdGlvbigpewoJCQkJCQkJCQkJe2lmICFpc3NldCgkZW50cnkudmFsdWUyKX0KCQkJCQkJCQkJCQllZGl0b3IuaW5zZXJ0Q29udGVudCgneyRlbnRyeS52YWx1ZTF8c3RyaXB9Jyk7CgkJCQkJCQkJCQl7ZWxzZX0KCQkJCQkJCQkJCQlzZWwgPSBlZGl0b3Iuc2VsZWN0aW9uLmdldENvbnRlbnQoKTsKCQkJCQkJCQkJCQllZGl0b3IuaW5zZXJ0Q29udGVudCgneyRlbnRyeS52YWx1ZTF8c3RyaXB9JytzZWwrJ3skZW50cnkudmFsdWUyfHN0cmlwfScpOwoJCQkJCQkJCQkJey9pZn0KCQkJCQkJCQkJfQoJCQkJCQkJCX0sCgkJCQkJCQl7L2ZvcmVhY2h9CgkJCQkJCV07CgkJCQkJCWNhbGxiYWNrKGl0ZW1zKTsKCQkJCQl9CgkJCQl9CgkJCSk7CgkJCWVkaXRvci51aS5yZWdpc3RyeS5hZGRNZW51SXRlbSgnY3VzdG9tZHJvcGRvd24nLCB7CgkJCQljb250ZXh0OiAnaW5zZXJ0JywKCQkJCXtpZiAhZW1wdHkoJHByb2ZpbGUtPmN1c3RvbV9kcm9wZG93bl90aXRsZSl9CgkJCQkJdGV4dDogJyB7JHByb2ZpbGUtPmN1c3RvbV9kcm9wZG93bl90aXRsZX0nLAoJCQkJey9pZn0KCQkJCWljb246ICdjb2RlLXNhbXBsZScsCgkJCQlnZXRTdWJtZW51SXRlbXM6ICgpID0+IHsKCQkJCQlyZXR1cm4gWwoJCQkJCQl7Zm9yZWFjaCAkY3VzdG9tX2Ryb3Bkb3duIGFzICRlbnRyeX0KCQkJCQkJCXsKCQkJCQkJCQl0eXBlOiAnbWVudWl0ZW0nLAoJCQkJCQkJCXRleHQ6ICd7JGVudHJ5LnRpdGxlfScsCgkJCQkJCQkJb25BY3Rpb246IGZ1bmN0aW9uKCl7CgkJCQkJCQkJCXtpZiAhaXNzZXQoJGVudHJ5LnZhbHVlMil9CgkJCQkJCQkJCQllZGl0b3IuaW5zZXJ0Q29udGVudCgneyRlbnRyeS52YWx1ZTF8c3RyaXB9Jyk7CgkJCQkJCQkJCXtlbHNlfQoJCQkJCQkJCQkJc2VsID0gZWRpdG9yLnNlbGVjdGlvbi5nZXRDb250ZW50KCk7CgkJCQkJCQkJCQllZGl0b3IuaW5zZXJ0Q29udGVudCgneyRlbnRyeS52YWx1ZTF8c3RyaXB9JytzZWwrJ3skZW50cnkudmFsdWUyfHN0cmlwfScpOwoJCQkJCQkJCQl7L2lmfQoJCQkJCQkJCX0KCQkJCQkJCX0sCgkJCQkJCXsvZm9yZWFjaH0KCQkJCQldOwoJCQkJfQoJCQl9KTsKCQl7L2lmfQoKCgkJeyogRVhURVJOQUwgTU9EVUxFUyBPUiBEUk9QRE9XTlMgKioqKioqKioqKioqKioqICp9CgkJe2Z1bmN0aW9uIG5hbWU9J2Ryb3Bkb3duX21lbnUnfQoJCQl7KiBUaGUgcGFyZW50IGxpbmsgKGFzIGluIFRpbnk1IHdlIGNhbm5vdCBjbGljayBvbiB0aGUgcGFyZW50IGFueW1vcmUsIGJldHRlciBmb3IgdG91Y2ggZGV2aWNlcykgKn0KCQkJe2lmIGlzc2V0KCRwYXJlbnQpIGFuZCBpc3NldCgkcGFyZW50LmNvbnRlbnQpIGFuZCAkcGFyZW50LmNvbnRlbnQgbmVxICcnfQoJCQkJewoJCQkJCXR5cGU6ICdtZW51aXRlbScsCgkJCQkJdGV4dDogJ3skcGFyZW50Lm1lbnVfdGV4dHxlc2NhcGU6cXVvdGVzfScsCgkJCQkJaWNvbjogJ2NoZXZyb24tbGVmdCcsCgkJCQkJb25BY3Rpb246IGZ1bmN0aW9uKCkgewoJCQkJCQllZGl0b3IuaW5zZXJ0Q29udGVudCgneyRwYXJlbnQuY29udGVudHxlc2NhcGU6cXVvdGVzfHN0cmlwfScpOwoJCQkJCX0sCgkJCQl9LAoJCQl7L2lmfQoJCQl7aWYgIWVtcHR5KCRtZW51KX0KCQkJCXtmb3JlYWNoICRtZW51IGFzICRlbnRyeX0KCQkJCQl7CgkJCQkJCXR5cGU6ICd7aWYgJGVudHJ5LmNoaWxkcmVufW5lc3RlZG1lbnVpdGVte2Vsc2V9bWVudWl0ZW17L2lmfScsCgkJCQkJCXRleHQ6ICd7JGVudHJ5Lm1lbnVfdGV4dHxlc2NhcGU6cXVvdGVzfScsCgkJCQkJCXtpZiAhJGVudHJ5LmNoaWxkcmVufQoJCQkJCQkJb25BY3Rpb246IGZ1bmN0aW9uKCkgewoJCQkJCQkJCWVkaXRvci5pbnNlcnRDb250ZW50KCd7JGVudHJ5LmNvbnRlbnR8ZXNjYXBlOnF1b3Rlc3xzdHJpcH0nKTsKCQkJCQkJCX0sCgkJCQkJCXtlbHNlfXtzdHJpcH0KCQkJCQkJCWdldFN1Ym1lbnVJdGVtczogZnVuY3Rpb24oKSB7CgkJCQkJCQkJcmV0dXJuIFsKCQkJCQkJCQkJe2Ryb3Bkb3duX21lbnUgbWVudT0kZW50cnkuY2hpbGRyZW4gcGFyZW50PSRlbnRyeX0KCQkJCQkJCQldOwoJCQkJCQkJfQoJCQkJCQl7L3N0cmlwfXsvaWZ9CgkJCQkJfSwKCQkJCXsvZm9yZWFjaH0KCQkJey9pZn0KCQl7L2Z1bmN0aW9ufQoKCQl7aWYgJGV4dGVybmFsX21vZHVsZXN9CgkJCXtmb3JlYWNoICRleHRlcm5hbF9tb2R1bGVzIGFzICRleHRlcm5hbF9tb2R1bGV9e3N0cmlwfQoJCQkJe2lmICFlbXB0eSgkZXh0ZXJuYWxfbW9kdWxlLT5tZW51X2VudHJpZXMpfQoJCQkJCWVkaXRvci51aS5yZWdpc3RyeS5hZGRNZW51QnV0dG9uKCd7JGV4dGVybmFsX21vZHVsZS0+YnV0dG9uX25hbWV9JywKCQkJCQkJewoJCQkJCQkJe2lmICRwcm9maWxlLT5leHRlcm5hbF9tb2R1bGVzX3Nob3dfbWVudXRleHR9CgkJCQkJCQkJdGV4dDogJ3tpZiAhZW1wdHkoJGV4dGVybmFsX21vZHVsZS0+aW1hZ2UpfSB7L2lmfXskZXh0ZXJuYWxfbW9kdWxlLT50aXRsZXxlc2NhcGU6cXVvdGVzfScsCgkJCQkJCQl7L2lmfQoJCQkJCQkJe2lmICRleHRlcm5hbF9tb2R1bGUtPnRvb2x0aXAgbmVxICcnfQoJCQkJCQkJCXRvb2x0aXA6ICd7JGV4dGVybmFsX21vZHVsZS0+dG9vbHRpcHxlc2NhcGU6cXVvdGVzfScsCgkJCQkJCQl7L2lmfQoJCQkJCQkJaWNvbjogJ3skZXh0ZXJuYWxfbW9kdWxlLT5pY29ufScsCgkJCQkJCQlmZXRjaDogZnVuY3Rpb24oY2FsbGJhY2spIHsKCQkJCQkJCQl2YXIgaXRlbXMgPSBbCgkJCQkJCQkJCXtkcm9wZG93bl9tZW51fHN0cmlwIG1lbnU9JGV4dGVybmFsX21vZHVsZS0+bWVudV9lbnRyaWVzfQoJCQkJCQkJCV07CgkJCQkJCQkJY2FsbGJhY2soaXRlbXMpOwoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJKTsKCgkJCQkJZWRpdG9yLnVpLnJlZ2lzdHJ5LmFkZE5lc3RlZE1lbnVJdGVtKCd7JGV4dGVybmFsX21vZHVsZS0+YnV0dG9uX25hbWV9JywJewoJCQkJCQkJaWNvbjogJ3skZXh0ZXJuYWxfbW9kdWxlLT5pY29ufScsCgkJCQkJCQl0ZXh0OiAneyRleHRlcm5hbF9tb2R1bGUtPnRpdGxlfGVzY2FwZTpxdW90ZXN9JywKCQkJCQkJCWdldFN1Ym1lbnVJdGVtczogZnVuY3Rpb24oKSB7CgkJCQkJCQkJcmV0dXJuIFsKCQkJCQkJCQkJe2Ryb3Bkb3duX21lbnUgbWVudT0kZXh0ZXJuYWxfbW9kdWxlLT5tZW51X2VudHJpZXN9CgkJCQkJCQkJXTsKCQkJCQkJCX0KCQkJCQkJfQoJCQkJCSk7CgkJCQl7L2lmfQoJCQl7L3N0cmlwfXsvZm9yZWFjaH0KCQl7L2lmfQoJCXsqIEVORCBFWFRFUk5BTCBNT0RVTEVTICp9CgoJfSwKCgl7KiBFeHRyYSBKUyAqfQoJe2lmICFlbXB0eSgkcHJvZmlsZS0+ZXh0cmFfanMpfQoJCXskcHJvZmlsZS0+ZXh0cmFfanN9Cgl7L2lmfQoKCn0pOwo=]]></data>
	</file>
	<file>
	  <filename>/templates/orig_usertemplate_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ClRlbXBsYXRlcyBmb3IgdGlueW1jZQo=]]></data>
	</file>
	<file>
	  <filename>/TinyMCE.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIyBUaW55TUNFLiBBIFRpbnlNQ0Ugd3JhcHBlciBmb3IgQ01TIE1hZGUgU2ltcGxlCiMgQ29weXJpZ2h0IChjKSAyMDE1IGJ5IE1hdGhpZXUgTXV0aHMgPGNvbnRhY3RAYWlyZWxpYnJlLmZyPiwgTW9ydGVuIFBvdWxzZW4gPG1vcnRlbkBwb3Vsc2VuLm9yZz4sIFJvbGYgVGphc3NlbnMgPHJvbGZAY21zbWFkZXNpbXBsZS5vcmc+CiMKI0NNUyAtIENNUyBNYWRlIFNpbXBsZQojKGMpMjAwNCBieSBUZWQgS3VscCAodGVkQGNtc21hZGVzaW1wbGUub3JnKQojVmlzaXQgb3VyIGhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKI1RoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiNpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyhhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKI1RoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKI01FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKI0dOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiNZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKI0ZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKIwoKY2xhc3MgVGlueU1DRSBleHRlbmRzIENNU01vZHVsZQp7Cgljb25zdCBUSU5ZTUNFX1BST0ZJTEVTX1RBQkxFID0gJ21vZHVsZV90aW55bWNlX3Byb2ZpbGVzJzsKCWNvbnN0IFRJTllNQ0VfUFJPRklMRUdST1VQX1RBQkxFID0gJ21vZHVsZV90aW55bWNlX3Byb2ZpbGVfZ3JvdXAnOwoKCS8vIE9ubHkgZm9yIGRldmVsb3BtZW50IC0gZm9yY2UgY2xlYXJpbmcgY2FjaGUgYXQgZXZlcnkgcmVxdWVzdCB3aGVuIHRydWUKCWNvbnN0IFRJTllNQ0VfREVWX01PREUgPSBmYWxzZTsKCglwdWJsaWMgZnVuY3Rpb24gR2V0TmFtZSgpIHsgcmV0dXJuICdUaW55TUNFJzsgfQoJcHVibGljIGZ1bmN0aW9uIEdldEZyaWVuZGx5TmFtZSgpIHsgcmV0dXJuICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKTsgfQoJcHVibGljIGZ1bmN0aW9uIEdldFZlcnNpb24oKXsgcmV0dXJuICczLjMuMic7Cn0JcHVibGljIGZ1bmN0aW9uIEhhc0FkbWluKCkgeyByZXR1cm4gdHJ1ZTsgfQoJcHVibGljIGZ1bmN0aW9uIElzUGx1Z2luTW9kdWxlKCkgeyByZXR1cm4gdHJ1ZTsgfQoJcHVibGljIGZ1bmN0aW9uIExhenlMb2FkRnJvbnRlbmQoKSB7IHJldHVybiB0cnVlOyB9CglwdWJsaWMgZnVuY3Rpb24gTGF6eUxvYWRBZG1pbigpIHsgcmV0dXJuIHRydWU7IH0KCXB1YmxpYyBmdW5jdGlvbiBNaW5pbXVtQ01TVmVyc2lvbigpIHsgcmV0dXJuICcyLjIuMTEnOyB9CgoJcHVibGljIGZ1bmN0aW9uIEdldEhlbHAoKSB7IHJldHVybiAkdGhpcy0+TGFuZygnaGVscCcpOyB9CglwdWJsaWMgZnVuY3Rpb24gR2V0QXV0aG9yKCkgeyByZXR1cm4gJ01vcnRlbiBQb3Vsc2VuIChzaWxtYXJpbGxpb24pLCBSb2xmIFRqYXNzZW5zIChyb2xmKSwgTWF0aGlldSBNdXRocyAoYWlyZWxpYnJlKSc7IH0KCXB1YmxpYyBmdW5jdGlvbiBHZXRBdXRob3JFbWFpbCgpIHsgcmV0dXJuICdjb250YWN0QGFpcmVsaWJyZS5mcic7IH0KCXB1YmxpYyBmdW5jdGlvbiBHZXRDaGFuZ2VMb2coKSB7IHJldHVybiAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdjaGFuZ2Vsb2cudHBsJyk7IH0KCXB1YmxpYyBmdW5jdGlvbiBHZXRBZG1pbkRlc2NyaXB0aW9uKCkgeyByZXR1cm4gJHRoaXMtPkxhbmcoJ2FkbWluZGVzY3JpcHRpb24nKTsgfQoJcHVibGljIGZ1bmN0aW9uIEluc3RhbGxQb3N0TWVzc2FnZSgpIHsgcmV0dXJuICR0aGlzLT5MYW5nKCdwb3N0aW5zdGFsbCcpOyAgfQoKCXB1YmxpYyBmdW5jdGlvbiBWaXNpYmxlVG9BZG1pblVzZXIoKSAKCXsKCQlyZXR1cm4gJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIFRpbnlNQ0UgcHJvZmlsZXMnKTsKICAJfQoKCXB1YmxpYyBmdW5jdGlvbiBIYXNDYXBhYmlsaXR5KCRjYXBhYmlsaXR5LCAkcGFyYW1zPWFycmF5KCkpIAoJewoJCWlmICgkY2FwYWJpbGl0eT09Q21zQ29yZUNhcGFiaWxpdGllczo6V1lTSVdZR19NT0RVTEUpIHsKCSAgCQlyZXR1cm4gdHJ1ZTsKCQl9CgkJcmV0dXJuIGZhbHNlOwoJfQoKCgkvLyBEZXNpZ25NYW5hZ2VyCiAgCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcGFnZV90eXBlX2xhbmdfY2FsbGJhY2soJHN0cikKCXsKCQkkbW9kID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdUaW55TUNFJyk7CgkJaWYgKGlzX29iamVjdCgkbW9kKSApIHsKCQkJcmV0dXJuICRtb2QtPkxhbmcoJ3R5cGVfJy4kc3RyKTsKCQl9Cgl9CgoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZXNldF9wYWdlX3R5cGVfZGVmYXVsdHMoQ21zTGF5b3V0VGVtcGxhdGVUeXBlICR0eXBlKQoJewoJCWlmICgkdHlwZS0+Z2V0X29yaWdpbmF0b3IoKSAhPSAnVGlueU1DRScgKSB7CgkJCXRocm93IG5ldyBDbXNMb2dpY0V4Y2VwdGlvbignQ2Fubm90IHJlc2V0IGNvbnRlbnRzIGZvciB0aGlzIHRlbXBsYXRlIHR5cGUnKTsKCQl9CgoJCSRmbiA9IG51bGw7CgkJc3dpdGNoICgkdHlwZS0+Z2V0X25hbWUoKSkgewoJCQljYXNlICdqcyc6CgkJCQkkZm4gPSAnb3JpZ19qc190ZW1wbGF0ZS50cGwnOwoJCQkgIAlicmVhazsKCgkJCWNhc2UgJ3RpbnltY2V0ZW1wbGF0ZSc6CgkJCSAgCSRmbiA9ICdvcmlnX3RpbnltY2V0ZW1wbGF0ZV90ZW1wbGF0ZS50cGwnOwoJCSAgCQlicmVhazsKCQl9CgoJCSRmbiA9IGNtc19qb2luX3BhdGgoX19ESVJfXywndGVtcGxhdGVzJywkZm4pOwoJCWlmIChmaWxlX2V4aXN0cygkZm4pKSB7CgkJCXJldHVybiBAZmlsZV9nZXRfY29udGVudHMoJGZuKTsKCQl9CiAgCX0KCgkvLyBOb3RlIDogJHByb2ZpbGUgaXMgaW50ZXJuYWxseSB1c2VkIGJ5IHRpbnltY2UgdG8gZm9yY2UgbG9hZGluZyBhIHByb2ZpbGUgZm9yIGRlbW8gd2hpbGUgZWRpdGluZyB0aGF0IHByb2ZpbGUKCS8vIGZvcmNlIDogYWRkIGEgdGltZSBpbmZvIGluIHRoZSB0aW55bWNlIGNvbmZpZ3VyYXRpb24ganMKCXB1YmxpYyBmdW5jdGlvbiBXWVNJV1lHR2VuZXJhdGVIZWFkZXIoJHNlbGVjdG9yID0gbnVsbCwgJGNzc25hbWUgPSBudWxsLCAkcHJvZmlsZSA9IG51bGwsICRmb3JjZSA9IGZhbHNlKQogIAl7CgkJc3RhdGljICR0aW55bWNlX2ZpcnN0X3RpbWUgPSB0cnVlOwoKCQkkaGVhZGVyID0gJyc7CgoJCWlmICghaXNzZXQoJHByb2ZpbGUpKQoJCSAgJHByb2ZpbGUgPSB0aW55bWNlX3V0aWxzOjpnZXRfYmVzdF9wcm9maWxlKCk7CgkJLy8gZWxzZWlmICgkcHJvZmlsZS0+aWRfcHJvZmlsZSA9PSAwKQoJCS8vICAgJHByb2ZpbGUtPmlkX3Byb2ZpbGUgPSAnaW5pdCc7CgoJCS8vIEN1cnJlbnQgdXNlciBpZCBpZiBjb25uZWN0ZWQKCQkvKmlmIChjbXNtcygpLT5pc19mcm9udGVuZF9yZXF1ZXN0KCkpCgkJICAkdXNlcmlkID0gLTE7CgkJZWxzZQoJCSAgJHVzZXJpZCA9IGdldF91c2VyaWQoKTsqLwoKCQkvLyBnZXQgdGhlIGxhdGVzdCBtb2RpZmljYXRpb24gdGltZSBvZiB0aGlzIGNzc25hbWUgLy8gRnJvbSBNVAoJCS8vIGlmIGZuIGRvZXMgbm90IGV4aXN0IG9yIGlzIG9sZGVyIHRoYW4gdGhlIG1vZGlmaWNhdGlvbiB0aW1lLCBzYXZlIHRoZSBjb25maWcuCgkJaWYgKCRjc3NuYW1lICkgewoJCSAgdHJ5IHsKCQkJJGNzcyA9IENtc0xheW91dFN0eWxlc2hlZXQ6OmxvYWQoJGNzc25hbWUpOwoJCQkkY3NzX210aW1lID0gJGNzcy0+Z2V0X21vZGlmaWVkKCk7CgkJICB9CgkJICBjYXRjaCggRXhjZXB0aW9uICRlICkgewoJCQkvLyBjb3VsZG4ndCBsb2FkIHRoZSBzdHlsZXNoZWV0IGZvciBzb21lIHJlYXNvbi4KCQkJJGNzc25hbWUgPSBudWxsOwoJCSAgfQoJCX0KCQllbHNlIHsKCQkgICRjc3NfbXRpbWUgPSAwOwoJCX0KCgoKCQkkbGFuZ3VhZ2UgPSBzZWxmOjpHZXRMYW5ndWFnZUlkKCk7IC8vIEZyb20gbWljcm90aW55CgoJCQkkdW5pcXVldXNlcmlkPSRfU0VTU0lPTltDTVNfVVNFUl9LRVldOwoJCQkvL3dhcyAgc2Vzc2lvbl9pZCgpIHdoaWNoIGNhdXNlZCBidWcgIzEyMzA4CgkJJGZpbGVuYW1lID0gJ3RpbnltY2VfJy4gbWQ1KCRwcm9maWxlLT5pZF9wcm9maWxlIC4kdW5pcXVldXNlcmlkIC4kbGFuZ3VhZ2UuJHNlbGVjdG9yLiRjc3NuYW1lKSAuICcuanMnOwoJCSRmaWxlcGF0aCA9IGNtc19qb2luX3BhdGgoUFVCTElDX0NBQ0hFX0xPQ0FUSU9OLCAkZmlsZW5hbWUpOwoKCgoKCgkJLy8gRm9yY2UgdG8gcmVnZW5lcmF0ZSB0aGUgSlMgaWYgb25lIG9mIHRoZSBzdHlsc2hlZXRzIGxpbmtlZCB0byB0aGUgc2VsZWN0ZWQgZGVzaWduIGhhcyBiZWVuIHVwZGF0ZWQKCQlpZiAoZmlsZV9leGlzdHMoJGZpbGVwYXRoKSAmJiAoJHByb2ZpbGUtPmlkX2Rlc2lnbiA+IDApKQoJCXsKCQkgICRxdWVyeSA9IG5ldyBDbXNMYXlvdXRTdHlsZXNoZWV0UXVlcnkoYXJyYXkoJ2Rlc2lnbic9PiRwcm9maWxlLT5pZF9kZXNpZ24pKTsKCgkJICBpZiAoJHF1ZXJ5LT5Ub3RhbE1hdGNoZXMoKSA+IDApCgkJICB7CgkJCSRjdXJyZW50X2pzX210aW1lID0gZmlsZW10aW1lKCRmaWxlcGF0aCk7CgkJCSRyZXMgPSAkcXVlcnktPkdldE1hdGNoZXMoKTsKCQkJZm9yZWFjaCAoJHJlcyBhcyAkb25lKQoJCQl7CgkJCSAgaWYgKCRvbmUtPmdldF9tb2RpZmllZCgpID4gJGN1cnJlbnRfanNfbXRpbWUpCgkJCSAgewoJCQkJJGZvcmNlID0gdHJ1ZTsKCQkJICB9CgkJCX0KCQkgIH0KCQl9CgoJCS8vIEZvcmNlIHRvIHJlZ2VuZXJhdGUgSlMgaWYgb25lIG9mIHRoZSBDU1MgZmlsZXMgaGFzIGJlZW4gdXBkYXRlZAoJCWlmIChmaWxlX2V4aXN0cygkZmlsZXBhdGgpICYmICghZW1wdHkoJHByb2ZpbGUtPmNzc19maWxlcykpKSB7CgkJCWZvcmVhY2ggKGV4cGxvZGUoIlxuIiwgJHByb2ZpbGUtPmNzc19maWxlcykgYXMgJGNzc0ZpbGVQYXRoKSB7CgkJCQkkY3NzRmlsZVBhdGggPSBjbXNfam9pbl9wYXRoKENNU19ST09UX1BBVEgsIHRyaW0oJGNzc0ZpbGVQYXRoKSk7CgkJCQlpZiAoZmlsZW10aW1lKCRjc3NGaWxlUGF0aCkgPiBmaWxlbXRpbWUoJGZpbGVwYXRoKSkgewoJCQkJCSRmb3JjZSA9IHRydWU7CgkJCQkJYnJlYWs7CgkJCQl9CgkJCX0KCQl9CgoKCQlpZiAoIWZpbGVfZXhpc3RzKCRmaWxlcGF0aCkgfHwgKGZpbGVtdGltZSgkZmlsZXBhdGgpIDwgJGNzc19tdGltZSkgfHwgc2VsZjo6VElOWU1DRV9ERVZfTU9ERSB8fCAkZm9yY2UpCgkJewoJCSAgJGpzX2NvbnRlbnQgPSAkcHJvZmlsZS0+Z2V0X2pzX2NvbmZpZygkbGFuZ3VhZ2UsICRzZWxlY3RvciwgJGNzc25hbWUpOwoJCSAgJHJlcyA9IGZpbGVfcHV0X2NvbnRlbnRzKCRmaWxlcGF0aCwgJGpzX2NvbnRlbnQpOwoJCSAgaWYgKCEkcmVzICkgdGhyb3cgbmV3IENtc0ZpbGVTeXN0ZW1FeGNlcHRpb24oJ1Byb2JsZW0gd3JpdGluZyBkYXRhIHRvICcuJGZpbGVwYXRoKTsKCQl9CgoJCS8vIEdldCB0aGUgY2FjaGUgVVJMCgkJJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOwoKCQkvLyBUSU5ZTUNFLk1JTi5KUyAtIG9uY2UgcGVyIHJlcXVlc3QKCQlpZiAoJHRpbnltY2VfZmlyc3RfdGltZSApCgkJewoJCSAgJHRpbnltY2VfZmlyc3RfdGltZSA9IGZhbHNlOwoKCQkgICRoZWFkZXIgLj0gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IicgLiAkdGhpcy0+Z2V0TW9kdWxlVVJMUGF0aCgpIC4gJy9saWIvanMvdGlueW1jZS90aW55bWNlLm1pbi5qcyI+PC9zY3JpcHQ+JzsKCQl9CgoJCS8vIEFORCBOT1cgVEhFIEpTIEZJTEUgRk9SIFBST0ZJTEUKCQkkaGVhZGVyIC49ICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSInIC4gUFVCTElDX0NBQ0hFX1VSTCAuJy8nIC4gJGZpbGVuYW1lOwoJCWlmICgkZm9yY2UpCgkJICAkaGVhZGVyIC49ICc/Jy50aW1lKCk7CgkJJGhlYWRlciAuPSAnIj48L3NjcmlwdD4nOwoKCQlyZXR1cm4gJGhlYWRlcjsKCX0KCgoKCiAgLy8gRnJvbSBNaWNyb1RpbnkgOiBnZXQgY3VycmVudCBsYW5ndWFnZQogIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIEdldExhbmd1YWdlSWQoKQogIHsKCSRteWxhbmcgPSBDbXNObHNPcGVyYXRpb25zOjpnZXRfY3VycmVudF9sYW5ndWFnZSgpOwoJaWYgKCRteWxhbmc9PScnKSByZXR1cm4gJ2VuJzsgLy9MYW5nIHNldHRpbmcgIk5vIGRlZmF1bHQgc2VsZWN0ZWQiCgkkc2hvcnRsYW5nID0gc3Vic3RyKCRteWxhbmcsMCwyKTsKCgkkbW9kID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdUaW55TUNFJyk7CgkkZGlyID0gJG1vZC0+R2V0TW9kdWxlUGF0aCgpLicvbGliL2pzL3RpbnltY2UvbGFuZ3MnOwoJJGxhbmdzID0gYXJyYXkoKTsKCgkkZmlsZXMgPSBnbG9iKCRkaXIuJy8qLmpzJyk7CglpZiAoaXNfYXJyYXkoJGZpbGVzKSAmJiBjb3VudCgkZmlsZXMpICkgewoJICBmb3JlYWNoKCAkZmlsZXMgYXMgJG9uZSApIHsKCQkkb25lID0gYmFzZW5hbWUoJG9uZSk7CgkJJG9uZSA9IHN1YnN0cigkb25lLDAsLTMpOwoJCSRsYW5nc1tdID0gJG9uZTsKCSAgfQoJfQoKCWlmIChpbl9hcnJheSgkbXlsYW5nLCRsYW5ncykgKSByZXR1cm4gJG15bGFuZzsKCWlmIChpbl9hcnJheSgkc2hvcnRsYW5nLCRsYW5ncykgKSByZXR1cm4gJHNob3J0bGFuZzsKCXJldHVybiAnZW4nOwogIH0KCgp9Cj8+Cg==]]></data>
	</file>
</module>
